{"id":"0f68228b83583b8c45beb00613bcf1ad","_format":"hh-sol-build-info-1","solcVersion":"0.8.30","solcLongVersion":"0.8.30+commit.73712a01","input":{"language":"Solidity","sources":{"@ensuro/access-managed-proxy/contracts/AccessManagedProxy.sol":{"content":"// SPDX-License-Identifier: Apache-2.0\npragma solidity ^0.8.0;\n\nimport {IAccessManager} from \"@openzeppelin/contracts/access/manager/IAccessManager.sol\";\nimport {IAccessManagedProxy} from \"./interfaces/IAccessManagedProxy.sol\";\nimport {AccessManagedProxyBase} from \"./AccessManagedProxyBase.sol\";\nimport {AMPUtils} from \"./AMPUtils.sol\";\n\n/**\n * @title AccessManagedProxy\n * @notice Proxy contract using IAccessManager to manage access control before delegating calls (mutable version)\n * @dev It's a variant of ERC1967Proxy.\n *\n *      Currently the check is executed on any call received by the proxy contract (even calls to view methods, i.e.\n *      staticcall). For gas efficiency, you can also have `passThruMethods`, and for those methods it will skip\n *      the call to the AccessManager, calling directly to the implementation contract.\n *\n *      The accessManager and the passThruMethods are in the storage, but this contract doesn't include any method\n *      to modify them. They should be modified by the implementation contract (check AMPUtils for functions that\n *      encapsulate these operations).\n *\n *      Check https://forum.openzeppelin.com/t/accessmanagedproxy-is-a-good-idea/41917 for a discussion on the\n *      advantages and disadvantages of using it. Also https://www.youtube.com/watch?v=DKdwJ9Ap9vM for a presentation\n *      on this approach.\n *\n * @custom:security-contact security@ensuro.co\n * @author Ensuro\n */\ncontract AccessManagedProxy is AccessManagedProxyBase {\n  /// @custom:storage-location erc7201:ensuro.storage.AccessManagedProxy\n  /// For struct AMPUtils.AccessManagedProxyStorage\n\n  /**\n   * @notice Constructor of the proxy, defining the implementation and the access manager\n   * @dev Initializes the upgradeable proxy with an initial implementation specified by `implementation` and\n   *      with `accessManager` as the ACCESS_MANAGER that will handle access control.\n   *\n   * @param implementation The initial implementation contract.\n   * @param _data If nonempty, it's used as data in a delegate call to `implementation`. This will typically be an\n   *              encoded function call, and allows initializing the storage of the proxy like a Solidity constructor.\n   * @param accessManager The access manager that will handle access control\n   * @param passThruMethods The selector of methods that will skip the access control validation, typically used for\n   *                        views and other methods for gas optimization.\n   *\n   * @custom:pre If `_data` is empty, `msg.value` must be zero.\n   */\n  constructor(\n    address implementation,\n    bytes memory _data,\n    IAccessManager accessManager,\n    bytes4[] memory passThruMethods\n  ) payable AccessManagedProxyBase(implementation, _data) {\n    AMPUtils.setAccessManager(accessManager);\n    AMPUtils.setPassThruMethods(passThruMethods);\n  }\n\n  /// @inheritdoc AccessManagedProxyBase\n  function _skipAC(bytes4 selector) internal view override returns (bool) {\n    return AMPUtils.getAccessManagedProxyStorage().skipAc[selector];\n  }\n\n  /// @inheritdoc IAccessManagedProxy\n  // solhint-disable-next-line func-name-mixedcase\n  function PASS_THRU_METHODS() external view override returns (bytes4[] memory methods) {\n    return AMPUtils.getAccessManagedProxyStorage().passThruMethods;\n  }\n\n  /// @inheritdoc IAccessManagedProxy\n  // solhint-disable-next-line func-name-mixedcase\n  function ACCESS_MANAGER() public view override returns (IAccessManager) {\n    return AMPUtils.getAccessManagedProxyStorage().accessManager;\n  }\n}\n"},"@ensuro/access-managed-proxy/contracts/AccessManagedProxyBase.sol":{"content":"// SPDX-License-Identifier: Apache-2.0\npragma solidity ^0.8.0;\n\nimport {ERC1967Proxy} from \"@openzeppelin/contracts/proxy/ERC1967/ERC1967Proxy.sol\";\nimport {IAccessManager} from \"@openzeppelin/contracts/access/manager/IAccessManager.sol\";\nimport {IAccessManagedProxy} from \"./interfaces/IAccessManagedProxy.sol\";\n\n/**\n * @title AccessManagedProxyBase\n * @notice Proxy contract using IAccessManager to manage access control before delegating calls.\n * @dev It's a variant of ERC1967Proxy.\n *\n *      Currently the check is executed on any call received by the proxy contract even calls to view methods\n *      (staticcall). In the setup of the ACCESS_MANAGER permissions you would want to make all the views and pure\n *      functions enabled for the PUBLIC_ROLE.\n *\n *      This base contract delegates on descendent contracts the storage of the ACCESS_MANAGER.\n *\n *      Check https://forum.openzeppelin.com/t/accessmanagedproxy-is-a-good-idea/41917 for a discussion on the\n *      advantages and disadvantages of using it.\n *\n * @custom:security-contact security@ensuro.co\n * @author Ensuro\n */\nabstract contract AccessManagedProxyBase is ERC1967Proxy, IAccessManagedProxy {\n  /**\n   * @notice Constructor of the proxy, defining the implementation and the access manager\n   * @dev Initializes the upgradeable proxy with an initial implementation specified by `implementation` and\n   *      with `manager` as the ACCESS_MANAGER that will handle access control.\n   *\n   * @param implementation The initial implementation contract.\n   * @param _data If nonempty, it's used as data in a delegate call to `implementation`. This will typically be an\n   *              encoded function call, and allows initializing the storage of the proxy like a Solidity constructor.\n   *\n   * @custom:pre If `_data` is empty, `msg.value` must be zero.\n   */\n  constructor(address implementation, bytes memory _data) payable ERC1967Proxy(implementation, _data) {}\n\n  /// @inheritdoc IAccessManagedProxy\n  // solhint-disable-next-line func-name-mixedcase\n  function ACCESS_MANAGER() public view virtual returns (IAccessManager);\n\n  /// @inheritdoc IAccessManagedProxy\n  function authority() external view virtual returns (address) {\n    return address(ACCESS_MANAGER());\n  }\n\n  /**\n   * @notice Intercepts the super._delegate call to implement access control\n   * @dev Checks with the ACCESS_MANAGER if msg.sender is authorized to call the current call's function,\n   * and if so, delegates the current call to `implementation`.\n   * @param implementation The implementation contract\n   *\n   * This function does not return to its internal call site, it will return directly to the external caller.\n   */\n  function _delegate(address implementation) internal virtual override {\n    bytes4 selector = bytes4(msg.data[0:4]);\n    bool immediate = _skipAC(selector); // reuse immediate variable both for skipped methods and canCall result\n    if (!immediate) {\n      (immediate, ) = ACCESS_MANAGER().canCall(msg.sender, address(this), selector);\n      if (!immediate) revert AccessManagedUnauthorized(msg.sender);\n    }\n    super._delegate(implementation);\n  }\n\n  /**\n   * @notice Returns whether to skip the access control validation or not\n   * @dev Hook called before ACCESS_MANAGER.canCall to enable skipping the call to the access manager for performance\n   *      reasons (for example on views) or to remove access control for other specific cases\n   * @param selector The selector of the method called\n   * @return Whether the access control using ACCESS_MANAGER should be skipped or not\n   */\n  function _skipAC(bytes4 selector) internal view virtual returns (bool);\n}\n"},"@ensuro/access-managed-proxy/contracts/AMPUtils.sol":{"content":"// SPDX-License-Identifier: Apache-2.0\npragma solidity ^0.8.0;\n\nimport {IAccessManager} from \"@openzeppelin/contracts/access/manager/IAccessManager.sol\";\nimport {IAccessManagedProxy} from \"./interfaces/IAccessManagedProxy.sol\";\n\n/**\n * @title AMPUtils\n * @dev Utility functions for doing custom access control rules, for contracts deployed\n *      with AccessManagedProxy\n * @author Ensuro\n */\nlibrary AMPUtils {\n  // Error copied from IAccessManaged\n  error AccessManagedUnauthorized(address caller);\n\n  struct AccessManagedProxyStorage {\n    IAccessManager accessManager;\n    bytes4[] passThruMethods; // This is used for observability\n    mapping(bytes4 => bool) skipAc; // This is the used for actual lookup\n  }\n\n  /**\n   * @notice Storage slot with the address of the current access mananger.\n   * @dev Computed as: `keccak256(\n   *    abi.encode(uint256(keccak256(\"ensuro.storage.AccessManagedProxy\")) - 1)\n   * ) & ~bytes32(uint256(0xff))\n   */\n  // solhint-disable-next-line const-name-snakecase\n  bytes32 internal constant AccessManagedProxyStorageLocation =\n    0x787c9d7ac910d64252bcea05acd5b7af6d59644e0451a8bb5674587555049c00;\n\n  function getAccessManagedProxyStorage() internal pure returns (AccessManagedProxyStorage storage $) {\n    // solhint-disable-next-line no-inline-assembly\n    assembly {\n      $.slot := AccessManagedProxyStorageLocation\n    }\n  }\n\n  function setAccessManager(IAccessManager accessManager) internal {\n    if (address(accessManager).code.length == 0) {\n      revert IAccessManagedProxy.AccessManagedInvalidAuthority(address(accessManager));\n    }\n    getAccessManagedProxyStorage().accessManager = accessManager;\n    emit IAccessManagedProxy.AuthorityUpdated(address(accessManager));\n  }\n\n  function setPassThruMethods(bytes4[] memory passThruMethods) internal {\n    AccessManagedProxyStorage storage $ = AMPUtils.getAccessManagedProxyStorage();\n    $.passThruMethods = new bytes4[](passThruMethods.length);\n    for (uint256 i; i < passThruMethods.length; ++i) {\n      $.passThruMethods[i] = passThruMethods[i];\n      $.skipAc[passThruMethods[i]] = true;\n    }\n    emit IAccessManagedProxy.PassThruMethodsChanged(passThruMethods);\n  }\n\n  function replacePassThruMethods(bytes4[] memory newPassThruMethods) internal {\n    AccessManagedProxyStorage storage $ = AMPUtils.getAccessManagedProxyStorage();\n    bytes4[] memory oldPassThruMethods = $.passThruMethods;\n    for (uint256 i; i < oldPassThruMethods.length; ++i) {\n      $.skipAc[oldPassThruMethods[i]] = false;\n    }\n    setPassThruMethods(newPassThruMethods);\n  }\n\n  /**\n   * @dev Checks if the user can call a particular selector, assuming the calling contract was deployed as an AMP.\n   *\n   * @param user The user for which you want to check the access, typically msg.sender\n   * @param selector The selector of the method called (or a fake selector generated with makeSelector or another way)\n   */\n  function checkCanCall(address user, bytes4 selector) internal view {\n    (bool immediate, ) = IAccessManagedProxy(payable(address(this))).ACCESS_MANAGER().canCall(\n      user,\n      address(this),\n      selector\n    );\n    require(immediate, AccessManagedUnauthorized(user));\n  }\n\n  /**\n   * @dev Standard way of creating \"fake selectors\" (not necessarily tied to a method call) for specific permissions\n   */\n  function makeSelector(bytes memory something) internal pure returns (bytes4) {\n    return bytes4(keccak256(something));\n  }\n}\n"},"@ensuro/access-managed-proxy/contracts/interfaces/IAccessManagedProxy.sol":{"content":"// SPDX-License-Identifier: Apache-2.0\npragma solidity ^0.8.28;\n\nimport {IAccessManager} from \"@openzeppelin/contracts/access/manager/IAccessManager.sol\";\n\n/**\n * @title IAccessManagedProxy - Interface of AccessManagedProxy contracts\n * @notice This interface gives observability of the access control setup\n *\n * @dev The `ACCESS_MANAGER()` is the AccessManager contract that stores the access roles for most of the methods,\n * except those listed in `PASS_THRU_METHODS()` that are forwarded directly to the proxy and don't have access control\n * (at least not by the AccessManager contract).\n *\n * @author Ensuro\n */\ninterface IAccessManagedProxy {\n  /**\n   * @notice The ACCESS_MANAGER that manages the access controls was updated\n   * @dev Authority that manages this contract was updated. Uses same interface as OZ's IAccessManaged\n   */\n  // solhint-disable-next-line gas-indexed-events\n  event AuthorityUpdated(address authority);\n\n  /**\n   * @dev Emitted when the passThruMethods has changed.\n   */\n  event PassThruMethodsChanged(bytes4[] newPassThruMethods);\n\n  // Errors copied from OZ's IAccessManaged\n  error AccessManagedUnauthorized(address caller);\n  error AccessManagedInvalidAuthority(address authority);\n\n  /**\n   * @notice Returns the current authority.\n   * @dev Returns the current authority. Same as ACCESS_MANAGER(), added for compatibility with OZ's IAccessManaged\n   */\n  function authority() external view returns (address);\n\n  /**\n   * @notice AccessManager contract that handles the permissions to access the implementation methods\n   */\n  // solhint-disable-next-line func-name-mixedcase\n  function ACCESS_MANAGER() external view returns (IAccessManager);\n\n  /**\n   * @notice Gives observability to the methods that are skipped from access control\n   * @return methods The list of method selectors that skip ACCESS_MANAGER access control\n   */\n  // solhint-disable-next-line func-name-mixedcase\n  function PASS_THRU_METHODS() external view returns (bytes4[] memory methods);\n}\n"},"@ensuro/swaplibrary/contracts/CurveRoutes.sol":{"content":"// SPDX-License-Identifier: Apache-2.0\npragma solidity ^0.8.0;\n\nimport {ICurveRouter} from \"./dependencies/ICurveRouter.sol\";\nimport {BytesLib} from \"solidity-bytes-utils/contracts/BytesLib.sol\";\n\n/**\n * @title Library to access a set of curve routes stored as tightly packed bytes\n *\n * @dev The format is a concatenation of bytes, packed (ethers.solidityPack in js) with the following fields\n *\n *      Fields:\n *      <ICurveRouter router>\n *      <uint8 numberOfRoutes>\n *      -- for each route --\n *      <uint8 numberOfSwaps>\n *      <address route[i] for i in range((numberOfSwaps * 2) + 1)\n *      <uint8 swapParam[i][j] for i in range(numberOfSwaps) for j in range(5)>\n *      <address pool[i] for in range(numberOfSwaps)\n *      -- end - for each route --\n *\n * @custom:security-contact security@ensuro.co\n * @author Ensuro\n */\nlibrary CurveRoutes {\n  using BytesLib for bytes;\n  uint256 internal constant ADDRESS_SIZE = 20;\n  uint256 internal constant UINT8_SIZE = 1;\n  uint256 internal constant MAX_SWAPS = 5;\n  uint256 internal constant ROUTER_OFFSET = 0;\n  uint256 internal constant N_ROUTES_OFFSET = ROUTER_OFFSET + ADDRESS_SIZE;\n  uint256 internal constant ROUTES_BASE_OFFSET = N_ROUTES_OFFSET + UINT8_SIZE;\n\n  struct CurveRoute {\n    address[11] route;\n    /**\n     * For each swap array of [i, j, swap type, pool_type, n_coins]\n     * See https://github.com/curvefi/curve-router-ng/blob/master/contracts/Router.vy#L514C1-L531C63\n     */\n    uint256[MAX_SWAPS][5] swapParams;\n    address[MAX_SWAPS] pools;\n  }\n\n  error CurveRouterCantBeZero();\n  error AtLeastOneRoute();\n  error InvalidLength();\n  error InvalidRoute(CurveRoute route);\n  error TooManySwaps(uint8 nSwaps);\n  error RouteNotFound(address tokenIn, address tokenOut);\n\n  function validate(bytes memory curveRoutes) internal pure {\n    ICurveRouter router = ICurveRouter(curveRoutes.toAddress(ROUTER_OFFSET));\n    if (address(router) == address(0)) revert CurveRouterCantBeZero();\n    uint8 nRoutes = curveRoutes.toUint8(N_ROUTES_OFFSET);\n    if (nRoutes == 0) revert AtLeastOneRoute();\n    uint256 offset = ROUTES_BASE_OFFSET;\n    for (uint256 i; i < nRoutes; i++) {\n      (uint8 nSwaps, CurveRoute memory route) = readRoute(curveRoutes, offset);\n      for (uint256 j; j < nSwaps; j++) {\n        if (route.route[j * 2] == address(0) || route.route[j * 2 + 1] == address(0)) revert InvalidRoute(route);\n      }\n      if (route.route[nSwaps * 2] == address(0)) revert InvalidRoute(route);\n      if (nSwaps != MAX_SWAPS && route.route[_routeLen(nSwaps)] != address(0)) revert InvalidRoute(route);\n      offset += routeSize(nSwaps);\n    }\n    if (curveRoutes.length != offset) revert InvalidLength();\n  }\n\n  function readRoute(\n    bytes memory curveRoutes,\n    uint256 offset\n  ) internal pure returns (uint8 nSwaps, CurveRoute memory route) {\n    nSwaps = curveRoutes.toUint8(offset);\n    if (nSwaps > MAX_SWAPS) revert TooManySwaps(nSwaps);\n    for (uint256 i; i < _routeLen(nSwaps); i++) {\n      route.route[i] = curveRoutes.toAddress(offset + UINT8_SIZE + i * ADDRESS_SIZE);\n    }\n    offset += UINT8_SIZE + _routeLen(nSwaps) * ADDRESS_SIZE;\n    for (uint256 i; i < nSwaps; i++) {\n      route.swapParams[i][0] = curveRoutes.toUint8(offset + i * UINT8_SIZE * 5);\n      route.swapParams[i][1] = curveRoutes.toUint8(offset + i * UINT8_SIZE * 5 + 1);\n      route.swapParams[i][2] = curveRoutes.toUint8(offset + i * UINT8_SIZE * 5 + 2);\n      route.swapParams[i][3] = curveRoutes.toUint8(offset + i * UINT8_SIZE * 5 + 3);\n      route.swapParams[i][4] = curveRoutes.toUint8(offset + i * UINT8_SIZE * 5 + 4);\n    }\n    offset += nSwaps * UINT8_SIZE * 5;\n    for (uint256 i; i < nSwaps; i++) {\n      route.pools[i] = curveRoutes.toAddress(offset + i * ADDRESS_SIZE);\n    }\n  }\n\n  function routeSize(uint8 nSwaps) internal pure returns (uint256) {\n    return\n      UINT8_SIZE + // nSwaps\n      _routeLen(nSwaps) *\n      ADDRESS_SIZE + // route\n      (nSwaps * 5 * UINT8_SIZE) + // swapParams\n      (nSwaps * ADDRESS_SIZE); // pools\n  }\n\n  function _routeLen(uint8 nSwaps) private pure returns (uint256) {\n    return (nSwaps * 2 + 1);\n  }\n\n  function findRoute(\n    bytes memory curveRoutes,\n    address tokenIn,\n    address tokenOut\n  ) internal pure returns (ICurveRouter router, CurveRoute memory route) {\n    router = ICurveRouter(curveRoutes.toAddress(ROUTER_OFFSET));\n    uint8 nRoutes = curveRoutes.toUint8(N_ROUTES_OFFSET);\n    uint256 offset = ROUTES_BASE_OFFSET;\n    for (uint256 i; i < nRoutes; i++) {\n      uint8 nSwaps = curveRoutes.toUint8(offset);\n      if (\n        curveRoutes.toAddress(offset + UINT8_SIZE) == tokenIn &&\n        curveRoutes.toAddress(offset + UINT8_SIZE + ADDRESS_SIZE * nSwaps * 2) == tokenOut\n      ) {\n        (, route) = readRoute(curveRoutes, offset);\n        return (router, route);\n      }\n      offset += routeSize(nSwaps);\n    }\n    revert RouteNotFound(tokenIn, tokenOut);\n  }\n}\n"},"@ensuro/swaplibrary/contracts/dependencies/ICurveRouter.sol":{"content":"// SPDX-License-Identifier: UNLICENSED\npragma solidity ^0.8.4;\n\n// Generated with cast interface from https://polygonscan.com/address/0xF0d4c12A5768D806021F80a262B4d39d26C58b8D\ninterface ICurveRouter {\n    event Exchange(\n        address indexed sender,\n        address indexed receiver,\n        address[11] route,\n        uint256[5][5] swap_params,\n        address[5] pools,\n        uint256 in_amount,\n        uint256 out_amount\n    );\n\n    function exchange(address[11] memory _route, uint256[5][5] memory _swap_params, uint256 _amount, uint256 _expected)\n        external\n        payable\n        returns (uint256);\n    function exchange(\n        address[11] memory _route,\n        uint256[5][5] memory _swap_params,\n        uint256 _amount,\n        uint256 _expected,\n        address[5] memory _pools\n    ) external payable returns (uint256);\n    function exchange(\n        address[11] memory _route,\n        uint256[5][5] memory _swap_params,\n        uint256 _amount,\n        uint256 _expected,\n        address[5] memory _pools,\n        address _receiver\n    ) external payable returns (uint256);\n    function get_dx(\n        address[11] memory _route,\n        uint256[5][5] memory _swap_params,\n        uint256 _out_amount,\n        address[5] memory _pools\n    ) external view returns (uint256);\n    function get_dx(\n        address[11] memory _route,\n        uint256[5][5] memory _swap_params,\n        uint256 _out_amount,\n        address[5] memory _pools,\n        address[5] memory _base_pools\n    ) external view returns (uint256);\n    function get_dx(\n        address[11] memory _route,\n        uint256[5][5] memory _swap_params,\n        uint256 _out_amount,\n        address[5] memory _pools,\n        address[5] memory _base_pools,\n        address[5] memory _base_tokens\n    ) external view returns (uint256);\n    function get_dx(\n        address[11] memory _route,\n        uint256[5][5] memory _swap_params,\n        uint256 _out_amount,\n        address[5] memory _pools,\n        address[5] memory _base_pools,\n        address[5] memory _base_tokens,\n        address[5] memory _second_base_pools\n    ) external view returns (uint256);\n    function get_dx(\n        address[11] memory _route,\n        uint256[5][5] memory _swap_params,\n        uint256 _out_amount,\n        address[5] memory _pools,\n        address[5] memory _base_pools,\n        address[5] memory _base_tokens,\n        address[5] memory _second_base_pools,\n        address[5] memory _second_base_tokens\n    ) external view returns (uint256);\n    function get_dy(address[11] memory _route, uint256[5][5] memory _swap_params, uint256 _amount)\n        external\n        view\n        returns (uint256);\n    function get_dy(\n        address[11] memory _route,\n        uint256[5][5] memory _swap_params,\n        uint256 _amount,\n        address[5] memory _pools\n    ) external view returns (uint256);\n}\n"},"@ensuro/swaplibrary/contracts/interfaces/ISwapRouterErrors.sol":{"content":"// SPDX-License-Identifier: Apache-2.0\npragma solidity ^0.8.0;\n\nimport {ISwapRouter} from \"@uniswap/v3-periphery/contracts/interfaces/ISwapRouter.sol\";\n\n/**\n * @title ISwapRouterErrors\n *\n */\ninterface ISwapRouterErrors is ISwapRouter {\n  error OutputAmountLessThanSlippage(uint256 amountOut, uint256 amountOutMinimum);\n  error InputAmountExceedsSlippage(uint256 amountIn, uint256 amountInMaximum);\n  error DeadlineInThePast();\n  error AmountCannotBeZero();\n  error TokenCannotBeZero();\n  error RecipientCannotBeZero();\n  error NotImplemented();\n}\n"},"@ensuro/swaplibrary/contracts/mocks/SwapRouterMock.sol":{"content":"// SPDX-License-Identifier: Apache-2.0\npragma solidity ^0.8.0;\n\nimport {Math} from \"@openzeppelin/contracts/utils/math/Math.sol\";\nimport {SafeCast} from \"@openzeppelin/contracts/utils/math/SafeCast.sol\";\nimport {SafeERC20} from \"@openzeppelin/contracts/token/ERC20/utils/SafeERC20.sol\";\nimport {ISwapRouter} from \"@uniswap/v3-periphery/contracts/interfaces/ISwapRouter.sol\";\nimport {IERC20Metadata} from \"@openzeppelin/contracts/token/ERC20/extensions/IERC20Metadata.sol\";\nimport {ISwapRouterErrors} from \"../interfaces/ISwapRouterErrors.sol\";\n\n/**\n * @title SwapRouterMock\n * @notice SwapRouter mock that can swap a single type of token for several others\n */\ncontract SwapRouterMock is ISwapRouterErrors {\n  using SafeERC20 for IERC20Metadata;\n  using Math for uint256;\n  using SafeCast for uint256;\n\n  uint256 internal constant WAD = 1e18;\n\n  error AdminCannotBeZero();\n  event PriceUpdated(address tokenIn, address tokenOut, uint256 price);\n  error NotEnoughBalance(uint256 available, uint256 required);\n\n  mapping(address => mapping(address => uint256)) private _prices;\n\n  constructor(address admin) {\n    require(admin != address(0), AdminCannotBeZero());\n  }\n\n  function _toWadFactor(address token) internal view returns (uint256) {\n    return (10 ** (18 - IERC20Metadata(token).decimals()));\n  }\n\n  /**\n   * @inheritdoc ISwapRouter\n   */\n  function exactInputSingle(ExactInputSingleParams calldata params) external payable returns (uint256 amountOut) {\n    require(params.recipient != address(0), RecipientCannotBeZero());\n    require(params.deadline >= block.timestamp, DeadlineInThePast());\n    require(params.amountIn > 0, AmountCannotBeZero());\n\n    uint256 amountOutInWad = (params.amountIn * _toWadFactor(params.tokenIn)).mulDiv(\n      WAD,\n      _prices[params.tokenIn][params.tokenOut]\n    );\n    amountOut = amountOutInWad / _toWadFactor(params.tokenOut);\n    require(amountOut >= params.amountOutMinimum, OutputAmountLessThanSlippage(amountOut, params.amountOutMinimum));\n\n    IERC20Metadata(params.tokenIn).safeTransferFrom(msg.sender, address(this), params.amountIn);\n    IERC20Metadata(params.tokenOut).safeTransfer(params.recipient, amountOut);\n  }\n\n  /**\n   * @inheritdoc ISwapRouter\n   */\n  function exactOutputSingle(ExactOutputSingleParams calldata params) external payable returns (uint256 amountIn) {\n    require(params.recipient != address(0), RecipientCannotBeZero());\n    require(params.deadline >= block.timestamp, DeadlineInThePast());\n    require(params.amountOut > 0, AmountCannotBeZero());\n    uint256 balance = IERC20Metadata(params.tokenOut).balanceOf(address(this));\n    require(balance >= params.amountOut, NotEnoughBalance(balance, params.amountOut));\n\n    uint256 amountInWad = (params.amountOut * _toWadFactor(params.tokenOut)).mulDiv(\n      _prices[params.tokenIn][params.tokenOut],\n      WAD\n    );\n    amountIn = amountInWad / _toWadFactor(params.tokenIn);\n    require(amountIn <= params.amountInMaximum, InputAmountExceedsSlippage(amountIn, params.amountInMaximum));\n\n    IERC20Metadata(params.tokenIn).safeTransferFrom(msg.sender, address(this), amountIn);\n    IERC20Metadata(params.tokenOut).safeTransfer(params.recipient, params.amountOut);\n  }\n\n  function withdraw(address token, uint256 amount) external {\n    require(token != address(0), TokenCannotBeZero());\n    require(amount > 0, TokenCannotBeZero());\n    IERC20Metadata(token).safeTransfer(msg.sender, amount);\n  }\n\n  function setCurrentPrice(address tokenIn, address tokenOut, uint256 price_) external {\n    require(tokenIn != address(0), TokenCannotBeZero());\n    require(tokenOut != address(0), TokenCannotBeZero());\n    _prices[tokenIn][tokenOut] = price_;\n    emit PriceUpdated(tokenIn, tokenOut, price_);\n  }\n\n  /**\n   * @inheritdoc ISwapRouter\n   * @notice This function is not implemented\n   */\n  function exactOutput(ExactOutputParams calldata) external payable returns (uint256) {\n    revert NotImplemented();\n  }\n\n  /**\n   * @inheritdoc ISwapRouter\n   * @notice This function is not implemented\n   */\n  function exactInput(ExactInputParams calldata) external payable returns (uint256) {\n    revert NotImplemented();\n  }\n\n  /**\n   * @notice This function is not implemented\n   */\n  function uniswapV3SwapCallback(int256, int256, bytes calldata) external pure {\n    revert NotImplemented();\n  }\n}\n"},"@ensuro/swaplibrary/contracts/SwapLibrary.sol":{"content":"// SPDX-License-Identifier: Apache-2.0\npragma solidity ^0.8.0;\n\nimport {ISwapRouter} from \"@uniswap/v3-periphery/contracts/interfaces/ISwapRouter.sol\";\nimport {ICurveRouter} from \"./dependencies/ICurveRouter.sol\";\nimport {IERC20Metadata} from \"@openzeppelin/contracts/token/ERC20/extensions/IERC20Metadata.sol\";\nimport {Math} from \"@openzeppelin/contracts/utils/math/Math.sol\";\nimport {CurveRoutes} from \"./CurveRoutes.sol\";\n\n/**\n * @title Swap Library\n * @custom:security-contact security@ensuro.co\n * @author Ensuro\n */\nlibrary SwapLibrary {\n  using Math for uint256;\n\n  uint256 internal constant WAD = 1e18;\n  // Limit on the number of exchanges done by the exactOutput curve workaround\n  uint256 internal constant MAX_EXCHANGE = 2;\n\n  /**\n   * @dev Enum with the different protocols\n   */\n  enum SwapProtocol {\n    undefined,\n    uniswap,\n    curveRouter\n  }\n\n  struct SwapConfig {\n    SwapProtocol protocol;\n    uint256 maxSlippage;\n    bytes customParams;\n  }\n\n  struct UniswapCustomParams {\n    uint24 feeTier;\n    ISwapRouter router;\n  }\n\n  error InvalidProtocol();\n  error MaxSlippageCannotBeZero();\n  error UniswapRouterCannotBeZero();\n  error UniswapFeeTierCannotBeZero();\n  error AllowanceShouldGoBackToZero();\n  error ReceivedLessThanAcceptable(uint256 received, uint256 amountOutMin);\n  error SpentMoreThanAcceptable(uint256 spent, uint256 amountInMax);\n\n  function validate(SwapConfig calldata swapConfig) external pure {\n    if (swapConfig.maxSlippage == 0) revert MaxSlippageCannotBeZero();\n    if (swapConfig.protocol == SwapProtocol.uniswap) {\n      UniswapCustomParams memory cp = abi.decode(swapConfig.customParams, (UniswapCustomParams));\n      if (address(cp.router) == address(0)) revert UniswapRouterCannotBeZero();\n      if (cp.feeTier == 0) revert UniswapFeeTierCannotBeZero();\n    } else if (swapConfig.protocol == SwapProtocol.curveRouter) {\n      CurveRoutes.validate(swapConfig.customParams);\n    } else revert InvalidProtocol();\n  }\n\n  function _toWadFactor(address token) internal view returns (uint256) {\n    return (10 ** (18 - IERC20Metadata(token).decimals()));\n  }\n\n  /**\n   * @dev Executes a swap of `amount` from the input token (`tokenIn`) to the output token (`tokenOut`),\n   * @param swapConfig Swap configuration including the swap protocol to use.\n   * @param tokenIn The address of the token to be swapped.\n   * @param tokenOut The address of the token to be received as a result of the swap.\n   * @param amount The exact amount of input token to be swapped.\n   * @param price Approximate amount of units of tokenIn required to acquire a unit of tokenOut.\n   *              It will be validated against the swap rate considering the maxSlippage.\n   *\n   * @notice Should have at least `amount` of tokenIn in the contract to execute the transaction.\n   *\n   * Requirements:\n   * - tokenIn and tokenOut decimals <= 18\n   * - SwapConfig must be valid and should be validated using the `validate()` method.\n   *\n   * @return That exact `amount` went out and an tokenOut amount equal to amount/price +- slippage% came in.\n   */\n  function exactInput(\n    SwapConfig calldata swapConfig,\n    address tokenIn,\n    address tokenOut,\n    uint256 amount,\n    uint256 price\n  ) external returns (uint256) {\n    if (swapConfig.protocol == SwapProtocol.uniswap) {\n      return _exactInputUniswap(swapConfig, tokenIn, tokenOut, amount, price);\n    } else if (swapConfig.protocol == SwapProtocol.curveRouter) {\n      return _exactInputCurve(swapConfig, tokenIn, tokenOut, amount, price);\n    }\n    return 0;\n  }\n\n  /**\n   * @dev Executes a swap, where the desired output amount of `tokenOut` is specified,\n   * @param swapConfig Swap configuration including the protocol to use for the swap.\n   * @param tokenIn The address of the token to be used as input for the swap.\n   * @param tokenOut The address of the token to be received as a result of the swap.\n   * @param amount The desired amount of output tokens (`tokenOut`) to be obtained from the swap.\n   * @param price Approximate amount of units of tokenIn required to acquire a unit of tokenOut.\n   *              It will be validated against the swap rate considering the maxSlippage.\n   *\n   * @notice Should have sufficient `tokenIn` to fulfill the desired output amount.\n   *\n   * Requirements:\n   * - tokenIn and tokenOut decimals <= 18\n   * - SwapConfig must be valid and should be validated using the `validate()` method.\n   *\n   * @return The actual amount of input tokens (`tokenIn`) spent to obtain the desired output amount (`amount`)\n   *   should be within the expected slippage range.\n   */\n  function exactOutput(\n    SwapConfig calldata swapConfig,\n    address tokenIn,\n    address tokenOut,\n    uint256 amount,\n    uint256 price\n  ) external returns (uint256) {\n    if (swapConfig.protocol == SwapProtocol.uniswap) {\n      return _exactOutputUniswap(swapConfig, tokenIn, tokenOut, amount, price);\n    } else if (swapConfig.protocol == SwapProtocol.curveRouter) {\n      return _exactOutputCurve(swapConfig, tokenIn, tokenOut, amount, price);\n    }\n    return 0;\n  }\n\n  function _calcMinAmount(\n    uint256 amount,\n    uint256 maxSlippage,\n    address tokenIn,\n    address tokenOut,\n    uint256 price\n  ) internal view returns (uint256) {\n    return (amount * _toWadFactor(tokenIn)).mulDiv(WAD - maxSlippage, price) / _toWadFactor(tokenOut);\n  }\n\n  function _calcMaxAmount(\n    uint256 amount,\n    uint256 maxSlippage,\n    address tokenIn,\n    address tokenOut,\n    uint256 price\n  ) internal view returns (uint256) {\n    return (amount * _toWadFactor(tokenOut)).mulDiv(price, WAD).mulDiv(WAD + maxSlippage, WAD) / _toWadFactor(tokenIn);\n  }\n\n  function _exactInputUniswap(\n    SwapConfig calldata swapConfig,\n    address tokenIn,\n    address tokenOut,\n    uint256 amount,\n    uint256 price\n  ) internal returns (uint256) {\n    UniswapCustomParams memory cp = abi.decode(swapConfig.customParams, (UniswapCustomParams));\n    uint256 amountOutMin = _calcMinAmount(amount, swapConfig.maxSlippage, tokenIn, tokenOut, price);\n\n    IERC20Metadata(tokenIn).approve(address(cp.router), amount);\n    ISwapRouter.ExactInputSingleParams memory params = ISwapRouter.ExactInputSingleParams({\n      tokenIn: tokenIn,\n      tokenOut: tokenOut,\n      fee: cp.feeTier,\n      recipient: address(this),\n      deadline: block.timestamp,\n      amountIn: amount,\n      amountOutMinimum: amountOutMin,\n      sqrtPriceLimitX96: 0 // Since we're limiting the transfer amount, we don't need to worry about the price impact of the transaction\n    });\n\n    uint256 received = cp.router.exactInputSingle(params);\n    if (IERC20Metadata(tokenIn).allowance(address(this), address(cp.router)) != 0) revert AllowanceShouldGoBackToZero();\n    // Sanity check\n    if (received < amountOutMin) revert ReceivedLessThanAcceptable(received, amountOutMin);\n    return received;\n  }\n\n  function _exactOutputUniswap(\n    SwapConfig calldata swapConfig,\n    address tokenIn,\n    address tokenOut,\n    uint256 amount,\n    uint256 price\n  ) internal returns (uint256) {\n    UniswapCustomParams memory cp = abi.decode(swapConfig.customParams, (UniswapCustomParams));\n\n    uint256 amountInMax = _calcMaxAmount(amount, swapConfig.maxSlippage, tokenIn, tokenOut, price);\n\n    IERC20Metadata(tokenIn).approve(address(cp.router), type(uint256).max);\n    ISwapRouter.ExactOutputSingleParams memory params = ISwapRouter.ExactOutputSingleParams({\n      tokenIn: tokenIn,\n      tokenOut: tokenOut,\n      fee: cp.feeTier,\n      recipient: address(this),\n      deadline: block.timestamp,\n      amountOut: amount,\n      amountInMaximum: amountInMax,\n      sqrtPriceLimitX96: 0 // Since we're limiting the transfer amount, we don't need to worry about the price impact of the transaction\n    });\n    uint256 actualAmount = cp.router.exactOutputSingle(params);\n\n    IERC20Metadata(tokenIn).approve(address(cp.router), 0);\n    // Sanity check\n    if (actualAmount > amountInMax) revert SpentMoreThanAcceptable(actualAmount, amountInMax);\n    return actualAmount;\n  }\n\n  function _exactInputCurve(\n    SwapConfig calldata swapConfig,\n    address tokenIn,\n    address tokenOut,\n    uint256 amount,\n    uint256 price\n  ) internal returns (uint256 received) {\n    (ICurveRouter router, CurveRoutes.CurveRoute memory route) = CurveRoutes.findRoute(\n      swapConfig.customParams,\n      tokenIn,\n      tokenOut\n    );\n    uint256 amountOutMin = _calcMinAmount(amount, swapConfig.maxSlippage, tokenIn, tokenOut, price);\n\n    IERC20Metadata(tokenIn).approve(address(router), amount);\n    received = router.exchange(route.route, route.swapParams, amount, amountOutMin, route.pools, address(this));\n\n    if (IERC20Metadata(tokenIn).allowance(address(this), address(router)) != 0) revert AllowanceShouldGoBackToZero();\n    // Sanity check\n    if (received < amountOutMin) revert ReceivedLessThanAcceptable(received, amountOutMin);\n    return received;\n  }\n\n  function _exchangeCurve(\n    ICurveRouter router,\n    CurveRoutes.CurveRoute memory route,\n    uint256 amount\n  ) internal returns (uint256 received, uint256 amountInActual) {\n    amountInActual = router.get_dx(route.route, route.swapParams, amount, route.pools);\n    received = router.exchange(\n      route.route,\n      route.swapParams,\n      amountInActual,\n      0, // I don't verify here, but anyway the token approval defines the limit\n      route.pools,\n      address(this)\n    );\n  }\n\n  function _exactOutputCurve(\n    SwapConfig calldata swapConfig,\n    address tokenIn,\n    address tokenOut,\n    uint256 amount,\n    uint256 price\n  ) internal returns (uint256) {\n    (ICurveRouter router, CurveRoutes.CurveRoute memory route) = CurveRoutes.findRoute(\n      swapConfig.customParams,\n      tokenIn,\n      tokenOut\n    );\n    uint256 amountInMax = _calcMaxAmount(amount, swapConfig.maxSlippage, tokenIn, tokenOut, price);\n    IERC20Metadata(tokenIn).approve(address(router), amountInMax);\n    uint256 amountInConsumed = 0;\n\n    // Workaround because get_dx isn't reliable - Does up to MAX_EXCHANGE to aproximate as much as possible\n    for (uint256 i; amount != 0 && i < MAX_EXCHANGE; i++) {\n      (uint256 received, uint256 amountInActual) = _exchangeCurve(router, route, amount);\n      amount -= Math.min(amount, received);\n      amountInConsumed += amountInActual;\n    }\n    IERC20Metadata(tokenIn).approve(address(router), 0);\n    return amountInConsumed;\n  }\n}\n"},"@ensuro/utils/contracts/TestCurrency.sol":{"content":"//SPDX-License-Identifier: Apache-2.0\npragma solidity ^0.8.0;\n\nimport {ERC20} from \"@openzeppelin/contracts/token/ERC20/ERC20.sol\";\n\ncontract TestCurrency is ERC20 {\n  uint8 internal immutable _decimals;\n\n  constructor(\n    string memory name_,\n    string memory symbol_,\n    uint256 initialSupply,\n    uint8 decimals_\n  ) ERC20(name_, symbol_) {\n    _decimals = decimals_;\n    _mint(msg.sender, initialSupply);\n  }\n\n  function decimals() public view virtual override returns (uint8) {\n    return _decimals;\n  }\n\n  function mint(address recipient, uint256 amount) public virtual {\n    return _mint(recipient, amount);\n  }\n\n  function burn(address recipient, uint256 amount) public virtual {\n    return _burn(recipient, amount);\n  }\n}\n"},"@ensuro/utils/contracts/TestERC4626.sol":{"content":"//SPDX-License-Identifier: Apache-2.0\npragma solidity ^0.8.0;\n\nimport {ERC20} from \"@openzeppelin/contracts/token/ERC20/ERC20.sol\";\nimport {ERC4626} from \"@openzeppelin/contracts/token/ERC20/extensions/ERC4626.sol\";\nimport {IERC20Metadata} from \"@openzeppelin/contracts/token/ERC20/extensions/IERC20Metadata.sol\";\n\ninterface IMintable {\n  function mint(address recipient, uint256 amount) external;\n  function burn(address recipient, uint256 amount) external;\n}\n\ncontract TestERC4626 is ERC4626 {\n  bool internal _broken;\n\n  uint256 public overrideMaxDeposit;\n  uint256 public overrideMaxMint;\n  uint256 public overrideMaxWithdraw;\n  uint256 public overrideMaxRedeem;\n\n  uint256 public constant OVERRIDE_UNSET = type(uint256).max - 99;\n\n  enum OverrideOption {\n    deposit,\n    mint,\n    withdraw,\n    redeem\n  }\n\n  error VaultIsBroken(bytes4 selector);\n\n  modifier isBroken() {\n    require(!_broken, VaultIsBroken(bytes4(msg.data[0:4])));\n    _;\n  }\n\n  constructor(string memory name_, string memory symbol_, IERC20Metadata asset_) ERC20(name_, symbol_) ERC4626(asset_) {\n    overrideMaxRedeem = overrideMaxWithdraw = overrideMaxMint = overrideMaxDeposit = OVERRIDE_UNSET;\n  }\n\n  function _deposit(\n    address caller,\n    address receiver,\n    uint256 assets,\n    uint256 shares\n  ) internal virtual override isBroken {\n    super._deposit(caller, receiver, assets, shares);\n  }\n\n  function _withdraw(\n    address caller,\n    address receiver,\n    address owner,\n    uint256 assets,\n    uint256 shares\n  ) internal virtual override isBroken {\n    super._withdraw(caller, receiver, owner, assets, shares);\n  }\n\n  /*\n   * @dev Adds or remove assets not generated by deposits/withdraw - For testing discrete earnings/losses\n   */\n  function discreteEarning(int256 assets) external {\n    if (assets > 0) {\n      IMintable(asset()).mint(address(this), uint256(assets));\n    } else {\n      IMintable(asset()).burn(address(this), uint256(-assets));\n    }\n  }\n\n  function setBroken(bool broken_) external {\n    _broken = broken_;\n  }\n\n  function broken() external view returns (bool) {\n    return _broken;\n  }\n\n  function maxDeposit(address owner) public view override returns (uint256) {\n    return overrideMaxDeposit == OVERRIDE_UNSET ? super.maxDeposit(owner) : overrideMaxDeposit;\n  }\n\n  function maxMint(address owner) public view override returns (uint256) {\n    return overrideMaxMint == OVERRIDE_UNSET ? super.maxMint(owner) : overrideMaxMint;\n  }\n\n  function maxWithdraw(address owner) public view override returns (uint256) {\n    return overrideMaxWithdraw == OVERRIDE_UNSET ? super.maxWithdraw(owner) : overrideMaxWithdraw;\n  }\n\n  function maxRedeem(address owner) public view override returns (uint256) {\n    return overrideMaxRedeem == OVERRIDE_UNSET ? super.maxRedeem(owner) : overrideMaxRedeem;\n  }\n\n  function setOverride(OverrideOption option, uint256 newValue) external {\n    if (option == OverrideOption.deposit) overrideMaxDeposit = newValue;\n    if (option == OverrideOption.mint) overrideMaxMint = newValue;\n    if (option == OverrideOption.withdraw) overrideMaxWithdraw = newValue;\n    if (option == OverrideOption.redeem) overrideMaxRedeem = newValue;\n  }\n}\n"},"@openzeppelin/contracts-upgradeable/proxy/utils/UUPSUpgradeable.sol":{"content":"// SPDX-License-Identifier: MIT\n\npragma solidity ^0.8.22;\n\nimport {UUPSUpgradeable} from \"@openzeppelin/contracts/proxy/utils/UUPSUpgradeable.sol\";\n"},"@openzeppelin/contracts-upgradeable/token/ERC20/ERC20Upgradeable.sol":{"content":"// SPDX-License-Identifier: MIT\n// OpenZeppelin Contracts (last updated v5.5.0) (token/ERC20/ERC20.sol)\n\npragma solidity ^0.8.20;\n\nimport {IERC20} from \"@openzeppelin/contracts/token/ERC20/IERC20.sol\";\nimport {IERC20Metadata} from \"@openzeppelin/contracts/token/ERC20/extensions/IERC20Metadata.sol\";\nimport {ContextUpgradeable} from \"../../utils/ContextUpgradeable.sol\";\nimport {IERC20Errors} from \"@openzeppelin/contracts/interfaces/draft-IERC6093.sol\";\nimport {Initializable} from \"@openzeppelin/contracts/proxy/utils/Initializable.sol\";\n\n/**\n * @dev Implementation of the {IERC20} interface.\n *\n * This implementation is agnostic to the way tokens are created. This means\n * that a supply mechanism has to be added in a derived contract using {_mint}.\n *\n * TIP: For a detailed writeup see our guide\n * https://forum.openzeppelin.com/t/how-to-implement-erc20-supply-mechanisms/226[How\n * to implement supply mechanisms].\n *\n * The default value of {decimals} is 18. To change this, you should override\n * this function so it returns a different value.\n *\n * We have followed general OpenZeppelin Contracts guidelines: functions revert\n * instead returning `false` on failure. This behavior is nonetheless\n * conventional and does not conflict with the expectations of ERC-20\n * applications.\n */\nabstract contract ERC20Upgradeable is Initializable, ContextUpgradeable, IERC20, IERC20Metadata, IERC20Errors {\n    /// @custom:storage-location erc7201:openzeppelin.storage.ERC20\n    struct ERC20Storage {\n        mapping(address account => uint256) _balances;\n\n        mapping(address account => mapping(address spender => uint256)) _allowances;\n\n        uint256 _totalSupply;\n\n        string _name;\n        string _symbol;\n    }\n\n    // keccak256(abi.encode(uint256(keccak256(\"openzeppelin.storage.ERC20\")) - 1)) & ~bytes32(uint256(0xff))\n    bytes32 private constant ERC20StorageLocation = 0x52c63247e1f47db19d5ce0460030c497f067ca4cebf71ba98eeadabe20bace00;\n\n    function _getERC20Storage() private pure returns (ERC20Storage storage $) {\n        assembly {\n            $.slot := ERC20StorageLocation\n        }\n    }\n\n    /**\n     * @dev Sets the values for {name} and {symbol}.\n     *\n     * Both values are immutable: they can only be set once during construction.\n     */\n    function __ERC20_init(string memory name_, string memory symbol_) internal onlyInitializing {\n        __ERC20_init_unchained(name_, symbol_);\n    }\n\n    function __ERC20_init_unchained(string memory name_, string memory symbol_) internal onlyInitializing {\n        ERC20Storage storage $ = _getERC20Storage();\n        $._name = name_;\n        $._symbol = symbol_;\n    }\n\n    /**\n     * @dev Returns the name of the token.\n     */\n    function name() public view virtual returns (string memory) {\n        ERC20Storage storage $ = _getERC20Storage();\n        return $._name;\n    }\n\n    /**\n     * @dev Returns the symbol of the token, usually a shorter version of the\n     * name.\n     */\n    function symbol() public view virtual returns (string memory) {\n        ERC20Storage storage $ = _getERC20Storage();\n        return $._symbol;\n    }\n\n    /**\n     * @dev Returns the number of decimals used to get its user representation.\n     * For example, if `decimals` equals `2`, a balance of `505` tokens should\n     * be displayed to a user as `5.05` (`505 / 10 ** 2`).\n     *\n     * Tokens usually opt for a value of 18, imitating the relationship between\n     * Ether and Wei. This is the default value returned by this function, unless\n     * it's overridden.\n     *\n     * NOTE: This information is only used for _display_ purposes: it in\n     * no way affects any of the arithmetic of the contract, including\n     * {IERC20-balanceOf} and {IERC20-transfer}.\n     */\n    function decimals() public view virtual returns (uint8) {\n        return 18;\n    }\n\n    /// @inheritdoc IERC20\n    function totalSupply() public view virtual returns (uint256) {\n        ERC20Storage storage $ = _getERC20Storage();\n        return $._totalSupply;\n    }\n\n    /// @inheritdoc IERC20\n    function balanceOf(address account) public view virtual returns (uint256) {\n        ERC20Storage storage $ = _getERC20Storage();\n        return $._balances[account];\n    }\n\n    /**\n     * @dev See {IERC20-transfer}.\n     *\n     * Requirements:\n     *\n     * - `to` cannot be the zero address.\n     * - the caller must have a balance of at least `value`.\n     */\n    function transfer(address to, uint256 value) public virtual returns (bool) {\n        address owner = _msgSender();\n        _transfer(owner, to, value);\n        return true;\n    }\n\n    /// @inheritdoc IERC20\n    function allowance(address owner, address spender) public view virtual returns (uint256) {\n        ERC20Storage storage $ = _getERC20Storage();\n        return $._allowances[owner][spender];\n    }\n\n    /**\n     * @dev See {IERC20-approve}.\n     *\n     * NOTE: If `value` is the maximum `uint256`, the allowance is not updated on\n     * `transferFrom`. This is semantically equivalent to an infinite approval.\n     *\n     * Requirements:\n     *\n     * - `spender` cannot be the zero address.\n     */\n    function approve(address spender, uint256 value) public virtual returns (bool) {\n        address owner = _msgSender();\n        _approve(owner, spender, value);\n        return true;\n    }\n\n    /**\n     * @dev See {IERC20-transferFrom}.\n     *\n     * Skips emitting an {Approval} event indicating an allowance update. This is not\n     * required by the ERC. See {xref-ERC20-_approve-address-address-uint256-bool-}[_approve].\n     *\n     * NOTE: Does not update the allowance if the current allowance\n     * is the maximum `uint256`.\n     *\n     * Requirements:\n     *\n     * - `from` and `to` cannot be the zero address.\n     * - `from` must have a balance of at least `value`.\n     * - the caller must have allowance for ``from``'s tokens of at least\n     * `value`.\n     */\n    function transferFrom(address from, address to, uint256 value) public virtual returns (bool) {\n        address spender = _msgSender();\n        _spendAllowance(from, spender, value);\n        _transfer(from, to, value);\n        return true;\n    }\n\n    /**\n     * @dev Moves a `value` amount of tokens from `from` to `to`.\n     *\n     * This internal function is equivalent to {transfer}, and can be used to\n     * e.g. implement automatic token fees, slashing mechanisms, etc.\n     *\n     * Emits a {Transfer} event.\n     *\n     * NOTE: This function is not virtual, {_update} should be overridden instead.\n     */\n    function _transfer(address from, address to, uint256 value) internal {\n        if (from == address(0)) {\n            revert ERC20InvalidSender(address(0));\n        }\n        if (to == address(0)) {\n            revert ERC20InvalidReceiver(address(0));\n        }\n        _update(from, to, value);\n    }\n\n    /**\n     * @dev Transfers a `value` amount of tokens from `from` to `to`, or alternatively mints (or burns) if `from`\n     * (or `to`) is the zero address. All customizations to transfers, mints, and burns should be done by overriding\n     * this function.\n     *\n     * Emits a {Transfer} event.\n     */\n    function _update(address from, address to, uint256 value) internal virtual {\n        ERC20Storage storage $ = _getERC20Storage();\n        if (from == address(0)) {\n            // Overflow check required: The rest of the code assumes that totalSupply never overflows\n            $._totalSupply += value;\n        } else {\n            uint256 fromBalance = $._balances[from];\n            if (fromBalance < value) {\n                revert ERC20InsufficientBalance(from, fromBalance, value);\n            }\n            unchecked {\n                // Overflow not possible: value <= fromBalance <= totalSupply.\n                $._balances[from] = fromBalance - value;\n            }\n        }\n\n        if (to == address(0)) {\n            unchecked {\n                // Overflow not possible: value <= totalSupply or value <= fromBalance <= totalSupply.\n                $._totalSupply -= value;\n            }\n        } else {\n            unchecked {\n                // Overflow not possible: balance + value is at most totalSupply, which we know fits into a uint256.\n                $._balances[to] += value;\n            }\n        }\n\n        emit Transfer(from, to, value);\n    }\n\n    /**\n     * @dev Creates a `value` amount of tokens and assigns them to `account`, by transferring it from address(0).\n     * Relies on the `_update` mechanism\n     *\n     * Emits a {Transfer} event with `from` set to the zero address.\n     *\n     * NOTE: This function is not virtual, {_update} should be overridden instead.\n     */\n    function _mint(address account, uint256 value) internal {\n        if (account == address(0)) {\n            revert ERC20InvalidReceiver(address(0));\n        }\n        _update(address(0), account, value);\n    }\n\n    /**\n     * @dev Destroys a `value` amount of tokens from `account`, lowering the total supply.\n     * Relies on the `_update` mechanism.\n     *\n     * Emits a {Transfer} event with `to` set to the zero address.\n     *\n     * NOTE: This function is not virtual, {_update} should be overridden instead\n     */\n    function _burn(address account, uint256 value) internal {\n        if (account == address(0)) {\n            revert ERC20InvalidSender(address(0));\n        }\n        _update(account, address(0), value);\n    }\n\n    /**\n     * @dev Sets `value` as the allowance of `spender` over the `owner`'s tokens.\n     *\n     * This internal function is equivalent to `approve`, and can be used to\n     * e.g. set automatic allowances for certain subsystems, etc.\n     *\n     * Emits an {Approval} event.\n     *\n     * Requirements:\n     *\n     * - `owner` cannot be the zero address.\n     * - `spender` cannot be the zero address.\n     *\n     * Overrides to this logic should be done to the variant with an additional `bool emitEvent` argument.\n     */\n    function _approve(address owner, address spender, uint256 value) internal {\n        _approve(owner, spender, value, true);\n    }\n\n    /**\n     * @dev Variant of {_approve} with an optional flag to enable or disable the {Approval} event.\n     *\n     * By default (when calling {_approve}) the flag is set to true. On the other hand, approval changes made by\n     * `_spendAllowance` during the `transferFrom` operation sets the flag to false. This saves gas by not emitting any\n     * `Approval` event during `transferFrom` operations.\n     *\n     * Anyone who wishes to continue emitting `Approval` events on the `transferFrom` operation can force the flag to\n     * true using the following override:\n     *\n     * ```solidity\n     * function _approve(address owner, address spender, uint256 value, bool) internal virtual override {\n     *     super._approve(owner, spender, value, true);\n     * }\n     * ```\n     *\n     * Requirements are the same as {_approve}.\n     */\n    function _approve(address owner, address spender, uint256 value, bool emitEvent) internal virtual {\n        ERC20Storage storage $ = _getERC20Storage();\n        if (owner == address(0)) {\n            revert ERC20InvalidApprover(address(0));\n        }\n        if (spender == address(0)) {\n            revert ERC20InvalidSpender(address(0));\n        }\n        $._allowances[owner][spender] = value;\n        if (emitEvent) {\n            emit Approval(owner, spender, value);\n        }\n    }\n\n    /**\n     * @dev Updates `owner`'s allowance for `spender` based on spent `value`.\n     *\n     * Does not update the allowance value in case of infinite allowance.\n     * Revert if not enough allowance is available.\n     *\n     * Does not emit an {Approval} event.\n     */\n    function _spendAllowance(address owner, address spender, uint256 value) internal virtual {\n        uint256 currentAllowance = allowance(owner, spender);\n        if (currentAllowance < type(uint256).max) {\n            if (currentAllowance < value) {\n                revert ERC20InsufficientAllowance(spender, currentAllowance, value);\n            }\n            unchecked {\n                _approve(owner, spender, currentAllowance - value, false);\n            }\n        }\n    }\n}\n"},"@openzeppelin/contracts-upgradeable/token/ERC20/extensions/ERC4626Upgradeable.sol":{"content":"// SPDX-License-Identifier: MIT\n// OpenZeppelin Contracts (last updated v5.5.0) (token/ERC20/extensions/ERC4626.sol)\n\npragma solidity ^0.8.24;\n\nimport {IERC20} from \"@openzeppelin/contracts/token/ERC20/IERC20.sol\";\nimport {IERC20Metadata} from \"@openzeppelin/contracts/token/ERC20/extensions/IERC20Metadata.sol\";\nimport {ERC20Upgradeable} from \"../ERC20Upgradeable.sol\";\nimport {SafeERC20} from \"@openzeppelin/contracts/token/ERC20/utils/SafeERC20.sol\";\nimport {IERC4626} from \"@openzeppelin/contracts/interfaces/IERC4626.sol\";\nimport {LowLevelCall} from \"@openzeppelin/contracts/utils/LowLevelCall.sol\";\nimport {Memory} from \"@openzeppelin/contracts/utils/Memory.sol\";\nimport {Math} from \"@openzeppelin/contracts/utils/math/Math.sol\";\nimport {Initializable} from \"@openzeppelin/contracts/proxy/utils/Initializable.sol\";\n\n/**\n * @dev Implementation of the ERC-4626 \"Tokenized Vault Standard\" as defined in\n * https://eips.ethereum.org/EIPS/eip-4626[ERC-4626].\n *\n * This extension allows the minting and burning of \"shares\" (represented using the ERC-20 inheritance) in exchange for\n * underlying \"assets\" through standardized {deposit}, {mint}, {redeem} and {burn} workflows. This contract extends\n * the ERC-20 standard. Any additional extensions included along it would affect the \"shares\" token represented by this\n * contract and not the \"assets\" token which is an independent contract.\n *\n * [CAUTION]\n * ====\n * In empty (or nearly empty) ERC-4626 vaults, deposits are at high risk of being stolen through frontrunning\n * with a \"donation\" to the vault that inflates the price of a share. This is variously known as a donation or inflation\n * attack and is essentially a problem of slippage. Vault deployers can protect against this attack by making an initial\n * deposit of a non-trivial amount of the asset, such that price manipulation becomes infeasible. Withdrawals may\n * similarly be affected by slippage. Users can protect against this attack as well as unexpected slippage in general by\n * verifying the amount received is as expected, using a wrapper that performs these checks such as\n * https://github.com/fei-protocol/ERC4626#erc4626router-and-base[ERC4626Router].\n *\n * Since v4.9, this implementation introduces configurable virtual assets and shares to help developers mitigate that risk.\n * The `_decimalsOffset()` corresponds to an offset in the decimal representation between the underlying asset's decimals\n * and the vault decimals. This offset also determines the rate of virtual shares to virtual assets in the vault, which\n * itself determines the initial exchange rate. While not fully preventing the attack, analysis shows that the default\n * offset (0) makes it non-profitable even if an attacker is able to capture value from multiple user deposits, as a result\n * of the value being captured by the virtual shares (out of the attacker's donation) matching the attacker's expected gains.\n * With a larger offset, the attack becomes orders of magnitude more expensive than it is profitable. More details about the\n * underlying math can be found xref:ROOT:erc4626.adoc#inflation-attack[here].\n *\n * The drawback of this approach is that the virtual shares do capture (a very small) part of the value being accrued\n * to the vault. Also, if the vault experiences losses, the users try to exit the vault, the virtual shares and assets\n * will cause the first user to exit to experience reduced losses in detriment to the last users that will experience\n * bigger losses. Developers willing to revert back to the pre-v4.9 behavior just need to override the\n * `_convertToShares` and `_convertToAssets` functions.\n *\n * To learn more, check out our xref:ROOT:erc4626.adoc[ERC-4626 guide].\n * ====\n *\n * [NOTE]\n * ====\n * When overriding this contract, some elements must be considered:\n *\n * * When overriding the behavior of the deposit or withdraw mechanisms, it is recommended to override the internal\n * functions. Overriding {_deposit} automatically affects both {deposit} and {mint}. Similarly, overriding {_withdraw}\n * automatically affects both {withdraw} and {redeem}. Overall it is not recommended to override the public facing\n * functions since that could lead to inconsistent behaviors between the {deposit} and {mint} or between {withdraw} and\n * {redeem}, which is documented to have lead to loss of funds.\n *\n * * Overrides to the deposit or withdraw mechanism must be reflected in the preview functions as well.\n *\n * * {maxWithdraw} depends on {maxRedeem}. Therefore, overriding {maxRedeem} only is enough. On the other hand,\n * overriding {maxWithdraw} only would have no effect on {maxRedeem}, and could create an inconsistency between the two\n * functions.\n *\n * * If {previewRedeem} is overridden to revert, {maxWithdraw} must be overridden as necessary to ensure it\n * always return successfully.\n * ====\n */\nabstract contract ERC4626Upgradeable is Initializable, ERC20Upgradeable, IERC4626 {\n    using Math for uint256;\n\n    /// @custom:storage-location erc7201:openzeppelin.storage.ERC4626\n    struct ERC4626Storage {\n        IERC20 _asset;\n        uint8 _underlyingDecimals;\n    }\n\n    // keccak256(abi.encode(uint256(keccak256(\"openzeppelin.storage.ERC4626\")) - 1)) & ~bytes32(uint256(0xff))\n    bytes32 private constant ERC4626StorageLocation = 0x0773e532dfede91f04b12a73d3d2acd361424f41f76b4fb79f090161e36b4e00;\n\n    function _getERC4626Storage() private pure returns (ERC4626Storage storage $) {\n        assembly {\n            $.slot := ERC4626StorageLocation\n        }\n    }\n\n    /**\n     * @dev Attempted to deposit more assets than the max amount for `receiver`.\n     */\n    error ERC4626ExceededMaxDeposit(address receiver, uint256 assets, uint256 max);\n\n    /**\n     * @dev Attempted to mint more shares than the max amount for `receiver`.\n     */\n    error ERC4626ExceededMaxMint(address receiver, uint256 shares, uint256 max);\n\n    /**\n     * @dev Attempted to withdraw more assets than the max amount for `receiver`.\n     */\n    error ERC4626ExceededMaxWithdraw(address owner, uint256 assets, uint256 max);\n\n    /**\n     * @dev Attempted to redeem more shares than the max amount for `receiver`.\n     */\n    error ERC4626ExceededMaxRedeem(address owner, uint256 shares, uint256 max);\n\n    /**\n     * @dev Set the underlying asset contract. This must be an ERC20-compatible contract (ERC-20 or ERC-777).\n     */\n    function __ERC4626_init(IERC20 asset_) internal onlyInitializing {\n        __ERC4626_init_unchained(asset_);\n    }\n\n    function __ERC4626_init_unchained(IERC20 asset_) internal onlyInitializing {\n        ERC4626Storage storage $ = _getERC4626Storage();\n        (bool success, uint8 assetDecimals) = _tryGetAssetDecimals(asset_);\n        $._underlyingDecimals = success ? assetDecimals : 18;\n        $._asset = asset_;\n    }\n\n    /**\n     * @dev Attempts to fetch the asset decimals. A return value of false indicates that the attempt failed in some way.\n     */\n    function _tryGetAssetDecimals(IERC20 asset_) private view returns (bool ok, uint8 assetDecimals) {\n        Memory.Pointer ptr = Memory.getFreeMemoryPointer();\n        (bool success, bytes32 returnedDecimals, ) = LowLevelCall.staticcallReturn64Bytes(\n            address(asset_),\n            abi.encodeCall(IERC20Metadata.decimals, ())\n        );\n        Memory.setFreeMemoryPointer(ptr);\n\n        return\n            (success && LowLevelCall.returnDataSize() >= 32 && uint256(returnedDecimals) <= type(uint8).max)\n                ? (true, uint8(uint256(returnedDecimals)))\n                : (false, 0);\n    }\n\n    /**\n     * @dev Decimals are computed by adding the decimal offset on top of the underlying asset's decimals. This\n     * \"original\" value is cached during construction of the vault contract. If this read operation fails (e.g., the\n     * asset has not been created yet), a default of 18 is used to represent the underlying asset's decimals.\n     *\n     * See {IERC20Metadata-decimals}.\n     */\n    function decimals() public view virtual override(IERC20Metadata, ERC20Upgradeable) returns (uint8) {\n        ERC4626Storage storage $ = _getERC4626Storage();\n        return $._underlyingDecimals + _decimalsOffset();\n    }\n\n    /// @inheritdoc IERC4626\n    function asset() public view virtual returns (address) {\n        ERC4626Storage storage $ = _getERC4626Storage();\n        return address($._asset);\n    }\n\n    /// @inheritdoc IERC4626\n    function totalAssets() public view virtual returns (uint256) {\n        return IERC20(asset()).balanceOf(address(this));\n    }\n\n    /// @inheritdoc IERC4626\n    function convertToShares(uint256 assets) public view virtual returns (uint256) {\n        return _convertToShares(assets, Math.Rounding.Floor);\n    }\n\n    /// @inheritdoc IERC4626\n    function convertToAssets(uint256 shares) public view virtual returns (uint256) {\n        return _convertToAssets(shares, Math.Rounding.Floor);\n    }\n\n    /// @inheritdoc IERC4626\n    function maxDeposit(address) public view virtual returns (uint256) {\n        return type(uint256).max;\n    }\n\n    /// @inheritdoc IERC4626\n    function maxMint(address) public view virtual returns (uint256) {\n        return type(uint256).max;\n    }\n\n    /// @inheritdoc IERC4626\n    function maxWithdraw(address owner) public view virtual returns (uint256) {\n        return previewRedeem(maxRedeem(owner));\n    }\n\n    /// @inheritdoc IERC4626\n    function maxRedeem(address owner) public view virtual returns (uint256) {\n        return balanceOf(owner);\n    }\n\n    /// @inheritdoc IERC4626\n    function previewDeposit(uint256 assets) public view virtual returns (uint256) {\n        return _convertToShares(assets, Math.Rounding.Floor);\n    }\n\n    /// @inheritdoc IERC4626\n    function previewMint(uint256 shares) public view virtual returns (uint256) {\n        return _convertToAssets(shares, Math.Rounding.Ceil);\n    }\n\n    /// @inheritdoc IERC4626\n    function previewWithdraw(uint256 assets) public view virtual returns (uint256) {\n        return _convertToShares(assets, Math.Rounding.Ceil);\n    }\n\n    /// @inheritdoc IERC4626\n    function previewRedeem(uint256 shares) public view virtual returns (uint256) {\n        return _convertToAssets(shares, Math.Rounding.Floor);\n    }\n\n    /// @inheritdoc IERC4626\n    function deposit(uint256 assets, address receiver) public virtual returns (uint256) {\n        uint256 maxAssets = maxDeposit(receiver);\n        if (assets > maxAssets) {\n            revert ERC4626ExceededMaxDeposit(receiver, assets, maxAssets);\n        }\n\n        uint256 shares = previewDeposit(assets);\n        _deposit(_msgSender(), receiver, assets, shares);\n\n        return shares;\n    }\n\n    /// @inheritdoc IERC4626\n    function mint(uint256 shares, address receiver) public virtual returns (uint256) {\n        uint256 maxShares = maxMint(receiver);\n        if (shares > maxShares) {\n            revert ERC4626ExceededMaxMint(receiver, shares, maxShares);\n        }\n\n        uint256 assets = previewMint(shares);\n        _deposit(_msgSender(), receiver, assets, shares);\n\n        return assets;\n    }\n\n    /// @inheritdoc IERC4626\n    function withdraw(uint256 assets, address receiver, address owner) public virtual returns (uint256) {\n        uint256 maxAssets = maxWithdraw(owner);\n        if (assets > maxAssets) {\n            revert ERC4626ExceededMaxWithdraw(owner, assets, maxAssets);\n        }\n\n        uint256 shares = previewWithdraw(assets);\n        _withdraw(_msgSender(), receiver, owner, assets, shares);\n\n        return shares;\n    }\n\n    /// @inheritdoc IERC4626\n    function redeem(uint256 shares, address receiver, address owner) public virtual returns (uint256) {\n        uint256 maxShares = maxRedeem(owner);\n        if (shares > maxShares) {\n            revert ERC4626ExceededMaxRedeem(owner, shares, maxShares);\n        }\n\n        uint256 assets = previewRedeem(shares);\n        _withdraw(_msgSender(), receiver, owner, assets, shares);\n\n        return assets;\n    }\n\n    /**\n     * @dev Internal conversion function (from assets to shares) with support for rounding direction.\n     */\n    function _convertToShares(uint256 assets, Math.Rounding rounding) internal view virtual returns (uint256) {\n        return assets.mulDiv(totalSupply() + 10 ** _decimalsOffset(), totalAssets() + 1, rounding);\n    }\n\n    /**\n     * @dev Internal conversion function (from shares to assets) with support for rounding direction.\n     */\n    function _convertToAssets(uint256 shares, Math.Rounding rounding) internal view virtual returns (uint256) {\n        return shares.mulDiv(totalAssets() + 1, totalSupply() + 10 ** _decimalsOffset(), rounding);\n    }\n\n    /**\n     * @dev Deposit/mint common workflow.\n     */\n    function _deposit(address caller, address receiver, uint256 assets, uint256 shares) internal virtual {\n        // If asset() is ERC-777, `transferFrom` can trigger a reentrancy BEFORE the transfer happens through the\n        // `tokensToSend` hook. On the other hand, the `tokenReceived` hook, that is triggered after the transfer,\n        // calls the vault, which is assumed not malicious.\n        //\n        // Conclusion: we need to do the transfer before we mint so that any reentrancy would happen before the\n        // assets are transferred and before the shares are minted, which is a valid state.\n        // slither-disable-next-line reentrancy-no-eth\n        SafeERC20.safeTransferFrom(IERC20(asset()), caller, address(this), assets);\n        _mint(receiver, shares);\n\n        emit Deposit(caller, receiver, assets, shares);\n    }\n\n    /**\n     * @dev Withdraw/redeem common workflow.\n     */\n    function _withdraw(\n        address caller,\n        address receiver,\n        address owner,\n        uint256 assets,\n        uint256 shares\n    ) internal virtual {\n        if (caller != owner) {\n            _spendAllowance(owner, caller, shares);\n        }\n\n        // If asset() is ERC-777, `transfer` can trigger a reentrancy AFTER the transfer happens through the\n        // `tokensReceived` hook. On the other hand, the `tokensToSend` hook, that is triggered before the transfer,\n        // calls the vault, which is assumed not malicious.\n        //\n        // Conclusion: we need to do the transfer after the burn so that any reentrancy would happen after the\n        // shares are burned and after the assets are transferred, which is a valid state.\n        _burn(owner, shares);\n        SafeERC20.safeTransfer(IERC20(asset()), receiver, assets);\n\n        emit Withdraw(caller, receiver, owner, assets, shares);\n    }\n\n    function _decimalsOffset() internal view virtual returns (uint8) {\n        return 0;\n    }\n}\n"},"@openzeppelin/contracts-upgradeable/utils/ContextUpgradeable.sol":{"content":"// SPDX-License-Identifier: MIT\n// OpenZeppelin Contracts (last updated v5.0.1) (utils/Context.sol)\n\npragma solidity ^0.8.20;\nimport {Initializable} from \"@openzeppelin/contracts/proxy/utils/Initializable.sol\";\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 ContextUpgradeable is Initializable {\n    function __Context_init() internal onlyInitializing {\n    }\n\n    function __Context_init_unchained() internal onlyInitializing {\n    }\n    function _msgSender() internal view virtual returns (address) {\n        return msg.sender;\n    }\n\n    function _msgData() internal view virtual returns (bytes calldata) {\n        return msg.data;\n    }\n\n    function _contextSuffixLength() internal view virtual returns (uint256) {\n        return 0;\n    }\n}\n"},"@openzeppelin/contracts/access/manager/AccessManager.sol":{"content":"// SPDX-License-Identifier: MIT\n// OpenZeppelin Contracts (last updated v5.5.0) (access/manager/AccessManager.sol)\n\npragma solidity ^0.8.20;\n\nimport {IAccessManager} from \"./IAccessManager.sol\";\nimport {IAccessManaged} from \"./IAccessManaged.sol\";\nimport {Address} from \"../../utils/Address.sol\";\nimport {Context} from \"../../utils/Context.sol\";\nimport {Multicall} from \"../../utils/Multicall.sol\";\nimport {Math} from \"../../utils/math/Math.sol\";\nimport {Time} from \"../../utils/types/Time.sol\";\nimport {Hashes} from \"../../utils/cryptography/Hashes.sol\";\n\n/**\n * @dev AccessManager is a central contract to store the permissions of a system.\n *\n * A smart contract under the control of an AccessManager instance is known as a target, and will inherit from the\n * {AccessManaged} contract, be connected to this contract as its manager and implement the {AccessManaged-restricted}\n * modifier on a set of functions selected to be permissioned. Note that any function without this setup won't be\n * effectively restricted.\n *\n * The restriction rules for such functions are defined in terms of \"roles\" identified by an `uint64` and scoped\n * by target (`address`) and function selectors (`bytes4`). These roles are stored in this contract and can be\n * configured by admins (`ADMIN_ROLE` members) after a delay (see {getTargetAdminDelay}).\n *\n * For each target contract, admins can configure the following without any delay:\n *\n * * The target's {AccessManaged-authority} via {updateAuthority}.\n * * Close or open a target via {setTargetClosed} keeping the permissions intact.\n * * The roles that are allowed (or disallowed) to call a given function (identified by its selector) through {setTargetFunctionRole}.\n *\n * By default every address is member of the `PUBLIC_ROLE` and every target function is restricted to the `ADMIN_ROLE` until configured otherwise.\n * Additionally, each role has the following configuration options restricted to this manager's admins:\n *\n * * A role's admin role via {setRoleAdmin} who can grant or revoke roles.\n * * A role's guardian role via {setRoleGuardian} who's allowed to cancel operations.\n * * A delay in which a role takes effect after being granted through {setGrantDelay}.\n * * A delay of any target's admin action via {setTargetAdminDelay}.\n * * A role label for discoverability purposes with {labelRole}.\n *\n * Any account can be added and removed into any number of these roles by using the {grantRole} and {revokeRole} functions\n * restricted to each role's admin (see {getRoleAdmin}).\n *\n * Since all the permissions of the managed system can be modified by the admins of this instance, it is expected that\n * they will be highly secured (e.g., a multisig or a well-configured DAO).\n *\n * NOTE: This contract implements a form of the {IAuthority} interface, but {canCall} has additional return data so it\n * doesn't inherit `IAuthority`. It is however compatible with the `IAuthority` interface since the first 32 bytes of\n * the return data are a boolean as expected by that interface.\n *\n * NOTE: Systems that implement other access control mechanisms (for example using {Ownable}) can be paired with an\n * {AccessManager} by transferring permissions (ownership in the case of {Ownable}) directly to the {AccessManager}.\n * Users will be able to interact with these contracts through the {execute} function, following the access rules\n * registered in the {AccessManager}. Keep in mind that in that context, the msg.sender seen by restricted functions\n * will be {AccessManager} itself.\n *\n * WARNING: When granting permissions over an {Ownable} or {AccessControl} contract to an {AccessManager}, be very\n * mindful of the danger associated with functions such as {Ownable-renounceOwnership} or\n * {AccessControl-renounceRole}.\n */\ncontract AccessManager is Context, Multicall, IAccessManager {\n    using Time for *;\n\n    // Structure that stores the details for a target contract.\n    struct TargetConfig {\n        mapping(bytes4 selector => uint64 roleId) allowedRoles;\n        Time.Delay adminDelay;\n        bool closed;\n    }\n\n    // Structure that stores the details for a role/account pair. This structure fits into a single slot.\n    struct Access {\n        // Timepoint at which the user gets the permission.\n        // If this is either 0 or in the future, then the role permission is not available.\n        uint48 since;\n        // Delay for execution. Only applies to restricted() / execute() calls.\n        Time.Delay delay;\n    }\n\n    // Structure that stores the details of a role.\n    struct Role {\n        // Members of the role.\n        mapping(address user => Access access) members;\n        // Admin who can grant or revoke permissions.\n        uint64 admin;\n        // Guardian who can cancel operations targeting functions that need this role.\n        uint64 guardian;\n        // Delay in which the role takes effect after being granted.\n        Time.Delay grantDelay;\n    }\n\n    // Structure that stores the details for a scheduled operation. This structure fits into a single slot.\n    struct Schedule {\n        // Moment at which the operation can be executed.\n        uint48 timepoint;\n        // Operation nonce to allow third-party contracts to identify the operation.\n        uint32 nonce;\n    }\n\n    /**\n     * @dev The identifier of the admin role. Required to perform most configuration operations including\n     * other roles' management and target restrictions.\n     */\n    uint64 public constant ADMIN_ROLE = type(uint64).min; // 0\n\n    /**\n     * @dev The identifier of the public role. Automatically granted to all addresses with no delay.\n     */\n    uint64 public constant PUBLIC_ROLE = type(uint64).max; // 2**64-1\n\n    mapping(address target => TargetConfig mode) private _targets;\n    mapping(uint64 roleId => Role) private _roles;\n    mapping(bytes32 operationId => Schedule) private _schedules;\n\n    // Used to identify operations that are currently being executed via {execute}.\n    // This should be transient storage when supported by the EVM.\n    bytes32 private _executionId;\n\n    /**\n     * @dev Check that the caller is authorized to perform the operation.\n     * See {AccessManager} description for a detailed breakdown of the authorization logic.\n     */\n    modifier onlyAuthorized() {\n        _checkAuthorized();\n        _;\n    }\n\n    constructor(address initialAdmin) {\n        if (initialAdmin == address(0)) {\n            revert AccessManagerInvalidInitialAdmin(address(0));\n        }\n\n        // admin is active immediately and without any execution delay.\n        _grantRole(ADMIN_ROLE, initialAdmin, 0, 0);\n    }\n\n    // =================================================== GETTERS ====================================================\n    /// @inheritdoc IAccessManager\n    function canCall(\n        address caller,\n        address target,\n        bytes4 selector\n    ) public view virtual returns (bool immediate, uint32 delay) {\n        if (isTargetClosed(target)) {\n            return (false, 0);\n        } else if (caller == address(this)) {\n            // Caller is AccessManager, this means the call was sent through {execute} and it already checked\n            // permissions. We verify that the call \"identifier\", which is set during {execute}, is correct.\n            return (_isExecuting(target, selector), 0);\n        } else {\n            uint64 roleId = getTargetFunctionRole(target, selector);\n            (bool isMember, uint32 currentDelay) = hasRole(roleId, caller);\n            return isMember ? (currentDelay == 0, currentDelay) : (false, 0);\n        }\n    }\n\n    /// @inheritdoc IAccessManager\n    function expiration() public view virtual returns (uint32) {\n        return 1 weeks;\n    }\n\n    /// @inheritdoc IAccessManager\n    function minSetback() public view virtual returns (uint32) {\n        return 5 days;\n    }\n\n    /// @inheritdoc IAccessManager\n    function isTargetClosed(address target) public view virtual returns (bool) {\n        return _targets[target].closed;\n    }\n\n    /// @inheritdoc IAccessManager\n    function getTargetFunctionRole(address target, bytes4 selector) public view virtual returns (uint64) {\n        return _targets[target].allowedRoles[selector];\n    }\n\n    /// @inheritdoc IAccessManager\n    function getTargetAdminDelay(address target) public view virtual returns (uint32) {\n        return _targets[target].adminDelay.get();\n    }\n\n    /// @inheritdoc IAccessManager\n    function getRoleAdmin(uint64 roleId) public view virtual returns (uint64) {\n        return _roles[roleId].admin;\n    }\n\n    /// @inheritdoc IAccessManager\n    function getRoleGuardian(uint64 roleId) public view virtual returns (uint64) {\n        return _roles[roleId].guardian;\n    }\n\n    /// @inheritdoc IAccessManager\n    function getRoleGrantDelay(uint64 roleId) public view virtual returns (uint32) {\n        return _roles[roleId].grantDelay.get();\n    }\n\n    /// @inheritdoc IAccessManager\n    function getAccess(\n        uint64 roleId,\n        address account\n    ) public view virtual returns (uint48 since, uint32 currentDelay, uint32 pendingDelay, uint48 effect) {\n        Access storage access = _roles[roleId].members[account];\n\n        since = access.since;\n        (currentDelay, pendingDelay, effect) = access.delay.getFull();\n\n        return (since, currentDelay, pendingDelay, effect);\n    }\n\n    /// @inheritdoc IAccessManager\n    function hasRole(\n        uint64 roleId,\n        address account\n    ) public view virtual returns (bool isMember, uint32 executionDelay) {\n        if (roleId == PUBLIC_ROLE) {\n            return (true, 0);\n        } else {\n            (uint48 hasRoleSince, uint32 currentDelay, , ) = getAccess(roleId, account);\n            return (hasRoleSince != 0 && hasRoleSince <= Time.timestamp(), currentDelay);\n        }\n    }\n\n    // =============================================== ROLE MANAGEMENT ===============================================\n    /// @inheritdoc IAccessManager\n    function labelRole(uint64 roleId, string calldata label) public virtual onlyAuthorized {\n        if (roleId == ADMIN_ROLE || roleId == PUBLIC_ROLE) {\n            revert AccessManagerLockedRole(roleId);\n        }\n        emit RoleLabel(roleId, label);\n    }\n\n    /// @inheritdoc IAccessManager\n    function grantRole(uint64 roleId, address account, uint32 executionDelay) public virtual onlyAuthorized {\n        _grantRole(roleId, account, getRoleGrantDelay(roleId), executionDelay);\n    }\n\n    /// @inheritdoc IAccessManager\n    function revokeRole(uint64 roleId, address account) public virtual onlyAuthorized {\n        _revokeRole(roleId, account);\n    }\n\n    /// @inheritdoc IAccessManager\n    function renounceRole(uint64 roleId, address callerConfirmation) public virtual {\n        if (callerConfirmation != _msgSender()) {\n            revert AccessManagerBadConfirmation();\n        }\n        _revokeRole(roleId, callerConfirmation);\n    }\n\n    /// @inheritdoc IAccessManager\n    function setRoleAdmin(uint64 roleId, uint64 admin) public virtual onlyAuthorized {\n        _setRoleAdmin(roleId, admin);\n    }\n\n    /// @inheritdoc IAccessManager\n    function setRoleGuardian(uint64 roleId, uint64 guardian) public virtual onlyAuthorized {\n        _setRoleGuardian(roleId, guardian);\n    }\n\n    /// @inheritdoc IAccessManager\n    function setGrantDelay(uint64 roleId, uint32 newDelay) public virtual onlyAuthorized {\n        _setGrantDelay(roleId, newDelay);\n    }\n\n    /**\n     * @dev Internal version of {grantRole} without access control. Returns true if the role was newly granted.\n     *\n     * Emits a {RoleGranted} event.\n     */\n    function _grantRole(\n        uint64 roleId,\n        address account,\n        uint32 grantDelay,\n        uint32 executionDelay\n    ) internal virtual returns (bool) {\n        if (roleId == PUBLIC_ROLE) {\n            revert AccessManagerLockedRole(roleId);\n        }\n\n        bool newMember = _roles[roleId].members[account].since == 0;\n        uint48 since;\n\n        if (newMember) {\n            since = Time.timestamp() + grantDelay;\n            _roles[roleId].members[account] = Access({since: since, delay: executionDelay.toDelay()});\n        } else {\n            // No setback here. Value can be reset by doing revoke + grant, effectively allowing the admin to perform\n            // any change to the execution delay within the duration of the role admin delay.\n            (_roles[roleId].members[account].delay, since) = _roles[roleId].members[account].delay.withUpdate(\n                executionDelay,\n                0\n            );\n        }\n\n        emit RoleGranted(roleId, account, executionDelay, since, newMember);\n        return newMember;\n    }\n\n    /**\n     * @dev Internal version of {revokeRole} without access control. This logic is also used by {renounceRole}.\n     * Returns true if the role was previously granted.\n     *\n     * Emits a {RoleRevoked} event if the account had the role.\n     */\n    function _revokeRole(uint64 roleId, address account) internal virtual returns (bool) {\n        if (roleId == PUBLIC_ROLE) {\n            revert AccessManagerLockedRole(roleId);\n        }\n\n        if (_roles[roleId].members[account].since == 0) {\n            return false;\n        }\n\n        delete _roles[roleId].members[account];\n\n        emit RoleRevoked(roleId, account);\n        return true;\n    }\n\n    /**\n     * @dev Internal version of {setRoleAdmin} without access control.\n     *\n     * Emits a {RoleAdminChanged} event.\n     *\n     * NOTE: Setting the admin role as the `PUBLIC_ROLE` is allowed, but it will effectively allow\n     * anyone to set grant or revoke such role.\n     */\n    function _setRoleAdmin(uint64 roleId, uint64 admin) internal virtual {\n        if (roleId == ADMIN_ROLE || roleId == PUBLIC_ROLE) {\n            revert AccessManagerLockedRole(roleId);\n        }\n\n        _roles[roleId].admin = admin;\n\n        emit RoleAdminChanged(roleId, admin);\n    }\n\n    /**\n     * @dev Internal version of {setRoleGuardian} without access control.\n     *\n     * Emits a {RoleGuardianChanged} event.\n     *\n     * NOTE: Setting the guardian role as the `PUBLIC_ROLE` is allowed, but it will effectively allow\n     * anyone to cancel any scheduled operation for such role.\n     */\n    function _setRoleGuardian(uint64 roleId, uint64 guardian) internal virtual {\n        if (roleId == ADMIN_ROLE || roleId == PUBLIC_ROLE) {\n            revert AccessManagerLockedRole(roleId);\n        }\n\n        _roles[roleId].guardian = guardian;\n\n        emit RoleGuardianChanged(roleId, guardian);\n    }\n\n    /**\n     * @dev Internal version of {setGrantDelay} without access control.\n     *\n     * Emits a {RoleGrantDelayChanged} event.\n     */\n    function _setGrantDelay(uint64 roleId, uint32 newDelay) internal virtual {\n        if (roleId == PUBLIC_ROLE) {\n            revert AccessManagerLockedRole(roleId);\n        }\n\n        uint48 effect;\n        (_roles[roleId].grantDelay, effect) = _roles[roleId].grantDelay.withUpdate(newDelay, minSetback());\n\n        emit RoleGrantDelayChanged(roleId, newDelay, effect);\n    }\n\n    // ============================================= FUNCTION MANAGEMENT ==============================================\n    /// @inheritdoc IAccessManager\n    function setTargetFunctionRole(\n        address target,\n        bytes4[] calldata selectors,\n        uint64 roleId\n    ) public virtual onlyAuthorized {\n        for (uint256 i = 0; i < selectors.length; ++i) {\n            _setTargetFunctionRole(target, selectors[i], roleId);\n        }\n    }\n\n    /**\n     * @dev Internal version of {setTargetFunctionRole} without access control.\n     *\n     * Emits a {TargetFunctionRoleUpdated} event.\n     */\n    function _setTargetFunctionRole(address target, bytes4 selector, uint64 roleId) internal virtual {\n        _targets[target].allowedRoles[selector] = roleId;\n        emit TargetFunctionRoleUpdated(target, selector, roleId);\n    }\n\n    /// @inheritdoc IAccessManager\n    function setTargetAdminDelay(address target, uint32 newDelay) public virtual onlyAuthorized {\n        _setTargetAdminDelay(target, newDelay);\n    }\n\n    /**\n     * @dev Internal version of {setTargetAdminDelay} without access control.\n     *\n     * Emits a {TargetAdminDelayUpdated} event.\n     */\n    function _setTargetAdminDelay(address target, uint32 newDelay) internal virtual {\n        uint48 effect;\n        (_targets[target].adminDelay, effect) = _targets[target].adminDelay.withUpdate(newDelay, minSetback());\n\n        emit TargetAdminDelayUpdated(target, newDelay, effect);\n    }\n\n    // =============================================== MODE MANAGEMENT ================================================\n    /// @inheritdoc IAccessManager\n    function setTargetClosed(address target, bool closed) public virtual onlyAuthorized {\n        _setTargetClosed(target, closed);\n    }\n\n    /**\n     * @dev Set the closed flag for a contract. This is an internal setter with no access restrictions.\n     *\n     * Emits a {TargetClosed} event.\n     */\n    function _setTargetClosed(address target, bool closed) internal virtual {\n        _targets[target].closed = closed;\n        emit TargetClosed(target, closed);\n    }\n\n    // ============================================== DELAYED OPERATIONS ==============================================\n    /// @inheritdoc IAccessManager\n    function getSchedule(bytes32 id) public view virtual returns (uint48) {\n        uint48 timepoint = _schedules[id].timepoint;\n        return _isExpired(timepoint) ? 0 : timepoint;\n    }\n\n    /// @inheritdoc IAccessManager\n    function getNonce(bytes32 id) public view virtual returns (uint32) {\n        return _schedules[id].nonce;\n    }\n\n    /// @inheritdoc IAccessManager\n    function schedule(\n        address target,\n        bytes calldata data,\n        uint48 when\n    ) public virtual returns (bytes32 operationId, uint32 nonce) {\n        address caller = _msgSender();\n\n        // Fetch restrictions that apply to the caller on the targeted function\n        (, uint32 setback) = _canCallExtended(caller, target, data);\n\n        uint48 minWhen = Time.timestamp() + setback;\n\n        // If call with delay is not authorized, or if requested timing is too soon, revert\n        if (setback == 0 || (when > 0 && when < minWhen)) {\n            revert AccessManagerUnauthorizedCall(caller, target, _checkSelector(data));\n        }\n\n        // Reuse variable due to stack too deep\n        when = uint48(Math.max(when, minWhen)); // cast is safe: both inputs are uint48\n\n        // If caller is authorised, schedule operation\n        operationId = hashOperation(caller, target, data);\n\n        _checkNotScheduled(operationId);\n\n        unchecked {\n            // It's not feasible to overflow the nonce in less than 1000 years\n            nonce = _schedules[operationId].nonce + 1;\n        }\n        _schedules[operationId].timepoint = when;\n        _schedules[operationId].nonce = nonce;\n        emit OperationScheduled(operationId, nonce, when, caller, target, data);\n\n        // Using named return values because otherwise we get stack too deep\n    }\n\n    /**\n     * @dev Reverts if the operation is currently scheduled and has not expired.\n     *\n     * NOTE: This function was introduced due to stack too deep errors in schedule.\n     */\n    function _checkNotScheduled(bytes32 operationId) private view {\n        uint48 prevTimepoint = _schedules[operationId].timepoint;\n        if (prevTimepoint != 0 && !_isExpired(prevTimepoint)) {\n            revert AccessManagerAlreadyScheduled(operationId);\n        }\n    }\n\n    /// @inheritdoc IAccessManager\n    // Reentrancy is not an issue because permissions are checked on msg.sender. Additionally,\n    // _consumeScheduledOp guarantees a scheduled operation is only executed once.\n    // slither-disable-next-line reentrancy-no-eth\n    function execute(address target, bytes calldata data) public payable virtual returns (uint32) {\n        address caller = _msgSender();\n\n        // Fetch restrictions that apply to the caller on the targeted function\n        (bool immediate, uint32 setback) = _canCallExtended(caller, target, data);\n\n        // If call is not authorized, revert\n        if (!immediate && setback == 0) {\n            revert AccessManagerUnauthorizedCall(caller, target, _checkSelector(data));\n        }\n\n        bytes32 operationId = hashOperation(caller, target, data);\n        uint32 nonce;\n\n        // If caller is authorised, check operation was scheduled early enough\n        // Consume an available schedule even if there is no currently enforced delay\n        if (setback != 0 || getSchedule(operationId) != 0) {\n            nonce = _consumeScheduledOp(operationId);\n        }\n\n        // Mark the target and selector as authorised\n        bytes32 executionIdBefore = _executionId;\n        _executionId = _hashExecutionId(target, _checkSelector(data));\n\n        // Perform call\n        Address.functionCallWithValue(target, data, msg.value);\n\n        // Reset execute identifier\n        _executionId = executionIdBefore;\n\n        return nonce;\n    }\n\n    /// @inheritdoc IAccessManager\n    function cancel(address caller, address target, bytes calldata data) public virtual returns (uint32) {\n        address msgsender = _msgSender();\n        bytes4 selector = _checkSelector(data);\n\n        bytes32 operationId = hashOperation(caller, target, data);\n        if (_schedules[operationId].timepoint == 0) {\n            revert AccessManagerNotScheduled(operationId);\n        } else if (caller != msgsender) {\n            // calls can only be canceled by the account that scheduled them, a global admin, or by a guardian of the required role.\n            (bool isAdmin, ) = hasRole(ADMIN_ROLE, msgsender);\n            (bool isGuardian, ) = hasRole(getRoleGuardian(getTargetFunctionRole(target, selector)), msgsender);\n            if (!isAdmin && !isGuardian) {\n                revert AccessManagerUnauthorizedCancel(msgsender, caller, target, selector);\n            }\n        }\n\n        delete _schedules[operationId].timepoint; // reset the timepoint, keep the nonce\n        uint32 nonce = _schedules[operationId].nonce;\n        emit OperationCanceled(operationId, nonce);\n\n        return nonce;\n    }\n\n    /// @inheritdoc IAccessManager\n    function consumeScheduledOp(address caller, bytes calldata data) public virtual {\n        address target = _msgSender();\n        if (IAccessManaged(target).isConsumingScheduledOp() != IAccessManaged.isConsumingScheduledOp.selector) {\n            revert AccessManagerUnauthorizedConsume(target);\n        }\n        _consumeScheduledOp(hashOperation(caller, target, data));\n    }\n\n    /**\n     * @dev Internal variant of {consumeScheduledOp} that operates on bytes32 operationId.\n     *\n     * Returns the nonce of the scheduled operation that is consumed.\n     */\n    function _consumeScheduledOp(bytes32 operationId) internal virtual returns (uint32) {\n        uint48 timepoint = _schedules[operationId].timepoint;\n        uint32 nonce = _schedules[operationId].nonce;\n\n        if (timepoint == 0) {\n            revert AccessManagerNotScheduled(operationId);\n        } else if (timepoint > Time.timestamp()) {\n            revert AccessManagerNotReady(operationId);\n        } else if (_isExpired(timepoint)) {\n            revert AccessManagerExpired(operationId);\n        }\n\n        delete _schedules[operationId].timepoint; // reset the timepoint, keep the nonce\n        emit OperationExecuted(operationId, nonce);\n\n        return nonce;\n    }\n\n    /// @inheritdoc IAccessManager\n    function hashOperation(address caller, address target, bytes calldata data) public view virtual returns (bytes32) {\n        return keccak256(abi.encode(caller, target, data));\n    }\n\n    // ==================================================== OTHERS ====================================================\n    /// @inheritdoc IAccessManager\n    function updateAuthority(address target, address newAuthority) public virtual onlyAuthorized {\n        IAccessManaged(target).setAuthority(newAuthority);\n    }\n\n    // ================================================= ADMIN LOGIC ==================================================\n    /**\n     * @dev Check if the current call is authorized according to admin and roles logic.\n     *\n     * WARNING: Carefully review the considerations of {AccessManaged-restricted} since they apply to this modifier.\n     */\n    function _checkAuthorized() private {\n        address caller = _msgSender();\n        (bool immediate, uint32 delay) = _canCallSelf(caller, _msgData());\n        if (!immediate) {\n            if (delay == 0) {\n                (, uint64 requiredRole, ) = _getAdminRestrictions(_msgData());\n                revert AccessManagerUnauthorizedAccount(caller, requiredRole);\n            } else {\n                _consumeScheduledOp(hashOperation(caller, address(this), _msgData()));\n            }\n        }\n    }\n\n    /**\n     * @dev Get the admin restrictions of a given function call based on the function and arguments involved.\n     *\n     * Returns:\n     * - bool restricted: does this data match a restricted operation\n     * - uint64: which role is this operation restricted to\n     * - uint32: minimum delay to enforce for that operation (max between operation's delay and admin's execution delay)\n     */\n    function _getAdminRestrictions(\n        bytes calldata data\n    ) private view returns (bool adminRestricted, uint64 roleAdminId, uint32 executionDelay) {\n        if (data.length < 4) {\n            return (false, 0, 0);\n        }\n\n        bytes4 selector = _checkSelector(data);\n\n        // Restricted to ADMIN with no delay beside any execution delay the caller may have\n        if (\n            selector == this.labelRole.selector ||\n            selector == this.setRoleAdmin.selector ||\n            selector == this.setRoleGuardian.selector ||\n            selector == this.setGrantDelay.selector ||\n            selector == this.setTargetAdminDelay.selector\n        ) {\n            return (true, ADMIN_ROLE, 0);\n        }\n\n        // Restricted to ADMIN with the admin delay corresponding to the target\n        if (\n            selector == this.updateAuthority.selector ||\n            selector == this.setTargetClosed.selector ||\n            selector == this.setTargetFunctionRole.selector\n        ) {\n            // First argument is a target.\n            address target = abi.decode(data[0x04:0x24], (address));\n            uint32 delay = getTargetAdminDelay(target);\n            return (true, ADMIN_ROLE, delay);\n        }\n\n        // Restricted to that role's admin with no delay beside any execution delay the caller may have.\n        if (selector == this.grantRole.selector || selector == this.revokeRole.selector) {\n            // First argument is a roleId.\n            uint64 roleId = abi.decode(data[0x04:0x24], (uint64));\n            return (true, getRoleAdmin(roleId), 0);\n        }\n\n        return (false, getTargetFunctionRole(address(this), selector), 0);\n    }\n\n    // =================================================== HELPERS ====================================================\n    /**\n     * @dev An extended version of {canCall} for internal usage that checks {_canCallSelf}\n     * when the target is this contract.\n     *\n     * Returns:\n     * - bool immediate: whether the operation can be executed immediately (with no delay)\n     * - uint32 delay: the execution delay\n     */\n    function _canCallExtended(\n        address caller,\n        address target,\n        bytes calldata data\n    ) private view returns (bool immediate, uint32 delay) {\n        if (target == address(this)) {\n            return _canCallSelf(caller, data);\n        } else {\n            return data.length < 4 ? (false, 0) : canCall(caller, target, _checkSelector(data));\n        }\n    }\n\n    /**\n     * @dev A version of {canCall} that checks for restrictions in this contract.\n     */\n    function _canCallSelf(address caller, bytes calldata data) private view returns (bool immediate, uint32 delay) {\n        if (data.length < 4) {\n            return (false, 0);\n        }\n\n        if (caller == address(this)) {\n            // Caller is AccessManager, this means the call was sent through {execute} and it already checked\n            // permissions. We verify that the call \"identifier\", which is set during {execute}, is correct.\n            return (_isExecuting(address(this), _checkSelector(data)), 0);\n        }\n\n        (bool adminRestricted, uint64 roleId, uint32 operationDelay) = _getAdminRestrictions(data);\n\n        // isTargetClosed apply to non-admin-restricted function\n        if (!adminRestricted && isTargetClosed(address(this))) {\n            return (false, 0);\n        }\n\n        (bool inRole, uint32 executionDelay) = hasRole(roleId, caller);\n        if (!inRole) {\n            return (false, 0);\n        }\n\n        // downcast is safe because both options are uint32\n        delay = uint32(Math.max(operationDelay, executionDelay));\n        return (delay == 0, delay);\n    }\n\n    /**\n     * @dev Returns true if a call with `target` and `selector` is being executed via {executed}.\n     */\n    function _isExecuting(address target, bytes4 selector) private view returns (bool) {\n        return _executionId == _hashExecutionId(target, selector);\n    }\n\n    /**\n     * @dev Returns true if a schedule timepoint is past its expiration deadline.\n     */\n    function _isExpired(uint48 timepoint) private view returns (bool) {\n        return timepoint + expiration() <= Time.timestamp();\n    }\n\n    /**\n     * @dev Extracts the selector from calldata. Panics if data is not at least 4 bytes\n     */\n    function _checkSelector(bytes calldata data) private pure returns (bytes4) {\n        return bytes4(data[0:4]);\n    }\n\n    /**\n     * @dev Hashing function for execute protection\n     */\n    function _hashExecutionId(address target, bytes4 selector) private pure returns (bytes32) {\n        return Hashes.efficientKeccak256(bytes32(uint256(uint160(target))), selector);\n    }\n}\n"},"@openzeppelin/contracts/access/manager/IAccessManaged.sol":{"content":"// SPDX-License-Identifier: MIT\n// OpenZeppelin Contracts (last updated v5.4.0) (access/manager/IAccessManaged.sol)\n\npragma solidity >=0.8.4;\n\ninterface IAccessManaged {\n    /**\n     * @dev Authority that manages this contract was updated.\n     */\n    event AuthorityUpdated(address authority);\n\n    error AccessManagedUnauthorized(address caller);\n    error AccessManagedRequiredDelay(address caller, uint32 delay);\n    error AccessManagedInvalidAuthority(address authority);\n\n    /**\n     * @dev Returns the current authority.\n     */\n    function authority() external view returns (address);\n\n    /**\n     * @dev Transfers control to a new authority. The caller must be the current authority.\n     */\n    function setAuthority(address) external;\n\n    /**\n     * @dev Returns true only in the context of a delayed restricted call, at the moment that the scheduled operation is\n     * being consumed. Prevents denial of service for delayed restricted calls in the case that the contract performs\n     * attacker controlled calls.\n     */\n    function isConsumingScheduledOp() external view returns (bytes4);\n}\n"},"@openzeppelin/contracts/access/manager/IAccessManager.sol":{"content":"// SPDX-License-Identifier: MIT\n// OpenZeppelin Contracts (last updated v5.5.0) (access/manager/IAccessManager.sol)\n\npragma solidity >=0.8.4;\n\ninterface IAccessManager {\n    /**\n     * @dev A delayed operation was scheduled.\n     */\n    event OperationScheduled(\n        bytes32 indexed operationId,\n        uint32 indexed nonce,\n        uint48 schedule,\n        address caller,\n        address target,\n        bytes data\n    );\n\n    /**\n     * @dev A scheduled operation was executed.\n     */\n    event OperationExecuted(bytes32 indexed operationId, uint32 indexed nonce);\n\n    /**\n     * @dev A scheduled operation was canceled.\n     */\n    event OperationCanceled(bytes32 indexed operationId, uint32 indexed nonce);\n\n    /**\n     * @dev Informational labelling for a roleId.\n     */\n    event RoleLabel(uint64 indexed roleId, string label);\n\n    /**\n     * @dev Emitted when `account` is granted `roleId`.\n     *\n     * NOTE: The meaning of the `since` argument depends on the `newMember` argument.\n     * If the role is granted to a new member, the `since` argument indicates when the account becomes a member of the role,\n     * otherwise it indicates the execution delay for this account and roleId is updated.\n     */\n    event RoleGranted(uint64 indexed roleId, address indexed account, uint32 delay, uint48 since, bool newMember);\n\n    /**\n     * @dev Emitted when `account` membership or `roleId` is revoked. Unlike granting, revoking is instantaneous.\n     */\n    event RoleRevoked(uint64 indexed roleId, address indexed account);\n\n    /**\n     * @dev Role acting as admin over a given `roleId` is updated.\n     */\n    event RoleAdminChanged(uint64 indexed roleId, uint64 indexed admin);\n\n    /**\n     * @dev Role acting as guardian over a given `roleId` is updated.\n     */\n    event RoleGuardianChanged(uint64 indexed roleId, uint64 indexed guardian);\n\n    /**\n     * @dev Grant delay for a given `roleId` will be updated to `delay` when `since` is reached.\n     */\n    event RoleGrantDelayChanged(uint64 indexed roleId, uint32 delay, uint48 since);\n\n    /**\n     * @dev Target mode is updated (true = closed, false = open).\n     */\n    event TargetClosed(address indexed target, bool closed);\n\n    /**\n     * @dev Role required to invoke `selector` on `target` is updated to `roleId`.\n     */\n    event TargetFunctionRoleUpdated(address indexed target, bytes4 selector, uint64 indexed roleId);\n\n    /**\n     * @dev Admin delay for a given `target` will be updated to `delay` when `since` is reached.\n     */\n    event TargetAdminDelayUpdated(address indexed target, uint32 delay, uint48 since);\n\n    error AccessManagerAlreadyScheduled(bytes32 operationId);\n    error AccessManagerNotScheduled(bytes32 operationId);\n    error AccessManagerNotReady(bytes32 operationId);\n    error AccessManagerExpired(bytes32 operationId);\n    error AccessManagerLockedRole(uint64 roleId);\n    error AccessManagerBadConfirmation();\n    error AccessManagerUnauthorizedAccount(address msgsender, uint64 roleId);\n    error AccessManagerUnauthorizedCall(address caller, address target, bytes4 selector);\n    error AccessManagerUnauthorizedConsume(address target);\n    error AccessManagerUnauthorizedCancel(address msgsender, address caller, address target, bytes4 selector);\n    error AccessManagerInvalidInitialAdmin(address initialAdmin);\n\n    /**\n     * @dev Check if an address (`caller`) is authorised to call a given function on a given contract directly (with\n     * no restriction). Additionally, it returns the delay needed to perform the call indirectly through the {schedule}\n     * & {execute} workflow.\n     *\n     * This function is usually called by the targeted contract to control immediate execution of restricted functions.\n     * Therefore we only return true if the call can be performed without any delay. If the call is subject to a\n     * previously set delay (not zero), then the function should return false and the caller should schedule the operation\n     * for future execution.\n     *\n     * If `allowed` is true, the delay can be disregarded and the operation can be immediately executed, otherwise\n     * the operation can be executed if and only if delay is greater than 0.\n     *\n     * NOTE: The IAuthority interface does not include the `uint32` delay. This is an extension of that interface that\n     * is backward compatible. Some contracts may thus ignore the second return argument. In that case they will fail\n     * to identify the indirect workflow, and will consider calls that require a delay to be forbidden.\n     *\n     * NOTE: This function does not report the permissions of the admin functions in the manager itself. These are defined by the\n     * {AccessManager} documentation.\n     */\n    function canCall(\n        address caller,\n        address target,\n        bytes4 selector\n    ) external view returns (bool allowed, uint32 delay);\n\n    /**\n     * @dev Expiration delay for scheduled proposals. Defaults to 1 week.\n     *\n     * IMPORTANT: Avoid overriding the expiration with 0. Otherwise every contract proposal will be expired immediately,\n     * disabling any scheduling usage.\n     */\n    function expiration() external view returns (uint32);\n\n    /**\n     * @dev Minimum setback for all delay updates, with the exception of execution delays. It\n     * can be increased without setback (and reset via {revokeRole} in the event of an\n     * accidental increase). Defaults to 5 days.\n     */\n    function minSetback() external view returns (uint32);\n\n    /**\n     * @dev Get whether the contract is closed disabling any access. Otherwise role permissions are applied.\n     *\n     * NOTE: When the manager itself is closed, admin functions are still accessible to avoid locking the contract.\n     */\n    function isTargetClosed(address target) external view returns (bool);\n\n    /**\n     * @dev Get the role required to call a function.\n     */\n    function getTargetFunctionRole(address target, bytes4 selector) external view returns (uint64);\n\n    /**\n     * @dev Get the admin delay for a target contract. Changes to contract configuration are subject to this delay.\n     */\n    function getTargetAdminDelay(address target) external view returns (uint32);\n\n    /**\n     * @dev Get the id of the role that acts as an admin for the given role.\n     *\n     * The admin permission is required to grant the role, revoke the role and update the execution delay to execute\n     * an operation that is restricted to this role.\n     */\n    function getRoleAdmin(uint64 roleId) external view returns (uint64);\n\n    /**\n     * @dev Get the role that acts as a guardian for a given role.\n     *\n     * The guardian permission allows canceling operations that have been scheduled under the role.\n     */\n    function getRoleGuardian(uint64 roleId) external view returns (uint64);\n\n    /**\n     * @dev Get the role current grant delay.\n     *\n     * Its value may change at any point without an event emitted following a call to {setGrantDelay}.\n     * Changes to this value, including effect timepoint are notified in advance by the {RoleGrantDelayChanged} event.\n     */\n    function getRoleGrantDelay(uint64 roleId) external view returns (uint32);\n\n    /**\n     * @dev Get the access details for a given account for a given role. These details include the timepoint at which\n     * membership becomes active, and the delay applied to all operations by this user that requires this permission\n     * level.\n     *\n     * Returns:\n     * [0] Timestamp at which the account membership becomes valid. 0 means role is not granted.\n     * [1] Current execution delay for the account.\n     * [2] Pending execution delay for the account.\n     * [3] Timestamp at which the pending execution delay will become active. 0 means no delay update is scheduled.\n     */\n    function getAccess(\n        uint64 roleId,\n        address account\n    ) external view returns (uint48 since, uint32 currentDelay, uint32 pendingDelay, uint48 effect);\n\n    /**\n     * @dev Check if a given account currently has the permission level corresponding to a given role. Note that this\n     * permission might be associated with an execution delay. {getAccess} can provide more details.\n     */\n    function hasRole(uint64 roleId, address account) external view returns (bool isMember, uint32 executionDelay);\n\n    /**\n     * @dev Give a label to a role, for improved role discoverability by UIs.\n     *\n     * Requirements:\n     *\n     * - the caller must be a global admin\n     *\n     * Emits a {RoleLabel} event.\n     */\n    function labelRole(uint64 roleId, string calldata label) external;\n\n    /**\n     * @dev Add `account` to `roleId`, or change its execution delay.\n     *\n     * This gives the account the authorization to call any function that is restricted to this role. An optional\n     * execution delay (in seconds) can be set. If that delay is non 0, the user is required to schedule any operation\n     * that is restricted to members of this role. The user will only be able to execute the operation after the delay has\n     * passed, before it has expired. During this period, admin and guardians can cancel the operation (see {cancel}).\n     *\n     * If the account has already been granted this role, the execution delay will be updated. This update is not\n     * immediate and follows the delay rules. For example, if a user currently has a delay of 3 hours, and this is\n     * called to reduce that delay to 1 hour, the new delay will take some time to take effect, enforcing that any\n     * operation executed in the 3 hours that follows this update was indeed scheduled before this update.\n     *\n     * Requirements:\n     *\n     * - the caller must be an admin for the role (see {getRoleAdmin})\n     * - granted role must not be the `PUBLIC_ROLE`\n     *\n     * Emits a {RoleGranted} event.\n     */\n    function grantRole(uint64 roleId, address account, uint32 executionDelay) external;\n\n    /**\n     * @dev Remove an account from a role, with immediate effect. If the account does not have the role, this call has\n     * no effect.\n     *\n     * Requirements:\n     *\n     * - the caller must be an admin for the role (see {getRoleAdmin})\n     * - revoked role must not be the `PUBLIC_ROLE`\n     *\n     * Emits a {RoleRevoked} event if the account had the role.\n     */\n    function revokeRole(uint64 roleId, address account) external;\n\n    /**\n     * @dev Renounce role permissions for the calling account with immediate effect. If the sender is not in\n     * the role this call has no effect.\n     *\n     * Requirements:\n     *\n     * - the caller must be `callerConfirmation`.\n     *\n     * Emits a {RoleRevoked} event if the account had the role.\n     */\n    function renounceRole(uint64 roleId, address callerConfirmation) external;\n\n    /**\n     * @dev Change admin role for a given role.\n     *\n     * Requirements:\n     *\n     * - the caller must be a global admin\n     *\n     * Emits a {RoleAdminChanged} event\n     */\n    function setRoleAdmin(uint64 roleId, uint64 admin) external;\n\n    /**\n     * @dev Change guardian role for a given role.\n     *\n     * Requirements:\n     *\n     * - the caller must be a global admin\n     *\n     * Emits a {RoleGuardianChanged} event\n     */\n    function setRoleGuardian(uint64 roleId, uint64 guardian) external;\n\n    /**\n     * @dev Update the delay for granting a `roleId`.\n     *\n     * Requirements:\n     *\n     * - the caller must be a global admin\n     *\n     * Emits a {RoleGrantDelayChanged} event.\n     */\n    function setGrantDelay(uint64 roleId, uint32 newDelay) external;\n\n    /**\n     * @dev Set the role required to call functions identified by the `selectors` in the `target` contract.\n     *\n     * Requirements:\n     *\n     * - the caller must be a global admin\n     *\n     * Emits a {TargetFunctionRoleUpdated} event per selector.\n     */\n    function setTargetFunctionRole(address target, bytes4[] calldata selectors, uint64 roleId) external;\n\n    /**\n     * @dev Set the delay for changing the configuration of a given target contract.\n     *\n     * Requirements:\n     *\n     * - the caller must be a global admin\n     *\n     * Emits a {TargetAdminDelayUpdated} event.\n     */\n    function setTargetAdminDelay(address target, uint32 newDelay) external;\n\n    /**\n     * @dev Set the closed flag for a contract.\n     *\n     * Closing the manager itself won't disable access to admin methods to avoid locking the contract.\n     *\n     * Requirements:\n     *\n     * - the caller must be a global admin\n     *\n     * Emits a {TargetClosed} event.\n     */\n    function setTargetClosed(address target, bool closed) external;\n\n    /**\n     * @dev Return the timepoint at which a scheduled operation will be ready for execution. This returns 0 if the\n     * operation is not yet scheduled, has expired, was executed, or was canceled.\n     */\n    function getSchedule(bytes32 id) external view returns (uint48);\n\n    /**\n     * @dev Return the nonce for the latest scheduled operation with a given id. Returns 0 if the operation has never\n     * been scheduled.\n     */\n    function getNonce(bytes32 id) external view returns (uint32);\n\n    /**\n     * @dev Schedule a delayed operation for future execution, and return the operation identifier. It is possible to\n     * choose the timestamp at which the operation becomes executable as long as it satisfies the execution delays\n     * required for the caller. The special value zero will automatically set the earliest possible time.\n     *\n     * Returns the `operationId` that was scheduled. Since this value is a hash of the parameters, it can reoccur when\n     * the same parameters are used; if this is relevant, the returned `nonce` can be used to uniquely identify this\n     * scheduled operation from other occurrences of the same `operationId` in invocations of {execute} and {cancel}.\n     *\n     * Emits a {OperationScheduled} event.\n     *\n     * NOTE: It is not possible to concurrently schedule more than one operation with the same `target` and `data`. If\n     * this is necessary, a random byte can be appended to `data` to act as a salt that will be ignored by the target\n     * contract if it is using standard Solidity ABI encoding.\n     */\n    function schedule(\n        address target,\n        bytes calldata data,\n        uint48 when\n    ) external returns (bytes32 operationId, uint32 nonce);\n\n    /**\n     * @dev Execute a function that is delay restricted, provided it was properly scheduled beforehand, or the\n     * execution delay is 0.\n     *\n     * Returns the nonce that identifies the previously scheduled operation that is executed, or 0 if the\n     * operation wasn't previously scheduled (if the caller doesn't have an execution delay).\n     *\n     * Emits an {OperationExecuted} event only if the call was scheduled and delayed.\n     */\n    function execute(address target, bytes calldata data) external payable returns (uint32);\n\n    /**\n     * @dev Cancel a scheduled (delayed) operation. Returns the nonce that identifies the previously scheduled\n     * operation that is cancelled.\n     *\n     * Requirements:\n     *\n     * - the caller must be the proposer, a guardian of the targeted function, or a global admin\n     *\n     * Emits a {OperationCanceled} event.\n     */\n    function cancel(address caller, address target, bytes calldata data) external returns (uint32);\n\n    /**\n     * @dev Consume a scheduled operation targeting the caller. If such an operation exists, mark it as consumed\n     * (emit an {OperationExecuted} event and clean the state). Otherwise, throw an error.\n     *\n     * This is useful for contracts that want to enforce that calls targeting them were scheduled on the manager,\n     * with all the verifications that it implies.\n     *\n     * Emit a {OperationExecuted} event.\n     */\n    function consumeScheduledOp(address caller, bytes calldata data) external;\n\n    /**\n     * @dev Hashing function for delayed operations.\n     */\n    function hashOperation(address caller, address target, bytes calldata data) external view returns (bytes32);\n\n    /**\n     * @dev Changes the authority of a target managed by this manager instance.\n     *\n     * Requirements:\n     *\n     * - the caller must be a global admin\n     */\n    function updateAuthority(address target, address newAuthority) external;\n}\n"},"@openzeppelin/contracts/interfaces/draft-IERC1822.sol":{"content":"// SPDX-License-Identifier: MIT\n// OpenZeppelin Contracts (last updated v5.4.0) (interfaces/draft-IERC1822.sol)\n\npragma solidity >=0.4.16;\n\n/**\n * @dev ERC-1822: Universal Upgradeable Proxy Standard (UUPS) documents a method for upgradeability through a simplified\n * proxy whose upgrades are fully controlled by the current implementation.\n */\ninterface IERC1822Proxiable {\n    /**\n     * @dev Returns the storage slot that the proxiable contract assumes is being used to store the implementation\n     * address.\n     *\n     * IMPORTANT: A proxy pointing at a proxiable contract should not be considered proxiable itself, because this risks\n     * bricking a proxy that upgrades to it, by delegating to itself until out of gas. Thus it is critical that this\n     * function revert if invoked through a proxy.\n     */\n    function proxiableUUID() external view returns (bytes32);\n}\n"},"@openzeppelin/contracts/interfaces/draft-IERC6093.sol":{"content":"// SPDX-License-Identifier: MIT\n// OpenZeppelin Contracts (last updated v5.5.0) (interfaces/draft-IERC6093.sol)\n\npragma solidity >=0.8.4;\n\n/**\n * @dev Standard ERC-20 Errors\n * Interface of the https://eips.ethereum.org/EIPS/eip-6093[ERC-6093] custom errors for ERC-20 tokens.\n */\ninterface IERC20Errors {\n    /**\n     * @dev Indicates an error related to the current `balance` of a `sender`. Used in transfers.\n     * @param sender Address whose tokens are being transferred.\n     * @param balance Current balance for the interacting account.\n     * @param needed Minimum amount required to perform a transfer.\n     */\n    error ERC20InsufficientBalance(address sender, uint256 balance, uint256 needed);\n\n    /**\n     * @dev Indicates a failure with the token `sender`. Used in transfers.\n     * @param sender Address whose tokens are being transferred.\n     */\n    error ERC20InvalidSender(address sender);\n\n    /**\n     * @dev Indicates a failure with the token `receiver`. Used in transfers.\n     * @param receiver Address to which tokens are being transferred.\n     */\n    error ERC20InvalidReceiver(address receiver);\n\n    /**\n     * @dev Indicates a failure with the `spender`’s `allowance`. Used in transfers.\n     * @param spender Address that may be allowed to operate on tokens without being their owner.\n     * @param allowance Amount of tokens a `spender` is allowed to operate with.\n     * @param needed Minimum amount required to perform a transfer.\n     */\n    error ERC20InsufficientAllowance(address spender, uint256 allowance, uint256 needed);\n\n    /**\n     * @dev Indicates a failure with the `approver` of a token to be approved. Used in approvals.\n     * @param approver Address initiating an approval operation.\n     */\n    error ERC20InvalidApprover(address approver);\n\n    /**\n     * @dev Indicates a failure with the `spender` to be approved. Used in approvals.\n     * @param spender Address that may be allowed to operate on tokens without being their owner.\n     */\n    error ERC20InvalidSpender(address spender);\n}\n\n/**\n * @dev Standard ERC-721 Errors\n * Interface of the https://eips.ethereum.org/EIPS/eip-6093[ERC-6093] custom errors for ERC-721 tokens.\n */\ninterface IERC721Errors {\n    /**\n     * @dev Indicates that an address can't be an owner. For example, `address(0)` is a forbidden owner in ERC-721.\n     * Used in balance queries.\n     * @param owner Address of the current owner of a token.\n     */\n    error ERC721InvalidOwner(address owner);\n\n    /**\n     * @dev Indicates a `tokenId` whose `owner` is the zero address.\n     * @param tokenId Identifier number of a token.\n     */\n    error ERC721NonexistentToken(uint256 tokenId);\n\n    /**\n     * @dev Indicates an error related to the ownership over a particular token. Used in transfers.\n     * @param sender Address whose tokens are being transferred.\n     * @param tokenId Identifier number of a token.\n     * @param owner Address of the current owner of a token.\n     */\n    error ERC721IncorrectOwner(address sender, uint256 tokenId, address owner);\n\n    /**\n     * @dev Indicates a failure with the token `sender`. Used in transfers.\n     * @param sender Address whose tokens are being transferred.\n     */\n    error ERC721InvalidSender(address sender);\n\n    /**\n     * @dev Indicates a failure with the token `receiver`. Used in transfers.\n     * @param receiver Address to which tokens are being transferred.\n     */\n    error ERC721InvalidReceiver(address receiver);\n\n    /**\n     * @dev Indicates a failure with the `operator`’s approval. Used in transfers.\n     * @param operator Address that may be allowed to operate on tokens without being their owner.\n     * @param tokenId Identifier number of a token.\n     */\n    error ERC721InsufficientApproval(address operator, uint256 tokenId);\n\n    /**\n     * @dev Indicates a failure with the `approver` of a token to be approved. Used in approvals.\n     * @param approver Address initiating an approval operation.\n     */\n    error ERC721InvalidApprover(address approver);\n\n    /**\n     * @dev Indicates a failure with the `operator` to be approved. Used in approvals.\n     * @param operator Address that may be allowed to operate on tokens without being their owner.\n     */\n    error ERC721InvalidOperator(address operator);\n}\n\n/**\n * @dev Standard ERC-1155 Errors\n * Interface of the https://eips.ethereum.org/EIPS/eip-6093[ERC-6093] custom errors for ERC-1155 tokens.\n */\ninterface IERC1155Errors {\n    /**\n     * @dev Indicates an error related to the current `balance` of a `sender`. Used in transfers.\n     * @param sender Address whose tokens are being transferred.\n     * @param balance Current balance for the interacting account.\n     * @param needed Minimum amount required to perform a transfer.\n     * @param tokenId Identifier number of a token.\n     */\n    error ERC1155InsufficientBalance(address sender, uint256 balance, uint256 needed, uint256 tokenId);\n\n    /**\n     * @dev Indicates a failure with the token `sender`. Used in transfers.\n     * @param sender Address whose tokens are being transferred.\n     */\n    error ERC1155InvalidSender(address sender);\n\n    /**\n     * @dev Indicates a failure with the token `receiver`. Used in transfers.\n     * @param receiver Address to which tokens are being transferred.\n     */\n    error ERC1155InvalidReceiver(address receiver);\n\n    /**\n     * @dev Indicates a failure with the `operator`’s approval. Used in transfers.\n     * @param operator Address that may be allowed to operate on tokens without being their owner.\n     * @param owner Address of the current owner of a token.\n     */\n    error ERC1155MissingApprovalForAll(address operator, address owner);\n\n    /**\n     * @dev Indicates a failure with the `approver` of a token to be approved. Used in approvals.\n     * @param approver Address initiating an approval operation.\n     */\n    error ERC1155InvalidApprover(address approver);\n\n    /**\n     * @dev Indicates a failure with the `operator` to be approved. Used in approvals.\n     * @param operator Address that may be allowed to operate on tokens without being their owner.\n     */\n    error ERC1155InvalidOperator(address operator);\n\n    /**\n     * @dev Indicates an array length mismatch between ids and values in a safeBatchTransferFrom operation.\n     * Used in batch transfers.\n     * @param idsLength Length of the array of token identifiers\n     * @param valuesLength Length of the array of token amounts\n     */\n    error ERC1155InvalidArrayLength(uint256 idsLength, uint256 valuesLength);\n}\n"},"@openzeppelin/contracts/interfaces/IERC1363.sol":{"content":"// SPDX-License-Identifier: MIT\n// OpenZeppelin Contracts (last updated v5.4.0) (interfaces/IERC1363.sol)\n\npragma solidity >=0.6.2;\n\nimport {IERC20} from \"./IERC20.sol\";\nimport {IERC165} from \"./IERC165.sol\";\n\n/**\n * @title IERC1363\n * @dev Interface of the ERC-1363 standard as defined in the https://eips.ethereum.org/EIPS/eip-1363[ERC-1363].\n *\n * Defines an extension interface for ERC-20 tokens that supports executing code on a recipient contract\n * after `transfer` or `transferFrom`, or code on a spender contract after `approve`, in a single transaction.\n */\ninterface IERC1363 is IERC20, IERC165 {\n    /*\n     * Note: the ERC-165 identifier for this interface is 0xb0202a11.\n     * 0xb0202a11 ===\n     *   bytes4(keccak256('transferAndCall(address,uint256)')) ^\n     *   bytes4(keccak256('transferAndCall(address,uint256,bytes)')) ^\n     *   bytes4(keccak256('transferFromAndCall(address,address,uint256)')) ^\n     *   bytes4(keccak256('transferFromAndCall(address,address,uint256,bytes)')) ^\n     *   bytes4(keccak256('approveAndCall(address,uint256)')) ^\n     *   bytes4(keccak256('approveAndCall(address,uint256,bytes)'))\n     */\n\n    /**\n     * @dev Moves a `value` amount of tokens from the caller's account to `to`\n     * and then calls {IERC1363Receiver-onTransferReceived} on `to`.\n     * @param to The address which you want to transfer to.\n     * @param value The amount of tokens to be transferred.\n     * @return A boolean value indicating whether the operation succeeded unless throwing.\n     */\n    function transferAndCall(address to, uint256 value) external returns (bool);\n\n    /**\n     * @dev Moves a `value` amount of tokens from the caller's account to `to`\n     * and then calls {IERC1363Receiver-onTransferReceived} on `to`.\n     * @param to The address which you want to transfer to.\n     * @param value The amount of tokens to be transferred.\n     * @param data Additional data with no specified format, sent in call to `to`.\n     * @return A boolean value indicating whether the operation succeeded unless throwing.\n     */\n    function transferAndCall(address to, uint256 value, bytes calldata data) external returns (bool);\n\n    /**\n     * @dev Moves a `value` amount of tokens from `from` to `to` using the allowance mechanism\n     * and then calls {IERC1363Receiver-onTransferReceived} on `to`.\n     * @param from The address which you want to send tokens from.\n     * @param to The address which you want to transfer to.\n     * @param value The amount of tokens to be transferred.\n     * @return A boolean value indicating whether the operation succeeded unless throwing.\n     */\n    function transferFromAndCall(address from, address to, uint256 value) external returns (bool);\n\n    /**\n     * @dev Moves a `value` amount of tokens from `from` to `to` using the allowance mechanism\n     * and then calls {IERC1363Receiver-onTransferReceived} on `to`.\n     * @param from The address which you want to send tokens from.\n     * @param to The address which you want to transfer to.\n     * @param value The amount of tokens to be transferred.\n     * @param data Additional data with no specified format, sent in call to `to`.\n     * @return A boolean value indicating whether the operation succeeded unless throwing.\n     */\n    function transferFromAndCall(address from, address to, uint256 value, bytes calldata data) external returns (bool);\n\n    /**\n     * @dev Sets a `value` amount of tokens as the allowance of `spender` over the\n     * caller's tokens and then calls {IERC1363Spender-onApprovalReceived} on `spender`.\n     * @param spender The address which will spend the funds.\n     * @param value The amount of tokens to be spent.\n     * @return A boolean value indicating whether the operation succeeded unless throwing.\n     */\n    function approveAndCall(address spender, uint256 value) external returns (bool);\n\n    /**\n     * @dev Sets a `value` amount of tokens as the allowance of `spender` over the\n     * caller's tokens and then calls {IERC1363Spender-onApprovalReceived} on `spender`.\n     * @param spender The address which will spend the funds.\n     * @param value The amount of tokens to be spent.\n     * @param data Additional data with no specified format, sent in call to `spender`.\n     * @return A boolean value indicating whether the operation succeeded unless throwing.\n     */\n    function approveAndCall(address spender, uint256 value, bytes calldata data) external returns (bool);\n}\n"},"@openzeppelin/contracts/interfaces/IERC165.sol":{"content":"// SPDX-License-Identifier: MIT\n// OpenZeppelin Contracts (last updated v5.4.0) (interfaces/IERC165.sol)\n\npragma solidity >=0.4.16;\n\nimport {IERC165} from \"../utils/introspection/IERC165.sol\";\n"},"@openzeppelin/contracts/interfaces/IERC1967.sol":{"content":"// SPDX-License-Identifier: MIT\n// OpenZeppelin Contracts (last updated v5.4.0) (interfaces/IERC1967.sol)\n\npragma solidity >=0.4.11;\n\n/**\n * @dev ERC-1967: Proxy Storage Slots. This interface contains the events defined in the ERC.\n */\ninterface IERC1967 {\n    /**\n     * @dev Emitted when the implementation is upgraded.\n     */\n    event Upgraded(address indexed implementation);\n\n    /**\n     * @dev Emitted when the admin account has changed.\n     */\n    event AdminChanged(address previousAdmin, address newAdmin);\n\n    /**\n     * @dev Emitted when the beacon is changed.\n     */\n    event BeaconUpgraded(address indexed beacon);\n}\n"},"@openzeppelin/contracts/interfaces/IERC20.sol":{"content":"// SPDX-License-Identifier: MIT\n// OpenZeppelin Contracts (last updated v5.4.0) (interfaces/IERC20.sol)\n\npragma solidity >=0.4.16;\n\nimport {IERC20} from \"../token/ERC20/IERC20.sol\";\n"},"@openzeppelin/contracts/interfaces/IERC20Metadata.sol":{"content":"// SPDX-License-Identifier: MIT\n// OpenZeppelin Contracts (last updated v5.4.0) (interfaces/IERC20Metadata.sol)\n\npragma solidity >=0.6.2;\n\nimport {IERC20Metadata} from \"../token/ERC20/extensions/IERC20Metadata.sol\";\n"},"@openzeppelin/contracts/interfaces/IERC4626.sol":{"content":"// SPDX-License-Identifier: MIT\n// OpenZeppelin Contracts (last updated v5.5.0) (interfaces/IERC4626.sol)\n\npragma solidity >=0.6.2;\n\nimport {IERC20} from \"../token/ERC20/IERC20.sol\";\nimport {IERC20Metadata} from \"../token/ERC20/extensions/IERC20Metadata.sol\";\n\n/**\n * @dev Interface of the ERC-4626 \"Tokenized Vault Standard\", as defined in\n * https://eips.ethereum.org/EIPS/eip-4626[ERC-4626].\n */\ninterface IERC4626 is IERC20, IERC20Metadata {\n    event Deposit(address indexed sender, address indexed owner, uint256 assets, uint256 shares);\n\n    event Withdraw(\n        address indexed sender,\n        address indexed receiver,\n        address indexed owner,\n        uint256 assets,\n        uint256 shares\n    );\n\n    /**\n     * @dev Returns the address of the underlying token used for the Vault for accounting, depositing, and withdrawing.\n     *\n     * - MUST be an ERC-20 token contract.\n     * - MUST NOT revert.\n     */\n    function asset() external view returns (address assetTokenAddress);\n\n    /**\n     * @dev Returns the total amount of the underlying asset that is “managed” by Vault.\n     *\n     * - SHOULD include any compounding that occurs from yield.\n     * - MUST be inclusive of any fees that are charged against assets in the Vault.\n     * - MUST NOT revert.\n     */\n    function totalAssets() external view returns (uint256 totalManagedAssets);\n\n    /**\n     * @dev Returns the amount of shares that the Vault would exchange for the amount of assets provided, in an ideal\n     * scenario where all the conditions are met.\n     *\n     * - MUST NOT be inclusive of any fees that are charged against assets in the Vault.\n     * - MUST NOT show any variations depending on the caller.\n     * - MUST NOT reflect slippage or other on-chain conditions, when performing the actual exchange.\n     * - MUST NOT revert.\n     *\n     * NOTE: This calculation MAY NOT reflect the “per-user” price-per-share, and instead should reflect the\n     * “average-user’s” price-per-share, meaning what the average user should expect to see when exchanging to and\n     * from.\n     */\n    function convertToShares(uint256 assets) external view returns (uint256 shares);\n\n    /**\n     * @dev Returns the amount of assets that the Vault would exchange for the amount of shares provided, in an ideal\n     * scenario where all the conditions are met.\n     *\n     * - MUST NOT be inclusive of any fees that are charged against assets in the Vault.\n     * - MUST NOT show any variations depending on the caller.\n     * - MUST NOT reflect slippage or other on-chain conditions, when performing the actual exchange.\n     * - MUST NOT revert.\n     *\n     * NOTE: This calculation MAY NOT reflect the “per-user” price-per-share, and instead should reflect the\n     * “average-user’s” price-per-share, meaning what the average user should expect to see when exchanging to and\n     * from.\n     */\n    function convertToAssets(uint256 shares) external view returns (uint256 assets);\n\n    /**\n     * @dev Returns the maximum amount of the underlying asset that can be deposited into the Vault for the receiver,\n     * through a deposit call.\n     *\n     * - MUST return a limited value if receiver is subject to some deposit limit.\n     * - MUST return 2 ** 256 - 1 if there is no limit on the maximum amount of assets that may be deposited.\n     * - MUST NOT revert.\n     */\n    function maxDeposit(address receiver) external view returns (uint256 maxAssets);\n\n    /**\n     * @dev Allows an on-chain or off-chain user to simulate the effects of their deposit at the current block, given\n     * current on-chain conditions.\n     *\n     * - MUST return as close to and no more than the exact amount of Vault shares that would be minted in a deposit\n     *   call in the same transaction. I.e. deposit should return the same or more shares as previewDeposit if called\n     *   in the same transaction.\n     * - MUST NOT account for deposit limits like those returned from maxDeposit and should always act as though the\n     *   deposit would be accepted, regardless if the user has enough tokens approved, etc.\n     * - MUST be inclusive of deposit fees. Integrators should be aware of the existence of deposit fees.\n     * - MUST NOT revert.\n     *\n     * NOTE: any unfavorable discrepancy between convertToShares and previewDeposit SHOULD be considered slippage in\n     * share price or some other type of condition, meaning the depositor will lose assets by depositing.\n     */\n    function previewDeposit(uint256 assets) external view returns (uint256 shares);\n\n    /**\n     * @dev Deposit `assets` underlying tokens and send the corresponding number of vault shares (`shares`) to `receiver`.\n     *\n     * - MUST emit the Deposit event.\n     * - MAY support an additional flow in which the underlying tokens are owned by the Vault contract before the\n     *   deposit execution, and are accounted for during deposit.\n     * - MUST revert if all of assets cannot be deposited (due to deposit limit being reached, slippage, the user not\n     *   approving enough underlying tokens to the Vault contract, etc).\n     *\n     * NOTE: most implementations will require pre-approval of the Vault with the Vault’s underlying asset token.\n     */\n    function deposit(uint256 assets, address receiver) external returns (uint256 shares);\n\n    /**\n     * @dev Returns the maximum amount of the Vault shares that can be minted for the receiver, through a mint call.\n     * - MUST return a limited value if receiver is subject to some mint limit.\n     * - MUST return 2 ** 256 - 1 if there is no limit on the maximum amount of shares that may be minted.\n     * - MUST NOT revert.\n     */\n    function maxMint(address receiver) external view returns (uint256 maxShares);\n\n    /**\n     * @dev Allows an on-chain or off-chain user to simulate the effects of their mint at the current block, given\n     * current on-chain conditions.\n     *\n     * - MUST return as close to and no fewer than the exact amount of assets that would be deposited in a mint call\n     *   in the same transaction. I.e. mint should return the same or fewer assets as previewMint if called in the\n     *   same transaction.\n     * - MUST NOT account for mint limits like those returned from maxMint and should always act as though the mint\n     *   would be accepted, regardless if the user has enough tokens approved, etc.\n     * - MUST be inclusive of deposit fees. Integrators should be aware of the existence of deposit fees.\n     * - MUST NOT revert.\n     *\n     * NOTE: any unfavorable discrepancy between convertToAssets and previewMint SHOULD be considered slippage in\n     * share price or some other type of condition, meaning the depositor will lose assets by minting.\n     */\n    function previewMint(uint256 shares) external view returns (uint256 assets);\n\n    /**\n     * @dev Mints exactly `shares` vault shares to `receiver` in exchange for `assets` underlying tokens.\n     *\n     * - MUST emit the Deposit event.\n     * - MAY support an additional flow in which the underlying tokens are owned by the Vault contract before the mint\n     *   execution, and are accounted for during mint.\n     * - MUST revert if all of shares cannot be minted (due to deposit limit being reached, slippage, the user not\n     *   approving enough underlying tokens to the Vault contract, etc).\n     *\n     * NOTE: most implementations will require pre-approval of the Vault with the Vault’s underlying asset token.\n     */\n    function mint(uint256 shares, address receiver) external returns (uint256 assets);\n\n    /**\n     * @dev Returns the maximum amount of the underlying asset that can be withdrawn from the owner balance in the\n     * Vault, through a withdraw call.\n     *\n     * - MUST return a limited value if owner is subject to some withdrawal limit or timelock.\n     * - MUST NOT revert.\n     */\n    function maxWithdraw(address owner) external view returns (uint256 maxAssets);\n\n    /**\n     * @dev Allows an on-chain or off-chain user to simulate the effects of their withdrawal at the current block,\n     * given current on-chain conditions.\n     *\n     * - MUST return as close to and no fewer than the exact amount of Vault shares that would be burned in a withdraw\n     *   call in the same transaction. I.e. withdraw should return the same or fewer shares as previewWithdraw if\n     *   called\n     *   in the same transaction.\n     * - MUST NOT account for withdrawal limits like those returned from maxWithdraw and should always act as though\n     *   the withdrawal would be accepted, regardless if the user has enough shares, etc.\n     * - MUST be inclusive of withdrawal fees. Integrators should be aware of the existence of withdrawal fees.\n     * - MUST NOT revert.\n     *\n     * NOTE: any unfavorable discrepancy between convertToShares and previewWithdraw SHOULD be considered slippage in\n     * share price or some other type of condition, meaning the depositor will lose assets by depositing.\n     */\n    function previewWithdraw(uint256 assets) external view returns (uint256 shares);\n\n    /**\n     * @dev Burns shares from owner and sends exactly assets of underlying tokens to receiver.\n     *\n     * - MUST emit the Withdraw event.\n     * - MAY support an additional flow in which the underlying tokens are owned by the Vault contract before the\n     *   withdraw execution, and are accounted for during withdraw.\n     * - MUST revert if all of assets cannot be withdrawn (due to withdrawal limit being reached, slippage, the owner\n     *   not having enough shares, etc).\n     *\n     * Note that some implementations will require pre-requesting to the Vault before a withdrawal may be performed.\n     * Those methods should be performed separately.\n     */\n    function withdraw(uint256 assets, address receiver, address owner) external returns (uint256 shares);\n\n    /**\n     * @dev Returns the maximum amount of Vault shares that can be redeemed from the owner balance in the Vault,\n     * through a redeem call.\n     *\n     * - MUST return a limited value if owner is subject to some withdrawal limit or timelock.\n     * - MUST return balanceOf(owner) if owner is not subject to any withdrawal limit or timelock.\n     * - MUST NOT revert.\n     */\n    function maxRedeem(address owner) external view returns (uint256 maxShares);\n\n    /**\n     * @dev Allows an on-chain or off-chain user to simulate the effects of their redemption at the current block,\n     * given current on-chain conditions.\n     *\n     * - MUST return as close to and no more than the exact amount of assets that would be withdrawn in a redeem call\n     *   in the same transaction. I.e. redeem should return the same or more assets as previewRedeem if called in the\n     *   same transaction.\n     * - MUST NOT account for redemption limits like those returned from maxRedeem and should always act as though the\n     *   redemption would be accepted, regardless if the user has enough shares, etc.\n     * - MUST be inclusive of withdrawal fees. Integrators should be aware of the existence of withdrawal fees.\n     * - MUST NOT revert.\n     *\n     * NOTE: any unfavorable discrepancy between convertToAssets and previewRedeem SHOULD be considered slippage in\n     * share price or some other type of condition, meaning the depositor will lose assets by redeeming.\n     */\n    function previewRedeem(uint256 shares) external view returns (uint256 assets);\n\n    /**\n     * @dev Burns exactly shares from owner and sends assets of underlying tokens to receiver.\n     *\n     * - MUST emit the Withdraw event.\n     * - MAY support an additional flow in which the underlying tokens are owned by the Vault contract before the\n     *   redeem execution, and are accounted for during redeem.\n     * - MUST revert if all of shares cannot be redeemed (due to withdrawal limit being reached, slippage, the owner\n     *   not having enough shares, etc).\n     *\n     * NOTE: some implementations will require pre-requesting to the Vault before a withdrawal may be performed.\n     * Those methods should be performed separately.\n     */\n    function redeem(uint256 shares, address receiver, address owner) external returns (uint256 assets);\n}\n"},"@openzeppelin/contracts/proxy/beacon/IBeacon.sol":{"content":"// SPDX-License-Identifier: MIT\n// OpenZeppelin Contracts (last updated v5.4.0) (proxy/beacon/IBeacon.sol)\n\npragma solidity >=0.4.16;\n\n/**\n * @dev This is the interface that {BeaconProxy} expects of its beacon.\n */\ninterface IBeacon {\n    /**\n     * @dev Must return an address that can be used as a delegate call target.\n     *\n     * {UpgradeableBeacon} will check that this address is a contract.\n     */\n    function implementation() external view returns (address);\n}\n"},"@openzeppelin/contracts/proxy/ERC1967/ERC1967Proxy.sol":{"content":"// SPDX-License-Identifier: MIT\n// OpenZeppelin Contracts (last updated v5.2.0) (proxy/ERC1967/ERC1967Proxy.sol)\n\npragma solidity ^0.8.22;\n\nimport {Proxy} from \"../Proxy.sol\";\nimport {ERC1967Utils} from \"./ERC1967Utils.sol\";\n\n/**\n * @dev This contract implements an upgradeable proxy. It is upgradeable because calls are delegated to an\n * implementation address that can be changed. This address is stored in storage in the location specified by\n * https://eips.ethereum.org/EIPS/eip-1967[ERC-1967], so that it doesn't conflict with the storage layout of the\n * implementation behind the proxy.\n */\ncontract ERC1967Proxy is Proxy {\n    /**\n     * @dev Initializes the upgradeable proxy with an initial implementation specified by `implementation`.\n     *\n     * If `_data` is nonempty, it's used as data in a delegate call to `implementation`. This will typically be an\n     * encoded function call, and allows initializing the storage of the proxy like a Solidity constructor.\n     *\n     * Requirements:\n     *\n     * - If `data` is empty, `msg.value` must be zero.\n     */\n    constructor(address implementation, bytes memory _data) payable {\n        ERC1967Utils.upgradeToAndCall(implementation, _data);\n    }\n\n    /**\n     * @dev Returns the current implementation address.\n     *\n     * TIP: To get this value clients can read directly from the storage slot shown below (specified by ERC-1967) using\n     * the https://eth.wiki/json-rpc/API#eth_getstorageat[`eth_getStorageAt`] RPC call.\n     * `0x360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc`\n     */\n    function _implementation() internal view virtual override returns (address) {\n        return ERC1967Utils.getImplementation();\n    }\n}\n"},"@openzeppelin/contracts/proxy/ERC1967/ERC1967Utils.sol":{"content":"// SPDX-License-Identifier: MIT\n// OpenZeppelin Contracts (last updated v5.4.0) (proxy/ERC1967/ERC1967Utils.sol)\n\npragma solidity ^0.8.21;\n\nimport {IBeacon} from \"../beacon/IBeacon.sol\";\nimport {IERC1967} from \"../../interfaces/IERC1967.sol\";\nimport {Address} from \"../../utils/Address.sol\";\nimport {StorageSlot} from \"../../utils/StorageSlot.sol\";\n\n/**\n * @dev This library provides getters and event emitting update functions for\n * https://eips.ethereum.org/EIPS/eip-1967[ERC-1967] slots.\n */\nlibrary ERC1967Utils {\n    /**\n     * @dev Storage slot with the address of the current implementation.\n     * This is the keccak-256 hash of \"eip1967.proxy.implementation\" subtracted by 1.\n     */\n    // solhint-disable-next-line private-vars-leading-underscore\n    bytes32 internal constant IMPLEMENTATION_SLOT = 0x360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc;\n\n    /**\n     * @dev The `implementation` of the proxy is invalid.\n     */\n    error ERC1967InvalidImplementation(address implementation);\n\n    /**\n     * @dev The `admin` of the proxy is invalid.\n     */\n    error ERC1967InvalidAdmin(address admin);\n\n    /**\n     * @dev The `beacon` of the proxy is invalid.\n     */\n    error ERC1967InvalidBeacon(address beacon);\n\n    /**\n     * @dev An upgrade function sees `msg.value > 0` that may be lost.\n     */\n    error ERC1967NonPayable();\n\n    /**\n     * @dev Returns the current implementation address.\n     */\n    function getImplementation() internal view returns (address) {\n        return StorageSlot.getAddressSlot(IMPLEMENTATION_SLOT).value;\n    }\n\n    /**\n     * @dev Stores a new address in the ERC-1967 implementation slot.\n     */\n    function _setImplementation(address newImplementation) private {\n        if (newImplementation.code.length == 0) {\n            revert ERC1967InvalidImplementation(newImplementation);\n        }\n        StorageSlot.getAddressSlot(IMPLEMENTATION_SLOT).value = newImplementation;\n    }\n\n    /**\n     * @dev Performs implementation upgrade with additional setup call if data is nonempty.\n     * This function is payable only if the setup call is performed, otherwise `msg.value` is rejected\n     * to avoid stuck value in the contract.\n     *\n     * Emits an {IERC1967-Upgraded} event.\n     */\n    function upgradeToAndCall(address newImplementation, bytes memory data) internal {\n        _setImplementation(newImplementation);\n        emit IERC1967.Upgraded(newImplementation);\n\n        if (data.length > 0) {\n            Address.functionDelegateCall(newImplementation, data);\n        } else {\n            _checkNonPayable();\n        }\n    }\n\n    /**\n     * @dev Storage slot with the admin of the contract.\n     * This is the keccak-256 hash of \"eip1967.proxy.admin\" subtracted by 1.\n     */\n    // solhint-disable-next-line private-vars-leading-underscore\n    bytes32 internal constant ADMIN_SLOT = 0xb53127684a568b3173ae13b9f8a6016e243e63b6e8ee1178d6a717850b5d6103;\n\n    /**\n     * @dev Returns the current admin.\n     *\n     * TIP: To get this value clients can read directly from the storage slot shown below (specified by ERC-1967) using\n     * the https://eth.wiki/json-rpc/API#eth_getstorageat[`eth_getStorageAt`] RPC call.\n     * `0xb53127684a568b3173ae13b9f8a6016e243e63b6e8ee1178d6a717850b5d6103`\n     */\n    function getAdmin() internal view returns (address) {\n        return StorageSlot.getAddressSlot(ADMIN_SLOT).value;\n    }\n\n    /**\n     * @dev Stores a new address in the ERC-1967 admin slot.\n     */\n    function _setAdmin(address newAdmin) private {\n        if (newAdmin == address(0)) {\n            revert ERC1967InvalidAdmin(address(0));\n        }\n        StorageSlot.getAddressSlot(ADMIN_SLOT).value = newAdmin;\n    }\n\n    /**\n     * @dev Changes the admin of the proxy.\n     *\n     * Emits an {IERC1967-AdminChanged} event.\n     */\n    function changeAdmin(address newAdmin) internal {\n        emit IERC1967.AdminChanged(getAdmin(), newAdmin);\n        _setAdmin(newAdmin);\n    }\n\n    /**\n     * @dev The storage slot of the UpgradeableBeacon contract which defines the implementation for this proxy.\n     * This is the keccak-256 hash of \"eip1967.proxy.beacon\" subtracted by 1.\n     */\n    // solhint-disable-next-line private-vars-leading-underscore\n    bytes32 internal constant BEACON_SLOT = 0xa3f0ad74e5423aebfd80d3ef4346578335a9a72aeaee59ff6cb3582b35133d50;\n\n    /**\n     * @dev Returns the current beacon.\n     */\n    function getBeacon() internal view returns (address) {\n        return StorageSlot.getAddressSlot(BEACON_SLOT).value;\n    }\n\n    /**\n     * @dev Stores a new beacon in the ERC-1967 beacon slot.\n     */\n    function _setBeacon(address newBeacon) private {\n        if (newBeacon.code.length == 0) {\n            revert ERC1967InvalidBeacon(newBeacon);\n        }\n\n        StorageSlot.getAddressSlot(BEACON_SLOT).value = newBeacon;\n\n        address beaconImplementation = IBeacon(newBeacon).implementation();\n        if (beaconImplementation.code.length == 0) {\n            revert ERC1967InvalidImplementation(beaconImplementation);\n        }\n    }\n\n    /**\n     * @dev Change the beacon and trigger a setup call if data is nonempty.\n     * This function is payable only if the setup call is performed, otherwise `msg.value` is rejected\n     * to avoid stuck value in the contract.\n     *\n     * Emits an {IERC1967-BeaconUpgraded} event.\n     *\n     * CAUTION: Invoking this function has no effect on an instance of {BeaconProxy} since v5, since\n     * it uses an immutable beacon without looking at the value of the ERC-1967 beacon slot for\n     * efficiency.\n     */\n    function upgradeBeaconToAndCall(address newBeacon, bytes memory data) internal {\n        _setBeacon(newBeacon);\n        emit IERC1967.BeaconUpgraded(newBeacon);\n\n        if (data.length > 0) {\n            Address.functionDelegateCall(IBeacon(newBeacon).implementation(), data);\n        } else {\n            _checkNonPayable();\n        }\n    }\n\n    /**\n     * @dev Reverts if `msg.value` is not zero. It can be used to avoid `msg.value` stuck in the contract\n     * if an upgrade doesn't perform an initialization call.\n     */\n    function _checkNonPayable() private {\n        if (msg.value > 0) {\n            revert ERC1967NonPayable();\n        }\n    }\n}\n"},"@openzeppelin/contracts/proxy/Proxy.sol":{"content":"// SPDX-License-Identifier: MIT\n// OpenZeppelin Contracts (last updated v5.5.0) (proxy/Proxy.sol)\n\npragma solidity ^0.8.20;\n\n/**\n * @dev This abstract contract provides a fallback function that delegates all calls to another contract using the EVM\n * instruction `delegatecall`. We refer to the second contract as the _implementation_ behind the proxy, and it has to\n * be specified by overriding the virtual {_implementation} function.\n *\n * Additionally, delegation to the implementation can be triggered manually through the {_fallback} function, or to a\n * different contract through the {_delegate} function.\n *\n * The success and return data of the delegated call will be returned back to the caller of the proxy.\n */\nabstract contract Proxy {\n    /**\n     * @dev Delegates the current call to `implementation`.\n     *\n     * This function does not return to its internal call site, it will return directly to the external caller.\n     */\n    function _delegate(address implementation) internal virtual {\n        assembly {\n            // Copy msg.data. We take full control of memory in this inline assembly\n            // block because it will not return to Solidity code. We overwrite the\n            // Solidity scratch pad at memory position 0.\n            calldatacopy(0x00, 0x00, calldatasize())\n\n            // Call the implementation.\n            // out and outsize are 0 because we don't know the size yet.\n            let result := delegatecall(gas(), implementation, 0x00, calldatasize(), 0x00, 0x00)\n\n            // Copy the returned data.\n            returndatacopy(0x00, 0x00, returndatasize())\n\n            switch result\n            // delegatecall returns 0 on error.\n            case 0 {\n                revert(0x00, returndatasize())\n            }\n            default {\n                return(0x00, returndatasize())\n            }\n        }\n    }\n\n    /**\n     * @dev This is a virtual function that should be overridden so it returns the address to which the fallback\n     * function and {_fallback} should delegate.\n     */\n    function _implementation() internal view virtual returns (address);\n\n    /**\n     * @dev Delegates the current call to the address returned by `_implementation()`.\n     *\n     * This function does not return to its internal call site, it will return directly to the external caller.\n     */\n    function _fallback() internal virtual {\n        _delegate(_implementation());\n    }\n\n    /**\n     * @dev Fallback function that delegates calls to the address returned by `_implementation()`. Will run if no other\n     * function in the contract matches the call data.\n     */\n    fallback() external payable virtual {\n        _fallback();\n    }\n}\n"},"@openzeppelin/contracts/proxy/utils/Initializable.sol":{"content":"// SPDX-License-Identifier: MIT\n// OpenZeppelin Contracts (last updated v5.3.0) (proxy/utils/Initializable.sol)\n\npragma solidity ^0.8.20;\n\n/**\n * @dev This is a base contract to aid in writing upgradeable contracts, or any kind of contract that will be deployed\n * behind a proxy. Since proxied contracts do not make use of a constructor, it's common to move constructor logic to an\n * external initializer function, usually called `initialize`. It then becomes necessary to protect this initializer\n * function so it can only be called once. The {initializer} modifier provided by this contract will have this effect.\n *\n * The initialization functions use a version number. Once a version number is used, it is consumed and cannot be\n * reused. This mechanism prevents re-execution of each \"step\" but allows the creation of new initialization steps in\n * case an upgrade adds a module that needs to be initialized.\n *\n * For example:\n *\n * [.hljs-theme-light.nopadding]\n * ```solidity\n * contract MyToken is ERC20Upgradeable {\n *     function initialize() initializer public {\n *         __ERC20_init(\"MyToken\", \"MTK\");\n *     }\n * }\n *\n * contract MyTokenV2 is MyToken, ERC20PermitUpgradeable {\n *     function initializeV2() reinitializer(2) public {\n *         __ERC20Permit_init(\"MyToken\");\n *     }\n * }\n * ```\n *\n * TIP: To avoid leaving the proxy in an uninitialized state, the initializer function should be called as early as\n * possible by providing the encoded function call as the `_data` argument to {ERC1967Proxy-constructor}.\n *\n * CAUTION: When used with inheritance, manual care must be taken to not invoke a parent initializer twice, or to ensure\n * that all initializers are idempotent. This is not verified automatically as constructors are by Solidity.\n *\n * [CAUTION]\n * ====\n * Avoid leaving a contract uninitialized.\n *\n * An uninitialized contract can be taken over by an attacker. This applies to both a proxy and its implementation\n * contract, which may impact the proxy. To prevent the implementation contract from being used, you should invoke\n * the {_disableInitializers} function in the constructor to automatically lock it when it is deployed:\n *\n * [.hljs-theme-light.nopadding]\n * ```\n * /// @custom:oz-upgrades-unsafe-allow constructor\n * constructor() {\n *     _disableInitializers();\n * }\n * ```\n * ====\n */\nabstract contract Initializable {\n    /**\n     * @dev Storage of the initializable contract.\n     *\n     * It's implemented on a custom ERC-7201 namespace to reduce the risk of storage collisions\n     * when using with upgradeable contracts.\n     *\n     * @custom:storage-location erc7201:openzeppelin.storage.Initializable\n     */\n    struct InitializableStorage {\n        /**\n         * @dev Indicates that the contract has been initialized.\n         */\n        uint64 _initialized;\n        /**\n         * @dev Indicates that the contract is in the process of being initialized.\n         */\n        bool _initializing;\n    }\n\n    // keccak256(abi.encode(uint256(keccak256(\"openzeppelin.storage.Initializable\")) - 1)) & ~bytes32(uint256(0xff))\n    bytes32 private constant INITIALIZABLE_STORAGE = 0xf0c57e16840df040f15088dc2f81fe391c3923bec73e23a9662efc9c229c6a00;\n\n    /**\n     * @dev The contract is already initialized.\n     */\n    error InvalidInitialization();\n\n    /**\n     * @dev The contract is not initializing.\n     */\n    error NotInitializing();\n\n    /**\n     * @dev Triggered when the contract has been initialized or reinitialized.\n     */\n    event Initialized(uint64 version);\n\n    /**\n     * @dev A modifier that defines a protected initializer function that can be invoked at most once. In its scope,\n     * `onlyInitializing` functions can be used to initialize parent contracts.\n     *\n     * Similar to `reinitializer(1)`, except that in the context of a constructor an `initializer` may be invoked any\n     * number of times. This behavior in the constructor can be useful during testing and is not expected to be used in\n     * production.\n     *\n     * Emits an {Initialized} event.\n     */\n    modifier initializer() {\n        // solhint-disable-next-line var-name-mixedcase\n        InitializableStorage storage $ = _getInitializableStorage();\n\n        // Cache values to avoid duplicated sloads\n        bool isTopLevelCall = !$._initializing;\n        uint64 initialized = $._initialized;\n\n        // Allowed calls:\n        // - initialSetup: the contract is not in the initializing state and no previous version was\n        //                 initialized\n        // - construction: the contract is initialized at version 1 (no reinitialization) and the\n        //                 current contract is just being deployed\n        bool initialSetup = initialized == 0 && isTopLevelCall;\n        bool construction = initialized == 1 && address(this).code.length == 0;\n\n        if (!initialSetup && !construction) {\n            revert InvalidInitialization();\n        }\n        $._initialized = 1;\n        if (isTopLevelCall) {\n            $._initializing = true;\n        }\n        _;\n        if (isTopLevelCall) {\n            $._initializing = false;\n            emit Initialized(1);\n        }\n    }\n\n    /**\n     * @dev A modifier that defines a protected reinitializer function that can be invoked at most once, and only if the\n     * contract hasn't been initialized to a greater version before. In its scope, `onlyInitializing` functions can be\n     * used to initialize parent contracts.\n     *\n     * A reinitializer may be used after the original initialization step. This is essential to configure modules that\n     * are added through upgrades and that require initialization.\n     *\n     * When `version` is 1, this modifier is similar to `initializer`, except that functions marked with `reinitializer`\n     * cannot be nested. If one is invoked in the context of another, execution will revert.\n     *\n     * Note that versions can jump in increments greater than 1; this implies that if multiple reinitializers coexist in\n     * a contract, executing them in the right order is up to the developer or operator.\n     *\n     * WARNING: Setting the version to 2**64 - 1 will prevent any future reinitialization.\n     *\n     * Emits an {Initialized} event.\n     */\n    modifier reinitializer(uint64 version) {\n        // solhint-disable-next-line var-name-mixedcase\n        InitializableStorage storage $ = _getInitializableStorage();\n\n        if ($._initializing || $._initialized >= version) {\n            revert InvalidInitialization();\n        }\n        $._initialized = version;\n        $._initializing = true;\n        _;\n        $._initializing = false;\n        emit Initialized(version);\n    }\n\n    /**\n     * @dev Modifier to protect an initialization function so that it can only be invoked by functions with the\n     * {initializer} and {reinitializer} modifiers, directly or indirectly.\n     */\n    modifier onlyInitializing() {\n        _checkInitializing();\n        _;\n    }\n\n    /**\n     * @dev Reverts if the contract is not in an initializing state. See {onlyInitializing}.\n     */\n    function _checkInitializing() internal view virtual {\n        if (!_isInitializing()) {\n            revert NotInitializing();\n        }\n    }\n\n    /**\n     * @dev Locks the contract, preventing any future reinitialization. This cannot be part of an initializer call.\n     * Calling this in the constructor of a contract will prevent that contract from being initialized or reinitialized\n     * to any version. It is recommended to use this to lock implementation contracts that are designed to be called\n     * through proxies.\n     *\n     * Emits an {Initialized} event the first time it is successfully executed.\n     */\n    function _disableInitializers() internal virtual {\n        // solhint-disable-next-line var-name-mixedcase\n        InitializableStorage storage $ = _getInitializableStorage();\n\n        if ($._initializing) {\n            revert InvalidInitialization();\n        }\n        if ($._initialized != type(uint64).max) {\n            $._initialized = type(uint64).max;\n            emit Initialized(type(uint64).max);\n        }\n    }\n\n    /**\n     * @dev Returns the highest version that has been initialized. See {reinitializer}.\n     */\n    function _getInitializedVersion() internal view returns (uint64) {\n        return _getInitializableStorage()._initialized;\n    }\n\n    /**\n     * @dev Returns `true` if the contract is currently initializing. See {onlyInitializing}.\n     */\n    function _isInitializing() internal view returns (bool) {\n        return _getInitializableStorage()._initializing;\n    }\n\n    /**\n     * @dev Pointer to storage slot. Allows integrators to override it with a custom storage location.\n     *\n     * NOTE: Consider following the ERC-7201 formula to derive storage locations.\n     */\n    function _initializableStorageSlot() internal pure virtual returns (bytes32) {\n        return INITIALIZABLE_STORAGE;\n    }\n\n    /**\n     * @dev Returns a pointer to the storage namespace.\n     */\n    // solhint-disable-next-line var-name-mixedcase\n    function _getInitializableStorage() private pure returns (InitializableStorage storage $) {\n        bytes32 slot = _initializableStorageSlot();\n        assembly {\n            $.slot := slot\n        }\n    }\n}\n"},"@openzeppelin/contracts/proxy/utils/UUPSUpgradeable.sol":{"content":"// SPDX-License-Identifier: MIT\n// OpenZeppelin Contracts (last updated v5.5.0) (proxy/utils/UUPSUpgradeable.sol)\n\npragma solidity ^0.8.22;\n\nimport {IERC1822Proxiable} from \"../../interfaces/draft-IERC1822.sol\";\nimport {ERC1967Utils} from \"../ERC1967/ERC1967Utils.sol\";\n\n/**\n * @dev An upgradeability mechanism designed for UUPS proxies. The functions included here can perform an upgrade of an\n * {ERC1967Proxy}, when this contract is set as the implementation behind such a proxy.\n *\n * A security mechanism ensures that an upgrade does not turn off upgradeability accidentally, although this risk is\n * reinstated if the upgrade retains upgradeability but removes the security mechanism, e.g. by replacing\n * `UUPSUpgradeable` with a custom implementation of upgrades.\n *\n * The {_authorizeUpgrade} function must be overridden to include access restriction to the upgrade mechanism.\n *\n * @custom:stateless\n */\nabstract contract UUPSUpgradeable is IERC1822Proxiable {\n    /// @custom:oz-upgrades-unsafe-allow state-variable-immutable\n    address private immutable __self = address(this);\n\n    /**\n     * @dev The version of the upgrade interface of the contract. If this getter is missing, both `upgradeTo(address)`\n     * and `upgradeToAndCall(address,bytes)` are present, and `upgradeTo` must be used if no function should be called,\n     * while `upgradeToAndCall` will invoke the `receive` function if the second argument is the empty byte string.\n     * If the getter returns `\"5.0.0\"`, only `upgradeToAndCall(address,bytes)` is present, and the second argument must\n     * be the empty byte string if no function should be called, making it impossible to invoke the `receive` function\n     * during an upgrade.\n     */\n    string public constant UPGRADE_INTERFACE_VERSION = \"5.0.0\";\n\n    /**\n     * @dev The call is from an unauthorized context.\n     */\n    error UUPSUnauthorizedCallContext();\n\n    /**\n     * @dev The storage `slot` is unsupported as a UUID.\n     */\n    error UUPSUnsupportedProxiableUUID(bytes32 slot);\n\n    /**\n     * @dev Check that the execution is being performed through a delegatecall call and that the execution context is\n     * a proxy contract with an implementation (as defined in ERC-1967) pointing to self. This should only be the case\n     * for UUPS and transparent proxies that are using the current contract as their implementation. Execution of a\n     * function through ERC-1167 minimal proxies (clones) would not normally pass this test, but is not guaranteed to\n     * fail.\n     */\n    modifier onlyProxy() {\n        _checkProxy();\n        _;\n    }\n\n    /**\n     * @dev Check that the execution is not being performed through a delegate call. This allows a function to be\n     * callable on the implementing contract but not through proxies.\n     */\n    modifier notDelegated() {\n        _checkNotDelegated();\n        _;\n    }\n\n    /**\n     * @dev Implementation of the ERC-1822 {proxiableUUID} function. This returns the storage slot used by the\n     * implementation. It is used to validate the implementation's compatibility when performing an upgrade.\n     *\n     * IMPORTANT: A proxy pointing at a proxiable contract should not be considered proxiable itself, because this risks\n     * bricking a proxy that upgrades to it, by delegating to itself until out of gas. Thus it is critical that this\n     * function revert if invoked through a proxy. This is guaranteed by the `notDelegated` modifier.\n     */\n    function proxiableUUID() external view notDelegated returns (bytes32) {\n        return ERC1967Utils.IMPLEMENTATION_SLOT;\n    }\n\n    /**\n     * @dev Upgrade the implementation of the proxy to `newImplementation`, and subsequently execute the function call\n     * encoded in `data`.\n     *\n     * Calls {_authorizeUpgrade}.\n     *\n     * Emits an {Upgraded} event.\n     *\n     * @custom:oz-upgrades-unsafe-allow-reachable delegatecall\n     */\n    function upgradeToAndCall(address newImplementation, bytes memory data) public payable virtual onlyProxy {\n        _authorizeUpgrade(newImplementation);\n        _upgradeToAndCallUUPS(newImplementation, data);\n    }\n\n    /**\n     * @dev Reverts if the execution is not performed via delegatecall or the execution\n     * context is not of a proxy with an ERC-1967 compliant implementation pointing to self.\n     */\n    function _checkProxy() internal view virtual {\n        if (\n            address(this) == __self || // Must be called through delegatecall\n            ERC1967Utils.getImplementation() != __self // Must be called through an active proxy\n        ) {\n            revert UUPSUnauthorizedCallContext();\n        }\n    }\n\n    /**\n     * @dev Reverts if the execution is performed via delegatecall.\n     * See {notDelegated}.\n     */\n    function _checkNotDelegated() internal view virtual {\n        if (address(this) != __self) {\n            // Must not be called through delegatecall\n            revert UUPSUnauthorizedCallContext();\n        }\n    }\n\n    /**\n     * @dev Function that should revert when `msg.sender` is not authorized to upgrade the contract. Called by\n     * {upgradeToAndCall}.\n     *\n     * Normally, this function will use an xref:access.adoc[access control] modifier such as {Ownable-onlyOwner}.\n     *\n     * ```solidity\n     * function _authorizeUpgrade(address) internal onlyOwner {}\n     * ```\n     */\n    function _authorizeUpgrade(address newImplementation) internal virtual;\n\n    /**\n     * @dev Performs an implementation upgrade with a security check for UUPS proxies, and additional setup call.\n     *\n     * As a security check, {proxiableUUID} is invoked in the new implementation, and the return value\n     * is expected to be the implementation slot in ERC-1967.\n     *\n     * Emits an {IERC1967-Upgraded} event.\n     */\n    function _upgradeToAndCallUUPS(address newImplementation, bytes memory data) private {\n        try IERC1822Proxiable(newImplementation).proxiableUUID() returns (bytes32 slot) {\n            if (slot != ERC1967Utils.IMPLEMENTATION_SLOT) {\n                revert UUPSUnsupportedProxiableUUID(slot);\n            }\n            ERC1967Utils.upgradeToAndCall(newImplementation, data);\n        } catch {\n            // The implementation is not UUPS\n            revert ERC1967Utils.ERC1967InvalidImplementation(newImplementation);\n        }\n    }\n}\n"},"@openzeppelin/contracts/token/ERC20/ERC20.sol":{"content":"// SPDX-License-Identifier: MIT\n// OpenZeppelin Contracts (last updated v5.5.0) (token/ERC20/ERC20.sol)\n\npragma solidity ^0.8.20;\n\nimport {IERC20} from \"./IERC20.sol\";\nimport {IERC20Metadata} from \"./extensions/IERC20Metadata.sol\";\nimport {Context} from \"../../utils/Context.sol\";\nimport {IERC20Errors} from \"../../interfaces/draft-IERC6093.sol\";\n\n/**\n * @dev Implementation of the {IERC20} interface.\n *\n * This implementation is agnostic to the way tokens are created. This means\n * that a supply mechanism has to be added in a derived contract using {_mint}.\n *\n * TIP: For a detailed writeup see our guide\n * https://forum.openzeppelin.com/t/how-to-implement-erc20-supply-mechanisms/226[How\n * to implement supply mechanisms].\n *\n * The default value of {decimals} is 18. To change this, you should override\n * this function so it returns a different value.\n *\n * We have followed general OpenZeppelin Contracts guidelines: functions revert\n * instead returning `false` on failure. This behavior is nonetheless\n * conventional and does not conflict with the expectations of ERC-20\n * applications.\n */\nabstract contract ERC20 is Context, IERC20, IERC20Metadata, IERC20Errors {\n    mapping(address account => uint256) private _balances;\n\n    mapping(address account => mapping(address spender => uint256)) private _allowances;\n\n    uint256 private _totalSupply;\n\n    string private _name;\n    string private _symbol;\n\n    /**\n     * @dev Sets the values for {name} and {symbol}.\n     *\n     * Both values are immutable: they can only be set once during construction.\n     */\n    constructor(string memory name_, string memory symbol_) {\n        _name = name_;\n        _symbol = symbol_;\n    }\n\n    /**\n     * @dev Returns the name of the token.\n     */\n    function name() public view virtual returns (string memory) {\n        return _name;\n    }\n\n    /**\n     * @dev Returns the symbol of the token, usually a shorter version of the\n     * name.\n     */\n    function symbol() public view virtual returns (string memory) {\n        return _symbol;\n    }\n\n    /**\n     * @dev Returns the number of decimals used to get its user representation.\n     * For example, if `decimals` equals `2`, a balance of `505` tokens should\n     * be displayed to a user as `5.05` (`505 / 10 ** 2`).\n     *\n     * Tokens usually opt for a value of 18, imitating the relationship between\n     * Ether and Wei. This is the default value returned by this function, unless\n     * it's overridden.\n     *\n     * NOTE: This information is only used for _display_ purposes: it in\n     * no way affects any of the arithmetic of the contract, including\n     * {IERC20-balanceOf} and {IERC20-transfer}.\n     */\n    function decimals() public view virtual returns (uint8) {\n        return 18;\n    }\n\n    /// @inheritdoc IERC20\n    function totalSupply() public view virtual returns (uint256) {\n        return _totalSupply;\n    }\n\n    /// @inheritdoc IERC20\n    function balanceOf(address account) public view virtual returns (uint256) {\n        return _balances[account];\n    }\n\n    /**\n     * @dev See {IERC20-transfer}.\n     *\n     * Requirements:\n     *\n     * - `to` cannot be the zero address.\n     * - the caller must have a balance of at least `value`.\n     */\n    function transfer(address to, uint256 value) public virtual returns (bool) {\n        address owner = _msgSender();\n        _transfer(owner, to, value);\n        return true;\n    }\n\n    /// @inheritdoc IERC20\n    function allowance(address owner, address spender) public view virtual returns (uint256) {\n        return _allowances[owner][spender];\n    }\n\n    /**\n     * @dev See {IERC20-approve}.\n     *\n     * NOTE: If `value` is the maximum `uint256`, the allowance is not updated on\n     * `transferFrom`. This is semantically equivalent to an infinite approval.\n     *\n     * Requirements:\n     *\n     * - `spender` cannot be the zero address.\n     */\n    function approve(address spender, uint256 value) public virtual returns (bool) {\n        address owner = _msgSender();\n        _approve(owner, spender, value);\n        return true;\n    }\n\n    /**\n     * @dev See {IERC20-transferFrom}.\n     *\n     * Skips emitting an {Approval} event indicating an allowance update. This is not\n     * required by the ERC. See {xref-ERC20-_approve-address-address-uint256-bool-}[_approve].\n     *\n     * NOTE: Does not update the allowance if the current allowance\n     * is the maximum `uint256`.\n     *\n     * Requirements:\n     *\n     * - `from` and `to` cannot be the zero address.\n     * - `from` must have a balance of at least `value`.\n     * - the caller must have allowance for ``from``'s tokens of at least\n     * `value`.\n     */\n    function transferFrom(address from, address to, uint256 value) public virtual returns (bool) {\n        address spender = _msgSender();\n        _spendAllowance(from, spender, value);\n        _transfer(from, to, value);\n        return true;\n    }\n\n    /**\n     * @dev Moves a `value` amount of tokens from `from` to `to`.\n     *\n     * This internal function is equivalent to {transfer}, and can be used to\n     * e.g. implement automatic token fees, slashing mechanisms, etc.\n     *\n     * Emits a {Transfer} event.\n     *\n     * NOTE: This function is not virtual, {_update} should be overridden instead.\n     */\n    function _transfer(address from, address to, uint256 value) internal {\n        if (from == address(0)) {\n            revert ERC20InvalidSender(address(0));\n        }\n        if (to == address(0)) {\n            revert ERC20InvalidReceiver(address(0));\n        }\n        _update(from, to, value);\n    }\n\n    /**\n     * @dev Transfers a `value` amount of tokens from `from` to `to`, or alternatively mints (or burns) if `from`\n     * (or `to`) is the zero address. All customizations to transfers, mints, and burns should be done by overriding\n     * this function.\n     *\n     * Emits a {Transfer} event.\n     */\n    function _update(address from, address to, uint256 value) internal virtual {\n        if (from == address(0)) {\n            // Overflow check required: The rest of the code assumes that totalSupply never overflows\n            _totalSupply += value;\n        } else {\n            uint256 fromBalance = _balances[from];\n            if (fromBalance < value) {\n                revert ERC20InsufficientBalance(from, fromBalance, value);\n            }\n            unchecked {\n                // Overflow not possible: value <= fromBalance <= totalSupply.\n                _balances[from] = fromBalance - value;\n            }\n        }\n\n        if (to == address(0)) {\n            unchecked {\n                // Overflow not possible: value <= totalSupply or value <= fromBalance <= totalSupply.\n                _totalSupply -= value;\n            }\n        } else {\n            unchecked {\n                // Overflow not possible: balance + value is at most totalSupply, which we know fits into a uint256.\n                _balances[to] += value;\n            }\n        }\n\n        emit Transfer(from, to, value);\n    }\n\n    /**\n     * @dev Creates a `value` amount of tokens and assigns them to `account`, by transferring it from address(0).\n     * Relies on the `_update` mechanism\n     *\n     * Emits a {Transfer} event with `from` set to the zero address.\n     *\n     * NOTE: This function is not virtual, {_update} should be overridden instead.\n     */\n    function _mint(address account, uint256 value) internal {\n        if (account == address(0)) {\n            revert ERC20InvalidReceiver(address(0));\n        }\n        _update(address(0), account, value);\n    }\n\n    /**\n     * @dev Destroys a `value` amount of tokens from `account`, lowering the total supply.\n     * Relies on the `_update` mechanism.\n     *\n     * Emits a {Transfer} event with `to` set to the zero address.\n     *\n     * NOTE: This function is not virtual, {_update} should be overridden instead\n     */\n    function _burn(address account, uint256 value) internal {\n        if (account == address(0)) {\n            revert ERC20InvalidSender(address(0));\n        }\n        _update(account, address(0), value);\n    }\n\n    /**\n     * @dev Sets `value` as the allowance of `spender` over the `owner`'s tokens.\n     *\n     * This internal function is equivalent to `approve`, and can be used to\n     * e.g. set automatic allowances for certain subsystems, etc.\n     *\n     * Emits an {Approval} event.\n     *\n     * Requirements:\n     *\n     * - `owner` cannot be the zero address.\n     * - `spender` cannot be the zero address.\n     *\n     * Overrides to this logic should be done to the variant with an additional `bool emitEvent` argument.\n     */\n    function _approve(address owner, address spender, uint256 value) internal {\n        _approve(owner, spender, value, true);\n    }\n\n    /**\n     * @dev Variant of {_approve} with an optional flag to enable or disable the {Approval} event.\n     *\n     * By default (when calling {_approve}) the flag is set to true. On the other hand, approval changes made by\n     * `_spendAllowance` during the `transferFrom` operation sets the flag to false. This saves gas by not emitting any\n     * `Approval` event during `transferFrom` operations.\n     *\n     * Anyone who wishes to continue emitting `Approval` events on the `transferFrom` operation can force the flag to\n     * true using the following override:\n     *\n     * ```solidity\n     * function _approve(address owner, address spender, uint256 value, bool) internal virtual override {\n     *     super._approve(owner, spender, value, true);\n     * }\n     * ```\n     *\n     * Requirements are the same as {_approve}.\n     */\n    function _approve(address owner, address spender, uint256 value, bool emitEvent) internal virtual {\n        if (owner == address(0)) {\n            revert ERC20InvalidApprover(address(0));\n        }\n        if (spender == address(0)) {\n            revert ERC20InvalidSpender(address(0));\n        }\n        _allowances[owner][spender] = value;\n        if (emitEvent) {\n            emit Approval(owner, spender, value);\n        }\n    }\n\n    /**\n     * @dev Updates `owner`'s allowance for `spender` based on spent `value`.\n     *\n     * Does not update the allowance value in case of infinite allowance.\n     * Revert if not enough allowance is available.\n     *\n     * Does not emit an {Approval} event.\n     */\n    function _spendAllowance(address owner, address spender, uint256 value) internal virtual {\n        uint256 currentAllowance = allowance(owner, spender);\n        if (currentAllowance < type(uint256).max) {\n            if (currentAllowance < value) {\n                revert ERC20InsufficientAllowance(spender, currentAllowance, value);\n            }\n            unchecked {\n                _approve(owner, spender, currentAllowance - value, false);\n            }\n        }\n    }\n}\n"},"@openzeppelin/contracts/token/ERC20/extensions/ERC4626.sol":{"content":"// SPDX-License-Identifier: MIT\n// OpenZeppelin Contracts (last updated v5.5.0) (token/ERC20/extensions/ERC4626.sol)\n\npragma solidity ^0.8.24;\n\nimport {IERC20, IERC20Metadata, ERC20} from \"../ERC20.sol\";\nimport {SafeERC20} from \"../utils/SafeERC20.sol\";\nimport {IERC4626} from \"../../../interfaces/IERC4626.sol\";\nimport {LowLevelCall} from \"../../../utils/LowLevelCall.sol\";\nimport {Memory} from \"../../../utils/Memory.sol\";\nimport {Math} from \"../../../utils/math/Math.sol\";\n\n/**\n * @dev Implementation of the ERC-4626 \"Tokenized Vault Standard\" as defined in\n * https://eips.ethereum.org/EIPS/eip-4626[ERC-4626].\n *\n * This extension allows the minting and burning of \"shares\" (represented using the ERC-20 inheritance) in exchange for\n * underlying \"assets\" through standardized {deposit}, {mint}, {redeem} and {burn} workflows. This contract extends\n * the ERC-20 standard. Any additional extensions included along it would affect the \"shares\" token represented by this\n * contract and not the \"assets\" token which is an independent contract.\n *\n * [CAUTION]\n * ====\n * In empty (or nearly empty) ERC-4626 vaults, deposits are at high risk of being stolen through frontrunning\n * with a \"donation\" to the vault that inflates the price of a share. This is variously known as a donation or inflation\n * attack and is essentially a problem of slippage. Vault deployers can protect against this attack by making an initial\n * deposit of a non-trivial amount of the asset, such that price manipulation becomes infeasible. Withdrawals may\n * similarly be affected by slippage. Users can protect against this attack as well as unexpected slippage in general by\n * verifying the amount received is as expected, using a wrapper that performs these checks such as\n * https://github.com/fei-protocol/ERC4626#erc4626router-and-base[ERC4626Router].\n *\n * Since v4.9, this implementation introduces configurable virtual assets and shares to help developers mitigate that risk.\n * The `_decimalsOffset()` corresponds to an offset in the decimal representation between the underlying asset's decimals\n * and the vault decimals. This offset also determines the rate of virtual shares to virtual assets in the vault, which\n * itself determines the initial exchange rate. While not fully preventing the attack, analysis shows that the default\n * offset (0) makes it non-profitable even if an attacker is able to capture value from multiple user deposits, as a result\n * of the value being captured by the virtual shares (out of the attacker's donation) matching the attacker's expected gains.\n * With a larger offset, the attack becomes orders of magnitude more expensive than it is profitable. More details about the\n * underlying math can be found xref:ROOT:erc4626.adoc#inflation-attack[here].\n *\n * The drawback of this approach is that the virtual shares do capture (a very small) part of the value being accrued\n * to the vault. Also, if the vault experiences losses, the users try to exit the vault, the virtual shares and assets\n * will cause the first user to exit to experience reduced losses in detriment to the last users that will experience\n * bigger losses. Developers willing to revert back to the pre-v4.9 behavior just need to override the\n * `_convertToShares` and `_convertToAssets` functions.\n *\n * To learn more, check out our xref:ROOT:erc4626.adoc[ERC-4626 guide].\n * ====\n *\n * [NOTE]\n * ====\n * When overriding this contract, some elements must be considered:\n *\n * * When overriding the behavior of the deposit or withdraw mechanisms, it is recommended to override the internal\n * functions. Overriding {_deposit} automatically affects both {deposit} and {mint}. Similarly, overriding {_withdraw}\n * automatically affects both {withdraw} and {redeem}. Overall it is not recommended to override the public facing\n * functions since that could lead to inconsistent behaviors between the {deposit} and {mint} or between {withdraw} and\n * {redeem}, which is documented to have lead to loss of funds.\n *\n * * Overrides to the deposit or withdraw mechanism must be reflected in the preview functions as well.\n *\n * * {maxWithdraw} depends on {maxRedeem}. Therefore, overriding {maxRedeem} only is enough. On the other hand,\n * overriding {maxWithdraw} only would have no effect on {maxRedeem}, and could create an inconsistency between the two\n * functions.\n *\n * * If {previewRedeem} is overridden to revert, {maxWithdraw} must be overridden as necessary to ensure it\n * always return successfully.\n * ====\n */\nabstract contract ERC4626 is ERC20, IERC4626 {\n    using Math for uint256;\n\n    IERC20 private immutable _asset;\n    uint8 private immutable _underlyingDecimals;\n\n    /**\n     * @dev Attempted to deposit more assets than the max amount for `receiver`.\n     */\n    error ERC4626ExceededMaxDeposit(address receiver, uint256 assets, uint256 max);\n\n    /**\n     * @dev Attempted to mint more shares than the max amount for `receiver`.\n     */\n    error ERC4626ExceededMaxMint(address receiver, uint256 shares, uint256 max);\n\n    /**\n     * @dev Attempted to withdraw more assets than the max amount for `receiver`.\n     */\n    error ERC4626ExceededMaxWithdraw(address owner, uint256 assets, uint256 max);\n\n    /**\n     * @dev Attempted to redeem more shares than the max amount for `receiver`.\n     */\n    error ERC4626ExceededMaxRedeem(address owner, uint256 shares, uint256 max);\n\n    /**\n     * @dev Set the underlying asset contract. This must be an ERC20-compatible contract (ERC-20 or ERC-777).\n     */\n    constructor(IERC20 asset_) {\n        (bool success, uint8 assetDecimals) = _tryGetAssetDecimals(asset_);\n        _underlyingDecimals = success ? assetDecimals : 18;\n        _asset = asset_;\n    }\n\n    /**\n     * @dev Attempts to fetch the asset decimals. A return value of false indicates that the attempt failed in some way.\n     */\n    function _tryGetAssetDecimals(IERC20 asset_) private view returns (bool ok, uint8 assetDecimals) {\n        Memory.Pointer ptr = Memory.getFreeMemoryPointer();\n        (bool success, bytes32 returnedDecimals, ) = LowLevelCall.staticcallReturn64Bytes(\n            address(asset_),\n            abi.encodeCall(IERC20Metadata.decimals, ())\n        );\n        Memory.setFreeMemoryPointer(ptr);\n\n        return\n            (success && LowLevelCall.returnDataSize() >= 32 && uint256(returnedDecimals) <= type(uint8).max)\n                ? (true, uint8(uint256(returnedDecimals)))\n                : (false, 0);\n    }\n\n    /**\n     * @dev Decimals are computed by adding the decimal offset on top of the underlying asset's decimals. This\n     * \"original\" value is cached during construction of the vault contract. If this read operation fails (e.g., the\n     * asset has not been created yet), a default of 18 is used to represent the underlying asset's decimals.\n     *\n     * See {IERC20Metadata-decimals}.\n     */\n    function decimals() public view virtual override(IERC20Metadata, ERC20) returns (uint8) {\n        return _underlyingDecimals + _decimalsOffset();\n    }\n\n    /// @inheritdoc IERC4626\n    function asset() public view virtual returns (address) {\n        return address(_asset);\n    }\n\n    /// @inheritdoc IERC4626\n    function totalAssets() public view virtual returns (uint256) {\n        return IERC20(asset()).balanceOf(address(this));\n    }\n\n    /// @inheritdoc IERC4626\n    function convertToShares(uint256 assets) public view virtual returns (uint256) {\n        return _convertToShares(assets, Math.Rounding.Floor);\n    }\n\n    /// @inheritdoc IERC4626\n    function convertToAssets(uint256 shares) public view virtual returns (uint256) {\n        return _convertToAssets(shares, Math.Rounding.Floor);\n    }\n\n    /// @inheritdoc IERC4626\n    function maxDeposit(address) public view virtual returns (uint256) {\n        return type(uint256).max;\n    }\n\n    /// @inheritdoc IERC4626\n    function maxMint(address) public view virtual returns (uint256) {\n        return type(uint256).max;\n    }\n\n    /// @inheritdoc IERC4626\n    function maxWithdraw(address owner) public view virtual returns (uint256) {\n        return previewRedeem(maxRedeem(owner));\n    }\n\n    /// @inheritdoc IERC4626\n    function maxRedeem(address owner) public view virtual returns (uint256) {\n        return balanceOf(owner);\n    }\n\n    /// @inheritdoc IERC4626\n    function previewDeposit(uint256 assets) public view virtual returns (uint256) {\n        return _convertToShares(assets, Math.Rounding.Floor);\n    }\n\n    /// @inheritdoc IERC4626\n    function previewMint(uint256 shares) public view virtual returns (uint256) {\n        return _convertToAssets(shares, Math.Rounding.Ceil);\n    }\n\n    /// @inheritdoc IERC4626\n    function previewWithdraw(uint256 assets) public view virtual returns (uint256) {\n        return _convertToShares(assets, Math.Rounding.Ceil);\n    }\n\n    /// @inheritdoc IERC4626\n    function previewRedeem(uint256 shares) public view virtual returns (uint256) {\n        return _convertToAssets(shares, Math.Rounding.Floor);\n    }\n\n    /// @inheritdoc IERC4626\n    function deposit(uint256 assets, address receiver) public virtual returns (uint256) {\n        uint256 maxAssets = maxDeposit(receiver);\n        if (assets > maxAssets) {\n            revert ERC4626ExceededMaxDeposit(receiver, assets, maxAssets);\n        }\n\n        uint256 shares = previewDeposit(assets);\n        _deposit(_msgSender(), receiver, assets, shares);\n\n        return shares;\n    }\n\n    /// @inheritdoc IERC4626\n    function mint(uint256 shares, address receiver) public virtual returns (uint256) {\n        uint256 maxShares = maxMint(receiver);\n        if (shares > maxShares) {\n            revert ERC4626ExceededMaxMint(receiver, shares, maxShares);\n        }\n\n        uint256 assets = previewMint(shares);\n        _deposit(_msgSender(), receiver, assets, shares);\n\n        return assets;\n    }\n\n    /// @inheritdoc IERC4626\n    function withdraw(uint256 assets, address receiver, address owner) public virtual returns (uint256) {\n        uint256 maxAssets = maxWithdraw(owner);\n        if (assets > maxAssets) {\n            revert ERC4626ExceededMaxWithdraw(owner, assets, maxAssets);\n        }\n\n        uint256 shares = previewWithdraw(assets);\n        _withdraw(_msgSender(), receiver, owner, assets, shares);\n\n        return shares;\n    }\n\n    /// @inheritdoc IERC4626\n    function redeem(uint256 shares, address receiver, address owner) public virtual returns (uint256) {\n        uint256 maxShares = maxRedeem(owner);\n        if (shares > maxShares) {\n            revert ERC4626ExceededMaxRedeem(owner, shares, maxShares);\n        }\n\n        uint256 assets = previewRedeem(shares);\n        _withdraw(_msgSender(), receiver, owner, assets, shares);\n\n        return assets;\n    }\n\n    /**\n     * @dev Internal conversion function (from assets to shares) with support for rounding direction.\n     */\n    function _convertToShares(uint256 assets, Math.Rounding rounding) internal view virtual returns (uint256) {\n        return assets.mulDiv(totalSupply() + 10 ** _decimalsOffset(), totalAssets() + 1, rounding);\n    }\n\n    /**\n     * @dev Internal conversion function (from shares to assets) with support for rounding direction.\n     */\n    function _convertToAssets(uint256 shares, Math.Rounding rounding) internal view virtual returns (uint256) {\n        return shares.mulDiv(totalAssets() + 1, totalSupply() + 10 ** _decimalsOffset(), rounding);\n    }\n\n    /**\n     * @dev Deposit/mint common workflow.\n     */\n    function _deposit(address caller, address receiver, uint256 assets, uint256 shares) internal virtual {\n        // If asset() is ERC-777, `transferFrom` can trigger a reentrancy BEFORE the transfer happens through the\n        // `tokensToSend` hook. On the other hand, the `tokenReceived` hook, that is triggered after the transfer,\n        // calls the vault, which is assumed not malicious.\n        //\n        // Conclusion: we need to do the transfer before we mint so that any reentrancy would happen before the\n        // assets are transferred and before the shares are minted, which is a valid state.\n        // slither-disable-next-line reentrancy-no-eth\n        SafeERC20.safeTransferFrom(IERC20(asset()), caller, address(this), assets);\n        _mint(receiver, shares);\n\n        emit Deposit(caller, receiver, assets, shares);\n    }\n\n    /**\n     * @dev Withdraw/redeem common workflow.\n     */\n    function _withdraw(\n        address caller,\n        address receiver,\n        address owner,\n        uint256 assets,\n        uint256 shares\n    ) internal virtual {\n        if (caller != owner) {\n            _spendAllowance(owner, caller, shares);\n        }\n\n        // If asset() is ERC-777, `transfer` can trigger a reentrancy AFTER the transfer happens through the\n        // `tokensReceived` hook. On the other hand, the `tokensToSend` hook, that is triggered before the transfer,\n        // calls the vault, which is assumed not malicious.\n        //\n        // Conclusion: we need to do the transfer after the burn so that any reentrancy would happen after the\n        // shares are burned and after the assets are transferred, which is a valid state.\n        _burn(owner, shares);\n        SafeERC20.safeTransfer(IERC20(asset()), receiver, assets);\n\n        emit Withdraw(caller, receiver, owner, assets, shares);\n    }\n\n    function _decimalsOffset() internal view virtual returns (uint8) {\n        return 0;\n    }\n}\n"},"@openzeppelin/contracts/token/ERC20/extensions/IERC20Metadata.sol":{"content":"// SPDX-License-Identifier: MIT\n// OpenZeppelin Contracts (last updated v5.4.0) (token/ERC20/extensions/IERC20Metadata.sol)\n\npragma solidity >=0.6.2;\n\nimport {IERC20} from \"../IERC20.sol\";\n\n/**\n * @dev Interface for the optional metadata functions from the ERC-20 standard.\n */\ninterface IERC20Metadata is IERC20 {\n    /**\n     * @dev Returns the name of the token.\n     */\n    function name() external view returns (string memory);\n\n    /**\n     * @dev Returns the symbol of the token.\n     */\n    function symbol() external view returns (string memory);\n\n    /**\n     * @dev Returns the decimals places of the token.\n     */\n    function decimals() external view returns (uint8);\n}\n"},"@openzeppelin/contracts/token/ERC20/IERC20.sol":{"content":"// SPDX-License-Identifier: MIT\n// OpenZeppelin Contracts (last updated v5.4.0) (token/ERC20/IERC20.sol)\n\npragma solidity >=0.4.16;\n\n/**\n * @dev Interface of the ERC-20 standard as defined in the ERC.\n */\ninterface IERC20 {\n    /**\n     * @dev Emitted when `value` tokens are moved from one account (`from`) to\n     * another (`to`).\n     *\n     * Note that `value` may be zero.\n     */\n    event Transfer(address indexed from, address indexed to, uint256 value);\n\n    /**\n     * @dev Emitted when the allowance of a `spender` for an `owner` is set by\n     * a call to {approve}. `value` is the new allowance.\n     */\n    event Approval(address indexed owner, address indexed spender, uint256 value);\n\n    /**\n     * @dev Returns the value of tokens in existence.\n     */\n    function totalSupply() external view returns (uint256);\n\n    /**\n     * @dev Returns the value of tokens owned by `account`.\n     */\n    function balanceOf(address account) external view returns (uint256);\n\n    /**\n     * @dev Moves a `value` amount of tokens from the caller's account to `to`.\n     *\n     * Returns a boolean value indicating whether the operation succeeded.\n     *\n     * Emits a {Transfer} event.\n     */\n    function transfer(address to, uint256 value) external returns (bool);\n\n    /**\n     * @dev Returns the remaining number of tokens that `spender` will be\n     * allowed to spend on behalf of `owner` through {transferFrom}. This is\n     * zero by default.\n     *\n     * This value changes when {approve} or {transferFrom} are called.\n     */\n    function allowance(address owner, address spender) external view returns (uint256);\n\n    /**\n     * @dev Sets a `value` amount of tokens as the allowance of `spender` over the\n     * caller's tokens.\n     *\n     * Returns a boolean value indicating whether the operation succeeded.\n     *\n     * IMPORTANT: Beware that changing an allowance with this method brings the risk\n     * that someone may use both the old and the new allowance by unfortunate\n     * transaction ordering. One possible solution to mitigate this race\n     * condition is to first reduce the spender's allowance to 0 and set the\n     * desired value afterwards:\n     * https://github.com/ethereum/EIPs/issues/20#issuecomment-263524729\n     *\n     * Emits an {Approval} event.\n     */\n    function approve(address spender, uint256 value) external returns (bool);\n\n    /**\n     * @dev Moves a `value` amount of tokens from `from` to `to` using the\n     * allowance mechanism. `value` is then deducted from the caller's\n     * allowance.\n     *\n     * Returns a boolean value indicating whether the operation succeeded.\n     *\n     * Emits a {Transfer} event.\n     */\n    function transferFrom(address from, address to, uint256 value) external returns (bool);\n}\n"},"@openzeppelin/contracts/token/ERC20/utils/SafeERC20.sol":{"content":"// SPDX-License-Identifier: MIT\n// OpenZeppelin Contracts (last updated v5.5.0) (token/ERC20/utils/SafeERC20.sol)\n\npragma solidity ^0.8.20;\n\nimport {IERC20} from \"../IERC20.sol\";\nimport {IERC1363} from \"../../../interfaces/IERC1363.sol\";\n\n/**\n * @title SafeERC20\n * @dev Wrappers around ERC-20 operations that throw on failure (when the token\n * contract returns false). Tokens that return no value (and instead revert or\n * throw on failure) are also supported, non-reverting calls are assumed to be\n * successful.\n * To use this library you can add a `using SafeERC20 for IERC20;` statement to your contract,\n * which allows you to call the safe operations as `token.safeTransfer(...)`, etc.\n */\nlibrary SafeERC20 {\n    /**\n     * @dev An operation with an ERC-20 token failed.\n     */\n    error SafeERC20FailedOperation(address token);\n\n    /**\n     * @dev Indicates a failed `decreaseAllowance` request.\n     */\n    error SafeERC20FailedDecreaseAllowance(address spender, uint256 currentAllowance, uint256 requestedDecrease);\n\n    /**\n     * @dev Transfer `value` amount of `token` from the calling contract to `to`. If `token` returns no value,\n     * non-reverting calls are assumed to be successful.\n     */\n    function safeTransfer(IERC20 token, address to, uint256 value) internal {\n        if (!_safeTransfer(token, to, value, true)) {\n            revert SafeERC20FailedOperation(address(token));\n        }\n    }\n\n    /**\n     * @dev Transfer `value` amount of `token` from `from` to `to`, spending the approval given by `from` to the\n     * calling contract. If `token` returns no value, non-reverting calls are assumed to be successful.\n     */\n    function safeTransferFrom(IERC20 token, address from, address to, uint256 value) internal {\n        if (!_safeTransferFrom(token, from, to, value, true)) {\n            revert SafeERC20FailedOperation(address(token));\n        }\n    }\n\n    /**\n     * @dev Variant of {safeTransfer} that returns a bool instead of reverting if the operation is not successful.\n     */\n    function trySafeTransfer(IERC20 token, address to, uint256 value) internal returns (bool) {\n        return _safeTransfer(token, to, value, false);\n    }\n\n    /**\n     * @dev Variant of {safeTransferFrom} that returns a bool instead of reverting if the operation is not successful.\n     */\n    function trySafeTransferFrom(IERC20 token, address from, address to, uint256 value) internal returns (bool) {\n        return _safeTransferFrom(token, from, to, value, false);\n    }\n\n    /**\n     * @dev Increase the calling contract's allowance toward `spender` by `value`. If `token` returns no value,\n     * non-reverting calls are assumed to be successful.\n     *\n     * IMPORTANT: If the token implements ERC-7674 (ERC-20 with temporary allowance), and if the \"client\"\n     * smart contract uses ERC-7674 to set temporary allowances, then the \"client\" smart contract should avoid using\n     * this function. Performing a {safeIncreaseAllowance} or {safeDecreaseAllowance} operation on a token contract\n     * that has a non-zero temporary allowance (for that particular owner-spender) will result in unexpected behavior.\n     */\n    function safeIncreaseAllowance(IERC20 token, address spender, uint256 value) internal {\n        uint256 oldAllowance = token.allowance(address(this), spender);\n        forceApprove(token, spender, oldAllowance + value);\n    }\n\n    /**\n     * @dev Decrease the calling contract's allowance toward `spender` by `requestedDecrease`. If `token` returns no\n     * value, non-reverting calls are assumed to be successful.\n     *\n     * IMPORTANT: If the token implements ERC-7674 (ERC-20 with temporary allowance), and if the \"client\"\n     * smart contract uses ERC-7674 to set temporary allowances, then the \"client\" smart contract should avoid using\n     * this function. Performing a {safeIncreaseAllowance} or {safeDecreaseAllowance} operation on a token contract\n     * that has a non-zero temporary allowance (for that particular owner-spender) will result in unexpected behavior.\n     */\n    function safeDecreaseAllowance(IERC20 token, address spender, uint256 requestedDecrease) internal {\n        unchecked {\n            uint256 currentAllowance = token.allowance(address(this), spender);\n            if (currentAllowance < requestedDecrease) {\n                revert SafeERC20FailedDecreaseAllowance(spender, currentAllowance, requestedDecrease);\n            }\n            forceApprove(token, spender, currentAllowance - requestedDecrease);\n        }\n    }\n\n    /**\n     * @dev Set the calling contract's allowance toward `spender` to `value`. If `token` returns no value,\n     * non-reverting calls are assumed to be successful. Meant to be used with tokens that require the approval\n     * to be set to zero before setting it to a non-zero value, such as USDT.\n     *\n     * NOTE: If the token implements ERC-7674, this function will not modify any temporary allowance. This function\n     * only sets the \"standard\" allowance. Any temporary allowance will remain active, in addition to the value being\n     * set here.\n     */\n    function forceApprove(IERC20 token, address spender, uint256 value) internal {\n        if (!_safeApprove(token, spender, value, false)) {\n            if (!_safeApprove(token, spender, 0, true)) revert SafeERC20FailedOperation(address(token));\n            if (!_safeApprove(token, spender, value, true)) revert SafeERC20FailedOperation(address(token));\n        }\n    }\n\n    /**\n     * @dev Performs an {ERC1363} transferAndCall, with a fallback to the simple {ERC20} transfer if the target has no\n     * code. This can be used to implement an {ERC721}-like safe transfer that relies on {ERC1363} checks when\n     * targeting contracts.\n     *\n     * Reverts if the returned value is other than `true`.\n     */\n    function transferAndCallRelaxed(IERC1363 token, address to, uint256 value, bytes memory data) internal {\n        if (to.code.length == 0) {\n            safeTransfer(token, to, value);\n        } else if (!token.transferAndCall(to, value, data)) {\n            revert SafeERC20FailedOperation(address(token));\n        }\n    }\n\n    /**\n     * @dev Performs an {ERC1363} transferFromAndCall, with a fallback to the simple {ERC20} transferFrom if the target\n     * has no code. This can be used to implement an {ERC721}-like safe transfer that relies on {ERC1363} checks when\n     * targeting contracts.\n     *\n     * Reverts if the returned value is other than `true`.\n     */\n    function transferFromAndCallRelaxed(\n        IERC1363 token,\n        address from,\n        address to,\n        uint256 value,\n        bytes memory data\n    ) internal {\n        if (to.code.length == 0) {\n            safeTransferFrom(token, from, to, value);\n        } else if (!token.transferFromAndCall(from, to, value, data)) {\n            revert SafeERC20FailedOperation(address(token));\n        }\n    }\n\n    /**\n     * @dev Performs an {ERC1363} approveAndCall, with a fallback to the simple {ERC20} approve if the target has no\n     * code. This can be used to implement an {ERC721}-like safe transfer that rely on {ERC1363} checks when\n     * targeting contracts.\n     *\n     * NOTE: When the recipient address (`to`) has no code (i.e. is an EOA), this function behaves as {forceApprove}.\n     * Oppositely, when the recipient address (`to`) has code, this function only attempts to call {ERC1363-approveAndCall}\n     * once without retrying, and relies on the returned value to be true.\n     *\n     * Reverts if the returned value is other than `true`.\n     */\n    function approveAndCallRelaxed(IERC1363 token, address to, uint256 value, bytes memory data) internal {\n        if (to.code.length == 0) {\n            forceApprove(token, to, value);\n        } else if (!token.approveAndCall(to, value, data)) {\n            revert SafeERC20FailedOperation(address(token));\n        }\n    }\n\n    /**\n     * @dev Imitates a Solidity `token.transfer(to, value)` call, relaxing the requirement on the return value: the\n     * return value is optional (but if data is returned, it must not be false).\n     *\n     * @param token The token targeted by the call.\n     * @param to The recipient of the tokens\n     * @param value The amount of token to transfer\n     * @param bubble Behavior switch if the transfer call reverts: bubble the revert reason or return a false boolean.\n     */\n    function _safeTransfer(IERC20 token, address to, uint256 value, bool bubble) private returns (bool success) {\n        bytes4 selector = IERC20.transfer.selector;\n\n        assembly (\"memory-safe\") {\n            let fmp := mload(0x40)\n            mstore(0x00, selector)\n            mstore(0x04, and(to, shr(96, not(0))))\n            mstore(0x24, value)\n            success := call(gas(), token, 0, 0x00, 0x44, 0x00, 0x20)\n            // if call success and return is true, all is good.\n            // otherwise (not success or return is not true), we need to perform further checks\n            if iszero(and(success, eq(mload(0x00), 1))) {\n                // if the call was a failure and bubble is enabled, bubble the error\n                if and(iszero(success), bubble) {\n                    returndatacopy(fmp, 0x00, returndatasize())\n                    revert(fmp, returndatasize())\n                }\n                // if the return value is not true, then the call is only successful if:\n                // - the token address has code\n                // - the returndata is empty\n                success := and(success, and(iszero(returndatasize()), gt(extcodesize(token), 0)))\n            }\n            mstore(0x40, fmp)\n        }\n    }\n\n    /**\n     * @dev Imitates a Solidity `token.transferFrom(from, to, value)` call, relaxing the requirement on the return\n     * value: the return value is optional (but if data is returned, it must not be false).\n     *\n     * @param token The token targeted by the call.\n     * @param from The sender of the tokens\n     * @param to The recipient of the tokens\n     * @param value The amount of token to transfer\n     * @param bubble Behavior switch if the transfer call reverts: bubble the revert reason or return a false boolean.\n     */\n    function _safeTransferFrom(\n        IERC20 token,\n        address from,\n        address to,\n        uint256 value,\n        bool bubble\n    ) private returns (bool success) {\n        bytes4 selector = IERC20.transferFrom.selector;\n\n        assembly (\"memory-safe\") {\n            let fmp := mload(0x40)\n            mstore(0x00, selector)\n            mstore(0x04, and(from, shr(96, not(0))))\n            mstore(0x24, and(to, shr(96, not(0))))\n            mstore(0x44, value)\n            success := call(gas(), token, 0, 0x00, 0x64, 0x00, 0x20)\n            // if call success and return is true, all is good.\n            // otherwise (not success or return is not true), we need to perform further checks\n            if iszero(and(success, eq(mload(0x00), 1))) {\n                // if the call was a failure and bubble is enabled, bubble the error\n                if and(iszero(success), bubble) {\n                    returndatacopy(fmp, 0x00, returndatasize())\n                    revert(fmp, returndatasize())\n                }\n                // if the return value is not true, then the call is only successful if:\n                // - the token address has code\n                // - the returndata is empty\n                success := and(success, and(iszero(returndatasize()), gt(extcodesize(token), 0)))\n            }\n            mstore(0x40, fmp)\n            mstore(0x60, 0)\n        }\n    }\n\n    /**\n     * @dev Imitates a Solidity `token.approve(spender, value)` call, relaxing the requirement on the return value:\n     * the return value is optional (but if data is returned, it must not be false).\n     *\n     * @param token The token targeted by the call.\n     * @param spender The spender of the tokens\n     * @param value The amount of token to transfer\n     * @param bubble Behavior switch if the transfer call reverts: bubble the revert reason or return a false boolean.\n     */\n    function _safeApprove(IERC20 token, address spender, uint256 value, bool bubble) private returns (bool success) {\n        bytes4 selector = IERC20.approve.selector;\n\n        assembly (\"memory-safe\") {\n            let fmp := mload(0x40)\n            mstore(0x00, selector)\n            mstore(0x04, and(spender, shr(96, not(0))))\n            mstore(0x24, value)\n            success := call(gas(), token, 0, 0x00, 0x44, 0x00, 0x20)\n            // if call success and return is true, all is good.\n            // otherwise (not success or return is not true), we need to perform further checks\n            if iszero(and(success, eq(mload(0x00), 1))) {\n                // if the call was a failure and bubble is enabled, bubble the error\n                if and(iszero(success), bubble) {\n                    returndatacopy(fmp, 0x00, returndatasize())\n                    revert(fmp, returndatasize())\n                }\n                // if the return value is not true, then the call is only successful if:\n                // - the token address has code\n                // - the returndata is empty\n                success := and(success, and(iszero(returndatasize()), gt(extcodesize(token), 0)))\n            }\n            mstore(0x40, fmp)\n        }\n    }\n}\n"},"@openzeppelin/contracts/utils/Address.sol":{"content":"// SPDX-License-Identifier: MIT\n// OpenZeppelin Contracts (last updated v5.5.0) (utils/Address.sol)\n\npragma solidity ^0.8.20;\n\nimport {Errors} from \"./Errors.sol\";\nimport {LowLevelCall} from \"./LowLevelCall.sol\";\n\n/**\n * @dev Collection of functions related to the address type\n */\nlibrary Address {\n    /**\n     * @dev There's no code at `target` (it is not a contract).\n     */\n    error AddressEmptyCode(address target);\n\n    /**\n     * @dev Replacement for Solidity's `transfer`: sends `amount` wei to\n     * `recipient`, forwarding all available gas and reverting on errors.\n     *\n     * https://eips.ethereum.org/EIPS/eip-1884[EIP1884] increases the gas cost\n     * of certain opcodes, possibly making contracts go over the 2300 gas limit\n     * imposed by `transfer`, making them unable to receive funds via\n     * `transfer`. {sendValue} removes this limitation.\n     *\n     * https://consensys.net/diligence/blog/2019/09/stop-using-soliditys-transfer-now/[Learn more].\n     *\n     * IMPORTANT: because control is transferred to `recipient`, care must be\n     * taken to not create reentrancy vulnerabilities. Consider using\n     * {ReentrancyGuard} or the\n     * https://solidity.readthedocs.io/en/v0.8.20/security-considerations.html#use-the-checks-effects-interactions-pattern[checks-effects-interactions pattern].\n     */\n    function sendValue(address payable recipient, uint256 amount) internal {\n        if (address(this).balance < amount) {\n            revert Errors.InsufficientBalance(address(this).balance, amount);\n        }\n        if (LowLevelCall.callNoReturn(recipient, amount, \"\")) {\n            // call successful, nothing to do\n            return;\n        } else if (LowLevelCall.returnDataSize() > 0) {\n            LowLevelCall.bubbleRevert();\n        } else {\n            revert Errors.FailedCall();\n        }\n    }\n\n    /**\n     * @dev Performs a Solidity function call using a low level `call`. A\n     * plain `call` is an unsafe replacement for a function call: use this\n     * function instead.\n     *\n     * If `target` reverts with a revert reason or custom error, it is bubbled\n     * up by this function (like regular Solidity function calls). However, if\n     * the call reverted with no returned reason, this function reverts with a\n     * {Errors.FailedCall} error.\n     *\n     * Returns the raw returned data. To convert to the expected return value,\n     * use https://solidity.readthedocs.io/en/latest/units-and-global-variables.html?highlight=abi.decode#abi-encoding-and-decoding-functions[`abi.decode`].\n     *\n     * Requirements:\n     *\n     * - `target` must be a contract.\n     * - calling `target` with `data` must not revert.\n     */\n    function functionCall(address target, bytes memory data) internal returns (bytes memory) {\n        return functionCallWithValue(target, data, 0);\n    }\n\n    /**\n     * @dev Same as {xref-Address-functionCall-address-bytes-}[`functionCall`],\n     * but also transferring `value` wei to `target`.\n     *\n     * Requirements:\n     *\n     * - the calling contract must have an ETH balance of at least `value`.\n     * - the called Solidity function must be `payable`.\n     */\n    function functionCallWithValue(address target, bytes memory data, uint256 value) internal returns (bytes memory) {\n        if (address(this).balance < value) {\n            revert Errors.InsufficientBalance(address(this).balance, value);\n        }\n        bool success = LowLevelCall.callNoReturn(target, value, data);\n        if (success && (LowLevelCall.returnDataSize() > 0 || target.code.length > 0)) {\n            return LowLevelCall.returnData();\n        } else if (success) {\n            revert AddressEmptyCode(target);\n        } else if (LowLevelCall.returnDataSize() > 0) {\n            LowLevelCall.bubbleRevert();\n        } else {\n            revert Errors.FailedCall();\n        }\n    }\n\n    /**\n     * @dev Same as {xref-Address-functionCall-address-bytes-}[`functionCall`],\n     * but performing a static call.\n     */\n    function functionStaticCall(address target, bytes memory data) internal view returns (bytes memory) {\n        bool success = LowLevelCall.staticcallNoReturn(target, data);\n        if (success && (LowLevelCall.returnDataSize() > 0 || target.code.length > 0)) {\n            return LowLevelCall.returnData();\n        } else if (success) {\n            revert AddressEmptyCode(target);\n        } else if (LowLevelCall.returnDataSize() > 0) {\n            LowLevelCall.bubbleRevert();\n        } else {\n            revert Errors.FailedCall();\n        }\n    }\n\n    /**\n     * @dev Same as {xref-Address-functionCall-address-bytes-}[`functionCall`],\n     * but performing a delegate call.\n     */\n    function functionDelegateCall(address target, bytes memory data) internal returns (bytes memory) {\n        bool success = LowLevelCall.delegatecallNoReturn(target, data);\n        if (success && (LowLevelCall.returnDataSize() > 0 || target.code.length > 0)) {\n            return LowLevelCall.returnData();\n        } else if (success) {\n            revert AddressEmptyCode(target);\n        } else if (LowLevelCall.returnDataSize() > 0) {\n            LowLevelCall.bubbleRevert();\n        } else {\n            revert Errors.FailedCall();\n        }\n    }\n\n    /**\n     * @dev Tool to verify that a low level call to smart-contract was successful, and reverts if the target\n     * was not a contract or bubbling up the revert reason (falling back to {Errors.FailedCall}) in case\n     * of an unsuccessful call.\n     *\n     * NOTE: This function is DEPRECATED and may be removed in the next major release.\n     */\n    function verifyCallResultFromTarget(\n        address target,\n        bool success,\n        bytes memory returndata\n    ) internal view returns (bytes memory) {\n        // only check if target is a contract if the call was successful and the return data is empty\n        // otherwise we already know that it was a contract\n        if (success && (returndata.length > 0 || target.code.length > 0)) {\n            return returndata;\n        } else if (success) {\n            revert AddressEmptyCode(target);\n        } else if (returndata.length > 0) {\n            LowLevelCall.bubbleRevert(returndata);\n        } else {\n            revert Errors.FailedCall();\n        }\n    }\n\n    /**\n     * @dev Tool to verify that a low level call was successful, and reverts if it wasn't, either by bubbling the\n     * revert reason or with a default {Errors.FailedCall} error.\n     */\n    function verifyCallResult(bool success, bytes memory returndata) internal pure returns (bytes memory) {\n        if (success) {\n            return returndata;\n        } else if (returndata.length > 0) {\n            LowLevelCall.bubbleRevert(returndata);\n        } else {\n            revert Errors.FailedCall();\n        }\n    }\n}\n"},"@openzeppelin/contracts/utils/Context.sol":{"content":"// SPDX-License-Identifier: MIT\n// OpenZeppelin Contracts (last updated v5.0.1) (utils/Context.sol)\n\npragma solidity ^0.8.20;\n\n/**\n * @dev Provides information about the current execution context, including the\n * sender of the transaction and its data. While these are generally available\n * via msg.sender and msg.data, they should not be accessed in such a direct\n * manner, since when dealing with meta-transactions the account sending and\n * paying for execution may not be the actual sender (as far as an application\n * is concerned).\n *\n * This contract is only required for intermediate, library-like contracts.\n */\nabstract contract Context {\n    function _msgSender() internal view virtual returns (address) {\n        return msg.sender;\n    }\n\n    function _msgData() internal view virtual returns (bytes calldata) {\n        return msg.data;\n    }\n\n    function _contextSuffixLength() internal view virtual returns (uint256) {\n        return 0;\n    }\n}\n"},"@openzeppelin/contracts/utils/cryptography/Hashes.sol":{"content":"// SPDX-License-Identifier: MIT\n// OpenZeppelin Contracts (last updated v5.3.0) (utils/cryptography/Hashes.sol)\n\npragma solidity ^0.8.20;\n\n/**\n * @dev Library of standard hash functions.\n *\n * _Available since v5.1._\n */\nlibrary Hashes {\n    /**\n     * @dev Commutative Keccak256 hash of a sorted pair of bytes32. Frequently used when working with merkle proofs.\n     *\n     * NOTE: Equivalent to the `standardNodeHash` in our https://github.com/OpenZeppelin/merkle-tree[JavaScript library].\n     */\n    function commutativeKeccak256(bytes32 a, bytes32 b) internal pure returns (bytes32) {\n        return a < b ? efficientKeccak256(a, b) : efficientKeccak256(b, a);\n    }\n\n    /**\n     * @dev Implementation of keccak256(abi.encode(a, b)) that doesn't allocate or expand memory.\n     */\n    function efficientKeccak256(bytes32 a, bytes32 b) internal pure returns (bytes32 value) {\n        assembly (\"memory-safe\") {\n            mstore(0x00, a)\n            mstore(0x20, b)\n            value := keccak256(0x00, 0x40)\n        }\n    }\n}\n"},"@openzeppelin/contracts/utils/Errors.sol":{"content":"// SPDX-License-Identifier: MIT\n// OpenZeppelin Contracts (last updated v5.1.0) (utils/Errors.sol)\n\npragma solidity ^0.8.20;\n\n/**\n * @dev Collection of common custom errors used in multiple contracts\n *\n * IMPORTANT: Backwards compatibility is not guaranteed in future versions of the library.\n * It is recommended to avoid relying on the error API for critical functionality.\n *\n * _Available since v5.1._\n */\nlibrary Errors {\n    /**\n     * @dev The ETH balance of the account is not enough to perform the operation.\n     */\n    error InsufficientBalance(uint256 balance, uint256 needed);\n\n    /**\n     * @dev A call to an address target failed. The target may have reverted.\n     */\n    error FailedCall();\n\n    /**\n     * @dev The deployment failed.\n     */\n    error FailedDeployment();\n\n    /**\n     * @dev A necessary precompile is missing.\n     */\n    error MissingPrecompile(address);\n}\n"},"@openzeppelin/contracts/utils/introspection/IERC165.sol":{"content":"// SPDX-License-Identifier: MIT\n// OpenZeppelin Contracts (last updated v5.4.0) (utils/introspection/IERC165.sol)\n\npragma solidity >=0.4.16;\n\n/**\n * @dev Interface of the ERC-165 standard, as defined in the\n * https://eips.ethereum.org/EIPS/eip-165[ERC].\n *\n * Implementers can declare support of contract interfaces, which can then be\n * queried by others ({ERC165Checker}).\n *\n * For an implementation, see {ERC165}.\n */\ninterface IERC165 {\n    /**\n     * @dev Returns true if this contract implements the interface defined by\n     * `interfaceId`. See the corresponding\n     * https://eips.ethereum.org/EIPS/eip-165#how-interfaces-are-identified[ERC section]\n     * to learn more about how these ids are created.\n     *\n     * This function call must use less than 30 000 gas.\n     */\n    function supportsInterface(bytes4 interfaceId) external view returns (bool);\n}\n"},"@openzeppelin/contracts/utils/LowLevelCall.sol":{"content":"// SPDX-License-Identifier: MIT\n// OpenZeppelin Contracts (last updated v5.5.0) (utils/LowLevelCall.sol)\n\npragma solidity ^0.8.20;\n\n/**\n * @dev Library of low level call functions that implement different calling strategies to deal with the return data.\n *\n * WARNING: Using this library requires an advanced understanding of Solidity and how the EVM works. It is recommended\n * to use the {Address} library instead.\n */\nlibrary LowLevelCall {\n    /// @dev Performs a Solidity function call using a low level `call` and ignoring the return data.\n    function callNoReturn(address target, bytes memory data) internal returns (bool success) {\n        return callNoReturn(target, 0, data);\n    }\n\n    /// @dev Same as {callNoReturn}, but allows to specify the value to be sent in the call.\n    function callNoReturn(address target, uint256 value, bytes memory data) internal returns (bool success) {\n        assembly (\"memory-safe\") {\n            success := call(gas(), target, value, add(data, 0x20), mload(data), 0x00, 0x00)\n        }\n    }\n\n    /// @dev Performs a Solidity function call using a low level `call` and returns the first 64 bytes of the result\n    /// in the scratch space of memory. Useful for functions that return a tuple of single-word values.\n    ///\n    /// WARNING: Do not assume that the results are zero if `success` is false. Memory can be already allocated\n    /// and this function doesn't zero it out.\n    function callReturn64Bytes(\n        address target,\n        bytes memory data\n    ) internal returns (bool success, bytes32 result1, bytes32 result2) {\n        return callReturn64Bytes(target, 0, data);\n    }\n\n    /// @dev Same as {callReturnBytes32Pair}, but allows to specify the value to be sent in the call.\n    function callReturn64Bytes(\n        address target,\n        uint256 value,\n        bytes memory data\n    ) internal returns (bool success, bytes32 result1, bytes32 result2) {\n        assembly (\"memory-safe\") {\n            success := call(gas(), target, value, add(data, 0x20), mload(data), 0x00, 0x40)\n            result1 := mload(0x00)\n            result2 := mload(0x20)\n        }\n    }\n\n    /// @dev Performs a Solidity function call using a low level `staticcall` and ignoring the return data.\n    function staticcallNoReturn(address target, bytes memory data) internal view returns (bool success) {\n        assembly (\"memory-safe\") {\n            success := staticcall(gas(), target, add(data, 0x20), mload(data), 0x00, 0x00)\n        }\n    }\n\n    /// @dev Performs a Solidity function call using a low level `staticcall` and returns the first 64 bytes of the result\n    /// in the scratch space of memory. Useful for functions that return a tuple of single-word values.\n    ///\n    /// WARNING: Do not assume that the results are zero if `success` is false. Memory can be already allocated\n    /// and this function doesn't zero it out.\n    function staticcallReturn64Bytes(\n        address target,\n        bytes memory data\n    ) internal view returns (bool success, bytes32 result1, bytes32 result2) {\n        assembly (\"memory-safe\") {\n            success := staticcall(gas(), target, add(data, 0x20), mload(data), 0x00, 0x40)\n            result1 := mload(0x00)\n            result2 := mload(0x20)\n        }\n    }\n\n    /// @dev Performs a Solidity function call using a low level `delegatecall` and ignoring the return data.\n    function delegatecallNoReturn(address target, bytes memory data) internal returns (bool success) {\n        assembly (\"memory-safe\") {\n            success := delegatecall(gas(), target, add(data, 0x20), mload(data), 0x00, 0x00)\n        }\n    }\n\n    /// @dev Performs a Solidity function call using a low level `delegatecall` and returns the first 64 bytes of the result\n    /// in the scratch space of memory. Useful for functions that return a tuple of single-word values.\n    ///\n    /// WARNING: Do not assume that the results are zero if `success` is false. Memory can be already allocated\n    /// and this function doesn't zero it out.\n    function delegatecallReturn64Bytes(\n        address target,\n        bytes memory data\n    ) internal returns (bool success, bytes32 result1, bytes32 result2) {\n        assembly (\"memory-safe\") {\n            success := delegatecall(gas(), target, add(data, 0x20), mload(data), 0x00, 0x40)\n            result1 := mload(0x00)\n            result2 := mload(0x20)\n        }\n    }\n\n    /// @dev Returns the size of the return data buffer.\n    function returnDataSize() internal pure returns (uint256 size) {\n        assembly (\"memory-safe\") {\n            size := returndatasize()\n        }\n    }\n\n    /// @dev Returns a buffer containing the return data from the last call.\n    function returnData() internal pure returns (bytes memory result) {\n        assembly (\"memory-safe\") {\n            result := mload(0x40)\n            mstore(result, returndatasize())\n            returndatacopy(add(result, 0x20), 0x00, returndatasize())\n            mstore(0x40, add(result, add(0x20, returndatasize())))\n        }\n    }\n\n    /// @dev Revert with the return data from the last call.\n    function bubbleRevert() internal pure {\n        assembly (\"memory-safe\") {\n            let fmp := mload(0x40)\n            returndatacopy(fmp, 0x00, returndatasize())\n            revert(fmp, returndatasize())\n        }\n    }\n\n    function bubbleRevert(bytes memory returndata) internal pure {\n        assembly (\"memory-safe\") {\n            revert(add(returndata, 0x20), mload(returndata))\n        }\n    }\n}\n"},"@openzeppelin/contracts/utils/math/Math.sol":{"content":"// SPDX-License-Identifier: MIT\n// OpenZeppelin Contracts (last updated v5.5.0) (utils/math/Math.sol)\n\npragma solidity ^0.8.20;\n\nimport {Panic} from \"../Panic.sol\";\nimport {SafeCast} from \"./SafeCast.sol\";\n\n/**\n * @dev Standard math utilities missing in the Solidity language.\n */\nlibrary Math {\n    enum Rounding {\n        Floor, // Toward negative infinity\n        Ceil, // Toward positive infinity\n        Trunc, // Toward zero\n        Expand // Away from zero\n    }\n\n    /**\n     * @dev Return the 512-bit addition of two uint256.\n     *\n     * The result is stored in two 256 variables such that sum = high * 2²⁵⁶ + low.\n     */\n    function add512(uint256 a, uint256 b) internal pure returns (uint256 high, uint256 low) {\n        assembly (\"memory-safe\") {\n            low := add(a, b)\n            high := lt(low, a)\n        }\n    }\n\n    /**\n     * @dev Return the 512-bit multiplication of two uint256.\n     *\n     * The result is stored in two 256 variables such that product = high * 2²⁵⁶ + low.\n     */\n    function mul512(uint256 a, uint256 b) internal pure returns (uint256 high, uint256 low) {\n        // 512-bit multiply [high low] = x * y. Compute the product mod 2²⁵⁶ and mod 2²⁵⁶ - 1, then use\n        // the Chinese Remainder Theorem to reconstruct the 512 bit result. The result is stored in two 256\n        // variables such that product = high * 2²⁵⁶ + low.\n        assembly (\"memory-safe\") {\n            let mm := mulmod(a, b, not(0))\n            low := mul(a, b)\n            high := sub(sub(mm, low), lt(mm, low))\n        }\n    }\n\n    /**\n     * @dev Returns the addition of two unsigned integers, with a success flag (no overflow).\n     */\n    function tryAdd(uint256 a, uint256 b) internal pure returns (bool success, uint256 result) {\n        unchecked {\n            uint256 c = a + b;\n            success = c >= a;\n            result = c * SafeCast.toUint(success);\n        }\n    }\n\n    /**\n     * @dev Returns the subtraction of two unsigned integers, with a success flag (no overflow).\n     */\n    function trySub(uint256 a, uint256 b) internal pure returns (bool success, uint256 result) {\n        unchecked {\n            uint256 c = a - b;\n            success = c <= a;\n            result = c * SafeCast.toUint(success);\n        }\n    }\n\n    /**\n     * @dev Returns the multiplication of two unsigned integers, with a success flag (no overflow).\n     */\n    function tryMul(uint256 a, uint256 b) internal pure returns (bool success, uint256 result) {\n        unchecked {\n            uint256 c = a * b;\n            assembly (\"memory-safe\") {\n                // Only true when the multiplication doesn't overflow\n                // (c / a == b) || (a == 0)\n                success := or(eq(div(c, a), b), iszero(a))\n            }\n            // equivalent to: success ? c : 0\n            result = c * SafeCast.toUint(success);\n        }\n    }\n\n    /**\n     * @dev Returns the division of two unsigned integers, with a success flag (no division by zero).\n     */\n    function tryDiv(uint256 a, uint256 b) internal pure returns (bool success, uint256 result) {\n        unchecked {\n            success = b > 0;\n            assembly (\"memory-safe\") {\n                // The `DIV` opcode returns zero when the denominator is 0.\n                result := div(a, b)\n            }\n        }\n    }\n\n    /**\n     * @dev Returns the remainder of dividing two unsigned integers, with a success flag (no division by zero).\n     */\n    function tryMod(uint256 a, uint256 b) internal pure returns (bool success, uint256 result) {\n        unchecked {\n            success = b > 0;\n            assembly (\"memory-safe\") {\n                // The `MOD` opcode returns zero when the denominator is 0.\n                result := mod(a, b)\n            }\n        }\n    }\n\n    /**\n     * @dev Unsigned saturating addition, bounds to `2²⁵⁶ - 1` instead of overflowing.\n     */\n    function saturatingAdd(uint256 a, uint256 b) internal pure returns (uint256) {\n        (bool success, uint256 result) = tryAdd(a, b);\n        return ternary(success, result, type(uint256).max);\n    }\n\n    /**\n     * @dev Unsigned saturating subtraction, bounds to zero instead of overflowing.\n     */\n    function saturatingSub(uint256 a, uint256 b) internal pure returns (uint256) {\n        (, uint256 result) = trySub(a, b);\n        return result;\n    }\n\n    /**\n     * @dev Unsigned saturating multiplication, bounds to `2²⁵⁶ - 1` instead of overflowing.\n     */\n    function saturatingMul(uint256 a, uint256 b) internal pure returns (uint256) {\n        (bool success, uint256 result) = tryMul(a, b);\n        return ternary(success, result, type(uint256).max);\n    }\n\n    /**\n     * @dev Branchless ternary evaluation for `condition ? a : b`. Gas costs are constant.\n     *\n     * IMPORTANT: This function may reduce bytecode size and consume less gas when used standalone.\n     * However, the compiler may optimize Solidity ternary operations (i.e. `condition ? a : b`) to only compute\n     * one branch when needed, making this function more expensive.\n     */\n    function ternary(bool condition, uint256 a, uint256 b) internal pure returns (uint256) {\n        unchecked {\n            // branchless ternary works because:\n            // b ^ (a ^ b) == a\n            // b ^ 0 == b\n            return b ^ ((a ^ b) * SafeCast.toUint(condition));\n        }\n    }\n\n    /**\n     * @dev Returns the largest of two numbers.\n     */\n    function max(uint256 a, uint256 b) internal pure returns (uint256) {\n        return ternary(a > b, a, b);\n    }\n\n    /**\n     * @dev Returns the smallest of two numbers.\n     */\n    function min(uint256 a, uint256 b) internal pure returns (uint256) {\n        return ternary(a < b, a, b);\n    }\n\n    /**\n     * @dev Returns the average of two numbers. The result is rounded towards\n     * zero.\n     */\n    function average(uint256 a, uint256 b) internal pure returns (uint256) {\n        // (a + b) / 2 can overflow.\n        return (a & b) + (a ^ b) / 2;\n    }\n\n    /**\n     * @dev Returns the ceiling of the division of two numbers.\n     *\n     * This differs from standard division with `/` in that it rounds towards infinity instead\n     * of rounding towards zero.\n     */\n    function ceilDiv(uint256 a, uint256 b) internal pure returns (uint256) {\n        if (b == 0) {\n            // Guarantee the same behavior as in a regular Solidity division.\n            Panic.panic(Panic.DIVISION_BY_ZERO);\n        }\n\n        // The following calculation ensures accurate ceiling division without overflow.\n        // Since a is non-zero, (a - 1) / b will not overflow.\n        // The largest possible result occurs when (a - 1) / b is type(uint256).max,\n        // but the largest value we can obtain is type(uint256).max - 1, which happens\n        // when a = type(uint256).max and b = 1.\n        unchecked {\n            return SafeCast.toUint(a > 0) * ((a - 1) / b + 1);\n        }\n    }\n\n    /**\n     * @dev Calculates floor(x * y / denominator) with full precision. Throws if result overflows a uint256 or\n     * denominator == 0.\n     *\n     * Original credit to Remco Bloemen under MIT license (https://xn--2-umb.com/21/muldiv) with further edits by\n     * Uniswap Labs also under MIT license.\n     */\n    function mulDiv(uint256 x, uint256 y, uint256 denominator) internal pure returns (uint256 result) {\n        unchecked {\n            (uint256 high, uint256 low) = mul512(x, y);\n\n            // Handle non-overflow cases, 256 by 256 division.\n            if (high == 0) {\n                // Solidity will revert if denominator == 0, unlike the div opcode on its own.\n                // The surrounding unchecked block does not change this fact.\n                // See https://docs.soliditylang.org/en/latest/control-structures.html#checked-or-unchecked-arithmetic.\n                return low / denominator;\n            }\n\n            // Make sure the result is less than 2²⁵⁶. Also prevents denominator == 0.\n            if (denominator <= high) {\n                Panic.panic(ternary(denominator == 0, Panic.DIVISION_BY_ZERO, Panic.UNDER_OVERFLOW));\n            }\n\n            ///////////////////////////////////////////////\n            // 512 by 256 division.\n            ///////////////////////////////////////////////\n\n            // Make division exact by subtracting the remainder from [high low].\n            uint256 remainder;\n            assembly (\"memory-safe\") {\n                // Compute remainder using mulmod.\n                remainder := mulmod(x, y, denominator)\n\n                // Subtract 256 bit number from 512 bit number.\n                high := sub(high, gt(remainder, low))\n                low := sub(low, remainder)\n            }\n\n            // Factor powers of two out of denominator and compute largest power of two divisor of denominator.\n            // Always >= 1. See https://cs.stackexchange.com/q/138556/92363.\n\n            uint256 twos = denominator & (0 - denominator);\n            assembly (\"memory-safe\") {\n                // Divide denominator by twos.\n                denominator := div(denominator, twos)\n\n                // Divide [high low] by twos.\n                low := div(low, twos)\n\n                // Flip twos such that it is 2²⁵⁶ / twos. If twos is zero, then it becomes one.\n                twos := add(div(sub(0, twos), twos), 1)\n            }\n\n            // Shift in bits from high into low.\n            low |= high * twos;\n\n            // Invert denominator mod 2²⁵⁶. Now that denominator is an odd number, it has an inverse modulo 2²⁵⁶ such\n            // that denominator * inv ≡ 1 mod 2²⁵⁶. Compute the inverse by starting with a seed that is correct for\n            // four bits. That is, denominator * inv ≡ 1 mod 2⁴.\n            uint256 inverse = (3 * denominator) ^ 2;\n\n            // Use the Newton-Raphson iteration to improve the precision. Thanks to Hensel's lifting lemma, this also\n            // works in modular arithmetic, doubling the correct bits in each step.\n            inverse *= 2 - denominator * inverse; // inverse mod 2⁸\n            inverse *= 2 - denominator * inverse; // inverse mod 2¹⁶\n            inverse *= 2 - denominator * inverse; // inverse mod 2³²\n            inverse *= 2 - denominator * inverse; // inverse mod 2⁶⁴\n            inverse *= 2 - denominator * inverse; // inverse mod 2¹²⁸\n            inverse *= 2 - denominator * inverse; // inverse mod 2²⁵⁶\n\n            // Because the division is now exact we can divide by multiplying with the modular inverse of denominator.\n            // This will give us the correct result modulo 2²⁵⁶. Since the preconditions guarantee that the outcome is\n            // less than 2²⁵⁶, this is the final result. We don't need to compute the high bits of the result and high\n            // is no longer required.\n            result = low * inverse;\n            return result;\n        }\n    }\n\n    /**\n     * @dev Calculates x * y / denominator with full precision, following the selected rounding direction.\n     */\n    function mulDiv(uint256 x, uint256 y, uint256 denominator, Rounding rounding) internal pure returns (uint256) {\n        return mulDiv(x, y, denominator) + SafeCast.toUint(unsignedRoundsUp(rounding) && mulmod(x, y, denominator) > 0);\n    }\n\n    /**\n     * @dev Calculates floor(x * y >> n) with full precision. Throws if result overflows a uint256.\n     */\n    function mulShr(uint256 x, uint256 y, uint8 n) internal pure returns (uint256 result) {\n        unchecked {\n            (uint256 high, uint256 low) = mul512(x, y);\n            if (high >= 1 << n) {\n                Panic.panic(Panic.UNDER_OVERFLOW);\n            }\n            return (high << (256 - n)) | (low >> n);\n        }\n    }\n\n    /**\n     * @dev Calculates x * y >> n with full precision, following the selected rounding direction.\n     */\n    function mulShr(uint256 x, uint256 y, uint8 n, Rounding rounding) internal pure returns (uint256) {\n        return mulShr(x, y, n) + SafeCast.toUint(unsignedRoundsUp(rounding) && mulmod(x, y, 1 << n) > 0);\n    }\n\n    /**\n     * @dev Calculate the modular multiplicative inverse of a number in Z/nZ.\n     *\n     * If n is a prime, then Z/nZ is a field. In that case all elements are inversible, except 0.\n     * If n is not a prime, then Z/nZ is not a field, and some elements might not be inversible.\n     *\n     * If the input value is not inversible, 0 is returned.\n     *\n     * NOTE: If you know for sure that n is (big) a prime, it may be cheaper to use Fermat's little theorem and get the\n     * inverse using `Math.modExp(a, n - 2, n)`. See {invModPrime}.\n     */\n    function invMod(uint256 a, uint256 n) internal pure returns (uint256) {\n        unchecked {\n            if (n == 0) return 0;\n\n            // The inverse modulo is calculated using the Extended Euclidean Algorithm (iterative version)\n            // Used to compute integers x and y such that: ax + ny = gcd(a, n).\n            // When the gcd is 1, then the inverse of a modulo n exists and it's x.\n            // ax + ny = 1\n            // ax = 1 + (-y)n\n            // ax ≡ 1 (mod n) # x is the inverse of a modulo n\n\n            // If the remainder is 0 the gcd is n right away.\n            uint256 remainder = a % n;\n            uint256 gcd = n;\n\n            // Therefore the initial coefficients are:\n            // ax + ny = gcd(a, n) = n\n            // 0a + 1n = n\n            int256 x = 0;\n            int256 y = 1;\n\n            while (remainder != 0) {\n                uint256 quotient = gcd / remainder;\n\n                (gcd, remainder) = (\n                    // The old remainder is the next gcd to try.\n                    remainder,\n                    // Compute the next remainder.\n                    // Can't overflow given that (a % gcd) * (gcd // (a % gcd)) <= gcd\n                    // where gcd is at most n (capped to type(uint256).max)\n                    gcd - remainder * quotient\n                );\n\n                (x, y) = (\n                    // Increment the coefficient of a.\n                    y,\n                    // Decrement the coefficient of n.\n                    // Can overflow, but the result is casted to uint256 so that the\n                    // next value of y is \"wrapped around\" to a value between 0 and n - 1.\n                    x - y * int256(quotient)\n                );\n            }\n\n            if (gcd != 1) return 0; // No inverse exists.\n            return ternary(x < 0, n - uint256(-x), uint256(x)); // Wrap the result if it's negative.\n        }\n    }\n\n    /**\n     * @dev Variant of {invMod}. More efficient, but only works if `p` is known to be a prime greater than `2`.\n     *\n     * From https://en.wikipedia.org/wiki/Fermat%27s_little_theorem[Fermat's little theorem], we know that if p is\n     * prime, then `a**(p-1) ≡ 1 mod p`. As a consequence, we have `a * a**(p-2) ≡ 1 mod p`, which means that\n     * `a**(p-2)` is the modular multiplicative inverse of a in Fp.\n     *\n     * NOTE: this function does NOT check that `p` is a prime greater than `2`.\n     */\n    function invModPrime(uint256 a, uint256 p) internal view returns (uint256) {\n        unchecked {\n            return Math.modExp(a, p - 2, p);\n        }\n    }\n\n    /**\n     * @dev Returns the modular exponentiation of the specified base, exponent and modulus (b ** e % m)\n     *\n     * Requirements:\n     * - modulus can't be zero\n     * - underlying staticcall to precompile must succeed\n     *\n     * IMPORTANT: The result is only valid if the underlying call succeeds. When using this function, make\n     * sure the chain you're using it on supports the precompiled contract for modular exponentiation\n     * at address 0x05 as specified in https://eips.ethereum.org/EIPS/eip-198[EIP-198]. Otherwise,\n     * the underlying function will succeed given the lack of a revert, but the result may be incorrectly\n     * interpreted as 0.\n     */\n    function modExp(uint256 b, uint256 e, uint256 m) internal view returns (uint256) {\n        (bool success, uint256 result) = tryModExp(b, e, m);\n        if (!success) {\n            Panic.panic(Panic.DIVISION_BY_ZERO);\n        }\n        return result;\n    }\n\n    /**\n     * @dev Returns the modular exponentiation of the specified base, exponent and modulus (b ** e % m).\n     * It includes a success flag indicating if the operation succeeded. Operation will be marked as failed if trying\n     * to operate modulo 0 or if the underlying precompile reverted.\n     *\n     * IMPORTANT: The result is only valid if the success flag is true. When using this function, make sure the chain\n     * you're using it on supports the precompiled contract for modular exponentiation at address 0x05 as specified in\n     * https://eips.ethereum.org/EIPS/eip-198[EIP-198]. Otherwise, the underlying function will succeed given the lack\n     * of a revert, but the result may be incorrectly interpreted as 0.\n     */\n    function tryModExp(uint256 b, uint256 e, uint256 m) internal view returns (bool success, uint256 result) {\n        if (m == 0) return (false, 0);\n        assembly (\"memory-safe\") {\n            let ptr := mload(0x40)\n            // | Offset    | Content    | Content (Hex)                                                      |\n            // |-----------|------------|--------------------------------------------------------------------|\n            // | 0x00:0x1f | size of b  | 0x0000000000000000000000000000000000000000000000000000000000000020 |\n            // | 0x20:0x3f | size of e  | 0x0000000000000000000000000000000000000000000000000000000000000020 |\n            // | 0x40:0x5f | size of m  | 0x0000000000000000000000000000000000000000000000000000000000000020 |\n            // | 0x60:0x7f | value of b | 0x<.............................................................b> |\n            // | 0x80:0x9f | value of e | 0x<.............................................................e> |\n            // | 0xa0:0xbf | value of m | 0x<.............................................................m> |\n            mstore(ptr, 0x20)\n            mstore(add(ptr, 0x20), 0x20)\n            mstore(add(ptr, 0x40), 0x20)\n            mstore(add(ptr, 0x60), b)\n            mstore(add(ptr, 0x80), e)\n            mstore(add(ptr, 0xa0), m)\n\n            // Given the result < m, it's guaranteed to fit in 32 bytes,\n            // so we can use the memory scratch space located at offset 0.\n            success := staticcall(gas(), 0x05, ptr, 0xc0, 0x00, 0x20)\n            result := mload(0x00)\n        }\n    }\n\n    /**\n     * @dev Variant of {modExp} that supports inputs of arbitrary length.\n     */\n    function modExp(bytes memory b, bytes memory e, bytes memory m) internal view returns (bytes memory) {\n        (bool success, bytes memory result) = tryModExp(b, e, m);\n        if (!success) {\n            Panic.panic(Panic.DIVISION_BY_ZERO);\n        }\n        return result;\n    }\n\n    /**\n     * @dev Variant of {tryModExp} that supports inputs of arbitrary length.\n     */\n    function tryModExp(\n        bytes memory b,\n        bytes memory e,\n        bytes memory m\n    ) internal view returns (bool success, bytes memory result) {\n        if (_zeroBytes(m)) return (false, new bytes(0));\n\n        uint256 mLen = m.length;\n\n        // Encode call args in result and move the free memory pointer\n        result = abi.encodePacked(b.length, e.length, mLen, b, e, m);\n\n        assembly (\"memory-safe\") {\n            let dataPtr := add(result, 0x20)\n            // Write result on top of args to avoid allocating extra memory.\n            success := staticcall(gas(), 0x05, dataPtr, mload(result), dataPtr, mLen)\n            // Overwrite the length.\n            // result.length > returndatasize() is guaranteed because returndatasize() == m.length\n            mstore(result, mLen)\n            // Set the memory pointer after the returned data.\n            mstore(0x40, add(dataPtr, mLen))\n        }\n    }\n\n    /**\n     * @dev Returns whether the provided byte array is zero.\n     */\n    function _zeroBytes(bytes memory byteArray) private pure returns (bool) {\n        for (uint256 i = 0; i < byteArray.length; ++i) {\n            if (byteArray[i] != 0) {\n                return false;\n            }\n        }\n        return true;\n    }\n\n    /**\n     * @dev Returns the square root of a number. If the number is not a perfect square, the value is rounded\n     * towards zero.\n     *\n     * This method is based on Newton's method for computing square roots; the algorithm is restricted to only\n     * using integer operations.\n     */\n    function sqrt(uint256 a) internal pure returns (uint256) {\n        unchecked {\n            // Take care of easy edge cases when a == 0 or a == 1\n            if (a <= 1) {\n                return a;\n            }\n\n            // In this function, we use Newton's method to get a root of `f(x) := x² - a`. It involves building a\n            // sequence x_n that converges toward sqrt(a). For each iteration x_n, we also define the error between\n            // the current value as `ε_n = | x_n - sqrt(a) |`.\n            //\n            // For our first estimation, we consider `e` the smallest power of 2 which is bigger than the square root\n            // of the target. (i.e. `2**(e-1) ≤ sqrt(a) < 2**e`). We know that `e ≤ 128` because `(2¹²⁸)² = 2²⁵⁶` is\n            // bigger than any uint256.\n            //\n            // By noticing that\n            // `2**(e-1) ≤ sqrt(a) < 2**e → (2**(e-1))² ≤ a < (2**e)² → 2**(2*e-2) ≤ a < 2**(2*e)`\n            // we can deduce that `e - 1` is `log2(a) / 2`. We can thus compute `x_n = 2**(e-1)` using a method similar\n            // to the msb function.\n            uint256 aa = a;\n            uint256 xn = 1;\n\n            if (aa >= (1 << 128)) {\n                aa >>= 128;\n                xn <<= 64;\n            }\n            if (aa >= (1 << 64)) {\n                aa >>= 64;\n                xn <<= 32;\n            }\n            if (aa >= (1 << 32)) {\n                aa >>= 32;\n                xn <<= 16;\n            }\n            if (aa >= (1 << 16)) {\n                aa >>= 16;\n                xn <<= 8;\n            }\n            if (aa >= (1 << 8)) {\n                aa >>= 8;\n                xn <<= 4;\n            }\n            if (aa >= (1 << 4)) {\n                aa >>= 4;\n                xn <<= 2;\n            }\n            if (aa >= (1 << 2)) {\n                xn <<= 1;\n            }\n\n            // We now have x_n such that `x_n = 2**(e-1) ≤ sqrt(a) < 2**e = 2 * x_n`. This implies ε_n ≤ 2**(e-1).\n            //\n            // We can refine our estimation by noticing that the middle of that interval minimizes the error.\n            // If we move x_n to equal 2**(e-1) + 2**(e-2), then we reduce the error to ε_n ≤ 2**(e-2).\n            // This is going to be our x_0 (and ε_0)\n            xn = (3 * xn) >> 1; // ε_0 := | x_0 - sqrt(a) | ≤ 2**(e-2)\n\n            // From here, Newton's method give us:\n            // x_{n+1} = (x_n + a / x_n) / 2\n            //\n            // One should note that:\n            // x_{n+1}² - a = ((x_n + a / x_n) / 2)² - a\n            //              = ((x_n² + a) / (2 * x_n))² - a\n            //              = (x_n⁴ + 2 * a * x_n² + a²) / (4 * x_n²) - a\n            //              = (x_n⁴ + 2 * a * x_n² + a² - 4 * a * x_n²) / (4 * x_n²)\n            //              = (x_n⁴ - 2 * a * x_n² + a²) / (4 * x_n²)\n            //              = (x_n² - a)² / (2 * x_n)²\n            //              = ((x_n² - a) / (2 * x_n))²\n            //              ≥ 0\n            // Which proves that for all n ≥ 1, sqrt(a) ≤ x_n\n            //\n            // This gives us the proof of quadratic convergence of the sequence:\n            // ε_{n+1} = | x_{n+1} - sqrt(a) |\n            //         = | (x_n + a / x_n) / 2 - sqrt(a) |\n            //         = | (x_n² + a - 2*x_n*sqrt(a)) / (2 * x_n) |\n            //         = | (x_n - sqrt(a))² / (2 * x_n) |\n            //         = | ε_n² / (2 * x_n) |\n            //         = ε_n² / | (2 * x_n) |\n            //\n            // For the first iteration, we have a special case where x_0 is known:\n            // ε_1 = ε_0² / | (2 * x_0) |\n            //     ≤ (2**(e-2))² / (2 * (2**(e-1) + 2**(e-2)))\n            //     ≤ 2**(2*e-4) / (3 * 2**(e-1))\n            //     ≤ 2**(e-3) / 3\n            //     ≤ 2**(e-3-log2(3))\n            //     ≤ 2**(e-4.5)\n            //\n            // For the following iterations, we use the fact that, 2**(e-1) ≤ sqrt(a) ≤ x_n:\n            // ε_{n+1} = ε_n² / | (2 * x_n) |\n            //         ≤ (2**(e-k))² / (2 * 2**(e-1))\n            //         ≤ 2**(2*e-2*k) / 2**e\n            //         ≤ 2**(e-2*k)\n            xn = (xn + a / xn) >> 1; // ε_1 := | x_1 - sqrt(a) | ≤ 2**(e-4.5)  -- special case, see above\n            xn = (xn + a / xn) >> 1; // ε_2 := | x_2 - sqrt(a) | ≤ 2**(e-9)    -- general case with k = 4.5\n            xn = (xn + a / xn) >> 1; // ε_3 := | x_3 - sqrt(a) | ≤ 2**(e-18)   -- general case with k = 9\n            xn = (xn + a / xn) >> 1; // ε_4 := | x_4 - sqrt(a) | ≤ 2**(e-36)   -- general case with k = 18\n            xn = (xn + a / xn) >> 1; // ε_5 := | x_5 - sqrt(a) | ≤ 2**(e-72)   -- general case with k = 36\n            xn = (xn + a / xn) >> 1; // ε_6 := | x_6 - sqrt(a) | ≤ 2**(e-144)  -- general case with k = 72\n\n            // Because e ≤ 128 (as discussed during the first estimation phase), we know have reached a precision\n            // ε_6 ≤ 2**(e-144) < 1. Given we're operating on integers, then we can ensure that xn is now either\n            // sqrt(a) or sqrt(a) + 1.\n            return xn - SafeCast.toUint(xn > a / xn);\n        }\n    }\n\n    /**\n     * @dev Calculates sqrt(a), following the selected rounding direction.\n     */\n    function sqrt(uint256 a, Rounding rounding) internal pure returns (uint256) {\n        unchecked {\n            uint256 result = sqrt(a);\n            return result + SafeCast.toUint(unsignedRoundsUp(rounding) && result * result < a);\n        }\n    }\n\n    /**\n     * @dev Return the log in base 2 of a positive value rounded towards zero.\n     * Returns 0 if given 0.\n     */\n    function log2(uint256 x) internal pure returns (uint256 r) {\n        // If value has upper 128 bits set, log2 result is at least 128\n        r = SafeCast.toUint(x > 0xffffffffffffffffffffffffffffffff) << 7;\n        // If upper 64 bits of 128-bit half set, add 64 to result\n        r |= SafeCast.toUint((x >> r) > 0xffffffffffffffff) << 6;\n        // If upper 32 bits of 64-bit half set, add 32 to result\n        r |= SafeCast.toUint((x >> r) > 0xffffffff) << 5;\n        // If upper 16 bits of 32-bit half set, add 16 to result\n        r |= SafeCast.toUint((x >> r) > 0xffff) << 4;\n        // If upper 8 bits of 16-bit half set, add 8 to result\n        r |= SafeCast.toUint((x >> r) > 0xff) << 3;\n        // If upper 4 bits of 8-bit half set, add 4 to result\n        r |= SafeCast.toUint((x >> r) > 0xf) << 2;\n\n        // Shifts value right by the current result and use it as an index into this lookup table:\n        //\n        // | x (4 bits) |  index  | table[index] = MSB position |\n        // |------------|---------|-----------------------------|\n        // |    0000    |    0    |        table[0] = 0         |\n        // |    0001    |    1    |        table[1] = 0         |\n        // |    0010    |    2    |        table[2] = 1         |\n        // |    0011    |    3    |        table[3] = 1         |\n        // |    0100    |    4    |        table[4] = 2         |\n        // |    0101    |    5    |        table[5] = 2         |\n        // |    0110    |    6    |        table[6] = 2         |\n        // |    0111    |    7    |        table[7] = 2         |\n        // |    1000    |    8    |        table[8] = 3         |\n        // |    1001    |    9    |        table[9] = 3         |\n        // |    1010    |   10    |        table[10] = 3        |\n        // |    1011    |   11    |        table[11] = 3        |\n        // |    1100    |   12    |        table[12] = 3        |\n        // |    1101    |   13    |        table[13] = 3        |\n        // |    1110    |   14    |        table[14] = 3        |\n        // |    1111    |   15    |        table[15] = 3        |\n        //\n        // The lookup table is represented as a 32-byte value with the MSB positions for 0-15 in the last 16 bytes.\n        assembly (\"memory-safe\") {\n            r := or(r, byte(shr(r, x), 0x0000010102020202030303030303030300000000000000000000000000000000))\n        }\n    }\n\n    /**\n     * @dev Return the log in base 2, following the selected rounding direction, of a positive value.\n     * Returns 0 if given 0.\n     */\n    function log2(uint256 value, Rounding rounding) internal pure returns (uint256) {\n        unchecked {\n            uint256 result = log2(value);\n            return result + SafeCast.toUint(unsignedRoundsUp(rounding) && 1 << result < value);\n        }\n    }\n\n    /**\n     * @dev Return the log in base 10 of a positive value rounded towards zero.\n     * Returns 0 if given 0.\n     */\n    function log10(uint256 value) internal pure returns (uint256) {\n        uint256 result = 0;\n        unchecked {\n            if (value >= 10 ** 64) {\n                value /= 10 ** 64;\n                result += 64;\n            }\n            if (value >= 10 ** 32) {\n                value /= 10 ** 32;\n                result += 32;\n            }\n            if (value >= 10 ** 16) {\n                value /= 10 ** 16;\n                result += 16;\n            }\n            if (value >= 10 ** 8) {\n                value /= 10 ** 8;\n                result += 8;\n            }\n            if (value >= 10 ** 4) {\n                value /= 10 ** 4;\n                result += 4;\n            }\n            if (value >= 10 ** 2) {\n                value /= 10 ** 2;\n                result += 2;\n            }\n            if (value >= 10 ** 1) {\n                result += 1;\n            }\n        }\n        return result;\n    }\n\n    /**\n     * @dev Return the log in base 10, following the selected rounding direction, of a positive value.\n     * Returns 0 if given 0.\n     */\n    function log10(uint256 value, Rounding rounding) internal pure returns (uint256) {\n        unchecked {\n            uint256 result = log10(value);\n            return result + SafeCast.toUint(unsignedRoundsUp(rounding) && 10 ** result < value);\n        }\n    }\n\n    /**\n     * @dev Return the log in base 256 of a positive value rounded towards zero.\n     * Returns 0 if given 0.\n     *\n     * Adding one to the result gives the number of pairs of hex symbols needed to represent `value` as a hex string.\n     */\n    function log256(uint256 x) internal pure returns (uint256 r) {\n        // If value has upper 128 bits set, log2 result is at least 128\n        r = SafeCast.toUint(x > 0xffffffffffffffffffffffffffffffff) << 7;\n        // If upper 64 bits of 128-bit half set, add 64 to result\n        r |= SafeCast.toUint((x >> r) > 0xffffffffffffffff) << 6;\n        // If upper 32 bits of 64-bit half set, add 32 to result\n        r |= SafeCast.toUint((x >> r) > 0xffffffff) << 5;\n        // If upper 16 bits of 32-bit half set, add 16 to result\n        r |= SafeCast.toUint((x >> r) > 0xffff) << 4;\n        // Add 1 if upper 8 bits of 16-bit half set, and divide accumulated result by 8\n        return (r >> 3) | SafeCast.toUint((x >> r) > 0xff);\n    }\n\n    /**\n     * @dev Return the log in base 256, following the selected rounding direction, of a positive value.\n     * Returns 0 if given 0.\n     */\n    function log256(uint256 value, Rounding rounding) internal pure returns (uint256) {\n        unchecked {\n            uint256 result = log256(value);\n            return result + SafeCast.toUint(unsignedRoundsUp(rounding) && 1 << (result << 3) < value);\n        }\n    }\n\n    /**\n     * @dev Returns whether a provided rounding mode is considered rounding up for unsigned integers.\n     */\n    function unsignedRoundsUp(Rounding rounding) internal pure returns (bool) {\n        return uint8(rounding) % 2 == 1;\n    }\n\n    /**\n     * @dev Counts the number of leading zero bits in a uint256.\n     */\n    function clz(uint256 x) internal pure returns (uint256) {\n        return ternary(x == 0, 256, 255 - log2(x));\n    }\n}\n"},"@openzeppelin/contracts/utils/math/SafeCast.sol":{"content":"// SPDX-License-Identifier: MIT\n// OpenZeppelin Contracts (last updated v5.1.0) (utils/math/SafeCast.sol)\n// This file was procedurally generated from scripts/generate/templates/SafeCast.js.\n\npragma solidity ^0.8.20;\n\n/**\n * @dev Wrappers over Solidity's uintXX/intXX/bool casting operators with added overflow\n * checks.\n *\n * Downcasting from uint256/int256 in Solidity does not revert on overflow. This can\n * easily result in undesired exploitation or bugs, since developers usually\n * assume that overflows raise errors. `SafeCast` restores this intuition by\n * reverting the transaction when such an operation overflows.\n *\n * Using this library instead of the unchecked operations eliminates an entire\n * class of bugs, so it's recommended to use it always.\n */\nlibrary SafeCast {\n    /**\n     * @dev Value doesn't fit in an uint of `bits` size.\n     */\n    error SafeCastOverflowedUintDowncast(uint8 bits, uint256 value);\n\n    /**\n     * @dev An int value doesn't fit in an uint of `bits` size.\n     */\n    error SafeCastOverflowedIntToUint(int256 value);\n\n    /**\n     * @dev Value doesn't fit in an int of `bits` size.\n     */\n    error SafeCastOverflowedIntDowncast(uint8 bits, int256 value);\n\n    /**\n     * @dev An uint value doesn't fit in an int of `bits` size.\n     */\n    error SafeCastOverflowedUintToInt(uint256 value);\n\n    /**\n     * @dev Returns the downcasted uint248 from uint256, reverting on\n     * overflow (when the input is greater than largest uint248).\n     *\n     * Counterpart to Solidity's `uint248` operator.\n     *\n     * Requirements:\n     *\n     * - input must fit into 248 bits\n     */\n    function toUint248(uint256 value) internal pure returns (uint248) {\n        if (value > type(uint248).max) {\n            revert SafeCastOverflowedUintDowncast(248, value);\n        }\n        return uint248(value);\n    }\n\n    /**\n     * @dev Returns the downcasted uint240 from uint256, reverting on\n     * overflow (when the input is greater than largest uint240).\n     *\n     * Counterpart to Solidity's `uint240` operator.\n     *\n     * Requirements:\n     *\n     * - input must fit into 240 bits\n     */\n    function toUint240(uint256 value) internal pure returns (uint240) {\n        if (value > type(uint240).max) {\n            revert SafeCastOverflowedUintDowncast(240, value);\n        }\n        return uint240(value);\n    }\n\n    /**\n     * @dev Returns the downcasted uint232 from uint256, reverting on\n     * overflow (when the input is greater than largest uint232).\n     *\n     * Counterpart to Solidity's `uint232` operator.\n     *\n     * Requirements:\n     *\n     * - input must fit into 232 bits\n     */\n    function toUint232(uint256 value) internal pure returns (uint232) {\n        if (value > type(uint232).max) {\n            revert SafeCastOverflowedUintDowncast(232, value);\n        }\n        return uint232(value);\n    }\n\n    /**\n     * @dev Returns the downcasted uint224 from uint256, reverting on\n     * overflow (when the input is greater than largest uint224).\n     *\n     * Counterpart to Solidity's `uint224` operator.\n     *\n     * Requirements:\n     *\n     * - input must fit into 224 bits\n     */\n    function toUint224(uint256 value) internal pure returns (uint224) {\n        if (value > type(uint224).max) {\n            revert SafeCastOverflowedUintDowncast(224, value);\n        }\n        return uint224(value);\n    }\n\n    /**\n     * @dev Returns the downcasted uint216 from uint256, reverting on\n     * overflow (when the input is greater than largest uint216).\n     *\n     * Counterpart to Solidity's `uint216` operator.\n     *\n     * Requirements:\n     *\n     * - input must fit into 216 bits\n     */\n    function toUint216(uint256 value) internal pure returns (uint216) {\n        if (value > type(uint216).max) {\n            revert SafeCastOverflowedUintDowncast(216, value);\n        }\n        return uint216(value);\n    }\n\n    /**\n     * @dev Returns the downcasted uint208 from uint256, reverting on\n     * overflow (when the input is greater than largest uint208).\n     *\n     * Counterpart to Solidity's `uint208` operator.\n     *\n     * Requirements:\n     *\n     * - input must fit into 208 bits\n     */\n    function toUint208(uint256 value) internal pure returns (uint208) {\n        if (value > type(uint208).max) {\n            revert SafeCastOverflowedUintDowncast(208, value);\n        }\n        return uint208(value);\n    }\n\n    /**\n     * @dev Returns the downcasted uint200 from uint256, reverting on\n     * overflow (when the input is greater than largest uint200).\n     *\n     * Counterpart to Solidity's `uint200` operator.\n     *\n     * Requirements:\n     *\n     * - input must fit into 200 bits\n     */\n    function toUint200(uint256 value) internal pure returns (uint200) {\n        if (value > type(uint200).max) {\n            revert SafeCastOverflowedUintDowncast(200, value);\n        }\n        return uint200(value);\n    }\n\n    /**\n     * @dev Returns the downcasted uint192 from uint256, reverting on\n     * overflow (when the input is greater than largest uint192).\n     *\n     * Counterpart to Solidity's `uint192` operator.\n     *\n     * Requirements:\n     *\n     * - input must fit into 192 bits\n     */\n    function toUint192(uint256 value) internal pure returns (uint192) {\n        if (value > type(uint192).max) {\n            revert SafeCastOverflowedUintDowncast(192, value);\n        }\n        return uint192(value);\n    }\n\n    /**\n     * @dev Returns the downcasted uint184 from uint256, reverting on\n     * overflow (when the input is greater than largest uint184).\n     *\n     * Counterpart to Solidity's `uint184` operator.\n     *\n     * Requirements:\n     *\n     * - input must fit into 184 bits\n     */\n    function toUint184(uint256 value) internal pure returns (uint184) {\n        if (value > type(uint184).max) {\n            revert SafeCastOverflowedUintDowncast(184, value);\n        }\n        return uint184(value);\n    }\n\n    /**\n     * @dev Returns the downcasted uint176 from uint256, reverting on\n     * overflow (when the input is greater than largest uint176).\n     *\n     * Counterpart to Solidity's `uint176` operator.\n     *\n     * Requirements:\n     *\n     * - input must fit into 176 bits\n     */\n    function toUint176(uint256 value) internal pure returns (uint176) {\n        if (value > type(uint176).max) {\n            revert SafeCastOverflowedUintDowncast(176, value);\n        }\n        return uint176(value);\n    }\n\n    /**\n     * @dev Returns the downcasted uint168 from uint256, reverting on\n     * overflow (when the input is greater than largest uint168).\n     *\n     * Counterpart to Solidity's `uint168` operator.\n     *\n     * Requirements:\n     *\n     * - input must fit into 168 bits\n     */\n    function toUint168(uint256 value) internal pure returns (uint168) {\n        if (value > type(uint168).max) {\n            revert SafeCastOverflowedUintDowncast(168, value);\n        }\n        return uint168(value);\n    }\n\n    /**\n     * @dev Returns the downcasted uint160 from uint256, reverting on\n     * overflow (when the input is greater than largest uint160).\n     *\n     * Counterpart to Solidity's `uint160` operator.\n     *\n     * Requirements:\n     *\n     * - input must fit into 160 bits\n     */\n    function toUint160(uint256 value) internal pure returns (uint160) {\n        if (value > type(uint160).max) {\n            revert SafeCastOverflowedUintDowncast(160, value);\n        }\n        return uint160(value);\n    }\n\n    /**\n     * @dev Returns the downcasted uint152 from uint256, reverting on\n     * overflow (when the input is greater than largest uint152).\n     *\n     * Counterpart to Solidity's `uint152` operator.\n     *\n     * Requirements:\n     *\n     * - input must fit into 152 bits\n     */\n    function toUint152(uint256 value) internal pure returns (uint152) {\n        if (value > type(uint152).max) {\n            revert SafeCastOverflowedUintDowncast(152, value);\n        }\n        return uint152(value);\n    }\n\n    /**\n     * @dev Returns the downcasted uint144 from uint256, reverting on\n     * overflow (when the input is greater than largest uint144).\n     *\n     * Counterpart to Solidity's `uint144` operator.\n     *\n     * Requirements:\n     *\n     * - input must fit into 144 bits\n     */\n    function toUint144(uint256 value) internal pure returns (uint144) {\n        if (value > type(uint144).max) {\n            revert SafeCastOverflowedUintDowncast(144, value);\n        }\n        return uint144(value);\n    }\n\n    /**\n     * @dev Returns the downcasted uint136 from uint256, reverting on\n     * overflow (when the input is greater than largest uint136).\n     *\n     * Counterpart to Solidity's `uint136` operator.\n     *\n     * Requirements:\n     *\n     * - input must fit into 136 bits\n     */\n    function toUint136(uint256 value) internal pure returns (uint136) {\n        if (value > type(uint136).max) {\n            revert SafeCastOverflowedUintDowncast(136, value);\n        }\n        return uint136(value);\n    }\n\n    /**\n     * @dev Returns the downcasted uint128 from uint256, reverting on\n     * overflow (when the input is greater than largest uint128).\n     *\n     * Counterpart to Solidity's `uint128` operator.\n     *\n     * Requirements:\n     *\n     * - input must fit into 128 bits\n     */\n    function toUint128(uint256 value) internal pure returns (uint128) {\n        if (value > type(uint128).max) {\n            revert SafeCastOverflowedUintDowncast(128, value);\n        }\n        return uint128(value);\n    }\n\n    /**\n     * @dev Returns the downcasted uint120 from uint256, reverting on\n     * overflow (when the input is greater than largest uint120).\n     *\n     * Counterpart to Solidity's `uint120` operator.\n     *\n     * Requirements:\n     *\n     * - input must fit into 120 bits\n     */\n    function toUint120(uint256 value) internal pure returns (uint120) {\n        if (value > type(uint120).max) {\n            revert SafeCastOverflowedUintDowncast(120, value);\n        }\n        return uint120(value);\n    }\n\n    /**\n     * @dev Returns the downcasted uint112 from uint256, reverting on\n     * overflow (when the input is greater than largest uint112).\n     *\n     * Counterpart to Solidity's `uint112` operator.\n     *\n     * Requirements:\n     *\n     * - input must fit into 112 bits\n     */\n    function toUint112(uint256 value) internal pure returns (uint112) {\n        if (value > type(uint112).max) {\n            revert SafeCastOverflowedUintDowncast(112, value);\n        }\n        return uint112(value);\n    }\n\n    /**\n     * @dev Returns the downcasted uint104 from uint256, reverting on\n     * overflow (when the input is greater than largest uint104).\n     *\n     * Counterpart to Solidity's `uint104` operator.\n     *\n     * Requirements:\n     *\n     * - input must fit into 104 bits\n     */\n    function toUint104(uint256 value) internal pure returns (uint104) {\n        if (value > type(uint104).max) {\n            revert SafeCastOverflowedUintDowncast(104, value);\n        }\n        return uint104(value);\n    }\n\n    /**\n     * @dev Returns the downcasted uint96 from uint256, reverting on\n     * overflow (when the input is greater than largest uint96).\n     *\n     * Counterpart to Solidity's `uint96` operator.\n     *\n     * Requirements:\n     *\n     * - input must fit into 96 bits\n     */\n    function toUint96(uint256 value) internal pure returns (uint96) {\n        if (value > type(uint96).max) {\n            revert SafeCastOverflowedUintDowncast(96, value);\n        }\n        return uint96(value);\n    }\n\n    /**\n     * @dev Returns the downcasted uint88 from uint256, reverting on\n     * overflow (when the input is greater than largest uint88).\n     *\n     * Counterpart to Solidity's `uint88` operator.\n     *\n     * Requirements:\n     *\n     * - input must fit into 88 bits\n     */\n    function toUint88(uint256 value) internal pure returns (uint88) {\n        if (value > type(uint88).max) {\n            revert SafeCastOverflowedUintDowncast(88, value);\n        }\n        return uint88(value);\n    }\n\n    /**\n     * @dev Returns the downcasted uint80 from uint256, reverting on\n     * overflow (when the input is greater than largest uint80).\n     *\n     * Counterpart to Solidity's `uint80` operator.\n     *\n     * Requirements:\n     *\n     * - input must fit into 80 bits\n     */\n    function toUint80(uint256 value) internal pure returns (uint80) {\n        if (value > type(uint80).max) {\n            revert SafeCastOverflowedUintDowncast(80, value);\n        }\n        return uint80(value);\n    }\n\n    /**\n     * @dev Returns the downcasted uint72 from uint256, reverting on\n     * overflow (when the input is greater than largest uint72).\n     *\n     * Counterpart to Solidity's `uint72` operator.\n     *\n     * Requirements:\n     *\n     * - input must fit into 72 bits\n     */\n    function toUint72(uint256 value) internal pure returns (uint72) {\n        if (value > type(uint72).max) {\n            revert SafeCastOverflowedUintDowncast(72, value);\n        }\n        return uint72(value);\n    }\n\n    /**\n     * @dev Returns the downcasted uint64 from uint256, reverting on\n     * overflow (when the input is greater than largest uint64).\n     *\n     * Counterpart to Solidity's `uint64` operator.\n     *\n     * Requirements:\n     *\n     * - input must fit into 64 bits\n     */\n    function toUint64(uint256 value) internal pure returns (uint64) {\n        if (value > type(uint64).max) {\n            revert SafeCastOverflowedUintDowncast(64, value);\n        }\n        return uint64(value);\n    }\n\n    /**\n     * @dev Returns the downcasted uint56 from uint256, reverting on\n     * overflow (when the input is greater than largest uint56).\n     *\n     * Counterpart to Solidity's `uint56` operator.\n     *\n     * Requirements:\n     *\n     * - input must fit into 56 bits\n     */\n    function toUint56(uint256 value) internal pure returns (uint56) {\n        if (value > type(uint56).max) {\n            revert SafeCastOverflowedUintDowncast(56, value);\n        }\n        return uint56(value);\n    }\n\n    /**\n     * @dev Returns the downcasted uint48 from uint256, reverting on\n     * overflow (when the input is greater than largest uint48).\n     *\n     * Counterpart to Solidity's `uint48` operator.\n     *\n     * Requirements:\n     *\n     * - input must fit into 48 bits\n     */\n    function toUint48(uint256 value) internal pure returns (uint48) {\n        if (value > type(uint48).max) {\n            revert SafeCastOverflowedUintDowncast(48, value);\n        }\n        return uint48(value);\n    }\n\n    /**\n     * @dev Returns the downcasted uint40 from uint256, reverting on\n     * overflow (when the input is greater than largest uint40).\n     *\n     * Counterpart to Solidity's `uint40` operator.\n     *\n     * Requirements:\n     *\n     * - input must fit into 40 bits\n     */\n    function toUint40(uint256 value) internal pure returns (uint40) {\n        if (value > type(uint40).max) {\n            revert SafeCastOverflowedUintDowncast(40, value);\n        }\n        return uint40(value);\n    }\n\n    /**\n     * @dev Returns the downcasted uint32 from uint256, reverting on\n     * overflow (when the input is greater than largest uint32).\n     *\n     * Counterpart to Solidity's `uint32` operator.\n     *\n     * Requirements:\n     *\n     * - input must fit into 32 bits\n     */\n    function toUint32(uint256 value) internal pure returns (uint32) {\n        if (value > type(uint32).max) {\n            revert SafeCastOverflowedUintDowncast(32, value);\n        }\n        return uint32(value);\n    }\n\n    /**\n     * @dev Returns the downcasted uint24 from uint256, reverting on\n     * overflow (when the input is greater than largest uint24).\n     *\n     * Counterpart to Solidity's `uint24` operator.\n     *\n     * Requirements:\n     *\n     * - input must fit into 24 bits\n     */\n    function toUint24(uint256 value) internal pure returns (uint24) {\n        if (value > type(uint24).max) {\n            revert SafeCastOverflowedUintDowncast(24, value);\n        }\n        return uint24(value);\n    }\n\n    /**\n     * @dev Returns the downcasted uint16 from uint256, reverting on\n     * overflow (when the input is greater than largest uint16).\n     *\n     * Counterpart to Solidity's `uint16` operator.\n     *\n     * Requirements:\n     *\n     * - input must fit into 16 bits\n     */\n    function toUint16(uint256 value) internal pure returns (uint16) {\n        if (value > type(uint16).max) {\n            revert SafeCastOverflowedUintDowncast(16, value);\n        }\n        return uint16(value);\n    }\n\n    /**\n     * @dev Returns the downcasted uint8 from uint256, reverting on\n     * overflow (when the input is greater than largest uint8).\n     *\n     * Counterpart to Solidity's `uint8` operator.\n     *\n     * Requirements:\n     *\n     * - input must fit into 8 bits\n     */\n    function toUint8(uint256 value) internal pure returns (uint8) {\n        if (value > type(uint8).max) {\n            revert SafeCastOverflowedUintDowncast(8, value);\n        }\n        return uint8(value);\n    }\n\n    /**\n     * @dev Converts a signed int256 into an unsigned uint256.\n     *\n     * Requirements:\n     *\n     * - input must be greater than or equal to 0.\n     */\n    function toUint256(int256 value) internal pure returns (uint256) {\n        if (value < 0) {\n            revert SafeCastOverflowedIntToUint(value);\n        }\n        return uint256(value);\n    }\n\n    /**\n     * @dev Returns the downcasted int248 from int256, reverting on\n     * overflow (when the input is less than smallest int248 or\n     * greater than largest int248).\n     *\n     * Counterpart to Solidity's `int248` operator.\n     *\n     * Requirements:\n     *\n     * - input must fit into 248 bits\n     */\n    function toInt248(int256 value) internal pure returns (int248 downcasted) {\n        downcasted = int248(value);\n        if (downcasted != value) {\n            revert SafeCastOverflowedIntDowncast(248, value);\n        }\n    }\n\n    /**\n     * @dev Returns the downcasted int240 from int256, reverting on\n     * overflow (when the input is less than smallest int240 or\n     * greater than largest int240).\n     *\n     * Counterpart to Solidity's `int240` operator.\n     *\n     * Requirements:\n     *\n     * - input must fit into 240 bits\n     */\n    function toInt240(int256 value) internal pure returns (int240 downcasted) {\n        downcasted = int240(value);\n        if (downcasted != value) {\n            revert SafeCastOverflowedIntDowncast(240, value);\n        }\n    }\n\n    /**\n     * @dev Returns the downcasted int232 from int256, reverting on\n     * overflow (when the input is less than smallest int232 or\n     * greater than largest int232).\n     *\n     * Counterpart to Solidity's `int232` operator.\n     *\n     * Requirements:\n     *\n     * - input must fit into 232 bits\n     */\n    function toInt232(int256 value) internal pure returns (int232 downcasted) {\n        downcasted = int232(value);\n        if (downcasted != value) {\n            revert SafeCastOverflowedIntDowncast(232, value);\n        }\n    }\n\n    /**\n     * @dev Returns the downcasted int224 from int256, reverting on\n     * overflow (when the input is less than smallest int224 or\n     * greater than largest int224).\n     *\n     * Counterpart to Solidity's `int224` operator.\n     *\n     * Requirements:\n     *\n     * - input must fit into 224 bits\n     */\n    function toInt224(int256 value) internal pure returns (int224 downcasted) {\n        downcasted = int224(value);\n        if (downcasted != value) {\n            revert SafeCastOverflowedIntDowncast(224, value);\n        }\n    }\n\n    /**\n     * @dev Returns the downcasted int216 from int256, reverting on\n     * overflow (when the input is less than smallest int216 or\n     * greater than largest int216).\n     *\n     * Counterpart to Solidity's `int216` operator.\n     *\n     * Requirements:\n     *\n     * - input must fit into 216 bits\n     */\n    function toInt216(int256 value) internal pure returns (int216 downcasted) {\n        downcasted = int216(value);\n        if (downcasted != value) {\n            revert SafeCastOverflowedIntDowncast(216, value);\n        }\n    }\n\n    /**\n     * @dev Returns the downcasted int208 from int256, reverting on\n     * overflow (when the input is less than smallest int208 or\n     * greater than largest int208).\n     *\n     * Counterpart to Solidity's `int208` operator.\n     *\n     * Requirements:\n     *\n     * - input must fit into 208 bits\n     */\n    function toInt208(int256 value) internal pure returns (int208 downcasted) {\n        downcasted = int208(value);\n        if (downcasted != value) {\n            revert SafeCastOverflowedIntDowncast(208, value);\n        }\n    }\n\n    /**\n     * @dev Returns the downcasted int200 from int256, reverting on\n     * overflow (when the input is less than smallest int200 or\n     * greater than largest int200).\n     *\n     * Counterpart to Solidity's `int200` operator.\n     *\n     * Requirements:\n     *\n     * - input must fit into 200 bits\n     */\n    function toInt200(int256 value) internal pure returns (int200 downcasted) {\n        downcasted = int200(value);\n        if (downcasted != value) {\n            revert SafeCastOverflowedIntDowncast(200, value);\n        }\n    }\n\n    /**\n     * @dev Returns the downcasted int192 from int256, reverting on\n     * overflow (when the input is less than smallest int192 or\n     * greater than largest int192).\n     *\n     * Counterpart to Solidity's `int192` operator.\n     *\n     * Requirements:\n     *\n     * - input must fit into 192 bits\n     */\n    function toInt192(int256 value) internal pure returns (int192 downcasted) {\n        downcasted = int192(value);\n        if (downcasted != value) {\n            revert SafeCastOverflowedIntDowncast(192, value);\n        }\n    }\n\n    /**\n     * @dev Returns the downcasted int184 from int256, reverting on\n     * overflow (when the input is less than smallest int184 or\n     * greater than largest int184).\n     *\n     * Counterpart to Solidity's `int184` operator.\n     *\n     * Requirements:\n     *\n     * - input must fit into 184 bits\n     */\n    function toInt184(int256 value) internal pure returns (int184 downcasted) {\n        downcasted = int184(value);\n        if (downcasted != value) {\n            revert SafeCastOverflowedIntDowncast(184, value);\n        }\n    }\n\n    /**\n     * @dev Returns the downcasted int176 from int256, reverting on\n     * overflow (when the input is less than smallest int176 or\n     * greater than largest int176).\n     *\n     * Counterpart to Solidity's `int176` operator.\n     *\n     * Requirements:\n     *\n     * - input must fit into 176 bits\n     */\n    function toInt176(int256 value) internal pure returns (int176 downcasted) {\n        downcasted = int176(value);\n        if (downcasted != value) {\n            revert SafeCastOverflowedIntDowncast(176, value);\n        }\n    }\n\n    /**\n     * @dev Returns the downcasted int168 from int256, reverting on\n     * overflow (when the input is less than smallest int168 or\n     * greater than largest int168).\n     *\n     * Counterpart to Solidity's `int168` operator.\n     *\n     * Requirements:\n     *\n     * - input must fit into 168 bits\n     */\n    function toInt168(int256 value) internal pure returns (int168 downcasted) {\n        downcasted = int168(value);\n        if (downcasted != value) {\n            revert SafeCastOverflowedIntDowncast(168, value);\n        }\n    }\n\n    /**\n     * @dev Returns the downcasted int160 from int256, reverting on\n     * overflow (when the input is less than smallest int160 or\n     * greater than largest int160).\n     *\n     * Counterpart to Solidity's `int160` operator.\n     *\n     * Requirements:\n     *\n     * - input must fit into 160 bits\n     */\n    function toInt160(int256 value) internal pure returns (int160 downcasted) {\n        downcasted = int160(value);\n        if (downcasted != value) {\n            revert SafeCastOverflowedIntDowncast(160, value);\n        }\n    }\n\n    /**\n     * @dev Returns the downcasted int152 from int256, reverting on\n     * overflow (when the input is less than smallest int152 or\n     * greater than largest int152).\n     *\n     * Counterpart to Solidity's `int152` operator.\n     *\n     * Requirements:\n     *\n     * - input must fit into 152 bits\n     */\n    function toInt152(int256 value) internal pure returns (int152 downcasted) {\n        downcasted = int152(value);\n        if (downcasted != value) {\n            revert SafeCastOverflowedIntDowncast(152, value);\n        }\n    }\n\n    /**\n     * @dev Returns the downcasted int144 from int256, reverting on\n     * overflow (when the input is less than smallest int144 or\n     * greater than largest int144).\n     *\n     * Counterpart to Solidity's `int144` operator.\n     *\n     * Requirements:\n     *\n     * - input must fit into 144 bits\n     */\n    function toInt144(int256 value) internal pure returns (int144 downcasted) {\n        downcasted = int144(value);\n        if (downcasted != value) {\n            revert SafeCastOverflowedIntDowncast(144, value);\n        }\n    }\n\n    /**\n     * @dev Returns the downcasted int136 from int256, reverting on\n     * overflow (when the input is less than smallest int136 or\n     * greater than largest int136).\n     *\n     * Counterpart to Solidity's `int136` operator.\n     *\n     * Requirements:\n     *\n     * - input must fit into 136 bits\n     */\n    function toInt136(int256 value) internal pure returns (int136 downcasted) {\n        downcasted = int136(value);\n        if (downcasted != value) {\n            revert SafeCastOverflowedIntDowncast(136, value);\n        }\n    }\n\n    /**\n     * @dev Returns the downcasted int128 from int256, reverting on\n     * overflow (when the input is less than smallest int128 or\n     * greater than largest int128).\n     *\n     * Counterpart to Solidity's `int128` operator.\n     *\n     * Requirements:\n     *\n     * - input must fit into 128 bits\n     */\n    function toInt128(int256 value) internal pure returns (int128 downcasted) {\n        downcasted = int128(value);\n        if (downcasted != value) {\n            revert SafeCastOverflowedIntDowncast(128, value);\n        }\n    }\n\n    /**\n     * @dev Returns the downcasted int120 from int256, reverting on\n     * overflow (when the input is less than smallest int120 or\n     * greater than largest int120).\n     *\n     * Counterpart to Solidity's `int120` operator.\n     *\n     * Requirements:\n     *\n     * - input must fit into 120 bits\n     */\n    function toInt120(int256 value) internal pure returns (int120 downcasted) {\n        downcasted = int120(value);\n        if (downcasted != value) {\n            revert SafeCastOverflowedIntDowncast(120, value);\n        }\n    }\n\n    /**\n     * @dev Returns the downcasted int112 from int256, reverting on\n     * overflow (when the input is less than smallest int112 or\n     * greater than largest int112).\n     *\n     * Counterpart to Solidity's `int112` operator.\n     *\n     * Requirements:\n     *\n     * - input must fit into 112 bits\n     */\n    function toInt112(int256 value) internal pure returns (int112 downcasted) {\n        downcasted = int112(value);\n        if (downcasted != value) {\n            revert SafeCastOverflowedIntDowncast(112, value);\n        }\n    }\n\n    /**\n     * @dev Returns the downcasted int104 from int256, reverting on\n     * overflow (when the input is less than smallest int104 or\n     * greater than largest int104).\n     *\n     * Counterpart to Solidity's `int104` operator.\n     *\n     * Requirements:\n     *\n     * - input must fit into 104 bits\n     */\n    function toInt104(int256 value) internal pure returns (int104 downcasted) {\n        downcasted = int104(value);\n        if (downcasted != value) {\n            revert SafeCastOverflowedIntDowncast(104, value);\n        }\n    }\n\n    /**\n     * @dev Returns the downcasted int96 from int256, reverting on\n     * overflow (when the input is less than smallest int96 or\n     * greater than largest int96).\n     *\n     * Counterpart to Solidity's `int96` operator.\n     *\n     * Requirements:\n     *\n     * - input must fit into 96 bits\n     */\n    function toInt96(int256 value) internal pure returns (int96 downcasted) {\n        downcasted = int96(value);\n        if (downcasted != value) {\n            revert SafeCastOverflowedIntDowncast(96, value);\n        }\n    }\n\n    /**\n     * @dev Returns the downcasted int88 from int256, reverting on\n     * overflow (when the input is less than smallest int88 or\n     * greater than largest int88).\n     *\n     * Counterpart to Solidity's `int88` operator.\n     *\n     * Requirements:\n     *\n     * - input must fit into 88 bits\n     */\n    function toInt88(int256 value) internal pure returns (int88 downcasted) {\n        downcasted = int88(value);\n        if (downcasted != value) {\n            revert SafeCastOverflowedIntDowncast(88, value);\n        }\n    }\n\n    /**\n     * @dev Returns the downcasted int80 from int256, reverting on\n     * overflow (when the input is less than smallest int80 or\n     * greater than largest int80).\n     *\n     * Counterpart to Solidity's `int80` operator.\n     *\n     * Requirements:\n     *\n     * - input must fit into 80 bits\n     */\n    function toInt80(int256 value) internal pure returns (int80 downcasted) {\n        downcasted = int80(value);\n        if (downcasted != value) {\n            revert SafeCastOverflowedIntDowncast(80, value);\n        }\n    }\n\n    /**\n     * @dev Returns the downcasted int72 from int256, reverting on\n     * overflow (when the input is less than smallest int72 or\n     * greater than largest int72).\n     *\n     * Counterpart to Solidity's `int72` operator.\n     *\n     * Requirements:\n     *\n     * - input must fit into 72 bits\n     */\n    function toInt72(int256 value) internal pure returns (int72 downcasted) {\n        downcasted = int72(value);\n        if (downcasted != value) {\n            revert SafeCastOverflowedIntDowncast(72, value);\n        }\n    }\n\n    /**\n     * @dev Returns the downcasted int64 from int256, reverting on\n     * overflow (when the input is less than smallest int64 or\n     * greater than largest int64).\n     *\n     * Counterpart to Solidity's `int64` operator.\n     *\n     * Requirements:\n     *\n     * - input must fit into 64 bits\n     */\n    function toInt64(int256 value) internal pure returns (int64 downcasted) {\n        downcasted = int64(value);\n        if (downcasted != value) {\n            revert SafeCastOverflowedIntDowncast(64, value);\n        }\n    }\n\n    /**\n     * @dev Returns the downcasted int56 from int256, reverting on\n     * overflow (when the input is less than smallest int56 or\n     * greater than largest int56).\n     *\n     * Counterpart to Solidity's `int56` operator.\n     *\n     * Requirements:\n     *\n     * - input must fit into 56 bits\n     */\n    function toInt56(int256 value) internal pure returns (int56 downcasted) {\n        downcasted = int56(value);\n        if (downcasted != value) {\n            revert SafeCastOverflowedIntDowncast(56, value);\n        }\n    }\n\n    /**\n     * @dev Returns the downcasted int48 from int256, reverting on\n     * overflow (when the input is less than smallest int48 or\n     * greater than largest int48).\n     *\n     * Counterpart to Solidity's `int48` operator.\n     *\n     * Requirements:\n     *\n     * - input must fit into 48 bits\n     */\n    function toInt48(int256 value) internal pure returns (int48 downcasted) {\n        downcasted = int48(value);\n        if (downcasted != value) {\n            revert SafeCastOverflowedIntDowncast(48, value);\n        }\n    }\n\n    /**\n     * @dev Returns the downcasted int40 from int256, reverting on\n     * overflow (when the input is less than smallest int40 or\n     * greater than largest int40).\n     *\n     * Counterpart to Solidity's `int40` operator.\n     *\n     * Requirements:\n     *\n     * - input must fit into 40 bits\n     */\n    function toInt40(int256 value) internal pure returns (int40 downcasted) {\n        downcasted = int40(value);\n        if (downcasted != value) {\n            revert SafeCastOverflowedIntDowncast(40, value);\n        }\n    }\n\n    /**\n     * @dev Returns the downcasted int32 from int256, reverting on\n     * overflow (when the input is less than smallest int32 or\n     * greater than largest int32).\n     *\n     * Counterpart to Solidity's `int32` operator.\n     *\n     * Requirements:\n     *\n     * - input must fit into 32 bits\n     */\n    function toInt32(int256 value) internal pure returns (int32 downcasted) {\n        downcasted = int32(value);\n        if (downcasted != value) {\n            revert SafeCastOverflowedIntDowncast(32, value);\n        }\n    }\n\n    /**\n     * @dev Returns the downcasted int24 from int256, reverting on\n     * overflow (when the input is less than smallest int24 or\n     * greater than largest int24).\n     *\n     * Counterpart to Solidity's `int24` operator.\n     *\n     * Requirements:\n     *\n     * - input must fit into 24 bits\n     */\n    function toInt24(int256 value) internal pure returns (int24 downcasted) {\n        downcasted = int24(value);\n        if (downcasted != value) {\n            revert SafeCastOverflowedIntDowncast(24, value);\n        }\n    }\n\n    /**\n     * @dev Returns the downcasted int16 from int256, reverting on\n     * overflow (when the input is less than smallest int16 or\n     * greater than largest int16).\n     *\n     * Counterpart to Solidity's `int16` operator.\n     *\n     * Requirements:\n     *\n     * - input must fit into 16 bits\n     */\n    function toInt16(int256 value) internal pure returns (int16 downcasted) {\n        downcasted = int16(value);\n        if (downcasted != value) {\n            revert SafeCastOverflowedIntDowncast(16, value);\n        }\n    }\n\n    /**\n     * @dev Returns the downcasted int8 from int256, reverting on\n     * overflow (when the input is less than smallest int8 or\n     * greater than largest int8).\n     *\n     * Counterpart to Solidity's `int8` operator.\n     *\n     * Requirements:\n     *\n     * - input must fit into 8 bits\n     */\n    function toInt8(int256 value) internal pure returns (int8 downcasted) {\n        downcasted = int8(value);\n        if (downcasted != value) {\n            revert SafeCastOverflowedIntDowncast(8, value);\n        }\n    }\n\n    /**\n     * @dev Converts an unsigned uint256 into a signed int256.\n     *\n     * Requirements:\n     *\n     * - input must be less than or equal to maxInt256.\n     */\n    function toInt256(uint256 value) internal pure returns (int256) {\n        // Note: Unsafe cast below is okay because `type(int256).max` is guaranteed to be positive\n        if (value > uint256(type(int256).max)) {\n            revert SafeCastOverflowedUintToInt(value);\n        }\n        return int256(value);\n    }\n\n    /**\n     * @dev Cast a boolean (false or true) to a uint256 (0 or 1) with no jump.\n     */\n    function toUint(bool b) internal pure returns (uint256 u) {\n        assembly (\"memory-safe\") {\n            u := iszero(iszero(b))\n        }\n    }\n}\n"},"@openzeppelin/contracts/utils/Memory.sol":{"content":"// SPDX-License-Identifier: MIT\n// OpenZeppelin Contracts (last updated v5.5.0) (utils/Memory.sol)\n\npragma solidity ^0.8.24;\n\nimport {Panic} from \"./Panic.sol\";\nimport {Math} from \"./math/Math.sol\";\n\n/**\n * @dev Utilities to manipulate memory.\n *\n * Memory is a contiguous and dynamic byte array in which Solidity stores non-primitive types.\n * This library provides functions to manipulate pointers to this dynamic array and work with slices of it.\n *\n * Slices provide a view into a portion of memory without copying data, enabling efficient substring operations.\n *\n * WARNING: When manipulating memory pointers or slices, make sure to follow the Solidity documentation\n * guidelines for https://docs.soliditylang.org/en/v0.8.20/assembly.html#memory-safety[Memory Safety].\n */\nlibrary Memory {\n    type Pointer is bytes32;\n\n    /// @dev Returns a `Pointer` to the current free `Pointer`.\n    function getFreeMemoryPointer() internal pure returns (Pointer ptr) {\n        assembly (\"memory-safe\") {\n            ptr := mload(0x40)\n        }\n    }\n\n    /**\n     * @dev Sets the free `Pointer` to a specific value.\n     *\n     * WARNING: Everything after the pointer may be overwritten.\n     **/\n    function setFreeMemoryPointer(Pointer ptr) internal pure {\n        assembly (\"memory-safe\") {\n            mstore(0x40, ptr)\n        }\n    }\n\n    /// @dev `Pointer` to `bytes32`. Expects a pointer to a properly ABI-encoded `bytes` object.\n    function asBytes32(Pointer ptr) internal pure returns (bytes32) {\n        return Pointer.unwrap(ptr);\n    }\n\n    /// @dev `bytes32` to `Pointer`. Expects a pointer to a properly ABI-encoded `bytes` object.\n    function asPointer(bytes32 value) internal pure returns (Pointer) {\n        return Pointer.wrap(value);\n    }\n\n    /// @dev Move a pointer forward by a given offset.\n    function forward(Pointer ptr, uint256 offset) internal pure returns (Pointer) {\n        return Pointer.wrap(bytes32(uint256(Pointer.unwrap(ptr)) + offset));\n    }\n\n    /// @dev Equality comparator for memory pointers.\n    function equal(Pointer ptr1, Pointer ptr2) internal pure returns (bool) {\n        return Pointer.unwrap(ptr1) == Pointer.unwrap(ptr2);\n    }\n\n    type Slice is bytes32;\n\n    /// @dev Get a slice representation of a bytes object in memory\n    function asSlice(bytes memory self) internal pure returns (Slice result) {\n        assembly (\"memory-safe\") {\n            result := or(shl(128, mload(self)), add(self, 0x20))\n        }\n    }\n\n    /// @dev Returns the length of a given slice (equiv to self.length for calldata slices)\n    function length(Slice self) internal pure returns (uint256 result) {\n        assembly (\"memory-safe\") {\n            result := shr(128, self)\n        }\n    }\n\n    /// @dev Offset a memory slice (equivalent to self[start:] for calldata slices)\n    function slice(Slice self, uint256 offset) internal pure returns (Slice) {\n        if (offset > length(self)) Panic.panic(Panic.ARRAY_OUT_OF_BOUNDS);\n        return _asSlice(length(self) - offset, forward(_pointer(self), offset));\n    }\n\n    /// @dev Offset and cut a Slice (equivalent to self[start:start+length] for calldata slices)\n    function slice(Slice self, uint256 offset, uint256 len) internal pure returns (Slice) {\n        if (offset + len > length(self)) Panic.panic(Panic.ARRAY_OUT_OF_BOUNDS);\n        return _asSlice(len, forward(_pointer(self), offset));\n    }\n\n    /**\n     * @dev Read a bytes32 buffer from a given Slice at a specific offset\n     *\n     * NOTE: If offset > length(slice) - 0x20, part of the return value will be out of bound of the slice. These bytes are zeroed.\n     */\n    function load(Slice self, uint256 offset) internal pure returns (bytes32 value) {\n        uint256 outOfBoundBytes = Math.saturatingSub(0x20 + offset, length(self));\n        if (outOfBoundBytes > 0x1f) Panic.panic(Panic.ARRAY_OUT_OF_BOUNDS);\n\n        assembly (\"memory-safe\") {\n            value := and(mload(add(and(self, shr(128, not(0))), offset)), shl(mul(8, outOfBoundBytes), not(0)))\n        }\n    }\n\n    /// @dev Extract the data corresponding to a Slice (allocate new memory)\n    function toBytes(Slice self) internal pure returns (bytes memory result) {\n        uint256 len = length(self);\n        Memory.Pointer ptr = _pointer(self);\n        assembly (\"memory-safe\") {\n            result := mload(0x40)\n            mstore(result, len)\n            mcopy(add(result, 0x20), ptr, len)\n            mstore(0x40, add(add(result, len), 0x20))\n        }\n    }\n\n    /**\n     * @dev Private helper: create a slice from raw values (length and pointer)\n     *\n     * NOTE: this function MUST NOT be called with `len` or `ptr` that exceed `2**128-1`. This should never be\n     * the case of slices produced by `asSlice(bytes)`, and function that reduce the scope of slices\n     * (`slice(Slice,uint256)` and `slice(Slice,uint256, uint256)`) should not cause this issue if the parent slice is\n     * correct.\n     */\n    function _asSlice(uint256 len, Memory.Pointer ptr) private pure returns (Slice result) {\n        assembly (\"memory-safe\") {\n            result := or(shl(128, len), ptr)\n        }\n    }\n\n    /// @dev Returns the memory location of a given slice (equiv to self.offset for calldata slices)\n    function _pointer(Slice self) private pure returns (Memory.Pointer result) {\n        assembly (\"memory-safe\") {\n            result := and(self, shr(128, not(0)))\n        }\n    }\n}\n"},"@openzeppelin/contracts/utils/Multicall.sol":{"content":"// SPDX-License-Identifier: MIT\n// OpenZeppelin Contracts (last updated v5.5.0) (utils/Multicall.sol)\n\npragma solidity ^0.8.20;\n\nimport {Address} from \"./Address.sol\";\nimport {Context} from \"./Context.sol\";\n\n/**\n * @dev Provides a function to batch together multiple calls in a single external call.\n *\n * Consider any assumption about calldata validation performed by the sender may be violated if it's not especially\n * careful about sending transactions invoking {multicall}. For example, a relay address that filters function\n * selectors won't filter calls nested within a {multicall} operation.\n *\n * NOTE: Since 5.0.1 and 4.9.4, this contract identifies non-canonical contexts (i.e. `msg.sender` is not {Context-_msgSender}).\n * If a non-canonical context is identified, the following self `delegatecall` appends the last bytes of `msg.data`\n * to the subcall. This makes it safe to use with {ERC2771Context}. Contexts that don't affect the resolution of\n * {Context-_msgSender} are not propagated to subcalls.\n */\nabstract contract Multicall is Context {\n    /**\n     * @dev Receives and executes a batch of function calls on this contract.\n     * @custom:oz-upgrades-unsafe-allow-reachable delegatecall\n     */\n    function multicall(bytes[] calldata data) public virtual returns (bytes[] memory results) {\n        bytes memory context = msg.sender == _msgSender()\n            ? new bytes(0)\n            : msg.data[msg.data.length - _contextSuffixLength():];\n\n        results = new bytes[](data.length);\n        for (uint256 i = 0; i < data.length; i++) {\n            results[i] = Address.functionDelegateCall(address(this), bytes.concat(data[i], context));\n        }\n        return results;\n    }\n}\n"},"@openzeppelin/contracts/utils/Panic.sol":{"content":"// SPDX-License-Identifier: MIT\n// OpenZeppelin Contracts (last updated v5.1.0) (utils/Panic.sol)\n\npragma solidity ^0.8.20;\n\n/**\n * @dev Helper library for emitting standardized panic codes.\n *\n * ```solidity\n * contract Example {\n *      using Panic for uint256;\n *\n *      // Use any of the declared internal constants\n *      function foo() { Panic.GENERIC.panic(); }\n *\n *      // Alternatively\n *      function foo() { Panic.panic(Panic.GENERIC); }\n * }\n * ```\n *\n * Follows the list from https://github.com/ethereum/solidity/blob/v0.8.24/libsolutil/ErrorCodes.h[libsolutil].\n *\n * _Available since v5.1._\n */\n// slither-disable-next-line unused-state\nlibrary Panic {\n    /// @dev generic / unspecified error\n    uint256 internal constant GENERIC = 0x00;\n    /// @dev used by the assert() builtin\n    uint256 internal constant ASSERT = 0x01;\n    /// @dev arithmetic underflow or overflow\n    uint256 internal constant UNDER_OVERFLOW = 0x11;\n    /// @dev division or modulo by zero\n    uint256 internal constant DIVISION_BY_ZERO = 0x12;\n    /// @dev enum conversion error\n    uint256 internal constant ENUM_CONVERSION_ERROR = 0x21;\n    /// @dev invalid encoding in storage\n    uint256 internal constant STORAGE_ENCODING_ERROR = 0x22;\n    /// @dev empty array pop\n    uint256 internal constant EMPTY_ARRAY_POP = 0x31;\n    /// @dev array out of bounds access\n    uint256 internal constant ARRAY_OUT_OF_BOUNDS = 0x32;\n    /// @dev resource error (too large allocation or too large array)\n    uint256 internal constant RESOURCE_ERROR = 0x41;\n    /// @dev calling invalid internal function\n    uint256 internal constant INVALID_INTERNAL_FUNCTION = 0x51;\n\n    /// @dev Reverts with a panic code. Recommended to use with\n    /// the internal constants with predefined codes.\n    function panic(uint256 code) internal pure {\n        assembly (\"memory-safe\") {\n            mstore(0x00, 0x4e487b71)\n            mstore(0x20, code)\n            revert(0x1c, 0x24)\n        }\n    }\n}\n"},"@openzeppelin/contracts/utils/StorageSlot.sol":{"content":"// SPDX-License-Identifier: MIT\n// OpenZeppelin Contracts (last updated v5.1.0) (utils/StorageSlot.sol)\n// This file was procedurally generated from scripts/generate/templates/StorageSlot.js.\n\npragma solidity ^0.8.20;\n\n/**\n * @dev Library for reading and writing primitive types to specific storage slots.\n *\n * Storage slots are often used to avoid storage conflict when dealing with upgradeable contracts.\n * This library helps with reading and writing to such slots without the need for inline assembly.\n *\n * The functions in this library return Slot structs that contain a `value` member that can be used to read or write.\n *\n * Example usage to set ERC-1967 implementation slot:\n * ```solidity\n * contract ERC1967 {\n *     // Define the slot. Alternatively, use the SlotDerivation library to derive the slot.\n *     bytes32 internal constant _IMPLEMENTATION_SLOT = 0x360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc;\n *\n *     function _getImplementation() internal view returns (address) {\n *         return StorageSlot.getAddressSlot(_IMPLEMENTATION_SLOT).value;\n *     }\n *\n *     function _setImplementation(address newImplementation) internal {\n *         require(newImplementation.code.length > 0);\n *         StorageSlot.getAddressSlot(_IMPLEMENTATION_SLOT).value = newImplementation;\n *     }\n * }\n * ```\n *\n * TIP: Consider using this library along with {SlotDerivation}.\n */\nlibrary StorageSlot {\n    struct AddressSlot {\n        address value;\n    }\n\n    struct BooleanSlot {\n        bool value;\n    }\n\n    struct Bytes32Slot {\n        bytes32 value;\n    }\n\n    struct Uint256Slot {\n        uint256 value;\n    }\n\n    struct Int256Slot {\n        int256 value;\n    }\n\n    struct StringSlot {\n        string value;\n    }\n\n    struct BytesSlot {\n        bytes value;\n    }\n\n    /**\n     * @dev Returns an `AddressSlot` with member `value` located at `slot`.\n     */\n    function getAddressSlot(bytes32 slot) internal pure returns (AddressSlot storage r) {\n        assembly (\"memory-safe\") {\n            r.slot := slot\n        }\n    }\n\n    /**\n     * @dev Returns a `BooleanSlot` with member `value` located at `slot`.\n     */\n    function getBooleanSlot(bytes32 slot) internal pure returns (BooleanSlot storage r) {\n        assembly (\"memory-safe\") {\n            r.slot := slot\n        }\n    }\n\n    /**\n     * @dev Returns a `Bytes32Slot` with member `value` located at `slot`.\n     */\n    function getBytes32Slot(bytes32 slot) internal pure returns (Bytes32Slot storage r) {\n        assembly (\"memory-safe\") {\n            r.slot := slot\n        }\n    }\n\n    /**\n     * @dev Returns a `Uint256Slot` with member `value` located at `slot`.\n     */\n    function getUint256Slot(bytes32 slot) internal pure returns (Uint256Slot storage r) {\n        assembly (\"memory-safe\") {\n            r.slot := slot\n        }\n    }\n\n    /**\n     * @dev Returns a `Int256Slot` with member `value` located at `slot`.\n     */\n    function getInt256Slot(bytes32 slot) internal pure returns (Int256Slot storage r) {\n        assembly (\"memory-safe\") {\n            r.slot := slot\n        }\n    }\n\n    /**\n     * @dev Returns a `StringSlot` with member `value` located at `slot`.\n     */\n    function getStringSlot(bytes32 slot) internal pure returns (StringSlot storage r) {\n        assembly (\"memory-safe\") {\n            r.slot := slot\n        }\n    }\n\n    /**\n     * @dev Returns an `StringSlot` representation of the string storage pointer `store`.\n     */\n    function getStringSlot(string storage store) internal pure returns (StringSlot storage r) {\n        assembly (\"memory-safe\") {\n            r.slot := store.slot\n        }\n    }\n\n    /**\n     * @dev Returns a `BytesSlot` with member `value` located at `slot`.\n     */\n    function getBytesSlot(bytes32 slot) internal pure returns (BytesSlot storage r) {\n        assembly (\"memory-safe\") {\n            r.slot := slot\n        }\n    }\n\n    /**\n     * @dev Returns an `BytesSlot` representation of the bytes storage pointer `store`.\n     */\n    function getBytesSlot(bytes storage store) internal pure returns (BytesSlot storage r) {\n        assembly (\"memory-safe\") {\n            r.slot := store.slot\n        }\n    }\n}\n"},"@openzeppelin/contracts/utils/types/Time.sol":{"content":"// SPDX-License-Identifier: MIT\n// OpenZeppelin Contracts (last updated v5.5.0) (utils/types/Time.sol)\n\npragma solidity ^0.8.20;\n\nimport {Math} from \"../math/Math.sol\";\nimport {SafeCast} from \"../math/SafeCast.sol\";\n\n/**\n * @dev This library provides helpers for manipulating time-related objects.\n *\n * It uses the following types:\n * - `uint48` for timepoints\n * - `uint32` for durations\n *\n * While the library doesn't provide specific types for timepoints and duration, it does provide:\n * - a `Delay` type to represent duration that can be programmed to change value automatically at a given point\n * - additional helper functions\n */\nlibrary Time {\n    using Time for *;\n\n    /**\n     * @dev Get the block timestamp as a Timepoint.\n     */\n    function timestamp() internal view returns (uint48) {\n        return SafeCast.toUint48(block.timestamp);\n    }\n\n    /**\n     * @dev Get the block number as a Timepoint.\n     */\n    function blockNumber() internal view returns (uint48) {\n        return SafeCast.toUint48(block.number);\n    }\n\n    // ==================================================== Delay =====================================================\n    /**\n     * @dev A `Delay` is a uint32 duration that can be programmed to change value automatically at a given point in the\n     * future. The \"effect\" timepoint describes when the transition happens from the \"old\" value to the \"new\" value.\n     * This allows updating the delay applied to some operation while keeping some guarantees.\n     *\n     * In particular, the {update} function guarantees that if the delay is reduced, the old delay still applies for\n     * some time. For example if the delay is currently 7 days to do an upgrade, the admin should not be able to set\n     * the delay to 0 and upgrade immediately. If the admin wants to reduce the delay, the old delay (7 days) should\n     * still apply for some time.\n     *\n     *\n     * The `Delay` type is 112 bits long, and packs the following:\n     *\n     * ```\n     *   | [uint48]: effect date (timepoint)\n     *   |           | [uint32]: value before (duration)\n     *   ↓           ↓       ↓ [uint32]: value after (duration)\n     * 0xAAAAAAAAAAAABBBBBBBBCCCCCCCC\n     * ```\n     *\n     * NOTE: The {get} and {withUpdate} functions operate using timestamps. Block number based delays are not currently\n     * supported.\n     */\n    type Delay is uint112;\n\n    /**\n     * @dev Wrap a duration into a Delay to add the one-step \"update in the future\" feature\n     */\n    function toDelay(uint32 duration) internal pure returns (Delay) {\n        return Delay.wrap(duration);\n    }\n\n    /**\n     * @dev Get the value at a given timepoint plus the pending value and effect timepoint if there is a scheduled\n     * change after this timepoint. If the effect timepoint is 0, then the pending value should not be considered.\n     */\n    function _getFullAt(\n        Delay self,\n        uint48 timepoint\n    ) private pure returns (uint32 valueBefore, uint32 valueAfter, uint48 effect) {\n        (valueBefore, valueAfter, effect) = self.unpack();\n        return effect <= timepoint ? (valueAfter, 0, 0) : (valueBefore, valueAfter, effect);\n    }\n\n    /**\n     * @dev Get the current value plus the pending value and effect timepoint if there is a scheduled change. If the\n     * effect timepoint is 0, then the pending value should not be considered.\n     */\n    function getFull(Delay self) internal view returns (uint32 valueBefore, uint32 valueAfter, uint48 effect) {\n        return _getFullAt(self, timestamp());\n    }\n\n    /**\n     * @dev Get the current value.\n     */\n    function get(Delay self) internal view returns (uint32) {\n        (uint32 delay, , ) = self.getFull();\n        return delay;\n    }\n\n    /**\n     * @dev Update a Delay object so that it takes a new duration after a timepoint that is automatically computed to\n     * enforce the old delay at the moment of the update. Returns the updated Delay object and the timestamp when the\n     * new delay becomes effective.\n     */\n    function withUpdate(\n        Delay self,\n        uint32 newValue,\n        uint32 minSetback\n    ) internal view returns (Delay updatedDelay, uint48 effect) {\n        uint32 value = self.get();\n        uint32 setback = uint32(Math.max(minSetback, value > newValue ? value - newValue : 0));\n        effect = timestamp() + setback;\n        return (pack(value, newValue, effect), effect);\n    }\n\n    /**\n     * @dev Split a delay into its components: valueBefore, valueAfter and effect (transition timepoint).\n     */\n    function unpack(Delay self) internal pure returns (uint32 valueBefore, uint32 valueAfter, uint48 effect) {\n        uint112 raw = Delay.unwrap(self);\n\n        valueAfter = uint32(raw);\n        valueBefore = uint32(raw >> 32);\n        effect = uint48(raw >> 64);\n\n        return (valueBefore, valueAfter, effect);\n    }\n\n    /**\n     * @dev pack the components into a Delay object.\n     */\n    function pack(uint32 valueBefore, uint32 valueAfter, uint48 effect) internal pure returns (Delay) {\n        return Delay.wrap((uint112(effect) << 64) | (uint112(valueBefore) << 32) | uint112(valueAfter));\n    }\n}\n"},"@uniswap/v3-core/contracts/interfaces/callback/IUniswapV3SwapCallback.sol":{"content":"// SPDX-License-Identifier: GPL-2.0-or-later\npragma solidity >=0.5.0;\n\n/// @title Callback for IUniswapV3PoolActions#swap\n/// @notice Any contract that calls IUniswapV3PoolActions#swap must implement this interface\ninterface IUniswapV3SwapCallback {\n    /// @notice Called to `msg.sender` after executing a swap via IUniswapV3Pool#swap.\n    /// @dev In the implementation you must pay the pool tokens owed for the swap.\n    /// The caller of this method must be checked to be a UniswapV3Pool deployed by the canonical UniswapV3Factory.\n    /// amount0Delta and amount1Delta can both be 0 if no tokens were swapped.\n    /// @param amount0Delta The amount of token0 that was sent (negative) or must be received (positive) by the pool by\n    /// the end of the swap. If positive, the callback must send that amount of token0 to the pool.\n    /// @param amount1Delta The amount of token1 that was sent (negative) or must be received (positive) by the pool by\n    /// the end of the swap. If positive, the callback must send that amount of token1 to the pool.\n    /// @param data Any data passed through by the caller via the IUniswapV3PoolActions#swap call\n    function uniswapV3SwapCallback(\n        int256 amount0Delta,\n        int256 amount1Delta,\n        bytes calldata data\n    ) external;\n}\n"},"@uniswap/v3-periphery/contracts/interfaces/ISwapRouter.sol":{"content":"// SPDX-License-Identifier: GPL-2.0-or-later\npragma solidity >=0.7.5;\npragma abicoder v2;\n\nimport '@uniswap/v3-core/contracts/interfaces/callback/IUniswapV3SwapCallback.sol';\n\n/// @title Router token swapping functionality\n/// @notice Functions for swapping tokens via Uniswap V3\ninterface ISwapRouter is IUniswapV3SwapCallback {\n    struct ExactInputSingleParams {\n        address tokenIn;\n        address tokenOut;\n        uint24 fee;\n        address recipient;\n        uint256 deadline;\n        uint256 amountIn;\n        uint256 amountOutMinimum;\n        uint160 sqrtPriceLimitX96;\n    }\n\n    /// @notice Swaps `amountIn` of one token for as much as possible of another token\n    /// @param params The parameters necessary for the swap, encoded as `ExactInputSingleParams` in calldata\n    /// @return amountOut The amount of the received token\n    function exactInputSingle(ExactInputSingleParams calldata params) external payable returns (uint256 amountOut);\n\n    struct ExactInputParams {\n        bytes path;\n        address recipient;\n        uint256 deadline;\n        uint256 amountIn;\n        uint256 amountOutMinimum;\n    }\n\n    /// @notice Swaps `amountIn` of one token for as much as possible of another along the specified path\n    /// @param params The parameters necessary for the multi-hop swap, encoded as `ExactInputParams` in calldata\n    /// @return amountOut The amount of the received token\n    function exactInput(ExactInputParams calldata params) external payable returns (uint256 amountOut);\n\n    struct ExactOutputSingleParams {\n        address tokenIn;\n        address tokenOut;\n        uint24 fee;\n        address recipient;\n        uint256 deadline;\n        uint256 amountOut;\n        uint256 amountInMaximum;\n        uint160 sqrtPriceLimitX96;\n    }\n\n    /// @notice Swaps as little as possible of one token for `amountOut` of another token\n    /// @param params The parameters necessary for the swap, encoded as `ExactOutputSingleParams` in calldata\n    /// @return amountIn The amount of the input token\n    function exactOutputSingle(ExactOutputSingleParams calldata params) external payable returns (uint256 amountIn);\n\n    struct ExactOutputParams {\n        bytes path;\n        address recipient;\n        uint256 deadline;\n        uint256 amountOut;\n        uint256 amountInMaximum;\n    }\n\n    /// @notice Swaps as little as possible of one token for `amountOut` of another along the specified path (reversed)\n    /// @param params The parameters necessary for the multi-hop swap, encoded as `ExactOutputParams` in calldata\n    /// @return amountIn The amount of the input token\n    function exactOutput(ExactOutputParams calldata params) external payable returns (uint256 amountIn);\n}\n"},"contracts/AccessManagedMSV.sol":{"content":"// SPDX-License-Identifier: Apache-2.0\npragma solidity ^0.8.0;\n\nimport {IERC20} from \"@openzeppelin/contracts/token/ERC20/IERC20.sol\";\nimport {IERC4626} from \"@openzeppelin/contracts/interfaces/IERC4626.sol\";\nimport {IAccessManager} from \"@openzeppelin/contracts/access/manager/IAccessManager.sol\";\nimport {ERC4626Upgradeable} from \"@openzeppelin/contracts-upgradeable/token/ERC20/extensions/ERC4626Upgradeable.sol\";\nimport {UUPSUpgradeable} from \"@openzeppelin/contracts-upgradeable/proxy/utils/UUPSUpgradeable.sol\";\nimport {Math} from \"@openzeppelin/contracts/utils/math/Math.sol\";\nimport {MSVBase} from \"./MSVBase.sol\";\nimport {IInvestStrategy} from \"./interfaces/IInvestStrategy.sol\";\nimport {AccessManagedProxy} from \"@ensuro/access-managed-proxy/contracts/AccessManagedProxy.sol\";\nimport {AMPUtils} from \"@ensuro/access-managed-proxy/contracts/AMPUtils.sol\";\n\n/**\n * @title AccessManagedMSV\n *\n * @dev Vault that invests/deinvests using pluggable IInvestStrategy contracts on each deposit/withdraw.\n *\n *      The vault MUST be deployed behind an AccessManagedProxy that controls the access to the critical methods\n *      Since this contract DOESN'T DO ANY ACCESS CONTROL.\n *\n *      The code of the IInvestStrategy is called using delegatecall, so it has full control over the assets and\n *      storage of this contract, so you must be very careful the kind of IInvestStrategy is plugged.\n *\n * @custom:security-contact security@ensuro.co\n * @author Ensuro\n */\ncontract AccessManagedMSV is MSVBase, UUPSUpgradeable, ERC4626Upgradeable {\n  /// @custom:oz-upgrades-unsafe-allow constructor\n  constructor() {\n    _disableInitializers();\n  }\n\n  /**\n   * @dev Initializes the SingleStrategyERC4626\n   *\n   * @param name_ Name of the ERC20/ERC4626 token\n   * @param symbol_ Symbol of the ERC20/ERC4626 token\n   * @param asset_ The asset() of the ERC4626\n   * @param strategies_ The IInvestStrategys that will be used to manage the funds received.\n   * @param initStrategyDatas Initialization data that will be sent to the strategies\n   * @param depositQueue_ The order in which the funds will be deposited in the strategies\n   * @param withdrawQueue_ The order in which the funds will be withdrawn from the strategies\n   */\n  function initialize(\n    string memory name_,\n    string memory symbol_,\n    IERC20 asset_,\n    IInvestStrategy[] memory strategies_,\n    bytes[] memory initStrategyDatas,\n    uint8[] memory depositQueue_,\n    uint8[] memory withdrawQueue_\n  ) public virtual initializer {\n    __AccessManagedMSV_init(name_, symbol_, asset_, strategies_, initStrategyDatas, depositQueue_, withdrawQueue_);\n  }\n\n  // solhint-disable-next-line func-name-mixedcase\n  function __AccessManagedMSV_init(\n    string memory name_,\n    string memory symbol_,\n    IERC20 asset_,\n    IInvestStrategy[] memory strategies_,\n    bytes[] memory initStrategyDatas,\n    uint8[] memory depositQueue_,\n    uint8[] memory withdrawQueue_\n  ) internal onlyInitializing {\n    __ERC4626_init(asset_);\n    __ERC20_init(name_, symbol_);\n    __MSVBase_init_unchained(strategies_, initStrategyDatas, depositQueue_, withdrawQueue_);\n  }\n\n  // solhint-disable-next-line no-empty-blocks\n  function _authorizeUpgrade(address newImpl) internal view override {}\n\n  function _asset() internal view override returns (address) {\n    return asset();\n  }\n\n  /// @inheritdoc IERC4626\n  function maxWithdraw(address owner) public view virtual override returns (uint256) {\n    uint256 ownerAssets = super.maxWithdraw(owner);\n    return _maxWithdrawable(ownerAssets);\n  }\n\n  /// @inheritdoc IERC4626\n  function maxRedeem(address owner) public view virtual override returns (uint256) {\n    uint256 shares = super.maxRedeem(owner);\n    uint256 ownerAssets = _convertToAssets(shares, Math.Rounding.Floor);\n    uint256 maxAssets = _maxWithdrawable(ownerAssets);\n    return (maxAssets == ownerAssets) ? shares : _convertToShares(maxAssets, Math.Rounding.Floor);\n  }\n\n  /// @inheritdoc IERC4626\n  function maxDeposit(address) public view virtual override returns (uint256 ret) {\n    return _maxDepositable();\n  }\n\n  /// @inheritdoc IERC4626\n  function maxMint(address) public view virtual override returns (uint256) {\n    uint256 maxDep = _maxDepositable();\n    return maxDep == type(uint256).max ? type(uint256).max : _convertToShares(maxDep, Math.Rounding.Floor);\n  }\n\n  /// @inheritdoc IERC4626\n  function totalAssets() public view virtual override returns (uint256 assets) {\n    return _totalAssets();\n  }\n\n  /// @inheritdoc ERC4626Upgradeable\n  function _withdraw(\n    address caller,\n    address receiver,\n    address owner,\n    uint256 assets,\n    uint256 shares\n  ) internal virtual override {\n    _withdrawFromStrategies(assets);\n    super._withdraw(caller, receiver, owner, assets, shares);\n  }\n\n  /// @inheritdoc ERC4626Upgradeable\n  function _deposit(address caller, address receiver, uint256 assets, uint256 shares) internal virtual override {\n    // super._deposit(...) the assets from the caller to this contract\n    super._deposit(caller, receiver, assets, shares);\n    // Then it deposits to the strategies\n    _depositToStrategies(assets);\n  }\n\n  /**\n   * @dev Returns the selector used to define the role required to call forwardToStrategy on a given strategy and\n   *      method\n   *\n   * @param strategyIndex The index of the strategy in the _strategies array\n   * @param method Id of the method to call. Is recommended that the strategy defines an enum with the methods that\n   *               can be called externally and validates this value.\n   * @return selector The bytes4 selector required to execute the call (will be used with target=address(this))\n   */\n  function getForwardToStrategySelector(uint8 strategyIndex, uint8 method) public view returns (bytes4 selector) {\n    // I assemble a fake selector combining the address of the strategy, the index, and the method called\n    address strategy = address(_strategies[strategyIndex]);\n    return AMPUtils.makeSelector(abi.encode(strategy, method));\n  }\n\n  /// @inheritdoc MSVBase\n  function _checkForwardToStrategy(uint8 strategyIndex, uint8 method, bytes memory) internal view override {\n    // To call forwardToStrategy, besides the access the method, we will check with the ACCESS_MANAGER the\n    // msg.sender canCall this contract with a fake selector generated by\n    // `getForwardToStrategySelector(strategyIndex, method)`\n    IAccessManager acMgr = AccessManagedProxy(payable(address(this))).ACCESS_MANAGER();\n    (bool immediate, ) = acMgr.canCall(msg.sender, address(this), getForwardToStrategySelector(strategyIndex, method));\n    // This only works when immediate == true, so timelocks can't be applied on this extra permission,\n    // only on the forwardToStrategy call.\n    // In the future we might use consumeScheduledOp flow to implement specific delays for specific\n    // forward calls\n    if (!immediate) revert AMPUtils.AccessManagedUnauthorized(msg.sender);\n  }\n}\n"},"contracts/dependencies/aave-v3/DataTypes.sol":{"content":"// SPDX-License-Identifier: BUSL-1.1\npragma solidity ^0.8.0;\n\nlibrary DataTypes {\n  struct ReserveData {\n    //stores the reserve configuration\n    ReserveConfigurationMap configuration;\n    //the liquidity index. Expressed in ray\n    uint128 liquidityIndex;\n    //the current supply rate. Expressed in ray\n    uint128 currentLiquidityRate;\n    //variable borrow index. Expressed in ray\n    uint128 variableBorrowIndex;\n    //the current variable borrow rate. Expressed in ray\n    uint128 currentVariableBorrowRate;\n    //the current stable borrow rate. Expressed in ray\n    uint128 currentStableBorrowRate;\n    //timestamp of last update\n    uint40 lastUpdateTimestamp;\n    //the id of the reserve. Represents the position in the list of the active reserves\n    uint16 id;\n    //aToken address\n    address aTokenAddress;\n    //stableDebtToken address\n    address stableDebtTokenAddress;\n    //variableDebtToken address\n    address variableDebtTokenAddress;\n    //address of the interest rate strategy\n    address interestRateStrategyAddress;\n    //the current treasury balance, scaled\n    uint128 accruedToTreasury;\n    //the outstanding unbacked aTokens minted through the bridging feature\n    uint128 unbacked;\n    //the outstanding debt borrowed against this asset in isolation mode\n    uint128 isolationModeTotalDebt;\n  }\n\n  struct ReserveConfigurationMap {\n    //bit 0-15: LTV\n    //bit 16-31: Liq. threshold\n    //bit 32-47: Liq. bonus\n    //bit 48-55: Decimals\n    //bit 56: reserve is active\n    //bit 57: reserve is frozen\n    //bit 58: borrowing is enabled\n    //bit 59: stable rate borrowing enabled\n    //bit 60: asset is paused\n    //bit 61: borrowing in isolation mode is enabled\n    //bit 62: siloed borrowing enabled\n    //bit 63: flashloaning enabled\n    //bit 64-79: reserve factor\n    //bit 80-115 borrow cap in whole tokens, borrowCap == 0 => no cap\n    //bit 116-151 supply cap in whole tokens, supplyCap == 0 => no cap\n    //bit 152-167 liquidation protocol fee\n    //bit 168-175 eMode category\n    //bit 176-211 unbacked mint cap in whole tokens, unbackedMintCap == 0 => minting disabled\n    //bit 212-251 debt ceiling for isolation mode with (ReserveConfiguration::DEBT_CEILING_DECIMALS) decimals\n    //bit 252-255 unused\n\n    uint256 data;\n  }\n\n  struct UserConfigurationMap {\n    /**\n     * @dev Bitmap of the users collaterals and borrows. It is divided in pairs of bits, one pair per asset.\n     * The first bit indicates if an asset is used as collateral by the user, the second whether an\n     * asset is borrowed by the user.\n     */\n    uint256 data;\n  }\n\n  struct EModeCategory {\n    // each eMode category has a custom ltv and liquidation threshold\n    uint16 ltv;\n    uint16 liquidationThreshold;\n    uint16 liquidationBonus;\n    // each eMode category may or may not have a custom oracle to override the individual assets price oracles\n    address priceSource;\n    string label;\n  }\n\n  enum InterestRateMode {NONE, STABLE, VARIABLE}\n\n  struct ReserveCache {\n    uint256 currScaledVariableDebt;\n    uint256 nextScaledVariableDebt;\n    uint256 currPrincipalStableDebt;\n    uint256 currAvgStableBorrowRate;\n    uint256 currTotalStableDebt;\n    uint256 nextAvgStableBorrowRate;\n    uint256 nextTotalStableDebt;\n    uint256 currLiquidityIndex;\n    uint256 nextLiquidityIndex;\n    uint256 currVariableBorrowIndex;\n    uint256 nextVariableBorrowIndex;\n    uint256 currLiquidityRate;\n    uint256 currVariableBorrowRate;\n    uint256 reserveFactor;\n    ReserveConfigurationMap reserveConfiguration;\n    address aTokenAddress;\n    address stableDebtTokenAddress;\n    address variableDebtTokenAddress;\n    uint40 reserveLastUpdateTimestamp;\n    uint40 stableDebtLastUpdateTimestamp;\n  }\n\n  struct ExecuteLiquidationCallParams {\n    uint256 reservesCount;\n    uint256 debtToCover;\n    address collateralAsset;\n    address debtAsset;\n    address user;\n    bool receiveAToken;\n    address priceOracle;\n    uint8 userEModeCategory;\n    address priceOracleSentinel;\n  }\n\n  struct ExecuteSupplyParams {\n    address asset;\n    uint256 amount;\n    address onBehalfOf;\n    uint16 referralCode;\n  }\n\n  struct ExecuteBorrowParams {\n    address asset;\n    address user;\n    address onBehalfOf;\n    uint256 amount;\n    InterestRateMode interestRateMode;\n    uint16 referralCode;\n    bool releaseUnderlying;\n    uint256 maxStableRateBorrowSizePercent;\n    uint256 reservesCount;\n    address oracle;\n    uint8 userEModeCategory;\n    address priceOracleSentinel;\n  }\n\n  struct ExecuteRepayParams {\n    address asset;\n    uint256 amount;\n    InterestRateMode interestRateMode;\n    address onBehalfOf;\n    bool useATokens;\n  }\n\n  struct ExecuteWithdrawParams {\n    address asset;\n    uint256 amount;\n    address to;\n    uint256 reservesCount;\n    address oracle;\n    uint8 userEModeCategory;\n  }\n\n  struct ExecuteSetUserEModeParams {\n    uint256 reservesCount;\n    address oracle;\n    uint8 categoryId;\n  }\n\n  struct FinalizeTransferParams {\n    address asset;\n    address from;\n    address to;\n    uint256 amount;\n    uint256 balanceFromBefore;\n    uint256 balanceToBefore;\n    uint256 reservesCount;\n    address oracle;\n    uint8 fromEModeCategory;\n  }\n\n  struct FlashloanParams {\n    address receiverAddress;\n    address[] assets;\n    uint256[] amounts;\n    uint256[] interestRateModes;\n    address onBehalfOf;\n    bytes params;\n    uint16 referralCode;\n    uint256 flashLoanPremiumToProtocol;\n    uint256 flashLoanPremiumTotal;\n    uint256 maxStableRateBorrowSizePercent;\n    uint256 reservesCount;\n    address addressesProvider;\n    uint8 userEModeCategory;\n    bool isAuthorizedFlashBorrower;\n  }\n\n  struct FlashloanSimpleParams {\n    address receiverAddress;\n    address asset;\n    uint256 amount;\n    bytes params;\n    uint16 referralCode;\n    uint256 flashLoanPremiumToProtocol;\n    uint256 flashLoanPremiumTotal;\n  }\n\n  struct FlashLoanRepaymentParams {\n    uint256 amount;\n    uint256 totalPremium;\n    uint256 flashLoanPremiumToProtocol;\n    address asset;\n    address receiverAddress;\n    uint16 referralCode;\n  }\n\n  struct CalculateUserAccountDataParams {\n    UserConfigurationMap userConfig;\n    uint256 reservesCount;\n    address user;\n    address oracle;\n    uint8 userEModeCategory;\n  }\n\n  struct ValidateBorrowParams {\n    ReserveCache reserveCache;\n    UserConfigurationMap userConfig;\n    address asset;\n    address userAddress;\n    uint256 amount;\n    InterestRateMode interestRateMode;\n    uint256 maxStableLoanPercent;\n    uint256 reservesCount;\n    address oracle;\n    uint8 userEModeCategory;\n    address priceOracleSentinel;\n    bool isolationModeActive;\n    address isolationModeCollateralAddress;\n    uint256 isolationModeDebtCeiling;\n  }\n\n  struct ValidateLiquidationCallParams {\n    ReserveCache debtReserveCache;\n    uint256 totalDebt;\n    uint256 healthFactor;\n    address priceOracleSentinel;\n  }\n\n  struct CalculateInterestRatesParams {\n    uint256 unbacked;\n    uint256 liquidityAdded;\n    uint256 liquidityTaken;\n    uint256 totalStableDebt;\n    uint256 totalVariableDebt;\n    uint256 averageStableBorrowRate;\n    uint256 reserveFactor;\n    address reserve;\n    address aToken;\n  }\n\n  struct InitReserveParams {\n    address asset;\n    address aTokenAddress;\n    address stableDebtAddress;\n    address variableDebtAddress;\n    address interestRateStrategyAddress;\n    uint16 reservesCount;\n    uint16 maxNumberReserves;\n  }\n}\n"},"contracts/dependencies/aave-v3/Errors.sol":{"content":"// SPDX-License-Identifier: BUSL-1.1\npragma solidity ^0.8.0;\n\n/**\n * @title Errors library\n * @author Aave\n * @notice Defines the error messages emitted by the different contracts of the Aave protocol\n */\nlibrary Errors {\n  string public constant CALLER_NOT_POOL_ADMIN = '1'; // 'The caller of the function is not a pool admin'\n  string public constant CALLER_NOT_EMERGENCY_ADMIN = '2'; // 'The caller of the function is not an emergency admin'\n  string public constant CALLER_NOT_POOL_OR_EMERGENCY_ADMIN = '3'; // 'The caller of the function is not a pool or emergency admin'\n  string public constant CALLER_NOT_RISK_OR_POOL_ADMIN = '4'; // 'The caller of the function is not a risk or pool admin'\n  string public constant CALLER_NOT_ASSET_LISTING_OR_POOL_ADMIN = '5'; // 'The caller of the function is not an asset listing or pool admin'\n  string public constant CALLER_NOT_BRIDGE = '6'; // 'The caller of the function is not a bridge'\n  string public constant ADDRESSES_PROVIDER_NOT_REGISTERED = '7'; // 'Pool addresses provider is not registered'\n  string public constant INVALID_ADDRESSES_PROVIDER_ID = '8'; // 'Invalid id for the pool addresses provider'\n  string public constant NOT_CONTRACT = '9'; // 'Address is not a contract'\n  string public constant CALLER_NOT_POOL_CONFIGURATOR = '10'; // 'The caller of the function is not the pool configurator'\n  string public constant CALLER_NOT_ATOKEN = '11'; // 'The caller of the function is not an AToken'\n  string public constant INVALID_ADDRESSES_PROVIDER = '12'; // 'The address of the pool addresses provider is invalid'\n  string public constant INVALID_FLASHLOAN_EXECUTOR_RETURN = '13'; // 'Invalid return value of the flashloan executor function'\n  string public constant RESERVE_ALREADY_ADDED = '14'; // 'Reserve has already been added to reserve list'\n  string public constant NO_MORE_RESERVES_ALLOWED = '15'; // 'Maximum amount of reserves in the pool reached'\n  string public constant EMODE_CATEGORY_RESERVED = '16'; // 'Zero eMode category is reserved for volatile heterogeneous assets'\n  string public constant INVALID_EMODE_CATEGORY_ASSIGNMENT = '17'; // 'Invalid eMode category assignment to asset'\n  string public constant RESERVE_LIQUIDITY_NOT_ZERO = '18'; // 'The liquidity of the reserve needs to be 0'\n  string public constant FLASHLOAN_PREMIUM_INVALID = '19'; // 'Invalid flashloan premium'\n  string public constant INVALID_RESERVE_PARAMS = '20'; // 'Invalid risk parameters for the reserve'\n  string public constant INVALID_EMODE_CATEGORY_PARAMS = '21'; // 'Invalid risk parameters for the eMode category'\n  string public constant BRIDGE_PROTOCOL_FEE_INVALID = '22'; // 'Invalid bridge protocol fee'\n  string public constant CALLER_MUST_BE_POOL = '23'; // 'The caller of this function must be a pool'\n  string public constant INVALID_MINT_AMOUNT = '24'; // 'Invalid amount to mint'\n  string public constant INVALID_BURN_AMOUNT = '25'; // 'Invalid amount to burn'\n  string public constant INVALID_AMOUNT = '26'; // 'Amount must be greater than 0'\n  string public constant RESERVE_INACTIVE = '27'; // 'Action requires an active reserve'\n  string public constant RESERVE_FROZEN = '28'; // 'Action cannot be performed because the reserve is frozen'\n  string public constant RESERVE_PAUSED = '29'; // 'Action cannot be performed because the reserve is paused'\n  string public constant BORROWING_NOT_ENABLED = '30'; // 'Borrowing is not enabled'\n  string public constant STABLE_BORROWING_NOT_ENABLED = '31'; // 'Stable borrowing is not enabled'\n  string public constant NOT_ENOUGH_AVAILABLE_USER_BALANCE = '32'; // 'User cannot withdraw more than the available balance'\n  string public constant INVALID_INTEREST_RATE_MODE_SELECTED = '33'; // 'Invalid interest rate mode selected'\n  string public constant COLLATERAL_BALANCE_IS_ZERO = '34'; // 'The collateral balance is 0'\n  string public constant HEALTH_FACTOR_LOWER_THAN_LIQUIDATION_THRESHOLD = '35'; // 'Health factor is lesser than the liquidation threshold'\n  string public constant COLLATERAL_CANNOT_COVER_NEW_BORROW = '36'; // 'There is not enough collateral to cover a new borrow'\n  string public constant COLLATERAL_SAME_AS_BORROWING_CURRENCY = '37'; // 'Collateral is (mostly) the same currency that is being borrowed'\n  string public constant AMOUNT_BIGGER_THAN_MAX_LOAN_SIZE_STABLE = '38'; // 'The requested amount is greater than the max loan size in stable rate mode'\n  string public constant NO_DEBT_OF_SELECTED_TYPE = '39'; // 'For repayment of a specific type of debt, the user needs to have debt that type'\n  string public constant NO_EXPLICIT_AMOUNT_TO_REPAY_ON_BEHALF = '40'; // 'To repay on behalf of a user an explicit amount to repay is needed'\n  string public constant NO_OUTSTANDING_STABLE_DEBT = '41'; // 'User does not have outstanding stable rate debt on this reserve'\n  string public constant NO_OUTSTANDING_VARIABLE_DEBT = '42'; // 'User does not have outstanding variable rate debt on this reserve'\n  string public constant UNDERLYING_BALANCE_ZERO = '43'; // 'The underlying balance needs to be greater than 0'\n  string public constant INTEREST_RATE_REBALANCE_CONDITIONS_NOT_MET = '44'; // 'Interest rate rebalance conditions were not met'\n  string public constant HEALTH_FACTOR_NOT_BELOW_THRESHOLD = '45'; // 'Health factor is not below the threshold'\n  string public constant COLLATERAL_CANNOT_BE_LIQUIDATED = '46'; // 'The collateral chosen cannot be liquidated'\n  string public constant SPECIFIED_CURRENCY_NOT_BORROWED_BY_USER = '47'; // 'User did not borrow the specified currency'\n  string public constant INCONSISTENT_FLASHLOAN_PARAMS = '49'; // 'Inconsistent flashloan parameters'\n  string public constant BORROW_CAP_EXCEEDED = '50'; // 'Borrow cap is exceeded'\n  string public constant SUPPLY_CAP_EXCEEDED = '51'; // 'Supply cap is exceeded'\n  string public constant UNBACKED_MINT_CAP_EXCEEDED = '52'; // 'Unbacked mint cap is exceeded'\n  string public constant DEBT_CEILING_EXCEEDED = '53'; // 'Debt ceiling is exceeded'\n  string public constant UNDERLYING_CLAIMABLE_RIGHTS_NOT_ZERO = '54'; // 'Claimable rights over underlying not zero (aToken supply or accruedToTreasury)'\n  string public constant STABLE_DEBT_NOT_ZERO = '55'; // 'Stable debt supply is not zero'\n  string public constant VARIABLE_DEBT_SUPPLY_NOT_ZERO = '56'; // 'Variable debt supply is not zero'\n  string public constant LTV_VALIDATION_FAILED = '57'; // 'Ltv validation failed'\n  string public constant INCONSISTENT_EMODE_CATEGORY = '58'; // 'Inconsistent eMode category'\n  string public constant PRICE_ORACLE_SENTINEL_CHECK_FAILED = '59'; // 'Price oracle sentinel validation failed'\n  string public constant ASSET_NOT_BORROWABLE_IN_ISOLATION = '60'; // 'Asset is not borrowable in isolation mode'\n  string public constant RESERVE_ALREADY_INITIALIZED = '61'; // 'Reserve has already been initialized'\n  string public constant USER_IN_ISOLATION_MODE_OR_LTV_ZERO = '62'; // 'User is in isolation mode or ltv is zero'\n  string public constant INVALID_LTV = '63'; // 'Invalid ltv parameter for the reserve'\n  string public constant INVALID_LIQ_THRESHOLD = '64'; // 'Invalid liquidity threshold parameter for the reserve'\n  string public constant INVALID_LIQ_BONUS = '65'; // 'Invalid liquidity bonus parameter for the reserve'\n  string public constant INVALID_DECIMALS = '66'; // 'Invalid decimals parameter of the underlying asset of the reserve'\n  string public constant INVALID_RESERVE_FACTOR = '67'; // 'Invalid reserve factor parameter for the reserve'\n  string public constant INVALID_BORROW_CAP = '68'; // 'Invalid borrow cap for the reserve'\n  string public constant INVALID_SUPPLY_CAP = '69'; // 'Invalid supply cap for the reserve'\n  string public constant INVALID_LIQUIDATION_PROTOCOL_FEE = '70'; // 'Invalid liquidation protocol fee for the reserve'\n  string public constant INVALID_EMODE_CATEGORY = '71'; // 'Invalid eMode category for the reserve'\n  string public constant INVALID_UNBACKED_MINT_CAP = '72'; // 'Invalid unbacked mint cap for the reserve'\n  string public constant INVALID_DEBT_CEILING = '73'; // 'Invalid debt ceiling for the reserve\n  string public constant INVALID_RESERVE_INDEX = '74'; // 'Invalid reserve index'\n  string public constant ACL_ADMIN_CANNOT_BE_ZERO = '75'; // 'ACL admin cannot be set to the zero address'\n  string public constant INCONSISTENT_PARAMS_LENGTH = '76'; // 'Array parameters that should be equal length are not'\n  string public constant ZERO_ADDRESS_NOT_VALID = '77'; // 'Zero address not valid'\n  string public constant INVALID_EXPIRATION = '78'; // 'Invalid expiration'\n  string public constant INVALID_SIGNATURE = '79'; // 'Invalid signature'\n  string public constant OPERATION_NOT_SUPPORTED = '80'; // 'Operation not supported'\n  string public constant DEBT_CEILING_NOT_ZERO = '81'; // 'Debt ceiling is not zero'\n  string public constant ASSET_NOT_LISTED = '82'; // 'Asset is not listed'\n  string public constant INVALID_OPTIMAL_USAGE_RATIO = '83'; // 'Invalid optimal usage ratio'\n  string public constant INVALID_OPTIMAL_STABLE_TO_TOTAL_DEBT_RATIO = '84'; // 'Invalid optimal stable to total debt ratio'\n  string public constant UNDERLYING_CANNOT_BE_RESCUED = '85'; // 'The underlying asset cannot be rescued'\n  string public constant ADDRESSES_PROVIDER_ALREADY_ADDED = '86'; // 'Reserve has already been added to reserve list'\n  string public constant POOL_ADDRESSES_DO_NOT_MATCH = '87'; // 'The token implementation pool address and the pool address provided by the initializing pool do not match'\n  string public constant STABLE_BORROWING_ENABLED = '88'; // 'Stable borrowing is enabled'\n  string public constant SILOED_BORROWING_VIOLATION = '89'; // 'User is trying to borrow multiple assets including a siloed one'\n  string public constant RESERVE_DEBT_NOT_ZERO = '90'; // the total debt of the reserve needs to be 0\n  string public constant FLASHLOAN_DISABLED = '91'; // FlashLoaning for this asset is disabled\n}\n"},"contracts/dependencies/aave-v3/IPool.sol":{"content":"// SPDX-License-Identifier: AGPL-3.0\npragma solidity ^0.8.0;\n\nimport {IPoolAddressesProvider} from './IPoolAddressesProvider.sol';\nimport {DataTypes} from './DataTypes.sol';\n\n/**\n * @title IPool\n * @author Aave\n * @notice Defines the basic interface for an Aave Pool.\n **/\ninterface IPool {\n  /**\n   * @dev Emitted on mintUnbacked()\n   * @param reserve The address of the underlying asset of the reserve\n   * @param user The address initiating the supply\n   * @param onBehalfOf The beneficiary of the supplied assets, receiving the aTokens\n   * @param amount The amount of supplied assets\n   * @param referralCode The referral code used\n   **/\n  event MintUnbacked(\n    address indexed reserve,\n    address user,\n    address indexed onBehalfOf,\n    uint256 amount,\n    uint16 indexed referralCode\n  );\n\n  /**\n   * @dev Emitted on backUnbacked()\n   * @param reserve The address of the underlying asset of the reserve\n   * @param backer The address paying for the backing\n   * @param amount The amount added as backing\n   * @param fee The amount paid in fees\n   **/\n  event BackUnbacked(address indexed reserve, address indexed backer, uint256 amount, uint256 fee);\n\n  /**\n   * @dev Emitted on supply()\n   * @param reserve The address of the underlying asset of the reserve\n   * @param user The address initiating the supply\n   * @param onBehalfOf The beneficiary of the supply, receiving the aTokens\n   * @param amount The amount supplied\n   * @param referralCode The referral code used\n   **/\n  event Supply(\n    address indexed reserve,\n    address user,\n    address indexed onBehalfOf,\n    uint256 amount,\n    uint16 indexed referralCode\n  );\n\n  /**\n   * @dev Emitted on withdraw()\n   * @param reserve The address of the underlying asset being withdrawn\n   * @param user The address initiating the withdrawal, owner of aTokens\n   * @param to The address that will receive the underlying\n   * @param amount The amount to be withdrawn\n   **/\n  event Withdraw(address indexed reserve, address indexed user, address indexed to, uint256 amount);\n\n  /**\n   * @dev Emitted on borrow() and flashLoan() when debt needs to be opened\n   * @param reserve The address of the underlying asset being borrowed\n   * @param user The address of the user initiating the borrow(), receiving the funds on borrow() or just\n   * initiator of the transaction on flashLoan()\n   * @param onBehalfOf The address that will be getting the debt\n   * @param amount The amount borrowed out\n   * @param interestRateMode The rate mode: 1 for Stable, 2 for Variable\n   * @param borrowRate The numeric rate at which the user has borrowed, expressed in ray\n   * @param referralCode The referral code used\n   **/\n  event Borrow(\n    address indexed reserve,\n    address user,\n    address indexed onBehalfOf,\n    uint256 amount,\n    DataTypes.InterestRateMode interestRateMode,\n    uint256 borrowRate,\n    uint16 indexed referralCode\n  );\n\n  /**\n   * @dev Emitted on repay()\n   * @param reserve The address of the underlying asset of the reserve\n   * @param user The beneficiary of the repayment, getting his debt reduced\n   * @param repayer The address of the user initiating the repay(), providing the funds\n   * @param amount The amount repaid\n   * @param useATokens True if the repayment is done using aTokens, `false` if done with underlying asset directly\n   **/\n  event Repay(\n    address indexed reserve,\n    address indexed user,\n    address indexed repayer,\n    uint256 amount,\n    bool useATokens\n  );\n\n  /**\n   * @dev Emitted on swapBorrowRateMode()\n   * @param reserve The address of the underlying asset of the reserve\n   * @param user The address of the user swapping his rate mode\n   * @param interestRateMode The current interest rate mode of the position being swapped: 1 for Stable, 2 for Variable\n   **/\n  event SwapBorrowRateMode(\n    address indexed reserve,\n    address indexed user,\n    DataTypes.InterestRateMode interestRateMode\n  );\n\n  /**\n   * @dev Emitted on borrow(), repay() and liquidationCall() when using isolated assets\n   * @param asset The address of the underlying asset of the reserve\n   * @param totalDebt The total isolation mode debt for the reserve\n   */\n  event IsolationModeTotalDebtUpdated(address indexed asset, uint256 totalDebt);\n\n  /**\n   * @dev Emitted when the user selects a certain asset category for eMode\n   * @param user The address of the user\n   * @param categoryId The category id\n   **/\n  event UserEModeSet(address indexed user, uint8 categoryId);\n\n  /**\n   * @dev Emitted on setUserUseReserveAsCollateral()\n   * @param reserve The address of the underlying asset of the reserve\n   * @param user The address of the user enabling the usage as collateral\n   **/\n  event ReserveUsedAsCollateralEnabled(address indexed reserve, address indexed user);\n\n  /**\n   * @dev Emitted on setUserUseReserveAsCollateral()\n   * @param reserve The address of the underlying asset of the reserve\n   * @param user The address of the user enabling the usage as collateral\n   **/\n  event ReserveUsedAsCollateralDisabled(address indexed reserve, address indexed user);\n\n  /**\n   * @dev Emitted on rebalanceStableBorrowRate()\n   * @param reserve The address of the underlying asset of the reserve\n   * @param user The address of the user for which the rebalance has been executed\n   **/\n  event RebalanceStableBorrowRate(address indexed reserve, address indexed user);\n\n  /**\n   * @dev Emitted on flashLoan()\n   * @param target The address of the flash loan receiver contract\n   * @param initiator The address initiating the flash loan\n   * @param asset The address of the asset being flash borrowed\n   * @param amount The amount flash borrowed\n   * @param interestRateMode The flashloan mode: 0 for regular flashloan, 1 for Stable debt, 2 for Variable debt\n   * @param premium The fee flash borrowed\n   * @param referralCode The referral code used\n   **/\n  event FlashLoan(\n    address indexed target,\n    address initiator,\n    address indexed asset,\n    uint256 amount,\n    DataTypes.InterestRateMode interestRateMode,\n    uint256 premium,\n    uint16 indexed referralCode\n  );\n\n  /**\n   * @dev Emitted when a borrower is liquidated.\n   * @param collateralAsset The address of the underlying asset used as collateral, to receive as result of the liquidation\n   * @param debtAsset The address of the underlying borrowed asset to be repaid with the liquidation\n   * @param user The address of the borrower getting liquidated\n   * @param debtToCover The debt amount of borrowed `asset` the liquidator wants to cover\n   * @param liquidatedCollateralAmount The amount of collateral received by the liquidator\n   * @param liquidator The address of the liquidator\n   * @param receiveAToken True if the liquidators wants to receive the collateral aTokens, `false` if he wants\n   * to receive the underlying collateral asset directly\n   **/\n  event LiquidationCall(\n    address indexed collateralAsset,\n    address indexed debtAsset,\n    address indexed user,\n    uint256 debtToCover,\n    uint256 liquidatedCollateralAmount,\n    address liquidator,\n    bool receiveAToken\n  );\n\n  /**\n   * @dev Emitted when the state of a reserve is updated.\n   * @param reserve The address of the underlying asset of the reserve\n   * @param liquidityRate The next liquidity rate\n   * @param stableBorrowRate The next stable borrow rate\n   * @param variableBorrowRate The next variable borrow rate\n   * @param liquidityIndex The next liquidity index\n   * @param variableBorrowIndex The next variable borrow index\n   **/\n  event ReserveDataUpdated(\n    address indexed reserve,\n    uint256 liquidityRate,\n    uint256 stableBorrowRate,\n    uint256 variableBorrowRate,\n    uint256 liquidityIndex,\n    uint256 variableBorrowIndex\n  );\n\n  /**\n   * @dev Emitted when the protocol treasury receives minted aTokens from the accrued interest.\n   * @param reserve The address of the reserve\n   * @param amountMinted The amount minted to the treasury\n   **/\n  event MintedToTreasury(address indexed reserve, uint256 amountMinted);\n\n  /**\n   * @dev Mints an `amount` of aTokens to the `onBehalfOf`\n   * @param asset The address of the underlying asset to mint\n   * @param amount The amount to mint\n   * @param onBehalfOf The address that will receive the aTokens\n   * @param referralCode Code used to register the integrator originating the operation, for potential rewards.\n   *   0 if the action is executed directly by the user, without any middle-man\n   **/\n  function mintUnbacked(\n    address asset,\n    uint256 amount,\n    address onBehalfOf,\n    uint16 referralCode\n  ) external;\n\n  /**\n   * @dev Back the current unbacked underlying with `amount` and pay `fee`.\n   * @param asset The address of the underlying asset to back\n   * @param amount The amount to back\n   * @param fee The amount paid in fees\n   **/\n  function backUnbacked(\n    address asset,\n    uint256 amount,\n    uint256 fee\n  ) external;\n\n  /**\n   * @notice Supplies an `amount` of underlying asset into the reserve, receiving in return overlying aTokens.\n   * - E.g. User supplies 100 USDC and gets in return 100 aUSDC\n   * @param asset The address of the underlying asset to supply\n   * @param amount The amount to be supplied\n   * @param onBehalfOf The address that will receive the aTokens, same as msg.sender if the user\n   *   wants to receive them on his own wallet, or a different address if the beneficiary of aTokens\n   *   is a different wallet\n   * @param referralCode Code used to register the integrator originating the operation, for potential rewards.\n   *   0 if the action is executed directly by the user, without any middle-man\n   **/\n  function supply(\n    address asset,\n    uint256 amount,\n    address onBehalfOf,\n    uint16 referralCode\n  ) external;\n\n  /**\n   * @notice Supply with transfer approval of asset to be supplied done via permit function\n   * see: https://eips.ethereum.org/EIPS/eip-2612 and https://eips.ethereum.org/EIPS/eip-713\n   * @param asset The address of the underlying asset to supply\n   * @param amount The amount to be supplied\n   * @param onBehalfOf The address that will receive the aTokens, same as msg.sender if the user\n   *   wants to receive them on his own wallet, or a different address if the beneficiary of aTokens\n   *   is a different wallet\n   * @param deadline The deadline timestamp that the permit is valid\n   * @param referralCode Code used to register the integrator originating the operation, for potential rewards.\n   *   0 if the action is executed directly by the user, without any middle-man\n   * @param permitV The V parameter of ERC712 permit sig\n   * @param permitR The R parameter of ERC712 permit sig\n   * @param permitS The S parameter of ERC712 permit sig\n   **/\n  function supplyWithPermit(\n    address asset,\n    uint256 amount,\n    address onBehalfOf,\n    uint16 referralCode,\n    uint256 deadline,\n    uint8 permitV,\n    bytes32 permitR,\n    bytes32 permitS\n  ) external;\n\n  /**\n   * @notice Withdraws an `amount` of underlying asset from the reserve, burning the equivalent aTokens owned\n   * E.g. User has 100 aUSDC, calls withdraw() and receives 100 USDC, burning the 100 aUSDC\n   * @param asset The address of the underlying asset to withdraw\n   * @param amount The underlying amount to be withdrawn\n   *   - Send the value type(uint256).max in order to withdraw the whole aToken balance\n   * @param to The address that will receive the underlying, same as msg.sender if the user\n   *   wants to receive it on his own wallet, or a different address if the beneficiary is a\n   *   different wallet\n   * @return The final amount withdrawn\n   **/\n  function withdraw(\n    address asset,\n    uint256 amount,\n    address to\n  ) external returns (uint256);\n\n  /**\n   * @notice Allows users to borrow a specific `amount` of the reserve underlying asset, provided that the borrower\n   * already supplied enough collateral, or he was given enough allowance by a credit delegator on the\n   * corresponding debt token (StableDebtToken or VariableDebtToken)\n   * - E.g. User borrows 100 USDC passing as `onBehalfOf` his own address, receiving the 100 USDC in his wallet\n   *   and 100 stable/variable debt tokens, depending on the `interestRateMode`\n   * @param asset The address of the underlying asset to borrow\n   * @param amount The amount to be borrowed\n   * @param interestRateMode The interest rate mode at which the user wants to borrow: 1 for Stable, 2 for Variable\n   * @param referralCode The code used to register the integrator originating the operation, for potential rewards.\n   *   0 if the action is executed directly by the user, without any middle-man\n   * @param onBehalfOf The address of the user who will receive the debt. Should be the address of the borrower itself\n   * calling the function if he wants to borrow against his own collateral, or the address of the credit delegator\n   * if he has been given credit delegation allowance\n   **/\n  function borrow(\n    address asset,\n    uint256 amount,\n    uint256 interestRateMode,\n    uint16 referralCode,\n    address onBehalfOf\n  ) external;\n\n  /**\n   * @notice Repays a borrowed `amount` on a specific reserve, burning the equivalent debt tokens owned\n   * - E.g. User repays 100 USDC, burning 100 variable/stable debt tokens of the `onBehalfOf` address\n   * @param asset The address of the borrowed underlying asset previously borrowed\n   * @param amount The amount to repay\n   * - Send the value type(uint256).max in order to repay the whole debt for `asset` on the specific `debtMode`\n   * @param interestRateMode The interest rate mode at of the debt the user wants to repay: 1 for Stable, 2 for Variable\n   * @param onBehalfOf The address of the user who will get his debt reduced/removed. Should be the address of the\n   * user calling the function if he wants to reduce/remove his own debt, or the address of any other\n   * other borrower whose debt should be removed\n   * @return The final amount repaid\n   **/\n  function repay(\n    address asset,\n    uint256 amount,\n    uint256 interestRateMode,\n    address onBehalfOf\n  ) external returns (uint256);\n\n  /**\n   * @notice Repay with transfer approval of asset to be repaid done via permit function\n   * see: https://eips.ethereum.org/EIPS/eip-2612 and https://eips.ethereum.org/EIPS/eip-713\n   * @param asset The address of the borrowed underlying asset previously borrowed\n   * @param amount The amount to repay\n   * - Send the value type(uint256).max in order to repay the whole debt for `asset` on the specific `debtMode`\n   * @param interestRateMode The interest rate mode at of the debt the user wants to repay: 1 for Stable, 2 for Variable\n   * @param onBehalfOf Address of the user who will get his debt reduced/removed. Should be the address of the\n   * user calling the function if he wants to reduce/remove his own debt, or the address of any other\n   * other borrower whose debt should be removed\n   * @param deadline The deadline timestamp that the permit is valid\n   * @param permitV The V parameter of ERC712 permit sig\n   * @param permitR The R parameter of ERC712 permit sig\n   * @param permitS The S parameter of ERC712 permit sig\n   * @return The final amount repaid\n   **/\n  function repayWithPermit(\n    address asset,\n    uint256 amount,\n    uint256 interestRateMode,\n    address onBehalfOf,\n    uint256 deadline,\n    uint8 permitV,\n    bytes32 permitR,\n    bytes32 permitS\n  ) external returns (uint256);\n\n  /**\n   * @notice Repays a borrowed `amount` on a specific reserve using the reserve aTokens, burning the\n   * equivalent debt tokens\n   * - E.g. User repays 100 USDC using 100 aUSDC, burning 100 variable/stable debt tokens\n   * @dev  Passing uint256.max as amount will clean up any residual aToken dust balance, if the user aToken\n   * balance is not enough to cover the whole debt\n   * @param asset The address of the borrowed underlying asset previously borrowed\n   * @param amount The amount to repay\n   * - Send the value type(uint256).max in order to repay the whole debt for `asset` on the specific `debtMode`\n   * @param interestRateMode The interest rate mode at of the debt the user wants to repay: 1 for Stable, 2 for Variable\n   * @return The final amount repaid\n   **/\n  function repayWithATokens(\n    address asset,\n    uint256 amount,\n    uint256 interestRateMode\n  ) external returns (uint256);\n\n  /**\n   * @notice Allows a borrower to swap his debt between stable and variable mode, or vice versa\n   * @param asset The address of the underlying asset borrowed\n   * @param interestRateMode The current interest rate mode of the position being swapped: 1 for Stable, 2 for Variable\n   **/\n  function swapBorrowRateMode(address asset, uint256 interestRateMode) external;\n\n  /**\n   * @notice Rebalances the stable interest rate of a user to the current stable rate defined on the reserve.\n   * - Users can be rebalanced if the following conditions are satisfied:\n   *     1. Usage ratio is above 95%\n   *     2. the current supply APY is below REBALANCE_UP_THRESHOLD * maxVariableBorrowRate, which means that too\n   *        much has been borrowed at a stable rate and suppliers are not earning enough\n   * @param asset The address of the underlying asset borrowed\n   * @param user The address of the user to be rebalanced\n   **/\n  function rebalanceStableBorrowRate(address asset, address user) external;\n\n  /**\n   * @notice Allows suppliers to enable/disable a specific supplied asset as collateral\n   * @param asset The address of the underlying asset supplied\n   * @param useAsCollateral True if the user wants to use the supply as collateral, false otherwise\n   **/\n  function setUserUseReserveAsCollateral(address asset, bool useAsCollateral) external;\n\n  /**\n   * @notice Function to liquidate a non-healthy position collateral-wise, with Health Factor below 1\n   * - The caller (liquidator) covers `debtToCover` amount of debt of the user getting liquidated, and receives\n   *   a proportionally amount of the `collateralAsset` plus a bonus to cover market risk\n   * @param collateralAsset The address of the underlying asset used as collateral, to receive as result of the liquidation\n   * @param debtAsset The address of the underlying borrowed asset to be repaid with the liquidation\n   * @param user The address of the borrower getting liquidated\n   * @param debtToCover The debt amount of borrowed `asset` the liquidator wants to cover\n   * @param receiveAToken True if the liquidators wants to receive the collateral aTokens, `false` if he wants\n   * to receive the underlying collateral asset directly\n   **/\n  function liquidationCall(\n    address collateralAsset,\n    address debtAsset,\n    address user,\n    uint256 debtToCover,\n    bool receiveAToken\n  ) external;\n\n  /**\n   * @notice Allows smartcontracts to access the liquidity of the pool within one transaction,\n   * as long as the amount taken plus a fee is returned.\n   * @dev IMPORTANT There are security concerns for developers of flashloan receiver contracts that must be kept\n   * into consideration. For further details please visit https://developers.aave.com\n   * @param receiverAddress The address of the contract receiving the funds, implementing IFlashLoanReceiver interface\n   * @param assets The addresses of the assets being flash-borrowed\n   * @param amounts The amounts of the assets being flash-borrowed\n   * @param interestRateModes Types of the debt to open if the flash loan is not returned:\n   *   0 -> Don't open any debt, just revert if funds can't be transferred from the receiver\n   *   1 -> Open debt at stable rate for the value of the amount flash-borrowed to the `onBehalfOf` address\n   *   2 -> Open debt at variable rate for the value of the amount flash-borrowed to the `onBehalfOf` address\n   * @param onBehalfOf The address  that will receive the debt in the case of using on `modes` 1 or 2\n   * @param params Variadic packed params to pass to the receiver as extra information\n   * @param referralCode The code used to register the integrator originating the operation, for potential rewards.\n   *   0 if the action is executed directly by the user, without any middle-man\n   **/\n  function flashLoan(\n    address receiverAddress,\n    address[] calldata assets,\n    uint256[] calldata amounts,\n    uint256[] calldata interestRateModes,\n    address onBehalfOf,\n    bytes calldata params,\n    uint16 referralCode\n  ) external;\n\n  /**\n   * @notice Allows smartcontracts to access the liquidity of the pool within one transaction,\n   * as long as the amount taken plus a fee is returned.\n   * @dev IMPORTANT There are security concerns for developers of flashloan receiver contracts that must be kept\n   * into consideration. For further details please visit https://developers.aave.com\n   * @param receiverAddress The address of the contract receiving the funds, implementing IFlashLoanSimpleReceiver interface\n   * @param asset The address of the asset being flash-borrowed\n   * @param amount The amount of the asset being flash-borrowed\n   * @param params Variadic packed params to pass to the receiver as extra information\n   * @param referralCode The code used to register the integrator originating the operation, for potential rewards.\n   *   0 if the action is executed directly by the user, without any middle-man\n   **/\n  function flashLoanSimple(\n    address receiverAddress,\n    address asset,\n    uint256 amount,\n    bytes calldata params,\n    uint16 referralCode\n  ) external;\n\n  /**\n   * @notice Returns the user account data across all the reserves\n   * @param user The address of the user\n   * @return totalCollateralBase The total collateral of the user in the base currency used by the price feed\n   * @return totalDebtBase The total debt of the user in the base currency used by the price feed\n   * @return availableBorrowsBase The borrowing power left of the user in the base currency used by the price feed\n   * @return currentLiquidationThreshold The liquidation threshold of the user\n   * @return ltv The loan to value of The user\n   * @return healthFactor The current health factor of the user\n   **/\n  function getUserAccountData(address user)\n    external\n    view\n    returns (\n      uint256 totalCollateralBase,\n      uint256 totalDebtBase,\n      uint256 availableBorrowsBase,\n      uint256 currentLiquidationThreshold,\n      uint256 ltv,\n      uint256 healthFactor\n    );\n\n  /**\n   * @notice Initializes a reserve, activating it, assigning an aToken and debt tokens and an\n   * interest rate strategy\n   * @dev Only callable by the PoolConfigurator contract\n   * @param asset The address of the underlying asset of the reserve\n   * @param aTokenAddress The address of the aToken that will be assigned to the reserve\n   * @param stableDebtAddress The address of the StableDebtToken that will be assigned to the reserve\n   * @param variableDebtAddress The address of the VariableDebtToken that will be assigned to the reserve\n   * @param interestRateStrategyAddress The address of the interest rate strategy contract\n   **/\n  function initReserve(\n    address asset,\n    address aTokenAddress,\n    address stableDebtAddress,\n    address variableDebtAddress,\n    address interestRateStrategyAddress\n  ) external;\n\n  /**\n   * @notice Drop a reserve\n   * @dev Only callable by the PoolConfigurator contract\n   * @param asset The address of the underlying asset of the reserve\n   **/\n  function dropReserve(address asset) external;\n\n  /**\n   * @notice Updates the address of the interest rate strategy contract\n   * @dev Only callable by the PoolConfigurator contract\n   * @param asset The address of the underlying asset of the reserve\n   * @param rateStrategyAddress The address of the interest rate strategy contract\n   **/\n  function setReserveInterestRateStrategyAddress(address asset, address rateStrategyAddress)\n    external;\n\n  /**\n   * @notice Sets the configuration bitmap of the reserve as a whole\n   * @dev Only callable by the PoolConfigurator contract\n   * @param asset The address of the underlying asset of the reserve\n   * @param configuration The new configuration bitmap\n   **/\n  function setConfiguration(address asset, DataTypes.ReserveConfigurationMap calldata configuration)\n    external;\n\n  /**\n   * @notice Returns the configuration of the reserve\n   * @param asset The address of the underlying asset of the reserve\n   * @return The configuration of the reserve\n   **/\n  function getConfiguration(address asset)\n    external\n    view\n    returns (DataTypes.ReserveConfigurationMap memory);\n\n  /**\n   * @notice Returns the configuration of the user across all the reserves\n   * @param user The user address\n   * @return The configuration of the user\n   **/\n  function getUserConfiguration(address user)\n    external\n    view\n    returns (DataTypes.UserConfigurationMap memory);\n\n  /**\n   * @notice Returns the normalized income normalized income of the reserve\n   * @param asset The address of the underlying asset of the reserve\n   * @return The reserve's normalized income\n   */\n  function getReserveNormalizedIncome(address asset) external view returns (uint256);\n\n  /**\n   * @notice Returns the normalized variable debt per unit of asset\n   * @param asset The address of the underlying asset of the reserve\n   * @return The reserve normalized variable debt\n   */\n  function getReserveNormalizedVariableDebt(address asset) external view returns (uint256);\n\n  /**\n   * @notice Returns the state and configuration of the reserve\n   * @param asset The address of the underlying asset of the reserve\n   * @return The state and configuration data of the reserve\n   **/\n  function getReserveData(address asset) external view returns (DataTypes.ReserveData memory);\n\n  /**\n   * @notice Validates and finalizes an aToken transfer\n   * @dev Only callable by the overlying aToken of the `asset`\n   * @param asset The address of the underlying asset of the aToken\n   * @param from The user from which the aTokens are transferred\n   * @param to The user receiving the aTokens\n   * @param amount The amount being transferred/withdrawn\n   * @param balanceFromBefore The aToken balance of the `from` user before the transfer\n   * @param balanceToBefore The aToken balance of the `to` user before the transfer\n   */\n  function finalizeTransfer(\n    address asset,\n    address from,\n    address to,\n    uint256 amount,\n    uint256 balanceFromBefore,\n    uint256 balanceToBefore\n  ) external;\n\n  /**\n   * @notice Returns the list of the underlying assets of all the initialized reserves\n   * @dev It does not include dropped reserves\n   * @return The addresses of the underlying assets of the initialized reserves\n   **/\n  function getReservesList() external view returns (address[] memory);\n\n  /**\n   * @notice Returns the address of the underlying asset of a reserve by the reserve id as stored in the DataTypes.ReserveData struct\n   * @param id The id of the reserve as stored in the DataTypes.ReserveData struct\n   * @return The address of the reserve associated with id\n   **/\n  function getReserveAddressById(uint16 id) external view returns (address);\n\n  /**\n   * @notice Returns the PoolAddressesProvider connected to this contract\n   * @return The address of the PoolAddressesProvider\n   **/\n  function ADDRESSES_PROVIDER() external view returns (IPoolAddressesProvider);\n\n  /**\n   * @notice Updates the protocol fee on the bridging\n   * @param bridgeProtocolFee The part of the premium sent to the protocol treasury\n   */\n  function updateBridgeProtocolFee(uint256 bridgeProtocolFee) external;\n\n  /**\n   * @notice Updates flash loan premiums. Flash loan premium consists of two parts:\n   * - A part is sent to aToken holders as extra, one time accumulated interest\n   * - A part is collected by the protocol treasury\n   * @dev The total premium is calculated on the total borrowed amount\n   * @dev The premium to protocol is calculated on the total premium, being a percentage of `flashLoanPremiumTotal`\n   * @dev Only callable by the PoolConfigurator contract\n   * @param flashLoanPremiumTotal The total premium, expressed in bps\n   * @param flashLoanPremiumToProtocol The part of the premium sent to the protocol treasury, expressed in bps\n   */\n  function updateFlashloanPremiums(\n    uint128 flashLoanPremiumTotal,\n    uint128 flashLoanPremiumToProtocol\n  ) external;\n\n  /**\n   * @notice Configures a new category for the eMode.\n   * @dev In eMode, the protocol allows very high borrowing power to borrow assets of the same category.\n   * The category 0 is reserved as it's the default for volatile assets\n   * @param id The id of the category\n   * @param config The configuration of the category\n   */\n  function configureEModeCategory(uint8 id, DataTypes.EModeCategory memory config) external;\n\n  /**\n   * @notice Returns the data of an eMode category\n   * @param id The id of the category\n   * @return The configuration data of the category\n   */\n  function getEModeCategoryData(uint8 id) external view returns (DataTypes.EModeCategory memory);\n\n  /**\n   * @notice Allows a user to use the protocol in eMode\n   * @param categoryId The id of the category\n   */\n  function setUserEMode(uint8 categoryId) external;\n\n  /**\n   * @notice Returns the eMode the user is using\n   * @param user The address of the user\n   * @return The eMode id\n   */\n  function getUserEMode(address user) external view returns (uint256);\n\n  /**\n   * @notice Resets the isolation mode total debt of the given asset to zero\n   * @dev It requires the given asset has zero debt ceiling\n   * @param asset The address of the underlying asset to reset the isolationModeTotalDebt\n   */\n  function resetIsolationModeTotalDebt(address asset) external;\n\n  /**\n   * @notice Returns the percentage of available liquidity that can be borrowed at once at stable rate\n   * @return The percentage of available liquidity to borrow, expressed in bps\n   */\n  function MAX_STABLE_RATE_BORROW_SIZE_PERCENT() external view returns (uint256);\n\n  /**\n   * @notice Returns the total fee on flash loans\n   * @return The total fee on flashloans\n   */\n  function FLASHLOAN_PREMIUM_TOTAL() external view returns (uint128);\n\n  /**\n   * @notice Returns the part of the bridge fees sent to protocol\n   * @return The bridge fee sent to the protocol treasury\n   */\n  function BRIDGE_PROTOCOL_FEE() external view returns (uint256);\n\n  /**\n   * @notice Returns the part of the flashloan fees sent to protocol\n   * @return The flashloan fee sent to the protocol treasury\n   */\n  function FLASHLOAN_PREMIUM_TO_PROTOCOL() external view returns (uint128);\n\n  /**\n   * @notice Returns the maximum number of reserves supported to be listed in this Pool\n   * @return The maximum number of reserves supported\n   */\n  function MAX_NUMBER_RESERVES() external view returns (uint16);\n\n  /**\n   * @notice Mints the assets accrued through the reserve factor to the treasury in the form of aTokens\n   * @param assets The list of reserves for which the minting needs to be executed\n   **/\n  function mintToTreasury(address[] calldata assets) external;\n\n  /**\n   * @notice Rescue and transfer tokens locked in this contract\n   * @param token The address of the token\n   * @param to The address of the recipient\n   * @param amount The amount of token to transfer\n   */\n  function rescueTokens(\n    address token,\n    address to,\n    uint256 amount\n  ) external;\n\n  /**\n   * @notice Supplies an `amount` of underlying asset into the reserve, receiving in return overlying aTokens.\n   * - E.g. User supplies 100 USDC and gets in return 100 aUSDC\n   * @dev Deprecated: Use the `supply` function instead\n   * @param asset The address of the underlying asset to supply\n   * @param amount The amount to be supplied\n   * @param onBehalfOf The address that will receive the aTokens, same as msg.sender if the user\n   *   wants to receive them on his own wallet, or a different address if the beneficiary of aTokens\n   *   is a different wallet\n   * @param referralCode Code used to register the integrator originating the operation, for potential rewards.\n   *   0 if the action is executed directly by the user, without any middle-man\n   **/\n  function deposit(\n    address asset,\n    uint256 amount,\n    address onBehalfOf,\n    uint16 referralCode\n  ) external;\n}\n"},"contracts/dependencies/aave-v3/IPoolAddressesProvider.sol":{"content":"// SPDX-License-Identifier: AGPL-3.0\npragma solidity ^0.8.0;\n\n/**\n * @title IPoolAddressesProvider\n * @author Aave\n * @notice Defines the basic interface for a Pool Addresses Provider.\n **/\ninterface IPoolAddressesProvider {\n  /**\n   * @dev Emitted when the market identifier is updated.\n   * @param oldMarketId The old id of the market\n   * @param newMarketId The new id of the market\n   */\n  event MarketIdSet(string indexed oldMarketId, string indexed newMarketId);\n\n  /**\n   * @dev Emitted when the pool is updated.\n   * @param oldAddress The old address of the Pool\n   * @param newAddress The new address of the Pool\n   */\n  event PoolUpdated(address indexed oldAddress, address indexed newAddress);\n\n  /**\n   * @dev Emitted when the pool configurator is updated.\n   * @param oldAddress The old address of the PoolConfigurator\n   * @param newAddress The new address of the PoolConfigurator\n   */\n  event PoolConfiguratorUpdated(address indexed oldAddress, address indexed newAddress);\n\n  /**\n   * @dev Emitted when the price oracle is updated.\n   * @param oldAddress The old address of the PriceOracle\n   * @param newAddress The new address of the PriceOracle\n   */\n  event PriceOracleUpdated(address indexed oldAddress, address indexed newAddress);\n\n  /**\n   * @dev Emitted when the ACL manager is updated.\n   * @param oldAddress The old address of the ACLManager\n   * @param newAddress The new address of the ACLManager\n   */\n  event ACLManagerUpdated(address indexed oldAddress, address indexed newAddress);\n\n  /**\n   * @dev Emitted when the ACL admin is updated.\n   * @param oldAddress The old address of the ACLAdmin\n   * @param newAddress The new address of the ACLAdmin\n   */\n  event ACLAdminUpdated(address indexed oldAddress, address indexed newAddress);\n\n  /**\n   * @dev Emitted when the price oracle sentinel is updated.\n   * @param oldAddress The old address of the PriceOracleSentinel\n   * @param newAddress The new address of the PriceOracleSentinel\n   */\n  event PriceOracleSentinelUpdated(address indexed oldAddress, address indexed newAddress);\n\n  /**\n   * @dev Emitted when the pool data provider is updated.\n   * @param oldAddress The old address of the PoolDataProvider\n   * @param newAddress The new address of the PoolDataProvider\n   */\n  event PoolDataProviderUpdated(address indexed oldAddress, address indexed newAddress);\n\n  /**\n   * @dev Emitted when a new proxy is created.\n   * @param id The identifier of the proxy\n   * @param proxyAddress The address of the created proxy contract\n   * @param implementationAddress The address of the implementation contract\n   */\n  event ProxyCreated(\n    bytes32 indexed id,\n    address indexed proxyAddress,\n    address indexed implementationAddress\n  );\n\n  /**\n   * @dev Emitted when a new non-proxied contract address is registered.\n   * @param id The identifier of the contract\n   * @param oldAddress The address of the old contract\n   * @param newAddress The address of the new contract\n   */\n  event AddressSet(bytes32 indexed id, address indexed oldAddress, address indexed newAddress);\n\n  /**\n   * @dev Emitted when the implementation of the proxy registered with id is updated\n   * @param id The identifier of the contract\n   * @param proxyAddress The address of the proxy contract\n   * @param oldImplementationAddress The address of the old implementation contract\n   * @param newImplementationAddress The address of the new implementation contract\n   */\n  event AddressSetAsProxy(\n    bytes32 indexed id,\n    address indexed proxyAddress,\n    address oldImplementationAddress,\n    address indexed newImplementationAddress\n  );\n\n  /**\n   * @notice Returns the id of the Aave market to which this contract points to.\n   * @return The market id\n   **/\n  function getMarketId() external view returns (string memory);\n\n  /**\n   * @notice Associates an id with a specific PoolAddressesProvider.\n   * @dev This can be used to create an onchain registry of PoolAddressesProviders to\n   * identify and validate multiple Aave markets.\n   * @param newMarketId The market id\n   */\n  function setMarketId(string calldata newMarketId) external;\n\n  /**\n   * @notice Returns an address by its identifier.\n   * @dev The returned address might be an EOA or a contract, potentially proxied\n   * @dev It returns ZERO if there is no registered address with the given id\n   * @param id The id\n   * @return The address of the registered for the specified id\n   */\n  function getAddress(bytes32 id) external view returns (address);\n\n  /**\n   * @notice General function to update the implementation of a proxy registered with\n   * certain `id`. If there is no proxy registered, it will instantiate one and\n   * set as implementation the `newImplementationAddress`.\n   * @dev IMPORTANT Use this function carefully, only for ids that don't have an explicit\n   * setter function, in order to avoid unexpected consequences\n   * @param id The id\n   * @param newImplementationAddress The address of the new implementation\n   */\n  function setAddressAsProxy(bytes32 id, address newImplementationAddress) external;\n\n  /**\n   * @notice Sets an address for an id replacing the address saved in the addresses map.\n   * @dev IMPORTANT Use this function carefully, as it will do a hard replacement\n   * @param id The id\n   * @param newAddress The address to set\n   */\n  function setAddress(bytes32 id, address newAddress) external;\n\n  /**\n   * @notice Returns the address of the Pool proxy.\n   * @return The Pool proxy address\n   **/\n  function getPool() external view returns (address);\n\n  /**\n   * @notice Updates the implementation of the Pool, or creates a proxy\n   * setting the new `pool` implementation when the function is called for the first time.\n   * @param newPoolImpl The new Pool implementation\n   **/\n  function setPoolImpl(address newPoolImpl) external;\n\n  /**\n   * @notice Returns the address of the PoolConfigurator proxy.\n   * @return The PoolConfigurator proxy address\n   **/\n  function getPoolConfigurator() external view returns (address);\n\n  /**\n   * @notice Updates the implementation of the PoolConfigurator, or creates a proxy\n   * setting the new `PoolConfigurator` implementation when the function is called for the first time.\n   * @param newPoolConfiguratorImpl The new PoolConfigurator implementation\n   **/\n  function setPoolConfiguratorImpl(address newPoolConfiguratorImpl) external;\n\n  /**\n   * @notice Returns the address of the price oracle.\n   * @return The address of the PriceOracle\n   */\n  function getPriceOracle() external view returns (address);\n\n  /**\n   * @notice Updates the address of the price oracle.\n   * @param newPriceOracle The address of the new PriceOracle\n   */\n  function setPriceOracle(address newPriceOracle) external;\n\n  /**\n   * @notice Returns the address of the ACL manager.\n   * @return The address of the ACLManager\n   */\n  function getACLManager() external view returns (address);\n\n  /**\n   * @notice Updates the address of the ACL manager.\n   * @param newAclManager The address of the new ACLManager\n   **/\n  function setACLManager(address newAclManager) external;\n\n  /**\n   * @notice Returns the address of the ACL admin.\n   * @return The address of the ACL admin\n   */\n  function getACLAdmin() external view returns (address);\n\n  /**\n   * @notice Updates the address of the ACL admin.\n   * @param newAclAdmin The address of the new ACL admin\n   */\n  function setACLAdmin(address newAclAdmin) external;\n\n  /**\n   * @notice Returns the address of the price oracle sentinel.\n   * @return The address of the PriceOracleSentinel\n   */\n  function getPriceOracleSentinel() external view returns (address);\n\n  /**\n   * @notice Updates the address of the price oracle sentinel.\n   * @param newPriceOracleSentinel The address of the new PriceOracleSentinel\n   **/\n  function setPriceOracleSentinel(address newPriceOracleSentinel) external;\n\n  /**\n   * @notice Returns the address of the data provider.\n   * @return The address of the DataProvider\n   */\n  function getPoolDataProvider() external view returns (address);\n\n  /**\n   * @notice Updates the address of the data provider.\n   * @param newDataProvider The address of the new DataProvider\n   **/\n  function setPoolDataProvider(address newDataProvider) external;\n}\n"},"contracts/dependencies/aave-v3/ReserveConfiguration.sol":{"content":"// SPDX-License-Identifier: BUSL-1.1\npragma solidity ^0.8.0;\n\nimport {Errors} from './Errors.sol';\nimport {DataTypes} from './DataTypes.sol';\n\n/**\n * @title ReserveConfiguration library\n * @author Aave\n * @notice Implements the bitmap logic to handle the reserve configuration\n */\nlibrary ReserveConfiguration {\n  uint256 internal constant LTV_MASK =                       0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF0000; // prettier-ignore\n  uint256 internal constant LIQUIDATION_THRESHOLD_MASK =     0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF0000FFFF; // prettier-ignore\n  uint256 internal constant LIQUIDATION_BONUS_MASK =         0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF0000FFFFFFFF; // prettier-ignore\n  uint256 internal constant DECIMALS_MASK =                  0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF00FFFFFFFFFFFF; // prettier-ignore\n  uint256 internal constant ACTIVE_MASK =                    0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFEFFFFFFFFFFFFFF; // prettier-ignore\n  uint256 internal constant FROZEN_MASK =                    0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFDFFFFFFFFFFFFFF; // prettier-ignore\n  uint256 internal constant BORROWING_MASK =                 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFBFFFFFFFFFFFFFF; // prettier-ignore\n  uint256 internal constant STABLE_BORROWING_MASK =          0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF7FFFFFFFFFFFFFF; // prettier-ignore\n  uint256 internal constant PAUSED_MASK =                    0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFEFFFFFFFFFFFFFFF; // prettier-ignore\n  uint256 internal constant BORROWABLE_IN_ISOLATION_MASK =   0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFDFFFFFFFFFFFFFFF; // prettier-ignore\n  uint256 internal constant SILOED_BORROWING_MASK =          0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFBFFFFFFFFFFFFFFF; // prettier-ignore\n  uint256 internal constant FLASHLOAN_ENABLED_MASK =         0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF7FFFFFFFFFFFFFFF; // prettier-ignore\n  uint256 internal constant RESERVE_FACTOR_MASK =            0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF0000FFFFFFFFFFFFFFFF; // prettier-ignore\n  uint256 internal constant BORROW_CAP_MASK =                0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF000000000FFFFFFFFFFFFFFFFFFFF; // prettier-ignore\n  uint256 internal constant SUPPLY_CAP_MASK =                0xFFFFFFFFFFFFFFFFFFFFFFFFFF000000000FFFFFFFFFFFFFFFFFFFFFFFFFFFFF; // prettier-ignore\n  uint256 internal constant LIQUIDATION_PROTOCOL_FEE_MASK =  0xFFFFFFFFFFFFFFFFFFFFFF0000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF; // prettier-ignore\n  uint256 internal constant EMODE_CATEGORY_MASK =            0xFFFFFFFFFFFFFFFFFFFF00FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF; // prettier-ignore\n  uint256 internal constant UNBACKED_MINT_CAP_MASK =         0xFFFFFFFFFFF000000000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF; // prettier-ignore\n  uint256 internal constant DEBT_CEILING_MASK =              0xF0000000000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF; // prettier-ignore\n\n  /// @dev For the LTV, the start bit is 0 (up to 15), hence no bitshifting is needed\n  uint256 internal constant LIQUIDATION_THRESHOLD_START_BIT_POSITION = 16;\n  uint256 internal constant LIQUIDATION_BONUS_START_BIT_POSITION = 32;\n  uint256 internal constant RESERVE_DECIMALS_START_BIT_POSITION = 48;\n  uint256 internal constant IS_ACTIVE_START_BIT_POSITION = 56;\n  uint256 internal constant IS_FROZEN_START_BIT_POSITION = 57;\n  uint256 internal constant BORROWING_ENABLED_START_BIT_POSITION = 58;\n  uint256 internal constant STABLE_BORROWING_ENABLED_START_BIT_POSITION = 59;\n  uint256 internal constant IS_PAUSED_START_BIT_POSITION = 60;\n  uint256 internal constant BORROWABLE_IN_ISOLATION_START_BIT_POSITION = 61;\n  uint256 internal constant SILOED_BORROWING_START_BIT_POSITION = 62;\n  uint256 internal constant FLASHLOAN_ENABLED_START_BIT_POSITION = 63;\n  uint256 internal constant RESERVE_FACTOR_START_BIT_POSITION = 64;\n  uint256 internal constant BORROW_CAP_START_BIT_POSITION = 80;\n  uint256 internal constant SUPPLY_CAP_START_BIT_POSITION = 116;\n  uint256 internal constant LIQUIDATION_PROTOCOL_FEE_START_BIT_POSITION = 152;\n  uint256 internal constant EMODE_CATEGORY_START_BIT_POSITION = 168;\n  uint256 internal constant UNBACKED_MINT_CAP_START_BIT_POSITION = 176;\n  uint256 internal constant DEBT_CEILING_START_BIT_POSITION = 212;\n\n  uint256 internal constant MAX_VALID_LTV = 65535;\n  uint256 internal constant MAX_VALID_LIQUIDATION_THRESHOLD = 65535;\n  uint256 internal constant MAX_VALID_LIQUIDATION_BONUS = 65535;\n  uint256 internal constant MAX_VALID_DECIMALS = 255;\n  uint256 internal constant MAX_VALID_RESERVE_FACTOR = 65535;\n  uint256 internal constant MAX_VALID_BORROW_CAP = 68719476735;\n  uint256 internal constant MAX_VALID_SUPPLY_CAP = 68719476735;\n  uint256 internal constant MAX_VALID_LIQUIDATION_PROTOCOL_FEE = 65535;\n  uint256 internal constant MAX_VALID_EMODE_CATEGORY = 255;\n  uint256 internal constant MAX_VALID_UNBACKED_MINT_CAP = 68719476735;\n  uint256 internal constant MAX_VALID_DEBT_CEILING = 1099511627775;\n\n  uint256 public constant DEBT_CEILING_DECIMALS = 2;\n  uint16 public constant MAX_RESERVES_COUNT = 128;\n\n  /**\n   * @notice Sets the Loan to Value of the reserve\n   * @param self The reserve configuration\n   * @param ltv The new ltv\n   */\n  function setLtv(DataTypes.ReserveConfigurationMap memory self, uint256 ltv) internal pure {\n    require(ltv <= MAX_VALID_LTV, Errors.INVALID_LTV);\n\n    self.data = (self.data & LTV_MASK) | ltv;\n  }\n\n  /**\n   * @notice Gets the Loan to Value of the reserve\n   * @param self The reserve configuration\n   * @return The loan to value\n   */\n  function getLtv(DataTypes.ReserveConfigurationMap memory self) internal pure returns (uint256) {\n    return self.data & ~LTV_MASK;\n  }\n\n  /**\n   * @notice Sets the liquidation threshold of the reserve\n   * @param self The reserve configuration\n   * @param threshold The new liquidation threshold\n   */\n  function setLiquidationThreshold(\n    DataTypes.ReserveConfigurationMap memory self,\n    uint256 threshold\n  ) internal pure {\n    require(threshold <= MAX_VALID_LIQUIDATION_THRESHOLD, Errors.INVALID_LIQ_THRESHOLD);\n\n    self.data =\n      (self.data & LIQUIDATION_THRESHOLD_MASK) |\n      (threshold << LIQUIDATION_THRESHOLD_START_BIT_POSITION);\n  }\n\n  /**\n   * @notice Gets the liquidation threshold of the reserve\n   * @param self The reserve configuration\n   * @return The liquidation threshold\n   */\n  function getLiquidationThreshold(\n    DataTypes.ReserveConfigurationMap memory self\n  ) internal pure returns (uint256) {\n    return (self.data & ~LIQUIDATION_THRESHOLD_MASK) >> LIQUIDATION_THRESHOLD_START_BIT_POSITION;\n  }\n\n  /**\n   * @notice Sets the liquidation bonus of the reserve\n   * @param self The reserve configuration\n   * @param bonus The new liquidation bonus\n   */\n  function setLiquidationBonus(\n    DataTypes.ReserveConfigurationMap memory self,\n    uint256 bonus\n  ) internal pure {\n    require(bonus <= MAX_VALID_LIQUIDATION_BONUS, Errors.INVALID_LIQ_BONUS);\n\n    self.data =\n      (self.data & LIQUIDATION_BONUS_MASK) |\n      (bonus << LIQUIDATION_BONUS_START_BIT_POSITION);\n  }\n\n  /**\n   * @notice Gets the liquidation bonus of the reserve\n   * @param self The reserve configuration\n   * @return The liquidation bonus\n   */\n  function getLiquidationBonus(\n    DataTypes.ReserveConfigurationMap memory self\n  ) internal pure returns (uint256) {\n    return (self.data & ~LIQUIDATION_BONUS_MASK) >> LIQUIDATION_BONUS_START_BIT_POSITION;\n  }\n\n  /**\n   * @notice Sets the decimals of the underlying asset of the reserve\n   * @param self The reserve configuration\n   * @param decimals The decimals\n   */\n  function setDecimals(\n    DataTypes.ReserveConfigurationMap memory self,\n    uint256 decimals\n  ) internal pure {\n    require(decimals <= MAX_VALID_DECIMALS, Errors.INVALID_DECIMALS);\n\n    self.data = (self.data & DECIMALS_MASK) | (decimals << RESERVE_DECIMALS_START_BIT_POSITION);\n  }\n\n  /**\n   * @notice Gets the decimals of the underlying asset of the reserve\n   * @param self The reserve configuration\n   * @return The decimals of the asset\n   */\n  function getDecimals(\n    DataTypes.ReserveConfigurationMap memory self\n  ) internal pure returns (uint256) {\n    return (self.data & ~DECIMALS_MASK) >> RESERVE_DECIMALS_START_BIT_POSITION;\n  }\n\n  /**\n   * @notice Sets the active state of the reserve\n   * @param self The reserve configuration\n   * @param active The active state\n   */\n  function setActive(DataTypes.ReserveConfigurationMap memory self, bool active) internal pure {\n    self.data =\n      (self.data & ACTIVE_MASK) |\n      (uint256(active ? 1 : 0) << IS_ACTIVE_START_BIT_POSITION);\n  }\n\n  /**\n   * @notice Gets the active state of the reserve\n   * @param self The reserve configuration\n   * @return The active state\n   */\n  function getActive(DataTypes.ReserveConfigurationMap memory self) internal pure returns (bool) {\n    return (self.data & ~ACTIVE_MASK) != 0;\n  }\n\n  /**\n   * @notice Sets the frozen state of the reserve\n   * @param self The reserve configuration\n   * @param frozen The frozen state\n   */\n  function setFrozen(DataTypes.ReserveConfigurationMap memory self, bool frozen) internal pure {\n    self.data =\n      (self.data & FROZEN_MASK) |\n      (uint256(frozen ? 1 : 0) << IS_FROZEN_START_BIT_POSITION);\n  }\n\n  /**\n   * @notice Gets the frozen state of the reserve\n   * @param self The reserve configuration\n   * @return The frozen state\n   */\n  function getFrozen(DataTypes.ReserveConfigurationMap memory self) internal pure returns (bool) {\n    return (self.data & ~FROZEN_MASK) != 0;\n  }\n\n  /**\n   * @notice Sets the paused state of the reserve\n   * @param self The reserve configuration\n   * @param paused The paused state\n   */\n  function setPaused(DataTypes.ReserveConfigurationMap memory self, bool paused) internal pure {\n    self.data =\n      (self.data & PAUSED_MASK) |\n      (uint256(paused ? 1 : 0) << IS_PAUSED_START_BIT_POSITION);\n  }\n\n  /**\n   * @notice Gets the paused state of the reserve\n   * @param self The reserve configuration\n   * @return The paused state\n   */\n  function getPaused(DataTypes.ReserveConfigurationMap memory self) internal pure returns (bool) {\n    return (self.data & ~PAUSED_MASK) != 0;\n  }\n\n  /**\n   * @notice Sets the borrowable in isolation flag for the reserve.\n   * @dev When this flag is set to true, the asset will be borrowable against isolated collaterals and the borrowed\n   * amount will be accumulated in the isolated collateral's total debt exposure.\n   * @dev Only assets of the same family (eg USD stablecoins) should be borrowable in isolation mode to keep\n   * consistency in the debt ceiling calculations.\n   * @param self The reserve configuration\n   * @param borrowable True if the asset is borrowable\n   */\n  function setBorrowableInIsolation(\n    DataTypes.ReserveConfigurationMap memory self,\n    bool borrowable\n  ) internal pure {\n    self.data =\n      (self.data & BORROWABLE_IN_ISOLATION_MASK) |\n      (uint256(borrowable ? 1 : 0) << BORROWABLE_IN_ISOLATION_START_BIT_POSITION);\n  }\n\n  /**\n   * @notice Gets the borrowable in isolation flag for the reserve.\n   * @dev If the returned flag is true, the asset is borrowable against isolated collateral. Assets borrowed with\n   * isolated collateral is accounted for in the isolated collateral's total debt exposure.\n   * @dev Only assets of the same family (eg USD stablecoins) should be borrowable in isolation mode to keep\n   * consistency in the debt ceiling calculations.\n   * @param self The reserve configuration\n   * @return The borrowable in isolation flag\n   */\n  function getBorrowableInIsolation(\n    DataTypes.ReserveConfigurationMap memory self\n  ) internal pure returns (bool) {\n    return (self.data & ~BORROWABLE_IN_ISOLATION_MASK) != 0;\n  }\n\n  /**\n   * @notice Sets the siloed borrowing flag for the reserve.\n   * @dev When this flag is set to true, users borrowing this asset will not be allowed to borrow any other asset.\n   * @param self The reserve configuration\n   * @param siloed True if the asset is siloed\n   */\n  function setSiloedBorrowing(\n    DataTypes.ReserveConfigurationMap memory self,\n    bool siloed\n  ) internal pure {\n    self.data =\n      (self.data & SILOED_BORROWING_MASK) |\n      (uint256(siloed ? 1 : 0) << SILOED_BORROWING_START_BIT_POSITION);\n  }\n\n  /**\n   * @notice Gets the siloed borrowing flag for the reserve.\n   * @dev When this flag is set to true, users borrowing this asset will not be allowed to borrow any other asset.\n   * @param self The reserve configuration\n   * @return The siloed borrowing flag\n   */\n  function getSiloedBorrowing(\n    DataTypes.ReserveConfigurationMap memory self\n  ) internal pure returns (bool) {\n    return (self.data & ~SILOED_BORROWING_MASK) != 0;\n  }\n\n  /**\n   * @notice Enables or disables borrowing on the reserve\n   * @param self The reserve configuration\n   * @param enabled True if the borrowing needs to be enabled, false otherwise\n   */\n  function setBorrowingEnabled(\n    DataTypes.ReserveConfigurationMap memory self,\n    bool enabled\n  ) internal pure {\n    self.data =\n      (self.data & BORROWING_MASK) |\n      (uint256(enabled ? 1 : 0) << BORROWING_ENABLED_START_BIT_POSITION);\n  }\n\n  /**\n   * @notice Gets the borrowing state of the reserve\n   * @param self The reserve configuration\n   * @return The borrowing state\n   */\n  function getBorrowingEnabled(\n    DataTypes.ReserveConfigurationMap memory self\n  ) internal pure returns (bool) {\n    return (self.data & ~BORROWING_MASK) != 0;\n  }\n\n  /**\n   * @notice Enables or disables stable rate borrowing on the reserve\n   * @param self The reserve configuration\n   * @param enabled True if the stable rate borrowing needs to be enabled, false otherwise\n   */\n  function setStableRateBorrowingEnabled(\n    DataTypes.ReserveConfigurationMap memory self,\n    bool enabled\n  ) internal pure {\n    self.data =\n      (self.data & STABLE_BORROWING_MASK) |\n      (uint256(enabled ? 1 : 0) << STABLE_BORROWING_ENABLED_START_BIT_POSITION);\n  }\n\n  /**\n   * @notice Gets the stable rate borrowing state of the reserve\n   * @param self The reserve configuration\n   * @return The stable rate borrowing state\n   */\n  function getStableRateBorrowingEnabled(\n    DataTypes.ReserveConfigurationMap memory self\n  ) internal pure returns (bool) {\n    return (self.data & ~STABLE_BORROWING_MASK) != 0;\n  }\n\n  /**\n   * @notice Sets the reserve factor of the reserve\n   * @param self The reserve configuration\n   * @param reserveFactor The reserve factor\n   */\n  function setReserveFactor(\n    DataTypes.ReserveConfigurationMap memory self,\n    uint256 reserveFactor\n  ) internal pure {\n    require(reserveFactor <= MAX_VALID_RESERVE_FACTOR, Errors.INVALID_RESERVE_FACTOR);\n\n    self.data =\n      (self.data & RESERVE_FACTOR_MASK) |\n      (reserveFactor << RESERVE_FACTOR_START_BIT_POSITION);\n  }\n\n  /**\n   * @notice Gets the reserve factor of the reserve\n   * @param self The reserve configuration\n   * @return The reserve factor\n   */\n  function getReserveFactor(\n    DataTypes.ReserveConfigurationMap memory self\n  ) internal pure returns (uint256) {\n    return (self.data & ~RESERVE_FACTOR_MASK) >> RESERVE_FACTOR_START_BIT_POSITION;\n  }\n\n  /**\n   * @notice Sets the borrow cap of the reserve\n   * @param self The reserve configuration\n   * @param borrowCap The borrow cap\n   */\n  function setBorrowCap(\n    DataTypes.ReserveConfigurationMap memory self,\n    uint256 borrowCap\n  ) internal pure {\n    require(borrowCap <= MAX_VALID_BORROW_CAP, Errors.INVALID_BORROW_CAP);\n\n    self.data = (self.data & BORROW_CAP_MASK) | (borrowCap << BORROW_CAP_START_BIT_POSITION);\n  }\n\n  /**\n   * @notice Gets the borrow cap of the reserve\n   * @param self The reserve configuration\n   * @return The borrow cap\n   */\n  function getBorrowCap(\n    DataTypes.ReserveConfigurationMap memory self\n  ) internal pure returns (uint256) {\n    return (self.data & ~BORROW_CAP_MASK) >> BORROW_CAP_START_BIT_POSITION;\n  }\n\n  /**\n   * @notice Sets the supply cap of the reserve\n   * @param self The reserve configuration\n   * @param supplyCap The supply cap\n   */\n  function setSupplyCap(\n    DataTypes.ReserveConfigurationMap memory self,\n    uint256 supplyCap\n  ) internal pure {\n    require(supplyCap <= MAX_VALID_SUPPLY_CAP, Errors.INVALID_SUPPLY_CAP);\n\n    self.data = (self.data & SUPPLY_CAP_MASK) | (supplyCap << SUPPLY_CAP_START_BIT_POSITION);\n  }\n\n  /**\n   * @notice Gets the supply cap of the reserve\n   * @param self The reserve configuration\n   * @return The supply cap\n   */\n  function getSupplyCap(\n    DataTypes.ReserveConfigurationMap memory self\n  ) internal pure returns (uint256) {\n    return (self.data & ~SUPPLY_CAP_MASK) >> SUPPLY_CAP_START_BIT_POSITION;\n  }\n\n  /**\n   * @notice Sets the debt ceiling in isolation mode for the asset\n   * @param self The reserve configuration\n   * @param ceiling The maximum debt ceiling for the asset\n   */\n  function setDebtCeiling(\n    DataTypes.ReserveConfigurationMap memory self,\n    uint256 ceiling\n  ) internal pure {\n    require(ceiling <= MAX_VALID_DEBT_CEILING, Errors.INVALID_DEBT_CEILING);\n\n    self.data = (self.data & DEBT_CEILING_MASK) | (ceiling << DEBT_CEILING_START_BIT_POSITION);\n  }\n\n  /**\n   * @notice Gets the debt ceiling for the asset if the asset is in isolation mode\n   * @param self The reserve configuration\n   * @return The debt ceiling (0 = isolation mode disabled)\n   */\n  function getDebtCeiling(\n    DataTypes.ReserveConfigurationMap memory self\n  ) internal pure returns (uint256) {\n    return (self.data & ~DEBT_CEILING_MASK) >> DEBT_CEILING_START_BIT_POSITION;\n  }\n\n  /**\n   * @notice Sets the liquidation protocol fee of the reserve\n   * @param self The reserve configuration\n   * @param liquidationProtocolFee The liquidation protocol fee\n   */\n  function setLiquidationProtocolFee(\n    DataTypes.ReserveConfigurationMap memory self,\n    uint256 liquidationProtocolFee\n  ) internal pure {\n    require(\n      liquidationProtocolFee <= MAX_VALID_LIQUIDATION_PROTOCOL_FEE,\n      Errors.INVALID_LIQUIDATION_PROTOCOL_FEE\n    );\n\n    self.data =\n      (self.data & LIQUIDATION_PROTOCOL_FEE_MASK) |\n      (liquidationProtocolFee << LIQUIDATION_PROTOCOL_FEE_START_BIT_POSITION);\n  }\n\n  /**\n   * @dev Gets the liquidation protocol fee\n   * @param self The reserve configuration\n   * @return The liquidation protocol fee\n   */\n  function getLiquidationProtocolFee(\n    DataTypes.ReserveConfigurationMap memory self\n  ) internal pure returns (uint256) {\n    return\n      (self.data & ~LIQUIDATION_PROTOCOL_FEE_MASK) >> LIQUIDATION_PROTOCOL_FEE_START_BIT_POSITION;\n  }\n\n  /**\n   * @notice Sets the unbacked mint cap of the reserve\n   * @param self The reserve configuration\n   * @param unbackedMintCap The unbacked mint cap\n   */\n  function setUnbackedMintCap(\n    DataTypes.ReserveConfigurationMap memory self,\n    uint256 unbackedMintCap\n  ) internal pure {\n    require(unbackedMintCap <= MAX_VALID_UNBACKED_MINT_CAP, Errors.INVALID_UNBACKED_MINT_CAP);\n\n    self.data =\n      (self.data & UNBACKED_MINT_CAP_MASK) |\n      (unbackedMintCap << UNBACKED_MINT_CAP_START_BIT_POSITION);\n  }\n\n  /**\n   * @dev Gets the unbacked mint cap of the reserve\n   * @param self The reserve configuration\n   * @return The unbacked mint cap\n   */\n  function getUnbackedMintCap(\n    DataTypes.ReserveConfigurationMap memory self\n  ) internal pure returns (uint256) {\n    return (self.data & ~UNBACKED_MINT_CAP_MASK) >> UNBACKED_MINT_CAP_START_BIT_POSITION;\n  }\n\n  /**\n   * @notice Sets the eMode asset category\n   * @param self The reserve configuration\n   * @param category The asset category when the user selects the eMode\n   */\n  function setEModeCategory(\n    DataTypes.ReserveConfigurationMap memory self,\n    uint256 category\n  ) internal pure {\n    require(category <= MAX_VALID_EMODE_CATEGORY, Errors.INVALID_EMODE_CATEGORY);\n\n    self.data = (self.data & EMODE_CATEGORY_MASK) | (category << EMODE_CATEGORY_START_BIT_POSITION);\n  }\n\n  /**\n   * @dev Gets the eMode asset category\n   * @param self The reserve configuration\n   * @return The eMode category for the asset\n   */\n  function getEModeCategory(\n    DataTypes.ReserveConfigurationMap memory self\n  ) internal pure returns (uint256) {\n    return (self.data & ~EMODE_CATEGORY_MASK) >> EMODE_CATEGORY_START_BIT_POSITION;\n  }\n\n  /**\n   * @notice Sets the flashloanable flag for the reserve\n   * @param self The reserve configuration\n   * @param flashLoanEnabled True if the asset is flashloanable, false otherwise\n   */\n  function setFlashLoanEnabled(\n    DataTypes.ReserveConfigurationMap memory self,\n    bool flashLoanEnabled\n  ) internal pure {\n    self.data =\n      (self.data & FLASHLOAN_ENABLED_MASK) |\n      (uint256(flashLoanEnabled ? 1 : 0) << FLASHLOAN_ENABLED_START_BIT_POSITION);\n  }\n\n  /**\n   * @notice Gets the flashloanable flag for the reserve\n   * @param self The reserve configuration\n   * @return The flashloanable flag\n   */\n  function getFlashLoanEnabled(\n    DataTypes.ReserveConfigurationMap memory self\n  ) internal pure returns (bool) {\n    return (self.data & ~FLASHLOAN_ENABLED_MASK) != 0;\n  }\n\n  /**\n   * @notice Gets the configuration flags of the reserve\n   * @param self The reserve configuration\n   * @return The state flag representing active\n   * @return The state flag representing frozen\n   * @return The state flag representing borrowing enabled\n   * @return The state flag representing stableRateBorrowing enabled\n   * @return The state flag representing paused\n   */\n  function getFlags(\n    DataTypes.ReserveConfigurationMap memory self\n  ) internal pure returns (bool, bool, bool, bool, bool) {\n    uint256 dataLocal = self.data;\n\n    return (\n      (dataLocal & ~ACTIVE_MASK) != 0,\n      (dataLocal & ~FROZEN_MASK) != 0,\n      (dataLocal & ~BORROWING_MASK) != 0,\n      (dataLocal & ~STABLE_BORROWING_MASK) != 0,\n      (dataLocal & ~PAUSED_MASK) != 0\n    );\n  }\n\n  /**\n   * @notice Gets the configuration parameters of the reserve from storage\n   * @param self The reserve configuration\n   * @return The state param representing ltv\n   * @return The state param representing liquidation threshold\n   * @return The state param representing liquidation bonus\n   * @return The state param representing reserve decimals\n   * @return The state param representing reserve factor\n   * @return The state param representing eMode category\n   */\n  function getParams(\n    DataTypes.ReserveConfigurationMap memory self\n  ) internal pure returns (uint256, uint256, uint256, uint256, uint256, uint256) {\n    uint256 dataLocal = self.data;\n\n    return (\n      dataLocal & ~LTV_MASK,\n      (dataLocal & ~LIQUIDATION_THRESHOLD_MASK) >> LIQUIDATION_THRESHOLD_START_BIT_POSITION,\n      (dataLocal & ~LIQUIDATION_BONUS_MASK) >> LIQUIDATION_BONUS_START_BIT_POSITION,\n      (dataLocal & ~DECIMALS_MASK) >> RESERVE_DECIMALS_START_BIT_POSITION,\n      (dataLocal & ~RESERVE_FACTOR_MASK) >> RESERVE_FACTOR_START_BIT_POSITION,\n      (dataLocal & ~EMODE_CATEGORY_MASK) >> EMODE_CATEGORY_START_BIT_POSITION\n    );\n  }\n\n  /**\n   * @notice Gets the caps parameters of the reserve from storage\n   * @param self The reserve configuration\n   * @return The state param representing borrow cap\n   * @return The state param representing supply cap.\n   */\n  function getCaps(\n    DataTypes.ReserveConfigurationMap memory self\n  ) internal pure returns (uint256, uint256) {\n    uint256 dataLocal = self.data;\n\n    return (\n      (dataLocal & ~BORROW_CAP_MASK) >> BORROW_CAP_START_BIT_POSITION,\n      (dataLocal & ~SUPPLY_CAP_MASK) >> SUPPLY_CAP_START_BIT_POSITION\n    );\n  }\n}\n"},"contracts/dependencies/chainlink/AggregatorV3Interface.sol":{"content":"// SPDX-License-Identifier: MIT\npragma solidity ^0.8.0;\n\n// solhint-disable-next-line interface-starts-with-i\ninterface AggregatorV3Interface {\n  function decimals() external view returns (uint8);\n\n  function description() external view returns (string memory);\n\n  function version() external view returns (uint256);\n\n  function getRoundData(\n    uint80 _roundId\n  ) external view returns (uint80 roundId, int256 answer, uint256 startedAt, uint256 updatedAt, uint80 answeredInRound);\n\n  function latestRoundData()\n    external\n    view\n    returns (uint80 roundId, int256 answer, uint256 startedAt, uint256 updatedAt, uint80 answeredInRound);\n}\n"},"contracts/dependencies/compound-v3/ICometRewards.sol":{"content":"// SPDX-License-Identifier: Apache-2.0\npragma solidity ^0.8.0;\n\n/**\n * @dev Methods of the CometRewards interface we use\n *      Full interface in\n *  https://github.com/compound-finance/comet/blob/main/contracts/CometRewards.sol\n */\ninterface ICometRewards {\n      struct RewardOwed {\n        address token;\n        uint owed;\n    }\n\n  function rewardConfig(address cToken) external returns (address token, uint64 rescaleFactor, bool shouldUpscale);\n\n  function claim(address comet, address src, bool shouldAccrue) external;\n\n  function getRewardOwed(address comet, address account) external returns (RewardOwed memory);\n}\n"},"contracts/dependencies/compound-v3/ICompoundV3.sol":{"content":"// SPDX-License-Identifier: Apache-2.0\npragma solidity ^0.8.0;\n\nimport {IERC20Metadata} from \"@openzeppelin/contracts/token/ERC20/extensions/IERC20Metadata.sol\";\n\n/**\n * @dev Methods of the CompoundV3 interface we use\n *      Full interface in\n *  https://github.com/compound-finance/comet/blob/main/contracts/CometExtInterface.sol\n *  https://github.com/compound-finance/comet/blob/main/contracts/CometMainInterface.sol\n */\ninterface ICompoundV3 is IERC20Metadata {\n  /**\n   * @dev Executes the collector and withdrawer task\n   */\n  function baseToken() external view returns (address);\n\n  function isSupplyPaused() external view returns (bool);\n  function isWithdrawPaused() external view returns (bool);\n\n  function withdraw(address asset, uint256 amount) external;\n  function supply(address asset, uint256 amount) external;\n}\n"},"contracts/hardhat-dependency-compiler/@ensuro/access-managed-proxy/contracts/AccessManagedProxy.sol":{"content":"// SPDX-License-Identifier: UNLICENSED\npragma solidity >0.0.0;\nimport '@ensuro/access-managed-proxy/contracts/AccessManagedProxy.sol';\n"},"contracts/hardhat-dependency-compiler/@ensuro/swaplibrary/contracts/mocks/SwapRouterMock.sol":{"content":"// SPDX-License-Identifier: UNLICENSED\npragma solidity >0.0.0;\nimport '@ensuro/swaplibrary/contracts/mocks/SwapRouterMock.sol';\n"},"contracts/hardhat-dependency-compiler/@ensuro/utils/contracts/TestCurrency.sol":{"content":"// SPDX-License-Identifier: UNLICENSED\npragma solidity >0.0.0;\nimport '@ensuro/utils/contracts/TestCurrency.sol';\n"},"contracts/hardhat-dependency-compiler/@ensuro/utils/contracts/TestERC4626.sol":{"content":"// SPDX-License-Identifier: UNLICENSED\npragma solidity >0.0.0;\nimport '@ensuro/utils/contracts/TestERC4626.sol';\n"},"contracts/hardhat-dependency-compiler/@openzeppelin/contracts/access/manager/AccessManager.sol":{"content":"// SPDX-License-Identifier: UNLICENSED\npragma solidity >0.0.0;\nimport '@openzeppelin/contracts/access/manager/AccessManager.sol';\n"},"contracts/hardhat-dependency-compiler/@openzeppelin/contracts/proxy/ERC1967/ERC1967Proxy.sol":{"content":"// SPDX-License-Identifier: UNLICENSED\npragma solidity >0.0.0;\nimport '@openzeppelin/contracts/proxy/ERC1967/ERC1967Proxy.sol';\n"},"contracts/interfaces/IExposeStorage.sol":{"content":"// SPDX-License-Identifier: Apache-2.0\npragma solidity ^0.8.0;\n\n/**\n * @title IExposeStorage\n *\n * @dev Interface for calling contracts to expose the storage, used by views of the strategies if they need to access\n *      the strategy data.\n *\n * @custom:security-contact security@ensuro.co\n * @author Ensuro\n */\ninterface IExposeStorage {\n  /**\n   * @dev Returns the data stored on a given slot as bytes. The contract can revert if doesn't want to share a\n   *      specific slot.\n   *\n   * @param slot The slot where the data is stored.\n   * @return The data in the specified slot as bytes\n   */\n  function getBytesSlot(bytes32 slot) external view returns (bytes memory);\n}\n"},"contracts/interfaces/IInvestStrategy.sol":{"content":"// SPDX-License-Identifier: Apache-2.0\npragma solidity ^0.8.0;\n\n/**\n * @title IInvestStrategy\n *\n * @dev Interface that must follow investment strategies to be plugged into ERC4626 vaults. All the non-view methods\n *      MUST be called using delegatecall, thus executed in the context of the calling vault.\n *\n *      The strategy can use the storage of the calling contract, but ONLY in the storageSlot computed calling\n *      {InvestStrategyClient.makeStorageSlot}\n *\n *      The calling contract should implement IExposeStorage to give access to the storage to the strategy views\n *\n * @custom:security-contact security@ensuro.co\n * @author Ensuro\n */\ninterface IInvestStrategy {\n  /**\n   * @dev Called when the strategy is plugged into the vault. Initializes the strategy storage and can do validations\n   *\n   * @param initData Initialization data for the strategy. Must be parsed by the strategy, since the format is\n   *                 strategy specific\n   */\n  function connect(bytes memory initData) external;\n\n  /**\n   * @dev Called when the strategy is un-plugged from the vault. Should revert if there are still assets in the\n   *      strategy, unless force==true.\n   *\n   * @param force If true, disconnect should not fail if assets remain in the strategy. Otherwise, disconnect\n   *              MUST fail if totalAssets() != 0.\n   */\n  function disconnect(bool force) external;\n\n  /**\n   * @dev Deposits a given amount of assets into the strategy. It MUST revert if it can't deposit the specified amount.\n   *      It assumes the assets are already in the contract (owned by address(this)).\n   *\n   * @param assets The amount of assets to deposit. Should be <= maxDeposit.\n   */\n  function deposit(uint256 assets) external;\n\n  /**\n   * @dev Withdraws a given amount of assets from the strategy. It MUST revert if it can't withdraw the specified amount.\n   *      Leaves the withdrawn assets in the contract (owned by address(this)).\n   *\n   * @param assets The amount of assets to withdraw. Should be <= maxWithdraw.\n   */\n  function withdraw(uint256 assets) external;\n\n  /**\n   * @dev Receives an external call to execute a custom method of action in the strategy. Can be used for harvesting\n   *      rewards or other tasks. It's called with delegatecall from the calling vault. The calling vault SHOULD\n   *      do the access control validation, since the strategy normally won't do it.\n   *\n   * @param method An id of the method or action to call/execute. It's recommended to define an enum and convert the\n   *               the uint8 value into the enum.\n   * @param params Params for the method or action. Parsed by the strategy, it might differ from one or other method.\n   */\n  function forwardEntryPoint(uint8 method, bytes memory params) external returns (bytes memory);\n\n  /**\n   * VIEWS\n   *\n   * All the views receive as a parameter the contract (the vault) of which they should return the information,\n   * since they won't be called with delegatecall (because EVM doesn't have staticdelegatecall)\n   */\n\n  /**\n   * @dev The address of the underlying token used for accounting, depositing, and withdrawing. It must be the same\n   *      as `IERC4626(contract_).asset()` when dealing with vaults.\n   *\n   * @param contract_ The address of the vault contract that owns the assets.\n   */\n  function asset(address contract_) external view returns (address);\n\n  /**\n   * @dev Returns the number of assets under management of the investment strategy for a given contract.\n   *\n   * @param contract_ The address of the vault contract that owns the assets and where the strategy is plugged\n   */\n  function totalAssets(address contract_) external view returns (uint256 totalManagedAssets);\n\n  /**\n   * @dev Returns the max amount that can be deposited into the strategy.\n   *\n   * @param contract_ The address of the vault contract that owns the assets and where the strategy is plugged\n   */\n  function maxDeposit(address contract_) external view returns (uint256 maxAssets);\n\n  /**\n   * @dev Returns the max amount that can be withdrawn from the strategy.\n   *\n   * @param contract_ The address of the vault contract that owns the assets and where the strategy is plugged\n   */\n  function maxWithdraw(address contract_) external view returns (uint256 maxAssets);\n\n  /**\n   * @dev Returns the slot where the data of the strategy can be stored.\n   *       Typically it would return `InvestStrategyClient.makeStorageSlot(<strategyAddress>)`\n   */\n  function storageSlot() external view returns (bytes32);\n}\n"},"contracts/InvestStrategyClient.sol":{"content":"// SPDX-License-Identifier: Apache-2.0\npragma solidity ^0.8.0;\n\nimport {Address} from \"@openzeppelin/contracts/utils/Address.sol\";\nimport {IERC20Metadata} from \"@openzeppelin/contracts/token/ERC20/extensions/IERC20Metadata.sol\";\nimport {IInvestStrategy} from \"./interfaces/IInvestStrategy.sol\";\n\n/**\n * @title InvestStrategyClient\n *\n * @dev Library to simplify the interaction with IInvestStrategy objects. Abstract away the delegate calls and\n *      other gotchas of the communication with the strategies.\n *\n * @custom:security-contact security@ensuro.co\n * @author Ensuro\n */\nlibrary InvestStrategyClient {\n  using Address for address;\n\n  event StrategyChanged(IInvestStrategy oldStrategy, IInvestStrategy newStrategy);\n  event WithdrawFailed(bytes reason);\n  event DepositFailed(bytes reason);\n  event DisconnectFailed(bytes reason);\n\n  error InvalidStrategyAsset();\n\n  /**\n   * @dev Performs a connection with the given strategy. See {IInvestStrategy.connect}\n   *\n   * @param strategy Investment strategy to connect.\n   * @param initStrategyData Initialization data required for the strategy to connect.\n   */\n  function dcConnect(IInvestStrategy strategy, bytes memory initStrategyData) internal {\n    address(strategy).functionDelegateCall(abi.encodeCall(IInvestStrategy.connect, initStrategyData));\n  }\n\n  /**\n   * @dev Disconnects from the given strategy. This diconnection is done using a delegatecall to the strategy.\n   *\n   *      See {IInvestStrategy.disconnect}\n   *\n   * @param strategy Investment strategy to connect.\n   * @param force Bool value to force disconnection, when `true` it will just emit DisconnectFailed if it fails,\n   *              otherwise it will revert when it's false and fails.\n   */\n  function dcDisconnect(IInvestStrategy strategy, bool force) internal {\n    if (force) {\n      // solhint-disable-next-line avoid-low-level-calls\n      (bool success, bytes memory returndata) = address(strategy).delegatecall(\n        abi.encodeCall(IInvestStrategy.disconnect, true)\n      );\n      if (!success) emit DisconnectFailed(returndata);\n    } else {\n      address(strategy).functionDelegateCall(abi.encodeCall(IInvestStrategy.disconnect, false));\n    }\n  }\n\n  /**\n   * @dev Delegate call to withdraw assets from a given strategy.\n   *\n   *      See {IInvestStrategy.withdraw}\n   *\n   * @param strategy Strategy to withdraw assets from.\n   * @param assets Amount of assets to be withdrawn.\n   * @param ignoreError When true, the error will be caught and event WithdrawFailed will be emitted,\n                        otherwise it will revert when it's false and fails.\n   * @return Returns true if it was successful, otherwise returns false (only when ignoreError = true, otherwise reverts)\n   */\n  function dcWithdraw(IInvestStrategy strategy, uint256 assets, bool ignoreError) internal returns (bool) {\n    if (ignoreError) {\n      // solhint-disable-next-line avoid-low-level-calls\n      (bool success, bytes memory returndata) = address(strategy).delegatecall(\n        abi.encodeCall(IInvestStrategy.withdraw, assets)\n      );\n      if (!success) emit WithdrawFailed(returndata);\n      return success;\n    } else {\n      address(strategy).functionDelegateCall(abi.encodeCall(IInvestStrategy.withdraw, assets));\n      return true;\n    }\n  }\n\n  /**\n   * @dev Delegate call to deposit assets from a given strategy.\n   *\n   *      See {IInvestStrategy.deposit}\n   *\n   * @param strategy Strategy to deposit assets from.\n   * @param assets Amount of assets to be deposited.\n   * @param ignoreError When true, the error will be caught and event DepositFailed will be emitted,\n                        otherwise it will revert when it's false and fails.\n   * @return Returns true if it was successful, otherwise returns false (only when ignoreError = true, otherwise reverts)\n   */\n  function dcDeposit(IInvestStrategy strategy, uint256 assets, bool ignoreError) internal returns (bool) {\n    if (ignoreError) {\n      // solhint-disable-next-line avoid-low-level-calls\n      (bool success, bytes memory returndata) = address(strategy).delegatecall(\n        abi.encodeCall(IInvestStrategy.deposit, assets)\n      );\n      if (!success) emit DepositFailed(returndata);\n      return success;\n    } else {\n      address(strategy).functionDelegateCall(abi.encodeCall(IInvestStrategy.deposit, assets));\n      return true;\n    }\n  }\n\n  /**\n   * @dev Delegate call to forward a custom method of the given strategy.\n   *\n   *      See {IInvestStrategy.forwardEntryPoint}\n   *\n   * @param strategy Strategy to forward the custom method.\n   * @param method Method to be forwarded.\n   * @param extraData Additional params required by the method\n   * @return Returns the result of {IInvestStrategy.forwardEntryPoint}\n   */\n  function dcForward(IInvestStrategy strategy, uint8 method, bytes memory extraData) internal returns (bytes memory) {\n    return\n      address(strategy).functionDelegateCall(abi.encodeCall(IInvestStrategy.forwardEntryPoint, (method, extraData)));\n  }\n\n  /**\n   * @dev Checks the strategy asset() to ensure it is the same as the asset of the vault.\n   * @param strategy Strategy to be checked.\n   * @param asset Asset of the vault.\n   */\n  function checkAsset(IInvestStrategy strategy, address asset) internal view {\n    if (strategy.asset(address(this)) != asset) revert InvalidStrategyAsset();\n  }\n\n  /**\n   * @dev Replaces one strategy with another.\n   *\n   * @param oldStrategy The strategy to be replaced\n   * @param newStrategy The new strategy to connect\n   * @param newStrategyInitData The initialization data that will be send to the `newStrategy` on connect\n   * @param asset Asset of the vault (the newStrategy has to have the same asset)\n   * @param force When false, it reverts if withdrawal of assets or disconnection or deposit into the new strategy\n   *              fails. When true, it doesn't revert on any of those errors, it just emits events.\n   */\n  function strategyChange(\n    IInvestStrategy oldStrategy,\n    IInvestStrategy newStrategy,\n    bytes memory newStrategyInitData,\n    IERC20Metadata asset,\n    bool force\n  ) internal {\n    checkAsset(newStrategy, address(asset));\n    // I explicitly don't check newStrategy != _strategy because in some cases might be usefull to disconnect and\n    // connect a strategy\n    dcWithdraw(oldStrategy, oldStrategy.totalAssets(address(this)), force);\n    dcDisconnect(oldStrategy, force);\n    // We don't make _connect error proof, since the user can take care the new strategy doesn't fails on connect\n    dcConnect(newStrategy, newStrategyInitData);\n    // Deposits all the funds, in case something was gifted to the vault.\n    dcDeposit(newStrategy, asset.balanceOf(address(this)), force);\n    emit StrategyChanged(oldStrategy, newStrategy);\n  }\n\n  /**\n   * @dev Returns the slot where the specific data of the strategy is stored.\n   *\n   *      WARNING: This assumes the same strategy (deployed code in a given address) isn't used twice inside a given\n   *      contract. If that happens, the storage of one can collide with the other.\n   *      Also, be aware if you unplug and the re-plug a given strategy into a contract, you might be reading a state\n   *      that is not clean\n   */\n  function makeStorageSlot(IInvestStrategy strategy) internal pure returns (bytes32) {\n    return keccak256(abi.encode(\"co.ensuro.InvestStrategyClient\", strategy));\n  }\n\n  /**\n   * @dev Returns the total assets in the strategy given.\n   *\n   * See {IInvestStrategy.totalAssets()}\n   */\n  function totalAssets(IInvestStrategy strategy) internal view returns (uint256) {\n    return strategy.totalAssets(address(this));\n  }\n\n  /**\n   * @dev Returns the maximum amount of assets that can be deposited in the strategy.\n   *\n   *      See {IInvestStrategy.maxDeposit}\n   */\n  function maxDeposit(IInvestStrategy strategy) internal view returns (uint256) {\n    return strategy.maxDeposit(address(this));\n  }\n\n  /**\n   * @dev Returns the maximum amount of assets that can be withdrawn from the strategy.\n   *\n   *      See {IInvestStrategy.maxWithdraw}\n   */\n  function maxWithdraw(IInvestStrategy strategy) internal view returns (uint256) {\n    return strategy.maxWithdraw(address(this));\n  }\n}\n"},"contracts/mock/ChainlinkOracleMock.sol":{"content":"// SPDX-License-Identifier: Apache-2.0\npragma solidity ^0.8.0;\n\nimport {AggregatorV3Interface} from \"../dependencies/chainlink/AggregatorV3Interface.sol\";\n\ncontract ChainlinkOracleMock is AggregatorV3Interface {\n  uint8 public decimals;\n  string public description;\n  uint256 public version;\n\n  struct Round {\n    uint80 roundId;\n    int256 answer;\n    uint256 startedAt;\n    uint256 updatedAt;\n    uint80 answeredInRound;\n  }\n\n  mapping(uint80 => Round) internal _rounds;\n  uint80 public lastRoundId;\n\n  constructor(uint8 decimals_, string memory description_, uint256 version_) {\n    decimals = decimals_;\n    description = description_;\n    version = version_;\n  }\n\n  function addRound(\n    uint80 roundId,\n    int256 answer,\n    uint256 startedAt,\n    uint256 updatedAt,\n    uint80 answeredInRound\n  ) external {\n    _rounds[roundId] = Round(roundId, answer, startedAt, updatedAt, answeredInRound);\n    if (roundId > lastRoundId) lastRoundId = roundId;\n  }\n\n  function getRoundData(\n    uint80 _roundId\n  )\n    external\n    view\n    returns (uint80 roundId, int256 answer, uint256 startedAt, uint256 updatedAt, uint80 answeredInRound)\n  {\n    Round storage round = _rounds[_roundId];\n    return (round.roundId, round.answer, round.startedAt, round.updatedAt, round.answeredInRound);\n  }\n\n  function latestRoundData()\n    external\n    view\n    returns (uint80 roundId, int256 answer, uint256 startedAt, uint256 updatedAt, uint80 answeredInRound)\n  {\n    Round storage round = _rounds[lastRoundId];\n    return (round.roundId, round.answer, round.startedAt, round.updatedAt, round.answeredInRound);\n  }\n}\n"},"contracts/mock/DummyInvestStrategy.sol":{"content":"// SPDX-License-Identifier: Apache-2.0\npragma solidity ^0.8.0;\n\nimport {IERC20} from \"@openzeppelin/contracts/interfaces/IERC20.sol\";\nimport {IERC4626} from \"@openzeppelin/contracts/interfaces/IERC4626.sol\";\nimport {StorageSlot} from \"@openzeppelin/contracts/utils/StorageSlot.sol\";\nimport {IInvestStrategy} from \"../interfaces/IInvestStrategy.sol\";\nimport {IExposeStorage} from \"../interfaces/IExposeStorage.sol\";\nimport {InvestStrategyClient} from \"../InvestStrategyClient.sol\";\n\ncontract OtherAddress {\n  function transferTo(IERC20 asset_, address to, uint256 amount) external {\n    asset_.transfer(to, amount);\n  }\n}\n\ncontract DummyInvestStrategy is IInvestStrategy {\n  IERC20 internal immutable _asset;\n  address private immutable __self = address(this);\n  bytes32 public immutable storageSlot = InvestStrategyClient.makeStorageSlot(this);\n  address public immutable other;\n\n  error Fail(string where);\n  error NoExtraDataAllowed();\n\n  enum ForwardMethods {\n    setFail\n  }\n\n  struct DummyStorage {\n    bool failConnect;\n    bool failDisconnect;\n    bool failDeposit;\n    bool failWithdraw;\n  }\n\n  event Deposit(uint256 assets);\n  event Withdraw(uint256 assets);\n  event Disconnect(bool force);\n  event Connect(bytes initData);\n  event SetFail(DummyStorage fail);\n\n  constructor(IERC20 asset_) {\n    _asset = asset_;\n    other = address(new OtherAddress());\n  }\n\n  function connect(bytes memory initData) external override {\n    DummyStorage memory fail = abi.decode(initData, (DummyStorage));\n    if (abi.encode(fail).length != initData.length) revert NoExtraDataAllowed();\n    StorageSlot.getBytesSlot(storageSlot).value = initData;\n    if (fail.failConnect) revert Fail(\"connect\");\n    emit Connect(initData);\n  }\n\n  function _getStorage() internal view returns (DummyStorage memory) {\n    return abi.decode(StorageSlot.getBytesSlot(storageSlot).value, (DummyStorage));\n  }\n\n  function _getStorageForViews(address contract_) internal view returns (DummyStorage memory) {\n    return abi.decode(IExposeStorage(contract_).getBytesSlot(storageSlot), (DummyStorage));\n  }\n\n  function disconnect(bool force) external override {\n    if (_getStorage().failDisconnect) revert Fail(\"disconnect\");\n    emit Disconnect(force);\n  }\n\n  function maxWithdraw(address contract_) public view virtual override returns (uint256) {\n    if (_getStorageForViews(contract_).failWithdraw) return 0;\n    return _asset.balanceOf(other);\n  }\n\n  function maxDeposit(address contract_) public view virtual override returns (uint256) {\n    if (_getStorageForViews(contract_).failDeposit) return 0;\n    return type(uint256).max;\n  }\n\n  function asset(address) public view virtual override returns (address) {\n    return address(_asset);\n  }\n\n  function totalAssets(address) public view virtual override returns (uint256 assets) {\n    return _asset.balanceOf(other);\n  }\n\n  function withdraw(uint256 assets) external override {\n    if (_getStorage().failWithdraw) revert Fail(\"withdraw\");\n    OtherAddress(other).transferTo(_asset, address(this), assets);\n    emit Withdraw(assets);\n  }\n\n  function deposit(uint256 assets) external override {\n    if (_getStorage().failDeposit) revert Fail(\"deposit\");\n    _asset.transfer(other, assets);\n    emit Deposit(assets);\n  }\n\n  function forwardEntryPoint(uint8 method, bytes memory params) external returns (bytes memory) {\n    ForwardMethods checkedMethod = ForwardMethods(method);\n    if (checkedMethod == ForwardMethods.setFail) {\n      DummyStorage memory fail = abi.decode(params, (DummyStorage));\n      StorageSlot.getBytesSlot(storageSlot).value = params;\n      emit SetFail(fail);\n    }\n    return bytes(\"\");\n  }\n\n  function getFail(address contract_) external view returns (DummyStorage memory) {\n    return _getStorageForViews(contract_);\n  }\n}\n"},"contracts/mock/SingleStrategyERC4626.sol":{"content":"// SPDX-License-Identifier: Apache-2.0\npragma solidity ^0.8.0;\n\nimport {IERC20Metadata} from \"@openzeppelin/contracts/token/ERC20/extensions/IERC20Metadata.sol\";\nimport {IERC20} from \"@openzeppelin/contracts/token/ERC20/IERC20.sol\";\nimport {Address} from \"@openzeppelin/contracts/utils/Address.sol\";\nimport {StorageSlot} from \"@openzeppelin/contracts/utils/StorageSlot.sol\";\nimport {SafeERC20} from \"@openzeppelin/contracts/token/ERC20/utils/SafeERC20.sol\";\nimport {Math} from \"@openzeppelin/contracts/utils/math/Math.sol\";\nimport {ERC4626Upgradeable} from \"@openzeppelin/contracts-upgradeable/token/ERC20/extensions/ERC4626Upgradeable.sol\";\nimport {ERC20Upgradeable} from \"@openzeppelin/contracts-upgradeable/token/ERC20/ERC20Upgradeable.sol\";\nimport {UUPSUpgradeable} from \"@openzeppelin/contracts-upgradeable/proxy/utils/UUPSUpgradeable.sol\";\nimport {IInvestStrategy} from \"../interfaces/IInvestStrategy.sol\";\nimport {IExposeStorage} from \"../interfaces/IExposeStorage.sol\";\nimport {InvestStrategyClient} from \"../InvestStrategyClient.sol\";\n\n/**\n * @title SingleStrategyERC4626\n *\n * @dev Vault that invests/deinvests using a pluggable IInvestStrategy on each deposit/withdraw.\n *      The vault is permissioned to deposit/withdraw (not transfer). The owner of the shares must have LP_ROLE.\n *      Investment strategy can be changed. Also, custom messages can be sent to the IInvestStrategy contract.\n *\n *      The code of the IInvestStrategy is called using delegatecall, so it has full control over the assets and\n *      storage of this contract, so you must be very careful the kind of IInvestStrategy is plugged.\n *\n * WARNING: this contract isn't fully tested and has known errors (lack of access validation on forwardToStrategy),\n *          so this is not intended to be used in production. Is just for the purpose of testing strategies.\n *\n * @custom:security-contact security@ensuro.co\n * @author Ensuro\n */\ncontract SingleStrategyERC4626 is ERC4626Upgradeable, UUPSUpgradeable, IExposeStorage {\n  using SafeERC20 for IERC20Metadata;\n  using Address for address;\n  using InvestStrategyClient for IInvestStrategy;\n\n  IInvestStrategy internal _strategy;\n\n  // Events duplicated here from InvestStrategyClient library, so they go to the ABI\n  event StrategyChanged(IInvestStrategy oldStrategy, IInvestStrategy newStrategy);\n  event WithdrawFailed(bytes reason);\n  event DepositFailed(bytes reason);\n  event DisconnectFailed(bytes reason);\n\n  error OnlyStrategyStorageExposed();\n\n  /// @custom:oz-upgrades-unsafe-allow constructor\n  constructor() {\n    _disableInitializers();\n  }\n\n  /**\n   * @dev Initializes the SingleStrategyERC4626\n   *\n   * @param name_ Name of the ERC20/ERC4626 token\n   * @param symbol_ Symbol of the ERC20/ERC4626 token\n   * @param asset_ The asset() of the ERC4626\n   * @param strategy_ The IInvestStrategy that will be used to manage the funds received.\n   * @param initStrategyData Initialization data that will be sent to the IInvestStrategy\n   */\n  function initialize(\n    string memory name_,\n    string memory symbol_,\n    IERC20 asset_,\n    IInvestStrategy strategy_,\n    bytes memory initStrategyData\n  ) public virtual initializer {\n    __SingleStrategyERC4626_init(name_, symbol_, asset_, strategy_, initStrategyData);\n  }\n\n  // solhint-disable-next-line func-name-mixedcase\n  function __SingleStrategyERC4626_init(\n    string memory name_,\n    string memory symbol_,\n    IERC20 asset_,\n    IInvestStrategy strategy_,\n    bytes memory initStrategyData\n  ) internal onlyInitializing {\n    __ERC20_init(name_, symbol_);\n    __ERC4626_init(asset_);\n    __SingleStrategyERC4626_init_unchained(strategy_, initStrategyData);\n  }\n\n  // solhint-disable-next-line func-name-mixedcase\n  function __SingleStrategyERC4626_init_unchained(\n    IInvestStrategy strategy_,\n    bytes memory initStrategyData\n  ) internal onlyInitializing {\n    _strategy = strategy_;\n    strategy_.checkAsset(asset());\n    _strategy.dcConnect(initStrategyData);\n  }\n\n  /**\n   * @dev See {IERC4626-maxWithdraw}.\n   */\n  function maxWithdraw(address owner) public view virtual override returns (uint256) {\n    return Math.min(_strategy.maxWithdraw(), super.maxWithdraw(owner));\n  }\n\n  /**\n   * @dev See {IERC4626-maxRedeem}.\n   */\n  function maxRedeem(address owner) public view virtual override returns (uint256) {\n    uint256 maxAssets = _strategy.maxWithdraw();\n    return Math.min(_convertToShares(maxAssets, Math.Rounding.Floor), super.maxRedeem(owner));\n  }\n\n  /**\n   * @dev See {IERC4626-maxDeposit}.\n   */\n  function maxDeposit(address owner) public view virtual override returns (uint256) {\n    return Math.min(_strategy.maxDeposit(), super.maxDeposit(owner));\n  }\n\n  /**\n   * @dev See {IERC4626-maxMint}.\n   */\n  function maxMint(address owner) public view virtual override returns (uint256) {\n    uint256 maxAssets = _strategy.maxDeposit();\n    return Math.min(_convertToShares(maxAssets, Math.Rounding.Floor), super.maxMint(owner));\n  }\n\n  /**\n   * @dev See {IERC4626-totalAssets}.\n   */\n  function totalAssets() public view virtual override returns (uint256 assets) {\n    return _strategy.totalAssets();\n  }\n\n  function _withdraw(\n    address caller,\n    address receiver,\n    address owner,\n    uint256 assets,\n    uint256 shares\n  ) internal virtual override {\n    _strategy.dcWithdraw(assets, false);\n    super._withdraw(caller, receiver, owner, assets, shares);\n  }\n\n  function _deposit(address caller, address receiver, uint256 assets, uint256 shares) internal virtual override {\n    // Transfers the assets from the caller and supplies to compound\n    super._deposit(caller, receiver, assets, shares);\n    _strategy.dcDeposit(assets, false);\n  }\n\n  /**\n   * @dev Exposes a given slot as a bytes array. To be used by the IInvestStrategy views to access their storage.\n   *      Only the slot==strategyStorageSlot() can be accessed.\n   */\n  function getBytesSlot(bytes32 slot) external view override returns (bytes memory) {\n    if (slot != _strategy.storageSlot()) revert OnlyStrategyStorageExposed();\n    StorageSlot.BytesSlot storage r = StorageSlot.getBytesSlot(slot);\n    return r.value;\n  }\n\n  /**\n   * @dev Used to call specific methods on the strategies. Anyone can call this method, is responsability of the\n   *      IInvestStrategy to check access permissions when needed.\n   * @param method Id of the method to call. Is recommended that the strategy defines an enum with the methods that\n   *               can be called externally and validates this value.\n   * @param extraData Additional parameters sent to the method.\n   * @return Returns the output received from the IInvestStrategy.\n   */\n  function forwardToStrategy(uint8 method, bytes memory extraData) external returns (bytes memory) {\n    return _strategy.dcForward(method, extraData);\n  }\n\n  /**\n   * @dev Changes the current investment strategy to a new one. When this happens, all funds are withdrawn from the\n   *      old strategy and deposited on the new one. This reverts if any of this fails, unless the force parameter is\n   *      true, in that case errors in withdrawal or deposit are silented.\n   * @param newStrategy The new strategy to plug into the vault\n   * @param initStrategyData Initialization parameters for this new strategy\n   * @param force Boolean to indicate if errors on withdraw or deposit should be accepted. Normally you should send\n   *              this value in `false`. Only use `true` if you know what you are doing and trying to replace a faulty\n   *              strategy.\n   */\n  function setStrategy(IInvestStrategy newStrategy, bytes memory initStrategyData, bool force) external {\n    InvestStrategyClient.strategyChange(_strategy, newStrategy, initStrategyData, IERC20Metadata(asset()), force);\n    _strategy = newStrategy;\n  }\n\n  /**\n   * @dev Returns the current strategy plugged into the contract\n   */\n  function strategy() external view returns (IInvestStrategy) {\n    return _strategy;\n  }\n\n  function _authorizeUpgrade(address newImplementation) internal override {}\n\n  /**\n   * @dev This empty reserved space is put in place to allow future versions to add new\n   * variables without shifting down storage in the inheritance chain.\n   * See https://docs.openzeppelin.com/contracts/4.x/upgradeable#storage_gaps\n   */\n  uint256[49] private __gap;\n}\n"},"contracts/mock/VaultV2Mock.sol":{"content":"//SPDX-License-Identifier: Apache-2.0\npragma solidity ^0.8.0;\n\nimport {IERC20Metadata} from \"@openzeppelin/contracts/token/ERC20/extensions/IERC20Metadata.sol\";\nimport {TestERC4626} from \"@ensuro/utils/contracts/TestERC4626.sol\";\n\ncontract VaultV2Mock is TestERC4626 {\n  uint128 public _totalAssets;\n  uint64 public lastUpdate;\n\n  constructor(string memory name_, string memory symbol_, IERC20Metadata asset_) TestERC4626(name_, symbol_, asset_) {}\n\n  function _deposit(address caller, address receiver, uint256 assets, uint256 shares) internal virtual override {\n    super._deposit(caller, receiver, assets, shares);\n    updateCachedTotalAssets();\n  }\n\n  function _withdraw(\n    address caller,\n    address receiver,\n    address owner,\n    uint256 assets,\n    uint256 shares\n  ) internal virtual override {\n    super._withdraw(caller, receiver, owner, assets, shares);\n    updateCachedTotalAssets();\n  }\n\n  function updateCachedTotalAssets() public {\n    _totalAssets = uint128(totalAssets());\n    lastUpdate = uint64(block.timestamp);\n  }\n}\n"},"contracts/MSVBase.sol":{"content":"// SPDX-License-Identifier: Apache-2.0\npragma solidity ^0.8.0;\n\nimport {IERC20Metadata} from \"@openzeppelin/contracts/token/ERC20/extensions/IERC20Metadata.sol\";\nimport {StorageSlot} from \"@openzeppelin/contracts/utils/StorageSlot.sol\";\nimport {Math} from \"@openzeppelin/contracts/utils/math/Math.sol\";\nimport {IInvestStrategy} from \"./interfaces/IInvestStrategy.sol\";\nimport {InvestStrategyClient} from \"./InvestStrategyClient.sol\";\nimport {IExposeStorage} from \"./interfaces/IExposeStorage.sol\";\n\n/**\n * @title MSVBase\n * @dev Base vault contract that manages multiple investment strategies.\n *      Allows deposits/withdraws from each strategy, and also permit rebalances between them.\n *\n *      Funds that enter the vault, will be deposited into the strategies following _depositQueue (only tries the\n *      next strategy if the current one doesn't accept more deposits).\n *\n *      Funds that exit the vault, will be withdrawn into the strategies following _withdrawQueue (only tries the\n *      next strategy if the current one doesn't accept more withdrawals).\n *\n *      It doesn't have any allocation strategy besides that. Rebalance is done externally by calling `rebalance`\n *      method.\n *\n *      This is a base contract, intended to be inherited by implementations of the ERC4626 standard, that will\n *      handle access control, deposits and other stuff.\n *\n *      WARNING: this contract uses storage gaps (https://docs.openzeppelin.com/contracts/4.x/upgradeable#storage_gaps)\n *      to manage upgradeability potential issues, NOT namespaced storage\n *\n * @custom:security-contact security@ensuro.co\n * @author Ensuro\n */\nabstract contract MSVBase is IExposeStorage {\n  using InvestStrategyClient for IInvestStrategy;\n\n  uint8 public constant MAX_STRATEGIES = 32;\n\n  uint8[MAX_STRATEGIES] internal _depositQueue;\n  uint8[MAX_STRATEGIES] internal _withdrawQueue;\n  IInvestStrategy[MAX_STRATEGIES] internal _strategies;\n\n  // Events duplicated here from InvestStrategyClient library, so they go to the ABI\n  event StrategyChanged(IInvestStrategy oldStrategy, IInvestStrategy newStrategy);\n  event WithdrawFailed(bytes reason);\n  event DepositFailed(bytes reason);\n  event DisconnectFailed(bytes reason);\n  event StrategyAdded(IInvestStrategy indexed strategy, uint8 index);\n  event StrategyRemoved(IInvestStrategy indexed strategy, uint8 index);\n  event DepositQueueChanged(uint8[] queue);\n  event WithdrawQueueChanged(uint8[] queue);\n  event Rebalance(IInvestStrategy indexed strategyFrom, IInvestStrategy indexed strategyTo, uint256 amount);\n\n  error InvalidStrategiesLength();\n  error InvalidStrategy();\n  error DuplicatedStrategy(IInvestStrategy strategy);\n  error InvalidStrategyInDepositQueue(uint8 index);\n  error InvalidStrategyInWithdrawQueue(uint8 index);\n  error WithdrawError();\n  error DepositError();\n  error OnlyStrategyStorageExposed();\n  error CannotRemoveStrategyWithAssets();\n  error InvalidQueue();\n  error InvalidQueueLength();\n  error InvalidQueueIndexDuplicated(uint8 index);\n  error RebalanceAmountExceedsMaxDeposit(uint256 max);\n  error RebalanceAmountExceedsMaxWithdraw(uint256 max);\n\n  // Must be implemented by the inheriting class\n  function _asset() internal view virtual returns (address);\n\n  // solhint-disable-next-line func-name-mixedcase\n  function __MSVBase_init_unchained(\n    IInvestStrategy[] memory strategies_,\n    bytes[] memory initStrategyDatas,\n    uint8[] memory depositQueue_,\n    uint8[] memory withdrawQueue_\n  ) internal {\n    if (\n      strategies_.length == 0 ||\n      strategies_.length > MAX_STRATEGIES ||\n      strategies_.length != initStrategyDatas.length ||\n      strategies_.length != depositQueue_.length ||\n      strategies_.length != withdrawQueue_.length\n    ) revert InvalidStrategiesLength();\n    bool[MAX_STRATEGIES] memory presentInDeposit;\n    bool[MAX_STRATEGIES] memory presentInWithdraw;\n    for (uint256 i; i < strategies_.length; ++i) {\n      if (address(strategies_[i]) == address(0)) revert InvalidStrategy();\n      strategies_[i].checkAsset(_asset());\n      // Check strategies_[i] not duplicated\n      for (uint256 j; j < i; ++j) {\n        if (strategies_[i] == strategies_[j]) revert DuplicatedStrategy(strategies_[i]);\n      }\n      // Check depositQueue_[i] and withdrawQueue_[i] not duplicated and within bounds\n      if (depositQueue_[i] >= strategies_.length || presentInDeposit[depositQueue_[i]])\n        revert InvalidStrategyInDepositQueue(depositQueue_[i]);\n      if (withdrawQueue_[i] >= strategies_.length || presentInWithdraw[withdrawQueue_[i]])\n        revert InvalidStrategyInWithdrawQueue(withdrawQueue_[i]);\n      presentInDeposit[depositQueue_[i]] = true;\n      presentInWithdraw[withdrawQueue_[i]] = true;\n      _strategies[i] = strategies_[i];\n      _depositQueue[i] = depositQueue_[i] + 1; // Adding one, so we know when 0 is end of array\n      _withdrawQueue[i] = withdrawQueue_[i] + 1; // Adding one, so we know when 0 is end of array\n      strategies_[i].dcConnect(initStrategyDatas[i]);\n      emit StrategyAdded(strategies_[i], uint8(i));\n    }\n    emit DepositQueueChanged(depositQueue_);\n    emit WithdrawQueueChanged(withdrawQueue_);\n  }\n\n  function _maxWithdrawable(uint256 limit) internal view returns (uint256 ret) {\n    bool addSuccess;\n    for (uint256 i; address(_strategies[i]) != address(0) && i < MAX_STRATEGIES; ++i) {\n      (addSuccess, ret) = Math.tryAdd(ret, _strategies[i].maxWithdraw());\n      if (!addSuccess || ret >= limit) return limit;\n    }\n    return ret;\n  }\n\n  /**\n   * @dev For each strategy in the deposit queue, calculates the max deposit and sum it up to finally return the\n   *      total assets could be deposited.\n   */\n  function _maxDepositable() internal view returns (uint256 ret) {\n    bool addSuccess;\n    for (uint256 i; address(_strategies[i]) != address(0) && i < MAX_STRATEGIES; ++i) {\n      (addSuccess, ret) = Math.tryAdd(ret, _strategies[i].maxDeposit());\n      if (!addSuccess) return type(uint256).max;\n    }\n    return ret;\n  }\n\n  /**\n   * @dev Sum up the total assets of each strategy in the vault and returns the total value.\n   */\n  function _totalAssets() internal view returns (uint256 assets) {\n    for (uint256 i; address(_strategies[i]) != address(0) && i < MAX_STRATEGIES; ++i) {\n      assets += _strategies[i].totalAssets();\n    }\n  }\n\n  /**\n   * @dev Withdraw assets from the strategies in the withdraw queue order until zero assets remains to be withdrawn.\n   *      After finishing the withdraw, left must be zero, otherwise reverts, and should never happen.\n   * @param assets The amount of assets to be withdrawn from the strategies.\n   */\n  function _withdrawFromStrategies(uint256 assets) internal {\n    uint256 left = assets;\n    for (uint256 i; left != 0 && _withdrawQueue[i] != 0 && i < MAX_STRATEGIES; ++i) {\n      IInvestStrategy strategy = _strategies[_withdrawQueue[i] - 1];\n      uint256 toWithdraw = Math.min(left, strategy.maxWithdraw());\n      if (toWithdraw == 0) continue;\n      strategy.dcWithdraw(toWithdraw, false);\n      left -= toWithdraw;\n    }\n    if (left != 0) revert WithdrawError(); // This shouldn't happen, since assets must be <= maxWithdraw(owner)\n  }\n\n  /**\n   * @dev Deposit assets to the strategies in the deposit queue order until zero assets remains to be deposited.\n   *      After finishing the deposit, left must be zero, otherwise reverts, and should never happen.\n   * @param assets The amount of assets to be deposited to the strategies.\n   */\n  function _depositToStrategies(uint256 assets) internal {\n    // Transfers the assets from the caller and supplies to compound\n    uint256 left = assets;\n    for (uint256 i; left != 0 && _depositQueue[i] != 0 && i < MAX_STRATEGIES; ++i) {\n      IInvestStrategy strategy = _strategies[_depositQueue[i] - 1];\n      uint256 toDeposit = Math.min(left, strategy.maxDeposit());\n      if (toDeposit == 0) continue;\n      strategy.dcDeposit(toDeposit, false);\n      left -= toDeposit;\n    }\n    if (left != 0) revert DepositError(); // This shouldn't happen, since assets must be <= maxDeposit(owner)\n  }\n\n  /**\n   * @dev Deposit assets to the strategies in the deposit queue order until zero assets remains to be deposited.\n   *      After finishing the deposit, left must be zero, otherwise reverts, and should never happen.\n   *\n   *      This method might be used by the some strategies to reinject rewards. Left as virtual so child classes\n   *      can implement somekind of access control.\n   *\n   * @param assets The amount of assets to be deposited to the strategies.\n   */\n  function depositToStrategies(uint256 assets) public virtual {\n    _depositToStrategies(assets);\n  }\n\n  /**\n   * @dev Exposes a given slot as a bytes array. To be used by the IInvestStrategy views to access their storage.\n   *      Only the slot==strategyStorageSlot() can be accessed.\n   */\n  function getBytesSlot(bytes32 slot) external view override returns (bytes memory) {\n    for (uint256 i; _strategies[i] != IInvestStrategy(address(0)) && i < MAX_STRATEGIES; ++i) {\n      if (slot == _strategies[i].storageSlot()) {\n        StorageSlot.BytesSlot storage r = StorageSlot.getBytesSlot(slot);\n        return r.value;\n      }\n    }\n    revert OnlyStrategyStorageExposed();\n  }\n\n  /**\n   * @dev Checks the caller can execute this forwardToStrategy call, otherwise reverts.\n   *\n   *       This method MUST be implemented by the inheriting contracts with the specific access control mechanism\n   *\n   * @param strategyIndex The index of the strategy in the _strategies array\n   * @param method Id of the method to call. Is recommended that the strategy defines an enum with the methods that\n   *               can be called externally and validates this value.\n   * @param extraData Additional parameters sent to the method.\n   */\n  function _checkForwardToStrategy(uint8 strategyIndex, uint8 method, bytes memory extraData) internal view virtual;\n\n  /**\n   * @dev Used to call specific methods on the strategies. The specific vault implementation will define the access\n   *      control mechanism to validate who can execute these calls.\n   *\n   * @param strategyIndex The index of the strategy in the _strategies array\n   * @param method Id of the method to call. Is recommended that the strategy defines an enum with the methods that\n   *               can be called externally and validates this value.\n   * @param extraData Additional parameters sent to the method.\n   * @return Returns the output received from the IInvestStrategy.\n   */\n  function forwardToStrategy(\n    uint8 strategyIndex,\n    uint8 method,\n    bytes memory extraData\n  ) external virtual returns (bytes memory) {\n    _checkForwardToStrategy(strategyIndex, method, extraData);\n    IInvestStrategy strategy = _strategies[strategyIndex];\n    if (address(strategy) == address(0)) revert InvalidStrategy();\n    return _strategies[strategyIndex].dcForward(method, extraData);\n  }\n\n  /**\n   * @dev Changes one investment strategy to a new one, keeping the deposit and withdraw queues unaffected.\n   *      When this happens, all funds are withdrawn from the old strategy and deposited on the new one.\n   *      This reverts if any of this fails, unless the force parameter is true, in that case errors in withdrawal\n   *      or deposit are silented.\n   * @param strategyIndex The index of the strategy in the _strategies array\n   * @param newStrategy The new strategy to plug into the vault\n   * @param initStrategyData Initialization parameters for this new strategy\n   * @param force Boolean to indicate if errors on withdraw or deposit should be accepted. Normally you should send\n   *              this value in `false`. Only use `true` if you know what you are doing and trying to replace a faulty\n   *              strategy.\n   */\n  function replaceStrategy(\n    uint8 strategyIndex,\n    IInvestStrategy newStrategy,\n    bytes memory initStrategyData,\n    bool force\n  ) public virtual {\n    IInvestStrategy strategy = _strategies[strategyIndex];\n    if (address(strategy) == address(0)) revert InvalidStrategy();\n    for (uint256 i; i < MAX_STRATEGIES && _strategies[i] != IInvestStrategy(address(0)); ++i) {\n      if (_strategies[i] == newStrategy && i != strategyIndex) revert DuplicatedStrategy(newStrategy);\n    }\n    InvestStrategyClient.strategyChange(strategy, newStrategy, initStrategyData, IERC20Metadata(_asset()), force);\n    _strategies[strategyIndex] = newStrategy;\n  }\n\n  /**\n   * @dev Adds a new strategy to the vault. The new strategy will be added at the end of the deposit and withdraw\n   *      queues.\n   * @param newStrategy The new strategy to plug into the vault\n   * @param initStrategyData Initialization parameters for this new strategy\n   */\n  function addStrategy(IInvestStrategy newStrategy, bytes memory initStrategyData) public virtual {\n    if (address(newStrategy) == address(0)) revert InvalidStrategy();\n    uint256 i;\n    for (; i < MAX_STRATEGIES && _strategies[i] != IInvestStrategy(address(0)); ++i) {\n      if (_strategies[i] == newStrategy) revert DuplicatedStrategy(newStrategy);\n    }\n    if (i == MAX_STRATEGIES) revert InvalidStrategiesLength();\n    _strategies[i] = newStrategy;\n    _depositQueue[i] = uint8(i + 1);\n    _withdrawQueue[i] = uint8(i + 1);\n    newStrategy.checkAsset(_asset());\n    newStrategy.dcConnect(initStrategyData);\n    emit StrategyAdded(newStrategy, uint8(i));\n  }\n\n  /**\n   * @dev Remove an strategy from the vault. It's only possible if the strategy doesn't have assets.\n   *      The strategy is removed from deposit and withdraw queues\n   * @param strategyIndex The index of the strategy in the _strategies array\n   * @param force If strategy.disconnect fails, this parameter indicates whether the operation is reverted or not.\n   */\n  function removeStrategy(uint8 strategyIndex, bool force) public virtual {\n    if (strategyIndex >= MAX_STRATEGIES) revert InvalidStrategy();\n    IInvestStrategy strategy = _strategies[strategyIndex];\n    if (address(strategy) == address(0)) revert InvalidStrategy();\n    if (!force && strategy.totalAssets() != 0) revert CannotRemoveStrategyWithAssets();\n    // Check isn't removing the last one\n    if (strategyIndex == 0 && address(_strategies[1]) == address(0)) revert InvalidStrategiesLength();\n    // Shift the following strategies in the array\n    uint256 i = strategyIndex + 1;\n    for (; i < MAX_STRATEGIES && _strategies[i] != IInvestStrategy(address(0)); ++i) {\n      _strategies[i - 1] = _strategies[i];\n    }\n    _strategies[i - 1] = IInvestStrategy(address(0));\n    // Shift and change the indexes in the queues\n    bool shiftDeposit;\n    bool shiftWithdraw;\n    for (i = 0; _withdrawQueue[i] != 0 && i < MAX_STRATEGIES; ++i) {\n      if (shiftWithdraw) {\n        // Already saw the deleted index, shift and change index if greater\n        _withdrawQueue[i - 1] = _withdrawQueue[i] - ((_withdrawQueue[i] > (strategyIndex + 1)) ? 1 : 0);\n      } else {\n        if (_withdrawQueue[i] == (strategyIndex + 1)) {\n          // Index to delete found, it will be deleted in the next interation\n          shiftWithdraw = true;\n        } else if (_withdrawQueue[i] > (strategyIndex + 1)) {\n          // If index is greater, substract one\n          _withdrawQueue[i] -= 1;\n        }\n      }\n\n      // Same for deposit\n      if (shiftDeposit) {\n        // Already saw the deleted index, shift and change index if greater\n        _depositQueue[i - 1] = _depositQueue[i] - ((_depositQueue[i] > (strategyIndex + 1)) ? 1 : 0);\n      } else {\n        if (_depositQueue[i] == (strategyIndex + 1)) {\n          // Index to delete found, it will be deleted in the next interation\n          shiftDeposit = true;\n        } else if (_depositQueue[i] > (strategyIndex + 1)) {\n          // If index is greater, substract one\n          _depositQueue[i] -= 1;\n        }\n      }\n    }\n    _depositQueue[i - 1] = 0;\n    _withdrawQueue[i - 1] = 0;\n    strategy.dcDisconnect(force);\n    emit StrategyRemoved(strategy, strategyIndex);\n  }\n  /**\n   * @dev Updates the deposit queue with a new one.\n   *\n   * @notice Emits DepositQueueChanged(uint8[]) when updating the deposit queue.\n   *\n   * @param newDepositQueue_ New deposit queue, the lenght must be the same of the installed strategies without\n   *                         repeated indexes\n   */\n  function changeDepositQueue(uint8[] memory newDepositQueue_) public virtual {\n    bool[MAX_STRATEGIES] memory seen;\n    uint256 i = 0;\n    if (newDepositQueue_.length > MAX_STRATEGIES) revert InvalidQueue();\n    for (; i < newDepositQueue_.length; ++i) {\n      if (newDepositQueue_[i] >= MAX_STRATEGIES || address(_strategies[newDepositQueue_[i]]) == address(0))\n        revert InvalidQueue();\n      if (seen[newDepositQueue_[i]]) revert InvalidQueueIndexDuplicated(newDepositQueue_[i]);\n      seen[newDepositQueue_[i]] = true;\n      _depositQueue[i] = newDepositQueue_[i] + 1;\n    }\n    if (i < MAX_STRATEGIES && address(_strategies[i]) != address(0)) revert InvalidQueueLength();\n    emit DepositQueueChanged(newDepositQueue_);\n  }\n\n  /**\n   * @dev Updates the withdraw queue with a new one.\n   *\n   * @notice Emits WithdrawQueueChanged(uint8[]) when updating the deposit queue.\n   *\n   * @param newWithdrawQueue_ New withdrawal queue, the lenght must be the same of the installed strategies without\n   *                          repeated indexes\n   */\n  function changeWithdrawQueue(uint8[] memory newWithdrawQueue_) public virtual {\n    bool[MAX_STRATEGIES] memory seen;\n    uint8 i = 0;\n    if (newWithdrawQueue_.length > MAX_STRATEGIES) revert InvalidQueue();\n    for (; i < newWithdrawQueue_.length; ++i) {\n      if (newWithdrawQueue_[i] >= MAX_STRATEGIES || address(_strategies[newWithdrawQueue_[i]]) == address(0))\n        revert InvalidQueue();\n      if (seen[newWithdrawQueue_[i]]) revert InvalidQueueIndexDuplicated(newWithdrawQueue_[i]);\n      seen[newWithdrawQueue_[i]] = true;\n      _withdrawQueue[i] = newWithdrawQueue_[i] + 1;\n    }\n    if (i < MAX_STRATEGIES && address(_strategies[i]) != address(0)) revert InvalidQueueLength();\n    emit WithdrawQueueChanged(newWithdrawQueue_);\n  }\n\n  /**\n   * @dev Moves funds from one strategy to another.\n   *\n   * @notice Emits {Rebalance(strategyFrom, strategyTo, amount)}\n   *\n   * @param strategyFromIdx The index of the strategy that will provide the funds in the _strategies array\n   * @param strategyToIdx The index of the strategy that will receive the funds in the _strategies array\n   * @param amount The amount to transfer from one strategy to the other. type(uint256).max to move all the assets.\n   */\n  function rebalance(uint8 strategyFromIdx, uint8 strategyToIdx, uint256 amount) public virtual returns (uint256) {\n    if (strategyFromIdx >= MAX_STRATEGIES || strategyToIdx >= MAX_STRATEGIES) revert InvalidStrategy();\n    IInvestStrategy strategyFrom = _strategies[strategyFromIdx];\n    IInvestStrategy strategyTo = _strategies[strategyToIdx];\n    if (address(strategyFrom) == address(0) || address(strategyTo) == address(0)) revert InvalidStrategy();\n    if (amount == type(uint256).max) amount = strategyFrom.totalAssets();\n    if (amount == 0) return 0; // Don't revert if nothing to do, just to make life easier for devs\n    if (amount > strategyFrom.maxWithdraw()) revert RebalanceAmountExceedsMaxWithdraw(strategyFrom.maxWithdraw());\n    if (amount > strategyTo.maxDeposit()) revert RebalanceAmountExceedsMaxDeposit(strategyTo.maxDeposit());\n    strategyFrom.dcWithdraw(amount, false);\n    strategyTo.dcDeposit(amount, false);\n    emit Rebalance(strategyFrom, strategyTo, amount);\n    return amount;\n  }\n\n  /**\n   * @dev Returns the list of strategies in the vault in order.\n   *      The array is filled with zero addresses after the first one that is address(0).\n   */\n  function strategies() external view returns (IInvestStrategy[MAX_STRATEGIES] memory) {\n    return _strategies;\n  }\n\n  /**\n   * @dev Returns the order in which the deposits will be made, expressed as index+1 in the _strategies array,\n   *      filled with zeros at the end\n   */\n  function depositQueue() external view returns (uint8[MAX_STRATEGIES] memory) {\n    return _depositQueue;\n  }\n\n  /**\n   * @dev Returns the order in which the withdraws will be made, expressed as index+1 in the _strategies array,\n   *      filled with zeros at the end\n   */\n  function withdrawQueue() external view returns (uint8[MAX_STRATEGIES] memory) {\n    return _withdrawQueue;\n  }\n\n  /**\n   * @dev This empty reserved space is put in place to allow future versions to add new\n   * variables without shifting down storage in the inheritance chain.\n   * See https://docs.openzeppelin.com/contracts/4.x/upgradeable#storage_gaps\n   */\n  uint256[16] private __gap;\n}\n"},"contracts/OutflowLimitedAMMSV.sol":{"content":"// SPDX-License-Identifier: Apache-2.0\npragma solidity ^0.8.0;\n\nimport {ERC4626Upgradeable} from \"@openzeppelin/contracts-upgradeable/token/ERC20/extensions/ERC4626Upgradeable.sol\";\nimport {AccessManagedMSV} from \"./AccessManagedMSV.sol\";\nimport {SafeCast} from \"@openzeppelin/contracts/utils/math/SafeCast.sol\";\n\n/**\n * @title OutflowLimitedAMMSV\n * @dev Variant of the AccessManagedMSV that has protection to limit the amount of outflows in a given timeframe.\n *\n *      Reverts if net outflows in a given timeframe exceeded a given threshold.\n *\n *      The check is executed before any withdraw/redeem operation, and the outflows are recorded on each\n *      withdraw/redeem/mint/deposit methods.\n *\n *      The limit is applied for TWO `slotSize` periods. So for example if slotSize=1 day and limit=100K, this means\n *      that up to 100K of outflows every two consecutive calendar days are acceptable.\n\n *      The vault MUST be deployed behind an AccessManagedProxy that controls the access to the critical methods\n *      Since this contract DOESN'T DO ANY ACCESS CONTROL.\n *\n * @custom:security-contact security@ensuro.co\n * @author Ensuro\n */\ncontract OutflowLimitedAMMSV is AccessManagedMSV {\n  using SafeCast for uint256;\n\n  type SlotIndex is uint256; // slotSize << 128 + block.timestamp / slotSize\n\n  // @custom:storage-location erc7201:ensuro.storage.OutflowLimitedAMMSV\n  struct LOMStorage {\n    uint128 slotSize; // Duration in seconds of the time slots\n    uint128 limit; // Limit of outflows in a given slot + the previous one\n    mapping(SlotIndex => int256) assetsDelta; // Variation in assets in a given slot\n  }\n\n  event LimitChanged(uint256 slotSize, uint256 newLimit);\n  event DeltaManuallySet(SlotIndex slot, int256 oldDelta, int256 newDelta);\n\n  error LimitReached(int256 assetsDelta, uint256 limit);\n\n  // keccak256(abi.encode(uint256(keccak256(\"ensuro.storage.OutflowLimitedAMMSV\")) - 1)) & ~bytes32(uint256(0xff))\n  bytes32 private constant STORAGE_LOCATION = 0xa2ada5d673dba5eecea7c7503ee87e29913d0d36ae093e950d632f7b86891f00;\n\n  function _getLOMStorage() private pure returns (LOMStorage storage $) {\n    // solhint-disable-next-line no-inline-assembly\n    assembly {\n      $.slot := STORAGE_LOCATION\n    }\n  }\n\n  /**\n   * @dev Changes the limit and the timeframe used to track it.\n   *\n   * WARNING: changing the slotSize effectivelly resets the recorded outflows, so after this call (if slotSize\n   * changed), the delta will be zero.\n   *\n   * @param slotSize The duration in seconds of the timeframe used to limit the amount of outflows. Setting slotSize\n   *                 to zero disables the outflow limit checks and the vault behaves like a normal AccessManagedMSV\n   * @param limit    The max amount of outflows that will be allowed in a given time slot.\n   */\n  function setupOutflowLimit(uint256 slotSize, uint256 limit) external {\n    LOMStorage storage $ = _getLOMStorage();\n    $.limit = limit.toUint128();\n    $.slotSize = slotSize.toUint128();\n    emit LimitChanged(slotSize, limit);\n  }\n\n  /**\n   * @dev Returns the current time slot size in seconds.\n   */\n  function getOutflowLimitSlotSize() external view returns (uint256) {\n    return _getLOMStorage().slotSize;\n  }\n\n  /**\n   * @dev Returns the net outflow limit that will be applied on two consecutive time slots\n   */\n  function getOutflowLimit() external view returns (uint256) {\n    return _getLOMStorage().limit;\n  }\n\n  /**\n   * @dev The current delta variation in assets for the given slot.\n   *      Calculated as the sum of limit + deposits - withdrawals.\n   * @param slot The given slot to check the delta. Compatible with the slot calculated by makeOutflowSlot.\n   * @return The net flows in a slot (positive for inflows, more deposits than withdrawals, negative otherwise)\n   */\n  function getAssetsDelta(SlotIndex slot) external view returns (int256) {\n    return _getLOMStorage().assetsDelta[slot];\n  }\n\n  /**\n   * @dev Computes the SlotIndex datatype comining both the slotSize and the index in which the timestamp is in\n   *      a line of time that starts at epoch, with slots of slotSize\n   *\n   * @param slotSize The size of the slot in seconds that splits the timeline\n   * @param timestamp The time for which we want to calculate the slot.\n   * @return Returns a SlotIndex datatype that's the combination of the slotSize and the index in which the timestamp\n   *         falls\n   */\n  function makeOutflowSlot(uint256 slotSize, uint40 timestamp) external pure returns (SlotIndex) {\n    return SlotIndex.wrap((slotSize << 128) + timestamp / slotSize);\n  }\n\n  /**\n   * @dev Manually changes the delta in a given slot. Used to exceptionally allow or disallow limits different than\n   *      the configured ones or to reset the limit when a valid operation is verified.\n   *\n   * @param slot Identification of the slot to modify.\n   *             The slot is computed as `slotSize << 128 + block.timestamp / slotSize` (See {makeOutflowSlot})\n   * @param deltaChange The modification to apply to the registered inflows in a given slot. Positive to increase the\n   *                    inflows, negative to decrease the outflows.\n   * @return newDelta The resulting delta in the slot after applying the change\n   */\n  function changeDelta(SlotIndex slot, int256 deltaChange) external returns (int256 newDelta) {\n    int256 oldDelta = _getLOMStorage().assetsDelta[slot];\n    newDelta = _getLOMStorage().assetsDelta[slot] += deltaChange;\n    emit DeltaManuallySet(slot, oldDelta, newDelta);\n  }\n\n  function _slotIndex() internal view returns (SlotIndex) {\n    uint256 slotSize = _getLOMStorage().slotSize;\n    return SlotIndex.wrap((slotSize << 128) + block.timestamp / slotSize);\n  }\n\n  /// @inheritdoc ERC4626Upgradeable\n  function _withdraw(\n    address caller,\n    address receiver,\n    address owner,\n    uint256 assets,\n    uint256 shares\n  ) internal virtual override {\n    LOMStorage storage $ = _getLOMStorage();\n    if ($.slotSize != 0) {\n      SlotIndex slot = _slotIndex();\n\n      // Check delta doesn't exceed the threshold\n      SlotIndex prevSlot = SlotIndex.wrap(SlotIndex.unwrap(slot) - 1);\n      int256 deltaLastTwoSlots = -int256(assets) + $.assetsDelta[slot] + $.assetsDelta[prevSlot];\n      // To check the limit, uses TWO slots, the current one and the previous one. This is to avoid someone doing\n      // several operations in the slot limit, like withdrawal at 11:59PM and another withdrawal at 12:01 AM.\n      if (deltaLastTwoSlots < 0 && uint256(-deltaLastTwoSlots) > $.limit)\n        revert LimitReached(deltaLastTwoSlots, $.limit);\n\n      // Update the delta and pass the message to parent contract\n      $.assetsDelta[slot] -= assets.toInt256();\n    }\n    super._withdraw(caller, receiver, owner, assets, shares);\n  }\n\n  /// @inheritdoc ERC4626Upgradeable\n  function _deposit(address caller, address receiver, uint256 assets, uint256 shares) internal virtual override {\n    LOMStorage storage $ = _getLOMStorage();\n    if ($.slotSize != 0) {\n      // Just update the delta and pass the message to parent contract\n      SlotIndex slot = _slotIndex();\n      $.assetsDelta[slot] += assets.toInt256();\n    }\n    super._deposit(caller, receiver, assets, shares);\n  }\n}\n"},"contracts/strategies/AaveV3InvestStrategy.sol":{"content":"// SPDX-License-Identifier: Apache-2.0\npragma solidity ^0.8.0;\n\nimport {IPool} from \"../dependencies/aave-v3/IPool.sol\";\nimport {DataTypes} from \"../dependencies/aave-v3/DataTypes.sol\";\nimport {ReserveConfiguration} from \"../dependencies/aave-v3/ReserveConfiguration.sol\";\nimport {IERC20} from \"@openzeppelin/contracts/interfaces/IERC20.sol\";\nimport {IInvestStrategy} from \"../interfaces/IInvestStrategy.sol\";\nimport {InvestStrategyClient} from \"../InvestStrategyClient.sol\";\n\n/**\n * @title AaveV3InvestStrategy\n *\n * @dev Strategy that invests/deinvests into AaveV3 on each deposit/withdraw.\n *\n * @custom:security-contact security@ensuro.co\n * @author Ensuro\n */\ncontract AaveV3InvestStrategy is IInvestStrategy {\n  using ReserveConfiguration for DataTypes.ReserveConfigurationMap;\n\n  address private immutable __self = address(this);\n  bytes32 public immutable storageSlot = InvestStrategyClient.makeStorageSlot(this);\n\n  IPool internal immutable _aave;\n  IERC20 internal immutable _asset;\n\n  error CanBeCalledOnlyThroughDelegateCall();\n  error CannotDisconnectWithAssets();\n  error NoExtraDataAllowed();\n  error ReserveNotFoundInAave();\n\n  modifier onlyDelegCall() {\n    if (address(this) == __self) revert CanBeCalledOnlyThroughDelegateCall();\n    _;\n  }\n\n  constructor(IERC20 asset_, IPool aave_) {\n    if (aave_.getReserveData(address(asset_)).aTokenAddress == address(0)) revert ReserveNotFoundInAave();\n    _aave = aave_;\n    _asset = asset_;\n  }\n\n  function _reserveData() internal view returns (DataTypes.ReserveData memory) {\n    return _aave.getReserveData(address(_asset));\n  }\n\n  /// @inheritdoc IInvestStrategy\n  function connect(bytes memory initData) external virtual override onlyDelegCall {\n    if (initData.length != 0) revert NoExtraDataAllowed();\n  }\n\n  /// @inheritdoc IInvestStrategy\n  function disconnect(bool force) external virtual override onlyDelegCall {\n    IERC20 aToken = IERC20(_reserveData().aTokenAddress);\n    if (!force && aToken.balanceOf(address(this)) != 0) revert CannotDisconnectWithAssets();\n  }\n\n  /// @inheritdoc IInvestStrategy\n  function maxWithdraw(address contract_) public view virtual override returns (uint256) {\n    DataTypes.ReserveData memory reserve = _reserveData();\n    if (!reserve.configuration.getActive() || reserve.configuration.getPaused()) return 0;\n    return IERC20(reserve.aTokenAddress).balanceOf(contract_);\n  }\n\n  /// @inheritdoc IInvestStrategy\n  function maxDeposit(address /*contract_*/) public view virtual override returns (uint256) {\n    DataTypes.ReserveData memory reserve = _reserveData();\n    if (!reserve.configuration.getActive() || reserve.configuration.getPaused() || reserve.configuration.getFrozen())\n      return 0;\n    // Supply cap ignored\n    return type(uint256).max;\n  }\n\n  /// @inheritdoc IInvestStrategy\n  function asset(address) public view virtual override returns (address) {\n    return address(_asset);\n  }\n\n  /// @inheritdoc IInvestStrategy\n  function totalAssets(address contract_) public view virtual override returns (uint256 assets) {\n    return IERC20(_reserveData().aTokenAddress).balanceOf(contract_);\n  }\n\n  /// @inheritdoc IInvestStrategy\n  function withdraw(uint256 assets) external virtual override onlyDelegCall {\n    if (assets != 0) _aave.withdraw(address(_asset), assets, address(this));\n  }\n\n  /// @inheritdoc IInvestStrategy\n  function deposit(uint256 assets) external virtual override onlyDelegCall {\n    if (assets != 0) _supply(assets);\n  }\n\n  function _supply(uint256 assets) internal {\n    IERC20(_asset).approve(address(_aave), assets);\n    _aave.supply(address(_asset), assets, address(this), 0);\n  }\n\n  /// @inheritdoc IInvestStrategy\n  function forwardEntryPoint(uint8, bytes memory) external view onlyDelegCall returns (bytes memory) {\n    // solhint-disable-next-line gas-custom-errors,reason-string\n    revert();\n  }\n}\n"},"contracts/strategies/ChainlinkSwapAssetInvestStrategy.sol":{"content":"// SPDX-License-Identifier: Apache-2.0\npragma solidity ^0.8.0;\n\nimport {IERC20Metadata} from \"@openzeppelin/contracts/interfaces/IERC20Metadata.sol\";\nimport {SwapAssetInvestStrategy} from \"./SwapAssetInvestStrategy.sol\";\nimport {AggregatorV3Interface} from \"../dependencies/chainlink/AggregatorV3Interface.sol\";\nimport {Math} from \"@openzeppelin/contracts/utils/math/Math.sol\";\n\n/**\n * @title ChainlinkSwapAssetInvestStrategy\n * @dev Strategy that invests/deinvests by swapping into another token, where the price of both tokens is obtained\n *      from chainlink oracles.\n *\n *      The oracles should express the prices in the same base. For example if asset=USDC and investAsset=WPOL,\n *      then `assetOracle()` is an oracle that returns the price of USDC in USD (or other base) and\n *      `investAssetOracle()` is an oracle that returns the price of WPOL in USD (or other base, but the same as\n *      `assetOracle()`).\n *\n * @custom:security-contact security@ensuro.co\n * @author Ensuro\n */\ncontract ChainlinkSwapAssetInvestStrategy is SwapAssetInvestStrategy {\n  AggregatorV3Interface public immutable assetOracle;\n  AggregatorV3Interface public immutable investAssetOracle;\n  uint256 public immutable priceTolerance;\n\n  error PriceTooOld(uint256 minUpdateAt, uint256 updatedAt);\n  error InvalidPrice(int256 chainlinkAnswer);\n\n  /**\n   * @dev Constructor of the strategy\n   *\n   * @param asset_ The address of the underlying token used for accounting, depositing, and withdrawing.\n   * @param investAsset_ The address of the tokens hold by the strategy. Typically a rebasing yield bearing token\n   * @param assetOracle_ The chainlink oracle to obtain the price of the asset. If address(0) the price is 1.\n   * @param investAssetOracle_ The chainlink oracle to obtain the price of the invest asset. If address(0) => 1\n   */\n  constructor(\n    IERC20Metadata asset_,\n    IERC20Metadata investAsset_,\n    AggregatorV3Interface assetOracle_,\n    AggregatorV3Interface investAssetOracle_,\n    uint256 priceTolerance_\n  ) SwapAssetInvestStrategy(asset_, investAsset_) {\n    investAssetOracle = investAssetOracle_;\n    assetOracle = assetOracle_;\n    priceTolerance = priceTolerance_;\n  }\n\n  function investAssetPrice() public view virtual override returns (uint256) {\n    return Math.mulDiv(_getOraclePrice(investAssetOracle), WAD, _getOraclePrice(assetOracle));\n  }\n\n  function _getOraclePrice(AggregatorV3Interface oracle) internal view returns (uint256) {\n    if (address(oracle) == address(0)) return WAD;\n    (, int256 answer, , uint256 updatedAt, ) = oracle.latestRoundData();\n    require(updatedAt > block.timestamp - priceTolerance, PriceTooOld(block.timestamp - priceTolerance, updatedAt));\n    require(answer > 0, InvalidPrice(answer));\n    return uint256(answer) * 10 ** (18 - oracle.decimals());\n  }\n}\n"},"contracts/strategies/CompoundV3InvestStrategy.sol":{"content":"// SPDX-License-Identifier: Apache-2.0\npragma solidity ^0.8.0;\n\nimport {ICompoundV3} from \"../dependencies/compound-v3/ICompoundV3.sol\";\nimport {ICometRewards} from \"../dependencies/compound-v3/ICometRewards.sol\";\nimport {IERC20} from \"@openzeppelin/contracts/interfaces/IERC20.sol\";\nimport {SwapLibrary} from \"@ensuro/swaplibrary/contracts/SwapLibrary.sol\";\nimport {IInvestStrategy} from \"../interfaces/IInvestStrategy.sol\";\nimport {StorageSlot} from \"@openzeppelin/contracts/utils/StorageSlot.sol\";\nimport {IExposeStorage} from \"../interfaces/IExposeStorage.sol\";\nimport {InvestStrategyClient} from \"../InvestStrategyClient.sol\";\nimport {MSVBase} from \"../MSVBase.sol\";\n\n/**\n * @title CompoundV3InvestStrategy\n * @dev Strategy that invests/deinvests into CompoundV3 on each deposit/withdraw. Also, has a method to claim the\n *      rewards, swap them, and reinvests the result into CompoundV3.\n *\n *      The rewards are not accounted in the totalAssets() until they are claimed. It's advised to claim the rewards\n *      frequently, to avoid discrete variations on the returns.\n *\n *      This strategy as the other IInvestStrategy are supposed to be called with delegateCall by a vault, managing\n *      the assets on behalf of the vault.\n *\n * @custom:security-contact security@ensuro.co\n * @author Ensuro\n */\ncontract CompoundV3InvestStrategy is IInvestStrategy {\n  using SwapLibrary for SwapLibrary.SwapConfig;\n\n  address private immutable __self = address(this);\n  bytes32 public immutable storageSlot = InvestStrategyClient.makeStorageSlot(this);\n\n  ICompoundV3 internal immutable _cToken;\n  ICometRewards internal immutable _rewardsManager;\n  address internal immutable _baseToken;\n\n  /**\n   * @dev Emitted when the rewards are claimed\n   *\n   * @param token The token in which the rewards are denominated\n   * @param rewards Amount of rewards received (in units of token)\n   * @param receivedInAsset Amount of `asset()` received in exchange of the rewards sold\n   */\n  event RewardsClaimed(address token, uint256 rewards, uint256 receivedInAsset);\n\n  /**\n   * @dev Emitted when the swap config is changed. This swap config is used to swap the rewards for assets``\n   *\n   * @param oldConfig The swap configuration before the change\n   * @param newConfig The swap configuration after the change\n   */\n  event SwapConfigChanged(SwapLibrary.SwapConfig oldConfig, SwapLibrary.SwapConfig newConfig);\n\n  error CanBeCalledOnlyThroughDelegateCall();\n  error CannotDisconnectWithAssets();\n  error NoExtraDataAllowed();\n  error RewardsManagerRequired();\n\n  /**\n   * @dev \"Methods\" called from the vault to execute different operations on the strategy\n   *\n   * @enum harvestRewards Used to trigger the claim of rewards and the swap of them for `asset`\n   * @enum setSwapConfig Used to change the swap configuration, used for selling the rewards\n   */\n  enum ForwardMethods {\n    harvestRewards,\n    setSwapConfig\n  }\n\n  modifier onlyDelegCall() {\n    if (address(this) == __self) revert CanBeCalledOnlyThroughDelegateCall();\n    _;\n  }\n\n  /**\n   * @dev Constructor of the strategy.\n   *\n   * @param cToken_ The address of the cToken (compound pool) where funds will be supplied. The strategy asset()\n   *                will be `cToken_.baseToken()`.\n   * @param rewardsManager_ The address of the rewards manager contract that will be used to claim the rewards\n   */\n  constructor(ICompoundV3 cToken_, ICometRewards rewardsManager_) {\n    require(address(rewardsManager_) != address(0), RewardsManagerRequired());\n    _cToken = cToken_;\n    _rewardsManager = rewardsManager_;\n    _baseToken = cToken_.baseToken();\n  }\n\n  /// @inheritdoc IInvestStrategy\n  function connect(bytes memory initData) external virtual override onlyDelegCall {\n    _setSwapConfig(SwapLibrary.SwapConfig(SwapLibrary.SwapProtocol.undefined, 0, bytes(\"\")), initData);\n  }\n\n  /// @inheritdoc IInvestStrategy\n  function disconnect(bool force) external virtual override onlyDelegCall {\n    if (!force) {\n      if (_cToken.balanceOf(address(this)) != 0) revert CannotDisconnectWithAssets();\n      ICometRewards.RewardOwed memory owed = _rewardsManager.getRewardOwed(address(_cToken), address(this));\n      if (owed.token != address(0) && owed.owed != 0) revert CannotDisconnectWithAssets();\n    }\n  }\n\n  /// @inheritdoc IInvestStrategy\n  function maxWithdraw(address contract_) public view virtual override returns (uint256) {\n    if (_cToken.isWithdrawPaused()) return 0;\n    return _cToken.balanceOf(contract_);\n  }\n\n  /// @inheritdoc IInvestStrategy\n  function maxDeposit(address /*contract_*/) public view virtual override returns (uint256) {\n    if (_cToken.isSupplyPaused()) return 0;\n    return type(uint256).max;\n  }\n\n  /// @inheritdoc IInvestStrategy\n  function asset(address) public view virtual override returns (address) {\n    return _baseToken;\n  }\n\n  /// @inheritdoc IInvestStrategy\n  function totalAssets(address contract_) public view virtual override returns (uint256 assets) {\n    return _cToken.balanceOf(contract_);\n  }\n\n  /// @inheritdoc IInvestStrategy\n  function withdraw(uint256 assets) external virtual override onlyDelegCall {\n    _cToken.withdraw(_baseToken, assets);\n  }\n\n  /// @inheritdoc IInvestStrategy\n  function deposit(uint256 assets) external virtual override onlyDelegCall {\n    _supply(assets);\n  }\n\n  function _supply(uint256 assets) internal {\n    IERC20(_baseToken).approve(address(_cToken), assets);\n    _cToken.supply(_baseToken, assets);\n  }\n\n  function _harvestRewards(uint256 price) internal {\n    (address reward, , ) = _rewardsManager.rewardConfig(address(_cToken));\n    if (reward == address(0)) return;\n    _rewardsManager.claim(address(_cToken), address(this), true);\n\n    SwapLibrary.SwapConfig memory swapConfig = abi.decode(\n      StorageSlot.getBytesSlot(storageSlot).value,\n      (SwapLibrary.SwapConfig)\n    );\n\n    uint256 earned = IERC20(reward).balanceOf(address(this));\n    uint256 reinvestAmount = swapConfig.exactInput(reward, _baseToken, earned, price);\n\n    MSVBase(address(this)).depositToStrategies(reinvestAmount);\n    emit RewardsClaimed(reward, earned, reinvestAmount);\n  }\n\n  function _setSwapConfig(SwapLibrary.SwapConfig memory oldSwapConfig, bytes memory newSwapConfigAsBytes) internal {\n    SwapLibrary.SwapConfig memory swapConfig = abi.decode(newSwapConfigAsBytes, (SwapLibrary.SwapConfig));\n    swapConfig.validate();\n    if (abi.encode(swapConfig).length != newSwapConfigAsBytes.length) revert NoExtraDataAllowed();\n    emit SwapConfigChanged(oldSwapConfig, swapConfig);\n    StorageSlot.getBytesSlot(storageSlot).value = newSwapConfigAsBytes;\n  }\n\n  /// @inheritdoc IInvestStrategy\n  function forwardEntryPoint(uint8 method, bytes memory params) external onlyDelegCall returns (bytes memory) {\n    ForwardMethods checkedMethod = ForwardMethods(method);\n    if (checkedMethod == ForwardMethods.harvestRewards) {\n      // The harvestRewards receives the price as an input, expressed in wad as the units of the reward token\n      // required to by one unit of `asset()`.\n      // For example if reward token is COMP and asset is USDC, and price of COMP is $ 100,\n      // Then we should receive 0.01 (in wad).\n      // This is a permissioned call, and someone giving a wrong price can make the strategy sell the rewards at\n      // a zero price. So you should be carefull regarding who can call this method, if rewards are a relevant part\n      // of the returns\n      uint256 price = abi.decode(params, (uint256));\n      _harvestRewards(price);\n    } else if (checkedMethod == ForwardMethods.setSwapConfig) {\n      // This method receives the new swap config to be used when swapping rewards for asset().\n      // A wrong swap config, with high slippage, might affect the conversion rate of the rewards into assets\n      _setSwapConfig(_getSwapConfig(address(this)), params);\n    }\n    // Show never reach to this revert, since method should be one of the enum values but leave it in case\n    // we add new values in the enum and we forgot to add them here\n    // solhint-disable-next-line gas-custom-errors,reason-string\n    else revert();\n\n    return bytes(\"\");\n  }\n\n  function _getSwapConfig(address contract_) internal view returns (SwapLibrary.SwapConfig memory) {\n    bytes memory swapConfigAsBytes = IExposeStorage(contract_).getBytesSlot(storageSlot);\n    return abi.decode(swapConfigAsBytes, (SwapLibrary.SwapConfig));\n  }\n\n  /**\n   * @dev Returns the swap configuration of the given contract. It uses the internal function _getSwapConfig that returns the decoded swap configuration structure.\n   *\n   * @param contract_ Address of the contract configuration being requested.\n   */\n  function getSwapConfig(address contract_) public view returns (SwapLibrary.SwapConfig memory) {\n    return _getSwapConfig(contract_);\n  }\n}\n"},"contracts/strategies/ERC4626InvestStrategy.sol":{"content":"// SPDX-License-Identifier: Apache-2.0\npragma solidity ^0.8.0;\n\nimport {IERC20} from \"@openzeppelin/contracts/interfaces/IERC20.sol\";\nimport {IERC4626} from \"@openzeppelin/contracts/interfaces/IERC4626.sol\";\nimport {IInvestStrategy} from \"../interfaces/IInvestStrategy.sol\";\nimport {InvestStrategyClient} from \"../InvestStrategyClient.sol\";\n\n/**\n * @title ERC4626InvestStrategy\n *\n * @dev Strategy that invests/deinvests into a 4626 vault\n *\n * @custom:security-contact security@ensuro.co\n * @author Ensuro\n */\ncontract ERC4626InvestStrategy is IInvestStrategy {\n  address private immutable __self = address(this);\n  bytes32 public immutable storageSlot = InvestStrategyClient.makeStorageSlot(this);\n\n  IERC4626 internal immutable _vault;\n  IERC20 internal immutable _asset;\n\n  error CanBeCalledOnlyThroughDelegateCall();\n  error CannotDisconnectWithAssets();\n  error NoExtraDataAllowed();\n\n  modifier onlyDelegCall() {\n    if (address(this) == __self) revert CanBeCalledOnlyThroughDelegateCall();\n    _;\n  }\n\n  constructor(IERC4626 vault_) {\n    _vault = vault_;\n    _asset = IERC20(vault_.asset());\n  }\n\n  /// @inheritdoc IInvestStrategy\n  function connect(bytes memory initData) external virtual override onlyDelegCall {\n    if (initData.length != 0) revert NoExtraDataAllowed();\n  }\n\n  /// @inheritdoc IInvestStrategy\n  function disconnect(bool force) external virtual override onlyDelegCall {\n    // Here I check _vault.balanceOf() instead of totalAssets(). In an extreme cases, when the vault lost all its\n    // value these can differ, but on those cases I think it's safer to block the disconnection unless forced\n    if (!force && _vault.balanceOf(address(this)) != 0) revert CannotDisconnectWithAssets();\n  }\n\n  /// @inheritdoc IInvestStrategy\n  function maxWithdraw(address contract_) public view virtual override returns (uint256) {\n    return _vault.maxWithdraw(contract_);\n  }\n\n  /// @inheritdoc IInvestStrategy\n  function maxDeposit(address contract_) public view virtual override returns (uint256) {\n    return _vault.maxDeposit(contract_);\n  }\n\n  /// @inheritdoc IInvestStrategy\n  function asset(address) public view virtual override returns (address) {\n    return address(_asset);\n  }\n\n  /**\n   * @dev Returns the ERC4626 where this strategy invests the funds\n   */\n  function investVault() public view returns (IERC4626) {\n    return _vault;\n  }\n\n  /// @inheritdoc IInvestStrategy\n  function totalAssets(address contract_) public view virtual override returns (uint256 assets) {\n    return _vault.convertToAssets(_vault.balanceOf(contract_));\n  }\n\n  /// @inheritdoc IInvestStrategy\n  function withdraw(uint256 assets) external virtual override onlyDelegCall {\n    _vault.withdraw(assets, address(this), address(this));\n  }\n\n  /// @inheritdoc IInvestStrategy\n  function deposit(uint256 assets) external virtual override onlyDelegCall {\n    _asset.approve(address(_vault), assets);\n    _vault.deposit(assets, address(this));\n  }\n\n  /// @inheritdoc IInvestStrategy\n  function forwardEntryPoint(uint8, bytes memory) external view onlyDelegCall returns (bytes memory) {\n    // solhint-disable-next-line gas-custom-errors,reason-string\n    revert();\n  }\n}\n"},"contracts/strategies/IdleInvestStrategy.sol":{"content":"// SPDX-License-Identifier: Apache-2.0\npragma solidity ^0.8.0;\n\nimport {IERC20Metadata} from \"@openzeppelin/contracts/interfaces/IERC20Metadata.sol\";\nimport {IInvestStrategy} from \"../interfaces/IInvestStrategy.sol\";\nimport {InvestStrategyClient} from \"../InvestStrategyClient.sol\";\n\n/**\n * @title IdleInvestStrategy\n * @dev Strategy that keeps the funds idle, in vault's asset(), without generating any yield.\n *\n * @custom:security-contact security@ensuro.co\n * @author Ensuro\n */\ncontract IdleInvestStrategy is IInvestStrategy {\n  address internal immutable __self = address(this);\n  bytes32 public immutable storageSlot = InvestStrategyClient.makeStorageSlot(this);\n\n  IERC20Metadata internal immutable _asset;\n\n  error CanBeCalledOnlyThroughDelegateCall();\n  error CannotDisconnectWithAssets();\n  error NoExtraDataAllowed();\n\n  modifier onlyDelegCall() {\n    if (address(this) == __self) revert CanBeCalledOnlyThroughDelegateCall();\n    _;\n  }\n\n  /**\n   * @dev Constructor of the strategy\n   *\n   * @param asset_ The address of the underlying token used for accounting, depositing, and withdrawing.\n   */\n  constructor(IERC20Metadata asset_) {\n    _asset = asset_;\n  }\n\n  /// @inheritdoc IInvestStrategy\n  function connect(bytes memory initData) external virtual override onlyDelegCall {\n    if (initData.length != 0) revert NoExtraDataAllowed();\n  }\n\n  /// @inheritdoc IInvestStrategy\n  function disconnect(bool force) external virtual override onlyDelegCall {\n    if (!force && totalAssets(address(this)) != 0) revert CannotDisconnectWithAssets();\n  }\n\n  /// @inheritdoc IInvestStrategy\n  function maxWithdraw(address contract_) public view virtual override returns (uint256) {\n    return totalAssets(contract_);\n  }\n\n  /// @inheritdoc IInvestStrategy\n  function maxDeposit(address /*contract_*/) public view virtual override returns (uint256) {\n    return type(uint256).max;\n  }\n\n  /// @inheritdoc IInvestStrategy\n  function asset(address) public view virtual override returns (address) {\n    return address(_asset);\n  }\n\n  /// @inheritdoc IInvestStrategy\n  function totalAssets(address contract_) public view virtual override returns (uint256 assets) {\n    return _asset.balanceOf(contract_);\n  }\n\n  /// @inheritdoc IInvestStrategy\n  // solhint-disable-next-line no-empty-blocks\n  function withdraw(uint256 assets) public virtual override onlyDelegCall {}\n\n  /// @inheritdoc IInvestStrategy\n  // solhint-disable-next-line no-empty-blocks\n  function deposit(uint256 assets) public virtual override onlyDelegCall {}\n\n  /// @inheritdoc IInvestStrategy\n  function forwardEntryPoint(uint8, bytes memory) external view onlyDelegCall returns (bytes memory) {\n    // solhint-disable-next-line gas-custom-errors,reason-string\n    revert();\n  }\n}\n"},"contracts/strategies/MerklRewardsInvestStrategy.sol":{"content":"// SPDX-License-Identifier: Apache-2.0\npragma solidity ^0.8.0;\n\nimport {IERC20Metadata} from \"@openzeppelin/contracts/interfaces/IERC20Metadata.sol\";\nimport {ERC1967Utils} from \"@openzeppelin/contracts/proxy/ERC1967/ERC1967Utils.sol\";\nimport {Address} from \"@openzeppelin/contracts/utils/Address.sol\";\nimport {SwapLibrary} from \"@ensuro/swaplibrary/contracts/SwapLibrary.sol\";\nimport {IInvestStrategy} from \"../interfaces/IInvestStrategy.sol\";\nimport {ChainlinkSwapAssetInvestStrategy} from \"./ChainlinkSwapAssetInvestStrategy.sol\";\nimport {AggregatorV3Interface} from \"../dependencies/chainlink/AggregatorV3Interface.sol\";\nimport {MSVBase} from \"../MSVBase.sol\";\n\ninterface IMerklDistributor {\n  function claim(\n    address[] calldata users,\n    address[] calldata tokens,\n    uint256[] calldata amounts,\n    bytes32[][] calldata proofs\n  ) external;\n}\n\n/**\n * @title MerklRewardsInvestStrategy\n * @dev Strategy that collects the Merkl Rewards and accounts them. Also supports swapping them in reinjecting\n *      them into the vault.\n *\n *      Uses Chainlink oracles to price the asset\n *\n * @custom:security-contact security@ensuro.co\n * @author Ensuro\n */\ncontract MerklRewardsInvestStrategy is ChainlinkSwapAssetInvestStrategy {\n  using Address for address;\n  using SwapLibrary for SwapLibrary.SwapConfig;\n\n  IMerklDistributor public immutable distributor;\n\n  enum MerklForwardMethods {\n    setSwapConfig,\n    claimRewards,\n    claimAndSwapRewards,\n    swapRewards\n  }\n\n  event RewardsClaimed(address indexed token, uint256 amount);\n  event RewardsSwapped(address indexed token, uint256 amountIn, uint256 amountOut);\n\n  /**\n   * @dev Constructor of the strategy\n   *\n   * @param asset_ The address of the underlying token used for accounting, depositing, and withdrawing.\n   * @param investAsset_ The address of the tokens hold by the strategy. Typically a rebasing yield bearing token\n   * @param assetOracle_ The chainlink oracle to obtain the price of the asset. If address(0) the price is 1.\n   * @param investAssetOracle_ The chainlink oracle to obtain the price of the invest asset. If address(0) => 1\n   * @param investAssetOracle_ The chainlink oracle to obtain the price of the invest asset. If address(0) => 1\n   */\n  constructor(\n    IERC20Metadata asset_,\n    IERC20Metadata investAsset_,\n    AggregatorV3Interface assetOracle_,\n    AggregatorV3Interface investAssetOracle_,\n    uint256 priceTolerance_,\n    IMerklDistributor distributor_\n  ) ChainlinkSwapAssetInvestStrategy(asset_, investAsset_, assetOracle_, investAssetOracle_, priceTolerance_) {\n    distributor = distributor_;\n  }\n\n  /// @inheritdoc IInvestStrategy\n  function maxDeposit(address /*contract_*/) public view virtual override returns (uint256) {\n    // Disable deposits\n    return 0;\n  }\n\n  function _claimRewards(bytes memory params) internal {\n    uint256[] memory amounts = new uint256[](1);\n    address[] memory users = new address[](1);\n    address[] memory tokens = new address[](1);\n    bytes32[][] memory proofs = new bytes32[][](1);\n    (amounts[0], proofs[0]) = abi.decode(params, (uint256, bytes32[]));\n    users[0] = address(this);\n    tokens[0] = investAsset(address(this));\n    distributor.claim(users, tokens, amounts, proofs);\n    emit RewardsClaimed(tokens[0], amounts[0]);\n  }\n\n  function _swapRewards(uint256 amount) internal {\n    if (amount == type(uint256).max) amount = _investAsset.balanceOf(address(this));\n    uint256 amountOut = _getSwapConfigSelf().exactInput(\n      address(_investAsset),\n      address(_asset),\n      amount,\n      sellInvestAssetPrice()\n    );\n\n    // Reinjects the rewards in the vault calling `depositToStrategies` on the implementation contract\n    ERC1967Utils.getImplementation().functionDelegateCall(abi.encodeCall(MSVBase.depositToStrategies, amountOut));\n    emit RewardsSwapped(investAsset(address(this)), amount, amountOut);\n  }\n\n  /// @inheritdoc IInvestStrategy\n  function forwardEntryPoint(\n    uint8 method,\n    bytes memory params\n  ) public virtual override onlyDelegCall returns (bytes memory result) {\n    MerklForwardMethods checkedMethod = MerklForwardMethods(method);\n    if (checkedMethod == MerklForwardMethods.claimRewards) {\n      _claimRewards(params);\n    } else if (checkedMethod == MerklForwardMethods.claimAndSwapRewards) {\n      _claimRewards(params);\n      _swapRewards(type(uint256).max);\n    } else if (checkedMethod == MerklForwardMethods.swapRewards) {\n      _swapRewards(abi.decode(params, (uint256)));\n    } else return super.forwardEntryPoint(method, params);\n  }\n}\n"},"contracts/strategies/MorphoVaultV2InvestStrategy.sol":{"content":"// SPDX-License-Identifier: Apache-2.0\npragma solidity ^0.8.0;\n\nimport {IERC4626} from \"@openzeppelin/contracts/interfaces/IERC4626.sol\";\nimport {Math} from \"@openzeppelin/contracts/utils/math/Math.sol\";\nimport {IInvestStrategy} from \"../interfaces/IInvestStrategy.sol\";\nimport {ERC4626InvestStrategy} from \"./ERC4626InvestStrategy.sol\";\n\n/**\n * @title IVaultV2\n *\n * @notice Interface of VaultV2 Morpho contracts, only relevant methods.\n *\n * @dev See https://github.com/morpho-org/vault-v2/blob/main/src/interfaces/IVaultV2.sol\n */\ninterface IVaultV2 is IERC4626 {\n  function _totalAssets() external view returns (uint128);\n  function lastUpdate() external view returns (uint64);\n}\n\n/**\n * @title MorphoVaultV2InvestStrategy\n *\n * @dev Strategy that invests/deinvests into a MorphoV2 vault\n *      See https://github.com/morpho-org/vault-v2/blob/main/src/VaultV2.sol\n *\n * @custom:security-contact security@ensuro.co\n * @author Ensuro\n */\ncontract MorphoVaultV2InvestStrategy is ERC4626InvestStrategy {\n  using Math for uint256;\n  uint64 private constant CACHED_TOTAL_ASSETS_MAX_AGE = 1 days;\n\n  constructor(IERC4626 vault_) ERC4626InvestStrategy(vault_) {}\n\n  /// @inheritdoc IInvestStrategy\n  function maxWithdraw(address contract_) public view virtual override returns (uint256) {\n    return totalAssets(contract_);\n  }\n\n  /// @inheritdoc IInvestStrategy\n  function maxDeposit(address) public view virtual override returns (uint256) {\n    return type(uint256).max;\n  }\n\n  /// @inheritdoc IInvestStrategy\n  function totalAssets(address contract_) public view virtual override returns (uint256 assets) {\n    uint256 shares = _vault.balanceOf(contract_);\n    if (shares == 0) return 0;\n    IVaultV2 vaultV2 = IVaultV2(address(_vault));\n    uint64 lastUpdate = vaultV2.lastUpdate();\n    if (lastUpdate + CACHED_TOTAL_ASSETS_MAX_AGE < block.timestamp) {\n      // Vault \"cached\" _totalAssets is too old, normal implementation\n      return vaultV2.previewRedeem(shares);\n    } else {\n      uint256 totAssets = uint256(vaultV2._totalAssets());\n      uint256 totShares = vaultV2.totalSupply();\n      return totAssets.mulDiv(shares, totShares);\n    }\n  }\n}\n"},"contracts/strategies/SwapAssetInvestStrategy.sol":{"content":"// SPDX-License-Identifier: Apache-2.0\npragma solidity ^0.8.0;\n\nimport {IERC20Metadata} from \"@openzeppelin/contracts/interfaces/IERC20Metadata.sol\";\nimport {SwapLibrary} from \"@ensuro/swaplibrary/contracts/SwapLibrary.sol\";\nimport {IInvestStrategy} from \"../interfaces/IInvestStrategy.sol\";\nimport {StorageSlot} from \"@openzeppelin/contracts/utils/StorageSlot.sol\";\nimport {Math} from \"@openzeppelin/contracts/utils/math/Math.sol\";\nimport {IExposeStorage} from \"../interfaces/IExposeStorage.sol\";\nimport {InvestStrategyClient} from \"../InvestStrategyClient.sol\";\n\n/**\n * @title SwapAssetInvestStrategy\n * @dev Strategy that invests/deinvests by swapping into another token. Abstract contract, childs must define how\n *      to get the swap price.\n *\n * @custom:security-contact security@ensuro.co\n * @author Ensuro\n */\nabstract contract SwapAssetInvestStrategy is IInvestStrategy {\n  using SwapLibrary for SwapLibrary.SwapConfig;\n\n  uint256 internal constant WAD = 1e18;\n\n  address internal immutable __self = address(this);\n  bytes32 public immutable storageSlot = InvestStrategyClient.makeStorageSlot(this);\n\n  IERC20Metadata internal immutable _asset;\n  IERC20Metadata internal immutable _investAsset;\n\n  event SwapConfigChanged(SwapLibrary.SwapConfig oldConfig, SwapLibrary.SwapConfig newConfig);\n\n  error CanBeCalledOnlyThroughDelegateCall();\n  error CannotDisconnectWithAssets();\n  error NoExtraDataAllowed();\n  error InvalidAsset();\n\n  enum ForwardMethods {\n    setSwapConfig\n  }\n\n  modifier onlyDelegCall() {\n    if (address(this) == __self) revert CanBeCalledOnlyThroughDelegateCall();\n    _;\n  }\n\n  /**\n   * @dev Constructor of the strategy\n   *\n   * @param asset_ The address of the underlying token used for accounting, depositing, and withdrawing.\n   * @param investAsset_ The address of the tokens hold by the strategy. Typically a rebasing yield bearing token\n   */\n  constructor(IERC20Metadata asset_, IERC20Metadata investAsset_) {\n    require(asset_.decimals() <= 18, InvalidAsset());\n    require(investAsset_.decimals() <= 18, InvalidAsset());\n    require(asset_ != investAsset_, InvalidAsset());\n    _asset = asset_;\n    _investAsset = investAsset_;\n  }\n\n  function _toWadFactor(IERC20Metadata token) internal view returns (uint256) {\n    return 10 ** (18 - token.decimals());\n  }\n\n  /// @inheritdoc IInvestStrategy\n  function connect(bytes memory initData) external virtual override onlyDelegCall {\n    _setSwapConfig(SwapLibrary.SwapConfig(SwapLibrary.SwapProtocol.undefined, 0, bytes(\"\")), initData);\n  }\n\n  /// @inheritdoc IInvestStrategy\n  function disconnect(bool force) external virtual override onlyDelegCall {\n    if (!force && totalAssets(address(this)) != 0) revert CannotDisconnectWithAssets();\n  }\n\n  /// @inheritdoc IInvestStrategy\n  function maxWithdraw(address contract_) public view virtual override returns (uint256) {\n    return totalAssets(contract_); // TODO: check how much can be swapped without breaking the slippage\n  }\n\n  /// @inheritdoc IInvestStrategy\n  function maxDeposit(address /*contract_*/) public view virtual override returns (uint256) {\n    return type(uint256).max; // TODO: check how much can be swapped without breaking the slippage\n  }\n\n  /// @inheritdoc IInvestStrategy\n  function asset(address) public view virtual override returns (address) {\n    return address(_asset);\n  }\n\n  /**\n   * @dev Returns the address of the asset invested in the strategy.\n   */\n  function investAsset(address) public view returns (address) {\n    return address(_investAsset);\n  }\n\n  /**\n   * @dev Returns the amount of `asset()` required to acquire one unit of `investAsset()` or the amount of `asset()`\n   *      that should be received by selling a unit of `investAsset()`. It doesn't consider slippage.\n   *\n   * @return The amount is expressed in WAD (18 decimals), units: (asset/investAsset)\n   */\n  function investAssetPrice() public view virtual returns (uint256);\n\n  function sellInvestAssetPrice() internal view returns (uint256) {\n    return Math.mulDiv(WAD, WAD, investAssetPrice()); // 1/investAssetPrice() - Units: investAsset/asset\n  }\n\n  /**\n   * @dev Converts a given amount of investAssets into assets, considering the difference in decimals and the\n   *      maxSlippage accepted\n   *\n   * @param investAssets Amount in investAssets\n   * @param contract_ The address of the vault, not used in the implementation, but it might be required by\n   *                  inheriting contracts.\n   * @return assets The minimum amount in assets that will result from swapping `investAssets`\n   */\n  function _convertAssets(uint256 investAssets, address contract_) internal view virtual returns (uint256 assets) {\n    return\n      Math.mulDiv(\n        Math.mulDiv(investAssets * _toWadFactor(_investAsset), investAssetPrice(), WAD),\n        WAD - _getSwapConfig(contract_).maxSlippage,\n        WAD\n      ) / _toWadFactor(_asset);\n  }\n\n  /// @inheritdoc IInvestStrategy\n  function totalAssets(address contract_) public view virtual override returns (uint256 assets) {\n    return _convertAssets(_investAsset.balanceOf(contract_), contract_);\n  }\n\n  /// @inheritdoc IInvestStrategy\n  /**\n   * @dev Withdraws the amount of assets given from the strategy swapping _investAsset to _asset\n   *\n   * @param assets Amount of assets to be withdrawn.\n   */\n  function withdraw(uint256 assets) public virtual override onlyDelegCall {\n    if (assets == 0) return;\n    SwapLibrary.SwapConfig memory swapConfig = _getSwapConfigSelf();\n    uint256 price = sellInvestAssetPrice();\n    if (assets >= _convertAssets(_investAsset.balanceOf(address(this)), address(this))) {\n      // When the intention is to withdraw all the strategy assets, I convert all the _investAsset.\n      // This might result in more assets, but it's fine, better than leaving extra _investAsset in the strategy\n      swapConfig.exactInput(address(_investAsset), address(_asset), _investAsset.balanceOf(address(this)), price);\n    } else {\n      swapConfig.exactOutput(address(_investAsset), address(_asset), assets, price);\n    }\n  }\n\n  /// @inheritdoc IInvestStrategy\n  /**\n   * @dev Deposit the amount of assets given into the strategy by swapping _asset to _investAsset\n   *\n   * @param assets Amount of assets to be deposited.\n   */\n  function deposit(uint256 assets) public virtual override onlyDelegCall {\n    if (assets == 0) return;\n    // swapLibrary expects a price expressed in tokenOut/tokenIn - OK since investAssetPrice() is in _asset/_investAsset\n    _getSwapConfigSelf().exactInput(address(_asset), address(_investAsset), assets, investAssetPrice());\n  }\n\n  function _setSwapConfig(SwapLibrary.SwapConfig memory oldSwapConfig, bytes memory newSwapConfigAsBytes) internal {\n    SwapLibrary.SwapConfig memory swapConfig = abi.decode(newSwapConfigAsBytes, (SwapLibrary.SwapConfig));\n    swapConfig.validate();\n    if (abi.encode(swapConfig).length != newSwapConfigAsBytes.length) revert NoExtraDataAllowed();\n    emit SwapConfigChanged(oldSwapConfig, swapConfig);\n    StorageSlot.getBytesSlot(storageSlot).value = newSwapConfigAsBytes;\n  }\n\n  /// @inheritdoc IInvestStrategy\n  function forwardEntryPoint(uint8 method, bytes memory params) public virtual onlyDelegCall returns (bytes memory) {\n    ForwardMethods checkedMethod = ForwardMethods(method);\n    if (checkedMethod == ForwardMethods.setSwapConfig) {\n      // The change of the swap config, that involves both the DEX to use and the maxSlippage is a critical operation\n      // that should be access controlled, probably imposing timelocks, because it can produce a conversion of the\n      // assets at a non-fair price\n      _setSwapConfig(_getSwapConfig(address(this)), params);\n    }\n    // Should never reach to this revert, since method should be one of the enum values but leave it in case\n    // we add new values in the enum and we forgot to add them here\n    // solhint-disable-next-line gas-custom-errors,reason-string\n    else revert();\n\n    return bytes(\"\");\n  }\n\n  function _getSwapConfig(address contract_) internal view returns (SwapLibrary.SwapConfig memory) {\n    bytes memory swapConfigAsBytes = IExposeStorage(contract_).getBytesSlot(storageSlot);\n    return abi.decode(swapConfigAsBytes, (SwapLibrary.SwapConfig));\n  }\n\n  function _getSwapConfigSelf() internal view returns (SwapLibrary.SwapConfig memory) {\n    return abi.decode(StorageSlot.getBytesSlot(storageSlot).value, (SwapLibrary.SwapConfig));\n  }\n\n  /**\n   * @dev Returns the swap configuration of the given contract.\n   *\n   * @param contract_ Address of the vault contract\n   */\n  function getSwapConfig(address contract_) public view returns (SwapLibrary.SwapConfig memory) {\n    return _getSwapConfig(contract_);\n  }\n}\n"},"contracts/strategies/SwapStableAaveV3InvestStrategy.sol":{"content":"// SPDX-License-Identifier: Apache-2.0\npragma solidity ^0.8.0;\n\nimport {IPool} from \"../dependencies/aave-v3/IPool.sol\";\nimport {DataTypes} from \"../dependencies/aave-v3/DataTypes.sol\";\nimport {ReserveConfiguration} from \"../dependencies/aave-v3/ReserveConfiguration.sol\";\nimport {IERC20Metadata} from \"@openzeppelin/contracts/interfaces/IERC20Metadata.sol\";\nimport {SwapStableInvestStrategy} from \"./SwapStableInvestStrategy.sol\";\n\n/**\n * @title SwapStableAaveV3InvestStrategy\n * @dev Strategy that invests/deinvests by swapping into another token that has a stable price compared to the asset.\n *      And then invests the resulting token in AAVE. Useful when equivalent assets like Bridged USDC and Native USDC\n *      have different returns on AAVE.\n *\n * @custom:security-contact security@ensuro.co\n * @author Ensuro\n */\ncontract SwapStableAaveV3InvestStrategy is SwapStableInvestStrategy {\n  using ReserveConfiguration for DataTypes.ReserveConfigurationMap;\n\n  event ResupplyFailed(uint256 assets);\n\n  IPool internal immutable _aave;\n  /**\n   * @dev Constructor of the strategy\n   *\n   * @param asset_ The address of the underlying token used for accounting, depositing, and withdrawing.\n   * @param investAsset_ The address of the tokens that are later supplied to AAVE\n   * @param price_ Approximate amount of units of _asset required to acquire a unit of _investAsset\n   * @param aave_ Address of AAVE Pool contract\n   */\n  constructor(\n    IERC20Metadata asset_,\n    IERC20Metadata investAsset_,\n    uint256 price_,\n    IPool aave_\n  ) SwapStableInvestStrategy(asset_, investAsset_, price_) {\n    _aave = aave_;\n  }\n\n  function _reserveData() internal view returns (DataTypes.ReserveData memory) {\n    return _aave.getReserveData(address(_investAsset));\n  }\n\n  function disconnect(bool force) external virtual override onlyDelegCall {\n    IERC20Metadata aToken = IERC20Metadata(_reserveData().aTokenAddress);\n    if (!force && aToken.balanceOf(address(this)) != 0) revert CannotDisconnectWithAssets();\n  }\n\n  function maxWithdraw(address contract_) public view virtual override returns (uint256) {\n    DataTypes.ReserveData memory reserve = _reserveData();\n    if (!reserve.configuration.getActive() || reserve.configuration.getPaused()) return 0;\n    return totalAssets(contract_); // TODO: check how much can be swapped without breaking the slippage\n  }\n\n  function maxDeposit(address /*contract_*/) public view virtual override returns (uint256) {\n    DataTypes.ReserveData memory reserve = _reserveData();\n    if (!reserve.configuration.getActive() || reserve.configuration.getPaused() || reserve.configuration.getFrozen())\n      return 0;\n    // Supply cap ignored\n    return type(uint256).max;\n  }\n\n  function totalAssets(address contract_) public view virtual override returns (uint256 assets) {\n    return _convertAssets(IERC20Metadata(_reserveData().aTokenAddress).balanceOf(contract_), contract_);\n  }\n\n  function withdraw(uint256 assets) public virtual override onlyDelegCall {\n    if (assets == 0) return;\n    // Withdraw everything then deposit the remainder\n    _aave.withdraw(address(_investAsset), type(uint256).max, address(this));\n    // This call will convert investAssets to assets\n    super.withdraw(assets);\n    // Supply the remaining balance again to AAVE - Ignore errors to avoid reverting in case this deposit fails\n    // In the worst case we will have some funds not invested\n    _supply(_investAsset.balanceOf(address(this)), true);\n  }\n\n  function deposit(uint256 assets) public virtual override onlyDelegCall {\n    super.deposit(assets); // Converts assets to investAssets\n    _supply(_investAsset.balanceOf(address(this)), false);\n  }\n\n  function _supply(uint256 assets, bool failSafe) internal {\n    if (assets == 0) return;\n    _investAsset.approve(address(_aave), assets);\n    if (failSafe) {\n      try _aave.supply(address(_investAsset), assets, address(this), 0) {\n        return;\n      } catch {\n        emit ResupplyFailed(assets);\n      }\n    } else _aave.supply(address(_investAsset), assets, address(this), 0);\n  }\n}\n"},"contracts/strategies/SwapStableInvestStrategy.sol":{"content":"// SPDX-License-Identifier: Apache-2.0\npragma solidity ^0.8.0;\n\nimport {IERC20Metadata} from \"@openzeppelin/contracts/interfaces/IERC20Metadata.sol\";\nimport {SwapAssetInvestStrategy} from \"./SwapAssetInvestStrategy.sol\";\n\n/**\n * @title SwapStableInvestStrategy\n * @dev Strategy that invests/deinvests by swapping into another token that has a stable price compared to the asset.\n *      Useful for yield bearing rebasing tokens like Lido o USDM\n *\n * @custom:security-contact security@ensuro.co\n * @author Ensuro\n */\ncontract SwapStableInvestStrategy is SwapAssetInvestStrategy {\n  uint256 internal immutable _price; // One unit of _investAsset in _asset  (in Wad), units: (asset/investAsset)\n\n  /**\n   * @dev Constructor of the strategy\n   *\n   * @param asset_ The address of the underlying token used for accounting, depositing, and withdrawing.\n   * @param investAsset_ The address of the tokens hold by the strategy. Typically a rebasing yield bearing token\n   * @param price_ Approximate amount of units of _asset required to acquire a unit of _investAsset\n   */\n  constructor(\n    IERC20Metadata asset_,\n    IERC20Metadata investAsset_,\n    uint256 price_\n  ) SwapAssetInvestStrategy(asset_, investAsset_) {\n    _price = price_;\n  }\n\n  function investAssetPrice() public view virtual override returns (uint256) {\n    return _price;\n  }\n}\n"},"solidity-bytes-utils/contracts/BytesLib.sol":{"content":"// SPDX-License-Identifier: Unlicense\n/*\n * @title Solidity Bytes Arrays Utils\n * @author Gonçalo Sá <goncalo.sa@consensys.net>\n *\n * @dev Bytes tightly packed arrays utility library for ethereum contracts written in Solidity.\n *      The library lets you concatenate, slice and type cast bytes arrays both in memory and storage.\n */\npragma solidity >=0.8.0 <0.9.0;\n\n\nlibrary BytesLib {\n    function concat(\n        bytes memory _preBytes,\n        bytes memory _postBytes\n    )\n        internal\n        pure\n        returns (bytes memory)\n    {\n        bytes memory tempBytes;\n\n        assembly {\n            // Get a location of some free memory and store it in tempBytes as\n            // Solidity does for memory variables.\n            tempBytes := mload(0x40)\n\n            // Store the length of the first bytes array at the beginning of\n            // the memory for tempBytes.\n            let length := mload(_preBytes)\n            mstore(tempBytes, length)\n\n            // Maintain a memory counter for the current write location in the\n            // temp bytes array by adding the 32 bytes for the array length to\n            // the starting location.\n            let mc := add(tempBytes, 0x20)\n            // Stop copying when the memory counter reaches the length of the\n            // first bytes array.\n            let end := add(mc, length)\n\n            for {\n                // Initialize a copy counter to the start of the _preBytes data,\n                // 32 bytes into its memory.\n                let cc := add(_preBytes, 0x20)\n            } lt(mc, end) {\n                // Increase both counters by 32 bytes each iteration.\n                mc := add(mc, 0x20)\n                cc := add(cc, 0x20)\n            } {\n                // Write the _preBytes data into the tempBytes memory 32 bytes\n                // at a time.\n                mstore(mc, mload(cc))\n            }\n\n            // Add the length of _postBytes to the current length of tempBytes\n            // and store it as the new length in the first 32 bytes of the\n            // tempBytes memory.\n            length := mload(_postBytes)\n            mstore(tempBytes, add(length, mload(tempBytes)))\n\n            // Move the memory counter back from a multiple of 0x20 to the\n            // actual end of the _preBytes data.\n            mc := end\n            // Stop copying when the memory counter reaches the new combined\n            // length of the arrays.\n            end := add(mc, length)\n\n            for {\n                let cc := add(_postBytes, 0x20)\n            } lt(mc, end) {\n                mc := add(mc, 0x20)\n                cc := add(cc, 0x20)\n            } {\n                mstore(mc, mload(cc))\n            }\n\n            // Update the free-memory pointer by padding our last write location\n            // to 32 bytes: add 31 bytes to the end of tempBytes to move to the\n            // next 32 byte block, then round down to the nearest multiple of\n            // 32. If the sum of the length of the two arrays is zero then add\n            // one before rounding down to leave a blank 32 bytes (the length block with 0).\n            mstore(0x40, and(\n              add(add(end, iszero(add(length, mload(_preBytes)))), 31),\n              not(31) // Round down to the nearest 32 bytes.\n            ))\n        }\n\n        return tempBytes;\n    }\n\n    function concatStorage(bytes storage _preBytes, bytes memory _postBytes) internal {\n        assembly {\n            // Read the first 32 bytes of _preBytes storage, which is the length\n            // of the array. (We don't need to use the offset into the slot\n            // because arrays use the entire slot.)\n            let fslot := sload(_preBytes.slot)\n            // Arrays of 31 bytes or less have an even value in their slot,\n            // while longer arrays have an odd value. The actual length is\n            // the slot divided by two for odd values, and the lowest order\n            // byte divided by two for even values.\n            // If the slot is even, bitwise and the slot with 255 and divide by\n            // two to get the length. If the slot is odd, bitwise and the slot\n            // with -1 and divide by two.\n            let slength := div(and(fslot, sub(mul(0x100, iszero(and(fslot, 1))), 1)), 2)\n            let mlength := mload(_postBytes)\n            let newlength := add(slength, mlength)\n            // slength can contain both the length and contents of the array\n            // if length < 32 bytes so let's prepare for that\n            // v. http://solidity.readthedocs.io/en/latest/miscellaneous.html#layout-of-state-variables-in-storage\n            switch add(lt(slength, 32), lt(newlength, 32))\n            case 2 {\n                // Since the new array still fits in the slot, we just need to\n                // update the contents of the slot.\n                // uint256(bytes_storage) = uint256(bytes_storage) + uint256(bytes_memory) + new_length\n                sstore(\n                    _preBytes.slot,\n                    // all the modifications to the slot are inside this\n                    // next block\n                    add(\n                        // we can just add to the slot contents because the\n                        // bytes we want to change are the LSBs\n                        fslot,\n                        add(\n                            mul(\n                                div(\n                                    // load the bytes from memory\n                                    mload(add(_postBytes, 0x20)),\n                                    // zero all bytes to the right\n                                    exp(0x100, sub(32, mlength))\n                                ),\n                                // and now shift left the number of bytes to\n                                // leave space for the length in the slot\n                                exp(0x100, sub(32, newlength))\n                            ),\n                            // increase length by the double of the memory\n                            // bytes length\n                            mul(mlength, 2)\n                        )\n                    )\n                )\n            }\n            case 1 {\n                // The stored value fits in the slot, but the combined value\n                // will exceed it.\n                // get the keccak hash to get the contents of the array\n                mstore(0x0, _preBytes.slot)\n                let sc := add(keccak256(0x0, 0x20), div(slength, 32))\n\n                // save new length\n                sstore(_preBytes.slot, add(mul(newlength, 2), 1))\n\n                // The contents of the _postBytes array start 32 bytes into\n                // the structure. Our first read should obtain the `submod`\n                // bytes that can fit into the unused space in the last word\n                // of the stored array. To get this, we read 32 bytes starting\n                // from `submod`, so the data we read overlaps with the array\n                // contents by `submod` bytes. Masking the lowest-order\n                // `submod` bytes allows us to add that value directly to the\n                // stored value.\n\n                let submod := sub(32, slength)\n                let mc := add(_postBytes, submod)\n                let end := add(_postBytes, mlength)\n                let mask := sub(exp(0x100, submod), 1)\n\n                sstore(\n                    sc,\n                    add(\n                        and(\n                            fslot,\n                            0xffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00\n                        ),\n                        and(mload(mc), mask)\n                    )\n                )\n\n                for {\n                    mc := add(mc, 0x20)\n                    sc := add(sc, 1)\n                } lt(mc, end) {\n                    sc := add(sc, 1)\n                    mc := add(mc, 0x20)\n                } {\n                    sstore(sc, mload(mc))\n                }\n\n                mask := exp(0x100, sub(mc, end))\n\n                sstore(sc, mul(div(mload(mc), mask), mask))\n            }\n            default {\n                // get the keccak hash to get the contents of the array\n                mstore(0x0, _preBytes.slot)\n                // Start copying to the last used word of the stored array.\n                let sc := add(keccak256(0x0, 0x20), div(slength, 32))\n\n                // save new length\n                sstore(_preBytes.slot, add(mul(newlength, 2), 1))\n\n                // Copy over the first `submod` bytes of the new data as in\n                // case 1 above.\n                let slengthmod := mod(slength, 32)\n                let mlengthmod := mod(mlength, 32)\n                let submod := sub(32, slengthmod)\n                let mc := add(_postBytes, submod)\n                let end := add(_postBytes, mlength)\n                let mask := sub(exp(0x100, submod), 1)\n\n                sstore(sc, add(sload(sc), and(mload(mc), mask)))\n\n                for {\n                    sc := add(sc, 1)\n                    mc := add(mc, 0x20)\n                } lt(mc, end) {\n                    sc := add(sc, 1)\n                    mc := add(mc, 0x20)\n                } {\n                    sstore(sc, mload(mc))\n                }\n\n                mask := exp(0x100, sub(mc, end))\n\n                sstore(sc, mul(div(mload(mc), mask), mask))\n            }\n        }\n    }\n\n    function slice(\n        bytes memory _bytes,\n        uint256 _start,\n        uint256 _length\n    )\n        internal\n        pure\n        returns (bytes memory)\n    {\n        // We're using the unchecked block below because otherwise execution ends \n        // with the native overflow error code.\n        unchecked {\n            require(_length + 31 >= _length, \"slice_overflow\");\n        }\n        require(_bytes.length >= _start + _length, \"slice_outOfBounds\");\n\n        bytes memory tempBytes;\n\n        assembly {\n            switch iszero(_length)\n            case 0 {\n                // Get a location of some free memory and store it in tempBytes as\n                // Solidity does for memory variables.\n                tempBytes := mload(0x40)\n\n                // The first word of the slice result is potentially a partial\n                // word read from the original array. To read it, we calculate\n                // the length of that partial word and start copying that many\n                // bytes into the array. The first word we copy will start with\n                // data we don't care about, but the last `lengthmod` bytes will\n                // land at the beginning of the contents of the new array. When\n                // we're done copying, we overwrite the full first word with\n                // the actual length of the slice.\n                let lengthmod := and(_length, 31)\n\n                // The multiplication in the next line is necessary\n                // because when slicing multiples of 32 bytes (lengthmod == 0)\n                // the following copy loop was copying the origin's length\n                // and then ending prematurely not copying everything it should.\n                let mc := add(add(tempBytes, lengthmod), mul(0x20, iszero(lengthmod)))\n                let end := add(mc, _length)\n\n                for {\n                    // The multiplication in the next line has the same exact purpose\n                    // as the one above.\n                    let cc := add(add(add(_bytes, lengthmod), mul(0x20, iszero(lengthmod))), _start)\n                } lt(mc, end) {\n                    mc := add(mc, 0x20)\n                    cc := add(cc, 0x20)\n                } {\n                    mstore(mc, mload(cc))\n                }\n\n                mstore(tempBytes, _length)\n\n                //update free-memory pointer\n                //allocating the array padded to 32 bytes like the compiler does now\n                mstore(0x40, and(add(mc, 31), not(31)))\n            }\n            //if we want a zero-length slice let's just return a zero-length array\n            default {\n                tempBytes := mload(0x40)\n                //zero out the 32 bytes slice we are about to return\n                //we need to do it because Solidity does not garbage collect\n                mstore(tempBytes, 0)\n\n                mstore(0x40, add(tempBytes, 0x20))\n            }\n        }\n\n        return tempBytes;\n    }\n\n    function toAddress(bytes memory _bytes, uint256 _start) internal pure returns (address) {\n        require(_bytes.length >= _start + 20, \"toAddress_outOfBounds\");\n        address tempAddress;\n\n        assembly {\n            tempAddress := div(mload(add(add(_bytes, 0x20), _start)), 0x1000000000000000000000000)\n        }\n\n        return tempAddress;\n    }\n\n    function toUint8(bytes memory _bytes, uint256 _start) internal pure returns (uint8) {\n        require(_bytes.length >= _start + 1 , \"toUint8_outOfBounds\");\n        uint8 tempUint;\n\n        assembly {\n            tempUint := mload(add(add(_bytes, 0x1), _start))\n        }\n\n        return tempUint;\n    }\n\n    function toUint16(bytes memory _bytes, uint256 _start) internal pure returns (uint16) {\n        require(_bytes.length >= _start + 2, \"toUint16_outOfBounds\");\n        uint16 tempUint;\n\n        assembly {\n            tempUint := mload(add(add(_bytes, 0x2), _start))\n        }\n\n        return tempUint;\n    }\n\n    function toUint32(bytes memory _bytes, uint256 _start) internal pure returns (uint32) {\n        require(_bytes.length >= _start + 4, \"toUint32_outOfBounds\");\n        uint32 tempUint;\n\n        assembly {\n            tempUint := mload(add(add(_bytes, 0x4), _start))\n        }\n\n        return tempUint;\n    }\n\n    function toUint64(bytes memory _bytes, uint256 _start) internal pure returns (uint64) {\n        require(_bytes.length >= _start + 8, \"toUint64_outOfBounds\");\n        uint64 tempUint;\n\n        assembly {\n            tempUint := mload(add(add(_bytes, 0x8), _start))\n        }\n\n        return tempUint;\n    }\n\n    function toUint96(bytes memory _bytes, uint256 _start) internal pure returns (uint96) {\n        require(_bytes.length >= _start + 12, \"toUint96_outOfBounds\");\n        uint96 tempUint;\n\n        assembly {\n            tempUint := mload(add(add(_bytes, 0xc), _start))\n        }\n\n        return tempUint;\n    }\n\n    function toUint128(bytes memory _bytes, uint256 _start) internal pure returns (uint128) {\n        require(_bytes.length >= _start + 16, \"toUint128_outOfBounds\");\n        uint128 tempUint;\n\n        assembly {\n            tempUint := mload(add(add(_bytes, 0x10), _start))\n        }\n\n        return tempUint;\n    }\n\n    function toUint256(bytes memory _bytes, uint256 _start) internal pure returns (uint256) {\n        require(_bytes.length >= _start + 32, \"toUint256_outOfBounds\");\n        uint256 tempUint;\n\n        assembly {\n            tempUint := mload(add(add(_bytes, 0x20), _start))\n        }\n\n        return tempUint;\n    }\n\n    function toBytes32(bytes memory _bytes, uint256 _start) internal pure returns (bytes32) {\n        require(_bytes.length >= _start + 32, \"toBytes32_outOfBounds\");\n        bytes32 tempBytes32;\n\n        assembly {\n            tempBytes32 := mload(add(add(_bytes, 0x20), _start))\n        }\n\n        return tempBytes32;\n    }\n\n    function equal(bytes memory _preBytes, bytes memory _postBytes) internal pure returns (bool) {\n        bool success = true;\n\n        assembly {\n            let length := mload(_preBytes)\n\n            // if lengths don't match the arrays are not equal\n            switch eq(length, mload(_postBytes))\n            case 1 {\n                // cb is a circuit breaker in the for loop since there's\n                //  no said feature for inline assembly loops\n                // cb = 1 - don't breaker\n                // cb = 0 - break\n                let cb := 1\n\n                let mc := add(_preBytes, 0x20)\n                let end := add(mc, length)\n\n                for {\n                    let cc := add(_postBytes, 0x20)\n                // the next line is the loop condition:\n                // while(uint256(mc < end) + cb == 2)\n                } eq(add(lt(mc, end), cb), 2) {\n                    mc := add(mc, 0x20)\n                    cc := add(cc, 0x20)\n                } {\n                    // if any of these checks fails then arrays are not equal\n                    if iszero(eq(mload(mc), mload(cc))) {\n                        // unsuccess:\n                        success := 0\n                        cb := 0\n                    }\n                }\n            }\n            default {\n                // unsuccess:\n                success := 0\n            }\n        }\n\n        return success;\n    }\n\n    function equalStorage(\n        bytes storage _preBytes,\n        bytes memory _postBytes\n    )\n        internal\n        view\n        returns (bool)\n    {\n        bool success = true;\n\n        assembly {\n            // we know _preBytes_offset is 0\n            let fslot := sload(_preBytes.slot)\n            // Decode the length of the stored array like in concatStorage().\n            let slength := div(and(fslot, sub(mul(0x100, iszero(and(fslot, 1))), 1)), 2)\n            let mlength := mload(_postBytes)\n\n            // if lengths don't match the arrays are not equal\n            switch eq(slength, mlength)\n            case 1 {\n                // slength can contain both the length and contents of the array\n                // if length < 32 bytes so let's prepare for that\n                // v. http://solidity.readthedocs.io/en/latest/miscellaneous.html#layout-of-state-variables-in-storage\n                if iszero(iszero(slength)) {\n                    switch lt(slength, 32)\n                    case 1 {\n                        // blank the last byte which is the length\n                        fslot := mul(div(fslot, 0x100), 0x100)\n\n                        if iszero(eq(fslot, mload(add(_postBytes, 0x20)))) {\n                            // unsuccess:\n                            success := 0\n                        }\n                    }\n                    default {\n                        // cb is a circuit breaker in the for loop since there's\n                        //  no said feature for inline assembly loops\n                        // cb = 1 - don't breaker\n                        // cb = 0 - break\n                        let cb := 1\n\n                        // get the keccak hash to get the contents of the array\n                        mstore(0x0, _preBytes.slot)\n                        let sc := keccak256(0x0, 0x20)\n\n                        let mc := add(_postBytes, 0x20)\n                        let end := add(mc, mlength)\n\n                        // the next line is the loop condition:\n                        // while(uint256(mc < end) + cb == 2)\n                        for {} eq(add(lt(mc, end), cb), 2) {\n                            sc := add(sc, 1)\n                            mc := add(mc, 0x20)\n                        } {\n                            if iszero(eq(sload(sc), mload(mc))) {\n                                // unsuccess:\n                                success := 0\n                                cb := 0\n                            }\n                        }\n                    }\n                }\n            }\n            default {\n                // unsuccess:\n                success := 0\n            }\n        }\n\n        return success;\n    }\n}\n"}},"settings":{"optimizer":{"enabled":true,"runs":200},"evmVersion":"prague","outputSelection":{"*":{"*":["abi","evm.bytecode","evm.deployedBytecode","evm.methodIdentifiers","metadata","storageLayout"],"":["ast"]}}}},"output":{"errors":[{"component":"general","errorCode":"3628","formattedMessage":"Warning: This contract has a payable fallback function, but no receive ether function. Consider adding a receive ether function.\n  --> @ensuro/access-managed-proxy/contracts/AccessManagedProxyBase.sol:25:1:\n   |\n25 | abstract contract AccessManagedProxyBase is ERC1967Proxy, IAccessManagedProxy {\n   | ^ (Relevant source part starts here and spans across multiple lines).\nNote: The payable fallback function is defined here.\n  --> @openzeppelin/contracts/proxy/Proxy.sol:66:5:\n   |\n66 |     fallback() external payable virtual {\n   |     ^ (Relevant source part starts here and spans across multiple lines).\n\n","message":"This contract has a payable fallback function, but no receive ether function. Consider adding a receive ether function.","secondarySourceLocations":[{"end":2694,"file":"@openzeppelin/contracts/proxy/Proxy.sol","message":"The payable fallback function is defined here.","start":2630}],"severity":"warning","sourceLocation":{"end":3653,"file":"@ensuro/access-managed-proxy/contracts/AccessManagedProxyBase.sol","start":1098},"type":"Warning"},{"component":"general","errorCode":"3628","formattedMessage":"Warning: This contract has a payable fallback function, but no receive ether function. Consider adding a receive ether function.\n  --> @ensuro/access-managed-proxy/contracts/AccessManagedProxy.sol:29:1:\n   |\n29 | contract AccessManagedProxy is AccessManagedProxyBase {\n   | ^ (Relevant source part starts here and spans across multiple lines).\nNote: The payable fallback function is defined here.\n  --> @openzeppelin/contracts/proxy/Proxy.sol:66:5:\n   |\n66 |     fallback() external payable virtual {\n   |     ^ (Relevant source part starts here and spans across multiple lines).\n\n","message":"This contract has a payable fallback function, but no receive ether function. Consider adding a receive ether function.","secondarySourceLocations":[{"end":2694,"file":"@openzeppelin/contracts/proxy/Proxy.sol","message":"The payable fallback function is defined here.","start":2630}],"severity":"warning","sourceLocation":{"end":3544,"file":"@ensuro/access-managed-proxy/contracts/AccessManagedProxy.sol","start":1448},"type":"Warning"}],"sources":{"@ensuro/access-managed-proxy/contracts/AMPUtils.sol":{"ast":{"absolutePath":"@ensuro/access-managed-proxy/contracts/AMPUtils.sol","exportedSymbols":{"AMPUtils":[240],"IAccessManagedProxy":[488],"IAccessManager":[6842]},"id":241,"license":"Apache-2.0","nodeType":"SourceUnit","nodes":[{"id":1,"literals":["solidity","^","0.8",".0"],"nodeType":"PragmaDirective","src":"39:23:0"},{"absolutePath":"@openzeppelin/contracts/access/manager/IAccessManager.sol","file":"@openzeppelin/contracts/access/manager/IAccessManager.sol","id":3,"nameLocation":"-1:-1:-1","nodeType":"ImportDirective","scope":241,"sourceUnit":6843,"src":"64:89:0","symbolAliases":[{"foreign":{"id":2,"name":"IAccessManager","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6842,"src":"72:14:0","typeDescriptions":{}},"nameLocation":"-1:-1:-1"}],"unitAlias":""},{"absolutePath":"@ensuro/access-managed-proxy/contracts/interfaces/IAccessManagedProxy.sol","file":"./interfaces/IAccessManagedProxy.sol","id":5,"nameLocation":"-1:-1:-1","nodeType":"ImportDirective","scope":241,"sourceUnit":489,"src":"154:73:0","symbolAliases":[{"foreign":{"id":4,"name":"IAccessManagedProxy","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":488,"src":"162:19:0","typeDescriptions":{}},"nameLocation":"-1:-1:-1"}],"unitAlias":""},{"abstract":false,"baseContracts":[],"canonicalName":"AMPUtils","contractDependencies":[],"contractKind":"library","documentation":{"id":6,"nodeType":"StructuredDocumentation","src":"229:164:0","text":" @title AMPUtils\n @dev Utility functions for doing custom access control rules, for contracts deployed\n      with AccessManagedProxy\n @author Ensuro"},"fullyImplemented":true,"id":240,"linearizedBaseContracts":[240],"name":"AMPUtils","nameLocation":"402:8:0","nodeType":"ContractDefinition","nodes":[{"errorSelector":"068ca9d8","id":10,"name":"AccessManagedUnauthorized","nameLocation":"459:25:0","nodeType":"ErrorDefinition","parameters":{"id":9,"nodeType":"ParameterList","parameters":[{"constant":false,"id":8,"mutability":"mutable","name":"caller","nameLocation":"493:6:0","nodeType":"VariableDeclaration","scope":10,"src":"485:14:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":7,"name":"address","nodeType":"ElementaryTypeName","src":"485:7:0","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"484:16:0"},"src":"453:48:0"},{"canonicalName":"AMPUtils.AccessManagedProxyStorage","id":21,"members":[{"constant":false,"id":13,"mutability":"mutable","name":"accessManager","nameLocation":"559:13:0","nodeType":"VariableDeclaration","scope":21,"src":"544:28:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_contract$_IAccessManager_$6842","typeString":"contract IAccessManager"},"typeName":{"id":12,"nodeType":"UserDefinedTypeName","pathNode":{"id":11,"name":"IAccessManager","nameLocations":["544:14:0"],"nodeType":"IdentifierPath","referencedDeclaration":6842,"src":"544:14:0"},"referencedDeclaration":6842,"src":"544:14:0","typeDescriptions":{"typeIdentifier":"t_contract$_IAccessManager_$6842","typeString":"contract IAccessManager"}},"visibility":"internal"},{"constant":false,"id":16,"mutability":"mutable","name":"passThruMethods","nameLocation":"587:15:0","nodeType":"VariableDeclaration","scope":21,"src":"578:24:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_array$_t_bytes4_$dyn_storage_ptr","typeString":"bytes4[]"},"typeName":{"baseType":{"id":14,"name":"bytes4","nodeType":"ElementaryTypeName","src":"578:6:0","typeDescriptions":{"typeIdentifier":"t_bytes4","typeString":"bytes4"}},"id":15,"nodeType":"ArrayTypeName","src":"578:8:0","typeDescriptions":{"typeIdentifier":"t_array$_t_bytes4_$dyn_storage_ptr","typeString":"bytes4[]"}},"visibility":"internal"},{"constant":false,"id":20,"mutability":"mutable","name":"skipAc","nameLocation":"666:6:0","nodeType":"VariableDeclaration","scope":21,"src":"642:30:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_mapping$_t_bytes4_$_t_bool_$","typeString":"mapping(bytes4 => bool)"},"typeName":{"id":19,"keyName":"","keyNameLocation":"-1:-1:-1","keyType":{"id":17,"name":"bytes4","nodeType":"ElementaryTypeName","src":"650:6:0","typeDescriptions":{"typeIdentifier":"t_bytes4","typeString":"bytes4"}},"nodeType":"Mapping","src":"642:23:0","typeDescriptions":{"typeIdentifier":"t_mapping$_t_bytes4_$_t_bool_$","typeString":"mapping(bytes4 => bool)"},"valueName":"","valueNameLocation":"-1:-1:-1","valueType":{"id":18,"name":"bool","nodeType":"ElementaryTypeName","src":"660:4:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}}},"visibility":"internal"}],"name":"AccessManagedProxyStorage","nameLocation":"512:25:0","nodeType":"StructDefinition","scope":240,"src":"505:210:0","visibility":"public"},{"constant":true,"documentation":{"id":22,"nodeType":"StructuredDocumentation","src":"719:232:0","text":" @notice Storage slot with the address of the current access mananger.\n @dev Computed as: `keccak256(\n    abi.encode(uint256(keccak256(\"ensuro.storage.AccessManagedProxy\")) - 1)\n ) & ~bytes32(uint256(0xff))"},"id":25,"mutability":"constant","name":"AccessManagedProxyStorageLocation","nameLocation":"1032:33:0","nodeType":"VariableDeclaration","scope":240,"src":"1006:132:0","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":23,"name":"bytes32","nodeType":"ElementaryTypeName","src":"1006:7:0","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"value":{"hexValue":"307837383763396437616339313064363432353262636561303561636435623761663664353936343465303435316138626235363734353837353535303439633030","id":24,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"1072:66:0","typeDescriptions":{"typeIdentifier":"t_rational_54497717750489122717228104159160360351638605248007149183892210957931124136960_by_1","typeString":"int_const 5449...(69 digits omitted)...6960"},"value":"0x787c9d7ac910d64252bcea05acd5b7af6d59644e0451a8bb5674587555049c00"},"visibility":"internal"},{"body":{"id":32,"nodeType":"Block","src":"1243:128:0","statements":[{"AST":{"nativeSrc":"1310:57:0","nodeType":"YulBlock","src":"1310:57:0","statements":[{"nativeSrc":"1318:43:0","nodeType":"YulAssignment","src":"1318:43:0","value":{"name":"AccessManagedProxyStorageLocation","nativeSrc":"1328:33:0","nodeType":"YulIdentifier","src":"1328:33:0"},"variableNames":[{"name":"$.slot","nativeSrc":"1318:6:0","nodeType":"YulIdentifier","src":"1318:6:0"}]}]},"evmVersion":"prague","externalReferences":[{"declaration":29,"isOffset":false,"isSlot":true,"src":"1318:6:0","suffix":"slot","valueSize":1},{"declaration":25,"isOffset":false,"isSlot":false,"src":"1328:33:0","valueSize":1}],"id":31,"nodeType":"InlineAssembly","src":"1301:66:0"}]},"id":33,"implemented":true,"kind":"function","modifiers":[],"name":"getAccessManagedProxyStorage","nameLocation":"1152:28:0","nodeType":"FunctionDefinition","parameters":{"id":26,"nodeType":"ParameterList","parameters":[],"src":"1180:2:0"},"returnParameters":{"id":30,"nodeType":"ParameterList","parameters":[{"constant":false,"id":29,"mutability":"mutable","name":"$","nameLocation":"1240:1:0","nodeType":"VariableDeclaration","scope":33,"src":"1206:35:0","stateVariable":false,"storageLocation":"storage","typeDescriptions":{"typeIdentifier":"t_struct$_AccessManagedProxyStorage_$21_storage_ptr","typeString":"struct AMPUtils.AccessManagedProxyStorage"},"typeName":{"id":28,"nodeType":"UserDefinedTypeName","pathNode":{"id":27,"name":"AccessManagedProxyStorage","nameLocations":["1206:25:0"],"nodeType":"IdentifierPath","referencedDeclaration":21,"src":"1206:25:0"},"referencedDeclaration":21,"src":"1206:25:0","typeDescriptions":{"typeIdentifier":"t_struct$_AccessManagedProxyStorage_$21_storage_ptr","typeString":"struct AMPUtils.AccessManagedProxyStorage"}},"visibility":"internal"}],"src":"1205:37:0"},"scope":240,"src":"1143:228:0","stateMutability":"pure","virtual":false,"visibility":"internal"},{"body":{"id":73,"nodeType":"Block","src":"1440:287:0","statements":[{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":46,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"expression":{"expression":{"arguments":[{"id":41,"name":"accessManager","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":36,"src":"1458:13:0","typeDescriptions":{"typeIdentifier":"t_contract$_IAccessManager_$6842","typeString":"contract IAccessManager"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_contract$_IAccessManager_$6842","typeString":"contract IAccessManager"}],"id":40,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"1450:7:0","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":39,"name":"address","nodeType":"ElementaryTypeName","src":"1450:7:0","typeDescriptions":{}}},"id":42,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"1450:22:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"id":43,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"1473:4:0","memberName":"code","nodeType":"MemberAccess","src":"1450:27:0","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}},"id":44,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"1478:6:0","memberName":"length","nodeType":"MemberAccess","src":"1450:34:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"hexValue":"30","id":45,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"1488:1:0","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"1450:39:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":57,"nodeType":"IfStatement","src":"1446:140:0","trueBody":{"id":56,"nodeType":"Block","src":"1491:95:0","statements":[{"errorCall":{"arguments":[{"arguments":[{"id":52,"name":"accessManager","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":36,"src":"1564:13:0","typeDescriptions":{"typeIdentifier":"t_contract$_IAccessManager_$6842","typeString":"contract IAccessManager"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_contract$_IAccessManager_$6842","typeString":"contract IAccessManager"}],"id":51,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"1556:7:0","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":50,"name":"address","nodeType":"ElementaryTypeName","src":"1556:7:0","typeDescriptions":{}}},"id":53,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"1556:22:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"expression":{"id":47,"name":"IAccessManagedProxy","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":488,"src":"1506:19:0","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_IAccessManagedProxy_$488_$","typeString":"type(contract IAccessManagedProxy)"}},"id":49,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"1526:29:0","memberName":"AccessManagedInvalidAuthority","nodeType":"MemberAccess","referencedDeclaration":467,"src":"1506:49:0","typeDescriptions":{"typeIdentifier":"t_function_error_pure$_t_address_$returns$_t_error_$","typeString":"function (address) pure returns (error)"}},"id":54,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"1506:73:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_error","typeString":"error"}},"id":55,"nodeType":"RevertStatement","src":"1499:80:0"}]}},{"expression":{"id":62,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"expression":{"arguments":[],"expression":{"argumentTypes":[],"id":58,"name":"getAccessManagedProxyStorage","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":33,"src":"1591:28:0","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$__$returns$_t_struct$_AccessManagedProxyStorage_$21_storage_ptr_$","typeString":"function () pure returns (struct AMPUtils.AccessManagedProxyStorage storage pointer)"}},"id":59,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"1591:30:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_struct$_AccessManagedProxyStorage_$21_storage_ptr","typeString":"struct AMPUtils.AccessManagedProxyStorage storage pointer"}},"id":60,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"memberLocation":"1622:13:0","memberName":"accessManager","nodeType":"MemberAccess","referencedDeclaration":13,"src":"1591:44:0","typeDescriptions":{"typeIdentifier":"t_contract$_IAccessManager_$6842","typeString":"contract IAccessManager"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"id":61,"name":"accessManager","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":36,"src":"1638:13:0","typeDescriptions":{"typeIdentifier":"t_contract$_IAccessManager_$6842","typeString":"contract IAccessManager"}},"src":"1591:60:0","typeDescriptions":{"typeIdentifier":"t_contract$_IAccessManager_$6842","typeString":"contract IAccessManager"}},"id":63,"nodeType":"ExpressionStatement","src":"1591:60:0"},{"eventCall":{"arguments":[{"arguments":[{"id":69,"name":"accessManager","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":36,"src":"1707:13:0","typeDescriptions":{"typeIdentifier":"t_contract$_IAccessManager_$6842","typeString":"contract IAccessManager"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_contract$_IAccessManager_$6842","typeString":"contract IAccessManager"}],"id":68,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"1699:7:0","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":67,"name":"address","nodeType":"ElementaryTypeName","src":"1699:7:0","typeDescriptions":{}}},"id":70,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"1699:22:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"expression":{"id":64,"name":"IAccessManagedProxy","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":488,"src":"1662:19:0","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_IAccessManagedProxy_$488_$","typeString":"type(contract IAccessManagedProxy)"}},"id":66,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"1682:16:0","memberName":"AuthorityUpdated","nodeType":"MemberAccess","referencedDeclaration":453,"src":"1662:36:0","typeDescriptions":{"typeIdentifier":"t_function_event_nonpayable$_t_address_$returns$__$","typeString":"function (address)"}},"id":71,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"1662:60:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":72,"nodeType":"EmitStatement","src":"1657:65:0"}]},"id":74,"implemented":true,"kind":"function","modifiers":[],"name":"setAccessManager","nameLocation":"1384:16:0","nodeType":"FunctionDefinition","parameters":{"id":37,"nodeType":"ParameterList","parameters":[{"constant":false,"id":36,"mutability":"mutable","name":"accessManager","nameLocation":"1416:13:0","nodeType":"VariableDeclaration","scope":74,"src":"1401:28:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_contract$_IAccessManager_$6842","typeString":"contract IAccessManager"},"typeName":{"id":35,"nodeType":"UserDefinedTypeName","pathNode":{"id":34,"name":"IAccessManager","nameLocations":["1401:14:0"],"nodeType":"IdentifierPath","referencedDeclaration":6842,"src":"1401:14:0"},"referencedDeclaration":6842,"src":"1401:14:0","typeDescriptions":{"typeIdentifier":"t_contract$_IAccessManager_$6842","typeString":"contract IAccessManager"}},"visibility":"internal"}],"src":"1400:30:0"},"returnParameters":{"id":38,"nodeType":"ParameterList","parameters":[],"src":"1440:0:0"},"scope":240,"src":"1375:352:0","stateMutability":"nonpayable","virtual":false,"visibility":"internal"},{"body":{"id":136,"nodeType":"Block","src":"1801:373:0","statements":[{"assignments":[82],"declarations":[{"constant":false,"id":82,"mutability":"mutable","name":"$","nameLocation":"1841:1:0","nodeType":"VariableDeclaration","scope":136,"src":"1807:35:0","stateVariable":false,"storageLocation":"storage","typeDescriptions":{"typeIdentifier":"t_struct$_AccessManagedProxyStorage_$21_storage_ptr","typeString":"struct AMPUtils.AccessManagedProxyStorage"},"typeName":{"id":81,"nodeType":"UserDefinedTypeName","pathNode":{"id":80,"name":"AccessManagedProxyStorage","nameLocations":["1807:25:0"],"nodeType":"IdentifierPath","referencedDeclaration":21,"src":"1807:25:0"},"referencedDeclaration":21,"src":"1807:25:0","typeDescriptions":{"typeIdentifier":"t_struct$_AccessManagedProxyStorage_$21_storage_ptr","typeString":"struct AMPUtils.AccessManagedProxyStorage"}},"visibility":"internal"}],"id":86,"initialValue":{"arguments":[],"expression":{"argumentTypes":[],"expression":{"id":83,"name":"AMPUtils","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":240,"src":"1845:8:0","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_AMPUtils_$240_$","typeString":"type(library AMPUtils)"}},"id":84,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"1854:28:0","memberName":"getAccessManagedProxyStorage","nodeType":"MemberAccess","referencedDeclaration":33,"src":"1845:37:0","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$__$returns$_t_struct$_AccessManagedProxyStorage_$21_storage_ptr_$","typeString":"function () pure returns (struct AMPUtils.AccessManagedProxyStorage storage pointer)"}},"id":85,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"1845:39:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_struct$_AccessManagedProxyStorage_$21_storage_ptr","typeString":"struct AMPUtils.AccessManagedProxyStorage storage pointer"}},"nodeType":"VariableDeclarationStatement","src":"1807:77:0"},{"expression":{"id":96,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"expression":{"id":87,"name":"$","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":82,"src":"1890:1:0","typeDescriptions":{"typeIdentifier":"t_struct$_AccessManagedProxyStorage_$21_storage_ptr","typeString":"struct AMPUtils.AccessManagedProxyStorage storage pointer"}},"id":89,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"memberLocation":"1892:15:0","memberName":"passThruMethods","nodeType":"MemberAccess","referencedDeclaration":16,"src":"1890:17:0","typeDescriptions":{"typeIdentifier":"t_array$_t_bytes4_$dyn_storage","typeString":"bytes4[] storage ref"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"arguments":[{"expression":{"id":93,"name":"passThruMethods","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":77,"src":"1923:15:0","typeDescriptions":{"typeIdentifier":"t_array$_t_bytes4_$dyn_memory_ptr","typeString":"bytes4[] memory"}},"id":94,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"1939:6:0","memberName":"length","nodeType":"MemberAccess","src":"1923:22:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":92,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"NewExpression","src":"1910:12:0","typeDescriptions":{"typeIdentifier":"t_function_objectcreation_pure$_t_uint256_$returns$_t_array$_t_bytes4_$dyn_memory_ptr_$","typeString":"function (uint256) pure returns (bytes4[] memory)"},"typeName":{"baseType":{"id":90,"name":"bytes4","nodeType":"ElementaryTypeName","src":"1914:6:0","typeDescriptions":{"typeIdentifier":"t_bytes4","typeString":"bytes4"}},"id":91,"nodeType":"ArrayTypeName","src":"1914:8:0","typeDescriptions":{"typeIdentifier":"t_array$_t_bytes4_$dyn_storage_ptr","typeString":"bytes4[]"}}},"id":95,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"1910:36:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_array$_t_bytes4_$dyn_memory_ptr","typeString":"bytes4[] memory"}},"src":"1890:56:0","typeDescriptions":{"typeIdentifier":"t_array$_t_bytes4_$dyn_storage","typeString":"bytes4[] storage ref"}},"id":97,"nodeType":"ExpressionStatement","src":"1890:56:0"},{"body":{"id":128,"nodeType":"Block","src":"2001:99:0","statements":[{"expression":{"id":116,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"baseExpression":{"expression":{"id":108,"name":"$","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":82,"src":"2009:1:0","typeDescriptions":{"typeIdentifier":"t_struct$_AccessManagedProxyStorage_$21_storage_ptr","typeString":"struct AMPUtils.AccessManagedProxyStorage storage pointer"}},"id":111,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"2011:15:0","memberName":"passThruMethods","nodeType":"MemberAccess","referencedDeclaration":16,"src":"2009:17:0","typeDescriptions":{"typeIdentifier":"t_array$_t_bytes4_$dyn_storage","typeString":"bytes4[] storage ref"}},"id":112,"indexExpression":{"id":110,"name":"i","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":99,"src":"2027:1:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"nodeType":"IndexAccess","src":"2009:20:0","typeDescriptions":{"typeIdentifier":"t_bytes4","typeString":"bytes4"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"baseExpression":{"id":113,"name":"passThruMethods","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":77,"src":"2032:15:0","typeDescriptions":{"typeIdentifier":"t_array$_t_bytes4_$dyn_memory_ptr","typeString":"bytes4[] memory"}},"id":115,"indexExpression":{"id":114,"name":"i","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":99,"src":"2048:1:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"2032:18:0","typeDescriptions":{"typeIdentifier":"t_bytes4","typeString":"bytes4"}},"src":"2009:41:0","typeDescriptions":{"typeIdentifier":"t_bytes4","typeString":"bytes4"}},"id":117,"nodeType":"ExpressionStatement","src":"2009:41:0"},{"expression":{"id":126,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"baseExpression":{"expression":{"id":118,"name":"$","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":82,"src":"2058:1:0","typeDescriptions":{"typeIdentifier":"t_struct$_AccessManagedProxyStorage_$21_storage_ptr","typeString":"struct AMPUtils.AccessManagedProxyStorage storage pointer"}},"id":123,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"2060:6:0","memberName":"skipAc","nodeType":"MemberAccess","referencedDeclaration":20,"src":"2058:8:0","typeDescriptions":{"typeIdentifier":"t_mapping$_t_bytes4_$_t_bool_$","typeString":"mapping(bytes4 => bool)"}},"id":124,"indexExpression":{"baseExpression":{"id":120,"name":"passThruMethods","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":77,"src":"2067:15:0","typeDescriptions":{"typeIdentifier":"t_array$_t_bytes4_$dyn_memory_ptr","typeString":"bytes4[] memory"}},"id":122,"indexExpression":{"id":121,"name":"i","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":99,"src":"2083:1:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"2067:18:0","typeDescriptions":{"typeIdentifier":"t_bytes4","typeString":"bytes4"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"nodeType":"IndexAccess","src":"2058:28:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"hexValue":"74727565","id":125,"isConstant":false,"isLValue":false,"isPure":true,"kind":"bool","lValueRequested":false,"nodeType":"Literal","src":"2089:4:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"value":"true"},"src":"2058:35:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":127,"nodeType":"ExpressionStatement","src":"2058:35:0"}]},"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":104,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":101,"name":"i","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":99,"src":"1968:1:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"<","rightExpression":{"expression":{"id":102,"name":"passThruMethods","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":77,"src":"1972:15:0","typeDescriptions":{"typeIdentifier":"t_array$_t_bytes4_$dyn_memory_ptr","typeString":"bytes4[] memory"}},"id":103,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"1988:6:0","memberName":"length","nodeType":"MemberAccess","src":"1972:22:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"1968:26:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":129,"initializationExpression":{"assignments":[99],"declarations":[{"constant":false,"id":99,"mutability":"mutable","name":"i","nameLocation":"1965:1:0","nodeType":"VariableDeclaration","scope":129,"src":"1957:9:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":98,"name":"uint256","nodeType":"ElementaryTypeName","src":"1957:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":100,"nodeType":"VariableDeclarationStatement","src":"1957:9:0"},"isSimpleCounterLoop":true,"loopExpression":{"expression":{"id":106,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"UnaryOperation","operator":"++","prefix":true,"src":"1996:3:0","subExpression":{"id":105,"name":"i","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":99,"src":"1998:1:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":107,"nodeType":"ExpressionStatement","src":"1996:3:0"},"nodeType":"ForStatement","src":"1952:148:0"},{"eventCall":{"arguments":[{"id":133,"name":"passThruMethods","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":77,"src":"2153:15:0","typeDescriptions":{"typeIdentifier":"t_array$_t_bytes4_$dyn_memory_ptr","typeString":"bytes4[] memory"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_array$_t_bytes4_$dyn_memory_ptr","typeString":"bytes4[] memory"}],"expression":{"id":130,"name":"IAccessManagedProxy","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":488,"src":"2110:19:0","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_IAccessManagedProxy_$488_$","typeString":"type(contract IAccessManagedProxy)"}},"id":132,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"2130:22:0","memberName":"PassThruMethodsChanged","nodeType":"MemberAccess","referencedDeclaration":459,"src":"2110:42:0","typeDescriptions":{"typeIdentifier":"t_function_event_nonpayable$_t_array$_t_bytes4_$dyn_memory_ptr_$returns$__$","typeString":"function (bytes4[] memory)"}},"id":134,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"2110:59:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":135,"nodeType":"EmitStatement","src":"2105:64:0"}]},"id":137,"implemented":true,"kind":"function","modifiers":[],"name":"setPassThruMethods","nameLocation":"1740:18:0","nodeType":"FunctionDefinition","parameters":{"id":78,"nodeType":"ParameterList","parameters":[{"constant":false,"id":77,"mutability":"mutable","name":"passThruMethods","nameLocation":"1775:15:0","nodeType":"VariableDeclaration","scope":137,"src":"1759:31:0","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_array$_t_bytes4_$dyn_memory_ptr","typeString":"bytes4[]"},"typeName":{"baseType":{"id":75,"name":"bytes4","nodeType":"ElementaryTypeName","src":"1759:6:0","typeDescriptions":{"typeIdentifier":"t_bytes4","typeString":"bytes4"}},"id":76,"nodeType":"ArrayTypeName","src":"1759:8:0","typeDescriptions":{"typeIdentifier":"t_array$_t_bytes4_$dyn_storage_ptr","typeString":"bytes4[]"}},"visibility":"internal"}],"src":"1758:33:0"},"returnParameters":{"id":79,"nodeType":"ParameterList","parameters":[],"src":"1801:0:0"},"scope":240,"src":"1731:443:0","stateMutability":"nonpayable","virtual":false,"visibility":"internal"},{"body":{"id":184,"nodeType":"Block","src":"2255:303:0","statements":[{"assignments":[145],"declarations":[{"constant":false,"id":145,"mutability":"mutable","name":"$","nameLocation":"2295:1:0","nodeType":"VariableDeclaration","scope":184,"src":"2261:35:0","stateVariable":false,"storageLocation":"storage","typeDescriptions":{"typeIdentifier":"t_struct$_AccessManagedProxyStorage_$21_storage_ptr","typeString":"struct AMPUtils.AccessManagedProxyStorage"},"typeName":{"id":144,"nodeType":"UserDefinedTypeName","pathNode":{"id":143,"name":"AccessManagedProxyStorage","nameLocations":["2261:25:0"],"nodeType":"IdentifierPath","referencedDeclaration":21,"src":"2261:25:0"},"referencedDeclaration":21,"src":"2261:25:0","typeDescriptions":{"typeIdentifier":"t_struct$_AccessManagedProxyStorage_$21_storage_ptr","typeString":"struct AMPUtils.AccessManagedProxyStorage"}},"visibility":"internal"}],"id":149,"initialValue":{"arguments":[],"expression":{"argumentTypes":[],"expression":{"id":146,"name":"AMPUtils","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":240,"src":"2299:8:0","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_AMPUtils_$240_$","typeString":"type(library AMPUtils)"}},"id":147,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"2308:28:0","memberName":"getAccessManagedProxyStorage","nodeType":"MemberAccess","referencedDeclaration":33,"src":"2299:37:0","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$__$returns$_t_struct$_AccessManagedProxyStorage_$21_storage_ptr_$","typeString":"function () pure returns (struct AMPUtils.AccessManagedProxyStorage storage pointer)"}},"id":148,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"2299:39:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_struct$_AccessManagedProxyStorage_$21_storage_ptr","typeString":"struct AMPUtils.AccessManagedProxyStorage storage pointer"}},"nodeType":"VariableDeclarationStatement","src":"2261:77:0"},{"assignments":[154],"declarations":[{"constant":false,"id":154,"mutability":"mutable","name":"oldPassThruMethods","nameLocation":"2360:18:0","nodeType":"VariableDeclaration","scope":184,"src":"2344:34:0","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_array$_t_bytes4_$dyn_memory_ptr","typeString":"bytes4[]"},"typeName":{"baseType":{"id":152,"name":"bytes4","nodeType":"ElementaryTypeName","src":"2344:6:0","typeDescriptions":{"typeIdentifier":"t_bytes4","typeString":"bytes4"}},"id":153,"nodeType":"ArrayTypeName","src":"2344:8:0","typeDescriptions":{"typeIdentifier":"t_array$_t_bytes4_$dyn_storage_ptr","typeString":"bytes4[]"}},"visibility":"internal"}],"id":157,"initialValue":{"expression":{"id":155,"name":"$","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":145,"src":"2381:1:0","typeDescriptions":{"typeIdentifier":"t_struct$_AccessManagedProxyStorage_$21_storage_ptr","typeString":"struct AMPUtils.AccessManagedProxyStorage storage pointer"}},"id":156,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"2383:15:0","memberName":"passThruMethods","nodeType":"MemberAccess","referencedDeclaration":16,"src":"2381:17:0","typeDescriptions":{"typeIdentifier":"t_array$_t_bytes4_$dyn_storage","typeString":"bytes4[] storage ref"}},"nodeType":"VariableDeclarationStatement","src":"2344:54:0"},{"body":{"id":178,"nodeType":"Block","src":"2456:54:0","statements":[{"expression":{"id":176,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"baseExpression":{"expression":{"id":168,"name":"$","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":145,"src":"2464:1:0","typeDescriptions":{"typeIdentifier":"t_struct$_AccessManagedProxyStorage_$21_storage_ptr","typeString":"struct AMPUtils.AccessManagedProxyStorage storage pointer"}},"id":173,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"2466:6:0","memberName":"skipAc","nodeType":"MemberAccess","referencedDeclaration":20,"src":"2464:8:0","typeDescriptions":{"typeIdentifier":"t_mapping$_t_bytes4_$_t_bool_$","typeString":"mapping(bytes4 => bool)"}},"id":174,"indexExpression":{"baseExpression":{"id":170,"name":"oldPassThruMethods","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":154,"src":"2473:18:0","typeDescriptions":{"typeIdentifier":"t_array$_t_bytes4_$dyn_memory_ptr","typeString":"bytes4[] memory"}},"id":172,"indexExpression":{"id":171,"name":"i","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":159,"src":"2492:1:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"2473:21:0","typeDescriptions":{"typeIdentifier":"t_bytes4","typeString":"bytes4"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"nodeType":"IndexAccess","src":"2464:31:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"hexValue":"66616c7365","id":175,"isConstant":false,"isLValue":false,"isPure":true,"kind":"bool","lValueRequested":false,"nodeType":"Literal","src":"2498:5:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"value":"false"},"src":"2464:39:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":177,"nodeType":"ExpressionStatement","src":"2464:39:0"}]},"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":164,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":161,"name":"i","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":159,"src":"2420:1:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"<","rightExpression":{"expression":{"id":162,"name":"oldPassThruMethods","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":154,"src":"2424:18:0","typeDescriptions":{"typeIdentifier":"t_array$_t_bytes4_$dyn_memory_ptr","typeString":"bytes4[] memory"}},"id":163,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"2443:6:0","memberName":"length","nodeType":"MemberAccess","src":"2424:25:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"2420:29:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":179,"initializationExpression":{"assignments":[159],"declarations":[{"constant":false,"id":159,"mutability":"mutable","name":"i","nameLocation":"2417:1:0","nodeType":"VariableDeclaration","scope":179,"src":"2409:9:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":158,"name":"uint256","nodeType":"ElementaryTypeName","src":"2409:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":160,"nodeType":"VariableDeclarationStatement","src":"2409:9:0"},"isSimpleCounterLoop":true,"loopExpression":{"expression":{"id":166,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"UnaryOperation","operator":"++","prefix":true,"src":"2451:3:0","subExpression":{"id":165,"name":"i","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":159,"src":"2453:1:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":167,"nodeType":"ExpressionStatement","src":"2451:3:0"},"nodeType":"ForStatement","src":"2404:106:0"},{"expression":{"arguments":[{"id":181,"name":"newPassThruMethods","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":140,"src":"2534:18:0","typeDescriptions":{"typeIdentifier":"t_array$_t_bytes4_$dyn_memory_ptr","typeString":"bytes4[] memory"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_array$_t_bytes4_$dyn_memory_ptr","typeString":"bytes4[] memory"}],"id":180,"name":"setPassThruMethods","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":137,"src":"2515:18:0","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_array$_t_bytes4_$dyn_memory_ptr_$returns$__$","typeString":"function (bytes4[] memory)"}},"id":182,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"2515:38:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":183,"nodeType":"ExpressionStatement","src":"2515:38:0"}]},"id":185,"implemented":true,"kind":"function","modifiers":[],"name":"replacePassThruMethods","nameLocation":"2187:22:0","nodeType":"FunctionDefinition","parameters":{"id":141,"nodeType":"ParameterList","parameters":[{"constant":false,"id":140,"mutability":"mutable","name":"newPassThruMethods","nameLocation":"2226:18:0","nodeType":"VariableDeclaration","scope":185,"src":"2210:34:0","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_array$_t_bytes4_$dyn_memory_ptr","typeString":"bytes4[]"},"typeName":{"baseType":{"id":138,"name":"bytes4","nodeType":"ElementaryTypeName","src":"2210:6:0","typeDescriptions":{"typeIdentifier":"t_bytes4","typeString":"bytes4"}},"id":139,"nodeType":"ArrayTypeName","src":"2210:8:0","typeDescriptions":{"typeIdentifier":"t_array$_t_bytes4_$dyn_storage_ptr","typeString":"bytes4[]"}},"visibility":"internal"}],"src":"2209:36:0"},"returnParameters":{"id":142,"nodeType":"ParameterList","parameters":[],"src":"2255:0:0"},"scope":240,"src":"2178:380:0","stateMutability":"nonpayable","virtual":false,"visibility":"internal"},{"body":{"id":222,"nodeType":"Block","src":"2967:212:0","statements":[{"assignments":[194,null],"declarations":[{"constant":false,"id":194,"mutability":"mutable","name":"immediate","nameLocation":"2979:9:0","nodeType":"VariableDeclaration","scope":222,"src":"2974:14:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":193,"name":"bool","nodeType":"ElementaryTypeName","src":"2974:4:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"},null],"id":214,"initialValue":{"arguments":[{"id":207,"name":"user","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":188,"src":"3070:4:0","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"arguments":[{"id":210,"name":"this","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-28,"src":"3090:4:0","typeDescriptions":{"typeIdentifier":"t_contract$_AMPUtils_$240","typeString":"library AMPUtils"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_contract$_AMPUtils_$240","typeString":"library AMPUtils"}],"id":209,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"3082:7:0","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":208,"name":"address","nodeType":"ElementaryTypeName","src":"3082:7:0","typeDescriptions":{}}},"id":211,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"3082:13:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":212,"name":"selector","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":190,"src":"3103:8:0","typeDescriptions":{"typeIdentifier":"t_bytes4","typeString":"bytes4"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_bytes4","typeString":"bytes4"}],"expression":{"arguments":[],"expression":{"argumentTypes":[],"expression":{"arguments":[{"arguments":[{"arguments":[{"id":200,"name":"this","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-28,"src":"3030:4:0","typeDescriptions":{"typeIdentifier":"t_contract$_AMPUtils_$240","typeString":"library AMPUtils"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_contract$_AMPUtils_$240","typeString":"library AMPUtils"}],"id":199,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"3022:7:0","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":198,"name":"address","nodeType":"ElementaryTypeName","src":"3022:7:0","typeDescriptions":{}}},"id":201,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"3022:13:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"id":197,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"3014:8:0","typeDescriptions":{"typeIdentifier":"t_type$_t_address_payable_$","typeString":"type(address payable)"},"typeName":{"id":196,"name":"address","nodeType":"ElementaryTypeName","src":"3014:8:0","stateMutability":"payable","typeDescriptions":{}}},"id":202,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"3014:22:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address_payable","typeString":"address payable"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address_payable","typeString":"address payable"}],"id":195,"name":"IAccessManagedProxy","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":488,"src":"2994:19:0","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_IAccessManagedProxy_$488_$","typeString":"type(contract IAccessManagedProxy)"}},"id":203,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"2994:43:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_contract$_IAccessManagedProxy_$488","typeString":"contract IAccessManagedProxy"}},"id":204,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"3038:14:0","memberName":"ACCESS_MANAGER","nodeType":"MemberAccess","referencedDeclaration":480,"src":"2994:58:0","typeDescriptions":{"typeIdentifier":"t_function_external_view$__$returns$_t_contract$_IAccessManager_$6842_$","typeString":"function () view external returns (contract IAccessManager)"}},"id":205,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"2994:60:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_contract$_IAccessManager_$6842","typeString":"contract IAccessManager"}},"id":206,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"3055:7:0","memberName":"canCall","nodeType":"MemberAccess","referencedDeclaration":6586,"src":"2994:68:0","typeDescriptions":{"typeIdentifier":"t_function_external_view$_t_address_$_t_address_$_t_bytes4_$returns$_t_bool_$_t_uint32_$","typeString":"function (address,address,bytes4) view external returns (bool,uint32)"}},"id":213,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"2994:123:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$_t_bool_$_t_uint32_$","typeString":"tuple(bool,uint32)"}},"nodeType":"VariableDeclarationStatement","src":"2973:144:0"},{"expression":{"arguments":[{"id":216,"name":"immediate","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":194,"src":"3131:9:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},{"arguments":[{"id":218,"name":"user","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":188,"src":"3168:4:0","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"id":217,"name":"AccessManagedUnauthorized","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10,"src":"3142:25:0","typeDescriptions":{"typeIdentifier":"t_function_error_pure$_t_address_$returns$_t_error_$","typeString":"function (address) pure returns (error)"}},"id":219,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"3142:31:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_error","typeString":"error"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_error","typeString":"error"}],"id":215,"name":"require","nodeType":"Identifier","overloadedDeclarations":[-18,-18,-18],"referencedDeclaration":-18,"src":"3123:7:0","typeDescriptions":{"typeIdentifier":"t_function_require_pure$_t_bool_$_t_error_$returns$__$","typeString":"function (bool,error) pure"}},"id":220,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"3123:51:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":221,"nodeType":"ExpressionStatement","src":"3123:51:0"}]},"documentation":{"id":186,"nodeType":"StructuredDocumentation","src":"2562:335:0","text":" @dev Checks if the user can call a particular selector, assuming the calling contract was deployed as an AMP.\n @param user The user for which you want to check the access, typically msg.sender\n @param selector The selector of the method called (or a fake selector generated with makeSelector or another way)"},"id":223,"implemented":true,"kind":"function","modifiers":[],"name":"checkCanCall","nameLocation":"2909:12:0","nodeType":"FunctionDefinition","parameters":{"id":191,"nodeType":"ParameterList","parameters":[{"constant":false,"id":188,"mutability":"mutable","name":"user","nameLocation":"2930:4:0","nodeType":"VariableDeclaration","scope":223,"src":"2922:12:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":187,"name":"address","nodeType":"ElementaryTypeName","src":"2922:7:0","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":190,"mutability":"mutable","name":"selector","nameLocation":"2943:8:0","nodeType":"VariableDeclaration","scope":223,"src":"2936:15:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes4","typeString":"bytes4"},"typeName":{"id":189,"name":"bytes4","nodeType":"ElementaryTypeName","src":"2936:6:0","typeDescriptions":{"typeIdentifier":"t_bytes4","typeString":"bytes4"}},"visibility":"internal"}],"src":"2921:31:0"},"returnParameters":{"id":192,"nodeType":"ParameterList","parameters":[],"src":"2967:0:0"},"scope":240,"src":"2900:279:0","stateMutability":"view","virtual":false,"visibility":"internal"},{"body":{"id":238,"nodeType":"Block","src":"3389:46:0","statements":[{"expression":{"arguments":[{"arguments":[{"id":234,"name":"something","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":226,"src":"3419:9:0","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}],"id":233,"name":"keccak256","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-8,"src":"3409:9:0","typeDescriptions":{"typeIdentifier":"t_function_keccak256_pure$_t_bytes_memory_ptr_$returns$_t_bytes32_$","typeString":"function (bytes memory) pure returns (bytes32)"}},"id":235,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"3409:20:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes32","typeString":"bytes32"}],"id":232,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"3402:6:0","typeDescriptions":{"typeIdentifier":"t_type$_t_bytes4_$","typeString":"type(bytes4)"},"typeName":{"id":231,"name":"bytes4","nodeType":"ElementaryTypeName","src":"3402:6:0","typeDescriptions":{}}},"id":236,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"3402:28:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes4","typeString":"bytes4"}},"functionReturnParameters":230,"id":237,"nodeType":"Return","src":"3395:35:0"}]},"documentation":{"id":224,"nodeType":"StructuredDocumentation","src":"3183:126:0","text":" @dev Standard way of creating \"fake selectors\" (not necessarily tied to a method call) for specific permissions"},"id":239,"implemented":true,"kind":"function","modifiers":[],"name":"makeSelector","nameLocation":"3321:12:0","nodeType":"FunctionDefinition","parameters":{"id":227,"nodeType":"ParameterList","parameters":[{"constant":false,"id":226,"mutability":"mutable","name":"something","nameLocation":"3347:9:0","nodeType":"VariableDeclaration","scope":239,"src":"3334:22:0","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes"},"typeName":{"id":225,"name":"bytes","nodeType":"ElementaryTypeName","src":"3334:5:0","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"}],"src":"3333:24:0"},"returnParameters":{"id":230,"nodeType":"ParameterList","parameters":[{"constant":false,"id":229,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":239,"src":"3381:6:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes4","typeString":"bytes4"},"typeName":{"id":228,"name":"bytes4","nodeType":"ElementaryTypeName","src":"3381:6:0","typeDescriptions":{"typeIdentifier":"t_bytes4","typeString":"bytes4"}},"visibility":"internal"}],"src":"3380:8:0"},"scope":240,"src":"3312:123:0","stateMutability":"pure","virtual":false,"visibility":"internal"}],"scope":241,"src":"394:3043:0","usedErrors":[10],"usedEvents":[]}],"src":"39:3399:0"},"id":0},"@ensuro/access-managed-proxy/contracts/AccessManagedProxy.sol":{"ast":{"absolutePath":"@ensuro/access-managed-proxy/contracts/AccessManagedProxy.sol","exportedSymbols":{"AMPUtils":[240],"AccessManagedProxy":[330],"AccessManagedProxyBase":[443],"IAccessManagedProxy":[488],"IAccessManager":[6842]},"id":331,"license":"Apache-2.0","nodeType":"SourceUnit","nodes":[{"id":242,"literals":["solidity","^","0.8",".0"],"nodeType":"PragmaDirective","src":"39:23:1"},{"absolutePath":"@openzeppelin/contracts/access/manager/IAccessManager.sol","file":"@openzeppelin/contracts/access/manager/IAccessManager.sol","id":244,"nameLocation":"-1:-1:-1","nodeType":"ImportDirective","scope":331,"sourceUnit":6843,"src":"64:89:1","symbolAliases":[{"foreign":{"id":243,"name":"IAccessManager","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6842,"src":"72:14:1","typeDescriptions":{}},"nameLocation":"-1:-1:-1"}],"unitAlias":""},{"absolutePath":"@ensuro/access-managed-proxy/contracts/interfaces/IAccessManagedProxy.sol","file":"./interfaces/IAccessManagedProxy.sol","id":246,"nameLocation":"-1:-1:-1","nodeType":"ImportDirective","scope":331,"sourceUnit":489,"src":"154:73:1","symbolAliases":[{"foreign":{"id":245,"name":"IAccessManagedProxy","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":488,"src":"162:19:1","typeDescriptions":{}},"nameLocation":"-1:-1:-1"}],"unitAlias":""},{"absolutePath":"@ensuro/access-managed-proxy/contracts/AccessManagedProxyBase.sol","file":"./AccessManagedProxyBase.sol","id":248,"nameLocation":"-1:-1:-1","nodeType":"ImportDirective","scope":331,"sourceUnit":444,"src":"228:68:1","symbolAliases":[{"foreign":{"id":247,"name":"AccessManagedProxyBase","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":443,"src":"236:22:1","typeDescriptions":{}},"nameLocation":"-1:-1:-1"}],"unitAlias":""},{"absolutePath":"@ensuro/access-managed-proxy/contracts/AMPUtils.sol","file":"./AMPUtils.sol","id":250,"nameLocation":"-1:-1:-1","nodeType":"ImportDirective","scope":331,"sourceUnit":241,"src":"297:40:1","symbolAliases":[{"foreign":{"id":249,"name":"AMPUtils","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":240,"src":"305:8:1","typeDescriptions":{}},"nameLocation":"-1:-1:-1"}],"unitAlias":""},{"abstract":false,"baseContracts":[{"baseName":{"id":252,"name":"AccessManagedProxyBase","nameLocations":["1479:22:1"],"nodeType":"IdentifierPath","referencedDeclaration":443,"src":"1479:22:1"},"id":253,"nodeType":"InheritanceSpecifier","src":"1479:22:1"}],"canonicalName":"AccessManagedProxy","contractDependencies":[],"contractKind":"contract","documentation":{"id":251,"nodeType":"StructuredDocumentation","src":"339:1108:1","text":" @title AccessManagedProxy\n @notice Proxy contract using IAccessManager to manage access control before delegating calls (mutable version)\n @dev It's a variant of ERC1967Proxy.\n      Currently the check is executed on any call received by the proxy contract (even calls to view methods, i.e.\n      staticcall). For gas efficiency, you can also have `passThruMethods`, and for those methods it will skip\n      the call to the AccessManager, calling directly to the implementation contract.\n      The accessManager and the passThruMethods are in the storage, but this contract doesn't include any method\n      to modify them. They should be modified by the implementation contract (check AMPUtils for functions that\n      encapsulate these operations).\n      Check https://forum.openzeppelin.com/t/accessmanagedproxy-is-a-good-idea/41917 for a discussion on the\n      advantages and disadvantages of using it. Also https://www.youtube.com/watch?v=DKdwJ9Ap9vM for a presentation\n      on this approach.\n @custom:security-contact security@ensuro.co\n @author Ensuro"},"fullyImplemented":true,"id":330,"linearizedBaseContracts":[330,443,488,7312,7642],"name":"AccessManagedProxy","nameLocation":"1457:18:1","nodeType":"ContractDefinition","nodes":[{"body":{"id":283,"nodeType":"Block","src":"2762:101:1","statements":[{"expression":{"arguments":[{"id":274,"name":"accessManager","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":261,"src":"2794:13:1","typeDescriptions":{"typeIdentifier":"t_contract$_IAccessManager_$6842","typeString":"contract IAccessManager"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_contract$_IAccessManager_$6842","typeString":"contract IAccessManager"}],"expression":{"id":271,"name":"AMPUtils","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":240,"src":"2768:8:1","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_AMPUtils_$240_$","typeString":"type(library AMPUtils)"}},"id":273,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"2777:16:1","memberName":"setAccessManager","nodeType":"MemberAccess","referencedDeclaration":74,"src":"2768:25:1","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_contract$_IAccessManager_$6842_$returns$__$","typeString":"function (contract IAccessManager)"}},"id":275,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"2768:40:1","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":276,"nodeType":"ExpressionStatement","src":"2768:40:1"},{"expression":{"arguments":[{"id":280,"name":"passThruMethods","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":264,"src":"2842:15:1","typeDescriptions":{"typeIdentifier":"t_array$_t_bytes4_$dyn_memory_ptr","typeString":"bytes4[] memory"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_array$_t_bytes4_$dyn_memory_ptr","typeString":"bytes4[] memory"}],"expression":{"id":277,"name":"AMPUtils","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":240,"src":"2814:8:1","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_AMPUtils_$240_$","typeString":"type(library AMPUtils)"}},"id":279,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"2823:18:1","memberName":"setPassThruMethods","nodeType":"MemberAccess","referencedDeclaration":137,"src":"2814:27:1","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_array$_t_bytes4_$dyn_memory_ptr_$returns$__$","typeString":"function (bytes4[] memory)"}},"id":281,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"2814:44:1","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":282,"nodeType":"ExpressionStatement","src":"2814:44:1"}]},"documentation":{"id":254,"nodeType":"StructuredDocumentation","src":"1632:934:1","text":" @notice Constructor of the proxy, defining the implementation and the access manager\n @dev Initializes the upgradeable proxy with an initial implementation specified by `implementation` and\n      with `accessManager` as the ACCESS_MANAGER that will handle access control.\n @param implementation The initial implementation contract.\n @param _data If nonempty, it's used as data in a delegate call to `implementation`. This will typically be an\n              encoded function call, and allows initializing the storage of the proxy like a Solidity constructor.\n @param accessManager The access manager that will handle access control\n @param passThruMethods The selector of methods that will skip the access control validation, typically used for\n                        views and other methods for gas optimization.\n @custom:pre If `_data` is empty, `msg.value` must be zero."},"id":284,"implemented":true,"kind":"constructor","modifiers":[{"arguments":[{"id":267,"name":"implementation","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":256,"src":"2739:14:1","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":268,"name":"_data","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":258,"src":"2755:5:1","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}}],"id":269,"kind":"baseConstructorSpecifier","modifierName":{"id":266,"name":"AccessManagedProxyBase","nameLocations":["2716:22:1"],"nodeType":"IdentifierPath","referencedDeclaration":443,"src":"2716:22:1"},"nodeType":"ModifierInvocation","src":"2716:45:1"}],"name":"","nameLocation":"-1:-1:-1","nodeType":"FunctionDefinition","parameters":{"id":265,"nodeType":"ParameterList","parameters":[{"constant":false,"id":256,"mutability":"mutable","name":"implementation","nameLocation":"2594:14:1","nodeType":"VariableDeclaration","scope":284,"src":"2586:22:1","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":255,"name":"address","nodeType":"ElementaryTypeName","src":"2586:7:1","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":258,"mutability":"mutable","name":"_data","nameLocation":"2627:5:1","nodeType":"VariableDeclaration","scope":284,"src":"2614:18:1","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes"},"typeName":{"id":257,"name":"bytes","nodeType":"ElementaryTypeName","src":"2614:5:1","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"},{"constant":false,"id":261,"mutability":"mutable","name":"accessManager","nameLocation":"2653:13:1","nodeType":"VariableDeclaration","scope":284,"src":"2638:28:1","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_contract$_IAccessManager_$6842","typeString":"contract IAccessManager"},"typeName":{"id":260,"nodeType":"UserDefinedTypeName","pathNode":{"id":259,"name":"IAccessManager","nameLocations":["2638:14:1"],"nodeType":"IdentifierPath","referencedDeclaration":6842,"src":"2638:14:1"},"referencedDeclaration":6842,"src":"2638:14:1","typeDescriptions":{"typeIdentifier":"t_contract$_IAccessManager_$6842","typeString":"contract IAccessManager"}},"visibility":"internal"},{"constant":false,"id":264,"mutability":"mutable","name":"passThruMethods","nameLocation":"2688:15:1","nodeType":"VariableDeclaration","scope":284,"src":"2672:31:1","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_array$_t_bytes4_$dyn_memory_ptr","typeString":"bytes4[]"},"typeName":{"baseType":{"id":262,"name":"bytes4","nodeType":"ElementaryTypeName","src":"2672:6:1","typeDescriptions":{"typeIdentifier":"t_bytes4","typeString":"bytes4"}},"id":263,"nodeType":"ArrayTypeName","src":"2672:8:1","typeDescriptions":{"typeIdentifier":"t_array$_t_bytes4_$dyn_storage_ptr","typeString":"bytes4[]"}},"visibility":"internal"}],"src":"2580:127:1"},"returnParameters":{"id":270,"nodeType":"ParameterList","parameters":[],"src":"2762:0:1"},"scope":330,"src":"2569:294:1","stateMutability":"payable","virtual":false,"visibility":"public"},{"baseFunctions":[442],"body":{"id":300,"nodeType":"Block","src":"2980:74:1","statements":[{"expression":{"baseExpression":{"expression":{"arguments":[],"expression":{"argumentTypes":[],"expression":{"id":293,"name":"AMPUtils","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":240,"src":"2993:8:1","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_AMPUtils_$240_$","typeString":"type(library AMPUtils)"}},"id":294,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"3002:28:1","memberName":"getAccessManagedProxyStorage","nodeType":"MemberAccess","referencedDeclaration":33,"src":"2993:37:1","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$__$returns$_t_struct$_AccessManagedProxyStorage_$21_storage_ptr_$","typeString":"function () pure returns (struct AMPUtils.AccessManagedProxyStorage storage pointer)"}},"id":295,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"2993:39:1","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_struct$_AccessManagedProxyStorage_$21_storage_ptr","typeString":"struct AMPUtils.AccessManagedProxyStorage storage pointer"}},"id":296,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"3033:6:1","memberName":"skipAc","nodeType":"MemberAccess","referencedDeclaration":20,"src":"2993:46:1","typeDescriptions":{"typeIdentifier":"t_mapping$_t_bytes4_$_t_bool_$","typeString":"mapping(bytes4 => bool)"}},"id":298,"indexExpression":{"id":297,"name":"selector","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":287,"src":"3040:8:1","typeDescriptions":{"typeIdentifier":"t_bytes4","typeString":"bytes4"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"2993:56:1","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"functionReturnParameters":292,"id":299,"nodeType":"Return","src":"2986:63:1"}]},"documentation":{"id":285,"nodeType":"StructuredDocumentation","src":"2867:38:1","text":"@inheritdoc AccessManagedProxyBase"},"id":301,"implemented":true,"kind":"function","modifiers":[],"name":"_skipAC","nameLocation":"2917:7:1","nodeType":"FunctionDefinition","overrides":{"id":289,"nodeType":"OverrideSpecifier","overrides":[],"src":"2956:8:1"},"parameters":{"id":288,"nodeType":"ParameterList","parameters":[{"constant":false,"id":287,"mutability":"mutable","name":"selector","nameLocation":"2932:8:1","nodeType":"VariableDeclaration","scope":301,"src":"2925:15:1","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes4","typeString":"bytes4"},"typeName":{"id":286,"name":"bytes4","nodeType":"ElementaryTypeName","src":"2925:6:1","typeDescriptions":{"typeIdentifier":"t_bytes4","typeString":"bytes4"}},"visibility":"internal"}],"src":"2924:17:1"},"returnParameters":{"id":292,"nodeType":"ParameterList","parameters":[{"constant":false,"id":291,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":301,"src":"2974:4:1","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":290,"name":"bool","nodeType":"ElementaryTypeName","src":"2974:4:1","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"}],"src":"2973:6:1"},"scope":330,"src":"2908:146:1","stateMutability":"view","virtual":false,"visibility":"internal"},{"baseFunctions":[487],"body":{"id":314,"nodeType":"Block","src":"3233:73:1","statements":[{"expression":{"expression":{"arguments":[],"expression":{"argumentTypes":[],"expression":{"id":309,"name":"AMPUtils","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":240,"src":"3246:8:1","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_AMPUtils_$240_$","typeString":"type(library AMPUtils)"}},"id":310,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"3255:28:1","memberName":"getAccessManagedProxyStorage","nodeType":"MemberAccess","referencedDeclaration":33,"src":"3246:37:1","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$__$returns$_t_struct$_AccessManagedProxyStorage_$21_storage_ptr_$","typeString":"function () pure returns (struct AMPUtils.AccessManagedProxyStorage storage pointer)"}},"id":311,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"3246:39:1","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_struct$_AccessManagedProxyStorage_$21_storage_ptr","typeString":"struct AMPUtils.AccessManagedProxyStorage storage pointer"}},"id":312,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"3286:15:1","memberName":"passThruMethods","nodeType":"MemberAccess","referencedDeclaration":16,"src":"3246:55:1","typeDescriptions":{"typeIdentifier":"t_array$_t_bytes4_$dyn_storage","typeString":"bytes4[] storage ref"}},"functionReturnParameters":308,"id":313,"nodeType":"Return","src":"3239:62:1"}]},"documentation":{"id":302,"nodeType":"StructuredDocumentation","src":"3058:35:1","text":"@inheritdoc IAccessManagedProxy"},"functionSelector":"14416c03","id":315,"implemented":true,"kind":"function","modifiers":[],"name":"PASS_THRU_METHODS","nameLocation":"3156:17:1","nodeType":"FunctionDefinition","overrides":{"id":304,"nodeType":"OverrideSpecifier","overrides":[],"src":"3190:8:1"},"parameters":{"id":303,"nodeType":"ParameterList","parameters":[],"src":"3173:2:1"},"returnParameters":{"id":308,"nodeType":"ParameterList","parameters":[{"constant":false,"id":307,"mutability":"mutable","name":"methods","nameLocation":"3224:7:1","nodeType":"VariableDeclaration","scope":315,"src":"3208:23:1","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_array$_t_bytes4_$dyn_memory_ptr","typeString":"bytes4[]"},"typeName":{"baseType":{"id":305,"name":"bytes4","nodeType":"ElementaryTypeName","src":"3208:6:1","typeDescriptions":{"typeIdentifier":"t_bytes4","typeString":"bytes4"}},"id":306,"nodeType":"ArrayTypeName","src":"3208:8:1","typeDescriptions":{"typeIdentifier":"t_array$_t_bytes4_$dyn_storage_ptr","typeString":"bytes4[]"}},"visibility":"internal"}],"src":"3207:25:1"},"scope":330,"src":"3147:159:1","stateMutability":"view","virtual":false,"visibility":"external"},{"baseFunctions":[363],"body":{"id":328,"nodeType":"Block","src":"3471:71:1","statements":[{"expression":{"expression":{"arguments":[],"expression":{"argumentTypes":[],"expression":{"id":323,"name":"AMPUtils","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":240,"src":"3484:8:1","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_AMPUtils_$240_$","typeString":"type(library AMPUtils)"}},"id":324,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"3493:28:1","memberName":"getAccessManagedProxyStorage","nodeType":"MemberAccess","referencedDeclaration":33,"src":"3484:37:1","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$__$returns$_t_struct$_AccessManagedProxyStorage_$21_storage_ptr_$","typeString":"function () pure returns (struct AMPUtils.AccessManagedProxyStorage storage pointer)"}},"id":325,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"3484:39:1","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_struct$_AccessManagedProxyStorage_$21_storage_ptr","typeString":"struct AMPUtils.AccessManagedProxyStorage storage pointer"}},"id":326,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"3524:13:1","memberName":"accessManager","nodeType":"MemberAccess","referencedDeclaration":13,"src":"3484:53:1","typeDescriptions":{"typeIdentifier":"t_contract$_IAccessManager_$6842","typeString":"contract IAccessManager"}},"functionReturnParameters":322,"id":327,"nodeType":"Return","src":"3477:60:1"}]},"documentation":{"id":316,"nodeType":"StructuredDocumentation","src":"3310:35:1","text":"@inheritdoc IAccessManagedProxy"},"functionSelector":"3a7b7a39","id":329,"implemented":true,"kind":"function","modifiers":[],"name":"ACCESS_MANAGER","nameLocation":"3408:14:1","nodeType":"FunctionDefinition","overrides":{"id":318,"nodeType":"OverrideSpecifier","overrides":[],"src":"3437:8:1"},"parameters":{"id":317,"nodeType":"ParameterList","parameters":[],"src":"3422:2:1"},"returnParameters":{"id":322,"nodeType":"ParameterList","parameters":[{"constant":false,"id":321,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":329,"src":"3455:14:1","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_contract$_IAccessManager_$6842","typeString":"contract IAccessManager"},"typeName":{"id":320,"nodeType":"UserDefinedTypeName","pathNode":{"id":319,"name":"IAccessManager","nameLocations":["3455:14:1"],"nodeType":"IdentifierPath","referencedDeclaration":6842,"src":"3455:14:1"},"referencedDeclaration":6842,"src":"3455:14:1","typeDescriptions":{"typeIdentifier":"t_contract$_IAccessManager_$6842","typeString":"contract IAccessManager"}},"visibility":"internal"}],"src":"3454:16:1"},"scope":330,"src":"3399:143:1","stateMutability":"view","virtual":false,"visibility":"public"}],"scope":331,"src":"1448:2096:1","usedErrors":[463,467,7332,7345,9878,10299],"usedEvents":[453,459,6936]}],"src":"39:3506:1"},"id":1},"@ensuro/access-managed-proxy/contracts/AccessManagedProxyBase.sol":{"ast":{"absolutePath":"@ensuro/access-managed-proxy/contracts/AccessManagedProxyBase.sol","exportedSymbols":{"AccessManagedProxyBase":[443],"ERC1967Proxy":[7312],"IAccessManagedProxy":[488],"IAccessManager":[6842]},"id":444,"license":"Apache-2.0","nodeType":"SourceUnit","nodes":[{"id":332,"literals":["solidity","^","0.8",".0"],"nodeType":"PragmaDirective","src":"39:23:2"},{"absolutePath":"@openzeppelin/contracts/proxy/ERC1967/ERC1967Proxy.sol","file":"@openzeppelin/contracts/proxy/ERC1967/ERC1967Proxy.sol","id":334,"nameLocation":"-1:-1:-1","nodeType":"ImportDirective","scope":444,"sourceUnit":7313,"src":"64:84:2","symbolAliases":[{"foreign":{"id":333,"name":"ERC1967Proxy","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7312,"src":"72:12:2","typeDescriptions":{}},"nameLocation":"-1:-1:-1"}],"unitAlias":""},{"absolutePath":"@openzeppelin/contracts/access/manager/IAccessManager.sol","file":"@openzeppelin/contracts/access/manager/IAccessManager.sol","id":336,"nameLocation":"-1:-1:-1","nodeType":"ImportDirective","scope":444,"sourceUnit":6843,"src":"149:89:2","symbolAliases":[{"foreign":{"id":335,"name":"IAccessManager","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6842,"src":"157:14:2","typeDescriptions":{}},"nameLocation":"-1:-1:-1"}],"unitAlias":""},{"absolutePath":"@ensuro/access-managed-proxy/contracts/interfaces/IAccessManagedProxy.sol","file":"./interfaces/IAccessManagedProxy.sol","id":338,"nameLocation":"-1:-1:-1","nodeType":"ImportDirective","scope":444,"sourceUnit":489,"src":"239:73:2","symbolAliases":[{"foreign":{"id":337,"name":"IAccessManagedProxy","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":488,"src":"247:19:2","typeDescriptions":{}},"nameLocation":"-1:-1:-1"}],"unitAlias":""},{"abstract":true,"baseContracts":[{"baseName":{"id":340,"name":"ERC1967Proxy","nameLocations":["1142:12:2"],"nodeType":"IdentifierPath","referencedDeclaration":7312,"src":"1142:12:2"},"id":341,"nodeType":"InheritanceSpecifier","src":"1142:12:2"},{"baseName":{"id":342,"name":"IAccessManagedProxy","nameLocations":["1156:19:2"],"nodeType":"IdentifierPath","referencedDeclaration":488,"src":"1156:19:2"},"id":343,"nodeType":"InheritanceSpecifier","src":"1156:19:2"}],"canonicalName":"AccessManagedProxyBase","contractDependencies":[],"contractKind":"contract","documentation":{"id":339,"nodeType":"StructuredDocumentation","src":"314:783:2","text":" @title AccessManagedProxyBase\n @notice Proxy contract using IAccessManager to manage access control before delegating calls.\n @dev It's a variant of ERC1967Proxy.\n      Currently the check is executed on any call received by the proxy contract even calls to view methods\n      (staticcall). In the setup of the ACCESS_MANAGER permissions you would want to make all the views and pure\n      functions enabled for the PUBLIC_ROLE.\n      This base contract delegates on descendent contracts the storage of the ACCESS_MANAGER.\n      Check https://forum.openzeppelin.com/t/accessmanagedproxy-is-a-good-idea/41917 for a discussion on the\n      advantages and disadvantages of using it.\n @custom:security-contact security@ensuro.co\n @author Ensuro"},"fullyImplemented":false,"id":443,"linearizedBaseContracts":[443,488,7312,7642],"name":"AccessManagedProxyBase","nameLocation":"1116:22:2","nodeType":"ContractDefinition","nodes":[{"body":{"id":355,"nodeType":"Block","src":"1943:2:2","statements":[]},"documentation":{"id":344,"nodeType":"StructuredDocumentation","src":"1180:660:2","text":" @notice Constructor of the proxy, defining the implementation and the access manager\n @dev Initializes the upgradeable proxy with an initial implementation specified by `implementation` and\n      with `manager` as the ACCESS_MANAGER that will handle access control.\n @param implementation The initial implementation contract.\n @param _data If nonempty, it's used as data in a delegate call to `implementation`. This will typically be an\n              encoded function call, and allows initializing the storage of the proxy like a Solidity constructor.\n @custom:pre If `_data` is empty, `msg.value` must be zero."},"id":356,"implemented":true,"kind":"constructor","modifiers":[{"arguments":[{"id":351,"name":"implementation","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":346,"src":"1920:14:2","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":352,"name":"_data","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":348,"src":"1936:5:2","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}}],"id":353,"kind":"baseConstructorSpecifier","modifierName":{"id":350,"name":"ERC1967Proxy","nameLocations":["1907:12:2"],"nodeType":"IdentifierPath","referencedDeclaration":7312,"src":"1907:12:2"},"nodeType":"ModifierInvocation","src":"1907:35:2"}],"name":"","nameLocation":"-1:-1:-1","nodeType":"FunctionDefinition","parameters":{"id":349,"nodeType":"ParameterList","parameters":[{"constant":false,"id":346,"mutability":"mutable","name":"implementation","nameLocation":"1863:14:2","nodeType":"VariableDeclaration","scope":356,"src":"1855:22:2","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":345,"name":"address","nodeType":"ElementaryTypeName","src":"1855:7:2","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":348,"mutability":"mutable","name":"_data","nameLocation":"1892:5:2","nodeType":"VariableDeclaration","scope":356,"src":"1879:18:2","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes"},"typeName":{"id":347,"name":"bytes","nodeType":"ElementaryTypeName","src":"1879:5:2","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"}],"src":"1854:44:2"},"returnParameters":{"id":354,"nodeType":"ParameterList","parameters":[],"src":"1943:0:2"},"scope":443,"src":"1843:102:2","stateMutability":"payable","virtual":false,"visibility":"internal"},{"baseFunctions":[480],"documentation":{"id":357,"nodeType":"StructuredDocumentation","src":"1949:35:2","text":"@inheritdoc IAccessManagedProxy"},"functionSelector":"3a7b7a39","id":363,"implemented":false,"kind":"function","modifiers":[],"name":"ACCESS_MANAGER","nameLocation":"2047:14:2","nodeType":"FunctionDefinition","parameters":{"id":358,"nodeType":"ParameterList","parameters":[],"src":"2061:2:2"},"returnParameters":{"id":362,"nodeType":"ParameterList","parameters":[{"constant":false,"id":361,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":363,"src":"2093:14:2","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_contract$_IAccessManager_$6842","typeString":"contract IAccessManager"},"typeName":{"id":360,"nodeType":"UserDefinedTypeName","pathNode":{"id":359,"name":"IAccessManager","nameLocations":["2093:14:2"],"nodeType":"IdentifierPath","referencedDeclaration":6842,"src":"2093:14:2"},"referencedDeclaration":6842,"src":"2093:14:2","typeDescriptions":{"typeIdentifier":"t_contract$_IAccessManager_$6842","typeString":"contract IAccessManager"}},"visibility":"internal"}],"src":"2092:16:2"},"scope":443,"src":"2038:71:2","stateMutability":"view","virtual":true,"visibility":"public"},{"baseFunctions":[473],"body":{"id":375,"nodeType":"Block","src":"2212:43:2","statements":[{"expression":{"arguments":[{"arguments":[],"expression":{"argumentTypes":[],"id":371,"name":"ACCESS_MANAGER","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":363,"src":"2233:14:2","typeDescriptions":{"typeIdentifier":"t_function_internal_view$__$returns$_t_contract$_IAccessManager_$6842_$","typeString":"function () view returns (contract IAccessManager)"}},"id":372,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"2233:16:2","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_contract$_IAccessManager_$6842","typeString":"contract IAccessManager"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_contract$_IAccessManager_$6842","typeString":"contract IAccessManager"}],"id":370,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"2225:7:2","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":369,"name":"address","nodeType":"ElementaryTypeName","src":"2225:7:2","typeDescriptions":{}}},"id":373,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"2225:25:2","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"functionReturnParameters":368,"id":374,"nodeType":"Return","src":"2218:32:2"}]},"documentation":{"id":364,"nodeType":"StructuredDocumentation","src":"2113:35:2","text":"@inheritdoc IAccessManagedProxy"},"functionSelector":"bf7e214f","id":376,"implemented":true,"kind":"function","modifiers":[],"name":"authority","nameLocation":"2160:9:2","nodeType":"FunctionDefinition","parameters":{"id":365,"nodeType":"ParameterList","parameters":[],"src":"2169:2:2"},"returnParameters":{"id":368,"nodeType":"ParameterList","parameters":[{"constant":false,"id":367,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":376,"src":"2203:7:2","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":366,"name":"address","nodeType":"ElementaryTypeName","src":"2203:7:2","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"2202:9:2"},"scope":443,"src":"2151:104:2","stateMutability":"view","virtual":true,"visibility":"external"},{"baseFunctions":[7617],"body":{"id":433,"nodeType":"Block","src":"2757:380:2","statements":[{"assignments":[384],"declarations":[{"constant":false,"id":384,"mutability":"mutable","name":"selector","nameLocation":"2770:8:2","nodeType":"VariableDeclaration","scope":433,"src":"2763:15:2","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes4","typeString":"bytes4"},"typeName":{"id":383,"name":"bytes4","nodeType":"ElementaryTypeName","src":"2763:6:2","typeDescriptions":{"typeIdentifier":"t_bytes4","typeString":"bytes4"}},"visibility":"internal"}],"id":393,"initialValue":{"arguments":[{"baseExpression":{"expression":{"id":387,"name":"msg","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-15,"src":"2788:3:2","typeDescriptions":{"typeIdentifier":"t_magic_message","typeString":"msg"}},"id":388,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"2792:4:2","memberName":"data","nodeType":"MemberAccess","src":"2788:8:2","typeDescriptions":{"typeIdentifier":"t_bytes_calldata_ptr","typeString":"bytes calldata"}},"endExpression":{"hexValue":"34","id":390,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"2799:1:2","typeDescriptions":{"typeIdentifier":"t_rational_4_by_1","typeString":"int_const 4"},"value":"4"},"id":391,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"IndexRangeAccess","src":"2788:13:2","startExpression":{"hexValue":"30","id":389,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"2797:1:2","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"typeDescriptions":{"typeIdentifier":"t_bytes_calldata_ptr_slice","typeString":"bytes calldata slice"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes_calldata_ptr_slice","typeString":"bytes calldata slice"}],"id":386,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"2781:6:2","typeDescriptions":{"typeIdentifier":"t_type$_t_bytes4_$","typeString":"type(bytes4)"},"typeName":{"id":385,"name":"bytes4","nodeType":"ElementaryTypeName","src":"2781:6:2","typeDescriptions":{}}},"id":392,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"2781:21:2","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes4","typeString":"bytes4"}},"nodeType":"VariableDeclarationStatement","src":"2763:39:2"},{"assignments":[395],"declarations":[{"constant":false,"id":395,"mutability":"mutable","name":"immediate","nameLocation":"2813:9:2","nodeType":"VariableDeclaration","scope":433,"src":"2808:14:2","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":394,"name":"bool","nodeType":"ElementaryTypeName","src":"2808:4:2","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"}],"id":399,"initialValue":{"arguments":[{"id":397,"name":"selector","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":384,"src":"2833:8:2","typeDescriptions":{"typeIdentifier":"t_bytes4","typeString":"bytes4"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes4","typeString":"bytes4"}],"id":396,"name":"_skipAC","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":442,"src":"2825:7:2","typeDescriptions":{"typeIdentifier":"t_function_internal_view$_t_bytes4_$returns$_t_bool_$","typeString":"function (bytes4) view returns (bool)"}},"id":398,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"2825:17:2","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"nodeType":"VariableDeclarationStatement","src":"2808:34:2"},{"condition":{"id":401,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"UnaryOperation","operator":"!","prefix":true,"src":"2924:10:2","subExpression":{"id":400,"name":"immediate","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":395,"src":"2925:9:2","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":426,"nodeType":"IfStatement","src":"2920:176:2","trueBody":{"id":425,"nodeType":"Block","src":"2936:160:2","statements":[{"expression":{"id":415,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"components":[{"id":402,"name":"immediate","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":395,"src":"2945:9:2","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},null],"id":403,"isConstant":false,"isInlineArray":false,"isLValue":true,"isPure":false,"lValueRequested":true,"nodeType":"TupleExpression","src":"2944:13:2","typeDescriptions":{"typeIdentifier":"t_tuple$_t_bool_$__$","typeString":"tuple(bool,)"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"arguments":[{"expression":{"id":407,"name":"msg","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-15,"src":"2985:3:2","typeDescriptions":{"typeIdentifier":"t_magic_message","typeString":"msg"}},"id":408,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"2989:6:2","memberName":"sender","nodeType":"MemberAccess","src":"2985:10:2","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"arguments":[{"id":411,"name":"this","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-28,"src":"3005:4:2","typeDescriptions":{"typeIdentifier":"t_contract$_AccessManagedProxyBase_$443","typeString":"contract AccessManagedProxyBase"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_contract$_AccessManagedProxyBase_$443","typeString":"contract AccessManagedProxyBase"}],"id":410,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"2997:7:2","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":409,"name":"address","nodeType":"ElementaryTypeName","src":"2997:7:2","typeDescriptions":{}}},"id":412,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"2997:13:2","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":413,"name":"selector","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":384,"src":"3012:8:2","typeDescriptions":{"typeIdentifier":"t_bytes4","typeString":"bytes4"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_bytes4","typeString":"bytes4"}],"expression":{"arguments":[],"expression":{"argumentTypes":[],"id":404,"name":"ACCESS_MANAGER","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":363,"src":"2960:14:2","typeDescriptions":{"typeIdentifier":"t_function_internal_view$__$returns$_t_contract$_IAccessManager_$6842_$","typeString":"function () view returns (contract IAccessManager)"}},"id":405,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"2960:16:2","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_contract$_IAccessManager_$6842","typeString":"contract IAccessManager"}},"id":406,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"2977:7:2","memberName":"canCall","nodeType":"MemberAccess","referencedDeclaration":6586,"src":"2960:24:2","typeDescriptions":{"typeIdentifier":"t_function_external_view$_t_address_$_t_address_$_t_bytes4_$returns$_t_bool_$_t_uint32_$","typeString":"function (address,address,bytes4) view external returns (bool,uint32)"}},"id":414,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"2960:61:2","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$_t_bool_$_t_uint32_$","typeString":"tuple(bool,uint32)"}},"src":"2944:77:2","typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":416,"nodeType":"ExpressionStatement","src":"2944:77:2"},{"condition":{"id":418,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"UnaryOperation","operator":"!","prefix":true,"src":"3033:10:2","subExpression":{"id":417,"name":"immediate","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":395,"src":"3034:9:2","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":424,"nodeType":"IfStatement","src":"3029:60:2","trueBody":{"errorCall":{"arguments":[{"expression":{"id":420,"name":"msg","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-15,"src":"3078:3:2","typeDescriptions":{"typeIdentifier":"t_magic_message","typeString":"msg"}},"id":421,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"3082:6:2","memberName":"sender","nodeType":"MemberAccess","src":"3078:10:2","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"id":419,"name":"AccessManagedUnauthorized","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":463,"src":"3052:25:2","typeDescriptions":{"typeIdentifier":"t_function_error_pure$_t_address_$returns$_t_error_$","typeString":"function (address) pure returns (error)"}},"id":422,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"3052:37:2","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_error","typeString":"error"}},"id":423,"nodeType":"RevertStatement","src":"3045:44:2"}}]}},{"expression":{"arguments":[{"id":430,"name":"implementation","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":379,"src":"3117:14:2","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"expression":{"id":427,"name":"super","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-25,"src":"3101:5:2","typeDescriptions":{"typeIdentifier":"t_type$_t_super$_AccessManagedProxyBase_$443_$","typeString":"type(contract super AccessManagedProxyBase)"}},"id":429,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"3107:9:2","memberName":"_delegate","nodeType":"MemberAccess","referencedDeclaration":7617,"src":"3101:15:2","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_address_$returns$__$","typeString":"function (address)"}},"id":431,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"3101:31:2","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":432,"nodeType":"ExpressionStatement","src":"3101:31:2"}]},"documentation":{"id":377,"nodeType":"StructuredDocumentation","src":"2259:426:2","text":" @notice Intercepts the super._delegate call to implement access control\n @dev Checks with the ACCESS_MANAGER if msg.sender is authorized to call the current call's function,\n and if so, delegates the current call to `implementation`.\n @param implementation The implementation contract\n This function does not return to its internal call site, it will return directly to the external caller."},"id":434,"implemented":true,"kind":"function","modifiers":[],"name":"_delegate","nameLocation":"2697:9:2","nodeType":"FunctionDefinition","overrides":{"id":381,"nodeType":"OverrideSpecifier","overrides":[],"src":"2748:8:2"},"parameters":{"id":380,"nodeType":"ParameterList","parameters":[{"constant":false,"id":379,"mutability":"mutable","name":"implementation","nameLocation":"2715:14:2","nodeType":"VariableDeclaration","scope":434,"src":"2707:22:2","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":378,"name":"address","nodeType":"ElementaryTypeName","src":"2707:7:2","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"2706:24:2"},"returnParameters":{"id":382,"nodeType":"ParameterList","parameters":[],"src":"2757:0:2"},"scope":443,"src":"2688:449:2","stateMutability":"nonpayable","virtual":true,"visibility":"internal"},{"documentation":{"id":435,"nodeType":"StructuredDocumentation","src":"3141:436:2","text":" @notice Returns whether to skip the access control validation or not\n @dev Hook called before ACCESS_MANAGER.canCall to enable skipping the call to the access manager for performance\n      reasons (for example on views) or to remove access control for other specific cases\n @param selector The selector of the method called\n @return Whether the access control using ACCESS_MANAGER should be skipped or not"},"id":442,"implemented":false,"kind":"function","modifiers":[],"name":"_skipAC","nameLocation":"3589:7:2","nodeType":"FunctionDefinition","parameters":{"id":438,"nodeType":"ParameterList","parameters":[{"constant":false,"id":437,"mutability":"mutable","name":"selector","nameLocation":"3604:8:2","nodeType":"VariableDeclaration","scope":442,"src":"3597:15:2","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes4","typeString":"bytes4"},"typeName":{"id":436,"name":"bytes4","nodeType":"ElementaryTypeName","src":"3597:6:2","typeDescriptions":{"typeIdentifier":"t_bytes4","typeString":"bytes4"}},"visibility":"internal"}],"src":"3596:17:2"},"returnParameters":{"id":441,"nodeType":"ParameterList","parameters":[{"constant":false,"id":440,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":442,"src":"3645:4:2","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":439,"name":"bool","nodeType":"ElementaryTypeName","src":"3645:4:2","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"}],"src":"3644:6:2"},"scope":443,"src":"3580:71:2","stateMutability":"view","virtual":true,"visibility":"internal"}],"scope":444,"src":"1098:2555:2","usedErrors":[463,467,7332,7345,9878,10299],"usedEvents":[453,459,6936]}],"src":"39:3615:2"},"id":2},"@ensuro/access-managed-proxy/contracts/interfaces/IAccessManagedProxy.sol":{"ast":{"absolutePath":"@ensuro/access-managed-proxy/contracts/interfaces/IAccessManagedProxy.sol","exportedSymbols":{"IAccessManagedProxy":[488],"IAccessManager":[6842]},"id":489,"license":"Apache-2.0","nodeType":"SourceUnit","nodes":[{"id":445,"literals":["solidity","^","0.8",".28"],"nodeType":"PragmaDirective","src":"39:24:3"},{"absolutePath":"@openzeppelin/contracts/access/manager/IAccessManager.sol","file":"@openzeppelin/contracts/access/manager/IAccessManager.sol","id":447,"nameLocation":"-1:-1:-1","nodeType":"ImportDirective","scope":489,"sourceUnit":6843,"src":"65:89:3","symbolAliases":[{"foreign":{"id":446,"name":"IAccessManager","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6842,"src":"73:14:3","typeDescriptions":{}},"nameLocation":"-1:-1:-1"}],"unitAlias":""},{"abstract":false,"baseContracts":[],"canonicalName":"IAccessManagedProxy","contractDependencies":[],"contractKind":"interface","documentation":{"id":448,"nodeType":"StructuredDocumentation","src":"156:462:3","text":" @title IAccessManagedProxy - Interface of AccessManagedProxy contracts\n @notice This interface gives observability of the access control setup\n @dev The `ACCESS_MANAGER()` is the AccessManager contract that stores the access roles for most of the methods,\n except those listed in `PASS_THRU_METHODS()` that are forwarded directly to the proxy and don't have access control\n (at least not by the AccessManager contract).\n @author Ensuro"},"fullyImplemented":false,"id":488,"linearizedBaseContracts":[488],"name":"IAccessManagedProxy","nameLocation":"629:19:3","nodeType":"ContractDefinition","nodes":[{"anonymous":false,"documentation":{"id":449,"nodeType":"StructuredDocumentation","src":"653:189:3","text":" @notice The ACCESS_MANAGER that manages the access controls was updated\n @dev Authority that manages this contract was updated. Uses same interface as OZ's IAccessManaged"},"eventSelector":"2f658b440c35314f52658ea8a740e05b284cdc84dc9ae01e891f21b8933e7cad","id":453,"name":"AuthorityUpdated","nameLocation":"901:16:3","nodeType":"EventDefinition","parameters":{"id":452,"nodeType":"ParameterList","parameters":[{"constant":false,"id":451,"indexed":false,"mutability":"mutable","name":"authority","nameLocation":"926:9:3","nodeType":"VariableDeclaration","scope":453,"src":"918:17:3","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":450,"name":"address","nodeType":"ElementaryTypeName","src":"918:7:3","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"917:19:3"},"src":"895:42:3"},{"anonymous":false,"documentation":{"id":454,"nodeType":"StructuredDocumentation","src":"941:65:3","text":" @dev Emitted when the passThruMethods has changed."},"eventSelector":"3da94442c0a9daca8284d03a02aafdc638dfaae447d5d7879542573a9095b493","id":459,"name":"PassThruMethodsChanged","nameLocation":"1015:22:3","nodeType":"EventDefinition","parameters":{"id":458,"nodeType":"ParameterList","parameters":[{"constant":false,"id":457,"indexed":false,"mutability":"mutable","name":"newPassThruMethods","nameLocation":"1047:18:3","nodeType":"VariableDeclaration","scope":459,"src":"1038:27:3","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_array$_t_bytes4_$dyn_memory_ptr","typeString":"bytes4[]"},"typeName":{"baseType":{"id":455,"name":"bytes4","nodeType":"ElementaryTypeName","src":"1038:6:3","typeDescriptions":{"typeIdentifier":"t_bytes4","typeString":"bytes4"}},"id":456,"nodeType":"ArrayTypeName","src":"1038:8:3","typeDescriptions":{"typeIdentifier":"t_array$_t_bytes4_$dyn_storage_ptr","typeString":"bytes4[]"}},"visibility":"internal"}],"src":"1037:29:3"},"src":"1009:58:3"},{"errorSelector":"068ca9d8","id":463,"name":"AccessManagedUnauthorized","nameLocation":"1121:25:3","nodeType":"ErrorDefinition","parameters":{"id":462,"nodeType":"ParameterList","parameters":[{"constant":false,"id":461,"mutability":"mutable","name":"caller","nameLocation":"1155:6:3","nodeType":"VariableDeclaration","scope":463,"src":"1147:14:3","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":460,"name":"address","nodeType":"ElementaryTypeName","src":"1147:7:3","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"1146:16:3"},"src":"1115:48:3"},{"errorSelector":"c2f31e5e","id":467,"name":"AccessManagedInvalidAuthority","nameLocation":"1172:29:3","nodeType":"ErrorDefinition","parameters":{"id":466,"nodeType":"ParameterList","parameters":[{"constant":false,"id":465,"mutability":"mutable","name":"authority","nameLocation":"1210:9:3","nodeType":"VariableDeclaration","scope":467,"src":"1202:17:3","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":464,"name":"address","nodeType":"ElementaryTypeName","src":"1202:7:3","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"1201:19:3"},"src":"1166:55:3"},{"documentation":{"id":468,"nodeType":"StructuredDocumentation","src":"1225:169:3","text":" @notice Returns the current authority.\n @dev Returns the current authority. Same as ACCESS_MANAGER(), added for compatibility with OZ's IAccessManaged"},"functionSelector":"bf7e214f","id":473,"implemented":false,"kind":"function","modifiers":[],"name":"authority","nameLocation":"1406:9:3","nodeType":"FunctionDefinition","parameters":{"id":469,"nodeType":"ParameterList","parameters":[],"src":"1415:2:3"},"returnParameters":{"id":472,"nodeType":"ParameterList","parameters":[{"constant":false,"id":471,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":473,"src":"1441:7:3","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":470,"name":"address","nodeType":"ElementaryTypeName","src":"1441:7:3","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"1440:9:3"},"scope":488,"src":"1397:53:3","stateMutability":"view","virtual":false,"visibility":"external"},{"documentation":{"id":474,"nodeType":"StructuredDocumentation","src":"1454:111:3","text":" @notice AccessManager contract that handles the permissions to access the implementation methods"},"functionSelector":"3a7b7a39","id":480,"implemented":false,"kind":"function","modifiers":[],"name":"ACCESS_MANAGER","nameLocation":"1628:14:3","nodeType":"FunctionDefinition","parameters":{"id":475,"nodeType":"ParameterList","parameters":[],"src":"1642:2:3"},"returnParameters":{"id":479,"nodeType":"ParameterList","parameters":[{"constant":false,"id":478,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":480,"src":"1668:14:3","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_contract$_IAccessManager_$6842","typeString":"contract IAccessManager"},"typeName":{"id":477,"nodeType":"UserDefinedTypeName","pathNode":{"id":476,"name":"IAccessManager","nameLocations":["1668:14:3"],"nodeType":"IdentifierPath","referencedDeclaration":6842,"src":"1668:14:3"},"referencedDeclaration":6842,"src":"1668:14:3","typeDescriptions":{"typeIdentifier":"t_contract$_IAccessManager_$6842","typeString":"contract IAccessManager"}},"visibility":"internal"}],"src":"1667:16:3"},"scope":488,"src":"1619:65:3","stateMutability":"view","virtual":false,"visibility":"external"},{"documentation":{"id":481,"nodeType":"StructuredDocumentation","src":"1688:184:3","text":" @notice Gives observability to the methods that are skipped from access control\n @return methods The list of method selectors that skip ACCESS_MANAGER access control"},"functionSelector":"14416c03","id":487,"implemented":false,"kind":"function","modifiers":[],"name":"PASS_THRU_METHODS","nameLocation":"1935:17:3","nodeType":"FunctionDefinition","parameters":{"id":482,"nodeType":"ParameterList","parameters":[],"src":"1952:2:3"},"returnParameters":{"id":486,"nodeType":"ParameterList","parameters":[{"constant":false,"id":485,"mutability":"mutable","name":"methods","nameLocation":"1994:7:3","nodeType":"VariableDeclaration","scope":487,"src":"1978:23:3","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_array$_t_bytes4_$dyn_memory_ptr","typeString":"bytes4[]"},"typeName":{"baseType":{"id":483,"name":"bytes4","nodeType":"ElementaryTypeName","src":"1978:6:3","typeDescriptions":{"typeIdentifier":"t_bytes4","typeString":"bytes4"}},"id":484,"nodeType":"ArrayTypeName","src":"1978:8:3","typeDescriptions":{"typeIdentifier":"t_array$_t_bytes4_$dyn_storage_ptr","typeString":"bytes4[]"}},"visibility":"internal"}],"src":"1977:25:3"},"scope":488,"src":"1926:77:3","stateMutability":"view","virtual":false,"visibility":"external"}],"scope":489,"src":"619:1386:3","usedErrors":[463,467],"usedEvents":[453,459]}],"src":"39:1967:3"},"id":3},"@ensuro/swaplibrary/contracts/CurveRoutes.sol":{"ast":{"absolutePath":"@ensuro/swaplibrary/contracts/CurveRoutes.sol","exportedSymbols":{"BytesLib":[25221],"CurveRoutes":[1078],"ICurveRouter":[2156]},"id":1079,"license":"Apache-2.0","nodeType":"SourceUnit","nodes":[{"id":490,"literals":["solidity","^","0.8",".0"],"nodeType":"PragmaDirective","src":"39:23:4"},{"absolutePath":"@ensuro/swaplibrary/contracts/dependencies/ICurveRouter.sol","file":"./dependencies/ICurveRouter.sol","id":492,"nameLocation":"-1:-1:-1","nodeType":"ImportDirective","scope":1079,"sourceUnit":2157,"src":"64:61:4","symbolAliases":[{"foreign":{"id":491,"name":"ICurveRouter","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2156,"src":"72:12:4","typeDescriptions":{}},"nameLocation":"-1:-1:-1"}],"unitAlias":""},{"absolutePath":"solidity-bytes-utils/contracts/BytesLib.sol","file":"solidity-bytes-utils/contracts/BytesLib.sol","id":494,"nameLocation":"-1:-1:-1","nodeType":"ImportDirective","scope":1079,"sourceUnit":25222,"src":"126:69:4","symbolAliases":[{"foreign":{"id":493,"name":"BytesLib","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":25221,"src":"134:8:4","typeDescriptions":{}},"nameLocation":"-1:-1:-1"}],"unitAlias":""},{"abstract":false,"baseContracts":[],"canonicalName":"CurveRoutes","contractDependencies":[],"contractKind":"library","documentation":{"id":495,"nodeType":"StructuredDocumentation","src":"197:641:4","text":" @title Library to access a set of curve routes stored as tightly packed bytes\n @dev The format is a concatenation of bytes, packed (ethers.solidityPack in js) with the following fields\n      Fields:\n      <ICurveRouter router>\n      <uint8 numberOfRoutes>\n      -- for each route --\n      <uint8 numberOfSwaps>\n      <address route[i] for i in range((numberOfSwaps * 2) + 1)\n      <uint8 swapParam[i][j] for i in range(numberOfSwaps) for j in range(5)>\n      <address pool[i] for in range(numberOfSwaps)\n      -- end - for each route --\n @custom:security-contact security@ensuro.co\n @author Ensuro"},"fullyImplemented":true,"id":1078,"linearizedBaseContracts":[1078],"name":"CurveRoutes","nameLocation":"847:11:4","nodeType":"ContractDefinition","nodes":[{"global":false,"id":498,"libraryName":{"id":496,"name":"BytesLib","nameLocations":["869:8:4"],"nodeType":"IdentifierPath","referencedDeclaration":25221,"src":"869:8:4"},"nodeType":"UsingForDirective","src":"863:25:4","typeName":{"id":497,"name":"bytes","nodeType":"ElementaryTypeName","src":"882:5:4","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}}},{"constant":true,"id":501,"mutability":"constant","name":"ADDRESS_SIZE","nameLocation":"917:12:4","nodeType":"VariableDeclaration","scope":1078,"src":"891:43:4","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":499,"name":"uint256","nodeType":"ElementaryTypeName","src":"891:7:4","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"value":{"hexValue":"3230","id":500,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"932:2:4","typeDescriptions":{"typeIdentifier":"t_rational_20_by_1","typeString":"int_const 20"},"value":"20"},"visibility":"internal"},{"constant":true,"id":504,"mutability":"constant","name":"UINT8_SIZE","nameLocation":"964:10:4","nodeType":"VariableDeclaration","scope":1078,"src":"938:40:4","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":502,"name":"uint256","nodeType":"ElementaryTypeName","src":"938:7:4","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"value":{"hexValue":"31","id":503,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"977:1:4","typeDescriptions":{"typeIdentifier":"t_rational_1_by_1","typeString":"int_const 1"},"value":"1"},"visibility":"internal"},{"constant":true,"id":507,"mutability":"constant","name":"MAX_SWAPS","nameLocation":"1008:9:4","nodeType":"VariableDeclaration","scope":1078,"src":"982:39:4","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":505,"name":"uint256","nodeType":"ElementaryTypeName","src":"982:7:4","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"value":{"hexValue":"35","id":506,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"1020:1:4","typeDescriptions":{"typeIdentifier":"t_rational_5_by_1","typeString":"int_const 5"},"value":"5"},"visibility":"internal"},{"constant":true,"id":510,"mutability":"constant","name":"ROUTER_OFFSET","nameLocation":"1051:13:4","nodeType":"VariableDeclaration","scope":1078,"src":"1025:43:4","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":508,"name":"uint256","nodeType":"ElementaryTypeName","src":"1025:7:4","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"value":{"hexValue":"30","id":509,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"1067:1:4","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"visibility":"internal"},{"constant":true,"id":515,"mutability":"constant","name":"N_ROUTES_OFFSET","nameLocation":"1098:15:4","nodeType":"VariableDeclaration","scope":1078,"src":"1072:72:4","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":511,"name":"uint256","nodeType":"ElementaryTypeName","src":"1072:7:4","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"value":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":514,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"leftExpression":{"id":512,"name":"ROUTER_OFFSET","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":510,"src":"1116:13:4","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"+","rightExpression":{"id":513,"name":"ADDRESS_SIZE","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":501,"src":"1132:12:4","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"1116:28:4","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":true,"id":520,"mutability":"constant","name":"ROUTES_BASE_OFFSET","nameLocation":"1174:18:4","nodeType":"VariableDeclaration","scope":1078,"src":"1148:75:4","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":516,"name":"uint256","nodeType":"ElementaryTypeName","src":"1148:7:4","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"value":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":519,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"leftExpression":{"id":517,"name":"N_ROUTES_OFFSET","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":515,"src":"1195:15:4","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"+","rightExpression":{"id":518,"name":"UINT8_SIZE","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":504,"src":"1213:10:4","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"1195:28:4","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"canonicalName":"CurveRoutes.CurveRoute","id":536,"members":[{"constant":false,"id":524,"mutability":"mutable","name":"route","nameLocation":"1264:5:4","nodeType":"VariableDeclaration","scope":536,"src":"1252:17:4","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_array$_t_address_$11_storage_ptr","typeString":"address[11]"},"typeName":{"baseType":{"id":521,"name":"address","nodeType":"ElementaryTypeName","src":"1252:7:4","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"id":523,"length":{"hexValue":"3131","id":522,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"1260:2:4","typeDescriptions":{"typeIdentifier":"t_rational_11_by_1","typeString":"int_const 11"},"value":"11"},"nodeType":"ArrayTypeName","src":"1252:11:4","typeDescriptions":{"typeIdentifier":"t_array$_t_address_$11_storage_ptr","typeString":"address[11]"}},"visibility":"internal"},{"constant":false,"id":531,"mutability":"mutable","name":"swapParams","nameLocation":"1482:10:4","nodeType":"VariableDeclaration","scope":536,"src":"1460:32:4","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_array$_t_array$_t_uint256_$5_storage_$5_storage_ptr","typeString":"uint256[5][5]"},"typeName":{"baseType":{"baseType":{"id":526,"name":"uint256","nodeType":"ElementaryTypeName","src":"1460:7:4","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":528,"length":{"id":527,"name":"MAX_SWAPS","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":507,"src":"1468:9:4","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"ArrayTypeName","src":"1460:18:4","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$5_storage_ptr","typeString":"uint256[5]"}},"id":530,"length":{"hexValue":"35","id":529,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"1479:1:4","typeDescriptions":{"typeIdentifier":"t_rational_5_by_1","typeString":"int_const 5"},"value":"5"},"nodeType":"ArrayTypeName","src":"1460:21:4","typeDescriptions":{"typeIdentifier":"t_array$_t_array$_t_uint256_$5_storage_$5_storage_ptr","typeString":"uint256[5][5]"}},"visibility":"internal"},{"constant":false,"id":535,"mutability":"mutable","name":"pools","nameLocation":"1517:5:4","nodeType":"VariableDeclaration","scope":536,"src":"1498:24:4","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_array$_t_address_$5_storage_ptr","typeString":"address[5]"},"typeName":{"baseType":{"id":532,"name":"address","nodeType":"ElementaryTypeName","src":"1498:7:4","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"id":534,"length":{"id":533,"name":"MAX_SWAPS","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":507,"src":"1506:9:4","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"ArrayTypeName","src":"1498:18:4","typeDescriptions":{"typeIdentifier":"t_array$_t_address_$5_storage_ptr","typeString":"address[5]"}},"visibility":"internal"}],"name":"CurveRoute","nameLocation":"1235:10:4","nodeType":"StructDefinition","scope":1078,"src":"1228:299:4","visibility":"public"},{"errorSelector":"e3683637","id":538,"name":"CurveRouterCantBeZero","nameLocation":"1537:21:4","nodeType":"ErrorDefinition","parameters":{"id":537,"nodeType":"ParameterList","parameters":[],"src":"1558:2:4"},"src":"1531:30:4"},{"errorSelector":"0f64c3f8","id":540,"name":"AtLeastOneRoute","nameLocation":"1570:15:4","nodeType":"ErrorDefinition","parameters":{"id":539,"nodeType":"ParameterList","parameters":[],"src":"1585:2:4"},"src":"1564:24:4"},{"errorSelector":"947d5a84","id":542,"name":"InvalidLength","nameLocation":"1597:13:4","nodeType":"ErrorDefinition","parameters":{"id":541,"nodeType":"ParameterList","parameters":[],"src":"1610:2:4"},"src":"1591:22:4"},{"errorSelector":"5875b111","id":547,"name":"InvalidRoute","nameLocation":"1622:12:4","nodeType":"ErrorDefinition","parameters":{"id":546,"nodeType":"ParameterList","parameters":[{"constant":false,"id":545,"mutability":"mutable","name":"route","nameLocation":"1646:5:4","nodeType":"VariableDeclaration","scope":547,"src":"1635:16:4","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_struct$_CurveRoute_$536_memory_ptr","typeString":"struct CurveRoutes.CurveRoute"},"typeName":{"id":544,"nodeType":"UserDefinedTypeName","pathNode":{"id":543,"name":"CurveRoute","nameLocations":["1635:10:4"],"nodeType":"IdentifierPath","referencedDeclaration":536,"src":"1635:10:4"},"referencedDeclaration":536,"src":"1635:10:4","typeDescriptions":{"typeIdentifier":"t_struct$_CurveRoute_$536_storage_ptr","typeString":"struct CurveRoutes.CurveRoute"}},"visibility":"internal"}],"src":"1634:18:4"},"src":"1616:37:4"},{"errorSelector":"b60616b2","id":551,"name":"TooManySwaps","nameLocation":"1662:12:4","nodeType":"ErrorDefinition","parameters":{"id":550,"nodeType":"ParameterList","parameters":[{"constant":false,"id":549,"mutability":"mutable","name":"nSwaps","nameLocation":"1681:6:4","nodeType":"VariableDeclaration","scope":551,"src":"1675:12:4","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"},"typeName":{"id":548,"name":"uint8","nodeType":"ElementaryTypeName","src":"1675:5:4","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}},"visibility":"internal"}],"src":"1674:14:4"},"src":"1656:33:4"},{"errorSelector":"8c9aec7b","id":557,"name":"RouteNotFound","nameLocation":"1698:13:4","nodeType":"ErrorDefinition","parameters":{"id":556,"nodeType":"ParameterList","parameters":[{"constant":false,"id":553,"mutability":"mutable","name":"tokenIn","nameLocation":"1720:7:4","nodeType":"VariableDeclaration","scope":557,"src":"1712:15:4","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":552,"name":"address","nodeType":"ElementaryTypeName","src":"1712:7:4","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":555,"mutability":"mutable","name":"tokenOut","nameLocation":"1737:8:4","nodeType":"VariableDeclaration","scope":557,"src":"1729:16:4","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":554,"name":"address","nodeType":"ElementaryTypeName","src":"1729:7:4","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"1711:35:4"},"src":"1692:55:4"},{"body":{"id":715,"nodeType":"Block","src":"1809:871:4","statements":[{"assignments":[564],"declarations":[{"constant":false,"id":564,"mutability":"mutable","name":"router","nameLocation":"1828:6:4","nodeType":"VariableDeclaration","scope":715,"src":"1815:19:4","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_contract$_ICurveRouter_$2156","typeString":"contract ICurveRouter"},"typeName":{"id":563,"nodeType":"UserDefinedTypeName","pathNode":{"id":562,"name":"ICurveRouter","nameLocations":["1815:12:4"],"nodeType":"IdentifierPath","referencedDeclaration":2156,"src":"1815:12:4"},"referencedDeclaration":2156,"src":"1815:12:4","typeDescriptions":{"typeIdentifier":"t_contract$_ICurveRouter_$2156","typeString":"contract ICurveRouter"}},"visibility":"internal"}],"id":571,"initialValue":{"arguments":[{"arguments":[{"id":568,"name":"ROUTER_OFFSET","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":510,"src":"1872:13:4","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"expression":{"id":566,"name":"curveRoutes","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":559,"src":"1850:11:4","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}},"id":567,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"1862:9:4","memberName":"toAddress","nodeType":"MemberAccess","referencedDeclaration":24978,"src":"1850:21:4","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_bytes_memory_ptr_$_t_uint256_$returns$_t_address_$attached_to$_t_bytes_memory_ptr_$","typeString":"function (bytes memory,uint256) pure returns (address)"}},"id":569,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"1850:36:4","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"id":565,"name":"ICurveRouter","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2156,"src":"1837:12:4","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_ICurveRouter_$2156_$","typeString":"type(contract ICurveRouter)"}},"id":570,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"1837:50:4","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_contract$_ICurveRouter_$2156","typeString":"contract ICurveRouter"}},"nodeType":"VariableDeclarationStatement","src":"1815:72:4"},{"condition":{"commonType":{"typeIdentifier":"t_address","typeString":"address"},"id":580,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"arguments":[{"id":574,"name":"router","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":564,"src":"1905:6:4","typeDescriptions":{"typeIdentifier":"t_contract$_ICurveRouter_$2156","typeString":"contract ICurveRouter"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_contract$_ICurveRouter_$2156","typeString":"contract ICurveRouter"}],"id":573,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"1897:7:4","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":572,"name":"address","nodeType":"ElementaryTypeName","src":"1897:7:4","typeDescriptions":{}}},"id":575,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"1897:15:4","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"arguments":[{"hexValue":"30","id":578,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"1924:1:4","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":577,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"1916:7:4","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":576,"name":"address","nodeType":"ElementaryTypeName","src":"1916:7:4","typeDescriptions":{}}},"id":579,"isConstant":false,"isLValue":false,"isPure":true,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"1916:10:4","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"src":"1897:29:4","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":584,"nodeType":"IfStatement","src":"1893:65:4","trueBody":{"errorCall":{"arguments":[],"expression":{"argumentTypes":[],"id":581,"name":"CurveRouterCantBeZero","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":538,"src":"1935:21:4","typeDescriptions":{"typeIdentifier":"t_function_error_pure$__$returns$_t_error_$","typeString":"function () pure returns (error)"}},"id":582,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"1935:23:4","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_error","typeString":"error"}},"id":583,"nodeType":"RevertStatement","src":"1928:30:4"}},{"assignments":[586],"declarations":[{"constant":false,"id":586,"mutability":"mutable","name":"nRoutes","nameLocation":"1970:7:4","nodeType":"VariableDeclaration","scope":715,"src":"1964:13:4","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"},"typeName":{"id":585,"name":"uint8","nodeType":"ElementaryTypeName","src":"1964:5:4","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}},"visibility":"internal"}],"id":591,"initialValue":{"arguments":[{"id":589,"name":"N_ROUTES_OFFSET","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":515,"src":"2000:15:4","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"expression":{"id":587,"name":"curveRoutes","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":559,"src":"1980:11:4","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}},"id":588,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"1992:7:4","memberName":"toUint8","nodeType":"MemberAccess","referencedDeclaration":25004,"src":"1980:19:4","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_bytes_memory_ptr_$_t_uint256_$returns$_t_uint8_$attached_to$_t_bytes_memory_ptr_$","typeString":"function (bytes memory,uint256) pure returns (uint8)"}},"id":590,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"1980:36:4","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}},"nodeType":"VariableDeclarationStatement","src":"1964:52:4"},{"condition":{"commonType":{"typeIdentifier":"t_uint8","typeString":"uint8"},"id":594,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":592,"name":"nRoutes","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":586,"src":"2026:7:4","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"hexValue":"30","id":593,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"2037:1:4","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"2026:12:4","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":598,"nodeType":"IfStatement","src":"2022:42:4","trueBody":{"errorCall":{"arguments":[],"expression":{"argumentTypes":[],"id":595,"name":"AtLeastOneRoute","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":540,"src":"2047:15:4","typeDescriptions":{"typeIdentifier":"t_function_error_pure$__$returns$_t_error_$","typeString":"function () pure returns (error)"}},"id":596,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"2047:17:4","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_error","typeString":"error"}},"id":597,"nodeType":"RevertStatement","src":"2040:24:4"}},{"assignments":[600],"declarations":[{"constant":false,"id":600,"mutability":"mutable","name":"offset","nameLocation":"2078:6:4","nodeType":"VariableDeclaration","scope":715,"src":"2070:14:4","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":599,"name":"uint256","nodeType":"ElementaryTypeName","src":"2070:7:4","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":602,"initialValue":{"id":601,"name":"ROUTES_BASE_OFFSET","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":520,"src":"2087:18:4","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"VariableDeclarationStatement","src":"2070:35:4"},{"body":{"id":705,"nodeType":"Block","src":"2145:469:4","statements":[{"assignments":[613,616],"declarations":[{"constant":false,"id":613,"mutability":"mutable","name":"nSwaps","nameLocation":"2160:6:4","nodeType":"VariableDeclaration","scope":705,"src":"2154:12:4","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"},"typeName":{"id":612,"name":"uint8","nodeType":"ElementaryTypeName","src":"2154:5:4","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}},"visibility":"internal"},{"constant":false,"id":616,"mutability":"mutable","name":"route","nameLocation":"2186:5:4","nodeType":"VariableDeclaration","scope":705,"src":"2168:23:4","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_struct$_CurveRoute_$536_memory_ptr","typeString":"struct CurveRoutes.CurveRoute"},"typeName":{"id":615,"nodeType":"UserDefinedTypeName","pathNode":{"id":614,"name":"CurveRoute","nameLocations":["2168:10:4"],"nodeType":"IdentifierPath","referencedDeclaration":536,"src":"2168:10:4"},"referencedDeclaration":536,"src":"2168:10:4","typeDescriptions":{"typeIdentifier":"t_struct$_CurveRoute_$536_storage_ptr","typeString":"struct CurveRoutes.CurveRoute"}},"visibility":"internal"}],"id":621,"initialValue":{"arguments":[{"id":618,"name":"curveRoutes","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":559,"src":"2205:11:4","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}},{"id":619,"name":"offset","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":600,"src":"2218:6:4","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":617,"name":"readRoute","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":932,"src":"2195:9:4","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_bytes_memory_ptr_$_t_uint256_$returns$_t_uint8_$_t_struct$_CurveRoute_$536_memory_ptr_$","typeString":"function (bytes memory,uint256) pure returns (uint8,struct CurveRoutes.CurveRoute memory)"}},"id":620,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"2195:30:4","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$_t_uint8_$_t_struct$_CurveRoute_$536_memory_ptr_$","typeString":"tuple(uint8,struct CurveRoutes.CurveRoute memory)"}},"nodeType":"VariableDeclarationStatement","src":"2153:72:4"},{"body":{"id":661,"nodeType":"Block","src":"2266:123:4","statements":[{"condition":{"commonType":{"typeIdentifier":"t_bool","typeString":"bool"},"id":655,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"commonType":{"typeIdentifier":"t_address","typeString":"address"},"id":641,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"baseExpression":{"expression":{"id":631,"name":"route","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":616,"src":"2280:5:4","typeDescriptions":{"typeIdentifier":"t_struct$_CurveRoute_$536_memory_ptr","typeString":"struct CurveRoutes.CurveRoute memory"}},"id":632,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"2286:5:4","memberName":"route","nodeType":"MemberAccess","referencedDeclaration":524,"src":"2280:11:4","typeDescriptions":{"typeIdentifier":"t_array$_t_address_$11_memory_ptr","typeString":"address[11] memory"}},"id":636,"indexExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":635,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":633,"name":"j","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":623,"src":"2292:1:4","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"*","rightExpression":{"hexValue":"32","id":634,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"2296:1:4","typeDescriptions":{"typeIdentifier":"t_rational_2_by_1","typeString":"int_const 2"},"value":"2"},"src":"2292:5:4","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"2280:18:4","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"arguments":[{"hexValue":"30","id":639,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"2310:1:4","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":638,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"2302:7:4","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":637,"name":"address","nodeType":"ElementaryTypeName","src":"2302:7:4","typeDescriptions":{}}},"id":640,"isConstant":false,"isLValue":false,"isPure":true,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"2302:10:4","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"src":"2280:32:4","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"nodeType":"BinaryOperation","operator":"||","rightExpression":{"commonType":{"typeIdentifier":"t_address","typeString":"address"},"id":654,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"baseExpression":{"expression":{"id":642,"name":"route","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":616,"src":"2316:5:4","typeDescriptions":{"typeIdentifier":"t_struct$_CurveRoute_$536_memory_ptr","typeString":"struct CurveRoutes.CurveRoute memory"}},"id":643,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"2322:5:4","memberName":"route","nodeType":"MemberAccess","referencedDeclaration":524,"src":"2316:11:4","typeDescriptions":{"typeIdentifier":"t_array$_t_address_$11_memory_ptr","typeString":"address[11] memory"}},"id":649,"indexExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":648,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":646,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":644,"name":"j","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":623,"src":"2328:1:4","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"*","rightExpression":{"hexValue":"32","id":645,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"2332:1:4","typeDescriptions":{"typeIdentifier":"t_rational_2_by_1","typeString":"int_const 2"},"value":"2"},"src":"2328:5:4","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"+","rightExpression":{"hexValue":"31","id":647,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"2336:1:4","typeDescriptions":{"typeIdentifier":"t_rational_1_by_1","typeString":"int_const 1"},"value":"1"},"src":"2328:9:4","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"2316:22:4","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"arguments":[{"hexValue":"30","id":652,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"2350:1:4","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":651,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"2342:7:4","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":650,"name":"address","nodeType":"ElementaryTypeName","src":"2342:7:4","typeDescriptions":{}}},"id":653,"isConstant":false,"isLValue":false,"isPure":true,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"2342:10:4","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"src":"2316:36:4","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"src":"2280:72:4","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":660,"nodeType":"IfStatement","src":"2276:104:4","trueBody":{"errorCall":{"arguments":[{"id":657,"name":"route","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":616,"src":"2374:5:4","typeDescriptions":{"typeIdentifier":"t_struct$_CurveRoute_$536_memory_ptr","typeString":"struct CurveRoutes.CurveRoute memory"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_struct$_CurveRoute_$536_memory_ptr","typeString":"struct CurveRoutes.CurveRoute memory"}],"id":656,"name":"InvalidRoute","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":547,"src":"2361:12:4","typeDescriptions":{"typeIdentifier":"t_function_error_pure$_t_struct$_CurveRoute_$536_memory_ptr_$returns$_t_error_$","typeString":"function (struct CurveRoutes.CurveRoute memory) pure returns (error)"}},"id":658,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"2361:19:4","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_error","typeString":"error"}},"id":659,"nodeType":"RevertStatement","src":"2354:26:4"}}]},"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":627,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":625,"name":"j","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":623,"src":"2249:1:4","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"<","rightExpression":{"id":626,"name":"nSwaps","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":613,"src":"2253:6:4","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}},"src":"2249:10:4","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":662,"initializationExpression":{"assignments":[623],"declarations":[{"constant":false,"id":623,"mutability":"mutable","name":"j","nameLocation":"2246:1:4","nodeType":"VariableDeclaration","scope":662,"src":"2238:9:4","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":622,"name":"uint256","nodeType":"ElementaryTypeName","src":"2238:7:4","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":624,"nodeType":"VariableDeclarationStatement","src":"2238:9:4"},"isSimpleCounterLoop":true,"loopExpression":{"expression":{"id":629,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"UnaryOperation","operator":"++","prefix":false,"src":"2261:3:4","subExpression":{"id":628,"name":"j","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":623,"src":"2261:1:4","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":630,"nodeType":"ExpressionStatement","src":"2261:3:4"},"nodeType":"ForStatement","src":"2233:156:4"},{"condition":{"commonType":{"typeIdentifier":"t_address","typeString":"address"},"id":673,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"baseExpression":{"expression":{"id":663,"name":"route","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":616,"src":"2400:5:4","typeDescriptions":{"typeIdentifier":"t_struct$_CurveRoute_$536_memory_ptr","typeString":"struct CurveRoutes.CurveRoute memory"}},"id":664,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"2406:5:4","memberName":"route","nodeType":"MemberAccess","referencedDeclaration":524,"src":"2400:11:4","typeDescriptions":{"typeIdentifier":"t_array$_t_address_$11_memory_ptr","typeString":"address[11] memory"}},"id":668,"indexExpression":{"commonType":{"typeIdentifier":"t_uint8","typeString":"uint8"},"id":667,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":665,"name":"nSwaps","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":613,"src":"2412:6:4","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}},"nodeType":"BinaryOperation","operator":"*","rightExpression":{"hexValue":"32","id":666,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"2421:1:4","typeDescriptions":{"typeIdentifier":"t_rational_2_by_1","typeString":"int_const 2"},"value":"2"},"src":"2412:10:4","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"2400:23:4","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"arguments":[{"hexValue":"30","id":671,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"2435:1:4","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":670,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"2427:7:4","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":669,"name":"address","nodeType":"ElementaryTypeName","src":"2427:7:4","typeDescriptions":{}}},"id":672,"isConstant":false,"isLValue":false,"isPure":true,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"2427:10:4","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"src":"2400:37:4","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":678,"nodeType":"IfStatement","src":"2396:69:4","trueBody":{"errorCall":{"arguments":[{"id":675,"name":"route","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":616,"src":"2459:5:4","typeDescriptions":{"typeIdentifier":"t_struct$_CurveRoute_$536_memory_ptr","typeString":"struct CurveRoutes.CurveRoute memory"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_struct$_CurveRoute_$536_memory_ptr","typeString":"struct CurveRoutes.CurveRoute memory"}],"id":674,"name":"InvalidRoute","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":547,"src":"2446:12:4","typeDescriptions":{"typeIdentifier":"t_function_error_pure$_t_struct$_CurveRoute_$536_memory_ptr_$returns$_t_error_$","typeString":"function (struct CurveRoutes.CurveRoute memory) pure returns (error)"}},"id":676,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"2446:19:4","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_error","typeString":"error"}},"id":677,"nodeType":"RevertStatement","src":"2439:26:4"}},{"condition":{"commonType":{"typeIdentifier":"t_bool","typeString":"bool"},"id":693,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":681,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":679,"name":"nSwaps","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":613,"src":"2477:6:4","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}},"nodeType":"BinaryOperation","operator":"!=","rightExpression":{"id":680,"name":"MAX_SWAPS","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":507,"src":"2487:9:4","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"2477:19:4","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"nodeType":"BinaryOperation","operator":"&&","rightExpression":{"commonType":{"typeIdentifier":"t_address","typeString":"address"},"id":692,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"baseExpression":{"expression":{"id":682,"name":"route","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":616,"src":"2500:5:4","typeDescriptions":{"typeIdentifier":"t_struct$_CurveRoute_$536_memory_ptr","typeString":"struct CurveRoutes.CurveRoute memory"}},"id":683,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"2506:5:4","memberName":"route","nodeType":"MemberAccess","referencedDeclaration":524,"src":"2500:11:4","typeDescriptions":{"typeIdentifier":"t_array$_t_address_$11_memory_ptr","typeString":"address[11] memory"}},"id":687,"indexExpression":{"arguments":[{"id":685,"name":"nSwaps","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":613,"src":"2522:6:4","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint8","typeString":"uint8"}],"id":684,"name":"_routeLen","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":975,"src":"2512:9:4","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_uint8_$returns$_t_uint256_$","typeString":"function (uint8) pure returns (uint256)"}},"id":686,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"2512:17:4","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"2500:30:4","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"BinaryOperation","operator":"!=","rightExpression":{"arguments":[{"hexValue":"30","id":690,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"2542:1:4","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":689,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"2534:7:4","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":688,"name":"address","nodeType":"ElementaryTypeName","src":"2534:7:4","typeDescriptions":{}}},"id":691,"isConstant":false,"isLValue":false,"isPure":true,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"2534:10:4","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"src":"2500:44:4","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"src":"2477:67:4","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":698,"nodeType":"IfStatement","src":"2473:99:4","trueBody":{"errorCall":{"arguments":[{"id":695,"name":"route","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":616,"src":"2566:5:4","typeDescriptions":{"typeIdentifier":"t_struct$_CurveRoute_$536_memory_ptr","typeString":"struct CurveRoutes.CurveRoute memory"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_struct$_CurveRoute_$536_memory_ptr","typeString":"struct CurveRoutes.CurveRoute memory"}],"id":694,"name":"InvalidRoute","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":547,"src":"2553:12:4","typeDescriptions":{"typeIdentifier":"t_function_error_pure$_t_struct$_CurveRoute_$536_memory_ptr_$returns$_t_error_$","typeString":"function (struct CurveRoutes.CurveRoute memory) pure returns (error)"}},"id":696,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"2553:19:4","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_error","typeString":"error"}},"id":697,"nodeType":"RevertStatement","src":"2546:26:4"}},{"expression":{"id":703,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":699,"name":"offset","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":600,"src":"2580:6:4","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"+=","rightHandSide":{"arguments":[{"id":701,"name":"nSwaps","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":613,"src":"2600:6:4","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint8","typeString":"uint8"}],"id":700,"name":"routeSize","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":960,"src":"2590:9:4","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_uint8_$returns$_t_uint256_$","typeString":"function (uint8) pure returns (uint256)"}},"id":702,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"2590:17:4","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"2580:27:4","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":704,"nodeType":"ExpressionStatement","src":"2580:27:4"}]},"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":608,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":606,"name":"i","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":604,"src":"2127:1:4","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"<","rightExpression":{"id":607,"name":"nRoutes","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":586,"src":"2131:7:4","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}},"src":"2127:11:4","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":706,"initializationExpression":{"assignments":[604],"declarations":[{"constant":false,"id":604,"mutability":"mutable","name":"i","nameLocation":"2124:1:4","nodeType":"VariableDeclaration","scope":706,"src":"2116:9:4","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":603,"name":"uint256","nodeType":"ElementaryTypeName","src":"2116:7:4","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":605,"nodeType":"VariableDeclarationStatement","src":"2116:9:4"},"isSimpleCounterLoop":true,"loopExpression":{"expression":{"id":610,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"UnaryOperation","operator":"++","prefix":false,"src":"2140:3:4","subExpression":{"id":609,"name":"i","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":604,"src":"2140:1:4","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":611,"nodeType":"ExpressionStatement","src":"2140:3:4"},"nodeType":"ForStatement","src":"2111:503:4"},{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":710,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"expression":{"id":707,"name":"curveRoutes","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":559,"src":"2623:11:4","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}},"id":708,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"2635:6:4","memberName":"length","nodeType":"MemberAccess","src":"2623:18:4","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"!=","rightExpression":{"id":709,"name":"offset","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":600,"src":"2645:6:4","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"2623:28:4","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":714,"nodeType":"IfStatement","src":"2619:56:4","trueBody":{"errorCall":{"arguments":[],"expression":{"argumentTypes":[],"id":711,"name":"InvalidLength","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":542,"src":"2660:13:4","typeDescriptions":{"typeIdentifier":"t_function_error_pure$__$returns$_t_error_$","typeString":"function () pure returns (error)"}},"id":712,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"2660:15:4","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_error","typeString":"error"}},"id":713,"nodeType":"RevertStatement","src":"2653:22:4"}}]},"id":716,"implemented":true,"kind":"function","modifiers":[],"name":"validate","nameLocation":"1760:8:4","nodeType":"FunctionDefinition","parameters":{"id":560,"nodeType":"ParameterList","parameters":[{"constant":false,"id":559,"mutability":"mutable","name":"curveRoutes","nameLocation":"1782:11:4","nodeType":"VariableDeclaration","scope":716,"src":"1769:24:4","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes"},"typeName":{"id":558,"name":"bytes","nodeType":"ElementaryTypeName","src":"1769:5:4","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"}],"src":"1768:26:4"},"returnParameters":{"id":561,"nodeType":"ParameterList","parameters":[],"src":"1809:0:4"},"scope":1078,"src":"1751:929:4","stateMutability":"pure","virtual":false,"visibility":"internal"},{"body":{"id":931,"nodeType":"Block","src":"2819:930:4","statements":[{"expression":{"id":733,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":728,"name":"nSwaps","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":723,"src":"2825:6:4","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"arguments":[{"id":731,"name":"offset","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":720,"src":"2854:6:4","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"expression":{"id":729,"name":"curveRoutes","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":718,"src":"2834:11:4","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}},"id":730,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"2846:7:4","memberName":"toUint8","nodeType":"MemberAccess","referencedDeclaration":25004,"src":"2834:19:4","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_bytes_memory_ptr_$_t_uint256_$returns$_t_uint8_$attached_to$_t_bytes_memory_ptr_$","typeString":"function (bytes memory,uint256) pure returns (uint8)"}},"id":732,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"2834:27:4","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}},"src":"2825:36:4","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}},"id":734,"nodeType":"ExpressionStatement","src":"2825:36:4"},{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":737,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":735,"name":"nSwaps","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":723,"src":"2871:6:4","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}},"nodeType":"BinaryOperation","operator":">","rightExpression":{"id":736,"name":"MAX_SWAPS","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":507,"src":"2880:9:4","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"2871:18:4","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":742,"nodeType":"IfStatement","src":"2867:51:4","trueBody":{"errorCall":{"arguments":[{"id":739,"name":"nSwaps","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":723,"src":"2911:6:4","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint8","typeString":"uint8"}],"id":738,"name":"TooManySwaps","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":551,"src":"2898:12:4","typeDescriptions":{"typeIdentifier":"t_function_error_pure$_t_uint8_$returns$_t_error_$","typeString":"function (uint8) pure returns (error)"}},"id":740,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"2898:20:4","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_error","typeString":"error"}},"id":741,"nodeType":"RevertStatement","src":"2891:27:4"}},{"body":{"id":771,"nodeType":"Block","src":"2968:93:4","statements":[{"expression":{"id":769,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"baseExpression":{"expression":{"id":754,"name":"route","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":726,"src":"2976:5:4","typeDescriptions":{"typeIdentifier":"t_struct$_CurveRoute_$536_memory_ptr","typeString":"struct CurveRoutes.CurveRoute memory"}},"id":757,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"2982:5:4","memberName":"route","nodeType":"MemberAccess","referencedDeclaration":524,"src":"2976:11:4","typeDescriptions":{"typeIdentifier":"t_array$_t_address_$11_memory_ptr","typeString":"address[11] memory"}},"id":758,"indexExpression":{"id":756,"name":"i","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":744,"src":"2988:1:4","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"nodeType":"IndexAccess","src":"2976:14:4","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"arguments":[{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":767,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":763,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":761,"name":"offset","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":720,"src":"3015:6:4","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"+","rightExpression":{"id":762,"name":"UINT8_SIZE","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":504,"src":"3024:10:4","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"3015:19:4","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"+","rightExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":766,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":764,"name":"i","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":744,"src":"3037:1:4","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"*","rightExpression":{"id":765,"name":"ADDRESS_SIZE","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":501,"src":"3041:12:4","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"3037:16:4","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"3015:38:4","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"expression":{"id":759,"name":"curveRoutes","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":718,"src":"2993:11:4","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}},"id":760,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"3005:9:4","memberName":"toAddress","nodeType":"MemberAccess","referencedDeclaration":24978,"src":"2993:21:4","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_bytes_memory_ptr_$_t_uint256_$returns$_t_address_$attached_to$_t_bytes_memory_ptr_$","typeString":"function (bytes memory,uint256) pure returns (address)"}},"id":768,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"2993:61:4","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"src":"2976:78:4","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"id":770,"nodeType":"ExpressionStatement","src":"2976:78:4"}]},"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":750,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":746,"name":"i","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":744,"src":"2940:1:4","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"<","rightExpression":{"arguments":[{"id":748,"name":"nSwaps","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":723,"src":"2954:6:4","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint8","typeString":"uint8"}],"id":747,"name":"_routeLen","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":975,"src":"2944:9:4","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_uint8_$returns$_t_uint256_$","typeString":"function (uint8) pure returns (uint256)"}},"id":749,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"2944:17:4","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"2940:21:4","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":772,"initializationExpression":{"assignments":[744],"declarations":[{"constant":false,"id":744,"mutability":"mutable","name":"i","nameLocation":"2937:1:4","nodeType":"VariableDeclaration","scope":772,"src":"2929:9:4","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":743,"name":"uint256","nodeType":"ElementaryTypeName","src":"2929:7:4","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":745,"nodeType":"VariableDeclarationStatement","src":"2929:9:4"},"isSimpleCounterLoop":true,"loopExpression":{"expression":{"id":752,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"UnaryOperation","operator":"++","prefix":false,"src":"2963:3:4","subExpression":{"id":751,"name":"i","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":744,"src":"2963:1:4","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":753,"nodeType":"ExpressionStatement","src":"2963:3:4"},"nodeType":"ForStatement","src":"2924:137:4"},{"expression":{"id":781,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":773,"name":"offset","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":720,"src":"3066:6:4","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"+=","rightHandSide":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":780,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":774,"name":"UINT8_SIZE","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":504,"src":"3076:10:4","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"+","rightExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":779,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"arguments":[{"id":776,"name":"nSwaps","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":723,"src":"3099:6:4","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint8","typeString":"uint8"}],"id":775,"name":"_routeLen","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":975,"src":"3089:9:4","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_uint8_$returns$_t_uint256_$","typeString":"function (uint8) pure returns (uint256)"}},"id":777,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"3089:17:4","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"*","rightExpression":{"id":778,"name":"ADDRESS_SIZE","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":501,"src":"3109:12:4","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"3089:32:4","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"3076:45:4","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"3066:55:4","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":782,"nodeType":"ExpressionStatement","src":"3066:55:4"},{"body":{"id":895,"nodeType":"Block","src":"3160:428:4","statements":[{"expression":{"id":809,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"baseExpression":{"baseExpression":{"expression":{"id":792,"name":"route","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":726,"src":"3168:5:4","typeDescriptions":{"typeIdentifier":"t_struct$_CurveRoute_$536_memory_ptr","typeString":"struct CurveRoutes.CurveRoute memory"}},"id":796,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"3174:10:4","memberName":"swapParams","nodeType":"MemberAccess","referencedDeclaration":531,"src":"3168:16:4","typeDescriptions":{"typeIdentifier":"t_array$_t_array$_t_uint256_$5_memory_ptr_$5_memory_ptr","typeString":"uint256[5] memory[5] memory"}},"id":797,"indexExpression":{"id":794,"name":"i","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":784,"src":"3185:1:4","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"3168:19:4","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$5_memory_ptr","typeString":"uint256[5] memory"}},"id":798,"indexExpression":{"hexValue":"30","id":795,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"3188:1:4","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"nodeType":"IndexAccess","src":"3168:22:4","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"arguments":[{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":807,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":801,"name":"offset","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":720,"src":"3213:6:4","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"+","rightExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":806,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":804,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":802,"name":"i","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":784,"src":"3222:1:4","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"*","rightExpression":{"id":803,"name":"UINT8_SIZE","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":504,"src":"3226:10:4","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"3222:14:4","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"*","rightExpression":{"hexValue":"35","id":805,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"3239:1:4","typeDescriptions":{"typeIdentifier":"t_rational_5_by_1","typeString":"int_const 5"},"value":"5"},"src":"3222:18:4","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"3213:27:4","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"expression":{"id":799,"name":"curveRoutes","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":718,"src":"3193:11:4","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}},"id":800,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"3205:7:4","memberName":"toUint8","nodeType":"MemberAccess","referencedDeclaration":25004,"src":"3193:19:4","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_bytes_memory_ptr_$_t_uint256_$returns$_t_uint8_$attached_to$_t_bytes_memory_ptr_$","typeString":"function (bytes memory,uint256) pure returns (uint8)"}},"id":808,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"3193:48:4","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}},"src":"3168:73:4","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":810,"nodeType":"ExpressionStatement","src":"3168:73:4"},{"expression":{"id":830,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"baseExpression":{"baseExpression":{"expression":{"id":811,"name":"route","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":726,"src":"3249:5:4","typeDescriptions":{"typeIdentifier":"t_struct$_CurveRoute_$536_memory_ptr","typeString":"struct CurveRoutes.CurveRoute memory"}},"id":815,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"3255:10:4","memberName":"swapParams","nodeType":"MemberAccess","referencedDeclaration":531,"src":"3249:16:4","typeDescriptions":{"typeIdentifier":"t_array$_t_array$_t_uint256_$5_memory_ptr_$5_memory_ptr","typeString":"uint256[5] memory[5] memory"}},"id":816,"indexExpression":{"id":813,"name":"i","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":784,"src":"3266:1:4","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"3249:19:4","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$5_memory_ptr","typeString":"uint256[5] memory"}},"id":817,"indexExpression":{"hexValue":"31","id":814,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"3269:1:4","typeDescriptions":{"typeIdentifier":"t_rational_1_by_1","typeString":"int_const 1"},"value":"1"},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"nodeType":"IndexAccess","src":"3249:22:4","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"arguments":[{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":828,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":826,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":820,"name":"offset","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":720,"src":"3294:6:4","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"+","rightExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":825,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":823,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":821,"name":"i","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":784,"src":"3303:1:4","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"*","rightExpression":{"id":822,"name":"UINT8_SIZE","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":504,"src":"3307:10:4","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"3303:14:4","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"*","rightExpression":{"hexValue":"35","id":824,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"3320:1:4","typeDescriptions":{"typeIdentifier":"t_rational_5_by_1","typeString":"int_const 5"},"value":"5"},"src":"3303:18:4","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"3294:27:4","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"+","rightExpression":{"hexValue":"31","id":827,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"3324:1:4","typeDescriptions":{"typeIdentifier":"t_rational_1_by_1","typeString":"int_const 1"},"value":"1"},"src":"3294:31:4","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"expression":{"id":818,"name":"curveRoutes","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":718,"src":"3274:11:4","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}},"id":819,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"3286:7:4","memberName":"toUint8","nodeType":"MemberAccess","referencedDeclaration":25004,"src":"3274:19:4","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_bytes_memory_ptr_$_t_uint256_$returns$_t_uint8_$attached_to$_t_bytes_memory_ptr_$","typeString":"function (bytes memory,uint256) pure returns (uint8)"}},"id":829,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"3274:52:4","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}},"src":"3249:77:4","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":831,"nodeType":"ExpressionStatement","src":"3249:77:4"},{"expression":{"id":851,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"baseExpression":{"baseExpression":{"expression":{"id":832,"name":"route","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":726,"src":"3334:5:4","typeDescriptions":{"typeIdentifier":"t_struct$_CurveRoute_$536_memory_ptr","typeString":"struct CurveRoutes.CurveRoute memory"}},"id":836,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"3340:10:4","memberName":"swapParams","nodeType":"MemberAccess","referencedDeclaration":531,"src":"3334:16:4","typeDescriptions":{"typeIdentifier":"t_array$_t_array$_t_uint256_$5_memory_ptr_$5_memory_ptr","typeString":"uint256[5] memory[5] memory"}},"id":837,"indexExpression":{"id":834,"name":"i","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":784,"src":"3351:1:4","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"3334:19:4","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$5_memory_ptr","typeString":"uint256[5] memory"}},"id":838,"indexExpression":{"hexValue":"32","id":835,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"3354:1:4","typeDescriptions":{"typeIdentifier":"t_rational_2_by_1","typeString":"int_const 2"},"value":"2"},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"nodeType":"IndexAccess","src":"3334:22:4","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"arguments":[{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":849,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":847,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":841,"name":"offset","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":720,"src":"3379:6:4","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"+","rightExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":846,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":844,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":842,"name":"i","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":784,"src":"3388:1:4","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"*","rightExpression":{"id":843,"name":"UINT8_SIZE","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":504,"src":"3392:10:4","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"3388:14:4","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"*","rightExpression":{"hexValue":"35","id":845,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"3405:1:4","typeDescriptions":{"typeIdentifier":"t_rational_5_by_1","typeString":"int_const 5"},"value":"5"},"src":"3388:18:4","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"3379:27:4","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"+","rightExpression":{"hexValue":"32","id":848,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"3409:1:4","typeDescriptions":{"typeIdentifier":"t_rational_2_by_1","typeString":"int_const 2"},"value":"2"},"src":"3379:31:4","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"expression":{"id":839,"name":"curveRoutes","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":718,"src":"3359:11:4","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}},"id":840,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"3371:7:4","memberName":"toUint8","nodeType":"MemberAccess","referencedDeclaration":25004,"src":"3359:19:4","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_bytes_memory_ptr_$_t_uint256_$returns$_t_uint8_$attached_to$_t_bytes_memory_ptr_$","typeString":"function (bytes memory,uint256) pure returns (uint8)"}},"id":850,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"3359:52:4","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}},"src":"3334:77:4","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":852,"nodeType":"ExpressionStatement","src":"3334:77:4"},{"expression":{"id":872,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"baseExpression":{"baseExpression":{"expression":{"id":853,"name":"route","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":726,"src":"3419:5:4","typeDescriptions":{"typeIdentifier":"t_struct$_CurveRoute_$536_memory_ptr","typeString":"struct CurveRoutes.CurveRoute memory"}},"id":857,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"3425:10:4","memberName":"swapParams","nodeType":"MemberAccess","referencedDeclaration":531,"src":"3419:16:4","typeDescriptions":{"typeIdentifier":"t_array$_t_array$_t_uint256_$5_memory_ptr_$5_memory_ptr","typeString":"uint256[5] memory[5] memory"}},"id":858,"indexExpression":{"id":855,"name":"i","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":784,"src":"3436:1:4","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"3419:19:4","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$5_memory_ptr","typeString":"uint256[5] memory"}},"id":859,"indexExpression":{"hexValue":"33","id":856,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"3439:1:4","typeDescriptions":{"typeIdentifier":"t_rational_3_by_1","typeString":"int_const 3"},"value":"3"},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"nodeType":"IndexAccess","src":"3419:22:4","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"arguments":[{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":870,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":868,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":862,"name":"offset","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":720,"src":"3464:6:4","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"+","rightExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":867,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":865,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":863,"name":"i","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":784,"src":"3473:1:4","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"*","rightExpression":{"id":864,"name":"UINT8_SIZE","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":504,"src":"3477:10:4","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"3473:14:4","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"*","rightExpression":{"hexValue":"35","id":866,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"3490:1:4","typeDescriptions":{"typeIdentifier":"t_rational_5_by_1","typeString":"int_const 5"},"value":"5"},"src":"3473:18:4","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"3464:27:4","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"+","rightExpression":{"hexValue":"33","id":869,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"3494:1:4","typeDescriptions":{"typeIdentifier":"t_rational_3_by_1","typeString":"int_const 3"},"value":"3"},"src":"3464:31:4","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"expression":{"id":860,"name":"curveRoutes","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":718,"src":"3444:11:4","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}},"id":861,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"3456:7:4","memberName":"toUint8","nodeType":"MemberAccess","referencedDeclaration":25004,"src":"3444:19:4","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_bytes_memory_ptr_$_t_uint256_$returns$_t_uint8_$attached_to$_t_bytes_memory_ptr_$","typeString":"function (bytes memory,uint256) pure returns (uint8)"}},"id":871,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"3444:52:4","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}},"src":"3419:77:4","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":873,"nodeType":"ExpressionStatement","src":"3419:77:4"},{"expression":{"id":893,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"baseExpression":{"baseExpression":{"expression":{"id":874,"name":"route","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":726,"src":"3504:5:4","typeDescriptions":{"typeIdentifier":"t_struct$_CurveRoute_$536_memory_ptr","typeString":"struct CurveRoutes.CurveRoute memory"}},"id":878,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"3510:10:4","memberName":"swapParams","nodeType":"MemberAccess","referencedDeclaration":531,"src":"3504:16:4","typeDescriptions":{"typeIdentifier":"t_array$_t_array$_t_uint256_$5_memory_ptr_$5_memory_ptr","typeString":"uint256[5] memory[5] memory"}},"id":879,"indexExpression":{"id":876,"name":"i","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":784,"src":"3521:1:4","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"3504:19:4","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$5_memory_ptr","typeString":"uint256[5] memory"}},"id":880,"indexExpression":{"hexValue":"34","id":877,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"3524:1:4","typeDescriptions":{"typeIdentifier":"t_rational_4_by_1","typeString":"int_const 4"},"value":"4"},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"nodeType":"IndexAccess","src":"3504:22:4","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"arguments":[{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":891,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":889,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":883,"name":"offset","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":720,"src":"3549:6:4","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"+","rightExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":888,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":886,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":884,"name":"i","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":784,"src":"3558:1:4","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"*","rightExpression":{"id":885,"name":"UINT8_SIZE","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":504,"src":"3562:10:4","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"3558:14:4","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"*","rightExpression":{"hexValue":"35","id":887,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"3575:1:4","typeDescriptions":{"typeIdentifier":"t_rational_5_by_1","typeString":"int_const 5"},"value":"5"},"src":"3558:18:4","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"3549:27:4","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"+","rightExpression":{"hexValue":"34","id":890,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"3579:1:4","typeDescriptions":{"typeIdentifier":"t_rational_4_by_1","typeString":"int_const 4"},"value":"4"},"src":"3549:31:4","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"expression":{"id":881,"name":"curveRoutes","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":718,"src":"3529:11:4","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}},"id":882,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"3541:7:4","memberName":"toUint8","nodeType":"MemberAccess","referencedDeclaration":25004,"src":"3529:19:4","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_bytes_memory_ptr_$_t_uint256_$returns$_t_uint8_$attached_to$_t_bytes_memory_ptr_$","typeString":"function (bytes memory,uint256) pure returns (uint8)"}},"id":892,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"3529:52:4","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}},"src":"3504:77:4","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":894,"nodeType":"ExpressionStatement","src":"3504:77:4"}]},"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":788,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":786,"name":"i","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":784,"src":"3143:1:4","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"<","rightExpression":{"id":787,"name":"nSwaps","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":723,"src":"3147:6:4","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}},"src":"3143:10:4","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":896,"initializationExpression":{"assignments":[784],"declarations":[{"constant":false,"id":784,"mutability":"mutable","name":"i","nameLocation":"3140:1:4","nodeType":"VariableDeclaration","scope":896,"src":"3132:9:4","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":783,"name":"uint256","nodeType":"ElementaryTypeName","src":"3132:7:4","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":785,"nodeType":"VariableDeclarationStatement","src":"3132:9:4"},"isSimpleCounterLoop":true,"loopExpression":{"expression":{"id":790,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"UnaryOperation","operator":"++","prefix":false,"src":"3155:3:4","subExpression":{"id":789,"name":"i","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":784,"src":"3155:1:4","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":791,"nodeType":"ExpressionStatement","src":"3155:3:4"},"nodeType":"ForStatement","src":"3127:461:4"},{"expression":{"id":903,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":897,"name":"offset","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":720,"src":"3593:6:4","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"+=","rightHandSide":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":902,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":900,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":898,"name":"nSwaps","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":723,"src":"3603:6:4","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}},"nodeType":"BinaryOperation","operator":"*","rightExpression":{"id":899,"name":"UINT8_SIZE","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":504,"src":"3612:10:4","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"3603:19:4","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"*","rightExpression":{"hexValue":"35","id":901,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"3625:1:4","typeDescriptions":{"typeIdentifier":"t_rational_5_by_1","typeString":"int_const 5"},"value":"5"},"src":"3603:23:4","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"3593:33:4","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":904,"nodeType":"ExpressionStatement","src":"3593:33:4"},{"body":{"id":929,"nodeType":"Block","src":"3665:80:4","statements":[{"expression":{"id":927,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"baseExpression":{"expression":{"id":914,"name":"route","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":726,"src":"3673:5:4","typeDescriptions":{"typeIdentifier":"t_struct$_CurveRoute_$536_memory_ptr","typeString":"struct CurveRoutes.CurveRoute memory"}},"id":917,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"3679:5:4","memberName":"pools","nodeType":"MemberAccess","referencedDeclaration":535,"src":"3673:11:4","typeDescriptions":{"typeIdentifier":"t_array$_t_address_$5_memory_ptr","typeString":"address[5] memory"}},"id":918,"indexExpression":{"id":916,"name":"i","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":906,"src":"3685:1:4","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"nodeType":"IndexAccess","src":"3673:14:4","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"arguments":[{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":925,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":921,"name":"offset","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":720,"src":"3712:6:4","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"+","rightExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":924,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":922,"name":"i","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":906,"src":"3721:1:4","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"*","rightExpression":{"id":923,"name":"ADDRESS_SIZE","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":501,"src":"3725:12:4","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"3721:16:4","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"3712:25:4","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"expression":{"id":919,"name":"curveRoutes","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":718,"src":"3690:11:4","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}},"id":920,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"3702:9:4","memberName":"toAddress","nodeType":"MemberAccess","referencedDeclaration":24978,"src":"3690:21:4","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_bytes_memory_ptr_$_t_uint256_$returns$_t_address_$attached_to$_t_bytes_memory_ptr_$","typeString":"function (bytes memory,uint256) pure returns (address)"}},"id":926,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"3690:48:4","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"src":"3673:65:4","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"id":928,"nodeType":"ExpressionStatement","src":"3673:65:4"}]},"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":910,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":908,"name":"i","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":906,"src":"3648:1:4","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"<","rightExpression":{"id":909,"name":"nSwaps","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":723,"src":"3652:6:4","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}},"src":"3648:10:4","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":930,"initializationExpression":{"assignments":[906],"declarations":[{"constant":false,"id":906,"mutability":"mutable","name":"i","nameLocation":"3645:1:4","nodeType":"VariableDeclaration","scope":930,"src":"3637:9:4","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":905,"name":"uint256","nodeType":"ElementaryTypeName","src":"3637:7:4","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":907,"nodeType":"VariableDeclarationStatement","src":"3637:9:4"},"isSimpleCounterLoop":true,"loopExpression":{"expression":{"id":912,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"UnaryOperation","operator":"++","prefix":false,"src":"3660:3:4","subExpression":{"id":911,"name":"i","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":906,"src":"3660:1:4","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":913,"nodeType":"ExpressionStatement","src":"3660:3:4"},"nodeType":"ForStatement","src":"3632:113:4"}]},"id":932,"implemented":true,"kind":"function","modifiers":[],"name":"readRoute","nameLocation":"2693:9:4","nodeType":"FunctionDefinition","parameters":{"id":721,"nodeType":"ParameterList","parameters":[{"constant":false,"id":718,"mutability":"mutable","name":"curveRoutes","nameLocation":"2721:11:4","nodeType":"VariableDeclaration","scope":932,"src":"2708:24:4","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes"},"typeName":{"id":717,"name":"bytes","nodeType":"ElementaryTypeName","src":"2708:5:4","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"},{"constant":false,"id":720,"mutability":"mutable","name":"offset","nameLocation":"2746:6:4","nodeType":"VariableDeclaration","scope":932,"src":"2738:14:4","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":719,"name":"uint256","nodeType":"ElementaryTypeName","src":"2738:7:4","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"2702:54:4"},"returnParameters":{"id":727,"nodeType":"ParameterList","parameters":[{"constant":false,"id":723,"mutability":"mutable","name":"nSwaps","nameLocation":"2786:6:4","nodeType":"VariableDeclaration","scope":932,"src":"2780:12:4","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"},"typeName":{"id":722,"name":"uint8","nodeType":"ElementaryTypeName","src":"2780:5:4","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}},"visibility":"internal"},{"constant":false,"id":726,"mutability":"mutable","name":"route","nameLocation":"2812:5:4","nodeType":"VariableDeclaration","scope":932,"src":"2794:23:4","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_struct$_CurveRoute_$536_memory_ptr","typeString":"struct CurveRoutes.CurveRoute"},"typeName":{"id":725,"nodeType":"UserDefinedTypeName","pathNode":{"id":724,"name":"CurveRoute","nameLocations":["2794:10:4"],"nodeType":"IdentifierPath","referencedDeclaration":536,"src":"2794:10:4"},"referencedDeclaration":536,"src":"2794:10:4","typeDescriptions":{"typeIdentifier":"t_struct$_CurveRoute_$536_storage_ptr","typeString":"struct CurveRoutes.CurveRoute"}},"visibility":"internal"}],"src":"2779:39:4"},"scope":1078,"src":"2684:1065:4","stateMutability":"pure","virtual":false,"visibility":"internal"},{"body":{"id":959,"nodeType":"Block","src":"3818:189:4","statements":[{"expression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":957,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":952,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":945,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":939,"name":"UINT8_SIZE","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":504,"src":"3837:10:4","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"+","rightExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":944,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"arguments":[{"id":941,"name":"nSwaps","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":934,"src":"3876:6:4","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint8","typeString":"uint8"}],"id":940,"name":"_routeLen","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":975,"src":"3866:9:4","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_uint8_$returns$_t_uint256_$","typeString":"function (uint8) pure returns (uint256)"}},"id":942,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"3866:17:4","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"*","rightExpression":{"id":943,"name":"ADDRESS_SIZE","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":501,"src":"3892:12:4","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"3866:38:4","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"3837:67:4","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"+","rightExpression":{"components":[{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":950,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"commonType":{"typeIdentifier":"t_uint8","typeString":"uint8"},"id":948,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":946,"name":"nSwaps","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":934,"src":"3923:6:4","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}},"nodeType":"BinaryOperation","operator":"*","rightExpression":{"hexValue":"35","id":947,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"3932:1:4","typeDescriptions":{"typeIdentifier":"t_rational_5_by_1","typeString":"int_const 5"},"value":"5"},"src":"3923:10:4","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}},"nodeType":"BinaryOperation","operator":"*","rightExpression":{"id":949,"name":"UINT8_SIZE","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":504,"src":"3936:10:4","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"3923:23:4","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"id":951,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"3922:25:4","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"3837:110:4","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"+","rightExpression":{"components":[{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":955,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":953,"name":"nSwaps","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":934,"src":"3971:6:4","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}},"nodeType":"BinaryOperation","operator":"*","rightExpression":{"id":954,"name":"ADDRESS_SIZE","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":501,"src":"3980:12:4","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"3971:21:4","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"id":956,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"3970:23:4","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"3837:156:4","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"functionReturnParameters":938,"id":958,"nodeType":"Return","src":"3824:169:4"}]},"id":960,"implemented":true,"kind":"function","modifiers":[],"name":"routeSize","nameLocation":"3762:9:4","nodeType":"FunctionDefinition","parameters":{"id":935,"nodeType":"ParameterList","parameters":[{"constant":false,"id":934,"mutability":"mutable","name":"nSwaps","nameLocation":"3778:6:4","nodeType":"VariableDeclaration","scope":960,"src":"3772:12:4","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"},"typeName":{"id":933,"name":"uint8","nodeType":"ElementaryTypeName","src":"3772:5:4","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}},"visibility":"internal"}],"src":"3771:14:4"},"returnParameters":{"id":938,"nodeType":"ParameterList","parameters":[{"constant":false,"id":937,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":960,"src":"3809:7:4","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":936,"name":"uint256","nodeType":"ElementaryTypeName","src":"3809:7:4","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"3808:9:4"},"scope":1078,"src":"3753:254:4","stateMutability":"pure","virtual":false,"visibility":"internal"},{"body":{"id":974,"nodeType":"Block","src":"4075:34:4","statements":[{"expression":{"components":[{"commonType":{"typeIdentifier":"t_uint8","typeString":"uint8"},"id":971,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"commonType":{"typeIdentifier":"t_uint8","typeString":"uint8"},"id":969,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":967,"name":"nSwaps","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":962,"src":"4089:6:4","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}},"nodeType":"BinaryOperation","operator":"*","rightExpression":{"hexValue":"32","id":968,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"4098:1:4","typeDescriptions":{"typeIdentifier":"t_rational_2_by_1","typeString":"int_const 2"},"value":"2"},"src":"4089:10:4","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}},"nodeType":"BinaryOperation","operator":"+","rightExpression":{"hexValue":"31","id":970,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"4102:1:4","typeDescriptions":{"typeIdentifier":"t_rational_1_by_1","typeString":"int_const 1"},"value":"1"},"src":"4089:14:4","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}}],"id":972,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"4088:16:4","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}},"functionReturnParameters":966,"id":973,"nodeType":"Return","src":"4081:23:4"}]},"id":975,"implemented":true,"kind":"function","modifiers":[],"name":"_routeLen","nameLocation":"4020:9:4","nodeType":"FunctionDefinition","parameters":{"id":963,"nodeType":"ParameterList","parameters":[{"constant":false,"id":962,"mutability":"mutable","name":"nSwaps","nameLocation":"4036:6:4","nodeType":"VariableDeclaration","scope":975,"src":"4030:12:4","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"},"typeName":{"id":961,"name":"uint8","nodeType":"ElementaryTypeName","src":"4030:5:4","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}},"visibility":"internal"}],"src":"4029:14:4"},"returnParameters":{"id":966,"nodeType":"ParameterList","parameters":[{"constant":false,"id":965,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":975,"src":"4066:7:4","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":964,"name":"uint256","nodeType":"ElementaryTypeName","src":"4066:7:4","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"4065:9:4"},"scope":1078,"src":"4011:98:4","stateMutability":"pure","virtual":false,"visibility":"private"},{"body":{"id":1076,"nodeType":"Block","src":"4278:614:4","statements":[{"expression":{"id":997,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":990,"name":"router","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":985,"src":"4284:6:4","typeDescriptions":{"typeIdentifier":"t_contract$_ICurveRouter_$2156","typeString":"contract ICurveRouter"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"arguments":[{"arguments":[{"id":994,"name":"ROUTER_OFFSET","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":510,"src":"4328:13:4","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"expression":{"id":992,"name":"curveRoutes","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":977,"src":"4306:11:4","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}},"id":993,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"4318:9:4","memberName":"toAddress","nodeType":"MemberAccess","referencedDeclaration":24978,"src":"4306:21:4","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_bytes_memory_ptr_$_t_uint256_$returns$_t_address_$attached_to$_t_bytes_memory_ptr_$","typeString":"function (bytes memory,uint256) pure returns (address)"}},"id":995,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"4306:36:4","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"id":991,"name":"ICurveRouter","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2156,"src":"4293:12:4","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_ICurveRouter_$2156_$","typeString":"type(contract ICurveRouter)"}},"id":996,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"4293:50:4","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_contract$_ICurveRouter_$2156","typeString":"contract ICurveRouter"}},"src":"4284:59:4","typeDescriptions":{"typeIdentifier":"t_contract$_ICurveRouter_$2156","typeString":"contract ICurveRouter"}},"id":998,"nodeType":"ExpressionStatement","src":"4284:59:4"},{"assignments":[1000],"declarations":[{"constant":false,"id":1000,"mutability":"mutable","name":"nRoutes","nameLocation":"4355:7:4","nodeType":"VariableDeclaration","scope":1076,"src":"4349:13:4","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"},"typeName":{"id":999,"name":"uint8","nodeType":"ElementaryTypeName","src":"4349:5:4","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}},"visibility":"internal"}],"id":1005,"initialValue":{"arguments":[{"id":1003,"name":"N_ROUTES_OFFSET","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":515,"src":"4385:15:4","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"expression":{"id":1001,"name":"curveRoutes","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":977,"src":"4365:11:4","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}},"id":1002,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"4377:7:4","memberName":"toUint8","nodeType":"MemberAccess","referencedDeclaration":25004,"src":"4365:19:4","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_bytes_memory_ptr_$_t_uint256_$returns$_t_uint8_$attached_to$_t_bytes_memory_ptr_$","typeString":"function (bytes memory,uint256) pure returns (uint8)"}},"id":1004,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"4365:36:4","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}},"nodeType":"VariableDeclarationStatement","src":"4349:52:4"},{"assignments":[1007],"declarations":[{"constant":false,"id":1007,"mutability":"mutable","name":"offset","nameLocation":"4415:6:4","nodeType":"VariableDeclaration","scope":1076,"src":"4407:14:4","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":1006,"name":"uint256","nodeType":"ElementaryTypeName","src":"4407:7:4","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":1009,"initialValue":{"id":1008,"name":"ROUTES_BASE_OFFSET","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":520,"src":"4424:18:4","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"VariableDeclarationStatement","src":"4407:35:4"},{"body":{"id":1069,"nodeType":"Block","src":"4482:361:4","statements":[{"assignments":[1020],"declarations":[{"constant":false,"id":1020,"mutability":"mutable","name":"nSwaps","nameLocation":"4496:6:4","nodeType":"VariableDeclaration","scope":1069,"src":"4490:12:4","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"},"typeName":{"id":1019,"name":"uint8","nodeType":"ElementaryTypeName","src":"4490:5:4","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}},"visibility":"internal"}],"id":1025,"initialValue":{"arguments":[{"id":1023,"name":"offset","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1007,"src":"4525:6:4","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"expression":{"id":1021,"name":"curveRoutes","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":977,"src":"4505:11:4","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}},"id":1022,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"4517:7:4","memberName":"toUint8","nodeType":"MemberAccess","referencedDeclaration":25004,"src":"4505:19:4","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_bytes_memory_ptr_$_t_uint256_$returns$_t_uint8_$attached_to$_t_bytes_memory_ptr_$","typeString":"function (bytes memory,uint256) pure returns (uint8)"}},"id":1024,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"4505:27:4","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}},"nodeType":"VariableDeclarationStatement","src":"4490:42:4"},{"condition":{"commonType":{"typeIdentifier":"t_bool","typeString":"bool"},"id":1048,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"commonType":{"typeIdentifier":"t_address","typeString":"address"},"id":1033,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"arguments":[{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":1030,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":1028,"name":"offset","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1007,"src":"4575:6:4","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"+","rightExpression":{"id":1029,"name":"UINT8_SIZE","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":504,"src":"4584:10:4","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"4575:19:4","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"expression":{"id":1026,"name":"curveRoutes","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":977,"src":"4553:11:4","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}},"id":1027,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"4565:9:4","memberName":"toAddress","nodeType":"MemberAccess","referencedDeclaration":24978,"src":"4553:21:4","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_bytes_memory_ptr_$_t_uint256_$returns$_t_address_$attached_to$_t_bytes_memory_ptr_$","typeString":"function (bytes memory,uint256) pure returns (address)"}},"id":1031,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"4553:42:4","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"id":1032,"name":"tokenIn","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":979,"src":"4599:7:4","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"src":"4553:53:4","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"nodeType":"BinaryOperation","operator":"&&","rightExpression":{"commonType":{"typeIdentifier":"t_address","typeString":"address"},"id":1047,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"arguments":[{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":1044,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":1038,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":1036,"name":"offset","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1007,"src":"4640:6:4","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"+","rightExpression":{"id":1037,"name":"UINT8_SIZE","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":504,"src":"4649:10:4","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"4640:19:4","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"+","rightExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":1043,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":1041,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":1039,"name":"ADDRESS_SIZE","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":501,"src":"4662:12:4","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"*","rightExpression":{"id":1040,"name":"nSwaps","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1020,"src":"4677:6:4","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}},"src":"4662:21:4","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"*","rightExpression":{"hexValue":"32","id":1042,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"4686:1:4","typeDescriptions":{"typeIdentifier":"t_rational_2_by_1","typeString":"int_const 2"},"value":"2"},"src":"4662:25:4","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"4640:47:4","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"expression":{"id":1034,"name":"curveRoutes","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":977,"src":"4618:11:4","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}},"id":1035,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"4630:9:4","memberName":"toAddress","nodeType":"MemberAccess","referencedDeclaration":24978,"src":"4618:21:4","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_bytes_memory_ptr_$_t_uint256_$returns$_t_address_$attached_to$_t_bytes_memory_ptr_$","typeString":"function (bytes memory,uint256) pure returns (address)"}},"id":1045,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"4618:70:4","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"id":1046,"name":"tokenOut","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":981,"src":"4692:8:4","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"src":"4618:82:4","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"src":"4553:147:4","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":1062,"nodeType":"IfStatement","src":"4540:262:4","trueBody":{"id":1061,"nodeType":"Block","src":"4709:93:4","statements":[{"expression":{"id":1055,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"components":[null,{"id":1049,"name":"route","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":988,"src":"4722:5:4","typeDescriptions":{"typeIdentifier":"t_struct$_CurveRoute_$536_memory_ptr","typeString":"struct CurveRoutes.CurveRoute memory"}}],"id":1050,"isConstant":false,"isInlineArray":false,"isLValue":true,"isPure":false,"lValueRequested":true,"nodeType":"TupleExpression","src":"4719:9:4","typeDescriptions":{"typeIdentifier":"t_tuple$__$_t_struct$_CurveRoute_$536_memory_ptr_$","typeString":"tuple(,struct CurveRoutes.CurveRoute memory)"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"arguments":[{"id":1052,"name":"curveRoutes","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":977,"src":"4741:11:4","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}},{"id":1053,"name":"offset","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1007,"src":"4754:6:4","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":1051,"name":"readRoute","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":932,"src":"4731:9:4","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_bytes_memory_ptr_$_t_uint256_$returns$_t_uint8_$_t_struct$_CurveRoute_$536_memory_ptr_$","typeString":"function (bytes memory,uint256) pure returns (uint8,struct CurveRoutes.CurveRoute memory)"}},"id":1054,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"4731:30:4","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$_t_uint8_$_t_struct$_CurveRoute_$536_memory_ptr_$","typeString":"tuple(uint8,struct CurveRoutes.CurveRoute memory)"}},"src":"4719:42:4","typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":1056,"nodeType":"ExpressionStatement","src":"4719:42:4"},{"expression":{"components":[{"id":1057,"name":"router","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":985,"src":"4779:6:4","typeDescriptions":{"typeIdentifier":"t_contract$_ICurveRouter_$2156","typeString":"contract ICurveRouter"}},{"id":1058,"name":"route","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":988,"src":"4787:5:4","typeDescriptions":{"typeIdentifier":"t_struct$_CurveRoute_$536_memory_ptr","typeString":"struct CurveRoutes.CurveRoute memory"}}],"id":1059,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"4778:15:4","typeDescriptions":{"typeIdentifier":"t_tuple$_t_contract$_ICurveRouter_$2156_$_t_struct$_CurveRoute_$536_memory_ptr_$","typeString":"tuple(contract ICurveRouter,struct CurveRoutes.CurveRoute memory)"}},"functionReturnParameters":989,"id":1060,"nodeType":"Return","src":"4771:22:4"}]}},{"expression":{"id":1067,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":1063,"name":"offset","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1007,"src":"4809:6:4","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"+=","rightHandSide":{"arguments":[{"id":1065,"name":"nSwaps","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1020,"src":"4829:6:4","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint8","typeString":"uint8"}],"id":1064,"name":"routeSize","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":960,"src":"4819:9:4","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_uint8_$returns$_t_uint256_$","typeString":"function (uint8) pure returns (uint256)"}},"id":1066,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"4819:17:4","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"4809:27:4","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":1068,"nodeType":"ExpressionStatement","src":"4809:27:4"}]},"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":1015,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":1013,"name":"i","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1011,"src":"4464:1:4","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"<","rightExpression":{"id":1014,"name":"nRoutes","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1000,"src":"4468:7:4","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}},"src":"4464:11:4","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":1070,"initializationExpression":{"assignments":[1011],"declarations":[{"constant":false,"id":1011,"mutability":"mutable","name":"i","nameLocation":"4461:1:4","nodeType":"VariableDeclaration","scope":1070,"src":"4453:9:4","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":1010,"name":"uint256","nodeType":"ElementaryTypeName","src":"4453:7:4","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":1012,"nodeType":"VariableDeclarationStatement","src":"4453:9:4"},"isSimpleCounterLoop":true,"loopExpression":{"expression":{"id":1017,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"UnaryOperation","operator":"++","prefix":false,"src":"4477:3:4","subExpression":{"id":1016,"name":"i","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1011,"src":"4477:1:4","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":1018,"nodeType":"ExpressionStatement","src":"4477:3:4"},"nodeType":"ForStatement","src":"4448:395:4"},{"errorCall":{"arguments":[{"id":1072,"name":"tokenIn","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":979,"src":"4869:7:4","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":1073,"name":"tokenOut","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":981,"src":"4878:8:4","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_address","typeString":"address"}],"id":1071,"name":"RouteNotFound","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":557,"src":"4855:13:4","typeDescriptions":{"typeIdentifier":"t_function_error_pure$_t_address_$_t_address_$returns$_t_error_$","typeString":"function (address,address) pure returns (error)"}},"id":1074,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"4855:32:4","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_error","typeString":"error"}},"id":1075,"nodeType":"RevertStatement","src":"4848:39:4"}]},"id":1077,"implemented":true,"kind":"function","modifiers":[],"name":"findRoute","nameLocation":"4122:9:4","nodeType":"FunctionDefinition","parameters":{"id":982,"nodeType":"ParameterList","parameters":[{"constant":false,"id":977,"mutability":"mutable","name":"curveRoutes","nameLocation":"4150:11:4","nodeType":"VariableDeclaration","scope":1077,"src":"4137:24:4","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes"},"typeName":{"id":976,"name":"bytes","nodeType":"ElementaryTypeName","src":"4137:5:4","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"},{"constant":false,"id":979,"mutability":"mutable","name":"tokenIn","nameLocation":"4175:7:4","nodeType":"VariableDeclaration","scope":1077,"src":"4167:15:4","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":978,"name":"address","nodeType":"ElementaryTypeName","src":"4167:7:4","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":981,"mutability":"mutable","name":"tokenOut","nameLocation":"4196:8:4","nodeType":"VariableDeclaration","scope":1077,"src":"4188:16:4","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":980,"name":"address","nodeType":"ElementaryTypeName","src":"4188:7:4","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"4131:77:4"},"returnParameters":{"id":989,"nodeType":"ParameterList","parameters":[{"constant":false,"id":985,"mutability":"mutable","name":"router","nameLocation":"4245:6:4","nodeType":"VariableDeclaration","scope":1077,"src":"4232:19:4","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_contract$_ICurveRouter_$2156","typeString":"contract ICurveRouter"},"typeName":{"id":984,"nodeType":"UserDefinedTypeName","pathNode":{"id":983,"name":"ICurveRouter","nameLocations":["4232:12:4"],"nodeType":"IdentifierPath","referencedDeclaration":2156,"src":"4232:12:4"},"referencedDeclaration":2156,"src":"4232:12:4","typeDescriptions":{"typeIdentifier":"t_contract$_ICurveRouter_$2156","typeString":"contract ICurveRouter"}},"visibility":"internal"},{"constant":false,"id":988,"mutability":"mutable","name":"route","nameLocation":"4271:5:4","nodeType":"VariableDeclaration","scope":1077,"src":"4253:23:4","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_struct$_CurveRoute_$536_memory_ptr","typeString":"struct CurveRoutes.CurveRoute"},"typeName":{"id":987,"nodeType":"UserDefinedTypeName","pathNode":{"id":986,"name":"CurveRoute","nameLocations":["4253:10:4"],"nodeType":"IdentifierPath","referencedDeclaration":536,"src":"4253:10:4"},"referencedDeclaration":536,"src":"4253:10:4","typeDescriptions":{"typeIdentifier":"t_struct$_CurveRoute_$536_storage_ptr","typeString":"struct CurveRoutes.CurveRoute"}},"visibility":"internal"}],"src":"4231:46:4"},"scope":1078,"src":"4113:779:4","stateMutability":"pure","virtual":false,"visibility":"internal"}],"scope":1079,"src":"839:4055:4","usedErrors":[538,540,542,547,551,557],"usedEvents":[]}],"src":"39:4856:4"},"id":4},"@ensuro/swaplibrary/contracts/SwapLibrary.sol":{"ast":{"absolutePath":"@ensuro/swaplibrary/contracts/SwapLibrary.sol","exportedSymbols":{"CurveRoutes":[1078],"ICurveRouter":[2156],"IERC20Metadata":[9411],"ISwapRouter":[14879],"Math":[12726],"SwapLibrary":[1879]},"id":1880,"license":"Apache-2.0","nodeType":"SourceUnit","nodes":[{"id":1080,"literals":["solidity","^","0.8",".0"],"nodeType":"PragmaDirective","src":"39:23:5"},{"absolutePath":"@uniswap/v3-periphery/contracts/interfaces/ISwapRouter.sol","file":"@uniswap/v3-periphery/contracts/interfaces/ISwapRouter.sol","id":1082,"nameLocation":"-1:-1:-1","nodeType":"ImportDirective","scope":1880,"sourceUnit":14880,"src":"64:87:5","symbolAliases":[{"foreign":{"id":1081,"name":"ISwapRouter","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":14879,"src":"72:11:5","typeDescriptions":{}},"nameLocation":"-1:-1:-1"}],"unitAlias":""},{"absolutePath":"@ensuro/swaplibrary/contracts/dependencies/ICurveRouter.sol","file":"./dependencies/ICurveRouter.sol","id":1084,"nameLocation":"-1:-1:-1","nodeType":"ImportDirective","scope":1880,"sourceUnit":2157,"src":"152:61:5","symbolAliases":[{"foreign":{"id":1083,"name":"ICurveRouter","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2156,"src":"160:12:5","typeDescriptions":{}},"nameLocation":"-1:-1:-1"}],"unitAlias":""},{"absolutePath":"@openzeppelin/contracts/token/ERC20/extensions/IERC20Metadata.sol","file":"@openzeppelin/contracts/token/ERC20/extensions/IERC20Metadata.sol","id":1086,"nameLocation":"-1:-1:-1","nodeType":"ImportDirective","scope":1880,"sourceUnit":9412,"src":"214:97:5","symbolAliases":[{"foreign":{"id":1085,"name":"IERC20Metadata","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9411,"src":"222:14:5","typeDescriptions":{}},"nameLocation":"-1:-1:-1"}],"unitAlias":""},{"absolutePath":"@openzeppelin/contracts/utils/math/Math.sol","file":"@openzeppelin/contracts/utils/math/Math.sol","id":1088,"nameLocation":"-1:-1:-1","nodeType":"ImportDirective","scope":1880,"sourceUnit":12727,"src":"312:65:5","symbolAliases":[{"foreign":{"id":1087,"name":"Math","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":12726,"src":"320:4:5","typeDescriptions":{}},"nameLocation":"-1:-1:-1"}],"unitAlias":""},{"absolutePath":"@ensuro/swaplibrary/contracts/CurveRoutes.sol","file":"./CurveRoutes.sol","id":1090,"nameLocation":"-1:-1:-1","nodeType":"ImportDirective","scope":1880,"sourceUnit":1079,"src":"378:46:5","symbolAliases":[{"foreign":{"id":1089,"name":"CurveRoutes","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1078,"src":"386:11:5","typeDescriptions":{}},"nameLocation":"-1:-1:-1"}],"unitAlias":""},{"abstract":false,"baseContracts":[],"canonicalName":"SwapLibrary","contractDependencies":[],"contractKind":"library","documentation":{"id":1091,"nodeType":"StructuredDocumentation","src":"426:95:5","text":" @title Swap Library\n @custom:security-contact security@ensuro.co\n @author Ensuro"},"fullyImplemented":true,"id":1879,"linearizedBaseContracts":[1879],"name":"SwapLibrary","nameLocation":"530:11:5","nodeType":"ContractDefinition","nodes":[{"global":false,"id":1094,"libraryName":{"id":1092,"name":"Math","nameLocations":["552:4:5"],"nodeType":"IdentifierPath","referencedDeclaration":12726,"src":"552:4:5"},"nodeType":"UsingForDirective","src":"546:23:5","typeName":{"id":1093,"name":"uint256","nodeType":"ElementaryTypeName","src":"561:7:5","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}},{"constant":true,"id":1097,"mutability":"constant","name":"WAD","nameLocation":"599:3:5","nodeType":"VariableDeclaration","scope":1879,"src":"573:36:5","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":1095,"name":"uint256","nodeType":"ElementaryTypeName","src":"573:7:5","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"value":{"hexValue":"31653138","id":1096,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"605:4:5","typeDescriptions":{"typeIdentifier":"t_rational_1000000000000000000_by_1","typeString":"int_const 1000000000000000000"},"value":"1e18"},"visibility":"internal"},{"constant":true,"id":1100,"mutability":"constant","name":"MAX_EXCHANGE","nameLocation":"718:12:5","nodeType":"VariableDeclaration","scope":1879,"src":"692:42:5","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":1098,"name":"uint256","nodeType":"ElementaryTypeName","src":"692:7:5","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"value":{"hexValue":"32","id":1099,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"733:1:5","typeDescriptions":{"typeIdentifier":"t_rational_2_by_1","typeString":"int_const 2"},"value":"2"},"visibility":"internal"},{"canonicalName":"SwapLibrary.SwapProtocol","documentation":{"id":1101,"nodeType":"StructuredDocumentation","src":"739:53:5","text":" @dev Enum with the different protocols"},"id":1105,"members":[{"id":1102,"name":"undefined","nameLocation":"819:9:5","nodeType":"EnumValue","src":"819:9:5"},{"id":1103,"name":"uniswap","nameLocation":"834:7:5","nodeType":"EnumValue","src":"834:7:5"},{"id":1104,"name":"curveRouter","nameLocation":"847:11:5","nodeType":"EnumValue","src":"847:11:5"}],"name":"SwapProtocol","nameLocation":"800:12:5","nodeType":"EnumDefinition","src":"795:67:5"},{"canonicalName":"SwapLibrary.SwapConfig","id":1113,"members":[{"constant":false,"id":1108,"mutability":"mutable","name":"protocol","nameLocation":"903:8:5","nodeType":"VariableDeclaration","scope":1113,"src":"890:21:5","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_enum$_SwapProtocol_$1105","typeString":"enum SwapLibrary.SwapProtocol"},"typeName":{"id":1107,"nodeType":"UserDefinedTypeName","pathNode":{"id":1106,"name":"SwapProtocol","nameLocations":["890:12:5"],"nodeType":"IdentifierPath","referencedDeclaration":1105,"src":"890:12:5"},"referencedDeclaration":1105,"src":"890:12:5","typeDescriptions":{"typeIdentifier":"t_enum$_SwapProtocol_$1105","typeString":"enum SwapLibrary.SwapProtocol"}},"visibility":"internal"},{"constant":false,"id":1110,"mutability":"mutable","name":"maxSlippage","nameLocation":"925:11:5","nodeType":"VariableDeclaration","scope":1113,"src":"917:19:5","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":1109,"name":"uint256","nodeType":"ElementaryTypeName","src":"917:7:5","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":1112,"mutability":"mutable","name":"customParams","nameLocation":"948:12:5","nodeType":"VariableDeclaration","scope":1113,"src":"942:18:5","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"},"typeName":{"id":1111,"name":"bytes","nodeType":"ElementaryTypeName","src":"942:5:5","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"}],"name":"SwapConfig","nameLocation":"873:10:5","nodeType":"StructDefinition","scope":1879,"src":"866:99:5","visibility":"public"},{"canonicalName":"SwapLibrary.UniswapCustomParams","id":1119,"members":[{"constant":false,"id":1115,"mutability":"mutable","name":"feeTier","nameLocation":"1009:7:5","nodeType":"VariableDeclaration","scope":1119,"src":"1002:14:5","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint24","typeString":"uint24"},"typeName":{"id":1114,"name":"uint24","nodeType":"ElementaryTypeName","src":"1002:6:5","typeDescriptions":{"typeIdentifier":"t_uint24","typeString":"uint24"}},"visibility":"internal"},{"constant":false,"id":1118,"mutability":"mutable","name":"router","nameLocation":"1034:6:5","nodeType":"VariableDeclaration","scope":1119,"src":"1022:18:5","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_contract$_ISwapRouter_$14879","typeString":"contract ISwapRouter"},"typeName":{"id":1117,"nodeType":"UserDefinedTypeName","pathNode":{"id":1116,"name":"ISwapRouter","nameLocations":["1022:11:5"],"nodeType":"IdentifierPath","referencedDeclaration":14879,"src":"1022:11:5"},"referencedDeclaration":14879,"src":"1022:11:5","typeDescriptions":{"typeIdentifier":"t_contract$_ISwapRouter_$14879","typeString":"contract ISwapRouter"}},"visibility":"internal"}],"name":"UniswapCustomParams","nameLocation":"976:19:5","nodeType":"StructDefinition","scope":1879,"src":"969:76:5","visibility":"public"},{"errorSelector":"07f1c7d4","id":1121,"name":"InvalidProtocol","nameLocation":"1055:15:5","nodeType":"ErrorDefinition","parameters":{"id":1120,"nodeType":"ParameterList","parameters":[],"src":"1070:2:5"},"src":"1049:24:5"},{"errorSelector":"ece96d1c","id":1123,"name":"MaxSlippageCannotBeZero","nameLocation":"1082:23:5","nodeType":"ErrorDefinition","parameters":{"id":1122,"nodeType":"ParameterList","parameters":[],"src":"1105:2:5"},"src":"1076:32:5"},{"errorSelector":"e35d3f93","id":1125,"name":"UniswapRouterCannotBeZero","nameLocation":"1117:25:5","nodeType":"ErrorDefinition","parameters":{"id":1124,"nodeType":"ParameterList","parameters":[],"src":"1142:2:5"},"src":"1111:34:5"},{"errorSelector":"c087296d","id":1127,"name":"UniswapFeeTierCannotBeZero","nameLocation":"1154:26:5","nodeType":"ErrorDefinition","parameters":{"id":1126,"nodeType":"ParameterList","parameters":[],"src":"1180:2:5"},"src":"1148:35:5"},{"errorSelector":"511d53d0","id":1129,"name":"AllowanceShouldGoBackToZero","nameLocation":"1192:27:5","nodeType":"ErrorDefinition","parameters":{"id":1128,"nodeType":"ParameterList","parameters":[],"src":"1219:2:5"},"src":"1186:36:5"},{"errorSelector":"84135462","id":1135,"name":"ReceivedLessThanAcceptable","nameLocation":"1231:26:5","nodeType":"ErrorDefinition","parameters":{"id":1134,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1131,"mutability":"mutable","name":"received","nameLocation":"1266:8:5","nodeType":"VariableDeclaration","scope":1135,"src":"1258:16:5","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":1130,"name":"uint256","nodeType":"ElementaryTypeName","src":"1258:7:5","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":1133,"mutability":"mutable","name":"amountOutMin","nameLocation":"1284:12:5","nodeType":"VariableDeclaration","scope":1135,"src":"1276:20:5","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":1132,"name":"uint256","nodeType":"ElementaryTypeName","src":"1276:7:5","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"1257:40:5"},"src":"1225:73:5"},{"errorSelector":"4641f9e1","id":1141,"name":"SpentMoreThanAcceptable","nameLocation":"1307:23:5","nodeType":"ErrorDefinition","parameters":{"id":1140,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1137,"mutability":"mutable","name":"spent","nameLocation":"1339:5:5","nodeType":"VariableDeclaration","scope":1141,"src":"1331:13:5","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":1136,"name":"uint256","nodeType":"ElementaryTypeName","src":"1331:7:5","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":1139,"mutability":"mutable","name":"amountInMax","nameLocation":"1354:11:5","nodeType":"VariableDeclaration","scope":1141,"src":"1346:19:5","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":1138,"name":"uint256","nodeType":"ElementaryTypeName","src":"1346:7:5","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"1330:36:5"},"src":"1301:66:5"},{"body":{"id":1212,"nodeType":"Block","src":"1435:529:5","statements":[{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":1150,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"expression":{"id":1147,"name":"swapConfig","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1144,"src":"1445:10:5","typeDescriptions":{"typeIdentifier":"t_struct$_SwapConfig_$1113_calldata_ptr","typeString":"struct SwapLibrary.SwapConfig calldata"}},"id":1148,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"1456:11:5","memberName":"maxSlippage","nodeType":"MemberAccess","referencedDeclaration":1110,"src":"1445:22:5","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"hexValue":"30","id":1149,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"1471:1:5","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"1445:27:5","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":1154,"nodeType":"IfStatement","src":"1441:65:5","trueBody":{"errorCall":{"arguments":[],"expression":{"argumentTypes":[],"id":1151,"name":"MaxSlippageCannotBeZero","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1123,"src":"1481:23:5","typeDescriptions":{"typeIdentifier":"t_function_error_pure$__$returns$_t_error_$","typeString":"function () pure returns (error)"}},"id":1152,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"1481:25:5","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_error","typeString":"error"}},"id":1153,"nodeType":"RevertStatement","src":"1474:32:5"}},{"condition":{"commonType":{"typeIdentifier":"t_enum$_SwapProtocol_$1105","typeString":"enum SwapLibrary.SwapProtocol"},"id":1159,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"expression":{"id":1155,"name":"swapConfig","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1144,"src":"1516:10:5","typeDescriptions":{"typeIdentifier":"t_struct$_SwapConfig_$1113_calldata_ptr","typeString":"struct SwapLibrary.SwapConfig calldata"}},"id":1156,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"1527:8:5","memberName":"protocol","nodeType":"MemberAccess","referencedDeclaration":1108,"src":"1516:19:5","typeDescriptions":{"typeIdentifier":"t_enum$_SwapProtocol_$1105","typeString":"enum SwapLibrary.SwapProtocol"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"expression":{"id":1157,"name":"SwapProtocol","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1105,"src":"1539:12:5","typeDescriptions":{"typeIdentifier":"t_type$_t_enum$_SwapProtocol_$1105_$","typeString":"type(enum SwapLibrary.SwapProtocol)"}},"id":1158,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberLocation":"1552:7:5","memberName":"uniswap","nodeType":"MemberAccess","referencedDeclaration":1103,"src":"1539:20:5","typeDescriptions":{"typeIdentifier":"t_enum$_SwapProtocol_$1105","typeString":"enum SwapLibrary.SwapProtocol"}},"src":"1516:43:5","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"falseBody":{"condition":{"commonType":{"typeIdentifier":"t_enum$_SwapProtocol_$1105","typeString":"enum SwapLibrary.SwapProtocol"},"id":1198,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"expression":{"id":1194,"name":"swapConfig","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1144,"src":"1820:10:5","typeDescriptions":{"typeIdentifier":"t_struct$_SwapConfig_$1113_calldata_ptr","typeString":"struct SwapLibrary.SwapConfig calldata"}},"id":1195,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"1831:8:5","memberName":"protocol","nodeType":"MemberAccess","referencedDeclaration":1108,"src":"1820:19:5","typeDescriptions":{"typeIdentifier":"t_enum$_SwapProtocol_$1105","typeString":"enum SwapLibrary.SwapProtocol"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"expression":{"id":1196,"name":"SwapProtocol","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1105,"src":"1843:12:5","typeDescriptions":{"typeIdentifier":"t_type$_t_enum$_SwapProtocol_$1105_$","typeString":"type(enum SwapLibrary.SwapProtocol)"}},"id":1197,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberLocation":"1856:11:5","memberName":"curveRouter","nodeType":"MemberAccess","referencedDeclaration":1104,"src":"1843:24:5","typeDescriptions":{"typeIdentifier":"t_enum$_SwapProtocol_$1105","typeString":"enum SwapLibrary.SwapProtocol"}},"src":"1820:47:5","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"falseBody":{"errorCall":{"arguments":[],"expression":{"argumentTypes":[],"id":1207,"name":"InvalidProtocol","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1121,"src":"1942:15:5","typeDescriptions":{"typeIdentifier":"t_function_error_pure$__$returns$_t_error_$","typeString":"function () pure returns (error)"}},"id":1208,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"1942:17:5","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_error","typeString":"error"}},"id":1209,"nodeType":"RevertStatement","src":"1935:24:5"},"id":1210,"nodeType":"IfStatement","src":"1816:143:5","trueBody":{"id":1206,"nodeType":"Block","src":"1869:60:5","statements":[{"expression":{"arguments":[{"expression":{"id":1202,"name":"swapConfig","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1144,"src":"1898:10:5","typeDescriptions":{"typeIdentifier":"t_struct$_SwapConfig_$1113_calldata_ptr","typeString":"struct SwapLibrary.SwapConfig calldata"}},"id":1203,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"1909:12:5","memberName":"customParams","nodeType":"MemberAccess","referencedDeclaration":1112,"src":"1898:23:5","typeDescriptions":{"typeIdentifier":"t_bytes_calldata_ptr","typeString":"bytes calldata"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes_calldata_ptr","typeString":"bytes calldata"}],"expression":{"id":1199,"name":"CurveRoutes","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1078,"src":"1877:11:5","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_CurveRoutes_$1078_$","typeString":"type(library CurveRoutes)"}},"id":1201,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"1889:8:5","memberName":"validate","nodeType":"MemberAccess","referencedDeclaration":716,"src":"1877:20:5","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_bytes_memory_ptr_$returns$__$","typeString":"function (bytes memory) pure"}},"id":1204,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"1877:45:5","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":1205,"nodeType":"ExpressionStatement","src":"1877:45:5"}]}},"id":1211,"nodeType":"IfStatement","src":"1512:447:5","trueBody":{"id":1193,"nodeType":"Block","src":"1561:249:5","statements":[{"assignments":[1162],"declarations":[{"constant":false,"id":1162,"mutability":"mutable","name":"cp","nameLocation":"1596:2:5","nodeType":"VariableDeclaration","scope":1193,"src":"1569:29:5","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_struct$_UniswapCustomParams_$1119_memory_ptr","typeString":"struct SwapLibrary.UniswapCustomParams"},"typeName":{"id":1161,"nodeType":"UserDefinedTypeName","pathNode":{"id":1160,"name":"UniswapCustomParams","nameLocations":["1569:19:5"],"nodeType":"IdentifierPath","referencedDeclaration":1119,"src":"1569:19:5"},"referencedDeclaration":1119,"src":"1569:19:5","typeDescriptions":{"typeIdentifier":"t_struct$_UniswapCustomParams_$1119_storage_ptr","typeString":"struct SwapLibrary.UniswapCustomParams"}},"visibility":"internal"}],"id":1170,"initialValue":{"arguments":[{"expression":{"id":1165,"name":"swapConfig","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1144,"src":"1612:10:5","typeDescriptions":{"typeIdentifier":"t_struct$_SwapConfig_$1113_calldata_ptr","typeString":"struct SwapLibrary.SwapConfig calldata"}},"id":1166,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"1623:12:5","memberName":"customParams","nodeType":"MemberAccess","referencedDeclaration":1112,"src":"1612:23:5","typeDescriptions":{"typeIdentifier":"t_bytes_calldata_ptr","typeString":"bytes calldata"}},{"components":[{"id":1167,"name":"UniswapCustomParams","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1119,"src":"1638:19:5","typeDescriptions":{"typeIdentifier":"t_type$_t_struct$_UniswapCustomParams_$1119_storage_ptr_$","typeString":"type(struct SwapLibrary.UniswapCustomParams storage pointer)"}}],"id":1168,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"TupleExpression","src":"1637:21:5","typeDescriptions":{"typeIdentifier":"t_type$_t_struct$_UniswapCustomParams_$1119_storage_ptr_$","typeString":"type(struct SwapLibrary.UniswapCustomParams storage pointer)"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes_calldata_ptr","typeString":"bytes calldata"},{"typeIdentifier":"t_type$_t_struct$_UniswapCustomParams_$1119_storage_ptr_$","typeString":"type(struct SwapLibrary.UniswapCustomParams storage pointer)"}],"expression":{"id":1163,"name":"abi","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-1,"src":"1601:3:5","typeDescriptions":{"typeIdentifier":"t_magic_abi","typeString":"abi"}},"id":1164,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberLocation":"1605:6:5","memberName":"decode","nodeType":"MemberAccess","src":"1601:10:5","typeDescriptions":{"typeIdentifier":"t_function_abidecode_pure$__$returns$__$","typeString":"function () pure"}},"id":1169,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"1601:58:5","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_struct$_UniswapCustomParams_$1119_memory_ptr","typeString":"struct SwapLibrary.UniswapCustomParams memory"}},"nodeType":"VariableDeclarationStatement","src":"1569:90:5"},{"condition":{"commonType":{"typeIdentifier":"t_address","typeString":"address"},"id":1180,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"arguments":[{"expression":{"id":1173,"name":"cp","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1162,"src":"1679:2:5","typeDescriptions":{"typeIdentifier":"t_struct$_UniswapCustomParams_$1119_memory_ptr","typeString":"struct SwapLibrary.UniswapCustomParams memory"}},"id":1174,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"1682:6:5","memberName":"router","nodeType":"MemberAccess","referencedDeclaration":1118,"src":"1679:9:5","typeDescriptions":{"typeIdentifier":"t_contract$_ISwapRouter_$14879","typeString":"contract ISwapRouter"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_contract$_ISwapRouter_$14879","typeString":"contract ISwapRouter"}],"id":1172,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"1671:7:5","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":1171,"name":"address","nodeType":"ElementaryTypeName","src":"1671:7:5","typeDescriptions":{}}},"id":1175,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"1671:18:5","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"arguments":[{"hexValue":"30","id":1178,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"1701: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":1177,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"1693:7:5","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":1176,"name":"address","nodeType":"ElementaryTypeName","src":"1693:7:5","typeDescriptions":{}}},"id":1179,"isConstant":false,"isLValue":false,"isPure":true,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"1693:10:5","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"src":"1671:32:5","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":1184,"nodeType":"IfStatement","src":"1667:72:5","trueBody":{"errorCall":{"arguments":[],"expression":{"argumentTypes":[],"id":1181,"name":"UniswapRouterCannotBeZero","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1125,"src":"1712:25:5","typeDescriptions":{"typeIdentifier":"t_function_error_pure$__$returns$_t_error_$","typeString":"function () pure returns (error)"}},"id":1182,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"1712:27:5","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_error","typeString":"error"}},"id":1183,"nodeType":"RevertStatement","src":"1705:34:5"}},{"condition":{"commonType":{"typeIdentifier":"t_uint24","typeString":"uint24"},"id":1188,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"expression":{"id":1185,"name":"cp","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1162,"src":"1751:2:5","typeDescriptions":{"typeIdentifier":"t_struct$_UniswapCustomParams_$1119_memory_ptr","typeString":"struct SwapLibrary.UniswapCustomParams memory"}},"id":1186,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"1754:7:5","memberName":"feeTier","nodeType":"MemberAccess","referencedDeclaration":1115,"src":"1751:10:5","typeDescriptions":{"typeIdentifier":"t_uint24","typeString":"uint24"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"hexValue":"30","id":1187,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"1765:1:5","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"1751:15:5","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":1192,"nodeType":"IfStatement","src":"1747:56:5","trueBody":{"errorCall":{"arguments":[],"expression":{"argumentTypes":[],"id":1189,"name":"UniswapFeeTierCannotBeZero","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1127,"src":"1775:26:5","typeDescriptions":{"typeIdentifier":"t_function_error_pure$__$returns$_t_error_$","typeString":"function () pure returns (error)"}},"id":1190,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"1775:28:5","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_error","typeString":"error"}},"id":1191,"nodeType":"RevertStatement","src":"1768:35:5"}}]}}]},"functionSelector":"b2fca32c","id":1213,"implemented":true,"kind":"function","modifiers":[],"name":"validate","nameLocation":"1380:8:5","nodeType":"FunctionDefinition","parameters":{"id":1145,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1144,"mutability":"mutable","name":"swapConfig","nameLocation":"1409:10:5","nodeType":"VariableDeclaration","scope":1213,"src":"1389:30:5","stateVariable":false,"storageLocation":"calldata","typeDescriptions":{"typeIdentifier":"t_struct$_SwapConfig_$1113_calldata_ptr","typeString":"struct SwapLibrary.SwapConfig"},"typeName":{"id":1143,"nodeType":"UserDefinedTypeName","pathNode":{"id":1142,"name":"SwapConfig","nameLocations":["1389:10:5"],"nodeType":"IdentifierPath","referencedDeclaration":1113,"src":"1389:10:5"},"referencedDeclaration":1113,"src":"1389:10:5","typeDescriptions":{"typeIdentifier":"t_struct$_SwapConfig_$1113_storage_ptr","typeString":"struct SwapLibrary.SwapConfig"}},"visibility":"internal"}],"src":"1388:32:5"},"returnParameters":{"id":1146,"nodeType":"ParameterList","parameters":[],"src":"1435:0:5"},"scope":1879,"src":"1371:593:5","stateMutability":"pure","virtual":false,"visibility":"external"},{"body":{"id":1232,"nodeType":"Block","src":"2037:65:5","statements":[{"expression":{"components":[{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":1229,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"hexValue":"3130","id":1220,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"2051:2:5","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":1227,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"hexValue":"3138","id":1221,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"2058:2:5","typeDescriptions":{"typeIdentifier":"t_rational_18_by_1","typeString":"int_const 18"},"value":"18"},"nodeType":"BinaryOperation","operator":"-","rightExpression":{"arguments":[],"expression":{"argumentTypes":[],"expression":{"arguments":[{"id":1223,"name":"token","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1215,"src":"2078:5:5","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"id":1222,"name":"IERC20Metadata","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9411,"src":"2063:14:5","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_IERC20Metadata_$9411_$","typeString":"type(contract IERC20Metadata)"}},"id":1224,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"2063:21:5","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_contract$_IERC20Metadata_$9411","typeString":"contract IERC20Metadata"}},"id":1225,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"2085:8:5","memberName":"decimals","nodeType":"MemberAccess","referencedDeclaration":9410,"src":"2063:30:5","typeDescriptions":{"typeIdentifier":"t_function_external_view$__$returns$_t_uint8_$","typeString":"function () view external returns (uint8)"}},"id":1226,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"2063:32:5","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}},"src":"2058:37:5","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}}],"id":1228,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"2057:39:5","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}},"src":"2051:45:5","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"id":1230,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"2050:47:5","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"functionReturnParameters":1219,"id":1231,"nodeType":"Return","src":"2043:54:5"}]},"id":1233,"implemented":true,"kind":"function","modifiers":[],"name":"_toWadFactor","nameLocation":"1977:12:5","nodeType":"FunctionDefinition","parameters":{"id":1216,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1215,"mutability":"mutable","name":"token","nameLocation":"1998:5:5","nodeType":"VariableDeclaration","scope":1233,"src":"1990:13:5","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":1214,"name":"address","nodeType":"ElementaryTypeName","src":"1990:7:5","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"1989:15:5"},"returnParameters":{"id":1219,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1218,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":1233,"src":"2028:7:5","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":1217,"name":"uint256","nodeType":"ElementaryTypeName","src":"2028:7:5","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"2027:9:5"},"scope":1879,"src":"1968:134:5","stateMutability":"view","virtual":false,"visibility":"internal"},{"body":{"id":1282,"nodeType":"Block","src":"3240:302:5","statements":[{"condition":{"commonType":{"typeIdentifier":"t_enum$_SwapProtocol_$1105","typeString":"enum SwapLibrary.SwapProtocol"},"id":1254,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"expression":{"id":1250,"name":"swapConfig","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1237,"src":"3250:10:5","typeDescriptions":{"typeIdentifier":"t_struct$_SwapConfig_$1113_calldata_ptr","typeString":"struct SwapLibrary.SwapConfig calldata"}},"id":1251,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"3261:8:5","memberName":"protocol","nodeType":"MemberAccess","referencedDeclaration":1108,"src":"3250:19:5","typeDescriptions":{"typeIdentifier":"t_enum$_SwapProtocol_$1105","typeString":"enum SwapLibrary.SwapProtocol"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"expression":{"id":1252,"name":"SwapProtocol","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1105,"src":"3273:12:5","typeDescriptions":{"typeIdentifier":"t_type$_t_enum$_SwapProtocol_$1105_$","typeString":"type(enum SwapLibrary.SwapProtocol)"}},"id":1253,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberLocation":"3286:7:5","memberName":"uniswap","nodeType":"MemberAccess","referencedDeclaration":1103,"src":"3273:20:5","typeDescriptions":{"typeIdentifier":"t_enum$_SwapProtocol_$1105","typeString":"enum SwapLibrary.SwapProtocol"}},"src":"3250:43:5","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"falseBody":{"condition":{"commonType":{"typeIdentifier":"t_enum$_SwapProtocol_$1105","typeString":"enum SwapLibrary.SwapProtocol"},"id":1268,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"expression":{"id":1264,"name":"swapConfig","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1237,"src":"3391:10:5","typeDescriptions":{"typeIdentifier":"t_struct$_SwapConfig_$1113_calldata_ptr","typeString":"struct SwapLibrary.SwapConfig calldata"}},"id":1265,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"3402:8:5","memberName":"protocol","nodeType":"MemberAccess","referencedDeclaration":1108,"src":"3391:19:5","typeDescriptions":{"typeIdentifier":"t_enum$_SwapProtocol_$1105","typeString":"enum SwapLibrary.SwapProtocol"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"expression":{"id":1266,"name":"SwapProtocol","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1105,"src":"3414:12:5","typeDescriptions":{"typeIdentifier":"t_type$_t_enum$_SwapProtocol_$1105_$","typeString":"type(enum SwapLibrary.SwapProtocol)"}},"id":1267,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberLocation":"3427:11:5","memberName":"curveRouter","nodeType":"MemberAccess","referencedDeclaration":1104,"src":"3414:24:5","typeDescriptions":{"typeIdentifier":"t_enum$_SwapProtocol_$1105","typeString":"enum SwapLibrary.SwapProtocol"}},"src":"3391:47:5","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":1278,"nodeType":"IfStatement","src":"3387:137:5","trueBody":{"id":1277,"nodeType":"Block","src":"3440:84:5","statements":[{"expression":{"arguments":[{"id":1270,"name":"swapConfig","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1237,"src":"3472:10:5","typeDescriptions":{"typeIdentifier":"t_struct$_SwapConfig_$1113_calldata_ptr","typeString":"struct SwapLibrary.SwapConfig calldata"}},{"id":1271,"name":"tokenIn","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1239,"src":"3484:7:5","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":1272,"name":"tokenOut","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1241,"src":"3493:8:5","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":1273,"name":"amount","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1243,"src":"3503:6:5","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"id":1274,"name":"price","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1245,"src":"3511:5:5","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_struct$_SwapConfig_$1113_calldata_ptr","typeString":"struct SwapLibrary.SwapConfig calldata"},{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":1269,"name":"_exactInputCurve","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1724,"src":"3455:16:5","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_struct$_SwapConfig_$1113_calldata_ptr_$_t_address_$_t_address_$_t_uint256_$_t_uint256_$returns$_t_uint256_$","typeString":"function (struct SwapLibrary.SwapConfig calldata,address,address,uint256,uint256) returns (uint256)"}},"id":1275,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"3455:62:5","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"functionReturnParameters":1249,"id":1276,"nodeType":"Return","src":"3448:69:5"}]}},"id":1279,"nodeType":"IfStatement","src":"3246:278:5","trueBody":{"id":1263,"nodeType":"Block","src":"3295:86:5","statements":[{"expression":{"arguments":[{"id":1256,"name":"swapConfig","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1237,"src":"3329:10:5","typeDescriptions":{"typeIdentifier":"t_struct$_SwapConfig_$1113_calldata_ptr","typeString":"struct SwapLibrary.SwapConfig calldata"}},{"id":1257,"name":"tokenIn","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1239,"src":"3341:7:5","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":1258,"name":"tokenOut","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1241,"src":"3350:8:5","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":1259,"name":"amount","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1243,"src":"3360:6:5","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"id":1260,"name":"price","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1245,"src":"3368:5:5","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_struct$_SwapConfig_$1113_calldata_ptr","typeString":"struct SwapLibrary.SwapConfig calldata"},{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":1255,"name":"_exactInputUniswap","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1515,"src":"3310:18:5","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_struct$_SwapConfig_$1113_calldata_ptr_$_t_address_$_t_address_$_t_uint256_$_t_uint256_$returns$_t_uint256_$","typeString":"function (struct SwapLibrary.SwapConfig calldata,address,address,uint256,uint256) returns (uint256)"}},"id":1261,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"3310:64:5","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"functionReturnParameters":1249,"id":1262,"nodeType":"Return","src":"3303:71:5"}]}},{"expression":{"hexValue":"30","id":1280,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"3536:1:5","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"functionReturnParameters":1249,"id":1281,"nodeType":"Return","src":"3529:8:5"}]},"documentation":{"id":1234,"nodeType":"StructuredDocumentation","src":"2106:962:5","text":" @dev Executes a swap of `amount` from the input token (`tokenIn`) to the output token (`tokenOut`),\n @param swapConfig Swap configuration including the swap protocol to use.\n @param tokenIn The address of the token to be swapped.\n @param tokenOut The address of the token to be received as a result of the swap.\n @param amount The exact amount of input token to be swapped.\n @param price Approximate amount of units of tokenIn required to acquire a unit of tokenOut.\n              It will be validated against the swap rate considering the maxSlippage.\n @notice Should have at least `amount` of tokenIn in the contract to execute the transaction.\n Requirements:\n - tokenIn and tokenOut decimals <= 18\n - SwapConfig must be valid and should be validated using the `validate()` method.\n @return That exact `amount` went out and an tokenOut amount equal to amount/price +- slippage% came in."},"functionSelector":"77566915","id":1283,"implemented":true,"kind":"function","modifiers":[],"name":"exactInput","nameLocation":"3080:10:5","nodeType":"FunctionDefinition","parameters":{"id":1246,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1237,"mutability":"mutable","name":"swapConfig","nameLocation":"3116:10:5","nodeType":"VariableDeclaration","scope":1283,"src":"3096:30:5","stateVariable":false,"storageLocation":"calldata","typeDescriptions":{"typeIdentifier":"t_struct$_SwapConfig_$1113_calldata_ptr","typeString":"struct SwapLibrary.SwapConfig"},"typeName":{"id":1236,"nodeType":"UserDefinedTypeName","pathNode":{"id":1235,"name":"SwapConfig","nameLocations":["3096:10:5"],"nodeType":"IdentifierPath","referencedDeclaration":1113,"src":"3096:10:5"},"referencedDeclaration":1113,"src":"3096:10:5","typeDescriptions":{"typeIdentifier":"t_struct$_SwapConfig_$1113_storage_ptr","typeString":"struct SwapLibrary.SwapConfig"}},"visibility":"internal"},{"constant":false,"id":1239,"mutability":"mutable","name":"tokenIn","nameLocation":"3140:7:5","nodeType":"VariableDeclaration","scope":1283,"src":"3132:15:5","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":1238,"name":"address","nodeType":"ElementaryTypeName","src":"3132:7:5","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":1241,"mutability":"mutable","name":"tokenOut","nameLocation":"3161:8:5","nodeType":"VariableDeclaration","scope":1283,"src":"3153:16:5","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":1240,"name":"address","nodeType":"ElementaryTypeName","src":"3153:7:5","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":1243,"mutability":"mutable","name":"amount","nameLocation":"3183:6:5","nodeType":"VariableDeclaration","scope":1283,"src":"3175:14:5","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":1242,"name":"uint256","nodeType":"ElementaryTypeName","src":"3175:7:5","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":1245,"mutability":"mutable","name":"price","nameLocation":"3203:5:5","nodeType":"VariableDeclaration","scope":1283,"src":"3195:13:5","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":1244,"name":"uint256","nodeType":"ElementaryTypeName","src":"3195:7:5","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"3090:122:5"},"returnParameters":{"id":1249,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1248,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":1283,"src":"3231:7:5","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":1247,"name":"uint256","nodeType":"ElementaryTypeName","src":"3231:7:5","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"3230:9:5"},"scope":1879,"src":"3071:471:5","stateMutability":"nonpayable","virtual":false,"visibility":"external"},{"body":{"id":1332,"nodeType":"Block","src":"4764:304:5","statements":[{"condition":{"commonType":{"typeIdentifier":"t_enum$_SwapProtocol_$1105","typeString":"enum SwapLibrary.SwapProtocol"},"id":1304,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"expression":{"id":1300,"name":"swapConfig","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1287,"src":"4774:10:5","typeDescriptions":{"typeIdentifier":"t_struct$_SwapConfig_$1113_calldata_ptr","typeString":"struct SwapLibrary.SwapConfig calldata"}},"id":1301,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"4785:8:5","memberName":"protocol","nodeType":"MemberAccess","referencedDeclaration":1108,"src":"4774:19:5","typeDescriptions":{"typeIdentifier":"t_enum$_SwapProtocol_$1105","typeString":"enum SwapLibrary.SwapProtocol"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"expression":{"id":1302,"name":"SwapProtocol","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1105,"src":"4797:12:5","typeDescriptions":{"typeIdentifier":"t_type$_t_enum$_SwapProtocol_$1105_$","typeString":"type(enum SwapLibrary.SwapProtocol)"}},"id":1303,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberLocation":"4810:7:5","memberName":"uniswap","nodeType":"MemberAccess","referencedDeclaration":1103,"src":"4797:20:5","typeDescriptions":{"typeIdentifier":"t_enum$_SwapProtocol_$1105","typeString":"enum SwapLibrary.SwapProtocol"}},"src":"4774:43:5","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"falseBody":{"condition":{"commonType":{"typeIdentifier":"t_enum$_SwapProtocol_$1105","typeString":"enum SwapLibrary.SwapProtocol"},"id":1318,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"expression":{"id":1314,"name":"swapConfig","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1287,"src":"4916:10:5","typeDescriptions":{"typeIdentifier":"t_struct$_SwapConfig_$1113_calldata_ptr","typeString":"struct SwapLibrary.SwapConfig calldata"}},"id":1315,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"4927:8:5","memberName":"protocol","nodeType":"MemberAccess","referencedDeclaration":1108,"src":"4916:19:5","typeDescriptions":{"typeIdentifier":"t_enum$_SwapProtocol_$1105","typeString":"enum SwapLibrary.SwapProtocol"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"expression":{"id":1316,"name":"SwapProtocol","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1105,"src":"4939:12:5","typeDescriptions":{"typeIdentifier":"t_type$_t_enum$_SwapProtocol_$1105_$","typeString":"type(enum SwapLibrary.SwapProtocol)"}},"id":1317,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberLocation":"4952:11:5","memberName":"curveRouter","nodeType":"MemberAccess","referencedDeclaration":1104,"src":"4939:24:5","typeDescriptions":{"typeIdentifier":"t_enum$_SwapProtocol_$1105","typeString":"enum SwapLibrary.SwapProtocol"}},"src":"4916:47:5","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":1328,"nodeType":"IfStatement","src":"4912:138:5","trueBody":{"id":1327,"nodeType":"Block","src":"4965:85:5","statements":[{"expression":{"arguments":[{"id":1320,"name":"swapConfig","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1287,"src":"4998:10:5","typeDescriptions":{"typeIdentifier":"t_struct$_SwapConfig_$1113_calldata_ptr","typeString":"struct SwapLibrary.SwapConfig calldata"}},{"id":1321,"name":"tokenIn","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1289,"src":"5010:7:5","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":1322,"name":"tokenOut","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1291,"src":"5019:8:5","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":1323,"name":"amount","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1293,"src":"5029:6:5","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"id":1324,"name":"price","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1295,"src":"5037:5:5","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_struct$_SwapConfig_$1113_calldata_ptr","typeString":"struct SwapLibrary.SwapConfig calldata"},{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":1319,"name":"_exactOutputCurve","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1878,"src":"4980:17:5","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_struct$_SwapConfig_$1113_calldata_ptr_$_t_address_$_t_address_$_t_uint256_$_t_uint256_$returns$_t_uint256_$","typeString":"function (struct SwapLibrary.SwapConfig calldata,address,address,uint256,uint256) returns (uint256)"}},"id":1325,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"4980:63:5","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"functionReturnParameters":1299,"id":1326,"nodeType":"Return","src":"4973:70:5"}]}},"id":1329,"nodeType":"IfStatement","src":"4770:280:5","trueBody":{"id":1313,"nodeType":"Block","src":"4819:87:5","statements":[{"expression":{"arguments":[{"id":1306,"name":"swapConfig","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1287,"src":"4854:10:5","typeDescriptions":{"typeIdentifier":"t_struct$_SwapConfig_$1113_calldata_ptr","typeString":"struct SwapLibrary.SwapConfig calldata"}},{"id":1307,"name":"tokenIn","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1289,"src":"4866:7:5","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":1308,"name":"tokenOut","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1291,"src":"4875:8:5","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":1309,"name":"amount","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1293,"src":"4885:6:5","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"id":1310,"name":"price","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1295,"src":"4893:5:5","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_struct$_SwapConfig_$1113_calldata_ptr","typeString":"struct SwapLibrary.SwapConfig calldata"},{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":1305,"name":"_exactOutputUniswap","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1623,"src":"4834:19:5","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_struct$_SwapConfig_$1113_calldata_ptr_$_t_address_$_t_address_$_t_uint256_$_t_uint256_$returns$_t_uint256_$","typeString":"function (struct SwapLibrary.SwapConfig calldata,address,address,uint256,uint256) returns (uint256)"}},"id":1311,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"4834:65:5","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"functionReturnParameters":1299,"id":1312,"nodeType":"Return","src":"4827:72:5"}]}},{"expression":{"hexValue":"30","id":1330,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"5062:1:5","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"functionReturnParameters":1299,"id":1331,"nodeType":"Return","src":"5055:8:5"}]},"documentation":{"id":1284,"nodeType":"StructuredDocumentation","src":"3546:1045:5","text":" @dev Executes a swap, where the desired output amount of `tokenOut` is specified,\n @param swapConfig Swap configuration including the protocol to use for the swap.\n @param tokenIn The address of the token to be used as input for the swap.\n @param tokenOut The address of the token to be received as a result of the swap.\n @param amount The desired amount of output tokens (`tokenOut`) to be obtained from the swap.\n @param price Approximate amount of units of tokenIn required to acquire a unit of tokenOut.\n              It will be validated against the swap rate considering the maxSlippage.\n @notice Should have sufficient `tokenIn` to fulfill the desired output amount.\n Requirements:\n - tokenIn and tokenOut decimals <= 18\n - SwapConfig must be valid and should be validated using the `validate()` method.\n @return The actual amount of input tokens (`tokenIn`) spent to obtain the desired output amount (`amount`)\n   should be within the expected slippage range."},"functionSelector":"581e517d","id":1333,"implemented":true,"kind":"function","modifiers":[],"name":"exactOutput","nameLocation":"4603:11:5","nodeType":"FunctionDefinition","parameters":{"id":1296,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1287,"mutability":"mutable","name":"swapConfig","nameLocation":"4640:10:5","nodeType":"VariableDeclaration","scope":1333,"src":"4620:30:5","stateVariable":false,"storageLocation":"calldata","typeDescriptions":{"typeIdentifier":"t_struct$_SwapConfig_$1113_calldata_ptr","typeString":"struct SwapLibrary.SwapConfig"},"typeName":{"id":1286,"nodeType":"UserDefinedTypeName","pathNode":{"id":1285,"name":"SwapConfig","nameLocations":["4620:10:5"],"nodeType":"IdentifierPath","referencedDeclaration":1113,"src":"4620:10:5"},"referencedDeclaration":1113,"src":"4620:10:5","typeDescriptions":{"typeIdentifier":"t_struct$_SwapConfig_$1113_storage_ptr","typeString":"struct SwapLibrary.SwapConfig"}},"visibility":"internal"},{"constant":false,"id":1289,"mutability":"mutable","name":"tokenIn","nameLocation":"4664:7:5","nodeType":"VariableDeclaration","scope":1333,"src":"4656:15:5","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":1288,"name":"address","nodeType":"ElementaryTypeName","src":"4656:7:5","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":1291,"mutability":"mutable","name":"tokenOut","nameLocation":"4685:8:5","nodeType":"VariableDeclaration","scope":1333,"src":"4677:16:5","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":1290,"name":"address","nodeType":"ElementaryTypeName","src":"4677:7:5","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":1293,"mutability":"mutable","name":"amount","nameLocation":"4707:6:5","nodeType":"VariableDeclaration","scope":1333,"src":"4699:14:5","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":1292,"name":"uint256","nodeType":"ElementaryTypeName","src":"4699:7:5","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":1295,"mutability":"mutable","name":"price","nameLocation":"4727:5:5","nodeType":"VariableDeclaration","scope":1333,"src":"4719:13:5","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":1294,"name":"uint256","nodeType":"ElementaryTypeName","src":"4719:7:5","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"4614:122:5"},"returnParameters":{"id":1299,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1298,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":1333,"src":"4755:7:5","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":1297,"name":"uint256","nodeType":"ElementaryTypeName","src":"4755:7:5","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"4754:9:5"},"scope":1879,"src":"4594:474:5","stateMutability":"nonpayable","virtual":false,"visibility":"external"},{"body":{"id":1365,"nodeType":"Block","src":"5239:108:5","statements":[{"expression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":1363,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"arguments":[{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":1357,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":1355,"name":"WAD","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1097,"src":"5292:3:5","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"-","rightExpression":{"id":1356,"name":"maxSlippage","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1337,"src":"5298:11:5","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"5292:17:5","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"id":1358,"name":"price","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1343,"src":"5311:5:5","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"expression":{"components":[{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":1352,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":1348,"name":"amount","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1335,"src":"5253:6:5","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"*","rightExpression":{"arguments":[{"id":1350,"name":"tokenIn","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1339,"src":"5275:7:5","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"id":1349,"name":"_toWadFactor","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1233,"src":"5262:12:5","typeDescriptions":{"typeIdentifier":"t_function_internal_view$_t_address_$returns$_t_uint256_$","typeString":"function (address) view returns (uint256)"}},"id":1351,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"5262:21:5","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"5253:30:5","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"id":1353,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"5252:32:5","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":1354,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"5285:6:5","memberName":"mulDiv","nodeType":"MemberAccess","referencedDeclaration":11611,"src":"5252:39:5","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_uint256_$_t_uint256_$_t_uint256_$returns$_t_uint256_$attached_to$_t_uint256_$","typeString":"function (uint256,uint256,uint256) pure returns (uint256)"}},"id":1359,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"5252:65:5","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"/","rightExpression":{"arguments":[{"id":1361,"name":"tokenOut","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1341,"src":"5333:8:5","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"id":1360,"name":"_toWadFactor","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1233,"src":"5320:12:5","typeDescriptions":{"typeIdentifier":"t_function_internal_view$_t_address_$returns$_t_uint256_$","typeString":"function (address) view returns (uint256)"}},"id":1362,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"5320:22:5","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"5252:90:5","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"functionReturnParameters":1347,"id":1364,"nodeType":"Return","src":"5245:97:5"}]},"id":1366,"implemented":true,"kind":"function","modifiers":[],"name":"_calcMinAmount","nameLocation":"5081:14:5","nodeType":"FunctionDefinition","parameters":{"id":1344,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1335,"mutability":"mutable","name":"amount","nameLocation":"5109:6:5","nodeType":"VariableDeclaration","scope":1366,"src":"5101:14:5","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":1334,"name":"uint256","nodeType":"ElementaryTypeName","src":"5101:7:5","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":1337,"mutability":"mutable","name":"maxSlippage","nameLocation":"5129:11:5","nodeType":"VariableDeclaration","scope":1366,"src":"5121:19:5","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":1336,"name":"uint256","nodeType":"ElementaryTypeName","src":"5121:7:5","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":1339,"mutability":"mutable","name":"tokenIn","nameLocation":"5154:7:5","nodeType":"VariableDeclaration","scope":1366,"src":"5146:15:5","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":1338,"name":"address","nodeType":"ElementaryTypeName","src":"5146:7:5","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":1341,"mutability":"mutable","name":"tokenOut","nameLocation":"5175:8:5","nodeType":"VariableDeclaration","scope":1366,"src":"5167:16:5","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":1340,"name":"address","nodeType":"ElementaryTypeName","src":"5167:7:5","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":1343,"mutability":"mutable","name":"price","nameLocation":"5197:5:5","nodeType":"VariableDeclaration","scope":1366,"src":"5189:13:5","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":1342,"name":"uint256","nodeType":"ElementaryTypeName","src":"5189:7:5","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"5095:111:5"},"returnParameters":{"id":1347,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1346,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":1366,"src":"5230:7:5","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":1345,"name":"uint256","nodeType":"ElementaryTypeName","src":"5230:7:5","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"5229:9:5"},"scope":1879,"src":"5072:275:5","stateMutability":"view","virtual":false,"visibility":"internal"},{"body":{"id":1402,"nodeType":"Block","src":"5518:125:5","statements":[{"expression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":1400,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"arguments":[{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":1394,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":1392,"name":"WAD","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1097,"src":"5591:3:5","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"+","rightExpression":{"id":1393,"name":"maxSlippage","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1370,"src":"5597:11:5","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"5591:17:5","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"id":1395,"name":"WAD","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1097,"src":"5610:3:5","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"expression":{"arguments":[{"id":1388,"name":"price","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1376,"src":"5572:5:5","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"id":1389,"name":"WAD","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1097,"src":"5579:3:5","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"expression":{"components":[{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":1385,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":1381,"name":"amount","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1368,"src":"5532:6:5","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"*","rightExpression":{"arguments":[{"id":1383,"name":"tokenOut","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1374,"src":"5554:8:5","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"id":1382,"name":"_toWadFactor","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1233,"src":"5541:12:5","typeDescriptions":{"typeIdentifier":"t_function_internal_view$_t_address_$returns$_t_uint256_$","typeString":"function (address) view returns (uint256)"}},"id":1384,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"5541:22:5","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"5532:31:5","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"id":1386,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"5531:33:5","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":1387,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"5565:6:5","memberName":"mulDiv","nodeType":"MemberAccess","referencedDeclaration":11611,"src":"5531:40:5","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_uint256_$_t_uint256_$_t_uint256_$returns$_t_uint256_$attached_to$_t_uint256_$","typeString":"function (uint256,uint256,uint256) pure returns (uint256)"}},"id":1390,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"5531:52:5","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":1391,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"5584:6:5","memberName":"mulDiv","nodeType":"MemberAccess","referencedDeclaration":11611,"src":"5531:59:5","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_uint256_$_t_uint256_$_t_uint256_$returns$_t_uint256_$attached_to$_t_uint256_$","typeString":"function (uint256,uint256,uint256) pure returns (uint256)"}},"id":1396,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"5531:83:5","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"/","rightExpression":{"arguments":[{"id":1398,"name":"tokenIn","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1372,"src":"5630:7:5","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"id":1397,"name":"_toWadFactor","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1233,"src":"5617:12:5","typeDescriptions":{"typeIdentifier":"t_function_internal_view$_t_address_$returns$_t_uint256_$","typeString":"function (address) view returns (uint256)"}},"id":1399,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"5617:21:5","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"5531:107:5","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"functionReturnParameters":1380,"id":1401,"nodeType":"Return","src":"5524:114:5"}]},"id":1403,"implemented":true,"kind":"function","modifiers":[],"name":"_calcMaxAmount","nameLocation":"5360:14:5","nodeType":"FunctionDefinition","parameters":{"id":1377,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1368,"mutability":"mutable","name":"amount","nameLocation":"5388:6:5","nodeType":"VariableDeclaration","scope":1403,"src":"5380:14:5","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":1367,"name":"uint256","nodeType":"ElementaryTypeName","src":"5380:7:5","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":1370,"mutability":"mutable","name":"maxSlippage","nameLocation":"5408:11:5","nodeType":"VariableDeclaration","scope":1403,"src":"5400:19:5","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":1369,"name":"uint256","nodeType":"ElementaryTypeName","src":"5400:7:5","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":1372,"mutability":"mutable","name":"tokenIn","nameLocation":"5433:7:5","nodeType":"VariableDeclaration","scope":1403,"src":"5425:15:5","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":1371,"name":"address","nodeType":"ElementaryTypeName","src":"5425:7:5","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":1374,"mutability":"mutable","name":"tokenOut","nameLocation":"5454:8:5","nodeType":"VariableDeclaration","scope":1403,"src":"5446:16:5","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":1373,"name":"address","nodeType":"ElementaryTypeName","src":"5446:7:5","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":1376,"mutability":"mutable","name":"price","nameLocation":"5476:5:5","nodeType":"VariableDeclaration","scope":1403,"src":"5468:13:5","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":1375,"name":"uint256","nodeType":"ElementaryTypeName","src":"5468:7:5","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"5374:111:5"},"returnParameters":{"id":1380,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1379,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":1403,"src":"5509:7:5","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":1378,"name":"uint256","nodeType":"ElementaryTypeName","src":"5509:7:5","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"5508:9:5"},"scope":1879,"src":"5351:292:5","stateMutability":"view","virtual":false,"visibility":"internal"},{"body":{"id":1514,"nodeType":"Block","src":"5824:1019:5","statements":[{"assignments":[1421],"declarations":[{"constant":false,"id":1421,"mutability":"mutable","name":"cp","nameLocation":"5857:2:5","nodeType":"VariableDeclaration","scope":1514,"src":"5830:29:5","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_struct$_UniswapCustomParams_$1119_memory_ptr","typeString":"struct SwapLibrary.UniswapCustomParams"},"typeName":{"id":1420,"nodeType":"UserDefinedTypeName","pathNode":{"id":1419,"name":"UniswapCustomParams","nameLocations":["5830:19:5"],"nodeType":"IdentifierPath","referencedDeclaration":1119,"src":"5830:19:5"},"referencedDeclaration":1119,"src":"5830:19:5","typeDescriptions":{"typeIdentifier":"t_struct$_UniswapCustomParams_$1119_storage_ptr","typeString":"struct SwapLibrary.UniswapCustomParams"}},"visibility":"internal"}],"id":1429,"initialValue":{"arguments":[{"expression":{"id":1424,"name":"swapConfig","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1406,"src":"5873:10:5","typeDescriptions":{"typeIdentifier":"t_struct$_SwapConfig_$1113_calldata_ptr","typeString":"struct SwapLibrary.SwapConfig calldata"}},"id":1425,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"5884:12:5","memberName":"customParams","nodeType":"MemberAccess","referencedDeclaration":1112,"src":"5873:23:5","typeDescriptions":{"typeIdentifier":"t_bytes_calldata_ptr","typeString":"bytes calldata"}},{"components":[{"id":1426,"name":"UniswapCustomParams","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1119,"src":"5899:19:5","typeDescriptions":{"typeIdentifier":"t_type$_t_struct$_UniswapCustomParams_$1119_storage_ptr_$","typeString":"type(struct SwapLibrary.UniswapCustomParams storage pointer)"}}],"id":1427,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"TupleExpression","src":"5898:21:5","typeDescriptions":{"typeIdentifier":"t_type$_t_struct$_UniswapCustomParams_$1119_storage_ptr_$","typeString":"type(struct SwapLibrary.UniswapCustomParams storage pointer)"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes_calldata_ptr","typeString":"bytes calldata"},{"typeIdentifier":"t_type$_t_struct$_UniswapCustomParams_$1119_storage_ptr_$","typeString":"type(struct SwapLibrary.UniswapCustomParams storage pointer)"}],"expression":{"id":1422,"name":"abi","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-1,"src":"5862:3:5","typeDescriptions":{"typeIdentifier":"t_magic_abi","typeString":"abi"}},"id":1423,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberLocation":"5866:6:5","memberName":"decode","nodeType":"MemberAccess","src":"5862:10:5","typeDescriptions":{"typeIdentifier":"t_function_abidecode_pure$__$returns$__$","typeString":"function () pure"}},"id":1428,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"5862:58:5","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_struct$_UniswapCustomParams_$1119_memory_ptr","typeString":"struct SwapLibrary.UniswapCustomParams memory"}},"nodeType":"VariableDeclarationStatement","src":"5830:90:5"},{"assignments":[1431],"declarations":[{"constant":false,"id":1431,"mutability":"mutable","name":"amountOutMin","nameLocation":"5934:12:5","nodeType":"VariableDeclaration","scope":1514,"src":"5926:20:5","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":1430,"name":"uint256","nodeType":"ElementaryTypeName","src":"5926:7:5","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":1440,"initialValue":{"arguments":[{"id":1433,"name":"amount","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1412,"src":"5964:6:5","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"expression":{"id":1434,"name":"swapConfig","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1406,"src":"5972:10:5","typeDescriptions":{"typeIdentifier":"t_struct$_SwapConfig_$1113_calldata_ptr","typeString":"struct SwapLibrary.SwapConfig calldata"}},"id":1435,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"5983:11:5","memberName":"maxSlippage","nodeType":"MemberAccess","referencedDeclaration":1110,"src":"5972:22:5","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"id":1436,"name":"tokenIn","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1408,"src":"5996:7:5","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":1437,"name":"tokenOut","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1410,"src":"6005:8:5","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":1438,"name":"price","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1414,"src":"6015:5:5","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":1432,"name":"_calcMinAmount","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1366,"src":"5949:14:5","typeDescriptions":{"typeIdentifier":"t_function_internal_view$_t_uint256_$_t_uint256_$_t_address_$_t_address_$_t_uint256_$returns$_t_uint256_$","typeString":"function (uint256,uint256,address,address,uint256) view returns (uint256)"}},"id":1439,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"5949:72:5","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"VariableDeclarationStatement","src":"5926:95:5"},{"expression":{"arguments":[{"arguments":[{"expression":{"id":1447,"name":"cp","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1421,"src":"6068:2:5","typeDescriptions":{"typeIdentifier":"t_struct$_UniswapCustomParams_$1119_memory_ptr","typeString":"struct SwapLibrary.UniswapCustomParams memory"}},"id":1448,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"6071:6:5","memberName":"router","nodeType":"MemberAccess","referencedDeclaration":1118,"src":"6068:9:5","typeDescriptions":{"typeIdentifier":"t_contract$_ISwapRouter_$14879","typeString":"contract ISwapRouter"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_contract$_ISwapRouter_$14879","typeString":"contract ISwapRouter"}],"id":1446,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"6060:7:5","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":1445,"name":"address","nodeType":"ElementaryTypeName","src":"6060:7:5","typeDescriptions":{}}},"id":1449,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"6060:18:5","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":1450,"name":"amount","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1412,"src":"6080:6:5","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"expression":{"arguments":[{"id":1442,"name":"tokenIn","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1408,"src":"6043:7:5","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"id":1441,"name":"IERC20Metadata","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9411,"src":"6028:14:5","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_IERC20Metadata_$9411_$","typeString":"type(contract IERC20Metadata)"}},"id":1443,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"6028:23:5","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_contract$_IERC20Metadata_$9411","typeString":"contract IERC20Metadata"}},"id":1444,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"6052:7:5","memberName":"approve","nodeType":"MemberAccess","referencedDeclaration":8666,"src":"6028:31:5","typeDescriptions":{"typeIdentifier":"t_function_external_nonpayable$_t_address_$_t_uint256_$returns$_t_bool_$","typeString":"function (address,uint256) external returns (bool)"}},"id":1451,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"6028:59:5","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":1452,"nodeType":"ExpressionStatement","src":"6028:59:5"},{"assignments":[1457],"declarations":[{"constant":false,"id":1457,"mutability":"mutable","name":"params","nameLocation":"6135:6:5","nodeType":"VariableDeclaration","scope":1514,"src":"6093:48:5","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_struct$_ExactInputSingleParams_$14803_memory_ptr","typeString":"struct ISwapRouter.ExactInputSingleParams"},"typeName":{"id":1456,"nodeType":"UserDefinedTypeName","pathNode":{"id":1455,"name":"ISwapRouter.ExactInputSingleParams","nameLocations":["6093:11:5","6105:22:5"],"nodeType":"IdentifierPath","referencedDeclaration":14803,"src":"6093:34:5"},"referencedDeclaration":14803,"src":"6093:34:5","typeDescriptions":{"typeIdentifier":"t_struct$_ExactInputSingleParams_$14803_storage_ptr","typeString":"struct ISwapRouter.ExactInputSingleParams"}},"visibility":"internal"}],"id":1474,"initialValue":{"arguments":[{"id":1460,"name":"tokenIn","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1408,"src":"6196:7:5","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":1461,"name":"tokenOut","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1410,"src":"6221:8:5","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"expression":{"id":1462,"name":"cp","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1421,"src":"6242:2:5","typeDescriptions":{"typeIdentifier":"t_struct$_UniswapCustomParams_$1119_memory_ptr","typeString":"struct SwapLibrary.UniswapCustomParams memory"}},"id":1463,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"6245:7:5","memberName":"feeTier","nodeType":"MemberAccess","referencedDeclaration":1115,"src":"6242:10:5","typeDescriptions":{"typeIdentifier":"t_uint24","typeString":"uint24"}},{"arguments":[{"id":1466,"name":"this","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-28,"src":"6279:4:5","typeDescriptions":{"typeIdentifier":"t_contract$_SwapLibrary_$1879","typeString":"library SwapLibrary"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_contract$_SwapLibrary_$1879","typeString":"library SwapLibrary"}],"id":1465,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"6271:7:5","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":1464,"name":"address","nodeType":"ElementaryTypeName","src":"6271:7:5","typeDescriptions":{}}},"id":1467,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"6271:13:5","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"expression":{"id":1468,"name":"block","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-4,"src":"6302:5:5","typeDescriptions":{"typeIdentifier":"t_magic_block","typeString":"block"}},"id":1469,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"6308:9:5","memberName":"timestamp","nodeType":"MemberAccess","src":"6302:15:5","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"id":1470,"name":"amount","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1412,"src":"6335:6:5","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"id":1471,"name":"amountOutMin","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1431,"src":"6367:12:5","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"hexValue":"30","id":1472,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"6406:1:5","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_uint24","typeString":"uint24"},{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"}],"expression":{"id":1458,"name":"ISwapRouter","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":14879,"src":"6144:11:5","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_ISwapRouter_$14879_$","typeString":"type(contract ISwapRouter)"}},"id":1459,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"6156:22:5","memberName":"ExactInputSingleParams","nodeType":"MemberAccess","referencedDeclaration":14803,"src":"6144:34:5","typeDescriptions":{"typeIdentifier":"t_type$_t_struct$_ExactInputSingleParams_$14803_storage_ptr_$","typeString":"type(struct ISwapRouter.ExactInputSingleParams storage pointer)"}},"id":1473,"isConstant":false,"isLValue":false,"isPure":false,"kind":"structConstructorCall","lValueRequested":false,"nameLocations":["6187:7:5","6211:8:5","6237:3:5","6260:9:5","6292:8:5","6325:8:5","6349:16:5","6387:17:5"],"names":["tokenIn","tokenOut","fee","recipient","deadline","amountIn","amountOutMinimum","sqrtPriceLimitX96"],"nodeType":"FunctionCall","src":"6144:380:5","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_struct$_ExactInputSingleParams_$14803_memory_ptr","typeString":"struct ISwapRouter.ExactInputSingleParams memory"}},"nodeType":"VariableDeclarationStatement","src":"6093:431:5"},{"assignments":[1476],"declarations":[{"constant":false,"id":1476,"mutability":"mutable","name":"received","nameLocation":"6539:8:5","nodeType":"VariableDeclaration","scope":1514,"src":"6531:16:5","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":1475,"name":"uint256","nodeType":"ElementaryTypeName","src":"6531:7:5","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":1482,"initialValue":{"arguments":[{"id":1480,"name":"params","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1457,"src":"6577:6:5","typeDescriptions":{"typeIdentifier":"t_struct$_ExactInputSingleParams_$14803_memory_ptr","typeString":"struct ISwapRouter.ExactInputSingleParams memory"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_struct$_ExactInputSingleParams_$14803_memory_ptr","typeString":"struct ISwapRouter.ExactInputSingleParams memory"}],"expression":{"expression":{"id":1477,"name":"cp","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1421,"src":"6550:2:5","typeDescriptions":{"typeIdentifier":"t_struct$_UniswapCustomParams_$1119_memory_ptr","typeString":"struct SwapLibrary.UniswapCustomParams memory"}},"id":1478,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"6553:6:5","memberName":"router","nodeType":"MemberAccess","referencedDeclaration":1118,"src":"6550:9:5","typeDescriptions":{"typeIdentifier":"t_contract$_ISwapRouter_$14879","typeString":"contract ISwapRouter"}},"id":1479,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"6560:16:5","memberName":"exactInputSingle","nodeType":"MemberAccess","referencedDeclaration":14812,"src":"6550:26:5","typeDescriptions":{"typeIdentifier":"t_function_external_payable$_t_struct$_ExactInputSingleParams_$14803_memory_ptr_$returns$_t_uint256_$","typeString":"function (struct ISwapRouter.ExactInputSingleParams memory) payable external returns (uint256)"}},"id":1481,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"6550:34:5","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"VariableDeclarationStatement","src":"6531:53:5"},{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":1498,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"arguments":[{"arguments":[{"id":1489,"name":"this","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-28,"src":"6636:4:5","typeDescriptions":{"typeIdentifier":"t_contract$_SwapLibrary_$1879","typeString":"library SwapLibrary"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_contract$_SwapLibrary_$1879","typeString":"library SwapLibrary"}],"id":1488,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"6628:7:5","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":1487,"name":"address","nodeType":"ElementaryTypeName","src":"6628:7:5","typeDescriptions":{}}},"id":1490,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"6628:13:5","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"arguments":[{"expression":{"id":1493,"name":"cp","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1421,"src":"6651:2:5","typeDescriptions":{"typeIdentifier":"t_struct$_UniswapCustomParams_$1119_memory_ptr","typeString":"struct SwapLibrary.UniswapCustomParams memory"}},"id":1494,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"6654:6:5","memberName":"router","nodeType":"MemberAccess","referencedDeclaration":1118,"src":"6651:9:5","typeDescriptions":{"typeIdentifier":"t_contract$_ISwapRouter_$14879","typeString":"contract ISwapRouter"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_contract$_ISwapRouter_$14879","typeString":"contract ISwapRouter"}],"id":1492,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"6643:7:5","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":1491,"name":"address","nodeType":"ElementaryTypeName","src":"6643:7:5","typeDescriptions":{}}},"id":1495,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"6643:18:5","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_address","typeString":"address"}],"expression":{"arguments":[{"id":1484,"name":"tokenIn","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1408,"src":"6609:7:5","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"id":1483,"name":"IERC20Metadata","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9411,"src":"6594:14:5","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_IERC20Metadata_$9411_$","typeString":"type(contract IERC20Metadata)"}},"id":1485,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"6594:23:5","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_contract$_IERC20Metadata_$9411","typeString":"contract IERC20Metadata"}},"id":1486,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"6618:9:5","memberName":"allowance","nodeType":"MemberAccess","referencedDeclaration":8656,"src":"6594:33:5","typeDescriptions":{"typeIdentifier":"t_function_external_view$_t_address_$_t_address_$returns$_t_uint256_$","typeString":"function (address,address) view external returns (uint256)"}},"id":1496,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"6594:68:5","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"!=","rightExpression":{"hexValue":"30","id":1497,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"6666:1:5","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"6594:73:5","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":1502,"nodeType":"IfStatement","src":"6590:115:5","trueBody":{"errorCall":{"arguments":[],"expression":{"argumentTypes":[],"id":1499,"name":"AllowanceShouldGoBackToZero","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1129,"src":"6676:27:5","typeDescriptions":{"typeIdentifier":"t_function_error_pure$__$returns$_t_error_$","typeString":"function () pure returns (error)"}},"id":1500,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"6676:29:5","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_error","typeString":"error"}},"id":1501,"nodeType":"RevertStatement","src":"6669:36:5"}},{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":1505,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":1503,"name":"received","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1476,"src":"6735:8:5","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"<","rightExpression":{"id":1504,"name":"amountOutMin","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1431,"src":"6746:12:5","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"6735:23:5","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":1511,"nodeType":"IfStatement","src":"6731:86:5","trueBody":{"errorCall":{"arguments":[{"id":1507,"name":"received","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1476,"src":"6794:8:5","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"id":1508,"name":"amountOutMin","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1431,"src":"6804:12:5","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":1506,"name":"ReceivedLessThanAcceptable","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1135,"src":"6767:26:5","typeDescriptions":{"typeIdentifier":"t_function_error_pure$_t_uint256_$_t_uint256_$returns$_t_error_$","typeString":"function (uint256,uint256) pure returns (error)"}},"id":1509,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"6767:50:5","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_error","typeString":"error"}},"id":1510,"nodeType":"RevertStatement","src":"6760:57:5"}},{"expression":{"id":1512,"name":"received","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1476,"src":"6830:8:5","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"functionReturnParameters":1418,"id":1513,"nodeType":"Return","src":"6823:15:5"}]},"id":1515,"implemented":true,"kind":"function","modifiers":[],"name":"_exactInputUniswap","nameLocation":"5656:18:5","nodeType":"FunctionDefinition","parameters":{"id":1415,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1406,"mutability":"mutable","name":"swapConfig","nameLocation":"5700:10:5","nodeType":"VariableDeclaration","scope":1515,"src":"5680:30:5","stateVariable":false,"storageLocation":"calldata","typeDescriptions":{"typeIdentifier":"t_struct$_SwapConfig_$1113_calldata_ptr","typeString":"struct SwapLibrary.SwapConfig"},"typeName":{"id":1405,"nodeType":"UserDefinedTypeName","pathNode":{"id":1404,"name":"SwapConfig","nameLocations":["5680:10:5"],"nodeType":"IdentifierPath","referencedDeclaration":1113,"src":"5680:10:5"},"referencedDeclaration":1113,"src":"5680:10:5","typeDescriptions":{"typeIdentifier":"t_struct$_SwapConfig_$1113_storage_ptr","typeString":"struct SwapLibrary.SwapConfig"}},"visibility":"internal"},{"constant":false,"id":1408,"mutability":"mutable","name":"tokenIn","nameLocation":"5724:7:5","nodeType":"VariableDeclaration","scope":1515,"src":"5716:15:5","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":1407,"name":"address","nodeType":"ElementaryTypeName","src":"5716:7:5","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":1410,"mutability":"mutable","name":"tokenOut","nameLocation":"5745:8:5","nodeType":"VariableDeclaration","scope":1515,"src":"5737:16:5","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":1409,"name":"address","nodeType":"ElementaryTypeName","src":"5737:7:5","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":1412,"mutability":"mutable","name":"amount","nameLocation":"5767:6:5","nodeType":"VariableDeclaration","scope":1515,"src":"5759:14:5","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":1411,"name":"uint256","nodeType":"ElementaryTypeName","src":"5759:7:5","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":1414,"mutability":"mutable","name":"price","nameLocation":"5787:5:5","nodeType":"VariableDeclaration","scope":1515,"src":"5779:13:5","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":1413,"name":"uint256","nodeType":"ElementaryTypeName","src":"5779:7:5","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"5674:122:5"},"returnParameters":{"id":1418,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1417,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":1515,"src":"5815:7:5","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":1416,"name":"uint256","nodeType":"ElementaryTypeName","src":"5815:7:5","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"5814:9:5"},"scope":1879,"src":"5647:1196:5","stateMutability":"nonpayable","virtual":false,"visibility":"internal"},{"body":{"id":1622,"nodeType":"Block","src":"7025:982:5","statements":[{"assignments":[1533],"declarations":[{"constant":false,"id":1533,"mutability":"mutable","name":"cp","nameLocation":"7058:2:5","nodeType":"VariableDeclaration","scope":1622,"src":"7031:29:5","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_struct$_UniswapCustomParams_$1119_memory_ptr","typeString":"struct SwapLibrary.UniswapCustomParams"},"typeName":{"id":1532,"nodeType":"UserDefinedTypeName","pathNode":{"id":1531,"name":"UniswapCustomParams","nameLocations":["7031:19:5"],"nodeType":"IdentifierPath","referencedDeclaration":1119,"src":"7031:19:5"},"referencedDeclaration":1119,"src":"7031:19:5","typeDescriptions":{"typeIdentifier":"t_struct$_UniswapCustomParams_$1119_storage_ptr","typeString":"struct SwapLibrary.UniswapCustomParams"}},"visibility":"internal"}],"id":1541,"initialValue":{"arguments":[{"expression":{"id":1536,"name":"swapConfig","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1518,"src":"7074:10:5","typeDescriptions":{"typeIdentifier":"t_struct$_SwapConfig_$1113_calldata_ptr","typeString":"struct SwapLibrary.SwapConfig calldata"}},"id":1537,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"7085:12:5","memberName":"customParams","nodeType":"MemberAccess","referencedDeclaration":1112,"src":"7074:23:5","typeDescriptions":{"typeIdentifier":"t_bytes_calldata_ptr","typeString":"bytes calldata"}},{"components":[{"id":1538,"name":"UniswapCustomParams","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1119,"src":"7100:19:5","typeDescriptions":{"typeIdentifier":"t_type$_t_struct$_UniswapCustomParams_$1119_storage_ptr_$","typeString":"type(struct SwapLibrary.UniswapCustomParams storage pointer)"}}],"id":1539,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"TupleExpression","src":"7099:21:5","typeDescriptions":{"typeIdentifier":"t_type$_t_struct$_UniswapCustomParams_$1119_storage_ptr_$","typeString":"type(struct SwapLibrary.UniswapCustomParams storage pointer)"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes_calldata_ptr","typeString":"bytes calldata"},{"typeIdentifier":"t_type$_t_struct$_UniswapCustomParams_$1119_storage_ptr_$","typeString":"type(struct SwapLibrary.UniswapCustomParams storage pointer)"}],"expression":{"id":1534,"name":"abi","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-1,"src":"7063:3:5","typeDescriptions":{"typeIdentifier":"t_magic_abi","typeString":"abi"}},"id":1535,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberLocation":"7067:6:5","memberName":"decode","nodeType":"MemberAccess","src":"7063:10:5","typeDescriptions":{"typeIdentifier":"t_function_abidecode_pure$__$returns$__$","typeString":"function () pure"}},"id":1540,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"7063:58:5","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_struct$_UniswapCustomParams_$1119_memory_ptr","typeString":"struct SwapLibrary.UniswapCustomParams memory"}},"nodeType":"VariableDeclarationStatement","src":"7031:90:5"},{"assignments":[1543],"declarations":[{"constant":false,"id":1543,"mutability":"mutable","name":"amountInMax","nameLocation":"7136:11:5","nodeType":"VariableDeclaration","scope":1622,"src":"7128:19:5","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":1542,"name":"uint256","nodeType":"ElementaryTypeName","src":"7128:7:5","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":1552,"initialValue":{"arguments":[{"id":1545,"name":"amount","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1524,"src":"7165:6:5","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"expression":{"id":1546,"name":"swapConfig","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1518,"src":"7173:10:5","typeDescriptions":{"typeIdentifier":"t_struct$_SwapConfig_$1113_calldata_ptr","typeString":"struct SwapLibrary.SwapConfig calldata"}},"id":1547,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"7184:11:5","memberName":"maxSlippage","nodeType":"MemberAccess","referencedDeclaration":1110,"src":"7173:22:5","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"id":1548,"name":"tokenIn","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1520,"src":"7197:7:5","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":1549,"name":"tokenOut","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1522,"src":"7206:8:5","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":1550,"name":"price","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1526,"src":"7216:5:5","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":1544,"name":"_calcMaxAmount","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1403,"src":"7150:14:5","typeDescriptions":{"typeIdentifier":"t_function_internal_view$_t_uint256_$_t_uint256_$_t_address_$_t_address_$_t_uint256_$returns$_t_uint256_$","typeString":"function (uint256,uint256,address,address,uint256) view returns (uint256)"}},"id":1551,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"7150:72:5","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"VariableDeclarationStatement","src":"7128:94:5"},{"expression":{"arguments":[{"arguments":[{"expression":{"id":1559,"name":"cp","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1533,"src":"7269:2:5","typeDescriptions":{"typeIdentifier":"t_struct$_UniswapCustomParams_$1119_memory_ptr","typeString":"struct SwapLibrary.UniswapCustomParams memory"}},"id":1560,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"7272:6:5","memberName":"router","nodeType":"MemberAccess","referencedDeclaration":1118,"src":"7269:9:5","typeDescriptions":{"typeIdentifier":"t_contract$_ISwapRouter_$14879","typeString":"contract ISwapRouter"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_contract$_ISwapRouter_$14879","typeString":"contract ISwapRouter"}],"id":1558,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"7261:7:5","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":1557,"name":"address","nodeType":"ElementaryTypeName","src":"7261:7:5","typeDescriptions":{}}},"id":1561,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"7261:18:5","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"expression":{"arguments":[{"id":1564,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"7286:7:5","typeDescriptions":{"typeIdentifier":"t_type$_t_uint256_$","typeString":"type(uint256)"},"typeName":{"id":1563,"name":"uint256","nodeType":"ElementaryTypeName","src":"7286:7:5","typeDescriptions":{}}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_type$_t_uint256_$","typeString":"type(uint256)"}],"id":1562,"name":"type","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-27,"src":"7281:4:5","typeDescriptions":{"typeIdentifier":"t_function_metatype_pure$__$returns$__$","typeString":"function () pure"}},"id":1565,"isConstant":false,"isLValue":false,"isPure":true,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"7281:13:5","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_magic_meta_type_t_uint256","typeString":"type(uint256)"}},"id":1566,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberLocation":"7295:3:5","memberName":"max","nodeType":"MemberAccess","src":"7281:17:5","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"expression":{"arguments":[{"id":1554,"name":"tokenIn","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1520,"src":"7244:7:5","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"id":1553,"name":"IERC20Metadata","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9411,"src":"7229:14:5","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_IERC20Metadata_$9411_$","typeString":"type(contract IERC20Metadata)"}},"id":1555,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"7229:23:5","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_contract$_IERC20Metadata_$9411","typeString":"contract IERC20Metadata"}},"id":1556,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"7253:7:5","memberName":"approve","nodeType":"MemberAccess","referencedDeclaration":8666,"src":"7229:31:5","typeDescriptions":{"typeIdentifier":"t_function_external_nonpayable$_t_address_$_t_uint256_$returns$_t_bool_$","typeString":"function (address,uint256) external returns (bool)"}},"id":1567,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"7229:70:5","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":1568,"nodeType":"ExpressionStatement","src":"7229:70:5"},{"assignments":[1573],"declarations":[{"constant":false,"id":1573,"mutability":"mutable","name":"params","nameLocation":"7348:6:5","nodeType":"VariableDeclaration","scope":1622,"src":"7305:49:5","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_struct$_ExactOutputSingleParams_$14849_memory_ptr","typeString":"struct ISwapRouter.ExactOutputSingleParams"},"typeName":{"id":1572,"nodeType":"UserDefinedTypeName","pathNode":{"id":1571,"name":"ISwapRouter.ExactOutputSingleParams","nameLocations":["7305:11:5","7317:23:5"],"nodeType":"IdentifierPath","referencedDeclaration":14849,"src":"7305:35:5"},"referencedDeclaration":14849,"src":"7305:35:5","typeDescriptions":{"typeIdentifier":"t_struct$_ExactOutputSingleParams_$14849_storage_ptr","typeString":"struct ISwapRouter.ExactOutputSingleParams"}},"visibility":"internal"}],"id":1590,"initialValue":{"arguments":[{"id":1576,"name":"tokenIn","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1520,"src":"7410:7:5","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":1577,"name":"tokenOut","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1522,"src":"7435:8:5","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"expression":{"id":1578,"name":"cp","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1533,"src":"7456:2:5","typeDescriptions":{"typeIdentifier":"t_struct$_UniswapCustomParams_$1119_memory_ptr","typeString":"struct SwapLibrary.UniswapCustomParams memory"}},"id":1579,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"7459:7:5","memberName":"feeTier","nodeType":"MemberAccess","referencedDeclaration":1115,"src":"7456:10:5","typeDescriptions":{"typeIdentifier":"t_uint24","typeString":"uint24"}},{"arguments":[{"id":1582,"name":"this","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-28,"src":"7493:4:5","typeDescriptions":{"typeIdentifier":"t_contract$_SwapLibrary_$1879","typeString":"library SwapLibrary"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_contract$_SwapLibrary_$1879","typeString":"library SwapLibrary"}],"id":1581,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"7485:7:5","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":1580,"name":"address","nodeType":"ElementaryTypeName","src":"7485:7:5","typeDescriptions":{}}},"id":1583,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"7485:13:5","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"expression":{"id":1584,"name":"block","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-4,"src":"7516:5:5","typeDescriptions":{"typeIdentifier":"t_magic_block","typeString":"block"}},"id":1585,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"7522:9:5","memberName":"timestamp","nodeType":"MemberAccess","src":"7516:15:5","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"id":1586,"name":"amount","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1524,"src":"7550:6:5","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"id":1587,"name":"amountInMax","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1543,"src":"7581:11:5","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"hexValue":"30","id":1588,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"7619:1:5","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_uint24","typeString":"uint24"},{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"}],"expression":{"id":1574,"name":"ISwapRouter","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":14879,"src":"7357:11:5","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_ISwapRouter_$14879_$","typeString":"type(contract ISwapRouter)"}},"id":1575,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"7369:23:5","memberName":"ExactOutputSingleParams","nodeType":"MemberAccess","referencedDeclaration":14849,"src":"7357:35:5","typeDescriptions":{"typeIdentifier":"t_type$_t_struct$_ExactOutputSingleParams_$14849_storage_ptr_$","typeString":"type(struct ISwapRouter.ExactOutputSingleParams storage pointer)"}},"id":1589,"isConstant":false,"isLValue":false,"isPure":false,"kind":"structConstructorCall","lValueRequested":false,"nameLocations":["7401:7:5","7425:8:5","7451:3:5","7474:9:5","7506:8:5","7539:9:5","7564:15:5","7600:17:5"],"names":["tokenIn","tokenOut","fee","recipient","deadline","amountOut","amountInMaximum","sqrtPriceLimitX96"],"nodeType":"FunctionCall","src":"7357:380:5","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_struct$_ExactOutputSingleParams_$14849_memory_ptr","typeString":"struct ISwapRouter.ExactOutputSingleParams memory"}},"nodeType":"VariableDeclarationStatement","src":"7305:432:5"},{"assignments":[1592],"declarations":[{"constant":false,"id":1592,"mutability":"mutable","name":"actualAmount","nameLocation":"7751:12:5","nodeType":"VariableDeclaration","scope":1622,"src":"7743:20:5","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":1591,"name":"uint256","nodeType":"ElementaryTypeName","src":"7743:7:5","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":1598,"initialValue":{"arguments":[{"id":1596,"name":"params","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1573,"src":"7794:6:5","typeDescriptions":{"typeIdentifier":"t_struct$_ExactOutputSingleParams_$14849_memory_ptr","typeString":"struct ISwapRouter.ExactOutputSingleParams memory"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_struct$_ExactOutputSingleParams_$14849_memory_ptr","typeString":"struct ISwapRouter.ExactOutputSingleParams memory"}],"expression":{"expression":{"id":1593,"name":"cp","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1533,"src":"7766:2:5","typeDescriptions":{"typeIdentifier":"t_struct$_UniswapCustomParams_$1119_memory_ptr","typeString":"struct SwapLibrary.UniswapCustomParams memory"}},"id":1594,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"7769:6:5","memberName":"router","nodeType":"MemberAccess","referencedDeclaration":1118,"src":"7766:9:5","typeDescriptions":{"typeIdentifier":"t_contract$_ISwapRouter_$14879","typeString":"contract ISwapRouter"}},"id":1595,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"7776:17:5","memberName":"exactOutputSingle","nodeType":"MemberAccess","referencedDeclaration":14858,"src":"7766:27:5","typeDescriptions":{"typeIdentifier":"t_function_external_payable$_t_struct$_ExactOutputSingleParams_$14849_memory_ptr_$returns$_t_uint256_$","typeString":"function (struct ISwapRouter.ExactOutputSingleParams memory) payable external returns (uint256)"}},"id":1597,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"7766:35:5","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"VariableDeclarationStatement","src":"7743:58:5"},{"expression":{"arguments":[{"arguments":[{"expression":{"id":1605,"name":"cp","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1533,"src":"7848:2:5","typeDescriptions":{"typeIdentifier":"t_struct$_UniswapCustomParams_$1119_memory_ptr","typeString":"struct SwapLibrary.UniswapCustomParams memory"}},"id":1606,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"7851:6:5","memberName":"router","nodeType":"MemberAccess","referencedDeclaration":1118,"src":"7848:9:5","typeDescriptions":{"typeIdentifier":"t_contract$_ISwapRouter_$14879","typeString":"contract ISwapRouter"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_contract$_ISwapRouter_$14879","typeString":"contract ISwapRouter"}],"id":1604,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"7840:7:5","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":1603,"name":"address","nodeType":"ElementaryTypeName","src":"7840:7:5","typeDescriptions":{}}},"id":1607,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"7840:18:5","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"hexValue":"30","id":1608,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"7860:1:5","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"}],"expression":{"arguments":[{"id":1600,"name":"tokenIn","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1520,"src":"7823:7:5","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"id":1599,"name":"IERC20Metadata","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9411,"src":"7808:14:5","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_IERC20Metadata_$9411_$","typeString":"type(contract IERC20Metadata)"}},"id":1601,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"7808:23:5","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_contract$_IERC20Metadata_$9411","typeString":"contract IERC20Metadata"}},"id":1602,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"7832:7:5","memberName":"approve","nodeType":"MemberAccess","referencedDeclaration":8666,"src":"7808:31:5","typeDescriptions":{"typeIdentifier":"t_function_external_nonpayable$_t_address_$_t_uint256_$returns$_t_bool_$","typeString":"function (address,uint256) external returns (bool)"}},"id":1609,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"7808:54:5","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":1610,"nodeType":"ExpressionStatement","src":"7808:54:5"},{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":1613,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":1611,"name":"actualAmount","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1592,"src":"7892:12:5","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">","rightExpression":{"id":1612,"name":"amountInMax","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1543,"src":"7907:11:5","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"7892:26:5","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":1619,"nodeType":"IfStatement","src":"7888:89:5","trueBody":{"errorCall":{"arguments":[{"id":1615,"name":"actualAmount","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1592,"src":"7951:12:5","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"id":1616,"name":"amountInMax","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1543,"src":"7965:11:5","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":1614,"name":"SpentMoreThanAcceptable","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1141,"src":"7927:23:5","typeDescriptions":{"typeIdentifier":"t_function_error_pure$_t_uint256_$_t_uint256_$returns$_t_error_$","typeString":"function (uint256,uint256) pure returns (error)"}},"id":1617,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"7927:50:5","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_error","typeString":"error"}},"id":1618,"nodeType":"RevertStatement","src":"7920:57:5"}},{"expression":{"id":1620,"name":"actualAmount","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1592,"src":"7990:12:5","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"functionReturnParameters":1530,"id":1621,"nodeType":"Return","src":"7983:19:5"}]},"id":1623,"implemented":true,"kind":"function","modifiers":[],"name":"_exactOutputUniswap","nameLocation":"6856:19:5","nodeType":"FunctionDefinition","parameters":{"id":1527,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1518,"mutability":"mutable","name":"swapConfig","nameLocation":"6901:10:5","nodeType":"VariableDeclaration","scope":1623,"src":"6881:30:5","stateVariable":false,"storageLocation":"calldata","typeDescriptions":{"typeIdentifier":"t_struct$_SwapConfig_$1113_calldata_ptr","typeString":"struct SwapLibrary.SwapConfig"},"typeName":{"id":1517,"nodeType":"UserDefinedTypeName","pathNode":{"id":1516,"name":"SwapConfig","nameLocations":["6881:10:5"],"nodeType":"IdentifierPath","referencedDeclaration":1113,"src":"6881:10:5"},"referencedDeclaration":1113,"src":"6881:10:5","typeDescriptions":{"typeIdentifier":"t_struct$_SwapConfig_$1113_storage_ptr","typeString":"struct SwapLibrary.SwapConfig"}},"visibility":"internal"},{"constant":false,"id":1520,"mutability":"mutable","name":"tokenIn","nameLocation":"6925:7:5","nodeType":"VariableDeclaration","scope":1623,"src":"6917:15:5","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":1519,"name":"address","nodeType":"ElementaryTypeName","src":"6917:7:5","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":1522,"mutability":"mutable","name":"tokenOut","nameLocation":"6946:8:5","nodeType":"VariableDeclaration","scope":1623,"src":"6938:16:5","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":1521,"name":"address","nodeType":"ElementaryTypeName","src":"6938:7:5","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":1524,"mutability":"mutable","name":"amount","nameLocation":"6968:6:5","nodeType":"VariableDeclaration","scope":1623,"src":"6960:14:5","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":1523,"name":"uint256","nodeType":"ElementaryTypeName","src":"6960:7:5","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":1526,"mutability":"mutable","name":"price","nameLocation":"6988:5:5","nodeType":"VariableDeclaration","scope":1623,"src":"6980:13:5","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":1525,"name":"uint256","nodeType":"ElementaryTypeName","src":"6980:7:5","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"6875:122:5"},"returnParameters":{"id":1530,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1529,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":1623,"src":"7016:7:5","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":1528,"name":"uint256","nodeType":"ElementaryTypeName","src":"7016:7:5","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"7015:9:5"},"scope":1879,"src":"6847:1160:5","stateMutability":"nonpayable","virtual":false,"visibility":"internal"},{"body":{"id":1723,"nodeType":"Block","src":"8195:690:5","statements":[{"assignments":[1641,1644],"declarations":[{"constant":false,"id":1641,"mutability":"mutable","name":"router","nameLocation":"8215:6:5","nodeType":"VariableDeclaration","scope":1723,"src":"8202:19:5","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_contract$_ICurveRouter_$2156","typeString":"contract ICurveRouter"},"typeName":{"id":1640,"nodeType":"UserDefinedTypeName","pathNode":{"id":1639,"name":"ICurveRouter","nameLocations":["8202:12:5"],"nodeType":"IdentifierPath","referencedDeclaration":2156,"src":"8202:12:5"},"referencedDeclaration":2156,"src":"8202:12:5","typeDescriptions":{"typeIdentifier":"t_contract$_ICurveRouter_$2156","typeString":"contract ICurveRouter"}},"visibility":"internal"},{"constant":false,"id":1644,"mutability":"mutable","name":"route","nameLocation":"8253:5:5","nodeType":"VariableDeclaration","scope":1723,"src":"8223:35:5","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_struct$_CurveRoute_$536_memory_ptr","typeString":"struct CurveRoutes.CurveRoute"},"typeName":{"id":1643,"nodeType":"UserDefinedTypeName","pathNode":{"id":1642,"name":"CurveRoutes.CurveRoute","nameLocations":["8223:11:5","8235:10:5"],"nodeType":"IdentifierPath","referencedDeclaration":536,"src":"8223:22:5"},"referencedDeclaration":536,"src":"8223:22:5","typeDescriptions":{"typeIdentifier":"t_struct$_CurveRoute_$536_storage_ptr","typeString":"struct CurveRoutes.CurveRoute"}},"visibility":"internal"}],"id":1652,"initialValue":{"arguments":[{"expression":{"id":1647,"name":"swapConfig","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1626,"src":"8291:10:5","typeDescriptions":{"typeIdentifier":"t_struct$_SwapConfig_$1113_calldata_ptr","typeString":"struct SwapLibrary.SwapConfig calldata"}},"id":1648,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"8302:12:5","memberName":"customParams","nodeType":"MemberAccess","referencedDeclaration":1112,"src":"8291:23:5","typeDescriptions":{"typeIdentifier":"t_bytes_calldata_ptr","typeString":"bytes calldata"}},{"id":1649,"name":"tokenIn","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1628,"src":"8322:7:5","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":1650,"name":"tokenOut","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1630,"src":"8337:8:5","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes_calldata_ptr","typeString":"bytes calldata"},{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_address","typeString":"address"}],"expression":{"id":1645,"name":"CurveRoutes","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1078,"src":"8262:11:5","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_CurveRoutes_$1078_$","typeString":"type(library CurveRoutes)"}},"id":1646,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"8274:9:5","memberName":"findRoute","nodeType":"MemberAccess","referencedDeclaration":1077,"src":"8262:21:5","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_bytes_memory_ptr_$_t_address_$_t_address_$returns$_t_contract$_ICurveRouter_$2156_$_t_struct$_CurveRoute_$536_memory_ptr_$","typeString":"function (bytes memory,address,address) pure returns (contract ICurveRouter,struct CurveRoutes.CurveRoute memory)"}},"id":1651,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"8262:89:5","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$_t_contract$_ICurveRouter_$2156_$_t_struct$_CurveRoute_$536_memory_ptr_$","typeString":"tuple(contract ICurveRouter,struct CurveRoutes.CurveRoute memory)"}},"nodeType":"VariableDeclarationStatement","src":"8201:150:5"},{"assignments":[1654],"declarations":[{"constant":false,"id":1654,"mutability":"mutable","name":"amountOutMin","nameLocation":"8365:12:5","nodeType":"VariableDeclaration","scope":1723,"src":"8357:20:5","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":1653,"name":"uint256","nodeType":"ElementaryTypeName","src":"8357:7:5","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":1663,"initialValue":{"arguments":[{"id":1656,"name":"amount","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1632,"src":"8395:6:5","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"expression":{"id":1657,"name":"swapConfig","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1626,"src":"8403:10:5","typeDescriptions":{"typeIdentifier":"t_struct$_SwapConfig_$1113_calldata_ptr","typeString":"struct SwapLibrary.SwapConfig calldata"}},"id":1658,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"8414:11:5","memberName":"maxSlippage","nodeType":"MemberAccess","referencedDeclaration":1110,"src":"8403:22:5","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"id":1659,"name":"tokenIn","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1628,"src":"8427:7:5","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":1660,"name":"tokenOut","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1630,"src":"8436:8:5","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":1661,"name":"price","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1634,"src":"8446:5:5","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":1655,"name":"_calcMinAmount","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1366,"src":"8380:14:5","typeDescriptions":{"typeIdentifier":"t_function_internal_view$_t_uint256_$_t_uint256_$_t_address_$_t_address_$_t_uint256_$returns$_t_uint256_$","typeString":"function (uint256,uint256,address,address,uint256) view returns (uint256)"}},"id":1662,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"8380:72:5","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"VariableDeclarationStatement","src":"8357:95:5"},{"expression":{"arguments":[{"arguments":[{"id":1670,"name":"router","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1641,"src":"8499:6:5","typeDescriptions":{"typeIdentifier":"t_contract$_ICurveRouter_$2156","typeString":"contract ICurveRouter"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_contract$_ICurveRouter_$2156","typeString":"contract ICurveRouter"}],"id":1669,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"8491:7:5","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":1668,"name":"address","nodeType":"ElementaryTypeName","src":"8491:7:5","typeDescriptions":{}}},"id":1671,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"8491:15:5","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":1672,"name":"amount","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1632,"src":"8508:6:5","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"expression":{"arguments":[{"id":1665,"name":"tokenIn","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1628,"src":"8474:7:5","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"id":1664,"name":"IERC20Metadata","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9411,"src":"8459:14:5","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_IERC20Metadata_$9411_$","typeString":"type(contract IERC20Metadata)"}},"id":1666,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"8459:23:5","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_contract$_IERC20Metadata_$9411","typeString":"contract IERC20Metadata"}},"id":1667,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"8483:7:5","memberName":"approve","nodeType":"MemberAccess","referencedDeclaration":8666,"src":"8459:31:5","typeDescriptions":{"typeIdentifier":"t_function_external_nonpayable$_t_address_$_t_uint256_$returns$_t_bool_$","typeString":"function (address,uint256) external returns (bool)"}},"id":1673,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"8459:56:5","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":1674,"nodeType":"ExpressionStatement","src":"8459:56:5"},{"expression":{"id":1691,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":1675,"name":"received","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1637,"src":"8521:8:5","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"arguments":[{"expression":{"id":1678,"name":"route","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1644,"src":"8548:5:5","typeDescriptions":{"typeIdentifier":"t_struct$_CurveRoute_$536_memory_ptr","typeString":"struct CurveRoutes.CurveRoute memory"}},"id":1679,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"8554:5:5","memberName":"route","nodeType":"MemberAccess","referencedDeclaration":524,"src":"8548:11:5","typeDescriptions":{"typeIdentifier":"t_array$_t_address_$11_memory_ptr","typeString":"address[11] memory"}},{"expression":{"id":1680,"name":"route","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1644,"src":"8561:5:5","typeDescriptions":{"typeIdentifier":"t_struct$_CurveRoute_$536_memory_ptr","typeString":"struct CurveRoutes.CurveRoute memory"}},"id":1681,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"8567:10:5","memberName":"swapParams","nodeType":"MemberAccess","referencedDeclaration":531,"src":"8561:16:5","typeDescriptions":{"typeIdentifier":"t_array$_t_array$_t_uint256_$5_memory_ptr_$5_memory_ptr","typeString":"uint256[5] memory[5] memory"}},{"id":1682,"name":"amount","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1632,"src":"8579:6:5","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"id":1683,"name":"amountOutMin","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1654,"src":"8587:12:5","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"expression":{"id":1684,"name":"route","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1644,"src":"8601:5:5","typeDescriptions":{"typeIdentifier":"t_struct$_CurveRoute_$536_memory_ptr","typeString":"struct CurveRoutes.CurveRoute memory"}},"id":1685,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"8607:5:5","memberName":"pools","nodeType":"MemberAccess","referencedDeclaration":535,"src":"8601:11:5","typeDescriptions":{"typeIdentifier":"t_array$_t_address_$5_memory_ptr","typeString":"address[5] memory"}},{"arguments":[{"id":1688,"name":"this","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-28,"src":"8622:4:5","typeDescriptions":{"typeIdentifier":"t_contract$_SwapLibrary_$1879","typeString":"library SwapLibrary"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_contract$_SwapLibrary_$1879","typeString":"library SwapLibrary"}],"id":1687,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"8614:7:5","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":1686,"name":"address","nodeType":"ElementaryTypeName","src":"8614:7:5","typeDescriptions":{}}},"id":1689,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"8614:13:5","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_array$_t_address_$11_memory_ptr","typeString":"address[11] memory"},{"typeIdentifier":"t_array$_t_array$_t_uint256_$5_memory_ptr_$5_memory_ptr","typeString":"uint256[5] memory[5] memory"},{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_array$_t_address_$5_memory_ptr","typeString":"address[5] memory"},{"typeIdentifier":"t_address","typeString":"address"}],"expression":{"id":1676,"name":"router","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1641,"src":"8532:6:5","typeDescriptions":{"typeIdentifier":"t_contract$_ICurveRouter_$2156","typeString":"contract ICurveRouter"}},"id":1677,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"8539:8:5","memberName":"exchange","nodeType":"MemberAccess","referencedDeclaration":1972,"src":"8532:15:5","typeDescriptions":{"typeIdentifier":"t_function_external_payable$_t_array$_t_address_$11_memory_ptr_$_t_array$_t_array$_t_uint256_$5_memory_ptr_$5_memory_ptr_$_t_uint256_$_t_uint256_$_t_array$_t_address_$5_memory_ptr_$_t_address_$returns$_t_uint256_$","typeString":"function (address[11] memory,uint256[5] memory[5] memory,uint256,uint256,address[5] memory,address) payable external returns (uint256)"}},"id":1690,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"8532:96:5","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"8521:107:5","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":1692,"nodeType":"ExpressionStatement","src":"8521:107:5"},{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":1707,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"arguments":[{"arguments":[{"id":1699,"name":"this","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-28,"src":"8681:4:5","typeDescriptions":{"typeIdentifier":"t_contract$_SwapLibrary_$1879","typeString":"library SwapLibrary"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_contract$_SwapLibrary_$1879","typeString":"library SwapLibrary"}],"id":1698,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"8673:7:5","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":1697,"name":"address","nodeType":"ElementaryTypeName","src":"8673:7:5","typeDescriptions":{}}},"id":1700,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"8673:13:5","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"arguments":[{"id":1703,"name":"router","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1641,"src":"8696:6:5","typeDescriptions":{"typeIdentifier":"t_contract$_ICurveRouter_$2156","typeString":"contract ICurveRouter"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_contract$_ICurveRouter_$2156","typeString":"contract ICurveRouter"}],"id":1702,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"8688:7:5","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":1701,"name":"address","nodeType":"ElementaryTypeName","src":"8688:7:5","typeDescriptions":{}}},"id":1704,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"8688:15:5","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_address","typeString":"address"}],"expression":{"arguments":[{"id":1694,"name":"tokenIn","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1628,"src":"8654:7:5","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"id":1693,"name":"IERC20Metadata","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9411,"src":"8639:14:5","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_IERC20Metadata_$9411_$","typeString":"type(contract IERC20Metadata)"}},"id":1695,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"8639:23:5","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_contract$_IERC20Metadata_$9411","typeString":"contract IERC20Metadata"}},"id":1696,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"8663:9:5","memberName":"allowance","nodeType":"MemberAccess","referencedDeclaration":8656,"src":"8639:33:5","typeDescriptions":{"typeIdentifier":"t_function_external_view$_t_address_$_t_address_$returns$_t_uint256_$","typeString":"function (address,address) view external returns (uint256)"}},"id":1705,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"8639:65:5","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"!=","rightExpression":{"hexValue":"30","id":1706,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"8708:1:5","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"8639:70:5","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":1711,"nodeType":"IfStatement","src":"8635:112:5","trueBody":{"errorCall":{"arguments":[],"expression":{"argumentTypes":[],"id":1708,"name":"AllowanceShouldGoBackToZero","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1129,"src":"8718:27:5","typeDescriptions":{"typeIdentifier":"t_function_error_pure$__$returns$_t_error_$","typeString":"function () pure returns (error)"}},"id":1709,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"8718:29:5","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_error","typeString":"error"}},"id":1710,"nodeType":"RevertStatement","src":"8711:36:5"}},{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":1714,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":1712,"name":"received","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1637,"src":"8777:8:5","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"<","rightExpression":{"id":1713,"name":"amountOutMin","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1654,"src":"8788:12:5","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"8777:23:5","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":1720,"nodeType":"IfStatement","src":"8773:86:5","trueBody":{"errorCall":{"arguments":[{"id":1716,"name":"received","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1637,"src":"8836:8:5","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"id":1717,"name":"amountOutMin","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1654,"src":"8846:12:5","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":1715,"name":"ReceivedLessThanAcceptable","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1135,"src":"8809:26:5","typeDescriptions":{"typeIdentifier":"t_function_error_pure$_t_uint256_$_t_uint256_$returns$_t_error_$","typeString":"function (uint256,uint256) pure returns (error)"}},"id":1718,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"8809:50:5","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_error","typeString":"error"}},"id":1719,"nodeType":"RevertStatement","src":"8802:57:5"}},{"expression":{"id":1721,"name":"received","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1637,"src":"8872:8:5","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"functionReturnParameters":1638,"id":1722,"nodeType":"Return","src":"8865:15:5"}]},"id":1724,"implemented":true,"kind":"function","modifiers":[],"name":"_exactInputCurve","nameLocation":"8020:16:5","nodeType":"FunctionDefinition","parameters":{"id":1635,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1626,"mutability":"mutable","name":"swapConfig","nameLocation":"8062:10:5","nodeType":"VariableDeclaration","scope":1724,"src":"8042:30:5","stateVariable":false,"storageLocation":"calldata","typeDescriptions":{"typeIdentifier":"t_struct$_SwapConfig_$1113_calldata_ptr","typeString":"struct SwapLibrary.SwapConfig"},"typeName":{"id":1625,"nodeType":"UserDefinedTypeName","pathNode":{"id":1624,"name":"SwapConfig","nameLocations":["8042:10:5"],"nodeType":"IdentifierPath","referencedDeclaration":1113,"src":"8042:10:5"},"referencedDeclaration":1113,"src":"8042:10:5","typeDescriptions":{"typeIdentifier":"t_struct$_SwapConfig_$1113_storage_ptr","typeString":"struct SwapLibrary.SwapConfig"}},"visibility":"internal"},{"constant":false,"id":1628,"mutability":"mutable","name":"tokenIn","nameLocation":"8086:7:5","nodeType":"VariableDeclaration","scope":1724,"src":"8078:15:5","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":1627,"name":"address","nodeType":"ElementaryTypeName","src":"8078:7:5","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":1630,"mutability":"mutable","name":"tokenOut","nameLocation":"8107:8:5","nodeType":"VariableDeclaration","scope":1724,"src":"8099:16:5","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":1629,"name":"address","nodeType":"ElementaryTypeName","src":"8099:7:5","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":1632,"mutability":"mutable","name":"amount","nameLocation":"8129:6:5","nodeType":"VariableDeclaration","scope":1724,"src":"8121:14:5","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":1631,"name":"uint256","nodeType":"ElementaryTypeName","src":"8121:7:5","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":1634,"mutability":"mutable","name":"price","nameLocation":"8149:5:5","nodeType":"VariableDeclaration","scope":1724,"src":"8141:13:5","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":1633,"name":"uint256","nodeType":"ElementaryTypeName","src":"8141:7:5","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"8036:122:5"},"returnParameters":{"id":1638,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1637,"mutability":"mutable","name":"received","nameLocation":"8185:8:5","nodeType":"VariableDeclaration","scope":1724,"src":"8177:16:5","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":1636,"name":"uint256","nodeType":"ElementaryTypeName","src":"8177:7:5","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"8176:18:5"},"scope":1879,"src":"8011:874:5","stateMutability":"nonpayable","virtual":false,"visibility":"internal"},{"body":{"id":1770,"nodeType":"Block","src":"9063:317:5","statements":[{"expression":{"id":1750,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":1739,"name":"amountInActual","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1737,"src":"9069:14:5","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"arguments":[{"expression":{"id":1742,"name":"route","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1730,"src":"9100:5:5","typeDescriptions":{"typeIdentifier":"t_struct$_CurveRoute_$536_memory_ptr","typeString":"struct CurveRoutes.CurveRoute memory"}},"id":1743,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"9106:5:5","memberName":"route","nodeType":"MemberAccess","referencedDeclaration":524,"src":"9100:11:5","typeDescriptions":{"typeIdentifier":"t_array$_t_address_$11_memory_ptr","typeString":"address[11] memory"}},{"expression":{"id":1744,"name":"route","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1730,"src":"9113:5:5","typeDescriptions":{"typeIdentifier":"t_struct$_CurveRoute_$536_memory_ptr","typeString":"struct CurveRoutes.CurveRoute memory"}},"id":1745,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"9119:10:5","memberName":"swapParams","nodeType":"MemberAccess","referencedDeclaration":531,"src":"9113:16:5","typeDescriptions":{"typeIdentifier":"t_array$_t_array$_t_uint256_$5_memory_ptr_$5_memory_ptr","typeString":"uint256[5] memory[5] memory"}},{"id":1746,"name":"amount","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1732,"src":"9131:6:5","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"expression":{"id":1747,"name":"route","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1730,"src":"9139:5:5","typeDescriptions":{"typeIdentifier":"t_struct$_CurveRoute_$536_memory_ptr","typeString":"struct CurveRoutes.CurveRoute memory"}},"id":1748,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"9145:5:5","memberName":"pools","nodeType":"MemberAccess","referencedDeclaration":535,"src":"9139:11:5","typeDescriptions":{"typeIdentifier":"t_array$_t_address_$5_memory_ptr","typeString":"address[5] memory"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_array$_t_address_$11_memory_ptr","typeString":"address[11] memory"},{"typeIdentifier":"t_array$_t_array$_t_uint256_$5_memory_ptr_$5_memory_ptr","typeString":"uint256[5] memory[5] memory"},{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_array$_t_address_$5_memory_ptr","typeString":"address[5] memory"}],"expression":{"id":1740,"name":"router","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1727,"src":"9086:6:5","typeDescriptions":{"typeIdentifier":"t_contract$_ICurveRouter_$2156","typeString":"contract ICurveRouter"}},"id":1741,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"9093:6:5","memberName":"get_dx","nodeType":"MemberAccess","referencedDeclaration":1993,"src":"9086:13:5","typeDescriptions":{"typeIdentifier":"t_function_external_view$_t_array$_t_address_$11_memory_ptr_$_t_array$_t_array$_t_uint256_$5_memory_ptr_$5_memory_ptr_$_t_uint256_$_t_array$_t_address_$5_memory_ptr_$returns$_t_uint256_$","typeString":"function (address[11] memory,uint256[5] memory[5] memory,uint256,address[5] memory) view external returns (uint256)"}},"id":1749,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"9086:65:5","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"9069:82:5","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":1751,"nodeType":"ExpressionStatement","src":"9069:82:5"},{"expression":{"id":1768,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":1752,"name":"received","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1735,"src":"9157:8:5","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"arguments":[{"expression":{"id":1755,"name":"route","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1730,"src":"9191:5:5","typeDescriptions":{"typeIdentifier":"t_struct$_CurveRoute_$536_memory_ptr","typeString":"struct CurveRoutes.CurveRoute memory"}},"id":1756,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"9197:5:5","memberName":"route","nodeType":"MemberAccess","referencedDeclaration":524,"src":"9191:11:5","typeDescriptions":{"typeIdentifier":"t_array$_t_address_$11_memory_ptr","typeString":"address[11] memory"}},{"expression":{"id":1757,"name":"route","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1730,"src":"9210:5:5","typeDescriptions":{"typeIdentifier":"t_struct$_CurveRoute_$536_memory_ptr","typeString":"struct CurveRoutes.CurveRoute memory"}},"id":1758,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"9216:10:5","memberName":"swapParams","nodeType":"MemberAccess","referencedDeclaration":531,"src":"9210:16:5","typeDescriptions":{"typeIdentifier":"t_array$_t_array$_t_uint256_$5_memory_ptr_$5_memory_ptr","typeString":"uint256[5] memory[5] memory"}},{"id":1759,"name":"amountInActual","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1737,"src":"9234:14:5","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"hexValue":"30","id":1760,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"9256:1:5","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},{"expression":{"id":1761,"name":"route","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1730,"src":"9337:5:5","typeDescriptions":{"typeIdentifier":"t_struct$_CurveRoute_$536_memory_ptr","typeString":"struct CurveRoutes.CurveRoute memory"}},"id":1762,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"9343:5:5","memberName":"pools","nodeType":"MemberAccess","referencedDeclaration":535,"src":"9337:11:5","typeDescriptions":{"typeIdentifier":"t_array$_t_address_$5_memory_ptr","typeString":"address[5] memory"}},{"arguments":[{"id":1765,"name":"this","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-28,"src":"9364:4:5","typeDescriptions":{"typeIdentifier":"t_contract$_SwapLibrary_$1879","typeString":"library SwapLibrary"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_contract$_SwapLibrary_$1879","typeString":"library SwapLibrary"}],"id":1764,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"9356:7:5","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":1763,"name":"address","nodeType":"ElementaryTypeName","src":"9356:7:5","typeDescriptions":{}}},"id":1766,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"9356:13:5","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_array$_t_address_$11_memory_ptr","typeString":"address[11] memory"},{"typeIdentifier":"t_array$_t_array$_t_uint256_$5_memory_ptr_$5_memory_ptr","typeString":"uint256[5] memory[5] memory"},{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},{"typeIdentifier":"t_array$_t_address_$5_memory_ptr","typeString":"address[5] memory"},{"typeIdentifier":"t_address","typeString":"address"}],"expression":{"id":1753,"name":"router","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1727,"src":"9168:6:5","typeDescriptions":{"typeIdentifier":"t_contract$_ICurveRouter_$2156","typeString":"contract ICurveRouter"}},"id":1754,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"9175:8:5","memberName":"exchange","nodeType":"MemberAccess","referencedDeclaration":1972,"src":"9168:15:5","typeDescriptions":{"typeIdentifier":"t_function_external_payable$_t_array$_t_address_$11_memory_ptr_$_t_array$_t_array$_t_uint256_$5_memory_ptr_$5_memory_ptr_$_t_uint256_$_t_uint256_$_t_array$_t_address_$5_memory_ptr_$_t_address_$returns$_t_uint256_$","typeString":"function (address[11] memory,uint256[5] memory[5] memory,uint256,uint256,address[5] memory,address) payable external returns (uint256)"}},"id":1767,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"9168:207:5","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"9157:218:5","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":1769,"nodeType":"ExpressionStatement","src":"9157:218:5"}]},"id":1771,"implemented":true,"kind":"function","modifiers":[],"name":"_exchangeCurve","nameLocation":"8898:14:5","nodeType":"FunctionDefinition","parameters":{"id":1733,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1727,"mutability":"mutable","name":"router","nameLocation":"8931:6:5","nodeType":"VariableDeclaration","scope":1771,"src":"8918:19:5","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_contract$_ICurveRouter_$2156","typeString":"contract ICurveRouter"},"typeName":{"id":1726,"nodeType":"UserDefinedTypeName","pathNode":{"id":1725,"name":"ICurveRouter","nameLocations":["8918:12:5"],"nodeType":"IdentifierPath","referencedDeclaration":2156,"src":"8918:12:5"},"referencedDeclaration":2156,"src":"8918:12:5","typeDescriptions":{"typeIdentifier":"t_contract$_ICurveRouter_$2156","typeString":"contract ICurveRouter"}},"visibility":"internal"},{"constant":false,"id":1730,"mutability":"mutable","name":"route","nameLocation":"8973:5:5","nodeType":"VariableDeclaration","scope":1771,"src":"8943:35:5","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_struct$_CurveRoute_$536_memory_ptr","typeString":"struct CurveRoutes.CurveRoute"},"typeName":{"id":1729,"nodeType":"UserDefinedTypeName","pathNode":{"id":1728,"name":"CurveRoutes.CurveRoute","nameLocations":["8943:11:5","8955:10:5"],"nodeType":"IdentifierPath","referencedDeclaration":536,"src":"8943:22:5"},"referencedDeclaration":536,"src":"8943:22:5","typeDescriptions":{"typeIdentifier":"t_struct$_CurveRoute_$536_storage_ptr","typeString":"struct CurveRoutes.CurveRoute"}},"visibility":"internal"},{"constant":false,"id":1732,"mutability":"mutable","name":"amount","nameLocation":"8992:6:5","nodeType":"VariableDeclaration","scope":1771,"src":"8984:14:5","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":1731,"name":"uint256","nodeType":"ElementaryTypeName","src":"8984:7:5","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"8912:90:5"},"returnParameters":{"id":1738,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1735,"mutability":"mutable","name":"received","nameLocation":"9029:8:5","nodeType":"VariableDeclaration","scope":1771,"src":"9021:16:5","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":1734,"name":"uint256","nodeType":"ElementaryTypeName","src":"9021:7:5","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":1737,"mutability":"mutable","name":"amountInActual","nameLocation":"9047:14:5","nodeType":"VariableDeclaration","scope":1771,"src":"9039:22:5","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":1736,"name":"uint256","nodeType":"ElementaryTypeName","src":"9039:7:5","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"9020:42:5"},"scope":1879,"src":"8889:491:5","stateMutability":"nonpayable","virtual":false,"visibility":"internal"},{"body":{"id":1877,"nodeType":"Block","src":"9560:799:5","statements":[{"assignments":[1789,1792],"declarations":[{"constant":false,"id":1789,"mutability":"mutable","name":"router","nameLocation":"9580:6:5","nodeType":"VariableDeclaration","scope":1877,"src":"9567:19:5","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_contract$_ICurveRouter_$2156","typeString":"contract ICurveRouter"},"typeName":{"id":1788,"nodeType":"UserDefinedTypeName","pathNode":{"id":1787,"name":"ICurveRouter","nameLocations":["9567:12:5"],"nodeType":"IdentifierPath","referencedDeclaration":2156,"src":"9567:12:5"},"referencedDeclaration":2156,"src":"9567:12:5","typeDescriptions":{"typeIdentifier":"t_contract$_ICurveRouter_$2156","typeString":"contract ICurveRouter"}},"visibility":"internal"},{"constant":false,"id":1792,"mutability":"mutable","name":"route","nameLocation":"9618:5:5","nodeType":"VariableDeclaration","scope":1877,"src":"9588:35:5","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_struct$_CurveRoute_$536_memory_ptr","typeString":"struct CurveRoutes.CurveRoute"},"typeName":{"id":1791,"nodeType":"UserDefinedTypeName","pathNode":{"id":1790,"name":"CurveRoutes.CurveRoute","nameLocations":["9588:11:5","9600:10:5"],"nodeType":"IdentifierPath","referencedDeclaration":536,"src":"9588:22:5"},"referencedDeclaration":536,"src":"9588:22:5","typeDescriptions":{"typeIdentifier":"t_struct$_CurveRoute_$536_storage_ptr","typeString":"struct CurveRoutes.CurveRoute"}},"visibility":"internal"}],"id":1800,"initialValue":{"arguments":[{"expression":{"id":1795,"name":"swapConfig","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1774,"src":"9656:10:5","typeDescriptions":{"typeIdentifier":"t_struct$_SwapConfig_$1113_calldata_ptr","typeString":"struct SwapLibrary.SwapConfig calldata"}},"id":1796,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"9667:12:5","memberName":"customParams","nodeType":"MemberAccess","referencedDeclaration":1112,"src":"9656:23:5","typeDescriptions":{"typeIdentifier":"t_bytes_calldata_ptr","typeString":"bytes calldata"}},{"id":1797,"name":"tokenIn","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1776,"src":"9687:7:5","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":1798,"name":"tokenOut","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1778,"src":"9702:8:5","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes_calldata_ptr","typeString":"bytes calldata"},{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_address","typeString":"address"}],"expression":{"id":1793,"name":"CurveRoutes","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1078,"src":"9627:11:5","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_CurveRoutes_$1078_$","typeString":"type(library CurveRoutes)"}},"id":1794,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"9639:9:5","memberName":"findRoute","nodeType":"MemberAccess","referencedDeclaration":1077,"src":"9627:21:5","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_bytes_memory_ptr_$_t_address_$_t_address_$returns$_t_contract$_ICurveRouter_$2156_$_t_struct$_CurveRoute_$536_memory_ptr_$","typeString":"function (bytes memory,address,address) pure returns (contract ICurveRouter,struct CurveRoutes.CurveRoute memory)"}},"id":1799,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"9627:89:5","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$_t_contract$_ICurveRouter_$2156_$_t_struct$_CurveRoute_$536_memory_ptr_$","typeString":"tuple(contract ICurveRouter,struct CurveRoutes.CurveRoute memory)"}},"nodeType":"VariableDeclarationStatement","src":"9566:150:5"},{"assignments":[1802],"declarations":[{"constant":false,"id":1802,"mutability":"mutable","name":"amountInMax","nameLocation":"9730:11:5","nodeType":"VariableDeclaration","scope":1877,"src":"9722:19:5","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":1801,"name":"uint256","nodeType":"ElementaryTypeName","src":"9722:7:5","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":1811,"initialValue":{"arguments":[{"id":1804,"name":"amount","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1780,"src":"9759:6:5","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"expression":{"id":1805,"name":"swapConfig","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1774,"src":"9767:10:5","typeDescriptions":{"typeIdentifier":"t_struct$_SwapConfig_$1113_calldata_ptr","typeString":"struct SwapLibrary.SwapConfig calldata"}},"id":1806,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"9778:11:5","memberName":"maxSlippage","nodeType":"MemberAccess","referencedDeclaration":1110,"src":"9767:22:5","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"id":1807,"name":"tokenIn","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1776,"src":"9791:7:5","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":1808,"name":"tokenOut","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1778,"src":"9800:8:5","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":1809,"name":"price","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1782,"src":"9810:5:5","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":1803,"name":"_calcMaxAmount","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1403,"src":"9744:14:5","typeDescriptions":{"typeIdentifier":"t_function_internal_view$_t_uint256_$_t_uint256_$_t_address_$_t_address_$_t_uint256_$returns$_t_uint256_$","typeString":"function (uint256,uint256,address,address,uint256) view returns (uint256)"}},"id":1810,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"9744:72:5","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"VariableDeclarationStatement","src":"9722:94:5"},{"expression":{"arguments":[{"arguments":[{"id":1818,"name":"router","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1789,"src":"9862:6:5","typeDescriptions":{"typeIdentifier":"t_contract$_ICurveRouter_$2156","typeString":"contract ICurveRouter"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_contract$_ICurveRouter_$2156","typeString":"contract ICurveRouter"}],"id":1817,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"9854:7:5","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":1816,"name":"address","nodeType":"ElementaryTypeName","src":"9854:7:5","typeDescriptions":{}}},"id":1819,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"9854:15:5","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":1820,"name":"amountInMax","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1802,"src":"9871:11:5","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"expression":{"arguments":[{"id":1813,"name":"tokenIn","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1776,"src":"9837:7:5","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"id":1812,"name":"IERC20Metadata","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9411,"src":"9822:14:5","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_IERC20Metadata_$9411_$","typeString":"type(contract IERC20Metadata)"}},"id":1814,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"9822:23:5","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_contract$_IERC20Metadata_$9411","typeString":"contract IERC20Metadata"}},"id":1815,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"9846:7:5","memberName":"approve","nodeType":"MemberAccess","referencedDeclaration":8666,"src":"9822:31:5","typeDescriptions":{"typeIdentifier":"t_function_external_nonpayable$_t_address_$_t_uint256_$returns$_t_bool_$","typeString":"function (address,uint256) external returns (bool)"}},"id":1821,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"9822:61:5","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":1822,"nodeType":"ExpressionStatement","src":"9822:61:5"},{"assignments":[1824],"declarations":[{"constant":false,"id":1824,"mutability":"mutable","name":"amountInConsumed","nameLocation":"9897:16:5","nodeType":"VariableDeclaration","scope":1877,"src":"9889:24:5","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":1823,"name":"uint256","nodeType":"ElementaryTypeName","src":"9889:7:5","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":1826,"initialValue":{"hexValue":"30","id":1825,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"9916:1:5","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"nodeType":"VariableDeclarationStatement","src":"9889:28:5"},{"body":{"id":1862,"nodeType":"Block","src":"10086:183:5","statements":[{"assignments":[1841,1843],"declarations":[{"constant":false,"id":1841,"mutability":"mutable","name":"received","nameLocation":"10103:8:5","nodeType":"VariableDeclaration","scope":1862,"src":"10095:16:5","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":1840,"name":"uint256","nodeType":"ElementaryTypeName","src":"10095:7:5","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":1843,"mutability":"mutable","name":"amountInActual","nameLocation":"10121:14:5","nodeType":"VariableDeclaration","scope":1862,"src":"10113:22:5","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":1842,"name":"uint256","nodeType":"ElementaryTypeName","src":"10113:7:5","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":1849,"initialValue":{"arguments":[{"id":1845,"name":"router","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1789,"src":"10154:6:5","typeDescriptions":{"typeIdentifier":"t_contract$_ICurveRouter_$2156","typeString":"contract ICurveRouter"}},{"id":1846,"name":"route","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1792,"src":"10162:5:5","typeDescriptions":{"typeIdentifier":"t_struct$_CurveRoute_$536_memory_ptr","typeString":"struct CurveRoutes.CurveRoute memory"}},{"id":1847,"name":"amount","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1780,"src":"10169:6:5","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_contract$_ICurveRouter_$2156","typeString":"contract ICurveRouter"},{"typeIdentifier":"t_struct$_CurveRoute_$536_memory_ptr","typeString":"struct CurveRoutes.CurveRoute memory"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":1844,"name":"_exchangeCurve","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1771,"src":"10139:14:5","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_contract$_ICurveRouter_$2156_$_t_struct$_CurveRoute_$536_memory_ptr_$_t_uint256_$returns$_t_uint256_$_t_uint256_$","typeString":"function (contract ICurveRouter,struct CurveRoutes.CurveRoute memory,uint256) returns (uint256,uint256)"}},"id":1848,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"10139:37:5","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$_t_uint256_$_t_uint256_$","typeString":"tuple(uint256,uint256)"}},"nodeType":"VariableDeclarationStatement","src":"10094:82:5"},{"expression":{"id":1856,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":1850,"name":"amount","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1780,"src":"10184:6:5","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"-=","rightHandSide":{"arguments":[{"id":1853,"name":"amount","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1780,"src":"10203:6:5","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"id":1854,"name":"received","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1841,"src":"10211:8:5","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"expression":{"id":1851,"name":"Math","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":12726,"src":"10194:4:5","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_Math_$12726_$","typeString":"type(library Math)"}},"id":1852,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"10199:3:5","memberName":"min","nodeType":"MemberAccess","referencedDeclaration":11411,"src":"10194:8:5","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_uint256_$_t_uint256_$returns$_t_uint256_$","typeString":"function (uint256,uint256) pure returns (uint256)"}},"id":1855,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"10194:26:5","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"10184:36:5","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":1857,"nodeType":"ExpressionStatement","src":"10184:36:5"},{"expression":{"id":1860,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":1858,"name":"amountInConsumed","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1824,"src":"10228:16:5","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"+=","rightHandSide":{"id":1859,"name":"amountInActual","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1843,"src":"10248:14:5","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"10228:34:5","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":1861,"nodeType":"ExpressionStatement","src":"10228:34:5"}]},"condition":{"commonType":{"typeIdentifier":"t_bool","typeString":"bool"},"id":1836,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":1832,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":1830,"name":"amount","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1780,"src":"10048:6:5","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"!=","rightExpression":{"hexValue":"30","id":1831,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"10058:1:5","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"10048:11:5","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"nodeType":"BinaryOperation","operator":"&&","rightExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":1835,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":1833,"name":"i","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1828,"src":"10063:1:5","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"<","rightExpression":{"id":1834,"name":"MAX_EXCHANGE","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1100,"src":"10067:12:5","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"10063:16:5","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"src":"10048:31:5","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":1863,"initializationExpression":{"assignments":[1828],"declarations":[{"constant":false,"id":1828,"mutability":"mutable","name":"i","nameLocation":"10045:1:5","nodeType":"VariableDeclaration","scope":1863,"src":"10037:9:5","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":1827,"name":"uint256","nodeType":"ElementaryTypeName","src":"10037:7:5","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":1829,"nodeType":"VariableDeclarationStatement","src":"10037:9:5"},"isSimpleCounterLoop":false,"loopExpression":{"expression":{"id":1838,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"UnaryOperation","operator":"++","prefix":false,"src":"10081:3:5","subExpression":{"id":1837,"name":"i","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1828,"src":"10081:1:5","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":1839,"nodeType":"ExpressionStatement","src":"10081:3:5"},"nodeType":"ForStatement","src":"10032:237:5"},{"expression":{"arguments":[{"arguments":[{"id":1870,"name":"router","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1789,"src":"10314:6:5","typeDescriptions":{"typeIdentifier":"t_contract$_ICurveRouter_$2156","typeString":"contract ICurveRouter"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_contract$_ICurveRouter_$2156","typeString":"contract ICurveRouter"}],"id":1869,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"10306:7:5","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":1868,"name":"address","nodeType":"ElementaryTypeName","src":"10306:7:5","typeDescriptions":{}}},"id":1871,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"10306:15:5","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"hexValue":"30","id":1872,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"10323:1:5","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"}],"expression":{"arguments":[{"id":1865,"name":"tokenIn","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1776,"src":"10289:7:5","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"id":1864,"name":"IERC20Metadata","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9411,"src":"10274:14:5","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_IERC20Metadata_$9411_$","typeString":"type(contract IERC20Metadata)"}},"id":1866,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"10274:23:5","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_contract$_IERC20Metadata_$9411","typeString":"contract IERC20Metadata"}},"id":1867,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"10298:7:5","memberName":"approve","nodeType":"MemberAccess","referencedDeclaration":8666,"src":"10274:31:5","typeDescriptions":{"typeIdentifier":"t_function_external_nonpayable$_t_address_$_t_uint256_$returns$_t_bool_$","typeString":"function (address,uint256) external returns (bool)"}},"id":1873,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"10274:51:5","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":1874,"nodeType":"ExpressionStatement","src":"10274:51:5"},{"expression":{"id":1875,"name":"amountInConsumed","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1824,"src":"10338:16:5","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"functionReturnParameters":1786,"id":1876,"nodeType":"Return","src":"10331:23:5"}]},"id":1878,"implemented":true,"kind":"function","modifiers":[],"name":"_exactOutputCurve","nameLocation":"9393:17:5","nodeType":"FunctionDefinition","parameters":{"id":1783,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1774,"mutability":"mutable","name":"swapConfig","nameLocation":"9436:10:5","nodeType":"VariableDeclaration","scope":1878,"src":"9416:30:5","stateVariable":false,"storageLocation":"calldata","typeDescriptions":{"typeIdentifier":"t_struct$_SwapConfig_$1113_calldata_ptr","typeString":"struct SwapLibrary.SwapConfig"},"typeName":{"id":1773,"nodeType":"UserDefinedTypeName","pathNode":{"id":1772,"name":"SwapConfig","nameLocations":["9416:10:5"],"nodeType":"IdentifierPath","referencedDeclaration":1113,"src":"9416:10:5"},"referencedDeclaration":1113,"src":"9416:10:5","typeDescriptions":{"typeIdentifier":"t_struct$_SwapConfig_$1113_storage_ptr","typeString":"struct SwapLibrary.SwapConfig"}},"visibility":"internal"},{"constant":false,"id":1776,"mutability":"mutable","name":"tokenIn","nameLocation":"9460:7:5","nodeType":"VariableDeclaration","scope":1878,"src":"9452:15:5","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":1775,"name":"address","nodeType":"ElementaryTypeName","src":"9452:7:5","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":1778,"mutability":"mutable","name":"tokenOut","nameLocation":"9481:8:5","nodeType":"VariableDeclaration","scope":1878,"src":"9473:16:5","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":1777,"name":"address","nodeType":"ElementaryTypeName","src":"9473:7:5","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":1780,"mutability":"mutable","name":"amount","nameLocation":"9503:6:5","nodeType":"VariableDeclaration","scope":1878,"src":"9495:14:5","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":1779,"name":"uint256","nodeType":"ElementaryTypeName","src":"9495:7:5","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":1782,"mutability":"mutable","name":"price","nameLocation":"9523:5:5","nodeType":"VariableDeclaration","scope":1878,"src":"9515:13:5","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":1781,"name":"uint256","nodeType":"ElementaryTypeName","src":"9515:7:5","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"9410:122:5"},"returnParameters":{"id":1786,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1785,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":1878,"src":"9551:7:5","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":1784,"name":"uint256","nodeType":"ElementaryTypeName","src":"9551:7:5","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"9550:9:5"},"scope":1879,"src":"9384:975:5","stateMutability":"nonpayable","virtual":false,"visibility":"internal"}],"scope":1880,"src":"522:9839:5","usedErrors":[538,540,542,547,551,557,1121,1123,1125,1127,1129,1135,1141],"usedEvents":[]}],"src":"39:10323:5"},"id":5},"@ensuro/swaplibrary/contracts/dependencies/ICurveRouter.sol":{"ast":{"absolutePath":"@ensuro/swaplibrary/contracts/dependencies/ICurveRouter.sol","exportedSymbols":{"ICurveRouter":[2156]},"id":2157,"license":"UNLICENSED","nodeType":"SourceUnit","nodes":[{"id":1881,"literals":["solidity","^","0.8",".4"],"nodeType":"PragmaDirective","src":"39:23:6"},{"abstract":false,"baseContracts":[],"canonicalName":"ICurveRouter","contractDependencies":[],"contractKind":"interface","fullyImplemented":false,"id":2156,"linearizedBaseContracts":[2156],"name":"ICurveRouter","nameLocation":"187:12:6","nodeType":"ContractDefinition","nodes":[{"anonymous":false,"eventSelector":"56d0661e240dfb199ef196e16e6f42473990366314f0226ac978f7be3cd9ee83","id":1905,"name":"Exchange","nameLocation":"212:8:6","nodeType":"EventDefinition","parameters":{"id":1904,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1883,"indexed":true,"mutability":"mutable","name":"sender","nameLocation":"246:6:6","nodeType":"VariableDeclaration","scope":1905,"src":"230:22:6","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":1882,"name":"address","nodeType":"ElementaryTypeName","src":"230:7:6","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":1885,"indexed":true,"mutability":"mutable","name":"receiver","nameLocation":"278:8:6","nodeType":"VariableDeclaration","scope":1905,"src":"262:24:6","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":1884,"name":"address","nodeType":"ElementaryTypeName","src":"262:7:6","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":1889,"indexed":false,"mutability":"mutable","name":"route","nameLocation":"308:5:6","nodeType":"VariableDeclaration","scope":1905,"src":"296:17:6","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_array$_t_address_$11_memory_ptr","typeString":"address[11]"},"typeName":{"baseType":{"id":1886,"name":"address","nodeType":"ElementaryTypeName","src":"296:7:6","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"id":1888,"length":{"hexValue":"3131","id":1887,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"304:2:6","typeDescriptions":{"typeIdentifier":"t_rational_11_by_1","typeString":"int_const 11"},"value":"11"},"nodeType":"ArrayTypeName","src":"296:11:6","typeDescriptions":{"typeIdentifier":"t_array$_t_address_$11_storage_ptr","typeString":"address[11]"}},"visibility":"internal"},{"constant":false,"id":1895,"indexed":false,"mutability":"mutable","name":"swap_params","nameLocation":"337:11:6","nodeType":"VariableDeclaration","scope":1905,"src":"323:25:6","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_array$_t_array$_t_uint256_$5_memory_ptr_$5_memory_ptr","typeString":"uint256[5][5]"},"typeName":{"baseType":{"baseType":{"id":1890,"name":"uint256","nodeType":"ElementaryTypeName","src":"323:7:6","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":1892,"length":{"hexValue":"35","id":1891,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"331:1:6","typeDescriptions":{"typeIdentifier":"t_rational_5_by_1","typeString":"int_const 5"},"value":"5"},"nodeType":"ArrayTypeName","src":"323:10:6","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$5_storage_ptr","typeString":"uint256[5]"}},"id":1894,"length":{"hexValue":"35","id":1893,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"334:1:6","typeDescriptions":{"typeIdentifier":"t_rational_5_by_1","typeString":"int_const 5"},"value":"5"},"nodeType":"ArrayTypeName","src":"323:13:6","typeDescriptions":{"typeIdentifier":"t_array$_t_array$_t_uint256_$5_storage_$5_storage_ptr","typeString":"uint256[5][5]"}},"visibility":"internal"},{"constant":false,"id":1899,"indexed":false,"mutability":"mutable","name":"pools","nameLocation":"369:5:6","nodeType":"VariableDeclaration","scope":1905,"src":"358:16:6","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_array$_t_address_$5_memory_ptr","typeString":"address[5]"},"typeName":{"baseType":{"id":1896,"name":"address","nodeType":"ElementaryTypeName","src":"358:7:6","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"id":1898,"length":{"hexValue":"35","id":1897,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"366:1:6","typeDescriptions":{"typeIdentifier":"t_rational_5_by_1","typeString":"int_const 5"},"value":"5"},"nodeType":"ArrayTypeName","src":"358:10:6","typeDescriptions":{"typeIdentifier":"t_array$_t_address_$5_storage_ptr","typeString":"address[5]"}},"visibility":"internal"},{"constant":false,"id":1901,"indexed":false,"mutability":"mutable","name":"in_amount","nameLocation":"392:9:6","nodeType":"VariableDeclaration","scope":1905,"src":"384:17:6","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":1900,"name":"uint256","nodeType":"ElementaryTypeName","src":"384:7:6","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":1903,"indexed":false,"mutability":"mutable","name":"out_amount","nameLocation":"419:10:6","nodeType":"VariableDeclaration","scope":1905,"src":"411:18:6","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":1902,"name":"uint256","nodeType":"ElementaryTypeName","src":"411:7:6","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"220:215:6"},"src":"206:230:6"},{"functionSelector":"371dc447","id":1924,"implemented":false,"kind":"function","modifiers":[],"name":"exchange","nameLocation":"451:8:6","nodeType":"FunctionDefinition","parameters":{"id":1920,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1909,"mutability":"mutable","name":"_route","nameLocation":"479:6:6","nodeType":"VariableDeclaration","scope":1924,"src":"460:25:6","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_array$_t_address_$11_memory_ptr","typeString":"address[11]"},"typeName":{"baseType":{"id":1906,"name":"address","nodeType":"ElementaryTypeName","src":"460:7:6","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"id":1908,"length":{"hexValue":"3131","id":1907,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"468:2:6","typeDescriptions":{"typeIdentifier":"t_rational_11_by_1","typeString":"int_const 11"},"value":"11"},"nodeType":"ArrayTypeName","src":"460:11:6","typeDescriptions":{"typeIdentifier":"t_array$_t_address_$11_storage_ptr","typeString":"address[11]"}},"visibility":"internal"},{"constant":false,"id":1915,"mutability":"mutable","name":"_swap_params","nameLocation":"508:12:6","nodeType":"VariableDeclaration","scope":1924,"src":"487:33:6","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_array$_t_array$_t_uint256_$5_memory_ptr_$5_memory_ptr","typeString":"uint256[5][5]"},"typeName":{"baseType":{"baseType":{"id":1910,"name":"uint256","nodeType":"ElementaryTypeName","src":"487:7:6","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":1912,"length":{"hexValue":"35","id":1911,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"495:1:6","typeDescriptions":{"typeIdentifier":"t_rational_5_by_1","typeString":"int_const 5"},"value":"5"},"nodeType":"ArrayTypeName","src":"487:10:6","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$5_storage_ptr","typeString":"uint256[5]"}},"id":1914,"length":{"hexValue":"35","id":1913,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"498:1:6","typeDescriptions":{"typeIdentifier":"t_rational_5_by_1","typeString":"int_const 5"},"value":"5"},"nodeType":"ArrayTypeName","src":"487:13:6","typeDescriptions":{"typeIdentifier":"t_array$_t_array$_t_uint256_$5_storage_$5_storage_ptr","typeString":"uint256[5][5]"}},"visibility":"internal"},{"constant":false,"id":1917,"mutability":"mutable","name":"_amount","nameLocation":"530:7:6","nodeType":"VariableDeclaration","scope":1924,"src":"522:15:6","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":1916,"name":"uint256","nodeType":"ElementaryTypeName","src":"522:7:6","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":1919,"mutability":"mutable","name":"_expected","nameLocation":"547:9:6","nodeType":"VariableDeclaration","scope":1924,"src":"539:17:6","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":1918,"name":"uint256","nodeType":"ElementaryTypeName","src":"539:7:6","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"459:98:6"},"returnParameters":{"id":1923,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1922,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":1924,"src":"608:7:6","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":1921,"name":"uint256","nodeType":"ElementaryTypeName","src":"608:7:6","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"607:9:6"},"scope":2156,"src":"442:175:6","stateMutability":"payable","virtual":false,"visibility":"external"},{"functionSelector":"5c9c18e2","id":1947,"implemented":false,"kind":"function","modifiers":[],"name":"exchange","nameLocation":"631:8:6","nodeType":"FunctionDefinition","parameters":{"id":1943,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1928,"mutability":"mutable","name":"_route","nameLocation":"668:6:6","nodeType":"VariableDeclaration","scope":1947,"src":"649:25:6","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_array$_t_address_$11_memory_ptr","typeString":"address[11]"},"typeName":{"baseType":{"id":1925,"name":"address","nodeType":"ElementaryTypeName","src":"649:7:6","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"id":1927,"length":{"hexValue":"3131","id":1926,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"657:2:6","typeDescriptions":{"typeIdentifier":"t_rational_11_by_1","typeString":"int_const 11"},"value":"11"},"nodeType":"ArrayTypeName","src":"649:11:6","typeDescriptions":{"typeIdentifier":"t_array$_t_address_$11_storage_ptr","typeString":"address[11]"}},"visibility":"internal"},{"constant":false,"id":1934,"mutability":"mutable","name":"_swap_params","nameLocation":"705:12:6","nodeType":"VariableDeclaration","scope":1947,"src":"684:33:6","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_array$_t_array$_t_uint256_$5_memory_ptr_$5_memory_ptr","typeString":"uint256[5][5]"},"typeName":{"baseType":{"baseType":{"id":1929,"name":"uint256","nodeType":"ElementaryTypeName","src":"684:7:6","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":1931,"length":{"hexValue":"35","id":1930,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"692:1:6","typeDescriptions":{"typeIdentifier":"t_rational_5_by_1","typeString":"int_const 5"},"value":"5"},"nodeType":"ArrayTypeName","src":"684:10:6","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$5_storage_ptr","typeString":"uint256[5]"}},"id":1933,"length":{"hexValue":"35","id":1932,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"695:1:6","typeDescriptions":{"typeIdentifier":"t_rational_5_by_1","typeString":"int_const 5"},"value":"5"},"nodeType":"ArrayTypeName","src":"684:13:6","typeDescriptions":{"typeIdentifier":"t_array$_t_array$_t_uint256_$5_storage_$5_storage_ptr","typeString":"uint256[5][5]"}},"visibility":"internal"},{"constant":false,"id":1936,"mutability":"mutable","name":"_amount","nameLocation":"735:7:6","nodeType":"VariableDeclaration","scope":1947,"src":"727:15:6","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":1935,"name":"uint256","nodeType":"ElementaryTypeName","src":"727:7:6","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":1938,"mutability":"mutable","name":"_expected","nameLocation":"760:9:6","nodeType":"VariableDeclaration","scope":1947,"src":"752:17:6","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":1937,"name":"uint256","nodeType":"ElementaryTypeName","src":"752:7:6","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":1942,"mutability":"mutable","name":"_pools","nameLocation":"797:6:6","nodeType":"VariableDeclaration","scope":1947,"src":"779:24:6","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_array$_t_address_$5_memory_ptr","typeString":"address[5]"},"typeName":{"baseType":{"id":1939,"name":"address","nodeType":"ElementaryTypeName","src":"779:7:6","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"id":1941,"length":{"hexValue":"35","id":1940,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"787:1:6","typeDescriptions":{"typeIdentifier":"t_rational_5_by_1","typeString":"int_const 5"},"value":"5"},"nodeType":"ArrayTypeName","src":"779:10:6","typeDescriptions":{"typeIdentifier":"t_array$_t_address_$5_storage_ptr","typeString":"address[5]"}},"visibility":"internal"}],"src":"639:170:6"},"returnParameters":{"id":1946,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1945,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":1947,"src":"836:7:6","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":1944,"name":"uint256","nodeType":"ElementaryTypeName","src":"836:7:6","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"835:9:6"},"scope":2156,"src":"622:223:6","stateMutability":"payable","virtual":false,"visibility":"external"},{"functionSelector":"c872a3c5","id":1972,"implemented":false,"kind":"function","modifiers":[],"name":"exchange","nameLocation":"859:8:6","nodeType":"FunctionDefinition","parameters":{"id":1968,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1951,"mutability":"mutable","name":"_route","nameLocation":"896:6:6","nodeType":"VariableDeclaration","scope":1972,"src":"877:25:6","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_array$_t_address_$11_memory_ptr","typeString":"address[11]"},"typeName":{"baseType":{"id":1948,"name":"address","nodeType":"ElementaryTypeName","src":"877:7:6","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"id":1950,"length":{"hexValue":"3131","id":1949,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"885:2:6","typeDescriptions":{"typeIdentifier":"t_rational_11_by_1","typeString":"int_const 11"},"value":"11"},"nodeType":"ArrayTypeName","src":"877:11:6","typeDescriptions":{"typeIdentifier":"t_array$_t_address_$11_storage_ptr","typeString":"address[11]"}},"visibility":"internal"},{"constant":false,"id":1957,"mutability":"mutable","name":"_swap_params","nameLocation":"933:12:6","nodeType":"VariableDeclaration","scope":1972,"src":"912:33:6","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_array$_t_array$_t_uint256_$5_memory_ptr_$5_memory_ptr","typeString":"uint256[5][5]"},"typeName":{"baseType":{"baseType":{"id":1952,"name":"uint256","nodeType":"ElementaryTypeName","src":"912:7:6","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":1954,"length":{"hexValue":"35","id":1953,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"920:1:6","typeDescriptions":{"typeIdentifier":"t_rational_5_by_1","typeString":"int_const 5"},"value":"5"},"nodeType":"ArrayTypeName","src":"912:10:6","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$5_storage_ptr","typeString":"uint256[5]"}},"id":1956,"length":{"hexValue":"35","id":1955,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"923:1:6","typeDescriptions":{"typeIdentifier":"t_rational_5_by_1","typeString":"int_const 5"},"value":"5"},"nodeType":"ArrayTypeName","src":"912:13:6","typeDescriptions":{"typeIdentifier":"t_array$_t_array$_t_uint256_$5_storage_$5_storage_ptr","typeString":"uint256[5][5]"}},"visibility":"internal"},{"constant":false,"id":1959,"mutability":"mutable","name":"_amount","nameLocation":"963:7:6","nodeType":"VariableDeclaration","scope":1972,"src":"955:15:6","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":1958,"name":"uint256","nodeType":"ElementaryTypeName","src":"955:7:6","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":1961,"mutability":"mutable","name":"_expected","nameLocation":"988:9:6","nodeType":"VariableDeclaration","scope":1972,"src":"980:17:6","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":1960,"name":"uint256","nodeType":"ElementaryTypeName","src":"980:7:6","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":1965,"mutability":"mutable","name":"_pools","nameLocation":"1025:6:6","nodeType":"VariableDeclaration","scope":1972,"src":"1007:24:6","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_array$_t_address_$5_memory_ptr","typeString":"address[5]"},"typeName":{"baseType":{"id":1962,"name":"address","nodeType":"ElementaryTypeName","src":"1007:7:6","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"id":1964,"length":{"hexValue":"35","id":1963,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"1015:1:6","typeDescriptions":{"typeIdentifier":"t_rational_5_by_1","typeString":"int_const 5"},"value":"5"},"nodeType":"ArrayTypeName","src":"1007:10:6","typeDescriptions":{"typeIdentifier":"t_array$_t_address_$5_storage_ptr","typeString":"address[5]"}},"visibility":"internal"},{"constant":false,"id":1967,"mutability":"mutable","name":"_receiver","nameLocation":"1049:9:6","nodeType":"VariableDeclaration","scope":1972,"src":"1041:17:6","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":1966,"name":"address","nodeType":"ElementaryTypeName","src":"1041:7:6","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"867:197:6"},"returnParameters":{"id":1971,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1970,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":1972,"src":"1091:7:6","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":1969,"name":"uint256","nodeType":"ElementaryTypeName","src":"1091:7:6","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"1090:9:6"},"scope":2156,"src":"850:250:6","stateMutability":"payable","virtual":false,"visibility":"external"},{"functionSelector":"c07b5353","id":1993,"implemented":false,"kind":"function","modifiers":[],"name":"get_dx","nameLocation":"1114:6:6","nodeType":"FunctionDefinition","parameters":{"id":1989,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1976,"mutability":"mutable","name":"_route","nameLocation":"1149:6:6","nodeType":"VariableDeclaration","scope":1993,"src":"1130:25:6","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_array$_t_address_$11_memory_ptr","typeString":"address[11]"},"typeName":{"baseType":{"id":1973,"name":"address","nodeType":"ElementaryTypeName","src":"1130:7:6","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"id":1975,"length":{"hexValue":"3131","id":1974,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"1138:2:6","typeDescriptions":{"typeIdentifier":"t_rational_11_by_1","typeString":"int_const 11"},"value":"11"},"nodeType":"ArrayTypeName","src":"1130:11:6","typeDescriptions":{"typeIdentifier":"t_array$_t_address_$11_storage_ptr","typeString":"address[11]"}},"visibility":"internal"},{"constant":false,"id":1982,"mutability":"mutable","name":"_swap_params","nameLocation":"1186:12:6","nodeType":"VariableDeclaration","scope":1993,"src":"1165:33:6","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_array$_t_array$_t_uint256_$5_memory_ptr_$5_memory_ptr","typeString":"uint256[5][5]"},"typeName":{"baseType":{"baseType":{"id":1977,"name":"uint256","nodeType":"ElementaryTypeName","src":"1165:7:6","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":1979,"length":{"hexValue":"35","id":1978,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"1173:1:6","typeDescriptions":{"typeIdentifier":"t_rational_5_by_1","typeString":"int_const 5"},"value":"5"},"nodeType":"ArrayTypeName","src":"1165:10:6","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$5_storage_ptr","typeString":"uint256[5]"}},"id":1981,"length":{"hexValue":"35","id":1980,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"1176:1:6","typeDescriptions":{"typeIdentifier":"t_rational_5_by_1","typeString":"int_const 5"},"value":"5"},"nodeType":"ArrayTypeName","src":"1165:13:6","typeDescriptions":{"typeIdentifier":"t_array$_t_array$_t_uint256_$5_storage_$5_storage_ptr","typeString":"uint256[5][5]"}},"visibility":"internal"},{"constant":false,"id":1984,"mutability":"mutable","name":"_out_amount","nameLocation":"1216:11:6","nodeType":"VariableDeclaration","scope":1993,"src":"1208:19:6","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":1983,"name":"uint256","nodeType":"ElementaryTypeName","src":"1208:7:6","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":1988,"mutability":"mutable","name":"_pools","nameLocation":"1255:6:6","nodeType":"VariableDeclaration","scope":1993,"src":"1237:24:6","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_array$_t_address_$5_memory_ptr","typeString":"address[5]"},"typeName":{"baseType":{"id":1985,"name":"address","nodeType":"ElementaryTypeName","src":"1237:7:6","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"id":1987,"length":{"hexValue":"35","id":1986,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"1245:1:6","typeDescriptions":{"typeIdentifier":"t_rational_5_by_1","typeString":"int_const 5"},"value":"5"},"nodeType":"ArrayTypeName","src":"1237:10:6","typeDescriptions":{"typeIdentifier":"t_array$_t_address_$5_storage_ptr","typeString":"address[5]"}},"visibility":"internal"}],"src":"1120:147:6"},"returnParameters":{"id":1992,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1991,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":1993,"src":"1291:7:6","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":1990,"name":"uint256","nodeType":"ElementaryTypeName","src":"1291:7:6","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"1290:9:6"},"scope":2156,"src":"1105:195:6","stateMutability":"view","virtual":false,"visibility":"external"},{"functionSelector":"81fc0ca5","id":2018,"implemented":false,"kind":"function","modifiers":[],"name":"get_dx","nameLocation":"1314:6:6","nodeType":"FunctionDefinition","parameters":{"id":2014,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1997,"mutability":"mutable","name":"_route","nameLocation":"1349:6:6","nodeType":"VariableDeclaration","scope":2018,"src":"1330:25:6","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_array$_t_address_$11_memory_ptr","typeString":"address[11]"},"typeName":{"baseType":{"id":1994,"name":"address","nodeType":"ElementaryTypeName","src":"1330:7:6","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"id":1996,"length":{"hexValue":"3131","id":1995,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"1338:2:6","typeDescriptions":{"typeIdentifier":"t_rational_11_by_1","typeString":"int_const 11"},"value":"11"},"nodeType":"ArrayTypeName","src":"1330:11:6","typeDescriptions":{"typeIdentifier":"t_array$_t_address_$11_storage_ptr","typeString":"address[11]"}},"visibility":"internal"},{"constant":false,"id":2003,"mutability":"mutable","name":"_swap_params","nameLocation":"1386:12:6","nodeType":"VariableDeclaration","scope":2018,"src":"1365:33:6","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_array$_t_array$_t_uint256_$5_memory_ptr_$5_memory_ptr","typeString":"uint256[5][5]"},"typeName":{"baseType":{"baseType":{"id":1998,"name":"uint256","nodeType":"ElementaryTypeName","src":"1365:7:6","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":2000,"length":{"hexValue":"35","id":1999,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"1373:1:6","typeDescriptions":{"typeIdentifier":"t_rational_5_by_1","typeString":"int_const 5"},"value":"5"},"nodeType":"ArrayTypeName","src":"1365:10:6","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$5_storage_ptr","typeString":"uint256[5]"}},"id":2002,"length":{"hexValue":"35","id":2001,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"1376:1:6","typeDescriptions":{"typeIdentifier":"t_rational_5_by_1","typeString":"int_const 5"},"value":"5"},"nodeType":"ArrayTypeName","src":"1365:13:6","typeDescriptions":{"typeIdentifier":"t_array$_t_array$_t_uint256_$5_storage_$5_storage_ptr","typeString":"uint256[5][5]"}},"visibility":"internal"},{"constant":false,"id":2005,"mutability":"mutable","name":"_out_amount","nameLocation":"1416:11:6","nodeType":"VariableDeclaration","scope":2018,"src":"1408:19:6","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":2004,"name":"uint256","nodeType":"ElementaryTypeName","src":"1408:7:6","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":2009,"mutability":"mutable","name":"_pools","nameLocation":"1455:6:6","nodeType":"VariableDeclaration","scope":2018,"src":"1437:24:6","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_array$_t_address_$5_memory_ptr","typeString":"address[5]"},"typeName":{"baseType":{"id":2006,"name":"address","nodeType":"ElementaryTypeName","src":"1437:7:6","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"id":2008,"length":{"hexValue":"35","id":2007,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"1445:1:6","typeDescriptions":{"typeIdentifier":"t_rational_5_by_1","typeString":"int_const 5"},"value":"5"},"nodeType":"ArrayTypeName","src":"1437:10:6","typeDescriptions":{"typeIdentifier":"t_array$_t_address_$5_storage_ptr","typeString":"address[5]"}},"visibility":"internal"},{"constant":false,"id":2013,"mutability":"mutable","name":"_base_pools","nameLocation":"1489:11:6","nodeType":"VariableDeclaration","scope":2018,"src":"1471:29:6","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_array$_t_address_$5_memory_ptr","typeString":"address[5]"},"typeName":{"baseType":{"id":2010,"name":"address","nodeType":"ElementaryTypeName","src":"1471:7:6","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"id":2012,"length":{"hexValue":"35","id":2011,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"1479:1:6","typeDescriptions":{"typeIdentifier":"t_rational_5_by_1","typeString":"int_const 5"},"value":"5"},"nodeType":"ArrayTypeName","src":"1471:10:6","typeDescriptions":{"typeIdentifier":"t_array$_t_address_$5_storage_ptr","typeString":"address[5]"}},"visibility":"internal"}],"src":"1320:186:6"},"returnParameters":{"id":2017,"nodeType":"ParameterList","parameters":[{"constant":false,"id":2016,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":2018,"src":"1530:7:6","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":2015,"name":"uint256","nodeType":"ElementaryTypeName","src":"1530:7:6","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"1529:9:6"},"scope":2156,"src":"1305:234:6","stateMutability":"view","virtual":false,"visibility":"external"},{"functionSelector":"90e7e205","id":2047,"implemented":false,"kind":"function","modifiers":[],"name":"get_dx","nameLocation":"1553:6:6","nodeType":"FunctionDefinition","parameters":{"id":2043,"nodeType":"ParameterList","parameters":[{"constant":false,"id":2022,"mutability":"mutable","name":"_route","nameLocation":"1588:6:6","nodeType":"VariableDeclaration","scope":2047,"src":"1569:25:6","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_array$_t_address_$11_memory_ptr","typeString":"address[11]"},"typeName":{"baseType":{"id":2019,"name":"address","nodeType":"ElementaryTypeName","src":"1569:7:6","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"id":2021,"length":{"hexValue":"3131","id":2020,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"1577:2:6","typeDescriptions":{"typeIdentifier":"t_rational_11_by_1","typeString":"int_const 11"},"value":"11"},"nodeType":"ArrayTypeName","src":"1569:11:6","typeDescriptions":{"typeIdentifier":"t_array$_t_address_$11_storage_ptr","typeString":"address[11]"}},"visibility":"internal"},{"constant":false,"id":2028,"mutability":"mutable","name":"_swap_params","nameLocation":"1625:12:6","nodeType":"VariableDeclaration","scope":2047,"src":"1604:33:6","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_array$_t_array$_t_uint256_$5_memory_ptr_$5_memory_ptr","typeString":"uint256[5][5]"},"typeName":{"baseType":{"baseType":{"id":2023,"name":"uint256","nodeType":"ElementaryTypeName","src":"1604:7:6","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":2025,"length":{"hexValue":"35","id":2024,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"1612:1:6","typeDescriptions":{"typeIdentifier":"t_rational_5_by_1","typeString":"int_const 5"},"value":"5"},"nodeType":"ArrayTypeName","src":"1604:10:6","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$5_storage_ptr","typeString":"uint256[5]"}},"id":2027,"length":{"hexValue":"35","id":2026,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"1615:1:6","typeDescriptions":{"typeIdentifier":"t_rational_5_by_1","typeString":"int_const 5"},"value":"5"},"nodeType":"ArrayTypeName","src":"1604:13:6","typeDescriptions":{"typeIdentifier":"t_array$_t_array$_t_uint256_$5_storage_$5_storage_ptr","typeString":"uint256[5][5]"}},"visibility":"internal"},{"constant":false,"id":2030,"mutability":"mutable","name":"_out_amount","nameLocation":"1655:11:6","nodeType":"VariableDeclaration","scope":2047,"src":"1647:19:6","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":2029,"name":"uint256","nodeType":"ElementaryTypeName","src":"1647:7:6","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":2034,"mutability":"mutable","name":"_pools","nameLocation":"1694:6:6","nodeType":"VariableDeclaration","scope":2047,"src":"1676:24:6","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_array$_t_address_$5_memory_ptr","typeString":"address[5]"},"typeName":{"baseType":{"id":2031,"name":"address","nodeType":"ElementaryTypeName","src":"1676:7:6","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"id":2033,"length":{"hexValue":"35","id":2032,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"1684:1:6","typeDescriptions":{"typeIdentifier":"t_rational_5_by_1","typeString":"int_const 5"},"value":"5"},"nodeType":"ArrayTypeName","src":"1676:10:6","typeDescriptions":{"typeIdentifier":"t_array$_t_address_$5_storage_ptr","typeString":"address[5]"}},"visibility":"internal"},{"constant":false,"id":2038,"mutability":"mutable","name":"_base_pools","nameLocation":"1728:11:6","nodeType":"VariableDeclaration","scope":2047,"src":"1710:29:6","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_array$_t_address_$5_memory_ptr","typeString":"address[5]"},"typeName":{"baseType":{"id":2035,"name":"address","nodeType":"ElementaryTypeName","src":"1710:7:6","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"id":2037,"length":{"hexValue":"35","id":2036,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"1718:1:6","typeDescriptions":{"typeIdentifier":"t_rational_5_by_1","typeString":"int_const 5"},"value":"5"},"nodeType":"ArrayTypeName","src":"1710:10:6","typeDescriptions":{"typeIdentifier":"t_array$_t_address_$5_storage_ptr","typeString":"address[5]"}},"visibility":"internal"},{"constant":false,"id":2042,"mutability":"mutable","name":"_base_tokens","nameLocation":"1767:12:6","nodeType":"VariableDeclaration","scope":2047,"src":"1749:30:6","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_array$_t_address_$5_memory_ptr","typeString":"address[5]"},"typeName":{"baseType":{"id":2039,"name":"address","nodeType":"ElementaryTypeName","src":"1749:7:6","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"id":2041,"length":{"hexValue":"35","id":2040,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"1757:1:6","typeDescriptions":{"typeIdentifier":"t_rational_5_by_1","typeString":"int_const 5"},"value":"5"},"nodeType":"ArrayTypeName","src":"1749:10:6","typeDescriptions":{"typeIdentifier":"t_array$_t_address_$5_storage_ptr","typeString":"address[5]"}},"visibility":"internal"}],"src":"1559:226:6"},"returnParameters":{"id":2046,"nodeType":"ParameterList","parameters":[{"constant":false,"id":2045,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":2047,"src":"1809:7:6","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":2044,"name":"uint256","nodeType":"ElementaryTypeName","src":"1809:7:6","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"1808:9:6"},"scope":2156,"src":"1544:274:6","stateMutability":"view","virtual":false,"visibility":"external"},{"functionSelector":"d10eb385","id":2080,"implemented":false,"kind":"function","modifiers":[],"name":"get_dx","nameLocation":"1832:6:6","nodeType":"FunctionDefinition","parameters":{"id":2076,"nodeType":"ParameterList","parameters":[{"constant":false,"id":2051,"mutability":"mutable","name":"_route","nameLocation":"1867:6:6","nodeType":"VariableDeclaration","scope":2080,"src":"1848:25:6","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_array$_t_address_$11_memory_ptr","typeString":"address[11]"},"typeName":{"baseType":{"id":2048,"name":"address","nodeType":"ElementaryTypeName","src":"1848:7:6","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"id":2050,"length":{"hexValue":"3131","id":2049,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"1856:2:6","typeDescriptions":{"typeIdentifier":"t_rational_11_by_1","typeString":"int_const 11"},"value":"11"},"nodeType":"ArrayTypeName","src":"1848:11:6","typeDescriptions":{"typeIdentifier":"t_array$_t_address_$11_storage_ptr","typeString":"address[11]"}},"visibility":"internal"},{"constant":false,"id":2057,"mutability":"mutable","name":"_swap_params","nameLocation":"1904:12:6","nodeType":"VariableDeclaration","scope":2080,"src":"1883:33:6","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_array$_t_array$_t_uint256_$5_memory_ptr_$5_memory_ptr","typeString":"uint256[5][5]"},"typeName":{"baseType":{"baseType":{"id":2052,"name":"uint256","nodeType":"ElementaryTypeName","src":"1883:7:6","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":2054,"length":{"hexValue":"35","id":2053,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"1891:1:6","typeDescriptions":{"typeIdentifier":"t_rational_5_by_1","typeString":"int_const 5"},"value":"5"},"nodeType":"ArrayTypeName","src":"1883:10:6","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$5_storage_ptr","typeString":"uint256[5]"}},"id":2056,"length":{"hexValue":"35","id":2055,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"1894:1:6","typeDescriptions":{"typeIdentifier":"t_rational_5_by_1","typeString":"int_const 5"},"value":"5"},"nodeType":"ArrayTypeName","src":"1883:13:6","typeDescriptions":{"typeIdentifier":"t_array$_t_array$_t_uint256_$5_storage_$5_storage_ptr","typeString":"uint256[5][5]"}},"visibility":"internal"},{"constant":false,"id":2059,"mutability":"mutable","name":"_out_amount","nameLocation":"1934:11:6","nodeType":"VariableDeclaration","scope":2080,"src":"1926:19:6","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":2058,"name":"uint256","nodeType":"ElementaryTypeName","src":"1926:7:6","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":2063,"mutability":"mutable","name":"_pools","nameLocation":"1973:6:6","nodeType":"VariableDeclaration","scope":2080,"src":"1955:24:6","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_array$_t_address_$5_memory_ptr","typeString":"address[5]"},"typeName":{"baseType":{"id":2060,"name":"address","nodeType":"ElementaryTypeName","src":"1955:7:6","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"id":2062,"length":{"hexValue":"35","id":2061,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"1963:1:6","typeDescriptions":{"typeIdentifier":"t_rational_5_by_1","typeString":"int_const 5"},"value":"5"},"nodeType":"ArrayTypeName","src":"1955:10:6","typeDescriptions":{"typeIdentifier":"t_array$_t_address_$5_storage_ptr","typeString":"address[5]"}},"visibility":"internal"},{"constant":false,"id":2067,"mutability":"mutable","name":"_base_pools","nameLocation":"2007:11:6","nodeType":"VariableDeclaration","scope":2080,"src":"1989:29:6","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_array$_t_address_$5_memory_ptr","typeString":"address[5]"},"typeName":{"baseType":{"id":2064,"name":"address","nodeType":"ElementaryTypeName","src":"1989:7:6","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"id":2066,"length":{"hexValue":"35","id":2065,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"1997:1:6","typeDescriptions":{"typeIdentifier":"t_rational_5_by_1","typeString":"int_const 5"},"value":"5"},"nodeType":"ArrayTypeName","src":"1989:10:6","typeDescriptions":{"typeIdentifier":"t_array$_t_address_$5_storage_ptr","typeString":"address[5]"}},"visibility":"internal"},{"constant":false,"id":2071,"mutability":"mutable","name":"_base_tokens","nameLocation":"2046:12:6","nodeType":"VariableDeclaration","scope":2080,"src":"2028:30:6","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_array$_t_address_$5_memory_ptr","typeString":"address[5]"},"typeName":{"baseType":{"id":2068,"name":"address","nodeType":"ElementaryTypeName","src":"2028:7:6","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"id":2070,"length":{"hexValue":"35","id":2069,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"2036:1:6","typeDescriptions":{"typeIdentifier":"t_rational_5_by_1","typeString":"int_const 5"},"value":"5"},"nodeType":"ArrayTypeName","src":"2028:10:6","typeDescriptions":{"typeIdentifier":"t_array$_t_address_$5_storage_ptr","typeString":"address[5]"}},"visibility":"internal"},{"constant":false,"id":2075,"mutability":"mutable","name":"_second_base_pools","nameLocation":"2086:18:6","nodeType":"VariableDeclaration","scope":2080,"src":"2068:36:6","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_array$_t_address_$5_memory_ptr","typeString":"address[5]"},"typeName":{"baseType":{"id":2072,"name":"address","nodeType":"ElementaryTypeName","src":"2068:7:6","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"id":2074,"length":{"hexValue":"35","id":2073,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"2076:1:6","typeDescriptions":{"typeIdentifier":"t_rational_5_by_1","typeString":"int_const 5"},"value":"5"},"nodeType":"ArrayTypeName","src":"2068:10:6","typeDescriptions":{"typeIdentifier":"t_array$_t_address_$5_storage_ptr","typeString":"address[5]"}},"visibility":"internal"}],"src":"1838:272:6"},"returnParameters":{"id":2079,"nodeType":"ParameterList","parameters":[{"constant":false,"id":2078,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":2080,"src":"2134:7:6","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":2077,"name":"uint256","nodeType":"ElementaryTypeName","src":"2134:7:6","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"2133:9:6"},"scope":2156,"src":"1823:320:6","stateMutability":"view","virtual":false,"visibility":"external"},{"functionSelector":"6d654ccd","id":2117,"implemented":false,"kind":"function","modifiers":[],"name":"get_dx","nameLocation":"2157:6:6","nodeType":"FunctionDefinition","parameters":{"id":2113,"nodeType":"ParameterList","parameters":[{"constant":false,"id":2084,"mutability":"mutable","name":"_route","nameLocation":"2192:6:6","nodeType":"VariableDeclaration","scope":2117,"src":"2173:25:6","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_array$_t_address_$11_memory_ptr","typeString":"address[11]"},"typeName":{"baseType":{"id":2081,"name":"address","nodeType":"ElementaryTypeName","src":"2173:7:6","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"id":2083,"length":{"hexValue":"3131","id":2082,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"2181:2:6","typeDescriptions":{"typeIdentifier":"t_rational_11_by_1","typeString":"int_const 11"},"value":"11"},"nodeType":"ArrayTypeName","src":"2173:11:6","typeDescriptions":{"typeIdentifier":"t_array$_t_address_$11_storage_ptr","typeString":"address[11]"}},"visibility":"internal"},{"constant":false,"id":2090,"mutability":"mutable","name":"_swap_params","nameLocation":"2229:12:6","nodeType":"VariableDeclaration","scope":2117,"src":"2208:33:6","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_array$_t_array$_t_uint256_$5_memory_ptr_$5_memory_ptr","typeString":"uint256[5][5]"},"typeName":{"baseType":{"baseType":{"id":2085,"name":"uint256","nodeType":"ElementaryTypeName","src":"2208:7:6","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":2087,"length":{"hexValue":"35","id":2086,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"2216:1:6","typeDescriptions":{"typeIdentifier":"t_rational_5_by_1","typeString":"int_const 5"},"value":"5"},"nodeType":"ArrayTypeName","src":"2208:10:6","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$5_storage_ptr","typeString":"uint256[5]"}},"id":2089,"length":{"hexValue":"35","id":2088,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"2219:1:6","typeDescriptions":{"typeIdentifier":"t_rational_5_by_1","typeString":"int_const 5"},"value":"5"},"nodeType":"ArrayTypeName","src":"2208:13:6","typeDescriptions":{"typeIdentifier":"t_array$_t_array$_t_uint256_$5_storage_$5_storage_ptr","typeString":"uint256[5][5]"}},"visibility":"internal"},{"constant":false,"id":2092,"mutability":"mutable","name":"_out_amount","nameLocation":"2259:11:6","nodeType":"VariableDeclaration","scope":2117,"src":"2251:19:6","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":2091,"name":"uint256","nodeType":"ElementaryTypeName","src":"2251:7:6","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":2096,"mutability":"mutable","name":"_pools","nameLocation":"2298:6:6","nodeType":"VariableDeclaration","scope":2117,"src":"2280:24:6","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_array$_t_address_$5_memory_ptr","typeString":"address[5]"},"typeName":{"baseType":{"id":2093,"name":"address","nodeType":"ElementaryTypeName","src":"2280:7:6","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"id":2095,"length":{"hexValue":"35","id":2094,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"2288:1:6","typeDescriptions":{"typeIdentifier":"t_rational_5_by_1","typeString":"int_const 5"},"value":"5"},"nodeType":"ArrayTypeName","src":"2280:10:6","typeDescriptions":{"typeIdentifier":"t_array$_t_address_$5_storage_ptr","typeString":"address[5]"}},"visibility":"internal"},{"constant":false,"id":2100,"mutability":"mutable","name":"_base_pools","nameLocation":"2332:11:6","nodeType":"VariableDeclaration","scope":2117,"src":"2314:29:6","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_array$_t_address_$5_memory_ptr","typeString":"address[5]"},"typeName":{"baseType":{"id":2097,"name":"address","nodeType":"ElementaryTypeName","src":"2314:7:6","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"id":2099,"length":{"hexValue":"35","id":2098,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"2322:1:6","typeDescriptions":{"typeIdentifier":"t_rational_5_by_1","typeString":"int_const 5"},"value":"5"},"nodeType":"ArrayTypeName","src":"2314:10:6","typeDescriptions":{"typeIdentifier":"t_array$_t_address_$5_storage_ptr","typeString":"address[5]"}},"visibility":"internal"},{"constant":false,"id":2104,"mutability":"mutable","name":"_base_tokens","nameLocation":"2371:12:6","nodeType":"VariableDeclaration","scope":2117,"src":"2353:30:6","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_array$_t_address_$5_memory_ptr","typeString":"address[5]"},"typeName":{"baseType":{"id":2101,"name":"address","nodeType":"ElementaryTypeName","src":"2353:7:6","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"id":2103,"length":{"hexValue":"35","id":2102,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"2361:1:6","typeDescriptions":{"typeIdentifier":"t_rational_5_by_1","typeString":"int_const 5"},"value":"5"},"nodeType":"ArrayTypeName","src":"2353:10:6","typeDescriptions":{"typeIdentifier":"t_array$_t_address_$5_storage_ptr","typeString":"address[5]"}},"visibility":"internal"},{"constant":false,"id":2108,"mutability":"mutable","name":"_second_base_pools","nameLocation":"2411:18:6","nodeType":"VariableDeclaration","scope":2117,"src":"2393:36:6","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_array$_t_address_$5_memory_ptr","typeString":"address[5]"},"typeName":{"baseType":{"id":2105,"name":"address","nodeType":"ElementaryTypeName","src":"2393:7:6","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"id":2107,"length":{"hexValue":"35","id":2106,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"2401:1:6","typeDescriptions":{"typeIdentifier":"t_rational_5_by_1","typeString":"int_const 5"},"value":"5"},"nodeType":"ArrayTypeName","src":"2393:10:6","typeDescriptions":{"typeIdentifier":"t_array$_t_address_$5_storage_ptr","typeString":"address[5]"}},"visibility":"internal"},{"constant":false,"id":2112,"mutability":"mutable","name":"_second_base_tokens","nameLocation":"2457:19:6","nodeType":"VariableDeclaration","scope":2117,"src":"2439:37:6","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_array$_t_address_$5_memory_ptr","typeString":"address[5]"},"typeName":{"baseType":{"id":2109,"name":"address","nodeType":"ElementaryTypeName","src":"2439:7:6","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"id":2111,"length":{"hexValue":"35","id":2110,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"2447:1:6","typeDescriptions":{"typeIdentifier":"t_rational_5_by_1","typeString":"int_const 5"},"value":"5"},"nodeType":"ArrayTypeName","src":"2439:10:6","typeDescriptions":{"typeIdentifier":"t_array$_t_address_$5_storage_ptr","typeString":"address[5]"}},"visibility":"internal"}],"src":"2163:319:6"},"returnParameters":{"id":2116,"nodeType":"ParameterList","parameters":[{"constant":false,"id":2115,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":2117,"src":"2506:7:6","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":2114,"name":"uint256","nodeType":"ElementaryTypeName","src":"2506:7:6","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"2505:9:6"},"scope":2156,"src":"2148:367:6","stateMutability":"view","virtual":false,"visibility":"external"},{"functionSelector":"81889a2c","id":2134,"implemented":false,"kind":"function","modifiers":[],"name":"get_dy","nameLocation":"2529:6:6","nodeType":"FunctionDefinition","parameters":{"id":2130,"nodeType":"ParameterList","parameters":[{"constant":false,"id":2121,"mutability":"mutable","name":"_route","nameLocation":"2555:6:6","nodeType":"VariableDeclaration","scope":2134,"src":"2536:25:6","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_array$_t_address_$11_memory_ptr","typeString":"address[11]"},"typeName":{"baseType":{"id":2118,"name":"address","nodeType":"ElementaryTypeName","src":"2536:7:6","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"id":2120,"length":{"hexValue":"3131","id":2119,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"2544:2:6","typeDescriptions":{"typeIdentifier":"t_rational_11_by_1","typeString":"int_const 11"},"value":"11"},"nodeType":"ArrayTypeName","src":"2536:11:6","typeDescriptions":{"typeIdentifier":"t_array$_t_address_$11_storage_ptr","typeString":"address[11]"}},"visibility":"internal"},{"constant":false,"id":2127,"mutability":"mutable","name":"_swap_params","nameLocation":"2584:12:6","nodeType":"VariableDeclaration","scope":2134,"src":"2563:33:6","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_array$_t_array$_t_uint256_$5_memory_ptr_$5_memory_ptr","typeString":"uint256[5][5]"},"typeName":{"baseType":{"baseType":{"id":2122,"name":"uint256","nodeType":"ElementaryTypeName","src":"2563:7:6","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":2124,"length":{"hexValue":"35","id":2123,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"2571:1:6","typeDescriptions":{"typeIdentifier":"t_rational_5_by_1","typeString":"int_const 5"},"value":"5"},"nodeType":"ArrayTypeName","src":"2563:10:6","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$5_storage_ptr","typeString":"uint256[5]"}},"id":2126,"length":{"hexValue":"35","id":2125,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"2574:1:6","typeDescriptions":{"typeIdentifier":"t_rational_5_by_1","typeString":"int_const 5"},"value":"5"},"nodeType":"ArrayTypeName","src":"2563:13:6","typeDescriptions":{"typeIdentifier":"t_array$_t_array$_t_uint256_$5_storage_$5_storage_ptr","typeString":"uint256[5][5]"}},"visibility":"internal"},{"constant":false,"id":2129,"mutability":"mutable","name":"_amount","nameLocation":"2606:7:6","nodeType":"VariableDeclaration","scope":2134,"src":"2598:15:6","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":2128,"name":"uint256","nodeType":"ElementaryTypeName","src":"2598:7:6","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"2535:79:6"},"returnParameters":{"id":2133,"nodeType":"ParameterList","parameters":[{"constant":false,"id":2132,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":2134,"src":"2662:7:6","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":2131,"name":"uint256","nodeType":"ElementaryTypeName","src":"2662:7:6","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"2661:9:6"},"scope":2156,"src":"2520:151:6","stateMutability":"view","virtual":false,"visibility":"external"},{"functionSelector":"637653cb","id":2155,"implemented":false,"kind":"function","modifiers":[],"name":"get_dy","nameLocation":"2685:6:6","nodeType":"FunctionDefinition","parameters":{"id":2151,"nodeType":"ParameterList","parameters":[{"constant":false,"id":2138,"mutability":"mutable","name":"_route","nameLocation":"2720:6:6","nodeType":"VariableDeclaration","scope":2155,"src":"2701:25:6","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_array$_t_address_$11_memory_ptr","typeString":"address[11]"},"typeName":{"baseType":{"id":2135,"name":"address","nodeType":"ElementaryTypeName","src":"2701:7:6","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"id":2137,"length":{"hexValue":"3131","id":2136,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"2709:2:6","typeDescriptions":{"typeIdentifier":"t_rational_11_by_1","typeString":"int_const 11"},"value":"11"},"nodeType":"ArrayTypeName","src":"2701:11:6","typeDescriptions":{"typeIdentifier":"t_array$_t_address_$11_storage_ptr","typeString":"address[11]"}},"visibility":"internal"},{"constant":false,"id":2144,"mutability":"mutable","name":"_swap_params","nameLocation":"2757:12:6","nodeType":"VariableDeclaration","scope":2155,"src":"2736:33:6","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_array$_t_array$_t_uint256_$5_memory_ptr_$5_memory_ptr","typeString":"uint256[5][5]"},"typeName":{"baseType":{"baseType":{"id":2139,"name":"uint256","nodeType":"ElementaryTypeName","src":"2736:7:6","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":2141,"length":{"hexValue":"35","id":2140,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"2744:1:6","typeDescriptions":{"typeIdentifier":"t_rational_5_by_1","typeString":"int_const 5"},"value":"5"},"nodeType":"ArrayTypeName","src":"2736:10:6","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$5_storage_ptr","typeString":"uint256[5]"}},"id":2143,"length":{"hexValue":"35","id":2142,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"2747:1:6","typeDescriptions":{"typeIdentifier":"t_rational_5_by_1","typeString":"int_const 5"},"value":"5"},"nodeType":"ArrayTypeName","src":"2736:13:6","typeDescriptions":{"typeIdentifier":"t_array$_t_array$_t_uint256_$5_storage_$5_storage_ptr","typeString":"uint256[5][5]"}},"visibility":"internal"},{"constant":false,"id":2146,"mutability":"mutable","name":"_amount","nameLocation":"2787:7:6","nodeType":"VariableDeclaration","scope":2155,"src":"2779:15:6","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":2145,"name":"uint256","nodeType":"ElementaryTypeName","src":"2779:7:6","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":2150,"mutability":"mutable","name":"_pools","nameLocation":"2822:6:6","nodeType":"VariableDeclaration","scope":2155,"src":"2804:24:6","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_array$_t_address_$5_memory_ptr","typeString":"address[5]"},"typeName":{"baseType":{"id":2147,"name":"address","nodeType":"ElementaryTypeName","src":"2804:7:6","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"id":2149,"length":{"hexValue":"35","id":2148,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"2812:1:6","typeDescriptions":{"typeIdentifier":"t_rational_5_by_1","typeString":"int_const 5"},"value":"5"},"nodeType":"ArrayTypeName","src":"2804:10:6","typeDescriptions":{"typeIdentifier":"t_array$_t_address_$5_storage_ptr","typeString":"address[5]"}},"visibility":"internal"}],"src":"2691:143:6"},"returnParameters":{"id":2154,"nodeType":"ParameterList","parameters":[{"constant":false,"id":2153,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":2155,"src":"2858:7:6","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":2152,"name":"uint256","nodeType":"ElementaryTypeName","src":"2858:7:6","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"2857:9:6"},"scope":2156,"src":"2676:191:6","stateMutability":"view","virtual":false,"visibility":"external"}],"scope":2157,"src":"177:2692:6","usedErrors":[],"usedEvents":[1905]}],"src":"39:2831:6"},"id":6},"@ensuro/swaplibrary/contracts/interfaces/ISwapRouterErrors.sol":{"ast":{"absolutePath":"@ensuro/swaplibrary/contracts/interfaces/ISwapRouterErrors.sol","exportedSymbols":{"ISwapRouter":[14879],"ISwapRouterErrors":[2186]},"id":2187,"license":"Apache-2.0","nodeType":"SourceUnit","nodes":[{"id":2158,"literals":["solidity","^","0.8",".0"],"nodeType":"PragmaDirective","src":"39:23:7"},{"absolutePath":"@uniswap/v3-periphery/contracts/interfaces/ISwapRouter.sol","file":"@uniswap/v3-periphery/contracts/interfaces/ISwapRouter.sol","id":2160,"nameLocation":"-1:-1:-1","nodeType":"ImportDirective","scope":2187,"sourceUnit":14880,"src":"64:87:7","symbolAliases":[{"foreign":{"id":2159,"name":"ISwapRouter","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":14879,"src":"72:11:7","typeDescriptions":{}},"nameLocation":"-1:-1:-1"}],"unitAlias":""},{"abstract":false,"baseContracts":[{"baseName":{"id":2162,"name":"ISwapRouter","nameLocations":["223:11:7"],"nodeType":"IdentifierPath","referencedDeclaration":14879,"src":"223:11:7"},"id":2163,"nodeType":"InheritanceSpecifier","src":"223:11:7"}],"canonicalName":"ISwapRouterErrors","contractDependencies":[],"contractKind":"interface","documentation":{"id":2161,"nodeType":"StructuredDocumentation","src":"153:38:7","text":" @title ISwapRouterErrors"},"fullyImplemented":false,"id":2186,"linearizedBaseContracts":[2186,14879,14779],"name":"ISwapRouterErrors","nameLocation":"202:17:7","nodeType":"ContractDefinition","nodes":[{"errorSelector":"296ba6e1","id":2169,"name":"OutputAmountLessThanSlippage","nameLocation":"245:28:7","nodeType":"ErrorDefinition","parameters":{"id":2168,"nodeType":"ParameterList","parameters":[{"constant":false,"id":2165,"mutability":"mutable","name":"amountOut","nameLocation":"282:9:7","nodeType":"VariableDeclaration","scope":2169,"src":"274:17:7","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":2164,"name":"uint256","nodeType":"ElementaryTypeName","src":"274:7:7","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":2167,"mutability":"mutable","name":"amountOutMinimum","nameLocation":"301:16:7","nodeType":"VariableDeclaration","scope":2169,"src":"293:24:7","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":2166,"name":"uint256","nodeType":"ElementaryTypeName","src":"293:7:7","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"273:45:7"},"src":"239:80:7"},{"errorSelector":"9a06025d","id":2175,"name":"InputAmountExceedsSlippage","nameLocation":"328:26:7","nodeType":"ErrorDefinition","parameters":{"id":2174,"nodeType":"ParameterList","parameters":[{"constant":false,"id":2171,"mutability":"mutable","name":"amountIn","nameLocation":"363:8:7","nodeType":"VariableDeclaration","scope":2175,"src":"355:16:7","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":2170,"name":"uint256","nodeType":"ElementaryTypeName","src":"355:7:7","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":2173,"mutability":"mutable","name":"amountInMaximum","nameLocation":"381:15:7","nodeType":"VariableDeclaration","scope":2175,"src":"373:23:7","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":2172,"name":"uint256","nodeType":"ElementaryTypeName","src":"373:7:7","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"354:43:7"},"src":"322:76:7"},{"errorSelector":"ff1e9864","id":2177,"name":"DeadlineInThePast","nameLocation":"407:17:7","nodeType":"ErrorDefinition","parameters":{"id":2176,"nodeType":"ParameterList","parameters":[],"src":"424:2:7"},"src":"401:26:7"},{"errorSelector":"d11b25af","id":2179,"name":"AmountCannotBeZero","nameLocation":"436:18:7","nodeType":"ErrorDefinition","parameters":{"id":2178,"nodeType":"ParameterList","parameters":[],"src":"454:2:7"},"src":"430:27:7"},{"errorSelector":"596a094c","id":2181,"name":"TokenCannotBeZero","nameLocation":"466:17:7","nodeType":"ErrorDefinition","parameters":{"id":2180,"nodeType":"ParameterList","parameters":[],"src":"483:2:7"},"src":"460:26:7"},{"errorSelector":"70c73f80","id":2183,"name":"RecipientCannotBeZero","nameLocation":"495:21:7","nodeType":"ErrorDefinition","parameters":{"id":2182,"nodeType":"ParameterList","parameters":[],"src":"516:2:7"},"src":"489:30:7"},{"errorSelector":"d6234725","id":2185,"name":"NotImplemented","nameLocation":"528:14:7","nodeType":"ErrorDefinition","parameters":{"id":2184,"nodeType":"ParameterList","parameters":[],"src":"542:2:7"},"src":"522:23:7"}],"scope":2187,"src":"192:355:7","usedErrors":[2169,2175,2177,2179,2181,2183,2185],"usedEvents":[]}],"src":"39:509:7"},"id":7},"@ensuro/swaplibrary/contracts/mocks/SwapRouterMock.sol":{"ast":{"absolutePath":"@ensuro/swaplibrary/contracts/mocks/SwapRouterMock.sol","exportedSymbols":{"IERC20Metadata":[9411],"ISwapRouter":[14879],"ISwapRouterErrors":[2186],"Math":[12726],"SafeCast":[14491],"SafeERC20":[9866],"SwapRouterMock":[2639]},"id":2640,"license":"Apache-2.0","nodeType":"SourceUnit","nodes":[{"id":2188,"literals":["solidity","^","0.8",".0"],"nodeType":"PragmaDirective","src":"39:23:8"},{"absolutePath":"@openzeppelin/contracts/utils/math/Math.sol","file":"@openzeppelin/contracts/utils/math/Math.sol","id":2190,"nameLocation":"-1:-1:-1","nodeType":"ImportDirective","scope":2640,"sourceUnit":12727,"src":"64:65:8","symbolAliases":[{"foreign":{"id":2189,"name":"Math","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":12726,"src":"72:4:8","typeDescriptions":{}},"nameLocation":"-1:-1:-1"}],"unitAlias":""},{"absolutePath":"@openzeppelin/contracts/utils/math/SafeCast.sol","file":"@openzeppelin/contracts/utils/math/SafeCast.sol","id":2192,"nameLocation":"-1:-1:-1","nodeType":"ImportDirective","scope":2640,"sourceUnit":14492,"src":"130:73:8","symbolAliases":[{"foreign":{"id":2191,"name":"SafeCast","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":14491,"src":"138:8:8","typeDescriptions":{}},"nameLocation":"-1:-1:-1"}],"unitAlias":""},{"absolutePath":"@openzeppelin/contracts/token/ERC20/utils/SafeERC20.sol","file":"@openzeppelin/contracts/token/ERC20/utils/SafeERC20.sol","id":2194,"nameLocation":"-1:-1:-1","nodeType":"ImportDirective","scope":2640,"sourceUnit":9867,"src":"204:82:8","symbolAliases":[{"foreign":{"id":2193,"name":"SafeERC20","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9866,"src":"212:9:8","typeDescriptions":{}},"nameLocation":"-1:-1:-1"}],"unitAlias":""},{"absolutePath":"@uniswap/v3-periphery/contracts/interfaces/ISwapRouter.sol","file":"@uniswap/v3-periphery/contracts/interfaces/ISwapRouter.sol","id":2196,"nameLocation":"-1:-1:-1","nodeType":"ImportDirective","scope":2640,"sourceUnit":14880,"src":"287:87:8","symbolAliases":[{"foreign":{"id":2195,"name":"ISwapRouter","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":14879,"src":"295:11:8","typeDescriptions":{}},"nameLocation":"-1:-1:-1"}],"unitAlias":""},{"absolutePath":"@openzeppelin/contracts/token/ERC20/extensions/IERC20Metadata.sol","file":"@openzeppelin/contracts/token/ERC20/extensions/IERC20Metadata.sol","id":2198,"nameLocation":"-1:-1:-1","nodeType":"ImportDirective","scope":2640,"sourceUnit":9412,"src":"375:97:8","symbolAliases":[{"foreign":{"id":2197,"name":"IERC20Metadata","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9411,"src":"383:14:8","typeDescriptions":{}},"nameLocation":"-1:-1:-1"}],"unitAlias":""},{"absolutePath":"@ensuro/swaplibrary/contracts/interfaces/ISwapRouterErrors.sol","file":"../interfaces/ISwapRouterErrors.sol","id":2200,"nameLocation":"-1:-1:-1","nodeType":"ImportDirective","scope":2640,"sourceUnit":2187,"src":"473:70:8","symbolAliases":[{"foreign":{"id":2199,"name":"ISwapRouterErrors","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2186,"src":"481:17:8","typeDescriptions":{}},"nameLocation":"-1:-1:-1"}],"unitAlias":""},{"abstract":false,"baseContracts":[{"baseName":{"id":2202,"name":"ISwapRouterErrors","nameLocations":["688:17:8"],"nodeType":"IdentifierPath","referencedDeclaration":2186,"src":"688:17:8"},"id":2203,"nodeType":"InheritanceSpecifier","src":"688:17:8"}],"canonicalName":"SwapRouterMock","contractDependencies":[],"contractKind":"contract","documentation":{"id":2201,"nodeType":"StructuredDocumentation","src":"545:115:8","text":" @title SwapRouterMock\n @notice SwapRouter mock that can swap a single type of token for several others"},"fullyImplemented":true,"id":2639,"linearizedBaseContracts":[2639,2186,14879,14779],"name":"SwapRouterMock","nameLocation":"670:14:8","nodeType":"ContractDefinition","nodes":[{"global":false,"id":2207,"libraryName":{"id":2204,"name":"SafeERC20","nameLocations":["716:9:8"],"nodeType":"IdentifierPath","referencedDeclaration":9866,"src":"716:9:8"},"nodeType":"UsingForDirective","src":"710:35:8","typeName":{"id":2206,"nodeType":"UserDefinedTypeName","pathNode":{"id":2205,"name":"IERC20Metadata","nameLocations":["730:14:8"],"nodeType":"IdentifierPath","referencedDeclaration":9411,"src":"730:14:8"},"referencedDeclaration":9411,"src":"730:14:8","typeDescriptions":{"typeIdentifier":"t_contract$_IERC20Metadata_$9411","typeString":"contract IERC20Metadata"}}},{"global":false,"id":2210,"libraryName":{"id":2208,"name":"Math","nameLocations":["754:4:8"],"nodeType":"IdentifierPath","referencedDeclaration":12726,"src":"754:4:8"},"nodeType":"UsingForDirective","src":"748:23:8","typeName":{"id":2209,"name":"uint256","nodeType":"ElementaryTypeName","src":"763:7:8","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}},{"global":false,"id":2213,"libraryName":{"id":2211,"name":"SafeCast","nameLocations":["780:8:8"],"nodeType":"IdentifierPath","referencedDeclaration":14491,"src":"780:8:8"},"nodeType":"UsingForDirective","src":"774:27:8","typeName":{"id":2212,"name":"uint256","nodeType":"ElementaryTypeName","src":"793:7:8","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}},{"constant":true,"id":2216,"mutability":"constant","name":"WAD","nameLocation":"831:3:8","nodeType":"VariableDeclaration","scope":2639,"src":"805:36:8","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":2214,"name":"uint256","nodeType":"ElementaryTypeName","src":"805:7:8","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"value":{"hexValue":"31653138","id":2215,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"837:4:8","typeDescriptions":{"typeIdentifier":"t_rational_1000000000000000000_by_1","typeString":"int_const 1000000000000000000"},"value":"1e18"},"visibility":"internal"},{"errorSelector":"6b35b1b7","id":2218,"name":"AdminCannotBeZero","nameLocation":"852:17:8","nodeType":"ErrorDefinition","parameters":{"id":2217,"nodeType":"ParameterList","parameters":[],"src":"869:2:8"},"src":"846:26:8"},{"anonymous":false,"eventSelector":"b71c154260e8508e211e2ace194becba2c6d7e727c3ed292fe4787458969cd10","id":2226,"name":"PriceUpdated","nameLocation":"881:12:8","nodeType":"EventDefinition","parameters":{"id":2225,"nodeType":"ParameterList","parameters":[{"constant":false,"id":2220,"indexed":false,"mutability":"mutable","name":"tokenIn","nameLocation":"902:7:8","nodeType":"VariableDeclaration","scope":2226,"src":"894:15:8","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":2219,"name":"address","nodeType":"ElementaryTypeName","src":"894:7:8","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":2222,"indexed":false,"mutability":"mutable","name":"tokenOut","nameLocation":"919:8:8","nodeType":"VariableDeclaration","scope":2226,"src":"911:16:8","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":2221,"name":"address","nodeType":"ElementaryTypeName","src":"911:7:8","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":2224,"indexed":false,"mutability":"mutable","name":"price","nameLocation":"937:5:8","nodeType":"VariableDeclaration","scope":2226,"src":"929:13:8","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":2223,"name":"uint256","nodeType":"ElementaryTypeName","src":"929:7:8","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"893:50:8"},"src":"875:69:8"},{"errorSelector":"8f0f4206","id":2232,"name":"NotEnoughBalance","nameLocation":"953:16:8","nodeType":"ErrorDefinition","parameters":{"id":2231,"nodeType":"ParameterList","parameters":[{"constant":false,"id":2228,"mutability":"mutable","name":"available","nameLocation":"978:9:8","nodeType":"VariableDeclaration","scope":2232,"src":"970:17:8","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":2227,"name":"uint256","nodeType":"ElementaryTypeName","src":"970:7:8","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":2230,"mutability":"mutable","name":"required","nameLocation":"997:8:8","nodeType":"VariableDeclaration","scope":2232,"src":"989:16:8","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":2229,"name":"uint256","nodeType":"ElementaryTypeName","src":"989:7:8","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"969:37:8"},"src":"947:60:8"},{"constant":false,"id":2238,"mutability":"mutable","name":"_prices","nameLocation":"1067:7:8","nodeType":"VariableDeclaration","scope":2639,"src":"1011:63:8","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_mapping$_t_address_$_t_uint256_$_$","typeString":"mapping(address => mapping(address => uint256))"},"typeName":{"id":2237,"keyName":"","keyNameLocation":"-1:-1:-1","keyType":{"id":2233,"name":"address","nodeType":"ElementaryTypeName","src":"1019:7:8","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"Mapping","src":"1011:47:8","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_mapping$_t_address_$_t_uint256_$_$","typeString":"mapping(address => mapping(address => uint256))"},"valueName":"","valueNameLocation":"-1:-1:-1","valueType":{"id":2236,"keyName":"","keyNameLocation":"-1:-1:-1","keyType":{"id":2234,"name":"address","nodeType":"ElementaryTypeName","src":"1038:7:8","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"Mapping","src":"1030:27:8","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_uint256_$","typeString":"mapping(address => uint256)"},"valueName":"","valueNameLocation":"-1:-1:-1","valueType":{"id":2235,"name":"uint256","nodeType":"ElementaryTypeName","src":"1049:7:8","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}}},"visibility":"private"},{"body":{"id":2254,"nodeType":"Block","src":"1106:60:8","statements":[{"expression":{"arguments":[{"commonType":{"typeIdentifier":"t_address","typeString":"address"},"id":2249,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":2244,"name":"admin","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2240,"src":"1120:5:8","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"BinaryOperation","operator":"!=","rightExpression":{"arguments":[{"hexValue":"30","id":2247,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"1137:1:8","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":2246,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"1129:7:8","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":2245,"name":"address","nodeType":"ElementaryTypeName","src":"1129:7:8","typeDescriptions":{}}},"id":2248,"isConstant":false,"isLValue":false,"isPure":true,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"1129:10:8","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"src":"1120:19:8","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},{"arguments":[],"expression":{"argumentTypes":[],"id":2250,"name":"AdminCannotBeZero","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2218,"src":"1141:17:8","typeDescriptions":{"typeIdentifier":"t_function_error_pure$__$returns$_t_error_$","typeString":"function () pure returns (error)"}},"id":2251,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"1141:19:8","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_error","typeString":"error"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_error","typeString":"error"}],"id":2243,"name":"require","nodeType":"Identifier","overloadedDeclarations":[-18,-18,-18],"referencedDeclaration":-18,"src":"1112:7:8","typeDescriptions":{"typeIdentifier":"t_function_require_pure$_t_bool_$_t_error_$returns$__$","typeString":"function (bool,error) pure"}},"id":2252,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"1112:49:8","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":2253,"nodeType":"ExpressionStatement","src":"1112:49:8"}]},"id":2255,"implemented":true,"kind":"constructor","modifiers":[],"name":"","nameLocation":"-1:-1:-1","nodeType":"FunctionDefinition","parameters":{"id":2241,"nodeType":"ParameterList","parameters":[{"constant":false,"id":2240,"mutability":"mutable","name":"admin","nameLocation":"1099:5:8","nodeType":"VariableDeclaration","scope":2255,"src":"1091:13:8","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":2239,"name":"address","nodeType":"ElementaryTypeName","src":"1091:7:8","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"1090:15:8"},"returnParameters":{"id":2242,"nodeType":"ParameterList","parameters":[],"src":"1106:0:8"},"scope":2639,"src":"1079:87:8","stateMutability":"nonpayable","virtual":false,"visibility":"public"},{"body":{"id":2274,"nodeType":"Block","src":"1239:65:8","statements":[{"expression":{"components":[{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":2271,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"hexValue":"3130","id":2262,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"1253:2:8","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":2269,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"hexValue":"3138","id":2263,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"1260:2:8","typeDescriptions":{"typeIdentifier":"t_rational_18_by_1","typeString":"int_const 18"},"value":"18"},"nodeType":"BinaryOperation","operator":"-","rightExpression":{"arguments":[],"expression":{"argumentTypes":[],"expression":{"arguments":[{"id":2265,"name":"token","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2257,"src":"1280:5:8","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"id":2264,"name":"IERC20Metadata","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9411,"src":"1265:14:8","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_IERC20Metadata_$9411_$","typeString":"type(contract IERC20Metadata)"}},"id":2266,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"1265:21:8","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_contract$_IERC20Metadata_$9411","typeString":"contract IERC20Metadata"}},"id":2267,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"1287:8:8","memberName":"decimals","nodeType":"MemberAccess","referencedDeclaration":9410,"src":"1265:30:8","typeDescriptions":{"typeIdentifier":"t_function_external_view$__$returns$_t_uint8_$","typeString":"function () view external returns (uint8)"}},"id":2268,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"1265:32:8","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}},"src":"1260:37:8","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}}],"id":2270,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"1259:39:8","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}},"src":"1253:45:8","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"id":2272,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"1252:47:8","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"functionReturnParameters":2261,"id":2273,"nodeType":"Return","src":"1245:54:8"}]},"id":2275,"implemented":true,"kind":"function","modifiers":[],"name":"_toWadFactor","nameLocation":"1179:12:8","nodeType":"FunctionDefinition","parameters":{"id":2258,"nodeType":"ParameterList","parameters":[{"constant":false,"id":2257,"mutability":"mutable","name":"token","nameLocation":"1200:5:8","nodeType":"VariableDeclaration","scope":2275,"src":"1192:13:8","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":2256,"name":"address","nodeType":"ElementaryTypeName","src":"1192:7:8","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"1191:15:8"},"returnParameters":{"id":2261,"nodeType":"ParameterList","parameters":[{"constant":false,"id":2260,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":2275,"src":"1230:7:8","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":2259,"name":"uint256","nodeType":"ElementaryTypeName","src":"1230:7:8","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"1229:9:8"},"scope":2639,"src":"1170:134:8","stateMutability":"view","virtual":false,"visibility":"internal"},{"baseFunctions":[14812],"body":{"id":2382,"nodeType":"Block","src":"1460:711:8","statements":[{"expression":{"arguments":[{"commonType":{"typeIdentifier":"t_address","typeString":"address"},"id":2291,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"expression":{"id":2285,"name":"params","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2279,"src":"1474:6:8","typeDescriptions":{"typeIdentifier":"t_struct$_ExactInputSingleParams_$14803_calldata_ptr","typeString":"struct ISwapRouter.ExactInputSingleParams calldata"}},"id":2286,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"1481:9:8","memberName":"recipient","nodeType":"MemberAccess","referencedDeclaration":14794,"src":"1474:16:8","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"BinaryOperation","operator":"!=","rightExpression":{"arguments":[{"hexValue":"30","id":2289,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"1502:1:8","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":2288,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"1494:7:8","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":2287,"name":"address","nodeType":"ElementaryTypeName","src":"1494:7:8","typeDescriptions":{}}},"id":2290,"isConstant":false,"isLValue":false,"isPure":true,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"1494:10:8","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"src":"1474:30:8","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},{"arguments":[],"expression":{"argumentTypes":[],"id":2292,"name":"RecipientCannotBeZero","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2183,"src":"1506:21:8","typeDescriptions":{"typeIdentifier":"t_function_error_pure$__$returns$_t_error_$","typeString":"function () pure returns (error)"}},"id":2293,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"1506:23:8","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_error","typeString":"error"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_error","typeString":"error"}],"id":2284,"name":"require","nodeType":"Identifier","overloadedDeclarations":[-18,-18,-18],"referencedDeclaration":-18,"src":"1466:7:8","typeDescriptions":{"typeIdentifier":"t_function_require_pure$_t_bool_$_t_error_$returns$__$","typeString":"function (bool,error) pure"}},"id":2294,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"1466:64:8","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":2295,"nodeType":"ExpressionStatement","src":"1466:64:8"},{"expression":{"arguments":[{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":2301,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"expression":{"id":2297,"name":"params","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2279,"src":"1544:6:8","typeDescriptions":{"typeIdentifier":"t_struct$_ExactInputSingleParams_$14803_calldata_ptr","typeString":"struct ISwapRouter.ExactInputSingleParams calldata"}},"id":2298,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"1551:8:8","memberName":"deadline","nodeType":"MemberAccess","referencedDeclaration":14796,"src":"1544:15:8","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">=","rightExpression":{"expression":{"id":2299,"name":"block","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-4,"src":"1563:5:8","typeDescriptions":{"typeIdentifier":"t_magic_block","typeString":"block"}},"id":2300,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"1569:9:8","memberName":"timestamp","nodeType":"MemberAccess","src":"1563:15:8","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"1544:34:8","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},{"arguments":[],"expression":{"argumentTypes":[],"id":2302,"name":"DeadlineInThePast","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2177,"src":"1580:17:8","typeDescriptions":{"typeIdentifier":"t_function_error_pure$__$returns$_t_error_$","typeString":"function () pure returns (error)"}},"id":2303,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"1580:19:8","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_error","typeString":"error"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_error","typeString":"error"}],"id":2296,"name":"require","nodeType":"Identifier","overloadedDeclarations":[-18,-18,-18],"referencedDeclaration":-18,"src":"1536:7:8","typeDescriptions":{"typeIdentifier":"t_function_require_pure$_t_bool_$_t_error_$returns$__$","typeString":"function (bool,error) pure"}},"id":2304,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"1536:64:8","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":2305,"nodeType":"ExpressionStatement","src":"1536:64:8"},{"expression":{"arguments":[{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":2310,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"expression":{"id":2307,"name":"params","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2279,"src":"1614:6:8","typeDescriptions":{"typeIdentifier":"t_struct$_ExactInputSingleParams_$14803_calldata_ptr","typeString":"struct ISwapRouter.ExactInputSingleParams calldata"}},"id":2308,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"1621:8:8","memberName":"amountIn","nodeType":"MemberAccess","referencedDeclaration":14798,"src":"1614:15:8","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">","rightExpression":{"hexValue":"30","id":2309,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"1632:1:8","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"1614:19:8","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},{"arguments":[],"expression":{"argumentTypes":[],"id":2311,"name":"AmountCannotBeZero","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2179,"src":"1635:18:8","typeDescriptions":{"typeIdentifier":"t_function_error_pure$__$returns$_t_error_$","typeString":"function () pure returns (error)"}},"id":2312,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"1635:20:8","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_error","typeString":"error"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_error","typeString":"error"}],"id":2306,"name":"require","nodeType":"Identifier","overloadedDeclarations":[-18,-18,-18],"referencedDeclaration":-18,"src":"1606:7:8","typeDescriptions":{"typeIdentifier":"t_function_require_pure$_t_bool_$_t_error_$returns$__$","typeString":"function (bool,error) pure"}},"id":2313,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"1606:50:8","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":2314,"nodeType":"ExpressionStatement","src":"1606:50:8"},{"assignments":[2316],"declarations":[{"constant":false,"id":2316,"mutability":"mutable","name":"amountOutInWad","nameLocation":"1671:14:8","nodeType":"VariableDeclaration","scope":2382,"src":"1663:22:8","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":2315,"name":"uint256","nodeType":"ElementaryTypeName","src":"1663:7:8","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":2335,"initialValue":{"arguments":[{"id":2326,"name":"WAD","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2216,"src":"1751:3:8","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"baseExpression":{"baseExpression":{"id":2327,"name":"_prices","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2238,"src":"1762:7:8","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_mapping$_t_address_$_t_uint256_$_$","typeString":"mapping(address => mapping(address => uint256))"}},"id":2330,"indexExpression":{"expression":{"id":2328,"name":"params","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2279,"src":"1770:6:8","typeDescriptions":{"typeIdentifier":"t_struct$_ExactInputSingleParams_$14803_calldata_ptr","typeString":"struct ISwapRouter.ExactInputSingleParams calldata"}},"id":2329,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"1777:7:8","memberName":"tokenIn","nodeType":"MemberAccess","referencedDeclaration":14788,"src":"1770:14:8","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"1762:23:8","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_uint256_$","typeString":"mapping(address => uint256)"}},"id":2333,"indexExpression":{"expression":{"id":2331,"name":"params","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2279,"src":"1786:6:8","typeDescriptions":{"typeIdentifier":"t_struct$_ExactInputSingleParams_$14803_calldata_ptr","typeString":"struct ISwapRouter.ExactInputSingleParams calldata"}},"id":2332,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"1793:8:8","memberName":"tokenOut","nodeType":"MemberAccess","referencedDeclaration":14790,"src":"1786:15:8","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"1762:40:8","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"expression":{"components":[{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":2323,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"expression":{"id":2317,"name":"params","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2279,"src":"1689:6:8","typeDescriptions":{"typeIdentifier":"t_struct$_ExactInputSingleParams_$14803_calldata_ptr","typeString":"struct ISwapRouter.ExactInputSingleParams calldata"}},"id":2318,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"1696:8:8","memberName":"amountIn","nodeType":"MemberAccess","referencedDeclaration":14798,"src":"1689:15:8","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"*","rightExpression":{"arguments":[{"expression":{"id":2320,"name":"params","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2279,"src":"1720:6:8","typeDescriptions":{"typeIdentifier":"t_struct$_ExactInputSingleParams_$14803_calldata_ptr","typeString":"struct ISwapRouter.ExactInputSingleParams calldata"}},"id":2321,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"1727:7:8","memberName":"tokenIn","nodeType":"MemberAccess","referencedDeclaration":14788,"src":"1720:14:8","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"id":2319,"name":"_toWadFactor","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2275,"src":"1707:12:8","typeDescriptions":{"typeIdentifier":"t_function_internal_view$_t_address_$returns$_t_uint256_$","typeString":"function (address) view returns (uint256)"}},"id":2322,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"1707:28:8","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"1689:46:8","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"id":2324,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"1688:48:8","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":2325,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"1737:6:8","memberName":"mulDiv","nodeType":"MemberAccess","referencedDeclaration":11611,"src":"1688:55:8","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_uint256_$_t_uint256_$_t_uint256_$returns$_t_uint256_$attached_to$_t_uint256_$","typeString":"function (uint256,uint256,uint256) pure returns (uint256)"}},"id":2334,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"1688:120:8","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"VariableDeclarationStatement","src":"1663:145:8"},{"expression":{"id":2343,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":2336,"name":"amountOut","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2282,"src":"1814:9:8","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":2342,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":2337,"name":"amountOutInWad","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2316,"src":"1826:14:8","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"/","rightExpression":{"arguments":[{"expression":{"id":2339,"name":"params","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2279,"src":"1856:6:8","typeDescriptions":{"typeIdentifier":"t_struct$_ExactInputSingleParams_$14803_calldata_ptr","typeString":"struct ISwapRouter.ExactInputSingleParams calldata"}},"id":2340,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"1863:8:8","memberName":"tokenOut","nodeType":"MemberAccess","referencedDeclaration":14790,"src":"1856:15:8","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"id":2338,"name":"_toWadFactor","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2275,"src":"1843:12:8","typeDescriptions":{"typeIdentifier":"t_function_internal_view$_t_address_$returns$_t_uint256_$","typeString":"function (address) view returns (uint256)"}},"id":2341,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"1843:29:8","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"1826:46:8","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"1814:58:8","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":2344,"nodeType":"ExpressionStatement","src":"1814:58:8"},{"expression":{"arguments":[{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":2349,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":2346,"name":"amountOut","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2282,"src":"1886:9:8","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">=","rightExpression":{"expression":{"id":2347,"name":"params","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2279,"src":"1899:6:8","typeDescriptions":{"typeIdentifier":"t_struct$_ExactInputSingleParams_$14803_calldata_ptr","typeString":"struct ISwapRouter.ExactInputSingleParams calldata"}},"id":2348,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"1906:16:8","memberName":"amountOutMinimum","nodeType":"MemberAccess","referencedDeclaration":14800,"src":"1899:23:8","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"1886:36:8","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},{"arguments":[{"id":2351,"name":"amountOut","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2282,"src":"1953:9:8","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"expression":{"id":2352,"name":"params","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2279,"src":"1964:6:8","typeDescriptions":{"typeIdentifier":"t_struct$_ExactInputSingleParams_$14803_calldata_ptr","typeString":"struct ISwapRouter.ExactInputSingleParams calldata"}},"id":2353,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"1971:16:8","memberName":"amountOutMinimum","nodeType":"MemberAccess","referencedDeclaration":14800,"src":"1964:23:8","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":2350,"name":"OutputAmountLessThanSlippage","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2169,"src":"1924:28:8","typeDescriptions":{"typeIdentifier":"t_function_error_pure$_t_uint256_$_t_uint256_$returns$_t_error_$","typeString":"function (uint256,uint256) pure returns (error)"}},"id":2354,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"1924:64:8","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_error","typeString":"error"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_error","typeString":"error"}],"id":2345,"name":"require","nodeType":"Identifier","overloadedDeclarations":[-18,-18,-18],"referencedDeclaration":-18,"src":"1878:7:8","typeDescriptions":{"typeIdentifier":"t_function_require_pure$_t_bool_$_t_error_$returns$__$","typeString":"function (bool,error) pure"}},"id":2355,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"1878:111:8","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":2356,"nodeType":"ExpressionStatement","src":"1878:111:8"},{"expression":{"arguments":[{"expression":{"id":2362,"name":"msg","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-15,"src":"2044:3:8","typeDescriptions":{"typeIdentifier":"t_magic_message","typeString":"msg"}},"id":2363,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"2048:6:8","memberName":"sender","nodeType":"MemberAccess","src":"2044:10:8","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"arguments":[{"id":2366,"name":"this","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-28,"src":"2064:4:8","typeDescriptions":{"typeIdentifier":"t_contract$_SwapRouterMock_$2639","typeString":"contract SwapRouterMock"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_contract$_SwapRouterMock_$2639","typeString":"contract SwapRouterMock"}],"id":2365,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"2056:7:8","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":2364,"name":"address","nodeType":"ElementaryTypeName","src":"2056:7:8","typeDescriptions":{}}},"id":2367,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"2056:13:8","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"expression":{"id":2368,"name":"params","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2279,"src":"2071:6:8","typeDescriptions":{"typeIdentifier":"t_struct$_ExactInputSingleParams_$14803_calldata_ptr","typeString":"struct ISwapRouter.ExactInputSingleParams calldata"}},"id":2369,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"2078:8:8","memberName":"amountIn","nodeType":"MemberAccess","referencedDeclaration":14798,"src":"2071:15:8","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"expression":{"arguments":[{"expression":{"id":2358,"name":"params","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2279,"src":"2011:6:8","typeDescriptions":{"typeIdentifier":"t_struct$_ExactInputSingleParams_$14803_calldata_ptr","typeString":"struct ISwapRouter.ExactInputSingleParams calldata"}},"id":2359,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"2018:7:8","memberName":"tokenIn","nodeType":"MemberAccess","referencedDeclaration":14788,"src":"2011:14:8","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"id":2357,"name":"IERC20Metadata","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9411,"src":"1996:14:8","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_IERC20Metadata_$9411_$","typeString":"type(contract IERC20Metadata)"}},"id":2360,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"1996:30:8","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_contract$_IERC20Metadata_$9411","typeString":"contract IERC20Metadata"}},"id":2361,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"2027:16:8","memberName":"safeTransferFrom","nodeType":"MemberAccess","referencedDeclaration":9491,"src":"1996:47:8","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_contract$_IERC20_$8679_$_t_address_$_t_address_$_t_uint256_$returns$__$attached_to$_t_contract$_IERC20_$8679_$","typeString":"function (contract IERC20,address,address,uint256)"}},"id":2370,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"1996:91:8","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":2371,"nodeType":"ExpressionStatement","src":"1996:91:8"},{"expression":{"arguments":[{"expression":{"id":2377,"name":"params","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2279,"src":"2138:6:8","typeDescriptions":{"typeIdentifier":"t_struct$_ExactInputSingleParams_$14803_calldata_ptr","typeString":"struct ISwapRouter.ExactInputSingleParams calldata"}},"id":2378,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"2145:9:8","memberName":"recipient","nodeType":"MemberAccess","referencedDeclaration":14794,"src":"2138:16:8","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":2379,"name":"amountOut","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2282,"src":"2156:9:8","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"expression":{"arguments":[{"expression":{"id":2373,"name":"params","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2279,"src":"2108:6:8","typeDescriptions":{"typeIdentifier":"t_struct$_ExactInputSingleParams_$14803_calldata_ptr","typeString":"struct ISwapRouter.ExactInputSingleParams calldata"}},"id":2374,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"2115:8:8","memberName":"tokenOut","nodeType":"MemberAccess","referencedDeclaration":14790,"src":"2108:15:8","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"id":2372,"name":"IERC20Metadata","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9411,"src":"2093:14:8","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_IERC20Metadata_$9411_$","typeString":"type(contract IERC20Metadata)"}},"id":2375,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"2093:31:8","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_contract$_IERC20Metadata_$9411","typeString":"contract IERC20Metadata"}},"id":2376,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"2125:12:8","memberName":"safeTransfer","nodeType":"MemberAccess","referencedDeclaration":9460,"src":"2093:44:8","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_contract$_IERC20_$8679_$_t_address_$_t_uint256_$returns$__$attached_to$_t_contract$_IERC20_$8679_$","typeString":"function (contract IERC20,address,uint256)"}},"id":2380,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"2093:73:8","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":2381,"nodeType":"ExpressionStatement","src":"2093:73:8"}]},"documentation":{"id":2276,"nodeType":"StructuredDocumentation","src":"1308:38:8","text":" @inheritdoc ISwapRouter"},"functionSelector":"414bf389","id":2383,"implemented":true,"kind":"function","modifiers":[],"name":"exactInputSingle","nameLocation":"1358:16:8","nodeType":"FunctionDefinition","parameters":{"id":2280,"nodeType":"ParameterList","parameters":[{"constant":false,"id":2279,"mutability":"mutable","name":"params","nameLocation":"1407:6:8","nodeType":"VariableDeclaration","scope":2383,"src":"1375:38:8","stateVariable":false,"storageLocation":"calldata","typeDescriptions":{"typeIdentifier":"t_struct$_ExactInputSingleParams_$14803_calldata_ptr","typeString":"struct ISwapRouter.ExactInputSingleParams"},"typeName":{"id":2278,"nodeType":"UserDefinedTypeName","pathNode":{"id":2277,"name":"ExactInputSingleParams","nameLocations":["1375:22:8"],"nodeType":"IdentifierPath","referencedDeclaration":14803,"src":"1375:22:8"},"referencedDeclaration":14803,"src":"1375:22:8","typeDescriptions":{"typeIdentifier":"t_struct$_ExactInputSingleParams_$14803_storage_ptr","typeString":"struct ISwapRouter.ExactInputSingleParams"}},"visibility":"internal"}],"src":"1374:40:8"},"returnParameters":{"id":2283,"nodeType":"ParameterList","parameters":[{"constant":false,"id":2282,"mutability":"mutable","name":"amountOut","nameLocation":"1449:9:8","nodeType":"VariableDeclaration","scope":2383,"src":"1441:17:8","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":2281,"name":"uint256","nodeType":"ElementaryTypeName","src":"1441:7:8","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"1440:19:8"},"scope":2639,"src":"1349:822:8","stateMutability":"payable","virtual":false,"visibility":"external"},{"baseFunctions":[14858],"body":{"id":2515,"nodeType":"Block","src":"2328:867:8","statements":[{"expression":{"arguments":[{"commonType":{"typeIdentifier":"t_address","typeString":"address"},"id":2399,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"expression":{"id":2393,"name":"params","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2387,"src":"2342:6:8","typeDescriptions":{"typeIdentifier":"t_struct$_ExactOutputSingleParams_$14849_calldata_ptr","typeString":"struct ISwapRouter.ExactOutputSingleParams calldata"}},"id":2394,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"2349:9:8","memberName":"recipient","nodeType":"MemberAccess","referencedDeclaration":14840,"src":"2342:16:8","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"BinaryOperation","operator":"!=","rightExpression":{"arguments":[{"hexValue":"30","id":2397,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"2370:1:8","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":2396,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"2362:7:8","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":2395,"name":"address","nodeType":"ElementaryTypeName","src":"2362:7:8","typeDescriptions":{}}},"id":2398,"isConstant":false,"isLValue":false,"isPure":true,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"2362:10:8","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"src":"2342:30:8","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},{"arguments":[],"expression":{"argumentTypes":[],"id":2400,"name":"RecipientCannotBeZero","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2183,"src":"2374:21:8","typeDescriptions":{"typeIdentifier":"t_function_error_pure$__$returns$_t_error_$","typeString":"function () pure returns (error)"}},"id":2401,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"2374:23:8","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_error","typeString":"error"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_error","typeString":"error"}],"id":2392,"name":"require","nodeType":"Identifier","overloadedDeclarations":[-18,-18,-18],"referencedDeclaration":-18,"src":"2334:7:8","typeDescriptions":{"typeIdentifier":"t_function_require_pure$_t_bool_$_t_error_$returns$__$","typeString":"function (bool,error) pure"}},"id":2402,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"2334:64:8","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":2403,"nodeType":"ExpressionStatement","src":"2334:64:8"},{"expression":{"arguments":[{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":2409,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"expression":{"id":2405,"name":"params","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2387,"src":"2412:6:8","typeDescriptions":{"typeIdentifier":"t_struct$_ExactOutputSingleParams_$14849_calldata_ptr","typeString":"struct ISwapRouter.ExactOutputSingleParams calldata"}},"id":2406,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"2419:8:8","memberName":"deadline","nodeType":"MemberAccess","referencedDeclaration":14842,"src":"2412:15:8","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">=","rightExpression":{"expression":{"id":2407,"name":"block","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-4,"src":"2431:5:8","typeDescriptions":{"typeIdentifier":"t_magic_block","typeString":"block"}},"id":2408,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"2437:9:8","memberName":"timestamp","nodeType":"MemberAccess","src":"2431:15:8","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"2412:34:8","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},{"arguments":[],"expression":{"argumentTypes":[],"id":2410,"name":"DeadlineInThePast","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2177,"src":"2448:17:8","typeDescriptions":{"typeIdentifier":"t_function_error_pure$__$returns$_t_error_$","typeString":"function () pure returns (error)"}},"id":2411,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"2448:19:8","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_error","typeString":"error"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_error","typeString":"error"}],"id":2404,"name":"require","nodeType":"Identifier","overloadedDeclarations":[-18,-18,-18],"referencedDeclaration":-18,"src":"2404:7:8","typeDescriptions":{"typeIdentifier":"t_function_require_pure$_t_bool_$_t_error_$returns$__$","typeString":"function (bool,error) pure"}},"id":2412,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"2404:64:8","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":2413,"nodeType":"ExpressionStatement","src":"2404:64:8"},{"expression":{"arguments":[{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":2418,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"expression":{"id":2415,"name":"params","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2387,"src":"2482:6:8","typeDescriptions":{"typeIdentifier":"t_struct$_ExactOutputSingleParams_$14849_calldata_ptr","typeString":"struct ISwapRouter.ExactOutputSingleParams calldata"}},"id":2416,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"2489:9:8","memberName":"amountOut","nodeType":"MemberAccess","referencedDeclaration":14844,"src":"2482:16:8","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">","rightExpression":{"hexValue":"30","id":2417,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"2501:1:8","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"2482:20:8","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},{"arguments":[],"expression":{"argumentTypes":[],"id":2419,"name":"AmountCannotBeZero","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2179,"src":"2504:18:8","typeDescriptions":{"typeIdentifier":"t_function_error_pure$__$returns$_t_error_$","typeString":"function () pure returns (error)"}},"id":2420,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"2504:20:8","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_error","typeString":"error"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_error","typeString":"error"}],"id":2414,"name":"require","nodeType":"Identifier","overloadedDeclarations":[-18,-18,-18],"referencedDeclaration":-18,"src":"2474:7:8","typeDescriptions":{"typeIdentifier":"t_function_require_pure$_t_bool_$_t_error_$returns$__$","typeString":"function (bool,error) pure"}},"id":2421,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"2474:51:8","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":2422,"nodeType":"ExpressionStatement","src":"2474:51:8"},{"assignments":[2424],"declarations":[{"constant":false,"id":2424,"mutability":"mutable","name":"balance","nameLocation":"2539:7:8","nodeType":"VariableDeclaration","scope":2515,"src":"2531:15:8","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":2423,"name":"uint256","nodeType":"ElementaryTypeName","src":"2531:7:8","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":2435,"initialValue":{"arguments":[{"arguments":[{"id":2432,"name":"this","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-28,"src":"2599:4:8","typeDescriptions":{"typeIdentifier":"t_contract$_SwapRouterMock_$2639","typeString":"contract SwapRouterMock"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_contract$_SwapRouterMock_$2639","typeString":"contract SwapRouterMock"}],"id":2431,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"2591:7:8","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":2430,"name":"address","nodeType":"ElementaryTypeName","src":"2591:7:8","typeDescriptions":{}}},"id":2433,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"2591:13:8","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"expression":{"arguments":[{"expression":{"id":2426,"name":"params","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2387,"src":"2564:6:8","typeDescriptions":{"typeIdentifier":"t_struct$_ExactOutputSingleParams_$14849_calldata_ptr","typeString":"struct ISwapRouter.ExactOutputSingleParams calldata"}},"id":2427,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"2571:8:8","memberName":"tokenOut","nodeType":"MemberAccess","referencedDeclaration":14836,"src":"2564:15:8","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"id":2425,"name":"IERC20Metadata","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9411,"src":"2549:14:8","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_IERC20Metadata_$9411_$","typeString":"type(contract IERC20Metadata)"}},"id":2428,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"2549:31:8","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_contract$_IERC20Metadata_$9411","typeString":"contract IERC20Metadata"}},"id":2429,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"2581:9:8","memberName":"balanceOf","nodeType":"MemberAccess","referencedDeclaration":8636,"src":"2549:41:8","typeDescriptions":{"typeIdentifier":"t_function_external_view$_t_address_$returns$_t_uint256_$","typeString":"function (address) view external returns (uint256)"}},"id":2434,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"2549:56:8","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"VariableDeclarationStatement","src":"2531:74:8"},{"expression":{"arguments":[{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":2440,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":2437,"name":"balance","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2424,"src":"2619:7:8","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">=","rightExpression":{"expression":{"id":2438,"name":"params","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2387,"src":"2630:6:8","typeDescriptions":{"typeIdentifier":"t_struct$_ExactOutputSingleParams_$14849_calldata_ptr","typeString":"struct ISwapRouter.ExactOutputSingleParams calldata"}},"id":2439,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"2637:9:8","memberName":"amountOut","nodeType":"MemberAccess","referencedDeclaration":14844,"src":"2630:16:8","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"2619:27:8","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},{"arguments":[{"id":2442,"name":"balance","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2424,"src":"2665:7:8","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"expression":{"id":2443,"name":"params","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2387,"src":"2674:6:8","typeDescriptions":{"typeIdentifier":"t_struct$_ExactOutputSingleParams_$14849_calldata_ptr","typeString":"struct ISwapRouter.ExactOutputSingleParams calldata"}},"id":2444,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"2681:9:8","memberName":"amountOut","nodeType":"MemberAccess","referencedDeclaration":14844,"src":"2674:16:8","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":2441,"name":"NotEnoughBalance","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2232,"src":"2648:16:8","typeDescriptions":{"typeIdentifier":"t_function_error_pure$_t_uint256_$_t_uint256_$returns$_t_error_$","typeString":"function (uint256,uint256) pure returns (error)"}},"id":2445,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"2648:43:8","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_error","typeString":"error"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_error","typeString":"error"}],"id":2436,"name":"require","nodeType":"Identifier","overloadedDeclarations":[-18,-18,-18],"referencedDeclaration":-18,"src":"2611:7:8","typeDescriptions":{"typeIdentifier":"t_function_require_pure$_t_bool_$_t_error_$returns$__$","typeString":"function (bool,error) pure"}},"id":2446,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"2611:81:8","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":2447,"nodeType":"ExpressionStatement","src":"2611:81:8"},{"assignments":[2449],"declarations":[{"constant":false,"id":2449,"mutability":"mutable","name":"amountInWad","nameLocation":"2707:11:8","nodeType":"VariableDeclaration","scope":2515,"src":"2699:19:8","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":2448,"name":"uint256","nodeType":"ElementaryTypeName","src":"2699:7:8","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":2468,"initialValue":{"arguments":[{"baseExpression":{"baseExpression":{"id":2459,"name":"_prices","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2238,"src":"2786:7:8","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_mapping$_t_address_$_t_uint256_$_$","typeString":"mapping(address => mapping(address => uint256))"}},"id":2462,"indexExpression":{"expression":{"id":2460,"name":"params","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2387,"src":"2794:6:8","typeDescriptions":{"typeIdentifier":"t_struct$_ExactOutputSingleParams_$14849_calldata_ptr","typeString":"struct ISwapRouter.ExactOutputSingleParams calldata"}},"id":2461,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"2801:7:8","memberName":"tokenIn","nodeType":"MemberAccess","referencedDeclaration":14834,"src":"2794:14:8","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"2786:23:8","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_uint256_$","typeString":"mapping(address => uint256)"}},"id":2465,"indexExpression":{"expression":{"id":2463,"name":"params","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2387,"src":"2810:6:8","typeDescriptions":{"typeIdentifier":"t_struct$_ExactOutputSingleParams_$14849_calldata_ptr","typeString":"struct ISwapRouter.ExactOutputSingleParams calldata"}},"id":2464,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"2817:8:8","memberName":"tokenOut","nodeType":"MemberAccess","referencedDeclaration":14836,"src":"2810:15:8","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"2786:40:8","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"id":2466,"name":"WAD","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2216,"src":"2834:3:8","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"expression":{"components":[{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":2456,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"expression":{"id":2450,"name":"params","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2387,"src":"2722:6:8","typeDescriptions":{"typeIdentifier":"t_struct$_ExactOutputSingleParams_$14849_calldata_ptr","typeString":"struct ISwapRouter.ExactOutputSingleParams calldata"}},"id":2451,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"2729:9:8","memberName":"amountOut","nodeType":"MemberAccess","referencedDeclaration":14844,"src":"2722:16:8","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"*","rightExpression":{"arguments":[{"expression":{"id":2453,"name":"params","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2387,"src":"2754:6:8","typeDescriptions":{"typeIdentifier":"t_struct$_ExactOutputSingleParams_$14849_calldata_ptr","typeString":"struct ISwapRouter.ExactOutputSingleParams calldata"}},"id":2454,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"2761:8:8","memberName":"tokenOut","nodeType":"MemberAccess","referencedDeclaration":14836,"src":"2754:15:8","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"id":2452,"name":"_toWadFactor","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2275,"src":"2741:12:8","typeDescriptions":{"typeIdentifier":"t_function_internal_view$_t_address_$returns$_t_uint256_$","typeString":"function (address) view returns (uint256)"}},"id":2455,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"2741:29:8","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"2722:48:8","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"id":2457,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"2721:50:8","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":2458,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"2772:6:8","memberName":"mulDiv","nodeType":"MemberAccess","referencedDeclaration":11611,"src":"2721:57:8","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_uint256_$_t_uint256_$_t_uint256_$returns$_t_uint256_$attached_to$_t_uint256_$","typeString":"function (uint256,uint256,uint256) pure returns (uint256)"}},"id":2467,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"2721:122:8","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"VariableDeclarationStatement","src":"2699:144:8"},{"expression":{"id":2476,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":2469,"name":"amountIn","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2390,"src":"2849:8:8","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":2475,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":2470,"name":"amountInWad","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2449,"src":"2860:11:8","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"/","rightExpression":{"arguments":[{"expression":{"id":2472,"name":"params","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2387,"src":"2887:6:8","typeDescriptions":{"typeIdentifier":"t_struct$_ExactOutputSingleParams_$14849_calldata_ptr","typeString":"struct ISwapRouter.ExactOutputSingleParams calldata"}},"id":2473,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"2894:7:8","memberName":"tokenIn","nodeType":"MemberAccess","referencedDeclaration":14834,"src":"2887:14:8","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"id":2471,"name":"_toWadFactor","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2275,"src":"2874:12:8","typeDescriptions":{"typeIdentifier":"t_function_internal_view$_t_address_$returns$_t_uint256_$","typeString":"function (address) view returns (uint256)"}},"id":2474,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"2874:28:8","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"2860:42:8","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"2849:53:8","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":2477,"nodeType":"ExpressionStatement","src":"2849:53:8"},{"expression":{"arguments":[{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":2482,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":2479,"name":"amountIn","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2390,"src":"2916:8:8","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"<=","rightExpression":{"expression":{"id":2480,"name":"params","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2387,"src":"2928:6:8","typeDescriptions":{"typeIdentifier":"t_struct$_ExactOutputSingleParams_$14849_calldata_ptr","typeString":"struct ISwapRouter.ExactOutputSingleParams calldata"}},"id":2481,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"2935:15:8","memberName":"amountInMaximum","nodeType":"MemberAccess","referencedDeclaration":14846,"src":"2928:22:8","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"2916:34:8","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},{"arguments":[{"id":2484,"name":"amountIn","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2390,"src":"2979:8:8","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"expression":{"id":2485,"name":"params","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2387,"src":"2989:6:8","typeDescriptions":{"typeIdentifier":"t_struct$_ExactOutputSingleParams_$14849_calldata_ptr","typeString":"struct ISwapRouter.ExactOutputSingleParams calldata"}},"id":2486,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"2996:15:8","memberName":"amountInMaximum","nodeType":"MemberAccess","referencedDeclaration":14846,"src":"2989:22:8","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":2483,"name":"InputAmountExceedsSlippage","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2175,"src":"2952:26:8","typeDescriptions":{"typeIdentifier":"t_function_error_pure$_t_uint256_$_t_uint256_$returns$_t_error_$","typeString":"function (uint256,uint256) pure returns (error)"}},"id":2487,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"2952:60:8","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_error","typeString":"error"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_error","typeString":"error"}],"id":2478,"name":"require","nodeType":"Identifier","overloadedDeclarations":[-18,-18,-18],"referencedDeclaration":-18,"src":"2908:7:8","typeDescriptions":{"typeIdentifier":"t_function_require_pure$_t_bool_$_t_error_$returns$__$","typeString":"function (bool,error) pure"}},"id":2488,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"2908:105:8","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":2489,"nodeType":"ExpressionStatement","src":"2908:105:8"},{"expression":{"arguments":[{"expression":{"id":2495,"name":"msg","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-15,"src":"3068:3:8","typeDescriptions":{"typeIdentifier":"t_magic_message","typeString":"msg"}},"id":2496,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"3072:6:8","memberName":"sender","nodeType":"MemberAccess","src":"3068:10:8","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"arguments":[{"id":2499,"name":"this","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-28,"src":"3088:4:8","typeDescriptions":{"typeIdentifier":"t_contract$_SwapRouterMock_$2639","typeString":"contract SwapRouterMock"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_contract$_SwapRouterMock_$2639","typeString":"contract SwapRouterMock"}],"id":2498,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"3080:7:8","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":2497,"name":"address","nodeType":"ElementaryTypeName","src":"3080:7:8","typeDescriptions":{}}},"id":2500,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"3080:13:8","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":2501,"name":"amountIn","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2390,"src":"3095:8:8","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"expression":{"arguments":[{"expression":{"id":2491,"name":"params","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2387,"src":"3035:6:8","typeDescriptions":{"typeIdentifier":"t_struct$_ExactOutputSingleParams_$14849_calldata_ptr","typeString":"struct ISwapRouter.ExactOutputSingleParams calldata"}},"id":2492,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"3042:7:8","memberName":"tokenIn","nodeType":"MemberAccess","referencedDeclaration":14834,"src":"3035:14:8","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"id":2490,"name":"IERC20Metadata","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9411,"src":"3020:14:8","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_IERC20Metadata_$9411_$","typeString":"type(contract IERC20Metadata)"}},"id":2493,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"3020:30:8","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_contract$_IERC20Metadata_$9411","typeString":"contract IERC20Metadata"}},"id":2494,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"3051:16:8","memberName":"safeTransferFrom","nodeType":"MemberAccess","referencedDeclaration":9491,"src":"3020:47:8","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_contract$_IERC20_$8679_$_t_address_$_t_address_$_t_uint256_$returns$__$attached_to$_t_contract$_IERC20_$8679_$","typeString":"function (contract IERC20,address,address,uint256)"}},"id":2502,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"3020:84:8","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":2503,"nodeType":"ExpressionStatement","src":"3020:84:8"},{"expression":{"arguments":[{"expression":{"id":2509,"name":"params","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2387,"src":"3155:6:8","typeDescriptions":{"typeIdentifier":"t_struct$_ExactOutputSingleParams_$14849_calldata_ptr","typeString":"struct ISwapRouter.ExactOutputSingleParams calldata"}},"id":2510,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"3162:9:8","memberName":"recipient","nodeType":"MemberAccess","referencedDeclaration":14840,"src":"3155:16:8","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"expression":{"id":2511,"name":"params","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2387,"src":"3173:6:8","typeDescriptions":{"typeIdentifier":"t_struct$_ExactOutputSingleParams_$14849_calldata_ptr","typeString":"struct ISwapRouter.ExactOutputSingleParams calldata"}},"id":2512,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"3180:9:8","memberName":"amountOut","nodeType":"MemberAccess","referencedDeclaration":14844,"src":"3173:16:8","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"expression":{"arguments":[{"expression":{"id":2505,"name":"params","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2387,"src":"3125:6:8","typeDescriptions":{"typeIdentifier":"t_struct$_ExactOutputSingleParams_$14849_calldata_ptr","typeString":"struct ISwapRouter.ExactOutputSingleParams calldata"}},"id":2506,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"3132:8:8","memberName":"tokenOut","nodeType":"MemberAccess","referencedDeclaration":14836,"src":"3125:15:8","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"id":2504,"name":"IERC20Metadata","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9411,"src":"3110:14:8","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_IERC20Metadata_$9411_$","typeString":"type(contract IERC20Metadata)"}},"id":2507,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"3110:31:8","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_contract$_IERC20Metadata_$9411","typeString":"contract IERC20Metadata"}},"id":2508,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"3142:12:8","memberName":"safeTransfer","nodeType":"MemberAccess","referencedDeclaration":9460,"src":"3110:44:8","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_contract$_IERC20_$8679_$_t_address_$_t_uint256_$returns$__$attached_to$_t_contract$_IERC20_$8679_$","typeString":"function (contract IERC20,address,uint256)"}},"id":2513,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"3110:80:8","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":2514,"nodeType":"ExpressionStatement","src":"3110:80:8"}]},"documentation":{"id":2384,"nodeType":"StructuredDocumentation","src":"2175:38:8","text":" @inheritdoc ISwapRouter"},"functionSelector":"db3e2198","id":2516,"implemented":true,"kind":"function","modifiers":[],"name":"exactOutputSingle","nameLocation":"2225:17:8","nodeType":"FunctionDefinition","parameters":{"id":2388,"nodeType":"ParameterList","parameters":[{"constant":false,"id":2387,"mutability":"mutable","name":"params","nameLocation":"2276:6:8","nodeType":"VariableDeclaration","scope":2516,"src":"2243:39:8","stateVariable":false,"storageLocation":"calldata","typeDescriptions":{"typeIdentifier":"t_struct$_ExactOutputSingleParams_$14849_calldata_ptr","typeString":"struct ISwapRouter.ExactOutputSingleParams"},"typeName":{"id":2386,"nodeType":"UserDefinedTypeName","pathNode":{"id":2385,"name":"ExactOutputSingleParams","nameLocations":["2243:23:8"],"nodeType":"IdentifierPath","referencedDeclaration":14849,"src":"2243:23:8"},"referencedDeclaration":14849,"src":"2243:23:8","typeDescriptions":{"typeIdentifier":"t_struct$_ExactOutputSingleParams_$14849_storage_ptr","typeString":"struct ISwapRouter.ExactOutputSingleParams"}},"visibility":"internal"}],"src":"2242:41:8"},"returnParameters":{"id":2391,"nodeType":"ParameterList","parameters":[{"constant":false,"id":2390,"mutability":"mutable","name":"amountIn","nameLocation":"2318:8:8","nodeType":"VariableDeclaration","scope":2516,"src":"2310:16:8","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":2389,"name":"uint256","nodeType":"ElementaryTypeName","src":"2310:7:8","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"2309:18:8"},"scope":2639,"src":"2216:979:8","stateMutability":"payable","virtual":false,"visibility":"external"},{"body":{"id":2551,"nodeType":"Block","src":"3257:166:8","statements":[{"expression":{"arguments":[{"commonType":{"typeIdentifier":"t_address","typeString":"address"},"id":2529,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":2524,"name":"token","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2518,"src":"3271:5:8","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"BinaryOperation","operator":"!=","rightExpression":{"arguments":[{"hexValue":"30","id":2527,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"3288:1:8","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":2526,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"3280:7:8","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":2525,"name":"address","nodeType":"ElementaryTypeName","src":"3280:7:8","typeDescriptions":{}}},"id":2528,"isConstant":false,"isLValue":false,"isPure":true,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"3280:10:8","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"src":"3271:19:8","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},{"arguments":[],"expression":{"argumentTypes":[],"id":2530,"name":"TokenCannotBeZero","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2181,"src":"3292:17:8","typeDescriptions":{"typeIdentifier":"t_function_error_pure$__$returns$_t_error_$","typeString":"function () pure returns (error)"}},"id":2531,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"3292:19:8","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_error","typeString":"error"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_error","typeString":"error"}],"id":2523,"name":"require","nodeType":"Identifier","overloadedDeclarations":[-18,-18,-18],"referencedDeclaration":-18,"src":"3263:7:8","typeDescriptions":{"typeIdentifier":"t_function_require_pure$_t_bool_$_t_error_$returns$__$","typeString":"function (bool,error) pure"}},"id":2532,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"3263:49:8","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":2533,"nodeType":"ExpressionStatement","src":"3263:49:8"},{"expression":{"arguments":[{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":2537,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":2535,"name":"amount","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2520,"src":"3326:6:8","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">","rightExpression":{"hexValue":"30","id":2536,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"3335:1:8","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"3326:10:8","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},{"arguments":[],"expression":{"argumentTypes":[],"id":2538,"name":"TokenCannotBeZero","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2181,"src":"3338:17:8","typeDescriptions":{"typeIdentifier":"t_function_error_pure$__$returns$_t_error_$","typeString":"function () pure returns (error)"}},"id":2539,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"3338:19:8","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_error","typeString":"error"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_error","typeString":"error"}],"id":2534,"name":"require","nodeType":"Identifier","overloadedDeclarations":[-18,-18,-18],"referencedDeclaration":-18,"src":"3318:7:8","typeDescriptions":{"typeIdentifier":"t_function_require_pure$_t_bool_$_t_error_$returns$__$","typeString":"function (bool,error) pure"}},"id":2540,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"3318:40:8","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":2541,"nodeType":"ExpressionStatement","src":"3318:40:8"},{"expression":{"arguments":[{"expression":{"id":2546,"name":"msg","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-15,"src":"3399:3:8","typeDescriptions":{"typeIdentifier":"t_magic_message","typeString":"msg"}},"id":2547,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"3403:6:8","memberName":"sender","nodeType":"MemberAccess","src":"3399:10:8","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":2548,"name":"amount","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2520,"src":"3411:6:8","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"expression":{"arguments":[{"id":2543,"name":"token","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2518,"src":"3379:5:8","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"id":2542,"name":"IERC20Metadata","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9411,"src":"3364:14:8","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_IERC20Metadata_$9411_$","typeString":"type(contract IERC20Metadata)"}},"id":2544,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"3364:21:8","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_contract$_IERC20Metadata_$9411","typeString":"contract IERC20Metadata"}},"id":2545,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"3386:12:8","memberName":"safeTransfer","nodeType":"MemberAccess","referencedDeclaration":9460,"src":"3364:34:8","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_contract$_IERC20_$8679_$_t_address_$_t_uint256_$returns$__$attached_to$_t_contract$_IERC20_$8679_$","typeString":"function (contract IERC20,address,uint256)"}},"id":2549,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"3364:54:8","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":2550,"nodeType":"ExpressionStatement","src":"3364:54:8"}]},"functionSelector":"f3fef3a3","id":2552,"implemented":true,"kind":"function","modifiers":[],"name":"withdraw","nameLocation":"3208:8:8","nodeType":"FunctionDefinition","parameters":{"id":2521,"nodeType":"ParameterList","parameters":[{"constant":false,"id":2518,"mutability":"mutable","name":"token","nameLocation":"3225:5:8","nodeType":"VariableDeclaration","scope":2552,"src":"3217:13:8","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":2517,"name":"address","nodeType":"ElementaryTypeName","src":"3217:7:8","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":2520,"mutability":"mutable","name":"amount","nameLocation":"3240:6:8","nodeType":"VariableDeclaration","scope":2552,"src":"3232:14:8","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":2519,"name":"uint256","nodeType":"ElementaryTypeName","src":"3232:7:8","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"3216:31:8"},"returnParameters":{"id":2522,"nodeType":"ParameterList","parameters":[],"src":"3257:0:8"},"scope":2639,"src":"3199:224:8","stateMutability":"nonpayable","virtual":false,"visibility":"external"},{"body":{"id":2597,"nodeType":"Block","src":"3512:211:8","statements":[{"expression":{"arguments":[{"commonType":{"typeIdentifier":"t_address","typeString":"address"},"id":2567,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":2562,"name":"tokenIn","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2554,"src":"3526:7:8","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"BinaryOperation","operator":"!=","rightExpression":{"arguments":[{"hexValue":"30","id":2565,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"3545:1:8","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":2564,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"3537:7:8","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":2563,"name":"address","nodeType":"ElementaryTypeName","src":"3537:7:8","typeDescriptions":{}}},"id":2566,"isConstant":false,"isLValue":false,"isPure":true,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"3537:10:8","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"src":"3526:21:8","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},{"arguments":[],"expression":{"argumentTypes":[],"id":2568,"name":"TokenCannotBeZero","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2181,"src":"3549:17:8","typeDescriptions":{"typeIdentifier":"t_function_error_pure$__$returns$_t_error_$","typeString":"function () pure returns (error)"}},"id":2569,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"3549:19:8","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_error","typeString":"error"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_error","typeString":"error"}],"id":2561,"name":"require","nodeType":"Identifier","overloadedDeclarations":[-18,-18,-18],"referencedDeclaration":-18,"src":"3518:7:8","typeDescriptions":{"typeIdentifier":"t_function_require_pure$_t_bool_$_t_error_$returns$__$","typeString":"function (bool,error) pure"}},"id":2570,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"3518:51:8","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":2571,"nodeType":"ExpressionStatement","src":"3518:51:8"},{"expression":{"arguments":[{"commonType":{"typeIdentifier":"t_address","typeString":"address"},"id":2578,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":2573,"name":"tokenOut","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2556,"src":"3583:8:8","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"BinaryOperation","operator":"!=","rightExpression":{"arguments":[{"hexValue":"30","id":2576,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"3603:1:8","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":2575,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"3595:7:8","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":2574,"name":"address","nodeType":"ElementaryTypeName","src":"3595:7:8","typeDescriptions":{}}},"id":2577,"isConstant":false,"isLValue":false,"isPure":true,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"3595:10:8","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"src":"3583:22:8","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},{"arguments":[],"expression":{"argumentTypes":[],"id":2579,"name":"TokenCannotBeZero","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2181,"src":"3607:17:8","typeDescriptions":{"typeIdentifier":"t_function_error_pure$__$returns$_t_error_$","typeString":"function () pure returns (error)"}},"id":2580,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"3607:19:8","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_error","typeString":"error"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_error","typeString":"error"}],"id":2572,"name":"require","nodeType":"Identifier","overloadedDeclarations":[-18,-18,-18],"referencedDeclaration":-18,"src":"3575:7:8","typeDescriptions":{"typeIdentifier":"t_function_require_pure$_t_bool_$_t_error_$returns$__$","typeString":"function (bool,error) pure"}},"id":2581,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"3575:52:8","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":2582,"nodeType":"ExpressionStatement","src":"3575:52:8"},{"expression":{"id":2589,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"baseExpression":{"baseExpression":{"id":2583,"name":"_prices","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2238,"src":"3633:7:8","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_mapping$_t_address_$_t_uint256_$_$","typeString":"mapping(address => mapping(address => uint256))"}},"id":2586,"indexExpression":{"id":2584,"name":"tokenIn","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2554,"src":"3641:7:8","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"3633:16:8","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_uint256_$","typeString":"mapping(address => uint256)"}},"id":2587,"indexExpression":{"id":2585,"name":"tokenOut","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2556,"src":"3650:8:8","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"nodeType":"IndexAccess","src":"3633:26:8","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"id":2588,"name":"price_","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2558,"src":"3662:6:8","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"3633:35:8","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":2590,"nodeType":"ExpressionStatement","src":"3633:35:8"},{"eventCall":{"arguments":[{"id":2592,"name":"tokenIn","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2554,"src":"3692:7:8","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":2593,"name":"tokenOut","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2556,"src":"3701:8:8","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":2594,"name":"price_","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2558,"src":"3711:6:8","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":2591,"name":"PriceUpdated","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2226,"src":"3679:12:8","typeDescriptions":{"typeIdentifier":"t_function_event_nonpayable$_t_address_$_t_address_$_t_uint256_$returns$__$","typeString":"function (address,address,uint256)"}},"id":2595,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"3679:39:8","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":2596,"nodeType":"EmitStatement","src":"3674:44:8"}]},"functionSelector":"4562e015","id":2598,"implemented":true,"kind":"function","modifiers":[],"name":"setCurrentPrice","nameLocation":"3436:15:8","nodeType":"FunctionDefinition","parameters":{"id":2559,"nodeType":"ParameterList","parameters":[{"constant":false,"id":2554,"mutability":"mutable","name":"tokenIn","nameLocation":"3460:7:8","nodeType":"VariableDeclaration","scope":2598,"src":"3452:15:8","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":2553,"name":"address","nodeType":"ElementaryTypeName","src":"3452:7:8","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":2556,"mutability":"mutable","name":"tokenOut","nameLocation":"3477:8:8","nodeType":"VariableDeclaration","scope":2598,"src":"3469:16:8","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":2555,"name":"address","nodeType":"ElementaryTypeName","src":"3469:7:8","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":2558,"mutability":"mutable","name":"price_","nameLocation":"3495:6:8","nodeType":"VariableDeclaration","scope":2598,"src":"3487:14:8","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":2557,"name":"uint256","nodeType":"ElementaryTypeName","src":"3487:7:8","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"3451:51:8"},"returnParameters":{"id":2560,"nodeType":"ParameterList","parameters":[],"src":"3512:0:8"},"scope":2639,"src":"3427:296:8","stateMutability":"nonpayable","virtual":false,"visibility":"external"},{"baseFunctions":[14878],"body":{"id":2610,"nodeType":"Block","src":"3898:34:8","statements":[{"errorCall":{"arguments":[],"expression":{"argumentTypes":[],"id":2607,"name":"NotImplemented","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2185,"src":"3911:14:8","typeDescriptions":{"typeIdentifier":"t_function_error_pure$__$returns$_t_error_$","typeString":"function () pure returns (error)"}},"id":2608,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"3911:16:8","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_error","typeString":"error"}},"id":2609,"nodeType":"RevertStatement","src":"3904:23:8"}]},"documentation":{"id":2599,"nodeType":"StructuredDocumentation","src":"3727:84:8","text":" @inheritdoc ISwapRouter\n @notice This function is not implemented"},"functionSelector":"f28c0498","id":2611,"implemented":true,"kind":"function","modifiers":[],"name":"exactOutput","nameLocation":"3823:11:8","nodeType":"FunctionDefinition","parameters":{"id":2603,"nodeType":"ParameterList","parameters":[{"constant":false,"id":2602,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":2611,"src":"3835:26:8","stateVariable":false,"storageLocation":"calldata","typeDescriptions":{"typeIdentifier":"t_struct$_ExactOutputParams_$14869_calldata_ptr","typeString":"struct ISwapRouter.ExactOutputParams"},"typeName":{"id":2601,"nodeType":"UserDefinedTypeName","pathNode":{"id":2600,"name":"ExactOutputParams","nameLocations":["3835:17:8"],"nodeType":"IdentifierPath","referencedDeclaration":14869,"src":"3835:17:8"},"referencedDeclaration":14869,"src":"3835:17:8","typeDescriptions":{"typeIdentifier":"t_struct$_ExactOutputParams_$14869_storage_ptr","typeString":"struct ISwapRouter.ExactOutputParams"}},"visibility":"internal"}],"src":"3834:28:8"},"returnParameters":{"id":2606,"nodeType":"ParameterList","parameters":[{"constant":false,"id":2605,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":2611,"src":"3889:7:8","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":2604,"name":"uint256","nodeType":"ElementaryTypeName","src":"3889:7:8","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"3888:9:8"},"scope":2639,"src":"3814:118:8","stateMutability":"payable","virtual":false,"visibility":"external"},{"baseFunctions":[14832],"body":{"id":2623,"nodeType":"Block","src":"4105:34:8","statements":[{"errorCall":{"arguments":[],"expression":{"argumentTypes":[],"id":2620,"name":"NotImplemented","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2185,"src":"4118:14:8","typeDescriptions":{"typeIdentifier":"t_function_error_pure$__$returns$_t_error_$","typeString":"function () pure returns (error)"}},"id":2621,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"4118:16:8","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_error","typeString":"error"}},"id":2622,"nodeType":"RevertStatement","src":"4111:23:8"}]},"documentation":{"id":2612,"nodeType":"StructuredDocumentation","src":"3936:84:8","text":" @inheritdoc ISwapRouter\n @notice This function is not implemented"},"functionSelector":"c04b8d59","id":2624,"implemented":true,"kind":"function","modifiers":[],"name":"exactInput","nameLocation":"4032:10:8","nodeType":"FunctionDefinition","parameters":{"id":2616,"nodeType":"ParameterList","parameters":[{"constant":false,"id":2615,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":2624,"src":"4043:25:8","stateVariable":false,"storageLocation":"calldata","typeDescriptions":{"typeIdentifier":"t_struct$_ExactInputParams_$14823_calldata_ptr","typeString":"struct ISwapRouter.ExactInputParams"},"typeName":{"id":2614,"nodeType":"UserDefinedTypeName","pathNode":{"id":2613,"name":"ExactInputParams","nameLocations":["4043:16:8"],"nodeType":"IdentifierPath","referencedDeclaration":14823,"src":"4043:16:8"},"referencedDeclaration":14823,"src":"4043:16:8","typeDescriptions":{"typeIdentifier":"t_struct$_ExactInputParams_$14823_storage_ptr","typeString":"struct ISwapRouter.ExactInputParams"}},"visibility":"internal"}],"src":"4042:27:8"},"returnParameters":{"id":2619,"nodeType":"ParameterList","parameters":[{"constant":false,"id":2618,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":2624,"src":"4096:7:8","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":2617,"name":"uint256","nodeType":"ElementaryTypeName","src":"4096:7:8","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"4095:9:8"},"scope":2639,"src":"4023:116:8","stateMutability":"payable","virtual":false,"visibility":"external"},{"baseFunctions":[14778],"body":{"id":2637,"nodeType":"Block","src":"4278:34:8","statements":[{"errorCall":{"arguments":[],"expression":{"argumentTypes":[],"id":2634,"name":"NotImplemented","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2185,"src":"4291:14:8","typeDescriptions":{"typeIdentifier":"t_function_error_pure$__$returns$_t_error_$","typeString":"function () pure returns (error)"}},"id":2635,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"4291:16:8","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_error","typeString":"error"}},"id":2636,"nodeType":"RevertStatement","src":"4284:23:8"}]},"documentation":{"id":2625,"nodeType":"StructuredDocumentation","src":"4143:55:8","text":" @notice This function is not implemented"},"functionSelector":"fa461e33","id":2638,"implemented":true,"kind":"function","modifiers":[],"name":"uniswapV3SwapCallback","nameLocation":"4210:21:8","nodeType":"FunctionDefinition","parameters":{"id":2632,"nodeType":"ParameterList","parameters":[{"constant":false,"id":2627,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":2638,"src":"4232:6:8","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"},"typeName":{"id":2626,"name":"int256","nodeType":"ElementaryTypeName","src":"4232:6:8","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"visibility":"internal"},{"constant":false,"id":2629,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":2638,"src":"4240:6:8","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"},"typeName":{"id":2628,"name":"int256","nodeType":"ElementaryTypeName","src":"4240:6:8","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"visibility":"internal"},{"constant":false,"id":2631,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":2638,"src":"4248:14:8","stateVariable":false,"storageLocation":"calldata","typeDescriptions":{"typeIdentifier":"t_bytes_calldata_ptr","typeString":"bytes"},"typeName":{"id":2630,"name":"bytes","nodeType":"ElementaryTypeName","src":"4248:5:8","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"}],"src":"4231:32:8"},"returnParameters":{"id":2633,"nodeType":"ParameterList","parameters":[],"src":"4278:0:8"},"scope":2639,"src":"4201:111:8","stateMutability":"pure","virtual":false,"visibility":"external"}],"scope":2640,"src":"661:3653:8","usedErrors":[2169,2175,2177,2179,2181,2183,2185,2218,2232,9423],"usedEvents":[2226]}],"src":"39:4276:8"},"id":8},"@ensuro/utils/contracts/TestCurrency.sol":{"ast":{"absolutePath":"@ensuro/utils/contracts/TestCurrency.sol","exportedSymbols":{"ERC20":[8601],"TestCurrency":[2709]},"id":2710,"license":"Apache-2.0","nodeType":"SourceUnit","nodes":[{"id":2641,"literals":["solidity","^","0.8",".0"],"nodeType":"PragmaDirective","src":"38:23:9"},{"absolutePath":"@openzeppelin/contracts/token/ERC20/ERC20.sol","file":"@openzeppelin/contracts/token/ERC20/ERC20.sol","id":2643,"nameLocation":"-1:-1:-1","nodeType":"ImportDirective","scope":2710,"sourceUnit":8602,"src":"63:68:9","symbolAliases":[{"foreign":{"id":2642,"name":"ERC20","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8601,"src":"71:5:9","typeDescriptions":{}},"nameLocation":"-1:-1:-1"}],"unitAlias":""},{"abstract":false,"baseContracts":[{"baseName":{"id":2644,"name":"ERC20","nameLocations":["158:5:9"],"nodeType":"IdentifierPath","referencedDeclaration":8601,"src":"158:5:9"},"id":2645,"nodeType":"InheritanceSpecifier","src":"158:5:9"}],"canonicalName":"TestCurrency","contractDependencies":[],"contractKind":"contract","fullyImplemented":true,"id":2709,"linearizedBaseContracts":[2709,8601,7179,9411,8679,10286],"name":"TestCurrency","nameLocation":"142:12:9","nodeType":"ContractDefinition","nodes":[{"constant":false,"id":2647,"mutability":"immutable","name":"_decimals","nameLocation":"193:9:9","nodeType":"VariableDeclaration","scope":2709,"src":"168:34:9","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"},"typeName":{"id":2646,"name":"uint8","nodeType":"ElementaryTypeName","src":"168:5:9","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}},"visibility":"internal"},{"body":{"id":2672,"nodeType":"Block","src":"345:70:9","statements":[{"expression":{"id":2664,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":2662,"name":"_decimals","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2647,"src":"351:9:9","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"id":2663,"name":"decimals_","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2655,"src":"363:9:9","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}},"src":"351:21:9","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}},"id":2665,"nodeType":"ExpressionStatement","src":"351:21:9"},{"expression":{"arguments":[{"expression":{"id":2667,"name":"msg","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-15,"src":"384:3:9","typeDescriptions":{"typeIdentifier":"t_magic_message","typeString":"msg"}},"id":2668,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"388:6:9","memberName":"sender","nodeType":"MemberAccess","src":"384:10:9","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":2669,"name":"initialSupply","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2653,"src":"396:13:9","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":2666,"name":"_mint","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8441,"src":"378:5:9","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_address_$_t_uint256_$returns$__$","typeString":"function (address,uint256)"}},"id":2670,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"378:32:9","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":2671,"nodeType":"ExpressionStatement","src":"378:32:9"}]},"id":2673,"implemented":true,"kind":"constructor","modifiers":[{"arguments":[{"id":2658,"name":"name_","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2649,"src":"329:5:9","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"}},{"id":2659,"name":"symbol_","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2651,"src":"336:7:9","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"}}],"id":2660,"kind":"baseConstructorSpecifier","modifierName":{"id":2657,"name":"ERC20","nameLocations":["323:5:9"],"nodeType":"IdentifierPath","referencedDeclaration":8601,"src":"323:5:9"},"nodeType":"ModifierInvocation","src":"323:21:9"}],"name":"","nameLocation":"-1:-1:-1","nodeType":"FunctionDefinition","parameters":{"id":2656,"nodeType":"ParameterList","parameters":[{"constant":false,"id":2649,"mutability":"mutable","name":"name_","nameLocation":"238:5:9","nodeType":"VariableDeclaration","scope":2673,"src":"224:19:9","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string"},"typeName":{"id":2648,"name":"string","nodeType":"ElementaryTypeName","src":"224:6:9","typeDescriptions":{"typeIdentifier":"t_string_storage_ptr","typeString":"string"}},"visibility":"internal"},{"constant":false,"id":2651,"mutability":"mutable","name":"symbol_","nameLocation":"263:7:9","nodeType":"VariableDeclaration","scope":2673,"src":"249:21:9","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string"},"typeName":{"id":2650,"name":"string","nodeType":"ElementaryTypeName","src":"249:6:9","typeDescriptions":{"typeIdentifier":"t_string_storage_ptr","typeString":"string"}},"visibility":"internal"},{"constant":false,"id":2653,"mutability":"mutable","name":"initialSupply","nameLocation":"284:13:9","nodeType":"VariableDeclaration","scope":2673,"src":"276:21:9","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":2652,"name":"uint256","nodeType":"ElementaryTypeName","src":"276:7:9","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":2655,"mutability":"mutable","name":"decimals_","nameLocation":"309:9:9","nodeType":"VariableDeclaration","scope":2673,"src":"303:15:9","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"},"typeName":{"id":2654,"name":"uint8","nodeType":"ElementaryTypeName","src":"303:5:9","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}},"visibility":"internal"}],"src":"218:104:9"},"returnParameters":{"id":2661,"nodeType":"ParameterList","parameters":[],"src":"345:0:9"},"scope":2709,"src":"207:208:9","stateMutability":"nonpayable","virtual":false,"visibility":"public"},{"baseFunctions":[8165],"body":{"id":2681,"nodeType":"Block","src":"484:27:9","statements":[{"expression":{"id":2679,"name":"_decimals","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2647,"src":"497:9:9","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}},"functionReturnParameters":2678,"id":2680,"nodeType":"Return","src":"490:16:9"}]},"functionSelector":"313ce567","id":2682,"implemented":true,"kind":"function","modifiers":[],"name":"decimals","nameLocation":"428:8:9","nodeType":"FunctionDefinition","overrides":{"id":2675,"nodeType":"OverrideSpecifier","overrides":[],"src":"459:8:9"},"parameters":{"id":2674,"nodeType":"ParameterList","parameters":[],"src":"436:2:9"},"returnParameters":{"id":2678,"nodeType":"ParameterList","parameters":[{"constant":false,"id":2677,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":2682,"src":"477:5:9","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"},"typeName":{"id":2676,"name":"uint8","nodeType":"ElementaryTypeName","src":"477:5:9","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}},"visibility":"internal"}],"src":"476:7:9"},"scope":2709,"src":"419:92:9","stateMutability":"view","virtual":true,"visibility":"public"},{"body":{"id":2694,"nodeType":"Block","src":"579:42:9","statements":[{"expression":{"arguments":[{"id":2690,"name":"recipient","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2684,"src":"598:9:9","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":2691,"name":"amount","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2686,"src":"609:6:9","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":2689,"name":"_mint","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8441,"src":"592:5:9","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_address_$_t_uint256_$returns$__$","typeString":"function (address,uint256)"}},"id":2692,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"592:24:9","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"functionReturnParameters":2688,"id":2693,"nodeType":"Return","src":"585:31:9"}]},"functionSelector":"40c10f19","id":2695,"implemented":true,"kind":"function","modifiers":[],"name":"mint","nameLocation":"524:4:9","nodeType":"FunctionDefinition","parameters":{"id":2687,"nodeType":"ParameterList","parameters":[{"constant":false,"id":2684,"mutability":"mutable","name":"recipient","nameLocation":"537:9:9","nodeType":"VariableDeclaration","scope":2695,"src":"529:17:9","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":2683,"name":"address","nodeType":"ElementaryTypeName","src":"529:7:9","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":2686,"mutability":"mutable","name":"amount","nameLocation":"556:6:9","nodeType":"VariableDeclaration","scope":2695,"src":"548:14:9","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":2685,"name":"uint256","nodeType":"ElementaryTypeName","src":"548:7:9","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"528:35:9"},"returnParameters":{"id":2688,"nodeType":"ParameterList","parameters":[],"src":"579:0:9"},"scope":2709,"src":"515:106:9","stateMutability":"nonpayable","virtual":true,"visibility":"public"},{"body":{"id":2707,"nodeType":"Block","src":"689:42:9","statements":[{"expression":{"arguments":[{"id":2703,"name":"recipient","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2697,"src":"708:9:9","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":2704,"name":"amount","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2699,"src":"719:6:9","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":2702,"name":"_burn","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8474,"src":"702:5:9","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_address_$_t_uint256_$returns$__$","typeString":"function (address,uint256)"}},"id":2705,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"702:24:9","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"functionReturnParameters":2701,"id":2706,"nodeType":"Return","src":"695:31:9"}]},"functionSelector":"9dc29fac","id":2708,"implemented":true,"kind":"function","modifiers":[],"name":"burn","nameLocation":"634:4:9","nodeType":"FunctionDefinition","parameters":{"id":2700,"nodeType":"ParameterList","parameters":[{"constant":false,"id":2697,"mutability":"mutable","name":"recipient","nameLocation":"647:9:9","nodeType":"VariableDeclaration","scope":2708,"src":"639:17:9","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":2696,"name":"address","nodeType":"ElementaryTypeName","src":"639:7:9","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":2699,"mutability":"mutable","name":"amount","nameLocation":"666:6:9","nodeType":"VariableDeclaration","scope":2708,"src":"658:14:9","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":2698,"name":"uint256","nodeType":"ElementaryTypeName","src":"658:7:9","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"638:35:9"},"returnParameters":{"id":2701,"nodeType":"ParameterList","parameters":[],"src":"689:0:9"},"scope":2709,"src":"625:106:9","stateMutability":"nonpayable","virtual":true,"visibility":"public"}],"scope":2710,"src":"133:600:9","usedErrors":[7149,7154,7159,7168,7173,7178],"usedEvents":[8613,8622]}],"src":"38:696:9"},"id":9},"@ensuro/utils/contracts/TestERC4626.sol":{"ast":{"absolutePath":"@ensuro/utils/contracts/TestERC4626.sol","exportedSymbols":{"ERC20":[8601],"ERC4626":[9385],"IERC20Metadata":[9411],"IMintable":[2732],"TestERC4626":[3043]},"id":3044,"license":"Apache-2.0","nodeType":"SourceUnit","nodes":[{"id":2711,"literals":["solidity","^","0.8",".0"],"nodeType":"PragmaDirective","src":"38:23:10"},{"absolutePath":"@openzeppelin/contracts/token/ERC20/ERC20.sol","file":"@openzeppelin/contracts/token/ERC20/ERC20.sol","id":2713,"nameLocation":"-1:-1:-1","nodeType":"ImportDirective","scope":3044,"sourceUnit":8602,"src":"63:68:10","symbolAliases":[{"foreign":{"id":2712,"name":"ERC20","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8601,"src":"71:5:10","typeDescriptions":{}},"nameLocation":"-1:-1:-1"}],"unitAlias":""},{"absolutePath":"@openzeppelin/contracts/token/ERC20/extensions/ERC4626.sol","file":"@openzeppelin/contracts/token/ERC20/extensions/ERC4626.sol","id":2715,"nameLocation":"-1:-1:-1","nodeType":"ImportDirective","scope":3044,"sourceUnit":9386,"src":"132:83:10","symbolAliases":[{"foreign":{"id":2714,"name":"ERC4626","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9385,"src":"140:7:10","typeDescriptions":{}},"nameLocation":"-1:-1:-1"}],"unitAlias":""},{"absolutePath":"@openzeppelin/contracts/token/ERC20/extensions/IERC20Metadata.sol","file":"@openzeppelin/contracts/token/ERC20/extensions/IERC20Metadata.sol","id":2717,"nameLocation":"-1:-1:-1","nodeType":"ImportDirective","scope":3044,"sourceUnit":9412,"src":"216:97:10","symbolAliases":[{"foreign":{"id":2716,"name":"IERC20Metadata","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9411,"src":"224:14:10","typeDescriptions":{}},"nameLocation":"-1:-1:-1"}],"unitAlias":""},{"abstract":false,"baseContracts":[],"canonicalName":"IMintable","contractDependencies":[],"contractKind":"interface","fullyImplemented":false,"id":2732,"linearizedBaseContracts":[2732],"name":"IMintable","nameLocation":"325:9:10","nodeType":"ContractDefinition","nodes":[{"functionSelector":"40c10f19","id":2724,"implemented":false,"kind":"function","modifiers":[],"name":"mint","nameLocation":"348:4:10","nodeType":"FunctionDefinition","parameters":{"id":2722,"nodeType":"ParameterList","parameters":[{"constant":false,"id":2719,"mutability":"mutable","name":"recipient","nameLocation":"361:9:10","nodeType":"VariableDeclaration","scope":2724,"src":"353:17:10","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":2718,"name":"address","nodeType":"ElementaryTypeName","src":"353:7:10","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":2721,"mutability":"mutable","name":"amount","nameLocation":"380:6:10","nodeType":"VariableDeclaration","scope":2724,"src":"372:14:10","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":2720,"name":"uint256","nodeType":"ElementaryTypeName","src":"372:7:10","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"352:35:10"},"returnParameters":{"id":2723,"nodeType":"ParameterList","parameters":[],"src":"396:0:10"},"scope":2732,"src":"339:58:10","stateMutability":"nonpayable","virtual":false,"visibility":"external"},{"functionSelector":"9dc29fac","id":2731,"implemented":false,"kind":"function","modifiers":[],"name":"burn","nameLocation":"409:4:10","nodeType":"FunctionDefinition","parameters":{"id":2729,"nodeType":"ParameterList","parameters":[{"constant":false,"id":2726,"mutability":"mutable","name":"recipient","nameLocation":"422:9:10","nodeType":"VariableDeclaration","scope":2731,"src":"414:17:10","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":2725,"name":"address","nodeType":"ElementaryTypeName","src":"414:7:10","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":2728,"mutability":"mutable","name":"amount","nameLocation":"441:6:10","nodeType":"VariableDeclaration","scope":2731,"src":"433:14:10","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":2727,"name":"uint256","nodeType":"ElementaryTypeName","src":"433:7:10","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"413:35:10"},"returnParameters":{"id":2730,"nodeType":"ParameterList","parameters":[],"src":"457:0:10"},"scope":2732,"src":"400:58:10","stateMutability":"nonpayable","virtual":false,"visibility":"external"}],"scope":3044,"src":"315:145:10","usedErrors":[],"usedEvents":[]},{"abstract":false,"baseContracts":[{"baseName":{"id":2733,"name":"ERC4626","nameLocations":["486:7:10"],"nodeType":"IdentifierPath","referencedDeclaration":9385,"src":"486:7:10"},"id":2734,"nodeType":"InheritanceSpecifier","src":"486:7:10"}],"canonicalName":"TestERC4626","contractDependencies":[],"contractKind":"contract","fullyImplemented":true,"id":3043,"linearizedBaseContracts":[3043,9385,7127,8601,7179,9411,8679,10286],"name":"TestERC4626","nameLocation":"471:11:10","nodeType":"ContractDefinition","nodes":[{"constant":false,"id":2736,"mutability":"mutable","name":"_broken","nameLocation":"512:7:10","nodeType":"VariableDeclaration","scope":3043,"src":"498:21:10","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":2735,"name":"bool","nodeType":"ElementaryTypeName","src":"498:4:10","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"},{"constant":false,"functionSelector":"39d88aff","id":2738,"mutability":"mutable","name":"overrideMaxDeposit","nameLocation":"539:18:10","nodeType":"VariableDeclaration","scope":3043,"src":"524:33:10","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":2737,"name":"uint256","nodeType":"ElementaryTypeName","src":"524:7:10","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"public"},{"constant":false,"functionSelector":"034548cd","id":2740,"mutability":"mutable","name":"overrideMaxMint","nameLocation":"576:15:10","nodeType":"VariableDeclaration","scope":3043,"src":"561:30:10","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":2739,"name":"uint256","nodeType":"ElementaryTypeName","src":"561:7:10","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"public"},{"constant":false,"functionSelector":"38359018","id":2742,"mutability":"mutable","name":"overrideMaxWithdraw","nameLocation":"610:19:10","nodeType":"VariableDeclaration","scope":3043,"src":"595:34:10","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":2741,"name":"uint256","nodeType":"ElementaryTypeName","src":"595:7:10","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"public"},{"constant":false,"functionSelector":"cc7fcc60","id":2744,"mutability":"mutable","name":"overrideMaxRedeem","nameLocation":"648:17:10","nodeType":"VariableDeclaration","scope":3043,"src":"633:32:10","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":2743,"name":"uint256","nodeType":"ElementaryTypeName","src":"633:7:10","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"public"},{"constant":true,"functionSelector":"f3c0b892","id":2753,"mutability":"constant","name":"OVERRIDE_UNSET","nameLocation":"694:14:10","nodeType":"VariableDeclaration","scope":3043,"src":"670:63:10","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":2745,"name":"uint256","nodeType":"ElementaryTypeName","src":"670:7:10","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"value":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":2752,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"leftExpression":{"expression":{"arguments":[{"id":2748,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"716:7:10","typeDescriptions":{"typeIdentifier":"t_type$_t_uint256_$","typeString":"type(uint256)"},"typeName":{"id":2747,"name":"uint256","nodeType":"ElementaryTypeName","src":"716:7:10","typeDescriptions":{}}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_type$_t_uint256_$","typeString":"type(uint256)"}],"id":2746,"name":"type","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-27,"src":"711:4:10","typeDescriptions":{"typeIdentifier":"t_function_metatype_pure$__$returns$__$","typeString":"function () pure"}},"id":2749,"isConstant":false,"isLValue":false,"isPure":true,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"711:13:10","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_magic_meta_type_t_uint256","typeString":"type(uint256)"}},"id":2750,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberLocation":"725:3:10","memberName":"max","nodeType":"MemberAccess","src":"711:17:10","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"-","rightExpression":{"hexValue":"3939","id":2751,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"731:2:10","typeDescriptions":{"typeIdentifier":"t_rational_99_by_1","typeString":"int_const 99"},"value":"99"},"src":"711:22:10","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"public"},{"canonicalName":"TestERC4626.OverrideOption","id":2758,"members":[{"id":2754,"name":"deposit","nameLocation":"764:7:10","nodeType":"EnumValue","src":"764:7:10"},{"id":2755,"name":"mint","nameLocation":"777:4:10","nodeType":"EnumValue","src":"777:4:10"},{"id":2756,"name":"withdraw","nameLocation":"787:8:10","nodeType":"EnumValue","src":"787:8:10"},{"id":2757,"name":"redeem","nameLocation":"801:6:10","nodeType":"EnumValue","src":"801:6:10"}],"name":"OverrideOption","nameLocation":"743:14:10","nodeType":"EnumDefinition","src":"738:73:10"},{"errorSelector":"8185faa6","id":2762,"name":"VaultIsBroken","nameLocation":"821:13:10","nodeType":"ErrorDefinition","parameters":{"id":2761,"nodeType":"ParameterList","parameters":[{"constant":false,"id":2760,"mutability":"mutable","name":"selector","nameLocation":"842:8:10","nodeType":"VariableDeclaration","scope":2762,"src":"835:15:10","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes4","typeString":"bytes4"},"typeName":{"id":2759,"name":"bytes4","nodeType":"ElementaryTypeName","src":"835:6:10","typeDescriptions":{"typeIdentifier":"t_bytes4","typeString":"bytes4"}},"visibility":"internal"}],"src":"834:17:10"},"src":"815:37:10"},{"body":{"id":2780,"nodeType":"Block","src":"876:73:10","statements":[{"expression":{"arguments":[{"id":2766,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"UnaryOperation","operator":"!","prefix":true,"src":"890:8:10","subExpression":{"id":2765,"name":"_broken","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2736,"src":"891:7:10","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},{"arguments":[{"arguments":[{"baseExpression":{"expression":{"id":2770,"name":"msg","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-15,"src":"921:3:10","typeDescriptions":{"typeIdentifier":"t_magic_message","typeString":"msg"}},"id":2771,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"925:4:10","memberName":"data","nodeType":"MemberAccess","src":"921:8:10","typeDescriptions":{"typeIdentifier":"t_bytes_calldata_ptr","typeString":"bytes calldata"}},"endExpression":{"hexValue":"34","id":2773,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"932:1:10","typeDescriptions":{"typeIdentifier":"t_rational_4_by_1","typeString":"int_const 4"},"value":"4"},"id":2774,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"IndexRangeAccess","src":"921:13:10","startExpression":{"hexValue":"30","id":2772,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"930:1:10","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"typeDescriptions":{"typeIdentifier":"t_bytes_calldata_ptr_slice","typeString":"bytes calldata slice"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes_calldata_ptr_slice","typeString":"bytes calldata slice"}],"id":2769,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"914:6:10","typeDescriptions":{"typeIdentifier":"t_type$_t_bytes4_$","typeString":"type(bytes4)"},"typeName":{"id":2768,"name":"bytes4","nodeType":"ElementaryTypeName","src":"914:6:10","typeDescriptions":{}}},"id":2775,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"914:21:10","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes4","typeString":"bytes4"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes4","typeString":"bytes4"}],"id":2767,"name":"VaultIsBroken","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2762,"src":"900:13:10","typeDescriptions":{"typeIdentifier":"t_function_error_pure$_t_bytes4_$returns$_t_error_$","typeString":"function (bytes4) pure returns (error)"}},"id":2776,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"900:36:10","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_error","typeString":"error"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_error","typeString":"error"}],"id":2764,"name":"require","nodeType":"Identifier","overloadedDeclarations":[-18,-18,-18],"referencedDeclaration":-18,"src":"882:7:10","typeDescriptions":{"typeIdentifier":"t_function_require_pure$_t_bool_$_t_error_$returns$__$","typeString":"function (bool,error) pure"}},"id":2777,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"882:55:10","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":2778,"nodeType":"ExpressionStatement","src":"882:55:10"},{"id":2779,"nodeType":"PlaceholderStatement","src":"943:1:10"}]},"id":2781,"name":"isBroken","nameLocation":"865:8:10","nodeType":"ModifierDefinition","parameters":{"id":2763,"nodeType":"ParameterList","parameters":[],"src":"873:2:10"},"src":"856:93:10","virtual":false,"visibility":"internal"},{"body":{"id":2808,"nodeType":"Block","src":"1070:106:10","statements":[{"expression":{"id":2806,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":2798,"name":"overrideMaxRedeem","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2744,"src":"1076:17:10","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"id":2805,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":2799,"name":"overrideMaxWithdraw","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2742,"src":"1096:19:10","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"id":2804,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":2800,"name":"overrideMaxMint","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2740,"src":"1118:15:10","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"id":2803,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":2801,"name":"overrideMaxDeposit","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2738,"src":"1136:18:10","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"id":2802,"name":"OVERRIDE_UNSET","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2753,"src":"1157:14:10","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"1136:35:10","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"1118:53:10","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"1096:75:10","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"1076:95:10","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":2807,"nodeType":"ExpressionStatement","src":"1076:95:10"}]},"id":2809,"implemented":true,"kind":"constructor","modifiers":[{"arguments":[{"id":2791,"name":"name_","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2783,"src":"1038:5:10","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"}},{"id":2792,"name":"symbol_","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2785,"src":"1045:7:10","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"}}],"id":2793,"kind":"baseConstructorSpecifier","modifierName":{"id":2790,"name":"ERC20","nameLocations":["1032:5:10"],"nodeType":"IdentifierPath","referencedDeclaration":8601,"src":"1032:5:10"},"nodeType":"ModifierInvocation","src":"1032:21:10"},{"arguments":[{"id":2795,"name":"asset_","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2788,"src":"1062:6:10","typeDescriptions":{"typeIdentifier":"t_contract$_IERC20Metadata_$9411","typeString":"contract IERC20Metadata"}}],"id":2796,"kind":"baseConstructorSpecifier","modifierName":{"id":2794,"name":"ERC4626","nameLocations":["1054:7:10"],"nodeType":"IdentifierPath","referencedDeclaration":9385,"src":"1054:7:10"},"nodeType":"ModifierInvocation","src":"1054:15:10"}],"name":"","nameLocation":"-1:-1:-1","nodeType":"FunctionDefinition","parameters":{"id":2789,"nodeType":"ParameterList","parameters":[{"constant":false,"id":2783,"mutability":"mutable","name":"name_","nameLocation":"979:5:10","nodeType":"VariableDeclaration","scope":2809,"src":"965:19:10","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string"},"typeName":{"id":2782,"name":"string","nodeType":"ElementaryTypeName","src":"965:6:10","typeDescriptions":{"typeIdentifier":"t_string_storage_ptr","typeString":"string"}},"visibility":"internal"},{"constant":false,"id":2785,"mutability":"mutable","name":"symbol_","nameLocation":"1000:7:10","nodeType":"VariableDeclaration","scope":2809,"src":"986:21:10","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string"},"typeName":{"id":2784,"name":"string","nodeType":"ElementaryTypeName","src":"986:6:10","typeDescriptions":{"typeIdentifier":"t_string_storage_ptr","typeString":"string"}},"visibility":"internal"},{"constant":false,"id":2788,"mutability":"mutable","name":"asset_","nameLocation":"1024:6:10","nodeType":"VariableDeclaration","scope":2809,"src":"1009:21:10","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_contract$_IERC20Metadata_$9411","typeString":"contract IERC20Metadata"},"typeName":{"id":2787,"nodeType":"UserDefinedTypeName","pathNode":{"id":2786,"name":"IERC20Metadata","nameLocations":["1009:14:10"],"nodeType":"IdentifierPath","referencedDeclaration":9411,"src":"1009:14:10"},"referencedDeclaration":9411,"src":"1009:14:10","typeDescriptions":{"typeIdentifier":"t_contract$_IERC20Metadata_$9411","typeString":"contract IERC20Metadata"}},"visibility":"internal"}],"src":"964:67:10"},"returnParameters":{"id":2797,"nodeType":"ParameterList","parameters":[],"src":"1070:0:10"},"scope":3043,"src":"953:223:10","stateMutability":"nonpayable","virtual":false,"visibility":"public"},{"baseFunctions":[9326],"body":{"id":2832,"nodeType":"Block","src":"1319:59:10","statements":[{"expression":{"arguments":[{"id":2826,"name":"caller","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2811,"src":"1340:6:10","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":2827,"name":"receiver","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2813,"src":"1348:8:10","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":2828,"name":"assets","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2815,"src":"1358:6:10","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"id":2829,"name":"shares","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2817,"src":"1366:6:10","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":2823,"name":"super","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-25,"src":"1325:5:10","typeDescriptions":{"typeIdentifier":"t_type$_t_super$_TestERC4626_$3043_$","typeString":"type(contract super TestERC4626)"}},"id":2825,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"1331:8:10","memberName":"_deposit","nodeType":"MemberAccess","referencedDeclaration":9326,"src":"1325:14:10","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_address_$_t_address_$_t_uint256_$_t_uint256_$returns$__$","typeString":"function (address,address,uint256,uint256)"}},"id":2830,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"1325:48:10","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":2831,"nodeType":"ExpressionStatement","src":"1325:48:10"}]},"id":2833,"implemented":true,"kind":"function","modifiers":[{"id":2821,"kind":"modifierInvocation","modifierName":{"id":2820,"name":"isBroken","nameLocations":["1310:8:10"],"nodeType":"IdentifierPath","referencedDeclaration":2781,"src":"1310:8:10"},"nodeType":"ModifierInvocation","src":"1310:8:10"}],"name":"_deposit","nameLocation":"1189:8:10","nodeType":"FunctionDefinition","overrides":{"id":2819,"nodeType":"OverrideSpecifier","overrides":[],"src":"1301:8:10"},"parameters":{"id":2818,"nodeType":"ParameterList","parameters":[{"constant":false,"id":2811,"mutability":"mutable","name":"caller","nameLocation":"1211:6:10","nodeType":"VariableDeclaration","scope":2833,"src":"1203:14:10","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":2810,"name":"address","nodeType":"ElementaryTypeName","src":"1203:7:10","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":2813,"mutability":"mutable","name":"receiver","nameLocation":"1231:8:10","nodeType":"VariableDeclaration","scope":2833,"src":"1223:16:10","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":2812,"name":"address","nodeType":"ElementaryTypeName","src":"1223:7:10","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":2815,"mutability":"mutable","name":"assets","nameLocation":"1253:6:10","nodeType":"VariableDeclaration","scope":2833,"src":"1245:14:10","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":2814,"name":"uint256","nodeType":"ElementaryTypeName","src":"1245:7:10","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":2817,"mutability":"mutable","name":"shares","nameLocation":"1273:6:10","nodeType":"VariableDeclaration","scope":2833,"src":"1265:14:10","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":2816,"name":"uint256","nodeType":"ElementaryTypeName","src":"1265:7:10","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"1197:86:10"},"returnParameters":{"id":2822,"nodeType":"ParameterList","parameters":[],"src":"1319:0:10"},"scope":3043,"src":"1180:198:10","stateMutability":"nonpayable","virtual":true,"visibility":"internal"},{"baseFunctions":[9376],"body":{"id":2859,"nodeType":"Block","src":"1541:67:10","statements":[{"expression":{"arguments":[{"id":2852,"name":"caller","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2835,"src":"1563:6:10","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":2853,"name":"receiver","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2837,"src":"1571:8:10","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":2854,"name":"owner","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2839,"src":"1581:5:10","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":2855,"name":"assets","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2841,"src":"1588:6:10","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"id":2856,"name":"shares","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2843,"src":"1596:6:10","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"}],"expression":{"id":2849,"name":"super","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-25,"src":"1547:5:10","typeDescriptions":{"typeIdentifier":"t_type$_t_super$_TestERC4626_$3043_$","typeString":"type(contract super TestERC4626)"}},"id":2851,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"1553:9:10","memberName":"_withdraw","nodeType":"MemberAccess","referencedDeclaration":9376,"src":"1547:15:10","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_address_$_t_address_$_t_address_$_t_uint256_$_t_uint256_$returns$__$","typeString":"function (address,address,address,uint256,uint256)"}},"id":2857,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"1547:56:10","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":2858,"nodeType":"ExpressionStatement","src":"1547:56:10"}]},"id":2860,"implemented":true,"kind":"function","modifiers":[{"id":2847,"kind":"modifierInvocation","modifierName":{"id":2846,"name":"isBroken","nameLocations":["1532:8:10"],"nodeType":"IdentifierPath","referencedDeclaration":2781,"src":"1532:8:10"},"nodeType":"ModifierInvocation","src":"1532:8:10"}],"name":"_withdraw","nameLocation":"1391:9:10","nodeType":"FunctionDefinition","overrides":{"id":2845,"nodeType":"OverrideSpecifier","overrides":[],"src":"1523:8:10"},"parameters":{"id":2844,"nodeType":"ParameterList","parameters":[{"constant":false,"id":2835,"mutability":"mutable","name":"caller","nameLocation":"1414:6:10","nodeType":"VariableDeclaration","scope":2860,"src":"1406:14:10","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":2834,"name":"address","nodeType":"ElementaryTypeName","src":"1406:7:10","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":2837,"mutability":"mutable","name":"receiver","nameLocation":"1434:8:10","nodeType":"VariableDeclaration","scope":2860,"src":"1426:16:10","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":2836,"name":"address","nodeType":"ElementaryTypeName","src":"1426:7:10","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":2839,"mutability":"mutable","name":"owner","nameLocation":"1456:5:10","nodeType":"VariableDeclaration","scope":2860,"src":"1448:13:10","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":2838,"name":"address","nodeType":"ElementaryTypeName","src":"1448:7:10","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":2841,"mutability":"mutable","name":"assets","nameLocation":"1475:6:10","nodeType":"VariableDeclaration","scope":2860,"src":"1467:14:10","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":2840,"name":"uint256","nodeType":"ElementaryTypeName","src":"1467:7:10","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":2843,"mutability":"mutable","name":"shares","nameLocation":"1495:6:10","nodeType":"VariableDeclaration","scope":2860,"src":"1487:14:10","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":2842,"name":"uint256","nodeType":"ElementaryTypeName","src":"1487:7:10","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"1400:105:10"},"returnParameters":{"id":2848,"nodeType":"ParameterList","parameters":[],"src":"1541:0:10"},"scope":3043,"src":"1382:226:10","stateMutability":"nonpayable","virtual":true,"visibility":"internal"},{"body":{"id":2902,"nodeType":"Block","src":"1778:173:10","statements":[{"condition":{"commonType":{"typeIdentifier":"t_int256","typeString":"int256"},"id":2867,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":2865,"name":"assets","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2862,"src":"1788:6:10","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"nodeType":"BinaryOperation","operator":">","rightExpression":{"hexValue":"30","id":2866,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"1797:1:10","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"1788:10:10","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"falseBody":{"id":2900,"nodeType":"Block","src":"1876:71:10","statements":[{"expression":{"arguments":[{"arguments":[{"id":2891,"name":"this","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-28,"src":"1916:4:10","typeDescriptions":{"typeIdentifier":"t_contract$_TestERC4626_$3043","typeString":"contract TestERC4626"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_contract$_TestERC4626_$3043","typeString":"contract TestERC4626"}],"id":2890,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"1908:7:10","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":2889,"name":"address","nodeType":"ElementaryTypeName","src":"1908:7:10","typeDescriptions":{}}},"id":2892,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"1908:13:10","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"arguments":[{"id":2896,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"UnaryOperation","operator":"-","prefix":true,"src":"1931:7:10","subExpression":{"id":2895,"name":"assets","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2862,"src":"1932:6:10","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_int256","typeString":"int256"}],"id":2894,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"1923:7:10","typeDescriptions":{"typeIdentifier":"t_type$_t_uint256_$","typeString":"type(uint256)"},"typeName":{"id":2893,"name":"uint256","nodeType":"ElementaryTypeName","src":"1923:7:10","typeDescriptions":{}}},"id":2897,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"1923:16:10","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"expression":{"arguments":[{"arguments":[],"expression":{"argumentTypes":[],"id":2885,"name":"asset","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8876,"src":"1894:5:10","typeDescriptions":{"typeIdentifier":"t_function_internal_view$__$returns$_t_address_$","typeString":"function () view returns (address)"}},"id":2886,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"1894:7:10","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"id":2884,"name":"IMintable","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2732,"src":"1884:9:10","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_IMintable_$2732_$","typeString":"type(contract IMintable)"}},"id":2887,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"1884:18:10","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_contract$_IMintable_$2732","typeString":"contract IMintable"}},"id":2888,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"1903:4:10","memberName":"burn","nodeType":"MemberAccess","referencedDeclaration":2731,"src":"1884:23:10","typeDescriptions":{"typeIdentifier":"t_function_external_nonpayable$_t_address_$_t_uint256_$returns$__$","typeString":"function (address,uint256) external"}},"id":2898,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"1884:56:10","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":2899,"nodeType":"ExpressionStatement","src":"1884:56:10"}]},"id":2901,"nodeType":"IfStatement","src":"1784:163:10","trueBody":{"id":2883,"nodeType":"Block","src":"1800:70:10","statements":[{"expression":{"arguments":[{"arguments":[{"id":2875,"name":"this","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-28,"src":"1840:4:10","typeDescriptions":{"typeIdentifier":"t_contract$_TestERC4626_$3043","typeString":"contract TestERC4626"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_contract$_TestERC4626_$3043","typeString":"contract TestERC4626"}],"id":2874,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"1832:7:10","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":2873,"name":"address","nodeType":"ElementaryTypeName","src":"1832:7:10","typeDescriptions":{}}},"id":2876,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"1832:13:10","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"arguments":[{"id":2879,"name":"assets","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2862,"src":"1855:6:10","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_int256","typeString":"int256"}],"id":2878,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"1847:7:10","typeDescriptions":{"typeIdentifier":"t_type$_t_uint256_$","typeString":"type(uint256)"},"typeName":{"id":2877,"name":"uint256","nodeType":"ElementaryTypeName","src":"1847:7:10","typeDescriptions":{}}},"id":2880,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"1847:15:10","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"expression":{"arguments":[{"arguments":[],"expression":{"argumentTypes":[],"id":2869,"name":"asset","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8876,"src":"1818:5:10","typeDescriptions":{"typeIdentifier":"t_function_internal_view$__$returns$_t_address_$","typeString":"function () view returns (address)"}},"id":2870,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"1818:7:10","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"id":2868,"name":"IMintable","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2732,"src":"1808:9:10","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_IMintable_$2732_$","typeString":"type(contract IMintable)"}},"id":2871,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"1808:18:10","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_contract$_IMintable_$2732","typeString":"contract IMintable"}},"id":2872,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"1827:4:10","memberName":"mint","nodeType":"MemberAccess","referencedDeclaration":2724,"src":"1808:23:10","typeDescriptions":{"typeIdentifier":"t_function_external_nonpayable$_t_address_$_t_uint256_$returns$__$","typeString":"function (address,uint256) external"}},"id":2881,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"1808:55:10","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":2882,"nodeType":"ExpressionStatement","src":"1808:55:10"}]}}]},"functionSelector":"c7361ed2","id":2903,"implemented":true,"kind":"function","modifiers":[],"name":"discreteEarning","nameLocation":"1738:15:10","nodeType":"FunctionDefinition","parameters":{"id":2863,"nodeType":"ParameterList","parameters":[{"constant":false,"id":2862,"mutability":"mutable","name":"assets","nameLocation":"1761:6:10","nodeType":"VariableDeclaration","scope":2903,"src":"1754:13:10","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"},"typeName":{"id":2861,"name":"int256","nodeType":"ElementaryTypeName","src":"1754:6:10","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"visibility":"internal"}],"src":"1753:15:10"},"returnParameters":{"id":2864,"nodeType":"ParameterList","parameters":[],"src":"1778:0:10"},"scope":3043,"src":"1729:222:10","stateMutability":"nonpayable","virtual":false,"visibility":"external"},{"body":{"id":2912,"nodeType":"Block","src":"1997:28:10","statements":[{"expression":{"id":2910,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":2908,"name":"_broken","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2736,"src":"2003:7:10","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"id":2909,"name":"broken_","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2905,"src":"2013:7:10","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"src":"2003:17:10","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":2911,"nodeType":"ExpressionStatement","src":"2003:17:10"}]},"functionSelector":"86de9e4f","id":2913,"implemented":true,"kind":"function","modifiers":[],"name":"setBroken","nameLocation":"1964:9:10","nodeType":"FunctionDefinition","parameters":{"id":2906,"nodeType":"ParameterList","parameters":[{"constant":false,"id":2905,"mutability":"mutable","name":"broken_","nameLocation":"1979:7:10","nodeType":"VariableDeclaration","scope":2913,"src":"1974:12:10","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":2904,"name":"bool","nodeType":"ElementaryTypeName","src":"1974:4:10","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"}],"src":"1973:14:10"},"returnParameters":{"id":2907,"nodeType":"ParameterList","parameters":[],"src":"1997:0:10"},"scope":3043,"src":"1955:70:10","stateMutability":"nonpayable","virtual":false,"visibility":"external"},{"body":{"id":2920,"nodeType":"Block","src":"2076:25:10","statements":[{"expression":{"id":2918,"name":"_broken","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2736,"src":"2089:7:10","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"functionReturnParameters":2917,"id":2919,"nodeType":"Return","src":"2082:14:10"}]},"functionSelector":"7fb1ad62","id":2921,"implemented":true,"kind":"function","modifiers":[],"name":"broken","nameLocation":"2038:6:10","nodeType":"FunctionDefinition","parameters":{"id":2914,"nodeType":"ParameterList","parameters":[],"src":"2044:2:10"},"returnParameters":{"id":2917,"nodeType":"ParameterList","parameters":[{"constant":false,"id":2916,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":2921,"src":"2070:4:10","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":2915,"name":"bool","nodeType":"ElementaryTypeName","src":"2070:4:10","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"}],"src":"2069:6:10"},"scope":3043,"src":"2029:72:10","stateMutability":"view","virtual":false,"visibility":"external"},{"baseFunctions":[8941],"body":{"id":2939,"nodeType":"Block","src":"2179:101:10","statements":[{"expression":{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":2931,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":2929,"name":"overrideMaxDeposit","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2738,"src":"2192:18:10","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"id":2930,"name":"OVERRIDE_UNSET","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2753,"src":"2214:14:10","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"2192:36:10","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"falseExpression":{"id":2936,"name":"overrideMaxDeposit","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2738,"src":"2257:18:10","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":2937,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"Conditional","src":"2192:83:10","trueExpression":{"arguments":[{"id":2934,"name":"owner","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2923,"src":"2248:5:10","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"expression":{"id":2932,"name":"super","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-25,"src":"2231:5:10","typeDescriptions":{"typeIdentifier":"t_type$_t_super$_TestERC4626_$3043_$","typeString":"type(contract super TestERC4626)"}},"id":2933,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"2237:10:10","memberName":"maxDeposit","nodeType":"MemberAccess","referencedDeclaration":8941,"src":"2231:16:10","typeDescriptions":{"typeIdentifier":"t_function_internal_view$_t_address_$returns$_t_uint256_$","typeString":"function (address) view returns (uint256)"}},"id":2935,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"2231:23:10","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"functionReturnParameters":2928,"id":2938,"nodeType":"Return","src":"2185:90:10"}]},"functionSelector":"402d267d","id":2940,"implemented":true,"kind":"function","modifiers":[],"name":"maxDeposit","nameLocation":"2114:10:10","nodeType":"FunctionDefinition","overrides":{"id":2925,"nodeType":"OverrideSpecifier","overrides":[],"src":"2152:8:10"},"parameters":{"id":2924,"nodeType":"ParameterList","parameters":[{"constant":false,"id":2923,"mutability":"mutable","name":"owner","nameLocation":"2133:5:10","nodeType":"VariableDeclaration","scope":2940,"src":"2125:13:10","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":2922,"name":"address","nodeType":"ElementaryTypeName","src":"2125:7:10","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"2124:15:10"},"returnParameters":{"id":2928,"nodeType":"ParameterList","parameters":[{"constant":false,"id":2927,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":2940,"src":"2170:7:10","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":2926,"name":"uint256","nodeType":"ElementaryTypeName","src":"2170:7:10","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"2169:9:10"},"scope":3043,"src":"2105:175:10","stateMutability":"view","virtual":false,"visibility":"public"},{"baseFunctions":[8956],"body":{"id":2958,"nodeType":"Block","src":"2355:92:10","statements":[{"expression":{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":2950,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":2948,"name":"overrideMaxMint","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2740,"src":"2368:15:10","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"id":2949,"name":"OVERRIDE_UNSET","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2753,"src":"2387:14:10","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"2368:33:10","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"falseExpression":{"id":2955,"name":"overrideMaxMint","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2740,"src":"2427:15:10","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":2956,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"Conditional","src":"2368:74:10","trueExpression":{"arguments":[{"id":2953,"name":"owner","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2942,"src":"2418:5:10","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"expression":{"id":2951,"name":"super","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-25,"src":"2404:5:10","typeDescriptions":{"typeIdentifier":"t_type$_t_super$_TestERC4626_$3043_$","typeString":"type(contract super TestERC4626)"}},"id":2952,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"2410:7:10","memberName":"maxMint","nodeType":"MemberAccess","referencedDeclaration":8956,"src":"2404:13:10","typeDescriptions":{"typeIdentifier":"t_function_internal_view$_t_address_$returns$_t_uint256_$","typeString":"function (address) view returns (uint256)"}},"id":2954,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"2404:20:10","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"functionReturnParameters":2947,"id":2957,"nodeType":"Return","src":"2361:81:10"}]},"functionSelector":"c63d75b6","id":2959,"implemented":true,"kind":"function","modifiers":[],"name":"maxMint","nameLocation":"2293:7:10","nodeType":"FunctionDefinition","overrides":{"id":2944,"nodeType":"OverrideSpecifier","overrides":[],"src":"2328:8:10"},"parameters":{"id":2943,"nodeType":"ParameterList","parameters":[{"constant":false,"id":2942,"mutability":"mutable","name":"owner","nameLocation":"2309:5:10","nodeType":"VariableDeclaration","scope":2959,"src":"2301:13:10","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":2941,"name":"address","nodeType":"ElementaryTypeName","src":"2301:7:10","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"2300:15:10"},"returnParameters":{"id":2947,"nodeType":"ParameterList","parameters":[{"constant":false,"id":2946,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":2959,"src":"2346:7:10","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":2945,"name":"uint256","nodeType":"ElementaryTypeName","src":"2346:7:10","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"2345:9:10"},"scope":3043,"src":"2284:163:10","stateMutability":"view","virtual":false,"visibility":"public"},{"baseFunctions":[8971],"body":{"id":2977,"nodeType":"Block","src":"2526:104:10","statements":[{"expression":{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":2969,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":2967,"name":"overrideMaxWithdraw","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2742,"src":"2539:19:10","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"id":2968,"name":"OVERRIDE_UNSET","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2753,"src":"2562:14:10","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"2539:37:10","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"falseExpression":{"id":2974,"name":"overrideMaxWithdraw","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2742,"src":"2606:19:10","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":2975,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"Conditional","src":"2539:86:10","trueExpression":{"arguments":[{"id":2972,"name":"owner","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2961,"src":"2597:5:10","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"expression":{"id":2970,"name":"super","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-25,"src":"2579:5:10","typeDescriptions":{"typeIdentifier":"t_type$_t_super$_TestERC4626_$3043_$","typeString":"type(contract super TestERC4626)"}},"id":2971,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"2585:11:10","memberName":"maxWithdraw","nodeType":"MemberAccess","referencedDeclaration":8971,"src":"2579:17:10","typeDescriptions":{"typeIdentifier":"t_function_internal_view$_t_address_$returns$_t_uint256_$","typeString":"function (address) view returns (uint256)"}},"id":2973,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"2579:24:10","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"functionReturnParameters":2966,"id":2976,"nodeType":"Return","src":"2532:93:10"}]},"functionSelector":"ce96cb77","id":2978,"implemented":true,"kind":"function","modifiers":[],"name":"maxWithdraw","nameLocation":"2460:11:10","nodeType":"FunctionDefinition","overrides":{"id":2963,"nodeType":"OverrideSpecifier","overrides":[],"src":"2499:8:10"},"parameters":{"id":2962,"nodeType":"ParameterList","parameters":[{"constant":false,"id":2961,"mutability":"mutable","name":"owner","nameLocation":"2480:5:10","nodeType":"VariableDeclaration","scope":2978,"src":"2472:13:10","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":2960,"name":"address","nodeType":"ElementaryTypeName","src":"2472:7:10","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"2471:15:10"},"returnParameters":{"id":2966,"nodeType":"ParameterList","parameters":[{"constant":false,"id":2965,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":2978,"src":"2517:7:10","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":2964,"name":"uint256","nodeType":"ElementaryTypeName","src":"2517:7:10","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"2516:9:10"},"scope":3043,"src":"2451:179:10","stateMutability":"view","virtual":false,"visibility":"public"},{"baseFunctions":[8984],"body":{"id":2996,"nodeType":"Block","src":"2707:98:10","statements":[{"expression":{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":2988,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":2986,"name":"overrideMaxRedeem","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2744,"src":"2720:17:10","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"id":2987,"name":"OVERRIDE_UNSET","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2753,"src":"2741:14:10","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"2720:35:10","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"falseExpression":{"id":2993,"name":"overrideMaxRedeem","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2744,"src":"2783:17:10","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":2994,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"Conditional","src":"2720:80:10","trueExpression":{"arguments":[{"id":2991,"name":"owner","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2980,"src":"2774:5:10","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"expression":{"id":2989,"name":"super","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-25,"src":"2758:5:10","typeDescriptions":{"typeIdentifier":"t_type$_t_super$_TestERC4626_$3043_$","typeString":"type(contract super TestERC4626)"}},"id":2990,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"2764:9:10","memberName":"maxRedeem","nodeType":"MemberAccess","referencedDeclaration":8984,"src":"2758:15:10","typeDescriptions":{"typeIdentifier":"t_function_internal_view$_t_address_$returns$_t_uint256_$","typeString":"function (address) view returns (uint256)"}},"id":2992,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"2758:22:10","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"functionReturnParameters":2985,"id":2995,"nodeType":"Return","src":"2713:87:10"}]},"functionSelector":"d905777e","id":2997,"implemented":true,"kind":"function","modifiers":[],"name":"maxRedeem","nameLocation":"2643:9:10","nodeType":"FunctionDefinition","overrides":{"id":2982,"nodeType":"OverrideSpecifier","overrides":[],"src":"2680:8:10"},"parameters":{"id":2981,"nodeType":"ParameterList","parameters":[{"constant":false,"id":2980,"mutability":"mutable","name":"owner","nameLocation":"2661:5:10","nodeType":"VariableDeclaration","scope":2997,"src":"2653:13:10","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":2979,"name":"address","nodeType":"ElementaryTypeName","src":"2653:7:10","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"2652:15:10"},"returnParameters":{"id":2985,"nodeType":"ParameterList","parameters":[{"constant":false,"id":2984,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":2997,"src":"2698:7:10","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":2983,"name":"uint256","nodeType":"ElementaryTypeName","src":"2698:7:10","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"2697:9:10"},"scope":3043,"src":"2634:171:10","stateMutability":"view","virtual":false,"visibility":"public"},{"body":{"id":3041,"nodeType":"Block","src":"2880:291:10","statements":[{"condition":{"commonType":{"typeIdentifier":"t_enum$_OverrideOption_$2758","typeString":"enum TestERC4626.OverrideOption"},"id":3008,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":3005,"name":"option","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3000,"src":"2890:6:10","typeDescriptions":{"typeIdentifier":"t_enum$_OverrideOption_$2758","typeString":"enum TestERC4626.OverrideOption"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"expression":{"id":3006,"name":"OverrideOption","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2758,"src":"2900:14:10","typeDescriptions":{"typeIdentifier":"t_type$_t_enum$_OverrideOption_$2758_$","typeString":"type(enum TestERC4626.OverrideOption)"}},"id":3007,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberLocation":"2915:7:10","memberName":"deposit","nodeType":"MemberAccess","referencedDeclaration":2754,"src":"2900:22:10","typeDescriptions":{"typeIdentifier":"t_enum$_OverrideOption_$2758","typeString":"enum TestERC4626.OverrideOption"}},"src":"2890:32:10","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":3013,"nodeType":"IfStatement","src":"2886:67:10","trueBody":{"expression":{"id":3011,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":3009,"name":"overrideMaxDeposit","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2738,"src":"2924:18:10","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"id":3010,"name":"newValue","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3002,"src":"2945:8:10","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"2924:29:10","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":3012,"nodeType":"ExpressionStatement","src":"2924:29:10"}},{"condition":{"commonType":{"typeIdentifier":"t_enum$_OverrideOption_$2758","typeString":"enum TestERC4626.OverrideOption"},"id":3017,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":3014,"name":"option","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3000,"src":"2963:6:10","typeDescriptions":{"typeIdentifier":"t_enum$_OverrideOption_$2758","typeString":"enum TestERC4626.OverrideOption"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"expression":{"id":3015,"name":"OverrideOption","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2758,"src":"2973:14:10","typeDescriptions":{"typeIdentifier":"t_type$_t_enum$_OverrideOption_$2758_$","typeString":"type(enum TestERC4626.OverrideOption)"}},"id":3016,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberLocation":"2988:4:10","memberName":"mint","nodeType":"MemberAccess","referencedDeclaration":2755,"src":"2973:19:10","typeDescriptions":{"typeIdentifier":"t_enum$_OverrideOption_$2758","typeString":"enum TestERC4626.OverrideOption"}},"src":"2963:29:10","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":3022,"nodeType":"IfStatement","src":"2959:61:10","trueBody":{"expression":{"id":3020,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":3018,"name":"overrideMaxMint","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2740,"src":"2994:15:10","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"id":3019,"name":"newValue","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3002,"src":"3012:8:10","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"2994:26:10","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":3021,"nodeType":"ExpressionStatement","src":"2994:26:10"}},{"condition":{"commonType":{"typeIdentifier":"t_enum$_OverrideOption_$2758","typeString":"enum TestERC4626.OverrideOption"},"id":3026,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":3023,"name":"option","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3000,"src":"3030:6:10","typeDescriptions":{"typeIdentifier":"t_enum$_OverrideOption_$2758","typeString":"enum TestERC4626.OverrideOption"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"expression":{"id":3024,"name":"OverrideOption","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2758,"src":"3040:14:10","typeDescriptions":{"typeIdentifier":"t_type$_t_enum$_OverrideOption_$2758_$","typeString":"type(enum TestERC4626.OverrideOption)"}},"id":3025,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberLocation":"3055:8:10","memberName":"withdraw","nodeType":"MemberAccess","referencedDeclaration":2756,"src":"3040:23:10","typeDescriptions":{"typeIdentifier":"t_enum$_OverrideOption_$2758","typeString":"enum TestERC4626.OverrideOption"}},"src":"3030:33:10","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":3031,"nodeType":"IfStatement","src":"3026:69:10","trueBody":{"expression":{"id":3029,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":3027,"name":"overrideMaxWithdraw","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2742,"src":"3065:19:10","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"id":3028,"name":"newValue","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3002,"src":"3087:8:10","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"3065:30:10","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":3030,"nodeType":"ExpressionStatement","src":"3065:30:10"}},{"condition":{"commonType":{"typeIdentifier":"t_enum$_OverrideOption_$2758","typeString":"enum TestERC4626.OverrideOption"},"id":3035,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":3032,"name":"option","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3000,"src":"3105:6:10","typeDescriptions":{"typeIdentifier":"t_enum$_OverrideOption_$2758","typeString":"enum TestERC4626.OverrideOption"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"expression":{"id":3033,"name":"OverrideOption","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2758,"src":"3115:14:10","typeDescriptions":{"typeIdentifier":"t_type$_t_enum$_OverrideOption_$2758_$","typeString":"type(enum TestERC4626.OverrideOption)"}},"id":3034,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberLocation":"3130:6:10","memberName":"redeem","nodeType":"MemberAccess","referencedDeclaration":2757,"src":"3115:21:10","typeDescriptions":{"typeIdentifier":"t_enum$_OverrideOption_$2758","typeString":"enum TestERC4626.OverrideOption"}},"src":"3105:31:10","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":3040,"nodeType":"IfStatement","src":"3101:65:10","trueBody":{"expression":{"id":3038,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":3036,"name":"overrideMaxRedeem","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2744,"src":"3138:17:10","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"id":3037,"name":"newValue","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3002,"src":"3158:8:10","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"3138:28:10","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":3039,"nodeType":"ExpressionStatement","src":"3138:28:10"}}]},"functionSelector":"d6dd0234","id":3042,"implemented":true,"kind":"function","modifiers":[],"name":"setOverride","nameLocation":"2818:11:10","nodeType":"FunctionDefinition","parameters":{"id":3003,"nodeType":"ParameterList","parameters":[{"constant":false,"id":3000,"mutability":"mutable","name":"option","nameLocation":"2845:6:10","nodeType":"VariableDeclaration","scope":3042,"src":"2830:21:10","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_enum$_OverrideOption_$2758","typeString":"enum TestERC4626.OverrideOption"},"typeName":{"id":2999,"nodeType":"UserDefinedTypeName","pathNode":{"id":2998,"name":"OverrideOption","nameLocations":["2830:14:10"],"nodeType":"IdentifierPath","referencedDeclaration":2758,"src":"2830:14:10"},"referencedDeclaration":2758,"src":"2830:14:10","typeDescriptions":{"typeIdentifier":"t_enum$_OverrideOption_$2758","typeString":"enum TestERC4626.OverrideOption"}},"visibility":"internal"},{"constant":false,"id":3002,"mutability":"mutable","name":"newValue","nameLocation":"2861:8:10","nodeType":"VariableDeclaration","scope":3042,"src":"2853:16:10","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":3001,"name":"uint256","nodeType":"ElementaryTypeName","src":"2853:7:10","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"2829:41:10"},"returnParameters":{"id":3004,"nodeType":"ParameterList","parameters":[],"src":"2880:0:10"},"scope":3043,"src":"2809:362:10","stateMutability":"nonpayable","virtual":false,"visibility":"external"}],"scope":3044,"src":"462:2711:10","usedErrors":[2762,7149,7154,7159,7168,7173,7178,8717,8726,8735,8744,9423],"usedEvents":[6978,6990,8613,8622]}],"src":"38:3136:10"},"id":10},"@openzeppelin/contracts-upgradeable/proxy/utils/UUPSUpgradeable.sol":{"ast":{"absolutePath":"@openzeppelin/contracts-upgradeable/proxy/utils/UUPSUpgradeable.sol","exportedSymbols":{"UUPSUpgradeable":[8086]},"id":3048,"license":"MIT","nodeType":"SourceUnit","nodes":[{"id":3045,"literals":["solidity","^","0.8",".22"],"nodeType":"PragmaDirective","src":"33:24:11"},{"absolutePath":"@openzeppelin/contracts/proxy/utils/UUPSUpgradeable.sol","file":"@openzeppelin/contracts/proxy/utils/UUPSUpgradeable.sol","id":3047,"nameLocation":"-1:-1:-1","nodeType":"ImportDirective","scope":3048,"sourceUnit":8087,"src":"59:88:11","symbolAliases":[{"foreign":{"id":3046,"name":"UUPSUpgradeable","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8086,"src":"67:15:11","typeDescriptions":{}},"nameLocation":"-1:-1:-1"}],"unitAlias":""}],"src":"33:115:11"},"id":11},"@openzeppelin/contracts-upgradeable/token/ERC20/ERC20Upgradeable.sol":{"ast":{"absolutePath":"@openzeppelin/contracts-upgradeable/token/ERC20/ERC20Upgradeable.sol","exportedSymbols":{"ContextUpgradeable":[4474],"ERC20Upgradeable":[3664],"IERC20":[8679],"IERC20Errors":[7179],"IERC20Metadata":[9411],"Initializable":[7920]},"id":3665,"license":"MIT","nodeType":"SourceUnit","nodes":[{"id":3049,"literals":["solidity","^","0.8",".20"],"nodeType":"PragmaDirective","src":"105:24:12"},{"absolutePath":"@openzeppelin/contracts/token/ERC20/IERC20.sol","file":"@openzeppelin/contracts/token/ERC20/IERC20.sol","id":3051,"nameLocation":"-1:-1:-1","nodeType":"ImportDirective","scope":3665,"sourceUnit":8680,"src":"131:70:12","symbolAliases":[{"foreign":{"id":3050,"name":"IERC20","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8679,"src":"139:6:12","typeDescriptions":{}},"nameLocation":"-1:-1:-1"}],"unitAlias":""},{"absolutePath":"@openzeppelin/contracts/token/ERC20/extensions/IERC20Metadata.sol","file":"@openzeppelin/contracts/token/ERC20/extensions/IERC20Metadata.sol","id":3053,"nameLocation":"-1:-1:-1","nodeType":"ImportDirective","scope":3665,"sourceUnit":9412,"src":"202:97:12","symbolAliases":[{"foreign":{"id":3052,"name":"IERC20Metadata","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9411,"src":"210:14:12","typeDescriptions":{}},"nameLocation":"-1:-1:-1"}],"unitAlias":""},{"absolutePath":"@openzeppelin/contracts-upgradeable/utils/ContextUpgradeable.sol","file":"../../utils/ContextUpgradeable.sol","id":3055,"nameLocation":"-1:-1:-1","nodeType":"ImportDirective","scope":3665,"sourceUnit":4475,"src":"300:70:12","symbolAliases":[{"foreign":{"id":3054,"name":"ContextUpgradeable","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4474,"src":"308:18:12","typeDescriptions":{}},"nameLocation":"-1:-1:-1"}],"unitAlias":""},{"absolutePath":"@openzeppelin/contracts/interfaces/draft-IERC6093.sol","file":"@openzeppelin/contracts/interfaces/draft-IERC6093.sol","id":3057,"nameLocation":"-1:-1:-1","nodeType":"ImportDirective","scope":3665,"sourceUnit":7275,"src":"371:83:12","symbolAliases":[{"foreign":{"id":3056,"name":"IERC20Errors","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7179,"src":"379:12:12","typeDescriptions":{}},"nameLocation":"-1:-1:-1"}],"unitAlias":""},{"absolutePath":"@openzeppelin/contracts/proxy/utils/Initializable.sol","file":"@openzeppelin/contracts/proxy/utils/Initializable.sol","id":3059,"nameLocation":"-1:-1:-1","nodeType":"ImportDirective","scope":3665,"sourceUnit":7921,"src":"455:84:12","symbolAliases":[{"foreign":{"id":3058,"name":"Initializable","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7920,"src":"463:13:12","typeDescriptions":{}},"nameLocation":"-1:-1:-1"}],"unitAlias":""},{"abstract":true,"baseContracts":[{"baseName":{"id":3061,"name":"Initializable","nameLocations":["1337:13:12"],"nodeType":"IdentifierPath","referencedDeclaration":7920,"src":"1337:13:12"},"id":3062,"nodeType":"InheritanceSpecifier","src":"1337:13:12"},{"baseName":{"id":3063,"name":"ContextUpgradeable","nameLocations":["1352:18:12"],"nodeType":"IdentifierPath","referencedDeclaration":4474,"src":"1352:18:12"},"id":3064,"nodeType":"InheritanceSpecifier","src":"1352:18:12"},{"baseName":{"id":3065,"name":"IERC20","nameLocations":["1372:6:12"],"nodeType":"IdentifierPath","referencedDeclaration":8679,"src":"1372:6:12"},"id":3066,"nodeType":"InheritanceSpecifier","src":"1372:6:12"},{"baseName":{"id":3067,"name":"IERC20Metadata","nameLocations":["1380:14:12"],"nodeType":"IdentifierPath","referencedDeclaration":9411,"src":"1380:14:12"},"id":3068,"nodeType":"InheritanceSpecifier","src":"1380:14:12"},{"baseName":{"id":3069,"name":"IERC20Errors","nameLocations":["1396:12:12"],"nodeType":"IdentifierPath","referencedDeclaration":7179,"src":"1396:12:12"},"id":3070,"nodeType":"InheritanceSpecifier","src":"1396:12:12"}],"canonicalName":"ERC20Upgradeable","contractDependencies":[],"contractKind":"contract","documentation":{"id":3060,"nodeType":"StructuredDocumentation","src":"541:757:12","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 TIP: For a detailed writeup see our guide\n https://forum.openzeppelin.com/t/how-to-implement-erc20-supply-mechanisms/226[How\n to implement supply mechanisms].\n The default value of {decimals} is 18. To change this, you should override\n this function so it returns a different value.\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 ERC-20\n applications."},"fullyImplemented":true,"id":3664,"linearizedBaseContracts":[3664,7179,9411,8679,4474,7920],"name":"ERC20Upgradeable","nameLocation":"1317:16:12","nodeType":"ContractDefinition","nodes":[{"canonicalName":"ERC20Upgradeable.ERC20Storage","documentation":{"id":3071,"nodeType":"StructuredDocumentation","src":"1415:63:12","text":"@custom:storage-location erc7201:openzeppelin.storage.ERC20"},"id":3088,"members":[{"constant":false,"id":3075,"mutability":"mutable","name":"_balances","nameLocation":"1549:9:12","nodeType":"VariableDeclaration","scope":3088,"src":"1513:45:12","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_uint256_$","typeString":"mapping(address => uint256)"},"typeName":{"id":3074,"keyName":"account","keyNameLocation":"1529:7:12","keyType":{"id":3072,"name":"address","nodeType":"ElementaryTypeName","src":"1521:7:12","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"Mapping","src":"1513:35:12","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_uint256_$","typeString":"mapping(address => uint256)"},"valueName":"","valueNameLocation":"-1:-1:-1","valueType":{"id":3073,"name":"uint256","nodeType":"ElementaryTypeName","src":"1540:7:12","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}},"visibility":"internal"},{"constant":false,"id":3081,"mutability":"mutable","name":"_allowances","nameLocation":"1633:11:12","nodeType":"VariableDeclaration","scope":3088,"src":"1569:75:12","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_mapping$_t_address_$_t_uint256_$_$","typeString":"mapping(address => mapping(address => uint256))"},"typeName":{"id":3080,"keyName":"account","keyNameLocation":"1585:7:12","keyType":{"id":3076,"name":"address","nodeType":"ElementaryTypeName","src":"1577:7:12","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"Mapping","src":"1569:63:12","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_mapping$_t_address_$_t_uint256_$_$","typeString":"mapping(address => mapping(address => uint256))"},"valueName":"","valueNameLocation":"-1:-1:-1","valueType":{"id":3079,"keyName":"spender","keyNameLocation":"1612:7:12","keyType":{"id":3077,"name":"address","nodeType":"ElementaryTypeName","src":"1604:7:12","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"Mapping","src":"1596:35:12","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_uint256_$","typeString":"mapping(address => uint256)"},"valueName":"","valueNameLocation":"-1:-1:-1","valueType":{"id":3078,"name":"uint256","nodeType":"ElementaryTypeName","src":"1623:7:12","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}}},"visibility":"internal"},{"constant":false,"id":3083,"mutability":"mutable","name":"_totalSupply","nameLocation":"1663:12:12","nodeType":"VariableDeclaration","scope":3088,"src":"1655:20:12","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":3082,"name":"uint256","nodeType":"ElementaryTypeName","src":"1655:7:12","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":3085,"mutability":"mutable","name":"_name","nameLocation":"1693:5:12","nodeType":"VariableDeclaration","scope":3088,"src":"1686:12:12","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_string_storage_ptr","typeString":"string"},"typeName":{"id":3084,"name":"string","nodeType":"ElementaryTypeName","src":"1686:6:12","typeDescriptions":{"typeIdentifier":"t_string_storage_ptr","typeString":"string"}},"visibility":"internal"},{"constant":false,"id":3087,"mutability":"mutable","name":"_symbol","nameLocation":"1715:7:12","nodeType":"VariableDeclaration","scope":3088,"src":"1708:14:12","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_string_storage_ptr","typeString":"string"},"typeName":{"id":3086,"name":"string","nodeType":"ElementaryTypeName","src":"1708:6:12","typeDescriptions":{"typeIdentifier":"t_string_storage_ptr","typeString":"string"}},"visibility":"internal"}],"name":"ERC20Storage","nameLocation":"1490:12:12","nodeType":"StructDefinition","scope":3664,"src":"1483:246:12","visibility":"public"},{"constant":true,"id":3091,"mutability":"constant","name":"ERC20StorageLocation","nameLocation":"1869:20:12","nodeType":"VariableDeclaration","scope":3664,"src":"1844:114:12","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":3089,"name":"bytes32","nodeType":"ElementaryTypeName","src":"1844:7:12","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"value":{"hexValue":"307835326336333234376531663437646231396435636530343630303330633439376630363763613463656266373162613938656561646162653230626163653030","id":3090,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"1892:66:12","typeDescriptions":{"typeIdentifier":"t_rational_37439836327923360225337895871394760624280537466773280374265222508165906222592_by_1","typeString":"int_const 3743...(69 digits omitted)...2592"},"value":"0x52c63247e1f47db19d5ce0460030c497f067ca4cebf71ba98eeadabe20bace00"},"visibility":"private"},{"body":{"id":3098,"nodeType":"Block","src":"2039:79:12","statements":[{"AST":{"nativeSrc":"2058:54:12","nodeType":"YulBlock","src":"2058:54:12","statements":[{"nativeSrc":"2072:30:12","nodeType":"YulAssignment","src":"2072:30:12","value":{"name":"ERC20StorageLocation","nativeSrc":"2082:20:12","nodeType":"YulIdentifier","src":"2082:20:12"},"variableNames":[{"name":"$.slot","nativeSrc":"2072:6:12","nodeType":"YulIdentifier","src":"2072:6:12"}]}]},"evmVersion":"prague","externalReferences":[{"declaration":3095,"isOffset":false,"isSlot":true,"src":"2072:6:12","suffix":"slot","valueSize":1},{"declaration":3091,"isOffset":false,"isSlot":false,"src":"2082:20:12","valueSize":1}],"id":3097,"nodeType":"InlineAssembly","src":"2049:63:12"}]},"id":3099,"implemented":true,"kind":"function","modifiers":[],"name":"_getERC20Storage","nameLocation":"1974:16:12","nodeType":"FunctionDefinition","parameters":{"id":3092,"nodeType":"ParameterList","parameters":[],"src":"1990:2:12"},"returnParameters":{"id":3096,"nodeType":"ParameterList","parameters":[{"constant":false,"id":3095,"mutability":"mutable","name":"$","nameLocation":"2036:1:12","nodeType":"VariableDeclaration","scope":3099,"src":"2015:22:12","stateVariable":false,"storageLocation":"storage","typeDescriptions":{"typeIdentifier":"t_struct$_ERC20Storage_$3088_storage_ptr","typeString":"struct ERC20Upgradeable.ERC20Storage"},"typeName":{"id":3094,"nodeType":"UserDefinedTypeName","pathNode":{"id":3093,"name":"ERC20Storage","nameLocations":["2015:12:12"],"nodeType":"IdentifierPath","referencedDeclaration":3088,"src":"2015:12:12"},"referencedDeclaration":3088,"src":"2015:12:12","typeDescriptions":{"typeIdentifier":"t_struct$_ERC20Storage_$3088_storage_ptr","typeString":"struct ERC20Upgradeable.ERC20Storage"}},"visibility":"internal"}],"src":"2014:24:12"},"scope":3664,"src":"1965:153:12","stateMutability":"pure","virtual":false,"visibility":"private"},{"body":{"id":3114,"nodeType":"Block","src":"2373:55:12","statements":[{"expression":{"arguments":[{"id":3110,"name":"name_","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3102,"src":"2406:5:12","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"}},{"id":3111,"name":"symbol_","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3104,"src":"2413:7:12","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"},{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"}],"id":3109,"name":"__ERC20_init_unchained","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3143,"src":"2383:22:12","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_string_memory_ptr_$_t_string_memory_ptr_$returns$__$","typeString":"function (string memory,string memory)"}},"id":3112,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"2383:38:12","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":3113,"nodeType":"ExpressionStatement","src":"2383:38:12"}]},"documentation":{"id":3100,"nodeType":"StructuredDocumentation","src":"2124:152:12","text":" @dev Sets the values for {name} and {symbol}.\n Both values are immutable: they can only be set once during construction."},"id":3115,"implemented":true,"kind":"function","modifiers":[{"id":3107,"kind":"modifierInvocation","modifierName":{"id":3106,"name":"onlyInitializing","nameLocations":["2356:16:12"],"nodeType":"IdentifierPath","referencedDeclaration":7815,"src":"2356:16:12"},"nodeType":"ModifierInvocation","src":"2356:16:12"}],"name":"__ERC20_init","nameLocation":"2290:12:12","nodeType":"FunctionDefinition","parameters":{"id":3105,"nodeType":"ParameterList","parameters":[{"constant":false,"id":3102,"mutability":"mutable","name":"name_","nameLocation":"2317:5:12","nodeType":"VariableDeclaration","scope":3115,"src":"2303:19:12","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string"},"typeName":{"id":3101,"name":"string","nodeType":"ElementaryTypeName","src":"2303:6:12","typeDescriptions":{"typeIdentifier":"t_string_storage_ptr","typeString":"string"}},"visibility":"internal"},{"constant":false,"id":3104,"mutability":"mutable","name":"symbol_","nameLocation":"2338:7:12","nodeType":"VariableDeclaration","scope":3115,"src":"2324:21:12","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string"},"typeName":{"id":3103,"name":"string","nodeType":"ElementaryTypeName","src":"2324:6:12","typeDescriptions":{"typeIdentifier":"t_string_storage_ptr","typeString":"string"}},"visibility":"internal"}],"src":"2302:44:12"},"returnParameters":{"id":3108,"nodeType":"ParameterList","parameters":[],"src":"2373:0:12"},"scope":3664,"src":"2281:147:12","stateMutability":"nonpayable","virtual":false,"visibility":"internal"},{"body":{"id":3142,"nodeType":"Block","src":"2536:114:12","statements":[{"assignments":[3126],"declarations":[{"constant":false,"id":3126,"mutability":"mutable","name":"$","nameLocation":"2567:1:12","nodeType":"VariableDeclaration","scope":3142,"src":"2546:22:12","stateVariable":false,"storageLocation":"storage","typeDescriptions":{"typeIdentifier":"t_struct$_ERC20Storage_$3088_storage_ptr","typeString":"struct ERC20Upgradeable.ERC20Storage"},"typeName":{"id":3125,"nodeType":"UserDefinedTypeName","pathNode":{"id":3124,"name":"ERC20Storage","nameLocations":["2546:12:12"],"nodeType":"IdentifierPath","referencedDeclaration":3088,"src":"2546:12:12"},"referencedDeclaration":3088,"src":"2546:12:12","typeDescriptions":{"typeIdentifier":"t_struct$_ERC20Storage_$3088_storage_ptr","typeString":"struct ERC20Upgradeable.ERC20Storage"}},"visibility":"internal"}],"id":3129,"initialValue":{"arguments":[],"expression":{"argumentTypes":[],"id":3127,"name":"_getERC20Storage","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3099,"src":"2571:16:12","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$__$returns$_t_struct$_ERC20Storage_$3088_storage_ptr_$","typeString":"function () pure returns (struct ERC20Upgradeable.ERC20Storage storage pointer)"}},"id":3128,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"2571:18:12","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_struct$_ERC20Storage_$3088_storage_ptr","typeString":"struct ERC20Upgradeable.ERC20Storage storage pointer"}},"nodeType":"VariableDeclarationStatement","src":"2546:43:12"},{"expression":{"id":3134,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"expression":{"id":3130,"name":"$","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3126,"src":"2599:1:12","typeDescriptions":{"typeIdentifier":"t_struct$_ERC20Storage_$3088_storage_ptr","typeString":"struct ERC20Upgradeable.ERC20Storage storage pointer"}},"id":3132,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"memberLocation":"2601:5:12","memberName":"_name","nodeType":"MemberAccess","referencedDeclaration":3085,"src":"2599:7:12","typeDescriptions":{"typeIdentifier":"t_string_storage","typeString":"string storage ref"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"id":3133,"name":"name_","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3117,"src":"2609:5:12","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"}},"src":"2599:15:12","typeDescriptions":{"typeIdentifier":"t_string_storage","typeString":"string storage ref"}},"id":3135,"nodeType":"ExpressionStatement","src":"2599:15:12"},{"expression":{"id":3140,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"expression":{"id":3136,"name":"$","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3126,"src":"2624:1:12","typeDescriptions":{"typeIdentifier":"t_struct$_ERC20Storage_$3088_storage_ptr","typeString":"struct ERC20Upgradeable.ERC20Storage storage pointer"}},"id":3138,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"memberLocation":"2626:7:12","memberName":"_symbol","nodeType":"MemberAccess","referencedDeclaration":3087,"src":"2624:9:12","typeDescriptions":{"typeIdentifier":"t_string_storage","typeString":"string storage ref"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"id":3139,"name":"symbol_","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3119,"src":"2636:7:12","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"}},"src":"2624:19:12","typeDescriptions":{"typeIdentifier":"t_string_storage","typeString":"string storage ref"}},"id":3141,"nodeType":"ExpressionStatement","src":"2624:19:12"}]},"id":3143,"implemented":true,"kind":"function","modifiers":[{"id":3122,"kind":"modifierInvocation","modifierName":{"id":3121,"name":"onlyInitializing","nameLocations":["2519:16:12"],"nodeType":"IdentifierPath","referencedDeclaration":7815,"src":"2519:16:12"},"nodeType":"ModifierInvocation","src":"2519:16:12"}],"name":"__ERC20_init_unchained","nameLocation":"2443:22:12","nodeType":"FunctionDefinition","parameters":{"id":3120,"nodeType":"ParameterList","parameters":[{"constant":false,"id":3117,"mutability":"mutable","name":"name_","nameLocation":"2480:5:12","nodeType":"VariableDeclaration","scope":3143,"src":"2466:19:12","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string"},"typeName":{"id":3116,"name":"string","nodeType":"ElementaryTypeName","src":"2466:6:12","typeDescriptions":{"typeIdentifier":"t_string_storage_ptr","typeString":"string"}},"visibility":"internal"},{"constant":false,"id":3119,"mutability":"mutable","name":"symbol_","nameLocation":"2501:7:12","nodeType":"VariableDeclaration","scope":3143,"src":"2487:21:12","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string"},"typeName":{"id":3118,"name":"string","nodeType":"ElementaryTypeName","src":"2487:6:12","typeDescriptions":{"typeIdentifier":"t_string_storage_ptr","typeString":"string"}},"visibility":"internal"}],"src":"2465:44:12"},"returnParameters":{"id":3123,"nodeType":"ParameterList","parameters":[],"src":"2536:0:12"},"scope":3664,"src":"2434:216:12","stateMutability":"nonpayable","virtual":false,"visibility":"internal"},{"baseFunctions":[9398],"body":{"id":3158,"nodeType":"Block","src":"2775:84:12","statements":[{"assignments":[3151],"declarations":[{"constant":false,"id":3151,"mutability":"mutable","name":"$","nameLocation":"2806:1:12","nodeType":"VariableDeclaration","scope":3158,"src":"2785:22:12","stateVariable":false,"storageLocation":"storage","typeDescriptions":{"typeIdentifier":"t_struct$_ERC20Storage_$3088_storage_ptr","typeString":"struct ERC20Upgradeable.ERC20Storage"},"typeName":{"id":3150,"nodeType":"UserDefinedTypeName","pathNode":{"id":3149,"name":"ERC20Storage","nameLocations":["2785:12:12"],"nodeType":"IdentifierPath","referencedDeclaration":3088,"src":"2785:12:12"},"referencedDeclaration":3088,"src":"2785:12:12","typeDescriptions":{"typeIdentifier":"t_struct$_ERC20Storage_$3088_storage_ptr","typeString":"struct ERC20Upgradeable.ERC20Storage"}},"visibility":"internal"}],"id":3154,"initialValue":{"arguments":[],"expression":{"argumentTypes":[],"id":3152,"name":"_getERC20Storage","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3099,"src":"2810:16:12","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$__$returns$_t_struct$_ERC20Storage_$3088_storage_ptr_$","typeString":"function () pure returns (struct ERC20Upgradeable.ERC20Storage storage pointer)"}},"id":3153,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"2810:18:12","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_struct$_ERC20Storage_$3088_storage_ptr","typeString":"struct ERC20Upgradeable.ERC20Storage storage pointer"}},"nodeType":"VariableDeclarationStatement","src":"2785:43:12"},{"expression":{"expression":{"id":3155,"name":"$","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3151,"src":"2845:1:12","typeDescriptions":{"typeIdentifier":"t_struct$_ERC20Storage_$3088_storage_ptr","typeString":"struct ERC20Upgradeable.ERC20Storage storage pointer"}},"id":3156,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"2847:5:12","memberName":"_name","nodeType":"MemberAccess","referencedDeclaration":3085,"src":"2845:7:12","typeDescriptions":{"typeIdentifier":"t_string_storage","typeString":"string storage ref"}},"functionReturnParameters":3148,"id":3157,"nodeType":"Return","src":"2838:14:12"}]},"documentation":{"id":3144,"nodeType":"StructuredDocumentation","src":"2656:54:12","text":" @dev Returns the name of the token."},"functionSelector":"06fdde03","id":3159,"implemented":true,"kind":"function","modifiers":[],"name":"name","nameLocation":"2724:4:12","nodeType":"FunctionDefinition","parameters":{"id":3145,"nodeType":"ParameterList","parameters":[],"src":"2728:2:12"},"returnParameters":{"id":3148,"nodeType":"ParameterList","parameters":[{"constant":false,"id":3147,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":3159,"src":"2760:13:12","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string"},"typeName":{"id":3146,"name":"string","nodeType":"ElementaryTypeName","src":"2760:6:12","typeDescriptions":{"typeIdentifier":"t_string_storage_ptr","typeString":"string"}},"visibility":"internal"}],"src":"2759:15:12"},"scope":3664,"src":"2715:144:12","stateMutability":"view","virtual":true,"visibility":"public"},{"baseFunctions":[9404],"body":{"id":3174,"nodeType":"Block","src":"3034:86:12","statements":[{"assignments":[3167],"declarations":[{"constant":false,"id":3167,"mutability":"mutable","name":"$","nameLocation":"3065:1:12","nodeType":"VariableDeclaration","scope":3174,"src":"3044:22:12","stateVariable":false,"storageLocation":"storage","typeDescriptions":{"typeIdentifier":"t_struct$_ERC20Storage_$3088_storage_ptr","typeString":"struct ERC20Upgradeable.ERC20Storage"},"typeName":{"id":3166,"nodeType":"UserDefinedTypeName","pathNode":{"id":3165,"name":"ERC20Storage","nameLocations":["3044:12:12"],"nodeType":"IdentifierPath","referencedDeclaration":3088,"src":"3044:12:12"},"referencedDeclaration":3088,"src":"3044:12:12","typeDescriptions":{"typeIdentifier":"t_struct$_ERC20Storage_$3088_storage_ptr","typeString":"struct ERC20Upgradeable.ERC20Storage"}},"visibility":"internal"}],"id":3170,"initialValue":{"arguments":[],"expression":{"argumentTypes":[],"id":3168,"name":"_getERC20Storage","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3099,"src":"3069:16:12","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$__$returns$_t_struct$_ERC20Storage_$3088_storage_ptr_$","typeString":"function () pure returns (struct ERC20Upgradeable.ERC20Storage storage pointer)"}},"id":3169,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"3069:18:12","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_struct$_ERC20Storage_$3088_storage_ptr","typeString":"struct ERC20Upgradeable.ERC20Storage storage pointer"}},"nodeType":"VariableDeclarationStatement","src":"3044:43:12"},{"expression":{"expression":{"id":3171,"name":"$","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3167,"src":"3104:1:12","typeDescriptions":{"typeIdentifier":"t_struct$_ERC20Storage_$3088_storage_ptr","typeString":"struct ERC20Upgradeable.ERC20Storage storage pointer"}},"id":3172,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"3106:7:12","memberName":"_symbol","nodeType":"MemberAccess","referencedDeclaration":3087,"src":"3104:9:12","typeDescriptions":{"typeIdentifier":"t_string_storage","typeString":"string storage ref"}},"functionReturnParameters":3164,"id":3173,"nodeType":"Return","src":"3097:16:12"}]},"documentation":{"id":3160,"nodeType":"StructuredDocumentation","src":"2865:102:12","text":" @dev Returns the symbol of the token, usually a shorter version of the\n name."},"functionSelector":"95d89b41","id":3175,"implemented":true,"kind":"function","modifiers":[],"name":"symbol","nameLocation":"2981:6:12","nodeType":"FunctionDefinition","parameters":{"id":3161,"nodeType":"ParameterList","parameters":[],"src":"2987:2:12"},"returnParameters":{"id":3164,"nodeType":"ParameterList","parameters":[{"constant":false,"id":3163,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":3175,"src":"3019:13:12","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string"},"typeName":{"id":3162,"name":"string","nodeType":"ElementaryTypeName","src":"3019:6:12","typeDescriptions":{"typeIdentifier":"t_string_storage_ptr","typeString":"string"}},"visibility":"internal"}],"src":"3018:15:12"},"scope":3664,"src":"2972:148:12","stateMutability":"view","virtual":true,"visibility":"public"},{"baseFunctions":[9410],"body":{"id":3183,"nodeType":"Block","src":"3809:26:12","statements":[{"expression":{"hexValue":"3138","id":3181,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"3826:2:12","typeDescriptions":{"typeIdentifier":"t_rational_18_by_1","typeString":"int_const 18"},"value":"18"},"functionReturnParameters":3180,"id":3182,"nodeType":"Return","src":"3819:9:12"}]},"documentation":{"id":3176,"nodeType":"StructuredDocumentation","src":"3126:622:12","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 default value returned by this function, unless\n it's 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":3184,"implemented":true,"kind":"function","modifiers":[],"name":"decimals","nameLocation":"3762:8:12","nodeType":"FunctionDefinition","parameters":{"id":3177,"nodeType":"ParameterList","parameters":[],"src":"3770:2:12"},"returnParameters":{"id":3180,"nodeType":"ParameterList","parameters":[{"constant":false,"id":3179,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":3184,"src":"3802:5:12","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"},"typeName":{"id":3178,"name":"uint8","nodeType":"ElementaryTypeName","src":"3802:5:12","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}},"visibility":"internal"}],"src":"3801:7:12"},"scope":3664,"src":"3753:82:12","stateMutability":"view","virtual":true,"visibility":"public"},{"baseFunctions":[8628],"body":{"id":3199,"nodeType":"Block","src":"3929:91:12","statements":[{"assignments":[3192],"declarations":[{"constant":false,"id":3192,"mutability":"mutable","name":"$","nameLocation":"3960:1:12","nodeType":"VariableDeclaration","scope":3199,"src":"3939:22:12","stateVariable":false,"storageLocation":"storage","typeDescriptions":{"typeIdentifier":"t_struct$_ERC20Storage_$3088_storage_ptr","typeString":"struct ERC20Upgradeable.ERC20Storage"},"typeName":{"id":3191,"nodeType":"UserDefinedTypeName","pathNode":{"id":3190,"name":"ERC20Storage","nameLocations":["3939:12:12"],"nodeType":"IdentifierPath","referencedDeclaration":3088,"src":"3939:12:12"},"referencedDeclaration":3088,"src":"3939:12:12","typeDescriptions":{"typeIdentifier":"t_struct$_ERC20Storage_$3088_storage_ptr","typeString":"struct ERC20Upgradeable.ERC20Storage"}},"visibility":"internal"}],"id":3195,"initialValue":{"arguments":[],"expression":{"argumentTypes":[],"id":3193,"name":"_getERC20Storage","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3099,"src":"3964:16:12","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$__$returns$_t_struct$_ERC20Storage_$3088_storage_ptr_$","typeString":"function () pure returns (struct ERC20Upgradeable.ERC20Storage storage pointer)"}},"id":3194,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"3964:18:12","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_struct$_ERC20Storage_$3088_storage_ptr","typeString":"struct ERC20Upgradeable.ERC20Storage storage pointer"}},"nodeType":"VariableDeclarationStatement","src":"3939:43:12"},{"expression":{"expression":{"id":3196,"name":"$","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3192,"src":"3999:1:12","typeDescriptions":{"typeIdentifier":"t_struct$_ERC20Storage_$3088_storage_ptr","typeString":"struct ERC20Upgradeable.ERC20Storage storage pointer"}},"id":3197,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"4001:12:12","memberName":"_totalSupply","nodeType":"MemberAccess","referencedDeclaration":3083,"src":"3999:14:12","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"functionReturnParameters":3189,"id":3198,"nodeType":"Return","src":"3992:21:12"}]},"documentation":{"id":3185,"nodeType":"StructuredDocumentation","src":"3841:22:12","text":"@inheritdoc IERC20"},"functionSelector":"18160ddd","id":3200,"implemented":true,"kind":"function","modifiers":[],"name":"totalSupply","nameLocation":"3877:11:12","nodeType":"FunctionDefinition","parameters":{"id":3186,"nodeType":"ParameterList","parameters":[],"src":"3888:2:12"},"returnParameters":{"id":3189,"nodeType":"ParameterList","parameters":[{"constant":false,"id":3188,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":3200,"src":"3920:7:12","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":3187,"name":"uint256","nodeType":"ElementaryTypeName","src":"3920:7:12","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"3919:9:12"},"scope":3664,"src":"3868:152:12","stateMutability":"view","virtual":true,"visibility":"public"},{"baseFunctions":[8636],"body":{"id":3219,"nodeType":"Block","src":"4127:97:12","statements":[{"assignments":[3210],"declarations":[{"constant":false,"id":3210,"mutability":"mutable","name":"$","nameLocation":"4158:1:12","nodeType":"VariableDeclaration","scope":3219,"src":"4137:22:12","stateVariable":false,"storageLocation":"storage","typeDescriptions":{"typeIdentifier":"t_struct$_ERC20Storage_$3088_storage_ptr","typeString":"struct ERC20Upgradeable.ERC20Storage"},"typeName":{"id":3209,"nodeType":"UserDefinedTypeName","pathNode":{"id":3208,"name":"ERC20Storage","nameLocations":["4137:12:12"],"nodeType":"IdentifierPath","referencedDeclaration":3088,"src":"4137:12:12"},"referencedDeclaration":3088,"src":"4137:12:12","typeDescriptions":{"typeIdentifier":"t_struct$_ERC20Storage_$3088_storage_ptr","typeString":"struct ERC20Upgradeable.ERC20Storage"}},"visibility":"internal"}],"id":3213,"initialValue":{"arguments":[],"expression":{"argumentTypes":[],"id":3211,"name":"_getERC20Storage","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3099,"src":"4162:16:12","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$__$returns$_t_struct$_ERC20Storage_$3088_storage_ptr_$","typeString":"function () pure returns (struct ERC20Upgradeable.ERC20Storage storage pointer)"}},"id":3212,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"4162:18:12","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_struct$_ERC20Storage_$3088_storage_ptr","typeString":"struct ERC20Upgradeable.ERC20Storage storage pointer"}},"nodeType":"VariableDeclarationStatement","src":"4137:43:12"},{"expression":{"baseExpression":{"expression":{"id":3214,"name":"$","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3210,"src":"4197:1:12","typeDescriptions":{"typeIdentifier":"t_struct$_ERC20Storage_$3088_storage_ptr","typeString":"struct ERC20Upgradeable.ERC20Storage storage pointer"}},"id":3215,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"4199:9:12","memberName":"_balances","nodeType":"MemberAccess","referencedDeclaration":3075,"src":"4197:11:12","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_uint256_$","typeString":"mapping(address => uint256)"}},"id":3217,"indexExpression":{"id":3216,"name":"account","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3203,"src":"4209:7:12","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"4197:20:12","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"functionReturnParameters":3207,"id":3218,"nodeType":"Return","src":"4190:27:12"}]},"documentation":{"id":3201,"nodeType":"StructuredDocumentation","src":"4026:22:12","text":"@inheritdoc IERC20"},"functionSelector":"70a08231","id":3220,"implemented":true,"kind":"function","modifiers":[],"name":"balanceOf","nameLocation":"4062:9:12","nodeType":"FunctionDefinition","parameters":{"id":3204,"nodeType":"ParameterList","parameters":[{"constant":false,"id":3203,"mutability":"mutable","name":"account","nameLocation":"4080:7:12","nodeType":"VariableDeclaration","scope":3220,"src":"4072:15:12","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":3202,"name":"address","nodeType":"ElementaryTypeName","src":"4072:7:12","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"4071:17:12"},"returnParameters":{"id":3207,"nodeType":"ParameterList","parameters":[{"constant":false,"id":3206,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":3220,"src":"4118:7:12","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":3205,"name":"uint256","nodeType":"ElementaryTypeName","src":"4118:7:12","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"4117:9:12"},"scope":3664,"src":"4053:171:12","stateMutability":"view","virtual":true,"visibility":"public"},{"baseFunctions":[8646],"body":{"id":3243,"nodeType":"Block","src":"4494:103:12","statements":[{"assignments":[3231],"declarations":[{"constant":false,"id":3231,"mutability":"mutable","name":"owner","nameLocation":"4512:5:12","nodeType":"VariableDeclaration","scope":3243,"src":"4504:13:12","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":3230,"name":"address","nodeType":"ElementaryTypeName","src":"4504:7:12","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"id":3234,"initialValue":{"arguments":[],"expression":{"argumentTypes":[],"id":3232,"name":"_msgSender","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4456,"src":"4520:10:12","typeDescriptions":{"typeIdentifier":"t_function_internal_view$__$returns$_t_address_$","typeString":"function () view returns (address)"}},"id":3233,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"4520:12:12","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"VariableDeclarationStatement","src":"4504:28:12"},{"expression":{"arguments":[{"id":3236,"name":"owner","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3231,"src":"4552:5:12","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":3237,"name":"to","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3223,"src":"4559:2:12","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":3238,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3225,"src":"4563:5:12","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":3235,"name":"_transfer","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3371,"src":"4542:9:12","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_address_$_t_address_$_t_uint256_$returns$__$","typeString":"function (address,address,uint256)"}},"id":3239,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"4542:27:12","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":3240,"nodeType":"ExpressionStatement","src":"4542:27:12"},{"expression":{"hexValue":"74727565","id":3241,"isConstant":false,"isLValue":false,"isPure":true,"kind":"bool","lValueRequested":false,"nodeType":"Literal","src":"4586:4:12","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"value":"true"},"functionReturnParameters":3229,"id":3242,"nodeType":"Return","src":"4579:11:12"}]},"documentation":{"id":3221,"nodeType":"StructuredDocumentation","src":"4230:184:12","text":" @dev See {IERC20-transfer}.\n Requirements:\n - `to` cannot be the zero address.\n - the caller must have a balance of at least `value`."},"functionSelector":"a9059cbb","id":3244,"implemented":true,"kind":"function","modifiers":[],"name":"transfer","nameLocation":"4428:8:12","nodeType":"FunctionDefinition","parameters":{"id":3226,"nodeType":"ParameterList","parameters":[{"constant":false,"id":3223,"mutability":"mutable","name":"to","nameLocation":"4445:2:12","nodeType":"VariableDeclaration","scope":3244,"src":"4437:10:12","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":3222,"name":"address","nodeType":"ElementaryTypeName","src":"4437:7:12","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":3225,"mutability":"mutable","name":"value","nameLocation":"4457:5:12","nodeType":"VariableDeclaration","scope":3244,"src":"4449:13:12","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":3224,"name":"uint256","nodeType":"ElementaryTypeName","src":"4449:7:12","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"4436:27:12"},"returnParameters":{"id":3229,"nodeType":"ParameterList","parameters":[{"constant":false,"id":3228,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":3244,"src":"4488:4:12","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":3227,"name":"bool","nodeType":"ElementaryTypeName","src":"4488:4:12","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"}],"src":"4487:6:12"},"scope":3664,"src":"4419:178:12","stateMutability":"nonpayable","virtual":true,"visibility":"public"},{"baseFunctions":[8656],"body":{"id":3267,"nodeType":"Block","src":"4719:106:12","statements":[{"assignments":[3256],"declarations":[{"constant":false,"id":3256,"mutability":"mutable","name":"$","nameLocation":"4750:1:12","nodeType":"VariableDeclaration","scope":3267,"src":"4729:22:12","stateVariable":false,"storageLocation":"storage","typeDescriptions":{"typeIdentifier":"t_struct$_ERC20Storage_$3088_storage_ptr","typeString":"struct ERC20Upgradeable.ERC20Storage"},"typeName":{"id":3255,"nodeType":"UserDefinedTypeName","pathNode":{"id":3254,"name":"ERC20Storage","nameLocations":["4729:12:12"],"nodeType":"IdentifierPath","referencedDeclaration":3088,"src":"4729:12:12"},"referencedDeclaration":3088,"src":"4729:12:12","typeDescriptions":{"typeIdentifier":"t_struct$_ERC20Storage_$3088_storage_ptr","typeString":"struct ERC20Upgradeable.ERC20Storage"}},"visibility":"internal"}],"id":3259,"initialValue":{"arguments":[],"expression":{"argumentTypes":[],"id":3257,"name":"_getERC20Storage","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3099,"src":"4754:16:12","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$__$returns$_t_struct$_ERC20Storage_$3088_storage_ptr_$","typeString":"function () pure returns (struct ERC20Upgradeable.ERC20Storage storage pointer)"}},"id":3258,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"4754:18:12","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_struct$_ERC20Storage_$3088_storage_ptr","typeString":"struct ERC20Upgradeable.ERC20Storage storage pointer"}},"nodeType":"VariableDeclarationStatement","src":"4729:43:12"},{"expression":{"baseExpression":{"baseExpression":{"expression":{"id":3260,"name":"$","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3256,"src":"4789:1:12","typeDescriptions":{"typeIdentifier":"t_struct$_ERC20Storage_$3088_storage_ptr","typeString":"struct ERC20Upgradeable.ERC20Storage storage pointer"}},"id":3261,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"4791:11:12","memberName":"_allowances","nodeType":"MemberAccess","referencedDeclaration":3081,"src":"4789:13:12","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_mapping$_t_address_$_t_uint256_$_$","typeString":"mapping(address => mapping(address => uint256))"}},"id":3263,"indexExpression":{"id":3262,"name":"owner","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3247,"src":"4803:5:12","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"4789:20:12","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_uint256_$","typeString":"mapping(address => uint256)"}},"id":3265,"indexExpression":{"id":3264,"name":"spender","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3249,"src":"4810:7:12","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"4789:29:12","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"functionReturnParameters":3253,"id":3266,"nodeType":"Return","src":"4782:36:12"}]},"documentation":{"id":3245,"nodeType":"StructuredDocumentation","src":"4603:22:12","text":"@inheritdoc IERC20"},"functionSelector":"dd62ed3e","id":3268,"implemented":true,"kind":"function","modifiers":[],"name":"allowance","nameLocation":"4639:9:12","nodeType":"FunctionDefinition","parameters":{"id":3250,"nodeType":"ParameterList","parameters":[{"constant":false,"id":3247,"mutability":"mutable","name":"owner","nameLocation":"4657:5:12","nodeType":"VariableDeclaration","scope":3268,"src":"4649:13:12","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":3246,"name":"address","nodeType":"ElementaryTypeName","src":"4649:7:12","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":3249,"mutability":"mutable","name":"spender","nameLocation":"4672:7:12","nodeType":"VariableDeclaration","scope":3268,"src":"4664:15:12","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":3248,"name":"address","nodeType":"ElementaryTypeName","src":"4664:7:12","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"4648:32:12"},"returnParameters":{"id":3253,"nodeType":"ParameterList","parameters":[{"constant":false,"id":3252,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":3268,"src":"4710:7:12","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":3251,"name":"uint256","nodeType":"ElementaryTypeName","src":"4710:7:12","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"4709:9:12"},"scope":3664,"src":"4630:195:12","stateMutability":"view","virtual":true,"visibility":"public"},{"baseFunctions":[8666],"body":{"id":3291,"nodeType":"Block","src":"5211:107:12","statements":[{"assignments":[3279],"declarations":[{"constant":false,"id":3279,"mutability":"mutable","name":"owner","nameLocation":"5229:5:12","nodeType":"VariableDeclaration","scope":3291,"src":"5221:13:12","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":3278,"name":"address","nodeType":"ElementaryTypeName","src":"5221:7:12","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"id":3282,"initialValue":{"arguments":[],"expression":{"argumentTypes":[],"id":3280,"name":"_msgSender","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4456,"src":"5237:10:12","typeDescriptions":{"typeIdentifier":"t_function_internal_view$__$returns$_t_address_$","typeString":"function () view returns (address)"}},"id":3281,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"5237:12:12","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"VariableDeclarationStatement","src":"5221:28:12"},{"expression":{"arguments":[{"id":3284,"name":"owner","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3279,"src":"5268:5:12","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":3285,"name":"spender","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3271,"src":"5275:7:12","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":3286,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3273,"src":"5284:5:12","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":3283,"name":"_approve","nodeType":"Identifier","overloadedDeclarations":[3547,3615],"referencedDeclaration":3547,"src":"5259:8:12","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_address_$_t_address_$_t_uint256_$returns$__$","typeString":"function (address,address,uint256)"}},"id":3287,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"5259:31:12","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":3288,"nodeType":"ExpressionStatement","src":"5259:31:12"},{"expression":{"hexValue":"74727565","id":3289,"isConstant":false,"isLValue":false,"isPure":true,"kind":"bool","lValueRequested":false,"nodeType":"Literal","src":"5307:4:12","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"value":"true"},"functionReturnParameters":3277,"id":3290,"nodeType":"Return","src":"5300:11:12"}]},"documentation":{"id":3269,"nodeType":"StructuredDocumentation","src":"4831:296:12","text":" @dev See {IERC20-approve}.\n NOTE: If `value` is the maximum `uint256`, the allowance is not updated on\n `transferFrom`. This is semantically equivalent to an infinite approval.\n Requirements:\n - `spender` cannot be the zero address."},"functionSelector":"095ea7b3","id":3292,"implemented":true,"kind":"function","modifiers":[],"name":"approve","nameLocation":"5141:7:12","nodeType":"FunctionDefinition","parameters":{"id":3274,"nodeType":"ParameterList","parameters":[{"constant":false,"id":3271,"mutability":"mutable","name":"spender","nameLocation":"5157:7:12","nodeType":"VariableDeclaration","scope":3292,"src":"5149:15:12","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":3270,"name":"address","nodeType":"ElementaryTypeName","src":"5149:7:12","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":3273,"mutability":"mutable","name":"value","nameLocation":"5174:5:12","nodeType":"VariableDeclaration","scope":3292,"src":"5166:13:12","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":3272,"name":"uint256","nodeType":"ElementaryTypeName","src":"5166:7:12","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"5148:32:12"},"returnParameters":{"id":3277,"nodeType":"ParameterList","parameters":[{"constant":false,"id":3276,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":3292,"src":"5205:4:12","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":3275,"name":"bool","nodeType":"ElementaryTypeName","src":"5205:4:12","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"}],"src":"5204:6:12"},"scope":3664,"src":"5132:186:12","stateMutability":"nonpayable","virtual":true,"visibility":"public"},{"baseFunctions":[8678],"body":{"id":3323,"nodeType":"Block","src":"6003:151:12","statements":[{"assignments":[3305],"declarations":[{"constant":false,"id":3305,"mutability":"mutable","name":"spender","nameLocation":"6021:7:12","nodeType":"VariableDeclaration","scope":3323,"src":"6013:15:12","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":3304,"name":"address","nodeType":"ElementaryTypeName","src":"6013:7:12","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"id":3308,"initialValue":{"arguments":[],"expression":{"argumentTypes":[],"id":3306,"name":"_msgSender","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4456,"src":"6031:10:12","typeDescriptions":{"typeIdentifier":"t_function_internal_view$__$returns$_t_address_$","typeString":"function () view returns (address)"}},"id":3307,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"6031:12:12","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"VariableDeclarationStatement","src":"6013:30:12"},{"expression":{"arguments":[{"id":3310,"name":"from","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3295,"src":"6069:4:12","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":3311,"name":"spender","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3305,"src":"6075:7:12","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":3312,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3299,"src":"6084:5:12","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":3309,"name":"_spendAllowance","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3663,"src":"6053:15:12","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_address_$_t_address_$_t_uint256_$returns$__$","typeString":"function (address,address,uint256)"}},"id":3313,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"6053:37:12","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":3314,"nodeType":"ExpressionStatement","src":"6053:37:12"},{"expression":{"arguments":[{"id":3316,"name":"from","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3295,"src":"6110:4:12","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":3317,"name":"to","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3297,"src":"6116:2:12","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":3318,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3299,"src":"6120:5:12","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":3315,"name":"_transfer","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3371,"src":"6100:9:12","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_address_$_t_address_$_t_uint256_$returns$__$","typeString":"function (address,address,uint256)"}},"id":3319,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"6100:26:12","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":3320,"nodeType":"ExpressionStatement","src":"6100:26:12"},{"expression":{"hexValue":"74727565","id":3321,"isConstant":false,"isLValue":false,"isPure":true,"kind":"bool","lValueRequested":false,"nodeType":"Literal","src":"6143:4:12","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"value":"true"},"functionReturnParameters":3303,"id":3322,"nodeType":"Return","src":"6136:11:12"}]},"documentation":{"id":3293,"nodeType":"StructuredDocumentation","src":"5324:581:12","text":" @dev See {IERC20-transferFrom}.\n Skips emitting an {Approval} event indicating an allowance update. This is not\n required by the ERC. See {xref-ERC20-_approve-address-address-uint256-bool-}[_approve].\n NOTE: Does not update the allowance if the current allowance\n is the maximum `uint256`.\n Requirements:\n - `from` and `to` cannot be the zero address.\n - `from` must have a balance of at least `value`.\n - the caller must have allowance for ``from``'s tokens of at least\n `value`."},"functionSelector":"23b872dd","id":3324,"implemented":true,"kind":"function","modifiers":[],"name":"transferFrom","nameLocation":"5919:12:12","nodeType":"FunctionDefinition","parameters":{"id":3300,"nodeType":"ParameterList","parameters":[{"constant":false,"id":3295,"mutability":"mutable","name":"from","nameLocation":"5940:4:12","nodeType":"VariableDeclaration","scope":3324,"src":"5932:12:12","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":3294,"name":"address","nodeType":"ElementaryTypeName","src":"5932:7:12","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":3297,"mutability":"mutable","name":"to","nameLocation":"5954:2:12","nodeType":"VariableDeclaration","scope":3324,"src":"5946:10:12","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":3296,"name":"address","nodeType":"ElementaryTypeName","src":"5946:7:12","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":3299,"mutability":"mutable","name":"value","nameLocation":"5966:5:12","nodeType":"VariableDeclaration","scope":3324,"src":"5958:13:12","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":3298,"name":"uint256","nodeType":"ElementaryTypeName","src":"5958:7:12","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"5931:41:12"},"returnParameters":{"id":3303,"nodeType":"ParameterList","parameters":[{"constant":false,"id":3302,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":3324,"src":"5997:4:12","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":3301,"name":"bool","nodeType":"ElementaryTypeName","src":"5997:4:12","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"}],"src":"5996:6:12"},"scope":3664,"src":"5910:244:12","stateMutability":"nonpayable","virtual":true,"visibility":"public"},{"body":{"id":3370,"nodeType":"Block","src":"6596:231:12","statements":[{"condition":{"commonType":{"typeIdentifier":"t_address","typeString":"address"},"id":3339,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":3334,"name":"from","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3327,"src":"6610:4:12","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"arguments":[{"hexValue":"30","id":3337,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"6626:1:12","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":3336,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"6618:7:12","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":3335,"name":"address","nodeType":"ElementaryTypeName","src":"6618:7:12","typeDescriptions":{}}},"id":3338,"isConstant":false,"isLValue":false,"isPure":true,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"6618:10:12","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"src":"6610:18:12","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":3348,"nodeType":"IfStatement","src":"6606:86:12","trueBody":{"id":3347,"nodeType":"Block","src":"6630:62:12","statements":[{"errorCall":{"arguments":[{"arguments":[{"hexValue":"30","id":3343,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"6678:1:12","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":3342,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"6670:7:12","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":3341,"name":"address","nodeType":"ElementaryTypeName","src":"6670:7:12","typeDescriptions":{}}},"id":3344,"isConstant":false,"isLValue":false,"isPure":true,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"6670:10:12","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"id":3340,"name":"ERC20InvalidSender","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7154,"src":"6651:18:12","typeDescriptions":{"typeIdentifier":"t_function_error_pure$_t_address_$returns$_t_error_$","typeString":"function (address) pure returns (error)"}},"id":3345,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"6651:30:12","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_error","typeString":"error"}},"id":3346,"nodeType":"RevertStatement","src":"6644:37:12"}]}},{"condition":{"commonType":{"typeIdentifier":"t_address","typeString":"address"},"id":3354,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":3349,"name":"to","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3329,"src":"6705:2:12","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"arguments":[{"hexValue":"30","id":3352,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"6719:1:12","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":3351,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"6711:7:12","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":3350,"name":"address","nodeType":"ElementaryTypeName","src":"6711:7:12","typeDescriptions":{}}},"id":3353,"isConstant":false,"isLValue":false,"isPure":true,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"6711:10:12","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"src":"6705:16:12","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":3363,"nodeType":"IfStatement","src":"6701:86:12","trueBody":{"id":3362,"nodeType":"Block","src":"6723:64:12","statements":[{"errorCall":{"arguments":[{"arguments":[{"hexValue":"30","id":3358,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"6773:1:12","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":3357,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"6765:7:12","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":3356,"name":"address","nodeType":"ElementaryTypeName","src":"6765:7:12","typeDescriptions":{}}},"id":3359,"isConstant":false,"isLValue":false,"isPure":true,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"6765:10:12","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"id":3355,"name":"ERC20InvalidReceiver","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7159,"src":"6744:20:12","typeDescriptions":{"typeIdentifier":"t_function_error_pure$_t_address_$returns$_t_error_$","typeString":"function (address) pure returns (error)"}},"id":3360,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"6744:32:12","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_error","typeString":"error"}},"id":3361,"nodeType":"RevertStatement","src":"6737:39:12"}]}},{"expression":{"arguments":[{"id":3365,"name":"from","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3327,"src":"6804:4:12","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":3366,"name":"to","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3329,"src":"6810:2:12","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":3367,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3331,"src":"6814:5:12","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":3364,"name":"_update","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3463,"src":"6796:7:12","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_address_$_t_address_$_t_uint256_$returns$__$","typeString":"function (address,address,uint256)"}},"id":3368,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"6796:24:12","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":3369,"nodeType":"ExpressionStatement","src":"6796:24:12"}]},"documentation":{"id":3325,"nodeType":"StructuredDocumentation","src":"6160:362:12","text":" @dev Moves a `value` amount of tokens from `from` to `to`.\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 NOTE: This function is not virtual, {_update} should be overridden instead."},"id":3371,"implemented":true,"kind":"function","modifiers":[],"name":"_transfer","nameLocation":"6536:9:12","nodeType":"FunctionDefinition","parameters":{"id":3332,"nodeType":"ParameterList","parameters":[{"constant":false,"id":3327,"mutability":"mutable","name":"from","nameLocation":"6554:4:12","nodeType":"VariableDeclaration","scope":3371,"src":"6546:12:12","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":3326,"name":"address","nodeType":"ElementaryTypeName","src":"6546:7:12","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":3329,"mutability":"mutable","name":"to","nameLocation":"6568:2:12","nodeType":"VariableDeclaration","scope":3371,"src":"6560:10:12","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":3328,"name":"address","nodeType":"ElementaryTypeName","src":"6560:7:12","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":3331,"mutability":"mutable","name":"value","nameLocation":"6580:5:12","nodeType":"VariableDeclaration","scope":3371,"src":"6572:13:12","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":3330,"name":"uint256","nodeType":"ElementaryTypeName","src":"6572:7:12","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"6545:41:12"},"returnParameters":{"id":3333,"nodeType":"ParameterList","parameters":[],"src":"6596:0:12"},"scope":3664,"src":"6527:300:12","stateMutability":"nonpayable","virtual":false,"visibility":"internal"},{"body":{"id":3462,"nodeType":"Block","src":"7217:1095:12","statements":[{"assignments":[3383],"declarations":[{"constant":false,"id":3383,"mutability":"mutable","name":"$","nameLocation":"7248:1:12","nodeType":"VariableDeclaration","scope":3462,"src":"7227:22:12","stateVariable":false,"storageLocation":"storage","typeDescriptions":{"typeIdentifier":"t_struct$_ERC20Storage_$3088_storage_ptr","typeString":"struct ERC20Upgradeable.ERC20Storage"},"typeName":{"id":3382,"nodeType":"UserDefinedTypeName","pathNode":{"id":3381,"name":"ERC20Storage","nameLocations":["7227:12:12"],"nodeType":"IdentifierPath","referencedDeclaration":3088,"src":"7227:12:12"},"referencedDeclaration":3088,"src":"7227:12:12","typeDescriptions":{"typeIdentifier":"t_struct$_ERC20Storage_$3088_storage_ptr","typeString":"struct ERC20Upgradeable.ERC20Storage"}},"visibility":"internal"}],"id":3386,"initialValue":{"arguments":[],"expression":{"argumentTypes":[],"id":3384,"name":"_getERC20Storage","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3099,"src":"7252:16:12","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$__$returns$_t_struct$_ERC20Storage_$3088_storage_ptr_$","typeString":"function () pure returns (struct ERC20Upgradeable.ERC20Storage storage pointer)"}},"id":3385,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"7252:18:12","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_struct$_ERC20Storage_$3088_storage_ptr","typeString":"struct ERC20Upgradeable.ERC20Storage storage pointer"}},"nodeType":"VariableDeclarationStatement","src":"7227:43:12"},{"condition":{"commonType":{"typeIdentifier":"t_address","typeString":"address"},"id":3392,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":3387,"name":"from","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3374,"src":"7284:4:12","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"arguments":[{"hexValue":"30","id":3390,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"7300:1:12","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":3389,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"7292:7:12","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":3388,"name":"address","nodeType":"ElementaryTypeName","src":"7292:7:12","typeDescriptions":{}}},"id":3391,"isConstant":false,"isLValue":false,"isPure":true,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"7292:10:12","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"src":"7284:18:12","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"falseBody":{"id":3429,"nodeType":"Block","src":"7460:366:12","statements":[{"assignments":[3401],"declarations":[{"constant":false,"id":3401,"mutability":"mutable","name":"fromBalance","nameLocation":"7482:11:12","nodeType":"VariableDeclaration","scope":3429,"src":"7474:19:12","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":3400,"name":"uint256","nodeType":"ElementaryTypeName","src":"7474:7:12","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":3406,"initialValue":{"baseExpression":{"expression":{"id":3402,"name":"$","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3383,"src":"7496:1:12","typeDescriptions":{"typeIdentifier":"t_struct$_ERC20Storage_$3088_storage_ptr","typeString":"struct ERC20Upgradeable.ERC20Storage storage pointer"}},"id":3403,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"7498:9:12","memberName":"_balances","nodeType":"MemberAccess","referencedDeclaration":3075,"src":"7496:11:12","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_uint256_$","typeString":"mapping(address => uint256)"}},"id":3405,"indexExpression":{"id":3404,"name":"from","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3374,"src":"7508:4:12","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"7496:17:12","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"VariableDeclarationStatement","src":"7474:39:12"},{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":3409,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":3407,"name":"fromBalance","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3401,"src":"7531:11:12","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"<","rightExpression":{"id":3408,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3378,"src":"7545:5:12","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"7531:19:12","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":3417,"nodeType":"IfStatement","src":"7527:115:12","trueBody":{"id":3416,"nodeType":"Block","src":"7552:90:12","statements":[{"errorCall":{"arguments":[{"id":3411,"name":"from","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3374,"src":"7602:4:12","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":3412,"name":"fromBalance","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3401,"src":"7608:11:12","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"id":3413,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3378,"src":"7621:5:12","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":3410,"name":"ERC20InsufficientBalance","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7149,"src":"7577:24:12","typeDescriptions":{"typeIdentifier":"t_function_error_pure$_t_address_$_t_uint256_$_t_uint256_$returns$_t_error_$","typeString":"function (address,uint256,uint256) pure returns (error)"}},"id":3414,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"7577:50:12","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_error","typeString":"error"}},"id":3415,"nodeType":"RevertStatement","src":"7570:57:12"}]}},{"id":3428,"nodeType":"UncheckedBlock","src":"7655:161:12","statements":[{"expression":{"id":3426,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"baseExpression":{"expression":{"id":3418,"name":"$","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3383,"src":"7762:1:12","typeDescriptions":{"typeIdentifier":"t_struct$_ERC20Storage_$3088_storage_ptr","typeString":"struct ERC20Upgradeable.ERC20Storage storage pointer"}},"id":3421,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"7764:9:12","memberName":"_balances","nodeType":"MemberAccess","referencedDeclaration":3075,"src":"7762:11:12","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_uint256_$","typeString":"mapping(address => uint256)"}},"id":3422,"indexExpression":{"id":3420,"name":"from","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3374,"src":"7774:4:12","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"nodeType":"IndexAccess","src":"7762:17:12","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":3425,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":3423,"name":"fromBalance","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3401,"src":"7782:11:12","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"-","rightExpression":{"id":3424,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3378,"src":"7796:5:12","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"7782:19:12","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"7762:39:12","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":3427,"nodeType":"ExpressionStatement","src":"7762:39:12"}]}]},"id":3430,"nodeType":"IfStatement","src":"7280:546:12","trueBody":{"id":3399,"nodeType":"Block","src":"7304:150:12","statements":[{"expression":{"id":3397,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"expression":{"id":3393,"name":"$","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3383,"src":"7420:1:12","typeDescriptions":{"typeIdentifier":"t_struct$_ERC20Storage_$3088_storage_ptr","typeString":"struct ERC20Upgradeable.ERC20Storage storage pointer"}},"id":3395,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"memberLocation":"7422:12:12","memberName":"_totalSupply","nodeType":"MemberAccess","referencedDeclaration":3083,"src":"7420:14:12","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"+=","rightHandSide":{"id":3396,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3378,"src":"7438:5:12","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"7420:23:12","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":3398,"nodeType":"ExpressionStatement","src":"7420:23:12"}]}},{"condition":{"commonType":{"typeIdentifier":"t_address","typeString":"address"},"id":3436,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":3431,"name":"to","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3376,"src":"7840:2:12","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"arguments":[{"hexValue":"30","id":3434,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"7854:1:12","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":3433,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"7846:7:12","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":3432,"name":"address","nodeType":"ElementaryTypeName","src":"7846:7:12","typeDescriptions":{}}},"id":3435,"isConstant":false,"isLValue":false,"isPure":true,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"7846:10:12","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"src":"7840:16:12","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"falseBody":{"id":3454,"nodeType":"Block","src":"8057:208:12","statements":[{"id":3453,"nodeType":"UncheckedBlock","src":"8071:184:12","statements":[{"expression":{"id":3451,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"baseExpression":{"expression":{"id":3445,"name":"$","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3383,"src":"8216:1:12","typeDescriptions":{"typeIdentifier":"t_struct$_ERC20Storage_$3088_storage_ptr","typeString":"struct ERC20Upgradeable.ERC20Storage storage pointer"}},"id":3448,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"8218:9:12","memberName":"_balances","nodeType":"MemberAccess","referencedDeclaration":3075,"src":"8216:11:12","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_uint256_$","typeString":"mapping(address => uint256)"}},"id":3449,"indexExpression":{"id":3447,"name":"to","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3376,"src":"8228:2:12","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"nodeType":"IndexAccess","src":"8216:15:12","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"+=","rightHandSide":{"id":3450,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3378,"src":"8235:5:12","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"8216:24:12","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":3452,"nodeType":"ExpressionStatement","src":"8216:24:12"}]}]},"id":3455,"nodeType":"IfStatement","src":"7836:429:12","trueBody":{"id":3444,"nodeType":"Block","src":"7858:193:12","statements":[{"id":3443,"nodeType":"UncheckedBlock","src":"7872:169:12","statements":[{"expression":{"id":3441,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"expression":{"id":3437,"name":"$","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3383,"src":"8003:1:12","typeDescriptions":{"typeIdentifier":"t_struct$_ERC20Storage_$3088_storage_ptr","typeString":"struct ERC20Upgradeable.ERC20Storage storage pointer"}},"id":3439,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"memberLocation":"8005:12:12","memberName":"_totalSupply","nodeType":"MemberAccess","referencedDeclaration":3083,"src":"8003:14:12","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"-=","rightHandSide":{"id":3440,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3378,"src":"8021:5:12","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"8003:23:12","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":3442,"nodeType":"ExpressionStatement","src":"8003:23:12"}]}]}},{"eventCall":{"arguments":[{"id":3457,"name":"from","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3374,"src":"8289:4:12","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":3458,"name":"to","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3376,"src":"8295:2:12","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":3459,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3378,"src":"8299:5:12","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":3456,"name":"Transfer","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8613,"src":"8280:8:12","typeDescriptions":{"typeIdentifier":"t_function_event_nonpayable$_t_address_$_t_address_$_t_uint256_$returns$__$","typeString":"function (address,address,uint256)"}},"id":3460,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"8280:25:12","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":3461,"nodeType":"EmitStatement","src":"8275:30:12"}]},"documentation":{"id":3372,"nodeType":"StructuredDocumentation","src":"6833:304:12","text":" @dev Transfers a `value` amount of tokens from `from` to `to`, or alternatively mints (or burns) if `from`\n (or `to`) is the zero address. All customizations to transfers, mints, and burns should be done by overriding\n this function.\n Emits a {Transfer} event."},"id":3463,"implemented":true,"kind":"function","modifiers":[],"name":"_update","nameLocation":"7151:7:12","nodeType":"FunctionDefinition","parameters":{"id":3379,"nodeType":"ParameterList","parameters":[{"constant":false,"id":3374,"mutability":"mutable","name":"from","nameLocation":"7167:4:12","nodeType":"VariableDeclaration","scope":3463,"src":"7159:12:12","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":3373,"name":"address","nodeType":"ElementaryTypeName","src":"7159:7:12","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":3376,"mutability":"mutable","name":"to","nameLocation":"7181:2:12","nodeType":"VariableDeclaration","scope":3463,"src":"7173:10:12","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":3375,"name":"address","nodeType":"ElementaryTypeName","src":"7173:7:12","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":3378,"mutability":"mutable","name":"value","nameLocation":"7193:5:12","nodeType":"VariableDeclaration","scope":3463,"src":"7185:13:12","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":3377,"name":"uint256","nodeType":"ElementaryTypeName","src":"7185:7:12","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"7158:41:12"},"returnParameters":{"id":3380,"nodeType":"ParameterList","parameters":[],"src":"7217:0:12"},"scope":3664,"src":"7142:1170:12","stateMutability":"nonpayable","virtual":true,"visibility":"internal"},{"body":{"id":3495,"nodeType":"Block","src":"8711:152:12","statements":[{"condition":{"commonType":{"typeIdentifier":"t_address","typeString":"address"},"id":3476,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":3471,"name":"account","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3466,"src":"8725:7:12","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"arguments":[{"hexValue":"30","id":3474,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"8744:1:12","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":3473,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"8736:7:12","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":3472,"name":"address","nodeType":"ElementaryTypeName","src":"8736:7:12","typeDescriptions":{}}},"id":3475,"isConstant":false,"isLValue":false,"isPure":true,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"8736:10:12","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"src":"8725:21:12","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":3485,"nodeType":"IfStatement","src":"8721:91:12","trueBody":{"id":3484,"nodeType":"Block","src":"8748:64:12","statements":[{"errorCall":{"arguments":[{"arguments":[{"hexValue":"30","id":3480,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"8798:1:12","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":3479,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"8790:7:12","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":3478,"name":"address","nodeType":"ElementaryTypeName","src":"8790:7:12","typeDescriptions":{}}},"id":3481,"isConstant":false,"isLValue":false,"isPure":true,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"8790:10:12","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"id":3477,"name":"ERC20InvalidReceiver","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7159,"src":"8769:20:12","typeDescriptions":{"typeIdentifier":"t_function_error_pure$_t_address_$returns$_t_error_$","typeString":"function (address) pure returns (error)"}},"id":3482,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"8769:32:12","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_error","typeString":"error"}},"id":3483,"nodeType":"RevertStatement","src":"8762:39:12"}]}},{"expression":{"arguments":[{"arguments":[{"hexValue":"30","id":3489,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"8837:1:12","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":3488,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"8829:7:12","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":3487,"name":"address","nodeType":"ElementaryTypeName","src":"8829:7:12","typeDescriptions":{}}},"id":3490,"isConstant":false,"isLValue":false,"isPure":true,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"8829:10:12","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":3491,"name":"account","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3466,"src":"8841:7:12","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":3492,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3468,"src":"8850:5:12","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":3486,"name":"_update","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3463,"src":"8821:7:12","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_address_$_t_address_$_t_uint256_$returns$__$","typeString":"function (address,address,uint256)"}},"id":3493,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"8821:35:12","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":3494,"nodeType":"ExpressionStatement","src":"8821:35:12"}]},"documentation":{"id":3464,"nodeType":"StructuredDocumentation","src":"8318:332:12","text":" @dev Creates a `value` amount of tokens and assigns them to `account`, by transferring it from address(0).\n Relies on the `_update` mechanism\n Emits a {Transfer} event with `from` set to the zero address.\n NOTE: This function is not virtual, {_update} should be overridden instead."},"id":3496,"implemented":true,"kind":"function","modifiers":[],"name":"_mint","nameLocation":"8664:5:12","nodeType":"FunctionDefinition","parameters":{"id":3469,"nodeType":"ParameterList","parameters":[{"constant":false,"id":3466,"mutability":"mutable","name":"account","nameLocation":"8678:7:12","nodeType":"VariableDeclaration","scope":3496,"src":"8670:15:12","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":3465,"name":"address","nodeType":"ElementaryTypeName","src":"8670:7:12","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":3468,"mutability":"mutable","name":"value","nameLocation":"8695:5:12","nodeType":"VariableDeclaration","scope":3496,"src":"8687:13:12","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":3467,"name":"uint256","nodeType":"ElementaryTypeName","src":"8687:7:12","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"8669:32:12"},"returnParameters":{"id":3470,"nodeType":"ParameterList","parameters":[],"src":"8711:0:12"},"scope":3664,"src":"8655:208:12","stateMutability":"nonpayable","virtual":false,"visibility":"internal"},{"body":{"id":3528,"nodeType":"Block","src":"9237:150:12","statements":[{"condition":{"commonType":{"typeIdentifier":"t_address","typeString":"address"},"id":3509,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":3504,"name":"account","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3499,"src":"9251:7:12","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"arguments":[{"hexValue":"30","id":3507,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"9270:1:12","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":3506,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"9262:7:12","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":3505,"name":"address","nodeType":"ElementaryTypeName","src":"9262:7:12","typeDescriptions":{}}},"id":3508,"isConstant":false,"isLValue":false,"isPure":true,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"9262:10:12","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"src":"9251:21:12","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":3518,"nodeType":"IfStatement","src":"9247:89:12","trueBody":{"id":3517,"nodeType":"Block","src":"9274:62:12","statements":[{"errorCall":{"arguments":[{"arguments":[{"hexValue":"30","id":3513,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"9322:1:12","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":3512,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"9314:7:12","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":3511,"name":"address","nodeType":"ElementaryTypeName","src":"9314:7:12","typeDescriptions":{}}},"id":3514,"isConstant":false,"isLValue":false,"isPure":true,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"9314:10:12","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"id":3510,"name":"ERC20InvalidSender","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7154,"src":"9295:18:12","typeDescriptions":{"typeIdentifier":"t_function_error_pure$_t_address_$returns$_t_error_$","typeString":"function (address) pure returns (error)"}},"id":3515,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"9295:30:12","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_error","typeString":"error"}},"id":3516,"nodeType":"RevertStatement","src":"9288:37:12"}]}},{"expression":{"arguments":[{"id":3520,"name":"account","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3499,"src":"9353:7:12","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"arguments":[{"hexValue":"30","id":3523,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"9370:1:12","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":3522,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"9362:7:12","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":3521,"name":"address","nodeType":"ElementaryTypeName","src":"9362:7:12","typeDescriptions":{}}},"id":3524,"isConstant":false,"isLValue":false,"isPure":true,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"9362:10:12","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":3525,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3501,"src":"9374:5:12","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":3519,"name":"_update","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3463,"src":"9345:7:12","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_address_$_t_address_$_t_uint256_$returns$__$","typeString":"function (address,address,uint256)"}},"id":3526,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"9345:35:12","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":3527,"nodeType":"ExpressionStatement","src":"9345:35:12"}]},"documentation":{"id":3497,"nodeType":"StructuredDocumentation","src":"8869:307:12","text":" @dev Destroys a `value` amount of tokens from `account`, lowering the total supply.\n Relies on the `_update` mechanism.\n Emits a {Transfer} event with `to` set to the zero address.\n NOTE: This function is not virtual, {_update} should be overridden instead"},"id":3529,"implemented":true,"kind":"function","modifiers":[],"name":"_burn","nameLocation":"9190:5:12","nodeType":"FunctionDefinition","parameters":{"id":3502,"nodeType":"ParameterList","parameters":[{"constant":false,"id":3499,"mutability":"mutable","name":"account","nameLocation":"9204:7:12","nodeType":"VariableDeclaration","scope":3529,"src":"9196:15:12","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":3498,"name":"address","nodeType":"ElementaryTypeName","src":"9196:7:12","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":3501,"mutability":"mutable","name":"value","nameLocation":"9221:5:12","nodeType":"VariableDeclaration","scope":3529,"src":"9213:13:12","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":3500,"name":"uint256","nodeType":"ElementaryTypeName","src":"9213:7:12","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"9195:32:12"},"returnParameters":{"id":3503,"nodeType":"ParameterList","parameters":[],"src":"9237:0:12"},"scope":3664,"src":"9181:206:12","stateMutability":"nonpayable","virtual":false,"visibility":"internal"},{"body":{"id":3546,"nodeType":"Block","src":"9997:54:12","statements":[{"expression":{"arguments":[{"id":3540,"name":"owner","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3532,"src":"10016:5:12","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":3541,"name":"spender","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3534,"src":"10023:7:12","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":3542,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3536,"src":"10032:5:12","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"hexValue":"74727565","id":3543,"isConstant":false,"isLValue":false,"isPure":true,"kind":"bool","lValueRequested":false,"nodeType":"Literal","src":"10039:4:12","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"value":"true"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_bool","typeString":"bool"}],"id":3539,"name":"_approve","nodeType":"Identifier","overloadedDeclarations":[3547,3615],"referencedDeclaration":3615,"src":"10007:8:12","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_address_$_t_address_$_t_uint256_$_t_bool_$returns$__$","typeString":"function (address,address,uint256,bool)"}},"id":3544,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"10007:37:12","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":3545,"nodeType":"ExpressionStatement","src":"10007:37:12"}]},"documentation":{"id":3530,"nodeType":"StructuredDocumentation","src":"9393:525:12","text":" @dev Sets `value` 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.\n Overrides to this logic should be done to the variant with an additional `bool emitEvent` argument."},"id":3547,"implemented":true,"kind":"function","modifiers":[],"name":"_approve","nameLocation":"9932:8:12","nodeType":"FunctionDefinition","parameters":{"id":3537,"nodeType":"ParameterList","parameters":[{"constant":false,"id":3532,"mutability":"mutable","name":"owner","nameLocation":"9949:5:12","nodeType":"VariableDeclaration","scope":3547,"src":"9941:13:12","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":3531,"name":"address","nodeType":"ElementaryTypeName","src":"9941:7:12","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":3534,"mutability":"mutable","name":"spender","nameLocation":"9964:7:12","nodeType":"VariableDeclaration","scope":3547,"src":"9956:15:12","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":3533,"name":"address","nodeType":"ElementaryTypeName","src":"9956:7:12","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":3536,"mutability":"mutable","name":"value","nameLocation":"9981:5:12","nodeType":"VariableDeclaration","scope":3547,"src":"9973:13:12","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":3535,"name":"uint256","nodeType":"ElementaryTypeName","src":"9973:7:12","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"9940:47:12"},"returnParameters":{"id":3538,"nodeType":"ParameterList","parameters":[],"src":"9997:0:12"},"scope":3664,"src":"9923:128:12","stateMutability":"nonpayable","virtual":false,"visibility":"internal"},{"body":{"id":3614,"nodeType":"Block","src":"10998:389:12","statements":[{"assignments":[3561],"declarations":[{"constant":false,"id":3561,"mutability":"mutable","name":"$","nameLocation":"11029:1:12","nodeType":"VariableDeclaration","scope":3614,"src":"11008:22:12","stateVariable":false,"storageLocation":"storage","typeDescriptions":{"typeIdentifier":"t_struct$_ERC20Storage_$3088_storage_ptr","typeString":"struct ERC20Upgradeable.ERC20Storage"},"typeName":{"id":3560,"nodeType":"UserDefinedTypeName","pathNode":{"id":3559,"name":"ERC20Storage","nameLocations":["11008:12:12"],"nodeType":"IdentifierPath","referencedDeclaration":3088,"src":"11008:12:12"},"referencedDeclaration":3088,"src":"11008:12:12","typeDescriptions":{"typeIdentifier":"t_struct$_ERC20Storage_$3088_storage_ptr","typeString":"struct ERC20Upgradeable.ERC20Storage"}},"visibility":"internal"}],"id":3564,"initialValue":{"arguments":[],"expression":{"argumentTypes":[],"id":3562,"name":"_getERC20Storage","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3099,"src":"11033:16:12","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$__$returns$_t_struct$_ERC20Storage_$3088_storage_ptr_$","typeString":"function () pure returns (struct ERC20Upgradeable.ERC20Storage storage pointer)"}},"id":3563,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"11033:18:12","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_struct$_ERC20Storage_$3088_storage_ptr","typeString":"struct ERC20Upgradeable.ERC20Storage storage pointer"}},"nodeType":"VariableDeclarationStatement","src":"11008:43:12"},{"condition":{"commonType":{"typeIdentifier":"t_address","typeString":"address"},"id":3570,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":3565,"name":"owner","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3550,"src":"11065:5:12","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"arguments":[{"hexValue":"30","id":3568,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"11082:1:12","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":3567,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"11074:7:12","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":3566,"name":"address","nodeType":"ElementaryTypeName","src":"11074:7:12","typeDescriptions":{}}},"id":3569,"isConstant":false,"isLValue":false,"isPure":true,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"11074:10:12","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"src":"11065:19:12","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":3579,"nodeType":"IfStatement","src":"11061:89:12","trueBody":{"id":3578,"nodeType":"Block","src":"11086:64:12","statements":[{"errorCall":{"arguments":[{"arguments":[{"hexValue":"30","id":3574,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"11136:1:12","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":3573,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"11128:7:12","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":3572,"name":"address","nodeType":"ElementaryTypeName","src":"11128:7:12","typeDescriptions":{}}},"id":3575,"isConstant":false,"isLValue":false,"isPure":true,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"11128:10:12","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"id":3571,"name":"ERC20InvalidApprover","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7173,"src":"11107:20:12","typeDescriptions":{"typeIdentifier":"t_function_error_pure$_t_address_$returns$_t_error_$","typeString":"function (address) pure returns (error)"}},"id":3576,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"11107:32:12","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_error","typeString":"error"}},"id":3577,"nodeType":"RevertStatement","src":"11100:39:12"}]}},{"condition":{"commonType":{"typeIdentifier":"t_address","typeString":"address"},"id":3585,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":3580,"name":"spender","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3552,"src":"11163:7:12","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"arguments":[{"hexValue":"30","id":3583,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"11182:1:12","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":3582,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"11174:7:12","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":3581,"name":"address","nodeType":"ElementaryTypeName","src":"11174:7:12","typeDescriptions":{}}},"id":3584,"isConstant":false,"isLValue":false,"isPure":true,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"11174:10:12","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"src":"11163:21:12","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":3594,"nodeType":"IfStatement","src":"11159:90:12","trueBody":{"id":3593,"nodeType":"Block","src":"11186:63:12","statements":[{"errorCall":{"arguments":[{"arguments":[{"hexValue":"30","id":3589,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"11235:1:12","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":3588,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"11227:7:12","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":3587,"name":"address","nodeType":"ElementaryTypeName","src":"11227:7:12","typeDescriptions":{}}},"id":3590,"isConstant":false,"isLValue":false,"isPure":true,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"11227:10:12","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"id":3586,"name":"ERC20InvalidSpender","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7178,"src":"11207:19:12","typeDescriptions":{"typeIdentifier":"t_function_error_pure$_t_address_$returns$_t_error_$","typeString":"function (address) pure returns (error)"}},"id":3591,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"11207:31:12","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_error","typeString":"error"}},"id":3592,"nodeType":"RevertStatement","src":"11200:38:12"}]}},{"expression":{"id":3603,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"baseExpression":{"baseExpression":{"expression":{"id":3595,"name":"$","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3561,"src":"11258:1:12","typeDescriptions":{"typeIdentifier":"t_struct$_ERC20Storage_$3088_storage_ptr","typeString":"struct ERC20Upgradeable.ERC20Storage storage pointer"}},"id":3599,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"11260:11:12","memberName":"_allowances","nodeType":"MemberAccess","referencedDeclaration":3081,"src":"11258:13:12","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_mapping$_t_address_$_t_uint256_$_$","typeString":"mapping(address => mapping(address => uint256))"}},"id":3600,"indexExpression":{"id":3597,"name":"owner","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3550,"src":"11272:5:12","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"11258:20:12","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_uint256_$","typeString":"mapping(address => uint256)"}},"id":3601,"indexExpression":{"id":3598,"name":"spender","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3552,"src":"11279:7:12","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"nodeType":"IndexAccess","src":"11258:29:12","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"id":3602,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3554,"src":"11290:5:12","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"11258:37:12","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":3604,"nodeType":"ExpressionStatement","src":"11258:37:12"},{"condition":{"id":3605,"name":"emitEvent","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3556,"src":"11309:9:12","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":3613,"nodeType":"IfStatement","src":"11305:76:12","trueBody":{"id":3612,"nodeType":"Block","src":"11320:61:12","statements":[{"eventCall":{"arguments":[{"id":3607,"name":"owner","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3550,"src":"11348:5:12","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":3608,"name":"spender","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3552,"src":"11355:7:12","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":3609,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3554,"src":"11364:5:12","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":3606,"name":"Approval","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8622,"src":"11339:8:12","typeDescriptions":{"typeIdentifier":"t_function_event_nonpayable$_t_address_$_t_address_$_t_uint256_$returns$__$","typeString":"function (address,address,uint256)"}},"id":3610,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"11339:31:12","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":3611,"nodeType":"EmitStatement","src":"11334:36:12"}]}}]},"documentation":{"id":3548,"nodeType":"StructuredDocumentation","src":"10057:838:12","text":" @dev Variant of {_approve} with an optional flag to enable or disable the {Approval} event.\n By default (when calling {_approve}) the flag is set to true. On the other hand, approval changes made by\n `_spendAllowance` during the `transferFrom` operation sets the flag to false. This saves gas by not emitting any\n `Approval` event during `transferFrom` operations.\n Anyone who wishes to continue emitting `Approval` events on the `transferFrom` operation can force the flag to\n true using the following override:\n ```solidity\n function _approve(address owner, address spender, uint256 value, bool) internal virtual override {\n     super._approve(owner, spender, value, true);\n }\n ```\n Requirements are the same as {_approve}."},"id":3615,"implemented":true,"kind":"function","modifiers":[],"name":"_approve","nameLocation":"10909:8:12","nodeType":"FunctionDefinition","parameters":{"id":3557,"nodeType":"ParameterList","parameters":[{"constant":false,"id":3550,"mutability":"mutable","name":"owner","nameLocation":"10926:5:12","nodeType":"VariableDeclaration","scope":3615,"src":"10918:13:12","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":3549,"name":"address","nodeType":"ElementaryTypeName","src":"10918:7:12","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":3552,"mutability":"mutable","name":"spender","nameLocation":"10941:7:12","nodeType":"VariableDeclaration","scope":3615,"src":"10933:15:12","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":3551,"name":"address","nodeType":"ElementaryTypeName","src":"10933:7:12","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":3554,"mutability":"mutable","name":"value","nameLocation":"10958:5:12","nodeType":"VariableDeclaration","scope":3615,"src":"10950:13:12","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":3553,"name":"uint256","nodeType":"ElementaryTypeName","src":"10950:7:12","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":3556,"mutability":"mutable","name":"emitEvent","nameLocation":"10970:9:12","nodeType":"VariableDeclaration","scope":3615,"src":"10965:14:12","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":3555,"name":"bool","nodeType":"ElementaryTypeName","src":"10965:4:12","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"}],"src":"10917:63:12"},"returnParameters":{"id":3558,"nodeType":"ParameterList","parameters":[],"src":"10998:0:12"},"scope":3664,"src":"10900:487:12","stateMutability":"nonpayable","virtual":true,"visibility":"internal"},{"body":{"id":3662,"nodeType":"Block","src":"11758:387:12","statements":[{"assignments":[3626],"declarations":[{"constant":false,"id":3626,"mutability":"mutable","name":"currentAllowance","nameLocation":"11776:16:12","nodeType":"VariableDeclaration","scope":3662,"src":"11768:24:12","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":3625,"name":"uint256","nodeType":"ElementaryTypeName","src":"11768:7:12","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":3631,"initialValue":{"arguments":[{"id":3628,"name":"owner","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3618,"src":"11805:5:12","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":3629,"name":"spender","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3620,"src":"11812:7:12","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_address","typeString":"address"}],"id":3627,"name":"allowance","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3268,"src":"11795:9:12","typeDescriptions":{"typeIdentifier":"t_function_internal_view$_t_address_$_t_address_$returns$_t_uint256_$","typeString":"function (address,address) view returns (uint256)"}},"id":3630,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"11795:25:12","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"VariableDeclarationStatement","src":"11768:52:12"},{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":3638,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":3632,"name":"currentAllowance","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3626,"src":"11834:16:12","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"<","rightExpression":{"expression":{"arguments":[{"id":3635,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"11858:7:12","typeDescriptions":{"typeIdentifier":"t_type$_t_uint256_$","typeString":"type(uint256)"},"typeName":{"id":3634,"name":"uint256","nodeType":"ElementaryTypeName","src":"11858:7:12","typeDescriptions":{}}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_type$_t_uint256_$","typeString":"type(uint256)"}],"id":3633,"name":"type","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-27,"src":"11853:4:12","typeDescriptions":{"typeIdentifier":"t_function_metatype_pure$__$returns$__$","typeString":"function () pure"}},"id":3636,"isConstant":false,"isLValue":false,"isPure":true,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"11853:13:12","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_magic_meta_type_t_uint256","typeString":"type(uint256)"}},"id":3637,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberLocation":"11867:3:12","memberName":"max","nodeType":"MemberAccess","src":"11853:17:12","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"11834:36:12","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":3661,"nodeType":"IfStatement","src":"11830:309:12","trueBody":{"id":3660,"nodeType":"Block","src":"11872:267:12","statements":[{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":3641,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":3639,"name":"currentAllowance","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3626,"src":"11890:16:12","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"<","rightExpression":{"id":3640,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3622,"src":"11909:5:12","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"11890:24:12","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":3649,"nodeType":"IfStatement","src":"11886:130:12","trueBody":{"id":3648,"nodeType":"Block","src":"11916:100:12","statements":[{"errorCall":{"arguments":[{"id":3643,"name":"spender","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3620,"src":"11968:7:12","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":3644,"name":"currentAllowance","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3626,"src":"11977:16:12","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"id":3645,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3622,"src":"11995:5:12","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":3642,"name":"ERC20InsufficientAllowance","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7168,"src":"11941:26:12","typeDescriptions":{"typeIdentifier":"t_function_error_pure$_t_address_$_t_uint256_$_t_uint256_$returns$_t_error_$","typeString":"function (address,uint256,uint256) pure returns (error)"}},"id":3646,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"11941:60:12","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_error","typeString":"error"}},"id":3647,"nodeType":"RevertStatement","src":"11934:67:12"}]}},{"id":3659,"nodeType":"UncheckedBlock","src":"12029:100:12","statements":[{"expression":{"arguments":[{"id":3651,"name":"owner","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3618,"src":"12066:5:12","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":3652,"name":"spender","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3620,"src":"12073:7:12","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":3655,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":3653,"name":"currentAllowance","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3626,"src":"12082:16:12","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"-","rightExpression":{"id":3654,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3622,"src":"12101:5:12","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"12082:24:12","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"hexValue":"66616c7365","id":3656,"isConstant":false,"isLValue":false,"isPure":true,"kind":"bool","lValueRequested":false,"nodeType":"Literal","src":"12108:5:12","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"value":"false"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_bool","typeString":"bool"}],"id":3650,"name":"_approve","nodeType":"Identifier","overloadedDeclarations":[3547,3615],"referencedDeclaration":3615,"src":"12057:8:12","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_address_$_t_address_$_t_uint256_$_t_bool_$returns$__$","typeString":"function (address,address,uint256,bool)"}},"id":3657,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"12057:57:12","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":3658,"nodeType":"ExpressionStatement","src":"12057:57:12"}]}]}}]},"documentation":{"id":3616,"nodeType":"StructuredDocumentation","src":"11393:271:12","text":" @dev Updates `owner`'s allowance for `spender` based on spent `value`.\n Does not update the allowance value in case of infinite allowance.\n Revert if not enough allowance is available.\n Does not emit an {Approval} event."},"id":3663,"implemented":true,"kind":"function","modifiers":[],"name":"_spendAllowance","nameLocation":"11678:15:12","nodeType":"FunctionDefinition","parameters":{"id":3623,"nodeType":"ParameterList","parameters":[{"constant":false,"id":3618,"mutability":"mutable","name":"owner","nameLocation":"11702:5:12","nodeType":"VariableDeclaration","scope":3663,"src":"11694:13:12","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":3617,"name":"address","nodeType":"ElementaryTypeName","src":"11694:7:12","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":3620,"mutability":"mutable","name":"spender","nameLocation":"11717:7:12","nodeType":"VariableDeclaration","scope":3663,"src":"11709:15:12","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":3619,"name":"address","nodeType":"ElementaryTypeName","src":"11709:7:12","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":3622,"mutability":"mutable","name":"value","nameLocation":"11734:5:12","nodeType":"VariableDeclaration","scope":3663,"src":"11726:13:12","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":3621,"name":"uint256","nodeType":"ElementaryTypeName","src":"11726:7:12","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"11693:47:12"},"returnParameters":{"id":3624,"nodeType":"ParameterList","parameters":[],"src":"11758:0:12"},"scope":3664,"src":"11669:476:12","stateMutability":"nonpayable","virtual":true,"visibility":"internal"}],"scope":3665,"src":"1299:10848:12","usedErrors":[7149,7154,7159,7168,7173,7178,7669,7672],"usedEvents":[7677,8613,8622]}],"src":"105:12043:12"},"id":12},"@openzeppelin/contracts-upgradeable/token/ERC20/extensions/ERC4626Upgradeable.sol":{"ast":{"absolutePath":"@openzeppelin/contracts-upgradeable/token/ERC20/extensions/ERC4626Upgradeable.sol","exportedSymbols":{"ERC20Upgradeable":[3664],"ERC4626Upgradeable":[4428],"IERC20":[8679],"IERC20Metadata":[9411],"IERC4626":[7127],"Initializable":[7920],"LowLevelCall":[10467],"Math":[12726],"Memory":[10769],"SafeERC20":[9866]},"id":4429,"license":"MIT","nodeType":"SourceUnit","nodes":[{"id":3666,"literals":["solidity","^","0.8",".24"],"nodeType":"PragmaDirective","src":"118:24:13"},{"absolutePath":"@openzeppelin/contracts/token/ERC20/IERC20.sol","file":"@openzeppelin/contracts/token/ERC20/IERC20.sol","id":3668,"nameLocation":"-1:-1:-1","nodeType":"ImportDirective","scope":4429,"sourceUnit":8680,"src":"144:70:13","symbolAliases":[{"foreign":{"id":3667,"name":"IERC20","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8679,"src":"152:6:13","typeDescriptions":{}},"nameLocation":"-1:-1:-1"}],"unitAlias":""},{"absolutePath":"@openzeppelin/contracts/token/ERC20/extensions/IERC20Metadata.sol","file":"@openzeppelin/contracts/token/ERC20/extensions/IERC20Metadata.sol","id":3670,"nameLocation":"-1:-1:-1","nodeType":"ImportDirective","scope":4429,"sourceUnit":9412,"src":"215:97:13","symbolAliases":[{"foreign":{"id":3669,"name":"IERC20Metadata","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9411,"src":"223:14:13","typeDescriptions":{}},"nameLocation":"-1:-1:-1"}],"unitAlias":""},{"absolutePath":"@openzeppelin/contracts-upgradeable/token/ERC20/ERC20Upgradeable.sol","file":"../ERC20Upgradeable.sol","id":3672,"nameLocation":"-1:-1:-1","nodeType":"ImportDirective","scope":4429,"sourceUnit":3665,"src":"313:57:13","symbolAliases":[{"foreign":{"id":3671,"name":"ERC20Upgradeable","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3664,"src":"321:16:13","typeDescriptions":{}},"nameLocation":"-1:-1:-1"}],"unitAlias":""},{"absolutePath":"@openzeppelin/contracts/token/ERC20/utils/SafeERC20.sol","file":"@openzeppelin/contracts/token/ERC20/utils/SafeERC20.sol","id":3674,"nameLocation":"-1:-1:-1","nodeType":"ImportDirective","scope":4429,"sourceUnit":9867,"src":"371:82:13","symbolAliases":[{"foreign":{"id":3673,"name":"SafeERC20","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9866,"src":"379:9:13","typeDescriptions":{}},"nameLocation":"-1:-1:-1"}],"unitAlias":""},{"absolutePath":"@openzeppelin/contracts/interfaces/IERC4626.sol","file":"@openzeppelin/contracts/interfaces/IERC4626.sol","id":3676,"nameLocation":"-1:-1:-1","nodeType":"ImportDirective","scope":4429,"sourceUnit":7128,"src":"454:73:13","symbolAliases":[{"foreign":{"id":3675,"name":"IERC4626","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7127,"src":"462:8:13","typeDescriptions":{}},"nameLocation":"-1:-1:-1"}],"unitAlias":""},{"absolutePath":"@openzeppelin/contracts/utils/LowLevelCall.sol","file":"@openzeppelin/contracts/utils/LowLevelCall.sol","id":3678,"nameLocation":"-1:-1:-1","nodeType":"ImportDirective","scope":4429,"sourceUnit":10468,"src":"528:76:13","symbolAliases":[{"foreign":{"id":3677,"name":"LowLevelCall","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10467,"src":"536:12:13","typeDescriptions":{}},"nameLocation":"-1:-1:-1"}],"unitAlias":""},{"absolutePath":"@openzeppelin/contracts/utils/Memory.sol","file":"@openzeppelin/contracts/utils/Memory.sol","id":3680,"nameLocation":"-1:-1:-1","nodeType":"ImportDirective","scope":4429,"sourceUnit":10770,"src":"605:64:13","symbolAliases":[{"foreign":{"id":3679,"name":"Memory","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10769,"src":"613:6:13","typeDescriptions":{}},"nameLocation":"-1:-1:-1"}],"unitAlias":""},{"absolutePath":"@openzeppelin/contracts/utils/math/Math.sol","file":"@openzeppelin/contracts/utils/math/Math.sol","id":3682,"nameLocation":"-1:-1:-1","nodeType":"ImportDirective","scope":4429,"sourceUnit":12727,"src":"670:65:13","symbolAliases":[{"foreign":{"id":3681,"name":"Math","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":12726,"src":"678:4:13","typeDescriptions":{}},"nameLocation":"-1:-1:-1"}],"unitAlias":""},{"absolutePath":"@openzeppelin/contracts/proxy/utils/Initializable.sol","file":"@openzeppelin/contracts/proxy/utils/Initializable.sol","id":3684,"nameLocation":"-1:-1:-1","nodeType":"ImportDirective","scope":4429,"sourceUnit":7921,"src":"736:84:13","symbolAliases":[{"foreign":{"id":3683,"name":"Initializable","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7920,"src":"744:13:13","typeDescriptions":{}},"nameLocation":"-1:-1:-1"}],"unitAlias":""},{"abstract":true,"baseContracts":[{"baseName":{"id":3686,"name":"Initializable","nameLocations":["4903:13:13"],"nodeType":"IdentifierPath","referencedDeclaration":7920,"src":"4903:13:13"},"id":3687,"nodeType":"InheritanceSpecifier","src":"4903:13:13"},{"baseName":{"id":3688,"name":"ERC20Upgradeable","nameLocations":["4918:16:13"],"nodeType":"IdentifierPath","referencedDeclaration":3664,"src":"4918:16:13"},"id":3689,"nodeType":"InheritanceSpecifier","src":"4918:16:13"},{"baseName":{"id":3690,"name":"IERC4626","nameLocations":["4936:8:13"],"nodeType":"IdentifierPath","referencedDeclaration":7127,"src":"4936:8:13"},"id":3691,"nodeType":"InheritanceSpecifier","src":"4936:8:13"}],"canonicalName":"ERC4626Upgradeable","contractDependencies":[],"contractKind":"contract","documentation":{"id":3685,"nodeType":"StructuredDocumentation","src":"822:4040:13","text":" @dev Implementation of the ERC-4626 \"Tokenized Vault Standard\" as defined in\n https://eips.ethereum.org/EIPS/eip-4626[ERC-4626].\n This extension allows the minting and burning of \"shares\" (represented using the ERC-20 inheritance) in exchange for\n underlying \"assets\" through standardized {deposit}, {mint}, {redeem} and {burn} workflows. This contract extends\n the ERC-20 standard. Any additional extensions included along it would affect the \"shares\" token represented by this\n contract and not the \"assets\" token which is an independent contract.\n [CAUTION]\n ====\n In empty (or nearly empty) ERC-4626 vaults, deposits are at high risk of being stolen through frontrunning\n with a \"donation\" to the vault that inflates the price of a share. This is variously known as a donation or inflation\n attack and is essentially a problem of slippage. Vault deployers can protect against this attack by making an initial\n deposit of a non-trivial amount of the asset, such that price manipulation becomes infeasible. Withdrawals may\n similarly be affected by slippage. Users can protect against this attack as well as unexpected slippage in general by\n verifying the amount received is as expected, using a wrapper that performs these checks such as\n https://github.com/fei-protocol/ERC4626#erc4626router-and-base[ERC4626Router].\n Since v4.9, this implementation introduces configurable virtual assets and shares to help developers mitigate that risk.\n The `_decimalsOffset()` corresponds to an offset in the decimal representation between the underlying asset's decimals\n and the vault decimals. This offset also determines the rate of virtual shares to virtual assets in the vault, which\n itself determines the initial exchange rate. While not fully preventing the attack, analysis shows that the default\n offset (0) makes it non-profitable even if an attacker is able to capture value from multiple user deposits, as a result\n of the value being captured by the virtual shares (out of the attacker's donation) matching the attacker's expected gains.\n With a larger offset, the attack becomes orders of magnitude more expensive than it is profitable. More details about the\n underlying math can be found xref:ROOT:erc4626.adoc#inflation-attack[here].\n The drawback of this approach is that the virtual shares do capture (a very small) part of the value being accrued\n to the vault. Also, if the vault experiences losses, the users try to exit the vault, the virtual shares and assets\n will cause the first user to exit to experience reduced losses in detriment to the last users that will experience\n bigger losses. Developers willing to revert back to the pre-v4.9 behavior just need to override the\n `_convertToShares` and `_convertToAssets` functions.\n To learn more, check out our xref:ROOT:erc4626.adoc[ERC-4626 guide].\n ====\n [NOTE]\n ====\n When overriding this contract, some elements must be considered:\n * When overriding the behavior of the deposit or withdraw mechanisms, it is recommended to override the internal\n functions. Overriding {_deposit} automatically affects both {deposit} and {mint}. Similarly, overriding {_withdraw}\n automatically affects both {withdraw} and {redeem}. Overall it is not recommended to override the public facing\n functions since that could lead to inconsistent behaviors between the {deposit} and {mint} or between {withdraw} and\n {redeem}, which is documented to have lead to loss of funds.\n * Overrides to the deposit or withdraw mechanism must be reflected in the preview functions as well.\n * {maxWithdraw} depends on {maxRedeem}. Therefore, overriding {maxRedeem} only is enough. On the other hand,\n overriding {maxWithdraw} only would have no effect on {maxRedeem}, and could create an inconsistency between the two\n functions.\n * If {previewRedeem} is overridden to revert, {maxWithdraw} must be overridden as necessary to ensure it\n always return successfully.\n ===="},"fullyImplemented":true,"id":4428,"linearizedBaseContracts":[4428,7127,3664,7179,9411,8679,4474,7920],"name":"ERC4626Upgradeable","nameLocation":"4881:18:13","nodeType":"ContractDefinition","nodes":[{"global":false,"id":3694,"libraryName":{"id":3692,"name":"Math","nameLocations":["4957:4:13"],"nodeType":"IdentifierPath","referencedDeclaration":12726,"src":"4957:4:13"},"nodeType":"UsingForDirective","src":"4951:23:13","typeName":{"id":3693,"name":"uint256","nodeType":"ElementaryTypeName","src":"4966:7:13","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}},{"canonicalName":"ERC4626Upgradeable.ERC4626Storage","documentation":{"id":3695,"nodeType":"StructuredDocumentation","src":"4980:65:13","text":"@custom:storage-location erc7201:openzeppelin.storage.ERC4626"},"id":3701,"members":[{"constant":false,"id":3698,"mutability":"mutable","name":"_asset","nameLocation":"5089:6:13","nodeType":"VariableDeclaration","scope":3701,"src":"5082:13:13","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_contract$_IERC20_$8679","typeString":"contract IERC20"},"typeName":{"id":3697,"nodeType":"UserDefinedTypeName","pathNode":{"id":3696,"name":"IERC20","nameLocations":["5082:6:13"],"nodeType":"IdentifierPath","referencedDeclaration":8679,"src":"5082:6:13"},"referencedDeclaration":8679,"src":"5082:6:13","typeDescriptions":{"typeIdentifier":"t_contract$_IERC20_$8679","typeString":"contract IERC20"}},"visibility":"internal"},{"constant":false,"id":3700,"mutability":"mutable","name":"_underlyingDecimals","nameLocation":"5111:19:13","nodeType":"VariableDeclaration","scope":3701,"src":"5105:25:13","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"},"typeName":{"id":3699,"name":"uint8","nodeType":"ElementaryTypeName","src":"5105:5:13","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}},"visibility":"internal"}],"name":"ERC4626Storage","nameLocation":"5057:14:13","nodeType":"StructDefinition","scope":4428,"src":"5050:87:13","visibility":"public"},{"constant":true,"id":3704,"mutability":"constant","name":"ERC4626StorageLocation","nameLocation":"5279:22:13","nodeType":"VariableDeclaration","scope":4428,"src":"5254:116:13","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":3702,"name":"bytes32","nodeType":"ElementaryTypeName","src":"5254:7:13","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"value":{"hexValue":"307830373733653533326466656465393166303462313261373364336432616364333631343234663431663736623466623739663039303136316533366234653030","id":3703,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"5304:66:13","typeDescriptions":{"typeIdentifier":"t_rational_3370959224025639111533709689598502374825270023453997444744848480697785732608_by_1","typeString":"int_const 3370...(68 digits omitted)...2608"},"value":"0x0773e532dfede91f04b12a73d3d2acd361424f41f76b4fb79f090161e36b4e00"},"visibility":"private"},{"body":{"id":3711,"nodeType":"Block","src":"5455:81:13","statements":[{"AST":{"nativeSrc":"5474:56:13","nodeType":"YulBlock","src":"5474:56:13","statements":[{"nativeSrc":"5488:32:13","nodeType":"YulAssignment","src":"5488:32:13","value":{"name":"ERC4626StorageLocation","nativeSrc":"5498:22:13","nodeType":"YulIdentifier","src":"5498:22:13"},"variableNames":[{"name":"$.slot","nativeSrc":"5488:6:13","nodeType":"YulIdentifier","src":"5488:6:13"}]}]},"evmVersion":"prague","externalReferences":[{"declaration":3708,"isOffset":false,"isSlot":true,"src":"5488:6:13","suffix":"slot","valueSize":1},{"declaration":3704,"isOffset":false,"isSlot":false,"src":"5498:22:13","valueSize":1}],"id":3710,"nodeType":"InlineAssembly","src":"5465:65:13"}]},"id":3712,"implemented":true,"kind":"function","modifiers":[],"name":"_getERC4626Storage","nameLocation":"5386:18:13","nodeType":"FunctionDefinition","parameters":{"id":3705,"nodeType":"ParameterList","parameters":[],"src":"5404:2:13"},"returnParameters":{"id":3709,"nodeType":"ParameterList","parameters":[{"constant":false,"id":3708,"mutability":"mutable","name":"$","nameLocation":"5452:1:13","nodeType":"VariableDeclaration","scope":3712,"src":"5429:24:13","stateVariable":false,"storageLocation":"storage","typeDescriptions":{"typeIdentifier":"t_struct$_ERC4626Storage_$3701_storage_ptr","typeString":"struct ERC4626Upgradeable.ERC4626Storage"},"typeName":{"id":3707,"nodeType":"UserDefinedTypeName","pathNode":{"id":3706,"name":"ERC4626Storage","nameLocations":["5429:14:13"],"nodeType":"IdentifierPath","referencedDeclaration":3701,"src":"5429:14:13"},"referencedDeclaration":3701,"src":"5429:14:13","typeDescriptions":{"typeIdentifier":"t_struct$_ERC4626Storage_$3701_storage_ptr","typeString":"struct ERC4626Upgradeable.ERC4626Storage"}},"visibility":"internal"}],"src":"5428:26:13"},"scope":4428,"src":"5377:159:13","stateMutability":"pure","virtual":false,"visibility":"private"},{"documentation":{"id":3713,"nodeType":"StructuredDocumentation","src":"5542:92:13","text":" @dev Attempted to deposit more assets than the max amount for `receiver`."},"errorSelector":"79012fb2","id":3721,"name":"ERC4626ExceededMaxDeposit","nameLocation":"5645:25:13","nodeType":"ErrorDefinition","parameters":{"id":3720,"nodeType":"ParameterList","parameters":[{"constant":false,"id":3715,"mutability":"mutable","name":"receiver","nameLocation":"5679:8:13","nodeType":"VariableDeclaration","scope":3721,"src":"5671:16:13","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":3714,"name":"address","nodeType":"ElementaryTypeName","src":"5671:7:13","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":3717,"mutability":"mutable","name":"assets","nameLocation":"5697:6:13","nodeType":"VariableDeclaration","scope":3721,"src":"5689:14:13","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":3716,"name":"uint256","nodeType":"ElementaryTypeName","src":"5689:7:13","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":3719,"mutability":"mutable","name":"max","nameLocation":"5713:3:13","nodeType":"VariableDeclaration","scope":3721,"src":"5705:11:13","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":3718,"name":"uint256","nodeType":"ElementaryTypeName","src":"5705:7:13","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"5670:47:13"},"src":"5639:79:13"},{"documentation":{"id":3722,"nodeType":"StructuredDocumentation","src":"5724:89:13","text":" @dev Attempted to mint more shares than the max amount for `receiver`."},"errorSelector":"284ff667","id":3730,"name":"ERC4626ExceededMaxMint","nameLocation":"5824:22:13","nodeType":"ErrorDefinition","parameters":{"id":3729,"nodeType":"ParameterList","parameters":[{"constant":false,"id":3724,"mutability":"mutable","name":"receiver","nameLocation":"5855:8:13","nodeType":"VariableDeclaration","scope":3730,"src":"5847:16:13","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":3723,"name":"address","nodeType":"ElementaryTypeName","src":"5847:7:13","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":3726,"mutability":"mutable","name":"shares","nameLocation":"5873:6:13","nodeType":"VariableDeclaration","scope":3730,"src":"5865:14:13","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":3725,"name":"uint256","nodeType":"ElementaryTypeName","src":"5865:7:13","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":3728,"mutability":"mutable","name":"max","nameLocation":"5889:3:13","nodeType":"VariableDeclaration","scope":3730,"src":"5881:11:13","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":3727,"name":"uint256","nodeType":"ElementaryTypeName","src":"5881:7:13","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"5846:47:13"},"src":"5818:76:13"},{"documentation":{"id":3731,"nodeType":"StructuredDocumentation","src":"5900:93:13","text":" @dev Attempted to withdraw more assets than the max amount for `receiver`."},"errorSelector":"fe9cceec","id":3739,"name":"ERC4626ExceededMaxWithdraw","nameLocation":"6004:26:13","nodeType":"ErrorDefinition","parameters":{"id":3738,"nodeType":"ParameterList","parameters":[{"constant":false,"id":3733,"mutability":"mutable","name":"owner","nameLocation":"6039:5:13","nodeType":"VariableDeclaration","scope":3739,"src":"6031:13:13","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":3732,"name":"address","nodeType":"ElementaryTypeName","src":"6031:7:13","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":3735,"mutability":"mutable","name":"assets","nameLocation":"6054:6:13","nodeType":"VariableDeclaration","scope":3739,"src":"6046:14:13","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":3734,"name":"uint256","nodeType":"ElementaryTypeName","src":"6046:7:13","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":3737,"mutability":"mutable","name":"max","nameLocation":"6070:3:13","nodeType":"VariableDeclaration","scope":3739,"src":"6062:11:13","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":3736,"name":"uint256","nodeType":"ElementaryTypeName","src":"6062:7:13","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"6030:44:13"},"src":"5998:77:13"},{"documentation":{"id":3740,"nodeType":"StructuredDocumentation","src":"6081:91:13","text":" @dev Attempted to redeem more shares than the max amount for `receiver`."},"errorSelector":"b94abeec","id":3748,"name":"ERC4626ExceededMaxRedeem","nameLocation":"6183:24:13","nodeType":"ErrorDefinition","parameters":{"id":3747,"nodeType":"ParameterList","parameters":[{"constant":false,"id":3742,"mutability":"mutable","name":"owner","nameLocation":"6216:5:13","nodeType":"VariableDeclaration","scope":3748,"src":"6208:13:13","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":3741,"name":"address","nodeType":"ElementaryTypeName","src":"6208:7:13","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":3744,"mutability":"mutable","name":"shares","nameLocation":"6231:6:13","nodeType":"VariableDeclaration","scope":3748,"src":"6223:14:13","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":3743,"name":"uint256","nodeType":"ElementaryTypeName","src":"6223:7:13","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":3746,"mutability":"mutable","name":"max","nameLocation":"6247:3:13","nodeType":"VariableDeclaration","scope":3748,"src":"6239:11:13","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":3745,"name":"uint256","nodeType":"ElementaryTypeName","src":"6239:7:13","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"6207:44:13"},"src":"6177:75:13"},{"body":{"id":3761,"nodeType":"Block","src":"6449:49:13","statements":[{"expression":{"arguments":[{"id":3758,"name":"asset_","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3752,"src":"6484:6:13","typeDescriptions":{"typeIdentifier":"t_contract$_IERC20_$8679","typeString":"contract IERC20"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_contract$_IERC20_$8679","typeString":"contract IERC20"}],"id":3757,"name":"__ERC4626_init_unchained","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3800,"src":"6459:24:13","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_contract$_IERC20_$8679_$returns$__$","typeString":"function (contract IERC20)"}},"id":3759,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"6459:32:13","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":3760,"nodeType":"ExpressionStatement","src":"6459:32:13"}]},"documentation":{"id":3749,"nodeType":"StructuredDocumentation","src":"6258:121:13","text":" @dev Set the underlying asset contract. This must be an ERC20-compatible contract (ERC-20 or ERC-777)."},"id":3762,"implemented":true,"kind":"function","modifiers":[{"id":3755,"kind":"modifierInvocation","modifierName":{"id":3754,"name":"onlyInitializing","nameLocations":["6432:16:13"],"nodeType":"IdentifierPath","referencedDeclaration":7815,"src":"6432:16:13"},"nodeType":"ModifierInvocation","src":"6432:16:13"}],"name":"__ERC4626_init","nameLocation":"6393:14:13","nodeType":"FunctionDefinition","parameters":{"id":3753,"nodeType":"ParameterList","parameters":[{"constant":false,"id":3752,"mutability":"mutable","name":"asset_","nameLocation":"6415:6:13","nodeType":"VariableDeclaration","scope":3762,"src":"6408:13:13","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_contract$_IERC20_$8679","typeString":"contract IERC20"},"typeName":{"id":3751,"nodeType":"UserDefinedTypeName","pathNode":{"id":3750,"name":"IERC20","nameLocations":["6408:6:13"],"nodeType":"IdentifierPath","referencedDeclaration":8679,"src":"6408:6:13"},"referencedDeclaration":8679,"src":"6408:6:13","typeDescriptions":{"typeIdentifier":"t_contract$_IERC20_$8679","typeString":"contract IERC20"}},"visibility":"internal"}],"src":"6407:15:13"},"returnParameters":{"id":3756,"nodeType":"ParameterList","parameters":[],"src":"6449:0:13"},"scope":4428,"src":"6384:114:13","stateMutability":"nonpayable","virtual":false,"visibility":"internal"},{"body":{"id":3799,"nodeType":"Block","src":"6579:229:13","statements":[{"assignments":[3772],"declarations":[{"constant":false,"id":3772,"mutability":"mutable","name":"$","nameLocation":"6612:1:13","nodeType":"VariableDeclaration","scope":3799,"src":"6589:24:13","stateVariable":false,"storageLocation":"storage","typeDescriptions":{"typeIdentifier":"t_struct$_ERC4626Storage_$3701_storage_ptr","typeString":"struct ERC4626Upgradeable.ERC4626Storage"},"typeName":{"id":3771,"nodeType":"UserDefinedTypeName","pathNode":{"id":3770,"name":"ERC4626Storage","nameLocations":["6589:14:13"],"nodeType":"IdentifierPath","referencedDeclaration":3701,"src":"6589:14:13"},"referencedDeclaration":3701,"src":"6589:14:13","typeDescriptions":{"typeIdentifier":"t_struct$_ERC4626Storage_$3701_storage_ptr","typeString":"struct ERC4626Upgradeable.ERC4626Storage"}},"visibility":"internal"}],"id":3775,"initialValue":{"arguments":[],"expression":{"argumentTypes":[],"id":3773,"name":"_getERC4626Storage","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3712,"src":"6616:18:13","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$__$returns$_t_struct$_ERC4626Storage_$3701_storage_ptr_$","typeString":"function () pure returns (struct ERC4626Upgradeable.ERC4626Storage storage pointer)"}},"id":3774,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"6616:20:13","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_struct$_ERC4626Storage_$3701_storage_ptr","typeString":"struct ERC4626Upgradeable.ERC4626Storage storage pointer"}},"nodeType":"VariableDeclarationStatement","src":"6589:47:13"},{"assignments":[3777,3779],"declarations":[{"constant":false,"id":3777,"mutability":"mutable","name":"success","nameLocation":"6652:7:13","nodeType":"VariableDeclaration","scope":3799,"src":"6647:12:13","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":3776,"name":"bool","nodeType":"ElementaryTypeName","src":"6647:4:13","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"},{"constant":false,"id":3779,"mutability":"mutable","name":"assetDecimals","nameLocation":"6667:13:13","nodeType":"VariableDeclaration","scope":3799,"src":"6661:19:13","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"},"typeName":{"id":3778,"name":"uint8","nodeType":"ElementaryTypeName","src":"6661:5:13","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}},"visibility":"internal"}],"id":3783,"initialValue":{"arguments":[{"id":3781,"name":"asset_","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3765,"src":"6705:6:13","typeDescriptions":{"typeIdentifier":"t_contract$_IERC20_$8679","typeString":"contract IERC20"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_contract$_IERC20_$8679","typeString":"contract IERC20"}],"id":3780,"name":"_tryGetAssetDecimals","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3878,"src":"6684:20:13","typeDescriptions":{"typeIdentifier":"t_function_internal_view$_t_contract$_IERC20_$8679_$returns$_t_bool_$_t_uint8_$","typeString":"function (contract IERC20) view returns (bool,uint8)"}},"id":3782,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"6684:28:13","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$_t_bool_$_t_uint8_$","typeString":"tuple(bool,uint8)"}},"nodeType":"VariableDeclarationStatement","src":"6646:66:13"},{"expression":{"id":3791,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"expression":{"id":3784,"name":"$","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3772,"src":"6722:1:13","typeDescriptions":{"typeIdentifier":"t_struct$_ERC4626Storage_$3701_storage_ptr","typeString":"struct ERC4626Upgradeable.ERC4626Storage storage pointer"}},"id":3786,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"memberLocation":"6724:19:13","memberName":"_underlyingDecimals","nodeType":"MemberAccess","referencedDeclaration":3700,"src":"6722:21:13","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"condition":{"id":3787,"name":"success","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3777,"src":"6746:7:13","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"falseExpression":{"hexValue":"3138","id":3789,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"6772:2:13","typeDescriptions":{"typeIdentifier":"t_rational_18_by_1","typeString":"int_const 18"},"value":"18"},"id":3790,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"Conditional","src":"6746:28:13","trueExpression":{"id":3788,"name":"assetDecimals","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3779,"src":"6756:13:13","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}},"typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}},"src":"6722:52:13","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}},"id":3792,"nodeType":"ExpressionStatement","src":"6722:52:13"},{"expression":{"id":3797,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"expression":{"id":3793,"name":"$","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3772,"src":"6784:1:13","typeDescriptions":{"typeIdentifier":"t_struct$_ERC4626Storage_$3701_storage_ptr","typeString":"struct ERC4626Upgradeable.ERC4626Storage storage pointer"}},"id":3795,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"memberLocation":"6786:6:13","memberName":"_asset","nodeType":"MemberAccess","referencedDeclaration":3698,"src":"6784:8:13","typeDescriptions":{"typeIdentifier":"t_contract$_IERC20_$8679","typeString":"contract IERC20"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"id":3796,"name":"asset_","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3765,"src":"6795:6:13","typeDescriptions":{"typeIdentifier":"t_contract$_IERC20_$8679","typeString":"contract IERC20"}},"src":"6784:17:13","typeDescriptions":{"typeIdentifier":"t_contract$_IERC20_$8679","typeString":"contract IERC20"}},"id":3798,"nodeType":"ExpressionStatement","src":"6784:17:13"}]},"id":3800,"implemented":true,"kind":"function","modifiers":[{"id":3768,"kind":"modifierInvocation","modifierName":{"id":3767,"name":"onlyInitializing","nameLocations":["6562:16:13"],"nodeType":"IdentifierPath","referencedDeclaration":7815,"src":"6562:16:13"},"nodeType":"ModifierInvocation","src":"6562:16:13"}],"name":"__ERC4626_init_unchained","nameLocation":"6513:24:13","nodeType":"FunctionDefinition","parameters":{"id":3766,"nodeType":"ParameterList","parameters":[{"constant":false,"id":3765,"mutability":"mutable","name":"asset_","nameLocation":"6545:6:13","nodeType":"VariableDeclaration","scope":3800,"src":"6538:13:13","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_contract$_IERC20_$8679","typeString":"contract IERC20"},"typeName":{"id":3764,"nodeType":"UserDefinedTypeName","pathNode":{"id":3763,"name":"IERC20","nameLocations":["6538:6:13"],"nodeType":"IdentifierPath","referencedDeclaration":8679,"src":"6538:6:13"},"referencedDeclaration":8679,"src":"6538:6:13","typeDescriptions":{"typeIdentifier":"t_contract$_IERC20_$8679","typeString":"contract IERC20"}},"visibility":"internal"}],"src":"6537:15:13"},"returnParameters":{"id":3769,"nodeType":"ParameterList","parameters":[],"src":"6579:0:13"},"scope":4428,"src":"6504:304:13","stateMutability":"nonpayable","virtual":false,"visibility":"internal"},{"body":{"id":3877,"nodeType":"Block","src":"7048:510:13","statements":[{"assignments":[3815],"declarations":[{"constant":false,"id":3815,"mutability":"mutable","name":"ptr","nameLocation":"7073:3:13","nodeType":"VariableDeclaration","scope":3877,"src":"7058:18:13","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_userDefinedValueType$_Pointer_$10476","typeString":"Memory.Pointer"},"typeName":{"id":3814,"nodeType":"UserDefinedTypeName","pathNode":{"id":3813,"name":"Memory.Pointer","nameLocations":["7058:6:13","7065:7:13"],"nodeType":"IdentifierPath","referencedDeclaration":10476,"src":"7058:14:13"},"referencedDeclaration":10476,"src":"7058:14:13","typeDescriptions":{"typeIdentifier":"t_userDefinedValueType$_Pointer_$10476","typeString":"Memory.Pointer"}},"visibility":"internal"}],"id":3819,"initialValue":{"arguments":[],"expression":{"argumentTypes":[],"expression":{"id":3816,"name":"Memory","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10769,"src":"7079:6:13","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_Memory_$10769_$","typeString":"type(library Memory)"}},"id":3817,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"7086:20:13","memberName":"getFreeMemoryPointer","nodeType":"MemberAccess","referencedDeclaration":10485,"src":"7079:27:13","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$__$returns$_t_userDefinedValueType$_Pointer_$10476_$","typeString":"function () pure returns (Memory.Pointer)"}},"id":3818,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"7079:29:13","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_userDefinedValueType$_Pointer_$10476","typeString":"Memory.Pointer"}},"nodeType":"VariableDeclarationStatement","src":"7058:50:13"},{"assignments":[3821,3823,null],"declarations":[{"constant":false,"id":3821,"mutability":"mutable","name":"success","nameLocation":"7124:7:13","nodeType":"VariableDeclaration","scope":3877,"src":"7119:12:13","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":3820,"name":"bool","nodeType":"ElementaryTypeName","src":"7119:4:13","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"},{"constant":false,"id":3823,"mutability":"mutable","name":"returnedDecimals","nameLocation":"7141:16:13","nodeType":"VariableDeclaration","scope":3877,"src":"7133:24:13","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":3822,"name":"bytes32","nodeType":"ElementaryTypeName","src":"7133:7:13","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"},null],"id":3837,"initialValue":{"arguments":[{"arguments":[{"id":3828,"name":"asset_","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3804,"src":"7221:6:13","typeDescriptions":{"typeIdentifier":"t_contract$_IERC20_$8679","typeString":"contract IERC20"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_contract$_IERC20_$8679","typeString":"contract IERC20"}],"id":3827,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"7213:7:13","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":3826,"name":"address","nodeType":"ElementaryTypeName","src":"7213:7:13","typeDescriptions":{}}},"id":3829,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"7213:15:13","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"arguments":[{"expression":{"id":3832,"name":"IERC20Metadata","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9411,"src":"7257:14:13","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_IERC20Metadata_$9411_$","typeString":"type(contract IERC20Metadata)"}},"id":3833,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberLocation":"7272:8:13","memberName":"decimals","nodeType":"MemberAccess","referencedDeclaration":9410,"src":"7257:23:13","typeDescriptions":{"typeIdentifier":"t_function_declaration_view$__$returns$_t_uint8_$","typeString":"function IERC20Metadata.decimals() view returns (uint8)"}},{"components":[],"id":3834,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"TupleExpression","src":"7282:2:13","typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_function_declaration_view$__$returns$_t_uint8_$","typeString":"function IERC20Metadata.decimals() view returns (uint8)"},{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}],"expression":{"id":3830,"name":"abi","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-1,"src":"7242:3:13","typeDescriptions":{"typeIdentifier":"t_magic_abi","typeString":"abi"}},"id":3831,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberLocation":"7246:10:13","memberName":"encodeCall","nodeType":"MemberAccess","src":"7242:14:13","typeDescriptions":{"typeIdentifier":"t_function_abiencodecall_pure$__$returns$_t_bytes_memory_ptr_$","typeString":"function () pure returns (bytes memory)"}},"id":3835,"isConstant":false,"isLValue":false,"isPure":true,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"7242:43:13","tryCall":false,"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":3824,"name":"LowLevelCall","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10467,"src":"7163:12:13","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_LowLevelCall_$10467_$","typeString":"type(library LowLevelCall)"}},"id":3825,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"7176:23:13","memberName":"staticcallReturn64Bytes","nodeType":"MemberAccess","referencedDeclaration":10409,"src":"7163:36:13","typeDescriptions":{"typeIdentifier":"t_function_internal_view$_t_address_$_t_bytes_memory_ptr_$returns$_t_bool_$_t_bytes32_$_t_bytes32_$","typeString":"function (address,bytes memory) view returns (bool,bytes32,bytes32)"}},"id":3836,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"7163:132:13","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$_t_bool_$_t_bytes32_$_t_bytes32_$","typeString":"tuple(bool,bytes32,bytes32)"}},"nodeType":"VariableDeclarationStatement","src":"7118:177:13"},{"expression":{"arguments":[{"id":3841,"name":"ptr","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3815,"src":"7333:3:13","typeDescriptions":{"typeIdentifier":"t_userDefinedValueType$_Pointer_$10476","typeString":"Memory.Pointer"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_userDefinedValueType$_Pointer_$10476","typeString":"Memory.Pointer"}],"expression":{"id":3838,"name":"Memory","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10769,"src":"7305:6:13","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_Memory_$10769_$","typeString":"type(library Memory)"}},"id":3840,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"7312:20:13","memberName":"setFreeMemoryPointer","nodeType":"MemberAccess","referencedDeclaration":10494,"src":"7305:27:13","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_userDefinedValueType$_Pointer_$10476_$returns$__$","typeString":"function (Memory.Pointer) pure"}},"id":3842,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"7305:32:13","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":3843,"nodeType":"ExpressionStatement","src":"7305:32:13"},{"expression":{"condition":{"components":[{"commonType":{"typeIdentifier":"t_bool","typeString":"bool"},"id":3861,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"commonType":{"typeIdentifier":"t_bool","typeString":"bool"},"id":3850,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":3844,"name":"success","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3821,"src":"7368:7:13","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"nodeType":"BinaryOperation","operator":"&&","rightExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":3849,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"arguments":[],"expression":{"argumentTypes":[],"expression":{"id":3845,"name":"LowLevelCall","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10467,"src":"7379:12:13","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_LowLevelCall_$10467_$","typeString":"type(library LowLevelCall)"}},"id":3846,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"7392:14:13","memberName":"returnDataSize","nodeType":"MemberAccess","referencedDeclaration":10445,"src":"7379:27:13","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$__$returns$_t_uint256_$","typeString":"function () pure returns (uint256)"}},"id":3847,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"7379:29:13","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">=","rightExpression":{"hexValue":"3332","id":3848,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"7412:2:13","typeDescriptions":{"typeIdentifier":"t_rational_32_by_1","typeString":"int_const 32"},"value":"32"},"src":"7379:35:13","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"src":"7368:46:13","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"nodeType":"BinaryOperation","operator":"&&","rightExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":3860,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"arguments":[{"id":3853,"name":"returnedDecimals","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3823,"src":"7426:16:13","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes32","typeString":"bytes32"}],"id":3852,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"7418:7:13","typeDescriptions":{"typeIdentifier":"t_type$_t_uint256_$","typeString":"type(uint256)"},"typeName":{"id":3851,"name":"uint256","nodeType":"ElementaryTypeName","src":"7418:7:13","typeDescriptions":{}}},"id":3854,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"7418:25:13","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"<=","rightExpression":{"expression":{"arguments":[{"id":3857,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"7452:5:13","typeDescriptions":{"typeIdentifier":"t_type$_t_uint8_$","typeString":"type(uint8)"},"typeName":{"id":3856,"name":"uint8","nodeType":"ElementaryTypeName","src":"7452:5:13","typeDescriptions":{}}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_type$_t_uint8_$","typeString":"type(uint8)"}],"id":3855,"name":"type","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-27,"src":"7447:4:13","typeDescriptions":{"typeIdentifier":"t_function_metatype_pure$__$returns$__$","typeString":"function () pure"}},"id":3858,"isConstant":false,"isLValue":false,"isPure":true,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"7447:11:13","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_magic_meta_type_t_uint8","typeString":"type(uint8)"}},"id":3859,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberLocation":"7459:3:13","memberName":"max","nodeType":"MemberAccess","src":"7447:15:13","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}},"src":"7418:44:13","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"src":"7368:94:13","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}}],"id":3862,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"7367:96:13","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"falseExpression":{"components":[{"hexValue":"66616c7365","id":3872,"isConstant":false,"isLValue":false,"isPure":true,"kind":"bool","lValueRequested":false,"nodeType":"Literal","src":"7542:5:13","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"value":"false"},{"hexValue":"30","id":3873,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"7549:1:13","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"}],"id":3874,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"TupleExpression","src":"7541:10:13","typeDescriptions":{"typeIdentifier":"t_tuple$_t_bool_$_t_rational_0_by_1_$","typeString":"tuple(bool,int_const 0)"}},"id":3875,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"Conditional","src":"7367:184:13","trueExpression":{"components":[{"hexValue":"74727565","id":3863,"isConstant":false,"isLValue":false,"isPure":true,"kind":"bool","lValueRequested":false,"nodeType":"Literal","src":"7483:4:13","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"value":"true"},{"arguments":[{"arguments":[{"id":3868,"name":"returnedDecimals","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3823,"src":"7503:16:13","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes32","typeString":"bytes32"}],"id":3867,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"7495:7:13","typeDescriptions":{"typeIdentifier":"t_type$_t_uint256_$","typeString":"type(uint256)"},"typeName":{"id":3866,"name":"uint256","nodeType":"ElementaryTypeName","src":"7495:7:13","typeDescriptions":{}}},"id":3869,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"7495:25:13","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":3865,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"7489:5:13","typeDescriptions":{"typeIdentifier":"t_type$_t_uint8_$","typeString":"type(uint8)"},"typeName":{"id":3864,"name":"uint8","nodeType":"ElementaryTypeName","src":"7489:5:13","typeDescriptions":{}}},"id":3870,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"7489:32:13","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}}],"id":3871,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"7482:40:13","typeDescriptions":{"typeIdentifier":"t_tuple$_t_bool_$_t_uint8_$","typeString":"tuple(bool,uint8)"}},"typeDescriptions":{"typeIdentifier":"t_tuple$_t_bool_$_t_uint8_$","typeString":"tuple(bool,uint8)"}},"functionReturnParameters":3810,"id":3876,"nodeType":"Return","src":"7348:203:13"}]},"documentation":{"id":3801,"nodeType":"StructuredDocumentation","src":"6814:132:13","text":" @dev Attempts to fetch the asset decimals. A return value of false indicates that the attempt failed in some way."},"id":3878,"implemented":true,"kind":"function","modifiers":[],"name":"_tryGetAssetDecimals","nameLocation":"6960:20:13","nodeType":"FunctionDefinition","parameters":{"id":3805,"nodeType":"ParameterList","parameters":[{"constant":false,"id":3804,"mutability":"mutable","name":"asset_","nameLocation":"6988:6:13","nodeType":"VariableDeclaration","scope":3878,"src":"6981:13:13","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_contract$_IERC20_$8679","typeString":"contract IERC20"},"typeName":{"id":3803,"nodeType":"UserDefinedTypeName","pathNode":{"id":3802,"name":"IERC20","nameLocations":["6981:6:13"],"nodeType":"IdentifierPath","referencedDeclaration":8679,"src":"6981:6:13"},"referencedDeclaration":8679,"src":"6981:6:13","typeDescriptions":{"typeIdentifier":"t_contract$_IERC20_$8679","typeString":"contract IERC20"}},"visibility":"internal"}],"src":"6980:15:13"},"returnParameters":{"id":3810,"nodeType":"ParameterList","parameters":[{"constant":false,"id":3807,"mutability":"mutable","name":"ok","nameLocation":"7023:2:13","nodeType":"VariableDeclaration","scope":3878,"src":"7018:7:13","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":3806,"name":"bool","nodeType":"ElementaryTypeName","src":"7018:4:13","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"},{"constant":false,"id":3809,"mutability":"mutable","name":"assetDecimals","nameLocation":"7033:13:13","nodeType":"VariableDeclaration","scope":3878,"src":"7027:19:13","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"},"typeName":{"id":3808,"name":"uint8","nodeType":"ElementaryTypeName","src":"7027:5:13","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}},"visibility":"internal"}],"src":"7017:30:13"},"scope":4428,"src":"6951:607:13","stateMutability":"view","virtual":false,"visibility":"private"},{"baseFunctions":[3184,9410],"body":{"id":3899,"nodeType":"Block","src":"8062:122:13","statements":[{"assignments":[3889],"declarations":[{"constant":false,"id":3889,"mutability":"mutable","name":"$","nameLocation":"8095:1:13","nodeType":"VariableDeclaration","scope":3899,"src":"8072:24:13","stateVariable":false,"storageLocation":"storage","typeDescriptions":{"typeIdentifier":"t_struct$_ERC4626Storage_$3701_storage_ptr","typeString":"struct ERC4626Upgradeable.ERC4626Storage"},"typeName":{"id":3888,"nodeType":"UserDefinedTypeName","pathNode":{"id":3887,"name":"ERC4626Storage","nameLocations":["8072:14:13"],"nodeType":"IdentifierPath","referencedDeclaration":3701,"src":"8072:14:13"},"referencedDeclaration":3701,"src":"8072:14:13","typeDescriptions":{"typeIdentifier":"t_struct$_ERC4626Storage_$3701_storage_ptr","typeString":"struct ERC4626Upgradeable.ERC4626Storage"}},"visibility":"internal"}],"id":3892,"initialValue":{"arguments":[],"expression":{"argumentTypes":[],"id":3890,"name":"_getERC4626Storage","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3712,"src":"8099:18:13","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$__$returns$_t_struct$_ERC4626Storage_$3701_storage_ptr_$","typeString":"function () pure returns (struct ERC4626Upgradeable.ERC4626Storage storage pointer)"}},"id":3891,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"8099:20:13","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_struct$_ERC4626Storage_$3701_storage_ptr","typeString":"struct ERC4626Upgradeable.ERC4626Storage storage pointer"}},"nodeType":"VariableDeclarationStatement","src":"8072:47:13"},{"expression":{"commonType":{"typeIdentifier":"t_uint8","typeString":"uint8"},"id":3897,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"expression":{"id":3893,"name":"$","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3889,"src":"8136:1:13","typeDescriptions":{"typeIdentifier":"t_struct$_ERC4626Storage_$3701_storage_ptr","typeString":"struct ERC4626Upgradeable.ERC4626Storage storage pointer"}},"id":3894,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"8138:19:13","memberName":"_underlyingDecimals","nodeType":"MemberAccess","referencedDeclaration":3700,"src":"8136:21:13","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}},"nodeType":"BinaryOperation","operator":"+","rightExpression":{"arguments":[],"expression":{"argumentTypes":[],"id":3895,"name":"_decimalsOffset","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4427,"src":"8160:15:13","typeDescriptions":{"typeIdentifier":"t_function_internal_view$__$returns$_t_uint8_$","typeString":"function () view returns (uint8)"}},"id":3896,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"8160:17:13","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}},"src":"8136:41:13","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}},"functionReturnParameters":3886,"id":3898,"nodeType":"Return","src":"8129:48:13"}]},"documentation":{"id":3879,"nodeType":"StructuredDocumentation","src":"7564:394:13","text":" @dev Decimals are computed by adding the decimal offset on top of the underlying asset's decimals. This\n \"original\" value is cached during construction of the vault contract. If this read operation fails (e.g., the\n asset has not been created yet), a default of 18 is used to represent the underlying asset's decimals.\n See {IERC20Metadata-decimals}."},"functionSelector":"313ce567","id":3900,"implemented":true,"kind":"function","modifiers":[],"name":"decimals","nameLocation":"7972:8:13","nodeType":"FunctionDefinition","overrides":{"id":3883,"nodeType":"OverrideSpecifier","overrides":[{"id":3881,"name":"IERC20Metadata","nameLocations":["8012:14:13"],"nodeType":"IdentifierPath","referencedDeclaration":9411,"src":"8012:14:13"},{"id":3882,"name":"ERC20Upgradeable","nameLocations":["8028:16:13"],"nodeType":"IdentifierPath","referencedDeclaration":3664,"src":"8028:16:13"}],"src":"8003:42:13"},"parameters":{"id":3880,"nodeType":"ParameterList","parameters":[],"src":"7980:2:13"},"returnParameters":{"id":3886,"nodeType":"ParameterList","parameters":[{"constant":false,"id":3885,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":3900,"src":"8055:5:13","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"},"typeName":{"id":3884,"name":"uint8","nodeType":"ElementaryTypeName","src":"8055:5:13","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}},"visibility":"internal"}],"src":"8054:7:13"},"scope":4428,"src":"7963:221:13","stateMutability":"view","virtual":true,"visibility":"public"},{"baseFunctions":[6996],"body":{"id":3918,"nodeType":"Block","src":"8274:98:13","statements":[{"assignments":[3908],"declarations":[{"constant":false,"id":3908,"mutability":"mutable","name":"$","nameLocation":"8307:1:13","nodeType":"VariableDeclaration","scope":3918,"src":"8284:24:13","stateVariable":false,"storageLocation":"storage","typeDescriptions":{"typeIdentifier":"t_struct$_ERC4626Storage_$3701_storage_ptr","typeString":"struct ERC4626Upgradeable.ERC4626Storage"},"typeName":{"id":3907,"nodeType":"UserDefinedTypeName","pathNode":{"id":3906,"name":"ERC4626Storage","nameLocations":["8284:14:13"],"nodeType":"IdentifierPath","referencedDeclaration":3701,"src":"8284:14:13"},"referencedDeclaration":3701,"src":"8284:14:13","typeDescriptions":{"typeIdentifier":"t_struct$_ERC4626Storage_$3701_storage_ptr","typeString":"struct ERC4626Upgradeable.ERC4626Storage"}},"visibility":"internal"}],"id":3911,"initialValue":{"arguments":[],"expression":{"argumentTypes":[],"id":3909,"name":"_getERC4626Storage","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3712,"src":"8311:18:13","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$__$returns$_t_struct$_ERC4626Storage_$3701_storage_ptr_$","typeString":"function () pure returns (struct ERC4626Upgradeable.ERC4626Storage storage pointer)"}},"id":3910,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"8311:20:13","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_struct$_ERC4626Storage_$3701_storage_ptr","typeString":"struct ERC4626Upgradeable.ERC4626Storage storage pointer"}},"nodeType":"VariableDeclarationStatement","src":"8284:47:13"},{"expression":{"arguments":[{"expression":{"id":3914,"name":"$","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3908,"src":"8356:1:13","typeDescriptions":{"typeIdentifier":"t_struct$_ERC4626Storage_$3701_storage_ptr","typeString":"struct ERC4626Upgradeable.ERC4626Storage storage pointer"}},"id":3915,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"8358:6:13","memberName":"_asset","nodeType":"MemberAccess","referencedDeclaration":3698,"src":"8356:8:13","typeDescriptions":{"typeIdentifier":"t_contract$_IERC20_$8679","typeString":"contract IERC20"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_contract$_IERC20_$8679","typeString":"contract IERC20"}],"id":3913,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"8348:7:13","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":3912,"name":"address","nodeType":"ElementaryTypeName","src":"8348:7:13","typeDescriptions":{}}},"id":3916,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"8348:17:13","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"functionReturnParameters":3905,"id":3917,"nodeType":"Return","src":"8341:24:13"}]},"documentation":{"id":3901,"nodeType":"StructuredDocumentation","src":"8190:24:13","text":"@inheritdoc IERC4626"},"functionSelector":"38d52e0f","id":3919,"implemented":true,"kind":"function","modifiers":[],"name":"asset","nameLocation":"8228:5:13","nodeType":"FunctionDefinition","parameters":{"id":3902,"nodeType":"ParameterList","parameters":[],"src":"8233:2:13"},"returnParameters":{"id":3905,"nodeType":"ParameterList","parameters":[{"constant":false,"id":3904,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":3919,"src":"8265:7:13","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":3903,"name":"address","nodeType":"ElementaryTypeName","src":"8265:7:13","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"8264:9:13"},"scope":4428,"src":"8219:153:13","stateMutability":"view","virtual":true,"visibility":"public"},{"baseFunctions":[7002],"body":{"id":3936,"nodeType":"Block","src":"8468:64:13","statements":[{"expression":{"arguments":[{"arguments":[{"id":3932,"name":"this","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-28,"src":"8519:4:13","typeDescriptions":{"typeIdentifier":"t_contract$_ERC4626Upgradeable_$4428","typeString":"contract ERC4626Upgradeable"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_contract$_ERC4626Upgradeable_$4428","typeString":"contract ERC4626Upgradeable"}],"id":3931,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"8511:7:13","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":3930,"name":"address","nodeType":"ElementaryTypeName","src":"8511:7:13","typeDescriptions":{}}},"id":3933,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"8511:13:13","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"expression":{"arguments":[{"arguments":[],"expression":{"argumentTypes":[],"id":3926,"name":"asset","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3919,"src":"8492:5:13","typeDescriptions":{"typeIdentifier":"t_function_internal_view$__$returns$_t_address_$","typeString":"function () view returns (address)"}},"id":3927,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"8492:7:13","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"id":3925,"name":"IERC20","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8679,"src":"8485:6:13","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_IERC20_$8679_$","typeString":"type(contract IERC20)"}},"id":3928,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"8485:15:13","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_contract$_IERC20_$8679","typeString":"contract IERC20"}},"id":3929,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"8501:9:13","memberName":"balanceOf","nodeType":"MemberAccess","referencedDeclaration":8636,"src":"8485:25:13","typeDescriptions":{"typeIdentifier":"t_function_external_view$_t_address_$returns$_t_uint256_$","typeString":"function (address) view external returns (uint256)"}},"id":3934,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"8485:40:13","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"functionReturnParameters":3924,"id":3935,"nodeType":"Return","src":"8478:47:13"}]},"documentation":{"id":3920,"nodeType":"StructuredDocumentation","src":"8378:24:13","text":"@inheritdoc IERC4626"},"functionSelector":"01e1d114","id":3937,"implemented":true,"kind":"function","modifiers":[],"name":"totalAssets","nameLocation":"8416:11:13","nodeType":"FunctionDefinition","parameters":{"id":3921,"nodeType":"ParameterList","parameters":[],"src":"8427:2:13"},"returnParameters":{"id":3924,"nodeType":"ParameterList","parameters":[{"constant":false,"id":3923,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":3937,"src":"8459:7:13","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":3922,"name":"uint256","nodeType":"ElementaryTypeName","src":"8459:7:13","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"8458:9:13"},"scope":4428,"src":"8407:125:13","stateMutability":"view","virtual":true,"visibility":"public"},{"baseFunctions":[7010],"body":{"id":3952,"nodeType":"Block","src":"8646:69:13","statements":[{"expression":{"arguments":[{"id":3946,"name":"assets","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3940,"src":"8680:6:13","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"expression":{"expression":{"id":3947,"name":"Math","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":12726,"src":"8688:4:13","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_Math_$12726_$","typeString":"type(library Math)"}},"id":3948,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"8693:8:13","memberName":"Rounding","nodeType":"MemberAccess","referencedDeclaration":11096,"src":"8688:13:13","typeDescriptions":{"typeIdentifier":"t_type$_t_enum$_Rounding_$11096_$","typeString":"type(enum Math.Rounding)"}},"id":3949,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberLocation":"8702:5:13","memberName":"Floor","nodeType":"MemberAccess","referencedDeclaration":11092,"src":"8688:19:13","typeDescriptions":{"typeIdentifier":"t_enum$_Rounding_$11096","typeString":"enum Math.Rounding"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_enum$_Rounding_$11096","typeString":"enum Math.Rounding"}],"id":3945,"name":"_convertToShares","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4301,"src":"8663:16:13","typeDescriptions":{"typeIdentifier":"t_function_internal_view$_t_uint256_$_t_enum$_Rounding_$11096_$returns$_t_uint256_$","typeString":"function (uint256,enum Math.Rounding) view returns (uint256)"}},"id":3950,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"8663:45:13","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"functionReturnParameters":3944,"id":3951,"nodeType":"Return","src":"8656:52:13"}]},"documentation":{"id":3938,"nodeType":"StructuredDocumentation","src":"8538:24:13","text":"@inheritdoc IERC4626"},"functionSelector":"c6e6f592","id":3953,"implemented":true,"kind":"function","modifiers":[],"name":"convertToShares","nameLocation":"8576:15:13","nodeType":"FunctionDefinition","parameters":{"id":3941,"nodeType":"ParameterList","parameters":[{"constant":false,"id":3940,"mutability":"mutable","name":"assets","nameLocation":"8600:6:13","nodeType":"VariableDeclaration","scope":3953,"src":"8592:14:13","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":3939,"name":"uint256","nodeType":"ElementaryTypeName","src":"8592:7:13","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"8591:16:13"},"returnParameters":{"id":3944,"nodeType":"ParameterList","parameters":[{"constant":false,"id":3943,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":3953,"src":"8637:7:13","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":3942,"name":"uint256","nodeType":"ElementaryTypeName","src":"8637:7:13","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"8636:9:13"},"scope":4428,"src":"8567:148:13","stateMutability":"view","virtual":true,"visibility":"public"},{"baseFunctions":[7018],"body":{"id":3968,"nodeType":"Block","src":"8829:69:13","statements":[{"expression":{"arguments":[{"id":3962,"name":"shares","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3956,"src":"8863:6:13","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"expression":{"expression":{"id":3963,"name":"Math","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":12726,"src":"8871:4:13","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_Math_$12726_$","typeString":"type(library Math)"}},"id":3964,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"8876:8:13","memberName":"Rounding","nodeType":"MemberAccess","referencedDeclaration":11096,"src":"8871:13:13","typeDescriptions":{"typeIdentifier":"t_type$_t_enum$_Rounding_$11096_$","typeString":"type(enum Math.Rounding)"}},"id":3965,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberLocation":"8885:5:13","memberName":"Floor","nodeType":"MemberAccess","referencedDeclaration":11092,"src":"8871:19:13","typeDescriptions":{"typeIdentifier":"t_enum$_Rounding_$11096","typeString":"enum Math.Rounding"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_enum$_Rounding_$11096","typeString":"enum Math.Rounding"}],"id":3961,"name":"_convertToAssets","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4329,"src":"8846:16:13","typeDescriptions":{"typeIdentifier":"t_function_internal_view$_t_uint256_$_t_enum$_Rounding_$11096_$returns$_t_uint256_$","typeString":"function (uint256,enum Math.Rounding) view returns (uint256)"}},"id":3966,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"8846:45:13","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"functionReturnParameters":3960,"id":3967,"nodeType":"Return","src":"8839:52:13"}]},"documentation":{"id":3954,"nodeType":"StructuredDocumentation","src":"8721:24:13","text":"@inheritdoc IERC4626"},"functionSelector":"07a2d13a","id":3969,"implemented":true,"kind":"function","modifiers":[],"name":"convertToAssets","nameLocation":"8759:15:13","nodeType":"FunctionDefinition","parameters":{"id":3957,"nodeType":"ParameterList","parameters":[{"constant":false,"id":3956,"mutability":"mutable","name":"shares","nameLocation":"8783:6:13","nodeType":"VariableDeclaration","scope":3969,"src":"8775:14:13","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":3955,"name":"uint256","nodeType":"ElementaryTypeName","src":"8775:7:13","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"8774:16:13"},"returnParameters":{"id":3960,"nodeType":"ParameterList","parameters":[{"constant":false,"id":3959,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":3969,"src":"8820:7:13","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":3958,"name":"uint256","nodeType":"ElementaryTypeName","src":"8820:7:13","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"8819:9:13"},"scope":4428,"src":"8750:148:13","stateMutability":"view","virtual":true,"visibility":"public"},{"baseFunctions":[7026],"body":{"id":3983,"nodeType":"Block","src":"9000:41:13","statements":[{"expression":{"expression":{"arguments":[{"id":3979,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"9022:7:13","typeDescriptions":{"typeIdentifier":"t_type$_t_uint256_$","typeString":"type(uint256)"},"typeName":{"id":3978,"name":"uint256","nodeType":"ElementaryTypeName","src":"9022:7:13","typeDescriptions":{}}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_type$_t_uint256_$","typeString":"type(uint256)"}],"id":3977,"name":"type","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-27,"src":"9017:4:13","typeDescriptions":{"typeIdentifier":"t_function_metatype_pure$__$returns$__$","typeString":"function () pure"}},"id":3980,"isConstant":false,"isLValue":false,"isPure":true,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"9017:13:13","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_magic_meta_type_t_uint256","typeString":"type(uint256)"}},"id":3981,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberLocation":"9031:3:13","memberName":"max","nodeType":"MemberAccess","src":"9017:17:13","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"functionReturnParameters":3976,"id":3982,"nodeType":"Return","src":"9010:24:13"}]},"documentation":{"id":3970,"nodeType":"StructuredDocumentation","src":"8904:24:13","text":"@inheritdoc IERC4626"},"functionSelector":"402d267d","id":3984,"implemented":true,"kind":"function","modifiers":[],"name":"maxDeposit","nameLocation":"8942:10:13","nodeType":"FunctionDefinition","parameters":{"id":3973,"nodeType":"ParameterList","parameters":[{"constant":false,"id":3972,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":3984,"src":"8953:7:13","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":3971,"name":"address","nodeType":"ElementaryTypeName","src":"8953:7:13","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"8952:9:13"},"returnParameters":{"id":3976,"nodeType":"ParameterList","parameters":[{"constant":false,"id":3975,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":3984,"src":"8991:7:13","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":3974,"name":"uint256","nodeType":"ElementaryTypeName","src":"8991:7:13","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"8990:9:13"},"scope":4428,"src":"8933:108:13","stateMutability":"view","virtual":true,"visibility":"public"},{"baseFunctions":[7052],"body":{"id":3998,"nodeType":"Block","src":"9140:41:13","statements":[{"expression":{"expression":{"arguments":[{"id":3994,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"9162:7:13","typeDescriptions":{"typeIdentifier":"t_type$_t_uint256_$","typeString":"type(uint256)"},"typeName":{"id":3993,"name":"uint256","nodeType":"ElementaryTypeName","src":"9162:7:13","typeDescriptions":{}}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_type$_t_uint256_$","typeString":"type(uint256)"}],"id":3992,"name":"type","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-27,"src":"9157:4:13","typeDescriptions":{"typeIdentifier":"t_function_metatype_pure$__$returns$__$","typeString":"function () pure"}},"id":3995,"isConstant":false,"isLValue":false,"isPure":true,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"9157:13:13","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_magic_meta_type_t_uint256","typeString":"type(uint256)"}},"id":3996,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberLocation":"9171:3:13","memberName":"max","nodeType":"MemberAccess","src":"9157:17:13","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"functionReturnParameters":3991,"id":3997,"nodeType":"Return","src":"9150:24:13"}]},"documentation":{"id":3985,"nodeType":"StructuredDocumentation","src":"9047:24:13","text":"@inheritdoc IERC4626"},"functionSelector":"c63d75b6","id":3999,"implemented":true,"kind":"function","modifiers":[],"name":"maxMint","nameLocation":"9085:7:13","nodeType":"FunctionDefinition","parameters":{"id":3988,"nodeType":"ParameterList","parameters":[{"constant":false,"id":3987,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":3999,"src":"9093:7:13","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":3986,"name":"address","nodeType":"ElementaryTypeName","src":"9093:7:13","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"9092:9:13"},"returnParameters":{"id":3991,"nodeType":"ParameterList","parameters":[{"constant":false,"id":3990,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":3999,"src":"9131:7:13","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":3989,"name":"uint256","nodeType":"ElementaryTypeName","src":"9131:7:13","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"9130:9:13"},"scope":4428,"src":"9076:105:13","stateMutability":"view","virtual":true,"visibility":"public"},{"baseFunctions":[7078],"body":{"id":4013,"nodeType":"Block","src":"9290:55:13","statements":[{"expression":{"arguments":[{"arguments":[{"id":4009,"name":"owner","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4002,"src":"9331:5:13","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"id":4008,"name":"maxRedeem","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4027,"src":"9321:9:13","typeDescriptions":{"typeIdentifier":"t_function_internal_view$_t_address_$returns$_t_uint256_$","typeString":"function (address) view returns (uint256)"}},"id":4010,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"9321:16:13","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":4007,"name":"previewRedeem","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4091,"src":"9307:13:13","typeDescriptions":{"typeIdentifier":"t_function_internal_view$_t_uint256_$returns$_t_uint256_$","typeString":"function (uint256) view returns (uint256)"}},"id":4011,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"9307:31:13","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"functionReturnParameters":4006,"id":4012,"nodeType":"Return","src":"9300:38:13"}]},"documentation":{"id":4000,"nodeType":"StructuredDocumentation","src":"9187:24:13","text":"@inheritdoc IERC4626"},"functionSelector":"ce96cb77","id":4014,"implemented":true,"kind":"function","modifiers":[],"name":"maxWithdraw","nameLocation":"9225:11:13","nodeType":"FunctionDefinition","parameters":{"id":4003,"nodeType":"ParameterList","parameters":[{"constant":false,"id":4002,"mutability":"mutable","name":"owner","nameLocation":"9245:5:13","nodeType":"VariableDeclaration","scope":4014,"src":"9237:13:13","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":4001,"name":"address","nodeType":"ElementaryTypeName","src":"9237:7:13","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"9236:15:13"},"returnParameters":{"id":4006,"nodeType":"ParameterList","parameters":[{"constant":false,"id":4005,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":4014,"src":"9281:7:13","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":4004,"name":"uint256","nodeType":"ElementaryTypeName","src":"9281:7:13","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"9280:9:13"},"scope":4428,"src":"9216:129:13","stateMutability":"view","virtual":true,"visibility":"public"},{"baseFunctions":[7106],"body":{"id":4026,"nodeType":"Block","src":"9452:40:13","statements":[{"expression":{"arguments":[{"id":4023,"name":"owner","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4017,"src":"9479:5:13","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"id":4022,"name":"balanceOf","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3220,"src":"9469:9:13","typeDescriptions":{"typeIdentifier":"t_function_internal_view$_t_address_$returns$_t_uint256_$","typeString":"function (address) view returns (uint256)"}},"id":4024,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"9469:16:13","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"functionReturnParameters":4021,"id":4025,"nodeType":"Return","src":"9462:23:13"}]},"documentation":{"id":4015,"nodeType":"StructuredDocumentation","src":"9351:24:13","text":"@inheritdoc IERC4626"},"functionSelector":"d905777e","id":4027,"implemented":true,"kind":"function","modifiers":[],"name":"maxRedeem","nameLocation":"9389:9:13","nodeType":"FunctionDefinition","parameters":{"id":4018,"nodeType":"ParameterList","parameters":[{"constant":false,"id":4017,"mutability":"mutable","name":"owner","nameLocation":"9407:5:13","nodeType":"VariableDeclaration","scope":4027,"src":"9399:13:13","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":4016,"name":"address","nodeType":"ElementaryTypeName","src":"9399:7:13","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"9398:15:13"},"returnParameters":{"id":4021,"nodeType":"ParameterList","parameters":[{"constant":false,"id":4020,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":4027,"src":"9443:7:13","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":4019,"name":"uint256","nodeType":"ElementaryTypeName","src":"9443:7:13","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"9442:9:13"},"scope":4428,"src":"9380:112:13","stateMutability":"view","virtual":true,"visibility":"public"},{"baseFunctions":[7034],"body":{"id":4042,"nodeType":"Block","src":"9605:69:13","statements":[{"expression":{"arguments":[{"id":4036,"name":"assets","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4030,"src":"9639:6:13","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"expression":{"expression":{"id":4037,"name":"Math","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":12726,"src":"9647:4:13","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_Math_$12726_$","typeString":"type(library Math)"}},"id":4038,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"9652:8:13","memberName":"Rounding","nodeType":"MemberAccess","referencedDeclaration":11096,"src":"9647:13:13","typeDescriptions":{"typeIdentifier":"t_type$_t_enum$_Rounding_$11096_$","typeString":"type(enum Math.Rounding)"}},"id":4039,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberLocation":"9661:5:13","memberName":"Floor","nodeType":"MemberAccess","referencedDeclaration":11092,"src":"9647:19:13","typeDescriptions":{"typeIdentifier":"t_enum$_Rounding_$11096","typeString":"enum Math.Rounding"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_enum$_Rounding_$11096","typeString":"enum Math.Rounding"}],"id":4035,"name":"_convertToShares","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4301,"src":"9622:16:13","typeDescriptions":{"typeIdentifier":"t_function_internal_view$_t_uint256_$_t_enum$_Rounding_$11096_$returns$_t_uint256_$","typeString":"function (uint256,enum Math.Rounding) view returns (uint256)"}},"id":4040,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"9622:45:13","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"functionReturnParameters":4034,"id":4041,"nodeType":"Return","src":"9615:52:13"}]},"documentation":{"id":4028,"nodeType":"StructuredDocumentation","src":"9498:24:13","text":"@inheritdoc IERC4626"},"functionSelector":"ef8b30f7","id":4043,"implemented":true,"kind":"function","modifiers":[],"name":"previewDeposit","nameLocation":"9536:14:13","nodeType":"FunctionDefinition","parameters":{"id":4031,"nodeType":"ParameterList","parameters":[{"constant":false,"id":4030,"mutability":"mutable","name":"assets","nameLocation":"9559:6:13","nodeType":"VariableDeclaration","scope":4043,"src":"9551:14:13","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":4029,"name":"uint256","nodeType":"ElementaryTypeName","src":"9551:7:13","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"9550:16:13"},"returnParameters":{"id":4034,"nodeType":"ParameterList","parameters":[{"constant":false,"id":4033,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":4043,"src":"9596:7:13","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":4032,"name":"uint256","nodeType":"ElementaryTypeName","src":"9596:7:13","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"9595:9:13"},"scope":4428,"src":"9527:147:13","stateMutability":"view","virtual":true,"visibility":"public"},{"baseFunctions":[7060],"body":{"id":4058,"nodeType":"Block","src":"9784:68:13","statements":[{"expression":{"arguments":[{"id":4052,"name":"shares","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4046,"src":"9818:6:13","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"expression":{"expression":{"id":4053,"name":"Math","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":12726,"src":"9826:4:13","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_Math_$12726_$","typeString":"type(library Math)"}},"id":4054,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"9831:8:13","memberName":"Rounding","nodeType":"MemberAccess","referencedDeclaration":11096,"src":"9826:13:13","typeDescriptions":{"typeIdentifier":"t_type$_t_enum$_Rounding_$11096_$","typeString":"type(enum Math.Rounding)"}},"id":4055,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberLocation":"9840:4:13","memberName":"Ceil","nodeType":"MemberAccess","referencedDeclaration":11093,"src":"9826:18:13","typeDescriptions":{"typeIdentifier":"t_enum$_Rounding_$11096","typeString":"enum Math.Rounding"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_enum$_Rounding_$11096","typeString":"enum Math.Rounding"}],"id":4051,"name":"_convertToAssets","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4329,"src":"9801:16:13","typeDescriptions":{"typeIdentifier":"t_function_internal_view$_t_uint256_$_t_enum$_Rounding_$11096_$returns$_t_uint256_$","typeString":"function (uint256,enum Math.Rounding) view returns (uint256)"}},"id":4056,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"9801:44:13","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"functionReturnParameters":4050,"id":4057,"nodeType":"Return","src":"9794:51:13"}]},"documentation":{"id":4044,"nodeType":"StructuredDocumentation","src":"9680:24:13","text":"@inheritdoc IERC4626"},"functionSelector":"b3d7f6b9","id":4059,"implemented":true,"kind":"function","modifiers":[],"name":"previewMint","nameLocation":"9718:11:13","nodeType":"FunctionDefinition","parameters":{"id":4047,"nodeType":"ParameterList","parameters":[{"constant":false,"id":4046,"mutability":"mutable","name":"shares","nameLocation":"9738:6:13","nodeType":"VariableDeclaration","scope":4059,"src":"9730:14:13","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":4045,"name":"uint256","nodeType":"ElementaryTypeName","src":"9730:7:13","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"9729:16:13"},"returnParameters":{"id":4050,"nodeType":"ParameterList","parameters":[{"constant":false,"id":4049,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":4059,"src":"9775:7:13","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":4048,"name":"uint256","nodeType":"ElementaryTypeName","src":"9775:7:13","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"9774:9:13"},"scope":4428,"src":"9709:143:13","stateMutability":"view","virtual":true,"visibility":"public"},{"baseFunctions":[7086],"body":{"id":4074,"nodeType":"Block","src":"9966:68:13","statements":[{"expression":{"arguments":[{"id":4068,"name":"assets","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4062,"src":"10000:6:13","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"expression":{"expression":{"id":4069,"name":"Math","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":12726,"src":"10008:4:13","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_Math_$12726_$","typeString":"type(library Math)"}},"id":4070,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"10013:8:13","memberName":"Rounding","nodeType":"MemberAccess","referencedDeclaration":11096,"src":"10008:13:13","typeDescriptions":{"typeIdentifier":"t_type$_t_enum$_Rounding_$11096_$","typeString":"type(enum Math.Rounding)"}},"id":4071,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberLocation":"10022:4:13","memberName":"Ceil","nodeType":"MemberAccess","referencedDeclaration":11093,"src":"10008:18:13","typeDescriptions":{"typeIdentifier":"t_enum$_Rounding_$11096","typeString":"enum Math.Rounding"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_enum$_Rounding_$11096","typeString":"enum Math.Rounding"}],"id":4067,"name":"_convertToShares","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4301,"src":"9983:16:13","typeDescriptions":{"typeIdentifier":"t_function_internal_view$_t_uint256_$_t_enum$_Rounding_$11096_$returns$_t_uint256_$","typeString":"function (uint256,enum Math.Rounding) view returns (uint256)"}},"id":4072,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"9983:44:13","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"functionReturnParameters":4066,"id":4073,"nodeType":"Return","src":"9976:51:13"}]},"documentation":{"id":4060,"nodeType":"StructuredDocumentation","src":"9858:24:13","text":"@inheritdoc IERC4626"},"functionSelector":"0a28a477","id":4075,"implemented":true,"kind":"function","modifiers":[],"name":"previewWithdraw","nameLocation":"9896:15:13","nodeType":"FunctionDefinition","parameters":{"id":4063,"nodeType":"ParameterList","parameters":[{"constant":false,"id":4062,"mutability":"mutable","name":"assets","nameLocation":"9920:6:13","nodeType":"VariableDeclaration","scope":4075,"src":"9912:14:13","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":4061,"name":"uint256","nodeType":"ElementaryTypeName","src":"9912:7:13","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"9911:16:13"},"returnParameters":{"id":4066,"nodeType":"ParameterList","parameters":[{"constant":false,"id":4065,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":4075,"src":"9957:7:13","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":4064,"name":"uint256","nodeType":"ElementaryTypeName","src":"9957:7:13","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"9956:9:13"},"scope":4428,"src":"9887:147:13","stateMutability":"view","virtual":true,"visibility":"public"},{"baseFunctions":[7114],"body":{"id":4090,"nodeType":"Block","src":"10146:69:13","statements":[{"expression":{"arguments":[{"id":4084,"name":"shares","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4078,"src":"10180:6:13","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"expression":{"expression":{"id":4085,"name":"Math","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":12726,"src":"10188:4:13","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_Math_$12726_$","typeString":"type(library Math)"}},"id":4086,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"10193:8:13","memberName":"Rounding","nodeType":"MemberAccess","referencedDeclaration":11096,"src":"10188:13:13","typeDescriptions":{"typeIdentifier":"t_type$_t_enum$_Rounding_$11096_$","typeString":"type(enum Math.Rounding)"}},"id":4087,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberLocation":"10202:5:13","memberName":"Floor","nodeType":"MemberAccess","referencedDeclaration":11092,"src":"10188:19:13","typeDescriptions":{"typeIdentifier":"t_enum$_Rounding_$11096","typeString":"enum Math.Rounding"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_enum$_Rounding_$11096","typeString":"enum Math.Rounding"}],"id":4083,"name":"_convertToAssets","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4329,"src":"10163:16:13","typeDescriptions":{"typeIdentifier":"t_function_internal_view$_t_uint256_$_t_enum$_Rounding_$11096_$returns$_t_uint256_$","typeString":"function (uint256,enum Math.Rounding) view returns (uint256)"}},"id":4088,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"10163:45:13","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"functionReturnParameters":4082,"id":4089,"nodeType":"Return","src":"10156:52:13"}]},"documentation":{"id":4076,"nodeType":"StructuredDocumentation","src":"10040:24:13","text":"@inheritdoc IERC4626"},"functionSelector":"4cdad506","id":4091,"implemented":true,"kind":"function","modifiers":[],"name":"previewRedeem","nameLocation":"10078:13:13","nodeType":"FunctionDefinition","parameters":{"id":4079,"nodeType":"ParameterList","parameters":[{"constant":false,"id":4078,"mutability":"mutable","name":"shares","nameLocation":"10100:6:13","nodeType":"VariableDeclaration","scope":4091,"src":"10092:14:13","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":4077,"name":"uint256","nodeType":"ElementaryTypeName","src":"10092:7:13","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"10091:16:13"},"returnParameters":{"id":4082,"nodeType":"ParameterList","parameters":[{"constant":false,"id":4081,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":4091,"src":"10137:7:13","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":4080,"name":"uint256","nodeType":"ElementaryTypeName","src":"10137:7:13","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"10136:9:13"},"scope":4428,"src":"10069:146:13","stateMutability":"view","virtual":true,"visibility":"public"},{"baseFunctions":[7044],"body":{"id":4134,"nodeType":"Block","src":"10334:308:13","statements":[{"assignments":[4102],"declarations":[{"constant":false,"id":4102,"mutability":"mutable","name":"maxAssets","nameLocation":"10352:9:13","nodeType":"VariableDeclaration","scope":4134,"src":"10344:17:13","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":4101,"name":"uint256","nodeType":"ElementaryTypeName","src":"10344:7:13","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":4106,"initialValue":{"arguments":[{"id":4104,"name":"receiver","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4096,"src":"10375:8:13","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"id":4103,"name":"maxDeposit","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3984,"src":"10364:10:13","typeDescriptions":{"typeIdentifier":"t_function_internal_view$_t_address_$returns$_t_uint256_$","typeString":"function (address) view returns (uint256)"}},"id":4105,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"10364:20:13","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"VariableDeclarationStatement","src":"10344:40:13"},{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":4109,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":4107,"name":"assets","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4094,"src":"10398:6:13","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">","rightExpression":{"id":4108,"name":"maxAssets","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4102,"src":"10407:9:13","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"10398:18:13","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":4117,"nodeType":"IfStatement","src":"10394:110:13","trueBody":{"id":4116,"nodeType":"Block","src":"10418:86:13","statements":[{"errorCall":{"arguments":[{"id":4111,"name":"receiver","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4096,"src":"10465:8:13","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":4112,"name":"assets","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4094,"src":"10475:6:13","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"id":4113,"name":"maxAssets","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4102,"src":"10483:9:13","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":4110,"name":"ERC4626ExceededMaxDeposit","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3721,"src":"10439:25:13","typeDescriptions":{"typeIdentifier":"t_function_error_pure$_t_address_$_t_uint256_$_t_uint256_$returns$_t_error_$","typeString":"function (address,uint256,uint256) pure returns (error)"}},"id":4114,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"10439:54:13","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_error","typeString":"error"}},"id":4115,"nodeType":"RevertStatement","src":"10432:61:13"}]}},{"assignments":[4119],"declarations":[{"constant":false,"id":4119,"mutability":"mutable","name":"shares","nameLocation":"10522:6:13","nodeType":"VariableDeclaration","scope":4134,"src":"10514:14:13","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":4118,"name":"uint256","nodeType":"ElementaryTypeName","src":"10514:7:13","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":4123,"initialValue":{"arguments":[{"id":4121,"name":"assets","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4094,"src":"10546:6:13","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":4120,"name":"previewDeposit","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4043,"src":"10531:14:13","typeDescriptions":{"typeIdentifier":"t_function_internal_view$_t_uint256_$returns$_t_uint256_$","typeString":"function (uint256) view returns (uint256)"}},"id":4122,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"10531:22:13","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"VariableDeclarationStatement","src":"10514:39:13"},{"expression":{"arguments":[{"arguments":[],"expression":{"argumentTypes":[],"id":4125,"name":"_msgSender","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4456,"src":"10572:10:13","typeDescriptions":{"typeIdentifier":"t_function_internal_view$__$returns$_t_address_$","typeString":"function () view returns (address)"}},"id":4126,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"10572:12:13","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":4127,"name":"receiver","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4096,"src":"10586:8:13","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":4128,"name":"assets","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4094,"src":"10596:6:13","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"id":4129,"name":"shares","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4119,"src":"10604:6:13","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"}],"id":4124,"name":"_deposit","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4369,"src":"10563:8:13","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_address_$_t_address_$_t_uint256_$_t_uint256_$returns$__$","typeString":"function (address,address,uint256,uint256)"}},"id":4130,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"10563:48:13","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":4131,"nodeType":"ExpressionStatement","src":"10563:48:13"},{"expression":{"id":4132,"name":"shares","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4119,"src":"10629:6:13","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"functionReturnParameters":4100,"id":4133,"nodeType":"Return","src":"10622:13:13"}]},"documentation":{"id":4092,"nodeType":"StructuredDocumentation","src":"10221:24:13","text":"@inheritdoc IERC4626"},"functionSelector":"6e553f65","id":4135,"implemented":true,"kind":"function","modifiers":[],"name":"deposit","nameLocation":"10259:7:13","nodeType":"FunctionDefinition","parameters":{"id":4097,"nodeType":"ParameterList","parameters":[{"constant":false,"id":4094,"mutability":"mutable","name":"assets","nameLocation":"10275:6:13","nodeType":"VariableDeclaration","scope":4135,"src":"10267:14:13","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":4093,"name":"uint256","nodeType":"ElementaryTypeName","src":"10267:7:13","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":4096,"mutability":"mutable","name":"receiver","nameLocation":"10291:8:13","nodeType":"VariableDeclaration","scope":4135,"src":"10283:16:13","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":4095,"name":"address","nodeType":"ElementaryTypeName","src":"10283:7:13","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"10266:34:13"},"returnParameters":{"id":4100,"nodeType":"ParameterList","parameters":[{"constant":false,"id":4099,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":4135,"src":"10325:7:13","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":4098,"name":"uint256","nodeType":"ElementaryTypeName","src":"10325:7:13","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"10324:9:13"},"scope":4428,"src":"10250:392:13","stateMutability":"nonpayable","virtual":true,"visibility":"public"},{"baseFunctions":[7070],"body":{"id":4178,"nodeType":"Block","src":"10758:299:13","statements":[{"assignments":[4146],"declarations":[{"constant":false,"id":4146,"mutability":"mutable","name":"maxShares","nameLocation":"10776:9:13","nodeType":"VariableDeclaration","scope":4178,"src":"10768:17:13","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":4145,"name":"uint256","nodeType":"ElementaryTypeName","src":"10768:7:13","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":4150,"initialValue":{"arguments":[{"id":4148,"name":"receiver","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4140,"src":"10796:8:13","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"id":4147,"name":"maxMint","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3999,"src":"10788:7:13","typeDescriptions":{"typeIdentifier":"t_function_internal_view$_t_address_$returns$_t_uint256_$","typeString":"function (address) view returns (uint256)"}},"id":4149,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"10788:17:13","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"VariableDeclarationStatement","src":"10768:37:13"},{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":4153,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":4151,"name":"shares","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4138,"src":"10819:6:13","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">","rightExpression":{"id":4152,"name":"maxShares","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4146,"src":"10828:9:13","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"10819:18:13","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":4161,"nodeType":"IfStatement","src":"10815:107:13","trueBody":{"id":4160,"nodeType":"Block","src":"10839:83:13","statements":[{"errorCall":{"arguments":[{"id":4155,"name":"receiver","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4140,"src":"10883:8:13","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":4156,"name":"shares","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4138,"src":"10893:6:13","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"id":4157,"name":"maxShares","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4146,"src":"10901:9:13","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":4154,"name":"ERC4626ExceededMaxMint","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3730,"src":"10860:22:13","typeDescriptions":{"typeIdentifier":"t_function_error_pure$_t_address_$_t_uint256_$_t_uint256_$returns$_t_error_$","typeString":"function (address,uint256,uint256) pure returns (error)"}},"id":4158,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"10860:51:13","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_error","typeString":"error"}},"id":4159,"nodeType":"RevertStatement","src":"10853:58:13"}]}},{"assignments":[4163],"declarations":[{"constant":false,"id":4163,"mutability":"mutable","name":"assets","nameLocation":"10940:6:13","nodeType":"VariableDeclaration","scope":4178,"src":"10932:14:13","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":4162,"name":"uint256","nodeType":"ElementaryTypeName","src":"10932:7:13","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":4167,"initialValue":{"arguments":[{"id":4165,"name":"shares","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4138,"src":"10961:6:13","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":4164,"name":"previewMint","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4059,"src":"10949:11:13","typeDescriptions":{"typeIdentifier":"t_function_internal_view$_t_uint256_$returns$_t_uint256_$","typeString":"function (uint256) view returns (uint256)"}},"id":4166,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"10949:19:13","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"VariableDeclarationStatement","src":"10932:36:13"},{"expression":{"arguments":[{"arguments":[],"expression":{"argumentTypes":[],"id":4169,"name":"_msgSender","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4456,"src":"10987:10:13","typeDescriptions":{"typeIdentifier":"t_function_internal_view$__$returns$_t_address_$","typeString":"function () view returns (address)"}},"id":4170,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"10987:12:13","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":4171,"name":"receiver","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4140,"src":"11001:8:13","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":4172,"name":"assets","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4163,"src":"11011:6:13","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"id":4173,"name":"shares","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4138,"src":"11019:6:13","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"}],"id":4168,"name":"_deposit","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4369,"src":"10978:8:13","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_address_$_t_address_$_t_uint256_$_t_uint256_$returns$__$","typeString":"function (address,address,uint256,uint256)"}},"id":4174,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"10978:48:13","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":4175,"nodeType":"ExpressionStatement","src":"10978:48:13"},{"expression":{"id":4176,"name":"assets","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4163,"src":"11044:6:13","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"functionReturnParameters":4144,"id":4177,"nodeType":"Return","src":"11037:13:13"}]},"documentation":{"id":4136,"nodeType":"StructuredDocumentation","src":"10648:24:13","text":"@inheritdoc IERC4626"},"functionSelector":"94bf804d","id":4179,"implemented":true,"kind":"function","modifiers":[],"name":"mint","nameLocation":"10686:4:13","nodeType":"FunctionDefinition","parameters":{"id":4141,"nodeType":"ParameterList","parameters":[{"constant":false,"id":4138,"mutability":"mutable","name":"shares","nameLocation":"10699:6:13","nodeType":"VariableDeclaration","scope":4179,"src":"10691:14:13","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":4137,"name":"uint256","nodeType":"ElementaryTypeName","src":"10691:7:13","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":4140,"mutability":"mutable","name":"receiver","nameLocation":"10715:8:13","nodeType":"VariableDeclaration","scope":4179,"src":"10707:16:13","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":4139,"name":"address","nodeType":"ElementaryTypeName","src":"10707:7:13","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"10690:34:13"},"returnParameters":{"id":4144,"nodeType":"ParameterList","parameters":[{"constant":false,"id":4143,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":4179,"src":"10749:7:13","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":4142,"name":"uint256","nodeType":"ElementaryTypeName","src":"10749:7:13","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"10748:9:13"},"scope":4428,"src":"10677:380:13","stateMutability":"nonpayable","virtual":true,"visibility":"public"},{"baseFunctions":[7098],"body":{"id":4225,"nodeType":"Block","src":"11192:313:13","statements":[{"assignments":[4192],"declarations":[{"constant":false,"id":4192,"mutability":"mutable","name":"maxAssets","nameLocation":"11210:9:13","nodeType":"VariableDeclaration","scope":4225,"src":"11202:17:13","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":4191,"name":"uint256","nodeType":"ElementaryTypeName","src":"11202:7:13","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":4196,"initialValue":{"arguments":[{"id":4194,"name":"owner","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4186,"src":"11234:5:13","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"id":4193,"name":"maxWithdraw","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4014,"src":"11222:11:13","typeDescriptions":{"typeIdentifier":"t_function_internal_view$_t_address_$returns$_t_uint256_$","typeString":"function (address) view returns (uint256)"}},"id":4195,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"11222:18:13","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"VariableDeclarationStatement","src":"11202:38:13"},{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":4199,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":4197,"name":"assets","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4182,"src":"11254:6:13","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">","rightExpression":{"id":4198,"name":"maxAssets","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4192,"src":"11263:9:13","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"11254:18:13","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":4207,"nodeType":"IfStatement","src":"11250:108:13","trueBody":{"id":4206,"nodeType":"Block","src":"11274:84:13","statements":[{"errorCall":{"arguments":[{"id":4201,"name":"owner","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4186,"src":"11322:5:13","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":4202,"name":"assets","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4182,"src":"11329:6:13","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"id":4203,"name":"maxAssets","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4192,"src":"11337:9:13","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":4200,"name":"ERC4626ExceededMaxWithdraw","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3739,"src":"11295:26:13","typeDescriptions":{"typeIdentifier":"t_function_error_pure$_t_address_$_t_uint256_$_t_uint256_$returns$_t_error_$","typeString":"function (address,uint256,uint256) pure returns (error)"}},"id":4204,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"11295:52:13","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_error","typeString":"error"}},"id":4205,"nodeType":"RevertStatement","src":"11288:59:13"}]}},{"assignments":[4209],"declarations":[{"constant":false,"id":4209,"mutability":"mutable","name":"shares","nameLocation":"11376:6:13","nodeType":"VariableDeclaration","scope":4225,"src":"11368:14:13","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":4208,"name":"uint256","nodeType":"ElementaryTypeName","src":"11368:7:13","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":4213,"initialValue":{"arguments":[{"id":4211,"name":"assets","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4182,"src":"11401:6:13","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":4210,"name":"previewWithdraw","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4075,"src":"11385:15:13","typeDescriptions":{"typeIdentifier":"t_function_internal_view$_t_uint256_$returns$_t_uint256_$","typeString":"function (uint256) view returns (uint256)"}},"id":4212,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"11385:23:13","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"VariableDeclarationStatement","src":"11368:40:13"},{"expression":{"arguments":[{"arguments":[],"expression":{"argumentTypes":[],"id":4215,"name":"_msgSender","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4456,"src":"11428:10:13","typeDescriptions":{"typeIdentifier":"t_function_internal_view$__$returns$_t_address_$","typeString":"function () view returns (address)"}},"id":4216,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"11428:12:13","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":4217,"name":"receiver","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4184,"src":"11442:8:13","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":4218,"name":"owner","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4186,"src":"11452:5:13","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":4219,"name":"assets","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4182,"src":"11459:6:13","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"id":4220,"name":"shares","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4209,"src":"11467:6:13","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":4214,"name":"_withdraw","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4419,"src":"11418:9:13","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_address_$_t_address_$_t_address_$_t_uint256_$_t_uint256_$returns$__$","typeString":"function (address,address,address,uint256,uint256)"}},"id":4221,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"11418:56:13","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":4222,"nodeType":"ExpressionStatement","src":"11418:56:13"},{"expression":{"id":4223,"name":"shares","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4209,"src":"11492:6:13","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"functionReturnParameters":4190,"id":4224,"nodeType":"Return","src":"11485:13:13"}]},"documentation":{"id":4180,"nodeType":"StructuredDocumentation","src":"11063:24:13","text":"@inheritdoc IERC4626"},"functionSelector":"b460af94","id":4226,"implemented":true,"kind":"function","modifiers":[],"name":"withdraw","nameLocation":"11101:8:13","nodeType":"FunctionDefinition","parameters":{"id":4187,"nodeType":"ParameterList","parameters":[{"constant":false,"id":4182,"mutability":"mutable","name":"assets","nameLocation":"11118:6:13","nodeType":"VariableDeclaration","scope":4226,"src":"11110:14:13","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":4181,"name":"uint256","nodeType":"ElementaryTypeName","src":"11110:7:13","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":4184,"mutability":"mutable","name":"receiver","nameLocation":"11134:8:13","nodeType":"VariableDeclaration","scope":4226,"src":"11126:16:13","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":4183,"name":"address","nodeType":"ElementaryTypeName","src":"11126:7:13","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":4186,"mutability":"mutable","name":"owner","nameLocation":"11152:5:13","nodeType":"VariableDeclaration","scope":4226,"src":"11144:13:13","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":4185,"name":"address","nodeType":"ElementaryTypeName","src":"11144:7:13","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"11109:49:13"},"returnParameters":{"id":4190,"nodeType":"ParameterList","parameters":[{"constant":false,"id":4189,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":4226,"src":"11183:7:13","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":4188,"name":"uint256","nodeType":"ElementaryTypeName","src":"11183:7:13","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"11182:9:13"},"scope":4428,"src":"11092:413:13","stateMutability":"nonpayable","virtual":true,"visibility":"public"},{"baseFunctions":[7126],"body":{"id":4272,"nodeType":"Block","src":"11638:307:13","statements":[{"assignments":[4239],"declarations":[{"constant":false,"id":4239,"mutability":"mutable","name":"maxShares","nameLocation":"11656:9:13","nodeType":"VariableDeclaration","scope":4272,"src":"11648:17:13","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":4238,"name":"uint256","nodeType":"ElementaryTypeName","src":"11648:7:13","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":4243,"initialValue":{"arguments":[{"id":4241,"name":"owner","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4233,"src":"11678:5:13","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"id":4240,"name":"maxRedeem","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4027,"src":"11668:9:13","typeDescriptions":{"typeIdentifier":"t_function_internal_view$_t_address_$returns$_t_uint256_$","typeString":"function (address) view returns (uint256)"}},"id":4242,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"11668:16:13","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"VariableDeclarationStatement","src":"11648:36:13"},{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":4246,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":4244,"name":"shares","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4229,"src":"11698:6:13","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">","rightExpression":{"id":4245,"name":"maxShares","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4239,"src":"11707:9:13","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"11698:18:13","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":4254,"nodeType":"IfStatement","src":"11694:106:13","trueBody":{"id":4253,"nodeType":"Block","src":"11718:82:13","statements":[{"errorCall":{"arguments":[{"id":4248,"name":"owner","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4233,"src":"11764:5:13","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":4249,"name":"shares","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4229,"src":"11771:6:13","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"id":4250,"name":"maxShares","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4239,"src":"11779:9:13","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":4247,"name":"ERC4626ExceededMaxRedeem","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3748,"src":"11739:24:13","typeDescriptions":{"typeIdentifier":"t_function_error_pure$_t_address_$_t_uint256_$_t_uint256_$returns$_t_error_$","typeString":"function (address,uint256,uint256) pure returns (error)"}},"id":4251,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"11739:50:13","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_error","typeString":"error"}},"id":4252,"nodeType":"RevertStatement","src":"11732:57:13"}]}},{"assignments":[4256],"declarations":[{"constant":false,"id":4256,"mutability":"mutable","name":"assets","nameLocation":"11818:6:13","nodeType":"VariableDeclaration","scope":4272,"src":"11810:14:13","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":4255,"name":"uint256","nodeType":"ElementaryTypeName","src":"11810:7:13","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":4260,"initialValue":{"arguments":[{"id":4258,"name":"shares","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4229,"src":"11841:6:13","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":4257,"name":"previewRedeem","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4091,"src":"11827:13:13","typeDescriptions":{"typeIdentifier":"t_function_internal_view$_t_uint256_$returns$_t_uint256_$","typeString":"function (uint256) view returns (uint256)"}},"id":4259,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"11827:21:13","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"VariableDeclarationStatement","src":"11810:38:13"},{"expression":{"arguments":[{"arguments":[],"expression":{"argumentTypes":[],"id":4262,"name":"_msgSender","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4456,"src":"11868:10:13","typeDescriptions":{"typeIdentifier":"t_function_internal_view$__$returns$_t_address_$","typeString":"function () view returns (address)"}},"id":4263,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"11868:12:13","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":4264,"name":"receiver","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4231,"src":"11882:8:13","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":4265,"name":"owner","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4233,"src":"11892:5:13","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":4266,"name":"assets","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4256,"src":"11899:6:13","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"id":4267,"name":"shares","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4229,"src":"11907:6:13","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":4261,"name":"_withdraw","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4419,"src":"11858:9:13","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_address_$_t_address_$_t_address_$_t_uint256_$_t_uint256_$returns$__$","typeString":"function (address,address,address,uint256,uint256)"}},"id":4268,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"11858:56:13","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":4269,"nodeType":"ExpressionStatement","src":"11858:56:13"},{"expression":{"id":4270,"name":"assets","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4256,"src":"11932:6:13","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"functionReturnParameters":4237,"id":4271,"nodeType":"Return","src":"11925:13:13"}]},"documentation":{"id":4227,"nodeType":"StructuredDocumentation","src":"11511:24:13","text":"@inheritdoc IERC4626"},"functionSelector":"ba087652","id":4273,"implemented":true,"kind":"function","modifiers":[],"name":"redeem","nameLocation":"11549:6:13","nodeType":"FunctionDefinition","parameters":{"id":4234,"nodeType":"ParameterList","parameters":[{"constant":false,"id":4229,"mutability":"mutable","name":"shares","nameLocation":"11564:6:13","nodeType":"VariableDeclaration","scope":4273,"src":"11556:14:13","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":4228,"name":"uint256","nodeType":"ElementaryTypeName","src":"11556:7:13","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":4231,"mutability":"mutable","name":"receiver","nameLocation":"11580:8:13","nodeType":"VariableDeclaration","scope":4273,"src":"11572:16:13","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":4230,"name":"address","nodeType":"ElementaryTypeName","src":"11572:7:13","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":4233,"mutability":"mutable","name":"owner","nameLocation":"11598:5:13","nodeType":"VariableDeclaration","scope":4273,"src":"11590:13:13","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":4232,"name":"address","nodeType":"ElementaryTypeName","src":"11590:7:13","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"11555:49:13"},"returnParameters":{"id":4237,"nodeType":"ParameterList","parameters":[{"constant":false,"id":4236,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":4273,"src":"11629:7:13","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":4235,"name":"uint256","nodeType":"ElementaryTypeName","src":"11629:7:13","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"11628:9:13"},"scope":4428,"src":"11540:405:13","stateMutability":"nonpayable","virtual":true,"visibility":"public"},{"body":{"id":4300,"nodeType":"Block","src":"12175:107:13","statements":[{"expression":{"arguments":[{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":4292,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"arguments":[],"expression":{"argumentTypes":[],"id":4286,"name":"totalSupply","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3200,"src":"12206:11:13","typeDescriptions":{"typeIdentifier":"t_function_internal_view$__$returns$_t_uint256_$","typeString":"function () view returns (uint256)"}},"id":4287,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"12206:13:13","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"+","rightExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":4291,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"hexValue":"3130","id":4288,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"12222:2:13","typeDescriptions":{"typeIdentifier":"t_rational_10_by_1","typeString":"int_const 10"},"value":"10"},"nodeType":"BinaryOperation","operator":"**","rightExpression":{"arguments":[],"expression":{"argumentTypes":[],"id":4289,"name":"_decimalsOffset","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4427,"src":"12228:15:13","typeDescriptions":{"typeIdentifier":"t_function_internal_view$__$returns$_t_uint8_$","typeString":"function () view returns (uint8)"}},"id":4290,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"12228:17:13","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}},"src":"12222:23:13","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"12206:39:13","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":4296,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"arguments":[],"expression":{"argumentTypes":[],"id":4293,"name":"totalAssets","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3937,"src":"12247:11:13","typeDescriptions":{"typeIdentifier":"t_function_internal_view$__$returns$_t_uint256_$","typeString":"function () view returns (uint256)"}},"id":4294,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"12247:13:13","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"+","rightExpression":{"hexValue":"31","id":4295,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"12263:1:13","typeDescriptions":{"typeIdentifier":"t_rational_1_by_1","typeString":"int_const 1"},"value":"1"},"src":"12247:17:13","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"id":4297,"name":"rounding","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4279,"src":"12266:8:13","typeDescriptions":{"typeIdentifier":"t_enum$_Rounding_$11096","typeString":"enum Math.Rounding"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_enum$_Rounding_$11096","typeString":"enum Math.Rounding"}],"expression":{"id":4284,"name":"assets","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4276,"src":"12192:6:13","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":4285,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"12199:6:13","memberName":"mulDiv","nodeType":"MemberAccess","referencedDeclaration":11648,"src":"12192:13:13","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_uint256_$_t_uint256_$_t_uint256_$_t_enum$_Rounding_$11096_$returns$_t_uint256_$attached_to$_t_uint256_$","typeString":"function (uint256,uint256,uint256,enum Math.Rounding) pure returns (uint256)"}},"id":4298,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"12192:83:13","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"functionReturnParameters":4283,"id":4299,"nodeType":"Return","src":"12185:90:13"}]},"documentation":{"id":4274,"nodeType":"StructuredDocumentation","src":"11951:113:13","text":" @dev Internal conversion function (from assets to shares) with support for rounding direction."},"id":4301,"implemented":true,"kind":"function","modifiers":[],"name":"_convertToShares","nameLocation":"12078:16:13","nodeType":"FunctionDefinition","parameters":{"id":4280,"nodeType":"ParameterList","parameters":[{"constant":false,"id":4276,"mutability":"mutable","name":"assets","nameLocation":"12103:6:13","nodeType":"VariableDeclaration","scope":4301,"src":"12095:14:13","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":4275,"name":"uint256","nodeType":"ElementaryTypeName","src":"12095:7:13","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":4279,"mutability":"mutable","name":"rounding","nameLocation":"12125:8:13","nodeType":"VariableDeclaration","scope":4301,"src":"12111:22:13","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_enum$_Rounding_$11096","typeString":"enum Math.Rounding"},"typeName":{"id":4278,"nodeType":"UserDefinedTypeName","pathNode":{"id":4277,"name":"Math.Rounding","nameLocations":["12111:4:13","12116:8:13"],"nodeType":"IdentifierPath","referencedDeclaration":11096,"src":"12111:13:13"},"referencedDeclaration":11096,"src":"12111:13:13","typeDescriptions":{"typeIdentifier":"t_enum$_Rounding_$11096","typeString":"enum Math.Rounding"}},"visibility":"internal"}],"src":"12094:40:13"},"returnParameters":{"id":4283,"nodeType":"ParameterList","parameters":[{"constant":false,"id":4282,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":4301,"src":"12166:7:13","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":4281,"name":"uint256","nodeType":"ElementaryTypeName","src":"12166:7:13","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"12165:9:13"},"scope":4428,"src":"12069:213:13","stateMutability":"view","virtual":true,"visibility":"internal"},{"body":{"id":4328,"nodeType":"Block","src":"12512:107:13","statements":[{"expression":{"arguments":[{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":4317,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"arguments":[],"expression":{"argumentTypes":[],"id":4314,"name":"totalAssets","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3937,"src":"12543:11:13","typeDescriptions":{"typeIdentifier":"t_function_internal_view$__$returns$_t_uint256_$","typeString":"function () view returns (uint256)"}},"id":4315,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"12543:13:13","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"+","rightExpression":{"hexValue":"31","id":4316,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"12559:1:13","typeDescriptions":{"typeIdentifier":"t_rational_1_by_1","typeString":"int_const 1"},"value":"1"},"src":"12543:17:13","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":4324,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"arguments":[],"expression":{"argumentTypes":[],"id":4318,"name":"totalSupply","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3200,"src":"12562:11:13","typeDescriptions":{"typeIdentifier":"t_function_internal_view$__$returns$_t_uint256_$","typeString":"function () view returns (uint256)"}},"id":4319,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"12562:13:13","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"+","rightExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":4323,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"hexValue":"3130","id":4320,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"12578:2:13","typeDescriptions":{"typeIdentifier":"t_rational_10_by_1","typeString":"int_const 10"},"value":"10"},"nodeType":"BinaryOperation","operator":"**","rightExpression":{"arguments":[],"expression":{"argumentTypes":[],"id":4321,"name":"_decimalsOffset","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4427,"src":"12584:15:13","typeDescriptions":{"typeIdentifier":"t_function_internal_view$__$returns$_t_uint8_$","typeString":"function () view returns (uint8)"}},"id":4322,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"12584:17:13","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}},"src":"12578:23:13","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"12562:39:13","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"id":4325,"name":"rounding","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4307,"src":"12603:8:13","typeDescriptions":{"typeIdentifier":"t_enum$_Rounding_$11096","typeString":"enum Math.Rounding"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_enum$_Rounding_$11096","typeString":"enum Math.Rounding"}],"expression":{"id":4312,"name":"shares","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4304,"src":"12529:6:13","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":4313,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"12536:6:13","memberName":"mulDiv","nodeType":"MemberAccess","referencedDeclaration":11648,"src":"12529:13:13","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_uint256_$_t_uint256_$_t_uint256_$_t_enum$_Rounding_$11096_$returns$_t_uint256_$attached_to$_t_uint256_$","typeString":"function (uint256,uint256,uint256,enum Math.Rounding) pure returns (uint256)"}},"id":4326,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"12529:83:13","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"functionReturnParameters":4311,"id":4327,"nodeType":"Return","src":"12522:90:13"}]},"documentation":{"id":4302,"nodeType":"StructuredDocumentation","src":"12288:113:13","text":" @dev Internal conversion function (from shares to assets) with support for rounding direction."},"id":4329,"implemented":true,"kind":"function","modifiers":[],"name":"_convertToAssets","nameLocation":"12415:16:13","nodeType":"FunctionDefinition","parameters":{"id":4308,"nodeType":"ParameterList","parameters":[{"constant":false,"id":4304,"mutability":"mutable","name":"shares","nameLocation":"12440:6:13","nodeType":"VariableDeclaration","scope":4329,"src":"12432:14:13","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":4303,"name":"uint256","nodeType":"ElementaryTypeName","src":"12432:7:13","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":4307,"mutability":"mutable","name":"rounding","nameLocation":"12462:8:13","nodeType":"VariableDeclaration","scope":4329,"src":"12448:22:13","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_enum$_Rounding_$11096","typeString":"enum Math.Rounding"},"typeName":{"id":4306,"nodeType":"UserDefinedTypeName","pathNode":{"id":4305,"name":"Math.Rounding","nameLocations":["12448:4:13","12453:8:13"],"nodeType":"IdentifierPath","referencedDeclaration":11096,"src":"12448:13:13"},"referencedDeclaration":11096,"src":"12448:13:13","typeDescriptions":{"typeIdentifier":"t_enum$_Rounding_$11096","typeString":"enum Math.Rounding"}},"visibility":"internal"}],"src":"12431:40:13"},"returnParameters":{"id":4311,"nodeType":"ParameterList","parameters":[{"constant":false,"id":4310,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":4329,"src":"12503:7:13","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":4309,"name":"uint256","nodeType":"ElementaryTypeName","src":"12503:7:13","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"12502:9:13"},"scope":4428,"src":"12406:213:13","stateMutability":"view","virtual":true,"visibility":"internal"},{"body":{"id":4368,"nodeType":"Block","src":"12784:740:13","statements":[{"expression":{"arguments":[{"arguments":[{"arguments":[],"expression":{"argumentTypes":[],"id":4345,"name":"asset","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3919,"src":"13387:5:13","typeDescriptions":{"typeIdentifier":"t_function_internal_view$__$returns$_t_address_$","typeString":"function () view returns (address)"}},"id":4346,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"13387:7:13","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"id":4344,"name":"IERC20","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8679,"src":"13380:6:13","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_IERC20_$8679_$","typeString":"type(contract IERC20)"}},"id":4347,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"13380:15:13","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_contract$_IERC20_$8679","typeString":"contract IERC20"}},{"id":4348,"name":"caller","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4332,"src":"13397:6:13","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"arguments":[{"id":4351,"name":"this","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-28,"src":"13413:4:13","typeDescriptions":{"typeIdentifier":"t_contract$_ERC4626Upgradeable_$4428","typeString":"contract ERC4626Upgradeable"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_contract$_ERC4626Upgradeable_$4428","typeString":"contract ERC4626Upgradeable"}],"id":4350,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"13405:7:13","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":4349,"name":"address","nodeType":"ElementaryTypeName","src":"13405:7:13","typeDescriptions":{}}},"id":4352,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"13405:13:13","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":4353,"name":"assets","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4336,"src":"13420:6:13","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_contract$_IERC20_$8679","typeString":"contract IERC20"},{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"expression":{"id":4341,"name":"SafeERC20","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9866,"src":"13353:9:13","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_SafeERC20_$9866_$","typeString":"type(library SafeERC20)"}},"id":4343,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"13363:16:13","memberName":"safeTransferFrom","nodeType":"MemberAccess","referencedDeclaration":9491,"src":"13353:26:13","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_contract$_IERC20_$8679_$_t_address_$_t_address_$_t_uint256_$returns$__$","typeString":"function (contract IERC20,address,address,uint256)"}},"id":4354,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"13353:74:13","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":4355,"nodeType":"ExpressionStatement","src":"13353:74:13"},{"expression":{"arguments":[{"id":4357,"name":"receiver","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4334,"src":"13443:8:13","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":4358,"name":"shares","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4338,"src":"13453:6:13","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":4356,"name":"_mint","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3496,"src":"13437:5:13","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_address_$_t_uint256_$returns$__$","typeString":"function (address,uint256)"}},"id":4359,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"13437:23:13","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":4360,"nodeType":"ExpressionStatement","src":"13437:23:13"},{"eventCall":{"arguments":[{"id":4362,"name":"caller","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4332,"src":"13484:6:13","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":4363,"name":"receiver","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4334,"src":"13492:8:13","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":4364,"name":"assets","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4336,"src":"13502:6:13","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"id":4365,"name":"shares","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4338,"src":"13510:6:13","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"}],"id":4361,"name":"Deposit","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6978,"src":"13476:7:13","typeDescriptions":{"typeIdentifier":"t_function_event_nonpayable$_t_address_$_t_address_$_t_uint256_$_t_uint256_$returns$__$","typeString":"function (address,address,uint256,uint256)"}},"id":4366,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"13476:41:13","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":4367,"nodeType":"EmitStatement","src":"13471:46:13"}]},"documentation":{"id":4330,"nodeType":"StructuredDocumentation","src":"12625:53:13","text":" @dev Deposit/mint common workflow."},"id":4369,"implemented":true,"kind":"function","modifiers":[],"name":"_deposit","nameLocation":"12692:8:13","nodeType":"FunctionDefinition","parameters":{"id":4339,"nodeType":"ParameterList","parameters":[{"constant":false,"id":4332,"mutability":"mutable","name":"caller","nameLocation":"12709:6:13","nodeType":"VariableDeclaration","scope":4369,"src":"12701:14:13","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":4331,"name":"address","nodeType":"ElementaryTypeName","src":"12701:7:13","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":4334,"mutability":"mutable","name":"receiver","nameLocation":"12725:8:13","nodeType":"VariableDeclaration","scope":4369,"src":"12717:16:13","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":4333,"name":"address","nodeType":"ElementaryTypeName","src":"12717:7:13","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":4336,"mutability":"mutable","name":"assets","nameLocation":"12743:6:13","nodeType":"VariableDeclaration","scope":4369,"src":"12735:14:13","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":4335,"name":"uint256","nodeType":"ElementaryTypeName","src":"12735:7:13","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":4338,"mutability":"mutable","name":"shares","nameLocation":"12759:6:13","nodeType":"VariableDeclaration","scope":4369,"src":"12751:14:13","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":4337,"name":"uint256","nodeType":"ElementaryTypeName","src":"12751:7:13","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"12700:66:13"},"returnParameters":{"id":4340,"nodeType":"ParameterList","parameters":[],"src":"12784:0:13"},"scope":4428,"src":"12683:841:13","stateMutability":"nonpayable","virtual":true,"visibility":"internal"},{"body":{"id":4418,"nodeType":"Block","src":"13754:762:13","statements":[{"condition":{"commonType":{"typeIdentifier":"t_address","typeString":"address"},"id":4385,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":4383,"name":"caller","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4372,"src":"13768:6:13","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"BinaryOperation","operator":"!=","rightExpression":{"id":4384,"name":"owner","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4376,"src":"13778:5:13","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"src":"13768:15:13","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":4393,"nodeType":"IfStatement","src":"13764:84:13","trueBody":{"id":4392,"nodeType":"Block","src":"13785:63:13","statements":[{"expression":{"arguments":[{"id":4387,"name":"owner","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4376,"src":"13815:5:13","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":4388,"name":"caller","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4372,"src":"13822:6:13","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":4389,"name":"shares","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4380,"src":"13830:6:13","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":4386,"name":"_spendAllowance","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3663,"src":"13799:15:13","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_address_$_t_address_$_t_uint256_$returns$__$","typeString":"function (address,address,uint256)"}},"id":4390,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"13799:38:13","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":4391,"nodeType":"ExpressionStatement","src":"13799:38:13"}]}},{"expression":{"arguments":[{"id":4395,"name":"owner","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4376,"src":"14363:5:13","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":4396,"name":"shares","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4380,"src":"14370:6:13","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":4394,"name":"_burn","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3529,"src":"14357:5:13","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_address_$_t_uint256_$returns$__$","typeString":"function (address,uint256)"}},"id":4397,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"14357:20:13","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":4398,"nodeType":"ExpressionStatement","src":"14357:20:13"},{"expression":{"arguments":[{"arguments":[{"arguments":[],"expression":{"argumentTypes":[],"id":4403,"name":"asset","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3919,"src":"14417:5:13","typeDescriptions":{"typeIdentifier":"t_function_internal_view$__$returns$_t_address_$","typeString":"function () view returns (address)"}},"id":4404,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"14417:7:13","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"id":4402,"name":"IERC20","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8679,"src":"14410:6:13","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_IERC20_$8679_$","typeString":"type(contract IERC20)"}},"id":4405,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"14410:15:13","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_contract$_IERC20_$8679","typeString":"contract IERC20"}},{"id":4406,"name":"receiver","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4374,"src":"14427:8:13","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":4407,"name":"assets","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4378,"src":"14437:6:13","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_contract$_IERC20_$8679","typeString":"contract IERC20"},{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"expression":{"id":4399,"name":"SafeERC20","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9866,"src":"14387:9:13","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_SafeERC20_$9866_$","typeString":"type(library SafeERC20)"}},"id":4401,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"14397:12:13","memberName":"safeTransfer","nodeType":"MemberAccess","referencedDeclaration":9460,"src":"14387:22:13","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_contract$_IERC20_$8679_$_t_address_$_t_uint256_$returns$__$","typeString":"function (contract IERC20,address,uint256)"}},"id":4408,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"14387:57:13","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":4409,"nodeType":"ExpressionStatement","src":"14387:57:13"},{"eventCall":{"arguments":[{"id":4411,"name":"caller","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4372,"src":"14469:6:13","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":4412,"name":"receiver","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4374,"src":"14477:8:13","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":4413,"name":"owner","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4376,"src":"14487:5:13","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":4414,"name":"assets","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4378,"src":"14494:6:13","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"id":4415,"name":"shares","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4380,"src":"14502:6:13","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":4410,"name":"Withdraw","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6990,"src":"14460:8:13","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":4416,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"14460:49:13","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":4417,"nodeType":"EmitStatement","src":"14455:54:13"}]},"documentation":{"id":4370,"nodeType":"StructuredDocumentation","src":"13530:56:13","text":" @dev Withdraw/redeem common workflow."},"id":4419,"implemented":true,"kind":"function","modifiers":[],"name":"_withdraw","nameLocation":"13600:9:13","nodeType":"FunctionDefinition","parameters":{"id":4381,"nodeType":"ParameterList","parameters":[{"constant":false,"id":4372,"mutability":"mutable","name":"caller","nameLocation":"13627:6:13","nodeType":"VariableDeclaration","scope":4419,"src":"13619:14:13","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":4371,"name":"address","nodeType":"ElementaryTypeName","src":"13619:7:13","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":4374,"mutability":"mutable","name":"receiver","nameLocation":"13651:8:13","nodeType":"VariableDeclaration","scope":4419,"src":"13643:16:13","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":4373,"name":"address","nodeType":"ElementaryTypeName","src":"13643:7:13","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":4376,"mutability":"mutable","name":"owner","nameLocation":"13677:5:13","nodeType":"VariableDeclaration","scope":4419,"src":"13669:13:13","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":4375,"name":"address","nodeType":"ElementaryTypeName","src":"13669:7:13","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":4378,"mutability":"mutable","name":"assets","nameLocation":"13700:6:13","nodeType":"VariableDeclaration","scope":4419,"src":"13692:14:13","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":4377,"name":"uint256","nodeType":"ElementaryTypeName","src":"13692:7:13","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":4380,"mutability":"mutable","name":"shares","nameLocation":"13724:6:13","nodeType":"VariableDeclaration","scope":4419,"src":"13716:14:13","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":4379,"name":"uint256","nodeType":"ElementaryTypeName","src":"13716:7:13","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"13609:127:13"},"returnParameters":{"id":4382,"nodeType":"ParameterList","parameters":[],"src":"13754:0:13"},"scope":4428,"src":"13591:925:13","stateMutability":"nonpayable","virtual":true,"visibility":"internal"},{"body":{"id":4426,"nodeType":"Block","src":"14587:25:13","statements":[{"expression":{"hexValue":"30","id":4424,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"14604:1:13","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"functionReturnParameters":4423,"id":4425,"nodeType":"Return","src":"14597:8:13"}]},"id":4427,"implemented":true,"kind":"function","modifiers":[],"name":"_decimalsOffset","nameLocation":"14531:15:13","nodeType":"FunctionDefinition","parameters":{"id":4420,"nodeType":"ParameterList","parameters":[],"src":"14546:2:13"},"returnParameters":{"id":4423,"nodeType":"ParameterList","parameters":[{"constant":false,"id":4422,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":4427,"src":"14580:5:13","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"},"typeName":{"id":4421,"name":"uint8","nodeType":"ElementaryTypeName","src":"14580:5:13","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}},"visibility":"internal"}],"src":"14579:7:13"},"scope":4428,"src":"14522:90:13","stateMutability":"view","virtual":true,"visibility":"internal"}],"scope":4429,"src":"4863:9751:13","usedErrors":[3721,3730,3739,3748,7149,7154,7159,7168,7173,7178,7669,7672,9423],"usedEvents":[6978,6990,7677,8613,8622]}],"src":"118:14497:13"},"id":13},"@openzeppelin/contracts-upgradeable/utils/ContextUpgradeable.sol":{"ast":{"absolutePath":"@openzeppelin/contracts-upgradeable/utils/ContextUpgradeable.sol","exportedSymbols":{"ContextUpgradeable":[4474],"Initializable":[7920]},"id":4475,"license":"MIT","nodeType":"SourceUnit","nodes":[{"id":4430,"literals":["solidity","^","0.8",".20"],"nodeType":"PragmaDirective","src":"101:24:14"},{"absolutePath":"@openzeppelin/contracts/proxy/utils/Initializable.sol","file":"@openzeppelin/contracts/proxy/utils/Initializable.sol","id":4432,"nameLocation":"-1:-1:-1","nodeType":"ImportDirective","scope":4475,"sourceUnit":7921,"src":"126:84:14","symbolAliases":[{"foreign":{"id":4431,"name":"Initializable","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7920,"src":"134:13:14","typeDescriptions":{}},"nameLocation":"-1:-1:-1"}],"unitAlias":""},{"abstract":true,"baseContracts":[{"baseName":{"id":4434,"name":"Initializable","nameLocations":["749:13:14"],"nodeType":"IdentifierPath","referencedDeclaration":7920,"src":"749:13:14"},"id":4435,"nodeType":"InheritanceSpecifier","src":"749:13:14"}],"canonicalName":"ContextUpgradeable","contractDependencies":[],"contractKind":"contract","documentation":{"id":4433,"nodeType":"StructuredDocumentation","src":"212:496:14","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":4474,"linearizedBaseContracts":[4474,7920],"name":"ContextUpgradeable","nameLocation":"727:18:14","nodeType":"ContractDefinition","nodes":[{"body":{"id":4440,"nodeType":"Block","src":"821:7:14","statements":[]},"id":4441,"implemented":true,"kind":"function","modifiers":[{"id":4438,"kind":"modifierInvocation","modifierName":{"id":4437,"name":"onlyInitializing","nameLocations":["804:16:14"],"nodeType":"IdentifierPath","referencedDeclaration":7815,"src":"804:16:14"},"nodeType":"ModifierInvocation","src":"804:16:14"}],"name":"__Context_init","nameLocation":"778:14:14","nodeType":"FunctionDefinition","parameters":{"id":4436,"nodeType":"ParameterList","parameters":[],"src":"792:2:14"},"returnParameters":{"id":4439,"nodeType":"ParameterList","parameters":[],"src":"821:0:14"},"scope":4474,"src":"769:59:14","stateMutability":"nonpayable","virtual":false,"visibility":"internal"},{"body":{"id":4446,"nodeType":"Block","src":"896:7:14","statements":[]},"id":4447,"implemented":true,"kind":"function","modifiers":[{"id":4444,"kind":"modifierInvocation","modifierName":{"id":4443,"name":"onlyInitializing","nameLocations":["879:16:14"],"nodeType":"IdentifierPath","referencedDeclaration":7815,"src":"879:16:14"},"nodeType":"ModifierInvocation","src":"879:16:14"}],"name":"__Context_init_unchained","nameLocation":"843:24:14","nodeType":"FunctionDefinition","parameters":{"id":4442,"nodeType":"ParameterList","parameters":[],"src":"867:2:14"},"returnParameters":{"id":4445,"nodeType":"ParameterList","parameters":[],"src":"896:0:14"},"scope":4474,"src":"834:69:14","stateMutability":"nonpayable","virtual":false,"visibility":"internal"},{"body":{"id":4455,"nodeType":"Block","src":"970:34:14","statements":[{"expression":{"expression":{"id":4452,"name":"msg","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-15,"src":"987:3:14","typeDescriptions":{"typeIdentifier":"t_magic_message","typeString":"msg"}},"id":4453,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"991:6:14","memberName":"sender","nodeType":"MemberAccess","src":"987:10:14","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"functionReturnParameters":4451,"id":4454,"nodeType":"Return","src":"980:17:14"}]},"id":4456,"implemented":true,"kind":"function","modifiers":[],"name":"_msgSender","nameLocation":"917:10:14","nodeType":"FunctionDefinition","parameters":{"id":4448,"nodeType":"ParameterList","parameters":[],"src":"927:2:14"},"returnParameters":{"id":4451,"nodeType":"ParameterList","parameters":[{"constant":false,"id":4450,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":4456,"src":"961:7:14","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":4449,"name":"address","nodeType":"ElementaryTypeName","src":"961:7:14","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"960:9:14"},"scope":4474,"src":"908:96:14","stateMutability":"view","virtual":true,"visibility":"internal"},{"body":{"id":4464,"nodeType":"Block","src":"1077:32:14","statements":[{"expression":{"expression":{"id":4461,"name":"msg","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-15,"src":"1094:3:14","typeDescriptions":{"typeIdentifier":"t_magic_message","typeString":"msg"}},"id":4462,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"1098:4:14","memberName":"data","nodeType":"MemberAccess","src":"1094:8:14","typeDescriptions":{"typeIdentifier":"t_bytes_calldata_ptr","typeString":"bytes calldata"}},"functionReturnParameters":4460,"id":4463,"nodeType":"Return","src":"1087:15:14"}]},"id":4465,"implemented":true,"kind":"function","modifiers":[],"name":"_msgData","nameLocation":"1019:8:14","nodeType":"FunctionDefinition","parameters":{"id":4457,"nodeType":"ParameterList","parameters":[],"src":"1027:2:14"},"returnParameters":{"id":4460,"nodeType":"ParameterList","parameters":[{"constant":false,"id":4459,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":4465,"src":"1061:14:14","stateVariable":false,"storageLocation":"calldata","typeDescriptions":{"typeIdentifier":"t_bytes_calldata_ptr","typeString":"bytes"},"typeName":{"id":4458,"name":"bytes","nodeType":"ElementaryTypeName","src":"1061:5:14","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"}],"src":"1060:16:14"},"scope":4474,"src":"1010:99:14","stateMutability":"view","virtual":true,"visibility":"internal"},{"body":{"id":4472,"nodeType":"Block","src":"1187:25:14","statements":[{"expression":{"hexValue":"30","id":4470,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"1204:1:14","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"functionReturnParameters":4469,"id":4471,"nodeType":"Return","src":"1197:8:14"}]},"id":4473,"implemented":true,"kind":"function","modifiers":[],"name":"_contextSuffixLength","nameLocation":"1124:20:14","nodeType":"FunctionDefinition","parameters":{"id":4466,"nodeType":"ParameterList","parameters":[],"src":"1144:2:14"},"returnParameters":{"id":4469,"nodeType":"ParameterList","parameters":[{"constant":false,"id":4468,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":4473,"src":"1178:7:14","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":4467,"name":"uint256","nodeType":"ElementaryTypeName","src":"1178:7:14","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"1177:9:14"},"scope":4474,"src":"1115:97:14","stateMutability":"view","virtual":true,"visibility":"internal"}],"scope":4475,"src":"709:505:14","usedErrors":[7669,7672],"usedEvents":[7677]}],"src":"101:1114:14"},"id":14},"@openzeppelin/contracts/access/manager/AccessManager.sol":{"ast":{"absolutePath":"@openzeppelin/contracts/access/manager/AccessManager.sol","exportedSymbols":{"AccessManager":[6372],"Address":[10256],"Context":[10286],"Hashes":[11072],"IAccessManaged":[6412],"IAccessManager":[6842],"Math":[12726],"Multicall":[10856],"Time":[14765]},"id":6373,"license":"MIT","nodeType":"SourceUnit","nodes":[{"id":4476,"literals":["solidity","^","0.8",".20"],"nodeType":"PragmaDirective","src":"116:24:15"},{"absolutePath":"@openzeppelin/contracts/access/manager/IAccessManager.sol","file":"./IAccessManager.sol","id":4478,"nameLocation":"-1:-1:-1","nodeType":"ImportDirective","scope":6373,"sourceUnit":6843,"src":"142:52:15","symbolAliases":[{"foreign":{"id":4477,"name":"IAccessManager","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6842,"src":"150:14:15","typeDescriptions":{}},"nameLocation":"-1:-1:-1"}],"unitAlias":""},{"absolutePath":"@openzeppelin/contracts/access/manager/IAccessManaged.sol","file":"./IAccessManaged.sol","id":4480,"nameLocation":"-1:-1:-1","nodeType":"ImportDirective","scope":6373,"sourceUnit":6413,"src":"195:52:15","symbolAliases":[{"foreign":{"id":4479,"name":"IAccessManaged","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6412,"src":"203:14:15","typeDescriptions":{}},"nameLocation":"-1:-1:-1"}],"unitAlias":""},{"absolutePath":"@openzeppelin/contracts/utils/Address.sol","file":"../../utils/Address.sol","id":4482,"nameLocation":"-1:-1:-1","nodeType":"ImportDirective","scope":6373,"sourceUnit":10257,"src":"248:48:15","symbolAliases":[{"foreign":{"id":4481,"name":"Address","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10256,"src":"256:7:15","typeDescriptions":{}},"nameLocation":"-1:-1:-1"}],"unitAlias":""},{"absolutePath":"@openzeppelin/contracts/utils/Context.sol","file":"../../utils/Context.sol","id":4484,"nameLocation":"-1:-1:-1","nodeType":"ImportDirective","scope":6373,"sourceUnit":10287,"src":"297:48:15","symbolAliases":[{"foreign":{"id":4483,"name":"Context","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10286,"src":"305:7:15","typeDescriptions":{}},"nameLocation":"-1:-1:-1"}],"unitAlias":""},{"absolutePath":"@openzeppelin/contracts/utils/Multicall.sol","file":"../../utils/Multicall.sol","id":4486,"nameLocation":"-1:-1:-1","nodeType":"ImportDirective","scope":6373,"sourceUnit":10857,"src":"346:52:15","symbolAliases":[{"foreign":{"id":4485,"name":"Multicall","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10856,"src":"354:9:15","typeDescriptions":{}},"nameLocation":"-1:-1:-1"}],"unitAlias":""},{"absolutePath":"@openzeppelin/contracts/utils/math/Math.sol","file":"../../utils/math/Math.sol","id":4488,"nameLocation":"-1:-1:-1","nodeType":"ImportDirective","scope":6373,"sourceUnit":12727,"src":"399:47:15","symbolAliases":[{"foreign":{"id":4487,"name":"Math","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":12726,"src":"407:4:15","typeDescriptions":{}},"nameLocation":"-1:-1:-1"}],"unitAlias":""},{"absolutePath":"@openzeppelin/contracts/utils/types/Time.sol","file":"../../utils/types/Time.sol","id":4490,"nameLocation":"-1:-1:-1","nodeType":"ImportDirective","scope":6373,"sourceUnit":14766,"src":"447:48:15","symbolAliases":[{"foreign":{"id":4489,"name":"Time","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":14765,"src":"455:4:15","typeDescriptions":{}},"nameLocation":"-1:-1:-1"}],"unitAlias":""},{"absolutePath":"@openzeppelin/contracts/utils/cryptography/Hashes.sol","file":"../../utils/cryptography/Hashes.sol","id":4492,"nameLocation":"-1:-1:-1","nodeType":"ImportDirective","scope":6373,"sourceUnit":11073,"src":"496:59:15","symbolAliases":[{"foreign":{"id":4491,"name":"Hashes","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":11072,"src":"504:6:15","typeDescriptions":{}},"nameLocation":"-1:-1:-1"}],"unitAlias":""},{"abstract":false,"baseContracts":[{"baseName":{"id":4494,"name":"Context","nameLocations":["3808:7:15"],"nodeType":"IdentifierPath","referencedDeclaration":10286,"src":"3808:7:15"},"id":4495,"nodeType":"InheritanceSpecifier","src":"3808:7:15"},{"baseName":{"id":4496,"name":"Multicall","nameLocations":["3817:9:15"],"nodeType":"IdentifierPath","referencedDeclaration":10856,"src":"3817:9:15"},"id":4497,"nodeType":"InheritanceSpecifier","src":"3817:9:15"},{"baseName":{"id":4498,"name":"IAccessManager","nameLocations":["3828:14:15"],"nodeType":"IdentifierPath","referencedDeclaration":6842,"src":"3828:14:15"},"id":4499,"nodeType":"InheritanceSpecifier","src":"3828:14:15"}],"canonicalName":"AccessManager","contractDependencies":[],"contractKind":"contract","documentation":{"id":4493,"nodeType":"StructuredDocumentation","src":"557:3224:15","text":" @dev AccessManager is a central contract to store the permissions of a system.\n A smart contract under the control of an AccessManager instance is known as a target, and will inherit from the\n {AccessManaged} contract, be connected to this contract as its manager and implement the {AccessManaged-restricted}\n modifier on a set of functions selected to be permissioned. Note that any function without this setup won't be\n effectively restricted.\n The restriction rules for such functions are defined in terms of \"roles\" identified by an `uint64` and scoped\n by target (`address`) and function selectors (`bytes4`). These roles are stored in this contract and can be\n configured by admins (`ADMIN_ROLE` members) after a delay (see {getTargetAdminDelay}).\n For each target contract, admins can configure the following without any delay:\n * The target's {AccessManaged-authority} via {updateAuthority}.\n * Close or open a target via {setTargetClosed} keeping the permissions intact.\n * The roles that are allowed (or disallowed) to call a given function (identified by its selector) through {setTargetFunctionRole}.\n By default every address is member of the `PUBLIC_ROLE` and every target function is restricted to the `ADMIN_ROLE` until configured otherwise.\n Additionally, each role has the following configuration options restricted to this manager's admins:\n * A role's admin role via {setRoleAdmin} who can grant or revoke roles.\n * A role's guardian role via {setRoleGuardian} who's allowed to cancel operations.\n * A delay in which a role takes effect after being granted through {setGrantDelay}.\n * A delay of any target's admin action via {setTargetAdminDelay}.\n * A role label for discoverability purposes with {labelRole}.\n Any account can be added and removed into any number of these roles by using the {grantRole} and {revokeRole} functions\n restricted to each role's admin (see {getRoleAdmin}).\n Since all the permissions of the managed system can be modified by the admins of this instance, it is expected that\n they will be highly secured (e.g., a multisig or a well-configured DAO).\n NOTE: This contract implements a form of the {IAuthority} interface, but {canCall} has additional return data so it\n doesn't inherit `IAuthority`. It is however compatible with the `IAuthority` interface since the first 32 bytes of\n the return data are a boolean as expected by that interface.\n NOTE: Systems that implement other access control mechanisms (for example using {Ownable}) can be paired with an\n {AccessManager} by transferring permissions (ownership in the case of {Ownable}) directly to the {AccessManager}.\n Users will be able to interact with these contracts through the {execute} function, following the access rules\n registered in the {AccessManager}. Keep in mind that in that context, the msg.sender seen by restricted functions\n will be {AccessManager} itself.\n WARNING: When granting permissions over an {Ownable} or {AccessControl} contract to an {AccessManager}, be very\n mindful of the danger associated with functions such as {Ownable-renounceOwnership} or\n {AccessControl-renounceRole}."},"fullyImplemented":true,"id":6372,"linearizedBaseContracts":[6372,6842,10856,10286],"name":"AccessManager","nameLocation":"3791:13:15","nodeType":"ContractDefinition","nodes":[{"global":false,"id":4501,"libraryName":{"id":4500,"name":"Time","nameLocations":["3855:4:15"],"nodeType":"IdentifierPath","referencedDeclaration":14765,"src":"3855:4:15"},"nodeType":"UsingForDirective","src":"3849:17:15"},{"canonicalName":"AccessManager.TargetConfig","id":4511,"members":[{"constant":false,"id":4505,"mutability":"mutable","name":"allowedRoles","nameLocation":"4008:12:15","nodeType":"VariableDeclaration","scope":4511,"src":"3966:54:15","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_mapping$_t_bytes4_$_t_uint64_$","typeString":"mapping(bytes4 => uint64)"},"typeName":{"id":4504,"keyName":"selector","keyNameLocation":"3981:8:15","keyType":{"id":4502,"name":"bytes4","nodeType":"ElementaryTypeName","src":"3974:6:15","typeDescriptions":{"typeIdentifier":"t_bytes4","typeString":"bytes4"}},"nodeType":"Mapping","src":"3966:41:15","typeDescriptions":{"typeIdentifier":"t_mapping$_t_bytes4_$_t_uint64_$","typeString":"mapping(bytes4 => uint64)"},"valueName":"roleId","valueNameLocation":"4000:6:15","valueType":{"id":4503,"name":"uint64","nodeType":"ElementaryTypeName","src":"3993:6:15","typeDescriptions":{"typeIdentifier":"t_uint64","typeString":"uint64"}}},"visibility":"internal"},{"constant":false,"id":4508,"mutability":"mutable","name":"adminDelay","nameLocation":"4041:10:15","nodeType":"VariableDeclaration","scope":4511,"src":"4030:21:15","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_userDefinedValueType$_Delay_$14528","typeString":"Time.Delay"},"typeName":{"id":4507,"nodeType":"UserDefinedTypeName","pathNode":{"id":4506,"name":"Time.Delay","nameLocations":["4030:4:15","4035:5:15"],"nodeType":"IdentifierPath","referencedDeclaration":14528,"src":"4030:10:15"},"referencedDeclaration":14528,"src":"4030:10:15","typeDescriptions":{"typeIdentifier":"t_userDefinedValueType$_Delay_$14528","typeString":"Time.Delay"}},"visibility":"internal"},{"constant":false,"id":4510,"mutability":"mutable","name":"closed","nameLocation":"4066:6:15","nodeType":"VariableDeclaration","scope":4511,"src":"4061:11:15","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":4509,"name":"bool","nodeType":"ElementaryTypeName","src":"4061:4:15","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"}],"name":"TargetConfig","nameLocation":"3943:12:15","nodeType":"StructDefinition","scope":6372,"src":"3936:143:15","visibility":"public"},{"canonicalName":"AccessManager.Access","id":4517,"members":[{"constant":false,"id":4513,"mutability":"mutable","name":"since","nameLocation":"4374:5:15","nodeType":"VariableDeclaration","scope":4517,"src":"4367:12:15","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint48","typeString":"uint48"},"typeName":{"id":4512,"name":"uint48","nodeType":"ElementaryTypeName","src":"4367:6:15","typeDescriptions":{"typeIdentifier":"t_uint48","typeString":"uint48"}},"visibility":"internal"},{"constant":false,"id":4516,"mutability":"mutable","name":"delay","nameLocation":"4480:5:15","nodeType":"VariableDeclaration","scope":4517,"src":"4469:16:15","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_userDefinedValueType$_Delay_$14528","typeString":"Time.Delay"},"typeName":{"id":4515,"nodeType":"UserDefinedTypeName","pathNode":{"id":4514,"name":"Time.Delay","nameLocations":["4469:4:15","4474:5:15"],"nodeType":"IdentifierPath","referencedDeclaration":14528,"src":"4469:10:15"},"referencedDeclaration":14528,"src":"4469:10:15","typeDescriptions":{"typeIdentifier":"t_userDefinedValueType$_Delay_$14528","typeString":"Time.Delay"}},"visibility":"internal"}],"name":"Access","nameLocation":"4198:6:15","nodeType":"StructDefinition","scope":6372,"src":"4191:301:15","visibility":"public"},{"canonicalName":"AccessManager.Role","id":4530,"members":[{"constant":false,"id":4522,"mutability":"mutable","name":"members","nameLocation":"4643:7:15","nodeType":"VariableDeclaration","scope":4530,"src":"4604:46:15","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_struct$_Access_$4517_storage_$","typeString":"mapping(address => struct AccessManager.Access)"},"typeName":{"id":4521,"keyName":"user","keyNameLocation":"4620:4:15","keyType":{"id":4518,"name":"address","nodeType":"ElementaryTypeName","src":"4612:7:15","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"Mapping","src":"4604:38:15","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_struct$_Access_$4517_storage_$","typeString":"mapping(address => struct AccessManager.Access)"},"valueName":"access","valueNameLocation":"4635:6:15","valueType":{"id":4520,"nodeType":"UserDefinedTypeName","pathNode":{"id":4519,"name":"Access","nameLocations":["4628:6:15"],"nodeType":"IdentifierPath","referencedDeclaration":4517,"src":"4628:6:15"},"referencedDeclaration":4517,"src":"4628:6:15","typeDescriptions":{"typeIdentifier":"t_struct$_Access_$4517_storage_ptr","typeString":"struct AccessManager.Access"}}},"visibility":"internal"},{"constant":false,"id":4524,"mutability":"mutable","name":"admin","nameLocation":"4721:5:15","nodeType":"VariableDeclaration","scope":4530,"src":"4714:12:15","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint64","typeString":"uint64"},"typeName":{"id":4523,"name":"uint64","nodeType":"ElementaryTypeName","src":"4714:6:15","typeDescriptions":{"typeIdentifier":"t_uint64","typeString":"uint64"}},"visibility":"internal"},{"constant":false,"id":4526,"mutability":"mutable","name":"guardian","nameLocation":"4830:8:15","nodeType":"VariableDeclaration","scope":4530,"src":"4823:15:15","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint64","typeString":"uint64"},"typeName":{"id":4525,"name":"uint64","nodeType":"ElementaryTypeName","src":"4823:6:15","typeDescriptions":{"typeIdentifier":"t_uint64","typeString":"uint64"}},"visibility":"internal"},{"constant":false,"id":4529,"mutability":"mutable","name":"grantDelay","nameLocation":"4928:10:15","nodeType":"VariableDeclaration","scope":4530,"src":"4917:21:15","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_userDefinedValueType$_Delay_$14528","typeString":"Time.Delay"},"typeName":{"id":4528,"nodeType":"UserDefinedTypeName","pathNode":{"id":4527,"name":"Time.Delay","nameLocations":["4917:4:15","4922:5:15"],"nodeType":"IdentifierPath","referencedDeclaration":14528,"src":"4917:10:15"},"referencedDeclaration":14528,"src":"4917:10:15","typeDescriptions":{"typeIdentifier":"t_userDefinedValueType$_Delay_$14528","typeString":"Time.Delay"}},"visibility":"internal"}],"name":"Role","nameLocation":"4557:4:15","nodeType":"StructDefinition","scope":6372,"src":"4550:395:15","visibility":"public"},{"canonicalName":"AccessManager.Schedule","id":4535,"members":[{"constant":false,"id":4532,"mutability":"mutable","name":"timepoint","nameLocation":"5150:9:15","nodeType":"VariableDeclaration","scope":4535,"src":"5143:16:15","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint48","typeString":"uint48"},"typeName":{"id":4531,"name":"uint48","nodeType":"ElementaryTypeName","src":"5143:6:15","typeDescriptions":{"typeIdentifier":"t_uint48","typeString":"uint48"}},"visibility":"internal"},{"constant":false,"id":4534,"mutability":"mutable","name":"nonce","nameLocation":"5261:5:15","nodeType":"VariableDeclaration","scope":4535,"src":"5254:12:15","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint32","typeString":"uint32"},"typeName":{"id":4533,"name":"uint32","nodeType":"ElementaryTypeName","src":"5254:6:15","typeDescriptions":{"typeIdentifier":"t_uint32","typeString":"uint32"}},"visibility":"internal"}],"name":"Schedule","nameLocation":"5066:8:15","nodeType":"StructDefinition","scope":6372,"src":"5059:214:15","visibility":"public"},{"constant":true,"documentation":{"id":4536,"nodeType":"StructuredDocumentation","src":"5279:173:15","text":" @dev The identifier of the admin role. Required to perform most configuration operations including\n other roles' management and target restrictions."},"functionSelector":"75b238fc","id":4543,"mutability":"constant","name":"ADMIN_ROLE","nameLocation":"5480:10:15","nodeType":"VariableDeclaration","scope":6372,"src":"5457:52:15","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint64","typeString":"uint64"},"typeName":{"id":4537,"name":"uint64","nodeType":"ElementaryTypeName","src":"5457:6:15","typeDescriptions":{"typeIdentifier":"t_uint64","typeString":"uint64"}},"value":{"expression":{"arguments":[{"id":4540,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"5498:6:15","typeDescriptions":{"typeIdentifier":"t_type$_t_uint64_$","typeString":"type(uint64)"},"typeName":{"id":4539,"name":"uint64","nodeType":"ElementaryTypeName","src":"5498:6:15","typeDescriptions":{}}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_type$_t_uint64_$","typeString":"type(uint64)"}],"id":4538,"name":"type","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-27,"src":"5493:4:15","typeDescriptions":{"typeIdentifier":"t_function_metatype_pure$__$returns$__$","typeString":"function () pure"}},"id":4541,"isConstant":false,"isLValue":false,"isPure":true,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"5493:12:15","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_magic_meta_type_t_uint64","typeString":"type(uint64)"}},"id":4542,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberLocation":"5506:3:15","memberName":"min","nodeType":"MemberAccess","src":"5493:16:15","typeDescriptions":{"typeIdentifier":"t_uint64","typeString":"uint64"}},"visibility":"public"},{"constant":true,"documentation":{"id":4544,"nodeType":"StructuredDocumentation","src":"5521:112:15","text":" @dev The identifier of the public role. Automatically granted to all addresses with no delay."},"functionSelector":"3ca7c02a","id":4551,"mutability":"constant","name":"PUBLIC_ROLE","nameLocation":"5661:11:15","nodeType":"VariableDeclaration","scope":6372,"src":"5638:53:15","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint64","typeString":"uint64"},"typeName":{"id":4545,"name":"uint64","nodeType":"ElementaryTypeName","src":"5638:6:15","typeDescriptions":{"typeIdentifier":"t_uint64","typeString":"uint64"}},"value":{"expression":{"arguments":[{"id":4548,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"5680:6:15","typeDescriptions":{"typeIdentifier":"t_type$_t_uint64_$","typeString":"type(uint64)"},"typeName":{"id":4547,"name":"uint64","nodeType":"ElementaryTypeName","src":"5680:6:15","typeDescriptions":{}}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_type$_t_uint64_$","typeString":"type(uint64)"}],"id":4546,"name":"type","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-27,"src":"5675:4:15","typeDescriptions":{"typeIdentifier":"t_function_metatype_pure$__$returns$__$","typeString":"function () pure"}},"id":4549,"isConstant":false,"isLValue":false,"isPure":true,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"5675:12:15","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_magic_meta_type_t_uint64","typeString":"type(uint64)"}},"id":4550,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberLocation":"5688:3:15","memberName":"max","nodeType":"MemberAccess","src":"5675:16:15","typeDescriptions":{"typeIdentifier":"t_uint64","typeString":"uint64"}},"visibility":"public"},{"constant":false,"id":4556,"mutability":"mutable","name":"_targets","nameLocation":"5762:8:15","nodeType":"VariableDeclaration","scope":6372,"src":"5709:61:15","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_struct$_TargetConfig_$4511_storage_$","typeString":"mapping(address => struct AccessManager.TargetConfig)"},"typeName":{"id":4555,"keyName":"target","keyNameLocation":"5725:6:15","keyType":{"id":4552,"name":"address","nodeType":"ElementaryTypeName","src":"5717:7:15","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"Mapping","src":"5709:44:15","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_struct$_TargetConfig_$4511_storage_$","typeString":"mapping(address => struct AccessManager.TargetConfig)"},"valueName":"mode","valueNameLocation":"5748:4:15","valueType":{"id":4554,"nodeType":"UserDefinedTypeName","pathNode":{"id":4553,"name":"TargetConfig","nameLocations":["5735:12:15"],"nodeType":"IdentifierPath","referencedDeclaration":4511,"src":"5735:12:15"},"referencedDeclaration":4511,"src":"5735:12:15","typeDescriptions":{"typeIdentifier":"t_struct$_TargetConfig_$4511_storage_ptr","typeString":"struct AccessManager.TargetConfig"}}},"visibility":"private"},{"constant":false,"id":4561,"mutability":"mutable","name":"_roles","nameLocation":"5815:6:15","nodeType":"VariableDeclaration","scope":6372,"src":"5776:45:15","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_mapping$_t_uint64_$_t_struct$_Role_$4530_storage_$","typeString":"mapping(uint64 => struct AccessManager.Role)"},"typeName":{"id":4560,"keyName":"roleId","keyNameLocation":"5791:6:15","keyType":{"id":4557,"name":"uint64","nodeType":"ElementaryTypeName","src":"5784:6:15","typeDescriptions":{"typeIdentifier":"t_uint64","typeString":"uint64"}},"nodeType":"Mapping","src":"5776:30:15","typeDescriptions":{"typeIdentifier":"t_mapping$_t_uint64_$_t_struct$_Role_$4530_storage_$","typeString":"mapping(uint64 => struct AccessManager.Role)"},"valueName":"","valueNameLocation":"-1:-1:-1","valueType":{"id":4559,"nodeType":"UserDefinedTypeName","pathNode":{"id":4558,"name":"Role","nameLocations":["5801:4:15"],"nodeType":"IdentifierPath","referencedDeclaration":4530,"src":"5801:4:15"},"referencedDeclaration":4530,"src":"5801:4:15","typeDescriptions":{"typeIdentifier":"t_struct$_Role_$4530_storage_ptr","typeString":"struct AccessManager.Role"}}},"visibility":"private"},{"constant":false,"id":4566,"mutability":"mutable","name":"_schedules","nameLocation":"5876:10:15","nodeType":"VariableDeclaration","scope":6372,"src":"5827:59:15","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_mapping$_t_bytes32_$_t_struct$_Schedule_$4535_storage_$","typeString":"mapping(bytes32 => struct AccessManager.Schedule)"},"typeName":{"id":4565,"keyName":"operationId","keyNameLocation":"5843:11:15","keyType":{"id":4562,"name":"bytes32","nodeType":"ElementaryTypeName","src":"5835:7:15","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"nodeType":"Mapping","src":"5827:40:15","typeDescriptions":{"typeIdentifier":"t_mapping$_t_bytes32_$_t_struct$_Schedule_$4535_storage_$","typeString":"mapping(bytes32 => struct AccessManager.Schedule)"},"valueName":"","valueNameLocation":"-1:-1:-1","valueType":{"id":4564,"nodeType":"UserDefinedTypeName","pathNode":{"id":4563,"name":"Schedule","nameLocations":["5858:8:15"],"nodeType":"IdentifierPath","referencedDeclaration":4535,"src":"5858:8:15"},"referencedDeclaration":4535,"src":"5858:8:15","typeDescriptions":{"typeIdentifier":"t_struct$_Schedule_$4535_storage_ptr","typeString":"struct AccessManager.Schedule"}}},"visibility":"private"},{"constant":false,"id":4568,"mutability":"mutable","name":"_executionId","nameLocation":"6060:12:15","nodeType":"VariableDeclaration","scope":6372,"src":"6044:28:15","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":4567,"name":"bytes32","nodeType":"ElementaryTypeName","src":"6044:7:15","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"private"},{"body":{"id":4575,"nodeType":"Block","src":"6287:46:15","statements":[{"expression":{"arguments":[],"expression":{"argumentTypes":[],"id":4571,"name":"_checkAuthorized","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5992,"src":"6297:16:15","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$__$returns$__$","typeString":"function ()"}},"id":4572,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"6297:18:15","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":4573,"nodeType":"ExpressionStatement","src":"6297:18:15"},{"id":4574,"nodeType":"PlaceholderStatement","src":"6325:1:15"}]},"documentation":{"id":4569,"nodeType":"StructuredDocumentation","src":"6079:177:15","text":" @dev Check that the caller is authorized to perform the operation.\n See {AccessManager} description for a detailed breakdown of the authorization logic."},"id":4576,"name":"onlyAuthorized","nameLocation":"6270:14:15","nodeType":"ModifierDefinition","parameters":{"id":4570,"nodeType":"ParameterList","parameters":[],"src":"6284:2:15"},"src":"6261:72:15","virtual":false,"visibility":"internal"},{"body":{"id":4603,"nodeType":"Block","src":"6373:249:15","statements":[{"condition":{"commonType":{"typeIdentifier":"t_address","typeString":"address"},"id":4586,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":4581,"name":"initialAdmin","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4578,"src":"6387:12:15","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"arguments":[{"hexValue":"30","id":4584,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"6411:1:15","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":4583,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"6403:7:15","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":4582,"name":"address","nodeType":"ElementaryTypeName","src":"6403:7:15","typeDescriptions":{}}},"id":4585,"isConstant":false,"isLValue":false,"isPure":true,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"6403:10:15","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"src":"6387:26:15","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":4595,"nodeType":"IfStatement","src":"6383:108:15","trueBody":{"id":4594,"nodeType":"Block","src":"6415:76:15","statements":[{"errorCall":{"arguments":[{"arguments":[{"hexValue":"30","id":4590,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"6477:1:15","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":4589,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"6469:7:15","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":4588,"name":"address","nodeType":"ElementaryTypeName","src":"6469:7:15","typeDescriptions":{}}},"id":4591,"isConstant":false,"isLValue":false,"isPure":true,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"6469:10:15","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"id":4587,"name":"AccessManagerInvalidInitialAdmin","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6572,"src":"6436:32:15","typeDescriptions":{"typeIdentifier":"t_function_error_pure$_t_address_$returns$_t_error_$","typeString":"function (address) pure returns (error)"}},"id":4592,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"6436:44:15","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_error","typeString":"error"}},"id":4593,"nodeType":"RevertStatement","src":"6429:51:15"}]}},{"expression":{"arguments":[{"id":4597,"name":"ADMIN_ROLE","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4543,"src":"6584:10:15","typeDescriptions":{"typeIdentifier":"t_uint64","typeString":"uint64"}},{"id":4598,"name":"initialAdmin","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4578,"src":"6596:12:15","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"hexValue":"30","id":4599,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"6610:1:15","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},{"hexValue":"30","id":4600,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"6613:1:15","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint64","typeString":"uint64"},{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"}],"id":4596,"name":"_grantRole","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5108,"src":"6573:10:15","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_uint64_$_t_address_$_t_uint32_$_t_uint32_$returns$_t_bool_$","typeString":"function (uint64,address,uint32,uint32) returns (bool)"}},"id":4601,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"6573:42:15","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":4602,"nodeType":"ExpressionStatement","src":"6573:42:15"}]},"id":4604,"implemented":true,"kind":"constructor","modifiers":[],"name":"","nameLocation":"-1:-1:-1","nodeType":"FunctionDefinition","parameters":{"id":4579,"nodeType":"ParameterList","parameters":[{"constant":false,"id":4578,"mutability":"mutable","name":"initialAdmin","nameLocation":"6359:12:15","nodeType":"VariableDeclaration","scope":4604,"src":"6351:20:15","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":4577,"name":"address","nodeType":"ElementaryTypeName","src":"6351:7:15","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"6350:22:15"},"returnParameters":{"id":4580,"nodeType":"ParameterList","parameters":[],"src":"6373:0:15"},"scope":6372,"src":"6339:283:15","stateMutability":"nonpayable","virtual":false,"visibility":"public"},{"baseFunctions":[6586],"body":{"id":4670,"nodeType":"Block","src":"6938:647:15","statements":[{"condition":{"arguments":[{"id":4619,"name":"target","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4609,"src":"6967:6:15","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"id":4618,"name":"isTargetClosed","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4703,"src":"6952:14:15","typeDescriptions":{"typeIdentifier":"t_function_internal_view$_t_address_$returns$_t_bool_$","typeString":"function (address) view returns (bool)"}},"id":4620,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"6952:22:15","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"falseBody":{"condition":{"commonType":{"typeIdentifier":"t_address","typeString":"address"},"id":4631,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":4626,"name":"caller","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4607,"src":"7028:6:15","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"arguments":[{"id":4629,"name":"this","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-28,"src":"7046:4:15","typeDescriptions":{"typeIdentifier":"t_contract$_AccessManager_$6372","typeString":"contract AccessManager"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_contract$_AccessManager_$6372","typeString":"contract AccessManager"}],"id":4628,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"7038:7:15","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":4627,"name":"address","nodeType":"ElementaryTypeName","src":"7038:7:15","typeDescriptions":{}}},"id":4630,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"7038:13:15","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"src":"7028:23:15","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"falseBody":{"id":4667,"nodeType":"Block","src":"7345:234:15","statements":[{"assignments":[4641],"declarations":[{"constant":false,"id":4641,"mutability":"mutable","name":"roleId","nameLocation":"7366:6:15","nodeType":"VariableDeclaration","scope":4667,"src":"7359:13:15","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint64","typeString":"uint64"},"typeName":{"id":4640,"name":"uint64","nodeType":"ElementaryTypeName","src":"7359:6:15","typeDescriptions":{"typeIdentifier":"t_uint64","typeString":"uint64"}},"visibility":"internal"}],"id":4646,"initialValue":{"arguments":[{"id":4643,"name":"target","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4609,"src":"7397:6:15","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":4644,"name":"selector","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4611,"src":"7405:8:15","typeDescriptions":{"typeIdentifier":"t_bytes4","typeString":"bytes4"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_bytes4","typeString":"bytes4"}],"id":4642,"name":"getTargetFunctionRole","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4721,"src":"7375:21:15","typeDescriptions":{"typeIdentifier":"t_function_internal_view$_t_address_$_t_bytes4_$returns$_t_uint64_$","typeString":"function (address,bytes4) view returns (uint64)"}},"id":4645,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"7375:39:15","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint64","typeString":"uint64"}},"nodeType":"VariableDeclarationStatement","src":"7359:55:15"},{"assignments":[4648,4650],"declarations":[{"constant":false,"id":4648,"mutability":"mutable","name":"isMember","nameLocation":"7434:8:15","nodeType":"VariableDeclaration","scope":4667,"src":"7429:13:15","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":4647,"name":"bool","nodeType":"ElementaryTypeName","src":"7429:4:15","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"},{"constant":false,"id":4650,"mutability":"mutable","name":"currentDelay","nameLocation":"7451:12:15","nodeType":"VariableDeclaration","scope":4667,"src":"7444:19:15","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint32","typeString":"uint32"},"typeName":{"id":4649,"name":"uint32","nodeType":"ElementaryTypeName","src":"7444:6:15","typeDescriptions":{"typeIdentifier":"t_uint32","typeString":"uint32"}},"visibility":"internal"}],"id":4655,"initialValue":{"arguments":[{"id":4652,"name":"roleId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4641,"src":"7475:6:15","typeDescriptions":{"typeIdentifier":"t_uint64","typeString":"uint64"}},{"id":4653,"name":"caller","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4607,"src":"7483:6:15","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint64","typeString":"uint64"},{"typeIdentifier":"t_address","typeString":"address"}],"id":4651,"name":"hasRole","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4873,"src":"7467:7:15","typeDescriptions":{"typeIdentifier":"t_function_internal_view$_t_uint64_$_t_address_$returns$_t_bool_$_t_uint32_$","typeString":"function (uint64,address) view returns (bool,uint32)"}},"id":4654,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"7467:23:15","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$_t_bool_$_t_uint32_$","typeString":"tuple(bool,uint32)"}},"nodeType":"VariableDeclarationStatement","src":"7428:62:15"},{"expression":{"condition":{"id":4656,"name":"isMember","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4648,"src":"7511:8:15","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"falseExpression":{"components":[{"hexValue":"66616c7365","id":4662,"isConstant":false,"isLValue":false,"isPure":true,"kind":"bool","lValueRequested":false,"nodeType":"Literal","src":"7559:5:15","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"value":"false"},{"hexValue":"30","id":4663,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"7566:1:15","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"}],"id":4664,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"TupleExpression","src":"7558:10:15","typeDescriptions":{"typeIdentifier":"t_tuple$_t_bool_$_t_rational_0_by_1_$","typeString":"tuple(bool,int_const 0)"}},"id":4665,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"Conditional","src":"7511:57:15","trueExpression":{"components":[{"commonType":{"typeIdentifier":"t_uint32","typeString":"uint32"},"id":4659,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":4657,"name":"currentDelay","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4650,"src":"7523:12:15","typeDescriptions":{"typeIdentifier":"t_uint32","typeString":"uint32"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"hexValue":"30","id":4658,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"7539:1:15","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"7523:17:15","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},{"id":4660,"name":"currentDelay","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4650,"src":"7542:12:15","typeDescriptions":{"typeIdentifier":"t_uint32","typeString":"uint32"}}],"id":4661,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"7522:33:15","typeDescriptions":{"typeIdentifier":"t_tuple$_t_bool_$_t_uint32_$","typeString":"tuple(bool,uint32)"}},"typeDescriptions":{"typeIdentifier":"t_tuple$_t_bool_$_t_uint32_$","typeString":"tuple(bool,uint32)"}},"functionReturnParameters":4617,"id":4666,"nodeType":"Return","src":"7504:64:15"}]},"id":4668,"nodeType":"IfStatement","src":"7024:555:15","trueBody":{"id":4639,"nodeType":"Block","src":"7053:286:15","statements":[{"expression":{"components":[{"arguments":[{"id":4633,"name":"target","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4609,"src":"7307:6:15","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":4634,"name":"selector","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4611,"src":"7315:8:15","typeDescriptions":{"typeIdentifier":"t_bytes4","typeString":"bytes4"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_bytes4","typeString":"bytes4"}],"id":4632,"name":"_isExecuting","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6310,"src":"7294:12:15","typeDescriptions":{"typeIdentifier":"t_function_internal_view$_t_address_$_t_bytes4_$returns$_t_bool_$","typeString":"function (address,bytes4) view returns (bool)"}},"id":4635,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"7294:30:15","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},{"hexValue":"30","id":4636,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"7326:1:15","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"}],"id":4637,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"7293:35:15","typeDescriptions":{"typeIdentifier":"t_tuple$_t_bool_$_t_rational_0_by_1_$","typeString":"tuple(bool,int_const 0)"}},"functionReturnParameters":4617,"id":4638,"nodeType":"Return","src":"7286:42:15"}]}},"id":4669,"nodeType":"IfStatement","src":"6948:631:15","trueBody":{"id":4625,"nodeType":"Block","src":"6976:42:15","statements":[{"expression":{"components":[{"hexValue":"66616c7365","id":4621,"isConstant":false,"isLValue":false,"isPure":true,"kind":"bool","lValueRequested":false,"nodeType":"Literal","src":"6998:5:15","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"value":"false"},{"hexValue":"30","id":4622,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"7005:1:15","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"}],"id":4623,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"TupleExpression","src":"6997:10:15","typeDescriptions":{"typeIdentifier":"t_tuple$_t_bool_$_t_rational_0_by_1_$","typeString":"tuple(bool,int_const 0)"}},"functionReturnParameters":4617,"id":4624,"nodeType":"Return","src":"6990:17:15"}]}}]},"documentation":{"id":4605,"nodeType":"StructuredDocumentation","src":"6748:30:15","text":"@inheritdoc IAccessManager"},"functionSelector":"b7009613","id":4671,"implemented":true,"kind":"function","modifiers":[],"name":"canCall","nameLocation":"6792:7:15","nodeType":"FunctionDefinition","parameters":{"id":4612,"nodeType":"ParameterList","parameters":[{"constant":false,"id":4607,"mutability":"mutable","name":"caller","nameLocation":"6817:6:15","nodeType":"VariableDeclaration","scope":4671,"src":"6809:14:15","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":4606,"name":"address","nodeType":"ElementaryTypeName","src":"6809:7:15","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":4609,"mutability":"mutable","name":"target","nameLocation":"6841:6:15","nodeType":"VariableDeclaration","scope":4671,"src":"6833:14:15","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":4608,"name":"address","nodeType":"ElementaryTypeName","src":"6833:7:15","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":4611,"mutability":"mutable","name":"selector","nameLocation":"6864:8:15","nodeType":"VariableDeclaration","scope":4671,"src":"6857:15:15","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes4","typeString":"bytes4"},"typeName":{"id":4610,"name":"bytes4","nodeType":"ElementaryTypeName","src":"6857:6:15","typeDescriptions":{"typeIdentifier":"t_bytes4","typeString":"bytes4"}},"visibility":"internal"}],"src":"6799:79:15"},"returnParameters":{"id":4617,"nodeType":"ParameterList","parameters":[{"constant":false,"id":4614,"mutability":"mutable","name":"immediate","nameLocation":"6913:9:15","nodeType":"VariableDeclaration","scope":4671,"src":"6908:14:15","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":4613,"name":"bool","nodeType":"ElementaryTypeName","src":"6908:4:15","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"},{"constant":false,"id":4616,"mutability":"mutable","name":"delay","nameLocation":"6931:5:15","nodeType":"VariableDeclaration","scope":4671,"src":"6924:12:15","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint32","typeString":"uint32"},"typeName":{"id":4615,"name":"uint32","nodeType":"ElementaryTypeName","src":"6924:6:15","typeDescriptions":{"typeIdentifier":"t_uint32","typeString":"uint32"}},"visibility":"internal"}],"src":"6907:30:15"},"scope":6372,"src":"6783:802:15","stateMutability":"view","virtual":true,"visibility":"public"},{"baseFunctions":[6592],"body":{"id":4679,"nodeType":"Block","src":"7685:31:15","statements":[{"expression":{"hexValue":"31","id":4677,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"7702:7:15","subdenomination":"weeks","typeDescriptions":{"typeIdentifier":"t_rational_604800_by_1","typeString":"int_const 604800"},"value":"1"},"functionReturnParameters":4676,"id":4678,"nodeType":"Return","src":"7695:14:15"}]},"documentation":{"id":4672,"nodeType":"StructuredDocumentation","src":"7591:30:15","text":"@inheritdoc IAccessManager"},"functionSelector":"4665096d","id":4680,"implemented":true,"kind":"function","modifiers":[],"name":"expiration","nameLocation":"7635:10:15","nodeType":"FunctionDefinition","parameters":{"id":4673,"nodeType":"ParameterList","parameters":[],"src":"7645:2:15"},"returnParameters":{"id":4676,"nodeType":"ParameterList","parameters":[{"constant":false,"id":4675,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":4680,"src":"7677:6:15","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint32","typeString":"uint32"},"typeName":{"id":4674,"name":"uint32","nodeType":"ElementaryTypeName","src":"7677:6:15","typeDescriptions":{"typeIdentifier":"t_uint32","typeString":"uint32"}},"visibility":"internal"}],"src":"7676:8:15"},"scope":6372,"src":"7626:90:15","stateMutability":"view","virtual":true,"visibility":"public"},{"baseFunctions":[6598],"body":{"id":4688,"nodeType":"Block","src":"7816:30:15","statements":[{"expression":{"hexValue":"35","id":4686,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"7833:6:15","subdenomination":"days","typeDescriptions":{"typeIdentifier":"t_rational_432000_by_1","typeString":"int_const 432000"},"value":"5"},"functionReturnParameters":4685,"id":4687,"nodeType":"Return","src":"7826:13:15"}]},"documentation":{"id":4681,"nodeType":"StructuredDocumentation","src":"7722:30:15","text":"@inheritdoc IAccessManager"},"functionSelector":"cc1b6c81","id":4689,"implemented":true,"kind":"function","modifiers":[],"name":"minSetback","nameLocation":"7766:10:15","nodeType":"FunctionDefinition","parameters":{"id":4682,"nodeType":"ParameterList","parameters":[],"src":"7776:2:15"},"returnParameters":{"id":4685,"nodeType":"ParameterList","parameters":[{"constant":false,"id":4684,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":4689,"src":"7808:6:15","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint32","typeString":"uint32"},"typeName":{"id":4683,"name":"uint32","nodeType":"ElementaryTypeName","src":"7808:6:15","typeDescriptions":{"typeIdentifier":"t_uint32","typeString":"uint32"}},"visibility":"internal"}],"src":"7807:8:15"},"scope":6372,"src":"7757:89:15","stateMutability":"view","virtual":true,"visibility":"public"},{"baseFunctions":[6606],"body":{"id":4702,"nodeType":"Block","src":"7962:47:15","statements":[{"expression":{"expression":{"baseExpression":{"id":4697,"name":"_targets","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4556,"src":"7979:8:15","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_struct$_TargetConfig_$4511_storage_$","typeString":"mapping(address => struct AccessManager.TargetConfig storage ref)"}},"id":4699,"indexExpression":{"id":4698,"name":"target","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4692,"src":"7988:6:15","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"7979:16:15","typeDescriptions":{"typeIdentifier":"t_struct$_TargetConfig_$4511_storage","typeString":"struct AccessManager.TargetConfig storage ref"}},"id":4700,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"7996:6:15","memberName":"closed","nodeType":"MemberAccess","referencedDeclaration":4510,"src":"7979:23:15","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"functionReturnParameters":4696,"id":4701,"nodeType":"Return","src":"7972:30:15"}]},"documentation":{"id":4690,"nodeType":"StructuredDocumentation","src":"7852:30:15","text":"@inheritdoc IAccessManager"},"functionSelector":"a166aa89","id":4703,"implemented":true,"kind":"function","modifiers":[],"name":"isTargetClosed","nameLocation":"7896:14:15","nodeType":"FunctionDefinition","parameters":{"id":4693,"nodeType":"ParameterList","parameters":[{"constant":false,"id":4692,"mutability":"mutable","name":"target","nameLocation":"7919:6:15","nodeType":"VariableDeclaration","scope":4703,"src":"7911:14:15","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":4691,"name":"address","nodeType":"ElementaryTypeName","src":"7911:7:15","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"7910:16:15"},"returnParameters":{"id":4696,"nodeType":"ParameterList","parameters":[{"constant":false,"id":4695,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":4703,"src":"7956:4:15","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":4694,"name":"bool","nodeType":"ElementaryTypeName","src":"7956:4:15","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"}],"src":"7955:6:15"},"scope":6372,"src":"7887:122:15","stateMutability":"view","virtual":true,"visibility":"public"},{"baseFunctions":[6616],"body":{"id":4720,"nodeType":"Block","src":"8151:63:15","statements":[{"expression":{"baseExpression":{"expression":{"baseExpression":{"id":4713,"name":"_targets","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4556,"src":"8168:8:15","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_struct$_TargetConfig_$4511_storage_$","typeString":"mapping(address => struct AccessManager.TargetConfig storage ref)"}},"id":4715,"indexExpression":{"id":4714,"name":"target","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4706,"src":"8177:6:15","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"8168:16:15","typeDescriptions":{"typeIdentifier":"t_struct$_TargetConfig_$4511_storage","typeString":"struct AccessManager.TargetConfig storage ref"}},"id":4716,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"8185:12:15","memberName":"allowedRoles","nodeType":"MemberAccess","referencedDeclaration":4505,"src":"8168:29:15","typeDescriptions":{"typeIdentifier":"t_mapping$_t_bytes4_$_t_uint64_$","typeString":"mapping(bytes4 => uint64)"}},"id":4718,"indexExpression":{"id":4717,"name":"selector","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4708,"src":"8198:8:15","typeDescriptions":{"typeIdentifier":"t_bytes4","typeString":"bytes4"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"8168:39:15","typeDescriptions":{"typeIdentifier":"t_uint64","typeString":"uint64"}},"functionReturnParameters":4712,"id":4719,"nodeType":"Return","src":"8161:46:15"}]},"documentation":{"id":4704,"nodeType":"StructuredDocumentation","src":"8015:30:15","text":"@inheritdoc IAccessManager"},"functionSelector":"6d5115bd","id":4721,"implemented":true,"kind":"function","modifiers":[],"name":"getTargetFunctionRole","nameLocation":"8059:21:15","nodeType":"FunctionDefinition","parameters":{"id":4709,"nodeType":"ParameterList","parameters":[{"constant":false,"id":4706,"mutability":"mutable","name":"target","nameLocation":"8089:6:15","nodeType":"VariableDeclaration","scope":4721,"src":"8081:14:15","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":4705,"name":"address","nodeType":"ElementaryTypeName","src":"8081:7:15","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":4708,"mutability":"mutable","name":"selector","nameLocation":"8104:8:15","nodeType":"VariableDeclaration","scope":4721,"src":"8097:15:15","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes4","typeString":"bytes4"},"typeName":{"id":4707,"name":"bytes4","nodeType":"ElementaryTypeName","src":"8097:6:15","typeDescriptions":{"typeIdentifier":"t_bytes4","typeString":"bytes4"}},"visibility":"internal"}],"src":"8080:33:15"},"returnParameters":{"id":4712,"nodeType":"ParameterList","parameters":[{"constant":false,"id":4711,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":4721,"src":"8143:6:15","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint64","typeString":"uint64"},"typeName":{"id":4710,"name":"uint64","nodeType":"ElementaryTypeName","src":"8143:6:15","typeDescriptions":{"typeIdentifier":"t_uint64","typeString":"uint64"}},"visibility":"internal"}],"src":"8142:8:15"},"scope":6372,"src":"8050:164:15","stateMutability":"view","virtual":true,"visibility":"public"},{"baseFunctions":[6624],"body":{"id":4736,"nodeType":"Block","src":"8337:57:15","statements":[{"expression":{"arguments":[],"expression":{"argumentTypes":[],"expression":{"expression":{"baseExpression":{"id":4729,"name":"_targets","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4556,"src":"8354:8:15","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_struct$_TargetConfig_$4511_storage_$","typeString":"mapping(address => struct AccessManager.TargetConfig storage ref)"}},"id":4731,"indexExpression":{"id":4730,"name":"target","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4724,"src":"8363:6:15","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"8354:16:15","typeDescriptions":{"typeIdentifier":"t_struct$_TargetConfig_$4511_storage","typeString":"struct AccessManager.TargetConfig storage ref"}},"id":4732,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"8371:10:15","memberName":"adminDelay","nodeType":"MemberAccess","referencedDeclaration":4508,"src":"8354:27:15","typeDescriptions":{"typeIdentifier":"t_userDefinedValueType$_Delay_$14528","typeString":"Time.Delay"}},"id":4733,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"8382:3:15","memberName":"get","nodeType":"MemberAccess","referencedDeclaration":14619,"src":"8354:31:15","typeDescriptions":{"typeIdentifier":"t_function_internal_view$_t_userDefinedValueType$_Delay_$14528_$returns$_t_uint32_$attached_to$_t_userDefinedValueType$_Delay_$14528_$","typeString":"function (Time.Delay) view returns (uint32)"}},"id":4734,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"8354:33:15","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint32","typeString":"uint32"}},"functionReturnParameters":4728,"id":4735,"nodeType":"Return","src":"8347:40:15"}]},"documentation":{"id":4722,"nodeType":"StructuredDocumentation","src":"8220:30:15","text":"@inheritdoc IAccessManager"},"functionSelector":"4c1da1e2","id":4737,"implemented":true,"kind":"function","modifiers":[],"name":"getTargetAdminDelay","nameLocation":"8264:19:15","nodeType":"FunctionDefinition","parameters":{"id":4725,"nodeType":"ParameterList","parameters":[{"constant":false,"id":4724,"mutability":"mutable","name":"target","nameLocation":"8292:6:15","nodeType":"VariableDeclaration","scope":4737,"src":"8284:14:15","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":4723,"name":"address","nodeType":"ElementaryTypeName","src":"8284:7:15","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"8283:16:15"},"returnParameters":{"id":4728,"nodeType":"ParameterList","parameters":[{"constant":false,"id":4727,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":4737,"src":"8329:6:15","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint32","typeString":"uint32"},"typeName":{"id":4726,"name":"uint32","nodeType":"ElementaryTypeName","src":"8329:6:15","typeDescriptions":{"typeIdentifier":"t_uint32","typeString":"uint32"}},"visibility":"internal"}],"src":"8328:8:15"},"scope":6372,"src":"8255:139:15","stateMutability":"view","virtual":true,"visibility":"public"},{"baseFunctions":[6632],"body":{"id":4750,"nodeType":"Block","src":"8509:44:15","statements":[{"expression":{"expression":{"baseExpression":{"id":4745,"name":"_roles","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4561,"src":"8526:6:15","typeDescriptions":{"typeIdentifier":"t_mapping$_t_uint64_$_t_struct$_Role_$4530_storage_$","typeString":"mapping(uint64 => struct AccessManager.Role storage ref)"}},"id":4747,"indexExpression":{"id":4746,"name":"roleId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4740,"src":"8533:6:15","typeDescriptions":{"typeIdentifier":"t_uint64","typeString":"uint64"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"8526:14:15","typeDescriptions":{"typeIdentifier":"t_struct$_Role_$4530_storage","typeString":"struct AccessManager.Role storage ref"}},"id":4748,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"8541:5:15","memberName":"admin","nodeType":"MemberAccess","referencedDeclaration":4524,"src":"8526:20:15","typeDescriptions":{"typeIdentifier":"t_uint64","typeString":"uint64"}},"functionReturnParameters":4744,"id":4749,"nodeType":"Return","src":"8519:27:15"}]},"documentation":{"id":4738,"nodeType":"StructuredDocumentation","src":"8400:30:15","text":"@inheritdoc IAccessManager"},"functionSelector":"530dd456","id":4751,"implemented":true,"kind":"function","modifiers":[],"name":"getRoleAdmin","nameLocation":"8444:12:15","nodeType":"FunctionDefinition","parameters":{"id":4741,"nodeType":"ParameterList","parameters":[{"constant":false,"id":4740,"mutability":"mutable","name":"roleId","nameLocation":"8464:6:15","nodeType":"VariableDeclaration","scope":4751,"src":"8457:13:15","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint64","typeString":"uint64"},"typeName":{"id":4739,"name":"uint64","nodeType":"ElementaryTypeName","src":"8457:6:15","typeDescriptions":{"typeIdentifier":"t_uint64","typeString":"uint64"}},"visibility":"internal"}],"src":"8456:15:15"},"returnParameters":{"id":4744,"nodeType":"ParameterList","parameters":[{"constant":false,"id":4743,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":4751,"src":"8501:6:15","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint64","typeString":"uint64"},"typeName":{"id":4742,"name":"uint64","nodeType":"ElementaryTypeName","src":"8501:6:15","typeDescriptions":{"typeIdentifier":"t_uint64","typeString":"uint64"}},"visibility":"internal"}],"src":"8500:8:15"},"scope":6372,"src":"8435:118:15","stateMutability":"view","virtual":true,"visibility":"public"},{"baseFunctions":[6640],"body":{"id":4764,"nodeType":"Block","src":"8671:47:15","statements":[{"expression":{"expression":{"baseExpression":{"id":4759,"name":"_roles","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4561,"src":"8688:6:15","typeDescriptions":{"typeIdentifier":"t_mapping$_t_uint64_$_t_struct$_Role_$4530_storage_$","typeString":"mapping(uint64 => struct AccessManager.Role storage ref)"}},"id":4761,"indexExpression":{"id":4760,"name":"roleId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4754,"src":"8695:6:15","typeDescriptions":{"typeIdentifier":"t_uint64","typeString":"uint64"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"8688:14:15","typeDescriptions":{"typeIdentifier":"t_struct$_Role_$4530_storage","typeString":"struct AccessManager.Role storage ref"}},"id":4762,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"8703:8:15","memberName":"guardian","nodeType":"MemberAccess","referencedDeclaration":4526,"src":"8688:23:15","typeDescriptions":{"typeIdentifier":"t_uint64","typeString":"uint64"}},"functionReturnParameters":4758,"id":4763,"nodeType":"Return","src":"8681:30:15"}]},"documentation":{"id":4752,"nodeType":"StructuredDocumentation","src":"8559:30:15","text":"@inheritdoc IAccessManager"},"functionSelector":"0b0a93ba","id":4765,"implemented":true,"kind":"function","modifiers":[],"name":"getRoleGuardian","nameLocation":"8603:15:15","nodeType":"FunctionDefinition","parameters":{"id":4755,"nodeType":"ParameterList","parameters":[{"constant":false,"id":4754,"mutability":"mutable","name":"roleId","nameLocation":"8626:6:15","nodeType":"VariableDeclaration","scope":4765,"src":"8619:13:15","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint64","typeString":"uint64"},"typeName":{"id":4753,"name":"uint64","nodeType":"ElementaryTypeName","src":"8619:6:15","typeDescriptions":{"typeIdentifier":"t_uint64","typeString":"uint64"}},"visibility":"internal"}],"src":"8618:15:15"},"returnParameters":{"id":4758,"nodeType":"ParameterList","parameters":[{"constant":false,"id":4757,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":4765,"src":"8663:6:15","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint64","typeString":"uint64"},"typeName":{"id":4756,"name":"uint64","nodeType":"ElementaryTypeName","src":"8663:6:15","typeDescriptions":{"typeIdentifier":"t_uint64","typeString":"uint64"}},"visibility":"internal"}],"src":"8662:8:15"},"scope":6372,"src":"8594:124:15","stateMutability":"view","virtual":true,"visibility":"public"},{"baseFunctions":[6648],"body":{"id":4780,"nodeType":"Block","src":"8838:55:15","statements":[{"expression":{"arguments":[],"expression":{"argumentTypes":[],"expression":{"expression":{"baseExpression":{"id":4773,"name":"_roles","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4561,"src":"8855:6:15","typeDescriptions":{"typeIdentifier":"t_mapping$_t_uint64_$_t_struct$_Role_$4530_storage_$","typeString":"mapping(uint64 => struct AccessManager.Role storage ref)"}},"id":4775,"indexExpression":{"id":4774,"name":"roleId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4768,"src":"8862:6:15","typeDescriptions":{"typeIdentifier":"t_uint64","typeString":"uint64"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"8855:14:15","typeDescriptions":{"typeIdentifier":"t_struct$_Role_$4530_storage","typeString":"struct AccessManager.Role storage ref"}},"id":4776,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"8870:10:15","memberName":"grantDelay","nodeType":"MemberAccess","referencedDeclaration":4529,"src":"8855:25:15","typeDescriptions":{"typeIdentifier":"t_userDefinedValueType$_Delay_$14528","typeString":"Time.Delay"}},"id":4777,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"8881:3:15","memberName":"get","nodeType":"MemberAccess","referencedDeclaration":14619,"src":"8855:29:15","typeDescriptions":{"typeIdentifier":"t_function_internal_view$_t_userDefinedValueType$_Delay_$14528_$returns$_t_uint32_$attached_to$_t_userDefinedValueType$_Delay_$14528_$","typeString":"function (Time.Delay) view returns (uint32)"}},"id":4778,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"8855:31:15","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint32","typeString":"uint32"}},"functionReturnParameters":4772,"id":4779,"nodeType":"Return","src":"8848:38:15"}]},"documentation":{"id":4766,"nodeType":"StructuredDocumentation","src":"8724:30:15","text":"@inheritdoc IAccessManager"},"functionSelector":"12be8727","id":4781,"implemented":true,"kind":"function","modifiers":[],"name":"getRoleGrantDelay","nameLocation":"8768:17:15","nodeType":"FunctionDefinition","parameters":{"id":4769,"nodeType":"ParameterList","parameters":[{"constant":false,"id":4768,"mutability":"mutable","name":"roleId","nameLocation":"8793:6:15","nodeType":"VariableDeclaration","scope":4781,"src":"8786:13:15","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint64","typeString":"uint64"},"typeName":{"id":4767,"name":"uint64","nodeType":"ElementaryTypeName","src":"8786:6:15","typeDescriptions":{"typeIdentifier":"t_uint64","typeString":"uint64"}},"visibility":"internal"}],"src":"8785:15:15"},"returnParameters":{"id":4772,"nodeType":"ParameterList","parameters":[{"constant":false,"id":4771,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":4781,"src":"8830:6:15","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint32","typeString":"uint32"},"typeName":{"id":4770,"name":"uint32","nodeType":"ElementaryTypeName","src":"8830:6:15","typeDescriptions":{"typeIdentifier":"t_uint32","typeString":"uint32"}},"visibility":"internal"}],"src":"8829:8:15"},"scope":6372,"src":"8759:134:15","stateMutability":"view","virtual":true,"visibility":"public"},{"baseFunctions":[6664],"body":{"id":4828,"nodeType":"Block","src":"9107:235:15","statements":[{"assignments":[4799],"declarations":[{"constant":false,"id":4799,"mutability":"mutable","name":"access","nameLocation":"9132:6:15","nodeType":"VariableDeclaration","scope":4828,"src":"9117:21:15","stateVariable":false,"storageLocation":"storage","typeDescriptions":{"typeIdentifier":"t_struct$_Access_$4517_storage_ptr","typeString":"struct AccessManager.Access"},"typeName":{"id":4798,"nodeType":"UserDefinedTypeName","pathNode":{"id":4797,"name":"Access","nameLocations":["9117:6:15"],"nodeType":"IdentifierPath","referencedDeclaration":4517,"src":"9117:6:15"},"referencedDeclaration":4517,"src":"9117:6:15","typeDescriptions":{"typeIdentifier":"t_struct$_Access_$4517_storage_ptr","typeString":"struct AccessManager.Access"}},"visibility":"internal"}],"id":4806,"initialValue":{"baseExpression":{"expression":{"baseExpression":{"id":4800,"name":"_roles","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4561,"src":"9141:6:15","typeDescriptions":{"typeIdentifier":"t_mapping$_t_uint64_$_t_struct$_Role_$4530_storage_$","typeString":"mapping(uint64 => struct AccessManager.Role storage ref)"}},"id":4802,"indexExpression":{"id":4801,"name":"roleId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4784,"src":"9148:6:15","typeDescriptions":{"typeIdentifier":"t_uint64","typeString":"uint64"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"9141:14:15","typeDescriptions":{"typeIdentifier":"t_struct$_Role_$4530_storage","typeString":"struct AccessManager.Role storage ref"}},"id":4803,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"9156:7:15","memberName":"members","nodeType":"MemberAccess","referencedDeclaration":4522,"src":"9141:22:15","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_struct$_Access_$4517_storage_$","typeString":"mapping(address => struct AccessManager.Access storage ref)"}},"id":4805,"indexExpression":{"id":4804,"name":"account","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4786,"src":"9164:7:15","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"9141:31:15","typeDescriptions":{"typeIdentifier":"t_struct$_Access_$4517_storage","typeString":"struct AccessManager.Access storage ref"}},"nodeType":"VariableDeclarationStatement","src":"9117:55:15"},{"expression":{"id":4810,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":4807,"name":"since","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4789,"src":"9183:5:15","typeDescriptions":{"typeIdentifier":"t_uint48","typeString":"uint48"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"expression":{"id":4808,"name":"access","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4799,"src":"9191:6:15","typeDescriptions":{"typeIdentifier":"t_struct$_Access_$4517_storage_ptr","typeString":"struct AccessManager.Access storage pointer"}},"id":4809,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"9198:5:15","memberName":"since","nodeType":"MemberAccess","referencedDeclaration":4513,"src":"9191:12:15","typeDescriptions":{"typeIdentifier":"t_uint48","typeString":"uint48"}},"src":"9183:20:15","typeDescriptions":{"typeIdentifier":"t_uint48","typeString":"uint48"}},"id":4811,"nodeType":"ExpressionStatement","src":"9183:20:15"},{"expression":{"id":4820,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"components":[{"id":4812,"name":"currentDelay","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4791,"src":"9214:12:15","typeDescriptions":{"typeIdentifier":"t_uint32","typeString":"uint32"}},{"id":4813,"name":"pendingDelay","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4793,"src":"9228:12:15","typeDescriptions":{"typeIdentifier":"t_uint32","typeString":"uint32"}},{"id":4814,"name":"effect","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4795,"src":"9242:6:15","typeDescriptions":{"typeIdentifier":"t_uint48","typeString":"uint48"}}],"id":4815,"isConstant":false,"isInlineArray":false,"isLValue":true,"isPure":false,"lValueRequested":true,"nodeType":"TupleExpression","src":"9213:36:15","typeDescriptions":{"typeIdentifier":"t_tuple$_t_uint32_$_t_uint32_$_t_uint48_$","typeString":"tuple(uint32,uint32,uint48)"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"arguments":[],"expression":{"argumentTypes":[],"expression":{"expression":{"id":4816,"name":"access","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4799,"src":"9252:6:15","typeDescriptions":{"typeIdentifier":"t_struct$_Access_$4517_storage_ptr","typeString":"struct AccessManager.Access storage pointer"}},"id":4817,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"9259:5:15","memberName":"delay","nodeType":"MemberAccess","referencedDeclaration":4516,"src":"9252:12:15","typeDescriptions":{"typeIdentifier":"t_userDefinedValueType$_Delay_$14528","typeString":"Time.Delay"}},"id":4818,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"9265:7:15","memberName":"getFull","nodeType":"MemberAccess","referencedDeclaration":14601,"src":"9252:20:15","typeDescriptions":{"typeIdentifier":"t_function_internal_view$_t_userDefinedValueType$_Delay_$14528_$returns$_t_uint32_$_t_uint32_$_t_uint48_$attached_to$_t_userDefinedValueType$_Delay_$14528_$","typeString":"function (Time.Delay) view returns (uint32,uint32,uint48)"}},"id":4819,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"9252:22:15","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$_t_uint32_$_t_uint32_$_t_uint48_$","typeString":"tuple(uint32,uint32,uint48)"}},"src":"9213:61:15","typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":4821,"nodeType":"ExpressionStatement","src":"9213:61:15"},{"expression":{"components":[{"id":4822,"name":"since","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4789,"src":"9293:5:15","typeDescriptions":{"typeIdentifier":"t_uint48","typeString":"uint48"}},{"id":4823,"name":"currentDelay","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4791,"src":"9300:12:15","typeDescriptions":{"typeIdentifier":"t_uint32","typeString":"uint32"}},{"id":4824,"name":"pendingDelay","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4793,"src":"9314:12:15","typeDescriptions":{"typeIdentifier":"t_uint32","typeString":"uint32"}},{"id":4825,"name":"effect","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4795,"src":"9328:6:15","typeDescriptions":{"typeIdentifier":"t_uint48","typeString":"uint48"}}],"id":4826,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"9292:43:15","typeDescriptions":{"typeIdentifier":"t_tuple$_t_uint48_$_t_uint32_$_t_uint32_$_t_uint48_$","typeString":"tuple(uint48,uint32,uint32,uint48)"}},"functionReturnParameters":4796,"id":4827,"nodeType":"Return","src":"9285:50:15"}]},"documentation":{"id":4782,"nodeType":"StructuredDocumentation","src":"8899:30:15","text":"@inheritdoc IAccessManager"},"functionSelector":"3078f114","id":4829,"implemented":true,"kind":"function","modifiers":[],"name":"getAccess","nameLocation":"8943:9:15","nodeType":"FunctionDefinition","parameters":{"id":4787,"nodeType":"ParameterList","parameters":[{"constant":false,"id":4784,"mutability":"mutable","name":"roleId","nameLocation":"8969:6:15","nodeType":"VariableDeclaration","scope":4829,"src":"8962:13:15","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint64","typeString":"uint64"},"typeName":{"id":4783,"name":"uint64","nodeType":"ElementaryTypeName","src":"8962:6:15","typeDescriptions":{"typeIdentifier":"t_uint64","typeString":"uint64"}},"visibility":"internal"},{"constant":false,"id":4786,"mutability":"mutable","name":"account","nameLocation":"8993:7:15","nodeType":"VariableDeclaration","scope":4829,"src":"8985:15:15","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":4785,"name":"address","nodeType":"ElementaryTypeName","src":"8985:7:15","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"8952:54:15"},"returnParameters":{"id":4796,"nodeType":"ParameterList","parameters":[{"constant":false,"id":4789,"mutability":"mutable","name":"since","nameLocation":"9043:5:15","nodeType":"VariableDeclaration","scope":4829,"src":"9036:12:15","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint48","typeString":"uint48"},"typeName":{"id":4788,"name":"uint48","nodeType":"ElementaryTypeName","src":"9036:6:15","typeDescriptions":{"typeIdentifier":"t_uint48","typeString":"uint48"}},"visibility":"internal"},{"constant":false,"id":4791,"mutability":"mutable","name":"currentDelay","nameLocation":"9057:12:15","nodeType":"VariableDeclaration","scope":4829,"src":"9050:19:15","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint32","typeString":"uint32"},"typeName":{"id":4790,"name":"uint32","nodeType":"ElementaryTypeName","src":"9050:6:15","typeDescriptions":{"typeIdentifier":"t_uint32","typeString":"uint32"}},"visibility":"internal"},{"constant":false,"id":4793,"mutability":"mutable","name":"pendingDelay","nameLocation":"9078:12:15","nodeType":"VariableDeclaration","scope":4829,"src":"9071:19:15","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint32","typeString":"uint32"},"typeName":{"id":4792,"name":"uint32","nodeType":"ElementaryTypeName","src":"9071:6:15","typeDescriptions":{"typeIdentifier":"t_uint32","typeString":"uint32"}},"visibility":"internal"},{"constant":false,"id":4795,"mutability":"mutable","name":"effect","nameLocation":"9099:6:15","nodeType":"VariableDeclaration","scope":4829,"src":"9092:13:15","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint48","typeString":"uint48"},"typeName":{"id":4794,"name":"uint48","nodeType":"ElementaryTypeName","src":"9092:6:15","typeDescriptions":{"typeIdentifier":"t_uint48","typeString":"uint48"}},"visibility":"internal"}],"src":"9035:71:15"},"scope":6372,"src":"8934:408:15","stateMutability":"view","virtual":true,"visibility":"public"},{"baseFunctions":[6676],"body":{"id":4872,"nodeType":"Block","src":"9521:280:15","statements":[{"condition":{"commonType":{"typeIdentifier":"t_uint64","typeString":"uint64"},"id":4843,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":4841,"name":"roleId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4832,"src":"9535:6:15","typeDescriptions":{"typeIdentifier":"t_uint64","typeString":"uint64"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"id":4842,"name":"PUBLIC_ROLE","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4551,"src":"9545:11:15","typeDescriptions":{"typeIdentifier":"t_uint64","typeString":"uint64"}},"src":"9535:21:15","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"falseBody":{"id":4870,"nodeType":"Block","src":"9605:190:15","statements":[{"assignments":[4850,4852,null,null],"declarations":[{"constant":false,"id":4850,"mutability":"mutable","name":"hasRoleSince","nameLocation":"9627:12:15","nodeType":"VariableDeclaration","scope":4870,"src":"9620:19:15","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint48","typeString":"uint48"},"typeName":{"id":4849,"name":"uint48","nodeType":"ElementaryTypeName","src":"9620:6:15","typeDescriptions":{"typeIdentifier":"t_uint48","typeString":"uint48"}},"visibility":"internal"},{"constant":false,"id":4852,"mutability":"mutable","name":"currentDelay","nameLocation":"9648:12:15","nodeType":"VariableDeclaration","scope":4870,"src":"9641:19:15","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint32","typeString":"uint32"},"typeName":{"id":4851,"name":"uint32","nodeType":"ElementaryTypeName","src":"9641:6:15","typeDescriptions":{"typeIdentifier":"t_uint32","typeString":"uint32"}},"visibility":"internal"},null,null],"id":4857,"initialValue":{"arguments":[{"id":4854,"name":"roleId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4832,"src":"9678:6:15","typeDescriptions":{"typeIdentifier":"t_uint64","typeString":"uint64"}},{"id":4855,"name":"account","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4834,"src":"9686:7:15","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint64","typeString":"uint64"},{"typeIdentifier":"t_address","typeString":"address"}],"id":4853,"name":"getAccess","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4829,"src":"9668:9:15","typeDescriptions":{"typeIdentifier":"t_function_internal_view$_t_uint64_$_t_address_$returns$_t_uint48_$_t_uint32_$_t_uint32_$_t_uint48_$","typeString":"function (uint64,address) view returns (uint48,uint32,uint32,uint48)"}},"id":4856,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"9668:26:15","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$_t_uint48_$_t_uint32_$_t_uint32_$_t_uint48_$","typeString":"tuple(uint48,uint32,uint32,uint48)"}},"nodeType":"VariableDeclarationStatement","src":"9619:75:15"},{"expression":{"components":[{"commonType":{"typeIdentifier":"t_bool","typeString":"bool"},"id":4866,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"commonType":{"typeIdentifier":"t_uint48","typeString":"uint48"},"id":4860,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":4858,"name":"hasRoleSince","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4850,"src":"9716:12:15","typeDescriptions":{"typeIdentifier":"t_uint48","typeString":"uint48"}},"nodeType":"BinaryOperation","operator":"!=","rightExpression":{"hexValue":"30","id":4859,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"9732:1:15","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"9716:17:15","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"nodeType":"BinaryOperation","operator":"&&","rightExpression":{"commonType":{"typeIdentifier":"t_uint48","typeString":"uint48"},"id":4865,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":4861,"name":"hasRoleSince","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4850,"src":"9737:12:15","typeDescriptions":{"typeIdentifier":"t_uint48","typeString":"uint48"}},"nodeType":"BinaryOperation","operator":"<=","rightExpression":{"arguments":[],"expression":{"argumentTypes":[],"expression":{"id":4862,"name":"Time","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":14765,"src":"9753:4:15","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_Time_$14765_$","typeString":"type(library Time)"}},"id":4863,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"9758:9:15","memberName":"timestamp","nodeType":"MemberAccess","referencedDeclaration":14513,"src":"9753:14:15","typeDescriptions":{"typeIdentifier":"t_function_internal_view$__$returns$_t_uint48_$","typeString":"function () view returns (uint48)"}},"id":4864,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"9753:16:15","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint48","typeString":"uint48"}},"src":"9737:32:15","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"src":"9716:53:15","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},{"id":4867,"name":"currentDelay","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4852,"src":"9771:12:15","typeDescriptions":{"typeIdentifier":"t_uint32","typeString":"uint32"}}],"id":4868,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"9715:69:15","typeDescriptions":{"typeIdentifier":"t_tuple$_t_bool_$_t_uint32_$","typeString":"tuple(bool,uint32)"}},"functionReturnParameters":4840,"id":4869,"nodeType":"Return","src":"9708:76:15"}]},"id":4871,"nodeType":"IfStatement","src":"9531:264:15","trueBody":{"id":4848,"nodeType":"Block","src":"9558:41:15","statements":[{"expression":{"components":[{"hexValue":"74727565","id":4844,"isConstant":false,"isLValue":false,"isPure":true,"kind":"bool","lValueRequested":false,"nodeType":"Literal","src":"9580:4:15","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"value":"true"},{"hexValue":"30","id":4845,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"9586:1:15","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"}],"id":4846,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"TupleExpression","src":"9579:9:15","typeDescriptions":{"typeIdentifier":"t_tuple$_t_bool_$_t_rational_0_by_1_$","typeString":"tuple(bool,int_const 0)"}},"functionReturnParameters":4840,"id":4847,"nodeType":"Return","src":"9572:16:15"}]}}]},"documentation":{"id":4830,"nodeType":"StructuredDocumentation","src":"9348:30:15","text":"@inheritdoc IAccessManager"},"functionSelector":"d1f856ee","id":4873,"implemented":true,"kind":"function","modifiers":[],"name":"hasRole","nameLocation":"9392:7:15","nodeType":"FunctionDefinition","parameters":{"id":4835,"nodeType":"ParameterList","parameters":[{"constant":false,"id":4832,"mutability":"mutable","name":"roleId","nameLocation":"9416:6:15","nodeType":"VariableDeclaration","scope":4873,"src":"9409:13:15","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint64","typeString":"uint64"},"typeName":{"id":4831,"name":"uint64","nodeType":"ElementaryTypeName","src":"9409:6:15","typeDescriptions":{"typeIdentifier":"t_uint64","typeString":"uint64"}},"visibility":"internal"},{"constant":false,"id":4834,"mutability":"mutable","name":"account","nameLocation":"9440:7:15","nodeType":"VariableDeclaration","scope":4873,"src":"9432:15:15","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":4833,"name":"address","nodeType":"ElementaryTypeName","src":"9432:7:15","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"9399:54:15"},"returnParameters":{"id":4840,"nodeType":"ParameterList","parameters":[{"constant":false,"id":4837,"mutability":"mutable","name":"isMember","nameLocation":"9488:8:15","nodeType":"VariableDeclaration","scope":4873,"src":"9483:13:15","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":4836,"name":"bool","nodeType":"ElementaryTypeName","src":"9483:4:15","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"},{"constant":false,"id":4839,"mutability":"mutable","name":"executionDelay","nameLocation":"9505:14:15","nodeType":"VariableDeclaration","scope":4873,"src":"9498:21:15","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint32","typeString":"uint32"},"typeName":{"id":4838,"name":"uint32","nodeType":"ElementaryTypeName","src":"9498:6:15","typeDescriptions":{"typeIdentifier":"t_uint32","typeString":"uint32"}},"visibility":"internal"}],"src":"9482:38:15"},"scope":6372,"src":"9383:418:15","stateMutability":"view","virtual":true,"visibility":"public"},{"baseFunctions":[6684],"body":{"id":4901,"nodeType":"Block","src":"10048:169:15","statements":[{"condition":{"commonType":{"typeIdentifier":"t_bool","typeString":"bool"},"id":4889,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"commonType":{"typeIdentifier":"t_uint64","typeString":"uint64"},"id":4885,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":4883,"name":"roleId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4876,"src":"10062:6:15","typeDescriptions":{"typeIdentifier":"t_uint64","typeString":"uint64"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"id":4884,"name":"ADMIN_ROLE","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4543,"src":"10072:10:15","typeDescriptions":{"typeIdentifier":"t_uint64","typeString":"uint64"}},"src":"10062:20:15","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"nodeType":"BinaryOperation","operator":"||","rightExpression":{"commonType":{"typeIdentifier":"t_uint64","typeString":"uint64"},"id":4888,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":4886,"name":"roleId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4876,"src":"10086:6:15","typeDescriptions":{"typeIdentifier":"t_uint64","typeString":"uint64"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"id":4887,"name":"PUBLIC_ROLE","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4551,"src":"10096:11:15","typeDescriptions":{"typeIdentifier":"t_uint64","typeString":"uint64"}},"src":"10086:21:15","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"src":"10062:45:15","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":4895,"nodeType":"IfStatement","src":"10058:114:15","trueBody":{"id":4894,"nodeType":"Block","src":"10109:63:15","statements":[{"errorCall":{"arguments":[{"id":4891,"name":"roleId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4876,"src":"10154:6:15","typeDescriptions":{"typeIdentifier":"t_uint64","typeString":"uint64"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint64","typeString":"uint64"}],"id":4890,"name":"AccessManagerLockedRole","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6538,"src":"10130:23:15","typeDescriptions":{"typeIdentifier":"t_function_error_pure$_t_uint64_$returns$_t_error_$","typeString":"function (uint64) pure returns (error)"}},"id":4892,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"10130:31:15","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_error","typeString":"error"}},"id":4893,"nodeType":"RevertStatement","src":"10123:38:15"}]}},{"eventCall":{"arguments":[{"id":4897,"name":"roleId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4876,"src":"10196:6:15","typeDescriptions":{"typeIdentifier":"t_uint64","typeString":"uint64"}},{"id":4898,"name":"label","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4878,"src":"10204:5:15","typeDescriptions":{"typeIdentifier":"t_string_calldata_ptr","typeString":"string calldata"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint64","typeString":"uint64"},{"typeIdentifier":"t_string_calldata_ptr","typeString":"string calldata"}],"id":4896,"name":"RoleLabel","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6450,"src":"10186:9:15","typeDescriptions":{"typeIdentifier":"t_function_event_nonpayable$_t_uint64_$_t_string_memory_ptr_$returns$__$","typeString":"function (uint64,string memory)"}},"id":4899,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"10186:24:15","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":4900,"nodeType":"EmitStatement","src":"10181:29:15"}]},"documentation":{"id":4874,"nodeType":"StructuredDocumentation","src":"9926:30:15","text":"@inheritdoc IAccessManager"},"functionSelector":"853551b8","id":4902,"implemented":true,"kind":"function","modifiers":[{"id":4881,"kind":"modifierInvocation","modifierName":{"id":4880,"name":"onlyAuthorized","nameLocations":["10033:14:15"],"nodeType":"IdentifierPath","referencedDeclaration":4576,"src":"10033:14:15"},"nodeType":"ModifierInvocation","src":"10033:14:15"}],"name":"labelRole","nameLocation":"9970:9:15","nodeType":"FunctionDefinition","parameters":{"id":4879,"nodeType":"ParameterList","parameters":[{"constant":false,"id":4876,"mutability":"mutable","name":"roleId","nameLocation":"9987:6:15","nodeType":"VariableDeclaration","scope":4902,"src":"9980:13:15","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint64","typeString":"uint64"},"typeName":{"id":4875,"name":"uint64","nodeType":"ElementaryTypeName","src":"9980:6:15","typeDescriptions":{"typeIdentifier":"t_uint64","typeString":"uint64"}},"visibility":"internal"},{"constant":false,"id":4878,"mutability":"mutable","name":"label","nameLocation":"10011:5:15","nodeType":"VariableDeclaration","scope":4902,"src":"9995:21:15","stateVariable":false,"storageLocation":"calldata","typeDescriptions":{"typeIdentifier":"t_string_calldata_ptr","typeString":"string"},"typeName":{"id":4877,"name":"string","nodeType":"ElementaryTypeName","src":"9995:6:15","typeDescriptions":{"typeIdentifier":"t_string_storage_ptr","typeString":"string"}},"visibility":"internal"}],"src":"9979:38:15"},"returnParameters":{"id":4882,"nodeType":"ParameterList","parameters":[],"src":"10048:0:15"},"scope":6372,"src":"9961:256:15","stateMutability":"nonpayable","virtual":true,"visibility":"public"},{"baseFunctions":[6694],"body":{"id":4923,"nodeType":"Block","src":"10362:87:15","statements":[{"expression":{"arguments":[{"id":4915,"name":"roleId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4905,"src":"10383:6:15","typeDescriptions":{"typeIdentifier":"t_uint64","typeString":"uint64"}},{"id":4916,"name":"account","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4907,"src":"10391:7:15","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"arguments":[{"id":4918,"name":"roleId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4905,"src":"10418:6:15","typeDescriptions":{"typeIdentifier":"t_uint64","typeString":"uint64"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint64","typeString":"uint64"}],"id":4917,"name":"getRoleGrantDelay","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4781,"src":"10400:17:15","typeDescriptions":{"typeIdentifier":"t_function_internal_view$_t_uint64_$returns$_t_uint32_$","typeString":"function (uint64) view returns (uint32)"}},"id":4919,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"10400:25:15","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint32","typeString":"uint32"}},{"id":4920,"name":"executionDelay","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4909,"src":"10427:14:15","typeDescriptions":{"typeIdentifier":"t_uint32","typeString":"uint32"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint64","typeString":"uint64"},{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint32","typeString":"uint32"},{"typeIdentifier":"t_uint32","typeString":"uint32"}],"id":4914,"name":"_grantRole","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5108,"src":"10372:10:15","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_uint64_$_t_address_$_t_uint32_$_t_uint32_$returns$_t_bool_$","typeString":"function (uint64,address,uint32,uint32) returns (bool)"}},"id":4921,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"10372:70:15","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":4922,"nodeType":"ExpressionStatement","src":"10372:70:15"}]},"documentation":{"id":4903,"nodeType":"StructuredDocumentation","src":"10223:30:15","text":"@inheritdoc IAccessManager"},"functionSelector":"25c471a0","id":4924,"implemented":true,"kind":"function","modifiers":[{"id":4912,"kind":"modifierInvocation","modifierName":{"id":4911,"name":"onlyAuthorized","nameLocations":["10347:14:15"],"nodeType":"IdentifierPath","referencedDeclaration":4576,"src":"10347:14:15"},"nodeType":"ModifierInvocation","src":"10347:14:15"}],"name":"grantRole","nameLocation":"10267:9:15","nodeType":"FunctionDefinition","parameters":{"id":4910,"nodeType":"ParameterList","parameters":[{"constant":false,"id":4905,"mutability":"mutable","name":"roleId","nameLocation":"10284:6:15","nodeType":"VariableDeclaration","scope":4924,"src":"10277:13:15","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint64","typeString":"uint64"},"typeName":{"id":4904,"name":"uint64","nodeType":"ElementaryTypeName","src":"10277:6:15","typeDescriptions":{"typeIdentifier":"t_uint64","typeString":"uint64"}},"visibility":"internal"},{"constant":false,"id":4907,"mutability":"mutable","name":"account","nameLocation":"10300:7:15","nodeType":"VariableDeclaration","scope":4924,"src":"10292:15:15","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":4906,"name":"address","nodeType":"ElementaryTypeName","src":"10292:7:15","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":4909,"mutability":"mutable","name":"executionDelay","nameLocation":"10316:14:15","nodeType":"VariableDeclaration","scope":4924,"src":"10309:21:15","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint32","typeString":"uint32"},"typeName":{"id":4908,"name":"uint32","nodeType":"ElementaryTypeName","src":"10309:6:15","typeDescriptions":{"typeIdentifier":"t_uint32","typeString":"uint32"}},"visibility":"internal"}],"src":"10276:55:15"},"returnParameters":{"id":4913,"nodeType":"ParameterList","parameters":[],"src":"10362:0:15"},"scope":6372,"src":"10258:191:15","stateMutability":"nonpayable","virtual":true,"visibility":"public"},{"baseFunctions":[6702],"body":{"id":4939,"nodeType":"Block","src":"10572:45:15","statements":[{"expression":{"arguments":[{"id":4935,"name":"roleId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4927,"src":"10594:6:15","typeDescriptions":{"typeIdentifier":"t_uint64","typeString":"uint64"}},{"id":4936,"name":"account","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4929,"src":"10602:7:15","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint64","typeString":"uint64"},{"typeIdentifier":"t_address","typeString":"address"}],"id":4934,"name":"_revokeRole","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5156,"src":"10582:11:15","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_uint64_$_t_address_$returns$_t_bool_$","typeString":"function (uint64,address) returns (bool)"}},"id":4937,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"10582:28:15","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":4938,"nodeType":"ExpressionStatement","src":"10582:28:15"}]},"documentation":{"id":4925,"nodeType":"StructuredDocumentation","src":"10455:30:15","text":"@inheritdoc IAccessManager"},"functionSelector":"b7d2b162","id":4940,"implemented":true,"kind":"function","modifiers":[{"id":4932,"kind":"modifierInvocation","modifierName":{"id":4931,"name":"onlyAuthorized","nameLocations":["10557:14:15"],"nodeType":"IdentifierPath","referencedDeclaration":4576,"src":"10557:14:15"},"nodeType":"ModifierInvocation","src":"10557:14:15"}],"name":"revokeRole","nameLocation":"10499:10:15","nodeType":"FunctionDefinition","parameters":{"id":4930,"nodeType":"ParameterList","parameters":[{"constant":false,"id":4927,"mutability":"mutable","name":"roleId","nameLocation":"10517:6:15","nodeType":"VariableDeclaration","scope":4940,"src":"10510:13:15","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint64","typeString":"uint64"},"typeName":{"id":4926,"name":"uint64","nodeType":"ElementaryTypeName","src":"10510:6:15","typeDescriptions":{"typeIdentifier":"t_uint64","typeString":"uint64"}},"visibility":"internal"},{"constant":false,"id":4929,"mutability":"mutable","name":"account","nameLocation":"10533:7:15","nodeType":"VariableDeclaration","scope":4940,"src":"10525:15:15","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":4928,"name":"address","nodeType":"ElementaryTypeName","src":"10525:7:15","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"10509:32:15"},"returnParameters":{"id":4933,"nodeType":"ParameterList","parameters":[],"src":"10572:0:15"},"scope":6372,"src":"10490:127:15","stateMutability":"nonpayable","virtual":true,"visibility":"public"},{"baseFunctions":[6710],"body":{"id":4962,"nodeType":"Block","src":"10738:167:15","statements":[{"condition":{"commonType":{"typeIdentifier":"t_address","typeString":"address"},"id":4951,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":4948,"name":"callerConfirmation","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4945,"src":"10752:18:15","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"BinaryOperation","operator":"!=","rightExpression":{"arguments":[],"expression":{"argumentTypes":[],"id":4949,"name":"_msgSender","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10268,"src":"10774:10:15","typeDescriptions":{"typeIdentifier":"t_function_internal_view$__$returns$_t_address_$","typeString":"function () view returns (address)"}},"id":4950,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"10774:12:15","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"src":"10752:34:15","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":4956,"nodeType":"IfStatement","src":"10748:102:15","trueBody":{"id":4955,"nodeType":"Block","src":"10788:62:15","statements":[{"errorCall":{"arguments":[],"expression":{"argumentTypes":[],"id":4952,"name":"AccessManagerBadConfirmation","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6540,"src":"10809:28:15","typeDescriptions":{"typeIdentifier":"t_function_error_pure$__$returns$_t_error_$","typeString":"function () pure returns (error)"}},"id":4953,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"10809:30:15","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_error","typeString":"error"}},"id":4954,"nodeType":"RevertStatement","src":"10802:37:15"}]}},{"expression":{"arguments":[{"id":4958,"name":"roleId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4943,"src":"10871:6:15","typeDescriptions":{"typeIdentifier":"t_uint64","typeString":"uint64"}},{"id":4959,"name":"callerConfirmation","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4945,"src":"10879:18:15","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint64","typeString":"uint64"},{"typeIdentifier":"t_address","typeString":"address"}],"id":4957,"name":"_revokeRole","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5156,"src":"10859:11:15","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_uint64_$_t_address_$returns$_t_bool_$","typeString":"function (uint64,address) returns (bool)"}},"id":4960,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"10859:39:15","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":4961,"nodeType":"ExpressionStatement","src":"10859:39:15"}]},"documentation":{"id":4941,"nodeType":"StructuredDocumentation","src":"10623:30:15","text":"@inheritdoc IAccessManager"},"functionSelector":"fe0776f5","id":4963,"implemented":true,"kind":"function","modifiers":[],"name":"renounceRole","nameLocation":"10667:12:15","nodeType":"FunctionDefinition","parameters":{"id":4946,"nodeType":"ParameterList","parameters":[{"constant":false,"id":4943,"mutability":"mutable","name":"roleId","nameLocation":"10687:6:15","nodeType":"VariableDeclaration","scope":4963,"src":"10680:13:15","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint64","typeString":"uint64"},"typeName":{"id":4942,"name":"uint64","nodeType":"ElementaryTypeName","src":"10680:6:15","typeDescriptions":{"typeIdentifier":"t_uint64","typeString":"uint64"}},"visibility":"internal"},{"constant":false,"id":4945,"mutability":"mutable","name":"callerConfirmation","nameLocation":"10703:18:15","nodeType":"VariableDeclaration","scope":4963,"src":"10695:26:15","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":4944,"name":"address","nodeType":"ElementaryTypeName","src":"10695:7:15","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"10679:43:15"},"returnParameters":{"id":4947,"nodeType":"ParameterList","parameters":[],"src":"10738:0:15"},"scope":6372,"src":"10658:247:15","stateMutability":"nonpayable","virtual":true,"visibility":"public"},{"baseFunctions":[6718],"body":{"id":4978,"nodeType":"Block","src":"11027:45:15","statements":[{"expression":{"arguments":[{"id":4974,"name":"roleId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4966,"src":"11051:6:15","typeDescriptions":{"typeIdentifier":"t_uint64","typeString":"uint64"}},{"id":4975,"name":"admin","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4968,"src":"11059:5:15","typeDescriptions":{"typeIdentifier":"t_uint64","typeString":"uint64"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint64","typeString":"uint64"},{"typeIdentifier":"t_uint64","typeString":"uint64"}],"id":4973,"name":"_setRoleAdmin","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5190,"src":"11037:13:15","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_uint64_$_t_uint64_$returns$__$","typeString":"function (uint64,uint64)"}},"id":4976,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"11037:28:15","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":4977,"nodeType":"ExpressionStatement","src":"11037:28:15"}]},"documentation":{"id":4964,"nodeType":"StructuredDocumentation","src":"10911:30:15","text":"@inheritdoc IAccessManager"},"functionSelector":"30cae187","id":4979,"implemented":true,"kind":"function","modifiers":[{"id":4971,"kind":"modifierInvocation","modifierName":{"id":4970,"name":"onlyAuthorized","nameLocations":["11012:14:15"],"nodeType":"IdentifierPath","referencedDeclaration":4576,"src":"11012:14:15"},"nodeType":"ModifierInvocation","src":"11012:14:15"}],"name":"setRoleAdmin","nameLocation":"10955:12:15","nodeType":"FunctionDefinition","parameters":{"id":4969,"nodeType":"ParameterList","parameters":[{"constant":false,"id":4966,"mutability":"mutable","name":"roleId","nameLocation":"10975:6:15","nodeType":"VariableDeclaration","scope":4979,"src":"10968:13:15","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint64","typeString":"uint64"},"typeName":{"id":4965,"name":"uint64","nodeType":"ElementaryTypeName","src":"10968:6:15","typeDescriptions":{"typeIdentifier":"t_uint64","typeString":"uint64"}},"visibility":"internal"},{"constant":false,"id":4968,"mutability":"mutable","name":"admin","nameLocation":"10990:5:15","nodeType":"VariableDeclaration","scope":4979,"src":"10983:12:15","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint64","typeString":"uint64"},"typeName":{"id":4967,"name":"uint64","nodeType":"ElementaryTypeName","src":"10983:6:15","typeDescriptions":{"typeIdentifier":"t_uint64","typeString":"uint64"}},"visibility":"internal"}],"src":"10967:29:15"},"returnParameters":{"id":4972,"nodeType":"ParameterList","parameters":[],"src":"11027:0:15"},"scope":6372,"src":"10946:126:15","stateMutability":"nonpayable","virtual":true,"visibility":"public"},{"baseFunctions":[6726],"body":{"id":4994,"nodeType":"Block","src":"11200:51:15","statements":[{"expression":{"arguments":[{"id":4990,"name":"roleId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4982,"src":"11227:6:15","typeDescriptions":{"typeIdentifier":"t_uint64","typeString":"uint64"}},{"id":4991,"name":"guardian","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4984,"src":"11235:8:15","typeDescriptions":{"typeIdentifier":"t_uint64","typeString":"uint64"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint64","typeString":"uint64"},{"typeIdentifier":"t_uint64","typeString":"uint64"}],"id":4989,"name":"_setRoleGuardian","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5224,"src":"11210:16:15","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_uint64_$_t_uint64_$returns$__$","typeString":"function (uint64,uint64)"}},"id":4992,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"11210:34:15","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":4993,"nodeType":"ExpressionStatement","src":"11210:34:15"}]},"documentation":{"id":4980,"nodeType":"StructuredDocumentation","src":"11078:30:15","text":"@inheritdoc IAccessManager"},"functionSelector":"52962952","id":4995,"implemented":true,"kind":"function","modifiers":[{"id":4987,"kind":"modifierInvocation","modifierName":{"id":4986,"name":"onlyAuthorized","nameLocations":["11185:14:15"],"nodeType":"IdentifierPath","referencedDeclaration":4576,"src":"11185:14:15"},"nodeType":"ModifierInvocation","src":"11185:14:15"}],"name":"setRoleGuardian","nameLocation":"11122:15:15","nodeType":"FunctionDefinition","parameters":{"id":4985,"nodeType":"ParameterList","parameters":[{"constant":false,"id":4982,"mutability":"mutable","name":"roleId","nameLocation":"11145:6:15","nodeType":"VariableDeclaration","scope":4995,"src":"11138:13:15","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint64","typeString":"uint64"},"typeName":{"id":4981,"name":"uint64","nodeType":"ElementaryTypeName","src":"11138:6:15","typeDescriptions":{"typeIdentifier":"t_uint64","typeString":"uint64"}},"visibility":"internal"},{"constant":false,"id":4984,"mutability":"mutable","name":"guardian","nameLocation":"11160:8:15","nodeType":"VariableDeclaration","scope":4995,"src":"11153:15:15","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint64","typeString":"uint64"},"typeName":{"id":4983,"name":"uint64","nodeType":"ElementaryTypeName","src":"11153:6:15","typeDescriptions":{"typeIdentifier":"t_uint64","typeString":"uint64"}},"visibility":"internal"}],"src":"11137:32:15"},"returnParameters":{"id":4988,"nodeType":"ParameterList","parameters":[],"src":"11200:0:15"},"scope":6372,"src":"11113:138:15","stateMutability":"nonpayable","virtual":true,"visibility":"public"},{"baseFunctions":[6734],"body":{"id":5010,"nodeType":"Block","src":"11377:49:15","statements":[{"expression":{"arguments":[{"id":5006,"name":"roleId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4998,"src":"11402:6:15","typeDescriptions":{"typeIdentifier":"t_uint64","typeString":"uint64"}},{"id":5007,"name":"newDelay","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5000,"src":"11410:8:15","typeDescriptions":{"typeIdentifier":"t_uint32","typeString":"uint32"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint64","typeString":"uint64"},{"typeIdentifier":"t_uint32","typeString":"uint32"}],"id":5005,"name":"_setGrantDelay","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5268,"src":"11387:14:15","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_uint64_$_t_uint32_$returns$__$","typeString":"function (uint64,uint32)"}},"id":5008,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"11387:32:15","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":5009,"nodeType":"ExpressionStatement","src":"11387:32:15"}]},"documentation":{"id":4996,"nodeType":"StructuredDocumentation","src":"11257:30:15","text":"@inheritdoc IAccessManager"},"functionSelector":"a64d95ce","id":5011,"implemented":true,"kind":"function","modifiers":[{"id":5003,"kind":"modifierInvocation","modifierName":{"id":5002,"name":"onlyAuthorized","nameLocations":["11362:14:15"],"nodeType":"IdentifierPath","referencedDeclaration":4576,"src":"11362:14:15"},"nodeType":"ModifierInvocation","src":"11362:14:15"}],"name":"setGrantDelay","nameLocation":"11301:13:15","nodeType":"FunctionDefinition","parameters":{"id":5001,"nodeType":"ParameterList","parameters":[{"constant":false,"id":4998,"mutability":"mutable","name":"roleId","nameLocation":"11322:6:15","nodeType":"VariableDeclaration","scope":5011,"src":"11315:13:15","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint64","typeString":"uint64"},"typeName":{"id":4997,"name":"uint64","nodeType":"ElementaryTypeName","src":"11315:6:15","typeDescriptions":{"typeIdentifier":"t_uint64","typeString":"uint64"}},"visibility":"internal"},{"constant":false,"id":5000,"mutability":"mutable","name":"newDelay","nameLocation":"11337:8:15","nodeType":"VariableDeclaration","scope":5011,"src":"11330:15:15","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint32","typeString":"uint32"},"typeName":{"id":4999,"name":"uint32","nodeType":"ElementaryTypeName","src":"11330:6:15","typeDescriptions":{"typeIdentifier":"t_uint32","typeString":"uint32"}},"visibility":"internal"}],"src":"11314:32:15"},"returnParameters":{"id":5004,"nodeType":"ParameterList","parameters":[],"src":"11377:0:15"},"scope":6372,"src":"11292:134:15","stateMutability":"nonpayable","virtual":true,"visibility":"public"},{"body":{"id":5107,"nodeType":"Block","src":"11767:897:15","statements":[{"condition":{"commonType":{"typeIdentifier":"t_uint64","typeString":"uint64"},"id":5027,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":5025,"name":"roleId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5014,"src":"11781:6:15","typeDescriptions":{"typeIdentifier":"t_uint64","typeString":"uint64"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"id":5026,"name":"PUBLIC_ROLE","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4551,"src":"11791:11:15","typeDescriptions":{"typeIdentifier":"t_uint64","typeString":"uint64"}},"src":"11781:21:15","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":5033,"nodeType":"IfStatement","src":"11777:90:15","trueBody":{"id":5032,"nodeType":"Block","src":"11804:63:15","statements":[{"errorCall":{"arguments":[{"id":5029,"name":"roleId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5014,"src":"11849:6:15","typeDescriptions":{"typeIdentifier":"t_uint64","typeString":"uint64"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint64","typeString":"uint64"}],"id":5028,"name":"AccessManagerLockedRole","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6538,"src":"11825:23:15","typeDescriptions":{"typeIdentifier":"t_function_error_pure$_t_uint64_$returns$_t_error_$","typeString":"function (uint64) pure returns (error)"}},"id":5030,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"11825:31:15","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_error","typeString":"error"}},"id":5031,"nodeType":"RevertStatement","src":"11818:38:15"}]}},{"assignments":[5035],"declarations":[{"constant":false,"id":5035,"mutability":"mutable","name":"newMember","nameLocation":"11882:9:15","nodeType":"VariableDeclaration","scope":5107,"src":"11877:14:15","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":5034,"name":"bool","nodeType":"ElementaryTypeName","src":"11877:4:15","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"}],"id":5045,"initialValue":{"commonType":{"typeIdentifier":"t_uint48","typeString":"uint48"},"id":5044,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"expression":{"baseExpression":{"expression":{"baseExpression":{"id":5036,"name":"_roles","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4561,"src":"11894:6:15","typeDescriptions":{"typeIdentifier":"t_mapping$_t_uint64_$_t_struct$_Role_$4530_storage_$","typeString":"mapping(uint64 => struct AccessManager.Role storage ref)"}},"id":5038,"indexExpression":{"id":5037,"name":"roleId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5014,"src":"11901:6:15","typeDescriptions":{"typeIdentifier":"t_uint64","typeString":"uint64"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"11894:14:15","typeDescriptions":{"typeIdentifier":"t_struct$_Role_$4530_storage","typeString":"struct AccessManager.Role storage ref"}},"id":5039,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"11909:7:15","memberName":"members","nodeType":"MemberAccess","referencedDeclaration":4522,"src":"11894:22:15","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_struct$_Access_$4517_storage_$","typeString":"mapping(address => struct AccessManager.Access storage ref)"}},"id":5041,"indexExpression":{"id":5040,"name":"account","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5016,"src":"11917:7:15","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"11894:31:15","typeDescriptions":{"typeIdentifier":"t_struct$_Access_$4517_storage","typeString":"struct AccessManager.Access storage ref"}},"id":5042,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"11926:5:15","memberName":"since","nodeType":"MemberAccess","referencedDeclaration":4513,"src":"11894:37:15","typeDescriptions":{"typeIdentifier":"t_uint48","typeString":"uint48"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"hexValue":"30","id":5043,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"11935:1:15","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"11894:42:15","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"nodeType":"VariableDeclarationStatement","src":"11877:59:15"},{"assignments":[5047],"declarations":[{"constant":false,"id":5047,"mutability":"mutable","name":"since","nameLocation":"11953:5:15","nodeType":"VariableDeclaration","scope":5107,"src":"11946:12:15","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint48","typeString":"uint48"},"typeName":{"id":5046,"name":"uint48","nodeType":"ElementaryTypeName","src":"11946:6:15","typeDescriptions":{"typeIdentifier":"t_uint48","typeString":"uint48"}},"visibility":"internal"}],"id":5048,"nodeType":"VariableDeclarationStatement","src":"11946:12:15"},{"condition":{"id":5049,"name":"newMember","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5035,"src":"11973:9:15","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"falseBody":{"id":5095,"nodeType":"Block","src":"12155:399:15","statements":[{"expression":{"id":5093,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"components":[{"expression":{"baseExpression":{"expression":{"baseExpression":{"id":5073,"name":"_roles","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4561,"src":"12382:6:15","typeDescriptions":{"typeIdentifier":"t_mapping$_t_uint64_$_t_struct$_Role_$4530_storage_$","typeString":"mapping(uint64 => struct AccessManager.Role storage ref)"}},"id":5075,"indexExpression":{"id":5074,"name":"roleId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5014,"src":"12389:6:15","typeDescriptions":{"typeIdentifier":"t_uint64","typeString":"uint64"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"12382:14:15","typeDescriptions":{"typeIdentifier":"t_struct$_Role_$4530_storage","typeString":"struct AccessManager.Role storage ref"}},"id":5076,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"12397:7:15","memberName":"members","nodeType":"MemberAccess","referencedDeclaration":4522,"src":"12382:22:15","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_struct$_Access_$4517_storage_$","typeString":"mapping(address => struct AccessManager.Access storage ref)"}},"id":5078,"indexExpression":{"id":5077,"name":"account","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5016,"src":"12405:7:15","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"12382:31:15","typeDescriptions":{"typeIdentifier":"t_struct$_Access_$4517_storage","typeString":"struct AccessManager.Access storage ref"}},"id":5079,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"memberLocation":"12414:5:15","memberName":"delay","nodeType":"MemberAccess","referencedDeclaration":4516,"src":"12382:37:15","typeDescriptions":{"typeIdentifier":"t_userDefinedValueType$_Delay_$14528","typeString":"Time.Delay"}},{"id":5080,"name":"since","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5047,"src":"12421:5:15","typeDescriptions":{"typeIdentifier":"t_uint48","typeString":"uint48"}}],"id":5081,"isConstant":false,"isInlineArray":false,"isLValue":true,"isPure":false,"lValueRequested":true,"nodeType":"TupleExpression","src":"12381:46:15","typeDescriptions":{"typeIdentifier":"t_tuple$_t_userDefinedValueType$_Delay_$14528_$_t_uint48_$","typeString":"tuple(Time.Delay,uint48)"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"arguments":[{"id":5090,"name":"executionDelay","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5020,"src":"12496:14:15","typeDescriptions":{"typeIdentifier":"t_uint32","typeString":"uint32"}},{"hexValue":"30","id":5091,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"12528:1:15","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint32","typeString":"uint32"},{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"}],"expression":{"expression":{"baseExpression":{"expression":{"baseExpression":{"id":5082,"name":"_roles","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4561,"src":"12430:6:15","typeDescriptions":{"typeIdentifier":"t_mapping$_t_uint64_$_t_struct$_Role_$4530_storage_$","typeString":"mapping(uint64 => struct AccessManager.Role storage ref)"}},"id":5084,"indexExpression":{"id":5083,"name":"roleId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5014,"src":"12437:6:15","typeDescriptions":{"typeIdentifier":"t_uint64","typeString":"uint64"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"12430:14:15","typeDescriptions":{"typeIdentifier":"t_struct$_Role_$4530_storage","typeString":"struct AccessManager.Role storage ref"}},"id":5085,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"12445:7:15","memberName":"members","nodeType":"MemberAccess","referencedDeclaration":4522,"src":"12430:22:15","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_struct$_Access_$4517_storage_$","typeString":"mapping(address => struct AccessManager.Access storage ref)"}},"id":5087,"indexExpression":{"id":5086,"name":"account","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5016,"src":"12453:7:15","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"12430:31:15","typeDescriptions":{"typeIdentifier":"t_struct$_Access_$4517_storage","typeString":"struct AccessManager.Access storage ref"}},"id":5088,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"12462:5:15","memberName":"delay","nodeType":"MemberAccess","referencedDeclaration":4516,"src":"12430:37:15","typeDescriptions":{"typeIdentifier":"t_userDefinedValueType$_Delay_$14528","typeString":"Time.Delay"}},"id":5089,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"12468:10:15","memberName":"withUpdate","nodeType":"MemberAccess","referencedDeclaration":14675,"src":"12430:48:15","typeDescriptions":{"typeIdentifier":"t_function_internal_view$_t_userDefinedValueType$_Delay_$14528_$_t_uint32_$_t_uint32_$returns$_t_userDefinedValueType$_Delay_$14528_$_t_uint48_$attached_to$_t_userDefinedValueType$_Delay_$14528_$","typeString":"function (Time.Delay,uint32,uint32) view returns (Time.Delay,uint48)"}},"id":5092,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"12430:113:15","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$_t_userDefinedValueType$_Delay_$14528_$_t_uint48_$","typeString":"tuple(Time.Delay,uint48)"}},"src":"12381:162:15","typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":5094,"nodeType":"ExpressionStatement","src":"12381:162:15"}]},"id":5096,"nodeType":"IfStatement","src":"11969:585:15","trueBody":{"id":5072,"nodeType":"Block","src":"11984:165:15","statements":[{"expression":{"id":5056,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":5050,"name":"since","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5047,"src":"11998:5:15","typeDescriptions":{"typeIdentifier":"t_uint48","typeString":"uint48"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"commonType":{"typeIdentifier":"t_uint48","typeString":"uint48"},"id":5055,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"arguments":[],"expression":{"argumentTypes":[],"expression":{"id":5051,"name":"Time","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":14765,"src":"12006:4:15","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_Time_$14765_$","typeString":"type(library Time)"}},"id":5052,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"12011:9:15","memberName":"timestamp","nodeType":"MemberAccess","referencedDeclaration":14513,"src":"12006:14:15","typeDescriptions":{"typeIdentifier":"t_function_internal_view$__$returns$_t_uint48_$","typeString":"function () view returns (uint48)"}},"id":5053,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"12006:16:15","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint48","typeString":"uint48"}},"nodeType":"BinaryOperation","operator":"+","rightExpression":{"id":5054,"name":"grantDelay","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5018,"src":"12025:10:15","typeDescriptions":{"typeIdentifier":"t_uint32","typeString":"uint32"}},"src":"12006:29:15","typeDescriptions":{"typeIdentifier":"t_uint48","typeString":"uint48"}},"src":"11998:37:15","typeDescriptions":{"typeIdentifier":"t_uint48","typeString":"uint48"}},"id":5057,"nodeType":"ExpressionStatement","src":"11998:37:15"},{"expression":{"id":5070,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"baseExpression":{"expression":{"baseExpression":{"id":5058,"name":"_roles","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4561,"src":"12049:6:15","typeDescriptions":{"typeIdentifier":"t_mapping$_t_uint64_$_t_struct$_Role_$4530_storage_$","typeString":"mapping(uint64 => struct AccessManager.Role storage ref)"}},"id":5060,"indexExpression":{"id":5059,"name":"roleId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5014,"src":"12056:6:15","typeDescriptions":{"typeIdentifier":"t_uint64","typeString":"uint64"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"12049:14:15","typeDescriptions":{"typeIdentifier":"t_struct$_Role_$4530_storage","typeString":"struct AccessManager.Role storage ref"}},"id":5061,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"12064:7:15","memberName":"members","nodeType":"MemberAccess","referencedDeclaration":4522,"src":"12049:22:15","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_struct$_Access_$4517_storage_$","typeString":"mapping(address => struct AccessManager.Access storage ref)"}},"id":5063,"indexExpression":{"id":5062,"name":"account","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5016,"src":"12072:7:15","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"nodeType":"IndexAccess","src":"12049:31:15","typeDescriptions":{"typeIdentifier":"t_struct$_Access_$4517_storage","typeString":"struct AccessManager.Access storage ref"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"arguments":[{"id":5065,"name":"since","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5047,"src":"12098:5:15","typeDescriptions":{"typeIdentifier":"t_uint48","typeString":"uint48"}},{"arguments":[],"expression":{"argumentTypes":[],"expression":{"id":5066,"name":"executionDelay","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5020,"src":"12112:14:15","typeDescriptions":{"typeIdentifier":"t_uint32","typeString":"uint32"}},"id":5067,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"12127:7:15","memberName":"toDelay","nodeType":"MemberAccess","referencedDeclaration":14543,"src":"12112:22:15","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_uint32_$returns$_t_userDefinedValueType$_Delay_$14528_$attached_to$_t_uint32_$","typeString":"function (uint32) pure returns (Time.Delay)"}},"id":5068,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"12112:24:15","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_userDefinedValueType$_Delay_$14528","typeString":"Time.Delay"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint48","typeString":"uint48"},{"typeIdentifier":"t_userDefinedValueType$_Delay_$14528","typeString":"Time.Delay"}],"id":5064,"name":"Access","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4517,"src":"12083:6:15","typeDescriptions":{"typeIdentifier":"t_type$_t_struct$_Access_$4517_storage_ptr_$","typeString":"type(struct AccessManager.Access storage pointer)"}},"id":5069,"isConstant":false,"isLValue":false,"isPure":false,"kind":"structConstructorCall","lValueRequested":false,"nameLocations":["12091:5:15","12105:5:15"],"names":["since","delay"],"nodeType":"FunctionCall","src":"12083:55:15","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_struct$_Access_$4517_memory_ptr","typeString":"struct AccessManager.Access memory"}},"src":"12049:89:15","typeDescriptions":{"typeIdentifier":"t_struct$_Access_$4517_storage","typeString":"struct AccessManager.Access storage ref"}},"id":5071,"nodeType":"ExpressionStatement","src":"12049:89:15"}]}},{"eventCall":{"arguments":[{"id":5098,"name":"roleId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5014,"src":"12581:6:15","typeDescriptions":{"typeIdentifier":"t_uint64","typeString":"uint64"}},{"id":5099,"name":"account","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5016,"src":"12589:7:15","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":5100,"name":"executionDelay","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5020,"src":"12598:14:15","typeDescriptions":{"typeIdentifier":"t_uint32","typeString":"uint32"}},{"id":5101,"name":"since","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5047,"src":"12614:5:15","typeDescriptions":{"typeIdentifier":"t_uint48","typeString":"uint48"}},{"id":5102,"name":"newMember","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5035,"src":"12621:9:15","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint64","typeString":"uint64"},{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint32","typeString":"uint32"},{"typeIdentifier":"t_uint48","typeString":"uint48"},{"typeIdentifier":"t_bool","typeString":"bool"}],"id":5097,"name":"RoleGranted","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6463,"src":"12569:11:15","typeDescriptions":{"typeIdentifier":"t_function_event_nonpayable$_t_uint64_$_t_address_$_t_uint32_$_t_uint48_$_t_bool_$returns$__$","typeString":"function (uint64,address,uint32,uint48,bool)"}},"id":5103,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"12569:62:15","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":5104,"nodeType":"EmitStatement","src":"12564:67:15"},{"expression":{"id":5105,"name":"newMember","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5035,"src":"12648:9:15","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"functionReturnParameters":5024,"id":5106,"nodeType":"Return","src":"12641:16:15"}]},"documentation":{"id":5012,"nodeType":"StructuredDocumentation","src":"11432:166:15","text":" @dev Internal version of {grantRole} without access control. Returns true if the role was newly granted.\n Emits a {RoleGranted} event."},"id":5108,"implemented":true,"kind":"function","modifiers":[],"name":"_grantRole","nameLocation":"11612:10:15","nodeType":"FunctionDefinition","parameters":{"id":5021,"nodeType":"ParameterList","parameters":[{"constant":false,"id":5014,"mutability":"mutable","name":"roleId","nameLocation":"11639:6:15","nodeType":"VariableDeclaration","scope":5108,"src":"11632:13:15","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint64","typeString":"uint64"},"typeName":{"id":5013,"name":"uint64","nodeType":"ElementaryTypeName","src":"11632:6:15","typeDescriptions":{"typeIdentifier":"t_uint64","typeString":"uint64"}},"visibility":"internal"},{"constant":false,"id":5016,"mutability":"mutable","name":"account","nameLocation":"11663:7:15","nodeType":"VariableDeclaration","scope":5108,"src":"11655:15:15","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":5015,"name":"address","nodeType":"ElementaryTypeName","src":"11655:7:15","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":5018,"mutability":"mutable","name":"grantDelay","nameLocation":"11687:10:15","nodeType":"VariableDeclaration","scope":5108,"src":"11680:17:15","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint32","typeString":"uint32"},"typeName":{"id":5017,"name":"uint32","nodeType":"ElementaryTypeName","src":"11680:6:15","typeDescriptions":{"typeIdentifier":"t_uint32","typeString":"uint32"}},"visibility":"internal"},{"constant":false,"id":5020,"mutability":"mutable","name":"executionDelay","nameLocation":"11714:14:15","nodeType":"VariableDeclaration","scope":5108,"src":"11707:21:15","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint32","typeString":"uint32"},"typeName":{"id":5019,"name":"uint32","nodeType":"ElementaryTypeName","src":"11707:6:15","typeDescriptions":{"typeIdentifier":"t_uint32","typeString":"uint32"}},"visibility":"internal"}],"src":"11622:112:15"},"returnParameters":{"id":5024,"nodeType":"ParameterList","parameters":[{"constant":false,"id":5023,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":5108,"src":"11761:4:15","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":5022,"name":"bool","nodeType":"ElementaryTypeName","src":"11761:4:15","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"}],"src":"11760:6:15"},"scope":6372,"src":"11603:1061:15","stateMutability":"nonpayable","virtual":true,"visibility":"internal"},{"body":{"id":5155,"nodeType":"Block","src":"13010:315:15","statements":[{"condition":{"commonType":{"typeIdentifier":"t_uint64","typeString":"uint64"},"id":5120,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":5118,"name":"roleId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5111,"src":"13024:6:15","typeDescriptions":{"typeIdentifier":"t_uint64","typeString":"uint64"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"id":5119,"name":"PUBLIC_ROLE","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4551,"src":"13034:11:15","typeDescriptions":{"typeIdentifier":"t_uint64","typeString":"uint64"}},"src":"13024:21:15","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":5126,"nodeType":"IfStatement","src":"13020:90:15","trueBody":{"id":5125,"nodeType":"Block","src":"13047:63:15","statements":[{"errorCall":{"arguments":[{"id":5122,"name":"roleId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5111,"src":"13092:6:15","typeDescriptions":{"typeIdentifier":"t_uint64","typeString":"uint64"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint64","typeString":"uint64"}],"id":5121,"name":"AccessManagerLockedRole","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6538,"src":"13068:23:15","typeDescriptions":{"typeIdentifier":"t_function_error_pure$_t_uint64_$returns$_t_error_$","typeString":"function (uint64) pure returns (error)"}},"id":5123,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"13068:31:15","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_error","typeString":"error"}},"id":5124,"nodeType":"RevertStatement","src":"13061:38:15"}]}},{"condition":{"commonType":{"typeIdentifier":"t_uint48","typeString":"uint48"},"id":5135,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"expression":{"baseExpression":{"expression":{"baseExpression":{"id":5127,"name":"_roles","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4561,"src":"13124:6:15","typeDescriptions":{"typeIdentifier":"t_mapping$_t_uint64_$_t_struct$_Role_$4530_storage_$","typeString":"mapping(uint64 => struct AccessManager.Role storage ref)"}},"id":5129,"indexExpression":{"id":5128,"name":"roleId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5111,"src":"13131:6:15","typeDescriptions":{"typeIdentifier":"t_uint64","typeString":"uint64"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"13124:14:15","typeDescriptions":{"typeIdentifier":"t_struct$_Role_$4530_storage","typeString":"struct AccessManager.Role storage ref"}},"id":5130,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"13139:7:15","memberName":"members","nodeType":"MemberAccess","referencedDeclaration":4522,"src":"13124:22:15","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_struct$_Access_$4517_storage_$","typeString":"mapping(address => struct AccessManager.Access storage ref)"}},"id":5132,"indexExpression":{"id":5131,"name":"account","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5113,"src":"13147:7:15","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"13124:31:15","typeDescriptions":{"typeIdentifier":"t_struct$_Access_$4517_storage","typeString":"struct AccessManager.Access storage ref"}},"id":5133,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"13156:5:15","memberName":"since","nodeType":"MemberAccess","referencedDeclaration":4513,"src":"13124:37:15","typeDescriptions":{"typeIdentifier":"t_uint48","typeString":"uint48"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"hexValue":"30","id":5134,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"13165:1:15","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"13124:42:15","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":5139,"nodeType":"IfStatement","src":"13120:85:15","trueBody":{"id":5138,"nodeType":"Block","src":"13168:37:15","statements":[{"expression":{"hexValue":"66616c7365","id":5136,"isConstant":false,"isLValue":false,"isPure":true,"kind":"bool","lValueRequested":false,"nodeType":"Literal","src":"13189:5:15","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"value":"false"},"functionReturnParameters":5117,"id":5137,"nodeType":"Return","src":"13182:12:15"}]}},{"expression":{"id":5146,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"UnaryOperation","operator":"delete","prefix":true,"src":"13215:38:15","subExpression":{"baseExpression":{"expression":{"baseExpression":{"id":5140,"name":"_roles","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4561,"src":"13222:6:15","typeDescriptions":{"typeIdentifier":"t_mapping$_t_uint64_$_t_struct$_Role_$4530_storage_$","typeString":"mapping(uint64 => struct AccessManager.Role storage ref)"}},"id":5142,"indexExpression":{"id":5141,"name":"roleId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5111,"src":"13229:6:15","typeDescriptions":{"typeIdentifier":"t_uint64","typeString":"uint64"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"13222:14:15","typeDescriptions":{"typeIdentifier":"t_struct$_Role_$4530_storage","typeString":"struct AccessManager.Role storage ref"}},"id":5143,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"13237:7:15","memberName":"members","nodeType":"MemberAccess","referencedDeclaration":4522,"src":"13222:22:15","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_struct$_Access_$4517_storage_$","typeString":"mapping(address => struct AccessManager.Access storage ref)"}},"id":5145,"indexExpression":{"id":5144,"name":"account","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5113,"src":"13245:7:15","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"nodeType":"IndexAccess","src":"13222:31:15","typeDescriptions":{"typeIdentifier":"t_struct$_Access_$4517_storage","typeString":"struct AccessManager.Access storage ref"}},"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":5147,"nodeType":"ExpressionStatement","src":"13215:38:15"},{"eventCall":{"arguments":[{"id":5149,"name":"roleId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5111,"src":"13281:6:15","typeDescriptions":{"typeIdentifier":"t_uint64","typeString":"uint64"}},{"id":5150,"name":"account","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5113,"src":"13289:7:15","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint64","typeString":"uint64"},{"typeIdentifier":"t_address","typeString":"address"}],"id":5148,"name":"RoleRevoked","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6470,"src":"13269:11:15","typeDescriptions":{"typeIdentifier":"t_function_event_nonpayable$_t_uint64_$_t_address_$returns$__$","typeString":"function (uint64,address)"}},"id":5151,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"13269:28:15","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":5152,"nodeType":"EmitStatement","src":"13264:33:15"},{"expression":{"hexValue":"74727565","id":5153,"isConstant":false,"isLValue":false,"isPure":true,"kind":"bool","lValueRequested":false,"nodeType":"Literal","src":"13314:4:15","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"value":"true"},"functionReturnParameters":5117,"id":5154,"nodeType":"Return","src":"13307:11:15"}]},"documentation":{"id":5109,"nodeType":"StructuredDocumentation","src":"12670:250:15","text":" @dev Internal version of {revokeRole} without access control. This logic is also used by {renounceRole}.\n Returns true if the role was previously granted.\n Emits a {RoleRevoked} event if the account had the role."},"id":5156,"implemented":true,"kind":"function","modifiers":[],"name":"_revokeRole","nameLocation":"12934:11:15","nodeType":"FunctionDefinition","parameters":{"id":5114,"nodeType":"ParameterList","parameters":[{"constant":false,"id":5111,"mutability":"mutable","name":"roleId","nameLocation":"12953:6:15","nodeType":"VariableDeclaration","scope":5156,"src":"12946:13:15","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint64","typeString":"uint64"},"typeName":{"id":5110,"name":"uint64","nodeType":"ElementaryTypeName","src":"12946:6:15","typeDescriptions":{"typeIdentifier":"t_uint64","typeString":"uint64"}},"visibility":"internal"},{"constant":false,"id":5113,"mutability":"mutable","name":"account","nameLocation":"12969:7:15","nodeType":"VariableDeclaration","scope":5156,"src":"12961:15:15","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":5112,"name":"address","nodeType":"ElementaryTypeName","src":"12961:7:15","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"12945:32:15"},"returnParameters":{"id":5117,"nodeType":"ParameterList","parameters":[{"constant":false,"id":5116,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":5156,"src":"13004:4:15","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":5115,"name":"bool","nodeType":"ElementaryTypeName","src":"13004:4:15","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"}],"src":"13003:6:15"},"scope":6372,"src":"12925:400:15","stateMutability":"nonpayable","virtual":true,"visibility":"internal"},{"body":{"id":5189,"nodeType":"Block","src":"13689:216:15","statements":[{"condition":{"commonType":{"typeIdentifier":"t_bool","typeString":"bool"},"id":5170,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"commonType":{"typeIdentifier":"t_uint64","typeString":"uint64"},"id":5166,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":5164,"name":"roleId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5159,"src":"13703:6:15","typeDescriptions":{"typeIdentifier":"t_uint64","typeString":"uint64"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"id":5165,"name":"ADMIN_ROLE","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4543,"src":"13713:10:15","typeDescriptions":{"typeIdentifier":"t_uint64","typeString":"uint64"}},"src":"13703:20:15","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"nodeType":"BinaryOperation","operator":"||","rightExpression":{"commonType":{"typeIdentifier":"t_uint64","typeString":"uint64"},"id":5169,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":5167,"name":"roleId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5159,"src":"13727:6:15","typeDescriptions":{"typeIdentifier":"t_uint64","typeString":"uint64"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"id":5168,"name":"PUBLIC_ROLE","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4551,"src":"13737:11:15","typeDescriptions":{"typeIdentifier":"t_uint64","typeString":"uint64"}},"src":"13727:21:15","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"src":"13703:45:15","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":5176,"nodeType":"IfStatement","src":"13699:114:15","trueBody":{"id":5175,"nodeType":"Block","src":"13750:63:15","statements":[{"errorCall":{"arguments":[{"id":5172,"name":"roleId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5159,"src":"13795:6:15","typeDescriptions":{"typeIdentifier":"t_uint64","typeString":"uint64"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint64","typeString":"uint64"}],"id":5171,"name":"AccessManagerLockedRole","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6538,"src":"13771:23:15","typeDescriptions":{"typeIdentifier":"t_function_error_pure$_t_uint64_$returns$_t_error_$","typeString":"function (uint64) pure returns (error)"}},"id":5173,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"13771:31:15","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_error","typeString":"error"}},"id":5174,"nodeType":"RevertStatement","src":"13764:38:15"}]}},{"expression":{"id":5182,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"expression":{"baseExpression":{"id":5177,"name":"_roles","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4561,"src":"13823:6:15","typeDescriptions":{"typeIdentifier":"t_mapping$_t_uint64_$_t_struct$_Role_$4530_storage_$","typeString":"mapping(uint64 => struct AccessManager.Role storage ref)"}},"id":5179,"indexExpression":{"id":5178,"name":"roleId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5159,"src":"13830:6:15","typeDescriptions":{"typeIdentifier":"t_uint64","typeString":"uint64"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"13823:14:15","typeDescriptions":{"typeIdentifier":"t_struct$_Role_$4530_storage","typeString":"struct AccessManager.Role storage ref"}},"id":5180,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"memberLocation":"13838:5:15","memberName":"admin","nodeType":"MemberAccess","referencedDeclaration":4524,"src":"13823:20:15","typeDescriptions":{"typeIdentifier":"t_uint64","typeString":"uint64"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"id":5181,"name":"admin","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5161,"src":"13846:5:15","typeDescriptions":{"typeIdentifier":"t_uint64","typeString":"uint64"}},"src":"13823:28:15","typeDescriptions":{"typeIdentifier":"t_uint64","typeString":"uint64"}},"id":5183,"nodeType":"ExpressionStatement","src":"13823:28:15"},{"eventCall":{"arguments":[{"id":5185,"name":"roleId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5159,"src":"13884:6:15","typeDescriptions":{"typeIdentifier":"t_uint64","typeString":"uint64"}},{"id":5186,"name":"admin","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5161,"src":"13892:5:15","typeDescriptions":{"typeIdentifier":"t_uint64","typeString":"uint64"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint64","typeString":"uint64"},{"typeIdentifier":"t_uint64","typeString":"uint64"}],"id":5184,"name":"RoleAdminChanged","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6477,"src":"13867:16:15","typeDescriptions":{"typeIdentifier":"t_function_event_nonpayable$_t_uint64_$_t_uint64_$returns$__$","typeString":"function (uint64,uint64)"}},"id":5187,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"13867:31:15","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":5188,"nodeType":"EmitStatement","src":"13862:36:15"}]},"documentation":{"id":5157,"nodeType":"StructuredDocumentation","src":"13331:284:15","text":" @dev Internal version of {setRoleAdmin} without access control.\n Emits a {RoleAdminChanged} event.\n NOTE: Setting the admin role as the `PUBLIC_ROLE` is allowed, but it will effectively allow\n anyone to set grant or revoke such role."},"id":5190,"implemented":true,"kind":"function","modifiers":[],"name":"_setRoleAdmin","nameLocation":"13629:13:15","nodeType":"FunctionDefinition","parameters":{"id":5162,"nodeType":"ParameterList","parameters":[{"constant":false,"id":5159,"mutability":"mutable","name":"roleId","nameLocation":"13650:6:15","nodeType":"VariableDeclaration","scope":5190,"src":"13643:13:15","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint64","typeString":"uint64"},"typeName":{"id":5158,"name":"uint64","nodeType":"ElementaryTypeName","src":"13643:6:15","typeDescriptions":{"typeIdentifier":"t_uint64","typeString":"uint64"}},"visibility":"internal"},{"constant":false,"id":5161,"mutability":"mutable","name":"admin","nameLocation":"13665:5:15","nodeType":"VariableDeclaration","scope":5190,"src":"13658:12:15","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint64","typeString":"uint64"},"typeName":{"id":5160,"name":"uint64","nodeType":"ElementaryTypeName","src":"13658:6:15","typeDescriptions":{"typeIdentifier":"t_uint64","typeString":"uint64"}},"visibility":"internal"}],"src":"13642:29:15"},"returnParameters":{"id":5163,"nodeType":"ParameterList","parameters":[],"src":"13689:0:15"},"scope":6372,"src":"13620:285:15","stateMutability":"nonpayable","virtual":true,"visibility":"internal"},{"body":{"id":5223,"nodeType":"Block","src":"14299:228:15","statements":[{"condition":{"commonType":{"typeIdentifier":"t_bool","typeString":"bool"},"id":5204,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"commonType":{"typeIdentifier":"t_uint64","typeString":"uint64"},"id":5200,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":5198,"name":"roleId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5193,"src":"14313:6:15","typeDescriptions":{"typeIdentifier":"t_uint64","typeString":"uint64"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"id":5199,"name":"ADMIN_ROLE","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4543,"src":"14323:10:15","typeDescriptions":{"typeIdentifier":"t_uint64","typeString":"uint64"}},"src":"14313:20:15","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"nodeType":"BinaryOperation","operator":"||","rightExpression":{"commonType":{"typeIdentifier":"t_uint64","typeString":"uint64"},"id":5203,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":5201,"name":"roleId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5193,"src":"14337:6:15","typeDescriptions":{"typeIdentifier":"t_uint64","typeString":"uint64"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"id":5202,"name":"PUBLIC_ROLE","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4551,"src":"14347:11:15","typeDescriptions":{"typeIdentifier":"t_uint64","typeString":"uint64"}},"src":"14337:21:15","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"src":"14313:45:15","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":5210,"nodeType":"IfStatement","src":"14309:114:15","trueBody":{"id":5209,"nodeType":"Block","src":"14360:63:15","statements":[{"errorCall":{"arguments":[{"id":5206,"name":"roleId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5193,"src":"14405:6:15","typeDescriptions":{"typeIdentifier":"t_uint64","typeString":"uint64"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint64","typeString":"uint64"}],"id":5205,"name":"AccessManagerLockedRole","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6538,"src":"14381:23:15","typeDescriptions":{"typeIdentifier":"t_function_error_pure$_t_uint64_$returns$_t_error_$","typeString":"function (uint64) pure returns (error)"}},"id":5207,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"14381:31:15","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_error","typeString":"error"}},"id":5208,"nodeType":"RevertStatement","src":"14374:38:15"}]}},{"expression":{"id":5216,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"expression":{"baseExpression":{"id":5211,"name":"_roles","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4561,"src":"14433:6:15","typeDescriptions":{"typeIdentifier":"t_mapping$_t_uint64_$_t_struct$_Role_$4530_storage_$","typeString":"mapping(uint64 => struct AccessManager.Role storage ref)"}},"id":5213,"indexExpression":{"id":5212,"name":"roleId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5193,"src":"14440:6:15","typeDescriptions":{"typeIdentifier":"t_uint64","typeString":"uint64"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"14433:14:15","typeDescriptions":{"typeIdentifier":"t_struct$_Role_$4530_storage","typeString":"struct AccessManager.Role storage ref"}},"id":5214,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"memberLocation":"14448:8:15","memberName":"guardian","nodeType":"MemberAccess","referencedDeclaration":4526,"src":"14433:23:15","typeDescriptions":{"typeIdentifier":"t_uint64","typeString":"uint64"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"id":5215,"name":"guardian","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5195,"src":"14459:8:15","typeDescriptions":{"typeIdentifier":"t_uint64","typeString":"uint64"}},"src":"14433:34:15","typeDescriptions":{"typeIdentifier":"t_uint64","typeString":"uint64"}},"id":5217,"nodeType":"ExpressionStatement","src":"14433:34:15"},{"eventCall":{"arguments":[{"id":5219,"name":"roleId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5193,"src":"14503:6:15","typeDescriptions":{"typeIdentifier":"t_uint64","typeString":"uint64"}},{"id":5220,"name":"guardian","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5195,"src":"14511:8:15","typeDescriptions":{"typeIdentifier":"t_uint64","typeString":"uint64"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint64","typeString":"uint64"},{"typeIdentifier":"t_uint64","typeString":"uint64"}],"id":5218,"name":"RoleGuardianChanged","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6484,"src":"14483:19:15","typeDescriptions":{"typeIdentifier":"t_function_event_nonpayable$_t_uint64_$_t_uint64_$returns$__$","typeString":"function (uint64,uint64)"}},"id":5221,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"14483:37:15","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":5222,"nodeType":"EmitStatement","src":"14478:42:15"}]},"documentation":{"id":5191,"nodeType":"StructuredDocumentation","src":"13911:308:15","text":" @dev Internal version of {setRoleGuardian} without access control.\n Emits a {RoleGuardianChanged} event.\n NOTE: Setting the guardian role as the `PUBLIC_ROLE` is allowed, but it will effectively allow\n anyone to cancel any scheduled operation for such role."},"id":5224,"implemented":true,"kind":"function","modifiers":[],"name":"_setRoleGuardian","nameLocation":"14233:16:15","nodeType":"FunctionDefinition","parameters":{"id":5196,"nodeType":"ParameterList","parameters":[{"constant":false,"id":5193,"mutability":"mutable","name":"roleId","nameLocation":"14257:6:15","nodeType":"VariableDeclaration","scope":5224,"src":"14250:13:15","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint64","typeString":"uint64"},"typeName":{"id":5192,"name":"uint64","nodeType":"ElementaryTypeName","src":"14250:6:15","typeDescriptions":{"typeIdentifier":"t_uint64","typeString":"uint64"}},"visibility":"internal"},{"constant":false,"id":5195,"mutability":"mutable","name":"guardian","nameLocation":"14272:8:15","nodeType":"VariableDeclaration","scope":5224,"src":"14265:15:15","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint64","typeString":"uint64"},"typeName":{"id":5194,"name":"uint64","nodeType":"ElementaryTypeName","src":"14265:6:15","typeDescriptions":{"typeIdentifier":"t_uint64","typeString":"uint64"}},"visibility":"internal"}],"src":"14249:32:15"},"returnParameters":{"id":5197,"nodeType":"ParameterList","parameters":[],"src":"14299:0:15"},"scope":6372,"src":"14224:303:15","stateMutability":"nonpayable","virtual":true,"visibility":"internal"},{"body":{"id":5267,"nodeType":"Block","src":"14747:301:15","statements":[{"condition":{"commonType":{"typeIdentifier":"t_uint64","typeString":"uint64"},"id":5234,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":5232,"name":"roleId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5227,"src":"14761:6:15","typeDescriptions":{"typeIdentifier":"t_uint64","typeString":"uint64"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"id":5233,"name":"PUBLIC_ROLE","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4551,"src":"14771:11:15","typeDescriptions":{"typeIdentifier":"t_uint64","typeString":"uint64"}},"src":"14761:21:15","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":5240,"nodeType":"IfStatement","src":"14757:90:15","trueBody":{"id":5239,"nodeType":"Block","src":"14784:63:15","statements":[{"errorCall":{"arguments":[{"id":5236,"name":"roleId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5227,"src":"14829:6:15","typeDescriptions":{"typeIdentifier":"t_uint64","typeString":"uint64"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint64","typeString":"uint64"}],"id":5235,"name":"AccessManagerLockedRole","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6538,"src":"14805:23:15","typeDescriptions":{"typeIdentifier":"t_function_error_pure$_t_uint64_$returns$_t_error_$","typeString":"function (uint64) pure returns (error)"}},"id":5237,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"14805:31:15","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_error","typeString":"error"}},"id":5238,"nodeType":"RevertStatement","src":"14798:38:15"}]}},{"assignments":[5242],"declarations":[{"constant":false,"id":5242,"mutability":"mutable","name":"effect","nameLocation":"14864:6:15","nodeType":"VariableDeclaration","scope":5267,"src":"14857:13:15","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint48","typeString":"uint48"},"typeName":{"id":5241,"name":"uint48","nodeType":"ElementaryTypeName","src":"14857:6:15","typeDescriptions":{"typeIdentifier":"t_uint48","typeString":"uint48"}},"visibility":"internal"}],"id":5243,"nodeType":"VariableDeclarationStatement","src":"14857:13:15"},{"expression":{"id":5259,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"components":[{"expression":{"baseExpression":{"id":5244,"name":"_roles","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4561,"src":"14881:6:15","typeDescriptions":{"typeIdentifier":"t_mapping$_t_uint64_$_t_struct$_Role_$4530_storage_$","typeString":"mapping(uint64 => struct AccessManager.Role storage ref)"}},"id":5246,"indexExpression":{"id":5245,"name":"roleId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5227,"src":"14888:6:15","typeDescriptions":{"typeIdentifier":"t_uint64","typeString":"uint64"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"14881:14:15","typeDescriptions":{"typeIdentifier":"t_struct$_Role_$4530_storage","typeString":"struct AccessManager.Role storage ref"}},"id":5247,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"memberLocation":"14896:10:15","memberName":"grantDelay","nodeType":"MemberAccess","referencedDeclaration":4529,"src":"14881:25:15","typeDescriptions":{"typeIdentifier":"t_userDefinedValueType$_Delay_$14528","typeString":"Time.Delay"}},{"id":5248,"name":"effect","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5242,"src":"14908:6:15","typeDescriptions":{"typeIdentifier":"t_uint48","typeString":"uint48"}}],"id":5249,"isConstant":false,"isInlineArray":false,"isLValue":true,"isPure":false,"lValueRequested":true,"nodeType":"TupleExpression","src":"14880:35:15","typeDescriptions":{"typeIdentifier":"t_tuple$_t_userDefinedValueType$_Delay_$14528_$_t_uint48_$","typeString":"tuple(Time.Delay,uint48)"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"arguments":[{"id":5255,"name":"newDelay","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5229,"src":"14955:8:15","typeDescriptions":{"typeIdentifier":"t_uint32","typeString":"uint32"}},{"arguments":[],"expression":{"argumentTypes":[],"id":5256,"name":"minSetback","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4689,"src":"14965:10:15","typeDescriptions":{"typeIdentifier":"t_function_internal_view$__$returns$_t_uint32_$","typeString":"function () view returns (uint32)"}},"id":5257,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"14965:12:15","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint32","typeString":"uint32"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint32","typeString":"uint32"},{"typeIdentifier":"t_uint32","typeString":"uint32"}],"expression":{"expression":{"baseExpression":{"id":5250,"name":"_roles","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4561,"src":"14918:6:15","typeDescriptions":{"typeIdentifier":"t_mapping$_t_uint64_$_t_struct$_Role_$4530_storage_$","typeString":"mapping(uint64 => struct AccessManager.Role storage ref)"}},"id":5252,"indexExpression":{"id":5251,"name":"roleId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5227,"src":"14925:6:15","typeDescriptions":{"typeIdentifier":"t_uint64","typeString":"uint64"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"14918:14:15","typeDescriptions":{"typeIdentifier":"t_struct$_Role_$4530_storage","typeString":"struct AccessManager.Role storage ref"}},"id":5253,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"14933:10:15","memberName":"grantDelay","nodeType":"MemberAccess","referencedDeclaration":4529,"src":"14918:25:15","typeDescriptions":{"typeIdentifier":"t_userDefinedValueType$_Delay_$14528","typeString":"Time.Delay"}},"id":5254,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"14944:10:15","memberName":"withUpdate","nodeType":"MemberAccess","referencedDeclaration":14675,"src":"14918:36:15","typeDescriptions":{"typeIdentifier":"t_function_internal_view$_t_userDefinedValueType$_Delay_$14528_$_t_uint32_$_t_uint32_$returns$_t_userDefinedValueType$_Delay_$14528_$_t_uint48_$attached_to$_t_userDefinedValueType$_Delay_$14528_$","typeString":"function (Time.Delay,uint32,uint32) view returns (Time.Delay,uint48)"}},"id":5258,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"14918:60:15","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$_t_userDefinedValueType$_Delay_$14528_$_t_uint48_$","typeString":"tuple(Time.Delay,uint48)"}},"src":"14880:98:15","typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":5260,"nodeType":"ExpressionStatement","src":"14880:98:15"},{"eventCall":{"arguments":[{"id":5262,"name":"roleId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5227,"src":"15016:6:15","typeDescriptions":{"typeIdentifier":"t_uint64","typeString":"uint64"}},{"id":5263,"name":"newDelay","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5229,"src":"15024:8:15","typeDescriptions":{"typeIdentifier":"t_uint32","typeString":"uint32"}},{"id":5264,"name":"effect","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5242,"src":"15034:6:15","typeDescriptions":{"typeIdentifier":"t_uint48","typeString":"uint48"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint64","typeString":"uint64"},{"typeIdentifier":"t_uint32","typeString":"uint32"},{"typeIdentifier":"t_uint48","typeString":"uint48"}],"id":5261,"name":"RoleGrantDelayChanged","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6493,"src":"14994:21:15","typeDescriptions":{"typeIdentifier":"t_function_event_nonpayable$_t_uint64_$_t_uint32_$_t_uint48_$returns$__$","typeString":"function (uint64,uint32,uint48)"}},"id":5265,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"14994:47:15","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":5266,"nodeType":"EmitStatement","src":"14989:52:15"}]},"documentation":{"id":5225,"nodeType":"StructuredDocumentation","src":"14533:136:15","text":" @dev Internal version of {setGrantDelay} without access control.\n Emits a {RoleGrantDelayChanged} event."},"id":5268,"implemented":true,"kind":"function","modifiers":[],"name":"_setGrantDelay","nameLocation":"14683:14:15","nodeType":"FunctionDefinition","parameters":{"id":5230,"nodeType":"ParameterList","parameters":[{"constant":false,"id":5227,"mutability":"mutable","name":"roleId","nameLocation":"14705:6:15","nodeType":"VariableDeclaration","scope":5268,"src":"14698:13:15","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint64","typeString":"uint64"},"typeName":{"id":5226,"name":"uint64","nodeType":"ElementaryTypeName","src":"14698:6:15","typeDescriptions":{"typeIdentifier":"t_uint64","typeString":"uint64"}},"visibility":"internal"},{"constant":false,"id":5229,"mutability":"mutable","name":"newDelay","nameLocation":"14720:8:15","nodeType":"VariableDeclaration","scope":5268,"src":"14713:15:15","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint32","typeString":"uint32"},"typeName":{"id":5228,"name":"uint32","nodeType":"ElementaryTypeName","src":"14713:6:15","typeDescriptions":{"typeIdentifier":"t_uint32","typeString":"uint32"}},"visibility":"internal"}],"src":"14697:32:15"},"returnParameters":{"id":5231,"nodeType":"ParameterList","parameters":[],"src":"14747:0:15"},"scope":6372,"src":"14674:374:15","stateMutability":"nonpayable","virtual":true,"visibility":"internal"},{"baseFunctions":[6745],"body":{"id":5302,"nodeType":"Block","src":"15360:140:15","statements":[{"body":{"id":5300,"nodeType":"Block","src":"15417:77:15","statements":[{"expression":{"arguments":[{"id":5293,"name":"target","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5271,"src":"15454:6:15","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"baseExpression":{"id":5294,"name":"selectors","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5274,"src":"15462:9:15","typeDescriptions":{"typeIdentifier":"t_array$_t_bytes4_$dyn_calldata_ptr","typeString":"bytes4[] calldata"}},"id":5296,"indexExpression":{"id":5295,"name":"i","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5282,"src":"15472:1:15","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"15462:12:15","typeDescriptions":{"typeIdentifier":"t_bytes4","typeString":"bytes4"}},{"id":5297,"name":"roleId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5276,"src":"15476:6:15","typeDescriptions":{"typeIdentifier":"t_uint64","typeString":"uint64"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_bytes4","typeString":"bytes4"},{"typeIdentifier":"t_uint64","typeString":"uint64"}],"id":5292,"name":"_setTargetFunctionRole","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5329,"src":"15431:22:15","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_address_$_t_bytes4_$_t_uint64_$returns$__$","typeString":"function (address,bytes4,uint64)"}},"id":5298,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"15431:52:15","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":5299,"nodeType":"ExpressionStatement","src":"15431:52:15"}]},"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":5288,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":5285,"name":"i","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5282,"src":"15390:1:15","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"<","rightExpression":{"expression":{"id":5286,"name":"selectors","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5274,"src":"15394:9:15","typeDescriptions":{"typeIdentifier":"t_array$_t_bytes4_$dyn_calldata_ptr","typeString":"bytes4[] calldata"}},"id":5287,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"15404:6:15","memberName":"length","nodeType":"MemberAccess","src":"15394:16:15","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"15390:20:15","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":5301,"initializationExpression":{"assignments":[5282],"declarations":[{"constant":false,"id":5282,"mutability":"mutable","name":"i","nameLocation":"15383:1:15","nodeType":"VariableDeclaration","scope":5301,"src":"15375:9:15","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":5281,"name":"uint256","nodeType":"ElementaryTypeName","src":"15375:7:15","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":5284,"initialValue":{"hexValue":"30","id":5283,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"15387:1:15","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"nodeType":"VariableDeclarationStatement","src":"15375:13:15"},"isSimpleCounterLoop":true,"loopExpression":{"expression":{"id":5290,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"UnaryOperation","operator":"++","prefix":true,"src":"15412:3:15","subExpression":{"id":5289,"name":"i","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5282,"src":"15414:1:15","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":5291,"nodeType":"ExpressionStatement","src":"15412:3:15"},"nodeType":"ForStatement","src":"15370:124:15"}]},"documentation":{"id":5269,"nodeType":"StructuredDocumentation","src":"15174:30:15","text":"@inheritdoc IAccessManager"},"functionSelector":"08d6122d","id":5303,"implemented":true,"kind":"function","modifiers":[{"id":5279,"kind":"modifierInvocation","modifierName":{"id":5278,"name":"onlyAuthorized","nameLocations":["15345:14:15"],"nodeType":"IdentifierPath","referencedDeclaration":4576,"src":"15345:14:15"},"nodeType":"ModifierInvocation","src":"15345:14:15"}],"name":"setTargetFunctionRole","nameLocation":"15218:21:15","nodeType":"FunctionDefinition","parameters":{"id":5277,"nodeType":"ParameterList","parameters":[{"constant":false,"id":5271,"mutability":"mutable","name":"target","nameLocation":"15257:6:15","nodeType":"VariableDeclaration","scope":5303,"src":"15249:14:15","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":5270,"name":"address","nodeType":"ElementaryTypeName","src":"15249:7:15","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":5274,"mutability":"mutable","name":"selectors","nameLocation":"15291:9:15","nodeType":"VariableDeclaration","scope":5303,"src":"15273:27:15","stateVariable":false,"storageLocation":"calldata","typeDescriptions":{"typeIdentifier":"t_array$_t_bytes4_$dyn_calldata_ptr","typeString":"bytes4[]"},"typeName":{"baseType":{"id":5272,"name":"bytes4","nodeType":"ElementaryTypeName","src":"15273:6:15","typeDescriptions":{"typeIdentifier":"t_bytes4","typeString":"bytes4"}},"id":5273,"nodeType":"ArrayTypeName","src":"15273:8:15","typeDescriptions":{"typeIdentifier":"t_array$_t_bytes4_$dyn_storage_ptr","typeString":"bytes4[]"}},"visibility":"internal"},{"constant":false,"id":5276,"mutability":"mutable","name":"roleId","nameLocation":"15317:6:15","nodeType":"VariableDeclaration","scope":5303,"src":"15310:13:15","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint64","typeString":"uint64"},"typeName":{"id":5275,"name":"uint64","nodeType":"ElementaryTypeName","src":"15310:6:15","typeDescriptions":{"typeIdentifier":"t_uint64","typeString":"uint64"}},"visibility":"internal"}],"src":"15239:90:15"},"returnParameters":{"id":5280,"nodeType":"ParameterList","parameters":[],"src":"15360:0:15"},"scope":6372,"src":"15209:291:15","stateMutability":"nonpayable","virtual":true,"visibility":"public"},{"body":{"id":5328,"nodeType":"Block","src":"15756:131:15","statements":[{"expression":{"id":5320,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"baseExpression":{"expression":{"baseExpression":{"id":5313,"name":"_targets","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4556,"src":"15766:8:15","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_struct$_TargetConfig_$4511_storage_$","typeString":"mapping(address => struct AccessManager.TargetConfig storage ref)"}},"id":5315,"indexExpression":{"id":5314,"name":"target","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5306,"src":"15775:6:15","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"15766:16:15","typeDescriptions":{"typeIdentifier":"t_struct$_TargetConfig_$4511_storage","typeString":"struct AccessManager.TargetConfig storage ref"}},"id":5316,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"15783:12:15","memberName":"allowedRoles","nodeType":"MemberAccess","referencedDeclaration":4505,"src":"15766:29:15","typeDescriptions":{"typeIdentifier":"t_mapping$_t_bytes4_$_t_uint64_$","typeString":"mapping(bytes4 => uint64)"}},"id":5318,"indexExpression":{"id":5317,"name":"selector","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5308,"src":"15796:8:15","typeDescriptions":{"typeIdentifier":"t_bytes4","typeString":"bytes4"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"nodeType":"IndexAccess","src":"15766:39:15","typeDescriptions":{"typeIdentifier":"t_uint64","typeString":"uint64"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"id":5319,"name":"roleId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5310,"src":"15808:6:15","typeDescriptions":{"typeIdentifier":"t_uint64","typeString":"uint64"}},"src":"15766:48:15","typeDescriptions":{"typeIdentifier":"t_uint64","typeString":"uint64"}},"id":5321,"nodeType":"ExpressionStatement","src":"15766:48:15"},{"eventCall":{"arguments":[{"id":5323,"name":"target","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5306,"src":"15855:6:15","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":5324,"name":"selector","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5308,"src":"15863:8:15","typeDescriptions":{"typeIdentifier":"t_bytes4","typeString":"bytes4"}},{"id":5325,"name":"roleId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5310,"src":"15873:6:15","typeDescriptions":{"typeIdentifier":"t_uint64","typeString":"uint64"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_bytes4","typeString":"bytes4"},{"typeIdentifier":"t_uint64","typeString":"uint64"}],"id":5322,"name":"TargetFunctionRoleUpdated","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6509,"src":"15829:25:15","typeDescriptions":{"typeIdentifier":"t_function_event_nonpayable$_t_address_$_t_bytes4_$_t_uint64_$returns$__$","typeString":"function (address,bytes4,uint64)"}},"id":5326,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"15829:51:15","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":5327,"nodeType":"EmitStatement","src":"15824:56:15"}]},"documentation":{"id":5304,"nodeType":"StructuredDocumentation","src":"15506:148:15","text":" @dev Internal version of {setTargetFunctionRole} without access control.\n Emits a {TargetFunctionRoleUpdated} event."},"id":5329,"implemented":true,"kind":"function","modifiers":[],"name":"_setTargetFunctionRole","nameLocation":"15668:22:15","nodeType":"FunctionDefinition","parameters":{"id":5311,"nodeType":"ParameterList","parameters":[{"constant":false,"id":5306,"mutability":"mutable","name":"target","nameLocation":"15699:6:15","nodeType":"VariableDeclaration","scope":5329,"src":"15691:14:15","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":5305,"name":"address","nodeType":"ElementaryTypeName","src":"15691:7:15","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":5308,"mutability":"mutable","name":"selector","nameLocation":"15714:8:15","nodeType":"VariableDeclaration","scope":5329,"src":"15707:15:15","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes4","typeString":"bytes4"},"typeName":{"id":5307,"name":"bytes4","nodeType":"ElementaryTypeName","src":"15707:6:15","typeDescriptions":{"typeIdentifier":"t_bytes4","typeString":"bytes4"}},"visibility":"internal"},{"constant":false,"id":5310,"mutability":"mutable","name":"roleId","nameLocation":"15731:6:15","nodeType":"VariableDeclaration","scope":5329,"src":"15724:13:15","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint64","typeString":"uint64"},"typeName":{"id":5309,"name":"uint64","nodeType":"ElementaryTypeName","src":"15724:6:15","typeDescriptions":{"typeIdentifier":"t_uint64","typeString":"uint64"}},"visibility":"internal"}],"src":"15690:48:15"},"returnParameters":{"id":5312,"nodeType":"ParameterList","parameters":[],"src":"15756:0:15"},"scope":6372,"src":"15659:228:15","stateMutability":"nonpayable","virtual":true,"visibility":"internal"},{"baseFunctions":[6753],"body":{"id":5344,"nodeType":"Block","src":"16020:55:15","statements":[{"expression":{"arguments":[{"id":5340,"name":"target","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5332,"src":"16051:6:15","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":5341,"name":"newDelay","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5334,"src":"16059:8:15","typeDescriptions":{"typeIdentifier":"t_uint32","typeString":"uint32"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint32","typeString":"uint32"}],"id":5339,"name":"_setTargetAdminDelay","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5380,"src":"16030:20:15","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_address_$_t_uint32_$returns$__$","typeString":"function (address,uint32)"}},"id":5342,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"16030:38:15","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":5343,"nodeType":"ExpressionStatement","src":"16030:38:15"}]},"documentation":{"id":5330,"nodeType":"StructuredDocumentation","src":"15893:30:15","text":"@inheritdoc IAccessManager"},"functionSelector":"d22b5989","id":5345,"implemented":true,"kind":"function","modifiers":[{"id":5337,"kind":"modifierInvocation","modifierName":{"id":5336,"name":"onlyAuthorized","nameLocations":["16005:14:15"],"nodeType":"IdentifierPath","referencedDeclaration":4576,"src":"16005:14:15"},"nodeType":"ModifierInvocation","src":"16005:14:15"}],"name":"setTargetAdminDelay","nameLocation":"15937:19:15","nodeType":"FunctionDefinition","parameters":{"id":5335,"nodeType":"ParameterList","parameters":[{"constant":false,"id":5332,"mutability":"mutable","name":"target","nameLocation":"15965:6:15","nodeType":"VariableDeclaration","scope":5345,"src":"15957:14:15","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":5331,"name":"address","nodeType":"ElementaryTypeName","src":"15957:7:15","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":5334,"mutability":"mutable","name":"newDelay","nameLocation":"15980:8:15","nodeType":"VariableDeclaration","scope":5345,"src":"15973:15:15","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint32","typeString":"uint32"},"typeName":{"id":5333,"name":"uint32","nodeType":"ElementaryTypeName","src":"15973:6:15","typeDescriptions":{"typeIdentifier":"t_uint32","typeString":"uint32"}},"visibility":"internal"}],"src":"15956:33:15"},"returnParameters":{"id":5338,"nodeType":"ParameterList","parameters":[],"src":"16020:0:15"},"scope":6372,"src":"15928:147:15","stateMutability":"nonpayable","virtual":true,"visibility":"public"},{"body":{"id":5379,"nodeType":"Block","src":"16310:207:15","statements":[{"assignments":[5354],"declarations":[{"constant":false,"id":5354,"mutability":"mutable","name":"effect","nameLocation":"16327:6:15","nodeType":"VariableDeclaration","scope":5379,"src":"16320:13:15","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint48","typeString":"uint48"},"typeName":{"id":5353,"name":"uint48","nodeType":"ElementaryTypeName","src":"16320:6:15","typeDescriptions":{"typeIdentifier":"t_uint48","typeString":"uint48"}},"visibility":"internal"}],"id":5355,"nodeType":"VariableDeclarationStatement","src":"16320:13:15"},{"expression":{"id":5371,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"components":[{"expression":{"baseExpression":{"id":5356,"name":"_targets","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4556,"src":"16344:8:15","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_struct$_TargetConfig_$4511_storage_$","typeString":"mapping(address => struct AccessManager.TargetConfig storage ref)"}},"id":5358,"indexExpression":{"id":5357,"name":"target","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5348,"src":"16353:6:15","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"16344:16:15","typeDescriptions":{"typeIdentifier":"t_struct$_TargetConfig_$4511_storage","typeString":"struct AccessManager.TargetConfig storage ref"}},"id":5359,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"memberLocation":"16361:10:15","memberName":"adminDelay","nodeType":"MemberAccess","referencedDeclaration":4508,"src":"16344:27:15","typeDescriptions":{"typeIdentifier":"t_userDefinedValueType$_Delay_$14528","typeString":"Time.Delay"}},{"id":5360,"name":"effect","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5354,"src":"16373:6:15","typeDescriptions":{"typeIdentifier":"t_uint48","typeString":"uint48"}}],"id":5361,"isConstant":false,"isInlineArray":false,"isLValue":true,"isPure":false,"lValueRequested":true,"nodeType":"TupleExpression","src":"16343:37:15","typeDescriptions":{"typeIdentifier":"t_tuple$_t_userDefinedValueType$_Delay_$14528_$_t_uint48_$","typeString":"tuple(Time.Delay,uint48)"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"arguments":[{"id":5367,"name":"newDelay","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5350,"src":"16422:8:15","typeDescriptions":{"typeIdentifier":"t_uint32","typeString":"uint32"}},{"arguments":[],"expression":{"argumentTypes":[],"id":5368,"name":"minSetback","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4689,"src":"16432:10:15","typeDescriptions":{"typeIdentifier":"t_function_internal_view$__$returns$_t_uint32_$","typeString":"function () view returns (uint32)"}},"id":5369,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"16432:12:15","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint32","typeString":"uint32"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint32","typeString":"uint32"},{"typeIdentifier":"t_uint32","typeString":"uint32"}],"expression":{"expression":{"baseExpression":{"id":5362,"name":"_targets","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4556,"src":"16383:8:15","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_struct$_TargetConfig_$4511_storage_$","typeString":"mapping(address => struct AccessManager.TargetConfig storage ref)"}},"id":5364,"indexExpression":{"id":5363,"name":"target","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5348,"src":"16392:6:15","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"16383:16:15","typeDescriptions":{"typeIdentifier":"t_struct$_TargetConfig_$4511_storage","typeString":"struct AccessManager.TargetConfig storage ref"}},"id":5365,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"16400:10:15","memberName":"adminDelay","nodeType":"MemberAccess","referencedDeclaration":4508,"src":"16383:27:15","typeDescriptions":{"typeIdentifier":"t_userDefinedValueType$_Delay_$14528","typeString":"Time.Delay"}},"id":5366,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"16411:10:15","memberName":"withUpdate","nodeType":"MemberAccess","referencedDeclaration":14675,"src":"16383:38:15","typeDescriptions":{"typeIdentifier":"t_function_internal_view$_t_userDefinedValueType$_Delay_$14528_$_t_uint32_$_t_uint32_$returns$_t_userDefinedValueType$_Delay_$14528_$_t_uint48_$attached_to$_t_userDefinedValueType$_Delay_$14528_$","typeString":"function (Time.Delay,uint32,uint32) view returns (Time.Delay,uint48)"}},"id":5370,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"16383:62:15","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$_t_userDefinedValueType$_Delay_$14528_$_t_uint48_$","typeString":"tuple(Time.Delay,uint48)"}},"src":"16343:102:15","typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":5372,"nodeType":"ExpressionStatement","src":"16343:102:15"},{"eventCall":{"arguments":[{"id":5374,"name":"target","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5348,"src":"16485:6:15","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":5375,"name":"newDelay","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5350,"src":"16493:8:15","typeDescriptions":{"typeIdentifier":"t_uint32","typeString":"uint32"}},{"id":5376,"name":"effect","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5354,"src":"16503:6:15","typeDescriptions":{"typeIdentifier":"t_uint48","typeString":"uint48"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint32","typeString":"uint32"},{"typeIdentifier":"t_uint48","typeString":"uint48"}],"id":5373,"name":"TargetAdminDelayUpdated","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6518,"src":"16461:23:15","typeDescriptions":{"typeIdentifier":"t_function_event_nonpayable$_t_address_$_t_uint32_$_t_uint48_$returns$__$","typeString":"function (address,uint32,uint48)"}},"id":5377,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"16461:49:15","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":5378,"nodeType":"EmitStatement","src":"16456:54:15"}]},"documentation":{"id":5346,"nodeType":"StructuredDocumentation","src":"16081:144:15","text":" @dev Internal version of {setTargetAdminDelay} without access control.\n Emits a {TargetAdminDelayUpdated} event."},"id":5380,"implemented":true,"kind":"function","modifiers":[],"name":"_setTargetAdminDelay","nameLocation":"16239:20:15","nodeType":"FunctionDefinition","parameters":{"id":5351,"nodeType":"ParameterList","parameters":[{"constant":false,"id":5348,"mutability":"mutable","name":"target","nameLocation":"16268:6:15","nodeType":"VariableDeclaration","scope":5380,"src":"16260:14:15","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":5347,"name":"address","nodeType":"ElementaryTypeName","src":"16260:7:15","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":5350,"mutability":"mutable","name":"newDelay","nameLocation":"16283:8:15","nodeType":"VariableDeclaration","scope":5380,"src":"16276:15:15","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint32","typeString":"uint32"},"typeName":{"id":5349,"name":"uint32","nodeType":"ElementaryTypeName","src":"16276:6:15","typeDescriptions":{"typeIdentifier":"t_uint32","typeString":"uint32"}},"visibility":"internal"}],"src":"16259:33:15"},"returnParameters":{"id":5352,"nodeType":"ParameterList","parameters":[],"src":"16310:0:15"},"scope":6372,"src":"16230:287:15","stateMutability":"nonpayable","virtual":true,"visibility":"internal"},{"baseFunctions":[6761],"body":{"id":5395,"nodeType":"Block","src":"16762:49:15","statements":[{"expression":{"arguments":[{"id":5391,"name":"target","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5383,"src":"16789:6:15","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":5392,"name":"closed","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5385,"src":"16797:6:15","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_bool","typeString":"bool"}],"id":5390,"name":"_setTargetClosed","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5417,"src":"16772:16:15","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_address_$_t_bool_$returns$__$","typeString":"function (address,bool)"}},"id":5393,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"16772:32:15","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":5394,"nodeType":"ExpressionStatement","src":"16772:32:15"}]},"documentation":{"id":5381,"nodeType":"StructuredDocumentation","src":"16643:30:15","text":"@inheritdoc IAccessManager"},"functionSelector":"167bd395","id":5396,"implemented":true,"kind":"function","modifiers":[{"id":5388,"kind":"modifierInvocation","modifierName":{"id":5387,"name":"onlyAuthorized","nameLocations":["16747:14:15"],"nodeType":"IdentifierPath","referencedDeclaration":4576,"src":"16747:14:15"},"nodeType":"ModifierInvocation","src":"16747:14:15"}],"name":"setTargetClosed","nameLocation":"16687:15:15","nodeType":"FunctionDefinition","parameters":{"id":5386,"nodeType":"ParameterList","parameters":[{"constant":false,"id":5383,"mutability":"mutable","name":"target","nameLocation":"16711:6:15","nodeType":"VariableDeclaration","scope":5396,"src":"16703:14:15","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":5382,"name":"address","nodeType":"ElementaryTypeName","src":"16703:7:15","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":5385,"mutability":"mutable","name":"closed","nameLocation":"16724:6:15","nodeType":"VariableDeclaration","scope":5396,"src":"16719:11:15","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":5384,"name":"bool","nodeType":"ElementaryTypeName","src":"16719:4:15","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"}],"src":"16702:29:15"},"returnParameters":{"id":5389,"nodeType":"ParameterList","parameters":[],"src":"16762:0:15"},"scope":6372,"src":"16678:133:15","stateMutability":"nonpayable","virtual":true,"visibility":"public"},{"body":{"id":5416,"nodeType":"Block","src":"17053:92:15","statements":[{"expression":{"id":5409,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"expression":{"baseExpression":{"id":5404,"name":"_targets","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4556,"src":"17063:8:15","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_struct$_TargetConfig_$4511_storage_$","typeString":"mapping(address => struct AccessManager.TargetConfig storage ref)"}},"id":5406,"indexExpression":{"id":5405,"name":"target","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5399,"src":"17072:6:15","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"17063:16:15","typeDescriptions":{"typeIdentifier":"t_struct$_TargetConfig_$4511_storage","typeString":"struct AccessManager.TargetConfig storage ref"}},"id":5407,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"memberLocation":"17080:6:15","memberName":"closed","nodeType":"MemberAccess","referencedDeclaration":4510,"src":"17063:23:15","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"id":5408,"name":"closed","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5401,"src":"17089:6:15","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"src":"17063:32:15","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":5410,"nodeType":"ExpressionStatement","src":"17063:32:15"},{"eventCall":{"arguments":[{"id":5412,"name":"target","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5399,"src":"17123:6:15","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":5413,"name":"closed","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5401,"src":"17131:6:15","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_bool","typeString":"bool"}],"id":5411,"name":"TargetClosed","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6500,"src":"17110:12:15","typeDescriptions":{"typeIdentifier":"t_function_event_nonpayable$_t_address_$_t_bool_$returns$__$","typeString":"function (address,bool)"}},"id":5414,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"17110:28:15","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":5415,"nodeType":"EmitStatement","src":"17105:33:15"}]},"documentation":{"id":5397,"nodeType":"StructuredDocumentation","src":"16817:159:15","text":" @dev Set the closed flag for a contract. This is an internal setter with no access restrictions.\n Emits a {TargetClosed} event."},"id":5417,"implemented":true,"kind":"function","modifiers":[],"name":"_setTargetClosed","nameLocation":"16990:16:15","nodeType":"FunctionDefinition","parameters":{"id":5402,"nodeType":"ParameterList","parameters":[{"constant":false,"id":5399,"mutability":"mutable","name":"target","nameLocation":"17015:6:15","nodeType":"VariableDeclaration","scope":5417,"src":"17007:14:15","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":5398,"name":"address","nodeType":"ElementaryTypeName","src":"17007:7:15","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":5401,"mutability":"mutable","name":"closed","nameLocation":"17028:6:15","nodeType":"VariableDeclaration","scope":5417,"src":"17023:11:15","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":5400,"name":"bool","nodeType":"ElementaryTypeName","src":"17023:4:15","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"}],"src":"17006:29:15"},"returnParameters":{"id":5403,"nodeType":"ParameterList","parameters":[],"src":"17053:0:15"},"scope":6372,"src":"16981:164:15","stateMutability":"nonpayable","virtual":true,"visibility":"internal"},{"baseFunctions":[6769],"body":{"id":5439,"nodeType":"Block","src":"17376:114:15","statements":[{"assignments":[5426],"declarations":[{"constant":false,"id":5426,"mutability":"mutable","name":"timepoint","nameLocation":"17393:9:15","nodeType":"VariableDeclaration","scope":5439,"src":"17386:16:15","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint48","typeString":"uint48"},"typeName":{"id":5425,"name":"uint48","nodeType":"ElementaryTypeName","src":"17386:6:15","typeDescriptions":{"typeIdentifier":"t_uint48","typeString":"uint48"}},"visibility":"internal"}],"id":5431,"initialValue":{"expression":{"baseExpression":{"id":5427,"name":"_schedules","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4566,"src":"17405:10:15","typeDescriptions":{"typeIdentifier":"t_mapping$_t_bytes32_$_t_struct$_Schedule_$4535_storage_$","typeString":"mapping(bytes32 => struct AccessManager.Schedule storage ref)"}},"id":5429,"indexExpression":{"id":5428,"name":"id","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5420,"src":"17416:2:15","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"17405:14:15","typeDescriptions":{"typeIdentifier":"t_struct$_Schedule_$4535_storage","typeString":"struct AccessManager.Schedule storage ref"}},"id":5430,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"17420:9:15","memberName":"timepoint","nodeType":"MemberAccess","referencedDeclaration":4532,"src":"17405:24:15","typeDescriptions":{"typeIdentifier":"t_uint48","typeString":"uint48"}},"nodeType":"VariableDeclarationStatement","src":"17386:43:15"},{"expression":{"condition":{"arguments":[{"id":5433,"name":"timepoint","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5426,"src":"17457:9:15","typeDescriptions":{"typeIdentifier":"t_uint48","typeString":"uint48"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint48","typeString":"uint48"}],"id":5432,"name":"_isExpired","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6328,"src":"17446:10:15","typeDescriptions":{"typeIdentifier":"t_function_internal_view$_t_uint48_$returns$_t_bool_$","typeString":"function (uint48) view returns (bool)"}},"id":5434,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"17446:21:15","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"falseExpression":{"id":5436,"name":"timepoint","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5426,"src":"17474:9:15","typeDescriptions":{"typeIdentifier":"t_uint48","typeString":"uint48"}},"id":5437,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"Conditional","src":"17446:37:15","trueExpression":{"hexValue":"30","id":5435,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"17470:1:15","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"typeDescriptions":{"typeIdentifier":"t_uint48","typeString":"uint48"}},"functionReturnParameters":5424,"id":5438,"nodeType":"Return","src":"17439:44:15"}]},"documentation":{"id":5418,"nodeType":"StructuredDocumentation","src":"17271:30:15","text":"@inheritdoc IAccessManager"},"functionSelector":"3adc277a","id":5440,"implemented":true,"kind":"function","modifiers":[],"name":"getSchedule","nameLocation":"17315:11:15","nodeType":"FunctionDefinition","parameters":{"id":5421,"nodeType":"ParameterList","parameters":[{"constant":false,"id":5420,"mutability":"mutable","name":"id","nameLocation":"17335:2:15","nodeType":"VariableDeclaration","scope":5440,"src":"17327:10:15","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":5419,"name":"bytes32","nodeType":"ElementaryTypeName","src":"17327:7:15","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"}],"src":"17326:12:15"},"returnParameters":{"id":5424,"nodeType":"ParameterList","parameters":[{"constant":false,"id":5423,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":5440,"src":"17368:6:15","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint48","typeString":"uint48"},"typeName":{"id":5422,"name":"uint48","nodeType":"ElementaryTypeName","src":"17368:6:15","typeDescriptions":{"typeIdentifier":"t_uint48","typeString":"uint48"}},"visibility":"internal"}],"src":"17367:8:15"},"scope":6372,"src":"17306:184:15","stateMutability":"view","virtual":true,"visibility":"public"},{"baseFunctions":[6777],"body":{"id":5453,"nodeType":"Block","src":"17598:44:15","statements":[{"expression":{"expression":{"baseExpression":{"id":5448,"name":"_schedules","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4566,"src":"17615:10:15","typeDescriptions":{"typeIdentifier":"t_mapping$_t_bytes32_$_t_struct$_Schedule_$4535_storage_$","typeString":"mapping(bytes32 => struct AccessManager.Schedule storage ref)"}},"id":5450,"indexExpression":{"id":5449,"name":"id","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5443,"src":"17626:2:15","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"17615:14:15","typeDescriptions":{"typeIdentifier":"t_struct$_Schedule_$4535_storage","typeString":"struct AccessManager.Schedule storage ref"}},"id":5451,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"17630:5:15","memberName":"nonce","nodeType":"MemberAccess","referencedDeclaration":4534,"src":"17615:20:15","typeDescriptions":{"typeIdentifier":"t_uint32","typeString":"uint32"}},"functionReturnParameters":5447,"id":5452,"nodeType":"Return","src":"17608:27:15"}]},"documentation":{"id":5441,"nodeType":"StructuredDocumentation","src":"17496:30:15","text":"@inheritdoc IAccessManager"},"functionSelector":"4136a33c","id":5454,"implemented":true,"kind":"function","modifiers":[],"name":"getNonce","nameLocation":"17540:8:15","nodeType":"FunctionDefinition","parameters":{"id":5444,"nodeType":"ParameterList","parameters":[{"constant":false,"id":5443,"mutability":"mutable","name":"id","nameLocation":"17557:2:15","nodeType":"VariableDeclaration","scope":5454,"src":"17549:10:15","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":5442,"name":"bytes32","nodeType":"ElementaryTypeName","src":"17549:7:15","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"}],"src":"17548:12:15"},"returnParameters":{"id":5447,"nodeType":"ParameterList","parameters":[{"constant":false,"id":5446,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":5454,"src":"17590:6:15","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint32","typeString":"uint32"},"typeName":{"id":5445,"name":"uint32","nodeType":"ElementaryTypeName","src":"17590:6:15","typeDescriptions":{"typeIdentifier":"t_uint32","typeString":"uint32"}},"visibility":"internal"}],"src":"17589:8:15"},"scope":6372,"src":"17531:111:15","stateMutability":"view","virtual":true,"visibility":"public"},{"baseFunctions":[6791],"body":{"id":5567,"nodeType":"Block","src":"17840:1216:15","statements":[{"assignments":[5469],"declarations":[{"constant":false,"id":5469,"mutability":"mutable","name":"caller","nameLocation":"17858:6:15","nodeType":"VariableDeclaration","scope":5567,"src":"17850:14:15","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":5468,"name":"address","nodeType":"ElementaryTypeName","src":"17850:7:15","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"id":5472,"initialValue":{"arguments":[],"expression":{"argumentTypes":[],"id":5470,"name":"_msgSender","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10268,"src":"17867:10:15","typeDescriptions":{"typeIdentifier":"t_function_internal_view$__$returns$_t_address_$","typeString":"function () view returns (address)"}},"id":5471,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"17867:12:15","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"VariableDeclarationStatement","src":"17850:29:15"},{"assignments":[null,5474],"declarations":[null,{"constant":false,"id":5474,"mutability":"mutable","name":"setback","nameLocation":"17980:7:15","nodeType":"VariableDeclaration","scope":5567,"src":"17973:14:15","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint32","typeString":"uint32"},"typeName":{"id":5473,"name":"uint32","nodeType":"ElementaryTypeName","src":"17973:6:15","typeDescriptions":{"typeIdentifier":"t_uint32","typeString":"uint32"}},"visibility":"internal"}],"id":5480,"initialValue":{"arguments":[{"id":5476,"name":"caller","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5469,"src":"18008:6:15","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":5477,"name":"target","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5457,"src":"18016:6:15","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":5478,"name":"data","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5459,"src":"18024:4:15","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":5475,"name":"_canCallExtended","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6190,"src":"17991:16:15","typeDescriptions":{"typeIdentifier":"t_function_internal_view$_t_address_$_t_address_$_t_bytes_calldata_ptr_$returns$_t_bool_$_t_uint32_$","typeString":"function (address,address,bytes calldata) view returns (bool,uint32)"}},"id":5479,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"17991:38:15","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$_t_bool_$_t_uint32_$","typeString":"tuple(bool,uint32)"}},"nodeType":"VariableDeclarationStatement","src":"17970:59:15"},{"assignments":[5482],"declarations":[{"constant":false,"id":5482,"mutability":"mutable","name":"minWhen","nameLocation":"18047:7:15","nodeType":"VariableDeclaration","scope":5567,"src":"18040:14:15","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint48","typeString":"uint48"},"typeName":{"id":5481,"name":"uint48","nodeType":"ElementaryTypeName","src":"18040:6:15","typeDescriptions":{"typeIdentifier":"t_uint48","typeString":"uint48"}},"visibility":"internal"}],"id":5488,"initialValue":{"commonType":{"typeIdentifier":"t_uint48","typeString":"uint48"},"id":5487,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"arguments":[],"expression":{"argumentTypes":[],"expression":{"id":5483,"name":"Time","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":14765,"src":"18057:4:15","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_Time_$14765_$","typeString":"type(library Time)"}},"id":5484,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"18062:9:15","memberName":"timestamp","nodeType":"MemberAccess","referencedDeclaration":14513,"src":"18057:14:15","typeDescriptions":{"typeIdentifier":"t_function_internal_view$__$returns$_t_uint48_$","typeString":"function () view returns (uint48)"}},"id":5485,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"18057:16:15","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint48","typeString":"uint48"}},"nodeType":"BinaryOperation","operator":"+","rightExpression":{"id":5486,"name":"setback","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5474,"src":"18076:7:15","typeDescriptions":{"typeIdentifier":"t_uint32","typeString":"uint32"}},"src":"18057:26:15","typeDescriptions":{"typeIdentifier":"t_uint48","typeString":"uint48"}},"nodeType":"VariableDeclarationStatement","src":"18040:43:15"},{"condition":{"commonType":{"typeIdentifier":"t_bool","typeString":"bool"},"id":5500,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"commonType":{"typeIdentifier":"t_uint32","typeString":"uint32"},"id":5491,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":5489,"name":"setback","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5474,"src":"18190:7:15","typeDescriptions":{"typeIdentifier":"t_uint32","typeString":"uint32"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"hexValue":"30","id":5490,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"18201:1:15","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"18190:12:15","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"nodeType":"BinaryOperation","operator":"||","rightExpression":{"components":[{"commonType":{"typeIdentifier":"t_bool","typeString":"bool"},"id":5498,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"commonType":{"typeIdentifier":"t_uint48","typeString":"uint48"},"id":5494,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":5492,"name":"when","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5461,"src":"18207:4:15","typeDescriptions":{"typeIdentifier":"t_uint48","typeString":"uint48"}},"nodeType":"BinaryOperation","operator":">","rightExpression":{"hexValue":"30","id":5493,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"18214:1:15","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"18207:8:15","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"nodeType":"BinaryOperation","operator":"&&","rightExpression":{"commonType":{"typeIdentifier":"t_uint48","typeString":"uint48"},"id":5497,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":5495,"name":"when","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5461,"src":"18219:4:15","typeDescriptions":{"typeIdentifier":"t_uint48","typeString":"uint48"}},"nodeType":"BinaryOperation","operator":"<","rightExpression":{"id":5496,"name":"minWhen","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5482,"src":"18226:7:15","typeDescriptions":{"typeIdentifier":"t_uint48","typeString":"uint48"}},"src":"18219:14:15","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"src":"18207:26:15","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}}],"id":5499,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"18206:28:15","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"src":"18190:44:15","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":5510,"nodeType":"IfStatement","src":"18186:149:15","trueBody":{"id":5509,"nodeType":"Block","src":"18236:99:15","statements":[{"errorCall":{"arguments":[{"id":5502,"name":"caller","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5469,"src":"18287:6:15","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":5503,"name":"target","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5457,"src":"18295:6:15","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"arguments":[{"id":5505,"name":"data","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5459,"src":"18318:4:15","typeDescriptions":{"typeIdentifier":"t_bytes_calldata_ptr","typeString":"bytes calldata"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes_calldata_ptr","typeString":"bytes calldata"}],"id":5504,"name":"_checkSelector","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6345,"src":"18303:14:15","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_bytes_calldata_ptr_$returns$_t_bytes4_$","typeString":"function (bytes calldata) pure returns (bytes4)"}},"id":5506,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"18303:20:15","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes4","typeString":"bytes4"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_bytes4","typeString":"bytes4"}],"id":5501,"name":"AccessManagerUnauthorizedCall","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6554,"src":"18257:29:15","typeDescriptions":{"typeIdentifier":"t_function_error_pure$_t_address_$_t_address_$_t_bytes4_$returns$_t_error_$","typeString":"function (address,address,bytes4) pure returns (error)"}},"id":5507,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"18257:67:15","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_error","typeString":"error"}},"id":5508,"nodeType":"RevertStatement","src":"18250:74:15"}]}},{"expression":{"id":5520,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":5511,"name":"when","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5461,"src":"18393:4:15","typeDescriptions":{"typeIdentifier":"t_uint48","typeString":"uint48"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"arguments":[{"arguments":[{"id":5516,"name":"when","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5461,"src":"18416:4:15","typeDescriptions":{"typeIdentifier":"t_uint48","typeString":"uint48"}},{"id":5517,"name":"minWhen","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5482,"src":"18422:7:15","typeDescriptions":{"typeIdentifier":"t_uint48","typeString":"uint48"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint48","typeString":"uint48"},{"typeIdentifier":"t_uint48","typeString":"uint48"}],"expression":{"id":5514,"name":"Math","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":12726,"src":"18407:4:15","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_Math_$12726_$","typeString":"type(library Math)"}},"id":5515,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"18412:3:15","memberName":"max","nodeType":"MemberAccess","referencedDeclaration":11392,"src":"18407:8:15","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_uint256_$_t_uint256_$returns$_t_uint256_$","typeString":"function (uint256,uint256) pure returns (uint256)"}},"id":5518,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"18407:23:15","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":5513,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"18400:6:15","typeDescriptions":{"typeIdentifier":"t_type$_t_uint48_$","typeString":"type(uint48)"},"typeName":{"id":5512,"name":"uint48","nodeType":"ElementaryTypeName","src":"18400:6:15","typeDescriptions":{}}},"id":5519,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"18400:31:15","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint48","typeString":"uint48"}},"src":"18393:38:15","typeDescriptions":{"typeIdentifier":"t_uint48","typeString":"uint48"}},"id":5521,"nodeType":"ExpressionStatement","src":"18393:38:15"},{"expression":{"id":5528,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":5522,"name":"operationId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5464,"src":"18537:11:15","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"arguments":[{"id":5524,"name":"caller","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5469,"src":"18565:6:15","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":5525,"name":"target","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5457,"src":"18573:6:15","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":5526,"name":"data","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5459,"src":"18581:4:15","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":5523,"name":"hashOperation","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5920,"src":"18551:13:15","typeDescriptions":{"typeIdentifier":"t_function_internal_view$_t_address_$_t_address_$_t_bytes_calldata_ptr_$returns$_t_bytes32_$","typeString":"function (address,address,bytes calldata) view returns (bytes32)"}},"id":5527,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"18551:35:15","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"src":"18537:49:15","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"id":5529,"nodeType":"ExpressionStatement","src":"18537:49:15"},{"expression":{"arguments":[{"id":5531,"name":"operationId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5464,"src":"18616:11:15","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes32","typeString":"bytes32"}],"id":5530,"name":"_checkNotScheduled","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5596,"src":"18597:18:15","typeDescriptions":{"typeIdentifier":"t_function_internal_view$_t_bytes32_$returns$__$","typeString":"function (bytes32) view"}},"id":5532,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"18597:31:15","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":5533,"nodeType":"ExpressionStatement","src":"18597:31:15"},{"id":5543,"nodeType":"UncheckedBlock","src":"18639:155:15","statements":[{"expression":{"id":5541,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":5534,"name":"nonce","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5466,"src":"18742:5:15","typeDescriptions":{"typeIdentifier":"t_uint32","typeString":"uint32"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"commonType":{"typeIdentifier":"t_uint32","typeString":"uint32"},"id":5540,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"expression":{"baseExpression":{"id":5535,"name":"_schedules","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4566,"src":"18750:10:15","typeDescriptions":{"typeIdentifier":"t_mapping$_t_bytes32_$_t_struct$_Schedule_$4535_storage_$","typeString":"mapping(bytes32 => struct AccessManager.Schedule storage ref)"}},"id":5537,"indexExpression":{"id":5536,"name":"operationId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5464,"src":"18761:11:15","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"18750:23:15","typeDescriptions":{"typeIdentifier":"t_struct$_Schedule_$4535_storage","typeString":"struct AccessManager.Schedule storage ref"}},"id":5538,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"18774:5:15","memberName":"nonce","nodeType":"MemberAccess","referencedDeclaration":4534,"src":"18750:29:15","typeDescriptions":{"typeIdentifier":"t_uint32","typeString":"uint32"}},"nodeType":"BinaryOperation","operator":"+","rightExpression":{"hexValue":"31","id":5539,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"18782:1:15","typeDescriptions":{"typeIdentifier":"t_rational_1_by_1","typeString":"int_const 1"},"value":"1"},"src":"18750:33:15","typeDescriptions":{"typeIdentifier":"t_uint32","typeString":"uint32"}},"src":"18742:41:15","typeDescriptions":{"typeIdentifier":"t_uint32","typeString":"uint32"}},"id":5542,"nodeType":"ExpressionStatement","src":"18742:41:15"}]},{"expression":{"id":5549,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"expression":{"baseExpression":{"id":5544,"name":"_schedules","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4566,"src":"18803:10:15","typeDescriptions":{"typeIdentifier":"t_mapping$_t_bytes32_$_t_struct$_Schedule_$4535_storage_$","typeString":"mapping(bytes32 => struct AccessManager.Schedule storage ref)"}},"id":5546,"indexExpression":{"id":5545,"name":"operationId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5464,"src":"18814:11:15","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"18803:23:15","typeDescriptions":{"typeIdentifier":"t_struct$_Schedule_$4535_storage","typeString":"struct AccessManager.Schedule storage ref"}},"id":5547,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"memberLocation":"18827:9:15","memberName":"timepoint","nodeType":"MemberAccess","referencedDeclaration":4532,"src":"18803:33:15","typeDescriptions":{"typeIdentifier":"t_uint48","typeString":"uint48"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"id":5548,"name":"when","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5461,"src":"18839:4:15","typeDescriptions":{"typeIdentifier":"t_uint48","typeString":"uint48"}},"src":"18803:40:15","typeDescriptions":{"typeIdentifier":"t_uint48","typeString":"uint48"}},"id":5550,"nodeType":"ExpressionStatement","src":"18803:40:15"},{"expression":{"id":5556,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"expression":{"baseExpression":{"id":5551,"name":"_schedules","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4566,"src":"18853:10:15","typeDescriptions":{"typeIdentifier":"t_mapping$_t_bytes32_$_t_struct$_Schedule_$4535_storage_$","typeString":"mapping(bytes32 => struct AccessManager.Schedule storage ref)"}},"id":5553,"indexExpression":{"id":5552,"name":"operationId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5464,"src":"18864:11:15","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"18853:23:15","typeDescriptions":{"typeIdentifier":"t_struct$_Schedule_$4535_storage","typeString":"struct AccessManager.Schedule storage ref"}},"id":5554,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"memberLocation":"18877:5:15","memberName":"nonce","nodeType":"MemberAccess","referencedDeclaration":4534,"src":"18853:29:15","typeDescriptions":{"typeIdentifier":"t_uint32","typeString":"uint32"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"id":5555,"name":"nonce","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5466,"src":"18885:5:15","typeDescriptions":{"typeIdentifier":"t_uint32","typeString":"uint32"}},"src":"18853:37:15","typeDescriptions":{"typeIdentifier":"t_uint32","typeString":"uint32"}},"id":5557,"nodeType":"ExpressionStatement","src":"18853:37:15"},{"eventCall":{"arguments":[{"id":5559,"name":"operationId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5464,"src":"18924:11:15","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},{"id":5560,"name":"nonce","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5466,"src":"18937:5:15","typeDescriptions":{"typeIdentifier":"t_uint32","typeString":"uint32"}},{"id":5561,"name":"when","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5461,"src":"18944:4:15","typeDescriptions":{"typeIdentifier":"t_uint48","typeString":"uint48"}},{"id":5562,"name":"caller","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5469,"src":"18950:6:15","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":5563,"name":"target","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5457,"src":"18958:6:15","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":5564,"name":"data","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5459,"src":"18966:4:15","typeDescriptions":{"typeIdentifier":"t_bytes_calldata_ptr","typeString":"bytes calldata"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes32","typeString":"bytes32"},{"typeIdentifier":"t_uint32","typeString":"uint32"},{"typeIdentifier":"t_uint48","typeString":"uint48"},{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_bytes_calldata_ptr","typeString":"bytes calldata"}],"id":5558,"name":"OperationScheduled","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6429,"src":"18905:18:15","typeDescriptions":{"typeIdentifier":"t_function_event_nonpayable$_t_bytes32_$_t_uint32_$_t_uint48_$_t_address_$_t_address_$_t_bytes_memory_ptr_$returns$__$","typeString":"function (bytes32,uint32,uint48,address,address,bytes memory)"}},"id":5565,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"18905:66:15","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":5566,"nodeType":"EmitStatement","src":"18900:71:15"}]},"documentation":{"id":5455,"nodeType":"StructuredDocumentation","src":"17648:30:15","text":"@inheritdoc IAccessManager"},"functionSelector":"f801a698","id":5568,"implemented":true,"kind":"function","modifiers":[],"name":"schedule","nameLocation":"17692:8:15","nodeType":"FunctionDefinition","parameters":{"id":5462,"nodeType":"ParameterList","parameters":[{"constant":false,"id":5457,"mutability":"mutable","name":"target","nameLocation":"17718:6:15","nodeType":"VariableDeclaration","scope":5568,"src":"17710:14:15","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":5456,"name":"address","nodeType":"ElementaryTypeName","src":"17710:7:15","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":5459,"mutability":"mutable","name":"data","nameLocation":"17749:4:15","nodeType":"VariableDeclaration","scope":5568,"src":"17734:19:15","stateVariable":false,"storageLocation":"calldata","typeDescriptions":{"typeIdentifier":"t_bytes_calldata_ptr","typeString":"bytes"},"typeName":{"id":5458,"name":"bytes","nodeType":"ElementaryTypeName","src":"17734:5:15","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"},{"constant":false,"id":5461,"mutability":"mutable","name":"when","nameLocation":"17770:4:15","nodeType":"VariableDeclaration","scope":5568,"src":"17763:11:15","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint48","typeString":"uint48"},"typeName":{"id":5460,"name":"uint48","nodeType":"ElementaryTypeName","src":"17763:6:15","typeDescriptions":{"typeIdentifier":"t_uint48","typeString":"uint48"}},"visibility":"internal"}],"src":"17700:80:15"},"returnParameters":{"id":5467,"nodeType":"ParameterList","parameters":[{"constant":false,"id":5464,"mutability":"mutable","name":"operationId","nameLocation":"17813:11:15","nodeType":"VariableDeclaration","scope":5568,"src":"17805:19:15","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":5463,"name":"bytes32","nodeType":"ElementaryTypeName","src":"17805:7:15","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"},{"constant":false,"id":5466,"mutability":"mutable","name":"nonce","nameLocation":"17833:5:15","nodeType":"VariableDeclaration","scope":5568,"src":"17826:12:15","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint32","typeString":"uint32"},"typeName":{"id":5465,"name":"uint32","nodeType":"ElementaryTypeName","src":"17826:6:15","typeDescriptions":{"typeIdentifier":"t_uint32","typeString":"uint32"}},"visibility":"internal"}],"src":"17804:35:15"},"scope":6372,"src":"17683:1373:15","stateMutability":"nonpayable","virtual":true,"visibility":"public"},{"body":{"id":5595,"nodeType":"Block","src":"19312:210:15","statements":[{"assignments":[5575],"declarations":[{"constant":false,"id":5575,"mutability":"mutable","name":"prevTimepoint","nameLocation":"19329:13:15","nodeType":"VariableDeclaration","scope":5595,"src":"19322:20:15","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint48","typeString":"uint48"},"typeName":{"id":5574,"name":"uint48","nodeType":"ElementaryTypeName","src":"19322:6:15","typeDescriptions":{"typeIdentifier":"t_uint48","typeString":"uint48"}},"visibility":"internal"}],"id":5580,"initialValue":{"expression":{"baseExpression":{"id":5576,"name":"_schedules","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4566,"src":"19345:10:15","typeDescriptions":{"typeIdentifier":"t_mapping$_t_bytes32_$_t_struct$_Schedule_$4535_storage_$","typeString":"mapping(bytes32 => struct AccessManager.Schedule storage ref)"}},"id":5578,"indexExpression":{"id":5577,"name":"operationId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5571,"src":"19356:11:15","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"19345:23:15","typeDescriptions":{"typeIdentifier":"t_struct$_Schedule_$4535_storage","typeString":"struct AccessManager.Schedule storage ref"}},"id":5579,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"19369:9:15","memberName":"timepoint","nodeType":"MemberAccess","referencedDeclaration":4532,"src":"19345:33:15","typeDescriptions":{"typeIdentifier":"t_uint48","typeString":"uint48"}},"nodeType":"VariableDeclarationStatement","src":"19322:56:15"},{"condition":{"commonType":{"typeIdentifier":"t_bool","typeString":"bool"},"id":5588,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"commonType":{"typeIdentifier":"t_uint48","typeString":"uint48"},"id":5583,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":5581,"name":"prevTimepoint","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5575,"src":"19392:13:15","typeDescriptions":{"typeIdentifier":"t_uint48","typeString":"uint48"}},"nodeType":"BinaryOperation","operator":"!=","rightExpression":{"hexValue":"30","id":5582,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"19409:1:15","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"19392:18:15","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"nodeType":"BinaryOperation","operator":"&&","rightExpression":{"id":5587,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"UnaryOperation","operator":"!","prefix":true,"src":"19414:26:15","subExpression":{"arguments":[{"id":5585,"name":"prevTimepoint","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5575,"src":"19426:13:15","typeDescriptions":{"typeIdentifier":"t_uint48","typeString":"uint48"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint48","typeString":"uint48"}],"id":5584,"name":"_isExpired","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6328,"src":"19415:10:15","typeDescriptions":{"typeIdentifier":"t_function_internal_view$_t_uint48_$returns$_t_bool_$","typeString":"function (uint48) view returns (bool)"}},"id":5586,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"19415:25:15","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"src":"19392:48:15","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":5594,"nodeType":"IfStatement","src":"19388:128:15","trueBody":{"id":5593,"nodeType":"Block","src":"19442:74:15","statements":[{"errorCall":{"arguments":[{"id":5590,"name":"operationId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5571,"src":"19493:11:15","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes32","typeString":"bytes32"}],"id":5589,"name":"AccessManagerAlreadyScheduled","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6522,"src":"19463:29:15","typeDescriptions":{"typeIdentifier":"t_function_error_pure$_t_bytes32_$returns$_t_error_$","typeString":"function (bytes32) pure returns (error)"}},"id":5591,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"19463:42:15","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_error","typeString":"error"}},"id":5592,"nodeType":"RevertStatement","src":"19456:49:15"}]}}]},"documentation":{"id":5569,"nodeType":"StructuredDocumentation","src":"19062:183:15","text":" @dev Reverts if the operation is currently scheduled and has not expired.\n NOTE: This function was introduced due to stack too deep errors in schedule."},"id":5596,"implemented":true,"kind":"function","modifiers":[],"name":"_checkNotScheduled","nameLocation":"19259:18:15","nodeType":"FunctionDefinition","parameters":{"id":5572,"nodeType":"ParameterList","parameters":[{"constant":false,"id":5571,"mutability":"mutable","name":"operationId","nameLocation":"19286:11:15","nodeType":"VariableDeclaration","scope":5596,"src":"19278:19:15","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":5570,"name":"bytes32","nodeType":"ElementaryTypeName","src":"19278:7:15","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"}],"src":"19277:21:15"},"returnParameters":{"id":5573,"nodeType":"ParameterList","parameters":[],"src":"19312:0:15"},"scope":6372,"src":"19250:272:15","stateMutability":"view","virtual":false,"visibility":"private"},{"baseFunctions":[6801],"body":{"id":5693,"nodeType":"Block","src":"19886:1144:15","statements":[{"assignments":[5607],"declarations":[{"constant":false,"id":5607,"mutability":"mutable","name":"caller","nameLocation":"19904:6:15","nodeType":"VariableDeclaration","scope":5693,"src":"19896:14:15","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":5606,"name":"address","nodeType":"ElementaryTypeName","src":"19896:7:15","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"id":5610,"initialValue":{"arguments":[],"expression":{"argumentTypes":[],"id":5608,"name":"_msgSender","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10268,"src":"19913:10:15","typeDescriptions":{"typeIdentifier":"t_function_internal_view$__$returns$_t_address_$","typeString":"function () view returns (address)"}},"id":5609,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"19913:12:15","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"VariableDeclarationStatement","src":"19896:29:15"},{"assignments":[5612,5614],"declarations":[{"constant":false,"id":5612,"mutability":"mutable","name":"immediate","nameLocation":"20022:9:15","nodeType":"VariableDeclaration","scope":5693,"src":"20017:14:15","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":5611,"name":"bool","nodeType":"ElementaryTypeName","src":"20017:4:15","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"},{"constant":false,"id":5614,"mutability":"mutable","name":"setback","nameLocation":"20040:7:15","nodeType":"VariableDeclaration","scope":5693,"src":"20033:14:15","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint32","typeString":"uint32"},"typeName":{"id":5613,"name":"uint32","nodeType":"ElementaryTypeName","src":"20033:6:15","typeDescriptions":{"typeIdentifier":"t_uint32","typeString":"uint32"}},"visibility":"internal"}],"id":5620,"initialValue":{"arguments":[{"id":5616,"name":"caller","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5607,"src":"20068:6:15","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":5617,"name":"target","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5599,"src":"20076:6:15","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":5618,"name":"data","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5601,"src":"20084:4:15","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":5615,"name":"_canCallExtended","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6190,"src":"20051:16:15","typeDescriptions":{"typeIdentifier":"t_function_internal_view$_t_address_$_t_address_$_t_bytes_calldata_ptr_$returns$_t_bool_$_t_uint32_$","typeString":"function (address,address,bytes calldata) view returns (bool,uint32)"}},"id":5619,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"20051:38:15","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$_t_bool_$_t_uint32_$","typeString":"tuple(bool,uint32)"}},"nodeType":"VariableDeclarationStatement","src":"20016:73:15"},{"condition":{"commonType":{"typeIdentifier":"t_bool","typeString":"bool"},"id":5626,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":5622,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"UnaryOperation","operator":"!","prefix":true,"src":"20149:10:15","subExpression":{"id":5621,"name":"immediate","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5612,"src":"20150:9:15","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"nodeType":"BinaryOperation","operator":"&&","rightExpression":{"commonType":{"typeIdentifier":"t_uint32","typeString":"uint32"},"id":5625,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":5623,"name":"setback","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5614,"src":"20163:7:15","typeDescriptions":{"typeIdentifier":"t_uint32","typeString":"uint32"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"hexValue":"30","id":5624,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"20174:1:15","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"20163:12:15","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"src":"20149:26:15","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":5636,"nodeType":"IfStatement","src":"20145:131:15","trueBody":{"id":5635,"nodeType":"Block","src":"20177:99:15","statements":[{"errorCall":{"arguments":[{"id":5628,"name":"caller","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5607,"src":"20228:6:15","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":5629,"name":"target","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5599,"src":"20236:6:15","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"arguments":[{"id":5631,"name":"data","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5601,"src":"20259:4:15","typeDescriptions":{"typeIdentifier":"t_bytes_calldata_ptr","typeString":"bytes calldata"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes_calldata_ptr","typeString":"bytes calldata"}],"id":5630,"name":"_checkSelector","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6345,"src":"20244:14:15","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_bytes_calldata_ptr_$returns$_t_bytes4_$","typeString":"function (bytes calldata) pure returns (bytes4)"}},"id":5632,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"20244:20:15","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes4","typeString":"bytes4"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_bytes4","typeString":"bytes4"}],"id":5627,"name":"AccessManagerUnauthorizedCall","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6554,"src":"20198:29:15","typeDescriptions":{"typeIdentifier":"t_function_error_pure$_t_address_$_t_address_$_t_bytes4_$returns$_t_error_$","typeString":"function (address,address,bytes4) pure returns (error)"}},"id":5633,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"20198:67:15","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_error","typeString":"error"}},"id":5634,"nodeType":"RevertStatement","src":"20191:74:15"}]}},{"assignments":[5638],"declarations":[{"constant":false,"id":5638,"mutability":"mutable","name":"operationId","nameLocation":"20294:11:15","nodeType":"VariableDeclaration","scope":5693,"src":"20286:19:15","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":5637,"name":"bytes32","nodeType":"ElementaryTypeName","src":"20286:7:15","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"}],"id":5644,"initialValue":{"arguments":[{"id":5640,"name":"caller","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5607,"src":"20322:6:15","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":5641,"name":"target","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5599,"src":"20330:6:15","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":5642,"name":"data","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5601,"src":"20338:4:15","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":5639,"name":"hashOperation","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5920,"src":"20308:13:15","typeDescriptions":{"typeIdentifier":"t_function_internal_view$_t_address_$_t_address_$_t_bytes_calldata_ptr_$returns$_t_bytes32_$","typeString":"function (address,address,bytes calldata) view returns (bytes32)"}},"id":5643,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"20308:35:15","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"nodeType":"VariableDeclarationStatement","src":"20286:57:15"},{"assignments":[5646],"declarations":[{"constant":false,"id":5646,"mutability":"mutable","name":"nonce","nameLocation":"20360:5:15","nodeType":"VariableDeclaration","scope":5693,"src":"20353:12:15","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint32","typeString":"uint32"},"typeName":{"id":5645,"name":"uint32","nodeType":"ElementaryTypeName","src":"20353:6:15","typeDescriptions":{"typeIdentifier":"t_uint32","typeString":"uint32"}},"visibility":"internal"}],"id":5647,"nodeType":"VariableDeclarationStatement","src":"20353:12:15"},{"condition":{"commonType":{"typeIdentifier":"t_bool","typeString":"bool"},"id":5656,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"commonType":{"typeIdentifier":"t_uint32","typeString":"uint32"},"id":5650,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":5648,"name":"setback","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5614,"src":"20545:7:15","typeDescriptions":{"typeIdentifier":"t_uint32","typeString":"uint32"}},"nodeType":"BinaryOperation","operator":"!=","rightExpression":{"hexValue":"30","id":5649,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"20556:1:15","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"20545:12:15","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"nodeType":"BinaryOperation","operator":"||","rightExpression":{"commonType":{"typeIdentifier":"t_uint48","typeString":"uint48"},"id":5655,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"arguments":[{"id":5652,"name":"operationId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5638,"src":"20573:11:15","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes32","typeString":"bytes32"}],"id":5651,"name":"getSchedule","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5440,"src":"20561:11:15","typeDescriptions":{"typeIdentifier":"t_function_internal_view$_t_bytes32_$returns$_t_uint48_$","typeString":"function (bytes32) view returns (uint48)"}},"id":5653,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"20561:24:15","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint48","typeString":"uint48"}},"nodeType":"BinaryOperation","operator":"!=","rightExpression":{"hexValue":"30","id":5654,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"20589:1:15","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"20561:29:15","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"src":"20545:45:15","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":5664,"nodeType":"IfStatement","src":"20541:116:15","trueBody":{"id":5663,"nodeType":"Block","src":"20592:65:15","statements":[{"expression":{"id":5661,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":5657,"name":"nonce","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5646,"src":"20606:5:15","typeDescriptions":{"typeIdentifier":"t_uint32","typeString":"uint32"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"arguments":[{"id":5659,"name":"operationId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5638,"src":"20634:11:15","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes32","typeString":"bytes32"}],"id":5658,"name":"_consumeScheduledOp","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5898,"src":"20614:19:15","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_bytes32_$returns$_t_uint32_$","typeString":"function (bytes32) returns (uint32)"}},"id":5660,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"20614:32:15","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint32","typeString":"uint32"}},"src":"20606:40:15","typeDescriptions":{"typeIdentifier":"t_uint32","typeString":"uint32"}},"id":5662,"nodeType":"ExpressionStatement","src":"20606:40:15"}]}},{"assignments":[5666],"declarations":[{"constant":false,"id":5666,"mutability":"mutable","name":"executionIdBefore","nameLocation":"20729:17:15","nodeType":"VariableDeclaration","scope":5693,"src":"20721:25:15","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":5665,"name":"bytes32","nodeType":"ElementaryTypeName","src":"20721:7:15","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"}],"id":5668,"initialValue":{"id":5667,"name":"_executionId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4568,"src":"20749:12:15","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"nodeType":"VariableDeclarationStatement","src":"20721:40:15"},{"expression":{"id":5676,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":5669,"name":"_executionId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4568,"src":"20771:12:15","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"arguments":[{"id":5671,"name":"target","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5599,"src":"20803:6:15","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"arguments":[{"id":5673,"name":"data","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5601,"src":"20826:4:15","typeDescriptions":{"typeIdentifier":"t_bytes_calldata_ptr","typeString":"bytes calldata"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes_calldata_ptr","typeString":"bytes calldata"}],"id":5672,"name":"_checkSelector","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6345,"src":"20811:14:15","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_bytes_calldata_ptr_$returns$_t_bytes4_$","typeString":"function (bytes calldata) pure returns (bytes4)"}},"id":5674,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"20811:20:15","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes4","typeString":"bytes4"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_bytes4","typeString":"bytes4"}],"id":5670,"name":"_hashExecutionId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6371,"src":"20786:16:15","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_address_$_t_bytes4_$returns$_t_bytes32_$","typeString":"function (address,bytes4) pure returns (bytes32)"}},"id":5675,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"20786:46:15","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"src":"20771:61:15","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"id":5677,"nodeType":"ExpressionStatement","src":"20771:61:15"},{"expression":{"arguments":[{"id":5681,"name":"target","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5599,"src":"20897:6:15","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":5682,"name":"data","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5601,"src":"20905:4:15","typeDescriptions":{"typeIdentifier":"t_bytes_calldata_ptr","typeString":"bytes calldata"}},{"expression":{"id":5683,"name":"msg","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-15,"src":"20911:3:15","typeDescriptions":{"typeIdentifier":"t_magic_message","typeString":"msg"}},"id":5684,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"20915:5:15","memberName":"value","nodeType":"MemberAccess","src":"20911:9:15","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_bytes_calldata_ptr","typeString":"bytes calldata"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"expression":{"id":5678,"name":"Address","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10256,"src":"20867:7:15","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_Address_$10256_$","typeString":"type(library Address)"}},"id":5680,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"20875:21:15","memberName":"functionCallWithValue","nodeType":"MemberAccess","referencedDeclaration":10038,"src":"20867:29:15","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_address_$_t_bytes_memory_ptr_$_t_uint256_$returns$_t_bytes_memory_ptr_$","typeString":"function (address,bytes memory,uint256) returns (bytes memory)"}},"id":5685,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"20867:54:15","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}},"id":5686,"nodeType":"ExpressionStatement","src":"20867:54:15"},{"expression":{"id":5689,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":5687,"name":"_executionId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4568,"src":"20968:12:15","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"id":5688,"name":"executionIdBefore","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5666,"src":"20983:17:15","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"src":"20968:32:15","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"id":5690,"nodeType":"ExpressionStatement","src":"20968:32:15"},{"expression":{"id":5691,"name":"nonce","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5646,"src":"21018:5:15","typeDescriptions":{"typeIdentifier":"t_uint32","typeString":"uint32"}},"functionReturnParameters":5605,"id":5692,"nodeType":"Return","src":"21011:12:15"}]},"documentation":{"id":5597,"nodeType":"StructuredDocumentation","src":"19528:30:15","text":"@inheritdoc IAccessManager"},"functionSelector":"1cff79cd","id":5694,"implemented":true,"kind":"function","modifiers":[],"name":"execute","nameLocation":"19801:7:15","nodeType":"FunctionDefinition","parameters":{"id":5602,"nodeType":"ParameterList","parameters":[{"constant":false,"id":5599,"mutability":"mutable","name":"target","nameLocation":"19817:6:15","nodeType":"VariableDeclaration","scope":5694,"src":"19809:14:15","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":5598,"name":"address","nodeType":"ElementaryTypeName","src":"19809:7:15","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":5601,"mutability":"mutable","name":"data","nameLocation":"19840:4:15","nodeType":"VariableDeclaration","scope":5694,"src":"19825:19:15","stateVariable":false,"storageLocation":"calldata","typeDescriptions":{"typeIdentifier":"t_bytes_calldata_ptr","typeString":"bytes"},"typeName":{"id":5600,"name":"bytes","nodeType":"ElementaryTypeName","src":"19825:5:15","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"}],"src":"19808:37:15"},"returnParameters":{"id":5605,"nodeType":"ParameterList","parameters":[{"constant":false,"id":5604,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":5694,"src":"19878:6:15","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint32","typeString":"uint32"},"typeName":{"id":5603,"name":"uint32","nodeType":"ElementaryTypeName","src":"19878:6:15","typeDescriptions":{"typeIdentifier":"t_uint32","typeString":"uint32"}},"visibility":"internal"}],"src":"19877:8:15"},"scope":6372,"src":"19792:1238:15","stateMutability":"payable","virtual":true,"visibility":"public"},{"baseFunctions":[6813],"body":{"id":5795,"nodeType":"Block","src":"21172:1007:15","statements":[{"assignments":[5707],"declarations":[{"constant":false,"id":5707,"mutability":"mutable","name":"msgsender","nameLocation":"21190:9:15","nodeType":"VariableDeclaration","scope":5795,"src":"21182:17:15","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":5706,"name":"address","nodeType":"ElementaryTypeName","src":"21182:7:15","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"id":5710,"initialValue":{"arguments":[],"expression":{"argumentTypes":[],"id":5708,"name":"_msgSender","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10268,"src":"21202:10:15","typeDescriptions":{"typeIdentifier":"t_function_internal_view$__$returns$_t_address_$","typeString":"function () view returns (address)"}},"id":5709,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"21202:12:15","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"VariableDeclarationStatement","src":"21182:32:15"},{"assignments":[5712],"declarations":[{"constant":false,"id":5712,"mutability":"mutable","name":"selector","nameLocation":"21231:8:15","nodeType":"VariableDeclaration","scope":5795,"src":"21224:15:15","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes4","typeString":"bytes4"},"typeName":{"id":5711,"name":"bytes4","nodeType":"ElementaryTypeName","src":"21224:6:15","typeDescriptions":{"typeIdentifier":"t_bytes4","typeString":"bytes4"}},"visibility":"internal"}],"id":5716,"initialValue":{"arguments":[{"id":5714,"name":"data","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5701,"src":"21257:4:15","typeDescriptions":{"typeIdentifier":"t_bytes_calldata_ptr","typeString":"bytes calldata"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes_calldata_ptr","typeString":"bytes calldata"}],"id":5713,"name":"_checkSelector","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6345,"src":"21242:14:15","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_bytes_calldata_ptr_$returns$_t_bytes4_$","typeString":"function (bytes calldata) pure returns (bytes4)"}},"id":5715,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"21242:20:15","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes4","typeString":"bytes4"}},"nodeType":"VariableDeclarationStatement","src":"21224:38:15"},{"assignments":[5718],"declarations":[{"constant":false,"id":5718,"mutability":"mutable","name":"operationId","nameLocation":"21281:11:15","nodeType":"VariableDeclaration","scope":5795,"src":"21273:19:15","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":5717,"name":"bytes32","nodeType":"ElementaryTypeName","src":"21273:7:15","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"}],"id":5724,"initialValue":{"arguments":[{"id":5720,"name":"caller","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5697,"src":"21309:6:15","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":5721,"name":"target","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5699,"src":"21317:6:15","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":5722,"name":"data","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5701,"src":"21325:4:15","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":5719,"name":"hashOperation","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5920,"src":"21295:13:15","typeDescriptions":{"typeIdentifier":"t_function_internal_view$_t_address_$_t_address_$_t_bytes_calldata_ptr_$returns$_t_bytes32_$","typeString":"function (address,address,bytes calldata) view returns (bytes32)"}},"id":5723,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"21295:35:15","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"nodeType":"VariableDeclarationStatement","src":"21273:57:15"},{"condition":{"commonType":{"typeIdentifier":"t_uint48","typeString":"uint48"},"id":5730,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"expression":{"baseExpression":{"id":5725,"name":"_schedules","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4566,"src":"21344:10:15","typeDescriptions":{"typeIdentifier":"t_mapping$_t_bytes32_$_t_struct$_Schedule_$4535_storage_$","typeString":"mapping(bytes32 => struct AccessManager.Schedule storage ref)"}},"id":5727,"indexExpression":{"id":5726,"name":"operationId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5718,"src":"21355:11:15","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"21344:23:15","typeDescriptions":{"typeIdentifier":"t_struct$_Schedule_$4535_storage","typeString":"struct AccessManager.Schedule storage ref"}},"id":5728,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"21368:9:15","memberName":"timepoint","nodeType":"MemberAccess","referencedDeclaration":4532,"src":"21344:33:15","typeDescriptions":{"typeIdentifier":"t_uint48","typeString":"uint48"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"hexValue":"30","id":5729,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"21381:1:15","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"21344:38:15","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"falseBody":{"condition":{"commonType":{"typeIdentifier":"t_address","typeString":"address"},"id":5738,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":5736,"name":"caller","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5697,"src":"21464:6:15","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"BinaryOperation","operator":"!=","rightExpression":{"id":5737,"name":"msgsender","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5707,"src":"21474:9:15","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"src":"21464:19:15","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":5773,"nodeType":"IfStatement","src":"21460:494:15","trueBody":{"id":5772,"nodeType":"Block","src":"21485:469:15","statements":[{"assignments":[5740,null],"declarations":[{"constant":false,"id":5740,"mutability":"mutable","name":"isAdmin","nameLocation":"21638:7:15","nodeType":"VariableDeclaration","scope":5772,"src":"21633:12:15","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":5739,"name":"bool","nodeType":"ElementaryTypeName","src":"21633:4:15","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"},null],"id":5745,"initialValue":{"arguments":[{"id":5742,"name":"ADMIN_ROLE","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4543,"src":"21659:10:15","typeDescriptions":{"typeIdentifier":"t_uint64","typeString":"uint64"}},{"id":5743,"name":"msgsender","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5707,"src":"21671:9:15","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint64","typeString":"uint64"},{"typeIdentifier":"t_address","typeString":"address"}],"id":5741,"name":"hasRole","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4873,"src":"21651:7:15","typeDescriptions":{"typeIdentifier":"t_function_internal_view$_t_uint64_$_t_address_$returns$_t_bool_$_t_uint32_$","typeString":"function (uint64,address) view returns (bool,uint32)"}},"id":5744,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"21651:30:15","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$_t_bool_$_t_uint32_$","typeString":"tuple(bool,uint32)"}},"nodeType":"VariableDeclarationStatement","src":"21632:49:15"},{"assignments":[5747,null],"declarations":[{"constant":false,"id":5747,"mutability":"mutable","name":"isGuardian","nameLocation":"21701:10:15","nodeType":"VariableDeclaration","scope":5772,"src":"21696:15:15","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":5746,"name":"bool","nodeType":"ElementaryTypeName","src":"21696:4:15","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"},null],"id":5757,"initialValue":{"arguments":[{"arguments":[{"arguments":[{"id":5751,"name":"target","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5699,"src":"21763:6:15","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":5752,"name":"selector","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5712,"src":"21771:8:15","typeDescriptions":{"typeIdentifier":"t_bytes4","typeString":"bytes4"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_bytes4","typeString":"bytes4"}],"id":5750,"name":"getTargetFunctionRole","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4721,"src":"21741:21:15","typeDescriptions":{"typeIdentifier":"t_function_internal_view$_t_address_$_t_bytes4_$returns$_t_uint64_$","typeString":"function (address,bytes4) view returns (uint64)"}},"id":5753,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"21741:39:15","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint64","typeString":"uint64"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint64","typeString":"uint64"}],"id":5749,"name":"getRoleGuardian","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4765,"src":"21725:15:15","typeDescriptions":{"typeIdentifier":"t_function_internal_view$_t_uint64_$returns$_t_uint64_$","typeString":"function (uint64) view returns (uint64)"}},"id":5754,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"21725:56:15","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint64","typeString":"uint64"}},{"id":5755,"name":"msgsender","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5707,"src":"21783:9:15","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint64","typeString":"uint64"},{"typeIdentifier":"t_address","typeString":"address"}],"id":5748,"name":"hasRole","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4873,"src":"21717:7:15","typeDescriptions":{"typeIdentifier":"t_function_internal_view$_t_uint64_$_t_address_$returns$_t_bool_$_t_uint32_$","typeString":"function (uint64,address) view returns (bool,uint32)"}},"id":5756,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"21717:76:15","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$_t_bool_$_t_uint32_$","typeString":"tuple(bool,uint32)"}},"nodeType":"VariableDeclarationStatement","src":"21695:98:15"},{"condition":{"commonType":{"typeIdentifier":"t_bool","typeString":"bool"},"id":5762,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":5759,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"UnaryOperation","operator":"!","prefix":true,"src":"21811:8:15","subExpression":{"id":5758,"name":"isAdmin","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5740,"src":"21812:7:15","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"nodeType":"BinaryOperation","operator":"&&","rightExpression":{"id":5761,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"UnaryOperation","operator":"!","prefix":true,"src":"21823:11:15","subExpression":{"id":5760,"name":"isGuardian","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5747,"src":"21824:10:15","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"src":"21811:23:15","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":5771,"nodeType":"IfStatement","src":"21807:137:15","trueBody":{"id":5770,"nodeType":"Block","src":"21836:108:15","statements":[{"errorCall":{"arguments":[{"id":5764,"name":"msgsender","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5707,"src":"21893:9:15","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":5765,"name":"caller","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5697,"src":"21904:6:15","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":5766,"name":"target","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5699,"src":"21912:6:15","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":5767,"name":"selector","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5712,"src":"21920:8:15","typeDescriptions":{"typeIdentifier":"t_bytes4","typeString":"bytes4"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_bytes4","typeString":"bytes4"}],"id":5763,"name":"AccessManagerUnauthorizedCancel","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6568,"src":"21861:31:15","typeDescriptions":{"typeIdentifier":"t_function_error_pure$_t_address_$_t_address_$_t_address_$_t_bytes4_$returns$_t_error_$","typeString":"function (address,address,address,bytes4) pure returns (error)"}},"id":5768,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"21861:68:15","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_error","typeString":"error"}},"id":5769,"nodeType":"RevertStatement","src":"21854:75:15"}]}}]}},"id":5774,"nodeType":"IfStatement","src":"21340:614:15","trueBody":{"id":5735,"nodeType":"Block","src":"21384:70:15","statements":[{"errorCall":{"arguments":[{"id":5732,"name":"operationId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5718,"src":"21431:11:15","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes32","typeString":"bytes32"}],"id":5731,"name":"AccessManagerNotScheduled","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6526,"src":"21405:25:15","typeDescriptions":{"typeIdentifier":"t_function_error_pure$_t_bytes32_$returns$_t_error_$","typeString":"function (bytes32) pure returns (error)"}},"id":5733,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"21405:38:15","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_error","typeString":"error"}},"id":5734,"nodeType":"RevertStatement","src":"21398:45:15"}]}},{"expression":{"id":5779,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"UnaryOperation","operator":"delete","prefix":true,"src":"21964:40:15","subExpression":{"expression":{"baseExpression":{"id":5775,"name":"_schedules","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4566,"src":"21971:10:15","typeDescriptions":{"typeIdentifier":"t_mapping$_t_bytes32_$_t_struct$_Schedule_$4535_storage_$","typeString":"mapping(bytes32 => struct AccessManager.Schedule storage ref)"}},"id":5777,"indexExpression":{"id":5776,"name":"operationId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5718,"src":"21982:11:15","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"21971:23:15","typeDescriptions":{"typeIdentifier":"t_struct$_Schedule_$4535_storage","typeString":"struct AccessManager.Schedule storage ref"}},"id":5778,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"memberLocation":"21995:9:15","memberName":"timepoint","nodeType":"MemberAccess","referencedDeclaration":4532,"src":"21971:33:15","typeDescriptions":{"typeIdentifier":"t_uint48","typeString":"uint48"}},"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":5780,"nodeType":"ExpressionStatement","src":"21964:40:15"},{"assignments":[5782],"declarations":[{"constant":false,"id":5782,"mutability":"mutable","name":"nonce","nameLocation":"22060:5:15","nodeType":"VariableDeclaration","scope":5795,"src":"22053:12:15","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint32","typeString":"uint32"},"typeName":{"id":5781,"name":"uint32","nodeType":"ElementaryTypeName","src":"22053:6:15","typeDescriptions":{"typeIdentifier":"t_uint32","typeString":"uint32"}},"visibility":"internal"}],"id":5787,"initialValue":{"expression":{"baseExpression":{"id":5783,"name":"_schedules","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4566,"src":"22068:10:15","typeDescriptions":{"typeIdentifier":"t_mapping$_t_bytes32_$_t_struct$_Schedule_$4535_storage_$","typeString":"mapping(bytes32 => struct AccessManager.Schedule storage ref)"}},"id":5785,"indexExpression":{"id":5784,"name":"operationId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5718,"src":"22079:11:15","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"22068:23:15","typeDescriptions":{"typeIdentifier":"t_struct$_Schedule_$4535_storage","typeString":"struct AccessManager.Schedule storage ref"}},"id":5786,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"22092:5:15","memberName":"nonce","nodeType":"MemberAccess","referencedDeclaration":4534,"src":"22068:29:15","typeDescriptions":{"typeIdentifier":"t_uint32","typeString":"uint32"}},"nodeType":"VariableDeclarationStatement","src":"22053:44:15"},{"eventCall":{"arguments":[{"id":5789,"name":"operationId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5718,"src":"22130:11:15","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},{"id":5790,"name":"nonce","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5782,"src":"22143:5:15","typeDescriptions":{"typeIdentifier":"t_uint32","typeString":"uint32"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes32","typeString":"bytes32"},{"typeIdentifier":"t_uint32","typeString":"uint32"}],"id":5788,"name":"OperationCanceled","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6443,"src":"22112:17:15","typeDescriptions":{"typeIdentifier":"t_function_event_nonpayable$_t_bytes32_$_t_uint32_$returns$__$","typeString":"function (bytes32,uint32)"}},"id":5791,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"22112:37:15","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":5792,"nodeType":"EmitStatement","src":"22107:42:15"},{"expression":{"id":5793,"name":"nonce","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5782,"src":"22167:5:15","typeDescriptions":{"typeIdentifier":"t_uint32","typeString":"uint32"}},"functionReturnParameters":5705,"id":5794,"nodeType":"Return","src":"22160:12:15"}]},"documentation":{"id":5695,"nodeType":"StructuredDocumentation","src":"21036:30:15","text":"@inheritdoc IAccessManager"},"functionSelector":"d6bb62c6","id":5796,"implemented":true,"kind":"function","modifiers":[],"name":"cancel","nameLocation":"21080:6:15","nodeType":"FunctionDefinition","parameters":{"id":5702,"nodeType":"ParameterList","parameters":[{"constant":false,"id":5697,"mutability":"mutable","name":"caller","nameLocation":"21095:6:15","nodeType":"VariableDeclaration","scope":5796,"src":"21087:14:15","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":5696,"name":"address","nodeType":"ElementaryTypeName","src":"21087:7:15","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":5699,"mutability":"mutable","name":"target","nameLocation":"21111:6:15","nodeType":"VariableDeclaration","scope":5796,"src":"21103:14:15","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":5698,"name":"address","nodeType":"ElementaryTypeName","src":"21103:7:15","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":5701,"mutability":"mutable","name":"data","nameLocation":"21134:4:15","nodeType":"VariableDeclaration","scope":5796,"src":"21119:19:15","stateVariable":false,"storageLocation":"calldata","typeDescriptions":{"typeIdentifier":"t_bytes_calldata_ptr","typeString":"bytes"},"typeName":{"id":5700,"name":"bytes","nodeType":"ElementaryTypeName","src":"21119:5:15","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"}],"src":"21086:53:15"},"returnParameters":{"id":5705,"nodeType":"ParameterList","parameters":[{"constant":false,"id":5704,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":5796,"src":"21164:6:15","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint32","typeString":"uint32"},"typeName":{"id":5703,"name":"uint32","nodeType":"ElementaryTypeName","src":"21164:6:15","typeDescriptions":{"typeIdentifier":"t_uint32","typeString":"uint32"}},"visibility":"internal"}],"src":"21163:8:15"},"scope":6372,"src":"21071:1108:15","stateMutability":"nonpayable","virtual":true,"visibility":"public"},{"baseFunctions":[6821],"body":{"id":5832,"nodeType":"Block","src":"22300:296:15","statements":[{"assignments":[5805],"declarations":[{"constant":false,"id":5805,"mutability":"mutable","name":"target","nameLocation":"22318:6:15","nodeType":"VariableDeclaration","scope":5832,"src":"22310:14:15","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":5804,"name":"address","nodeType":"ElementaryTypeName","src":"22310:7:15","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"id":5808,"initialValue":{"arguments":[],"expression":{"argumentTypes":[],"id":5806,"name":"_msgSender","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10268,"src":"22327:10:15","typeDescriptions":{"typeIdentifier":"t_function_internal_view$__$returns$_t_address_$","typeString":"function () view returns (address)"}},"id":5807,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"22327:12:15","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"VariableDeclarationStatement","src":"22310:29:15"},{"condition":{"commonType":{"typeIdentifier":"t_bytes4","typeString":"bytes4"},"id":5817,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"arguments":[],"expression":{"argumentTypes":[],"expression":{"arguments":[{"id":5810,"name":"target","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5805,"src":"22368:6:15","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"id":5809,"name":"IAccessManaged","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6412,"src":"22353:14:15","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_IAccessManaged_$6412_$","typeString":"type(contract IAccessManaged)"}},"id":5811,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"22353:22:15","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_contract$_IAccessManaged_$6412","typeString":"contract IAccessManaged"}},"id":5812,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"22376:22:15","memberName":"isConsumingScheduledOp","nodeType":"MemberAccess","referencedDeclaration":6411,"src":"22353:45:15","typeDescriptions":{"typeIdentifier":"t_function_external_view$__$returns$_t_bytes4_$","typeString":"function () view external returns (bytes4)"}},"id":5813,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"22353:47:15","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes4","typeString":"bytes4"}},"nodeType":"BinaryOperation","operator":"!=","rightExpression":{"expression":{"expression":{"id":5814,"name":"IAccessManaged","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6412,"src":"22404:14:15","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_IAccessManaged_$6412_$","typeString":"type(contract IAccessManaged)"}},"id":5815,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberLocation":"22419:22:15","memberName":"isConsumingScheduledOp","nodeType":"MemberAccess","referencedDeclaration":6411,"src":"22404:37:15","typeDescriptions":{"typeIdentifier":"t_function_declaration_view$__$returns$_t_bytes4_$","typeString":"function IAccessManaged.isConsumingScheduledOp() view returns (bytes4)"}},"id":5816,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberLocation":"22442:8:15","memberName":"selector","nodeType":"MemberAccess","src":"22404:46:15","typeDescriptions":{"typeIdentifier":"t_bytes4","typeString":"bytes4"}},"src":"22353:97:15","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":5823,"nodeType":"IfStatement","src":"22349:175:15","trueBody":{"id":5822,"nodeType":"Block","src":"22452:72:15","statements":[{"errorCall":{"arguments":[{"id":5819,"name":"target","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5805,"src":"22506:6:15","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"id":5818,"name":"AccessManagerUnauthorizedConsume","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6558,"src":"22473:32:15","typeDescriptions":{"typeIdentifier":"t_function_error_pure$_t_address_$returns$_t_error_$","typeString":"function (address) pure returns (error)"}},"id":5820,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"22473:40:15","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_error","typeString":"error"}},"id":5821,"nodeType":"RevertStatement","src":"22466:47:15"}]}},{"expression":{"arguments":[{"arguments":[{"id":5826,"name":"caller","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5799,"src":"22567:6:15","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":5827,"name":"target","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5805,"src":"22575:6:15","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":5828,"name":"data","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5801,"src":"22583:4:15","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":5825,"name":"hashOperation","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5920,"src":"22553:13:15","typeDescriptions":{"typeIdentifier":"t_function_internal_view$_t_address_$_t_address_$_t_bytes_calldata_ptr_$returns$_t_bytes32_$","typeString":"function (address,address,bytes calldata) view returns (bytes32)"}},"id":5829,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"22553:35:15","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes32","typeString":"bytes32"}],"id":5824,"name":"_consumeScheduledOp","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5898,"src":"22533:19:15","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_bytes32_$returns$_t_uint32_$","typeString":"function (bytes32) returns (uint32)"}},"id":5830,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"22533:56:15","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint32","typeString":"uint32"}},"id":5831,"nodeType":"ExpressionStatement","src":"22533:56:15"}]},"documentation":{"id":5797,"nodeType":"StructuredDocumentation","src":"22185:30:15","text":"@inheritdoc IAccessManager"},"functionSelector":"94c7d7ee","id":5833,"implemented":true,"kind":"function","modifiers":[],"name":"consumeScheduledOp","nameLocation":"22229:18:15","nodeType":"FunctionDefinition","parameters":{"id":5802,"nodeType":"ParameterList","parameters":[{"constant":false,"id":5799,"mutability":"mutable","name":"caller","nameLocation":"22256:6:15","nodeType":"VariableDeclaration","scope":5833,"src":"22248:14:15","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":5798,"name":"address","nodeType":"ElementaryTypeName","src":"22248:7:15","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":5801,"mutability":"mutable","name":"data","nameLocation":"22279:4:15","nodeType":"VariableDeclaration","scope":5833,"src":"22264:19:15","stateVariable":false,"storageLocation":"calldata","typeDescriptions":{"typeIdentifier":"t_bytes_calldata_ptr","typeString":"bytes"},"typeName":{"id":5800,"name":"bytes","nodeType":"ElementaryTypeName","src":"22264:5:15","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"}],"src":"22247:37:15"},"returnParameters":{"id":5803,"nodeType":"ParameterList","parameters":[],"src":"22300:0:15"},"scope":6372,"src":"22220:376:15","stateMutability":"nonpayable","virtual":true,"visibility":"public"},{"body":{"id":5897,"nodeType":"Block","src":"22870:592:15","statements":[{"assignments":[5842],"declarations":[{"constant":false,"id":5842,"mutability":"mutable","name":"timepoint","nameLocation":"22887:9:15","nodeType":"VariableDeclaration","scope":5897,"src":"22880:16:15","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint48","typeString":"uint48"},"typeName":{"id":5841,"name":"uint48","nodeType":"ElementaryTypeName","src":"22880:6:15","typeDescriptions":{"typeIdentifier":"t_uint48","typeString":"uint48"}},"visibility":"internal"}],"id":5847,"initialValue":{"expression":{"baseExpression":{"id":5843,"name":"_schedules","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4566,"src":"22899:10:15","typeDescriptions":{"typeIdentifier":"t_mapping$_t_bytes32_$_t_struct$_Schedule_$4535_storage_$","typeString":"mapping(bytes32 => struct AccessManager.Schedule storage ref)"}},"id":5845,"indexExpression":{"id":5844,"name":"operationId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5836,"src":"22910:11:15","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"22899:23:15","typeDescriptions":{"typeIdentifier":"t_struct$_Schedule_$4535_storage","typeString":"struct AccessManager.Schedule storage ref"}},"id":5846,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"22923:9:15","memberName":"timepoint","nodeType":"MemberAccess","referencedDeclaration":4532,"src":"22899:33:15","typeDescriptions":{"typeIdentifier":"t_uint48","typeString":"uint48"}},"nodeType":"VariableDeclarationStatement","src":"22880:52:15"},{"assignments":[5849],"declarations":[{"constant":false,"id":5849,"mutability":"mutable","name":"nonce","nameLocation":"22949:5:15","nodeType":"VariableDeclaration","scope":5897,"src":"22942:12:15","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint32","typeString":"uint32"},"typeName":{"id":5848,"name":"uint32","nodeType":"ElementaryTypeName","src":"22942:6:15","typeDescriptions":{"typeIdentifier":"t_uint32","typeString":"uint32"}},"visibility":"internal"}],"id":5854,"initialValue":{"expression":{"baseExpression":{"id":5850,"name":"_schedules","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4566,"src":"22957:10:15","typeDescriptions":{"typeIdentifier":"t_mapping$_t_bytes32_$_t_struct$_Schedule_$4535_storage_$","typeString":"mapping(bytes32 => struct AccessManager.Schedule storage ref)"}},"id":5852,"indexExpression":{"id":5851,"name":"operationId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5836,"src":"22968:11:15","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"22957:23:15","typeDescriptions":{"typeIdentifier":"t_struct$_Schedule_$4535_storage","typeString":"struct AccessManager.Schedule storage ref"}},"id":5853,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"22981:5:15","memberName":"nonce","nodeType":"MemberAccess","referencedDeclaration":4534,"src":"22957:29:15","typeDescriptions":{"typeIdentifier":"t_uint32","typeString":"uint32"}},"nodeType":"VariableDeclarationStatement","src":"22942:44:15"},{"condition":{"commonType":{"typeIdentifier":"t_uint48","typeString":"uint48"},"id":5857,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":5855,"name":"timepoint","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5842,"src":"23001:9:15","typeDescriptions":{"typeIdentifier":"t_uint48","typeString":"uint48"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"hexValue":"30","id":5856,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"23014:1:15","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"23001:14:15","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"falseBody":{"condition":{"commonType":{"typeIdentifier":"t_uint48","typeString":"uint48"},"id":5867,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":5863,"name":"timepoint","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5842,"src":"23097:9:15","typeDescriptions":{"typeIdentifier":"t_uint48","typeString":"uint48"}},"nodeType":"BinaryOperation","operator":">","rightExpression":{"arguments":[],"expression":{"argumentTypes":[],"expression":{"id":5864,"name":"Time","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":14765,"src":"23109:4:15","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_Time_$14765_$","typeString":"type(library Time)"}},"id":5865,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"23114:9:15","memberName":"timestamp","nodeType":"MemberAccess","referencedDeclaration":14513,"src":"23109:14:15","typeDescriptions":{"typeIdentifier":"t_function_internal_view$__$returns$_t_uint48_$","typeString":"function () view returns (uint48)"}},"id":5866,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"23109:16:15","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint48","typeString":"uint48"}},"src":"23097:28:15","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"falseBody":{"condition":{"arguments":[{"id":5874,"name":"timepoint","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5842,"src":"23214:9:15","typeDescriptions":{"typeIdentifier":"t_uint48","typeString":"uint48"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint48","typeString":"uint48"}],"id":5873,"name":"_isExpired","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6328,"src":"23203:10:15","typeDescriptions":{"typeIdentifier":"t_function_internal_view$_t_uint48_$returns$_t_bool_$","typeString":"function (uint48) view returns (bool)"}},"id":5875,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"23203:21:15","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":5881,"nodeType":"IfStatement","src":"23199:92:15","trueBody":{"id":5880,"nodeType":"Block","src":"23226:65:15","statements":[{"errorCall":{"arguments":[{"id":5877,"name":"operationId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5836,"src":"23268:11:15","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes32","typeString":"bytes32"}],"id":5876,"name":"AccessManagerExpired","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6534,"src":"23247:20:15","typeDescriptions":{"typeIdentifier":"t_function_error_pure$_t_bytes32_$returns$_t_error_$","typeString":"function (bytes32) pure returns (error)"}},"id":5878,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"23247:33:15","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_error","typeString":"error"}},"id":5879,"nodeType":"RevertStatement","src":"23240:40:15"}]}},"id":5882,"nodeType":"IfStatement","src":"23093:198:15","trueBody":{"id":5872,"nodeType":"Block","src":"23127:66:15","statements":[{"errorCall":{"arguments":[{"id":5869,"name":"operationId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5836,"src":"23170:11:15","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes32","typeString":"bytes32"}],"id":5868,"name":"AccessManagerNotReady","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6530,"src":"23148:21:15","typeDescriptions":{"typeIdentifier":"t_function_error_pure$_t_bytes32_$returns$_t_error_$","typeString":"function (bytes32) pure returns (error)"}},"id":5870,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"23148:34:15","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_error","typeString":"error"}},"id":5871,"nodeType":"RevertStatement","src":"23141:41:15"}]}},"id":5883,"nodeType":"IfStatement","src":"22997:294:15","trueBody":{"id":5862,"nodeType":"Block","src":"23017:70:15","statements":[{"errorCall":{"arguments":[{"id":5859,"name":"operationId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5836,"src":"23064:11:15","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes32","typeString":"bytes32"}],"id":5858,"name":"AccessManagerNotScheduled","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6526,"src":"23038:25:15","typeDescriptions":{"typeIdentifier":"t_function_error_pure$_t_bytes32_$returns$_t_error_$","typeString":"function (bytes32) pure returns (error)"}},"id":5860,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"23038:38:15","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_error","typeString":"error"}},"id":5861,"nodeType":"RevertStatement","src":"23031:45:15"}]}},{"expression":{"id":5888,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"UnaryOperation","operator":"delete","prefix":true,"src":"23301:40:15","subExpression":{"expression":{"baseExpression":{"id":5884,"name":"_schedules","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4566,"src":"23308:10:15","typeDescriptions":{"typeIdentifier":"t_mapping$_t_bytes32_$_t_struct$_Schedule_$4535_storage_$","typeString":"mapping(bytes32 => struct AccessManager.Schedule storage ref)"}},"id":5886,"indexExpression":{"id":5885,"name":"operationId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5836,"src":"23319:11:15","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"23308:23:15","typeDescriptions":{"typeIdentifier":"t_struct$_Schedule_$4535_storage","typeString":"struct AccessManager.Schedule storage ref"}},"id":5887,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"memberLocation":"23332:9:15","memberName":"timepoint","nodeType":"MemberAccess","referencedDeclaration":4532,"src":"23308:33:15","typeDescriptions":{"typeIdentifier":"t_uint48","typeString":"uint48"}},"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":5889,"nodeType":"ExpressionStatement","src":"23301:40:15"},{"eventCall":{"arguments":[{"id":5891,"name":"operationId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5836,"src":"23413:11:15","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},{"id":5892,"name":"nonce","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5849,"src":"23426:5:15","typeDescriptions":{"typeIdentifier":"t_uint32","typeString":"uint32"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes32","typeString":"bytes32"},{"typeIdentifier":"t_uint32","typeString":"uint32"}],"id":5890,"name":"OperationExecuted","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6436,"src":"23395:17:15","typeDescriptions":{"typeIdentifier":"t_function_event_nonpayable$_t_bytes32_$_t_uint32_$returns$__$","typeString":"function (bytes32,uint32)"}},"id":5893,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"23395:37:15","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":5894,"nodeType":"EmitStatement","src":"23390:42:15"},{"expression":{"id":5895,"name":"nonce","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5849,"src":"23450:5:15","typeDescriptions":{"typeIdentifier":"t_uint32","typeString":"uint32"}},"functionReturnParameters":5840,"id":5896,"nodeType":"Return","src":"23443:12:15"}]},"documentation":{"id":5834,"nodeType":"StructuredDocumentation","src":"22602:179:15","text":" @dev Internal variant of {consumeScheduledOp} that operates on bytes32 operationId.\n Returns the nonce of the scheduled operation that is consumed."},"id":5898,"implemented":true,"kind":"function","modifiers":[],"name":"_consumeScheduledOp","nameLocation":"22795:19:15","nodeType":"FunctionDefinition","parameters":{"id":5837,"nodeType":"ParameterList","parameters":[{"constant":false,"id":5836,"mutability":"mutable","name":"operationId","nameLocation":"22823:11:15","nodeType":"VariableDeclaration","scope":5898,"src":"22815:19:15","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":5835,"name":"bytes32","nodeType":"ElementaryTypeName","src":"22815:7:15","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"}],"src":"22814:21:15"},"returnParameters":{"id":5840,"nodeType":"ParameterList","parameters":[{"constant":false,"id":5839,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":5898,"src":"22862:6:15","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint32","typeString":"uint32"},"typeName":{"id":5838,"name":"uint32","nodeType":"ElementaryTypeName","src":"22862:6:15","typeDescriptions":{"typeIdentifier":"t_uint32","typeString":"uint32"}},"visibility":"internal"}],"src":"22861:8:15"},"scope":6372,"src":"22786:676:15","stateMutability":"nonpayable","virtual":true,"visibility":"internal"},{"baseFunctions":[6833],"body":{"id":5919,"nodeType":"Block","src":"23617:67:15","statements":[{"expression":{"arguments":[{"arguments":[{"id":5913,"name":"caller","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5901,"src":"23655:6:15","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":5914,"name":"target","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5903,"src":"23663:6:15","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":5915,"name":"data","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5905,"src":"23671:4:15","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"}],"expression":{"id":5911,"name":"abi","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-1,"src":"23644:3:15","typeDescriptions":{"typeIdentifier":"t_magic_abi","typeString":"abi"}},"id":5912,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberLocation":"23648:6:15","memberName":"encode","nodeType":"MemberAccess","src":"23644:10:15","typeDescriptions":{"typeIdentifier":"t_function_abiencode_pure$__$returns$_t_bytes_memory_ptr_$","typeString":"function () pure returns (bytes memory)"}},"id":5916,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"23644:32:15","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}],"id":5910,"name":"keccak256","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-8,"src":"23634:9:15","typeDescriptions":{"typeIdentifier":"t_function_keccak256_pure$_t_bytes_memory_ptr_$returns$_t_bytes32_$","typeString":"function (bytes memory) pure returns (bytes32)"}},"id":5917,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"23634:43:15","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"functionReturnParameters":5909,"id":5918,"nodeType":"Return","src":"23627:50:15"}]},"documentation":{"id":5899,"nodeType":"StructuredDocumentation","src":"23468:30:15","text":"@inheritdoc IAccessManager"},"functionSelector":"abd9bd2a","id":5920,"implemented":true,"kind":"function","modifiers":[],"name":"hashOperation","nameLocation":"23512:13:15","nodeType":"FunctionDefinition","parameters":{"id":5906,"nodeType":"ParameterList","parameters":[{"constant":false,"id":5901,"mutability":"mutable","name":"caller","nameLocation":"23534:6:15","nodeType":"VariableDeclaration","scope":5920,"src":"23526:14:15","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":5900,"name":"address","nodeType":"ElementaryTypeName","src":"23526:7:15","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":5903,"mutability":"mutable","name":"target","nameLocation":"23550:6:15","nodeType":"VariableDeclaration","scope":5920,"src":"23542:14:15","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":5902,"name":"address","nodeType":"ElementaryTypeName","src":"23542:7:15","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":5905,"mutability":"mutable","name":"data","nameLocation":"23573:4:15","nodeType":"VariableDeclaration","scope":5920,"src":"23558:19:15","stateVariable":false,"storageLocation":"calldata","typeDescriptions":{"typeIdentifier":"t_bytes_calldata_ptr","typeString":"bytes"},"typeName":{"id":5904,"name":"bytes","nodeType":"ElementaryTypeName","src":"23558:5:15","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"}],"src":"23525:53:15"},"returnParameters":{"id":5909,"nodeType":"ParameterList","parameters":[{"constant":false,"id":5908,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":5920,"src":"23608:7:15","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":5907,"name":"bytes32","nodeType":"ElementaryTypeName","src":"23608:7:15","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"}],"src":"23607:9:15"},"scope":6372,"src":"23503:181:15","stateMutability":"view","virtual":true,"visibility":"public"},{"baseFunctions":[6841],"body":{"id":5937,"nodeType":"Block","src":"23938:66:15","statements":[{"expression":{"arguments":[{"id":5934,"name":"newAuthority","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5925,"src":"23984:12:15","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"expression":{"arguments":[{"id":5931,"name":"target","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5923,"src":"23963:6:15","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"id":5930,"name":"IAccessManaged","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6412,"src":"23948:14:15","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_IAccessManaged_$6412_$","typeString":"type(contract IAccessManaged)"}},"id":5932,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"23948:22:15","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_contract$_IAccessManaged_$6412","typeString":"contract IAccessManaged"}},"id":5933,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"23971:12:15","memberName":"setAuthority","nodeType":"MemberAccess","referencedDeclaration":6405,"src":"23948:35:15","typeDescriptions":{"typeIdentifier":"t_function_external_nonpayable$_t_address_$returns$__$","typeString":"function (address) external"}},"id":5935,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"23948:49:15","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":5936,"nodeType":"ExpressionStatement","src":"23948:49:15"}]},"documentation":{"id":5921,"nodeType":"StructuredDocumentation","src":"23810:30:15","text":"@inheritdoc IAccessManager"},"functionSelector":"18ff183c","id":5938,"implemented":true,"kind":"function","modifiers":[{"id":5928,"kind":"modifierInvocation","modifierName":{"id":5927,"name":"onlyAuthorized","nameLocations":["23923:14:15"],"nodeType":"IdentifierPath","referencedDeclaration":4576,"src":"23923:14:15"},"nodeType":"ModifierInvocation","src":"23923:14:15"}],"name":"updateAuthority","nameLocation":"23854:15:15","nodeType":"FunctionDefinition","parameters":{"id":5926,"nodeType":"ParameterList","parameters":[{"constant":false,"id":5923,"mutability":"mutable","name":"target","nameLocation":"23878:6:15","nodeType":"VariableDeclaration","scope":5938,"src":"23870:14:15","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":5922,"name":"address","nodeType":"ElementaryTypeName","src":"23870:7:15","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":5925,"mutability":"mutable","name":"newAuthority","nameLocation":"23894:12:15","nodeType":"VariableDeclaration","scope":5938,"src":"23886:20:15","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":5924,"name":"address","nodeType":"ElementaryTypeName","src":"23886:7:15","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"23869:38:15"},"returnParameters":{"id":5929,"nodeType":"ParameterList","parameters":[],"src":"23938:0:15"},"scope":6372,"src":"23845:159:15","stateMutability":"nonpayable","virtual":true,"visibility":"public"},{"body":{"id":5991,"nodeType":"Block","src":"24394:467:15","statements":[{"assignments":[5943],"declarations":[{"constant":false,"id":5943,"mutability":"mutable","name":"caller","nameLocation":"24412:6:15","nodeType":"VariableDeclaration","scope":5991,"src":"24404:14:15","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":5942,"name":"address","nodeType":"ElementaryTypeName","src":"24404:7:15","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"id":5946,"initialValue":{"arguments":[],"expression":{"argumentTypes":[],"id":5944,"name":"_msgSender","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10268,"src":"24421:10:15","typeDescriptions":{"typeIdentifier":"t_function_internal_view$__$returns$_t_address_$","typeString":"function () view returns (address)"}},"id":5945,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"24421:12:15","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"VariableDeclarationStatement","src":"24404:29:15"},{"assignments":[5948,5950],"declarations":[{"constant":false,"id":5948,"mutability":"mutable","name":"immediate","nameLocation":"24449:9:15","nodeType":"VariableDeclaration","scope":5991,"src":"24444:14:15","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":5947,"name":"bool","nodeType":"ElementaryTypeName","src":"24444:4:15","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"},{"constant":false,"id":5950,"mutability":"mutable","name":"delay","nameLocation":"24467:5:15","nodeType":"VariableDeclaration","scope":5991,"src":"24460:12:15","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint32","typeString":"uint32"},"typeName":{"id":5949,"name":"uint32","nodeType":"ElementaryTypeName","src":"24460:6:15","typeDescriptions":{"typeIdentifier":"t_uint32","typeString":"uint32"}},"visibility":"internal"}],"id":5956,"initialValue":{"arguments":[{"id":5952,"name":"caller","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5943,"src":"24489:6:15","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"arguments":[],"expression":{"argumentTypes":[],"id":5953,"name":"_msgData","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10277,"src":"24497:8:15","typeDescriptions":{"typeIdentifier":"t_function_internal_view$__$returns$_t_bytes_calldata_ptr_$","typeString":"function () view returns (bytes calldata)"}},"id":5954,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"24497:10:15","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes_calldata_ptr","typeString":"bytes calldata"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_bytes_calldata_ptr","typeString":"bytes calldata"}],"id":5951,"name":"_canCallSelf","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6292,"src":"24476:12:15","typeDescriptions":{"typeIdentifier":"t_function_internal_view$_t_address_$_t_bytes_calldata_ptr_$returns$_t_bool_$_t_uint32_$","typeString":"function (address,bytes calldata) view returns (bool,uint32)"}},"id":5955,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"24476:32:15","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$_t_bool_$_t_uint32_$","typeString":"tuple(bool,uint32)"}},"nodeType":"VariableDeclarationStatement","src":"24443:65:15"},{"condition":{"id":5958,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"UnaryOperation","operator":"!","prefix":true,"src":"24522:10:15","subExpression":{"id":5957,"name":"immediate","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5948,"src":"24523:9:15","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":5990,"nodeType":"IfStatement","src":"24518:337:15","trueBody":{"id":5989,"nodeType":"Block","src":"24534:321:15","statements":[{"condition":{"commonType":{"typeIdentifier":"t_uint32","typeString":"uint32"},"id":5961,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":5959,"name":"delay","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5950,"src":"24552:5:15","typeDescriptions":{"typeIdentifier":"t_uint32","typeString":"uint32"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"hexValue":"30","id":5960,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"24561:1:15","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"24552:10:15","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"falseBody":{"id":5987,"nodeType":"Block","src":"24743:102:15","statements":[{"expression":{"arguments":[{"arguments":[{"id":5977,"name":"caller","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5943,"src":"24795:6:15","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"arguments":[{"id":5980,"name":"this","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-28,"src":"24811:4:15","typeDescriptions":{"typeIdentifier":"t_contract$_AccessManager_$6372","typeString":"contract AccessManager"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_contract$_AccessManager_$6372","typeString":"contract AccessManager"}],"id":5979,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"24803:7:15","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":5978,"name":"address","nodeType":"ElementaryTypeName","src":"24803:7:15","typeDescriptions":{}}},"id":5981,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"24803:13:15","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"arguments":[],"expression":{"argumentTypes":[],"id":5982,"name":"_msgData","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10277,"src":"24818:8:15","typeDescriptions":{"typeIdentifier":"t_function_internal_view$__$returns$_t_bytes_calldata_ptr_$","typeString":"function () view returns (bytes calldata)"}},"id":5983,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"24818:10:15","tryCall":false,"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":5976,"name":"hashOperation","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5920,"src":"24781:13:15","typeDescriptions":{"typeIdentifier":"t_function_internal_view$_t_address_$_t_address_$_t_bytes_calldata_ptr_$returns$_t_bytes32_$","typeString":"function (address,address,bytes calldata) view returns (bytes32)"}},"id":5984,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"24781:48:15","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes32","typeString":"bytes32"}],"id":5975,"name":"_consumeScheduledOp","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5898,"src":"24761:19:15","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_bytes32_$returns$_t_uint32_$","typeString":"function (bytes32) returns (uint32)"}},"id":5985,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"24761:69:15","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint32","typeString":"uint32"}},"id":5986,"nodeType":"ExpressionStatement","src":"24761:69:15"}]},"id":5988,"nodeType":"IfStatement","src":"24548:297:15","trueBody":{"id":5974,"nodeType":"Block","src":"24564:173:15","statements":[{"assignments":[null,5963,null],"declarations":[null,{"constant":false,"id":5963,"mutability":"mutable","name":"requiredRole","nameLocation":"24592:12:15","nodeType":"VariableDeclaration","scope":5974,"src":"24585:19:15","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint64","typeString":"uint64"},"typeName":{"id":5962,"name":"uint64","nodeType":"ElementaryTypeName","src":"24585:6:15","typeDescriptions":{"typeIdentifier":"t_uint64","typeString":"uint64"}},"visibility":"internal"},null],"id":5968,"initialValue":{"arguments":[{"arguments":[],"expression":{"argumentTypes":[],"id":5965,"name":"_msgData","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10277,"src":"24632:8:15","typeDescriptions":{"typeIdentifier":"t_function_internal_view$__$returns$_t_bytes_calldata_ptr_$","typeString":"function () view returns (bytes calldata)"}},"id":5966,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"24632:10:15","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes_calldata_ptr","typeString":"bytes calldata"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes_calldata_ptr","typeString":"bytes calldata"}],"id":5964,"name":"_getAdminRestrictions","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6145,"src":"24610:21:15","typeDescriptions":{"typeIdentifier":"t_function_internal_view$_t_bytes_calldata_ptr_$returns$_t_bool_$_t_uint64_$_t_uint32_$","typeString":"function (bytes calldata) view returns (bool,uint64,uint32)"}},"id":5967,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"24610:33:15","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$_t_bool_$_t_uint64_$_t_uint32_$","typeString":"tuple(bool,uint64,uint32)"}},"nodeType":"VariableDeclarationStatement","src":"24582:61:15"},{"errorCall":{"arguments":[{"id":5970,"name":"caller","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5943,"src":"24701:6:15","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":5971,"name":"requiredRole","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5963,"src":"24709:12:15","typeDescriptions":{"typeIdentifier":"t_uint64","typeString":"uint64"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint64","typeString":"uint64"}],"id":5969,"name":"AccessManagerUnauthorizedAccount","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6546,"src":"24668:32:15","typeDescriptions":{"typeIdentifier":"t_function_error_pure$_t_address_$_t_uint64_$returns$_t_error_$","typeString":"function (address,uint64) pure returns (error)"}},"id":5972,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"24668:54:15","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_error","typeString":"error"}},"id":5973,"nodeType":"RevertStatement","src":"24661:61:15"}]}}]}}]},"documentation":{"id":5939,"nodeType":"StructuredDocumentation","src":"24130:223:15","text":" @dev Check if the current call is authorized according to admin and roles logic.\n WARNING: Carefully review the considerations of {AccessManaged-restricted} since they apply to this modifier."},"id":5992,"implemented":true,"kind":"function","modifiers":[],"name":"_checkAuthorized","nameLocation":"24367:16:15","nodeType":"FunctionDefinition","parameters":{"id":5940,"nodeType":"ParameterList","parameters":[],"src":"24383:2:15"},"returnParameters":{"id":5941,"nodeType":"ParameterList","parameters":[],"src":"24394:0:15"},"scope":6372,"src":"24358:503:15","stateMutability":"nonpayable","virtual":false,"visibility":"private"},{"body":{"id":6144,"nodeType":"Block","src":"25420:1525:15","statements":[{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":6007,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"expression":{"id":6004,"name":"data","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5995,"src":"25434:4:15","typeDescriptions":{"typeIdentifier":"t_bytes_calldata_ptr","typeString":"bytes calldata"}},"id":6005,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"25439:6:15","memberName":"length","nodeType":"MemberAccess","src":"25434:11:15","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"<","rightExpression":{"hexValue":"34","id":6006,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"25448:1:15","typeDescriptions":{"typeIdentifier":"t_rational_4_by_1","typeString":"int_const 4"},"value":"4"},"src":"25434:15:15","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":6014,"nodeType":"IfStatement","src":"25430:66:15","trueBody":{"id":6013,"nodeType":"Block","src":"25451:45:15","statements":[{"expression":{"components":[{"hexValue":"66616c7365","id":6008,"isConstant":false,"isLValue":false,"isPure":true,"kind":"bool","lValueRequested":false,"nodeType":"Literal","src":"25473:5:15","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"value":"false"},{"hexValue":"30","id":6009,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"25480:1:15","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},{"hexValue":"30","id":6010,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"25483:1:15","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"}],"id":6011,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"TupleExpression","src":"25472:13:15","typeDescriptions":{"typeIdentifier":"t_tuple$_t_bool_$_t_rational_0_by_1_$_t_rational_0_by_1_$","typeString":"tuple(bool,int_const 0,int_const 0)"}},"functionReturnParameters":6003,"id":6012,"nodeType":"Return","src":"25465:20:15"}]}},{"assignments":[6016],"declarations":[{"constant":false,"id":6016,"mutability":"mutable","name":"selector","nameLocation":"25513:8:15","nodeType":"VariableDeclaration","scope":6144,"src":"25506:15:15","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes4","typeString":"bytes4"},"typeName":{"id":6015,"name":"bytes4","nodeType":"ElementaryTypeName","src":"25506:6:15","typeDescriptions":{"typeIdentifier":"t_bytes4","typeString":"bytes4"}},"visibility":"internal"}],"id":6020,"initialValue":{"arguments":[{"id":6018,"name":"data","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5995,"src":"25539:4:15","typeDescriptions":{"typeIdentifier":"t_bytes_calldata_ptr","typeString":"bytes calldata"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes_calldata_ptr","typeString":"bytes calldata"}],"id":6017,"name":"_checkSelector","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6345,"src":"25524:14:15","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_bytes_calldata_ptr_$returns$_t_bytes4_$","typeString":"function (bytes calldata) pure returns (bytes4)"}},"id":6019,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"25524:20:15","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes4","typeString":"bytes4"}},"nodeType":"VariableDeclarationStatement","src":"25506:38:15"},{"condition":{"commonType":{"typeIdentifier":"t_bool","typeString":"bool"},"id":6049,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"commonType":{"typeIdentifier":"t_bool","typeString":"bool"},"id":6043,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"commonType":{"typeIdentifier":"t_bool","typeString":"bool"},"id":6037,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"commonType":{"typeIdentifier":"t_bool","typeString":"bool"},"id":6031,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"commonType":{"typeIdentifier":"t_bytes4","typeString":"bytes4"},"id":6025,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":6021,"name":"selector","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6016,"src":"25664:8:15","typeDescriptions":{"typeIdentifier":"t_bytes4","typeString":"bytes4"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"expression":{"expression":{"id":6022,"name":"this","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-28,"src":"25676:4:15","typeDescriptions":{"typeIdentifier":"t_contract$_AccessManager_$6372","typeString":"contract AccessManager"}},"id":6023,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"25681:9:15","memberName":"labelRole","nodeType":"MemberAccess","referencedDeclaration":4902,"src":"25676:14:15","typeDescriptions":{"typeIdentifier":"t_function_external_nonpayable$_t_uint64_$_t_string_memory_ptr_$returns$__$","typeString":"function (uint64,string memory) external"}},"id":6024,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberLocation":"25691:8:15","memberName":"selector","nodeType":"MemberAccess","src":"25676:23:15","typeDescriptions":{"typeIdentifier":"t_bytes4","typeString":"bytes4"}},"src":"25664:35:15","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"nodeType":"BinaryOperation","operator":"||","rightExpression":{"commonType":{"typeIdentifier":"t_bytes4","typeString":"bytes4"},"id":6030,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":6026,"name":"selector","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6016,"src":"25715:8:15","typeDescriptions":{"typeIdentifier":"t_bytes4","typeString":"bytes4"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"expression":{"expression":{"id":6027,"name":"this","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-28,"src":"25727:4:15","typeDescriptions":{"typeIdentifier":"t_contract$_AccessManager_$6372","typeString":"contract AccessManager"}},"id":6028,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"25732:12:15","memberName":"setRoleAdmin","nodeType":"MemberAccess","referencedDeclaration":4979,"src":"25727:17:15","typeDescriptions":{"typeIdentifier":"t_function_external_nonpayable$_t_uint64_$_t_uint64_$returns$__$","typeString":"function (uint64,uint64) external"}},"id":6029,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberLocation":"25745:8:15","memberName":"selector","nodeType":"MemberAccess","src":"25727:26:15","typeDescriptions":{"typeIdentifier":"t_bytes4","typeString":"bytes4"}},"src":"25715:38:15","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"src":"25664:89:15","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"nodeType":"BinaryOperation","operator":"||","rightExpression":{"commonType":{"typeIdentifier":"t_bytes4","typeString":"bytes4"},"id":6036,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":6032,"name":"selector","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6016,"src":"25769:8:15","typeDescriptions":{"typeIdentifier":"t_bytes4","typeString":"bytes4"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"expression":{"expression":{"id":6033,"name":"this","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-28,"src":"25781:4:15","typeDescriptions":{"typeIdentifier":"t_contract$_AccessManager_$6372","typeString":"contract AccessManager"}},"id":6034,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"25786:15:15","memberName":"setRoleGuardian","nodeType":"MemberAccess","referencedDeclaration":4995,"src":"25781:20:15","typeDescriptions":{"typeIdentifier":"t_function_external_nonpayable$_t_uint64_$_t_uint64_$returns$__$","typeString":"function (uint64,uint64) external"}},"id":6035,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberLocation":"25802:8:15","memberName":"selector","nodeType":"MemberAccess","src":"25781:29:15","typeDescriptions":{"typeIdentifier":"t_bytes4","typeString":"bytes4"}},"src":"25769:41:15","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"src":"25664:146:15","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"nodeType":"BinaryOperation","operator":"||","rightExpression":{"commonType":{"typeIdentifier":"t_bytes4","typeString":"bytes4"},"id":6042,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":6038,"name":"selector","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6016,"src":"25826:8:15","typeDescriptions":{"typeIdentifier":"t_bytes4","typeString":"bytes4"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"expression":{"expression":{"id":6039,"name":"this","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-28,"src":"25838:4:15","typeDescriptions":{"typeIdentifier":"t_contract$_AccessManager_$6372","typeString":"contract AccessManager"}},"id":6040,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"25843:13:15","memberName":"setGrantDelay","nodeType":"MemberAccess","referencedDeclaration":5011,"src":"25838:18:15","typeDescriptions":{"typeIdentifier":"t_function_external_nonpayable$_t_uint64_$_t_uint32_$returns$__$","typeString":"function (uint64,uint32) external"}},"id":6041,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberLocation":"25857:8:15","memberName":"selector","nodeType":"MemberAccess","src":"25838:27:15","typeDescriptions":{"typeIdentifier":"t_bytes4","typeString":"bytes4"}},"src":"25826:39:15","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"src":"25664:201:15","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"nodeType":"BinaryOperation","operator":"||","rightExpression":{"commonType":{"typeIdentifier":"t_bytes4","typeString":"bytes4"},"id":6048,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":6044,"name":"selector","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6016,"src":"25881:8:15","typeDescriptions":{"typeIdentifier":"t_bytes4","typeString":"bytes4"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"expression":{"expression":{"id":6045,"name":"this","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-28,"src":"25893:4:15","typeDescriptions":{"typeIdentifier":"t_contract$_AccessManager_$6372","typeString":"contract AccessManager"}},"id":6046,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"25898:19:15","memberName":"setTargetAdminDelay","nodeType":"MemberAccess","referencedDeclaration":5345,"src":"25893:24:15","typeDescriptions":{"typeIdentifier":"t_function_external_nonpayable$_t_address_$_t_uint32_$returns$__$","typeString":"function (address,uint32) external"}},"id":6047,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberLocation":"25918:8:15","memberName":"selector","nodeType":"MemberAccess","src":"25893:33:15","typeDescriptions":{"typeIdentifier":"t_bytes4","typeString":"bytes4"}},"src":"25881:45:15","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"src":"25664:262:15","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":6056,"nodeType":"IfStatement","src":"25647:343:15","trueBody":{"id":6055,"nodeType":"Block","src":"25937:53:15","statements":[{"expression":{"components":[{"hexValue":"74727565","id":6050,"isConstant":false,"isLValue":false,"isPure":true,"kind":"bool","lValueRequested":false,"nodeType":"Literal","src":"25959:4:15","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"value":"true"},{"id":6051,"name":"ADMIN_ROLE","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4543,"src":"25965:10:15","typeDescriptions":{"typeIdentifier":"t_uint64","typeString":"uint64"}},{"hexValue":"30","id":6052,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"25977:1:15","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"}],"id":6053,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"TupleExpression","src":"25958:21:15","typeDescriptions":{"typeIdentifier":"t_tuple$_t_bool_$_t_uint64_$_t_rational_0_by_1_$","typeString":"tuple(bool,uint64,int_const 0)"}},"functionReturnParameters":6003,"id":6054,"nodeType":"Return","src":"25951:28:15"}]}},{"condition":{"commonType":{"typeIdentifier":"t_bool","typeString":"bool"},"id":6073,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"commonType":{"typeIdentifier":"t_bool","typeString":"bool"},"id":6067,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"commonType":{"typeIdentifier":"t_bytes4","typeString":"bytes4"},"id":6061,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":6057,"name":"selector","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6016,"src":"26097:8:15","typeDescriptions":{"typeIdentifier":"t_bytes4","typeString":"bytes4"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"expression":{"expression":{"id":6058,"name":"this","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-28,"src":"26109:4:15","typeDescriptions":{"typeIdentifier":"t_contract$_AccessManager_$6372","typeString":"contract AccessManager"}},"id":6059,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"26114:15:15","memberName":"updateAuthority","nodeType":"MemberAccess","referencedDeclaration":5938,"src":"26109:20:15","typeDescriptions":{"typeIdentifier":"t_function_external_nonpayable$_t_address_$_t_address_$returns$__$","typeString":"function (address,address) external"}},"id":6060,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberLocation":"26130:8:15","memberName":"selector","nodeType":"MemberAccess","src":"26109:29:15","typeDescriptions":{"typeIdentifier":"t_bytes4","typeString":"bytes4"}},"src":"26097:41:15","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"nodeType":"BinaryOperation","operator":"||","rightExpression":{"commonType":{"typeIdentifier":"t_bytes4","typeString":"bytes4"},"id":6066,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":6062,"name":"selector","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6016,"src":"26154:8:15","typeDescriptions":{"typeIdentifier":"t_bytes4","typeString":"bytes4"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"expression":{"expression":{"id":6063,"name":"this","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-28,"src":"26166:4:15","typeDescriptions":{"typeIdentifier":"t_contract$_AccessManager_$6372","typeString":"contract AccessManager"}},"id":6064,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"26171:15:15","memberName":"setTargetClosed","nodeType":"MemberAccess","referencedDeclaration":5396,"src":"26166:20:15","typeDescriptions":{"typeIdentifier":"t_function_external_nonpayable$_t_address_$_t_bool_$returns$__$","typeString":"function (address,bool) external"}},"id":6065,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberLocation":"26187:8:15","memberName":"selector","nodeType":"MemberAccess","src":"26166:29:15","typeDescriptions":{"typeIdentifier":"t_bytes4","typeString":"bytes4"}},"src":"26154:41:15","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"src":"26097:98:15","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"nodeType":"BinaryOperation","operator":"||","rightExpression":{"commonType":{"typeIdentifier":"t_bytes4","typeString":"bytes4"},"id":6072,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":6068,"name":"selector","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6016,"src":"26211:8:15","typeDescriptions":{"typeIdentifier":"t_bytes4","typeString":"bytes4"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"expression":{"expression":{"id":6069,"name":"this","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-28,"src":"26223:4:15","typeDescriptions":{"typeIdentifier":"t_contract$_AccessManager_$6372","typeString":"contract AccessManager"}},"id":6070,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"26228:21:15","memberName":"setTargetFunctionRole","nodeType":"MemberAccess","referencedDeclaration":5303,"src":"26223:26:15","typeDescriptions":{"typeIdentifier":"t_function_external_nonpayable$_t_address_$_t_array$_t_bytes4_$dyn_memory_ptr_$_t_uint64_$returns$__$","typeString":"function (address,bytes4[] memory,uint64) external"}},"id":6071,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberLocation":"26250:8:15","memberName":"selector","nodeType":"MemberAccess","src":"26223:35:15","typeDescriptions":{"typeIdentifier":"t_bytes4","typeString":"bytes4"}},"src":"26211:47:15","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"src":"26097:161:15","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":6099,"nodeType":"IfStatement","src":"26080:414:15","trueBody":{"id":6098,"nodeType":"Block","src":"26269:225:15","statements":[{"assignments":[6075],"declarations":[{"constant":false,"id":6075,"mutability":"mutable","name":"target","nameLocation":"26334:6:15","nodeType":"VariableDeclaration","scope":6098,"src":"26326:14:15","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":6074,"name":"address","nodeType":"ElementaryTypeName","src":"26326:7:15","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"id":6086,"initialValue":{"arguments":[{"baseExpression":{"id":6078,"name":"data","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5995,"src":"26354:4:15","typeDescriptions":{"typeIdentifier":"t_bytes_calldata_ptr","typeString":"bytes calldata"}},"endExpression":{"hexValue":"30783234","id":6080,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"26364:4:15","typeDescriptions":{"typeIdentifier":"t_rational_36_by_1","typeString":"int_const 36"},"value":"0x24"},"id":6081,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"IndexRangeAccess","src":"26354:15:15","startExpression":{"hexValue":"30783034","id":6079,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"26359:4:15","typeDescriptions":{"typeIdentifier":"t_rational_4_by_1","typeString":"int_const 4"},"value":"0x04"},"typeDescriptions":{"typeIdentifier":"t_bytes_calldata_ptr_slice","typeString":"bytes calldata slice"}},{"components":[{"id":6083,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"26372:7:15","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":6082,"name":"address","nodeType":"ElementaryTypeName","src":"26372:7:15","typeDescriptions":{}}}],"id":6084,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"TupleExpression","src":"26371:9:15","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes_calldata_ptr_slice","typeString":"bytes calldata slice"},{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"}],"expression":{"id":6076,"name":"abi","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-1,"src":"26343:3:15","typeDescriptions":{"typeIdentifier":"t_magic_abi","typeString":"abi"}},"id":6077,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberLocation":"26347:6:15","memberName":"decode","nodeType":"MemberAccess","src":"26343:10:15","typeDescriptions":{"typeIdentifier":"t_function_abidecode_pure$__$returns$__$","typeString":"function () pure"}},"id":6085,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"26343:38:15","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address_payable","typeString":"address payable"}},"nodeType":"VariableDeclarationStatement","src":"26326:55:15"},{"assignments":[6088],"declarations":[{"constant":false,"id":6088,"mutability":"mutable","name":"delay","nameLocation":"26402:5:15","nodeType":"VariableDeclaration","scope":6098,"src":"26395:12:15","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint32","typeString":"uint32"},"typeName":{"id":6087,"name":"uint32","nodeType":"ElementaryTypeName","src":"26395:6:15","typeDescriptions":{"typeIdentifier":"t_uint32","typeString":"uint32"}},"visibility":"internal"}],"id":6092,"initialValue":{"arguments":[{"id":6090,"name":"target","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6075,"src":"26430:6:15","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"id":6089,"name":"getTargetAdminDelay","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4737,"src":"26410:19:15","typeDescriptions":{"typeIdentifier":"t_function_internal_view$_t_address_$returns$_t_uint32_$","typeString":"function (address) view returns (uint32)"}},"id":6091,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"26410:27:15","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint32","typeString":"uint32"}},"nodeType":"VariableDeclarationStatement","src":"26395:42:15"},{"expression":{"components":[{"hexValue":"74727565","id":6093,"isConstant":false,"isLValue":false,"isPure":true,"kind":"bool","lValueRequested":false,"nodeType":"Literal","src":"26459:4:15","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"value":"true"},{"id":6094,"name":"ADMIN_ROLE","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4543,"src":"26465:10:15","typeDescriptions":{"typeIdentifier":"t_uint64","typeString":"uint64"}},{"id":6095,"name":"delay","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6088,"src":"26477:5:15","typeDescriptions":{"typeIdentifier":"t_uint32","typeString":"uint32"}}],"id":6096,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"26458:25:15","typeDescriptions":{"typeIdentifier":"t_tuple$_t_bool_$_t_uint64_$_t_uint32_$","typeString":"tuple(bool,uint64,uint32)"}},"functionReturnParameters":6003,"id":6097,"nodeType":"Return","src":"26451:32:15"}]}},{"condition":{"commonType":{"typeIdentifier":"t_bool","typeString":"bool"},"id":6110,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"commonType":{"typeIdentifier":"t_bytes4","typeString":"bytes4"},"id":6104,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":6100,"name":"selector","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6016,"src":"26613:8:15","typeDescriptions":{"typeIdentifier":"t_bytes4","typeString":"bytes4"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"expression":{"expression":{"id":6101,"name":"this","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-28,"src":"26625:4:15","typeDescriptions":{"typeIdentifier":"t_contract$_AccessManager_$6372","typeString":"contract AccessManager"}},"id":6102,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"26630:9:15","memberName":"grantRole","nodeType":"MemberAccess","referencedDeclaration":4924,"src":"26625:14:15","typeDescriptions":{"typeIdentifier":"t_function_external_nonpayable$_t_uint64_$_t_address_$_t_uint32_$returns$__$","typeString":"function (uint64,address,uint32) external"}},"id":6103,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberLocation":"26640:8:15","memberName":"selector","nodeType":"MemberAccess","src":"26625:23:15","typeDescriptions":{"typeIdentifier":"t_bytes4","typeString":"bytes4"}},"src":"26613:35:15","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"nodeType":"BinaryOperation","operator":"||","rightExpression":{"commonType":{"typeIdentifier":"t_bytes4","typeString":"bytes4"},"id":6109,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":6105,"name":"selector","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6016,"src":"26652:8:15","typeDescriptions":{"typeIdentifier":"t_bytes4","typeString":"bytes4"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"expression":{"expression":{"id":6106,"name":"this","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-28,"src":"26664:4:15","typeDescriptions":{"typeIdentifier":"t_contract$_AccessManager_$6372","typeString":"contract AccessManager"}},"id":6107,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"26669:10:15","memberName":"revokeRole","nodeType":"MemberAccess","referencedDeclaration":4940,"src":"26664:15:15","typeDescriptions":{"typeIdentifier":"t_function_external_nonpayable$_t_uint64_$_t_address_$returns$__$","typeString":"function (uint64,address) external"}},"id":6108,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberLocation":"26680:8:15","memberName":"selector","nodeType":"MemberAccess","src":"26664:24:15","typeDescriptions":{"typeIdentifier":"t_bytes4","typeString":"bytes4"}},"src":"26652:36:15","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"src":"26613:75:15","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":6132,"nodeType":"IfStatement","src":"26609:254:15","trueBody":{"id":6131,"nodeType":"Block","src":"26690:173:15","statements":[{"assignments":[6112],"declarations":[{"constant":false,"id":6112,"mutability":"mutable","name":"roleId","nameLocation":"26754:6:15","nodeType":"VariableDeclaration","scope":6131,"src":"26747:13:15","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint64","typeString":"uint64"},"typeName":{"id":6111,"name":"uint64","nodeType":"ElementaryTypeName","src":"26747:6:15","typeDescriptions":{"typeIdentifier":"t_uint64","typeString":"uint64"}},"visibility":"internal"}],"id":6123,"initialValue":{"arguments":[{"baseExpression":{"id":6115,"name":"data","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5995,"src":"26774:4:15","typeDescriptions":{"typeIdentifier":"t_bytes_calldata_ptr","typeString":"bytes calldata"}},"endExpression":{"hexValue":"30783234","id":6117,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"26784:4:15","typeDescriptions":{"typeIdentifier":"t_rational_36_by_1","typeString":"int_const 36"},"value":"0x24"},"id":6118,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"IndexRangeAccess","src":"26774:15:15","startExpression":{"hexValue":"30783034","id":6116,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"26779:4:15","typeDescriptions":{"typeIdentifier":"t_rational_4_by_1","typeString":"int_const 4"},"value":"0x04"},"typeDescriptions":{"typeIdentifier":"t_bytes_calldata_ptr_slice","typeString":"bytes calldata slice"}},{"components":[{"id":6120,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"26792:6:15","typeDescriptions":{"typeIdentifier":"t_type$_t_uint64_$","typeString":"type(uint64)"},"typeName":{"id":6119,"name":"uint64","nodeType":"ElementaryTypeName","src":"26792:6:15","typeDescriptions":{}}}],"id":6121,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"TupleExpression","src":"26791:8:15","typeDescriptions":{"typeIdentifier":"t_type$_t_uint64_$","typeString":"type(uint64)"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes_calldata_ptr_slice","typeString":"bytes calldata slice"},{"typeIdentifier":"t_type$_t_uint64_$","typeString":"type(uint64)"}],"expression":{"id":6113,"name":"abi","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-1,"src":"26763:3:15","typeDescriptions":{"typeIdentifier":"t_magic_abi","typeString":"abi"}},"id":6114,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberLocation":"26767:6:15","memberName":"decode","nodeType":"MemberAccess","src":"26763:10:15","typeDescriptions":{"typeIdentifier":"t_function_abidecode_pure$__$returns$__$","typeString":"function () pure"}},"id":6122,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"26763:37:15","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint64","typeString":"uint64"}},"nodeType":"VariableDeclarationStatement","src":"26747:53:15"},{"expression":{"components":[{"hexValue":"74727565","id":6124,"isConstant":false,"isLValue":false,"isPure":true,"kind":"bool","lValueRequested":false,"nodeType":"Literal","src":"26822:4:15","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"value":"true"},{"arguments":[{"id":6126,"name":"roleId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6112,"src":"26841:6:15","typeDescriptions":{"typeIdentifier":"t_uint64","typeString":"uint64"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint64","typeString":"uint64"}],"id":6125,"name":"getRoleAdmin","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4751,"src":"26828:12:15","typeDescriptions":{"typeIdentifier":"t_function_internal_view$_t_uint64_$returns$_t_uint64_$","typeString":"function (uint64) view returns (uint64)"}},"id":6127,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"26828:20:15","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint64","typeString":"uint64"}},{"hexValue":"30","id":6128,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"26850:1:15","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"}],"id":6129,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"26821:31:15","typeDescriptions":{"typeIdentifier":"t_tuple$_t_bool_$_t_uint64_$_t_rational_0_by_1_$","typeString":"tuple(bool,uint64,int_const 0)"}},"functionReturnParameters":6003,"id":6130,"nodeType":"Return","src":"26814:38:15"}]}},{"expression":{"components":[{"hexValue":"66616c7365","id":6133,"isConstant":false,"isLValue":false,"isPure":true,"kind":"bool","lValueRequested":false,"nodeType":"Literal","src":"26881:5:15","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"value":"false"},{"arguments":[{"arguments":[{"id":6137,"name":"this","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-28,"src":"26918:4:15","typeDescriptions":{"typeIdentifier":"t_contract$_AccessManager_$6372","typeString":"contract AccessManager"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_contract$_AccessManager_$6372","typeString":"contract AccessManager"}],"id":6136,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"26910:7:15","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":6135,"name":"address","nodeType":"ElementaryTypeName","src":"26910:7:15","typeDescriptions":{}}},"id":6138,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"26910:13:15","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":6139,"name":"selector","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6016,"src":"26925:8:15","typeDescriptions":{"typeIdentifier":"t_bytes4","typeString":"bytes4"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_bytes4","typeString":"bytes4"}],"id":6134,"name":"getTargetFunctionRole","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4721,"src":"26888:21:15","typeDescriptions":{"typeIdentifier":"t_function_internal_view$_t_address_$_t_bytes4_$returns$_t_uint64_$","typeString":"function (address,bytes4) view returns (uint64)"}},"id":6140,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"26888:46:15","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint64","typeString":"uint64"}},{"hexValue":"30","id":6141,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"26936:1:15","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"}],"id":6142,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"26880:58:15","typeDescriptions":{"typeIdentifier":"t_tuple$_t_bool_$_t_uint64_$_t_rational_0_by_1_$","typeString":"tuple(bool,uint64,int_const 0)"}},"functionReturnParameters":6003,"id":6143,"nodeType":"Return","src":"26873:65:15"}]},"documentation":{"id":5993,"nodeType":"StructuredDocumentation","src":"24867:395:15","text":" @dev Get the admin restrictions of a given function call based on the function and arguments involved.\n Returns:\n - bool restricted: does this data match a restricted operation\n - uint64: which role is this operation restricted to\n - uint32: minimum delay to enforce for that operation (max between operation's delay and admin's execution delay)"},"id":6145,"implemented":true,"kind":"function","modifiers":[],"name":"_getAdminRestrictions","nameLocation":"25276:21:15","nodeType":"FunctionDefinition","parameters":{"id":5996,"nodeType":"ParameterList","parameters":[{"constant":false,"id":5995,"mutability":"mutable","name":"data","nameLocation":"25322:4:15","nodeType":"VariableDeclaration","scope":6145,"src":"25307:19:15","stateVariable":false,"storageLocation":"calldata","typeDescriptions":{"typeIdentifier":"t_bytes_calldata_ptr","typeString":"bytes"},"typeName":{"id":5994,"name":"bytes","nodeType":"ElementaryTypeName","src":"25307:5:15","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"}],"src":"25297:35:15"},"returnParameters":{"id":6003,"nodeType":"ParameterList","parameters":[{"constant":false,"id":5998,"mutability":"mutable","name":"adminRestricted","nameLocation":"25360:15:15","nodeType":"VariableDeclaration","scope":6145,"src":"25355:20:15","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":5997,"name":"bool","nodeType":"ElementaryTypeName","src":"25355:4:15","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"},{"constant":false,"id":6000,"mutability":"mutable","name":"roleAdminId","nameLocation":"25384:11:15","nodeType":"VariableDeclaration","scope":6145,"src":"25377:18:15","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint64","typeString":"uint64"},"typeName":{"id":5999,"name":"uint64","nodeType":"ElementaryTypeName","src":"25377:6:15","typeDescriptions":{"typeIdentifier":"t_uint64","typeString":"uint64"}},"visibility":"internal"},{"constant":false,"id":6002,"mutability":"mutable","name":"executionDelay","nameLocation":"25404:14:15","nodeType":"VariableDeclaration","scope":6145,"src":"25397:21:15","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint32","typeString":"uint32"},"typeName":{"id":6001,"name":"uint32","nodeType":"ElementaryTypeName","src":"25397:6:15","typeDescriptions":{"typeIdentifier":"t_uint32","typeString":"uint32"}},"visibility":"internal"}],"src":"25354:65:15"},"scope":6372,"src":"25267:1678:15","stateMutability":"view","virtual":false,"visibility":"private"},{"body":{"id":6189,"nodeType":"Block","src":"27537:217:15","statements":[{"condition":{"commonType":{"typeIdentifier":"t_address","typeString":"address"},"id":6164,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":6159,"name":"target","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6150,"src":"27551:6:15","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"arguments":[{"id":6162,"name":"this","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-28,"src":"27569:4:15","typeDescriptions":{"typeIdentifier":"t_contract$_AccessManager_$6372","typeString":"contract AccessManager"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_contract$_AccessManager_$6372","typeString":"contract AccessManager"}],"id":6161,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"27561:7:15","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":6160,"name":"address","nodeType":"ElementaryTypeName","src":"27561:7:15","typeDescriptions":{}}},"id":6163,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"27561:13:15","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"src":"27551:23:15","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"falseBody":{"id":6187,"nodeType":"Block","src":"27640:108:15","statements":[{"expression":{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":6174,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"expression":{"id":6171,"name":"data","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6152,"src":"27661:4:15","typeDescriptions":{"typeIdentifier":"t_bytes_calldata_ptr","typeString":"bytes calldata"}},"id":6172,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"27666:6:15","memberName":"length","nodeType":"MemberAccess","src":"27661:11:15","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"<","rightExpression":{"hexValue":"34","id":6173,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"27675:1:15","typeDescriptions":{"typeIdentifier":"t_rational_4_by_1","typeString":"int_const 4"},"value":"4"},"src":"27661:15:15","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"falseExpression":{"arguments":[{"id":6179,"name":"caller","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6148,"src":"27700:6:15","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":6180,"name":"target","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6150,"src":"27708:6:15","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"arguments":[{"id":6182,"name":"data","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6152,"src":"27731:4:15","typeDescriptions":{"typeIdentifier":"t_bytes_calldata_ptr","typeString":"bytes calldata"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes_calldata_ptr","typeString":"bytes calldata"}],"id":6181,"name":"_checkSelector","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6345,"src":"27716:14:15","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_bytes_calldata_ptr_$returns$_t_bytes4_$","typeString":"function (bytes calldata) pure returns (bytes4)"}},"id":6183,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"27716:20:15","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes4","typeString":"bytes4"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_bytes4","typeString":"bytes4"}],"id":6178,"name":"canCall","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4671,"src":"27692:7:15","typeDescriptions":{"typeIdentifier":"t_function_internal_view$_t_address_$_t_address_$_t_bytes4_$returns$_t_bool_$_t_uint32_$","typeString":"function (address,address,bytes4) view returns (bool,uint32)"}},"id":6184,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"27692:45:15","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$_t_bool_$_t_uint32_$","typeString":"tuple(bool,uint32)"}},"id":6185,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"Conditional","src":"27661:76:15","trueExpression":{"components":[{"hexValue":"66616c7365","id":6175,"isConstant":false,"isLValue":false,"isPure":true,"kind":"bool","lValueRequested":false,"nodeType":"Literal","src":"27680:5:15","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"value":"false"},{"hexValue":"30","id":6176,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"27687:1:15","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"}],"id":6177,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"TupleExpression","src":"27679:10:15","typeDescriptions":{"typeIdentifier":"t_tuple$_t_bool_$_t_rational_0_by_1_$","typeString":"tuple(bool,int_const 0)"}},"typeDescriptions":{"typeIdentifier":"t_tuple$_t_bool_$_t_uint32_$","typeString":"tuple(bool,uint32)"}},"functionReturnParameters":6158,"id":6186,"nodeType":"Return","src":"27654:83:15"}]},"id":6188,"nodeType":"IfStatement","src":"27547:201:15","trueBody":{"id":6170,"nodeType":"Block","src":"27576:58:15","statements":[{"expression":{"arguments":[{"id":6166,"name":"caller","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6148,"src":"27610:6:15","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":6167,"name":"data","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6152,"src":"27618:4:15","typeDescriptions":{"typeIdentifier":"t_bytes_calldata_ptr","typeString":"bytes calldata"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_bytes_calldata_ptr","typeString":"bytes calldata"}],"id":6165,"name":"_canCallSelf","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6292,"src":"27597:12:15","typeDescriptions":{"typeIdentifier":"t_function_internal_view$_t_address_$_t_bytes_calldata_ptr_$returns$_t_bool_$_t_uint32_$","typeString":"function (address,bytes calldata) view returns (bool,uint32)"}},"id":6168,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"27597:26:15","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$_t_bool_$_t_uint32_$","typeString":"tuple(bool,uint32)"}},"functionReturnParameters":6158,"id":6169,"nodeType":"Return","src":"27590:33:15"}]}}]},"documentation":{"id":6146,"nodeType":"StructuredDocumentation","src":"27071:300:15","text":" @dev An extended version of {canCall} for internal usage that checks {_canCallSelf}\n when the target is this contract.\n Returns:\n - bool immediate: whether the operation can be executed immediately (with no delay)\n - uint32 delay: the execution delay"},"id":6190,"implemented":true,"kind":"function","modifiers":[],"name":"_canCallExtended","nameLocation":"27385:16:15","nodeType":"FunctionDefinition","parameters":{"id":6153,"nodeType":"ParameterList","parameters":[{"constant":false,"id":6148,"mutability":"mutable","name":"caller","nameLocation":"27419:6:15","nodeType":"VariableDeclaration","scope":6190,"src":"27411:14:15","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":6147,"name":"address","nodeType":"ElementaryTypeName","src":"27411:7:15","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":6150,"mutability":"mutable","name":"target","nameLocation":"27443:6:15","nodeType":"VariableDeclaration","scope":6190,"src":"27435:14:15","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":6149,"name":"address","nodeType":"ElementaryTypeName","src":"27435:7:15","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":6152,"mutability":"mutable","name":"data","nameLocation":"27474:4:15","nodeType":"VariableDeclaration","scope":6190,"src":"27459:19:15","stateVariable":false,"storageLocation":"calldata","typeDescriptions":{"typeIdentifier":"t_bytes_calldata_ptr","typeString":"bytes"},"typeName":{"id":6151,"name":"bytes","nodeType":"ElementaryTypeName","src":"27459:5:15","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"}],"src":"27401:83:15"},"returnParameters":{"id":6158,"nodeType":"ParameterList","parameters":[{"constant":false,"id":6155,"mutability":"mutable","name":"immediate","nameLocation":"27512:9:15","nodeType":"VariableDeclaration","scope":6190,"src":"27507:14:15","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":6154,"name":"bool","nodeType":"ElementaryTypeName","src":"27507:4:15","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"},{"constant":false,"id":6157,"mutability":"mutable","name":"delay","nameLocation":"27530:5:15","nodeType":"VariableDeclaration","scope":6190,"src":"27523:12:15","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint32","typeString":"uint32"},"typeName":{"id":6156,"name":"uint32","nodeType":"ElementaryTypeName","src":"27523:6:15","typeDescriptions":{"typeIdentifier":"t_uint32","typeString":"uint32"}},"visibility":"internal"}],"src":"27506:30:15"},"scope":6372,"src":"27376:378:15","stateMutability":"view","virtual":false,"visibility":"private"},{"body":{"id":6291,"nodeType":"Block","src":"27969:996:15","statements":[{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":6205,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"expression":{"id":6202,"name":"data","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6195,"src":"27983:4:15","typeDescriptions":{"typeIdentifier":"t_bytes_calldata_ptr","typeString":"bytes calldata"}},"id":6203,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"27988:6:15","memberName":"length","nodeType":"MemberAccess","src":"27983:11:15","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"<","rightExpression":{"hexValue":"34","id":6204,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"27997:1:15","typeDescriptions":{"typeIdentifier":"t_rational_4_by_1","typeString":"int_const 4"},"value":"4"},"src":"27983:15:15","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":6211,"nodeType":"IfStatement","src":"27979:63:15","trueBody":{"id":6210,"nodeType":"Block","src":"28000:42:15","statements":[{"expression":{"components":[{"hexValue":"66616c7365","id":6206,"isConstant":false,"isLValue":false,"isPure":true,"kind":"bool","lValueRequested":false,"nodeType":"Literal","src":"28022:5:15","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"value":"false"},{"hexValue":"30","id":6207,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"28029:1:15","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"}],"id":6208,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"TupleExpression","src":"28021:10:15","typeDescriptions":{"typeIdentifier":"t_tuple$_t_bool_$_t_rational_0_by_1_$","typeString":"tuple(bool,int_const 0)"}},"functionReturnParameters":6201,"id":6209,"nodeType":"Return","src":"28014:17:15"}]}},{"condition":{"commonType":{"typeIdentifier":"t_address","typeString":"address"},"id":6217,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":6212,"name":"caller","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6193,"src":"28056:6:15","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"arguments":[{"id":6215,"name":"this","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-28,"src":"28074:4:15","typeDescriptions":{"typeIdentifier":"t_contract$_AccessManager_$6372","typeString":"contract AccessManager"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_contract$_AccessManager_$6372","typeString":"contract AccessManager"}],"id":6214,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"28066:7:15","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":6213,"name":"address","nodeType":"ElementaryTypeName","src":"28066:7:15","typeDescriptions":{}}},"id":6216,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"28066:13:15","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"src":"28056:23:15","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":6231,"nodeType":"IfStatement","src":"28052:334:15","trueBody":{"id":6230,"nodeType":"Block","src":"28081:305:15","statements":[{"expression":{"components":[{"arguments":[{"arguments":[{"id":6221,"name":"this","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-28,"src":"28343:4:15","typeDescriptions":{"typeIdentifier":"t_contract$_AccessManager_$6372","typeString":"contract AccessManager"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_contract$_AccessManager_$6372","typeString":"contract AccessManager"}],"id":6220,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"28335:7:15","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":6219,"name":"address","nodeType":"ElementaryTypeName","src":"28335:7:15","typeDescriptions":{}}},"id":6222,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"28335:13:15","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"arguments":[{"id":6224,"name":"data","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6195,"src":"28365:4:15","typeDescriptions":{"typeIdentifier":"t_bytes_calldata_ptr","typeString":"bytes calldata"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes_calldata_ptr","typeString":"bytes calldata"}],"id":6223,"name":"_checkSelector","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6345,"src":"28350:14:15","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_bytes_calldata_ptr_$returns$_t_bytes4_$","typeString":"function (bytes calldata) pure returns (bytes4)"}},"id":6225,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"28350:20:15","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes4","typeString":"bytes4"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_bytes4","typeString":"bytes4"}],"id":6218,"name":"_isExecuting","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6310,"src":"28322:12:15","typeDescriptions":{"typeIdentifier":"t_function_internal_view$_t_address_$_t_bytes4_$returns$_t_bool_$","typeString":"function (address,bytes4) view returns (bool)"}},"id":6226,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"28322:49:15","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},{"hexValue":"30","id":6227,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"28373:1:15","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"}],"id":6228,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"28321:54:15","typeDescriptions":{"typeIdentifier":"t_tuple$_t_bool_$_t_rational_0_by_1_$","typeString":"tuple(bool,int_const 0)"}},"functionReturnParameters":6201,"id":6229,"nodeType":"Return","src":"28314:61:15"}]}},{"assignments":[6233,6235,6237],"declarations":[{"constant":false,"id":6233,"mutability":"mutable","name":"adminRestricted","nameLocation":"28402:15:15","nodeType":"VariableDeclaration","scope":6291,"src":"28397:20:15","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":6232,"name":"bool","nodeType":"ElementaryTypeName","src":"28397:4:15","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"},{"constant":false,"id":6235,"mutability":"mutable","name":"roleId","nameLocation":"28426:6:15","nodeType":"VariableDeclaration","scope":6291,"src":"28419:13:15","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint64","typeString":"uint64"},"typeName":{"id":6234,"name":"uint64","nodeType":"ElementaryTypeName","src":"28419:6:15","typeDescriptions":{"typeIdentifier":"t_uint64","typeString":"uint64"}},"visibility":"internal"},{"constant":false,"id":6237,"mutability":"mutable","name":"operationDelay","nameLocation":"28441:14:15","nodeType":"VariableDeclaration","scope":6291,"src":"28434:21:15","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint32","typeString":"uint32"},"typeName":{"id":6236,"name":"uint32","nodeType":"ElementaryTypeName","src":"28434:6:15","typeDescriptions":{"typeIdentifier":"t_uint32","typeString":"uint32"}},"visibility":"internal"}],"id":6241,"initialValue":{"arguments":[{"id":6239,"name":"data","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6195,"src":"28481:4:15","typeDescriptions":{"typeIdentifier":"t_bytes_calldata_ptr","typeString":"bytes calldata"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes_calldata_ptr","typeString":"bytes calldata"}],"id":6238,"name":"_getAdminRestrictions","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6145,"src":"28459:21:15","typeDescriptions":{"typeIdentifier":"t_function_internal_view$_t_bytes_calldata_ptr_$returns$_t_bool_$_t_uint64_$_t_uint32_$","typeString":"function (bytes calldata) view returns (bool,uint64,uint32)"}},"id":6240,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"28459:27:15","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$_t_bool_$_t_uint64_$_t_uint32_$","typeString":"tuple(bool,uint64,uint32)"}},"nodeType":"VariableDeclarationStatement","src":"28396:90:15"},{"condition":{"commonType":{"typeIdentifier":"t_bool","typeString":"bool"},"id":6250,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":6243,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"UnaryOperation","operator":"!","prefix":true,"src":"28566:16:15","subExpression":{"id":6242,"name":"adminRestricted","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6233,"src":"28567:15:15","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"nodeType":"BinaryOperation","operator":"&&","rightExpression":{"arguments":[{"arguments":[{"id":6247,"name":"this","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-28,"src":"28609:4:15","typeDescriptions":{"typeIdentifier":"t_contract$_AccessManager_$6372","typeString":"contract AccessManager"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_contract$_AccessManager_$6372","typeString":"contract AccessManager"}],"id":6246,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"28601:7:15","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":6245,"name":"address","nodeType":"ElementaryTypeName","src":"28601:7:15","typeDescriptions":{}}},"id":6248,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"28601:13:15","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"id":6244,"name":"isTargetClosed","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4703,"src":"28586:14:15","typeDescriptions":{"typeIdentifier":"t_function_internal_view$_t_address_$returns$_t_bool_$","typeString":"function (address) view returns (bool)"}},"id":6249,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"28586:29:15","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"src":"28566:49:15","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":6256,"nodeType":"IfStatement","src":"28562:97:15","trueBody":{"id":6255,"nodeType":"Block","src":"28617:42:15","statements":[{"expression":{"components":[{"hexValue":"66616c7365","id":6251,"isConstant":false,"isLValue":false,"isPure":true,"kind":"bool","lValueRequested":false,"nodeType":"Literal","src":"28639:5:15","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"value":"false"},{"hexValue":"30","id":6252,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"28646:1:15","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"}],"id":6253,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"TupleExpression","src":"28638:10:15","typeDescriptions":{"typeIdentifier":"t_tuple$_t_bool_$_t_rational_0_by_1_$","typeString":"tuple(bool,int_const 0)"}},"functionReturnParameters":6201,"id":6254,"nodeType":"Return","src":"28631:17:15"}]}},{"assignments":[6258,6260],"declarations":[{"constant":false,"id":6258,"mutability":"mutable","name":"inRole","nameLocation":"28675:6:15","nodeType":"VariableDeclaration","scope":6291,"src":"28670:11:15","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":6257,"name":"bool","nodeType":"ElementaryTypeName","src":"28670:4:15","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"},{"constant":false,"id":6260,"mutability":"mutable","name":"executionDelay","nameLocation":"28690:14:15","nodeType":"VariableDeclaration","scope":6291,"src":"28683:21:15","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint32","typeString":"uint32"},"typeName":{"id":6259,"name":"uint32","nodeType":"ElementaryTypeName","src":"28683:6:15","typeDescriptions":{"typeIdentifier":"t_uint32","typeString":"uint32"}},"visibility":"internal"}],"id":6265,"initialValue":{"arguments":[{"id":6262,"name":"roleId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6235,"src":"28716:6:15","typeDescriptions":{"typeIdentifier":"t_uint64","typeString":"uint64"}},{"id":6263,"name":"caller","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6193,"src":"28724:6:15","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint64","typeString":"uint64"},{"typeIdentifier":"t_address","typeString":"address"}],"id":6261,"name":"hasRole","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4873,"src":"28708:7:15","typeDescriptions":{"typeIdentifier":"t_function_internal_view$_t_uint64_$_t_address_$returns$_t_bool_$_t_uint32_$","typeString":"function (uint64,address) view returns (bool,uint32)"}},"id":6264,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"28708:23:15","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$_t_bool_$_t_uint32_$","typeString":"tuple(bool,uint32)"}},"nodeType":"VariableDeclarationStatement","src":"28669:62:15"},{"condition":{"id":6267,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"UnaryOperation","operator":"!","prefix":true,"src":"28745:7:15","subExpression":{"id":6266,"name":"inRole","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6258,"src":"28746:6:15","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":6273,"nodeType":"IfStatement","src":"28741:55:15","trueBody":{"id":6272,"nodeType":"Block","src":"28754:42:15","statements":[{"expression":{"components":[{"hexValue":"66616c7365","id":6268,"isConstant":false,"isLValue":false,"isPure":true,"kind":"bool","lValueRequested":false,"nodeType":"Literal","src":"28776:5:15","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"value":"false"},{"hexValue":"30","id":6269,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"28783:1:15","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"}],"id":6270,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"TupleExpression","src":"28775:10:15","typeDescriptions":{"typeIdentifier":"t_tuple$_t_bool_$_t_rational_0_by_1_$","typeString":"tuple(bool,int_const 0)"}},"functionReturnParameters":6201,"id":6271,"nodeType":"Return","src":"28768:17:15"}]}},{"expression":{"id":6283,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":6274,"name":"delay","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6200,"src":"28866:5:15","typeDescriptions":{"typeIdentifier":"t_uint32","typeString":"uint32"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"arguments":[{"arguments":[{"id":6279,"name":"operationDelay","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6237,"src":"28890:14:15","typeDescriptions":{"typeIdentifier":"t_uint32","typeString":"uint32"}},{"id":6280,"name":"executionDelay","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6260,"src":"28906:14:15","typeDescriptions":{"typeIdentifier":"t_uint32","typeString":"uint32"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint32","typeString":"uint32"},{"typeIdentifier":"t_uint32","typeString":"uint32"}],"expression":{"id":6277,"name":"Math","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":12726,"src":"28881:4:15","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_Math_$12726_$","typeString":"type(library Math)"}},"id":6278,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"28886:3:15","memberName":"max","nodeType":"MemberAccess","referencedDeclaration":11392,"src":"28881:8:15","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_uint256_$_t_uint256_$returns$_t_uint256_$","typeString":"function (uint256,uint256) pure returns (uint256)"}},"id":6281,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"28881:40:15","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":6276,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"28874:6:15","typeDescriptions":{"typeIdentifier":"t_type$_t_uint32_$","typeString":"type(uint32)"},"typeName":{"id":6275,"name":"uint32","nodeType":"ElementaryTypeName","src":"28874:6:15","typeDescriptions":{}}},"id":6282,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"28874:48:15","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint32","typeString":"uint32"}},"src":"28866:56:15","typeDescriptions":{"typeIdentifier":"t_uint32","typeString":"uint32"}},"id":6284,"nodeType":"ExpressionStatement","src":"28866:56:15"},{"expression":{"components":[{"commonType":{"typeIdentifier":"t_uint32","typeString":"uint32"},"id":6287,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":6285,"name":"delay","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6200,"src":"28940:5:15","typeDescriptions":{"typeIdentifier":"t_uint32","typeString":"uint32"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"hexValue":"30","id":6286,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"28949:1:15","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"28940:10:15","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},{"id":6288,"name":"delay","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6200,"src":"28952:5:15","typeDescriptions":{"typeIdentifier":"t_uint32","typeString":"uint32"}}],"id":6289,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"28939:19:15","typeDescriptions":{"typeIdentifier":"t_tuple$_t_bool_$_t_uint32_$","typeString":"tuple(bool,uint32)"}},"functionReturnParameters":6201,"id":6290,"nodeType":"Return","src":"28932:26:15"}]},"documentation":{"id":6191,"nodeType":"StructuredDocumentation","src":"27760:93:15","text":" @dev A version of {canCall} that checks for restrictions in this contract."},"id":6292,"implemented":true,"kind":"function","modifiers":[],"name":"_canCallSelf","nameLocation":"27867:12:15","nodeType":"FunctionDefinition","parameters":{"id":6196,"nodeType":"ParameterList","parameters":[{"constant":false,"id":6193,"mutability":"mutable","name":"caller","nameLocation":"27888:6:15","nodeType":"VariableDeclaration","scope":6292,"src":"27880:14:15","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":6192,"name":"address","nodeType":"ElementaryTypeName","src":"27880:7:15","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":6195,"mutability":"mutable","name":"data","nameLocation":"27911:4:15","nodeType":"VariableDeclaration","scope":6292,"src":"27896:19:15","stateVariable":false,"storageLocation":"calldata","typeDescriptions":{"typeIdentifier":"t_bytes_calldata_ptr","typeString":"bytes"},"typeName":{"id":6194,"name":"bytes","nodeType":"ElementaryTypeName","src":"27896:5:15","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"}],"src":"27879:37:15"},"returnParameters":{"id":6201,"nodeType":"ParameterList","parameters":[{"constant":false,"id":6198,"mutability":"mutable","name":"immediate","nameLocation":"27944:9:15","nodeType":"VariableDeclaration","scope":6292,"src":"27939:14:15","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":6197,"name":"bool","nodeType":"ElementaryTypeName","src":"27939:4:15","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"},{"constant":false,"id":6200,"mutability":"mutable","name":"delay","nameLocation":"27962:5:15","nodeType":"VariableDeclaration","scope":6292,"src":"27955:12:15","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint32","typeString":"uint32"},"typeName":{"id":6199,"name":"uint32","nodeType":"ElementaryTypeName","src":"27955:6:15","typeDescriptions":{"typeIdentifier":"t_uint32","typeString":"uint32"}},"visibility":"internal"}],"src":"27938:30:15"},"scope":6372,"src":"27858:1107:15","stateMutability":"view","virtual":false,"visibility":"private"},{"body":{"id":6309,"nodeType":"Block","src":"29168:74:15","statements":[{"expression":{"commonType":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"id":6307,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":6302,"name":"_executionId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4568,"src":"29185:12:15","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"arguments":[{"id":6304,"name":"target","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6295,"src":"29218:6:15","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":6305,"name":"selector","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6297,"src":"29226:8:15","typeDescriptions":{"typeIdentifier":"t_bytes4","typeString":"bytes4"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_bytes4","typeString":"bytes4"}],"id":6303,"name":"_hashExecutionId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6371,"src":"29201:16:15","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_address_$_t_bytes4_$returns$_t_bytes32_$","typeString":"function (address,bytes4) pure returns (bytes32)"}},"id":6306,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"29201:34:15","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"src":"29185:50:15","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"functionReturnParameters":6301,"id":6308,"nodeType":"Return","src":"29178:57:15"}]},"documentation":{"id":6293,"nodeType":"StructuredDocumentation","src":"28971:109:15","text":" @dev Returns true if a call with `target` and `selector` is being executed via {executed}."},"id":6310,"implemented":true,"kind":"function","modifiers":[],"name":"_isExecuting","nameLocation":"29094:12:15","nodeType":"FunctionDefinition","parameters":{"id":6298,"nodeType":"ParameterList","parameters":[{"constant":false,"id":6295,"mutability":"mutable","name":"target","nameLocation":"29115:6:15","nodeType":"VariableDeclaration","scope":6310,"src":"29107:14:15","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":6294,"name":"address","nodeType":"ElementaryTypeName","src":"29107:7:15","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":6297,"mutability":"mutable","name":"selector","nameLocation":"29130:8:15","nodeType":"VariableDeclaration","scope":6310,"src":"29123:15:15","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes4","typeString":"bytes4"},"typeName":{"id":6296,"name":"bytes4","nodeType":"ElementaryTypeName","src":"29123:6:15","typeDescriptions":{"typeIdentifier":"t_bytes4","typeString":"bytes4"}},"visibility":"internal"}],"src":"29106:33:15"},"returnParameters":{"id":6301,"nodeType":"ParameterList","parameters":[{"constant":false,"id":6300,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":6310,"src":"29162:4:15","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":6299,"name":"bool","nodeType":"ElementaryTypeName","src":"29162:4:15","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"}],"src":"29161:6:15"},"scope":6372,"src":"29085:157:15","stateMutability":"view","virtual":false,"visibility":"private"},{"body":{"id":6327,"nodeType":"Block","src":"29412:68:15","statements":[{"expression":{"commonType":{"typeIdentifier":"t_uint48","typeString":"uint48"},"id":6325,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"commonType":{"typeIdentifier":"t_uint48","typeString":"uint48"},"id":6321,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":6318,"name":"timepoint","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6313,"src":"29429:9:15","typeDescriptions":{"typeIdentifier":"t_uint48","typeString":"uint48"}},"nodeType":"BinaryOperation","operator":"+","rightExpression":{"arguments":[],"expression":{"argumentTypes":[],"id":6319,"name":"expiration","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4680,"src":"29441:10:15","typeDescriptions":{"typeIdentifier":"t_function_internal_view$__$returns$_t_uint32_$","typeString":"function () view returns (uint32)"}},"id":6320,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"29441:12:15","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint32","typeString":"uint32"}},"src":"29429:24:15","typeDescriptions":{"typeIdentifier":"t_uint48","typeString":"uint48"}},"nodeType":"BinaryOperation","operator":"<=","rightExpression":{"arguments":[],"expression":{"argumentTypes":[],"expression":{"id":6322,"name":"Time","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":14765,"src":"29457:4:15","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_Time_$14765_$","typeString":"type(library Time)"}},"id":6323,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"29462:9:15","memberName":"timestamp","nodeType":"MemberAccess","referencedDeclaration":14513,"src":"29457:14:15","typeDescriptions":{"typeIdentifier":"t_function_internal_view$__$returns$_t_uint48_$","typeString":"function () view returns (uint48)"}},"id":6324,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"29457:16:15","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint48","typeString":"uint48"}},"src":"29429:44:15","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"functionReturnParameters":6317,"id":6326,"nodeType":"Return","src":"29422:51:15"}]},"documentation":{"id":6311,"nodeType":"StructuredDocumentation","src":"29248:93:15","text":" @dev Returns true if a schedule timepoint is past its expiration deadline."},"id":6328,"implemented":true,"kind":"function","modifiers":[],"name":"_isExpired","nameLocation":"29355:10:15","nodeType":"FunctionDefinition","parameters":{"id":6314,"nodeType":"ParameterList","parameters":[{"constant":false,"id":6313,"mutability":"mutable","name":"timepoint","nameLocation":"29373:9:15","nodeType":"VariableDeclaration","scope":6328,"src":"29366:16:15","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint48","typeString":"uint48"},"typeName":{"id":6312,"name":"uint48","nodeType":"ElementaryTypeName","src":"29366:6:15","typeDescriptions":{"typeIdentifier":"t_uint48","typeString":"uint48"}},"visibility":"internal"}],"src":"29365:18:15"},"returnParameters":{"id":6317,"nodeType":"ParameterList","parameters":[{"constant":false,"id":6316,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":6328,"src":"29406:4:15","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":6315,"name":"bool","nodeType":"ElementaryTypeName","src":"29406:4:15","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"}],"src":"29405:6:15"},"scope":6372,"src":"29346:134:15","stateMutability":"view","virtual":false,"visibility":"private"},{"body":{"id":6344,"nodeType":"Block","src":"29665:41:15","statements":[{"expression":{"arguments":[{"baseExpression":{"id":6338,"name":"data","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6331,"src":"29689:4:15","typeDescriptions":{"typeIdentifier":"t_bytes_calldata_ptr","typeString":"bytes calldata"}},"endExpression":{"hexValue":"34","id":6340,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"29696:1:15","typeDescriptions":{"typeIdentifier":"t_rational_4_by_1","typeString":"int_const 4"},"value":"4"},"id":6341,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"IndexRangeAccess","src":"29689:9:15","startExpression":{"hexValue":"30","id":6339,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"29694:1:15","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"typeDescriptions":{"typeIdentifier":"t_bytes_calldata_ptr_slice","typeString":"bytes calldata slice"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes_calldata_ptr_slice","typeString":"bytes calldata slice"}],"id":6337,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"29682:6:15","typeDescriptions":{"typeIdentifier":"t_type$_t_bytes4_$","typeString":"type(bytes4)"},"typeName":{"id":6336,"name":"bytes4","nodeType":"ElementaryTypeName","src":"29682:6:15","typeDescriptions":{}}},"id":6342,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"29682:17:15","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes4","typeString":"bytes4"}},"functionReturnParameters":6335,"id":6343,"nodeType":"Return","src":"29675:24:15"}]},"documentation":{"id":6329,"nodeType":"StructuredDocumentation","src":"29486:99:15","text":" @dev Extracts the selector from calldata. Panics if data is not at least 4 bytes"},"id":6345,"implemented":true,"kind":"function","modifiers":[],"name":"_checkSelector","nameLocation":"29599:14:15","nodeType":"FunctionDefinition","parameters":{"id":6332,"nodeType":"ParameterList","parameters":[{"constant":false,"id":6331,"mutability":"mutable","name":"data","nameLocation":"29629:4:15","nodeType":"VariableDeclaration","scope":6345,"src":"29614:19:15","stateVariable":false,"storageLocation":"calldata","typeDescriptions":{"typeIdentifier":"t_bytes_calldata_ptr","typeString":"bytes"},"typeName":{"id":6330,"name":"bytes","nodeType":"ElementaryTypeName","src":"29614:5:15","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"}],"src":"29613:21:15"},"returnParameters":{"id":6335,"nodeType":"ParameterList","parameters":[{"constant":false,"id":6334,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":6345,"src":"29657:6:15","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes4","typeString":"bytes4"},"typeName":{"id":6333,"name":"bytes4","nodeType":"ElementaryTypeName","src":"29657:6:15","typeDescriptions":{"typeIdentifier":"t_bytes4","typeString":"bytes4"}},"visibility":"internal"}],"src":"29656:8:15"},"scope":6372,"src":"29590:116:15","stateMutability":"pure","virtual":false,"visibility":"private"},{"body":{"id":6370,"nodeType":"Block","src":"29870:94:15","statements":[{"expression":{"arguments":[{"arguments":[{"arguments":[{"arguments":[{"id":6363,"name":"target","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6348,"src":"29937:6:15","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"id":6362,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"29929:7:15","typeDescriptions":{"typeIdentifier":"t_type$_t_uint160_$","typeString":"type(uint160)"},"typeName":{"id":6361,"name":"uint160","nodeType":"ElementaryTypeName","src":"29929:7:15","typeDescriptions":{}}},"id":6364,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"29929:15:15","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint160","typeString":"uint160"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint160","typeString":"uint160"}],"id":6360,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"29921:7:15","typeDescriptions":{"typeIdentifier":"t_type$_t_uint256_$","typeString":"type(uint256)"},"typeName":{"id":6359,"name":"uint256","nodeType":"ElementaryTypeName","src":"29921:7:15","typeDescriptions":{}}},"id":6365,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"29921:24:15","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":6358,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"29913:7:15","typeDescriptions":{"typeIdentifier":"t_type$_t_bytes32_$","typeString":"type(bytes32)"},"typeName":{"id":6357,"name":"bytes32","nodeType":"ElementaryTypeName","src":"29913:7:15","typeDescriptions":{}}},"id":6366,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"29913:33:15","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},{"id":6367,"name":"selector","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6350,"src":"29948:8:15","typeDescriptions":{"typeIdentifier":"t_bytes4","typeString":"bytes4"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes32","typeString":"bytes32"},{"typeIdentifier":"t_bytes4","typeString":"bytes4"}],"expression":{"id":6355,"name":"Hashes","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":11072,"src":"29887:6:15","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_Hashes_$11072_$","typeString":"type(library Hashes)"}},"id":6356,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"29894:18:15","memberName":"efficientKeccak256","nodeType":"MemberAccess","referencedDeclaration":11071,"src":"29887:25:15","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_bytes32_$_t_bytes32_$returns$_t_bytes32_$","typeString":"function (bytes32,bytes32) pure returns (bytes32)"}},"id":6368,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"29887:70:15","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"functionReturnParameters":6354,"id":6369,"nodeType":"Return","src":"29880:77:15"}]},"documentation":{"id":6346,"nodeType":"StructuredDocumentation","src":"29712:63:15","text":" @dev Hashing function for execute protection"},"id":6371,"implemented":true,"kind":"function","modifiers":[],"name":"_hashExecutionId","nameLocation":"29789:16:15","nodeType":"FunctionDefinition","parameters":{"id":6351,"nodeType":"ParameterList","parameters":[{"constant":false,"id":6348,"mutability":"mutable","name":"target","nameLocation":"29814:6:15","nodeType":"VariableDeclaration","scope":6371,"src":"29806:14:15","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":6347,"name":"address","nodeType":"ElementaryTypeName","src":"29806:7:15","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":6350,"mutability":"mutable","name":"selector","nameLocation":"29829:8:15","nodeType":"VariableDeclaration","scope":6371,"src":"29822:15:15","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes4","typeString":"bytes4"},"typeName":{"id":6349,"name":"bytes4","nodeType":"ElementaryTypeName","src":"29822:6:15","typeDescriptions":{"typeIdentifier":"t_bytes4","typeString":"bytes4"}},"visibility":"internal"}],"src":"29805:33:15"},"returnParameters":{"id":6354,"nodeType":"ParameterList","parameters":[{"constant":false,"id":6353,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":6371,"src":"29861:7:15","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":6352,"name":"bytes32","nodeType":"ElementaryTypeName","src":"29861:7:15","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"}],"src":"29860:9:15"},"scope":6372,"src":"29780:184:15","stateMutability":"pure","virtual":false,"visibility":"private"}],"scope":6373,"src":"3782:26184:15","usedErrors":[6522,6526,6530,6534,6538,6540,6546,6554,6558,6568,6572,9878,10296,10299,12736],"usedEvents":[6429,6436,6443,6450,6463,6470,6477,6484,6493,6500,6509,6518]}],"src":"116:29851:15"},"id":15},"@openzeppelin/contracts/access/manager/IAccessManaged.sol":{"ast":{"absolutePath":"@openzeppelin/contracts/access/manager/IAccessManaged.sol","exportedSymbols":{"IAccessManaged":[6412]},"id":6413,"license":"MIT","nodeType":"SourceUnit","nodes":[{"id":6374,"literals":["solidity",">=","0.8",".4"],"nodeType":"PragmaDirective","src":"117:24:16"},{"abstract":false,"baseContracts":[],"canonicalName":"IAccessManaged","contractDependencies":[],"contractKind":"interface","fullyImplemented":false,"id":6412,"linearizedBaseContracts":[6412],"name":"IAccessManaged","nameLocation":"153:14:16","nodeType":"ContractDefinition","nodes":[{"anonymous":false,"documentation":{"id":6375,"nodeType":"StructuredDocumentation","src":"174:73:16","text":" @dev Authority that manages this contract was updated."},"eventSelector":"2f658b440c35314f52658ea8a740e05b284cdc84dc9ae01e891f21b8933e7cad","id":6379,"name":"AuthorityUpdated","nameLocation":"258:16:16","nodeType":"EventDefinition","parameters":{"id":6378,"nodeType":"ParameterList","parameters":[{"constant":false,"id":6377,"indexed":false,"mutability":"mutable","name":"authority","nameLocation":"283:9:16","nodeType":"VariableDeclaration","scope":6379,"src":"275:17:16","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":6376,"name":"address","nodeType":"ElementaryTypeName","src":"275:7:16","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"274:19:16"},"src":"252:42:16"},{"errorSelector":"068ca9d8","id":6383,"name":"AccessManagedUnauthorized","nameLocation":"306:25:16","nodeType":"ErrorDefinition","parameters":{"id":6382,"nodeType":"ParameterList","parameters":[{"constant":false,"id":6381,"mutability":"mutable","name":"caller","nameLocation":"340:6:16","nodeType":"VariableDeclaration","scope":6383,"src":"332:14:16","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":6380,"name":"address","nodeType":"ElementaryTypeName","src":"332:7:16","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"331:16:16"},"src":"300:48:16"},{"errorSelector":"af77169d","id":6389,"name":"AccessManagedRequiredDelay","nameLocation":"359:26:16","nodeType":"ErrorDefinition","parameters":{"id":6388,"nodeType":"ParameterList","parameters":[{"constant":false,"id":6385,"mutability":"mutable","name":"caller","nameLocation":"394:6:16","nodeType":"VariableDeclaration","scope":6389,"src":"386:14:16","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":6384,"name":"address","nodeType":"ElementaryTypeName","src":"386:7:16","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":6387,"mutability":"mutable","name":"delay","nameLocation":"409:5:16","nodeType":"VariableDeclaration","scope":6389,"src":"402:12:16","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint32","typeString":"uint32"},"typeName":{"id":6386,"name":"uint32","nodeType":"ElementaryTypeName","src":"402:6:16","typeDescriptions":{"typeIdentifier":"t_uint32","typeString":"uint32"}},"visibility":"internal"}],"src":"385:30:16"},"src":"353:63:16"},{"errorSelector":"c2f31e5e","id":6393,"name":"AccessManagedInvalidAuthority","nameLocation":"427:29:16","nodeType":"ErrorDefinition","parameters":{"id":6392,"nodeType":"ParameterList","parameters":[{"constant":false,"id":6391,"mutability":"mutable","name":"authority","nameLocation":"465:9:16","nodeType":"VariableDeclaration","scope":6393,"src":"457:17:16","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":6390,"name":"address","nodeType":"ElementaryTypeName","src":"457:7:16","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"456:19:16"},"src":"421:55:16"},{"documentation":{"id":6394,"nodeType":"StructuredDocumentation","src":"482:54:16","text":" @dev Returns the current authority."},"functionSelector":"bf7e214f","id":6399,"implemented":false,"kind":"function","modifiers":[],"name":"authority","nameLocation":"550:9:16","nodeType":"FunctionDefinition","parameters":{"id":6395,"nodeType":"ParameterList","parameters":[],"src":"559:2:16"},"returnParameters":{"id":6398,"nodeType":"ParameterList","parameters":[{"constant":false,"id":6397,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":6399,"src":"585:7:16","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":6396,"name":"address","nodeType":"ElementaryTypeName","src":"585:7:16","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"584:9:16"},"scope":6412,"src":"541:53:16","stateMutability":"view","virtual":false,"visibility":"external"},{"documentation":{"id":6400,"nodeType":"StructuredDocumentation","src":"600:103:16","text":" @dev Transfers control to a new authority. The caller must be the current authority."},"functionSelector":"7a9e5e4b","id":6405,"implemented":false,"kind":"function","modifiers":[],"name":"setAuthority","nameLocation":"717:12:16","nodeType":"FunctionDefinition","parameters":{"id":6403,"nodeType":"ParameterList","parameters":[{"constant":false,"id":6402,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":6405,"src":"730:7:16","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":6401,"name":"address","nodeType":"ElementaryTypeName","src":"730:7:16","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"729:9:16"},"returnParameters":{"id":6404,"nodeType":"ParameterList","parameters":[],"src":"747:0:16"},"scope":6412,"src":"708:40:16","stateMutability":"nonpayable","virtual":false,"visibility":"external"},{"documentation":{"id":6406,"nodeType":"StructuredDocumentation","src":"754:284:16","text":" @dev Returns true only in the context of a delayed restricted call, at the moment that the scheduled operation is\n being consumed. Prevents denial of service for delayed restricted calls in the case that the contract performs\n attacker controlled calls."},"functionSelector":"8fb36037","id":6411,"implemented":false,"kind":"function","modifiers":[],"name":"isConsumingScheduledOp","nameLocation":"1052:22:16","nodeType":"FunctionDefinition","parameters":{"id":6407,"nodeType":"ParameterList","parameters":[],"src":"1074:2:16"},"returnParameters":{"id":6410,"nodeType":"ParameterList","parameters":[{"constant":false,"id":6409,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":6411,"src":"1100:6:16","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes4","typeString":"bytes4"},"typeName":{"id":6408,"name":"bytes4","nodeType":"ElementaryTypeName","src":"1100:6:16","typeDescriptions":{"typeIdentifier":"t_bytes4","typeString":"bytes4"}},"visibility":"internal"}],"src":"1099:8:16"},"scope":6412,"src":"1043:65:16","stateMutability":"view","virtual":false,"visibility":"external"}],"scope":6413,"src":"143:967:16","usedErrors":[6383,6389,6393],"usedEvents":[6379]}],"src":"117:994:16"},"id":16},"@openzeppelin/contracts/access/manager/IAccessManager.sol":{"ast":{"absolutePath":"@openzeppelin/contracts/access/manager/IAccessManager.sol","exportedSymbols":{"IAccessManager":[6842]},"id":6843,"license":"MIT","nodeType":"SourceUnit","nodes":[{"id":6414,"literals":["solidity",">=","0.8",".4"],"nodeType":"PragmaDirective","src":"117:24:17"},{"abstract":false,"baseContracts":[],"canonicalName":"IAccessManager","contractDependencies":[],"contractKind":"interface","fullyImplemented":false,"id":6842,"linearizedBaseContracts":[6842],"name":"IAccessManager","nameLocation":"153:14:17","nodeType":"ContractDefinition","nodes":[{"anonymous":false,"documentation":{"id":6415,"nodeType":"StructuredDocumentation","src":"174:58:17","text":" @dev A delayed operation was scheduled."},"eventSelector":"82a2da5dee54ea8021c6545b4444620291e07ee83be6dd57edb175062715f3b4","id":6429,"name":"OperationScheduled","nameLocation":"243:18:17","nodeType":"EventDefinition","parameters":{"id":6428,"nodeType":"ParameterList","parameters":[{"constant":false,"id":6417,"indexed":true,"mutability":"mutable","name":"operationId","nameLocation":"287:11:17","nodeType":"VariableDeclaration","scope":6429,"src":"271:27:17","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":6416,"name":"bytes32","nodeType":"ElementaryTypeName","src":"271:7:17","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"},{"constant":false,"id":6419,"indexed":true,"mutability":"mutable","name":"nonce","nameLocation":"323:5:17","nodeType":"VariableDeclaration","scope":6429,"src":"308:20:17","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint32","typeString":"uint32"},"typeName":{"id":6418,"name":"uint32","nodeType":"ElementaryTypeName","src":"308:6:17","typeDescriptions":{"typeIdentifier":"t_uint32","typeString":"uint32"}},"visibility":"internal"},{"constant":false,"id":6421,"indexed":false,"mutability":"mutable","name":"schedule","nameLocation":"345:8:17","nodeType":"VariableDeclaration","scope":6429,"src":"338:15:17","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint48","typeString":"uint48"},"typeName":{"id":6420,"name":"uint48","nodeType":"ElementaryTypeName","src":"338:6:17","typeDescriptions":{"typeIdentifier":"t_uint48","typeString":"uint48"}},"visibility":"internal"},{"constant":false,"id":6423,"indexed":false,"mutability":"mutable","name":"caller","nameLocation":"371:6:17","nodeType":"VariableDeclaration","scope":6429,"src":"363:14:17","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":6422,"name":"address","nodeType":"ElementaryTypeName","src":"363:7:17","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":6425,"indexed":false,"mutability":"mutable","name":"target","nameLocation":"395:6:17","nodeType":"VariableDeclaration","scope":6429,"src":"387:14:17","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":6424,"name":"address","nodeType":"ElementaryTypeName","src":"387:7:17","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":6427,"indexed":false,"mutability":"mutable","name":"data","nameLocation":"417:4:17","nodeType":"VariableDeclaration","scope":6429,"src":"411:10:17","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes"},"typeName":{"id":6426,"name":"bytes","nodeType":"ElementaryTypeName","src":"411:5:17","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"}],"src":"261:166:17"},"src":"237:191:17"},{"anonymous":false,"documentation":{"id":6430,"nodeType":"StructuredDocumentation","src":"434:59:17","text":" @dev A scheduled operation was executed."},"eventSelector":"76a2a46953689d4861a5d3f6ed883ad7e6af674a21f8e162707159fc9dde614d","id":6436,"name":"OperationExecuted","nameLocation":"504:17:17","nodeType":"EventDefinition","parameters":{"id":6435,"nodeType":"ParameterList","parameters":[{"constant":false,"id":6432,"indexed":true,"mutability":"mutable","name":"operationId","nameLocation":"538:11:17","nodeType":"VariableDeclaration","scope":6436,"src":"522:27:17","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":6431,"name":"bytes32","nodeType":"ElementaryTypeName","src":"522:7:17","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"},{"constant":false,"id":6434,"indexed":true,"mutability":"mutable","name":"nonce","nameLocation":"566:5:17","nodeType":"VariableDeclaration","scope":6436,"src":"551:20:17","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint32","typeString":"uint32"},"typeName":{"id":6433,"name":"uint32","nodeType":"ElementaryTypeName","src":"551:6:17","typeDescriptions":{"typeIdentifier":"t_uint32","typeString":"uint32"}},"visibility":"internal"}],"src":"521:51:17"},"src":"498:75:17"},{"anonymous":false,"documentation":{"id":6437,"nodeType":"StructuredDocumentation","src":"579:59:17","text":" @dev A scheduled operation was canceled."},"eventSelector":"bd9ac67a6e2f6463b80927326310338bcbb4bdb7936ce1365ea3e01067e7b9f7","id":6443,"name":"OperationCanceled","nameLocation":"649:17:17","nodeType":"EventDefinition","parameters":{"id":6442,"nodeType":"ParameterList","parameters":[{"constant":false,"id":6439,"indexed":true,"mutability":"mutable","name":"operationId","nameLocation":"683:11:17","nodeType":"VariableDeclaration","scope":6443,"src":"667:27:17","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":6438,"name":"bytes32","nodeType":"ElementaryTypeName","src":"667:7:17","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"},{"constant":false,"id":6441,"indexed":true,"mutability":"mutable","name":"nonce","nameLocation":"711:5:17","nodeType":"VariableDeclaration","scope":6443,"src":"696:20:17","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint32","typeString":"uint32"},"typeName":{"id":6440,"name":"uint32","nodeType":"ElementaryTypeName","src":"696:6:17","typeDescriptions":{"typeIdentifier":"t_uint32","typeString":"uint32"}},"visibility":"internal"}],"src":"666:51:17"},"src":"643:75:17"},{"anonymous":false,"documentation":{"id":6444,"nodeType":"StructuredDocumentation","src":"724:61:17","text":" @dev Informational labelling for a roleId."},"eventSelector":"1256f5b5ecb89caec12db449738f2fbcd1ba5806cf38f35413f4e5c15bf6a450","id":6450,"name":"RoleLabel","nameLocation":"796:9:17","nodeType":"EventDefinition","parameters":{"id":6449,"nodeType":"ParameterList","parameters":[{"constant":false,"id":6446,"indexed":true,"mutability":"mutable","name":"roleId","nameLocation":"821:6:17","nodeType":"VariableDeclaration","scope":6450,"src":"806:21:17","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint64","typeString":"uint64"},"typeName":{"id":6445,"name":"uint64","nodeType":"ElementaryTypeName","src":"806:6:17","typeDescriptions":{"typeIdentifier":"t_uint64","typeString":"uint64"}},"visibility":"internal"},{"constant":false,"id":6448,"indexed":false,"mutability":"mutable","name":"label","nameLocation":"836:5:17","nodeType":"VariableDeclaration","scope":6450,"src":"829:12:17","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string"},"typeName":{"id":6447,"name":"string","nodeType":"ElementaryTypeName","src":"829:6:17","typeDescriptions":{"typeIdentifier":"t_string_storage_ptr","typeString":"string"}},"visibility":"internal"}],"src":"805:37:17"},"src":"790:53:17"},{"anonymous":false,"documentation":{"id":6451,"nodeType":"StructuredDocumentation","src":"849:375:17","text":" @dev Emitted when `account` is granted `roleId`.\n NOTE: The meaning of the `since` argument depends on the `newMember` argument.\n If the role is granted to a new member, the `since` argument indicates when the account becomes a member of the role,\n otherwise it indicates the execution delay for this account and roleId is updated."},"eventSelector":"f98448b987f1428e0e230e1f3c6e2ce15b5693eaf31827fbd0b1ec4b424ae7cf","id":6463,"name":"RoleGranted","nameLocation":"1235:11:17","nodeType":"EventDefinition","parameters":{"id":6462,"nodeType":"ParameterList","parameters":[{"constant":false,"id":6453,"indexed":true,"mutability":"mutable","name":"roleId","nameLocation":"1262:6:17","nodeType":"VariableDeclaration","scope":6463,"src":"1247:21:17","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint64","typeString":"uint64"},"typeName":{"id":6452,"name":"uint64","nodeType":"ElementaryTypeName","src":"1247:6:17","typeDescriptions":{"typeIdentifier":"t_uint64","typeString":"uint64"}},"visibility":"internal"},{"constant":false,"id":6455,"indexed":true,"mutability":"mutable","name":"account","nameLocation":"1286:7:17","nodeType":"VariableDeclaration","scope":6463,"src":"1270:23:17","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":6454,"name":"address","nodeType":"ElementaryTypeName","src":"1270:7:17","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":6457,"indexed":false,"mutability":"mutable","name":"delay","nameLocation":"1302:5:17","nodeType":"VariableDeclaration","scope":6463,"src":"1295:12:17","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint32","typeString":"uint32"},"typeName":{"id":6456,"name":"uint32","nodeType":"ElementaryTypeName","src":"1295:6:17","typeDescriptions":{"typeIdentifier":"t_uint32","typeString":"uint32"}},"visibility":"internal"},{"constant":false,"id":6459,"indexed":false,"mutability":"mutable","name":"since","nameLocation":"1316:5:17","nodeType":"VariableDeclaration","scope":6463,"src":"1309:12:17","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint48","typeString":"uint48"},"typeName":{"id":6458,"name":"uint48","nodeType":"ElementaryTypeName","src":"1309:6:17","typeDescriptions":{"typeIdentifier":"t_uint48","typeString":"uint48"}},"visibility":"internal"},{"constant":false,"id":6461,"indexed":false,"mutability":"mutable","name":"newMember","nameLocation":"1328:9:17","nodeType":"VariableDeclaration","scope":6463,"src":"1323:14:17","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":6460,"name":"bool","nodeType":"ElementaryTypeName","src":"1323:4:17","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"}],"src":"1246:92:17"},"src":"1229:110:17"},{"anonymous":false,"documentation":{"id":6464,"nodeType":"StructuredDocumentation","src":"1345:125:17","text":" @dev Emitted when `account` membership or `roleId` is revoked. Unlike granting, revoking is instantaneous."},"eventSelector":"f229baa593af28c41b1d16b748cd7688f0c83aaf92d4be41c44005defe84c166","id":6470,"name":"RoleRevoked","nameLocation":"1481:11:17","nodeType":"EventDefinition","parameters":{"id":6469,"nodeType":"ParameterList","parameters":[{"constant":false,"id":6466,"indexed":true,"mutability":"mutable","name":"roleId","nameLocation":"1508:6:17","nodeType":"VariableDeclaration","scope":6470,"src":"1493:21:17","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint64","typeString":"uint64"},"typeName":{"id":6465,"name":"uint64","nodeType":"ElementaryTypeName","src":"1493:6:17","typeDescriptions":{"typeIdentifier":"t_uint64","typeString":"uint64"}},"visibility":"internal"},{"constant":false,"id":6468,"indexed":true,"mutability":"mutable","name":"account","nameLocation":"1532:7:17","nodeType":"VariableDeclaration","scope":6470,"src":"1516:23:17","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":6467,"name":"address","nodeType":"ElementaryTypeName","src":"1516:7:17","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"1492:48:17"},"src":"1475:66:17"},{"anonymous":false,"documentation":{"id":6471,"nodeType":"StructuredDocumentation","src":"1547:78:17","text":" @dev Role acting as admin over a given `roleId` is updated."},"eventSelector":"1fd6dd7631312dfac2205b52913f99de03b4d7e381d5d27d3dbfe0713e6e6340","id":6477,"name":"RoleAdminChanged","nameLocation":"1636:16:17","nodeType":"EventDefinition","parameters":{"id":6476,"nodeType":"ParameterList","parameters":[{"constant":false,"id":6473,"indexed":true,"mutability":"mutable","name":"roleId","nameLocation":"1668:6:17","nodeType":"VariableDeclaration","scope":6477,"src":"1653:21:17","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint64","typeString":"uint64"},"typeName":{"id":6472,"name":"uint64","nodeType":"ElementaryTypeName","src":"1653:6:17","typeDescriptions":{"typeIdentifier":"t_uint64","typeString":"uint64"}},"visibility":"internal"},{"constant":false,"id":6475,"indexed":true,"mutability":"mutable","name":"admin","nameLocation":"1691:5:17","nodeType":"VariableDeclaration","scope":6477,"src":"1676:20:17","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint64","typeString":"uint64"},"typeName":{"id":6474,"name":"uint64","nodeType":"ElementaryTypeName","src":"1676:6:17","typeDescriptions":{"typeIdentifier":"t_uint64","typeString":"uint64"}},"visibility":"internal"}],"src":"1652:45:17"},"src":"1630:68:17"},{"anonymous":false,"documentation":{"id":6478,"nodeType":"StructuredDocumentation","src":"1704:81:17","text":" @dev Role acting as guardian over a given `roleId` is updated."},"eventSelector":"7a8059630b897b5de4c08ade69f8b90c3ead1f8596d62d10b6c4d14a0afb4ae2","id":6484,"name":"RoleGuardianChanged","nameLocation":"1796:19:17","nodeType":"EventDefinition","parameters":{"id":6483,"nodeType":"ParameterList","parameters":[{"constant":false,"id":6480,"indexed":true,"mutability":"mutable","name":"roleId","nameLocation":"1831:6:17","nodeType":"VariableDeclaration","scope":6484,"src":"1816:21:17","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint64","typeString":"uint64"},"typeName":{"id":6479,"name":"uint64","nodeType":"ElementaryTypeName","src":"1816:6:17","typeDescriptions":{"typeIdentifier":"t_uint64","typeString":"uint64"}},"visibility":"internal"},{"constant":false,"id":6482,"indexed":true,"mutability":"mutable","name":"guardian","nameLocation":"1854:8:17","nodeType":"VariableDeclaration","scope":6484,"src":"1839:23:17","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint64","typeString":"uint64"},"typeName":{"id":6481,"name":"uint64","nodeType":"ElementaryTypeName","src":"1839:6:17","typeDescriptions":{"typeIdentifier":"t_uint64","typeString":"uint64"}},"visibility":"internal"}],"src":"1815:48:17"},"src":"1790:74:17"},{"anonymous":false,"documentation":{"id":6485,"nodeType":"StructuredDocumentation","src":"1870:108:17","text":" @dev Grant delay for a given `roleId` will be updated to `delay` when `since` is reached."},"eventSelector":"feb69018ee8b8fd50ea86348f1267d07673379f72cffdeccec63853ee8ce8b48","id":6493,"name":"RoleGrantDelayChanged","nameLocation":"1989:21:17","nodeType":"EventDefinition","parameters":{"id":6492,"nodeType":"ParameterList","parameters":[{"constant":false,"id":6487,"indexed":true,"mutability":"mutable","name":"roleId","nameLocation":"2026:6:17","nodeType":"VariableDeclaration","scope":6493,"src":"2011:21:17","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint64","typeString":"uint64"},"typeName":{"id":6486,"name":"uint64","nodeType":"ElementaryTypeName","src":"2011:6:17","typeDescriptions":{"typeIdentifier":"t_uint64","typeString":"uint64"}},"visibility":"internal"},{"constant":false,"id":6489,"indexed":false,"mutability":"mutable","name":"delay","nameLocation":"2041:5:17","nodeType":"VariableDeclaration","scope":6493,"src":"2034:12:17","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint32","typeString":"uint32"},"typeName":{"id":6488,"name":"uint32","nodeType":"ElementaryTypeName","src":"2034:6:17","typeDescriptions":{"typeIdentifier":"t_uint32","typeString":"uint32"}},"visibility":"internal"},{"constant":false,"id":6491,"indexed":false,"mutability":"mutable","name":"since","nameLocation":"2055:5:17","nodeType":"VariableDeclaration","scope":6493,"src":"2048:12:17","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint48","typeString":"uint48"},"typeName":{"id":6490,"name":"uint48","nodeType":"ElementaryTypeName","src":"2048:6:17","typeDescriptions":{"typeIdentifier":"t_uint48","typeString":"uint48"}},"visibility":"internal"}],"src":"2010:51:17"},"src":"1983:79:17"},{"anonymous":false,"documentation":{"id":6494,"nodeType":"StructuredDocumentation","src":"2068:77:17","text":" @dev Target mode is updated (true = closed, false = open)."},"eventSelector":"90d4e7bb7e5d933792b3562e1741306f8be94837e1348dacef9b6f1df56eb138","id":6500,"name":"TargetClosed","nameLocation":"2156:12:17","nodeType":"EventDefinition","parameters":{"id":6499,"nodeType":"ParameterList","parameters":[{"constant":false,"id":6496,"indexed":true,"mutability":"mutable","name":"target","nameLocation":"2185:6:17","nodeType":"VariableDeclaration","scope":6500,"src":"2169:22:17","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":6495,"name":"address","nodeType":"ElementaryTypeName","src":"2169:7:17","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":6498,"indexed":false,"mutability":"mutable","name":"closed","nameLocation":"2198:6:17","nodeType":"VariableDeclaration","scope":6500,"src":"2193:11:17","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":6497,"name":"bool","nodeType":"ElementaryTypeName","src":"2193:4:17","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"}],"src":"2168:37:17"},"src":"2150:56:17"},{"anonymous":false,"documentation":{"id":6501,"nodeType":"StructuredDocumentation","src":"2212:94:17","text":" @dev Role required to invoke `selector` on `target` is updated to `roleId`."},"eventSelector":"9ea6790c7dadfd01c9f8b9762b3682607af2c7e79e05a9f9fdf5580dde949151","id":6509,"name":"TargetFunctionRoleUpdated","nameLocation":"2317:25:17","nodeType":"EventDefinition","parameters":{"id":6508,"nodeType":"ParameterList","parameters":[{"constant":false,"id":6503,"indexed":true,"mutability":"mutable","name":"target","nameLocation":"2359:6:17","nodeType":"VariableDeclaration","scope":6509,"src":"2343:22:17","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":6502,"name":"address","nodeType":"ElementaryTypeName","src":"2343:7:17","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":6505,"indexed":false,"mutability":"mutable","name":"selector","nameLocation":"2374:8:17","nodeType":"VariableDeclaration","scope":6509,"src":"2367:15:17","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes4","typeString":"bytes4"},"typeName":{"id":6504,"name":"bytes4","nodeType":"ElementaryTypeName","src":"2367:6:17","typeDescriptions":{"typeIdentifier":"t_bytes4","typeString":"bytes4"}},"visibility":"internal"},{"constant":false,"id":6507,"indexed":true,"mutability":"mutable","name":"roleId","nameLocation":"2399:6:17","nodeType":"VariableDeclaration","scope":6509,"src":"2384:21:17","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint64","typeString":"uint64"},"typeName":{"id":6506,"name":"uint64","nodeType":"ElementaryTypeName","src":"2384:6:17","typeDescriptions":{"typeIdentifier":"t_uint64","typeString":"uint64"}},"visibility":"internal"}],"src":"2342:64:17"},"src":"2311:96:17"},{"anonymous":false,"documentation":{"id":6510,"nodeType":"StructuredDocumentation","src":"2413:108:17","text":" @dev Admin delay for a given `target` will be updated to `delay` when `since` is reached."},"eventSelector":"a56b76017453f399ec2327ba00375dbfb1fd070ff854341ad6191e6a2e2de19c","id":6518,"name":"TargetAdminDelayUpdated","nameLocation":"2532:23:17","nodeType":"EventDefinition","parameters":{"id":6517,"nodeType":"ParameterList","parameters":[{"constant":false,"id":6512,"indexed":true,"mutability":"mutable","name":"target","nameLocation":"2572:6:17","nodeType":"VariableDeclaration","scope":6518,"src":"2556:22:17","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":6511,"name":"address","nodeType":"ElementaryTypeName","src":"2556:7:17","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":6514,"indexed":false,"mutability":"mutable","name":"delay","nameLocation":"2587:5:17","nodeType":"VariableDeclaration","scope":6518,"src":"2580:12:17","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint32","typeString":"uint32"},"typeName":{"id":6513,"name":"uint32","nodeType":"ElementaryTypeName","src":"2580:6:17","typeDescriptions":{"typeIdentifier":"t_uint32","typeString":"uint32"}},"visibility":"internal"},{"constant":false,"id":6516,"indexed":false,"mutability":"mutable","name":"since","nameLocation":"2601:5:17","nodeType":"VariableDeclaration","scope":6518,"src":"2594:12:17","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint48","typeString":"uint48"},"typeName":{"id":6515,"name":"uint48","nodeType":"ElementaryTypeName","src":"2594:6:17","typeDescriptions":{"typeIdentifier":"t_uint48","typeString":"uint48"}},"visibility":"internal"}],"src":"2555:52:17"},"src":"2526:82:17"},{"errorSelector":"813e9459","id":6522,"name":"AccessManagerAlreadyScheduled","nameLocation":"2620:29:17","nodeType":"ErrorDefinition","parameters":{"id":6521,"nodeType":"ParameterList","parameters":[{"constant":false,"id":6520,"mutability":"mutable","name":"operationId","nameLocation":"2658:11:17","nodeType":"VariableDeclaration","scope":6522,"src":"2650:19:17","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":6519,"name":"bytes32","nodeType":"ElementaryTypeName","src":"2650:7:17","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"}],"src":"2649:21:17"},"src":"2614:57:17"},{"errorSelector":"60a299b0","id":6526,"name":"AccessManagerNotScheduled","nameLocation":"2682:25:17","nodeType":"ErrorDefinition","parameters":{"id":6525,"nodeType":"ParameterList","parameters":[{"constant":false,"id":6524,"mutability":"mutable","name":"operationId","nameLocation":"2716:11:17","nodeType":"VariableDeclaration","scope":6526,"src":"2708:19:17","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":6523,"name":"bytes32","nodeType":"ElementaryTypeName","src":"2708:7:17","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"}],"src":"2707:21:17"},"src":"2676:53:17"},{"errorSelector":"18cb6b7a","id":6530,"name":"AccessManagerNotReady","nameLocation":"2740:21:17","nodeType":"ErrorDefinition","parameters":{"id":6529,"nodeType":"ParameterList","parameters":[{"constant":false,"id":6528,"mutability":"mutable","name":"operationId","nameLocation":"2770:11:17","nodeType":"VariableDeclaration","scope":6530,"src":"2762:19:17","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":6527,"name":"bytes32","nodeType":"ElementaryTypeName","src":"2762:7:17","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"}],"src":"2761:21:17"},"src":"2734:49:17"},{"errorSelector":"78a5d6e4","id":6534,"name":"AccessManagerExpired","nameLocation":"2794:20:17","nodeType":"ErrorDefinition","parameters":{"id":6533,"nodeType":"ParameterList","parameters":[{"constant":false,"id":6532,"mutability":"mutable","name":"operationId","nameLocation":"2823:11:17","nodeType":"VariableDeclaration","scope":6534,"src":"2815:19:17","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":6531,"name":"bytes32","nodeType":"ElementaryTypeName","src":"2815:7:17","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"}],"src":"2814:21:17"},"src":"2788:48:17"},{"errorSelector":"1871a90c","id":6538,"name":"AccessManagerLockedRole","nameLocation":"2847:23:17","nodeType":"ErrorDefinition","parameters":{"id":6537,"nodeType":"ParameterList","parameters":[{"constant":false,"id":6536,"mutability":"mutable","name":"roleId","nameLocation":"2878:6:17","nodeType":"VariableDeclaration","scope":6538,"src":"2871:13:17","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint64","typeString":"uint64"},"typeName":{"id":6535,"name":"uint64","nodeType":"ElementaryTypeName","src":"2871:6:17","typeDescriptions":{"typeIdentifier":"t_uint64","typeString":"uint64"}},"visibility":"internal"}],"src":"2870:15:17"},"src":"2841:45:17"},{"errorSelector":"5f159e63","id":6540,"name":"AccessManagerBadConfirmation","nameLocation":"2897:28:17","nodeType":"ErrorDefinition","parameters":{"id":6539,"nodeType":"ParameterList","parameters":[],"src":"2925:2:17"},"src":"2891:37:17"},{"errorSelector":"f07e038f","id":6546,"name":"AccessManagerUnauthorizedAccount","nameLocation":"2939:32:17","nodeType":"ErrorDefinition","parameters":{"id":6545,"nodeType":"ParameterList","parameters":[{"constant":false,"id":6542,"mutability":"mutable","name":"msgsender","nameLocation":"2980:9:17","nodeType":"VariableDeclaration","scope":6546,"src":"2972:17:17","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":6541,"name":"address","nodeType":"ElementaryTypeName","src":"2972:7:17","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":6544,"mutability":"mutable","name":"roleId","nameLocation":"2998:6:17","nodeType":"VariableDeclaration","scope":6546,"src":"2991:13:17","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint64","typeString":"uint64"},"typeName":{"id":6543,"name":"uint64","nodeType":"ElementaryTypeName","src":"2991:6:17","typeDescriptions":{"typeIdentifier":"t_uint64","typeString":"uint64"}},"visibility":"internal"}],"src":"2971:34:17"},"src":"2933:73:17"},{"errorSelector":"81c6f24b","id":6554,"name":"AccessManagerUnauthorizedCall","nameLocation":"3017:29:17","nodeType":"ErrorDefinition","parameters":{"id":6553,"nodeType":"ParameterList","parameters":[{"constant":false,"id":6548,"mutability":"mutable","name":"caller","nameLocation":"3055:6:17","nodeType":"VariableDeclaration","scope":6554,"src":"3047:14:17","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":6547,"name":"address","nodeType":"ElementaryTypeName","src":"3047:7:17","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":6550,"mutability":"mutable","name":"target","nameLocation":"3071:6:17","nodeType":"VariableDeclaration","scope":6554,"src":"3063:14:17","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":6549,"name":"address","nodeType":"ElementaryTypeName","src":"3063:7:17","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":6552,"mutability":"mutable","name":"selector","nameLocation":"3086:8:17","nodeType":"VariableDeclaration","scope":6554,"src":"3079:15:17","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes4","typeString":"bytes4"},"typeName":{"id":6551,"name":"bytes4","nodeType":"ElementaryTypeName","src":"3079:6:17","typeDescriptions":{"typeIdentifier":"t_bytes4","typeString":"bytes4"}},"visibility":"internal"}],"src":"3046:49:17"},"src":"3011:85:17"},{"errorSelector":"320ff748","id":6558,"name":"AccessManagerUnauthorizedConsume","nameLocation":"3107:32:17","nodeType":"ErrorDefinition","parameters":{"id":6557,"nodeType":"ParameterList","parameters":[{"constant":false,"id":6556,"mutability":"mutable","name":"target","nameLocation":"3148:6:17","nodeType":"VariableDeclaration","scope":6558,"src":"3140:14:17","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":6555,"name":"address","nodeType":"ElementaryTypeName","src":"3140:7:17","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"3139:16:17"},"src":"3101:55:17"},{"errorSelector":"3fe2751c","id":6568,"name":"AccessManagerUnauthorizedCancel","nameLocation":"3167:31:17","nodeType":"ErrorDefinition","parameters":{"id":6567,"nodeType":"ParameterList","parameters":[{"constant":false,"id":6560,"mutability":"mutable","name":"msgsender","nameLocation":"3207:9:17","nodeType":"VariableDeclaration","scope":6568,"src":"3199:17:17","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":6559,"name":"address","nodeType":"ElementaryTypeName","src":"3199:7:17","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":6562,"mutability":"mutable","name":"caller","nameLocation":"3226:6:17","nodeType":"VariableDeclaration","scope":6568,"src":"3218:14:17","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":6561,"name":"address","nodeType":"ElementaryTypeName","src":"3218:7:17","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":6564,"mutability":"mutable","name":"target","nameLocation":"3242:6:17","nodeType":"VariableDeclaration","scope":6568,"src":"3234:14:17","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":6563,"name":"address","nodeType":"ElementaryTypeName","src":"3234:7:17","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":6566,"mutability":"mutable","name":"selector","nameLocation":"3257:8:17","nodeType":"VariableDeclaration","scope":6568,"src":"3250:15:17","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes4","typeString":"bytes4"},"typeName":{"id":6565,"name":"bytes4","nodeType":"ElementaryTypeName","src":"3250:6:17","typeDescriptions":{"typeIdentifier":"t_bytes4","typeString":"bytes4"}},"visibility":"internal"}],"src":"3198:68:17"},"src":"3161:106:17"},{"errorSelector":"0813ada2","id":6572,"name":"AccessManagerInvalidInitialAdmin","nameLocation":"3278:32:17","nodeType":"ErrorDefinition","parameters":{"id":6571,"nodeType":"ParameterList","parameters":[{"constant":false,"id":6570,"mutability":"mutable","name":"initialAdmin","nameLocation":"3319:12:17","nodeType":"VariableDeclaration","scope":6572,"src":"3311:20:17","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":6569,"name":"address","nodeType":"ElementaryTypeName","src":"3311:7:17","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"3310:22:17"},"src":"3272:61:17"},{"documentation":{"id":6573,"nodeType":"StructuredDocumentation","src":"3339:1391:17","text":" @dev Check if an address (`caller`) is authorised to call a given function on a given contract directly (with\n no restriction). Additionally, it returns the delay needed to perform the call indirectly through the {schedule}\n & {execute} workflow.\n This function is usually called by the targeted contract to control immediate execution of restricted functions.\n Therefore we only return true if the call can be performed without any delay. If the call is subject to a\n previously set delay (not zero), then the function should return false and the caller should schedule the operation\n for future execution.\n If `allowed` is true, the delay can be disregarded and the operation can be immediately executed, otherwise\n the operation can be executed if and only if delay is greater than 0.\n NOTE: The IAuthority interface does not include the `uint32` delay. This is an extension of that interface that\n is backward compatible. Some contracts may thus ignore the second return argument. In that case they will fail\n to identify the indirect workflow, and will consider calls that require a delay to be forbidden.\n NOTE: This function does not report the permissions of the admin functions in the manager itself. These are defined by the\n {AccessManager} documentation."},"functionSelector":"b7009613","id":6586,"implemented":false,"kind":"function","modifiers":[],"name":"canCall","nameLocation":"4744:7:17","nodeType":"FunctionDefinition","parameters":{"id":6580,"nodeType":"ParameterList","parameters":[{"constant":false,"id":6575,"mutability":"mutable","name":"caller","nameLocation":"4769:6:17","nodeType":"VariableDeclaration","scope":6586,"src":"4761:14:17","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":6574,"name":"address","nodeType":"ElementaryTypeName","src":"4761:7:17","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":6577,"mutability":"mutable","name":"target","nameLocation":"4793:6:17","nodeType":"VariableDeclaration","scope":6586,"src":"4785:14:17","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":6576,"name":"address","nodeType":"ElementaryTypeName","src":"4785:7:17","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":6579,"mutability":"mutable","name":"selector","nameLocation":"4816:8:17","nodeType":"VariableDeclaration","scope":6586,"src":"4809:15:17","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes4","typeString":"bytes4"},"typeName":{"id":6578,"name":"bytes4","nodeType":"ElementaryTypeName","src":"4809:6:17","typeDescriptions":{"typeIdentifier":"t_bytes4","typeString":"bytes4"}},"visibility":"internal"}],"src":"4751:79:17"},"returnParameters":{"id":6585,"nodeType":"ParameterList","parameters":[{"constant":false,"id":6582,"mutability":"mutable","name":"allowed","nameLocation":"4859:7:17","nodeType":"VariableDeclaration","scope":6586,"src":"4854:12:17","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":6581,"name":"bool","nodeType":"ElementaryTypeName","src":"4854:4:17","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"},{"constant":false,"id":6584,"mutability":"mutable","name":"delay","nameLocation":"4875:5:17","nodeType":"VariableDeclaration","scope":6586,"src":"4868:12:17","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint32","typeString":"uint32"},"typeName":{"id":6583,"name":"uint32","nodeType":"ElementaryTypeName","src":"4868:6:17","typeDescriptions":{"typeIdentifier":"t_uint32","typeString":"uint32"}},"visibility":"internal"}],"src":"4853:28:17"},"scope":6842,"src":"4735:147:17","stateMutability":"view","virtual":false,"visibility":"external"},{"documentation":{"id":6587,"nodeType":"StructuredDocumentation","src":"4888:252:17","text":" @dev Expiration delay for scheduled proposals. Defaults to 1 week.\n IMPORTANT: Avoid overriding the expiration with 0. Otherwise every contract proposal will be expired immediately,\n disabling any scheduling usage."},"functionSelector":"4665096d","id":6592,"implemented":false,"kind":"function","modifiers":[],"name":"expiration","nameLocation":"5154:10:17","nodeType":"FunctionDefinition","parameters":{"id":6588,"nodeType":"ParameterList","parameters":[],"src":"5164:2:17"},"returnParameters":{"id":6591,"nodeType":"ParameterList","parameters":[{"constant":false,"id":6590,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":6592,"src":"5190:6:17","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint32","typeString":"uint32"},"typeName":{"id":6589,"name":"uint32","nodeType":"ElementaryTypeName","src":"5190:6:17","typeDescriptions":{"typeIdentifier":"t_uint32","typeString":"uint32"}},"visibility":"internal"}],"src":"5189:8:17"},"scope":6842,"src":"5145:53:17","stateMutability":"view","virtual":false,"visibility":"external"},{"documentation":{"id":6593,"nodeType":"StructuredDocumentation","src":"5204:241:17","text":" @dev Minimum setback for all delay updates, with the exception of execution delays. It\n can be increased without setback (and reset via {revokeRole} in the event of an\n accidental increase). Defaults to 5 days."},"functionSelector":"cc1b6c81","id":6598,"implemented":false,"kind":"function","modifiers":[],"name":"minSetback","nameLocation":"5459:10:17","nodeType":"FunctionDefinition","parameters":{"id":6594,"nodeType":"ParameterList","parameters":[],"src":"5469:2:17"},"returnParameters":{"id":6597,"nodeType":"ParameterList","parameters":[{"constant":false,"id":6596,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":6598,"src":"5495:6:17","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint32","typeString":"uint32"},"typeName":{"id":6595,"name":"uint32","nodeType":"ElementaryTypeName","src":"5495:6:17","typeDescriptions":{"typeIdentifier":"t_uint32","typeString":"uint32"}},"visibility":"internal"}],"src":"5494:8:17"},"scope":6842,"src":"5450:53:17","stateMutability":"view","virtual":false,"visibility":"external"},{"documentation":{"id":6599,"nodeType":"StructuredDocumentation","src":"5509:243:17","text":" @dev Get whether the contract is closed disabling any access. Otherwise role permissions are applied.\n NOTE: When the manager itself is closed, admin functions are still accessible to avoid locking the contract."},"functionSelector":"a166aa89","id":6606,"implemented":false,"kind":"function","modifiers":[],"name":"isTargetClosed","nameLocation":"5766:14:17","nodeType":"FunctionDefinition","parameters":{"id":6602,"nodeType":"ParameterList","parameters":[{"constant":false,"id":6601,"mutability":"mutable","name":"target","nameLocation":"5789:6:17","nodeType":"VariableDeclaration","scope":6606,"src":"5781:14:17","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":6600,"name":"address","nodeType":"ElementaryTypeName","src":"5781:7:17","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"5780:16:17"},"returnParameters":{"id":6605,"nodeType":"ParameterList","parameters":[{"constant":false,"id":6604,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":6606,"src":"5820:4:17","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":6603,"name":"bool","nodeType":"ElementaryTypeName","src":"5820:4:17","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"}],"src":"5819:6:17"},"scope":6842,"src":"5757:69:17","stateMutability":"view","virtual":false,"visibility":"external"},{"documentation":{"id":6607,"nodeType":"StructuredDocumentation","src":"5832:65:17","text":" @dev Get the role required to call a function."},"functionSelector":"6d5115bd","id":6616,"implemented":false,"kind":"function","modifiers":[],"name":"getTargetFunctionRole","nameLocation":"5911:21:17","nodeType":"FunctionDefinition","parameters":{"id":6612,"nodeType":"ParameterList","parameters":[{"constant":false,"id":6609,"mutability":"mutable","name":"target","nameLocation":"5941:6:17","nodeType":"VariableDeclaration","scope":6616,"src":"5933:14:17","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":6608,"name":"address","nodeType":"ElementaryTypeName","src":"5933:7:17","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":6611,"mutability":"mutable","name":"selector","nameLocation":"5956:8:17","nodeType":"VariableDeclaration","scope":6616,"src":"5949:15:17","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes4","typeString":"bytes4"},"typeName":{"id":6610,"name":"bytes4","nodeType":"ElementaryTypeName","src":"5949:6:17","typeDescriptions":{"typeIdentifier":"t_bytes4","typeString":"bytes4"}},"visibility":"internal"}],"src":"5932:33:17"},"returnParameters":{"id":6615,"nodeType":"ParameterList","parameters":[{"constant":false,"id":6614,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":6616,"src":"5989:6:17","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint64","typeString":"uint64"},"typeName":{"id":6613,"name":"uint64","nodeType":"ElementaryTypeName","src":"5989:6:17","typeDescriptions":{"typeIdentifier":"t_uint64","typeString":"uint64"}},"visibility":"internal"}],"src":"5988:8:17"},"scope":6842,"src":"5902:95:17","stateMutability":"view","virtual":false,"visibility":"external"},{"documentation":{"id":6617,"nodeType":"StructuredDocumentation","src":"6003:127:17","text":" @dev Get the admin delay for a target contract. Changes to contract configuration are subject to this delay."},"functionSelector":"4c1da1e2","id":6624,"implemented":false,"kind":"function","modifiers":[],"name":"getTargetAdminDelay","nameLocation":"6144:19:17","nodeType":"FunctionDefinition","parameters":{"id":6620,"nodeType":"ParameterList","parameters":[{"constant":false,"id":6619,"mutability":"mutable","name":"target","nameLocation":"6172:6:17","nodeType":"VariableDeclaration","scope":6624,"src":"6164:14:17","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":6618,"name":"address","nodeType":"ElementaryTypeName","src":"6164:7:17","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"6163:16:17"},"returnParameters":{"id":6623,"nodeType":"ParameterList","parameters":[{"constant":false,"id":6622,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":6624,"src":"6203:6:17","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint32","typeString":"uint32"},"typeName":{"id":6621,"name":"uint32","nodeType":"ElementaryTypeName","src":"6203:6:17","typeDescriptions":{"typeIdentifier":"t_uint32","typeString":"uint32"}},"visibility":"internal"}],"src":"6202:8:17"},"scope":6842,"src":"6135:76:17","stateMutability":"view","virtual":false,"visibility":"external"},{"documentation":{"id":6625,"nodeType":"StructuredDocumentation","src":"6217:265:17","text":" @dev Get the id of the role that acts as an admin for the given role.\n The admin permission is required to grant the role, revoke the role and update the execution delay to execute\n an operation that is restricted to this role."},"functionSelector":"530dd456","id":6632,"implemented":false,"kind":"function","modifiers":[],"name":"getRoleAdmin","nameLocation":"6496:12:17","nodeType":"FunctionDefinition","parameters":{"id":6628,"nodeType":"ParameterList","parameters":[{"constant":false,"id":6627,"mutability":"mutable","name":"roleId","nameLocation":"6516:6:17","nodeType":"VariableDeclaration","scope":6632,"src":"6509:13:17","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint64","typeString":"uint64"},"typeName":{"id":6626,"name":"uint64","nodeType":"ElementaryTypeName","src":"6509:6:17","typeDescriptions":{"typeIdentifier":"t_uint64","typeString":"uint64"}},"visibility":"internal"}],"src":"6508:15:17"},"returnParameters":{"id":6631,"nodeType":"ParameterList","parameters":[{"constant":false,"id":6630,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":6632,"src":"6547:6:17","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint64","typeString":"uint64"},"typeName":{"id":6629,"name":"uint64","nodeType":"ElementaryTypeName","src":"6547:6:17","typeDescriptions":{"typeIdentifier":"t_uint64","typeString":"uint64"}},"visibility":"internal"}],"src":"6546:8:17"},"scope":6842,"src":"6487:68:17","stateMutability":"view","virtual":false,"visibility":"external"},{"documentation":{"id":6633,"nodeType":"StructuredDocumentation","src":"6561:185:17","text":" @dev Get the role that acts as a guardian for a given role.\n The guardian permission allows canceling operations that have been scheduled under the role."},"functionSelector":"0b0a93ba","id":6640,"implemented":false,"kind":"function","modifiers":[],"name":"getRoleGuardian","nameLocation":"6760:15:17","nodeType":"FunctionDefinition","parameters":{"id":6636,"nodeType":"ParameterList","parameters":[{"constant":false,"id":6635,"mutability":"mutable","name":"roleId","nameLocation":"6783:6:17","nodeType":"VariableDeclaration","scope":6640,"src":"6776:13:17","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint64","typeString":"uint64"},"typeName":{"id":6634,"name":"uint64","nodeType":"ElementaryTypeName","src":"6776:6:17","typeDescriptions":{"typeIdentifier":"t_uint64","typeString":"uint64"}},"visibility":"internal"}],"src":"6775:15:17"},"returnParameters":{"id":6639,"nodeType":"ParameterList","parameters":[{"constant":false,"id":6638,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":6640,"src":"6814:6:17","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint64","typeString":"uint64"},"typeName":{"id":6637,"name":"uint64","nodeType":"ElementaryTypeName","src":"6814:6:17","typeDescriptions":{"typeIdentifier":"t_uint64","typeString":"uint64"}},"visibility":"internal"}],"src":"6813:8:17"},"scope":6842,"src":"6751:71:17","stateMutability":"view","virtual":false,"visibility":"external"},{"documentation":{"id":6641,"nodeType":"StructuredDocumentation","src":"6828:286:17","text":" @dev Get the role current grant delay.\n Its value may change at any point without an event emitted following a call to {setGrantDelay}.\n Changes to this value, including effect timepoint are notified in advance by the {RoleGrantDelayChanged} event."},"functionSelector":"12be8727","id":6648,"implemented":false,"kind":"function","modifiers":[],"name":"getRoleGrantDelay","nameLocation":"7128:17:17","nodeType":"FunctionDefinition","parameters":{"id":6644,"nodeType":"ParameterList","parameters":[{"constant":false,"id":6643,"mutability":"mutable","name":"roleId","nameLocation":"7153:6:17","nodeType":"VariableDeclaration","scope":6648,"src":"7146:13:17","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint64","typeString":"uint64"},"typeName":{"id":6642,"name":"uint64","nodeType":"ElementaryTypeName","src":"7146:6:17","typeDescriptions":{"typeIdentifier":"t_uint64","typeString":"uint64"}},"visibility":"internal"}],"src":"7145:15:17"},"returnParameters":{"id":6647,"nodeType":"ParameterList","parameters":[{"constant":false,"id":6646,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":6648,"src":"7184:6:17","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint32","typeString":"uint32"},"typeName":{"id":6645,"name":"uint32","nodeType":"ElementaryTypeName","src":"7184:6:17","typeDescriptions":{"typeIdentifier":"t_uint32","typeString":"uint32"}},"visibility":"internal"}],"src":"7183:8:17"},"scope":6842,"src":"7119:73:17","stateMutability":"view","virtual":false,"visibility":"external"},{"documentation":{"id":6649,"nodeType":"StructuredDocumentation","src":"7198:600:17","text":" @dev Get the access details for a given account for a given role. These details include the timepoint at which\n membership becomes active, and the delay applied to all operations by this user that requires this permission\n level.\n Returns:\n [0] Timestamp at which the account membership becomes valid. 0 means role is not granted.\n [1] Current execution delay for the account.\n [2] Pending execution delay for the account.\n [3] Timestamp at which the pending execution delay will become active. 0 means no delay update is scheduled."},"functionSelector":"3078f114","id":6664,"implemented":false,"kind":"function","modifiers":[],"name":"getAccess","nameLocation":"7812:9:17","nodeType":"FunctionDefinition","parameters":{"id":6654,"nodeType":"ParameterList","parameters":[{"constant":false,"id":6651,"mutability":"mutable","name":"roleId","nameLocation":"7838:6:17","nodeType":"VariableDeclaration","scope":6664,"src":"7831:13:17","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint64","typeString":"uint64"},"typeName":{"id":6650,"name":"uint64","nodeType":"ElementaryTypeName","src":"7831:6:17","typeDescriptions":{"typeIdentifier":"t_uint64","typeString":"uint64"}},"visibility":"internal"},{"constant":false,"id":6653,"mutability":"mutable","name":"account","nameLocation":"7862:7:17","nodeType":"VariableDeclaration","scope":6664,"src":"7854:15:17","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":6652,"name":"address","nodeType":"ElementaryTypeName","src":"7854:7:17","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"7821:54:17"},"returnParameters":{"id":6663,"nodeType":"ParameterList","parameters":[{"constant":false,"id":6656,"mutability":"mutable","name":"since","nameLocation":"7906:5:17","nodeType":"VariableDeclaration","scope":6664,"src":"7899:12:17","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint48","typeString":"uint48"},"typeName":{"id":6655,"name":"uint48","nodeType":"ElementaryTypeName","src":"7899:6:17","typeDescriptions":{"typeIdentifier":"t_uint48","typeString":"uint48"}},"visibility":"internal"},{"constant":false,"id":6658,"mutability":"mutable","name":"currentDelay","nameLocation":"7920:12:17","nodeType":"VariableDeclaration","scope":6664,"src":"7913:19:17","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint32","typeString":"uint32"},"typeName":{"id":6657,"name":"uint32","nodeType":"ElementaryTypeName","src":"7913:6:17","typeDescriptions":{"typeIdentifier":"t_uint32","typeString":"uint32"}},"visibility":"internal"},{"constant":false,"id":6660,"mutability":"mutable","name":"pendingDelay","nameLocation":"7941:12:17","nodeType":"VariableDeclaration","scope":6664,"src":"7934:19:17","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint32","typeString":"uint32"},"typeName":{"id":6659,"name":"uint32","nodeType":"ElementaryTypeName","src":"7934:6:17","typeDescriptions":{"typeIdentifier":"t_uint32","typeString":"uint32"}},"visibility":"internal"},{"constant":false,"id":6662,"mutability":"mutable","name":"effect","nameLocation":"7962:6:17","nodeType":"VariableDeclaration","scope":6664,"src":"7955:13:17","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint48","typeString":"uint48"},"typeName":{"id":6661,"name":"uint48","nodeType":"ElementaryTypeName","src":"7955:6:17","typeDescriptions":{"typeIdentifier":"t_uint48","typeString":"uint48"}},"visibility":"internal"}],"src":"7898:71:17"},"scope":6842,"src":"7803:167:17","stateMutability":"view","virtual":false,"visibility":"external"},{"documentation":{"id":6665,"nodeType":"StructuredDocumentation","src":"7976:230:17","text":" @dev Check if a given account currently has the permission level corresponding to a given role. Note that this\n permission might be associated with an execution delay. {getAccess} can provide more details."},"functionSelector":"d1f856ee","id":6676,"implemented":false,"kind":"function","modifiers":[],"name":"hasRole","nameLocation":"8220:7:17","nodeType":"FunctionDefinition","parameters":{"id":6670,"nodeType":"ParameterList","parameters":[{"constant":false,"id":6667,"mutability":"mutable","name":"roleId","nameLocation":"8235:6:17","nodeType":"VariableDeclaration","scope":6676,"src":"8228:13:17","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint64","typeString":"uint64"},"typeName":{"id":6666,"name":"uint64","nodeType":"ElementaryTypeName","src":"8228:6:17","typeDescriptions":{"typeIdentifier":"t_uint64","typeString":"uint64"}},"visibility":"internal"},{"constant":false,"id":6669,"mutability":"mutable","name":"account","nameLocation":"8251:7:17","nodeType":"VariableDeclaration","scope":6676,"src":"8243:15:17","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":6668,"name":"address","nodeType":"ElementaryTypeName","src":"8243:7:17","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"8227:32:17"},"returnParameters":{"id":6675,"nodeType":"ParameterList","parameters":[{"constant":false,"id":6672,"mutability":"mutable","name":"isMember","nameLocation":"8288:8:17","nodeType":"VariableDeclaration","scope":6676,"src":"8283:13:17","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":6671,"name":"bool","nodeType":"ElementaryTypeName","src":"8283:4:17","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"},{"constant":false,"id":6674,"mutability":"mutable","name":"executionDelay","nameLocation":"8305:14:17","nodeType":"VariableDeclaration","scope":6676,"src":"8298:21:17","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint32","typeString":"uint32"},"typeName":{"id":6673,"name":"uint32","nodeType":"ElementaryTypeName","src":"8298:6:17","typeDescriptions":{"typeIdentifier":"t_uint32","typeString":"uint32"}},"visibility":"internal"}],"src":"8282:38:17"},"scope":6842,"src":"8211:110:17","stateMutability":"view","virtual":false,"visibility":"external"},{"documentation":{"id":6677,"nodeType":"StructuredDocumentation","src":"8327:208:17","text":" @dev Give a label to a role, for improved role discoverability by UIs.\n Requirements:\n - the caller must be a global admin\n Emits a {RoleLabel} event."},"functionSelector":"853551b8","id":6684,"implemented":false,"kind":"function","modifiers":[],"name":"labelRole","nameLocation":"8549:9:17","nodeType":"FunctionDefinition","parameters":{"id":6682,"nodeType":"ParameterList","parameters":[{"constant":false,"id":6679,"mutability":"mutable","name":"roleId","nameLocation":"8566:6:17","nodeType":"VariableDeclaration","scope":6684,"src":"8559:13:17","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint64","typeString":"uint64"},"typeName":{"id":6678,"name":"uint64","nodeType":"ElementaryTypeName","src":"8559:6:17","typeDescriptions":{"typeIdentifier":"t_uint64","typeString":"uint64"}},"visibility":"internal"},{"constant":false,"id":6681,"mutability":"mutable","name":"label","nameLocation":"8590:5:17","nodeType":"VariableDeclaration","scope":6684,"src":"8574:21:17","stateVariable":false,"storageLocation":"calldata","typeDescriptions":{"typeIdentifier":"t_string_calldata_ptr","typeString":"string"},"typeName":{"id":6680,"name":"string","nodeType":"ElementaryTypeName","src":"8574:6:17","typeDescriptions":{"typeIdentifier":"t_string_storage_ptr","typeString":"string"}},"visibility":"internal"}],"src":"8558:38:17"},"returnParameters":{"id":6683,"nodeType":"ParameterList","parameters":[],"src":"8605:0:17"},"scope":6842,"src":"8540:66:17","stateMutability":"nonpayable","virtual":false,"visibility":"external"},{"documentation":{"id":6685,"nodeType":"StructuredDocumentation","src":"8612:1222:17","text":" @dev Add `account` to `roleId`, or change its execution delay.\n This gives the account the authorization to call any function that is restricted to this role. An optional\n execution delay (in seconds) can be set. If that delay is non 0, the user is required to schedule any operation\n that is restricted to members of this role. The user will only be able to execute the operation after the delay has\n passed, before it has expired. During this period, admin and guardians can cancel the operation (see {cancel}).\n If the account has already been granted this role, the execution delay will be updated. This update is not\n immediate and follows the delay rules. For example, if a user currently has a delay of 3 hours, and this is\n called to reduce that delay to 1 hour, the new delay will take some time to take effect, enforcing that any\n operation executed in the 3 hours that follows this update was indeed scheduled before this update.\n Requirements:\n - the caller must be an admin for the role (see {getRoleAdmin})\n - granted role must not be the `PUBLIC_ROLE`\n Emits a {RoleGranted} event."},"functionSelector":"25c471a0","id":6694,"implemented":false,"kind":"function","modifiers":[],"name":"grantRole","nameLocation":"9848:9:17","nodeType":"FunctionDefinition","parameters":{"id":6692,"nodeType":"ParameterList","parameters":[{"constant":false,"id":6687,"mutability":"mutable","name":"roleId","nameLocation":"9865:6:17","nodeType":"VariableDeclaration","scope":6694,"src":"9858:13:17","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint64","typeString":"uint64"},"typeName":{"id":6686,"name":"uint64","nodeType":"ElementaryTypeName","src":"9858:6:17","typeDescriptions":{"typeIdentifier":"t_uint64","typeString":"uint64"}},"visibility":"internal"},{"constant":false,"id":6689,"mutability":"mutable","name":"account","nameLocation":"9881:7:17","nodeType":"VariableDeclaration","scope":6694,"src":"9873:15:17","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":6688,"name":"address","nodeType":"ElementaryTypeName","src":"9873:7:17","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":6691,"mutability":"mutable","name":"executionDelay","nameLocation":"9897:14:17","nodeType":"VariableDeclaration","scope":6694,"src":"9890:21:17","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint32","typeString":"uint32"},"typeName":{"id":6690,"name":"uint32","nodeType":"ElementaryTypeName","src":"9890:6:17","typeDescriptions":{"typeIdentifier":"t_uint32","typeString":"uint32"}},"visibility":"internal"}],"src":"9857:55:17"},"returnParameters":{"id":6693,"nodeType":"ParameterList","parameters":[],"src":"9921:0:17"},"scope":6842,"src":"9839:83:17","stateMutability":"nonpayable","virtual":false,"visibility":"external"},{"documentation":{"id":6695,"nodeType":"StructuredDocumentation","src":"9928:377:17","text":" @dev Remove an account from a role, with immediate effect. If the account does not have the role, this call has\n no effect.\n Requirements:\n - the caller must be an admin for the role (see {getRoleAdmin})\n - revoked role must not be the `PUBLIC_ROLE`\n Emits a {RoleRevoked} event if the account had the role."},"functionSelector":"b7d2b162","id":6702,"implemented":false,"kind":"function","modifiers":[],"name":"revokeRole","nameLocation":"10319:10:17","nodeType":"FunctionDefinition","parameters":{"id":6700,"nodeType":"ParameterList","parameters":[{"constant":false,"id":6697,"mutability":"mutable","name":"roleId","nameLocation":"10337:6:17","nodeType":"VariableDeclaration","scope":6702,"src":"10330:13:17","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint64","typeString":"uint64"},"typeName":{"id":6696,"name":"uint64","nodeType":"ElementaryTypeName","src":"10330:6:17","typeDescriptions":{"typeIdentifier":"t_uint64","typeString":"uint64"}},"visibility":"internal"},{"constant":false,"id":6699,"mutability":"mutable","name":"account","nameLocation":"10353:7:17","nodeType":"VariableDeclaration","scope":6702,"src":"10345:15:17","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":6698,"name":"address","nodeType":"ElementaryTypeName","src":"10345:7:17","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"10329:32:17"},"returnParameters":{"id":6701,"nodeType":"ParameterList","parameters":[],"src":"10370:0:17"},"scope":6842,"src":"10310:61:17","stateMutability":"nonpayable","virtual":false,"visibility":"external"},{"documentation":{"id":6703,"nodeType":"StructuredDocumentation","src":"10377:317:17","text":" @dev Renounce role permissions for the calling account with immediate effect. If the sender is not in\n the role this call has no effect.\n Requirements:\n - the caller must be `callerConfirmation`.\n Emits a {RoleRevoked} event if the account had the role."},"functionSelector":"fe0776f5","id":6710,"implemented":false,"kind":"function","modifiers":[],"name":"renounceRole","nameLocation":"10708:12:17","nodeType":"FunctionDefinition","parameters":{"id":6708,"nodeType":"ParameterList","parameters":[{"constant":false,"id":6705,"mutability":"mutable","name":"roleId","nameLocation":"10728:6:17","nodeType":"VariableDeclaration","scope":6710,"src":"10721:13:17","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint64","typeString":"uint64"},"typeName":{"id":6704,"name":"uint64","nodeType":"ElementaryTypeName","src":"10721:6:17","typeDescriptions":{"typeIdentifier":"t_uint64","typeString":"uint64"}},"visibility":"internal"},{"constant":false,"id":6707,"mutability":"mutable","name":"callerConfirmation","nameLocation":"10744:18:17","nodeType":"VariableDeclaration","scope":6710,"src":"10736:26:17","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":6706,"name":"address","nodeType":"ElementaryTypeName","src":"10736:7:17","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"10720:43:17"},"returnParameters":{"id":6709,"nodeType":"ParameterList","parameters":[],"src":"10772:0:17"},"scope":6842,"src":"10699:74:17","stateMutability":"nonpayable","virtual":false,"visibility":"external"},{"documentation":{"id":6711,"nodeType":"StructuredDocumentation","src":"10779:184:17","text":" @dev Change admin role for a given role.\n Requirements:\n - the caller must be a global admin\n Emits a {RoleAdminChanged} event"},"functionSelector":"30cae187","id":6718,"implemented":false,"kind":"function","modifiers":[],"name":"setRoleAdmin","nameLocation":"10977:12:17","nodeType":"FunctionDefinition","parameters":{"id":6716,"nodeType":"ParameterList","parameters":[{"constant":false,"id":6713,"mutability":"mutable","name":"roleId","nameLocation":"10997:6:17","nodeType":"VariableDeclaration","scope":6718,"src":"10990:13:17","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint64","typeString":"uint64"},"typeName":{"id":6712,"name":"uint64","nodeType":"ElementaryTypeName","src":"10990:6:17","typeDescriptions":{"typeIdentifier":"t_uint64","typeString":"uint64"}},"visibility":"internal"},{"constant":false,"id":6715,"mutability":"mutable","name":"admin","nameLocation":"11012:5:17","nodeType":"VariableDeclaration","scope":6718,"src":"11005:12:17","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint64","typeString":"uint64"},"typeName":{"id":6714,"name":"uint64","nodeType":"ElementaryTypeName","src":"11005:6:17","typeDescriptions":{"typeIdentifier":"t_uint64","typeString":"uint64"}},"visibility":"internal"}],"src":"10989:29:17"},"returnParameters":{"id":6717,"nodeType":"ParameterList","parameters":[],"src":"11027:0:17"},"scope":6842,"src":"10968:60:17","stateMutability":"nonpayable","virtual":false,"visibility":"external"},{"documentation":{"id":6719,"nodeType":"StructuredDocumentation","src":"11034:190:17","text":" @dev Change guardian role for a given role.\n Requirements:\n - the caller must be a global admin\n Emits a {RoleGuardianChanged} event"},"functionSelector":"52962952","id":6726,"implemented":false,"kind":"function","modifiers":[],"name":"setRoleGuardian","nameLocation":"11238:15:17","nodeType":"FunctionDefinition","parameters":{"id":6724,"nodeType":"ParameterList","parameters":[{"constant":false,"id":6721,"mutability":"mutable","name":"roleId","nameLocation":"11261:6:17","nodeType":"VariableDeclaration","scope":6726,"src":"11254:13:17","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint64","typeString":"uint64"},"typeName":{"id":6720,"name":"uint64","nodeType":"ElementaryTypeName","src":"11254:6:17","typeDescriptions":{"typeIdentifier":"t_uint64","typeString":"uint64"}},"visibility":"internal"},{"constant":false,"id":6723,"mutability":"mutable","name":"guardian","nameLocation":"11276:8:17","nodeType":"VariableDeclaration","scope":6726,"src":"11269:15:17","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint64","typeString":"uint64"},"typeName":{"id":6722,"name":"uint64","nodeType":"ElementaryTypeName","src":"11269:6:17","typeDescriptions":{"typeIdentifier":"t_uint64","typeString":"uint64"}},"visibility":"internal"}],"src":"11253:32:17"},"returnParameters":{"id":6725,"nodeType":"ParameterList","parameters":[],"src":"11294:0:17"},"scope":6842,"src":"11229:66:17","stateMutability":"nonpayable","virtual":false,"visibility":"external"},{"documentation":{"id":6727,"nodeType":"StructuredDocumentation","src":"11301:196:17","text":" @dev Update the delay for granting a `roleId`.\n Requirements:\n - the caller must be a global admin\n Emits a {RoleGrantDelayChanged} event."},"functionSelector":"a64d95ce","id":6734,"implemented":false,"kind":"function","modifiers":[],"name":"setGrantDelay","nameLocation":"11511:13:17","nodeType":"FunctionDefinition","parameters":{"id":6732,"nodeType":"ParameterList","parameters":[{"constant":false,"id":6729,"mutability":"mutable","name":"roleId","nameLocation":"11532:6:17","nodeType":"VariableDeclaration","scope":6734,"src":"11525:13:17","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint64","typeString":"uint64"},"typeName":{"id":6728,"name":"uint64","nodeType":"ElementaryTypeName","src":"11525:6:17","typeDescriptions":{"typeIdentifier":"t_uint64","typeString":"uint64"}},"visibility":"internal"},{"constant":false,"id":6731,"mutability":"mutable","name":"newDelay","nameLocation":"11547:8:17","nodeType":"VariableDeclaration","scope":6734,"src":"11540:15:17","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint32","typeString":"uint32"},"typeName":{"id":6730,"name":"uint32","nodeType":"ElementaryTypeName","src":"11540:6:17","typeDescriptions":{"typeIdentifier":"t_uint32","typeString":"uint32"}},"visibility":"internal"}],"src":"11524:32:17"},"returnParameters":{"id":6733,"nodeType":"ParameterList","parameters":[],"src":"11565:0:17"},"scope":6842,"src":"11502:64:17","stateMutability":"nonpayable","virtual":false,"visibility":"external"},{"documentation":{"id":6735,"nodeType":"StructuredDocumentation","src":"11572:267:17","text":" @dev Set the role required to call functions identified by the `selectors` in the `target` contract.\n Requirements:\n - the caller must be a global admin\n Emits a {TargetFunctionRoleUpdated} event per selector."},"functionSelector":"08d6122d","id":6745,"implemented":false,"kind":"function","modifiers":[],"name":"setTargetFunctionRole","nameLocation":"11853:21:17","nodeType":"FunctionDefinition","parameters":{"id":6743,"nodeType":"ParameterList","parameters":[{"constant":false,"id":6737,"mutability":"mutable","name":"target","nameLocation":"11883:6:17","nodeType":"VariableDeclaration","scope":6745,"src":"11875:14:17","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":6736,"name":"address","nodeType":"ElementaryTypeName","src":"11875:7:17","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":6740,"mutability":"mutable","name":"selectors","nameLocation":"11909:9:17","nodeType":"VariableDeclaration","scope":6745,"src":"11891:27:17","stateVariable":false,"storageLocation":"calldata","typeDescriptions":{"typeIdentifier":"t_array$_t_bytes4_$dyn_calldata_ptr","typeString":"bytes4[]"},"typeName":{"baseType":{"id":6738,"name":"bytes4","nodeType":"ElementaryTypeName","src":"11891:6:17","typeDescriptions":{"typeIdentifier":"t_bytes4","typeString":"bytes4"}},"id":6739,"nodeType":"ArrayTypeName","src":"11891:8:17","typeDescriptions":{"typeIdentifier":"t_array$_t_bytes4_$dyn_storage_ptr","typeString":"bytes4[]"}},"visibility":"internal"},{"constant":false,"id":6742,"mutability":"mutable","name":"roleId","nameLocation":"11927:6:17","nodeType":"VariableDeclaration","scope":6745,"src":"11920:13:17","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint64","typeString":"uint64"},"typeName":{"id":6741,"name":"uint64","nodeType":"ElementaryTypeName","src":"11920:6:17","typeDescriptions":{"typeIdentifier":"t_uint64","typeString":"uint64"}},"visibility":"internal"}],"src":"11874:60:17"},"returnParameters":{"id":6744,"nodeType":"ParameterList","parameters":[],"src":"11943:0:17"},"scope":6842,"src":"11844:100:17","stateMutability":"nonpayable","virtual":false,"visibility":"external"},{"documentation":{"id":6746,"nodeType":"StructuredDocumentation","src":"11950:229:17","text":" @dev Set the delay for changing the configuration of a given target contract.\n Requirements:\n - the caller must be a global admin\n Emits a {TargetAdminDelayUpdated} event."},"functionSelector":"d22b5989","id":6753,"implemented":false,"kind":"function","modifiers":[],"name":"setTargetAdminDelay","nameLocation":"12193:19:17","nodeType":"FunctionDefinition","parameters":{"id":6751,"nodeType":"ParameterList","parameters":[{"constant":false,"id":6748,"mutability":"mutable","name":"target","nameLocation":"12221:6:17","nodeType":"VariableDeclaration","scope":6753,"src":"12213:14:17","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":6747,"name":"address","nodeType":"ElementaryTypeName","src":"12213:7:17","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":6750,"mutability":"mutable","name":"newDelay","nameLocation":"12236:8:17","nodeType":"VariableDeclaration","scope":6753,"src":"12229:15:17","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint32","typeString":"uint32"},"typeName":{"id":6749,"name":"uint32","nodeType":"ElementaryTypeName","src":"12229:6:17","typeDescriptions":{"typeIdentifier":"t_uint32","typeString":"uint32"}},"visibility":"internal"}],"src":"12212:33:17"},"returnParameters":{"id":6752,"nodeType":"ParameterList","parameters":[],"src":"12254:0:17"},"scope":6842,"src":"12184:71:17","stateMutability":"nonpayable","virtual":false,"visibility":"external"},{"documentation":{"id":6754,"nodeType":"StructuredDocumentation","src":"12261:291:17","text":" @dev Set the closed flag for a contract.\n Closing the manager itself won't disable access to admin methods to avoid locking the contract.\n Requirements:\n - the caller must be a global admin\n Emits a {TargetClosed} event."},"functionSelector":"167bd395","id":6761,"implemented":false,"kind":"function","modifiers":[],"name":"setTargetClosed","nameLocation":"12566:15:17","nodeType":"FunctionDefinition","parameters":{"id":6759,"nodeType":"ParameterList","parameters":[{"constant":false,"id":6756,"mutability":"mutable","name":"target","nameLocation":"12590:6:17","nodeType":"VariableDeclaration","scope":6761,"src":"12582:14:17","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":6755,"name":"address","nodeType":"ElementaryTypeName","src":"12582:7:17","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":6758,"mutability":"mutable","name":"closed","nameLocation":"12603:6:17","nodeType":"VariableDeclaration","scope":6761,"src":"12598:11:17","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":6757,"name":"bool","nodeType":"ElementaryTypeName","src":"12598:4:17","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"}],"src":"12581:29:17"},"returnParameters":{"id":6760,"nodeType":"ParameterList","parameters":[],"src":"12619:0:17"},"scope":6842,"src":"12557:63:17","stateMutability":"nonpayable","virtual":false,"visibility":"external"},{"documentation":{"id":6762,"nodeType":"StructuredDocumentation","src":"12626:209:17","text":" @dev Return the timepoint at which a scheduled operation will be ready for execution. This returns 0 if the\n operation is not yet scheduled, has expired, was executed, or was canceled."},"functionSelector":"3adc277a","id":6769,"implemented":false,"kind":"function","modifiers":[],"name":"getSchedule","nameLocation":"12849:11:17","nodeType":"FunctionDefinition","parameters":{"id":6765,"nodeType":"ParameterList","parameters":[{"constant":false,"id":6764,"mutability":"mutable","name":"id","nameLocation":"12869:2:17","nodeType":"VariableDeclaration","scope":6769,"src":"12861:10:17","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":6763,"name":"bytes32","nodeType":"ElementaryTypeName","src":"12861:7:17","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"}],"src":"12860:12:17"},"returnParameters":{"id":6768,"nodeType":"ParameterList","parameters":[{"constant":false,"id":6767,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":6769,"src":"12896:6:17","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint48","typeString":"uint48"},"typeName":{"id":6766,"name":"uint48","nodeType":"ElementaryTypeName","src":"12896:6:17","typeDescriptions":{"typeIdentifier":"t_uint48","typeString":"uint48"}},"visibility":"internal"}],"src":"12895:8:17"},"scope":6842,"src":"12840:64:17","stateMutability":"view","virtual":false,"visibility":"external"},{"documentation":{"id":6770,"nodeType":"StructuredDocumentation","src":"12910:152:17","text":" @dev Return the nonce for the latest scheduled operation with a given id. Returns 0 if the operation has never\n been scheduled."},"functionSelector":"4136a33c","id":6777,"implemented":false,"kind":"function","modifiers":[],"name":"getNonce","nameLocation":"13076:8:17","nodeType":"FunctionDefinition","parameters":{"id":6773,"nodeType":"ParameterList","parameters":[{"constant":false,"id":6772,"mutability":"mutable","name":"id","nameLocation":"13093:2:17","nodeType":"VariableDeclaration","scope":6777,"src":"13085:10:17","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":6771,"name":"bytes32","nodeType":"ElementaryTypeName","src":"13085:7:17","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"}],"src":"13084:12:17"},"returnParameters":{"id":6776,"nodeType":"ParameterList","parameters":[{"constant":false,"id":6775,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":6777,"src":"13120:6:17","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint32","typeString":"uint32"},"typeName":{"id":6774,"name":"uint32","nodeType":"ElementaryTypeName","src":"13120:6:17","typeDescriptions":{"typeIdentifier":"t_uint32","typeString":"uint32"}},"visibility":"internal"}],"src":"13119:8:17"},"scope":6842,"src":"13067:61:17","stateMutability":"view","virtual":false,"visibility":"external"},{"documentation":{"id":6778,"nodeType":"StructuredDocumentation","src":"13134:1068:17","text":" @dev Schedule a delayed operation for future execution, and return the operation identifier. It is possible to\n choose the timestamp at which the operation becomes executable as long as it satisfies the execution delays\n required for the caller. The special value zero will automatically set the earliest possible time.\n Returns the `operationId` that was scheduled. Since this value is a hash of the parameters, it can reoccur when\n the same parameters are used; if this is relevant, the returned `nonce` can be used to uniquely identify this\n scheduled operation from other occurrences of the same `operationId` in invocations of {execute} and {cancel}.\n Emits a {OperationScheduled} event.\n NOTE: It is not possible to concurrently schedule more than one operation with the same `target` and `data`. If\n this is necessary, a random byte can be appended to `data` to act as a salt that will be ignored by the target\n contract if it is using standard Solidity ABI encoding."},"functionSelector":"f801a698","id":6791,"implemented":false,"kind":"function","modifiers":[],"name":"schedule","nameLocation":"14216:8:17","nodeType":"FunctionDefinition","parameters":{"id":6785,"nodeType":"ParameterList","parameters":[{"constant":false,"id":6780,"mutability":"mutable","name":"target","nameLocation":"14242:6:17","nodeType":"VariableDeclaration","scope":6791,"src":"14234:14:17","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":6779,"name":"address","nodeType":"ElementaryTypeName","src":"14234:7:17","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":6782,"mutability":"mutable","name":"data","nameLocation":"14273:4:17","nodeType":"VariableDeclaration","scope":6791,"src":"14258:19:17","stateVariable":false,"storageLocation":"calldata","typeDescriptions":{"typeIdentifier":"t_bytes_calldata_ptr","typeString":"bytes"},"typeName":{"id":6781,"name":"bytes","nodeType":"ElementaryTypeName","src":"14258:5:17","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"},{"constant":false,"id":6784,"mutability":"mutable","name":"when","nameLocation":"14294:4:17","nodeType":"VariableDeclaration","scope":6791,"src":"14287:11:17","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint48","typeString":"uint48"},"typeName":{"id":6783,"name":"uint48","nodeType":"ElementaryTypeName","src":"14287:6:17","typeDescriptions":{"typeIdentifier":"t_uint48","typeString":"uint48"}},"visibility":"internal"}],"src":"14224:80:17"},"returnParameters":{"id":6790,"nodeType":"ParameterList","parameters":[{"constant":false,"id":6787,"mutability":"mutable","name":"operationId","nameLocation":"14331:11:17","nodeType":"VariableDeclaration","scope":6791,"src":"14323:19:17","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":6786,"name":"bytes32","nodeType":"ElementaryTypeName","src":"14323:7:17","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"},{"constant":false,"id":6789,"mutability":"mutable","name":"nonce","nameLocation":"14351:5:17","nodeType":"VariableDeclaration","scope":6791,"src":"14344:12:17","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint32","typeString":"uint32"},"typeName":{"id":6788,"name":"uint32","nodeType":"ElementaryTypeName","src":"14344:6:17","typeDescriptions":{"typeIdentifier":"t_uint32","typeString":"uint32"}},"visibility":"internal"}],"src":"14322:35:17"},"scope":6842,"src":"14207:151:17","stateMutability":"nonpayable","virtual":false,"visibility":"external"},{"documentation":{"id":6792,"nodeType":"StructuredDocumentation","src":"14364:451:17","text":" @dev Execute a function that is delay restricted, provided it was properly scheduled beforehand, or the\n execution delay is 0.\n Returns the nonce that identifies the previously scheduled operation that is executed, or 0 if the\n operation wasn't previously scheduled (if the caller doesn't have an execution delay).\n Emits an {OperationExecuted} event only if the call was scheduled and delayed."},"functionSelector":"1cff79cd","id":6801,"implemented":false,"kind":"function","modifiers":[],"name":"execute","nameLocation":"14829:7:17","nodeType":"FunctionDefinition","parameters":{"id":6797,"nodeType":"ParameterList","parameters":[{"constant":false,"id":6794,"mutability":"mutable","name":"target","nameLocation":"14845:6:17","nodeType":"VariableDeclaration","scope":6801,"src":"14837:14:17","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":6793,"name":"address","nodeType":"ElementaryTypeName","src":"14837:7:17","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":6796,"mutability":"mutable","name":"data","nameLocation":"14868:4:17","nodeType":"VariableDeclaration","scope":6801,"src":"14853:19:17","stateVariable":false,"storageLocation":"calldata","typeDescriptions":{"typeIdentifier":"t_bytes_calldata_ptr","typeString":"bytes"},"typeName":{"id":6795,"name":"bytes","nodeType":"ElementaryTypeName","src":"14853:5:17","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"}],"src":"14836:37:17"},"returnParameters":{"id":6800,"nodeType":"ParameterList","parameters":[{"constant":false,"id":6799,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":6801,"src":"14900:6:17","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint32","typeString":"uint32"},"typeName":{"id":6798,"name":"uint32","nodeType":"ElementaryTypeName","src":"14900:6:17","typeDescriptions":{"typeIdentifier":"t_uint32","typeString":"uint32"}},"visibility":"internal"}],"src":"14899:8:17"},"scope":6842,"src":"14820:88:17","stateMutability":"payable","virtual":false,"visibility":"external"},{"documentation":{"id":6802,"nodeType":"StructuredDocumentation","src":"14914:339:17","text":" @dev Cancel a scheduled (delayed) operation. Returns the nonce that identifies the previously scheduled\n operation that is cancelled.\n Requirements:\n - the caller must be the proposer, a guardian of the targeted function, or a global admin\n Emits a {OperationCanceled} event."},"functionSelector":"d6bb62c6","id":6813,"implemented":false,"kind":"function","modifiers":[],"name":"cancel","nameLocation":"15267:6:17","nodeType":"FunctionDefinition","parameters":{"id":6809,"nodeType":"ParameterList","parameters":[{"constant":false,"id":6804,"mutability":"mutable","name":"caller","nameLocation":"15282:6:17","nodeType":"VariableDeclaration","scope":6813,"src":"15274:14:17","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":6803,"name":"address","nodeType":"ElementaryTypeName","src":"15274:7:17","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":6806,"mutability":"mutable","name":"target","nameLocation":"15298:6:17","nodeType":"VariableDeclaration","scope":6813,"src":"15290:14:17","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":6805,"name":"address","nodeType":"ElementaryTypeName","src":"15290:7:17","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":6808,"mutability":"mutable","name":"data","nameLocation":"15321:4:17","nodeType":"VariableDeclaration","scope":6813,"src":"15306:19:17","stateVariable":false,"storageLocation":"calldata","typeDescriptions":{"typeIdentifier":"t_bytes_calldata_ptr","typeString":"bytes"},"typeName":{"id":6807,"name":"bytes","nodeType":"ElementaryTypeName","src":"15306:5:17","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"}],"src":"15273:53:17"},"returnParameters":{"id":6812,"nodeType":"ParameterList","parameters":[{"constant":false,"id":6811,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":6813,"src":"15345:6:17","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint32","typeString":"uint32"},"typeName":{"id":6810,"name":"uint32","nodeType":"ElementaryTypeName","src":"15345:6:17","typeDescriptions":{"typeIdentifier":"t_uint32","typeString":"uint32"}},"visibility":"internal"}],"src":"15344:8:17"},"scope":6842,"src":"15258:95:17","stateMutability":"nonpayable","virtual":false,"visibility":"external"},{"documentation":{"id":6814,"nodeType":"StructuredDocumentation","src":"15359:435:17","text":" @dev Consume a scheduled operation targeting the caller. If such an operation exists, mark it as consumed\n (emit an {OperationExecuted} event and clean the state). Otherwise, throw an error.\n This is useful for contracts that want to enforce that calls targeting them were scheduled on the manager,\n with all the verifications that it implies.\n Emit a {OperationExecuted} event."},"functionSelector":"94c7d7ee","id":6821,"implemented":false,"kind":"function","modifiers":[],"name":"consumeScheduledOp","nameLocation":"15808:18:17","nodeType":"FunctionDefinition","parameters":{"id":6819,"nodeType":"ParameterList","parameters":[{"constant":false,"id":6816,"mutability":"mutable","name":"caller","nameLocation":"15835:6:17","nodeType":"VariableDeclaration","scope":6821,"src":"15827:14:17","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":6815,"name":"address","nodeType":"ElementaryTypeName","src":"15827:7:17","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":6818,"mutability":"mutable","name":"data","nameLocation":"15858:4:17","nodeType":"VariableDeclaration","scope":6821,"src":"15843:19:17","stateVariable":false,"storageLocation":"calldata","typeDescriptions":{"typeIdentifier":"t_bytes_calldata_ptr","typeString":"bytes"},"typeName":{"id":6817,"name":"bytes","nodeType":"ElementaryTypeName","src":"15843:5:17","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"}],"src":"15826:37:17"},"returnParameters":{"id":6820,"nodeType":"ParameterList","parameters":[],"src":"15872:0:17"},"scope":6842,"src":"15799:74:17","stateMutability":"nonpayable","virtual":false,"visibility":"external"},{"documentation":{"id":6822,"nodeType":"StructuredDocumentation","src":"15879:64:17","text":" @dev Hashing function for delayed operations."},"functionSelector":"abd9bd2a","id":6833,"implemented":false,"kind":"function","modifiers":[],"name":"hashOperation","nameLocation":"15957:13:17","nodeType":"FunctionDefinition","parameters":{"id":6829,"nodeType":"ParameterList","parameters":[{"constant":false,"id":6824,"mutability":"mutable","name":"caller","nameLocation":"15979:6:17","nodeType":"VariableDeclaration","scope":6833,"src":"15971:14:17","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":6823,"name":"address","nodeType":"ElementaryTypeName","src":"15971:7:17","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":6826,"mutability":"mutable","name":"target","nameLocation":"15995:6:17","nodeType":"VariableDeclaration","scope":6833,"src":"15987:14:17","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":6825,"name":"address","nodeType":"ElementaryTypeName","src":"15987:7:17","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":6828,"mutability":"mutable","name":"data","nameLocation":"16018:4:17","nodeType":"VariableDeclaration","scope":6833,"src":"16003:19:17","stateVariable":false,"storageLocation":"calldata","typeDescriptions":{"typeIdentifier":"t_bytes_calldata_ptr","typeString":"bytes"},"typeName":{"id":6827,"name":"bytes","nodeType":"ElementaryTypeName","src":"16003:5:17","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"}],"src":"15970:53:17"},"returnParameters":{"id":6832,"nodeType":"ParameterList","parameters":[{"constant":false,"id":6831,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":6833,"src":"16047:7:17","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":6830,"name":"bytes32","nodeType":"ElementaryTypeName","src":"16047:7:17","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"}],"src":"16046:9:17"},"scope":6842,"src":"15948:108:17","stateMutability":"view","virtual":false,"visibility":"external"},{"documentation":{"id":6834,"nodeType":"StructuredDocumentation","src":"16062:169:17","text":" @dev Changes the authority of a target managed by this manager instance.\n Requirements:\n - the caller must be a global admin"},"functionSelector":"18ff183c","id":6841,"implemented":false,"kind":"function","modifiers":[],"name":"updateAuthority","nameLocation":"16245:15:17","nodeType":"FunctionDefinition","parameters":{"id":6839,"nodeType":"ParameterList","parameters":[{"constant":false,"id":6836,"mutability":"mutable","name":"target","nameLocation":"16269:6:17","nodeType":"VariableDeclaration","scope":6841,"src":"16261:14:17","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":6835,"name":"address","nodeType":"ElementaryTypeName","src":"16261:7:17","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":6838,"mutability":"mutable","name":"newAuthority","nameLocation":"16285:12:17","nodeType":"VariableDeclaration","scope":6841,"src":"16277:20:17","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":6837,"name":"address","nodeType":"ElementaryTypeName","src":"16277:7:17","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"16260:38:17"},"returnParameters":{"id":6840,"nodeType":"ParameterList","parameters":[],"src":"16307:0:17"},"scope":6842,"src":"16236:72:17","stateMutability":"nonpayable","virtual":false,"visibility":"external"}],"scope":6843,"src":"143:16167:17","usedErrors":[6522,6526,6530,6534,6538,6540,6546,6554,6558,6568,6572],"usedEvents":[6429,6436,6443,6450,6463,6470,6477,6484,6493,6500,6509,6518]}],"src":"117:16194:17"},"id":17},"@openzeppelin/contracts/interfaces/IERC1363.sol":{"ast":{"absolutePath":"@openzeppelin/contracts/interfaces/IERC1363.sol","exportedSymbols":{"IERC1363":[6924],"IERC165":[11084],"IERC20":[8679]},"id":6925,"license":"MIT","nodeType":"SourceUnit","nodes":[{"id":6844,"literals":["solidity",">=","0.6",".2"],"nodeType":"PragmaDirective","src":"107:24:18"},{"absolutePath":"@openzeppelin/contracts/interfaces/IERC20.sol","file":"./IERC20.sol","id":6846,"nameLocation":"-1:-1:-1","nodeType":"ImportDirective","scope":6925,"sourceUnit":6954,"src":"133:36:18","symbolAliases":[{"foreign":{"id":6845,"name":"IERC20","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8679,"src":"141:6:18","typeDescriptions":{}},"nameLocation":"-1:-1:-1"}],"unitAlias":""},{"absolutePath":"@openzeppelin/contracts/interfaces/IERC165.sol","file":"./IERC165.sol","id":6848,"nameLocation":"-1:-1:-1","nodeType":"ImportDirective","scope":6925,"sourceUnit":6929,"src":"170:38:18","symbolAliases":[{"foreign":{"id":6847,"name":"IERC165","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":11084,"src":"178:7:18","typeDescriptions":{}},"nameLocation":"-1:-1:-1"}],"unitAlias":""},{"abstract":false,"baseContracts":[{"baseName":{"id":6850,"name":"IERC20","nameLocations":["590:6:18"],"nodeType":"IdentifierPath","referencedDeclaration":8679,"src":"590:6:18"},"id":6851,"nodeType":"InheritanceSpecifier","src":"590:6:18"},{"baseName":{"id":6852,"name":"IERC165","nameLocations":["598:7:18"],"nodeType":"IdentifierPath","referencedDeclaration":11084,"src":"598:7:18"},"id":6853,"nodeType":"InheritanceSpecifier","src":"598:7:18"}],"canonicalName":"IERC1363","contractDependencies":[],"contractKind":"interface","documentation":{"id":6849,"nodeType":"StructuredDocumentation","src":"210:357:18","text":" @title IERC1363\n @dev Interface of the ERC-1363 standard as defined in the https://eips.ethereum.org/EIPS/eip-1363[ERC-1363].\n Defines an extension interface for ERC-20 tokens that supports executing code on a recipient contract\n after `transfer` or `transferFrom`, or code on a spender contract after `approve`, in a single transaction."},"fullyImplemented":false,"id":6924,"linearizedBaseContracts":[6924,11084,8679],"name":"IERC1363","nameLocation":"578:8:18","nodeType":"ContractDefinition","nodes":[{"documentation":{"id":6854,"nodeType":"StructuredDocumentation","src":"1148:370:18","text":" @dev Moves a `value` amount of tokens from the caller's account to `to`\n and then calls {IERC1363Receiver-onTransferReceived} on `to`.\n @param to The address which you want to transfer to.\n @param value The amount of tokens to be transferred.\n @return A boolean value indicating whether the operation succeeded unless throwing."},"functionSelector":"1296ee62","id":6863,"implemented":false,"kind":"function","modifiers":[],"name":"transferAndCall","nameLocation":"1532:15:18","nodeType":"FunctionDefinition","parameters":{"id":6859,"nodeType":"ParameterList","parameters":[{"constant":false,"id":6856,"mutability":"mutable","name":"to","nameLocation":"1556:2:18","nodeType":"VariableDeclaration","scope":6863,"src":"1548:10:18","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":6855,"name":"address","nodeType":"ElementaryTypeName","src":"1548:7:18","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":6858,"mutability":"mutable","name":"value","nameLocation":"1568:5:18","nodeType":"VariableDeclaration","scope":6863,"src":"1560:13:18","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":6857,"name":"uint256","nodeType":"ElementaryTypeName","src":"1560:7:18","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"1547:27:18"},"returnParameters":{"id":6862,"nodeType":"ParameterList","parameters":[{"constant":false,"id":6861,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":6863,"src":"1593:4:18","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":6860,"name":"bool","nodeType":"ElementaryTypeName","src":"1593:4:18","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"}],"src":"1592:6:18"},"scope":6924,"src":"1523:76:18","stateMutability":"nonpayable","virtual":false,"visibility":"external"},{"documentation":{"id":6864,"nodeType":"StructuredDocumentation","src":"1605:453:18","text":" @dev Moves a `value` amount of tokens from the caller's account to `to`\n and then calls {IERC1363Receiver-onTransferReceived} on `to`.\n @param to The address which you want to transfer to.\n @param value The amount of tokens to be transferred.\n @param data Additional data with no specified format, sent in call to `to`.\n @return A boolean value indicating whether the operation succeeded unless throwing."},"functionSelector":"4000aea0","id":6875,"implemented":false,"kind":"function","modifiers":[],"name":"transferAndCall","nameLocation":"2072:15:18","nodeType":"FunctionDefinition","parameters":{"id":6871,"nodeType":"ParameterList","parameters":[{"constant":false,"id":6866,"mutability":"mutable","name":"to","nameLocation":"2096:2:18","nodeType":"VariableDeclaration","scope":6875,"src":"2088:10:18","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":6865,"name":"address","nodeType":"ElementaryTypeName","src":"2088:7:18","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":6868,"mutability":"mutable","name":"value","nameLocation":"2108:5:18","nodeType":"VariableDeclaration","scope":6875,"src":"2100:13:18","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":6867,"name":"uint256","nodeType":"ElementaryTypeName","src":"2100:7:18","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":6870,"mutability":"mutable","name":"data","nameLocation":"2130:4:18","nodeType":"VariableDeclaration","scope":6875,"src":"2115:19:18","stateVariable":false,"storageLocation":"calldata","typeDescriptions":{"typeIdentifier":"t_bytes_calldata_ptr","typeString":"bytes"},"typeName":{"id":6869,"name":"bytes","nodeType":"ElementaryTypeName","src":"2115:5:18","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"}],"src":"2087:48:18"},"returnParameters":{"id":6874,"nodeType":"ParameterList","parameters":[{"constant":false,"id":6873,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":6875,"src":"2154:4:18","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":6872,"name":"bool","nodeType":"ElementaryTypeName","src":"2154:4:18","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"}],"src":"2153:6:18"},"scope":6924,"src":"2063:97:18","stateMutability":"nonpayable","virtual":false,"visibility":"external"},{"documentation":{"id":6876,"nodeType":"StructuredDocumentation","src":"2166:453:18","text":" @dev Moves a `value` amount of tokens from `from` to `to` using the allowance mechanism\n and then calls {IERC1363Receiver-onTransferReceived} on `to`.\n @param from The address which you want to send tokens from.\n @param to The address which you want to transfer to.\n @param value The amount of tokens to be transferred.\n @return A boolean value indicating whether the operation succeeded unless throwing."},"functionSelector":"d8fbe994","id":6887,"implemented":false,"kind":"function","modifiers":[],"name":"transferFromAndCall","nameLocation":"2633:19:18","nodeType":"FunctionDefinition","parameters":{"id":6883,"nodeType":"ParameterList","parameters":[{"constant":false,"id":6878,"mutability":"mutable","name":"from","nameLocation":"2661:4:18","nodeType":"VariableDeclaration","scope":6887,"src":"2653:12:18","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":6877,"name":"address","nodeType":"ElementaryTypeName","src":"2653:7:18","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":6880,"mutability":"mutable","name":"to","nameLocation":"2675:2:18","nodeType":"VariableDeclaration","scope":6887,"src":"2667:10:18","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":6879,"name":"address","nodeType":"ElementaryTypeName","src":"2667:7:18","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":6882,"mutability":"mutable","name":"value","nameLocation":"2687:5:18","nodeType":"VariableDeclaration","scope":6887,"src":"2679:13:18","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":6881,"name":"uint256","nodeType":"ElementaryTypeName","src":"2679:7:18","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"2652:41:18"},"returnParameters":{"id":6886,"nodeType":"ParameterList","parameters":[{"constant":false,"id":6885,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":6887,"src":"2712:4:18","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":6884,"name":"bool","nodeType":"ElementaryTypeName","src":"2712:4:18","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"}],"src":"2711:6:18"},"scope":6924,"src":"2624:94:18","stateMutability":"nonpayable","virtual":false,"visibility":"external"},{"documentation":{"id":6888,"nodeType":"StructuredDocumentation","src":"2724:536:18","text":" @dev Moves a `value` amount of tokens from `from` to `to` using the allowance mechanism\n and then calls {IERC1363Receiver-onTransferReceived} on `to`.\n @param from The address which you want to send tokens from.\n @param to The address which you want to transfer to.\n @param value The amount of tokens to be transferred.\n @param data Additional data with no specified format, sent in call to `to`.\n @return A boolean value indicating whether the operation succeeded unless throwing."},"functionSelector":"c1d34b89","id":6901,"implemented":false,"kind":"function","modifiers":[],"name":"transferFromAndCall","nameLocation":"3274:19:18","nodeType":"FunctionDefinition","parameters":{"id":6897,"nodeType":"ParameterList","parameters":[{"constant":false,"id":6890,"mutability":"mutable","name":"from","nameLocation":"3302:4:18","nodeType":"VariableDeclaration","scope":6901,"src":"3294:12:18","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":6889,"name":"address","nodeType":"ElementaryTypeName","src":"3294:7:18","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":6892,"mutability":"mutable","name":"to","nameLocation":"3316:2:18","nodeType":"VariableDeclaration","scope":6901,"src":"3308:10:18","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":6891,"name":"address","nodeType":"ElementaryTypeName","src":"3308:7:18","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":6894,"mutability":"mutable","name":"value","nameLocation":"3328:5:18","nodeType":"VariableDeclaration","scope":6901,"src":"3320:13:18","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":6893,"name":"uint256","nodeType":"ElementaryTypeName","src":"3320:7:18","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":6896,"mutability":"mutable","name":"data","nameLocation":"3350:4:18","nodeType":"VariableDeclaration","scope":6901,"src":"3335:19:18","stateVariable":false,"storageLocation":"calldata","typeDescriptions":{"typeIdentifier":"t_bytes_calldata_ptr","typeString":"bytes"},"typeName":{"id":6895,"name":"bytes","nodeType":"ElementaryTypeName","src":"3335:5:18","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"}],"src":"3293:62:18"},"returnParameters":{"id":6900,"nodeType":"ParameterList","parameters":[{"constant":false,"id":6899,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":6901,"src":"3374:4:18","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":6898,"name":"bool","nodeType":"ElementaryTypeName","src":"3374:4:18","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"}],"src":"3373:6:18"},"scope":6924,"src":"3265:115:18","stateMutability":"nonpayable","virtual":false,"visibility":"external"},{"documentation":{"id":6902,"nodeType":"StructuredDocumentation","src":"3386:390:18","text":" @dev Sets a `value` amount of tokens as the allowance of `spender` over the\n caller's tokens and then calls {IERC1363Spender-onApprovalReceived} on `spender`.\n @param spender The address which will spend the funds.\n @param value The amount of tokens to be spent.\n @return A boolean value indicating whether the operation succeeded unless throwing."},"functionSelector":"3177029f","id":6911,"implemented":false,"kind":"function","modifiers":[],"name":"approveAndCall","nameLocation":"3790:14:18","nodeType":"FunctionDefinition","parameters":{"id":6907,"nodeType":"ParameterList","parameters":[{"constant":false,"id":6904,"mutability":"mutable","name":"spender","nameLocation":"3813:7:18","nodeType":"VariableDeclaration","scope":6911,"src":"3805:15:18","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":6903,"name":"address","nodeType":"ElementaryTypeName","src":"3805:7:18","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":6906,"mutability":"mutable","name":"value","nameLocation":"3830:5:18","nodeType":"VariableDeclaration","scope":6911,"src":"3822:13:18","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":6905,"name":"uint256","nodeType":"ElementaryTypeName","src":"3822:7:18","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"3804:32:18"},"returnParameters":{"id":6910,"nodeType":"ParameterList","parameters":[{"constant":false,"id":6909,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":6911,"src":"3855:4:18","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":6908,"name":"bool","nodeType":"ElementaryTypeName","src":"3855:4:18","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"}],"src":"3854:6:18"},"scope":6924,"src":"3781:80:18","stateMutability":"nonpayable","virtual":false,"visibility":"external"},{"documentation":{"id":6912,"nodeType":"StructuredDocumentation","src":"3867:478:18","text":" @dev Sets a `value` amount of tokens as the allowance of `spender` over the\n caller's tokens and then calls {IERC1363Spender-onApprovalReceived} on `spender`.\n @param spender The address which will spend the funds.\n @param value The amount of tokens to be spent.\n @param data Additional data with no specified format, sent in call to `spender`.\n @return A boolean value indicating whether the operation succeeded unless throwing."},"functionSelector":"cae9ca51","id":6923,"implemented":false,"kind":"function","modifiers":[],"name":"approveAndCall","nameLocation":"4359:14:18","nodeType":"FunctionDefinition","parameters":{"id":6919,"nodeType":"ParameterList","parameters":[{"constant":false,"id":6914,"mutability":"mutable","name":"spender","nameLocation":"4382:7:18","nodeType":"VariableDeclaration","scope":6923,"src":"4374:15:18","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":6913,"name":"address","nodeType":"ElementaryTypeName","src":"4374:7:18","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":6916,"mutability":"mutable","name":"value","nameLocation":"4399:5:18","nodeType":"VariableDeclaration","scope":6923,"src":"4391:13:18","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":6915,"name":"uint256","nodeType":"ElementaryTypeName","src":"4391:7:18","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":6918,"mutability":"mutable","name":"data","nameLocation":"4421:4:18","nodeType":"VariableDeclaration","scope":6923,"src":"4406:19:18","stateVariable":false,"storageLocation":"calldata","typeDescriptions":{"typeIdentifier":"t_bytes_calldata_ptr","typeString":"bytes"},"typeName":{"id":6917,"name":"bytes","nodeType":"ElementaryTypeName","src":"4406:5:18","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"}],"src":"4373:53:18"},"returnParameters":{"id":6922,"nodeType":"ParameterList","parameters":[{"constant":false,"id":6921,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":6923,"src":"4445:4:18","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":6920,"name":"bool","nodeType":"ElementaryTypeName","src":"4445:4:18","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"}],"src":"4444:6:18"},"scope":6924,"src":"4350:101:18","stateMutability":"nonpayable","virtual":false,"visibility":"external"}],"scope":6925,"src":"568:3885:18","usedErrors":[],"usedEvents":[8613,8622]}],"src":"107:4347:18"},"id":18},"@openzeppelin/contracts/interfaces/IERC165.sol":{"ast":{"absolutePath":"@openzeppelin/contracts/interfaces/IERC165.sol","exportedSymbols":{"IERC165":[11084]},"id":6929,"license":"MIT","nodeType":"SourceUnit","nodes":[{"id":6926,"literals":["solidity",">=","0.4",".16"],"nodeType":"PragmaDirective","src":"106:25:19"},{"absolutePath":"@openzeppelin/contracts/utils/introspection/IERC165.sol","file":"../utils/introspection/IERC165.sol","id":6928,"nameLocation":"-1:-1:-1","nodeType":"ImportDirective","scope":6929,"sourceUnit":11085,"src":"133:59:19","symbolAliases":[{"foreign":{"id":6927,"name":"IERC165","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":11084,"src":"141:7:19","typeDescriptions":{}},"nameLocation":"-1:-1:-1"}],"unitAlias":""}],"src":"106:87:19"},"id":19},"@openzeppelin/contracts/interfaces/IERC1967.sol":{"ast":{"absolutePath":"@openzeppelin/contracts/interfaces/IERC1967.sol","exportedSymbols":{"IERC1967":[6949]},"id":6950,"license":"MIT","nodeType":"SourceUnit","nodes":[{"id":6930,"literals":["solidity",">=","0.4",".11"],"nodeType":"PragmaDirective","src":"107:25:20"},{"abstract":false,"baseContracts":[],"canonicalName":"IERC1967","contractDependencies":[],"contractKind":"interface","documentation":{"id":6931,"nodeType":"StructuredDocumentation","src":"134:101:20","text":" @dev ERC-1967: Proxy Storage Slots. This interface contains the events defined in the ERC."},"fullyImplemented":true,"id":6949,"linearizedBaseContracts":[6949],"name":"IERC1967","nameLocation":"246:8:20","nodeType":"ContractDefinition","nodes":[{"anonymous":false,"documentation":{"id":6932,"nodeType":"StructuredDocumentation","src":"261:68:20","text":" @dev Emitted when the implementation is upgraded."},"eventSelector":"bc7cd75a20ee27fd9adebab32041f755214dbc6bffa90cc0225b39da2e5c2d3b","id":6936,"name":"Upgraded","nameLocation":"340:8:20","nodeType":"EventDefinition","parameters":{"id":6935,"nodeType":"ParameterList","parameters":[{"constant":false,"id":6934,"indexed":true,"mutability":"mutable","name":"implementation","nameLocation":"365:14:20","nodeType":"VariableDeclaration","scope":6936,"src":"349:30:20","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":6933,"name":"address","nodeType":"ElementaryTypeName","src":"349:7:20","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"348:32:20"},"src":"334:47:20"},{"anonymous":false,"documentation":{"id":6937,"nodeType":"StructuredDocumentation","src":"387:67:20","text":" @dev Emitted when the admin account has changed."},"eventSelector":"7e644d79422f17c01e4894b5f4f588d331ebfa28653d42ae832dc59e38c9798f","id":6943,"name":"AdminChanged","nameLocation":"465:12:20","nodeType":"EventDefinition","parameters":{"id":6942,"nodeType":"ParameterList","parameters":[{"constant":false,"id":6939,"indexed":false,"mutability":"mutable","name":"previousAdmin","nameLocation":"486:13:20","nodeType":"VariableDeclaration","scope":6943,"src":"478:21:20","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":6938,"name":"address","nodeType":"ElementaryTypeName","src":"478:7:20","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":6941,"indexed":false,"mutability":"mutable","name":"newAdmin","nameLocation":"509:8:20","nodeType":"VariableDeclaration","scope":6943,"src":"501:16:20","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":6940,"name":"address","nodeType":"ElementaryTypeName","src":"501:7:20","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"477:41:20"},"src":"459:60:20"},{"anonymous":false,"documentation":{"id":6944,"nodeType":"StructuredDocumentation","src":"525:59:20","text":" @dev Emitted when the beacon is changed."},"eventSelector":"1cf3b03a6cf19fa2baba4df148e9dcabedea7f8a5c07840e207e5c089be95d3e","id":6948,"name":"BeaconUpgraded","nameLocation":"595:14:20","nodeType":"EventDefinition","parameters":{"id":6947,"nodeType":"ParameterList","parameters":[{"constant":false,"id":6946,"indexed":true,"mutability":"mutable","name":"beacon","nameLocation":"626:6:20","nodeType":"VariableDeclaration","scope":6948,"src":"610:22:20","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":6945,"name":"address","nodeType":"ElementaryTypeName","src":"610:7:20","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"609:24:20"},"src":"589:45:20"}],"scope":6950,"src":"236:400:20","usedErrors":[],"usedEvents":[6936,6943,6948]}],"src":"107:530:20"},"id":20},"@openzeppelin/contracts/interfaces/IERC20.sol":{"ast":{"absolutePath":"@openzeppelin/contracts/interfaces/IERC20.sol","exportedSymbols":{"IERC20":[8679]},"id":6954,"license":"MIT","nodeType":"SourceUnit","nodes":[{"id":6951,"literals":["solidity",">=","0.4",".16"],"nodeType":"PragmaDirective","src":"105:25:21"},{"absolutePath":"@openzeppelin/contracts/token/ERC20/IERC20.sol","file":"../token/ERC20/IERC20.sol","id":6953,"nameLocation":"-1:-1:-1","nodeType":"ImportDirective","scope":6954,"sourceUnit":8680,"src":"132:49:21","symbolAliases":[{"foreign":{"id":6952,"name":"IERC20","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8679,"src":"140:6:21","typeDescriptions":{}},"nameLocation":"-1:-1:-1"}],"unitAlias":""}],"src":"105:77:21"},"id":21},"@openzeppelin/contracts/interfaces/IERC20Metadata.sol":{"ast":{"absolutePath":"@openzeppelin/contracts/interfaces/IERC20Metadata.sol","exportedSymbols":{"IERC20Metadata":[9411]},"id":6958,"license":"MIT","nodeType":"SourceUnit","nodes":[{"id":6955,"literals":["solidity",">=","0.6",".2"],"nodeType":"PragmaDirective","src":"113:24:22"},{"absolutePath":"@openzeppelin/contracts/token/ERC20/extensions/IERC20Metadata.sol","file":"../token/ERC20/extensions/IERC20Metadata.sol","id":6957,"nameLocation":"-1:-1:-1","nodeType":"ImportDirective","scope":6958,"sourceUnit":9412,"src":"139:76:22","symbolAliases":[{"foreign":{"id":6956,"name":"IERC20Metadata","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9411,"src":"147:14:22","typeDescriptions":{}},"nameLocation":"-1:-1:-1"}],"unitAlias":""}],"src":"113:103:22"},"id":22},"@openzeppelin/contracts/interfaces/IERC4626.sol":{"ast":{"absolutePath":"@openzeppelin/contracts/interfaces/IERC4626.sol","exportedSymbols":{"IERC20":[8679],"IERC20Metadata":[9411],"IERC4626":[7127]},"id":7128,"license":"MIT","nodeType":"SourceUnit","nodes":[{"id":6959,"literals":["solidity",">=","0.6",".2"],"nodeType":"PragmaDirective","src":"107:24:23"},{"absolutePath":"@openzeppelin/contracts/token/ERC20/IERC20.sol","file":"../token/ERC20/IERC20.sol","id":6961,"nameLocation":"-1:-1:-1","nodeType":"ImportDirective","scope":7128,"sourceUnit":8680,"src":"133:49:23","symbolAliases":[{"foreign":{"id":6960,"name":"IERC20","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8679,"src":"141:6:23","typeDescriptions":{}},"nameLocation":"-1:-1:-1"}],"unitAlias":""},{"absolutePath":"@openzeppelin/contracts/token/ERC20/extensions/IERC20Metadata.sol","file":"../token/ERC20/extensions/IERC20Metadata.sol","id":6963,"nameLocation":"-1:-1:-1","nodeType":"ImportDirective","scope":7128,"sourceUnit":9412,"src":"183:76:23","symbolAliases":[{"foreign":{"id":6962,"name":"IERC20Metadata","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9411,"src":"191:14:23","typeDescriptions":{}},"nameLocation":"-1:-1:-1"}],"unitAlias":""},{"abstract":false,"baseContracts":[{"baseName":{"id":6965,"name":"IERC20","nameLocations":["421:6:23"],"nodeType":"IdentifierPath","referencedDeclaration":8679,"src":"421:6:23"},"id":6966,"nodeType":"InheritanceSpecifier","src":"421:6:23"},{"baseName":{"id":6967,"name":"IERC20Metadata","nameLocations":["429:14:23"],"nodeType":"IdentifierPath","referencedDeclaration":9411,"src":"429:14:23"},"id":6968,"nodeType":"InheritanceSpecifier","src":"429:14:23"}],"canonicalName":"IERC4626","contractDependencies":[],"contractKind":"interface","documentation":{"id":6964,"nodeType":"StructuredDocumentation","src":"261:137:23","text":" @dev Interface of the ERC-4626 \"Tokenized Vault Standard\", as defined in\n https://eips.ethereum.org/EIPS/eip-4626[ERC-4626]."},"fullyImplemented":false,"id":7127,"linearizedBaseContracts":[7127,9411,8679],"name":"IERC4626","nameLocation":"409:8:23","nodeType":"ContractDefinition","nodes":[{"anonymous":false,"eventSelector":"dcbc1c05240f31ff3ad067ef1ee35ce4997762752e3a095284754544f4c709d7","id":6978,"name":"Deposit","nameLocation":"456:7:23","nodeType":"EventDefinition","parameters":{"id":6977,"nodeType":"ParameterList","parameters":[{"constant":false,"id":6970,"indexed":true,"mutability":"mutable","name":"sender","nameLocation":"480:6:23","nodeType":"VariableDeclaration","scope":6978,"src":"464:22:23","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":6969,"name":"address","nodeType":"ElementaryTypeName","src":"464:7:23","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":6972,"indexed":true,"mutability":"mutable","name":"owner","nameLocation":"504:5:23","nodeType":"VariableDeclaration","scope":6978,"src":"488:21:23","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":6971,"name":"address","nodeType":"ElementaryTypeName","src":"488:7:23","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":6974,"indexed":false,"mutability":"mutable","name":"assets","nameLocation":"519:6:23","nodeType":"VariableDeclaration","scope":6978,"src":"511:14:23","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":6973,"name":"uint256","nodeType":"ElementaryTypeName","src":"511:7:23","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":6976,"indexed":false,"mutability":"mutable","name":"shares","nameLocation":"535:6:23","nodeType":"VariableDeclaration","scope":6978,"src":"527:14:23","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":6975,"name":"uint256","nodeType":"ElementaryTypeName","src":"527:7:23","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"463:79:23"},"src":"450:93:23"},{"anonymous":false,"eventSelector":"fbde797d201c681b91056529119e0b02407c7bb96a4a2c75c01fc9667232c8db","id":6990,"name":"Withdraw","nameLocation":"555:8:23","nodeType":"EventDefinition","parameters":{"id":6989,"nodeType":"ParameterList","parameters":[{"constant":false,"id":6980,"indexed":true,"mutability":"mutable","name":"sender","nameLocation":"589:6:23","nodeType":"VariableDeclaration","scope":6990,"src":"573:22:23","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":6979,"name":"address","nodeType":"ElementaryTypeName","src":"573:7:23","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":6982,"indexed":true,"mutability":"mutable","name":"receiver","nameLocation":"621:8:23","nodeType":"VariableDeclaration","scope":6990,"src":"605:24:23","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":6981,"name":"address","nodeType":"ElementaryTypeName","src":"605:7:23","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":6984,"indexed":true,"mutability":"mutable","name":"owner","nameLocation":"655:5:23","nodeType":"VariableDeclaration","scope":6990,"src":"639:21:23","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":6983,"name":"address","nodeType":"ElementaryTypeName","src":"639:7:23","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":6986,"indexed":false,"mutability":"mutable","name":"assets","nameLocation":"678:6:23","nodeType":"VariableDeclaration","scope":6990,"src":"670:14:23","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":6985,"name":"uint256","nodeType":"ElementaryTypeName","src":"670:7:23","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":6988,"indexed":false,"mutability":"mutable","name":"shares","nameLocation":"702:6:23","nodeType":"VariableDeclaration","scope":6990,"src":"694:14:23","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":6987,"name":"uint256","nodeType":"ElementaryTypeName","src":"694:7:23","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"563:151:23"},"src":"549:166:23"},{"documentation":{"id":6991,"nodeType":"StructuredDocumentation","src":"721:207:23","text":" @dev Returns the address of the underlying token used for the Vault for accounting, depositing, and withdrawing.\n - MUST be an ERC-20 token contract.\n - MUST NOT revert."},"functionSelector":"38d52e0f","id":6996,"implemented":false,"kind":"function","modifiers":[],"name":"asset","nameLocation":"942:5:23","nodeType":"FunctionDefinition","parameters":{"id":6992,"nodeType":"ParameterList","parameters":[],"src":"947:2:23"},"returnParameters":{"id":6995,"nodeType":"ParameterList","parameters":[{"constant":false,"id":6994,"mutability":"mutable","name":"assetTokenAddress","nameLocation":"981:17:23","nodeType":"VariableDeclaration","scope":6996,"src":"973:25:23","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":6993,"name":"address","nodeType":"ElementaryTypeName","src":"973:7:23","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"972:27:23"},"scope":7127,"src":"933:67:23","stateMutability":"view","virtual":false,"visibility":"external"},{"documentation":{"id":6997,"nodeType":"StructuredDocumentation","src":"1006:286:23","text":" @dev Returns the total amount of the underlying asset that is “managed” by Vault.\n - SHOULD include any compounding that occurs from yield.\n - MUST be inclusive of any fees that are charged against assets in the Vault.\n - MUST NOT revert."},"functionSelector":"01e1d114","id":7002,"implemented":false,"kind":"function","modifiers":[],"name":"totalAssets","nameLocation":"1306:11:23","nodeType":"FunctionDefinition","parameters":{"id":6998,"nodeType":"ParameterList","parameters":[],"src":"1317:2:23"},"returnParameters":{"id":7001,"nodeType":"ParameterList","parameters":[{"constant":false,"id":7000,"mutability":"mutable","name":"totalManagedAssets","nameLocation":"1351:18:23","nodeType":"VariableDeclaration","scope":7002,"src":"1343:26:23","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":6999,"name":"uint256","nodeType":"ElementaryTypeName","src":"1343:7:23","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"1342:28:23"},"scope":7127,"src":"1297:74:23","stateMutability":"view","virtual":false,"visibility":"external"},{"documentation":{"id":7003,"nodeType":"StructuredDocumentation","src":"1377:720:23","text":" @dev Returns the amount of shares that the Vault would exchange for the amount of assets provided, in an ideal\n scenario where all the conditions are met.\n - MUST NOT be inclusive of any fees that are charged against assets in the Vault.\n - MUST NOT show any variations depending on the caller.\n - MUST NOT reflect slippage or other on-chain conditions, when performing the actual exchange.\n - MUST NOT revert.\n NOTE: This calculation MAY NOT reflect the “per-user” price-per-share, and instead should reflect the\n “average-user’s” price-per-share, meaning what the average user should expect to see when exchanging to and\n from."},"functionSelector":"c6e6f592","id":7010,"implemented":false,"kind":"function","modifiers":[],"name":"convertToShares","nameLocation":"2111:15:23","nodeType":"FunctionDefinition","parameters":{"id":7006,"nodeType":"ParameterList","parameters":[{"constant":false,"id":7005,"mutability":"mutable","name":"assets","nameLocation":"2135:6:23","nodeType":"VariableDeclaration","scope":7010,"src":"2127:14:23","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":7004,"name":"uint256","nodeType":"ElementaryTypeName","src":"2127:7:23","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"2126:16:23"},"returnParameters":{"id":7009,"nodeType":"ParameterList","parameters":[{"constant":false,"id":7008,"mutability":"mutable","name":"shares","nameLocation":"2174:6:23","nodeType":"VariableDeclaration","scope":7010,"src":"2166:14:23","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":7007,"name":"uint256","nodeType":"ElementaryTypeName","src":"2166:7:23","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"2165:16:23"},"scope":7127,"src":"2102:80:23","stateMutability":"view","virtual":false,"visibility":"external"},{"documentation":{"id":7011,"nodeType":"StructuredDocumentation","src":"2188:720:23","text":" @dev Returns the amount of assets that the Vault would exchange for the amount of shares provided, in an ideal\n scenario where all the conditions are met.\n - MUST NOT be inclusive of any fees that are charged against assets in the Vault.\n - MUST NOT show any variations depending on the caller.\n - MUST NOT reflect slippage or other on-chain conditions, when performing the actual exchange.\n - MUST NOT revert.\n NOTE: This calculation MAY NOT reflect the “per-user” price-per-share, and instead should reflect the\n “average-user’s” price-per-share, meaning what the average user should expect to see when exchanging to and\n from."},"functionSelector":"07a2d13a","id":7018,"implemented":false,"kind":"function","modifiers":[],"name":"convertToAssets","nameLocation":"2922:15:23","nodeType":"FunctionDefinition","parameters":{"id":7014,"nodeType":"ParameterList","parameters":[{"constant":false,"id":7013,"mutability":"mutable","name":"shares","nameLocation":"2946:6:23","nodeType":"VariableDeclaration","scope":7018,"src":"2938:14:23","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":7012,"name":"uint256","nodeType":"ElementaryTypeName","src":"2938:7:23","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"2937:16:23"},"returnParameters":{"id":7017,"nodeType":"ParameterList","parameters":[{"constant":false,"id":7016,"mutability":"mutable","name":"assets","nameLocation":"2985:6:23","nodeType":"VariableDeclaration","scope":7018,"src":"2977:14:23","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":7015,"name":"uint256","nodeType":"ElementaryTypeName","src":"2977:7:23","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"2976:16:23"},"scope":7127,"src":"2913:80:23","stateMutability":"view","virtual":false,"visibility":"external"},{"documentation":{"id":7019,"nodeType":"StructuredDocumentation","src":"2999:386:23","text":" @dev Returns the maximum amount of the underlying asset that can be deposited into the Vault for the receiver,\n through a deposit call.\n - MUST return a limited value if receiver is subject to some deposit limit.\n - MUST return 2 ** 256 - 1 if there is no limit on the maximum amount of assets that may be deposited.\n - MUST NOT revert."},"functionSelector":"402d267d","id":7026,"implemented":false,"kind":"function","modifiers":[],"name":"maxDeposit","nameLocation":"3399:10:23","nodeType":"FunctionDefinition","parameters":{"id":7022,"nodeType":"ParameterList","parameters":[{"constant":false,"id":7021,"mutability":"mutable","name":"receiver","nameLocation":"3418:8:23","nodeType":"VariableDeclaration","scope":7026,"src":"3410:16:23","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":7020,"name":"address","nodeType":"ElementaryTypeName","src":"3410:7:23","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"3409:18:23"},"returnParameters":{"id":7025,"nodeType":"ParameterList","parameters":[{"constant":false,"id":7024,"mutability":"mutable","name":"maxAssets","nameLocation":"3459:9:23","nodeType":"VariableDeclaration","scope":7026,"src":"3451:17:23","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":7023,"name":"uint256","nodeType":"ElementaryTypeName","src":"3451:7:23","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"3450:19:23"},"scope":7127,"src":"3390:80:23","stateMutability":"view","virtual":false,"visibility":"external"},{"documentation":{"id":7027,"nodeType":"StructuredDocumentation","src":"3476:1012:23","text":" @dev Allows an on-chain or off-chain user to simulate the effects of their deposit at the current block, given\n current on-chain conditions.\n - MUST return as close to and no more than the exact amount of Vault shares that would be minted in a deposit\n   call in the same transaction. I.e. deposit should return the same or more shares as previewDeposit if called\n   in the same transaction.\n - MUST NOT account for deposit limits like those returned from maxDeposit and should always act as though the\n   deposit would be accepted, regardless if the user has enough tokens approved, etc.\n - MUST be inclusive of deposit fees. Integrators should be aware of the existence of deposit fees.\n - MUST NOT revert.\n NOTE: any unfavorable discrepancy between convertToShares and previewDeposit SHOULD be considered slippage in\n share price or some other type of condition, meaning the depositor will lose assets by depositing."},"functionSelector":"ef8b30f7","id":7034,"implemented":false,"kind":"function","modifiers":[],"name":"previewDeposit","nameLocation":"4502:14:23","nodeType":"FunctionDefinition","parameters":{"id":7030,"nodeType":"ParameterList","parameters":[{"constant":false,"id":7029,"mutability":"mutable","name":"assets","nameLocation":"4525:6:23","nodeType":"VariableDeclaration","scope":7034,"src":"4517:14:23","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":7028,"name":"uint256","nodeType":"ElementaryTypeName","src":"4517:7:23","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"4516:16:23"},"returnParameters":{"id":7033,"nodeType":"ParameterList","parameters":[{"constant":false,"id":7032,"mutability":"mutable","name":"shares","nameLocation":"4564:6:23","nodeType":"VariableDeclaration","scope":7034,"src":"4556:14:23","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":7031,"name":"uint256","nodeType":"ElementaryTypeName","src":"4556:7:23","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"4555:16:23"},"scope":7127,"src":"4493:79:23","stateMutability":"view","virtual":false,"visibility":"external"},{"documentation":{"id":7035,"nodeType":"StructuredDocumentation","src":"4578:673:23","text":" @dev Deposit `assets` underlying tokens and send the corresponding number of vault shares (`shares`) to `receiver`.\n - MUST emit the Deposit event.\n - MAY support an additional flow in which the underlying tokens are owned by the Vault contract before the\n   deposit execution, and are accounted for during deposit.\n - MUST revert if all of assets cannot be deposited (due to deposit limit being reached, slippage, the user not\n   approving enough underlying tokens to the Vault contract, etc).\n NOTE: most implementations will require pre-approval of the Vault with the Vault’s underlying asset token."},"functionSelector":"6e553f65","id":7044,"implemented":false,"kind":"function","modifiers":[],"name":"deposit","nameLocation":"5265:7:23","nodeType":"FunctionDefinition","parameters":{"id":7040,"nodeType":"ParameterList","parameters":[{"constant":false,"id":7037,"mutability":"mutable","name":"assets","nameLocation":"5281:6:23","nodeType":"VariableDeclaration","scope":7044,"src":"5273:14:23","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":7036,"name":"uint256","nodeType":"ElementaryTypeName","src":"5273:7:23","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":7039,"mutability":"mutable","name":"receiver","nameLocation":"5297:8:23","nodeType":"VariableDeclaration","scope":7044,"src":"5289:16:23","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":7038,"name":"address","nodeType":"ElementaryTypeName","src":"5289:7:23","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"5272:34:23"},"returnParameters":{"id":7043,"nodeType":"ParameterList","parameters":[{"constant":false,"id":7042,"mutability":"mutable","name":"shares","nameLocation":"5333:6:23","nodeType":"VariableDeclaration","scope":7044,"src":"5325:14:23","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":7041,"name":"uint256","nodeType":"ElementaryTypeName","src":"5325:7:23","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"5324:16:23"},"scope":7127,"src":"5256:85:23","stateMutability":"nonpayable","virtual":false,"visibility":"external"},{"documentation":{"id":7045,"nodeType":"StructuredDocumentation","src":"5347:341:23","text":" @dev Returns the maximum amount of the Vault shares that can be minted for the receiver, through a mint call.\n - MUST return a limited value if receiver is subject to some mint limit.\n - MUST return 2 ** 256 - 1 if there is no limit on the maximum amount of shares that may be minted.\n - MUST NOT revert."},"functionSelector":"c63d75b6","id":7052,"implemented":false,"kind":"function","modifiers":[],"name":"maxMint","nameLocation":"5702:7:23","nodeType":"FunctionDefinition","parameters":{"id":7048,"nodeType":"ParameterList","parameters":[{"constant":false,"id":7047,"mutability":"mutable","name":"receiver","nameLocation":"5718:8:23","nodeType":"VariableDeclaration","scope":7052,"src":"5710:16:23","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":7046,"name":"address","nodeType":"ElementaryTypeName","src":"5710:7:23","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"5709:18:23"},"returnParameters":{"id":7051,"nodeType":"ParameterList","parameters":[{"constant":false,"id":7050,"mutability":"mutable","name":"maxShares","nameLocation":"5759:9:23","nodeType":"VariableDeclaration","scope":7052,"src":"5751:17:23","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":7049,"name":"uint256","nodeType":"ElementaryTypeName","src":"5751:7:23","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"5750:19:23"},"scope":7127,"src":"5693:77:23","stateMutability":"view","virtual":false,"visibility":"external"},{"documentation":{"id":7053,"nodeType":"StructuredDocumentation","src":"5776:984:23","text":" @dev Allows an on-chain or off-chain user to simulate the effects of their mint at the current block, given\n current on-chain conditions.\n - MUST return as close to and no fewer than the exact amount of assets that would be deposited in a mint call\n   in the same transaction. I.e. mint should return the same or fewer assets as previewMint if called in the\n   same transaction.\n - MUST NOT account for mint limits like those returned from maxMint and should always act as though the mint\n   would be accepted, regardless if the user has enough tokens approved, etc.\n - MUST be inclusive of deposit fees. Integrators should be aware of the existence of deposit fees.\n - MUST NOT revert.\n NOTE: any unfavorable discrepancy between convertToAssets and previewMint SHOULD be considered slippage in\n share price or some other type of condition, meaning the depositor will lose assets by minting."},"functionSelector":"b3d7f6b9","id":7060,"implemented":false,"kind":"function","modifiers":[],"name":"previewMint","nameLocation":"6774:11:23","nodeType":"FunctionDefinition","parameters":{"id":7056,"nodeType":"ParameterList","parameters":[{"constant":false,"id":7055,"mutability":"mutable","name":"shares","nameLocation":"6794:6:23","nodeType":"VariableDeclaration","scope":7060,"src":"6786:14:23","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":7054,"name":"uint256","nodeType":"ElementaryTypeName","src":"6786:7:23","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"6785:16:23"},"returnParameters":{"id":7059,"nodeType":"ParameterList","parameters":[{"constant":false,"id":7058,"mutability":"mutable","name":"assets","nameLocation":"6833:6:23","nodeType":"VariableDeclaration","scope":7060,"src":"6825:14:23","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":7057,"name":"uint256","nodeType":"ElementaryTypeName","src":"6825:7:23","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"6824:16:23"},"scope":7127,"src":"6765:76:23","stateMutability":"view","virtual":false,"visibility":"external"},{"documentation":{"id":7061,"nodeType":"StructuredDocumentation","src":"6847:647:23","text":" @dev Mints exactly `shares` vault shares to `receiver` in exchange for `assets` underlying tokens.\n - MUST emit the Deposit event.\n - MAY support an additional flow in which the underlying tokens are owned by the Vault contract before the mint\n   execution, and are accounted for during mint.\n - MUST revert if all of shares cannot be minted (due to deposit limit being reached, slippage, the user not\n   approving enough underlying tokens to the Vault contract, etc).\n NOTE: most implementations will require pre-approval of the Vault with the Vault’s underlying asset token."},"functionSelector":"94bf804d","id":7070,"implemented":false,"kind":"function","modifiers":[],"name":"mint","nameLocation":"7508:4:23","nodeType":"FunctionDefinition","parameters":{"id":7066,"nodeType":"ParameterList","parameters":[{"constant":false,"id":7063,"mutability":"mutable","name":"shares","nameLocation":"7521:6:23","nodeType":"VariableDeclaration","scope":7070,"src":"7513:14:23","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":7062,"name":"uint256","nodeType":"ElementaryTypeName","src":"7513:7:23","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":7065,"mutability":"mutable","name":"receiver","nameLocation":"7537:8:23","nodeType":"VariableDeclaration","scope":7070,"src":"7529:16:23","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":7064,"name":"address","nodeType":"ElementaryTypeName","src":"7529:7:23","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"7512:34:23"},"returnParameters":{"id":7069,"nodeType":"ParameterList","parameters":[{"constant":false,"id":7068,"mutability":"mutable","name":"assets","nameLocation":"7573:6:23","nodeType":"VariableDeclaration","scope":7070,"src":"7565:14:23","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":7067,"name":"uint256","nodeType":"ElementaryTypeName","src":"7565:7:23","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"7564:16:23"},"scope":7127,"src":"7499:82:23","stateMutability":"nonpayable","virtual":false,"visibility":"external"},{"documentation":{"id":7071,"nodeType":"StructuredDocumentation","src":"7587:293:23","text":" @dev Returns the maximum amount of the underlying asset that can be withdrawn from the owner balance in the\n Vault, through a withdraw call.\n - MUST return a limited value if owner is subject to some withdrawal limit or timelock.\n - MUST NOT revert."},"functionSelector":"ce96cb77","id":7078,"implemented":false,"kind":"function","modifiers":[],"name":"maxWithdraw","nameLocation":"7894:11:23","nodeType":"FunctionDefinition","parameters":{"id":7074,"nodeType":"ParameterList","parameters":[{"constant":false,"id":7073,"mutability":"mutable","name":"owner","nameLocation":"7914:5:23","nodeType":"VariableDeclaration","scope":7078,"src":"7906:13:23","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":7072,"name":"address","nodeType":"ElementaryTypeName","src":"7906:7:23","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"7905:15:23"},"returnParameters":{"id":7077,"nodeType":"ParameterList","parameters":[{"constant":false,"id":7076,"mutability":"mutable","name":"maxAssets","nameLocation":"7952:9:23","nodeType":"VariableDeclaration","scope":7078,"src":"7944:17:23","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":7075,"name":"uint256","nodeType":"ElementaryTypeName","src":"7944:7:23","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"7943:19:23"},"scope":7127,"src":"7885:78:23","stateMutability":"view","virtual":false,"visibility":"external"},{"documentation":{"id":7079,"nodeType":"StructuredDocumentation","src":"7969:1034:23","text":" @dev Allows an on-chain or off-chain user to simulate the effects of their withdrawal at the current block,\n given current on-chain conditions.\n - MUST return as close to and no fewer than the exact amount of Vault shares that would be burned in a withdraw\n   call in the same transaction. I.e. withdraw should return the same or fewer shares as previewWithdraw if\n   called\n   in the same transaction.\n - MUST NOT account for withdrawal limits like those returned from maxWithdraw and should always act as though\n   the withdrawal would be accepted, regardless if the user has enough shares, etc.\n - MUST be inclusive of withdrawal fees. Integrators should be aware of the existence of withdrawal fees.\n - MUST NOT revert.\n NOTE: any unfavorable discrepancy between convertToShares and previewWithdraw SHOULD be considered slippage in\n share price or some other type of condition, meaning the depositor will lose assets by depositing."},"functionSelector":"0a28a477","id":7086,"implemented":false,"kind":"function","modifiers":[],"name":"previewWithdraw","nameLocation":"9017:15:23","nodeType":"FunctionDefinition","parameters":{"id":7082,"nodeType":"ParameterList","parameters":[{"constant":false,"id":7081,"mutability":"mutable","name":"assets","nameLocation":"9041:6:23","nodeType":"VariableDeclaration","scope":7086,"src":"9033:14:23","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":7080,"name":"uint256","nodeType":"ElementaryTypeName","src":"9033:7:23","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"9032:16:23"},"returnParameters":{"id":7085,"nodeType":"ParameterList","parameters":[{"constant":false,"id":7084,"mutability":"mutable","name":"shares","nameLocation":"9080:6:23","nodeType":"VariableDeclaration","scope":7086,"src":"9072:14:23","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":7083,"name":"uint256","nodeType":"ElementaryTypeName","src":"9072:7:23","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"9071:16:23"},"scope":7127,"src":"9008:80:23","stateMutability":"view","virtual":false,"visibility":"external"},{"documentation":{"id":7087,"nodeType":"StructuredDocumentation","src":"9094:670:23","text":" @dev Burns shares from owner and sends exactly assets of underlying tokens to receiver.\n - MUST emit the Withdraw event.\n - MAY support an additional flow in which the underlying tokens are owned by the Vault contract before the\n   withdraw execution, and are accounted for during withdraw.\n - MUST revert if all of assets cannot be withdrawn (due to withdrawal limit being reached, slippage, the owner\n   not having enough shares, etc).\n Note that some implementations will require pre-requesting to the Vault before a withdrawal may be performed.\n Those methods should be performed separately."},"functionSelector":"b460af94","id":7098,"implemented":false,"kind":"function","modifiers":[],"name":"withdraw","nameLocation":"9778:8:23","nodeType":"FunctionDefinition","parameters":{"id":7094,"nodeType":"ParameterList","parameters":[{"constant":false,"id":7089,"mutability":"mutable","name":"assets","nameLocation":"9795:6:23","nodeType":"VariableDeclaration","scope":7098,"src":"9787:14:23","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":7088,"name":"uint256","nodeType":"ElementaryTypeName","src":"9787:7:23","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":7091,"mutability":"mutable","name":"receiver","nameLocation":"9811:8:23","nodeType":"VariableDeclaration","scope":7098,"src":"9803:16:23","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":7090,"name":"address","nodeType":"ElementaryTypeName","src":"9803:7:23","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":7093,"mutability":"mutable","name":"owner","nameLocation":"9829:5:23","nodeType":"VariableDeclaration","scope":7098,"src":"9821:13:23","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":7092,"name":"address","nodeType":"ElementaryTypeName","src":"9821:7:23","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"9786:49:23"},"returnParameters":{"id":7097,"nodeType":"ParameterList","parameters":[{"constant":false,"id":7096,"mutability":"mutable","name":"shares","nameLocation":"9862:6:23","nodeType":"VariableDeclaration","scope":7098,"src":"9854:14:23","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":7095,"name":"uint256","nodeType":"ElementaryTypeName","src":"9854:7:23","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"9853:16:23"},"scope":7127,"src":"9769:101:23","stateMutability":"nonpayable","virtual":false,"visibility":"external"},{"documentation":{"id":7099,"nodeType":"StructuredDocumentation","src":"9876:381:23","text":" @dev Returns the maximum amount of Vault shares that can be redeemed from the owner balance in the Vault,\n through a redeem call.\n - MUST return a limited value if owner is subject to some withdrawal limit or timelock.\n - MUST return balanceOf(owner) if owner is not subject to any withdrawal limit or timelock.\n - MUST NOT revert."},"functionSelector":"d905777e","id":7106,"implemented":false,"kind":"function","modifiers":[],"name":"maxRedeem","nameLocation":"10271:9:23","nodeType":"FunctionDefinition","parameters":{"id":7102,"nodeType":"ParameterList","parameters":[{"constant":false,"id":7101,"mutability":"mutable","name":"owner","nameLocation":"10289:5:23","nodeType":"VariableDeclaration","scope":7106,"src":"10281:13:23","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":7100,"name":"address","nodeType":"ElementaryTypeName","src":"10281:7:23","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"10280:15:23"},"returnParameters":{"id":7105,"nodeType":"ParameterList","parameters":[{"constant":false,"id":7104,"mutability":"mutable","name":"maxShares","nameLocation":"10327:9:23","nodeType":"VariableDeclaration","scope":7106,"src":"10319:17:23","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":7103,"name":"uint256","nodeType":"ElementaryTypeName","src":"10319:7:23","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"10318:19:23"},"scope":7127,"src":"10262:76:23","stateMutability":"view","virtual":false,"visibility":"external"},{"documentation":{"id":7107,"nodeType":"StructuredDocumentation","src":"10344:1009:23","text":" @dev Allows an on-chain or off-chain user to simulate the effects of their redemption at the current block,\n given current on-chain conditions.\n - MUST return as close to and no more than the exact amount of assets that would be withdrawn in a redeem call\n   in the same transaction. I.e. redeem should return the same or more assets as previewRedeem if called in the\n   same transaction.\n - MUST NOT account for redemption limits like those returned from maxRedeem and should always act as though the\n   redemption would be accepted, regardless if the user has enough shares, etc.\n - MUST be inclusive of withdrawal fees. Integrators should be aware of the existence of withdrawal fees.\n - MUST NOT revert.\n NOTE: any unfavorable discrepancy between convertToAssets and previewRedeem SHOULD be considered slippage in\n share price or some other type of condition, meaning the depositor will lose assets by redeeming."},"functionSelector":"4cdad506","id":7114,"implemented":false,"kind":"function","modifiers":[],"name":"previewRedeem","nameLocation":"11367:13:23","nodeType":"FunctionDefinition","parameters":{"id":7110,"nodeType":"ParameterList","parameters":[{"constant":false,"id":7109,"mutability":"mutable","name":"shares","nameLocation":"11389:6:23","nodeType":"VariableDeclaration","scope":7114,"src":"11381:14:23","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":7108,"name":"uint256","nodeType":"ElementaryTypeName","src":"11381:7:23","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"11380:16:23"},"returnParameters":{"id":7113,"nodeType":"ParameterList","parameters":[{"constant":false,"id":7112,"mutability":"mutable","name":"assets","nameLocation":"11428:6:23","nodeType":"VariableDeclaration","scope":7114,"src":"11420:14:23","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":7111,"name":"uint256","nodeType":"ElementaryTypeName","src":"11420:7:23","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"11419:16:23"},"scope":7127,"src":"11358:78:23","stateMutability":"view","virtual":false,"visibility":"external"},{"documentation":{"id":7115,"nodeType":"StructuredDocumentation","src":"11442:661:23","text":" @dev Burns exactly shares from owner and sends assets of underlying tokens to receiver.\n - MUST emit the Withdraw event.\n - MAY support an additional flow in which the underlying tokens are owned by the Vault contract before the\n   redeem execution, and are accounted for during redeem.\n - MUST revert if all of shares cannot be redeemed (due to withdrawal limit being reached, slippage, the owner\n   not having enough shares, etc).\n NOTE: some implementations will require pre-requesting to the Vault before a withdrawal may be performed.\n Those methods should be performed separately."},"functionSelector":"ba087652","id":7126,"implemented":false,"kind":"function","modifiers":[],"name":"redeem","nameLocation":"12117:6:23","nodeType":"FunctionDefinition","parameters":{"id":7122,"nodeType":"ParameterList","parameters":[{"constant":false,"id":7117,"mutability":"mutable","name":"shares","nameLocation":"12132:6:23","nodeType":"VariableDeclaration","scope":7126,"src":"12124:14:23","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":7116,"name":"uint256","nodeType":"ElementaryTypeName","src":"12124:7:23","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":7119,"mutability":"mutable","name":"receiver","nameLocation":"12148:8:23","nodeType":"VariableDeclaration","scope":7126,"src":"12140:16:23","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":7118,"name":"address","nodeType":"ElementaryTypeName","src":"12140:7:23","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":7121,"mutability":"mutable","name":"owner","nameLocation":"12166:5:23","nodeType":"VariableDeclaration","scope":7126,"src":"12158:13:23","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":7120,"name":"address","nodeType":"ElementaryTypeName","src":"12158:7:23","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"12123:49:23"},"returnParameters":{"id":7125,"nodeType":"ParameterList","parameters":[{"constant":false,"id":7124,"mutability":"mutable","name":"assets","nameLocation":"12199:6:23","nodeType":"VariableDeclaration","scope":7126,"src":"12191:14:23","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":7123,"name":"uint256","nodeType":"ElementaryTypeName","src":"12191:7:23","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"12190:16:23"},"scope":7127,"src":"12108:99:23","stateMutability":"nonpayable","virtual":false,"visibility":"external"}],"scope":7128,"src":"399:11810:23","usedErrors":[],"usedEvents":[6978,6990,8613,8622]}],"src":"107:12103:23"},"id":23},"@openzeppelin/contracts/interfaces/draft-IERC1822.sol":{"ast":{"absolutePath":"@openzeppelin/contracts/interfaces/draft-IERC1822.sol","exportedSymbols":{"IERC1822Proxiable":[7137]},"id":7138,"license":"MIT","nodeType":"SourceUnit","nodes":[{"id":7129,"literals":["solidity",">=","0.4",".16"],"nodeType":"PragmaDirective","src":"113:25:24"},{"abstract":false,"baseContracts":[],"canonicalName":"IERC1822Proxiable","contractDependencies":[],"contractKind":"interface","documentation":{"id":7130,"nodeType":"StructuredDocumentation","src":"140:204:24","text":" @dev ERC-1822: Universal Upgradeable Proxy Standard (UUPS) documents a method for upgradeability through a simplified\n proxy whose upgrades are fully controlled by the current implementation."},"fullyImplemented":false,"id":7137,"linearizedBaseContracts":[7137],"name":"IERC1822Proxiable","nameLocation":"355:17:24","nodeType":"ContractDefinition","nodes":[{"documentation":{"id":7131,"nodeType":"StructuredDocumentation","src":"379:438:24","text":" @dev Returns the storage slot that the proxiable contract assumes is being used to store the implementation\n address.\n IMPORTANT: A proxy pointing at a proxiable contract should not be considered proxiable itself, because this risks\n bricking a proxy that upgrades to it, by delegating to itself until out of gas. Thus it is critical that this\n function revert if invoked through a proxy."},"functionSelector":"52d1902d","id":7136,"implemented":false,"kind":"function","modifiers":[],"name":"proxiableUUID","nameLocation":"831:13:24","nodeType":"FunctionDefinition","parameters":{"id":7132,"nodeType":"ParameterList","parameters":[],"src":"844:2:24"},"returnParameters":{"id":7135,"nodeType":"ParameterList","parameters":[{"constant":false,"id":7134,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":7136,"src":"870:7:24","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":7133,"name":"bytes32","nodeType":"ElementaryTypeName","src":"870:7:24","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"}],"src":"869:9:24"},"scope":7137,"src":"822:57:24","stateMutability":"view","virtual":false,"visibility":"external"}],"scope":7138,"src":"345:536:24","usedErrors":[],"usedEvents":[]}],"src":"113:769:24"},"id":24},"@openzeppelin/contracts/interfaces/draft-IERC6093.sol":{"ast":{"absolutePath":"@openzeppelin/contracts/interfaces/draft-IERC6093.sol","exportedSymbols":{"IERC1155Errors":[7274],"IERC20Errors":[7179],"IERC721Errors":[7227]},"id":7275,"license":"MIT","nodeType":"SourceUnit","nodes":[{"id":7139,"literals":["solidity",">=","0.8",".4"],"nodeType":"PragmaDirective","src":"113:24:25"},{"abstract":false,"baseContracts":[],"canonicalName":"IERC20Errors","contractDependencies":[],"contractKind":"interface","documentation":{"id":7140,"nodeType":"StructuredDocumentation","src":"139:141:25","text":" @dev Standard ERC-20 Errors\n Interface of the https://eips.ethereum.org/EIPS/eip-6093[ERC-6093] custom errors for ERC-20 tokens."},"fullyImplemented":true,"id":7179,"linearizedBaseContracts":[7179],"name":"IERC20Errors","nameLocation":"291:12:25","nodeType":"ContractDefinition","nodes":[{"documentation":{"id":7141,"nodeType":"StructuredDocumentation","src":"310:309:25","text":" @dev Indicates an error related to the current `balance` of a `sender`. Used in transfers.\n @param sender Address whose tokens are being transferred.\n @param balance Current balance for the interacting account.\n @param needed Minimum amount required to perform a transfer."},"errorSelector":"e450d38c","id":7149,"name":"ERC20InsufficientBalance","nameLocation":"630:24:25","nodeType":"ErrorDefinition","parameters":{"id":7148,"nodeType":"ParameterList","parameters":[{"constant":false,"id":7143,"mutability":"mutable","name":"sender","nameLocation":"663:6:25","nodeType":"VariableDeclaration","scope":7149,"src":"655:14:25","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":7142,"name":"address","nodeType":"ElementaryTypeName","src":"655:7:25","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":7145,"mutability":"mutable","name":"balance","nameLocation":"679:7:25","nodeType":"VariableDeclaration","scope":7149,"src":"671:15:25","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":7144,"name":"uint256","nodeType":"ElementaryTypeName","src":"671:7:25","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":7147,"mutability":"mutable","name":"needed","nameLocation":"696:6:25","nodeType":"VariableDeclaration","scope":7149,"src":"688:14:25","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":7146,"name":"uint256","nodeType":"ElementaryTypeName","src":"688:7:25","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"654:49:25"},"src":"624:80:25"},{"documentation":{"id":7150,"nodeType":"StructuredDocumentation","src":"710:152:25","text":" @dev Indicates a failure with the token `sender`. Used in transfers.\n @param sender Address whose tokens are being transferred."},"errorSelector":"96c6fd1e","id":7154,"name":"ERC20InvalidSender","nameLocation":"873:18:25","nodeType":"ErrorDefinition","parameters":{"id":7153,"nodeType":"ParameterList","parameters":[{"constant":false,"id":7152,"mutability":"mutable","name":"sender","nameLocation":"900:6:25","nodeType":"VariableDeclaration","scope":7154,"src":"892:14:25","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":7151,"name":"address","nodeType":"ElementaryTypeName","src":"892:7:25","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"891:16:25"},"src":"867:41:25"},{"documentation":{"id":7155,"nodeType":"StructuredDocumentation","src":"914:159:25","text":" @dev Indicates a failure with the token `receiver`. Used in transfers.\n @param receiver Address to which tokens are being transferred."},"errorSelector":"ec442f05","id":7159,"name":"ERC20InvalidReceiver","nameLocation":"1084:20:25","nodeType":"ErrorDefinition","parameters":{"id":7158,"nodeType":"ParameterList","parameters":[{"constant":false,"id":7157,"mutability":"mutable","name":"receiver","nameLocation":"1113:8:25","nodeType":"VariableDeclaration","scope":7159,"src":"1105:16:25","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":7156,"name":"address","nodeType":"ElementaryTypeName","src":"1105:7:25","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"1104:18:25"},"src":"1078:45:25"},{"documentation":{"id":7160,"nodeType":"StructuredDocumentation","src":"1129:345:25","text":" @dev Indicates a failure with the `spender`’s `allowance`. Used in transfers.\n @param spender Address that may be allowed to operate on tokens without being their owner.\n @param allowance Amount of tokens a `spender` is allowed to operate with.\n @param needed Minimum amount required to perform a transfer."},"errorSelector":"fb8f41b2","id":7168,"name":"ERC20InsufficientAllowance","nameLocation":"1485:26:25","nodeType":"ErrorDefinition","parameters":{"id":7167,"nodeType":"ParameterList","parameters":[{"constant":false,"id":7162,"mutability":"mutable","name":"spender","nameLocation":"1520:7:25","nodeType":"VariableDeclaration","scope":7168,"src":"1512:15:25","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":7161,"name":"address","nodeType":"ElementaryTypeName","src":"1512:7:25","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":7164,"mutability":"mutable","name":"allowance","nameLocation":"1537:9:25","nodeType":"VariableDeclaration","scope":7168,"src":"1529:17:25","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":7163,"name":"uint256","nodeType":"ElementaryTypeName","src":"1529:7:25","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":7166,"mutability":"mutable","name":"needed","nameLocation":"1556:6:25","nodeType":"VariableDeclaration","scope":7168,"src":"1548:14:25","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":7165,"name":"uint256","nodeType":"ElementaryTypeName","src":"1548:7:25","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"1511:52:25"},"src":"1479:85:25"},{"documentation":{"id":7169,"nodeType":"StructuredDocumentation","src":"1570:174:25","text":" @dev Indicates a failure with the `approver` of a token to be approved. Used in approvals.\n @param approver Address initiating an approval operation."},"errorSelector":"e602df05","id":7173,"name":"ERC20InvalidApprover","nameLocation":"1755:20:25","nodeType":"ErrorDefinition","parameters":{"id":7172,"nodeType":"ParameterList","parameters":[{"constant":false,"id":7171,"mutability":"mutable","name":"approver","nameLocation":"1784:8:25","nodeType":"VariableDeclaration","scope":7173,"src":"1776:16:25","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":7170,"name":"address","nodeType":"ElementaryTypeName","src":"1776:7:25","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"1775:18:25"},"src":"1749:45:25"},{"documentation":{"id":7174,"nodeType":"StructuredDocumentation","src":"1800:195:25","text":" @dev Indicates a failure with the `spender` to be approved. Used in approvals.\n @param spender Address that may be allowed to operate on tokens without being their owner."},"errorSelector":"94280d62","id":7178,"name":"ERC20InvalidSpender","nameLocation":"2006:19:25","nodeType":"ErrorDefinition","parameters":{"id":7177,"nodeType":"ParameterList","parameters":[{"constant":false,"id":7176,"mutability":"mutable","name":"spender","nameLocation":"2034:7:25","nodeType":"VariableDeclaration","scope":7178,"src":"2026:15:25","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":7175,"name":"address","nodeType":"ElementaryTypeName","src":"2026:7:25","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"2025:17:25"},"src":"2000:43:25"}],"scope":7275,"src":"281:1764:25","usedErrors":[7149,7154,7159,7168,7173,7178],"usedEvents":[]},{"abstract":false,"baseContracts":[],"canonicalName":"IERC721Errors","contractDependencies":[],"contractKind":"interface","documentation":{"id":7180,"nodeType":"StructuredDocumentation","src":"2047:143:25","text":" @dev Standard ERC-721 Errors\n Interface of the https://eips.ethereum.org/EIPS/eip-6093[ERC-6093] custom errors for ERC-721 tokens."},"fullyImplemented":true,"id":7227,"linearizedBaseContracts":[7227],"name":"IERC721Errors","nameLocation":"2201:13:25","nodeType":"ContractDefinition","nodes":[{"documentation":{"id":7181,"nodeType":"StructuredDocumentation","src":"2221:220:25","text":" @dev Indicates that an address can't be an owner. For example, `address(0)` is a forbidden owner in ERC-721.\n Used in balance queries.\n @param owner Address of the current owner of a token."},"errorSelector":"89c62b64","id":7185,"name":"ERC721InvalidOwner","nameLocation":"2452:18:25","nodeType":"ErrorDefinition","parameters":{"id":7184,"nodeType":"ParameterList","parameters":[{"constant":false,"id":7183,"mutability":"mutable","name":"owner","nameLocation":"2479:5:25","nodeType":"VariableDeclaration","scope":7185,"src":"2471:13:25","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":7182,"name":"address","nodeType":"ElementaryTypeName","src":"2471:7:25","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"2470:15:25"},"src":"2446:40:25"},{"documentation":{"id":7186,"nodeType":"StructuredDocumentation","src":"2492:132:25","text":" @dev Indicates a `tokenId` whose `owner` is the zero address.\n @param tokenId Identifier number of a token."},"errorSelector":"7e273289","id":7190,"name":"ERC721NonexistentToken","nameLocation":"2635:22:25","nodeType":"ErrorDefinition","parameters":{"id":7189,"nodeType":"ParameterList","parameters":[{"constant":false,"id":7188,"mutability":"mutable","name":"tokenId","nameLocation":"2666:7:25","nodeType":"VariableDeclaration","scope":7190,"src":"2658:15:25","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":7187,"name":"uint256","nodeType":"ElementaryTypeName","src":"2658:7:25","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"2657:17:25"},"src":"2629:46:25"},{"documentation":{"id":7191,"nodeType":"StructuredDocumentation","src":"2681:289:25","text":" @dev Indicates an error related to the ownership over a particular token. Used in transfers.\n @param sender Address whose tokens are being transferred.\n @param tokenId Identifier number of a token.\n @param owner Address of the current owner of a token."},"errorSelector":"64283d7b","id":7199,"name":"ERC721IncorrectOwner","nameLocation":"2981:20:25","nodeType":"ErrorDefinition","parameters":{"id":7198,"nodeType":"ParameterList","parameters":[{"constant":false,"id":7193,"mutability":"mutable","name":"sender","nameLocation":"3010:6:25","nodeType":"VariableDeclaration","scope":7199,"src":"3002:14:25","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":7192,"name":"address","nodeType":"ElementaryTypeName","src":"3002:7:25","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":7195,"mutability":"mutable","name":"tokenId","nameLocation":"3026:7:25","nodeType":"VariableDeclaration","scope":7199,"src":"3018:15:25","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":7194,"name":"uint256","nodeType":"ElementaryTypeName","src":"3018:7:25","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":7197,"mutability":"mutable","name":"owner","nameLocation":"3043:5:25","nodeType":"VariableDeclaration","scope":7199,"src":"3035:13:25","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":7196,"name":"address","nodeType":"ElementaryTypeName","src":"3035:7:25","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"3001:48:25"},"src":"2975:75:25"},{"documentation":{"id":7200,"nodeType":"StructuredDocumentation","src":"3056:152:25","text":" @dev Indicates a failure with the token `sender`. Used in transfers.\n @param sender Address whose tokens are being transferred."},"errorSelector":"73c6ac6e","id":7204,"name":"ERC721InvalidSender","nameLocation":"3219:19:25","nodeType":"ErrorDefinition","parameters":{"id":7203,"nodeType":"ParameterList","parameters":[{"constant":false,"id":7202,"mutability":"mutable","name":"sender","nameLocation":"3247:6:25","nodeType":"VariableDeclaration","scope":7204,"src":"3239:14:25","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":7201,"name":"address","nodeType":"ElementaryTypeName","src":"3239:7:25","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"3238:16:25"},"src":"3213:42:25"},{"documentation":{"id":7205,"nodeType":"StructuredDocumentation","src":"3261:159:25","text":" @dev Indicates a failure with the token `receiver`. Used in transfers.\n @param receiver Address to which tokens are being transferred."},"errorSelector":"64a0ae92","id":7209,"name":"ERC721InvalidReceiver","nameLocation":"3431:21:25","nodeType":"ErrorDefinition","parameters":{"id":7208,"nodeType":"ParameterList","parameters":[{"constant":false,"id":7207,"mutability":"mutable","name":"receiver","nameLocation":"3461:8:25","nodeType":"VariableDeclaration","scope":7209,"src":"3453:16:25","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":7206,"name":"address","nodeType":"ElementaryTypeName","src":"3453:7:25","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"3452:18:25"},"src":"3425:46:25"},{"documentation":{"id":7210,"nodeType":"StructuredDocumentation","src":"3477:247:25","text":" @dev Indicates a failure with the `operator`’s approval. Used in transfers.\n @param operator Address that may be allowed to operate on tokens without being their owner.\n @param tokenId Identifier number of a token."},"errorSelector":"177e802f","id":7216,"name":"ERC721InsufficientApproval","nameLocation":"3735:26:25","nodeType":"ErrorDefinition","parameters":{"id":7215,"nodeType":"ParameterList","parameters":[{"constant":false,"id":7212,"mutability":"mutable","name":"operator","nameLocation":"3770:8:25","nodeType":"VariableDeclaration","scope":7216,"src":"3762:16:25","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":7211,"name":"address","nodeType":"ElementaryTypeName","src":"3762:7:25","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":7214,"mutability":"mutable","name":"tokenId","nameLocation":"3788:7:25","nodeType":"VariableDeclaration","scope":7216,"src":"3780:15:25","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":7213,"name":"uint256","nodeType":"ElementaryTypeName","src":"3780:7:25","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"3761:35:25"},"src":"3729:68:25"},{"documentation":{"id":7217,"nodeType":"StructuredDocumentation","src":"3803:174:25","text":" @dev Indicates a failure with the `approver` of a token to be approved. Used in approvals.\n @param approver Address initiating an approval operation."},"errorSelector":"a9fbf51f","id":7221,"name":"ERC721InvalidApprover","nameLocation":"3988:21:25","nodeType":"ErrorDefinition","parameters":{"id":7220,"nodeType":"ParameterList","parameters":[{"constant":false,"id":7219,"mutability":"mutable","name":"approver","nameLocation":"4018:8:25","nodeType":"VariableDeclaration","scope":7221,"src":"4010:16:25","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":7218,"name":"address","nodeType":"ElementaryTypeName","src":"4010:7:25","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"4009:18:25"},"src":"3982:46:25"},{"documentation":{"id":7222,"nodeType":"StructuredDocumentation","src":"4034:197:25","text":" @dev Indicates a failure with the `operator` to be approved. Used in approvals.\n @param operator Address that may be allowed to operate on tokens without being their owner."},"errorSelector":"5b08ba18","id":7226,"name":"ERC721InvalidOperator","nameLocation":"4242:21:25","nodeType":"ErrorDefinition","parameters":{"id":7225,"nodeType":"ParameterList","parameters":[{"constant":false,"id":7224,"mutability":"mutable","name":"operator","nameLocation":"4272:8:25","nodeType":"VariableDeclaration","scope":7226,"src":"4264:16:25","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":7223,"name":"address","nodeType":"ElementaryTypeName","src":"4264:7:25","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"4263:18:25"},"src":"4236:46:25"}],"scope":7275,"src":"2191:2093:25","usedErrors":[7185,7190,7199,7204,7209,7216,7221,7226],"usedEvents":[]},{"abstract":false,"baseContracts":[],"canonicalName":"IERC1155Errors","contractDependencies":[],"contractKind":"interface","documentation":{"id":7228,"nodeType":"StructuredDocumentation","src":"4286:145:25","text":" @dev Standard ERC-1155 Errors\n Interface of the https://eips.ethereum.org/EIPS/eip-6093[ERC-6093] custom errors for ERC-1155 tokens."},"fullyImplemented":true,"id":7274,"linearizedBaseContracts":[7274],"name":"IERC1155Errors","nameLocation":"4442:14:25","nodeType":"ContractDefinition","nodes":[{"documentation":{"id":7229,"nodeType":"StructuredDocumentation","src":"4463:361:25","text":" @dev Indicates an error related to the current `balance` of a `sender`. Used in transfers.\n @param sender Address whose tokens are being transferred.\n @param balance Current balance for the interacting account.\n @param needed Minimum amount required to perform a transfer.\n @param tokenId Identifier number of a token."},"errorSelector":"03dee4c5","id":7239,"name":"ERC1155InsufficientBalance","nameLocation":"4835:26:25","nodeType":"ErrorDefinition","parameters":{"id":7238,"nodeType":"ParameterList","parameters":[{"constant":false,"id":7231,"mutability":"mutable","name":"sender","nameLocation":"4870:6:25","nodeType":"VariableDeclaration","scope":7239,"src":"4862:14:25","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":7230,"name":"address","nodeType":"ElementaryTypeName","src":"4862:7:25","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":7233,"mutability":"mutable","name":"balance","nameLocation":"4886:7:25","nodeType":"VariableDeclaration","scope":7239,"src":"4878:15:25","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":7232,"name":"uint256","nodeType":"ElementaryTypeName","src":"4878:7:25","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":7235,"mutability":"mutable","name":"needed","nameLocation":"4903:6:25","nodeType":"VariableDeclaration","scope":7239,"src":"4895:14:25","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":7234,"name":"uint256","nodeType":"ElementaryTypeName","src":"4895:7:25","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":7237,"mutability":"mutable","name":"tokenId","nameLocation":"4919:7:25","nodeType":"VariableDeclaration","scope":7239,"src":"4911:15:25","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":7236,"name":"uint256","nodeType":"ElementaryTypeName","src":"4911:7:25","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"4861:66:25"},"src":"4829:99:25"},{"documentation":{"id":7240,"nodeType":"StructuredDocumentation","src":"4934:152:25","text":" @dev Indicates a failure with the token `sender`. Used in transfers.\n @param sender Address whose tokens are being transferred."},"errorSelector":"01a83514","id":7244,"name":"ERC1155InvalidSender","nameLocation":"5097:20:25","nodeType":"ErrorDefinition","parameters":{"id":7243,"nodeType":"ParameterList","parameters":[{"constant":false,"id":7242,"mutability":"mutable","name":"sender","nameLocation":"5126:6:25","nodeType":"VariableDeclaration","scope":7244,"src":"5118:14:25","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":7241,"name":"address","nodeType":"ElementaryTypeName","src":"5118:7:25","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"5117:16:25"},"src":"5091:43:25"},{"documentation":{"id":7245,"nodeType":"StructuredDocumentation","src":"5140:159:25","text":" @dev Indicates a failure with the token `receiver`. Used in transfers.\n @param receiver Address to which tokens are being transferred."},"errorSelector":"57f447ce","id":7249,"name":"ERC1155InvalidReceiver","nameLocation":"5310:22:25","nodeType":"ErrorDefinition","parameters":{"id":7248,"nodeType":"ParameterList","parameters":[{"constant":false,"id":7247,"mutability":"mutable","name":"receiver","nameLocation":"5341:8:25","nodeType":"VariableDeclaration","scope":7249,"src":"5333:16:25","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":7246,"name":"address","nodeType":"ElementaryTypeName","src":"5333:7:25","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"5332:18:25"},"src":"5304:47:25"},{"documentation":{"id":7250,"nodeType":"StructuredDocumentation","src":"5357:256:25","text":" @dev Indicates a failure with the `operator`’s approval. Used in transfers.\n @param operator Address that may be allowed to operate on tokens without being their owner.\n @param owner Address of the current owner of a token."},"errorSelector":"e237d922","id":7256,"name":"ERC1155MissingApprovalForAll","nameLocation":"5624:28:25","nodeType":"ErrorDefinition","parameters":{"id":7255,"nodeType":"ParameterList","parameters":[{"constant":false,"id":7252,"mutability":"mutable","name":"operator","nameLocation":"5661:8:25","nodeType":"VariableDeclaration","scope":7256,"src":"5653:16:25","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":7251,"name":"address","nodeType":"ElementaryTypeName","src":"5653:7:25","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":7254,"mutability":"mutable","name":"owner","nameLocation":"5679:5:25","nodeType":"VariableDeclaration","scope":7256,"src":"5671:13:25","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":7253,"name":"address","nodeType":"ElementaryTypeName","src":"5671:7:25","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"5652:33:25"},"src":"5618:68:25"},{"documentation":{"id":7257,"nodeType":"StructuredDocumentation","src":"5692:174:25","text":" @dev Indicates a failure with the `approver` of a token to be approved. Used in approvals.\n @param approver Address initiating an approval operation."},"errorSelector":"3e31884e","id":7261,"name":"ERC1155InvalidApprover","nameLocation":"5877:22:25","nodeType":"ErrorDefinition","parameters":{"id":7260,"nodeType":"ParameterList","parameters":[{"constant":false,"id":7259,"mutability":"mutable","name":"approver","nameLocation":"5908:8:25","nodeType":"VariableDeclaration","scope":7261,"src":"5900:16:25","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":7258,"name":"address","nodeType":"ElementaryTypeName","src":"5900:7:25","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"5899:18:25"},"src":"5871:47:25"},{"documentation":{"id":7262,"nodeType":"StructuredDocumentation","src":"5924:197:25","text":" @dev Indicates a failure with the `operator` to be approved. Used in approvals.\n @param operator Address that may be allowed to operate on tokens without being their owner."},"errorSelector":"ced3e100","id":7266,"name":"ERC1155InvalidOperator","nameLocation":"6132:22:25","nodeType":"ErrorDefinition","parameters":{"id":7265,"nodeType":"ParameterList","parameters":[{"constant":false,"id":7264,"mutability":"mutable","name":"operator","nameLocation":"6163:8:25","nodeType":"VariableDeclaration","scope":7266,"src":"6155:16:25","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":7263,"name":"address","nodeType":"ElementaryTypeName","src":"6155:7:25","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"6154:18:25"},"src":"6126:47:25"},{"documentation":{"id":7267,"nodeType":"StructuredDocumentation","src":"6179:280:25","text":" @dev Indicates an array length mismatch between ids and values in a safeBatchTransferFrom operation.\n Used in batch transfers.\n @param idsLength Length of the array of token identifiers\n @param valuesLength Length of the array of token amounts"},"errorSelector":"5b059991","id":7273,"name":"ERC1155InvalidArrayLength","nameLocation":"6470:25:25","nodeType":"ErrorDefinition","parameters":{"id":7272,"nodeType":"ParameterList","parameters":[{"constant":false,"id":7269,"mutability":"mutable","name":"idsLength","nameLocation":"6504:9:25","nodeType":"VariableDeclaration","scope":7273,"src":"6496:17:25","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":7268,"name":"uint256","nodeType":"ElementaryTypeName","src":"6496:7:25","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":7271,"mutability":"mutable","name":"valuesLength","nameLocation":"6523:12:25","nodeType":"VariableDeclaration","scope":7273,"src":"6515:20:25","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":7270,"name":"uint256","nodeType":"ElementaryTypeName","src":"6515:7:25","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"6495:41:25"},"src":"6464:73:25"}],"scope":7275,"src":"4432:2107:25","usedErrors":[7239,7244,7249,7256,7261,7266,7273],"usedEvents":[]}],"src":"113:6427:25"},"id":25},"@openzeppelin/contracts/proxy/ERC1967/ERC1967Proxy.sol":{"ast":{"absolutePath":"@openzeppelin/contracts/proxy/ERC1967/ERC1967Proxy.sol","exportedSymbols":{"ERC1967Proxy":[7312],"ERC1967Utils":[7606],"Proxy":[7642]},"id":7313,"license":"MIT","nodeType":"SourceUnit","nodes":[{"id":7276,"literals":["solidity","^","0.8",".22"],"nodeType":"PragmaDirective","src":"114:24:26"},{"absolutePath":"@openzeppelin/contracts/proxy/Proxy.sol","file":"../Proxy.sol","id":7278,"nameLocation":"-1:-1:-1","nodeType":"ImportDirective","scope":7313,"sourceUnit":7643,"src":"140:35:26","symbolAliases":[{"foreign":{"id":7277,"name":"Proxy","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7642,"src":"148:5:26","typeDescriptions":{}},"nameLocation":"-1:-1:-1"}],"unitAlias":""},{"absolutePath":"@openzeppelin/contracts/proxy/ERC1967/ERC1967Utils.sol","file":"./ERC1967Utils.sol","id":7280,"nameLocation":"-1:-1:-1","nodeType":"ImportDirective","scope":7313,"sourceUnit":7607,"src":"176:48:26","symbolAliases":[{"foreign":{"id":7279,"name":"ERC1967Utils","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7606,"src":"184:12:26","typeDescriptions":{}},"nameLocation":"-1:-1:-1"}],"unitAlias":""},{"abstract":false,"baseContracts":[{"baseName":{"id":7282,"name":"Proxy","nameLocations":["625:5:26"],"nodeType":"IdentifierPath","referencedDeclaration":7642,"src":"625:5:26"},"id":7283,"nodeType":"InheritanceSpecifier","src":"625:5:26"}],"canonicalName":"ERC1967Proxy","contractDependencies":[],"contractKind":"contract","documentation":{"id":7281,"nodeType":"StructuredDocumentation","src":"226:373:26","text":" @dev This contract implements an upgradeable proxy. It is upgradeable because calls are delegated to an\n implementation address that can be changed. This address is stored in storage in the location specified by\n https://eips.ethereum.org/EIPS/eip-1967[ERC-1967], so that it doesn't conflict with the storage layout of the\n implementation behind the proxy."},"fullyImplemented":true,"id":7312,"linearizedBaseContracts":[7312,7642],"name":"ERC1967Proxy","nameLocation":"609:12:26","nodeType":"ContractDefinition","nodes":[{"body":{"id":7298,"nodeType":"Block","src":"1145:69:26","statements":[{"expression":{"arguments":[{"id":7294,"name":"implementation","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7286,"src":"1185:14:26","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":7295,"name":"_data","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7288,"src":"1201:5:26","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":7291,"name":"ERC1967Utils","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7606,"src":"1155:12:26","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_ERC1967Utils_$7606_$","typeString":"type(library ERC1967Utils)"}},"id":7293,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"1168:16:26","memberName":"upgradeToAndCall","nodeType":"MemberAccess","referencedDeclaration":7421,"src":"1155:29:26","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_address_$_t_bytes_memory_ptr_$returns$__$","typeString":"function (address,bytes memory)"}},"id":7296,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"1155:52:26","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":7297,"nodeType":"ExpressionStatement","src":"1155:52:26"}]},"documentation":{"id":7284,"nodeType":"StructuredDocumentation","src":"637:439:26","text":" @dev Initializes the upgradeable proxy with an initial implementation specified by `implementation`.\n If `_data` is nonempty, it's used as data in a delegate call to `implementation`. This will typically be an\n encoded function call, and allows initializing the storage of the proxy like a Solidity constructor.\n Requirements:\n - If `data` is empty, `msg.value` must be zero."},"id":7299,"implemented":true,"kind":"constructor","modifiers":[],"name":"","nameLocation":"-1:-1:-1","nodeType":"FunctionDefinition","parameters":{"id":7289,"nodeType":"ParameterList","parameters":[{"constant":false,"id":7286,"mutability":"mutable","name":"implementation","nameLocation":"1101:14:26","nodeType":"VariableDeclaration","scope":7299,"src":"1093:22:26","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":7285,"name":"address","nodeType":"ElementaryTypeName","src":"1093:7:26","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":7288,"mutability":"mutable","name":"_data","nameLocation":"1130:5:26","nodeType":"VariableDeclaration","scope":7299,"src":"1117:18:26","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes"},"typeName":{"id":7287,"name":"bytes","nodeType":"ElementaryTypeName","src":"1117:5:26","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"}],"src":"1092:44:26"},"returnParameters":{"id":7290,"nodeType":"ParameterList","parameters":[],"src":"1145:0:26"},"scope":7312,"src":"1081:133:26","stateMutability":"payable","virtual":false,"visibility":"public"},{"baseFunctions":[7623],"body":{"id":7310,"nodeType":"Block","src":"1659:56:26","statements":[{"expression":{"arguments":[],"expression":{"argumentTypes":[],"expression":{"id":7306,"name":"ERC1967Utils","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7606,"src":"1676:12:26","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_ERC1967Utils_$7606_$","typeString":"type(library ERC1967Utils)"}},"id":7307,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"1689:17:26","memberName":"getImplementation","nodeType":"MemberAccess","referencedDeclaration":7358,"src":"1676:30:26","typeDescriptions":{"typeIdentifier":"t_function_internal_view$__$returns$_t_address_$","typeString":"function () view returns (address)"}},"id":7308,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"1676:32:26","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"functionReturnParameters":7305,"id":7309,"nodeType":"Return","src":"1669:39:26"}]},"documentation":{"id":7300,"nodeType":"StructuredDocumentation","src":"1220:358:26","text":" @dev Returns the current implementation address.\n TIP: To get this value clients can read directly from the storage slot shown below (specified by ERC-1967) using\n the https://eth.wiki/json-rpc/API#eth_getstorageat[`eth_getStorageAt`] RPC call.\n `0x360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc`"},"id":7311,"implemented":true,"kind":"function","modifiers":[],"name":"_implementation","nameLocation":"1592:15:26","nodeType":"FunctionDefinition","overrides":{"id":7302,"nodeType":"OverrideSpecifier","overrides":[],"src":"1632:8:26"},"parameters":{"id":7301,"nodeType":"ParameterList","parameters":[],"src":"1607:2:26"},"returnParameters":{"id":7305,"nodeType":"ParameterList","parameters":[{"constant":false,"id":7304,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":7311,"src":"1650:7:26","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":7303,"name":"address","nodeType":"ElementaryTypeName","src":"1650:7:26","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"1649:9:26"},"scope":7312,"src":"1583:132:26","stateMutability":"view","virtual":true,"visibility":"internal"}],"scope":7313,"src":"600:1117:26","usedErrors":[7332,7345,9878,10299],"usedEvents":[6936]}],"src":"114:1604:26"},"id":26},"@openzeppelin/contracts/proxy/ERC1967/ERC1967Utils.sol":{"ast":{"absolutePath":"@openzeppelin/contracts/proxy/ERC1967/ERC1967Utils.sol","exportedSymbols":{"Address":[10256],"ERC1967Utils":[7606],"IBeacon":[7652],"IERC1967":[6949],"StorageSlot":[11032]},"id":7607,"license":"MIT","nodeType":"SourceUnit","nodes":[{"id":7314,"literals":["solidity","^","0.8",".21"],"nodeType":"PragmaDirective","src":"114:24:27"},{"absolutePath":"@openzeppelin/contracts/proxy/beacon/IBeacon.sol","file":"../beacon/IBeacon.sol","id":7316,"nameLocation":"-1:-1:-1","nodeType":"ImportDirective","scope":7607,"sourceUnit":7653,"src":"140:46:27","symbolAliases":[{"foreign":{"id":7315,"name":"IBeacon","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7652,"src":"148:7:27","typeDescriptions":{}},"nameLocation":"-1:-1:-1"}],"unitAlias":""},{"absolutePath":"@openzeppelin/contracts/interfaces/IERC1967.sol","file":"../../interfaces/IERC1967.sol","id":7318,"nameLocation":"-1:-1:-1","nodeType":"ImportDirective","scope":7607,"sourceUnit":6950,"src":"187:55:27","symbolAliases":[{"foreign":{"id":7317,"name":"IERC1967","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6949,"src":"195:8:27","typeDescriptions":{}},"nameLocation":"-1:-1:-1"}],"unitAlias":""},{"absolutePath":"@openzeppelin/contracts/utils/Address.sol","file":"../../utils/Address.sol","id":7320,"nameLocation":"-1:-1:-1","nodeType":"ImportDirective","scope":7607,"sourceUnit":10257,"src":"243:48:27","symbolAliases":[{"foreign":{"id":7319,"name":"Address","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10256,"src":"251:7:27","typeDescriptions":{}},"nameLocation":"-1:-1:-1"}],"unitAlias":""},{"absolutePath":"@openzeppelin/contracts/utils/StorageSlot.sol","file":"../../utils/StorageSlot.sol","id":7322,"nameLocation":"-1:-1:-1","nodeType":"ImportDirective","scope":7607,"sourceUnit":11033,"src":"292:56:27","symbolAliases":[{"foreign":{"id":7321,"name":"StorageSlot","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":11032,"src":"300:11:27","typeDescriptions":{}},"nameLocation":"-1:-1:-1"}],"unitAlias":""},{"abstract":false,"baseContracts":[],"canonicalName":"ERC1967Utils","contractDependencies":[],"contractKind":"library","documentation":{"id":7323,"nodeType":"StructuredDocumentation","src":"350:145:27","text":" @dev This library provides getters and event emitting update functions for\n https://eips.ethereum.org/EIPS/eip-1967[ERC-1967] slots."},"fullyImplemented":true,"id":7606,"linearizedBaseContracts":[7606],"name":"ERC1967Utils","nameLocation":"504:12:27","nodeType":"ContractDefinition","nodes":[{"constant":true,"documentation":{"id":7324,"nodeType":"StructuredDocumentation","src":"523:170:27","text":" @dev Storage slot with the address of the current implementation.\n This is the keccak-256 hash of \"eip1967.proxy.implementation\" subtracted by 1."},"id":7327,"mutability":"constant","name":"IMPLEMENTATION_SLOT","nameLocation":"789:19:27","nodeType":"VariableDeclaration","scope":7606,"src":"763:114:27","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":7325,"name":"bytes32","nodeType":"ElementaryTypeName","src":"763:7:27","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"value":{"hexValue":"307833363038393461313362613161333231303636376338323834393264623938646361336532303736636333373335613932306133636135303564333832626263","id":7326,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"811:66:27","typeDescriptions":{"typeIdentifier":"t_rational_24440054405305269366569402256811496959409073762505157381672968839269610695612_by_1","typeString":"int_const 2444...(69 digits omitted)...5612"},"value":"0x360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc"},"visibility":"internal"},{"documentation":{"id":7328,"nodeType":"StructuredDocumentation","src":"884:69:27","text":" @dev The `implementation` of the proxy is invalid."},"errorSelector":"4c9c8ce3","id":7332,"name":"ERC1967InvalidImplementation","nameLocation":"964:28:27","nodeType":"ErrorDefinition","parameters":{"id":7331,"nodeType":"ParameterList","parameters":[{"constant":false,"id":7330,"mutability":"mutable","name":"implementation","nameLocation":"1001:14:27","nodeType":"VariableDeclaration","scope":7332,"src":"993:22:27","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":7329,"name":"address","nodeType":"ElementaryTypeName","src":"993:7:27","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"992:24:27"},"src":"958:59:27"},{"documentation":{"id":7333,"nodeType":"StructuredDocumentation","src":"1023:60:27","text":" @dev The `admin` of the proxy is invalid."},"errorSelector":"62e77ba2","id":7337,"name":"ERC1967InvalidAdmin","nameLocation":"1094:19:27","nodeType":"ErrorDefinition","parameters":{"id":7336,"nodeType":"ParameterList","parameters":[{"constant":false,"id":7335,"mutability":"mutable","name":"admin","nameLocation":"1122:5:27","nodeType":"VariableDeclaration","scope":7337,"src":"1114:13:27","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":7334,"name":"address","nodeType":"ElementaryTypeName","src":"1114:7:27","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"1113:15:27"},"src":"1088:41:27"},{"documentation":{"id":7338,"nodeType":"StructuredDocumentation","src":"1135:61:27","text":" @dev The `beacon` of the proxy is invalid."},"errorSelector":"64ced0ec","id":7342,"name":"ERC1967InvalidBeacon","nameLocation":"1207:20:27","nodeType":"ErrorDefinition","parameters":{"id":7341,"nodeType":"ParameterList","parameters":[{"constant":false,"id":7340,"mutability":"mutable","name":"beacon","nameLocation":"1236:6:27","nodeType":"VariableDeclaration","scope":7342,"src":"1228:14:27","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":7339,"name":"address","nodeType":"ElementaryTypeName","src":"1228:7:27","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"1227:16:27"},"src":"1201:43:27"},{"documentation":{"id":7343,"nodeType":"StructuredDocumentation","src":"1250:82:27","text":" @dev An upgrade function sees `msg.value > 0` that may be lost."},"errorSelector":"b398979f","id":7345,"name":"ERC1967NonPayable","nameLocation":"1343:17:27","nodeType":"ErrorDefinition","parameters":{"id":7344,"nodeType":"ParameterList","parameters":[],"src":"1360:2:27"},"src":"1337:26:27"},{"body":{"id":7357,"nodeType":"Block","src":"1502:77:27","statements":[{"expression":{"expression":{"arguments":[{"id":7353,"name":"IMPLEMENTATION_SLOT","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7327,"src":"1546:19:27","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes32","typeString":"bytes32"}],"expression":{"id":7351,"name":"StorageSlot","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":11032,"src":"1519:11:27","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_StorageSlot_$11032_$","typeString":"type(library StorageSlot)"}},"id":7352,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"1531:14:27","memberName":"getAddressSlot","nodeType":"MemberAccess","referencedDeclaration":10943,"src":"1519:26:27","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_bytes32_$returns$_t_struct$_AddressSlot_$10914_storage_ptr_$","typeString":"function (bytes32) pure returns (struct StorageSlot.AddressSlot storage pointer)"}},"id":7354,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"1519:47:27","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_struct$_AddressSlot_$10914_storage_ptr","typeString":"struct StorageSlot.AddressSlot storage pointer"}},"id":7355,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"1567:5:27","memberName":"value","nodeType":"MemberAccess","referencedDeclaration":10913,"src":"1519:53:27","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"functionReturnParameters":7350,"id":7356,"nodeType":"Return","src":"1512:60:27"}]},"documentation":{"id":7346,"nodeType":"StructuredDocumentation","src":"1369:67:27","text":" @dev Returns the current implementation address."},"id":7358,"implemented":true,"kind":"function","modifiers":[],"name":"getImplementation","nameLocation":"1450:17:27","nodeType":"FunctionDefinition","parameters":{"id":7347,"nodeType":"ParameterList","parameters":[],"src":"1467:2:27"},"returnParameters":{"id":7350,"nodeType":"ParameterList","parameters":[{"constant":false,"id":7349,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":7358,"src":"1493:7:27","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":7348,"name":"address","nodeType":"ElementaryTypeName","src":"1493:7:27","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"1492:9:27"},"scope":7606,"src":"1441:138:27","stateMutability":"view","virtual":false,"visibility":"internal"},{"body":{"id":7384,"nodeType":"Block","src":"1734:218:27","statements":[{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":7368,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"expression":{"expression":{"id":7364,"name":"newImplementation","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7361,"src":"1748:17:27","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"id":7365,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"1766:4:27","memberName":"code","nodeType":"MemberAccess","src":"1748:22:27","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}},"id":7366,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"1771:6:27","memberName":"length","nodeType":"MemberAccess","src":"1748:29:27","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"hexValue":"30","id":7367,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"1781:1:27","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"1748:34:27","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":7374,"nodeType":"IfStatement","src":"1744:119:27","trueBody":{"id":7373,"nodeType":"Block","src":"1784:79:27","statements":[{"errorCall":{"arguments":[{"id":7370,"name":"newImplementation","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7361,"src":"1834:17:27","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"id":7369,"name":"ERC1967InvalidImplementation","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7332,"src":"1805:28:27","typeDescriptions":{"typeIdentifier":"t_function_error_pure$_t_address_$returns$_t_error_$","typeString":"function (address) pure returns (error)"}},"id":7371,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"1805:47:27","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_error","typeString":"error"}},"id":7372,"nodeType":"RevertStatement","src":"1798:54:27"}]}},{"expression":{"id":7382,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"expression":{"arguments":[{"id":7378,"name":"IMPLEMENTATION_SLOT","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7327,"src":"1899:19:27","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes32","typeString":"bytes32"}],"expression":{"id":7375,"name":"StorageSlot","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":11032,"src":"1872:11:27","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_StorageSlot_$11032_$","typeString":"type(library StorageSlot)"}},"id":7377,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"1884:14:27","memberName":"getAddressSlot","nodeType":"MemberAccess","referencedDeclaration":10943,"src":"1872:26:27","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_bytes32_$returns$_t_struct$_AddressSlot_$10914_storage_ptr_$","typeString":"function (bytes32) pure returns (struct StorageSlot.AddressSlot storage pointer)"}},"id":7379,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"1872:47:27","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_struct$_AddressSlot_$10914_storage_ptr","typeString":"struct StorageSlot.AddressSlot storage pointer"}},"id":7380,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"memberLocation":"1920:5:27","memberName":"value","nodeType":"MemberAccess","referencedDeclaration":10913,"src":"1872:53:27","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"id":7381,"name":"newImplementation","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7361,"src":"1928:17:27","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"src":"1872:73:27","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"id":7383,"nodeType":"ExpressionStatement","src":"1872:73:27"}]},"documentation":{"id":7359,"nodeType":"StructuredDocumentation","src":"1585:81:27","text":" @dev Stores a new address in the ERC-1967 implementation slot."},"id":7385,"implemented":true,"kind":"function","modifiers":[],"name":"_setImplementation","nameLocation":"1680:18:27","nodeType":"FunctionDefinition","parameters":{"id":7362,"nodeType":"ParameterList","parameters":[{"constant":false,"id":7361,"mutability":"mutable","name":"newImplementation","nameLocation":"1707:17:27","nodeType":"VariableDeclaration","scope":7385,"src":"1699:25:27","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":7360,"name":"address","nodeType":"ElementaryTypeName","src":"1699:7:27","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"1698:27:27"},"returnParameters":{"id":7363,"nodeType":"ParameterList","parameters":[],"src":"1734:0:27"},"scope":7606,"src":"1671:281:27","stateMutability":"nonpayable","virtual":false,"visibility":"private"},{"body":{"id":7420,"nodeType":"Block","src":"2345:263:27","statements":[{"expression":{"arguments":[{"id":7394,"name":"newImplementation","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7388,"src":"2374:17:27","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"id":7393,"name":"_setImplementation","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7385,"src":"2355:18:27","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_address_$returns$__$","typeString":"function (address)"}},"id":7395,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"2355:37:27","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":7396,"nodeType":"ExpressionStatement","src":"2355:37:27"},{"eventCall":{"arguments":[{"id":7400,"name":"newImplementation","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7388,"src":"2425:17:27","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"expression":{"id":7397,"name":"IERC1967","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6949,"src":"2407:8:27","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_IERC1967_$6949_$","typeString":"type(contract IERC1967)"}},"id":7399,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"2416:8:27","memberName":"Upgraded","nodeType":"MemberAccess","referencedDeclaration":6936,"src":"2407:17:27","typeDescriptions":{"typeIdentifier":"t_function_event_nonpayable$_t_address_$returns$__$","typeString":"function (address)"}},"id":7401,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"2407:36:27","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":7402,"nodeType":"EmitStatement","src":"2402:41:27"},{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":7406,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"expression":{"id":7403,"name":"data","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7390,"src":"2458:4:27","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}},"id":7404,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"2463:6:27","memberName":"length","nodeType":"MemberAccess","src":"2458:11:27","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":"2472:1:27","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"2458:15:27","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"falseBody":{"id":7418,"nodeType":"Block","src":"2559:43:27","statements":[{"expression":{"arguments":[],"expression":{"argumentTypes":[],"id":7415,"name":"_checkNonPayable","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7605,"src":"2573:16:27","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$__$returns$__$","typeString":"function ()"}},"id":7416,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"2573:18:27","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":7417,"nodeType":"ExpressionStatement","src":"2573:18:27"}]},"id":7419,"nodeType":"IfStatement","src":"2454:148:27","trueBody":{"id":7414,"nodeType":"Block","src":"2475:78:27","statements":[{"expression":{"arguments":[{"id":7410,"name":"newImplementation","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7388,"src":"2518:17:27","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":7411,"name":"data","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7390,"src":"2537:4:27","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":7407,"name":"Address","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10256,"src":"2489:7:27","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_Address_$10256_$","typeString":"type(library Address)"}},"id":7409,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"2497:20:27","memberName":"functionDelegateCall","nodeType":"MemberAccess","referencedDeclaration":10166,"src":"2489:28:27","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_address_$_t_bytes_memory_ptr_$returns$_t_bytes_memory_ptr_$","typeString":"function (address,bytes memory) returns (bytes memory)"}},"id":7412,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"2489:53:27","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}},"id":7413,"nodeType":"ExpressionStatement","src":"2489:53:27"}]}}]},"documentation":{"id":7386,"nodeType":"StructuredDocumentation","src":"1958:301:27","text":" @dev Performs implementation upgrade with additional setup call if data is nonempty.\n This function is payable only if the setup call is performed, otherwise `msg.value` is rejected\n to avoid stuck value in the contract.\n Emits an {IERC1967-Upgraded} event."},"id":7421,"implemented":true,"kind":"function","modifiers":[],"name":"upgradeToAndCall","nameLocation":"2273:16:27","nodeType":"FunctionDefinition","parameters":{"id":7391,"nodeType":"ParameterList","parameters":[{"constant":false,"id":7388,"mutability":"mutable","name":"newImplementation","nameLocation":"2298:17:27","nodeType":"VariableDeclaration","scope":7421,"src":"2290:25:27","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":7387,"name":"address","nodeType":"ElementaryTypeName","src":"2290:7:27","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":7390,"mutability":"mutable","name":"data","nameLocation":"2330:4:27","nodeType":"VariableDeclaration","scope":7421,"src":"2317:17:27","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes"},"typeName":{"id":7389,"name":"bytes","nodeType":"ElementaryTypeName","src":"2317:5:27","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"}],"src":"2289:46:27"},"returnParameters":{"id":7392,"nodeType":"ParameterList","parameters":[],"src":"2345:0:27"},"scope":7606,"src":"2264:344:27","stateMutability":"nonpayable","virtual":false,"visibility":"internal"},{"constant":true,"documentation":{"id":7422,"nodeType":"StructuredDocumentation","src":"2614:145:27","text":" @dev Storage slot with the admin of the contract.\n This is the keccak-256 hash of \"eip1967.proxy.admin\" subtracted by 1."},"id":7425,"mutability":"constant","name":"ADMIN_SLOT","nameLocation":"2855:10:27","nodeType":"VariableDeclaration","scope":7606,"src":"2829:105:27","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":7423,"name":"bytes32","nodeType":"ElementaryTypeName","src":"2829:7:27","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"value":{"hexValue":"307862353331323736383461353638623331373361653133623966386136303136653234336536336236653865653131373864366137313738353062356436313033","id":7424,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"2868:66:27","typeDescriptions":{"typeIdentifier":"t_rational_81955473079516046949633743016697847541294818689821282749996681496272635257091_by_1","typeString":"int_const 8195...(69 digits omitted)...7091"},"value":"0xb53127684a568b3173ae13b9f8a6016e243e63b6e8ee1178d6a717850b5d6103"},"visibility":"internal"},{"body":{"id":7437,"nodeType":"Block","src":"3339:68:27","statements":[{"expression":{"expression":{"arguments":[{"id":7433,"name":"ADMIN_SLOT","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7425,"src":"3383:10:27","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes32","typeString":"bytes32"}],"expression":{"id":7431,"name":"StorageSlot","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":11032,"src":"3356:11:27","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_StorageSlot_$11032_$","typeString":"type(library StorageSlot)"}},"id":7432,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"3368:14:27","memberName":"getAddressSlot","nodeType":"MemberAccess","referencedDeclaration":10943,"src":"3356:26:27","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_bytes32_$returns$_t_struct$_AddressSlot_$10914_storage_ptr_$","typeString":"function (bytes32) pure returns (struct StorageSlot.AddressSlot storage pointer)"}},"id":7434,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"3356:38:27","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_struct$_AddressSlot_$10914_storage_ptr","typeString":"struct StorageSlot.AddressSlot storage pointer"}},"id":7435,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"3395:5:27","memberName":"value","nodeType":"MemberAccess","referencedDeclaration":10913,"src":"3356:44:27","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"functionReturnParameters":7430,"id":7436,"nodeType":"Return","src":"3349:51:27"}]},"documentation":{"id":7426,"nodeType":"StructuredDocumentation","src":"2941:341:27","text":" @dev Returns the current admin.\n TIP: To get this value clients can read directly from the storage slot shown below (specified by ERC-1967) using\n the https://eth.wiki/json-rpc/API#eth_getstorageat[`eth_getStorageAt`] RPC call.\n `0xb53127684a568b3173ae13b9f8a6016e243e63b6e8ee1178d6a717850b5d6103`"},"id":7438,"implemented":true,"kind":"function","modifiers":[],"name":"getAdmin","nameLocation":"3296:8:27","nodeType":"FunctionDefinition","parameters":{"id":7427,"nodeType":"ParameterList","parameters":[],"src":"3304:2:27"},"returnParameters":{"id":7430,"nodeType":"ParameterList","parameters":[{"constant":false,"id":7429,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":7438,"src":"3330:7:27","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":7428,"name":"address","nodeType":"ElementaryTypeName","src":"3330:7:27","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"3329:9:27"},"scope":7606,"src":"3287:120:27","stateMutability":"view","virtual":false,"visibility":"internal"},{"body":{"id":7468,"nodeType":"Block","src":"3535:172:27","statements":[{"condition":{"commonType":{"typeIdentifier":"t_address","typeString":"address"},"id":7449,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":7444,"name":"newAdmin","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7441,"src":"3549:8:27","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"arguments":[{"hexValue":"30","id":7447,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"3569:1:27","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":7446,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"3561:7:27","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":7445,"name":"address","nodeType":"ElementaryTypeName","src":"3561:7:27","typeDescriptions":{}}},"id":7448,"isConstant":false,"isLValue":false,"isPure":true,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"3561:10:27","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"src":"3549:22:27","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":7458,"nodeType":"IfStatement","src":"3545:91:27","trueBody":{"id":7457,"nodeType":"Block","src":"3573:63:27","statements":[{"errorCall":{"arguments":[{"arguments":[{"hexValue":"30","id":7453,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"3622:1:27","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":7452,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"3614:7:27","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":7451,"name":"address","nodeType":"ElementaryTypeName","src":"3614:7:27","typeDescriptions":{}}},"id":7454,"isConstant":false,"isLValue":false,"isPure":true,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"3614:10:27","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"id":7450,"name":"ERC1967InvalidAdmin","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7337,"src":"3594:19:27","typeDescriptions":{"typeIdentifier":"t_function_error_pure$_t_address_$returns$_t_error_$","typeString":"function (address) pure returns (error)"}},"id":7455,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"3594:31:27","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_error","typeString":"error"}},"id":7456,"nodeType":"RevertStatement","src":"3587:38:27"}]}},{"expression":{"id":7466,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"expression":{"arguments":[{"id":7462,"name":"ADMIN_SLOT","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7425,"src":"3672:10:27","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes32","typeString":"bytes32"}],"expression":{"id":7459,"name":"StorageSlot","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":11032,"src":"3645:11:27","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_StorageSlot_$11032_$","typeString":"type(library StorageSlot)"}},"id":7461,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"3657:14:27","memberName":"getAddressSlot","nodeType":"MemberAccess","referencedDeclaration":10943,"src":"3645:26:27","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_bytes32_$returns$_t_struct$_AddressSlot_$10914_storage_ptr_$","typeString":"function (bytes32) pure returns (struct StorageSlot.AddressSlot storage pointer)"}},"id":7463,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"3645:38:27","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_struct$_AddressSlot_$10914_storage_ptr","typeString":"struct StorageSlot.AddressSlot storage pointer"}},"id":7464,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"memberLocation":"3684:5:27","memberName":"value","nodeType":"MemberAccess","referencedDeclaration":10913,"src":"3645:44:27","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"id":7465,"name":"newAdmin","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7441,"src":"3692:8:27","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"src":"3645:55:27","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"id":7467,"nodeType":"ExpressionStatement","src":"3645:55:27"}]},"documentation":{"id":7439,"nodeType":"StructuredDocumentation","src":"3413:72:27","text":" @dev Stores a new address in the ERC-1967 admin slot."},"id":7469,"implemented":true,"kind":"function","modifiers":[],"name":"_setAdmin","nameLocation":"3499:9:27","nodeType":"FunctionDefinition","parameters":{"id":7442,"nodeType":"ParameterList","parameters":[{"constant":false,"id":7441,"mutability":"mutable","name":"newAdmin","nameLocation":"3517:8:27","nodeType":"VariableDeclaration","scope":7469,"src":"3509:16:27","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":7440,"name":"address","nodeType":"ElementaryTypeName","src":"3509:7:27","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"3508:18:27"},"returnParameters":{"id":7443,"nodeType":"ParameterList","parameters":[],"src":"3535:0:27"},"scope":7606,"src":"3490:217:27","stateMutability":"nonpayable","virtual":false,"visibility":"private"},{"body":{"id":7487,"nodeType":"Block","src":"3875:94:27","statements":[{"eventCall":{"arguments":[{"arguments":[],"expression":{"argumentTypes":[],"id":7478,"name":"getAdmin","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7438,"src":"3912:8:27","typeDescriptions":{"typeIdentifier":"t_function_internal_view$__$returns$_t_address_$","typeString":"function () view returns (address)"}},"id":7479,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"3912:10:27","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":7480,"name":"newAdmin","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7472,"src":"3924:8:27","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_address","typeString":"address"}],"expression":{"id":7475,"name":"IERC1967","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6949,"src":"3890:8:27","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_IERC1967_$6949_$","typeString":"type(contract IERC1967)"}},"id":7477,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"3899:12:27","memberName":"AdminChanged","nodeType":"MemberAccess","referencedDeclaration":6943,"src":"3890:21:27","typeDescriptions":{"typeIdentifier":"t_function_event_nonpayable$_t_address_$_t_address_$returns$__$","typeString":"function (address,address)"}},"id":7481,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"3890:43:27","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":7482,"nodeType":"EmitStatement","src":"3885:48:27"},{"expression":{"arguments":[{"id":7484,"name":"newAdmin","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7472,"src":"3953:8:27","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"id":7483,"name":"_setAdmin","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7469,"src":"3943:9:27","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_address_$returns$__$","typeString":"function (address)"}},"id":7485,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"3943:19:27","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":7486,"nodeType":"ExpressionStatement","src":"3943:19:27"}]},"documentation":{"id":7470,"nodeType":"StructuredDocumentation","src":"3713:109:27","text":" @dev Changes the admin of the proxy.\n Emits an {IERC1967-AdminChanged} event."},"id":7488,"implemented":true,"kind":"function","modifiers":[],"name":"changeAdmin","nameLocation":"3836:11:27","nodeType":"FunctionDefinition","parameters":{"id":7473,"nodeType":"ParameterList","parameters":[{"constant":false,"id":7472,"mutability":"mutable","name":"newAdmin","nameLocation":"3856:8:27","nodeType":"VariableDeclaration","scope":7488,"src":"3848:16:27","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":7471,"name":"address","nodeType":"ElementaryTypeName","src":"3848:7:27","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"3847:18:27"},"returnParameters":{"id":7474,"nodeType":"ParameterList","parameters":[],"src":"3875:0:27"},"scope":7606,"src":"3827:142:27","stateMutability":"nonpayable","virtual":false,"visibility":"internal"},{"constant":true,"documentation":{"id":7489,"nodeType":"StructuredDocumentation","src":"3975:201:27","text":" @dev The storage slot of the UpgradeableBeacon contract which defines the implementation for this proxy.\n This is the keccak-256 hash of \"eip1967.proxy.beacon\" subtracted by 1."},"id":7492,"mutability":"constant","name":"BEACON_SLOT","nameLocation":"4272:11:27","nodeType":"VariableDeclaration","scope":7606,"src":"4246:106:27","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":7490,"name":"bytes32","nodeType":"ElementaryTypeName","src":"4246:7:27","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"value":{"hexValue":"307861336630616437346535343233616562666438306433656634333436353738333335613961373261656165653539666636636233353832623335313333643530","id":7491,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"4286:66:27","typeDescriptions":{"typeIdentifier":"t_rational_74152234768234802001998023604048924213078445070507226371336425913862612794704_by_1","typeString":"int_const 7415...(69 digits omitted)...4704"},"value":"0xa3f0ad74e5423aebfd80d3ef4346578335a9a72aeaee59ff6cb3582b35133d50"},"visibility":"internal"},{"body":{"id":7504,"nodeType":"Block","src":"4468:69:27","statements":[{"expression":{"expression":{"arguments":[{"id":7500,"name":"BEACON_SLOT","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7492,"src":"4512:11:27","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes32","typeString":"bytes32"}],"expression":{"id":7498,"name":"StorageSlot","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":11032,"src":"4485:11:27","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_StorageSlot_$11032_$","typeString":"type(library StorageSlot)"}},"id":7499,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"4497:14:27","memberName":"getAddressSlot","nodeType":"MemberAccess","referencedDeclaration":10943,"src":"4485:26:27","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_bytes32_$returns$_t_struct$_AddressSlot_$10914_storage_ptr_$","typeString":"function (bytes32) pure returns (struct StorageSlot.AddressSlot storage pointer)"}},"id":7501,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"4485:39:27","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_struct$_AddressSlot_$10914_storage_ptr","typeString":"struct StorageSlot.AddressSlot storage pointer"}},"id":7502,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"4525:5:27","memberName":"value","nodeType":"MemberAccess","referencedDeclaration":10913,"src":"4485:45:27","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"functionReturnParameters":7497,"id":7503,"nodeType":"Return","src":"4478:52:27"}]},"documentation":{"id":7493,"nodeType":"StructuredDocumentation","src":"4359:51:27","text":" @dev Returns the current beacon."},"id":7505,"implemented":true,"kind":"function","modifiers":[],"name":"getBeacon","nameLocation":"4424:9:27","nodeType":"FunctionDefinition","parameters":{"id":7494,"nodeType":"ParameterList","parameters":[],"src":"4433:2:27"},"returnParameters":{"id":7497,"nodeType":"ParameterList","parameters":[{"constant":false,"id":7496,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":7505,"src":"4459:7:27","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":7495,"name":"address","nodeType":"ElementaryTypeName","src":"4459:7:27","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"4458:9:27"},"scope":7606,"src":"4415:122:27","stateMutability":"view","virtual":false,"visibility":"internal"},{"body":{"id":7550,"nodeType":"Block","src":"4667:390:27","statements":[{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":7515,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"expression":{"expression":{"id":7511,"name":"newBeacon","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7508,"src":"4681:9:27","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"id":7512,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"4691:4:27","memberName":"code","nodeType":"MemberAccess","src":"4681:14:27","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}},"id":7513,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"4696:6:27","memberName":"length","nodeType":"MemberAccess","src":"4681:21:27","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"hexValue":"30","id":7514,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"4706:1:27","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"4681:26:27","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":7521,"nodeType":"IfStatement","src":"4677:95:27","trueBody":{"id":7520,"nodeType":"Block","src":"4709:63:27","statements":[{"errorCall":{"arguments":[{"id":7517,"name":"newBeacon","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7508,"src":"4751:9:27","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"id":7516,"name":"ERC1967InvalidBeacon","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7342,"src":"4730:20:27","typeDescriptions":{"typeIdentifier":"t_function_error_pure$_t_address_$returns$_t_error_$","typeString":"function (address) pure returns (error)"}},"id":7518,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"4730:31:27","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_error","typeString":"error"}},"id":7519,"nodeType":"RevertStatement","src":"4723:38:27"}]}},{"expression":{"id":7529,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"expression":{"arguments":[{"id":7525,"name":"BEACON_SLOT","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7492,"src":"4809:11:27","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes32","typeString":"bytes32"}],"expression":{"id":7522,"name":"StorageSlot","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":11032,"src":"4782:11:27","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_StorageSlot_$11032_$","typeString":"type(library StorageSlot)"}},"id":7524,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"4794:14:27","memberName":"getAddressSlot","nodeType":"MemberAccess","referencedDeclaration":10943,"src":"4782:26:27","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_bytes32_$returns$_t_struct$_AddressSlot_$10914_storage_ptr_$","typeString":"function (bytes32) pure returns (struct StorageSlot.AddressSlot storage pointer)"}},"id":7526,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"4782:39:27","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_struct$_AddressSlot_$10914_storage_ptr","typeString":"struct StorageSlot.AddressSlot storage pointer"}},"id":7527,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"memberLocation":"4822:5:27","memberName":"value","nodeType":"MemberAccess","referencedDeclaration":10913,"src":"4782:45:27","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"id":7528,"name":"newBeacon","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7508,"src":"4830:9:27","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"src":"4782:57:27","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"id":7530,"nodeType":"ExpressionStatement","src":"4782:57:27"},{"assignments":[7532],"declarations":[{"constant":false,"id":7532,"mutability":"mutable","name":"beaconImplementation","nameLocation":"4858:20:27","nodeType":"VariableDeclaration","scope":7550,"src":"4850:28:27","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":7531,"name":"address","nodeType":"ElementaryTypeName","src":"4850:7:27","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"id":7538,"initialValue":{"arguments":[],"expression":{"argumentTypes":[],"expression":{"arguments":[{"id":7534,"name":"newBeacon","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7508,"src":"4889:9:27","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"id":7533,"name":"IBeacon","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7652,"src":"4881:7:27","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_IBeacon_$7652_$","typeString":"type(contract IBeacon)"}},"id":7535,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"4881:18:27","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_contract$_IBeacon_$7652","typeString":"contract IBeacon"}},"id":7536,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"4900:14:27","memberName":"implementation","nodeType":"MemberAccess","referencedDeclaration":7651,"src":"4881:33:27","typeDescriptions":{"typeIdentifier":"t_function_external_view$__$returns$_t_address_$","typeString":"function () view external returns (address)"}},"id":7537,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"4881:35:27","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"VariableDeclarationStatement","src":"4850:66:27"},{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":7543,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"expression":{"expression":{"id":7539,"name":"beaconImplementation","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7532,"src":"4930:20:27","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"id":7540,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"4951:4:27","memberName":"code","nodeType":"MemberAccess","src":"4930:25:27","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}},"id":7541,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"4956:6:27","memberName":"length","nodeType":"MemberAccess","src":"4930:32:27","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"hexValue":"30","id":7542,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"4966:1:27","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"4930:37:27","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":7549,"nodeType":"IfStatement","src":"4926:125:27","trueBody":{"id":7548,"nodeType":"Block","src":"4969:82:27","statements":[{"errorCall":{"arguments":[{"id":7545,"name":"beaconImplementation","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7532,"src":"5019:20:27","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"id":7544,"name":"ERC1967InvalidImplementation","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7332,"src":"4990:28:27","typeDescriptions":{"typeIdentifier":"t_function_error_pure$_t_address_$returns$_t_error_$","typeString":"function (address) pure returns (error)"}},"id":7546,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"4990:50:27","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_error","typeString":"error"}},"id":7547,"nodeType":"RevertStatement","src":"4983:57:27"}]}}]},"documentation":{"id":7506,"nodeType":"StructuredDocumentation","src":"4543:72:27","text":" @dev Stores a new beacon in the ERC-1967 beacon slot."},"id":7551,"implemented":true,"kind":"function","modifiers":[],"name":"_setBeacon","nameLocation":"4629:10:27","nodeType":"FunctionDefinition","parameters":{"id":7509,"nodeType":"ParameterList","parameters":[{"constant":false,"id":7508,"mutability":"mutable","name":"newBeacon","nameLocation":"4648:9:27","nodeType":"VariableDeclaration","scope":7551,"src":"4640:17:27","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":7507,"name":"address","nodeType":"ElementaryTypeName","src":"4640:7:27","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"4639:19:27"},"returnParameters":{"id":7510,"nodeType":"ParameterList","parameters":[],"src":"4667:0:27"},"scope":7606,"src":"4620:437:27","stateMutability":"nonpayable","virtual":false,"visibility":"private"},{"body":{"id":7590,"nodeType":"Block","src":"5661:263:27","statements":[{"expression":{"arguments":[{"id":7560,"name":"newBeacon","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7554,"src":"5682:9:27","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"id":7559,"name":"_setBeacon","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7551,"src":"5671:10:27","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_address_$returns$__$","typeString":"function (address)"}},"id":7561,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"5671:21:27","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":7562,"nodeType":"ExpressionStatement","src":"5671:21:27"},{"eventCall":{"arguments":[{"id":7566,"name":"newBeacon","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7554,"src":"5731:9:27","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"expression":{"id":7563,"name":"IERC1967","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6949,"src":"5707:8:27","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_IERC1967_$6949_$","typeString":"type(contract IERC1967)"}},"id":7565,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"5716:14:27","memberName":"BeaconUpgraded","nodeType":"MemberAccess","referencedDeclaration":6948,"src":"5707:23:27","typeDescriptions":{"typeIdentifier":"t_function_event_nonpayable$_t_address_$returns$__$","typeString":"function (address)"}},"id":7567,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"5707:34:27","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":7568,"nodeType":"EmitStatement","src":"5702:39:27"},{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":7572,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"expression":{"id":7569,"name":"data","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7556,"src":"5756:4:27","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}},"id":7570,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"5761:6:27","memberName":"length","nodeType":"MemberAccess","src":"5756:11:27","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">","rightExpression":{"hexValue":"30","id":7571,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"5770:1:27","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"5756:15:27","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"falseBody":{"id":7588,"nodeType":"Block","src":"5875:43:27","statements":[{"expression":{"arguments":[],"expression":{"argumentTypes":[],"id":7585,"name":"_checkNonPayable","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7605,"src":"5889:16:27","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$__$returns$__$","typeString":"function ()"}},"id":7586,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"5889:18:27","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":7587,"nodeType":"ExpressionStatement","src":"5889:18:27"}]},"id":7589,"nodeType":"IfStatement","src":"5752:166:27","trueBody":{"id":7584,"nodeType":"Block","src":"5773:96:27","statements":[{"expression":{"arguments":[{"arguments":[],"expression":{"argumentTypes":[],"expression":{"arguments":[{"id":7577,"name":"newBeacon","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7554,"src":"5824:9:27","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"id":7576,"name":"IBeacon","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7652,"src":"5816:7:27","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_IBeacon_$7652_$","typeString":"type(contract IBeacon)"}},"id":7578,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"5816:18:27","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_contract$_IBeacon_$7652","typeString":"contract IBeacon"}},"id":7579,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"5835:14:27","memberName":"implementation","nodeType":"MemberAccess","referencedDeclaration":7651,"src":"5816:33:27","typeDescriptions":{"typeIdentifier":"t_function_external_view$__$returns$_t_address_$","typeString":"function () view external returns (address)"}},"id":7580,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"5816:35:27","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":7581,"name":"data","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7556,"src":"5853:4:27","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":7573,"name":"Address","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10256,"src":"5787:7:27","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_Address_$10256_$","typeString":"type(library Address)"}},"id":7575,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"5795:20:27","memberName":"functionDelegateCall","nodeType":"MemberAccess","referencedDeclaration":10166,"src":"5787:28:27","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_address_$_t_bytes_memory_ptr_$returns$_t_bytes_memory_ptr_$","typeString":"function (address,bytes memory) returns (bytes memory)"}},"id":7582,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"5787:71:27","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}},"id":7583,"nodeType":"ExpressionStatement","src":"5787:71:27"}]}}]},"documentation":{"id":7552,"nodeType":"StructuredDocumentation","src":"5063:514:27","text":" @dev Change the beacon and trigger a setup call if data is nonempty.\n This function is payable only if the setup call is performed, otherwise `msg.value` is rejected\n to avoid stuck value in the contract.\n Emits an {IERC1967-BeaconUpgraded} event.\n CAUTION: Invoking this function has no effect on an instance of {BeaconProxy} since v5, since\n it uses an immutable beacon without looking at the value of the ERC-1967 beacon slot for\n efficiency."},"id":7591,"implemented":true,"kind":"function","modifiers":[],"name":"upgradeBeaconToAndCall","nameLocation":"5591:22:27","nodeType":"FunctionDefinition","parameters":{"id":7557,"nodeType":"ParameterList","parameters":[{"constant":false,"id":7554,"mutability":"mutable","name":"newBeacon","nameLocation":"5622:9:27","nodeType":"VariableDeclaration","scope":7591,"src":"5614:17:27","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":7553,"name":"address","nodeType":"ElementaryTypeName","src":"5614:7:27","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":7556,"mutability":"mutable","name":"data","nameLocation":"5646:4:27","nodeType":"VariableDeclaration","scope":7591,"src":"5633:17:27","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes"},"typeName":{"id":7555,"name":"bytes","nodeType":"ElementaryTypeName","src":"5633:5:27","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"}],"src":"5613:38:27"},"returnParameters":{"id":7558,"nodeType":"ParameterList","parameters":[],"src":"5661:0:27"},"scope":7606,"src":"5582:342:27","stateMutability":"nonpayable","virtual":false,"visibility":"internal"},{"body":{"id":7604,"nodeType":"Block","src":"6149:86:27","statements":[{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":7598,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"expression":{"id":7595,"name":"msg","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-15,"src":"6163:3:27","typeDescriptions":{"typeIdentifier":"t_magic_message","typeString":"msg"}},"id":7596,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"6167:5:27","memberName":"value","nodeType":"MemberAccess","src":"6163:9:27","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">","rightExpression":{"hexValue":"30","id":7597,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"6175:1:27","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"6163:13:27","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":7603,"nodeType":"IfStatement","src":"6159:70:27","trueBody":{"id":7602,"nodeType":"Block","src":"6178:51:27","statements":[{"errorCall":{"arguments":[],"expression":{"argumentTypes":[],"id":7599,"name":"ERC1967NonPayable","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7345,"src":"6199:17:27","typeDescriptions":{"typeIdentifier":"t_function_error_pure$__$returns$_t_error_$","typeString":"function () pure returns (error)"}},"id":7600,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"6199:19:27","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_error","typeString":"error"}},"id":7601,"nodeType":"RevertStatement","src":"6192:26:27"}]}}]},"documentation":{"id":7592,"nodeType":"StructuredDocumentation","src":"5930:178:27","text":" @dev Reverts if `msg.value` is not zero. It can be used to avoid `msg.value` stuck in the contract\n if an upgrade doesn't perform an initialization call."},"id":7605,"implemented":true,"kind":"function","modifiers":[],"name":"_checkNonPayable","nameLocation":"6122:16:27","nodeType":"FunctionDefinition","parameters":{"id":7593,"nodeType":"ParameterList","parameters":[],"src":"6138:2:27"},"returnParameters":{"id":7594,"nodeType":"ParameterList","parameters":[],"src":"6149:0:27"},"scope":7606,"src":"6113:122:27","stateMutability":"nonpayable","virtual":false,"visibility":"private"}],"scope":7607,"src":"496:5741:27","usedErrors":[7332,7337,7342,7345],"usedEvents":[]}],"src":"114:6124:27"},"id":27},"@openzeppelin/contracts/proxy/Proxy.sol":{"ast":{"absolutePath":"@openzeppelin/contracts/proxy/Proxy.sol","exportedSymbols":{"Proxy":[7642]},"id":7643,"license":"MIT","nodeType":"SourceUnit","nodes":[{"id":7608,"literals":["solidity","^","0.8",".20"],"nodeType":"PragmaDirective","src":"99:24:28"},{"abstract":true,"baseContracts":[],"canonicalName":"Proxy","contractDependencies":[],"contractKind":"contract","documentation":{"id":7609,"nodeType":"StructuredDocumentation","src":"125:598:28","text":" @dev This abstract contract provides a fallback function that delegates all calls to another contract using the EVM\n instruction `delegatecall`. We refer to the second contract as the _implementation_ behind the proxy, and it has to\n be specified by overriding the virtual {_implementation} function.\n Additionally, delegation to the implementation can be triggered manually through the {_fallback} function, or to a\n different contract through the {_delegate} function.\n The success and return data of the delegated call will be returned back to the caller of the proxy."},"fullyImplemented":false,"id":7642,"linearizedBaseContracts":[7642],"name":"Proxy","nameLocation":"742:5:28","nodeType":"ContractDefinition","nodes":[{"body":{"id":7616,"nodeType":"Block","src":"1009:862:28","statements":[{"AST":{"nativeSrc":"1028:837:28","nodeType":"YulBlock","src":"1028:837:28","statements":[{"expression":{"arguments":[{"kind":"number","nativeSrc":"1281:4:28","nodeType":"YulLiteral","src":"1281:4:28","type":"","value":"0x00"},{"kind":"number","nativeSrc":"1287:4:28","nodeType":"YulLiteral","src":"1287:4:28","type":"","value":"0x00"},{"arguments":[],"functionName":{"name":"calldatasize","nativeSrc":"1293:12:28","nodeType":"YulIdentifier","src":"1293:12:28"},"nativeSrc":"1293:14:28","nodeType":"YulFunctionCall","src":"1293:14:28"}],"functionName":{"name":"calldatacopy","nativeSrc":"1268:12:28","nodeType":"YulIdentifier","src":"1268:12:28"},"nativeSrc":"1268:40:28","nodeType":"YulFunctionCall","src":"1268:40:28"},"nativeSrc":"1268:40:28","nodeType":"YulExpressionStatement","src":"1268:40:28"},{"nativeSrc":"1435:83:28","nodeType":"YulVariableDeclaration","src":"1435:83:28","value":{"arguments":[{"arguments":[],"functionName":{"name":"gas","nativeSrc":"1462:3:28","nodeType":"YulIdentifier","src":"1462:3:28"},"nativeSrc":"1462:5:28","nodeType":"YulFunctionCall","src":"1462:5:28"},{"name":"implementation","nativeSrc":"1469:14:28","nodeType":"YulIdentifier","src":"1469:14:28"},{"kind":"number","nativeSrc":"1485:4:28","nodeType":"YulLiteral","src":"1485:4:28","type":"","value":"0x00"},{"arguments":[],"functionName":{"name":"calldatasize","nativeSrc":"1491:12:28","nodeType":"YulIdentifier","src":"1491:12:28"},"nativeSrc":"1491:14:28","nodeType":"YulFunctionCall","src":"1491:14:28"},{"kind":"number","nativeSrc":"1507:4:28","nodeType":"YulLiteral","src":"1507:4:28","type":"","value":"0x00"},{"kind":"number","nativeSrc":"1513:4:28","nodeType":"YulLiteral","src":"1513:4:28","type":"","value":"0x00"}],"functionName":{"name":"delegatecall","nativeSrc":"1449:12:28","nodeType":"YulIdentifier","src":"1449:12:28"},"nativeSrc":"1449:69:28","nodeType":"YulFunctionCall","src":"1449:69:28"},"variables":[{"name":"result","nativeSrc":"1439:6:28","nodeType":"YulTypedName","src":"1439:6:28","type":""}]},{"expression":{"arguments":[{"kind":"number","nativeSrc":"1586:4:28","nodeType":"YulLiteral","src":"1586:4:28","type":"","value":"0x00"},{"kind":"number","nativeSrc":"1592:4:28","nodeType":"YulLiteral","src":"1592:4:28","type":"","value":"0x00"},{"arguments":[],"functionName":{"name":"returndatasize","nativeSrc":"1598:14:28","nodeType":"YulIdentifier","src":"1598:14:28"},"nativeSrc":"1598:16:28","nodeType":"YulFunctionCall","src":"1598:16:28"}],"functionName":{"name":"returndatacopy","nativeSrc":"1571:14:28","nodeType":"YulIdentifier","src":"1571:14:28"},"nativeSrc":"1571:44:28","nodeType":"YulFunctionCall","src":"1571:44:28"},"nativeSrc":"1571:44:28","nodeType":"YulExpressionStatement","src":"1571:44:28"},{"cases":[{"body":{"nativeSrc":"1710:62:28","nodeType":"YulBlock","src":"1710:62:28","statements":[{"expression":{"arguments":[{"kind":"number","nativeSrc":"1735:4:28","nodeType":"YulLiteral","src":"1735:4:28","type":"","value":"0x00"},{"arguments":[],"functionName":{"name":"returndatasize","nativeSrc":"1741:14:28","nodeType":"YulIdentifier","src":"1741:14:28"},"nativeSrc":"1741:16:28","nodeType":"YulFunctionCall","src":"1741:16:28"}],"functionName":{"name":"revert","nativeSrc":"1728:6:28","nodeType":"YulIdentifier","src":"1728:6:28"},"nativeSrc":"1728:30:28","nodeType":"YulFunctionCall","src":"1728:30:28"},"nativeSrc":"1728:30:28","nodeType":"YulExpressionStatement","src":"1728:30:28"}]},"nativeSrc":"1703:69:28","nodeType":"YulCase","src":"1703:69:28","value":{"kind":"number","nativeSrc":"1708:1:28","nodeType":"YulLiteral","src":"1708:1:28","type":"","value":"0"}},{"body":{"nativeSrc":"1793:62:28","nodeType":"YulBlock","src":"1793:62:28","statements":[{"expression":{"arguments":[{"kind":"number","nativeSrc":"1818:4:28","nodeType":"YulLiteral","src":"1818:4:28","type":"","value":"0x00"},{"arguments":[],"functionName":{"name":"returndatasize","nativeSrc":"1824:14:28","nodeType":"YulIdentifier","src":"1824:14:28"},"nativeSrc":"1824:16:28","nodeType":"YulFunctionCall","src":"1824:16:28"}],"functionName":{"name":"return","nativeSrc":"1811:6:28","nodeType":"YulIdentifier","src":"1811:6:28"},"nativeSrc":"1811:30:28","nodeType":"YulFunctionCall","src":"1811:30:28"},"nativeSrc":"1811:30:28","nodeType":"YulExpressionStatement","src":"1811:30:28"}]},"nativeSrc":"1785:70:28","nodeType":"YulCase","src":"1785:70:28","value":"default"}],"expression":{"name":"result","nativeSrc":"1636:6:28","nodeType":"YulIdentifier","src":"1636:6:28"},"nativeSrc":"1629:226:28","nodeType":"YulSwitch","src":"1629:226:28"}]},"evmVersion":"prague","externalReferences":[{"declaration":7612,"isOffset":false,"isSlot":false,"src":"1469:14:28","valueSize":1}],"id":7615,"nodeType":"InlineAssembly","src":"1019:846:28"}]},"documentation":{"id":7610,"nodeType":"StructuredDocumentation","src":"754:190:28","text":" @dev Delegates the current call to `implementation`.\n This function does not return to its internal call site, it will return directly to the external caller."},"id":7617,"implemented":true,"kind":"function","modifiers":[],"name":"_delegate","nameLocation":"958:9:28","nodeType":"FunctionDefinition","parameters":{"id":7613,"nodeType":"ParameterList","parameters":[{"constant":false,"id":7612,"mutability":"mutable","name":"implementation","nameLocation":"976:14:28","nodeType":"VariableDeclaration","scope":7617,"src":"968:22:28","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":7611,"name":"address","nodeType":"ElementaryTypeName","src":"968:7:28","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"967:24:28"},"returnParameters":{"id":7614,"nodeType":"ParameterList","parameters":[],"src":"1009:0:28"},"scope":7642,"src":"949:922:28","stateMutability":"nonpayable","virtual":true,"visibility":"internal"},{"documentation":{"id":7618,"nodeType":"StructuredDocumentation","src":"1877:173:28","text":" @dev This is a virtual function that should be overridden so it returns the address to which the fallback\n function and {_fallback} should delegate."},"id":7623,"implemented":false,"kind":"function","modifiers":[],"name":"_implementation","nameLocation":"2064:15:28","nodeType":"FunctionDefinition","parameters":{"id":7619,"nodeType":"ParameterList","parameters":[],"src":"2079:2:28"},"returnParameters":{"id":7622,"nodeType":"ParameterList","parameters":[{"constant":false,"id":7621,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":7623,"src":"2113:7:28","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":7620,"name":"address","nodeType":"ElementaryTypeName","src":"2113:7:28","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"2112:9:28"},"scope":7642,"src":"2055:67:28","stateMutability":"view","virtual":true,"visibility":"internal"},{"body":{"id":7632,"nodeType":"Block","src":"2388:45:28","statements":[{"expression":{"arguments":[{"arguments":[],"expression":{"argumentTypes":[],"id":7628,"name":"_implementation","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7623,"src":"2408:15:28","typeDescriptions":{"typeIdentifier":"t_function_internal_view$__$returns$_t_address_$","typeString":"function () view returns (address)"}},"id":7629,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"2408:17:28","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"id":7627,"name":"_delegate","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7617,"src":"2398:9:28","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_address_$returns$__$","typeString":"function (address)"}},"id":7630,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"2398:28:28","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":7631,"nodeType":"ExpressionStatement","src":"2398:28:28"}]},"documentation":{"id":7624,"nodeType":"StructuredDocumentation","src":"2128:217:28","text":" @dev Delegates the current call to the address returned by `_implementation()`.\n This function does not return to its internal call site, it will return directly to the external caller."},"id":7633,"implemented":true,"kind":"function","modifiers":[],"name":"_fallback","nameLocation":"2359:9:28","nodeType":"FunctionDefinition","parameters":{"id":7625,"nodeType":"ParameterList","parameters":[],"src":"2368:2:28"},"returnParameters":{"id":7626,"nodeType":"ParameterList","parameters":[],"src":"2388:0:28"},"scope":7642,"src":"2350:83:28","stateMutability":"nonpayable","virtual":true,"visibility":"internal"},{"body":{"id":7640,"nodeType":"Block","src":"2666:28:28","statements":[{"expression":{"arguments":[],"expression":{"argumentTypes":[],"id":7637,"name":"_fallback","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7633,"src":"2676:9:28","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$__$returns$__$","typeString":"function ()"}},"id":7638,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"2676:11:28","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":7639,"nodeType":"ExpressionStatement","src":"2676:11:28"}]},"documentation":{"id":7634,"nodeType":"StructuredDocumentation","src":"2439:186:28","text":" @dev Fallback function that delegates calls to the address returned by `_implementation()`. Will run if no other\n function in the contract matches the call data."},"id":7641,"implemented":true,"kind":"fallback","modifiers":[],"name":"","nameLocation":"-1:-1:-1","nodeType":"FunctionDefinition","parameters":{"id":7635,"nodeType":"ParameterList","parameters":[],"src":"2638:2:28"},"returnParameters":{"id":7636,"nodeType":"ParameterList","parameters":[],"src":"2666:0:28"},"scope":7642,"src":"2630:64:28","stateMutability":"payable","virtual":true,"visibility":"external"}],"scope":7643,"src":"724:1972:28","usedErrors":[],"usedEvents":[]}],"src":"99:2598:28"},"id":28},"@openzeppelin/contracts/proxy/beacon/IBeacon.sol":{"ast":{"absolutePath":"@openzeppelin/contracts/proxy/beacon/IBeacon.sol","exportedSymbols":{"IBeacon":[7652]},"id":7653,"license":"MIT","nodeType":"SourceUnit","nodes":[{"id":7644,"literals":["solidity",">=","0.4",".16"],"nodeType":"PragmaDirective","src":"108:25:29"},{"abstract":false,"baseContracts":[],"canonicalName":"IBeacon","contractDependencies":[],"contractKind":"interface","documentation":{"id":7645,"nodeType":"StructuredDocumentation","src":"135:79:29","text":" @dev This is the interface that {BeaconProxy} expects of its beacon."},"fullyImplemented":false,"id":7652,"linearizedBaseContracts":[7652],"name":"IBeacon","nameLocation":"225:7:29","nodeType":"ContractDefinition","nodes":[{"documentation":{"id":7646,"nodeType":"StructuredDocumentation","src":"239:168:29","text":" @dev Must return an address that can be used as a delegate call target.\n {UpgradeableBeacon} will check that this address is a contract."},"functionSelector":"5c60da1b","id":7651,"implemented":false,"kind":"function","modifiers":[],"name":"implementation","nameLocation":"421:14:29","nodeType":"FunctionDefinition","parameters":{"id":7647,"nodeType":"ParameterList","parameters":[],"src":"435:2:29"},"returnParameters":{"id":7650,"nodeType":"ParameterList","parameters":[{"constant":false,"id":7649,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":7651,"src":"461:7:29","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":7648,"name":"address","nodeType":"ElementaryTypeName","src":"461:7:29","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"460:9:29"},"scope":7652,"src":"412:58:29","stateMutability":"view","virtual":false,"visibility":"external"}],"scope":7653,"src":"215:257:29","usedErrors":[],"usedEvents":[]}],"src":"108:365:29"},"id":29},"@openzeppelin/contracts/proxy/utils/Initializable.sol":{"ast":{"absolutePath":"@openzeppelin/contracts/proxy/utils/Initializable.sol","exportedSymbols":{"Initializable":[7920]},"id":7921,"license":"MIT","nodeType":"SourceUnit","nodes":[{"id":7654,"literals":["solidity","^","0.8",".20"],"nodeType":"PragmaDirective","src":"113:24:30"},{"abstract":true,"baseContracts":[],"canonicalName":"Initializable","contractDependencies":[],"contractKind":"contract","documentation":{"id":7655,"nodeType":"StructuredDocumentation","src":"139:2209:30","text":" @dev This is a base contract to aid in writing upgradeable contracts, or any kind of contract that will be deployed\n behind a proxy. Since proxied contracts do not make use of a constructor, it's common to move constructor logic to an\n external initializer function, usually called `initialize`. It then becomes necessary to protect this initializer\n function so it can only be called once. The {initializer} modifier provided by this contract will have this effect.\n The initialization functions use a version number. Once a version number is used, it is consumed and cannot be\n reused. This mechanism prevents re-execution of each \"step\" but allows the creation of new initialization steps in\n case an upgrade adds a module that needs to be initialized.\n For example:\n [.hljs-theme-light.nopadding]\n ```solidity\n contract MyToken is ERC20Upgradeable {\n     function initialize() initializer public {\n         __ERC20_init(\"MyToken\", \"MTK\");\n     }\n }\n contract MyTokenV2 is MyToken, ERC20PermitUpgradeable {\n     function initializeV2() reinitializer(2) public {\n         __ERC20Permit_init(\"MyToken\");\n     }\n }\n ```\n TIP: To avoid leaving the proxy in an uninitialized state, the initializer function should be called as early as\n possible by providing the encoded function call as the `_data` argument to {ERC1967Proxy-constructor}.\n CAUTION: When used with inheritance, manual care must be taken to not invoke a parent initializer twice, or to ensure\n that all initializers are idempotent. This is not verified automatically as constructors are by Solidity.\n [CAUTION]\n ====\n Avoid leaving a contract uninitialized.\n An uninitialized contract can be taken over by an attacker. This applies to both a proxy and its implementation\n contract, which may impact the proxy. To prevent the implementation contract from being used, you should invoke\n the {_disableInitializers} function in the constructor to automatically lock it when it is deployed:\n [.hljs-theme-light.nopadding]\n ```\n /// @custom:oz-upgrades-unsafe-allow constructor\n constructor() {\n     _disableInitializers();\n }\n ```\n ===="},"fullyImplemented":true,"id":7920,"linearizedBaseContracts":[7920],"name":"Initializable","nameLocation":"2367:13:30","nodeType":"ContractDefinition","nodes":[{"canonicalName":"Initializable.InitializableStorage","documentation":{"id":7656,"nodeType":"StructuredDocumentation","src":"2387:293:30","text":" @dev Storage of the initializable contract.\n It's implemented on a custom ERC-7201 namespace to reduce the risk of storage collisions\n when using with upgradeable contracts.\n @custom:storage-location erc7201:openzeppelin.storage.Initializable"},"id":7663,"members":[{"constant":false,"id":7659,"mutability":"mutable","name":"_initialized","nameLocation":"2820:12:30","nodeType":"VariableDeclaration","scope":7663,"src":"2813:19:30","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint64","typeString":"uint64"},"typeName":{"id":7658,"name":"uint64","nodeType":"ElementaryTypeName","src":"2813:6:30","typeDescriptions":{"typeIdentifier":"t_uint64","typeString":"uint64"}},"visibility":"internal"},{"constant":false,"id":7662,"mutability":"mutable","name":"_initializing","nameLocation":"2955:13:30","nodeType":"VariableDeclaration","scope":7663,"src":"2950:18:30","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":7661,"name":"bool","nodeType":"ElementaryTypeName","src":"2950:4:30","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"}],"name":"InitializableStorage","nameLocation":"2692:20:30","nodeType":"StructDefinition","scope":7920,"src":"2685:290:30","visibility":"public"},{"constant":true,"id":7666,"mutability":"constant","name":"INITIALIZABLE_STORAGE","nameLocation":"3123:21:30","nodeType":"VariableDeclaration","scope":7920,"src":"3098:115:30","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":7664,"name":"bytes32","nodeType":"ElementaryTypeName","src":"3098:7:30","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"value":{"hexValue":"307866306335376531363834306466303430663135303838646332663831666533393163333932336265633733653233613936363265666339633232396336613030","id":7665,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"3147:66:30","typeDescriptions":{"typeIdentifier":"t_rational_108904022758810753673719992590105913556127789646572562039383141376366747609600_by_1","typeString":"int_const 1089...(70 digits omitted)...9600"},"value":"0xf0c57e16840df040f15088dc2f81fe391c3923bec73e23a9662efc9c229c6a00"},"visibility":"private"},{"documentation":{"id":7667,"nodeType":"StructuredDocumentation","src":"3220:60:30","text":" @dev The contract is already initialized."},"errorSelector":"f92ee8a9","id":7669,"name":"InvalidInitialization","nameLocation":"3291:21:30","nodeType":"ErrorDefinition","parameters":{"id":7668,"nodeType":"ParameterList","parameters":[],"src":"3312:2:30"},"src":"3285:30:30"},{"documentation":{"id":7670,"nodeType":"StructuredDocumentation","src":"3321:57:30","text":" @dev The contract is not initializing."},"errorSelector":"d7e6bcf8","id":7672,"name":"NotInitializing","nameLocation":"3389:15:30","nodeType":"ErrorDefinition","parameters":{"id":7671,"nodeType":"ParameterList","parameters":[],"src":"3404:2:30"},"src":"3383:24:30"},{"anonymous":false,"documentation":{"id":7673,"nodeType":"StructuredDocumentation","src":"3413:90:30","text":" @dev Triggered when the contract has been initialized or reinitialized."},"eventSelector":"c7f505b2f371ae2175ee4913f4499e1f2633a7b5936321eed1cdaeb6115181d2","id":7677,"name":"Initialized","nameLocation":"3514:11:30","nodeType":"EventDefinition","parameters":{"id":7676,"nodeType":"ParameterList","parameters":[{"constant":false,"id":7675,"indexed":false,"mutability":"mutable","name":"version","nameLocation":"3533:7:30","nodeType":"VariableDeclaration","scope":7677,"src":"3526:14:30","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint64","typeString":"uint64"},"typeName":{"id":7674,"name":"uint64","nodeType":"ElementaryTypeName","src":"3526:6:30","typeDescriptions":{"typeIdentifier":"t_uint64","typeString":"uint64"}},"visibility":"internal"}],"src":"3525:16:30"},"src":"3508:34:30"},{"body":{"id":7759,"nodeType":"Block","src":"4092:1079:30","statements":[{"assignments":[7682],"declarations":[{"constant":false,"id":7682,"mutability":"mutable","name":"$","nameLocation":"4187:1:30","nodeType":"VariableDeclaration","scope":7759,"src":"4158:30:30","stateVariable":false,"storageLocation":"storage","typeDescriptions":{"typeIdentifier":"t_struct$_InitializableStorage_$7663_storage_ptr","typeString":"struct Initializable.InitializableStorage"},"typeName":{"id":7681,"nodeType":"UserDefinedTypeName","pathNode":{"id":7680,"name":"InitializableStorage","nameLocations":["4158:20:30"],"nodeType":"IdentifierPath","referencedDeclaration":7663,"src":"4158:20:30"},"referencedDeclaration":7663,"src":"4158:20:30","typeDescriptions":{"typeIdentifier":"t_struct$_InitializableStorage_$7663_storage_ptr","typeString":"struct Initializable.InitializableStorage"}},"visibility":"internal"}],"id":7685,"initialValue":{"arguments":[],"expression":{"argumentTypes":[],"id":7683,"name":"_getInitializableStorage","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7919,"src":"4191:24:30","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$__$returns$_t_struct$_InitializableStorage_$7663_storage_ptr_$","typeString":"function () pure returns (struct Initializable.InitializableStorage storage pointer)"}},"id":7684,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"4191:26:30","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_struct$_InitializableStorage_$7663_storage_ptr","typeString":"struct Initializable.InitializableStorage storage pointer"}},"nodeType":"VariableDeclarationStatement","src":"4158:59:30"},{"assignments":[7687],"declarations":[{"constant":false,"id":7687,"mutability":"mutable","name":"isTopLevelCall","nameLocation":"4284:14:30","nodeType":"VariableDeclaration","scope":7759,"src":"4279:19:30","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":7686,"name":"bool","nodeType":"ElementaryTypeName","src":"4279:4:30","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"}],"id":7691,"initialValue":{"id":7690,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"UnaryOperation","operator":"!","prefix":true,"src":"4301:16:30","subExpression":{"expression":{"id":7688,"name":"$","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7682,"src":"4302:1:30","typeDescriptions":{"typeIdentifier":"t_struct$_InitializableStorage_$7663_storage_ptr","typeString":"struct Initializable.InitializableStorage storage pointer"}},"id":7689,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"4304:13:30","memberName":"_initializing","nodeType":"MemberAccess","referencedDeclaration":7662,"src":"4302:15:30","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"nodeType":"VariableDeclarationStatement","src":"4279:38:30"},{"assignments":[7693],"declarations":[{"constant":false,"id":7693,"mutability":"mutable","name":"initialized","nameLocation":"4334:11:30","nodeType":"VariableDeclaration","scope":7759,"src":"4327:18:30","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint64","typeString":"uint64"},"typeName":{"id":7692,"name":"uint64","nodeType":"ElementaryTypeName","src":"4327:6:30","typeDescriptions":{"typeIdentifier":"t_uint64","typeString":"uint64"}},"visibility":"internal"}],"id":7696,"initialValue":{"expression":{"id":7694,"name":"$","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7682,"src":"4348:1:30","typeDescriptions":{"typeIdentifier":"t_struct$_InitializableStorage_$7663_storage_ptr","typeString":"struct Initializable.InitializableStorage storage pointer"}},"id":7695,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"4350:12:30","memberName":"_initialized","nodeType":"MemberAccess","referencedDeclaration":7659,"src":"4348:14:30","typeDescriptions":{"typeIdentifier":"t_uint64","typeString":"uint64"}},"nodeType":"VariableDeclarationStatement","src":"4327:35:30"},{"assignments":[7698],"declarations":[{"constant":false,"id":7698,"mutability":"mutable","name":"initialSetup","nameLocation":"4709:12:30","nodeType":"VariableDeclaration","scope":7759,"src":"4704:17:30","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":7697,"name":"bool","nodeType":"ElementaryTypeName","src":"4704:4:30","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"}],"id":7704,"initialValue":{"commonType":{"typeIdentifier":"t_bool","typeString":"bool"},"id":7703,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"commonType":{"typeIdentifier":"t_uint64","typeString":"uint64"},"id":7701,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":7699,"name":"initialized","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7693,"src":"4724:11:30","typeDescriptions":{"typeIdentifier":"t_uint64","typeString":"uint64"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"hexValue":"30","id":7700,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"4739:1:30","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"4724:16:30","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"nodeType":"BinaryOperation","operator":"&&","rightExpression":{"id":7702,"name":"isTopLevelCall","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7687,"src":"4744:14:30","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"src":"4724:34:30","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"nodeType":"VariableDeclarationStatement","src":"4704:54:30"},{"assignments":[7706],"declarations":[{"constant":false,"id":7706,"mutability":"mutable","name":"construction","nameLocation":"4773:12:30","nodeType":"VariableDeclaration","scope":7759,"src":"4768:17:30","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":7705,"name":"bool","nodeType":"ElementaryTypeName","src":"4768:4:30","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"}],"id":7719,"initialValue":{"commonType":{"typeIdentifier":"t_bool","typeString":"bool"},"id":7718,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"commonType":{"typeIdentifier":"t_uint64","typeString":"uint64"},"id":7709,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":7707,"name":"initialized","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7693,"src":"4788:11:30","typeDescriptions":{"typeIdentifier":"t_uint64","typeString":"uint64"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"hexValue":"31","id":7708,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"4803:1:30","typeDescriptions":{"typeIdentifier":"t_rational_1_by_1","typeString":"int_const 1"},"value":"1"},"src":"4788:16:30","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"nodeType":"BinaryOperation","operator":"&&","rightExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":7717,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"expression":{"expression":{"arguments":[{"id":7712,"name":"this","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-28,"src":"4816:4:30","typeDescriptions":{"typeIdentifier":"t_contract$_Initializable_$7920","typeString":"contract Initializable"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_contract$_Initializable_$7920","typeString":"contract Initializable"}],"id":7711,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"4808:7:30","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":7710,"name":"address","nodeType":"ElementaryTypeName","src":"4808:7:30","typeDescriptions":{}}},"id":7713,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"4808:13:30","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"id":7714,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"4822:4:30","memberName":"code","nodeType":"MemberAccess","src":"4808:18:30","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}},"id":7715,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"4827:6:30","memberName":"length","nodeType":"MemberAccess","src":"4808:25:30","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"hexValue":"30","id":7716,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"4837:1:30","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"4808:30:30","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"src":"4788:50:30","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"nodeType":"VariableDeclarationStatement","src":"4768:70:30"},{"condition":{"commonType":{"typeIdentifier":"t_bool","typeString":"bool"},"id":7724,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":7721,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"UnaryOperation","operator":"!","prefix":true,"src":"4853:13:30","subExpression":{"id":7720,"name":"initialSetup","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7698,"src":"4854:12:30","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"nodeType":"BinaryOperation","operator":"&&","rightExpression":{"id":7723,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"UnaryOperation","operator":"!","prefix":true,"src":"4870:13:30","subExpression":{"id":7722,"name":"construction","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7706,"src":"4871:12:30","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"src":"4853:30:30","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":7729,"nodeType":"IfStatement","src":"4849:91:30","trueBody":{"id":7728,"nodeType":"Block","src":"4885:55:30","statements":[{"errorCall":{"arguments":[],"expression":{"argumentTypes":[],"id":7725,"name":"InvalidInitialization","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7669,"src":"4906:21:30","typeDescriptions":{"typeIdentifier":"t_function_error_pure$__$returns$_t_error_$","typeString":"function () pure returns (error)"}},"id":7726,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"4906:23:30","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_error","typeString":"error"}},"id":7727,"nodeType":"RevertStatement","src":"4899:30:30"}]}},{"expression":{"id":7734,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"expression":{"id":7730,"name":"$","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7682,"src":"4949:1:30","typeDescriptions":{"typeIdentifier":"t_struct$_InitializableStorage_$7663_storage_ptr","typeString":"struct Initializable.InitializableStorage storage pointer"}},"id":7732,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"memberLocation":"4951:12:30","memberName":"_initialized","nodeType":"MemberAccess","referencedDeclaration":7659,"src":"4949:14:30","typeDescriptions":{"typeIdentifier":"t_uint64","typeString":"uint64"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"hexValue":"31","id":7733,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"4966:1:30","typeDescriptions":{"typeIdentifier":"t_rational_1_by_1","typeString":"int_const 1"},"value":"1"},"src":"4949:18:30","typeDescriptions":{"typeIdentifier":"t_uint64","typeString":"uint64"}},"id":7735,"nodeType":"ExpressionStatement","src":"4949:18:30"},{"condition":{"id":7736,"name":"isTopLevelCall","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7687,"src":"4981:14:30","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":7744,"nodeType":"IfStatement","src":"4977:67:30","trueBody":{"id":7743,"nodeType":"Block","src":"4997:47:30","statements":[{"expression":{"id":7741,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"expression":{"id":7737,"name":"$","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7682,"src":"5011:1:30","typeDescriptions":{"typeIdentifier":"t_struct$_InitializableStorage_$7663_storage_ptr","typeString":"struct Initializable.InitializableStorage storage pointer"}},"id":7739,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"memberLocation":"5013:13:30","memberName":"_initializing","nodeType":"MemberAccess","referencedDeclaration":7662,"src":"5011:15:30","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"hexValue":"74727565","id":7740,"isConstant":false,"isLValue":false,"isPure":true,"kind":"bool","lValueRequested":false,"nodeType":"Literal","src":"5029:4:30","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"value":"true"},"src":"5011:22:30","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":7742,"nodeType":"ExpressionStatement","src":"5011:22:30"}]}},{"id":7745,"nodeType":"PlaceholderStatement","src":"5053:1:30"},{"condition":{"id":7746,"name":"isTopLevelCall","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7687,"src":"5068:14:30","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":7758,"nodeType":"IfStatement","src":"5064:101:30","trueBody":{"id":7757,"nodeType":"Block","src":"5084:81:30","statements":[{"expression":{"id":7751,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"expression":{"id":7747,"name":"$","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7682,"src":"5098:1:30","typeDescriptions":{"typeIdentifier":"t_struct$_InitializableStorage_$7663_storage_ptr","typeString":"struct Initializable.InitializableStorage storage pointer"}},"id":7749,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"memberLocation":"5100:13:30","memberName":"_initializing","nodeType":"MemberAccess","referencedDeclaration":7662,"src":"5098:15:30","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"hexValue":"66616c7365","id":7750,"isConstant":false,"isLValue":false,"isPure":true,"kind":"bool","lValueRequested":false,"nodeType":"Literal","src":"5116:5:30","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"value":"false"},"src":"5098:23:30","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":7752,"nodeType":"ExpressionStatement","src":"5098:23:30"},{"eventCall":{"arguments":[{"hexValue":"31","id":7754,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"5152:1:30","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":7753,"name":"Initialized","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7677,"src":"5140:11:30","typeDescriptions":{"typeIdentifier":"t_function_event_nonpayable$_t_uint64_$returns$__$","typeString":"function (uint64)"}},"id":7755,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"5140:14:30","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":7756,"nodeType":"EmitStatement","src":"5135:19:30"}]}}]},"documentation":{"id":7678,"nodeType":"StructuredDocumentation","src":"3548:516:30","text":" @dev A modifier that defines a protected initializer function that can be invoked at most once. In its scope,\n `onlyInitializing` functions can be used to initialize parent contracts.\n Similar to `reinitializer(1)`, except that in the context of a constructor an `initializer` may be invoked any\n number of times. This behavior in the constructor can be useful during testing and is not expected to be used in\n production.\n Emits an {Initialized} event."},"id":7760,"name":"initializer","nameLocation":"4078:11:30","nodeType":"ModifierDefinition","parameters":{"id":7679,"nodeType":"ParameterList","parameters":[],"src":"4089:2:30"},"src":"4069:1102:30","virtual":false,"visibility":"internal"},{"body":{"id":7806,"nodeType":"Block","src":"6289:392:30","statements":[{"assignments":[7767],"declarations":[{"constant":false,"id":7767,"mutability":"mutable","name":"$","nameLocation":"6384:1:30","nodeType":"VariableDeclaration","scope":7806,"src":"6355:30:30","stateVariable":false,"storageLocation":"storage","typeDescriptions":{"typeIdentifier":"t_struct$_InitializableStorage_$7663_storage_ptr","typeString":"struct Initializable.InitializableStorage"},"typeName":{"id":7766,"nodeType":"UserDefinedTypeName","pathNode":{"id":7765,"name":"InitializableStorage","nameLocations":["6355:20:30"],"nodeType":"IdentifierPath","referencedDeclaration":7663,"src":"6355:20:30"},"referencedDeclaration":7663,"src":"6355:20:30","typeDescriptions":{"typeIdentifier":"t_struct$_InitializableStorage_$7663_storage_ptr","typeString":"struct Initializable.InitializableStorage"}},"visibility":"internal"}],"id":7770,"initialValue":{"arguments":[],"expression":{"argumentTypes":[],"id":7768,"name":"_getInitializableStorage","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7919,"src":"6388:24:30","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$__$returns$_t_struct$_InitializableStorage_$7663_storage_ptr_$","typeString":"function () pure returns (struct Initializable.InitializableStorage storage pointer)"}},"id":7769,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"6388:26:30","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_struct$_InitializableStorage_$7663_storage_ptr","typeString":"struct Initializable.InitializableStorage storage pointer"}},"nodeType":"VariableDeclarationStatement","src":"6355:59:30"},{"condition":{"commonType":{"typeIdentifier":"t_bool","typeString":"bool"},"id":7777,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"expression":{"id":7771,"name":"$","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7767,"src":"6429:1:30","typeDescriptions":{"typeIdentifier":"t_struct$_InitializableStorage_$7663_storage_ptr","typeString":"struct Initializable.InitializableStorage storage pointer"}},"id":7772,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"6431:13:30","memberName":"_initializing","nodeType":"MemberAccess","referencedDeclaration":7662,"src":"6429:15:30","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"nodeType":"BinaryOperation","operator":"||","rightExpression":{"commonType":{"typeIdentifier":"t_uint64","typeString":"uint64"},"id":7776,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"expression":{"id":7773,"name":"$","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7767,"src":"6448:1:30","typeDescriptions":{"typeIdentifier":"t_struct$_InitializableStorage_$7663_storage_ptr","typeString":"struct Initializable.InitializableStorage storage pointer"}},"id":7774,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"6450:12:30","memberName":"_initialized","nodeType":"MemberAccess","referencedDeclaration":7659,"src":"6448:14:30","typeDescriptions":{"typeIdentifier":"t_uint64","typeString":"uint64"}},"nodeType":"BinaryOperation","operator":">=","rightExpression":{"id":7775,"name":"version","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7763,"src":"6466:7:30","typeDescriptions":{"typeIdentifier":"t_uint64","typeString":"uint64"}},"src":"6448:25:30","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"src":"6429:44:30","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":7782,"nodeType":"IfStatement","src":"6425:105:30","trueBody":{"id":7781,"nodeType":"Block","src":"6475:55:30","statements":[{"errorCall":{"arguments":[],"expression":{"argumentTypes":[],"id":7778,"name":"InvalidInitialization","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7669,"src":"6496:21:30","typeDescriptions":{"typeIdentifier":"t_function_error_pure$__$returns$_t_error_$","typeString":"function () pure returns (error)"}},"id":7779,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"6496:23:30","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_error","typeString":"error"}},"id":7780,"nodeType":"RevertStatement","src":"6489:30:30"}]}},{"expression":{"id":7787,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"expression":{"id":7783,"name":"$","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7767,"src":"6539:1:30","typeDescriptions":{"typeIdentifier":"t_struct$_InitializableStorage_$7663_storage_ptr","typeString":"struct Initializable.InitializableStorage storage pointer"}},"id":7785,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"memberLocation":"6541:12:30","memberName":"_initialized","nodeType":"MemberAccess","referencedDeclaration":7659,"src":"6539:14:30","typeDescriptions":{"typeIdentifier":"t_uint64","typeString":"uint64"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"id":7786,"name":"version","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7763,"src":"6556:7:30","typeDescriptions":{"typeIdentifier":"t_uint64","typeString":"uint64"}},"src":"6539:24:30","typeDescriptions":{"typeIdentifier":"t_uint64","typeString":"uint64"}},"id":7788,"nodeType":"ExpressionStatement","src":"6539:24:30"},{"expression":{"id":7793,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"expression":{"id":7789,"name":"$","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7767,"src":"6573:1:30","typeDescriptions":{"typeIdentifier":"t_struct$_InitializableStorage_$7663_storage_ptr","typeString":"struct Initializable.InitializableStorage storage pointer"}},"id":7791,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"memberLocation":"6575:13:30","memberName":"_initializing","nodeType":"MemberAccess","referencedDeclaration":7662,"src":"6573:15:30","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"hexValue":"74727565","id":7792,"isConstant":false,"isLValue":false,"isPure":true,"kind":"bool","lValueRequested":false,"nodeType":"Literal","src":"6591:4:30","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"value":"true"},"src":"6573:22:30","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":7794,"nodeType":"ExpressionStatement","src":"6573:22:30"},{"id":7795,"nodeType":"PlaceholderStatement","src":"6605:1:30"},{"expression":{"id":7800,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"expression":{"id":7796,"name":"$","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7767,"src":"6616:1:30","typeDescriptions":{"typeIdentifier":"t_struct$_InitializableStorage_$7663_storage_ptr","typeString":"struct Initializable.InitializableStorage storage pointer"}},"id":7798,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"memberLocation":"6618:13:30","memberName":"_initializing","nodeType":"MemberAccess","referencedDeclaration":7662,"src":"6616:15:30","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"hexValue":"66616c7365","id":7799,"isConstant":false,"isLValue":false,"isPure":true,"kind":"bool","lValueRequested":false,"nodeType":"Literal","src":"6634:5:30","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"value":"false"},"src":"6616:23:30","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":7801,"nodeType":"ExpressionStatement","src":"6616:23:30"},{"eventCall":{"arguments":[{"id":7803,"name":"version","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7763,"src":"6666:7:30","typeDescriptions":{"typeIdentifier":"t_uint64","typeString":"uint64"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint64","typeString":"uint64"}],"id":7802,"name":"Initialized","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7677,"src":"6654:11:30","typeDescriptions":{"typeIdentifier":"t_function_event_nonpayable$_t_uint64_$returns$__$","typeString":"function (uint64)"}},"id":7804,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"6654:20:30","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":7805,"nodeType":"EmitStatement","src":"6649:25:30"}]},"documentation":{"id":7761,"nodeType":"StructuredDocumentation","src":"5177:1068:30","text":" @dev A modifier that defines a protected reinitializer function that can be invoked at most once, and only if the\n contract hasn't been initialized to a greater version before. In its scope, `onlyInitializing` functions can be\n used to initialize parent contracts.\n A reinitializer may be used after the original initialization step. This is essential to configure modules that\n are added through upgrades and that require initialization.\n When `version` is 1, this modifier is similar to `initializer`, except that functions marked with `reinitializer`\n cannot be nested. If one is invoked in the context of another, execution will revert.\n Note that versions can jump in increments greater than 1; this implies that if multiple reinitializers coexist in\n a contract, executing them in the right order is up to the developer or operator.\n WARNING: Setting the version to 2**64 - 1 will prevent any future reinitialization.\n Emits an {Initialized} event."},"id":7807,"name":"reinitializer","nameLocation":"6259:13:30","nodeType":"ModifierDefinition","parameters":{"id":7764,"nodeType":"ParameterList","parameters":[{"constant":false,"id":7763,"mutability":"mutable","name":"version","nameLocation":"6280:7:30","nodeType":"VariableDeclaration","scope":7807,"src":"6273:14:30","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint64","typeString":"uint64"},"typeName":{"id":7762,"name":"uint64","nodeType":"ElementaryTypeName","src":"6273:6:30","typeDescriptions":{"typeIdentifier":"t_uint64","typeString":"uint64"}},"visibility":"internal"}],"src":"6272:16:30"},"src":"6250:431:30","virtual":false,"visibility":"internal"},{"body":{"id":7814,"nodeType":"Block","src":"6919:48:30","statements":[{"expression":{"arguments":[],"expression":{"argumentTypes":[],"id":7810,"name":"_checkInitializing","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7828,"src":"6929:18:30","typeDescriptions":{"typeIdentifier":"t_function_internal_view$__$returns$__$","typeString":"function () view"}},"id":7811,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"6929:20:30","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":7812,"nodeType":"ExpressionStatement","src":"6929:20:30"},{"id":7813,"nodeType":"PlaceholderStatement","src":"6959:1:30"}]},"documentation":{"id":7808,"nodeType":"StructuredDocumentation","src":"6687:199:30","text":" @dev Modifier to protect an initialization function so that it can only be invoked by functions with the\n {initializer} and {reinitializer} modifiers, directly or indirectly."},"id":7815,"name":"onlyInitializing","nameLocation":"6900:16:30","nodeType":"ModifierDefinition","parameters":{"id":7809,"nodeType":"ParameterList","parameters":[],"src":"6916:2:30"},"src":"6891:76:30","virtual":false,"visibility":"internal"},{"body":{"id":7827,"nodeType":"Block","src":"7134:89:30","statements":[{"condition":{"id":7821,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"UnaryOperation","operator":"!","prefix":true,"src":"7148:18:30","subExpression":{"arguments":[],"expression":{"argumentTypes":[],"id":7819,"name":"_isInitializing","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7896,"src":"7149:15:30","typeDescriptions":{"typeIdentifier":"t_function_internal_view$__$returns$_t_bool_$","typeString":"function () view returns (bool)"}},"id":7820,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"7149:17:30","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":7826,"nodeType":"IfStatement","src":"7144:73:30","trueBody":{"id":7825,"nodeType":"Block","src":"7168:49:30","statements":[{"errorCall":{"arguments":[],"expression":{"argumentTypes":[],"id":7822,"name":"NotInitializing","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7672,"src":"7189:15:30","typeDescriptions":{"typeIdentifier":"t_function_error_pure$__$returns$_t_error_$","typeString":"function () pure returns (error)"}},"id":7823,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"7189:17:30","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_error","typeString":"error"}},"id":7824,"nodeType":"RevertStatement","src":"7182:24:30"}]}}]},"documentation":{"id":7816,"nodeType":"StructuredDocumentation","src":"6973:104:30","text":" @dev Reverts if the contract is not in an initializing state. See {onlyInitializing}."},"id":7828,"implemented":true,"kind":"function","modifiers":[],"name":"_checkInitializing","nameLocation":"7091:18:30","nodeType":"FunctionDefinition","parameters":{"id":7817,"nodeType":"ParameterList","parameters":[],"src":"7109:2:30"},"returnParameters":{"id":7818,"nodeType":"ParameterList","parameters":[],"src":"7134:0:30"},"scope":7920,"src":"7082:141:30","stateMutability":"view","virtual":true,"visibility":"internal"},{"body":{"id":7873,"nodeType":"Block","src":"7758:373:30","statements":[{"assignments":[7834],"declarations":[{"constant":false,"id":7834,"mutability":"mutable","name":"$","nameLocation":"7853:1:30","nodeType":"VariableDeclaration","scope":7873,"src":"7824:30:30","stateVariable":false,"storageLocation":"storage","typeDescriptions":{"typeIdentifier":"t_struct$_InitializableStorage_$7663_storage_ptr","typeString":"struct Initializable.InitializableStorage"},"typeName":{"id":7833,"nodeType":"UserDefinedTypeName","pathNode":{"id":7832,"name":"InitializableStorage","nameLocations":["7824:20:30"],"nodeType":"IdentifierPath","referencedDeclaration":7663,"src":"7824:20:30"},"referencedDeclaration":7663,"src":"7824:20:30","typeDescriptions":{"typeIdentifier":"t_struct$_InitializableStorage_$7663_storage_ptr","typeString":"struct Initializable.InitializableStorage"}},"visibility":"internal"}],"id":7837,"initialValue":{"arguments":[],"expression":{"argumentTypes":[],"id":7835,"name":"_getInitializableStorage","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7919,"src":"7857:24:30","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$__$returns$_t_struct$_InitializableStorage_$7663_storage_ptr_$","typeString":"function () pure returns (struct Initializable.InitializableStorage storage pointer)"}},"id":7836,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"7857:26:30","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_struct$_InitializableStorage_$7663_storage_ptr","typeString":"struct Initializable.InitializableStorage storage pointer"}},"nodeType":"VariableDeclarationStatement","src":"7824:59:30"},{"condition":{"expression":{"id":7838,"name":"$","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7834,"src":"7898:1:30","typeDescriptions":{"typeIdentifier":"t_struct$_InitializableStorage_$7663_storage_ptr","typeString":"struct Initializable.InitializableStorage storage pointer"}},"id":7839,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"7900:13:30","memberName":"_initializing","nodeType":"MemberAccess","referencedDeclaration":7662,"src":"7898:15:30","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":7844,"nodeType":"IfStatement","src":"7894:76:30","trueBody":{"id":7843,"nodeType":"Block","src":"7915:55:30","statements":[{"errorCall":{"arguments":[],"expression":{"argumentTypes":[],"id":7840,"name":"InvalidInitialization","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7669,"src":"7936:21:30","typeDescriptions":{"typeIdentifier":"t_function_error_pure$__$returns$_t_error_$","typeString":"function () pure returns (error)"}},"id":7841,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"7936:23:30","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_error","typeString":"error"}},"id":7842,"nodeType":"RevertStatement","src":"7929:30:30"}]}},{"condition":{"commonType":{"typeIdentifier":"t_uint64","typeString":"uint64"},"id":7852,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"expression":{"id":7845,"name":"$","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7834,"src":"7983:1:30","typeDescriptions":{"typeIdentifier":"t_struct$_InitializableStorage_$7663_storage_ptr","typeString":"struct Initializable.InitializableStorage storage pointer"}},"id":7846,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"7985:12:30","memberName":"_initialized","nodeType":"MemberAccess","referencedDeclaration":7659,"src":"7983:14:30","typeDescriptions":{"typeIdentifier":"t_uint64","typeString":"uint64"}},"nodeType":"BinaryOperation","operator":"!=","rightExpression":{"expression":{"arguments":[{"id":7849,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"8006:6:30","typeDescriptions":{"typeIdentifier":"t_type$_t_uint64_$","typeString":"type(uint64)"},"typeName":{"id":7848,"name":"uint64","nodeType":"ElementaryTypeName","src":"8006:6:30","typeDescriptions":{}}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_type$_t_uint64_$","typeString":"type(uint64)"}],"id":7847,"name":"type","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-27,"src":"8001:4:30","typeDescriptions":{"typeIdentifier":"t_function_metatype_pure$__$returns$__$","typeString":"function () pure"}},"id":7850,"isConstant":false,"isLValue":false,"isPure":true,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"8001:12:30","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_magic_meta_type_t_uint64","typeString":"type(uint64)"}},"id":7851,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberLocation":"8014:3:30","memberName":"max","nodeType":"MemberAccess","src":"8001:16:30","typeDescriptions":{"typeIdentifier":"t_uint64","typeString":"uint64"}},"src":"7983:34:30","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":7872,"nodeType":"IfStatement","src":"7979:146:30","trueBody":{"id":7871,"nodeType":"Block","src":"8019:106:30","statements":[{"expression":{"id":7861,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"expression":{"id":7853,"name":"$","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7834,"src":"8033:1:30","typeDescriptions":{"typeIdentifier":"t_struct$_InitializableStorage_$7663_storage_ptr","typeString":"struct Initializable.InitializableStorage storage pointer"}},"id":7855,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"memberLocation":"8035:12:30","memberName":"_initialized","nodeType":"MemberAccess","referencedDeclaration":7659,"src":"8033:14:30","typeDescriptions":{"typeIdentifier":"t_uint64","typeString":"uint64"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"expression":{"arguments":[{"id":7858,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"8055:6:30","typeDescriptions":{"typeIdentifier":"t_type$_t_uint64_$","typeString":"type(uint64)"},"typeName":{"id":7857,"name":"uint64","nodeType":"ElementaryTypeName","src":"8055:6:30","typeDescriptions":{}}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_type$_t_uint64_$","typeString":"type(uint64)"}],"id":7856,"name":"type","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-27,"src":"8050:4:30","typeDescriptions":{"typeIdentifier":"t_function_metatype_pure$__$returns$__$","typeString":"function () pure"}},"id":7859,"isConstant":false,"isLValue":false,"isPure":true,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"8050:12:30","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_magic_meta_type_t_uint64","typeString":"type(uint64)"}},"id":7860,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberLocation":"8063:3:30","memberName":"max","nodeType":"MemberAccess","src":"8050:16:30","typeDescriptions":{"typeIdentifier":"t_uint64","typeString":"uint64"}},"src":"8033:33:30","typeDescriptions":{"typeIdentifier":"t_uint64","typeString":"uint64"}},"id":7862,"nodeType":"ExpressionStatement","src":"8033:33:30"},{"eventCall":{"arguments":[{"expression":{"arguments":[{"id":7866,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"8102:6:30","typeDescriptions":{"typeIdentifier":"t_type$_t_uint64_$","typeString":"type(uint64)"},"typeName":{"id":7865,"name":"uint64","nodeType":"ElementaryTypeName","src":"8102:6:30","typeDescriptions":{}}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_type$_t_uint64_$","typeString":"type(uint64)"}],"id":7864,"name":"type","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-27,"src":"8097:4:30","typeDescriptions":{"typeIdentifier":"t_function_metatype_pure$__$returns$__$","typeString":"function () pure"}},"id":7867,"isConstant":false,"isLValue":false,"isPure":true,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"8097:12:30","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_magic_meta_type_t_uint64","typeString":"type(uint64)"}},"id":7868,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberLocation":"8110:3:30","memberName":"max","nodeType":"MemberAccess","src":"8097:16:30","typeDescriptions":{"typeIdentifier":"t_uint64","typeString":"uint64"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint64","typeString":"uint64"}],"id":7863,"name":"Initialized","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7677,"src":"8085:11:30","typeDescriptions":{"typeIdentifier":"t_function_event_nonpayable$_t_uint64_$returns$__$","typeString":"function (uint64)"}},"id":7869,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"8085:29:30","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":7870,"nodeType":"EmitStatement","src":"8080:34:30"}]}}]},"documentation":{"id":7829,"nodeType":"StructuredDocumentation","src":"7229:475:30","text":" @dev Locks the contract, preventing any future reinitialization. This cannot be part of an initializer call.\n Calling this in the constructor of a contract will prevent that contract from being initialized or reinitialized\n to any version. It is recommended to use this to lock implementation contracts that are designed to be called\n through proxies.\n Emits an {Initialized} event the first time it is successfully executed."},"id":7874,"implemented":true,"kind":"function","modifiers":[],"name":"_disableInitializers","nameLocation":"7718:20:30","nodeType":"FunctionDefinition","parameters":{"id":7830,"nodeType":"ParameterList","parameters":[],"src":"7738:2:30"},"returnParameters":{"id":7831,"nodeType":"ParameterList","parameters":[],"src":"7758:0:30"},"scope":7920,"src":"7709:422:30","stateMutability":"nonpayable","virtual":true,"visibility":"internal"},{"body":{"id":7884,"nodeType":"Block","src":"8306:63:30","statements":[{"expression":{"expression":{"arguments":[],"expression":{"argumentTypes":[],"id":7880,"name":"_getInitializableStorage","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7919,"src":"8323:24:30","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$__$returns$_t_struct$_InitializableStorage_$7663_storage_ptr_$","typeString":"function () pure returns (struct Initializable.InitializableStorage storage pointer)"}},"id":7881,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"8323:26:30","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_struct$_InitializableStorage_$7663_storage_ptr","typeString":"struct Initializable.InitializableStorage storage pointer"}},"id":7882,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"8350:12:30","memberName":"_initialized","nodeType":"MemberAccess","referencedDeclaration":7659,"src":"8323:39:30","typeDescriptions":{"typeIdentifier":"t_uint64","typeString":"uint64"}},"functionReturnParameters":7879,"id":7883,"nodeType":"Return","src":"8316:46:30"}]},"documentation":{"id":7875,"nodeType":"StructuredDocumentation","src":"8137:99:30","text":" @dev Returns the highest version that has been initialized. See {reinitializer}."},"id":7885,"implemented":true,"kind":"function","modifiers":[],"name":"_getInitializedVersion","nameLocation":"8250:22:30","nodeType":"FunctionDefinition","parameters":{"id":7876,"nodeType":"ParameterList","parameters":[],"src":"8272:2:30"},"returnParameters":{"id":7879,"nodeType":"ParameterList","parameters":[{"constant":false,"id":7878,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":7885,"src":"8298:6:30","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint64","typeString":"uint64"},"typeName":{"id":7877,"name":"uint64","nodeType":"ElementaryTypeName","src":"8298:6:30","typeDescriptions":{"typeIdentifier":"t_uint64","typeString":"uint64"}},"visibility":"internal"}],"src":"8297:8:30"},"scope":7920,"src":"8241:128:30","stateMutability":"view","virtual":false,"visibility":"internal"},{"body":{"id":7895,"nodeType":"Block","src":"8541:64:30","statements":[{"expression":{"expression":{"arguments":[],"expression":{"argumentTypes":[],"id":7891,"name":"_getInitializableStorage","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7919,"src":"8558:24:30","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$__$returns$_t_struct$_InitializableStorage_$7663_storage_ptr_$","typeString":"function () pure returns (struct Initializable.InitializableStorage storage pointer)"}},"id":7892,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"8558:26:30","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_struct$_InitializableStorage_$7663_storage_ptr","typeString":"struct Initializable.InitializableStorage storage pointer"}},"id":7893,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"8585:13:30","memberName":"_initializing","nodeType":"MemberAccess","referencedDeclaration":7662,"src":"8558:40:30","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"functionReturnParameters":7890,"id":7894,"nodeType":"Return","src":"8551:47:30"}]},"documentation":{"id":7886,"nodeType":"StructuredDocumentation","src":"8375:105:30","text":" @dev Returns `true` if the contract is currently initializing. See {onlyInitializing}."},"id":7896,"implemented":true,"kind":"function","modifiers":[],"name":"_isInitializing","nameLocation":"8494:15:30","nodeType":"FunctionDefinition","parameters":{"id":7887,"nodeType":"ParameterList","parameters":[],"src":"8509:2:30"},"returnParameters":{"id":7890,"nodeType":"ParameterList","parameters":[{"constant":false,"id":7889,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":7896,"src":"8535:4:30","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":7888,"name":"bool","nodeType":"ElementaryTypeName","src":"8535:4:30","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"}],"src":"8534:6:30"},"scope":7920,"src":"8485:120:30","stateMutability":"view","virtual":false,"visibility":"internal"},{"body":{"id":7904,"nodeType":"Block","src":"8896:45:30","statements":[{"expression":{"id":7902,"name":"INITIALIZABLE_STORAGE","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7666,"src":"8913:21:30","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"functionReturnParameters":7901,"id":7903,"nodeType":"Return","src":"8906:28:30"}]},"documentation":{"id":7897,"nodeType":"StructuredDocumentation","src":"8611:203:30","text":" @dev Pointer to storage slot. Allows integrators to override it with a custom storage location.\n NOTE: Consider following the ERC-7201 formula to derive storage locations."},"id":7905,"implemented":true,"kind":"function","modifiers":[],"name":"_initializableStorageSlot","nameLocation":"8828:25:30","nodeType":"FunctionDefinition","parameters":{"id":7898,"nodeType":"ParameterList","parameters":[],"src":"8853:2:30"},"returnParameters":{"id":7901,"nodeType":"ParameterList","parameters":[{"constant":false,"id":7900,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":7905,"src":"8887:7:30","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":7899,"name":"bytes32","nodeType":"ElementaryTypeName","src":"8887:7:30","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"}],"src":"8886:9:30"},"scope":7920,"src":"8819:122:30","stateMutability":"pure","virtual":true,"visibility":"internal"},{"body":{"id":7918,"nodeType":"Block","src":"9161:115:30","statements":[{"assignments":[7913],"declarations":[{"constant":false,"id":7913,"mutability":"mutable","name":"slot","nameLocation":"9179:4:30","nodeType":"VariableDeclaration","scope":7918,"src":"9171:12:30","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":7912,"name":"bytes32","nodeType":"ElementaryTypeName","src":"9171:7:30","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"}],"id":7916,"initialValue":{"arguments":[],"expression":{"argumentTypes":[],"id":7914,"name":"_initializableStorageSlot","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7905,"src":"9186:25:30","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$__$returns$_t_bytes32_$","typeString":"function () pure returns (bytes32)"}},"id":7915,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"9186:27:30","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"nodeType":"VariableDeclarationStatement","src":"9171:42:30"},{"AST":{"nativeSrc":"9232:38:30","nodeType":"YulBlock","src":"9232:38:30","statements":[{"nativeSrc":"9246:14:30","nodeType":"YulAssignment","src":"9246:14:30","value":{"name":"slot","nativeSrc":"9256:4:30","nodeType":"YulIdentifier","src":"9256:4:30"},"variableNames":[{"name":"$.slot","nativeSrc":"9246:6:30","nodeType":"YulIdentifier","src":"9246:6:30"}]}]},"evmVersion":"prague","externalReferences":[{"declaration":7910,"isOffset":false,"isSlot":true,"src":"9246:6:30","suffix":"slot","valueSize":1},{"declaration":7913,"isOffset":false,"isSlot":false,"src":"9256:4:30","valueSize":1}],"id":7917,"nodeType":"InlineAssembly","src":"9223:47:30"}]},"documentation":{"id":7906,"nodeType":"StructuredDocumentation","src":"8947:67:30","text":" @dev Returns a pointer to the storage namespace."},"id":7919,"implemented":true,"kind":"function","modifiers":[],"name":"_getInitializableStorage","nameLocation":"9080:24:30","nodeType":"FunctionDefinition","parameters":{"id":7907,"nodeType":"ParameterList","parameters":[],"src":"9104:2:30"},"returnParameters":{"id":7911,"nodeType":"ParameterList","parameters":[{"constant":false,"id":7910,"mutability":"mutable","name":"$","nameLocation":"9158:1:30","nodeType":"VariableDeclaration","scope":7919,"src":"9129:30:30","stateVariable":false,"storageLocation":"storage","typeDescriptions":{"typeIdentifier":"t_struct$_InitializableStorage_$7663_storage_ptr","typeString":"struct Initializable.InitializableStorage"},"typeName":{"id":7909,"nodeType":"UserDefinedTypeName","pathNode":{"id":7908,"name":"InitializableStorage","nameLocations":["9129:20:30"],"nodeType":"IdentifierPath","referencedDeclaration":7663,"src":"9129:20:30"},"referencedDeclaration":7663,"src":"9129:20:30","typeDescriptions":{"typeIdentifier":"t_struct$_InitializableStorage_$7663_storage_ptr","typeString":"struct Initializable.InitializableStorage"}},"visibility":"internal"}],"src":"9128:32:30"},"scope":7920,"src":"9071:205:30","stateMutability":"pure","virtual":false,"visibility":"private"}],"scope":7921,"src":"2349:6929:30","usedErrors":[7669,7672],"usedEvents":[7677]}],"src":"113:9166:30"},"id":30},"@openzeppelin/contracts/proxy/utils/UUPSUpgradeable.sol":{"ast":{"absolutePath":"@openzeppelin/contracts/proxy/utils/UUPSUpgradeable.sol","exportedSymbols":{"ERC1967Utils":[7606],"IERC1822Proxiable":[7137],"UUPSUpgradeable":[8086]},"id":8087,"license":"MIT","nodeType":"SourceUnit","nodes":[{"id":7922,"literals":["solidity","^","0.8",".22"],"nodeType":"PragmaDirective","src":"115:24:31"},{"absolutePath":"@openzeppelin/contracts/interfaces/draft-IERC1822.sol","file":"../../interfaces/draft-IERC1822.sol","id":7924,"nameLocation":"-1:-1:-1","nodeType":"ImportDirective","scope":8087,"sourceUnit":7138,"src":"141:70:31","symbolAliases":[{"foreign":{"id":7923,"name":"IERC1822Proxiable","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7137,"src":"149:17:31","typeDescriptions":{}},"nameLocation":"-1:-1:-1"}],"unitAlias":""},{"absolutePath":"@openzeppelin/contracts/proxy/ERC1967/ERC1967Utils.sol","file":"../ERC1967/ERC1967Utils.sol","id":7926,"nameLocation":"-1:-1:-1","nodeType":"ImportDirective","scope":8087,"sourceUnit":7607,"src":"212:57:31","symbolAliases":[{"foreign":{"id":7925,"name":"ERC1967Utils","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7606,"src":"220:12:31","typeDescriptions":{}},"nameLocation":"-1:-1:-1"}],"unitAlias":""},{"abstract":true,"baseContracts":[{"baseName":{"id":7928,"name":"IERC1822Proxiable","nameLocations":["951:17:31"],"nodeType":"IdentifierPath","referencedDeclaration":7137,"src":"951:17:31"},"id":7929,"nodeType":"InheritanceSpecifier","src":"951:17:31"}],"canonicalName":"UUPSUpgradeable","contractDependencies":[],"contractKind":"contract","documentation":{"id":7927,"nodeType":"StructuredDocumentation","src":"271:642:31","text":" @dev An upgradeability mechanism designed for UUPS proxies. The functions included here can perform an upgrade of an\n {ERC1967Proxy}, when this contract is set as the implementation behind such a proxy.\n A security mechanism ensures that an upgrade does not turn off upgradeability accidentally, although this risk is\n reinstated if the upgrade retains upgradeability but removes the security mechanism, e.g. by replacing\n `UUPSUpgradeable` with a custom implementation of upgrades.\n The {_authorizeUpgrade} function must be overridden to include access restriction to the upgrade mechanism.\n @custom:stateless"},"fullyImplemented":false,"id":8086,"linearizedBaseContracts":[8086,7137],"name":"UUPSUpgradeable","nameLocation":"932:15:31","nodeType":"ContractDefinition","nodes":[{"constant":false,"documentation":{"id":7930,"nodeType":"StructuredDocumentation","src":"975:61:31","text":"@custom:oz-upgrades-unsafe-allow state-variable-immutable"},"id":7936,"mutability":"immutable","name":"__self","nameLocation":"1067:6:31","nodeType":"VariableDeclaration","scope":8086,"src":"1041:48:31","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":7931,"name":"address","nodeType":"ElementaryTypeName","src":"1041:7:31","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"value":{"arguments":[{"id":7934,"name":"this","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-28,"src":"1084:4:31","typeDescriptions":{"typeIdentifier":"t_contract$_UUPSUpgradeable_$8086","typeString":"contract UUPSUpgradeable"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_contract$_UUPSUpgradeable_$8086","typeString":"contract UUPSUpgradeable"}],"id":7933,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"1076:7:31","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":7932,"name":"address","nodeType":"ElementaryTypeName","src":"1076:7:31","typeDescriptions":{}}},"id":7935,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"1076:13:31","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"private"},{"constant":true,"documentation":{"id":7937,"nodeType":"StructuredDocumentation","src":"1096:631:31","text":" @dev The version of the upgrade interface of the contract. If this getter is missing, both `upgradeTo(address)`\n and `upgradeToAndCall(address,bytes)` are present, and `upgradeTo` must be used if no function should be called,\n while `upgradeToAndCall` will invoke the `receive` function if the second argument is the empty byte string.\n If the getter returns `\"5.0.0\"`, only `upgradeToAndCall(address,bytes)` is present, and the second argument must\n be the empty byte string if no function should be called, making it impossible to invoke the `receive` function\n during an upgrade."},"functionSelector":"ad3cb1cc","id":7940,"mutability":"constant","name":"UPGRADE_INTERFACE_VERSION","nameLocation":"1755:25:31","nodeType":"VariableDeclaration","scope":8086,"src":"1732:58:31","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string"},"typeName":{"id":7938,"name":"string","nodeType":"ElementaryTypeName","src":"1732:6:31","typeDescriptions":{"typeIdentifier":"t_string_storage_ptr","typeString":"string"}},"value":{"hexValue":"352e302e30","id":7939,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"1783:7:31","typeDescriptions":{"typeIdentifier":"t_stringliteral_2ade050ecfcf8ae20ae1d10a23573f9d7e0bad85e74a2cf8338a65401e64558c","typeString":"literal_string \"5.0.0\""},"value":"5.0.0"},"visibility":"public"},{"documentation":{"id":7941,"nodeType":"StructuredDocumentation","src":"1797:65:31","text":" @dev The call is from an unauthorized context."},"errorSelector":"e07c8dba","id":7943,"name":"UUPSUnauthorizedCallContext","nameLocation":"1873:27:31","nodeType":"ErrorDefinition","parameters":{"id":7942,"nodeType":"ParameterList","parameters":[],"src":"1900:2:31"},"src":"1867:36:31"},{"documentation":{"id":7944,"nodeType":"StructuredDocumentation","src":"1909:68:31","text":" @dev The storage `slot` is unsupported as a UUID."},"errorSelector":"aa1d49a4","id":7948,"name":"UUPSUnsupportedProxiableUUID","nameLocation":"1988:28:31","nodeType":"ErrorDefinition","parameters":{"id":7947,"nodeType":"ParameterList","parameters":[{"constant":false,"id":7946,"mutability":"mutable","name":"slot","nameLocation":"2025:4:31","nodeType":"VariableDeclaration","scope":7948,"src":"2017:12:31","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":7945,"name":"bytes32","nodeType":"ElementaryTypeName","src":"2017:7:31","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"}],"src":"2016:14:31"},"src":"1982:49:31"},{"body":{"id":7955,"nodeType":"Block","src":"2558:41:31","statements":[{"expression":{"arguments":[],"expression":{"argumentTypes":[],"id":7951,"name":"_checkProxy","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8018,"src":"2568:11:31","typeDescriptions":{"typeIdentifier":"t_function_internal_view$__$returns$__$","typeString":"function () view"}},"id":7952,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"2568:13:31","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":7953,"nodeType":"ExpressionStatement","src":"2568:13:31"},{"id":7954,"nodeType":"PlaceholderStatement","src":"2591:1:31"}]},"documentation":{"id":7949,"nodeType":"StructuredDocumentation","src":"2037:495:31","text":" @dev Check that the execution is being performed through a delegatecall call and that the execution context is\n a proxy contract with an implementation (as defined in ERC-1967) pointing to self. This should only be the case\n for UUPS and transparent proxies that are using the current contract as their implementation. Execution of a\n function through ERC-1167 minimal proxies (clones) would not normally pass this test, but is not guaranteed to\n fail."},"id":7956,"name":"onlyProxy","nameLocation":"2546:9:31","nodeType":"ModifierDefinition","parameters":{"id":7950,"nodeType":"ParameterList","parameters":[],"src":"2555:2:31"},"src":"2537:62:31","virtual":false,"visibility":"internal"},{"body":{"id":7963,"nodeType":"Block","src":"2829:48:31","statements":[{"expression":{"arguments":[],"expression":{"argumentTypes":[],"id":7959,"name":"_checkNotDelegated","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8034,"src":"2839:18:31","typeDescriptions":{"typeIdentifier":"t_function_internal_view$__$returns$__$","typeString":"function () view"}},"id":7960,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"2839:20:31","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":7961,"nodeType":"ExpressionStatement","src":"2839:20:31"},{"id":7962,"nodeType":"PlaceholderStatement","src":"2869:1:31"}]},"documentation":{"id":7957,"nodeType":"StructuredDocumentation","src":"2605:195:31","text":" @dev Check that the execution is not being performed through a delegate call. This allows a function to be\n callable on the implementing contract but not through proxies."},"id":7964,"name":"notDelegated","nameLocation":"2814:12:31","nodeType":"ModifierDefinition","parameters":{"id":7958,"nodeType":"ParameterList","parameters":[],"src":"2826:2:31"},"src":"2805:72:31","virtual":false,"visibility":"internal"},{"baseFunctions":[7136],"body":{"id":7975,"nodeType":"Block","src":"3536:56:31","statements":[{"expression":{"expression":{"id":7972,"name":"ERC1967Utils","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7606,"src":"3553:12:31","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_ERC1967Utils_$7606_$","typeString":"type(library ERC1967Utils)"}},"id":7973,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberLocation":"3566:19:31","memberName":"IMPLEMENTATION_SLOT","nodeType":"MemberAccess","referencedDeclaration":7327,"src":"3553:32:31","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"functionReturnParameters":7971,"id":7974,"nodeType":"Return","src":"3546:39:31"}]},"documentation":{"id":7965,"nodeType":"StructuredDocumentation","src":"2883:578:31","text":" @dev Implementation of the ERC-1822 {proxiableUUID} function. This returns the storage slot used by the\n implementation. It is used to validate the implementation's compatibility when performing an upgrade.\n IMPORTANT: A proxy pointing at a proxiable contract should not be considered proxiable itself, because this risks\n bricking a proxy that upgrades to it, by delegating to itself until out of gas. Thus it is critical that this\n function revert if invoked through a proxy. This is guaranteed by the `notDelegated` modifier."},"functionSelector":"52d1902d","id":7976,"implemented":true,"kind":"function","modifiers":[{"id":7968,"kind":"modifierInvocation","modifierName":{"id":7967,"name":"notDelegated","nameLocations":["3505:12:31"],"nodeType":"IdentifierPath","referencedDeclaration":7964,"src":"3505:12:31"},"nodeType":"ModifierInvocation","src":"3505:12:31"}],"name":"proxiableUUID","nameLocation":"3475:13:31","nodeType":"FunctionDefinition","parameters":{"id":7966,"nodeType":"ParameterList","parameters":[],"src":"3488:2:31"},"returnParameters":{"id":7971,"nodeType":"ParameterList","parameters":[{"constant":false,"id":7970,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":7976,"src":"3527:7:31","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":7969,"name":"bytes32","nodeType":"ElementaryTypeName","src":"3527:7:31","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"}],"src":"3526:9:31"},"scope":8086,"src":"3466:126:31","stateMutability":"view","virtual":false,"visibility":"external"},{"body":{"id":7995,"nodeType":"Block","src":"4016:109:31","statements":[{"expression":{"arguments":[{"id":7987,"name":"newImplementation","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7979,"src":"4044:17:31","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"id":7986,"name":"_authorizeUpgrade","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8040,"src":"4026:17:31","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_address_$returns$__$","typeString":"function (address)"}},"id":7988,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"4026:36:31","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":7989,"nodeType":"ExpressionStatement","src":"4026:36:31"},{"expression":{"arguments":[{"id":7991,"name":"newImplementation","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7979,"src":"4094:17:31","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":7992,"name":"data","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7981,"src":"4113:4:31","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}],"id":7990,"name":"_upgradeToAndCallUUPS","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8085,"src":"4072:21:31","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_address_$_t_bytes_memory_ptr_$returns$__$","typeString":"function (address,bytes memory)"}},"id":7993,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"4072:46:31","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":7994,"nodeType":"ExpressionStatement","src":"4072:46:31"}]},"documentation":{"id":7977,"nodeType":"StructuredDocumentation","src":"3598:308:31","text":" @dev Upgrade the implementation of the proxy to `newImplementation`, and subsequently execute the function call\n encoded in `data`.\n Calls {_authorizeUpgrade}.\n Emits an {Upgraded} event.\n @custom:oz-upgrades-unsafe-allow-reachable delegatecall"},"functionSelector":"4f1ef286","id":7996,"implemented":true,"kind":"function","modifiers":[{"id":7984,"kind":"modifierInvocation","modifierName":{"id":7983,"name":"onlyProxy","nameLocations":["4006:9:31"],"nodeType":"IdentifierPath","referencedDeclaration":7956,"src":"4006:9:31"},"nodeType":"ModifierInvocation","src":"4006:9:31"}],"name":"upgradeToAndCall","nameLocation":"3920:16:31","nodeType":"FunctionDefinition","parameters":{"id":7982,"nodeType":"ParameterList","parameters":[{"constant":false,"id":7979,"mutability":"mutable","name":"newImplementation","nameLocation":"3945:17:31","nodeType":"VariableDeclaration","scope":7996,"src":"3937:25:31","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":7978,"name":"address","nodeType":"ElementaryTypeName","src":"3937:7:31","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":7981,"mutability":"mutable","name":"data","nameLocation":"3977:4:31","nodeType":"VariableDeclaration","scope":7996,"src":"3964:17:31","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes"},"typeName":{"id":7980,"name":"bytes","nodeType":"ElementaryTypeName","src":"3964:5:31","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"}],"src":"3936:46:31"},"returnParameters":{"id":7985,"nodeType":"ParameterList","parameters":[],"src":"4016:0:31"},"scope":8086,"src":"3911:214:31","stateMutability":"payable","virtual":true,"visibility":"public"},{"body":{"id":8017,"nodeType":"Block","src":"4373:267:31","statements":[{"condition":{"commonType":{"typeIdentifier":"t_bool","typeString":"bool"},"id":8011,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"commonType":{"typeIdentifier":"t_address","typeString":"address"},"id":8005,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"arguments":[{"id":8002,"name":"this","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-28,"src":"4408:4:31","typeDescriptions":{"typeIdentifier":"t_contract$_UUPSUpgradeable_$8086","typeString":"contract UUPSUpgradeable"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_contract$_UUPSUpgradeable_$8086","typeString":"contract UUPSUpgradeable"}],"id":8001,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"4400:7:31","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":8000,"name":"address","nodeType":"ElementaryTypeName","src":"4400:7:31","typeDescriptions":{}}},"id":8003,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"4400:13:31","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"id":8004,"name":"__self","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7936,"src":"4417:6:31","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"src":"4400:23:31","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"nodeType":"BinaryOperation","operator":"||","rightExpression":{"commonType":{"typeIdentifier":"t_address","typeString":"address"},"id":8010,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"arguments":[],"expression":{"argumentTypes":[],"expression":{"id":8006,"name":"ERC1967Utils","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7606,"src":"4478:12:31","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_ERC1967Utils_$7606_$","typeString":"type(library ERC1967Utils)"}},"id":8007,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"4491:17:31","memberName":"getImplementation","nodeType":"MemberAccess","referencedDeclaration":7358,"src":"4478:30:31","typeDescriptions":{"typeIdentifier":"t_function_internal_view$__$returns$_t_address_$","typeString":"function () view returns (address)"}},"id":8008,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"4478:32:31","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"BinaryOperation","operator":"!=","rightExpression":{"id":8009,"name":"__self","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7936,"src":"4514:6:31","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"src":"4478:42:31","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"src":"4400:120:31","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":8016,"nodeType":"IfStatement","src":"4383:251:31","trueBody":{"id":8015,"nodeType":"Block","src":"4573:61:31","statements":[{"errorCall":{"arguments":[],"expression":{"argumentTypes":[],"id":8012,"name":"UUPSUnauthorizedCallContext","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7943,"src":"4594:27:31","typeDescriptions":{"typeIdentifier":"t_function_error_pure$__$returns$_t_error_$","typeString":"function () pure returns (error)"}},"id":8013,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"4594:29:31","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_error","typeString":"error"}},"id":8014,"nodeType":"RevertStatement","src":"4587:36:31"}]}}]},"documentation":{"id":7997,"nodeType":"StructuredDocumentation","src":"4131:192:31","text":" @dev Reverts if the execution is not performed via delegatecall or the execution\n context is not of a proxy with an ERC-1967 compliant implementation pointing to self."},"id":8018,"implemented":true,"kind":"function","modifiers":[],"name":"_checkProxy","nameLocation":"4337:11:31","nodeType":"FunctionDefinition","parameters":{"id":7998,"nodeType":"ParameterList","parameters":[],"src":"4348:2:31"},"returnParameters":{"id":7999,"nodeType":"ParameterList","parameters":[],"src":"4373:0:31"},"scope":8086,"src":"4328:312:31","stateMutability":"view","virtual":true,"visibility":"internal"},{"body":{"id":8033,"nodeType":"Block","src":"4809:161:31","statements":[{"condition":{"commonType":{"typeIdentifier":"t_address","typeString":"address"},"id":8027,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"arguments":[{"id":8024,"name":"this","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-28,"src":"4831:4:31","typeDescriptions":{"typeIdentifier":"t_contract$_UUPSUpgradeable_$8086","typeString":"contract UUPSUpgradeable"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_contract$_UUPSUpgradeable_$8086","typeString":"contract UUPSUpgradeable"}],"id":8023,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"4823:7:31","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":8022,"name":"address","nodeType":"ElementaryTypeName","src":"4823:7:31","typeDescriptions":{}}},"id":8025,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"4823:13:31","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"BinaryOperation","operator":"!=","rightExpression":{"id":8026,"name":"__self","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7936,"src":"4840:6:31","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"src":"4823:23:31","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":8032,"nodeType":"IfStatement","src":"4819:145:31","trueBody":{"id":8031,"nodeType":"Block","src":"4848:116:31","statements":[{"errorCall":{"arguments":[],"expression":{"argumentTypes":[],"id":8028,"name":"UUPSUnauthorizedCallContext","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7943,"src":"4924:27:31","typeDescriptions":{"typeIdentifier":"t_function_error_pure$__$returns$_t_error_$","typeString":"function () pure returns (error)"}},"id":8029,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"4924:29:31","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_error","typeString":"error"}},"id":8030,"nodeType":"RevertStatement","src":"4917:36:31"}]}}]},"documentation":{"id":8019,"nodeType":"StructuredDocumentation","src":"4646:106:31","text":" @dev Reverts if the execution is performed via delegatecall.\n See {notDelegated}."},"id":8034,"implemented":true,"kind":"function","modifiers":[],"name":"_checkNotDelegated","nameLocation":"4766:18:31","nodeType":"FunctionDefinition","parameters":{"id":8020,"nodeType":"ParameterList","parameters":[],"src":"4784:2:31"},"returnParameters":{"id":8021,"nodeType":"ParameterList","parameters":[],"src":"4809:0:31"},"scope":8086,"src":"4757:213:31","stateMutability":"view","virtual":true,"visibility":"internal"},{"documentation":{"id":8035,"nodeType":"StructuredDocumentation","src":"4976:372:31","text":" @dev Function that should revert when `msg.sender` is not authorized to upgrade the contract. Called by\n {upgradeToAndCall}.\n Normally, this function will use an xref:access.adoc[access control] modifier such as {Ownable-onlyOwner}.\n ```solidity\n function _authorizeUpgrade(address) internal onlyOwner {}\n ```"},"id":8040,"implemented":false,"kind":"function","modifiers":[],"name":"_authorizeUpgrade","nameLocation":"5362:17:31","nodeType":"FunctionDefinition","parameters":{"id":8038,"nodeType":"ParameterList","parameters":[{"constant":false,"id":8037,"mutability":"mutable","name":"newImplementation","nameLocation":"5388:17:31","nodeType":"VariableDeclaration","scope":8040,"src":"5380:25:31","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":8036,"name":"address","nodeType":"ElementaryTypeName","src":"5380:7:31","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"5379:27:31"},"returnParameters":{"id":8039,"nodeType":"ParameterList","parameters":[],"src":"5423:0:31"},"scope":8086,"src":"5353:71:31","stateMutability":"nonpayable","virtual":true,"visibility":"internal"},{"body":{"id":8084,"nodeType":"Block","src":"5867:453:31","statements":[{"clauses":[{"block":{"id":8073,"nodeType":"Block","src":"5957:212:31","statements":[{"condition":{"commonType":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"id":8059,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":8056,"name":"slot","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8054,"src":"5975:4:31","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"nodeType":"BinaryOperation","operator":"!=","rightExpression":{"expression":{"id":8057,"name":"ERC1967Utils","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7606,"src":"5983:12:31","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_ERC1967Utils_$7606_$","typeString":"type(library ERC1967Utils)"}},"id":8058,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberLocation":"5996:19:31","memberName":"IMPLEMENTATION_SLOT","nodeType":"MemberAccess","referencedDeclaration":7327,"src":"5983:32:31","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"src":"5975:40:31","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":8065,"nodeType":"IfStatement","src":"5971:120:31","trueBody":{"id":8064,"nodeType":"Block","src":"6017:74:31","statements":[{"errorCall":{"arguments":[{"id":8061,"name":"slot","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8054,"src":"6071:4:31","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes32","typeString":"bytes32"}],"id":8060,"name":"UUPSUnsupportedProxiableUUID","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7948,"src":"6042:28:31","typeDescriptions":{"typeIdentifier":"t_function_error_pure$_t_bytes32_$returns$_t_error_$","typeString":"function (bytes32) pure returns (error)"}},"id":8062,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"6042:34:31","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_error","typeString":"error"}},"id":8063,"nodeType":"RevertStatement","src":"6035:41:31"}]}},{"expression":{"arguments":[{"id":8069,"name":"newImplementation","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8043,"src":"6134:17:31","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":8070,"name":"data","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8045,"src":"6153:4:31","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":8066,"name":"ERC1967Utils","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7606,"src":"6104:12:31","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_ERC1967Utils_$7606_$","typeString":"type(library ERC1967Utils)"}},"id":8068,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"6117:16:31","memberName":"upgradeToAndCall","nodeType":"MemberAccess","referencedDeclaration":7421,"src":"6104:29:31","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_address_$_t_bytes_memory_ptr_$returns$__$","typeString":"function (address,bytes memory)"}},"id":8071,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"6104:54:31","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":8072,"nodeType":"ExpressionStatement","src":"6104:54:31"}]},"errorName":"","id":8074,"nodeType":"TryCatchClause","parameters":{"id":8055,"nodeType":"ParameterList","parameters":[{"constant":false,"id":8054,"mutability":"mutable","name":"slot","nameLocation":"5951:4:31","nodeType":"VariableDeclaration","scope":8074,"src":"5943:12:31","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":8053,"name":"bytes32","nodeType":"ElementaryTypeName","src":"5943:7:31","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"}],"src":"5942:14:31"},"src":"5934:235:31"},{"block":{"id":8081,"nodeType":"Block","src":"6176:138:31","statements":[{"errorCall":{"arguments":[{"id":8078,"name":"newImplementation","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8043,"src":"6285:17:31","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"expression":{"id":8075,"name":"ERC1967Utils","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7606,"src":"6243:12:31","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_ERC1967Utils_$7606_$","typeString":"type(library ERC1967Utils)"}},"id":8077,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"6256:28:31","memberName":"ERC1967InvalidImplementation","nodeType":"MemberAccess","referencedDeclaration":7332,"src":"6243:41:31","typeDescriptions":{"typeIdentifier":"t_function_error_pure$_t_address_$returns$_t_error_$","typeString":"function (address) pure returns (error)"}},"id":8079,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"6243:60:31","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_error","typeString":"error"}},"id":8080,"nodeType":"RevertStatement","src":"6236:67:31"}]},"errorName":"","id":8082,"nodeType":"TryCatchClause","src":"6170:144:31"}],"externalCall":{"arguments":[],"expression":{"argumentTypes":[],"expression":{"arguments":[{"id":8049,"name":"newImplementation","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8043,"src":"5899:17:31","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"id":8048,"name":"IERC1822Proxiable","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7137,"src":"5881:17:31","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_IERC1822Proxiable_$7137_$","typeString":"type(contract IERC1822Proxiable)"}},"id":8050,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"5881:36:31","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_contract$_IERC1822Proxiable_$7137","typeString":"contract IERC1822Proxiable"}},"id":8051,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"5918:13:31","memberName":"proxiableUUID","nodeType":"MemberAccess","referencedDeclaration":7136,"src":"5881:50:31","typeDescriptions":{"typeIdentifier":"t_function_external_view$__$returns$_t_bytes32_$","typeString":"function () view external returns (bytes32)"}},"id":8052,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"5881:52:31","tryCall":true,"typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"id":8083,"nodeType":"TryStatement","src":"5877:437:31"}]},"documentation":{"id":8041,"nodeType":"StructuredDocumentation","src":"5430:347:31","text":" @dev Performs an implementation upgrade with a security check for UUPS proxies, and additional setup call.\n As a security check, {proxiableUUID} is invoked in the new implementation, and the return value\n is expected to be the implementation slot in ERC-1967.\n Emits an {IERC1967-Upgraded} event."},"id":8085,"implemented":true,"kind":"function","modifiers":[],"name":"_upgradeToAndCallUUPS","nameLocation":"5791:21:31","nodeType":"FunctionDefinition","parameters":{"id":8046,"nodeType":"ParameterList","parameters":[{"constant":false,"id":8043,"mutability":"mutable","name":"newImplementation","nameLocation":"5821:17:31","nodeType":"VariableDeclaration","scope":8085,"src":"5813:25:31","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":8042,"name":"address","nodeType":"ElementaryTypeName","src":"5813:7:31","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":8045,"mutability":"mutable","name":"data","nameLocation":"5853:4:31","nodeType":"VariableDeclaration","scope":8085,"src":"5840:17:31","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes"},"typeName":{"id":8044,"name":"bytes","nodeType":"ElementaryTypeName","src":"5840:5:31","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"}],"src":"5812:46:31"},"returnParameters":{"id":8047,"nodeType":"ParameterList","parameters":[],"src":"5867:0:31"},"scope":8086,"src":"5782:538:31","stateMutability":"nonpayable","virtual":false,"visibility":"private"}],"scope":8087,"src":"914:5408:31","usedErrors":[7332,7345,7943,7948,9878,10299],"usedEvents":[6936]}],"src":"115:6208:31"},"id":31},"@openzeppelin/contracts/token/ERC20/ERC20.sol":{"ast":{"absolutePath":"@openzeppelin/contracts/token/ERC20/ERC20.sol","exportedSymbols":{"Context":[10286],"ERC20":[8601],"IERC20":[8679],"IERC20Errors":[7179],"IERC20Metadata":[9411]},"id":8602,"license":"MIT","nodeType":"SourceUnit","nodes":[{"id":8088,"literals":["solidity","^","0.8",".20"],"nodeType":"PragmaDirective","src":"105:24:32"},{"absolutePath":"@openzeppelin/contracts/token/ERC20/IERC20.sol","file":"./IERC20.sol","id":8090,"nameLocation":"-1:-1:-1","nodeType":"ImportDirective","scope":8602,"sourceUnit":8680,"src":"131:36:32","symbolAliases":[{"foreign":{"id":8089,"name":"IERC20","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8679,"src":"139:6:32","typeDescriptions":{}},"nameLocation":"-1:-1:-1"}],"unitAlias":""},{"absolutePath":"@openzeppelin/contracts/token/ERC20/extensions/IERC20Metadata.sol","file":"./extensions/IERC20Metadata.sol","id":8092,"nameLocation":"-1:-1:-1","nodeType":"ImportDirective","scope":8602,"sourceUnit":9412,"src":"168:63:32","symbolAliases":[{"foreign":{"id":8091,"name":"IERC20Metadata","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9411,"src":"176:14:32","typeDescriptions":{}},"nameLocation":"-1:-1:-1"}],"unitAlias":""},{"absolutePath":"@openzeppelin/contracts/utils/Context.sol","file":"../../utils/Context.sol","id":8094,"nameLocation":"-1:-1:-1","nodeType":"ImportDirective","scope":8602,"sourceUnit":10287,"src":"232:48:32","symbolAliases":[{"foreign":{"id":8093,"name":"Context","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10286,"src":"240:7:32","typeDescriptions":{}},"nameLocation":"-1:-1:-1"}],"unitAlias":""},{"absolutePath":"@openzeppelin/contracts/interfaces/draft-IERC6093.sol","file":"../../interfaces/draft-IERC6093.sol","id":8096,"nameLocation":"-1:-1:-1","nodeType":"ImportDirective","scope":8602,"sourceUnit":7275,"src":"281:65:32","symbolAliases":[{"foreign":{"id":8095,"name":"IERC20Errors","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7179,"src":"289:12:32","typeDescriptions":{}},"nameLocation":"-1:-1:-1"}],"unitAlias":""},{"abstract":true,"baseContracts":[{"baseName":{"id":8098,"name":"Context","nameLocations":["1133:7:32"],"nodeType":"IdentifierPath","referencedDeclaration":10286,"src":"1133:7:32"},"id":8099,"nodeType":"InheritanceSpecifier","src":"1133:7:32"},{"baseName":{"id":8100,"name":"IERC20","nameLocations":["1142:6:32"],"nodeType":"IdentifierPath","referencedDeclaration":8679,"src":"1142:6:32"},"id":8101,"nodeType":"InheritanceSpecifier","src":"1142:6:32"},{"baseName":{"id":8102,"name":"IERC20Metadata","nameLocations":["1150:14:32"],"nodeType":"IdentifierPath","referencedDeclaration":9411,"src":"1150:14:32"},"id":8103,"nodeType":"InheritanceSpecifier","src":"1150:14:32"},{"baseName":{"id":8104,"name":"IERC20Errors","nameLocations":["1166:12:32"],"nodeType":"IdentifierPath","referencedDeclaration":7179,"src":"1166:12:32"},"id":8105,"nodeType":"InheritanceSpecifier","src":"1166:12:32"}],"canonicalName":"ERC20","contractDependencies":[],"contractKind":"contract","documentation":{"id":8097,"nodeType":"StructuredDocumentation","src":"348:757:32","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 TIP: For a detailed writeup see our guide\n https://forum.openzeppelin.com/t/how-to-implement-erc20-supply-mechanisms/226[How\n to implement supply mechanisms].\n The default value of {decimals} is 18. To change this, you should override\n this function so it returns a different value.\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 ERC-20\n applications."},"fullyImplemented":true,"id":8601,"linearizedBaseContracts":[8601,7179,9411,8679,10286],"name":"ERC20","nameLocation":"1124:5:32","nodeType":"ContractDefinition","nodes":[{"constant":false,"id":8109,"mutability":"mutable","name":"_balances","nameLocation":"1229:9:32","nodeType":"VariableDeclaration","scope":8601,"src":"1185:53:32","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_uint256_$","typeString":"mapping(address => uint256)"},"typeName":{"id":8108,"keyName":"account","keyNameLocation":"1201:7:32","keyType":{"id":8106,"name":"address","nodeType":"ElementaryTypeName","src":"1193:7:32","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"Mapping","src":"1185:35:32","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_uint256_$","typeString":"mapping(address => uint256)"},"valueName":"","valueNameLocation":"-1:-1:-1","valueType":{"id":8107,"name":"uint256","nodeType":"ElementaryTypeName","src":"1212:7:32","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}},"visibility":"private"},{"constant":false,"id":8115,"mutability":"mutable","name":"_allowances","nameLocation":"1317:11:32","nodeType":"VariableDeclaration","scope":8601,"src":"1245:83:32","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_mapping$_t_address_$_t_uint256_$_$","typeString":"mapping(address => mapping(address => uint256))"},"typeName":{"id":8114,"keyName":"account","keyNameLocation":"1261:7:32","keyType":{"id":8110,"name":"address","nodeType":"ElementaryTypeName","src":"1253:7:32","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"Mapping","src":"1245:63:32","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_mapping$_t_address_$_t_uint256_$_$","typeString":"mapping(address => mapping(address => uint256))"},"valueName":"","valueNameLocation":"-1:-1:-1","valueType":{"id":8113,"keyName":"spender","keyNameLocation":"1288:7:32","keyType":{"id":8111,"name":"address","nodeType":"ElementaryTypeName","src":"1280:7:32","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"Mapping","src":"1272:35:32","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_uint256_$","typeString":"mapping(address => uint256)"},"valueName":"","valueNameLocation":"-1:-1:-1","valueType":{"id":8112,"name":"uint256","nodeType":"ElementaryTypeName","src":"1299:7:32","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}}},"visibility":"private"},{"constant":false,"id":8117,"mutability":"mutable","name":"_totalSupply","nameLocation":"1351:12:32","nodeType":"VariableDeclaration","scope":8601,"src":"1335:28:32","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":8116,"name":"uint256","nodeType":"ElementaryTypeName","src":"1335:7:32","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"private"},{"constant":false,"id":8119,"mutability":"mutable","name":"_name","nameLocation":"1385:5:32","nodeType":"VariableDeclaration","scope":8601,"src":"1370:20:32","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_string_storage","typeString":"string"},"typeName":{"id":8118,"name":"string","nodeType":"ElementaryTypeName","src":"1370:6:32","typeDescriptions":{"typeIdentifier":"t_string_storage_ptr","typeString":"string"}},"visibility":"private"},{"constant":false,"id":8121,"mutability":"mutable","name":"_symbol","nameLocation":"1411:7:32","nodeType":"VariableDeclaration","scope":8601,"src":"1396:22:32","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_string_storage","typeString":"string"},"typeName":{"id":8120,"name":"string","nodeType":"ElementaryTypeName","src":"1396:6:32","typeDescriptions":{"typeIdentifier":"t_string_storage_ptr","typeString":"string"}},"visibility":"private"},{"body":{"id":8137,"nodeType":"Block","src":"1638:57:32","statements":[{"expression":{"id":8131,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":8129,"name":"_name","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8119,"src":"1648:5:32","typeDescriptions":{"typeIdentifier":"t_string_storage","typeString":"string storage ref"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"id":8130,"name":"name_","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8124,"src":"1656:5:32","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"}},"src":"1648:13:32","typeDescriptions":{"typeIdentifier":"t_string_storage","typeString":"string storage ref"}},"id":8132,"nodeType":"ExpressionStatement","src":"1648:13:32"},{"expression":{"id":8135,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":8133,"name":"_symbol","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8121,"src":"1671:7:32","typeDescriptions":{"typeIdentifier":"t_string_storage","typeString":"string storage ref"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"id":8134,"name":"symbol_","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8126,"src":"1681:7:32","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"}},"src":"1671:17:32","typeDescriptions":{"typeIdentifier":"t_string_storage","typeString":"string storage ref"}},"id":8136,"nodeType":"ExpressionStatement","src":"1671:17:32"}]},"documentation":{"id":8122,"nodeType":"StructuredDocumentation","src":"1425:152:32","text":" @dev Sets the values for {name} and {symbol}.\n Both values are immutable: they can only be set once during construction."},"id":8138,"implemented":true,"kind":"constructor","modifiers":[],"name":"","nameLocation":"-1:-1:-1","nodeType":"FunctionDefinition","parameters":{"id":8127,"nodeType":"ParameterList","parameters":[{"constant":false,"id":8124,"mutability":"mutable","name":"name_","nameLocation":"1608:5:32","nodeType":"VariableDeclaration","scope":8138,"src":"1594:19:32","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string"},"typeName":{"id":8123,"name":"string","nodeType":"ElementaryTypeName","src":"1594:6:32","typeDescriptions":{"typeIdentifier":"t_string_storage_ptr","typeString":"string"}},"visibility":"internal"},{"constant":false,"id":8126,"mutability":"mutable","name":"symbol_","nameLocation":"1629:7:32","nodeType":"VariableDeclaration","scope":8138,"src":"1615:21:32","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string"},"typeName":{"id":8125,"name":"string","nodeType":"ElementaryTypeName","src":"1615:6:32","typeDescriptions":{"typeIdentifier":"t_string_storage_ptr","typeString":"string"}},"visibility":"internal"}],"src":"1593:44:32"},"returnParameters":{"id":8128,"nodeType":"ParameterList","parameters":[],"src":"1638:0:32"},"scope":8601,"src":"1582:113:32","stateMutability":"nonpayable","virtual":false,"visibility":"internal"},{"baseFunctions":[9398],"body":{"id":8146,"nodeType":"Block","src":"1820:29:32","statements":[{"expression":{"id":8144,"name":"_name","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8119,"src":"1837:5:32","typeDescriptions":{"typeIdentifier":"t_string_storage","typeString":"string storage ref"}},"functionReturnParameters":8143,"id":8145,"nodeType":"Return","src":"1830:12:32"}]},"documentation":{"id":8139,"nodeType":"StructuredDocumentation","src":"1701:54:32","text":" @dev Returns the name of the token."},"functionSelector":"06fdde03","id":8147,"implemented":true,"kind":"function","modifiers":[],"name":"name","nameLocation":"1769:4:32","nodeType":"FunctionDefinition","parameters":{"id":8140,"nodeType":"ParameterList","parameters":[],"src":"1773:2:32"},"returnParameters":{"id":8143,"nodeType":"ParameterList","parameters":[{"constant":false,"id":8142,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":8147,"src":"1805:13:32","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string"},"typeName":{"id":8141,"name":"string","nodeType":"ElementaryTypeName","src":"1805:6:32","typeDescriptions":{"typeIdentifier":"t_string_storage_ptr","typeString":"string"}},"visibility":"internal"}],"src":"1804:15:32"},"scope":8601,"src":"1760:89:32","stateMutability":"view","virtual":true,"visibility":"public"},{"baseFunctions":[9404],"body":{"id":8155,"nodeType":"Block","src":"2024:31:32","statements":[{"expression":{"id":8153,"name":"_symbol","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8121,"src":"2041:7:32","typeDescriptions":{"typeIdentifier":"t_string_storage","typeString":"string storage ref"}},"functionReturnParameters":8152,"id":8154,"nodeType":"Return","src":"2034:14:32"}]},"documentation":{"id":8148,"nodeType":"StructuredDocumentation","src":"1855:102:32","text":" @dev Returns the symbol of the token, usually a shorter version of the\n name."},"functionSelector":"95d89b41","id":8156,"implemented":true,"kind":"function","modifiers":[],"name":"symbol","nameLocation":"1971:6:32","nodeType":"FunctionDefinition","parameters":{"id":8149,"nodeType":"ParameterList","parameters":[],"src":"1977:2:32"},"returnParameters":{"id":8152,"nodeType":"ParameterList","parameters":[{"constant":false,"id":8151,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":8156,"src":"2009:13:32","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string"},"typeName":{"id":8150,"name":"string","nodeType":"ElementaryTypeName","src":"2009:6:32","typeDescriptions":{"typeIdentifier":"t_string_storage_ptr","typeString":"string"}},"visibility":"internal"}],"src":"2008:15:32"},"scope":8601,"src":"1962:93:32","stateMutability":"view","virtual":true,"visibility":"public"},{"baseFunctions":[9410],"body":{"id":8164,"nodeType":"Block","src":"2744:26:32","statements":[{"expression":{"hexValue":"3138","id":8162,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"2761:2:32","typeDescriptions":{"typeIdentifier":"t_rational_18_by_1","typeString":"int_const 18"},"value":"18"},"functionReturnParameters":8161,"id":8163,"nodeType":"Return","src":"2754:9:32"}]},"documentation":{"id":8157,"nodeType":"StructuredDocumentation","src":"2061:622:32","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 default value returned by this function, unless\n it's 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":8165,"implemented":true,"kind":"function","modifiers":[],"name":"decimals","nameLocation":"2697:8:32","nodeType":"FunctionDefinition","parameters":{"id":8158,"nodeType":"ParameterList","parameters":[],"src":"2705:2:32"},"returnParameters":{"id":8161,"nodeType":"ParameterList","parameters":[{"constant":false,"id":8160,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":8165,"src":"2737:5:32","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"},"typeName":{"id":8159,"name":"uint8","nodeType":"ElementaryTypeName","src":"2737:5:32","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}},"visibility":"internal"}],"src":"2736:7:32"},"scope":8601,"src":"2688:82:32","stateMutability":"view","virtual":true,"visibility":"public"},{"baseFunctions":[8628],"body":{"id":8173,"nodeType":"Block","src":"2864:36:32","statements":[{"expression":{"id":8171,"name":"_totalSupply","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8117,"src":"2881:12:32","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"functionReturnParameters":8170,"id":8172,"nodeType":"Return","src":"2874:19:32"}]},"documentation":{"id":8166,"nodeType":"StructuredDocumentation","src":"2776:22:32","text":"@inheritdoc IERC20"},"functionSelector":"18160ddd","id":8174,"implemented":true,"kind":"function","modifiers":[],"name":"totalSupply","nameLocation":"2812:11:32","nodeType":"FunctionDefinition","parameters":{"id":8167,"nodeType":"ParameterList","parameters":[],"src":"2823:2:32"},"returnParameters":{"id":8170,"nodeType":"ParameterList","parameters":[{"constant":false,"id":8169,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":8174,"src":"2855:7:32","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":8168,"name":"uint256","nodeType":"ElementaryTypeName","src":"2855:7:32","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"2854:9:32"},"scope":8601,"src":"2803:97:32","stateMutability":"view","virtual":true,"visibility":"public"},{"baseFunctions":[8636],"body":{"id":8186,"nodeType":"Block","src":"3007:42:32","statements":[{"expression":{"baseExpression":{"id":8182,"name":"_balances","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8109,"src":"3024:9:32","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_uint256_$","typeString":"mapping(address => uint256)"}},"id":8184,"indexExpression":{"id":8183,"name":"account","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8177,"src":"3034:7:32","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"3024:18:32","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"functionReturnParameters":8181,"id":8185,"nodeType":"Return","src":"3017:25:32"}]},"documentation":{"id":8175,"nodeType":"StructuredDocumentation","src":"2906:22:32","text":"@inheritdoc IERC20"},"functionSelector":"70a08231","id":8187,"implemented":true,"kind":"function","modifiers":[],"name":"balanceOf","nameLocation":"2942:9:32","nodeType":"FunctionDefinition","parameters":{"id":8178,"nodeType":"ParameterList","parameters":[{"constant":false,"id":8177,"mutability":"mutable","name":"account","nameLocation":"2960:7:32","nodeType":"VariableDeclaration","scope":8187,"src":"2952:15:32","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":8176,"name":"address","nodeType":"ElementaryTypeName","src":"2952:7:32","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"2951:17:32"},"returnParameters":{"id":8181,"nodeType":"ParameterList","parameters":[{"constant":false,"id":8180,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":8187,"src":"2998:7:32","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":8179,"name":"uint256","nodeType":"ElementaryTypeName","src":"2998:7:32","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"2997:9:32"},"scope":8601,"src":"2933:116:32","stateMutability":"view","virtual":true,"visibility":"public"},{"baseFunctions":[8646],"body":{"id":8210,"nodeType":"Block","src":"3319:103:32","statements":[{"assignments":[8198],"declarations":[{"constant":false,"id":8198,"mutability":"mutable","name":"owner","nameLocation":"3337:5:32","nodeType":"VariableDeclaration","scope":8210,"src":"3329:13:32","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":8197,"name":"address","nodeType":"ElementaryTypeName","src":"3329:7:32","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"id":8201,"initialValue":{"arguments":[],"expression":{"argumentTypes":[],"id":8199,"name":"_msgSender","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10268,"src":"3345:10:32","typeDescriptions":{"typeIdentifier":"t_function_internal_view$__$returns$_t_address_$","typeString":"function () view returns (address)"}},"id":8200,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"3345:12:32","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"VariableDeclarationStatement","src":"3329:28:32"},{"expression":{"arguments":[{"id":8203,"name":"owner","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8198,"src":"3377:5:32","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":8204,"name":"to","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8190,"src":"3384:2:32","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":8205,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8192,"src":"3388:5: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":8202,"name":"_transfer","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8331,"src":"3367:9:32","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_address_$_t_address_$_t_uint256_$returns$__$","typeString":"function (address,address,uint256)"}},"id":8206,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"3367:27:32","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":8207,"nodeType":"ExpressionStatement","src":"3367:27:32"},{"expression":{"hexValue":"74727565","id":8208,"isConstant":false,"isLValue":false,"isPure":true,"kind":"bool","lValueRequested":false,"nodeType":"Literal","src":"3411:4:32","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"value":"true"},"functionReturnParameters":8196,"id":8209,"nodeType":"Return","src":"3404:11:32"}]},"documentation":{"id":8188,"nodeType":"StructuredDocumentation","src":"3055:184:32","text":" @dev See {IERC20-transfer}.\n Requirements:\n - `to` cannot be the zero address.\n - the caller must have a balance of at least `value`."},"functionSelector":"a9059cbb","id":8211,"implemented":true,"kind":"function","modifiers":[],"name":"transfer","nameLocation":"3253:8:32","nodeType":"FunctionDefinition","parameters":{"id":8193,"nodeType":"ParameterList","parameters":[{"constant":false,"id":8190,"mutability":"mutable","name":"to","nameLocation":"3270:2:32","nodeType":"VariableDeclaration","scope":8211,"src":"3262:10:32","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":8189,"name":"address","nodeType":"ElementaryTypeName","src":"3262:7:32","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":8192,"mutability":"mutable","name":"value","nameLocation":"3282:5:32","nodeType":"VariableDeclaration","scope":8211,"src":"3274:13:32","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":8191,"name":"uint256","nodeType":"ElementaryTypeName","src":"3274:7:32","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"3261:27:32"},"returnParameters":{"id":8196,"nodeType":"ParameterList","parameters":[{"constant":false,"id":8195,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":8211,"src":"3313:4:32","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":8194,"name":"bool","nodeType":"ElementaryTypeName","src":"3313:4:32","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"}],"src":"3312:6:32"},"scope":8601,"src":"3244:178:32","stateMutability":"nonpayable","virtual":true,"visibility":"public"},{"baseFunctions":[8656],"body":{"id":8227,"nodeType":"Block","src":"3544:51:32","statements":[{"expression":{"baseExpression":{"baseExpression":{"id":8221,"name":"_allowances","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8115,"src":"3561:11:32","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_mapping$_t_address_$_t_uint256_$_$","typeString":"mapping(address => mapping(address => uint256))"}},"id":8223,"indexExpression":{"id":8222,"name":"owner","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8214,"src":"3573:5:32","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"3561:18:32","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_uint256_$","typeString":"mapping(address => uint256)"}},"id":8225,"indexExpression":{"id":8224,"name":"spender","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8216,"src":"3580:7:32","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"3561:27:32","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"functionReturnParameters":8220,"id":8226,"nodeType":"Return","src":"3554:34:32"}]},"documentation":{"id":8212,"nodeType":"StructuredDocumentation","src":"3428:22:32","text":"@inheritdoc IERC20"},"functionSelector":"dd62ed3e","id":8228,"implemented":true,"kind":"function","modifiers":[],"name":"allowance","nameLocation":"3464:9:32","nodeType":"FunctionDefinition","parameters":{"id":8217,"nodeType":"ParameterList","parameters":[{"constant":false,"id":8214,"mutability":"mutable","name":"owner","nameLocation":"3482:5:32","nodeType":"VariableDeclaration","scope":8228,"src":"3474:13:32","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":8213,"name":"address","nodeType":"ElementaryTypeName","src":"3474:7:32","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":8216,"mutability":"mutable","name":"spender","nameLocation":"3497:7:32","nodeType":"VariableDeclaration","scope":8228,"src":"3489:15:32","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":8215,"name":"address","nodeType":"ElementaryTypeName","src":"3489:7:32","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"3473:32:32"},"returnParameters":{"id":8220,"nodeType":"ParameterList","parameters":[{"constant":false,"id":8219,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":8228,"src":"3535:7:32","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":8218,"name":"uint256","nodeType":"ElementaryTypeName","src":"3535:7:32","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"3534:9:32"},"scope":8601,"src":"3455:140:32","stateMutability":"view","virtual":true,"visibility":"public"},{"baseFunctions":[8666],"body":{"id":8251,"nodeType":"Block","src":"3981:107:32","statements":[{"assignments":[8239],"declarations":[{"constant":false,"id":8239,"mutability":"mutable","name":"owner","nameLocation":"3999:5:32","nodeType":"VariableDeclaration","scope":8251,"src":"3991:13:32","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":8238,"name":"address","nodeType":"ElementaryTypeName","src":"3991:7:32","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"id":8242,"initialValue":{"arguments":[],"expression":{"argumentTypes":[],"id":8240,"name":"_msgSender","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10268,"src":"4007:10:32","typeDescriptions":{"typeIdentifier":"t_function_internal_view$__$returns$_t_address_$","typeString":"function () view returns (address)"}},"id":8241,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"4007:12:32","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"VariableDeclarationStatement","src":"3991:28:32"},{"expression":{"arguments":[{"id":8244,"name":"owner","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8239,"src":"4038:5:32","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":8245,"name":"spender","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8231,"src":"4045:7:32","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":8246,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8233,"src":"4054:5: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":8243,"name":"_approve","nodeType":"Identifier","overloadedDeclarations":[8492,8552],"referencedDeclaration":8492,"src":"4029:8:32","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_address_$_t_address_$_t_uint256_$returns$__$","typeString":"function (address,address,uint256)"}},"id":8247,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"4029:31:32","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":8248,"nodeType":"ExpressionStatement","src":"4029:31:32"},{"expression":{"hexValue":"74727565","id":8249,"isConstant":false,"isLValue":false,"isPure":true,"kind":"bool","lValueRequested":false,"nodeType":"Literal","src":"4077:4:32","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"value":"true"},"functionReturnParameters":8237,"id":8250,"nodeType":"Return","src":"4070:11:32"}]},"documentation":{"id":8229,"nodeType":"StructuredDocumentation","src":"3601:296:32","text":" @dev See {IERC20-approve}.\n NOTE: If `value` is the maximum `uint256`, the allowance is not updated on\n `transferFrom`. This is semantically equivalent to an infinite approval.\n Requirements:\n - `spender` cannot be the zero address."},"functionSelector":"095ea7b3","id":8252,"implemented":true,"kind":"function","modifiers":[],"name":"approve","nameLocation":"3911:7:32","nodeType":"FunctionDefinition","parameters":{"id":8234,"nodeType":"ParameterList","parameters":[{"constant":false,"id":8231,"mutability":"mutable","name":"spender","nameLocation":"3927:7:32","nodeType":"VariableDeclaration","scope":8252,"src":"3919:15:32","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":8230,"name":"address","nodeType":"ElementaryTypeName","src":"3919:7:32","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":8233,"mutability":"mutable","name":"value","nameLocation":"3944:5:32","nodeType":"VariableDeclaration","scope":8252,"src":"3936:13:32","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":8232,"name":"uint256","nodeType":"ElementaryTypeName","src":"3936:7:32","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"3918:32:32"},"returnParameters":{"id":8237,"nodeType":"ParameterList","parameters":[{"constant":false,"id":8236,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":8252,"src":"3975:4:32","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":8235,"name":"bool","nodeType":"ElementaryTypeName","src":"3975:4:32","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"}],"src":"3974:6:32"},"scope":8601,"src":"3902:186:32","stateMutability":"nonpayable","virtual":true,"visibility":"public"},{"baseFunctions":[8678],"body":{"id":8283,"nodeType":"Block","src":"4773:151:32","statements":[{"assignments":[8265],"declarations":[{"constant":false,"id":8265,"mutability":"mutable","name":"spender","nameLocation":"4791:7:32","nodeType":"VariableDeclaration","scope":8283,"src":"4783:15:32","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":8264,"name":"address","nodeType":"ElementaryTypeName","src":"4783:7:32","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"id":8268,"initialValue":{"arguments":[],"expression":{"argumentTypes":[],"id":8266,"name":"_msgSender","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10268,"src":"4801:10:32","typeDescriptions":{"typeIdentifier":"t_function_internal_view$__$returns$_t_address_$","typeString":"function () view returns (address)"}},"id":8267,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"4801:12:32","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"VariableDeclarationStatement","src":"4783:30:32"},{"expression":{"arguments":[{"id":8270,"name":"from","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8255,"src":"4839:4:32","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":8271,"name":"spender","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8265,"src":"4845:7:32","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":8272,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8259,"src":"4854:5: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":8269,"name":"_spendAllowance","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8600,"src":"4823:15:32","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_address_$_t_address_$_t_uint256_$returns$__$","typeString":"function (address,address,uint256)"}},"id":8273,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"4823:37:32","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":8274,"nodeType":"ExpressionStatement","src":"4823:37:32"},{"expression":{"arguments":[{"id":8276,"name":"from","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8255,"src":"4880:4:32","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":8277,"name":"to","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8257,"src":"4886:2:32","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":8278,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8259,"src":"4890:5: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":8275,"name":"_transfer","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8331,"src":"4870:9:32","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_address_$_t_address_$_t_uint256_$returns$__$","typeString":"function (address,address,uint256)"}},"id":8279,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"4870:26:32","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":8280,"nodeType":"ExpressionStatement","src":"4870:26:32"},{"expression":{"hexValue":"74727565","id":8281,"isConstant":false,"isLValue":false,"isPure":true,"kind":"bool","lValueRequested":false,"nodeType":"Literal","src":"4913:4:32","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"value":"true"},"functionReturnParameters":8263,"id":8282,"nodeType":"Return","src":"4906:11:32"}]},"documentation":{"id":8253,"nodeType":"StructuredDocumentation","src":"4094:581:32","text":" @dev See {IERC20-transferFrom}.\n Skips emitting an {Approval} event indicating an allowance update. This is not\n required by the ERC. See {xref-ERC20-_approve-address-address-uint256-bool-}[_approve].\n NOTE: Does not update the allowance if the current allowance\n is the maximum `uint256`.\n Requirements:\n - `from` and `to` cannot be the zero address.\n - `from` must have a balance of at least `value`.\n - the caller must have allowance for ``from``'s tokens of at least\n `value`."},"functionSelector":"23b872dd","id":8284,"implemented":true,"kind":"function","modifiers":[],"name":"transferFrom","nameLocation":"4689:12:32","nodeType":"FunctionDefinition","parameters":{"id":8260,"nodeType":"ParameterList","parameters":[{"constant":false,"id":8255,"mutability":"mutable","name":"from","nameLocation":"4710:4:32","nodeType":"VariableDeclaration","scope":8284,"src":"4702:12:32","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":8254,"name":"address","nodeType":"ElementaryTypeName","src":"4702:7:32","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":8257,"mutability":"mutable","name":"to","nameLocation":"4724:2:32","nodeType":"VariableDeclaration","scope":8284,"src":"4716:10:32","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":8256,"name":"address","nodeType":"ElementaryTypeName","src":"4716:7:32","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":8259,"mutability":"mutable","name":"value","nameLocation":"4736:5:32","nodeType":"VariableDeclaration","scope":8284,"src":"4728:13:32","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":8258,"name":"uint256","nodeType":"ElementaryTypeName","src":"4728:7:32","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"4701:41:32"},"returnParameters":{"id":8263,"nodeType":"ParameterList","parameters":[{"constant":false,"id":8262,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":8284,"src":"4767:4:32","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":8261,"name":"bool","nodeType":"ElementaryTypeName","src":"4767:4:32","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"}],"src":"4766:6:32"},"scope":8601,"src":"4680:244:32","stateMutability":"nonpayable","virtual":true,"visibility":"public"},{"body":{"id":8330,"nodeType":"Block","src":"5366:231:32","statements":[{"condition":{"commonType":{"typeIdentifier":"t_address","typeString":"address"},"id":8299,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":8294,"name":"from","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8287,"src":"5380:4:32","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"arguments":[{"hexValue":"30","id":8297,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"5396: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":8296,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"5388:7:32","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":8295,"name":"address","nodeType":"ElementaryTypeName","src":"5388:7:32","typeDescriptions":{}}},"id":8298,"isConstant":false,"isLValue":false,"isPure":true,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"5388:10:32","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"src":"5380:18:32","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":8308,"nodeType":"IfStatement","src":"5376:86:32","trueBody":{"id":8307,"nodeType":"Block","src":"5400:62:32","statements":[{"errorCall":{"arguments":[{"arguments":[{"hexValue":"30","id":8303,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"5448: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":8302,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"5440:7:32","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":8301,"name":"address","nodeType":"ElementaryTypeName","src":"5440:7:32","typeDescriptions":{}}},"id":8304,"isConstant":false,"isLValue":false,"isPure":true,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"5440:10:32","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"id":8300,"name":"ERC20InvalidSender","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7154,"src":"5421:18:32","typeDescriptions":{"typeIdentifier":"t_function_error_pure$_t_address_$returns$_t_error_$","typeString":"function (address) pure returns (error)"}},"id":8305,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"5421:30:32","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_error","typeString":"error"}},"id":8306,"nodeType":"RevertStatement","src":"5414:37:32"}]}},{"condition":{"commonType":{"typeIdentifier":"t_address","typeString":"address"},"id":8314,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":8309,"name":"to","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8289,"src":"5475:2:32","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"arguments":[{"hexValue":"30","id":8312,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"5489: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":8311,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"5481:7:32","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":8310,"name":"address","nodeType":"ElementaryTypeName","src":"5481:7:32","typeDescriptions":{}}},"id":8313,"isConstant":false,"isLValue":false,"isPure":true,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"5481:10:32","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"src":"5475:16:32","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":8323,"nodeType":"IfStatement","src":"5471:86:32","trueBody":{"id":8322,"nodeType":"Block","src":"5493:64:32","statements":[{"errorCall":{"arguments":[{"arguments":[{"hexValue":"30","id":8318,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"5543: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":8317,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"5535:7:32","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":8316,"name":"address","nodeType":"ElementaryTypeName","src":"5535:7:32","typeDescriptions":{}}},"id":8319,"isConstant":false,"isLValue":false,"isPure":true,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"5535:10:32","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"id":8315,"name":"ERC20InvalidReceiver","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7159,"src":"5514:20:32","typeDescriptions":{"typeIdentifier":"t_function_error_pure$_t_address_$returns$_t_error_$","typeString":"function (address) pure returns (error)"}},"id":8320,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"5514:32:32","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_error","typeString":"error"}},"id":8321,"nodeType":"RevertStatement","src":"5507:39:32"}]}},{"expression":{"arguments":[{"id":8325,"name":"from","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8287,"src":"5574:4:32","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":8326,"name":"to","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8289,"src":"5580:2:32","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":8327,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8291,"src":"5584:5: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":8324,"name":"_update","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8408,"src":"5566:7:32","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_address_$_t_address_$_t_uint256_$returns$__$","typeString":"function (address,address,uint256)"}},"id":8328,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"5566:24:32","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":8329,"nodeType":"ExpressionStatement","src":"5566:24:32"}]},"documentation":{"id":8285,"nodeType":"StructuredDocumentation","src":"4930:362:32","text":" @dev Moves a `value` amount of tokens from `from` to `to`.\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 NOTE: This function is not virtual, {_update} should be overridden instead."},"id":8331,"implemented":true,"kind":"function","modifiers":[],"name":"_transfer","nameLocation":"5306:9:32","nodeType":"FunctionDefinition","parameters":{"id":8292,"nodeType":"ParameterList","parameters":[{"constant":false,"id":8287,"mutability":"mutable","name":"from","nameLocation":"5324:4:32","nodeType":"VariableDeclaration","scope":8331,"src":"5316:12:32","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":8286,"name":"address","nodeType":"ElementaryTypeName","src":"5316:7:32","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":8289,"mutability":"mutable","name":"to","nameLocation":"5338:2:32","nodeType":"VariableDeclaration","scope":8331,"src":"5330:10:32","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":8288,"name":"address","nodeType":"ElementaryTypeName","src":"5330:7:32","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":8291,"mutability":"mutable","name":"value","nameLocation":"5350:5:32","nodeType":"VariableDeclaration","scope":8331,"src":"5342:13:32","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":8290,"name":"uint256","nodeType":"ElementaryTypeName","src":"5342:7:32","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"5315:41:32"},"returnParameters":{"id":8293,"nodeType":"ParameterList","parameters":[],"src":"5366:0:32"},"scope":8601,"src":"5297:300:32","stateMutability":"nonpayable","virtual":false,"visibility":"internal"},{"body":{"id":8407,"nodeType":"Block","src":"5987:1032:32","statements":[{"condition":{"commonType":{"typeIdentifier":"t_address","typeString":"address"},"id":8346,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":8341,"name":"from","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8334,"src":"6001:4:32","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"arguments":[{"hexValue":"30","id":8344,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"6017: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":8343,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"6009:7:32","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":8342,"name":"address","nodeType":"ElementaryTypeName","src":"6009:7:32","typeDescriptions":{}}},"id":8345,"isConstant":false,"isLValue":false,"isPure":true,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"6009:10:32","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"src":"6001:18:32","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"falseBody":{"id":8378,"nodeType":"Block","src":"6175:362:32","statements":[{"assignments":[8353],"declarations":[{"constant":false,"id":8353,"mutability":"mutable","name":"fromBalance","nameLocation":"6197:11:32","nodeType":"VariableDeclaration","scope":8378,"src":"6189:19:32","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":8352,"name":"uint256","nodeType":"ElementaryTypeName","src":"6189:7:32","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":8357,"initialValue":{"baseExpression":{"id":8354,"name":"_balances","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8109,"src":"6211:9:32","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_uint256_$","typeString":"mapping(address => uint256)"}},"id":8356,"indexExpression":{"id":8355,"name":"from","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8334,"src":"6221:4:32","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"6211:15:32","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"VariableDeclarationStatement","src":"6189:37:32"},{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":8360,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":8358,"name":"fromBalance","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8353,"src":"6244:11:32","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"<","rightExpression":{"id":8359,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8338,"src":"6258:5:32","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"6244:19:32","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":8368,"nodeType":"IfStatement","src":"6240:115:32","trueBody":{"id":8367,"nodeType":"Block","src":"6265:90:32","statements":[{"errorCall":{"arguments":[{"id":8362,"name":"from","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8334,"src":"6315:4:32","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":8363,"name":"fromBalance","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8353,"src":"6321:11:32","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"id":8364,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8338,"src":"6334:5:32","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":8361,"name":"ERC20InsufficientBalance","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7149,"src":"6290:24:32","typeDescriptions":{"typeIdentifier":"t_function_error_pure$_t_address_$_t_uint256_$_t_uint256_$returns$_t_error_$","typeString":"function (address,uint256,uint256) pure returns (error)"}},"id":8365,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"6290:50:32","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_error","typeString":"error"}},"id":8366,"nodeType":"RevertStatement","src":"6283:57:32"}]}},{"id":8377,"nodeType":"UncheckedBlock","src":"6368:159:32","statements":[{"expression":{"id":8375,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"baseExpression":{"id":8369,"name":"_balances","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8109,"src":"6475:9:32","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_uint256_$","typeString":"mapping(address => uint256)"}},"id":8371,"indexExpression":{"id":8370,"name":"from","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8334,"src":"6485:4:32","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"nodeType":"IndexAccess","src":"6475:15:32","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":8374,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":8372,"name":"fromBalance","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8353,"src":"6493:11:32","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"-","rightExpression":{"id":8373,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8338,"src":"6507:5:32","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"6493:19:32","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"6475:37:32","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":8376,"nodeType":"ExpressionStatement","src":"6475:37:32"}]}]},"id":8379,"nodeType":"IfStatement","src":"5997:540:32","trueBody":{"id":8351,"nodeType":"Block","src":"6021:148:32","statements":[{"expression":{"id":8349,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":8347,"name":"_totalSupply","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8117,"src":"6137:12:32","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"+=","rightHandSide":{"id":8348,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8338,"src":"6153:5:32","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"6137:21:32","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":8350,"nodeType":"ExpressionStatement","src":"6137:21:32"}]}},{"condition":{"commonType":{"typeIdentifier":"t_address","typeString":"address"},"id":8385,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":8380,"name":"to","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8336,"src":"6551:2:32","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"arguments":[{"hexValue":"30","id":8383,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"6565: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":8382,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"6557:7:32","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":8381,"name":"address","nodeType":"ElementaryTypeName","src":"6557:7:32","typeDescriptions":{}}},"id":8384,"isConstant":false,"isLValue":false,"isPure":true,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"6557:10:32","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"src":"6551:16:32","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"falseBody":{"id":8399,"nodeType":"Block","src":"6766:206:32","statements":[{"id":8398,"nodeType":"UncheckedBlock","src":"6780:182:32","statements":[{"expression":{"id":8396,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"baseExpression":{"id":8392,"name":"_balances","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8109,"src":"6925:9:32","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_uint256_$","typeString":"mapping(address => uint256)"}},"id":8394,"indexExpression":{"id":8393,"name":"to","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8336,"src":"6935:2:32","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"nodeType":"IndexAccess","src":"6925:13:32","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"+=","rightHandSide":{"id":8395,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8338,"src":"6942:5:32","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"6925:22:32","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":8397,"nodeType":"ExpressionStatement","src":"6925:22:32"}]}]},"id":8400,"nodeType":"IfStatement","src":"6547:425:32","trueBody":{"id":8391,"nodeType":"Block","src":"6569:191:32","statements":[{"id":8390,"nodeType":"UncheckedBlock","src":"6583:167:32","statements":[{"expression":{"id":8388,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":8386,"name":"_totalSupply","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8117,"src":"6714:12:32","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"-=","rightHandSide":{"id":8387,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8338,"src":"6730:5:32","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"6714:21:32","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":8389,"nodeType":"ExpressionStatement","src":"6714:21:32"}]}]}},{"eventCall":{"arguments":[{"id":8402,"name":"from","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8334,"src":"6996:4:32","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":8403,"name":"to","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8336,"src":"7002:2:32","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":8404,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8338,"src":"7006:5: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":8401,"name":"Transfer","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8613,"src":"6987:8:32","typeDescriptions":{"typeIdentifier":"t_function_event_nonpayable$_t_address_$_t_address_$_t_uint256_$returns$__$","typeString":"function (address,address,uint256)"}},"id":8405,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"6987:25:32","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":8406,"nodeType":"EmitStatement","src":"6982:30:32"}]},"documentation":{"id":8332,"nodeType":"StructuredDocumentation","src":"5603:304:32","text":" @dev Transfers a `value` amount of tokens from `from` to `to`, or alternatively mints (or burns) if `from`\n (or `to`) is the zero address. All customizations to transfers, mints, and burns should be done by overriding\n this function.\n Emits a {Transfer} event."},"id":8408,"implemented":true,"kind":"function","modifiers":[],"name":"_update","nameLocation":"5921:7:32","nodeType":"FunctionDefinition","parameters":{"id":8339,"nodeType":"ParameterList","parameters":[{"constant":false,"id":8334,"mutability":"mutable","name":"from","nameLocation":"5937:4:32","nodeType":"VariableDeclaration","scope":8408,"src":"5929:12:32","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":8333,"name":"address","nodeType":"ElementaryTypeName","src":"5929:7:32","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":8336,"mutability":"mutable","name":"to","nameLocation":"5951:2:32","nodeType":"VariableDeclaration","scope":8408,"src":"5943:10:32","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":8335,"name":"address","nodeType":"ElementaryTypeName","src":"5943:7:32","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":8338,"mutability":"mutable","name":"value","nameLocation":"5963:5:32","nodeType":"VariableDeclaration","scope":8408,"src":"5955:13:32","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":8337,"name":"uint256","nodeType":"ElementaryTypeName","src":"5955:7:32","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"5928:41:32"},"returnParameters":{"id":8340,"nodeType":"ParameterList","parameters":[],"src":"5987:0:32"},"scope":8601,"src":"5912:1107:32","stateMutability":"nonpayable","virtual":true,"visibility":"internal"},{"body":{"id":8440,"nodeType":"Block","src":"7418:152:32","statements":[{"condition":{"commonType":{"typeIdentifier":"t_address","typeString":"address"},"id":8421,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":8416,"name":"account","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8411,"src":"7432:7:32","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"arguments":[{"hexValue":"30","id":8419,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"7451: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":8418,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"7443:7:32","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":8417,"name":"address","nodeType":"ElementaryTypeName","src":"7443:7:32","typeDescriptions":{}}},"id":8420,"isConstant":false,"isLValue":false,"isPure":true,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"7443:10:32","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"src":"7432:21:32","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":8430,"nodeType":"IfStatement","src":"7428:91:32","trueBody":{"id":8429,"nodeType":"Block","src":"7455:64:32","statements":[{"errorCall":{"arguments":[{"arguments":[{"hexValue":"30","id":8425,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"7505: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":8424,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"7497:7:32","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":8423,"name":"address","nodeType":"ElementaryTypeName","src":"7497:7:32","typeDescriptions":{}}},"id":8426,"isConstant":false,"isLValue":false,"isPure":true,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"7497:10:32","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"id":8422,"name":"ERC20InvalidReceiver","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7159,"src":"7476:20:32","typeDescriptions":{"typeIdentifier":"t_function_error_pure$_t_address_$returns$_t_error_$","typeString":"function (address) pure returns (error)"}},"id":8427,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"7476:32:32","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_error","typeString":"error"}},"id":8428,"nodeType":"RevertStatement","src":"7469:39:32"}]}},{"expression":{"arguments":[{"arguments":[{"hexValue":"30","id":8434,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"7544: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":8433,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"7536:7:32","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":8432,"name":"address","nodeType":"ElementaryTypeName","src":"7536:7:32","typeDescriptions":{}}},"id":8435,"isConstant":false,"isLValue":false,"isPure":true,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"7536:10:32","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":8436,"name":"account","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8411,"src":"7548:7:32","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":8437,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8413,"src":"7557:5: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":8431,"name":"_update","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8408,"src":"7528:7:32","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_address_$_t_address_$_t_uint256_$returns$__$","typeString":"function (address,address,uint256)"}},"id":8438,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"7528:35:32","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":8439,"nodeType":"ExpressionStatement","src":"7528:35:32"}]},"documentation":{"id":8409,"nodeType":"StructuredDocumentation","src":"7025:332:32","text":" @dev Creates a `value` amount of tokens and assigns them to `account`, by transferring it from address(0).\n Relies on the `_update` mechanism\n Emits a {Transfer} event with `from` set to the zero address.\n NOTE: This function is not virtual, {_update} should be overridden instead."},"id":8441,"implemented":true,"kind":"function","modifiers":[],"name":"_mint","nameLocation":"7371:5:32","nodeType":"FunctionDefinition","parameters":{"id":8414,"nodeType":"ParameterList","parameters":[{"constant":false,"id":8411,"mutability":"mutable","name":"account","nameLocation":"7385:7:32","nodeType":"VariableDeclaration","scope":8441,"src":"7377:15:32","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":8410,"name":"address","nodeType":"ElementaryTypeName","src":"7377:7:32","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":8413,"mutability":"mutable","name":"value","nameLocation":"7402:5:32","nodeType":"VariableDeclaration","scope":8441,"src":"7394:13:32","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":8412,"name":"uint256","nodeType":"ElementaryTypeName","src":"7394:7:32","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"7376:32:32"},"returnParameters":{"id":8415,"nodeType":"ParameterList","parameters":[],"src":"7418:0:32"},"scope":8601,"src":"7362:208:32","stateMutability":"nonpayable","virtual":false,"visibility":"internal"},{"body":{"id":8473,"nodeType":"Block","src":"7944:150:32","statements":[{"condition":{"commonType":{"typeIdentifier":"t_address","typeString":"address"},"id":8454,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":8449,"name":"account","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8444,"src":"7958:7:32","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"arguments":[{"hexValue":"30","id":8452,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"7977: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":8451,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"7969:7:32","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":8450,"name":"address","nodeType":"ElementaryTypeName","src":"7969:7:32","typeDescriptions":{}}},"id":8453,"isConstant":false,"isLValue":false,"isPure":true,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"7969:10:32","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"src":"7958:21:32","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":8463,"nodeType":"IfStatement","src":"7954:89:32","trueBody":{"id":8462,"nodeType":"Block","src":"7981:62:32","statements":[{"errorCall":{"arguments":[{"arguments":[{"hexValue":"30","id":8458,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"8029: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":8457,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"8021:7:32","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":8456,"name":"address","nodeType":"ElementaryTypeName","src":"8021:7:32","typeDescriptions":{}}},"id":8459,"isConstant":false,"isLValue":false,"isPure":true,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"8021:10:32","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"id":8455,"name":"ERC20InvalidSender","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7154,"src":"8002:18:32","typeDescriptions":{"typeIdentifier":"t_function_error_pure$_t_address_$returns$_t_error_$","typeString":"function (address) pure returns (error)"}},"id":8460,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"8002:30:32","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_error","typeString":"error"}},"id":8461,"nodeType":"RevertStatement","src":"7995:37:32"}]}},{"expression":{"arguments":[{"id":8465,"name":"account","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8444,"src":"8060:7:32","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"arguments":[{"hexValue":"30","id":8468,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"8077: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":8467,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"8069:7:32","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":8466,"name":"address","nodeType":"ElementaryTypeName","src":"8069:7:32","typeDescriptions":{}}},"id":8469,"isConstant":false,"isLValue":false,"isPure":true,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"8069:10:32","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":8470,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8446,"src":"8081:5: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":8464,"name":"_update","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8408,"src":"8052:7:32","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_address_$_t_address_$_t_uint256_$returns$__$","typeString":"function (address,address,uint256)"}},"id":8471,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"8052:35:32","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":8472,"nodeType":"ExpressionStatement","src":"8052:35:32"}]},"documentation":{"id":8442,"nodeType":"StructuredDocumentation","src":"7576:307:32","text":" @dev Destroys a `value` amount of tokens from `account`, lowering the total supply.\n Relies on the `_update` mechanism.\n Emits a {Transfer} event with `to` set to the zero address.\n NOTE: This function is not virtual, {_update} should be overridden instead"},"id":8474,"implemented":true,"kind":"function","modifiers":[],"name":"_burn","nameLocation":"7897:5:32","nodeType":"FunctionDefinition","parameters":{"id":8447,"nodeType":"ParameterList","parameters":[{"constant":false,"id":8444,"mutability":"mutable","name":"account","nameLocation":"7911:7:32","nodeType":"VariableDeclaration","scope":8474,"src":"7903:15:32","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":8443,"name":"address","nodeType":"ElementaryTypeName","src":"7903:7:32","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":8446,"mutability":"mutable","name":"value","nameLocation":"7928:5:32","nodeType":"VariableDeclaration","scope":8474,"src":"7920:13:32","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":8445,"name":"uint256","nodeType":"ElementaryTypeName","src":"7920:7:32","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"7902:32:32"},"returnParameters":{"id":8448,"nodeType":"ParameterList","parameters":[],"src":"7944:0:32"},"scope":8601,"src":"7888:206:32","stateMutability":"nonpayable","virtual":false,"visibility":"internal"},{"body":{"id":8491,"nodeType":"Block","src":"8704:54:32","statements":[{"expression":{"arguments":[{"id":8485,"name":"owner","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8477,"src":"8723:5:32","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":8486,"name":"spender","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8479,"src":"8730:7:32","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":8487,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8481,"src":"8739:5:32","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"hexValue":"74727565","id":8488,"isConstant":false,"isLValue":false,"isPure":true,"kind":"bool","lValueRequested":false,"nodeType":"Literal","src":"8746:4:32","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"value":"true"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_bool","typeString":"bool"}],"id":8484,"name":"_approve","nodeType":"Identifier","overloadedDeclarations":[8492,8552],"referencedDeclaration":8552,"src":"8714:8:32","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_address_$_t_address_$_t_uint256_$_t_bool_$returns$__$","typeString":"function (address,address,uint256,bool)"}},"id":8489,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"8714:37:32","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":8490,"nodeType":"ExpressionStatement","src":"8714:37:32"}]},"documentation":{"id":8475,"nodeType":"StructuredDocumentation","src":"8100:525:32","text":" @dev Sets `value` 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.\n Overrides to this logic should be done to the variant with an additional `bool emitEvent` argument."},"id":8492,"implemented":true,"kind":"function","modifiers":[],"name":"_approve","nameLocation":"8639:8:32","nodeType":"FunctionDefinition","parameters":{"id":8482,"nodeType":"ParameterList","parameters":[{"constant":false,"id":8477,"mutability":"mutable","name":"owner","nameLocation":"8656:5:32","nodeType":"VariableDeclaration","scope":8492,"src":"8648:13:32","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":8476,"name":"address","nodeType":"ElementaryTypeName","src":"8648:7:32","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":8479,"mutability":"mutable","name":"spender","nameLocation":"8671:7:32","nodeType":"VariableDeclaration","scope":8492,"src":"8663:15:32","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":8478,"name":"address","nodeType":"ElementaryTypeName","src":"8663:7:32","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":8481,"mutability":"mutable","name":"value","nameLocation":"8688:5:32","nodeType":"VariableDeclaration","scope":8492,"src":"8680:13:32","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":8480,"name":"uint256","nodeType":"ElementaryTypeName","src":"8680:7:32","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"8647:47:32"},"returnParameters":{"id":8483,"nodeType":"ParameterList","parameters":[],"src":"8704:0:32"},"scope":8601,"src":"8630:128:32","stateMutability":"nonpayable","virtual":false,"visibility":"internal"},{"body":{"id":8551,"nodeType":"Block","src":"9705:334:32","statements":[{"condition":{"commonType":{"typeIdentifier":"t_address","typeString":"address"},"id":8509,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":8504,"name":"owner","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8495,"src":"9719:5:32","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"arguments":[{"hexValue":"30","id":8507,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"9736: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":8506,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"9728:7:32","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":8505,"name":"address","nodeType":"ElementaryTypeName","src":"9728:7:32","typeDescriptions":{}}},"id":8508,"isConstant":false,"isLValue":false,"isPure":true,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"9728:10:32","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"src":"9719:19:32","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":8518,"nodeType":"IfStatement","src":"9715:89:32","trueBody":{"id":8517,"nodeType":"Block","src":"9740:64:32","statements":[{"errorCall":{"arguments":[{"arguments":[{"hexValue":"30","id":8513,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"9790: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":8512,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"9782:7:32","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":8511,"name":"address","nodeType":"ElementaryTypeName","src":"9782:7:32","typeDescriptions":{}}},"id":8514,"isConstant":false,"isLValue":false,"isPure":true,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"9782:10:32","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"id":8510,"name":"ERC20InvalidApprover","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7173,"src":"9761:20:32","typeDescriptions":{"typeIdentifier":"t_function_error_pure$_t_address_$returns$_t_error_$","typeString":"function (address) pure returns (error)"}},"id":8515,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"9761:32:32","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_error","typeString":"error"}},"id":8516,"nodeType":"RevertStatement","src":"9754:39:32"}]}},{"condition":{"commonType":{"typeIdentifier":"t_address","typeString":"address"},"id":8524,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":8519,"name":"spender","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8497,"src":"9817:7:32","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"arguments":[{"hexValue":"30","id":8522,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"9836: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":8521,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"9828:7:32","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":8520,"name":"address","nodeType":"ElementaryTypeName","src":"9828:7:32","typeDescriptions":{}}},"id":8523,"isConstant":false,"isLValue":false,"isPure":true,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"9828:10:32","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"src":"9817:21:32","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":8533,"nodeType":"IfStatement","src":"9813:90:32","trueBody":{"id":8532,"nodeType":"Block","src":"9840:63:32","statements":[{"errorCall":{"arguments":[{"arguments":[{"hexValue":"30","id":8528,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"9889: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":8527,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"9881:7:32","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":8526,"name":"address","nodeType":"ElementaryTypeName","src":"9881:7:32","typeDescriptions":{}}},"id":8529,"isConstant":false,"isLValue":false,"isPure":true,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"9881:10:32","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"id":8525,"name":"ERC20InvalidSpender","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7178,"src":"9861:19:32","typeDescriptions":{"typeIdentifier":"t_function_error_pure$_t_address_$returns$_t_error_$","typeString":"function (address) pure returns (error)"}},"id":8530,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"9861:31:32","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_error","typeString":"error"}},"id":8531,"nodeType":"RevertStatement","src":"9854:38:32"}]}},{"expression":{"id":8540,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"baseExpression":{"baseExpression":{"id":8534,"name":"_allowances","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8115,"src":"9912:11:32","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_mapping$_t_address_$_t_uint256_$_$","typeString":"mapping(address => mapping(address => uint256))"}},"id":8537,"indexExpression":{"id":8535,"name":"owner","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8495,"src":"9924:5:32","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"9912:18:32","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_uint256_$","typeString":"mapping(address => uint256)"}},"id":8538,"indexExpression":{"id":8536,"name":"spender","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8497,"src":"9931:7:32","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"nodeType":"IndexAccess","src":"9912:27:32","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"id":8539,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8499,"src":"9942:5:32","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"9912:35:32","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":8541,"nodeType":"ExpressionStatement","src":"9912:35:32"},{"condition":{"id":8542,"name":"emitEvent","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8501,"src":"9961:9:32","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":8550,"nodeType":"IfStatement","src":"9957:76:32","trueBody":{"id":8549,"nodeType":"Block","src":"9972:61:32","statements":[{"eventCall":{"arguments":[{"id":8544,"name":"owner","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8495,"src":"10000:5:32","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":8545,"name":"spender","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8497,"src":"10007:7:32","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":8546,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8499,"src":"10016:5: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":8543,"name":"Approval","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8622,"src":"9991:8:32","typeDescriptions":{"typeIdentifier":"t_function_event_nonpayable$_t_address_$_t_address_$_t_uint256_$returns$__$","typeString":"function (address,address,uint256)"}},"id":8547,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"9991:31:32","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":8548,"nodeType":"EmitStatement","src":"9986:36:32"}]}}]},"documentation":{"id":8493,"nodeType":"StructuredDocumentation","src":"8764:838:32","text":" @dev Variant of {_approve} with an optional flag to enable or disable the {Approval} event.\n By default (when calling {_approve}) the flag is set to true. On the other hand, approval changes made by\n `_spendAllowance` during the `transferFrom` operation sets the flag to false. This saves gas by not emitting any\n `Approval` event during `transferFrom` operations.\n Anyone who wishes to continue emitting `Approval` events on the `transferFrom` operation can force the flag to\n true using the following override:\n ```solidity\n function _approve(address owner, address spender, uint256 value, bool) internal virtual override {\n     super._approve(owner, spender, value, true);\n }\n ```\n Requirements are the same as {_approve}."},"id":8552,"implemented":true,"kind":"function","modifiers":[],"name":"_approve","nameLocation":"9616:8:32","nodeType":"FunctionDefinition","parameters":{"id":8502,"nodeType":"ParameterList","parameters":[{"constant":false,"id":8495,"mutability":"mutable","name":"owner","nameLocation":"9633:5:32","nodeType":"VariableDeclaration","scope":8552,"src":"9625:13:32","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":8494,"name":"address","nodeType":"ElementaryTypeName","src":"9625:7:32","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":8497,"mutability":"mutable","name":"spender","nameLocation":"9648:7:32","nodeType":"VariableDeclaration","scope":8552,"src":"9640:15:32","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":8496,"name":"address","nodeType":"ElementaryTypeName","src":"9640:7:32","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":8499,"mutability":"mutable","name":"value","nameLocation":"9665:5:32","nodeType":"VariableDeclaration","scope":8552,"src":"9657:13:32","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":8498,"name":"uint256","nodeType":"ElementaryTypeName","src":"9657:7:32","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":8501,"mutability":"mutable","name":"emitEvent","nameLocation":"9677:9:32","nodeType":"VariableDeclaration","scope":8552,"src":"9672:14:32","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":8500,"name":"bool","nodeType":"ElementaryTypeName","src":"9672:4:32","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"}],"src":"9624:63:32"},"returnParameters":{"id":8503,"nodeType":"ParameterList","parameters":[],"src":"9705:0:32"},"scope":8601,"src":"9607:432:32","stateMutability":"nonpayable","virtual":true,"visibility":"internal"},{"body":{"id":8599,"nodeType":"Block","src":"10410:387:32","statements":[{"assignments":[8563],"declarations":[{"constant":false,"id":8563,"mutability":"mutable","name":"currentAllowance","nameLocation":"10428:16:32","nodeType":"VariableDeclaration","scope":8599,"src":"10420:24:32","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":8562,"name":"uint256","nodeType":"ElementaryTypeName","src":"10420:7:32","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":8568,"initialValue":{"arguments":[{"id":8565,"name":"owner","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8555,"src":"10457:5:32","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":8566,"name":"spender","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8557,"src":"10464:7:32","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_address","typeString":"address"}],"id":8564,"name":"allowance","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8228,"src":"10447:9:32","typeDescriptions":{"typeIdentifier":"t_function_internal_view$_t_address_$_t_address_$returns$_t_uint256_$","typeString":"function (address,address) view returns (uint256)"}},"id":8567,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"10447:25:32","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"VariableDeclarationStatement","src":"10420:52:32"},{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":8575,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":8569,"name":"currentAllowance","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8563,"src":"10486:16:32","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"<","rightExpression":{"expression":{"arguments":[{"id":8572,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"10510:7:32","typeDescriptions":{"typeIdentifier":"t_type$_t_uint256_$","typeString":"type(uint256)"},"typeName":{"id":8571,"name":"uint256","nodeType":"ElementaryTypeName","src":"10510:7:32","typeDescriptions":{}}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_type$_t_uint256_$","typeString":"type(uint256)"}],"id":8570,"name":"type","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-27,"src":"10505:4:32","typeDescriptions":{"typeIdentifier":"t_function_metatype_pure$__$returns$__$","typeString":"function () pure"}},"id":8573,"isConstant":false,"isLValue":false,"isPure":true,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"10505:13:32","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_magic_meta_type_t_uint256","typeString":"type(uint256)"}},"id":8574,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberLocation":"10519:3:32","memberName":"max","nodeType":"MemberAccess","src":"10505:17:32","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"10486:36:32","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":8598,"nodeType":"IfStatement","src":"10482:309:32","trueBody":{"id":8597,"nodeType":"Block","src":"10524:267:32","statements":[{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":8578,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":8576,"name":"currentAllowance","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8563,"src":"10542:16:32","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"<","rightExpression":{"id":8577,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8559,"src":"10561:5:32","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"10542:24:32","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":8586,"nodeType":"IfStatement","src":"10538:130:32","trueBody":{"id":8585,"nodeType":"Block","src":"10568:100:32","statements":[{"errorCall":{"arguments":[{"id":8580,"name":"spender","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8557,"src":"10620:7:32","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":8581,"name":"currentAllowance","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8563,"src":"10629:16:32","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"id":8582,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8559,"src":"10647:5:32","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":8579,"name":"ERC20InsufficientAllowance","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7168,"src":"10593:26:32","typeDescriptions":{"typeIdentifier":"t_function_error_pure$_t_address_$_t_uint256_$_t_uint256_$returns$_t_error_$","typeString":"function (address,uint256,uint256) pure returns (error)"}},"id":8583,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"10593:60:32","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_error","typeString":"error"}},"id":8584,"nodeType":"RevertStatement","src":"10586:67:32"}]}},{"id":8596,"nodeType":"UncheckedBlock","src":"10681:100:32","statements":[{"expression":{"arguments":[{"id":8588,"name":"owner","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8555,"src":"10718:5:32","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":8589,"name":"spender","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8557,"src":"10725:7:32","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":8592,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":8590,"name":"currentAllowance","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8563,"src":"10734:16:32","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"-","rightExpression":{"id":8591,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8559,"src":"10753:5:32","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"10734:24:32","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"hexValue":"66616c7365","id":8593,"isConstant":false,"isLValue":false,"isPure":true,"kind":"bool","lValueRequested":false,"nodeType":"Literal","src":"10760:5:32","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"value":"false"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_bool","typeString":"bool"}],"id":8587,"name":"_approve","nodeType":"Identifier","overloadedDeclarations":[8492,8552],"referencedDeclaration":8552,"src":"10709:8:32","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_address_$_t_address_$_t_uint256_$_t_bool_$returns$__$","typeString":"function (address,address,uint256,bool)"}},"id":8594,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"10709:57:32","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":8595,"nodeType":"ExpressionStatement","src":"10709:57:32"}]}]}}]},"documentation":{"id":8553,"nodeType":"StructuredDocumentation","src":"10045:271:32","text":" @dev Updates `owner`'s allowance for `spender` based on spent `value`.\n Does not update the allowance value in case of infinite allowance.\n Revert if not enough allowance is available.\n Does not emit an {Approval} event."},"id":8600,"implemented":true,"kind":"function","modifiers":[],"name":"_spendAllowance","nameLocation":"10330:15:32","nodeType":"FunctionDefinition","parameters":{"id":8560,"nodeType":"ParameterList","parameters":[{"constant":false,"id":8555,"mutability":"mutable","name":"owner","nameLocation":"10354:5:32","nodeType":"VariableDeclaration","scope":8600,"src":"10346:13:32","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":8554,"name":"address","nodeType":"ElementaryTypeName","src":"10346:7:32","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":8557,"mutability":"mutable","name":"spender","nameLocation":"10369:7:32","nodeType":"VariableDeclaration","scope":8600,"src":"10361:15:32","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":8556,"name":"address","nodeType":"ElementaryTypeName","src":"10361:7:32","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":8559,"mutability":"mutable","name":"value","nameLocation":"10386:5:32","nodeType":"VariableDeclaration","scope":8600,"src":"10378:13:32","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":8558,"name":"uint256","nodeType":"ElementaryTypeName","src":"10378:7:32","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"10345:47:32"},"returnParameters":{"id":8561,"nodeType":"ParameterList","parameters":[],"src":"10410:0:32"},"scope":8601,"src":"10321:476:32","stateMutability":"nonpayable","virtual":true,"visibility":"internal"}],"scope":8602,"src":"1106:9693:32","usedErrors":[7149,7154,7159,7168,7173,7178],"usedEvents":[8613,8622]}],"src":"105:10695:32"},"id":32},"@openzeppelin/contracts/token/ERC20/IERC20.sol":{"ast":{"absolutePath":"@openzeppelin/contracts/token/ERC20/IERC20.sol","exportedSymbols":{"IERC20":[8679]},"id":8680,"license":"MIT","nodeType":"SourceUnit","nodes":[{"id":8603,"literals":["solidity",">=","0.4",".16"],"nodeType":"PragmaDirective","src":"106:25:33"},{"abstract":false,"baseContracts":[],"canonicalName":"IERC20","contractDependencies":[],"contractKind":"interface","documentation":{"id":8604,"nodeType":"StructuredDocumentation","src":"133:71:33","text":" @dev Interface of the ERC-20 standard as defined in the ERC."},"fullyImplemented":false,"id":8679,"linearizedBaseContracts":[8679],"name":"IERC20","nameLocation":"215:6:33","nodeType":"ContractDefinition","nodes":[{"anonymous":false,"documentation":{"id":8605,"nodeType":"StructuredDocumentation","src":"228:158:33","text":" @dev Emitted when `value` tokens are moved from one account (`from`) to\n another (`to`).\n Note that `value` may be zero."},"eventSelector":"ddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef","id":8613,"name":"Transfer","nameLocation":"397:8:33","nodeType":"EventDefinition","parameters":{"id":8612,"nodeType":"ParameterList","parameters":[{"constant":false,"id":8607,"indexed":true,"mutability":"mutable","name":"from","nameLocation":"422:4:33","nodeType":"VariableDeclaration","scope":8613,"src":"406:20:33","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":8606,"name":"address","nodeType":"ElementaryTypeName","src":"406:7:33","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":8609,"indexed":true,"mutability":"mutable","name":"to","nameLocation":"444:2:33","nodeType":"VariableDeclaration","scope":8613,"src":"428:18:33","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":8608,"name":"address","nodeType":"ElementaryTypeName","src":"428:7:33","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":8611,"indexed":false,"mutability":"mutable","name":"value","nameLocation":"456:5:33","nodeType":"VariableDeclaration","scope":8613,"src":"448:13:33","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":8610,"name":"uint256","nodeType":"ElementaryTypeName","src":"448:7:33","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"405:57:33"},"src":"391:72:33"},{"anonymous":false,"documentation":{"id":8614,"nodeType":"StructuredDocumentation","src":"469:148:33","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."},"eventSelector":"8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925","id":8622,"name":"Approval","nameLocation":"628:8:33","nodeType":"EventDefinition","parameters":{"id":8621,"nodeType":"ParameterList","parameters":[{"constant":false,"id":8616,"indexed":true,"mutability":"mutable","name":"owner","nameLocation":"653:5:33","nodeType":"VariableDeclaration","scope":8622,"src":"637:21:33","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":8615,"name":"address","nodeType":"ElementaryTypeName","src":"637:7:33","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":8618,"indexed":true,"mutability":"mutable","name":"spender","nameLocation":"676:7:33","nodeType":"VariableDeclaration","scope":8622,"src":"660:23:33","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":8617,"name":"address","nodeType":"ElementaryTypeName","src":"660:7:33","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":8620,"indexed":false,"mutability":"mutable","name":"value","nameLocation":"693:5:33","nodeType":"VariableDeclaration","scope":8622,"src":"685:13:33","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":8619,"name":"uint256","nodeType":"ElementaryTypeName","src":"685:7:33","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"636:63:33"},"src":"622:78:33"},{"documentation":{"id":8623,"nodeType":"StructuredDocumentation","src":"706:65:33","text":" @dev Returns the value of tokens in existence."},"functionSelector":"18160ddd","id":8628,"implemented":false,"kind":"function","modifiers":[],"name":"totalSupply","nameLocation":"785:11:33","nodeType":"FunctionDefinition","parameters":{"id":8624,"nodeType":"ParameterList","parameters":[],"src":"796:2:33"},"returnParameters":{"id":8627,"nodeType":"ParameterList","parameters":[{"constant":false,"id":8626,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":8628,"src":"822:7:33","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":8625,"name":"uint256","nodeType":"ElementaryTypeName","src":"822:7:33","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"821:9:33"},"scope":8679,"src":"776:55:33","stateMutability":"view","virtual":false,"visibility":"external"},{"documentation":{"id":8629,"nodeType":"StructuredDocumentation","src":"837:71:33","text":" @dev Returns the value of tokens owned by `account`."},"functionSelector":"70a08231","id":8636,"implemented":false,"kind":"function","modifiers":[],"name":"balanceOf","nameLocation":"922:9:33","nodeType":"FunctionDefinition","parameters":{"id":8632,"nodeType":"ParameterList","parameters":[{"constant":false,"id":8631,"mutability":"mutable","name":"account","nameLocation":"940:7:33","nodeType":"VariableDeclaration","scope":8636,"src":"932:15:33","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":8630,"name":"address","nodeType":"ElementaryTypeName","src":"932:7:33","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"931:17:33"},"returnParameters":{"id":8635,"nodeType":"ParameterList","parameters":[{"constant":false,"id":8634,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":8636,"src":"972:7:33","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":8633,"name":"uint256","nodeType":"ElementaryTypeName","src":"972:7:33","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"971:9:33"},"scope":8679,"src":"913:68:33","stateMutability":"view","virtual":false,"visibility":"external"},{"documentation":{"id":8637,"nodeType":"StructuredDocumentation","src":"987:213:33","text":" @dev Moves a `value` amount of tokens from the caller's account to `to`.\n Returns a boolean value indicating whether the operation succeeded.\n Emits a {Transfer} event."},"functionSelector":"a9059cbb","id":8646,"implemented":false,"kind":"function","modifiers":[],"name":"transfer","nameLocation":"1214:8:33","nodeType":"FunctionDefinition","parameters":{"id":8642,"nodeType":"ParameterList","parameters":[{"constant":false,"id":8639,"mutability":"mutable","name":"to","nameLocation":"1231:2:33","nodeType":"VariableDeclaration","scope":8646,"src":"1223:10:33","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":8638,"name":"address","nodeType":"ElementaryTypeName","src":"1223:7:33","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":8641,"mutability":"mutable","name":"value","nameLocation":"1243:5:33","nodeType":"VariableDeclaration","scope":8646,"src":"1235:13:33","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":8640,"name":"uint256","nodeType":"ElementaryTypeName","src":"1235:7:33","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"1222:27:33"},"returnParameters":{"id":8645,"nodeType":"ParameterList","parameters":[{"constant":false,"id":8644,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":8646,"src":"1268:4:33","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":8643,"name":"bool","nodeType":"ElementaryTypeName","src":"1268:4:33","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"}],"src":"1267:6:33"},"scope":8679,"src":"1205:69:33","stateMutability":"nonpayable","virtual":false,"visibility":"external"},{"documentation":{"id":8647,"nodeType":"StructuredDocumentation","src":"1280:264:33","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":8656,"implemented":false,"kind":"function","modifiers":[],"name":"allowance","nameLocation":"1558:9:33","nodeType":"FunctionDefinition","parameters":{"id":8652,"nodeType":"ParameterList","parameters":[{"constant":false,"id":8649,"mutability":"mutable","name":"owner","nameLocation":"1576:5:33","nodeType":"VariableDeclaration","scope":8656,"src":"1568:13:33","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":8648,"name":"address","nodeType":"ElementaryTypeName","src":"1568:7:33","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":8651,"mutability":"mutable","name":"spender","nameLocation":"1591:7:33","nodeType":"VariableDeclaration","scope":8656,"src":"1583:15:33","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":8650,"name":"address","nodeType":"ElementaryTypeName","src":"1583:7:33","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"1567:32:33"},"returnParameters":{"id":8655,"nodeType":"ParameterList","parameters":[{"constant":false,"id":8654,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":8656,"src":"1623:7:33","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":8653,"name":"uint256","nodeType":"ElementaryTypeName","src":"1623:7:33","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"1622:9:33"},"scope":8679,"src":"1549:83:33","stateMutability":"view","virtual":false,"visibility":"external"},{"documentation":{"id":8657,"nodeType":"StructuredDocumentation","src":"1638:667:33","text":" @dev Sets a `value` amount of tokens as the allowance of `spender` over the\n 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":8666,"implemented":false,"kind":"function","modifiers":[],"name":"approve","nameLocation":"2319:7:33","nodeType":"FunctionDefinition","parameters":{"id":8662,"nodeType":"ParameterList","parameters":[{"constant":false,"id":8659,"mutability":"mutable","name":"spender","nameLocation":"2335:7:33","nodeType":"VariableDeclaration","scope":8666,"src":"2327:15:33","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":8658,"name":"address","nodeType":"ElementaryTypeName","src":"2327:7:33","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":8661,"mutability":"mutable","name":"value","nameLocation":"2352:5:33","nodeType":"VariableDeclaration","scope":8666,"src":"2344:13:33","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":8660,"name":"uint256","nodeType":"ElementaryTypeName","src":"2344:7:33","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"2326:32:33"},"returnParameters":{"id":8665,"nodeType":"ParameterList","parameters":[{"constant":false,"id":8664,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":8666,"src":"2377:4:33","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":8663,"name":"bool","nodeType":"ElementaryTypeName","src":"2377:4:33","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"}],"src":"2376:6:33"},"scope":8679,"src":"2310:73:33","stateMutability":"nonpayable","virtual":false,"visibility":"external"},{"documentation":{"id":8667,"nodeType":"StructuredDocumentation","src":"2389:297:33","text":" @dev Moves a `value` amount of tokens from `from` to `to` using the\n allowance mechanism. `value` is then deducted from the caller's\n allowance.\n Returns a boolean value indicating whether the operation succeeded.\n Emits a {Transfer} event."},"functionSelector":"23b872dd","id":8678,"implemented":false,"kind":"function","modifiers":[],"name":"transferFrom","nameLocation":"2700:12:33","nodeType":"FunctionDefinition","parameters":{"id":8674,"nodeType":"ParameterList","parameters":[{"constant":false,"id":8669,"mutability":"mutable","name":"from","nameLocation":"2721:4:33","nodeType":"VariableDeclaration","scope":8678,"src":"2713:12:33","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":8668,"name":"address","nodeType":"ElementaryTypeName","src":"2713:7:33","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":8671,"mutability":"mutable","name":"to","nameLocation":"2735:2:33","nodeType":"VariableDeclaration","scope":8678,"src":"2727:10:33","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":8670,"name":"address","nodeType":"ElementaryTypeName","src":"2727:7:33","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":8673,"mutability":"mutable","name":"value","nameLocation":"2747:5:33","nodeType":"VariableDeclaration","scope":8678,"src":"2739:13:33","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":8672,"name":"uint256","nodeType":"ElementaryTypeName","src":"2739:7:33","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"2712:41:33"},"returnParameters":{"id":8677,"nodeType":"ParameterList","parameters":[{"constant":false,"id":8676,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":8678,"src":"2772:4:33","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":8675,"name":"bool","nodeType":"ElementaryTypeName","src":"2772:4:33","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"}],"src":"2771:6:33"},"scope":8679,"src":"2691:87:33","stateMutability":"nonpayable","virtual":false,"visibility":"external"}],"scope":8680,"src":"205:2575:33","usedErrors":[],"usedEvents":[8613,8622]}],"src":"106:2675:33"},"id":33},"@openzeppelin/contracts/token/ERC20/extensions/ERC4626.sol":{"ast":{"absolutePath":"@openzeppelin/contracts/token/ERC20/extensions/ERC4626.sol","exportedSymbols":{"ERC20":[8601],"ERC4626":[9385],"IERC20":[8679],"IERC20Metadata":[9411],"IERC4626":[7127],"LowLevelCall":[10467],"Math":[12726],"Memory":[10769],"SafeERC20":[9866]},"id":9386,"license":"MIT","nodeType":"SourceUnit","nodes":[{"id":8681,"literals":["solidity","^","0.8",".24"],"nodeType":"PragmaDirective","src":"118:24:34"},{"absolutePath":"@openzeppelin/contracts/token/ERC20/ERC20.sol","file":"../ERC20.sol","id":8685,"nameLocation":"-1:-1:-1","nodeType":"ImportDirective","scope":9386,"sourceUnit":8602,"src":"144:59:34","symbolAliases":[{"foreign":{"id":8682,"name":"IERC20","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8679,"src":"152:6:34","typeDescriptions":{}},"nameLocation":"-1:-1:-1"},{"foreign":{"id":8683,"name":"IERC20Metadata","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9411,"src":"160:14:34","typeDescriptions":{}},"nameLocation":"-1:-1:-1"},{"foreign":{"id":8684,"name":"ERC20","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8601,"src":"176:5:34","typeDescriptions":{}},"nameLocation":"-1:-1:-1"}],"unitAlias":""},{"absolutePath":"@openzeppelin/contracts/token/ERC20/utils/SafeERC20.sol","file":"../utils/SafeERC20.sol","id":8687,"nameLocation":"-1:-1:-1","nodeType":"ImportDirective","scope":9386,"sourceUnit":9867,"src":"204:49:34","symbolAliases":[{"foreign":{"id":8686,"name":"SafeERC20","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9866,"src":"212:9:34","typeDescriptions":{}},"nameLocation":"-1:-1:-1"}],"unitAlias":""},{"absolutePath":"@openzeppelin/contracts/interfaces/IERC4626.sol","file":"../../../interfaces/IERC4626.sol","id":8689,"nameLocation":"-1:-1:-1","nodeType":"ImportDirective","scope":9386,"sourceUnit":7128,"src":"254:58:34","symbolAliases":[{"foreign":{"id":8688,"name":"IERC4626","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7127,"src":"262:8:34","typeDescriptions":{}},"nameLocation":"-1:-1:-1"}],"unitAlias":""},{"absolutePath":"@openzeppelin/contracts/utils/LowLevelCall.sol","file":"../../../utils/LowLevelCall.sol","id":8691,"nameLocation":"-1:-1:-1","nodeType":"ImportDirective","scope":9386,"sourceUnit":10468,"src":"313:61:34","symbolAliases":[{"foreign":{"id":8690,"name":"LowLevelCall","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10467,"src":"321:12:34","typeDescriptions":{}},"nameLocation":"-1:-1:-1"}],"unitAlias":""},{"absolutePath":"@openzeppelin/contracts/utils/Memory.sol","file":"../../../utils/Memory.sol","id":8693,"nameLocation":"-1:-1:-1","nodeType":"ImportDirective","scope":9386,"sourceUnit":10770,"src":"375:49:34","symbolAliases":[{"foreign":{"id":8692,"name":"Memory","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10769,"src":"383:6:34","typeDescriptions":{}},"nameLocation":"-1:-1:-1"}],"unitAlias":""},{"absolutePath":"@openzeppelin/contracts/utils/math/Math.sol","file":"../../../utils/math/Math.sol","id":8695,"nameLocation":"-1:-1:-1","nodeType":"ImportDirective","scope":9386,"sourceUnit":12727,"src":"425:50:34","symbolAliases":[{"foreign":{"id":8694,"name":"Math","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":12726,"src":"433:4:34","typeDescriptions":{}},"nameLocation":"-1:-1:-1"}],"unitAlias":""},{"abstract":true,"baseContracts":[{"baseName":{"id":8697,"name":"ERC20","nameLocations":["4547:5:34"],"nodeType":"IdentifierPath","referencedDeclaration":8601,"src":"4547:5:34"},"id":8698,"nodeType":"InheritanceSpecifier","src":"4547:5:34"},{"baseName":{"id":8699,"name":"IERC4626","nameLocations":["4554:8:34"],"nodeType":"IdentifierPath","referencedDeclaration":7127,"src":"4554:8:34"},"id":8700,"nodeType":"InheritanceSpecifier","src":"4554:8:34"}],"canonicalName":"ERC4626","contractDependencies":[],"contractKind":"contract","documentation":{"id":8696,"nodeType":"StructuredDocumentation","src":"477:4040:34","text":" @dev Implementation of the ERC-4626 \"Tokenized Vault Standard\" as defined in\n https://eips.ethereum.org/EIPS/eip-4626[ERC-4626].\n This extension allows the minting and burning of \"shares\" (represented using the ERC-20 inheritance) in exchange for\n underlying \"assets\" through standardized {deposit}, {mint}, {redeem} and {burn} workflows. This contract extends\n the ERC-20 standard. Any additional extensions included along it would affect the \"shares\" token represented by this\n contract and not the \"assets\" token which is an independent contract.\n [CAUTION]\n ====\n In empty (or nearly empty) ERC-4626 vaults, deposits are at high risk of being stolen through frontrunning\n with a \"donation\" to the vault that inflates the price of a share. This is variously known as a donation or inflation\n attack and is essentially a problem of slippage. Vault deployers can protect against this attack by making an initial\n deposit of a non-trivial amount of the asset, such that price manipulation becomes infeasible. Withdrawals may\n similarly be affected by slippage. Users can protect against this attack as well as unexpected slippage in general by\n verifying the amount received is as expected, using a wrapper that performs these checks such as\n https://github.com/fei-protocol/ERC4626#erc4626router-and-base[ERC4626Router].\n Since v4.9, this implementation introduces configurable virtual assets and shares to help developers mitigate that risk.\n The `_decimalsOffset()` corresponds to an offset in the decimal representation between the underlying asset's decimals\n and the vault decimals. This offset also determines the rate of virtual shares to virtual assets in the vault, which\n itself determines the initial exchange rate. While not fully preventing the attack, analysis shows that the default\n offset (0) makes it non-profitable even if an attacker is able to capture value from multiple user deposits, as a result\n of the value being captured by the virtual shares (out of the attacker's donation) matching the attacker's expected gains.\n With a larger offset, the attack becomes orders of magnitude more expensive than it is profitable. More details about the\n underlying math can be found xref:ROOT:erc4626.adoc#inflation-attack[here].\n The drawback of this approach is that the virtual shares do capture (a very small) part of the value being accrued\n to the vault. Also, if the vault experiences losses, the users try to exit the vault, the virtual shares and assets\n will cause the first user to exit to experience reduced losses in detriment to the last users that will experience\n bigger losses. Developers willing to revert back to the pre-v4.9 behavior just need to override the\n `_convertToShares` and `_convertToAssets` functions.\n To learn more, check out our xref:ROOT:erc4626.adoc[ERC-4626 guide].\n ====\n [NOTE]\n ====\n When overriding this contract, some elements must be considered:\n * When overriding the behavior of the deposit or withdraw mechanisms, it is recommended to override the internal\n functions. Overriding {_deposit} automatically affects both {deposit} and {mint}. Similarly, overriding {_withdraw}\n automatically affects both {withdraw} and {redeem}. Overall it is not recommended to override the public facing\n functions since that could lead to inconsistent behaviors between the {deposit} and {mint} or between {withdraw} and\n {redeem}, which is documented to have lead to loss of funds.\n * Overrides to the deposit or withdraw mechanism must be reflected in the preview functions as well.\n * {maxWithdraw} depends on {maxRedeem}. Therefore, overriding {maxRedeem} only is enough. On the other hand,\n overriding {maxWithdraw} only would have no effect on {maxRedeem}, and could create an inconsistency between the two\n functions.\n * If {previewRedeem} is overridden to revert, {maxWithdraw} must be overridden as necessary to ensure it\n always return successfully.\n ===="},"fullyImplemented":true,"id":9385,"linearizedBaseContracts":[9385,7127,8601,7179,9411,8679,10286],"name":"ERC4626","nameLocation":"4536:7:34","nodeType":"ContractDefinition","nodes":[{"global":false,"id":8703,"libraryName":{"id":8701,"name":"Math","nameLocations":["4575:4:34"],"nodeType":"IdentifierPath","referencedDeclaration":12726,"src":"4575:4:34"},"nodeType":"UsingForDirective","src":"4569:23:34","typeName":{"id":8702,"name":"uint256","nodeType":"ElementaryTypeName","src":"4584:7:34","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}},{"constant":false,"id":8706,"mutability":"immutable","name":"_asset","nameLocation":"4623:6:34","nodeType":"VariableDeclaration","scope":9385,"src":"4598:31:34","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_contract$_IERC20_$8679","typeString":"contract IERC20"},"typeName":{"id":8705,"nodeType":"UserDefinedTypeName","pathNode":{"id":8704,"name":"IERC20","nameLocations":["4598:6:34"],"nodeType":"IdentifierPath","referencedDeclaration":8679,"src":"4598:6:34"},"referencedDeclaration":8679,"src":"4598:6:34","typeDescriptions":{"typeIdentifier":"t_contract$_IERC20_$8679","typeString":"contract IERC20"}},"visibility":"private"},{"constant":false,"id":8708,"mutability":"immutable","name":"_underlyingDecimals","nameLocation":"4659:19:34","nodeType":"VariableDeclaration","scope":9385,"src":"4635:43:34","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"},"typeName":{"id":8707,"name":"uint8","nodeType":"ElementaryTypeName","src":"4635:5:34","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}},"visibility":"private"},{"documentation":{"id":8709,"nodeType":"StructuredDocumentation","src":"4685:92:34","text":" @dev Attempted to deposit more assets than the max amount for `receiver`."},"errorSelector":"79012fb2","id":8717,"name":"ERC4626ExceededMaxDeposit","nameLocation":"4788:25:34","nodeType":"ErrorDefinition","parameters":{"id":8716,"nodeType":"ParameterList","parameters":[{"constant":false,"id":8711,"mutability":"mutable","name":"receiver","nameLocation":"4822:8:34","nodeType":"VariableDeclaration","scope":8717,"src":"4814:16:34","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":8710,"name":"address","nodeType":"ElementaryTypeName","src":"4814:7:34","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":8713,"mutability":"mutable","name":"assets","nameLocation":"4840:6:34","nodeType":"VariableDeclaration","scope":8717,"src":"4832:14:34","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":8712,"name":"uint256","nodeType":"ElementaryTypeName","src":"4832:7:34","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":8715,"mutability":"mutable","name":"max","nameLocation":"4856:3:34","nodeType":"VariableDeclaration","scope":8717,"src":"4848:11:34","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":8714,"name":"uint256","nodeType":"ElementaryTypeName","src":"4848:7:34","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"4813:47:34"},"src":"4782:79:34"},{"documentation":{"id":8718,"nodeType":"StructuredDocumentation","src":"4867:89:34","text":" @dev Attempted to mint more shares than the max amount for `receiver`."},"errorSelector":"284ff667","id":8726,"name":"ERC4626ExceededMaxMint","nameLocation":"4967:22:34","nodeType":"ErrorDefinition","parameters":{"id":8725,"nodeType":"ParameterList","parameters":[{"constant":false,"id":8720,"mutability":"mutable","name":"receiver","nameLocation":"4998:8:34","nodeType":"VariableDeclaration","scope":8726,"src":"4990:16:34","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":8719,"name":"address","nodeType":"ElementaryTypeName","src":"4990:7:34","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":8722,"mutability":"mutable","name":"shares","nameLocation":"5016:6:34","nodeType":"VariableDeclaration","scope":8726,"src":"5008:14:34","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":8721,"name":"uint256","nodeType":"ElementaryTypeName","src":"5008:7:34","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":8724,"mutability":"mutable","name":"max","nameLocation":"5032:3:34","nodeType":"VariableDeclaration","scope":8726,"src":"5024:11:34","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":8723,"name":"uint256","nodeType":"ElementaryTypeName","src":"5024:7:34","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"4989:47:34"},"src":"4961:76:34"},{"documentation":{"id":8727,"nodeType":"StructuredDocumentation","src":"5043:93:34","text":" @dev Attempted to withdraw more assets than the max amount for `receiver`."},"errorSelector":"fe9cceec","id":8735,"name":"ERC4626ExceededMaxWithdraw","nameLocation":"5147:26:34","nodeType":"ErrorDefinition","parameters":{"id":8734,"nodeType":"ParameterList","parameters":[{"constant":false,"id":8729,"mutability":"mutable","name":"owner","nameLocation":"5182:5:34","nodeType":"VariableDeclaration","scope":8735,"src":"5174:13:34","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":8728,"name":"address","nodeType":"ElementaryTypeName","src":"5174:7:34","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":8731,"mutability":"mutable","name":"assets","nameLocation":"5197:6:34","nodeType":"VariableDeclaration","scope":8735,"src":"5189:14:34","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":8730,"name":"uint256","nodeType":"ElementaryTypeName","src":"5189:7:34","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":8733,"mutability":"mutable","name":"max","nameLocation":"5213:3:34","nodeType":"VariableDeclaration","scope":8735,"src":"5205:11:34","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":8732,"name":"uint256","nodeType":"ElementaryTypeName","src":"5205:7:34","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"5173:44:34"},"src":"5141:77:34"},{"documentation":{"id":8736,"nodeType":"StructuredDocumentation","src":"5224:91:34","text":" @dev Attempted to redeem more shares than the max amount for `receiver`."},"errorSelector":"b94abeec","id":8744,"name":"ERC4626ExceededMaxRedeem","nameLocation":"5326:24:34","nodeType":"ErrorDefinition","parameters":{"id":8743,"nodeType":"ParameterList","parameters":[{"constant":false,"id":8738,"mutability":"mutable","name":"owner","nameLocation":"5359:5:34","nodeType":"VariableDeclaration","scope":8744,"src":"5351:13:34","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":8737,"name":"address","nodeType":"ElementaryTypeName","src":"5351:7:34","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":8740,"mutability":"mutable","name":"shares","nameLocation":"5374:6:34","nodeType":"VariableDeclaration","scope":8744,"src":"5366:14:34","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":8739,"name":"uint256","nodeType":"ElementaryTypeName","src":"5366:7:34","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":8742,"mutability":"mutable","name":"max","nameLocation":"5390:3:34","nodeType":"VariableDeclaration","scope":8744,"src":"5382:11:34","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":8741,"name":"uint256","nodeType":"ElementaryTypeName","src":"5382:7:34","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"5350:44:34"},"src":"5320:75:34"},{"body":{"id":8770,"nodeType":"Block","src":"5554:168:34","statements":[{"assignments":[8752,8754],"declarations":[{"constant":false,"id":8752,"mutability":"mutable","name":"success","nameLocation":"5570:7:34","nodeType":"VariableDeclaration","scope":8770,"src":"5565:12:34","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":8751,"name":"bool","nodeType":"ElementaryTypeName","src":"5565:4:34","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"},{"constant":false,"id":8754,"mutability":"mutable","name":"assetDecimals","nameLocation":"5585:13:34","nodeType":"VariableDeclaration","scope":8770,"src":"5579:19:34","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"},"typeName":{"id":8753,"name":"uint8","nodeType":"ElementaryTypeName","src":"5579:5:34","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}},"visibility":"internal"}],"id":8758,"initialValue":{"arguments":[{"id":8756,"name":"asset_","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8748,"src":"5623:6:34","typeDescriptions":{"typeIdentifier":"t_contract$_IERC20_$8679","typeString":"contract IERC20"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_contract$_IERC20_$8679","typeString":"contract IERC20"}],"id":8755,"name":"_tryGetAssetDecimals","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8849,"src":"5602:20:34","typeDescriptions":{"typeIdentifier":"t_function_internal_view$_t_contract$_IERC20_$8679_$returns$_t_bool_$_t_uint8_$","typeString":"function (contract IERC20) view returns (bool,uint8)"}},"id":8757,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"5602:28:34","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$_t_bool_$_t_uint8_$","typeString":"tuple(bool,uint8)"}},"nodeType":"VariableDeclarationStatement","src":"5564:66:34"},{"expression":{"id":8764,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":8759,"name":"_underlyingDecimals","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8708,"src":"5640:19:34","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"condition":{"id":8760,"name":"success","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8752,"src":"5662:7:34","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"falseExpression":{"hexValue":"3138","id":8762,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"5688:2:34","typeDescriptions":{"typeIdentifier":"t_rational_18_by_1","typeString":"int_const 18"},"value":"18"},"id":8763,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"Conditional","src":"5662:28:34","trueExpression":{"id":8761,"name":"assetDecimals","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8754,"src":"5672:13:34","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}},"typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}},"src":"5640:50:34","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}},"id":8765,"nodeType":"ExpressionStatement","src":"5640:50:34"},{"expression":{"id":8768,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":8766,"name":"_asset","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8706,"src":"5700:6:34","typeDescriptions":{"typeIdentifier":"t_contract$_IERC20_$8679","typeString":"contract IERC20"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"id":8767,"name":"asset_","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8748,"src":"5709:6:34","typeDescriptions":{"typeIdentifier":"t_contract$_IERC20_$8679","typeString":"contract IERC20"}},"src":"5700:15:34","typeDescriptions":{"typeIdentifier":"t_contract$_IERC20_$8679","typeString":"contract IERC20"}},"id":8769,"nodeType":"ExpressionStatement","src":"5700:15:34"}]},"documentation":{"id":8745,"nodeType":"StructuredDocumentation","src":"5401:121:34","text":" @dev Set the underlying asset contract. This must be an ERC20-compatible contract (ERC-20 or ERC-777)."},"id":8771,"implemented":true,"kind":"constructor","modifiers":[],"name":"","nameLocation":"-1:-1:-1","nodeType":"FunctionDefinition","parameters":{"id":8749,"nodeType":"ParameterList","parameters":[{"constant":false,"id":8748,"mutability":"mutable","name":"asset_","nameLocation":"5546:6:34","nodeType":"VariableDeclaration","scope":8771,"src":"5539:13:34","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_contract$_IERC20_$8679","typeString":"contract IERC20"},"typeName":{"id":8747,"nodeType":"UserDefinedTypeName","pathNode":{"id":8746,"name":"IERC20","nameLocations":["5539:6:34"],"nodeType":"IdentifierPath","referencedDeclaration":8679,"src":"5539:6:34"},"referencedDeclaration":8679,"src":"5539:6:34","typeDescriptions":{"typeIdentifier":"t_contract$_IERC20_$8679","typeString":"contract IERC20"}},"visibility":"internal"}],"src":"5538:15:34"},"returnParameters":{"id":8750,"nodeType":"ParameterList","parameters":[],"src":"5554:0:34"},"scope":9385,"src":"5527:195:34","stateMutability":"nonpayable","virtual":false,"visibility":"internal"},{"body":{"id":8848,"nodeType":"Block","src":"5962:510:34","statements":[{"assignments":[8786],"declarations":[{"constant":false,"id":8786,"mutability":"mutable","name":"ptr","nameLocation":"5987:3:34","nodeType":"VariableDeclaration","scope":8848,"src":"5972:18:34","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_userDefinedValueType$_Pointer_$10476","typeString":"Memory.Pointer"},"typeName":{"id":8785,"nodeType":"UserDefinedTypeName","pathNode":{"id":8784,"name":"Memory.Pointer","nameLocations":["5972:6:34","5979:7:34"],"nodeType":"IdentifierPath","referencedDeclaration":10476,"src":"5972:14:34"},"referencedDeclaration":10476,"src":"5972:14:34","typeDescriptions":{"typeIdentifier":"t_userDefinedValueType$_Pointer_$10476","typeString":"Memory.Pointer"}},"visibility":"internal"}],"id":8790,"initialValue":{"arguments":[],"expression":{"argumentTypes":[],"expression":{"id":8787,"name":"Memory","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10769,"src":"5993:6:34","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_Memory_$10769_$","typeString":"type(library Memory)"}},"id":8788,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"6000:20:34","memberName":"getFreeMemoryPointer","nodeType":"MemberAccess","referencedDeclaration":10485,"src":"5993:27:34","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$__$returns$_t_userDefinedValueType$_Pointer_$10476_$","typeString":"function () pure returns (Memory.Pointer)"}},"id":8789,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"5993:29:34","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_userDefinedValueType$_Pointer_$10476","typeString":"Memory.Pointer"}},"nodeType":"VariableDeclarationStatement","src":"5972:50:34"},{"assignments":[8792,8794,null],"declarations":[{"constant":false,"id":8792,"mutability":"mutable","name":"success","nameLocation":"6038:7:34","nodeType":"VariableDeclaration","scope":8848,"src":"6033:12:34","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":8791,"name":"bool","nodeType":"ElementaryTypeName","src":"6033:4:34","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"},{"constant":false,"id":8794,"mutability":"mutable","name":"returnedDecimals","nameLocation":"6055:16:34","nodeType":"VariableDeclaration","scope":8848,"src":"6047:24:34","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":8793,"name":"bytes32","nodeType":"ElementaryTypeName","src":"6047:7:34","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"},null],"id":8808,"initialValue":{"arguments":[{"arguments":[{"id":8799,"name":"asset_","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8775,"src":"6135:6:34","typeDescriptions":{"typeIdentifier":"t_contract$_IERC20_$8679","typeString":"contract IERC20"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_contract$_IERC20_$8679","typeString":"contract IERC20"}],"id":8798,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"6127:7:34","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":8797,"name":"address","nodeType":"ElementaryTypeName","src":"6127:7:34","typeDescriptions":{}}},"id":8800,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"6127:15:34","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"arguments":[{"expression":{"id":8803,"name":"IERC20Metadata","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9411,"src":"6171:14:34","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_IERC20Metadata_$9411_$","typeString":"type(contract IERC20Metadata)"}},"id":8804,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberLocation":"6186:8:34","memberName":"decimals","nodeType":"MemberAccess","referencedDeclaration":9410,"src":"6171:23:34","typeDescriptions":{"typeIdentifier":"t_function_declaration_view$__$returns$_t_uint8_$","typeString":"function IERC20Metadata.decimals() view returns (uint8)"}},{"components":[],"id":8805,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"TupleExpression","src":"6196:2:34","typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_function_declaration_view$__$returns$_t_uint8_$","typeString":"function IERC20Metadata.decimals() view returns (uint8)"},{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}],"expression":{"id":8801,"name":"abi","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-1,"src":"6156:3:34","typeDescriptions":{"typeIdentifier":"t_magic_abi","typeString":"abi"}},"id":8802,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberLocation":"6160:10:34","memberName":"encodeCall","nodeType":"MemberAccess","src":"6156:14:34","typeDescriptions":{"typeIdentifier":"t_function_abiencodecall_pure$__$returns$_t_bytes_memory_ptr_$","typeString":"function () pure returns (bytes memory)"}},"id":8806,"isConstant":false,"isLValue":false,"isPure":true,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"6156:43:34","tryCall":false,"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":8795,"name":"LowLevelCall","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10467,"src":"6077:12:34","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_LowLevelCall_$10467_$","typeString":"type(library LowLevelCall)"}},"id":8796,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"6090:23:34","memberName":"staticcallReturn64Bytes","nodeType":"MemberAccess","referencedDeclaration":10409,"src":"6077:36:34","typeDescriptions":{"typeIdentifier":"t_function_internal_view$_t_address_$_t_bytes_memory_ptr_$returns$_t_bool_$_t_bytes32_$_t_bytes32_$","typeString":"function (address,bytes memory) view returns (bool,bytes32,bytes32)"}},"id":8807,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"6077:132:34","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$_t_bool_$_t_bytes32_$_t_bytes32_$","typeString":"tuple(bool,bytes32,bytes32)"}},"nodeType":"VariableDeclarationStatement","src":"6032:177:34"},{"expression":{"arguments":[{"id":8812,"name":"ptr","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8786,"src":"6247:3:34","typeDescriptions":{"typeIdentifier":"t_userDefinedValueType$_Pointer_$10476","typeString":"Memory.Pointer"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_userDefinedValueType$_Pointer_$10476","typeString":"Memory.Pointer"}],"expression":{"id":8809,"name":"Memory","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10769,"src":"6219:6:34","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_Memory_$10769_$","typeString":"type(library Memory)"}},"id":8811,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"6226:20:34","memberName":"setFreeMemoryPointer","nodeType":"MemberAccess","referencedDeclaration":10494,"src":"6219:27:34","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_userDefinedValueType$_Pointer_$10476_$returns$__$","typeString":"function (Memory.Pointer) pure"}},"id":8813,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"6219:32:34","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":8814,"nodeType":"ExpressionStatement","src":"6219:32:34"},{"expression":{"condition":{"components":[{"commonType":{"typeIdentifier":"t_bool","typeString":"bool"},"id":8832,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"commonType":{"typeIdentifier":"t_bool","typeString":"bool"},"id":8821,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":8815,"name":"success","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8792,"src":"6282:7:34","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"nodeType":"BinaryOperation","operator":"&&","rightExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":8820,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"arguments":[],"expression":{"argumentTypes":[],"expression":{"id":8816,"name":"LowLevelCall","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10467,"src":"6293:12:34","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_LowLevelCall_$10467_$","typeString":"type(library LowLevelCall)"}},"id":8817,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"6306:14:34","memberName":"returnDataSize","nodeType":"MemberAccess","referencedDeclaration":10445,"src":"6293:27:34","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$__$returns$_t_uint256_$","typeString":"function () pure returns (uint256)"}},"id":8818,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"6293:29:34","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">=","rightExpression":{"hexValue":"3332","id":8819,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"6326:2:34","typeDescriptions":{"typeIdentifier":"t_rational_32_by_1","typeString":"int_const 32"},"value":"32"},"src":"6293:35:34","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"src":"6282:46:34","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"nodeType":"BinaryOperation","operator":"&&","rightExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":8831,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"arguments":[{"id":8824,"name":"returnedDecimals","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8794,"src":"6340:16:34","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes32","typeString":"bytes32"}],"id":8823,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"6332:7:34","typeDescriptions":{"typeIdentifier":"t_type$_t_uint256_$","typeString":"type(uint256)"},"typeName":{"id":8822,"name":"uint256","nodeType":"ElementaryTypeName","src":"6332:7:34","typeDescriptions":{}}},"id":8825,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"6332:25:34","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"<=","rightExpression":{"expression":{"arguments":[{"id":8828,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"6366:5:34","typeDescriptions":{"typeIdentifier":"t_type$_t_uint8_$","typeString":"type(uint8)"},"typeName":{"id":8827,"name":"uint8","nodeType":"ElementaryTypeName","src":"6366:5:34","typeDescriptions":{}}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_type$_t_uint8_$","typeString":"type(uint8)"}],"id":8826,"name":"type","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-27,"src":"6361:4:34","typeDescriptions":{"typeIdentifier":"t_function_metatype_pure$__$returns$__$","typeString":"function () pure"}},"id":8829,"isConstant":false,"isLValue":false,"isPure":true,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"6361:11:34","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_magic_meta_type_t_uint8","typeString":"type(uint8)"}},"id":8830,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberLocation":"6373:3:34","memberName":"max","nodeType":"MemberAccess","src":"6361:15:34","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}},"src":"6332:44:34","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"src":"6282:94:34","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}}],"id":8833,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"6281:96:34","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"falseExpression":{"components":[{"hexValue":"66616c7365","id":8843,"isConstant":false,"isLValue":false,"isPure":true,"kind":"bool","lValueRequested":false,"nodeType":"Literal","src":"6456:5:34","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"value":"false"},{"hexValue":"30","id":8844,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"6463:1:34","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"}],"id":8845,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"TupleExpression","src":"6455:10:34","typeDescriptions":{"typeIdentifier":"t_tuple$_t_bool_$_t_rational_0_by_1_$","typeString":"tuple(bool,int_const 0)"}},"id":8846,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"Conditional","src":"6281:184:34","trueExpression":{"components":[{"hexValue":"74727565","id":8834,"isConstant":false,"isLValue":false,"isPure":true,"kind":"bool","lValueRequested":false,"nodeType":"Literal","src":"6397:4:34","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"value":"true"},{"arguments":[{"arguments":[{"id":8839,"name":"returnedDecimals","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8794,"src":"6417:16:34","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes32","typeString":"bytes32"}],"id":8838,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"6409:7:34","typeDescriptions":{"typeIdentifier":"t_type$_t_uint256_$","typeString":"type(uint256)"},"typeName":{"id":8837,"name":"uint256","nodeType":"ElementaryTypeName","src":"6409:7:34","typeDescriptions":{}}},"id":8840,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"6409:25:34","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":8836,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"6403:5:34","typeDescriptions":{"typeIdentifier":"t_type$_t_uint8_$","typeString":"type(uint8)"},"typeName":{"id":8835,"name":"uint8","nodeType":"ElementaryTypeName","src":"6403:5:34","typeDescriptions":{}}},"id":8841,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"6403:32:34","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}}],"id":8842,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"6396:40:34","typeDescriptions":{"typeIdentifier":"t_tuple$_t_bool_$_t_uint8_$","typeString":"tuple(bool,uint8)"}},"typeDescriptions":{"typeIdentifier":"t_tuple$_t_bool_$_t_uint8_$","typeString":"tuple(bool,uint8)"}},"functionReturnParameters":8781,"id":8847,"nodeType":"Return","src":"6262:203:34"}]},"documentation":{"id":8772,"nodeType":"StructuredDocumentation","src":"5728:132:34","text":" @dev Attempts to fetch the asset decimals. A return value of false indicates that the attempt failed in some way."},"id":8849,"implemented":true,"kind":"function","modifiers":[],"name":"_tryGetAssetDecimals","nameLocation":"5874:20:34","nodeType":"FunctionDefinition","parameters":{"id":8776,"nodeType":"ParameterList","parameters":[{"constant":false,"id":8775,"mutability":"mutable","name":"asset_","nameLocation":"5902:6:34","nodeType":"VariableDeclaration","scope":8849,"src":"5895:13:34","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_contract$_IERC20_$8679","typeString":"contract IERC20"},"typeName":{"id":8774,"nodeType":"UserDefinedTypeName","pathNode":{"id":8773,"name":"IERC20","nameLocations":["5895:6:34"],"nodeType":"IdentifierPath","referencedDeclaration":8679,"src":"5895:6:34"},"referencedDeclaration":8679,"src":"5895:6:34","typeDescriptions":{"typeIdentifier":"t_contract$_IERC20_$8679","typeString":"contract IERC20"}},"visibility":"internal"}],"src":"5894:15:34"},"returnParameters":{"id":8781,"nodeType":"ParameterList","parameters":[{"constant":false,"id":8778,"mutability":"mutable","name":"ok","nameLocation":"5937:2:34","nodeType":"VariableDeclaration","scope":8849,"src":"5932:7:34","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":8777,"name":"bool","nodeType":"ElementaryTypeName","src":"5932:4:34","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"},{"constant":false,"id":8780,"mutability":"mutable","name":"assetDecimals","nameLocation":"5947:13:34","nodeType":"VariableDeclaration","scope":8849,"src":"5941:19:34","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"},"typeName":{"id":8779,"name":"uint8","nodeType":"ElementaryTypeName","src":"5941:5:34","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}},"visibility":"internal"}],"src":"5931:30:34"},"scope":9385,"src":"5865:607:34","stateMutability":"view","virtual":false,"visibility":"private"},{"baseFunctions":[8165,9410],"body":{"id":8863,"nodeType":"Block","src":"6965:63:34","statements":[{"expression":{"commonType":{"typeIdentifier":"t_uint8","typeString":"uint8"},"id":8861,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":8858,"name":"_underlyingDecimals","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8708,"src":"6982:19:34","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}},"nodeType":"BinaryOperation","operator":"+","rightExpression":{"arguments":[],"expression":{"argumentTypes":[],"id":8859,"name":"_decimalsOffset","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9384,"src":"7004:15:34","typeDescriptions":{"typeIdentifier":"t_function_internal_view$__$returns$_t_uint8_$","typeString":"function () view returns (uint8)"}},"id":8860,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"7004:17:34","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}},"src":"6982:39:34","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}},"functionReturnParameters":8857,"id":8862,"nodeType":"Return","src":"6975:46:34"}]},"documentation":{"id":8850,"nodeType":"StructuredDocumentation","src":"6478:394:34","text":" @dev Decimals are computed by adding the decimal offset on top of the underlying asset's decimals. This\n \"original\" value is cached during construction of the vault contract. If this read operation fails (e.g., the\n asset has not been created yet), a default of 18 is used to represent the underlying asset's decimals.\n See {IERC20Metadata-decimals}."},"functionSelector":"313ce567","id":8864,"implemented":true,"kind":"function","modifiers":[],"name":"decimals","nameLocation":"6886:8:34","nodeType":"FunctionDefinition","overrides":{"id":8854,"nodeType":"OverrideSpecifier","overrides":[{"id":8852,"name":"IERC20Metadata","nameLocations":["6926:14:34"],"nodeType":"IdentifierPath","referencedDeclaration":9411,"src":"6926:14:34"},{"id":8853,"name":"ERC20","nameLocations":["6942:5:34"],"nodeType":"IdentifierPath","referencedDeclaration":8601,"src":"6942:5:34"}],"src":"6917:31:34"},"parameters":{"id":8851,"nodeType":"ParameterList","parameters":[],"src":"6894:2:34"},"returnParameters":{"id":8857,"nodeType":"ParameterList","parameters":[{"constant":false,"id":8856,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":8864,"src":"6958:5:34","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"},"typeName":{"id":8855,"name":"uint8","nodeType":"ElementaryTypeName","src":"6958:5:34","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}},"visibility":"internal"}],"src":"6957:7:34"},"scope":9385,"src":"6877:151:34","stateMutability":"view","virtual":true,"visibility":"public"},{"baseFunctions":[6996],"body":{"id":8875,"nodeType":"Block","src":"7118:39:34","statements":[{"expression":{"arguments":[{"id":8872,"name":"_asset","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8706,"src":"7143:6:34","typeDescriptions":{"typeIdentifier":"t_contract$_IERC20_$8679","typeString":"contract IERC20"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_contract$_IERC20_$8679","typeString":"contract IERC20"}],"id":8871,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"7135:7:34","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":8870,"name":"address","nodeType":"ElementaryTypeName","src":"7135:7:34","typeDescriptions":{}}},"id":8873,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"7135:15:34","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"functionReturnParameters":8869,"id":8874,"nodeType":"Return","src":"7128:22:34"}]},"documentation":{"id":8865,"nodeType":"StructuredDocumentation","src":"7034:24:34","text":"@inheritdoc IERC4626"},"functionSelector":"38d52e0f","id":8876,"implemented":true,"kind":"function","modifiers":[],"name":"asset","nameLocation":"7072:5:34","nodeType":"FunctionDefinition","parameters":{"id":8866,"nodeType":"ParameterList","parameters":[],"src":"7077:2:34"},"returnParameters":{"id":8869,"nodeType":"ParameterList","parameters":[{"constant":false,"id":8868,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":8876,"src":"7109:7:34","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":8867,"name":"address","nodeType":"ElementaryTypeName","src":"7109:7:34","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"7108:9:34"},"scope":9385,"src":"7063:94:34","stateMutability":"view","virtual":true,"visibility":"public"},{"baseFunctions":[7002],"body":{"id":8893,"nodeType":"Block","src":"7253:64:34","statements":[{"expression":{"arguments":[{"arguments":[{"id":8889,"name":"this","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-28,"src":"7304:4:34","typeDescriptions":{"typeIdentifier":"t_contract$_ERC4626_$9385","typeString":"contract ERC4626"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_contract$_ERC4626_$9385","typeString":"contract ERC4626"}],"id":8888,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"7296:7:34","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":8887,"name":"address","nodeType":"ElementaryTypeName","src":"7296:7:34","typeDescriptions":{}}},"id":8890,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"7296:13:34","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"expression":{"arguments":[{"arguments":[],"expression":{"argumentTypes":[],"id":8883,"name":"asset","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8876,"src":"7277:5:34","typeDescriptions":{"typeIdentifier":"t_function_internal_view$__$returns$_t_address_$","typeString":"function () view returns (address)"}},"id":8884,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"7277:7:34","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"id":8882,"name":"IERC20","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8679,"src":"7270:6:34","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_IERC20_$8679_$","typeString":"type(contract IERC20)"}},"id":8885,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"7270:15:34","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_contract$_IERC20_$8679","typeString":"contract IERC20"}},"id":8886,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"7286:9:34","memberName":"balanceOf","nodeType":"MemberAccess","referencedDeclaration":8636,"src":"7270:25:34","typeDescriptions":{"typeIdentifier":"t_function_external_view$_t_address_$returns$_t_uint256_$","typeString":"function (address) view external returns (uint256)"}},"id":8891,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"7270:40:34","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"functionReturnParameters":8881,"id":8892,"nodeType":"Return","src":"7263:47:34"}]},"documentation":{"id":8877,"nodeType":"StructuredDocumentation","src":"7163:24:34","text":"@inheritdoc IERC4626"},"functionSelector":"01e1d114","id":8894,"implemented":true,"kind":"function","modifiers":[],"name":"totalAssets","nameLocation":"7201:11:34","nodeType":"FunctionDefinition","parameters":{"id":8878,"nodeType":"ParameterList","parameters":[],"src":"7212:2:34"},"returnParameters":{"id":8881,"nodeType":"ParameterList","parameters":[{"constant":false,"id":8880,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":8894,"src":"7244:7:34","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":8879,"name":"uint256","nodeType":"ElementaryTypeName","src":"7244:7:34","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"7243:9:34"},"scope":9385,"src":"7192:125:34","stateMutability":"view","virtual":true,"visibility":"public"},{"baseFunctions":[7010],"body":{"id":8909,"nodeType":"Block","src":"7431:69:34","statements":[{"expression":{"arguments":[{"id":8903,"name":"assets","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8897,"src":"7465:6:34","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"expression":{"expression":{"id":8904,"name":"Math","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":12726,"src":"7473:4:34","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_Math_$12726_$","typeString":"type(library Math)"}},"id":8905,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"7478:8:34","memberName":"Rounding","nodeType":"MemberAccess","referencedDeclaration":11096,"src":"7473:13:34","typeDescriptions":{"typeIdentifier":"t_type$_t_enum$_Rounding_$11096_$","typeString":"type(enum Math.Rounding)"}},"id":8906,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberLocation":"7487:5:34","memberName":"Floor","nodeType":"MemberAccess","referencedDeclaration":11092,"src":"7473:19:34","typeDescriptions":{"typeIdentifier":"t_enum$_Rounding_$11096","typeString":"enum Math.Rounding"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_enum$_Rounding_$11096","typeString":"enum Math.Rounding"}],"id":8902,"name":"_convertToShares","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9258,"src":"7448:16:34","typeDescriptions":{"typeIdentifier":"t_function_internal_view$_t_uint256_$_t_enum$_Rounding_$11096_$returns$_t_uint256_$","typeString":"function (uint256,enum Math.Rounding) view returns (uint256)"}},"id":8907,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"7448:45:34","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"functionReturnParameters":8901,"id":8908,"nodeType":"Return","src":"7441:52:34"}]},"documentation":{"id":8895,"nodeType":"StructuredDocumentation","src":"7323:24:34","text":"@inheritdoc IERC4626"},"functionSelector":"c6e6f592","id":8910,"implemented":true,"kind":"function","modifiers":[],"name":"convertToShares","nameLocation":"7361:15:34","nodeType":"FunctionDefinition","parameters":{"id":8898,"nodeType":"ParameterList","parameters":[{"constant":false,"id":8897,"mutability":"mutable","name":"assets","nameLocation":"7385:6:34","nodeType":"VariableDeclaration","scope":8910,"src":"7377:14:34","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":8896,"name":"uint256","nodeType":"ElementaryTypeName","src":"7377:7:34","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"7376:16:34"},"returnParameters":{"id":8901,"nodeType":"ParameterList","parameters":[{"constant":false,"id":8900,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":8910,"src":"7422:7:34","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":8899,"name":"uint256","nodeType":"ElementaryTypeName","src":"7422:7:34","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"7421:9:34"},"scope":9385,"src":"7352:148:34","stateMutability":"view","virtual":true,"visibility":"public"},{"baseFunctions":[7018],"body":{"id":8925,"nodeType":"Block","src":"7614:69:34","statements":[{"expression":{"arguments":[{"id":8919,"name":"shares","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8913,"src":"7648:6:34","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"expression":{"expression":{"id":8920,"name":"Math","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":12726,"src":"7656:4:34","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_Math_$12726_$","typeString":"type(library Math)"}},"id":8921,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"7661:8:34","memberName":"Rounding","nodeType":"MemberAccess","referencedDeclaration":11096,"src":"7656:13:34","typeDescriptions":{"typeIdentifier":"t_type$_t_enum$_Rounding_$11096_$","typeString":"type(enum Math.Rounding)"}},"id":8922,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberLocation":"7670:5:34","memberName":"Floor","nodeType":"MemberAccess","referencedDeclaration":11092,"src":"7656:19:34","typeDescriptions":{"typeIdentifier":"t_enum$_Rounding_$11096","typeString":"enum Math.Rounding"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_enum$_Rounding_$11096","typeString":"enum Math.Rounding"}],"id":8918,"name":"_convertToAssets","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9286,"src":"7631:16:34","typeDescriptions":{"typeIdentifier":"t_function_internal_view$_t_uint256_$_t_enum$_Rounding_$11096_$returns$_t_uint256_$","typeString":"function (uint256,enum Math.Rounding) view returns (uint256)"}},"id":8923,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"7631:45:34","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"functionReturnParameters":8917,"id":8924,"nodeType":"Return","src":"7624:52:34"}]},"documentation":{"id":8911,"nodeType":"StructuredDocumentation","src":"7506:24:34","text":"@inheritdoc IERC4626"},"functionSelector":"07a2d13a","id":8926,"implemented":true,"kind":"function","modifiers":[],"name":"convertToAssets","nameLocation":"7544:15:34","nodeType":"FunctionDefinition","parameters":{"id":8914,"nodeType":"ParameterList","parameters":[{"constant":false,"id":8913,"mutability":"mutable","name":"shares","nameLocation":"7568:6:34","nodeType":"VariableDeclaration","scope":8926,"src":"7560:14:34","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":8912,"name":"uint256","nodeType":"ElementaryTypeName","src":"7560:7:34","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"7559:16:34"},"returnParameters":{"id":8917,"nodeType":"ParameterList","parameters":[{"constant":false,"id":8916,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":8926,"src":"7605:7:34","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":8915,"name":"uint256","nodeType":"ElementaryTypeName","src":"7605:7:34","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"7604:9:34"},"scope":9385,"src":"7535:148:34","stateMutability":"view","virtual":true,"visibility":"public"},{"baseFunctions":[7026],"body":{"id":8940,"nodeType":"Block","src":"7785:41:34","statements":[{"expression":{"expression":{"arguments":[{"id":8936,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"7807:7:34","typeDescriptions":{"typeIdentifier":"t_type$_t_uint256_$","typeString":"type(uint256)"},"typeName":{"id":8935,"name":"uint256","nodeType":"ElementaryTypeName","src":"7807:7:34","typeDescriptions":{}}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_type$_t_uint256_$","typeString":"type(uint256)"}],"id":8934,"name":"type","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-27,"src":"7802:4:34","typeDescriptions":{"typeIdentifier":"t_function_metatype_pure$__$returns$__$","typeString":"function () pure"}},"id":8937,"isConstant":false,"isLValue":false,"isPure":true,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"7802:13:34","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_magic_meta_type_t_uint256","typeString":"type(uint256)"}},"id":8938,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberLocation":"7816:3:34","memberName":"max","nodeType":"MemberAccess","src":"7802:17:34","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"functionReturnParameters":8933,"id":8939,"nodeType":"Return","src":"7795:24:34"}]},"documentation":{"id":8927,"nodeType":"StructuredDocumentation","src":"7689:24:34","text":"@inheritdoc IERC4626"},"functionSelector":"402d267d","id":8941,"implemented":true,"kind":"function","modifiers":[],"name":"maxDeposit","nameLocation":"7727:10:34","nodeType":"FunctionDefinition","parameters":{"id":8930,"nodeType":"ParameterList","parameters":[{"constant":false,"id":8929,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":8941,"src":"7738:7:34","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":8928,"name":"address","nodeType":"ElementaryTypeName","src":"7738:7:34","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"7737:9:34"},"returnParameters":{"id":8933,"nodeType":"ParameterList","parameters":[{"constant":false,"id":8932,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":8941,"src":"7776:7:34","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":8931,"name":"uint256","nodeType":"ElementaryTypeName","src":"7776:7:34","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"7775:9:34"},"scope":9385,"src":"7718:108:34","stateMutability":"view","virtual":true,"visibility":"public"},{"baseFunctions":[7052],"body":{"id":8955,"nodeType":"Block","src":"7925:41:34","statements":[{"expression":{"expression":{"arguments":[{"id":8951,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"7947:7:34","typeDescriptions":{"typeIdentifier":"t_type$_t_uint256_$","typeString":"type(uint256)"},"typeName":{"id":8950,"name":"uint256","nodeType":"ElementaryTypeName","src":"7947:7:34","typeDescriptions":{}}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_type$_t_uint256_$","typeString":"type(uint256)"}],"id":8949,"name":"type","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-27,"src":"7942:4:34","typeDescriptions":{"typeIdentifier":"t_function_metatype_pure$__$returns$__$","typeString":"function () pure"}},"id":8952,"isConstant":false,"isLValue":false,"isPure":true,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"7942:13:34","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_magic_meta_type_t_uint256","typeString":"type(uint256)"}},"id":8953,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberLocation":"7956:3:34","memberName":"max","nodeType":"MemberAccess","src":"7942:17:34","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"functionReturnParameters":8948,"id":8954,"nodeType":"Return","src":"7935:24:34"}]},"documentation":{"id":8942,"nodeType":"StructuredDocumentation","src":"7832:24:34","text":"@inheritdoc IERC4626"},"functionSelector":"c63d75b6","id":8956,"implemented":true,"kind":"function","modifiers":[],"name":"maxMint","nameLocation":"7870:7:34","nodeType":"FunctionDefinition","parameters":{"id":8945,"nodeType":"ParameterList","parameters":[{"constant":false,"id":8944,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":8956,"src":"7878:7:34","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":8943,"name":"address","nodeType":"ElementaryTypeName","src":"7878:7:34","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"7877:9:34"},"returnParameters":{"id":8948,"nodeType":"ParameterList","parameters":[{"constant":false,"id":8947,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":8956,"src":"7916:7:34","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":8946,"name":"uint256","nodeType":"ElementaryTypeName","src":"7916:7:34","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"7915:9:34"},"scope":9385,"src":"7861:105:34","stateMutability":"view","virtual":true,"visibility":"public"},{"baseFunctions":[7078],"body":{"id":8970,"nodeType":"Block","src":"8075:55:34","statements":[{"expression":{"arguments":[{"arguments":[{"id":8966,"name":"owner","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8959,"src":"8116:5:34","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"id":8965,"name":"maxRedeem","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8984,"src":"8106:9:34","typeDescriptions":{"typeIdentifier":"t_function_internal_view$_t_address_$returns$_t_uint256_$","typeString":"function (address) view returns (uint256)"}},"id":8967,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"8106:16:34","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":8964,"name":"previewRedeem","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9048,"src":"8092:13:34","typeDescriptions":{"typeIdentifier":"t_function_internal_view$_t_uint256_$returns$_t_uint256_$","typeString":"function (uint256) view returns (uint256)"}},"id":8968,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"8092:31:34","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"functionReturnParameters":8963,"id":8969,"nodeType":"Return","src":"8085:38:34"}]},"documentation":{"id":8957,"nodeType":"StructuredDocumentation","src":"7972:24:34","text":"@inheritdoc IERC4626"},"functionSelector":"ce96cb77","id":8971,"implemented":true,"kind":"function","modifiers":[],"name":"maxWithdraw","nameLocation":"8010:11:34","nodeType":"FunctionDefinition","parameters":{"id":8960,"nodeType":"ParameterList","parameters":[{"constant":false,"id":8959,"mutability":"mutable","name":"owner","nameLocation":"8030:5:34","nodeType":"VariableDeclaration","scope":8971,"src":"8022:13:34","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":8958,"name":"address","nodeType":"ElementaryTypeName","src":"8022:7:34","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"8021:15:34"},"returnParameters":{"id":8963,"nodeType":"ParameterList","parameters":[{"constant":false,"id":8962,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":8971,"src":"8066:7:34","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":8961,"name":"uint256","nodeType":"ElementaryTypeName","src":"8066:7:34","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"8065:9:34"},"scope":9385,"src":"8001:129:34","stateMutability":"view","virtual":true,"visibility":"public"},{"baseFunctions":[7106],"body":{"id":8983,"nodeType":"Block","src":"8237:40:34","statements":[{"expression":{"arguments":[{"id":8980,"name":"owner","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8974,"src":"8264:5:34","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"id":8979,"name":"balanceOf","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8187,"src":"8254:9:34","typeDescriptions":{"typeIdentifier":"t_function_internal_view$_t_address_$returns$_t_uint256_$","typeString":"function (address) view returns (uint256)"}},"id":8981,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"8254:16:34","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"functionReturnParameters":8978,"id":8982,"nodeType":"Return","src":"8247:23:34"}]},"documentation":{"id":8972,"nodeType":"StructuredDocumentation","src":"8136:24:34","text":"@inheritdoc IERC4626"},"functionSelector":"d905777e","id":8984,"implemented":true,"kind":"function","modifiers":[],"name":"maxRedeem","nameLocation":"8174:9:34","nodeType":"FunctionDefinition","parameters":{"id":8975,"nodeType":"ParameterList","parameters":[{"constant":false,"id":8974,"mutability":"mutable","name":"owner","nameLocation":"8192:5:34","nodeType":"VariableDeclaration","scope":8984,"src":"8184:13:34","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":8973,"name":"address","nodeType":"ElementaryTypeName","src":"8184:7:34","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"8183:15:34"},"returnParameters":{"id":8978,"nodeType":"ParameterList","parameters":[{"constant":false,"id":8977,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":8984,"src":"8228:7:34","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":8976,"name":"uint256","nodeType":"ElementaryTypeName","src":"8228:7:34","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"8227:9:34"},"scope":9385,"src":"8165:112:34","stateMutability":"view","virtual":true,"visibility":"public"},{"baseFunctions":[7034],"body":{"id":8999,"nodeType":"Block","src":"8390:69:34","statements":[{"expression":{"arguments":[{"id":8993,"name":"assets","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8987,"src":"8424:6:34","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"expression":{"expression":{"id":8994,"name":"Math","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":12726,"src":"8432:4:34","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_Math_$12726_$","typeString":"type(library Math)"}},"id":8995,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"8437:8:34","memberName":"Rounding","nodeType":"MemberAccess","referencedDeclaration":11096,"src":"8432:13:34","typeDescriptions":{"typeIdentifier":"t_type$_t_enum$_Rounding_$11096_$","typeString":"type(enum Math.Rounding)"}},"id":8996,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberLocation":"8446:5:34","memberName":"Floor","nodeType":"MemberAccess","referencedDeclaration":11092,"src":"8432:19:34","typeDescriptions":{"typeIdentifier":"t_enum$_Rounding_$11096","typeString":"enum Math.Rounding"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_enum$_Rounding_$11096","typeString":"enum Math.Rounding"}],"id":8992,"name":"_convertToShares","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9258,"src":"8407:16:34","typeDescriptions":{"typeIdentifier":"t_function_internal_view$_t_uint256_$_t_enum$_Rounding_$11096_$returns$_t_uint256_$","typeString":"function (uint256,enum Math.Rounding) view returns (uint256)"}},"id":8997,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"8407:45:34","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"functionReturnParameters":8991,"id":8998,"nodeType":"Return","src":"8400:52:34"}]},"documentation":{"id":8985,"nodeType":"StructuredDocumentation","src":"8283:24:34","text":"@inheritdoc IERC4626"},"functionSelector":"ef8b30f7","id":9000,"implemented":true,"kind":"function","modifiers":[],"name":"previewDeposit","nameLocation":"8321:14:34","nodeType":"FunctionDefinition","parameters":{"id":8988,"nodeType":"ParameterList","parameters":[{"constant":false,"id":8987,"mutability":"mutable","name":"assets","nameLocation":"8344:6:34","nodeType":"VariableDeclaration","scope":9000,"src":"8336:14:34","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":8986,"name":"uint256","nodeType":"ElementaryTypeName","src":"8336:7:34","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"8335:16:34"},"returnParameters":{"id":8991,"nodeType":"ParameterList","parameters":[{"constant":false,"id":8990,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":9000,"src":"8381:7:34","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":8989,"name":"uint256","nodeType":"ElementaryTypeName","src":"8381:7:34","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"8380:9:34"},"scope":9385,"src":"8312:147:34","stateMutability":"view","virtual":true,"visibility":"public"},{"baseFunctions":[7060],"body":{"id":9015,"nodeType":"Block","src":"8569:68:34","statements":[{"expression":{"arguments":[{"id":9009,"name":"shares","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9003,"src":"8603:6:34","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"expression":{"expression":{"id":9010,"name":"Math","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":12726,"src":"8611:4:34","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_Math_$12726_$","typeString":"type(library Math)"}},"id":9011,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"8616:8:34","memberName":"Rounding","nodeType":"MemberAccess","referencedDeclaration":11096,"src":"8611:13:34","typeDescriptions":{"typeIdentifier":"t_type$_t_enum$_Rounding_$11096_$","typeString":"type(enum Math.Rounding)"}},"id":9012,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberLocation":"8625:4:34","memberName":"Ceil","nodeType":"MemberAccess","referencedDeclaration":11093,"src":"8611:18:34","typeDescriptions":{"typeIdentifier":"t_enum$_Rounding_$11096","typeString":"enum Math.Rounding"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_enum$_Rounding_$11096","typeString":"enum Math.Rounding"}],"id":9008,"name":"_convertToAssets","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9286,"src":"8586:16:34","typeDescriptions":{"typeIdentifier":"t_function_internal_view$_t_uint256_$_t_enum$_Rounding_$11096_$returns$_t_uint256_$","typeString":"function (uint256,enum Math.Rounding) view returns (uint256)"}},"id":9013,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"8586:44:34","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"functionReturnParameters":9007,"id":9014,"nodeType":"Return","src":"8579:51:34"}]},"documentation":{"id":9001,"nodeType":"StructuredDocumentation","src":"8465:24:34","text":"@inheritdoc IERC4626"},"functionSelector":"b3d7f6b9","id":9016,"implemented":true,"kind":"function","modifiers":[],"name":"previewMint","nameLocation":"8503:11:34","nodeType":"FunctionDefinition","parameters":{"id":9004,"nodeType":"ParameterList","parameters":[{"constant":false,"id":9003,"mutability":"mutable","name":"shares","nameLocation":"8523:6:34","nodeType":"VariableDeclaration","scope":9016,"src":"8515:14:34","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":9002,"name":"uint256","nodeType":"ElementaryTypeName","src":"8515:7:34","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"8514:16:34"},"returnParameters":{"id":9007,"nodeType":"ParameterList","parameters":[{"constant":false,"id":9006,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":9016,"src":"8560:7:34","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":9005,"name":"uint256","nodeType":"ElementaryTypeName","src":"8560:7:34","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"8559:9:34"},"scope":9385,"src":"8494:143:34","stateMutability":"view","virtual":true,"visibility":"public"},{"baseFunctions":[7086],"body":{"id":9031,"nodeType":"Block","src":"8751:68:34","statements":[{"expression":{"arguments":[{"id":9025,"name":"assets","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9019,"src":"8785:6:34","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"expression":{"expression":{"id":9026,"name":"Math","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":12726,"src":"8793:4:34","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_Math_$12726_$","typeString":"type(library Math)"}},"id":9027,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"8798:8:34","memberName":"Rounding","nodeType":"MemberAccess","referencedDeclaration":11096,"src":"8793:13:34","typeDescriptions":{"typeIdentifier":"t_type$_t_enum$_Rounding_$11096_$","typeString":"type(enum Math.Rounding)"}},"id":9028,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberLocation":"8807:4:34","memberName":"Ceil","nodeType":"MemberAccess","referencedDeclaration":11093,"src":"8793:18:34","typeDescriptions":{"typeIdentifier":"t_enum$_Rounding_$11096","typeString":"enum Math.Rounding"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_enum$_Rounding_$11096","typeString":"enum Math.Rounding"}],"id":9024,"name":"_convertToShares","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9258,"src":"8768:16:34","typeDescriptions":{"typeIdentifier":"t_function_internal_view$_t_uint256_$_t_enum$_Rounding_$11096_$returns$_t_uint256_$","typeString":"function (uint256,enum Math.Rounding) view returns (uint256)"}},"id":9029,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"8768:44:34","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"functionReturnParameters":9023,"id":9030,"nodeType":"Return","src":"8761:51:34"}]},"documentation":{"id":9017,"nodeType":"StructuredDocumentation","src":"8643:24:34","text":"@inheritdoc IERC4626"},"functionSelector":"0a28a477","id":9032,"implemented":true,"kind":"function","modifiers":[],"name":"previewWithdraw","nameLocation":"8681:15:34","nodeType":"FunctionDefinition","parameters":{"id":9020,"nodeType":"ParameterList","parameters":[{"constant":false,"id":9019,"mutability":"mutable","name":"assets","nameLocation":"8705:6:34","nodeType":"VariableDeclaration","scope":9032,"src":"8697:14:34","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":9018,"name":"uint256","nodeType":"ElementaryTypeName","src":"8697:7:34","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"8696:16:34"},"returnParameters":{"id":9023,"nodeType":"ParameterList","parameters":[{"constant":false,"id":9022,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":9032,"src":"8742:7:34","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":9021,"name":"uint256","nodeType":"ElementaryTypeName","src":"8742:7:34","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"8741:9:34"},"scope":9385,"src":"8672:147:34","stateMutability":"view","virtual":true,"visibility":"public"},{"baseFunctions":[7114],"body":{"id":9047,"nodeType":"Block","src":"8931:69:34","statements":[{"expression":{"arguments":[{"id":9041,"name":"shares","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9035,"src":"8965:6:34","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"expression":{"expression":{"id":9042,"name":"Math","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":12726,"src":"8973:4:34","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_Math_$12726_$","typeString":"type(library Math)"}},"id":9043,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"8978:8:34","memberName":"Rounding","nodeType":"MemberAccess","referencedDeclaration":11096,"src":"8973:13:34","typeDescriptions":{"typeIdentifier":"t_type$_t_enum$_Rounding_$11096_$","typeString":"type(enum Math.Rounding)"}},"id":9044,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberLocation":"8987:5:34","memberName":"Floor","nodeType":"MemberAccess","referencedDeclaration":11092,"src":"8973:19:34","typeDescriptions":{"typeIdentifier":"t_enum$_Rounding_$11096","typeString":"enum Math.Rounding"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_enum$_Rounding_$11096","typeString":"enum Math.Rounding"}],"id":9040,"name":"_convertToAssets","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9286,"src":"8948:16:34","typeDescriptions":{"typeIdentifier":"t_function_internal_view$_t_uint256_$_t_enum$_Rounding_$11096_$returns$_t_uint256_$","typeString":"function (uint256,enum Math.Rounding) view returns (uint256)"}},"id":9045,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"8948:45:34","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"functionReturnParameters":9039,"id":9046,"nodeType":"Return","src":"8941:52:34"}]},"documentation":{"id":9033,"nodeType":"StructuredDocumentation","src":"8825:24:34","text":"@inheritdoc IERC4626"},"functionSelector":"4cdad506","id":9048,"implemented":true,"kind":"function","modifiers":[],"name":"previewRedeem","nameLocation":"8863:13:34","nodeType":"FunctionDefinition","parameters":{"id":9036,"nodeType":"ParameterList","parameters":[{"constant":false,"id":9035,"mutability":"mutable","name":"shares","nameLocation":"8885:6:34","nodeType":"VariableDeclaration","scope":9048,"src":"8877:14:34","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":9034,"name":"uint256","nodeType":"ElementaryTypeName","src":"8877:7:34","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"8876:16:34"},"returnParameters":{"id":9039,"nodeType":"ParameterList","parameters":[{"constant":false,"id":9038,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":9048,"src":"8922:7:34","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":9037,"name":"uint256","nodeType":"ElementaryTypeName","src":"8922:7:34","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"8921:9:34"},"scope":9385,"src":"8854:146:34","stateMutability":"view","virtual":true,"visibility":"public"},{"baseFunctions":[7044],"body":{"id":9091,"nodeType":"Block","src":"9119:308:34","statements":[{"assignments":[9059],"declarations":[{"constant":false,"id":9059,"mutability":"mutable","name":"maxAssets","nameLocation":"9137:9:34","nodeType":"VariableDeclaration","scope":9091,"src":"9129:17:34","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":9058,"name":"uint256","nodeType":"ElementaryTypeName","src":"9129:7:34","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":9063,"initialValue":{"arguments":[{"id":9061,"name":"receiver","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9053,"src":"9160:8:34","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"id":9060,"name":"maxDeposit","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8941,"src":"9149:10:34","typeDescriptions":{"typeIdentifier":"t_function_internal_view$_t_address_$returns$_t_uint256_$","typeString":"function (address) view returns (uint256)"}},"id":9062,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"9149:20:34","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"VariableDeclarationStatement","src":"9129:40:34"},{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":9066,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":9064,"name":"assets","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9051,"src":"9183:6:34","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">","rightExpression":{"id":9065,"name":"maxAssets","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9059,"src":"9192:9:34","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"9183:18:34","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":9074,"nodeType":"IfStatement","src":"9179:110:34","trueBody":{"id":9073,"nodeType":"Block","src":"9203:86:34","statements":[{"errorCall":{"arguments":[{"id":9068,"name":"receiver","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9053,"src":"9250:8:34","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":9069,"name":"assets","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9051,"src":"9260:6:34","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"id":9070,"name":"maxAssets","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9059,"src":"9268:9:34","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":9067,"name":"ERC4626ExceededMaxDeposit","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8717,"src":"9224:25:34","typeDescriptions":{"typeIdentifier":"t_function_error_pure$_t_address_$_t_uint256_$_t_uint256_$returns$_t_error_$","typeString":"function (address,uint256,uint256) pure returns (error)"}},"id":9071,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"9224:54:34","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_error","typeString":"error"}},"id":9072,"nodeType":"RevertStatement","src":"9217:61:34"}]}},{"assignments":[9076],"declarations":[{"constant":false,"id":9076,"mutability":"mutable","name":"shares","nameLocation":"9307:6:34","nodeType":"VariableDeclaration","scope":9091,"src":"9299:14:34","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":9075,"name":"uint256","nodeType":"ElementaryTypeName","src":"9299:7:34","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":9080,"initialValue":{"arguments":[{"id":9078,"name":"assets","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9051,"src":"9331:6:34","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":9077,"name":"previewDeposit","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9000,"src":"9316:14:34","typeDescriptions":{"typeIdentifier":"t_function_internal_view$_t_uint256_$returns$_t_uint256_$","typeString":"function (uint256) view returns (uint256)"}},"id":9079,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"9316:22:34","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"VariableDeclarationStatement","src":"9299:39:34"},{"expression":{"arguments":[{"arguments":[],"expression":{"argumentTypes":[],"id":9082,"name":"_msgSender","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10268,"src":"9357:10:34","typeDescriptions":{"typeIdentifier":"t_function_internal_view$__$returns$_t_address_$","typeString":"function () view returns (address)"}},"id":9083,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"9357:12:34","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":9084,"name":"receiver","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9053,"src":"9371:8:34","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":9085,"name":"assets","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9051,"src":"9381:6:34","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"id":9086,"name":"shares","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9076,"src":"9389:6:34","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"}],"id":9081,"name":"_deposit","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9326,"src":"9348:8:34","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_address_$_t_address_$_t_uint256_$_t_uint256_$returns$__$","typeString":"function (address,address,uint256,uint256)"}},"id":9087,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"9348:48:34","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":9088,"nodeType":"ExpressionStatement","src":"9348:48:34"},{"expression":{"id":9089,"name":"shares","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9076,"src":"9414:6:34","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"functionReturnParameters":9057,"id":9090,"nodeType":"Return","src":"9407:13:34"}]},"documentation":{"id":9049,"nodeType":"StructuredDocumentation","src":"9006:24:34","text":"@inheritdoc IERC4626"},"functionSelector":"6e553f65","id":9092,"implemented":true,"kind":"function","modifiers":[],"name":"deposit","nameLocation":"9044:7:34","nodeType":"FunctionDefinition","parameters":{"id":9054,"nodeType":"ParameterList","parameters":[{"constant":false,"id":9051,"mutability":"mutable","name":"assets","nameLocation":"9060:6:34","nodeType":"VariableDeclaration","scope":9092,"src":"9052:14:34","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":9050,"name":"uint256","nodeType":"ElementaryTypeName","src":"9052:7:34","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":9053,"mutability":"mutable","name":"receiver","nameLocation":"9076:8:34","nodeType":"VariableDeclaration","scope":9092,"src":"9068:16:34","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":9052,"name":"address","nodeType":"ElementaryTypeName","src":"9068:7:34","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"9051:34:34"},"returnParameters":{"id":9057,"nodeType":"ParameterList","parameters":[{"constant":false,"id":9056,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":9092,"src":"9110:7:34","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":9055,"name":"uint256","nodeType":"ElementaryTypeName","src":"9110:7:34","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"9109:9:34"},"scope":9385,"src":"9035:392:34","stateMutability":"nonpayable","virtual":true,"visibility":"public"},{"baseFunctions":[7070],"body":{"id":9135,"nodeType":"Block","src":"9543:299:34","statements":[{"assignments":[9103],"declarations":[{"constant":false,"id":9103,"mutability":"mutable","name":"maxShares","nameLocation":"9561:9:34","nodeType":"VariableDeclaration","scope":9135,"src":"9553:17:34","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":9102,"name":"uint256","nodeType":"ElementaryTypeName","src":"9553:7:34","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":9107,"initialValue":{"arguments":[{"id":9105,"name":"receiver","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9097,"src":"9581:8:34","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"id":9104,"name":"maxMint","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8956,"src":"9573:7:34","typeDescriptions":{"typeIdentifier":"t_function_internal_view$_t_address_$returns$_t_uint256_$","typeString":"function (address) view returns (uint256)"}},"id":9106,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"9573:17:34","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"VariableDeclarationStatement","src":"9553:37:34"},{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":9110,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":9108,"name":"shares","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9095,"src":"9604:6:34","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">","rightExpression":{"id":9109,"name":"maxShares","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9103,"src":"9613:9:34","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"9604:18:34","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":9118,"nodeType":"IfStatement","src":"9600:107:34","trueBody":{"id":9117,"nodeType":"Block","src":"9624:83:34","statements":[{"errorCall":{"arguments":[{"id":9112,"name":"receiver","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9097,"src":"9668:8:34","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":9113,"name":"shares","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9095,"src":"9678:6:34","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"id":9114,"name":"maxShares","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9103,"src":"9686:9:34","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":9111,"name":"ERC4626ExceededMaxMint","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8726,"src":"9645:22:34","typeDescriptions":{"typeIdentifier":"t_function_error_pure$_t_address_$_t_uint256_$_t_uint256_$returns$_t_error_$","typeString":"function (address,uint256,uint256) pure returns (error)"}},"id":9115,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"9645:51:34","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_error","typeString":"error"}},"id":9116,"nodeType":"RevertStatement","src":"9638:58:34"}]}},{"assignments":[9120],"declarations":[{"constant":false,"id":9120,"mutability":"mutable","name":"assets","nameLocation":"9725:6:34","nodeType":"VariableDeclaration","scope":9135,"src":"9717:14:34","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":9119,"name":"uint256","nodeType":"ElementaryTypeName","src":"9717:7:34","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":9124,"initialValue":{"arguments":[{"id":9122,"name":"shares","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9095,"src":"9746:6:34","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":9121,"name":"previewMint","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9016,"src":"9734:11:34","typeDescriptions":{"typeIdentifier":"t_function_internal_view$_t_uint256_$returns$_t_uint256_$","typeString":"function (uint256) view returns (uint256)"}},"id":9123,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"9734:19:34","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"VariableDeclarationStatement","src":"9717:36:34"},{"expression":{"arguments":[{"arguments":[],"expression":{"argumentTypes":[],"id":9126,"name":"_msgSender","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10268,"src":"9772:10:34","typeDescriptions":{"typeIdentifier":"t_function_internal_view$__$returns$_t_address_$","typeString":"function () view returns (address)"}},"id":9127,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"9772:12:34","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":9128,"name":"receiver","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9097,"src":"9786:8:34","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":9129,"name":"assets","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9120,"src":"9796:6:34","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"id":9130,"name":"shares","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9095,"src":"9804:6:34","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"}],"id":9125,"name":"_deposit","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9326,"src":"9763:8:34","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_address_$_t_address_$_t_uint256_$_t_uint256_$returns$__$","typeString":"function (address,address,uint256,uint256)"}},"id":9131,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"9763:48:34","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":9132,"nodeType":"ExpressionStatement","src":"9763:48:34"},{"expression":{"id":9133,"name":"assets","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9120,"src":"9829:6:34","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"functionReturnParameters":9101,"id":9134,"nodeType":"Return","src":"9822:13:34"}]},"documentation":{"id":9093,"nodeType":"StructuredDocumentation","src":"9433:24:34","text":"@inheritdoc IERC4626"},"functionSelector":"94bf804d","id":9136,"implemented":true,"kind":"function","modifiers":[],"name":"mint","nameLocation":"9471:4:34","nodeType":"FunctionDefinition","parameters":{"id":9098,"nodeType":"ParameterList","parameters":[{"constant":false,"id":9095,"mutability":"mutable","name":"shares","nameLocation":"9484:6:34","nodeType":"VariableDeclaration","scope":9136,"src":"9476:14:34","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":9094,"name":"uint256","nodeType":"ElementaryTypeName","src":"9476:7:34","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":9097,"mutability":"mutable","name":"receiver","nameLocation":"9500:8:34","nodeType":"VariableDeclaration","scope":9136,"src":"9492:16:34","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":9096,"name":"address","nodeType":"ElementaryTypeName","src":"9492:7:34","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"9475:34:34"},"returnParameters":{"id":9101,"nodeType":"ParameterList","parameters":[{"constant":false,"id":9100,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":9136,"src":"9534:7:34","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":9099,"name":"uint256","nodeType":"ElementaryTypeName","src":"9534:7:34","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"9533:9:34"},"scope":9385,"src":"9462:380:34","stateMutability":"nonpayable","virtual":true,"visibility":"public"},{"baseFunctions":[7098],"body":{"id":9182,"nodeType":"Block","src":"9977:313:34","statements":[{"assignments":[9149],"declarations":[{"constant":false,"id":9149,"mutability":"mutable","name":"maxAssets","nameLocation":"9995:9:34","nodeType":"VariableDeclaration","scope":9182,"src":"9987:17:34","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":9148,"name":"uint256","nodeType":"ElementaryTypeName","src":"9987:7:34","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":9153,"initialValue":{"arguments":[{"id":9151,"name":"owner","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9143,"src":"10019:5:34","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"id":9150,"name":"maxWithdraw","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8971,"src":"10007:11:34","typeDescriptions":{"typeIdentifier":"t_function_internal_view$_t_address_$returns$_t_uint256_$","typeString":"function (address) view returns (uint256)"}},"id":9152,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"10007:18:34","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"VariableDeclarationStatement","src":"9987:38:34"},{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":9156,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":9154,"name":"assets","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9139,"src":"10039:6:34","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">","rightExpression":{"id":9155,"name":"maxAssets","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9149,"src":"10048:9:34","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"10039:18:34","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":9164,"nodeType":"IfStatement","src":"10035:108:34","trueBody":{"id":9163,"nodeType":"Block","src":"10059:84:34","statements":[{"errorCall":{"arguments":[{"id":9158,"name":"owner","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9143,"src":"10107:5:34","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":9159,"name":"assets","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9139,"src":"10114:6:34","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"id":9160,"name":"maxAssets","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9149,"src":"10122:9:34","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":9157,"name":"ERC4626ExceededMaxWithdraw","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8735,"src":"10080:26:34","typeDescriptions":{"typeIdentifier":"t_function_error_pure$_t_address_$_t_uint256_$_t_uint256_$returns$_t_error_$","typeString":"function (address,uint256,uint256) pure returns (error)"}},"id":9161,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"10080:52:34","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_error","typeString":"error"}},"id":9162,"nodeType":"RevertStatement","src":"10073:59:34"}]}},{"assignments":[9166],"declarations":[{"constant":false,"id":9166,"mutability":"mutable","name":"shares","nameLocation":"10161:6:34","nodeType":"VariableDeclaration","scope":9182,"src":"10153:14:34","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":9165,"name":"uint256","nodeType":"ElementaryTypeName","src":"10153:7:34","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":9170,"initialValue":{"arguments":[{"id":9168,"name":"assets","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9139,"src":"10186:6:34","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":9167,"name":"previewWithdraw","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9032,"src":"10170:15:34","typeDescriptions":{"typeIdentifier":"t_function_internal_view$_t_uint256_$returns$_t_uint256_$","typeString":"function (uint256) view returns (uint256)"}},"id":9169,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"10170:23:34","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"VariableDeclarationStatement","src":"10153:40:34"},{"expression":{"arguments":[{"arguments":[],"expression":{"argumentTypes":[],"id":9172,"name":"_msgSender","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10268,"src":"10213:10:34","typeDescriptions":{"typeIdentifier":"t_function_internal_view$__$returns$_t_address_$","typeString":"function () view returns (address)"}},"id":9173,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"10213:12:34","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":9174,"name":"receiver","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9141,"src":"10227:8:34","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":9175,"name":"owner","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9143,"src":"10237:5:34","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":9176,"name":"assets","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9139,"src":"10244:6:34","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"id":9177,"name":"shares","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9166,"src":"10252:6:34","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":9171,"name":"_withdraw","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9376,"src":"10203:9:34","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_address_$_t_address_$_t_address_$_t_uint256_$_t_uint256_$returns$__$","typeString":"function (address,address,address,uint256,uint256)"}},"id":9178,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"10203:56:34","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":9179,"nodeType":"ExpressionStatement","src":"10203:56:34"},{"expression":{"id":9180,"name":"shares","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9166,"src":"10277:6:34","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"functionReturnParameters":9147,"id":9181,"nodeType":"Return","src":"10270:13:34"}]},"documentation":{"id":9137,"nodeType":"StructuredDocumentation","src":"9848:24:34","text":"@inheritdoc IERC4626"},"functionSelector":"b460af94","id":9183,"implemented":true,"kind":"function","modifiers":[],"name":"withdraw","nameLocation":"9886:8:34","nodeType":"FunctionDefinition","parameters":{"id":9144,"nodeType":"ParameterList","parameters":[{"constant":false,"id":9139,"mutability":"mutable","name":"assets","nameLocation":"9903:6:34","nodeType":"VariableDeclaration","scope":9183,"src":"9895:14:34","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":9138,"name":"uint256","nodeType":"ElementaryTypeName","src":"9895:7:34","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":9141,"mutability":"mutable","name":"receiver","nameLocation":"9919:8:34","nodeType":"VariableDeclaration","scope":9183,"src":"9911:16:34","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":9140,"name":"address","nodeType":"ElementaryTypeName","src":"9911:7:34","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":9143,"mutability":"mutable","name":"owner","nameLocation":"9937:5:34","nodeType":"VariableDeclaration","scope":9183,"src":"9929:13:34","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":9142,"name":"address","nodeType":"ElementaryTypeName","src":"9929:7:34","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"9894:49:34"},"returnParameters":{"id":9147,"nodeType":"ParameterList","parameters":[{"constant":false,"id":9146,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":9183,"src":"9968:7:34","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":9145,"name":"uint256","nodeType":"ElementaryTypeName","src":"9968:7:34","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"9967:9:34"},"scope":9385,"src":"9877:413:34","stateMutability":"nonpayable","virtual":true,"visibility":"public"},{"baseFunctions":[7126],"body":{"id":9229,"nodeType":"Block","src":"10423:307:34","statements":[{"assignments":[9196],"declarations":[{"constant":false,"id":9196,"mutability":"mutable","name":"maxShares","nameLocation":"10441:9:34","nodeType":"VariableDeclaration","scope":9229,"src":"10433:17:34","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":9195,"name":"uint256","nodeType":"ElementaryTypeName","src":"10433:7:34","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":9200,"initialValue":{"arguments":[{"id":9198,"name":"owner","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9190,"src":"10463:5:34","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"id":9197,"name":"maxRedeem","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8984,"src":"10453:9:34","typeDescriptions":{"typeIdentifier":"t_function_internal_view$_t_address_$returns$_t_uint256_$","typeString":"function (address) view returns (uint256)"}},"id":9199,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"10453:16:34","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"VariableDeclarationStatement","src":"10433:36:34"},{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":9203,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":9201,"name":"shares","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9186,"src":"10483:6:34","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">","rightExpression":{"id":9202,"name":"maxShares","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9196,"src":"10492:9:34","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"10483:18:34","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":9211,"nodeType":"IfStatement","src":"10479:106:34","trueBody":{"id":9210,"nodeType":"Block","src":"10503:82:34","statements":[{"errorCall":{"arguments":[{"id":9205,"name":"owner","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9190,"src":"10549:5:34","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":9206,"name":"shares","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9186,"src":"10556:6:34","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"id":9207,"name":"maxShares","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9196,"src":"10564:9:34","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":9204,"name":"ERC4626ExceededMaxRedeem","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8744,"src":"10524:24:34","typeDescriptions":{"typeIdentifier":"t_function_error_pure$_t_address_$_t_uint256_$_t_uint256_$returns$_t_error_$","typeString":"function (address,uint256,uint256) pure returns (error)"}},"id":9208,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"10524:50:34","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_error","typeString":"error"}},"id":9209,"nodeType":"RevertStatement","src":"10517:57:34"}]}},{"assignments":[9213],"declarations":[{"constant":false,"id":9213,"mutability":"mutable","name":"assets","nameLocation":"10603:6:34","nodeType":"VariableDeclaration","scope":9229,"src":"10595:14:34","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":9212,"name":"uint256","nodeType":"ElementaryTypeName","src":"10595:7:34","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":9217,"initialValue":{"arguments":[{"id":9215,"name":"shares","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9186,"src":"10626:6:34","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":9214,"name":"previewRedeem","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9048,"src":"10612:13:34","typeDescriptions":{"typeIdentifier":"t_function_internal_view$_t_uint256_$returns$_t_uint256_$","typeString":"function (uint256) view returns (uint256)"}},"id":9216,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"10612:21:34","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"VariableDeclarationStatement","src":"10595:38:34"},{"expression":{"arguments":[{"arguments":[],"expression":{"argumentTypes":[],"id":9219,"name":"_msgSender","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10268,"src":"10653:10:34","typeDescriptions":{"typeIdentifier":"t_function_internal_view$__$returns$_t_address_$","typeString":"function () view returns (address)"}},"id":9220,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"10653:12:34","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":9221,"name":"receiver","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9188,"src":"10667:8:34","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":9222,"name":"owner","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9190,"src":"10677:5:34","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":9223,"name":"assets","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9213,"src":"10684:6:34","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"id":9224,"name":"shares","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9186,"src":"10692:6:34","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":9218,"name":"_withdraw","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9376,"src":"10643:9:34","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_address_$_t_address_$_t_address_$_t_uint256_$_t_uint256_$returns$__$","typeString":"function (address,address,address,uint256,uint256)"}},"id":9225,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"10643:56:34","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":9226,"nodeType":"ExpressionStatement","src":"10643:56:34"},{"expression":{"id":9227,"name":"assets","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9213,"src":"10717:6:34","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"functionReturnParameters":9194,"id":9228,"nodeType":"Return","src":"10710:13:34"}]},"documentation":{"id":9184,"nodeType":"StructuredDocumentation","src":"10296:24:34","text":"@inheritdoc IERC4626"},"functionSelector":"ba087652","id":9230,"implemented":true,"kind":"function","modifiers":[],"name":"redeem","nameLocation":"10334:6:34","nodeType":"FunctionDefinition","parameters":{"id":9191,"nodeType":"ParameterList","parameters":[{"constant":false,"id":9186,"mutability":"mutable","name":"shares","nameLocation":"10349:6:34","nodeType":"VariableDeclaration","scope":9230,"src":"10341:14:34","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":9185,"name":"uint256","nodeType":"ElementaryTypeName","src":"10341:7:34","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":9188,"mutability":"mutable","name":"receiver","nameLocation":"10365:8:34","nodeType":"VariableDeclaration","scope":9230,"src":"10357:16:34","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":9187,"name":"address","nodeType":"ElementaryTypeName","src":"10357:7:34","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":9190,"mutability":"mutable","name":"owner","nameLocation":"10383:5:34","nodeType":"VariableDeclaration","scope":9230,"src":"10375:13:34","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":9189,"name":"address","nodeType":"ElementaryTypeName","src":"10375:7:34","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"10340:49:34"},"returnParameters":{"id":9194,"nodeType":"ParameterList","parameters":[{"constant":false,"id":9193,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":9230,"src":"10414:7:34","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":9192,"name":"uint256","nodeType":"ElementaryTypeName","src":"10414:7:34","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"10413:9:34"},"scope":9385,"src":"10325:405:34","stateMutability":"nonpayable","virtual":true,"visibility":"public"},{"body":{"id":9257,"nodeType":"Block","src":"10960:107:34","statements":[{"expression":{"arguments":[{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":9249,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"arguments":[],"expression":{"argumentTypes":[],"id":9243,"name":"totalSupply","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8174,"src":"10991:11:34","typeDescriptions":{"typeIdentifier":"t_function_internal_view$__$returns$_t_uint256_$","typeString":"function () view returns (uint256)"}},"id":9244,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"10991:13:34","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"+","rightExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":9248,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"hexValue":"3130","id":9245,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"11007:2:34","typeDescriptions":{"typeIdentifier":"t_rational_10_by_1","typeString":"int_const 10"},"value":"10"},"nodeType":"BinaryOperation","operator":"**","rightExpression":{"arguments":[],"expression":{"argumentTypes":[],"id":9246,"name":"_decimalsOffset","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9384,"src":"11013:15:34","typeDescriptions":{"typeIdentifier":"t_function_internal_view$__$returns$_t_uint8_$","typeString":"function () view returns (uint8)"}},"id":9247,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"11013:17:34","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}},"src":"11007:23:34","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"10991:39:34","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":9253,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"arguments":[],"expression":{"argumentTypes":[],"id":9250,"name":"totalAssets","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8894,"src":"11032:11:34","typeDescriptions":{"typeIdentifier":"t_function_internal_view$__$returns$_t_uint256_$","typeString":"function () view returns (uint256)"}},"id":9251,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"11032:13:34","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"+","rightExpression":{"hexValue":"31","id":9252,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"11048:1:34","typeDescriptions":{"typeIdentifier":"t_rational_1_by_1","typeString":"int_const 1"},"value":"1"},"src":"11032:17:34","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"id":9254,"name":"rounding","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9236,"src":"11051:8:34","typeDescriptions":{"typeIdentifier":"t_enum$_Rounding_$11096","typeString":"enum Math.Rounding"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_enum$_Rounding_$11096","typeString":"enum Math.Rounding"}],"expression":{"id":9241,"name":"assets","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9233,"src":"10977:6:34","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":9242,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"10984:6:34","memberName":"mulDiv","nodeType":"MemberAccess","referencedDeclaration":11648,"src":"10977:13:34","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_uint256_$_t_uint256_$_t_uint256_$_t_enum$_Rounding_$11096_$returns$_t_uint256_$attached_to$_t_uint256_$","typeString":"function (uint256,uint256,uint256,enum Math.Rounding) pure returns (uint256)"}},"id":9255,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"10977:83:34","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"functionReturnParameters":9240,"id":9256,"nodeType":"Return","src":"10970:90:34"}]},"documentation":{"id":9231,"nodeType":"StructuredDocumentation","src":"10736:113:34","text":" @dev Internal conversion function (from assets to shares) with support for rounding direction."},"id":9258,"implemented":true,"kind":"function","modifiers":[],"name":"_convertToShares","nameLocation":"10863:16:34","nodeType":"FunctionDefinition","parameters":{"id":9237,"nodeType":"ParameterList","parameters":[{"constant":false,"id":9233,"mutability":"mutable","name":"assets","nameLocation":"10888:6:34","nodeType":"VariableDeclaration","scope":9258,"src":"10880:14:34","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":9232,"name":"uint256","nodeType":"ElementaryTypeName","src":"10880:7:34","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":9236,"mutability":"mutable","name":"rounding","nameLocation":"10910:8:34","nodeType":"VariableDeclaration","scope":9258,"src":"10896:22:34","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_enum$_Rounding_$11096","typeString":"enum Math.Rounding"},"typeName":{"id":9235,"nodeType":"UserDefinedTypeName","pathNode":{"id":9234,"name":"Math.Rounding","nameLocations":["10896:4:34","10901:8:34"],"nodeType":"IdentifierPath","referencedDeclaration":11096,"src":"10896:13:34"},"referencedDeclaration":11096,"src":"10896:13:34","typeDescriptions":{"typeIdentifier":"t_enum$_Rounding_$11096","typeString":"enum Math.Rounding"}},"visibility":"internal"}],"src":"10879:40:34"},"returnParameters":{"id":9240,"nodeType":"ParameterList","parameters":[{"constant":false,"id":9239,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":9258,"src":"10951:7:34","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":9238,"name":"uint256","nodeType":"ElementaryTypeName","src":"10951:7:34","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"10950:9:34"},"scope":9385,"src":"10854:213:34","stateMutability":"view","virtual":true,"visibility":"internal"},{"body":{"id":9285,"nodeType":"Block","src":"11297:107:34","statements":[{"expression":{"arguments":[{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":9274,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"arguments":[],"expression":{"argumentTypes":[],"id":9271,"name":"totalAssets","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8894,"src":"11328:11:34","typeDescriptions":{"typeIdentifier":"t_function_internal_view$__$returns$_t_uint256_$","typeString":"function () view returns (uint256)"}},"id":9272,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"11328:13:34","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"+","rightExpression":{"hexValue":"31","id":9273,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"11344:1:34","typeDescriptions":{"typeIdentifier":"t_rational_1_by_1","typeString":"int_const 1"},"value":"1"},"src":"11328:17:34","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":9281,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"arguments":[],"expression":{"argumentTypes":[],"id":9275,"name":"totalSupply","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8174,"src":"11347:11:34","typeDescriptions":{"typeIdentifier":"t_function_internal_view$__$returns$_t_uint256_$","typeString":"function () view returns (uint256)"}},"id":9276,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"11347:13:34","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"+","rightExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":9280,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"hexValue":"3130","id":9277,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"11363:2:34","typeDescriptions":{"typeIdentifier":"t_rational_10_by_1","typeString":"int_const 10"},"value":"10"},"nodeType":"BinaryOperation","operator":"**","rightExpression":{"arguments":[],"expression":{"argumentTypes":[],"id":9278,"name":"_decimalsOffset","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9384,"src":"11369:15:34","typeDescriptions":{"typeIdentifier":"t_function_internal_view$__$returns$_t_uint8_$","typeString":"function () view returns (uint8)"}},"id":9279,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"11369:17:34","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}},"src":"11363:23:34","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"11347:39:34","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"id":9282,"name":"rounding","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9264,"src":"11388:8:34","typeDescriptions":{"typeIdentifier":"t_enum$_Rounding_$11096","typeString":"enum Math.Rounding"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_enum$_Rounding_$11096","typeString":"enum Math.Rounding"}],"expression":{"id":9269,"name":"shares","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9261,"src":"11314:6:34","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":9270,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"11321:6:34","memberName":"mulDiv","nodeType":"MemberAccess","referencedDeclaration":11648,"src":"11314:13:34","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_uint256_$_t_uint256_$_t_uint256_$_t_enum$_Rounding_$11096_$returns$_t_uint256_$attached_to$_t_uint256_$","typeString":"function (uint256,uint256,uint256,enum Math.Rounding) pure returns (uint256)"}},"id":9283,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"11314:83:34","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"functionReturnParameters":9268,"id":9284,"nodeType":"Return","src":"11307:90:34"}]},"documentation":{"id":9259,"nodeType":"StructuredDocumentation","src":"11073:113:34","text":" @dev Internal conversion function (from shares to assets) with support for rounding direction."},"id":9286,"implemented":true,"kind":"function","modifiers":[],"name":"_convertToAssets","nameLocation":"11200:16:34","nodeType":"FunctionDefinition","parameters":{"id":9265,"nodeType":"ParameterList","parameters":[{"constant":false,"id":9261,"mutability":"mutable","name":"shares","nameLocation":"11225:6:34","nodeType":"VariableDeclaration","scope":9286,"src":"11217:14:34","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":9260,"name":"uint256","nodeType":"ElementaryTypeName","src":"11217:7:34","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":9264,"mutability":"mutable","name":"rounding","nameLocation":"11247:8:34","nodeType":"VariableDeclaration","scope":9286,"src":"11233:22:34","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_enum$_Rounding_$11096","typeString":"enum Math.Rounding"},"typeName":{"id":9263,"nodeType":"UserDefinedTypeName","pathNode":{"id":9262,"name":"Math.Rounding","nameLocations":["11233:4:34","11238:8:34"],"nodeType":"IdentifierPath","referencedDeclaration":11096,"src":"11233:13:34"},"referencedDeclaration":11096,"src":"11233:13:34","typeDescriptions":{"typeIdentifier":"t_enum$_Rounding_$11096","typeString":"enum Math.Rounding"}},"visibility":"internal"}],"src":"11216:40:34"},"returnParameters":{"id":9268,"nodeType":"ParameterList","parameters":[{"constant":false,"id":9267,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":9286,"src":"11288:7:34","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":9266,"name":"uint256","nodeType":"ElementaryTypeName","src":"11288:7:34","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"11287:9:34"},"scope":9385,"src":"11191:213:34","stateMutability":"view","virtual":true,"visibility":"internal"},{"body":{"id":9325,"nodeType":"Block","src":"11569:740:34","statements":[{"expression":{"arguments":[{"arguments":[{"arguments":[],"expression":{"argumentTypes":[],"id":9302,"name":"asset","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8876,"src":"12172:5:34","typeDescriptions":{"typeIdentifier":"t_function_internal_view$__$returns$_t_address_$","typeString":"function () view returns (address)"}},"id":9303,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"12172:7:34","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"id":9301,"name":"IERC20","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8679,"src":"12165:6:34","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_IERC20_$8679_$","typeString":"type(contract IERC20)"}},"id":9304,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"12165:15:34","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_contract$_IERC20_$8679","typeString":"contract IERC20"}},{"id":9305,"name":"caller","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9289,"src":"12182:6:34","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"arguments":[{"id":9308,"name":"this","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-28,"src":"12198:4:34","typeDescriptions":{"typeIdentifier":"t_contract$_ERC4626_$9385","typeString":"contract ERC4626"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_contract$_ERC4626_$9385","typeString":"contract ERC4626"}],"id":9307,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"12190:7:34","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":9306,"name":"address","nodeType":"ElementaryTypeName","src":"12190:7:34","typeDescriptions":{}}},"id":9309,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"12190:13:34","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":9310,"name":"assets","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9293,"src":"12205:6:34","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_contract$_IERC20_$8679","typeString":"contract IERC20"},{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"expression":{"id":9298,"name":"SafeERC20","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9866,"src":"12138:9:34","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_SafeERC20_$9866_$","typeString":"type(library SafeERC20)"}},"id":9300,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"12148:16:34","memberName":"safeTransferFrom","nodeType":"MemberAccess","referencedDeclaration":9491,"src":"12138:26:34","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_contract$_IERC20_$8679_$_t_address_$_t_address_$_t_uint256_$returns$__$","typeString":"function (contract IERC20,address,address,uint256)"}},"id":9311,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"12138:74:34","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":9312,"nodeType":"ExpressionStatement","src":"12138:74:34"},{"expression":{"arguments":[{"id":9314,"name":"receiver","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9291,"src":"12228:8:34","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":9315,"name":"shares","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9295,"src":"12238:6:34","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":9313,"name":"_mint","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8441,"src":"12222:5:34","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_address_$_t_uint256_$returns$__$","typeString":"function (address,uint256)"}},"id":9316,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"12222:23:34","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":9317,"nodeType":"ExpressionStatement","src":"12222:23:34"},{"eventCall":{"arguments":[{"id":9319,"name":"caller","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9289,"src":"12269:6:34","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":9320,"name":"receiver","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9291,"src":"12277:8:34","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":9321,"name":"assets","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9293,"src":"12287:6:34","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"id":9322,"name":"shares","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9295,"src":"12295:6:34","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"}],"id":9318,"name":"Deposit","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6978,"src":"12261:7:34","typeDescriptions":{"typeIdentifier":"t_function_event_nonpayable$_t_address_$_t_address_$_t_uint256_$_t_uint256_$returns$__$","typeString":"function (address,address,uint256,uint256)"}},"id":9323,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"12261:41:34","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":9324,"nodeType":"EmitStatement","src":"12256:46:34"}]},"documentation":{"id":9287,"nodeType":"StructuredDocumentation","src":"11410:53:34","text":" @dev Deposit/mint common workflow."},"id":9326,"implemented":true,"kind":"function","modifiers":[],"name":"_deposit","nameLocation":"11477:8:34","nodeType":"FunctionDefinition","parameters":{"id":9296,"nodeType":"ParameterList","parameters":[{"constant":false,"id":9289,"mutability":"mutable","name":"caller","nameLocation":"11494:6:34","nodeType":"VariableDeclaration","scope":9326,"src":"11486:14:34","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":9288,"name":"address","nodeType":"ElementaryTypeName","src":"11486:7:34","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":9291,"mutability":"mutable","name":"receiver","nameLocation":"11510:8:34","nodeType":"VariableDeclaration","scope":9326,"src":"11502:16:34","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":9290,"name":"address","nodeType":"ElementaryTypeName","src":"11502:7:34","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":9293,"mutability":"mutable","name":"assets","nameLocation":"11528:6:34","nodeType":"VariableDeclaration","scope":9326,"src":"11520:14:34","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":9292,"name":"uint256","nodeType":"ElementaryTypeName","src":"11520:7:34","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":9295,"mutability":"mutable","name":"shares","nameLocation":"11544:6:34","nodeType":"VariableDeclaration","scope":9326,"src":"11536:14:34","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":9294,"name":"uint256","nodeType":"ElementaryTypeName","src":"11536:7:34","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"11485:66:34"},"returnParameters":{"id":9297,"nodeType":"ParameterList","parameters":[],"src":"11569:0:34"},"scope":9385,"src":"11468:841:34","stateMutability":"nonpayable","virtual":true,"visibility":"internal"},{"body":{"id":9375,"nodeType":"Block","src":"12539:762:34","statements":[{"condition":{"commonType":{"typeIdentifier":"t_address","typeString":"address"},"id":9342,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":9340,"name":"caller","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9329,"src":"12553:6:34","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"BinaryOperation","operator":"!=","rightExpression":{"id":9341,"name":"owner","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9333,"src":"12563:5:34","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"src":"12553:15:34","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":9350,"nodeType":"IfStatement","src":"12549:84:34","trueBody":{"id":9349,"nodeType":"Block","src":"12570:63:34","statements":[{"expression":{"arguments":[{"id":9344,"name":"owner","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9333,"src":"12600:5:34","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":9345,"name":"caller","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9329,"src":"12607:6:34","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":9346,"name":"shares","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9337,"src":"12615:6:34","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":9343,"name":"_spendAllowance","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8600,"src":"12584:15:34","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_address_$_t_address_$_t_uint256_$returns$__$","typeString":"function (address,address,uint256)"}},"id":9347,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"12584:38:34","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":9348,"nodeType":"ExpressionStatement","src":"12584:38:34"}]}},{"expression":{"arguments":[{"id":9352,"name":"owner","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9333,"src":"13148:5:34","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":9353,"name":"shares","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9337,"src":"13155:6:34","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":9351,"name":"_burn","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8474,"src":"13142:5:34","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_address_$_t_uint256_$returns$__$","typeString":"function (address,uint256)"}},"id":9354,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"13142:20:34","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":9355,"nodeType":"ExpressionStatement","src":"13142:20:34"},{"expression":{"arguments":[{"arguments":[{"arguments":[],"expression":{"argumentTypes":[],"id":9360,"name":"asset","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8876,"src":"13202:5:34","typeDescriptions":{"typeIdentifier":"t_function_internal_view$__$returns$_t_address_$","typeString":"function () view returns (address)"}},"id":9361,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"13202:7:34","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"id":9359,"name":"IERC20","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8679,"src":"13195:6:34","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_IERC20_$8679_$","typeString":"type(contract IERC20)"}},"id":9362,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"13195:15:34","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_contract$_IERC20_$8679","typeString":"contract IERC20"}},{"id":9363,"name":"receiver","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9331,"src":"13212:8:34","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":9364,"name":"assets","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9335,"src":"13222:6:34","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_contract$_IERC20_$8679","typeString":"contract IERC20"},{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"expression":{"id":9356,"name":"SafeERC20","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9866,"src":"13172:9:34","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_SafeERC20_$9866_$","typeString":"type(library SafeERC20)"}},"id":9358,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"13182:12:34","memberName":"safeTransfer","nodeType":"MemberAccess","referencedDeclaration":9460,"src":"13172:22:34","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_contract$_IERC20_$8679_$_t_address_$_t_uint256_$returns$__$","typeString":"function (contract IERC20,address,uint256)"}},"id":9365,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"13172:57:34","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":9366,"nodeType":"ExpressionStatement","src":"13172:57:34"},{"eventCall":{"arguments":[{"id":9368,"name":"caller","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9329,"src":"13254:6:34","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":9369,"name":"receiver","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9331,"src":"13262:8:34","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":9370,"name":"owner","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9333,"src":"13272:5:34","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":9371,"name":"assets","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9335,"src":"13279:6:34","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"id":9372,"name":"shares","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9337,"src":"13287:6:34","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":9367,"name":"Withdraw","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6990,"src":"13245:8:34","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":9373,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"13245:49:34","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":9374,"nodeType":"EmitStatement","src":"13240:54:34"}]},"documentation":{"id":9327,"nodeType":"StructuredDocumentation","src":"12315:56:34","text":" @dev Withdraw/redeem common workflow."},"id":9376,"implemented":true,"kind":"function","modifiers":[],"name":"_withdraw","nameLocation":"12385:9:34","nodeType":"FunctionDefinition","parameters":{"id":9338,"nodeType":"ParameterList","parameters":[{"constant":false,"id":9329,"mutability":"mutable","name":"caller","nameLocation":"12412:6:34","nodeType":"VariableDeclaration","scope":9376,"src":"12404:14:34","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":9328,"name":"address","nodeType":"ElementaryTypeName","src":"12404:7:34","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":9331,"mutability":"mutable","name":"receiver","nameLocation":"12436:8:34","nodeType":"VariableDeclaration","scope":9376,"src":"12428:16:34","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":9330,"name":"address","nodeType":"ElementaryTypeName","src":"12428:7:34","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":9333,"mutability":"mutable","name":"owner","nameLocation":"12462:5:34","nodeType":"VariableDeclaration","scope":9376,"src":"12454:13:34","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":9332,"name":"address","nodeType":"ElementaryTypeName","src":"12454:7:34","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":9335,"mutability":"mutable","name":"assets","nameLocation":"12485:6:34","nodeType":"VariableDeclaration","scope":9376,"src":"12477:14:34","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":9334,"name":"uint256","nodeType":"ElementaryTypeName","src":"12477:7:34","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":9337,"mutability":"mutable","name":"shares","nameLocation":"12509:6:34","nodeType":"VariableDeclaration","scope":9376,"src":"12501:14:34","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":9336,"name":"uint256","nodeType":"ElementaryTypeName","src":"12501:7:34","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"12394:127:34"},"returnParameters":{"id":9339,"nodeType":"ParameterList","parameters":[],"src":"12539:0:34"},"scope":9385,"src":"12376:925:34","stateMutability":"nonpayable","virtual":true,"visibility":"internal"},{"body":{"id":9383,"nodeType":"Block","src":"13372:25:34","statements":[{"expression":{"hexValue":"30","id":9381,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"13389:1:34","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"functionReturnParameters":9380,"id":9382,"nodeType":"Return","src":"13382:8:34"}]},"id":9384,"implemented":true,"kind":"function","modifiers":[],"name":"_decimalsOffset","nameLocation":"13316:15:34","nodeType":"FunctionDefinition","parameters":{"id":9377,"nodeType":"ParameterList","parameters":[],"src":"13331:2:34"},"returnParameters":{"id":9380,"nodeType":"ParameterList","parameters":[{"constant":false,"id":9379,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":9384,"src":"13365:5:34","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"},"typeName":{"id":9378,"name":"uint8","nodeType":"ElementaryTypeName","src":"13365:5:34","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}},"visibility":"internal"}],"src":"13364:7:34"},"scope":9385,"src":"13307:90:34","stateMutability":"view","virtual":true,"visibility":"internal"}],"scope":9386,"src":"4518:8881:34","usedErrors":[7149,7154,7159,7168,7173,7178,8717,8726,8735,8744,9423],"usedEvents":[6978,6990,8613,8622]}],"src":"118:13282:34"},"id":34},"@openzeppelin/contracts/token/ERC20/extensions/IERC20Metadata.sol":{"ast":{"absolutePath":"@openzeppelin/contracts/token/ERC20/extensions/IERC20Metadata.sol","exportedSymbols":{"IERC20":[8679],"IERC20Metadata":[9411]},"id":9412,"license":"MIT","nodeType":"SourceUnit","nodes":[{"id":9387,"literals":["solidity",">=","0.6",".2"],"nodeType":"PragmaDirective","src":"125:24:35"},{"absolutePath":"@openzeppelin/contracts/token/ERC20/IERC20.sol","file":"../IERC20.sol","id":9389,"nameLocation":"-1:-1:-1","nodeType":"ImportDirective","scope":9412,"sourceUnit":8680,"src":"151:37:35","symbolAliases":[{"foreign":{"id":9388,"name":"IERC20","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8679,"src":"159:6:35","typeDescriptions":{}},"nameLocation":"-1:-1:-1"}],"unitAlias":""},{"abstract":false,"baseContracts":[{"baseName":{"id":9391,"name":"IERC20","nameLocations":["306:6:35"],"nodeType":"IdentifierPath","referencedDeclaration":8679,"src":"306:6:35"},"id":9392,"nodeType":"InheritanceSpecifier","src":"306:6:35"}],"canonicalName":"IERC20Metadata","contractDependencies":[],"contractKind":"interface","documentation":{"id":9390,"nodeType":"StructuredDocumentation","src":"190:87:35","text":" @dev Interface for the optional metadata functions from the ERC-20 standard."},"fullyImplemented":false,"id":9411,"linearizedBaseContracts":[9411,8679],"name":"IERC20Metadata","nameLocation":"288:14:35","nodeType":"ContractDefinition","nodes":[{"documentation":{"id":9393,"nodeType":"StructuredDocumentation","src":"319:54:35","text":" @dev Returns the name of the token."},"functionSelector":"06fdde03","id":9398,"implemented":false,"kind":"function","modifiers":[],"name":"name","nameLocation":"387:4:35","nodeType":"FunctionDefinition","parameters":{"id":9394,"nodeType":"ParameterList","parameters":[],"src":"391:2:35"},"returnParameters":{"id":9397,"nodeType":"ParameterList","parameters":[{"constant":false,"id":9396,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":9398,"src":"417:13:35","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string"},"typeName":{"id":9395,"name":"string","nodeType":"ElementaryTypeName","src":"417:6:35","typeDescriptions":{"typeIdentifier":"t_string_storage_ptr","typeString":"string"}},"visibility":"internal"}],"src":"416:15:35"},"scope":9411,"src":"378:54:35","stateMutability":"view","virtual":false,"visibility":"external"},{"documentation":{"id":9399,"nodeType":"StructuredDocumentation","src":"438:56:35","text":" @dev Returns the symbol of the token."},"functionSelector":"95d89b41","id":9404,"implemented":false,"kind":"function","modifiers":[],"name":"symbol","nameLocation":"508:6:35","nodeType":"FunctionDefinition","parameters":{"id":9400,"nodeType":"ParameterList","parameters":[],"src":"514:2:35"},"returnParameters":{"id":9403,"nodeType":"ParameterList","parameters":[{"constant":false,"id":9402,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":9404,"src":"540:13:35","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string"},"typeName":{"id":9401,"name":"string","nodeType":"ElementaryTypeName","src":"540:6:35","typeDescriptions":{"typeIdentifier":"t_string_storage_ptr","typeString":"string"}},"visibility":"internal"}],"src":"539:15:35"},"scope":9411,"src":"499:56:35","stateMutability":"view","virtual":false,"visibility":"external"},{"documentation":{"id":9405,"nodeType":"StructuredDocumentation","src":"561:65:35","text":" @dev Returns the decimals places of the token."},"functionSelector":"313ce567","id":9410,"implemented":false,"kind":"function","modifiers":[],"name":"decimals","nameLocation":"640:8:35","nodeType":"FunctionDefinition","parameters":{"id":9406,"nodeType":"ParameterList","parameters":[],"src":"648:2:35"},"returnParameters":{"id":9409,"nodeType":"ParameterList","parameters":[{"constant":false,"id":9408,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":9410,"src":"674:5:35","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"},"typeName":{"id":9407,"name":"uint8","nodeType":"ElementaryTypeName","src":"674:5:35","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}},"visibility":"internal"}],"src":"673:7:35"},"scope":9411,"src":"631:50:35","stateMutability":"view","virtual":false,"visibility":"external"}],"scope":9412,"src":"278:405:35","usedErrors":[],"usedEvents":[8613,8622]}],"src":"125:559:35"},"id":35},"@openzeppelin/contracts/token/ERC20/utils/SafeERC20.sol":{"ast":{"absolutePath":"@openzeppelin/contracts/token/ERC20/utils/SafeERC20.sol","exportedSymbols":{"IERC1363":[6924],"IERC20":[8679],"SafeERC20":[9866]},"id":9867,"license":"MIT","nodeType":"SourceUnit","nodes":[{"id":9413,"literals":["solidity","^","0.8",".20"],"nodeType":"PragmaDirective","src":"115:24:36"},{"absolutePath":"@openzeppelin/contracts/token/ERC20/IERC20.sol","file":"../IERC20.sol","id":9415,"nameLocation":"-1:-1:-1","nodeType":"ImportDirective","scope":9867,"sourceUnit":8680,"src":"141:37:36","symbolAliases":[{"foreign":{"id":9414,"name":"IERC20","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8679,"src":"149:6:36","typeDescriptions":{}},"nameLocation":"-1:-1:-1"}],"unitAlias":""},{"absolutePath":"@openzeppelin/contracts/interfaces/IERC1363.sol","file":"../../../interfaces/IERC1363.sol","id":9417,"nameLocation":"-1:-1:-1","nodeType":"ImportDirective","scope":9867,"sourceUnit":6925,"src":"179:58:36","symbolAliases":[{"foreign":{"id":9416,"name":"IERC1363","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6924,"src":"187:8:36","typeDescriptions":{}},"nameLocation":"-1:-1:-1"}],"unitAlias":""},{"abstract":false,"baseContracts":[],"canonicalName":"SafeERC20","contractDependencies":[],"contractKind":"library","documentation":{"id":9418,"nodeType":"StructuredDocumentation","src":"239:458:36","text":" @title SafeERC20\n @dev Wrappers around ERC-20 operations that throw on failure (when the token\n contract returns false). Tokens that return no value (and instead revert or\n throw on failure) are also supported, non-reverting calls are assumed to be\n successful.\n To use this library you can add a `using SafeERC20 for IERC20;` statement to your contract,\n which allows you to call the safe operations as `token.safeTransfer(...)`, etc."},"fullyImplemented":true,"id":9866,"linearizedBaseContracts":[9866],"name":"SafeERC20","nameLocation":"706:9:36","nodeType":"ContractDefinition","nodes":[{"documentation":{"id":9419,"nodeType":"StructuredDocumentation","src":"722:65:36","text":" @dev An operation with an ERC-20 token failed."},"errorSelector":"5274afe7","id":9423,"name":"SafeERC20FailedOperation","nameLocation":"798:24:36","nodeType":"ErrorDefinition","parameters":{"id":9422,"nodeType":"ParameterList","parameters":[{"constant":false,"id":9421,"mutability":"mutable","name":"token","nameLocation":"831:5:36","nodeType":"VariableDeclaration","scope":9423,"src":"823:13:36","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":9420,"name":"address","nodeType":"ElementaryTypeName","src":"823:7:36","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"822:15:36"},"src":"792:46:36"},{"documentation":{"id":9424,"nodeType":"StructuredDocumentation","src":"844:71:36","text":" @dev Indicates a failed `decreaseAllowance` request."},"errorSelector":"e570110f","id":9432,"name":"SafeERC20FailedDecreaseAllowance","nameLocation":"926:32:36","nodeType":"ErrorDefinition","parameters":{"id":9431,"nodeType":"ParameterList","parameters":[{"constant":false,"id":9426,"mutability":"mutable","name":"spender","nameLocation":"967:7:36","nodeType":"VariableDeclaration","scope":9432,"src":"959:15:36","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":9425,"name":"address","nodeType":"ElementaryTypeName","src":"959:7:36","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":9428,"mutability":"mutable","name":"currentAllowance","nameLocation":"984:16:36","nodeType":"VariableDeclaration","scope":9432,"src":"976:24:36","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":9427,"name":"uint256","nodeType":"ElementaryTypeName","src":"976:7:36","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":9430,"mutability":"mutable","name":"requestedDecrease","nameLocation":"1010:17:36","nodeType":"VariableDeclaration","scope":9432,"src":"1002:25:36","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":9429,"name":"uint256","nodeType":"ElementaryTypeName","src":"1002:7:36","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"958:70:36"},"src":"920:109:36"},{"body":{"id":9459,"nodeType":"Block","src":"1291:132:36","statements":[{"condition":{"id":9449,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"UnaryOperation","operator":"!","prefix":true,"src":"1305:38:36","subExpression":{"arguments":[{"id":9444,"name":"token","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9436,"src":"1320:5:36","typeDescriptions":{"typeIdentifier":"t_contract$_IERC20_$8679","typeString":"contract IERC20"}},{"id":9445,"name":"to","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9438,"src":"1327:2:36","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":9446,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9440,"src":"1331:5:36","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"hexValue":"74727565","id":9447,"isConstant":false,"isLValue":false,"isPure":true,"kind":"bool","lValueRequested":false,"nodeType":"Literal","src":"1338:4:36","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"value":"true"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_contract$_IERC20_$8679","typeString":"contract IERC20"},{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_bool","typeString":"bool"}],"id":9443,"name":"_safeTransfer","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9817,"src":"1306:13:36","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_contract$_IERC20_$8679_$_t_address_$_t_uint256_$_t_bool_$returns$_t_bool_$","typeString":"function (contract IERC20,address,uint256,bool) returns (bool)"}},"id":9448,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"1306:37:36","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":9458,"nodeType":"IfStatement","src":"1301:116:36","trueBody":{"id":9457,"nodeType":"Block","src":"1345:72:36","statements":[{"errorCall":{"arguments":[{"arguments":[{"id":9453,"name":"token","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9436,"src":"1399:5:36","typeDescriptions":{"typeIdentifier":"t_contract$_IERC20_$8679","typeString":"contract IERC20"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_contract$_IERC20_$8679","typeString":"contract IERC20"}],"id":9452,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"1391:7:36","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":9451,"name":"address","nodeType":"ElementaryTypeName","src":"1391:7:36","typeDescriptions":{}}},"id":9454,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"1391:14:36","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"id":9450,"name":"SafeERC20FailedOperation","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9423,"src":"1366:24:36","typeDescriptions":{"typeIdentifier":"t_function_error_pure$_t_address_$returns$_t_error_$","typeString":"function (address) pure returns (error)"}},"id":9455,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"1366:40:36","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_error","typeString":"error"}},"id":9456,"nodeType":"RevertStatement","src":"1359:47:36"}]}}]},"documentation":{"id":9433,"nodeType":"StructuredDocumentation","src":"1035:179:36","text":" @dev Transfer `value` amount of `token` from the calling contract to `to`. If `token` returns no value,\n non-reverting calls are assumed to be successful."},"id":9460,"implemented":true,"kind":"function","modifiers":[],"name":"safeTransfer","nameLocation":"1228:12:36","nodeType":"FunctionDefinition","parameters":{"id":9441,"nodeType":"ParameterList","parameters":[{"constant":false,"id":9436,"mutability":"mutable","name":"token","nameLocation":"1248:5:36","nodeType":"VariableDeclaration","scope":9460,"src":"1241:12:36","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_contract$_IERC20_$8679","typeString":"contract IERC20"},"typeName":{"id":9435,"nodeType":"UserDefinedTypeName","pathNode":{"id":9434,"name":"IERC20","nameLocations":["1241:6:36"],"nodeType":"IdentifierPath","referencedDeclaration":8679,"src":"1241:6:36"},"referencedDeclaration":8679,"src":"1241:6:36","typeDescriptions":{"typeIdentifier":"t_contract$_IERC20_$8679","typeString":"contract IERC20"}},"visibility":"internal"},{"constant":false,"id":9438,"mutability":"mutable","name":"to","nameLocation":"1263:2:36","nodeType":"VariableDeclaration","scope":9460,"src":"1255:10:36","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":9437,"name":"address","nodeType":"ElementaryTypeName","src":"1255:7:36","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":9440,"mutability":"mutable","name":"value","nameLocation":"1275:5:36","nodeType":"VariableDeclaration","scope":9460,"src":"1267:13:36","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":9439,"name":"uint256","nodeType":"ElementaryTypeName","src":"1267:7:36","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"1240:41:36"},"returnParameters":{"id":9442,"nodeType":"ParameterList","parameters":[],"src":"1291:0:36"},"scope":9866,"src":"1219:204:36","stateMutability":"nonpayable","virtual":false,"visibility":"internal"},{"body":{"id":9490,"nodeType":"Block","src":"1752:142:36","statements":[{"condition":{"id":9480,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"UnaryOperation","operator":"!","prefix":true,"src":"1766:48:36","subExpression":{"arguments":[{"id":9474,"name":"token","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9464,"src":"1785:5:36","typeDescriptions":{"typeIdentifier":"t_contract$_IERC20_$8679","typeString":"contract IERC20"}},{"id":9475,"name":"from","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9466,"src":"1792:4:36","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":9476,"name":"to","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9468,"src":"1798:2:36","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":9477,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9470,"src":"1802:5:36","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"hexValue":"74727565","id":9478,"isConstant":false,"isLValue":false,"isPure":true,"kind":"bool","lValueRequested":false,"nodeType":"Literal","src":"1809:4:36","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"value":"true"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_contract$_IERC20_$8679","typeString":"contract IERC20"},{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_bool","typeString":"bool"}],"id":9473,"name":"_safeTransferFrom","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9842,"src":"1767:17:36","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_contract$_IERC20_$8679_$_t_address_$_t_address_$_t_uint256_$_t_bool_$returns$_t_bool_$","typeString":"function (contract IERC20,address,address,uint256,bool) returns (bool)"}},"id":9479,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"1767:47:36","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":9489,"nodeType":"IfStatement","src":"1762:126:36","trueBody":{"id":9488,"nodeType":"Block","src":"1816:72:36","statements":[{"errorCall":{"arguments":[{"arguments":[{"id":9484,"name":"token","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9464,"src":"1870:5:36","typeDescriptions":{"typeIdentifier":"t_contract$_IERC20_$8679","typeString":"contract IERC20"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_contract$_IERC20_$8679","typeString":"contract IERC20"}],"id":9483,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"1862:7:36","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":9482,"name":"address","nodeType":"ElementaryTypeName","src":"1862:7:36","typeDescriptions":{}}},"id":9485,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"1862:14:36","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"id":9481,"name":"SafeERC20FailedOperation","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9423,"src":"1837:24:36","typeDescriptions":{"typeIdentifier":"t_function_error_pure$_t_address_$returns$_t_error_$","typeString":"function (address) pure returns (error)"}},"id":9486,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"1837:40:36","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_error","typeString":"error"}},"id":9487,"nodeType":"RevertStatement","src":"1830:47:36"}]}}]},"documentation":{"id":9461,"nodeType":"StructuredDocumentation","src":"1429:228:36","text":" @dev Transfer `value` amount of `token` from `from` to `to`, spending the approval given by `from` to the\n calling contract. If `token` returns no value, non-reverting calls are assumed to be successful."},"id":9491,"implemented":true,"kind":"function","modifiers":[],"name":"safeTransferFrom","nameLocation":"1671:16:36","nodeType":"FunctionDefinition","parameters":{"id":9471,"nodeType":"ParameterList","parameters":[{"constant":false,"id":9464,"mutability":"mutable","name":"token","nameLocation":"1695:5:36","nodeType":"VariableDeclaration","scope":9491,"src":"1688:12:36","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_contract$_IERC20_$8679","typeString":"contract IERC20"},"typeName":{"id":9463,"nodeType":"UserDefinedTypeName","pathNode":{"id":9462,"name":"IERC20","nameLocations":["1688:6:36"],"nodeType":"IdentifierPath","referencedDeclaration":8679,"src":"1688:6:36"},"referencedDeclaration":8679,"src":"1688:6:36","typeDescriptions":{"typeIdentifier":"t_contract$_IERC20_$8679","typeString":"contract IERC20"}},"visibility":"internal"},{"constant":false,"id":9466,"mutability":"mutable","name":"from","nameLocation":"1710:4:36","nodeType":"VariableDeclaration","scope":9491,"src":"1702:12:36","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":9465,"name":"address","nodeType":"ElementaryTypeName","src":"1702:7:36","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":9468,"mutability":"mutable","name":"to","nameLocation":"1724:2:36","nodeType":"VariableDeclaration","scope":9491,"src":"1716:10:36","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":9467,"name":"address","nodeType":"ElementaryTypeName","src":"1716:7:36","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":9470,"mutability":"mutable","name":"value","nameLocation":"1736:5:36","nodeType":"VariableDeclaration","scope":9491,"src":"1728:13:36","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":9469,"name":"uint256","nodeType":"ElementaryTypeName","src":"1728:7:36","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"1687:55:36"},"returnParameters":{"id":9472,"nodeType":"ParameterList","parameters":[],"src":"1752:0:36"},"scope":9866,"src":"1662:232:36","stateMutability":"nonpayable","virtual":false,"visibility":"internal"},{"body":{"id":9511,"nodeType":"Block","src":"2121:62:36","statements":[{"expression":{"arguments":[{"id":9505,"name":"token","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9495,"src":"2152:5:36","typeDescriptions":{"typeIdentifier":"t_contract$_IERC20_$8679","typeString":"contract IERC20"}},{"id":9506,"name":"to","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9497,"src":"2159:2:36","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":9507,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9499,"src":"2163:5:36","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"hexValue":"66616c7365","id":9508,"isConstant":false,"isLValue":false,"isPure":true,"kind":"bool","lValueRequested":false,"nodeType":"Literal","src":"2170:5:36","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"value":"false"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_contract$_IERC20_$8679","typeString":"contract IERC20"},{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_bool","typeString":"bool"}],"id":9504,"name":"_safeTransfer","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9817,"src":"2138:13:36","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_contract$_IERC20_$8679_$_t_address_$_t_uint256_$_t_bool_$returns$_t_bool_$","typeString":"function (contract IERC20,address,uint256,bool) returns (bool)"}},"id":9509,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"2138:38:36","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"functionReturnParameters":9503,"id":9510,"nodeType":"Return","src":"2131:45:36"}]},"documentation":{"id":9492,"nodeType":"StructuredDocumentation","src":"1900:126:36","text":" @dev Variant of {safeTransfer} that returns a bool instead of reverting if the operation is not successful."},"id":9512,"implemented":true,"kind":"function","modifiers":[],"name":"trySafeTransfer","nameLocation":"2040:15:36","nodeType":"FunctionDefinition","parameters":{"id":9500,"nodeType":"ParameterList","parameters":[{"constant":false,"id":9495,"mutability":"mutable","name":"token","nameLocation":"2063:5:36","nodeType":"VariableDeclaration","scope":9512,"src":"2056:12:36","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_contract$_IERC20_$8679","typeString":"contract IERC20"},"typeName":{"id":9494,"nodeType":"UserDefinedTypeName","pathNode":{"id":9493,"name":"IERC20","nameLocations":["2056:6:36"],"nodeType":"IdentifierPath","referencedDeclaration":8679,"src":"2056:6:36"},"referencedDeclaration":8679,"src":"2056:6:36","typeDescriptions":{"typeIdentifier":"t_contract$_IERC20_$8679","typeString":"contract IERC20"}},"visibility":"internal"},{"constant":false,"id":9497,"mutability":"mutable","name":"to","nameLocation":"2078:2:36","nodeType":"VariableDeclaration","scope":9512,"src":"2070:10:36","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":9496,"name":"address","nodeType":"ElementaryTypeName","src":"2070:7:36","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":9499,"mutability":"mutable","name":"value","nameLocation":"2090:5:36","nodeType":"VariableDeclaration","scope":9512,"src":"2082:13:36","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":9498,"name":"uint256","nodeType":"ElementaryTypeName","src":"2082:7:36","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"2055:41:36"},"returnParameters":{"id":9503,"nodeType":"ParameterList","parameters":[{"constant":false,"id":9502,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":9512,"src":"2115:4:36","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":9501,"name":"bool","nodeType":"ElementaryTypeName","src":"2115:4:36","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"}],"src":"2114:6:36"},"scope":9866,"src":"2031:152:36","stateMutability":"nonpayable","virtual":false,"visibility":"internal"},{"body":{"id":9535,"nodeType":"Block","src":"2432:72:36","statements":[{"expression":{"arguments":[{"id":9528,"name":"token","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9516,"src":"2467:5:36","typeDescriptions":{"typeIdentifier":"t_contract$_IERC20_$8679","typeString":"contract IERC20"}},{"id":9529,"name":"from","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9518,"src":"2474:4:36","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":9530,"name":"to","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9520,"src":"2480:2:36","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":9531,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9522,"src":"2484:5:36","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"hexValue":"66616c7365","id":9532,"isConstant":false,"isLValue":false,"isPure":true,"kind":"bool","lValueRequested":false,"nodeType":"Literal","src":"2491:5:36","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"value":"false"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_contract$_IERC20_$8679","typeString":"contract IERC20"},{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_bool","typeString":"bool"}],"id":9527,"name":"_safeTransferFrom","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9842,"src":"2449:17:36","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_contract$_IERC20_$8679_$_t_address_$_t_address_$_t_uint256_$_t_bool_$returns$_t_bool_$","typeString":"function (contract IERC20,address,address,uint256,bool) returns (bool)"}},"id":9533,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"2449:48:36","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"functionReturnParameters":9526,"id":9534,"nodeType":"Return","src":"2442:55:36"}]},"documentation":{"id":9513,"nodeType":"StructuredDocumentation","src":"2189:130:36","text":" @dev Variant of {safeTransferFrom} that returns a bool instead of reverting if the operation is not successful."},"id":9536,"implemented":true,"kind":"function","modifiers":[],"name":"trySafeTransferFrom","nameLocation":"2333:19:36","nodeType":"FunctionDefinition","parameters":{"id":9523,"nodeType":"ParameterList","parameters":[{"constant":false,"id":9516,"mutability":"mutable","name":"token","nameLocation":"2360:5:36","nodeType":"VariableDeclaration","scope":9536,"src":"2353:12:36","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_contract$_IERC20_$8679","typeString":"contract IERC20"},"typeName":{"id":9515,"nodeType":"UserDefinedTypeName","pathNode":{"id":9514,"name":"IERC20","nameLocations":["2353:6:36"],"nodeType":"IdentifierPath","referencedDeclaration":8679,"src":"2353:6:36"},"referencedDeclaration":8679,"src":"2353:6:36","typeDescriptions":{"typeIdentifier":"t_contract$_IERC20_$8679","typeString":"contract IERC20"}},"visibility":"internal"},{"constant":false,"id":9518,"mutability":"mutable","name":"from","nameLocation":"2375:4:36","nodeType":"VariableDeclaration","scope":9536,"src":"2367:12:36","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":9517,"name":"address","nodeType":"ElementaryTypeName","src":"2367:7:36","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":9520,"mutability":"mutable","name":"to","nameLocation":"2389:2:36","nodeType":"VariableDeclaration","scope":9536,"src":"2381:10:36","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":9519,"name":"address","nodeType":"ElementaryTypeName","src":"2381:7:36","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":9522,"mutability":"mutable","name":"value","nameLocation":"2401:5:36","nodeType":"VariableDeclaration","scope":9536,"src":"2393:13:36","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":9521,"name":"uint256","nodeType":"ElementaryTypeName","src":"2393:7:36","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"2352:55:36"},"returnParameters":{"id":9526,"nodeType":"ParameterList","parameters":[{"constant":false,"id":9525,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":9536,"src":"2426:4:36","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":9524,"name":"bool","nodeType":"ElementaryTypeName","src":"2426:4:36","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"}],"src":"2425:6:36"},"scope":9866,"src":"2324:180:36","stateMutability":"nonpayable","virtual":false,"visibility":"internal"},{"body":{"id":9566,"nodeType":"Block","src":"3246:139:36","statements":[{"assignments":[9548],"declarations":[{"constant":false,"id":9548,"mutability":"mutable","name":"oldAllowance","nameLocation":"3264:12:36","nodeType":"VariableDeclaration","scope":9566,"src":"3256:20:36","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":9547,"name":"uint256","nodeType":"ElementaryTypeName","src":"3256:7:36","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":9557,"initialValue":{"arguments":[{"arguments":[{"id":9553,"name":"this","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-28,"src":"3303:4:36","typeDescriptions":{"typeIdentifier":"t_contract$_SafeERC20_$9866","typeString":"library SafeERC20"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_contract$_SafeERC20_$9866","typeString":"library SafeERC20"}],"id":9552,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"3295:7:36","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":9551,"name":"address","nodeType":"ElementaryTypeName","src":"3295:7:36","typeDescriptions":{}}},"id":9554,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"3295:13:36","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":9555,"name":"spender","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9542,"src":"3310:7:36","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_address","typeString":"address"}],"expression":{"id":9549,"name":"token","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9540,"src":"3279:5:36","typeDescriptions":{"typeIdentifier":"t_contract$_IERC20_$8679","typeString":"contract IERC20"}},"id":9550,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"3285:9:36","memberName":"allowance","nodeType":"MemberAccess","referencedDeclaration":8656,"src":"3279:15:36","typeDescriptions":{"typeIdentifier":"t_function_external_view$_t_address_$_t_address_$returns$_t_uint256_$","typeString":"function (address,address) view external returns (uint256)"}},"id":9556,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"3279:39:36","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"VariableDeclarationStatement","src":"3256:62:36"},{"expression":{"arguments":[{"id":9559,"name":"token","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9540,"src":"3341:5:36","typeDescriptions":{"typeIdentifier":"t_contract$_IERC20_$8679","typeString":"contract IERC20"}},{"id":9560,"name":"spender","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9542,"src":"3348:7:36","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":9563,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":9561,"name":"oldAllowance","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9548,"src":"3357:12:36","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"+","rightExpression":{"id":9562,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9544,"src":"3372:5:36","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"3357:20:36","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_contract$_IERC20_$8679","typeString":"contract IERC20"},{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":9558,"name":"forceApprove","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9661,"src":"3328:12:36","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_contract$_IERC20_$8679_$_t_address_$_t_uint256_$returns$__$","typeString":"function (contract IERC20,address,uint256)"}},"id":9564,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"3328:50:36","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":9565,"nodeType":"ExpressionStatement","src":"3328:50:36"}]},"documentation":{"id":9537,"nodeType":"StructuredDocumentation","src":"2510:645:36","text":" @dev Increase the calling contract's allowance toward `spender` by `value`. If `token` returns no value,\n non-reverting calls are assumed to be successful.\n IMPORTANT: If the token implements ERC-7674 (ERC-20 with temporary allowance), and if the \"client\"\n smart contract uses ERC-7674 to set temporary allowances, then the \"client\" smart contract should avoid using\n this function. Performing a {safeIncreaseAllowance} or {safeDecreaseAllowance} operation on a token contract\n that has a non-zero temporary allowance (for that particular owner-spender) will result in unexpected behavior."},"id":9567,"implemented":true,"kind":"function","modifiers":[],"name":"safeIncreaseAllowance","nameLocation":"3169:21:36","nodeType":"FunctionDefinition","parameters":{"id":9545,"nodeType":"ParameterList","parameters":[{"constant":false,"id":9540,"mutability":"mutable","name":"token","nameLocation":"3198:5:36","nodeType":"VariableDeclaration","scope":9567,"src":"3191:12:36","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_contract$_IERC20_$8679","typeString":"contract IERC20"},"typeName":{"id":9539,"nodeType":"UserDefinedTypeName","pathNode":{"id":9538,"name":"IERC20","nameLocations":["3191:6:36"],"nodeType":"IdentifierPath","referencedDeclaration":8679,"src":"3191:6:36"},"referencedDeclaration":8679,"src":"3191:6:36","typeDescriptions":{"typeIdentifier":"t_contract$_IERC20_$8679","typeString":"contract IERC20"}},"visibility":"internal"},{"constant":false,"id":9542,"mutability":"mutable","name":"spender","nameLocation":"3213:7:36","nodeType":"VariableDeclaration","scope":9567,"src":"3205:15:36","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":9541,"name":"address","nodeType":"ElementaryTypeName","src":"3205:7:36","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":9544,"mutability":"mutable","name":"value","nameLocation":"3230:5:36","nodeType":"VariableDeclaration","scope":9567,"src":"3222:13:36","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":9543,"name":"uint256","nodeType":"ElementaryTypeName","src":"3222:7:36","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"3190:46:36"},"returnParameters":{"id":9546,"nodeType":"ParameterList","parameters":[],"src":"3246:0:36"},"scope":9866,"src":"3160:225:36","stateMutability":"nonpayable","virtual":false,"visibility":"internal"},{"body":{"id":9609,"nodeType":"Block","src":"4151:370:36","statements":[{"id":9608,"nodeType":"UncheckedBlock","src":"4161:354:36","statements":[{"assignments":[9579],"declarations":[{"constant":false,"id":9579,"mutability":"mutable","name":"currentAllowance","nameLocation":"4193:16:36","nodeType":"VariableDeclaration","scope":9608,"src":"4185:24:36","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":9578,"name":"uint256","nodeType":"ElementaryTypeName","src":"4185:7:36","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":9588,"initialValue":{"arguments":[{"arguments":[{"id":9584,"name":"this","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-28,"src":"4236:4:36","typeDescriptions":{"typeIdentifier":"t_contract$_SafeERC20_$9866","typeString":"library SafeERC20"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_contract$_SafeERC20_$9866","typeString":"library SafeERC20"}],"id":9583,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"4228:7:36","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":9582,"name":"address","nodeType":"ElementaryTypeName","src":"4228:7:36","typeDescriptions":{}}},"id":9585,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"4228:13:36","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":9586,"name":"spender","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9573,"src":"4243:7:36","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_address","typeString":"address"}],"expression":{"id":9580,"name":"token","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9571,"src":"4212:5:36","typeDescriptions":{"typeIdentifier":"t_contract$_IERC20_$8679","typeString":"contract IERC20"}},"id":9581,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"4218:9:36","memberName":"allowance","nodeType":"MemberAccess","referencedDeclaration":8656,"src":"4212:15:36","typeDescriptions":{"typeIdentifier":"t_function_external_view$_t_address_$_t_address_$returns$_t_uint256_$","typeString":"function (address,address) view external returns (uint256)"}},"id":9587,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"4212:39:36","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"VariableDeclarationStatement","src":"4185:66:36"},{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":9591,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":9589,"name":"currentAllowance","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9579,"src":"4269:16:36","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"<","rightExpression":{"id":9590,"name":"requestedDecrease","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9575,"src":"4288:17:36","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"4269:36:36","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":9599,"nodeType":"IfStatement","src":"4265:160:36","trueBody":{"id":9598,"nodeType":"Block","src":"4307:118:36","statements":[{"errorCall":{"arguments":[{"id":9593,"name":"spender","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9573,"src":"4365:7:36","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":9594,"name":"currentAllowance","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9579,"src":"4374:16:36","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"id":9595,"name":"requestedDecrease","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9575,"src":"4392:17:36","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":9592,"name":"SafeERC20FailedDecreaseAllowance","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9432,"src":"4332:32:36","typeDescriptions":{"typeIdentifier":"t_function_error_pure$_t_address_$_t_uint256_$_t_uint256_$returns$_t_error_$","typeString":"function (address,uint256,uint256) pure returns (error)"}},"id":9596,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"4332:78:36","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_error","typeString":"error"}},"id":9597,"nodeType":"RevertStatement","src":"4325:85:36"}]}},{"expression":{"arguments":[{"id":9601,"name":"token","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9571,"src":"4451:5:36","typeDescriptions":{"typeIdentifier":"t_contract$_IERC20_$8679","typeString":"contract IERC20"}},{"id":9602,"name":"spender","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9573,"src":"4458:7:36","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":9605,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":9603,"name":"currentAllowance","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9579,"src":"4467:16:36","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"-","rightExpression":{"id":9604,"name":"requestedDecrease","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9575,"src":"4486:17:36","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"4467:36:36","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_contract$_IERC20_$8679","typeString":"contract IERC20"},{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":9600,"name":"forceApprove","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9661,"src":"4438:12:36","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_contract$_IERC20_$8679_$_t_address_$_t_uint256_$returns$__$","typeString":"function (contract IERC20,address,uint256)"}},"id":9606,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"4438:66:36","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":9607,"nodeType":"ExpressionStatement","src":"4438:66:36"}]}]},"documentation":{"id":9568,"nodeType":"StructuredDocumentation","src":"3391:657:36","text":" @dev Decrease the calling contract's allowance toward `spender` by `requestedDecrease`. If `token` returns no\n value, non-reverting calls are assumed to be successful.\n IMPORTANT: If the token implements ERC-7674 (ERC-20 with temporary allowance), and if the \"client\"\n smart contract uses ERC-7674 to set temporary allowances, then the \"client\" smart contract should avoid using\n this function. Performing a {safeIncreaseAllowance} or {safeDecreaseAllowance} operation on a token contract\n that has a non-zero temporary allowance (for that particular owner-spender) will result in unexpected behavior."},"id":9610,"implemented":true,"kind":"function","modifiers":[],"name":"safeDecreaseAllowance","nameLocation":"4062:21:36","nodeType":"FunctionDefinition","parameters":{"id":9576,"nodeType":"ParameterList","parameters":[{"constant":false,"id":9571,"mutability":"mutable","name":"token","nameLocation":"4091:5:36","nodeType":"VariableDeclaration","scope":9610,"src":"4084:12:36","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_contract$_IERC20_$8679","typeString":"contract IERC20"},"typeName":{"id":9570,"nodeType":"UserDefinedTypeName","pathNode":{"id":9569,"name":"IERC20","nameLocations":["4084:6:36"],"nodeType":"IdentifierPath","referencedDeclaration":8679,"src":"4084:6:36"},"referencedDeclaration":8679,"src":"4084:6:36","typeDescriptions":{"typeIdentifier":"t_contract$_IERC20_$8679","typeString":"contract IERC20"}},"visibility":"internal"},{"constant":false,"id":9573,"mutability":"mutable","name":"spender","nameLocation":"4106:7:36","nodeType":"VariableDeclaration","scope":9610,"src":"4098:15:36","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":9572,"name":"address","nodeType":"ElementaryTypeName","src":"4098:7:36","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":9575,"mutability":"mutable","name":"requestedDecrease","nameLocation":"4123:17:36","nodeType":"VariableDeclaration","scope":9610,"src":"4115:25:36","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":9574,"name":"uint256","nodeType":"ElementaryTypeName","src":"4115:7:36","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"4083:58:36"},"returnParameters":{"id":9577,"nodeType":"ParameterList","parameters":[],"src":"4151:0:36"},"scope":9866,"src":"4053:468:36","stateMutability":"nonpayable","virtual":false,"visibility":"internal"},{"body":{"id":9660,"nodeType":"Block","src":"5175:290:36","statements":[{"condition":{"id":9627,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"UnaryOperation","operator":"!","prefix":true,"src":"5189:43:36","subExpression":{"arguments":[{"id":9622,"name":"token","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9614,"src":"5203:5:36","typeDescriptions":{"typeIdentifier":"t_contract$_IERC20_$8679","typeString":"contract IERC20"}},{"id":9623,"name":"spender","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9616,"src":"5210:7:36","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":9624,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9618,"src":"5219:5:36","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"hexValue":"66616c7365","id":9625,"isConstant":false,"isLValue":false,"isPure":true,"kind":"bool","lValueRequested":false,"nodeType":"Literal","src":"5226:5:36","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"value":"false"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_contract$_IERC20_$8679","typeString":"contract IERC20"},{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_bool","typeString":"bool"}],"id":9621,"name":"_safeApprove","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9865,"src":"5190:12:36","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_contract$_IERC20_$8679_$_t_address_$_t_uint256_$_t_bool_$returns$_t_bool_$","typeString":"function (contract IERC20,address,uint256,bool) returns (bool)"}},"id":9626,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"5190:42:36","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":9659,"nodeType":"IfStatement","src":"5185:274:36","trueBody":{"id":9658,"nodeType":"Block","src":"5234:225:36","statements":[{"condition":{"id":9634,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"UnaryOperation","operator":"!","prefix":true,"src":"5252:38:36","subExpression":{"arguments":[{"id":9629,"name":"token","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9614,"src":"5266:5:36","typeDescriptions":{"typeIdentifier":"t_contract$_IERC20_$8679","typeString":"contract IERC20"}},{"id":9630,"name":"spender","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9616,"src":"5273:7:36","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"hexValue":"30","id":9631,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"5282:1:36","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},{"hexValue":"74727565","id":9632,"isConstant":false,"isLValue":false,"isPure":true,"kind":"bool","lValueRequested":false,"nodeType":"Literal","src":"5285:4:36","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"value":"true"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_contract$_IERC20_$8679","typeString":"contract IERC20"},{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},{"typeIdentifier":"t_bool","typeString":"bool"}],"id":9628,"name":"_safeApprove","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9865,"src":"5253:12:36","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_contract$_IERC20_$8679_$_t_address_$_t_uint256_$_t_bool_$returns$_t_bool_$","typeString":"function (contract IERC20,address,uint256,bool) returns (bool)"}},"id":9633,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"5253:37:36","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":9642,"nodeType":"IfStatement","src":"5248:91:36","trueBody":{"errorCall":{"arguments":[{"arguments":[{"id":9638,"name":"token","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9614,"src":"5332:5:36","typeDescriptions":{"typeIdentifier":"t_contract$_IERC20_$8679","typeString":"contract IERC20"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_contract$_IERC20_$8679","typeString":"contract IERC20"}],"id":9637,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"5324:7:36","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":9636,"name":"address","nodeType":"ElementaryTypeName","src":"5324:7:36","typeDescriptions":{}}},"id":9639,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"5324:14:36","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"id":9635,"name":"SafeERC20FailedOperation","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9423,"src":"5299:24:36","typeDescriptions":{"typeIdentifier":"t_function_error_pure$_t_address_$returns$_t_error_$","typeString":"function (address) pure returns (error)"}},"id":9640,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"5299:40:36","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_error","typeString":"error"}},"id":9641,"nodeType":"RevertStatement","src":"5292:47:36"}},{"condition":{"id":9649,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"UnaryOperation","operator":"!","prefix":true,"src":"5357:42:36","subExpression":{"arguments":[{"id":9644,"name":"token","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9614,"src":"5371:5:36","typeDescriptions":{"typeIdentifier":"t_contract$_IERC20_$8679","typeString":"contract IERC20"}},{"id":9645,"name":"spender","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9616,"src":"5378:7:36","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":9646,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9618,"src":"5387:5:36","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"hexValue":"74727565","id":9647,"isConstant":false,"isLValue":false,"isPure":true,"kind":"bool","lValueRequested":false,"nodeType":"Literal","src":"5394:4:36","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"value":"true"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_contract$_IERC20_$8679","typeString":"contract IERC20"},{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_bool","typeString":"bool"}],"id":9643,"name":"_safeApprove","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9865,"src":"5358:12:36","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_contract$_IERC20_$8679_$_t_address_$_t_uint256_$_t_bool_$returns$_t_bool_$","typeString":"function (contract IERC20,address,uint256,bool) returns (bool)"}},"id":9648,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"5358:41:36","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":9657,"nodeType":"IfStatement","src":"5353:95:36","trueBody":{"errorCall":{"arguments":[{"arguments":[{"id":9653,"name":"token","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9614,"src":"5441:5:36","typeDescriptions":{"typeIdentifier":"t_contract$_IERC20_$8679","typeString":"contract IERC20"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_contract$_IERC20_$8679","typeString":"contract IERC20"}],"id":9652,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"5433:7:36","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":9651,"name":"address","nodeType":"ElementaryTypeName","src":"5433:7:36","typeDescriptions":{}}},"id":9654,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"5433:14:36","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"id":9650,"name":"SafeERC20FailedOperation","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9423,"src":"5408:24:36","typeDescriptions":{"typeIdentifier":"t_function_error_pure$_t_address_$returns$_t_error_$","typeString":"function (address) pure returns (error)"}},"id":9655,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"5408:40:36","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_error","typeString":"error"}},"id":9656,"nodeType":"RevertStatement","src":"5401:47:36"}}]}}]},"documentation":{"id":9611,"nodeType":"StructuredDocumentation","src":"4527:566:36","text":" @dev Set the calling contract's allowance toward `spender` to `value`. If `token` returns no value,\n non-reverting calls are assumed to be successful. Meant to be used with tokens that require the approval\n to be set to zero before setting it to a non-zero value, such as USDT.\n NOTE: If the token implements ERC-7674, this function will not modify any temporary allowance. This function\n only sets the \"standard\" allowance. Any temporary allowance will remain active, in addition to the value being\n set here."},"id":9661,"implemented":true,"kind":"function","modifiers":[],"name":"forceApprove","nameLocation":"5107:12:36","nodeType":"FunctionDefinition","parameters":{"id":9619,"nodeType":"ParameterList","parameters":[{"constant":false,"id":9614,"mutability":"mutable","name":"token","nameLocation":"5127:5:36","nodeType":"VariableDeclaration","scope":9661,"src":"5120:12:36","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_contract$_IERC20_$8679","typeString":"contract IERC20"},"typeName":{"id":9613,"nodeType":"UserDefinedTypeName","pathNode":{"id":9612,"name":"IERC20","nameLocations":["5120:6:36"],"nodeType":"IdentifierPath","referencedDeclaration":8679,"src":"5120:6:36"},"referencedDeclaration":8679,"src":"5120:6:36","typeDescriptions":{"typeIdentifier":"t_contract$_IERC20_$8679","typeString":"contract IERC20"}},"visibility":"internal"},{"constant":false,"id":9616,"mutability":"mutable","name":"spender","nameLocation":"5142:7:36","nodeType":"VariableDeclaration","scope":9661,"src":"5134:15:36","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":9615,"name":"address","nodeType":"ElementaryTypeName","src":"5134:7:36","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":9618,"mutability":"mutable","name":"value","nameLocation":"5159:5:36","nodeType":"VariableDeclaration","scope":9661,"src":"5151:13:36","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":9617,"name":"uint256","nodeType":"ElementaryTypeName","src":"5151:7:36","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"5119:46:36"},"returnParameters":{"id":9620,"nodeType":"ParameterList","parameters":[],"src":"5175:0:36"},"scope":9866,"src":"5098:367:36","stateMutability":"nonpayable","virtual":false,"visibility":"internal"},{"body":{"id":9703,"nodeType":"Block","src":"5914:219:36","statements":[{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":9678,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"expression":{"expression":{"id":9674,"name":"to","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9667,"src":"5928:2:36","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"id":9675,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"5931:4:36","memberName":"code","nodeType":"MemberAccess","src":"5928:7:36","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}},"id":9676,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"5936:6:36","memberName":"length","nodeType":"MemberAccess","src":"5928:14:36","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"hexValue":"30","id":9677,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"5946:1:36","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"5928:19:36","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"falseBody":{"condition":{"id":9692,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"UnaryOperation","operator":"!","prefix":true,"src":"6014:39:36","subExpression":{"arguments":[{"id":9688,"name":"to","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9667,"src":"6037:2:36","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":9689,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9669,"src":"6041:5:36","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"id":9690,"name":"data","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9671,"src":"6048:4:36","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}],"expression":{"id":9686,"name":"token","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9665,"src":"6015:5:36","typeDescriptions":{"typeIdentifier":"t_contract$_IERC1363_$6924","typeString":"contract IERC1363"}},"id":9687,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"6021:15:36","memberName":"transferAndCall","nodeType":"MemberAccess","referencedDeclaration":6875,"src":"6015:21:36","typeDescriptions":{"typeIdentifier":"t_function_external_nonpayable$_t_address_$_t_uint256_$_t_bytes_memory_ptr_$returns$_t_bool_$","typeString":"function (address,uint256,bytes memory) external returns (bool)"}},"id":9691,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"6015:38:36","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":9701,"nodeType":"IfStatement","src":"6010:117:36","trueBody":{"id":9700,"nodeType":"Block","src":"6055:72:36","statements":[{"errorCall":{"arguments":[{"arguments":[{"id":9696,"name":"token","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9665,"src":"6109:5:36","typeDescriptions":{"typeIdentifier":"t_contract$_IERC1363_$6924","typeString":"contract IERC1363"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_contract$_IERC1363_$6924","typeString":"contract IERC1363"}],"id":9695,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"6101:7:36","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":9694,"name":"address","nodeType":"ElementaryTypeName","src":"6101:7:36","typeDescriptions":{}}},"id":9697,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"6101:14:36","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"id":9693,"name":"SafeERC20FailedOperation","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9423,"src":"6076:24:36","typeDescriptions":{"typeIdentifier":"t_function_error_pure$_t_address_$returns$_t_error_$","typeString":"function (address) pure returns (error)"}},"id":9698,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"6076:40:36","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_error","typeString":"error"}},"id":9699,"nodeType":"RevertStatement","src":"6069:47:36"}]}},"id":9702,"nodeType":"IfStatement","src":"5924:203:36","trueBody":{"id":9685,"nodeType":"Block","src":"5949:55:36","statements":[{"expression":{"arguments":[{"id":9680,"name":"token","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9665,"src":"5976:5:36","typeDescriptions":{"typeIdentifier":"t_contract$_IERC1363_$6924","typeString":"contract IERC1363"}},{"id":9681,"name":"to","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9667,"src":"5983:2:36","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":9682,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9669,"src":"5987:5:36","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_contract$_IERC1363_$6924","typeString":"contract IERC1363"},{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":9679,"name":"safeTransfer","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9460,"src":"5963:12:36","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_contract$_IERC20_$8679_$_t_address_$_t_uint256_$returns$__$","typeString":"function (contract IERC20,address,uint256)"}},"id":9683,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"5963:30:36","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":9684,"nodeType":"ExpressionStatement","src":"5963:30:36"}]}}]},"documentation":{"id":9662,"nodeType":"StructuredDocumentation","src":"5471:335:36","text":" @dev Performs an {ERC1363} transferAndCall, with a fallback to the simple {ERC20} transfer if the target has no\n code. This can be used to implement an {ERC721}-like safe transfer that relies on {ERC1363} checks when\n targeting contracts.\n Reverts if the returned value is other than `true`."},"id":9704,"implemented":true,"kind":"function","modifiers":[],"name":"transferAndCallRelaxed","nameLocation":"5820:22:36","nodeType":"FunctionDefinition","parameters":{"id":9672,"nodeType":"ParameterList","parameters":[{"constant":false,"id":9665,"mutability":"mutable","name":"token","nameLocation":"5852:5:36","nodeType":"VariableDeclaration","scope":9704,"src":"5843:14:36","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_contract$_IERC1363_$6924","typeString":"contract IERC1363"},"typeName":{"id":9664,"nodeType":"UserDefinedTypeName","pathNode":{"id":9663,"name":"IERC1363","nameLocations":["5843:8:36"],"nodeType":"IdentifierPath","referencedDeclaration":6924,"src":"5843:8:36"},"referencedDeclaration":6924,"src":"5843:8:36","typeDescriptions":{"typeIdentifier":"t_contract$_IERC1363_$6924","typeString":"contract IERC1363"}},"visibility":"internal"},{"constant":false,"id":9667,"mutability":"mutable","name":"to","nameLocation":"5867:2:36","nodeType":"VariableDeclaration","scope":9704,"src":"5859:10:36","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":9666,"name":"address","nodeType":"ElementaryTypeName","src":"5859:7:36","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":9669,"mutability":"mutable","name":"value","nameLocation":"5879:5:36","nodeType":"VariableDeclaration","scope":9704,"src":"5871:13:36","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":9668,"name":"uint256","nodeType":"ElementaryTypeName","src":"5871:7:36","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":9671,"mutability":"mutable","name":"data","nameLocation":"5899:4:36","nodeType":"VariableDeclaration","scope":9704,"src":"5886:17:36","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes"},"typeName":{"id":9670,"name":"bytes","nodeType":"ElementaryTypeName","src":"5886:5:36","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"}],"src":"5842:62:36"},"returnParameters":{"id":9673,"nodeType":"ParameterList","parameters":[],"src":"5914:0:36"},"scope":9866,"src":"5811:322:36","stateMutability":"nonpayable","virtual":false,"visibility":"internal"},{"body":{"id":9750,"nodeType":"Block","src":"6654:239:36","statements":[{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":9723,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"expression":{"expression":{"id":9719,"name":"to","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9712,"src":"6668:2:36","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"id":9720,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"6671:4:36","memberName":"code","nodeType":"MemberAccess","src":"6668:7:36","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}},"id":9721,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"6676:6:36","memberName":"length","nodeType":"MemberAccess","src":"6668:14:36","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"hexValue":"30","id":9722,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"6686:1:36","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"6668:19:36","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"falseBody":{"condition":{"id":9739,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"UnaryOperation","operator":"!","prefix":true,"src":"6764:49:36","subExpression":{"arguments":[{"id":9734,"name":"from","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9710,"src":"6791:4:36","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":9735,"name":"to","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9712,"src":"6797:2:36","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":9736,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9714,"src":"6801:5:36","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"id":9737,"name":"data","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9716,"src":"6808:4:36","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}}],"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"}],"expression":{"id":9732,"name":"token","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9708,"src":"6765:5:36","typeDescriptions":{"typeIdentifier":"t_contract$_IERC1363_$6924","typeString":"contract IERC1363"}},"id":9733,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"6771:19:36","memberName":"transferFromAndCall","nodeType":"MemberAccess","referencedDeclaration":6901,"src":"6765:25:36","typeDescriptions":{"typeIdentifier":"t_function_external_nonpayable$_t_address_$_t_address_$_t_uint256_$_t_bytes_memory_ptr_$returns$_t_bool_$","typeString":"function (address,address,uint256,bytes memory) external returns (bool)"}},"id":9738,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"6765:48:36","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":9748,"nodeType":"IfStatement","src":"6760:127:36","trueBody":{"id":9747,"nodeType":"Block","src":"6815:72:36","statements":[{"errorCall":{"arguments":[{"arguments":[{"id":9743,"name":"token","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9708,"src":"6869:5:36","typeDescriptions":{"typeIdentifier":"t_contract$_IERC1363_$6924","typeString":"contract IERC1363"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_contract$_IERC1363_$6924","typeString":"contract IERC1363"}],"id":9742,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"6861:7:36","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":9741,"name":"address","nodeType":"ElementaryTypeName","src":"6861:7:36","typeDescriptions":{}}},"id":9744,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"6861:14:36","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"id":9740,"name":"SafeERC20FailedOperation","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9423,"src":"6836:24:36","typeDescriptions":{"typeIdentifier":"t_function_error_pure$_t_address_$returns$_t_error_$","typeString":"function (address) pure returns (error)"}},"id":9745,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"6836:40:36","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_error","typeString":"error"}},"id":9746,"nodeType":"RevertStatement","src":"6829:47:36"}]}},"id":9749,"nodeType":"IfStatement","src":"6664:223:36","trueBody":{"id":9731,"nodeType":"Block","src":"6689:65:36","statements":[{"expression":{"arguments":[{"id":9725,"name":"token","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9708,"src":"6720:5:36","typeDescriptions":{"typeIdentifier":"t_contract$_IERC1363_$6924","typeString":"contract IERC1363"}},{"id":9726,"name":"from","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9710,"src":"6727:4:36","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":9727,"name":"to","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9712,"src":"6733:2:36","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":9728,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9714,"src":"6737:5:36","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_contract$_IERC1363_$6924","typeString":"contract IERC1363"},{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":9724,"name":"safeTransferFrom","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9491,"src":"6703:16:36","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_contract$_IERC20_$8679_$_t_address_$_t_address_$_t_uint256_$returns$__$","typeString":"function (contract IERC20,address,address,uint256)"}},"id":9729,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"6703:40:36","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":9730,"nodeType":"ExpressionStatement","src":"6703:40:36"}]}}]},"documentation":{"id":9705,"nodeType":"StructuredDocumentation","src":"6139:343:36","text":" @dev Performs an {ERC1363} transferFromAndCall, with a fallback to the simple {ERC20} transferFrom if the target\n has no code. This can be used to implement an {ERC721}-like safe transfer that relies on {ERC1363} checks when\n targeting contracts.\n Reverts if the returned value is other than `true`."},"id":9751,"implemented":true,"kind":"function","modifiers":[],"name":"transferFromAndCallRelaxed","nameLocation":"6496:26:36","nodeType":"FunctionDefinition","parameters":{"id":9717,"nodeType":"ParameterList","parameters":[{"constant":false,"id":9708,"mutability":"mutable","name":"token","nameLocation":"6541:5:36","nodeType":"VariableDeclaration","scope":9751,"src":"6532:14:36","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_contract$_IERC1363_$6924","typeString":"contract IERC1363"},"typeName":{"id":9707,"nodeType":"UserDefinedTypeName","pathNode":{"id":9706,"name":"IERC1363","nameLocations":["6532:8:36"],"nodeType":"IdentifierPath","referencedDeclaration":6924,"src":"6532:8:36"},"referencedDeclaration":6924,"src":"6532:8:36","typeDescriptions":{"typeIdentifier":"t_contract$_IERC1363_$6924","typeString":"contract IERC1363"}},"visibility":"internal"},{"constant":false,"id":9710,"mutability":"mutable","name":"from","nameLocation":"6564:4:36","nodeType":"VariableDeclaration","scope":9751,"src":"6556:12:36","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":9709,"name":"address","nodeType":"ElementaryTypeName","src":"6556:7:36","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":9712,"mutability":"mutable","name":"to","nameLocation":"6586:2:36","nodeType":"VariableDeclaration","scope":9751,"src":"6578:10:36","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":9711,"name":"address","nodeType":"ElementaryTypeName","src":"6578:7:36","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":9714,"mutability":"mutable","name":"value","nameLocation":"6606:5:36","nodeType":"VariableDeclaration","scope":9751,"src":"6598:13:36","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":9713,"name":"uint256","nodeType":"ElementaryTypeName","src":"6598:7:36","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":9716,"mutability":"mutable","name":"data","nameLocation":"6634:4:36","nodeType":"VariableDeclaration","scope":9751,"src":"6621:17:36","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes"},"typeName":{"id":9715,"name":"bytes","nodeType":"ElementaryTypeName","src":"6621:5:36","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"}],"src":"6522:122:36"},"returnParameters":{"id":9718,"nodeType":"ParameterList","parameters":[],"src":"6654:0:36"},"scope":9866,"src":"6487:406:36","stateMutability":"nonpayable","virtual":false,"visibility":"internal"},{"body":{"id":9793,"nodeType":"Block","src":"7661:218:36","statements":[{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":9768,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"expression":{"expression":{"id":9764,"name":"to","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9757,"src":"7675:2:36","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"id":9765,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"7678:4:36","memberName":"code","nodeType":"MemberAccess","src":"7675:7:36","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}},"id":9766,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"7683:6:36","memberName":"length","nodeType":"MemberAccess","src":"7675:14:36","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"hexValue":"30","id":9767,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"7693:1:36","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"7675:19:36","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"falseBody":{"condition":{"id":9782,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"UnaryOperation","operator":"!","prefix":true,"src":"7761:38:36","subExpression":{"arguments":[{"id":9778,"name":"to","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9757,"src":"7783:2:36","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":9779,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9759,"src":"7787:5:36","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"id":9780,"name":"data","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9761,"src":"7794:4:36","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}],"expression":{"id":9776,"name":"token","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9755,"src":"7762:5:36","typeDescriptions":{"typeIdentifier":"t_contract$_IERC1363_$6924","typeString":"contract IERC1363"}},"id":9777,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"7768:14:36","memberName":"approveAndCall","nodeType":"MemberAccess","referencedDeclaration":6923,"src":"7762:20:36","typeDescriptions":{"typeIdentifier":"t_function_external_nonpayable$_t_address_$_t_uint256_$_t_bytes_memory_ptr_$returns$_t_bool_$","typeString":"function (address,uint256,bytes memory) external returns (bool)"}},"id":9781,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"7762:37:36","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":9791,"nodeType":"IfStatement","src":"7757:116:36","trueBody":{"id":9790,"nodeType":"Block","src":"7801:72:36","statements":[{"errorCall":{"arguments":[{"arguments":[{"id":9786,"name":"token","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9755,"src":"7855:5:36","typeDescriptions":{"typeIdentifier":"t_contract$_IERC1363_$6924","typeString":"contract IERC1363"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_contract$_IERC1363_$6924","typeString":"contract IERC1363"}],"id":9785,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"7847:7:36","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":9784,"name":"address","nodeType":"ElementaryTypeName","src":"7847:7:36","typeDescriptions":{}}},"id":9787,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"7847:14:36","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"id":9783,"name":"SafeERC20FailedOperation","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9423,"src":"7822:24:36","typeDescriptions":{"typeIdentifier":"t_function_error_pure$_t_address_$returns$_t_error_$","typeString":"function (address) pure returns (error)"}},"id":9788,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"7822:40:36","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_error","typeString":"error"}},"id":9789,"nodeType":"RevertStatement","src":"7815:47:36"}]}},"id":9792,"nodeType":"IfStatement","src":"7671:202:36","trueBody":{"id":9775,"nodeType":"Block","src":"7696:55:36","statements":[{"expression":{"arguments":[{"id":9770,"name":"token","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9755,"src":"7723:5:36","typeDescriptions":{"typeIdentifier":"t_contract$_IERC1363_$6924","typeString":"contract IERC1363"}},{"id":9771,"name":"to","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9757,"src":"7730:2:36","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":9772,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9759,"src":"7734:5:36","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_contract$_IERC1363_$6924","typeString":"contract IERC1363"},{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":9769,"name":"forceApprove","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9661,"src":"7710:12:36","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_contract$_IERC20_$8679_$_t_address_$_t_uint256_$returns$__$","typeString":"function (contract IERC20,address,uint256)"}},"id":9773,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"7710:30:36","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":9774,"nodeType":"ExpressionStatement","src":"7710:30:36"}]}}]},"documentation":{"id":9752,"nodeType":"StructuredDocumentation","src":"6899:655:36","text":" @dev Performs an {ERC1363} approveAndCall, with a fallback to the simple {ERC20} approve if the target has no\n code. This can be used to implement an {ERC721}-like safe transfer that rely on {ERC1363} checks when\n targeting contracts.\n NOTE: When the recipient address (`to`) has no code (i.e. is an EOA), this function behaves as {forceApprove}.\n Oppositely, when the recipient address (`to`) has code, this function only attempts to call {ERC1363-approveAndCall}\n once without retrying, and relies on the returned value to be true.\n Reverts if the returned value is other than `true`."},"id":9794,"implemented":true,"kind":"function","modifiers":[],"name":"approveAndCallRelaxed","nameLocation":"7568:21:36","nodeType":"FunctionDefinition","parameters":{"id":9762,"nodeType":"ParameterList","parameters":[{"constant":false,"id":9755,"mutability":"mutable","name":"token","nameLocation":"7599:5:36","nodeType":"VariableDeclaration","scope":9794,"src":"7590:14:36","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_contract$_IERC1363_$6924","typeString":"contract IERC1363"},"typeName":{"id":9754,"nodeType":"UserDefinedTypeName","pathNode":{"id":9753,"name":"IERC1363","nameLocations":["7590:8:36"],"nodeType":"IdentifierPath","referencedDeclaration":6924,"src":"7590:8:36"},"referencedDeclaration":6924,"src":"7590:8:36","typeDescriptions":{"typeIdentifier":"t_contract$_IERC1363_$6924","typeString":"contract IERC1363"}},"visibility":"internal"},{"constant":false,"id":9757,"mutability":"mutable","name":"to","nameLocation":"7614:2:36","nodeType":"VariableDeclaration","scope":9794,"src":"7606:10:36","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":9756,"name":"address","nodeType":"ElementaryTypeName","src":"7606:7:36","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":9759,"mutability":"mutable","name":"value","nameLocation":"7626:5:36","nodeType":"VariableDeclaration","scope":9794,"src":"7618:13:36","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":9758,"name":"uint256","nodeType":"ElementaryTypeName","src":"7618:7:36","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":9761,"mutability":"mutable","name":"data","nameLocation":"7646:4:36","nodeType":"VariableDeclaration","scope":9794,"src":"7633:17:36","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes"},"typeName":{"id":9760,"name":"bytes","nodeType":"ElementaryTypeName","src":"7633:5:36","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"}],"src":"7589:62:36"},"returnParameters":{"id":9763,"nodeType":"ParameterList","parameters":[],"src":"7661:0:36"},"scope":9866,"src":"7559:320:36","stateMutability":"nonpayable","virtual":false,"visibility":"internal"},{"body":{"id":9816,"nodeType":"Block","src":"8481:1136:36","statements":[{"assignments":[9810],"declarations":[{"constant":false,"id":9810,"mutability":"mutable","name":"selector","nameLocation":"8498:8:36","nodeType":"VariableDeclaration","scope":9816,"src":"8491:15:36","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes4","typeString":"bytes4"},"typeName":{"id":9809,"name":"bytes4","nodeType":"ElementaryTypeName","src":"8491:6:36","typeDescriptions":{"typeIdentifier":"t_bytes4","typeString":"bytes4"}},"visibility":"internal"}],"id":9814,"initialValue":{"expression":{"expression":{"id":9811,"name":"IERC20","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8679,"src":"8509:6:36","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_IERC20_$8679_$","typeString":"type(contract IERC20)"}},"id":9812,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberLocation":"8516:8:36","memberName":"transfer","nodeType":"MemberAccess","referencedDeclaration":8646,"src":"8509:15:36","typeDescriptions":{"typeIdentifier":"t_function_declaration_nonpayable$_t_address_$_t_uint256_$returns$_t_bool_$","typeString":"function IERC20.transfer(address,uint256) returns (bool)"}},"id":9813,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberLocation":"8525:8:36","memberName":"selector","nodeType":"MemberAccess","src":"8509:24:36","typeDescriptions":{"typeIdentifier":"t_bytes4","typeString":"bytes4"}},"nodeType":"VariableDeclarationStatement","src":"8491:42:36"},{"AST":{"nativeSrc":"8569:1042:36","nodeType":"YulBlock","src":"8569:1042:36","statements":[{"nativeSrc":"8583:22:36","nodeType":"YulVariableDeclaration","src":"8583:22:36","value":{"arguments":[{"kind":"number","nativeSrc":"8600:4:36","nodeType":"YulLiteral","src":"8600:4:36","type":"","value":"0x40"}],"functionName":{"name":"mload","nativeSrc":"8594:5:36","nodeType":"YulIdentifier","src":"8594:5:36"},"nativeSrc":"8594:11:36","nodeType":"YulFunctionCall","src":"8594:11:36"},"variables":[{"name":"fmp","nativeSrc":"8587:3:36","nodeType":"YulTypedName","src":"8587:3:36","type":""}]},{"expression":{"arguments":[{"kind":"number","nativeSrc":"8625:4:36","nodeType":"YulLiteral","src":"8625:4:36","type":"","value":"0x00"},{"name":"selector","nativeSrc":"8631:8:36","nodeType":"YulIdentifier","src":"8631:8:36"}],"functionName":{"name":"mstore","nativeSrc":"8618:6:36","nodeType":"YulIdentifier","src":"8618:6:36"},"nativeSrc":"8618:22:36","nodeType":"YulFunctionCall","src":"8618:22:36"},"nativeSrc":"8618:22:36","nodeType":"YulExpressionStatement","src":"8618:22:36"},{"expression":{"arguments":[{"kind":"number","nativeSrc":"8660:4:36","nodeType":"YulLiteral","src":"8660:4:36","type":"","value":"0x04"},{"arguments":[{"name":"to","nativeSrc":"8670:2:36","nodeType":"YulIdentifier","src":"8670:2:36"},{"arguments":[{"kind":"number","nativeSrc":"8678:2:36","nodeType":"YulLiteral","src":"8678:2:36","type":"","value":"96"},{"arguments":[{"kind":"number","nativeSrc":"8686:1:36","nodeType":"YulLiteral","src":"8686:1:36","type":"","value":"0"}],"functionName":{"name":"not","nativeSrc":"8682:3:36","nodeType":"YulIdentifier","src":"8682:3:36"},"nativeSrc":"8682:6:36","nodeType":"YulFunctionCall","src":"8682:6:36"}],"functionName":{"name":"shr","nativeSrc":"8674:3:36","nodeType":"YulIdentifier","src":"8674:3:36"},"nativeSrc":"8674:15:36","nodeType":"YulFunctionCall","src":"8674:15:36"}],"functionName":{"name":"and","nativeSrc":"8666:3:36","nodeType":"YulIdentifier","src":"8666:3:36"},"nativeSrc":"8666:24:36","nodeType":"YulFunctionCall","src":"8666:24:36"}],"functionName":{"name":"mstore","nativeSrc":"8653:6:36","nodeType":"YulIdentifier","src":"8653:6:36"},"nativeSrc":"8653:38:36","nodeType":"YulFunctionCall","src":"8653:38:36"},"nativeSrc":"8653:38:36","nodeType":"YulExpressionStatement","src":"8653:38:36"},{"expression":{"arguments":[{"kind":"number","nativeSrc":"8711:4:36","nodeType":"YulLiteral","src":"8711:4:36","type":"","value":"0x24"},{"name":"value","nativeSrc":"8717:5:36","nodeType":"YulIdentifier","src":"8717:5:36"}],"functionName":{"name":"mstore","nativeSrc":"8704:6:36","nodeType":"YulIdentifier","src":"8704:6:36"},"nativeSrc":"8704:19:36","nodeType":"YulFunctionCall","src":"8704:19:36"},"nativeSrc":"8704:19:36","nodeType":"YulExpressionStatement","src":"8704:19:36"},{"nativeSrc":"8736:56:36","nodeType":"YulAssignment","src":"8736:56:36","value":{"arguments":[{"arguments":[],"functionName":{"name":"gas","nativeSrc":"8752:3:36","nodeType":"YulIdentifier","src":"8752:3:36"},"nativeSrc":"8752:5:36","nodeType":"YulFunctionCall","src":"8752:5:36"},{"name":"token","nativeSrc":"8759:5:36","nodeType":"YulIdentifier","src":"8759:5:36"},{"kind":"number","nativeSrc":"8766:1:36","nodeType":"YulLiteral","src":"8766:1:36","type":"","value":"0"},{"kind":"number","nativeSrc":"8769:4:36","nodeType":"YulLiteral","src":"8769:4:36","type":"","value":"0x00"},{"kind":"number","nativeSrc":"8775:4:36","nodeType":"YulLiteral","src":"8775:4:36","type":"","value":"0x44"},{"kind":"number","nativeSrc":"8781:4:36","nodeType":"YulLiteral","src":"8781:4:36","type":"","value":"0x00"},{"kind":"number","nativeSrc":"8787:4:36","nodeType":"YulLiteral","src":"8787:4:36","type":"","value":"0x20"}],"functionName":{"name":"call","nativeSrc":"8747:4:36","nodeType":"YulIdentifier","src":"8747:4:36"},"nativeSrc":"8747:45:36","nodeType":"YulFunctionCall","src":"8747:45:36"},"variableNames":[{"name":"success","nativeSrc":"8736:7:36","nodeType":"YulIdentifier","src":"8736:7:36"}]},{"body":{"nativeSrc":"9009:562:36","nodeType":"YulBlock","src":"9009:562:36","statements":[{"body":{"nativeSrc":"9144:133:36","nodeType":"YulBlock","src":"9144:133:36","statements":[{"expression":{"arguments":[{"name":"fmp","nativeSrc":"9181:3:36","nodeType":"YulIdentifier","src":"9181:3:36"},{"kind":"number","nativeSrc":"9186:4:36","nodeType":"YulLiteral","src":"9186:4:36","type":"","value":"0x00"},{"arguments":[],"functionName":{"name":"returndatasize","nativeSrc":"9192:14:36","nodeType":"YulIdentifier","src":"9192:14:36"},"nativeSrc":"9192:16:36","nodeType":"YulFunctionCall","src":"9192:16:36"}],"functionName":{"name":"returndatacopy","nativeSrc":"9166:14:36","nodeType":"YulIdentifier","src":"9166:14:36"},"nativeSrc":"9166:43:36","nodeType":"YulFunctionCall","src":"9166:43:36"},"nativeSrc":"9166:43:36","nodeType":"YulExpressionStatement","src":"9166:43:36"},{"expression":{"arguments":[{"name":"fmp","nativeSrc":"9237:3:36","nodeType":"YulIdentifier","src":"9237:3:36"},{"arguments":[],"functionName":{"name":"returndatasize","nativeSrc":"9242:14:36","nodeType":"YulIdentifier","src":"9242:14:36"},"nativeSrc":"9242:16:36","nodeType":"YulFunctionCall","src":"9242:16:36"}],"functionName":{"name":"revert","nativeSrc":"9230:6:36","nodeType":"YulIdentifier","src":"9230:6:36"},"nativeSrc":"9230:29:36","nodeType":"YulFunctionCall","src":"9230:29:36"},"nativeSrc":"9230:29:36","nodeType":"YulExpressionStatement","src":"9230:29:36"}]},"condition":{"arguments":[{"arguments":[{"name":"success","nativeSrc":"9126:7:36","nodeType":"YulIdentifier","src":"9126:7:36"}],"functionName":{"name":"iszero","nativeSrc":"9119:6:36","nodeType":"YulIdentifier","src":"9119:6:36"},"nativeSrc":"9119:15:36","nodeType":"YulFunctionCall","src":"9119:15:36"},{"name":"bubble","nativeSrc":"9136:6:36","nodeType":"YulIdentifier","src":"9136:6:36"}],"functionName":{"name":"and","nativeSrc":"9115:3:36","nodeType":"YulIdentifier","src":"9115:3:36"},"nativeSrc":"9115:28:36","nodeType":"YulFunctionCall","src":"9115:28:36"},"nativeSrc":"9112:165:36","nodeType":"YulIf","src":"9112:165:36"},{"nativeSrc":"9476:81:36","nodeType":"YulAssignment","src":"9476:81:36","value":{"arguments":[{"name":"success","nativeSrc":"9491:7:36","nodeType":"YulIdentifier","src":"9491:7:36"},{"arguments":[{"arguments":[{"arguments":[],"functionName":{"name":"returndatasize","nativeSrc":"9511:14:36","nodeType":"YulIdentifier","src":"9511:14:36"},"nativeSrc":"9511:16:36","nodeType":"YulFunctionCall","src":"9511:16:36"}],"functionName":{"name":"iszero","nativeSrc":"9504:6:36","nodeType":"YulIdentifier","src":"9504:6:36"},"nativeSrc":"9504:24:36","nodeType":"YulFunctionCall","src":"9504:24:36"},{"arguments":[{"arguments":[{"name":"token","nativeSrc":"9545:5:36","nodeType":"YulIdentifier","src":"9545:5:36"}],"functionName":{"name":"extcodesize","nativeSrc":"9533:11:36","nodeType":"YulIdentifier","src":"9533:11:36"},"nativeSrc":"9533:18:36","nodeType":"YulFunctionCall","src":"9533:18:36"},{"kind":"number","nativeSrc":"9553:1:36","nodeType":"YulLiteral","src":"9553:1:36","type":"","value":"0"}],"functionName":{"name":"gt","nativeSrc":"9530:2:36","nodeType":"YulIdentifier","src":"9530:2:36"},"nativeSrc":"9530:25:36","nodeType":"YulFunctionCall","src":"9530:25:36"}],"functionName":{"name":"and","nativeSrc":"9500:3:36","nodeType":"YulIdentifier","src":"9500:3:36"},"nativeSrc":"9500:56:36","nodeType":"YulFunctionCall","src":"9500:56:36"}],"functionName":{"name":"and","nativeSrc":"9487:3:36","nodeType":"YulIdentifier","src":"9487:3:36"},"nativeSrc":"9487:70:36","nodeType":"YulFunctionCall","src":"9487:70:36"},"variableNames":[{"name":"success","nativeSrc":"9476:7:36","nodeType":"YulIdentifier","src":"9476:7:36"}]}]},"condition":{"arguments":[{"arguments":[{"name":"success","nativeSrc":"8979:7:36","nodeType":"YulIdentifier","src":"8979:7:36"},{"arguments":[{"arguments":[{"kind":"number","nativeSrc":"8997:4:36","nodeType":"YulLiteral","src":"8997:4:36","type":"","value":"0x00"}],"functionName":{"name":"mload","nativeSrc":"8991:5:36","nodeType":"YulIdentifier","src":"8991:5:36"},"nativeSrc":"8991:11:36","nodeType":"YulFunctionCall","src":"8991:11:36"},{"kind":"number","nativeSrc":"9004:1:36","nodeType":"YulLiteral","src":"9004:1:36","type":"","value":"1"}],"functionName":{"name":"eq","nativeSrc":"8988:2:36","nodeType":"YulIdentifier","src":"8988:2:36"},"nativeSrc":"8988:18:36","nodeType":"YulFunctionCall","src":"8988:18:36"}],"functionName":{"name":"and","nativeSrc":"8975:3:36","nodeType":"YulIdentifier","src":"8975:3:36"},"nativeSrc":"8975:32:36","nodeType":"YulFunctionCall","src":"8975:32:36"}],"functionName":{"name":"iszero","nativeSrc":"8968:6:36","nodeType":"YulIdentifier","src":"8968:6:36"},"nativeSrc":"8968:40:36","nodeType":"YulFunctionCall","src":"8968:40:36"},"nativeSrc":"8965:606:36","nodeType":"YulIf","src":"8965:606:36"},{"expression":{"arguments":[{"kind":"number","nativeSrc":"9591:4:36","nodeType":"YulLiteral","src":"9591:4:36","type":"","value":"0x40"},{"name":"fmp","nativeSrc":"9597:3:36","nodeType":"YulIdentifier","src":"9597:3:36"}],"functionName":{"name":"mstore","nativeSrc":"9584:6:36","nodeType":"YulIdentifier","src":"9584:6:36"},"nativeSrc":"9584:17:36","nodeType":"YulFunctionCall","src":"9584:17:36"},"nativeSrc":"9584:17:36","nodeType":"YulExpressionStatement","src":"9584:17:36"}]},"evmVersion":"prague","externalReferences":[{"declaration":9804,"isOffset":false,"isSlot":false,"src":"9136:6:36","valueSize":1},{"declaration":9810,"isOffset":false,"isSlot":false,"src":"8631:8:36","valueSize":1},{"declaration":9807,"isOffset":false,"isSlot":false,"src":"8736:7:36","valueSize":1},{"declaration":9807,"isOffset":false,"isSlot":false,"src":"8979:7:36","valueSize":1},{"declaration":9807,"isOffset":false,"isSlot":false,"src":"9126:7:36","valueSize":1},{"declaration":9807,"isOffset":false,"isSlot":false,"src":"9476:7:36","valueSize":1},{"declaration":9807,"isOffset":false,"isSlot":false,"src":"9491:7:36","valueSize":1},{"declaration":9800,"isOffset":false,"isSlot":false,"src":"8670:2:36","valueSize":1},{"declaration":9798,"isOffset":false,"isSlot":false,"src":"8759:5:36","valueSize":1},{"declaration":9798,"isOffset":false,"isSlot":false,"src":"9545:5:36","valueSize":1},{"declaration":9802,"isOffset":false,"isSlot":false,"src":"8717:5:36","valueSize":1}],"flags":["memory-safe"],"id":9815,"nodeType":"InlineAssembly","src":"8544:1067:36"}]},"documentation":{"id":9795,"nodeType":"StructuredDocumentation","src":"7885:483:36","text":" @dev Imitates a Solidity `token.transfer(to, value)` call, relaxing the requirement on the return value: the\n return value is optional (but if data is returned, it must not be false).\n @param token The token targeted by the call.\n @param to The recipient of the tokens\n @param value The amount of token to transfer\n @param bubble Behavior switch if the transfer call reverts: bubble the revert reason or return a false boolean."},"id":9817,"implemented":true,"kind":"function","modifiers":[],"name":"_safeTransfer","nameLocation":"8382:13:36","nodeType":"FunctionDefinition","parameters":{"id":9805,"nodeType":"ParameterList","parameters":[{"constant":false,"id":9798,"mutability":"mutable","name":"token","nameLocation":"8403:5:36","nodeType":"VariableDeclaration","scope":9817,"src":"8396:12:36","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_contract$_IERC20_$8679","typeString":"contract IERC20"},"typeName":{"id":9797,"nodeType":"UserDefinedTypeName","pathNode":{"id":9796,"name":"IERC20","nameLocations":["8396:6:36"],"nodeType":"IdentifierPath","referencedDeclaration":8679,"src":"8396:6:36"},"referencedDeclaration":8679,"src":"8396:6:36","typeDescriptions":{"typeIdentifier":"t_contract$_IERC20_$8679","typeString":"contract IERC20"}},"visibility":"internal"},{"constant":false,"id":9800,"mutability":"mutable","name":"to","nameLocation":"8418:2:36","nodeType":"VariableDeclaration","scope":9817,"src":"8410:10:36","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":9799,"name":"address","nodeType":"ElementaryTypeName","src":"8410:7:36","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":9802,"mutability":"mutable","name":"value","nameLocation":"8430:5:36","nodeType":"VariableDeclaration","scope":9817,"src":"8422:13:36","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":9801,"name":"uint256","nodeType":"ElementaryTypeName","src":"8422:7:36","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":9804,"mutability":"mutable","name":"bubble","nameLocation":"8442:6:36","nodeType":"VariableDeclaration","scope":9817,"src":"8437:11:36","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":9803,"name":"bool","nodeType":"ElementaryTypeName","src":"8437:4:36","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"}],"src":"8395:54:36"},"returnParameters":{"id":9808,"nodeType":"ParameterList","parameters":[{"constant":false,"id":9807,"mutability":"mutable","name":"success","nameLocation":"8472:7:36","nodeType":"VariableDeclaration","scope":9817,"src":"8467:12:36","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":9806,"name":"bool","nodeType":"ElementaryTypeName","src":"8467:4:36","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"}],"src":"8466:14:36"},"scope":9866,"src":"8373:1244:36","stateMutability":"nonpayable","virtual":false,"visibility":"private"},{"body":{"id":9841,"nodeType":"Block","src":"10337:1221:36","statements":[{"assignments":[9835],"declarations":[{"constant":false,"id":9835,"mutability":"mutable","name":"selector","nameLocation":"10354:8:36","nodeType":"VariableDeclaration","scope":9841,"src":"10347:15:36","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes4","typeString":"bytes4"},"typeName":{"id":9834,"name":"bytes4","nodeType":"ElementaryTypeName","src":"10347:6:36","typeDescriptions":{"typeIdentifier":"t_bytes4","typeString":"bytes4"}},"visibility":"internal"}],"id":9839,"initialValue":{"expression":{"expression":{"id":9836,"name":"IERC20","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8679,"src":"10365:6:36","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_IERC20_$8679_$","typeString":"type(contract IERC20)"}},"id":9837,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberLocation":"10372:12:36","memberName":"transferFrom","nodeType":"MemberAccess","referencedDeclaration":8678,"src":"10365:19:36","typeDescriptions":{"typeIdentifier":"t_function_declaration_nonpayable$_t_address_$_t_address_$_t_uint256_$returns$_t_bool_$","typeString":"function IERC20.transferFrom(address,address,uint256) returns (bool)"}},"id":9838,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberLocation":"10385:8:36","memberName":"selector","nodeType":"MemberAccess","src":"10365:28:36","typeDescriptions":{"typeIdentifier":"t_bytes4","typeString":"bytes4"}},"nodeType":"VariableDeclarationStatement","src":"10347:46:36"},{"AST":{"nativeSrc":"10429:1123:36","nodeType":"YulBlock","src":"10429:1123:36","statements":[{"nativeSrc":"10443:22:36","nodeType":"YulVariableDeclaration","src":"10443:22:36","value":{"arguments":[{"kind":"number","nativeSrc":"10460:4:36","nodeType":"YulLiteral","src":"10460:4:36","type":"","value":"0x40"}],"functionName":{"name":"mload","nativeSrc":"10454:5:36","nodeType":"YulIdentifier","src":"10454:5:36"},"nativeSrc":"10454:11:36","nodeType":"YulFunctionCall","src":"10454:11:36"},"variables":[{"name":"fmp","nativeSrc":"10447:3:36","nodeType":"YulTypedName","src":"10447:3:36","type":""}]},{"expression":{"arguments":[{"kind":"number","nativeSrc":"10485:4:36","nodeType":"YulLiteral","src":"10485:4:36","type":"","value":"0x00"},{"name":"selector","nativeSrc":"10491:8:36","nodeType":"YulIdentifier","src":"10491:8:36"}],"functionName":{"name":"mstore","nativeSrc":"10478:6:36","nodeType":"YulIdentifier","src":"10478:6:36"},"nativeSrc":"10478:22:36","nodeType":"YulFunctionCall","src":"10478:22:36"},"nativeSrc":"10478:22:36","nodeType":"YulExpressionStatement","src":"10478:22:36"},{"expression":{"arguments":[{"kind":"number","nativeSrc":"10520:4:36","nodeType":"YulLiteral","src":"10520:4:36","type":"","value":"0x04"},{"arguments":[{"name":"from","nativeSrc":"10530:4:36","nodeType":"YulIdentifier","src":"10530:4:36"},{"arguments":[{"kind":"number","nativeSrc":"10540:2:36","nodeType":"YulLiteral","src":"10540:2:36","type":"","value":"96"},{"arguments":[{"kind":"number","nativeSrc":"10548:1:36","nodeType":"YulLiteral","src":"10548:1:36","type":"","value":"0"}],"functionName":{"name":"not","nativeSrc":"10544:3:36","nodeType":"YulIdentifier","src":"10544:3:36"},"nativeSrc":"10544:6:36","nodeType":"YulFunctionCall","src":"10544:6:36"}],"functionName":{"name":"shr","nativeSrc":"10536:3:36","nodeType":"YulIdentifier","src":"10536:3:36"},"nativeSrc":"10536:15:36","nodeType":"YulFunctionCall","src":"10536:15:36"}],"functionName":{"name":"and","nativeSrc":"10526:3:36","nodeType":"YulIdentifier","src":"10526:3:36"},"nativeSrc":"10526:26:36","nodeType":"YulFunctionCall","src":"10526:26:36"}],"functionName":{"name":"mstore","nativeSrc":"10513:6:36","nodeType":"YulIdentifier","src":"10513:6:36"},"nativeSrc":"10513:40:36","nodeType":"YulFunctionCall","src":"10513:40:36"},"nativeSrc":"10513:40:36","nodeType":"YulExpressionStatement","src":"10513:40:36"},{"expression":{"arguments":[{"kind":"number","nativeSrc":"10573:4:36","nodeType":"YulLiteral","src":"10573:4:36","type":"","value":"0x24"},{"arguments":[{"name":"to","nativeSrc":"10583:2:36","nodeType":"YulIdentifier","src":"10583:2:36"},{"arguments":[{"kind":"number","nativeSrc":"10591:2:36","nodeType":"YulLiteral","src":"10591:2:36","type":"","value":"96"},{"arguments":[{"kind":"number","nativeSrc":"10599:1:36","nodeType":"YulLiteral","src":"10599:1:36","type":"","value":"0"}],"functionName":{"name":"not","nativeSrc":"10595:3:36","nodeType":"YulIdentifier","src":"10595:3:36"},"nativeSrc":"10595:6:36","nodeType":"YulFunctionCall","src":"10595:6:36"}],"functionName":{"name":"shr","nativeSrc":"10587:3:36","nodeType":"YulIdentifier","src":"10587:3:36"},"nativeSrc":"10587:15:36","nodeType":"YulFunctionCall","src":"10587:15:36"}],"functionName":{"name":"and","nativeSrc":"10579:3:36","nodeType":"YulIdentifier","src":"10579:3:36"},"nativeSrc":"10579:24:36","nodeType":"YulFunctionCall","src":"10579:24:36"}],"functionName":{"name":"mstore","nativeSrc":"10566:6:36","nodeType":"YulIdentifier","src":"10566:6:36"},"nativeSrc":"10566:38:36","nodeType":"YulFunctionCall","src":"10566:38:36"},"nativeSrc":"10566:38:36","nodeType":"YulExpressionStatement","src":"10566:38:36"},{"expression":{"arguments":[{"kind":"number","nativeSrc":"10624:4:36","nodeType":"YulLiteral","src":"10624:4:36","type":"","value":"0x44"},{"name":"value","nativeSrc":"10630:5:36","nodeType":"YulIdentifier","src":"10630:5:36"}],"functionName":{"name":"mstore","nativeSrc":"10617:6:36","nodeType":"YulIdentifier","src":"10617:6:36"},"nativeSrc":"10617:19:36","nodeType":"YulFunctionCall","src":"10617:19:36"},"nativeSrc":"10617:19:36","nodeType":"YulExpressionStatement","src":"10617:19:36"},{"nativeSrc":"10649:56:36","nodeType":"YulAssignment","src":"10649:56:36","value":{"arguments":[{"arguments":[],"functionName":{"name":"gas","nativeSrc":"10665:3:36","nodeType":"YulIdentifier","src":"10665:3:36"},"nativeSrc":"10665:5:36","nodeType":"YulFunctionCall","src":"10665:5:36"},{"name":"token","nativeSrc":"10672:5:36","nodeType":"YulIdentifier","src":"10672:5:36"},{"kind":"number","nativeSrc":"10679:1:36","nodeType":"YulLiteral","src":"10679:1:36","type":"","value":"0"},{"kind":"number","nativeSrc":"10682:4:36","nodeType":"YulLiteral","src":"10682:4:36","type":"","value":"0x00"},{"kind":"number","nativeSrc":"10688:4:36","nodeType":"YulLiteral","src":"10688:4:36","type":"","value":"0x64"},{"kind":"number","nativeSrc":"10694:4:36","nodeType":"YulLiteral","src":"10694:4:36","type":"","value":"0x00"},{"kind":"number","nativeSrc":"10700:4:36","nodeType":"YulLiteral","src":"10700:4:36","type":"","value":"0x20"}],"functionName":{"name":"call","nativeSrc":"10660:4:36","nodeType":"YulIdentifier","src":"10660:4:36"},"nativeSrc":"10660:45:36","nodeType":"YulFunctionCall","src":"10660:45:36"},"variableNames":[{"name":"success","nativeSrc":"10649:7:36","nodeType":"YulIdentifier","src":"10649:7:36"}]},{"body":{"nativeSrc":"10922:562:36","nodeType":"YulBlock","src":"10922:562:36","statements":[{"body":{"nativeSrc":"11057:133:36","nodeType":"YulBlock","src":"11057:133:36","statements":[{"expression":{"arguments":[{"name":"fmp","nativeSrc":"11094:3:36","nodeType":"YulIdentifier","src":"11094:3:36"},{"kind":"number","nativeSrc":"11099:4:36","nodeType":"YulLiteral","src":"11099:4:36","type":"","value":"0x00"},{"arguments":[],"functionName":{"name":"returndatasize","nativeSrc":"11105:14:36","nodeType":"YulIdentifier","src":"11105:14:36"},"nativeSrc":"11105:16:36","nodeType":"YulFunctionCall","src":"11105:16:36"}],"functionName":{"name":"returndatacopy","nativeSrc":"11079:14:36","nodeType":"YulIdentifier","src":"11079:14:36"},"nativeSrc":"11079:43:36","nodeType":"YulFunctionCall","src":"11079:43:36"},"nativeSrc":"11079:43:36","nodeType":"YulExpressionStatement","src":"11079:43:36"},{"expression":{"arguments":[{"name":"fmp","nativeSrc":"11150:3:36","nodeType":"YulIdentifier","src":"11150:3:36"},{"arguments":[],"functionName":{"name":"returndatasize","nativeSrc":"11155:14:36","nodeType":"YulIdentifier","src":"11155:14:36"},"nativeSrc":"11155:16:36","nodeType":"YulFunctionCall","src":"11155:16:36"}],"functionName":{"name":"revert","nativeSrc":"11143:6:36","nodeType":"YulIdentifier","src":"11143:6:36"},"nativeSrc":"11143:29:36","nodeType":"YulFunctionCall","src":"11143:29:36"},"nativeSrc":"11143:29:36","nodeType":"YulExpressionStatement","src":"11143:29:36"}]},"condition":{"arguments":[{"arguments":[{"name":"success","nativeSrc":"11039:7:36","nodeType":"YulIdentifier","src":"11039:7:36"}],"functionName":{"name":"iszero","nativeSrc":"11032:6:36","nodeType":"YulIdentifier","src":"11032:6:36"},"nativeSrc":"11032:15:36","nodeType":"YulFunctionCall","src":"11032:15:36"},{"name":"bubble","nativeSrc":"11049:6:36","nodeType":"YulIdentifier","src":"11049:6:36"}],"functionName":{"name":"and","nativeSrc":"11028:3:36","nodeType":"YulIdentifier","src":"11028:3:36"},"nativeSrc":"11028:28:36","nodeType":"YulFunctionCall","src":"11028:28:36"},"nativeSrc":"11025:165:36","nodeType":"YulIf","src":"11025:165:36"},{"nativeSrc":"11389:81:36","nodeType":"YulAssignment","src":"11389:81:36","value":{"arguments":[{"name":"success","nativeSrc":"11404:7:36","nodeType":"YulIdentifier","src":"11404:7:36"},{"arguments":[{"arguments":[{"arguments":[],"functionName":{"name":"returndatasize","nativeSrc":"11424:14:36","nodeType":"YulIdentifier","src":"11424:14:36"},"nativeSrc":"11424:16:36","nodeType":"YulFunctionCall","src":"11424:16:36"}],"functionName":{"name":"iszero","nativeSrc":"11417:6:36","nodeType":"YulIdentifier","src":"11417:6:36"},"nativeSrc":"11417:24:36","nodeType":"YulFunctionCall","src":"11417:24:36"},{"arguments":[{"arguments":[{"name":"token","nativeSrc":"11458:5:36","nodeType":"YulIdentifier","src":"11458:5:36"}],"functionName":{"name":"extcodesize","nativeSrc":"11446:11:36","nodeType":"YulIdentifier","src":"11446:11:36"},"nativeSrc":"11446:18:36","nodeType":"YulFunctionCall","src":"11446:18:36"},{"kind":"number","nativeSrc":"11466:1:36","nodeType":"YulLiteral","src":"11466:1:36","type":"","value":"0"}],"functionName":{"name":"gt","nativeSrc":"11443:2:36","nodeType":"YulIdentifier","src":"11443:2:36"},"nativeSrc":"11443:25:36","nodeType":"YulFunctionCall","src":"11443:25:36"}],"functionName":{"name":"and","nativeSrc":"11413:3:36","nodeType":"YulIdentifier","src":"11413:3:36"},"nativeSrc":"11413:56:36","nodeType":"YulFunctionCall","src":"11413:56:36"}],"functionName":{"name":"and","nativeSrc":"11400:3:36","nodeType":"YulIdentifier","src":"11400:3:36"},"nativeSrc":"11400:70:36","nodeType":"YulFunctionCall","src":"11400:70:36"},"variableNames":[{"name":"success","nativeSrc":"11389:7:36","nodeType":"YulIdentifier","src":"11389:7:36"}]}]},"condition":{"arguments":[{"arguments":[{"name":"success","nativeSrc":"10892:7:36","nodeType":"YulIdentifier","src":"10892:7:36"},{"arguments":[{"arguments":[{"kind":"number","nativeSrc":"10910:4:36","nodeType":"YulLiteral","src":"10910:4:36","type":"","value":"0x00"}],"functionName":{"name":"mload","nativeSrc":"10904:5:36","nodeType":"YulIdentifier","src":"10904:5:36"},"nativeSrc":"10904:11:36","nodeType":"YulFunctionCall","src":"10904:11:36"},{"kind":"number","nativeSrc":"10917:1:36","nodeType":"YulLiteral","src":"10917:1:36","type":"","value":"1"}],"functionName":{"name":"eq","nativeSrc":"10901:2:36","nodeType":"YulIdentifier","src":"10901:2:36"},"nativeSrc":"10901:18:36","nodeType":"YulFunctionCall","src":"10901:18:36"}],"functionName":{"name":"and","nativeSrc":"10888:3:36","nodeType":"YulIdentifier","src":"10888:3:36"},"nativeSrc":"10888:32:36","nodeType":"YulFunctionCall","src":"10888:32:36"}],"functionName":{"name":"iszero","nativeSrc":"10881:6:36","nodeType":"YulIdentifier","src":"10881:6:36"},"nativeSrc":"10881:40:36","nodeType":"YulFunctionCall","src":"10881:40:36"},"nativeSrc":"10878:606:36","nodeType":"YulIf","src":"10878:606:36"},{"expression":{"arguments":[{"kind":"number","nativeSrc":"11504:4:36","nodeType":"YulLiteral","src":"11504:4:36","type":"","value":"0x40"},{"name":"fmp","nativeSrc":"11510:3:36","nodeType":"YulIdentifier","src":"11510:3:36"}],"functionName":{"name":"mstore","nativeSrc":"11497:6:36","nodeType":"YulIdentifier","src":"11497:6:36"},"nativeSrc":"11497:17:36","nodeType":"YulFunctionCall","src":"11497:17:36"},"nativeSrc":"11497:17:36","nodeType":"YulExpressionStatement","src":"11497:17:36"},{"expression":{"arguments":[{"kind":"number","nativeSrc":"11534:4:36","nodeType":"YulLiteral","src":"11534:4:36","type":"","value":"0x60"},{"kind":"number","nativeSrc":"11540:1:36","nodeType":"YulLiteral","src":"11540:1:36","type":"","value":"0"}],"functionName":{"name":"mstore","nativeSrc":"11527:6:36","nodeType":"YulIdentifier","src":"11527:6:36"},"nativeSrc":"11527:15:36","nodeType":"YulFunctionCall","src":"11527:15:36"},"nativeSrc":"11527:15:36","nodeType":"YulExpressionStatement","src":"11527:15:36"}]},"evmVersion":"prague","externalReferences":[{"declaration":9829,"isOffset":false,"isSlot":false,"src":"11049:6:36","valueSize":1},{"declaration":9823,"isOffset":false,"isSlot":false,"src":"10530:4:36","valueSize":1},{"declaration":9835,"isOffset":false,"isSlot":false,"src":"10491:8:36","valueSize":1},{"declaration":9832,"isOffset":false,"isSlot":false,"src":"10649:7:36","valueSize":1},{"declaration":9832,"isOffset":false,"isSlot":false,"src":"10892:7:36","valueSize":1},{"declaration":9832,"isOffset":false,"isSlot":false,"src":"11039:7:36","valueSize":1},{"declaration":9832,"isOffset":false,"isSlot":false,"src":"11389:7:36","valueSize":1},{"declaration":9832,"isOffset":false,"isSlot":false,"src":"11404:7:36","valueSize":1},{"declaration":9825,"isOffset":false,"isSlot":false,"src":"10583:2:36","valueSize":1},{"declaration":9821,"isOffset":false,"isSlot":false,"src":"10672:5:36","valueSize":1},{"declaration":9821,"isOffset":false,"isSlot":false,"src":"11458:5:36","valueSize":1},{"declaration":9827,"isOffset":false,"isSlot":false,"src":"10630:5:36","valueSize":1}],"flags":["memory-safe"],"id":9840,"nodeType":"InlineAssembly","src":"10404:1148:36"}]},"documentation":{"id":9818,"nodeType":"StructuredDocumentation","src":"9623:537:36","text":" @dev Imitates a Solidity `token.transferFrom(from, to, value)` call, relaxing the requirement on the return\n value: the return value is optional (but if data is returned, it must not be false).\n @param token The token targeted by the call.\n @param from The sender of the tokens\n @param to The recipient of the tokens\n @param value The amount of token to transfer\n @param bubble Behavior switch if the transfer call reverts: bubble the revert reason or return a false boolean."},"id":9842,"implemented":true,"kind":"function","modifiers":[],"name":"_safeTransferFrom","nameLocation":"10174:17:36","nodeType":"FunctionDefinition","parameters":{"id":9830,"nodeType":"ParameterList","parameters":[{"constant":false,"id":9821,"mutability":"mutable","name":"token","nameLocation":"10208:5:36","nodeType":"VariableDeclaration","scope":9842,"src":"10201:12:36","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_contract$_IERC20_$8679","typeString":"contract IERC20"},"typeName":{"id":9820,"nodeType":"UserDefinedTypeName","pathNode":{"id":9819,"name":"IERC20","nameLocations":["10201:6:36"],"nodeType":"IdentifierPath","referencedDeclaration":8679,"src":"10201:6:36"},"referencedDeclaration":8679,"src":"10201:6:36","typeDescriptions":{"typeIdentifier":"t_contract$_IERC20_$8679","typeString":"contract IERC20"}},"visibility":"internal"},{"constant":false,"id":9823,"mutability":"mutable","name":"from","nameLocation":"10231:4:36","nodeType":"VariableDeclaration","scope":9842,"src":"10223:12:36","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":9822,"name":"address","nodeType":"ElementaryTypeName","src":"10223:7:36","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":9825,"mutability":"mutable","name":"to","nameLocation":"10253:2:36","nodeType":"VariableDeclaration","scope":9842,"src":"10245:10:36","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":9824,"name":"address","nodeType":"ElementaryTypeName","src":"10245:7:36","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":9827,"mutability":"mutable","name":"value","nameLocation":"10273:5:36","nodeType":"VariableDeclaration","scope":9842,"src":"10265:13:36","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":9826,"name":"uint256","nodeType":"ElementaryTypeName","src":"10265:7:36","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":9829,"mutability":"mutable","name":"bubble","nameLocation":"10293:6:36","nodeType":"VariableDeclaration","scope":9842,"src":"10288:11:36","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":9828,"name":"bool","nodeType":"ElementaryTypeName","src":"10288:4:36","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"}],"src":"10191:114:36"},"returnParameters":{"id":9833,"nodeType":"ParameterList","parameters":[{"constant":false,"id":9832,"mutability":"mutable","name":"success","nameLocation":"10328:7:36","nodeType":"VariableDeclaration","scope":9842,"src":"10323:12:36","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":9831,"name":"bool","nodeType":"ElementaryTypeName","src":"10323:4:36","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"}],"src":"10322:14:36"},"scope":9866,"src":"10165:1393:36","stateMutability":"nonpayable","virtual":false,"visibility":"private"},{"body":{"id":9864,"nodeType":"Block","src":"12171:1140:36","statements":[{"assignments":[9858],"declarations":[{"constant":false,"id":9858,"mutability":"mutable","name":"selector","nameLocation":"12188:8:36","nodeType":"VariableDeclaration","scope":9864,"src":"12181:15:36","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes4","typeString":"bytes4"},"typeName":{"id":9857,"name":"bytes4","nodeType":"ElementaryTypeName","src":"12181:6:36","typeDescriptions":{"typeIdentifier":"t_bytes4","typeString":"bytes4"}},"visibility":"internal"}],"id":9862,"initialValue":{"expression":{"expression":{"id":9859,"name":"IERC20","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8679,"src":"12199:6:36","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_IERC20_$8679_$","typeString":"type(contract IERC20)"}},"id":9860,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberLocation":"12206:7:36","memberName":"approve","nodeType":"MemberAccess","referencedDeclaration":8666,"src":"12199:14:36","typeDescriptions":{"typeIdentifier":"t_function_declaration_nonpayable$_t_address_$_t_uint256_$returns$_t_bool_$","typeString":"function IERC20.approve(address,uint256) returns (bool)"}},"id":9861,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberLocation":"12214:8:36","memberName":"selector","nodeType":"MemberAccess","src":"12199:23:36","typeDescriptions":{"typeIdentifier":"t_bytes4","typeString":"bytes4"}},"nodeType":"VariableDeclarationStatement","src":"12181:41:36"},{"AST":{"nativeSrc":"12258:1047:36","nodeType":"YulBlock","src":"12258:1047:36","statements":[{"nativeSrc":"12272:22:36","nodeType":"YulVariableDeclaration","src":"12272:22:36","value":{"arguments":[{"kind":"number","nativeSrc":"12289:4:36","nodeType":"YulLiteral","src":"12289:4:36","type":"","value":"0x40"}],"functionName":{"name":"mload","nativeSrc":"12283:5:36","nodeType":"YulIdentifier","src":"12283:5:36"},"nativeSrc":"12283:11:36","nodeType":"YulFunctionCall","src":"12283:11:36"},"variables":[{"name":"fmp","nativeSrc":"12276:3:36","nodeType":"YulTypedName","src":"12276:3:36","type":""}]},{"expression":{"arguments":[{"kind":"number","nativeSrc":"12314:4:36","nodeType":"YulLiteral","src":"12314:4:36","type":"","value":"0x00"},{"name":"selector","nativeSrc":"12320:8:36","nodeType":"YulIdentifier","src":"12320:8:36"}],"functionName":{"name":"mstore","nativeSrc":"12307:6:36","nodeType":"YulIdentifier","src":"12307:6:36"},"nativeSrc":"12307:22:36","nodeType":"YulFunctionCall","src":"12307:22:36"},"nativeSrc":"12307:22:36","nodeType":"YulExpressionStatement","src":"12307:22:36"},{"expression":{"arguments":[{"kind":"number","nativeSrc":"12349:4:36","nodeType":"YulLiteral","src":"12349:4:36","type":"","value":"0x04"},{"arguments":[{"name":"spender","nativeSrc":"12359:7:36","nodeType":"YulIdentifier","src":"12359:7:36"},{"arguments":[{"kind":"number","nativeSrc":"12372:2:36","nodeType":"YulLiteral","src":"12372:2:36","type":"","value":"96"},{"arguments":[{"kind":"number","nativeSrc":"12380:1:36","nodeType":"YulLiteral","src":"12380:1:36","type":"","value":"0"}],"functionName":{"name":"not","nativeSrc":"12376:3:36","nodeType":"YulIdentifier","src":"12376:3:36"},"nativeSrc":"12376:6:36","nodeType":"YulFunctionCall","src":"12376:6:36"}],"functionName":{"name":"shr","nativeSrc":"12368:3:36","nodeType":"YulIdentifier","src":"12368:3:36"},"nativeSrc":"12368:15:36","nodeType":"YulFunctionCall","src":"12368:15:36"}],"functionName":{"name":"and","nativeSrc":"12355:3:36","nodeType":"YulIdentifier","src":"12355:3:36"},"nativeSrc":"12355:29:36","nodeType":"YulFunctionCall","src":"12355:29:36"}],"functionName":{"name":"mstore","nativeSrc":"12342:6:36","nodeType":"YulIdentifier","src":"12342:6:36"},"nativeSrc":"12342:43:36","nodeType":"YulFunctionCall","src":"12342:43:36"},"nativeSrc":"12342:43:36","nodeType":"YulExpressionStatement","src":"12342:43:36"},{"expression":{"arguments":[{"kind":"number","nativeSrc":"12405:4:36","nodeType":"YulLiteral","src":"12405:4:36","type":"","value":"0x24"},{"name":"value","nativeSrc":"12411:5:36","nodeType":"YulIdentifier","src":"12411:5:36"}],"functionName":{"name":"mstore","nativeSrc":"12398:6:36","nodeType":"YulIdentifier","src":"12398:6:36"},"nativeSrc":"12398:19:36","nodeType":"YulFunctionCall","src":"12398:19:36"},"nativeSrc":"12398:19:36","nodeType":"YulExpressionStatement","src":"12398:19:36"},{"nativeSrc":"12430:56:36","nodeType":"YulAssignment","src":"12430:56:36","value":{"arguments":[{"arguments":[],"functionName":{"name":"gas","nativeSrc":"12446:3:36","nodeType":"YulIdentifier","src":"12446:3:36"},"nativeSrc":"12446:5:36","nodeType":"YulFunctionCall","src":"12446:5:36"},{"name":"token","nativeSrc":"12453:5:36","nodeType":"YulIdentifier","src":"12453:5:36"},{"kind":"number","nativeSrc":"12460:1:36","nodeType":"YulLiteral","src":"12460:1:36","type":"","value":"0"},{"kind":"number","nativeSrc":"12463:4:36","nodeType":"YulLiteral","src":"12463:4:36","type":"","value":"0x00"},{"kind":"number","nativeSrc":"12469:4:36","nodeType":"YulLiteral","src":"12469:4:36","type":"","value":"0x44"},{"kind":"number","nativeSrc":"12475:4:36","nodeType":"YulLiteral","src":"12475:4:36","type":"","value":"0x00"},{"kind":"number","nativeSrc":"12481:4:36","nodeType":"YulLiteral","src":"12481:4:36","type":"","value":"0x20"}],"functionName":{"name":"call","nativeSrc":"12441:4:36","nodeType":"YulIdentifier","src":"12441:4:36"},"nativeSrc":"12441:45:36","nodeType":"YulFunctionCall","src":"12441:45:36"},"variableNames":[{"name":"success","nativeSrc":"12430:7:36","nodeType":"YulIdentifier","src":"12430:7:36"}]},{"body":{"nativeSrc":"12703:562:36","nodeType":"YulBlock","src":"12703:562:36","statements":[{"body":{"nativeSrc":"12838:133:36","nodeType":"YulBlock","src":"12838:133:36","statements":[{"expression":{"arguments":[{"name":"fmp","nativeSrc":"12875:3:36","nodeType":"YulIdentifier","src":"12875:3:36"},{"kind":"number","nativeSrc":"12880:4:36","nodeType":"YulLiteral","src":"12880:4:36","type":"","value":"0x00"},{"arguments":[],"functionName":{"name":"returndatasize","nativeSrc":"12886:14:36","nodeType":"YulIdentifier","src":"12886:14:36"},"nativeSrc":"12886:16:36","nodeType":"YulFunctionCall","src":"12886:16:36"}],"functionName":{"name":"returndatacopy","nativeSrc":"12860:14:36","nodeType":"YulIdentifier","src":"12860:14:36"},"nativeSrc":"12860:43:36","nodeType":"YulFunctionCall","src":"12860:43:36"},"nativeSrc":"12860:43:36","nodeType":"YulExpressionStatement","src":"12860:43:36"},{"expression":{"arguments":[{"name":"fmp","nativeSrc":"12931:3:36","nodeType":"YulIdentifier","src":"12931:3:36"},{"arguments":[],"functionName":{"name":"returndatasize","nativeSrc":"12936:14:36","nodeType":"YulIdentifier","src":"12936:14:36"},"nativeSrc":"12936:16:36","nodeType":"YulFunctionCall","src":"12936:16:36"}],"functionName":{"name":"revert","nativeSrc":"12924:6:36","nodeType":"YulIdentifier","src":"12924:6:36"},"nativeSrc":"12924:29:36","nodeType":"YulFunctionCall","src":"12924:29:36"},"nativeSrc":"12924:29:36","nodeType":"YulExpressionStatement","src":"12924:29:36"}]},"condition":{"arguments":[{"arguments":[{"name":"success","nativeSrc":"12820:7:36","nodeType":"YulIdentifier","src":"12820:7:36"}],"functionName":{"name":"iszero","nativeSrc":"12813:6:36","nodeType":"YulIdentifier","src":"12813:6:36"},"nativeSrc":"12813:15:36","nodeType":"YulFunctionCall","src":"12813:15:36"},{"name":"bubble","nativeSrc":"12830:6:36","nodeType":"YulIdentifier","src":"12830:6:36"}],"functionName":{"name":"and","nativeSrc":"12809:3:36","nodeType":"YulIdentifier","src":"12809:3:36"},"nativeSrc":"12809:28:36","nodeType":"YulFunctionCall","src":"12809:28:36"},"nativeSrc":"12806:165:36","nodeType":"YulIf","src":"12806:165:36"},{"nativeSrc":"13170:81:36","nodeType":"YulAssignment","src":"13170:81:36","value":{"arguments":[{"name":"success","nativeSrc":"13185:7:36","nodeType":"YulIdentifier","src":"13185:7:36"},{"arguments":[{"arguments":[{"arguments":[],"functionName":{"name":"returndatasize","nativeSrc":"13205:14:36","nodeType":"YulIdentifier","src":"13205:14:36"},"nativeSrc":"13205:16:36","nodeType":"YulFunctionCall","src":"13205:16:36"}],"functionName":{"name":"iszero","nativeSrc":"13198:6:36","nodeType":"YulIdentifier","src":"13198:6:36"},"nativeSrc":"13198:24:36","nodeType":"YulFunctionCall","src":"13198:24:36"},{"arguments":[{"arguments":[{"name":"token","nativeSrc":"13239:5:36","nodeType":"YulIdentifier","src":"13239:5:36"}],"functionName":{"name":"extcodesize","nativeSrc":"13227:11:36","nodeType":"YulIdentifier","src":"13227:11:36"},"nativeSrc":"13227:18:36","nodeType":"YulFunctionCall","src":"13227:18:36"},{"kind":"number","nativeSrc":"13247:1:36","nodeType":"YulLiteral","src":"13247:1:36","type":"","value":"0"}],"functionName":{"name":"gt","nativeSrc":"13224:2:36","nodeType":"YulIdentifier","src":"13224:2:36"},"nativeSrc":"13224:25:36","nodeType":"YulFunctionCall","src":"13224:25:36"}],"functionName":{"name":"and","nativeSrc":"13194:3:36","nodeType":"YulIdentifier","src":"13194:3:36"},"nativeSrc":"13194:56:36","nodeType":"YulFunctionCall","src":"13194:56:36"}],"functionName":{"name":"and","nativeSrc":"13181:3:36","nodeType":"YulIdentifier","src":"13181:3:36"},"nativeSrc":"13181:70:36","nodeType":"YulFunctionCall","src":"13181:70:36"},"variableNames":[{"name":"success","nativeSrc":"13170:7:36","nodeType":"YulIdentifier","src":"13170:7:36"}]}]},"condition":{"arguments":[{"arguments":[{"name":"success","nativeSrc":"12673:7:36","nodeType":"YulIdentifier","src":"12673:7:36"},{"arguments":[{"arguments":[{"kind":"number","nativeSrc":"12691:4:36","nodeType":"YulLiteral","src":"12691:4:36","type":"","value":"0x00"}],"functionName":{"name":"mload","nativeSrc":"12685:5:36","nodeType":"YulIdentifier","src":"12685:5:36"},"nativeSrc":"12685:11:36","nodeType":"YulFunctionCall","src":"12685:11:36"},{"kind":"number","nativeSrc":"12698:1:36","nodeType":"YulLiteral","src":"12698:1:36","type":"","value":"1"}],"functionName":{"name":"eq","nativeSrc":"12682:2:36","nodeType":"YulIdentifier","src":"12682:2:36"},"nativeSrc":"12682:18:36","nodeType":"YulFunctionCall","src":"12682:18:36"}],"functionName":{"name":"and","nativeSrc":"12669:3:36","nodeType":"YulIdentifier","src":"12669:3:36"},"nativeSrc":"12669:32:36","nodeType":"YulFunctionCall","src":"12669:32:36"}],"functionName":{"name":"iszero","nativeSrc":"12662:6:36","nodeType":"YulIdentifier","src":"12662:6:36"},"nativeSrc":"12662:40:36","nodeType":"YulFunctionCall","src":"12662:40:36"},"nativeSrc":"12659:606:36","nodeType":"YulIf","src":"12659:606:36"},{"expression":{"arguments":[{"kind":"number","nativeSrc":"13285:4:36","nodeType":"YulLiteral","src":"13285:4:36","type":"","value":"0x40"},{"name":"fmp","nativeSrc":"13291:3:36","nodeType":"YulIdentifier","src":"13291:3:36"}],"functionName":{"name":"mstore","nativeSrc":"13278:6:36","nodeType":"YulIdentifier","src":"13278:6:36"},"nativeSrc":"13278:17:36","nodeType":"YulFunctionCall","src":"13278:17:36"},"nativeSrc":"13278:17:36","nodeType":"YulExpressionStatement","src":"13278:17:36"}]},"evmVersion":"prague","externalReferences":[{"declaration":9852,"isOffset":false,"isSlot":false,"src":"12830:6:36","valueSize":1},{"declaration":9858,"isOffset":false,"isSlot":false,"src":"12320:8:36","valueSize":1},{"declaration":9848,"isOffset":false,"isSlot":false,"src":"12359:7:36","valueSize":1},{"declaration":9855,"isOffset":false,"isSlot":false,"src":"12430:7:36","valueSize":1},{"declaration":9855,"isOffset":false,"isSlot":false,"src":"12673:7:36","valueSize":1},{"declaration":9855,"isOffset":false,"isSlot":false,"src":"12820:7:36","valueSize":1},{"declaration":9855,"isOffset":false,"isSlot":false,"src":"13170:7:36","valueSize":1},{"declaration":9855,"isOffset":false,"isSlot":false,"src":"13185:7:36","valueSize":1},{"declaration":9846,"isOffset":false,"isSlot":false,"src":"12453:5:36","valueSize":1},{"declaration":9846,"isOffset":false,"isSlot":false,"src":"13239:5:36","valueSize":1},{"declaration":9850,"isOffset":false,"isSlot":false,"src":"12411:5:36","valueSize":1}],"flags":["memory-safe"],"id":9863,"nodeType":"InlineAssembly","src":"12233:1072:36"}]},"documentation":{"id":9843,"nodeType":"StructuredDocumentation","src":"11564:490:36","text":" @dev Imitates a Solidity `token.approve(spender, value)` call, relaxing the requirement on the return value:\n the return value is optional (but if data is returned, it must not be false).\n @param token The token targeted by the call.\n @param spender The spender of the tokens\n @param value The amount of token to transfer\n @param bubble Behavior switch if the transfer call reverts: bubble the revert reason or return a false boolean."},"id":9865,"implemented":true,"kind":"function","modifiers":[],"name":"_safeApprove","nameLocation":"12068:12:36","nodeType":"FunctionDefinition","parameters":{"id":9853,"nodeType":"ParameterList","parameters":[{"constant":false,"id":9846,"mutability":"mutable","name":"token","nameLocation":"12088:5:36","nodeType":"VariableDeclaration","scope":9865,"src":"12081:12:36","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_contract$_IERC20_$8679","typeString":"contract IERC20"},"typeName":{"id":9845,"nodeType":"UserDefinedTypeName","pathNode":{"id":9844,"name":"IERC20","nameLocations":["12081:6:36"],"nodeType":"IdentifierPath","referencedDeclaration":8679,"src":"12081:6:36"},"referencedDeclaration":8679,"src":"12081:6:36","typeDescriptions":{"typeIdentifier":"t_contract$_IERC20_$8679","typeString":"contract IERC20"}},"visibility":"internal"},{"constant":false,"id":9848,"mutability":"mutable","name":"spender","nameLocation":"12103:7:36","nodeType":"VariableDeclaration","scope":9865,"src":"12095:15:36","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":9847,"name":"address","nodeType":"ElementaryTypeName","src":"12095:7:36","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":9850,"mutability":"mutable","name":"value","nameLocation":"12120:5:36","nodeType":"VariableDeclaration","scope":9865,"src":"12112:13:36","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":9849,"name":"uint256","nodeType":"ElementaryTypeName","src":"12112:7:36","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":9852,"mutability":"mutable","name":"bubble","nameLocation":"12132:6:36","nodeType":"VariableDeclaration","scope":9865,"src":"12127:11:36","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":9851,"name":"bool","nodeType":"ElementaryTypeName","src":"12127:4:36","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"}],"src":"12080:59:36"},"returnParameters":{"id":9856,"nodeType":"ParameterList","parameters":[{"constant":false,"id":9855,"mutability":"mutable","name":"success","nameLocation":"12162:7:36","nodeType":"VariableDeclaration","scope":9865,"src":"12157:12:36","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":9854,"name":"bool","nodeType":"ElementaryTypeName","src":"12157:4:36","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"}],"src":"12156:14:36"},"scope":9866,"src":"12059:1252:36","stateMutability":"nonpayable","virtual":false,"visibility":"private"}],"scope":9867,"src":"698:12615:36","usedErrors":[9423,9432],"usedEvents":[]}],"src":"115:13199:36"},"id":36},"@openzeppelin/contracts/utils/Address.sol":{"ast":{"absolutePath":"@openzeppelin/contracts/utils/Address.sol","exportedSymbols":{"Address":[10256],"Errors":[10308],"LowLevelCall":[10467]},"id":10257,"license":"MIT","nodeType":"SourceUnit","nodes":[{"id":9868,"literals":["solidity","^","0.8",".20"],"nodeType":"PragmaDirective","src":"101:24:37"},{"absolutePath":"@openzeppelin/contracts/utils/Errors.sol","file":"./Errors.sol","id":9870,"nameLocation":"-1:-1:-1","nodeType":"ImportDirective","scope":10257,"sourceUnit":10309,"src":"127:36:37","symbolAliases":[{"foreign":{"id":9869,"name":"Errors","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10308,"src":"135:6:37","typeDescriptions":{}},"nameLocation":"-1:-1:-1"}],"unitAlias":""},{"absolutePath":"@openzeppelin/contracts/utils/LowLevelCall.sol","file":"./LowLevelCall.sol","id":9872,"nameLocation":"-1:-1:-1","nodeType":"ImportDirective","scope":10257,"sourceUnit":10468,"src":"164:48:37","symbolAliases":[{"foreign":{"id":9871,"name":"LowLevelCall","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10467,"src":"172:12:37","typeDescriptions":{}},"nameLocation":"-1:-1:-1"}],"unitAlias":""},{"abstract":false,"baseContracts":[],"canonicalName":"Address","contractDependencies":[],"contractKind":"library","documentation":{"id":9873,"nodeType":"StructuredDocumentation","src":"214:67:37","text":" @dev Collection of functions related to the address type"},"fullyImplemented":true,"id":10256,"linearizedBaseContracts":[10256],"name":"Address","nameLocation":"290:7:37","nodeType":"ContractDefinition","nodes":[{"documentation":{"id":9874,"nodeType":"StructuredDocumentation","src":"304:75:37","text":" @dev There's no code at `target` (it is not a contract)."},"errorSelector":"9996b315","id":9878,"name":"AddressEmptyCode","nameLocation":"390:16:37","nodeType":"ErrorDefinition","parameters":{"id":9877,"nodeType":"ParameterList","parameters":[{"constant":false,"id":9876,"mutability":"mutable","name":"target","nameLocation":"415:6:37","nodeType":"VariableDeclaration","scope":9878,"src":"407:14:37","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":9875,"name":"address","nodeType":"ElementaryTypeName","src":"407:7:37","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"406:16:37"},"src":"384:39:37"},{"body":{"id":9933,"nodeType":"Block","src":"1410:435:37","statements":[{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":9892,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"expression":{"arguments":[{"id":9888,"name":"this","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-28,"src":"1432:4:37","typeDescriptions":{"typeIdentifier":"t_contract$_Address_$10256","typeString":"library Address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_contract$_Address_$10256","typeString":"library Address"}],"id":9887,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"1424:7:37","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":9886,"name":"address","nodeType":"ElementaryTypeName","src":"1424:7:37","typeDescriptions":{}}},"id":9889,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"1424:13:37","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"id":9890,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"1438:7:37","memberName":"balance","nodeType":"MemberAccess","src":"1424:21:37","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"<","rightExpression":{"id":9891,"name":"amount","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9883,"src":"1448:6:37","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"1424:30:37","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":9905,"nodeType":"IfStatement","src":"1420:125:37","trueBody":{"id":9904,"nodeType":"Block","src":"1456:89:37","statements":[{"errorCall":{"arguments":[{"expression":{"arguments":[{"id":9898,"name":"this","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-28,"src":"1512:4:37","typeDescriptions":{"typeIdentifier":"t_contract$_Address_$10256","typeString":"library Address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_contract$_Address_$10256","typeString":"library Address"}],"id":9897,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"1504:7:37","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":9896,"name":"address","nodeType":"ElementaryTypeName","src":"1504:7:37","typeDescriptions":{}}},"id":9899,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"1504:13:37","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"id":9900,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"1518:7:37","memberName":"balance","nodeType":"MemberAccess","src":"1504:21:37","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"id":9901,"name":"amount","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9883,"src":"1527:6:37","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"expression":{"id":9893,"name":"Errors","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10308,"src":"1477:6:37","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_Errors_$10308_$","typeString":"type(library Errors)"}},"id":9895,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"1484:19:37","memberName":"InsufficientBalance","nodeType":"MemberAccess","referencedDeclaration":10296,"src":"1477:26:37","typeDescriptions":{"typeIdentifier":"t_function_error_pure$_t_uint256_$_t_uint256_$returns$_t_error_$","typeString":"function (uint256,uint256) pure returns (error)"}},"id":9902,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"1477:57:37","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_error","typeString":"error"}},"id":9903,"nodeType":"RevertStatement","src":"1470:64:37"}]}},{"condition":{"arguments":[{"id":9908,"name":"recipient","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9881,"src":"1584:9:37","typeDescriptions":{"typeIdentifier":"t_address_payable","typeString":"address payable"}},{"id":9909,"name":"amount","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9883,"src":"1595:6:37","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"hexValue":"","id":9910,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"1603:2:37","typeDescriptions":{"typeIdentifier":"t_stringliteral_c5d2460186f7233c927e7db2dcc703c0e500b653ca82273b7bfad8045d85a470","typeString":"literal_string \"\""},"value":""}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address_payable","typeString":"address payable"},{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_stringliteral_c5d2460186f7233c927e7db2dcc703c0e500b653ca82273b7bfad8045d85a470","typeString":"literal_string \"\""}],"expression":{"id":9906,"name":"LowLevelCall","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10467,"src":"1558:12:37","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_LowLevelCall_$10467_$","typeString":"type(library LowLevelCall)"}},"id":9907,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"1571:12:37","memberName":"callNoReturn","nodeType":"MemberAccess","referencedDeclaration":10342,"src":"1558:25:37","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_address_$_t_uint256_$_t_bytes_memory_ptr_$returns$_t_bool_$","typeString":"function (address,uint256,bytes memory) returns (bool)"}},"id":9911,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"1558:48:37","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"falseBody":{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":9918,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"arguments":[],"expression":{"argumentTypes":[],"expression":{"id":9914,"name":"LowLevelCall","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10467,"src":"1695:12:37","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_LowLevelCall_$10467_$","typeString":"type(library LowLevelCall)"}},"id":9915,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"1708:14:37","memberName":"returnDataSize","nodeType":"MemberAccess","referencedDeclaration":10445,"src":"1695:27:37","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$__$returns$_t_uint256_$","typeString":"function () pure returns (uint256)"}},"id":9916,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"1695:29:37","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">","rightExpression":{"hexValue":"30","id":9917,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"1727:1:37","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"1695:33:37","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"falseBody":{"id":9930,"nodeType":"Block","src":"1788:51:37","statements":[{"errorCall":{"arguments":[],"expression":{"argumentTypes":[],"expression":{"id":9925,"name":"Errors","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10308,"src":"1809:6:37","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_Errors_$10308_$","typeString":"type(library Errors)"}},"id":9927,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"1816:10:37","memberName":"FailedCall","nodeType":"MemberAccess","referencedDeclaration":10299,"src":"1809:17:37","typeDescriptions":{"typeIdentifier":"t_function_error_pure$__$returns$_t_error_$","typeString":"function () pure returns (error)"}},"id":9928,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"1809:19:37","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_error","typeString":"error"}},"id":9929,"nodeType":"RevertStatement","src":"1802:26:37"}]},"id":9931,"nodeType":"IfStatement","src":"1691:148:37","trueBody":{"id":9924,"nodeType":"Block","src":"1730:52:37","statements":[{"expression":{"arguments":[],"expression":{"argumentTypes":[],"expression":{"id":9919,"name":"LowLevelCall","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10467,"src":"1744:12:37","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_LowLevelCall_$10467_$","typeString":"type(library LowLevelCall)"}},"id":9921,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"1757:12:37","memberName":"bubbleRevert","nodeType":"MemberAccess","referencedDeclaration":10459,"src":"1744:25:37","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$__$returns$__$","typeString":"function () pure"}},"id":9922,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"1744:27:37","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":9923,"nodeType":"ExpressionStatement","src":"1744:27:37"}]}},"id":9932,"nodeType":"IfStatement","src":"1554:285:37","trueBody":{"id":9913,"nodeType":"Block","src":"1608:77:37","statements":[{"functionReturnParameters":9885,"id":9912,"nodeType":"Return","src":"1668:7:37"}]}}]},"documentation":{"id":9879,"nodeType":"StructuredDocumentation","src":"429:905:37","text":" @dev Replacement for Solidity's `transfer`: sends `amount` wei to\n `recipient`, forwarding all available gas and reverting on errors.\n https://eips.ethereum.org/EIPS/eip-1884[EIP1884] increases the gas cost\n of certain opcodes, possibly making contracts go over the 2300 gas limit\n imposed by `transfer`, making them unable to receive funds via\n `transfer`. {sendValue} removes this limitation.\n https://consensys.net/diligence/blog/2019/09/stop-using-soliditys-transfer-now/[Learn more].\n IMPORTANT: because control is transferred to `recipient`, care must be\n taken to not create reentrancy vulnerabilities. Consider using\n {ReentrancyGuard} or the\n https://solidity.readthedocs.io/en/v0.8.20/security-considerations.html#use-the-checks-effects-interactions-pattern[checks-effects-interactions pattern]."},"id":9934,"implemented":true,"kind":"function","modifiers":[],"name":"sendValue","nameLocation":"1348:9:37","nodeType":"FunctionDefinition","parameters":{"id":9884,"nodeType":"ParameterList","parameters":[{"constant":false,"id":9881,"mutability":"mutable","name":"recipient","nameLocation":"1374:9:37","nodeType":"VariableDeclaration","scope":9934,"src":"1358:25:37","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address_payable","typeString":"address payable"},"typeName":{"id":9880,"name":"address","nodeType":"ElementaryTypeName","src":"1358:15:37","stateMutability":"payable","typeDescriptions":{"typeIdentifier":"t_address_payable","typeString":"address payable"}},"visibility":"internal"},{"constant":false,"id":9883,"mutability":"mutable","name":"amount","nameLocation":"1393:6:37","nodeType":"VariableDeclaration","scope":9934,"src":"1385:14:37","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":9882,"name":"uint256","nodeType":"ElementaryTypeName","src":"1385:7:37","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"1357:43:37"},"returnParameters":{"id":9885,"nodeType":"ParameterList","parameters":[],"src":"1410:0:37"},"scope":10256,"src":"1339:506:37","stateMutability":"nonpayable","virtual":false,"visibility":"internal"},{"body":{"id":9950,"nodeType":"Block","src":"2779:62:37","statements":[{"expression":{"arguments":[{"id":9945,"name":"target","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9937,"src":"2818:6:37","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":9946,"name":"data","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9939,"src":"2826:4:37","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}},{"hexValue":"30","id":9947,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"2832:1:37","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"},{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"}],"id":9944,"name":"functionCallWithValue","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10038,"src":"2796:21:37","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_address_$_t_bytes_memory_ptr_$_t_uint256_$returns$_t_bytes_memory_ptr_$","typeString":"function (address,bytes memory,uint256) returns (bytes memory)"}},"id":9948,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"2796:38:37","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}},"functionReturnParameters":9943,"id":9949,"nodeType":"Return","src":"2789:45:37"}]},"documentation":{"id":9935,"nodeType":"StructuredDocumentation","src":"1851:834:37","text":" @dev Performs a Solidity function call using a low level `call`. A\n plain `call` is an unsafe replacement for a function call: use this\n function instead.\n If `target` reverts with a revert reason or custom error, it is bubbled\n up by this function (like regular Solidity function calls). However, if\n the call reverted with no returned reason, this function reverts with a\n {Errors.FailedCall} error.\n Returns the raw returned data. To convert to the expected return value,\n use https://solidity.readthedocs.io/en/latest/units-and-global-variables.html?highlight=abi.decode#abi-encoding-and-decoding-functions[`abi.decode`].\n Requirements:\n - `target` must be a contract.\n - calling `target` with `data` must not revert."},"id":9951,"implemented":true,"kind":"function","modifiers":[],"name":"functionCall","nameLocation":"2699:12:37","nodeType":"FunctionDefinition","parameters":{"id":9940,"nodeType":"ParameterList","parameters":[{"constant":false,"id":9937,"mutability":"mutable","name":"target","nameLocation":"2720:6:37","nodeType":"VariableDeclaration","scope":9951,"src":"2712:14:37","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":9936,"name":"address","nodeType":"ElementaryTypeName","src":"2712:7:37","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":9939,"mutability":"mutable","name":"data","nameLocation":"2741:4:37","nodeType":"VariableDeclaration","scope":9951,"src":"2728:17:37","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes"},"typeName":{"id":9938,"name":"bytes","nodeType":"ElementaryTypeName","src":"2728:5:37","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"}],"src":"2711:35:37"},"returnParameters":{"id":9943,"nodeType":"ParameterList","parameters":[{"constant":false,"id":9942,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":9951,"src":"2765:12:37","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes"},"typeName":{"id":9941,"name":"bytes","nodeType":"ElementaryTypeName","src":"2765:5:37","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"}],"src":"2764:14:37"},"scope":10256,"src":"2690:151:37","stateMutability":"nonpayable","virtual":false,"visibility":"internal"},{"body":{"id":10037,"nodeType":"Block","src":"3278:583:37","statements":[{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":9969,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"expression":{"arguments":[{"id":9965,"name":"this","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-28,"src":"3300:4:37","typeDescriptions":{"typeIdentifier":"t_contract$_Address_$10256","typeString":"library Address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_contract$_Address_$10256","typeString":"library Address"}],"id":9964,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"3292:7:37","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":9963,"name":"address","nodeType":"ElementaryTypeName","src":"3292:7:37","typeDescriptions":{}}},"id":9966,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"3292:13:37","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"id":9967,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"3306:7:37","memberName":"balance","nodeType":"MemberAccess","src":"3292:21:37","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"<","rightExpression":{"id":9968,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9958,"src":"3316:5:37","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"3292:29:37","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":9982,"nodeType":"IfStatement","src":"3288:123:37","trueBody":{"id":9981,"nodeType":"Block","src":"3323:88:37","statements":[{"errorCall":{"arguments":[{"expression":{"arguments":[{"id":9975,"name":"this","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-28,"src":"3379:4:37","typeDescriptions":{"typeIdentifier":"t_contract$_Address_$10256","typeString":"library Address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_contract$_Address_$10256","typeString":"library Address"}],"id":9974,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"3371:7:37","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":9973,"name":"address","nodeType":"ElementaryTypeName","src":"3371:7:37","typeDescriptions":{}}},"id":9976,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"3371:13:37","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"id":9977,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"3385:7:37","memberName":"balance","nodeType":"MemberAccess","src":"3371:21:37","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"id":9978,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9958,"src":"3394:5:37","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"expression":{"id":9970,"name":"Errors","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10308,"src":"3344:6:37","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_Errors_$10308_$","typeString":"type(library Errors)"}},"id":9972,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"3351:19:37","memberName":"InsufficientBalance","nodeType":"MemberAccess","referencedDeclaration":10296,"src":"3344:26:37","typeDescriptions":{"typeIdentifier":"t_function_error_pure$_t_uint256_$_t_uint256_$returns$_t_error_$","typeString":"function (uint256,uint256) pure returns (error)"}},"id":9979,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"3344:56:37","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_error","typeString":"error"}},"id":9980,"nodeType":"RevertStatement","src":"3337:63:37"}]}},{"assignments":[9984],"declarations":[{"constant":false,"id":9984,"mutability":"mutable","name":"success","nameLocation":"3425:7:37","nodeType":"VariableDeclaration","scope":10037,"src":"3420:12:37","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":9983,"name":"bool","nodeType":"ElementaryTypeName","src":"3420:4:37","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"}],"id":9991,"initialValue":{"arguments":[{"id":9987,"name":"target","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9954,"src":"3461:6:37","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":9988,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9958,"src":"3469:5:37","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"id":9989,"name":"data","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9956,"src":"3476:4:37","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}],"expression":{"id":9985,"name":"LowLevelCall","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10467,"src":"3435:12:37","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_LowLevelCall_$10467_$","typeString":"type(library LowLevelCall)"}},"id":9986,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"3448:12:37","memberName":"callNoReturn","nodeType":"MemberAccess","referencedDeclaration":10342,"src":"3435:25:37","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_address_$_t_uint256_$_t_bytes_memory_ptr_$returns$_t_bool_$","typeString":"function (address,uint256,bytes memory) returns (bool)"}},"id":9990,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"3435:46:37","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"nodeType":"VariableDeclarationStatement","src":"3420:61:37"},{"condition":{"commonType":{"typeIdentifier":"t_bool","typeString":"bool"},"id":10005,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":9992,"name":"success","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9984,"src":"3495:7:37","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"nodeType":"BinaryOperation","operator":"&&","rightExpression":{"components":[{"commonType":{"typeIdentifier":"t_bool","typeString":"bool"},"id":10003,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":9997,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"arguments":[],"expression":{"argumentTypes":[],"expression":{"id":9993,"name":"LowLevelCall","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10467,"src":"3507:12:37","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_LowLevelCall_$10467_$","typeString":"type(library LowLevelCall)"}},"id":9994,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"3520:14:37","memberName":"returnDataSize","nodeType":"MemberAccess","referencedDeclaration":10445,"src":"3507:27:37","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$__$returns$_t_uint256_$","typeString":"function () pure returns (uint256)"}},"id":9995,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"3507:29:37","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">","rightExpression":{"hexValue":"30","id":9996,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"3539:1:37","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"3507:33:37","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"nodeType":"BinaryOperation","operator":"||","rightExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":10002,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"expression":{"expression":{"id":9998,"name":"target","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9954,"src":"3544:6:37","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"id":9999,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"3551:4:37","memberName":"code","nodeType":"MemberAccess","src":"3544:11:37","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}},"id":10000,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"3556:6:37","memberName":"length","nodeType":"MemberAccess","src":"3544:18:37","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">","rightExpression":{"hexValue":"30","id":10001,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"3565:1:37","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"3544:22:37","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"src":"3507:59:37","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}}],"id":10004,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"3506:61:37","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"src":"3495:72:37","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"falseBody":{"condition":{"id":10011,"name":"success","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9984,"src":"3636:7:37","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"falseBody":{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":10021,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"arguments":[],"expression":{"argumentTypes":[],"expression":{"id":10017,"name":"LowLevelCall","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10467,"src":"3711:12:37","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_LowLevelCall_$10467_$","typeString":"type(library LowLevelCall)"}},"id":10018,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"3724:14:37","memberName":"returnDataSize","nodeType":"MemberAccess","referencedDeclaration":10445,"src":"3711:27:37","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$__$returns$_t_uint256_$","typeString":"function () pure returns (uint256)"}},"id":10019,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"3711:29:37","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">","rightExpression":{"hexValue":"30","id":10020,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"3743:1:37","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"3711:33:37","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"falseBody":{"id":10033,"nodeType":"Block","src":"3804:51:37","statements":[{"errorCall":{"arguments":[],"expression":{"argumentTypes":[],"expression":{"id":10028,"name":"Errors","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10308,"src":"3825:6:37","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_Errors_$10308_$","typeString":"type(library Errors)"}},"id":10030,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"3832:10:37","memberName":"FailedCall","nodeType":"MemberAccess","referencedDeclaration":10299,"src":"3825:17:37","typeDescriptions":{"typeIdentifier":"t_function_error_pure$__$returns$_t_error_$","typeString":"function () pure returns (error)"}},"id":10031,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"3825:19:37","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_error","typeString":"error"}},"id":10032,"nodeType":"RevertStatement","src":"3818:26:37"}]},"id":10034,"nodeType":"IfStatement","src":"3707:148:37","trueBody":{"id":10027,"nodeType":"Block","src":"3746:52:37","statements":[{"expression":{"arguments":[],"expression":{"argumentTypes":[],"expression":{"id":10022,"name":"LowLevelCall","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10467,"src":"3760:12:37","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_LowLevelCall_$10467_$","typeString":"type(library LowLevelCall)"}},"id":10024,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"3773:12:37","memberName":"bubbleRevert","nodeType":"MemberAccess","referencedDeclaration":10459,"src":"3760:25:37","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$__$returns$__$","typeString":"function () pure"}},"id":10025,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"3760:27:37","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":10026,"nodeType":"ExpressionStatement","src":"3760:27:37"}]}},"id":10035,"nodeType":"IfStatement","src":"3632:223:37","trueBody":{"id":10016,"nodeType":"Block","src":"3645:56:37","statements":[{"errorCall":{"arguments":[{"id":10013,"name":"target","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9954,"src":"3683:6:37","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"id":10012,"name":"AddressEmptyCode","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9878,"src":"3666:16:37","typeDescriptions":{"typeIdentifier":"t_function_error_pure$_t_address_$returns$_t_error_$","typeString":"function (address) pure returns (error)"}},"id":10014,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"3666:24:37","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_error","typeString":"error"}},"id":10015,"nodeType":"RevertStatement","src":"3659:31:37"}]}},"id":10036,"nodeType":"IfStatement","src":"3491:364:37","trueBody":{"id":10010,"nodeType":"Block","src":"3569:57:37","statements":[{"expression":{"arguments":[],"expression":{"argumentTypes":[],"expression":{"id":10006,"name":"LowLevelCall","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10467,"src":"3590:12:37","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_LowLevelCall_$10467_$","typeString":"type(library LowLevelCall)"}},"id":10007,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"3603:10:37","memberName":"returnData","nodeType":"MemberAccess","referencedDeclaration":10453,"src":"3590:23:37","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$__$returns$_t_bytes_memory_ptr_$","typeString":"function () pure returns (bytes memory)"}},"id":10008,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"3590:25:37","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}},"functionReturnParameters":9962,"id":10009,"nodeType":"Return","src":"3583:32:37"}]}}]},"documentation":{"id":9952,"nodeType":"StructuredDocumentation","src":"2847:313:37","text":" @dev Same as {xref-Address-functionCall-address-bytes-}[`functionCall`],\n but also transferring `value` wei to `target`.\n Requirements:\n - the calling contract must have an ETH balance of at least `value`.\n - the called Solidity function must be `payable`."},"id":10038,"implemented":true,"kind":"function","modifiers":[],"name":"functionCallWithValue","nameLocation":"3174:21:37","nodeType":"FunctionDefinition","parameters":{"id":9959,"nodeType":"ParameterList","parameters":[{"constant":false,"id":9954,"mutability":"mutable","name":"target","nameLocation":"3204:6:37","nodeType":"VariableDeclaration","scope":10038,"src":"3196:14:37","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":9953,"name":"address","nodeType":"ElementaryTypeName","src":"3196:7:37","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":9956,"mutability":"mutable","name":"data","nameLocation":"3225:4:37","nodeType":"VariableDeclaration","scope":10038,"src":"3212:17:37","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes"},"typeName":{"id":9955,"name":"bytes","nodeType":"ElementaryTypeName","src":"3212:5:37","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"},{"constant":false,"id":9958,"mutability":"mutable","name":"value","nameLocation":"3239:5:37","nodeType":"VariableDeclaration","scope":10038,"src":"3231:13:37","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":9957,"name":"uint256","nodeType":"ElementaryTypeName","src":"3231:7:37","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"3195:50:37"},"returnParameters":{"id":9962,"nodeType":"ParameterList","parameters":[{"constant":false,"id":9961,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":10038,"src":"3264:12:37","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes"},"typeName":{"id":9960,"name":"bytes","nodeType":"ElementaryTypeName","src":"3264:5:37","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"}],"src":"3263:14:37"},"scope":10256,"src":"3165:696:37","stateMutability":"nonpayable","virtual":false,"visibility":"internal"},{"body":{"id":10101,"nodeType":"Block","src":"4100:450:37","statements":[{"assignments":[10049],"declarations":[{"constant":false,"id":10049,"mutability":"mutable","name":"success","nameLocation":"4115:7:37","nodeType":"VariableDeclaration","scope":10101,"src":"4110:12:37","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":10048,"name":"bool","nodeType":"ElementaryTypeName","src":"4110:4:37","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"}],"id":10055,"initialValue":{"arguments":[{"id":10052,"name":"target","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10041,"src":"4157:6:37","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":10053,"name":"data","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10043,"src":"4165:4:37","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":10050,"name":"LowLevelCall","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10467,"src":"4125:12:37","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_LowLevelCall_$10467_$","typeString":"type(library LowLevelCall)"}},"id":10051,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"4138:18:37","memberName":"staticcallNoReturn","nodeType":"MemberAccess","referencedDeclaration":10393,"src":"4125:31:37","typeDescriptions":{"typeIdentifier":"t_function_internal_view$_t_address_$_t_bytes_memory_ptr_$returns$_t_bool_$","typeString":"function (address,bytes memory) view returns (bool)"}},"id":10054,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"4125:45:37","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"nodeType":"VariableDeclarationStatement","src":"4110:60:37"},{"condition":{"commonType":{"typeIdentifier":"t_bool","typeString":"bool"},"id":10069,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":10056,"name":"success","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10049,"src":"4184:7:37","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"nodeType":"BinaryOperation","operator":"&&","rightExpression":{"components":[{"commonType":{"typeIdentifier":"t_bool","typeString":"bool"},"id":10067,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":10061,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"arguments":[],"expression":{"argumentTypes":[],"expression":{"id":10057,"name":"LowLevelCall","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10467,"src":"4196:12:37","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_LowLevelCall_$10467_$","typeString":"type(library LowLevelCall)"}},"id":10058,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"4209:14:37","memberName":"returnDataSize","nodeType":"MemberAccess","referencedDeclaration":10445,"src":"4196:27:37","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$__$returns$_t_uint256_$","typeString":"function () pure returns (uint256)"}},"id":10059,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"4196:29:37","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">","rightExpression":{"hexValue":"30","id":10060,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"4228:1:37","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"4196:33:37","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"nodeType":"BinaryOperation","operator":"||","rightExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":10066,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"expression":{"expression":{"id":10062,"name":"target","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10041,"src":"4233:6:37","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"id":10063,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"4240:4:37","memberName":"code","nodeType":"MemberAccess","src":"4233:11:37","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}},"id":10064,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"4245:6:37","memberName":"length","nodeType":"MemberAccess","src":"4233:18:37","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">","rightExpression":{"hexValue":"30","id":10065,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"4254:1:37","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"4233:22:37","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"src":"4196:59:37","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}}],"id":10068,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"4195:61:37","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"src":"4184:72:37","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"falseBody":{"condition":{"id":10075,"name":"success","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10049,"src":"4325:7:37","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"falseBody":{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":10085,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"arguments":[],"expression":{"argumentTypes":[],"expression":{"id":10081,"name":"LowLevelCall","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10467,"src":"4400:12:37","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_LowLevelCall_$10467_$","typeString":"type(library LowLevelCall)"}},"id":10082,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"4413:14:37","memberName":"returnDataSize","nodeType":"MemberAccess","referencedDeclaration":10445,"src":"4400:27:37","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$__$returns$_t_uint256_$","typeString":"function () pure returns (uint256)"}},"id":10083,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"4400:29:37","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">","rightExpression":{"hexValue":"30","id":10084,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"4432:1:37","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"4400:33:37","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"falseBody":{"id":10097,"nodeType":"Block","src":"4493:51:37","statements":[{"errorCall":{"arguments":[],"expression":{"argumentTypes":[],"expression":{"id":10092,"name":"Errors","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10308,"src":"4514:6:37","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_Errors_$10308_$","typeString":"type(library Errors)"}},"id":10094,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"4521:10:37","memberName":"FailedCall","nodeType":"MemberAccess","referencedDeclaration":10299,"src":"4514:17:37","typeDescriptions":{"typeIdentifier":"t_function_error_pure$__$returns$_t_error_$","typeString":"function () pure returns (error)"}},"id":10095,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"4514:19:37","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_error","typeString":"error"}},"id":10096,"nodeType":"RevertStatement","src":"4507:26:37"}]},"id":10098,"nodeType":"IfStatement","src":"4396:148:37","trueBody":{"id":10091,"nodeType":"Block","src":"4435:52:37","statements":[{"expression":{"arguments":[],"expression":{"argumentTypes":[],"expression":{"id":10086,"name":"LowLevelCall","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10467,"src":"4449:12:37","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_LowLevelCall_$10467_$","typeString":"type(library LowLevelCall)"}},"id":10088,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"4462:12:37","memberName":"bubbleRevert","nodeType":"MemberAccess","referencedDeclaration":10459,"src":"4449:25:37","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$__$returns$__$","typeString":"function () pure"}},"id":10089,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"4449:27:37","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":10090,"nodeType":"ExpressionStatement","src":"4449:27:37"}]}},"id":10099,"nodeType":"IfStatement","src":"4321:223:37","trueBody":{"id":10080,"nodeType":"Block","src":"4334:56:37","statements":[{"errorCall":{"arguments":[{"id":10077,"name":"target","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10041,"src":"4372:6:37","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"id":10076,"name":"AddressEmptyCode","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9878,"src":"4355:16:37","typeDescriptions":{"typeIdentifier":"t_function_error_pure$_t_address_$returns$_t_error_$","typeString":"function (address) pure returns (error)"}},"id":10078,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"4355:24:37","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_error","typeString":"error"}},"id":10079,"nodeType":"RevertStatement","src":"4348:31:37"}]}},"id":10100,"nodeType":"IfStatement","src":"4180:364:37","trueBody":{"id":10074,"nodeType":"Block","src":"4258:57:37","statements":[{"expression":{"arguments":[],"expression":{"argumentTypes":[],"expression":{"id":10070,"name":"LowLevelCall","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10467,"src":"4279:12:37","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_LowLevelCall_$10467_$","typeString":"type(library LowLevelCall)"}},"id":10071,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"4292:10:37","memberName":"returnData","nodeType":"MemberAccess","referencedDeclaration":10453,"src":"4279:23:37","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$__$returns$_t_bytes_memory_ptr_$","typeString":"function () pure returns (bytes memory)"}},"id":10072,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"4279:25:37","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}},"functionReturnParameters":10047,"id":10073,"nodeType":"Return","src":"4272:32:37"}]}}]},"documentation":{"id":10039,"nodeType":"StructuredDocumentation","src":"3867:128:37","text":" @dev Same as {xref-Address-functionCall-address-bytes-}[`functionCall`],\n but performing a static call."},"id":10102,"implemented":true,"kind":"function","modifiers":[],"name":"functionStaticCall","nameLocation":"4009:18:37","nodeType":"FunctionDefinition","parameters":{"id":10044,"nodeType":"ParameterList","parameters":[{"constant":false,"id":10041,"mutability":"mutable","name":"target","nameLocation":"4036:6:37","nodeType":"VariableDeclaration","scope":10102,"src":"4028:14:37","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":10040,"name":"address","nodeType":"ElementaryTypeName","src":"4028:7:37","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":10043,"mutability":"mutable","name":"data","nameLocation":"4057:4:37","nodeType":"VariableDeclaration","scope":10102,"src":"4044:17:37","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes"},"typeName":{"id":10042,"name":"bytes","nodeType":"ElementaryTypeName","src":"4044:5:37","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"}],"src":"4027:35:37"},"returnParameters":{"id":10047,"nodeType":"ParameterList","parameters":[{"constant":false,"id":10046,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":10102,"src":"4086:12:37","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes"},"typeName":{"id":10045,"name":"bytes","nodeType":"ElementaryTypeName","src":"4086:5:37","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"}],"src":"4085:14:37"},"scope":10256,"src":"4000:550:37","stateMutability":"view","virtual":false,"visibility":"internal"},{"body":{"id":10165,"nodeType":"Block","src":"4788:452:37","statements":[{"assignments":[10113],"declarations":[{"constant":false,"id":10113,"mutability":"mutable","name":"success","nameLocation":"4803:7:37","nodeType":"VariableDeclaration","scope":10165,"src":"4798:12:37","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":10112,"name":"bool","nodeType":"ElementaryTypeName","src":"4798:4:37","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"}],"id":10119,"initialValue":{"arguments":[{"id":10116,"name":"target","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10105,"src":"4847:6:37","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":10117,"name":"data","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10107,"src":"4855:4:37","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":10114,"name":"LowLevelCall","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10467,"src":"4813:12:37","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_LowLevelCall_$10467_$","typeString":"type(library LowLevelCall)"}},"id":10115,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"4826:20:37","memberName":"delegatecallNoReturn","nodeType":"MemberAccess","referencedDeclaration":10421,"src":"4813:33:37","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_address_$_t_bytes_memory_ptr_$returns$_t_bool_$","typeString":"function (address,bytes memory) returns (bool)"}},"id":10118,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"4813:47:37","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"nodeType":"VariableDeclarationStatement","src":"4798:62:37"},{"condition":{"commonType":{"typeIdentifier":"t_bool","typeString":"bool"},"id":10133,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":10120,"name":"success","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10113,"src":"4874:7:37","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"nodeType":"BinaryOperation","operator":"&&","rightExpression":{"components":[{"commonType":{"typeIdentifier":"t_bool","typeString":"bool"},"id":10131,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":10125,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"arguments":[],"expression":{"argumentTypes":[],"expression":{"id":10121,"name":"LowLevelCall","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10467,"src":"4886:12:37","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_LowLevelCall_$10467_$","typeString":"type(library LowLevelCall)"}},"id":10122,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"4899:14:37","memberName":"returnDataSize","nodeType":"MemberAccess","referencedDeclaration":10445,"src":"4886:27:37","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$__$returns$_t_uint256_$","typeString":"function () pure returns (uint256)"}},"id":10123,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"4886:29:37","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">","rightExpression":{"hexValue":"30","id":10124,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"4918:1:37","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"4886:33:37","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"nodeType":"BinaryOperation","operator":"||","rightExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":10130,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"expression":{"expression":{"id":10126,"name":"target","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10105,"src":"4923:6:37","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"id":10127,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"4930:4:37","memberName":"code","nodeType":"MemberAccess","src":"4923:11:37","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}},"id":10128,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"4935:6:37","memberName":"length","nodeType":"MemberAccess","src":"4923:18:37","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">","rightExpression":{"hexValue":"30","id":10129,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"4944:1:37","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"4923:22:37","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"src":"4886:59:37","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}}],"id":10132,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"4885:61:37","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"src":"4874:72:37","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"falseBody":{"condition":{"id":10139,"name":"success","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10113,"src":"5015:7:37","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"falseBody":{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":10149,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"arguments":[],"expression":{"argumentTypes":[],"expression":{"id":10145,"name":"LowLevelCall","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10467,"src":"5090:12:37","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_LowLevelCall_$10467_$","typeString":"type(library LowLevelCall)"}},"id":10146,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"5103:14:37","memberName":"returnDataSize","nodeType":"MemberAccess","referencedDeclaration":10445,"src":"5090:27:37","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$__$returns$_t_uint256_$","typeString":"function () pure returns (uint256)"}},"id":10147,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"5090:29:37","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">","rightExpression":{"hexValue":"30","id":10148,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"5122:1:37","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"5090:33:37","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"falseBody":{"id":10161,"nodeType":"Block","src":"5183:51:37","statements":[{"errorCall":{"arguments":[],"expression":{"argumentTypes":[],"expression":{"id":10156,"name":"Errors","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10308,"src":"5204:6:37","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_Errors_$10308_$","typeString":"type(library Errors)"}},"id":10158,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"5211:10:37","memberName":"FailedCall","nodeType":"MemberAccess","referencedDeclaration":10299,"src":"5204:17:37","typeDescriptions":{"typeIdentifier":"t_function_error_pure$__$returns$_t_error_$","typeString":"function () pure returns (error)"}},"id":10159,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"5204:19:37","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_error","typeString":"error"}},"id":10160,"nodeType":"RevertStatement","src":"5197:26:37"}]},"id":10162,"nodeType":"IfStatement","src":"5086:148:37","trueBody":{"id":10155,"nodeType":"Block","src":"5125:52:37","statements":[{"expression":{"arguments":[],"expression":{"argumentTypes":[],"expression":{"id":10150,"name":"LowLevelCall","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10467,"src":"5139:12:37","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_LowLevelCall_$10467_$","typeString":"type(library LowLevelCall)"}},"id":10152,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"5152:12:37","memberName":"bubbleRevert","nodeType":"MemberAccess","referencedDeclaration":10459,"src":"5139:25:37","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$__$returns$__$","typeString":"function () pure"}},"id":10153,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"5139:27:37","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":10154,"nodeType":"ExpressionStatement","src":"5139:27:37"}]}},"id":10163,"nodeType":"IfStatement","src":"5011:223:37","trueBody":{"id":10144,"nodeType":"Block","src":"5024:56:37","statements":[{"errorCall":{"arguments":[{"id":10141,"name":"target","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10105,"src":"5062:6:37","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"id":10140,"name":"AddressEmptyCode","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9878,"src":"5045:16:37","typeDescriptions":{"typeIdentifier":"t_function_error_pure$_t_address_$returns$_t_error_$","typeString":"function (address) pure returns (error)"}},"id":10142,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"5045:24:37","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_error","typeString":"error"}},"id":10143,"nodeType":"RevertStatement","src":"5038:31:37"}]}},"id":10164,"nodeType":"IfStatement","src":"4870:364:37","trueBody":{"id":10138,"nodeType":"Block","src":"4948:57:37","statements":[{"expression":{"arguments":[],"expression":{"argumentTypes":[],"expression":{"id":10134,"name":"LowLevelCall","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10467,"src":"4969:12:37","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_LowLevelCall_$10467_$","typeString":"type(library LowLevelCall)"}},"id":10135,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"4982:10:37","memberName":"returnData","nodeType":"MemberAccess","referencedDeclaration":10453,"src":"4969:23:37","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$__$returns$_t_bytes_memory_ptr_$","typeString":"function () pure returns (bytes memory)"}},"id":10136,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"4969:25:37","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}},"functionReturnParameters":10111,"id":10137,"nodeType":"Return","src":"4962:32:37"}]}}]},"documentation":{"id":10103,"nodeType":"StructuredDocumentation","src":"4556:130:37","text":" @dev Same as {xref-Address-functionCall-address-bytes-}[`functionCall`],\n but performing a delegate call."},"id":10166,"implemented":true,"kind":"function","modifiers":[],"name":"functionDelegateCall","nameLocation":"4700:20:37","nodeType":"FunctionDefinition","parameters":{"id":10108,"nodeType":"ParameterList","parameters":[{"constant":false,"id":10105,"mutability":"mutable","name":"target","nameLocation":"4729:6:37","nodeType":"VariableDeclaration","scope":10166,"src":"4721:14:37","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":10104,"name":"address","nodeType":"ElementaryTypeName","src":"4721:7:37","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":10107,"mutability":"mutable","name":"data","nameLocation":"4750:4:37","nodeType":"VariableDeclaration","scope":10166,"src":"4737:17:37","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes"},"typeName":{"id":10106,"name":"bytes","nodeType":"ElementaryTypeName","src":"4737:5:37","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"}],"src":"4720:35:37"},"returnParameters":{"id":10111,"nodeType":"ParameterList","parameters":[{"constant":false,"id":10110,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":10166,"src":"4774:12:37","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes"},"typeName":{"id":10109,"name":"bytes","nodeType":"ElementaryTypeName","src":"4774:5:37","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"}],"src":"4773:14:37"},"scope":10256,"src":"4691:549:37","stateMutability":"nonpayable","virtual":false,"visibility":"internal"},{"body":{"id":10220,"nodeType":"Block","src":"5760:513:37","statements":[{"condition":{"commonType":{"typeIdentifier":"t_bool","typeString":"bool"},"id":10190,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":10178,"name":"success","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10171,"src":"5936:7:37","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"nodeType":"BinaryOperation","operator":"&&","rightExpression":{"components":[{"commonType":{"typeIdentifier":"t_bool","typeString":"bool"},"id":10188,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":10182,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"expression":{"id":10179,"name":"returndata","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10173,"src":"5948:10:37","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}},"id":10180,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"5959:6:37","memberName":"length","nodeType":"MemberAccess","src":"5948:17:37","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">","rightExpression":{"hexValue":"30","id":10181,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"5968:1:37","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"5948:21:37","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"nodeType":"BinaryOperation","operator":"||","rightExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":10187,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"expression":{"expression":{"id":10183,"name":"target","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10169,"src":"5973:6:37","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"id":10184,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"5980:4:37","memberName":"code","nodeType":"MemberAccess","src":"5973:11:37","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}},"id":10185,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"5985:6:37","memberName":"length","nodeType":"MemberAccess","src":"5973:18:37","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">","rightExpression":{"hexValue":"30","id":10186,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"5994:1:37","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"5973:22:37","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"src":"5948:47:37","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}}],"id":10189,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"5947:49:37","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"src":"5936:60:37","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"falseBody":{"condition":{"id":10194,"name":"success","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10171,"src":"6050:7:37","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"falseBody":{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":10203,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"expression":{"id":10200,"name":"returndata","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10173,"src":"6125:10:37","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}},"id":10201,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"6136:6:37","memberName":"length","nodeType":"MemberAccess","src":"6125:17:37","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">","rightExpression":{"hexValue":"30","id":10202,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"6145:1:37","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"6125:21:37","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"falseBody":{"id":10216,"nodeType":"Block","src":"6216:51:37","statements":[{"errorCall":{"arguments":[],"expression":{"argumentTypes":[],"expression":{"id":10211,"name":"Errors","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10308,"src":"6237:6:37","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_Errors_$10308_$","typeString":"type(library Errors)"}},"id":10213,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"6244:10:37","memberName":"FailedCall","nodeType":"MemberAccess","referencedDeclaration":10299,"src":"6237:17:37","typeDescriptions":{"typeIdentifier":"t_function_error_pure$__$returns$_t_error_$","typeString":"function () pure returns (error)"}},"id":10214,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"6237:19:37","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_error","typeString":"error"}},"id":10215,"nodeType":"RevertStatement","src":"6230:26:37"}]},"id":10217,"nodeType":"IfStatement","src":"6121:146:37","trueBody":{"id":10210,"nodeType":"Block","src":"6148:62:37","statements":[{"expression":{"arguments":[{"id":10207,"name":"returndata","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10173,"src":"6188:10:37","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}],"expression":{"id":10204,"name":"LowLevelCall","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10467,"src":"6162:12:37","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_LowLevelCall_$10467_$","typeString":"type(library LowLevelCall)"}},"id":10206,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"6175:12:37","memberName":"bubbleRevert","nodeType":"MemberAccess","referencedDeclaration":10466,"src":"6162:25:37","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_bytes_memory_ptr_$returns$__$","typeString":"function (bytes memory) pure"}},"id":10208,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"6162:37:37","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":10209,"nodeType":"ExpressionStatement","src":"6162:37:37"}]}},"id":10218,"nodeType":"IfStatement","src":"6046:221:37","trueBody":{"id":10199,"nodeType":"Block","src":"6059:56:37","statements":[{"errorCall":{"arguments":[{"id":10196,"name":"target","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10169,"src":"6097:6:37","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"id":10195,"name":"AddressEmptyCode","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9878,"src":"6080:16:37","typeDescriptions":{"typeIdentifier":"t_function_error_pure$_t_address_$returns$_t_error_$","typeString":"function (address) pure returns (error)"}},"id":10197,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"6080:24:37","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_error","typeString":"error"}},"id":10198,"nodeType":"RevertStatement","src":"6073:31:37"}]}},"id":10219,"nodeType":"IfStatement","src":"5932:335:37","trueBody":{"id":10193,"nodeType":"Block","src":"5998:42:37","statements":[{"expression":{"id":10191,"name":"returndata","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10173,"src":"6019:10:37","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}},"functionReturnParameters":10177,"id":10192,"nodeType":"Return","src":"6012:17:37"}]}}]},"documentation":{"id":10167,"nodeType":"StructuredDocumentation","src":"5246:351:37","text":" @dev Tool to verify that a low level call to smart-contract was successful, and reverts if the target\n was not a contract or bubbling up the revert reason (falling back to {Errors.FailedCall}) in case\n of an unsuccessful call.\n NOTE: This function is DEPRECATED and may be removed in the next major release."},"id":10221,"implemented":true,"kind":"function","modifiers":[],"name":"verifyCallResultFromTarget","nameLocation":"5611:26:37","nodeType":"FunctionDefinition","parameters":{"id":10174,"nodeType":"ParameterList","parameters":[{"constant":false,"id":10169,"mutability":"mutable","name":"target","nameLocation":"5655:6:37","nodeType":"VariableDeclaration","scope":10221,"src":"5647:14:37","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":10168,"name":"address","nodeType":"ElementaryTypeName","src":"5647:7:37","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":10171,"mutability":"mutable","name":"success","nameLocation":"5676:7:37","nodeType":"VariableDeclaration","scope":10221,"src":"5671:12:37","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":10170,"name":"bool","nodeType":"ElementaryTypeName","src":"5671:4:37","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"},{"constant":false,"id":10173,"mutability":"mutable","name":"returndata","nameLocation":"5706:10:37","nodeType":"VariableDeclaration","scope":10221,"src":"5693:23:37","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes"},"typeName":{"id":10172,"name":"bytes","nodeType":"ElementaryTypeName","src":"5693:5:37","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"}],"src":"5637:85:37"},"returnParameters":{"id":10177,"nodeType":"ParameterList","parameters":[{"constant":false,"id":10176,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":10221,"src":"5746:12:37","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes"},"typeName":{"id":10175,"name":"bytes","nodeType":"ElementaryTypeName","src":"5746:5:37","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"}],"src":"5745:14:37"},"scope":10256,"src":"5602:671:37","stateMutability":"view","virtual":false,"visibility":"internal"},{"body":{"id":10254,"nodeType":"Block","src":"6577:223:37","statements":[{"condition":{"id":10231,"name":"success","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10224,"src":"6591:7:37","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"falseBody":{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":10238,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"expression":{"id":10235,"name":"returndata","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10226,"src":"6652:10:37","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}},"id":10236,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"6663:6:37","memberName":"length","nodeType":"MemberAccess","src":"6652:17:37","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">","rightExpression":{"hexValue":"30","id":10237,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"6672:1:37","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"6652:21:37","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"falseBody":{"id":10251,"nodeType":"Block","src":"6743:51:37","statements":[{"errorCall":{"arguments":[],"expression":{"argumentTypes":[],"expression":{"id":10246,"name":"Errors","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10308,"src":"6764:6:37","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_Errors_$10308_$","typeString":"type(library Errors)"}},"id":10248,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"6771:10:37","memberName":"FailedCall","nodeType":"MemberAccess","referencedDeclaration":10299,"src":"6764:17:37","typeDescriptions":{"typeIdentifier":"t_function_error_pure$__$returns$_t_error_$","typeString":"function () pure returns (error)"}},"id":10249,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"6764:19:37","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_error","typeString":"error"}},"id":10250,"nodeType":"RevertStatement","src":"6757:26:37"}]},"id":10252,"nodeType":"IfStatement","src":"6648:146:37","trueBody":{"id":10245,"nodeType":"Block","src":"6675:62:37","statements":[{"expression":{"arguments":[{"id":10242,"name":"returndata","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10226,"src":"6715:10:37","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}],"expression":{"id":10239,"name":"LowLevelCall","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10467,"src":"6689:12:37","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_LowLevelCall_$10467_$","typeString":"type(library LowLevelCall)"}},"id":10241,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"6702:12:37","memberName":"bubbleRevert","nodeType":"MemberAccess","referencedDeclaration":10466,"src":"6689:25:37","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_bytes_memory_ptr_$returns$__$","typeString":"function (bytes memory) pure"}},"id":10243,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"6689:37:37","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":10244,"nodeType":"ExpressionStatement","src":"6689:37:37"}]}},"id":10253,"nodeType":"IfStatement","src":"6587:207:37","trueBody":{"id":10234,"nodeType":"Block","src":"6600:42:37","statements":[{"expression":{"id":10232,"name":"returndata","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10226,"src":"6621:10:37","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}},"functionReturnParameters":10230,"id":10233,"nodeType":"Return","src":"6614:17:37"}]}}]},"documentation":{"id":10222,"nodeType":"StructuredDocumentation","src":"6279:191:37","text":" @dev Tool to verify that a low level call was successful, and reverts if it wasn't, either by bubbling the\n revert reason or with a default {Errors.FailedCall} error."},"id":10255,"implemented":true,"kind":"function","modifiers":[],"name":"verifyCallResult","nameLocation":"6484:16:37","nodeType":"FunctionDefinition","parameters":{"id":10227,"nodeType":"ParameterList","parameters":[{"constant":false,"id":10224,"mutability":"mutable","name":"success","nameLocation":"6506:7:37","nodeType":"VariableDeclaration","scope":10255,"src":"6501:12:37","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":10223,"name":"bool","nodeType":"ElementaryTypeName","src":"6501:4:37","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"},{"constant":false,"id":10226,"mutability":"mutable","name":"returndata","nameLocation":"6528:10:37","nodeType":"VariableDeclaration","scope":10255,"src":"6515:23:37","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes"},"typeName":{"id":10225,"name":"bytes","nodeType":"ElementaryTypeName","src":"6515:5:37","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"}],"src":"6500:39:37"},"returnParameters":{"id":10230,"nodeType":"ParameterList","parameters":[{"constant":false,"id":10229,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":10255,"src":"6563:12:37","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes"},"typeName":{"id":10228,"name":"bytes","nodeType":"ElementaryTypeName","src":"6563:5:37","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"}],"src":"6562:14:37"},"scope":10256,"src":"6475:325:37","stateMutability":"pure","virtual":false,"visibility":"internal"}],"scope":10257,"src":"282:6520:37","usedErrors":[9878],"usedEvents":[]}],"src":"101:6702:37"},"id":37},"@openzeppelin/contracts/utils/Context.sol":{"ast":{"absolutePath":"@openzeppelin/contracts/utils/Context.sol","exportedSymbols":{"Context":[10286]},"id":10287,"license":"MIT","nodeType":"SourceUnit","nodes":[{"id":10258,"literals":["solidity","^","0.8",".20"],"nodeType":"PragmaDirective","src":"101:24:38"},{"abstract":true,"baseContracts":[],"canonicalName":"Context","contractDependencies":[],"contractKind":"contract","documentation":{"id":10259,"nodeType":"StructuredDocumentation","src":"127:496:38","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":10286,"linearizedBaseContracts":[10286],"name":"Context","nameLocation":"642:7:38","nodeType":"ContractDefinition","nodes":[{"body":{"id":10267,"nodeType":"Block","src":"718:34:38","statements":[{"expression":{"expression":{"id":10264,"name":"msg","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-15,"src":"735:3:38","typeDescriptions":{"typeIdentifier":"t_magic_message","typeString":"msg"}},"id":10265,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"739:6:38","memberName":"sender","nodeType":"MemberAccess","src":"735:10:38","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"functionReturnParameters":10263,"id":10266,"nodeType":"Return","src":"728:17:38"}]},"id":10268,"implemented":true,"kind":"function","modifiers":[],"name":"_msgSender","nameLocation":"665:10:38","nodeType":"FunctionDefinition","parameters":{"id":10260,"nodeType":"ParameterList","parameters":[],"src":"675:2:38"},"returnParameters":{"id":10263,"nodeType":"ParameterList","parameters":[{"constant":false,"id":10262,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":10268,"src":"709:7:38","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":10261,"name":"address","nodeType":"ElementaryTypeName","src":"709:7:38","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"708:9:38"},"scope":10286,"src":"656:96:38","stateMutability":"view","virtual":true,"visibility":"internal"},{"body":{"id":10276,"nodeType":"Block","src":"825:32:38","statements":[{"expression":{"expression":{"id":10273,"name":"msg","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-15,"src":"842:3:38","typeDescriptions":{"typeIdentifier":"t_magic_message","typeString":"msg"}},"id":10274,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"846:4:38","memberName":"data","nodeType":"MemberAccess","src":"842:8:38","typeDescriptions":{"typeIdentifier":"t_bytes_calldata_ptr","typeString":"bytes calldata"}},"functionReturnParameters":10272,"id":10275,"nodeType":"Return","src":"835:15:38"}]},"id":10277,"implemented":true,"kind":"function","modifiers":[],"name":"_msgData","nameLocation":"767:8:38","nodeType":"FunctionDefinition","parameters":{"id":10269,"nodeType":"ParameterList","parameters":[],"src":"775:2:38"},"returnParameters":{"id":10272,"nodeType":"ParameterList","parameters":[{"constant":false,"id":10271,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":10277,"src":"809:14:38","stateVariable":false,"storageLocation":"calldata","typeDescriptions":{"typeIdentifier":"t_bytes_calldata_ptr","typeString":"bytes"},"typeName":{"id":10270,"name":"bytes","nodeType":"ElementaryTypeName","src":"809:5:38","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"}],"src":"808:16:38"},"scope":10286,"src":"758:99:38","stateMutability":"view","virtual":true,"visibility":"internal"},{"body":{"id":10284,"nodeType":"Block","src":"935:25:38","statements":[{"expression":{"hexValue":"30","id":10282,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"952:1:38","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"functionReturnParameters":10281,"id":10283,"nodeType":"Return","src":"945:8:38"}]},"id":10285,"implemented":true,"kind":"function","modifiers":[],"name":"_contextSuffixLength","nameLocation":"872:20:38","nodeType":"FunctionDefinition","parameters":{"id":10278,"nodeType":"ParameterList","parameters":[],"src":"892:2:38"},"returnParameters":{"id":10281,"nodeType":"ParameterList","parameters":[{"constant":false,"id":10280,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":10285,"src":"926:7:38","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":10279,"name":"uint256","nodeType":"ElementaryTypeName","src":"926:7:38","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"925:9:38"},"scope":10286,"src":"863:97:38","stateMutability":"view","virtual":true,"visibility":"internal"}],"scope":10287,"src":"624:338:38","usedErrors":[],"usedEvents":[]}],"src":"101:862:38"},"id":38},"@openzeppelin/contracts/utils/Errors.sol":{"ast":{"absolutePath":"@openzeppelin/contracts/utils/Errors.sol","exportedSymbols":{"Errors":[10308]},"id":10309,"license":"MIT","nodeType":"SourceUnit","nodes":[{"id":10288,"literals":["solidity","^","0.8",".20"],"nodeType":"PragmaDirective","src":"100:24:39"},{"abstract":false,"baseContracts":[],"canonicalName":"Errors","contractDependencies":[],"contractKind":"library","documentation":{"id":10289,"nodeType":"StructuredDocumentation","src":"126:284:39","text":" @dev Collection of common custom errors used in multiple contracts\n IMPORTANT: Backwards compatibility is not guaranteed in future versions of the library.\n It is recommended to avoid relying on the error API for critical functionality.\n _Available since v5.1._"},"fullyImplemented":true,"id":10308,"linearizedBaseContracts":[10308],"name":"Errors","nameLocation":"419:6:39","nodeType":"ContractDefinition","nodes":[{"documentation":{"id":10290,"nodeType":"StructuredDocumentation","src":"432:94:39","text":" @dev The ETH balance of the account is not enough to perform the operation."},"errorSelector":"cf479181","id":10296,"name":"InsufficientBalance","nameLocation":"537:19:39","nodeType":"ErrorDefinition","parameters":{"id":10295,"nodeType":"ParameterList","parameters":[{"constant":false,"id":10292,"mutability":"mutable","name":"balance","nameLocation":"565:7:39","nodeType":"VariableDeclaration","scope":10296,"src":"557:15:39","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":10291,"name":"uint256","nodeType":"ElementaryTypeName","src":"557:7:39","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":10294,"mutability":"mutable","name":"needed","nameLocation":"582:6:39","nodeType":"VariableDeclaration","scope":10296,"src":"574:14:39","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":10293,"name":"uint256","nodeType":"ElementaryTypeName","src":"574:7:39","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"556:33:39"},"src":"531:59:39"},{"documentation":{"id":10297,"nodeType":"StructuredDocumentation","src":"596:89:39","text":" @dev A call to an address target failed. The target may have reverted."},"errorSelector":"d6bda275","id":10299,"name":"FailedCall","nameLocation":"696:10:39","nodeType":"ErrorDefinition","parameters":{"id":10298,"nodeType":"ParameterList","parameters":[],"src":"706:2:39"},"src":"690:19:39"},{"documentation":{"id":10300,"nodeType":"StructuredDocumentation","src":"715:46:39","text":" @dev The deployment failed."},"errorSelector":"b06ebf3d","id":10302,"name":"FailedDeployment","nameLocation":"772:16:39","nodeType":"ErrorDefinition","parameters":{"id":10301,"nodeType":"ParameterList","parameters":[],"src":"788:2:39"},"src":"766:25:39"},{"documentation":{"id":10303,"nodeType":"StructuredDocumentation","src":"797:58:39","text":" @dev A necessary precompile is missing."},"errorSelector":"42b01bce","id":10307,"name":"MissingPrecompile","nameLocation":"866:17:39","nodeType":"ErrorDefinition","parameters":{"id":10306,"nodeType":"ParameterList","parameters":[{"constant":false,"id":10305,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":10307,"src":"884:7:39","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":10304,"name":"address","nodeType":"ElementaryTypeName","src":"884:7:39","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"883:9:39"},"src":"860:33:39"}],"scope":10309,"src":"411:484:39","usedErrors":[10296,10299,10302,10307],"usedEvents":[]}],"src":"100:796:39"},"id":39},"@openzeppelin/contracts/utils/LowLevelCall.sol":{"ast":{"absolutePath":"@openzeppelin/contracts/utils/LowLevelCall.sol","exportedSymbols":{"LowLevelCall":[10467]},"id":10468,"license":"MIT","nodeType":"SourceUnit","nodes":[{"id":10310,"literals":["solidity","^","0.8",".20"],"nodeType":"PragmaDirective","src":"106:24:40"},{"abstract":false,"baseContracts":[],"canonicalName":"LowLevelCall","contractDependencies":[],"contractKind":"library","documentation":{"id":10311,"nodeType":"StructuredDocumentation","src":"132:288:40","text":" @dev Library of low level call functions that implement different calling strategies to deal with the return data.\n WARNING: Using this library requires an advanced understanding of Solidity and how the EVM works. It is recommended\n to use the {Address} library instead."},"fullyImplemented":true,"id":10467,"linearizedBaseContracts":[10467],"name":"LowLevelCall","nameLocation":"429:12:40","nodeType":"ContractDefinition","nodes":[{"body":{"id":10327,"nodeType":"Block","src":"639:53:40","statements":[{"expression":{"arguments":[{"id":10322,"name":"target","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10314,"src":"669:6:40","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"hexValue":"30","id":10323,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"677:1:40","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},{"id":10324,"name":"data","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10316,"src":"680:4:40","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}],"id":10321,"name":"callNoReturn","nodeType":"Identifier","overloadedDeclarations":[10328,10342],"referencedDeclaration":10342,"src":"656:12:40","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_address_$_t_uint256_$_t_bytes_memory_ptr_$returns$_t_bool_$","typeString":"function (address,uint256,bytes memory) returns (bool)"}},"id":10325,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"656:29:40","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"functionReturnParameters":10320,"id":10326,"nodeType":"Return","src":"649:36:40"}]},"documentation":{"id":10312,"nodeType":"StructuredDocumentation","src":"448:97:40","text":"@dev Performs a Solidity function call using a low level `call` and ignoring the return data."},"id":10328,"implemented":true,"kind":"function","modifiers":[],"name":"callNoReturn","nameLocation":"559:12:40","nodeType":"FunctionDefinition","parameters":{"id":10317,"nodeType":"ParameterList","parameters":[{"constant":false,"id":10314,"mutability":"mutable","name":"target","nameLocation":"580:6:40","nodeType":"VariableDeclaration","scope":10328,"src":"572:14:40","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":10313,"name":"address","nodeType":"ElementaryTypeName","src":"572:7:40","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":10316,"mutability":"mutable","name":"data","nameLocation":"601:4:40","nodeType":"VariableDeclaration","scope":10328,"src":"588:17:40","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes"},"typeName":{"id":10315,"name":"bytes","nodeType":"ElementaryTypeName","src":"588:5:40","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"}],"src":"571:35:40"},"returnParameters":{"id":10320,"nodeType":"ParameterList","parameters":[{"constant":false,"id":10319,"mutability":"mutable","name":"success","nameLocation":"630:7:40","nodeType":"VariableDeclaration","scope":10328,"src":"625:12:40","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":10318,"name":"bool","nodeType":"ElementaryTypeName","src":"625:4:40","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"}],"src":"624:14:40"},"scope":10467,"src":"550:142:40","stateMutability":"nonpayable","virtual":false,"visibility":"internal"},{"body":{"id":10341,"nodeType":"Block","src":"895:144:40","statements":[{"AST":{"nativeSrc":"930:103:40","nodeType":"YulBlock","src":"930:103:40","statements":[{"nativeSrc":"944:79:40","nodeType":"YulAssignment","src":"944:79:40","value":{"arguments":[{"arguments":[],"functionName":{"name":"gas","nativeSrc":"960:3:40","nodeType":"YulIdentifier","src":"960:3:40"},"nativeSrc":"960:5:40","nodeType":"YulFunctionCall","src":"960:5:40"},{"name":"target","nativeSrc":"967:6:40","nodeType":"YulIdentifier","src":"967:6:40"},{"name":"value","nativeSrc":"975:5:40","nodeType":"YulIdentifier","src":"975:5:40"},{"arguments":[{"name":"data","nativeSrc":"986:4:40","nodeType":"YulIdentifier","src":"986:4:40"},{"kind":"number","nativeSrc":"992:4:40","nodeType":"YulLiteral","src":"992:4:40","type":"","value":"0x20"}],"functionName":{"name":"add","nativeSrc":"982:3:40","nodeType":"YulIdentifier","src":"982:3:40"},"nativeSrc":"982:15:40","nodeType":"YulFunctionCall","src":"982:15:40"},{"arguments":[{"name":"data","nativeSrc":"1005:4:40","nodeType":"YulIdentifier","src":"1005:4:40"}],"functionName":{"name":"mload","nativeSrc":"999:5:40","nodeType":"YulIdentifier","src":"999:5:40"},"nativeSrc":"999:11:40","nodeType":"YulFunctionCall","src":"999:11:40"},{"kind":"number","nativeSrc":"1012:4:40","nodeType":"YulLiteral","src":"1012:4:40","type":"","value":"0x00"},{"kind":"number","nativeSrc":"1018:4:40","nodeType":"YulLiteral","src":"1018:4:40","type":"","value":"0x00"}],"functionName":{"name":"call","nativeSrc":"955:4:40","nodeType":"YulIdentifier","src":"955:4:40"},"nativeSrc":"955:68:40","nodeType":"YulFunctionCall","src":"955:68:40"},"variableNames":[{"name":"success","nativeSrc":"944:7:40","nodeType":"YulIdentifier","src":"944:7:40"}]}]},"evmVersion":"prague","externalReferences":[{"declaration":10335,"isOffset":false,"isSlot":false,"src":"1005:4:40","valueSize":1},{"declaration":10335,"isOffset":false,"isSlot":false,"src":"986:4:40","valueSize":1},{"declaration":10338,"isOffset":false,"isSlot":false,"src":"944:7:40","valueSize":1},{"declaration":10331,"isOffset":false,"isSlot":false,"src":"967:6:40","valueSize":1},{"declaration":10333,"isOffset":false,"isSlot":false,"src":"975:5:40","valueSize":1}],"flags":["memory-safe"],"id":10340,"nodeType":"InlineAssembly","src":"905:128:40"}]},"documentation":{"id":10329,"nodeType":"StructuredDocumentation","src":"698:88:40","text":"@dev Same as {callNoReturn}, but allows to specify the value to be sent in the call."},"id":10342,"implemented":true,"kind":"function","modifiers":[],"name":"callNoReturn","nameLocation":"800:12:40","nodeType":"FunctionDefinition","parameters":{"id":10336,"nodeType":"ParameterList","parameters":[{"constant":false,"id":10331,"mutability":"mutable","name":"target","nameLocation":"821:6:40","nodeType":"VariableDeclaration","scope":10342,"src":"813:14:40","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":10330,"name":"address","nodeType":"ElementaryTypeName","src":"813:7:40","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":10333,"mutability":"mutable","name":"value","nameLocation":"837:5:40","nodeType":"VariableDeclaration","scope":10342,"src":"829:13:40","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":10332,"name":"uint256","nodeType":"ElementaryTypeName","src":"829:7:40","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":10335,"mutability":"mutable","name":"data","nameLocation":"857:4:40","nodeType":"VariableDeclaration","scope":10342,"src":"844:17:40","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes"},"typeName":{"id":10334,"name":"bytes","nodeType":"ElementaryTypeName","src":"844:5:40","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"}],"src":"812:50:40"},"returnParameters":{"id":10339,"nodeType":"ParameterList","parameters":[{"constant":false,"id":10338,"mutability":"mutable","name":"success","nameLocation":"886:7:40","nodeType":"VariableDeclaration","scope":10342,"src":"881:12:40","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":10337,"name":"bool","nodeType":"ElementaryTypeName","src":"881:4:40","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"}],"src":"880:14:40"},"scope":10467,"src":"791:248:40","stateMutability":"nonpayable","virtual":false,"visibility":"internal"},{"body":{"id":10362,"nodeType":"Block","src":"1583:58:40","statements":[{"expression":{"arguments":[{"id":10357,"name":"target","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10345,"src":"1618:6:40","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"hexValue":"30","id":10358,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"1626:1:40","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},{"id":10359,"name":"data","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10347,"src":"1629:4:40","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}],"id":10356,"name":"callReturn64Bytes","nodeType":"Identifier","overloadedDeclarations":[10363,10381],"referencedDeclaration":10381,"src":"1600:17:40","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_address_$_t_uint256_$_t_bytes_memory_ptr_$returns$_t_bool_$_t_bytes32_$_t_bytes32_$","typeString":"function (address,uint256,bytes memory) returns (bool,bytes32,bytes32)"}},"id":10360,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"1600:34:40","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$_t_bool_$_t_bytes32_$_t_bytes32_$","typeString":"tuple(bool,bytes32,bytes32)"}},"functionReturnParameters":10355,"id":10361,"nodeType":"Return","src":"1593:41:40"}]},"documentation":{"id":10343,"nodeType":"StructuredDocumentation","src":"1045:383:40","text":"@dev Performs a Solidity function call using a low level `call` and returns the first 64 bytes of the result\n in the scratch space of memory. Useful for functions that return a tuple of single-word values.\n WARNING: Do not assume that the results are zero if `success` is false. Memory can be already allocated\n and this function doesn't zero it out."},"id":10363,"implemented":true,"kind":"function","modifiers":[],"name":"callReturn64Bytes","nameLocation":"1442:17:40","nodeType":"FunctionDefinition","parameters":{"id":10348,"nodeType":"ParameterList","parameters":[{"constant":false,"id":10345,"mutability":"mutable","name":"target","nameLocation":"1477:6:40","nodeType":"VariableDeclaration","scope":10363,"src":"1469:14:40","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":10344,"name":"address","nodeType":"ElementaryTypeName","src":"1469:7:40","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":10347,"mutability":"mutable","name":"data","nameLocation":"1506:4:40","nodeType":"VariableDeclaration","scope":10363,"src":"1493:17:40","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes"},"typeName":{"id":10346,"name":"bytes","nodeType":"ElementaryTypeName","src":"1493:5:40","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"}],"src":"1459:57:40"},"returnParameters":{"id":10355,"nodeType":"ParameterList","parameters":[{"constant":false,"id":10350,"mutability":"mutable","name":"success","nameLocation":"1540:7:40","nodeType":"VariableDeclaration","scope":10363,"src":"1535:12:40","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":10349,"name":"bool","nodeType":"ElementaryTypeName","src":"1535:4:40","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"},{"constant":false,"id":10352,"mutability":"mutable","name":"result1","nameLocation":"1557:7:40","nodeType":"VariableDeclaration","scope":10363,"src":"1549:15:40","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":10351,"name":"bytes32","nodeType":"ElementaryTypeName","src":"1549:7:40","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"},{"constant":false,"id":10354,"mutability":"mutable","name":"result2","nameLocation":"1574:7:40","nodeType":"VariableDeclaration","scope":10363,"src":"1566:15:40","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":10353,"name":"bytes32","nodeType":"ElementaryTypeName","src":"1566:7:40","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"}],"src":"1534:48:40"},"scope":10467,"src":"1433:208:40","stateMutability":"nonpayable","virtual":false,"visibility":"internal"},{"body":{"id":10380,"nodeType":"Block","src":"1922:214:40","statements":[{"AST":{"nativeSrc":"1957:173:40","nodeType":"YulBlock","src":"1957:173:40","statements":[{"nativeSrc":"1971:79:40","nodeType":"YulAssignment","src":"1971:79:40","value":{"arguments":[{"arguments":[],"functionName":{"name":"gas","nativeSrc":"1987:3:40","nodeType":"YulIdentifier","src":"1987:3:40"},"nativeSrc":"1987:5:40","nodeType":"YulFunctionCall","src":"1987:5:40"},{"name":"target","nativeSrc":"1994:6:40","nodeType":"YulIdentifier","src":"1994:6:40"},{"name":"value","nativeSrc":"2002:5:40","nodeType":"YulIdentifier","src":"2002:5:40"},{"arguments":[{"name":"data","nativeSrc":"2013:4:40","nodeType":"YulIdentifier","src":"2013:4:40"},{"kind":"number","nativeSrc":"2019:4:40","nodeType":"YulLiteral","src":"2019:4:40","type":"","value":"0x20"}],"functionName":{"name":"add","nativeSrc":"2009:3:40","nodeType":"YulIdentifier","src":"2009:3:40"},"nativeSrc":"2009:15:40","nodeType":"YulFunctionCall","src":"2009:15:40"},{"arguments":[{"name":"data","nativeSrc":"2032:4:40","nodeType":"YulIdentifier","src":"2032:4:40"}],"functionName":{"name":"mload","nativeSrc":"2026:5:40","nodeType":"YulIdentifier","src":"2026:5:40"},"nativeSrc":"2026:11:40","nodeType":"YulFunctionCall","src":"2026:11:40"},{"kind":"number","nativeSrc":"2039:4:40","nodeType":"YulLiteral","src":"2039:4:40","type":"","value":"0x00"},{"kind":"number","nativeSrc":"2045:4:40","nodeType":"YulLiteral","src":"2045:4:40","type":"","value":"0x40"}],"functionName":{"name":"call","nativeSrc":"1982:4:40","nodeType":"YulIdentifier","src":"1982:4:40"},"nativeSrc":"1982:68:40","nodeType":"YulFunctionCall","src":"1982:68:40"},"variableNames":[{"name":"success","nativeSrc":"1971:7:40","nodeType":"YulIdentifier","src":"1971:7:40"}]},{"nativeSrc":"2063:22:40","nodeType":"YulAssignment","src":"2063:22:40","value":{"arguments":[{"kind":"number","nativeSrc":"2080:4:40","nodeType":"YulLiteral","src":"2080:4:40","type":"","value":"0x00"}],"functionName":{"name":"mload","nativeSrc":"2074:5:40","nodeType":"YulIdentifier","src":"2074:5:40"},"nativeSrc":"2074:11:40","nodeType":"YulFunctionCall","src":"2074:11:40"},"variableNames":[{"name":"result1","nativeSrc":"2063:7:40","nodeType":"YulIdentifier","src":"2063:7:40"}]},{"nativeSrc":"2098:22:40","nodeType":"YulAssignment","src":"2098:22:40","value":{"arguments":[{"kind":"number","nativeSrc":"2115:4:40","nodeType":"YulLiteral","src":"2115:4:40","type":"","value":"0x20"}],"functionName":{"name":"mload","nativeSrc":"2109:5:40","nodeType":"YulIdentifier","src":"2109:5:40"},"nativeSrc":"2109:11:40","nodeType":"YulFunctionCall","src":"2109:11:40"},"variableNames":[{"name":"result2","nativeSrc":"2098:7:40","nodeType":"YulIdentifier","src":"2098:7:40"}]}]},"evmVersion":"prague","externalReferences":[{"declaration":10370,"isOffset":false,"isSlot":false,"src":"2013:4:40","valueSize":1},{"declaration":10370,"isOffset":false,"isSlot":false,"src":"2032:4:40","valueSize":1},{"declaration":10375,"isOffset":false,"isSlot":false,"src":"2063:7:40","valueSize":1},{"declaration":10377,"isOffset":false,"isSlot":false,"src":"2098:7:40","valueSize":1},{"declaration":10373,"isOffset":false,"isSlot":false,"src":"1971:7:40","valueSize":1},{"declaration":10366,"isOffset":false,"isSlot":false,"src":"1994:6:40","valueSize":1},{"declaration":10368,"isOffset":false,"isSlot":false,"src":"2002:5:40","valueSize":1}],"flags":["memory-safe"],"id":10379,"nodeType":"InlineAssembly","src":"1932:198:40"}]},"documentation":{"id":10364,"nodeType":"StructuredDocumentation","src":"1647:97:40","text":"@dev Same as {callReturnBytes32Pair}, but allows to specify the value to be sent in the call."},"id":10381,"implemented":true,"kind":"function","modifiers":[],"name":"callReturn64Bytes","nameLocation":"1758:17:40","nodeType":"FunctionDefinition","parameters":{"id":10371,"nodeType":"ParameterList","parameters":[{"constant":false,"id":10366,"mutability":"mutable","name":"target","nameLocation":"1793:6:40","nodeType":"VariableDeclaration","scope":10381,"src":"1785:14:40","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":10365,"name":"address","nodeType":"ElementaryTypeName","src":"1785:7:40","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":10368,"mutability":"mutable","name":"value","nameLocation":"1817:5:40","nodeType":"VariableDeclaration","scope":10381,"src":"1809:13:40","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":10367,"name":"uint256","nodeType":"ElementaryTypeName","src":"1809:7:40","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":10370,"mutability":"mutable","name":"data","nameLocation":"1845:4:40","nodeType":"VariableDeclaration","scope":10381,"src":"1832:17:40","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes"},"typeName":{"id":10369,"name":"bytes","nodeType":"ElementaryTypeName","src":"1832:5:40","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"}],"src":"1775:80:40"},"returnParameters":{"id":10378,"nodeType":"ParameterList","parameters":[{"constant":false,"id":10373,"mutability":"mutable","name":"success","nameLocation":"1879:7:40","nodeType":"VariableDeclaration","scope":10381,"src":"1874:12:40","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":10372,"name":"bool","nodeType":"ElementaryTypeName","src":"1874:4:40","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"},{"constant":false,"id":10375,"mutability":"mutable","name":"result1","nameLocation":"1896:7:40","nodeType":"VariableDeclaration","scope":10381,"src":"1888:15:40","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":10374,"name":"bytes32","nodeType":"ElementaryTypeName","src":"1888:7:40","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"},{"constant":false,"id":10377,"mutability":"mutable","name":"result2","nameLocation":"1913:7:40","nodeType":"VariableDeclaration","scope":10381,"src":"1905:15:40","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":10376,"name":"bytes32","nodeType":"ElementaryTypeName","src":"1905:7:40","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"}],"src":"1873:48:40"},"scope":10467,"src":"1749:387:40","stateMutability":"nonpayable","virtual":false,"visibility":"internal"},{"body":{"id":10392,"nodeType":"Block","src":"2350:143:40","statements":[{"AST":{"nativeSrc":"2385:102:40","nodeType":"YulBlock","src":"2385:102:40","statements":[{"nativeSrc":"2399:78:40","nodeType":"YulAssignment","src":"2399:78:40","value":{"arguments":[{"arguments":[],"functionName":{"name":"gas","nativeSrc":"2421:3:40","nodeType":"YulIdentifier","src":"2421:3:40"},"nativeSrc":"2421:5:40","nodeType":"YulFunctionCall","src":"2421:5:40"},{"name":"target","nativeSrc":"2428:6:40","nodeType":"YulIdentifier","src":"2428:6:40"},{"arguments":[{"name":"data","nativeSrc":"2440:4:40","nodeType":"YulIdentifier","src":"2440:4:40"},{"kind":"number","nativeSrc":"2446:4:40","nodeType":"YulLiteral","src":"2446:4:40","type":"","value":"0x20"}],"functionName":{"name":"add","nativeSrc":"2436:3:40","nodeType":"YulIdentifier","src":"2436:3:40"},"nativeSrc":"2436:15:40","nodeType":"YulFunctionCall","src":"2436:15:40"},{"arguments":[{"name":"data","nativeSrc":"2459:4:40","nodeType":"YulIdentifier","src":"2459:4:40"}],"functionName":{"name":"mload","nativeSrc":"2453:5:40","nodeType":"YulIdentifier","src":"2453:5:40"},"nativeSrc":"2453:11:40","nodeType":"YulFunctionCall","src":"2453:11:40"},{"kind":"number","nativeSrc":"2466:4:40","nodeType":"YulLiteral","src":"2466:4:40","type":"","value":"0x00"},{"kind":"number","nativeSrc":"2472:4:40","nodeType":"YulLiteral","src":"2472:4:40","type":"","value":"0x00"}],"functionName":{"name":"staticcall","nativeSrc":"2410:10:40","nodeType":"YulIdentifier","src":"2410:10:40"},"nativeSrc":"2410:67:40","nodeType":"YulFunctionCall","src":"2410:67:40"},"variableNames":[{"name":"success","nativeSrc":"2399:7:40","nodeType":"YulIdentifier","src":"2399:7:40"}]}]},"evmVersion":"prague","externalReferences":[{"declaration":10386,"isOffset":false,"isSlot":false,"src":"2440:4:40","valueSize":1},{"declaration":10386,"isOffset":false,"isSlot":false,"src":"2459:4:40","valueSize":1},{"declaration":10389,"isOffset":false,"isSlot":false,"src":"2399:7:40","valueSize":1},{"declaration":10384,"isOffset":false,"isSlot":false,"src":"2428:6:40","valueSize":1}],"flags":["memory-safe"],"id":10391,"nodeType":"InlineAssembly","src":"2360:127:40"}]},"documentation":{"id":10382,"nodeType":"StructuredDocumentation","src":"2142:103:40","text":"@dev Performs a Solidity function call using a low level `staticcall` and ignoring the return data."},"id":10393,"implemented":true,"kind":"function","modifiers":[],"name":"staticcallNoReturn","nameLocation":"2259:18:40","nodeType":"FunctionDefinition","parameters":{"id":10387,"nodeType":"ParameterList","parameters":[{"constant":false,"id":10384,"mutability":"mutable","name":"target","nameLocation":"2286:6:40","nodeType":"VariableDeclaration","scope":10393,"src":"2278:14:40","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":10383,"name":"address","nodeType":"ElementaryTypeName","src":"2278:7:40","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":10386,"mutability":"mutable","name":"data","nameLocation":"2307:4:40","nodeType":"VariableDeclaration","scope":10393,"src":"2294:17:40","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes"},"typeName":{"id":10385,"name":"bytes","nodeType":"ElementaryTypeName","src":"2294:5:40","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"}],"src":"2277:35:40"},"returnParameters":{"id":10390,"nodeType":"ParameterList","parameters":[{"constant":false,"id":10389,"mutability":"mutable","name":"success","nameLocation":"2341:7:40","nodeType":"VariableDeclaration","scope":10393,"src":"2336:12:40","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":10388,"name":"bool","nodeType":"ElementaryTypeName","src":"2336:4:40","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"}],"src":"2335:14:40"},"scope":10467,"src":"2250:243:40","stateMutability":"view","virtual":false,"visibility":"internal"},{"body":{"id":10408,"nodeType":"Block","src":"3054:213:40","statements":[{"AST":{"nativeSrc":"3089:172:40","nodeType":"YulBlock","src":"3089:172:40","statements":[{"nativeSrc":"3103:78:40","nodeType":"YulAssignment","src":"3103:78:40","value":{"arguments":[{"arguments":[],"functionName":{"name":"gas","nativeSrc":"3125:3:40","nodeType":"YulIdentifier","src":"3125:3:40"},"nativeSrc":"3125:5:40","nodeType":"YulFunctionCall","src":"3125:5:40"},{"name":"target","nativeSrc":"3132:6:40","nodeType":"YulIdentifier","src":"3132:6:40"},{"arguments":[{"name":"data","nativeSrc":"3144:4:40","nodeType":"YulIdentifier","src":"3144:4:40"},{"kind":"number","nativeSrc":"3150:4:40","nodeType":"YulLiteral","src":"3150:4:40","type":"","value":"0x20"}],"functionName":{"name":"add","nativeSrc":"3140:3:40","nodeType":"YulIdentifier","src":"3140:3:40"},"nativeSrc":"3140:15:40","nodeType":"YulFunctionCall","src":"3140:15:40"},{"arguments":[{"name":"data","nativeSrc":"3163:4:40","nodeType":"YulIdentifier","src":"3163:4:40"}],"functionName":{"name":"mload","nativeSrc":"3157:5:40","nodeType":"YulIdentifier","src":"3157:5:40"},"nativeSrc":"3157:11:40","nodeType":"YulFunctionCall","src":"3157:11:40"},{"kind":"number","nativeSrc":"3170:4:40","nodeType":"YulLiteral","src":"3170:4:40","type":"","value":"0x00"},{"kind":"number","nativeSrc":"3176:4:40","nodeType":"YulLiteral","src":"3176:4:40","type":"","value":"0x40"}],"functionName":{"name":"staticcall","nativeSrc":"3114:10:40","nodeType":"YulIdentifier","src":"3114:10:40"},"nativeSrc":"3114:67:40","nodeType":"YulFunctionCall","src":"3114:67:40"},"variableNames":[{"name":"success","nativeSrc":"3103:7:40","nodeType":"YulIdentifier","src":"3103:7:40"}]},{"nativeSrc":"3194:22:40","nodeType":"YulAssignment","src":"3194:22:40","value":{"arguments":[{"kind":"number","nativeSrc":"3211:4:40","nodeType":"YulLiteral","src":"3211:4:40","type":"","value":"0x00"}],"functionName":{"name":"mload","nativeSrc":"3205:5:40","nodeType":"YulIdentifier","src":"3205:5:40"},"nativeSrc":"3205:11:40","nodeType":"YulFunctionCall","src":"3205:11:40"},"variableNames":[{"name":"result1","nativeSrc":"3194:7:40","nodeType":"YulIdentifier","src":"3194:7:40"}]},{"nativeSrc":"3229:22:40","nodeType":"YulAssignment","src":"3229:22:40","value":{"arguments":[{"kind":"number","nativeSrc":"3246:4:40","nodeType":"YulLiteral","src":"3246:4:40","type":"","value":"0x20"}],"functionName":{"name":"mload","nativeSrc":"3240:5:40","nodeType":"YulIdentifier","src":"3240:5:40"},"nativeSrc":"3240:11:40","nodeType":"YulFunctionCall","src":"3240:11:40"},"variableNames":[{"name":"result2","nativeSrc":"3229:7:40","nodeType":"YulIdentifier","src":"3229:7:40"}]}]},"evmVersion":"prague","externalReferences":[{"declaration":10398,"isOffset":false,"isSlot":false,"src":"3144:4:40","valueSize":1},{"declaration":10398,"isOffset":false,"isSlot":false,"src":"3163:4:40","valueSize":1},{"declaration":10403,"isOffset":false,"isSlot":false,"src":"3194:7:40","valueSize":1},{"declaration":10405,"isOffset":false,"isSlot":false,"src":"3229:7:40","valueSize":1},{"declaration":10401,"isOffset":false,"isSlot":false,"src":"3103:7:40","valueSize":1},{"declaration":10396,"isOffset":false,"isSlot":false,"src":"3132:6:40","valueSize":1}],"flags":["memory-safe"],"id":10407,"nodeType":"InlineAssembly","src":"3064:197:40"}]},"documentation":{"id":10394,"nodeType":"StructuredDocumentation","src":"2499:389:40","text":"@dev Performs a Solidity function call using a low level `staticcall` and returns the first 64 bytes of the result\n in the scratch space of memory. Useful for functions that return a tuple of single-word values.\n WARNING: Do not assume that the results are zero if `success` is false. Memory can be already allocated\n and this function doesn't zero it out."},"id":10409,"implemented":true,"kind":"function","modifiers":[],"name":"staticcallReturn64Bytes","nameLocation":"2902:23:40","nodeType":"FunctionDefinition","parameters":{"id":10399,"nodeType":"ParameterList","parameters":[{"constant":false,"id":10396,"mutability":"mutable","name":"target","nameLocation":"2943:6:40","nodeType":"VariableDeclaration","scope":10409,"src":"2935:14:40","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":10395,"name":"address","nodeType":"ElementaryTypeName","src":"2935:7:40","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":10398,"mutability":"mutable","name":"data","nameLocation":"2972:4:40","nodeType":"VariableDeclaration","scope":10409,"src":"2959:17:40","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes"},"typeName":{"id":10397,"name":"bytes","nodeType":"ElementaryTypeName","src":"2959:5:40","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"}],"src":"2925:57:40"},"returnParameters":{"id":10406,"nodeType":"ParameterList","parameters":[{"constant":false,"id":10401,"mutability":"mutable","name":"success","nameLocation":"3011:7:40","nodeType":"VariableDeclaration","scope":10409,"src":"3006:12:40","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":10400,"name":"bool","nodeType":"ElementaryTypeName","src":"3006:4:40","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"},{"constant":false,"id":10403,"mutability":"mutable","name":"result1","nameLocation":"3028:7:40","nodeType":"VariableDeclaration","scope":10409,"src":"3020:15:40","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":10402,"name":"bytes32","nodeType":"ElementaryTypeName","src":"3020:7:40","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"},{"constant":false,"id":10405,"mutability":"mutable","name":"result2","nameLocation":"3045:7:40","nodeType":"VariableDeclaration","scope":10409,"src":"3037:15:40","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":10404,"name":"bytes32","nodeType":"ElementaryTypeName","src":"3037:7:40","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"}],"src":"3005:48:40"},"scope":10467,"src":"2893:374:40","stateMutability":"view","virtual":false,"visibility":"internal"},{"body":{"id":10420,"nodeType":"Block","src":"3480:145:40","statements":[{"AST":{"nativeSrc":"3515:104:40","nodeType":"YulBlock","src":"3515:104:40","statements":[{"nativeSrc":"3529:80:40","nodeType":"YulAssignment","src":"3529:80:40","value":{"arguments":[{"arguments":[],"functionName":{"name":"gas","nativeSrc":"3553:3:40","nodeType":"YulIdentifier","src":"3553:3:40"},"nativeSrc":"3553:5:40","nodeType":"YulFunctionCall","src":"3553:5:40"},{"name":"target","nativeSrc":"3560:6:40","nodeType":"YulIdentifier","src":"3560:6:40"},{"arguments":[{"name":"data","nativeSrc":"3572:4:40","nodeType":"YulIdentifier","src":"3572:4:40"},{"kind":"number","nativeSrc":"3578:4:40","nodeType":"YulLiteral","src":"3578:4:40","type":"","value":"0x20"}],"functionName":{"name":"add","nativeSrc":"3568:3:40","nodeType":"YulIdentifier","src":"3568:3:40"},"nativeSrc":"3568:15:40","nodeType":"YulFunctionCall","src":"3568:15:40"},{"arguments":[{"name":"data","nativeSrc":"3591:4:40","nodeType":"YulIdentifier","src":"3591:4:40"}],"functionName":{"name":"mload","nativeSrc":"3585:5:40","nodeType":"YulIdentifier","src":"3585:5:40"},"nativeSrc":"3585:11:40","nodeType":"YulFunctionCall","src":"3585:11:40"},{"kind":"number","nativeSrc":"3598:4:40","nodeType":"YulLiteral","src":"3598:4:40","type":"","value":"0x00"},{"kind":"number","nativeSrc":"3604:4:40","nodeType":"YulLiteral","src":"3604:4:40","type":"","value":"0x00"}],"functionName":{"name":"delegatecall","nativeSrc":"3540:12:40","nodeType":"YulIdentifier","src":"3540:12:40"},"nativeSrc":"3540:69:40","nodeType":"YulFunctionCall","src":"3540:69:40"},"variableNames":[{"name":"success","nativeSrc":"3529:7:40","nodeType":"YulIdentifier","src":"3529:7:40"}]}]},"evmVersion":"prague","externalReferences":[{"declaration":10414,"isOffset":false,"isSlot":false,"src":"3572:4:40","valueSize":1},{"declaration":10414,"isOffset":false,"isSlot":false,"src":"3591:4:40","valueSize":1},{"declaration":10417,"isOffset":false,"isSlot":false,"src":"3529:7:40","valueSize":1},{"declaration":10412,"isOffset":false,"isSlot":false,"src":"3560:6:40","valueSize":1}],"flags":["memory-safe"],"id":10419,"nodeType":"InlineAssembly","src":"3490:129:40"}]},"documentation":{"id":10410,"nodeType":"StructuredDocumentation","src":"3273:105:40","text":"@dev Performs a Solidity function call using a low level `delegatecall` and ignoring the return data."},"id":10421,"implemented":true,"kind":"function","modifiers":[],"name":"delegatecallNoReturn","nameLocation":"3392:20:40","nodeType":"FunctionDefinition","parameters":{"id":10415,"nodeType":"ParameterList","parameters":[{"constant":false,"id":10412,"mutability":"mutable","name":"target","nameLocation":"3421:6:40","nodeType":"VariableDeclaration","scope":10421,"src":"3413:14:40","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":10411,"name":"address","nodeType":"ElementaryTypeName","src":"3413:7:40","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":10414,"mutability":"mutable","name":"data","nameLocation":"3442:4:40","nodeType":"VariableDeclaration","scope":10421,"src":"3429:17:40","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes"},"typeName":{"id":10413,"name":"bytes","nodeType":"ElementaryTypeName","src":"3429:5:40","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"}],"src":"3412:35:40"},"returnParameters":{"id":10418,"nodeType":"ParameterList","parameters":[{"constant":false,"id":10417,"mutability":"mutable","name":"success","nameLocation":"3471:7:40","nodeType":"VariableDeclaration","scope":10421,"src":"3466:12:40","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":10416,"name":"bool","nodeType":"ElementaryTypeName","src":"3466:4:40","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"}],"src":"3465:14:40"},"scope":10467,"src":"3383:242:40","stateMutability":"nonpayable","virtual":false,"visibility":"internal"},{"body":{"id":10436,"nodeType":"Block","src":"4185:215:40","statements":[{"AST":{"nativeSrc":"4220:174:40","nodeType":"YulBlock","src":"4220:174:40","statements":[{"nativeSrc":"4234:80:40","nodeType":"YulAssignment","src":"4234:80:40","value":{"arguments":[{"arguments":[],"functionName":{"name":"gas","nativeSrc":"4258:3:40","nodeType":"YulIdentifier","src":"4258:3:40"},"nativeSrc":"4258:5:40","nodeType":"YulFunctionCall","src":"4258:5:40"},{"name":"target","nativeSrc":"4265:6:40","nodeType":"YulIdentifier","src":"4265:6:40"},{"arguments":[{"name":"data","nativeSrc":"4277:4:40","nodeType":"YulIdentifier","src":"4277:4:40"},{"kind":"number","nativeSrc":"4283:4:40","nodeType":"YulLiteral","src":"4283:4:40","type":"","value":"0x20"}],"functionName":{"name":"add","nativeSrc":"4273:3:40","nodeType":"YulIdentifier","src":"4273:3:40"},"nativeSrc":"4273:15:40","nodeType":"YulFunctionCall","src":"4273:15:40"},{"arguments":[{"name":"data","nativeSrc":"4296:4:40","nodeType":"YulIdentifier","src":"4296:4:40"}],"functionName":{"name":"mload","nativeSrc":"4290:5:40","nodeType":"YulIdentifier","src":"4290:5:40"},"nativeSrc":"4290:11:40","nodeType":"YulFunctionCall","src":"4290:11:40"},{"kind":"number","nativeSrc":"4303:4:40","nodeType":"YulLiteral","src":"4303:4:40","type":"","value":"0x00"},{"kind":"number","nativeSrc":"4309:4:40","nodeType":"YulLiteral","src":"4309:4:40","type":"","value":"0x40"}],"functionName":{"name":"delegatecall","nativeSrc":"4245:12:40","nodeType":"YulIdentifier","src":"4245:12:40"},"nativeSrc":"4245:69:40","nodeType":"YulFunctionCall","src":"4245:69:40"},"variableNames":[{"name":"success","nativeSrc":"4234:7:40","nodeType":"YulIdentifier","src":"4234:7:40"}]},{"nativeSrc":"4327:22:40","nodeType":"YulAssignment","src":"4327:22:40","value":{"arguments":[{"kind":"number","nativeSrc":"4344:4:40","nodeType":"YulLiteral","src":"4344:4:40","type":"","value":"0x00"}],"functionName":{"name":"mload","nativeSrc":"4338:5:40","nodeType":"YulIdentifier","src":"4338:5:40"},"nativeSrc":"4338:11:40","nodeType":"YulFunctionCall","src":"4338:11:40"},"variableNames":[{"name":"result1","nativeSrc":"4327:7:40","nodeType":"YulIdentifier","src":"4327:7:40"}]},{"nativeSrc":"4362:22:40","nodeType":"YulAssignment","src":"4362:22:40","value":{"arguments":[{"kind":"number","nativeSrc":"4379:4:40","nodeType":"YulLiteral","src":"4379:4:40","type":"","value":"0x20"}],"functionName":{"name":"mload","nativeSrc":"4373:5:40","nodeType":"YulIdentifier","src":"4373:5:40"},"nativeSrc":"4373:11:40","nodeType":"YulFunctionCall","src":"4373:11:40"},"variableNames":[{"name":"result2","nativeSrc":"4362:7:40","nodeType":"YulIdentifier","src":"4362:7:40"}]}]},"evmVersion":"prague","externalReferences":[{"declaration":10426,"isOffset":false,"isSlot":false,"src":"4277:4:40","valueSize":1},{"declaration":10426,"isOffset":false,"isSlot":false,"src":"4296:4:40","valueSize":1},{"declaration":10431,"isOffset":false,"isSlot":false,"src":"4327:7:40","valueSize":1},{"declaration":10433,"isOffset":false,"isSlot":false,"src":"4362:7:40","valueSize":1},{"declaration":10429,"isOffset":false,"isSlot":false,"src":"4234:7:40","valueSize":1},{"declaration":10424,"isOffset":false,"isSlot":false,"src":"4265:6:40","valueSize":1}],"flags":["memory-safe"],"id":10435,"nodeType":"InlineAssembly","src":"4195:199:40"}]},"documentation":{"id":10422,"nodeType":"StructuredDocumentation","src":"3631:391:40","text":"@dev Performs a Solidity function call using a low level `delegatecall` and returns the first 64 bytes of the result\n in the scratch space of memory. Useful for functions that return a tuple of single-word values.\n WARNING: Do not assume that the results are zero if `success` is false. Memory can be already allocated\n and this function doesn't zero it out."},"id":10437,"implemented":true,"kind":"function","modifiers":[],"name":"delegatecallReturn64Bytes","nameLocation":"4036:25:40","nodeType":"FunctionDefinition","parameters":{"id":10427,"nodeType":"ParameterList","parameters":[{"constant":false,"id":10424,"mutability":"mutable","name":"target","nameLocation":"4079:6:40","nodeType":"VariableDeclaration","scope":10437,"src":"4071:14:40","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":10423,"name":"address","nodeType":"ElementaryTypeName","src":"4071:7:40","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":10426,"mutability":"mutable","name":"data","nameLocation":"4108:4:40","nodeType":"VariableDeclaration","scope":10437,"src":"4095:17:40","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes"},"typeName":{"id":10425,"name":"bytes","nodeType":"ElementaryTypeName","src":"4095:5:40","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"}],"src":"4061:57:40"},"returnParameters":{"id":10434,"nodeType":"ParameterList","parameters":[{"constant":false,"id":10429,"mutability":"mutable","name":"success","nameLocation":"4142:7:40","nodeType":"VariableDeclaration","scope":10437,"src":"4137:12:40","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":10428,"name":"bool","nodeType":"ElementaryTypeName","src":"4137:4:40","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"},{"constant":false,"id":10431,"mutability":"mutable","name":"result1","nameLocation":"4159:7:40","nodeType":"VariableDeclaration","scope":10437,"src":"4151:15:40","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":10430,"name":"bytes32","nodeType":"ElementaryTypeName","src":"4151:7:40","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"},{"constant":false,"id":10433,"mutability":"mutable","name":"result2","nameLocation":"4176:7:40","nodeType":"VariableDeclaration","scope":10437,"src":"4168:15:40","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":10432,"name":"bytes32","nodeType":"ElementaryTypeName","src":"4168:7:40","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"}],"src":"4136:48:40"},"scope":10467,"src":"4027:373:40","stateMutability":"nonpayable","virtual":false,"visibility":"internal"},{"body":{"id":10444,"nodeType":"Block","src":"4526:89:40","statements":[{"AST":{"nativeSrc":"4561:48:40","nodeType":"YulBlock","src":"4561:48:40","statements":[{"nativeSrc":"4575:24:40","nodeType":"YulAssignment","src":"4575:24:40","value":{"arguments":[],"functionName":{"name":"returndatasize","nativeSrc":"4583:14:40","nodeType":"YulIdentifier","src":"4583:14:40"},"nativeSrc":"4583:16:40","nodeType":"YulFunctionCall","src":"4583:16:40"},"variableNames":[{"name":"size","nativeSrc":"4575:4:40","nodeType":"YulIdentifier","src":"4575:4:40"}]}]},"evmVersion":"prague","externalReferences":[{"declaration":10441,"isOffset":false,"isSlot":false,"src":"4575:4:40","valueSize":1}],"flags":["memory-safe"],"id":10443,"nodeType":"InlineAssembly","src":"4536:73:40"}]},"documentation":{"id":10438,"nodeType":"StructuredDocumentation","src":"4406:52:40","text":"@dev Returns the size of the return data buffer."},"id":10445,"implemented":true,"kind":"function","modifiers":[],"name":"returnDataSize","nameLocation":"4472:14:40","nodeType":"FunctionDefinition","parameters":{"id":10439,"nodeType":"ParameterList","parameters":[],"src":"4486:2:40"},"returnParameters":{"id":10442,"nodeType":"ParameterList","parameters":[{"constant":false,"id":10441,"mutability":"mutable","name":"size","nameLocation":"4520:4:40","nodeType":"VariableDeclaration","scope":10445,"src":"4512:12:40","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":10440,"name":"uint256","nodeType":"ElementaryTypeName","src":"4512:7:40","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"4511:14:40"},"scope":10467,"src":"4463:152:40","stateMutability":"pure","virtual":false,"visibility":"internal"},{"body":{"id":10452,"nodeType":"Block","src":"4764:268:40","statements":[{"AST":{"nativeSrc":"4799:227:40","nodeType":"YulBlock","src":"4799:227:40","statements":[{"nativeSrc":"4813:21:40","nodeType":"YulAssignment","src":"4813:21:40","value":{"arguments":[{"kind":"number","nativeSrc":"4829:4:40","nodeType":"YulLiteral","src":"4829:4:40","type":"","value":"0x40"}],"functionName":{"name":"mload","nativeSrc":"4823:5:40","nodeType":"YulIdentifier","src":"4823:5:40"},"nativeSrc":"4823:11:40","nodeType":"YulFunctionCall","src":"4823:11:40"},"variableNames":[{"name":"result","nativeSrc":"4813:6:40","nodeType":"YulIdentifier","src":"4813:6:40"}]},{"expression":{"arguments":[{"name":"result","nativeSrc":"4854:6:40","nodeType":"YulIdentifier","src":"4854:6:40"},{"arguments":[],"functionName":{"name":"returndatasize","nativeSrc":"4862:14:40","nodeType":"YulIdentifier","src":"4862:14:40"},"nativeSrc":"4862:16:40","nodeType":"YulFunctionCall","src":"4862:16:40"}],"functionName":{"name":"mstore","nativeSrc":"4847:6:40","nodeType":"YulIdentifier","src":"4847:6:40"},"nativeSrc":"4847:32:40","nodeType":"YulFunctionCall","src":"4847:32:40"},"nativeSrc":"4847:32:40","nodeType":"YulExpressionStatement","src":"4847:32:40"},{"expression":{"arguments":[{"arguments":[{"name":"result","nativeSrc":"4911:6:40","nodeType":"YulIdentifier","src":"4911:6:40"},{"kind":"number","nativeSrc":"4919:4:40","nodeType":"YulLiteral","src":"4919:4:40","type":"","value":"0x20"}],"functionName":{"name":"add","nativeSrc":"4907:3:40","nodeType":"YulIdentifier","src":"4907:3:40"},"nativeSrc":"4907:17:40","nodeType":"YulFunctionCall","src":"4907:17:40"},{"kind":"number","nativeSrc":"4926:4:40","nodeType":"YulLiteral","src":"4926:4:40","type":"","value":"0x00"},{"arguments":[],"functionName":{"name":"returndatasize","nativeSrc":"4932:14:40","nodeType":"YulIdentifier","src":"4932:14:40"},"nativeSrc":"4932:16:40","nodeType":"YulFunctionCall","src":"4932:16:40"}],"functionName":{"name":"returndatacopy","nativeSrc":"4892:14:40","nodeType":"YulIdentifier","src":"4892:14:40"},"nativeSrc":"4892:57:40","nodeType":"YulFunctionCall","src":"4892:57:40"},"nativeSrc":"4892:57:40","nodeType":"YulExpressionStatement","src":"4892:57:40"},{"expression":{"arguments":[{"kind":"number","nativeSrc":"4969:4:40","nodeType":"YulLiteral","src":"4969:4:40","type":"","value":"0x40"},{"arguments":[{"name":"result","nativeSrc":"4979:6:40","nodeType":"YulIdentifier","src":"4979:6:40"},{"arguments":[{"kind":"number","nativeSrc":"4991:4:40","nodeType":"YulLiteral","src":"4991:4:40","type":"","value":"0x20"},{"arguments":[],"functionName":{"name":"returndatasize","nativeSrc":"4997:14:40","nodeType":"YulIdentifier","src":"4997:14:40"},"nativeSrc":"4997:16:40","nodeType":"YulFunctionCall","src":"4997:16:40"}],"functionName":{"name":"add","nativeSrc":"4987:3:40","nodeType":"YulIdentifier","src":"4987:3:40"},"nativeSrc":"4987:27:40","nodeType":"YulFunctionCall","src":"4987:27:40"}],"functionName":{"name":"add","nativeSrc":"4975:3:40","nodeType":"YulIdentifier","src":"4975:3:40"},"nativeSrc":"4975:40:40","nodeType":"YulFunctionCall","src":"4975:40:40"}],"functionName":{"name":"mstore","nativeSrc":"4962:6:40","nodeType":"YulIdentifier","src":"4962:6:40"},"nativeSrc":"4962:54:40","nodeType":"YulFunctionCall","src":"4962:54:40"},"nativeSrc":"4962:54:40","nodeType":"YulExpressionStatement","src":"4962:54:40"}]},"evmVersion":"prague","externalReferences":[{"declaration":10449,"isOffset":false,"isSlot":false,"src":"4813:6:40","valueSize":1},{"declaration":10449,"isOffset":false,"isSlot":false,"src":"4854:6:40","valueSize":1},{"declaration":10449,"isOffset":false,"isSlot":false,"src":"4911:6:40","valueSize":1},{"declaration":10449,"isOffset":false,"isSlot":false,"src":"4979:6:40","valueSize":1}],"flags":["memory-safe"],"id":10451,"nodeType":"InlineAssembly","src":"4774:252:40"}]},"documentation":{"id":10446,"nodeType":"StructuredDocumentation","src":"4621:72:40","text":"@dev Returns a buffer containing the return data from the last call."},"id":10453,"implemented":true,"kind":"function","modifiers":[],"name":"returnData","nameLocation":"4707:10:40","nodeType":"FunctionDefinition","parameters":{"id":10447,"nodeType":"ParameterList","parameters":[],"src":"4717:2:40"},"returnParameters":{"id":10450,"nodeType":"ParameterList","parameters":[{"constant":false,"id":10449,"mutability":"mutable","name":"result","nameLocation":"4756:6:40","nodeType":"VariableDeclaration","scope":10453,"src":"4743:19:40","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes"},"typeName":{"id":10448,"name":"bytes","nodeType":"ElementaryTypeName","src":"4743:5:40","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"}],"src":"4742:21:40"},"scope":10467,"src":"4698:334:40","stateMutability":"pure","virtual":false,"visibility":"internal"},{"body":{"id":10458,"nodeType":"Block","src":"5137:185:40","statements":[{"AST":{"nativeSrc":"5172:144:40","nodeType":"YulBlock","src":"5172:144:40","statements":[{"nativeSrc":"5186:22:40","nodeType":"YulVariableDeclaration","src":"5186:22:40","value":{"arguments":[{"kind":"number","nativeSrc":"5203:4:40","nodeType":"YulLiteral","src":"5203:4:40","type":"","value":"0x40"}],"functionName":{"name":"mload","nativeSrc":"5197:5:40","nodeType":"YulIdentifier","src":"5197:5:40"},"nativeSrc":"5197:11:40","nodeType":"YulFunctionCall","src":"5197:11:40"},"variables":[{"name":"fmp","nativeSrc":"5190:3:40","nodeType":"YulTypedName","src":"5190:3:40","type":""}]},{"expression":{"arguments":[{"name":"fmp","nativeSrc":"5236:3:40","nodeType":"YulIdentifier","src":"5236:3:40"},{"kind":"number","nativeSrc":"5241:4:40","nodeType":"YulLiteral","src":"5241:4:40","type":"","value":"0x00"},{"arguments":[],"functionName":{"name":"returndatasize","nativeSrc":"5247:14:40","nodeType":"YulIdentifier","src":"5247:14:40"},"nativeSrc":"5247:16:40","nodeType":"YulFunctionCall","src":"5247:16:40"}],"functionName":{"name":"returndatacopy","nativeSrc":"5221:14:40","nodeType":"YulIdentifier","src":"5221:14:40"},"nativeSrc":"5221:43:40","nodeType":"YulFunctionCall","src":"5221:43:40"},"nativeSrc":"5221:43:40","nodeType":"YulExpressionStatement","src":"5221:43:40"},{"expression":{"arguments":[{"name":"fmp","nativeSrc":"5284:3:40","nodeType":"YulIdentifier","src":"5284:3:40"},{"arguments":[],"functionName":{"name":"returndatasize","nativeSrc":"5289:14:40","nodeType":"YulIdentifier","src":"5289:14:40"},"nativeSrc":"5289:16:40","nodeType":"YulFunctionCall","src":"5289:16:40"}],"functionName":{"name":"revert","nativeSrc":"5277:6:40","nodeType":"YulIdentifier","src":"5277:6:40"},"nativeSrc":"5277:29:40","nodeType":"YulFunctionCall","src":"5277:29:40"},"nativeSrc":"5277:29:40","nodeType":"YulExpressionStatement","src":"5277:29:40"}]},"evmVersion":"prague","externalReferences":[],"flags":["memory-safe"],"id":10457,"nodeType":"InlineAssembly","src":"5147:169:40"}]},"documentation":{"id":10454,"nodeType":"StructuredDocumentation","src":"5038:56:40","text":"@dev Revert with the return data from the last call."},"id":10459,"implemented":true,"kind":"function","modifiers":[],"name":"bubbleRevert","nameLocation":"5108:12:40","nodeType":"FunctionDefinition","parameters":{"id":10455,"nodeType":"ParameterList","parameters":[],"src":"5120:2:40"},"returnParameters":{"id":10456,"nodeType":"ParameterList","parameters":[],"src":"5137:0:40"},"scope":10467,"src":"5099:223:40","stateMutability":"pure","virtual":false,"visibility":"internal"},{"body":{"id":10465,"nodeType":"Block","src":"5389:113:40","statements":[{"AST":{"nativeSrc":"5424:72:40","nodeType":"YulBlock","src":"5424:72:40","statements":[{"expression":{"arguments":[{"arguments":[{"name":"returndata","nativeSrc":"5449:10:40","nodeType":"YulIdentifier","src":"5449:10:40"},{"kind":"number","nativeSrc":"5461:4:40","nodeType":"YulLiteral","src":"5461:4:40","type":"","value":"0x20"}],"functionName":{"name":"add","nativeSrc":"5445:3:40","nodeType":"YulIdentifier","src":"5445:3:40"},"nativeSrc":"5445:21:40","nodeType":"YulFunctionCall","src":"5445:21:40"},{"arguments":[{"name":"returndata","nativeSrc":"5474:10:40","nodeType":"YulIdentifier","src":"5474:10:40"}],"functionName":{"name":"mload","nativeSrc":"5468:5:40","nodeType":"YulIdentifier","src":"5468:5:40"},"nativeSrc":"5468:17:40","nodeType":"YulFunctionCall","src":"5468:17:40"}],"functionName":{"name":"revert","nativeSrc":"5438:6:40","nodeType":"YulIdentifier","src":"5438:6:40"},"nativeSrc":"5438:48:40","nodeType":"YulFunctionCall","src":"5438:48:40"},"nativeSrc":"5438:48:40","nodeType":"YulExpressionStatement","src":"5438:48:40"}]},"evmVersion":"prague","externalReferences":[{"declaration":10461,"isOffset":false,"isSlot":false,"src":"5449:10:40","valueSize":1},{"declaration":10461,"isOffset":false,"isSlot":false,"src":"5474:10:40","valueSize":1}],"flags":["memory-safe"],"id":10464,"nodeType":"InlineAssembly","src":"5399:97:40"}]},"id":10466,"implemented":true,"kind":"function","modifiers":[],"name":"bubbleRevert","nameLocation":"5337:12:40","nodeType":"FunctionDefinition","parameters":{"id":10462,"nodeType":"ParameterList","parameters":[{"constant":false,"id":10461,"mutability":"mutable","name":"returndata","nameLocation":"5363:10:40","nodeType":"VariableDeclaration","scope":10466,"src":"5350:23:40","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes"},"typeName":{"id":10460,"name":"bytes","nodeType":"ElementaryTypeName","src":"5350:5:40","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"}],"src":"5349:25:40"},"returnParameters":{"id":10463,"nodeType":"ParameterList","parameters":[],"src":"5389:0:40"},"scope":10467,"src":"5328:174:40","stateMutability":"pure","virtual":false,"visibility":"internal"}],"scope":10468,"src":"421:5083:40","usedErrors":[],"usedEvents":[]}],"src":"106:5399:40"},"id":40},"@openzeppelin/contracts/utils/Memory.sol":{"ast":{"absolutePath":"@openzeppelin/contracts/utils/Memory.sol","exportedSymbols":{"Math":[12726],"Memory":[10769],"Panic":[10908]},"id":10770,"license":"MIT","nodeType":"SourceUnit","nodes":[{"id":10469,"literals":["solidity","^","0.8",".24"],"nodeType":"PragmaDirective","src":"100:24:41"},{"absolutePath":"@openzeppelin/contracts/utils/Panic.sol","file":"./Panic.sol","id":10471,"nameLocation":"-1:-1:-1","nodeType":"ImportDirective","scope":10770,"sourceUnit":10909,"src":"126:34:41","symbolAliases":[{"foreign":{"id":10470,"name":"Panic","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10908,"src":"134:5:41","typeDescriptions":{}},"nameLocation":"-1:-1:-1"}],"unitAlias":""},{"absolutePath":"@openzeppelin/contracts/utils/math/Math.sol","file":"./math/Math.sol","id":10473,"nameLocation":"-1:-1:-1","nodeType":"ImportDirective","scope":10770,"sourceUnit":12727,"src":"161:37:41","symbolAliases":[{"foreign":{"id":10472,"name":"Math","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":12726,"src":"169:4:41","typeDescriptions":{}},"nameLocation":"-1:-1:-1"}],"unitAlias":""},{"abstract":false,"baseContracts":[],"canonicalName":"Memory","contractDependencies":[],"contractKind":"library","documentation":{"id":10474,"nodeType":"StructuredDocumentation","src":"200:579:41","text":" @dev Utilities to manipulate memory.\n Memory is a contiguous and dynamic byte array in which Solidity stores non-primitive types.\n This library provides functions to manipulate pointers to this dynamic array and work with slices of it.\n Slices provide a view into a portion of memory without copying data, enabling efficient substring operations.\n WARNING: When manipulating memory pointers or slices, make sure to follow the Solidity documentation\n guidelines for https://docs.soliditylang.org/en/v0.8.20/assembly.html#memory-safety[Memory Safety]."},"fullyImplemented":true,"id":10769,"linearizedBaseContracts":[10769],"name":"Memory","nameLocation":"788:6:41","nodeType":"ContractDefinition","nodes":[{"canonicalName":"Memory.Pointer","id":10476,"name":"Pointer","nameLocation":"806:7:41","nodeType":"UserDefinedValueTypeDefinition","src":"801:24:41","underlyingType":{"id":10475,"name":"bytes32","nodeType":"ElementaryTypeName","src":"817:7:41","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}}},{"body":{"id":10484,"nodeType":"Block","src":"963:83:41","statements":[{"AST":{"nativeSrc":"998:42:41","nodeType":"YulBlock","src":"998:42:41","statements":[{"nativeSrc":"1012:18:41","nodeType":"YulAssignment","src":"1012:18:41","value":{"arguments":[{"kind":"number","nativeSrc":"1025:4:41","nodeType":"YulLiteral","src":"1025:4:41","type":"","value":"0x40"}],"functionName":{"name":"mload","nativeSrc":"1019:5:41","nodeType":"YulIdentifier","src":"1019:5:41"},"nativeSrc":"1019:11:41","nodeType":"YulFunctionCall","src":"1019:11:41"},"variableNames":[{"name":"ptr","nativeSrc":"1012:3:41","nodeType":"YulIdentifier","src":"1012:3:41"}]}]},"evmVersion":"prague","externalReferences":[{"declaration":10481,"isOffset":false,"isSlot":false,"src":"1012:3:41","valueSize":1}],"flags":["memory-safe"],"id":10483,"nodeType":"InlineAssembly","src":"973:67:41"}]},"documentation":{"id":10477,"nodeType":"StructuredDocumentation","src":"831:59:41","text":"@dev Returns a `Pointer` to the current free `Pointer`."},"id":10485,"implemented":true,"kind":"function","modifiers":[],"name":"getFreeMemoryPointer","nameLocation":"904:20:41","nodeType":"FunctionDefinition","parameters":{"id":10478,"nodeType":"ParameterList","parameters":[],"src":"924:2:41"},"returnParameters":{"id":10482,"nodeType":"ParameterList","parameters":[{"constant":false,"id":10481,"mutability":"mutable","name":"ptr","nameLocation":"958:3:41","nodeType":"VariableDeclaration","scope":10485,"src":"950:11:41","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_userDefinedValueType$_Pointer_$10476","typeString":"Memory.Pointer"},"typeName":{"id":10480,"nodeType":"UserDefinedTypeName","pathNode":{"id":10479,"name":"Pointer","nameLocations":["950:7:41"],"nodeType":"IdentifierPath","referencedDeclaration":10476,"src":"950:7:41"},"referencedDeclaration":10476,"src":"950:7:41","typeDescriptions":{"typeIdentifier":"t_userDefinedValueType$_Pointer_$10476","typeString":"Memory.Pointer"}},"visibility":"internal"}],"src":"949:13:41"},"scope":10769,"src":"895:151:41","stateMutability":"pure","virtual":false,"visibility":"internal"},{"body":{"id":10493,"nodeType":"Block","src":"1255:82:41","statements":[{"AST":{"nativeSrc":"1290:41:41","nodeType":"YulBlock","src":"1290:41:41","statements":[{"expression":{"arguments":[{"kind":"number","nativeSrc":"1311:4:41","nodeType":"YulLiteral","src":"1311:4:41","type":"","value":"0x40"},{"name":"ptr","nativeSrc":"1317:3:41","nodeType":"YulIdentifier","src":"1317:3:41"}],"functionName":{"name":"mstore","nativeSrc":"1304:6:41","nodeType":"YulIdentifier","src":"1304:6:41"},"nativeSrc":"1304:17:41","nodeType":"YulFunctionCall","src":"1304:17:41"},"nativeSrc":"1304:17:41","nodeType":"YulExpressionStatement","src":"1304:17:41"}]},"evmVersion":"prague","externalReferences":[{"declaration":10489,"isOffset":false,"isSlot":false,"src":"1317:3:41","valueSize":1}],"flags":["memory-safe"],"id":10492,"nodeType":"InlineAssembly","src":"1265:66:41"}]},"documentation":{"id":10486,"nodeType":"StructuredDocumentation","src":"1052:141:41","text":" @dev Sets the free `Pointer` to a specific value.\n WARNING: Everything after the pointer may be overwritten.*"},"id":10494,"implemented":true,"kind":"function","modifiers":[],"name":"setFreeMemoryPointer","nameLocation":"1207:20:41","nodeType":"FunctionDefinition","parameters":{"id":10490,"nodeType":"ParameterList","parameters":[{"constant":false,"id":10489,"mutability":"mutable","name":"ptr","nameLocation":"1236:3:41","nodeType":"VariableDeclaration","scope":10494,"src":"1228:11:41","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_userDefinedValueType$_Pointer_$10476","typeString":"Memory.Pointer"},"typeName":{"id":10488,"nodeType":"UserDefinedTypeName","pathNode":{"id":10487,"name":"Pointer","nameLocations":["1228:7:41"],"nodeType":"IdentifierPath","referencedDeclaration":10476,"src":"1228:7:41"},"referencedDeclaration":10476,"src":"1228:7:41","typeDescriptions":{"typeIdentifier":"t_userDefinedValueType$_Pointer_$10476","typeString":"Memory.Pointer"}},"visibility":"internal"}],"src":"1227:13:41"},"returnParameters":{"id":10491,"nodeType":"ParameterList","parameters":[],"src":"1255:0:41"},"scope":10769,"src":"1198:139:41","stateMutability":"pure","virtual":false,"visibility":"internal"},{"body":{"id":10508,"nodeType":"Block","src":"1504:43:41","statements":[{"expression":{"arguments":[{"id":10505,"name":"ptr","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10498,"src":"1536:3:41","typeDescriptions":{"typeIdentifier":"t_userDefinedValueType$_Pointer_$10476","typeString":"Memory.Pointer"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_userDefinedValueType$_Pointer_$10476","typeString":"Memory.Pointer"}],"expression":{"id":10503,"name":"Pointer","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10476,"src":"1521:7:41","typeDescriptions":{"typeIdentifier":"t_type$_t_userDefinedValueType$_Pointer_$10476_$","typeString":"type(Memory.Pointer)"}},"id":10504,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberLocation":"1529:6:41","memberName":"unwrap","nodeType":"MemberAccess","src":"1521:14:41","typeDescriptions":{"typeIdentifier":"t_function_unwrap_pure$_t_userDefinedValueType$_Pointer_$10476_$returns$_t_bytes32_$","typeString":"function (Memory.Pointer) pure returns (bytes32)"}},"id":10506,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"1521:19:41","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"functionReturnParameters":10502,"id":10507,"nodeType":"Return","src":"1514:26:41"}]},"documentation":{"id":10495,"nodeType":"StructuredDocumentation","src":"1343:92:41","text":"@dev `Pointer` to `bytes32`. Expects a pointer to a properly ABI-encoded `bytes` object."},"id":10509,"implemented":true,"kind":"function","modifiers":[],"name":"asBytes32","nameLocation":"1449:9:41","nodeType":"FunctionDefinition","parameters":{"id":10499,"nodeType":"ParameterList","parameters":[{"constant":false,"id":10498,"mutability":"mutable","name":"ptr","nameLocation":"1467:3:41","nodeType":"VariableDeclaration","scope":10509,"src":"1459:11:41","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_userDefinedValueType$_Pointer_$10476","typeString":"Memory.Pointer"},"typeName":{"id":10497,"nodeType":"UserDefinedTypeName","pathNode":{"id":10496,"name":"Pointer","nameLocations":["1459:7:41"],"nodeType":"IdentifierPath","referencedDeclaration":10476,"src":"1459:7:41"},"referencedDeclaration":10476,"src":"1459:7:41","typeDescriptions":{"typeIdentifier":"t_userDefinedValueType$_Pointer_$10476","typeString":"Memory.Pointer"}},"visibility":"internal"}],"src":"1458:13:41"},"returnParameters":{"id":10502,"nodeType":"ParameterList","parameters":[{"constant":false,"id":10501,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":10509,"src":"1495:7:41","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":10500,"name":"bytes32","nodeType":"ElementaryTypeName","src":"1495:7:41","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"}],"src":"1494:9:41"},"scope":10769,"src":"1440:107:41","stateMutability":"pure","virtual":false,"visibility":"internal"},{"body":{"id":10523,"nodeType":"Block","src":"1716:43:41","statements":[{"expression":{"arguments":[{"id":10520,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10512,"src":"1746:5:41","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes32","typeString":"bytes32"}],"expression":{"id":10518,"name":"Pointer","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10476,"src":"1733:7:41","typeDescriptions":{"typeIdentifier":"t_type$_t_userDefinedValueType$_Pointer_$10476_$","typeString":"type(Memory.Pointer)"}},"id":10519,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberLocation":"1741:4:41","memberName":"wrap","nodeType":"MemberAccess","src":"1733:12:41","typeDescriptions":{"typeIdentifier":"t_function_wrap_pure$_t_bytes32_$returns$_t_userDefinedValueType$_Pointer_$10476_$","typeString":"function (bytes32) pure returns (Memory.Pointer)"}},"id":10521,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"1733:19:41","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_userDefinedValueType$_Pointer_$10476","typeString":"Memory.Pointer"}},"functionReturnParameters":10517,"id":10522,"nodeType":"Return","src":"1726:26:41"}]},"documentation":{"id":10510,"nodeType":"StructuredDocumentation","src":"1553:92:41","text":"@dev `bytes32` to `Pointer`. Expects a pointer to a properly ABI-encoded `bytes` object."},"id":10524,"implemented":true,"kind":"function","modifiers":[],"name":"asPointer","nameLocation":"1659:9:41","nodeType":"FunctionDefinition","parameters":{"id":10513,"nodeType":"ParameterList","parameters":[{"constant":false,"id":10512,"mutability":"mutable","name":"value","nameLocation":"1677:5:41","nodeType":"VariableDeclaration","scope":10524,"src":"1669:13:41","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":10511,"name":"bytes32","nodeType":"ElementaryTypeName","src":"1669:7:41","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"}],"src":"1668:15:41"},"returnParameters":{"id":10517,"nodeType":"ParameterList","parameters":[{"constant":false,"id":10516,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":10524,"src":"1707:7:41","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_userDefinedValueType$_Pointer_$10476","typeString":"Memory.Pointer"},"typeName":{"id":10515,"nodeType":"UserDefinedTypeName","pathNode":{"id":10514,"name":"Pointer","nameLocations":["1707:7:41"],"nodeType":"IdentifierPath","referencedDeclaration":10476,"src":"1707:7:41"},"referencedDeclaration":10476,"src":"1707:7:41","typeDescriptions":{"typeIdentifier":"t_userDefinedValueType$_Pointer_$10476","typeString":"Memory.Pointer"}},"visibility":"internal"}],"src":"1706:9:41"},"scope":10769,"src":"1650:109:41","stateMutability":"pure","virtual":false,"visibility":"internal"},{"body":{"id":10552,"nodeType":"Block","src":"1898:84:41","statements":[{"expression":{"arguments":[{"arguments":[{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":10548,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"arguments":[{"arguments":[{"id":10544,"name":"ptr","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10528,"src":"1959:3:41","typeDescriptions":{"typeIdentifier":"t_userDefinedValueType$_Pointer_$10476","typeString":"Memory.Pointer"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_userDefinedValueType$_Pointer_$10476","typeString":"Memory.Pointer"}],"expression":{"id":10542,"name":"Pointer","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10476,"src":"1944:7:41","typeDescriptions":{"typeIdentifier":"t_type$_t_userDefinedValueType$_Pointer_$10476_$","typeString":"type(Memory.Pointer)"}},"id":10543,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberLocation":"1952:6:41","memberName":"unwrap","nodeType":"MemberAccess","src":"1944:14:41","typeDescriptions":{"typeIdentifier":"t_function_unwrap_pure$_t_userDefinedValueType$_Pointer_$10476_$returns$_t_bytes32_$","typeString":"function (Memory.Pointer) pure returns (bytes32)"}},"id":10545,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"1944:19:41","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes32","typeString":"bytes32"}],"id":10541,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"1936:7:41","typeDescriptions":{"typeIdentifier":"t_type$_t_uint256_$","typeString":"type(uint256)"},"typeName":{"id":10540,"name":"uint256","nodeType":"ElementaryTypeName","src":"1936:7:41","typeDescriptions":{}}},"id":10546,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"1936:28:41","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"+","rightExpression":{"id":10547,"name":"offset","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10530,"src":"1967:6:41","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"1936:37:41","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":10539,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"1928:7:41","typeDescriptions":{"typeIdentifier":"t_type$_t_bytes32_$","typeString":"type(bytes32)"},"typeName":{"id":10538,"name":"bytes32","nodeType":"ElementaryTypeName","src":"1928:7:41","typeDescriptions":{}}},"id":10549,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"1928:46:41","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes32","typeString":"bytes32"}],"expression":{"id":10536,"name":"Pointer","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10476,"src":"1915:7:41","typeDescriptions":{"typeIdentifier":"t_type$_t_userDefinedValueType$_Pointer_$10476_$","typeString":"type(Memory.Pointer)"}},"id":10537,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberLocation":"1923:4:41","memberName":"wrap","nodeType":"MemberAccess","src":"1915:12:41","typeDescriptions":{"typeIdentifier":"t_function_wrap_pure$_t_bytes32_$returns$_t_userDefinedValueType$_Pointer_$10476_$","typeString":"function (bytes32) pure returns (Memory.Pointer)"}},"id":10550,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"1915:60:41","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_userDefinedValueType$_Pointer_$10476","typeString":"Memory.Pointer"}},"functionReturnParameters":10535,"id":10551,"nodeType":"Return","src":"1908:67:41"}]},"documentation":{"id":10525,"nodeType":"StructuredDocumentation","src":"1765:50:41","text":"@dev Move a pointer forward by a given offset."},"id":10553,"implemented":true,"kind":"function","modifiers":[],"name":"forward","nameLocation":"1829:7:41","nodeType":"FunctionDefinition","parameters":{"id":10531,"nodeType":"ParameterList","parameters":[{"constant":false,"id":10528,"mutability":"mutable","name":"ptr","nameLocation":"1845:3:41","nodeType":"VariableDeclaration","scope":10553,"src":"1837:11:41","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_userDefinedValueType$_Pointer_$10476","typeString":"Memory.Pointer"},"typeName":{"id":10527,"nodeType":"UserDefinedTypeName","pathNode":{"id":10526,"name":"Pointer","nameLocations":["1837:7:41"],"nodeType":"IdentifierPath","referencedDeclaration":10476,"src":"1837:7:41"},"referencedDeclaration":10476,"src":"1837:7:41","typeDescriptions":{"typeIdentifier":"t_userDefinedValueType$_Pointer_$10476","typeString":"Memory.Pointer"}},"visibility":"internal"},{"constant":false,"id":10530,"mutability":"mutable","name":"offset","nameLocation":"1858:6:41","nodeType":"VariableDeclaration","scope":10553,"src":"1850:14:41","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":10529,"name":"uint256","nodeType":"ElementaryTypeName","src":"1850:7:41","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"1836:29:41"},"returnParameters":{"id":10535,"nodeType":"ParameterList","parameters":[{"constant":false,"id":10534,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":10553,"src":"1889:7:41","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_userDefinedValueType$_Pointer_$10476","typeString":"Memory.Pointer"},"typeName":{"id":10533,"nodeType":"UserDefinedTypeName","pathNode":{"id":10532,"name":"Pointer","nameLocations":["1889:7:41"],"nodeType":"IdentifierPath","referencedDeclaration":10476,"src":"1889:7:41"},"referencedDeclaration":10476,"src":"1889:7:41","typeDescriptions":{"typeIdentifier":"t_userDefinedValueType$_Pointer_$10476","typeString":"Memory.Pointer"}},"visibility":"internal"}],"src":"1888:9:41"},"scope":10769,"src":"1820:162:41","stateMutability":"pure","virtual":false,"visibility":"internal"},{"body":{"id":10575,"nodeType":"Block","src":"2114:68:41","statements":[{"expression":{"commonType":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"id":10573,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"arguments":[{"id":10567,"name":"ptr1","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10557,"src":"2146:4:41","typeDescriptions":{"typeIdentifier":"t_userDefinedValueType$_Pointer_$10476","typeString":"Memory.Pointer"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_userDefinedValueType$_Pointer_$10476","typeString":"Memory.Pointer"}],"expression":{"id":10565,"name":"Pointer","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10476,"src":"2131:7:41","typeDescriptions":{"typeIdentifier":"t_type$_t_userDefinedValueType$_Pointer_$10476_$","typeString":"type(Memory.Pointer)"}},"id":10566,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberLocation":"2139:6:41","memberName":"unwrap","nodeType":"MemberAccess","src":"2131:14:41","typeDescriptions":{"typeIdentifier":"t_function_unwrap_pure$_t_userDefinedValueType$_Pointer_$10476_$returns$_t_bytes32_$","typeString":"function (Memory.Pointer) pure returns (bytes32)"}},"id":10568,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"2131:20:41","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"arguments":[{"id":10571,"name":"ptr2","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10560,"src":"2170:4:41","typeDescriptions":{"typeIdentifier":"t_userDefinedValueType$_Pointer_$10476","typeString":"Memory.Pointer"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_userDefinedValueType$_Pointer_$10476","typeString":"Memory.Pointer"}],"expression":{"id":10569,"name":"Pointer","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10476,"src":"2155:7:41","typeDescriptions":{"typeIdentifier":"t_type$_t_userDefinedValueType$_Pointer_$10476_$","typeString":"type(Memory.Pointer)"}},"id":10570,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberLocation":"2163:6:41","memberName":"unwrap","nodeType":"MemberAccess","src":"2155:14:41","typeDescriptions":{"typeIdentifier":"t_function_unwrap_pure$_t_userDefinedValueType$_Pointer_$10476_$returns$_t_bytes32_$","typeString":"function (Memory.Pointer) pure returns (bytes32)"}},"id":10572,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"2155:20:41","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"src":"2131:44:41","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"functionReturnParameters":10564,"id":10574,"nodeType":"Return","src":"2124:51:41"}]},"documentation":{"id":10554,"nodeType":"StructuredDocumentation","src":"1988:49:41","text":"@dev Equality comparator for memory pointers."},"id":10576,"implemented":true,"kind":"function","modifiers":[],"name":"equal","nameLocation":"2051:5:41","nodeType":"FunctionDefinition","parameters":{"id":10561,"nodeType":"ParameterList","parameters":[{"constant":false,"id":10557,"mutability":"mutable","name":"ptr1","nameLocation":"2065:4:41","nodeType":"VariableDeclaration","scope":10576,"src":"2057:12:41","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_userDefinedValueType$_Pointer_$10476","typeString":"Memory.Pointer"},"typeName":{"id":10556,"nodeType":"UserDefinedTypeName","pathNode":{"id":10555,"name":"Pointer","nameLocations":["2057:7:41"],"nodeType":"IdentifierPath","referencedDeclaration":10476,"src":"2057:7:41"},"referencedDeclaration":10476,"src":"2057:7:41","typeDescriptions":{"typeIdentifier":"t_userDefinedValueType$_Pointer_$10476","typeString":"Memory.Pointer"}},"visibility":"internal"},{"constant":false,"id":10560,"mutability":"mutable","name":"ptr2","nameLocation":"2079:4:41","nodeType":"VariableDeclaration","scope":10576,"src":"2071:12:41","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_userDefinedValueType$_Pointer_$10476","typeString":"Memory.Pointer"},"typeName":{"id":10559,"nodeType":"UserDefinedTypeName","pathNode":{"id":10558,"name":"Pointer","nameLocations":["2071:7:41"],"nodeType":"IdentifierPath","referencedDeclaration":10476,"src":"2071:7:41"},"referencedDeclaration":10476,"src":"2071:7:41","typeDescriptions":{"typeIdentifier":"t_userDefinedValueType$_Pointer_$10476","typeString":"Memory.Pointer"}},"visibility":"internal"}],"src":"2056:28:41"},"returnParameters":{"id":10564,"nodeType":"ParameterList","parameters":[{"constant":false,"id":10563,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":10576,"src":"2108:4:41","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":10562,"name":"bool","nodeType":"ElementaryTypeName","src":"2108:4:41","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"}],"src":"2107:6:41"},"scope":10769,"src":"2042:140:41","stateMutability":"pure","virtual":false,"visibility":"internal"},{"canonicalName":"Memory.Slice","id":10578,"name":"Slice","nameLocation":"2193:5:41","nodeType":"UserDefinedValueTypeDefinition","src":"2188:22:41","underlyingType":{"id":10577,"name":"bytes32","nodeType":"ElementaryTypeName","src":"2202:7:41","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}}},{"body":{"id":10588,"nodeType":"Block","src":"2357:117:41","statements":[{"AST":{"nativeSrc":"2392:76:41","nodeType":"YulBlock","src":"2392:76:41","statements":[{"nativeSrc":"2406:52:41","nodeType":"YulAssignment","src":"2406:52:41","value":{"arguments":[{"arguments":[{"kind":"number","nativeSrc":"2423:3:41","nodeType":"YulLiteral","src":"2423:3:41","type":"","value":"128"},{"arguments":[{"name":"self","nativeSrc":"2434:4:41","nodeType":"YulIdentifier","src":"2434:4:41"}],"functionName":{"name":"mload","nativeSrc":"2428:5:41","nodeType":"YulIdentifier","src":"2428:5:41"},"nativeSrc":"2428:11:41","nodeType":"YulFunctionCall","src":"2428:11:41"}],"functionName":{"name":"shl","nativeSrc":"2419:3:41","nodeType":"YulIdentifier","src":"2419:3:41"},"nativeSrc":"2419:21:41","nodeType":"YulFunctionCall","src":"2419:21:41"},{"arguments":[{"name":"self","nativeSrc":"2446:4:41","nodeType":"YulIdentifier","src":"2446:4:41"},{"kind":"number","nativeSrc":"2452:4:41","nodeType":"YulLiteral","src":"2452:4:41","type":"","value":"0x20"}],"functionName":{"name":"add","nativeSrc":"2442:3:41","nodeType":"YulIdentifier","src":"2442:3:41"},"nativeSrc":"2442:15:41","nodeType":"YulFunctionCall","src":"2442:15:41"}],"functionName":{"name":"or","nativeSrc":"2416:2:41","nodeType":"YulIdentifier","src":"2416:2:41"},"nativeSrc":"2416:42:41","nodeType":"YulFunctionCall","src":"2416:42:41"},"variableNames":[{"name":"result","nativeSrc":"2406:6:41","nodeType":"YulIdentifier","src":"2406:6:41"}]}]},"evmVersion":"prague","externalReferences":[{"declaration":10585,"isOffset":false,"isSlot":false,"src":"2406:6:41","valueSize":1},{"declaration":10581,"isOffset":false,"isSlot":false,"src":"2434:4:41","valueSize":1},{"declaration":10581,"isOffset":false,"isSlot":false,"src":"2446:4:41","valueSize":1}],"flags":["memory-safe"],"id":10587,"nodeType":"InlineAssembly","src":"2367:101:41"}]},"documentation":{"id":10579,"nodeType":"StructuredDocumentation","src":"2216:63:41","text":"@dev Get a slice representation of a bytes object in memory"},"id":10589,"implemented":true,"kind":"function","modifiers":[],"name":"asSlice","nameLocation":"2293:7:41","nodeType":"FunctionDefinition","parameters":{"id":10582,"nodeType":"ParameterList","parameters":[{"constant":false,"id":10581,"mutability":"mutable","name":"self","nameLocation":"2314:4:41","nodeType":"VariableDeclaration","scope":10589,"src":"2301:17:41","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes"},"typeName":{"id":10580,"name":"bytes","nodeType":"ElementaryTypeName","src":"2301:5:41","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"}],"src":"2300:19:41"},"returnParameters":{"id":10586,"nodeType":"ParameterList","parameters":[{"constant":false,"id":10585,"mutability":"mutable","name":"result","nameLocation":"2349:6:41","nodeType":"VariableDeclaration","scope":10589,"src":"2343:12:41","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_userDefinedValueType$_Slice_$10578","typeString":"Memory.Slice"},"typeName":{"id":10584,"nodeType":"UserDefinedTypeName","pathNode":{"id":10583,"name":"Slice","nameLocations":["2343:5:41"],"nodeType":"IdentifierPath","referencedDeclaration":10578,"src":"2343:5:41"},"referencedDeclaration":10578,"src":"2343:5:41","typeDescriptions":{"typeIdentifier":"t_userDefinedValueType$_Slice_$10578","typeString":"Memory.Slice"}},"visibility":"internal"}],"src":"2342:14:41"},"scope":10769,"src":"2284:190:41","stateMutability":"pure","virtual":false,"visibility":"internal"},{"body":{"id":10599,"nodeType":"Block","src":"2639:89:41","statements":[{"AST":{"nativeSrc":"2674:48:41","nodeType":"YulBlock","src":"2674:48:41","statements":[{"nativeSrc":"2688:24:41","nodeType":"YulAssignment","src":"2688:24:41","value":{"arguments":[{"kind":"number","nativeSrc":"2702:3:41","nodeType":"YulLiteral","src":"2702:3:41","type":"","value":"128"},{"name":"self","nativeSrc":"2707:4:41","nodeType":"YulIdentifier","src":"2707:4:41"}],"functionName":{"name":"shr","nativeSrc":"2698:3:41","nodeType":"YulIdentifier","src":"2698:3:41"},"nativeSrc":"2698:14:41","nodeType":"YulFunctionCall","src":"2698:14:41"},"variableNames":[{"name":"result","nativeSrc":"2688:6:41","nodeType":"YulIdentifier","src":"2688:6:41"}]}]},"evmVersion":"prague","externalReferences":[{"declaration":10596,"isOffset":false,"isSlot":false,"src":"2688:6:41","valueSize":1},{"declaration":10593,"isOffset":false,"isSlot":false,"src":"2707:4:41","valueSize":1}],"flags":["memory-safe"],"id":10598,"nodeType":"InlineAssembly","src":"2649:73:41"}]},"documentation":{"id":10590,"nodeType":"StructuredDocumentation","src":"2480:87:41","text":"@dev Returns the length of a given slice (equiv to self.length for calldata slices)"},"id":10600,"implemented":true,"kind":"function","modifiers":[],"name":"length","nameLocation":"2581:6:41","nodeType":"FunctionDefinition","parameters":{"id":10594,"nodeType":"ParameterList","parameters":[{"constant":false,"id":10593,"mutability":"mutable","name":"self","nameLocation":"2594:4:41","nodeType":"VariableDeclaration","scope":10600,"src":"2588:10:41","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_userDefinedValueType$_Slice_$10578","typeString":"Memory.Slice"},"typeName":{"id":10592,"nodeType":"UserDefinedTypeName","pathNode":{"id":10591,"name":"Slice","nameLocations":["2588:5:41"],"nodeType":"IdentifierPath","referencedDeclaration":10578,"src":"2588:5:41"},"referencedDeclaration":10578,"src":"2588:5:41","typeDescriptions":{"typeIdentifier":"t_userDefinedValueType$_Slice_$10578","typeString":"Memory.Slice"}},"visibility":"internal"}],"src":"2587:12:41"},"returnParameters":{"id":10597,"nodeType":"ParameterList","parameters":[{"constant":false,"id":10596,"mutability":"mutable","name":"result","nameLocation":"2631:6:41","nodeType":"VariableDeclaration","scope":10600,"src":"2623:14:41","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":10595,"name":"uint256","nodeType":"ElementaryTypeName","src":"2623:7:41","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"2622:16:41"},"scope":10769,"src":"2572:156:41","stateMutability":"pure","virtual":false,"visibility":"internal"},{"body":{"id":10639,"nodeType":"Block","src":"2891:163:41","statements":[{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":10616,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":10612,"name":"offset","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10606,"src":"2905:6:41","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">","rightExpression":{"arguments":[{"id":10614,"name":"self","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10604,"src":"2921:4:41","typeDescriptions":{"typeIdentifier":"t_userDefinedValueType$_Slice_$10578","typeString":"Memory.Slice"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_userDefinedValueType$_Slice_$10578","typeString":"Memory.Slice"}],"id":10613,"name":"length","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10600,"src":"2914:6:41","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_userDefinedValueType$_Slice_$10578_$returns$_t_uint256_$","typeString":"function (Memory.Slice) pure returns (uint256)"}},"id":10615,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"2914:12:41","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"2905:21:41","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":10624,"nodeType":"IfStatement","src":"2901:65:41","trueBody":{"expression":{"arguments":[{"expression":{"id":10620,"name":"Panic","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10908,"src":"2940:5:41","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_Panic_$10908_$","typeString":"type(library Panic)"}},"id":10621,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberLocation":"2946:19:41","memberName":"ARRAY_OUT_OF_BOUNDS","nodeType":"MemberAccess","referencedDeclaration":10891,"src":"2940:25:41","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"expression":{"id":10617,"name":"Panic","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10908,"src":"2928:5:41","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_Panic_$10908_$","typeString":"type(library Panic)"}},"id":10619,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"2934:5:41","memberName":"panic","nodeType":"MemberAccess","referencedDeclaration":10907,"src":"2928:11:41","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_uint256_$returns$__$","typeString":"function (uint256) pure"}},"id":10622,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"2928:38:41","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":10623,"nodeType":"ExpressionStatement","src":"2928:38:41"}},{"expression":{"arguments":[{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":10630,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"arguments":[{"id":10627,"name":"self","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10604,"src":"2999:4:41","typeDescriptions":{"typeIdentifier":"t_userDefinedValueType$_Slice_$10578","typeString":"Memory.Slice"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_userDefinedValueType$_Slice_$10578","typeString":"Memory.Slice"}],"id":10626,"name":"length","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10600,"src":"2992:6:41","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_userDefinedValueType$_Slice_$10578_$returns$_t_uint256_$","typeString":"function (Memory.Slice) pure returns (uint256)"}},"id":10628,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"2992:12:41","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"-","rightExpression":{"id":10629,"name":"offset","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10606,"src":"3007:6:41","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"2992:21:41","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"arguments":[{"arguments":[{"id":10633,"name":"self","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10604,"src":"3032:4:41","typeDescriptions":{"typeIdentifier":"t_userDefinedValueType$_Slice_$10578","typeString":"Memory.Slice"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_userDefinedValueType$_Slice_$10578","typeString":"Memory.Slice"}],"id":10632,"name":"_pointer","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10768,"src":"3023:8:41","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_userDefinedValueType$_Slice_$10578_$returns$_t_userDefinedValueType$_Pointer_$10476_$","typeString":"function (Memory.Slice) pure returns (Memory.Pointer)"}},"id":10634,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"3023:14:41","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_userDefinedValueType$_Pointer_$10476","typeString":"Memory.Pointer"}},{"id":10635,"name":"offset","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10606,"src":"3039:6:41","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_userDefinedValueType$_Pointer_$10476","typeString":"Memory.Pointer"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":10631,"name":"forward","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10553,"src":"3015:7:41","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_userDefinedValueType$_Pointer_$10476_$_t_uint256_$returns$_t_userDefinedValueType$_Pointer_$10476_$","typeString":"function (Memory.Pointer,uint256) pure returns (Memory.Pointer)"}},"id":10636,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"3015:31:41","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_userDefinedValueType$_Pointer_$10476","typeString":"Memory.Pointer"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_userDefinedValueType$_Pointer_$10476","typeString":"Memory.Pointer"}],"id":10625,"name":"_asSlice","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10756,"src":"2983:8:41","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_uint256_$_t_userDefinedValueType$_Pointer_$10476_$returns$_t_userDefinedValueType$_Slice_$10578_$","typeString":"function (uint256,Memory.Pointer) pure returns (Memory.Slice)"}},"id":10637,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"2983:64:41","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_userDefinedValueType$_Slice_$10578","typeString":"Memory.Slice"}},"functionReturnParameters":10611,"id":10638,"nodeType":"Return","src":"2976:71:41"}]},"documentation":{"id":10601,"nodeType":"StructuredDocumentation","src":"2734:79:41","text":"@dev Offset a memory slice (equivalent to self[start:] for calldata slices)"},"id":10640,"implemented":true,"kind":"function","modifiers":[],"name":"slice","nameLocation":"2827:5:41","nodeType":"FunctionDefinition","parameters":{"id":10607,"nodeType":"ParameterList","parameters":[{"constant":false,"id":10604,"mutability":"mutable","name":"self","nameLocation":"2839:4:41","nodeType":"VariableDeclaration","scope":10640,"src":"2833:10:41","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_userDefinedValueType$_Slice_$10578","typeString":"Memory.Slice"},"typeName":{"id":10603,"nodeType":"UserDefinedTypeName","pathNode":{"id":10602,"name":"Slice","nameLocations":["2833:5:41"],"nodeType":"IdentifierPath","referencedDeclaration":10578,"src":"2833:5:41"},"referencedDeclaration":10578,"src":"2833:5:41","typeDescriptions":{"typeIdentifier":"t_userDefinedValueType$_Slice_$10578","typeString":"Memory.Slice"}},"visibility":"internal"},{"constant":false,"id":10606,"mutability":"mutable","name":"offset","nameLocation":"2853:6:41","nodeType":"VariableDeclaration","scope":10640,"src":"2845:14:41","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":10605,"name":"uint256","nodeType":"ElementaryTypeName","src":"2845:7:41","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"2832:28:41"},"returnParameters":{"id":10611,"nodeType":"ParameterList","parameters":[{"constant":false,"id":10610,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":10640,"src":"2884:5:41","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_userDefinedValueType$_Slice_$10578","typeString":"Memory.Slice"},"typeName":{"id":10609,"nodeType":"UserDefinedTypeName","pathNode":{"id":10608,"name":"Slice","nameLocations":["2884:5:41"],"nodeType":"IdentifierPath","referencedDeclaration":10578,"src":"2884:5:41"},"referencedDeclaration":10578,"src":"2884:5:41","typeDescriptions":{"typeIdentifier":"t_userDefinedValueType$_Slice_$10578","typeString":"Memory.Slice"}},"visibility":"internal"}],"src":"2883:7:41"},"scope":10769,"src":"2818:236:41","stateMutability":"pure","virtual":false,"visibility":"internal"},{"body":{"id":10679,"nodeType":"Block","src":"3243:151:41","statements":[{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":10660,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":10656,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":10654,"name":"offset","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10646,"src":"3257:6:41","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"+","rightExpression":{"id":10655,"name":"len","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10648,"src":"3266:3:41","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"3257:12:41","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">","rightExpression":{"arguments":[{"id":10658,"name":"self","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10644,"src":"3279:4:41","typeDescriptions":{"typeIdentifier":"t_userDefinedValueType$_Slice_$10578","typeString":"Memory.Slice"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_userDefinedValueType$_Slice_$10578","typeString":"Memory.Slice"}],"id":10657,"name":"length","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10600,"src":"3272:6:41","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_userDefinedValueType$_Slice_$10578_$returns$_t_uint256_$","typeString":"function (Memory.Slice) pure returns (uint256)"}},"id":10659,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"3272:12:41","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"3257:27:41","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":10668,"nodeType":"IfStatement","src":"3253:71:41","trueBody":{"expression":{"arguments":[{"expression":{"id":10664,"name":"Panic","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10908,"src":"3298:5:41","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_Panic_$10908_$","typeString":"type(library Panic)"}},"id":10665,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberLocation":"3304:19:41","memberName":"ARRAY_OUT_OF_BOUNDS","nodeType":"MemberAccess","referencedDeclaration":10891,"src":"3298:25:41","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"expression":{"id":10661,"name":"Panic","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10908,"src":"3286:5:41","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_Panic_$10908_$","typeString":"type(library Panic)"}},"id":10663,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"3292:5:41","memberName":"panic","nodeType":"MemberAccess","referencedDeclaration":10907,"src":"3286:11:41","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_uint256_$returns$__$","typeString":"function (uint256) pure"}},"id":10666,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"3286:38:41","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":10667,"nodeType":"ExpressionStatement","src":"3286:38:41"}},{"expression":{"arguments":[{"id":10670,"name":"len","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10648,"src":"3350:3:41","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"arguments":[{"arguments":[{"id":10673,"name":"self","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10644,"src":"3372:4:41","typeDescriptions":{"typeIdentifier":"t_userDefinedValueType$_Slice_$10578","typeString":"Memory.Slice"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_userDefinedValueType$_Slice_$10578","typeString":"Memory.Slice"}],"id":10672,"name":"_pointer","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10768,"src":"3363:8:41","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_userDefinedValueType$_Slice_$10578_$returns$_t_userDefinedValueType$_Pointer_$10476_$","typeString":"function (Memory.Slice) pure returns (Memory.Pointer)"}},"id":10674,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"3363:14:41","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_userDefinedValueType$_Pointer_$10476","typeString":"Memory.Pointer"}},{"id":10675,"name":"offset","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10646,"src":"3379:6:41","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_userDefinedValueType$_Pointer_$10476","typeString":"Memory.Pointer"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":10671,"name":"forward","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10553,"src":"3355:7:41","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_userDefinedValueType$_Pointer_$10476_$_t_uint256_$returns$_t_userDefinedValueType$_Pointer_$10476_$","typeString":"function (Memory.Pointer,uint256) pure returns (Memory.Pointer)"}},"id":10676,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"3355:31:41","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_userDefinedValueType$_Pointer_$10476","typeString":"Memory.Pointer"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_userDefinedValueType$_Pointer_$10476","typeString":"Memory.Pointer"}],"id":10669,"name":"_asSlice","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10756,"src":"3341:8:41","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_uint256_$_t_userDefinedValueType$_Pointer_$10476_$returns$_t_userDefinedValueType$_Slice_$10578_$","typeString":"function (uint256,Memory.Pointer) pure returns (Memory.Slice)"}},"id":10677,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"3341:46:41","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_userDefinedValueType$_Slice_$10578","typeString":"Memory.Slice"}},"functionReturnParameters":10653,"id":10678,"nodeType":"Return","src":"3334:53:41"}]},"documentation":{"id":10641,"nodeType":"StructuredDocumentation","src":"3060:92:41","text":"@dev Offset and cut a Slice (equivalent to self[start:start+length] for calldata slices)"},"id":10680,"implemented":true,"kind":"function","modifiers":[],"name":"slice","nameLocation":"3166:5:41","nodeType":"FunctionDefinition","parameters":{"id":10649,"nodeType":"ParameterList","parameters":[{"constant":false,"id":10644,"mutability":"mutable","name":"self","nameLocation":"3178:4:41","nodeType":"VariableDeclaration","scope":10680,"src":"3172:10:41","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_userDefinedValueType$_Slice_$10578","typeString":"Memory.Slice"},"typeName":{"id":10643,"nodeType":"UserDefinedTypeName","pathNode":{"id":10642,"name":"Slice","nameLocations":["3172:5:41"],"nodeType":"IdentifierPath","referencedDeclaration":10578,"src":"3172:5:41"},"referencedDeclaration":10578,"src":"3172:5:41","typeDescriptions":{"typeIdentifier":"t_userDefinedValueType$_Slice_$10578","typeString":"Memory.Slice"}},"visibility":"internal"},{"constant":false,"id":10646,"mutability":"mutable","name":"offset","nameLocation":"3192:6:41","nodeType":"VariableDeclaration","scope":10680,"src":"3184:14:41","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":10645,"name":"uint256","nodeType":"ElementaryTypeName","src":"3184:7:41","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":10648,"mutability":"mutable","name":"len","nameLocation":"3208:3:41","nodeType":"VariableDeclaration","scope":10680,"src":"3200:11:41","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":10647,"name":"uint256","nodeType":"ElementaryTypeName","src":"3200:7:41","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"3171:41:41"},"returnParameters":{"id":10653,"nodeType":"ParameterList","parameters":[{"constant":false,"id":10652,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":10680,"src":"3236:5:41","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_userDefinedValueType$_Slice_$10578","typeString":"Memory.Slice"},"typeName":{"id":10651,"nodeType":"UserDefinedTypeName","pathNode":{"id":10650,"name":"Slice","nameLocations":["3236:5:41"],"nodeType":"IdentifierPath","referencedDeclaration":10578,"src":"3236:5:41"},"referencedDeclaration":10578,"src":"3236:5:41","typeDescriptions":{"typeIdentifier":"t_userDefinedValueType$_Slice_$10578","typeString":"Memory.Slice"}},"visibility":"internal"}],"src":"3235:7:41"},"scope":10769,"src":"3157:237:41","stateMutability":"pure","virtual":false,"visibility":"internal"},{"body":{"id":10715,"nodeType":"Block","src":"3708:324:41","statements":[{"assignments":[10692],"declarations":[{"constant":false,"id":10692,"mutability":"mutable","name":"outOfBoundBytes","nameLocation":"3726:15:41","nodeType":"VariableDeclaration","scope":10715,"src":"3718:23:41","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":10691,"name":"uint256","nodeType":"ElementaryTypeName","src":"3718:7:41","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":10702,"initialValue":{"arguments":[{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":10697,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"hexValue":"30783230","id":10695,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"3763:4:41","typeDescriptions":{"typeIdentifier":"t_rational_32_by_1","typeString":"int_const 32"},"value":"0x20"},"nodeType":"BinaryOperation","operator":"+","rightExpression":{"id":10696,"name":"offset","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10686,"src":"3770:6:41","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"3763:13:41","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"arguments":[{"id":10699,"name":"self","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10684,"src":"3785:4:41","typeDescriptions":{"typeIdentifier":"t_userDefinedValueType$_Slice_$10578","typeString":"Memory.Slice"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_userDefinedValueType$_Slice_$10578","typeString":"Memory.Slice"}],"id":10698,"name":"length","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10600,"src":"3778:6:41","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_userDefinedValueType$_Slice_$10578_$returns$_t_uint256_$","typeString":"function (Memory.Slice) pure returns (uint256)"}},"id":10700,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"3778:12:41","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"expression":{"id":10693,"name":"Math","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":12726,"src":"3744:4:41","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_Math_$12726_$","typeString":"type(library Math)"}},"id":10694,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"3749:13:41","memberName":"saturatingSub","nodeType":"MemberAccess","referencedDeclaration":11316,"src":"3744:18:41","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,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"3744:47:41","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"VariableDeclarationStatement","src":"3718:73:41"},{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":10705,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":10703,"name":"outOfBoundBytes","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10692,"src":"3805:15:41","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">","rightExpression":{"hexValue":"30783166","id":10704,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"3823:4:41","typeDescriptions":{"typeIdentifier":"t_rational_31_by_1","typeString":"int_const 31"},"value":"0x1f"},"src":"3805:22:41","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":10713,"nodeType":"IfStatement","src":"3801:66:41","trueBody":{"expression":{"arguments":[{"expression":{"id":10709,"name":"Panic","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10908,"src":"3841:5:41","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_Panic_$10908_$","typeString":"type(library Panic)"}},"id":10710,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberLocation":"3847:19:41","memberName":"ARRAY_OUT_OF_BOUNDS","nodeType":"MemberAccess","referencedDeclaration":10891,"src":"3841:25:41","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"expression":{"id":10706,"name":"Panic","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10908,"src":"3829:5:41","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_Panic_$10908_$","typeString":"type(library Panic)"}},"id":10708,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"3835:5:41","memberName":"panic","nodeType":"MemberAccess","referencedDeclaration":10907,"src":"3829:11:41","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_uint256_$returns$__$","typeString":"function (uint256) pure"}},"id":10711,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"3829:38:41","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":10712,"nodeType":"ExpressionStatement","src":"3829:38:41"}},{"AST":{"nativeSrc":"3903:123:41","nodeType":"YulBlock","src":"3903:123:41","statements":[{"nativeSrc":"3917:99:41","nodeType":"YulAssignment","src":"3917:99:41","value":{"arguments":[{"arguments":[{"arguments":[{"arguments":[{"name":"self","nativeSrc":"3944:4:41","nodeType":"YulIdentifier","src":"3944:4:41"},{"arguments":[{"kind":"number","nativeSrc":"3954:3:41","nodeType":"YulLiteral","src":"3954:3:41","type":"","value":"128"},{"arguments":[{"kind":"number","nativeSrc":"3963:1:41","nodeType":"YulLiteral","src":"3963:1:41","type":"","value":"0"}],"functionName":{"name":"not","nativeSrc":"3959:3:41","nodeType":"YulIdentifier","src":"3959:3:41"},"nativeSrc":"3959:6:41","nodeType":"YulFunctionCall","src":"3959:6:41"}],"functionName":{"name":"shr","nativeSrc":"3950:3:41","nodeType":"YulIdentifier","src":"3950:3:41"},"nativeSrc":"3950:16:41","nodeType":"YulFunctionCall","src":"3950:16:41"}],"functionName":{"name":"and","nativeSrc":"3940:3:41","nodeType":"YulIdentifier","src":"3940:3:41"},"nativeSrc":"3940:27:41","nodeType":"YulFunctionCall","src":"3940:27:41"},{"name":"offset","nativeSrc":"3969:6:41","nodeType":"YulIdentifier","src":"3969:6:41"}],"functionName":{"name":"add","nativeSrc":"3936:3:41","nodeType":"YulIdentifier","src":"3936:3:41"},"nativeSrc":"3936:40:41","nodeType":"YulFunctionCall","src":"3936:40:41"}],"functionName":{"name":"mload","nativeSrc":"3930:5:41","nodeType":"YulIdentifier","src":"3930:5:41"},"nativeSrc":"3930:47:41","nodeType":"YulFunctionCall","src":"3930:47:41"},{"arguments":[{"arguments":[{"kind":"number","nativeSrc":"3987:1:41","nodeType":"YulLiteral","src":"3987:1:41","type":"","value":"8"},{"name":"outOfBoundBytes","nativeSrc":"3990:15:41","nodeType":"YulIdentifier","src":"3990:15:41"}],"functionName":{"name":"mul","nativeSrc":"3983:3:41","nodeType":"YulIdentifier","src":"3983:3:41"},"nativeSrc":"3983:23:41","nodeType":"YulFunctionCall","src":"3983:23:41"},{"arguments":[{"kind":"number","nativeSrc":"4012:1:41","nodeType":"YulLiteral","src":"4012:1:41","type":"","value":"0"}],"functionName":{"name":"not","nativeSrc":"4008:3:41","nodeType":"YulIdentifier","src":"4008:3:41"},"nativeSrc":"4008:6:41","nodeType":"YulFunctionCall","src":"4008:6:41"}],"functionName":{"name":"shl","nativeSrc":"3979:3:41","nodeType":"YulIdentifier","src":"3979:3:41"},"nativeSrc":"3979:36:41","nodeType":"YulFunctionCall","src":"3979:36:41"}],"functionName":{"name":"and","nativeSrc":"3926:3:41","nodeType":"YulIdentifier","src":"3926:3:41"},"nativeSrc":"3926:90:41","nodeType":"YulFunctionCall","src":"3926:90:41"},"variableNames":[{"name":"value","nativeSrc":"3917:5:41","nodeType":"YulIdentifier","src":"3917:5:41"}]}]},"evmVersion":"prague","externalReferences":[{"declaration":10686,"isOffset":false,"isSlot":false,"src":"3969:6:41","valueSize":1},{"declaration":10692,"isOffset":false,"isSlot":false,"src":"3990:15:41","valueSize":1},{"declaration":10684,"isOffset":false,"isSlot":false,"src":"3944:4:41","valueSize":1},{"declaration":10689,"isOffset":false,"isSlot":false,"src":"3917:5:41","valueSize":1}],"flags":["memory-safe"],"id":10714,"nodeType":"InlineAssembly","src":"3878:148:41"}]},"documentation":{"id":10681,"nodeType":"StructuredDocumentation","src":"3400:223:41","text":" @dev Read a bytes32 buffer from a given Slice at a specific offset\n NOTE: If offset > length(slice) - 0x20, part of the return value will be out of bound of the slice. These bytes are zeroed."},"id":10716,"implemented":true,"kind":"function","modifiers":[],"name":"load","nameLocation":"3637:4:41","nodeType":"FunctionDefinition","parameters":{"id":10687,"nodeType":"ParameterList","parameters":[{"constant":false,"id":10684,"mutability":"mutable","name":"self","nameLocation":"3648:4:41","nodeType":"VariableDeclaration","scope":10716,"src":"3642:10:41","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_userDefinedValueType$_Slice_$10578","typeString":"Memory.Slice"},"typeName":{"id":10683,"nodeType":"UserDefinedTypeName","pathNode":{"id":10682,"name":"Slice","nameLocations":["3642:5:41"],"nodeType":"IdentifierPath","referencedDeclaration":10578,"src":"3642:5:41"},"referencedDeclaration":10578,"src":"3642:5:41","typeDescriptions":{"typeIdentifier":"t_userDefinedValueType$_Slice_$10578","typeString":"Memory.Slice"}},"visibility":"internal"},{"constant":false,"id":10686,"mutability":"mutable","name":"offset","nameLocation":"3662:6:41","nodeType":"VariableDeclaration","scope":10716,"src":"3654:14:41","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":10685,"name":"uint256","nodeType":"ElementaryTypeName","src":"3654:7:41","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"3641:28:41"},"returnParameters":{"id":10690,"nodeType":"ParameterList","parameters":[{"constant":false,"id":10689,"mutability":"mutable","name":"value","nameLocation":"3701:5:41","nodeType":"VariableDeclaration","scope":10716,"src":"3693:13:41","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":10688,"name":"bytes32","nodeType":"ElementaryTypeName","src":"3693:7:41","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"}],"src":"3692:15:41"},"scope":10769,"src":"3628:404:41","stateMutability":"pure","virtual":false,"visibility":"internal"},{"body":{"id":10741,"nodeType":"Block","src":"4188:300:41","statements":[{"assignments":[10726],"declarations":[{"constant":false,"id":10726,"mutability":"mutable","name":"len","nameLocation":"4206:3:41","nodeType":"VariableDeclaration","scope":10741,"src":"4198:11:41","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":10725,"name":"uint256","nodeType":"ElementaryTypeName","src":"4198:7:41","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":10730,"initialValue":{"arguments":[{"id":10728,"name":"self","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10720,"src":"4219:4:41","typeDescriptions":{"typeIdentifier":"t_userDefinedValueType$_Slice_$10578","typeString":"Memory.Slice"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_userDefinedValueType$_Slice_$10578","typeString":"Memory.Slice"}],"id":10727,"name":"length","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10600,"src":"4212:6:41","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_userDefinedValueType$_Slice_$10578_$returns$_t_uint256_$","typeString":"function (Memory.Slice) pure returns (uint256)"}},"id":10729,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"4212:12:41","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"VariableDeclarationStatement","src":"4198:26:41"},{"assignments":[10735],"declarations":[{"constant":false,"id":10735,"mutability":"mutable","name":"ptr","nameLocation":"4249:3:41","nodeType":"VariableDeclaration","scope":10741,"src":"4234:18:41","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_userDefinedValueType$_Pointer_$10476","typeString":"Memory.Pointer"},"typeName":{"id":10734,"nodeType":"UserDefinedTypeName","pathNode":{"id":10733,"name":"Memory.Pointer","nameLocations":["4234:6:41","4241:7:41"],"nodeType":"IdentifierPath","referencedDeclaration":10476,"src":"4234:14:41"},"referencedDeclaration":10476,"src":"4234:14:41","typeDescriptions":{"typeIdentifier":"t_userDefinedValueType$_Pointer_$10476","typeString":"Memory.Pointer"}},"visibility":"internal"}],"id":10739,"initialValue":{"arguments":[{"id":10737,"name":"self","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10720,"src":"4264:4:41","typeDescriptions":{"typeIdentifier":"t_userDefinedValueType$_Slice_$10578","typeString":"Memory.Slice"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_userDefinedValueType$_Slice_$10578","typeString":"Memory.Slice"}],"id":10736,"name":"_pointer","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10768,"src":"4255:8:41","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_userDefinedValueType$_Slice_$10578_$returns$_t_userDefinedValueType$_Pointer_$10476_$","typeString":"function (Memory.Slice) pure returns (Memory.Pointer)"}},"id":10738,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"4255:14:41","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_userDefinedValueType$_Pointer_$10476","typeString":"Memory.Pointer"}},"nodeType":"VariableDeclarationStatement","src":"4234:35:41"},{"AST":{"nativeSrc":"4304:178:41","nodeType":"YulBlock","src":"4304:178:41","statements":[{"nativeSrc":"4318:21:41","nodeType":"YulAssignment","src":"4318:21:41","value":{"arguments":[{"kind":"number","nativeSrc":"4334:4:41","nodeType":"YulLiteral","src":"4334:4:41","type":"","value":"0x40"}],"functionName":{"name":"mload","nativeSrc":"4328:5:41","nodeType":"YulIdentifier","src":"4328:5:41"},"nativeSrc":"4328:11:41","nodeType":"YulFunctionCall","src":"4328:11:41"},"variableNames":[{"name":"result","nativeSrc":"4318:6:41","nodeType":"YulIdentifier","src":"4318:6:41"}]},{"expression":{"arguments":[{"name":"result","nativeSrc":"4359:6:41","nodeType":"YulIdentifier","src":"4359:6:41"},{"name":"len","nativeSrc":"4367:3:41","nodeType":"YulIdentifier","src":"4367:3:41"}],"functionName":{"name":"mstore","nativeSrc":"4352:6:41","nodeType":"YulIdentifier","src":"4352:6:41"},"nativeSrc":"4352:19:41","nodeType":"YulFunctionCall","src":"4352:19:41"},"nativeSrc":"4352:19:41","nodeType":"YulExpressionStatement","src":"4352:19:41"},{"expression":{"arguments":[{"arguments":[{"name":"result","nativeSrc":"4394:6:41","nodeType":"YulIdentifier","src":"4394:6:41"},{"kind":"number","nativeSrc":"4402:4:41","nodeType":"YulLiteral","src":"4402:4:41","type":"","value":"0x20"}],"functionName":{"name":"add","nativeSrc":"4390:3:41","nodeType":"YulIdentifier","src":"4390:3:41"},"nativeSrc":"4390:17:41","nodeType":"YulFunctionCall","src":"4390:17:41"},{"name":"ptr","nativeSrc":"4409:3:41","nodeType":"YulIdentifier","src":"4409:3:41"},{"name":"len","nativeSrc":"4414:3:41","nodeType":"YulIdentifier","src":"4414:3:41"}],"functionName":{"name":"mcopy","nativeSrc":"4384:5:41","nodeType":"YulIdentifier","src":"4384:5:41"},"nativeSrc":"4384:34:41","nodeType":"YulFunctionCall","src":"4384:34:41"},"nativeSrc":"4384:34:41","nodeType":"YulExpressionStatement","src":"4384:34:41"},{"expression":{"arguments":[{"kind":"number","nativeSrc":"4438:4:41","nodeType":"YulLiteral","src":"4438:4:41","type":"","value":"0x40"},{"arguments":[{"arguments":[{"name":"result","nativeSrc":"4452:6:41","nodeType":"YulIdentifier","src":"4452:6:41"},{"name":"len","nativeSrc":"4460:3:41","nodeType":"YulIdentifier","src":"4460:3:41"}],"functionName":{"name":"add","nativeSrc":"4448:3:41","nodeType":"YulIdentifier","src":"4448:3:41"},"nativeSrc":"4448:16:41","nodeType":"YulFunctionCall","src":"4448:16:41"},{"kind":"number","nativeSrc":"4466:4:41","nodeType":"YulLiteral","src":"4466:4:41","type":"","value":"0x20"}],"functionName":{"name":"add","nativeSrc":"4444:3:41","nodeType":"YulIdentifier","src":"4444:3:41"},"nativeSrc":"4444:27:41","nodeType":"YulFunctionCall","src":"4444:27:41"}],"functionName":{"name":"mstore","nativeSrc":"4431:6:41","nodeType":"YulIdentifier","src":"4431:6:41"},"nativeSrc":"4431:41:41","nodeType":"YulFunctionCall","src":"4431:41:41"},"nativeSrc":"4431:41:41","nodeType":"YulExpressionStatement","src":"4431:41:41"}]},"evmVersion":"prague","externalReferences":[{"declaration":10726,"isOffset":false,"isSlot":false,"src":"4367:3:41","valueSize":1},{"declaration":10726,"isOffset":false,"isSlot":false,"src":"4414:3:41","valueSize":1},{"declaration":10726,"isOffset":false,"isSlot":false,"src":"4460:3:41","valueSize":1},{"declaration":10735,"isOffset":false,"isSlot":false,"src":"4409:3:41","valueSize":1},{"declaration":10723,"isOffset":false,"isSlot":false,"src":"4318:6:41","valueSize":1},{"declaration":10723,"isOffset":false,"isSlot":false,"src":"4359:6:41","valueSize":1},{"declaration":10723,"isOffset":false,"isSlot":false,"src":"4394:6:41","valueSize":1},{"declaration":10723,"isOffset":false,"isSlot":false,"src":"4452:6:41","valueSize":1}],"flags":["memory-safe"],"id":10740,"nodeType":"InlineAssembly","src":"4279:203:41"}]},"documentation":{"id":10717,"nodeType":"StructuredDocumentation","src":"4038:72:41","text":"@dev Extract the data corresponding to a Slice (allocate new memory)"},"id":10742,"implemented":true,"kind":"function","modifiers":[],"name":"toBytes","nameLocation":"4124:7:41","nodeType":"FunctionDefinition","parameters":{"id":10721,"nodeType":"ParameterList","parameters":[{"constant":false,"id":10720,"mutability":"mutable","name":"self","nameLocation":"4138:4:41","nodeType":"VariableDeclaration","scope":10742,"src":"4132:10:41","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_userDefinedValueType$_Slice_$10578","typeString":"Memory.Slice"},"typeName":{"id":10719,"nodeType":"UserDefinedTypeName","pathNode":{"id":10718,"name":"Slice","nameLocations":["4132:5:41"],"nodeType":"IdentifierPath","referencedDeclaration":10578,"src":"4132:5:41"},"referencedDeclaration":10578,"src":"4132:5:41","typeDescriptions":{"typeIdentifier":"t_userDefinedValueType$_Slice_$10578","typeString":"Memory.Slice"}},"visibility":"internal"}],"src":"4131:12:41"},"returnParameters":{"id":10724,"nodeType":"ParameterList","parameters":[{"constant":false,"id":10723,"mutability":"mutable","name":"result","nameLocation":"4180:6:41","nodeType":"VariableDeclaration","scope":10742,"src":"4167:19:41","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes"},"typeName":{"id":10722,"name":"bytes","nodeType":"ElementaryTypeName","src":"4167:5:41","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"}],"src":"4166:21:41"},"scope":10769,"src":"4115:373:41","stateMutability":"pure","virtual":false,"visibility":"internal"},{"body":{"id":10755,"nodeType":"Block","src":"5031:97:41","statements":[{"AST":{"nativeSrc":"5066:56:41","nodeType":"YulBlock","src":"5066:56:41","statements":[{"nativeSrc":"5080:32:41","nodeType":"YulAssignment","src":"5080:32:41","value":{"arguments":[{"arguments":[{"kind":"number","nativeSrc":"5097:3:41","nodeType":"YulLiteral","src":"5097:3:41","type":"","value":"128"},{"name":"len","nativeSrc":"5102:3:41","nodeType":"YulIdentifier","src":"5102:3:41"}],"functionName":{"name":"shl","nativeSrc":"5093:3:41","nodeType":"YulIdentifier","src":"5093:3:41"},"nativeSrc":"5093:13:41","nodeType":"YulFunctionCall","src":"5093:13:41"},{"name":"ptr","nativeSrc":"5108:3:41","nodeType":"YulIdentifier","src":"5108:3:41"}],"functionName":{"name":"or","nativeSrc":"5090:2:41","nodeType":"YulIdentifier","src":"5090:2:41"},"nativeSrc":"5090:22:41","nodeType":"YulFunctionCall","src":"5090:22:41"},"variableNames":[{"name":"result","nativeSrc":"5080:6:41","nodeType":"YulIdentifier","src":"5080:6:41"}]}]},"evmVersion":"prague","externalReferences":[{"declaration":10745,"isOffset":false,"isSlot":false,"src":"5102:3:41","valueSize":1},{"declaration":10748,"isOffset":false,"isSlot":false,"src":"5108:3:41","valueSize":1},{"declaration":10752,"isOffset":false,"isSlot":false,"src":"5080:6:41","valueSize":1}],"flags":["memory-safe"],"id":10754,"nodeType":"InlineAssembly","src":"5041:81:41"}]},"documentation":{"id":10743,"nodeType":"StructuredDocumentation","src":"4494:445:41","text":" @dev Private helper: create a slice from raw values (length and pointer)\n NOTE: this function MUST NOT be called with `len` or `ptr` that exceed `2**128-1`. This should never be\n the case of slices produced by `asSlice(bytes)`, and function that reduce the scope of slices\n (`slice(Slice,uint256)` and `slice(Slice,uint256, uint256)`) should not cause this issue if the parent slice is\n correct."},"id":10756,"implemented":true,"kind":"function","modifiers":[],"name":"_asSlice","nameLocation":"4953:8:41","nodeType":"FunctionDefinition","parameters":{"id":10749,"nodeType":"ParameterList","parameters":[{"constant":false,"id":10745,"mutability":"mutable","name":"len","nameLocation":"4970:3:41","nodeType":"VariableDeclaration","scope":10756,"src":"4962:11:41","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":10744,"name":"uint256","nodeType":"ElementaryTypeName","src":"4962:7:41","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":10748,"mutability":"mutable","name":"ptr","nameLocation":"4990:3:41","nodeType":"VariableDeclaration","scope":10756,"src":"4975:18:41","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_userDefinedValueType$_Pointer_$10476","typeString":"Memory.Pointer"},"typeName":{"id":10747,"nodeType":"UserDefinedTypeName","pathNode":{"id":10746,"name":"Memory.Pointer","nameLocations":["4975:6:41","4982:7:41"],"nodeType":"IdentifierPath","referencedDeclaration":10476,"src":"4975:14:41"},"referencedDeclaration":10476,"src":"4975:14:41","typeDescriptions":{"typeIdentifier":"t_userDefinedValueType$_Pointer_$10476","typeString":"Memory.Pointer"}},"visibility":"internal"}],"src":"4961:33:41"},"returnParameters":{"id":10753,"nodeType":"ParameterList","parameters":[{"constant":false,"id":10752,"mutability":"mutable","name":"result","nameLocation":"5023:6:41","nodeType":"VariableDeclaration","scope":10756,"src":"5017:12:41","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_userDefinedValueType$_Slice_$10578","typeString":"Memory.Slice"},"typeName":{"id":10751,"nodeType":"UserDefinedTypeName","pathNode":{"id":10750,"name":"Slice","nameLocations":["5017:5:41"],"nodeType":"IdentifierPath","referencedDeclaration":10578,"src":"5017:5:41"},"referencedDeclaration":10578,"src":"5017:5:41","typeDescriptions":{"typeIdentifier":"t_userDefinedValueType$_Slice_$10578","typeString":"Memory.Slice"}},"visibility":"internal"}],"src":"5016:14:41"},"scope":10769,"src":"4944:184:41","stateMutability":"pure","virtual":false,"visibility":"private"},{"body":{"id":10767,"nodeType":"Block","src":"5310:102:41","statements":[{"AST":{"nativeSrc":"5345:61:41","nodeType":"YulBlock","src":"5345:61:41","statements":[{"nativeSrc":"5359:37:41","nodeType":"YulAssignment","src":"5359:37:41","value":{"arguments":[{"name":"self","nativeSrc":"5373:4:41","nodeType":"YulIdentifier","src":"5373:4:41"},{"arguments":[{"kind":"number","nativeSrc":"5383:3:41","nodeType":"YulLiteral","src":"5383:3:41","type":"","value":"128"},{"arguments":[{"kind":"number","nativeSrc":"5392:1:41","nodeType":"YulLiteral","src":"5392:1:41","type":"","value":"0"}],"functionName":{"name":"not","nativeSrc":"5388:3:41","nodeType":"YulIdentifier","src":"5388:3:41"},"nativeSrc":"5388:6:41","nodeType":"YulFunctionCall","src":"5388:6:41"}],"functionName":{"name":"shr","nativeSrc":"5379:3:41","nodeType":"YulIdentifier","src":"5379:3:41"},"nativeSrc":"5379:16:41","nodeType":"YulFunctionCall","src":"5379:16:41"}],"functionName":{"name":"and","nativeSrc":"5369:3:41","nodeType":"YulIdentifier","src":"5369:3:41"},"nativeSrc":"5369:27:41","nodeType":"YulFunctionCall","src":"5369:27:41"},"variableNames":[{"name":"result","nativeSrc":"5359:6:41","nodeType":"YulIdentifier","src":"5359:6:41"}]}]},"evmVersion":"prague","externalReferences":[{"declaration":10764,"isOffset":false,"isSlot":false,"src":"5359:6:41","valueSize":1},{"declaration":10760,"isOffset":false,"isSlot":false,"src":"5373:4:41","valueSize":1}],"flags":["memory-safe"],"id":10766,"nodeType":"InlineAssembly","src":"5320:86:41"}]},"documentation":{"id":10757,"nodeType":"StructuredDocumentation","src":"5134:96:41","text":"@dev Returns the memory location of a given slice (equiv to self.offset for calldata slices)"},"id":10768,"implemented":true,"kind":"function","modifiers":[],"name":"_pointer","nameLocation":"5244:8:41","nodeType":"FunctionDefinition","parameters":{"id":10761,"nodeType":"ParameterList","parameters":[{"constant":false,"id":10760,"mutability":"mutable","name":"self","nameLocation":"5259:4:41","nodeType":"VariableDeclaration","scope":10768,"src":"5253:10:41","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_userDefinedValueType$_Slice_$10578","typeString":"Memory.Slice"},"typeName":{"id":10759,"nodeType":"UserDefinedTypeName","pathNode":{"id":10758,"name":"Slice","nameLocations":["5253:5:41"],"nodeType":"IdentifierPath","referencedDeclaration":10578,"src":"5253:5:41"},"referencedDeclaration":10578,"src":"5253:5:41","typeDescriptions":{"typeIdentifier":"t_userDefinedValueType$_Slice_$10578","typeString":"Memory.Slice"}},"visibility":"internal"}],"src":"5252:12:41"},"returnParameters":{"id":10765,"nodeType":"ParameterList","parameters":[{"constant":false,"id":10764,"mutability":"mutable","name":"result","nameLocation":"5302:6:41","nodeType":"VariableDeclaration","scope":10768,"src":"5287:21:41","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_userDefinedValueType$_Pointer_$10476","typeString":"Memory.Pointer"},"typeName":{"id":10763,"nodeType":"UserDefinedTypeName","pathNode":{"id":10762,"name":"Memory.Pointer","nameLocations":["5287:6:41","5294:7:41"],"nodeType":"IdentifierPath","referencedDeclaration":10476,"src":"5287:14:41"},"referencedDeclaration":10476,"src":"5287:14:41","typeDescriptions":{"typeIdentifier":"t_userDefinedValueType$_Pointer_$10476","typeString":"Memory.Pointer"}},"visibility":"internal"}],"src":"5286:23:41"},"scope":10769,"src":"5235:177:41","stateMutability":"pure","virtual":false,"visibility":"private"}],"scope":10770,"src":"780:4634:41","usedErrors":[],"usedEvents":[]}],"src":"100:5315:41"},"id":41},"@openzeppelin/contracts/utils/Multicall.sol":{"ast":{"absolutePath":"@openzeppelin/contracts/utils/Multicall.sol","exportedSymbols":{"Address":[10256],"Context":[10286],"Multicall":[10856]},"id":10857,"license":"MIT","nodeType":"SourceUnit","nodes":[{"id":10771,"literals":["solidity","^","0.8",".20"],"nodeType":"PragmaDirective","src":"103:24:42"},{"absolutePath":"@openzeppelin/contracts/utils/Address.sol","file":"./Address.sol","id":10773,"nameLocation":"-1:-1:-1","nodeType":"ImportDirective","scope":10857,"sourceUnit":10257,"src":"129:38:42","symbolAliases":[{"foreign":{"id":10772,"name":"Address","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10256,"src":"137:7:42","typeDescriptions":{}},"nameLocation":"-1:-1:-1"}],"unitAlias":""},{"absolutePath":"@openzeppelin/contracts/utils/Context.sol","file":"./Context.sol","id":10775,"nameLocation":"-1:-1:-1","nodeType":"ImportDirective","scope":10857,"sourceUnit":10287,"src":"168:38:42","symbolAliases":[{"foreign":{"id":10774,"name":"Context","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10286,"src":"176:7:42","typeDescriptions":{}},"nameLocation":"-1:-1:-1"}],"unitAlias":""},{"abstract":true,"baseContracts":[{"baseName":{"id":10777,"name":"Context","nameLocations":["1053:7:42"],"nodeType":"IdentifierPath","referencedDeclaration":10286,"src":"1053:7:42"},"id":10778,"nodeType":"InheritanceSpecifier","src":"1053:7:42"}],"canonicalName":"Multicall","contractDependencies":[],"contractKind":"contract","documentation":{"id":10776,"nodeType":"StructuredDocumentation","src":"208:813:42","text":" @dev Provides a function to batch together multiple calls in a single external call.\n Consider any assumption about calldata validation performed by the sender may be violated if it's not especially\n careful about sending transactions invoking {multicall}. For example, a relay address that filters function\n selectors won't filter calls nested within a {multicall} operation.\n NOTE: Since 5.0.1 and 4.9.4, this contract identifies non-canonical contexts (i.e. `msg.sender` is not {Context-_msgSender}).\n If a non-canonical context is identified, the following self `delegatecall` appends the last bytes of `msg.data`\n to the subcall. This makes it safe to use with {ERC2771Context}. Contexts that don't affect the resolution of\n {Context-_msgSender} are not propagated to subcalls."},"fullyImplemented":true,"id":10856,"linearizedBaseContracts":[10856,10286],"name":"Multicall","nameLocation":"1040:9:42","nodeType":"ContractDefinition","nodes":[{"body":{"id":10854,"nodeType":"Block","src":"1314:392:42","statements":[{"assignments":[10789],"declarations":[{"constant":false,"id":10789,"mutability":"mutable","name":"context","nameLocation":"1337:7:42","nodeType":"VariableDeclaration","scope":10854,"src":"1324:20:42","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes"},"typeName":{"id":10788,"name":"bytes","nodeType":"ElementaryTypeName","src":"1324:5:42","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"}],"id":10809,"initialValue":{"condition":{"commonType":{"typeIdentifier":"t_address","typeString":"address"},"id":10794,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"expression":{"id":10790,"name":"msg","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-15,"src":"1347:3:42","typeDescriptions":{"typeIdentifier":"t_magic_message","typeString":"msg"}},"id":10791,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"1351:6:42","memberName":"sender","nodeType":"MemberAccess","src":"1347:10:42","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"arguments":[],"expression":{"argumentTypes":[],"id":10792,"name":"_msgSender","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10268,"src":"1361:10:42","typeDescriptions":{"typeIdentifier":"t_function_internal_view$__$returns$_t_address_$","typeString":"function () view returns (address)"}},"id":10793,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"1361:12:42","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"src":"1347:26:42","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"falseExpression":{"baseExpression":{"expression":{"id":10799,"name":"msg","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-15,"src":"1415:3:42","typeDescriptions":{"typeIdentifier":"t_magic_message","typeString":"msg"}},"id":10800,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"1419:4:42","memberName":"data","nodeType":"MemberAccess","src":"1415:8:42","typeDescriptions":{"typeIdentifier":"t_bytes_calldata_ptr","typeString":"bytes calldata"}},"id":10807,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"IndexRangeAccess","src":"1415:51:42","startExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":10806,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"expression":{"expression":{"id":10801,"name":"msg","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-15,"src":"1424:3:42","typeDescriptions":{"typeIdentifier":"t_magic_message","typeString":"msg"}},"id":10802,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"1428:4:42","memberName":"data","nodeType":"MemberAccess","src":"1424:8:42","typeDescriptions":{"typeIdentifier":"t_bytes_calldata_ptr","typeString":"bytes calldata"}},"id":10803,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"1433:6:42","memberName":"length","nodeType":"MemberAccess","src":"1424:15:42","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"-","rightExpression":{"arguments":[],"expression":{"argumentTypes":[],"id":10804,"name":"_contextSuffixLength","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10285,"src":"1442:20:42","typeDescriptions":{"typeIdentifier":"t_function_internal_view$__$returns$_t_uint256_$","typeString":"function () view returns (uint256)"}},"id":10805,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"1442:22:42","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"1424:40:42","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"typeDescriptions":{"typeIdentifier":"t_bytes_calldata_ptr_slice","typeString":"bytes calldata slice"}},"id":10808,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"Conditional","src":"1347:119:42","trueExpression":{"arguments":[{"hexValue":"30","id":10797,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"1398: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":10796,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"NewExpression","src":"1388:9:42","typeDescriptions":{"typeIdentifier":"t_function_objectcreation_pure$_t_uint256_$returns$_t_bytes_memory_ptr_$","typeString":"function (uint256) pure returns (bytes memory)"},"typeName":{"id":10795,"name":"bytes","nodeType":"ElementaryTypeName","src":"1392:5:42","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}}},"id":10798,"isConstant":false,"isLValue":false,"isPure":true,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"1388:12:42","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}},"typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}},"nodeType":"VariableDeclarationStatement","src":"1324:142:42"},{"expression":{"id":10817,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":10810,"name":"results","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10786,"src":"1477:7:42","typeDescriptions":{"typeIdentifier":"t_array$_t_bytes_memory_ptr_$dyn_memory_ptr","typeString":"bytes memory[] memory"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"arguments":[{"expression":{"id":10814,"name":"data","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10782,"src":"1499:4:42","typeDescriptions":{"typeIdentifier":"t_array$_t_bytes_calldata_ptr_$dyn_calldata_ptr","typeString":"bytes calldata[] calldata"}},"id":10815,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"1504:6:42","memberName":"length","nodeType":"MemberAccess","src":"1499:11:42","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":10813,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"NewExpression","src":"1487:11:42","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":10811,"name":"bytes","nodeType":"ElementaryTypeName","src":"1491:5:42","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"id":10812,"nodeType":"ArrayTypeName","src":"1491:7:42","typeDescriptions":{"typeIdentifier":"t_array$_t_bytes_storage_$dyn_storage_ptr","typeString":"bytes[]"}}},"id":10816,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"1487:24:42","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_array$_t_bytes_memory_ptr_$dyn_memory_ptr","typeString":"bytes memory[] memory"}},"src":"1477:34:42","typeDescriptions":{"typeIdentifier":"t_array$_t_bytes_memory_ptr_$dyn_memory_ptr","typeString":"bytes memory[] memory"}},"id":10818,"nodeType":"ExpressionStatement","src":"1477:34:42"},{"body":{"id":10850,"nodeType":"Block","src":"1563:113:42","statements":[{"expression":{"id":10848,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"baseExpression":{"id":10830,"name":"results","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10786,"src":"1577:7:42","typeDescriptions":{"typeIdentifier":"t_array$_t_bytes_memory_ptr_$dyn_memory_ptr","typeString":"bytes memory[] memory"}},"id":10832,"indexExpression":{"id":10831,"name":"i","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10820,"src":"1585:1:42","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"nodeType":"IndexAccess","src":"1577:10:42","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"arguments":[{"arguments":[{"id":10837,"name":"this","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-28,"src":"1627:4:42","typeDescriptions":{"typeIdentifier":"t_contract$_Multicall_$10856","typeString":"contract Multicall"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_contract$_Multicall_$10856","typeString":"contract Multicall"}],"id":10836,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"1619:7:42","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":10835,"name":"address","nodeType":"ElementaryTypeName","src":"1619:7:42","typeDescriptions":{}}},"id":10838,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"1619:13:42","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"arguments":[{"baseExpression":{"id":10842,"name":"data","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10782,"src":"1647:4:42","typeDescriptions":{"typeIdentifier":"t_array$_t_bytes_calldata_ptr_$dyn_calldata_ptr","typeString":"bytes calldata[] calldata"}},"id":10844,"indexExpression":{"id":10843,"name":"i","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10820,"src":"1652:1:42","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"1647:7:42","typeDescriptions":{"typeIdentifier":"t_bytes_calldata_ptr","typeString":"bytes calldata"}},{"id":10845,"name":"context","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10789,"src":"1656:7:42","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes_calldata_ptr","typeString":"bytes calldata"},{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}],"expression":{"id":10840,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"1634:5:42","typeDescriptions":{"typeIdentifier":"t_type$_t_bytes_storage_ptr_$","typeString":"type(bytes storage pointer)"},"typeName":{"id":10839,"name":"bytes","nodeType":"ElementaryTypeName","src":"1634:5:42","typeDescriptions":{}}},"id":10841,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"1640:6:42","memberName":"concat","nodeType":"MemberAccess","src":"1634:12:42","typeDescriptions":{"typeIdentifier":"t_function_bytesconcat_pure$__$returns$_t_bytes_memory_ptr_$","typeString":"function () pure returns (bytes memory)"}},"id":10846,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"1634:30:42","tryCall":false,"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":10833,"name":"Address","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10256,"src":"1590:7:42","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_Address_$10256_$","typeString":"type(library Address)"}},"id":10834,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"1598:20:42","memberName":"functionDelegateCall","nodeType":"MemberAccess","referencedDeclaration":10166,"src":"1590:28:42","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_address_$_t_bytes_memory_ptr_$returns$_t_bytes_memory_ptr_$","typeString":"function (address,bytes memory) returns (bytes memory)"}},"id":10847,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"1590:75:42","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}},"src":"1577:88:42","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}},"id":10849,"nodeType":"ExpressionStatement","src":"1577:88:42"}]},"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":10826,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":10823,"name":"i","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10820,"src":"1541:1:42","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"<","rightExpression":{"expression":{"id":10824,"name":"data","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10782,"src":"1545:4:42","typeDescriptions":{"typeIdentifier":"t_array$_t_bytes_calldata_ptr_$dyn_calldata_ptr","typeString":"bytes calldata[] calldata"}},"id":10825,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"1550:6:42","memberName":"length","nodeType":"MemberAccess","src":"1545:11:42","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"1541:15:42","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":10851,"initializationExpression":{"assignments":[10820],"declarations":[{"constant":false,"id":10820,"mutability":"mutable","name":"i","nameLocation":"1534:1:42","nodeType":"VariableDeclaration","scope":10851,"src":"1526:9:42","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":10819,"name":"uint256","nodeType":"ElementaryTypeName","src":"1526:7:42","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":10822,"initialValue":{"hexValue":"30","id":10821,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"1538:1:42","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"nodeType":"VariableDeclarationStatement","src":"1526:13:42"},"isSimpleCounterLoop":true,"loopExpression":{"expression":{"id":10828,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"UnaryOperation","operator":"++","prefix":false,"src":"1558:3:42","subExpression":{"id":10827,"name":"i","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10820,"src":"1558:1:42","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":10829,"nodeType":"ExpressionStatement","src":"1558:3:42"},"nodeType":"ForStatement","src":"1521:155:42"},{"expression":{"id":10852,"name":"results","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10786,"src":"1692:7:42","typeDescriptions":{"typeIdentifier":"t_array$_t_bytes_memory_ptr_$dyn_memory_ptr","typeString":"bytes memory[] memory"}},"functionReturnParameters":10787,"id":10853,"nodeType":"Return","src":"1685:14:42"}]},"documentation":{"id":10779,"nodeType":"StructuredDocumentation","src":"1067:152:42","text":" @dev Receives and executes a batch of function calls on this contract.\n @custom:oz-upgrades-unsafe-allow-reachable delegatecall"},"functionSelector":"ac9650d8","id":10855,"implemented":true,"kind":"function","modifiers":[],"name":"multicall","nameLocation":"1233:9:42","nodeType":"FunctionDefinition","parameters":{"id":10783,"nodeType":"ParameterList","parameters":[{"constant":false,"id":10782,"mutability":"mutable","name":"data","nameLocation":"1260:4:42","nodeType":"VariableDeclaration","scope":10855,"src":"1243:21:42","stateVariable":false,"storageLocation":"calldata","typeDescriptions":{"typeIdentifier":"t_array$_t_bytes_calldata_ptr_$dyn_calldata_ptr","typeString":"bytes[]"},"typeName":{"baseType":{"id":10780,"name":"bytes","nodeType":"ElementaryTypeName","src":"1243:5:42","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"id":10781,"nodeType":"ArrayTypeName","src":"1243:7:42","typeDescriptions":{"typeIdentifier":"t_array$_t_bytes_storage_$dyn_storage_ptr","typeString":"bytes[]"}},"visibility":"internal"}],"src":"1242:23:42"},"returnParameters":{"id":10787,"nodeType":"ParameterList","parameters":[{"constant":false,"id":10786,"mutability":"mutable","name":"results","nameLocation":"1305:7:42","nodeType":"VariableDeclaration","scope":10855,"src":"1290:22:42","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_array$_t_bytes_memory_ptr_$dyn_memory_ptr","typeString":"bytes[]"},"typeName":{"baseType":{"id":10784,"name":"bytes","nodeType":"ElementaryTypeName","src":"1290:5:42","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"id":10785,"nodeType":"ArrayTypeName","src":"1290:7:42","typeDescriptions":{"typeIdentifier":"t_array$_t_bytes_storage_$dyn_storage_ptr","typeString":"bytes[]"}},"visibility":"internal"}],"src":"1289:24:42"},"scope":10856,"src":"1224:482:42","stateMutability":"nonpayable","virtual":true,"visibility":"public"}],"scope":10857,"src":"1022:686:42","usedErrors":[9878,10299],"usedEvents":[]}],"src":"103:1606:42"},"id":42},"@openzeppelin/contracts/utils/Panic.sol":{"ast":{"absolutePath":"@openzeppelin/contracts/utils/Panic.sol","exportedSymbols":{"Panic":[10908]},"id":10909,"license":"MIT","nodeType":"SourceUnit","nodes":[{"id":10858,"literals":["solidity","^","0.8",".20"],"nodeType":"PragmaDirective","src":"99:24:43"},{"abstract":false,"baseContracts":[],"canonicalName":"Panic","contractDependencies":[],"contractKind":"library","documentation":{"id":10859,"nodeType":"StructuredDocumentation","src":"125:489:43","text":" @dev Helper library for emitting standardized panic codes.\n ```solidity\n contract Example {\n      using Panic for uint256;\n      // Use any of the declared internal constants\n      function foo() { Panic.GENERIC.panic(); }\n      // Alternatively\n      function foo() { Panic.panic(Panic.GENERIC); }\n }\n ```\n Follows the list from https://github.com/ethereum/solidity/blob/v0.8.24/libsolutil/ErrorCodes.h[libsolutil].\n _Available since v5.1._"},"fullyImplemented":true,"id":10908,"linearizedBaseContracts":[10908],"name":"Panic","nameLocation":"665:5:43","nodeType":"ContractDefinition","nodes":[{"constant":true,"documentation":{"id":10860,"nodeType":"StructuredDocumentation","src":"677:36:43","text":"@dev generic / unspecified error"},"id":10863,"mutability":"constant","name":"GENERIC","nameLocation":"744:7:43","nodeType":"VariableDeclaration","scope":10908,"src":"718:40:43","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":10861,"name":"uint256","nodeType":"ElementaryTypeName","src":"718:7:43","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"value":{"hexValue":"30783030","id":10862,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"754:4:43","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0x00"},"visibility":"internal"},{"constant":true,"documentation":{"id":10864,"nodeType":"StructuredDocumentation","src":"764:37:43","text":"@dev used by the assert() builtin"},"id":10867,"mutability":"constant","name":"ASSERT","nameLocation":"832:6:43","nodeType":"VariableDeclaration","scope":10908,"src":"806:39:43","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":10865,"name":"uint256","nodeType":"ElementaryTypeName","src":"806:7:43","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"value":{"hexValue":"30783031","id":10866,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"841:4:43","typeDescriptions":{"typeIdentifier":"t_rational_1_by_1","typeString":"int_const 1"},"value":"0x01"},"visibility":"internal"},{"constant":true,"documentation":{"id":10868,"nodeType":"StructuredDocumentation","src":"851:41:43","text":"@dev arithmetic underflow or overflow"},"id":10871,"mutability":"constant","name":"UNDER_OVERFLOW","nameLocation":"923:14:43","nodeType":"VariableDeclaration","scope":10908,"src":"897:47:43","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":10869,"name":"uint256","nodeType":"ElementaryTypeName","src":"897:7:43","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"value":{"hexValue":"30783131","id":10870,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"940:4:43","typeDescriptions":{"typeIdentifier":"t_rational_17_by_1","typeString":"int_const 17"},"value":"0x11"},"visibility":"internal"},{"constant":true,"documentation":{"id":10872,"nodeType":"StructuredDocumentation","src":"950:35:43","text":"@dev division or modulo by zero"},"id":10875,"mutability":"constant","name":"DIVISION_BY_ZERO","nameLocation":"1016:16:43","nodeType":"VariableDeclaration","scope":10908,"src":"990:49:43","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":10873,"name":"uint256","nodeType":"ElementaryTypeName","src":"990:7:43","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"value":{"hexValue":"30783132","id":10874,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"1035:4:43","typeDescriptions":{"typeIdentifier":"t_rational_18_by_1","typeString":"int_const 18"},"value":"0x12"},"visibility":"internal"},{"constant":true,"documentation":{"id":10876,"nodeType":"StructuredDocumentation","src":"1045:30:43","text":"@dev enum conversion error"},"id":10879,"mutability":"constant","name":"ENUM_CONVERSION_ERROR","nameLocation":"1106:21:43","nodeType":"VariableDeclaration","scope":10908,"src":"1080:54:43","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":10877,"name":"uint256","nodeType":"ElementaryTypeName","src":"1080:7:43","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"value":{"hexValue":"30783231","id":10878,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"1130:4:43","typeDescriptions":{"typeIdentifier":"t_rational_33_by_1","typeString":"int_const 33"},"value":"0x21"},"visibility":"internal"},{"constant":true,"documentation":{"id":10880,"nodeType":"StructuredDocumentation","src":"1140:36:43","text":"@dev invalid encoding in storage"},"id":10883,"mutability":"constant","name":"STORAGE_ENCODING_ERROR","nameLocation":"1207:22:43","nodeType":"VariableDeclaration","scope":10908,"src":"1181:55:43","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":10881,"name":"uint256","nodeType":"ElementaryTypeName","src":"1181:7:43","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"value":{"hexValue":"30783232","id":10882,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"1232:4:43","typeDescriptions":{"typeIdentifier":"t_rational_34_by_1","typeString":"int_const 34"},"value":"0x22"},"visibility":"internal"},{"constant":true,"documentation":{"id":10884,"nodeType":"StructuredDocumentation","src":"1242:24:43","text":"@dev empty array pop"},"id":10887,"mutability":"constant","name":"EMPTY_ARRAY_POP","nameLocation":"1297:15:43","nodeType":"VariableDeclaration","scope":10908,"src":"1271:48:43","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":10885,"name":"uint256","nodeType":"ElementaryTypeName","src":"1271:7:43","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"value":{"hexValue":"30783331","id":10886,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"1315:4:43","typeDescriptions":{"typeIdentifier":"t_rational_49_by_1","typeString":"int_const 49"},"value":"0x31"},"visibility":"internal"},{"constant":true,"documentation":{"id":10888,"nodeType":"StructuredDocumentation","src":"1325:35:43","text":"@dev array out of bounds access"},"id":10891,"mutability":"constant","name":"ARRAY_OUT_OF_BOUNDS","nameLocation":"1391:19:43","nodeType":"VariableDeclaration","scope":10908,"src":"1365:52:43","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":10889,"name":"uint256","nodeType":"ElementaryTypeName","src":"1365:7:43","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"value":{"hexValue":"30783332","id":10890,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"1413:4:43","typeDescriptions":{"typeIdentifier":"t_rational_50_by_1","typeString":"int_const 50"},"value":"0x32"},"visibility":"internal"},{"constant":true,"documentation":{"id":10892,"nodeType":"StructuredDocumentation","src":"1423:65:43","text":"@dev resource error (too large allocation or too large array)"},"id":10895,"mutability":"constant","name":"RESOURCE_ERROR","nameLocation":"1519:14:43","nodeType":"VariableDeclaration","scope":10908,"src":"1493:47:43","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":10893,"name":"uint256","nodeType":"ElementaryTypeName","src":"1493:7:43","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"value":{"hexValue":"30783431","id":10894,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"1536:4:43","typeDescriptions":{"typeIdentifier":"t_rational_65_by_1","typeString":"int_const 65"},"value":"0x41"},"visibility":"internal"},{"constant":true,"documentation":{"id":10896,"nodeType":"StructuredDocumentation","src":"1546:42:43","text":"@dev calling invalid internal function"},"id":10899,"mutability":"constant","name":"INVALID_INTERNAL_FUNCTION","nameLocation":"1619:25:43","nodeType":"VariableDeclaration","scope":10908,"src":"1593:58:43","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":10897,"name":"uint256","nodeType":"ElementaryTypeName","src":"1593:7:43","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"value":{"hexValue":"30783531","id":10898,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"1647:4:43","typeDescriptions":{"typeIdentifier":"t_rational_81_by_1","typeString":"int_const 81"},"value":"0x51"},"visibility":"internal"},{"body":{"id":10906,"nodeType":"Block","src":"1819:151:43","statements":[{"AST":{"nativeSrc":"1854:110:43","nodeType":"YulBlock","src":"1854:110:43","statements":[{"expression":{"arguments":[{"kind":"number","nativeSrc":"1875:4:43","nodeType":"YulLiteral","src":"1875:4:43","type":"","value":"0x00"},{"kind":"number","nativeSrc":"1881:10:43","nodeType":"YulLiteral","src":"1881:10:43","type":"","value":"0x4e487b71"}],"functionName":{"name":"mstore","nativeSrc":"1868:6:43","nodeType":"YulIdentifier","src":"1868:6:43"},"nativeSrc":"1868:24:43","nodeType":"YulFunctionCall","src":"1868:24:43"},"nativeSrc":"1868:24:43","nodeType":"YulExpressionStatement","src":"1868:24:43"},{"expression":{"arguments":[{"kind":"number","nativeSrc":"1912:4:43","nodeType":"YulLiteral","src":"1912:4:43","type":"","value":"0x20"},{"name":"code","nativeSrc":"1918:4:43","nodeType":"YulIdentifier","src":"1918:4:43"}],"functionName":{"name":"mstore","nativeSrc":"1905:6:43","nodeType":"YulIdentifier","src":"1905:6:43"},"nativeSrc":"1905:18:43","nodeType":"YulFunctionCall","src":"1905:18:43"},"nativeSrc":"1905:18:43","nodeType":"YulExpressionStatement","src":"1905:18:43"},{"expression":{"arguments":[{"kind":"number","nativeSrc":"1943:4:43","nodeType":"YulLiteral","src":"1943:4:43","type":"","value":"0x1c"},{"kind":"number","nativeSrc":"1949:4:43","nodeType":"YulLiteral","src":"1949:4:43","type":"","value":"0x24"}],"functionName":{"name":"revert","nativeSrc":"1936:6:43","nodeType":"YulIdentifier","src":"1936:6:43"},"nativeSrc":"1936:18:43","nodeType":"YulFunctionCall","src":"1936:18:43"},"nativeSrc":"1936:18:43","nodeType":"YulExpressionStatement","src":"1936:18:43"}]},"evmVersion":"prague","externalReferences":[{"declaration":10902,"isOffset":false,"isSlot":false,"src":"1918:4:43","valueSize":1}],"flags":["memory-safe"],"id":10905,"nodeType":"InlineAssembly","src":"1829:135:43"}]},"documentation":{"id":10900,"nodeType":"StructuredDocumentation","src":"1658:113:43","text":"@dev Reverts with a panic code. Recommended to use with\n the internal constants with predefined codes."},"id":10907,"implemented":true,"kind":"function","modifiers":[],"name":"panic","nameLocation":"1785:5:43","nodeType":"FunctionDefinition","parameters":{"id":10903,"nodeType":"ParameterList","parameters":[{"constant":false,"id":10902,"mutability":"mutable","name":"code","nameLocation":"1799:4:43","nodeType":"VariableDeclaration","scope":10907,"src":"1791:12:43","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":10901,"name":"uint256","nodeType":"ElementaryTypeName","src":"1791:7:43","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"1790:14:43"},"returnParameters":{"id":10904,"nodeType":"ParameterList","parameters":[],"src":"1819:0:43"},"scope":10908,"src":"1776:194:43","stateMutability":"pure","virtual":false,"visibility":"internal"}],"scope":10909,"src":"657:1315:43","usedErrors":[],"usedEvents":[]}],"src":"99:1874:43"},"id":43},"@openzeppelin/contracts/utils/StorageSlot.sol":{"ast":{"absolutePath":"@openzeppelin/contracts/utils/StorageSlot.sol","exportedSymbols":{"StorageSlot":[11032]},"id":11033,"license":"MIT","nodeType":"SourceUnit","nodes":[{"id":10910,"literals":["solidity","^","0.8",".20"],"nodeType":"PragmaDirective","src":"193:24:44"},{"abstract":false,"baseContracts":[],"canonicalName":"StorageSlot","contractDependencies":[],"contractKind":"library","documentation":{"id":10911,"nodeType":"StructuredDocumentation","src":"219:1187:44","text":" @dev Library for reading and writing primitive types to specific storage slots.\n Storage slots are often used to avoid storage conflict when dealing with upgradeable contracts.\n This library helps with reading and writing to such slots without the need for inline assembly.\n The functions in this library return Slot structs that contain a `value` member that can be used to read or write.\n Example usage to set ERC-1967 implementation slot:\n ```solidity\n contract ERC1967 {\n     // Define the slot. Alternatively, use the SlotDerivation library to derive the slot.\n     bytes32 internal constant _IMPLEMENTATION_SLOT = 0x360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc;\n     function _getImplementation() internal view returns (address) {\n         return StorageSlot.getAddressSlot(_IMPLEMENTATION_SLOT).value;\n     }\n     function _setImplementation(address newImplementation) internal {\n         require(newImplementation.code.length > 0);\n         StorageSlot.getAddressSlot(_IMPLEMENTATION_SLOT).value = newImplementation;\n     }\n }\n ```\n TIP: Consider using this library along with {SlotDerivation}."},"fullyImplemented":true,"id":11032,"linearizedBaseContracts":[11032],"name":"StorageSlot","nameLocation":"1415:11:44","nodeType":"ContractDefinition","nodes":[{"canonicalName":"StorageSlot.AddressSlot","id":10914,"members":[{"constant":false,"id":10913,"mutability":"mutable","name":"value","nameLocation":"1470:5:44","nodeType":"VariableDeclaration","scope":10914,"src":"1462:13:44","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":10912,"name":"address","nodeType":"ElementaryTypeName","src":"1462:7:44","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"name":"AddressSlot","nameLocation":"1440:11:44","nodeType":"StructDefinition","scope":11032,"src":"1433:49:44","visibility":"public"},{"canonicalName":"StorageSlot.BooleanSlot","id":10917,"members":[{"constant":false,"id":10916,"mutability":"mutable","name":"value","nameLocation":"1522:5:44","nodeType":"VariableDeclaration","scope":10917,"src":"1517:10:44","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":10915,"name":"bool","nodeType":"ElementaryTypeName","src":"1517:4:44","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"}],"name":"BooleanSlot","nameLocation":"1495:11:44","nodeType":"StructDefinition","scope":11032,"src":"1488:46:44","visibility":"public"},{"canonicalName":"StorageSlot.Bytes32Slot","id":10920,"members":[{"constant":false,"id":10919,"mutability":"mutable","name":"value","nameLocation":"1577:5:44","nodeType":"VariableDeclaration","scope":10920,"src":"1569:13:44","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":10918,"name":"bytes32","nodeType":"ElementaryTypeName","src":"1569:7:44","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"}],"name":"Bytes32Slot","nameLocation":"1547:11:44","nodeType":"StructDefinition","scope":11032,"src":"1540:49:44","visibility":"public"},{"canonicalName":"StorageSlot.Uint256Slot","id":10923,"members":[{"constant":false,"id":10922,"mutability":"mutable","name":"value","nameLocation":"1632:5:44","nodeType":"VariableDeclaration","scope":10923,"src":"1624:13:44","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":10921,"name":"uint256","nodeType":"ElementaryTypeName","src":"1624:7:44","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"name":"Uint256Slot","nameLocation":"1602:11:44","nodeType":"StructDefinition","scope":11032,"src":"1595:49:44","visibility":"public"},{"canonicalName":"StorageSlot.Int256Slot","id":10926,"members":[{"constant":false,"id":10925,"mutability":"mutable","name":"value","nameLocation":"1685:5:44","nodeType":"VariableDeclaration","scope":10926,"src":"1678:12:44","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"},"typeName":{"id":10924,"name":"int256","nodeType":"ElementaryTypeName","src":"1678:6:44","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"visibility":"internal"}],"name":"Int256Slot","nameLocation":"1657:10:44","nodeType":"StructDefinition","scope":11032,"src":"1650:47:44","visibility":"public"},{"canonicalName":"StorageSlot.StringSlot","id":10929,"members":[{"constant":false,"id":10928,"mutability":"mutable","name":"value","nameLocation":"1738:5:44","nodeType":"VariableDeclaration","scope":10929,"src":"1731:12:44","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_string_storage_ptr","typeString":"string"},"typeName":{"id":10927,"name":"string","nodeType":"ElementaryTypeName","src":"1731:6:44","typeDescriptions":{"typeIdentifier":"t_string_storage_ptr","typeString":"string"}},"visibility":"internal"}],"name":"StringSlot","nameLocation":"1710:10:44","nodeType":"StructDefinition","scope":11032,"src":"1703:47:44","visibility":"public"},{"canonicalName":"StorageSlot.BytesSlot","id":10932,"members":[{"constant":false,"id":10931,"mutability":"mutable","name":"value","nameLocation":"1789:5:44","nodeType":"VariableDeclaration","scope":10932,"src":"1783:11:44","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"},"typeName":{"id":10930,"name":"bytes","nodeType":"ElementaryTypeName","src":"1783:5:44","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"}],"name":"BytesSlot","nameLocation":"1763:9:44","nodeType":"StructDefinition","scope":11032,"src":"1756:45:44","visibility":"public"},{"body":{"id":10942,"nodeType":"Block","src":"1983:79:44","statements":[{"AST":{"nativeSrc":"2018:38:44","nodeType":"YulBlock","src":"2018:38:44","statements":[{"nativeSrc":"2032:14:44","nodeType":"YulAssignment","src":"2032:14:44","value":{"name":"slot","nativeSrc":"2042:4:44","nodeType":"YulIdentifier","src":"2042:4:44"},"variableNames":[{"name":"r.slot","nativeSrc":"2032:6:44","nodeType":"YulIdentifier","src":"2032:6:44"}]}]},"evmVersion":"prague","externalReferences":[{"declaration":10939,"isOffset":false,"isSlot":true,"src":"2032:6:44","suffix":"slot","valueSize":1},{"declaration":10935,"isOffset":false,"isSlot":false,"src":"2042:4:44","valueSize":1}],"flags":["memory-safe"],"id":10941,"nodeType":"InlineAssembly","src":"1993:63:44"}]},"documentation":{"id":10933,"nodeType":"StructuredDocumentation","src":"1807:87:44","text":" @dev Returns an `AddressSlot` with member `value` located at `slot`."},"id":10943,"implemented":true,"kind":"function","modifiers":[],"name":"getAddressSlot","nameLocation":"1908:14:44","nodeType":"FunctionDefinition","parameters":{"id":10936,"nodeType":"ParameterList","parameters":[{"constant":false,"id":10935,"mutability":"mutable","name":"slot","nameLocation":"1931:4:44","nodeType":"VariableDeclaration","scope":10943,"src":"1923:12:44","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":10934,"name":"bytes32","nodeType":"ElementaryTypeName","src":"1923:7:44","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"}],"src":"1922:14:44"},"returnParameters":{"id":10940,"nodeType":"ParameterList","parameters":[{"constant":false,"id":10939,"mutability":"mutable","name":"r","nameLocation":"1980:1:44","nodeType":"VariableDeclaration","scope":10943,"src":"1960:21:44","stateVariable":false,"storageLocation":"storage","typeDescriptions":{"typeIdentifier":"t_struct$_AddressSlot_$10914_storage_ptr","typeString":"struct StorageSlot.AddressSlot"},"typeName":{"id":10938,"nodeType":"UserDefinedTypeName","pathNode":{"id":10937,"name":"AddressSlot","nameLocations":["1960:11:44"],"nodeType":"IdentifierPath","referencedDeclaration":10914,"src":"1960:11:44"},"referencedDeclaration":10914,"src":"1960:11:44","typeDescriptions":{"typeIdentifier":"t_struct$_AddressSlot_$10914_storage_ptr","typeString":"struct StorageSlot.AddressSlot"}},"visibility":"internal"}],"src":"1959:23:44"},"scope":11032,"src":"1899:163:44","stateMutability":"pure","virtual":false,"visibility":"internal"},{"body":{"id":10953,"nodeType":"Block","src":"2243:79:44","statements":[{"AST":{"nativeSrc":"2278:38:44","nodeType":"YulBlock","src":"2278:38:44","statements":[{"nativeSrc":"2292:14:44","nodeType":"YulAssignment","src":"2292:14:44","value":{"name":"slot","nativeSrc":"2302:4:44","nodeType":"YulIdentifier","src":"2302:4:44"},"variableNames":[{"name":"r.slot","nativeSrc":"2292:6:44","nodeType":"YulIdentifier","src":"2292:6:44"}]}]},"evmVersion":"prague","externalReferences":[{"declaration":10950,"isOffset":false,"isSlot":true,"src":"2292:6:44","suffix":"slot","valueSize":1},{"declaration":10946,"isOffset":false,"isSlot":false,"src":"2302:4:44","valueSize":1}],"flags":["memory-safe"],"id":10952,"nodeType":"InlineAssembly","src":"2253:63:44"}]},"documentation":{"id":10944,"nodeType":"StructuredDocumentation","src":"2068:86:44","text":" @dev Returns a `BooleanSlot` with member `value` located at `slot`."},"id":10954,"implemented":true,"kind":"function","modifiers":[],"name":"getBooleanSlot","nameLocation":"2168:14:44","nodeType":"FunctionDefinition","parameters":{"id":10947,"nodeType":"ParameterList","parameters":[{"constant":false,"id":10946,"mutability":"mutable","name":"slot","nameLocation":"2191:4:44","nodeType":"VariableDeclaration","scope":10954,"src":"2183:12:44","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":10945,"name":"bytes32","nodeType":"ElementaryTypeName","src":"2183:7:44","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"}],"src":"2182:14:44"},"returnParameters":{"id":10951,"nodeType":"ParameterList","parameters":[{"constant":false,"id":10950,"mutability":"mutable","name":"r","nameLocation":"2240:1:44","nodeType":"VariableDeclaration","scope":10954,"src":"2220:21:44","stateVariable":false,"storageLocation":"storage","typeDescriptions":{"typeIdentifier":"t_struct$_BooleanSlot_$10917_storage_ptr","typeString":"struct StorageSlot.BooleanSlot"},"typeName":{"id":10949,"nodeType":"UserDefinedTypeName","pathNode":{"id":10948,"name":"BooleanSlot","nameLocations":["2220:11:44"],"nodeType":"IdentifierPath","referencedDeclaration":10917,"src":"2220:11:44"},"referencedDeclaration":10917,"src":"2220:11:44","typeDescriptions":{"typeIdentifier":"t_struct$_BooleanSlot_$10917_storage_ptr","typeString":"struct StorageSlot.BooleanSlot"}},"visibility":"internal"}],"src":"2219:23:44"},"scope":11032,"src":"2159:163:44","stateMutability":"pure","virtual":false,"visibility":"internal"},{"body":{"id":10964,"nodeType":"Block","src":"2503:79:44","statements":[{"AST":{"nativeSrc":"2538:38:44","nodeType":"YulBlock","src":"2538:38:44","statements":[{"nativeSrc":"2552:14:44","nodeType":"YulAssignment","src":"2552:14:44","value":{"name":"slot","nativeSrc":"2562:4:44","nodeType":"YulIdentifier","src":"2562:4:44"},"variableNames":[{"name":"r.slot","nativeSrc":"2552:6:44","nodeType":"YulIdentifier","src":"2552:6:44"}]}]},"evmVersion":"prague","externalReferences":[{"declaration":10961,"isOffset":false,"isSlot":true,"src":"2552:6:44","suffix":"slot","valueSize":1},{"declaration":10957,"isOffset":false,"isSlot":false,"src":"2562:4:44","valueSize":1}],"flags":["memory-safe"],"id":10963,"nodeType":"InlineAssembly","src":"2513:63:44"}]},"documentation":{"id":10955,"nodeType":"StructuredDocumentation","src":"2328:86:44","text":" @dev Returns a `Bytes32Slot` with member `value` located at `slot`."},"id":10965,"implemented":true,"kind":"function","modifiers":[],"name":"getBytes32Slot","nameLocation":"2428:14:44","nodeType":"FunctionDefinition","parameters":{"id":10958,"nodeType":"ParameterList","parameters":[{"constant":false,"id":10957,"mutability":"mutable","name":"slot","nameLocation":"2451:4:44","nodeType":"VariableDeclaration","scope":10965,"src":"2443:12:44","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":10956,"name":"bytes32","nodeType":"ElementaryTypeName","src":"2443:7:44","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"}],"src":"2442:14:44"},"returnParameters":{"id":10962,"nodeType":"ParameterList","parameters":[{"constant":false,"id":10961,"mutability":"mutable","name":"r","nameLocation":"2500:1:44","nodeType":"VariableDeclaration","scope":10965,"src":"2480:21:44","stateVariable":false,"storageLocation":"storage","typeDescriptions":{"typeIdentifier":"t_struct$_Bytes32Slot_$10920_storage_ptr","typeString":"struct StorageSlot.Bytes32Slot"},"typeName":{"id":10960,"nodeType":"UserDefinedTypeName","pathNode":{"id":10959,"name":"Bytes32Slot","nameLocations":["2480:11:44"],"nodeType":"IdentifierPath","referencedDeclaration":10920,"src":"2480:11:44"},"referencedDeclaration":10920,"src":"2480:11:44","typeDescriptions":{"typeIdentifier":"t_struct$_Bytes32Slot_$10920_storage_ptr","typeString":"struct StorageSlot.Bytes32Slot"}},"visibility":"internal"}],"src":"2479:23:44"},"scope":11032,"src":"2419:163:44","stateMutability":"pure","virtual":false,"visibility":"internal"},{"body":{"id":10975,"nodeType":"Block","src":"2763:79:44","statements":[{"AST":{"nativeSrc":"2798:38:44","nodeType":"YulBlock","src":"2798:38:44","statements":[{"nativeSrc":"2812:14:44","nodeType":"YulAssignment","src":"2812:14:44","value":{"name":"slot","nativeSrc":"2822:4:44","nodeType":"YulIdentifier","src":"2822:4:44"},"variableNames":[{"name":"r.slot","nativeSrc":"2812:6:44","nodeType":"YulIdentifier","src":"2812:6:44"}]}]},"evmVersion":"prague","externalReferences":[{"declaration":10972,"isOffset":false,"isSlot":true,"src":"2812:6:44","suffix":"slot","valueSize":1},{"declaration":10968,"isOffset":false,"isSlot":false,"src":"2822:4:44","valueSize":1}],"flags":["memory-safe"],"id":10974,"nodeType":"InlineAssembly","src":"2773:63:44"}]},"documentation":{"id":10966,"nodeType":"StructuredDocumentation","src":"2588:86:44","text":" @dev Returns a `Uint256Slot` with member `value` located at `slot`."},"id":10976,"implemented":true,"kind":"function","modifiers":[],"name":"getUint256Slot","nameLocation":"2688:14:44","nodeType":"FunctionDefinition","parameters":{"id":10969,"nodeType":"ParameterList","parameters":[{"constant":false,"id":10968,"mutability":"mutable","name":"slot","nameLocation":"2711:4:44","nodeType":"VariableDeclaration","scope":10976,"src":"2703:12:44","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":10967,"name":"bytes32","nodeType":"ElementaryTypeName","src":"2703:7:44","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"}],"src":"2702:14:44"},"returnParameters":{"id":10973,"nodeType":"ParameterList","parameters":[{"constant":false,"id":10972,"mutability":"mutable","name":"r","nameLocation":"2760:1:44","nodeType":"VariableDeclaration","scope":10976,"src":"2740:21:44","stateVariable":false,"storageLocation":"storage","typeDescriptions":{"typeIdentifier":"t_struct$_Uint256Slot_$10923_storage_ptr","typeString":"struct StorageSlot.Uint256Slot"},"typeName":{"id":10971,"nodeType":"UserDefinedTypeName","pathNode":{"id":10970,"name":"Uint256Slot","nameLocations":["2740:11:44"],"nodeType":"IdentifierPath","referencedDeclaration":10923,"src":"2740:11:44"},"referencedDeclaration":10923,"src":"2740:11:44","typeDescriptions":{"typeIdentifier":"t_struct$_Uint256Slot_$10923_storage_ptr","typeString":"struct StorageSlot.Uint256Slot"}},"visibility":"internal"}],"src":"2739:23:44"},"scope":11032,"src":"2679:163:44","stateMutability":"pure","virtual":false,"visibility":"internal"},{"body":{"id":10986,"nodeType":"Block","src":"3020:79:44","statements":[{"AST":{"nativeSrc":"3055:38:44","nodeType":"YulBlock","src":"3055:38:44","statements":[{"nativeSrc":"3069:14:44","nodeType":"YulAssignment","src":"3069:14:44","value":{"name":"slot","nativeSrc":"3079:4:44","nodeType":"YulIdentifier","src":"3079:4:44"},"variableNames":[{"name":"r.slot","nativeSrc":"3069:6:44","nodeType":"YulIdentifier","src":"3069:6:44"}]}]},"evmVersion":"prague","externalReferences":[{"declaration":10983,"isOffset":false,"isSlot":true,"src":"3069:6:44","suffix":"slot","valueSize":1},{"declaration":10979,"isOffset":false,"isSlot":false,"src":"3079:4:44","valueSize":1}],"flags":["memory-safe"],"id":10985,"nodeType":"InlineAssembly","src":"3030:63:44"}]},"documentation":{"id":10977,"nodeType":"StructuredDocumentation","src":"2848:85:44","text":" @dev Returns a `Int256Slot` with member `value` located at `slot`."},"id":10987,"implemented":true,"kind":"function","modifiers":[],"name":"getInt256Slot","nameLocation":"2947:13:44","nodeType":"FunctionDefinition","parameters":{"id":10980,"nodeType":"ParameterList","parameters":[{"constant":false,"id":10979,"mutability":"mutable","name":"slot","nameLocation":"2969:4:44","nodeType":"VariableDeclaration","scope":10987,"src":"2961:12:44","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":10978,"name":"bytes32","nodeType":"ElementaryTypeName","src":"2961:7:44","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"}],"src":"2960:14:44"},"returnParameters":{"id":10984,"nodeType":"ParameterList","parameters":[{"constant":false,"id":10983,"mutability":"mutable","name":"r","nameLocation":"3017:1:44","nodeType":"VariableDeclaration","scope":10987,"src":"2998:20:44","stateVariable":false,"storageLocation":"storage","typeDescriptions":{"typeIdentifier":"t_struct$_Int256Slot_$10926_storage_ptr","typeString":"struct StorageSlot.Int256Slot"},"typeName":{"id":10982,"nodeType":"UserDefinedTypeName","pathNode":{"id":10981,"name":"Int256Slot","nameLocations":["2998:10:44"],"nodeType":"IdentifierPath","referencedDeclaration":10926,"src":"2998:10:44"},"referencedDeclaration":10926,"src":"2998:10:44","typeDescriptions":{"typeIdentifier":"t_struct$_Int256Slot_$10926_storage_ptr","typeString":"struct StorageSlot.Int256Slot"}},"visibility":"internal"}],"src":"2997:22:44"},"scope":11032,"src":"2938:161:44","stateMutability":"pure","virtual":false,"visibility":"internal"},{"body":{"id":10997,"nodeType":"Block","src":"3277:79:44","statements":[{"AST":{"nativeSrc":"3312:38:44","nodeType":"YulBlock","src":"3312:38:44","statements":[{"nativeSrc":"3326:14:44","nodeType":"YulAssignment","src":"3326:14:44","value":{"name":"slot","nativeSrc":"3336:4:44","nodeType":"YulIdentifier","src":"3336:4:44"},"variableNames":[{"name":"r.slot","nativeSrc":"3326:6:44","nodeType":"YulIdentifier","src":"3326:6:44"}]}]},"evmVersion":"prague","externalReferences":[{"declaration":10994,"isOffset":false,"isSlot":true,"src":"3326:6:44","suffix":"slot","valueSize":1},{"declaration":10990,"isOffset":false,"isSlot":false,"src":"3336:4:44","valueSize":1}],"flags":["memory-safe"],"id":10996,"nodeType":"InlineAssembly","src":"3287:63:44"}]},"documentation":{"id":10988,"nodeType":"StructuredDocumentation","src":"3105:85:44","text":" @dev Returns a `StringSlot` with member `value` located at `slot`."},"id":10998,"implemented":true,"kind":"function","modifiers":[],"name":"getStringSlot","nameLocation":"3204:13:44","nodeType":"FunctionDefinition","parameters":{"id":10991,"nodeType":"ParameterList","parameters":[{"constant":false,"id":10990,"mutability":"mutable","name":"slot","nameLocation":"3226:4:44","nodeType":"VariableDeclaration","scope":10998,"src":"3218:12:44","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":10989,"name":"bytes32","nodeType":"ElementaryTypeName","src":"3218:7:44","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"}],"src":"3217:14:44"},"returnParameters":{"id":10995,"nodeType":"ParameterList","parameters":[{"constant":false,"id":10994,"mutability":"mutable","name":"r","nameLocation":"3274:1:44","nodeType":"VariableDeclaration","scope":10998,"src":"3255:20:44","stateVariable":false,"storageLocation":"storage","typeDescriptions":{"typeIdentifier":"t_struct$_StringSlot_$10929_storage_ptr","typeString":"struct StorageSlot.StringSlot"},"typeName":{"id":10993,"nodeType":"UserDefinedTypeName","pathNode":{"id":10992,"name":"StringSlot","nameLocations":["3255:10:44"],"nodeType":"IdentifierPath","referencedDeclaration":10929,"src":"3255:10:44"},"referencedDeclaration":10929,"src":"3255:10:44","typeDescriptions":{"typeIdentifier":"t_struct$_StringSlot_$10929_storage_ptr","typeString":"struct StorageSlot.StringSlot"}},"visibility":"internal"}],"src":"3254:22:44"},"scope":11032,"src":"3195:161:44","stateMutability":"pure","virtual":false,"visibility":"internal"},{"body":{"id":11008,"nodeType":"Block","src":"3558:85:44","statements":[{"AST":{"nativeSrc":"3593:44:44","nodeType":"YulBlock","src":"3593:44:44","statements":[{"nativeSrc":"3607:20:44","nodeType":"YulAssignment","src":"3607:20:44","value":{"name":"store.slot","nativeSrc":"3617:10:44","nodeType":"YulIdentifier","src":"3617:10:44"},"variableNames":[{"name":"r.slot","nativeSrc":"3607:6:44","nodeType":"YulIdentifier","src":"3607:6:44"}]}]},"evmVersion":"prague","externalReferences":[{"declaration":11005,"isOffset":false,"isSlot":true,"src":"3607:6:44","suffix":"slot","valueSize":1},{"declaration":11001,"isOffset":false,"isSlot":true,"src":"3617:10:44","suffix":"slot","valueSize":1}],"flags":["memory-safe"],"id":11007,"nodeType":"InlineAssembly","src":"3568:69:44"}]},"documentation":{"id":10999,"nodeType":"StructuredDocumentation","src":"3362:101:44","text":" @dev Returns an `StringSlot` representation of the string storage pointer `store`."},"id":11009,"implemented":true,"kind":"function","modifiers":[],"name":"getStringSlot","nameLocation":"3477:13:44","nodeType":"FunctionDefinition","parameters":{"id":11002,"nodeType":"ParameterList","parameters":[{"constant":false,"id":11001,"mutability":"mutable","name":"store","nameLocation":"3506:5:44","nodeType":"VariableDeclaration","scope":11009,"src":"3491:20:44","stateVariable":false,"storageLocation":"storage","typeDescriptions":{"typeIdentifier":"t_string_storage_ptr","typeString":"string"},"typeName":{"id":11000,"name":"string","nodeType":"ElementaryTypeName","src":"3491:6:44","typeDescriptions":{"typeIdentifier":"t_string_storage_ptr","typeString":"string"}},"visibility":"internal"}],"src":"3490:22:44"},"returnParameters":{"id":11006,"nodeType":"ParameterList","parameters":[{"constant":false,"id":11005,"mutability":"mutable","name":"r","nameLocation":"3555:1:44","nodeType":"VariableDeclaration","scope":11009,"src":"3536:20:44","stateVariable":false,"storageLocation":"storage","typeDescriptions":{"typeIdentifier":"t_struct$_StringSlot_$10929_storage_ptr","typeString":"struct StorageSlot.StringSlot"},"typeName":{"id":11004,"nodeType":"UserDefinedTypeName","pathNode":{"id":11003,"name":"StringSlot","nameLocations":["3536:10:44"],"nodeType":"IdentifierPath","referencedDeclaration":10929,"src":"3536:10:44"},"referencedDeclaration":10929,"src":"3536:10:44","typeDescriptions":{"typeIdentifier":"t_struct$_StringSlot_$10929_storage_ptr","typeString":"struct StorageSlot.StringSlot"}},"visibility":"internal"}],"src":"3535:22:44"},"scope":11032,"src":"3468:175:44","stateMutability":"pure","virtual":false,"visibility":"internal"},{"body":{"id":11019,"nodeType":"Block","src":"3818:79:44","statements":[{"AST":{"nativeSrc":"3853:38:44","nodeType":"YulBlock","src":"3853:38:44","statements":[{"nativeSrc":"3867:14:44","nodeType":"YulAssignment","src":"3867:14:44","value":{"name":"slot","nativeSrc":"3877:4:44","nodeType":"YulIdentifier","src":"3877:4:44"},"variableNames":[{"name":"r.slot","nativeSrc":"3867:6:44","nodeType":"YulIdentifier","src":"3867:6:44"}]}]},"evmVersion":"prague","externalReferences":[{"declaration":11016,"isOffset":false,"isSlot":true,"src":"3867:6:44","suffix":"slot","valueSize":1},{"declaration":11012,"isOffset":false,"isSlot":false,"src":"3877:4:44","valueSize":1}],"flags":["memory-safe"],"id":11018,"nodeType":"InlineAssembly","src":"3828:63:44"}]},"documentation":{"id":11010,"nodeType":"StructuredDocumentation","src":"3649:84:44","text":" @dev Returns a `BytesSlot` with member `value` located at `slot`."},"id":11020,"implemented":true,"kind":"function","modifiers":[],"name":"getBytesSlot","nameLocation":"3747:12:44","nodeType":"FunctionDefinition","parameters":{"id":11013,"nodeType":"ParameterList","parameters":[{"constant":false,"id":11012,"mutability":"mutable","name":"slot","nameLocation":"3768:4:44","nodeType":"VariableDeclaration","scope":11020,"src":"3760:12:44","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":11011,"name":"bytes32","nodeType":"ElementaryTypeName","src":"3760:7:44","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"}],"src":"3759:14:44"},"returnParameters":{"id":11017,"nodeType":"ParameterList","parameters":[{"constant":false,"id":11016,"mutability":"mutable","name":"r","nameLocation":"3815:1:44","nodeType":"VariableDeclaration","scope":11020,"src":"3797:19:44","stateVariable":false,"storageLocation":"storage","typeDescriptions":{"typeIdentifier":"t_struct$_BytesSlot_$10932_storage_ptr","typeString":"struct StorageSlot.BytesSlot"},"typeName":{"id":11015,"nodeType":"UserDefinedTypeName","pathNode":{"id":11014,"name":"BytesSlot","nameLocations":["3797:9:44"],"nodeType":"IdentifierPath","referencedDeclaration":10932,"src":"3797:9:44"},"referencedDeclaration":10932,"src":"3797:9:44","typeDescriptions":{"typeIdentifier":"t_struct$_BytesSlot_$10932_storage_ptr","typeString":"struct StorageSlot.BytesSlot"}},"visibility":"internal"}],"src":"3796:21:44"},"scope":11032,"src":"3738:159:44","stateMutability":"pure","virtual":false,"visibility":"internal"},{"body":{"id":11030,"nodeType":"Block","src":"4094:85:44","statements":[{"AST":{"nativeSrc":"4129:44:44","nodeType":"YulBlock","src":"4129:44:44","statements":[{"nativeSrc":"4143:20:44","nodeType":"YulAssignment","src":"4143:20:44","value":{"name":"store.slot","nativeSrc":"4153:10:44","nodeType":"YulIdentifier","src":"4153:10:44"},"variableNames":[{"name":"r.slot","nativeSrc":"4143:6:44","nodeType":"YulIdentifier","src":"4143:6:44"}]}]},"evmVersion":"prague","externalReferences":[{"declaration":11027,"isOffset":false,"isSlot":true,"src":"4143:6:44","suffix":"slot","valueSize":1},{"declaration":11023,"isOffset":false,"isSlot":true,"src":"4153:10:44","suffix":"slot","valueSize":1}],"flags":["memory-safe"],"id":11029,"nodeType":"InlineAssembly","src":"4104:69:44"}]},"documentation":{"id":11021,"nodeType":"StructuredDocumentation","src":"3903:99:44","text":" @dev Returns an `BytesSlot` representation of the bytes storage pointer `store`."},"id":11031,"implemented":true,"kind":"function","modifiers":[],"name":"getBytesSlot","nameLocation":"4016:12:44","nodeType":"FunctionDefinition","parameters":{"id":11024,"nodeType":"ParameterList","parameters":[{"constant":false,"id":11023,"mutability":"mutable","name":"store","nameLocation":"4043:5:44","nodeType":"VariableDeclaration","scope":11031,"src":"4029:19:44","stateVariable":false,"storageLocation":"storage","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"},"typeName":{"id":11022,"name":"bytes","nodeType":"ElementaryTypeName","src":"4029:5:44","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"}],"src":"4028:21:44"},"returnParameters":{"id":11028,"nodeType":"ParameterList","parameters":[{"constant":false,"id":11027,"mutability":"mutable","name":"r","nameLocation":"4091:1:44","nodeType":"VariableDeclaration","scope":11031,"src":"4073:19:44","stateVariable":false,"storageLocation":"storage","typeDescriptions":{"typeIdentifier":"t_struct$_BytesSlot_$10932_storage_ptr","typeString":"struct StorageSlot.BytesSlot"},"typeName":{"id":11026,"nodeType":"UserDefinedTypeName","pathNode":{"id":11025,"name":"BytesSlot","nameLocations":["4073:9:44"],"nodeType":"IdentifierPath","referencedDeclaration":10932,"src":"4073:9:44"},"referencedDeclaration":10932,"src":"4073:9:44","typeDescriptions":{"typeIdentifier":"t_struct$_BytesSlot_$10932_storage_ptr","typeString":"struct StorageSlot.BytesSlot"}},"visibility":"internal"}],"src":"4072:21:44"},"scope":11032,"src":"4007:172:44","stateMutability":"pure","virtual":false,"visibility":"internal"}],"scope":11033,"src":"1407:2774:44","usedErrors":[],"usedEvents":[]}],"src":"193:3989:44"},"id":44},"@openzeppelin/contracts/utils/cryptography/Hashes.sol":{"ast":{"absolutePath":"@openzeppelin/contracts/utils/cryptography/Hashes.sol","exportedSymbols":{"Hashes":[11072]},"id":11073,"license":"MIT","nodeType":"SourceUnit","nodes":[{"id":11034,"literals":["solidity","^","0.8",".20"],"nodeType":"PragmaDirective","src":"113:24:45"},{"abstract":false,"baseContracts":[],"canonicalName":"Hashes","contractDependencies":[],"contractKind":"library","documentation":{"id":11035,"nodeType":"StructuredDocumentation","src":"139:81:45","text":" @dev Library of standard hash functions.\n _Available since v5.1._"},"fullyImplemented":true,"id":11072,"linearizedBaseContracts":[11072],"name":"Hashes","nameLocation":"229:6:45","nodeType":"ContractDefinition","nodes":[{"body":{"id":11058,"nodeType":"Block","src":"588:83:45","statements":[{"expression":{"condition":{"commonType":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"id":11047,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":11045,"name":"a","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":11038,"src":"605:1:45","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"nodeType":"BinaryOperation","operator":"<","rightExpression":{"id":11046,"name":"b","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":11040,"src":"609:1:45","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"src":"605:5:45","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"falseExpression":{"arguments":[{"id":11053,"name":"b","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":11040,"src":"659:1:45","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},{"id":11054,"name":"a","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":11038,"src":"662:1:45","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes32","typeString":"bytes32"},{"typeIdentifier":"t_bytes32","typeString":"bytes32"}],"id":11052,"name":"efficientKeccak256","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":11071,"src":"640:18:45","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_bytes32_$_t_bytes32_$returns$_t_bytes32_$","typeString":"function (bytes32,bytes32) pure returns (bytes32)"}},"id":11055,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"640:24:45","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"id":11056,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"Conditional","src":"605:59:45","trueExpression":{"arguments":[{"id":11049,"name":"a","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":11038,"src":"632:1:45","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},{"id":11050,"name":"b","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":11040,"src":"635:1:45","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes32","typeString":"bytes32"},{"typeIdentifier":"t_bytes32","typeString":"bytes32"}],"id":11048,"name":"efficientKeccak256","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":11071,"src":"613:18:45","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_bytes32_$_t_bytes32_$returns$_t_bytes32_$","typeString":"function (bytes32,bytes32) pure returns (bytes32)"}},"id":11051,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"613:24:45","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"functionReturnParameters":11044,"id":11057,"nodeType":"Return","src":"598:66:45"}]},"documentation":{"id":11036,"nodeType":"StructuredDocumentation","src":"242:257:45","text":" @dev Commutative Keccak256 hash of a sorted pair of bytes32. Frequently used when working with merkle proofs.\n NOTE: Equivalent to the `standardNodeHash` in our https://github.com/OpenZeppelin/merkle-tree[JavaScript library]."},"id":11059,"implemented":true,"kind":"function","modifiers":[],"name":"commutativeKeccak256","nameLocation":"513:20:45","nodeType":"FunctionDefinition","parameters":{"id":11041,"nodeType":"ParameterList","parameters":[{"constant":false,"id":11038,"mutability":"mutable","name":"a","nameLocation":"542:1:45","nodeType":"VariableDeclaration","scope":11059,"src":"534:9:45","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":11037,"name":"bytes32","nodeType":"ElementaryTypeName","src":"534:7:45","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"},{"constant":false,"id":11040,"mutability":"mutable","name":"b","nameLocation":"553:1:45","nodeType":"VariableDeclaration","scope":11059,"src":"545:9:45","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":11039,"name":"bytes32","nodeType":"ElementaryTypeName","src":"545:7:45","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"}],"src":"533:22:45"},"returnParameters":{"id":11044,"nodeType":"ParameterList","parameters":[{"constant":false,"id":11043,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":11059,"src":"579:7:45","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":11042,"name":"bytes32","nodeType":"ElementaryTypeName","src":"579:7:45","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"}],"src":"578:9:45"},"scope":11072,"src":"504:167:45","stateMutability":"pure","virtual":false,"visibility":"internal"},{"body":{"id":11070,"nodeType":"Block","src":"879:151:45","statements":[{"AST":{"nativeSrc":"914:110:45","nodeType":"YulBlock","src":"914:110:45","statements":[{"expression":{"arguments":[{"kind":"number","nativeSrc":"935:4:45","nodeType":"YulLiteral","src":"935:4:45","type":"","value":"0x00"},{"name":"a","nativeSrc":"941:1:45","nodeType":"YulIdentifier","src":"941:1:45"}],"functionName":{"name":"mstore","nativeSrc":"928:6:45","nodeType":"YulIdentifier","src":"928:6:45"},"nativeSrc":"928:15:45","nodeType":"YulFunctionCall","src":"928:15:45"},"nativeSrc":"928:15:45","nodeType":"YulExpressionStatement","src":"928:15:45"},{"expression":{"arguments":[{"kind":"number","nativeSrc":"963:4:45","nodeType":"YulLiteral","src":"963:4:45","type":"","value":"0x20"},{"name":"b","nativeSrc":"969:1:45","nodeType":"YulIdentifier","src":"969:1:45"}],"functionName":{"name":"mstore","nativeSrc":"956:6:45","nodeType":"YulIdentifier","src":"956:6:45"},"nativeSrc":"956:15:45","nodeType":"YulFunctionCall","src":"956:15:45"},"nativeSrc":"956:15:45","nodeType":"YulExpressionStatement","src":"956:15:45"},{"nativeSrc":"984:30:45","nodeType":"YulAssignment","src":"984:30:45","value":{"arguments":[{"kind":"number","nativeSrc":"1003:4:45","nodeType":"YulLiteral","src":"1003:4:45","type":"","value":"0x00"},{"kind":"number","nativeSrc":"1009:4:45","nodeType":"YulLiteral","src":"1009:4:45","type":"","value":"0x40"}],"functionName":{"name":"keccak256","nativeSrc":"993:9:45","nodeType":"YulIdentifier","src":"993:9:45"},"nativeSrc":"993:21:45","nodeType":"YulFunctionCall","src":"993:21:45"},"variableNames":[{"name":"value","nativeSrc":"984:5:45","nodeType":"YulIdentifier","src":"984:5:45"}]}]},"evmVersion":"prague","externalReferences":[{"declaration":11062,"isOffset":false,"isSlot":false,"src":"941:1:45","valueSize":1},{"declaration":11064,"isOffset":false,"isSlot":false,"src":"969:1:45","valueSize":1},{"declaration":11067,"isOffset":false,"isSlot":false,"src":"984:5:45","valueSize":1}],"flags":["memory-safe"],"id":11069,"nodeType":"InlineAssembly","src":"889:135:45"}]},"documentation":{"id":11060,"nodeType":"StructuredDocumentation","src":"677:109:45","text":" @dev Implementation of keccak256(abi.encode(a, b)) that doesn't allocate or expand memory."},"id":11071,"implemented":true,"kind":"function","modifiers":[],"name":"efficientKeccak256","nameLocation":"800:18:45","nodeType":"FunctionDefinition","parameters":{"id":11065,"nodeType":"ParameterList","parameters":[{"constant":false,"id":11062,"mutability":"mutable","name":"a","nameLocation":"827:1:45","nodeType":"VariableDeclaration","scope":11071,"src":"819:9:45","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":11061,"name":"bytes32","nodeType":"ElementaryTypeName","src":"819:7:45","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"},{"constant":false,"id":11064,"mutability":"mutable","name":"b","nameLocation":"838:1:45","nodeType":"VariableDeclaration","scope":11071,"src":"830:9:45","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":11063,"name":"bytes32","nodeType":"ElementaryTypeName","src":"830:7:45","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"}],"src":"818:22:45"},"returnParameters":{"id":11068,"nodeType":"ParameterList","parameters":[{"constant":false,"id":11067,"mutability":"mutable","name":"value","nameLocation":"872:5:45","nodeType":"VariableDeclaration","scope":11071,"src":"864:13:45","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":11066,"name":"bytes32","nodeType":"ElementaryTypeName","src":"864:7:45","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"}],"src":"863:15:45"},"scope":11072,"src":"791:239:45","stateMutability":"pure","virtual":false,"visibility":"internal"}],"scope":11073,"src":"221:811:45","usedErrors":[],"usedEvents":[]}],"src":"113:920:45"},"id":45},"@openzeppelin/contracts/utils/introspection/IERC165.sol":{"ast":{"absolutePath":"@openzeppelin/contracts/utils/introspection/IERC165.sol","exportedSymbols":{"IERC165":[11084]},"id":11085,"license":"MIT","nodeType":"SourceUnit","nodes":[{"id":11074,"literals":["solidity",">=","0.4",".16"],"nodeType":"PragmaDirective","src":"115:25:46"},{"abstract":false,"baseContracts":[],"canonicalName":"IERC165","contractDependencies":[],"contractKind":"interface","documentation":{"id":11075,"nodeType":"StructuredDocumentation","src":"142:280:46","text":" @dev Interface of the ERC-165 standard, as defined in the\n https://eips.ethereum.org/EIPS/eip-165[ERC].\n Implementers can declare support of contract interfaces, which can then be\n queried by others ({ERC165Checker}).\n For an implementation, see {ERC165}."},"fullyImplemented":false,"id":11084,"linearizedBaseContracts":[11084],"name":"IERC165","nameLocation":"433:7:46","nodeType":"ContractDefinition","nodes":[{"documentation":{"id":11076,"nodeType":"StructuredDocumentation","src":"447:340:46","text":" @dev Returns true if this contract implements the interface defined by\n `interfaceId`. See the corresponding\n https://eips.ethereum.org/EIPS/eip-165#how-interfaces-are-identified[ERC section]\n to learn more about how these ids are created.\n This function call must use less than 30 000 gas."},"functionSelector":"01ffc9a7","id":11083,"implemented":false,"kind":"function","modifiers":[],"name":"supportsInterface","nameLocation":"801:17:46","nodeType":"FunctionDefinition","parameters":{"id":11079,"nodeType":"ParameterList","parameters":[{"constant":false,"id":11078,"mutability":"mutable","name":"interfaceId","nameLocation":"826:11:46","nodeType":"VariableDeclaration","scope":11083,"src":"819:18:46","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes4","typeString":"bytes4"},"typeName":{"id":11077,"name":"bytes4","nodeType":"ElementaryTypeName","src":"819:6:46","typeDescriptions":{"typeIdentifier":"t_bytes4","typeString":"bytes4"}},"visibility":"internal"}],"src":"818:20:46"},"returnParameters":{"id":11082,"nodeType":"ParameterList","parameters":[{"constant":false,"id":11081,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":11083,"src":"862:4:46","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":11080,"name":"bool","nodeType":"ElementaryTypeName","src":"862:4:46","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"}],"src":"861:6:46"},"scope":11084,"src":"792:76:46","stateMutability":"view","virtual":false,"visibility":"external"}],"scope":11085,"src":"423:447:46","usedErrors":[],"usedEvents":[]}],"src":"115:756:46"},"id":46},"@openzeppelin/contracts/utils/math/Math.sol":{"ast":{"absolutePath":"@openzeppelin/contracts/utils/math/Math.sol","exportedSymbols":{"Math":[12726],"Panic":[10908],"SafeCast":[14491]},"id":12727,"license":"MIT","nodeType":"SourceUnit","nodes":[{"id":11086,"literals":["solidity","^","0.8",".20"],"nodeType":"PragmaDirective","src":"103:24:47"},{"absolutePath":"@openzeppelin/contracts/utils/Panic.sol","file":"../Panic.sol","id":11088,"nameLocation":"-1:-1:-1","nodeType":"ImportDirective","scope":12727,"sourceUnit":10909,"src":"129:35:47","symbolAliases":[{"foreign":{"id":11087,"name":"Panic","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10908,"src":"137:5:47","typeDescriptions":{}},"nameLocation":"-1:-1:-1"}],"unitAlias":""},{"absolutePath":"@openzeppelin/contracts/utils/math/SafeCast.sol","file":"./SafeCast.sol","id":11090,"nameLocation":"-1:-1:-1","nodeType":"ImportDirective","scope":12727,"sourceUnit":14492,"src":"165:40:47","symbolAliases":[{"foreign":{"id":11089,"name":"SafeCast","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":14491,"src":"173:8:47","typeDescriptions":{}},"nameLocation":"-1:-1:-1"}],"unitAlias":""},{"abstract":false,"baseContracts":[],"canonicalName":"Math","contractDependencies":[],"contractKind":"library","documentation":{"id":11091,"nodeType":"StructuredDocumentation","src":"207:73:47","text":" @dev Standard math utilities missing in the Solidity language."},"fullyImplemented":true,"id":12726,"linearizedBaseContracts":[12726],"name":"Math","nameLocation":"289:4:47","nodeType":"ContractDefinition","nodes":[{"canonicalName":"Math.Rounding","id":11096,"members":[{"id":11092,"name":"Floor","nameLocation":"324:5:47","nodeType":"EnumValue","src":"324:5:47"},{"id":11093,"name":"Ceil","nameLocation":"367:4:47","nodeType":"EnumValue","src":"367:4:47"},{"id":11094,"name":"Trunc","nameLocation":"409:5:47","nodeType":"EnumValue","src":"409:5:47"},{"id":11095,"name":"Expand","nameLocation":"439:6:47","nodeType":"EnumValue","src":"439:6:47"}],"name":"Rounding","nameLocation":"305:8:47","nodeType":"EnumDefinition","src":"300:169:47"},{"body":{"id":11109,"nodeType":"Block","src":"731:112:47","statements":[{"AST":{"nativeSrc":"766:71:47","nodeType":"YulBlock","src":"766:71:47","statements":[{"nativeSrc":"780:16:47","nodeType":"YulAssignment","src":"780:16:47","value":{"arguments":[{"name":"a","nativeSrc":"791:1:47","nodeType":"YulIdentifier","src":"791:1:47"},{"name":"b","nativeSrc":"794:1:47","nodeType":"YulIdentifier","src":"794:1:47"}],"functionName":{"name":"add","nativeSrc":"787:3:47","nodeType":"YulIdentifier","src":"787:3:47"},"nativeSrc":"787:9:47","nodeType":"YulFunctionCall","src":"787:9:47"},"variableNames":[{"name":"low","nativeSrc":"780:3:47","nodeType":"YulIdentifier","src":"780:3:47"}]},{"nativeSrc":"809:18:47","nodeType":"YulAssignment","src":"809:18:47","value":{"arguments":[{"name":"low","nativeSrc":"820:3:47","nodeType":"YulIdentifier","src":"820:3:47"},{"name":"a","nativeSrc":"825:1:47","nodeType":"YulIdentifier","src":"825:1:47"}],"functionName":{"name":"lt","nativeSrc":"817:2:47","nodeType":"YulIdentifier","src":"817:2:47"},"nativeSrc":"817:10:47","nodeType":"YulFunctionCall","src":"817:10:47"},"variableNames":[{"name":"high","nativeSrc":"809:4:47","nodeType":"YulIdentifier","src":"809:4:47"}]}]},"evmVersion":"prague","externalReferences":[{"declaration":11099,"isOffset":false,"isSlot":false,"src":"791:1:47","valueSize":1},{"declaration":11099,"isOffset":false,"isSlot":false,"src":"825:1:47","valueSize":1},{"declaration":11101,"isOffset":false,"isSlot":false,"src":"794:1:47","valueSize":1},{"declaration":11104,"isOffset":false,"isSlot":false,"src":"809:4:47","valueSize":1},{"declaration":11106,"isOffset":false,"isSlot":false,"src":"780:3:47","valueSize":1},{"declaration":11106,"isOffset":false,"isSlot":false,"src":"820:3:47","valueSize":1}],"flags":["memory-safe"],"id":11108,"nodeType":"InlineAssembly","src":"741:96:47"}]},"documentation":{"id":11097,"nodeType":"StructuredDocumentation","src":"475:163:47","text":" @dev Return the 512-bit addition of two uint256.\n The result is stored in two 256 variables such that sum = high * 2²⁵⁶ + low."},"id":11110,"implemented":true,"kind":"function","modifiers":[],"name":"add512","nameLocation":"652:6:47","nodeType":"FunctionDefinition","parameters":{"id":11102,"nodeType":"ParameterList","parameters":[{"constant":false,"id":11099,"mutability":"mutable","name":"a","nameLocation":"667:1:47","nodeType":"VariableDeclaration","scope":11110,"src":"659:9:47","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":11098,"name":"uint256","nodeType":"ElementaryTypeName","src":"659:7:47","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":11101,"mutability":"mutable","name":"b","nameLocation":"678:1:47","nodeType":"VariableDeclaration","scope":11110,"src":"670:9:47","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":11100,"name":"uint256","nodeType":"ElementaryTypeName","src":"670:7:47","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"658:22:47"},"returnParameters":{"id":11107,"nodeType":"ParameterList","parameters":[{"constant":false,"id":11104,"mutability":"mutable","name":"high","nameLocation":"712:4:47","nodeType":"VariableDeclaration","scope":11110,"src":"704:12:47","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":11103,"name":"uint256","nodeType":"ElementaryTypeName","src":"704:7:47","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":11106,"mutability":"mutable","name":"low","nameLocation":"726:3:47","nodeType":"VariableDeclaration","scope":11110,"src":"718:11:47","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":11105,"name":"uint256","nodeType":"ElementaryTypeName","src":"718:7:47","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"703:27:47"},"scope":12726,"src":"643:200:47","stateMutability":"pure","virtual":false,"visibility":"internal"},{"body":{"id":11123,"nodeType":"Block","src":"1115:462:47","statements":[{"AST":{"nativeSrc":"1437:134:47","nodeType":"YulBlock","src":"1437:134:47","statements":[{"nativeSrc":"1451:30:47","nodeType":"YulVariableDeclaration","src":"1451:30:47","value":{"arguments":[{"name":"a","nativeSrc":"1468:1:47","nodeType":"YulIdentifier","src":"1468:1:47"},{"name":"b","nativeSrc":"1471:1:47","nodeType":"YulIdentifier","src":"1471:1:47"},{"arguments":[{"kind":"number","nativeSrc":"1478:1:47","nodeType":"YulLiteral","src":"1478:1:47","type":"","value":"0"}],"functionName":{"name":"not","nativeSrc":"1474:3:47","nodeType":"YulIdentifier","src":"1474:3:47"},"nativeSrc":"1474:6:47","nodeType":"YulFunctionCall","src":"1474:6:47"}],"functionName":{"name":"mulmod","nativeSrc":"1461:6:47","nodeType":"YulIdentifier","src":"1461:6:47"},"nativeSrc":"1461:20:47","nodeType":"YulFunctionCall","src":"1461:20:47"},"variables":[{"name":"mm","nativeSrc":"1455:2:47","nodeType":"YulTypedName","src":"1455:2:47","type":""}]},{"nativeSrc":"1494:16:47","nodeType":"YulAssignment","src":"1494:16:47","value":{"arguments":[{"name":"a","nativeSrc":"1505:1:47","nodeType":"YulIdentifier","src":"1505:1:47"},{"name":"b","nativeSrc":"1508:1:47","nodeType":"YulIdentifier","src":"1508:1:47"}],"functionName":{"name":"mul","nativeSrc":"1501:3:47","nodeType":"YulIdentifier","src":"1501:3:47"},"nativeSrc":"1501:9:47","nodeType":"YulFunctionCall","src":"1501:9:47"},"variableNames":[{"name":"low","nativeSrc":"1494:3:47","nodeType":"YulIdentifier","src":"1494:3:47"}]},{"nativeSrc":"1523:38:47","nodeType":"YulAssignment","src":"1523:38:47","value":{"arguments":[{"arguments":[{"name":"mm","nativeSrc":"1539:2:47","nodeType":"YulIdentifier","src":"1539:2:47"},{"name":"low","nativeSrc":"1543:3:47","nodeType":"YulIdentifier","src":"1543:3:47"}],"functionName":{"name":"sub","nativeSrc":"1535:3:47","nodeType":"YulIdentifier","src":"1535:3:47"},"nativeSrc":"1535:12:47","nodeType":"YulFunctionCall","src":"1535:12:47"},{"arguments":[{"name":"mm","nativeSrc":"1552:2:47","nodeType":"YulIdentifier","src":"1552:2:47"},{"name":"low","nativeSrc":"1556:3:47","nodeType":"YulIdentifier","src":"1556:3:47"}],"functionName":{"name":"lt","nativeSrc":"1549:2:47","nodeType":"YulIdentifier","src":"1549:2:47"},"nativeSrc":"1549:11:47","nodeType":"YulFunctionCall","src":"1549:11:47"}],"functionName":{"name":"sub","nativeSrc":"1531:3:47","nodeType":"YulIdentifier","src":"1531:3:47"},"nativeSrc":"1531:30:47","nodeType":"YulFunctionCall","src":"1531:30:47"},"variableNames":[{"name":"high","nativeSrc":"1523:4:47","nodeType":"YulIdentifier","src":"1523:4:47"}]}]},"evmVersion":"prague","externalReferences":[{"declaration":11113,"isOffset":false,"isSlot":false,"src":"1468:1:47","valueSize":1},{"declaration":11113,"isOffset":false,"isSlot":false,"src":"1505:1:47","valueSize":1},{"declaration":11115,"isOffset":false,"isSlot":false,"src":"1471:1:47","valueSize":1},{"declaration":11115,"isOffset":false,"isSlot":false,"src":"1508:1:47","valueSize":1},{"declaration":11118,"isOffset":false,"isSlot":false,"src":"1523:4:47","valueSize":1},{"declaration":11120,"isOffset":false,"isSlot":false,"src":"1494:3:47","valueSize":1},{"declaration":11120,"isOffset":false,"isSlot":false,"src":"1543:3:47","valueSize":1},{"declaration":11120,"isOffset":false,"isSlot":false,"src":"1556:3:47","valueSize":1}],"flags":["memory-safe"],"id":11122,"nodeType":"InlineAssembly","src":"1412:159:47"}]},"documentation":{"id":11111,"nodeType":"StructuredDocumentation","src":"849:173:47","text":" @dev Return the 512-bit multiplication of two uint256.\n The result is stored in two 256 variables such that product = high * 2²⁵⁶ + low."},"id":11124,"implemented":true,"kind":"function","modifiers":[],"name":"mul512","nameLocation":"1036:6:47","nodeType":"FunctionDefinition","parameters":{"id":11116,"nodeType":"ParameterList","parameters":[{"constant":false,"id":11113,"mutability":"mutable","name":"a","nameLocation":"1051:1:47","nodeType":"VariableDeclaration","scope":11124,"src":"1043:9:47","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":11112,"name":"uint256","nodeType":"ElementaryTypeName","src":"1043:7:47","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":11115,"mutability":"mutable","name":"b","nameLocation":"1062:1:47","nodeType":"VariableDeclaration","scope":11124,"src":"1054:9:47","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":11114,"name":"uint256","nodeType":"ElementaryTypeName","src":"1054:7:47","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"1042:22:47"},"returnParameters":{"id":11121,"nodeType":"ParameterList","parameters":[{"constant":false,"id":11118,"mutability":"mutable","name":"high","nameLocation":"1096:4:47","nodeType":"VariableDeclaration","scope":11124,"src":"1088:12:47","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":11117,"name":"uint256","nodeType":"ElementaryTypeName","src":"1088:7:47","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":11120,"mutability":"mutable","name":"low","nameLocation":"1110:3:47","nodeType":"VariableDeclaration","scope":11124,"src":"1102:11:47","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":11119,"name":"uint256","nodeType":"ElementaryTypeName","src":"1102:7:47","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"1087:27:47"},"scope":12726,"src":"1027:550:47","stateMutability":"pure","virtual":false,"visibility":"internal"},{"body":{"id":11158,"nodeType":"Block","src":"1784:149:47","statements":[{"id":11157,"nodeType":"UncheckedBlock","src":"1794:133:47","statements":[{"assignments":[11137],"declarations":[{"constant":false,"id":11137,"mutability":"mutable","name":"c","nameLocation":"1826:1:47","nodeType":"VariableDeclaration","scope":11157,"src":"1818:9:47","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":11136,"name":"uint256","nodeType":"ElementaryTypeName","src":"1818:7:47","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":11141,"initialValue":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":11140,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":11138,"name":"a","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":11127,"src":"1830:1:47","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"+","rightExpression":{"id":11139,"name":"b","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":11129,"src":"1834:1:47","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"1830:5:47","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"VariableDeclarationStatement","src":"1818:17:47"},{"expression":{"id":11146,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":11142,"name":"success","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":11132,"src":"1849:7:47","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":11145,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":11143,"name":"c","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":11137,"src":"1859:1:47","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">=","rightExpression":{"id":11144,"name":"a","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":11127,"src":"1864:1:47","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"1859:6:47","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"src":"1849:16:47","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":11147,"nodeType":"ExpressionStatement","src":"1849:16:47"},{"expression":{"id":11155,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":11148,"name":"result","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":11134,"src":"1879:6:47","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":11154,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":11149,"name":"c","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":11137,"src":"1888:1:47","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"*","rightExpression":{"arguments":[{"id":11152,"name":"success","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":11132,"src":"1908:7:47","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"}],"expression":{"id":11150,"name":"SafeCast","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":14491,"src":"1892:8:47","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_SafeCast_$14491_$","typeString":"type(library SafeCast)"}},"id":11151,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"1901:6:47","memberName":"toUint","nodeType":"MemberAccess","referencedDeclaration":14490,"src":"1892:15:47","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_bool_$returns$_t_uint256_$","typeString":"function (bool) pure returns (uint256)"}},"id":11153,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"1892:24:47","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"1888:28:47","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"1879:37:47","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":11156,"nodeType":"ExpressionStatement","src":"1879:37:47"}]}]},"documentation":{"id":11125,"nodeType":"StructuredDocumentation","src":"1583:105:47","text":" @dev Returns the addition of two unsigned integers, with a success flag (no overflow)."},"id":11159,"implemented":true,"kind":"function","modifiers":[],"name":"tryAdd","nameLocation":"1702:6:47","nodeType":"FunctionDefinition","parameters":{"id":11130,"nodeType":"ParameterList","parameters":[{"constant":false,"id":11127,"mutability":"mutable","name":"a","nameLocation":"1717:1:47","nodeType":"VariableDeclaration","scope":11159,"src":"1709:9:47","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":11126,"name":"uint256","nodeType":"ElementaryTypeName","src":"1709:7:47","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":11129,"mutability":"mutable","name":"b","nameLocation":"1728:1:47","nodeType":"VariableDeclaration","scope":11159,"src":"1720:9:47","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":11128,"name":"uint256","nodeType":"ElementaryTypeName","src":"1720:7:47","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"1708:22:47"},"returnParameters":{"id":11135,"nodeType":"ParameterList","parameters":[{"constant":false,"id":11132,"mutability":"mutable","name":"success","nameLocation":"1759:7:47","nodeType":"VariableDeclaration","scope":11159,"src":"1754:12:47","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":11131,"name":"bool","nodeType":"ElementaryTypeName","src":"1754:4:47","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"},{"constant":false,"id":11134,"mutability":"mutable","name":"result","nameLocation":"1776:6:47","nodeType":"VariableDeclaration","scope":11159,"src":"1768:14:47","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":11133,"name":"uint256","nodeType":"ElementaryTypeName","src":"1768:7:47","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"1753:30:47"},"scope":12726,"src":"1693:240:47","stateMutability":"pure","virtual":false,"visibility":"internal"},{"body":{"id":11193,"nodeType":"Block","src":"2143:149:47","statements":[{"id":11192,"nodeType":"UncheckedBlock","src":"2153:133:47","statements":[{"assignments":[11172],"declarations":[{"constant":false,"id":11172,"mutability":"mutable","name":"c","nameLocation":"2185:1:47","nodeType":"VariableDeclaration","scope":11192,"src":"2177:9:47","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":11171,"name":"uint256","nodeType":"ElementaryTypeName","src":"2177:7:47","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":11176,"initialValue":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":11175,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":11173,"name":"a","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":11162,"src":"2189:1:47","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"-","rightExpression":{"id":11174,"name":"b","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":11164,"src":"2193:1:47","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"2189:5:47","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"VariableDeclarationStatement","src":"2177:17:47"},{"expression":{"id":11181,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":11177,"name":"success","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":11167,"src":"2208:7:47","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":11180,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":11178,"name":"c","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":11172,"src":"2218:1:47","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"<=","rightExpression":{"id":11179,"name":"a","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":11162,"src":"2223:1:47","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"2218:6:47","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"src":"2208:16:47","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":11182,"nodeType":"ExpressionStatement","src":"2208:16:47"},{"expression":{"id":11190,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":11183,"name":"result","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":11169,"src":"2238:6:47","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":11189,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":11184,"name":"c","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":11172,"src":"2247:1:47","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"*","rightExpression":{"arguments":[{"id":11187,"name":"success","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":11167,"src":"2267:7:47","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"}],"expression":{"id":11185,"name":"SafeCast","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":14491,"src":"2251:8:47","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_SafeCast_$14491_$","typeString":"type(library SafeCast)"}},"id":11186,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"2260:6:47","memberName":"toUint","nodeType":"MemberAccess","referencedDeclaration":14490,"src":"2251:15:47","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_bool_$returns$_t_uint256_$","typeString":"function (bool) pure returns (uint256)"}},"id":11188,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"2251:24:47","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"2247:28:47","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"2238:37:47","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":11191,"nodeType":"ExpressionStatement","src":"2238:37:47"}]}]},"documentation":{"id":11160,"nodeType":"StructuredDocumentation","src":"1939:108:47","text":" @dev Returns the subtraction of two unsigned integers, with a success flag (no overflow)."},"id":11194,"implemented":true,"kind":"function","modifiers":[],"name":"trySub","nameLocation":"2061:6:47","nodeType":"FunctionDefinition","parameters":{"id":11165,"nodeType":"ParameterList","parameters":[{"constant":false,"id":11162,"mutability":"mutable","name":"a","nameLocation":"2076:1:47","nodeType":"VariableDeclaration","scope":11194,"src":"2068:9:47","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":11161,"name":"uint256","nodeType":"ElementaryTypeName","src":"2068:7:47","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":11164,"mutability":"mutable","name":"b","nameLocation":"2087:1:47","nodeType":"VariableDeclaration","scope":11194,"src":"2079:9:47","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":11163,"name":"uint256","nodeType":"ElementaryTypeName","src":"2079:7:47","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"2067:22:47"},"returnParameters":{"id":11170,"nodeType":"ParameterList","parameters":[{"constant":false,"id":11167,"mutability":"mutable","name":"success","nameLocation":"2118:7:47","nodeType":"VariableDeclaration","scope":11194,"src":"2113:12:47","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":11166,"name":"bool","nodeType":"ElementaryTypeName","src":"2113:4:47","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"},{"constant":false,"id":11169,"mutability":"mutable","name":"result","nameLocation":"2135:6:47","nodeType":"VariableDeclaration","scope":11194,"src":"2127:14:47","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":11168,"name":"uint256","nodeType":"ElementaryTypeName","src":"2127:7:47","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"2112:30:47"},"scope":12726,"src":"2052:240:47","stateMutability":"pure","virtual":false,"visibility":"internal"},{"body":{"id":11223,"nodeType":"Block","src":"2505:391:47","statements":[{"id":11222,"nodeType":"UncheckedBlock","src":"2515:375:47","statements":[{"assignments":[11207],"declarations":[{"constant":false,"id":11207,"mutability":"mutable","name":"c","nameLocation":"2547:1:47","nodeType":"VariableDeclaration","scope":11222,"src":"2539:9:47","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":11206,"name":"uint256","nodeType":"ElementaryTypeName","src":"2539:7:47","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":11211,"initialValue":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":11210,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":11208,"name":"a","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":11197,"src":"2551:1:47","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"*","rightExpression":{"id":11209,"name":"b","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":11199,"src":"2555:1:47","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"2551:5:47","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"VariableDeclarationStatement","src":"2539:17:47"},{"AST":{"nativeSrc":"2595:188:47","nodeType":"YulBlock","src":"2595:188:47","statements":[{"nativeSrc":"2727:42:47","nodeType":"YulAssignment","src":"2727:42:47","value":{"arguments":[{"arguments":[{"arguments":[{"name":"c","nativeSrc":"2748:1:47","nodeType":"YulIdentifier","src":"2748:1:47"},{"name":"a","nativeSrc":"2751:1:47","nodeType":"YulIdentifier","src":"2751:1:47"}],"functionName":{"name":"div","nativeSrc":"2744:3:47","nodeType":"YulIdentifier","src":"2744:3:47"},"nativeSrc":"2744:9:47","nodeType":"YulFunctionCall","src":"2744:9:47"},{"name":"b","nativeSrc":"2755:1:47","nodeType":"YulIdentifier","src":"2755:1:47"}],"functionName":{"name":"eq","nativeSrc":"2741:2:47","nodeType":"YulIdentifier","src":"2741:2:47"},"nativeSrc":"2741:16:47","nodeType":"YulFunctionCall","src":"2741:16:47"},{"arguments":[{"name":"a","nativeSrc":"2766:1:47","nodeType":"YulIdentifier","src":"2766:1:47"}],"functionName":{"name":"iszero","nativeSrc":"2759:6:47","nodeType":"YulIdentifier","src":"2759:6:47"},"nativeSrc":"2759:9:47","nodeType":"YulFunctionCall","src":"2759:9:47"}],"functionName":{"name":"or","nativeSrc":"2738:2:47","nodeType":"YulIdentifier","src":"2738:2:47"},"nativeSrc":"2738:31:47","nodeType":"YulFunctionCall","src":"2738:31:47"},"variableNames":[{"name":"success","nativeSrc":"2727:7:47","nodeType":"YulIdentifier","src":"2727:7:47"}]}]},"evmVersion":"prague","externalReferences":[{"declaration":11197,"isOffset":false,"isSlot":false,"src":"2751:1:47","valueSize":1},{"declaration":11197,"isOffset":false,"isSlot":false,"src":"2766:1:47","valueSize":1},{"declaration":11199,"isOffset":false,"isSlot":false,"src":"2755:1:47","valueSize":1},{"declaration":11207,"isOffset":false,"isSlot":false,"src":"2748:1:47","valueSize":1},{"declaration":11202,"isOffset":false,"isSlot":false,"src":"2727:7:47","valueSize":1}],"flags":["memory-safe"],"id":11212,"nodeType":"InlineAssembly","src":"2570:213:47"},{"expression":{"id":11220,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":11213,"name":"result","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":11204,"src":"2842:6:47","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":11219,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":11214,"name":"c","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":11207,"src":"2851:1:47","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"*","rightExpression":{"arguments":[{"id":11217,"name":"success","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":11202,"src":"2871:7:47","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"}],"expression":{"id":11215,"name":"SafeCast","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":14491,"src":"2855:8:47","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_SafeCast_$14491_$","typeString":"type(library SafeCast)"}},"id":11216,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"2864:6:47","memberName":"toUint","nodeType":"MemberAccess","referencedDeclaration":14490,"src":"2855:15:47","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_bool_$returns$_t_uint256_$","typeString":"function (bool) pure returns (uint256)"}},"id":11218,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"2855:24:47","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"2851:28:47","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"2842:37:47","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":11221,"nodeType":"ExpressionStatement","src":"2842:37:47"}]}]},"documentation":{"id":11195,"nodeType":"StructuredDocumentation","src":"2298:111:47","text":" @dev Returns the multiplication of two unsigned integers, with a success flag (no overflow)."},"id":11224,"implemented":true,"kind":"function","modifiers":[],"name":"tryMul","nameLocation":"2423:6:47","nodeType":"FunctionDefinition","parameters":{"id":11200,"nodeType":"ParameterList","parameters":[{"constant":false,"id":11197,"mutability":"mutable","name":"a","nameLocation":"2438:1:47","nodeType":"VariableDeclaration","scope":11224,"src":"2430:9:47","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":11196,"name":"uint256","nodeType":"ElementaryTypeName","src":"2430:7:47","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":11199,"mutability":"mutable","name":"b","nameLocation":"2449:1:47","nodeType":"VariableDeclaration","scope":11224,"src":"2441:9:47","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":11198,"name":"uint256","nodeType":"ElementaryTypeName","src":"2441:7:47","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"2429:22:47"},"returnParameters":{"id":11205,"nodeType":"ParameterList","parameters":[{"constant":false,"id":11202,"mutability":"mutable","name":"success","nameLocation":"2480:7:47","nodeType":"VariableDeclaration","scope":11224,"src":"2475:12:47","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":11201,"name":"bool","nodeType":"ElementaryTypeName","src":"2475:4:47","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"},{"constant":false,"id":11204,"mutability":"mutable","name":"result","nameLocation":"2497:6:47","nodeType":"VariableDeclaration","scope":11224,"src":"2489:14:47","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":11203,"name":"uint256","nodeType":"ElementaryTypeName","src":"2489:7:47","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"2474:30:47"},"scope":12726,"src":"2414:482:47","stateMutability":"pure","virtual":false,"visibility":"internal"},{"body":{"id":11244,"nodeType":"Block","src":"3111:231:47","statements":[{"id":11243,"nodeType":"UncheckedBlock","src":"3121:215:47","statements":[{"expression":{"id":11240,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":11236,"name":"success","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":11232,"src":"3145:7:47","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":11239,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":11237,"name":"b","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":11229,"src":"3155:1:47","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">","rightExpression":{"hexValue":"30","id":11238,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"3159:1:47","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"3155:5:47","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"src":"3145:15:47","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":11241,"nodeType":"ExpressionStatement","src":"3145:15:47"},{"AST":{"nativeSrc":"3199:127:47","nodeType":"YulBlock","src":"3199:127:47","statements":[{"nativeSrc":"3293:19:47","nodeType":"YulAssignment","src":"3293:19:47","value":{"arguments":[{"name":"a","nativeSrc":"3307:1:47","nodeType":"YulIdentifier","src":"3307:1:47"},{"name":"b","nativeSrc":"3310:1:47","nodeType":"YulIdentifier","src":"3310:1:47"}],"functionName":{"name":"div","nativeSrc":"3303:3:47","nodeType":"YulIdentifier","src":"3303:3:47"},"nativeSrc":"3303:9:47","nodeType":"YulFunctionCall","src":"3303:9:47"},"variableNames":[{"name":"result","nativeSrc":"3293:6:47","nodeType":"YulIdentifier","src":"3293:6:47"}]}]},"evmVersion":"prague","externalReferences":[{"declaration":11227,"isOffset":false,"isSlot":false,"src":"3307:1:47","valueSize":1},{"declaration":11229,"isOffset":false,"isSlot":false,"src":"3310:1:47","valueSize":1},{"declaration":11234,"isOffset":false,"isSlot":false,"src":"3293:6:47","valueSize":1}],"flags":["memory-safe"],"id":11242,"nodeType":"InlineAssembly","src":"3174:152:47"}]}]},"documentation":{"id":11225,"nodeType":"StructuredDocumentation","src":"2902:113:47","text":" @dev Returns the division of two unsigned integers, with a success flag (no division by zero)."},"id":11245,"implemented":true,"kind":"function","modifiers":[],"name":"tryDiv","nameLocation":"3029:6:47","nodeType":"FunctionDefinition","parameters":{"id":11230,"nodeType":"ParameterList","parameters":[{"constant":false,"id":11227,"mutability":"mutable","name":"a","nameLocation":"3044:1:47","nodeType":"VariableDeclaration","scope":11245,"src":"3036:9:47","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":11226,"name":"uint256","nodeType":"ElementaryTypeName","src":"3036:7:47","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":11229,"mutability":"mutable","name":"b","nameLocation":"3055:1:47","nodeType":"VariableDeclaration","scope":11245,"src":"3047:9:47","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":11228,"name":"uint256","nodeType":"ElementaryTypeName","src":"3047:7:47","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"3035:22:47"},"returnParameters":{"id":11235,"nodeType":"ParameterList","parameters":[{"constant":false,"id":11232,"mutability":"mutable","name":"success","nameLocation":"3086:7:47","nodeType":"VariableDeclaration","scope":11245,"src":"3081:12:47","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":11231,"name":"bool","nodeType":"ElementaryTypeName","src":"3081:4:47","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"},{"constant":false,"id":11234,"mutability":"mutable","name":"result","nameLocation":"3103:6:47","nodeType":"VariableDeclaration","scope":11245,"src":"3095:14:47","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":11233,"name":"uint256","nodeType":"ElementaryTypeName","src":"3095:7:47","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"3080:30:47"},"scope":12726,"src":"3020:322:47","stateMutability":"pure","virtual":false,"visibility":"internal"},{"body":{"id":11265,"nodeType":"Block","src":"3567:231:47","statements":[{"id":11264,"nodeType":"UncheckedBlock","src":"3577:215:47","statements":[{"expression":{"id":11261,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":11257,"name":"success","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":11253,"src":"3601:7:47","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":11260,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":11258,"name":"b","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":11250,"src":"3611:1:47","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">","rightExpression":{"hexValue":"30","id":11259,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"3615:1:47","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"3611:5:47","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"src":"3601:15:47","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":11262,"nodeType":"ExpressionStatement","src":"3601:15:47"},{"AST":{"nativeSrc":"3655:127:47","nodeType":"YulBlock","src":"3655:127:47","statements":[{"nativeSrc":"3749:19:47","nodeType":"YulAssignment","src":"3749:19:47","value":{"arguments":[{"name":"a","nativeSrc":"3763:1:47","nodeType":"YulIdentifier","src":"3763:1:47"},{"name":"b","nativeSrc":"3766:1:47","nodeType":"YulIdentifier","src":"3766:1:47"}],"functionName":{"name":"mod","nativeSrc":"3759:3:47","nodeType":"YulIdentifier","src":"3759:3:47"},"nativeSrc":"3759:9:47","nodeType":"YulFunctionCall","src":"3759:9:47"},"variableNames":[{"name":"result","nativeSrc":"3749:6:47","nodeType":"YulIdentifier","src":"3749:6:47"}]}]},"evmVersion":"prague","externalReferences":[{"declaration":11248,"isOffset":false,"isSlot":false,"src":"3763:1:47","valueSize":1},{"declaration":11250,"isOffset":false,"isSlot":false,"src":"3766:1:47","valueSize":1},{"declaration":11255,"isOffset":false,"isSlot":false,"src":"3749:6:47","valueSize":1}],"flags":["memory-safe"],"id":11263,"nodeType":"InlineAssembly","src":"3630:152:47"}]}]},"documentation":{"id":11246,"nodeType":"StructuredDocumentation","src":"3348:123:47","text":" @dev Returns the remainder of dividing two unsigned integers, with a success flag (no division by zero)."},"id":11266,"implemented":true,"kind":"function","modifiers":[],"name":"tryMod","nameLocation":"3485:6:47","nodeType":"FunctionDefinition","parameters":{"id":11251,"nodeType":"ParameterList","parameters":[{"constant":false,"id":11248,"mutability":"mutable","name":"a","nameLocation":"3500:1:47","nodeType":"VariableDeclaration","scope":11266,"src":"3492:9:47","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":11247,"name":"uint256","nodeType":"ElementaryTypeName","src":"3492:7:47","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":11250,"mutability":"mutable","name":"b","nameLocation":"3511:1:47","nodeType":"VariableDeclaration","scope":11266,"src":"3503:9:47","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":11249,"name":"uint256","nodeType":"ElementaryTypeName","src":"3503:7:47","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"3491:22:47"},"returnParameters":{"id":11256,"nodeType":"ParameterList","parameters":[{"constant":false,"id":11253,"mutability":"mutable","name":"success","nameLocation":"3542:7:47","nodeType":"VariableDeclaration","scope":11266,"src":"3537:12:47","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":11252,"name":"bool","nodeType":"ElementaryTypeName","src":"3537:4:47","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"},{"constant":false,"id":11255,"mutability":"mutable","name":"result","nameLocation":"3559:6:47","nodeType":"VariableDeclaration","scope":11266,"src":"3551:14:47","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":11254,"name":"uint256","nodeType":"ElementaryTypeName","src":"3551:7:47","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"3536:30:47"},"scope":12726,"src":"3476:322:47","stateMutability":"pure","virtual":false,"visibility":"internal"},{"body":{"id":11295,"nodeType":"Block","src":"3989:122:47","statements":[{"assignments":[11277,11279],"declarations":[{"constant":false,"id":11277,"mutability":"mutable","name":"success","nameLocation":"4005:7:47","nodeType":"VariableDeclaration","scope":11295,"src":"4000:12:47","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":11276,"name":"bool","nodeType":"ElementaryTypeName","src":"4000:4:47","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"},{"constant":false,"id":11279,"mutability":"mutable","name":"result","nameLocation":"4022:6:47","nodeType":"VariableDeclaration","scope":11295,"src":"4014:14:47","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":11278,"name":"uint256","nodeType":"ElementaryTypeName","src":"4014:7:47","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":11284,"initialValue":{"arguments":[{"id":11281,"name":"a","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":11269,"src":"4039:1:47","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"id":11282,"name":"b","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":11271,"src":"4042:1:47","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":11280,"name":"tryAdd","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":11159,"src":"4032:6:47","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_uint256_$_t_uint256_$returns$_t_bool_$_t_uint256_$","typeString":"function (uint256,uint256) pure returns (bool,uint256)"}},"id":11283,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"4032:12:47","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$_t_bool_$_t_uint256_$","typeString":"tuple(bool,uint256)"}},"nodeType":"VariableDeclarationStatement","src":"3999:45:47"},{"expression":{"arguments":[{"id":11286,"name":"success","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":11277,"src":"4069:7:47","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},{"id":11287,"name":"result","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":11279,"src":"4078:6:47","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"expression":{"arguments":[{"id":11290,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"4091:7:47","typeDescriptions":{"typeIdentifier":"t_type$_t_uint256_$","typeString":"type(uint256)"},"typeName":{"id":11289,"name":"uint256","nodeType":"ElementaryTypeName","src":"4091:7:47","typeDescriptions":{}}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_type$_t_uint256_$","typeString":"type(uint256)"}],"id":11288,"name":"type","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-27,"src":"4086:4:47","typeDescriptions":{"typeIdentifier":"t_function_metatype_pure$__$returns$__$","typeString":"function () pure"}},"id":11291,"isConstant":false,"isLValue":false,"isPure":true,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"4086:13:47","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_magic_meta_type_t_uint256","typeString":"type(uint256)"}},"id":11292,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberLocation":"4100:3:47","memberName":"max","nodeType":"MemberAccess","src":"4086:17:47","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":11285,"name":"ternary","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":11373,"src":"4061:7:47","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_bool_$_t_uint256_$_t_uint256_$returns$_t_uint256_$","typeString":"function (bool,uint256,uint256) pure returns (uint256)"}},"id":11293,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"4061:43:47","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"functionReturnParameters":11275,"id":11294,"nodeType":"Return","src":"4054:50:47"}]},"documentation":{"id":11267,"nodeType":"StructuredDocumentation","src":"3804:103:47","text":" @dev Unsigned saturating addition, bounds to `2²⁵⁶ - 1` instead of overflowing."},"id":11296,"implemented":true,"kind":"function","modifiers":[],"name":"saturatingAdd","nameLocation":"3921:13:47","nodeType":"FunctionDefinition","parameters":{"id":11272,"nodeType":"ParameterList","parameters":[{"constant":false,"id":11269,"mutability":"mutable","name":"a","nameLocation":"3943:1:47","nodeType":"VariableDeclaration","scope":11296,"src":"3935:9:47","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":11268,"name":"uint256","nodeType":"ElementaryTypeName","src":"3935:7:47","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":11271,"mutability":"mutable","name":"b","nameLocation":"3954:1:47","nodeType":"VariableDeclaration","scope":11296,"src":"3946:9:47","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":11270,"name":"uint256","nodeType":"ElementaryTypeName","src":"3946:7:47","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"3934:22:47"},"returnParameters":{"id":11275,"nodeType":"ParameterList","parameters":[{"constant":false,"id":11274,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":11296,"src":"3980:7:47","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":11273,"name":"uint256","nodeType":"ElementaryTypeName","src":"3980:7:47","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"3979:9:47"},"scope":12726,"src":"3912:199:47","stateMutability":"pure","virtual":false,"visibility":"internal"},{"body":{"id":11315,"nodeType":"Block","src":"4294:73:47","statements":[{"assignments":[null,11307],"declarations":[null,{"constant":false,"id":11307,"mutability":"mutable","name":"result","nameLocation":"4315:6:47","nodeType":"VariableDeclaration","scope":11315,"src":"4307:14:47","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":11306,"name":"uint256","nodeType":"ElementaryTypeName","src":"4307:7:47","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":11312,"initialValue":{"arguments":[{"id":11309,"name":"a","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":11299,"src":"4332:1:47","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"id":11310,"name":"b","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":11301,"src":"4335:1:47","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":11308,"name":"trySub","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":11194,"src":"4325:6:47","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_uint256_$_t_uint256_$returns$_t_bool_$_t_uint256_$","typeString":"function (uint256,uint256) pure returns (bool,uint256)"}},"id":11311,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"4325:12:47","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$_t_bool_$_t_uint256_$","typeString":"tuple(bool,uint256)"}},"nodeType":"VariableDeclarationStatement","src":"4304:33:47"},{"expression":{"id":11313,"name":"result","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":11307,"src":"4354:6:47","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"functionReturnParameters":11305,"id":11314,"nodeType":"Return","src":"4347:13:47"}]},"documentation":{"id":11297,"nodeType":"StructuredDocumentation","src":"4117:95:47","text":" @dev Unsigned saturating subtraction, bounds to zero instead of overflowing."},"id":11316,"implemented":true,"kind":"function","modifiers":[],"name":"saturatingSub","nameLocation":"4226:13:47","nodeType":"FunctionDefinition","parameters":{"id":11302,"nodeType":"ParameterList","parameters":[{"constant":false,"id":11299,"mutability":"mutable","name":"a","nameLocation":"4248:1:47","nodeType":"VariableDeclaration","scope":11316,"src":"4240:9:47","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":11298,"name":"uint256","nodeType":"ElementaryTypeName","src":"4240:7:47","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":11301,"mutability":"mutable","name":"b","nameLocation":"4259:1:47","nodeType":"VariableDeclaration","scope":11316,"src":"4251:9:47","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":11300,"name":"uint256","nodeType":"ElementaryTypeName","src":"4251:7:47","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"4239:22:47"},"returnParameters":{"id":11305,"nodeType":"ParameterList","parameters":[{"constant":false,"id":11304,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":11316,"src":"4285:7:47","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":11303,"name":"uint256","nodeType":"ElementaryTypeName","src":"4285:7:47","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"4284:9:47"},"scope":12726,"src":"4217:150:47","stateMutability":"pure","virtual":false,"visibility":"internal"},{"body":{"id":11345,"nodeType":"Block","src":"4564:122:47","statements":[{"assignments":[11327,11329],"declarations":[{"constant":false,"id":11327,"mutability":"mutable","name":"success","nameLocation":"4580:7:47","nodeType":"VariableDeclaration","scope":11345,"src":"4575:12:47","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":11326,"name":"bool","nodeType":"ElementaryTypeName","src":"4575:4:47","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"},{"constant":false,"id":11329,"mutability":"mutable","name":"result","nameLocation":"4597:6:47","nodeType":"VariableDeclaration","scope":11345,"src":"4589:14:47","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":11328,"name":"uint256","nodeType":"ElementaryTypeName","src":"4589:7:47","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":11334,"initialValue":{"arguments":[{"id":11331,"name":"a","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":11319,"src":"4614:1:47","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"id":11332,"name":"b","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":11321,"src":"4617:1:47","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":11330,"name":"tryMul","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":11224,"src":"4607:6:47","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_uint256_$_t_uint256_$returns$_t_bool_$_t_uint256_$","typeString":"function (uint256,uint256) pure returns (bool,uint256)"}},"id":11333,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"4607:12:47","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$_t_bool_$_t_uint256_$","typeString":"tuple(bool,uint256)"}},"nodeType":"VariableDeclarationStatement","src":"4574:45:47"},{"expression":{"arguments":[{"id":11336,"name":"success","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":11327,"src":"4644:7:47","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},{"id":11337,"name":"result","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":11329,"src":"4653:6:47","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"expression":{"arguments":[{"id":11340,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"4666:7:47","typeDescriptions":{"typeIdentifier":"t_type$_t_uint256_$","typeString":"type(uint256)"},"typeName":{"id":11339,"name":"uint256","nodeType":"ElementaryTypeName","src":"4666:7:47","typeDescriptions":{}}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_type$_t_uint256_$","typeString":"type(uint256)"}],"id":11338,"name":"type","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-27,"src":"4661:4:47","typeDescriptions":{"typeIdentifier":"t_function_metatype_pure$__$returns$__$","typeString":"function () pure"}},"id":11341,"isConstant":false,"isLValue":false,"isPure":true,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"4661:13:47","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_magic_meta_type_t_uint256","typeString":"type(uint256)"}},"id":11342,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberLocation":"4675:3:47","memberName":"max","nodeType":"MemberAccess","src":"4661:17:47","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":11335,"name":"ternary","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":11373,"src":"4636:7:47","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_bool_$_t_uint256_$_t_uint256_$returns$_t_uint256_$","typeString":"function (bool,uint256,uint256) pure returns (uint256)"}},"id":11343,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"4636:43:47","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"functionReturnParameters":11325,"id":11344,"nodeType":"Return","src":"4629:50:47"}]},"documentation":{"id":11317,"nodeType":"StructuredDocumentation","src":"4373:109:47","text":" @dev Unsigned saturating multiplication, bounds to `2²⁵⁶ - 1` instead of overflowing."},"id":11346,"implemented":true,"kind":"function","modifiers":[],"name":"saturatingMul","nameLocation":"4496:13:47","nodeType":"FunctionDefinition","parameters":{"id":11322,"nodeType":"ParameterList","parameters":[{"constant":false,"id":11319,"mutability":"mutable","name":"a","nameLocation":"4518:1:47","nodeType":"VariableDeclaration","scope":11346,"src":"4510:9:47","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":11318,"name":"uint256","nodeType":"ElementaryTypeName","src":"4510:7:47","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":11321,"mutability":"mutable","name":"b","nameLocation":"4529:1:47","nodeType":"VariableDeclaration","scope":11346,"src":"4521:9:47","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":11320,"name":"uint256","nodeType":"ElementaryTypeName","src":"4521:7:47","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"4509:22:47"},"returnParameters":{"id":11325,"nodeType":"ParameterList","parameters":[{"constant":false,"id":11324,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":11346,"src":"4555:7:47","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":11323,"name":"uint256","nodeType":"ElementaryTypeName","src":"4555:7:47","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"4554:9:47"},"scope":12726,"src":"4487:199:47","stateMutability":"pure","virtual":false,"visibility":"internal"},{"body":{"id":11372,"nodeType":"Block","src":"5174:207:47","statements":[{"id":11371,"nodeType":"UncheckedBlock","src":"5184:191:47","statements":[{"expression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":11369,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":11358,"name":"b","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":11353,"src":"5322:1:47","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"^","rightExpression":{"components":[{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":11367,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"components":[{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":11361,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":11359,"name":"a","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":11351,"src":"5328:1:47","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"^","rightExpression":{"id":11360,"name":"b","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":11353,"src":"5332:1:47","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"5328:5:47","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"id":11362,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"5327:7:47","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"*","rightExpression":{"arguments":[{"id":11365,"name":"condition","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":11349,"src":"5353:9:47","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"}],"expression":{"id":11363,"name":"SafeCast","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":14491,"src":"5337:8:47","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_SafeCast_$14491_$","typeString":"type(library SafeCast)"}},"id":11364,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"5346:6:47","memberName":"toUint","nodeType":"MemberAccess","referencedDeclaration":14490,"src":"5337:15:47","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_bool_$returns$_t_uint256_$","typeString":"function (bool) pure returns (uint256)"}},"id":11366,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"5337:26:47","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"5327:36:47","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"id":11368,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"5326:38:47","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"5322:42:47","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"functionReturnParameters":11357,"id":11370,"nodeType":"Return","src":"5315:49:47"}]}]},"documentation":{"id":11347,"nodeType":"StructuredDocumentation","src":"4692:390:47","text":" @dev Branchless ternary evaluation for `condition ? a : b`. Gas costs are constant.\n IMPORTANT: This function may reduce bytecode size and consume less gas when used standalone.\n However, the compiler may optimize Solidity ternary operations (i.e. `condition ? a : b`) to only compute\n one branch when needed, making this function more expensive."},"id":11373,"implemented":true,"kind":"function","modifiers":[],"name":"ternary","nameLocation":"5096:7:47","nodeType":"FunctionDefinition","parameters":{"id":11354,"nodeType":"ParameterList","parameters":[{"constant":false,"id":11349,"mutability":"mutable","name":"condition","nameLocation":"5109:9:47","nodeType":"VariableDeclaration","scope":11373,"src":"5104:14:47","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":11348,"name":"bool","nodeType":"ElementaryTypeName","src":"5104:4:47","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"},{"constant":false,"id":11351,"mutability":"mutable","name":"a","nameLocation":"5128:1:47","nodeType":"VariableDeclaration","scope":11373,"src":"5120:9:47","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":11350,"name":"uint256","nodeType":"ElementaryTypeName","src":"5120:7:47","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":11353,"mutability":"mutable","name":"b","nameLocation":"5139:1:47","nodeType":"VariableDeclaration","scope":11373,"src":"5131:9:47","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":11352,"name":"uint256","nodeType":"ElementaryTypeName","src":"5131:7:47","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"5103:38:47"},"returnParameters":{"id":11357,"nodeType":"ParameterList","parameters":[{"constant":false,"id":11356,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":11373,"src":"5165:7:47","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":11355,"name":"uint256","nodeType":"ElementaryTypeName","src":"5165:7:47","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"5164:9:47"},"scope":12726,"src":"5087:294:47","stateMutability":"pure","virtual":false,"visibility":"internal"},{"body":{"id":11391,"nodeType":"Block","src":"5518:44:47","statements":[{"expression":{"arguments":[{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":11386,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":11384,"name":"a","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":11376,"src":"5543:1:47","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">","rightExpression":{"id":11385,"name":"b","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":11378,"src":"5547:1:47","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"5543:5:47","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},{"id":11387,"name":"a","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":11376,"src":"5550:1:47","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"id":11388,"name":"b","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":11378,"src":"5553:1:47","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":11383,"name":"ternary","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":11373,"src":"5535:7:47","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_bool_$_t_uint256_$_t_uint256_$returns$_t_uint256_$","typeString":"function (bool,uint256,uint256) pure returns (uint256)"}},"id":11389,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"5535:20:47","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"functionReturnParameters":11382,"id":11390,"nodeType":"Return","src":"5528:27:47"}]},"documentation":{"id":11374,"nodeType":"StructuredDocumentation","src":"5387:59:47","text":" @dev Returns the largest of two numbers."},"id":11392,"implemented":true,"kind":"function","modifiers":[],"name":"max","nameLocation":"5460:3:47","nodeType":"FunctionDefinition","parameters":{"id":11379,"nodeType":"ParameterList","parameters":[{"constant":false,"id":11376,"mutability":"mutable","name":"a","nameLocation":"5472:1:47","nodeType":"VariableDeclaration","scope":11392,"src":"5464:9:47","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":11375,"name":"uint256","nodeType":"ElementaryTypeName","src":"5464:7:47","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":11378,"mutability":"mutable","name":"b","nameLocation":"5483:1:47","nodeType":"VariableDeclaration","scope":11392,"src":"5475:9:47","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":11377,"name":"uint256","nodeType":"ElementaryTypeName","src":"5475:7:47","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"5463:22:47"},"returnParameters":{"id":11382,"nodeType":"ParameterList","parameters":[{"constant":false,"id":11381,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":11392,"src":"5509:7:47","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":11380,"name":"uint256","nodeType":"ElementaryTypeName","src":"5509:7:47","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"5508:9:47"},"scope":12726,"src":"5451:111:47","stateMutability":"pure","virtual":false,"visibility":"internal"},{"body":{"id":11410,"nodeType":"Block","src":"5700:44:47","statements":[{"expression":{"arguments":[{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":11405,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":11403,"name":"a","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":11395,"src":"5725:1:47","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"<","rightExpression":{"id":11404,"name":"b","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":11397,"src":"5729:1:47","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"5725:5:47","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},{"id":11406,"name":"a","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":11395,"src":"5732:1:47","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"id":11407,"name":"b","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":11397,"src":"5735:1:47","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":11402,"name":"ternary","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":11373,"src":"5717:7:47","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_bool_$_t_uint256_$_t_uint256_$returns$_t_uint256_$","typeString":"function (bool,uint256,uint256) pure returns (uint256)"}},"id":11408,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"5717:20:47","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"functionReturnParameters":11401,"id":11409,"nodeType":"Return","src":"5710:27:47"}]},"documentation":{"id":11393,"nodeType":"StructuredDocumentation","src":"5568:60:47","text":" @dev Returns the smallest of two numbers."},"id":11411,"implemented":true,"kind":"function","modifiers":[],"name":"min","nameLocation":"5642:3:47","nodeType":"FunctionDefinition","parameters":{"id":11398,"nodeType":"ParameterList","parameters":[{"constant":false,"id":11395,"mutability":"mutable","name":"a","nameLocation":"5654:1:47","nodeType":"VariableDeclaration","scope":11411,"src":"5646:9:47","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":11394,"name":"uint256","nodeType":"ElementaryTypeName","src":"5646:7:47","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":11397,"mutability":"mutable","name":"b","nameLocation":"5665:1:47","nodeType":"VariableDeclaration","scope":11411,"src":"5657:9:47","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":11396,"name":"uint256","nodeType":"ElementaryTypeName","src":"5657:7:47","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"5645:22:47"},"returnParameters":{"id":11401,"nodeType":"ParameterList","parameters":[{"constant":false,"id":11400,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":11411,"src":"5691:7:47","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":11399,"name":"uint256","nodeType":"ElementaryTypeName","src":"5691:7:47","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"5690:9:47"},"scope":12726,"src":"5633:111:47","stateMutability":"pure","virtual":false,"visibility":"internal"},{"body":{"id":11433,"nodeType":"Block","src":"5928:82:47","statements":[{"expression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":11431,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"components":[{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":11423,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":11421,"name":"a","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":11414,"src":"5983:1:47","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"&","rightExpression":{"id":11422,"name":"b","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":11416,"src":"5987:1:47","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"5983:5:47","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"id":11424,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"5982:7:47","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"+","rightExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":11430,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"components":[{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":11427,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":11425,"name":"a","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":11414,"src":"5993:1:47","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"^","rightExpression":{"id":11426,"name":"b","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":11416,"src":"5997:1:47","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"5993:5:47","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"id":11428,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"5992:7:47","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"/","rightExpression":{"hexValue":"32","id":11429,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"6002:1:47","typeDescriptions":{"typeIdentifier":"t_rational_2_by_1","typeString":"int_const 2"},"value":"2"},"src":"5992:11:47","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"5982:21:47","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"functionReturnParameters":11420,"id":11432,"nodeType":"Return","src":"5975:28:47"}]},"documentation":{"id":11412,"nodeType":"StructuredDocumentation","src":"5750:102:47","text":" @dev Returns the average of two numbers. The result is rounded towards\n zero."},"id":11434,"implemented":true,"kind":"function","modifiers":[],"name":"average","nameLocation":"5866:7:47","nodeType":"FunctionDefinition","parameters":{"id":11417,"nodeType":"ParameterList","parameters":[{"constant":false,"id":11414,"mutability":"mutable","name":"a","nameLocation":"5882:1:47","nodeType":"VariableDeclaration","scope":11434,"src":"5874:9:47","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":11413,"name":"uint256","nodeType":"ElementaryTypeName","src":"5874:7:47","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":11416,"mutability":"mutable","name":"b","nameLocation":"5893:1:47","nodeType":"VariableDeclaration","scope":11434,"src":"5885:9:47","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":11415,"name":"uint256","nodeType":"ElementaryTypeName","src":"5885:7:47","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"5873:22:47"},"returnParameters":{"id":11420,"nodeType":"ParameterList","parameters":[{"constant":false,"id":11419,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":11434,"src":"5919:7:47","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":11418,"name":"uint256","nodeType":"ElementaryTypeName","src":"5919:7:47","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"5918:9:47"},"scope":12726,"src":"5857:153:47","stateMutability":"pure","virtual":false,"visibility":"internal"},{"body":{"id":11474,"nodeType":"Block","src":"6302:633:47","statements":[{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":11446,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":11444,"name":"b","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":11439,"src":"6316:1:47","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"hexValue":"30","id":11445,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"6321:1:47","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"6316:6:47","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":11455,"nodeType":"IfStatement","src":"6312:150:47","trueBody":{"id":11454,"nodeType":"Block","src":"6324:138:47","statements":[{"expression":{"arguments":[{"expression":{"id":11450,"name":"Panic","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10908,"src":"6428:5:47","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_Panic_$10908_$","typeString":"type(library Panic)"}},"id":11451,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberLocation":"6434:16:47","memberName":"DIVISION_BY_ZERO","nodeType":"MemberAccess","referencedDeclaration":10875,"src":"6428:22:47","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"expression":{"id":11447,"name":"Panic","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10908,"src":"6416:5:47","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_Panic_$10908_$","typeString":"type(library Panic)"}},"id":11449,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"6422:5:47","memberName":"panic","nodeType":"MemberAccess","referencedDeclaration":10907,"src":"6416:11:47","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_uint256_$returns$__$","typeString":"function (uint256) pure"}},"id":11452,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"6416:35:47","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":11453,"nodeType":"ExpressionStatement","src":"6416:35:47"}]}},{"id":11473,"nodeType":"UncheckedBlock","src":"6845:84:47","statements":[{"expression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":11471,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"arguments":[{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":11460,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":11458,"name":"a","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":11437,"src":"6892:1:47","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">","rightExpression":{"hexValue":"30","id":11459,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"6896:1:47","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"6892:5:47","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"}],"expression":{"id":11456,"name":"SafeCast","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":14491,"src":"6876:8:47","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_SafeCast_$14491_$","typeString":"type(library SafeCast)"}},"id":11457,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"6885:6:47","memberName":"toUint","nodeType":"MemberAccess","referencedDeclaration":14490,"src":"6876:15:47","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_bool_$returns$_t_uint256_$","typeString":"function (bool) pure returns (uint256)"}},"id":11461,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"6876:22:47","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"*","rightExpression":{"components":[{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":11469,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":11467,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"components":[{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":11464,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":11462,"name":"a","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":11437,"src":"6903:1:47","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"-","rightExpression":{"hexValue":"31","id":11463,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"6907:1:47","typeDescriptions":{"typeIdentifier":"t_rational_1_by_1","typeString":"int_const 1"},"value":"1"},"src":"6903:5:47","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"id":11465,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"6902:7:47","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"/","rightExpression":{"id":11466,"name":"b","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":11439,"src":"6912:1:47","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"6902:11:47","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"+","rightExpression":{"hexValue":"31","id":11468,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"6916:1:47","typeDescriptions":{"typeIdentifier":"t_rational_1_by_1","typeString":"int_const 1"},"value":"1"},"src":"6902:15:47","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"id":11470,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"6901:17:47","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"6876:42:47","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"functionReturnParameters":11443,"id":11472,"nodeType":"Return","src":"6869:49:47"}]}]},"documentation":{"id":11435,"nodeType":"StructuredDocumentation","src":"6016:210:47","text":" @dev Returns the ceiling of the division of two numbers.\n This differs from standard division with `/` in that it rounds towards infinity instead\n of rounding towards zero."},"id":11475,"implemented":true,"kind":"function","modifiers":[],"name":"ceilDiv","nameLocation":"6240:7:47","nodeType":"FunctionDefinition","parameters":{"id":11440,"nodeType":"ParameterList","parameters":[{"constant":false,"id":11437,"mutability":"mutable","name":"a","nameLocation":"6256:1:47","nodeType":"VariableDeclaration","scope":11475,"src":"6248:9:47","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":11436,"name":"uint256","nodeType":"ElementaryTypeName","src":"6248:7:47","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":11439,"mutability":"mutable","name":"b","nameLocation":"6267:1:47","nodeType":"VariableDeclaration","scope":11475,"src":"6259:9:47","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":11438,"name":"uint256","nodeType":"ElementaryTypeName","src":"6259:7:47","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"6247:22:47"},"returnParameters":{"id":11443,"nodeType":"ParameterList","parameters":[{"constant":false,"id":11442,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":11475,"src":"6293:7:47","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":11441,"name":"uint256","nodeType":"ElementaryTypeName","src":"6293:7:47","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"6292:9:47"},"scope":12726,"src":"6231:704:47","stateMutability":"pure","virtual":false,"visibility":"internal"},{"body":{"id":11610,"nodeType":"Block","src":"7356:3585:47","statements":[{"id":11609,"nodeType":"UncheckedBlock","src":"7366:3569:47","statements":[{"assignments":[11488,11490],"declarations":[{"constant":false,"id":11488,"mutability":"mutable","name":"high","nameLocation":"7399:4:47","nodeType":"VariableDeclaration","scope":11609,"src":"7391:12:47","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":11487,"name":"uint256","nodeType":"ElementaryTypeName","src":"7391:7:47","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":11490,"mutability":"mutable","name":"low","nameLocation":"7413:3:47","nodeType":"VariableDeclaration","scope":11609,"src":"7405:11:47","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":11489,"name":"uint256","nodeType":"ElementaryTypeName","src":"7405:7:47","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":11495,"initialValue":{"arguments":[{"id":11492,"name":"x","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":11478,"src":"7427:1:47","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"id":11493,"name":"y","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":11480,"src":"7430:1:47","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":11491,"name":"mul512","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":11124,"src":"7420:6:47","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_uint256_$_t_uint256_$returns$_t_uint256_$_t_uint256_$","typeString":"function (uint256,uint256) pure returns (uint256,uint256)"}},"id":11494,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"7420:12:47","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$_t_uint256_$_t_uint256_$","typeString":"tuple(uint256,uint256)"}},"nodeType":"VariableDeclarationStatement","src":"7390:42:47"},{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":11498,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":11496,"name":"high","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":11488,"src":"7514:4:47","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"hexValue":"30","id":11497,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"7522:1:47","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"7514:9:47","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":11504,"nodeType":"IfStatement","src":"7510:365:47","trueBody":{"id":11503,"nodeType":"Block","src":"7525:350:47","statements":[{"expression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":11501,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":11499,"name":"low","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":11490,"src":"7843:3:47","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"/","rightExpression":{"id":11500,"name":"denominator","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":11482,"src":"7849:11:47","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"7843:17:47","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"functionReturnParameters":11486,"id":11502,"nodeType":"Return","src":"7836:24:47"}]}},{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":11507,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":11505,"name":"denominator","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":11482,"src":"7985:11:47","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"<=","rightExpression":{"id":11506,"name":"high","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":11488,"src":"8000:4:47","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"7985:19:47","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":11523,"nodeType":"IfStatement","src":"7981:142:47","trueBody":{"id":11522,"nodeType":"Block","src":"8006:117:47","statements":[{"expression":{"arguments":[{"arguments":[{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":11514,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":11512,"name":"denominator","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":11482,"src":"8044:11:47","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"hexValue":"30","id":11513,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"8059:1:47","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"8044:16:47","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},{"expression":{"id":11515,"name":"Panic","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10908,"src":"8062:5:47","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_Panic_$10908_$","typeString":"type(library Panic)"}},"id":11516,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberLocation":"8068:16:47","memberName":"DIVISION_BY_ZERO","nodeType":"MemberAccess","referencedDeclaration":10875,"src":"8062:22:47","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"expression":{"id":11517,"name":"Panic","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10908,"src":"8086:5:47","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_Panic_$10908_$","typeString":"type(library Panic)"}},"id":11518,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberLocation":"8092:14:47","memberName":"UNDER_OVERFLOW","nodeType":"MemberAccess","referencedDeclaration":10871,"src":"8086:20:47","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":11511,"name":"ternary","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":11373,"src":"8036:7:47","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_bool_$_t_uint256_$_t_uint256_$returns$_t_uint256_$","typeString":"function (bool,uint256,uint256) pure returns (uint256)"}},"id":11519,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"8036:71:47","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"expression":{"id":11508,"name":"Panic","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10908,"src":"8024:5:47","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_Panic_$10908_$","typeString":"type(library Panic)"}},"id":11510,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"8030:5:47","memberName":"panic","nodeType":"MemberAccess","referencedDeclaration":10907,"src":"8024:11:47","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_uint256_$returns$__$","typeString":"function (uint256) pure"}},"id":11520,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"8024:84:47","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":11521,"nodeType":"ExpressionStatement","src":"8024:84:47"}]}},{"assignments":[11525],"declarations":[{"constant":false,"id":11525,"mutability":"mutable","name":"remainder","nameLocation":"8383:9:47","nodeType":"VariableDeclaration","scope":11609,"src":"8375:17:47","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":11524,"name":"uint256","nodeType":"ElementaryTypeName","src":"8375:7:47","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":11526,"nodeType":"VariableDeclarationStatement","src":"8375:17:47"},{"AST":{"nativeSrc":"8431:283:47","nodeType":"YulBlock","src":"8431:283:47","statements":[{"nativeSrc":"8500:38:47","nodeType":"YulAssignment","src":"8500:38:47","value":{"arguments":[{"name":"x","nativeSrc":"8520:1:47","nodeType":"YulIdentifier","src":"8520:1:47"},{"name":"y","nativeSrc":"8523:1:47","nodeType":"YulIdentifier","src":"8523:1:47"},{"name":"denominator","nativeSrc":"8526:11:47","nodeType":"YulIdentifier","src":"8526:11:47"}],"functionName":{"name":"mulmod","nativeSrc":"8513:6:47","nodeType":"YulIdentifier","src":"8513:6:47"},"nativeSrc":"8513:25:47","nodeType":"YulFunctionCall","src":"8513:25:47"},"variableNames":[{"name":"remainder","nativeSrc":"8500:9:47","nodeType":"YulIdentifier","src":"8500:9:47"}]},{"nativeSrc":"8620:37:47","nodeType":"YulAssignment","src":"8620:37:47","value":{"arguments":[{"name":"high","nativeSrc":"8632:4:47","nodeType":"YulIdentifier","src":"8632:4:47"},{"arguments":[{"name":"remainder","nativeSrc":"8641:9:47","nodeType":"YulIdentifier","src":"8641:9:47"},{"name":"low","nativeSrc":"8652:3:47","nodeType":"YulIdentifier","src":"8652:3:47"}],"functionName":{"name":"gt","nativeSrc":"8638:2:47","nodeType":"YulIdentifier","src":"8638:2:47"},"nativeSrc":"8638:18:47","nodeType":"YulFunctionCall","src":"8638:18:47"}],"functionName":{"name":"sub","nativeSrc":"8628:3:47","nodeType":"YulIdentifier","src":"8628:3:47"},"nativeSrc":"8628:29:47","nodeType":"YulFunctionCall","src":"8628:29:47"},"variableNames":[{"name":"high","nativeSrc":"8620:4:47","nodeType":"YulIdentifier","src":"8620:4:47"}]},{"nativeSrc":"8674:26:47","nodeType":"YulAssignment","src":"8674:26:47","value":{"arguments":[{"name":"low","nativeSrc":"8685:3:47","nodeType":"YulIdentifier","src":"8685:3:47"},{"name":"remainder","nativeSrc":"8690:9:47","nodeType":"YulIdentifier","src":"8690:9:47"}],"functionName":{"name":"sub","nativeSrc":"8681:3:47","nodeType":"YulIdentifier","src":"8681:3:47"},"nativeSrc":"8681:19:47","nodeType":"YulFunctionCall","src":"8681:19:47"},"variableNames":[{"name":"low","nativeSrc":"8674:3:47","nodeType":"YulIdentifier","src":"8674:3:47"}]}]},"evmVersion":"prague","externalReferences":[{"declaration":11482,"isOffset":false,"isSlot":false,"src":"8526:11:47","valueSize":1},{"declaration":11488,"isOffset":false,"isSlot":false,"src":"8620:4:47","valueSize":1},{"declaration":11488,"isOffset":false,"isSlot":false,"src":"8632:4:47","valueSize":1},{"declaration":11490,"isOffset":false,"isSlot":false,"src":"8652:3:47","valueSize":1},{"declaration":11490,"isOffset":false,"isSlot":false,"src":"8674:3:47","valueSize":1},{"declaration":11490,"isOffset":false,"isSlot":false,"src":"8685:3:47","valueSize":1},{"declaration":11525,"isOffset":false,"isSlot":false,"src":"8500:9:47","valueSize":1},{"declaration":11525,"isOffset":false,"isSlot":false,"src":"8641:9:47","valueSize":1},{"declaration":11525,"isOffset":false,"isSlot":false,"src":"8690:9:47","valueSize":1},{"declaration":11478,"isOffset":false,"isSlot":false,"src":"8520:1:47","valueSize":1},{"declaration":11480,"isOffset":false,"isSlot":false,"src":"8523:1:47","valueSize":1}],"flags":["memory-safe"],"id":11527,"nodeType":"InlineAssembly","src":"8406:308:47"},{"assignments":[11529],"declarations":[{"constant":false,"id":11529,"mutability":"mutable","name":"twos","nameLocation":"8926:4:47","nodeType":"VariableDeclaration","scope":11609,"src":"8918:12:47","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":11528,"name":"uint256","nodeType":"ElementaryTypeName","src":"8918:7:47","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":11536,"initialValue":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":11535,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":11530,"name":"denominator","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":11482,"src":"8933:11:47","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"&","rightExpression":{"components":[{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":11533,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"hexValue":"30","id":11531,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"8948:1:47","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"nodeType":"BinaryOperation","operator":"-","rightExpression":{"id":11532,"name":"denominator","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":11482,"src":"8952:11:47","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"8948:15:47","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"id":11534,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"8947:17:47","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"8933:31:47","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"VariableDeclarationStatement","src":"8918:46:47"},{"AST":{"nativeSrc":"9003:359:47","nodeType":"YulBlock","src":"9003:359:47","statements":[{"nativeSrc":"9068:37:47","nodeType":"YulAssignment","src":"9068:37:47","value":{"arguments":[{"name":"denominator","nativeSrc":"9087:11:47","nodeType":"YulIdentifier","src":"9087:11:47"},{"name":"twos","nativeSrc":"9100:4:47","nodeType":"YulIdentifier","src":"9100:4:47"}],"functionName":{"name":"div","nativeSrc":"9083:3:47","nodeType":"YulIdentifier","src":"9083:3:47"},"nativeSrc":"9083:22:47","nodeType":"YulFunctionCall","src":"9083:22:47"},"variableNames":[{"name":"denominator","nativeSrc":"9068:11:47","nodeType":"YulIdentifier","src":"9068:11:47"}]},{"nativeSrc":"9169:21:47","nodeType":"YulAssignment","src":"9169:21:47","value":{"arguments":[{"name":"low","nativeSrc":"9180:3:47","nodeType":"YulIdentifier","src":"9180:3:47"},{"name":"twos","nativeSrc":"9185:4:47","nodeType":"YulIdentifier","src":"9185:4:47"}],"functionName":{"name":"div","nativeSrc":"9176:3:47","nodeType":"YulIdentifier","src":"9176:3:47"},"nativeSrc":"9176:14:47","nodeType":"YulFunctionCall","src":"9176:14:47"},"variableNames":[{"name":"low","nativeSrc":"9169:3:47","nodeType":"YulIdentifier","src":"9169:3:47"}]},{"nativeSrc":"9309:39:47","nodeType":"YulAssignment","src":"9309:39:47","value":{"arguments":[{"arguments":[{"arguments":[{"kind":"number","nativeSrc":"9329:1:47","nodeType":"YulLiteral","src":"9329:1:47","type":"","value":"0"},{"name":"twos","nativeSrc":"9332:4:47","nodeType":"YulIdentifier","src":"9332:4:47"}],"functionName":{"name":"sub","nativeSrc":"9325:3:47","nodeType":"YulIdentifier","src":"9325:3:47"},"nativeSrc":"9325:12:47","nodeType":"YulFunctionCall","src":"9325:12:47"},{"name":"twos","nativeSrc":"9339:4:47","nodeType":"YulIdentifier","src":"9339:4:47"}],"functionName":{"name":"div","nativeSrc":"9321:3:47","nodeType":"YulIdentifier","src":"9321:3:47"},"nativeSrc":"9321:23:47","nodeType":"YulFunctionCall","src":"9321:23:47"},{"kind":"number","nativeSrc":"9346:1:47","nodeType":"YulLiteral","src":"9346:1:47","type":"","value":"1"}],"functionName":{"name":"add","nativeSrc":"9317:3:47","nodeType":"YulIdentifier","src":"9317:3:47"},"nativeSrc":"9317:31:47","nodeType":"YulFunctionCall","src":"9317:31:47"},"variableNames":[{"name":"twos","nativeSrc":"9309:4:47","nodeType":"YulIdentifier","src":"9309:4:47"}]}]},"evmVersion":"prague","externalReferences":[{"declaration":11482,"isOffset":false,"isSlot":false,"src":"9068:11:47","valueSize":1},{"declaration":11482,"isOffset":false,"isSlot":false,"src":"9087:11:47","valueSize":1},{"declaration":11490,"isOffset":false,"isSlot":false,"src":"9169:3:47","valueSize":1},{"declaration":11490,"isOffset":false,"isSlot":false,"src":"9180:3:47","valueSize":1},{"declaration":11529,"isOffset":false,"isSlot":false,"src":"9100:4:47","valueSize":1},{"declaration":11529,"isOffset":false,"isSlot":false,"src":"9185:4:47","valueSize":1},{"declaration":11529,"isOffset":false,"isSlot":false,"src":"9309:4:47","valueSize":1},{"declaration":11529,"isOffset":false,"isSlot":false,"src":"9332:4:47","valueSize":1},{"declaration":11529,"isOffset":false,"isSlot":false,"src":"9339:4:47","valueSize":1}],"flags":["memory-safe"],"id":11537,"nodeType":"InlineAssembly","src":"8978:384:47"},{"expression":{"id":11542,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":11538,"name":"low","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":11490,"src":"9425:3:47","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"|=","rightHandSide":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":11541,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":11539,"name":"high","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":11488,"src":"9432:4:47","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"*","rightExpression":{"id":11540,"name":"twos","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":11529,"src":"9439:4:47","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"9432:11:47","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"9425:18:47","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":11543,"nodeType":"ExpressionStatement","src":"9425:18:47"},{"assignments":[11545],"declarations":[{"constant":false,"id":11545,"mutability":"mutable","name":"inverse","nameLocation":"9786:7:47","nodeType":"VariableDeclaration","scope":11609,"src":"9778:15:47","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":11544,"name":"uint256","nodeType":"ElementaryTypeName","src":"9778:7:47","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":11552,"initialValue":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":11551,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"components":[{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":11548,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"hexValue":"33","id":11546,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"9797:1:47","typeDescriptions":{"typeIdentifier":"t_rational_3_by_1","typeString":"int_const 3"},"value":"3"},"nodeType":"BinaryOperation","operator":"*","rightExpression":{"id":11547,"name":"denominator","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":11482,"src":"9801:11:47","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"9797:15:47","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"id":11549,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"9796:17:47","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"^","rightExpression":{"hexValue":"32","id":11550,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"9816:1:47","typeDescriptions":{"typeIdentifier":"t_rational_2_by_1","typeString":"int_const 2"},"value":"2"},"src":"9796:21:47","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"VariableDeclarationStatement","src":"9778:39:47"},{"expression":{"id":11559,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":11553,"name":"inverse","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":11545,"src":"10034:7:47","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"*=","rightHandSide":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":11558,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"hexValue":"32","id":11554,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"10045:1:47","typeDescriptions":{"typeIdentifier":"t_rational_2_by_1","typeString":"int_const 2"},"value":"2"},"nodeType":"BinaryOperation","operator":"-","rightExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":11557,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":11555,"name":"denominator","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":11482,"src":"10049:11:47","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"*","rightExpression":{"id":11556,"name":"inverse","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":11545,"src":"10063:7:47","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"10049:21:47","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"10045:25:47","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"10034:36:47","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":11560,"nodeType":"ExpressionStatement","src":"10034:36:47"},{"expression":{"id":11567,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":11561,"name":"inverse","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":11545,"src":"10104:7:47","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"*=","rightHandSide":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":11566,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"hexValue":"32","id":11562,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"10115:1:47","typeDescriptions":{"typeIdentifier":"t_rational_2_by_1","typeString":"int_const 2"},"value":"2"},"nodeType":"BinaryOperation","operator":"-","rightExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":11565,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":11563,"name":"denominator","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":11482,"src":"10119:11:47","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"*","rightExpression":{"id":11564,"name":"inverse","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":11545,"src":"10133:7:47","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"10119:21:47","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"10115:25:47","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"10104:36:47","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":11568,"nodeType":"ExpressionStatement","src":"10104:36:47"},{"expression":{"id":11575,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":11569,"name":"inverse","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":11545,"src":"10176:7:47","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"*=","rightHandSide":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":11574,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"hexValue":"32","id":11570,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"10187:1:47","typeDescriptions":{"typeIdentifier":"t_rational_2_by_1","typeString":"int_const 2"},"value":"2"},"nodeType":"BinaryOperation","operator":"-","rightExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":11573,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":11571,"name":"denominator","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":11482,"src":"10191:11:47","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"*","rightExpression":{"id":11572,"name":"inverse","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":11545,"src":"10205:7:47","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"10191:21:47","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"10187:25:47","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"10176:36:47","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":11576,"nodeType":"ExpressionStatement","src":"10176:36:47"},{"expression":{"id":11583,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":11577,"name":"inverse","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":11545,"src":"10247:7:47","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"*=","rightHandSide":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":11582,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"hexValue":"32","id":11578,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"10258:1:47","typeDescriptions":{"typeIdentifier":"t_rational_2_by_1","typeString":"int_const 2"},"value":"2"},"nodeType":"BinaryOperation","operator":"-","rightExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":11581,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":11579,"name":"denominator","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":11482,"src":"10262:11:47","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"*","rightExpression":{"id":11580,"name":"inverse","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":11545,"src":"10276:7:47","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"10262:21:47","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"10258:25:47","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"10247:36:47","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":11584,"nodeType":"ExpressionStatement","src":"10247:36:47"},{"expression":{"id":11591,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":11585,"name":"inverse","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":11545,"src":"10320:7:47","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"*=","rightHandSide":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":11590,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"hexValue":"32","id":11586,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"10331:1:47","typeDescriptions":{"typeIdentifier":"t_rational_2_by_1","typeString":"int_const 2"},"value":"2"},"nodeType":"BinaryOperation","operator":"-","rightExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":11589,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":11587,"name":"denominator","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":11482,"src":"10335:11:47","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"*","rightExpression":{"id":11588,"name":"inverse","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":11545,"src":"10349:7:47","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"10335:21:47","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"10331:25:47","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"10320:36:47","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":11592,"nodeType":"ExpressionStatement","src":"10320:36:47"},{"expression":{"id":11599,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":11593,"name":"inverse","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":11545,"src":"10394:7:47","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"*=","rightHandSide":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":11598,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"hexValue":"32","id":11594,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"10405:1:47","typeDescriptions":{"typeIdentifier":"t_rational_2_by_1","typeString":"int_const 2"},"value":"2"},"nodeType":"BinaryOperation","operator":"-","rightExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":11597,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":11595,"name":"denominator","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":11482,"src":"10409:11:47","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"*","rightExpression":{"id":11596,"name":"inverse","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":11545,"src":"10423:7:47","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"10409:21:47","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"10405:25:47","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"10394:36:47","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":11600,"nodeType":"ExpressionStatement","src":"10394:36:47"},{"expression":{"id":11605,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":11601,"name":"result","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":11485,"src":"10875:6:47","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":11604,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":11602,"name":"low","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":11490,"src":"10884:3:47","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"*","rightExpression":{"id":11603,"name":"inverse","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":11545,"src":"10890:7:47","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"10884:13:47","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"10875:22:47","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":11606,"nodeType":"ExpressionStatement","src":"10875:22:47"},{"expression":{"id":11607,"name":"result","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":11485,"src":"10918:6:47","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"functionReturnParameters":11486,"id":11608,"nodeType":"Return","src":"10911:13:47"}]}]},"documentation":{"id":11476,"nodeType":"StructuredDocumentation","src":"6941:312:47","text":" @dev Calculates floor(x * y / denominator) with full precision. Throws if result overflows a uint256 or\n denominator == 0.\n Original credit to Remco Bloemen under MIT license (https://xn--2-umb.com/21/muldiv) with further edits by\n Uniswap Labs also under MIT license."},"id":11611,"implemented":true,"kind":"function","modifiers":[],"name":"mulDiv","nameLocation":"7267:6:47","nodeType":"FunctionDefinition","parameters":{"id":11483,"nodeType":"ParameterList","parameters":[{"constant":false,"id":11478,"mutability":"mutable","name":"x","nameLocation":"7282:1:47","nodeType":"VariableDeclaration","scope":11611,"src":"7274:9:47","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":11477,"name":"uint256","nodeType":"ElementaryTypeName","src":"7274:7:47","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":11480,"mutability":"mutable","name":"y","nameLocation":"7293:1:47","nodeType":"VariableDeclaration","scope":11611,"src":"7285:9:47","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":11479,"name":"uint256","nodeType":"ElementaryTypeName","src":"7285:7:47","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":11482,"mutability":"mutable","name":"denominator","nameLocation":"7304:11:47","nodeType":"VariableDeclaration","scope":11611,"src":"7296:19:47","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":11481,"name":"uint256","nodeType":"ElementaryTypeName","src":"7296:7:47","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"7273:43:47"},"returnParameters":{"id":11486,"nodeType":"ParameterList","parameters":[{"constant":false,"id":11485,"mutability":"mutable","name":"result","nameLocation":"7348:6:47","nodeType":"VariableDeclaration","scope":11611,"src":"7340:14:47","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":11484,"name":"uint256","nodeType":"ElementaryTypeName","src":"7340:7:47","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"7339:16:47"},"scope":12726,"src":"7258:3683:47","stateMutability":"pure","virtual":false,"visibility":"internal"},{"body":{"id":11647,"nodeType":"Block","src":"11180:128:47","statements":[{"expression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":11645,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"arguments":[{"id":11627,"name":"x","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":11614,"src":"11204:1:47","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"id":11628,"name":"y","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":11616,"src":"11207:1:47","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"id":11629,"name":"denominator","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":11618,"src":"11210:11:47","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":11626,"name":"mulDiv","nodeType":"Identifier","overloadedDeclarations":[11611,11648],"referencedDeclaration":11611,"src":"11197:6:47","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_uint256_$_t_uint256_$_t_uint256_$returns$_t_uint256_$","typeString":"function (uint256,uint256,uint256) pure returns (uint256)"}},"id":11630,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"11197:25:47","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"+","rightExpression":{"arguments":[{"commonType":{"typeIdentifier":"t_bool","typeString":"bool"},"id":11643,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"arguments":[{"id":11634,"name":"rounding","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":11621,"src":"11258:8:47","typeDescriptions":{"typeIdentifier":"t_enum$_Rounding_$11096","typeString":"enum Math.Rounding"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_enum$_Rounding_$11096","typeString":"enum Math.Rounding"}],"id":11633,"name":"unsignedRoundsUp","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":12704,"src":"11241:16:47","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_enum$_Rounding_$11096_$returns$_t_bool_$","typeString":"function (enum Math.Rounding) pure returns (bool)"}},"id":11635,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"11241:26:47","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"nodeType":"BinaryOperation","operator":"&&","rightExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":11642,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"arguments":[{"id":11637,"name":"x","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":11614,"src":"11278:1:47","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"id":11638,"name":"y","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":11616,"src":"11281:1:47","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"id":11639,"name":"denominator","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":11618,"src":"11284:11:47","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":11636,"name":"mulmod","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-16,"src":"11271:6:47","typeDescriptions":{"typeIdentifier":"t_function_mulmod_pure$_t_uint256_$_t_uint256_$_t_uint256_$returns$_t_uint256_$","typeString":"function (uint256,uint256,uint256) pure returns (uint256)"}},"id":11640,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"11271:25:47","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">","rightExpression":{"hexValue":"30","id":11641,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"11299:1:47","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"11271:29:47","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"src":"11241:59:47","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"}],"expression":{"id":11631,"name":"SafeCast","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":14491,"src":"11225:8:47","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_SafeCast_$14491_$","typeString":"type(library SafeCast)"}},"id":11632,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"11234:6:47","memberName":"toUint","nodeType":"MemberAccess","referencedDeclaration":14490,"src":"11225:15:47","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_bool_$returns$_t_uint256_$","typeString":"function (bool) pure returns (uint256)"}},"id":11644,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"11225:76:47","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"11197:104:47","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"functionReturnParameters":11625,"id":11646,"nodeType":"Return","src":"11190:111:47"}]},"documentation":{"id":11612,"nodeType":"StructuredDocumentation","src":"10947:118:47","text":" @dev Calculates x * y / denominator with full precision, following the selected rounding direction."},"id":11648,"implemented":true,"kind":"function","modifiers":[],"name":"mulDiv","nameLocation":"11079:6:47","nodeType":"FunctionDefinition","parameters":{"id":11622,"nodeType":"ParameterList","parameters":[{"constant":false,"id":11614,"mutability":"mutable","name":"x","nameLocation":"11094:1:47","nodeType":"VariableDeclaration","scope":11648,"src":"11086:9:47","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":11613,"name":"uint256","nodeType":"ElementaryTypeName","src":"11086:7:47","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":11616,"mutability":"mutable","name":"y","nameLocation":"11105:1:47","nodeType":"VariableDeclaration","scope":11648,"src":"11097:9:47","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":11615,"name":"uint256","nodeType":"ElementaryTypeName","src":"11097:7:47","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":11618,"mutability":"mutable","name":"denominator","nameLocation":"11116:11:47","nodeType":"VariableDeclaration","scope":11648,"src":"11108:19:47","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":11617,"name":"uint256","nodeType":"ElementaryTypeName","src":"11108:7:47","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":11621,"mutability":"mutable","name":"rounding","nameLocation":"11138:8:47","nodeType":"VariableDeclaration","scope":11648,"src":"11129:17:47","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_enum$_Rounding_$11096","typeString":"enum Math.Rounding"},"typeName":{"id":11620,"nodeType":"UserDefinedTypeName","pathNode":{"id":11619,"name":"Rounding","nameLocations":["11129:8:47"],"nodeType":"IdentifierPath","referencedDeclaration":11096,"src":"11129:8:47"},"referencedDeclaration":11096,"src":"11129:8:47","typeDescriptions":{"typeIdentifier":"t_enum$_Rounding_$11096","typeString":"enum Math.Rounding"}},"visibility":"internal"}],"src":"11085:62:47"},"returnParameters":{"id":11625,"nodeType":"ParameterList","parameters":[{"constant":false,"id":11624,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":11648,"src":"11171:7:47","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":11623,"name":"uint256","nodeType":"ElementaryTypeName","src":"11171:7:47","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"11170:9:47"},"scope":12726,"src":"11070:238:47","stateMutability":"pure","virtual":false,"visibility":"internal"},{"body":{"id":11697,"nodeType":"Block","src":"11516:245:47","statements":[{"id":11696,"nodeType":"UncheckedBlock","src":"11526:229:47","statements":[{"assignments":[11661,11663],"declarations":[{"constant":false,"id":11661,"mutability":"mutable","name":"high","nameLocation":"11559:4:47","nodeType":"VariableDeclaration","scope":11696,"src":"11551:12:47","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":11660,"name":"uint256","nodeType":"ElementaryTypeName","src":"11551:7:47","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":11663,"mutability":"mutable","name":"low","nameLocation":"11573:3:47","nodeType":"VariableDeclaration","scope":11696,"src":"11565:11:47","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":11662,"name":"uint256","nodeType":"ElementaryTypeName","src":"11565:7:47","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":11668,"initialValue":{"arguments":[{"id":11665,"name":"x","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":11651,"src":"11587:1:47","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"id":11666,"name":"y","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":11653,"src":"11590:1:47","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":11664,"name":"mul512","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":11124,"src":"11580:6:47","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_uint256_$_t_uint256_$returns$_t_uint256_$_t_uint256_$","typeString":"function (uint256,uint256) pure returns (uint256,uint256)"}},"id":11667,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"11580:12:47","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$_t_uint256_$_t_uint256_$","typeString":"tuple(uint256,uint256)"}},"nodeType":"VariableDeclarationStatement","src":"11550:42:47"},{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":11673,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":11669,"name":"high","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":11661,"src":"11610:4:47","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">=","rightExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":11672,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"hexValue":"31","id":11670,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"11618:1:47","typeDescriptions":{"typeIdentifier":"t_rational_1_by_1","typeString":"int_const 1"},"value":"1"},"nodeType":"BinaryOperation","operator":"<<","rightExpression":{"id":11671,"name":"n","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":11655,"src":"11623:1:47","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}},"src":"11618:6:47","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"11610:14:47","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":11682,"nodeType":"IfStatement","src":"11606:86:47","trueBody":{"id":11681,"nodeType":"Block","src":"11626:66:47","statements":[{"expression":{"arguments":[{"expression":{"id":11677,"name":"Panic","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10908,"src":"11656:5:47","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_Panic_$10908_$","typeString":"type(library Panic)"}},"id":11678,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberLocation":"11662:14:47","memberName":"UNDER_OVERFLOW","nodeType":"MemberAccess","referencedDeclaration":10871,"src":"11656:20:47","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"expression":{"id":11674,"name":"Panic","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10908,"src":"11644:5:47","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_Panic_$10908_$","typeString":"type(library Panic)"}},"id":11676,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"11650:5:47","memberName":"panic","nodeType":"MemberAccess","referencedDeclaration":10907,"src":"11644:11:47","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_uint256_$returns$__$","typeString":"function (uint256) pure"}},"id":11679,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"11644:33:47","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":11680,"nodeType":"ExpressionStatement","src":"11644:33:47"}]}},{"expression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":11694,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"components":[{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":11688,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":11683,"name":"high","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":11661,"src":"11713:4:47","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"<<","rightExpression":{"components":[{"commonType":{"typeIdentifier":"t_uint16","typeString":"uint16"},"id":11686,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"hexValue":"323536","id":11684,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"11722:3:47","typeDescriptions":{"typeIdentifier":"t_rational_256_by_1","typeString":"int_const 256"},"value":"256"},"nodeType":"BinaryOperation","operator":"-","rightExpression":{"id":11685,"name":"n","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":11655,"src":"11728:1:47","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}},"src":"11722:7:47","typeDescriptions":{"typeIdentifier":"t_uint16","typeString":"uint16"}}],"id":11687,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"11721:9:47","typeDescriptions":{"typeIdentifier":"t_uint16","typeString":"uint16"}},"src":"11713:17:47","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"id":11689,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"11712:19:47","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"|","rightExpression":{"components":[{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":11692,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":11690,"name":"low","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":11663,"src":"11735:3:47","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">>","rightExpression":{"id":11691,"name":"n","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":11655,"src":"11742:1:47","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}},"src":"11735:8:47","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"id":11693,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"11734:10:47","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"11712:32:47","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"functionReturnParameters":11659,"id":11695,"nodeType":"Return","src":"11705:39:47"}]}]},"documentation":{"id":11649,"nodeType":"StructuredDocumentation","src":"11314:111:47","text":" @dev Calculates floor(x * y >> n) with full precision. Throws if result overflows a uint256."},"id":11698,"implemented":true,"kind":"function","modifiers":[],"name":"mulShr","nameLocation":"11439:6:47","nodeType":"FunctionDefinition","parameters":{"id":11656,"nodeType":"ParameterList","parameters":[{"constant":false,"id":11651,"mutability":"mutable","name":"x","nameLocation":"11454:1:47","nodeType":"VariableDeclaration","scope":11698,"src":"11446:9:47","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":11650,"name":"uint256","nodeType":"ElementaryTypeName","src":"11446:7:47","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":11653,"mutability":"mutable","name":"y","nameLocation":"11465:1:47","nodeType":"VariableDeclaration","scope":11698,"src":"11457:9:47","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":11652,"name":"uint256","nodeType":"ElementaryTypeName","src":"11457:7:47","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":11655,"mutability":"mutable","name":"n","nameLocation":"11474:1:47","nodeType":"VariableDeclaration","scope":11698,"src":"11468:7:47","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"},"typeName":{"id":11654,"name":"uint8","nodeType":"ElementaryTypeName","src":"11468:5:47","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}},"visibility":"internal"}],"src":"11445:31:47"},"returnParameters":{"id":11659,"nodeType":"ParameterList","parameters":[{"constant":false,"id":11658,"mutability":"mutable","name":"result","nameLocation":"11508:6:47","nodeType":"VariableDeclaration","scope":11698,"src":"11500:14:47","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":11657,"name":"uint256","nodeType":"ElementaryTypeName","src":"11500:7:47","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"11499:16:47"},"scope":12726,"src":"11430:331:47","stateMutability":"pure","virtual":false,"visibility":"internal"},{"body":{"id":11736,"nodeType":"Block","src":"11979:113:47","statements":[{"expression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":11734,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"arguments":[{"id":11714,"name":"x","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":11701,"src":"12003:1:47","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"id":11715,"name":"y","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":11703,"src":"12006:1:47","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"id":11716,"name":"n","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":11705,"src":"12009:1:47","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_uint8","typeString":"uint8"}],"id":11713,"name":"mulShr","nodeType":"Identifier","overloadedDeclarations":[11698,11737],"referencedDeclaration":11698,"src":"11996:6:47","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_uint256_$_t_uint256_$_t_uint8_$returns$_t_uint256_$","typeString":"function (uint256,uint256,uint8) pure returns (uint256)"}},"id":11717,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"11996:15:47","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"+","rightExpression":{"arguments":[{"commonType":{"typeIdentifier":"t_bool","typeString":"bool"},"id":11732,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"arguments":[{"id":11721,"name":"rounding","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":11708,"src":"12047:8:47","typeDescriptions":{"typeIdentifier":"t_enum$_Rounding_$11096","typeString":"enum Math.Rounding"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_enum$_Rounding_$11096","typeString":"enum Math.Rounding"}],"id":11720,"name":"unsignedRoundsUp","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":12704,"src":"12030:16:47","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_enum$_Rounding_$11096_$returns$_t_bool_$","typeString":"function (enum Math.Rounding) pure returns (bool)"}},"id":11722,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"12030:26:47","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"nodeType":"BinaryOperation","operator":"&&","rightExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":11731,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"arguments":[{"id":11724,"name":"x","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":11701,"src":"12067:1:47","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"id":11725,"name":"y","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":11703,"src":"12070:1:47","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":11728,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"hexValue":"31","id":11726,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"12073:1:47","typeDescriptions":{"typeIdentifier":"t_rational_1_by_1","typeString":"int_const 1"},"value":"1"},"nodeType":"BinaryOperation","operator":"<<","rightExpression":{"id":11727,"name":"n","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":11705,"src":"12078:1:47","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}},"src":"12073:6:47","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":11723,"name":"mulmod","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-16,"src":"12060:6:47","typeDescriptions":{"typeIdentifier":"t_function_mulmod_pure$_t_uint256_$_t_uint256_$_t_uint256_$returns$_t_uint256_$","typeString":"function (uint256,uint256,uint256) pure returns (uint256)"}},"id":11729,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"12060:20:47","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">","rightExpression":{"hexValue":"30","id":11730,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"12083:1:47","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"12060:24:47","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"src":"12030:54:47","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"}],"expression":{"id":11718,"name":"SafeCast","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":14491,"src":"12014:8:47","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_SafeCast_$14491_$","typeString":"type(library SafeCast)"}},"id":11719,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"12023:6:47","memberName":"toUint","nodeType":"MemberAccess","referencedDeclaration":14490,"src":"12014:15:47","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_bool_$returns$_t_uint256_$","typeString":"function (bool) pure returns (uint256)"}},"id":11733,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"12014:71:47","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"11996:89:47","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"functionReturnParameters":11712,"id":11735,"nodeType":"Return","src":"11989:96:47"}]},"documentation":{"id":11699,"nodeType":"StructuredDocumentation","src":"11767:109:47","text":" @dev Calculates x * y >> n with full precision, following the selected rounding direction."},"id":11737,"implemented":true,"kind":"function","modifiers":[],"name":"mulShr","nameLocation":"11890:6:47","nodeType":"FunctionDefinition","parameters":{"id":11709,"nodeType":"ParameterList","parameters":[{"constant":false,"id":11701,"mutability":"mutable","name":"x","nameLocation":"11905:1:47","nodeType":"VariableDeclaration","scope":11737,"src":"11897:9:47","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":11700,"name":"uint256","nodeType":"ElementaryTypeName","src":"11897:7:47","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":11703,"mutability":"mutable","name":"y","nameLocation":"11916:1:47","nodeType":"VariableDeclaration","scope":11737,"src":"11908:9:47","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":11702,"name":"uint256","nodeType":"ElementaryTypeName","src":"11908:7:47","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":11705,"mutability":"mutable","name":"n","nameLocation":"11925:1:47","nodeType":"VariableDeclaration","scope":11737,"src":"11919:7:47","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"},"typeName":{"id":11704,"name":"uint8","nodeType":"ElementaryTypeName","src":"11919:5:47","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}},"visibility":"internal"},{"constant":false,"id":11708,"mutability":"mutable","name":"rounding","nameLocation":"11937:8:47","nodeType":"VariableDeclaration","scope":11737,"src":"11928:17:47","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_enum$_Rounding_$11096","typeString":"enum Math.Rounding"},"typeName":{"id":11707,"nodeType":"UserDefinedTypeName","pathNode":{"id":11706,"name":"Rounding","nameLocations":["11928:8:47"],"nodeType":"IdentifierPath","referencedDeclaration":11096,"src":"11928:8:47"},"referencedDeclaration":11096,"src":"11928:8:47","typeDescriptions":{"typeIdentifier":"t_enum$_Rounding_$11096","typeString":"enum Math.Rounding"}},"visibility":"internal"}],"src":"11896:50:47"},"returnParameters":{"id":11712,"nodeType":"ParameterList","parameters":[{"constant":false,"id":11711,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":11737,"src":"11970:7:47","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":11710,"name":"uint256","nodeType":"ElementaryTypeName","src":"11970:7:47","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"11969:9:47"},"scope":12726,"src":"11881:211:47","stateMutability":"pure","virtual":false,"visibility":"internal"},{"body":{"id":11833,"nodeType":"Block","src":"12726:1849:47","statements":[{"id":11832,"nodeType":"UncheckedBlock","src":"12736:1833:47","statements":[{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":11749,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":11747,"name":"n","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":11742,"src":"12764:1:47","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"hexValue":"30","id":11748,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"12769:1:47","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"12764:6:47","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":11752,"nodeType":"IfStatement","src":"12760:20:47","trueBody":{"expression":{"hexValue":"30","id":11750,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"12779:1:47","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"functionReturnParameters":11746,"id":11751,"nodeType":"Return","src":"12772:8:47"}},{"assignments":[11754],"declarations":[{"constant":false,"id":11754,"mutability":"mutable","name":"remainder","nameLocation":"13259:9:47","nodeType":"VariableDeclaration","scope":11832,"src":"13251:17:47","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":11753,"name":"uint256","nodeType":"ElementaryTypeName","src":"13251:7:47","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":11758,"initialValue":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":11757,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":11755,"name":"a","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":11740,"src":"13271:1:47","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"%","rightExpression":{"id":11756,"name":"n","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":11742,"src":"13275:1:47","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"13271:5:47","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"VariableDeclarationStatement","src":"13251:25:47"},{"assignments":[11760],"declarations":[{"constant":false,"id":11760,"mutability":"mutable","name":"gcd","nameLocation":"13298:3:47","nodeType":"VariableDeclaration","scope":11832,"src":"13290:11:47","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":11759,"name":"uint256","nodeType":"ElementaryTypeName","src":"13290:7:47","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":11762,"initialValue":{"id":11761,"name":"n","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":11742,"src":"13304:1:47","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"VariableDeclarationStatement","src":"13290:15:47"},{"assignments":[11764],"declarations":[{"constant":false,"id":11764,"mutability":"mutable","name":"x","nameLocation":"13448:1:47","nodeType":"VariableDeclaration","scope":11832,"src":"13441:8:47","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"},"typeName":{"id":11763,"name":"int256","nodeType":"ElementaryTypeName","src":"13441:6:47","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"visibility":"internal"}],"id":11766,"initialValue":{"hexValue":"30","id":11765,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"13452:1:47","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"nodeType":"VariableDeclarationStatement","src":"13441:12:47"},{"assignments":[11768],"declarations":[{"constant":false,"id":11768,"mutability":"mutable","name":"y","nameLocation":"13474:1:47","nodeType":"VariableDeclaration","scope":11832,"src":"13467:8:47","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"},"typeName":{"id":11767,"name":"int256","nodeType":"ElementaryTypeName","src":"13467:6:47","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"visibility":"internal"}],"id":11770,"initialValue":{"hexValue":"31","id":11769,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"13478:1:47","typeDescriptions":{"typeIdentifier":"t_rational_1_by_1","typeString":"int_const 1"},"value":"1"},"nodeType":"VariableDeclarationStatement","src":"13467:12:47"},{"body":{"id":11807,"nodeType":"Block","src":"13517:882:47","statements":[{"assignments":[11775],"declarations":[{"constant":false,"id":11775,"mutability":"mutable","name":"quotient","nameLocation":"13543:8:47","nodeType":"VariableDeclaration","scope":11807,"src":"13535:16:47","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":11774,"name":"uint256","nodeType":"ElementaryTypeName","src":"13535:7:47","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":11779,"initialValue":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":11778,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":11776,"name":"gcd","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":11760,"src":"13554:3:47","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"/","rightExpression":{"id":11777,"name":"remainder","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":11754,"src":"13560:9:47","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"13554:15:47","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"VariableDeclarationStatement","src":"13535:34:47"},{"expression":{"id":11790,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"components":[{"id":11780,"name":"gcd","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":11760,"src":"13589:3:47","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"id":11781,"name":"remainder","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":11754,"src":"13594:9:47","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"id":11782,"isConstant":false,"isInlineArray":false,"isLValue":true,"isPure":false,"lValueRequested":true,"nodeType":"TupleExpression","src":"13588:16:47","typeDescriptions":{"typeIdentifier":"t_tuple$_t_uint256_$_t_uint256_$","typeString":"tuple(uint256,uint256)"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"components":[{"id":11783,"name":"remainder","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":11754,"src":"13694:9:47","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":11788,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":11784,"name":"gcd","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":11760,"src":"13939:3:47","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"-","rightExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":11787,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":11785,"name":"remainder","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":11754,"src":"13945:9:47","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"*","rightExpression":{"id":11786,"name":"quotient","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":11775,"src":"13957:8:47","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"13945:20:47","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"13939:26:47","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"id":11789,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"13607:376:47","typeDescriptions":{"typeIdentifier":"t_tuple$_t_uint256_$_t_uint256_$","typeString":"tuple(uint256,uint256)"}},"src":"13588:395:47","typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":11791,"nodeType":"ExpressionStatement","src":"13588:395:47"},{"expression":{"id":11805,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"components":[{"id":11792,"name":"x","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":11764,"src":"14003:1:47","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},{"id":11793,"name":"y","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":11768,"src":"14006:1:47","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}}],"id":11794,"isConstant":false,"isInlineArray":false,"isLValue":true,"isPure":false,"lValueRequested":true,"nodeType":"TupleExpression","src":"14002:6:47","typeDescriptions":{"typeIdentifier":"t_tuple$_t_int256_$_t_int256_$","typeString":"tuple(int256,int256)"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"components":[{"id":11795,"name":"y","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":11768,"src":"14088:1:47","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},{"commonType":{"typeIdentifier":"t_int256","typeString":"int256"},"id":11803,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":11796,"name":"x","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":11764,"src":"14342:1:47","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"nodeType":"BinaryOperation","operator":"-","rightExpression":{"commonType":{"typeIdentifier":"t_int256","typeString":"int256"},"id":11802,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":11797,"name":"y","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":11768,"src":"14346:1:47","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"nodeType":"BinaryOperation","operator":"*","rightExpression":{"arguments":[{"id":11800,"name":"quotient","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":11775,"src":"14357:8:47","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":11799,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"14350:6:47","typeDescriptions":{"typeIdentifier":"t_type$_t_int256_$","typeString":"type(int256)"},"typeName":{"id":11798,"name":"int256","nodeType":"ElementaryTypeName","src":"14350:6:47","typeDescriptions":{}}},"id":11801,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"14350:16:47","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"src":"14346:20:47","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"src":"14342:24:47","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}}],"id":11804,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"14011:373:47","typeDescriptions":{"typeIdentifier":"t_tuple$_t_int256_$_t_int256_$","typeString":"tuple(int256,int256)"}},"src":"14002:382:47","typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":11806,"nodeType":"ExpressionStatement","src":"14002:382:47"}]},"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":11773,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":11771,"name":"remainder","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":11754,"src":"13501:9:47","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"!=","rightExpression":{"hexValue":"30","id":11772,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"13514:1:47","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"13501:14:47","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":11808,"nodeType":"WhileStatement","src":"13494:905:47"},{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":11811,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":11809,"name":"gcd","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":11760,"src":"14417:3:47","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"!=","rightExpression":{"hexValue":"31","id":11810,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"14424:1:47","typeDescriptions":{"typeIdentifier":"t_rational_1_by_1","typeString":"int_const 1"},"value":"1"},"src":"14417:8:47","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":11814,"nodeType":"IfStatement","src":"14413:22:47","trueBody":{"expression":{"hexValue":"30","id":11812,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"14434:1:47","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"functionReturnParameters":11746,"id":11813,"nodeType":"Return","src":"14427:8:47"}},{"expression":{"arguments":[{"commonType":{"typeIdentifier":"t_int256","typeString":"int256"},"id":11818,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":11816,"name":"x","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":11764,"src":"14486:1:47","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"nodeType":"BinaryOperation","operator":"<","rightExpression":{"hexValue":"30","id":11817,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"14490:1:47","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"14486:5:47","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":11825,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":11819,"name":"n","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":11742,"src":"14493:1:47","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"-","rightExpression":{"arguments":[{"id":11823,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"UnaryOperation","operator":"-","prefix":true,"src":"14505:2:47","subExpression":{"id":11822,"name":"x","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":11764,"src":"14506:1:47","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_int256","typeString":"int256"}],"id":11821,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"14497:7:47","typeDescriptions":{"typeIdentifier":"t_type$_t_uint256_$","typeString":"type(uint256)"},"typeName":{"id":11820,"name":"uint256","nodeType":"ElementaryTypeName","src":"14497:7:47","typeDescriptions":{}}},"id":11824,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"14497:11:47","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"14493:15:47","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"arguments":[{"id":11828,"name":"x","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":11764,"src":"14518:1:47","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_int256","typeString":"int256"}],"id":11827,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"14510:7:47","typeDescriptions":{"typeIdentifier":"t_type$_t_uint256_$","typeString":"type(uint256)"},"typeName":{"id":11826,"name":"uint256","nodeType":"ElementaryTypeName","src":"14510:7:47","typeDescriptions":{}}},"id":11829,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"14510:10:47","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":11815,"name":"ternary","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":11373,"src":"14478:7:47","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_bool_$_t_uint256_$_t_uint256_$returns$_t_uint256_$","typeString":"function (bool,uint256,uint256) pure returns (uint256)"}},"id":11830,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"14478:43:47","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"functionReturnParameters":11746,"id":11831,"nodeType":"Return","src":"14471:50:47"}]}]},"documentation":{"id":11738,"nodeType":"StructuredDocumentation","src":"12098:553:47","text":" @dev Calculate the modular multiplicative inverse of a number in Z/nZ.\n If n is a prime, then Z/nZ is a field. In that case all elements are inversible, except 0.\n If n is not a prime, then Z/nZ is not a field, and some elements might not be inversible.\n If the input value is not inversible, 0 is returned.\n NOTE: If you know for sure that n is (big) a prime, it may be cheaper to use Fermat's little theorem and get the\n inverse using `Math.modExp(a, n - 2, n)`. See {invModPrime}."},"id":11834,"implemented":true,"kind":"function","modifiers":[],"name":"invMod","nameLocation":"12665:6:47","nodeType":"FunctionDefinition","parameters":{"id":11743,"nodeType":"ParameterList","parameters":[{"constant":false,"id":11740,"mutability":"mutable","name":"a","nameLocation":"12680:1:47","nodeType":"VariableDeclaration","scope":11834,"src":"12672:9:47","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":11739,"name":"uint256","nodeType":"ElementaryTypeName","src":"12672:7:47","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":11742,"mutability":"mutable","name":"n","nameLocation":"12691:1:47","nodeType":"VariableDeclaration","scope":11834,"src":"12683:9:47","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":11741,"name":"uint256","nodeType":"ElementaryTypeName","src":"12683:7:47","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"12671:22:47"},"returnParameters":{"id":11746,"nodeType":"ParameterList","parameters":[{"constant":false,"id":11745,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":11834,"src":"12717:7:47","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":11744,"name":"uint256","nodeType":"ElementaryTypeName","src":"12717:7:47","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"12716:9:47"},"scope":12726,"src":"12656:1919:47","stateMutability":"pure","virtual":false,"visibility":"internal"},{"body":{"id":11854,"nodeType":"Block","src":"15175:82:47","statements":[{"id":11853,"nodeType":"UncheckedBlock","src":"15185:66:47","statements":[{"expression":{"arguments":[{"id":11846,"name":"a","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":11837,"src":"15228:1:47","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":11849,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":11847,"name":"p","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":11839,"src":"15231:1:47","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"-","rightExpression":{"hexValue":"32","id":11848,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"15235:1:47","typeDescriptions":{"typeIdentifier":"t_rational_2_by_1","typeString":"int_const 2"},"value":"2"},"src":"15231:5:47","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"id":11850,"name":"p","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":11839,"src":"15238:1:47","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":11844,"name":"Math","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":12726,"src":"15216:4:47","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_Math_$12726_$","typeString":"type(library Math)"}},"id":11845,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"15221:6:47","memberName":"modExp","nodeType":"MemberAccess","referencedDeclaration":11891,"src":"15216:11:47","typeDescriptions":{"typeIdentifier":"t_function_internal_view$_t_uint256_$_t_uint256_$_t_uint256_$returns$_t_uint256_$","typeString":"function (uint256,uint256,uint256) view returns (uint256)"}},"id":11851,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"15216:24:47","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"functionReturnParameters":11843,"id":11852,"nodeType":"Return","src":"15209:31:47"}]}]},"documentation":{"id":11835,"nodeType":"StructuredDocumentation","src":"14581:514:47","text":" @dev Variant of {invMod}. More efficient, but only works if `p` is known to be a prime greater than `2`.\n From https://en.wikipedia.org/wiki/Fermat%27s_little_theorem[Fermat's little theorem], we know that if p is\n prime, then `a**(p-1) ≡ 1 mod p`. As a consequence, we have `a * a**(p-2) ≡ 1 mod p`, which means that\n `a**(p-2)` is the modular multiplicative inverse of a in Fp.\n NOTE: this function does NOT check that `p` is a prime greater than `2`."},"id":11855,"implemented":true,"kind":"function","modifiers":[],"name":"invModPrime","nameLocation":"15109:11:47","nodeType":"FunctionDefinition","parameters":{"id":11840,"nodeType":"ParameterList","parameters":[{"constant":false,"id":11837,"mutability":"mutable","name":"a","nameLocation":"15129:1:47","nodeType":"VariableDeclaration","scope":11855,"src":"15121:9:47","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":11836,"name":"uint256","nodeType":"ElementaryTypeName","src":"15121:7:47","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":11839,"mutability":"mutable","name":"p","nameLocation":"15140:1:47","nodeType":"VariableDeclaration","scope":11855,"src":"15132:9:47","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":11838,"name":"uint256","nodeType":"ElementaryTypeName","src":"15132:7:47","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"15120:22:47"},"returnParameters":{"id":11843,"nodeType":"ParameterList","parameters":[{"constant":false,"id":11842,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":11855,"src":"15166:7:47","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":11841,"name":"uint256","nodeType":"ElementaryTypeName","src":"15166:7:47","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"15165:9:47"},"scope":12726,"src":"15100:157:47","stateMutability":"view","virtual":false,"visibility":"internal"},{"body":{"id":11890,"nodeType":"Block","src":"16027:174:47","statements":[{"assignments":[11868,11870],"declarations":[{"constant":false,"id":11868,"mutability":"mutable","name":"success","nameLocation":"16043:7:47","nodeType":"VariableDeclaration","scope":11890,"src":"16038:12:47","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":11867,"name":"bool","nodeType":"ElementaryTypeName","src":"16038:4:47","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"},{"constant":false,"id":11870,"mutability":"mutable","name":"result","nameLocation":"16060:6:47","nodeType":"VariableDeclaration","scope":11890,"src":"16052:14:47","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":11869,"name":"uint256","nodeType":"ElementaryTypeName","src":"16052:7:47","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":11876,"initialValue":{"arguments":[{"id":11872,"name":"b","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":11858,"src":"16080:1:47","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"id":11873,"name":"e","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":11860,"src":"16083:1:47","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"id":11874,"name":"m","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":11862,"src":"16086:1:47","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":11871,"name":"tryModExp","nodeType":"Identifier","overloadedDeclarations":[11915,11997],"referencedDeclaration":11915,"src":"16070:9:47","typeDescriptions":{"typeIdentifier":"t_function_internal_view$_t_uint256_$_t_uint256_$_t_uint256_$returns$_t_bool_$_t_uint256_$","typeString":"function (uint256,uint256,uint256) view returns (bool,uint256)"}},"id":11875,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"16070:18:47","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$_t_bool_$_t_uint256_$","typeString":"tuple(bool,uint256)"}},"nodeType":"VariableDeclarationStatement","src":"16037:51:47"},{"condition":{"id":11878,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"UnaryOperation","operator":"!","prefix":true,"src":"16102:8:47","subExpression":{"id":11877,"name":"success","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":11868,"src":"16103:7:47","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":11887,"nodeType":"IfStatement","src":"16098:74:47","trueBody":{"id":11886,"nodeType":"Block","src":"16112:60:47","statements":[{"expression":{"arguments":[{"expression":{"id":11882,"name":"Panic","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10908,"src":"16138:5:47","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_Panic_$10908_$","typeString":"type(library Panic)"}},"id":11883,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberLocation":"16144:16:47","memberName":"DIVISION_BY_ZERO","nodeType":"MemberAccess","referencedDeclaration":10875,"src":"16138:22:47","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"expression":{"id":11879,"name":"Panic","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10908,"src":"16126:5:47","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_Panic_$10908_$","typeString":"type(library Panic)"}},"id":11881,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"16132:5:47","memberName":"panic","nodeType":"MemberAccess","referencedDeclaration":10907,"src":"16126:11:47","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_uint256_$returns$__$","typeString":"function (uint256) pure"}},"id":11884,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"16126:35:47","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":11885,"nodeType":"ExpressionStatement","src":"16126:35:47"}]}},{"expression":{"id":11888,"name":"result","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":11870,"src":"16188:6:47","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"functionReturnParameters":11866,"id":11889,"nodeType":"Return","src":"16181:13:47"}]},"documentation":{"id":11856,"nodeType":"StructuredDocumentation","src":"15263:678:47","text":" @dev Returns the modular exponentiation of the specified base, exponent and modulus (b ** e % m)\n Requirements:\n - modulus can't be zero\n - underlying staticcall to precompile must succeed\n IMPORTANT: The result is only valid if the underlying call succeeds. When using this function, make\n sure the chain you're using it on supports the precompiled contract for modular exponentiation\n at address 0x05 as specified in https://eips.ethereum.org/EIPS/eip-198[EIP-198]. Otherwise,\n the underlying function will succeed given the lack of a revert, but the result may be incorrectly\n interpreted as 0."},"id":11891,"implemented":true,"kind":"function","modifiers":[],"name":"modExp","nameLocation":"15955:6:47","nodeType":"FunctionDefinition","parameters":{"id":11863,"nodeType":"ParameterList","parameters":[{"constant":false,"id":11858,"mutability":"mutable","name":"b","nameLocation":"15970:1:47","nodeType":"VariableDeclaration","scope":11891,"src":"15962:9:47","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":11857,"name":"uint256","nodeType":"ElementaryTypeName","src":"15962:7:47","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":11860,"mutability":"mutable","name":"e","nameLocation":"15981:1:47","nodeType":"VariableDeclaration","scope":11891,"src":"15973:9:47","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":11859,"name":"uint256","nodeType":"ElementaryTypeName","src":"15973:7:47","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":11862,"mutability":"mutable","name":"m","nameLocation":"15992:1:47","nodeType":"VariableDeclaration","scope":11891,"src":"15984:9:47","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":11861,"name":"uint256","nodeType":"ElementaryTypeName","src":"15984:7:47","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"15961:33:47"},"returnParameters":{"id":11866,"nodeType":"ParameterList","parameters":[{"constant":false,"id":11865,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":11891,"src":"16018:7:47","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":11864,"name":"uint256","nodeType":"ElementaryTypeName","src":"16018:7:47","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"16017:9:47"},"scope":12726,"src":"15946:255:47","stateMutability":"view","virtual":false,"visibility":"internal"},{"body":{"id":11914,"nodeType":"Block","src":"17055:1493:47","statements":[{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":11907,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":11905,"name":"m","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":11898,"src":"17069:1:47","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"hexValue":"30","id":11906,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"17074:1:47","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"17069:6:47","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":11912,"nodeType":"IfStatement","src":"17065:29:47","trueBody":{"expression":{"components":[{"hexValue":"66616c7365","id":11908,"isConstant":false,"isLValue":false,"isPure":true,"kind":"bool","lValueRequested":false,"nodeType":"Literal","src":"17085:5:47","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"value":"false"},{"hexValue":"30","id":11909,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"17092:1:47","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"}],"id":11910,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"TupleExpression","src":"17084:10:47","typeDescriptions":{"typeIdentifier":"t_tuple$_t_bool_$_t_rational_0_by_1_$","typeString":"tuple(bool,int_const 0)"}},"functionReturnParameters":11904,"id":11911,"nodeType":"Return","src":"17077:17:47"}},{"AST":{"nativeSrc":"17129:1413:47","nodeType":"YulBlock","src":"17129:1413:47","statements":[{"nativeSrc":"17143:22:47","nodeType":"YulVariableDeclaration","src":"17143:22:47","value":{"arguments":[{"kind":"number","nativeSrc":"17160:4:47","nodeType":"YulLiteral","src":"17160:4:47","type":"","value":"0x40"}],"functionName":{"name":"mload","nativeSrc":"17154:5:47","nodeType":"YulIdentifier","src":"17154:5:47"},"nativeSrc":"17154:11:47","nodeType":"YulFunctionCall","src":"17154:11:47"},"variables":[{"name":"ptr","nativeSrc":"17147:3:47","nodeType":"YulTypedName","src":"17147:3:47","type":""}]},{"expression":{"arguments":[{"name":"ptr","nativeSrc":"18073:3:47","nodeType":"YulIdentifier","src":"18073:3:47"},{"kind":"number","nativeSrc":"18078:4:47","nodeType":"YulLiteral","src":"18078:4:47","type":"","value":"0x20"}],"functionName":{"name":"mstore","nativeSrc":"18066:6:47","nodeType":"YulIdentifier","src":"18066:6:47"},"nativeSrc":"18066:17:47","nodeType":"YulFunctionCall","src":"18066:17:47"},"nativeSrc":"18066:17:47","nodeType":"YulExpressionStatement","src":"18066:17:47"},{"expression":{"arguments":[{"arguments":[{"name":"ptr","nativeSrc":"18107:3:47","nodeType":"YulIdentifier","src":"18107:3:47"},{"kind":"number","nativeSrc":"18112:4:47","nodeType":"YulLiteral","src":"18112:4:47","type":"","value":"0x20"}],"functionName":{"name":"add","nativeSrc":"18103:3:47","nodeType":"YulIdentifier","src":"18103:3:47"},"nativeSrc":"18103:14:47","nodeType":"YulFunctionCall","src":"18103:14:47"},{"kind":"number","nativeSrc":"18119:4:47","nodeType":"YulLiteral","src":"18119:4:47","type":"","value":"0x20"}],"functionName":{"name":"mstore","nativeSrc":"18096:6:47","nodeType":"YulIdentifier","src":"18096:6:47"},"nativeSrc":"18096:28:47","nodeType":"YulFunctionCall","src":"18096:28:47"},"nativeSrc":"18096:28:47","nodeType":"YulExpressionStatement","src":"18096:28:47"},{"expression":{"arguments":[{"arguments":[{"name":"ptr","nativeSrc":"18148:3:47","nodeType":"YulIdentifier","src":"18148:3:47"},{"kind":"number","nativeSrc":"18153:4:47","nodeType":"YulLiteral","src":"18153:4:47","type":"","value":"0x40"}],"functionName":{"name":"add","nativeSrc":"18144:3:47","nodeType":"YulIdentifier","src":"18144:3:47"},"nativeSrc":"18144:14:47","nodeType":"YulFunctionCall","src":"18144:14:47"},{"kind":"number","nativeSrc":"18160:4:47","nodeType":"YulLiteral","src":"18160:4:47","type":"","value":"0x20"}],"functionName":{"name":"mstore","nativeSrc":"18137:6:47","nodeType":"YulIdentifier","src":"18137:6:47"},"nativeSrc":"18137:28:47","nodeType":"YulFunctionCall","src":"18137:28:47"},"nativeSrc":"18137:28:47","nodeType":"YulExpressionStatement","src":"18137:28:47"},{"expression":{"arguments":[{"arguments":[{"name":"ptr","nativeSrc":"18189:3:47","nodeType":"YulIdentifier","src":"18189:3:47"},{"kind":"number","nativeSrc":"18194:4:47","nodeType":"YulLiteral","src":"18194:4:47","type":"","value":"0x60"}],"functionName":{"name":"add","nativeSrc":"18185:3:47","nodeType":"YulIdentifier","src":"18185:3:47"},"nativeSrc":"18185:14:47","nodeType":"YulFunctionCall","src":"18185:14:47"},{"name":"b","nativeSrc":"18201:1:47","nodeType":"YulIdentifier","src":"18201:1:47"}],"functionName":{"name":"mstore","nativeSrc":"18178:6:47","nodeType":"YulIdentifier","src":"18178:6:47"},"nativeSrc":"18178:25:47","nodeType":"YulFunctionCall","src":"18178:25:47"},"nativeSrc":"18178:25:47","nodeType":"YulExpressionStatement","src":"18178:25:47"},{"expression":{"arguments":[{"arguments":[{"name":"ptr","nativeSrc":"18227:3:47","nodeType":"YulIdentifier","src":"18227:3:47"},{"kind":"number","nativeSrc":"18232:4:47","nodeType":"YulLiteral","src":"18232:4:47","type":"","value":"0x80"}],"functionName":{"name":"add","nativeSrc":"18223:3:47","nodeType":"YulIdentifier","src":"18223:3:47"},"nativeSrc":"18223:14:47","nodeType":"YulFunctionCall","src":"18223:14:47"},{"name":"e","nativeSrc":"18239:1:47","nodeType":"YulIdentifier","src":"18239:1:47"}],"functionName":{"name":"mstore","nativeSrc":"18216:6:47","nodeType":"YulIdentifier","src":"18216:6:47"},"nativeSrc":"18216:25:47","nodeType":"YulFunctionCall","src":"18216:25:47"},"nativeSrc":"18216:25:47","nodeType":"YulExpressionStatement","src":"18216:25:47"},{"expression":{"arguments":[{"arguments":[{"name":"ptr","nativeSrc":"18265:3:47","nodeType":"YulIdentifier","src":"18265:3:47"},{"kind":"number","nativeSrc":"18270:4:47","nodeType":"YulLiteral","src":"18270:4:47","type":"","value":"0xa0"}],"functionName":{"name":"add","nativeSrc":"18261:3:47","nodeType":"YulIdentifier","src":"18261:3:47"},"nativeSrc":"18261:14:47","nodeType":"YulFunctionCall","src":"18261:14:47"},{"name":"m","nativeSrc":"18277:1:47","nodeType":"YulIdentifier","src":"18277:1:47"}],"functionName":{"name":"mstore","nativeSrc":"18254:6:47","nodeType":"YulIdentifier","src":"18254:6:47"},"nativeSrc":"18254:25:47","nodeType":"YulFunctionCall","src":"18254:25:47"},"nativeSrc":"18254:25:47","nodeType":"YulExpressionStatement","src":"18254:25:47"},{"nativeSrc":"18441:57:47","nodeType":"YulAssignment","src":"18441:57:47","value":{"arguments":[{"arguments":[],"functionName":{"name":"gas","nativeSrc":"18463:3:47","nodeType":"YulIdentifier","src":"18463:3:47"},"nativeSrc":"18463:5:47","nodeType":"YulFunctionCall","src":"18463:5:47"},{"kind":"number","nativeSrc":"18470:4:47","nodeType":"YulLiteral","src":"18470:4:47","type":"","value":"0x05"},{"name":"ptr","nativeSrc":"18476:3:47","nodeType":"YulIdentifier","src":"18476:3:47"},{"kind":"number","nativeSrc":"18481:4:47","nodeType":"YulLiteral","src":"18481:4:47","type":"","value":"0xc0"},{"kind":"number","nativeSrc":"18487:4:47","nodeType":"YulLiteral","src":"18487:4:47","type":"","value":"0x00"},{"kind":"number","nativeSrc":"18493:4:47","nodeType":"YulLiteral","src":"18493:4:47","type":"","value":"0x20"}],"functionName":{"name":"staticcall","nativeSrc":"18452:10:47","nodeType":"YulIdentifier","src":"18452:10:47"},"nativeSrc":"18452:46:47","nodeType":"YulFunctionCall","src":"18452:46:47"},"variableNames":[{"name":"success","nativeSrc":"18441:7:47","nodeType":"YulIdentifier","src":"18441:7:47"}]},{"nativeSrc":"18511:21:47","nodeType":"YulAssignment","src":"18511:21:47","value":{"arguments":[{"kind":"number","nativeSrc":"18527:4:47","nodeType":"YulLiteral","src":"18527:4:47","type":"","value":"0x00"}],"functionName":{"name":"mload","nativeSrc":"18521:5:47","nodeType":"YulIdentifier","src":"18521:5:47"},"nativeSrc":"18521:11:47","nodeType":"YulFunctionCall","src":"18521:11:47"},"variableNames":[{"name":"result","nativeSrc":"18511:6:47","nodeType":"YulIdentifier","src":"18511:6:47"}]}]},"evmVersion":"prague","externalReferences":[{"declaration":11894,"isOffset":false,"isSlot":false,"src":"18201:1:47","valueSize":1},{"declaration":11896,"isOffset":false,"isSlot":false,"src":"18239:1:47","valueSize":1},{"declaration":11898,"isOffset":false,"isSlot":false,"src":"18277:1:47","valueSize":1},{"declaration":11903,"isOffset":false,"isSlot":false,"src":"18511:6:47","valueSize":1},{"declaration":11901,"isOffset":false,"isSlot":false,"src":"18441:7:47","valueSize":1}],"flags":["memory-safe"],"id":11913,"nodeType":"InlineAssembly","src":"17104:1438:47"}]},"documentation":{"id":11892,"nodeType":"StructuredDocumentation","src":"16207:738:47","text":" @dev Returns the modular exponentiation of the specified base, exponent and modulus (b ** e % m).\n It includes a success flag indicating if the operation succeeded. Operation will be marked as failed if trying\n to operate modulo 0 or if the underlying precompile reverted.\n IMPORTANT: The result is only valid if the success flag is true. When using this function, make sure the chain\n you're using it on supports the precompiled contract for modular exponentiation at address 0x05 as specified in\n https://eips.ethereum.org/EIPS/eip-198[EIP-198]. Otherwise, the underlying function will succeed given the lack\n of a revert, but the result may be incorrectly interpreted as 0."},"id":11915,"implemented":true,"kind":"function","modifiers":[],"name":"tryModExp","nameLocation":"16959:9:47","nodeType":"FunctionDefinition","parameters":{"id":11899,"nodeType":"ParameterList","parameters":[{"constant":false,"id":11894,"mutability":"mutable","name":"b","nameLocation":"16977:1:47","nodeType":"VariableDeclaration","scope":11915,"src":"16969:9:47","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":11893,"name":"uint256","nodeType":"ElementaryTypeName","src":"16969:7:47","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":11896,"mutability":"mutable","name":"e","nameLocation":"16988:1:47","nodeType":"VariableDeclaration","scope":11915,"src":"16980:9:47","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":11895,"name":"uint256","nodeType":"ElementaryTypeName","src":"16980:7:47","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":11898,"mutability":"mutable","name":"m","nameLocation":"16999:1:47","nodeType":"VariableDeclaration","scope":11915,"src":"16991:9:47","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":11897,"name":"uint256","nodeType":"ElementaryTypeName","src":"16991:7:47","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"16968:33:47"},"returnParameters":{"id":11904,"nodeType":"ParameterList","parameters":[{"constant":false,"id":11901,"mutability":"mutable","name":"success","nameLocation":"17030:7:47","nodeType":"VariableDeclaration","scope":11915,"src":"17025:12:47","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":11900,"name":"bool","nodeType":"ElementaryTypeName","src":"17025:4:47","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"},{"constant":false,"id":11903,"mutability":"mutable","name":"result","nameLocation":"17047:6:47","nodeType":"VariableDeclaration","scope":11915,"src":"17039:14:47","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":11902,"name":"uint256","nodeType":"ElementaryTypeName","src":"17039:7:47","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"17024:30:47"},"scope":12726,"src":"16950:1598:47","stateMutability":"view","virtual":false,"visibility":"internal"},{"body":{"id":11950,"nodeType":"Block","src":"18745:179:47","statements":[{"assignments":[11928,11930],"declarations":[{"constant":false,"id":11928,"mutability":"mutable","name":"success","nameLocation":"18761:7:47","nodeType":"VariableDeclaration","scope":11950,"src":"18756:12:47","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":11927,"name":"bool","nodeType":"ElementaryTypeName","src":"18756:4:47","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"},{"constant":false,"id":11930,"mutability":"mutable","name":"result","nameLocation":"18783:6:47","nodeType":"VariableDeclaration","scope":11950,"src":"18770:19:47","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes"},"typeName":{"id":11929,"name":"bytes","nodeType":"ElementaryTypeName","src":"18770:5:47","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"}],"id":11936,"initialValue":{"arguments":[{"id":11932,"name":"b","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":11918,"src":"18803:1:47","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}},{"id":11933,"name":"e","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":11920,"src":"18806:1:47","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}},{"id":11934,"name":"m","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":11922,"src":"18809:1:47","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"},{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"},{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}],"id":11931,"name":"tryModExp","nodeType":"Identifier","overloadedDeclarations":[11915,11997],"referencedDeclaration":11997,"src":"18793:9:47","typeDescriptions":{"typeIdentifier":"t_function_internal_view$_t_bytes_memory_ptr_$_t_bytes_memory_ptr_$_t_bytes_memory_ptr_$returns$_t_bool_$_t_bytes_memory_ptr_$","typeString":"function (bytes memory,bytes memory,bytes memory) view returns (bool,bytes memory)"}},"id":11935,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"18793:18:47","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$_t_bool_$_t_bytes_memory_ptr_$","typeString":"tuple(bool,bytes memory)"}},"nodeType":"VariableDeclarationStatement","src":"18755:56:47"},{"condition":{"id":11938,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"UnaryOperation","operator":"!","prefix":true,"src":"18825:8:47","subExpression":{"id":11937,"name":"success","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":11928,"src":"18826:7:47","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":11947,"nodeType":"IfStatement","src":"18821:74:47","trueBody":{"id":11946,"nodeType":"Block","src":"18835:60:47","statements":[{"expression":{"arguments":[{"expression":{"id":11942,"name":"Panic","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10908,"src":"18861:5:47","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_Panic_$10908_$","typeString":"type(library Panic)"}},"id":11943,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberLocation":"18867:16:47","memberName":"DIVISION_BY_ZERO","nodeType":"MemberAccess","referencedDeclaration":10875,"src":"18861:22:47","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"expression":{"id":11939,"name":"Panic","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10908,"src":"18849:5:47","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_Panic_$10908_$","typeString":"type(library Panic)"}},"id":11941,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"18855:5:47","memberName":"panic","nodeType":"MemberAccess","referencedDeclaration":10907,"src":"18849:11:47","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_uint256_$returns$__$","typeString":"function (uint256) pure"}},"id":11944,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"18849:35:47","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":11945,"nodeType":"ExpressionStatement","src":"18849:35:47"}]}},{"expression":{"id":11948,"name":"result","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":11930,"src":"18911:6:47","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}},"functionReturnParameters":11926,"id":11949,"nodeType":"Return","src":"18904:13:47"}]},"documentation":{"id":11916,"nodeType":"StructuredDocumentation","src":"18554:85:47","text":" @dev Variant of {modExp} that supports inputs of arbitrary length."},"id":11951,"implemented":true,"kind":"function","modifiers":[],"name":"modExp","nameLocation":"18653:6:47","nodeType":"FunctionDefinition","parameters":{"id":11923,"nodeType":"ParameterList","parameters":[{"constant":false,"id":11918,"mutability":"mutable","name":"b","nameLocation":"18673:1:47","nodeType":"VariableDeclaration","scope":11951,"src":"18660:14:47","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes"},"typeName":{"id":11917,"name":"bytes","nodeType":"ElementaryTypeName","src":"18660:5:47","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"},{"constant":false,"id":11920,"mutability":"mutable","name":"e","nameLocation":"18689:1:47","nodeType":"VariableDeclaration","scope":11951,"src":"18676:14:47","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes"},"typeName":{"id":11919,"name":"bytes","nodeType":"ElementaryTypeName","src":"18676:5:47","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"},{"constant":false,"id":11922,"mutability":"mutable","name":"m","nameLocation":"18705:1:47","nodeType":"VariableDeclaration","scope":11951,"src":"18692:14:47","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes"},"typeName":{"id":11921,"name":"bytes","nodeType":"ElementaryTypeName","src":"18692:5:47","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"}],"src":"18659:48:47"},"returnParameters":{"id":11926,"nodeType":"ParameterList","parameters":[{"constant":false,"id":11925,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":11951,"src":"18731:12:47","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes"},"typeName":{"id":11924,"name":"bytes","nodeType":"ElementaryTypeName","src":"18731:5:47","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"}],"src":"18730:14:47"},"scope":12726,"src":"18644:280:47","stateMutability":"view","virtual":false,"visibility":"internal"},{"body":{"id":11996,"nodeType":"Block","src":"19178:771:47","statements":[{"condition":{"arguments":[{"id":11966,"name":"m","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":11958,"src":"19203:1:47","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}],"id":11965,"name":"_zeroBytes","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":12030,"src":"19192:10:47","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_bytes_memory_ptr_$returns$_t_bool_$","typeString":"function (bytes memory) pure returns (bool)"}},"id":11967,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"19192:13:47","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":11975,"nodeType":"IfStatement","src":"19188:47:47","trueBody":{"expression":{"components":[{"hexValue":"66616c7365","id":11968,"isConstant":false,"isLValue":false,"isPure":true,"kind":"bool","lValueRequested":false,"nodeType":"Literal","src":"19215:5:47","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"value":"false"},{"arguments":[{"hexValue":"30","id":11971,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"19232:1:47","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":11970,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"NewExpression","src":"19222:9:47","typeDescriptions":{"typeIdentifier":"t_function_objectcreation_pure$_t_uint256_$returns$_t_bytes_memory_ptr_$","typeString":"function (uint256) pure returns (bytes memory)"},"typeName":{"id":11969,"name":"bytes","nodeType":"ElementaryTypeName","src":"19226:5:47","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}}},"id":11972,"isConstant":false,"isLValue":false,"isPure":true,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"19222:12:47","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}}],"id":11973,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"TupleExpression","src":"19214:21:47","typeDescriptions":{"typeIdentifier":"t_tuple$_t_bool_$_t_bytes_memory_ptr_$","typeString":"tuple(bool,bytes memory)"}},"functionReturnParameters":11964,"id":11974,"nodeType":"Return","src":"19207:28:47"}},{"assignments":[11977],"declarations":[{"constant":false,"id":11977,"mutability":"mutable","name":"mLen","nameLocation":"19254:4:47","nodeType":"VariableDeclaration","scope":11996,"src":"19246:12:47","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":11976,"name":"uint256","nodeType":"ElementaryTypeName","src":"19246:7:47","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":11980,"initialValue":{"expression":{"id":11978,"name":"m","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":11958,"src":"19261:1:47","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}},"id":11979,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"19263:6:47","memberName":"length","nodeType":"MemberAccess","src":"19261:8:47","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"VariableDeclarationStatement","src":"19246:23:47"},{"expression":{"id":11993,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":11981,"name":"result","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":11963,"src":"19351:6:47","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"arguments":[{"expression":{"id":11984,"name":"b","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":11954,"src":"19377:1:47","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}},"id":11985,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"19379:6:47","memberName":"length","nodeType":"MemberAccess","src":"19377:8:47","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"expression":{"id":11986,"name":"e","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":11956,"src":"19387:1:47","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}},"id":11987,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"19389:6:47","memberName":"length","nodeType":"MemberAccess","src":"19387:8:47","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"id":11988,"name":"mLen","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":11977,"src":"19397:4:47","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"id":11989,"name":"b","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":11954,"src":"19403:1:47","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}},{"id":11990,"name":"e","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":11956,"src":"19406:1:47","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}},{"id":11991,"name":"m","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":11958,"src":"19409:1:47","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"},{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"},{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}],"expression":{"id":11982,"name":"abi","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-1,"src":"19360:3:47","typeDescriptions":{"typeIdentifier":"t_magic_abi","typeString":"abi"}},"id":11983,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberLocation":"19364:12:47","memberName":"encodePacked","nodeType":"MemberAccess","src":"19360:16:47","typeDescriptions":{"typeIdentifier":"t_function_abiencodepacked_pure$__$returns$_t_bytes_memory_ptr_$","typeString":"function () pure returns (bytes memory)"}},"id":11992,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"19360:51:47","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}},"src":"19351:60:47","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}},"id":11994,"nodeType":"ExpressionStatement","src":"19351:60:47"},{"AST":{"nativeSrc":"19447:496:47","nodeType":"YulBlock","src":"19447:496:47","statements":[{"nativeSrc":"19461:32:47","nodeType":"YulVariableDeclaration","src":"19461:32:47","value":{"arguments":[{"name":"result","nativeSrc":"19480:6:47","nodeType":"YulIdentifier","src":"19480:6:47"},{"kind":"number","nativeSrc":"19488:4:47","nodeType":"YulLiteral","src":"19488:4:47","type":"","value":"0x20"}],"functionName":{"name":"add","nativeSrc":"19476:3:47","nodeType":"YulIdentifier","src":"19476:3:47"},"nativeSrc":"19476:17:47","nodeType":"YulFunctionCall","src":"19476:17:47"},"variables":[{"name":"dataPtr","nativeSrc":"19465:7:47","nodeType":"YulTypedName","src":"19465:7:47","type":""}]},{"nativeSrc":"19583:73:47","nodeType":"YulAssignment","src":"19583:73:47","value":{"arguments":[{"arguments":[],"functionName":{"name":"gas","nativeSrc":"19605:3:47","nodeType":"YulIdentifier","src":"19605:3:47"},"nativeSrc":"19605:5:47","nodeType":"YulFunctionCall","src":"19605:5:47"},{"kind":"number","nativeSrc":"19612:4:47","nodeType":"YulLiteral","src":"19612:4:47","type":"","value":"0x05"},{"name":"dataPtr","nativeSrc":"19618:7:47","nodeType":"YulIdentifier","src":"19618:7:47"},{"arguments":[{"name":"result","nativeSrc":"19633:6:47","nodeType":"YulIdentifier","src":"19633:6:47"}],"functionName":{"name":"mload","nativeSrc":"19627:5:47","nodeType":"YulIdentifier","src":"19627:5:47"},"nativeSrc":"19627:13:47","nodeType":"YulFunctionCall","src":"19627:13:47"},{"name":"dataPtr","nativeSrc":"19642:7:47","nodeType":"YulIdentifier","src":"19642:7:47"},{"name":"mLen","nativeSrc":"19651:4:47","nodeType":"YulIdentifier","src":"19651:4:47"}],"functionName":{"name":"staticcall","nativeSrc":"19594:10:47","nodeType":"YulIdentifier","src":"19594:10:47"},"nativeSrc":"19594:62:47","nodeType":"YulFunctionCall","src":"19594:62:47"},"variableNames":[{"name":"success","nativeSrc":"19583:7:47","nodeType":"YulIdentifier","src":"19583:7:47"}]},{"expression":{"arguments":[{"name":"result","nativeSrc":"19812:6:47","nodeType":"YulIdentifier","src":"19812:6:47"},{"name":"mLen","nativeSrc":"19820:4:47","nodeType":"YulIdentifier","src":"19820:4:47"}],"functionName":{"name":"mstore","nativeSrc":"19805:6:47","nodeType":"YulIdentifier","src":"19805:6:47"},"nativeSrc":"19805:20:47","nodeType":"YulFunctionCall","src":"19805:20:47"},"nativeSrc":"19805:20:47","nodeType":"YulExpressionStatement","src":"19805:20:47"},{"expression":{"arguments":[{"kind":"number","nativeSrc":"19908:4:47","nodeType":"YulLiteral","src":"19908:4:47","type":"","value":"0x40"},{"arguments":[{"name":"dataPtr","nativeSrc":"19918:7:47","nodeType":"YulIdentifier","src":"19918:7:47"},{"name":"mLen","nativeSrc":"19927:4:47","nodeType":"YulIdentifier","src":"19927:4:47"}],"functionName":{"name":"add","nativeSrc":"19914:3:47","nodeType":"YulIdentifier","src":"19914:3:47"},"nativeSrc":"19914:18:47","nodeType":"YulFunctionCall","src":"19914:18:47"}],"functionName":{"name":"mstore","nativeSrc":"19901:6:47","nodeType":"YulIdentifier","src":"19901:6:47"},"nativeSrc":"19901:32:47","nodeType":"YulFunctionCall","src":"19901:32:47"},"nativeSrc":"19901:32:47","nodeType":"YulExpressionStatement","src":"19901:32:47"}]},"evmVersion":"prague","externalReferences":[{"declaration":11977,"isOffset":false,"isSlot":false,"src":"19651:4:47","valueSize":1},{"declaration":11977,"isOffset":false,"isSlot":false,"src":"19820:4:47","valueSize":1},{"declaration":11977,"isOffset":false,"isSlot":false,"src":"19927:4:47","valueSize":1},{"declaration":11963,"isOffset":false,"isSlot":false,"src":"19480:6:47","valueSize":1},{"declaration":11963,"isOffset":false,"isSlot":false,"src":"19633:6:47","valueSize":1},{"declaration":11963,"isOffset":false,"isSlot":false,"src":"19812:6:47","valueSize":1},{"declaration":11961,"isOffset":false,"isSlot":false,"src":"19583:7:47","valueSize":1}],"flags":["memory-safe"],"id":11995,"nodeType":"InlineAssembly","src":"19422:521:47"}]},"documentation":{"id":11952,"nodeType":"StructuredDocumentation","src":"18930:88:47","text":" @dev Variant of {tryModExp} that supports inputs of arbitrary length."},"id":11997,"implemented":true,"kind":"function","modifiers":[],"name":"tryModExp","nameLocation":"19032:9:47","nodeType":"FunctionDefinition","parameters":{"id":11959,"nodeType":"ParameterList","parameters":[{"constant":false,"id":11954,"mutability":"mutable","name":"b","nameLocation":"19064:1:47","nodeType":"VariableDeclaration","scope":11997,"src":"19051:14:47","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes"},"typeName":{"id":11953,"name":"bytes","nodeType":"ElementaryTypeName","src":"19051:5:47","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"},{"constant":false,"id":11956,"mutability":"mutable","name":"e","nameLocation":"19088:1:47","nodeType":"VariableDeclaration","scope":11997,"src":"19075:14:47","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes"},"typeName":{"id":11955,"name":"bytes","nodeType":"ElementaryTypeName","src":"19075:5:47","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"},{"constant":false,"id":11958,"mutability":"mutable","name":"m","nameLocation":"19112:1:47","nodeType":"VariableDeclaration","scope":11997,"src":"19099:14:47","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes"},"typeName":{"id":11957,"name":"bytes","nodeType":"ElementaryTypeName","src":"19099:5:47","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"}],"src":"19041:78:47"},"returnParameters":{"id":11964,"nodeType":"ParameterList","parameters":[{"constant":false,"id":11961,"mutability":"mutable","name":"success","nameLocation":"19148:7:47","nodeType":"VariableDeclaration","scope":11997,"src":"19143:12:47","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":11960,"name":"bool","nodeType":"ElementaryTypeName","src":"19143:4:47","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"},{"constant":false,"id":11963,"mutability":"mutable","name":"result","nameLocation":"19170:6:47","nodeType":"VariableDeclaration","scope":11997,"src":"19157:19:47","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes"},"typeName":{"id":11962,"name":"bytes","nodeType":"ElementaryTypeName","src":"19157:5:47","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"}],"src":"19142:35:47"},"scope":12726,"src":"19023:926:47","stateMutability":"view","virtual":false,"visibility":"internal"},{"body":{"id":12029,"nodeType":"Block","src":"20104:176:47","statements":[{"body":{"id":12025,"nodeType":"Block","src":"20161:92:47","statements":[{"condition":{"commonType":{"typeIdentifier":"t_bytes1","typeString":"bytes1"},"id":12020,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"baseExpression":{"id":12016,"name":"byteArray","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":12000,"src":"20179:9:47","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}},"id":12018,"indexExpression":{"id":12017,"name":"i","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":12006,"src":"20189:1:47","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"20179:12:47","typeDescriptions":{"typeIdentifier":"t_bytes1","typeString":"bytes1"}},"nodeType":"BinaryOperation","operator":"!=","rightExpression":{"hexValue":"30","id":12019,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"20195:1:47","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"20179:17:47","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":12024,"nodeType":"IfStatement","src":"20175:68:47","trueBody":{"id":12023,"nodeType":"Block","src":"20198:45:47","statements":[{"expression":{"hexValue":"66616c7365","id":12021,"isConstant":false,"isLValue":false,"isPure":true,"kind":"bool","lValueRequested":false,"nodeType":"Literal","src":"20223:5:47","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"value":"false"},"functionReturnParameters":12004,"id":12022,"nodeType":"Return","src":"20216:12:47"}]}}]},"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":12012,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":12009,"name":"i","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":12006,"src":"20134:1:47","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"<","rightExpression":{"expression":{"id":12010,"name":"byteArray","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":12000,"src":"20138:9:47","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}},"id":12011,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"20148:6:47","memberName":"length","nodeType":"MemberAccess","src":"20138:16:47","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"20134:20:47","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":12026,"initializationExpression":{"assignments":[12006],"declarations":[{"constant":false,"id":12006,"mutability":"mutable","name":"i","nameLocation":"20127:1:47","nodeType":"VariableDeclaration","scope":12026,"src":"20119:9:47","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":12005,"name":"uint256","nodeType":"ElementaryTypeName","src":"20119:7:47","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":12008,"initialValue":{"hexValue":"30","id":12007,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"20131:1:47","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"nodeType":"VariableDeclarationStatement","src":"20119:13:47"},"isSimpleCounterLoop":true,"loopExpression":{"expression":{"id":12014,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"UnaryOperation","operator":"++","prefix":true,"src":"20156:3:47","subExpression":{"id":12013,"name":"i","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":12006,"src":"20158:1:47","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":12015,"nodeType":"ExpressionStatement","src":"20156:3:47"},"nodeType":"ForStatement","src":"20114:139:47"},{"expression":{"hexValue":"74727565","id":12027,"isConstant":false,"isLValue":false,"isPure":true,"kind":"bool","lValueRequested":false,"nodeType":"Literal","src":"20269:4:47","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"value":"true"},"functionReturnParameters":12004,"id":12028,"nodeType":"Return","src":"20262:11:47"}]},"documentation":{"id":11998,"nodeType":"StructuredDocumentation","src":"19955:72:47","text":" @dev Returns whether the provided byte array is zero."},"id":12030,"implemented":true,"kind":"function","modifiers":[],"name":"_zeroBytes","nameLocation":"20041:10:47","nodeType":"FunctionDefinition","parameters":{"id":12001,"nodeType":"ParameterList","parameters":[{"constant":false,"id":12000,"mutability":"mutable","name":"byteArray","nameLocation":"20065:9:47","nodeType":"VariableDeclaration","scope":12030,"src":"20052:22:47","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes"},"typeName":{"id":11999,"name":"bytes","nodeType":"ElementaryTypeName","src":"20052:5:47","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"}],"src":"20051:24:47"},"returnParameters":{"id":12004,"nodeType":"ParameterList","parameters":[{"constant":false,"id":12003,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":12030,"src":"20098:4:47","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":12002,"name":"bool","nodeType":"ElementaryTypeName","src":"20098:4:47","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"}],"src":"20097:6:47"},"scope":12726,"src":"20032:248:47","stateMutability":"pure","virtual":false,"visibility":"private"},{"body":{"id":12248,"nodeType":"Block","src":"20640:5124:47","statements":[{"id":12247,"nodeType":"UncheckedBlock","src":"20650:5108:47","statements":[{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":12040,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":12038,"name":"a","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":12033,"src":"20744:1:47","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"<=","rightExpression":{"hexValue":"31","id":12039,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"20749:1:47","typeDescriptions":{"typeIdentifier":"t_rational_1_by_1","typeString":"int_const 1"},"value":"1"},"src":"20744:6:47","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":12044,"nodeType":"IfStatement","src":"20740:53:47","trueBody":{"id":12043,"nodeType":"Block","src":"20752:41:47","statements":[{"expression":{"id":12041,"name":"a","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":12033,"src":"20777:1:47","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"functionReturnParameters":12037,"id":12042,"nodeType":"Return","src":"20770:8:47"}]}},{"assignments":[12046],"declarations":[{"constant":false,"id":12046,"mutability":"mutable","name":"aa","nameLocation":"21728:2:47","nodeType":"VariableDeclaration","scope":12247,"src":"21720:10:47","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":12045,"name":"uint256","nodeType":"ElementaryTypeName","src":"21720:7:47","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":12048,"initialValue":{"id":12047,"name":"a","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":12033,"src":"21733:1:47","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"VariableDeclarationStatement","src":"21720:14:47"},{"assignments":[12050],"declarations":[{"constant":false,"id":12050,"mutability":"mutable","name":"xn","nameLocation":"21756:2:47","nodeType":"VariableDeclaration","scope":12247,"src":"21748:10:47","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":12049,"name":"uint256","nodeType":"ElementaryTypeName","src":"21748:7:47","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":12052,"initialValue":{"hexValue":"31","id":12051,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"21761:1:47","typeDescriptions":{"typeIdentifier":"t_rational_1_by_1","typeString":"int_const 1"},"value":"1"},"nodeType":"VariableDeclarationStatement","src":"21748:14:47"},{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":12058,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":12053,"name":"aa","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":12046,"src":"21781:2:47","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">=","rightExpression":{"components":[{"commonType":{"typeIdentifier":"t_rational_340282366920938463463374607431768211456_by_1","typeString":"int_const 3402...(31 digits omitted)...1456"},"id":12056,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"leftExpression":{"hexValue":"31","id":12054,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"21788:1:47","typeDescriptions":{"typeIdentifier":"t_rational_1_by_1","typeString":"int_const 1"},"value":"1"},"nodeType":"BinaryOperation","operator":"<<","rightExpression":{"hexValue":"313238","id":12055,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"21793:3:47","typeDescriptions":{"typeIdentifier":"t_rational_128_by_1","typeString":"int_const 128"},"value":"128"},"src":"21788:8:47","typeDescriptions":{"typeIdentifier":"t_rational_340282366920938463463374607431768211456_by_1","typeString":"int_const 3402...(31 digits omitted)...1456"}}],"id":12057,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"TupleExpression","src":"21787:10:47","typeDescriptions":{"typeIdentifier":"t_rational_340282366920938463463374607431768211456_by_1","typeString":"int_const 3402...(31 digits omitted)...1456"}},"src":"21781:16:47","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":12068,"nodeType":"IfStatement","src":"21777:92:47","trueBody":{"id":12067,"nodeType":"Block","src":"21799:70:47","statements":[{"expression":{"id":12061,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":12059,"name":"aa","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":12046,"src":"21817:2:47","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":">>=","rightHandSide":{"hexValue":"313238","id":12060,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"21824:3:47","typeDescriptions":{"typeIdentifier":"t_rational_128_by_1","typeString":"int_const 128"},"value":"128"},"src":"21817:10:47","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":12062,"nodeType":"ExpressionStatement","src":"21817:10:47"},{"expression":{"id":12065,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":12063,"name":"xn","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":12050,"src":"21845:2:47","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"<<=","rightHandSide":{"hexValue":"3634","id":12064,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"21852:2:47","typeDescriptions":{"typeIdentifier":"t_rational_64_by_1","typeString":"int_const 64"},"value":"64"},"src":"21845:9:47","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":12066,"nodeType":"ExpressionStatement","src":"21845:9:47"}]}},{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":12074,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":12069,"name":"aa","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":12046,"src":"21886:2:47","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">=","rightExpression":{"components":[{"commonType":{"typeIdentifier":"t_rational_18446744073709551616_by_1","typeString":"int_const 18446744073709551616"},"id":12072,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"leftExpression":{"hexValue":"31","id":12070,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"21893:1:47","typeDescriptions":{"typeIdentifier":"t_rational_1_by_1","typeString":"int_const 1"},"value":"1"},"nodeType":"BinaryOperation","operator":"<<","rightExpression":{"hexValue":"3634","id":12071,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"21898:2:47","typeDescriptions":{"typeIdentifier":"t_rational_64_by_1","typeString":"int_const 64"},"value":"64"},"src":"21893:7:47","typeDescriptions":{"typeIdentifier":"t_rational_18446744073709551616_by_1","typeString":"int_const 18446744073709551616"}}],"id":12073,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"TupleExpression","src":"21892:9:47","typeDescriptions":{"typeIdentifier":"t_rational_18446744073709551616_by_1","typeString":"int_const 18446744073709551616"}},"src":"21886:15:47","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":12084,"nodeType":"IfStatement","src":"21882:90:47","trueBody":{"id":12083,"nodeType":"Block","src":"21903:69:47","statements":[{"expression":{"id":12077,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":12075,"name":"aa","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":12046,"src":"21921:2:47","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":">>=","rightHandSide":{"hexValue":"3634","id":12076,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"21928:2:47","typeDescriptions":{"typeIdentifier":"t_rational_64_by_1","typeString":"int_const 64"},"value":"64"},"src":"21921:9:47","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":12078,"nodeType":"ExpressionStatement","src":"21921:9:47"},{"expression":{"id":12081,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":12079,"name":"xn","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":12050,"src":"21948:2:47","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"<<=","rightHandSide":{"hexValue":"3332","id":12080,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"21955:2:47","typeDescriptions":{"typeIdentifier":"t_rational_32_by_1","typeString":"int_const 32"},"value":"32"},"src":"21948:9:47","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":12082,"nodeType":"ExpressionStatement","src":"21948:9:47"}]}},{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":12090,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":12085,"name":"aa","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":12046,"src":"21989:2:47","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">=","rightExpression":{"components":[{"commonType":{"typeIdentifier":"t_rational_4294967296_by_1","typeString":"int_const 4294967296"},"id":12088,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"leftExpression":{"hexValue":"31","id":12086,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"21996:1:47","typeDescriptions":{"typeIdentifier":"t_rational_1_by_1","typeString":"int_const 1"},"value":"1"},"nodeType":"BinaryOperation","operator":"<<","rightExpression":{"hexValue":"3332","id":12087,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"22001:2:47","typeDescriptions":{"typeIdentifier":"t_rational_32_by_1","typeString":"int_const 32"},"value":"32"},"src":"21996:7:47","typeDescriptions":{"typeIdentifier":"t_rational_4294967296_by_1","typeString":"int_const 4294967296"}}],"id":12089,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"TupleExpression","src":"21995:9:47","typeDescriptions":{"typeIdentifier":"t_rational_4294967296_by_1","typeString":"int_const 4294967296"}},"src":"21989:15:47","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":12100,"nodeType":"IfStatement","src":"21985:90:47","trueBody":{"id":12099,"nodeType":"Block","src":"22006:69:47","statements":[{"expression":{"id":12093,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":12091,"name":"aa","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":12046,"src":"22024:2:47","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":">>=","rightHandSide":{"hexValue":"3332","id":12092,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"22031:2:47","typeDescriptions":{"typeIdentifier":"t_rational_32_by_1","typeString":"int_const 32"},"value":"32"},"src":"22024:9:47","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":12094,"nodeType":"ExpressionStatement","src":"22024:9:47"},{"expression":{"id":12097,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":12095,"name":"xn","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":12050,"src":"22051:2:47","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"<<=","rightHandSide":{"hexValue":"3136","id":12096,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"22058:2:47","typeDescriptions":{"typeIdentifier":"t_rational_16_by_1","typeString":"int_const 16"},"value":"16"},"src":"22051:9:47","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":12098,"nodeType":"ExpressionStatement","src":"22051:9:47"}]}},{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":12106,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":12101,"name":"aa","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":12046,"src":"22092:2:47","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">=","rightExpression":{"components":[{"commonType":{"typeIdentifier":"t_rational_65536_by_1","typeString":"int_const 65536"},"id":12104,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"leftExpression":{"hexValue":"31","id":12102,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"22099:1:47","typeDescriptions":{"typeIdentifier":"t_rational_1_by_1","typeString":"int_const 1"},"value":"1"},"nodeType":"BinaryOperation","operator":"<<","rightExpression":{"hexValue":"3136","id":12103,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"22104:2:47","typeDescriptions":{"typeIdentifier":"t_rational_16_by_1","typeString":"int_const 16"},"value":"16"},"src":"22099:7:47","typeDescriptions":{"typeIdentifier":"t_rational_65536_by_1","typeString":"int_const 65536"}}],"id":12105,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"TupleExpression","src":"22098:9:47","typeDescriptions":{"typeIdentifier":"t_rational_65536_by_1","typeString":"int_const 65536"}},"src":"22092:15:47","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":12116,"nodeType":"IfStatement","src":"22088:89:47","trueBody":{"id":12115,"nodeType":"Block","src":"22109:68:47","statements":[{"expression":{"id":12109,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":12107,"name":"aa","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":12046,"src":"22127:2:47","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":">>=","rightHandSide":{"hexValue":"3136","id":12108,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"22134:2:47","typeDescriptions":{"typeIdentifier":"t_rational_16_by_1","typeString":"int_const 16"},"value":"16"},"src":"22127:9:47","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":12110,"nodeType":"ExpressionStatement","src":"22127:9:47"},{"expression":{"id":12113,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":12111,"name":"xn","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":12050,"src":"22154:2:47","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"<<=","rightHandSide":{"hexValue":"38","id":12112,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"22161:1:47","typeDescriptions":{"typeIdentifier":"t_rational_8_by_1","typeString":"int_const 8"},"value":"8"},"src":"22154:8:47","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":12114,"nodeType":"ExpressionStatement","src":"22154:8:47"}]}},{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":12122,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":12117,"name":"aa","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":12046,"src":"22194:2:47","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">=","rightExpression":{"components":[{"commonType":{"typeIdentifier":"t_rational_256_by_1","typeString":"int_const 256"},"id":12120,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"leftExpression":{"hexValue":"31","id":12118,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"22201:1:47","typeDescriptions":{"typeIdentifier":"t_rational_1_by_1","typeString":"int_const 1"},"value":"1"},"nodeType":"BinaryOperation","operator":"<<","rightExpression":{"hexValue":"38","id":12119,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"22206:1:47","typeDescriptions":{"typeIdentifier":"t_rational_8_by_1","typeString":"int_const 8"},"value":"8"},"src":"22201:6:47","typeDescriptions":{"typeIdentifier":"t_rational_256_by_1","typeString":"int_const 256"}}],"id":12121,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"TupleExpression","src":"22200:8:47","typeDescriptions":{"typeIdentifier":"t_rational_256_by_1","typeString":"int_const 256"}},"src":"22194:14:47","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":12132,"nodeType":"IfStatement","src":"22190:87:47","trueBody":{"id":12131,"nodeType":"Block","src":"22210:67:47","statements":[{"expression":{"id":12125,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":12123,"name":"aa","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":12046,"src":"22228:2:47","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":">>=","rightHandSide":{"hexValue":"38","id":12124,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"22235:1:47","typeDescriptions":{"typeIdentifier":"t_rational_8_by_1","typeString":"int_const 8"},"value":"8"},"src":"22228:8:47","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":12126,"nodeType":"ExpressionStatement","src":"22228:8:47"},{"expression":{"id":12129,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":12127,"name":"xn","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":12050,"src":"22254:2:47","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"<<=","rightHandSide":{"hexValue":"34","id":12128,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"22261:1:47","typeDescriptions":{"typeIdentifier":"t_rational_4_by_1","typeString":"int_const 4"},"value":"4"},"src":"22254:8:47","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":12130,"nodeType":"ExpressionStatement","src":"22254:8:47"}]}},{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":12138,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":12133,"name":"aa","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":12046,"src":"22294:2:47","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">=","rightExpression":{"components":[{"commonType":{"typeIdentifier":"t_rational_16_by_1","typeString":"int_const 16"},"id":12136,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"leftExpression":{"hexValue":"31","id":12134,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"22301:1:47","typeDescriptions":{"typeIdentifier":"t_rational_1_by_1","typeString":"int_const 1"},"value":"1"},"nodeType":"BinaryOperation","operator":"<<","rightExpression":{"hexValue":"34","id":12135,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"22306:1:47","typeDescriptions":{"typeIdentifier":"t_rational_4_by_1","typeString":"int_const 4"},"value":"4"},"src":"22301:6:47","typeDescriptions":{"typeIdentifier":"t_rational_16_by_1","typeString":"int_const 16"}}],"id":12137,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"TupleExpression","src":"22300:8:47","typeDescriptions":{"typeIdentifier":"t_rational_16_by_1","typeString":"int_const 16"}},"src":"22294:14:47","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":12148,"nodeType":"IfStatement","src":"22290:87:47","trueBody":{"id":12147,"nodeType":"Block","src":"22310:67:47","statements":[{"expression":{"id":12141,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":12139,"name":"aa","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":12046,"src":"22328:2:47","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":">>=","rightHandSide":{"hexValue":"34","id":12140,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"22335:1:47","typeDescriptions":{"typeIdentifier":"t_rational_4_by_1","typeString":"int_const 4"},"value":"4"},"src":"22328:8:47","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":12142,"nodeType":"ExpressionStatement","src":"22328:8:47"},{"expression":{"id":12145,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":12143,"name":"xn","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":12050,"src":"22354:2:47","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"<<=","rightHandSide":{"hexValue":"32","id":12144,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"22361:1:47","typeDescriptions":{"typeIdentifier":"t_rational_2_by_1","typeString":"int_const 2"},"value":"2"},"src":"22354:8:47","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":12146,"nodeType":"ExpressionStatement","src":"22354:8:47"}]}},{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":12154,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":12149,"name":"aa","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":12046,"src":"22394:2:47","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">=","rightExpression":{"components":[{"commonType":{"typeIdentifier":"t_rational_4_by_1","typeString":"int_const 4"},"id":12152,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"leftExpression":{"hexValue":"31","id":12150,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"22401:1:47","typeDescriptions":{"typeIdentifier":"t_rational_1_by_1","typeString":"int_const 1"},"value":"1"},"nodeType":"BinaryOperation","operator":"<<","rightExpression":{"hexValue":"32","id":12151,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"22406:1:47","typeDescriptions":{"typeIdentifier":"t_rational_2_by_1","typeString":"int_const 2"},"value":"2"},"src":"22401:6:47","typeDescriptions":{"typeIdentifier":"t_rational_4_by_1","typeString":"int_const 4"}}],"id":12153,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"TupleExpression","src":"22400:8:47","typeDescriptions":{"typeIdentifier":"t_rational_4_by_1","typeString":"int_const 4"}},"src":"22394:14:47","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":12160,"nodeType":"IfStatement","src":"22390:61:47","trueBody":{"id":12159,"nodeType":"Block","src":"22410:41:47","statements":[{"expression":{"id":12157,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":12155,"name":"xn","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":12050,"src":"22428:2:47","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"<<=","rightHandSide":{"hexValue":"31","id":12156,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"22435:1:47","typeDescriptions":{"typeIdentifier":"t_rational_1_by_1","typeString":"int_const 1"},"value":"1"},"src":"22428:8:47","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":12158,"nodeType":"ExpressionStatement","src":"22428:8:47"}]}},{"expression":{"id":12168,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":12161,"name":"xn","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":12050,"src":"22871:2:47","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":12167,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"components":[{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":12164,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"hexValue":"33","id":12162,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"22877:1:47","typeDescriptions":{"typeIdentifier":"t_rational_3_by_1","typeString":"int_const 3"},"value":"3"},"nodeType":"BinaryOperation","operator":"*","rightExpression":{"id":12163,"name":"xn","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":12050,"src":"22881:2:47","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"22877:6:47","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"id":12165,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"22876:8:47","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">>","rightExpression":{"hexValue":"31","id":12166,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"22888:1:47","typeDescriptions":{"typeIdentifier":"t_rational_1_by_1","typeString":"int_const 1"},"value":"1"},"src":"22876:13:47","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"22871:18:47","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":12169,"nodeType":"ExpressionStatement","src":"22871:18:47"},{"expression":{"id":12179,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":12170,"name":"xn","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":12050,"src":"24776:2:47","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":12178,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"components":[{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":12175,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":12171,"name":"xn","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":12050,"src":"24782:2:47","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"+","rightExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":12174,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":12172,"name":"a","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":12033,"src":"24787:1:47","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"/","rightExpression":{"id":12173,"name":"xn","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":12050,"src":"24791:2:47","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"24787:6:47","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"24782:11:47","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"id":12176,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"24781:13:47","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">>","rightExpression":{"hexValue":"31","id":12177,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"24798:1:47","typeDescriptions":{"typeIdentifier":"t_rational_1_by_1","typeString":"int_const 1"},"value":"1"},"src":"24781:18:47","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"24776:23:47","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":12180,"nodeType":"ExpressionStatement","src":"24776:23:47"},{"expression":{"id":12190,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":12181,"name":"xn","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":12050,"src":"24885:2:47","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":12189,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"components":[{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":12186,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":12182,"name":"xn","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":12050,"src":"24891:2:47","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"+","rightExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":12185,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":12183,"name":"a","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":12033,"src":"24896:1:47","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"/","rightExpression":{"id":12184,"name":"xn","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":12050,"src":"24900:2:47","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"24896:6:47","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"24891:11:47","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"id":12187,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"24890:13:47","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">>","rightExpression":{"hexValue":"31","id":12188,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"24907:1:47","typeDescriptions":{"typeIdentifier":"t_rational_1_by_1","typeString":"int_const 1"},"value":"1"},"src":"24890:18:47","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"24885:23:47","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":12191,"nodeType":"ExpressionStatement","src":"24885:23:47"},{"expression":{"id":12201,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":12192,"name":"xn","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":12050,"src":"24996:2:47","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":12200,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"components":[{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":12197,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":12193,"name":"xn","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":12050,"src":"25002:2:47","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"+","rightExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":12196,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":12194,"name":"a","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":12033,"src":"25007:1:47","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"/","rightExpression":{"id":12195,"name":"xn","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":12050,"src":"25011:2:47","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"25007:6:47","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"25002:11:47","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"id":12198,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"25001:13:47","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">>","rightExpression":{"hexValue":"31","id":12199,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"25018:1:47","typeDescriptions":{"typeIdentifier":"t_rational_1_by_1","typeString":"int_const 1"},"value":"1"},"src":"25001:18:47","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"24996:23:47","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":12202,"nodeType":"ExpressionStatement","src":"24996:23:47"},{"expression":{"id":12212,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":12203,"name":"xn","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":12050,"src":"25105:2:47","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":12211,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"components":[{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":12208,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":12204,"name":"xn","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":12050,"src":"25111:2:47","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"+","rightExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":12207,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":12205,"name":"a","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":12033,"src":"25116:1:47","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"/","rightExpression":{"id":12206,"name":"xn","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":12050,"src":"25120:2:47","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"25116:6:47","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"25111:11:47","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"id":12209,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"25110:13:47","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">>","rightExpression":{"hexValue":"31","id":12210,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"25127:1:47","typeDescriptions":{"typeIdentifier":"t_rational_1_by_1","typeString":"int_const 1"},"value":"1"},"src":"25110:18:47","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"25105:23:47","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":12213,"nodeType":"ExpressionStatement","src":"25105:23:47"},{"expression":{"id":12223,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":12214,"name":"xn","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":12050,"src":"25215:2:47","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":12222,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"components":[{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":12219,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":12215,"name":"xn","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":12050,"src":"25221:2:47","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"+","rightExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":12218,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":12216,"name":"a","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":12033,"src":"25226:1:47","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"/","rightExpression":{"id":12217,"name":"xn","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":12050,"src":"25230:2:47","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"25226:6:47","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"25221:11:47","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"id":12220,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"25220:13:47","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">>","rightExpression":{"hexValue":"31","id":12221,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"25237:1:47","typeDescriptions":{"typeIdentifier":"t_rational_1_by_1","typeString":"int_const 1"},"value":"1"},"src":"25220:18:47","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"25215:23:47","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":12224,"nodeType":"ExpressionStatement","src":"25215:23:47"},{"expression":{"id":12234,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":12225,"name":"xn","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":12050,"src":"25325:2:47","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":12233,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"components":[{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":12230,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":12226,"name":"xn","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":12050,"src":"25331:2:47","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"+","rightExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":12229,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":12227,"name":"a","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":12033,"src":"25336:1:47","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"/","rightExpression":{"id":12228,"name":"xn","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":12050,"src":"25340:2:47","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"25336:6:47","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"25331:11:47","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"id":12231,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"25330:13:47","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">>","rightExpression":{"hexValue":"31","id":12232,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"25347:1:47","typeDescriptions":{"typeIdentifier":"t_rational_1_by_1","typeString":"int_const 1"},"value":"1"},"src":"25330:18:47","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"25325:23:47","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":12235,"nodeType":"ExpressionStatement","src":"25325:23:47"},{"expression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":12245,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":12236,"name":"xn","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":12050,"src":"25714:2:47","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"-","rightExpression":{"arguments":[{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":12243,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":12239,"name":"xn","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":12050,"src":"25735:2:47","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">","rightExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":12242,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":12240,"name":"a","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":12033,"src":"25740:1:47","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"/","rightExpression":{"id":12241,"name":"xn","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":12050,"src":"25744:2:47","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"25740:6:47","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"25735:11:47","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"}],"expression":{"id":12237,"name":"SafeCast","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":14491,"src":"25719:8:47","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_SafeCast_$14491_$","typeString":"type(library SafeCast)"}},"id":12238,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"25728:6:47","memberName":"toUint","nodeType":"MemberAccess","referencedDeclaration":14490,"src":"25719:15:47","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_bool_$returns$_t_uint256_$","typeString":"function (bool) pure returns (uint256)"}},"id":12244,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"25719:28:47","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"25714:33:47","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"functionReturnParameters":12037,"id":12246,"nodeType":"Return","src":"25707:40:47"}]}]},"documentation":{"id":12031,"nodeType":"StructuredDocumentation","src":"20286:292:47","text":" @dev Returns the square root of a number. If the number is not a perfect square, the value is rounded\n towards zero.\n This method is based on Newton's method for computing square roots; the algorithm is restricted to only\n using integer operations."},"id":12249,"implemented":true,"kind":"function","modifiers":[],"name":"sqrt","nameLocation":"20592:4:47","nodeType":"FunctionDefinition","parameters":{"id":12034,"nodeType":"ParameterList","parameters":[{"constant":false,"id":12033,"mutability":"mutable","name":"a","nameLocation":"20605:1:47","nodeType":"VariableDeclaration","scope":12249,"src":"20597:9:47","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":12032,"name":"uint256","nodeType":"ElementaryTypeName","src":"20597:7:47","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"20596:11:47"},"returnParameters":{"id":12037,"nodeType":"ParameterList","parameters":[{"constant":false,"id":12036,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":12249,"src":"20631:7:47","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":12035,"name":"uint256","nodeType":"ElementaryTypeName","src":"20631:7:47","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"20630:9:47"},"scope":12726,"src":"20583:5181:47","stateMutability":"pure","virtual":false,"visibility":"internal"},{"body":{"id":12282,"nodeType":"Block","src":"25937:171:47","statements":[{"id":12281,"nodeType":"UncheckedBlock","src":"25947:155:47","statements":[{"assignments":[12261],"declarations":[{"constant":false,"id":12261,"mutability":"mutable","name":"result","nameLocation":"25979:6:47","nodeType":"VariableDeclaration","scope":12281,"src":"25971:14:47","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":12260,"name":"uint256","nodeType":"ElementaryTypeName","src":"25971:7:47","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":12265,"initialValue":{"arguments":[{"id":12263,"name":"a","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":12252,"src":"25993:1:47","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":12262,"name":"sqrt","nodeType":"Identifier","overloadedDeclarations":[12249,12283],"referencedDeclaration":12249,"src":"25988:4:47","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_uint256_$returns$_t_uint256_$","typeString":"function (uint256) pure returns (uint256)"}},"id":12264,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"25988:7:47","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"VariableDeclarationStatement","src":"25971:24:47"},{"expression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":12279,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":12266,"name":"result","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":12261,"src":"26016:6:47","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"+","rightExpression":{"arguments":[{"commonType":{"typeIdentifier":"t_bool","typeString":"bool"},"id":12277,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"arguments":[{"id":12270,"name":"rounding","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":12255,"src":"26058:8:47","typeDescriptions":{"typeIdentifier":"t_enum$_Rounding_$11096","typeString":"enum Math.Rounding"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_enum$_Rounding_$11096","typeString":"enum Math.Rounding"}],"id":12269,"name":"unsignedRoundsUp","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":12704,"src":"26041:16:47","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_enum$_Rounding_$11096_$returns$_t_bool_$","typeString":"function (enum Math.Rounding) pure returns (bool)"}},"id":12271,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"26041:26:47","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"nodeType":"BinaryOperation","operator":"&&","rightExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":12276,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":12274,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":12272,"name":"result","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":12261,"src":"26071:6:47","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"*","rightExpression":{"id":12273,"name":"result","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":12261,"src":"26080:6:47","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"26071:15:47","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"<","rightExpression":{"id":12275,"name":"a","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":12252,"src":"26089:1:47","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"26071:19:47","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"src":"26041:49:47","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"}],"expression":{"id":12267,"name":"SafeCast","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":14491,"src":"26025:8:47","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_SafeCast_$14491_$","typeString":"type(library SafeCast)"}},"id":12268,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"26034:6:47","memberName":"toUint","nodeType":"MemberAccess","referencedDeclaration":14490,"src":"26025:15:47","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_bool_$returns$_t_uint256_$","typeString":"function (bool) pure returns (uint256)"}},"id":12278,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"26025:66:47","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"26016:75:47","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"functionReturnParameters":12259,"id":12280,"nodeType":"Return","src":"26009:82:47"}]}]},"documentation":{"id":12250,"nodeType":"StructuredDocumentation","src":"25770:86:47","text":" @dev Calculates sqrt(a), following the selected rounding direction."},"id":12283,"implemented":true,"kind":"function","modifiers":[],"name":"sqrt","nameLocation":"25870:4:47","nodeType":"FunctionDefinition","parameters":{"id":12256,"nodeType":"ParameterList","parameters":[{"constant":false,"id":12252,"mutability":"mutable","name":"a","nameLocation":"25883:1:47","nodeType":"VariableDeclaration","scope":12283,"src":"25875:9:47","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":12251,"name":"uint256","nodeType":"ElementaryTypeName","src":"25875:7:47","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":12255,"mutability":"mutable","name":"rounding","nameLocation":"25895:8:47","nodeType":"VariableDeclaration","scope":12283,"src":"25886:17:47","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_enum$_Rounding_$11096","typeString":"enum Math.Rounding"},"typeName":{"id":12254,"nodeType":"UserDefinedTypeName","pathNode":{"id":12253,"name":"Rounding","nameLocations":["25886:8:47"],"nodeType":"IdentifierPath","referencedDeclaration":11096,"src":"25886:8:47"},"referencedDeclaration":11096,"src":"25886:8:47","typeDescriptions":{"typeIdentifier":"t_enum$_Rounding_$11096","typeString":"enum Math.Rounding"}},"visibility":"internal"}],"src":"25874:30:47"},"returnParameters":{"id":12259,"nodeType":"ParameterList","parameters":[{"constant":false,"id":12258,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":12283,"src":"25928:7:47","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":12257,"name":"uint256","nodeType":"ElementaryTypeName","src":"25928:7:47","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"25927:9:47"},"scope":12726,"src":"25861:247:47","stateMutability":"pure","virtual":false,"visibility":"internal"},{"body":{"id":12373,"nodeType":"Block","src":"26297:2334:47","statements":[{"expression":{"id":12300,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":12291,"name":"r","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":12289,"src":"26379:1:47","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":12299,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"arguments":[{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":12296,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":12294,"name":"x","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":12286,"src":"26399:1:47","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">","rightExpression":{"hexValue":"30786666666666666666666666666666666666666666666666666666666666666666","id":12295,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"26403:34:47","typeDescriptions":{"typeIdentifier":"t_rational_340282366920938463463374607431768211455_by_1","typeString":"int_const 3402...(31 digits omitted)...1455"},"value":"0xffffffffffffffffffffffffffffffff"},"src":"26399:38:47","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"}],"expression":{"id":12292,"name":"SafeCast","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":14491,"src":"26383:8:47","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_SafeCast_$14491_$","typeString":"type(library SafeCast)"}},"id":12293,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"26392:6:47","memberName":"toUint","nodeType":"MemberAccess","referencedDeclaration":14490,"src":"26383:15:47","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_bool_$returns$_t_uint256_$","typeString":"function (bool) pure returns (uint256)"}},"id":12297,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"26383:55:47","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"<<","rightExpression":{"hexValue":"37","id":12298,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"26442:1:47","typeDescriptions":{"typeIdentifier":"t_rational_7_by_1","typeString":"int_const 7"},"value":"7"},"src":"26383:60:47","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"26379:64:47","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":12301,"nodeType":"ExpressionStatement","src":"26379:64:47"},{"expression":{"id":12314,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":12302,"name":"r","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":12289,"src":"26519:1:47","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"|=","rightHandSide":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":12313,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"arguments":[{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":12310,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"components":[{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":12307,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":12305,"name":"x","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":12286,"src":"26541:1:47","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">>","rightExpression":{"id":12306,"name":"r","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":12289,"src":"26546:1:47","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"26541:6:47","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"id":12308,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"26540:8:47","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">","rightExpression":{"hexValue":"307866666666666666666666666666666666","id":12309,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"26551:18:47","typeDescriptions":{"typeIdentifier":"t_rational_18446744073709551615_by_1","typeString":"int_const 18446744073709551615"},"value":"0xffffffffffffffff"},"src":"26540:29:47","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"}],"expression":{"id":12303,"name":"SafeCast","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":14491,"src":"26524:8:47","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_SafeCast_$14491_$","typeString":"type(library SafeCast)"}},"id":12304,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"26533:6:47","memberName":"toUint","nodeType":"MemberAccess","referencedDeclaration":14490,"src":"26524:15:47","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_bool_$returns$_t_uint256_$","typeString":"function (bool) pure returns (uint256)"}},"id":12311,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"26524:46:47","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"<<","rightExpression":{"hexValue":"36","id":12312,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"26574:1:47","typeDescriptions":{"typeIdentifier":"t_rational_6_by_1","typeString":"int_const 6"},"value":"6"},"src":"26524:51:47","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"26519:56:47","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":12315,"nodeType":"ExpressionStatement","src":"26519:56:47"},{"expression":{"id":12328,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":12316,"name":"r","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":12289,"src":"26650:1:47","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"|=","rightHandSide":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":12327,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"arguments":[{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":12324,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"components":[{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":12321,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":12319,"name":"x","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":12286,"src":"26672:1:47","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">>","rightExpression":{"id":12320,"name":"r","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":12289,"src":"26677:1:47","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"26672:6:47","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"id":12322,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"26671:8:47","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">","rightExpression":{"hexValue":"30786666666666666666","id":12323,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"26682:10:47","typeDescriptions":{"typeIdentifier":"t_rational_4294967295_by_1","typeString":"int_const 4294967295"},"value":"0xffffffff"},"src":"26671:21:47","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"}],"expression":{"id":12317,"name":"SafeCast","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":14491,"src":"26655:8:47","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_SafeCast_$14491_$","typeString":"type(library SafeCast)"}},"id":12318,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"26664:6:47","memberName":"toUint","nodeType":"MemberAccess","referencedDeclaration":14490,"src":"26655:15:47","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_bool_$returns$_t_uint256_$","typeString":"function (bool) pure returns (uint256)"}},"id":12325,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"26655:38:47","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"<<","rightExpression":{"hexValue":"35","id":12326,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"26697:1:47","typeDescriptions":{"typeIdentifier":"t_rational_5_by_1","typeString":"int_const 5"},"value":"5"},"src":"26655:43:47","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"26650:48:47","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":12329,"nodeType":"ExpressionStatement","src":"26650:48:47"},{"expression":{"id":12342,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":12330,"name":"r","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":12289,"src":"26773:1:47","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"|=","rightHandSide":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":12341,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"arguments":[{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":12338,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"components":[{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":12335,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":12333,"name":"x","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":12286,"src":"26795:1:47","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">>","rightExpression":{"id":12334,"name":"r","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":12289,"src":"26800:1:47","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"26795:6:47","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"id":12336,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"26794:8:47","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">","rightExpression":{"hexValue":"307866666666","id":12337,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"26805:6:47","typeDescriptions":{"typeIdentifier":"t_rational_65535_by_1","typeString":"int_const 65535"},"value":"0xffff"},"src":"26794:17:47","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"}],"expression":{"id":12331,"name":"SafeCast","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":14491,"src":"26778:8:47","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_SafeCast_$14491_$","typeString":"type(library SafeCast)"}},"id":12332,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"26787:6:47","memberName":"toUint","nodeType":"MemberAccess","referencedDeclaration":14490,"src":"26778:15:47","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_bool_$returns$_t_uint256_$","typeString":"function (bool) pure returns (uint256)"}},"id":12339,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"26778:34:47","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"<<","rightExpression":{"hexValue":"34","id":12340,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"26816:1:47","typeDescriptions":{"typeIdentifier":"t_rational_4_by_1","typeString":"int_const 4"},"value":"4"},"src":"26778:39:47","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"26773:44:47","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":12343,"nodeType":"ExpressionStatement","src":"26773:44:47"},{"expression":{"id":12356,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":12344,"name":"r","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":12289,"src":"26890:1:47","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"|=","rightHandSide":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":12355,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"arguments":[{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":12352,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"components":[{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":12349,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":12347,"name":"x","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":12286,"src":"26912:1:47","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">>","rightExpression":{"id":12348,"name":"r","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":12289,"src":"26917:1:47","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"26912:6:47","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"id":12350,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"26911:8:47","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">","rightExpression":{"hexValue":"30786666","id":12351,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"26922:4:47","typeDescriptions":{"typeIdentifier":"t_rational_255_by_1","typeString":"int_const 255"},"value":"0xff"},"src":"26911:15:47","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"}],"expression":{"id":12345,"name":"SafeCast","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":14491,"src":"26895:8:47","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_SafeCast_$14491_$","typeString":"type(library SafeCast)"}},"id":12346,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"26904:6:47","memberName":"toUint","nodeType":"MemberAccess","referencedDeclaration":14490,"src":"26895:15:47","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_bool_$returns$_t_uint256_$","typeString":"function (bool) pure returns (uint256)"}},"id":12353,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"26895:32:47","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"<<","rightExpression":{"hexValue":"33","id":12354,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"26931:1:47","typeDescriptions":{"typeIdentifier":"t_rational_3_by_1","typeString":"int_const 3"},"value":"3"},"src":"26895:37:47","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"26890:42:47","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":12357,"nodeType":"ExpressionStatement","src":"26890:42:47"},{"expression":{"id":12370,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":12358,"name":"r","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":12289,"src":"27004:1:47","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"|=","rightHandSide":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":12369,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"arguments":[{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":12366,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"components":[{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":12363,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":12361,"name":"x","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":12286,"src":"27026:1:47","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">>","rightExpression":{"id":12362,"name":"r","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":12289,"src":"27031:1:47","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"27026:6:47","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"id":12364,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"27025:8:47","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">","rightExpression":{"hexValue":"307866","id":12365,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"27036:3:47","typeDescriptions":{"typeIdentifier":"t_rational_15_by_1","typeString":"int_const 15"},"value":"0xf"},"src":"27025:14:47","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"}],"expression":{"id":12359,"name":"SafeCast","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":14491,"src":"27009:8:47","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_SafeCast_$14491_$","typeString":"type(library SafeCast)"}},"id":12360,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"27018:6:47","memberName":"toUint","nodeType":"MemberAccess","referencedDeclaration":14490,"src":"27009:15:47","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_bool_$returns$_t_uint256_$","typeString":"function (bool) pure returns (uint256)"}},"id":12367,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"27009:31:47","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"<<","rightExpression":{"hexValue":"32","id":12368,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"27044:1:47","typeDescriptions":{"typeIdentifier":"t_rational_2_by_1","typeString":"int_const 2"},"value":"2"},"src":"27009:36:47","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"27004:41:47","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":12371,"nodeType":"ExpressionStatement","src":"27004:41:47"},{"AST":{"nativeSrc":"28506:119:47","nodeType":"YulBlock","src":"28506:119:47","statements":[{"nativeSrc":"28520:95:47","nodeType":"YulAssignment","src":"28520:95:47","value":{"arguments":[{"name":"r","nativeSrc":"28528:1:47","nodeType":"YulIdentifier","src":"28528:1:47"},{"arguments":[{"arguments":[{"name":"r","nativeSrc":"28540:1:47","nodeType":"YulIdentifier","src":"28540:1:47"},{"name":"x","nativeSrc":"28543:1:47","nodeType":"YulIdentifier","src":"28543:1:47"}],"functionName":{"name":"shr","nativeSrc":"28536:3:47","nodeType":"YulIdentifier","src":"28536:3:47"},"nativeSrc":"28536:9:47","nodeType":"YulFunctionCall","src":"28536:9:47"},{"kind":"number","nativeSrc":"28547:66:47","nodeType":"YulLiteral","src":"28547:66:47","type":"","value":"0x0000010102020202030303030303030300000000000000000000000000000000"}],"functionName":{"name":"byte","nativeSrc":"28531:4:47","nodeType":"YulIdentifier","src":"28531:4:47"},"nativeSrc":"28531:83:47","nodeType":"YulFunctionCall","src":"28531:83:47"}],"functionName":{"name":"or","nativeSrc":"28525:2:47","nodeType":"YulIdentifier","src":"28525:2:47"},"nativeSrc":"28525:90:47","nodeType":"YulFunctionCall","src":"28525:90:47"},"variableNames":[{"name":"r","nativeSrc":"28520:1:47","nodeType":"YulIdentifier","src":"28520:1:47"}]}]},"evmVersion":"prague","externalReferences":[{"declaration":12289,"isOffset":false,"isSlot":false,"src":"28520:1:47","valueSize":1},{"declaration":12289,"isOffset":false,"isSlot":false,"src":"28528:1:47","valueSize":1},{"declaration":12289,"isOffset":false,"isSlot":false,"src":"28540:1:47","valueSize":1},{"declaration":12286,"isOffset":false,"isSlot":false,"src":"28543:1:47","valueSize":1}],"flags":["memory-safe"],"id":12372,"nodeType":"InlineAssembly","src":"28481:144:47"}]},"documentation":{"id":12284,"nodeType":"StructuredDocumentation","src":"26114:119:47","text":" @dev Return the log in base 2 of a positive value rounded towards zero.\n Returns 0 if given 0."},"id":12374,"implemented":true,"kind":"function","modifiers":[],"name":"log2","nameLocation":"26247:4:47","nodeType":"FunctionDefinition","parameters":{"id":12287,"nodeType":"ParameterList","parameters":[{"constant":false,"id":12286,"mutability":"mutable","name":"x","nameLocation":"26260:1:47","nodeType":"VariableDeclaration","scope":12374,"src":"26252:9:47","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":12285,"name":"uint256","nodeType":"ElementaryTypeName","src":"26252:7:47","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"26251:11:47"},"returnParameters":{"id":12290,"nodeType":"ParameterList","parameters":[{"constant":false,"id":12289,"mutability":"mutable","name":"r","nameLocation":"26294:1:47","nodeType":"VariableDeclaration","scope":12374,"src":"26286:9:47","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":12288,"name":"uint256","nodeType":"ElementaryTypeName","src":"26286:7:47","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"26285:11:47"},"scope":12726,"src":"26238:2393:47","stateMutability":"pure","virtual":false,"visibility":"internal"},{"body":{"id":12407,"nodeType":"Block","src":"28864:175:47","statements":[{"id":12406,"nodeType":"UncheckedBlock","src":"28874:159:47","statements":[{"assignments":[12386],"declarations":[{"constant":false,"id":12386,"mutability":"mutable","name":"result","nameLocation":"28906:6:47","nodeType":"VariableDeclaration","scope":12406,"src":"28898:14:47","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":12385,"name":"uint256","nodeType":"ElementaryTypeName","src":"28898:7:47","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":12390,"initialValue":{"arguments":[{"id":12388,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":12377,"src":"28920:5:47","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":12387,"name":"log2","nodeType":"Identifier","overloadedDeclarations":[12374,12408],"referencedDeclaration":12374,"src":"28915:4:47","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_uint256_$returns$_t_uint256_$","typeString":"function (uint256) pure returns (uint256)"}},"id":12389,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"28915:11:47","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"VariableDeclarationStatement","src":"28898:28:47"},{"expression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":12404,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":12391,"name":"result","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":12386,"src":"28947:6:47","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"+","rightExpression":{"arguments":[{"commonType":{"typeIdentifier":"t_bool","typeString":"bool"},"id":12402,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"arguments":[{"id":12395,"name":"rounding","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":12380,"src":"28989:8:47","typeDescriptions":{"typeIdentifier":"t_enum$_Rounding_$11096","typeString":"enum Math.Rounding"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_enum$_Rounding_$11096","typeString":"enum Math.Rounding"}],"id":12394,"name":"unsignedRoundsUp","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":12704,"src":"28972:16:47","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_enum$_Rounding_$11096_$returns$_t_bool_$","typeString":"function (enum Math.Rounding) pure returns (bool)"}},"id":12396,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"28972:26:47","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"nodeType":"BinaryOperation","operator":"&&","rightExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":12401,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":12399,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"hexValue":"31","id":12397,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"29002:1:47","typeDescriptions":{"typeIdentifier":"t_rational_1_by_1","typeString":"int_const 1"},"value":"1"},"nodeType":"BinaryOperation","operator":"<<","rightExpression":{"id":12398,"name":"result","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":12386,"src":"29007:6:47","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"29002:11:47","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"<","rightExpression":{"id":12400,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":12377,"src":"29016:5:47","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"29002:19:47","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"src":"28972:49:47","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"}],"expression":{"id":12392,"name":"SafeCast","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":14491,"src":"28956:8:47","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_SafeCast_$14491_$","typeString":"type(library SafeCast)"}},"id":12393,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"28965:6:47","memberName":"toUint","nodeType":"MemberAccess","referencedDeclaration":14490,"src":"28956:15:47","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_bool_$returns$_t_uint256_$","typeString":"function (bool) pure returns (uint256)"}},"id":12403,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"28956:66:47","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"28947:75:47","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"functionReturnParameters":12384,"id":12405,"nodeType":"Return","src":"28940:82:47"}]}]},"documentation":{"id":12375,"nodeType":"StructuredDocumentation","src":"28637:142:47","text":" @dev Return the log in base 2, following the selected rounding direction, of a positive value.\n Returns 0 if given 0."},"id":12408,"implemented":true,"kind":"function","modifiers":[],"name":"log2","nameLocation":"28793:4:47","nodeType":"FunctionDefinition","parameters":{"id":12381,"nodeType":"ParameterList","parameters":[{"constant":false,"id":12377,"mutability":"mutable","name":"value","nameLocation":"28806:5:47","nodeType":"VariableDeclaration","scope":12408,"src":"28798:13:47","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":12376,"name":"uint256","nodeType":"ElementaryTypeName","src":"28798:7:47","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":12380,"mutability":"mutable","name":"rounding","nameLocation":"28822:8:47","nodeType":"VariableDeclaration","scope":12408,"src":"28813:17:47","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_enum$_Rounding_$11096","typeString":"enum Math.Rounding"},"typeName":{"id":12379,"nodeType":"UserDefinedTypeName","pathNode":{"id":12378,"name":"Rounding","nameLocations":["28813:8:47"],"nodeType":"IdentifierPath","referencedDeclaration":11096,"src":"28813:8:47"},"referencedDeclaration":11096,"src":"28813:8:47","typeDescriptions":{"typeIdentifier":"t_enum$_Rounding_$11096","typeString":"enum Math.Rounding"}},"visibility":"internal"}],"src":"28797:34:47"},"returnParameters":{"id":12384,"nodeType":"ParameterList","parameters":[{"constant":false,"id":12383,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":12408,"src":"28855:7:47","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":12382,"name":"uint256","nodeType":"ElementaryTypeName","src":"28855:7:47","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"28854:9:47"},"scope":12726,"src":"28784:255:47","stateMutability":"pure","virtual":false,"visibility":"internal"},{"body":{"id":12536,"nodeType":"Block","src":"29232:854:47","statements":[{"assignments":[12417],"declarations":[{"constant":false,"id":12417,"mutability":"mutable","name":"result","nameLocation":"29250:6:47","nodeType":"VariableDeclaration","scope":12536,"src":"29242:14:47","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":12416,"name":"uint256","nodeType":"ElementaryTypeName","src":"29242:7:47","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":12419,"initialValue":{"hexValue":"30","id":12418,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"29259:1:47","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"nodeType":"VariableDeclarationStatement","src":"29242:18:47"},{"id":12533,"nodeType":"UncheckedBlock","src":"29270:787:47","statements":[{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":12424,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":12420,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":12411,"src":"29298:5:47","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">=","rightExpression":{"commonType":{"typeIdentifier":"t_rational_10000000000000000000000000000000000000000000000000000000000000000_by_1","typeString":"int_const 1000...(57 digits omitted)...0000"},"id":12423,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"leftExpression":{"hexValue":"3130","id":12421,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"29307:2:47","typeDescriptions":{"typeIdentifier":"t_rational_10_by_1","typeString":"int_const 10"},"value":"10"},"nodeType":"BinaryOperation","operator":"**","rightExpression":{"hexValue":"3634","id":12422,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"29313:2:47","typeDescriptions":{"typeIdentifier":"t_rational_64_by_1","typeString":"int_const 64"},"value":"64"},"src":"29307:8:47","typeDescriptions":{"typeIdentifier":"t_rational_10000000000000000000000000000000000000000000000000000000000000000_by_1","typeString":"int_const 1000...(57 digits omitted)...0000"}},"src":"29298:17:47","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":12436,"nodeType":"IfStatement","src":"29294:103:47","trueBody":{"id":12435,"nodeType":"Block","src":"29317:80:47","statements":[{"expression":{"id":12429,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":12425,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":12411,"src":"29335:5:47","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"/=","rightHandSide":{"commonType":{"typeIdentifier":"t_rational_10000000000000000000000000000000000000000000000000000000000000000_by_1","typeString":"int_const 1000...(57 digits omitted)...0000"},"id":12428,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"leftExpression":{"hexValue":"3130","id":12426,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"29344:2:47","typeDescriptions":{"typeIdentifier":"t_rational_10_by_1","typeString":"int_const 10"},"value":"10"},"nodeType":"BinaryOperation","operator":"**","rightExpression":{"hexValue":"3634","id":12427,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"29350:2:47","typeDescriptions":{"typeIdentifier":"t_rational_64_by_1","typeString":"int_const 64"},"value":"64"},"src":"29344:8:47","typeDescriptions":{"typeIdentifier":"t_rational_10000000000000000000000000000000000000000000000000000000000000000_by_1","typeString":"int_const 1000...(57 digits omitted)...0000"}},"src":"29335:17:47","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":12430,"nodeType":"ExpressionStatement","src":"29335:17:47"},{"expression":{"id":12433,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":12431,"name":"result","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":12417,"src":"29370:6:47","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"+=","rightHandSide":{"hexValue":"3634","id":12432,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"29380:2:47","typeDescriptions":{"typeIdentifier":"t_rational_64_by_1","typeString":"int_const 64"},"value":"64"},"src":"29370:12:47","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":12434,"nodeType":"ExpressionStatement","src":"29370:12:47"}]}},{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":12441,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":12437,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":12411,"src":"29414:5:47","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">=","rightExpression":{"commonType":{"typeIdentifier":"t_rational_100000000000000000000000000000000_by_1","typeString":"int_const 1000...(25 digits omitted)...0000"},"id":12440,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"leftExpression":{"hexValue":"3130","id":12438,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"29423:2:47","typeDescriptions":{"typeIdentifier":"t_rational_10_by_1","typeString":"int_const 10"},"value":"10"},"nodeType":"BinaryOperation","operator":"**","rightExpression":{"hexValue":"3332","id":12439,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"29429:2:47","typeDescriptions":{"typeIdentifier":"t_rational_32_by_1","typeString":"int_const 32"},"value":"32"},"src":"29423:8:47","typeDescriptions":{"typeIdentifier":"t_rational_100000000000000000000000000000000_by_1","typeString":"int_const 1000...(25 digits omitted)...0000"}},"src":"29414:17:47","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":12453,"nodeType":"IfStatement","src":"29410:103:47","trueBody":{"id":12452,"nodeType":"Block","src":"29433:80:47","statements":[{"expression":{"id":12446,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":12442,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":12411,"src":"29451:5:47","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"/=","rightHandSide":{"commonType":{"typeIdentifier":"t_rational_100000000000000000000000000000000_by_1","typeString":"int_const 1000...(25 digits omitted)...0000"},"id":12445,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"leftExpression":{"hexValue":"3130","id":12443,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"29460:2:47","typeDescriptions":{"typeIdentifier":"t_rational_10_by_1","typeString":"int_const 10"},"value":"10"},"nodeType":"BinaryOperation","operator":"**","rightExpression":{"hexValue":"3332","id":12444,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"29466:2:47","typeDescriptions":{"typeIdentifier":"t_rational_32_by_1","typeString":"int_const 32"},"value":"32"},"src":"29460:8:47","typeDescriptions":{"typeIdentifier":"t_rational_100000000000000000000000000000000_by_1","typeString":"int_const 1000...(25 digits omitted)...0000"}},"src":"29451:17:47","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":12447,"nodeType":"ExpressionStatement","src":"29451:17:47"},{"expression":{"id":12450,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":12448,"name":"result","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":12417,"src":"29486:6:47","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"+=","rightHandSide":{"hexValue":"3332","id":12449,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"29496:2:47","typeDescriptions":{"typeIdentifier":"t_rational_32_by_1","typeString":"int_const 32"},"value":"32"},"src":"29486:12:47","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":12451,"nodeType":"ExpressionStatement","src":"29486:12:47"}]}},{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":12458,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":12454,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":12411,"src":"29530:5:47","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">=","rightExpression":{"commonType":{"typeIdentifier":"t_rational_10000000000000000_by_1","typeString":"int_const 10000000000000000"},"id":12457,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"leftExpression":{"hexValue":"3130","id":12455,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"29539:2:47","typeDescriptions":{"typeIdentifier":"t_rational_10_by_1","typeString":"int_const 10"},"value":"10"},"nodeType":"BinaryOperation","operator":"**","rightExpression":{"hexValue":"3136","id":12456,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"29545:2:47","typeDescriptions":{"typeIdentifier":"t_rational_16_by_1","typeString":"int_const 16"},"value":"16"},"src":"29539:8:47","typeDescriptions":{"typeIdentifier":"t_rational_10000000000000000_by_1","typeString":"int_const 10000000000000000"}},"src":"29530:17:47","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":12470,"nodeType":"IfStatement","src":"29526:103:47","trueBody":{"id":12469,"nodeType":"Block","src":"29549:80:47","statements":[{"expression":{"id":12463,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":12459,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":12411,"src":"29567:5:47","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"/=","rightHandSide":{"commonType":{"typeIdentifier":"t_rational_10000000000000000_by_1","typeString":"int_const 10000000000000000"},"id":12462,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"leftExpression":{"hexValue":"3130","id":12460,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"29576:2:47","typeDescriptions":{"typeIdentifier":"t_rational_10_by_1","typeString":"int_const 10"},"value":"10"},"nodeType":"BinaryOperation","operator":"**","rightExpression":{"hexValue":"3136","id":12461,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"29582:2:47","typeDescriptions":{"typeIdentifier":"t_rational_16_by_1","typeString":"int_const 16"},"value":"16"},"src":"29576:8:47","typeDescriptions":{"typeIdentifier":"t_rational_10000000000000000_by_1","typeString":"int_const 10000000000000000"}},"src":"29567:17:47","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":12464,"nodeType":"ExpressionStatement","src":"29567:17:47"},{"expression":{"id":12467,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":12465,"name":"result","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":12417,"src":"29602:6:47","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"+=","rightHandSide":{"hexValue":"3136","id":12466,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"29612:2:47","typeDescriptions":{"typeIdentifier":"t_rational_16_by_1","typeString":"int_const 16"},"value":"16"},"src":"29602:12:47","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":12468,"nodeType":"ExpressionStatement","src":"29602:12:47"}]}},{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":12475,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":12471,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":12411,"src":"29646:5:47","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">=","rightExpression":{"commonType":{"typeIdentifier":"t_rational_100000000_by_1","typeString":"int_const 100000000"},"id":12474,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"leftExpression":{"hexValue":"3130","id":12472,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"29655:2:47","typeDescriptions":{"typeIdentifier":"t_rational_10_by_1","typeString":"int_const 10"},"value":"10"},"nodeType":"BinaryOperation","operator":"**","rightExpression":{"hexValue":"38","id":12473,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"29661:1:47","typeDescriptions":{"typeIdentifier":"t_rational_8_by_1","typeString":"int_const 8"},"value":"8"},"src":"29655:7:47","typeDescriptions":{"typeIdentifier":"t_rational_100000000_by_1","typeString":"int_const 100000000"}},"src":"29646:16:47","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":12487,"nodeType":"IfStatement","src":"29642:100:47","trueBody":{"id":12486,"nodeType":"Block","src":"29664:78:47","statements":[{"expression":{"id":12480,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":12476,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":12411,"src":"29682:5:47","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"/=","rightHandSide":{"commonType":{"typeIdentifier":"t_rational_100000000_by_1","typeString":"int_const 100000000"},"id":12479,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"leftExpression":{"hexValue":"3130","id":12477,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"29691:2:47","typeDescriptions":{"typeIdentifier":"t_rational_10_by_1","typeString":"int_const 10"},"value":"10"},"nodeType":"BinaryOperation","operator":"**","rightExpression":{"hexValue":"38","id":12478,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"29697:1:47","typeDescriptions":{"typeIdentifier":"t_rational_8_by_1","typeString":"int_const 8"},"value":"8"},"src":"29691:7:47","typeDescriptions":{"typeIdentifier":"t_rational_100000000_by_1","typeString":"int_const 100000000"}},"src":"29682:16:47","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":12481,"nodeType":"ExpressionStatement","src":"29682:16:47"},{"expression":{"id":12484,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":12482,"name":"result","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":12417,"src":"29716:6:47","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"+=","rightHandSide":{"hexValue":"38","id":12483,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"29726:1:47","typeDescriptions":{"typeIdentifier":"t_rational_8_by_1","typeString":"int_const 8"},"value":"8"},"src":"29716:11:47","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":12485,"nodeType":"ExpressionStatement","src":"29716:11:47"}]}},{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":12492,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":12488,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":12411,"src":"29759:5:47","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">=","rightExpression":{"commonType":{"typeIdentifier":"t_rational_10000_by_1","typeString":"int_const 10000"},"id":12491,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"leftExpression":{"hexValue":"3130","id":12489,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"29768:2:47","typeDescriptions":{"typeIdentifier":"t_rational_10_by_1","typeString":"int_const 10"},"value":"10"},"nodeType":"BinaryOperation","operator":"**","rightExpression":{"hexValue":"34","id":12490,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"29774:1:47","typeDescriptions":{"typeIdentifier":"t_rational_4_by_1","typeString":"int_const 4"},"value":"4"},"src":"29768:7:47","typeDescriptions":{"typeIdentifier":"t_rational_10000_by_1","typeString":"int_const 10000"}},"src":"29759:16:47","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":12504,"nodeType":"IfStatement","src":"29755:100:47","trueBody":{"id":12503,"nodeType":"Block","src":"29777:78:47","statements":[{"expression":{"id":12497,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":12493,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":12411,"src":"29795:5:47","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"/=","rightHandSide":{"commonType":{"typeIdentifier":"t_rational_10000_by_1","typeString":"int_const 10000"},"id":12496,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"leftExpression":{"hexValue":"3130","id":12494,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"29804:2:47","typeDescriptions":{"typeIdentifier":"t_rational_10_by_1","typeString":"int_const 10"},"value":"10"},"nodeType":"BinaryOperation","operator":"**","rightExpression":{"hexValue":"34","id":12495,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"29810:1:47","typeDescriptions":{"typeIdentifier":"t_rational_4_by_1","typeString":"int_const 4"},"value":"4"},"src":"29804:7:47","typeDescriptions":{"typeIdentifier":"t_rational_10000_by_1","typeString":"int_const 10000"}},"src":"29795:16:47","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":12498,"nodeType":"ExpressionStatement","src":"29795:16:47"},{"expression":{"id":12501,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":12499,"name":"result","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":12417,"src":"29829:6:47","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"+=","rightHandSide":{"hexValue":"34","id":12500,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"29839:1:47","typeDescriptions":{"typeIdentifier":"t_rational_4_by_1","typeString":"int_const 4"},"value":"4"},"src":"29829:11:47","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":12502,"nodeType":"ExpressionStatement","src":"29829:11:47"}]}},{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":12509,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":12505,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":12411,"src":"29872:5:47","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">=","rightExpression":{"commonType":{"typeIdentifier":"t_rational_100_by_1","typeString":"int_const 100"},"id":12508,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"leftExpression":{"hexValue":"3130","id":12506,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"29881:2:47","typeDescriptions":{"typeIdentifier":"t_rational_10_by_1","typeString":"int_const 10"},"value":"10"},"nodeType":"BinaryOperation","operator":"**","rightExpression":{"hexValue":"32","id":12507,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"29887:1:47","typeDescriptions":{"typeIdentifier":"t_rational_2_by_1","typeString":"int_const 2"},"value":"2"},"src":"29881:7:47","typeDescriptions":{"typeIdentifier":"t_rational_100_by_1","typeString":"int_const 100"}},"src":"29872:16:47","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":12521,"nodeType":"IfStatement","src":"29868:100:47","trueBody":{"id":12520,"nodeType":"Block","src":"29890:78:47","statements":[{"expression":{"id":12514,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":12510,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":12411,"src":"29908:5:47","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"/=","rightHandSide":{"commonType":{"typeIdentifier":"t_rational_100_by_1","typeString":"int_const 100"},"id":12513,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"leftExpression":{"hexValue":"3130","id":12511,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"29917:2:47","typeDescriptions":{"typeIdentifier":"t_rational_10_by_1","typeString":"int_const 10"},"value":"10"},"nodeType":"BinaryOperation","operator":"**","rightExpression":{"hexValue":"32","id":12512,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"29923:1:47","typeDescriptions":{"typeIdentifier":"t_rational_2_by_1","typeString":"int_const 2"},"value":"2"},"src":"29917:7:47","typeDescriptions":{"typeIdentifier":"t_rational_100_by_1","typeString":"int_const 100"}},"src":"29908:16:47","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":12515,"nodeType":"ExpressionStatement","src":"29908:16:47"},{"expression":{"id":12518,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":12516,"name":"result","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":12417,"src":"29942:6:47","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"+=","rightHandSide":{"hexValue":"32","id":12517,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"29952:1:47","typeDescriptions":{"typeIdentifier":"t_rational_2_by_1","typeString":"int_const 2"},"value":"2"},"src":"29942:11:47","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":12519,"nodeType":"ExpressionStatement","src":"29942:11:47"}]}},{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":12526,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":12522,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":12411,"src":"29985:5:47","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">=","rightExpression":{"commonType":{"typeIdentifier":"t_rational_10_by_1","typeString":"int_const 10"},"id":12525,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"leftExpression":{"hexValue":"3130","id":12523,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"29994:2:47","typeDescriptions":{"typeIdentifier":"t_rational_10_by_1","typeString":"int_const 10"},"value":"10"},"nodeType":"BinaryOperation","operator":"**","rightExpression":{"hexValue":"31","id":12524,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"30000:1:47","typeDescriptions":{"typeIdentifier":"t_rational_1_by_1","typeString":"int_const 1"},"value":"1"},"src":"29994:7:47","typeDescriptions":{"typeIdentifier":"t_rational_10_by_1","typeString":"int_const 10"}},"src":"29985:16:47","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":12532,"nodeType":"IfStatement","src":"29981:66:47","trueBody":{"id":12531,"nodeType":"Block","src":"30003:44:47","statements":[{"expression":{"id":12529,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":12527,"name":"result","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":12417,"src":"30021:6:47","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"+=","rightHandSide":{"hexValue":"31","id":12528,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"30031:1:47","typeDescriptions":{"typeIdentifier":"t_rational_1_by_1","typeString":"int_const 1"},"value":"1"},"src":"30021:11:47","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":12530,"nodeType":"ExpressionStatement","src":"30021:11:47"}]}}]},{"expression":{"id":12534,"name":"result","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":12417,"src":"30073:6:47","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"functionReturnParameters":12415,"id":12535,"nodeType":"Return","src":"30066:13:47"}]},"documentation":{"id":12409,"nodeType":"StructuredDocumentation","src":"29045:120:47","text":" @dev Return the log in base 10 of a positive value rounded towards zero.\n Returns 0 if given 0."},"id":12537,"implemented":true,"kind":"function","modifiers":[],"name":"log10","nameLocation":"29179:5:47","nodeType":"FunctionDefinition","parameters":{"id":12412,"nodeType":"ParameterList","parameters":[{"constant":false,"id":12411,"mutability":"mutable","name":"value","nameLocation":"29193:5:47","nodeType":"VariableDeclaration","scope":12537,"src":"29185:13:47","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":12410,"name":"uint256","nodeType":"ElementaryTypeName","src":"29185:7:47","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"29184:15:47"},"returnParameters":{"id":12415,"nodeType":"ParameterList","parameters":[{"constant":false,"id":12414,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":12537,"src":"29223:7:47","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":12413,"name":"uint256","nodeType":"ElementaryTypeName","src":"29223:7:47","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"29222:9:47"},"scope":12726,"src":"29170:916:47","stateMutability":"pure","virtual":false,"visibility":"internal"},{"body":{"id":12570,"nodeType":"Block","src":"30321:177:47","statements":[{"id":12569,"nodeType":"UncheckedBlock","src":"30331:161:47","statements":[{"assignments":[12549],"declarations":[{"constant":false,"id":12549,"mutability":"mutable","name":"result","nameLocation":"30363:6:47","nodeType":"VariableDeclaration","scope":12569,"src":"30355:14:47","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":12548,"name":"uint256","nodeType":"ElementaryTypeName","src":"30355:7:47","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":12553,"initialValue":{"arguments":[{"id":12551,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":12540,"src":"30378:5:47","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":12550,"name":"log10","nodeType":"Identifier","overloadedDeclarations":[12537,12571],"referencedDeclaration":12537,"src":"30372:5:47","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_uint256_$returns$_t_uint256_$","typeString":"function (uint256) pure returns (uint256)"}},"id":12552,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"30372:12:47","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"VariableDeclarationStatement","src":"30355:29:47"},{"expression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":12567,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":12554,"name":"result","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":12549,"src":"30405:6:47","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"+","rightExpression":{"arguments":[{"commonType":{"typeIdentifier":"t_bool","typeString":"bool"},"id":12565,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"arguments":[{"id":12558,"name":"rounding","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":12543,"src":"30447:8:47","typeDescriptions":{"typeIdentifier":"t_enum$_Rounding_$11096","typeString":"enum Math.Rounding"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_enum$_Rounding_$11096","typeString":"enum Math.Rounding"}],"id":12557,"name":"unsignedRoundsUp","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":12704,"src":"30430:16:47","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_enum$_Rounding_$11096_$returns$_t_bool_$","typeString":"function (enum Math.Rounding) pure returns (bool)"}},"id":12559,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"30430:26:47","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"nodeType":"BinaryOperation","operator":"&&","rightExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":12564,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":12562,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"hexValue":"3130","id":12560,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"30460:2:47","typeDescriptions":{"typeIdentifier":"t_rational_10_by_1","typeString":"int_const 10"},"value":"10"},"nodeType":"BinaryOperation","operator":"**","rightExpression":{"id":12561,"name":"result","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":12549,"src":"30466:6:47","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"30460:12:47","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"<","rightExpression":{"id":12563,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":12540,"src":"30475:5:47","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"30460:20:47","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"src":"30430:50:47","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"}],"expression":{"id":12555,"name":"SafeCast","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":14491,"src":"30414:8:47","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_SafeCast_$14491_$","typeString":"type(library SafeCast)"}},"id":12556,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"30423:6:47","memberName":"toUint","nodeType":"MemberAccess","referencedDeclaration":14490,"src":"30414:15:47","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_bool_$returns$_t_uint256_$","typeString":"function (bool) pure returns (uint256)"}},"id":12566,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"30414:67:47","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"30405:76:47","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"functionReturnParameters":12547,"id":12568,"nodeType":"Return","src":"30398:83:47"}]}]},"documentation":{"id":12538,"nodeType":"StructuredDocumentation","src":"30092:143:47","text":" @dev Return the log in base 10, following the selected rounding direction, of a positive value.\n Returns 0 if given 0."},"id":12571,"implemented":true,"kind":"function","modifiers":[],"name":"log10","nameLocation":"30249:5:47","nodeType":"FunctionDefinition","parameters":{"id":12544,"nodeType":"ParameterList","parameters":[{"constant":false,"id":12540,"mutability":"mutable","name":"value","nameLocation":"30263:5:47","nodeType":"VariableDeclaration","scope":12571,"src":"30255:13:47","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":12539,"name":"uint256","nodeType":"ElementaryTypeName","src":"30255:7:47","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":12543,"mutability":"mutable","name":"rounding","nameLocation":"30279:8:47","nodeType":"VariableDeclaration","scope":12571,"src":"30270:17:47","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_enum$_Rounding_$11096","typeString":"enum Math.Rounding"},"typeName":{"id":12542,"nodeType":"UserDefinedTypeName","pathNode":{"id":12541,"name":"Rounding","nameLocations":["30270:8:47"],"nodeType":"IdentifierPath","referencedDeclaration":11096,"src":"30270:8:47"},"referencedDeclaration":11096,"src":"30270:8:47","typeDescriptions":{"typeIdentifier":"t_enum$_Rounding_$11096","typeString":"enum Math.Rounding"}},"visibility":"internal"}],"src":"30254:34:47"},"returnParameters":{"id":12547,"nodeType":"ParameterList","parameters":[{"constant":false,"id":12546,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":12571,"src":"30312:7:47","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":12545,"name":"uint256","nodeType":"ElementaryTypeName","src":"30312:7:47","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"30311:9:47"},"scope":12726,"src":"30240:258:47","stateMutability":"pure","virtual":false,"visibility":"internal"},{"body":{"id":12647,"nodeType":"Block","src":"30816:675:47","statements":[{"expression":{"id":12588,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":12579,"name":"r","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":12577,"src":"30898:1:47","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":12587,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"arguments":[{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":12584,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":12582,"name":"x","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":12574,"src":"30918:1:47","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">","rightExpression":{"hexValue":"30786666666666666666666666666666666666666666666666666666666666666666","id":12583,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"30922:34:47","typeDescriptions":{"typeIdentifier":"t_rational_340282366920938463463374607431768211455_by_1","typeString":"int_const 3402...(31 digits omitted)...1455"},"value":"0xffffffffffffffffffffffffffffffff"},"src":"30918:38:47","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"}],"expression":{"id":12580,"name":"SafeCast","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":14491,"src":"30902:8:47","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_SafeCast_$14491_$","typeString":"type(library SafeCast)"}},"id":12581,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"30911:6:47","memberName":"toUint","nodeType":"MemberAccess","referencedDeclaration":14490,"src":"30902:15:47","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_bool_$returns$_t_uint256_$","typeString":"function (bool) pure returns (uint256)"}},"id":12585,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"30902:55:47","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"<<","rightExpression":{"hexValue":"37","id":12586,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"30961:1:47","typeDescriptions":{"typeIdentifier":"t_rational_7_by_1","typeString":"int_const 7"},"value":"7"},"src":"30902:60:47","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"30898:64:47","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":12589,"nodeType":"ExpressionStatement","src":"30898:64:47"},{"expression":{"id":12602,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":12590,"name":"r","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":12577,"src":"31038:1:47","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"|=","rightHandSide":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":12601,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"arguments":[{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":12598,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"components":[{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":12595,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":12593,"name":"x","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":12574,"src":"31060:1:47","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">>","rightExpression":{"id":12594,"name":"r","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":12577,"src":"31065:1:47","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"31060:6:47","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"id":12596,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"31059:8:47","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">","rightExpression":{"hexValue":"307866666666666666666666666666666666","id":12597,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"31070:18:47","typeDescriptions":{"typeIdentifier":"t_rational_18446744073709551615_by_1","typeString":"int_const 18446744073709551615"},"value":"0xffffffffffffffff"},"src":"31059:29:47","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"}],"expression":{"id":12591,"name":"SafeCast","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":14491,"src":"31043:8:47","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_SafeCast_$14491_$","typeString":"type(library SafeCast)"}},"id":12592,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"31052:6:47","memberName":"toUint","nodeType":"MemberAccess","referencedDeclaration":14490,"src":"31043:15:47","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_bool_$returns$_t_uint256_$","typeString":"function (bool) pure returns (uint256)"}},"id":12599,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"31043:46:47","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"<<","rightExpression":{"hexValue":"36","id":12600,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"31093:1:47","typeDescriptions":{"typeIdentifier":"t_rational_6_by_1","typeString":"int_const 6"},"value":"6"},"src":"31043:51:47","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"31038:56:47","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":12603,"nodeType":"ExpressionStatement","src":"31038:56:47"},{"expression":{"id":12616,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":12604,"name":"r","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":12577,"src":"31169:1:47","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"|=","rightHandSide":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":12615,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"arguments":[{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":12612,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"components":[{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":12609,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":12607,"name":"x","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":12574,"src":"31191:1:47","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">>","rightExpression":{"id":12608,"name":"r","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":12577,"src":"31196:1:47","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"31191:6:47","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"id":12610,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"31190:8:47","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">","rightExpression":{"hexValue":"30786666666666666666","id":12611,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"31201:10:47","typeDescriptions":{"typeIdentifier":"t_rational_4294967295_by_1","typeString":"int_const 4294967295"},"value":"0xffffffff"},"src":"31190:21:47","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"}],"expression":{"id":12605,"name":"SafeCast","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":14491,"src":"31174:8:47","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_SafeCast_$14491_$","typeString":"type(library SafeCast)"}},"id":12606,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"31183:6:47","memberName":"toUint","nodeType":"MemberAccess","referencedDeclaration":14490,"src":"31174:15:47","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_bool_$returns$_t_uint256_$","typeString":"function (bool) pure returns (uint256)"}},"id":12613,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"31174:38:47","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"<<","rightExpression":{"hexValue":"35","id":12614,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"31216:1:47","typeDescriptions":{"typeIdentifier":"t_rational_5_by_1","typeString":"int_const 5"},"value":"5"},"src":"31174:43:47","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"31169:48:47","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":12617,"nodeType":"ExpressionStatement","src":"31169:48:47"},{"expression":{"id":12630,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":12618,"name":"r","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":12577,"src":"31292:1:47","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"|=","rightHandSide":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":12629,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"arguments":[{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":12626,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"components":[{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":12623,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":12621,"name":"x","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":12574,"src":"31314:1:47","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">>","rightExpression":{"id":12622,"name":"r","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":12577,"src":"31319:1:47","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"31314:6:47","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"id":12624,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"31313:8:47","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">","rightExpression":{"hexValue":"307866666666","id":12625,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"31324:6:47","typeDescriptions":{"typeIdentifier":"t_rational_65535_by_1","typeString":"int_const 65535"},"value":"0xffff"},"src":"31313:17:47","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"}],"expression":{"id":12619,"name":"SafeCast","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":14491,"src":"31297:8:47","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_SafeCast_$14491_$","typeString":"type(library SafeCast)"}},"id":12620,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"31306:6:47","memberName":"toUint","nodeType":"MemberAccess","referencedDeclaration":14490,"src":"31297:15:47","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_bool_$returns$_t_uint256_$","typeString":"function (bool) pure returns (uint256)"}},"id":12627,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"31297:34:47","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"<<","rightExpression":{"hexValue":"34","id":12628,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"31335:1:47","typeDescriptions":{"typeIdentifier":"t_rational_4_by_1","typeString":"int_const 4"},"value":"4"},"src":"31297:39:47","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"31292:44:47","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":12631,"nodeType":"ExpressionStatement","src":"31292:44:47"},{"expression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":12645,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"components":[{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":12634,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":12632,"name":"r","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":12577,"src":"31442:1:47","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">>","rightExpression":{"hexValue":"33","id":12633,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"31447:1:47","typeDescriptions":{"typeIdentifier":"t_rational_3_by_1","typeString":"int_const 3"},"value":"3"},"src":"31442:6:47","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"id":12635,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"31441:8:47","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"|","rightExpression":{"arguments":[{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":12643,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"components":[{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":12640,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":12638,"name":"x","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":12574,"src":"31469:1:47","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">>","rightExpression":{"id":12639,"name":"r","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":12577,"src":"31474:1:47","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"31469:6:47","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"id":12641,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"31468:8:47","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">","rightExpression":{"hexValue":"30786666","id":12642,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"31479:4:47","typeDescriptions":{"typeIdentifier":"t_rational_255_by_1","typeString":"int_const 255"},"value":"0xff"},"src":"31468:15:47","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"}],"expression":{"id":12636,"name":"SafeCast","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":14491,"src":"31452:8:47","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_SafeCast_$14491_$","typeString":"type(library SafeCast)"}},"id":12637,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"31461:6:47","memberName":"toUint","nodeType":"MemberAccess","referencedDeclaration":14490,"src":"31452:15:47","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_bool_$returns$_t_uint256_$","typeString":"function (bool) pure returns (uint256)"}},"id":12644,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"31452:32:47","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"31441:43:47","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"functionReturnParameters":12578,"id":12646,"nodeType":"Return","src":"31434:50:47"}]},"documentation":{"id":12572,"nodeType":"StructuredDocumentation","src":"30504:246:47","text":" @dev Return the log in base 256 of a positive value rounded towards zero.\n Returns 0 if given 0.\n Adding one to the result gives the number of pairs of hex symbols needed to represent `value` as a hex string."},"id":12648,"implemented":true,"kind":"function","modifiers":[],"name":"log256","nameLocation":"30764:6:47","nodeType":"FunctionDefinition","parameters":{"id":12575,"nodeType":"ParameterList","parameters":[{"constant":false,"id":12574,"mutability":"mutable","name":"x","nameLocation":"30779:1:47","nodeType":"VariableDeclaration","scope":12648,"src":"30771:9:47","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":12573,"name":"uint256","nodeType":"ElementaryTypeName","src":"30771:7:47","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"30770:11:47"},"returnParameters":{"id":12578,"nodeType":"ParameterList","parameters":[{"constant":false,"id":12577,"mutability":"mutable","name":"r","nameLocation":"30813:1:47","nodeType":"VariableDeclaration","scope":12648,"src":"30805:9:47","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":12576,"name":"uint256","nodeType":"ElementaryTypeName","src":"30805:7:47","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"30804:11:47"},"scope":12726,"src":"30755:736:47","stateMutability":"pure","virtual":false,"visibility":"internal"},{"body":{"id":12684,"nodeType":"Block","src":"31728:184:47","statements":[{"id":12683,"nodeType":"UncheckedBlock","src":"31738:168:47","statements":[{"assignments":[12660],"declarations":[{"constant":false,"id":12660,"mutability":"mutable","name":"result","nameLocation":"31770:6:47","nodeType":"VariableDeclaration","scope":12683,"src":"31762:14:47","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":12659,"name":"uint256","nodeType":"ElementaryTypeName","src":"31762:7:47","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":12664,"initialValue":{"arguments":[{"id":12662,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":12651,"src":"31786:5:47","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":12661,"name":"log256","nodeType":"Identifier","overloadedDeclarations":[12648,12685],"referencedDeclaration":12648,"src":"31779:6:47","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_uint256_$returns$_t_uint256_$","typeString":"function (uint256) pure returns (uint256)"}},"id":12663,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"31779:13:47","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"VariableDeclarationStatement","src":"31762:30:47"},{"expression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":12681,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":12665,"name":"result","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":12660,"src":"31813:6:47","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"+","rightExpression":{"arguments":[{"commonType":{"typeIdentifier":"t_bool","typeString":"bool"},"id":12679,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"arguments":[{"id":12669,"name":"rounding","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":12654,"src":"31855:8:47","typeDescriptions":{"typeIdentifier":"t_enum$_Rounding_$11096","typeString":"enum Math.Rounding"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_enum$_Rounding_$11096","typeString":"enum Math.Rounding"}],"id":12668,"name":"unsignedRoundsUp","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":12704,"src":"31838:16:47","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_enum$_Rounding_$11096_$returns$_t_bool_$","typeString":"function (enum Math.Rounding) pure returns (bool)"}},"id":12670,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"31838:26:47","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"nodeType":"BinaryOperation","operator":"&&","rightExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":12678,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":12676,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"hexValue":"31","id":12671,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"31868:1:47","typeDescriptions":{"typeIdentifier":"t_rational_1_by_1","typeString":"int_const 1"},"value":"1"},"nodeType":"BinaryOperation","operator":"<<","rightExpression":{"components":[{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":12674,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":12672,"name":"result","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":12660,"src":"31874:6:47","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"<<","rightExpression":{"hexValue":"33","id":12673,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"31884:1:47","typeDescriptions":{"typeIdentifier":"t_rational_3_by_1","typeString":"int_const 3"},"value":"3"},"src":"31874:11:47","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"id":12675,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"31873:13:47","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"31868:18:47","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"<","rightExpression":{"id":12677,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":12651,"src":"31889:5:47","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"31868:26:47","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"src":"31838:56:47","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"}],"expression":{"id":12666,"name":"SafeCast","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":14491,"src":"31822:8:47","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_SafeCast_$14491_$","typeString":"type(library SafeCast)"}},"id":12667,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"31831:6:47","memberName":"toUint","nodeType":"MemberAccess","referencedDeclaration":14490,"src":"31822:15:47","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_bool_$returns$_t_uint256_$","typeString":"function (bool) pure returns (uint256)"}},"id":12680,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"31822:73:47","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"31813:82:47","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"functionReturnParameters":12658,"id":12682,"nodeType":"Return","src":"31806:89:47"}]}]},"documentation":{"id":12649,"nodeType":"StructuredDocumentation","src":"31497:144:47","text":" @dev Return the log in base 256, following the selected rounding direction, of a positive value.\n Returns 0 if given 0."},"id":12685,"implemented":true,"kind":"function","modifiers":[],"name":"log256","nameLocation":"31655:6:47","nodeType":"FunctionDefinition","parameters":{"id":12655,"nodeType":"ParameterList","parameters":[{"constant":false,"id":12651,"mutability":"mutable","name":"value","nameLocation":"31670:5:47","nodeType":"VariableDeclaration","scope":12685,"src":"31662:13:47","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":12650,"name":"uint256","nodeType":"ElementaryTypeName","src":"31662:7:47","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":12654,"mutability":"mutable","name":"rounding","nameLocation":"31686:8:47","nodeType":"VariableDeclaration","scope":12685,"src":"31677:17:47","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_enum$_Rounding_$11096","typeString":"enum Math.Rounding"},"typeName":{"id":12653,"nodeType":"UserDefinedTypeName","pathNode":{"id":12652,"name":"Rounding","nameLocations":["31677:8:47"],"nodeType":"IdentifierPath","referencedDeclaration":11096,"src":"31677:8:47"},"referencedDeclaration":11096,"src":"31677:8:47","typeDescriptions":{"typeIdentifier":"t_enum$_Rounding_$11096","typeString":"enum Math.Rounding"}},"visibility":"internal"}],"src":"31661:34:47"},"returnParameters":{"id":12658,"nodeType":"ParameterList","parameters":[{"constant":false,"id":12657,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":12685,"src":"31719:7:47","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":12656,"name":"uint256","nodeType":"ElementaryTypeName","src":"31719:7:47","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"31718:9:47"},"scope":12726,"src":"31646:266:47","stateMutability":"pure","virtual":false,"visibility":"internal"},{"body":{"id":12703,"nodeType":"Block","src":"32110:48:47","statements":[{"expression":{"commonType":{"typeIdentifier":"t_uint8","typeString":"uint8"},"id":12701,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"commonType":{"typeIdentifier":"t_uint8","typeString":"uint8"},"id":12699,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"arguments":[{"id":12696,"name":"rounding","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":12689,"src":"32133:8:47","typeDescriptions":{"typeIdentifier":"t_enum$_Rounding_$11096","typeString":"enum Math.Rounding"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_enum$_Rounding_$11096","typeString":"enum Math.Rounding"}],"id":12695,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"32127:5:47","typeDescriptions":{"typeIdentifier":"t_type$_t_uint8_$","typeString":"type(uint8)"},"typeName":{"id":12694,"name":"uint8","nodeType":"ElementaryTypeName","src":"32127:5:47","typeDescriptions":{}}},"id":12697,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"32127:15:47","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}},"nodeType":"BinaryOperation","operator":"%","rightExpression":{"hexValue":"32","id":12698,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"32145:1:47","typeDescriptions":{"typeIdentifier":"t_rational_2_by_1","typeString":"int_const 2"},"value":"2"},"src":"32127:19:47","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"hexValue":"31","id":12700,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"32150:1:47","typeDescriptions":{"typeIdentifier":"t_rational_1_by_1","typeString":"int_const 1"},"value":"1"},"src":"32127:24:47","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"functionReturnParameters":12693,"id":12702,"nodeType":"Return","src":"32120:31:47"}]},"documentation":{"id":12686,"nodeType":"StructuredDocumentation","src":"31918:113:47","text":" @dev Returns whether a provided rounding mode is considered rounding up for unsigned integers."},"id":12704,"implemented":true,"kind":"function","modifiers":[],"name":"unsignedRoundsUp","nameLocation":"32045:16:47","nodeType":"FunctionDefinition","parameters":{"id":12690,"nodeType":"ParameterList","parameters":[{"constant":false,"id":12689,"mutability":"mutable","name":"rounding","nameLocation":"32071:8:47","nodeType":"VariableDeclaration","scope":12704,"src":"32062:17:47","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_enum$_Rounding_$11096","typeString":"enum Math.Rounding"},"typeName":{"id":12688,"nodeType":"UserDefinedTypeName","pathNode":{"id":12687,"name":"Rounding","nameLocations":["32062:8:47"],"nodeType":"IdentifierPath","referencedDeclaration":11096,"src":"32062:8:47"},"referencedDeclaration":11096,"src":"32062:8:47","typeDescriptions":{"typeIdentifier":"t_enum$_Rounding_$11096","typeString":"enum Math.Rounding"}},"visibility":"internal"}],"src":"32061:19:47"},"returnParameters":{"id":12693,"nodeType":"ParameterList","parameters":[{"constant":false,"id":12692,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":12704,"src":"32104:4:47","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":12691,"name":"bool","nodeType":"ElementaryTypeName","src":"32104:4:47","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"}],"src":"32103:6:47"},"scope":12726,"src":"32036:122:47","stateMutability":"pure","virtual":false,"visibility":"internal"},{"body":{"id":12724,"nodeType":"Block","src":"32301:59:47","statements":[{"expression":{"arguments":[{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":12715,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":12713,"name":"x","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":12707,"src":"32326:1:47","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"hexValue":"30","id":12714,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"32331:1:47","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"32326:6:47","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},{"hexValue":"323536","id":12716,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"32334:3:47","typeDescriptions":{"typeIdentifier":"t_rational_256_by_1","typeString":"int_const 256"},"value":"256"},{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":12721,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"hexValue":"323535","id":12717,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"32339:3:47","typeDescriptions":{"typeIdentifier":"t_rational_255_by_1","typeString":"int_const 255"},"value":"255"},"nodeType":"BinaryOperation","operator":"-","rightExpression":{"arguments":[{"id":12719,"name":"x","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":12707,"src":"32350:1:47","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":12718,"name":"log2","nodeType":"Identifier","overloadedDeclarations":[12374,12408],"referencedDeclaration":12374,"src":"32345:4:47","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_uint256_$returns$_t_uint256_$","typeString":"function (uint256) pure returns (uint256)"}},"id":12720,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"32345:7:47","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"32339:13:47","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_rational_256_by_1","typeString":"int_const 256"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":12712,"name":"ternary","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":11373,"src":"32318:7:47","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_bool_$_t_uint256_$_t_uint256_$returns$_t_uint256_$","typeString":"function (bool,uint256,uint256) pure returns (uint256)"}},"id":12722,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"32318:35:47","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"functionReturnParameters":12711,"id":12723,"nodeType":"Return","src":"32311:42:47"}]},"documentation":{"id":12705,"nodeType":"StructuredDocumentation","src":"32164:76:47","text":" @dev Counts the number of leading zero bits in a uint256."},"id":12725,"implemented":true,"kind":"function","modifiers":[],"name":"clz","nameLocation":"32254:3:47","nodeType":"FunctionDefinition","parameters":{"id":12708,"nodeType":"ParameterList","parameters":[{"constant":false,"id":12707,"mutability":"mutable","name":"x","nameLocation":"32266:1:47","nodeType":"VariableDeclaration","scope":12725,"src":"32258:9:47","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":12706,"name":"uint256","nodeType":"ElementaryTypeName","src":"32258:7:47","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"32257:11:47"},"returnParameters":{"id":12711,"nodeType":"ParameterList","parameters":[{"constant":false,"id":12710,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":12725,"src":"32292:7:47","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":12709,"name":"uint256","nodeType":"ElementaryTypeName","src":"32292:7:47","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"32291:9:47"},"scope":12726,"src":"32245:115:47","stateMutability":"pure","virtual":false,"visibility":"internal"}],"scope":12727,"src":"281:32081:47","usedErrors":[],"usedEvents":[]}],"src":"103:32260:47"},"id":47},"@openzeppelin/contracts/utils/math/SafeCast.sol":{"ast":{"absolutePath":"@openzeppelin/contracts/utils/math/SafeCast.sol","exportedSymbols":{"SafeCast":[14491]},"id":14492,"license":"MIT","nodeType":"SourceUnit","nodes":[{"id":12728,"literals":["solidity","^","0.8",".20"],"nodeType":"PragmaDirective","src":"192:24:48"},{"abstract":false,"baseContracts":[],"canonicalName":"SafeCast","contractDependencies":[],"contractKind":"library","documentation":{"id":12729,"nodeType":"StructuredDocumentation","src":"218:550:48","text":" @dev Wrappers over Solidity's uintXX/intXX/bool casting operators with added overflow\n checks.\n Downcasting from uint256/int256 in Solidity does not revert on overflow. This can\n easily result in undesired exploitation or bugs, since developers usually\n assume that overflows raise errors. `SafeCast` restores this intuition by\n reverting the transaction when such an operation overflows.\n Using this library instead of the unchecked operations eliminates an entire\n class of bugs, so it's recommended to use it always."},"fullyImplemented":true,"id":14491,"linearizedBaseContracts":[14491],"name":"SafeCast","nameLocation":"777:8:48","nodeType":"ContractDefinition","nodes":[{"documentation":{"id":12730,"nodeType":"StructuredDocumentation","src":"792:68:48","text":" @dev Value doesn't fit in an uint of `bits` size."},"errorSelector":"6dfcc650","id":12736,"name":"SafeCastOverflowedUintDowncast","nameLocation":"871:30:48","nodeType":"ErrorDefinition","parameters":{"id":12735,"nodeType":"ParameterList","parameters":[{"constant":false,"id":12732,"mutability":"mutable","name":"bits","nameLocation":"908:4:48","nodeType":"VariableDeclaration","scope":12736,"src":"902:10:48","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"},"typeName":{"id":12731,"name":"uint8","nodeType":"ElementaryTypeName","src":"902:5:48","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}},"visibility":"internal"},{"constant":false,"id":12734,"mutability":"mutable","name":"value","nameLocation":"922:5:48","nodeType":"VariableDeclaration","scope":12736,"src":"914:13:48","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":12733,"name":"uint256","nodeType":"ElementaryTypeName","src":"914:7:48","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"901:27:48"},"src":"865:64:48"},{"documentation":{"id":12737,"nodeType":"StructuredDocumentation","src":"935:75:48","text":" @dev An int value doesn't fit in an uint of `bits` size."},"errorSelector":"a8ce4432","id":12741,"name":"SafeCastOverflowedIntToUint","nameLocation":"1021:27:48","nodeType":"ErrorDefinition","parameters":{"id":12740,"nodeType":"ParameterList","parameters":[{"constant":false,"id":12739,"mutability":"mutable","name":"value","nameLocation":"1056:5:48","nodeType":"VariableDeclaration","scope":12741,"src":"1049:12:48","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"},"typeName":{"id":12738,"name":"int256","nodeType":"ElementaryTypeName","src":"1049:6:48","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"visibility":"internal"}],"src":"1048:14:48"},"src":"1015:48:48"},{"documentation":{"id":12742,"nodeType":"StructuredDocumentation","src":"1069:67:48","text":" @dev Value doesn't fit in an int of `bits` size."},"errorSelector":"327269a7","id":12748,"name":"SafeCastOverflowedIntDowncast","nameLocation":"1147:29:48","nodeType":"ErrorDefinition","parameters":{"id":12747,"nodeType":"ParameterList","parameters":[{"constant":false,"id":12744,"mutability":"mutable","name":"bits","nameLocation":"1183:4:48","nodeType":"VariableDeclaration","scope":12748,"src":"1177:10:48","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"},"typeName":{"id":12743,"name":"uint8","nodeType":"ElementaryTypeName","src":"1177:5:48","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}},"visibility":"internal"},{"constant":false,"id":12746,"mutability":"mutable","name":"value","nameLocation":"1196:5:48","nodeType":"VariableDeclaration","scope":12748,"src":"1189:12:48","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"},"typeName":{"id":12745,"name":"int256","nodeType":"ElementaryTypeName","src":"1189:6:48","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"visibility":"internal"}],"src":"1176:26:48"},"src":"1141:62:48"},{"documentation":{"id":12749,"nodeType":"StructuredDocumentation","src":"1209:75:48","text":" @dev An uint value doesn't fit in an int of `bits` size."},"errorSelector":"24775e06","id":12753,"name":"SafeCastOverflowedUintToInt","nameLocation":"1295:27:48","nodeType":"ErrorDefinition","parameters":{"id":12752,"nodeType":"ParameterList","parameters":[{"constant":false,"id":12751,"mutability":"mutable","name":"value","nameLocation":"1331:5:48","nodeType":"VariableDeclaration","scope":12753,"src":"1323:13:48","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":12750,"name":"uint256","nodeType":"ElementaryTypeName","src":"1323:7:48","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"1322:15:48"},"src":"1289:49:48"},{"body":{"id":12780,"nodeType":"Block","src":"1695:152:48","statements":[{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":12767,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":12761,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":12756,"src":"1709:5:48","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">","rightExpression":{"expression":{"arguments":[{"id":12764,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"1722:7:48","typeDescriptions":{"typeIdentifier":"t_type$_t_uint248_$","typeString":"type(uint248)"},"typeName":{"id":12763,"name":"uint248","nodeType":"ElementaryTypeName","src":"1722:7:48","typeDescriptions":{}}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_type$_t_uint248_$","typeString":"type(uint248)"}],"id":12762,"name":"type","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-27,"src":"1717:4:48","typeDescriptions":{"typeIdentifier":"t_function_metatype_pure$__$returns$__$","typeString":"function () pure"}},"id":12765,"isConstant":false,"isLValue":false,"isPure":true,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"1717:13:48","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_magic_meta_type_t_uint248","typeString":"type(uint248)"}},"id":12766,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberLocation":"1731:3:48","memberName":"max","nodeType":"MemberAccess","src":"1717:17:48","typeDescriptions":{"typeIdentifier":"t_uint248","typeString":"uint248"}},"src":"1709:25:48","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":12774,"nodeType":"IfStatement","src":"1705:105:48","trueBody":{"id":12773,"nodeType":"Block","src":"1736:74:48","statements":[{"errorCall":{"arguments":[{"hexValue":"323438","id":12769,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"1788:3:48","typeDescriptions":{"typeIdentifier":"t_rational_248_by_1","typeString":"int_const 248"},"value":"248"},{"id":12770,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":12756,"src":"1793:5:48","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_rational_248_by_1","typeString":"int_const 248"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":12768,"name":"SafeCastOverflowedUintDowncast","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":12736,"src":"1757:30:48","typeDescriptions":{"typeIdentifier":"t_function_error_pure$_t_uint8_$_t_uint256_$returns$_t_error_$","typeString":"function (uint8,uint256) pure returns (error)"}},"id":12771,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"1757:42:48","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_error","typeString":"error"}},"id":12772,"nodeType":"RevertStatement","src":"1750:49:48"}]}},{"expression":{"arguments":[{"id":12777,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":12756,"src":"1834:5:48","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":12776,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"1826:7:48","typeDescriptions":{"typeIdentifier":"t_type$_t_uint248_$","typeString":"type(uint248)"},"typeName":{"id":12775,"name":"uint248","nodeType":"ElementaryTypeName","src":"1826:7:48","typeDescriptions":{}}},"id":12778,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"1826:14:48","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint248","typeString":"uint248"}},"functionReturnParameters":12760,"id":12779,"nodeType":"Return","src":"1819:21:48"}]},"documentation":{"id":12754,"nodeType":"StructuredDocumentation","src":"1344:280:48","text":" @dev Returns the downcasted uint248 from uint256, reverting on\n overflow (when the input is greater than largest uint248).\n Counterpart to Solidity's `uint248` operator.\n Requirements:\n - input must fit into 248 bits"},"id":12781,"implemented":true,"kind":"function","modifiers":[],"name":"toUint248","nameLocation":"1638:9:48","nodeType":"FunctionDefinition","parameters":{"id":12757,"nodeType":"ParameterList","parameters":[{"constant":false,"id":12756,"mutability":"mutable","name":"value","nameLocation":"1656:5:48","nodeType":"VariableDeclaration","scope":12781,"src":"1648:13:48","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":12755,"name":"uint256","nodeType":"ElementaryTypeName","src":"1648:7:48","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"1647:15:48"},"returnParameters":{"id":12760,"nodeType":"ParameterList","parameters":[{"constant":false,"id":12759,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":12781,"src":"1686:7:48","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint248","typeString":"uint248"},"typeName":{"id":12758,"name":"uint248","nodeType":"ElementaryTypeName","src":"1686:7:48","typeDescriptions":{"typeIdentifier":"t_uint248","typeString":"uint248"}},"visibility":"internal"}],"src":"1685:9:48"},"scope":14491,"src":"1629:218:48","stateMutability":"pure","virtual":false,"visibility":"internal"},{"body":{"id":12808,"nodeType":"Block","src":"2204:152:48","statements":[{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":12795,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":12789,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":12784,"src":"2218:5:48","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">","rightExpression":{"expression":{"arguments":[{"id":12792,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"2231:7:48","typeDescriptions":{"typeIdentifier":"t_type$_t_uint240_$","typeString":"type(uint240)"},"typeName":{"id":12791,"name":"uint240","nodeType":"ElementaryTypeName","src":"2231:7:48","typeDescriptions":{}}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_type$_t_uint240_$","typeString":"type(uint240)"}],"id":12790,"name":"type","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-27,"src":"2226:4:48","typeDescriptions":{"typeIdentifier":"t_function_metatype_pure$__$returns$__$","typeString":"function () pure"}},"id":12793,"isConstant":false,"isLValue":false,"isPure":true,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"2226:13:48","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_magic_meta_type_t_uint240","typeString":"type(uint240)"}},"id":12794,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberLocation":"2240:3:48","memberName":"max","nodeType":"MemberAccess","src":"2226:17:48","typeDescriptions":{"typeIdentifier":"t_uint240","typeString":"uint240"}},"src":"2218:25:48","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":12802,"nodeType":"IfStatement","src":"2214:105:48","trueBody":{"id":12801,"nodeType":"Block","src":"2245:74:48","statements":[{"errorCall":{"arguments":[{"hexValue":"323430","id":12797,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"2297:3:48","typeDescriptions":{"typeIdentifier":"t_rational_240_by_1","typeString":"int_const 240"},"value":"240"},{"id":12798,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":12784,"src":"2302:5:48","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_rational_240_by_1","typeString":"int_const 240"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":12796,"name":"SafeCastOverflowedUintDowncast","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":12736,"src":"2266:30:48","typeDescriptions":{"typeIdentifier":"t_function_error_pure$_t_uint8_$_t_uint256_$returns$_t_error_$","typeString":"function (uint8,uint256) pure returns (error)"}},"id":12799,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"2266:42:48","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_error","typeString":"error"}},"id":12800,"nodeType":"RevertStatement","src":"2259:49:48"}]}},{"expression":{"arguments":[{"id":12805,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":12784,"src":"2343:5:48","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":12804,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"2335:7:48","typeDescriptions":{"typeIdentifier":"t_type$_t_uint240_$","typeString":"type(uint240)"},"typeName":{"id":12803,"name":"uint240","nodeType":"ElementaryTypeName","src":"2335:7:48","typeDescriptions":{}}},"id":12806,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"2335:14:48","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint240","typeString":"uint240"}},"functionReturnParameters":12788,"id":12807,"nodeType":"Return","src":"2328:21:48"}]},"documentation":{"id":12782,"nodeType":"StructuredDocumentation","src":"1853:280:48","text":" @dev Returns the downcasted uint240 from uint256, reverting on\n overflow (when the input is greater than largest uint240).\n Counterpart to Solidity's `uint240` operator.\n Requirements:\n - input must fit into 240 bits"},"id":12809,"implemented":true,"kind":"function","modifiers":[],"name":"toUint240","nameLocation":"2147:9:48","nodeType":"FunctionDefinition","parameters":{"id":12785,"nodeType":"ParameterList","parameters":[{"constant":false,"id":12784,"mutability":"mutable","name":"value","nameLocation":"2165:5:48","nodeType":"VariableDeclaration","scope":12809,"src":"2157:13:48","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":12783,"name":"uint256","nodeType":"ElementaryTypeName","src":"2157:7:48","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"2156:15:48"},"returnParameters":{"id":12788,"nodeType":"ParameterList","parameters":[{"constant":false,"id":12787,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":12809,"src":"2195:7:48","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint240","typeString":"uint240"},"typeName":{"id":12786,"name":"uint240","nodeType":"ElementaryTypeName","src":"2195:7:48","typeDescriptions":{"typeIdentifier":"t_uint240","typeString":"uint240"}},"visibility":"internal"}],"src":"2194:9:48"},"scope":14491,"src":"2138:218:48","stateMutability":"pure","virtual":false,"visibility":"internal"},{"body":{"id":12836,"nodeType":"Block","src":"2713:152:48","statements":[{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":12823,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":12817,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":12812,"src":"2727:5:48","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">","rightExpression":{"expression":{"arguments":[{"id":12820,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"2740:7:48","typeDescriptions":{"typeIdentifier":"t_type$_t_uint232_$","typeString":"type(uint232)"},"typeName":{"id":12819,"name":"uint232","nodeType":"ElementaryTypeName","src":"2740:7:48","typeDescriptions":{}}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_type$_t_uint232_$","typeString":"type(uint232)"}],"id":12818,"name":"type","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-27,"src":"2735:4:48","typeDescriptions":{"typeIdentifier":"t_function_metatype_pure$__$returns$__$","typeString":"function () pure"}},"id":12821,"isConstant":false,"isLValue":false,"isPure":true,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"2735:13:48","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_magic_meta_type_t_uint232","typeString":"type(uint232)"}},"id":12822,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberLocation":"2749:3:48","memberName":"max","nodeType":"MemberAccess","src":"2735:17:48","typeDescriptions":{"typeIdentifier":"t_uint232","typeString":"uint232"}},"src":"2727:25:48","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":12830,"nodeType":"IfStatement","src":"2723:105:48","trueBody":{"id":12829,"nodeType":"Block","src":"2754:74:48","statements":[{"errorCall":{"arguments":[{"hexValue":"323332","id":12825,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"2806:3:48","typeDescriptions":{"typeIdentifier":"t_rational_232_by_1","typeString":"int_const 232"},"value":"232"},{"id":12826,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":12812,"src":"2811:5:48","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_rational_232_by_1","typeString":"int_const 232"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":12824,"name":"SafeCastOverflowedUintDowncast","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":12736,"src":"2775:30:48","typeDescriptions":{"typeIdentifier":"t_function_error_pure$_t_uint8_$_t_uint256_$returns$_t_error_$","typeString":"function (uint8,uint256) pure returns (error)"}},"id":12827,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"2775:42:48","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_error","typeString":"error"}},"id":12828,"nodeType":"RevertStatement","src":"2768:49:48"}]}},{"expression":{"arguments":[{"id":12833,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":12812,"src":"2852:5:48","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":12832,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"2844:7:48","typeDescriptions":{"typeIdentifier":"t_type$_t_uint232_$","typeString":"type(uint232)"},"typeName":{"id":12831,"name":"uint232","nodeType":"ElementaryTypeName","src":"2844:7:48","typeDescriptions":{}}},"id":12834,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"2844:14:48","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint232","typeString":"uint232"}},"functionReturnParameters":12816,"id":12835,"nodeType":"Return","src":"2837:21:48"}]},"documentation":{"id":12810,"nodeType":"StructuredDocumentation","src":"2362:280:48","text":" @dev Returns the downcasted uint232 from uint256, reverting on\n overflow (when the input is greater than largest uint232).\n Counterpart to Solidity's `uint232` operator.\n Requirements:\n - input must fit into 232 bits"},"id":12837,"implemented":true,"kind":"function","modifiers":[],"name":"toUint232","nameLocation":"2656:9:48","nodeType":"FunctionDefinition","parameters":{"id":12813,"nodeType":"ParameterList","parameters":[{"constant":false,"id":12812,"mutability":"mutable","name":"value","nameLocation":"2674:5:48","nodeType":"VariableDeclaration","scope":12837,"src":"2666:13:48","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":12811,"name":"uint256","nodeType":"ElementaryTypeName","src":"2666:7:48","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"2665:15:48"},"returnParameters":{"id":12816,"nodeType":"ParameterList","parameters":[{"constant":false,"id":12815,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":12837,"src":"2704:7:48","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint232","typeString":"uint232"},"typeName":{"id":12814,"name":"uint232","nodeType":"ElementaryTypeName","src":"2704:7:48","typeDescriptions":{"typeIdentifier":"t_uint232","typeString":"uint232"}},"visibility":"internal"}],"src":"2703:9:48"},"scope":14491,"src":"2647:218:48","stateMutability":"pure","virtual":false,"visibility":"internal"},{"body":{"id":12864,"nodeType":"Block","src":"3222:152:48","statements":[{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":12851,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":12845,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":12840,"src":"3236:5:48","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">","rightExpression":{"expression":{"arguments":[{"id":12848,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"3249:7:48","typeDescriptions":{"typeIdentifier":"t_type$_t_uint224_$","typeString":"type(uint224)"},"typeName":{"id":12847,"name":"uint224","nodeType":"ElementaryTypeName","src":"3249:7:48","typeDescriptions":{}}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_type$_t_uint224_$","typeString":"type(uint224)"}],"id":12846,"name":"type","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-27,"src":"3244:4:48","typeDescriptions":{"typeIdentifier":"t_function_metatype_pure$__$returns$__$","typeString":"function () pure"}},"id":12849,"isConstant":false,"isLValue":false,"isPure":true,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"3244:13:48","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_magic_meta_type_t_uint224","typeString":"type(uint224)"}},"id":12850,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberLocation":"3258:3:48","memberName":"max","nodeType":"MemberAccess","src":"3244:17:48","typeDescriptions":{"typeIdentifier":"t_uint224","typeString":"uint224"}},"src":"3236:25:48","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":12858,"nodeType":"IfStatement","src":"3232:105:48","trueBody":{"id":12857,"nodeType":"Block","src":"3263:74:48","statements":[{"errorCall":{"arguments":[{"hexValue":"323234","id":12853,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"3315:3:48","typeDescriptions":{"typeIdentifier":"t_rational_224_by_1","typeString":"int_const 224"},"value":"224"},{"id":12854,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":12840,"src":"3320:5:48","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_rational_224_by_1","typeString":"int_const 224"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":12852,"name":"SafeCastOverflowedUintDowncast","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":12736,"src":"3284:30:48","typeDescriptions":{"typeIdentifier":"t_function_error_pure$_t_uint8_$_t_uint256_$returns$_t_error_$","typeString":"function (uint8,uint256) pure returns (error)"}},"id":12855,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"3284:42:48","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_error","typeString":"error"}},"id":12856,"nodeType":"RevertStatement","src":"3277:49:48"}]}},{"expression":{"arguments":[{"id":12861,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":12840,"src":"3361:5:48","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":12860,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"3353:7:48","typeDescriptions":{"typeIdentifier":"t_type$_t_uint224_$","typeString":"type(uint224)"},"typeName":{"id":12859,"name":"uint224","nodeType":"ElementaryTypeName","src":"3353:7:48","typeDescriptions":{}}},"id":12862,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"3353:14:48","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint224","typeString":"uint224"}},"functionReturnParameters":12844,"id":12863,"nodeType":"Return","src":"3346:21:48"}]},"documentation":{"id":12838,"nodeType":"StructuredDocumentation","src":"2871:280:48","text":" @dev Returns the downcasted uint224 from uint256, reverting on\n overflow (when the input is greater than largest uint224).\n Counterpart to Solidity's `uint224` operator.\n Requirements:\n - input must fit into 224 bits"},"id":12865,"implemented":true,"kind":"function","modifiers":[],"name":"toUint224","nameLocation":"3165:9:48","nodeType":"FunctionDefinition","parameters":{"id":12841,"nodeType":"ParameterList","parameters":[{"constant":false,"id":12840,"mutability":"mutable","name":"value","nameLocation":"3183:5:48","nodeType":"VariableDeclaration","scope":12865,"src":"3175:13:48","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":12839,"name":"uint256","nodeType":"ElementaryTypeName","src":"3175:7:48","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"3174:15:48"},"returnParameters":{"id":12844,"nodeType":"ParameterList","parameters":[{"constant":false,"id":12843,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":12865,"src":"3213:7:48","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint224","typeString":"uint224"},"typeName":{"id":12842,"name":"uint224","nodeType":"ElementaryTypeName","src":"3213:7:48","typeDescriptions":{"typeIdentifier":"t_uint224","typeString":"uint224"}},"visibility":"internal"}],"src":"3212:9:48"},"scope":14491,"src":"3156:218:48","stateMutability":"pure","virtual":false,"visibility":"internal"},{"body":{"id":12892,"nodeType":"Block","src":"3731:152:48","statements":[{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":12879,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":12873,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":12868,"src":"3745:5:48","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">","rightExpression":{"expression":{"arguments":[{"id":12876,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"3758:7:48","typeDescriptions":{"typeIdentifier":"t_type$_t_uint216_$","typeString":"type(uint216)"},"typeName":{"id":12875,"name":"uint216","nodeType":"ElementaryTypeName","src":"3758:7:48","typeDescriptions":{}}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_type$_t_uint216_$","typeString":"type(uint216)"}],"id":12874,"name":"type","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-27,"src":"3753:4:48","typeDescriptions":{"typeIdentifier":"t_function_metatype_pure$__$returns$__$","typeString":"function () pure"}},"id":12877,"isConstant":false,"isLValue":false,"isPure":true,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"3753:13:48","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_magic_meta_type_t_uint216","typeString":"type(uint216)"}},"id":12878,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberLocation":"3767:3:48","memberName":"max","nodeType":"MemberAccess","src":"3753:17:48","typeDescriptions":{"typeIdentifier":"t_uint216","typeString":"uint216"}},"src":"3745:25:48","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":12886,"nodeType":"IfStatement","src":"3741:105:48","trueBody":{"id":12885,"nodeType":"Block","src":"3772:74:48","statements":[{"errorCall":{"arguments":[{"hexValue":"323136","id":12881,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"3824:3:48","typeDescriptions":{"typeIdentifier":"t_rational_216_by_1","typeString":"int_const 216"},"value":"216"},{"id":12882,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":12868,"src":"3829:5:48","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_rational_216_by_1","typeString":"int_const 216"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":12880,"name":"SafeCastOverflowedUintDowncast","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":12736,"src":"3793:30:48","typeDescriptions":{"typeIdentifier":"t_function_error_pure$_t_uint8_$_t_uint256_$returns$_t_error_$","typeString":"function (uint8,uint256) pure returns (error)"}},"id":12883,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"3793:42:48","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_error","typeString":"error"}},"id":12884,"nodeType":"RevertStatement","src":"3786:49:48"}]}},{"expression":{"arguments":[{"id":12889,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":12868,"src":"3870:5:48","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":12888,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"3862:7:48","typeDescriptions":{"typeIdentifier":"t_type$_t_uint216_$","typeString":"type(uint216)"},"typeName":{"id":12887,"name":"uint216","nodeType":"ElementaryTypeName","src":"3862:7:48","typeDescriptions":{}}},"id":12890,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"3862:14:48","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint216","typeString":"uint216"}},"functionReturnParameters":12872,"id":12891,"nodeType":"Return","src":"3855:21:48"}]},"documentation":{"id":12866,"nodeType":"StructuredDocumentation","src":"3380:280:48","text":" @dev Returns the downcasted uint216 from uint256, reverting on\n overflow (when the input is greater than largest uint216).\n Counterpart to Solidity's `uint216` operator.\n Requirements:\n - input must fit into 216 bits"},"id":12893,"implemented":true,"kind":"function","modifiers":[],"name":"toUint216","nameLocation":"3674:9:48","nodeType":"FunctionDefinition","parameters":{"id":12869,"nodeType":"ParameterList","parameters":[{"constant":false,"id":12868,"mutability":"mutable","name":"value","nameLocation":"3692:5:48","nodeType":"VariableDeclaration","scope":12893,"src":"3684:13:48","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":12867,"name":"uint256","nodeType":"ElementaryTypeName","src":"3684:7:48","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"3683:15:48"},"returnParameters":{"id":12872,"nodeType":"ParameterList","parameters":[{"constant":false,"id":12871,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":12893,"src":"3722:7:48","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint216","typeString":"uint216"},"typeName":{"id":12870,"name":"uint216","nodeType":"ElementaryTypeName","src":"3722:7:48","typeDescriptions":{"typeIdentifier":"t_uint216","typeString":"uint216"}},"visibility":"internal"}],"src":"3721:9:48"},"scope":14491,"src":"3665:218:48","stateMutability":"pure","virtual":false,"visibility":"internal"},{"body":{"id":12920,"nodeType":"Block","src":"4240:152:48","statements":[{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":12907,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":12901,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":12896,"src":"4254:5:48","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">","rightExpression":{"expression":{"arguments":[{"id":12904,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"4267:7:48","typeDescriptions":{"typeIdentifier":"t_type$_t_uint208_$","typeString":"type(uint208)"},"typeName":{"id":12903,"name":"uint208","nodeType":"ElementaryTypeName","src":"4267:7:48","typeDescriptions":{}}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_type$_t_uint208_$","typeString":"type(uint208)"}],"id":12902,"name":"type","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-27,"src":"4262:4:48","typeDescriptions":{"typeIdentifier":"t_function_metatype_pure$__$returns$__$","typeString":"function () pure"}},"id":12905,"isConstant":false,"isLValue":false,"isPure":true,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"4262:13:48","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_magic_meta_type_t_uint208","typeString":"type(uint208)"}},"id":12906,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberLocation":"4276:3:48","memberName":"max","nodeType":"MemberAccess","src":"4262:17:48","typeDescriptions":{"typeIdentifier":"t_uint208","typeString":"uint208"}},"src":"4254:25:48","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":12914,"nodeType":"IfStatement","src":"4250:105:48","trueBody":{"id":12913,"nodeType":"Block","src":"4281:74:48","statements":[{"errorCall":{"arguments":[{"hexValue":"323038","id":12909,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"4333:3:48","typeDescriptions":{"typeIdentifier":"t_rational_208_by_1","typeString":"int_const 208"},"value":"208"},{"id":12910,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":12896,"src":"4338:5:48","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_rational_208_by_1","typeString":"int_const 208"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":12908,"name":"SafeCastOverflowedUintDowncast","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":12736,"src":"4302:30:48","typeDescriptions":{"typeIdentifier":"t_function_error_pure$_t_uint8_$_t_uint256_$returns$_t_error_$","typeString":"function (uint8,uint256) pure returns (error)"}},"id":12911,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"4302:42:48","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_error","typeString":"error"}},"id":12912,"nodeType":"RevertStatement","src":"4295:49:48"}]}},{"expression":{"arguments":[{"id":12917,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":12896,"src":"4379:5:48","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":12916,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"4371:7:48","typeDescriptions":{"typeIdentifier":"t_type$_t_uint208_$","typeString":"type(uint208)"},"typeName":{"id":12915,"name":"uint208","nodeType":"ElementaryTypeName","src":"4371:7:48","typeDescriptions":{}}},"id":12918,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"4371:14:48","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint208","typeString":"uint208"}},"functionReturnParameters":12900,"id":12919,"nodeType":"Return","src":"4364:21:48"}]},"documentation":{"id":12894,"nodeType":"StructuredDocumentation","src":"3889:280:48","text":" @dev Returns the downcasted uint208 from uint256, reverting on\n overflow (when the input is greater than largest uint208).\n Counterpart to Solidity's `uint208` operator.\n Requirements:\n - input must fit into 208 bits"},"id":12921,"implemented":true,"kind":"function","modifiers":[],"name":"toUint208","nameLocation":"4183:9:48","nodeType":"FunctionDefinition","parameters":{"id":12897,"nodeType":"ParameterList","parameters":[{"constant":false,"id":12896,"mutability":"mutable","name":"value","nameLocation":"4201:5:48","nodeType":"VariableDeclaration","scope":12921,"src":"4193:13:48","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":12895,"name":"uint256","nodeType":"ElementaryTypeName","src":"4193:7:48","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"4192:15:48"},"returnParameters":{"id":12900,"nodeType":"ParameterList","parameters":[{"constant":false,"id":12899,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":12921,"src":"4231:7:48","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint208","typeString":"uint208"},"typeName":{"id":12898,"name":"uint208","nodeType":"ElementaryTypeName","src":"4231:7:48","typeDescriptions":{"typeIdentifier":"t_uint208","typeString":"uint208"}},"visibility":"internal"}],"src":"4230:9:48"},"scope":14491,"src":"4174:218:48","stateMutability":"pure","virtual":false,"visibility":"internal"},{"body":{"id":12948,"nodeType":"Block","src":"4749:152:48","statements":[{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":12935,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":12929,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":12924,"src":"4763:5:48","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">","rightExpression":{"expression":{"arguments":[{"id":12932,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"4776:7:48","typeDescriptions":{"typeIdentifier":"t_type$_t_uint200_$","typeString":"type(uint200)"},"typeName":{"id":12931,"name":"uint200","nodeType":"ElementaryTypeName","src":"4776:7:48","typeDescriptions":{}}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_type$_t_uint200_$","typeString":"type(uint200)"}],"id":12930,"name":"type","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-27,"src":"4771:4:48","typeDescriptions":{"typeIdentifier":"t_function_metatype_pure$__$returns$__$","typeString":"function () pure"}},"id":12933,"isConstant":false,"isLValue":false,"isPure":true,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"4771:13:48","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_magic_meta_type_t_uint200","typeString":"type(uint200)"}},"id":12934,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberLocation":"4785:3:48","memberName":"max","nodeType":"MemberAccess","src":"4771:17:48","typeDescriptions":{"typeIdentifier":"t_uint200","typeString":"uint200"}},"src":"4763:25:48","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":12942,"nodeType":"IfStatement","src":"4759:105:48","trueBody":{"id":12941,"nodeType":"Block","src":"4790:74:48","statements":[{"errorCall":{"arguments":[{"hexValue":"323030","id":12937,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"4842:3:48","typeDescriptions":{"typeIdentifier":"t_rational_200_by_1","typeString":"int_const 200"},"value":"200"},{"id":12938,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":12924,"src":"4847:5:48","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_rational_200_by_1","typeString":"int_const 200"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":12936,"name":"SafeCastOverflowedUintDowncast","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":12736,"src":"4811:30:48","typeDescriptions":{"typeIdentifier":"t_function_error_pure$_t_uint8_$_t_uint256_$returns$_t_error_$","typeString":"function (uint8,uint256) pure returns (error)"}},"id":12939,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"4811:42:48","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_error","typeString":"error"}},"id":12940,"nodeType":"RevertStatement","src":"4804:49:48"}]}},{"expression":{"arguments":[{"id":12945,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":12924,"src":"4888:5:48","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":12944,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"4880:7:48","typeDescriptions":{"typeIdentifier":"t_type$_t_uint200_$","typeString":"type(uint200)"},"typeName":{"id":12943,"name":"uint200","nodeType":"ElementaryTypeName","src":"4880:7:48","typeDescriptions":{}}},"id":12946,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"4880:14:48","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint200","typeString":"uint200"}},"functionReturnParameters":12928,"id":12947,"nodeType":"Return","src":"4873:21:48"}]},"documentation":{"id":12922,"nodeType":"StructuredDocumentation","src":"4398:280:48","text":" @dev Returns the downcasted uint200 from uint256, reverting on\n overflow (when the input is greater than largest uint200).\n Counterpart to Solidity's `uint200` operator.\n Requirements:\n - input must fit into 200 bits"},"id":12949,"implemented":true,"kind":"function","modifiers":[],"name":"toUint200","nameLocation":"4692:9:48","nodeType":"FunctionDefinition","parameters":{"id":12925,"nodeType":"ParameterList","parameters":[{"constant":false,"id":12924,"mutability":"mutable","name":"value","nameLocation":"4710:5:48","nodeType":"VariableDeclaration","scope":12949,"src":"4702:13:48","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":12923,"name":"uint256","nodeType":"ElementaryTypeName","src":"4702:7:48","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"4701:15:48"},"returnParameters":{"id":12928,"nodeType":"ParameterList","parameters":[{"constant":false,"id":12927,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":12949,"src":"4740:7:48","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint200","typeString":"uint200"},"typeName":{"id":12926,"name":"uint200","nodeType":"ElementaryTypeName","src":"4740:7:48","typeDescriptions":{"typeIdentifier":"t_uint200","typeString":"uint200"}},"visibility":"internal"}],"src":"4739:9:48"},"scope":14491,"src":"4683:218:48","stateMutability":"pure","virtual":false,"visibility":"internal"},{"body":{"id":12976,"nodeType":"Block","src":"5258:152:48","statements":[{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":12963,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":12957,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":12952,"src":"5272:5:48","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">","rightExpression":{"expression":{"arguments":[{"id":12960,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"5285:7:48","typeDescriptions":{"typeIdentifier":"t_type$_t_uint192_$","typeString":"type(uint192)"},"typeName":{"id":12959,"name":"uint192","nodeType":"ElementaryTypeName","src":"5285:7:48","typeDescriptions":{}}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_type$_t_uint192_$","typeString":"type(uint192)"}],"id":12958,"name":"type","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-27,"src":"5280:4:48","typeDescriptions":{"typeIdentifier":"t_function_metatype_pure$__$returns$__$","typeString":"function () pure"}},"id":12961,"isConstant":false,"isLValue":false,"isPure":true,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"5280:13:48","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_magic_meta_type_t_uint192","typeString":"type(uint192)"}},"id":12962,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberLocation":"5294:3:48","memberName":"max","nodeType":"MemberAccess","src":"5280:17:48","typeDescriptions":{"typeIdentifier":"t_uint192","typeString":"uint192"}},"src":"5272:25:48","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":12970,"nodeType":"IfStatement","src":"5268:105:48","trueBody":{"id":12969,"nodeType":"Block","src":"5299:74:48","statements":[{"errorCall":{"arguments":[{"hexValue":"313932","id":12965,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"5351:3:48","typeDescriptions":{"typeIdentifier":"t_rational_192_by_1","typeString":"int_const 192"},"value":"192"},{"id":12966,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":12952,"src":"5356:5:48","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_rational_192_by_1","typeString":"int_const 192"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":12964,"name":"SafeCastOverflowedUintDowncast","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":12736,"src":"5320:30:48","typeDescriptions":{"typeIdentifier":"t_function_error_pure$_t_uint8_$_t_uint256_$returns$_t_error_$","typeString":"function (uint8,uint256) pure returns (error)"}},"id":12967,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"5320:42:48","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_error","typeString":"error"}},"id":12968,"nodeType":"RevertStatement","src":"5313:49:48"}]}},{"expression":{"arguments":[{"id":12973,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":12952,"src":"5397:5:48","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":12972,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"5389:7:48","typeDescriptions":{"typeIdentifier":"t_type$_t_uint192_$","typeString":"type(uint192)"},"typeName":{"id":12971,"name":"uint192","nodeType":"ElementaryTypeName","src":"5389:7:48","typeDescriptions":{}}},"id":12974,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"5389:14:48","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint192","typeString":"uint192"}},"functionReturnParameters":12956,"id":12975,"nodeType":"Return","src":"5382:21:48"}]},"documentation":{"id":12950,"nodeType":"StructuredDocumentation","src":"4907:280:48","text":" @dev Returns the downcasted uint192 from uint256, reverting on\n overflow (when the input is greater than largest uint192).\n Counterpart to Solidity's `uint192` operator.\n Requirements:\n - input must fit into 192 bits"},"id":12977,"implemented":true,"kind":"function","modifiers":[],"name":"toUint192","nameLocation":"5201:9:48","nodeType":"FunctionDefinition","parameters":{"id":12953,"nodeType":"ParameterList","parameters":[{"constant":false,"id":12952,"mutability":"mutable","name":"value","nameLocation":"5219:5:48","nodeType":"VariableDeclaration","scope":12977,"src":"5211:13:48","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":12951,"name":"uint256","nodeType":"ElementaryTypeName","src":"5211:7:48","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"5210:15:48"},"returnParameters":{"id":12956,"nodeType":"ParameterList","parameters":[{"constant":false,"id":12955,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":12977,"src":"5249:7:48","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint192","typeString":"uint192"},"typeName":{"id":12954,"name":"uint192","nodeType":"ElementaryTypeName","src":"5249:7:48","typeDescriptions":{"typeIdentifier":"t_uint192","typeString":"uint192"}},"visibility":"internal"}],"src":"5248:9:48"},"scope":14491,"src":"5192:218:48","stateMutability":"pure","virtual":false,"visibility":"internal"},{"body":{"id":13004,"nodeType":"Block","src":"5767:152:48","statements":[{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":12991,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":12985,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":12980,"src":"5781:5:48","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">","rightExpression":{"expression":{"arguments":[{"id":12988,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"5794:7:48","typeDescriptions":{"typeIdentifier":"t_type$_t_uint184_$","typeString":"type(uint184)"},"typeName":{"id":12987,"name":"uint184","nodeType":"ElementaryTypeName","src":"5794:7:48","typeDescriptions":{}}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_type$_t_uint184_$","typeString":"type(uint184)"}],"id":12986,"name":"type","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-27,"src":"5789:4:48","typeDescriptions":{"typeIdentifier":"t_function_metatype_pure$__$returns$__$","typeString":"function () pure"}},"id":12989,"isConstant":false,"isLValue":false,"isPure":true,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"5789:13:48","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_magic_meta_type_t_uint184","typeString":"type(uint184)"}},"id":12990,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberLocation":"5803:3:48","memberName":"max","nodeType":"MemberAccess","src":"5789:17:48","typeDescriptions":{"typeIdentifier":"t_uint184","typeString":"uint184"}},"src":"5781:25:48","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":12998,"nodeType":"IfStatement","src":"5777:105:48","trueBody":{"id":12997,"nodeType":"Block","src":"5808:74:48","statements":[{"errorCall":{"arguments":[{"hexValue":"313834","id":12993,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"5860:3:48","typeDescriptions":{"typeIdentifier":"t_rational_184_by_1","typeString":"int_const 184"},"value":"184"},{"id":12994,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":12980,"src":"5865:5:48","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_rational_184_by_1","typeString":"int_const 184"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":12992,"name":"SafeCastOverflowedUintDowncast","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":12736,"src":"5829:30:48","typeDescriptions":{"typeIdentifier":"t_function_error_pure$_t_uint8_$_t_uint256_$returns$_t_error_$","typeString":"function (uint8,uint256) pure returns (error)"}},"id":12995,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"5829:42:48","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_error","typeString":"error"}},"id":12996,"nodeType":"RevertStatement","src":"5822:49:48"}]}},{"expression":{"arguments":[{"id":13001,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":12980,"src":"5906:5:48","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":13000,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"5898:7:48","typeDescriptions":{"typeIdentifier":"t_type$_t_uint184_$","typeString":"type(uint184)"},"typeName":{"id":12999,"name":"uint184","nodeType":"ElementaryTypeName","src":"5898:7:48","typeDescriptions":{}}},"id":13002,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"5898:14:48","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint184","typeString":"uint184"}},"functionReturnParameters":12984,"id":13003,"nodeType":"Return","src":"5891:21:48"}]},"documentation":{"id":12978,"nodeType":"StructuredDocumentation","src":"5416:280:48","text":" @dev Returns the downcasted uint184 from uint256, reverting on\n overflow (when the input is greater than largest uint184).\n Counterpart to Solidity's `uint184` operator.\n Requirements:\n - input must fit into 184 bits"},"id":13005,"implemented":true,"kind":"function","modifiers":[],"name":"toUint184","nameLocation":"5710:9:48","nodeType":"FunctionDefinition","parameters":{"id":12981,"nodeType":"ParameterList","parameters":[{"constant":false,"id":12980,"mutability":"mutable","name":"value","nameLocation":"5728:5:48","nodeType":"VariableDeclaration","scope":13005,"src":"5720:13:48","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":12979,"name":"uint256","nodeType":"ElementaryTypeName","src":"5720:7:48","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"5719:15:48"},"returnParameters":{"id":12984,"nodeType":"ParameterList","parameters":[{"constant":false,"id":12983,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":13005,"src":"5758:7:48","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint184","typeString":"uint184"},"typeName":{"id":12982,"name":"uint184","nodeType":"ElementaryTypeName","src":"5758:7:48","typeDescriptions":{"typeIdentifier":"t_uint184","typeString":"uint184"}},"visibility":"internal"}],"src":"5757:9:48"},"scope":14491,"src":"5701:218:48","stateMutability":"pure","virtual":false,"visibility":"internal"},{"body":{"id":13032,"nodeType":"Block","src":"6276:152:48","statements":[{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":13019,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":13013,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":13008,"src":"6290:5:48","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">","rightExpression":{"expression":{"arguments":[{"id":13016,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"6303:7:48","typeDescriptions":{"typeIdentifier":"t_type$_t_uint176_$","typeString":"type(uint176)"},"typeName":{"id":13015,"name":"uint176","nodeType":"ElementaryTypeName","src":"6303:7:48","typeDescriptions":{}}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_type$_t_uint176_$","typeString":"type(uint176)"}],"id":13014,"name":"type","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-27,"src":"6298:4:48","typeDescriptions":{"typeIdentifier":"t_function_metatype_pure$__$returns$__$","typeString":"function () pure"}},"id":13017,"isConstant":false,"isLValue":false,"isPure":true,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"6298:13:48","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_magic_meta_type_t_uint176","typeString":"type(uint176)"}},"id":13018,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberLocation":"6312:3:48","memberName":"max","nodeType":"MemberAccess","src":"6298:17:48","typeDescriptions":{"typeIdentifier":"t_uint176","typeString":"uint176"}},"src":"6290:25:48","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":13026,"nodeType":"IfStatement","src":"6286:105:48","trueBody":{"id":13025,"nodeType":"Block","src":"6317:74:48","statements":[{"errorCall":{"arguments":[{"hexValue":"313736","id":13021,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"6369:3:48","typeDescriptions":{"typeIdentifier":"t_rational_176_by_1","typeString":"int_const 176"},"value":"176"},{"id":13022,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":13008,"src":"6374:5:48","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_rational_176_by_1","typeString":"int_const 176"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":13020,"name":"SafeCastOverflowedUintDowncast","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":12736,"src":"6338:30:48","typeDescriptions":{"typeIdentifier":"t_function_error_pure$_t_uint8_$_t_uint256_$returns$_t_error_$","typeString":"function (uint8,uint256) pure returns (error)"}},"id":13023,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"6338:42:48","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_error","typeString":"error"}},"id":13024,"nodeType":"RevertStatement","src":"6331:49:48"}]}},{"expression":{"arguments":[{"id":13029,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":13008,"src":"6415:5:48","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":13028,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"6407:7:48","typeDescriptions":{"typeIdentifier":"t_type$_t_uint176_$","typeString":"type(uint176)"},"typeName":{"id":13027,"name":"uint176","nodeType":"ElementaryTypeName","src":"6407:7:48","typeDescriptions":{}}},"id":13030,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"6407:14:48","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint176","typeString":"uint176"}},"functionReturnParameters":13012,"id":13031,"nodeType":"Return","src":"6400:21:48"}]},"documentation":{"id":13006,"nodeType":"StructuredDocumentation","src":"5925:280:48","text":" @dev Returns the downcasted uint176 from uint256, reverting on\n overflow (when the input is greater than largest uint176).\n Counterpart to Solidity's `uint176` operator.\n Requirements:\n - input must fit into 176 bits"},"id":13033,"implemented":true,"kind":"function","modifiers":[],"name":"toUint176","nameLocation":"6219:9:48","nodeType":"FunctionDefinition","parameters":{"id":13009,"nodeType":"ParameterList","parameters":[{"constant":false,"id":13008,"mutability":"mutable","name":"value","nameLocation":"6237:5:48","nodeType":"VariableDeclaration","scope":13033,"src":"6229:13:48","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":13007,"name":"uint256","nodeType":"ElementaryTypeName","src":"6229:7:48","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"6228:15:48"},"returnParameters":{"id":13012,"nodeType":"ParameterList","parameters":[{"constant":false,"id":13011,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":13033,"src":"6267:7:48","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint176","typeString":"uint176"},"typeName":{"id":13010,"name":"uint176","nodeType":"ElementaryTypeName","src":"6267:7:48","typeDescriptions":{"typeIdentifier":"t_uint176","typeString":"uint176"}},"visibility":"internal"}],"src":"6266:9:48"},"scope":14491,"src":"6210:218:48","stateMutability":"pure","virtual":false,"visibility":"internal"},{"body":{"id":13060,"nodeType":"Block","src":"6785:152:48","statements":[{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":13047,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":13041,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":13036,"src":"6799:5:48","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">","rightExpression":{"expression":{"arguments":[{"id":13044,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"6812:7:48","typeDescriptions":{"typeIdentifier":"t_type$_t_uint168_$","typeString":"type(uint168)"},"typeName":{"id":13043,"name":"uint168","nodeType":"ElementaryTypeName","src":"6812:7:48","typeDescriptions":{}}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_type$_t_uint168_$","typeString":"type(uint168)"}],"id":13042,"name":"type","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-27,"src":"6807:4:48","typeDescriptions":{"typeIdentifier":"t_function_metatype_pure$__$returns$__$","typeString":"function () pure"}},"id":13045,"isConstant":false,"isLValue":false,"isPure":true,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"6807:13:48","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_magic_meta_type_t_uint168","typeString":"type(uint168)"}},"id":13046,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberLocation":"6821:3:48","memberName":"max","nodeType":"MemberAccess","src":"6807:17:48","typeDescriptions":{"typeIdentifier":"t_uint168","typeString":"uint168"}},"src":"6799:25:48","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":13054,"nodeType":"IfStatement","src":"6795:105:48","trueBody":{"id":13053,"nodeType":"Block","src":"6826:74:48","statements":[{"errorCall":{"arguments":[{"hexValue":"313638","id":13049,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"6878:3:48","typeDescriptions":{"typeIdentifier":"t_rational_168_by_1","typeString":"int_const 168"},"value":"168"},{"id":13050,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":13036,"src":"6883:5:48","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_rational_168_by_1","typeString":"int_const 168"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":13048,"name":"SafeCastOverflowedUintDowncast","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":12736,"src":"6847:30:48","typeDescriptions":{"typeIdentifier":"t_function_error_pure$_t_uint8_$_t_uint256_$returns$_t_error_$","typeString":"function (uint8,uint256) pure returns (error)"}},"id":13051,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"6847:42:48","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_error","typeString":"error"}},"id":13052,"nodeType":"RevertStatement","src":"6840:49:48"}]}},{"expression":{"arguments":[{"id":13057,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":13036,"src":"6924:5:48","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":13056,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"6916:7:48","typeDescriptions":{"typeIdentifier":"t_type$_t_uint168_$","typeString":"type(uint168)"},"typeName":{"id":13055,"name":"uint168","nodeType":"ElementaryTypeName","src":"6916:7:48","typeDescriptions":{}}},"id":13058,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"6916:14:48","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint168","typeString":"uint168"}},"functionReturnParameters":13040,"id":13059,"nodeType":"Return","src":"6909:21:48"}]},"documentation":{"id":13034,"nodeType":"StructuredDocumentation","src":"6434:280:48","text":" @dev Returns the downcasted uint168 from uint256, reverting on\n overflow (when the input is greater than largest uint168).\n Counterpart to Solidity's `uint168` operator.\n Requirements:\n - input must fit into 168 bits"},"id":13061,"implemented":true,"kind":"function","modifiers":[],"name":"toUint168","nameLocation":"6728:9:48","nodeType":"FunctionDefinition","parameters":{"id":13037,"nodeType":"ParameterList","parameters":[{"constant":false,"id":13036,"mutability":"mutable","name":"value","nameLocation":"6746:5:48","nodeType":"VariableDeclaration","scope":13061,"src":"6738:13:48","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":13035,"name":"uint256","nodeType":"ElementaryTypeName","src":"6738:7:48","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"6737:15:48"},"returnParameters":{"id":13040,"nodeType":"ParameterList","parameters":[{"constant":false,"id":13039,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":13061,"src":"6776:7:48","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint168","typeString":"uint168"},"typeName":{"id":13038,"name":"uint168","nodeType":"ElementaryTypeName","src":"6776:7:48","typeDescriptions":{"typeIdentifier":"t_uint168","typeString":"uint168"}},"visibility":"internal"}],"src":"6775:9:48"},"scope":14491,"src":"6719:218:48","stateMutability":"pure","virtual":false,"visibility":"internal"},{"body":{"id":13088,"nodeType":"Block","src":"7294:152:48","statements":[{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":13075,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":13069,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":13064,"src":"7308:5:48","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">","rightExpression":{"expression":{"arguments":[{"id":13072,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"7321:7:48","typeDescriptions":{"typeIdentifier":"t_type$_t_uint160_$","typeString":"type(uint160)"},"typeName":{"id":13071,"name":"uint160","nodeType":"ElementaryTypeName","src":"7321:7:48","typeDescriptions":{}}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_type$_t_uint160_$","typeString":"type(uint160)"}],"id":13070,"name":"type","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-27,"src":"7316:4:48","typeDescriptions":{"typeIdentifier":"t_function_metatype_pure$__$returns$__$","typeString":"function () pure"}},"id":13073,"isConstant":false,"isLValue":false,"isPure":true,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"7316:13:48","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_magic_meta_type_t_uint160","typeString":"type(uint160)"}},"id":13074,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberLocation":"7330:3:48","memberName":"max","nodeType":"MemberAccess","src":"7316:17:48","typeDescriptions":{"typeIdentifier":"t_uint160","typeString":"uint160"}},"src":"7308:25:48","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":13082,"nodeType":"IfStatement","src":"7304:105:48","trueBody":{"id":13081,"nodeType":"Block","src":"7335:74:48","statements":[{"errorCall":{"arguments":[{"hexValue":"313630","id":13077,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"7387:3:48","typeDescriptions":{"typeIdentifier":"t_rational_160_by_1","typeString":"int_const 160"},"value":"160"},{"id":13078,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":13064,"src":"7392:5:48","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_rational_160_by_1","typeString":"int_const 160"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":13076,"name":"SafeCastOverflowedUintDowncast","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":12736,"src":"7356:30:48","typeDescriptions":{"typeIdentifier":"t_function_error_pure$_t_uint8_$_t_uint256_$returns$_t_error_$","typeString":"function (uint8,uint256) pure returns (error)"}},"id":13079,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"7356:42:48","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_error","typeString":"error"}},"id":13080,"nodeType":"RevertStatement","src":"7349:49:48"}]}},{"expression":{"arguments":[{"id":13085,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":13064,"src":"7433:5:48","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":13084,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"7425:7:48","typeDescriptions":{"typeIdentifier":"t_type$_t_uint160_$","typeString":"type(uint160)"},"typeName":{"id":13083,"name":"uint160","nodeType":"ElementaryTypeName","src":"7425:7:48","typeDescriptions":{}}},"id":13086,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"7425:14:48","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint160","typeString":"uint160"}},"functionReturnParameters":13068,"id":13087,"nodeType":"Return","src":"7418:21:48"}]},"documentation":{"id":13062,"nodeType":"StructuredDocumentation","src":"6943:280:48","text":" @dev Returns the downcasted uint160 from uint256, reverting on\n overflow (when the input is greater than largest uint160).\n Counterpart to Solidity's `uint160` operator.\n Requirements:\n - input must fit into 160 bits"},"id":13089,"implemented":true,"kind":"function","modifiers":[],"name":"toUint160","nameLocation":"7237:9:48","nodeType":"FunctionDefinition","parameters":{"id":13065,"nodeType":"ParameterList","parameters":[{"constant":false,"id":13064,"mutability":"mutable","name":"value","nameLocation":"7255:5:48","nodeType":"VariableDeclaration","scope":13089,"src":"7247:13:48","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":13063,"name":"uint256","nodeType":"ElementaryTypeName","src":"7247:7:48","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"7246:15:48"},"returnParameters":{"id":13068,"nodeType":"ParameterList","parameters":[{"constant":false,"id":13067,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":13089,"src":"7285:7:48","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint160","typeString":"uint160"},"typeName":{"id":13066,"name":"uint160","nodeType":"ElementaryTypeName","src":"7285:7:48","typeDescriptions":{"typeIdentifier":"t_uint160","typeString":"uint160"}},"visibility":"internal"}],"src":"7284:9:48"},"scope":14491,"src":"7228:218:48","stateMutability":"pure","virtual":false,"visibility":"internal"},{"body":{"id":13116,"nodeType":"Block","src":"7803:152:48","statements":[{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":13103,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":13097,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":13092,"src":"7817:5:48","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">","rightExpression":{"expression":{"arguments":[{"id":13100,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"7830:7:48","typeDescriptions":{"typeIdentifier":"t_type$_t_uint152_$","typeString":"type(uint152)"},"typeName":{"id":13099,"name":"uint152","nodeType":"ElementaryTypeName","src":"7830:7:48","typeDescriptions":{}}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_type$_t_uint152_$","typeString":"type(uint152)"}],"id":13098,"name":"type","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-27,"src":"7825:4:48","typeDescriptions":{"typeIdentifier":"t_function_metatype_pure$__$returns$__$","typeString":"function () pure"}},"id":13101,"isConstant":false,"isLValue":false,"isPure":true,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"7825:13:48","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_magic_meta_type_t_uint152","typeString":"type(uint152)"}},"id":13102,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberLocation":"7839:3:48","memberName":"max","nodeType":"MemberAccess","src":"7825:17:48","typeDescriptions":{"typeIdentifier":"t_uint152","typeString":"uint152"}},"src":"7817:25:48","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":13110,"nodeType":"IfStatement","src":"7813:105:48","trueBody":{"id":13109,"nodeType":"Block","src":"7844:74:48","statements":[{"errorCall":{"arguments":[{"hexValue":"313532","id":13105,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"7896:3:48","typeDescriptions":{"typeIdentifier":"t_rational_152_by_1","typeString":"int_const 152"},"value":"152"},{"id":13106,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":13092,"src":"7901:5:48","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_rational_152_by_1","typeString":"int_const 152"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":13104,"name":"SafeCastOverflowedUintDowncast","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":12736,"src":"7865:30:48","typeDescriptions":{"typeIdentifier":"t_function_error_pure$_t_uint8_$_t_uint256_$returns$_t_error_$","typeString":"function (uint8,uint256) pure returns (error)"}},"id":13107,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"7865:42:48","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_error","typeString":"error"}},"id":13108,"nodeType":"RevertStatement","src":"7858:49:48"}]}},{"expression":{"arguments":[{"id":13113,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":13092,"src":"7942:5:48","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":13112,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"7934:7:48","typeDescriptions":{"typeIdentifier":"t_type$_t_uint152_$","typeString":"type(uint152)"},"typeName":{"id":13111,"name":"uint152","nodeType":"ElementaryTypeName","src":"7934:7:48","typeDescriptions":{}}},"id":13114,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"7934:14:48","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint152","typeString":"uint152"}},"functionReturnParameters":13096,"id":13115,"nodeType":"Return","src":"7927:21:48"}]},"documentation":{"id":13090,"nodeType":"StructuredDocumentation","src":"7452:280:48","text":" @dev Returns the downcasted uint152 from uint256, reverting on\n overflow (when the input is greater than largest uint152).\n Counterpart to Solidity's `uint152` operator.\n Requirements:\n - input must fit into 152 bits"},"id":13117,"implemented":true,"kind":"function","modifiers":[],"name":"toUint152","nameLocation":"7746:9:48","nodeType":"FunctionDefinition","parameters":{"id":13093,"nodeType":"ParameterList","parameters":[{"constant":false,"id":13092,"mutability":"mutable","name":"value","nameLocation":"7764:5:48","nodeType":"VariableDeclaration","scope":13117,"src":"7756:13:48","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":13091,"name":"uint256","nodeType":"ElementaryTypeName","src":"7756:7:48","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"7755:15:48"},"returnParameters":{"id":13096,"nodeType":"ParameterList","parameters":[{"constant":false,"id":13095,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":13117,"src":"7794:7:48","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint152","typeString":"uint152"},"typeName":{"id":13094,"name":"uint152","nodeType":"ElementaryTypeName","src":"7794:7:48","typeDescriptions":{"typeIdentifier":"t_uint152","typeString":"uint152"}},"visibility":"internal"}],"src":"7793:9:48"},"scope":14491,"src":"7737:218:48","stateMutability":"pure","virtual":false,"visibility":"internal"},{"body":{"id":13144,"nodeType":"Block","src":"8312:152:48","statements":[{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":13131,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":13125,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":13120,"src":"8326:5:48","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">","rightExpression":{"expression":{"arguments":[{"id":13128,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"8339:7:48","typeDescriptions":{"typeIdentifier":"t_type$_t_uint144_$","typeString":"type(uint144)"},"typeName":{"id":13127,"name":"uint144","nodeType":"ElementaryTypeName","src":"8339:7:48","typeDescriptions":{}}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_type$_t_uint144_$","typeString":"type(uint144)"}],"id":13126,"name":"type","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-27,"src":"8334:4:48","typeDescriptions":{"typeIdentifier":"t_function_metatype_pure$__$returns$__$","typeString":"function () pure"}},"id":13129,"isConstant":false,"isLValue":false,"isPure":true,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"8334:13:48","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_magic_meta_type_t_uint144","typeString":"type(uint144)"}},"id":13130,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberLocation":"8348:3:48","memberName":"max","nodeType":"MemberAccess","src":"8334:17:48","typeDescriptions":{"typeIdentifier":"t_uint144","typeString":"uint144"}},"src":"8326:25:48","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":13138,"nodeType":"IfStatement","src":"8322:105:48","trueBody":{"id":13137,"nodeType":"Block","src":"8353:74:48","statements":[{"errorCall":{"arguments":[{"hexValue":"313434","id":13133,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"8405:3:48","typeDescriptions":{"typeIdentifier":"t_rational_144_by_1","typeString":"int_const 144"},"value":"144"},{"id":13134,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":13120,"src":"8410:5:48","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_rational_144_by_1","typeString":"int_const 144"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":13132,"name":"SafeCastOverflowedUintDowncast","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":12736,"src":"8374:30:48","typeDescriptions":{"typeIdentifier":"t_function_error_pure$_t_uint8_$_t_uint256_$returns$_t_error_$","typeString":"function (uint8,uint256) pure returns (error)"}},"id":13135,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"8374:42:48","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_error","typeString":"error"}},"id":13136,"nodeType":"RevertStatement","src":"8367:49:48"}]}},{"expression":{"arguments":[{"id":13141,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":13120,"src":"8451:5:48","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":13140,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"8443:7:48","typeDescriptions":{"typeIdentifier":"t_type$_t_uint144_$","typeString":"type(uint144)"},"typeName":{"id":13139,"name":"uint144","nodeType":"ElementaryTypeName","src":"8443:7:48","typeDescriptions":{}}},"id":13142,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"8443:14:48","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint144","typeString":"uint144"}},"functionReturnParameters":13124,"id":13143,"nodeType":"Return","src":"8436:21:48"}]},"documentation":{"id":13118,"nodeType":"StructuredDocumentation","src":"7961:280:48","text":" @dev Returns the downcasted uint144 from uint256, reverting on\n overflow (when the input is greater than largest uint144).\n Counterpart to Solidity's `uint144` operator.\n Requirements:\n - input must fit into 144 bits"},"id":13145,"implemented":true,"kind":"function","modifiers":[],"name":"toUint144","nameLocation":"8255:9:48","nodeType":"FunctionDefinition","parameters":{"id":13121,"nodeType":"ParameterList","parameters":[{"constant":false,"id":13120,"mutability":"mutable","name":"value","nameLocation":"8273:5:48","nodeType":"VariableDeclaration","scope":13145,"src":"8265:13:48","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":13119,"name":"uint256","nodeType":"ElementaryTypeName","src":"8265:7:48","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"8264:15:48"},"returnParameters":{"id":13124,"nodeType":"ParameterList","parameters":[{"constant":false,"id":13123,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":13145,"src":"8303:7:48","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint144","typeString":"uint144"},"typeName":{"id":13122,"name":"uint144","nodeType":"ElementaryTypeName","src":"8303:7:48","typeDescriptions":{"typeIdentifier":"t_uint144","typeString":"uint144"}},"visibility":"internal"}],"src":"8302:9:48"},"scope":14491,"src":"8246:218:48","stateMutability":"pure","virtual":false,"visibility":"internal"},{"body":{"id":13172,"nodeType":"Block","src":"8821:152:48","statements":[{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":13159,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":13153,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":13148,"src":"8835:5:48","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">","rightExpression":{"expression":{"arguments":[{"id":13156,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"8848:7:48","typeDescriptions":{"typeIdentifier":"t_type$_t_uint136_$","typeString":"type(uint136)"},"typeName":{"id":13155,"name":"uint136","nodeType":"ElementaryTypeName","src":"8848:7:48","typeDescriptions":{}}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_type$_t_uint136_$","typeString":"type(uint136)"}],"id":13154,"name":"type","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-27,"src":"8843:4:48","typeDescriptions":{"typeIdentifier":"t_function_metatype_pure$__$returns$__$","typeString":"function () pure"}},"id":13157,"isConstant":false,"isLValue":false,"isPure":true,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"8843:13:48","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_magic_meta_type_t_uint136","typeString":"type(uint136)"}},"id":13158,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberLocation":"8857:3:48","memberName":"max","nodeType":"MemberAccess","src":"8843:17:48","typeDescriptions":{"typeIdentifier":"t_uint136","typeString":"uint136"}},"src":"8835:25:48","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":13166,"nodeType":"IfStatement","src":"8831:105:48","trueBody":{"id":13165,"nodeType":"Block","src":"8862:74:48","statements":[{"errorCall":{"arguments":[{"hexValue":"313336","id":13161,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"8914:3:48","typeDescriptions":{"typeIdentifier":"t_rational_136_by_1","typeString":"int_const 136"},"value":"136"},{"id":13162,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":13148,"src":"8919:5:48","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_rational_136_by_1","typeString":"int_const 136"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":13160,"name":"SafeCastOverflowedUintDowncast","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":12736,"src":"8883:30:48","typeDescriptions":{"typeIdentifier":"t_function_error_pure$_t_uint8_$_t_uint256_$returns$_t_error_$","typeString":"function (uint8,uint256) pure returns (error)"}},"id":13163,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"8883:42:48","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_error","typeString":"error"}},"id":13164,"nodeType":"RevertStatement","src":"8876:49:48"}]}},{"expression":{"arguments":[{"id":13169,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":13148,"src":"8960:5:48","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":13168,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"8952:7:48","typeDescriptions":{"typeIdentifier":"t_type$_t_uint136_$","typeString":"type(uint136)"},"typeName":{"id":13167,"name":"uint136","nodeType":"ElementaryTypeName","src":"8952:7:48","typeDescriptions":{}}},"id":13170,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"8952:14:48","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint136","typeString":"uint136"}},"functionReturnParameters":13152,"id":13171,"nodeType":"Return","src":"8945:21:48"}]},"documentation":{"id":13146,"nodeType":"StructuredDocumentation","src":"8470:280:48","text":" @dev Returns the downcasted uint136 from uint256, reverting on\n overflow (when the input is greater than largest uint136).\n Counterpart to Solidity's `uint136` operator.\n Requirements:\n - input must fit into 136 bits"},"id":13173,"implemented":true,"kind":"function","modifiers":[],"name":"toUint136","nameLocation":"8764:9:48","nodeType":"FunctionDefinition","parameters":{"id":13149,"nodeType":"ParameterList","parameters":[{"constant":false,"id":13148,"mutability":"mutable","name":"value","nameLocation":"8782:5:48","nodeType":"VariableDeclaration","scope":13173,"src":"8774:13:48","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":13147,"name":"uint256","nodeType":"ElementaryTypeName","src":"8774:7:48","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"8773:15:48"},"returnParameters":{"id":13152,"nodeType":"ParameterList","parameters":[{"constant":false,"id":13151,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":13173,"src":"8812:7:48","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint136","typeString":"uint136"},"typeName":{"id":13150,"name":"uint136","nodeType":"ElementaryTypeName","src":"8812:7:48","typeDescriptions":{"typeIdentifier":"t_uint136","typeString":"uint136"}},"visibility":"internal"}],"src":"8811:9:48"},"scope":14491,"src":"8755:218:48","stateMutability":"pure","virtual":false,"visibility":"internal"},{"body":{"id":13200,"nodeType":"Block","src":"9330:152:48","statements":[{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":13187,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":13181,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":13176,"src":"9344:5:48","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">","rightExpression":{"expression":{"arguments":[{"id":13184,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"9357:7:48","typeDescriptions":{"typeIdentifier":"t_type$_t_uint128_$","typeString":"type(uint128)"},"typeName":{"id":13183,"name":"uint128","nodeType":"ElementaryTypeName","src":"9357:7:48","typeDescriptions":{}}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_type$_t_uint128_$","typeString":"type(uint128)"}],"id":13182,"name":"type","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-27,"src":"9352:4:48","typeDescriptions":{"typeIdentifier":"t_function_metatype_pure$__$returns$__$","typeString":"function () pure"}},"id":13185,"isConstant":false,"isLValue":false,"isPure":true,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"9352:13:48","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_magic_meta_type_t_uint128","typeString":"type(uint128)"}},"id":13186,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberLocation":"9366:3:48","memberName":"max","nodeType":"MemberAccess","src":"9352:17:48","typeDescriptions":{"typeIdentifier":"t_uint128","typeString":"uint128"}},"src":"9344:25:48","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":13194,"nodeType":"IfStatement","src":"9340:105:48","trueBody":{"id":13193,"nodeType":"Block","src":"9371:74:48","statements":[{"errorCall":{"arguments":[{"hexValue":"313238","id":13189,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"9423:3:48","typeDescriptions":{"typeIdentifier":"t_rational_128_by_1","typeString":"int_const 128"},"value":"128"},{"id":13190,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":13176,"src":"9428:5:48","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_rational_128_by_1","typeString":"int_const 128"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":13188,"name":"SafeCastOverflowedUintDowncast","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":12736,"src":"9392:30:48","typeDescriptions":{"typeIdentifier":"t_function_error_pure$_t_uint8_$_t_uint256_$returns$_t_error_$","typeString":"function (uint8,uint256) pure returns (error)"}},"id":13191,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"9392:42:48","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_error","typeString":"error"}},"id":13192,"nodeType":"RevertStatement","src":"9385:49:48"}]}},{"expression":{"arguments":[{"id":13197,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":13176,"src":"9469:5:48","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":13196,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"9461:7:48","typeDescriptions":{"typeIdentifier":"t_type$_t_uint128_$","typeString":"type(uint128)"},"typeName":{"id":13195,"name":"uint128","nodeType":"ElementaryTypeName","src":"9461:7:48","typeDescriptions":{}}},"id":13198,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"9461:14:48","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint128","typeString":"uint128"}},"functionReturnParameters":13180,"id":13199,"nodeType":"Return","src":"9454:21:48"}]},"documentation":{"id":13174,"nodeType":"StructuredDocumentation","src":"8979:280:48","text":" @dev Returns the downcasted uint128 from uint256, reverting on\n overflow (when the input is greater than largest uint128).\n Counterpart to Solidity's `uint128` operator.\n Requirements:\n - input must fit into 128 bits"},"id":13201,"implemented":true,"kind":"function","modifiers":[],"name":"toUint128","nameLocation":"9273:9:48","nodeType":"FunctionDefinition","parameters":{"id":13177,"nodeType":"ParameterList","parameters":[{"constant":false,"id":13176,"mutability":"mutable","name":"value","nameLocation":"9291:5:48","nodeType":"VariableDeclaration","scope":13201,"src":"9283:13:48","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":13175,"name":"uint256","nodeType":"ElementaryTypeName","src":"9283:7:48","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"9282:15:48"},"returnParameters":{"id":13180,"nodeType":"ParameterList","parameters":[{"constant":false,"id":13179,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":13201,"src":"9321:7:48","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint128","typeString":"uint128"},"typeName":{"id":13178,"name":"uint128","nodeType":"ElementaryTypeName","src":"9321:7:48","typeDescriptions":{"typeIdentifier":"t_uint128","typeString":"uint128"}},"visibility":"internal"}],"src":"9320:9:48"},"scope":14491,"src":"9264:218:48","stateMutability":"pure","virtual":false,"visibility":"internal"},{"body":{"id":13228,"nodeType":"Block","src":"9839:152:48","statements":[{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":13215,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":13209,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":13204,"src":"9853:5:48","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">","rightExpression":{"expression":{"arguments":[{"id":13212,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"9866:7:48","typeDescriptions":{"typeIdentifier":"t_type$_t_uint120_$","typeString":"type(uint120)"},"typeName":{"id":13211,"name":"uint120","nodeType":"ElementaryTypeName","src":"9866:7:48","typeDescriptions":{}}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_type$_t_uint120_$","typeString":"type(uint120)"}],"id":13210,"name":"type","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-27,"src":"9861:4:48","typeDescriptions":{"typeIdentifier":"t_function_metatype_pure$__$returns$__$","typeString":"function () pure"}},"id":13213,"isConstant":false,"isLValue":false,"isPure":true,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"9861:13:48","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_magic_meta_type_t_uint120","typeString":"type(uint120)"}},"id":13214,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberLocation":"9875:3:48","memberName":"max","nodeType":"MemberAccess","src":"9861:17:48","typeDescriptions":{"typeIdentifier":"t_uint120","typeString":"uint120"}},"src":"9853:25:48","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":13222,"nodeType":"IfStatement","src":"9849:105:48","trueBody":{"id":13221,"nodeType":"Block","src":"9880:74:48","statements":[{"errorCall":{"arguments":[{"hexValue":"313230","id":13217,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"9932:3:48","typeDescriptions":{"typeIdentifier":"t_rational_120_by_1","typeString":"int_const 120"},"value":"120"},{"id":13218,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":13204,"src":"9937:5:48","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_rational_120_by_1","typeString":"int_const 120"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":13216,"name":"SafeCastOverflowedUintDowncast","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":12736,"src":"9901:30:48","typeDescriptions":{"typeIdentifier":"t_function_error_pure$_t_uint8_$_t_uint256_$returns$_t_error_$","typeString":"function (uint8,uint256) pure returns (error)"}},"id":13219,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"9901:42:48","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_error","typeString":"error"}},"id":13220,"nodeType":"RevertStatement","src":"9894:49:48"}]}},{"expression":{"arguments":[{"id":13225,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":13204,"src":"9978:5:48","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":13224,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"9970:7:48","typeDescriptions":{"typeIdentifier":"t_type$_t_uint120_$","typeString":"type(uint120)"},"typeName":{"id":13223,"name":"uint120","nodeType":"ElementaryTypeName","src":"9970:7:48","typeDescriptions":{}}},"id":13226,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"9970:14:48","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint120","typeString":"uint120"}},"functionReturnParameters":13208,"id":13227,"nodeType":"Return","src":"9963:21:48"}]},"documentation":{"id":13202,"nodeType":"StructuredDocumentation","src":"9488:280:48","text":" @dev Returns the downcasted uint120 from uint256, reverting on\n overflow (when the input is greater than largest uint120).\n Counterpart to Solidity's `uint120` operator.\n Requirements:\n - input must fit into 120 bits"},"id":13229,"implemented":true,"kind":"function","modifiers":[],"name":"toUint120","nameLocation":"9782:9:48","nodeType":"FunctionDefinition","parameters":{"id":13205,"nodeType":"ParameterList","parameters":[{"constant":false,"id":13204,"mutability":"mutable","name":"value","nameLocation":"9800:5:48","nodeType":"VariableDeclaration","scope":13229,"src":"9792:13:48","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":13203,"name":"uint256","nodeType":"ElementaryTypeName","src":"9792:7:48","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"9791:15:48"},"returnParameters":{"id":13208,"nodeType":"ParameterList","parameters":[{"constant":false,"id":13207,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":13229,"src":"9830:7:48","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint120","typeString":"uint120"},"typeName":{"id":13206,"name":"uint120","nodeType":"ElementaryTypeName","src":"9830:7:48","typeDescriptions":{"typeIdentifier":"t_uint120","typeString":"uint120"}},"visibility":"internal"}],"src":"9829:9:48"},"scope":14491,"src":"9773:218:48","stateMutability":"pure","virtual":false,"visibility":"internal"},{"body":{"id":13256,"nodeType":"Block","src":"10348:152:48","statements":[{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":13243,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":13237,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":13232,"src":"10362:5:48","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">","rightExpression":{"expression":{"arguments":[{"id":13240,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"10375:7:48","typeDescriptions":{"typeIdentifier":"t_type$_t_uint112_$","typeString":"type(uint112)"},"typeName":{"id":13239,"name":"uint112","nodeType":"ElementaryTypeName","src":"10375:7:48","typeDescriptions":{}}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_type$_t_uint112_$","typeString":"type(uint112)"}],"id":13238,"name":"type","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-27,"src":"10370:4:48","typeDescriptions":{"typeIdentifier":"t_function_metatype_pure$__$returns$__$","typeString":"function () pure"}},"id":13241,"isConstant":false,"isLValue":false,"isPure":true,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"10370:13:48","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_magic_meta_type_t_uint112","typeString":"type(uint112)"}},"id":13242,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberLocation":"10384:3:48","memberName":"max","nodeType":"MemberAccess","src":"10370:17:48","typeDescriptions":{"typeIdentifier":"t_uint112","typeString":"uint112"}},"src":"10362:25:48","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":13250,"nodeType":"IfStatement","src":"10358:105:48","trueBody":{"id":13249,"nodeType":"Block","src":"10389:74:48","statements":[{"errorCall":{"arguments":[{"hexValue":"313132","id":13245,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"10441:3:48","typeDescriptions":{"typeIdentifier":"t_rational_112_by_1","typeString":"int_const 112"},"value":"112"},{"id":13246,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":13232,"src":"10446:5:48","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_rational_112_by_1","typeString":"int_const 112"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":13244,"name":"SafeCastOverflowedUintDowncast","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":12736,"src":"10410:30:48","typeDescriptions":{"typeIdentifier":"t_function_error_pure$_t_uint8_$_t_uint256_$returns$_t_error_$","typeString":"function (uint8,uint256) pure returns (error)"}},"id":13247,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"10410:42:48","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_error","typeString":"error"}},"id":13248,"nodeType":"RevertStatement","src":"10403:49:48"}]}},{"expression":{"arguments":[{"id":13253,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":13232,"src":"10487:5:48","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":13252,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"10479:7:48","typeDescriptions":{"typeIdentifier":"t_type$_t_uint112_$","typeString":"type(uint112)"},"typeName":{"id":13251,"name":"uint112","nodeType":"ElementaryTypeName","src":"10479:7:48","typeDescriptions":{}}},"id":13254,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"10479:14:48","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint112","typeString":"uint112"}},"functionReturnParameters":13236,"id":13255,"nodeType":"Return","src":"10472:21:48"}]},"documentation":{"id":13230,"nodeType":"StructuredDocumentation","src":"9997:280:48","text":" @dev Returns the downcasted uint112 from uint256, reverting on\n overflow (when the input is greater than largest uint112).\n Counterpart to Solidity's `uint112` operator.\n Requirements:\n - input must fit into 112 bits"},"id":13257,"implemented":true,"kind":"function","modifiers":[],"name":"toUint112","nameLocation":"10291:9:48","nodeType":"FunctionDefinition","parameters":{"id":13233,"nodeType":"ParameterList","parameters":[{"constant":false,"id":13232,"mutability":"mutable","name":"value","nameLocation":"10309:5:48","nodeType":"VariableDeclaration","scope":13257,"src":"10301:13:48","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":13231,"name":"uint256","nodeType":"ElementaryTypeName","src":"10301:7:48","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"10300:15:48"},"returnParameters":{"id":13236,"nodeType":"ParameterList","parameters":[{"constant":false,"id":13235,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":13257,"src":"10339:7:48","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint112","typeString":"uint112"},"typeName":{"id":13234,"name":"uint112","nodeType":"ElementaryTypeName","src":"10339:7:48","typeDescriptions":{"typeIdentifier":"t_uint112","typeString":"uint112"}},"visibility":"internal"}],"src":"10338:9:48"},"scope":14491,"src":"10282:218:48","stateMutability":"pure","virtual":false,"visibility":"internal"},{"body":{"id":13284,"nodeType":"Block","src":"10857:152:48","statements":[{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":13271,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":13265,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":13260,"src":"10871:5:48","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">","rightExpression":{"expression":{"arguments":[{"id":13268,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"10884:7:48","typeDescriptions":{"typeIdentifier":"t_type$_t_uint104_$","typeString":"type(uint104)"},"typeName":{"id":13267,"name":"uint104","nodeType":"ElementaryTypeName","src":"10884:7:48","typeDescriptions":{}}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_type$_t_uint104_$","typeString":"type(uint104)"}],"id":13266,"name":"type","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-27,"src":"10879:4:48","typeDescriptions":{"typeIdentifier":"t_function_metatype_pure$__$returns$__$","typeString":"function () pure"}},"id":13269,"isConstant":false,"isLValue":false,"isPure":true,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"10879:13:48","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_magic_meta_type_t_uint104","typeString":"type(uint104)"}},"id":13270,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberLocation":"10893:3:48","memberName":"max","nodeType":"MemberAccess","src":"10879:17:48","typeDescriptions":{"typeIdentifier":"t_uint104","typeString":"uint104"}},"src":"10871:25:48","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":13278,"nodeType":"IfStatement","src":"10867:105:48","trueBody":{"id":13277,"nodeType":"Block","src":"10898:74:48","statements":[{"errorCall":{"arguments":[{"hexValue":"313034","id":13273,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"10950:3:48","typeDescriptions":{"typeIdentifier":"t_rational_104_by_1","typeString":"int_const 104"},"value":"104"},{"id":13274,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":13260,"src":"10955:5:48","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_rational_104_by_1","typeString":"int_const 104"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":13272,"name":"SafeCastOverflowedUintDowncast","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":12736,"src":"10919:30:48","typeDescriptions":{"typeIdentifier":"t_function_error_pure$_t_uint8_$_t_uint256_$returns$_t_error_$","typeString":"function (uint8,uint256) pure returns (error)"}},"id":13275,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"10919:42:48","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_error","typeString":"error"}},"id":13276,"nodeType":"RevertStatement","src":"10912:49:48"}]}},{"expression":{"arguments":[{"id":13281,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":13260,"src":"10996:5:48","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":13280,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"10988:7:48","typeDescriptions":{"typeIdentifier":"t_type$_t_uint104_$","typeString":"type(uint104)"},"typeName":{"id":13279,"name":"uint104","nodeType":"ElementaryTypeName","src":"10988:7:48","typeDescriptions":{}}},"id":13282,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"10988:14:48","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint104","typeString":"uint104"}},"functionReturnParameters":13264,"id":13283,"nodeType":"Return","src":"10981:21:48"}]},"documentation":{"id":13258,"nodeType":"StructuredDocumentation","src":"10506:280:48","text":" @dev Returns the downcasted uint104 from uint256, reverting on\n overflow (when the input is greater than largest uint104).\n Counterpart to Solidity's `uint104` operator.\n Requirements:\n - input must fit into 104 bits"},"id":13285,"implemented":true,"kind":"function","modifiers":[],"name":"toUint104","nameLocation":"10800:9:48","nodeType":"FunctionDefinition","parameters":{"id":13261,"nodeType":"ParameterList","parameters":[{"constant":false,"id":13260,"mutability":"mutable","name":"value","nameLocation":"10818:5:48","nodeType":"VariableDeclaration","scope":13285,"src":"10810:13:48","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":13259,"name":"uint256","nodeType":"ElementaryTypeName","src":"10810:7:48","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"10809:15:48"},"returnParameters":{"id":13264,"nodeType":"ParameterList","parameters":[{"constant":false,"id":13263,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":13285,"src":"10848:7:48","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint104","typeString":"uint104"},"typeName":{"id":13262,"name":"uint104","nodeType":"ElementaryTypeName","src":"10848:7:48","typeDescriptions":{"typeIdentifier":"t_uint104","typeString":"uint104"}},"visibility":"internal"}],"src":"10847:9:48"},"scope":14491,"src":"10791:218:48","stateMutability":"pure","virtual":false,"visibility":"internal"},{"body":{"id":13312,"nodeType":"Block","src":"11360:149:48","statements":[{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":13299,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":13293,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":13288,"src":"11374:5:48","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">","rightExpression":{"expression":{"arguments":[{"id":13296,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"11387:6:48","typeDescriptions":{"typeIdentifier":"t_type$_t_uint96_$","typeString":"type(uint96)"},"typeName":{"id":13295,"name":"uint96","nodeType":"ElementaryTypeName","src":"11387:6:48","typeDescriptions":{}}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_type$_t_uint96_$","typeString":"type(uint96)"}],"id":13294,"name":"type","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-27,"src":"11382:4:48","typeDescriptions":{"typeIdentifier":"t_function_metatype_pure$__$returns$__$","typeString":"function () pure"}},"id":13297,"isConstant":false,"isLValue":false,"isPure":true,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"11382:12:48","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_magic_meta_type_t_uint96","typeString":"type(uint96)"}},"id":13298,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberLocation":"11395:3:48","memberName":"max","nodeType":"MemberAccess","src":"11382:16:48","typeDescriptions":{"typeIdentifier":"t_uint96","typeString":"uint96"}},"src":"11374:24:48","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":13306,"nodeType":"IfStatement","src":"11370:103:48","trueBody":{"id":13305,"nodeType":"Block","src":"11400:73:48","statements":[{"errorCall":{"arguments":[{"hexValue":"3936","id":13301,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"11452:2:48","typeDescriptions":{"typeIdentifier":"t_rational_96_by_1","typeString":"int_const 96"},"value":"96"},{"id":13302,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":13288,"src":"11456:5:48","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_rational_96_by_1","typeString":"int_const 96"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":13300,"name":"SafeCastOverflowedUintDowncast","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":12736,"src":"11421:30:48","typeDescriptions":{"typeIdentifier":"t_function_error_pure$_t_uint8_$_t_uint256_$returns$_t_error_$","typeString":"function (uint8,uint256) pure returns (error)"}},"id":13303,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"11421:41:48","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_error","typeString":"error"}},"id":13304,"nodeType":"RevertStatement","src":"11414:48:48"}]}},{"expression":{"arguments":[{"id":13309,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":13288,"src":"11496:5:48","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":13308,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"11489:6:48","typeDescriptions":{"typeIdentifier":"t_type$_t_uint96_$","typeString":"type(uint96)"},"typeName":{"id":13307,"name":"uint96","nodeType":"ElementaryTypeName","src":"11489:6:48","typeDescriptions":{}}},"id":13310,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"11489:13:48","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint96","typeString":"uint96"}},"functionReturnParameters":13292,"id":13311,"nodeType":"Return","src":"11482:20:48"}]},"documentation":{"id":13286,"nodeType":"StructuredDocumentation","src":"11015:276:48","text":" @dev Returns the downcasted uint96 from uint256, reverting on\n overflow (when the input is greater than largest uint96).\n Counterpart to Solidity's `uint96` operator.\n Requirements:\n - input must fit into 96 bits"},"id":13313,"implemented":true,"kind":"function","modifiers":[],"name":"toUint96","nameLocation":"11305:8:48","nodeType":"FunctionDefinition","parameters":{"id":13289,"nodeType":"ParameterList","parameters":[{"constant":false,"id":13288,"mutability":"mutable","name":"value","nameLocation":"11322:5:48","nodeType":"VariableDeclaration","scope":13313,"src":"11314:13:48","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":13287,"name":"uint256","nodeType":"ElementaryTypeName","src":"11314:7:48","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"11313:15:48"},"returnParameters":{"id":13292,"nodeType":"ParameterList","parameters":[{"constant":false,"id":13291,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":13313,"src":"11352:6:48","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint96","typeString":"uint96"},"typeName":{"id":13290,"name":"uint96","nodeType":"ElementaryTypeName","src":"11352:6:48","typeDescriptions":{"typeIdentifier":"t_uint96","typeString":"uint96"}},"visibility":"internal"}],"src":"11351:8:48"},"scope":14491,"src":"11296:213:48","stateMutability":"pure","virtual":false,"visibility":"internal"},{"body":{"id":13340,"nodeType":"Block","src":"11860:149:48","statements":[{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":13327,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":13321,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":13316,"src":"11874:5:48","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">","rightExpression":{"expression":{"arguments":[{"id":13324,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"11887:6:48","typeDescriptions":{"typeIdentifier":"t_type$_t_uint88_$","typeString":"type(uint88)"},"typeName":{"id":13323,"name":"uint88","nodeType":"ElementaryTypeName","src":"11887:6:48","typeDescriptions":{}}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_type$_t_uint88_$","typeString":"type(uint88)"}],"id":13322,"name":"type","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-27,"src":"11882:4:48","typeDescriptions":{"typeIdentifier":"t_function_metatype_pure$__$returns$__$","typeString":"function () pure"}},"id":13325,"isConstant":false,"isLValue":false,"isPure":true,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"11882:12:48","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_magic_meta_type_t_uint88","typeString":"type(uint88)"}},"id":13326,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberLocation":"11895:3:48","memberName":"max","nodeType":"MemberAccess","src":"11882:16:48","typeDescriptions":{"typeIdentifier":"t_uint88","typeString":"uint88"}},"src":"11874:24:48","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":13334,"nodeType":"IfStatement","src":"11870:103:48","trueBody":{"id":13333,"nodeType":"Block","src":"11900:73:48","statements":[{"errorCall":{"arguments":[{"hexValue":"3838","id":13329,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"11952:2:48","typeDescriptions":{"typeIdentifier":"t_rational_88_by_1","typeString":"int_const 88"},"value":"88"},{"id":13330,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":13316,"src":"11956:5:48","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_rational_88_by_1","typeString":"int_const 88"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":13328,"name":"SafeCastOverflowedUintDowncast","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":12736,"src":"11921:30:48","typeDescriptions":{"typeIdentifier":"t_function_error_pure$_t_uint8_$_t_uint256_$returns$_t_error_$","typeString":"function (uint8,uint256) pure returns (error)"}},"id":13331,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"11921:41:48","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_error","typeString":"error"}},"id":13332,"nodeType":"RevertStatement","src":"11914:48:48"}]}},{"expression":{"arguments":[{"id":13337,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":13316,"src":"11996:5:48","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":13336,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"11989:6:48","typeDescriptions":{"typeIdentifier":"t_type$_t_uint88_$","typeString":"type(uint88)"},"typeName":{"id":13335,"name":"uint88","nodeType":"ElementaryTypeName","src":"11989:6:48","typeDescriptions":{}}},"id":13338,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"11989:13:48","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint88","typeString":"uint88"}},"functionReturnParameters":13320,"id":13339,"nodeType":"Return","src":"11982:20:48"}]},"documentation":{"id":13314,"nodeType":"StructuredDocumentation","src":"11515:276:48","text":" @dev Returns the downcasted uint88 from uint256, reverting on\n overflow (when the input is greater than largest uint88).\n Counterpart to Solidity's `uint88` operator.\n Requirements:\n - input must fit into 88 bits"},"id":13341,"implemented":true,"kind":"function","modifiers":[],"name":"toUint88","nameLocation":"11805:8:48","nodeType":"FunctionDefinition","parameters":{"id":13317,"nodeType":"ParameterList","parameters":[{"constant":false,"id":13316,"mutability":"mutable","name":"value","nameLocation":"11822:5:48","nodeType":"VariableDeclaration","scope":13341,"src":"11814:13:48","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":13315,"name":"uint256","nodeType":"ElementaryTypeName","src":"11814:7:48","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"11813:15:48"},"returnParameters":{"id":13320,"nodeType":"ParameterList","parameters":[{"constant":false,"id":13319,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":13341,"src":"11852:6:48","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint88","typeString":"uint88"},"typeName":{"id":13318,"name":"uint88","nodeType":"ElementaryTypeName","src":"11852:6:48","typeDescriptions":{"typeIdentifier":"t_uint88","typeString":"uint88"}},"visibility":"internal"}],"src":"11851:8:48"},"scope":14491,"src":"11796:213:48","stateMutability":"pure","virtual":false,"visibility":"internal"},{"body":{"id":13368,"nodeType":"Block","src":"12360:149:48","statements":[{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":13355,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":13349,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":13344,"src":"12374:5:48","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">","rightExpression":{"expression":{"arguments":[{"id":13352,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"12387:6:48","typeDescriptions":{"typeIdentifier":"t_type$_t_uint80_$","typeString":"type(uint80)"},"typeName":{"id":13351,"name":"uint80","nodeType":"ElementaryTypeName","src":"12387:6:48","typeDescriptions":{}}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_type$_t_uint80_$","typeString":"type(uint80)"}],"id":13350,"name":"type","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-27,"src":"12382:4:48","typeDescriptions":{"typeIdentifier":"t_function_metatype_pure$__$returns$__$","typeString":"function () pure"}},"id":13353,"isConstant":false,"isLValue":false,"isPure":true,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"12382:12:48","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_magic_meta_type_t_uint80","typeString":"type(uint80)"}},"id":13354,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberLocation":"12395:3:48","memberName":"max","nodeType":"MemberAccess","src":"12382:16:48","typeDescriptions":{"typeIdentifier":"t_uint80","typeString":"uint80"}},"src":"12374:24:48","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":13362,"nodeType":"IfStatement","src":"12370:103:48","trueBody":{"id":13361,"nodeType":"Block","src":"12400:73:48","statements":[{"errorCall":{"arguments":[{"hexValue":"3830","id":13357,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"12452:2:48","typeDescriptions":{"typeIdentifier":"t_rational_80_by_1","typeString":"int_const 80"},"value":"80"},{"id":13358,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":13344,"src":"12456:5:48","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_rational_80_by_1","typeString":"int_const 80"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":13356,"name":"SafeCastOverflowedUintDowncast","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":12736,"src":"12421:30:48","typeDescriptions":{"typeIdentifier":"t_function_error_pure$_t_uint8_$_t_uint256_$returns$_t_error_$","typeString":"function (uint8,uint256) pure returns (error)"}},"id":13359,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"12421:41:48","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_error","typeString":"error"}},"id":13360,"nodeType":"RevertStatement","src":"12414:48:48"}]}},{"expression":{"arguments":[{"id":13365,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":13344,"src":"12496:5:48","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":13364,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"12489:6:48","typeDescriptions":{"typeIdentifier":"t_type$_t_uint80_$","typeString":"type(uint80)"},"typeName":{"id":13363,"name":"uint80","nodeType":"ElementaryTypeName","src":"12489:6:48","typeDescriptions":{}}},"id":13366,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"12489:13:48","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint80","typeString":"uint80"}},"functionReturnParameters":13348,"id":13367,"nodeType":"Return","src":"12482:20:48"}]},"documentation":{"id":13342,"nodeType":"StructuredDocumentation","src":"12015:276:48","text":" @dev Returns the downcasted uint80 from uint256, reverting on\n overflow (when the input is greater than largest uint80).\n Counterpart to Solidity's `uint80` operator.\n Requirements:\n - input must fit into 80 bits"},"id":13369,"implemented":true,"kind":"function","modifiers":[],"name":"toUint80","nameLocation":"12305:8:48","nodeType":"FunctionDefinition","parameters":{"id":13345,"nodeType":"ParameterList","parameters":[{"constant":false,"id":13344,"mutability":"mutable","name":"value","nameLocation":"12322:5:48","nodeType":"VariableDeclaration","scope":13369,"src":"12314:13:48","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":13343,"name":"uint256","nodeType":"ElementaryTypeName","src":"12314:7:48","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"12313:15:48"},"returnParameters":{"id":13348,"nodeType":"ParameterList","parameters":[{"constant":false,"id":13347,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":13369,"src":"12352:6:48","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint80","typeString":"uint80"},"typeName":{"id":13346,"name":"uint80","nodeType":"ElementaryTypeName","src":"12352:6:48","typeDescriptions":{"typeIdentifier":"t_uint80","typeString":"uint80"}},"visibility":"internal"}],"src":"12351:8:48"},"scope":14491,"src":"12296:213:48","stateMutability":"pure","virtual":false,"visibility":"internal"},{"body":{"id":13396,"nodeType":"Block","src":"12860:149:48","statements":[{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":13383,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":13377,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":13372,"src":"12874:5:48","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">","rightExpression":{"expression":{"arguments":[{"id":13380,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"12887:6:48","typeDescriptions":{"typeIdentifier":"t_type$_t_uint72_$","typeString":"type(uint72)"},"typeName":{"id":13379,"name":"uint72","nodeType":"ElementaryTypeName","src":"12887:6:48","typeDescriptions":{}}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_type$_t_uint72_$","typeString":"type(uint72)"}],"id":13378,"name":"type","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-27,"src":"12882:4:48","typeDescriptions":{"typeIdentifier":"t_function_metatype_pure$__$returns$__$","typeString":"function () pure"}},"id":13381,"isConstant":false,"isLValue":false,"isPure":true,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"12882:12:48","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_magic_meta_type_t_uint72","typeString":"type(uint72)"}},"id":13382,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberLocation":"12895:3:48","memberName":"max","nodeType":"MemberAccess","src":"12882:16:48","typeDescriptions":{"typeIdentifier":"t_uint72","typeString":"uint72"}},"src":"12874:24:48","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":13390,"nodeType":"IfStatement","src":"12870:103:48","trueBody":{"id":13389,"nodeType":"Block","src":"12900:73:48","statements":[{"errorCall":{"arguments":[{"hexValue":"3732","id":13385,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"12952:2:48","typeDescriptions":{"typeIdentifier":"t_rational_72_by_1","typeString":"int_const 72"},"value":"72"},{"id":13386,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":13372,"src":"12956:5:48","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_rational_72_by_1","typeString":"int_const 72"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":13384,"name":"SafeCastOverflowedUintDowncast","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":12736,"src":"12921:30:48","typeDescriptions":{"typeIdentifier":"t_function_error_pure$_t_uint8_$_t_uint256_$returns$_t_error_$","typeString":"function (uint8,uint256) pure returns (error)"}},"id":13387,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"12921:41:48","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_error","typeString":"error"}},"id":13388,"nodeType":"RevertStatement","src":"12914:48:48"}]}},{"expression":{"arguments":[{"id":13393,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":13372,"src":"12996:5:48","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":13392,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"12989:6:48","typeDescriptions":{"typeIdentifier":"t_type$_t_uint72_$","typeString":"type(uint72)"},"typeName":{"id":13391,"name":"uint72","nodeType":"ElementaryTypeName","src":"12989:6:48","typeDescriptions":{}}},"id":13394,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"12989:13:48","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint72","typeString":"uint72"}},"functionReturnParameters":13376,"id":13395,"nodeType":"Return","src":"12982:20:48"}]},"documentation":{"id":13370,"nodeType":"StructuredDocumentation","src":"12515:276:48","text":" @dev Returns the downcasted uint72 from uint256, reverting on\n overflow (when the input is greater than largest uint72).\n Counterpart to Solidity's `uint72` operator.\n Requirements:\n - input must fit into 72 bits"},"id":13397,"implemented":true,"kind":"function","modifiers":[],"name":"toUint72","nameLocation":"12805:8:48","nodeType":"FunctionDefinition","parameters":{"id":13373,"nodeType":"ParameterList","parameters":[{"constant":false,"id":13372,"mutability":"mutable","name":"value","nameLocation":"12822:5:48","nodeType":"VariableDeclaration","scope":13397,"src":"12814:13:48","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":13371,"name":"uint256","nodeType":"ElementaryTypeName","src":"12814:7:48","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"12813:15:48"},"returnParameters":{"id":13376,"nodeType":"ParameterList","parameters":[{"constant":false,"id":13375,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":13397,"src":"12852:6:48","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint72","typeString":"uint72"},"typeName":{"id":13374,"name":"uint72","nodeType":"ElementaryTypeName","src":"12852:6:48","typeDescriptions":{"typeIdentifier":"t_uint72","typeString":"uint72"}},"visibility":"internal"}],"src":"12851:8:48"},"scope":14491,"src":"12796:213:48","stateMutability":"pure","virtual":false,"visibility":"internal"},{"body":{"id":13424,"nodeType":"Block","src":"13360:149:48","statements":[{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":13411,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":13405,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":13400,"src":"13374:5:48","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">","rightExpression":{"expression":{"arguments":[{"id":13408,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"13387:6:48","typeDescriptions":{"typeIdentifier":"t_type$_t_uint64_$","typeString":"type(uint64)"},"typeName":{"id":13407,"name":"uint64","nodeType":"ElementaryTypeName","src":"13387:6:48","typeDescriptions":{}}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_type$_t_uint64_$","typeString":"type(uint64)"}],"id":13406,"name":"type","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-27,"src":"13382:4:48","typeDescriptions":{"typeIdentifier":"t_function_metatype_pure$__$returns$__$","typeString":"function () pure"}},"id":13409,"isConstant":false,"isLValue":false,"isPure":true,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"13382:12:48","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_magic_meta_type_t_uint64","typeString":"type(uint64)"}},"id":13410,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberLocation":"13395:3:48","memberName":"max","nodeType":"MemberAccess","src":"13382:16:48","typeDescriptions":{"typeIdentifier":"t_uint64","typeString":"uint64"}},"src":"13374:24:48","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":13418,"nodeType":"IfStatement","src":"13370:103:48","trueBody":{"id":13417,"nodeType":"Block","src":"13400:73:48","statements":[{"errorCall":{"arguments":[{"hexValue":"3634","id":13413,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"13452:2:48","typeDescriptions":{"typeIdentifier":"t_rational_64_by_1","typeString":"int_const 64"},"value":"64"},{"id":13414,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":13400,"src":"13456:5:48","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_rational_64_by_1","typeString":"int_const 64"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":13412,"name":"SafeCastOverflowedUintDowncast","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":12736,"src":"13421:30:48","typeDescriptions":{"typeIdentifier":"t_function_error_pure$_t_uint8_$_t_uint256_$returns$_t_error_$","typeString":"function (uint8,uint256) pure returns (error)"}},"id":13415,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"13421:41:48","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_error","typeString":"error"}},"id":13416,"nodeType":"RevertStatement","src":"13414:48:48"}]}},{"expression":{"arguments":[{"id":13421,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":13400,"src":"13496:5:48","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":13420,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"13489:6:48","typeDescriptions":{"typeIdentifier":"t_type$_t_uint64_$","typeString":"type(uint64)"},"typeName":{"id":13419,"name":"uint64","nodeType":"ElementaryTypeName","src":"13489:6:48","typeDescriptions":{}}},"id":13422,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"13489:13:48","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint64","typeString":"uint64"}},"functionReturnParameters":13404,"id":13423,"nodeType":"Return","src":"13482:20:48"}]},"documentation":{"id":13398,"nodeType":"StructuredDocumentation","src":"13015:276:48","text":" @dev Returns the downcasted uint64 from uint256, reverting on\n overflow (when the input is greater than largest uint64).\n Counterpart to Solidity's `uint64` operator.\n Requirements:\n - input must fit into 64 bits"},"id":13425,"implemented":true,"kind":"function","modifiers":[],"name":"toUint64","nameLocation":"13305:8:48","nodeType":"FunctionDefinition","parameters":{"id":13401,"nodeType":"ParameterList","parameters":[{"constant":false,"id":13400,"mutability":"mutable","name":"value","nameLocation":"13322:5:48","nodeType":"VariableDeclaration","scope":13425,"src":"13314:13:48","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":13399,"name":"uint256","nodeType":"ElementaryTypeName","src":"13314:7:48","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"13313:15:48"},"returnParameters":{"id":13404,"nodeType":"ParameterList","parameters":[{"constant":false,"id":13403,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":13425,"src":"13352:6:48","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint64","typeString":"uint64"},"typeName":{"id":13402,"name":"uint64","nodeType":"ElementaryTypeName","src":"13352:6:48","typeDescriptions":{"typeIdentifier":"t_uint64","typeString":"uint64"}},"visibility":"internal"}],"src":"13351:8:48"},"scope":14491,"src":"13296:213:48","stateMutability":"pure","virtual":false,"visibility":"internal"},{"body":{"id":13452,"nodeType":"Block","src":"13860:149:48","statements":[{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":13439,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":13433,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":13428,"src":"13874:5:48","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">","rightExpression":{"expression":{"arguments":[{"id":13436,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"13887:6:48","typeDescriptions":{"typeIdentifier":"t_type$_t_uint56_$","typeString":"type(uint56)"},"typeName":{"id":13435,"name":"uint56","nodeType":"ElementaryTypeName","src":"13887:6:48","typeDescriptions":{}}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_type$_t_uint56_$","typeString":"type(uint56)"}],"id":13434,"name":"type","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-27,"src":"13882:4:48","typeDescriptions":{"typeIdentifier":"t_function_metatype_pure$__$returns$__$","typeString":"function () pure"}},"id":13437,"isConstant":false,"isLValue":false,"isPure":true,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"13882:12:48","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_magic_meta_type_t_uint56","typeString":"type(uint56)"}},"id":13438,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberLocation":"13895:3:48","memberName":"max","nodeType":"MemberAccess","src":"13882:16:48","typeDescriptions":{"typeIdentifier":"t_uint56","typeString":"uint56"}},"src":"13874:24:48","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":13446,"nodeType":"IfStatement","src":"13870:103:48","trueBody":{"id":13445,"nodeType":"Block","src":"13900:73:48","statements":[{"errorCall":{"arguments":[{"hexValue":"3536","id":13441,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"13952:2:48","typeDescriptions":{"typeIdentifier":"t_rational_56_by_1","typeString":"int_const 56"},"value":"56"},{"id":13442,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":13428,"src":"13956:5:48","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_rational_56_by_1","typeString":"int_const 56"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":13440,"name":"SafeCastOverflowedUintDowncast","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":12736,"src":"13921:30:48","typeDescriptions":{"typeIdentifier":"t_function_error_pure$_t_uint8_$_t_uint256_$returns$_t_error_$","typeString":"function (uint8,uint256) pure returns (error)"}},"id":13443,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"13921:41:48","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_error","typeString":"error"}},"id":13444,"nodeType":"RevertStatement","src":"13914:48:48"}]}},{"expression":{"arguments":[{"id":13449,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":13428,"src":"13996:5:48","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":13448,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"13989:6:48","typeDescriptions":{"typeIdentifier":"t_type$_t_uint56_$","typeString":"type(uint56)"},"typeName":{"id":13447,"name":"uint56","nodeType":"ElementaryTypeName","src":"13989:6:48","typeDescriptions":{}}},"id":13450,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"13989:13:48","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint56","typeString":"uint56"}},"functionReturnParameters":13432,"id":13451,"nodeType":"Return","src":"13982:20:48"}]},"documentation":{"id":13426,"nodeType":"StructuredDocumentation","src":"13515:276:48","text":" @dev Returns the downcasted uint56 from uint256, reverting on\n overflow (when the input is greater than largest uint56).\n Counterpart to Solidity's `uint56` operator.\n Requirements:\n - input must fit into 56 bits"},"id":13453,"implemented":true,"kind":"function","modifiers":[],"name":"toUint56","nameLocation":"13805:8:48","nodeType":"FunctionDefinition","parameters":{"id":13429,"nodeType":"ParameterList","parameters":[{"constant":false,"id":13428,"mutability":"mutable","name":"value","nameLocation":"13822:5:48","nodeType":"VariableDeclaration","scope":13453,"src":"13814:13:48","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":13427,"name":"uint256","nodeType":"ElementaryTypeName","src":"13814:7:48","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"13813:15:48"},"returnParameters":{"id":13432,"nodeType":"ParameterList","parameters":[{"constant":false,"id":13431,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":13453,"src":"13852:6:48","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint56","typeString":"uint56"},"typeName":{"id":13430,"name":"uint56","nodeType":"ElementaryTypeName","src":"13852:6:48","typeDescriptions":{"typeIdentifier":"t_uint56","typeString":"uint56"}},"visibility":"internal"}],"src":"13851:8:48"},"scope":14491,"src":"13796:213:48","stateMutability":"pure","virtual":false,"visibility":"internal"},{"body":{"id":13480,"nodeType":"Block","src":"14360:149:48","statements":[{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":13467,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":13461,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":13456,"src":"14374:5:48","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">","rightExpression":{"expression":{"arguments":[{"id":13464,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"14387:6:48","typeDescriptions":{"typeIdentifier":"t_type$_t_uint48_$","typeString":"type(uint48)"},"typeName":{"id":13463,"name":"uint48","nodeType":"ElementaryTypeName","src":"14387:6:48","typeDescriptions":{}}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_type$_t_uint48_$","typeString":"type(uint48)"}],"id":13462,"name":"type","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-27,"src":"14382:4:48","typeDescriptions":{"typeIdentifier":"t_function_metatype_pure$__$returns$__$","typeString":"function () pure"}},"id":13465,"isConstant":false,"isLValue":false,"isPure":true,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"14382:12:48","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_magic_meta_type_t_uint48","typeString":"type(uint48)"}},"id":13466,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberLocation":"14395:3:48","memberName":"max","nodeType":"MemberAccess","src":"14382:16:48","typeDescriptions":{"typeIdentifier":"t_uint48","typeString":"uint48"}},"src":"14374:24:48","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":13474,"nodeType":"IfStatement","src":"14370:103:48","trueBody":{"id":13473,"nodeType":"Block","src":"14400:73:48","statements":[{"errorCall":{"arguments":[{"hexValue":"3438","id":13469,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"14452:2:48","typeDescriptions":{"typeIdentifier":"t_rational_48_by_1","typeString":"int_const 48"},"value":"48"},{"id":13470,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":13456,"src":"14456:5:48","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_rational_48_by_1","typeString":"int_const 48"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":13468,"name":"SafeCastOverflowedUintDowncast","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":12736,"src":"14421:30:48","typeDescriptions":{"typeIdentifier":"t_function_error_pure$_t_uint8_$_t_uint256_$returns$_t_error_$","typeString":"function (uint8,uint256) pure returns (error)"}},"id":13471,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"14421:41:48","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_error","typeString":"error"}},"id":13472,"nodeType":"RevertStatement","src":"14414:48:48"}]}},{"expression":{"arguments":[{"id":13477,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":13456,"src":"14496:5:48","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":13476,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"14489:6:48","typeDescriptions":{"typeIdentifier":"t_type$_t_uint48_$","typeString":"type(uint48)"},"typeName":{"id":13475,"name":"uint48","nodeType":"ElementaryTypeName","src":"14489:6:48","typeDescriptions":{}}},"id":13478,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"14489:13:48","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint48","typeString":"uint48"}},"functionReturnParameters":13460,"id":13479,"nodeType":"Return","src":"14482:20:48"}]},"documentation":{"id":13454,"nodeType":"StructuredDocumentation","src":"14015:276:48","text":" @dev Returns the downcasted uint48 from uint256, reverting on\n overflow (when the input is greater than largest uint48).\n Counterpart to Solidity's `uint48` operator.\n Requirements:\n - input must fit into 48 bits"},"id":13481,"implemented":true,"kind":"function","modifiers":[],"name":"toUint48","nameLocation":"14305:8:48","nodeType":"FunctionDefinition","parameters":{"id":13457,"nodeType":"ParameterList","parameters":[{"constant":false,"id":13456,"mutability":"mutable","name":"value","nameLocation":"14322:5:48","nodeType":"VariableDeclaration","scope":13481,"src":"14314:13:48","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":13455,"name":"uint256","nodeType":"ElementaryTypeName","src":"14314:7:48","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"14313:15:48"},"returnParameters":{"id":13460,"nodeType":"ParameterList","parameters":[{"constant":false,"id":13459,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":13481,"src":"14352:6:48","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint48","typeString":"uint48"},"typeName":{"id":13458,"name":"uint48","nodeType":"ElementaryTypeName","src":"14352:6:48","typeDescriptions":{"typeIdentifier":"t_uint48","typeString":"uint48"}},"visibility":"internal"}],"src":"14351:8:48"},"scope":14491,"src":"14296:213:48","stateMutability":"pure","virtual":false,"visibility":"internal"},{"body":{"id":13508,"nodeType":"Block","src":"14860:149:48","statements":[{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":13495,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":13489,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":13484,"src":"14874:5:48","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">","rightExpression":{"expression":{"arguments":[{"id":13492,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"14887:6:48","typeDescriptions":{"typeIdentifier":"t_type$_t_uint40_$","typeString":"type(uint40)"},"typeName":{"id":13491,"name":"uint40","nodeType":"ElementaryTypeName","src":"14887:6:48","typeDescriptions":{}}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_type$_t_uint40_$","typeString":"type(uint40)"}],"id":13490,"name":"type","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-27,"src":"14882:4:48","typeDescriptions":{"typeIdentifier":"t_function_metatype_pure$__$returns$__$","typeString":"function () pure"}},"id":13493,"isConstant":false,"isLValue":false,"isPure":true,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"14882:12:48","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_magic_meta_type_t_uint40","typeString":"type(uint40)"}},"id":13494,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberLocation":"14895:3:48","memberName":"max","nodeType":"MemberAccess","src":"14882:16:48","typeDescriptions":{"typeIdentifier":"t_uint40","typeString":"uint40"}},"src":"14874:24:48","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":13502,"nodeType":"IfStatement","src":"14870:103:48","trueBody":{"id":13501,"nodeType":"Block","src":"14900:73:48","statements":[{"errorCall":{"arguments":[{"hexValue":"3430","id":13497,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"14952:2:48","typeDescriptions":{"typeIdentifier":"t_rational_40_by_1","typeString":"int_const 40"},"value":"40"},{"id":13498,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":13484,"src":"14956:5:48","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_rational_40_by_1","typeString":"int_const 40"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":13496,"name":"SafeCastOverflowedUintDowncast","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":12736,"src":"14921:30:48","typeDescriptions":{"typeIdentifier":"t_function_error_pure$_t_uint8_$_t_uint256_$returns$_t_error_$","typeString":"function (uint8,uint256) pure returns (error)"}},"id":13499,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"14921:41:48","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_error","typeString":"error"}},"id":13500,"nodeType":"RevertStatement","src":"14914:48:48"}]}},{"expression":{"arguments":[{"id":13505,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":13484,"src":"14996:5:48","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":13504,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"14989:6:48","typeDescriptions":{"typeIdentifier":"t_type$_t_uint40_$","typeString":"type(uint40)"},"typeName":{"id":13503,"name":"uint40","nodeType":"ElementaryTypeName","src":"14989:6:48","typeDescriptions":{}}},"id":13506,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"14989:13:48","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint40","typeString":"uint40"}},"functionReturnParameters":13488,"id":13507,"nodeType":"Return","src":"14982:20:48"}]},"documentation":{"id":13482,"nodeType":"StructuredDocumentation","src":"14515:276:48","text":" @dev Returns the downcasted uint40 from uint256, reverting on\n overflow (when the input is greater than largest uint40).\n Counterpart to Solidity's `uint40` operator.\n Requirements:\n - input must fit into 40 bits"},"id":13509,"implemented":true,"kind":"function","modifiers":[],"name":"toUint40","nameLocation":"14805:8:48","nodeType":"FunctionDefinition","parameters":{"id":13485,"nodeType":"ParameterList","parameters":[{"constant":false,"id":13484,"mutability":"mutable","name":"value","nameLocation":"14822:5:48","nodeType":"VariableDeclaration","scope":13509,"src":"14814:13:48","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":13483,"name":"uint256","nodeType":"ElementaryTypeName","src":"14814:7:48","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"14813:15:48"},"returnParameters":{"id":13488,"nodeType":"ParameterList","parameters":[{"constant":false,"id":13487,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":13509,"src":"14852:6:48","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint40","typeString":"uint40"},"typeName":{"id":13486,"name":"uint40","nodeType":"ElementaryTypeName","src":"14852:6:48","typeDescriptions":{"typeIdentifier":"t_uint40","typeString":"uint40"}},"visibility":"internal"}],"src":"14851:8:48"},"scope":14491,"src":"14796:213:48","stateMutability":"pure","virtual":false,"visibility":"internal"},{"body":{"id":13536,"nodeType":"Block","src":"15360:149:48","statements":[{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":13523,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":13517,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":13512,"src":"15374:5:48","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">","rightExpression":{"expression":{"arguments":[{"id":13520,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"15387:6:48","typeDescriptions":{"typeIdentifier":"t_type$_t_uint32_$","typeString":"type(uint32)"},"typeName":{"id":13519,"name":"uint32","nodeType":"ElementaryTypeName","src":"15387:6:48","typeDescriptions":{}}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_type$_t_uint32_$","typeString":"type(uint32)"}],"id":13518,"name":"type","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-27,"src":"15382:4:48","typeDescriptions":{"typeIdentifier":"t_function_metatype_pure$__$returns$__$","typeString":"function () pure"}},"id":13521,"isConstant":false,"isLValue":false,"isPure":true,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"15382:12:48","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_magic_meta_type_t_uint32","typeString":"type(uint32)"}},"id":13522,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberLocation":"15395:3:48","memberName":"max","nodeType":"MemberAccess","src":"15382:16:48","typeDescriptions":{"typeIdentifier":"t_uint32","typeString":"uint32"}},"src":"15374:24:48","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":13530,"nodeType":"IfStatement","src":"15370:103:48","trueBody":{"id":13529,"nodeType":"Block","src":"15400:73:48","statements":[{"errorCall":{"arguments":[{"hexValue":"3332","id":13525,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"15452:2:48","typeDescriptions":{"typeIdentifier":"t_rational_32_by_1","typeString":"int_const 32"},"value":"32"},{"id":13526,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":13512,"src":"15456:5:48","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_rational_32_by_1","typeString":"int_const 32"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":13524,"name":"SafeCastOverflowedUintDowncast","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":12736,"src":"15421:30:48","typeDescriptions":{"typeIdentifier":"t_function_error_pure$_t_uint8_$_t_uint256_$returns$_t_error_$","typeString":"function (uint8,uint256) pure returns (error)"}},"id":13527,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"15421:41:48","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_error","typeString":"error"}},"id":13528,"nodeType":"RevertStatement","src":"15414:48:48"}]}},{"expression":{"arguments":[{"id":13533,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":13512,"src":"15496:5:48","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":13532,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"15489:6:48","typeDescriptions":{"typeIdentifier":"t_type$_t_uint32_$","typeString":"type(uint32)"},"typeName":{"id":13531,"name":"uint32","nodeType":"ElementaryTypeName","src":"15489:6:48","typeDescriptions":{}}},"id":13534,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"15489:13:48","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint32","typeString":"uint32"}},"functionReturnParameters":13516,"id":13535,"nodeType":"Return","src":"15482:20:48"}]},"documentation":{"id":13510,"nodeType":"StructuredDocumentation","src":"15015:276:48","text":" @dev Returns the downcasted uint32 from uint256, reverting on\n overflow (when the input is greater than largest uint32).\n Counterpart to Solidity's `uint32` operator.\n Requirements:\n - input must fit into 32 bits"},"id":13537,"implemented":true,"kind":"function","modifiers":[],"name":"toUint32","nameLocation":"15305:8:48","nodeType":"FunctionDefinition","parameters":{"id":13513,"nodeType":"ParameterList","parameters":[{"constant":false,"id":13512,"mutability":"mutable","name":"value","nameLocation":"15322:5:48","nodeType":"VariableDeclaration","scope":13537,"src":"15314:13:48","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":13511,"name":"uint256","nodeType":"ElementaryTypeName","src":"15314:7:48","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"15313:15:48"},"returnParameters":{"id":13516,"nodeType":"ParameterList","parameters":[{"constant":false,"id":13515,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":13537,"src":"15352:6:48","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint32","typeString":"uint32"},"typeName":{"id":13514,"name":"uint32","nodeType":"ElementaryTypeName","src":"15352:6:48","typeDescriptions":{"typeIdentifier":"t_uint32","typeString":"uint32"}},"visibility":"internal"}],"src":"15351:8:48"},"scope":14491,"src":"15296:213:48","stateMutability":"pure","virtual":false,"visibility":"internal"},{"body":{"id":13564,"nodeType":"Block","src":"15860:149:48","statements":[{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":13551,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":13545,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":13540,"src":"15874:5:48","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">","rightExpression":{"expression":{"arguments":[{"id":13548,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"15887:6:48","typeDescriptions":{"typeIdentifier":"t_type$_t_uint24_$","typeString":"type(uint24)"},"typeName":{"id":13547,"name":"uint24","nodeType":"ElementaryTypeName","src":"15887:6:48","typeDescriptions":{}}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_type$_t_uint24_$","typeString":"type(uint24)"}],"id":13546,"name":"type","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-27,"src":"15882:4:48","typeDescriptions":{"typeIdentifier":"t_function_metatype_pure$__$returns$__$","typeString":"function () pure"}},"id":13549,"isConstant":false,"isLValue":false,"isPure":true,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"15882:12:48","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_magic_meta_type_t_uint24","typeString":"type(uint24)"}},"id":13550,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberLocation":"15895:3:48","memberName":"max","nodeType":"MemberAccess","src":"15882:16:48","typeDescriptions":{"typeIdentifier":"t_uint24","typeString":"uint24"}},"src":"15874:24:48","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":13558,"nodeType":"IfStatement","src":"15870:103:48","trueBody":{"id":13557,"nodeType":"Block","src":"15900:73:48","statements":[{"errorCall":{"arguments":[{"hexValue":"3234","id":13553,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"15952:2:48","typeDescriptions":{"typeIdentifier":"t_rational_24_by_1","typeString":"int_const 24"},"value":"24"},{"id":13554,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":13540,"src":"15956:5:48","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_rational_24_by_1","typeString":"int_const 24"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":13552,"name":"SafeCastOverflowedUintDowncast","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":12736,"src":"15921:30:48","typeDescriptions":{"typeIdentifier":"t_function_error_pure$_t_uint8_$_t_uint256_$returns$_t_error_$","typeString":"function (uint8,uint256) pure returns (error)"}},"id":13555,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"15921:41:48","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_error","typeString":"error"}},"id":13556,"nodeType":"RevertStatement","src":"15914:48:48"}]}},{"expression":{"arguments":[{"id":13561,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":13540,"src":"15996:5:48","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":13560,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"15989:6:48","typeDescriptions":{"typeIdentifier":"t_type$_t_uint24_$","typeString":"type(uint24)"},"typeName":{"id":13559,"name":"uint24","nodeType":"ElementaryTypeName","src":"15989:6:48","typeDescriptions":{}}},"id":13562,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"15989:13:48","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint24","typeString":"uint24"}},"functionReturnParameters":13544,"id":13563,"nodeType":"Return","src":"15982:20:48"}]},"documentation":{"id":13538,"nodeType":"StructuredDocumentation","src":"15515:276:48","text":" @dev Returns the downcasted uint24 from uint256, reverting on\n overflow (when the input is greater than largest uint24).\n Counterpart to Solidity's `uint24` operator.\n Requirements:\n - input must fit into 24 bits"},"id":13565,"implemented":true,"kind":"function","modifiers":[],"name":"toUint24","nameLocation":"15805:8:48","nodeType":"FunctionDefinition","parameters":{"id":13541,"nodeType":"ParameterList","parameters":[{"constant":false,"id":13540,"mutability":"mutable","name":"value","nameLocation":"15822:5:48","nodeType":"VariableDeclaration","scope":13565,"src":"15814:13:48","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":13539,"name":"uint256","nodeType":"ElementaryTypeName","src":"15814:7:48","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"15813:15:48"},"returnParameters":{"id":13544,"nodeType":"ParameterList","parameters":[{"constant":false,"id":13543,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":13565,"src":"15852:6:48","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint24","typeString":"uint24"},"typeName":{"id":13542,"name":"uint24","nodeType":"ElementaryTypeName","src":"15852:6:48","typeDescriptions":{"typeIdentifier":"t_uint24","typeString":"uint24"}},"visibility":"internal"}],"src":"15851:8:48"},"scope":14491,"src":"15796:213:48","stateMutability":"pure","virtual":false,"visibility":"internal"},{"body":{"id":13592,"nodeType":"Block","src":"16360:149:48","statements":[{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":13579,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":13573,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":13568,"src":"16374:5:48","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">","rightExpression":{"expression":{"arguments":[{"id":13576,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"16387:6:48","typeDescriptions":{"typeIdentifier":"t_type$_t_uint16_$","typeString":"type(uint16)"},"typeName":{"id":13575,"name":"uint16","nodeType":"ElementaryTypeName","src":"16387:6:48","typeDescriptions":{}}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_type$_t_uint16_$","typeString":"type(uint16)"}],"id":13574,"name":"type","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-27,"src":"16382:4:48","typeDescriptions":{"typeIdentifier":"t_function_metatype_pure$__$returns$__$","typeString":"function () pure"}},"id":13577,"isConstant":false,"isLValue":false,"isPure":true,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"16382:12:48","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_magic_meta_type_t_uint16","typeString":"type(uint16)"}},"id":13578,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberLocation":"16395:3:48","memberName":"max","nodeType":"MemberAccess","src":"16382:16:48","typeDescriptions":{"typeIdentifier":"t_uint16","typeString":"uint16"}},"src":"16374:24:48","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":13586,"nodeType":"IfStatement","src":"16370:103:48","trueBody":{"id":13585,"nodeType":"Block","src":"16400:73:48","statements":[{"errorCall":{"arguments":[{"hexValue":"3136","id":13581,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"16452:2:48","typeDescriptions":{"typeIdentifier":"t_rational_16_by_1","typeString":"int_const 16"},"value":"16"},{"id":13582,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":13568,"src":"16456:5:48","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_rational_16_by_1","typeString":"int_const 16"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":13580,"name":"SafeCastOverflowedUintDowncast","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":12736,"src":"16421:30:48","typeDescriptions":{"typeIdentifier":"t_function_error_pure$_t_uint8_$_t_uint256_$returns$_t_error_$","typeString":"function (uint8,uint256) pure returns (error)"}},"id":13583,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"16421:41:48","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_error","typeString":"error"}},"id":13584,"nodeType":"RevertStatement","src":"16414:48:48"}]}},{"expression":{"arguments":[{"id":13589,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":13568,"src":"16496:5:48","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":13588,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"16489:6:48","typeDescriptions":{"typeIdentifier":"t_type$_t_uint16_$","typeString":"type(uint16)"},"typeName":{"id":13587,"name":"uint16","nodeType":"ElementaryTypeName","src":"16489:6:48","typeDescriptions":{}}},"id":13590,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"16489:13:48","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint16","typeString":"uint16"}},"functionReturnParameters":13572,"id":13591,"nodeType":"Return","src":"16482:20:48"}]},"documentation":{"id":13566,"nodeType":"StructuredDocumentation","src":"16015:276:48","text":" @dev Returns the downcasted uint16 from uint256, reverting on\n overflow (when the input is greater than largest uint16).\n Counterpart to Solidity's `uint16` operator.\n Requirements:\n - input must fit into 16 bits"},"id":13593,"implemented":true,"kind":"function","modifiers":[],"name":"toUint16","nameLocation":"16305:8:48","nodeType":"FunctionDefinition","parameters":{"id":13569,"nodeType":"ParameterList","parameters":[{"constant":false,"id":13568,"mutability":"mutable","name":"value","nameLocation":"16322:5:48","nodeType":"VariableDeclaration","scope":13593,"src":"16314:13:48","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":13567,"name":"uint256","nodeType":"ElementaryTypeName","src":"16314:7:48","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"16313:15:48"},"returnParameters":{"id":13572,"nodeType":"ParameterList","parameters":[{"constant":false,"id":13571,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":13593,"src":"16352:6:48","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint16","typeString":"uint16"},"typeName":{"id":13570,"name":"uint16","nodeType":"ElementaryTypeName","src":"16352:6:48","typeDescriptions":{"typeIdentifier":"t_uint16","typeString":"uint16"}},"visibility":"internal"}],"src":"16351:8:48"},"scope":14491,"src":"16296:213:48","stateMutability":"pure","virtual":false,"visibility":"internal"},{"body":{"id":13620,"nodeType":"Block","src":"16854:146:48","statements":[{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":13607,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":13601,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":13596,"src":"16868:5:48","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">","rightExpression":{"expression":{"arguments":[{"id":13604,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"16881:5:48","typeDescriptions":{"typeIdentifier":"t_type$_t_uint8_$","typeString":"type(uint8)"},"typeName":{"id":13603,"name":"uint8","nodeType":"ElementaryTypeName","src":"16881:5:48","typeDescriptions":{}}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_type$_t_uint8_$","typeString":"type(uint8)"}],"id":13602,"name":"type","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-27,"src":"16876:4:48","typeDescriptions":{"typeIdentifier":"t_function_metatype_pure$__$returns$__$","typeString":"function () pure"}},"id":13605,"isConstant":false,"isLValue":false,"isPure":true,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"16876:11:48","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_magic_meta_type_t_uint8","typeString":"type(uint8)"}},"id":13606,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberLocation":"16888:3:48","memberName":"max","nodeType":"MemberAccess","src":"16876:15:48","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}},"src":"16868:23:48","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":13614,"nodeType":"IfStatement","src":"16864:101:48","trueBody":{"id":13613,"nodeType":"Block","src":"16893:72:48","statements":[{"errorCall":{"arguments":[{"hexValue":"38","id":13609,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"16945:1:48","typeDescriptions":{"typeIdentifier":"t_rational_8_by_1","typeString":"int_const 8"},"value":"8"},{"id":13610,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":13596,"src":"16948:5:48","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_rational_8_by_1","typeString":"int_const 8"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":13608,"name":"SafeCastOverflowedUintDowncast","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":12736,"src":"16914:30:48","typeDescriptions":{"typeIdentifier":"t_function_error_pure$_t_uint8_$_t_uint256_$returns$_t_error_$","typeString":"function (uint8,uint256) pure returns (error)"}},"id":13611,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"16914:40:48","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_error","typeString":"error"}},"id":13612,"nodeType":"RevertStatement","src":"16907:47:48"}]}},{"expression":{"arguments":[{"id":13617,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":13596,"src":"16987:5:48","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":13616,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"16981:5:48","typeDescriptions":{"typeIdentifier":"t_type$_t_uint8_$","typeString":"type(uint8)"},"typeName":{"id":13615,"name":"uint8","nodeType":"ElementaryTypeName","src":"16981:5:48","typeDescriptions":{}}},"id":13618,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"16981:12:48","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}},"functionReturnParameters":13600,"id":13619,"nodeType":"Return","src":"16974:19:48"}]},"documentation":{"id":13594,"nodeType":"StructuredDocumentation","src":"16515:272:48","text":" @dev Returns the downcasted uint8 from uint256, reverting on\n overflow (when the input is greater than largest uint8).\n Counterpart to Solidity's `uint8` operator.\n Requirements:\n - input must fit into 8 bits"},"id":13621,"implemented":true,"kind":"function","modifiers":[],"name":"toUint8","nameLocation":"16801:7:48","nodeType":"FunctionDefinition","parameters":{"id":13597,"nodeType":"ParameterList","parameters":[{"constant":false,"id":13596,"mutability":"mutable","name":"value","nameLocation":"16817:5:48","nodeType":"VariableDeclaration","scope":13621,"src":"16809:13:48","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":13595,"name":"uint256","nodeType":"ElementaryTypeName","src":"16809:7:48","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"16808:15:48"},"returnParameters":{"id":13600,"nodeType":"ParameterList","parameters":[{"constant":false,"id":13599,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":13621,"src":"16847:5:48","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"},"typeName":{"id":13598,"name":"uint8","nodeType":"ElementaryTypeName","src":"16847:5:48","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}},"visibility":"internal"}],"src":"16846:7:48"},"scope":14491,"src":"16792:208:48","stateMutability":"pure","virtual":false,"visibility":"internal"},{"body":{"id":13643,"nodeType":"Block","src":"17236:128:48","statements":[{"condition":{"commonType":{"typeIdentifier":"t_int256","typeString":"int256"},"id":13631,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":13629,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":13624,"src":"17250:5:48","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"nodeType":"BinaryOperation","operator":"<","rightExpression":{"hexValue":"30","id":13630,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"17258:1:48","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"17250:9:48","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":13637,"nodeType":"IfStatement","src":"17246:81:48","trueBody":{"id":13636,"nodeType":"Block","src":"17261:66:48","statements":[{"errorCall":{"arguments":[{"id":13633,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":13624,"src":"17310:5:48","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_int256","typeString":"int256"}],"id":13632,"name":"SafeCastOverflowedIntToUint","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":12741,"src":"17282:27:48","typeDescriptions":{"typeIdentifier":"t_function_error_pure$_t_int256_$returns$_t_error_$","typeString":"function (int256) pure returns (error)"}},"id":13634,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"17282:34:48","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_error","typeString":"error"}},"id":13635,"nodeType":"RevertStatement","src":"17275:41:48"}]}},{"expression":{"arguments":[{"id":13640,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":13624,"src":"17351:5:48","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_int256","typeString":"int256"}],"id":13639,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"17343:7:48","typeDescriptions":{"typeIdentifier":"t_type$_t_uint256_$","typeString":"type(uint256)"},"typeName":{"id":13638,"name":"uint256","nodeType":"ElementaryTypeName","src":"17343:7:48","typeDescriptions":{}}},"id":13641,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"17343:14:48","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"functionReturnParameters":13628,"id":13642,"nodeType":"Return","src":"17336:21:48"}]},"documentation":{"id":13622,"nodeType":"StructuredDocumentation","src":"17006:160:48","text":" @dev Converts a signed int256 into an unsigned uint256.\n Requirements:\n - input must be greater than or equal to 0."},"id":13644,"implemented":true,"kind":"function","modifiers":[],"name":"toUint256","nameLocation":"17180:9:48","nodeType":"FunctionDefinition","parameters":{"id":13625,"nodeType":"ParameterList","parameters":[{"constant":false,"id":13624,"mutability":"mutable","name":"value","nameLocation":"17197:5:48","nodeType":"VariableDeclaration","scope":13644,"src":"17190:12:48","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"},"typeName":{"id":13623,"name":"int256","nodeType":"ElementaryTypeName","src":"17190:6:48","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"visibility":"internal"}],"src":"17189:14:48"},"returnParameters":{"id":13628,"nodeType":"ParameterList","parameters":[{"constant":false,"id":13627,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":13644,"src":"17227:7:48","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":13626,"name":"uint256","nodeType":"ElementaryTypeName","src":"17227:7:48","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"17226:9:48"},"scope":14491,"src":"17171:193:48","stateMutability":"pure","virtual":false,"visibility":"internal"},{"body":{"id":13669,"nodeType":"Block","src":"17761:150:48","statements":[{"expression":{"id":13657,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":13652,"name":"downcasted","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":13650,"src":"17771:10:48","typeDescriptions":{"typeIdentifier":"t_int248","typeString":"int248"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"arguments":[{"id":13655,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":13647,"src":"17791:5:48","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_int256","typeString":"int256"}],"id":13654,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"17784:6:48","typeDescriptions":{"typeIdentifier":"t_type$_t_int248_$","typeString":"type(int248)"},"typeName":{"id":13653,"name":"int248","nodeType":"ElementaryTypeName","src":"17784:6:48","typeDescriptions":{}}},"id":13656,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"17784:13:48","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_int248","typeString":"int248"}},"src":"17771:26:48","typeDescriptions":{"typeIdentifier":"t_int248","typeString":"int248"}},"id":13658,"nodeType":"ExpressionStatement","src":"17771:26:48"},{"condition":{"commonType":{"typeIdentifier":"t_int256","typeString":"int256"},"id":13661,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":13659,"name":"downcasted","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":13650,"src":"17811:10:48","typeDescriptions":{"typeIdentifier":"t_int248","typeString":"int248"}},"nodeType":"BinaryOperation","operator":"!=","rightExpression":{"id":13660,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":13647,"src":"17825:5:48","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"src":"17811:19:48","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":13668,"nodeType":"IfStatement","src":"17807:98:48","trueBody":{"id":13667,"nodeType":"Block","src":"17832:73:48","statements":[{"errorCall":{"arguments":[{"hexValue":"323438","id":13663,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"17883:3:48","typeDescriptions":{"typeIdentifier":"t_rational_248_by_1","typeString":"int_const 248"},"value":"248"},{"id":13664,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":13647,"src":"17888:5:48","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_rational_248_by_1","typeString":"int_const 248"},{"typeIdentifier":"t_int256","typeString":"int256"}],"id":13662,"name":"SafeCastOverflowedIntDowncast","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":12748,"src":"17853:29:48","typeDescriptions":{"typeIdentifier":"t_function_error_pure$_t_uint8_$_t_int256_$returns$_t_error_$","typeString":"function (uint8,int256) pure returns (error)"}},"id":13665,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"17853:41:48","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_error","typeString":"error"}},"id":13666,"nodeType":"RevertStatement","src":"17846:48:48"}]}}]},"documentation":{"id":13645,"nodeType":"StructuredDocumentation","src":"17370:312:48","text":" @dev Returns the downcasted int248 from int256, reverting on\n overflow (when the input is less than smallest int248 or\n greater than largest int248).\n Counterpart to Solidity's `int248` operator.\n Requirements:\n - input must fit into 248 bits"},"id":13670,"implemented":true,"kind":"function","modifiers":[],"name":"toInt248","nameLocation":"17696:8:48","nodeType":"FunctionDefinition","parameters":{"id":13648,"nodeType":"ParameterList","parameters":[{"constant":false,"id":13647,"mutability":"mutable","name":"value","nameLocation":"17712:5:48","nodeType":"VariableDeclaration","scope":13670,"src":"17705:12:48","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"},"typeName":{"id":13646,"name":"int256","nodeType":"ElementaryTypeName","src":"17705:6:48","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"visibility":"internal"}],"src":"17704:14:48"},"returnParameters":{"id":13651,"nodeType":"ParameterList","parameters":[{"constant":false,"id":13650,"mutability":"mutable","name":"downcasted","nameLocation":"17749:10:48","nodeType":"VariableDeclaration","scope":13670,"src":"17742:17:48","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_int248","typeString":"int248"},"typeName":{"id":13649,"name":"int248","nodeType":"ElementaryTypeName","src":"17742:6:48","typeDescriptions":{"typeIdentifier":"t_int248","typeString":"int248"}},"visibility":"internal"}],"src":"17741:19:48"},"scope":14491,"src":"17687:224:48","stateMutability":"pure","virtual":false,"visibility":"internal"},{"body":{"id":13695,"nodeType":"Block","src":"18308:150:48","statements":[{"expression":{"id":13683,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":13678,"name":"downcasted","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":13676,"src":"18318:10:48","typeDescriptions":{"typeIdentifier":"t_int240","typeString":"int240"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"arguments":[{"id":13681,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":13673,"src":"18338:5:48","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_int256","typeString":"int256"}],"id":13680,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"18331:6:48","typeDescriptions":{"typeIdentifier":"t_type$_t_int240_$","typeString":"type(int240)"},"typeName":{"id":13679,"name":"int240","nodeType":"ElementaryTypeName","src":"18331:6:48","typeDescriptions":{}}},"id":13682,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"18331:13:48","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_int240","typeString":"int240"}},"src":"18318:26:48","typeDescriptions":{"typeIdentifier":"t_int240","typeString":"int240"}},"id":13684,"nodeType":"ExpressionStatement","src":"18318:26:48"},{"condition":{"commonType":{"typeIdentifier":"t_int256","typeString":"int256"},"id":13687,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":13685,"name":"downcasted","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":13676,"src":"18358:10:48","typeDescriptions":{"typeIdentifier":"t_int240","typeString":"int240"}},"nodeType":"BinaryOperation","operator":"!=","rightExpression":{"id":13686,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":13673,"src":"18372:5:48","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"src":"18358:19:48","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":13694,"nodeType":"IfStatement","src":"18354:98:48","trueBody":{"id":13693,"nodeType":"Block","src":"18379:73:48","statements":[{"errorCall":{"arguments":[{"hexValue":"323430","id":13689,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"18430:3:48","typeDescriptions":{"typeIdentifier":"t_rational_240_by_1","typeString":"int_const 240"},"value":"240"},{"id":13690,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":13673,"src":"18435:5:48","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_rational_240_by_1","typeString":"int_const 240"},{"typeIdentifier":"t_int256","typeString":"int256"}],"id":13688,"name":"SafeCastOverflowedIntDowncast","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":12748,"src":"18400:29:48","typeDescriptions":{"typeIdentifier":"t_function_error_pure$_t_uint8_$_t_int256_$returns$_t_error_$","typeString":"function (uint8,int256) pure returns (error)"}},"id":13691,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"18400:41:48","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_error","typeString":"error"}},"id":13692,"nodeType":"RevertStatement","src":"18393:48:48"}]}}]},"documentation":{"id":13671,"nodeType":"StructuredDocumentation","src":"17917:312:48","text":" @dev Returns the downcasted int240 from int256, reverting on\n overflow (when the input is less than smallest int240 or\n greater than largest int240).\n Counterpart to Solidity's `int240` operator.\n Requirements:\n - input must fit into 240 bits"},"id":13696,"implemented":true,"kind":"function","modifiers":[],"name":"toInt240","nameLocation":"18243:8:48","nodeType":"FunctionDefinition","parameters":{"id":13674,"nodeType":"ParameterList","parameters":[{"constant":false,"id":13673,"mutability":"mutable","name":"value","nameLocation":"18259:5:48","nodeType":"VariableDeclaration","scope":13696,"src":"18252:12:48","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"},"typeName":{"id":13672,"name":"int256","nodeType":"ElementaryTypeName","src":"18252:6:48","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"visibility":"internal"}],"src":"18251:14:48"},"returnParameters":{"id":13677,"nodeType":"ParameterList","parameters":[{"constant":false,"id":13676,"mutability":"mutable","name":"downcasted","nameLocation":"18296:10:48","nodeType":"VariableDeclaration","scope":13696,"src":"18289:17:48","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_int240","typeString":"int240"},"typeName":{"id":13675,"name":"int240","nodeType":"ElementaryTypeName","src":"18289:6:48","typeDescriptions":{"typeIdentifier":"t_int240","typeString":"int240"}},"visibility":"internal"}],"src":"18288:19:48"},"scope":14491,"src":"18234:224:48","stateMutability":"pure","virtual":false,"visibility":"internal"},{"body":{"id":13721,"nodeType":"Block","src":"18855:150:48","statements":[{"expression":{"id":13709,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":13704,"name":"downcasted","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":13702,"src":"18865:10:48","typeDescriptions":{"typeIdentifier":"t_int232","typeString":"int232"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"arguments":[{"id":13707,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":13699,"src":"18885:5:48","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_int256","typeString":"int256"}],"id":13706,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"18878:6:48","typeDescriptions":{"typeIdentifier":"t_type$_t_int232_$","typeString":"type(int232)"},"typeName":{"id":13705,"name":"int232","nodeType":"ElementaryTypeName","src":"18878:6:48","typeDescriptions":{}}},"id":13708,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"18878:13:48","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_int232","typeString":"int232"}},"src":"18865:26:48","typeDescriptions":{"typeIdentifier":"t_int232","typeString":"int232"}},"id":13710,"nodeType":"ExpressionStatement","src":"18865:26:48"},{"condition":{"commonType":{"typeIdentifier":"t_int256","typeString":"int256"},"id":13713,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":13711,"name":"downcasted","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":13702,"src":"18905:10:48","typeDescriptions":{"typeIdentifier":"t_int232","typeString":"int232"}},"nodeType":"BinaryOperation","operator":"!=","rightExpression":{"id":13712,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":13699,"src":"18919:5:48","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"src":"18905:19:48","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":13720,"nodeType":"IfStatement","src":"18901:98:48","trueBody":{"id":13719,"nodeType":"Block","src":"18926:73:48","statements":[{"errorCall":{"arguments":[{"hexValue":"323332","id":13715,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"18977:3:48","typeDescriptions":{"typeIdentifier":"t_rational_232_by_1","typeString":"int_const 232"},"value":"232"},{"id":13716,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":13699,"src":"18982:5:48","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_rational_232_by_1","typeString":"int_const 232"},{"typeIdentifier":"t_int256","typeString":"int256"}],"id":13714,"name":"SafeCastOverflowedIntDowncast","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":12748,"src":"18947:29:48","typeDescriptions":{"typeIdentifier":"t_function_error_pure$_t_uint8_$_t_int256_$returns$_t_error_$","typeString":"function (uint8,int256) pure returns (error)"}},"id":13717,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"18947:41:48","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_error","typeString":"error"}},"id":13718,"nodeType":"RevertStatement","src":"18940:48:48"}]}}]},"documentation":{"id":13697,"nodeType":"StructuredDocumentation","src":"18464:312:48","text":" @dev Returns the downcasted int232 from int256, reverting on\n overflow (when the input is less than smallest int232 or\n greater than largest int232).\n Counterpart to Solidity's `int232` operator.\n Requirements:\n - input must fit into 232 bits"},"id":13722,"implemented":true,"kind":"function","modifiers":[],"name":"toInt232","nameLocation":"18790:8:48","nodeType":"FunctionDefinition","parameters":{"id":13700,"nodeType":"ParameterList","parameters":[{"constant":false,"id":13699,"mutability":"mutable","name":"value","nameLocation":"18806:5:48","nodeType":"VariableDeclaration","scope":13722,"src":"18799:12:48","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"},"typeName":{"id":13698,"name":"int256","nodeType":"ElementaryTypeName","src":"18799:6:48","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"visibility":"internal"}],"src":"18798:14:48"},"returnParameters":{"id":13703,"nodeType":"ParameterList","parameters":[{"constant":false,"id":13702,"mutability":"mutable","name":"downcasted","nameLocation":"18843:10:48","nodeType":"VariableDeclaration","scope":13722,"src":"18836:17:48","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_int232","typeString":"int232"},"typeName":{"id":13701,"name":"int232","nodeType":"ElementaryTypeName","src":"18836:6:48","typeDescriptions":{"typeIdentifier":"t_int232","typeString":"int232"}},"visibility":"internal"}],"src":"18835:19:48"},"scope":14491,"src":"18781:224:48","stateMutability":"pure","virtual":false,"visibility":"internal"},{"body":{"id":13747,"nodeType":"Block","src":"19402:150:48","statements":[{"expression":{"id":13735,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":13730,"name":"downcasted","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":13728,"src":"19412:10:48","typeDescriptions":{"typeIdentifier":"t_int224","typeString":"int224"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"arguments":[{"id":13733,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":13725,"src":"19432:5:48","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_int256","typeString":"int256"}],"id":13732,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"19425:6:48","typeDescriptions":{"typeIdentifier":"t_type$_t_int224_$","typeString":"type(int224)"},"typeName":{"id":13731,"name":"int224","nodeType":"ElementaryTypeName","src":"19425:6:48","typeDescriptions":{}}},"id":13734,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"19425:13:48","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_int224","typeString":"int224"}},"src":"19412:26:48","typeDescriptions":{"typeIdentifier":"t_int224","typeString":"int224"}},"id":13736,"nodeType":"ExpressionStatement","src":"19412:26:48"},{"condition":{"commonType":{"typeIdentifier":"t_int256","typeString":"int256"},"id":13739,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":13737,"name":"downcasted","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":13728,"src":"19452:10:48","typeDescriptions":{"typeIdentifier":"t_int224","typeString":"int224"}},"nodeType":"BinaryOperation","operator":"!=","rightExpression":{"id":13738,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":13725,"src":"19466:5:48","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"src":"19452:19:48","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":13746,"nodeType":"IfStatement","src":"19448:98:48","trueBody":{"id":13745,"nodeType":"Block","src":"19473:73:48","statements":[{"errorCall":{"arguments":[{"hexValue":"323234","id":13741,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"19524:3:48","typeDescriptions":{"typeIdentifier":"t_rational_224_by_1","typeString":"int_const 224"},"value":"224"},{"id":13742,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":13725,"src":"19529:5:48","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_rational_224_by_1","typeString":"int_const 224"},{"typeIdentifier":"t_int256","typeString":"int256"}],"id":13740,"name":"SafeCastOverflowedIntDowncast","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":12748,"src":"19494:29:48","typeDescriptions":{"typeIdentifier":"t_function_error_pure$_t_uint8_$_t_int256_$returns$_t_error_$","typeString":"function (uint8,int256) pure returns (error)"}},"id":13743,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"19494:41:48","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_error","typeString":"error"}},"id":13744,"nodeType":"RevertStatement","src":"19487:48:48"}]}}]},"documentation":{"id":13723,"nodeType":"StructuredDocumentation","src":"19011:312:48","text":" @dev Returns the downcasted int224 from int256, reverting on\n overflow (when the input is less than smallest int224 or\n greater than largest int224).\n Counterpart to Solidity's `int224` operator.\n Requirements:\n - input must fit into 224 bits"},"id":13748,"implemented":true,"kind":"function","modifiers":[],"name":"toInt224","nameLocation":"19337:8:48","nodeType":"FunctionDefinition","parameters":{"id":13726,"nodeType":"ParameterList","parameters":[{"constant":false,"id":13725,"mutability":"mutable","name":"value","nameLocation":"19353:5:48","nodeType":"VariableDeclaration","scope":13748,"src":"19346:12:48","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"},"typeName":{"id":13724,"name":"int256","nodeType":"ElementaryTypeName","src":"19346:6:48","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"visibility":"internal"}],"src":"19345:14:48"},"returnParameters":{"id":13729,"nodeType":"ParameterList","parameters":[{"constant":false,"id":13728,"mutability":"mutable","name":"downcasted","nameLocation":"19390:10:48","nodeType":"VariableDeclaration","scope":13748,"src":"19383:17:48","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_int224","typeString":"int224"},"typeName":{"id":13727,"name":"int224","nodeType":"ElementaryTypeName","src":"19383:6:48","typeDescriptions":{"typeIdentifier":"t_int224","typeString":"int224"}},"visibility":"internal"}],"src":"19382:19:48"},"scope":14491,"src":"19328:224:48","stateMutability":"pure","virtual":false,"visibility":"internal"},{"body":{"id":13773,"nodeType":"Block","src":"19949:150:48","statements":[{"expression":{"id":13761,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":13756,"name":"downcasted","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":13754,"src":"19959:10:48","typeDescriptions":{"typeIdentifier":"t_int216","typeString":"int216"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"arguments":[{"id":13759,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":13751,"src":"19979:5:48","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_int256","typeString":"int256"}],"id":13758,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"19972:6:48","typeDescriptions":{"typeIdentifier":"t_type$_t_int216_$","typeString":"type(int216)"},"typeName":{"id":13757,"name":"int216","nodeType":"ElementaryTypeName","src":"19972:6:48","typeDescriptions":{}}},"id":13760,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"19972:13:48","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_int216","typeString":"int216"}},"src":"19959:26:48","typeDescriptions":{"typeIdentifier":"t_int216","typeString":"int216"}},"id":13762,"nodeType":"ExpressionStatement","src":"19959:26:48"},{"condition":{"commonType":{"typeIdentifier":"t_int256","typeString":"int256"},"id":13765,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":13763,"name":"downcasted","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":13754,"src":"19999:10:48","typeDescriptions":{"typeIdentifier":"t_int216","typeString":"int216"}},"nodeType":"BinaryOperation","operator":"!=","rightExpression":{"id":13764,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":13751,"src":"20013:5:48","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"src":"19999:19:48","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":13772,"nodeType":"IfStatement","src":"19995:98:48","trueBody":{"id":13771,"nodeType":"Block","src":"20020:73:48","statements":[{"errorCall":{"arguments":[{"hexValue":"323136","id":13767,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"20071:3:48","typeDescriptions":{"typeIdentifier":"t_rational_216_by_1","typeString":"int_const 216"},"value":"216"},{"id":13768,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":13751,"src":"20076:5:48","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_rational_216_by_1","typeString":"int_const 216"},{"typeIdentifier":"t_int256","typeString":"int256"}],"id":13766,"name":"SafeCastOverflowedIntDowncast","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":12748,"src":"20041:29:48","typeDescriptions":{"typeIdentifier":"t_function_error_pure$_t_uint8_$_t_int256_$returns$_t_error_$","typeString":"function (uint8,int256) pure returns (error)"}},"id":13769,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"20041:41:48","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_error","typeString":"error"}},"id":13770,"nodeType":"RevertStatement","src":"20034:48:48"}]}}]},"documentation":{"id":13749,"nodeType":"StructuredDocumentation","src":"19558:312:48","text":" @dev Returns the downcasted int216 from int256, reverting on\n overflow (when the input is less than smallest int216 or\n greater than largest int216).\n Counterpart to Solidity's `int216` operator.\n Requirements:\n - input must fit into 216 bits"},"id":13774,"implemented":true,"kind":"function","modifiers":[],"name":"toInt216","nameLocation":"19884:8:48","nodeType":"FunctionDefinition","parameters":{"id":13752,"nodeType":"ParameterList","parameters":[{"constant":false,"id":13751,"mutability":"mutable","name":"value","nameLocation":"19900:5:48","nodeType":"VariableDeclaration","scope":13774,"src":"19893:12:48","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"},"typeName":{"id":13750,"name":"int256","nodeType":"ElementaryTypeName","src":"19893:6:48","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"visibility":"internal"}],"src":"19892:14:48"},"returnParameters":{"id":13755,"nodeType":"ParameterList","parameters":[{"constant":false,"id":13754,"mutability":"mutable","name":"downcasted","nameLocation":"19937:10:48","nodeType":"VariableDeclaration","scope":13774,"src":"19930:17:48","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_int216","typeString":"int216"},"typeName":{"id":13753,"name":"int216","nodeType":"ElementaryTypeName","src":"19930:6:48","typeDescriptions":{"typeIdentifier":"t_int216","typeString":"int216"}},"visibility":"internal"}],"src":"19929:19:48"},"scope":14491,"src":"19875:224:48","stateMutability":"pure","virtual":false,"visibility":"internal"},{"body":{"id":13799,"nodeType":"Block","src":"20496:150:48","statements":[{"expression":{"id":13787,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":13782,"name":"downcasted","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":13780,"src":"20506:10:48","typeDescriptions":{"typeIdentifier":"t_int208","typeString":"int208"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"arguments":[{"id":13785,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":13777,"src":"20526:5:48","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_int256","typeString":"int256"}],"id":13784,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"20519:6:48","typeDescriptions":{"typeIdentifier":"t_type$_t_int208_$","typeString":"type(int208)"},"typeName":{"id":13783,"name":"int208","nodeType":"ElementaryTypeName","src":"20519:6:48","typeDescriptions":{}}},"id":13786,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"20519:13:48","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_int208","typeString":"int208"}},"src":"20506:26:48","typeDescriptions":{"typeIdentifier":"t_int208","typeString":"int208"}},"id":13788,"nodeType":"ExpressionStatement","src":"20506:26:48"},{"condition":{"commonType":{"typeIdentifier":"t_int256","typeString":"int256"},"id":13791,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":13789,"name":"downcasted","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":13780,"src":"20546:10:48","typeDescriptions":{"typeIdentifier":"t_int208","typeString":"int208"}},"nodeType":"BinaryOperation","operator":"!=","rightExpression":{"id":13790,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":13777,"src":"20560:5:48","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"src":"20546:19:48","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":13798,"nodeType":"IfStatement","src":"20542:98:48","trueBody":{"id":13797,"nodeType":"Block","src":"20567:73:48","statements":[{"errorCall":{"arguments":[{"hexValue":"323038","id":13793,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"20618:3:48","typeDescriptions":{"typeIdentifier":"t_rational_208_by_1","typeString":"int_const 208"},"value":"208"},{"id":13794,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":13777,"src":"20623:5:48","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_rational_208_by_1","typeString":"int_const 208"},{"typeIdentifier":"t_int256","typeString":"int256"}],"id":13792,"name":"SafeCastOverflowedIntDowncast","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":12748,"src":"20588:29:48","typeDescriptions":{"typeIdentifier":"t_function_error_pure$_t_uint8_$_t_int256_$returns$_t_error_$","typeString":"function (uint8,int256) pure returns (error)"}},"id":13795,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"20588:41:48","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_error","typeString":"error"}},"id":13796,"nodeType":"RevertStatement","src":"20581:48:48"}]}}]},"documentation":{"id":13775,"nodeType":"StructuredDocumentation","src":"20105:312:48","text":" @dev Returns the downcasted int208 from int256, reverting on\n overflow (when the input is less than smallest int208 or\n greater than largest int208).\n Counterpart to Solidity's `int208` operator.\n Requirements:\n - input must fit into 208 bits"},"id":13800,"implemented":true,"kind":"function","modifiers":[],"name":"toInt208","nameLocation":"20431:8:48","nodeType":"FunctionDefinition","parameters":{"id":13778,"nodeType":"ParameterList","parameters":[{"constant":false,"id":13777,"mutability":"mutable","name":"value","nameLocation":"20447:5:48","nodeType":"VariableDeclaration","scope":13800,"src":"20440:12:48","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"},"typeName":{"id":13776,"name":"int256","nodeType":"ElementaryTypeName","src":"20440:6:48","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"visibility":"internal"}],"src":"20439:14:48"},"returnParameters":{"id":13781,"nodeType":"ParameterList","parameters":[{"constant":false,"id":13780,"mutability":"mutable","name":"downcasted","nameLocation":"20484:10:48","nodeType":"VariableDeclaration","scope":13800,"src":"20477:17:48","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_int208","typeString":"int208"},"typeName":{"id":13779,"name":"int208","nodeType":"ElementaryTypeName","src":"20477:6:48","typeDescriptions":{"typeIdentifier":"t_int208","typeString":"int208"}},"visibility":"internal"}],"src":"20476:19:48"},"scope":14491,"src":"20422:224:48","stateMutability":"pure","virtual":false,"visibility":"internal"},{"body":{"id":13825,"nodeType":"Block","src":"21043:150:48","statements":[{"expression":{"id":13813,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":13808,"name":"downcasted","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":13806,"src":"21053:10:48","typeDescriptions":{"typeIdentifier":"t_int200","typeString":"int200"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"arguments":[{"id":13811,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":13803,"src":"21073:5:48","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_int256","typeString":"int256"}],"id":13810,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"21066:6:48","typeDescriptions":{"typeIdentifier":"t_type$_t_int200_$","typeString":"type(int200)"},"typeName":{"id":13809,"name":"int200","nodeType":"ElementaryTypeName","src":"21066:6:48","typeDescriptions":{}}},"id":13812,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"21066:13:48","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_int200","typeString":"int200"}},"src":"21053:26:48","typeDescriptions":{"typeIdentifier":"t_int200","typeString":"int200"}},"id":13814,"nodeType":"ExpressionStatement","src":"21053:26:48"},{"condition":{"commonType":{"typeIdentifier":"t_int256","typeString":"int256"},"id":13817,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":13815,"name":"downcasted","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":13806,"src":"21093:10:48","typeDescriptions":{"typeIdentifier":"t_int200","typeString":"int200"}},"nodeType":"BinaryOperation","operator":"!=","rightExpression":{"id":13816,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":13803,"src":"21107:5:48","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"src":"21093:19:48","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":13824,"nodeType":"IfStatement","src":"21089:98:48","trueBody":{"id":13823,"nodeType":"Block","src":"21114:73:48","statements":[{"errorCall":{"arguments":[{"hexValue":"323030","id":13819,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"21165:3:48","typeDescriptions":{"typeIdentifier":"t_rational_200_by_1","typeString":"int_const 200"},"value":"200"},{"id":13820,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":13803,"src":"21170:5:48","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_rational_200_by_1","typeString":"int_const 200"},{"typeIdentifier":"t_int256","typeString":"int256"}],"id":13818,"name":"SafeCastOverflowedIntDowncast","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":12748,"src":"21135:29:48","typeDescriptions":{"typeIdentifier":"t_function_error_pure$_t_uint8_$_t_int256_$returns$_t_error_$","typeString":"function (uint8,int256) pure returns (error)"}},"id":13821,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"21135:41:48","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_error","typeString":"error"}},"id":13822,"nodeType":"RevertStatement","src":"21128:48:48"}]}}]},"documentation":{"id":13801,"nodeType":"StructuredDocumentation","src":"20652:312:48","text":" @dev Returns the downcasted int200 from int256, reverting on\n overflow (when the input is less than smallest int200 or\n greater than largest int200).\n Counterpart to Solidity's `int200` operator.\n Requirements:\n - input must fit into 200 bits"},"id":13826,"implemented":true,"kind":"function","modifiers":[],"name":"toInt200","nameLocation":"20978:8:48","nodeType":"FunctionDefinition","parameters":{"id":13804,"nodeType":"ParameterList","parameters":[{"constant":false,"id":13803,"mutability":"mutable","name":"value","nameLocation":"20994:5:48","nodeType":"VariableDeclaration","scope":13826,"src":"20987:12:48","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"},"typeName":{"id":13802,"name":"int256","nodeType":"ElementaryTypeName","src":"20987:6:48","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"visibility":"internal"}],"src":"20986:14:48"},"returnParameters":{"id":13807,"nodeType":"ParameterList","parameters":[{"constant":false,"id":13806,"mutability":"mutable","name":"downcasted","nameLocation":"21031:10:48","nodeType":"VariableDeclaration","scope":13826,"src":"21024:17:48","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_int200","typeString":"int200"},"typeName":{"id":13805,"name":"int200","nodeType":"ElementaryTypeName","src":"21024:6:48","typeDescriptions":{"typeIdentifier":"t_int200","typeString":"int200"}},"visibility":"internal"}],"src":"21023:19:48"},"scope":14491,"src":"20969:224:48","stateMutability":"pure","virtual":false,"visibility":"internal"},{"body":{"id":13851,"nodeType":"Block","src":"21590:150:48","statements":[{"expression":{"id":13839,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":13834,"name":"downcasted","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":13832,"src":"21600:10:48","typeDescriptions":{"typeIdentifier":"t_int192","typeString":"int192"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"arguments":[{"id":13837,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":13829,"src":"21620:5:48","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_int256","typeString":"int256"}],"id":13836,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"21613:6:48","typeDescriptions":{"typeIdentifier":"t_type$_t_int192_$","typeString":"type(int192)"},"typeName":{"id":13835,"name":"int192","nodeType":"ElementaryTypeName","src":"21613:6:48","typeDescriptions":{}}},"id":13838,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"21613:13:48","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_int192","typeString":"int192"}},"src":"21600:26:48","typeDescriptions":{"typeIdentifier":"t_int192","typeString":"int192"}},"id":13840,"nodeType":"ExpressionStatement","src":"21600:26:48"},{"condition":{"commonType":{"typeIdentifier":"t_int256","typeString":"int256"},"id":13843,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":13841,"name":"downcasted","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":13832,"src":"21640:10:48","typeDescriptions":{"typeIdentifier":"t_int192","typeString":"int192"}},"nodeType":"BinaryOperation","operator":"!=","rightExpression":{"id":13842,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":13829,"src":"21654:5:48","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"src":"21640:19:48","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":13850,"nodeType":"IfStatement","src":"21636:98:48","trueBody":{"id":13849,"nodeType":"Block","src":"21661:73:48","statements":[{"errorCall":{"arguments":[{"hexValue":"313932","id":13845,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"21712:3:48","typeDescriptions":{"typeIdentifier":"t_rational_192_by_1","typeString":"int_const 192"},"value":"192"},{"id":13846,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":13829,"src":"21717:5:48","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_rational_192_by_1","typeString":"int_const 192"},{"typeIdentifier":"t_int256","typeString":"int256"}],"id":13844,"name":"SafeCastOverflowedIntDowncast","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":12748,"src":"21682:29:48","typeDescriptions":{"typeIdentifier":"t_function_error_pure$_t_uint8_$_t_int256_$returns$_t_error_$","typeString":"function (uint8,int256) pure returns (error)"}},"id":13847,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"21682:41:48","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_error","typeString":"error"}},"id":13848,"nodeType":"RevertStatement","src":"21675:48:48"}]}}]},"documentation":{"id":13827,"nodeType":"StructuredDocumentation","src":"21199:312:48","text":" @dev Returns the downcasted int192 from int256, reverting on\n overflow (when the input is less than smallest int192 or\n greater than largest int192).\n Counterpart to Solidity's `int192` operator.\n Requirements:\n - input must fit into 192 bits"},"id":13852,"implemented":true,"kind":"function","modifiers":[],"name":"toInt192","nameLocation":"21525:8:48","nodeType":"FunctionDefinition","parameters":{"id":13830,"nodeType":"ParameterList","parameters":[{"constant":false,"id":13829,"mutability":"mutable","name":"value","nameLocation":"21541:5:48","nodeType":"VariableDeclaration","scope":13852,"src":"21534:12:48","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"},"typeName":{"id":13828,"name":"int256","nodeType":"ElementaryTypeName","src":"21534:6:48","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"visibility":"internal"}],"src":"21533:14:48"},"returnParameters":{"id":13833,"nodeType":"ParameterList","parameters":[{"constant":false,"id":13832,"mutability":"mutable","name":"downcasted","nameLocation":"21578:10:48","nodeType":"VariableDeclaration","scope":13852,"src":"21571:17:48","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_int192","typeString":"int192"},"typeName":{"id":13831,"name":"int192","nodeType":"ElementaryTypeName","src":"21571:6:48","typeDescriptions":{"typeIdentifier":"t_int192","typeString":"int192"}},"visibility":"internal"}],"src":"21570:19:48"},"scope":14491,"src":"21516:224:48","stateMutability":"pure","virtual":false,"visibility":"internal"},{"body":{"id":13877,"nodeType":"Block","src":"22137:150:48","statements":[{"expression":{"id":13865,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":13860,"name":"downcasted","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":13858,"src":"22147:10:48","typeDescriptions":{"typeIdentifier":"t_int184","typeString":"int184"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"arguments":[{"id":13863,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":13855,"src":"22167:5:48","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_int256","typeString":"int256"}],"id":13862,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"22160:6:48","typeDescriptions":{"typeIdentifier":"t_type$_t_int184_$","typeString":"type(int184)"},"typeName":{"id":13861,"name":"int184","nodeType":"ElementaryTypeName","src":"22160:6:48","typeDescriptions":{}}},"id":13864,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"22160:13:48","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_int184","typeString":"int184"}},"src":"22147:26:48","typeDescriptions":{"typeIdentifier":"t_int184","typeString":"int184"}},"id":13866,"nodeType":"ExpressionStatement","src":"22147:26:48"},{"condition":{"commonType":{"typeIdentifier":"t_int256","typeString":"int256"},"id":13869,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":13867,"name":"downcasted","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":13858,"src":"22187:10:48","typeDescriptions":{"typeIdentifier":"t_int184","typeString":"int184"}},"nodeType":"BinaryOperation","operator":"!=","rightExpression":{"id":13868,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":13855,"src":"22201:5:48","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"src":"22187:19:48","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":13876,"nodeType":"IfStatement","src":"22183:98:48","trueBody":{"id":13875,"nodeType":"Block","src":"22208:73:48","statements":[{"errorCall":{"arguments":[{"hexValue":"313834","id":13871,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"22259:3:48","typeDescriptions":{"typeIdentifier":"t_rational_184_by_1","typeString":"int_const 184"},"value":"184"},{"id":13872,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":13855,"src":"22264:5:48","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_rational_184_by_1","typeString":"int_const 184"},{"typeIdentifier":"t_int256","typeString":"int256"}],"id":13870,"name":"SafeCastOverflowedIntDowncast","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":12748,"src":"22229:29:48","typeDescriptions":{"typeIdentifier":"t_function_error_pure$_t_uint8_$_t_int256_$returns$_t_error_$","typeString":"function (uint8,int256) pure returns (error)"}},"id":13873,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"22229:41:48","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_error","typeString":"error"}},"id":13874,"nodeType":"RevertStatement","src":"22222:48:48"}]}}]},"documentation":{"id":13853,"nodeType":"StructuredDocumentation","src":"21746:312:48","text":" @dev Returns the downcasted int184 from int256, reverting on\n overflow (when the input is less than smallest int184 or\n greater than largest int184).\n Counterpart to Solidity's `int184` operator.\n Requirements:\n - input must fit into 184 bits"},"id":13878,"implemented":true,"kind":"function","modifiers":[],"name":"toInt184","nameLocation":"22072:8:48","nodeType":"FunctionDefinition","parameters":{"id":13856,"nodeType":"ParameterList","parameters":[{"constant":false,"id":13855,"mutability":"mutable","name":"value","nameLocation":"22088:5:48","nodeType":"VariableDeclaration","scope":13878,"src":"22081:12:48","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"},"typeName":{"id":13854,"name":"int256","nodeType":"ElementaryTypeName","src":"22081:6:48","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"visibility":"internal"}],"src":"22080:14:48"},"returnParameters":{"id":13859,"nodeType":"ParameterList","parameters":[{"constant":false,"id":13858,"mutability":"mutable","name":"downcasted","nameLocation":"22125:10:48","nodeType":"VariableDeclaration","scope":13878,"src":"22118:17:48","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_int184","typeString":"int184"},"typeName":{"id":13857,"name":"int184","nodeType":"ElementaryTypeName","src":"22118:6:48","typeDescriptions":{"typeIdentifier":"t_int184","typeString":"int184"}},"visibility":"internal"}],"src":"22117:19:48"},"scope":14491,"src":"22063:224:48","stateMutability":"pure","virtual":false,"visibility":"internal"},{"body":{"id":13903,"nodeType":"Block","src":"22684:150:48","statements":[{"expression":{"id":13891,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":13886,"name":"downcasted","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":13884,"src":"22694:10:48","typeDescriptions":{"typeIdentifier":"t_int176","typeString":"int176"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"arguments":[{"id":13889,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":13881,"src":"22714:5:48","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_int256","typeString":"int256"}],"id":13888,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"22707:6:48","typeDescriptions":{"typeIdentifier":"t_type$_t_int176_$","typeString":"type(int176)"},"typeName":{"id":13887,"name":"int176","nodeType":"ElementaryTypeName","src":"22707:6:48","typeDescriptions":{}}},"id":13890,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"22707:13:48","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_int176","typeString":"int176"}},"src":"22694:26:48","typeDescriptions":{"typeIdentifier":"t_int176","typeString":"int176"}},"id":13892,"nodeType":"ExpressionStatement","src":"22694:26:48"},{"condition":{"commonType":{"typeIdentifier":"t_int256","typeString":"int256"},"id":13895,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":13893,"name":"downcasted","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":13884,"src":"22734:10:48","typeDescriptions":{"typeIdentifier":"t_int176","typeString":"int176"}},"nodeType":"BinaryOperation","operator":"!=","rightExpression":{"id":13894,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":13881,"src":"22748:5:48","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"src":"22734:19:48","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":13902,"nodeType":"IfStatement","src":"22730:98:48","trueBody":{"id":13901,"nodeType":"Block","src":"22755:73:48","statements":[{"errorCall":{"arguments":[{"hexValue":"313736","id":13897,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"22806:3:48","typeDescriptions":{"typeIdentifier":"t_rational_176_by_1","typeString":"int_const 176"},"value":"176"},{"id":13898,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":13881,"src":"22811:5:48","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_rational_176_by_1","typeString":"int_const 176"},{"typeIdentifier":"t_int256","typeString":"int256"}],"id":13896,"name":"SafeCastOverflowedIntDowncast","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":12748,"src":"22776:29:48","typeDescriptions":{"typeIdentifier":"t_function_error_pure$_t_uint8_$_t_int256_$returns$_t_error_$","typeString":"function (uint8,int256) pure returns (error)"}},"id":13899,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"22776:41:48","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_error","typeString":"error"}},"id":13900,"nodeType":"RevertStatement","src":"22769:48:48"}]}}]},"documentation":{"id":13879,"nodeType":"StructuredDocumentation","src":"22293:312:48","text":" @dev Returns the downcasted int176 from int256, reverting on\n overflow (when the input is less than smallest int176 or\n greater than largest int176).\n Counterpart to Solidity's `int176` operator.\n Requirements:\n - input must fit into 176 bits"},"id":13904,"implemented":true,"kind":"function","modifiers":[],"name":"toInt176","nameLocation":"22619:8:48","nodeType":"FunctionDefinition","parameters":{"id":13882,"nodeType":"ParameterList","parameters":[{"constant":false,"id":13881,"mutability":"mutable","name":"value","nameLocation":"22635:5:48","nodeType":"VariableDeclaration","scope":13904,"src":"22628:12:48","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"},"typeName":{"id":13880,"name":"int256","nodeType":"ElementaryTypeName","src":"22628:6:48","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"visibility":"internal"}],"src":"22627:14:48"},"returnParameters":{"id":13885,"nodeType":"ParameterList","parameters":[{"constant":false,"id":13884,"mutability":"mutable","name":"downcasted","nameLocation":"22672:10:48","nodeType":"VariableDeclaration","scope":13904,"src":"22665:17:48","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_int176","typeString":"int176"},"typeName":{"id":13883,"name":"int176","nodeType":"ElementaryTypeName","src":"22665:6:48","typeDescriptions":{"typeIdentifier":"t_int176","typeString":"int176"}},"visibility":"internal"}],"src":"22664:19:48"},"scope":14491,"src":"22610:224:48","stateMutability":"pure","virtual":false,"visibility":"internal"},{"body":{"id":13929,"nodeType":"Block","src":"23231:150:48","statements":[{"expression":{"id":13917,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":13912,"name":"downcasted","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":13910,"src":"23241:10:48","typeDescriptions":{"typeIdentifier":"t_int168","typeString":"int168"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"arguments":[{"id":13915,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":13907,"src":"23261:5:48","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_int256","typeString":"int256"}],"id":13914,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"23254:6:48","typeDescriptions":{"typeIdentifier":"t_type$_t_int168_$","typeString":"type(int168)"},"typeName":{"id":13913,"name":"int168","nodeType":"ElementaryTypeName","src":"23254:6:48","typeDescriptions":{}}},"id":13916,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"23254:13:48","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_int168","typeString":"int168"}},"src":"23241:26:48","typeDescriptions":{"typeIdentifier":"t_int168","typeString":"int168"}},"id":13918,"nodeType":"ExpressionStatement","src":"23241:26:48"},{"condition":{"commonType":{"typeIdentifier":"t_int256","typeString":"int256"},"id":13921,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":13919,"name":"downcasted","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":13910,"src":"23281:10:48","typeDescriptions":{"typeIdentifier":"t_int168","typeString":"int168"}},"nodeType":"BinaryOperation","operator":"!=","rightExpression":{"id":13920,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":13907,"src":"23295:5:48","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"src":"23281:19:48","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":13928,"nodeType":"IfStatement","src":"23277:98:48","trueBody":{"id":13927,"nodeType":"Block","src":"23302:73:48","statements":[{"errorCall":{"arguments":[{"hexValue":"313638","id":13923,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"23353:3:48","typeDescriptions":{"typeIdentifier":"t_rational_168_by_1","typeString":"int_const 168"},"value":"168"},{"id":13924,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":13907,"src":"23358:5:48","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_rational_168_by_1","typeString":"int_const 168"},{"typeIdentifier":"t_int256","typeString":"int256"}],"id":13922,"name":"SafeCastOverflowedIntDowncast","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":12748,"src":"23323:29:48","typeDescriptions":{"typeIdentifier":"t_function_error_pure$_t_uint8_$_t_int256_$returns$_t_error_$","typeString":"function (uint8,int256) pure returns (error)"}},"id":13925,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"23323:41:48","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_error","typeString":"error"}},"id":13926,"nodeType":"RevertStatement","src":"23316:48:48"}]}}]},"documentation":{"id":13905,"nodeType":"StructuredDocumentation","src":"22840:312:48","text":" @dev Returns the downcasted int168 from int256, reverting on\n overflow (when the input is less than smallest int168 or\n greater than largest int168).\n Counterpart to Solidity's `int168` operator.\n Requirements:\n - input must fit into 168 bits"},"id":13930,"implemented":true,"kind":"function","modifiers":[],"name":"toInt168","nameLocation":"23166:8:48","nodeType":"FunctionDefinition","parameters":{"id":13908,"nodeType":"ParameterList","parameters":[{"constant":false,"id":13907,"mutability":"mutable","name":"value","nameLocation":"23182:5:48","nodeType":"VariableDeclaration","scope":13930,"src":"23175:12:48","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"},"typeName":{"id":13906,"name":"int256","nodeType":"ElementaryTypeName","src":"23175:6:48","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"visibility":"internal"}],"src":"23174:14:48"},"returnParameters":{"id":13911,"nodeType":"ParameterList","parameters":[{"constant":false,"id":13910,"mutability":"mutable","name":"downcasted","nameLocation":"23219:10:48","nodeType":"VariableDeclaration","scope":13930,"src":"23212:17:48","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_int168","typeString":"int168"},"typeName":{"id":13909,"name":"int168","nodeType":"ElementaryTypeName","src":"23212:6:48","typeDescriptions":{"typeIdentifier":"t_int168","typeString":"int168"}},"visibility":"internal"}],"src":"23211:19:48"},"scope":14491,"src":"23157:224:48","stateMutability":"pure","virtual":false,"visibility":"internal"},{"body":{"id":13955,"nodeType":"Block","src":"23778:150:48","statements":[{"expression":{"id":13943,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":13938,"name":"downcasted","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":13936,"src":"23788:10:48","typeDescriptions":{"typeIdentifier":"t_int160","typeString":"int160"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"arguments":[{"id":13941,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":13933,"src":"23808:5:48","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_int256","typeString":"int256"}],"id":13940,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"23801:6:48","typeDescriptions":{"typeIdentifier":"t_type$_t_int160_$","typeString":"type(int160)"},"typeName":{"id":13939,"name":"int160","nodeType":"ElementaryTypeName","src":"23801:6:48","typeDescriptions":{}}},"id":13942,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"23801:13:48","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_int160","typeString":"int160"}},"src":"23788:26:48","typeDescriptions":{"typeIdentifier":"t_int160","typeString":"int160"}},"id":13944,"nodeType":"ExpressionStatement","src":"23788:26:48"},{"condition":{"commonType":{"typeIdentifier":"t_int256","typeString":"int256"},"id":13947,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":13945,"name":"downcasted","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":13936,"src":"23828:10:48","typeDescriptions":{"typeIdentifier":"t_int160","typeString":"int160"}},"nodeType":"BinaryOperation","operator":"!=","rightExpression":{"id":13946,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":13933,"src":"23842:5:48","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"src":"23828:19:48","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":13954,"nodeType":"IfStatement","src":"23824:98:48","trueBody":{"id":13953,"nodeType":"Block","src":"23849:73:48","statements":[{"errorCall":{"arguments":[{"hexValue":"313630","id":13949,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"23900:3:48","typeDescriptions":{"typeIdentifier":"t_rational_160_by_1","typeString":"int_const 160"},"value":"160"},{"id":13950,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":13933,"src":"23905:5:48","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_rational_160_by_1","typeString":"int_const 160"},{"typeIdentifier":"t_int256","typeString":"int256"}],"id":13948,"name":"SafeCastOverflowedIntDowncast","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":12748,"src":"23870:29:48","typeDescriptions":{"typeIdentifier":"t_function_error_pure$_t_uint8_$_t_int256_$returns$_t_error_$","typeString":"function (uint8,int256) pure returns (error)"}},"id":13951,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"23870:41:48","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_error","typeString":"error"}},"id":13952,"nodeType":"RevertStatement","src":"23863:48:48"}]}}]},"documentation":{"id":13931,"nodeType":"StructuredDocumentation","src":"23387:312:48","text":" @dev Returns the downcasted int160 from int256, reverting on\n overflow (when the input is less than smallest int160 or\n greater than largest int160).\n Counterpart to Solidity's `int160` operator.\n Requirements:\n - input must fit into 160 bits"},"id":13956,"implemented":true,"kind":"function","modifiers":[],"name":"toInt160","nameLocation":"23713:8:48","nodeType":"FunctionDefinition","parameters":{"id":13934,"nodeType":"ParameterList","parameters":[{"constant":false,"id":13933,"mutability":"mutable","name":"value","nameLocation":"23729:5:48","nodeType":"VariableDeclaration","scope":13956,"src":"23722:12:48","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"},"typeName":{"id":13932,"name":"int256","nodeType":"ElementaryTypeName","src":"23722:6:48","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"visibility":"internal"}],"src":"23721:14:48"},"returnParameters":{"id":13937,"nodeType":"ParameterList","parameters":[{"constant":false,"id":13936,"mutability":"mutable","name":"downcasted","nameLocation":"23766:10:48","nodeType":"VariableDeclaration","scope":13956,"src":"23759:17:48","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_int160","typeString":"int160"},"typeName":{"id":13935,"name":"int160","nodeType":"ElementaryTypeName","src":"23759:6:48","typeDescriptions":{"typeIdentifier":"t_int160","typeString":"int160"}},"visibility":"internal"}],"src":"23758:19:48"},"scope":14491,"src":"23704:224:48","stateMutability":"pure","virtual":false,"visibility":"internal"},{"body":{"id":13981,"nodeType":"Block","src":"24325:150:48","statements":[{"expression":{"id":13969,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":13964,"name":"downcasted","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":13962,"src":"24335:10:48","typeDescriptions":{"typeIdentifier":"t_int152","typeString":"int152"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"arguments":[{"id":13967,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":13959,"src":"24355:5:48","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_int256","typeString":"int256"}],"id":13966,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"24348:6:48","typeDescriptions":{"typeIdentifier":"t_type$_t_int152_$","typeString":"type(int152)"},"typeName":{"id":13965,"name":"int152","nodeType":"ElementaryTypeName","src":"24348:6:48","typeDescriptions":{}}},"id":13968,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"24348:13:48","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_int152","typeString":"int152"}},"src":"24335:26:48","typeDescriptions":{"typeIdentifier":"t_int152","typeString":"int152"}},"id":13970,"nodeType":"ExpressionStatement","src":"24335:26:48"},{"condition":{"commonType":{"typeIdentifier":"t_int256","typeString":"int256"},"id":13973,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":13971,"name":"downcasted","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":13962,"src":"24375:10:48","typeDescriptions":{"typeIdentifier":"t_int152","typeString":"int152"}},"nodeType":"BinaryOperation","operator":"!=","rightExpression":{"id":13972,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":13959,"src":"24389:5:48","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"src":"24375:19:48","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":13980,"nodeType":"IfStatement","src":"24371:98:48","trueBody":{"id":13979,"nodeType":"Block","src":"24396:73:48","statements":[{"errorCall":{"arguments":[{"hexValue":"313532","id":13975,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"24447:3:48","typeDescriptions":{"typeIdentifier":"t_rational_152_by_1","typeString":"int_const 152"},"value":"152"},{"id":13976,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":13959,"src":"24452:5:48","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_rational_152_by_1","typeString":"int_const 152"},{"typeIdentifier":"t_int256","typeString":"int256"}],"id":13974,"name":"SafeCastOverflowedIntDowncast","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":12748,"src":"24417:29:48","typeDescriptions":{"typeIdentifier":"t_function_error_pure$_t_uint8_$_t_int256_$returns$_t_error_$","typeString":"function (uint8,int256) pure returns (error)"}},"id":13977,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"24417:41:48","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_error","typeString":"error"}},"id":13978,"nodeType":"RevertStatement","src":"24410:48:48"}]}}]},"documentation":{"id":13957,"nodeType":"StructuredDocumentation","src":"23934:312:48","text":" @dev Returns the downcasted int152 from int256, reverting on\n overflow (when the input is less than smallest int152 or\n greater than largest int152).\n Counterpart to Solidity's `int152` operator.\n Requirements:\n - input must fit into 152 bits"},"id":13982,"implemented":true,"kind":"function","modifiers":[],"name":"toInt152","nameLocation":"24260:8:48","nodeType":"FunctionDefinition","parameters":{"id":13960,"nodeType":"ParameterList","parameters":[{"constant":false,"id":13959,"mutability":"mutable","name":"value","nameLocation":"24276:5:48","nodeType":"VariableDeclaration","scope":13982,"src":"24269:12:48","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"},"typeName":{"id":13958,"name":"int256","nodeType":"ElementaryTypeName","src":"24269:6:48","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"visibility":"internal"}],"src":"24268:14:48"},"returnParameters":{"id":13963,"nodeType":"ParameterList","parameters":[{"constant":false,"id":13962,"mutability":"mutable","name":"downcasted","nameLocation":"24313:10:48","nodeType":"VariableDeclaration","scope":13982,"src":"24306:17:48","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_int152","typeString":"int152"},"typeName":{"id":13961,"name":"int152","nodeType":"ElementaryTypeName","src":"24306:6:48","typeDescriptions":{"typeIdentifier":"t_int152","typeString":"int152"}},"visibility":"internal"}],"src":"24305:19:48"},"scope":14491,"src":"24251:224:48","stateMutability":"pure","virtual":false,"visibility":"internal"},{"body":{"id":14007,"nodeType":"Block","src":"24872:150:48","statements":[{"expression":{"id":13995,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":13990,"name":"downcasted","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":13988,"src":"24882:10:48","typeDescriptions":{"typeIdentifier":"t_int144","typeString":"int144"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"arguments":[{"id":13993,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":13985,"src":"24902:5:48","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_int256","typeString":"int256"}],"id":13992,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"24895:6:48","typeDescriptions":{"typeIdentifier":"t_type$_t_int144_$","typeString":"type(int144)"},"typeName":{"id":13991,"name":"int144","nodeType":"ElementaryTypeName","src":"24895:6:48","typeDescriptions":{}}},"id":13994,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"24895:13:48","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_int144","typeString":"int144"}},"src":"24882:26:48","typeDescriptions":{"typeIdentifier":"t_int144","typeString":"int144"}},"id":13996,"nodeType":"ExpressionStatement","src":"24882:26:48"},{"condition":{"commonType":{"typeIdentifier":"t_int256","typeString":"int256"},"id":13999,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":13997,"name":"downcasted","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":13988,"src":"24922:10:48","typeDescriptions":{"typeIdentifier":"t_int144","typeString":"int144"}},"nodeType":"BinaryOperation","operator":"!=","rightExpression":{"id":13998,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":13985,"src":"24936:5:48","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"src":"24922:19:48","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":14006,"nodeType":"IfStatement","src":"24918:98:48","trueBody":{"id":14005,"nodeType":"Block","src":"24943:73:48","statements":[{"errorCall":{"arguments":[{"hexValue":"313434","id":14001,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"24994:3:48","typeDescriptions":{"typeIdentifier":"t_rational_144_by_1","typeString":"int_const 144"},"value":"144"},{"id":14002,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":13985,"src":"24999:5:48","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_rational_144_by_1","typeString":"int_const 144"},{"typeIdentifier":"t_int256","typeString":"int256"}],"id":14000,"name":"SafeCastOverflowedIntDowncast","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":12748,"src":"24964:29:48","typeDescriptions":{"typeIdentifier":"t_function_error_pure$_t_uint8_$_t_int256_$returns$_t_error_$","typeString":"function (uint8,int256) pure returns (error)"}},"id":14003,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"24964:41:48","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_error","typeString":"error"}},"id":14004,"nodeType":"RevertStatement","src":"24957:48:48"}]}}]},"documentation":{"id":13983,"nodeType":"StructuredDocumentation","src":"24481:312:48","text":" @dev Returns the downcasted int144 from int256, reverting on\n overflow (when the input is less than smallest int144 or\n greater than largest int144).\n Counterpart to Solidity's `int144` operator.\n Requirements:\n - input must fit into 144 bits"},"id":14008,"implemented":true,"kind":"function","modifiers":[],"name":"toInt144","nameLocation":"24807:8:48","nodeType":"FunctionDefinition","parameters":{"id":13986,"nodeType":"ParameterList","parameters":[{"constant":false,"id":13985,"mutability":"mutable","name":"value","nameLocation":"24823:5:48","nodeType":"VariableDeclaration","scope":14008,"src":"24816:12:48","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"},"typeName":{"id":13984,"name":"int256","nodeType":"ElementaryTypeName","src":"24816:6:48","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"visibility":"internal"}],"src":"24815:14:48"},"returnParameters":{"id":13989,"nodeType":"ParameterList","parameters":[{"constant":false,"id":13988,"mutability":"mutable","name":"downcasted","nameLocation":"24860:10:48","nodeType":"VariableDeclaration","scope":14008,"src":"24853:17:48","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_int144","typeString":"int144"},"typeName":{"id":13987,"name":"int144","nodeType":"ElementaryTypeName","src":"24853:6:48","typeDescriptions":{"typeIdentifier":"t_int144","typeString":"int144"}},"visibility":"internal"}],"src":"24852:19:48"},"scope":14491,"src":"24798:224:48","stateMutability":"pure","virtual":false,"visibility":"internal"},{"body":{"id":14033,"nodeType":"Block","src":"25419:150:48","statements":[{"expression":{"id":14021,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":14016,"name":"downcasted","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":14014,"src":"25429:10:48","typeDescriptions":{"typeIdentifier":"t_int136","typeString":"int136"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"arguments":[{"id":14019,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":14011,"src":"25449:5:48","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_int256","typeString":"int256"}],"id":14018,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"25442:6:48","typeDescriptions":{"typeIdentifier":"t_type$_t_int136_$","typeString":"type(int136)"},"typeName":{"id":14017,"name":"int136","nodeType":"ElementaryTypeName","src":"25442:6:48","typeDescriptions":{}}},"id":14020,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"25442:13:48","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_int136","typeString":"int136"}},"src":"25429:26:48","typeDescriptions":{"typeIdentifier":"t_int136","typeString":"int136"}},"id":14022,"nodeType":"ExpressionStatement","src":"25429:26:48"},{"condition":{"commonType":{"typeIdentifier":"t_int256","typeString":"int256"},"id":14025,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":14023,"name":"downcasted","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":14014,"src":"25469:10:48","typeDescriptions":{"typeIdentifier":"t_int136","typeString":"int136"}},"nodeType":"BinaryOperation","operator":"!=","rightExpression":{"id":14024,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":14011,"src":"25483:5:48","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"src":"25469:19:48","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":14032,"nodeType":"IfStatement","src":"25465:98:48","trueBody":{"id":14031,"nodeType":"Block","src":"25490:73:48","statements":[{"errorCall":{"arguments":[{"hexValue":"313336","id":14027,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"25541:3:48","typeDescriptions":{"typeIdentifier":"t_rational_136_by_1","typeString":"int_const 136"},"value":"136"},{"id":14028,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":14011,"src":"25546:5:48","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_rational_136_by_1","typeString":"int_const 136"},{"typeIdentifier":"t_int256","typeString":"int256"}],"id":14026,"name":"SafeCastOverflowedIntDowncast","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":12748,"src":"25511:29:48","typeDescriptions":{"typeIdentifier":"t_function_error_pure$_t_uint8_$_t_int256_$returns$_t_error_$","typeString":"function (uint8,int256) pure returns (error)"}},"id":14029,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"25511:41:48","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_error","typeString":"error"}},"id":14030,"nodeType":"RevertStatement","src":"25504:48:48"}]}}]},"documentation":{"id":14009,"nodeType":"StructuredDocumentation","src":"25028:312:48","text":" @dev Returns the downcasted int136 from int256, reverting on\n overflow (when the input is less than smallest int136 or\n greater than largest int136).\n Counterpart to Solidity's `int136` operator.\n Requirements:\n - input must fit into 136 bits"},"id":14034,"implemented":true,"kind":"function","modifiers":[],"name":"toInt136","nameLocation":"25354:8:48","nodeType":"FunctionDefinition","parameters":{"id":14012,"nodeType":"ParameterList","parameters":[{"constant":false,"id":14011,"mutability":"mutable","name":"value","nameLocation":"25370:5:48","nodeType":"VariableDeclaration","scope":14034,"src":"25363:12:48","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"},"typeName":{"id":14010,"name":"int256","nodeType":"ElementaryTypeName","src":"25363:6:48","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"visibility":"internal"}],"src":"25362:14:48"},"returnParameters":{"id":14015,"nodeType":"ParameterList","parameters":[{"constant":false,"id":14014,"mutability":"mutable","name":"downcasted","nameLocation":"25407:10:48","nodeType":"VariableDeclaration","scope":14034,"src":"25400:17:48","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_int136","typeString":"int136"},"typeName":{"id":14013,"name":"int136","nodeType":"ElementaryTypeName","src":"25400:6:48","typeDescriptions":{"typeIdentifier":"t_int136","typeString":"int136"}},"visibility":"internal"}],"src":"25399:19:48"},"scope":14491,"src":"25345:224:48","stateMutability":"pure","virtual":false,"visibility":"internal"},{"body":{"id":14059,"nodeType":"Block","src":"25966:150:48","statements":[{"expression":{"id":14047,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":14042,"name":"downcasted","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":14040,"src":"25976:10:48","typeDescriptions":{"typeIdentifier":"t_int128","typeString":"int128"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"arguments":[{"id":14045,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":14037,"src":"25996:5:48","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_int256","typeString":"int256"}],"id":14044,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"25989:6:48","typeDescriptions":{"typeIdentifier":"t_type$_t_int128_$","typeString":"type(int128)"},"typeName":{"id":14043,"name":"int128","nodeType":"ElementaryTypeName","src":"25989:6:48","typeDescriptions":{}}},"id":14046,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"25989:13:48","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_int128","typeString":"int128"}},"src":"25976:26:48","typeDescriptions":{"typeIdentifier":"t_int128","typeString":"int128"}},"id":14048,"nodeType":"ExpressionStatement","src":"25976:26:48"},{"condition":{"commonType":{"typeIdentifier":"t_int256","typeString":"int256"},"id":14051,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":14049,"name":"downcasted","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":14040,"src":"26016:10:48","typeDescriptions":{"typeIdentifier":"t_int128","typeString":"int128"}},"nodeType":"BinaryOperation","operator":"!=","rightExpression":{"id":14050,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":14037,"src":"26030:5:48","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"src":"26016:19:48","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":14058,"nodeType":"IfStatement","src":"26012:98:48","trueBody":{"id":14057,"nodeType":"Block","src":"26037:73:48","statements":[{"errorCall":{"arguments":[{"hexValue":"313238","id":14053,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"26088:3:48","typeDescriptions":{"typeIdentifier":"t_rational_128_by_1","typeString":"int_const 128"},"value":"128"},{"id":14054,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":14037,"src":"26093:5:48","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_rational_128_by_1","typeString":"int_const 128"},{"typeIdentifier":"t_int256","typeString":"int256"}],"id":14052,"name":"SafeCastOverflowedIntDowncast","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":12748,"src":"26058:29:48","typeDescriptions":{"typeIdentifier":"t_function_error_pure$_t_uint8_$_t_int256_$returns$_t_error_$","typeString":"function (uint8,int256) pure returns (error)"}},"id":14055,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"26058:41:48","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_error","typeString":"error"}},"id":14056,"nodeType":"RevertStatement","src":"26051:48:48"}]}}]},"documentation":{"id":14035,"nodeType":"StructuredDocumentation","src":"25575:312:48","text":" @dev Returns the downcasted int128 from int256, reverting on\n overflow (when the input is less than smallest int128 or\n greater than largest int128).\n Counterpart to Solidity's `int128` operator.\n Requirements:\n - input must fit into 128 bits"},"id":14060,"implemented":true,"kind":"function","modifiers":[],"name":"toInt128","nameLocation":"25901:8:48","nodeType":"FunctionDefinition","parameters":{"id":14038,"nodeType":"ParameterList","parameters":[{"constant":false,"id":14037,"mutability":"mutable","name":"value","nameLocation":"25917:5:48","nodeType":"VariableDeclaration","scope":14060,"src":"25910:12:48","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"},"typeName":{"id":14036,"name":"int256","nodeType":"ElementaryTypeName","src":"25910:6:48","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"visibility":"internal"}],"src":"25909:14:48"},"returnParameters":{"id":14041,"nodeType":"ParameterList","parameters":[{"constant":false,"id":14040,"mutability":"mutable","name":"downcasted","nameLocation":"25954:10:48","nodeType":"VariableDeclaration","scope":14060,"src":"25947:17:48","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_int128","typeString":"int128"},"typeName":{"id":14039,"name":"int128","nodeType":"ElementaryTypeName","src":"25947:6:48","typeDescriptions":{"typeIdentifier":"t_int128","typeString":"int128"}},"visibility":"internal"}],"src":"25946:19:48"},"scope":14491,"src":"25892:224:48","stateMutability":"pure","virtual":false,"visibility":"internal"},{"body":{"id":14085,"nodeType":"Block","src":"26513:150:48","statements":[{"expression":{"id":14073,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":14068,"name":"downcasted","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":14066,"src":"26523:10:48","typeDescriptions":{"typeIdentifier":"t_int120","typeString":"int120"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"arguments":[{"id":14071,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":14063,"src":"26543:5:48","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_int256","typeString":"int256"}],"id":14070,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"26536:6:48","typeDescriptions":{"typeIdentifier":"t_type$_t_int120_$","typeString":"type(int120)"},"typeName":{"id":14069,"name":"int120","nodeType":"ElementaryTypeName","src":"26536:6:48","typeDescriptions":{}}},"id":14072,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"26536:13:48","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_int120","typeString":"int120"}},"src":"26523:26:48","typeDescriptions":{"typeIdentifier":"t_int120","typeString":"int120"}},"id":14074,"nodeType":"ExpressionStatement","src":"26523:26:48"},{"condition":{"commonType":{"typeIdentifier":"t_int256","typeString":"int256"},"id":14077,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":14075,"name":"downcasted","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":14066,"src":"26563:10:48","typeDescriptions":{"typeIdentifier":"t_int120","typeString":"int120"}},"nodeType":"BinaryOperation","operator":"!=","rightExpression":{"id":14076,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":14063,"src":"26577:5:48","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"src":"26563:19:48","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":14084,"nodeType":"IfStatement","src":"26559:98:48","trueBody":{"id":14083,"nodeType":"Block","src":"26584:73:48","statements":[{"errorCall":{"arguments":[{"hexValue":"313230","id":14079,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"26635:3:48","typeDescriptions":{"typeIdentifier":"t_rational_120_by_1","typeString":"int_const 120"},"value":"120"},{"id":14080,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":14063,"src":"26640:5:48","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_rational_120_by_1","typeString":"int_const 120"},{"typeIdentifier":"t_int256","typeString":"int256"}],"id":14078,"name":"SafeCastOverflowedIntDowncast","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":12748,"src":"26605:29:48","typeDescriptions":{"typeIdentifier":"t_function_error_pure$_t_uint8_$_t_int256_$returns$_t_error_$","typeString":"function (uint8,int256) pure returns (error)"}},"id":14081,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"26605:41:48","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_error","typeString":"error"}},"id":14082,"nodeType":"RevertStatement","src":"26598:48:48"}]}}]},"documentation":{"id":14061,"nodeType":"StructuredDocumentation","src":"26122:312:48","text":" @dev Returns the downcasted int120 from int256, reverting on\n overflow (when the input is less than smallest int120 or\n greater than largest int120).\n Counterpart to Solidity's `int120` operator.\n Requirements:\n - input must fit into 120 bits"},"id":14086,"implemented":true,"kind":"function","modifiers":[],"name":"toInt120","nameLocation":"26448:8:48","nodeType":"FunctionDefinition","parameters":{"id":14064,"nodeType":"ParameterList","parameters":[{"constant":false,"id":14063,"mutability":"mutable","name":"value","nameLocation":"26464:5:48","nodeType":"VariableDeclaration","scope":14086,"src":"26457:12:48","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"},"typeName":{"id":14062,"name":"int256","nodeType":"ElementaryTypeName","src":"26457:6:48","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"visibility":"internal"}],"src":"26456:14:48"},"returnParameters":{"id":14067,"nodeType":"ParameterList","parameters":[{"constant":false,"id":14066,"mutability":"mutable","name":"downcasted","nameLocation":"26501:10:48","nodeType":"VariableDeclaration","scope":14086,"src":"26494:17:48","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_int120","typeString":"int120"},"typeName":{"id":14065,"name":"int120","nodeType":"ElementaryTypeName","src":"26494:6:48","typeDescriptions":{"typeIdentifier":"t_int120","typeString":"int120"}},"visibility":"internal"}],"src":"26493:19:48"},"scope":14491,"src":"26439:224:48","stateMutability":"pure","virtual":false,"visibility":"internal"},{"body":{"id":14111,"nodeType":"Block","src":"27060:150:48","statements":[{"expression":{"id":14099,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":14094,"name":"downcasted","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":14092,"src":"27070:10:48","typeDescriptions":{"typeIdentifier":"t_int112","typeString":"int112"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"arguments":[{"id":14097,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":14089,"src":"27090:5:48","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_int256","typeString":"int256"}],"id":14096,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"27083:6:48","typeDescriptions":{"typeIdentifier":"t_type$_t_int112_$","typeString":"type(int112)"},"typeName":{"id":14095,"name":"int112","nodeType":"ElementaryTypeName","src":"27083:6:48","typeDescriptions":{}}},"id":14098,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"27083:13:48","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_int112","typeString":"int112"}},"src":"27070:26:48","typeDescriptions":{"typeIdentifier":"t_int112","typeString":"int112"}},"id":14100,"nodeType":"ExpressionStatement","src":"27070:26:48"},{"condition":{"commonType":{"typeIdentifier":"t_int256","typeString":"int256"},"id":14103,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":14101,"name":"downcasted","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":14092,"src":"27110:10:48","typeDescriptions":{"typeIdentifier":"t_int112","typeString":"int112"}},"nodeType":"BinaryOperation","operator":"!=","rightExpression":{"id":14102,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":14089,"src":"27124:5:48","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"src":"27110:19:48","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":14110,"nodeType":"IfStatement","src":"27106:98:48","trueBody":{"id":14109,"nodeType":"Block","src":"27131:73:48","statements":[{"errorCall":{"arguments":[{"hexValue":"313132","id":14105,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"27182:3:48","typeDescriptions":{"typeIdentifier":"t_rational_112_by_1","typeString":"int_const 112"},"value":"112"},{"id":14106,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":14089,"src":"27187:5:48","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_rational_112_by_1","typeString":"int_const 112"},{"typeIdentifier":"t_int256","typeString":"int256"}],"id":14104,"name":"SafeCastOverflowedIntDowncast","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":12748,"src":"27152:29:48","typeDescriptions":{"typeIdentifier":"t_function_error_pure$_t_uint8_$_t_int256_$returns$_t_error_$","typeString":"function (uint8,int256) pure returns (error)"}},"id":14107,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"27152:41:48","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_error","typeString":"error"}},"id":14108,"nodeType":"RevertStatement","src":"27145:48:48"}]}}]},"documentation":{"id":14087,"nodeType":"StructuredDocumentation","src":"26669:312:48","text":" @dev Returns the downcasted int112 from int256, reverting on\n overflow (when the input is less than smallest int112 or\n greater than largest int112).\n Counterpart to Solidity's `int112` operator.\n Requirements:\n - input must fit into 112 bits"},"id":14112,"implemented":true,"kind":"function","modifiers":[],"name":"toInt112","nameLocation":"26995:8:48","nodeType":"FunctionDefinition","parameters":{"id":14090,"nodeType":"ParameterList","parameters":[{"constant":false,"id":14089,"mutability":"mutable","name":"value","nameLocation":"27011:5:48","nodeType":"VariableDeclaration","scope":14112,"src":"27004:12:48","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"},"typeName":{"id":14088,"name":"int256","nodeType":"ElementaryTypeName","src":"27004:6:48","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"visibility":"internal"}],"src":"27003:14:48"},"returnParameters":{"id":14093,"nodeType":"ParameterList","parameters":[{"constant":false,"id":14092,"mutability":"mutable","name":"downcasted","nameLocation":"27048:10:48","nodeType":"VariableDeclaration","scope":14112,"src":"27041:17:48","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_int112","typeString":"int112"},"typeName":{"id":14091,"name":"int112","nodeType":"ElementaryTypeName","src":"27041:6:48","typeDescriptions":{"typeIdentifier":"t_int112","typeString":"int112"}},"visibility":"internal"}],"src":"27040:19:48"},"scope":14491,"src":"26986:224:48","stateMutability":"pure","virtual":false,"visibility":"internal"},{"body":{"id":14137,"nodeType":"Block","src":"27607:150:48","statements":[{"expression":{"id":14125,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":14120,"name":"downcasted","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":14118,"src":"27617:10:48","typeDescriptions":{"typeIdentifier":"t_int104","typeString":"int104"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"arguments":[{"id":14123,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":14115,"src":"27637:5:48","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_int256","typeString":"int256"}],"id":14122,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"27630:6:48","typeDescriptions":{"typeIdentifier":"t_type$_t_int104_$","typeString":"type(int104)"},"typeName":{"id":14121,"name":"int104","nodeType":"ElementaryTypeName","src":"27630:6:48","typeDescriptions":{}}},"id":14124,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"27630:13:48","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_int104","typeString":"int104"}},"src":"27617:26:48","typeDescriptions":{"typeIdentifier":"t_int104","typeString":"int104"}},"id":14126,"nodeType":"ExpressionStatement","src":"27617:26:48"},{"condition":{"commonType":{"typeIdentifier":"t_int256","typeString":"int256"},"id":14129,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":14127,"name":"downcasted","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":14118,"src":"27657:10:48","typeDescriptions":{"typeIdentifier":"t_int104","typeString":"int104"}},"nodeType":"BinaryOperation","operator":"!=","rightExpression":{"id":14128,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":14115,"src":"27671:5:48","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"src":"27657:19:48","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":14136,"nodeType":"IfStatement","src":"27653:98:48","trueBody":{"id":14135,"nodeType":"Block","src":"27678:73:48","statements":[{"errorCall":{"arguments":[{"hexValue":"313034","id":14131,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"27729:3:48","typeDescriptions":{"typeIdentifier":"t_rational_104_by_1","typeString":"int_const 104"},"value":"104"},{"id":14132,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":14115,"src":"27734:5:48","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_rational_104_by_1","typeString":"int_const 104"},{"typeIdentifier":"t_int256","typeString":"int256"}],"id":14130,"name":"SafeCastOverflowedIntDowncast","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":12748,"src":"27699:29:48","typeDescriptions":{"typeIdentifier":"t_function_error_pure$_t_uint8_$_t_int256_$returns$_t_error_$","typeString":"function (uint8,int256) pure returns (error)"}},"id":14133,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"27699:41:48","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_error","typeString":"error"}},"id":14134,"nodeType":"RevertStatement","src":"27692:48:48"}]}}]},"documentation":{"id":14113,"nodeType":"StructuredDocumentation","src":"27216:312:48","text":" @dev Returns the downcasted int104 from int256, reverting on\n overflow (when the input is less than smallest int104 or\n greater than largest int104).\n Counterpart to Solidity's `int104` operator.\n Requirements:\n - input must fit into 104 bits"},"id":14138,"implemented":true,"kind":"function","modifiers":[],"name":"toInt104","nameLocation":"27542:8:48","nodeType":"FunctionDefinition","parameters":{"id":14116,"nodeType":"ParameterList","parameters":[{"constant":false,"id":14115,"mutability":"mutable","name":"value","nameLocation":"27558:5:48","nodeType":"VariableDeclaration","scope":14138,"src":"27551:12:48","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"},"typeName":{"id":14114,"name":"int256","nodeType":"ElementaryTypeName","src":"27551:6:48","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"visibility":"internal"}],"src":"27550:14:48"},"returnParameters":{"id":14119,"nodeType":"ParameterList","parameters":[{"constant":false,"id":14118,"mutability":"mutable","name":"downcasted","nameLocation":"27595:10:48","nodeType":"VariableDeclaration","scope":14138,"src":"27588:17:48","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_int104","typeString":"int104"},"typeName":{"id":14117,"name":"int104","nodeType":"ElementaryTypeName","src":"27588:6:48","typeDescriptions":{"typeIdentifier":"t_int104","typeString":"int104"}},"visibility":"internal"}],"src":"27587:19:48"},"scope":14491,"src":"27533:224:48","stateMutability":"pure","virtual":false,"visibility":"internal"},{"body":{"id":14163,"nodeType":"Block","src":"28147:148:48","statements":[{"expression":{"id":14151,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":14146,"name":"downcasted","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":14144,"src":"28157:10:48","typeDescriptions":{"typeIdentifier":"t_int96","typeString":"int96"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"arguments":[{"id":14149,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":14141,"src":"28176:5:48","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_int256","typeString":"int256"}],"id":14148,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"28170:5:48","typeDescriptions":{"typeIdentifier":"t_type$_t_int96_$","typeString":"type(int96)"},"typeName":{"id":14147,"name":"int96","nodeType":"ElementaryTypeName","src":"28170:5:48","typeDescriptions":{}}},"id":14150,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"28170:12:48","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_int96","typeString":"int96"}},"src":"28157:25:48","typeDescriptions":{"typeIdentifier":"t_int96","typeString":"int96"}},"id":14152,"nodeType":"ExpressionStatement","src":"28157:25:48"},{"condition":{"commonType":{"typeIdentifier":"t_int256","typeString":"int256"},"id":14155,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":14153,"name":"downcasted","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":14144,"src":"28196:10:48","typeDescriptions":{"typeIdentifier":"t_int96","typeString":"int96"}},"nodeType":"BinaryOperation","operator":"!=","rightExpression":{"id":14154,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":14141,"src":"28210:5:48","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"src":"28196:19:48","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":14162,"nodeType":"IfStatement","src":"28192:97:48","trueBody":{"id":14161,"nodeType":"Block","src":"28217:72:48","statements":[{"errorCall":{"arguments":[{"hexValue":"3936","id":14157,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"28268:2:48","typeDescriptions":{"typeIdentifier":"t_rational_96_by_1","typeString":"int_const 96"},"value":"96"},{"id":14158,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":14141,"src":"28272:5:48","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_rational_96_by_1","typeString":"int_const 96"},{"typeIdentifier":"t_int256","typeString":"int256"}],"id":14156,"name":"SafeCastOverflowedIntDowncast","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":12748,"src":"28238:29:48","typeDescriptions":{"typeIdentifier":"t_function_error_pure$_t_uint8_$_t_int256_$returns$_t_error_$","typeString":"function (uint8,int256) pure returns (error)"}},"id":14159,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"28238:40:48","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_error","typeString":"error"}},"id":14160,"nodeType":"RevertStatement","src":"28231:47:48"}]}}]},"documentation":{"id":14139,"nodeType":"StructuredDocumentation","src":"27763:307:48","text":" @dev Returns the downcasted int96 from int256, reverting on\n overflow (when the input is less than smallest int96 or\n greater than largest int96).\n Counterpart to Solidity's `int96` operator.\n Requirements:\n - input must fit into 96 bits"},"id":14164,"implemented":true,"kind":"function","modifiers":[],"name":"toInt96","nameLocation":"28084:7:48","nodeType":"FunctionDefinition","parameters":{"id":14142,"nodeType":"ParameterList","parameters":[{"constant":false,"id":14141,"mutability":"mutable","name":"value","nameLocation":"28099:5:48","nodeType":"VariableDeclaration","scope":14164,"src":"28092:12:48","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"},"typeName":{"id":14140,"name":"int256","nodeType":"ElementaryTypeName","src":"28092:6:48","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"visibility":"internal"}],"src":"28091:14:48"},"returnParameters":{"id":14145,"nodeType":"ParameterList","parameters":[{"constant":false,"id":14144,"mutability":"mutable","name":"downcasted","nameLocation":"28135:10:48","nodeType":"VariableDeclaration","scope":14164,"src":"28129:16:48","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_int96","typeString":"int96"},"typeName":{"id":14143,"name":"int96","nodeType":"ElementaryTypeName","src":"28129:5:48","typeDescriptions":{"typeIdentifier":"t_int96","typeString":"int96"}},"visibility":"internal"}],"src":"28128:18:48"},"scope":14491,"src":"28075:220:48","stateMutability":"pure","virtual":false,"visibility":"internal"},{"body":{"id":14189,"nodeType":"Block","src":"28685:148:48","statements":[{"expression":{"id":14177,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":14172,"name":"downcasted","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":14170,"src":"28695:10:48","typeDescriptions":{"typeIdentifier":"t_int88","typeString":"int88"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"arguments":[{"id":14175,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":14167,"src":"28714:5:48","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_int256","typeString":"int256"}],"id":14174,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"28708:5:48","typeDescriptions":{"typeIdentifier":"t_type$_t_int88_$","typeString":"type(int88)"},"typeName":{"id":14173,"name":"int88","nodeType":"ElementaryTypeName","src":"28708:5:48","typeDescriptions":{}}},"id":14176,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"28708:12:48","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_int88","typeString":"int88"}},"src":"28695:25:48","typeDescriptions":{"typeIdentifier":"t_int88","typeString":"int88"}},"id":14178,"nodeType":"ExpressionStatement","src":"28695:25:48"},{"condition":{"commonType":{"typeIdentifier":"t_int256","typeString":"int256"},"id":14181,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":14179,"name":"downcasted","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":14170,"src":"28734:10:48","typeDescriptions":{"typeIdentifier":"t_int88","typeString":"int88"}},"nodeType":"BinaryOperation","operator":"!=","rightExpression":{"id":14180,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":14167,"src":"28748:5:48","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"src":"28734:19:48","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":14188,"nodeType":"IfStatement","src":"28730:97:48","trueBody":{"id":14187,"nodeType":"Block","src":"28755:72:48","statements":[{"errorCall":{"arguments":[{"hexValue":"3838","id":14183,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"28806:2:48","typeDescriptions":{"typeIdentifier":"t_rational_88_by_1","typeString":"int_const 88"},"value":"88"},{"id":14184,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":14167,"src":"28810:5:48","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_rational_88_by_1","typeString":"int_const 88"},{"typeIdentifier":"t_int256","typeString":"int256"}],"id":14182,"name":"SafeCastOverflowedIntDowncast","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":12748,"src":"28776:29:48","typeDescriptions":{"typeIdentifier":"t_function_error_pure$_t_uint8_$_t_int256_$returns$_t_error_$","typeString":"function (uint8,int256) pure returns (error)"}},"id":14185,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"28776:40:48","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_error","typeString":"error"}},"id":14186,"nodeType":"RevertStatement","src":"28769:47:48"}]}}]},"documentation":{"id":14165,"nodeType":"StructuredDocumentation","src":"28301:307:48","text":" @dev Returns the downcasted int88 from int256, reverting on\n overflow (when the input is less than smallest int88 or\n greater than largest int88).\n Counterpart to Solidity's `int88` operator.\n Requirements:\n - input must fit into 88 bits"},"id":14190,"implemented":true,"kind":"function","modifiers":[],"name":"toInt88","nameLocation":"28622:7:48","nodeType":"FunctionDefinition","parameters":{"id":14168,"nodeType":"ParameterList","parameters":[{"constant":false,"id":14167,"mutability":"mutable","name":"value","nameLocation":"28637:5:48","nodeType":"VariableDeclaration","scope":14190,"src":"28630:12:48","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"},"typeName":{"id":14166,"name":"int256","nodeType":"ElementaryTypeName","src":"28630:6:48","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"visibility":"internal"}],"src":"28629:14:48"},"returnParameters":{"id":14171,"nodeType":"ParameterList","parameters":[{"constant":false,"id":14170,"mutability":"mutable","name":"downcasted","nameLocation":"28673:10:48","nodeType":"VariableDeclaration","scope":14190,"src":"28667:16:48","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_int88","typeString":"int88"},"typeName":{"id":14169,"name":"int88","nodeType":"ElementaryTypeName","src":"28667:5:48","typeDescriptions":{"typeIdentifier":"t_int88","typeString":"int88"}},"visibility":"internal"}],"src":"28666:18:48"},"scope":14491,"src":"28613:220:48","stateMutability":"pure","virtual":false,"visibility":"internal"},{"body":{"id":14215,"nodeType":"Block","src":"29223:148:48","statements":[{"expression":{"id":14203,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":14198,"name":"downcasted","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":14196,"src":"29233:10:48","typeDescriptions":{"typeIdentifier":"t_int80","typeString":"int80"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"arguments":[{"id":14201,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":14193,"src":"29252:5:48","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_int256","typeString":"int256"}],"id":14200,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"29246:5:48","typeDescriptions":{"typeIdentifier":"t_type$_t_int80_$","typeString":"type(int80)"},"typeName":{"id":14199,"name":"int80","nodeType":"ElementaryTypeName","src":"29246:5:48","typeDescriptions":{}}},"id":14202,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"29246:12:48","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_int80","typeString":"int80"}},"src":"29233:25:48","typeDescriptions":{"typeIdentifier":"t_int80","typeString":"int80"}},"id":14204,"nodeType":"ExpressionStatement","src":"29233:25:48"},{"condition":{"commonType":{"typeIdentifier":"t_int256","typeString":"int256"},"id":14207,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":14205,"name":"downcasted","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":14196,"src":"29272:10:48","typeDescriptions":{"typeIdentifier":"t_int80","typeString":"int80"}},"nodeType":"BinaryOperation","operator":"!=","rightExpression":{"id":14206,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":14193,"src":"29286:5:48","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"src":"29272:19:48","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":14214,"nodeType":"IfStatement","src":"29268:97:48","trueBody":{"id":14213,"nodeType":"Block","src":"29293:72:48","statements":[{"errorCall":{"arguments":[{"hexValue":"3830","id":14209,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"29344:2:48","typeDescriptions":{"typeIdentifier":"t_rational_80_by_1","typeString":"int_const 80"},"value":"80"},{"id":14210,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":14193,"src":"29348:5:48","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_rational_80_by_1","typeString":"int_const 80"},{"typeIdentifier":"t_int256","typeString":"int256"}],"id":14208,"name":"SafeCastOverflowedIntDowncast","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":12748,"src":"29314:29:48","typeDescriptions":{"typeIdentifier":"t_function_error_pure$_t_uint8_$_t_int256_$returns$_t_error_$","typeString":"function (uint8,int256) pure returns (error)"}},"id":14211,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"29314:40:48","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_error","typeString":"error"}},"id":14212,"nodeType":"RevertStatement","src":"29307:47:48"}]}}]},"documentation":{"id":14191,"nodeType":"StructuredDocumentation","src":"28839:307:48","text":" @dev Returns the downcasted int80 from int256, reverting on\n overflow (when the input is less than smallest int80 or\n greater than largest int80).\n Counterpart to Solidity's `int80` operator.\n Requirements:\n - input must fit into 80 bits"},"id":14216,"implemented":true,"kind":"function","modifiers":[],"name":"toInt80","nameLocation":"29160:7:48","nodeType":"FunctionDefinition","parameters":{"id":14194,"nodeType":"ParameterList","parameters":[{"constant":false,"id":14193,"mutability":"mutable","name":"value","nameLocation":"29175:5:48","nodeType":"VariableDeclaration","scope":14216,"src":"29168:12:48","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"},"typeName":{"id":14192,"name":"int256","nodeType":"ElementaryTypeName","src":"29168:6:48","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"visibility":"internal"}],"src":"29167:14:48"},"returnParameters":{"id":14197,"nodeType":"ParameterList","parameters":[{"constant":false,"id":14196,"mutability":"mutable","name":"downcasted","nameLocation":"29211:10:48","nodeType":"VariableDeclaration","scope":14216,"src":"29205:16:48","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_int80","typeString":"int80"},"typeName":{"id":14195,"name":"int80","nodeType":"ElementaryTypeName","src":"29205:5:48","typeDescriptions":{"typeIdentifier":"t_int80","typeString":"int80"}},"visibility":"internal"}],"src":"29204:18:48"},"scope":14491,"src":"29151:220:48","stateMutability":"pure","virtual":false,"visibility":"internal"},{"body":{"id":14241,"nodeType":"Block","src":"29761:148:48","statements":[{"expression":{"id":14229,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":14224,"name":"downcasted","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":14222,"src":"29771:10:48","typeDescriptions":{"typeIdentifier":"t_int72","typeString":"int72"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"arguments":[{"id":14227,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":14219,"src":"29790:5:48","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_int256","typeString":"int256"}],"id":14226,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"29784:5:48","typeDescriptions":{"typeIdentifier":"t_type$_t_int72_$","typeString":"type(int72)"},"typeName":{"id":14225,"name":"int72","nodeType":"ElementaryTypeName","src":"29784:5:48","typeDescriptions":{}}},"id":14228,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"29784:12:48","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_int72","typeString":"int72"}},"src":"29771:25:48","typeDescriptions":{"typeIdentifier":"t_int72","typeString":"int72"}},"id":14230,"nodeType":"ExpressionStatement","src":"29771:25:48"},{"condition":{"commonType":{"typeIdentifier":"t_int256","typeString":"int256"},"id":14233,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":14231,"name":"downcasted","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":14222,"src":"29810:10:48","typeDescriptions":{"typeIdentifier":"t_int72","typeString":"int72"}},"nodeType":"BinaryOperation","operator":"!=","rightExpression":{"id":14232,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":14219,"src":"29824:5:48","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"src":"29810:19:48","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":14240,"nodeType":"IfStatement","src":"29806:97:48","trueBody":{"id":14239,"nodeType":"Block","src":"29831:72:48","statements":[{"errorCall":{"arguments":[{"hexValue":"3732","id":14235,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"29882:2:48","typeDescriptions":{"typeIdentifier":"t_rational_72_by_1","typeString":"int_const 72"},"value":"72"},{"id":14236,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":14219,"src":"29886:5:48","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_rational_72_by_1","typeString":"int_const 72"},{"typeIdentifier":"t_int256","typeString":"int256"}],"id":14234,"name":"SafeCastOverflowedIntDowncast","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":12748,"src":"29852:29:48","typeDescriptions":{"typeIdentifier":"t_function_error_pure$_t_uint8_$_t_int256_$returns$_t_error_$","typeString":"function (uint8,int256) pure returns (error)"}},"id":14237,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"29852:40:48","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_error","typeString":"error"}},"id":14238,"nodeType":"RevertStatement","src":"29845:47:48"}]}}]},"documentation":{"id":14217,"nodeType":"StructuredDocumentation","src":"29377:307:48","text":" @dev Returns the downcasted int72 from int256, reverting on\n overflow (when the input is less than smallest int72 or\n greater than largest int72).\n Counterpart to Solidity's `int72` operator.\n Requirements:\n - input must fit into 72 bits"},"id":14242,"implemented":true,"kind":"function","modifiers":[],"name":"toInt72","nameLocation":"29698:7:48","nodeType":"FunctionDefinition","parameters":{"id":14220,"nodeType":"ParameterList","parameters":[{"constant":false,"id":14219,"mutability":"mutable","name":"value","nameLocation":"29713:5:48","nodeType":"VariableDeclaration","scope":14242,"src":"29706:12:48","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"},"typeName":{"id":14218,"name":"int256","nodeType":"ElementaryTypeName","src":"29706:6:48","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"visibility":"internal"}],"src":"29705:14:48"},"returnParameters":{"id":14223,"nodeType":"ParameterList","parameters":[{"constant":false,"id":14222,"mutability":"mutable","name":"downcasted","nameLocation":"29749:10:48","nodeType":"VariableDeclaration","scope":14242,"src":"29743:16:48","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_int72","typeString":"int72"},"typeName":{"id":14221,"name":"int72","nodeType":"ElementaryTypeName","src":"29743:5:48","typeDescriptions":{"typeIdentifier":"t_int72","typeString":"int72"}},"visibility":"internal"}],"src":"29742:18:48"},"scope":14491,"src":"29689:220:48","stateMutability":"pure","virtual":false,"visibility":"internal"},{"body":{"id":14267,"nodeType":"Block","src":"30299:148:48","statements":[{"expression":{"id":14255,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":14250,"name":"downcasted","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":14248,"src":"30309:10:48","typeDescriptions":{"typeIdentifier":"t_int64","typeString":"int64"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"arguments":[{"id":14253,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":14245,"src":"30328:5:48","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_int256","typeString":"int256"}],"id":14252,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"30322:5:48","typeDescriptions":{"typeIdentifier":"t_type$_t_int64_$","typeString":"type(int64)"},"typeName":{"id":14251,"name":"int64","nodeType":"ElementaryTypeName","src":"30322:5:48","typeDescriptions":{}}},"id":14254,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"30322:12:48","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_int64","typeString":"int64"}},"src":"30309:25:48","typeDescriptions":{"typeIdentifier":"t_int64","typeString":"int64"}},"id":14256,"nodeType":"ExpressionStatement","src":"30309:25:48"},{"condition":{"commonType":{"typeIdentifier":"t_int256","typeString":"int256"},"id":14259,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":14257,"name":"downcasted","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":14248,"src":"30348:10:48","typeDescriptions":{"typeIdentifier":"t_int64","typeString":"int64"}},"nodeType":"BinaryOperation","operator":"!=","rightExpression":{"id":14258,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":14245,"src":"30362:5:48","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"src":"30348:19:48","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":14266,"nodeType":"IfStatement","src":"30344:97:48","trueBody":{"id":14265,"nodeType":"Block","src":"30369:72:48","statements":[{"errorCall":{"arguments":[{"hexValue":"3634","id":14261,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"30420:2:48","typeDescriptions":{"typeIdentifier":"t_rational_64_by_1","typeString":"int_const 64"},"value":"64"},{"id":14262,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":14245,"src":"30424:5:48","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_rational_64_by_1","typeString":"int_const 64"},{"typeIdentifier":"t_int256","typeString":"int256"}],"id":14260,"name":"SafeCastOverflowedIntDowncast","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":12748,"src":"30390:29:48","typeDescriptions":{"typeIdentifier":"t_function_error_pure$_t_uint8_$_t_int256_$returns$_t_error_$","typeString":"function (uint8,int256) pure returns (error)"}},"id":14263,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"30390:40:48","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_error","typeString":"error"}},"id":14264,"nodeType":"RevertStatement","src":"30383:47:48"}]}}]},"documentation":{"id":14243,"nodeType":"StructuredDocumentation","src":"29915:307:48","text":" @dev Returns the downcasted int64 from int256, reverting on\n overflow (when the input is less than smallest int64 or\n greater than largest int64).\n Counterpart to Solidity's `int64` operator.\n Requirements:\n - input must fit into 64 bits"},"id":14268,"implemented":true,"kind":"function","modifiers":[],"name":"toInt64","nameLocation":"30236:7:48","nodeType":"FunctionDefinition","parameters":{"id":14246,"nodeType":"ParameterList","parameters":[{"constant":false,"id":14245,"mutability":"mutable","name":"value","nameLocation":"30251:5:48","nodeType":"VariableDeclaration","scope":14268,"src":"30244:12:48","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"},"typeName":{"id":14244,"name":"int256","nodeType":"ElementaryTypeName","src":"30244:6:48","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"visibility":"internal"}],"src":"30243:14:48"},"returnParameters":{"id":14249,"nodeType":"ParameterList","parameters":[{"constant":false,"id":14248,"mutability":"mutable","name":"downcasted","nameLocation":"30287:10:48","nodeType":"VariableDeclaration","scope":14268,"src":"30281:16:48","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_int64","typeString":"int64"},"typeName":{"id":14247,"name":"int64","nodeType":"ElementaryTypeName","src":"30281:5:48","typeDescriptions":{"typeIdentifier":"t_int64","typeString":"int64"}},"visibility":"internal"}],"src":"30280:18:48"},"scope":14491,"src":"30227:220:48","stateMutability":"pure","virtual":false,"visibility":"internal"},{"body":{"id":14293,"nodeType":"Block","src":"30837:148:48","statements":[{"expression":{"id":14281,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":14276,"name":"downcasted","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":14274,"src":"30847:10:48","typeDescriptions":{"typeIdentifier":"t_int56","typeString":"int56"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"arguments":[{"id":14279,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":14271,"src":"30866:5:48","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_int256","typeString":"int256"}],"id":14278,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"30860:5:48","typeDescriptions":{"typeIdentifier":"t_type$_t_int56_$","typeString":"type(int56)"},"typeName":{"id":14277,"name":"int56","nodeType":"ElementaryTypeName","src":"30860:5:48","typeDescriptions":{}}},"id":14280,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"30860:12:48","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_int56","typeString":"int56"}},"src":"30847:25:48","typeDescriptions":{"typeIdentifier":"t_int56","typeString":"int56"}},"id":14282,"nodeType":"ExpressionStatement","src":"30847:25:48"},{"condition":{"commonType":{"typeIdentifier":"t_int256","typeString":"int256"},"id":14285,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":14283,"name":"downcasted","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":14274,"src":"30886:10:48","typeDescriptions":{"typeIdentifier":"t_int56","typeString":"int56"}},"nodeType":"BinaryOperation","operator":"!=","rightExpression":{"id":14284,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":14271,"src":"30900:5:48","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"src":"30886:19:48","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":14292,"nodeType":"IfStatement","src":"30882:97:48","trueBody":{"id":14291,"nodeType":"Block","src":"30907:72:48","statements":[{"errorCall":{"arguments":[{"hexValue":"3536","id":14287,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"30958:2:48","typeDescriptions":{"typeIdentifier":"t_rational_56_by_1","typeString":"int_const 56"},"value":"56"},{"id":14288,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":14271,"src":"30962:5:48","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_rational_56_by_1","typeString":"int_const 56"},{"typeIdentifier":"t_int256","typeString":"int256"}],"id":14286,"name":"SafeCastOverflowedIntDowncast","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":12748,"src":"30928:29:48","typeDescriptions":{"typeIdentifier":"t_function_error_pure$_t_uint8_$_t_int256_$returns$_t_error_$","typeString":"function (uint8,int256) pure returns (error)"}},"id":14289,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"30928:40:48","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_error","typeString":"error"}},"id":14290,"nodeType":"RevertStatement","src":"30921:47:48"}]}}]},"documentation":{"id":14269,"nodeType":"StructuredDocumentation","src":"30453:307:48","text":" @dev Returns the downcasted int56 from int256, reverting on\n overflow (when the input is less than smallest int56 or\n greater than largest int56).\n Counterpart to Solidity's `int56` operator.\n Requirements:\n - input must fit into 56 bits"},"id":14294,"implemented":true,"kind":"function","modifiers":[],"name":"toInt56","nameLocation":"30774:7:48","nodeType":"FunctionDefinition","parameters":{"id":14272,"nodeType":"ParameterList","parameters":[{"constant":false,"id":14271,"mutability":"mutable","name":"value","nameLocation":"30789:5:48","nodeType":"VariableDeclaration","scope":14294,"src":"30782:12:48","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"},"typeName":{"id":14270,"name":"int256","nodeType":"ElementaryTypeName","src":"30782:6:48","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"visibility":"internal"}],"src":"30781:14:48"},"returnParameters":{"id":14275,"nodeType":"ParameterList","parameters":[{"constant":false,"id":14274,"mutability":"mutable","name":"downcasted","nameLocation":"30825:10:48","nodeType":"VariableDeclaration","scope":14294,"src":"30819:16:48","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_int56","typeString":"int56"},"typeName":{"id":14273,"name":"int56","nodeType":"ElementaryTypeName","src":"30819:5:48","typeDescriptions":{"typeIdentifier":"t_int56","typeString":"int56"}},"visibility":"internal"}],"src":"30818:18:48"},"scope":14491,"src":"30765:220:48","stateMutability":"pure","virtual":false,"visibility":"internal"},{"body":{"id":14319,"nodeType":"Block","src":"31375:148:48","statements":[{"expression":{"id":14307,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":14302,"name":"downcasted","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":14300,"src":"31385:10:48","typeDescriptions":{"typeIdentifier":"t_int48","typeString":"int48"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"arguments":[{"id":14305,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":14297,"src":"31404:5:48","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_int256","typeString":"int256"}],"id":14304,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"31398:5:48","typeDescriptions":{"typeIdentifier":"t_type$_t_int48_$","typeString":"type(int48)"},"typeName":{"id":14303,"name":"int48","nodeType":"ElementaryTypeName","src":"31398:5:48","typeDescriptions":{}}},"id":14306,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"31398:12:48","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_int48","typeString":"int48"}},"src":"31385:25:48","typeDescriptions":{"typeIdentifier":"t_int48","typeString":"int48"}},"id":14308,"nodeType":"ExpressionStatement","src":"31385:25:48"},{"condition":{"commonType":{"typeIdentifier":"t_int256","typeString":"int256"},"id":14311,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":14309,"name":"downcasted","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":14300,"src":"31424:10:48","typeDescriptions":{"typeIdentifier":"t_int48","typeString":"int48"}},"nodeType":"BinaryOperation","operator":"!=","rightExpression":{"id":14310,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":14297,"src":"31438:5:48","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"src":"31424:19:48","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":14318,"nodeType":"IfStatement","src":"31420:97:48","trueBody":{"id":14317,"nodeType":"Block","src":"31445:72:48","statements":[{"errorCall":{"arguments":[{"hexValue":"3438","id":14313,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"31496:2:48","typeDescriptions":{"typeIdentifier":"t_rational_48_by_1","typeString":"int_const 48"},"value":"48"},{"id":14314,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":14297,"src":"31500:5:48","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_rational_48_by_1","typeString":"int_const 48"},{"typeIdentifier":"t_int256","typeString":"int256"}],"id":14312,"name":"SafeCastOverflowedIntDowncast","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":12748,"src":"31466:29:48","typeDescriptions":{"typeIdentifier":"t_function_error_pure$_t_uint8_$_t_int256_$returns$_t_error_$","typeString":"function (uint8,int256) pure returns (error)"}},"id":14315,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"31466:40:48","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_error","typeString":"error"}},"id":14316,"nodeType":"RevertStatement","src":"31459:47:48"}]}}]},"documentation":{"id":14295,"nodeType":"StructuredDocumentation","src":"30991:307:48","text":" @dev Returns the downcasted int48 from int256, reverting on\n overflow (when the input is less than smallest int48 or\n greater than largest int48).\n Counterpart to Solidity's `int48` operator.\n Requirements:\n - input must fit into 48 bits"},"id":14320,"implemented":true,"kind":"function","modifiers":[],"name":"toInt48","nameLocation":"31312:7:48","nodeType":"FunctionDefinition","parameters":{"id":14298,"nodeType":"ParameterList","parameters":[{"constant":false,"id":14297,"mutability":"mutable","name":"value","nameLocation":"31327:5:48","nodeType":"VariableDeclaration","scope":14320,"src":"31320:12:48","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"},"typeName":{"id":14296,"name":"int256","nodeType":"ElementaryTypeName","src":"31320:6:48","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"visibility":"internal"}],"src":"31319:14:48"},"returnParameters":{"id":14301,"nodeType":"ParameterList","parameters":[{"constant":false,"id":14300,"mutability":"mutable","name":"downcasted","nameLocation":"31363:10:48","nodeType":"VariableDeclaration","scope":14320,"src":"31357:16:48","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_int48","typeString":"int48"},"typeName":{"id":14299,"name":"int48","nodeType":"ElementaryTypeName","src":"31357:5:48","typeDescriptions":{"typeIdentifier":"t_int48","typeString":"int48"}},"visibility":"internal"}],"src":"31356:18:48"},"scope":14491,"src":"31303:220:48","stateMutability":"pure","virtual":false,"visibility":"internal"},{"body":{"id":14345,"nodeType":"Block","src":"31913:148:48","statements":[{"expression":{"id":14333,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":14328,"name":"downcasted","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":14326,"src":"31923:10:48","typeDescriptions":{"typeIdentifier":"t_int40","typeString":"int40"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"arguments":[{"id":14331,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":14323,"src":"31942:5:48","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_int256","typeString":"int256"}],"id":14330,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"31936:5:48","typeDescriptions":{"typeIdentifier":"t_type$_t_int40_$","typeString":"type(int40)"},"typeName":{"id":14329,"name":"int40","nodeType":"ElementaryTypeName","src":"31936:5:48","typeDescriptions":{}}},"id":14332,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"31936:12:48","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_int40","typeString":"int40"}},"src":"31923:25:48","typeDescriptions":{"typeIdentifier":"t_int40","typeString":"int40"}},"id":14334,"nodeType":"ExpressionStatement","src":"31923:25:48"},{"condition":{"commonType":{"typeIdentifier":"t_int256","typeString":"int256"},"id":14337,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":14335,"name":"downcasted","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":14326,"src":"31962:10:48","typeDescriptions":{"typeIdentifier":"t_int40","typeString":"int40"}},"nodeType":"BinaryOperation","operator":"!=","rightExpression":{"id":14336,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":14323,"src":"31976:5:48","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"src":"31962:19:48","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":14344,"nodeType":"IfStatement","src":"31958:97:48","trueBody":{"id":14343,"nodeType":"Block","src":"31983:72:48","statements":[{"errorCall":{"arguments":[{"hexValue":"3430","id":14339,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"32034:2:48","typeDescriptions":{"typeIdentifier":"t_rational_40_by_1","typeString":"int_const 40"},"value":"40"},{"id":14340,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":14323,"src":"32038:5:48","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_rational_40_by_1","typeString":"int_const 40"},{"typeIdentifier":"t_int256","typeString":"int256"}],"id":14338,"name":"SafeCastOverflowedIntDowncast","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":12748,"src":"32004:29:48","typeDescriptions":{"typeIdentifier":"t_function_error_pure$_t_uint8_$_t_int256_$returns$_t_error_$","typeString":"function (uint8,int256) pure returns (error)"}},"id":14341,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"32004:40:48","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_error","typeString":"error"}},"id":14342,"nodeType":"RevertStatement","src":"31997:47:48"}]}}]},"documentation":{"id":14321,"nodeType":"StructuredDocumentation","src":"31529:307:48","text":" @dev Returns the downcasted int40 from int256, reverting on\n overflow (when the input is less than smallest int40 or\n greater than largest int40).\n Counterpart to Solidity's `int40` operator.\n Requirements:\n - input must fit into 40 bits"},"id":14346,"implemented":true,"kind":"function","modifiers":[],"name":"toInt40","nameLocation":"31850:7:48","nodeType":"FunctionDefinition","parameters":{"id":14324,"nodeType":"ParameterList","parameters":[{"constant":false,"id":14323,"mutability":"mutable","name":"value","nameLocation":"31865:5:48","nodeType":"VariableDeclaration","scope":14346,"src":"31858:12:48","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"},"typeName":{"id":14322,"name":"int256","nodeType":"ElementaryTypeName","src":"31858:6:48","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"visibility":"internal"}],"src":"31857:14:48"},"returnParameters":{"id":14327,"nodeType":"ParameterList","parameters":[{"constant":false,"id":14326,"mutability":"mutable","name":"downcasted","nameLocation":"31901:10:48","nodeType":"VariableDeclaration","scope":14346,"src":"31895:16:48","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_int40","typeString":"int40"},"typeName":{"id":14325,"name":"int40","nodeType":"ElementaryTypeName","src":"31895:5:48","typeDescriptions":{"typeIdentifier":"t_int40","typeString":"int40"}},"visibility":"internal"}],"src":"31894:18:48"},"scope":14491,"src":"31841:220:48","stateMutability":"pure","virtual":false,"visibility":"internal"},{"body":{"id":14371,"nodeType":"Block","src":"32451:148:48","statements":[{"expression":{"id":14359,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":14354,"name":"downcasted","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":14352,"src":"32461:10:48","typeDescriptions":{"typeIdentifier":"t_int32","typeString":"int32"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"arguments":[{"id":14357,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":14349,"src":"32480:5:48","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_int256","typeString":"int256"}],"id":14356,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"32474:5:48","typeDescriptions":{"typeIdentifier":"t_type$_t_int32_$","typeString":"type(int32)"},"typeName":{"id":14355,"name":"int32","nodeType":"ElementaryTypeName","src":"32474:5:48","typeDescriptions":{}}},"id":14358,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"32474:12:48","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_int32","typeString":"int32"}},"src":"32461:25:48","typeDescriptions":{"typeIdentifier":"t_int32","typeString":"int32"}},"id":14360,"nodeType":"ExpressionStatement","src":"32461:25:48"},{"condition":{"commonType":{"typeIdentifier":"t_int256","typeString":"int256"},"id":14363,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":14361,"name":"downcasted","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":14352,"src":"32500:10:48","typeDescriptions":{"typeIdentifier":"t_int32","typeString":"int32"}},"nodeType":"BinaryOperation","operator":"!=","rightExpression":{"id":14362,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":14349,"src":"32514:5:48","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"src":"32500:19:48","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":14370,"nodeType":"IfStatement","src":"32496:97:48","trueBody":{"id":14369,"nodeType":"Block","src":"32521:72:48","statements":[{"errorCall":{"arguments":[{"hexValue":"3332","id":14365,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"32572:2:48","typeDescriptions":{"typeIdentifier":"t_rational_32_by_1","typeString":"int_const 32"},"value":"32"},{"id":14366,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":14349,"src":"32576:5:48","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_rational_32_by_1","typeString":"int_const 32"},{"typeIdentifier":"t_int256","typeString":"int256"}],"id":14364,"name":"SafeCastOverflowedIntDowncast","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":12748,"src":"32542:29:48","typeDescriptions":{"typeIdentifier":"t_function_error_pure$_t_uint8_$_t_int256_$returns$_t_error_$","typeString":"function (uint8,int256) pure returns (error)"}},"id":14367,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"32542:40:48","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_error","typeString":"error"}},"id":14368,"nodeType":"RevertStatement","src":"32535:47:48"}]}}]},"documentation":{"id":14347,"nodeType":"StructuredDocumentation","src":"32067:307:48","text":" @dev Returns the downcasted int32 from int256, reverting on\n overflow (when the input is less than smallest int32 or\n greater than largest int32).\n Counterpart to Solidity's `int32` operator.\n Requirements:\n - input must fit into 32 bits"},"id":14372,"implemented":true,"kind":"function","modifiers":[],"name":"toInt32","nameLocation":"32388:7:48","nodeType":"FunctionDefinition","parameters":{"id":14350,"nodeType":"ParameterList","parameters":[{"constant":false,"id":14349,"mutability":"mutable","name":"value","nameLocation":"32403:5:48","nodeType":"VariableDeclaration","scope":14372,"src":"32396:12:48","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"},"typeName":{"id":14348,"name":"int256","nodeType":"ElementaryTypeName","src":"32396:6:48","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"visibility":"internal"}],"src":"32395:14:48"},"returnParameters":{"id":14353,"nodeType":"ParameterList","parameters":[{"constant":false,"id":14352,"mutability":"mutable","name":"downcasted","nameLocation":"32439:10:48","nodeType":"VariableDeclaration","scope":14372,"src":"32433:16:48","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_int32","typeString":"int32"},"typeName":{"id":14351,"name":"int32","nodeType":"ElementaryTypeName","src":"32433:5:48","typeDescriptions":{"typeIdentifier":"t_int32","typeString":"int32"}},"visibility":"internal"}],"src":"32432:18:48"},"scope":14491,"src":"32379:220:48","stateMutability":"pure","virtual":false,"visibility":"internal"},{"body":{"id":14397,"nodeType":"Block","src":"32989:148:48","statements":[{"expression":{"id":14385,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":14380,"name":"downcasted","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":14378,"src":"32999:10:48","typeDescriptions":{"typeIdentifier":"t_int24","typeString":"int24"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"arguments":[{"id":14383,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":14375,"src":"33018:5:48","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_int256","typeString":"int256"}],"id":14382,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"33012:5:48","typeDescriptions":{"typeIdentifier":"t_type$_t_int24_$","typeString":"type(int24)"},"typeName":{"id":14381,"name":"int24","nodeType":"ElementaryTypeName","src":"33012:5:48","typeDescriptions":{}}},"id":14384,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"33012:12:48","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_int24","typeString":"int24"}},"src":"32999:25:48","typeDescriptions":{"typeIdentifier":"t_int24","typeString":"int24"}},"id":14386,"nodeType":"ExpressionStatement","src":"32999:25:48"},{"condition":{"commonType":{"typeIdentifier":"t_int256","typeString":"int256"},"id":14389,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":14387,"name":"downcasted","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":14378,"src":"33038:10:48","typeDescriptions":{"typeIdentifier":"t_int24","typeString":"int24"}},"nodeType":"BinaryOperation","operator":"!=","rightExpression":{"id":14388,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":14375,"src":"33052:5:48","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"src":"33038:19:48","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":14396,"nodeType":"IfStatement","src":"33034:97:48","trueBody":{"id":14395,"nodeType":"Block","src":"33059:72:48","statements":[{"errorCall":{"arguments":[{"hexValue":"3234","id":14391,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"33110:2:48","typeDescriptions":{"typeIdentifier":"t_rational_24_by_1","typeString":"int_const 24"},"value":"24"},{"id":14392,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":14375,"src":"33114:5:48","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_rational_24_by_1","typeString":"int_const 24"},{"typeIdentifier":"t_int256","typeString":"int256"}],"id":14390,"name":"SafeCastOverflowedIntDowncast","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":12748,"src":"33080:29:48","typeDescriptions":{"typeIdentifier":"t_function_error_pure$_t_uint8_$_t_int256_$returns$_t_error_$","typeString":"function (uint8,int256) pure returns (error)"}},"id":14393,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"33080:40:48","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_error","typeString":"error"}},"id":14394,"nodeType":"RevertStatement","src":"33073:47:48"}]}}]},"documentation":{"id":14373,"nodeType":"StructuredDocumentation","src":"32605:307:48","text":" @dev Returns the downcasted int24 from int256, reverting on\n overflow (when the input is less than smallest int24 or\n greater than largest int24).\n Counterpart to Solidity's `int24` operator.\n Requirements:\n - input must fit into 24 bits"},"id":14398,"implemented":true,"kind":"function","modifiers":[],"name":"toInt24","nameLocation":"32926:7:48","nodeType":"FunctionDefinition","parameters":{"id":14376,"nodeType":"ParameterList","parameters":[{"constant":false,"id":14375,"mutability":"mutable","name":"value","nameLocation":"32941:5:48","nodeType":"VariableDeclaration","scope":14398,"src":"32934:12:48","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"},"typeName":{"id":14374,"name":"int256","nodeType":"ElementaryTypeName","src":"32934:6:48","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"visibility":"internal"}],"src":"32933:14:48"},"returnParameters":{"id":14379,"nodeType":"ParameterList","parameters":[{"constant":false,"id":14378,"mutability":"mutable","name":"downcasted","nameLocation":"32977:10:48","nodeType":"VariableDeclaration","scope":14398,"src":"32971:16:48","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_int24","typeString":"int24"},"typeName":{"id":14377,"name":"int24","nodeType":"ElementaryTypeName","src":"32971:5:48","typeDescriptions":{"typeIdentifier":"t_int24","typeString":"int24"}},"visibility":"internal"}],"src":"32970:18:48"},"scope":14491,"src":"32917:220:48","stateMutability":"pure","virtual":false,"visibility":"internal"},{"body":{"id":14423,"nodeType":"Block","src":"33527:148:48","statements":[{"expression":{"id":14411,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":14406,"name":"downcasted","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":14404,"src":"33537:10:48","typeDescriptions":{"typeIdentifier":"t_int16","typeString":"int16"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"arguments":[{"id":14409,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":14401,"src":"33556:5:48","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_int256","typeString":"int256"}],"id":14408,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"33550:5:48","typeDescriptions":{"typeIdentifier":"t_type$_t_int16_$","typeString":"type(int16)"},"typeName":{"id":14407,"name":"int16","nodeType":"ElementaryTypeName","src":"33550:5:48","typeDescriptions":{}}},"id":14410,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"33550:12:48","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_int16","typeString":"int16"}},"src":"33537:25:48","typeDescriptions":{"typeIdentifier":"t_int16","typeString":"int16"}},"id":14412,"nodeType":"ExpressionStatement","src":"33537:25:48"},{"condition":{"commonType":{"typeIdentifier":"t_int256","typeString":"int256"},"id":14415,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":14413,"name":"downcasted","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":14404,"src":"33576:10:48","typeDescriptions":{"typeIdentifier":"t_int16","typeString":"int16"}},"nodeType":"BinaryOperation","operator":"!=","rightExpression":{"id":14414,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":14401,"src":"33590:5:48","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"src":"33576:19:48","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":14422,"nodeType":"IfStatement","src":"33572:97:48","trueBody":{"id":14421,"nodeType":"Block","src":"33597:72:48","statements":[{"errorCall":{"arguments":[{"hexValue":"3136","id":14417,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"33648:2:48","typeDescriptions":{"typeIdentifier":"t_rational_16_by_1","typeString":"int_const 16"},"value":"16"},{"id":14418,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":14401,"src":"33652:5:48","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_rational_16_by_1","typeString":"int_const 16"},{"typeIdentifier":"t_int256","typeString":"int256"}],"id":14416,"name":"SafeCastOverflowedIntDowncast","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":12748,"src":"33618:29:48","typeDescriptions":{"typeIdentifier":"t_function_error_pure$_t_uint8_$_t_int256_$returns$_t_error_$","typeString":"function (uint8,int256) pure returns (error)"}},"id":14419,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"33618:40:48","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_error","typeString":"error"}},"id":14420,"nodeType":"RevertStatement","src":"33611:47:48"}]}}]},"documentation":{"id":14399,"nodeType":"StructuredDocumentation","src":"33143:307:48","text":" @dev Returns the downcasted int16 from int256, reverting on\n overflow (when the input is less than smallest int16 or\n greater than largest int16).\n Counterpart to Solidity's `int16` operator.\n Requirements:\n - input must fit into 16 bits"},"id":14424,"implemented":true,"kind":"function","modifiers":[],"name":"toInt16","nameLocation":"33464:7:48","nodeType":"FunctionDefinition","parameters":{"id":14402,"nodeType":"ParameterList","parameters":[{"constant":false,"id":14401,"mutability":"mutable","name":"value","nameLocation":"33479:5:48","nodeType":"VariableDeclaration","scope":14424,"src":"33472:12:48","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"},"typeName":{"id":14400,"name":"int256","nodeType":"ElementaryTypeName","src":"33472:6:48","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"visibility":"internal"}],"src":"33471:14:48"},"returnParameters":{"id":14405,"nodeType":"ParameterList","parameters":[{"constant":false,"id":14404,"mutability":"mutable","name":"downcasted","nameLocation":"33515:10:48","nodeType":"VariableDeclaration","scope":14424,"src":"33509:16:48","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_int16","typeString":"int16"},"typeName":{"id":14403,"name":"int16","nodeType":"ElementaryTypeName","src":"33509:5:48","typeDescriptions":{"typeIdentifier":"t_int16","typeString":"int16"}},"visibility":"internal"}],"src":"33508:18:48"},"scope":14491,"src":"33455:220:48","stateMutability":"pure","virtual":false,"visibility":"internal"},{"body":{"id":14449,"nodeType":"Block","src":"34058:146:48","statements":[{"expression":{"id":14437,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":14432,"name":"downcasted","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":14430,"src":"34068:10:48","typeDescriptions":{"typeIdentifier":"t_int8","typeString":"int8"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"arguments":[{"id":14435,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":14427,"src":"34086:5:48","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_int256","typeString":"int256"}],"id":14434,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"34081:4:48","typeDescriptions":{"typeIdentifier":"t_type$_t_int8_$","typeString":"type(int8)"},"typeName":{"id":14433,"name":"int8","nodeType":"ElementaryTypeName","src":"34081:4:48","typeDescriptions":{}}},"id":14436,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"34081:11:48","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_int8","typeString":"int8"}},"src":"34068:24:48","typeDescriptions":{"typeIdentifier":"t_int8","typeString":"int8"}},"id":14438,"nodeType":"ExpressionStatement","src":"34068:24:48"},{"condition":{"commonType":{"typeIdentifier":"t_int256","typeString":"int256"},"id":14441,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":14439,"name":"downcasted","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":14430,"src":"34106:10:48","typeDescriptions":{"typeIdentifier":"t_int8","typeString":"int8"}},"nodeType":"BinaryOperation","operator":"!=","rightExpression":{"id":14440,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":14427,"src":"34120:5:48","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"src":"34106:19:48","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":14448,"nodeType":"IfStatement","src":"34102:96:48","trueBody":{"id":14447,"nodeType":"Block","src":"34127:71:48","statements":[{"errorCall":{"arguments":[{"hexValue":"38","id":14443,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"34178:1:48","typeDescriptions":{"typeIdentifier":"t_rational_8_by_1","typeString":"int_const 8"},"value":"8"},{"id":14444,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":14427,"src":"34181:5:48","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_rational_8_by_1","typeString":"int_const 8"},{"typeIdentifier":"t_int256","typeString":"int256"}],"id":14442,"name":"SafeCastOverflowedIntDowncast","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":12748,"src":"34148:29:48","typeDescriptions":{"typeIdentifier":"t_function_error_pure$_t_uint8_$_t_int256_$returns$_t_error_$","typeString":"function (uint8,int256) pure returns (error)"}},"id":14445,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"34148:39:48","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_error","typeString":"error"}},"id":14446,"nodeType":"RevertStatement","src":"34141:46:48"}]}}]},"documentation":{"id":14425,"nodeType":"StructuredDocumentation","src":"33681:302:48","text":" @dev Returns the downcasted int8 from int256, reverting on\n overflow (when the input is less than smallest int8 or\n greater than largest int8).\n Counterpart to Solidity's `int8` operator.\n Requirements:\n - input must fit into 8 bits"},"id":14450,"implemented":true,"kind":"function","modifiers":[],"name":"toInt8","nameLocation":"33997:6:48","nodeType":"FunctionDefinition","parameters":{"id":14428,"nodeType":"ParameterList","parameters":[{"constant":false,"id":14427,"mutability":"mutable","name":"value","nameLocation":"34011:5:48","nodeType":"VariableDeclaration","scope":14450,"src":"34004:12:48","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"},"typeName":{"id":14426,"name":"int256","nodeType":"ElementaryTypeName","src":"34004:6:48","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"visibility":"internal"}],"src":"34003:14:48"},"returnParameters":{"id":14431,"nodeType":"ParameterList","parameters":[{"constant":false,"id":14430,"mutability":"mutable","name":"downcasted","nameLocation":"34046:10:48","nodeType":"VariableDeclaration","scope":14450,"src":"34041:15:48","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_int8","typeString":"int8"},"typeName":{"id":14429,"name":"int8","nodeType":"ElementaryTypeName","src":"34041:4:48","typeDescriptions":{"typeIdentifier":"t_int8","typeString":"int8"}},"visibility":"internal"}],"src":"34040:17:48"},"scope":14491,"src":"33988:216:48","stateMutability":"pure","virtual":false,"visibility":"internal"},{"body":{"id":14479,"nodeType":"Block","src":"34444:250:48","statements":[{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":14467,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":14458,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":14453,"src":"34557:5:48","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">","rightExpression":{"arguments":[{"expression":{"arguments":[{"id":14463,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"34578:6:48","typeDescriptions":{"typeIdentifier":"t_type$_t_int256_$","typeString":"type(int256)"},"typeName":{"id":14462,"name":"int256","nodeType":"ElementaryTypeName","src":"34578:6:48","typeDescriptions":{}}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_type$_t_int256_$","typeString":"type(int256)"}],"id":14461,"name":"type","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-27,"src":"34573:4:48","typeDescriptions":{"typeIdentifier":"t_function_metatype_pure$__$returns$__$","typeString":"function () pure"}},"id":14464,"isConstant":false,"isLValue":false,"isPure":true,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"34573:12:48","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_magic_meta_type_t_int256","typeString":"type(int256)"}},"id":14465,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberLocation":"34586:3:48","memberName":"max","nodeType":"MemberAccess","src":"34573:16:48","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_int256","typeString":"int256"}],"id":14460,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"34565:7:48","typeDescriptions":{"typeIdentifier":"t_type$_t_uint256_$","typeString":"type(uint256)"},"typeName":{"id":14459,"name":"uint256","nodeType":"ElementaryTypeName","src":"34565:7:48","typeDescriptions":{}}},"id":14466,"isConstant":false,"isLValue":false,"isPure":true,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"34565:25:48","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"34557:33:48","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":14473,"nodeType":"IfStatement","src":"34553:105:48","trueBody":{"id":14472,"nodeType":"Block","src":"34592:66:48","statements":[{"errorCall":{"arguments":[{"id":14469,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":14453,"src":"34641:5:48","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":14468,"name":"SafeCastOverflowedUintToInt","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":12753,"src":"34613:27:48","typeDescriptions":{"typeIdentifier":"t_function_error_pure$_t_uint256_$returns$_t_error_$","typeString":"function (uint256) pure returns (error)"}},"id":14470,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"34613:34:48","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_error","typeString":"error"}},"id":14471,"nodeType":"RevertStatement","src":"34606:41:48"}]}},{"expression":{"arguments":[{"id":14476,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":14453,"src":"34681:5:48","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":14475,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"34674:6:48","typeDescriptions":{"typeIdentifier":"t_type$_t_int256_$","typeString":"type(int256)"},"typeName":{"id":14474,"name":"int256","nodeType":"ElementaryTypeName","src":"34674:6:48","typeDescriptions":{}}},"id":14477,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"34674:13:48","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"functionReturnParameters":14457,"id":14478,"nodeType":"Return","src":"34667:20:48"}]},"documentation":{"id":14451,"nodeType":"StructuredDocumentation","src":"34210:165:48","text":" @dev Converts an unsigned uint256 into a signed int256.\n Requirements:\n - input must be less than or equal to maxInt256."},"id":14480,"implemented":true,"kind":"function","modifiers":[],"name":"toInt256","nameLocation":"34389:8:48","nodeType":"FunctionDefinition","parameters":{"id":14454,"nodeType":"ParameterList","parameters":[{"constant":false,"id":14453,"mutability":"mutable","name":"value","nameLocation":"34406:5:48","nodeType":"VariableDeclaration","scope":14480,"src":"34398:13:48","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":14452,"name":"uint256","nodeType":"ElementaryTypeName","src":"34398:7:48","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"34397:15:48"},"returnParameters":{"id":14457,"nodeType":"ParameterList","parameters":[{"constant":false,"id":14456,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":14480,"src":"34436:6:48","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"},"typeName":{"id":14455,"name":"int256","nodeType":"ElementaryTypeName","src":"34436:6:48","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"visibility":"internal"}],"src":"34435:8:48"},"scope":14491,"src":"34380:314:48","stateMutability":"pure","virtual":false,"visibility":"internal"},{"body":{"id":14489,"nodeType":"Block","src":"34853:87:48","statements":[{"AST":{"nativeSrc":"34888:46:48","nodeType":"YulBlock","src":"34888:46:48","statements":[{"nativeSrc":"34902:22:48","nodeType":"YulAssignment","src":"34902:22:48","value":{"arguments":[{"arguments":[{"name":"b","nativeSrc":"34921:1:48","nodeType":"YulIdentifier","src":"34921:1:48"}],"functionName":{"name":"iszero","nativeSrc":"34914:6:48","nodeType":"YulIdentifier","src":"34914:6:48"},"nativeSrc":"34914:9:48","nodeType":"YulFunctionCall","src":"34914:9:48"}],"functionName":{"name":"iszero","nativeSrc":"34907:6:48","nodeType":"YulIdentifier","src":"34907:6:48"},"nativeSrc":"34907:17:48","nodeType":"YulFunctionCall","src":"34907:17:48"},"variableNames":[{"name":"u","nativeSrc":"34902:1:48","nodeType":"YulIdentifier","src":"34902:1:48"}]}]},"evmVersion":"prague","externalReferences":[{"declaration":14483,"isOffset":false,"isSlot":false,"src":"34921:1:48","valueSize":1},{"declaration":14486,"isOffset":false,"isSlot":false,"src":"34902:1:48","valueSize":1}],"flags":["memory-safe"],"id":14488,"nodeType":"InlineAssembly","src":"34863:71:48"}]},"documentation":{"id":14481,"nodeType":"StructuredDocumentation","src":"34700:90:48","text":" @dev Cast a boolean (false or true) to a uint256 (0 or 1) with no jump."},"id":14490,"implemented":true,"kind":"function","modifiers":[],"name":"toUint","nameLocation":"34804:6:48","nodeType":"FunctionDefinition","parameters":{"id":14484,"nodeType":"ParameterList","parameters":[{"constant":false,"id":14483,"mutability":"mutable","name":"b","nameLocation":"34816:1:48","nodeType":"VariableDeclaration","scope":14490,"src":"34811:6:48","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":14482,"name":"bool","nodeType":"ElementaryTypeName","src":"34811:4:48","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"}],"src":"34810:8:48"},"returnParameters":{"id":14487,"nodeType":"ParameterList","parameters":[{"constant":false,"id":14486,"mutability":"mutable","name":"u","nameLocation":"34850:1:48","nodeType":"VariableDeclaration","scope":14490,"src":"34842:9:48","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":14485,"name":"uint256","nodeType":"ElementaryTypeName","src":"34842:7:48","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"34841:11:48"},"scope":14491,"src":"34795:145:48","stateMutability":"pure","virtual":false,"visibility":"internal"}],"scope":14492,"src":"769:34173:48","usedErrors":[12736,12741,12748,12753],"usedEvents":[]}],"src":"192:34751:48"},"id":48},"@openzeppelin/contracts/utils/types/Time.sol":{"ast":{"absolutePath":"@openzeppelin/contracts/utils/types/Time.sol","exportedSymbols":{"Math":[12726],"SafeCast":[14491],"Time":[14765]},"id":14766,"license":"MIT","nodeType":"SourceUnit","nodes":[{"id":14493,"literals":["solidity","^","0.8",".20"],"nodeType":"PragmaDirective","src":"104:24:49"},{"absolutePath":"@openzeppelin/contracts/utils/math/Math.sol","file":"../math/Math.sol","id":14495,"nameLocation":"-1:-1:-1","nodeType":"ImportDirective","scope":14766,"sourceUnit":12727,"src":"130:38:49","symbolAliases":[{"foreign":{"id":14494,"name":"Math","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":12726,"src":"138:4:49","typeDescriptions":{}},"nameLocation":"-1:-1:-1"}],"unitAlias":""},{"absolutePath":"@openzeppelin/contracts/utils/math/SafeCast.sol","file":"../math/SafeCast.sol","id":14497,"nameLocation":"-1:-1:-1","nodeType":"ImportDirective","scope":14766,"sourceUnit":14492,"src":"169:46:49","symbolAliases":[{"foreign":{"id":14496,"name":"SafeCast","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":14491,"src":"177:8:49","typeDescriptions":{}},"nameLocation":"-1:-1:-1"}],"unitAlias":""},{"abstract":false,"baseContracts":[],"canonicalName":"Time","contractDependencies":[],"contractKind":"library","documentation":{"id":14498,"nodeType":"StructuredDocumentation","src":"217:422:49","text":" @dev This library provides helpers for manipulating time-related objects.\n It uses the following types:\n - `uint48` for timepoints\n - `uint32` for durations\n While the library doesn't provide specific types for timepoints and duration, it does provide:\n - a `Delay` type to represent duration that can be programmed to change value automatically at a given point\n - additional helper functions"},"fullyImplemented":true,"id":14765,"linearizedBaseContracts":[14765],"name":"Time","nameLocation":"648:4:49","nodeType":"ContractDefinition","nodes":[{"global":false,"id":14500,"libraryName":{"id":14499,"name":"Time","nameLocations":["665:4:49"],"nodeType":"IdentifierPath","referencedDeclaration":14765,"src":"665:4:49"},"nodeType":"UsingForDirective","src":"659:17:49"},{"body":{"id":14512,"nodeType":"Block","src":"802:58:49","statements":[{"expression":{"arguments":[{"expression":{"id":14508,"name":"block","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-4,"src":"837:5:49","typeDescriptions":{"typeIdentifier":"t_magic_block","typeString":"block"}},"id":14509,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"843:9:49","memberName":"timestamp","nodeType":"MemberAccess","src":"837:15:49","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"expression":{"id":14506,"name":"SafeCast","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":14491,"src":"819:8:49","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_SafeCast_$14491_$","typeString":"type(library SafeCast)"}},"id":14507,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"828:8:49","memberName":"toUint48","nodeType":"MemberAccess","referencedDeclaration":13481,"src":"819:17:49","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_uint256_$returns$_t_uint48_$","typeString":"function (uint256) pure returns (uint48)"}},"id":14510,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"819:34:49","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint48","typeString":"uint48"}},"functionReturnParameters":14505,"id":14511,"nodeType":"Return","src":"812:41:49"}]},"documentation":{"id":14501,"nodeType":"StructuredDocumentation","src":"682:63:49","text":" @dev Get the block timestamp as a Timepoint."},"id":14513,"implemented":true,"kind":"function","modifiers":[],"name":"timestamp","nameLocation":"759:9:49","nodeType":"FunctionDefinition","parameters":{"id":14502,"nodeType":"ParameterList","parameters":[],"src":"768:2:49"},"returnParameters":{"id":14505,"nodeType":"ParameterList","parameters":[{"constant":false,"id":14504,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":14513,"src":"794:6:49","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint48","typeString":"uint48"},"typeName":{"id":14503,"name":"uint48","nodeType":"ElementaryTypeName","src":"794:6:49","typeDescriptions":{"typeIdentifier":"t_uint48","typeString":"uint48"}},"visibility":"internal"}],"src":"793:8:49"},"scope":14765,"src":"750:110:49","stateMutability":"view","virtual":false,"visibility":"internal"},{"body":{"id":14525,"nodeType":"Block","src":"985:55:49","statements":[{"expression":{"arguments":[{"expression":{"id":14521,"name":"block","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-4,"src":"1020:5:49","typeDescriptions":{"typeIdentifier":"t_magic_block","typeString":"block"}},"id":14522,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"1026:6:49","memberName":"number","nodeType":"MemberAccess","src":"1020:12:49","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"expression":{"id":14519,"name":"SafeCast","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":14491,"src":"1002:8:49","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_SafeCast_$14491_$","typeString":"type(library SafeCast)"}},"id":14520,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"1011:8:49","memberName":"toUint48","nodeType":"MemberAccess","referencedDeclaration":13481,"src":"1002:17:49","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_uint256_$returns$_t_uint48_$","typeString":"function (uint256) pure returns (uint48)"}},"id":14523,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"1002:31:49","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint48","typeString":"uint48"}},"functionReturnParameters":14518,"id":14524,"nodeType":"Return","src":"995:38:49"}]},"documentation":{"id":14514,"nodeType":"StructuredDocumentation","src":"866:60:49","text":" @dev Get the block number as a Timepoint."},"id":14526,"implemented":true,"kind":"function","modifiers":[],"name":"blockNumber","nameLocation":"940:11:49","nodeType":"FunctionDefinition","parameters":{"id":14515,"nodeType":"ParameterList","parameters":[],"src":"951:2:49"},"returnParameters":{"id":14518,"nodeType":"ParameterList","parameters":[{"constant":false,"id":14517,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":14526,"src":"977:6:49","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint48","typeString":"uint48"},"typeName":{"id":14516,"name":"uint48","nodeType":"ElementaryTypeName","src":"977:6:49","typeDescriptions":{"typeIdentifier":"t_uint48","typeString":"uint48"}},"visibility":"internal"}],"src":"976:8:49"},"scope":14765,"src":"931:109:49","stateMutability":"view","virtual":false,"visibility":"internal"},{"canonicalName":"Time.Delay","id":14528,"name":"Delay","nameLocation":"2376:5:49","nodeType":"UserDefinedValueTypeDefinition","src":"2371:22:49","underlyingType":{"id":14527,"name":"uint112","nodeType":"ElementaryTypeName","src":"2385:7:49","typeDescriptions":{"typeIdentifier":"t_uint112","typeString":"uint112"}}},{"body":{"id":14542,"nodeType":"Block","src":"2571:44:49","statements":[{"expression":{"arguments":[{"id":14539,"name":"duration","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":14531,"src":"2599:8:49","typeDescriptions":{"typeIdentifier":"t_uint32","typeString":"uint32"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint32","typeString":"uint32"}],"expression":{"id":14537,"name":"Delay","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":14528,"src":"2588:5:49","typeDescriptions":{"typeIdentifier":"t_type$_t_userDefinedValueType$_Delay_$14528_$","typeString":"type(Time.Delay)"}},"id":14538,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberLocation":"2594:4:49","memberName":"wrap","nodeType":"MemberAccess","src":"2588:10:49","typeDescriptions":{"typeIdentifier":"t_function_wrap_pure$_t_uint112_$returns$_t_userDefinedValueType$_Delay_$14528_$","typeString":"function (uint112) pure returns (Time.Delay)"}},"id":14540,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"2588:20:49","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_userDefinedValueType$_Delay_$14528","typeString":"Time.Delay"}},"functionReturnParameters":14536,"id":14541,"nodeType":"Return","src":"2581:27:49"}]},"documentation":{"id":14529,"nodeType":"StructuredDocumentation","src":"2399:103:49","text":" @dev Wrap a duration into a Delay to add the one-step \"update in the future\" feature"},"id":14543,"implemented":true,"kind":"function","modifiers":[],"name":"toDelay","nameLocation":"2516:7:49","nodeType":"FunctionDefinition","parameters":{"id":14532,"nodeType":"ParameterList","parameters":[{"constant":false,"id":14531,"mutability":"mutable","name":"duration","nameLocation":"2531:8:49","nodeType":"VariableDeclaration","scope":14543,"src":"2524:15:49","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint32","typeString":"uint32"},"typeName":{"id":14530,"name":"uint32","nodeType":"ElementaryTypeName","src":"2524:6:49","typeDescriptions":{"typeIdentifier":"t_uint32","typeString":"uint32"}},"visibility":"internal"}],"src":"2523:17:49"},"returnParameters":{"id":14536,"nodeType":"ParameterList","parameters":[{"constant":false,"id":14535,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":14543,"src":"2564:5:49","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_userDefinedValueType$_Delay_$14528","typeString":"Time.Delay"},"typeName":{"id":14534,"nodeType":"UserDefinedTypeName","pathNode":{"id":14533,"name":"Delay","nameLocations":["2564:5:49"],"nodeType":"IdentifierPath","referencedDeclaration":14528,"src":"2564:5:49"},"referencedDeclaration":14528,"src":"2564:5:49","typeDescriptions":{"typeIdentifier":"t_userDefinedValueType$_Delay_$14528","typeString":"Time.Delay"}},"visibility":"internal"}],"src":"2563:7:49"},"scope":14765,"src":"2507:108:49","stateMutability":"pure","virtual":false,"visibility":"internal"},{"body":{"id":14580,"nodeType":"Block","src":"3015:159:49","statements":[{"expression":{"id":14565,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"components":[{"id":14558,"name":"valueBefore","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":14552,"src":"3026:11:49","typeDescriptions":{"typeIdentifier":"t_uint32","typeString":"uint32"}},{"id":14559,"name":"valueAfter","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":14554,"src":"3039:10:49","typeDescriptions":{"typeIdentifier":"t_uint32","typeString":"uint32"}},{"id":14560,"name":"effect","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":14556,"src":"3051:6:49","typeDescriptions":{"typeIdentifier":"t_uint48","typeString":"uint48"}}],"id":14561,"isConstant":false,"isInlineArray":false,"isLValue":true,"isPure":false,"lValueRequested":true,"nodeType":"TupleExpression","src":"3025:33:49","typeDescriptions":{"typeIdentifier":"t_tuple$_t_uint32_$_t_uint32_$_t_uint48_$","typeString":"tuple(uint32,uint32,uint48)"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"arguments":[],"expression":{"argumentTypes":[],"expression":{"id":14562,"name":"self","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":14547,"src":"3061:4:49","typeDescriptions":{"typeIdentifier":"t_userDefinedValueType$_Delay_$14528","typeString":"Time.Delay"}},"id":14563,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"3066:6:49","memberName":"unpack","nodeType":"MemberAccess","referencedDeclaration":14726,"src":"3061:11:49","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_userDefinedValueType$_Delay_$14528_$returns$_t_uint32_$_t_uint32_$_t_uint48_$attached_to$_t_userDefinedValueType$_Delay_$14528_$","typeString":"function (Time.Delay) pure returns (uint32,uint32,uint48)"}},"id":14564,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"3061:13:49","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$_t_uint32_$_t_uint32_$_t_uint48_$","typeString":"tuple(uint32,uint32,uint48)"}},"src":"3025:49:49","typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":14566,"nodeType":"ExpressionStatement","src":"3025:49:49"},{"expression":{"condition":{"commonType":{"typeIdentifier":"t_uint48","typeString":"uint48"},"id":14569,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":14567,"name":"effect","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":14556,"src":"3091:6:49","typeDescriptions":{"typeIdentifier":"t_uint48","typeString":"uint48"}},"nodeType":"BinaryOperation","operator":"<=","rightExpression":{"id":14568,"name":"timepoint","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":14549,"src":"3101:9:49","typeDescriptions":{"typeIdentifier":"t_uint48","typeString":"uint48"}},"src":"3091:19:49","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"falseExpression":{"components":[{"id":14574,"name":"valueBefore","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":14552,"src":"3135:11:49","typeDescriptions":{"typeIdentifier":"t_uint32","typeString":"uint32"}},{"id":14575,"name":"valueAfter","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":14554,"src":"3148:10:49","typeDescriptions":{"typeIdentifier":"t_uint32","typeString":"uint32"}},{"id":14576,"name":"effect","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":14556,"src":"3160:6:49","typeDescriptions":{"typeIdentifier":"t_uint48","typeString":"uint48"}}],"id":14577,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"3134:33:49","typeDescriptions":{"typeIdentifier":"t_tuple$_t_uint32_$_t_uint32_$_t_uint48_$","typeString":"tuple(uint32,uint32,uint48)"}},"id":14578,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"Conditional","src":"3091:76:49","trueExpression":{"components":[{"id":14570,"name":"valueAfter","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":14554,"src":"3114:10:49","typeDescriptions":{"typeIdentifier":"t_uint32","typeString":"uint32"}},{"hexValue":"30","id":14571,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"3126:1:49","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},{"hexValue":"30","id":14572,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"3129:1:49","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"}],"id":14573,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"3113:18:49","typeDescriptions":{"typeIdentifier":"t_tuple$_t_uint32_$_t_rational_0_by_1_$_t_rational_0_by_1_$","typeString":"tuple(uint32,int_const 0,int_const 0)"}},"typeDescriptions":{"typeIdentifier":"t_tuple$_t_uint32_$_t_uint32_$_t_uint48_$","typeString":"tuple(uint32,uint32,uint48)"}},"functionReturnParameters":14557,"id":14579,"nodeType":"Return","src":"3084:83:49"}]},"documentation":{"id":14544,"nodeType":"StructuredDocumentation","src":"2621:241:49","text":" @dev Get the value at a given timepoint plus the pending value and effect timepoint if there is a scheduled\n change after this timepoint. If the effect timepoint is 0, then the pending value should not be considered."},"id":14581,"implemented":true,"kind":"function","modifiers":[],"name":"_getFullAt","nameLocation":"2876:10:49","nodeType":"FunctionDefinition","parameters":{"id":14550,"nodeType":"ParameterList","parameters":[{"constant":false,"id":14547,"mutability":"mutable","name":"self","nameLocation":"2902:4:49","nodeType":"VariableDeclaration","scope":14581,"src":"2896:10:49","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_userDefinedValueType$_Delay_$14528","typeString":"Time.Delay"},"typeName":{"id":14546,"nodeType":"UserDefinedTypeName","pathNode":{"id":14545,"name":"Delay","nameLocations":["2896:5:49"],"nodeType":"IdentifierPath","referencedDeclaration":14528,"src":"2896:5:49"},"referencedDeclaration":14528,"src":"2896:5:49","typeDescriptions":{"typeIdentifier":"t_userDefinedValueType$_Delay_$14528","typeString":"Time.Delay"}},"visibility":"internal"},{"constant":false,"id":14549,"mutability":"mutable","name":"timepoint","nameLocation":"2923:9:49","nodeType":"VariableDeclaration","scope":14581,"src":"2916:16:49","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint48","typeString":"uint48"},"typeName":{"id":14548,"name":"uint48","nodeType":"ElementaryTypeName","src":"2916:6:49","typeDescriptions":{"typeIdentifier":"t_uint48","typeString":"uint48"}},"visibility":"internal"}],"src":"2886:52:49"},"returnParameters":{"id":14557,"nodeType":"ParameterList","parameters":[{"constant":false,"id":14552,"mutability":"mutable","name":"valueBefore","nameLocation":"2968:11:49","nodeType":"VariableDeclaration","scope":14581,"src":"2961:18:49","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint32","typeString":"uint32"},"typeName":{"id":14551,"name":"uint32","nodeType":"ElementaryTypeName","src":"2961:6:49","typeDescriptions":{"typeIdentifier":"t_uint32","typeString":"uint32"}},"visibility":"internal"},{"constant":false,"id":14554,"mutability":"mutable","name":"valueAfter","nameLocation":"2988:10:49","nodeType":"VariableDeclaration","scope":14581,"src":"2981:17:49","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint32","typeString":"uint32"},"typeName":{"id":14553,"name":"uint32","nodeType":"ElementaryTypeName","src":"2981:6:49","typeDescriptions":{"typeIdentifier":"t_uint32","typeString":"uint32"}},"visibility":"internal"},{"constant":false,"id":14556,"mutability":"mutable","name":"effect","nameLocation":"3007:6:49","nodeType":"VariableDeclaration","scope":14581,"src":"3000:13:49","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint48","typeString":"uint48"},"typeName":{"id":14555,"name":"uint48","nodeType":"ElementaryTypeName","src":"3000:6:49","typeDescriptions":{"typeIdentifier":"t_uint48","typeString":"uint48"}},"visibility":"internal"}],"src":"2960:54:49"},"scope":14765,"src":"2867:307:49","stateMutability":"pure","virtual":false,"visibility":"private"},{"body":{"id":14600,"nodeType":"Block","src":"3498:53:49","statements":[{"expression":{"arguments":[{"id":14595,"name":"self","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":14585,"src":"3526:4:49","typeDescriptions":{"typeIdentifier":"t_userDefinedValueType$_Delay_$14528","typeString":"Time.Delay"}},{"arguments":[],"expression":{"argumentTypes":[],"id":14596,"name":"timestamp","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":14513,"src":"3532:9:49","typeDescriptions":{"typeIdentifier":"t_function_internal_view$__$returns$_t_uint48_$","typeString":"function () view returns (uint48)"}},"id":14597,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"3532:11:49","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint48","typeString":"uint48"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_userDefinedValueType$_Delay_$14528","typeString":"Time.Delay"},{"typeIdentifier":"t_uint48","typeString":"uint48"}],"id":14594,"name":"_getFullAt","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":14581,"src":"3515:10:49","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_userDefinedValueType$_Delay_$14528_$_t_uint48_$returns$_t_uint32_$_t_uint32_$_t_uint48_$","typeString":"function (Time.Delay,uint48) pure returns (uint32,uint32,uint48)"}},"id":14598,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"3515:29:49","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$_t_uint32_$_t_uint32_$_t_uint48_$","typeString":"tuple(uint32,uint32,uint48)"}},"functionReturnParameters":14593,"id":14599,"nodeType":"Return","src":"3508:36:49"}]},"documentation":{"id":14582,"nodeType":"StructuredDocumentation","src":"3180:207:49","text":" @dev Get the current value plus the pending value and effect timepoint if there is a scheduled change. If the\n effect timepoint is 0, then the pending value should not be considered."},"id":14601,"implemented":true,"kind":"function","modifiers":[],"name":"getFull","nameLocation":"3401:7:49","nodeType":"FunctionDefinition","parameters":{"id":14586,"nodeType":"ParameterList","parameters":[{"constant":false,"id":14585,"mutability":"mutable","name":"self","nameLocation":"3415:4:49","nodeType":"VariableDeclaration","scope":14601,"src":"3409:10:49","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_userDefinedValueType$_Delay_$14528","typeString":"Time.Delay"},"typeName":{"id":14584,"nodeType":"UserDefinedTypeName","pathNode":{"id":14583,"name":"Delay","nameLocations":["3409:5:49"],"nodeType":"IdentifierPath","referencedDeclaration":14528,"src":"3409:5:49"},"referencedDeclaration":14528,"src":"3409:5:49","typeDescriptions":{"typeIdentifier":"t_userDefinedValueType$_Delay_$14528","typeString":"Time.Delay"}},"visibility":"internal"}],"src":"3408:12:49"},"returnParameters":{"id":14593,"nodeType":"ParameterList","parameters":[{"constant":false,"id":14588,"mutability":"mutable","name":"valueBefore","nameLocation":"3451:11:49","nodeType":"VariableDeclaration","scope":14601,"src":"3444:18:49","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint32","typeString":"uint32"},"typeName":{"id":14587,"name":"uint32","nodeType":"ElementaryTypeName","src":"3444:6:49","typeDescriptions":{"typeIdentifier":"t_uint32","typeString":"uint32"}},"visibility":"internal"},{"constant":false,"id":14590,"mutability":"mutable","name":"valueAfter","nameLocation":"3471:10:49","nodeType":"VariableDeclaration","scope":14601,"src":"3464:17:49","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint32","typeString":"uint32"},"typeName":{"id":14589,"name":"uint32","nodeType":"ElementaryTypeName","src":"3464:6:49","typeDescriptions":{"typeIdentifier":"t_uint32","typeString":"uint32"}},"visibility":"internal"},{"constant":false,"id":14592,"mutability":"mutable","name":"effect","nameLocation":"3490:6:49","nodeType":"VariableDeclaration","scope":14601,"src":"3483:13:49","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint48","typeString":"uint48"},"typeName":{"id":14591,"name":"uint48","nodeType":"ElementaryTypeName","src":"3483:6:49","typeDescriptions":{"typeIdentifier":"t_uint48","typeString":"uint48"}},"visibility":"internal"}],"src":"3443:54:49"},"scope":14765,"src":"3392:159:49","stateMutability":"view","virtual":false,"visibility":"internal"},{"body":{"id":14618,"nodeType":"Block","src":"3664:74:49","statements":[{"assignments":[14611,null,null],"declarations":[{"constant":false,"id":14611,"mutability":"mutable","name":"delay","nameLocation":"3682:5:49","nodeType":"VariableDeclaration","scope":14618,"src":"3675:12:49","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint32","typeString":"uint32"},"typeName":{"id":14610,"name":"uint32","nodeType":"ElementaryTypeName","src":"3675:6:49","typeDescriptions":{"typeIdentifier":"t_uint32","typeString":"uint32"}},"visibility":"internal"},null,null],"id":14615,"initialValue":{"arguments":[],"expression":{"argumentTypes":[],"expression":{"id":14612,"name":"self","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":14605,"src":"3695:4:49","typeDescriptions":{"typeIdentifier":"t_userDefinedValueType$_Delay_$14528","typeString":"Time.Delay"}},"id":14613,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"3700:7:49","memberName":"getFull","nodeType":"MemberAccess","referencedDeclaration":14601,"src":"3695:12:49","typeDescriptions":{"typeIdentifier":"t_function_internal_view$_t_userDefinedValueType$_Delay_$14528_$returns$_t_uint32_$_t_uint32_$_t_uint48_$attached_to$_t_userDefinedValueType$_Delay_$14528_$","typeString":"function (Time.Delay) view returns (uint32,uint32,uint48)"}},"id":14614,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"3695:14:49","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$_t_uint32_$_t_uint32_$_t_uint48_$","typeString":"tuple(uint32,uint32,uint48)"}},"nodeType":"VariableDeclarationStatement","src":"3674:35:49"},{"expression":{"id":14616,"name":"delay","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":14611,"src":"3726:5:49","typeDescriptions":{"typeIdentifier":"t_uint32","typeString":"uint32"}},"functionReturnParameters":14609,"id":14617,"nodeType":"Return","src":"3719:12:49"}]},"documentation":{"id":14602,"nodeType":"StructuredDocumentation","src":"3557:46:49","text":" @dev Get the current value."},"id":14619,"implemented":true,"kind":"function","modifiers":[],"name":"get","nameLocation":"3617:3:49","nodeType":"FunctionDefinition","parameters":{"id":14606,"nodeType":"ParameterList","parameters":[{"constant":false,"id":14605,"mutability":"mutable","name":"self","nameLocation":"3627:4:49","nodeType":"VariableDeclaration","scope":14619,"src":"3621:10:49","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_userDefinedValueType$_Delay_$14528","typeString":"Time.Delay"},"typeName":{"id":14604,"nodeType":"UserDefinedTypeName","pathNode":{"id":14603,"name":"Delay","nameLocations":["3621:5:49"],"nodeType":"IdentifierPath","referencedDeclaration":14528,"src":"3621:5:49"},"referencedDeclaration":14528,"src":"3621:5:49","typeDescriptions":{"typeIdentifier":"t_userDefinedValueType$_Delay_$14528","typeString":"Time.Delay"}},"visibility":"internal"}],"src":"3620:12:49"},"returnParameters":{"id":14609,"nodeType":"ParameterList","parameters":[{"constant":false,"id":14608,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":14619,"src":"3656:6:49","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint32","typeString":"uint32"},"typeName":{"id":14607,"name":"uint32","nodeType":"ElementaryTypeName","src":"3656:6:49","typeDescriptions":{"typeIdentifier":"t_uint32","typeString":"uint32"}},"visibility":"internal"}],"src":"3655:8:49"},"scope":14765,"src":"3608:130:49","stateMutability":"view","virtual":false,"visibility":"internal"},{"body":{"id":14674,"nodeType":"Block","src":"4188:234:49","statements":[{"assignments":[14636],"declarations":[{"constant":false,"id":14636,"mutability":"mutable","name":"value","nameLocation":"4205:5:49","nodeType":"VariableDeclaration","scope":14674,"src":"4198:12:49","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint32","typeString":"uint32"},"typeName":{"id":14635,"name":"uint32","nodeType":"ElementaryTypeName","src":"4198:6:49","typeDescriptions":{"typeIdentifier":"t_uint32","typeString":"uint32"}},"visibility":"internal"}],"id":14640,"initialValue":{"arguments":[],"expression":{"argumentTypes":[],"expression":{"id":14637,"name":"self","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":14623,"src":"4213:4:49","typeDescriptions":{"typeIdentifier":"t_userDefinedValueType$_Delay_$14528","typeString":"Time.Delay"}},"id":14638,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"4218:3:49","memberName":"get","nodeType":"MemberAccess","referencedDeclaration":14619,"src":"4213:8:49","typeDescriptions":{"typeIdentifier":"t_function_internal_view$_t_userDefinedValueType$_Delay_$14528_$returns$_t_uint32_$attached_to$_t_userDefinedValueType$_Delay_$14528_$","typeString":"function (Time.Delay) view returns (uint32)"}},"id":14639,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"4213:10:49","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint32","typeString":"uint32"}},"nodeType":"VariableDeclarationStatement","src":"4198:25:49"},{"assignments":[14642],"declarations":[{"constant":false,"id":14642,"mutability":"mutable","name":"setback","nameLocation":"4240:7:49","nodeType":"VariableDeclaration","scope":14674,"src":"4233:14:49","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint32","typeString":"uint32"},"typeName":{"id":14641,"name":"uint32","nodeType":"ElementaryTypeName","src":"4233:6:49","typeDescriptions":{"typeIdentifier":"t_uint32","typeString":"uint32"}},"visibility":"internal"}],"id":14658,"initialValue":{"arguments":[{"arguments":[{"id":14647,"name":"minSetback","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":14627,"src":"4266:10:49","typeDescriptions":{"typeIdentifier":"t_uint32","typeString":"uint32"}},{"condition":{"commonType":{"typeIdentifier":"t_uint32","typeString":"uint32"},"id":14650,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":14648,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":14636,"src":"4278:5:49","typeDescriptions":{"typeIdentifier":"t_uint32","typeString":"uint32"}},"nodeType":"BinaryOperation","operator":">","rightExpression":{"id":14649,"name":"newValue","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":14625,"src":"4286:8:49","typeDescriptions":{"typeIdentifier":"t_uint32","typeString":"uint32"}},"src":"4278:16:49","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"falseExpression":{"hexValue":"30","id":14654,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"4316:1:49","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"id":14655,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"Conditional","src":"4278:39:49","trueExpression":{"commonType":{"typeIdentifier":"t_uint32","typeString":"uint32"},"id":14653,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":14651,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":14636,"src":"4297:5:49","typeDescriptions":{"typeIdentifier":"t_uint32","typeString":"uint32"}},"nodeType":"BinaryOperation","operator":"-","rightExpression":{"id":14652,"name":"newValue","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":14625,"src":"4305:8:49","typeDescriptions":{"typeIdentifier":"t_uint32","typeString":"uint32"}},"src":"4297:16:49","typeDescriptions":{"typeIdentifier":"t_uint32","typeString":"uint32"}},"typeDescriptions":{"typeIdentifier":"t_uint32","typeString":"uint32"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint32","typeString":"uint32"},{"typeIdentifier":"t_uint32","typeString":"uint32"}],"expression":{"id":14645,"name":"Math","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":12726,"src":"4257:4:49","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_Math_$12726_$","typeString":"type(library Math)"}},"id":14646,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"4262:3:49","memberName":"max","nodeType":"MemberAccess","referencedDeclaration":11392,"src":"4257:8:49","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_uint256_$_t_uint256_$returns$_t_uint256_$","typeString":"function (uint256,uint256) pure returns (uint256)"}},"id":14656,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"4257:61:49","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":14644,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"4250:6:49","typeDescriptions":{"typeIdentifier":"t_type$_t_uint32_$","typeString":"type(uint32)"},"typeName":{"id":14643,"name":"uint32","nodeType":"ElementaryTypeName","src":"4250:6:49","typeDescriptions":{}}},"id":14657,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"4250:69:49","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint32","typeString":"uint32"}},"nodeType":"VariableDeclarationStatement","src":"4233:86:49"},{"expression":{"id":14664,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":14659,"name":"effect","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":14633,"src":"4329:6:49","typeDescriptions":{"typeIdentifier":"t_uint48","typeString":"uint48"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"commonType":{"typeIdentifier":"t_uint48","typeString":"uint48"},"id":14663,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"arguments":[],"expression":{"argumentTypes":[],"id":14660,"name":"timestamp","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":14513,"src":"4338:9:49","typeDescriptions":{"typeIdentifier":"t_function_internal_view$__$returns$_t_uint48_$","typeString":"function () view returns (uint48)"}},"id":14661,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"4338:11:49","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint48","typeString":"uint48"}},"nodeType":"BinaryOperation","operator":"+","rightExpression":{"id":14662,"name":"setback","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":14642,"src":"4352:7:49","typeDescriptions":{"typeIdentifier":"t_uint32","typeString":"uint32"}},"src":"4338:21:49","typeDescriptions":{"typeIdentifier":"t_uint48","typeString":"uint48"}},"src":"4329:30:49","typeDescriptions":{"typeIdentifier":"t_uint48","typeString":"uint48"}},"id":14665,"nodeType":"ExpressionStatement","src":"4329:30:49"},{"expression":{"components":[{"arguments":[{"id":14667,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":14636,"src":"4382:5:49","typeDescriptions":{"typeIdentifier":"t_uint32","typeString":"uint32"}},{"id":14668,"name":"newValue","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":14625,"src":"4389:8:49","typeDescriptions":{"typeIdentifier":"t_uint32","typeString":"uint32"}},{"id":14669,"name":"effect","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":14633,"src":"4399:6:49","typeDescriptions":{"typeIdentifier":"t_uint48","typeString":"uint48"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint32","typeString":"uint32"},{"typeIdentifier":"t_uint32","typeString":"uint32"},{"typeIdentifier":"t_uint48","typeString":"uint48"}],"id":14666,"name":"pack","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":14764,"src":"4377:4:49","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_uint32_$_t_uint32_$_t_uint48_$returns$_t_userDefinedValueType$_Delay_$14528_$","typeString":"function (uint32,uint32,uint48) pure returns (Time.Delay)"}},"id":14670,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"4377:29:49","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_userDefinedValueType$_Delay_$14528","typeString":"Time.Delay"}},{"id":14671,"name":"effect","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":14633,"src":"4408:6:49","typeDescriptions":{"typeIdentifier":"t_uint48","typeString":"uint48"}}],"id":14672,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"4376:39:49","typeDescriptions":{"typeIdentifier":"t_tuple$_t_userDefinedValueType$_Delay_$14528_$_t_uint48_$","typeString":"tuple(Time.Delay,uint48)"}},"functionReturnParameters":14634,"id":14673,"nodeType":"Return","src":"4369:46:49"}]},"documentation":{"id":14620,"nodeType":"StructuredDocumentation","src":"3744:283:49","text":" @dev Update a Delay object so that it takes a new duration after a timepoint that is automatically computed to\n enforce the old delay at the moment of the update. Returns the updated Delay object and the timestamp when the\n new delay becomes effective."},"id":14675,"implemented":true,"kind":"function","modifiers":[],"name":"withUpdate","nameLocation":"4041:10:49","nodeType":"FunctionDefinition","parameters":{"id":14628,"nodeType":"ParameterList","parameters":[{"constant":false,"id":14623,"mutability":"mutable","name":"self","nameLocation":"4067:4:49","nodeType":"VariableDeclaration","scope":14675,"src":"4061:10:49","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_userDefinedValueType$_Delay_$14528","typeString":"Time.Delay"},"typeName":{"id":14622,"nodeType":"UserDefinedTypeName","pathNode":{"id":14621,"name":"Delay","nameLocations":["4061:5:49"],"nodeType":"IdentifierPath","referencedDeclaration":14528,"src":"4061:5:49"},"referencedDeclaration":14528,"src":"4061:5:49","typeDescriptions":{"typeIdentifier":"t_userDefinedValueType$_Delay_$14528","typeString":"Time.Delay"}},"visibility":"internal"},{"constant":false,"id":14625,"mutability":"mutable","name":"newValue","nameLocation":"4088:8:49","nodeType":"VariableDeclaration","scope":14675,"src":"4081:15:49","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint32","typeString":"uint32"},"typeName":{"id":14624,"name":"uint32","nodeType":"ElementaryTypeName","src":"4081:6:49","typeDescriptions":{"typeIdentifier":"t_uint32","typeString":"uint32"}},"visibility":"internal"},{"constant":false,"id":14627,"mutability":"mutable","name":"minSetback","nameLocation":"4113:10:49","nodeType":"VariableDeclaration","scope":14675,"src":"4106:17:49","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint32","typeString":"uint32"},"typeName":{"id":14626,"name":"uint32","nodeType":"ElementaryTypeName","src":"4106:6:49","typeDescriptions":{"typeIdentifier":"t_uint32","typeString":"uint32"}},"visibility":"internal"}],"src":"4051:78:49"},"returnParameters":{"id":14634,"nodeType":"ParameterList","parameters":[{"constant":false,"id":14631,"mutability":"mutable","name":"updatedDelay","nameLocation":"4159:12:49","nodeType":"VariableDeclaration","scope":14675,"src":"4153:18:49","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_userDefinedValueType$_Delay_$14528","typeString":"Time.Delay"},"typeName":{"id":14630,"nodeType":"UserDefinedTypeName","pathNode":{"id":14629,"name":"Delay","nameLocations":["4153:5:49"],"nodeType":"IdentifierPath","referencedDeclaration":14528,"src":"4153:5:49"},"referencedDeclaration":14528,"src":"4153:5:49","typeDescriptions":{"typeIdentifier":"t_userDefinedValueType$_Delay_$14528","typeString":"Time.Delay"}},"visibility":"internal"},{"constant":false,"id":14633,"mutability":"mutable","name":"effect","nameLocation":"4180:6:49","nodeType":"VariableDeclaration","scope":14675,"src":"4173:13:49","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint48","typeString":"uint48"},"typeName":{"id":14632,"name":"uint48","nodeType":"ElementaryTypeName","src":"4173:6:49","typeDescriptions":{"typeIdentifier":"t_uint48","typeString":"uint48"}},"visibility":"internal"}],"src":"4152:35:49"},"scope":14765,"src":"4032:390:49","stateMutability":"view","virtual":false,"visibility":"internal"},{"body":{"id":14725,"nodeType":"Block","src":"4655:212:49","statements":[{"assignments":[14689],"declarations":[{"constant":false,"id":14689,"mutability":"mutable","name":"raw","nameLocation":"4673:3:49","nodeType":"VariableDeclaration","scope":14725,"src":"4665:11:49","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint112","typeString":"uint112"},"typeName":{"id":14688,"name":"uint112","nodeType":"ElementaryTypeName","src":"4665:7:49","typeDescriptions":{"typeIdentifier":"t_uint112","typeString":"uint112"}},"visibility":"internal"}],"id":14694,"initialValue":{"arguments":[{"id":14692,"name":"self","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":14679,"src":"4692:4:49","typeDescriptions":{"typeIdentifier":"t_userDefinedValueType$_Delay_$14528","typeString":"Time.Delay"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_userDefinedValueType$_Delay_$14528","typeString":"Time.Delay"}],"expression":{"id":14690,"name":"Delay","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":14528,"src":"4679:5:49","typeDescriptions":{"typeIdentifier":"t_type$_t_userDefinedValueType$_Delay_$14528_$","typeString":"type(Time.Delay)"}},"id":14691,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberLocation":"4685:6:49","memberName":"unwrap","nodeType":"MemberAccess","src":"4679:12:49","typeDescriptions":{"typeIdentifier":"t_function_unwrap_pure$_t_userDefinedValueType$_Delay_$14528_$returns$_t_uint112_$","typeString":"function (Time.Delay) pure returns (uint112)"}},"id":14693,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"4679:18:49","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint112","typeString":"uint112"}},"nodeType":"VariableDeclarationStatement","src":"4665:32:49"},{"expression":{"id":14700,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":14695,"name":"valueAfter","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":14684,"src":"4708:10:49","typeDescriptions":{"typeIdentifier":"t_uint32","typeString":"uint32"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"arguments":[{"id":14698,"name":"raw","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":14689,"src":"4728:3:49","typeDescriptions":{"typeIdentifier":"t_uint112","typeString":"uint112"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint112","typeString":"uint112"}],"id":14697,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"4721:6:49","typeDescriptions":{"typeIdentifier":"t_type$_t_uint32_$","typeString":"type(uint32)"},"typeName":{"id":14696,"name":"uint32","nodeType":"ElementaryTypeName","src":"4721:6:49","typeDescriptions":{}}},"id":14699,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"4721:11:49","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint32","typeString":"uint32"}},"src":"4708:24:49","typeDescriptions":{"typeIdentifier":"t_uint32","typeString":"uint32"}},"id":14701,"nodeType":"ExpressionStatement","src":"4708:24:49"},{"expression":{"id":14709,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":14702,"name":"valueBefore","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":14682,"src":"4742:11:49","typeDescriptions":{"typeIdentifier":"t_uint32","typeString":"uint32"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"arguments":[{"commonType":{"typeIdentifier":"t_uint112","typeString":"uint112"},"id":14707,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":14705,"name":"raw","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":14689,"src":"4763:3:49","typeDescriptions":{"typeIdentifier":"t_uint112","typeString":"uint112"}},"nodeType":"BinaryOperation","operator":">>","rightExpression":{"hexValue":"3332","id":14706,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"4770:2:49","typeDescriptions":{"typeIdentifier":"t_rational_32_by_1","typeString":"int_const 32"},"value":"32"},"src":"4763:9:49","typeDescriptions":{"typeIdentifier":"t_uint112","typeString":"uint112"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint112","typeString":"uint112"}],"id":14704,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"4756:6:49","typeDescriptions":{"typeIdentifier":"t_type$_t_uint32_$","typeString":"type(uint32)"},"typeName":{"id":14703,"name":"uint32","nodeType":"ElementaryTypeName","src":"4756:6:49","typeDescriptions":{}}},"id":14708,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"4756:17:49","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint32","typeString":"uint32"}},"src":"4742:31:49","typeDescriptions":{"typeIdentifier":"t_uint32","typeString":"uint32"}},"id":14710,"nodeType":"ExpressionStatement","src":"4742:31:49"},{"expression":{"id":14718,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":14711,"name":"effect","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":14686,"src":"4783:6:49","typeDescriptions":{"typeIdentifier":"t_uint48","typeString":"uint48"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"arguments":[{"commonType":{"typeIdentifier":"t_uint112","typeString":"uint112"},"id":14716,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":14714,"name":"raw","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":14689,"src":"4799:3:49","typeDescriptions":{"typeIdentifier":"t_uint112","typeString":"uint112"}},"nodeType":"BinaryOperation","operator":">>","rightExpression":{"hexValue":"3634","id":14715,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"4806:2:49","typeDescriptions":{"typeIdentifier":"t_rational_64_by_1","typeString":"int_const 64"},"value":"64"},"src":"4799:9:49","typeDescriptions":{"typeIdentifier":"t_uint112","typeString":"uint112"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint112","typeString":"uint112"}],"id":14713,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"4792:6:49","typeDescriptions":{"typeIdentifier":"t_type$_t_uint48_$","typeString":"type(uint48)"},"typeName":{"id":14712,"name":"uint48","nodeType":"ElementaryTypeName","src":"4792:6:49","typeDescriptions":{}}},"id":14717,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"4792:17:49","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint48","typeString":"uint48"}},"src":"4783:26:49","typeDescriptions":{"typeIdentifier":"t_uint48","typeString":"uint48"}},"id":14719,"nodeType":"ExpressionStatement","src":"4783:26:49"},{"expression":{"components":[{"id":14720,"name":"valueBefore","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":14682,"src":"4828:11:49","typeDescriptions":{"typeIdentifier":"t_uint32","typeString":"uint32"}},{"id":14721,"name":"valueAfter","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":14684,"src":"4841:10:49","typeDescriptions":{"typeIdentifier":"t_uint32","typeString":"uint32"}},{"id":14722,"name":"effect","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":14686,"src":"4853:6:49","typeDescriptions":{"typeIdentifier":"t_uint48","typeString":"uint48"}}],"id":14723,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"4827:33:49","typeDescriptions":{"typeIdentifier":"t_tuple$_t_uint32_$_t_uint32_$_t_uint48_$","typeString":"tuple(uint32,uint32,uint48)"}},"functionReturnParameters":14687,"id":14724,"nodeType":"Return","src":"4820:40:49"}]},"documentation":{"id":14676,"nodeType":"StructuredDocumentation","src":"4428:117:49","text":" @dev Split a delay into its components: valueBefore, valueAfter and effect (transition timepoint)."},"id":14726,"implemented":true,"kind":"function","modifiers":[],"name":"unpack","nameLocation":"4559:6:49","nodeType":"FunctionDefinition","parameters":{"id":14680,"nodeType":"ParameterList","parameters":[{"constant":false,"id":14679,"mutability":"mutable","name":"self","nameLocation":"4572:4:49","nodeType":"VariableDeclaration","scope":14726,"src":"4566:10:49","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_userDefinedValueType$_Delay_$14528","typeString":"Time.Delay"},"typeName":{"id":14678,"nodeType":"UserDefinedTypeName","pathNode":{"id":14677,"name":"Delay","nameLocations":["4566:5:49"],"nodeType":"IdentifierPath","referencedDeclaration":14528,"src":"4566:5:49"},"referencedDeclaration":14528,"src":"4566:5:49","typeDescriptions":{"typeIdentifier":"t_userDefinedValueType$_Delay_$14528","typeString":"Time.Delay"}},"visibility":"internal"}],"src":"4565:12:49"},"returnParameters":{"id":14687,"nodeType":"ParameterList","parameters":[{"constant":false,"id":14682,"mutability":"mutable","name":"valueBefore","nameLocation":"4608:11:49","nodeType":"VariableDeclaration","scope":14726,"src":"4601:18:49","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint32","typeString":"uint32"},"typeName":{"id":14681,"name":"uint32","nodeType":"ElementaryTypeName","src":"4601:6:49","typeDescriptions":{"typeIdentifier":"t_uint32","typeString":"uint32"}},"visibility":"internal"},{"constant":false,"id":14684,"mutability":"mutable","name":"valueAfter","nameLocation":"4628:10:49","nodeType":"VariableDeclaration","scope":14726,"src":"4621:17:49","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint32","typeString":"uint32"},"typeName":{"id":14683,"name":"uint32","nodeType":"ElementaryTypeName","src":"4621:6:49","typeDescriptions":{"typeIdentifier":"t_uint32","typeString":"uint32"}},"visibility":"internal"},{"constant":false,"id":14686,"mutability":"mutable","name":"effect","nameLocation":"4647:6:49","nodeType":"VariableDeclaration","scope":14726,"src":"4640:13:49","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint48","typeString":"uint48"},"typeName":{"id":14685,"name":"uint48","nodeType":"ElementaryTypeName","src":"4640:6:49","typeDescriptions":{"typeIdentifier":"t_uint48","typeString":"uint48"}},"visibility":"internal"}],"src":"4600:54:49"},"scope":14765,"src":"4550:317:49","stateMutability":"pure","virtual":false,"visibility":"internal"},{"body":{"id":14763,"nodeType":"Block","src":"5040:112:49","statements":[{"expression":{"arguments":[{"commonType":{"typeIdentifier":"t_uint112","typeString":"uint112"},"id":14760,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"commonType":{"typeIdentifier":"t_uint112","typeString":"uint112"},"id":14755,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"components":[{"commonType":{"typeIdentifier":"t_uint112","typeString":"uint112"},"id":14746,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"arguments":[{"id":14743,"name":"effect","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":14733,"src":"5077:6:49","typeDescriptions":{"typeIdentifier":"t_uint48","typeString":"uint48"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint48","typeString":"uint48"}],"id":14742,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"5069:7:49","typeDescriptions":{"typeIdentifier":"t_type$_t_uint112_$","typeString":"type(uint112)"},"typeName":{"id":14741,"name":"uint112","nodeType":"ElementaryTypeName","src":"5069:7:49","typeDescriptions":{}}},"id":14744,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"5069:15:49","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint112","typeString":"uint112"}},"nodeType":"BinaryOperation","operator":"<<","rightExpression":{"hexValue":"3634","id":14745,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"5088:2:49","typeDescriptions":{"typeIdentifier":"t_rational_64_by_1","typeString":"int_const 64"},"value":"64"},"src":"5069:21:49","typeDescriptions":{"typeIdentifier":"t_uint112","typeString":"uint112"}}],"id":14747,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"5068:23:49","typeDescriptions":{"typeIdentifier":"t_uint112","typeString":"uint112"}},"nodeType":"BinaryOperation","operator":"|","rightExpression":{"components":[{"commonType":{"typeIdentifier":"t_uint112","typeString":"uint112"},"id":14753,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"arguments":[{"id":14750,"name":"valueBefore","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":14729,"src":"5103:11:49","typeDescriptions":{"typeIdentifier":"t_uint32","typeString":"uint32"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint32","typeString":"uint32"}],"id":14749,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"5095:7:49","typeDescriptions":{"typeIdentifier":"t_type$_t_uint112_$","typeString":"type(uint112)"},"typeName":{"id":14748,"name":"uint112","nodeType":"ElementaryTypeName","src":"5095:7:49","typeDescriptions":{}}},"id":14751,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"5095:20:49","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint112","typeString":"uint112"}},"nodeType":"BinaryOperation","operator":"<<","rightExpression":{"hexValue":"3332","id":14752,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"5119:2:49","typeDescriptions":{"typeIdentifier":"t_rational_32_by_1","typeString":"int_const 32"},"value":"32"},"src":"5095:26:49","typeDescriptions":{"typeIdentifier":"t_uint112","typeString":"uint112"}}],"id":14754,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"5094:28:49","typeDescriptions":{"typeIdentifier":"t_uint112","typeString":"uint112"}},"src":"5068:54:49","typeDescriptions":{"typeIdentifier":"t_uint112","typeString":"uint112"}},"nodeType":"BinaryOperation","operator":"|","rightExpression":{"arguments":[{"id":14758,"name":"valueAfter","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":14731,"src":"5133:10:49","typeDescriptions":{"typeIdentifier":"t_uint32","typeString":"uint32"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint32","typeString":"uint32"}],"id":14757,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"5125:7:49","typeDescriptions":{"typeIdentifier":"t_type$_t_uint112_$","typeString":"type(uint112)"},"typeName":{"id":14756,"name":"uint112","nodeType":"ElementaryTypeName","src":"5125:7:49","typeDescriptions":{}}},"id":14759,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"5125:19:49","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint112","typeString":"uint112"}},"src":"5068:76:49","typeDescriptions":{"typeIdentifier":"t_uint112","typeString":"uint112"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint112","typeString":"uint112"}],"expression":{"id":14739,"name":"Delay","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":14528,"src":"5057:5:49","typeDescriptions":{"typeIdentifier":"t_type$_t_userDefinedValueType$_Delay_$14528_$","typeString":"type(Time.Delay)"}},"id":14740,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberLocation":"5063:4:49","memberName":"wrap","nodeType":"MemberAccess","src":"5057:10:49","typeDescriptions":{"typeIdentifier":"t_function_wrap_pure$_t_uint112_$returns$_t_userDefinedValueType$_Delay_$14528_$","typeString":"function (uint112) pure returns (Time.Delay)"}},"id":14761,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"5057:88:49","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_userDefinedValueType$_Delay_$14528","typeString":"Time.Delay"}},"functionReturnParameters":14738,"id":14762,"nodeType":"Return","src":"5050:95:49"}]},"documentation":{"id":14727,"nodeType":"StructuredDocumentation","src":"4873:64:49","text":" @dev pack the components into a Delay object."},"id":14764,"implemented":true,"kind":"function","modifiers":[],"name":"pack","nameLocation":"4951:4:49","nodeType":"FunctionDefinition","parameters":{"id":14734,"nodeType":"ParameterList","parameters":[{"constant":false,"id":14729,"mutability":"mutable","name":"valueBefore","nameLocation":"4963:11:49","nodeType":"VariableDeclaration","scope":14764,"src":"4956:18:49","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint32","typeString":"uint32"},"typeName":{"id":14728,"name":"uint32","nodeType":"ElementaryTypeName","src":"4956:6:49","typeDescriptions":{"typeIdentifier":"t_uint32","typeString":"uint32"}},"visibility":"internal"},{"constant":false,"id":14731,"mutability":"mutable","name":"valueAfter","nameLocation":"4983:10:49","nodeType":"VariableDeclaration","scope":14764,"src":"4976:17:49","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint32","typeString":"uint32"},"typeName":{"id":14730,"name":"uint32","nodeType":"ElementaryTypeName","src":"4976:6:49","typeDescriptions":{"typeIdentifier":"t_uint32","typeString":"uint32"}},"visibility":"internal"},{"constant":false,"id":14733,"mutability":"mutable","name":"effect","nameLocation":"5002:6:49","nodeType":"VariableDeclaration","scope":14764,"src":"4995:13:49","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint48","typeString":"uint48"},"typeName":{"id":14732,"name":"uint48","nodeType":"ElementaryTypeName","src":"4995:6:49","typeDescriptions":{"typeIdentifier":"t_uint48","typeString":"uint48"}},"visibility":"internal"}],"src":"4955:54:49"},"returnParameters":{"id":14738,"nodeType":"ParameterList","parameters":[{"constant":false,"id":14737,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":14764,"src":"5033:5:49","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_userDefinedValueType$_Delay_$14528","typeString":"Time.Delay"},"typeName":{"id":14736,"nodeType":"UserDefinedTypeName","pathNode":{"id":14735,"name":"Delay","nameLocations":["5033:5:49"],"nodeType":"IdentifierPath","referencedDeclaration":14528,"src":"5033:5:49"},"referencedDeclaration":14528,"src":"5033:5:49","typeDescriptions":{"typeIdentifier":"t_userDefinedValueType$_Delay_$14528","typeString":"Time.Delay"}},"visibility":"internal"}],"src":"5032:7:49"},"scope":14765,"src":"4942:210:49","stateMutability":"pure","virtual":false,"visibility":"internal"}],"scope":14766,"src":"640:4514:49","usedErrors":[],"usedEvents":[]}],"src":"104:5051:49"},"id":49},"@uniswap/v3-core/contracts/interfaces/callback/IUniswapV3SwapCallback.sol":{"ast":{"absolutePath":"@uniswap/v3-core/contracts/interfaces/callback/IUniswapV3SwapCallback.sol","exportedSymbols":{"IUniswapV3SwapCallback":[14779]},"id":14780,"license":"GPL-2.0-or-later","nodeType":"SourceUnit","nodes":[{"id":14767,"literals":["solidity",">=","0.5",".0"],"nodeType":"PragmaDirective","src":"45:24:50"},{"abstract":false,"baseContracts":[],"canonicalName":"IUniswapV3SwapCallback","contractDependencies":[],"contractKind":"interface","documentation":{"id":14768,"nodeType":"StructuredDocumentation","src":"71:144:50","text":"@title Callback for IUniswapV3PoolActions#swap\n @notice Any contract that calls IUniswapV3PoolActions#swap must implement this interface"},"fullyImplemented":false,"id":14779,"linearizedBaseContracts":[14779],"name":"IUniswapV3SwapCallback","nameLocation":"225:22:50","nodeType":"ContractDefinition","nodes":[{"documentation":{"id":14769,"nodeType":"StructuredDocumentation","src":"254:898:50","text":"@notice Called to `msg.sender` after executing a swap via IUniswapV3Pool#swap.\n @dev In the implementation you must pay the pool tokens owed for the swap.\n The caller of this method must be checked to be a UniswapV3Pool deployed by the canonical UniswapV3Factory.\n amount0Delta and amount1Delta can both be 0 if no tokens were swapped.\n @param amount0Delta The amount of token0 that was sent (negative) or must be received (positive) by the pool by\n the end of the swap. If positive, the callback must send that amount of token0 to the pool.\n @param amount1Delta The amount of token1 that was sent (negative) or must be received (positive) by the pool by\n the end of the swap. If positive, the callback must send that amount of token1 to the pool.\n @param data Any data passed through by the caller via the IUniswapV3PoolActions#swap call"},"functionSelector":"fa461e33","id":14778,"implemented":false,"kind":"function","modifiers":[],"name":"uniswapV3SwapCallback","nameLocation":"1166:21:50","nodeType":"FunctionDefinition","parameters":{"id":14776,"nodeType":"ParameterList","parameters":[{"constant":false,"id":14771,"mutability":"mutable","name":"amount0Delta","nameLocation":"1204:12:50","nodeType":"VariableDeclaration","scope":14778,"src":"1197:19:50","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"},"typeName":{"id":14770,"name":"int256","nodeType":"ElementaryTypeName","src":"1197:6:50","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"visibility":"internal"},{"constant":false,"id":14773,"mutability":"mutable","name":"amount1Delta","nameLocation":"1233:12:50","nodeType":"VariableDeclaration","scope":14778,"src":"1226:19:50","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"},"typeName":{"id":14772,"name":"int256","nodeType":"ElementaryTypeName","src":"1226:6:50","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"visibility":"internal"},{"constant":false,"id":14775,"mutability":"mutable","name":"data","nameLocation":"1270:4:50","nodeType":"VariableDeclaration","scope":14778,"src":"1255:19:50","stateVariable":false,"storageLocation":"calldata","typeDescriptions":{"typeIdentifier":"t_bytes_calldata_ptr","typeString":"bytes"},"typeName":{"id":14774,"name":"bytes","nodeType":"ElementaryTypeName","src":"1255:5:50","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"}],"src":"1187:93:50"},"returnParameters":{"id":14777,"nodeType":"ParameterList","parameters":[],"src":"1289:0:50"},"scope":14779,"src":"1157:133:50","stateMutability":"nonpayable","virtual":false,"visibility":"external"}],"scope":14780,"src":"215:1077:50","usedErrors":[],"usedEvents":[]}],"src":"45:1248:50"},"id":50},"@uniswap/v3-periphery/contracts/interfaces/ISwapRouter.sol":{"ast":{"absolutePath":"@uniswap/v3-periphery/contracts/interfaces/ISwapRouter.sol","exportedSymbols":{"ISwapRouter":[14879],"IUniswapV3SwapCallback":[14779]},"id":14880,"license":"GPL-2.0-or-later","nodeType":"SourceUnit","nodes":[{"id":14781,"literals":["solidity",">=","0.7",".5"],"nodeType":"PragmaDirective","src":"45:24:51"},{"id":14782,"literals":["abicoder","v2"],"nodeType":"PragmaDirective","src":"70:19:51"},{"absolutePath":"@uniswap/v3-core/contracts/interfaces/callback/IUniswapV3SwapCallback.sol","file":"@uniswap/v3-core/contracts/interfaces/callback/IUniswapV3SwapCallback.sol","id":14783,"nameLocation":"-1:-1:-1","nodeType":"ImportDirective","scope":14880,"sourceUnit":14780,"src":"91:83:51","symbolAliases":[],"unitAlias":""},{"abstract":false,"baseContracts":[{"baseName":{"id":14785,"name":"IUniswapV3SwapCallback","nameLocations":["305:22:51"],"nodeType":"IdentifierPath","referencedDeclaration":14779,"src":"305:22:51"},"id":14786,"nodeType":"InheritanceSpecifier","src":"305:22:51"}],"canonicalName":"ISwapRouter","contractDependencies":[],"contractKind":"interface","documentation":{"id":14784,"nodeType":"StructuredDocumentation","src":"176:104:51","text":"@title Router token swapping functionality\n @notice Functions for swapping tokens via Uniswap V3"},"fullyImplemented":false,"id":14879,"linearizedBaseContracts":[14879,14779],"name":"ISwapRouter","nameLocation":"290:11:51","nodeType":"ContractDefinition","nodes":[{"canonicalName":"ISwapRouter.ExactInputSingleParams","id":14803,"members":[{"constant":false,"id":14788,"mutability":"mutable","name":"tokenIn","nameLocation":"382:7:51","nodeType":"VariableDeclaration","scope":14803,"src":"374:15:51","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":14787,"name":"address","nodeType":"ElementaryTypeName","src":"374:7:51","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":14790,"mutability":"mutable","name":"tokenOut","nameLocation":"407:8:51","nodeType":"VariableDeclaration","scope":14803,"src":"399:16:51","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":14789,"name":"address","nodeType":"ElementaryTypeName","src":"399:7:51","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":14792,"mutability":"mutable","name":"fee","nameLocation":"432:3:51","nodeType":"VariableDeclaration","scope":14803,"src":"425:10:51","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint24","typeString":"uint24"},"typeName":{"id":14791,"name":"uint24","nodeType":"ElementaryTypeName","src":"425:6:51","typeDescriptions":{"typeIdentifier":"t_uint24","typeString":"uint24"}},"visibility":"internal"},{"constant":false,"id":14794,"mutability":"mutable","name":"recipient","nameLocation":"453:9:51","nodeType":"VariableDeclaration","scope":14803,"src":"445:17:51","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":14793,"name":"address","nodeType":"ElementaryTypeName","src":"445:7:51","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":14796,"mutability":"mutable","name":"deadline","nameLocation":"480:8:51","nodeType":"VariableDeclaration","scope":14803,"src":"472:16:51","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":14795,"name":"uint256","nodeType":"ElementaryTypeName","src":"472:7:51","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":14798,"mutability":"mutable","name":"amountIn","nameLocation":"506:8:51","nodeType":"VariableDeclaration","scope":14803,"src":"498:16:51","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":14797,"name":"uint256","nodeType":"ElementaryTypeName","src":"498:7:51","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":14800,"mutability":"mutable","name":"amountOutMinimum","nameLocation":"532:16:51","nodeType":"VariableDeclaration","scope":14803,"src":"524:24:51","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":14799,"name":"uint256","nodeType":"ElementaryTypeName","src":"524:7:51","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":14802,"mutability":"mutable","name":"sqrtPriceLimitX96","nameLocation":"566:17:51","nodeType":"VariableDeclaration","scope":14803,"src":"558:25:51","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint160","typeString":"uint160"},"typeName":{"id":14801,"name":"uint160","nodeType":"ElementaryTypeName","src":"558:7:51","typeDescriptions":{"typeIdentifier":"t_uint160","typeString":"uint160"}},"visibility":"internal"}],"name":"ExactInputSingleParams","nameLocation":"341:22:51","nodeType":"StructDefinition","scope":14879,"src":"334:256:51","visibility":"public"},{"documentation":{"id":14804,"nodeType":"StructuredDocumentation","src":"596:250:51","text":"@notice Swaps `amountIn` of one token for as much as possible of another token\n @param params The parameters necessary for the swap, encoded as `ExactInputSingleParams` in calldata\n @return amountOut The amount of the received token"},"functionSelector":"414bf389","id":14812,"implemented":false,"kind":"function","modifiers":[],"name":"exactInputSingle","nameLocation":"860:16:51","nodeType":"FunctionDefinition","parameters":{"id":14808,"nodeType":"ParameterList","parameters":[{"constant":false,"id":14807,"mutability":"mutable","name":"params","nameLocation":"909:6:51","nodeType":"VariableDeclaration","scope":14812,"src":"877:38:51","stateVariable":false,"storageLocation":"calldata","typeDescriptions":{"typeIdentifier":"t_struct$_ExactInputSingleParams_$14803_calldata_ptr","typeString":"struct ISwapRouter.ExactInputSingleParams"},"typeName":{"id":14806,"nodeType":"UserDefinedTypeName","pathNode":{"id":14805,"name":"ExactInputSingleParams","nameLocations":["877:22:51"],"nodeType":"IdentifierPath","referencedDeclaration":14803,"src":"877:22:51"},"referencedDeclaration":14803,"src":"877:22:51","typeDescriptions":{"typeIdentifier":"t_struct$_ExactInputSingleParams_$14803_storage_ptr","typeString":"struct ISwapRouter.ExactInputSingleParams"}},"visibility":"internal"}],"src":"876:40:51"},"returnParameters":{"id":14811,"nodeType":"ParameterList","parameters":[{"constant":false,"id":14810,"mutability":"mutable","name":"amountOut","nameLocation":"951:9:51","nodeType":"VariableDeclaration","scope":14812,"src":"943:17:51","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":14809,"name":"uint256","nodeType":"ElementaryTypeName","src":"943:7:51","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"942:19:51"},"scope":14879,"src":"851:111:51","stateMutability":"payable","virtual":false,"visibility":"external"},{"canonicalName":"ISwapRouter.ExactInputParams","id":14823,"members":[{"constant":false,"id":14814,"mutability":"mutable","name":"path","nameLocation":"1008:4:51","nodeType":"VariableDeclaration","scope":14823,"src":"1002:10:51","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"},"typeName":{"id":14813,"name":"bytes","nodeType":"ElementaryTypeName","src":"1002:5:51","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"},{"constant":false,"id":14816,"mutability":"mutable","name":"recipient","nameLocation":"1030:9:51","nodeType":"VariableDeclaration","scope":14823,"src":"1022:17:51","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":14815,"name":"address","nodeType":"ElementaryTypeName","src":"1022:7:51","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":14818,"mutability":"mutable","name":"deadline","nameLocation":"1057:8:51","nodeType":"VariableDeclaration","scope":14823,"src":"1049:16:51","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":14817,"name":"uint256","nodeType":"ElementaryTypeName","src":"1049:7:51","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":14820,"mutability":"mutable","name":"amountIn","nameLocation":"1083:8:51","nodeType":"VariableDeclaration","scope":14823,"src":"1075:16:51","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":14819,"name":"uint256","nodeType":"ElementaryTypeName","src":"1075:7:51","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":14822,"mutability":"mutable","name":"amountOutMinimum","nameLocation":"1109:16:51","nodeType":"VariableDeclaration","scope":14823,"src":"1101:24:51","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":14821,"name":"uint256","nodeType":"ElementaryTypeName","src":"1101:7:51","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"name":"ExactInputParams","nameLocation":"975:16:51","nodeType":"StructDefinition","scope":14879,"src":"968:164:51","visibility":"public"},{"documentation":{"id":14824,"nodeType":"StructuredDocumentation","src":"1138:273:51","text":"@notice Swaps `amountIn` of one token for as much as possible of another along the specified path\n @param params The parameters necessary for the multi-hop swap, encoded as `ExactInputParams` in calldata\n @return amountOut The amount of the received token"},"functionSelector":"c04b8d59","id":14832,"implemented":false,"kind":"function","modifiers":[],"name":"exactInput","nameLocation":"1425:10:51","nodeType":"FunctionDefinition","parameters":{"id":14828,"nodeType":"ParameterList","parameters":[{"constant":false,"id":14827,"mutability":"mutable","name":"params","nameLocation":"1462:6:51","nodeType":"VariableDeclaration","scope":14832,"src":"1436:32:51","stateVariable":false,"storageLocation":"calldata","typeDescriptions":{"typeIdentifier":"t_struct$_ExactInputParams_$14823_calldata_ptr","typeString":"struct ISwapRouter.ExactInputParams"},"typeName":{"id":14826,"nodeType":"UserDefinedTypeName","pathNode":{"id":14825,"name":"ExactInputParams","nameLocations":["1436:16:51"],"nodeType":"IdentifierPath","referencedDeclaration":14823,"src":"1436:16:51"},"referencedDeclaration":14823,"src":"1436:16:51","typeDescriptions":{"typeIdentifier":"t_struct$_ExactInputParams_$14823_storage_ptr","typeString":"struct ISwapRouter.ExactInputParams"}},"visibility":"internal"}],"src":"1435:34:51"},"returnParameters":{"id":14831,"nodeType":"ParameterList","parameters":[{"constant":false,"id":14830,"mutability":"mutable","name":"amountOut","nameLocation":"1504:9:51","nodeType":"VariableDeclaration","scope":14832,"src":"1496:17:51","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":14829,"name":"uint256","nodeType":"ElementaryTypeName","src":"1496:7:51","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"1495:19:51"},"scope":14879,"src":"1416:99:51","stateMutability":"payable","virtual":false,"visibility":"external"},{"canonicalName":"ISwapRouter.ExactOutputSingleParams","id":14849,"members":[{"constant":false,"id":14834,"mutability":"mutable","name":"tokenIn","nameLocation":"1570:7:51","nodeType":"VariableDeclaration","scope":14849,"src":"1562:15:51","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":14833,"name":"address","nodeType":"ElementaryTypeName","src":"1562:7:51","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":14836,"mutability":"mutable","name":"tokenOut","nameLocation":"1595:8:51","nodeType":"VariableDeclaration","scope":14849,"src":"1587:16:51","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":14835,"name":"address","nodeType":"ElementaryTypeName","src":"1587:7:51","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":14838,"mutability":"mutable","name":"fee","nameLocation":"1620:3:51","nodeType":"VariableDeclaration","scope":14849,"src":"1613:10:51","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint24","typeString":"uint24"},"typeName":{"id":14837,"name":"uint24","nodeType":"ElementaryTypeName","src":"1613:6:51","typeDescriptions":{"typeIdentifier":"t_uint24","typeString":"uint24"}},"visibility":"internal"},{"constant":false,"id":14840,"mutability":"mutable","name":"recipient","nameLocation":"1641:9:51","nodeType":"VariableDeclaration","scope":14849,"src":"1633:17:51","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":14839,"name":"address","nodeType":"ElementaryTypeName","src":"1633:7:51","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":14842,"mutability":"mutable","name":"deadline","nameLocation":"1668:8:51","nodeType":"VariableDeclaration","scope":14849,"src":"1660:16:51","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":14841,"name":"uint256","nodeType":"ElementaryTypeName","src":"1660:7:51","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":14844,"mutability":"mutable","name":"amountOut","nameLocation":"1694:9:51","nodeType":"VariableDeclaration","scope":14849,"src":"1686:17:51","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":14843,"name":"uint256","nodeType":"ElementaryTypeName","src":"1686:7:51","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":14846,"mutability":"mutable","name":"amountInMaximum","nameLocation":"1721:15:51","nodeType":"VariableDeclaration","scope":14849,"src":"1713:23:51","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":14845,"name":"uint256","nodeType":"ElementaryTypeName","src":"1713:7:51","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":14848,"mutability":"mutable","name":"sqrtPriceLimitX96","nameLocation":"1754:17:51","nodeType":"VariableDeclaration","scope":14849,"src":"1746:25:51","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint160","typeString":"uint160"},"typeName":{"id":14847,"name":"uint160","nodeType":"ElementaryTypeName","src":"1746:7:51","typeDescriptions":{"typeIdentifier":"t_uint160","typeString":"uint160"}},"visibility":"internal"}],"name":"ExactOutputSingleParams","nameLocation":"1528:23:51","nodeType":"StructDefinition","scope":14879,"src":"1521:257:51","visibility":"public"},{"documentation":{"id":14850,"nodeType":"StructuredDocumentation","src":"1784:250:51","text":"@notice Swaps as little as possible of one token for `amountOut` of another token\n @param params The parameters necessary for the swap, encoded as `ExactOutputSingleParams` in calldata\n @return amountIn The amount of the input token"},"functionSelector":"db3e2198","id":14858,"implemented":false,"kind":"function","modifiers":[],"name":"exactOutputSingle","nameLocation":"2048:17:51","nodeType":"FunctionDefinition","parameters":{"id":14854,"nodeType":"ParameterList","parameters":[{"constant":false,"id":14853,"mutability":"mutable","name":"params","nameLocation":"2099:6:51","nodeType":"VariableDeclaration","scope":14858,"src":"2066:39:51","stateVariable":false,"storageLocation":"calldata","typeDescriptions":{"typeIdentifier":"t_struct$_ExactOutputSingleParams_$14849_calldata_ptr","typeString":"struct ISwapRouter.ExactOutputSingleParams"},"typeName":{"id":14852,"nodeType":"UserDefinedTypeName","pathNode":{"id":14851,"name":"ExactOutputSingleParams","nameLocations":["2066:23:51"],"nodeType":"IdentifierPath","referencedDeclaration":14849,"src":"2066:23:51"},"referencedDeclaration":14849,"src":"2066:23:51","typeDescriptions":{"typeIdentifier":"t_struct$_ExactOutputSingleParams_$14849_storage_ptr","typeString":"struct ISwapRouter.ExactOutputSingleParams"}},"visibility":"internal"}],"src":"2065:41:51"},"returnParameters":{"id":14857,"nodeType":"ParameterList","parameters":[{"constant":false,"id":14856,"mutability":"mutable","name":"amountIn","nameLocation":"2141:8:51","nodeType":"VariableDeclaration","scope":14858,"src":"2133:16:51","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":14855,"name":"uint256","nodeType":"ElementaryTypeName","src":"2133:7:51","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"2132:18:51"},"scope":14879,"src":"2039:112:51","stateMutability":"payable","virtual":false,"visibility":"external"},{"canonicalName":"ISwapRouter.ExactOutputParams","id":14869,"members":[{"constant":false,"id":14860,"mutability":"mutable","name":"path","nameLocation":"2198:4:51","nodeType":"VariableDeclaration","scope":14869,"src":"2192:10:51","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"},"typeName":{"id":14859,"name":"bytes","nodeType":"ElementaryTypeName","src":"2192:5:51","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"},{"constant":false,"id":14862,"mutability":"mutable","name":"recipient","nameLocation":"2220:9:51","nodeType":"VariableDeclaration","scope":14869,"src":"2212:17:51","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":14861,"name":"address","nodeType":"ElementaryTypeName","src":"2212:7:51","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":14864,"mutability":"mutable","name":"deadline","nameLocation":"2247:8:51","nodeType":"VariableDeclaration","scope":14869,"src":"2239:16:51","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":14863,"name":"uint256","nodeType":"ElementaryTypeName","src":"2239:7:51","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":14866,"mutability":"mutable","name":"amountOut","nameLocation":"2273:9:51","nodeType":"VariableDeclaration","scope":14869,"src":"2265:17:51","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":14865,"name":"uint256","nodeType":"ElementaryTypeName","src":"2265:7:51","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":14868,"mutability":"mutable","name":"amountInMaximum","nameLocation":"2300:15:51","nodeType":"VariableDeclaration","scope":14869,"src":"2292:23:51","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":14867,"name":"uint256","nodeType":"ElementaryTypeName","src":"2292:7:51","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"name":"ExactOutputParams","nameLocation":"2164:17:51","nodeType":"StructDefinition","scope":14879,"src":"2157:165:51","visibility":"public"},{"documentation":{"id":14870,"nodeType":"StructuredDocumentation","src":"2328:284:51","text":"@notice Swaps as little as possible of one token for `amountOut` of another along the specified path (reversed)\n @param params The parameters necessary for the multi-hop swap, encoded as `ExactOutputParams` in calldata\n @return amountIn The amount of the input token"},"functionSelector":"f28c0498","id":14878,"implemented":false,"kind":"function","modifiers":[],"name":"exactOutput","nameLocation":"2626:11:51","nodeType":"FunctionDefinition","parameters":{"id":14874,"nodeType":"ParameterList","parameters":[{"constant":false,"id":14873,"mutability":"mutable","name":"params","nameLocation":"2665:6:51","nodeType":"VariableDeclaration","scope":14878,"src":"2638:33:51","stateVariable":false,"storageLocation":"calldata","typeDescriptions":{"typeIdentifier":"t_struct$_ExactOutputParams_$14869_calldata_ptr","typeString":"struct ISwapRouter.ExactOutputParams"},"typeName":{"id":14872,"nodeType":"UserDefinedTypeName","pathNode":{"id":14871,"name":"ExactOutputParams","nameLocations":["2638:17:51"],"nodeType":"IdentifierPath","referencedDeclaration":14869,"src":"2638:17:51"},"referencedDeclaration":14869,"src":"2638:17:51","typeDescriptions":{"typeIdentifier":"t_struct$_ExactOutputParams_$14869_storage_ptr","typeString":"struct ISwapRouter.ExactOutputParams"}},"visibility":"internal"}],"src":"2637:35:51"},"returnParameters":{"id":14877,"nodeType":"ParameterList","parameters":[{"constant":false,"id":14876,"mutability":"mutable","name":"amountIn","nameLocation":"2707:8:51","nodeType":"VariableDeclaration","scope":14878,"src":"2699:16:51","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":14875,"name":"uint256","nodeType":"ElementaryTypeName","src":"2699:7:51","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"2698:18:51"},"scope":14879,"src":"2617:100:51","stateMutability":"payable","virtual":false,"visibility":"external"}],"scope":14880,"src":"280:2439:51","usedErrors":[],"usedEvents":[]}],"src":"45:2675:51"},"id":51},"contracts/AccessManagedMSV.sol":{"ast":{"absolutePath":"contracts/AccessManagedMSV.sol","exportedSymbols":{"AMPUtils":[240],"AccessManagedMSV":[15277],"AccessManagedProxy":[330],"ERC4626Upgradeable":[4428],"IAccessManager":[6842],"IERC20":[8679],"IERC4626":[7127],"IInvestStrategy":[20725],"MSVBase":[17366],"Math":[12726],"UUPSUpgradeable":[8086]},"id":15278,"license":"Apache-2.0","nodeType":"SourceUnit","nodes":[{"id":14881,"literals":["solidity","^","0.8",".0"],"nodeType":"PragmaDirective","src":"39:23:52"},{"absolutePath":"@openzeppelin/contracts/token/ERC20/IERC20.sol","file":"@openzeppelin/contracts/token/ERC20/IERC20.sol","id":14883,"nameLocation":"-1:-1:-1","nodeType":"ImportDirective","scope":15278,"sourceUnit":8680,"src":"64:70:52","symbolAliases":[{"foreign":{"id":14882,"name":"IERC20","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8679,"src":"72:6:52","typeDescriptions":{}},"nameLocation":"-1:-1:-1"}],"unitAlias":""},{"absolutePath":"@openzeppelin/contracts/interfaces/IERC4626.sol","file":"@openzeppelin/contracts/interfaces/IERC4626.sol","id":14885,"nameLocation":"-1:-1:-1","nodeType":"ImportDirective","scope":15278,"sourceUnit":7128,"src":"135:73:52","symbolAliases":[{"foreign":{"id":14884,"name":"IERC4626","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7127,"src":"143:8:52","typeDescriptions":{}},"nameLocation":"-1:-1:-1"}],"unitAlias":""},{"absolutePath":"@openzeppelin/contracts/access/manager/IAccessManager.sol","file":"@openzeppelin/contracts/access/manager/IAccessManager.sol","id":14887,"nameLocation":"-1:-1:-1","nodeType":"ImportDirective","scope":15278,"sourceUnit":6843,"src":"209:89:52","symbolAliases":[{"foreign":{"id":14886,"name":"IAccessManager","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6842,"src":"217:14:52","typeDescriptions":{}},"nameLocation":"-1:-1:-1"}],"unitAlias":""},{"absolutePath":"@openzeppelin/contracts-upgradeable/token/ERC20/extensions/ERC4626Upgradeable.sol","file":"@openzeppelin/contracts-upgradeable/token/ERC20/extensions/ERC4626Upgradeable.sol","id":14889,"nameLocation":"-1:-1:-1","nodeType":"ImportDirective","scope":15278,"sourceUnit":4429,"src":"299:117:52","symbolAliases":[{"foreign":{"id":14888,"name":"ERC4626Upgradeable","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4428,"src":"307:18:52","typeDescriptions":{}},"nameLocation":"-1:-1:-1"}],"unitAlias":""},{"absolutePath":"@openzeppelin/contracts-upgradeable/proxy/utils/UUPSUpgradeable.sol","file":"@openzeppelin/contracts-upgradeable/proxy/utils/UUPSUpgradeable.sol","id":14891,"nameLocation":"-1:-1:-1","nodeType":"ImportDirective","scope":15278,"sourceUnit":3048,"src":"417:100:52","symbolAliases":[{"foreign":{"id":14890,"name":"UUPSUpgradeable","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8086,"src":"425:15:52","typeDescriptions":{}},"nameLocation":"-1:-1:-1"}],"unitAlias":""},{"absolutePath":"@openzeppelin/contracts/utils/math/Math.sol","file":"@openzeppelin/contracts/utils/math/Math.sol","id":14893,"nameLocation":"-1:-1:-1","nodeType":"ImportDirective","scope":15278,"sourceUnit":12727,"src":"518:65:52","symbolAliases":[{"foreign":{"id":14892,"name":"Math","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":12726,"src":"526:4:52","typeDescriptions":{}},"nameLocation":"-1:-1:-1"}],"unitAlias":""},{"absolutePath":"contracts/MSVBase.sol","file":"./MSVBase.sol","id":14895,"nameLocation":"-1:-1:-1","nodeType":"ImportDirective","scope":15278,"sourceUnit":17367,"src":"584:38:52","symbolAliases":[{"foreign":{"id":14894,"name":"MSVBase","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":17366,"src":"592:7:52","typeDescriptions":{}},"nameLocation":"-1:-1:-1"}],"unitAlias":""},{"absolutePath":"contracts/interfaces/IInvestStrategy.sol","file":"./interfaces/IInvestStrategy.sol","id":14897,"nameLocation":"-1:-1:-1","nodeType":"ImportDirective","scope":15278,"sourceUnit":20726,"src":"623:65:52","symbolAliases":[{"foreign":{"id":14896,"name":"IInvestStrategy","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":20725,"src":"631:15:52","typeDescriptions":{}},"nameLocation":"-1:-1:-1"}],"unitAlias":""},{"absolutePath":"@ensuro/access-managed-proxy/contracts/AccessManagedProxy.sol","file":"@ensuro/access-managed-proxy/contracts/AccessManagedProxy.sol","id":14899,"nameLocation":"-1:-1:-1","nodeType":"ImportDirective","scope":15278,"sourceUnit":331,"src":"689:97:52","symbolAliases":[{"foreign":{"id":14898,"name":"AccessManagedProxy","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":330,"src":"697:18:52","typeDescriptions":{}},"nameLocation":"-1:-1:-1"}],"unitAlias":""},{"absolutePath":"@ensuro/access-managed-proxy/contracts/AMPUtils.sol","file":"@ensuro/access-managed-proxy/contracts/AMPUtils.sol","id":14901,"nameLocation":"-1:-1:-1","nodeType":"ImportDirective","scope":15278,"sourceUnit":241,"src":"787:77:52","symbolAliases":[{"foreign":{"id":14900,"name":"AMPUtils","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":240,"src":"795:8:52","typeDescriptions":{}},"nameLocation":"-1:-1:-1"}],"unitAlias":""},{"abstract":false,"baseContracts":[{"baseName":{"id":14903,"name":"MSVBase","nameLocations":["1499:7:52"],"nodeType":"IdentifierPath","referencedDeclaration":17366,"src":"1499:7:52"},"id":14904,"nodeType":"InheritanceSpecifier","src":"1499:7:52"},{"baseName":{"id":14905,"name":"UUPSUpgradeable","nameLocations":["1508:15:52"],"nodeType":"IdentifierPath","referencedDeclaration":8086,"src":"1508:15:52"},"id":14906,"nodeType":"InheritanceSpecifier","src":"1508:15:52"},{"baseName":{"id":14907,"name":"ERC4626Upgradeable","nameLocations":["1525:18:52"],"nodeType":"IdentifierPath","referencedDeclaration":4428,"src":"1525:18:52"},"id":14908,"nodeType":"InheritanceSpecifier","src":"1525:18:52"}],"canonicalName":"AccessManagedMSV","contractDependencies":[],"contractKind":"contract","documentation":{"id":14902,"nodeType":"StructuredDocumentation","src":"866:603:52","text":" @title AccessManagedMSV\n @dev Vault that invests/deinvests using pluggable IInvestStrategy contracts on each deposit/withdraw.\n      The vault MUST be deployed behind an AccessManagedProxy that controls the access to the critical methods\n      Since this contract DOESN'T DO ANY ACCESS CONTROL.\n      The code of the IInvestStrategy is called using delegatecall, so it has full control over the assets and\n      storage of this contract, so you must be very careful the kind of IInvestStrategy is plugged.\n @custom:security-contact security@ensuro.co\n @author Ensuro"},"fullyImplemented":true,"id":15277,"linearizedBaseContracts":[15277,4428,7127,3664,7179,9411,8679,4474,7920,8086,7137,17366,20649],"name":"AccessManagedMSV","nameLocation":"1479:16:52","nodeType":"ContractDefinition","nodes":[{"body":{"id":14915,"nodeType":"Block","src":"1613:33:52","statements":[{"expression":{"arguments":[],"expression":{"argumentTypes":[],"id":14912,"name":"_disableInitializers","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7874,"src":"1619:20:52","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$__$returns$__$","typeString":"function ()"}},"id":14913,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"1619:22:52","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":14914,"nodeType":"ExpressionStatement","src":"1619:22:52"}]},"documentation":{"id":14909,"nodeType":"StructuredDocumentation","src":"1548:48:52","text":"@custom:oz-upgrades-unsafe-allow constructor"},"id":14916,"implemented":true,"kind":"constructor","modifiers":[],"name":"","nameLocation":"-1:-1:-1","nodeType":"FunctionDefinition","parameters":{"id":14910,"nodeType":"ParameterList","parameters":[],"src":"1610:2:52"},"returnParameters":{"id":14911,"nodeType":"ParameterList","parameters":[],"src":"1613:0:52"},"scope":15277,"src":"1599:47:52","stateMutability":"nonpayable","virtual":false,"visibility":"public"},{"body":{"id":14952,"nodeType":"Block","src":"2500:121:52","statements":[{"expression":{"arguments":[{"id":14943,"name":"name_","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":14919,"src":"2530:5:52","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"}},{"id":14944,"name":"symbol_","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":14921,"src":"2537:7:52","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"}},{"id":14945,"name":"asset_","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":14924,"src":"2546:6:52","typeDescriptions":{"typeIdentifier":"t_contract$_IERC20_$8679","typeString":"contract IERC20"}},{"id":14946,"name":"strategies_","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":14928,"src":"2554:11:52","typeDescriptions":{"typeIdentifier":"t_array$_t_contract$_IInvestStrategy_$20725_$dyn_memory_ptr","typeString":"contract IInvestStrategy[] memory"}},{"id":14947,"name":"initStrategyDatas","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":14931,"src":"2567:17:52","typeDescriptions":{"typeIdentifier":"t_array$_t_bytes_memory_ptr_$dyn_memory_ptr","typeString":"bytes memory[] memory"}},{"id":14948,"name":"depositQueue_","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":14934,"src":"2586:13:52","typeDescriptions":{"typeIdentifier":"t_array$_t_uint8_$dyn_memory_ptr","typeString":"uint8[] memory"}},{"id":14949,"name":"withdrawQueue_","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":14937,"src":"2601:14:52","typeDescriptions":{"typeIdentifier":"t_array$_t_uint8_$dyn_memory_ptr","typeString":"uint8[] memory"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"},{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"},{"typeIdentifier":"t_contract$_IERC20_$8679","typeString":"contract IERC20"},{"typeIdentifier":"t_array$_t_contract$_IInvestStrategy_$20725_$dyn_memory_ptr","typeString":"contract IInvestStrategy[] memory"},{"typeIdentifier":"t_array$_t_bytes_memory_ptr_$dyn_memory_ptr","typeString":"bytes memory[] memory"},{"typeIdentifier":"t_array$_t_uint8_$dyn_memory_ptr","typeString":"uint8[] memory"},{"typeIdentifier":"t_array$_t_uint8_$dyn_memory_ptr","typeString":"uint8[] memory"}],"id":14942,"name":"__AccessManagedMSV_init","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":14995,"src":"2506:23:52","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_string_memory_ptr_$_t_string_memory_ptr_$_t_contract$_IERC20_$8679_$_t_array$_t_contract$_IInvestStrategy_$20725_$dyn_memory_ptr_$_t_array$_t_bytes_memory_ptr_$dyn_memory_ptr_$_t_array$_t_uint8_$dyn_memory_ptr_$_t_array$_t_uint8_$dyn_memory_ptr_$returns$__$","typeString":"function (string memory,string memory,contract IERC20,contract IInvestStrategy[] memory,bytes memory[] memory,uint8[] memory,uint8[] memory)"}},"id":14950,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"2506:110:52","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":14951,"nodeType":"ExpressionStatement","src":"2506:110:52"}]},"documentation":{"id":14917,"nodeType":"StructuredDocumentation","src":"1650:576:52","text":" @dev Initializes the SingleStrategyERC4626\n @param name_ Name of the ERC20/ERC4626 token\n @param symbol_ Symbol of the ERC20/ERC4626 token\n @param asset_ The asset() of the ERC4626\n @param strategies_ The IInvestStrategys that will be used to manage the funds received.\n @param initStrategyDatas Initialization data that will be sent to the strategies\n @param depositQueue_ The order in which the funds will be deposited in the strategies\n @param withdrawQueue_ The order in which the funds will be withdrawn from the strategies"},"functionSelector":"a7ded2ea","id":14953,"implemented":true,"kind":"function","modifiers":[{"id":14940,"kind":"modifierInvocation","modifierName":{"id":14939,"name":"initializer","nameLocations":["2488:11:52"],"nodeType":"IdentifierPath","referencedDeclaration":7760,"src":"2488:11:52"},"nodeType":"ModifierInvocation","src":"2488:11:52"}],"name":"initialize","nameLocation":"2238:10:52","nodeType":"FunctionDefinition","parameters":{"id":14938,"nodeType":"ParameterList","parameters":[{"constant":false,"id":14919,"mutability":"mutable","name":"name_","nameLocation":"2268:5:52","nodeType":"VariableDeclaration","scope":14953,"src":"2254:19:52","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string"},"typeName":{"id":14918,"name":"string","nodeType":"ElementaryTypeName","src":"2254:6:52","typeDescriptions":{"typeIdentifier":"t_string_storage_ptr","typeString":"string"}},"visibility":"internal"},{"constant":false,"id":14921,"mutability":"mutable","name":"symbol_","nameLocation":"2293:7:52","nodeType":"VariableDeclaration","scope":14953,"src":"2279:21:52","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string"},"typeName":{"id":14920,"name":"string","nodeType":"ElementaryTypeName","src":"2279:6:52","typeDescriptions":{"typeIdentifier":"t_string_storage_ptr","typeString":"string"}},"visibility":"internal"},{"constant":false,"id":14924,"mutability":"mutable","name":"asset_","nameLocation":"2313:6:52","nodeType":"VariableDeclaration","scope":14953,"src":"2306:13:52","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_contract$_IERC20_$8679","typeString":"contract IERC20"},"typeName":{"id":14923,"nodeType":"UserDefinedTypeName","pathNode":{"id":14922,"name":"IERC20","nameLocations":["2306:6:52"],"nodeType":"IdentifierPath","referencedDeclaration":8679,"src":"2306:6:52"},"referencedDeclaration":8679,"src":"2306:6:52","typeDescriptions":{"typeIdentifier":"t_contract$_IERC20_$8679","typeString":"contract IERC20"}},"visibility":"internal"},{"constant":false,"id":14928,"mutability":"mutable","name":"strategies_","nameLocation":"2350:11:52","nodeType":"VariableDeclaration","scope":14953,"src":"2325:36:52","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_array$_t_contract$_IInvestStrategy_$20725_$dyn_memory_ptr","typeString":"contract IInvestStrategy[]"},"typeName":{"baseType":{"id":14926,"nodeType":"UserDefinedTypeName","pathNode":{"id":14925,"name":"IInvestStrategy","nameLocations":["2325:15:52"],"nodeType":"IdentifierPath","referencedDeclaration":20725,"src":"2325:15:52"},"referencedDeclaration":20725,"src":"2325:15:52","typeDescriptions":{"typeIdentifier":"t_contract$_IInvestStrategy_$20725","typeString":"contract IInvestStrategy"}},"id":14927,"nodeType":"ArrayTypeName","src":"2325:17:52","typeDescriptions":{"typeIdentifier":"t_array$_t_contract$_IInvestStrategy_$20725_$dyn_storage_ptr","typeString":"contract IInvestStrategy[]"}},"visibility":"internal"},{"constant":false,"id":14931,"mutability":"mutable","name":"initStrategyDatas","nameLocation":"2382:17:52","nodeType":"VariableDeclaration","scope":14953,"src":"2367:32:52","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_array$_t_bytes_memory_ptr_$dyn_memory_ptr","typeString":"bytes[]"},"typeName":{"baseType":{"id":14929,"name":"bytes","nodeType":"ElementaryTypeName","src":"2367:5:52","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"id":14930,"nodeType":"ArrayTypeName","src":"2367:7:52","typeDescriptions":{"typeIdentifier":"t_array$_t_bytes_storage_$dyn_storage_ptr","typeString":"bytes[]"}},"visibility":"internal"},{"constant":false,"id":14934,"mutability":"mutable","name":"depositQueue_","nameLocation":"2420:13:52","nodeType":"VariableDeclaration","scope":14953,"src":"2405:28:52","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_array$_t_uint8_$dyn_memory_ptr","typeString":"uint8[]"},"typeName":{"baseType":{"id":14932,"name":"uint8","nodeType":"ElementaryTypeName","src":"2405:5:52","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}},"id":14933,"nodeType":"ArrayTypeName","src":"2405:7:52","typeDescriptions":{"typeIdentifier":"t_array$_t_uint8_$dyn_storage_ptr","typeString":"uint8[]"}},"visibility":"internal"},{"constant":false,"id":14937,"mutability":"mutable","name":"withdrawQueue_","nameLocation":"2454:14:52","nodeType":"VariableDeclaration","scope":14953,"src":"2439:29:52","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_array$_t_uint8_$dyn_memory_ptr","typeString":"uint8[]"},"typeName":{"baseType":{"id":14935,"name":"uint8","nodeType":"ElementaryTypeName","src":"2439:5:52","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}},"id":14936,"nodeType":"ArrayTypeName","src":"2439:7:52","typeDescriptions":{"typeIdentifier":"t_array$_t_uint8_$dyn_storage_ptr","typeString":"uint8[]"}},"visibility":"internal"}],"src":"2248:224:52"},"returnParameters":{"id":14941,"nodeType":"ParameterList","parameters":[],"src":"2500:0:52"},"scope":15277,"src":"2229:392:52","stateMutability":"nonpayable","virtual":true,"visibility":"public"},{"body":{"id":14994,"nodeType":"Block","src":"2959:160:52","statements":[{"expression":{"arguments":[{"id":14979,"name":"asset_","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":14960,"src":"2980:6:52","typeDescriptions":{"typeIdentifier":"t_contract$_IERC20_$8679","typeString":"contract IERC20"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_contract$_IERC20_$8679","typeString":"contract IERC20"}],"id":14978,"name":"__ERC4626_init","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3762,"src":"2965:14:52","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_contract$_IERC20_$8679_$returns$__$","typeString":"function (contract IERC20)"}},"id":14980,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"2965:22:52","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":14981,"nodeType":"ExpressionStatement","src":"2965:22:52"},{"expression":{"arguments":[{"id":14983,"name":"name_","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":14955,"src":"3006:5:52","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"}},{"id":14984,"name":"symbol_","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":14957,"src":"3013:7:52","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"},{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"}],"id":14982,"name":"__ERC20_init","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3115,"src":"2993:12:52","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_string_memory_ptr_$_t_string_memory_ptr_$returns$__$","typeString":"function (string memory,string memory)"}},"id":14985,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"2993:28:52","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":14986,"nodeType":"ExpressionStatement","src":"2993:28:52"},{"expression":{"arguments":[{"id":14988,"name":"strategies_","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":14964,"src":"3052:11:52","typeDescriptions":{"typeIdentifier":"t_array$_t_contract$_IInvestStrategy_$20725_$dyn_memory_ptr","typeString":"contract IInvestStrategy[] memory"}},{"id":14989,"name":"initStrategyDatas","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":14967,"src":"3065:17:52","typeDescriptions":{"typeIdentifier":"t_array$_t_bytes_memory_ptr_$dyn_memory_ptr","typeString":"bytes memory[] memory"}},{"id":14990,"name":"depositQueue_","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":14970,"src":"3084:13:52","typeDescriptions":{"typeIdentifier":"t_array$_t_uint8_$dyn_memory_ptr","typeString":"uint8[] memory"}},{"id":14991,"name":"withdrawQueue_","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":14973,"src":"3099:14:52","typeDescriptions":{"typeIdentifier":"t_array$_t_uint8_$dyn_memory_ptr","typeString":"uint8[] memory"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_array$_t_contract$_IInvestStrategy_$20725_$dyn_memory_ptr","typeString":"contract IInvestStrategy[] memory"},{"typeIdentifier":"t_array$_t_bytes_memory_ptr_$dyn_memory_ptr","typeString":"bytes memory[] memory"},{"typeIdentifier":"t_array$_t_uint8_$dyn_memory_ptr","typeString":"uint8[] memory"},{"typeIdentifier":"t_array$_t_uint8_$dyn_memory_ptr","typeString":"uint8[] memory"}],"id":14987,"name":"__MSVBase_init_unchained","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":16061,"src":"3027:24:52","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_array$_t_contract$_IInvestStrategy_$20725_$dyn_memory_ptr_$_t_array$_t_bytes_memory_ptr_$dyn_memory_ptr_$_t_array$_t_uint8_$dyn_memory_ptr_$_t_array$_t_uint8_$dyn_memory_ptr_$returns$__$","typeString":"function (contract IInvestStrategy[] memory,bytes memory[] memory,uint8[] memory,uint8[] memory)"}},"id":14992,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"3027:87:52","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":14993,"nodeType":"ExpressionStatement","src":"3027:87:52"}]},"id":14995,"implemented":true,"kind":"function","modifiers":[{"id":14976,"kind":"modifierInvocation","modifierName":{"id":14975,"name":"onlyInitializing","nameLocations":["2942:16:52"],"nodeType":"IdentifierPath","referencedDeclaration":7815,"src":"2942:16:52"},"nodeType":"ModifierInvocation","src":"2942:16:52"}],"name":"__AccessManagedMSV_init","nameLocation":"2685:23:52","nodeType":"FunctionDefinition","parameters":{"id":14974,"nodeType":"ParameterList","parameters":[{"constant":false,"id":14955,"mutability":"mutable","name":"name_","nameLocation":"2728:5:52","nodeType":"VariableDeclaration","scope":14995,"src":"2714:19:52","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string"},"typeName":{"id":14954,"name":"string","nodeType":"ElementaryTypeName","src":"2714:6:52","typeDescriptions":{"typeIdentifier":"t_string_storage_ptr","typeString":"string"}},"visibility":"internal"},{"constant":false,"id":14957,"mutability":"mutable","name":"symbol_","nameLocation":"2753:7:52","nodeType":"VariableDeclaration","scope":14995,"src":"2739:21:52","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string"},"typeName":{"id":14956,"name":"string","nodeType":"ElementaryTypeName","src":"2739:6:52","typeDescriptions":{"typeIdentifier":"t_string_storage_ptr","typeString":"string"}},"visibility":"internal"},{"constant":false,"id":14960,"mutability":"mutable","name":"asset_","nameLocation":"2773:6:52","nodeType":"VariableDeclaration","scope":14995,"src":"2766:13:52","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_contract$_IERC20_$8679","typeString":"contract IERC20"},"typeName":{"id":14959,"nodeType":"UserDefinedTypeName","pathNode":{"id":14958,"name":"IERC20","nameLocations":["2766:6:52"],"nodeType":"IdentifierPath","referencedDeclaration":8679,"src":"2766:6:52"},"referencedDeclaration":8679,"src":"2766:6:52","typeDescriptions":{"typeIdentifier":"t_contract$_IERC20_$8679","typeString":"contract IERC20"}},"visibility":"internal"},{"constant":false,"id":14964,"mutability":"mutable","name":"strategies_","nameLocation":"2810:11:52","nodeType":"VariableDeclaration","scope":14995,"src":"2785:36:52","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_array$_t_contract$_IInvestStrategy_$20725_$dyn_memory_ptr","typeString":"contract IInvestStrategy[]"},"typeName":{"baseType":{"id":14962,"nodeType":"UserDefinedTypeName","pathNode":{"id":14961,"name":"IInvestStrategy","nameLocations":["2785:15:52"],"nodeType":"IdentifierPath","referencedDeclaration":20725,"src":"2785:15:52"},"referencedDeclaration":20725,"src":"2785:15:52","typeDescriptions":{"typeIdentifier":"t_contract$_IInvestStrategy_$20725","typeString":"contract IInvestStrategy"}},"id":14963,"nodeType":"ArrayTypeName","src":"2785:17:52","typeDescriptions":{"typeIdentifier":"t_array$_t_contract$_IInvestStrategy_$20725_$dyn_storage_ptr","typeString":"contract IInvestStrategy[]"}},"visibility":"internal"},{"constant":false,"id":14967,"mutability":"mutable","name":"initStrategyDatas","nameLocation":"2842:17:52","nodeType":"VariableDeclaration","scope":14995,"src":"2827:32:52","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_array$_t_bytes_memory_ptr_$dyn_memory_ptr","typeString":"bytes[]"},"typeName":{"baseType":{"id":14965,"name":"bytes","nodeType":"ElementaryTypeName","src":"2827:5:52","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"id":14966,"nodeType":"ArrayTypeName","src":"2827:7:52","typeDescriptions":{"typeIdentifier":"t_array$_t_bytes_storage_$dyn_storage_ptr","typeString":"bytes[]"}},"visibility":"internal"},{"constant":false,"id":14970,"mutability":"mutable","name":"depositQueue_","nameLocation":"2880:13:52","nodeType":"VariableDeclaration","scope":14995,"src":"2865:28:52","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_array$_t_uint8_$dyn_memory_ptr","typeString":"uint8[]"},"typeName":{"baseType":{"id":14968,"name":"uint8","nodeType":"ElementaryTypeName","src":"2865:5:52","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}},"id":14969,"nodeType":"ArrayTypeName","src":"2865:7:52","typeDescriptions":{"typeIdentifier":"t_array$_t_uint8_$dyn_storage_ptr","typeString":"uint8[]"}},"visibility":"internal"},{"constant":false,"id":14973,"mutability":"mutable","name":"withdrawQueue_","nameLocation":"2914:14:52","nodeType":"VariableDeclaration","scope":14995,"src":"2899:29:52","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_array$_t_uint8_$dyn_memory_ptr","typeString":"uint8[]"},"typeName":{"baseType":{"id":14971,"name":"uint8","nodeType":"ElementaryTypeName","src":"2899:5:52","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}},"id":14972,"nodeType":"ArrayTypeName","src":"2899:7:52","typeDescriptions":{"typeIdentifier":"t_array$_t_uint8_$dyn_storage_ptr","typeString":"uint8[]"}},"visibility":"internal"}],"src":"2708:224:52"},"returnParameters":{"id":14977,"nodeType":"ParameterList","parameters":[],"src":"2959:0:52"},"scope":15277,"src":"2676:443:52","stateMutability":"nonpayable","virtual":false,"visibility":"internal"},{"baseFunctions":[8040],"body":{"id":15001,"nodeType":"Block","src":"3237:2:52","statements":[]},"id":15002,"implemented":true,"kind":"function","modifiers":[],"name":"_authorizeUpgrade","nameLocation":"3179:17:52","nodeType":"FunctionDefinition","overrides":{"id":14999,"nodeType":"OverrideSpecifier","overrides":[],"src":"3228:8:52"},"parameters":{"id":14998,"nodeType":"ParameterList","parameters":[{"constant":false,"id":14997,"mutability":"mutable","name":"newImpl","nameLocation":"3205:7:52","nodeType":"VariableDeclaration","scope":15002,"src":"3197:15:52","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":14996,"name":"address","nodeType":"ElementaryTypeName","src":"3197:7:52","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"3196:17:52"},"returnParameters":{"id":15000,"nodeType":"ParameterList","parameters":[],"src":"3237:0:52"},"scope":15277,"src":"3170:69:52","stateMutability":"view","virtual":false,"visibility":"internal"},{"baseFunctions":[15830],"body":{"id":15011,"nodeType":"Block","src":"3302:25:52","statements":[{"expression":{"arguments":[],"expression":{"argumentTypes":[],"id":15008,"name":"asset","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3919,"src":"3315:5:52","typeDescriptions":{"typeIdentifier":"t_function_internal_view$__$returns$_t_address_$","typeString":"function () view returns (address)"}},"id":15009,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"3315:7:52","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"functionReturnParameters":15007,"id":15010,"nodeType":"Return","src":"3308:14:52"}]},"id":15012,"implemented":true,"kind":"function","modifiers":[],"name":"_asset","nameLocation":"3252:6:52","nodeType":"FunctionDefinition","overrides":{"id":15004,"nodeType":"OverrideSpecifier","overrides":[],"src":"3275:8:52"},"parameters":{"id":15003,"nodeType":"ParameterList","parameters":[],"src":"3258:2:52"},"returnParameters":{"id":15007,"nodeType":"ParameterList","parameters":[{"constant":false,"id":15006,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":15012,"src":"3293:7:52","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":15005,"name":"address","nodeType":"ElementaryTypeName","src":"3293:7:52","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"3292:9:52"},"scope":15277,"src":"3243:84:52","stateMutability":"view","virtual":false,"visibility":"internal"},{"baseFunctions":[4014],"body":{"id":15032,"nodeType":"Block","src":"3441:99:52","statements":[{"assignments":[15022],"declarations":[{"constant":false,"id":15022,"mutability":"mutable","name":"ownerAssets","nameLocation":"3455:11:52","nodeType":"VariableDeclaration","scope":15032,"src":"3447:19:52","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":15021,"name":"uint256","nodeType":"ElementaryTypeName","src":"3447:7:52","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":15027,"initialValue":{"arguments":[{"id":15025,"name":"owner","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":15015,"src":"3487:5:52","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"expression":{"id":15023,"name":"super","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-25,"src":"3469:5:52","typeDescriptions":{"typeIdentifier":"t_type$_t_super$_AccessManagedMSV_$15277_$","typeString":"type(contract super AccessManagedMSV)"}},"id":15024,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"3475:11:52","memberName":"maxWithdraw","nodeType":"MemberAccess","referencedDeclaration":4014,"src":"3469:17:52","typeDescriptions":{"typeIdentifier":"t_function_internal_view$_t_address_$returns$_t_uint256_$","typeString":"function (address) view returns (uint256)"}},"id":15026,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"3469:24:52","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"VariableDeclarationStatement","src":"3447:46:52"},{"expression":{"arguments":[{"id":15029,"name":"ownerAssets","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":15022,"src":"3523:11:52","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":15028,"name":"_maxWithdrawable","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":16120,"src":"3506:16:52","typeDescriptions":{"typeIdentifier":"t_function_internal_view$_t_uint256_$returns$_t_uint256_$","typeString":"function (uint256) view returns (uint256)"}},"id":15030,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"3506:29:52","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"functionReturnParameters":15020,"id":15031,"nodeType":"Return","src":"3499:36:52"}]},"documentation":{"id":15013,"nodeType":"StructuredDocumentation","src":"3331:24:52","text":"@inheritdoc IERC4626"},"functionSelector":"ce96cb77","id":15033,"implemented":true,"kind":"function","modifiers":[],"name":"maxWithdraw","nameLocation":"3367:11:52","nodeType":"FunctionDefinition","overrides":{"id":15017,"nodeType":"OverrideSpecifier","overrides":[],"src":"3414:8:52"},"parameters":{"id":15016,"nodeType":"ParameterList","parameters":[{"constant":false,"id":15015,"mutability":"mutable","name":"owner","nameLocation":"3387:5:52","nodeType":"VariableDeclaration","scope":15033,"src":"3379:13:52","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":15014,"name":"address","nodeType":"ElementaryTypeName","src":"3379:7:52","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"3378:15:52"},"returnParameters":{"id":15020,"nodeType":"ParameterList","parameters":[{"constant":false,"id":15019,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":15033,"src":"3432:7:52","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":15018,"name":"uint256","nodeType":"ElementaryTypeName","src":"3432:7:52","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"3431:9:52"},"scope":15277,"src":"3358:182:52","stateMutability":"view","virtual":true,"visibility":"public"},{"baseFunctions":[4027],"body":{"id":15077,"nodeType":"Block","src":"3652:277:52","statements":[{"assignments":[15043],"declarations":[{"constant":false,"id":15043,"mutability":"mutable","name":"shares","nameLocation":"3666:6:52","nodeType":"VariableDeclaration","scope":15077,"src":"3658:14:52","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":15042,"name":"uint256","nodeType":"ElementaryTypeName","src":"3658:7:52","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":15048,"initialValue":{"arguments":[{"id":15046,"name":"owner","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":15036,"src":"3691:5:52","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"expression":{"id":15044,"name":"super","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-25,"src":"3675:5:52","typeDescriptions":{"typeIdentifier":"t_type$_t_super$_AccessManagedMSV_$15277_$","typeString":"type(contract super AccessManagedMSV)"}},"id":15045,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"3681:9:52","memberName":"maxRedeem","nodeType":"MemberAccess","referencedDeclaration":4027,"src":"3675:15:52","typeDescriptions":{"typeIdentifier":"t_function_internal_view$_t_address_$returns$_t_uint256_$","typeString":"function (address) view returns (uint256)"}},"id":15047,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"3675:22:52","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"VariableDeclarationStatement","src":"3658:39:52"},{"assignments":[15050],"declarations":[{"constant":false,"id":15050,"mutability":"mutable","name":"ownerAssets","nameLocation":"3711:11:52","nodeType":"VariableDeclaration","scope":15077,"src":"3703:19:52","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":15049,"name":"uint256","nodeType":"ElementaryTypeName","src":"3703:7:52","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":15057,"initialValue":{"arguments":[{"id":15052,"name":"shares","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":15043,"src":"3742:6:52","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"expression":{"expression":{"id":15053,"name":"Math","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":12726,"src":"3750:4:52","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_Math_$12726_$","typeString":"type(library Math)"}},"id":15054,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"3755:8:52","memberName":"Rounding","nodeType":"MemberAccess","referencedDeclaration":11096,"src":"3750:13:52","typeDescriptions":{"typeIdentifier":"t_type$_t_enum$_Rounding_$11096_$","typeString":"type(enum Math.Rounding)"}},"id":15055,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberLocation":"3764:5:52","memberName":"Floor","nodeType":"MemberAccess","referencedDeclaration":11092,"src":"3750:19:52","typeDescriptions":{"typeIdentifier":"t_enum$_Rounding_$11096","typeString":"enum Math.Rounding"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_enum$_Rounding_$11096","typeString":"enum Math.Rounding"}],"id":15051,"name":"_convertToAssets","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4329,"src":"3725:16:52","typeDescriptions":{"typeIdentifier":"t_function_internal_view$_t_uint256_$_t_enum$_Rounding_$11096_$returns$_t_uint256_$","typeString":"function (uint256,enum Math.Rounding) view returns (uint256)"}},"id":15056,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"3725:45:52","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"VariableDeclarationStatement","src":"3703:67:52"},{"assignments":[15059],"declarations":[{"constant":false,"id":15059,"mutability":"mutable","name":"maxAssets","nameLocation":"3784:9:52","nodeType":"VariableDeclaration","scope":15077,"src":"3776:17:52","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":15058,"name":"uint256","nodeType":"ElementaryTypeName","src":"3776:7:52","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":15063,"initialValue":{"arguments":[{"id":15061,"name":"ownerAssets","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":15050,"src":"3813:11:52","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":15060,"name":"_maxWithdrawable","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":16120,"src":"3796:16:52","typeDescriptions":{"typeIdentifier":"t_function_internal_view$_t_uint256_$returns$_t_uint256_$","typeString":"function (uint256) view returns (uint256)"}},"id":15062,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"3796:29:52","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"VariableDeclarationStatement","src":"3776:49:52"},{"expression":{"condition":{"components":[{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":15066,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":15064,"name":"maxAssets","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":15059,"src":"3839:9:52","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"id":15065,"name":"ownerAssets","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":15050,"src":"3852:11:52","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"3839:24:52","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}}],"id":15067,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"3838:26:52","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"falseExpression":{"arguments":[{"id":15070,"name":"maxAssets","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":15059,"src":"3893:9:52","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"expression":{"expression":{"id":15071,"name":"Math","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":12726,"src":"3904:4:52","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_Math_$12726_$","typeString":"type(library Math)"}},"id":15072,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"3909:8:52","memberName":"Rounding","nodeType":"MemberAccess","referencedDeclaration":11096,"src":"3904:13:52","typeDescriptions":{"typeIdentifier":"t_type$_t_enum$_Rounding_$11096_$","typeString":"type(enum Math.Rounding)"}},"id":15073,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberLocation":"3918:5:52","memberName":"Floor","nodeType":"MemberAccess","referencedDeclaration":11092,"src":"3904:19:52","typeDescriptions":{"typeIdentifier":"t_enum$_Rounding_$11096","typeString":"enum Math.Rounding"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_enum$_Rounding_$11096","typeString":"enum Math.Rounding"}],"id":15069,"name":"_convertToShares","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4301,"src":"3876:16:52","typeDescriptions":{"typeIdentifier":"t_function_internal_view$_t_uint256_$_t_enum$_Rounding_$11096_$returns$_t_uint256_$","typeString":"function (uint256,enum Math.Rounding) view returns (uint256)"}},"id":15074,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"3876:48:52","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":15075,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"Conditional","src":"3838:86:52","trueExpression":{"id":15068,"name":"shares","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":15043,"src":"3867:6:52","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"functionReturnParameters":15041,"id":15076,"nodeType":"Return","src":"3831:93:52"}]},"documentation":{"id":15034,"nodeType":"StructuredDocumentation","src":"3544:24:52","text":"@inheritdoc IERC4626"},"functionSelector":"d905777e","id":15078,"implemented":true,"kind":"function","modifiers":[],"name":"maxRedeem","nameLocation":"3580:9:52","nodeType":"FunctionDefinition","overrides":{"id":15038,"nodeType":"OverrideSpecifier","overrides":[],"src":"3625:8:52"},"parameters":{"id":15037,"nodeType":"ParameterList","parameters":[{"constant":false,"id":15036,"mutability":"mutable","name":"owner","nameLocation":"3598:5:52","nodeType":"VariableDeclaration","scope":15078,"src":"3590:13:52","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":15035,"name":"address","nodeType":"ElementaryTypeName","src":"3590:7:52","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"3589:15:52"},"returnParameters":{"id":15041,"nodeType":"ParameterList","parameters":[{"constant":false,"id":15040,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":15078,"src":"3643:7:52","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":15039,"name":"uint256","nodeType":"ElementaryTypeName","src":"3643:7:52","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"3642:9:52"},"scope":15277,"src":"3571:358:52","stateMutability":"view","virtual":true,"visibility":"public"},{"baseFunctions":[3984],"body":{"id":15090,"nodeType":"Block","src":"4040:35:52","statements":[{"expression":{"arguments":[],"expression":{"argumentTypes":[],"id":15087,"name":"_maxDepositable","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":16178,"src":"4053:15:52","typeDescriptions":{"typeIdentifier":"t_function_internal_view$__$returns$_t_uint256_$","typeString":"function () view returns (uint256)"}},"id":15088,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"4053:17:52","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"functionReturnParameters":15086,"id":15089,"nodeType":"Return","src":"4046:24:52"}]},"documentation":{"id":15079,"nodeType":"StructuredDocumentation","src":"3933:24:52","text":"@inheritdoc IERC4626"},"functionSelector":"402d267d","id":15091,"implemented":true,"kind":"function","modifiers":[],"name":"maxDeposit","nameLocation":"3969:10:52","nodeType":"FunctionDefinition","overrides":{"id":15083,"nodeType":"OverrideSpecifier","overrides":[],"src":"4009:8:52"},"parameters":{"id":15082,"nodeType":"ParameterList","parameters":[{"constant":false,"id":15081,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":15091,"src":"3980:7:52","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":15080,"name":"address","nodeType":"ElementaryTypeName","src":"3980:7:52","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"3979:9:52"},"returnParameters":{"id":15086,"nodeType":"ParameterList","parameters":[{"constant":false,"id":15085,"mutability":"mutable","name":"ret","nameLocation":"4035:3:52","nodeType":"VariableDeclaration","scope":15091,"src":"4027:11:52","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":15084,"name":"uint256","nodeType":"ElementaryTypeName","src":"4027:7:52","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"4026:13:52"},"scope":15277,"src":"3960:115:52","stateMutability":"view","virtual":true,"visibility":"public"},{"baseFunctions":[3999],"body":{"id":15125,"nodeType":"Block","src":"4179:153:52","statements":[{"assignments":[15101],"declarations":[{"constant":false,"id":15101,"mutability":"mutable","name":"maxDep","nameLocation":"4193:6:52","nodeType":"VariableDeclaration","scope":15125,"src":"4185:14:52","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":15100,"name":"uint256","nodeType":"ElementaryTypeName","src":"4185:7:52","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":15104,"initialValue":{"arguments":[],"expression":{"argumentTypes":[],"id":15102,"name":"_maxDepositable","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":16178,"src":"4202:15:52","typeDescriptions":{"typeIdentifier":"t_function_internal_view$__$returns$_t_uint256_$","typeString":"function () view returns (uint256)"}},"id":15103,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"4202:17:52","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"VariableDeclarationStatement","src":"4185:34:52"},{"expression":{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":15111,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":15105,"name":"maxDep","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":15101,"src":"4232:6:52","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"expression":{"arguments":[{"id":15108,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"4247:7:52","typeDescriptions":{"typeIdentifier":"t_type$_t_uint256_$","typeString":"type(uint256)"},"typeName":{"id":15107,"name":"uint256","nodeType":"ElementaryTypeName","src":"4247:7:52","typeDescriptions":{}}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_type$_t_uint256_$","typeString":"type(uint256)"}],"id":15106,"name":"type","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-27,"src":"4242:4:52","typeDescriptions":{"typeIdentifier":"t_function_metatype_pure$__$returns$__$","typeString":"function () pure"}},"id":15109,"isConstant":false,"isLValue":false,"isPure":true,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"4242:13:52","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_magic_meta_type_t_uint256","typeString":"type(uint256)"}},"id":15110,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberLocation":"4256:3:52","memberName":"max","nodeType":"MemberAccess","src":"4242:17:52","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"4232:27:52","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"falseExpression":{"arguments":[{"id":15118,"name":"maxDep","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":15101,"src":"4299:6:52","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"expression":{"expression":{"id":15119,"name":"Math","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":12726,"src":"4307:4:52","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_Math_$12726_$","typeString":"type(library Math)"}},"id":15120,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"4312:8:52","memberName":"Rounding","nodeType":"MemberAccess","referencedDeclaration":11096,"src":"4307:13:52","typeDescriptions":{"typeIdentifier":"t_type$_t_enum$_Rounding_$11096_$","typeString":"type(enum Math.Rounding)"}},"id":15121,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberLocation":"4321:5:52","memberName":"Floor","nodeType":"MemberAccess","referencedDeclaration":11092,"src":"4307:19:52","typeDescriptions":{"typeIdentifier":"t_enum$_Rounding_$11096","typeString":"enum Math.Rounding"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_enum$_Rounding_$11096","typeString":"enum Math.Rounding"}],"id":15117,"name":"_convertToShares","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4301,"src":"4282:16:52","typeDescriptions":{"typeIdentifier":"t_function_internal_view$_t_uint256_$_t_enum$_Rounding_$11096_$returns$_t_uint256_$","typeString":"function (uint256,enum Math.Rounding) view returns (uint256)"}},"id":15122,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"4282:45:52","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":15123,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"Conditional","src":"4232:95:52","trueExpression":{"expression":{"arguments":[{"id":15114,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"4267:7:52","typeDescriptions":{"typeIdentifier":"t_type$_t_uint256_$","typeString":"type(uint256)"},"typeName":{"id":15113,"name":"uint256","nodeType":"ElementaryTypeName","src":"4267:7:52","typeDescriptions":{}}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_type$_t_uint256_$","typeString":"type(uint256)"}],"id":15112,"name":"type","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-27,"src":"4262:4:52","typeDescriptions":{"typeIdentifier":"t_function_metatype_pure$__$returns$__$","typeString":"function () pure"}},"id":15115,"isConstant":false,"isLValue":false,"isPure":true,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"4262:13:52","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_magic_meta_type_t_uint256","typeString":"type(uint256)"}},"id":15116,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberLocation":"4276:3:52","memberName":"max","nodeType":"MemberAccess","src":"4262:17:52","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"functionReturnParameters":15099,"id":15124,"nodeType":"Return","src":"4225:102:52"}]},"documentation":{"id":15092,"nodeType":"StructuredDocumentation","src":"4079:24:52","text":"@inheritdoc IERC4626"},"functionSelector":"c63d75b6","id":15126,"implemented":true,"kind":"function","modifiers":[],"name":"maxMint","nameLocation":"4115:7:52","nodeType":"FunctionDefinition","overrides":{"id":15096,"nodeType":"OverrideSpecifier","overrides":[],"src":"4152:8:52"},"parameters":{"id":15095,"nodeType":"ParameterList","parameters":[{"constant":false,"id":15094,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":15126,"src":"4123:7:52","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":15093,"name":"address","nodeType":"ElementaryTypeName","src":"4123:7:52","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"4122:9:52"},"returnParameters":{"id":15099,"nodeType":"ParameterList","parameters":[{"constant":false,"id":15098,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":15126,"src":"4170:7:52","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":15097,"name":"uint256","nodeType":"ElementaryTypeName","src":"4170:7:52","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"4169:9:52"},"scope":15277,"src":"4106:226:52","stateMutability":"view","virtual":true,"visibility":"public"},{"baseFunctions":[3937],"body":{"id":15136,"nodeType":"Block","src":"4440:32:52","statements":[{"expression":{"arguments":[],"expression":{"argumentTypes":[],"id":15133,"name":"_totalAssets","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":16216,"src":"4453:12:52","typeDescriptions":{"typeIdentifier":"t_function_internal_view$__$returns$_t_uint256_$","typeString":"function () view returns (uint256)"}},"id":15134,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"4453:14:52","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"functionReturnParameters":15132,"id":15135,"nodeType":"Return","src":"4446:21:52"}]},"documentation":{"id":15127,"nodeType":"StructuredDocumentation","src":"4336:24:52","text":"@inheritdoc IERC4626"},"functionSelector":"01e1d114","id":15137,"implemented":true,"kind":"function","modifiers":[],"name":"totalAssets","nameLocation":"4372:11:52","nodeType":"FunctionDefinition","overrides":{"id":15129,"nodeType":"OverrideSpecifier","overrides":[],"src":"4406:8:52"},"parameters":{"id":15128,"nodeType":"ParameterList","parameters":[],"src":"4383:2:52"},"returnParameters":{"id":15132,"nodeType":"ParameterList","parameters":[{"constant":false,"id":15131,"mutability":"mutable","name":"assets","nameLocation":"4432:6:52","nodeType":"VariableDeclaration","scope":15137,"src":"4424:14:52","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":15130,"name":"uint256","nodeType":"ElementaryTypeName","src":"4424:7:52","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"4423:16:52"},"scope":15277,"src":"4363:109:52","stateMutability":"view","virtual":true,"visibility":"public"},{"baseFunctions":[4419],"body":{"id":15166,"nodeType":"Block","src":"4663:104:52","statements":[{"expression":{"arguments":[{"id":15153,"name":"assets","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":15146,"src":"4693:6:52","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":15152,"name":"_withdrawFromStrategies","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":16292,"src":"4669:23:52","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_uint256_$returns$__$","typeString":"function (uint256)"}},"id":15154,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"4669:31:52","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":15155,"nodeType":"ExpressionStatement","src":"4669:31:52"},{"expression":{"arguments":[{"id":15159,"name":"caller","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":15140,"src":"4722:6:52","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":15160,"name":"receiver","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":15142,"src":"4730:8:52","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":15161,"name":"owner","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":15144,"src":"4740:5:52","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":15162,"name":"assets","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":15146,"src":"4747:6:52","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"id":15163,"name":"shares","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":15148,"src":"4755:6: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"}],"expression":{"id":15156,"name":"super","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-25,"src":"4706:5:52","typeDescriptions":{"typeIdentifier":"t_type$_t_super$_AccessManagedMSV_$15277_$","typeString":"type(contract super AccessManagedMSV)"}},"id":15158,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"4712:9:52","memberName":"_withdraw","nodeType":"MemberAccess","referencedDeclaration":4419,"src":"4706:15:52","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_address_$_t_address_$_t_address_$_t_uint256_$_t_uint256_$returns$__$","typeString":"function (address,address,address,uint256,uint256)"}},"id":15164,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"4706:56:52","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":15165,"nodeType":"ExpressionStatement","src":"4706:56:52"}]},"documentation":{"id":15138,"nodeType":"StructuredDocumentation","src":"4476:34:52","text":"@inheritdoc ERC4626Upgradeable"},"id":15167,"implemented":true,"kind":"function","modifiers":[],"name":"_withdraw","nameLocation":"4522:9:52","nodeType":"FunctionDefinition","overrides":{"id":15150,"nodeType":"OverrideSpecifier","overrides":[],"src":"4654:8:52"},"parameters":{"id":15149,"nodeType":"ParameterList","parameters":[{"constant":false,"id":15140,"mutability":"mutable","name":"caller","nameLocation":"4545:6:52","nodeType":"VariableDeclaration","scope":15167,"src":"4537:14:52","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":15139,"name":"address","nodeType":"ElementaryTypeName","src":"4537:7:52","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":15142,"mutability":"mutable","name":"receiver","nameLocation":"4565:8:52","nodeType":"VariableDeclaration","scope":15167,"src":"4557:16:52","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":15141,"name":"address","nodeType":"ElementaryTypeName","src":"4557:7:52","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":15144,"mutability":"mutable","name":"owner","nameLocation":"4587:5:52","nodeType":"VariableDeclaration","scope":15167,"src":"4579:13:52","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":15143,"name":"address","nodeType":"ElementaryTypeName","src":"4579:7:52","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":15146,"mutability":"mutable","name":"assets","nameLocation":"4606:6:52","nodeType":"VariableDeclaration","scope":15167,"src":"4598:14:52","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":15145,"name":"uint256","nodeType":"ElementaryTypeName","src":"4598:7:52","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":15148,"mutability":"mutable","name":"shares","nameLocation":"4626:6:52","nodeType":"VariableDeclaration","scope":15167,"src":"4618:14:52","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":15147,"name":"uint256","nodeType":"ElementaryTypeName","src":"4618:7:52","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"4531:105:52"},"returnParameters":{"id":15151,"nodeType":"ParameterList","parameters":[],"src":"4663:0:52"},"scope":15277,"src":"4513:254:52","stateMutability":"nonpayable","virtual":true,"visibility":"internal"},{"baseFunctions":[4369],"body":{"id":15193,"nodeType":"Block","src":"4918:206:52","statements":[{"expression":{"arguments":[{"id":15183,"name":"caller","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":15170,"src":"5010:6:52","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":15184,"name":"receiver","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":15172,"src":"5018:8:52","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":15185,"name":"assets","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":15174,"src":"5028:6:52","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"id":15186,"name":"shares","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":15176,"src":"5036:6:52","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":15180,"name":"super","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-25,"src":"4995:5:52","typeDescriptions":{"typeIdentifier":"t_type$_t_super$_AccessManagedMSV_$15277_$","typeString":"type(contract super AccessManagedMSV)"}},"id":15182,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"5001:8:52","memberName":"_deposit","nodeType":"MemberAccess","referencedDeclaration":4369,"src":"4995:14:52","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_address_$_t_address_$_t_uint256_$_t_uint256_$returns$__$","typeString":"function (address,address,uint256,uint256)"}},"id":15187,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"4995:48:52","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":15188,"nodeType":"ExpressionStatement","src":"4995:48:52"},{"expression":{"arguments":[{"id":15190,"name":"assets","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":15174,"src":"5112:6:52","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":15189,"name":"_depositToStrategies","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":16368,"src":"5091:20:52","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_uint256_$returns$__$","typeString":"function (uint256)"}},"id":15191,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"5091:28:52","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":15192,"nodeType":"ExpressionStatement","src":"5091:28:52"}]},"documentation":{"id":15168,"nodeType":"StructuredDocumentation","src":"4771:34:52","text":"@inheritdoc ERC4626Upgradeable"},"id":15194,"implemented":true,"kind":"function","modifiers":[],"name":"_deposit","nameLocation":"4817:8:52","nodeType":"FunctionDefinition","overrides":{"id":15178,"nodeType":"OverrideSpecifier","overrides":[],"src":"4909:8:52"},"parameters":{"id":15177,"nodeType":"ParameterList","parameters":[{"constant":false,"id":15170,"mutability":"mutable","name":"caller","nameLocation":"4834:6:52","nodeType":"VariableDeclaration","scope":15194,"src":"4826:14:52","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":15169,"name":"address","nodeType":"ElementaryTypeName","src":"4826:7:52","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":15172,"mutability":"mutable","name":"receiver","nameLocation":"4850:8:52","nodeType":"VariableDeclaration","scope":15194,"src":"4842:16:52","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":15171,"name":"address","nodeType":"ElementaryTypeName","src":"4842:7:52","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":15174,"mutability":"mutable","name":"assets","nameLocation":"4868:6:52","nodeType":"VariableDeclaration","scope":15194,"src":"4860:14:52","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":15173,"name":"uint256","nodeType":"ElementaryTypeName","src":"4860:7:52","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":15176,"mutability":"mutable","name":"shares","nameLocation":"4884:6:52","nodeType":"VariableDeclaration","scope":15194,"src":"4876:14:52","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":15175,"name":"uint256","nodeType":"ElementaryTypeName","src":"4876:7:52","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"4825:66:52"},"returnParameters":{"id":15179,"nodeType":"ParameterList","parameters":[],"src":"4918:0:52"},"scope":15277,"src":"4808:316:52","stateMutability":"nonpayable","virtual":true,"visibility":"internal"},{"body":{"id":15222,"nodeType":"Block","src":"5762:235:52","statements":[{"assignments":[15205],"declarations":[{"constant":false,"id":15205,"mutability":"mutable","name":"strategy","nameLocation":"5882:8:52","nodeType":"VariableDeclaration","scope":15222,"src":"5874:16:52","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":15204,"name":"address","nodeType":"ElementaryTypeName","src":"5874:7:52","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"id":15212,"initialValue":{"arguments":[{"baseExpression":{"id":15208,"name":"_strategies","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":15730,"src":"5901:11:52","typeDescriptions":{"typeIdentifier":"t_array$_t_contract$_IInvestStrategy_$20725_$32_storage","typeString":"contract IInvestStrategy[32] storage ref"}},"id":15210,"indexExpression":{"id":15209,"name":"strategyIndex","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":15197,"src":"5913:13:52","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"5901:26:52","typeDescriptions":{"typeIdentifier":"t_contract$_IInvestStrategy_$20725","typeString":"contract IInvestStrategy"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_contract$_IInvestStrategy_$20725","typeString":"contract IInvestStrategy"}],"id":15207,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"5893:7:52","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":15206,"name":"address","nodeType":"ElementaryTypeName","src":"5893:7:52","typeDescriptions":{}}},"id":15211,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"5893:35:52","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"VariableDeclarationStatement","src":"5874:54:52"},{"expression":{"arguments":[{"arguments":[{"id":15217,"name":"strategy","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":15205,"src":"5974:8:52","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":15218,"name":"method","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":15199,"src":"5984:6:52","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint8","typeString":"uint8"}],"expression":{"id":15215,"name":"abi","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-1,"src":"5963:3:52","typeDescriptions":{"typeIdentifier":"t_magic_abi","typeString":"abi"}},"id":15216,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberLocation":"5967:6:52","memberName":"encode","nodeType":"MemberAccess","src":"5963:10:52","typeDescriptions":{"typeIdentifier":"t_function_abiencode_pure$__$returns$_t_bytes_memory_ptr_$","typeString":"function () pure returns (bytes memory)"}},"id":15219,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"5963:28:52","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}],"expression":{"id":15213,"name":"AMPUtils","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":240,"src":"5941:8:52","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_AMPUtils_$240_$","typeString":"type(library AMPUtils)"}},"id":15214,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"5950:12:52","memberName":"makeSelector","nodeType":"MemberAccess","referencedDeclaration":239,"src":"5941:21:52","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_bytes_memory_ptr_$returns$_t_bytes4_$","typeString":"function (bytes memory) pure returns (bytes4)"}},"id":15220,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"5941:51:52","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes4","typeString":"bytes4"}},"functionReturnParameters":15203,"id":15221,"nodeType":"Return","src":"5934:58:52"}]},"documentation":{"id":15195,"nodeType":"StructuredDocumentation","src":"5128:520:52","text":" @dev Returns the selector used to define the role required to call forwardToStrategy on a given strategy and\n      method\n @param strategyIndex The index of the strategy in the _strategies array\n @param method Id of the method to call. Is recommended that the strategy defines an enum with the methods that\n               can be called externally and validates this value.\n @return selector The bytes4 selector required to execute the call (will be used with target=address(this))"},"functionSelector":"8cdf48a8","id":15223,"implemented":true,"kind":"function","modifiers":[],"name":"getForwardToStrategySelector","nameLocation":"5660:28:52","nodeType":"FunctionDefinition","parameters":{"id":15200,"nodeType":"ParameterList","parameters":[{"constant":false,"id":15197,"mutability":"mutable","name":"strategyIndex","nameLocation":"5695:13:52","nodeType":"VariableDeclaration","scope":15223,"src":"5689:19:52","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"},"typeName":{"id":15196,"name":"uint8","nodeType":"ElementaryTypeName","src":"5689:5:52","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}},"visibility":"internal"},{"constant":false,"id":15199,"mutability":"mutable","name":"method","nameLocation":"5716:6:52","nodeType":"VariableDeclaration","scope":15223,"src":"5710:12:52","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"},"typeName":{"id":15198,"name":"uint8","nodeType":"ElementaryTypeName","src":"5710:5:52","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}},"visibility":"internal"}],"src":"5688:35:52"},"returnParameters":{"id":15203,"nodeType":"ParameterList","parameters":[{"constant":false,"id":15202,"mutability":"mutable","name":"selector","nameLocation":"5752:8:52","nodeType":"VariableDeclaration","scope":15223,"src":"5745:15:52","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes4","typeString":"bytes4"},"typeName":{"id":15201,"name":"bytes4","nodeType":"ElementaryTypeName","src":"5745:6:52","typeDescriptions":{"typeIdentifier":"t_bytes4","typeString":"bytes4"}},"visibility":"internal"}],"src":"5744:17:52"},"scope":15277,"src":"5651:346:52","stateMutability":"view","virtual":false,"visibility":"public"},{"baseFunctions":[16446],"body":{"id":15275,"nodeType":"Block","src":"6132:797:52","statements":[{"assignments":[15236],"declarations":[{"constant":false,"id":15236,"mutability":"mutable","name":"acMgr","nameLocation":"6395:5:52","nodeType":"VariableDeclaration","scope":15275,"src":"6380:20:52","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_contract$_IAccessManager_$6842","typeString":"contract IAccessManager"},"typeName":{"id":15235,"nodeType":"UserDefinedTypeName","pathNode":{"id":15234,"name":"IAccessManager","nameLocations":["6380:14:52"],"nodeType":"IdentifierPath","referencedDeclaration":6842,"src":"6380:14:52"},"referencedDeclaration":6842,"src":"6380:14:52","typeDescriptions":{"typeIdentifier":"t_contract$_IAccessManager_$6842","typeString":"contract IAccessManager"}},"visibility":"internal"}],"id":15248,"initialValue":{"arguments":[],"expression":{"argumentTypes":[],"expression":{"arguments":[{"arguments":[{"arguments":[{"id":15242,"name":"this","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-28,"src":"6438:4:52","typeDescriptions":{"typeIdentifier":"t_contract$_AccessManagedMSV_$15277","typeString":"contract AccessManagedMSV"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_contract$_AccessManagedMSV_$15277","typeString":"contract AccessManagedMSV"}],"id":15241,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"6430:7:52","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":15240,"name":"address","nodeType":"ElementaryTypeName","src":"6430:7:52","typeDescriptions":{}}},"id":15243,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"6430:13:52","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"id":15239,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"6422:8:52","typeDescriptions":{"typeIdentifier":"t_type$_t_address_payable_$","typeString":"type(address payable)"},"typeName":{"id":15238,"name":"address","nodeType":"ElementaryTypeName","src":"6422:8:52","stateMutability":"payable","typeDescriptions":{}}},"id":15244,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"6422:22:52","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address_payable","typeString":"address payable"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address_payable","typeString":"address payable"}],"id":15237,"name":"AccessManagedProxy","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":330,"src":"6403:18:52","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_AccessManagedProxy_$330_$","typeString":"type(contract AccessManagedProxy)"}},"id":15245,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"6403:42:52","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_contract$_AccessManagedProxy_$330","typeString":"contract AccessManagedProxy"}},"id":15246,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"6446:14:52","memberName":"ACCESS_MANAGER","nodeType":"MemberAccess","referencedDeclaration":329,"src":"6403:57:52","typeDescriptions":{"typeIdentifier":"t_function_external_view$__$returns$_t_contract$_IAccessManager_$6842_$","typeString":"function () view external returns (contract IAccessManager)"}},"id":15247,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"6403:59:52","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_contract$_IAccessManager_$6842","typeString":"contract IAccessManager"}},"nodeType":"VariableDeclarationStatement","src":"6380:82:52"},{"assignments":[15250,null],"declarations":[{"constant":false,"id":15250,"mutability":"mutable","name":"immediate","nameLocation":"6474:9:52","nodeType":"VariableDeclaration","scope":15275,"src":"6469:14:52","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":15249,"name":"bool","nodeType":"ElementaryTypeName","src":"6469:4:52","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"},null],"id":15264,"initialValue":{"arguments":[{"expression":{"id":15253,"name":"msg","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-15,"src":"6503:3:52","typeDescriptions":{"typeIdentifier":"t_magic_message","typeString":"msg"}},"id":15254,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"6507:6:52","memberName":"sender","nodeType":"MemberAccess","src":"6503:10:52","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"arguments":[{"id":15257,"name":"this","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-28,"src":"6523:4:52","typeDescriptions":{"typeIdentifier":"t_contract$_AccessManagedMSV_$15277","typeString":"contract AccessManagedMSV"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_contract$_AccessManagedMSV_$15277","typeString":"contract AccessManagedMSV"}],"id":15256,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"6515:7:52","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":15255,"name":"address","nodeType":"ElementaryTypeName","src":"6515:7:52","typeDescriptions":{}}},"id":15258,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"6515:13:52","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"arguments":[{"id":15260,"name":"strategyIndex","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":15226,"src":"6559:13:52","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}},{"id":15261,"name":"method","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":15228,"src":"6574:6:52","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint8","typeString":"uint8"},{"typeIdentifier":"t_uint8","typeString":"uint8"}],"id":15259,"name":"getForwardToStrategySelector","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":15223,"src":"6530:28:52","typeDescriptions":{"typeIdentifier":"t_function_internal_view$_t_uint8_$_t_uint8_$returns$_t_bytes4_$","typeString":"function (uint8,uint8) view returns (bytes4)"}},"id":15262,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"6530:51:52","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes4","typeString":"bytes4"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_bytes4","typeString":"bytes4"}],"expression":{"id":15251,"name":"acMgr","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":15236,"src":"6489:5:52","typeDescriptions":{"typeIdentifier":"t_contract$_IAccessManager_$6842","typeString":"contract IAccessManager"}},"id":15252,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"6495:7:52","memberName":"canCall","nodeType":"MemberAccess","referencedDeclaration":6586,"src":"6489:13:52","typeDescriptions":{"typeIdentifier":"t_function_external_view$_t_address_$_t_address_$_t_bytes4_$returns$_t_bool_$_t_uint32_$","typeString":"function (address,address,bytes4) view external returns (bool,uint32)"}},"id":15263,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"6489:93:52","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$_t_bool_$_t_uint32_$","typeString":"tuple(bool,uint32)"}},"nodeType":"VariableDeclarationStatement","src":"6468:114:52"},{"condition":{"id":15266,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"UnaryOperation","operator":"!","prefix":true,"src":"6859:10:52","subExpression":{"id":15265,"name":"immediate","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":15250,"src":"6860:9:52","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":15274,"nodeType":"IfStatement","src":"6855:69:52","trueBody":{"errorCall":{"arguments":[{"expression":{"id":15270,"name":"msg","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-15,"src":"6913:3:52","typeDescriptions":{"typeIdentifier":"t_magic_message","typeString":"msg"}},"id":15271,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"6917:6:52","memberName":"sender","nodeType":"MemberAccess","src":"6913:10:52","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"expression":{"id":15267,"name":"AMPUtils","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":240,"src":"6878:8:52","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_AMPUtils_$240_$","typeString":"type(library AMPUtils)"}},"id":15269,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"6887:25:52","memberName":"AccessManagedUnauthorized","nodeType":"MemberAccess","referencedDeclaration":10,"src":"6878:34:52","typeDescriptions":{"typeIdentifier":"t_function_error_pure$_t_address_$returns$_t_error_$","typeString":"function (address) pure returns (error)"}},"id":15272,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"6878:46:52","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_error","typeString":"error"}},"id":15273,"nodeType":"RevertStatement","src":"6871:53:52"}}]},"documentation":{"id":15224,"nodeType":"StructuredDocumentation","src":"6001:23:52","text":"@inheritdoc MSVBase"},"id":15276,"implemented":true,"kind":"function","modifiers":[],"name":"_checkForwardToStrategy","nameLocation":"6036:23:52","nodeType":"FunctionDefinition","overrides":{"id":15232,"nodeType":"OverrideSpecifier","overrides":[],"src":"6123:8:52"},"parameters":{"id":15231,"nodeType":"ParameterList","parameters":[{"constant":false,"id":15226,"mutability":"mutable","name":"strategyIndex","nameLocation":"6066:13:52","nodeType":"VariableDeclaration","scope":15276,"src":"6060:19:52","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"},"typeName":{"id":15225,"name":"uint8","nodeType":"ElementaryTypeName","src":"6060:5:52","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}},"visibility":"internal"},{"constant":false,"id":15228,"mutability":"mutable","name":"method","nameLocation":"6087:6:52","nodeType":"VariableDeclaration","scope":15276,"src":"6081:12:52","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"},"typeName":{"id":15227,"name":"uint8","nodeType":"ElementaryTypeName","src":"6081:5:52","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}},"visibility":"internal"},{"constant":false,"id":15230,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":15276,"src":"6095:12:52","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes"},"typeName":{"id":15229,"name":"bytes","nodeType":"ElementaryTypeName","src":"6095:5:52","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"}],"src":"6059:49:52"},"returnParameters":{"id":15233,"nodeType":"ParameterList","parameters":[],"src":"6132:0:52"},"scope":15277,"src":"6027:902:52","stateMutability":"view","virtual":false,"visibility":"internal"}],"scope":15278,"src":"1470:5461:52","usedErrors":[10,3721,3730,3739,3748,7149,7154,7159,7168,7173,7178,7332,7345,7669,7672,7943,7948,9423,9878,10299,15311,15786,15788,15793,15797,15801,15803,15805,15807,15809,15811,15813,15817,15821,15825],"usedEvents":[6936,6978,6990,7677,8613,8622,15297,15301,15305,15309,15738,15742,15746,15750,15757,15764,15769,15774,15784]}],"src":"39:6893:52"},"id":52},"contracts/InvestStrategyClient.sol":{"ast":{"absolutePath":"contracts/InvestStrategyClient.sol","exportedSymbols":{"Address":[10256],"IERC20Metadata":[9411],"IInvestStrategy":[20725],"InvestStrategyClient":[15693]},"id":15694,"license":"Apache-2.0","nodeType":"SourceUnit","nodes":[{"id":15279,"literals":["solidity","^","0.8",".0"],"nodeType":"PragmaDirective","src":"39:23:53"},{"absolutePath":"@openzeppelin/contracts/utils/Address.sol","file":"@openzeppelin/contracts/utils/Address.sol","id":15281,"nameLocation":"-1:-1:-1","nodeType":"ImportDirective","scope":15694,"sourceUnit":10257,"src":"64:66:53","symbolAliases":[{"foreign":{"id":15280,"name":"Address","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10256,"src":"72:7:53","typeDescriptions":{}},"nameLocation":"-1:-1:-1"}],"unitAlias":""},{"absolutePath":"@openzeppelin/contracts/token/ERC20/extensions/IERC20Metadata.sol","file":"@openzeppelin/contracts/token/ERC20/extensions/IERC20Metadata.sol","id":15283,"nameLocation":"-1:-1:-1","nodeType":"ImportDirective","scope":15694,"sourceUnit":9412,"src":"131:97:53","symbolAliases":[{"foreign":{"id":15282,"name":"IERC20Metadata","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9411,"src":"139:14:53","typeDescriptions":{}},"nameLocation":"-1:-1:-1"}],"unitAlias":""},{"absolutePath":"contracts/interfaces/IInvestStrategy.sol","file":"./interfaces/IInvestStrategy.sol","id":15285,"nameLocation":"-1:-1:-1","nodeType":"ImportDirective","scope":15694,"sourceUnit":20726,"src":"229:65:53","symbolAliases":[{"foreign":{"id":15284,"name":"IInvestStrategy","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":20725,"src":"237:15:53","typeDescriptions":{}},"nameLocation":"-1:-1:-1"}],"unitAlias":""},{"abstract":false,"baseContracts":[],"canonicalName":"InvestStrategyClient","contractDependencies":[],"contractKind":"library","documentation":{"id":15286,"nodeType":"StructuredDocumentation","src":"296:284:53","text":" @title InvestStrategyClient\n @dev Library to simplify the interaction with IInvestStrategy objects. Abstract away the delegate calls and\n      other gotchas of the communication with the strategies.\n @custom:security-contact security@ensuro.co\n @author Ensuro"},"fullyImplemented":true,"id":15693,"linearizedBaseContracts":[15693],"name":"InvestStrategyClient","nameLocation":"589:20:53","nodeType":"ContractDefinition","nodes":[{"global":false,"id":15289,"libraryName":{"id":15287,"name":"Address","nameLocations":["620:7:53"],"nodeType":"IdentifierPath","referencedDeclaration":10256,"src":"620:7:53"},"nodeType":"UsingForDirective","src":"614:26:53","typeName":{"id":15288,"name":"address","nodeType":"ElementaryTypeName","src":"632:7:53","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}},{"anonymous":false,"eventSelector":"254c88e7a2ea123aeeb89b7cc413fb949188fefcdb7584c4f3d493294daf65c5","id":15297,"name":"StrategyChanged","nameLocation":"650:15:53","nodeType":"EventDefinition","parameters":{"id":15296,"nodeType":"ParameterList","parameters":[{"constant":false,"id":15292,"indexed":false,"mutability":"mutable","name":"oldStrategy","nameLocation":"682:11:53","nodeType":"VariableDeclaration","scope":15297,"src":"666:27:53","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_contract$_IInvestStrategy_$20725","typeString":"contract IInvestStrategy"},"typeName":{"id":15291,"nodeType":"UserDefinedTypeName","pathNode":{"id":15290,"name":"IInvestStrategy","nameLocations":["666:15:53"],"nodeType":"IdentifierPath","referencedDeclaration":20725,"src":"666:15:53"},"referencedDeclaration":20725,"src":"666:15:53","typeDescriptions":{"typeIdentifier":"t_contract$_IInvestStrategy_$20725","typeString":"contract IInvestStrategy"}},"visibility":"internal"},{"constant":false,"id":15295,"indexed":false,"mutability":"mutable","name":"newStrategy","nameLocation":"711:11:53","nodeType":"VariableDeclaration","scope":15297,"src":"695:27:53","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_contract$_IInvestStrategy_$20725","typeString":"contract IInvestStrategy"},"typeName":{"id":15294,"nodeType":"UserDefinedTypeName","pathNode":{"id":15293,"name":"IInvestStrategy","nameLocations":["695:15:53"],"nodeType":"IdentifierPath","referencedDeclaration":20725,"src":"695:15:53"},"referencedDeclaration":20725,"src":"695:15:53","typeDescriptions":{"typeIdentifier":"t_contract$_IInvestStrategy_$20725","typeString":"contract IInvestStrategy"}},"visibility":"internal"}],"src":"665:58:53"},"src":"644:80:53"},{"anonymous":false,"eventSelector":"ad0ad28a12a6ed800f1a7b398454913afe6826c175e6cc28f2e8e2c175b0d728","id":15301,"name":"WithdrawFailed","nameLocation":"733:14:53","nodeType":"EventDefinition","parameters":{"id":15300,"nodeType":"ParameterList","parameters":[{"constant":false,"id":15299,"indexed":false,"mutability":"mutable","name":"reason","nameLocation":"754:6:53","nodeType":"VariableDeclaration","scope":15301,"src":"748:12:53","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes"},"typeName":{"id":15298,"name":"bytes","nodeType":"ElementaryTypeName","src":"748:5:53","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"}],"src":"747:14:53"},"src":"727:35:53"},{"anonymous":false,"eventSelector":"f8e68f23d3b33772e986cc9861e94e8fd6b9461d62bc1fb21cd754bbaf726bd3","id":15305,"name":"DepositFailed","nameLocation":"771:13:53","nodeType":"EventDefinition","parameters":{"id":15304,"nodeType":"ParameterList","parameters":[{"constant":false,"id":15303,"indexed":false,"mutability":"mutable","name":"reason","nameLocation":"791:6:53","nodeType":"VariableDeclaration","scope":15305,"src":"785:12:53","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes"},"typeName":{"id":15302,"name":"bytes","nodeType":"ElementaryTypeName","src":"785:5:53","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"}],"src":"784:14:53"},"src":"765:34:53"},{"anonymous":false,"eventSelector":"9f864ace9f45c2734f9444cb9a0c1ade6f1b15a8c202c17175b759728a4a0bf8","id":15309,"name":"DisconnectFailed","nameLocation":"808:16:53","nodeType":"EventDefinition","parameters":{"id":15308,"nodeType":"ParameterList","parameters":[{"constant":false,"id":15307,"indexed":false,"mutability":"mutable","name":"reason","nameLocation":"831:6:53","nodeType":"VariableDeclaration","scope":15309,"src":"825:12:53","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes"},"typeName":{"id":15306,"name":"bytes","nodeType":"ElementaryTypeName","src":"825:5:53","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"}],"src":"824:14:53"},"src":"802:37:53"},{"errorSelector":"e76673ef","id":15311,"name":"InvalidStrategyAsset","nameLocation":"849:20:53","nodeType":"ErrorDefinition","parameters":{"id":15310,"nodeType":"ParameterList","parameters":[],"src":"869:2:53"},"src":"843:29:53"},{"body":{"id":15333,"nodeType":"Block","src":"1205:108:53","statements":[{"expression":{"arguments":[{"arguments":[{"expression":{"id":15327,"name":"IInvestStrategy","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":20725,"src":"1265:15:53","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_IInvestStrategy_$20725_$","typeString":"type(contract IInvestStrategy)"}},"id":15328,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberLocation":"1281:7:53","memberName":"connect","nodeType":"MemberAccess","referencedDeclaration":20658,"src":"1265:23:53","typeDescriptions":{"typeIdentifier":"t_function_declaration_nonpayable$_t_bytes_memory_ptr_$returns$__$","typeString":"function IInvestStrategy.connect(bytes memory)"}},{"id":15329,"name":"initStrategyData","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":15317,"src":"1290:16:53","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_function_declaration_nonpayable$_t_bytes_memory_ptr_$returns$__$","typeString":"function IInvestStrategy.connect(bytes memory)"},{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}],"expression":{"id":15325,"name":"abi","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-1,"src":"1250:3:53","typeDescriptions":{"typeIdentifier":"t_magic_abi","typeString":"abi"}},"id":15326,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberLocation":"1254:10:53","memberName":"encodeCall","nodeType":"MemberAccess","src":"1250:14:53","typeDescriptions":{"typeIdentifier":"t_function_abiencodecall_pure$__$returns$_t_bytes_memory_ptr_$","typeString":"function () pure returns (bytes memory)"}},"id":15330,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"1250:57:53","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}],"expression":{"arguments":[{"id":15322,"name":"strategy","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":15315,"src":"1219:8:53","typeDescriptions":{"typeIdentifier":"t_contract$_IInvestStrategy_$20725","typeString":"contract IInvestStrategy"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_contract$_IInvestStrategy_$20725","typeString":"contract IInvestStrategy"}],"id":15321,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"1211:7:53","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":15320,"name":"address","nodeType":"ElementaryTypeName","src":"1211:7:53","typeDescriptions":{}}},"id":15323,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"1211:17:53","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"id":15324,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"1229:20:53","memberName":"functionDelegateCall","nodeType":"MemberAccess","referencedDeclaration":10166,"src":"1211:38:53","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_address_$_t_bytes_memory_ptr_$returns$_t_bytes_memory_ptr_$attached_to$_t_address_$","typeString":"function (address,bytes memory) returns (bytes memory)"}},"id":15331,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"1211:97:53","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}},"id":15332,"nodeType":"ExpressionStatement","src":"1211:97:53"}]},"documentation":{"id":15312,"nodeType":"StructuredDocumentation","src":"876:241:53","text":" @dev Performs a connection with the given strategy. See {IInvestStrategy.connect}\n @param strategy Investment strategy to connect.\n @param initStrategyData Initialization data required for the strategy to connect."},"id":15334,"implemented":true,"kind":"function","modifiers":[],"name":"dcConnect","nameLocation":"1129:9:53","nodeType":"FunctionDefinition","parameters":{"id":15318,"nodeType":"ParameterList","parameters":[{"constant":false,"id":15315,"mutability":"mutable","name":"strategy","nameLocation":"1155:8:53","nodeType":"VariableDeclaration","scope":15334,"src":"1139:24:53","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_contract$_IInvestStrategy_$20725","typeString":"contract IInvestStrategy"},"typeName":{"id":15314,"nodeType":"UserDefinedTypeName","pathNode":{"id":15313,"name":"IInvestStrategy","nameLocations":["1139:15:53"],"nodeType":"IdentifierPath","referencedDeclaration":20725,"src":"1139:15:53"},"referencedDeclaration":20725,"src":"1139:15:53","typeDescriptions":{"typeIdentifier":"t_contract$_IInvestStrategy_$20725","typeString":"contract IInvestStrategy"}},"visibility":"internal"},{"constant":false,"id":15317,"mutability":"mutable","name":"initStrategyData","nameLocation":"1178:16:53","nodeType":"VariableDeclaration","scope":15334,"src":"1165:29:53","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes"},"typeName":{"id":15316,"name":"bytes","nodeType":"ElementaryTypeName","src":"1165:5:53","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"}],"src":"1138:57:53"},"returnParameters":{"id":15319,"nodeType":"ParameterList","parameters":[],"src":"1205:0:53"},"scope":15693,"src":"1120:193:53","stateMutability":"nonpayable","virtual":false,"visibility":"internal"},{"body":{"id":15384,"nodeType":"Block","src":"1798:396:53","statements":[{"condition":{"id":15343,"name":"force","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":15340,"src":"1808:5:53","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"falseBody":{"id":15382,"nodeType":"Block","src":"2086:104:53","statements":[{"expression":{"arguments":[{"arguments":[{"expression":{"id":15376,"name":"IInvestStrategy","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":20725,"src":"2148:15:53","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_IInvestStrategy_$20725_$","typeString":"type(contract IInvestStrategy)"}},"id":15377,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberLocation":"2164:10:53","memberName":"disconnect","nodeType":"MemberAccess","referencedDeclaration":20664,"src":"2148:26:53","typeDescriptions":{"typeIdentifier":"t_function_declaration_nonpayable$_t_bool_$returns$__$","typeString":"function IInvestStrategy.disconnect(bool)"}},{"hexValue":"66616c7365","id":15378,"isConstant":false,"isLValue":false,"isPure":true,"kind":"bool","lValueRequested":false,"nodeType":"Literal","src":"2176:5:53","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"value":"false"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_function_declaration_nonpayable$_t_bool_$returns$__$","typeString":"function IInvestStrategy.disconnect(bool)"},{"typeIdentifier":"t_bool","typeString":"bool"}],"expression":{"id":15374,"name":"abi","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-1,"src":"2133:3:53","typeDescriptions":{"typeIdentifier":"t_magic_abi","typeString":"abi"}},"id":15375,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberLocation":"2137:10:53","memberName":"encodeCall","nodeType":"MemberAccess","src":"2133:14:53","typeDescriptions":{"typeIdentifier":"t_function_abiencodecall_pure$__$returns$_t_bytes_memory_ptr_$","typeString":"function () pure returns (bytes memory)"}},"id":15379,"isConstant":false,"isLValue":false,"isPure":true,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"2133:49:53","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}],"expression":{"arguments":[{"id":15371,"name":"strategy","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":15338,"src":"2102:8:53","typeDescriptions":{"typeIdentifier":"t_contract$_IInvestStrategy_$20725","typeString":"contract IInvestStrategy"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_contract$_IInvestStrategy_$20725","typeString":"contract IInvestStrategy"}],"id":15370,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"2094:7:53","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":15369,"name":"address","nodeType":"ElementaryTypeName","src":"2094:7:53","typeDescriptions":{}}},"id":15372,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"2094:17:53","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"id":15373,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"2112:20:53","memberName":"functionDelegateCall","nodeType":"MemberAccess","referencedDeclaration":10166,"src":"2094:38:53","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_address_$_t_bytes_memory_ptr_$returns$_t_bytes_memory_ptr_$attached_to$_t_address_$","typeString":"function (address,bytes memory) returns (bytes memory)"}},"id":15380,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"2094:89:53","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}},"id":15381,"nodeType":"ExpressionStatement","src":"2094:89:53"}]},"id":15383,"nodeType":"IfStatement","src":"1804:386:53","trueBody":{"id":15368,"nodeType":"Block","src":"1815:265:53","statements":[{"assignments":[15345,15347],"declarations":[{"constant":false,"id":15345,"mutability":"mutable","name":"success","nameLocation":"1886:7:53","nodeType":"VariableDeclaration","scope":15368,"src":"1881:12:53","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":15344,"name":"bool","nodeType":"ElementaryTypeName","src":"1881:4:53","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"},{"constant":false,"id":15347,"mutability":"mutable","name":"returndata","nameLocation":"1908:10:53","nodeType":"VariableDeclaration","scope":15368,"src":"1895:23:53","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes"},"typeName":{"id":15346,"name":"bytes","nodeType":"ElementaryTypeName","src":"1895:5:53","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"}],"id":15360,"initialValue":{"arguments":[{"arguments":[{"expression":{"id":15355,"name":"IInvestStrategy","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":20725,"src":"1977:15:53","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_IInvestStrategy_$20725_$","typeString":"type(contract IInvestStrategy)"}},"id":15356,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberLocation":"1993:10:53","memberName":"disconnect","nodeType":"MemberAccess","referencedDeclaration":20664,"src":"1977:26:53","typeDescriptions":{"typeIdentifier":"t_function_declaration_nonpayable$_t_bool_$returns$__$","typeString":"function IInvestStrategy.disconnect(bool)"}},{"hexValue":"74727565","id":15357,"isConstant":false,"isLValue":false,"isPure":true,"kind":"bool","lValueRequested":false,"nodeType":"Literal","src":"2005:4:53","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"value":"true"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_function_declaration_nonpayable$_t_bool_$returns$__$","typeString":"function IInvestStrategy.disconnect(bool)"},{"typeIdentifier":"t_bool","typeString":"bool"}],"expression":{"id":15353,"name":"abi","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-1,"src":"1962:3:53","typeDescriptions":{"typeIdentifier":"t_magic_abi","typeString":"abi"}},"id":15354,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberLocation":"1966:10:53","memberName":"encodeCall","nodeType":"MemberAccess","src":"1962:14:53","typeDescriptions":{"typeIdentifier":"t_function_abiencodecall_pure$__$returns$_t_bytes_memory_ptr_$","typeString":"function () pure returns (bytes memory)"}},"id":15358,"isConstant":false,"isLValue":false,"isPure":true,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"1962:48:53","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}],"expression":{"arguments":[{"id":15350,"name":"strategy","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":15338,"src":"1930:8:53","typeDescriptions":{"typeIdentifier":"t_contract$_IInvestStrategy_$20725","typeString":"contract IInvestStrategy"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_contract$_IInvestStrategy_$20725","typeString":"contract IInvestStrategy"}],"id":15349,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"1922:7:53","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":15348,"name":"address","nodeType":"ElementaryTypeName","src":"1922:7:53","typeDescriptions":{}}},"id":15351,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"1922:17:53","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"id":15352,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"1940:12:53","memberName":"delegatecall","nodeType":"MemberAccess","src":"1922:30:53","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":15359,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"1922:96:53","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$_t_bool_$_t_bytes_memory_ptr_$","typeString":"tuple(bool,bytes memory)"}},"nodeType":"VariableDeclarationStatement","src":"1880:138:53"},{"condition":{"id":15362,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"UnaryOperation","operator":"!","prefix":true,"src":"2030:8:53","subExpression":{"id":15361,"name":"success","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":15345,"src":"2031:7:53","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":15367,"nodeType":"IfStatement","src":"2026:47:53","trueBody":{"eventCall":{"arguments":[{"id":15364,"name":"returndata","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":15347,"src":"2062:10:53","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}],"id":15363,"name":"DisconnectFailed","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":15309,"src":"2045:16:53","typeDescriptions":{"typeIdentifier":"t_function_event_nonpayable$_t_bytes_memory_ptr_$returns$__$","typeString":"function (bytes memory)"}},"id":15365,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"2045:28:53","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":15366,"nodeType":"EmitStatement","src":"2040:33:53"}}]}}]},"documentation":{"id":15335,"nodeType":"StructuredDocumentation","src":"1317:409:53","text":" @dev Disconnects from the given strategy. This diconnection is done using a delegatecall to the strategy.\n      See {IInvestStrategy.disconnect}\n @param strategy Investment strategy to connect.\n @param force Bool value to force disconnection, when `true` it will just emit DisconnectFailed if it fails,\n              otherwise it will revert when it's false and fails."},"id":15385,"implemented":true,"kind":"function","modifiers":[],"name":"dcDisconnect","nameLocation":"1738:12:53","nodeType":"FunctionDefinition","parameters":{"id":15341,"nodeType":"ParameterList","parameters":[{"constant":false,"id":15338,"mutability":"mutable","name":"strategy","nameLocation":"1767:8:53","nodeType":"VariableDeclaration","scope":15385,"src":"1751:24:53","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_contract$_IInvestStrategy_$20725","typeString":"contract IInvestStrategy"},"typeName":{"id":15337,"nodeType":"UserDefinedTypeName","pathNode":{"id":15336,"name":"IInvestStrategy","nameLocations":["1751:15:53"],"nodeType":"IdentifierPath","referencedDeclaration":20725,"src":"1751:15:53"},"referencedDeclaration":20725,"src":"1751:15:53","typeDescriptions":{"typeIdentifier":"t_contract$_IInvestStrategy_$20725","typeString":"contract IInvestStrategy"}},"visibility":"internal"},{"constant":false,"id":15340,"mutability":"mutable","name":"force","nameLocation":"1782:5:53","nodeType":"VariableDeclaration","scope":15385,"src":"1777:10:53","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":15339,"name":"bool","nodeType":"ElementaryTypeName","src":"1777:4:53","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"}],"src":"1750:38:53"},"returnParameters":{"id":15342,"nodeType":"ParameterList","parameters":[],"src":"1798:0:53"},"scope":15693,"src":"1729:465:53","stateMutability":"nonpayable","virtual":false,"visibility":"internal"},{"body":{"id":15443,"nodeType":"Block","src":"2839:440:53","statements":[{"condition":{"id":15398,"name":"ignoreError","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":15393,"src":"2849:11:53","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"falseBody":{"id":15441,"nodeType":"Block","src":"3153:122:53","statements":[{"expression":{"arguments":[{"arguments":[{"expression":{"id":15433,"name":"IInvestStrategy","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":20725,"src":"3215:15:53","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_IInvestStrategy_$20725_$","typeString":"type(contract IInvestStrategy)"}},"id":15434,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberLocation":"3231:8:53","memberName":"withdraw","nodeType":"MemberAccess","referencedDeclaration":20676,"src":"3215:24:53","typeDescriptions":{"typeIdentifier":"t_function_declaration_nonpayable$_t_uint256_$returns$__$","typeString":"function IInvestStrategy.withdraw(uint256)"}},{"id":15435,"name":"assets","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":15391,"src":"3241:6:53","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_function_declaration_nonpayable$_t_uint256_$returns$__$","typeString":"function IInvestStrategy.withdraw(uint256)"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"expression":{"id":15431,"name":"abi","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-1,"src":"3200:3:53","typeDescriptions":{"typeIdentifier":"t_magic_abi","typeString":"abi"}},"id":15432,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberLocation":"3204:10:53","memberName":"encodeCall","nodeType":"MemberAccess","src":"3200:14:53","typeDescriptions":{"typeIdentifier":"t_function_abiencodecall_pure$__$returns$_t_bytes_memory_ptr_$","typeString":"function () pure returns (bytes memory)"}},"id":15436,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"3200:48:53","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}],"expression":{"arguments":[{"id":15428,"name":"strategy","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":15389,"src":"3169:8:53","typeDescriptions":{"typeIdentifier":"t_contract$_IInvestStrategy_$20725","typeString":"contract IInvestStrategy"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_contract$_IInvestStrategy_$20725","typeString":"contract IInvestStrategy"}],"id":15427,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"3161:7:53","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":15426,"name":"address","nodeType":"ElementaryTypeName","src":"3161:7:53","typeDescriptions":{}}},"id":15429,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"3161:17:53","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"id":15430,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"3179:20:53","memberName":"functionDelegateCall","nodeType":"MemberAccess","referencedDeclaration":10166,"src":"3161:38:53","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_address_$_t_bytes_memory_ptr_$returns$_t_bytes_memory_ptr_$attached_to$_t_address_$","typeString":"function (address,bytes memory) returns (bytes memory)"}},"id":15437,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"3161:88:53","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}},"id":15438,"nodeType":"ExpressionStatement","src":"3161:88:53"},{"expression":{"hexValue":"74727565","id":15439,"isConstant":false,"isLValue":false,"isPure":true,"kind":"bool","lValueRequested":false,"nodeType":"Literal","src":"3264:4:53","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"value":"true"},"functionReturnParameters":15397,"id":15440,"nodeType":"Return","src":"3257:11:53"}]},"id":15442,"nodeType":"IfStatement","src":"2845:430:53","trueBody":{"id":15425,"nodeType":"Block","src":"2862:285:53","statements":[{"assignments":[15400,15402],"declarations":[{"constant":false,"id":15400,"mutability":"mutable","name":"success","nameLocation":"2933:7:53","nodeType":"VariableDeclaration","scope":15425,"src":"2928:12:53","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":15399,"name":"bool","nodeType":"ElementaryTypeName","src":"2928:4:53","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"},{"constant":false,"id":15402,"mutability":"mutable","name":"returndata","nameLocation":"2955:10:53","nodeType":"VariableDeclaration","scope":15425,"src":"2942:23:53","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes"},"typeName":{"id":15401,"name":"bytes","nodeType":"ElementaryTypeName","src":"2942:5:53","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"}],"id":15415,"initialValue":{"arguments":[{"arguments":[{"expression":{"id":15410,"name":"IInvestStrategy","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":20725,"src":"3024:15:53","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_IInvestStrategy_$20725_$","typeString":"type(contract IInvestStrategy)"}},"id":15411,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberLocation":"3040:8:53","memberName":"withdraw","nodeType":"MemberAccess","referencedDeclaration":20676,"src":"3024:24:53","typeDescriptions":{"typeIdentifier":"t_function_declaration_nonpayable$_t_uint256_$returns$__$","typeString":"function IInvestStrategy.withdraw(uint256)"}},{"id":15412,"name":"assets","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":15391,"src":"3050:6:53","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_function_declaration_nonpayable$_t_uint256_$returns$__$","typeString":"function IInvestStrategy.withdraw(uint256)"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"expression":{"id":15408,"name":"abi","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-1,"src":"3009:3:53","typeDescriptions":{"typeIdentifier":"t_magic_abi","typeString":"abi"}},"id":15409,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberLocation":"3013:10:53","memberName":"encodeCall","nodeType":"MemberAccess","src":"3009:14:53","typeDescriptions":{"typeIdentifier":"t_function_abiencodecall_pure$__$returns$_t_bytes_memory_ptr_$","typeString":"function () pure returns (bytes memory)"}},"id":15413,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"3009:48:53","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}],"expression":{"arguments":[{"id":15405,"name":"strategy","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":15389,"src":"2977:8:53","typeDescriptions":{"typeIdentifier":"t_contract$_IInvestStrategy_$20725","typeString":"contract IInvestStrategy"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_contract$_IInvestStrategy_$20725","typeString":"contract IInvestStrategy"}],"id":15404,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"2969:7:53","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":15403,"name":"address","nodeType":"ElementaryTypeName","src":"2969:7:53","typeDescriptions":{}}},"id":15406,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"2969:17:53","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"id":15407,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"2987:12:53","memberName":"delegatecall","nodeType":"MemberAccess","src":"2969:30:53","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":15414,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"2969:96:53","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$_t_bool_$_t_bytes_memory_ptr_$","typeString":"tuple(bool,bytes memory)"}},"nodeType":"VariableDeclarationStatement","src":"2927:138:53"},{"condition":{"id":15417,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"UnaryOperation","operator":"!","prefix":true,"src":"3077:8:53","subExpression":{"id":15416,"name":"success","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":15400,"src":"3078:7:53","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":15422,"nodeType":"IfStatement","src":"3073:45:53","trueBody":{"eventCall":{"arguments":[{"id":15419,"name":"returndata","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":15402,"src":"3107:10:53","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}],"id":15418,"name":"WithdrawFailed","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":15301,"src":"3092:14:53","typeDescriptions":{"typeIdentifier":"t_function_event_nonpayable$_t_bytes_memory_ptr_$returns$__$","typeString":"function (bytes memory)"}},"id":15420,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"3092:26:53","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":15421,"nodeType":"EmitStatement","src":"3087:31:53"}},{"expression":{"id":15423,"name":"success","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":15400,"src":"3133:7:53","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"functionReturnParameters":15397,"id":15424,"nodeType":"Return","src":"3126:14:53"}]}}]},"documentation":{"id":15386,"nodeType":"StructuredDocumentation","src":"2198:534:53","text":" @dev Delegate call to withdraw assets from a given strategy.\n      See {IInvestStrategy.withdraw}\n @param strategy Strategy to withdraw assets from.\n @param assets Amount of assets to be withdrawn.\n @param ignoreError When true, the error will be caught and event WithdrawFailed will be emitted,\notherwise it will revert when it's false and fails.\n @return Returns true if it was successful, otherwise returns false (only when ignoreError = true, otherwise reverts)"},"id":15444,"implemented":true,"kind":"function","modifiers":[],"name":"dcWithdraw","nameLocation":"2744:10:53","nodeType":"FunctionDefinition","parameters":{"id":15394,"nodeType":"ParameterList","parameters":[{"constant":false,"id":15389,"mutability":"mutable","name":"strategy","nameLocation":"2771:8:53","nodeType":"VariableDeclaration","scope":15444,"src":"2755:24:53","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_contract$_IInvestStrategy_$20725","typeString":"contract IInvestStrategy"},"typeName":{"id":15388,"nodeType":"UserDefinedTypeName","pathNode":{"id":15387,"name":"IInvestStrategy","nameLocations":["2755:15:53"],"nodeType":"IdentifierPath","referencedDeclaration":20725,"src":"2755:15:53"},"referencedDeclaration":20725,"src":"2755:15:53","typeDescriptions":{"typeIdentifier":"t_contract$_IInvestStrategy_$20725","typeString":"contract IInvestStrategy"}},"visibility":"internal"},{"constant":false,"id":15391,"mutability":"mutable","name":"assets","nameLocation":"2789:6:53","nodeType":"VariableDeclaration","scope":15444,"src":"2781:14:53","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":15390,"name":"uint256","nodeType":"ElementaryTypeName","src":"2781:7:53","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":15393,"mutability":"mutable","name":"ignoreError","nameLocation":"2802:11:53","nodeType":"VariableDeclaration","scope":15444,"src":"2797:16:53","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":15392,"name":"bool","nodeType":"ElementaryTypeName","src":"2797:4:53","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"}],"src":"2754:60:53"},"returnParameters":{"id":15397,"nodeType":"ParameterList","parameters":[{"constant":false,"id":15396,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":15444,"src":"2833:4:53","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":15395,"name":"bool","nodeType":"ElementaryTypeName","src":"2833:4:53","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"}],"src":"2832:6:53"},"scope":15693,"src":"2735:544:53","stateMutability":"nonpayable","virtual":false,"visibility":"internal"},{"body":{"id":15502,"nodeType":"Block","src":"3919:437:53","statements":[{"condition":{"id":15457,"name":"ignoreError","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":15452,"src":"3929:11:53","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"falseBody":{"id":15500,"nodeType":"Block","src":"4231:121:53","statements":[{"expression":{"arguments":[{"arguments":[{"expression":{"id":15492,"name":"IInvestStrategy","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":20725,"src":"4293:15:53","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_IInvestStrategy_$20725_$","typeString":"type(contract IInvestStrategy)"}},"id":15493,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberLocation":"4309:7:53","memberName":"deposit","nodeType":"MemberAccess","referencedDeclaration":20670,"src":"4293:23:53","typeDescriptions":{"typeIdentifier":"t_function_declaration_nonpayable$_t_uint256_$returns$__$","typeString":"function IInvestStrategy.deposit(uint256)"}},{"id":15494,"name":"assets","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":15450,"src":"4318:6:53","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_function_declaration_nonpayable$_t_uint256_$returns$__$","typeString":"function IInvestStrategy.deposit(uint256)"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"expression":{"id":15490,"name":"abi","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-1,"src":"4278:3:53","typeDescriptions":{"typeIdentifier":"t_magic_abi","typeString":"abi"}},"id":15491,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberLocation":"4282:10:53","memberName":"encodeCall","nodeType":"MemberAccess","src":"4278:14:53","typeDescriptions":{"typeIdentifier":"t_function_abiencodecall_pure$__$returns$_t_bytes_memory_ptr_$","typeString":"function () pure returns (bytes memory)"}},"id":15495,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"4278:47:53","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}],"expression":{"arguments":[{"id":15487,"name":"strategy","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":15448,"src":"4247:8:53","typeDescriptions":{"typeIdentifier":"t_contract$_IInvestStrategy_$20725","typeString":"contract IInvestStrategy"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_contract$_IInvestStrategy_$20725","typeString":"contract IInvestStrategy"}],"id":15486,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"4239:7:53","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":15485,"name":"address","nodeType":"ElementaryTypeName","src":"4239:7:53","typeDescriptions":{}}},"id":15488,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"4239:17:53","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"id":15489,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"4257:20:53","memberName":"functionDelegateCall","nodeType":"MemberAccess","referencedDeclaration":10166,"src":"4239:38:53","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_address_$_t_bytes_memory_ptr_$returns$_t_bytes_memory_ptr_$attached_to$_t_address_$","typeString":"function (address,bytes memory) returns (bytes memory)"}},"id":15496,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"4239:87:53","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}},"id":15497,"nodeType":"ExpressionStatement","src":"4239:87:53"},{"expression":{"hexValue":"74727565","id":15498,"isConstant":false,"isLValue":false,"isPure":true,"kind":"bool","lValueRequested":false,"nodeType":"Literal","src":"4341:4:53","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"value":"true"},"functionReturnParameters":15456,"id":15499,"nodeType":"Return","src":"4334:11:53"}]},"id":15501,"nodeType":"IfStatement","src":"3925:427:53","trueBody":{"id":15484,"nodeType":"Block","src":"3942:283:53","statements":[{"assignments":[15459,15461],"declarations":[{"constant":false,"id":15459,"mutability":"mutable","name":"success","nameLocation":"4013:7:53","nodeType":"VariableDeclaration","scope":15484,"src":"4008:12:53","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":15458,"name":"bool","nodeType":"ElementaryTypeName","src":"4008:4:53","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"},{"constant":false,"id":15461,"mutability":"mutable","name":"returndata","nameLocation":"4035:10:53","nodeType":"VariableDeclaration","scope":15484,"src":"4022:23:53","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes"},"typeName":{"id":15460,"name":"bytes","nodeType":"ElementaryTypeName","src":"4022:5:53","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"}],"id":15474,"initialValue":{"arguments":[{"arguments":[{"expression":{"id":15469,"name":"IInvestStrategy","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":20725,"src":"4104:15:53","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_IInvestStrategy_$20725_$","typeString":"type(contract IInvestStrategy)"}},"id":15470,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberLocation":"4120:7:53","memberName":"deposit","nodeType":"MemberAccess","referencedDeclaration":20670,"src":"4104:23:53","typeDescriptions":{"typeIdentifier":"t_function_declaration_nonpayable$_t_uint256_$returns$__$","typeString":"function IInvestStrategy.deposit(uint256)"}},{"id":15471,"name":"assets","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":15450,"src":"4129:6:53","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_function_declaration_nonpayable$_t_uint256_$returns$__$","typeString":"function IInvestStrategy.deposit(uint256)"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"expression":{"id":15467,"name":"abi","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-1,"src":"4089:3:53","typeDescriptions":{"typeIdentifier":"t_magic_abi","typeString":"abi"}},"id":15468,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberLocation":"4093:10:53","memberName":"encodeCall","nodeType":"MemberAccess","src":"4089:14:53","typeDescriptions":{"typeIdentifier":"t_function_abiencodecall_pure$__$returns$_t_bytes_memory_ptr_$","typeString":"function () pure returns (bytes memory)"}},"id":15472,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"4089:47:53","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}],"expression":{"arguments":[{"id":15464,"name":"strategy","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":15448,"src":"4057:8:53","typeDescriptions":{"typeIdentifier":"t_contract$_IInvestStrategy_$20725","typeString":"contract IInvestStrategy"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_contract$_IInvestStrategy_$20725","typeString":"contract IInvestStrategy"}],"id":15463,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"4049:7:53","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":15462,"name":"address","nodeType":"ElementaryTypeName","src":"4049:7:53","typeDescriptions":{}}},"id":15465,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"4049:17:53","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"id":15466,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"4067:12:53","memberName":"delegatecall","nodeType":"MemberAccess","src":"4049:30:53","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":15473,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"4049:95:53","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$_t_bool_$_t_bytes_memory_ptr_$","typeString":"tuple(bool,bytes memory)"}},"nodeType":"VariableDeclarationStatement","src":"4007:137:53"},{"condition":{"id":15476,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"UnaryOperation","operator":"!","prefix":true,"src":"4156:8:53","subExpression":{"id":15475,"name":"success","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":15459,"src":"4157:7:53","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":15481,"nodeType":"IfStatement","src":"4152:44:53","trueBody":{"eventCall":{"arguments":[{"id":15478,"name":"returndata","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":15461,"src":"4185:10:53","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}],"id":15477,"name":"DepositFailed","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":15305,"src":"4171:13:53","typeDescriptions":{"typeIdentifier":"t_function_event_nonpayable$_t_bytes_memory_ptr_$returns$__$","typeString":"function (bytes memory)"}},"id":15479,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"4171:25:53","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":15480,"nodeType":"EmitStatement","src":"4166:30:53"}},{"expression":{"id":15482,"name":"success","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":15459,"src":"4211:7:53","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"functionReturnParameters":15456,"id":15483,"nodeType":"Return","src":"4204:14:53"}]}}]},"documentation":{"id":15445,"nodeType":"StructuredDocumentation","src":"3283:530:53","text":" @dev Delegate call to deposit assets from a given strategy.\n      See {IInvestStrategy.deposit}\n @param strategy Strategy to deposit assets from.\n @param assets Amount of assets to be deposited.\n @param ignoreError When true, the error will be caught and event DepositFailed will be emitted,\notherwise it will revert when it's false and fails.\n @return Returns true if it was successful, otherwise returns false (only when ignoreError = true, otherwise reverts)"},"id":15503,"implemented":true,"kind":"function","modifiers":[],"name":"dcDeposit","nameLocation":"3825:9:53","nodeType":"FunctionDefinition","parameters":{"id":15453,"nodeType":"ParameterList","parameters":[{"constant":false,"id":15448,"mutability":"mutable","name":"strategy","nameLocation":"3851:8:53","nodeType":"VariableDeclaration","scope":15503,"src":"3835:24:53","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_contract$_IInvestStrategy_$20725","typeString":"contract IInvestStrategy"},"typeName":{"id":15447,"nodeType":"UserDefinedTypeName","pathNode":{"id":15446,"name":"IInvestStrategy","nameLocations":["3835:15:53"],"nodeType":"IdentifierPath","referencedDeclaration":20725,"src":"3835:15:53"},"referencedDeclaration":20725,"src":"3835:15:53","typeDescriptions":{"typeIdentifier":"t_contract$_IInvestStrategy_$20725","typeString":"contract IInvestStrategy"}},"visibility":"internal"},{"constant":false,"id":15450,"mutability":"mutable","name":"assets","nameLocation":"3869:6:53","nodeType":"VariableDeclaration","scope":15503,"src":"3861:14:53","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":15449,"name":"uint256","nodeType":"ElementaryTypeName","src":"3861:7:53","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":15452,"mutability":"mutable","name":"ignoreError","nameLocation":"3882:11:53","nodeType":"VariableDeclaration","scope":15503,"src":"3877:16:53","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":15451,"name":"bool","nodeType":"ElementaryTypeName","src":"3877:4:53","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"}],"src":"3834:60:53"},"returnParameters":{"id":15456,"nodeType":"ParameterList","parameters":[{"constant":false,"id":15455,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":15503,"src":"3913:4:53","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":15454,"name":"bool","nodeType":"ElementaryTypeName","src":"3913:4:53","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"}],"src":"3912:6:53"},"scope":15693,"src":"3816:540:53","stateMutability":"nonpayable","virtual":false,"visibility":"internal"},{"body":{"id":15531,"nodeType":"Block","src":"4858:134:53","statements":[{"expression":{"arguments":[{"arguments":[{"expression":{"id":15523,"name":"IInvestStrategy","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":20725,"src":"4931:15:53","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_IInvestStrategy_$20725_$","typeString":"type(contract IInvestStrategy)"}},"id":15524,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberLocation":"4947:17:53","memberName":"forwardEntryPoint","nodeType":"MemberAccess","referencedDeclaration":20686,"src":"4931:33:53","typeDescriptions":{"typeIdentifier":"t_function_declaration_nonpayable$_t_uint8_$_t_bytes_memory_ptr_$returns$_t_bytes_memory_ptr_$","typeString":"function IInvestStrategy.forwardEntryPoint(uint8,bytes memory) returns (bytes memory)"}},{"components":[{"id":15525,"name":"method","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":15509,"src":"4967:6:53","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}},{"id":15526,"name":"extraData","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":15511,"src":"4975:9:53","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}}],"id":15527,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"4966:19:53","typeDescriptions":{"typeIdentifier":"t_tuple$_t_uint8_$_t_bytes_memory_ptr_$","typeString":"tuple(uint8,bytes memory)"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_function_declaration_nonpayable$_t_uint8_$_t_bytes_memory_ptr_$returns$_t_bytes_memory_ptr_$","typeString":"function IInvestStrategy.forwardEntryPoint(uint8,bytes memory) returns (bytes memory)"},{"typeIdentifier":"t_tuple$_t_uint8_$_t_bytes_memory_ptr_$","typeString":"tuple(uint8,bytes memory)"}],"expression":{"id":15521,"name":"abi","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-1,"src":"4916:3:53","typeDescriptions":{"typeIdentifier":"t_magic_abi","typeString":"abi"}},"id":15522,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberLocation":"4920:10:53","memberName":"encodeCall","nodeType":"MemberAccess","src":"4916:14:53","typeDescriptions":{"typeIdentifier":"t_function_abiencodecall_pure$__$returns$_t_bytes_memory_ptr_$","typeString":"function () pure returns (bytes memory)"}},"id":15528,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"4916:70:53","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}],"expression":{"arguments":[{"id":15518,"name":"strategy","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":15507,"src":"4885:8:53","typeDescriptions":{"typeIdentifier":"t_contract$_IInvestStrategy_$20725","typeString":"contract IInvestStrategy"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_contract$_IInvestStrategy_$20725","typeString":"contract IInvestStrategy"}],"id":15517,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"4877:7:53","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":15516,"name":"address","nodeType":"ElementaryTypeName","src":"4877:7:53","typeDescriptions":{}}},"id":15519,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"4877:17:53","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"id":15520,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"4895:20:53","memberName":"functionDelegateCall","nodeType":"MemberAccess","referencedDeclaration":10166,"src":"4877:38:53","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_address_$_t_bytes_memory_ptr_$returns$_t_bytes_memory_ptr_$attached_to$_t_address_$","typeString":"function (address,bytes memory) returns (bytes memory)"}},"id":15529,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"4877:110:53","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}},"functionReturnParameters":15515,"id":15530,"nodeType":"Return","src":"4864:123:53"}]},"documentation":{"id":15504,"nodeType":"StructuredDocumentation","src":"4360:380:53","text":" @dev Delegate call to forward a custom method of the given strategy.\n      See {IInvestStrategy.forwardEntryPoint}\n @param strategy Strategy to forward the custom method.\n @param method Method to be forwarded.\n @param extraData Additional params required by the method\n @return Returns the result of {IInvestStrategy.forwardEntryPoint}"},"id":15532,"implemented":true,"kind":"function","modifiers":[],"name":"dcForward","nameLocation":"4752:9:53","nodeType":"FunctionDefinition","parameters":{"id":15512,"nodeType":"ParameterList","parameters":[{"constant":false,"id":15507,"mutability":"mutable","name":"strategy","nameLocation":"4778:8:53","nodeType":"VariableDeclaration","scope":15532,"src":"4762:24:53","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_contract$_IInvestStrategy_$20725","typeString":"contract IInvestStrategy"},"typeName":{"id":15506,"nodeType":"UserDefinedTypeName","pathNode":{"id":15505,"name":"IInvestStrategy","nameLocations":["4762:15:53"],"nodeType":"IdentifierPath","referencedDeclaration":20725,"src":"4762:15:53"},"referencedDeclaration":20725,"src":"4762:15:53","typeDescriptions":{"typeIdentifier":"t_contract$_IInvestStrategy_$20725","typeString":"contract IInvestStrategy"}},"visibility":"internal"},{"constant":false,"id":15509,"mutability":"mutable","name":"method","nameLocation":"4794:6:53","nodeType":"VariableDeclaration","scope":15532,"src":"4788:12:53","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"},"typeName":{"id":15508,"name":"uint8","nodeType":"ElementaryTypeName","src":"4788:5:53","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}},"visibility":"internal"},{"constant":false,"id":15511,"mutability":"mutable","name":"extraData","nameLocation":"4815:9:53","nodeType":"VariableDeclaration","scope":15532,"src":"4802:22:53","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes"},"typeName":{"id":15510,"name":"bytes","nodeType":"ElementaryTypeName","src":"4802:5:53","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"}],"src":"4761:64:53"},"returnParameters":{"id":15515,"nodeType":"ParameterList","parameters":[{"constant":false,"id":15514,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":15532,"src":"4844:12:53","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes"},"typeName":{"id":15513,"name":"bytes","nodeType":"ElementaryTypeName","src":"4844:5:53","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"}],"src":"4843:14:53"},"scope":15693,"src":"4743:249:53","stateMutability":"nonpayable","virtual":false,"visibility":"internal"},{"body":{"id":15554,"nodeType":"Block","src":"5256:84:53","statements":[{"condition":{"commonType":{"typeIdentifier":"t_address","typeString":"address"},"id":15549,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"arguments":[{"arguments":[{"id":15545,"name":"this","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-28,"src":"5289:4:53","typeDescriptions":{"typeIdentifier":"t_contract$_InvestStrategyClient_$15693","typeString":"library InvestStrategyClient"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_contract$_InvestStrategyClient_$15693","typeString":"library InvestStrategyClient"}],"id":15544,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"5281:7:53","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":15543,"name":"address","nodeType":"ElementaryTypeName","src":"5281:7:53","typeDescriptions":{}}},"id":15546,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"5281:13:53","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"expression":{"id":15541,"name":"strategy","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":15536,"src":"5266:8:53","typeDescriptions":{"typeIdentifier":"t_contract$_IInvestStrategy_$20725","typeString":"contract IInvestStrategy"}},"id":15542,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"5275:5:53","memberName":"asset","nodeType":"MemberAccess","referencedDeclaration":20694,"src":"5266:14:53","typeDescriptions":{"typeIdentifier":"t_function_external_view$_t_address_$returns$_t_address_$","typeString":"function (address) view external returns (address)"}},"id":15547,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"5266:29:53","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"BinaryOperation","operator":"!=","rightExpression":{"id":15548,"name":"asset","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":15538,"src":"5299:5:53","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"src":"5266:38:53","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":15553,"nodeType":"IfStatement","src":"5262:73:53","trueBody":{"errorCall":{"arguments":[],"expression":{"argumentTypes":[],"id":15550,"name":"InvalidStrategyAsset","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":15311,"src":"5313:20:53","typeDescriptions":{"typeIdentifier":"t_function_error_pure$__$returns$_t_error_$","typeString":"function () pure returns (error)"}},"id":15551,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"5313:22:53","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_error","typeString":"error"}},"id":15552,"nodeType":"RevertStatement","src":"5306:29:53"}}]},"documentation":{"id":15533,"nodeType":"StructuredDocumentation","src":"4996:182:53","text":" @dev Checks the strategy asset() to ensure it is the same as the asset of the vault.\n @param strategy Strategy to be checked.\n @param asset Asset of the vault."},"id":15555,"implemented":true,"kind":"function","modifiers":[],"name":"checkAsset","nameLocation":"5190:10:53","nodeType":"FunctionDefinition","parameters":{"id":15539,"nodeType":"ParameterList","parameters":[{"constant":false,"id":15536,"mutability":"mutable","name":"strategy","nameLocation":"5217:8:53","nodeType":"VariableDeclaration","scope":15555,"src":"5201:24:53","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_contract$_IInvestStrategy_$20725","typeString":"contract IInvestStrategy"},"typeName":{"id":15535,"nodeType":"UserDefinedTypeName","pathNode":{"id":15534,"name":"IInvestStrategy","nameLocations":["5201:15:53"],"nodeType":"IdentifierPath","referencedDeclaration":20725,"src":"5201:15:53"},"referencedDeclaration":20725,"src":"5201:15:53","typeDescriptions":{"typeIdentifier":"t_contract$_IInvestStrategy_$20725","typeString":"contract IInvestStrategy"}},"visibility":"internal"},{"constant":false,"id":15538,"mutability":"mutable","name":"asset","nameLocation":"5235:5:53","nodeType":"VariableDeclaration","scope":15555,"src":"5227:13:53","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":15537,"name":"address","nodeType":"ElementaryTypeName","src":"5227:7:53","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"5200:41:53"},"returnParameters":{"id":15540,"nodeType":"ParameterList","parameters":[],"src":"5256:0:53"},"scope":15693,"src":"5181:159:53","stateMutability":"view","virtual":false,"visibility":"internal"},{"body":{"id":15619,"nodeType":"Block","src":"6097:660:53","statements":[{"expression":{"arguments":[{"id":15573,"name":"newStrategy","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":15562,"src":"6114:11:53","typeDescriptions":{"typeIdentifier":"t_contract$_IInvestStrategy_$20725","typeString":"contract IInvestStrategy"}},{"arguments":[{"id":15576,"name":"asset","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":15567,"src":"6135:5:53","typeDescriptions":{"typeIdentifier":"t_contract$_IERC20Metadata_$9411","typeString":"contract IERC20Metadata"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_contract$_IERC20Metadata_$9411","typeString":"contract IERC20Metadata"}],"id":15575,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"6127:7:53","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":15574,"name":"address","nodeType":"ElementaryTypeName","src":"6127:7:53","typeDescriptions":{}}},"id":15577,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"6127:14:53","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_contract$_IInvestStrategy_$20725","typeString":"contract IInvestStrategy"},{"typeIdentifier":"t_address","typeString":"address"}],"id":15572,"name":"checkAsset","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":15555,"src":"6103:10:53","typeDescriptions":{"typeIdentifier":"t_function_internal_view$_t_contract$_IInvestStrategy_$20725_$_t_address_$returns$__$","typeString":"function (contract IInvestStrategy,address) view"}},"id":15578,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"6103:39:53","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":15579,"nodeType":"ExpressionStatement","src":"6103:39:53"},{"expression":{"arguments":[{"id":15581,"name":"oldStrategy","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":15559,"src":"6299:11:53","typeDescriptions":{"typeIdentifier":"t_contract$_IInvestStrategy_$20725","typeString":"contract IInvestStrategy"}},{"arguments":[{"arguments":[{"id":15586,"name":"this","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-28,"src":"6344:4:53","typeDescriptions":{"typeIdentifier":"t_contract$_InvestStrategyClient_$15693","typeString":"library InvestStrategyClient"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_contract$_InvestStrategyClient_$15693","typeString":"library InvestStrategyClient"}],"id":15585,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"6336:7:53","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":15584,"name":"address","nodeType":"ElementaryTypeName","src":"6336:7:53","typeDescriptions":{}}},"id":15587,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"6336:13:53","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"expression":{"id":15582,"name":"oldStrategy","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":15559,"src":"6312:11:53","typeDescriptions":{"typeIdentifier":"t_contract$_IInvestStrategy_$20725","typeString":"contract IInvestStrategy"}},"id":15583,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"6324:11:53","memberName":"totalAssets","nodeType":"MemberAccess","referencedDeclaration":20702,"src":"6312:23:53","typeDescriptions":{"typeIdentifier":"t_function_external_view$_t_address_$returns$_t_uint256_$","typeString":"function (address) view external returns (uint256)"}},"id":15588,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"6312:38:53","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"id":15589,"name":"force","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":15569,"src":"6352:5:53","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_contract$_IInvestStrategy_$20725","typeString":"contract IInvestStrategy"},{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_bool","typeString":"bool"}],"id":15580,"name":"dcWithdraw","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":15444,"src":"6288:10:53","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_contract$_IInvestStrategy_$20725_$_t_uint256_$_t_bool_$returns$_t_bool_$","typeString":"function (contract IInvestStrategy,uint256,bool) returns (bool)"}},"id":15590,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"6288:70:53","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":15591,"nodeType":"ExpressionStatement","src":"6288:70:53"},{"expression":{"arguments":[{"id":15593,"name":"oldStrategy","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":15559,"src":"6377:11:53","typeDescriptions":{"typeIdentifier":"t_contract$_IInvestStrategy_$20725","typeString":"contract IInvestStrategy"}},{"id":15594,"name":"force","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":15569,"src":"6390:5:53","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_contract$_IInvestStrategy_$20725","typeString":"contract IInvestStrategy"},{"typeIdentifier":"t_bool","typeString":"bool"}],"id":15592,"name":"dcDisconnect","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":15385,"src":"6364:12:53","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_contract$_IInvestStrategy_$20725_$_t_bool_$returns$__$","typeString":"function (contract IInvestStrategy,bool)"}},"id":15595,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"6364:32:53","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":15596,"nodeType":"ExpressionStatement","src":"6364:32:53"},{"expression":{"arguments":[{"id":15598,"name":"newStrategy","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":15562,"src":"6526:11:53","typeDescriptions":{"typeIdentifier":"t_contract$_IInvestStrategy_$20725","typeString":"contract IInvestStrategy"}},{"id":15599,"name":"newStrategyInitData","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":15564,"src":"6539:19:53","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_contract$_IInvestStrategy_$20725","typeString":"contract IInvestStrategy"},{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}],"id":15597,"name":"dcConnect","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":15334,"src":"6516:9:53","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_contract$_IInvestStrategy_$20725_$_t_bytes_memory_ptr_$returns$__$","typeString":"function (contract IInvestStrategy,bytes memory)"}},"id":15600,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"6516:43:53","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":15601,"nodeType":"ExpressionStatement","src":"6516:43:53"},{"expression":{"arguments":[{"id":15603,"name":"newStrategy","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":15562,"src":"6649:11:53","typeDescriptions":{"typeIdentifier":"t_contract$_IInvestStrategy_$20725","typeString":"contract IInvestStrategy"}},{"arguments":[{"arguments":[{"id":15608,"name":"this","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-28,"src":"6686:4:53","typeDescriptions":{"typeIdentifier":"t_contract$_InvestStrategyClient_$15693","typeString":"library InvestStrategyClient"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_contract$_InvestStrategyClient_$15693","typeString":"library InvestStrategyClient"}],"id":15607,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"6678:7:53","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":15606,"name":"address","nodeType":"ElementaryTypeName","src":"6678:7:53","typeDescriptions":{}}},"id":15609,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"6678:13:53","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"expression":{"id":15604,"name":"asset","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":15567,"src":"6662:5:53","typeDescriptions":{"typeIdentifier":"t_contract$_IERC20Metadata_$9411","typeString":"contract IERC20Metadata"}},"id":15605,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"6668:9:53","memberName":"balanceOf","nodeType":"MemberAccess","referencedDeclaration":8636,"src":"6662:15:53","typeDescriptions":{"typeIdentifier":"t_function_external_view$_t_address_$returns$_t_uint256_$","typeString":"function (address) view external returns (uint256)"}},"id":15610,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"6662:30:53","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"id":15611,"name":"force","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":15569,"src":"6694:5:53","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_contract$_IInvestStrategy_$20725","typeString":"contract IInvestStrategy"},{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_bool","typeString":"bool"}],"id":15602,"name":"dcDeposit","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":15503,"src":"6639:9:53","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_contract$_IInvestStrategy_$20725_$_t_uint256_$_t_bool_$returns$_t_bool_$","typeString":"function (contract IInvestStrategy,uint256,bool) returns (bool)"}},"id":15612,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"6639:61:53","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":15613,"nodeType":"ExpressionStatement","src":"6639:61:53"},{"eventCall":{"arguments":[{"id":15615,"name":"oldStrategy","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":15559,"src":"6727:11:53","typeDescriptions":{"typeIdentifier":"t_contract$_IInvestStrategy_$20725","typeString":"contract IInvestStrategy"}},{"id":15616,"name":"newStrategy","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":15562,"src":"6740:11:53","typeDescriptions":{"typeIdentifier":"t_contract$_IInvestStrategy_$20725","typeString":"contract IInvestStrategy"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_contract$_IInvestStrategy_$20725","typeString":"contract IInvestStrategy"},{"typeIdentifier":"t_contract$_IInvestStrategy_$20725","typeString":"contract IInvestStrategy"}],"id":15614,"name":"StrategyChanged","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":15297,"src":"6711:15:53","typeDescriptions":{"typeIdentifier":"t_function_event_nonpayable$_t_contract$_IInvestStrategy_$20725_$_t_contract$_IInvestStrategy_$20725_$returns$__$","typeString":"function (contract IInvestStrategy,contract IInvestStrategy)"}},"id":15617,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"6711:41:53","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":15618,"nodeType":"EmitStatement","src":"6706:46:53"}]},"documentation":{"id":15556,"nodeType":"StructuredDocumentation","src":"5344:567:53","text":" @dev Replaces one strategy with another.\n @param oldStrategy The strategy to be replaced\n @param newStrategy The new strategy to connect\n @param newStrategyInitData The initialization data that will be send to the `newStrategy` on connect\n @param asset Asset of the vault (the newStrategy has to have the same asset)\n @param force When false, it reverts if withdrawal of assets or disconnection or deposit into the new strategy\n              fails. When true, it doesn't revert on any of those errors, it just emits events."},"id":15620,"implemented":true,"kind":"function","modifiers":[],"name":"strategyChange","nameLocation":"5923:14:53","nodeType":"FunctionDefinition","parameters":{"id":15570,"nodeType":"ParameterList","parameters":[{"constant":false,"id":15559,"mutability":"mutable","name":"oldStrategy","nameLocation":"5959:11:53","nodeType":"VariableDeclaration","scope":15620,"src":"5943:27:53","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_contract$_IInvestStrategy_$20725","typeString":"contract IInvestStrategy"},"typeName":{"id":15558,"nodeType":"UserDefinedTypeName","pathNode":{"id":15557,"name":"IInvestStrategy","nameLocations":["5943:15:53"],"nodeType":"IdentifierPath","referencedDeclaration":20725,"src":"5943:15:53"},"referencedDeclaration":20725,"src":"5943:15:53","typeDescriptions":{"typeIdentifier":"t_contract$_IInvestStrategy_$20725","typeString":"contract IInvestStrategy"}},"visibility":"internal"},{"constant":false,"id":15562,"mutability":"mutable","name":"newStrategy","nameLocation":"5992:11:53","nodeType":"VariableDeclaration","scope":15620,"src":"5976:27:53","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_contract$_IInvestStrategy_$20725","typeString":"contract IInvestStrategy"},"typeName":{"id":15561,"nodeType":"UserDefinedTypeName","pathNode":{"id":15560,"name":"IInvestStrategy","nameLocations":["5976:15:53"],"nodeType":"IdentifierPath","referencedDeclaration":20725,"src":"5976:15:53"},"referencedDeclaration":20725,"src":"5976:15:53","typeDescriptions":{"typeIdentifier":"t_contract$_IInvestStrategy_$20725","typeString":"contract IInvestStrategy"}},"visibility":"internal"},{"constant":false,"id":15564,"mutability":"mutable","name":"newStrategyInitData","nameLocation":"6022:19:53","nodeType":"VariableDeclaration","scope":15620,"src":"6009:32:53","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes"},"typeName":{"id":15563,"name":"bytes","nodeType":"ElementaryTypeName","src":"6009:5:53","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"},{"constant":false,"id":15567,"mutability":"mutable","name":"asset","nameLocation":"6062:5:53","nodeType":"VariableDeclaration","scope":15620,"src":"6047:20:53","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_contract$_IERC20Metadata_$9411","typeString":"contract IERC20Metadata"},"typeName":{"id":15566,"nodeType":"UserDefinedTypeName","pathNode":{"id":15565,"name":"IERC20Metadata","nameLocations":["6047:14:53"],"nodeType":"IdentifierPath","referencedDeclaration":9411,"src":"6047:14:53"},"referencedDeclaration":9411,"src":"6047:14:53","typeDescriptions":{"typeIdentifier":"t_contract$_IERC20Metadata_$9411","typeString":"contract IERC20Metadata"}},"visibility":"internal"},{"constant":false,"id":15569,"mutability":"mutable","name":"force","nameLocation":"6078:5:53","nodeType":"VariableDeclaration","scope":15620,"src":"6073:10:53","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":15568,"name":"bool","nodeType":"ElementaryTypeName","src":"6073:4:53","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"}],"src":"5937:150:53"},"returnParameters":{"id":15571,"nodeType":"ParameterList","parameters":[],"src":"6097:0:53"},"scope":15693,"src":"5914:843:53","stateMutability":"nonpayable","virtual":false,"visibility":"internal"},{"body":{"id":15637,"nodeType":"Block","src":"7286:83:53","statements":[{"expression":{"arguments":[{"arguments":[{"hexValue":"636f2e656e7375726f2e496e766573745374726174656779436c69656e74","id":15632,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"7320:32:53","typeDescriptions":{"typeIdentifier":"t_stringliteral_4fed0cd3539a36e00a34a6c026c2615824c9ad47da5ef65e8372c7e721c05d79","typeString":"literal_string \"co.ensuro.InvestStrategyClient\""},"value":"co.ensuro.InvestStrategyClient"},{"id":15633,"name":"strategy","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":15624,"src":"7354:8:53","typeDescriptions":{"typeIdentifier":"t_contract$_IInvestStrategy_$20725","typeString":"contract IInvestStrategy"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_stringliteral_4fed0cd3539a36e00a34a6c026c2615824c9ad47da5ef65e8372c7e721c05d79","typeString":"literal_string \"co.ensuro.InvestStrategyClient\""},{"typeIdentifier":"t_contract$_IInvestStrategy_$20725","typeString":"contract IInvestStrategy"}],"expression":{"id":15630,"name":"abi","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-1,"src":"7309:3:53","typeDescriptions":{"typeIdentifier":"t_magic_abi","typeString":"abi"}},"id":15631,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberLocation":"7313:6:53","memberName":"encode","nodeType":"MemberAccess","src":"7309:10:53","typeDescriptions":{"typeIdentifier":"t_function_abiencode_pure$__$returns$_t_bytes_memory_ptr_$","typeString":"function () pure returns (bytes memory)"}},"id":15634,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"7309:54:53","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}],"id":15629,"name":"keccak256","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-8,"src":"7299:9:53","typeDescriptions":{"typeIdentifier":"t_function_keccak256_pure$_t_bytes_memory_ptr_$returns$_t_bytes32_$","typeString":"function (bytes memory) pure returns (bytes32)"}},"id":15635,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"7299:65:53","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"functionReturnParameters":15628,"id":15636,"nodeType":"Return","src":"7292:72:53"}]},"documentation":{"id":15621,"nodeType":"StructuredDocumentation","src":"6761:439:53","text":" @dev Returns the slot where the specific data of the strategy is stored.\n      WARNING: This assumes the same strategy (deployed code in a given address) isn't used twice inside a given\n      contract. If that happens, the storage of one can collide with the other.\n      Also, be aware if you unplug and the re-plug a given strategy into a contract, you might be reading a state\n      that is not clean"},"id":15638,"implemented":true,"kind":"function","modifiers":[],"name":"makeStorageSlot","nameLocation":"7212:15:53","nodeType":"FunctionDefinition","parameters":{"id":15625,"nodeType":"ParameterList","parameters":[{"constant":false,"id":15624,"mutability":"mutable","name":"strategy","nameLocation":"7244:8:53","nodeType":"VariableDeclaration","scope":15638,"src":"7228:24:53","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_contract$_IInvestStrategy_$20725","typeString":"contract IInvestStrategy"},"typeName":{"id":15623,"nodeType":"UserDefinedTypeName","pathNode":{"id":15622,"name":"IInvestStrategy","nameLocations":["7228:15:53"],"nodeType":"IdentifierPath","referencedDeclaration":20725,"src":"7228:15:53"},"referencedDeclaration":20725,"src":"7228:15:53","typeDescriptions":{"typeIdentifier":"t_contract$_IInvestStrategy_$20725","typeString":"contract IInvestStrategy"}},"visibility":"internal"}],"src":"7227:26:53"},"returnParameters":{"id":15628,"nodeType":"ParameterList","parameters":[{"constant":false,"id":15627,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":15638,"src":"7277:7:53","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":15626,"name":"bytes32","nodeType":"ElementaryTypeName","src":"7277:7:53","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"}],"src":"7276:9:53"},"scope":15693,"src":"7203:166:53","stateMutability":"pure","virtual":false,"visibility":"internal"},{"body":{"id":15655,"nodeType":"Block","src":"7568:53:53","statements":[{"expression":{"arguments":[{"arguments":[{"id":15651,"name":"this","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-28,"src":"7610:4:53","typeDescriptions":{"typeIdentifier":"t_contract$_InvestStrategyClient_$15693","typeString":"library InvestStrategyClient"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_contract$_InvestStrategyClient_$15693","typeString":"library InvestStrategyClient"}],"id":15650,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"7602:7:53","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":15649,"name":"address","nodeType":"ElementaryTypeName","src":"7602:7:53","typeDescriptions":{}}},"id":15652,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"7602:13:53","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"expression":{"id":15647,"name":"strategy","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":15642,"src":"7581:8:53","typeDescriptions":{"typeIdentifier":"t_contract$_IInvestStrategy_$20725","typeString":"contract IInvestStrategy"}},"id":15648,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"7590:11:53","memberName":"totalAssets","nodeType":"MemberAccess","referencedDeclaration":20702,"src":"7581:20:53","typeDescriptions":{"typeIdentifier":"t_function_external_view$_t_address_$returns$_t_uint256_$","typeString":"function (address) view external returns (uint256)"}},"id":15653,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"7581:35:53","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"functionReturnParameters":15646,"id":15654,"nodeType":"Return","src":"7574:42:53"}]},"documentation":{"id":15639,"nodeType":"StructuredDocumentation","src":"7373:113:53","text":" @dev Returns the total assets in the strategy given.\n See {IInvestStrategy.totalAssets()}"},"id":15656,"implemented":true,"kind":"function","modifiers":[],"name":"totalAssets","nameLocation":"7498:11:53","nodeType":"FunctionDefinition","parameters":{"id":15643,"nodeType":"ParameterList","parameters":[{"constant":false,"id":15642,"mutability":"mutable","name":"strategy","nameLocation":"7526:8:53","nodeType":"VariableDeclaration","scope":15656,"src":"7510:24:53","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_contract$_IInvestStrategy_$20725","typeString":"contract IInvestStrategy"},"typeName":{"id":15641,"nodeType":"UserDefinedTypeName","pathNode":{"id":15640,"name":"IInvestStrategy","nameLocations":["7510:15:53"],"nodeType":"IdentifierPath","referencedDeclaration":20725,"src":"7510:15:53"},"referencedDeclaration":20725,"src":"7510:15:53","typeDescriptions":{"typeIdentifier":"t_contract$_IInvestStrategy_$20725","typeString":"contract IInvestStrategy"}},"visibility":"internal"}],"src":"7509:26:53"},"returnParameters":{"id":15646,"nodeType":"ParameterList","parameters":[{"constant":false,"id":15645,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":15656,"src":"7559:7:53","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":15644,"name":"uint256","nodeType":"ElementaryTypeName","src":"7559:7:53","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"7558:9:53"},"scope":15693,"src":"7489:132:53","stateMutability":"view","virtual":false,"visibility":"internal"},{"body":{"id":15673,"nodeType":"Block","src":"7849:52:53","statements":[{"expression":{"arguments":[{"arguments":[{"id":15669,"name":"this","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-28,"src":"7890:4:53","typeDescriptions":{"typeIdentifier":"t_contract$_InvestStrategyClient_$15693","typeString":"library InvestStrategyClient"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_contract$_InvestStrategyClient_$15693","typeString":"library InvestStrategyClient"}],"id":15668,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"7882:7:53","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":15667,"name":"address","nodeType":"ElementaryTypeName","src":"7882:7:53","typeDescriptions":{}}},"id":15670,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"7882:13:53","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"expression":{"id":15665,"name":"strategy","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":15660,"src":"7862:8:53","typeDescriptions":{"typeIdentifier":"t_contract$_IInvestStrategy_$20725","typeString":"contract IInvestStrategy"}},"id":15666,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"7871:10:53","memberName":"maxDeposit","nodeType":"MemberAccess","referencedDeclaration":20710,"src":"7862:19:53","typeDescriptions":{"typeIdentifier":"t_function_external_view$_t_address_$returns$_t_uint256_$","typeString":"function (address) view external returns (uint256)"}},"id":15671,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"7862:34:53","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"functionReturnParameters":15664,"id":15672,"nodeType":"Return","src":"7855:41:53"}]},"documentation":{"id":15657,"nodeType":"StructuredDocumentation","src":"7625:143:53","text":" @dev Returns the maximum amount of assets that can be deposited in the strategy.\n      See {IInvestStrategy.maxDeposit}"},"id":15674,"implemented":true,"kind":"function","modifiers":[],"name":"maxDeposit","nameLocation":"7780:10:53","nodeType":"FunctionDefinition","parameters":{"id":15661,"nodeType":"ParameterList","parameters":[{"constant":false,"id":15660,"mutability":"mutable","name":"strategy","nameLocation":"7807:8:53","nodeType":"VariableDeclaration","scope":15674,"src":"7791:24:53","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_contract$_IInvestStrategy_$20725","typeString":"contract IInvestStrategy"},"typeName":{"id":15659,"nodeType":"UserDefinedTypeName","pathNode":{"id":15658,"name":"IInvestStrategy","nameLocations":["7791:15:53"],"nodeType":"IdentifierPath","referencedDeclaration":20725,"src":"7791:15:53"},"referencedDeclaration":20725,"src":"7791:15:53","typeDescriptions":{"typeIdentifier":"t_contract$_IInvestStrategy_$20725","typeString":"contract IInvestStrategy"}},"visibility":"internal"}],"src":"7790:26:53"},"returnParameters":{"id":15664,"nodeType":"ParameterList","parameters":[{"constant":false,"id":15663,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":15674,"src":"7840:7:53","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":15662,"name":"uint256","nodeType":"ElementaryTypeName","src":"7840:7:53","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"7839:9:53"},"scope":15693,"src":"7771:130:53","stateMutability":"view","virtual":false,"visibility":"internal"},{"body":{"id":15691,"nodeType":"Block","src":"8133:53:53","statements":[{"expression":{"arguments":[{"arguments":[{"id":15687,"name":"this","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-28,"src":"8175:4:53","typeDescriptions":{"typeIdentifier":"t_contract$_InvestStrategyClient_$15693","typeString":"library InvestStrategyClient"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_contract$_InvestStrategyClient_$15693","typeString":"library InvestStrategyClient"}],"id":15686,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"8167:7:53","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":15685,"name":"address","nodeType":"ElementaryTypeName","src":"8167:7:53","typeDescriptions":{}}},"id":15688,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"8167:13:53","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"expression":{"id":15683,"name":"strategy","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":15678,"src":"8146:8:53","typeDescriptions":{"typeIdentifier":"t_contract$_IInvestStrategy_$20725","typeString":"contract IInvestStrategy"}},"id":15684,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"8155:11:53","memberName":"maxWithdraw","nodeType":"MemberAccess","referencedDeclaration":20718,"src":"8146:20:53","typeDescriptions":{"typeIdentifier":"t_function_external_view$_t_address_$returns$_t_uint256_$","typeString":"function (address) view external returns (uint256)"}},"id":15689,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"8146:35:53","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"functionReturnParameters":15682,"id":15690,"nodeType":"Return","src":"8139:42:53"}]},"documentation":{"id":15675,"nodeType":"StructuredDocumentation","src":"7905:146:53","text":" @dev Returns the maximum amount of assets that can be withdrawn from the strategy.\n      See {IInvestStrategy.maxWithdraw}"},"id":15692,"implemented":true,"kind":"function","modifiers":[],"name":"maxWithdraw","nameLocation":"8063:11:53","nodeType":"FunctionDefinition","parameters":{"id":15679,"nodeType":"ParameterList","parameters":[{"constant":false,"id":15678,"mutability":"mutable","name":"strategy","nameLocation":"8091:8:53","nodeType":"VariableDeclaration","scope":15692,"src":"8075:24:53","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_contract$_IInvestStrategy_$20725","typeString":"contract IInvestStrategy"},"typeName":{"id":15677,"nodeType":"UserDefinedTypeName","pathNode":{"id":15676,"name":"IInvestStrategy","nameLocations":["8075:15:53"],"nodeType":"IdentifierPath","referencedDeclaration":20725,"src":"8075:15:53"},"referencedDeclaration":20725,"src":"8075:15:53","typeDescriptions":{"typeIdentifier":"t_contract$_IInvestStrategy_$20725","typeString":"contract IInvestStrategy"}},"visibility":"internal"}],"src":"8074:26:53"},"returnParameters":{"id":15682,"nodeType":"ParameterList","parameters":[{"constant":false,"id":15681,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":15692,"src":"8124:7:53","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":15680,"name":"uint256","nodeType":"ElementaryTypeName","src":"8124:7:53","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"8123:9:53"},"scope":15693,"src":"8054:132:53","stateMutability":"view","virtual":false,"visibility":"internal"}],"scope":15694,"src":"581:7607:53","usedErrors":[15311],"usedEvents":[15297,15301,15305,15309]}],"src":"39:8150:53"},"id":53},"contracts/MSVBase.sol":{"ast":{"absolutePath":"contracts/MSVBase.sol","exportedSymbols":{"IERC20Metadata":[9411],"IExposeStorage":[20649],"IInvestStrategy":[20725],"InvestStrategyClient":[15693],"MSVBase":[17366],"Math":[12726],"StorageSlot":[11032]},"id":17367,"license":"Apache-2.0","nodeType":"SourceUnit","nodes":[{"id":15695,"literals":["solidity","^","0.8",".0"],"nodeType":"PragmaDirective","src":"39:23:54"},{"absolutePath":"@openzeppelin/contracts/token/ERC20/extensions/IERC20Metadata.sol","file":"@openzeppelin/contracts/token/ERC20/extensions/IERC20Metadata.sol","id":15697,"nameLocation":"-1:-1:-1","nodeType":"ImportDirective","scope":17367,"sourceUnit":9412,"src":"64:97:54","symbolAliases":[{"foreign":{"id":15696,"name":"IERC20Metadata","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9411,"src":"72:14:54","typeDescriptions":{}},"nameLocation":"-1:-1:-1"}],"unitAlias":""},{"absolutePath":"@openzeppelin/contracts/utils/StorageSlot.sol","file":"@openzeppelin/contracts/utils/StorageSlot.sol","id":15699,"nameLocation":"-1:-1:-1","nodeType":"ImportDirective","scope":17367,"sourceUnit":11033,"src":"162:74:54","symbolAliases":[{"foreign":{"id":15698,"name":"StorageSlot","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":11032,"src":"170:11:54","typeDescriptions":{}},"nameLocation":"-1:-1:-1"}],"unitAlias":""},{"absolutePath":"@openzeppelin/contracts/utils/math/Math.sol","file":"@openzeppelin/contracts/utils/math/Math.sol","id":15701,"nameLocation":"-1:-1:-1","nodeType":"ImportDirective","scope":17367,"sourceUnit":12727,"src":"237:65:54","symbolAliases":[{"foreign":{"id":15700,"name":"Math","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":12726,"src":"245:4:54","typeDescriptions":{}},"nameLocation":"-1:-1:-1"}],"unitAlias":""},{"absolutePath":"contracts/interfaces/IInvestStrategy.sol","file":"./interfaces/IInvestStrategy.sol","id":15703,"nameLocation":"-1:-1:-1","nodeType":"ImportDirective","scope":17367,"sourceUnit":20726,"src":"303:65:54","symbolAliases":[{"foreign":{"id":15702,"name":"IInvestStrategy","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":20725,"src":"311:15:54","typeDescriptions":{}},"nameLocation":"-1:-1:-1"}],"unitAlias":""},{"absolutePath":"contracts/InvestStrategyClient.sol","file":"./InvestStrategyClient.sol","id":15705,"nameLocation":"-1:-1:-1","nodeType":"ImportDirective","scope":17367,"sourceUnit":15694,"src":"369:64:54","symbolAliases":[{"foreign":{"id":15704,"name":"InvestStrategyClient","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":15693,"src":"377:20:54","typeDescriptions":{}},"nameLocation":"-1:-1:-1"}],"unitAlias":""},{"absolutePath":"contracts/interfaces/IExposeStorage.sol","file":"./interfaces/IExposeStorage.sol","id":15707,"nameLocation":"-1:-1:-1","nodeType":"ImportDirective","scope":17367,"sourceUnit":20650,"src":"434:63:54","symbolAliases":[{"foreign":{"id":15706,"name":"IExposeStorage","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":20649,"src":"442:14:54","typeDescriptions":{}},"nameLocation":"-1:-1:-1"}],"unitAlias":""},{"abstract":true,"baseContracts":[{"baseName":{"id":15709,"name":"IExposeStorage","nameLocations":["1673:14:54"],"nodeType":"IdentifierPath","referencedDeclaration":20649,"src":"1673:14:54"},"id":15710,"nodeType":"InheritanceSpecifier","src":"1673:14:54"}],"canonicalName":"MSVBase","contractDependencies":[],"contractKind":"contract","documentation":{"id":15708,"nodeType":"StructuredDocumentation","src":"499:1144:54","text":" @title MSVBase\n @dev Base vault contract that manages multiple investment strategies.\n      Allows deposits/withdraws from each strategy, and also permit rebalances between them.\n      Funds that enter the vault, will be deposited into the strategies following _depositQueue (only tries the\n      next strategy if the current one doesn't accept more deposits).\n      Funds that exit the vault, will be withdrawn into the strategies following _withdrawQueue (only tries the\n      next strategy if the current one doesn't accept more withdrawals).\n      It doesn't have any allocation strategy besides that. Rebalance is done externally by calling `rebalance`\n      method.\n      This is a base contract, intended to be inherited by implementations of the ERC4626 standard, that will\n      handle access control, deposits and other stuff.\n      WARNING: this contract uses storage gaps (https://docs.openzeppelin.com/contracts/4.x/upgradeable#storage_gaps)\n      to manage upgradeability potential issues, NOT namespaced storage\n @custom:security-contact security@ensuro.co\n @author Ensuro"},"fullyImplemented":false,"id":17366,"linearizedBaseContracts":[17366,20649],"name":"MSVBase","nameLocation":"1662:7:54","nodeType":"ContractDefinition","nodes":[{"global":false,"id":15714,"libraryName":{"id":15711,"name":"InvestStrategyClient","nameLocations":["1698:20:54"],"nodeType":"IdentifierPath","referencedDeclaration":15693,"src":"1698:20:54"},"nodeType":"UsingForDirective","src":"1692:47:54","typeName":{"id":15713,"nodeType":"UserDefinedTypeName","pathNode":{"id":15712,"name":"IInvestStrategy","nameLocations":["1723:15:54"],"nodeType":"IdentifierPath","referencedDeclaration":20725,"src":"1723:15:54"},"referencedDeclaration":20725,"src":"1723:15:54","typeDescriptions":{"typeIdentifier":"t_contract$_IInvestStrategy_$20725","typeString":"contract IInvestStrategy"}}},{"constant":true,"functionSelector":"767f06ae","id":15717,"mutability":"constant","name":"MAX_STRATEGIES","nameLocation":"1765:14:54","nodeType":"VariableDeclaration","scope":17366,"src":"1743:41:54","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"},"typeName":{"id":15715,"name":"uint8","nodeType":"ElementaryTypeName","src":"1743:5:54","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}},"value":{"hexValue":"3332","id":15716,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"1782:2:54","typeDescriptions":{"typeIdentifier":"t_rational_32_by_1","typeString":"int_const 32"},"value":"32"},"visibility":"public"},{"constant":false,"id":15721,"mutability":"mutable","name":"_depositQueue","nameLocation":"1820:13:54","nodeType":"VariableDeclaration","scope":17366,"src":"1789:44:54","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_array$_t_uint8_$32_storage","typeString":"uint8[32]"},"typeName":{"baseType":{"id":15718,"name":"uint8","nodeType":"ElementaryTypeName","src":"1789:5:54","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}},"id":15720,"length":{"id":15719,"name":"MAX_STRATEGIES","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":15717,"src":"1795:14:54","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}},"nodeType":"ArrayTypeName","src":"1789:21:54","typeDescriptions":{"typeIdentifier":"t_array$_t_uint8_$32_storage_ptr","typeString":"uint8[32]"}},"visibility":"internal"},{"constant":false,"id":15725,"mutability":"mutable","name":"_withdrawQueue","nameLocation":"1868:14:54","nodeType":"VariableDeclaration","scope":17366,"src":"1837:45:54","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_array$_t_uint8_$32_storage","typeString":"uint8[32]"},"typeName":{"baseType":{"id":15722,"name":"uint8","nodeType":"ElementaryTypeName","src":"1837:5:54","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}},"id":15724,"length":{"id":15723,"name":"MAX_STRATEGIES","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":15717,"src":"1843:14:54","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}},"nodeType":"ArrayTypeName","src":"1837:21:54","typeDescriptions":{"typeIdentifier":"t_array$_t_uint8_$32_storage_ptr","typeString":"uint8[32]"}},"visibility":"internal"},{"constant":false,"id":15730,"mutability":"mutable","name":"_strategies","nameLocation":"1927:11:54","nodeType":"VariableDeclaration","scope":17366,"src":"1886:52:54","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_array$_t_contract$_IInvestStrategy_$20725_$32_storage","typeString":"contract IInvestStrategy[32]"},"typeName":{"baseType":{"id":15727,"nodeType":"UserDefinedTypeName","pathNode":{"id":15726,"name":"IInvestStrategy","nameLocations":["1886:15:54"],"nodeType":"IdentifierPath","referencedDeclaration":20725,"src":"1886:15:54"},"referencedDeclaration":20725,"src":"1886:15:54","typeDescriptions":{"typeIdentifier":"t_contract$_IInvestStrategy_$20725","typeString":"contract IInvestStrategy"}},"id":15729,"length":{"id":15728,"name":"MAX_STRATEGIES","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":15717,"src":"1902:14:54","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}},"nodeType":"ArrayTypeName","src":"1886:31:54","typeDescriptions":{"typeIdentifier":"t_array$_t_contract$_IInvestStrategy_$20725_$32_storage_ptr","typeString":"contract IInvestStrategy[32]"}},"visibility":"internal"},{"anonymous":false,"eventSelector":"254c88e7a2ea123aeeb89b7cc413fb949188fefcdb7584c4f3d493294daf65c5","id":15738,"name":"StrategyChanged","nameLocation":"2034:15:54","nodeType":"EventDefinition","parameters":{"id":15737,"nodeType":"ParameterList","parameters":[{"constant":false,"id":15733,"indexed":false,"mutability":"mutable","name":"oldStrategy","nameLocation":"2066:11:54","nodeType":"VariableDeclaration","scope":15738,"src":"2050:27:54","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_contract$_IInvestStrategy_$20725","typeString":"contract IInvestStrategy"},"typeName":{"id":15732,"nodeType":"UserDefinedTypeName","pathNode":{"id":15731,"name":"IInvestStrategy","nameLocations":["2050:15:54"],"nodeType":"IdentifierPath","referencedDeclaration":20725,"src":"2050:15:54"},"referencedDeclaration":20725,"src":"2050:15:54","typeDescriptions":{"typeIdentifier":"t_contract$_IInvestStrategy_$20725","typeString":"contract IInvestStrategy"}},"visibility":"internal"},{"constant":false,"id":15736,"indexed":false,"mutability":"mutable","name":"newStrategy","nameLocation":"2095:11:54","nodeType":"VariableDeclaration","scope":15738,"src":"2079:27:54","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_contract$_IInvestStrategy_$20725","typeString":"contract IInvestStrategy"},"typeName":{"id":15735,"nodeType":"UserDefinedTypeName","pathNode":{"id":15734,"name":"IInvestStrategy","nameLocations":["2079:15:54"],"nodeType":"IdentifierPath","referencedDeclaration":20725,"src":"2079:15:54"},"referencedDeclaration":20725,"src":"2079:15:54","typeDescriptions":{"typeIdentifier":"t_contract$_IInvestStrategy_$20725","typeString":"contract IInvestStrategy"}},"visibility":"internal"}],"src":"2049:58:54"},"src":"2028:80:54"},{"anonymous":false,"eventSelector":"ad0ad28a12a6ed800f1a7b398454913afe6826c175e6cc28f2e8e2c175b0d728","id":15742,"name":"WithdrawFailed","nameLocation":"2117:14:54","nodeType":"EventDefinition","parameters":{"id":15741,"nodeType":"ParameterList","parameters":[{"constant":false,"id":15740,"indexed":false,"mutability":"mutable","name":"reason","nameLocation":"2138:6:54","nodeType":"VariableDeclaration","scope":15742,"src":"2132:12:54","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes"},"typeName":{"id":15739,"name":"bytes","nodeType":"ElementaryTypeName","src":"2132:5:54","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"}],"src":"2131:14:54"},"src":"2111:35:54"},{"anonymous":false,"eventSelector":"f8e68f23d3b33772e986cc9861e94e8fd6b9461d62bc1fb21cd754bbaf726bd3","id":15746,"name":"DepositFailed","nameLocation":"2155:13:54","nodeType":"EventDefinition","parameters":{"id":15745,"nodeType":"ParameterList","parameters":[{"constant":false,"id":15744,"indexed":false,"mutability":"mutable","name":"reason","nameLocation":"2175:6:54","nodeType":"VariableDeclaration","scope":15746,"src":"2169:12:54","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes"},"typeName":{"id":15743,"name":"bytes","nodeType":"ElementaryTypeName","src":"2169:5:54","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"}],"src":"2168:14:54"},"src":"2149:34:54"},{"anonymous":false,"eventSelector":"9f864ace9f45c2734f9444cb9a0c1ade6f1b15a8c202c17175b759728a4a0bf8","id":15750,"name":"DisconnectFailed","nameLocation":"2192:16:54","nodeType":"EventDefinition","parameters":{"id":15749,"nodeType":"ParameterList","parameters":[{"constant":false,"id":15748,"indexed":false,"mutability":"mutable","name":"reason","nameLocation":"2215:6:54","nodeType":"VariableDeclaration","scope":15750,"src":"2209:12:54","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes"},"typeName":{"id":15747,"name":"bytes","nodeType":"ElementaryTypeName","src":"2209:5:54","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"}],"src":"2208:14:54"},"src":"2186:37:54"},{"anonymous":false,"eventSelector":"4973f7978f2b1810531aed51dc15a8e446cb3191afcca470f8ce464af7494f58","id":15757,"name":"StrategyAdded","nameLocation":"2232:13:54","nodeType":"EventDefinition","parameters":{"id":15756,"nodeType":"ParameterList","parameters":[{"constant":false,"id":15753,"indexed":true,"mutability":"mutable","name":"strategy","nameLocation":"2270:8:54","nodeType":"VariableDeclaration","scope":15757,"src":"2246:32:54","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_contract$_IInvestStrategy_$20725","typeString":"contract IInvestStrategy"},"typeName":{"id":15752,"nodeType":"UserDefinedTypeName","pathNode":{"id":15751,"name":"IInvestStrategy","nameLocations":["2246:15:54"],"nodeType":"IdentifierPath","referencedDeclaration":20725,"src":"2246:15:54"},"referencedDeclaration":20725,"src":"2246:15:54","typeDescriptions":{"typeIdentifier":"t_contract$_IInvestStrategy_$20725","typeString":"contract IInvestStrategy"}},"visibility":"internal"},{"constant":false,"id":15755,"indexed":false,"mutability":"mutable","name":"index","nameLocation":"2286:5:54","nodeType":"VariableDeclaration","scope":15757,"src":"2280:11:54","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"},"typeName":{"id":15754,"name":"uint8","nodeType":"ElementaryTypeName","src":"2280:5:54","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}},"visibility":"internal"}],"src":"2245:47:54"},"src":"2226:67:54"},{"anonymous":false,"eventSelector":"978014566e371fef52158b004e150b6e1fd723f5aa3d8c9aa2a7c98ddb0e65b8","id":15764,"name":"StrategyRemoved","nameLocation":"2302:15:54","nodeType":"EventDefinition","parameters":{"id":15763,"nodeType":"ParameterList","parameters":[{"constant":false,"id":15760,"indexed":true,"mutability":"mutable","name":"strategy","nameLocation":"2342:8:54","nodeType":"VariableDeclaration","scope":15764,"src":"2318:32:54","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_contract$_IInvestStrategy_$20725","typeString":"contract IInvestStrategy"},"typeName":{"id":15759,"nodeType":"UserDefinedTypeName","pathNode":{"id":15758,"name":"IInvestStrategy","nameLocations":["2318:15:54"],"nodeType":"IdentifierPath","referencedDeclaration":20725,"src":"2318:15:54"},"referencedDeclaration":20725,"src":"2318:15:54","typeDescriptions":{"typeIdentifier":"t_contract$_IInvestStrategy_$20725","typeString":"contract IInvestStrategy"}},"visibility":"internal"},{"constant":false,"id":15762,"indexed":false,"mutability":"mutable","name":"index","nameLocation":"2358:5:54","nodeType":"VariableDeclaration","scope":15764,"src":"2352:11:54","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"},"typeName":{"id":15761,"name":"uint8","nodeType":"ElementaryTypeName","src":"2352:5:54","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}},"visibility":"internal"}],"src":"2317:47:54"},"src":"2296:69:54"},{"anonymous":false,"eventSelector":"193fc4e628c27ae3ca098952dfc16a40425b44e7b0a97f4cc59d0f267f47caec","id":15769,"name":"DepositQueueChanged","nameLocation":"2374:19:54","nodeType":"EventDefinition","parameters":{"id":15768,"nodeType":"ParameterList","parameters":[{"constant":false,"id":15767,"indexed":false,"mutability":"mutable","name":"queue","nameLocation":"2402:5:54","nodeType":"VariableDeclaration","scope":15769,"src":"2394:13:54","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_array$_t_uint8_$dyn_memory_ptr","typeString":"uint8[]"},"typeName":{"baseType":{"id":15765,"name":"uint8","nodeType":"ElementaryTypeName","src":"2394:5:54","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}},"id":15766,"nodeType":"ArrayTypeName","src":"2394:7:54","typeDescriptions":{"typeIdentifier":"t_array$_t_uint8_$dyn_storage_ptr","typeString":"uint8[]"}},"visibility":"internal"}],"src":"2393:15:54"},"src":"2368:41:54"},{"anonymous":false,"eventSelector":"3c56b6bca0d55eda581f8f2819d1f85d3b91cfcc24914a8fa39d301796d8964c","id":15774,"name":"WithdrawQueueChanged","nameLocation":"2418:20:54","nodeType":"EventDefinition","parameters":{"id":15773,"nodeType":"ParameterList","parameters":[{"constant":false,"id":15772,"indexed":false,"mutability":"mutable","name":"queue","nameLocation":"2447:5:54","nodeType":"VariableDeclaration","scope":15774,"src":"2439:13:54","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_array$_t_uint8_$dyn_memory_ptr","typeString":"uint8[]"},"typeName":{"baseType":{"id":15770,"name":"uint8","nodeType":"ElementaryTypeName","src":"2439:5:54","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}},"id":15771,"nodeType":"ArrayTypeName","src":"2439:7:54","typeDescriptions":{"typeIdentifier":"t_array$_t_uint8_$dyn_storage_ptr","typeString":"uint8[]"}},"visibility":"internal"}],"src":"2438:15:54"},"src":"2412:42:54"},{"anonymous":false,"eventSelector":"b0850b8e0f9e8315dde3c9f9f31138283e6bbe16cd29e8552eb1dcdf9fac9e3b","id":15784,"name":"Rebalance","nameLocation":"2463:9:54","nodeType":"EventDefinition","parameters":{"id":15783,"nodeType":"ParameterList","parameters":[{"constant":false,"id":15777,"indexed":true,"mutability":"mutable","name":"strategyFrom","nameLocation":"2497:12:54","nodeType":"VariableDeclaration","scope":15784,"src":"2473:36:54","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_contract$_IInvestStrategy_$20725","typeString":"contract IInvestStrategy"},"typeName":{"id":15776,"nodeType":"UserDefinedTypeName","pathNode":{"id":15775,"name":"IInvestStrategy","nameLocations":["2473:15:54"],"nodeType":"IdentifierPath","referencedDeclaration":20725,"src":"2473:15:54"},"referencedDeclaration":20725,"src":"2473:15:54","typeDescriptions":{"typeIdentifier":"t_contract$_IInvestStrategy_$20725","typeString":"contract IInvestStrategy"}},"visibility":"internal"},{"constant":false,"id":15780,"indexed":true,"mutability":"mutable","name":"strategyTo","nameLocation":"2535:10:54","nodeType":"VariableDeclaration","scope":15784,"src":"2511:34:54","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_contract$_IInvestStrategy_$20725","typeString":"contract IInvestStrategy"},"typeName":{"id":15779,"nodeType":"UserDefinedTypeName","pathNode":{"id":15778,"name":"IInvestStrategy","nameLocations":["2511:15:54"],"nodeType":"IdentifierPath","referencedDeclaration":20725,"src":"2511:15:54"},"referencedDeclaration":20725,"src":"2511:15:54","typeDescriptions":{"typeIdentifier":"t_contract$_IInvestStrategy_$20725","typeString":"contract IInvestStrategy"}},"visibility":"internal"},{"constant":false,"id":15782,"indexed":false,"mutability":"mutable","name":"amount","nameLocation":"2555:6:54","nodeType":"VariableDeclaration","scope":15784,"src":"2547:14:54","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":15781,"name":"uint256","nodeType":"ElementaryTypeName","src":"2547:7:54","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"2472:90:54"},"src":"2457:106:54"},{"errorSelector":"ff52e055","id":15786,"name":"InvalidStrategiesLength","nameLocation":"2573:23:54","nodeType":"ErrorDefinition","parameters":{"id":15785,"nodeType":"ParameterList","parameters":[],"src":"2596:2:54"},"src":"2567:32:54"},{"errorSelector":"4e236e9a","id":15788,"name":"InvalidStrategy","nameLocation":"2608:15:54","nodeType":"ErrorDefinition","parameters":{"id":15787,"nodeType":"ParameterList","parameters":[],"src":"2623:2:54"},"src":"2602:24:54"},{"errorSelector":"b5a9314f","id":15793,"name":"DuplicatedStrategy","nameLocation":"2635:18:54","nodeType":"ErrorDefinition","parameters":{"id":15792,"nodeType":"ParameterList","parameters":[{"constant":false,"id":15791,"mutability":"mutable","name":"strategy","nameLocation":"2670:8:54","nodeType":"VariableDeclaration","scope":15793,"src":"2654:24:54","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_contract$_IInvestStrategy_$20725","typeString":"contract IInvestStrategy"},"typeName":{"id":15790,"nodeType":"UserDefinedTypeName","pathNode":{"id":15789,"name":"IInvestStrategy","nameLocations":["2654:15:54"],"nodeType":"IdentifierPath","referencedDeclaration":20725,"src":"2654:15:54"},"referencedDeclaration":20725,"src":"2654:15:54","typeDescriptions":{"typeIdentifier":"t_contract$_IInvestStrategy_$20725","typeString":"contract IInvestStrategy"}},"visibility":"internal"}],"src":"2653:26:54"},"src":"2629:51:54"},{"errorSelector":"60d99aba","id":15797,"name":"InvalidStrategyInDepositQueue","nameLocation":"2689:29:54","nodeType":"ErrorDefinition","parameters":{"id":15796,"nodeType":"ParameterList","parameters":[{"constant":false,"id":15795,"mutability":"mutable","name":"index","nameLocation":"2725:5:54","nodeType":"VariableDeclaration","scope":15797,"src":"2719:11:54","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"},"typeName":{"id":15794,"name":"uint8","nodeType":"ElementaryTypeName","src":"2719:5:54","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}},"visibility":"internal"}],"src":"2718:13:54"},"src":"2683:49:54"},{"errorSelector":"4eed2482","id":15801,"name":"InvalidStrategyInWithdrawQueue","nameLocation":"2741:30:54","nodeType":"ErrorDefinition","parameters":{"id":15800,"nodeType":"ParameterList","parameters":[{"constant":false,"id":15799,"mutability":"mutable","name":"index","nameLocation":"2778:5:54","nodeType":"VariableDeclaration","scope":15801,"src":"2772:11:54","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"},"typeName":{"id":15798,"name":"uint8","nodeType":"ElementaryTypeName","src":"2772:5:54","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}},"visibility":"internal"}],"src":"2771:13:54"},"src":"2735:50:54"},{"errorSelector":"d4771574","id":15803,"name":"WithdrawError","nameLocation":"2794:13:54","nodeType":"ErrorDefinition","parameters":{"id":15802,"nodeType":"ParameterList","parameters":[],"src":"2807:2:54"},"src":"2788:22:54"},{"errorSelector":"285a546d","id":15805,"name":"DepositError","nameLocation":"2819:12:54","nodeType":"ErrorDefinition","parameters":{"id":15804,"nodeType":"ParameterList","parameters":[],"src":"2831:2:54"},"src":"2813:21:54"},{"errorSelector":"426213ba","id":15807,"name":"OnlyStrategyStorageExposed","nameLocation":"2843:26:54","nodeType":"ErrorDefinition","parameters":{"id":15806,"nodeType":"ParameterList","parameters":[],"src":"2869:2:54"},"src":"2837:35:54"},{"errorSelector":"43c2dfef","id":15809,"name":"CannotRemoveStrategyWithAssets","nameLocation":"2881:30:54","nodeType":"ErrorDefinition","parameters":{"id":15808,"nodeType":"ParameterList","parameters":[],"src":"2911:2:54"},"src":"2875:39:54"},{"errorSelector":"a29b1f11","id":15811,"name":"InvalidQueue","nameLocation":"2923:12:54","nodeType":"ErrorDefinition","parameters":{"id":15810,"nodeType":"ParameterList","parameters":[],"src":"2935:2:54"},"src":"2917:21:54"},{"errorSelector":"6712b27b","id":15813,"name":"InvalidQueueLength","nameLocation":"2947:18:54","nodeType":"ErrorDefinition","parameters":{"id":15812,"nodeType":"ParameterList","parameters":[],"src":"2965:2:54"},"src":"2941:27:54"},{"errorSelector":"c41fdbb9","id":15817,"name":"InvalidQueueIndexDuplicated","nameLocation":"2977:27:54","nodeType":"ErrorDefinition","parameters":{"id":15816,"nodeType":"ParameterList","parameters":[{"constant":false,"id":15815,"mutability":"mutable","name":"index","nameLocation":"3011:5:54","nodeType":"VariableDeclaration","scope":15817,"src":"3005:11:54","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"},"typeName":{"id":15814,"name":"uint8","nodeType":"ElementaryTypeName","src":"3005:5:54","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}},"visibility":"internal"}],"src":"3004:13:54"},"src":"2971:47:54"},{"errorSelector":"a147c6ea","id":15821,"name":"RebalanceAmountExceedsMaxDeposit","nameLocation":"3027:32:54","nodeType":"ErrorDefinition","parameters":{"id":15820,"nodeType":"ParameterList","parameters":[{"constant":false,"id":15819,"mutability":"mutable","name":"max","nameLocation":"3068:3:54","nodeType":"VariableDeclaration","scope":15821,"src":"3060:11:54","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":15818,"name":"uint256","nodeType":"ElementaryTypeName","src":"3060:7:54","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"3059:13:54"},"src":"3021:52:54"},{"errorSelector":"3ce011d5","id":15825,"name":"RebalanceAmountExceedsMaxWithdraw","nameLocation":"3082:33:54","nodeType":"ErrorDefinition","parameters":{"id":15824,"nodeType":"ParameterList","parameters":[{"constant":false,"id":15823,"mutability":"mutable","name":"max","nameLocation":"3124:3:54","nodeType":"VariableDeclaration","scope":15825,"src":"3116:11:54","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":15822,"name":"uint256","nodeType":"ElementaryTypeName","src":"3116:7:54","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"3115:13:54"},"src":"3076:53:54"},{"id":15830,"implemented":false,"kind":"function","modifiers":[],"name":"_asset","nameLocation":"3191:6:54","nodeType":"FunctionDefinition","parameters":{"id":15826,"nodeType":"ParameterList","parameters":[],"src":"3197:2:54"},"returnParameters":{"id":15829,"nodeType":"ParameterList","parameters":[{"constant":false,"id":15828,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":15830,"src":"3231:7:54","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":15827,"name":"address","nodeType":"ElementaryTypeName","src":"3231:7:54","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"3230:9:54"},"scope":17366,"src":"3182:58:54","stateMutability":"view","virtual":true,"visibility":"internal"},{"body":{"id":16060,"nodeType":"Block","src":"3491:1671:54","statements":[{"condition":{"commonType":{"typeIdentifier":"t_bool","typeString":"bool"},"id":15872,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"commonType":{"typeIdentifier":"t_bool","typeString":"bool"},"id":15866,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"commonType":{"typeIdentifier":"t_bool","typeString":"bool"},"id":15860,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"commonType":{"typeIdentifier":"t_bool","typeString":"bool"},"id":15854,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":15849,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"expression":{"id":15846,"name":"strategies_","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":15834,"src":"3508:11:54","typeDescriptions":{"typeIdentifier":"t_array$_t_contract$_IInvestStrategy_$20725_$dyn_memory_ptr","typeString":"contract IInvestStrategy[] memory"}},"id":15847,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"3520:6:54","memberName":"length","nodeType":"MemberAccess","src":"3508:18:54","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"hexValue":"30","id":15848,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"3530:1:54","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"3508:23:54","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"nodeType":"BinaryOperation","operator":"||","rightExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":15853,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"expression":{"id":15850,"name":"strategies_","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":15834,"src":"3541:11:54","typeDescriptions":{"typeIdentifier":"t_array$_t_contract$_IInvestStrategy_$20725_$dyn_memory_ptr","typeString":"contract IInvestStrategy[] memory"}},"id":15851,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"3553:6:54","memberName":"length","nodeType":"MemberAccess","src":"3541:18:54","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">","rightExpression":{"id":15852,"name":"MAX_STRATEGIES","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":15717,"src":"3562:14:54","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}},"src":"3541:35:54","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"src":"3508:68:54","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"nodeType":"BinaryOperation","operator":"||","rightExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":15859,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"expression":{"id":15855,"name":"strategies_","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":15834,"src":"3586:11:54","typeDescriptions":{"typeIdentifier":"t_array$_t_contract$_IInvestStrategy_$20725_$dyn_memory_ptr","typeString":"contract IInvestStrategy[] memory"}},"id":15856,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"3598:6:54","memberName":"length","nodeType":"MemberAccess","src":"3586:18:54","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"!=","rightExpression":{"expression":{"id":15857,"name":"initStrategyDatas","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":15837,"src":"3608:17:54","typeDescriptions":{"typeIdentifier":"t_array$_t_bytes_memory_ptr_$dyn_memory_ptr","typeString":"bytes memory[] memory"}},"id":15858,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"3626:6:54","memberName":"length","nodeType":"MemberAccess","src":"3608:24:54","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"3586:46:54","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"src":"3508:124:54","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"nodeType":"BinaryOperation","operator":"||","rightExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":15865,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"expression":{"id":15861,"name":"strategies_","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":15834,"src":"3642:11:54","typeDescriptions":{"typeIdentifier":"t_array$_t_contract$_IInvestStrategy_$20725_$dyn_memory_ptr","typeString":"contract IInvestStrategy[] memory"}},"id":15862,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"3654:6:54","memberName":"length","nodeType":"MemberAccess","src":"3642:18:54","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"!=","rightExpression":{"expression":{"id":15863,"name":"depositQueue_","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":15840,"src":"3664:13:54","typeDescriptions":{"typeIdentifier":"t_array$_t_uint8_$dyn_memory_ptr","typeString":"uint8[] memory"}},"id":15864,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"3678:6:54","memberName":"length","nodeType":"MemberAccess","src":"3664:20:54","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"3642:42:54","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"src":"3508:176:54","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"nodeType":"BinaryOperation","operator":"||","rightExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":15871,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"expression":{"id":15867,"name":"strategies_","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":15834,"src":"3694:11:54","typeDescriptions":{"typeIdentifier":"t_array$_t_contract$_IInvestStrategy_$20725_$dyn_memory_ptr","typeString":"contract IInvestStrategy[] memory"}},"id":15868,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"3706:6:54","memberName":"length","nodeType":"MemberAccess","src":"3694:18:54","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"!=","rightExpression":{"expression":{"id":15869,"name":"withdrawQueue_","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":15843,"src":"3716:14:54","typeDescriptions":{"typeIdentifier":"t_array$_t_uint8_$dyn_memory_ptr","typeString":"uint8[] memory"}},"id":15870,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"3731:6:54","memberName":"length","nodeType":"MemberAccess","src":"3716:21:54","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"3694:43:54","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"src":"3508:229:54","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":15876,"nodeType":"IfStatement","src":"3497:279:54","trueBody":{"errorCall":{"arguments":[],"expression":{"argumentTypes":[],"id":15873,"name":"InvalidStrategiesLength","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":15786,"src":"3751:23:54","typeDescriptions":{"typeIdentifier":"t_function_error_pure$__$returns$_t_error_$","typeString":"function () pure returns (error)"}},"id":15874,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"3751:25:54","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_error","typeString":"error"}},"id":15875,"nodeType":"RevertStatement","src":"3744:32:54"}},{"assignments":[15882],"declarations":[{"constant":false,"id":15882,"mutability":"mutable","name":"presentInDeposit","nameLocation":"3810:16:54","nodeType":"VariableDeclaration","scope":16060,"src":"3782:44:54","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_array$_t_bool_$32_memory_ptr","typeString":"bool[32]"},"typeName":{"baseType":{"id":15880,"name":"bool","nodeType":"ElementaryTypeName","src":"3782:4:54","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":15881,"length":{"id":15879,"name":"MAX_STRATEGIES","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":15717,"src":"3787:14:54","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}},"nodeType":"ArrayTypeName","src":"3782:20:54","typeDescriptions":{"typeIdentifier":"t_array$_t_bool_$32_storage_ptr","typeString":"bool[32]"}},"visibility":"internal"}],"id":15883,"nodeType":"VariableDeclarationStatement","src":"3782:44:54"},{"assignments":[15889],"declarations":[{"constant":false,"id":15889,"mutability":"mutable","name":"presentInWithdraw","nameLocation":"3860:17:54","nodeType":"VariableDeclaration","scope":16060,"src":"3832:45:54","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_array$_t_bool_$32_memory_ptr","typeString":"bool[32]"},"typeName":{"baseType":{"id":15887,"name":"bool","nodeType":"ElementaryTypeName","src":"3832:4:54","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":15888,"length":{"id":15886,"name":"MAX_STRATEGIES","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":15717,"src":"3837:14:54","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}},"nodeType":"ArrayTypeName","src":"3832:20:54","typeDescriptions":{"typeIdentifier":"t_array$_t_bool_$32_storage_ptr","typeString":"bool[32]"}},"visibility":"internal"}],"id":15890,"nodeType":"VariableDeclarationStatement","src":"3832:45:54"},{"body":{"id":16050,"nodeType":"Block","src":"3928:1138:54","statements":[{"condition":{"commonType":{"typeIdentifier":"t_address","typeString":"address"},"id":15911,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"arguments":[{"baseExpression":{"id":15903,"name":"strategies_","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":15834,"src":"3948:11:54","typeDescriptions":{"typeIdentifier":"t_array$_t_contract$_IInvestStrategy_$20725_$dyn_memory_ptr","typeString":"contract IInvestStrategy[] memory"}},"id":15905,"indexExpression":{"id":15904,"name":"i","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":15892,"src":"3960:1:54","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"3948:14:54","typeDescriptions":{"typeIdentifier":"t_contract$_IInvestStrategy_$20725","typeString":"contract IInvestStrategy"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_contract$_IInvestStrategy_$20725","typeString":"contract IInvestStrategy"}],"id":15902,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"3940:7:54","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":15901,"name":"address","nodeType":"ElementaryTypeName","src":"3940:7:54","typeDescriptions":{}}},"id":15906,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"3940:23:54","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"arguments":[{"hexValue":"30","id":15909,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"3975: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":15908,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"3967:7:54","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":15907,"name":"address","nodeType":"ElementaryTypeName","src":"3967:7:54","typeDescriptions":{}}},"id":15910,"isConstant":false,"isLValue":false,"isPure":true,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"3967:10:54","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"src":"3940:37:54","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":15915,"nodeType":"IfStatement","src":"3936:67:54","trueBody":{"errorCall":{"arguments":[],"expression":{"argumentTypes":[],"id":15912,"name":"InvalidStrategy","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":15788,"src":"3986:15:54","typeDescriptions":{"typeIdentifier":"t_function_error_pure$__$returns$_t_error_$","typeString":"function () pure returns (error)"}},"id":15913,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"3986:17:54","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_error","typeString":"error"}},"id":15914,"nodeType":"RevertStatement","src":"3979:24:54"}},{"expression":{"arguments":[{"arguments":[],"expression":{"argumentTypes":[],"id":15920,"name":"_asset","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":15830,"src":"4037:6:54","typeDescriptions":{"typeIdentifier":"t_function_internal_view$__$returns$_t_address_$","typeString":"function () view returns (address)"}},"id":15921,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"4037:8:54","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"expression":{"baseExpression":{"id":15916,"name":"strategies_","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":15834,"src":"4011:11:54","typeDescriptions":{"typeIdentifier":"t_array$_t_contract$_IInvestStrategy_$20725_$dyn_memory_ptr","typeString":"contract IInvestStrategy[] memory"}},"id":15918,"indexExpression":{"id":15917,"name":"i","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":15892,"src":"4023:1:54","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"4011:14:54","typeDescriptions":{"typeIdentifier":"t_contract$_IInvestStrategy_$20725","typeString":"contract IInvestStrategy"}},"id":15919,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"4026:10:54","memberName":"checkAsset","nodeType":"MemberAccess","referencedDeclaration":15555,"src":"4011:25:54","typeDescriptions":{"typeIdentifier":"t_function_internal_view$_t_contract$_IInvestStrategy_$20725_$_t_address_$returns$__$attached_to$_t_contract$_IInvestStrategy_$20725_$","typeString":"function (contract IInvestStrategy,address) view"}},"id":15922,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"4011:35:54","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":15923,"nodeType":"ExpressionStatement","src":"4011:35:54"},{"body":{"id":15947,"nodeType":"Block","src":"4127:98:54","statements":[{"condition":{"commonType":{"typeIdentifier":"t_contract$_IInvestStrategy_$20725","typeString":"contract IInvestStrategy"},"id":15939,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"baseExpression":{"id":15933,"name":"strategies_","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":15834,"src":"4141:11:54","typeDescriptions":{"typeIdentifier":"t_array$_t_contract$_IInvestStrategy_$20725_$dyn_memory_ptr","typeString":"contract IInvestStrategy[] memory"}},"id":15935,"indexExpression":{"id":15934,"name":"i","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":15892,"src":"4153:1:54","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"4141:14:54","typeDescriptions":{"typeIdentifier":"t_contract$_IInvestStrategy_$20725","typeString":"contract IInvestStrategy"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"baseExpression":{"id":15936,"name":"strategies_","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":15834,"src":"4159:11:54","typeDescriptions":{"typeIdentifier":"t_array$_t_contract$_IInvestStrategy_$20725_$dyn_memory_ptr","typeString":"contract IInvestStrategy[] memory"}},"id":15938,"indexExpression":{"id":15937,"name":"j","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":15925,"src":"4171:1:54","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"4159:14:54","typeDescriptions":{"typeIdentifier":"t_contract$_IInvestStrategy_$20725","typeString":"contract IInvestStrategy"}},"src":"4141:32:54","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":15946,"nodeType":"IfStatement","src":"4137:79:54","trueBody":{"errorCall":{"arguments":[{"baseExpression":{"id":15941,"name":"strategies_","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":15834,"src":"4201:11:54","typeDescriptions":{"typeIdentifier":"t_array$_t_contract$_IInvestStrategy_$20725_$dyn_memory_ptr","typeString":"contract IInvestStrategy[] memory"}},"id":15943,"indexExpression":{"id":15942,"name":"i","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":15892,"src":"4213:1:54","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"4201:14:54","typeDescriptions":{"typeIdentifier":"t_contract$_IInvestStrategy_$20725","typeString":"contract IInvestStrategy"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_contract$_IInvestStrategy_$20725","typeString":"contract IInvestStrategy"}],"id":15940,"name":"DuplicatedStrategy","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":15793,"src":"4182:18:54","typeDescriptions":{"typeIdentifier":"t_function_error_pure$_t_contract$_IInvestStrategy_$20725_$returns$_t_error_$","typeString":"function (contract IInvestStrategy) pure returns (error)"}},"id":15944,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"4182:34:54","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_error","typeString":"error"}},"id":15945,"nodeType":"RevertStatement","src":"4175:41:54"}}]},"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":15929,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":15927,"name":"j","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":15925,"src":"4115:1:54","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"<","rightExpression":{"id":15928,"name":"i","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":15892,"src":"4119:1:54","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"4115:5:54","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":15948,"initializationExpression":{"assignments":[15925],"declarations":[{"constant":false,"id":15925,"mutability":"mutable","name":"j","nameLocation":"4112:1:54","nodeType":"VariableDeclaration","scope":15948,"src":"4104:9:54","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":15924,"name":"uint256","nodeType":"ElementaryTypeName","src":"4104:7:54","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":15926,"nodeType":"VariableDeclarationStatement","src":"4104:9:54"},"isSimpleCounterLoop":true,"loopExpression":{"expression":{"id":15931,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"UnaryOperation","operator":"++","prefix":true,"src":"4122:3:54","subExpression":{"id":15930,"name":"j","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":15925,"src":"4124:1:54","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":15932,"nodeType":"ExpressionStatement","src":"4122:3:54"},"nodeType":"ForStatement","src":"4099:126:54"},{"condition":{"commonType":{"typeIdentifier":"t_bool","typeString":"bool"},"id":15960,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":15954,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"baseExpression":{"id":15949,"name":"depositQueue_","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":15840,"src":"4323:13:54","typeDescriptions":{"typeIdentifier":"t_array$_t_uint8_$dyn_memory_ptr","typeString":"uint8[] memory"}},"id":15951,"indexExpression":{"id":15950,"name":"i","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":15892,"src":"4337:1:54","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"4323:16:54","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}},"nodeType":"BinaryOperation","operator":">=","rightExpression":{"expression":{"id":15952,"name":"strategies_","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":15834,"src":"4343:11:54","typeDescriptions":{"typeIdentifier":"t_array$_t_contract$_IInvestStrategy_$20725_$dyn_memory_ptr","typeString":"contract IInvestStrategy[] memory"}},"id":15953,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"4355:6:54","memberName":"length","nodeType":"MemberAccess","src":"4343:18:54","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"4323:38:54","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"nodeType":"BinaryOperation","operator":"||","rightExpression":{"baseExpression":{"id":15955,"name":"presentInDeposit","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":15882,"src":"4365:16:54","typeDescriptions":{"typeIdentifier":"t_array$_t_bool_$32_memory_ptr","typeString":"bool[32] memory"}},"id":15959,"indexExpression":{"baseExpression":{"id":15956,"name":"depositQueue_","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":15840,"src":"4382:13:54","typeDescriptions":{"typeIdentifier":"t_array$_t_uint8_$dyn_memory_ptr","typeString":"uint8[] memory"}},"id":15958,"indexExpression":{"id":15957,"name":"i","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":15892,"src":"4396:1:54","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"4382:16:54","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"4365:34:54","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"src":"4323:76:54","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":15967,"nodeType":"IfStatement","src":"4319:144:54","trueBody":{"errorCall":{"arguments":[{"baseExpression":{"id":15962,"name":"depositQueue_","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":15840,"src":"4446:13:54","typeDescriptions":{"typeIdentifier":"t_array$_t_uint8_$dyn_memory_ptr","typeString":"uint8[] memory"}},"id":15964,"indexExpression":{"id":15963,"name":"i","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":15892,"src":"4460:1:54","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"4446:16:54","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint8","typeString":"uint8"}],"id":15961,"name":"InvalidStrategyInDepositQueue","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":15797,"src":"4416:29:54","typeDescriptions":{"typeIdentifier":"t_function_error_pure$_t_uint8_$returns$_t_error_$","typeString":"function (uint8) pure returns (error)"}},"id":15965,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"4416:47:54","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_error","typeString":"error"}},"id":15966,"nodeType":"RevertStatement","src":"4409:54:54"}},{"condition":{"commonType":{"typeIdentifier":"t_bool","typeString":"bool"},"id":15979,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":15973,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"baseExpression":{"id":15968,"name":"withdrawQueue_","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":15843,"src":"4475:14:54","typeDescriptions":{"typeIdentifier":"t_array$_t_uint8_$dyn_memory_ptr","typeString":"uint8[] memory"}},"id":15970,"indexExpression":{"id":15969,"name":"i","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":15892,"src":"4490:1:54","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"4475:17:54","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}},"nodeType":"BinaryOperation","operator":">=","rightExpression":{"expression":{"id":15971,"name":"strategies_","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":15834,"src":"4496:11:54","typeDescriptions":{"typeIdentifier":"t_array$_t_contract$_IInvestStrategy_$20725_$dyn_memory_ptr","typeString":"contract IInvestStrategy[] memory"}},"id":15972,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"4508:6:54","memberName":"length","nodeType":"MemberAccess","src":"4496:18:54","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"4475:39:54","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"nodeType":"BinaryOperation","operator":"||","rightExpression":{"baseExpression":{"id":15974,"name":"presentInWithdraw","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":15889,"src":"4518:17:54","typeDescriptions":{"typeIdentifier":"t_array$_t_bool_$32_memory_ptr","typeString":"bool[32] memory"}},"id":15978,"indexExpression":{"baseExpression":{"id":15975,"name":"withdrawQueue_","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":15843,"src":"4536:14:54","typeDescriptions":{"typeIdentifier":"t_array$_t_uint8_$dyn_memory_ptr","typeString":"uint8[] memory"}},"id":15977,"indexExpression":{"id":15976,"name":"i","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":15892,"src":"4551:1:54","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"4536:17:54","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"4518:36:54","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"src":"4475:79:54","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":15986,"nodeType":"IfStatement","src":"4471:149:54","trueBody":{"errorCall":{"arguments":[{"baseExpression":{"id":15981,"name":"withdrawQueue_","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":15843,"src":"4602:14:54","typeDescriptions":{"typeIdentifier":"t_array$_t_uint8_$dyn_memory_ptr","typeString":"uint8[] memory"}},"id":15983,"indexExpression":{"id":15982,"name":"i","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":15892,"src":"4617:1:54","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"4602:17:54","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint8","typeString":"uint8"}],"id":15980,"name":"InvalidStrategyInWithdrawQueue","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":15801,"src":"4571:30:54","typeDescriptions":{"typeIdentifier":"t_function_error_pure$_t_uint8_$returns$_t_error_$","typeString":"function (uint8) pure returns (error)"}},"id":15984,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"4571:49:54","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_error","typeString":"error"}},"id":15985,"nodeType":"RevertStatement","src":"4564:56:54"}},{"expression":{"id":15993,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"baseExpression":{"id":15987,"name":"presentInDeposit","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":15882,"src":"4628:16:54","typeDescriptions":{"typeIdentifier":"t_array$_t_bool_$32_memory_ptr","typeString":"bool[32] memory"}},"id":15991,"indexExpression":{"baseExpression":{"id":15988,"name":"depositQueue_","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":15840,"src":"4645:13:54","typeDescriptions":{"typeIdentifier":"t_array$_t_uint8_$dyn_memory_ptr","typeString":"uint8[] memory"}},"id":15990,"indexExpression":{"id":15989,"name":"i","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":15892,"src":"4659:1:54","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"4645:16:54","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"nodeType":"IndexAccess","src":"4628:34:54","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"hexValue":"74727565","id":15992,"isConstant":false,"isLValue":false,"isPure":true,"kind":"bool","lValueRequested":false,"nodeType":"Literal","src":"4665:4:54","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"value":"true"},"src":"4628:41:54","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":15994,"nodeType":"ExpressionStatement","src":"4628:41:54"},{"expression":{"id":16001,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"baseExpression":{"id":15995,"name":"presentInWithdraw","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":15889,"src":"4677:17:54","typeDescriptions":{"typeIdentifier":"t_array$_t_bool_$32_memory_ptr","typeString":"bool[32] memory"}},"id":15999,"indexExpression":{"baseExpression":{"id":15996,"name":"withdrawQueue_","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":15843,"src":"4695:14:54","typeDescriptions":{"typeIdentifier":"t_array$_t_uint8_$dyn_memory_ptr","typeString":"uint8[] memory"}},"id":15998,"indexExpression":{"id":15997,"name":"i","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":15892,"src":"4710:1:54","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"4695:17:54","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"nodeType":"IndexAccess","src":"4677:36:54","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"hexValue":"74727565","id":16000,"isConstant":false,"isLValue":false,"isPure":true,"kind":"bool","lValueRequested":false,"nodeType":"Literal","src":"4716:4:54","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"value":"true"},"src":"4677:43:54","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":16002,"nodeType":"ExpressionStatement","src":"4677:43:54"},{"expression":{"id":16009,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"baseExpression":{"id":16003,"name":"_strategies","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":15730,"src":"4728:11:54","typeDescriptions":{"typeIdentifier":"t_array$_t_contract$_IInvestStrategy_$20725_$32_storage","typeString":"contract IInvestStrategy[32] storage ref"}},"id":16005,"indexExpression":{"id":16004,"name":"i","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":15892,"src":"4740:1:54","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"nodeType":"IndexAccess","src":"4728:14:54","typeDescriptions":{"typeIdentifier":"t_contract$_IInvestStrategy_$20725","typeString":"contract IInvestStrategy"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"baseExpression":{"id":16006,"name":"strategies_","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":15834,"src":"4745:11:54","typeDescriptions":{"typeIdentifier":"t_array$_t_contract$_IInvestStrategy_$20725_$dyn_memory_ptr","typeString":"contract IInvestStrategy[] memory"}},"id":16008,"indexExpression":{"id":16007,"name":"i","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":15892,"src":"4757:1:54","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"4745:14:54","typeDescriptions":{"typeIdentifier":"t_contract$_IInvestStrategy_$20725","typeString":"contract IInvestStrategy"}},"src":"4728:31:54","typeDescriptions":{"typeIdentifier":"t_contract$_IInvestStrategy_$20725","typeString":"contract IInvestStrategy"}},"id":16010,"nodeType":"ExpressionStatement","src":"4728:31:54"},{"expression":{"id":16019,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"baseExpression":{"id":16011,"name":"_depositQueue","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":15721,"src":"4767:13:54","typeDescriptions":{"typeIdentifier":"t_array$_t_uint8_$32_storage","typeString":"uint8[32] storage ref"}},"id":16013,"indexExpression":{"id":16012,"name":"i","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":15892,"src":"4781:1:54","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"nodeType":"IndexAccess","src":"4767:16:54","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"commonType":{"typeIdentifier":"t_uint8","typeString":"uint8"},"id":16018,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"baseExpression":{"id":16014,"name":"depositQueue_","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":15840,"src":"4786:13:54","typeDescriptions":{"typeIdentifier":"t_array$_t_uint8_$dyn_memory_ptr","typeString":"uint8[] memory"}},"id":16016,"indexExpression":{"id":16015,"name":"i","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":15892,"src":"4800:1:54","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"4786:16:54","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}},"nodeType":"BinaryOperation","operator":"+","rightExpression":{"hexValue":"31","id":16017,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"4805:1:54","typeDescriptions":{"typeIdentifier":"t_rational_1_by_1","typeString":"int_const 1"},"value":"1"},"src":"4786:20:54","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}},"src":"4767:39:54","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}},"id":16020,"nodeType":"ExpressionStatement","src":"4767:39:54"},{"expression":{"id":16029,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"baseExpression":{"id":16021,"name":"_withdrawQueue","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":15725,"src":"4863:14:54","typeDescriptions":{"typeIdentifier":"t_array$_t_uint8_$32_storage","typeString":"uint8[32] storage ref"}},"id":16023,"indexExpression":{"id":16022,"name":"i","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":15892,"src":"4878:1:54","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"nodeType":"IndexAccess","src":"4863:17:54","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"commonType":{"typeIdentifier":"t_uint8","typeString":"uint8"},"id":16028,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"baseExpression":{"id":16024,"name":"withdrawQueue_","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":15843,"src":"4883:14:54","typeDescriptions":{"typeIdentifier":"t_array$_t_uint8_$dyn_memory_ptr","typeString":"uint8[] memory"}},"id":16026,"indexExpression":{"id":16025,"name":"i","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":15892,"src":"4898:1:54","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"4883:17:54","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}},"nodeType":"BinaryOperation","operator":"+","rightExpression":{"hexValue":"31","id":16027,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"4903:1:54","typeDescriptions":{"typeIdentifier":"t_rational_1_by_1","typeString":"int_const 1"},"value":"1"},"src":"4883:21:54","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}},"src":"4863:41:54","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}},"id":16030,"nodeType":"ExpressionStatement","src":"4863:41:54"},{"expression":{"arguments":[{"baseExpression":{"id":16035,"name":"initStrategyDatas","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":15837,"src":"4986:17:54","typeDescriptions":{"typeIdentifier":"t_array$_t_bytes_memory_ptr_$dyn_memory_ptr","typeString":"bytes memory[] memory"}},"id":16037,"indexExpression":{"id":16036,"name":"i","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":15892,"src":"5004:1:54","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"4986:20:54","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}],"expression":{"baseExpression":{"id":16031,"name":"strategies_","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":15834,"src":"4961:11:54","typeDescriptions":{"typeIdentifier":"t_array$_t_contract$_IInvestStrategy_$20725_$dyn_memory_ptr","typeString":"contract IInvestStrategy[] memory"}},"id":16033,"indexExpression":{"id":16032,"name":"i","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":15892,"src":"4973:1:54","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"4961:14:54","typeDescriptions":{"typeIdentifier":"t_contract$_IInvestStrategy_$20725","typeString":"contract IInvestStrategy"}},"id":16034,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"4976:9:54","memberName":"dcConnect","nodeType":"MemberAccess","referencedDeclaration":15334,"src":"4961:24:54","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_contract$_IInvestStrategy_$20725_$_t_bytes_memory_ptr_$returns$__$attached_to$_t_contract$_IInvestStrategy_$20725_$","typeString":"function (contract IInvestStrategy,bytes memory)"}},"id":16038,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"4961:46:54","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":16039,"nodeType":"ExpressionStatement","src":"4961:46:54"},{"eventCall":{"arguments":[{"baseExpression":{"id":16041,"name":"strategies_","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":15834,"src":"5034:11:54","typeDescriptions":{"typeIdentifier":"t_array$_t_contract$_IInvestStrategy_$20725_$dyn_memory_ptr","typeString":"contract IInvestStrategy[] memory"}},"id":16043,"indexExpression":{"id":16042,"name":"i","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":15892,"src":"5046:1:54","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"5034:14:54","typeDescriptions":{"typeIdentifier":"t_contract$_IInvestStrategy_$20725","typeString":"contract IInvestStrategy"}},{"arguments":[{"id":16046,"name":"i","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":15892,"src":"5056:1:54","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":16045,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"5050:5:54","typeDescriptions":{"typeIdentifier":"t_type$_t_uint8_$","typeString":"type(uint8)"},"typeName":{"id":16044,"name":"uint8","nodeType":"ElementaryTypeName","src":"5050:5:54","typeDescriptions":{}}},"id":16047,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"5050:8:54","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_contract$_IInvestStrategy_$20725","typeString":"contract IInvestStrategy"},{"typeIdentifier":"t_uint8","typeString":"uint8"}],"id":16040,"name":"StrategyAdded","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":15757,"src":"5020:13:54","typeDescriptions":{"typeIdentifier":"t_function_event_nonpayable$_t_contract$_IInvestStrategy_$20725_$_t_uint8_$returns$__$","typeString":"function (contract IInvestStrategy,uint8)"}},"id":16048,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"5020:39:54","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":16049,"nodeType":"EmitStatement","src":"5015:44:54"}]},"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":15897,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":15894,"name":"i","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":15892,"src":"3899:1:54","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"<","rightExpression":{"expression":{"id":15895,"name":"strategies_","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":15834,"src":"3903:11:54","typeDescriptions":{"typeIdentifier":"t_array$_t_contract$_IInvestStrategy_$20725_$dyn_memory_ptr","typeString":"contract IInvestStrategy[] memory"}},"id":15896,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"3915:6:54","memberName":"length","nodeType":"MemberAccess","src":"3903:18:54","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"3899:22:54","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":16051,"initializationExpression":{"assignments":[15892],"declarations":[{"constant":false,"id":15892,"mutability":"mutable","name":"i","nameLocation":"3896:1:54","nodeType":"VariableDeclaration","scope":16051,"src":"3888:9:54","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":15891,"name":"uint256","nodeType":"ElementaryTypeName","src":"3888:7:54","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":15893,"nodeType":"VariableDeclarationStatement","src":"3888:9:54"},"isSimpleCounterLoop":true,"loopExpression":{"expression":{"id":15899,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"UnaryOperation","operator":"++","prefix":true,"src":"3923:3:54","subExpression":{"id":15898,"name":"i","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":15892,"src":"3925:1:54","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":15900,"nodeType":"ExpressionStatement","src":"3923:3:54"},"nodeType":"ForStatement","src":"3883:1183:54"},{"eventCall":{"arguments":[{"id":16053,"name":"depositQueue_","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":15840,"src":"5096:13:54","typeDescriptions":{"typeIdentifier":"t_array$_t_uint8_$dyn_memory_ptr","typeString":"uint8[] memory"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_array$_t_uint8_$dyn_memory_ptr","typeString":"uint8[] memory"}],"id":16052,"name":"DepositQueueChanged","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":15769,"src":"5076:19:54","typeDescriptions":{"typeIdentifier":"t_function_event_nonpayable$_t_array$_t_uint8_$dyn_memory_ptr_$returns$__$","typeString":"function (uint8[] memory)"}},"id":16054,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"5076:34:54","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":16055,"nodeType":"EmitStatement","src":"5071:39:54"},{"eventCall":{"arguments":[{"id":16057,"name":"withdrawQueue_","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":15843,"src":"5142:14:54","typeDescriptions":{"typeIdentifier":"t_array$_t_uint8_$dyn_memory_ptr","typeString":"uint8[] memory"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_array$_t_uint8_$dyn_memory_ptr","typeString":"uint8[] memory"}],"id":16056,"name":"WithdrawQueueChanged","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":15774,"src":"5121:20:54","typeDescriptions":{"typeIdentifier":"t_function_event_nonpayable$_t_array$_t_uint8_$dyn_memory_ptr_$returns$__$","typeString":"function (uint8[] memory)"}},"id":16058,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"5121:36:54","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":16059,"nodeType":"EmitStatement","src":"5116:41:54"}]},"id":16061,"implemented":true,"kind":"function","modifiers":[],"name":"__MSVBase_init_unchained","nameLocation":"3304:24:54","nodeType":"FunctionDefinition","parameters":{"id":15844,"nodeType":"ParameterList","parameters":[{"constant":false,"id":15834,"mutability":"mutable","name":"strategies_","nameLocation":"3359:11:54","nodeType":"VariableDeclaration","scope":16061,"src":"3334:36:54","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_array$_t_contract$_IInvestStrategy_$20725_$dyn_memory_ptr","typeString":"contract IInvestStrategy[]"},"typeName":{"baseType":{"id":15832,"nodeType":"UserDefinedTypeName","pathNode":{"id":15831,"name":"IInvestStrategy","nameLocations":["3334:15:54"],"nodeType":"IdentifierPath","referencedDeclaration":20725,"src":"3334:15:54"},"referencedDeclaration":20725,"src":"3334:15:54","typeDescriptions":{"typeIdentifier":"t_contract$_IInvestStrategy_$20725","typeString":"contract IInvestStrategy"}},"id":15833,"nodeType":"ArrayTypeName","src":"3334:17:54","typeDescriptions":{"typeIdentifier":"t_array$_t_contract$_IInvestStrategy_$20725_$dyn_storage_ptr","typeString":"contract IInvestStrategy[]"}},"visibility":"internal"},{"constant":false,"id":15837,"mutability":"mutable","name":"initStrategyDatas","nameLocation":"3391:17:54","nodeType":"VariableDeclaration","scope":16061,"src":"3376:32:54","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_array$_t_bytes_memory_ptr_$dyn_memory_ptr","typeString":"bytes[]"},"typeName":{"baseType":{"id":15835,"name":"bytes","nodeType":"ElementaryTypeName","src":"3376:5:54","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"id":15836,"nodeType":"ArrayTypeName","src":"3376:7:54","typeDescriptions":{"typeIdentifier":"t_array$_t_bytes_storage_$dyn_storage_ptr","typeString":"bytes[]"}},"visibility":"internal"},{"constant":false,"id":15840,"mutability":"mutable","name":"depositQueue_","nameLocation":"3429:13:54","nodeType":"VariableDeclaration","scope":16061,"src":"3414:28:54","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_array$_t_uint8_$dyn_memory_ptr","typeString":"uint8[]"},"typeName":{"baseType":{"id":15838,"name":"uint8","nodeType":"ElementaryTypeName","src":"3414:5:54","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}},"id":15839,"nodeType":"ArrayTypeName","src":"3414:7:54","typeDescriptions":{"typeIdentifier":"t_array$_t_uint8_$dyn_storage_ptr","typeString":"uint8[]"}},"visibility":"internal"},{"constant":false,"id":15843,"mutability":"mutable","name":"withdrawQueue_","nameLocation":"3463:14:54","nodeType":"VariableDeclaration","scope":16061,"src":"3448:29:54","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_array$_t_uint8_$dyn_memory_ptr","typeString":"uint8[]"},"typeName":{"baseType":{"id":15841,"name":"uint8","nodeType":"ElementaryTypeName","src":"3448:5:54","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}},"id":15842,"nodeType":"ArrayTypeName","src":"3448:7:54","typeDescriptions":{"typeIdentifier":"t_array$_t_uint8_$dyn_storage_ptr","typeString":"uint8[]"}},"visibility":"internal"}],"src":"3328:153:54"},"returnParameters":{"id":15845,"nodeType":"ParameterList","parameters":[],"src":"3491:0:54"},"scope":17366,"src":"3295:1867:54","stateMutability":"nonpayable","virtual":false,"visibility":"internal"},{"body":{"id":16119,"nodeType":"Block","src":"5243:263:54","statements":[{"assignments":[16069],"declarations":[{"constant":false,"id":16069,"mutability":"mutable","name":"addSuccess","nameLocation":"5254:10:54","nodeType":"VariableDeclaration","scope":16119,"src":"5249:15:54","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":16068,"name":"bool","nodeType":"ElementaryTypeName","src":"5249:4:54","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"}],"id":16070,"nodeType":"VariableDeclarationStatement","src":"5249:15:54"},{"body":{"id":16115,"nodeType":"Block","src":"5352:134:54","statements":[{"expression":{"id":16104,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"components":[{"id":16092,"name":"addSuccess","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":16069,"src":"5361:10:54","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},{"id":16093,"name":"ret","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":16066,"src":"5373:3:54","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"id":16094,"isConstant":false,"isInlineArray":false,"isLValue":true,"isPure":false,"lValueRequested":true,"nodeType":"TupleExpression","src":"5360:17:54","typeDescriptions":{"typeIdentifier":"t_tuple$_t_bool_$_t_uint256_$","typeString":"tuple(bool,uint256)"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"arguments":[{"id":16097,"name":"ret","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":16066,"src":"5392:3:54","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"arguments":[],"expression":{"argumentTypes":[],"expression":{"baseExpression":{"id":16098,"name":"_strategies","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":15730,"src":"5397:11:54","typeDescriptions":{"typeIdentifier":"t_array$_t_contract$_IInvestStrategy_$20725_$32_storage","typeString":"contract IInvestStrategy[32] storage ref"}},"id":16100,"indexExpression":{"id":16099,"name":"i","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":16072,"src":"5409:1:54","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"5397:14:54","typeDescriptions":{"typeIdentifier":"t_contract$_IInvestStrategy_$20725","typeString":"contract IInvestStrategy"}},"id":16101,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"5412:11:54","memberName":"maxWithdraw","nodeType":"MemberAccess","referencedDeclaration":15692,"src":"5397:26:54","typeDescriptions":{"typeIdentifier":"t_function_internal_view$_t_contract$_IInvestStrategy_$20725_$returns$_t_uint256_$attached_to$_t_contract$_IInvestStrategy_$20725_$","typeString":"function (contract IInvestStrategy) view returns (uint256)"}},"id":16102,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"5397:28:54","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"expression":{"id":16095,"name":"Math","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":12726,"src":"5380:4:54","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_Math_$12726_$","typeString":"type(library Math)"}},"id":16096,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"5385:6:54","memberName":"tryAdd","nodeType":"MemberAccess","referencedDeclaration":11159,"src":"5380:11:54","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_uint256_$_t_uint256_$returns$_t_bool_$_t_uint256_$","typeString":"function (uint256,uint256) pure returns (bool,uint256)"}},"id":16103,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"5380:46:54","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$_t_bool_$_t_uint256_$","typeString":"tuple(bool,uint256)"}},"src":"5360:66:54","typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":16105,"nodeType":"ExpressionStatement","src":"5360:66:54"},{"condition":{"commonType":{"typeIdentifier":"t_bool","typeString":"bool"},"id":16111,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":16107,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"UnaryOperation","operator":"!","prefix":true,"src":"5438:11:54","subExpression":{"id":16106,"name":"addSuccess","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":16069,"src":"5439:10:54","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"nodeType":"BinaryOperation","operator":"||","rightExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":16110,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":16108,"name":"ret","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":16066,"src":"5453:3:54","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">=","rightExpression":{"id":16109,"name":"limit","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":16063,"src":"5460:5:54","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"5453:12:54","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"src":"5438:27:54","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":16114,"nodeType":"IfStatement","src":"5434:45:54","trueBody":{"expression":{"id":16112,"name":"limit","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":16063,"src":"5474:5:54","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"functionReturnParameters":16067,"id":16113,"nodeType":"Return","src":"5467:12:54"}}]},"condition":{"commonType":{"typeIdentifier":"t_bool","typeString":"bool"},"id":16088,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"commonType":{"typeIdentifier":"t_address","typeString":"address"},"id":16084,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"arguments":[{"baseExpression":{"id":16076,"name":"_strategies","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":15730,"src":"5294:11:54","typeDescriptions":{"typeIdentifier":"t_array$_t_contract$_IInvestStrategy_$20725_$32_storage","typeString":"contract IInvestStrategy[32] storage ref"}},"id":16078,"indexExpression":{"id":16077,"name":"i","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":16072,"src":"5306:1:54","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"5294:14:54","typeDescriptions":{"typeIdentifier":"t_contract$_IInvestStrategy_$20725","typeString":"contract IInvestStrategy"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_contract$_IInvestStrategy_$20725","typeString":"contract IInvestStrategy"}],"id":16075,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"5286:7:54","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":16074,"name":"address","nodeType":"ElementaryTypeName","src":"5286:7:54","typeDescriptions":{}}},"id":16079,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"5286:23:54","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"BinaryOperation","operator":"!=","rightExpression":{"arguments":[{"hexValue":"30","id":16082,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"5321: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":16081,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"5313:7:54","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":16080,"name":"address","nodeType":"ElementaryTypeName","src":"5313:7:54","typeDescriptions":{}}},"id":16083,"isConstant":false,"isLValue":false,"isPure":true,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"5313:10:54","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"src":"5286:37:54","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"nodeType":"BinaryOperation","operator":"&&","rightExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":16087,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":16085,"name":"i","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":16072,"src":"5327:1:54","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"<","rightExpression":{"id":16086,"name":"MAX_STRATEGIES","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":15717,"src":"5331:14:54","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}},"src":"5327:18:54","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"src":"5286:59:54","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":16116,"initializationExpression":{"assignments":[16072],"declarations":[{"constant":false,"id":16072,"mutability":"mutable","name":"i","nameLocation":"5283:1:54","nodeType":"VariableDeclaration","scope":16116,"src":"5275:9:54","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":16071,"name":"uint256","nodeType":"ElementaryTypeName","src":"5275:7:54","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":16073,"nodeType":"VariableDeclarationStatement","src":"5275:9:54"},"isSimpleCounterLoop":false,"loopExpression":{"expression":{"id":16090,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"UnaryOperation","operator":"++","prefix":true,"src":"5347:3:54","subExpression":{"id":16089,"name":"i","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":16072,"src":"5349:1:54","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":16091,"nodeType":"ExpressionStatement","src":"5347:3:54"},"nodeType":"ForStatement","src":"5270:216:54"},{"expression":{"id":16117,"name":"ret","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":16066,"src":"5498:3:54","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"functionReturnParameters":16067,"id":16118,"nodeType":"Return","src":"5491:10:54"}]},"id":16120,"implemented":true,"kind":"function","modifiers":[],"name":"_maxWithdrawable","nameLocation":"5175:16:54","nodeType":"FunctionDefinition","parameters":{"id":16064,"nodeType":"ParameterList","parameters":[{"constant":false,"id":16063,"mutability":"mutable","name":"limit","nameLocation":"5200:5:54","nodeType":"VariableDeclaration","scope":16120,"src":"5192:13:54","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":16062,"name":"uint256","nodeType":"ElementaryTypeName","src":"5192:7:54","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"5191:15:54"},"returnParameters":{"id":16067,"nodeType":"ParameterList","parameters":[{"constant":false,"id":16066,"mutability":"mutable","name":"ret","nameLocation":"5238:3:54","nodeType":"VariableDeclaration","scope":16120,"src":"5230:11:54","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":16065,"name":"uint256","nodeType":"ElementaryTypeName","src":"5230:7:54","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"5229:13:54"},"scope":17366,"src":"5166:340:54","stateMutability":"view","virtual":false,"visibility":"internal"},{"body":{"id":16177,"nodeType":"Block","src":"5741:258:54","statements":[{"assignments":[16127],"declarations":[{"constant":false,"id":16127,"mutability":"mutable","name":"addSuccess","nameLocation":"5752:10:54","nodeType":"VariableDeclaration","scope":16177,"src":"5747:15:54","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":16126,"name":"bool","nodeType":"ElementaryTypeName","src":"5747:4:54","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"}],"id":16128,"nodeType":"VariableDeclarationStatement","src":"5747:15:54"},{"body":{"id":16173,"nodeType":"Block","src":"5850:129:54","statements":[{"expression":{"id":16162,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"components":[{"id":16150,"name":"addSuccess","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":16127,"src":"5859:10:54","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},{"id":16151,"name":"ret","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":16124,"src":"5871:3:54","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"id":16152,"isConstant":false,"isInlineArray":false,"isLValue":true,"isPure":false,"lValueRequested":true,"nodeType":"TupleExpression","src":"5858:17:54","typeDescriptions":{"typeIdentifier":"t_tuple$_t_bool_$_t_uint256_$","typeString":"tuple(bool,uint256)"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"arguments":[{"id":16155,"name":"ret","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":16124,"src":"5890:3:54","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"arguments":[],"expression":{"argumentTypes":[],"expression":{"baseExpression":{"id":16156,"name":"_strategies","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":15730,"src":"5895:11:54","typeDescriptions":{"typeIdentifier":"t_array$_t_contract$_IInvestStrategy_$20725_$32_storage","typeString":"contract IInvestStrategy[32] storage ref"}},"id":16158,"indexExpression":{"id":16157,"name":"i","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":16130,"src":"5907:1:54","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"5895:14:54","typeDescriptions":{"typeIdentifier":"t_contract$_IInvestStrategy_$20725","typeString":"contract IInvestStrategy"}},"id":16159,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"5910:10:54","memberName":"maxDeposit","nodeType":"MemberAccess","referencedDeclaration":15674,"src":"5895:25:54","typeDescriptions":{"typeIdentifier":"t_function_internal_view$_t_contract$_IInvestStrategy_$20725_$returns$_t_uint256_$attached_to$_t_contract$_IInvestStrategy_$20725_$","typeString":"function (contract IInvestStrategy) view returns (uint256)"}},"id":16160,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"5895:27:54","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"expression":{"id":16153,"name":"Math","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":12726,"src":"5878:4:54","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_Math_$12726_$","typeString":"type(library Math)"}},"id":16154,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"5883:6:54","memberName":"tryAdd","nodeType":"MemberAccess","referencedDeclaration":11159,"src":"5878:11:54","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_uint256_$_t_uint256_$returns$_t_bool_$_t_uint256_$","typeString":"function (uint256,uint256) pure returns (bool,uint256)"}},"id":16161,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"5878:45:54","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$_t_bool_$_t_uint256_$","typeString":"tuple(bool,uint256)"}},"src":"5858:65:54","typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":16163,"nodeType":"ExpressionStatement","src":"5858:65:54"},{"condition":{"id":16165,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"UnaryOperation","operator":"!","prefix":true,"src":"5935:11:54","subExpression":{"id":16164,"name":"addSuccess","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":16127,"src":"5936:10:54","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":16172,"nodeType":"IfStatement","src":"5931:41:54","trueBody":{"expression":{"expression":{"arguments":[{"id":16168,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"5960:7:54","typeDescriptions":{"typeIdentifier":"t_type$_t_uint256_$","typeString":"type(uint256)"},"typeName":{"id":16167,"name":"uint256","nodeType":"ElementaryTypeName","src":"5960:7:54","typeDescriptions":{}}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_type$_t_uint256_$","typeString":"type(uint256)"}],"id":16166,"name":"type","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-27,"src":"5955:4:54","typeDescriptions":{"typeIdentifier":"t_function_metatype_pure$__$returns$__$","typeString":"function () pure"}},"id":16169,"isConstant":false,"isLValue":false,"isPure":true,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"5955:13:54","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_magic_meta_type_t_uint256","typeString":"type(uint256)"}},"id":16170,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberLocation":"5969:3:54","memberName":"max","nodeType":"MemberAccess","src":"5955:17:54","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"functionReturnParameters":16125,"id":16171,"nodeType":"Return","src":"5948:24:54"}}]},"condition":{"commonType":{"typeIdentifier":"t_bool","typeString":"bool"},"id":16146,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"commonType":{"typeIdentifier":"t_address","typeString":"address"},"id":16142,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"arguments":[{"baseExpression":{"id":16134,"name":"_strategies","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":15730,"src":"5792:11:54","typeDescriptions":{"typeIdentifier":"t_array$_t_contract$_IInvestStrategy_$20725_$32_storage","typeString":"contract IInvestStrategy[32] storage ref"}},"id":16136,"indexExpression":{"id":16135,"name":"i","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":16130,"src":"5804:1:54","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"5792:14:54","typeDescriptions":{"typeIdentifier":"t_contract$_IInvestStrategy_$20725","typeString":"contract IInvestStrategy"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_contract$_IInvestStrategy_$20725","typeString":"contract IInvestStrategy"}],"id":16133,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"5784:7:54","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":16132,"name":"address","nodeType":"ElementaryTypeName","src":"5784:7:54","typeDescriptions":{}}},"id":16137,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"5784:23:54","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"BinaryOperation","operator":"!=","rightExpression":{"arguments":[{"hexValue":"30","id":16140,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"5819: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":16139,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"5811:7:54","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":16138,"name":"address","nodeType":"ElementaryTypeName","src":"5811:7:54","typeDescriptions":{}}},"id":16141,"isConstant":false,"isLValue":false,"isPure":true,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"5811:10:54","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"src":"5784:37:54","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"nodeType":"BinaryOperation","operator":"&&","rightExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":16145,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":16143,"name":"i","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":16130,"src":"5825:1:54","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"<","rightExpression":{"id":16144,"name":"MAX_STRATEGIES","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":15717,"src":"5829:14:54","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}},"src":"5825:18:54","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"src":"5784:59:54","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":16174,"initializationExpression":{"assignments":[16130],"declarations":[{"constant":false,"id":16130,"mutability":"mutable","name":"i","nameLocation":"5781:1:54","nodeType":"VariableDeclaration","scope":16174,"src":"5773:9:54","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":16129,"name":"uint256","nodeType":"ElementaryTypeName","src":"5773:7:54","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":16131,"nodeType":"VariableDeclarationStatement","src":"5773:9:54"},"isSimpleCounterLoop":false,"loopExpression":{"expression":{"id":16148,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"UnaryOperation","operator":"++","prefix":true,"src":"5845:3:54","subExpression":{"id":16147,"name":"i","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":16130,"src":"5847:1:54","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":16149,"nodeType":"ExpressionStatement","src":"5845:3:54"},"nodeType":"ForStatement","src":"5768:211:54"},{"expression":{"id":16175,"name":"ret","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":16124,"src":"5991:3:54","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"functionReturnParameters":16125,"id":16176,"nodeType":"Return","src":"5984:10:54"}]},"documentation":{"id":16121,"nodeType":"StructuredDocumentation","src":"5510:165:54","text":" @dev For each strategy in the deposit queue, calculates the max deposit and sum it up to finally return the\n      total assets could be deposited."},"id":16178,"implemented":true,"kind":"function","modifiers":[],"name":"_maxDepositable","nameLocation":"5687:15:54","nodeType":"FunctionDefinition","parameters":{"id":16122,"nodeType":"ParameterList","parameters":[],"src":"5702:2:54"},"returnParameters":{"id":16125,"nodeType":"ParameterList","parameters":[{"constant":false,"id":16124,"mutability":"mutable","name":"ret","nameLocation":"5736:3:54","nodeType":"VariableDeclaration","scope":16178,"src":"5728:11:54","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":16123,"name":"uint256","nodeType":"ElementaryTypeName","src":"5728:7:54","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"5727:13:54"},"scope":17366,"src":"5678:321:54","stateMutability":"view","virtual":false,"visibility":"internal"},{"body":{"id":16215,"nodeType":"Block","src":"6171:145:54","statements":[{"body":{"id":16213,"nodeType":"Block","src":"6259:53:54","statements":[{"expression":{"id":16211,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":16205,"name":"assets","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":16182,"src":"6267:6:54","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"+=","rightHandSide":{"arguments":[],"expression":{"argumentTypes":[],"expression":{"baseExpression":{"id":16206,"name":"_strategies","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":15730,"src":"6277:11:54","typeDescriptions":{"typeIdentifier":"t_array$_t_contract$_IInvestStrategy_$20725_$32_storage","typeString":"contract IInvestStrategy[32] storage ref"}},"id":16208,"indexExpression":{"id":16207,"name":"i","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":16185,"src":"6289:1:54","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"6277:14:54","typeDescriptions":{"typeIdentifier":"t_contract$_IInvestStrategy_$20725","typeString":"contract IInvestStrategy"}},"id":16209,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"6292:11:54","memberName":"totalAssets","nodeType":"MemberAccess","referencedDeclaration":15656,"src":"6277:26:54","typeDescriptions":{"typeIdentifier":"t_function_internal_view$_t_contract$_IInvestStrategy_$20725_$returns$_t_uint256_$attached_to$_t_contract$_IInvestStrategy_$20725_$","typeString":"function (contract IInvestStrategy) view returns (uint256)"}},"id":16210,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"6277:28:54","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"6267:38:54","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":16212,"nodeType":"ExpressionStatement","src":"6267:38:54"}]},"condition":{"commonType":{"typeIdentifier":"t_bool","typeString":"bool"},"id":16201,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"commonType":{"typeIdentifier":"t_address","typeString":"address"},"id":16197,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"arguments":[{"baseExpression":{"id":16189,"name":"_strategies","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":15730,"src":"6201:11:54","typeDescriptions":{"typeIdentifier":"t_array$_t_contract$_IInvestStrategy_$20725_$32_storage","typeString":"contract IInvestStrategy[32] storage ref"}},"id":16191,"indexExpression":{"id":16190,"name":"i","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":16185,"src":"6213:1:54","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"6201:14:54","typeDescriptions":{"typeIdentifier":"t_contract$_IInvestStrategy_$20725","typeString":"contract IInvestStrategy"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_contract$_IInvestStrategy_$20725","typeString":"contract IInvestStrategy"}],"id":16188,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"6193:7:54","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":16187,"name":"address","nodeType":"ElementaryTypeName","src":"6193:7:54","typeDescriptions":{}}},"id":16192,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"6193:23:54","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"BinaryOperation","operator":"!=","rightExpression":{"arguments":[{"hexValue":"30","id":16195,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"6228: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":16194,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"6220:7:54","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":16193,"name":"address","nodeType":"ElementaryTypeName","src":"6220:7:54","typeDescriptions":{}}},"id":16196,"isConstant":false,"isLValue":false,"isPure":true,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"6220:10:54","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"src":"6193:37:54","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"nodeType":"BinaryOperation","operator":"&&","rightExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":16200,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":16198,"name":"i","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":16185,"src":"6234:1:54","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"<","rightExpression":{"id":16199,"name":"MAX_STRATEGIES","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":15717,"src":"6238:14:54","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}},"src":"6234:18:54","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"src":"6193:59:54","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":16214,"initializationExpression":{"assignments":[16185],"declarations":[{"constant":false,"id":16185,"mutability":"mutable","name":"i","nameLocation":"6190:1:54","nodeType":"VariableDeclaration","scope":16214,"src":"6182:9:54","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":16184,"name":"uint256","nodeType":"ElementaryTypeName","src":"6182:7:54","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":16186,"nodeType":"VariableDeclarationStatement","src":"6182:9:54"},"isSimpleCounterLoop":false,"loopExpression":{"expression":{"id":16203,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"UnaryOperation","operator":"++","prefix":true,"src":"6254:3:54","subExpression":{"id":16202,"name":"i","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":16185,"src":"6256:1:54","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":16204,"nodeType":"ExpressionStatement","src":"6254:3:54"},"nodeType":"ForStatement","src":"6177:135:54"}]},"documentation":{"id":16179,"nodeType":"StructuredDocumentation","src":"6003:102:54","text":" @dev Sum up the total assets of each strategy in the vault and returns the total value."},"id":16216,"implemented":true,"kind":"function","modifiers":[],"name":"_totalAssets","nameLocation":"6117:12:54","nodeType":"FunctionDefinition","parameters":{"id":16180,"nodeType":"ParameterList","parameters":[],"src":"6129:2:54"},"returnParameters":{"id":16183,"nodeType":"ParameterList","parameters":[{"constant":false,"id":16182,"mutability":"mutable","name":"assets","nameLocation":"6163:6:54","nodeType":"VariableDeclaration","scope":16216,"src":"6155:14:54","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":16181,"name":"uint256","nodeType":"ElementaryTypeName","src":"6155:7:54","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"6154:16:54"},"scope":17366,"src":"6108:208:54","stateMutability":"view","virtual":false,"visibility":"internal"},{"body":{"id":16291,"nodeType":"Block","src":"6687:481:54","statements":[{"assignments":[16223],"declarations":[{"constant":false,"id":16223,"mutability":"mutable","name":"left","nameLocation":"6701:4:54","nodeType":"VariableDeclaration","scope":16291,"src":"6693:12:54","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":16222,"name":"uint256","nodeType":"ElementaryTypeName","src":"6693:7:54","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":16225,"initialValue":{"id":16224,"name":"assets","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":16219,"src":"6708:6:54","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"VariableDeclarationStatement","src":"6693:21:54"},{"body":{"id":16282,"nodeType":"Block","src":"6800:252:54","statements":[{"assignments":[16247],"declarations":[{"constant":false,"id":16247,"mutability":"mutable","name":"strategy","nameLocation":"6824:8:54","nodeType":"VariableDeclaration","scope":16282,"src":"6808:24:54","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_contract$_IInvestStrategy_$20725","typeString":"contract IInvestStrategy"},"typeName":{"id":16246,"nodeType":"UserDefinedTypeName","pathNode":{"id":16245,"name":"IInvestStrategy","nameLocations":["6808:15:54"],"nodeType":"IdentifierPath","referencedDeclaration":20725,"src":"6808:15:54"},"referencedDeclaration":20725,"src":"6808:15:54","typeDescriptions":{"typeIdentifier":"t_contract$_IInvestStrategy_$20725","typeString":"contract IInvestStrategy"}},"visibility":"internal"}],"id":16255,"initialValue":{"baseExpression":{"id":16248,"name":"_strategies","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":15730,"src":"6835:11:54","typeDescriptions":{"typeIdentifier":"t_array$_t_contract$_IInvestStrategy_$20725_$32_storage","typeString":"contract IInvestStrategy[32] storage ref"}},"id":16254,"indexExpression":{"commonType":{"typeIdentifier":"t_uint8","typeString":"uint8"},"id":16253,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"baseExpression":{"id":16249,"name":"_withdrawQueue","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":15725,"src":"6847:14:54","typeDescriptions":{"typeIdentifier":"t_array$_t_uint8_$32_storage","typeString":"uint8[32] storage ref"}},"id":16251,"indexExpression":{"id":16250,"name":"i","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":16227,"src":"6862:1:54","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"6847:17:54","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}},"nodeType":"BinaryOperation","operator":"-","rightExpression":{"hexValue":"31","id":16252,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"6867:1:54","typeDescriptions":{"typeIdentifier":"t_rational_1_by_1","typeString":"int_const 1"},"value":"1"},"src":"6847:21:54","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"6835:34:54","typeDescriptions":{"typeIdentifier":"t_contract$_IInvestStrategy_$20725","typeString":"contract IInvestStrategy"}},"nodeType":"VariableDeclarationStatement","src":"6808:61:54"},{"assignments":[16257],"declarations":[{"constant":false,"id":16257,"mutability":"mutable","name":"toWithdraw","nameLocation":"6885:10:54","nodeType":"VariableDeclaration","scope":16282,"src":"6877:18:54","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":16256,"name":"uint256","nodeType":"ElementaryTypeName","src":"6877:7:54","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":16265,"initialValue":{"arguments":[{"id":16260,"name":"left","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":16223,"src":"6907:4:54","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"arguments":[],"expression":{"argumentTypes":[],"expression":{"id":16261,"name":"strategy","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":16247,"src":"6913:8:54","typeDescriptions":{"typeIdentifier":"t_contract$_IInvestStrategy_$20725","typeString":"contract IInvestStrategy"}},"id":16262,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"6922:11:54","memberName":"maxWithdraw","nodeType":"MemberAccess","referencedDeclaration":15692,"src":"6913:20:54","typeDescriptions":{"typeIdentifier":"t_function_internal_view$_t_contract$_IInvestStrategy_$20725_$returns$_t_uint256_$attached_to$_t_contract$_IInvestStrategy_$20725_$","typeString":"function (contract IInvestStrategy) view returns (uint256)"}},"id":16263,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"6913:22:54","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"expression":{"id":16258,"name":"Math","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":12726,"src":"6898:4:54","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_Math_$12726_$","typeString":"type(library Math)"}},"id":16259,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"6903:3:54","memberName":"min","nodeType":"MemberAccess","referencedDeclaration":11411,"src":"6898:8:54","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_uint256_$_t_uint256_$returns$_t_uint256_$","typeString":"function (uint256,uint256) pure returns (uint256)"}},"id":16264,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"6898:38:54","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"VariableDeclarationStatement","src":"6877:59:54"},{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":16268,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":16266,"name":"toWithdraw","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":16257,"src":"6948:10:54","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"hexValue":"30","id":16267,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"6962:1:54","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"6948:15:54","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":16270,"nodeType":"IfStatement","src":"6944:29:54","trueBody":{"id":16269,"nodeType":"Continue","src":"6965:8:54"}},{"expression":{"arguments":[{"id":16274,"name":"toWithdraw","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":16257,"src":"7001:10:54","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"hexValue":"66616c7365","id":16275,"isConstant":false,"isLValue":false,"isPure":true,"kind":"bool","lValueRequested":false,"nodeType":"Literal","src":"7013:5:54","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"value":"false"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_bool","typeString":"bool"}],"expression":{"id":16271,"name":"strategy","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":16247,"src":"6981:8:54","typeDescriptions":{"typeIdentifier":"t_contract$_IInvestStrategy_$20725","typeString":"contract IInvestStrategy"}},"id":16273,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"6990:10:54","memberName":"dcWithdraw","nodeType":"MemberAccess","referencedDeclaration":15444,"src":"6981:19:54","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_contract$_IInvestStrategy_$20725_$_t_uint256_$_t_bool_$returns$_t_bool_$attached_to$_t_contract$_IInvestStrategy_$20725_$","typeString":"function (contract IInvestStrategy,uint256,bool) returns (bool)"}},"id":16276,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"6981:38:54","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":16277,"nodeType":"ExpressionStatement","src":"6981:38:54"},{"expression":{"id":16280,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":16278,"name":"left","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":16223,"src":"7027:4:54","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"-=","rightHandSide":{"id":16279,"name":"toWithdraw","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":16257,"src":"7035:10:54","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"7027:18:54","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":16281,"nodeType":"ExpressionStatement","src":"7027:18:54"}]},"condition":{"commonType":{"typeIdentifier":"t_bool","typeString":"bool"},"id":16241,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"commonType":{"typeIdentifier":"t_bool","typeString":"bool"},"id":16237,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":16231,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":16229,"name":"left","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":16223,"src":"6736:4:54","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"!=","rightExpression":{"hexValue":"30","id":16230,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"6744:1:54","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"6736:9:54","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"nodeType":"BinaryOperation","operator":"&&","rightExpression":{"commonType":{"typeIdentifier":"t_uint8","typeString":"uint8"},"id":16236,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"baseExpression":{"id":16232,"name":"_withdrawQueue","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":15725,"src":"6749:14:54","typeDescriptions":{"typeIdentifier":"t_array$_t_uint8_$32_storage","typeString":"uint8[32] storage ref"}},"id":16234,"indexExpression":{"id":16233,"name":"i","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":16227,"src":"6764:1:54","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"6749:17:54","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}},"nodeType":"BinaryOperation","operator":"!=","rightExpression":{"hexValue":"30","id":16235,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"6770:1:54","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"6749:22:54","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"src":"6736:35:54","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"nodeType":"BinaryOperation","operator":"&&","rightExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":16240,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":16238,"name":"i","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":16227,"src":"6775:1:54","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"<","rightExpression":{"id":16239,"name":"MAX_STRATEGIES","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":15717,"src":"6779:14:54","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}},"src":"6775:18:54","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"src":"6736:57:54","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":16283,"initializationExpression":{"assignments":[16227],"declarations":[{"constant":false,"id":16227,"mutability":"mutable","name":"i","nameLocation":"6733:1:54","nodeType":"VariableDeclaration","scope":16283,"src":"6725:9:54","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":16226,"name":"uint256","nodeType":"ElementaryTypeName","src":"6725:7:54","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":16228,"nodeType":"VariableDeclarationStatement","src":"6725:9:54"},"isSimpleCounterLoop":false,"loopExpression":{"expression":{"id":16243,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"UnaryOperation","operator":"++","prefix":true,"src":"6795:3:54","subExpression":{"id":16242,"name":"i","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":16227,"src":"6797:1:54","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":16244,"nodeType":"ExpressionStatement","src":"6795:3:54"},"nodeType":"ForStatement","src":"6720:332:54"},{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":16286,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":16284,"name":"left","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":16223,"src":"7061:4:54","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"!=","rightExpression":{"hexValue":"30","id":16285,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"7069:1:54","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"7061:9:54","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":16290,"nodeType":"IfStatement","src":"7057:37:54","trueBody":{"errorCall":{"arguments":[],"expression":{"argumentTypes":[],"id":16287,"name":"WithdrawError","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":15803,"src":"7079:13:54","typeDescriptions":{"typeIdentifier":"t_function_error_pure$__$returns$_t_error_$","typeString":"function () pure returns (error)"}},"id":16288,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"7079:15:54","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_error","typeString":"error"}},"id":16289,"nodeType":"RevertStatement","src":"7072:22:54"}}]},"documentation":{"id":16217,"nodeType":"StructuredDocumentation","src":"6320:306:54","text":" @dev Withdraw assets from the strategies in the withdraw queue order until zero assets remains to be withdrawn.\n      After finishing the withdraw, left must be zero, otherwise reverts, and should never happen.\n @param assets The amount of assets to be withdrawn from the strategies."},"id":16292,"implemented":true,"kind":"function","modifiers":[],"name":"_withdrawFromStrategies","nameLocation":"6638:23:54","nodeType":"FunctionDefinition","parameters":{"id":16220,"nodeType":"ParameterList","parameters":[{"constant":false,"id":16219,"mutability":"mutable","name":"assets","nameLocation":"6670:6:54","nodeType":"VariableDeclaration","scope":16292,"src":"6662:14:54","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":16218,"name":"uint256","nodeType":"ElementaryTypeName","src":"6662:7:54","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"6661:16:54"},"returnParameters":{"id":16221,"nodeType":"ParameterList","parameters":[],"src":"6687:0:54"},"scope":17366,"src":"6629:539:54","stateMutability":"nonpayable","virtual":false,"visibility":"internal"},{"body":{"id":16367,"nodeType":"Block","src":"7529:540:54","statements":[{"assignments":[16299],"declarations":[{"constant":false,"id":16299,"mutability":"mutable","name":"left","nameLocation":"7612:4:54","nodeType":"VariableDeclaration","scope":16367,"src":"7604:12:54","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":16298,"name":"uint256","nodeType":"ElementaryTypeName","src":"7604:7:54","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":16301,"initialValue":{"id":16300,"name":"assets","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":16295,"src":"7619:6:54","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"VariableDeclarationStatement","src":"7604:21:54"},{"body":{"id":16358,"nodeType":"Block","src":"7710:245:54","statements":[{"assignments":[16323],"declarations":[{"constant":false,"id":16323,"mutability":"mutable","name":"strategy","nameLocation":"7734:8:54","nodeType":"VariableDeclaration","scope":16358,"src":"7718:24:54","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_contract$_IInvestStrategy_$20725","typeString":"contract IInvestStrategy"},"typeName":{"id":16322,"nodeType":"UserDefinedTypeName","pathNode":{"id":16321,"name":"IInvestStrategy","nameLocations":["7718:15:54"],"nodeType":"IdentifierPath","referencedDeclaration":20725,"src":"7718:15:54"},"referencedDeclaration":20725,"src":"7718:15:54","typeDescriptions":{"typeIdentifier":"t_contract$_IInvestStrategy_$20725","typeString":"contract IInvestStrategy"}},"visibility":"internal"}],"id":16331,"initialValue":{"baseExpression":{"id":16324,"name":"_strategies","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":15730,"src":"7745:11:54","typeDescriptions":{"typeIdentifier":"t_array$_t_contract$_IInvestStrategy_$20725_$32_storage","typeString":"contract IInvestStrategy[32] storage ref"}},"id":16330,"indexExpression":{"commonType":{"typeIdentifier":"t_uint8","typeString":"uint8"},"id":16329,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"baseExpression":{"id":16325,"name":"_depositQueue","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":15721,"src":"7757:13:54","typeDescriptions":{"typeIdentifier":"t_array$_t_uint8_$32_storage","typeString":"uint8[32] storage ref"}},"id":16327,"indexExpression":{"id":16326,"name":"i","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":16303,"src":"7771:1:54","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"7757:16:54","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}},"nodeType":"BinaryOperation","operator":"-","rightExpression":{"hexValue":"31","id":16328,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"7776:1:54","typeDescriptions":{"typeIdentifier":"t_rational_1_by_1","typeString":"int_const 1"},"value":"1"},"src":"7757:20:54","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"7745:33:54","typeDescriptions":{"typeIdentifier":"t_contract$_IInvestStrategy_$20725","typeString":"contract IInvestStrategy"}},"nodeType":"VariableDeclarationStatement","src":"7718:60:54"},{"assignments":[16333],"declarations":[{"constant":false,"id":16333,"mutability":"mutable","name":"toDeposit","nameLocation":"7794:9:54","nodeType":"VariableDeclaration","scope":16358,"src":"7786:17:54","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":16332,"name":"uint256","nodeType":"ElementaryTypeName","src":"7786:7:54","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":16341,"initialValue":{"arguments":[{"id":16336,"name":"left","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":16299,"src":"7815:4:54","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"arguments":[],"expression":{"argumentTypes":[],"expression":{"id":16337,"name":"strategy","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":16323,"src":"7821:8:54","typeDescriptions":{"typeIdentifier":"t_contract$_IInvestStrategy_$20725","typeString":"contract IInvestStrategy"}},"id":16338,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"7830:10:54","memberName":"maxDeposit","nodeType":"MemberAccess","referencedDeclaration":15674,"src":"7821:19:54","typeDescriptions":{"typeIdentifier":"t_function_internal_view$_t_contract$_IInvestStrategy_$20725_$returns$_t_uint256_$attached_to$_t_contract$_IInvestStrategy_$20725_$","typeString":"function (contract IInvestStrategy) view returns (uint256)"}},"id":16339,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"7821:21:54","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"expression":{"id":16334,"name":"Math","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":12726,"src":"7806:4:54","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_Math_$12726_$","typeString":"type(library Math)"}},"id":16335,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"7811:3:54","memberName":"min","nodeType":"MemberAccess","referencedDeclaration":11411,"src":"7806:8:54","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_uint256_$_t_uint256_$returns$_t_uint256_$","typeString":"function (uint256,uint256) pure returns (uint256)"}},"id":16340,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"7806:37:54","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"VariableDeclarationStatement","src":"7786:57:54"},{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":16344,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":16342,"name":"toDeposit","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":16333,"src":"7855:9:54","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"hexValue":"30","id":16343,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"7868:1:54","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"7855:14:54","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":16346,"nodeType":"IfStatement","src":"7851:28:54","trueBody":{"id":16345,"nodeType":"Continue","src":"7871:8:54"}},{"expression":{"arguments":[{"id":16350,"name":"toDeposit","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":16333,"src":"7906:9:54","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"hexValue":"66616c7365","id":16351,"isConstant":false,"isLValue":false,"isPure":true,"kind":"bool","lValueRequested":false,"nodeType":"Literal","src":"7917:5:54","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"value":"false"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_bool","typeString":"bool"}],"expression":{"id":16347,"name":"strategy","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":16323,"src":"7887:8:54","typeDescriptions":{"typeIdentifier":"t_contract$_IInvestStrategy_$20725","typeString":"contract IInvestStrategy"}},"id":16349,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"7896:9:54","memberName":"dcDeposit","nodeType":"MemberAccess","referencedDeclaration":15503,"src":"7887:18:54","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_contract$_IInvestStrategy_$20725_$_t_uint256_$_t_bool_$returns$_t_bool_$attached_to$_t_contract$_IInvestStrategy_$20725_$","typeString":"function (contract IInvestStrategy,uint256,bool) returns (bool)"}},"id":16352,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"7887:36:54","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":16353,"nodeType":"ExpressionStatement","src":"7887:36:54"},{"expression":{"id":16356,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":16354,"name":"left","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":16299,"src":"7931:4:54","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"-=","rightHandSide":{"id":16355,"name":"toDeposit","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":16333,"src":"7939:9:54","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"7931:17:54","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":16357,"nodeType":"ExpressionStatement","src":"7931:17:54"}]},"condition":{"commonType":{"typeIdentifier":"t_bool","typeString":"bool"},"id":16317,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"commonType":{"typeIdentifier":"t_bool","typeString":"bool"},"id":16313,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":16307,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":16305,"name":"left","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":16299,"src":"7647:4:54","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"!=","rightExpression":{"hexValue":"30","id":16306,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"7655:1:54","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"7647:9:54","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"nodeType":"BinaryOperation","operator":"&&","rightExpression":{"commonType":{"typeIdentifier":"t_uint8","typeString":"uint8"},"id":16312,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"baseExpression":{"id":16308,"name":"_depositQueue","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":15721,"src":"7660:13:54","typeDescriptions":{"typeIdentifier":"t_array$_t_uint8_$32_storage","typeString":"uint8[32] storage ref"}},"id":16310,"indexExpression":{"id":16309,"name":"i","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":16303,"src":"7674:1:54","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"7660:16:54","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}},"nodeType":"BinaryOperation","operator":"!=","rightExpression":{"hexValue":"30","id":16311,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"7680:1:54","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"7660:21:54","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"src":"7647:34:54","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"nodeType":"BinaryOperation","operator":"&&","rightExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":16316,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":16314,"name":"i","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":16303,"src":"7685:1:54","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"<","rightExpression":{"id":16315,"name":"MAX_STRATEGIES","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":15717,"src":"7689:14:54","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}},"src":"7685:18:54","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"src":"7647:56:54","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":16359,"initializationExpression":{"assignments":[16303],"declarations":[{"constant":false,"id":16303,"mutability":"mutable","name":"i","nameLocation":"7644:1:54","nodeType":"VariableDeclaration","scope":16359,"src":"7636:9:54","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":16302,"name":"uint256","nodeType":"ElementaryTypeName","src":"7636:7:54","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":16304,"nodeType":"VariableDeclarationStatement","src":"7636:9:54"},"isSimpleCounterLoop":false,"loopExpression":{"expression":{"id":16319,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"UnaryOperation","operator":"++","prefix":true,"src":"7705:3:54","subExpression":{"id":16318,"name":"i","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":16303,"src":"7707:1:54","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":16320,"nodeType":"ExpressionStatement","src":"7705:3:54"},"nodeType":"ForStatement","src":"7631:324:54"},{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":16362,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":16360,"name":"left","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":16299,"src":"7964:4:54","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"!=","rightExpression":{"hexValue":"30","id":16361,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"7972:1:54","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"7964:9:54","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":16366,"nodeType":"IfStatement","src":"7960:36:54","trueBody":{"errorCall":{"arguments":[],"expression":{"argumentTypes":[],"id":16363,"name":"DepositError","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":15805,"src":"7982:12:54","typeDescriptions":{"typeIdentifier":"t_function_error_pure$__$returns$_t_error_$","typeString":"function () pure returns (error)"}},"id":16364,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"7982:14:54","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_error","typeString":"error"}},"id":16365,"nodeType":"RevertStatement","src":"7975:21:54"}}]},"documentation":{"id":16293,"nodeType":"StructuredDocumentation","src":"7172:299:54","text":" @dev Deposit assets to the strategies in the deposit queue order until zero assets remains to be deposited.\n      After finishing the deposit, left must be zero, otherwise reverts, and should never happen.\n @param assets The amount of assets to be deposited to the strategies."},"id":16368,"implemented":true,"kind":"function","modifiers":[],"name":"_depositToStrategies","nameLocation":"7483:20:54","nodeType":"FunctionDefinition","parameters":{"id":16296,"nodeType":"ParameterList","parameters":[{"constant":false,"id":16295,"mutability":"mutable","name":"assets","nameLocation":"7512:6:54","nodeType":"VariableDeclaration","scope":16368,"src":"7504:14:54","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":16294,"name":"uint256","nodeType":"ElementaryTypeName","src":"7504:7:54","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"7503:16:54"},"returnParameters":{"id":16297,"nodeType":"ParameterList","parameters":[],"src":"7529:0:54"},"scope":17366,"src":"7474:595:54","stateMutability":"nonpayable","virtual":false,"visibility":"internal"},{"body":{"id":16378,"nodeType":"Block","src":"8610:39:54","statements":[{"expression":{"arguments":[{"id":16375,"name":"assets","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":16371,"src":"8637:6:54","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":16374,"name":"_depositToStrategies","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":16368,"src":"8616:20:54","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_uint256_$returns$__$","typeString":"function (uint256)"}},"id":16376,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"8616:28:54","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":16377,"nodeType":"ExpressionStatement","src":"8616:28:54"}]},"documentation":{"id":16369,"nodeType":"StructuredDocumentation","src":"8073:474:54","text":" @dev Deposit assets to the strategies in the deposit queue order until zero assets remains to be deposited.\n      After finishing the deposit, left must be zero, otherwise reverts, and should never happen.\n      This method might be used by the some strategies to reinject rewards. Left as virtual so child classes\n      can implement somekind of access control.\n @param assets The amount of assets to be deposited to the strategies."},"functionSelector":"4614b896","id":16379,"implemented":true,"kind":"function","modifiers":[],"name":"depositToStrategies","nameLocation":"8559:19:54","nodeType":"FunctionDefinition","parameters":{"id":16372,"nodeType":"ParameterList","parameters":[{"constant":false,"id":16371,"mutability":"mutable","name":"assets","nameLocation":"8587:6:54","nodeType":"VariableDeclaration","scope":16379,"src":"8579:14:54","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":16370,"name":"uint256","nodeType":"ElementaryTypeName","src":"8579:7:54","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"8578:16:54"},"returnParameters":{"id":16373,"nodeType":"ParameterList","parameters":[],"src":"8610:0:54"},"scope":17366,"src":"8550:99:54","stateMutability":"nonpayable","virtual":true,"visibility":"public"},{"baseFunctions":[20648],"body":{"id":16435,"nodeType":"Block","src":"8925:304:54","statements":[{"body":{"id":16430,"nodeType":"Block","src":"9021:163:54","statements":[{"condition":{"commonType":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"id":16414,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":16408,"name":"slot","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":16382,"src":"9033:4:54","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"arguments":[],"expression":{"argumentTypes":[],"expression":{"baseExpression":{"id":16409,"name":"_strategies","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":15730,"src":"9041:11:54","typeDescriptions":{"typeIdentifier":"t_array$_t_contract$_IInvestStrategy_$20725_$32_storage","typeString":"contract IInvestStrategy[32] storage ref"}},"id":16411,"indexExpression":{"id":16410,"name":"i","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":16389,"src":"9053:1:54","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"9041:14:54","typeDescriptions":{"typeIdentifier":"t_contract$_IInvestStrategy_$20725","typeString":"contract IInvestStrategy"}},"id":16412,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"9056:11:54","memberName":"storageSlot","nodeType":"MemberAccess","referencedDeclaration":20724,"src":"9041:26:54","typeDescriptions":{"typeIdentifier":"t_function_external_view$__$returns$_t_bytes32_$","typeString":"function () view external returns (bytes32)"}},"id":16413,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"9041:28:54","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"src":"9033:36:54","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":16429,"nodeType":"IfStatement","src":"9029:149:54","trueBody":{"id":16428,"nodeType":"Block","src":"9071:107:54","statements":[{"assignments":[16419],"declarations":[{"constant":false,"id":16419,"mutability":"mutable","name":"r","nameLocation":"9111:1:54","nodeType":"VariableDeclaration","scope":16428,"src":"9081:31:54","stateVariable":false,"storageLocation":"storage","typeDescriptions":{"typeIdentifier":"t_struct$_BytesSlot_$10932_storage_ptr","typeString":"struct StorageSlot.BytesSlot"},"typeName":{"id":16418,"nodeType":"UserDefinedTypeName","pathNode":{"id":16417,"name":"StorageSlot.BytesSlot","nameLocations":["9081:11:54","9093:9:54"],"nodeType":"IdentifierPath","referencedDeclaration":10932,"src":"9081:21:54"},"referencedDeclaration":10932,"src":"9081:21:54","typeDescriptions":{"typeIdentifier":"t_struct$_BytesSlot_$10932_storage_ptr","typeString":"struct StorageSlot.BytesSlot"}},"visibility":"internal"}],"id":16424,"initialValue":{"arguments":[{"id":16422,"name":"slot","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":16382,"src":"9140:4:54","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes32","typeString":"bytes32"}],"expression":{"id":16420,"name":"StorageSlot","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":11032,"src":"9115:11:54","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_StorageSlot_$11032_$","typeString":"type(library StorageSlot)"}},"id":16421,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"9127:12:54","memberName":"getBytesSlot","nodeType":"MemberAccess","referencedDeclaration":11020,"src":"9115:24:54","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_bytes32_$returns$_t_struct$_BytesSlot_$10932_storage_ptr_$","typeString":"function (bytes32) pure returns (struct StorageSlot.BytesSlot storage pointer)"}},"id":16423,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"9115:30:54","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_struct$_BytesSlot_$10932_storage_ptr","typeString":"struct StorageSlot.BytesSlot storage pointer"}},"nodeType":"VariableDeclarationStatement","src":"9081:64:54"},{"expression":{"expression":{"id":16425,"name":"r","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":16419,"src":"9162:1:54","typeDescriptions":{"typeIdentifier":"t_struct$_BytesSlot_$10932_storage_ptr","typeString":"struct StorageSlot.BytesSlot storage pointer"}},"id":16426,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"9164:5:54","memberName":"value","nodeType":"MemberAccess","referencedDeclaration":10931,"src":"9162:7:54","typeDescriptions":{"typeIdentifier":"t_bytes_storage","typeString":"bytes storage ref"}},"functionReturnParameters":16387,"id":16427,"nodeType":"Return","src":"9155:14:54"}]}}]},"condition":{"commonType":{"typeIdentifier":"t_bool","typeString":"bool"},"id":16404,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"commonType":{"typeIdentifier":"t_contract$_IInvestStrategy_$20725","typeString":"contract IInvestStrategy"},"id":16400,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"baseExpression":{"id":16391,"name":"_strategies","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":15730,"src":"8947:11:54","typeDescriptions":{"typeIdentifier":"t_array$_t_contract$_IInvestStrategy_$20725_$32_storage","typeString":"contract IInvestStrategy[32] storage ref"}},"id":16393,"indexExpression":{"id":16392,"name":"i","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":16389,"src":"8959:1:54","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"8947:14:54","typeDescriptions":{"typeIdentifier":"t_contract$_IInvestStrategy_$20725","typeString":"contract IInvestStrategy"}},"nodeType":"BinaryOperation","operator":"!=","rightExpression":{"arguments":[{"arguments":[{"hexValue":"30","id":16397,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"8989: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":16396,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"8981:7:54","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":16395,"name":"address","nodeType":"ElementaryTypeName","src":"8981:7:54","typeDescriptions":{}}},"id":16398,"isConstant":false,"isLValue":false,"isPure":true,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"8981:10:54","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"id":16394,"name":"IInvestStrategy","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":20725,"src":"8965:15:54","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_IInvestStrategy_$20725_$","typeString":"type(contract IInvestStrategy)"}},"id":16399,"isConstant":false,"isLValue":false,"isPure":true,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"8965:27:54","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_contract$_IInvestStrategy_$20725","typeString":"contract IInvestStrategy"}},"src":"8947:45:54","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"nodeType":"BinaryOperation","operator":"&&","rightExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":16403,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":16401,"name":"i","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":16389,"src":"8996:1:54","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"<","rightExpression":{"id":16402,"name":"MAX_STRATEGIES","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":15717,"src":"9000:14:54","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}},"src":"8996:18:54","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"src":"8947:67:54","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":16431,"initializationExpression":{"assignments":[16389],"declarations":[{"constant":false,"id":16389,"mutability":"mutable","name":"i","nameLocation":"8944:1:54","nodeType":"VariableDeclaration","scope":16431,"src":"8936:9:54","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":16388,"name":"uint256","nodeType":"ElementaryTypeName","src":"8936:7:54","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":16390,"nodeType":"VariableDeclarationStatement","src":"8936:9:54"},"isSimpleCounterLoop":false,"loopExpression":{"expression":{"id":16406,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"UnaryOperation","operator":"++","prefix":true,"src":"9016:3:54","subExpression":{"id":16405,"name":"i","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":16389,"src":"9018:1:54","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":16407,"nodeType":"ExpressionStatement","src":"9016:3:54"},"nodeType":"ForStatement","src":"8931:253:54"},{"errorCall":{"arguments":[],"expression":{"argumentTypes":[],"id":16432,"name":"OnlyStrategyStorageExposed","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":15807,"src":"9196:26:54","typeDescriptions":{"typeIdentifier":"t_function_error_pure$__$returns$_t_error_$","typeString":"function () pure returns (error)"}},"id":16433,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"9196:28:54","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_error","typeString":"error"}},"id":16434,"nodeType":"RevertStatement","src":"9189:35:54"}]},"documentation":{"id":16380,"nodeType":"StructuredDocumentation","src":"8653:187:54","text":" @dev Exposes a given slot as a bytes array. To be used by the IInvestStrategy views to access their storage.\n      Only the slot==strategyStorageSlot() can be accessed."},"functionSelector":"47e57533","id":16436,"implemented":true,"kind":"function","modifiers":[],"name":"getBytesSlot","nameLocation":"8852:12:54","nodeType":"FunctionDefinition","overrides":{"id":16384,"nodeType":"OverrideSpecifier","overrides":[],"src":"8893:8:54"},"parameters":{"id":16383,"nodeType":"ParameterList","parameters":[{"constant":false,"id":16382,"mutability":"mutable","name":"slot","nameLocation":"8873:4:54","nodeType":"VariableDeclaration","scope":16436,"src":"8865:12:54","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":16381,"name":"bytes32","nodeType":"ElementaryTypeName","src":"8865:7:54","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"}],"src":"8864:14:54"},"returnParameters":{"id":16387,"nodeType":"ParameterList","parameters":[{"constant":false,"id":16386,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":16436,"src":"8911:12:54","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes"},"typeName":{"id":16385,"name":"bytes","nodeType":"ElementaryTypeName","src":"8911:5:54","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"}],"src":"8910:14:54"},"scope":17366,"src":"8843:386:54","stateMutability":"view","virtual":false,"visibility":"external"},{"documentation":{"id":16437,"nodeType":"StructuredDocumentation","src":"9233:548:54","text":" @dev Checks the caller can execute this forwardToStrategy call, otherwise reverts.\n       This method MUST be implemented by the inheriting contracts with the specific access control mechanism\n @param strategyIndex The index of the strategy in the _strategies array\n @param method Id of the method to call. Is recommended that the strategy defines an enum with the methods that\n               can be called externally and validates this value.\n @param extraData Additional parameters sent to the method."},"id":16446,"implemented":false,"kind":"function","modifiers":[],"name":"_checkForwardToStrategy","nameLocation":"9793:23:54","nodeType":"FunctionDefinition","parameters":{"id":16444,"nodeType":"ParameterList","parameters":[{"constant":false,"id":16439,"mutability":"mutable","name":"strategyIndex","nameLocation":"9823:13:54","nodeType":"VariableDeclaration","scope":16446,"src":"9817:19:54","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"},"typeName":{"id":16438,"name":"uint8","nodeType":"ElementaryTypeName","src":"9817:5:54","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}},"visibility":"internal"},{"constant":false,"id":16441,"mutability":"mutable","name":"method","nameLocation":"9844:6:54","nodeType":"VariableDeclaration","scope":16446,"src":"9838:12:54","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"},"typeName":{"id":16440,"name":"uint8","nodeType":"ElementaryTypeName","src":"9838:5:54","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}},"visibility":"internal"},{"constant":false,"id":16443,"mutability":"mutable","name":"extraData","nameLocation":"9865:9:54","nodeType":"VariableDeclaration","scope":16446,"src":"9852:22:54","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes"},"typeName":{"id":16442,"name":"bytes","nodeType":"ElementaryTypeName","src":"9852:5:54","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"}],"src":"9816:59:54"},"returnParameters":{"id":16445,"nodeType":"ParameterList","parameters":[],"src":"9897:0:54"},"scope":17366,"src":"9784:114:54","stateMutability":"view","virtual":true,"visibility":"internal"},{"body":{"id":16492,"nodeType":"Block","src":"10640:262:54","statements":[{"expression":{"arguments":[{"id":16459,"name":"strategyIndex","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":16449,"src":"10670:13:54","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}},{"id":16460,"name":"method","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":16451,"src":"10685:6:54","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}},{"id":16461,"name":"extraData","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":16453,"src":"10693:9:54","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint8","typeString":"uint8"},{"typeIdentifier":"t_uint8","typeString":"uint8"},{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}],"id":16458,"name":"_checkForwardToStrategy","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":16446,"src":"10646:23:54","typeDescriptions":{"typeIdentifier":"t_function_internal_view$_t_uint8_$_t_uint8_$_t_bytes_memory_ptr_$returns$__$","typeString":"function (uint8,uint8,bytes memory) view"}},"id":16462,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"10646:57:54","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":16463,"nodeType":"ExpressionStatement","src":"10646:57:54"},{"assignments":[16466],"declarations":[{"constant":false,"id":16466,"mutability":"mutable","name":"strategy","nameLocation":"10725:8:54","nodeType":"VariableDeclaration","scope":16492,"src":"10709:24:54","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_contract$_IInvestStrategy_$20725","typeString":"contract IInvestStrategy"},"typeName":{"id":16465,"nodeType":"UserDefinedTypeName","pathNode":{"id":16464,"name":"IInvestStrategy","nameLocations":["10709:15:54"],"nodeType":"IdentifierPath","referencedDeclaration":20725,"src":"10709:15:54"},"referencedDeclaration":20725,"src":"10709:15:54","typeDescriptions":{"typeIdentifier":"t_contract$_IInvestStrategy_$20725","typeString":"contract IInvestStrategy"}},"visibility":"internal"}],"id":16470,"initialValue":{"baseExpression":{"id":16467,"name":"_strategies","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":15730,"src":"10736:11:54","typeDescriptions":{"typeIdentifier":"t_array$_t_contract$_IInvestStrategy_$20725_$32_storage","typeString":"contract IInvestStrategy[32] storage ref"}},"id":16469,"indexExpression":{"id":16468,"name":"strategyIndex","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":16449,"src":"10748:13:54","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"10736:26:54","typeDescriptions":{"typeIdentifier":"t_contract$_IInvestStrategy_$20725","typeString":"contract IInvestStrategy"}},"nodeType":"VariableDeclarationStatement","src":"10709:53:54"},{"condition":{"commonType":{"typeIdentifier":"t_address","typeString":"address"},"id":16479,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"arguments":[{"id":16473,"name":"strategy","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":16466,"src":"10780:8:54","typeDescriptions":{"typeIdentifier":"t_contract$_IInvestStrategy_$20725","typeString":"contract IInvestStrategy"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_contract$_IInvestStrategy_$20725","typeString":"contract IInvestStrategy"}],"id":16472,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"10772:7:54","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":16471,"name":"address","nodeType":"ElementaryTypeName","src":"10772:7:54","typeDescriptions":{}}},"id":16474,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"10772:17:54","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"arguments":[{"hexValue":"30","id":16477,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"10801: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":16476,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"10793:7:54","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":16475,"name":"address","nodeType":"ElementaryTypeName","src":"10793:7:54","typeDescriptions":{}}},"id":16478,"isConstant":false,"isLValue":false,"isPure":true,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"10793:10:54","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"src":"10772:31:54","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":16483,"nodeType":"IfStatement","src":"10768:61:54","trueBody":{"errorCall":{"arguments":[],"expression":{"argumentTypes":[],"id":16480,"name":"InvalidStrategy","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":15788,"src":"10812:15:54","typeDescriptions":{"typeIdentifier":"t_function_error_pure$__$returns$_t_error_$","typeString":"function () pure returns (error)"}},"id":16481,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"10812:17:54","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_error","typeString":"error"}},"id":16482,"nodeType":"RevertStatement","src":"10805:24:54"}},{"expression":{"arguments":[{"id":16488,"name":"method","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":16451,"src":"10879:6:54","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}},{"id":16489,"name":"extraData","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":16453,"src":"10887:9:54","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint8","typeString":"uint8"},{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}],"expression":{"baseExpression":{"id":16484,"name":"_strategies","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":15730,"src":"10842:11:54","typeDescriptions":{"typeIdentifier":"t_array$_t_contract$_IInvestStrategy_$20725_$32_storage","typeString":"contract IInvestStrategy[32] storage ref"}},"id":16486,"indexExpression":{"id":16485,"name":"strategyIndex","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":16449,"src":"10854:13:54","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"10842:26:54","typeDescriptions":{"typeIdentifier":"t_contract$_IInvestStrategy_$20725","typeString":"contract IInvestStrategy"}},"id":16487,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"10869:9:54","memberName":"dcForward","nodeType":"MemberAccess","referencedDeclaration":15532,"src":"10842:36:54","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_contract$_IInvestStrategy_$20725_$_t_uint8_$_t_bytes_memory_ptr_$returns$_t_bytes_memory_ptr_$attached_to$_t_contract$_IInvestStrategy_$20725_$","typeString":"function (contract IInvestStrategy,uint8,bytes memory) returns (bytes memory)"}},"id":16490,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"10842:55:54","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}},"functionReturnParameters":16457,"id":16491,"nodeType":"Return","src":"10835:62:54"}]},"documentation":{"id":16447,"nodeType":"StructuredDocumentation","src":"9902:593:54","text":" @dev Used to call specific methods on the strategies. The specific vault implementation will define the access\n      control mechanism to validate who can execute these calls.\n @param strategyIndex The index of the strategy in the _strategies array\n @param method Id of the method to call. Is recommended that the strategy defines an enum with the methods that\n               can be called externally and validates this value.\n @param extraData Additional parameters sent to the method.\n @return Returns the output received from the IInvestStrategy."},"functionSelector":"3aaf9048","id":16493,"implemented":true,"kind":"function","modifiers":[],"name":"forwardToStrategy","nameLocation":"10507:17:54","nodeType":"FunctionDefinition","parameters":{"id":16454,"nodeType":"ParameterList","parameters":[{"constant":false,"id":16449,"mutability":"mutable","name":"strategyIndex","nameLocation":"10536:13:54","nodeType":"VariableDeclaration","scope":16493,"src":"10530:19:54","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"},"typeName":{"id":16448,"name":"uint8","nodeType":"ElementaryTypeName","src":"10530:5:54","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}},"visibility":"internal"},{"constant":false,"id":16451,"mutability":"mutable","name":"method","nameLocation":"10561:6:54","nodeType":"VariableDeclaration","scope":16493,"src":"10555:12:54","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"},"typeName":{"id":16450,"name":"uint8","nodeType":"ElementaryTypeName","src":"10555:5:54","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}},"visibility":"internal"},{"constant":false,"id":16453,"mutability":"mutable","name":"extraData","nameLocation":"10586:9:54","nodeType":"VariableDeclaration","scope":16493,"src":"10573:22:54","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes"},"typeName":{"id":16452,"name":"bytes","nodeType":"ElementaryTypeName","src":"10573:5:54","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"}],"src":"10524:75:54"},"returnParameters":{"id":16457,"nodeType":"ParameterList","parameters":[{"constant":false,"id":16456,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":16493,"src":"10626:12:54","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes"},"typeName":{"id":16455,"name":"bytes","nodeType":"ElementaryTypeName","src":"10626:5:54","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"}],"src":"10625:14:54"},"scope":17366,"src":"10498:404:54","stateMutability":"nonpayable","virtual":true,"visibility":"external"},{"body":{"id":16581,"nodeType":"Block","src":"11915:497:54","statements":[{"assignments":[16508],"declarations":[{"constant":false,"id":16508,"mutability":"mutable","name":"strategy","nameLocation":"11937:8:54","nodeType":"VariableDeclaration","scope":16581,"src":"11921:24:54","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_contract$_IInvestStrategy_$20725","typeString":"contract IInvestStrategy"},"typeName":{"id":16507,"nodeType":"UserDefinedTypeName","pathNode":{"id":16506,"name":"IInvestStrategy","nameLocations":["11921:15:54"],"nodeType":"IdentifierPath","referencedDeclaration":20725,"src":"11921:15:54"},"referencedDeclaration":20725,"src":"11921:15:54","typeDescriptions":{"typeIdentifier":"t_contract$_IInvestStrategy_$20725","typeString":"contract IInvestStrategy"}},"visibility":"internal"}],"id":16512,"initialValue":{"baseExpression":{"id":16509,"name":"_strategies","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":15730,"src":"11948:11:54","typeDescriptions":{"typeIdentifier":"t_array$_t_contract$_IInvestStrategy_$20725_$32_storage","typeString":"contract IInvestStrategy[32] storage ref"}},"id":16511,"indexExpression":{"id":16510,"name":"strategyIndex","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":16496,"src":"11960:13:54","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"11948:26:54","typeDescriptions":{"typeIdentifier":"t_contract$_IInvestStrategy_$20725","typeString":"contract IInvestStrategy"}},"nodeType":"VariableDeclarationStatement","src":"11921:53:54"},{"condition":{"commonType":{"typeIdentifier":"t_address","typeString":"address"},"id":16521,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"arguments":[{"id":16515,"name":"strategy","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":16508,"src":"11992:8:54","typeDescriptions":{"typeIdentifier":"t_contract$_IInvestStrategy_$20725","typeString":"contract IInvestStrategy"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_contract$_IInvestStrategy_$20725","typeString":"contract IInvestStrategy"}],"id":16514,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"11984:7:54","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":16513,"name":"address","nodeType":"ElementaryTypeName","src":"11984:7:54","typeDescriptions":{}}},"id":16516,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"11984:17:54","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"arguments":[{"hexValue":"30","id":16519,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"12013: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":16518,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"12005:7:54","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":16517,"name":"address","nodeType":"ElementaryTypeName","src":"12005:7:54","typeDescriptions":{}}},"id":16520,"isConstant":false,"isLValue":false,"isPure":true,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"12005:10:54","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"src":"11984:31:54","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":16525,"nodeType":"IfStatement","src":"11980:61:54","trueBody":{"errorCall":{"arguments":[],"expression":{"argumentTypes":[],"id":16522,"name":"InvalidStrategy","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":15788,"src":"12024:15:54","typeDescriptions":{"typeIdentifier":"t_function_error_pure$__$returns$_t_error_$","typeString":"function () pure returns (error)"}},"id":16523,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"12024:17:54","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_error","typeString":"error"}},"id":16524,"nodeType":"RevertStatement","src":"12017:24:54"}},{"body":{"id":16560,"nodeType":"Block","src":"12137:110:54","statements":[{"condition":{"commonType":{"typeIdentifier":"t_bool","typeString":"bool"},"id":16554,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"commonType":{"typeIdentifier":"t_contract$_IInvestStrategy_$20725","typeString":"contract IInvestStrategy"},"id":16550,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"baseExpression":{"id":16546,"name":"_strategies","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":15730,"src":"12149:11:54","typeDescriptions":{"typeIdentifier":"t_array$_t_contract$_IInvestStrategy_$20725_$32_storage","typeString":"contract IInvestStrategy[32] storage ref"}},"id":16548,"indexExpression":{"id":16547,"name":"i","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":16527,"src":"12161:1:54","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"12149:14:54","typeDescriptions":{"typeIdentifier":"t_contract$_IInvestStrategy_$20725","typeString":"contract IInvestStrategy"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"id":16549,"name":"newStrategy","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":16499,"src":"12167:11:54","typeDescriptions":{"typeIdentifier":"t_contract$_IInvestStrategy_$20725","typeString":"contract IInvestStrategy"}},"src":"12149:29:54","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"nodeType":"BinaryOperation","operator":"&&","rightExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":16553,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":16551,"name":"i","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":16527,"src":"12182:1:54","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"!=","rightExpression":{"id":16552,"name":"strategyIndex","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":16496,"src":"12187:13:54","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}},"src":"12182:18:54","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"src":"12149:51:54","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":16559,"nodeType":"IfStatement","src":"12145:95:54","trueBody":{"errorCall":{"arguments":[{"id":16556,"name":"newStrategy","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":16499,"src":"12228:11:54","typeDescriptions":{"typeIdentifier":"t_contract$_IInvestStrategy_$20725","typeString":"contract IInvestStrategy"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_contract$_IInvestStrategy_$20725","typeString":"contract IInvestStrategy"}],"id":16555,"name":"DuplicatedStrategy","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":15793,"src":"12209:18:54","typeDescriptions":{"typeIdentifier":"t_function_error_pure$_t_contract$_IInvestStrategy_$20725_$returns$_t_error_$","typeString":"function (contract IInvestStrategy) pure returns (error)"}},"id":16557,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"12209:31:54","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_error","typeString":"error"}},"id":16558,"nodeType":"RevertStatement","src":"12202:38:54"}}]},"condition":{"commonType":{"typeIdentifier":"t_bool","typeString":"bool"},"id":16542,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":16531,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":16529,"name":"i","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":16527,"src":"12063:1:54","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"<","rightExpression":{"id":16530,"name":"MAX_STRATEGIES","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":15717,"src":"12067:14:54","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}},"src":"12063:18:54","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"nodeType":"BinaryOperation","operator":"&&","rightExpression":{"commonType":{"typeIdentifier":"t_contract$_IInvestStrategy_$20725","typeString":"contract IInvestStrategy"},"id":16541,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"baseExpression":{"id":16532,"name":"_strategies","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":15730,"src":"12085:11:54","typeDescriptions":{"typeIdentifier":"t_array$_t_contract$_IInvestStrategy_$20725_$32_storage","typeString":"contract IInvestStrategy[32] storage ref"}},"id":16534,"indexExpression":{"id":16533,"name":"i","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":16527,"src":"12097:1:54","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"12085:14:54","typeDescriptions":{"typeIdentifier":"t_contract$_IInvestStrategy_$20725","typeString":"contract IInvestStrategy"}},"nodeType":"BinaryOperation","operator":"!=","rightExpression":{"arguments":[{"arguments":[{"hexValue":"30","id":16538,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"12127: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":16537,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"12119:7:54","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":16536,"name":"address","nodeType":"ElementaryTypeName","src":"12119:7:54","typeDescriptions":{}}},"id":16539,"isConstant":false,"isLValue":false,"isPure":true,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"12119:10:54","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"id":16535,"name":"IInvestStrategy","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":20725,"src":"12103:15:54","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_IInvestStrategy_$20725_$","typeString":"type(contract IInvestStrategy)"}},"id":16540,"isConstant":false,"isLValue":false,"isPure":true,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"12103:27:54","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_contract$_IInvestStrategy_$20725","typeString":"contract IInvestStrategy"}},"src":"12085:45:54","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"src":"12063:67:54","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":16561,"initializationExpression":{"assignments":[16527],"declarations":[{"constant":false,"id":16527,"mutability":"mutable","name":"i","nameLocation":"12060:1:54","nodeType":"VariableDeclaration","scope":16561,"src":"12052:9:54","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":16526,"name":"uint256","nodeType":"ElementaryTypeName","src":"12052:7:54","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":16528,"nodeType":"VariableDeclarationStatement","src":"12052:9:54"},"isSimpleCounterLoop":false,"loopExpression":{"expression":{"id":16544,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"UnaryOperation","operator":"++","prefix":true,"src":"12132:3:54","subExpression":{"id":16543,"name":"i","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":16527,"src":"12134:1:54","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":16545,"nodeType":"ExpressionStatement","src":"12132:3:54"},"nodeType":"ForStatement","src":"12047:200:54"},{"expression":{"arguments":[{"id":16565,"name":"strategy","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":16508,"src":"12288:8:54","typeDescriptions":{"typeIdentifier":"t_contract$_IInvestStrategy_$20725","typeString":"contract IInvestStrategy"}},{"id":16566,"name":"newStrategy","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":16499,"src":"12298:11:54","typeDescriptions":{"typeIdentifier":"t_contract$_IInvestStrategy_$20725","typeString":"contract IInvestStrategy"}},{"id":16567,"name":"initStrategyData","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":16501,"src":"12311:16:54","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}},{"arguments":[{"arguments":[],"expression":{"argumentTypes":[],"id":16569,"name":"_asset","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":15830,"src":"12344:6:54","typeDescriptions":{"typeIdentifier":"t_function_internal_view$__$returns$_t_address_$","typeString":"function () view returns (address)"}},"id":16570,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"12344:8:54","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"id":16568,"name":"IERC20Metadata","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9411,"src":"12329:14:54","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_IERC20Metadata_$9411_$","typeString":"type(contract IERC20Metadata)"}},"id":16571,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"12329:24:54","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_contract$_IERC20Metadata_$9411","typeString":"contract IERC20Metadata"}},{"id":16572,"name":"force","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":16503,"src":"12355:5:54","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_contract$_IInvestStrategy_$20725","typeString":"contract IInvestStrategy"},{"typeIdentifier":"t_contract$_IInvestStrategy_$20725","typeString":"contract IInvestStrategy"},{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"},{"typeIdentifier":"t_contract$_IERC20Metadata_$9411","typeString":"contract IERC20Metadata"},{"typeIdentifier":"t_bool","typeString":"bool"}],"expression":{"id":16562,"name":"InvestStrategyClient","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":15693,"src":"12252:20:54","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_InvestStrategyClient_$15693_$","typeString":"type(library InvestStrategyClient)"}},"id":16564,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"12273:14:54","memberName":"strategyChange","nodeType":"MemberAccess","referencedDeclaration":15620,"src":"12252:35:54","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_contract$_IInvestStrategy_$20725_$_t_contract$_IInvestStrategy_$20725_$_t_bytes_memory_ptr_$_t_contract$_IERC20Metadata_$9411_$_t_bool_$returns$__$","typeString":"function (contract IInvestStrategy,contract IInvestStrategy,bytes memory,contract IERC20Metadata,bool)"}},"id":16573,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"12252:109:54","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":16574,"nodeType":"ExpressionStatement","src":"12252:109:54"},{"expression":{"id":16579,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"baseExpression":{"id":16575,"name":"_strategies","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":15730,"src":"12367:11:54","typeDescriptions":{"typeIdentifier":"t_array$_t_contract$_IInvestStrategy_$20725_$32_storage","typeString":"contract IInvestStrategy[32] storage ref"}},"id":16577,"indexExpression":{"id":16576,"name":"strategyIndex","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":16496,"src":"12379:13:54","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"nodeType":"IndexAccess","src":"12367:26:54","typeDescriptions":{"typeIdentifier":"t_contract$_IInvestStrategy_$20725","typeString":"contract IInvestStrategy"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"id":16578,"name":"newStrategy","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":16499,"src":"12396:11:54","typeDescriptions":{"typeIdentifier":"t_contract$_IInvestStrategy_$20725","typeString":"contract IInvestStrategy"}},"src":"12367:40:54","typeDescriptions":{"typeIdentifier":"t_contract$_IInvestStrategy_$20725","typeString":"contract IInvestStrategy"}},"id":16580,"nodeType":"ExpressionStatement","src":"12367:40:54"}]},"documentation":{"id":16494,"nodeType":"StructuredDocumentation","src":"10906:853:54","text":" @dev Changes one investment strategy to a new one, keeping the deposit and withdraw queues unaffected.\n      When this happens, all funds are withdrawn from the old strategy and deposited on the new one.\n      This reverts if any of this fails, unless the force parameter is true, in that case errors in withdrawal\n      or deposit are silented.\n @param strategyIndex The index of the strategy in the _strategies array\n @param newStrategy The new strategy to plug into the vault\n @param initStrategyData Initialization parameters for this new strategy\n @param force Boolean to indicate if errors on withdraw or deposit should be accepted. Normally you should send\n              this value in `false`. Only use `true` if you know what you are doing and trying to replace a faulty\n              strategy."},"functionSelector":"7ac445a7","id":16582,"implemented":true,"kind":"function","modifiers":[],"name":"replaceStrategy","nameLocation":"11771:15:54","nodeType":"FunctionDefinition","parameters":{"id":16504,"nodeType":"ParameterList","parameters":[{"constant":false,"id":16496,"mutability":"mutable","name":"strategyIndex","nameLocation":"11798:13:54","nodeType":"VariableDeclaration","scope":16582,"src":"11792:19:54","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"},"typeName":{"id":16495,"name":"uint8","nodeType":"ElementaryTypeName","src":"11792:5:54","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}},"visibility":"internal"},{"constant":false,"id":16499,"mutability":"mutable","name":"newStrategy","nameLocation":"11833:11:54","nodeType":"VariableDeclaration","scope":16582,"src":"11817:27:54","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_contract$_IInvestStrategy_$20725","typeString":"contract IInvestStrategy"},"typeName":{"id":16498,"nodeType":"UserDefinedTypeName","pathNode":{"id":16497,"name":"IInvestStrategy","nameLocations":["11817:15:54"],"nodeType":"IdentifierPath","referencedDeclaration":20725,"src":"11817:15:54"},"referencedDeclaration":20725,"src":"11817:15:54","typeDescriptions":{"typeIdentifier":"t_contract$_IInvestStrategy_$20725","typeString":"contract IInvestStrategy"}},"visibility":"internal"},{"constant":false,"id":16501,"mutability":"mutable","name":"initStrategyData","nameLocation":"11863:16:54","nodeType":"VariableDeclaration","scope":16582,"src":"11850:29:54","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes"},"typeName":{"id":16500,"name":"bytes","nodeType":"ElementaryTypeName","src":"11850:5:54","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"},{"constant":false,"id":16503,"mutability":"mutable","name":"force","nameLocation":"11890:5:54","nodeType":"VariableDeclaration","scope":16582,"src":"11885:10:54","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":16502,"name":"bool","nodeType":"ElementaryTypeName","src":"11885:4:54","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"}],"src":"11786:113:54"},"returnParameters":{"id":16505,"nodeType":"ParameterList","parameters":[],"src":"11915:0:54"},"scope":17366,"src":"11762:650:54","stateMutability":"nonpayable","virtual":true,"visibility":"public"},{"body":{"id":16692,"nodeType":"Block","src":"12797:566:54","statements":[{"condition":{"commonType":{"typeIdentifier":"t_address","typeString":"address"},"id":16599,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"arguments":[{"id":16593,"name":"newStrategy","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":16586,"src":"12815:11:54","typeDescriptions":{"typeIdentifier":"t_contract$_IInvestStrategy_$20725","typeString":"contract IInvestStrategy"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_contract$_IInvestStrategy_$20725","typeString":"contract IInvestStrategy"}],"id":16592,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"12807:7:54","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":16591,"name":"address","nodeType":"ElementaryTypeName","src":"12807:7:54","typeDescriptions":{}}},"id":16594,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"12807:20:54","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"arguments":[{"hexValue":"30","id":16597,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"12839: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":16596,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"12831:7:54","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":16595,"name":"address","nodeType":"ElementaryTypeName","src":"12831:7:54","typeDescriptions":{}}},"id":16598,"isConstant":false,"isLValue":false,"isPure":true,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"12831:10:54","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"src":"12807:34:54","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":16603,"nodeType":"IfStatement","src":"12803:64:54","trueBody":{"errorCall":{"arguments":[],"expression":{"argumentTypes":[],"id":16600,"name":"InvalidStrategy","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":15788,"src":"12850:15:54","typeDescriptions":{"typeIdentifier":"t_function_error_pure$__$returns$_t_error_$","typeString":"function () pure returns (error)"}},"id":16601,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"12850:17:54","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_error","typeString":"error"}},"id":16602,"nodeType":"RevertStatement","src":"12843:24:54"}},{"assignments":[16605],"declarations":[{"constant":false,"id":16605,"mutability":"mutable","name":"i","nameLocation":"12881:1:54","nodeType":"VariableDeclaration","scope":16692,"src":"12873:9:54","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":16604,"name":"uint256","nodeType":"ElementaryTypeName","src":"12873:7:54","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":16606,"nodeType":"VariableDeclarationStatement","src":"12873:9:54"},{"body":{"id":16634,"nodeType":"Block","src":"12969:88:54","statements":[{"condition":{"commonType":{"typeIdentifier":"t_contract$_IInvestStrategy_$20725","typeString":"contract IInvestStrategy"},"id":16628,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"baseExpression":{"id":16624,"name":"_strategies","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":15730,"src":"12981:11:54","typeDescriptions":{"typeIdentifier":"t_array$_t_contract$_IInvestStrategy_$20725_$32_storage","typeString":"contract IInvestStrategy[32] storage ref"}},"id":16626,"indexExpression":{"id":16625,"name":"i","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":16605,"src":"12993:1:54","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"12981:14:54","typeDescriptions":{"typeIdentifier":"t_contract$_IInvestStrategy_$20725","typeString":"contract IInvestStrategy"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"id":16627,"name":"newStrategy","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":16586,"src":"12999:11:54","typeDescriptions":{"typeIdentifier":"t_contract$_IInvestStrategy_$20725","typeString":"contract IInvestStrategy"}},"src":"12981:29:54","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":16633,"nodeType":"IfStatement","src":"12977:73:54","trueBody":{"errorCall":{"arguments":[{"id":16630,"name":"newStrategy","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":16586,"src":"13038:11:54","typeDescriptions":{"typeIdentifier":"t_contract$_IInvestStrategy_$20725","typeString":"contract IInvestStrategy"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_contract$_IInvestStrategy_$20725","typeString":"contract IInvestStrategy"}],"id":16629,"name":"DuplicatedStrategy","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":15793,"src":"13019:18:54","typeDescriptions":{"typeIdentifier":"t_function_error_pure$_t_contract$_IInvestStrategy_$20725_$returns$_t_error_$","typeString":"function (contract IInvestStrategy) pure returns (error)"}},"id":16631,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"13019:31:54","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_error","typeString":"error"}},"id":16632,"nodeType":"RevertStatement","src":"13012:38:54"}}]},"condition":{"commonType":{"typeIdentifier":"t_bool","typeString":"bool"},"id":16620,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":16609,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":16607,"name":"i","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":16605,"src":"12895:1:54","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"<","rightExpression":{"id":16608,"name":"MAX_STRATEGIES","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":15717,"src":"12899:14:54","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}},"src":"12895:18:54","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"nodeType":"BinaryOperation","operator":"&&","rightExpression":{"commonType":{"typeIdentifier":"t_contract$_IInvestStrategy_$20725","typeString":"contract IInvestStrategy"},"id":16619,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"baseExpression":{"id":16610,"name":"_strategies","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":15730,"src":"12917:11:54","typeDescriptions":{"typeIdentifier":"t_array$_t_contract$_IInvestStrategy_$20725_$32_storage","typeString":"contract IInvestStrategy[32] storage ref"}},"id":16612,"indexExpression":{"id":16611,"name":"i","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":16605,"src":"12929:1:54","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"12917:14:54","typeDescriptions":{"typeIdentifier":"t_contract$_IInvestStrategy_$20725","typeString":"contract IInvestStrategy"}},"nodeType":"BinaryOperation","operator":"!=","rightExpression":{"arguments":[{"arguments":[{"hexValue":"30","id":16616,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"12959: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":16615,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"12951:7:54","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":16614,"name":"address","nodeType":"ElementaryTypeName","src":"12951:7:54","typeDescriptions":{}}},"id":16617,"isConstant":false,"isLValue":false,"isPure":true,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"12951:10:54","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"id":16613,"name":"IInvestStrategy","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":20725,"src":"12935:15:54","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_IInvestStrategy_$20725_$","typeString":"type(contract IInvestStrategy)"}},"id":16618,"isConstant":false,"isLValue":false,"isPure":true,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"12935:27:54","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_contract$_IInvestStrategy_$20725","typeString":"contract IInvestStrategy"}},"src":"12917:45:54","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"src":"12895:67:54","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":16635,"isSimpleCounterLoop":false,"loopExpression":{"expression":{"id":16622,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"UnaryOperation","operator":"++","prefix":true,"src":"12964:3:54","subExpression":{"id":16621,"name":"i","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":16605,"src":"12966:1:54","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":16623,"nodeType":"ExpressionStatement","src":"12964:3:54"},"nodeType":"ForStatement","src":"12888:169:54"},{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":16638,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":16636,"name":"i","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":16605,"src":"13066:1:54","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"id":16637,"name":"MAX_STRATEGIES","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":15717,"src":"13071:14:54","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}},"src":"13066:19:54","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":16642,"nodeType":"IfStatement","src":"13062:57:54","trueBody":{"errorCall":{"arguments":[],"expression":{"argumentTypes":[],"id":16639,"name":"InvalidStrategiesLength","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":15786,"src":"13094:23:54","typeDescriptions":{"typeIdentifier":"t_function_error_pure$__$returns$_t_error_$","typeString":"function () pure returns (error)"}},"id":16640,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"13094:25:54","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_error","typeString":"error"}},"id":16641,"nodeType":"RevertStatement","src":"13087:32:54"}},{"expression":{"id":16647,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"baseExpression":{"id":16643,"name":"_strategies","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":15730,"src":"13125:11:54","typeDescriptions":{"typeIdentifier":"t_array$_t_contract$_IInvestStrategy_$20725_$32_storage","typeString":"contract IInvestStrategy[32] storage ref"}},"id":16645,"indexExpression":{"id":16644,"name":"i","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":16605,"src":"13137:1:54","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"nodeType":"IndexAccess","src":"13125:14:54","typeDescriptions":{"typeIdentifier":"t_contract$_IInvestStrategy_$20725","typeString":"contract IInvestStrategy"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"id":16646,"name":"newStrategy","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":16586,"src":"13142:11:54","typeDescriptions":{"typeIdentifier":"t_contract$_IInvestStrategy_$20725","typeString":"contract IInvestStrategy"}},"src":"13125:28:54","typeDescriptions":{"typeIdentifier":"t_contract$_IInvestStrategy_$20725","typeString":"contract IInvestStrategy"}},"id":16648,"nodeType":"ExpressionStatement","src":"13125:28:54"},{"expression":{"id":16658,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"baseExpression":{"id":16649,"name":"_depositQueue","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":15721,"src":"13159:13:54","typeDescriptions":{"typeIdentifier":"t_array$_t_uint8_$32_storage","typeString":"uint8[32] storage ref"}},"id":16651,"indexExpression":{"id":16650,"name":"i","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":16605,"src":"13173:1:54","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"nodeType":"IndexAccess","src":"13159:16:54","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"arguments":[{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":16656,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":16654,"name":"i","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":16605,"src":"13184:1:54","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"+","rightExpression":{"hexValue":"31","id":16655,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"13188:1:54","typeDescriptions":{"typeIdentifier":"t_rational_1_by_1","typeString":"int_const 1"},"value":"1"},"src":"13184:5:54","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":16653,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"13178:5:54","typeDescriptions":{"typeIdentifier":"t_type$_t_uint8_$","typeString":"type(uint8)"},"typeName":{"id":16652,"name":"uint8","nodeType":"ElementaryTypeName","src":"13178:5:54","typeDescriptions":{}}},"id":16657,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"13178:12:54","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}},"src":"13159:31:54","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}},"id":16659,"nodeType":"ExpressionStatement","src":"13159:31:54"},{"expression":{"id":16669,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"baseExpression":{"id":16660,"name":"_withdrawQueue","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":15725,"src":"13196:14:54","typeDescriptions":{"typeIdentifier":"t_array$_t_uint8_$32_storage","typeString":"uint8[32] storage ref"}},"id":16662,"indexExpression":{"id":16661,"name":"i","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":16605,"src":"13211:1:54","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"nodeType":"IndexAccess","src":"13196:17:54","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"arguments":[{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":16667,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":16665,"name":"i","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":16605,"src":"13222:1:54","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"+","rightExpression":{"hexValue":"31","id":16666,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"13226:1:54","typeDescriptions":{"typeIdentifier":"t_rational_1_by_1","typeString":"int_const 1"},"value":"1"},"src":"13222:5:54","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":16664,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"13216:5:54","typeDescriptions":{"typeIdentifier":"t_type$_t_uint8_$","typeString":"type(uint8)"},"typeName":{"id":16663,"name":"uint8","nodeType":"ElementaryTypeName","src":"13216:5:54","typeDescriptions":{}}},"id":16668,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"13216:12:54","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}},"src":"13196:32:54","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}},"id":16670,"nodeType":"ExpressionStatement","src":"13196:32:54"},{"expression":{"arguments":[{"arguments":[],"expression":{"argumentTypes":[],"id":16674,"name":"_asset","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":15830,"src":"13257:6:54","typeDescriptions":{"typeIdentifier":"t_function_internal_view$__$returns$_t_address_$","typeString":"function () view returns (address)"}},"id":16675,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"13257:8:54","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"expression":{"id":16671,"name":"newStrategy","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":16586,"src":"13234:11:54","typeDescriptions":{"typeIdentifier":"t_contract$_IInvestStrategy_$20725","typeString":"contract IInvestStrategy"}},"id":16673,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"13246:10:54","memberName":"checkAsset","nodeType":"MemberAccess","referencedDeclaration":15555,"src":"13234:22:54","typeDescriptions":{"typeIdentifier":"t_function_internal_view$_t_contract$_IInvestStrategy_$20725_$_t_address_$returns$__$attached_to$_t_contract$_IInvestStrategy_$20725_$","typeString":"function (contract IInvestStrategy,address) view"}},"id":16676,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"13234:32:54","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":16677,"nodeType":"ExpressionStatement","src":"13234:32:54"},{"expression":{"arguments":[{"id":16681,"name":"initStrategyData","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":16588,"src":"13294:16:54","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}],"expression":{"id":16678,"name":"newStrategy","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":16586,"src":"13272:11:54","typeDescriptions":{"typeIdentifier":"t_contract$_IInvestStrategy_$20725","typeString":"contract IInvestStrategy"}},"id":16680,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"13284:9:54","memberName":"dcConnect","nodeType":"MemberAccess","referencedDeclaration":15334,"src":"13272:21:54","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_contract$_IInvestStrategy_$20725_$_t_bytes_memory_ptr_$returns$__$attached_to$_t_contract$_IInvestStrategy_$20725_$","typeString":"function (contract IInvestStrategy,bytes memory)"}},"id":16682,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"13272:39:54","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":16683,"nodeType":"ExpressionStatement","src":"13272:39:54"},{"eventCall":{"arguments":[{"id":16685,"name":"newStrategy","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":16586,"src":"13336:11:54","typeDescriptions":{"typeIdentifier":"t_contract$_IInvestStrategy_$20725","typeString":"contract IInvestStrategy"}},{"arguments":[{"id":16688,"name":"i","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":16605,"src":"13355:1:54","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":16687,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"13349:5:54","typeDescriptions":{"typeIdentifier":"t_type$_t_uint8_$","typeString":"type(uint8)"},"typeName":{"id":16686,"name":"uint8","nodeType":"ElementaryTypeName","src":"13349:5:54","typeDescriptions":{}}},"id":16689,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"13349:8:54","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_contract$_IInvestStrategy_$20725","typeString":"contract IInvestStrategy"},{"typeIdentifier":"t_uint8","typeString":"uint8"}],"id":16684,"name":"StrategyAdded","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":15757,"src":"13322:13:54","typeDescriptions":{"typeIdentifier":"t_function_event_nonpayable$_t_contract$_IInvestStrategy_$20725_$_t_uint8_$returns$__$","typeString":"function (contract IInvestStrategy,uint8)"}},"id":16690,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"13322:36:54","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":16691,"nodeType":"EmitStatement","src":"13317:41:54"}]},"documentation":{"id":16583,"nodeType":"StructuredDocumentation","src":"12416:282:54","text":" @dev Adds a new strategy to the vault. The new strategy will be added at the end of the deposit and withdraw\n      queues.\n @param newStrategy The new strategy to plug into the vault\n @param initStrategyData Initialization parameters for this new strategy"},"functionSelector":"7aeedf2a","id":16693,"implemented":true,"kind":"function","modifiers":[],"name":"addStrategy","nameLocation":"12710:11:54","nodeType":"FunctionDefinition","parameters":{"id":16589,"nodeType":"ParameterList","parameters":[{"constant":false,"id":16586,"mutability":"mutable","name":"newStrategy","nameLocation":"12738:11:54","nodeType":"VariableDeclaration","scope":16693,"src":"12722:27:54","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_contract$_IInvestStrategy_$20725","typeString":"contract IInvestStrategy"},"typeName":{"id":16585,"nodeType":"UserDefinedTypeName","pathNode":{"id":16584,"name":"IInvestStrategy","nameLocations":["12722:15:54"],"nodeType":"IdentifierPath","referencedDeclaration":20725,"src":"12722:15:54"},"referencedDeclaration":20725,"src":"12722:15:54","typeDescriptions":{"typeIdentifier":"t_contract$_IInvestStrategy_$20725","typeString":"contract IInvestStrategy"}},"visibility":"internal"},{"constant":false,"id":16588,"mutability":"mutable","name":"initStrategyData","nameLocation":"12764:16:54","nodeType":"VariableDeclaration","scope":16693,"src":"12751:29:54","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes"},"typeName":{"id":16587,"name":"bytes","nodeType":"ElementaryTypeName","src":"12751:5:54","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"}],"src":"12721:60:54"},"returnParameters":{"id":16590,"nodeType":"ParameterList","parameters":[],"src":"12797:0:54"},"scope":17366,"src":"12701:662:54","stateMutability":"nonpayable","virtual":true,"visibility":"public"},{"body":{"id":16974,"nodeType":"Block","src":"13811:2145:54","statements":[{"condition":{"commonType":{"typeIdentifier":"t_uint8","typeString":"uint8"},"id":16703,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":16701,"name":"strategyIndex","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":16696,"src":"13821:13:54","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}},"nodeType":"BinaryOperation","operator":">=","rightExpression":{"id":16702,"name":"MAX_STRATEGIES","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":15717,"src":"13838:14:54","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}},"src":"13821:31:54","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":16707,"nodeType":"IfStatement","src":"13817:61:54","trueBody":{"errorCall":{"arguments":[],"expression":{"argumentTypes":[],"id":16704,"name":"InvalidStrategy","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":15788,"src":"13861:15:54","typeDescriptions":{"typeIdentifier":"t_function_error_pure$__$returns$_t_error_$","typeString":"function () pure returns (error)"}},"id":16705,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"13861:17:54","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_error","typeString":"error"}},"id":16706,"nodeType":"RevertStatement","src":"13854:24:54"}},{"assignments":[16710],"declarations":[{"constant":false,"id":16710,"mutability":"mutable","name":"strategy","nameLocation":"13900:8:54","nodeType":"VariableDeclaration","scope":16974,"src":"13884:24:54","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_contract$_IInvestStrategy_$20725","typeString":"contract IInvestStrategy"},"typeName":{"id":16709,"nodeType":"UserDefinedTypeName","pathNode":{"id":16708,"name":"IInvestStrategy","nameLocations":["13884:15:54"],"nodeType":"IdentifierPath","referencedDeclaration":20725,"src":"13884:15:54"},"referencedDeclaration":20725,"src":"13884:15:54","typeDescriptions":{"typeIdentifier":"t_contract$_IInvestStrategy_$20725","typeString":"contract IInvestStrategy"}},"visibility":"internal"}],"id":16714,"initialValue":{"baseExpression":{"id":16711,"name":"_strategies","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":15730,"src":"13911:11:54","typeDescriptions":{"typeIdentifier":"t_array$_t_contract$_IInvestStrategy_$20725_$32_storage","typeString":"contract IInvestStrategy[32] storage ref"}},"id":16713,"indexExpression":{"id":16712,"name":"strategyIndex","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":16696,"src":"13923:13:54","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"13911:26:54","typeDescriptions":{"typeIdentifier":"t_contract$_IInvestStrategy_$20725","typeString":"contract IInvestStrategy"}},"nodeType":"VariableDeclarationStatement","src":"13884:53:54"},{"condition":{"commonType":{"typeIdentifier":"t_address","typeString":"address"},"id":16723,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"arguments":[{"id":16717,"name":"strategy","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":16710,"src":"13955:8:54","typeDescriptions":{"typeIdentifier":"t_contract$_IInvestStrategy_$20725","typeString":"contract IInvestStrategy"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_contract$_IInvestStrategy_$20725","typeString":"contract IInvestStrategy"}],"id":16716,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"13947:7:54","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":16715,"name":"address","nodeType":"ElementaryTypeName","src":"13947:7:54","typeDescriptions":{}}},"id":16718,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"13947:17:54","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"arguments":[{"hexValue":"30","id":16721,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"13976: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":16720,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"13968:7:54","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":16719,"name":"address","nodeType":"ElementaryTypeName","src":"13968:7:54","typeDescriptions":{}}},"id":16722,"isConstant":false,"isLValue":false,"isPure":true,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"13968:10:54","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"src":"13947:31:54","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":16727,"nodeType":"IfStatement","src":"13943:61:54","trueBody":{"errorCall":{"arguments":[],"expression":{"argumentTypes":[],"id":16724,"name":"InvalidStrategy","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":15788,"src":"13987:15:54","typeDescriptions":{"typeIdentifier":"t_function_error_pure$__$returns$_t_error_$","typeString":"function () pure returns (error)"}},"id":16725,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"13987:17:54","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_error","typeString":"error"}},"id":16726,"nodeType":"RevertStatement","src":"13980:24:54"}},{"condition":{"commonType":{"typeIdentifier":"t_bool","typeString":"bool"},"id":16735,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":16729,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"UnaryOperation","operator":"!","prefix":true,"src":"14014:6:54","subExpression":{"id":16728,"name":"force","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":16698,"src":"14015:5:54","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"nodeType":"BinaryOperation","operator":"&&","rightExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":16734,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"arguments":[],"expression":{"argumentTypes":[],"expression":{"id":16730,"name":"strategy","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":16710,"src":"14024:8:54","typeDescriptions":{"typeIdentifier":"t_contract$_IInvestStrategy_$20725","typeString":"contract IInvestStrategy"}},"id":16731,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"14033:11:54","memberName":"totalAssets","nodeType":"MemberAccess","referencedDeclaration":15656,"src":"14024:20:54","typeDescriptions":{"typeIdentifier":"t_function_internal_view$_t_contract$_IInvestStrategy_$20725_$returns$_t_uint256_$attached_to$_t_contract$_IInvestStrategy_$20725_$","typeString":"function (contract IInvestStrategy) view returns (uint256)"}},"id":16732,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"14024:22:54","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"!=","rightExpression":{"hexValue":"30","id":16733,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"14050:1:54","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"14024:27:54","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"src":"14014:37:54","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":16739,"nodeType":"IfStatement","src":"14010:82:54","trueBody":{"errorCall":{"arguments":[],"expression":{"argumentTypes":[],"id":16736,"name":"CannotRemoveStrategyWithAssets","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":15809,"src":"14060:30:54","typeDescriptions":{"typeIdentifier":"t_function_error_pure$__$returns$_t_error_$","typeString":"function () pure returns (error)"}},"id":16737,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"14060:32:54","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_error","typeString":"error"}},"id":16738,"nodeType":"RevertStatement","src":"14053:39:54"}},{"condition":{"commonType":{"typeIdentifier":"t_bool","typeString":"bool"},"id":16754,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"commonType":{"typeIdentifier":"t_uint8","typeString":"uint8"},"id":16742,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":16740,"name":"strategyIndex","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":16696,"src":"14143:13:54","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"hexValue":"30","id":16741,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"14160:1:54","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"14143:18:54","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"nodeType":"BinaryOperation","operator":"&&","rightExpression":{"commonType":{"typeIdentifier":"t_address","typeString":"address"},"id":16753,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"arguments":[{"baseExpression":{"id":16745,"name":"_strategies","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":15730,"src":"14173:11:54","typeDescriptions":{"typeIdentifier":"t_array$_t_contract$_IInvestStrategy_$20725_$32_storage","typeString":"contract IInvestStrategy[32] storage ref"}},"id":16747,"indexExpression":{"hexValue":"31","id":16746,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"14185:1:54","typeDescriptions":{"typeIdentifier":"t_rational_1_by_1","typeString":"int_const 1"},"value":"1"},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"14173:14:54","typeDescriptions":{"typeIdentifier":"t_contract$_IInvestStrategy_$20725","typeString":"contract IInvestStrategy"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_contract$_IInvestStrategy_$20725","typeString":"contract IInvestStrategy"}],"id":16744,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"14165:7:54","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":16743,"name":"address","nodeType":"ElementaryTypeName","src":"14165:7:54","typeDescriptions":{}}},"id":16748,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"14165:23:54","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"arguments":[{"hexValue":"30","id":16751,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"14200: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":16750,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"14192:7:54","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":16749,"name":"address","nodeType":"ElementaryTypeName","src":"14192:7:54","typeDescriptions":{}}},"id":16752,"isConstant":false,"isLValue":false,"isPure":true,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"14192:10:54","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"src":"14165:37:54","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"src":"14143:59:54","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":16758,"nodeType":"IfStatement","src":"14139:97:54","trueBody":{"errorCall":{"arguments":[],"expression":{"argumentTypes":[],"id":16755,"name":"InvalidStrategiesLength","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":15786,"src":"14211:23:54","typeDescriptions":{"typeIdentifier":"t_function_error_pure$__$returns$_t_error_$","typeString":"function () pure returns (error)"}},"id":16756,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"14211:25:54","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_error","typeString":"error"}},"id":16757,"nodeType":"RevertStatement","src":"14204:32:54"}},{"assignments":[16760],"declarations":[{"constant":false,"id":16760,"mutability":"mutable","name":"i","nameLocation":"14301:1:54","nodeType":"VariableDeclaration","scope":16974,"src":"14293:9:54","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":16759,"name":"uint256","nodeType":"ElementaryTypeName","src":"14293:7:54","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":16764,"initialValue":{"commonType":{"typeIdentifier":"t_uint8","typeString":"uint8"},"id":16763,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":16761,"name":"strategyIndex","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":16696,"src":"14305:13:54","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}},"nodeType":"BinaryOperation","operator":"+","rightExpression":{"hexValue":"31","id":16762,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"14321:1:54","typeDescriptions":{"typeIdentifier":"t_rational_1_by_1","typeString":"int_const 1"},"value":"1"},"src":"14305:17:54","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}},"nodeType":"VariableDeclarationStatement","src":"14293:29:54"},{"body":{"id":16792,"nodeType":"Block","src":"14409:50:54","statements":[{"expression":{"id":16790,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"baseExpression":{"id":16782,"name":"_strategies","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":15730,"src":"14417:11:54","typeDescriptions":{"typeIdentifier":"t_array$_t_contract$_IInvestStrategy_$20725_$32_storage","typeString":"contract IInvestStrategy[32] storage ref"}},"id":16786,"indexExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":16785,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":16783,"name":"i","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":16760,"src":"14429:1:54","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"-","rightExpression":{"hexValue":"31","id":16784,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"14433:1:54","typeDescriptions":{"typeIdentifier":"t_rational_1_by_1","typeString":"int_const 1"},"value":"1"},"src":"14429:5:54","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"nodeType":"IndexAccess","src":"14417:18:54","typeDescriptions":{"typeIdentifier":"t_contract$_IInvestStrategy_$20725","typeString":"contract IInvestStrategy"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"baseExpression":{"id":16787,"name":"_strategies","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":15730,"src":"14438:11:54","typeDescriptions":{"typeIdentifier":"t_array$_t_contract$_IInvestStrategy_$20725_$32_storage","typeString":"contract IInvestStrategy[32] storage ref"}},"id":16789,"indexExpression":{"id":16788,"name":"i","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":16760,"src":"14450:1:54","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"14438:14:54","typeDescriptions":{"typeIdentifier":"t_contract$_IInvestStrategy_$20725","typeString":"contract IInvestStrategy"}},"src":"14417:35:54","typeDescriptions":{"typeIdentifier":"t_contract$_IInvestStrategy_$20725","typeString":"contract IInvestStrategy"}},"id":16791,"nodeType":"ExpressionStatement","src":"14417:35:54"}]},"condition":{"commonType":{"typeIdentifier":"t_bool","typeString":"bool"},"id":16778,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":16767,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":16765,"name":"i","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":16760,"src":"14335:1:54","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"<","rightExpression":{"id":16766,"name":"MAX_STRATEGIES","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":15717,"src":"14339:14:54","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}},"src":"14335:18:54","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"nodeType":"BinaryOperation","operator":"&&","rightExpression":{"commonType":{"typeIdentifier":"t_contract$_IInvestStrategy_$20725","typeString":"contract IInvestStrategy"},"id":16777,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"baseExpression":{"id":16768,"name":"_strategies","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":15730,"src":"14357:11:54","typeDescriptions":{"typeIdentifier":"t_array$_t_contract$_IInvestStrategy_$20725_$32_storage","typeString":"contract IInvestStrategy[32] storage ref"}},"id":16770,"indexExpression":{"id":16769,"name":"i","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":16760,"src":"14369:1:54","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"14357:14:54","typeDescriptions":{"typeIdentifier":"t_contract$_IInvestStrategy_$20725","typeString":"contract IInvestStrategy"}},"nodeType":"BinaryOperation","operator":"!=","rightExpression":{"arguments":[{"arguments":[{"hexValue":"30","id":16774,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"14399: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":16773,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"14391:7:54","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":16772,"name":"address","nodeType":"ElementaryTypeName","src":"14391:7:54","typeDescriptions":{}}},"id":16775,"isConstant":false,"isLValue":false,"isPure":true,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"14391:10:54","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"id":16771,"name":"IInvestStrategy","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":20725,"src":"14375:15:54","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_IInvestStrategy_$20725_$","typeString":"type(contract IInvestStrategy)"}},"id":16776,"isConstant":false,"isLValue":false,"isPure":true,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"14375:27:54","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_contract$_IInvestStrategy_$20725","typeString":"contract IInvestStrategy"}},"src":"14357:45:54","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"src":"14335:67:54","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":16793,"isSimpleCounterLoop":false,"loopExpression":{"expression":{"id":16780,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"UnaryOperation","operator":"++","prefix":true,"src":"14404:3:54","subExpression":{"id":16779,"name":"i","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":16760,"src":"14406:1:54","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":16781,"nodeType":"ExpressionStatement","src":"14404:3:54"},"nodeType":"ForStatement","src":"14328:131:54"},{"expression":{"id":16805,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"baseExpression":{"id":16794,"name":"_strategies","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":15730,"src":"14464:11:54","typeDescriptions":{"typeIdentifier":"t_array$_t_contract$_IInvestStrategy_$20725_$32_storage","typeString":"contract IInvestStrategy[32] storage ref"}},"id":16798,"indexExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":16797,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":16795,"name":"i","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":16760,"src":"14476:1:54","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"-","rightExpression":{"hexValue":"31","id":16796,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"14480:1:54","typeDescriptions":{"typeIdentifier":"t_rational_1_by_1","typeString":"int_const 1"},"value":"1"},"src":"14476:5:54","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"nodeType":"IndexAccess","src":"14464:18:54","typeDescriptions":{"typeIdentifier":"t_contract$_IInvestStrategy_$20725","typeString":"contract IInvestStrategy"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"arguments":[{"arguments":[{"hexValue":"30","id":16802,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"14509: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":16801,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"14501:7:54","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":16800,"name":"address","nodeType":"ElementaryTypeName","src":"14501:7:54","typeDescriptions":{}}},"id":16803,"isConstant":false,"isLValue":false,"isPure":true,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"14501:10:54","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"id":16799,"name":"IInvestStrategy","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":20725,"src":"14485:15:54","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_IInvestStrategy_$20725_$","typeString":"type(contract IInvestStrategy)"}},"id":16804,"isConstant":false,"isLValue":false,"isPure":true,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"14485:27:54","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_contract$_IInvestStrategy_$20725","typeString":"contract IInvestStrategy"}},"src":"14464:48:54","typeDescriptions":{"typeIdentifier":"t_contract$_IInvestStrategy_$20725","typeString":"contract IInvestStrategy"}},"id":16806,"nodeType":"ExpressionStatement","src":"14464:48:54"},{"assignments":[16808],"declarations":[{"constant":false,"id":16808,"mutability":"mutable","name":"shiftDeposit","nameLocation":"14573:12:54","nodeType":"VariableDeclaration","scope":16974,"src":"14568:17:54","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":16807,"name":"bool","nodeType":"ElementaryTypeName","src":"14568:4:54","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"}],"id":16809,"nodeType":"VariableDeclarationStatement","src":"14568:17:54"},{"assignments":[16811],"declarations":[{"constant":false,"id":16811,"mutability":"mutable","name":"shiftWithdraw","nameLocation":"14596:13:54","nodeType":"VariableDeclaration","scope":16974,"src":"14591:18:54","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":16810,"name":"bool","nodeType":"ElementaryTypeName","src":"14591:4:54","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"}],"id":16812,"nodeType":"VariableDeclarationStatement","src":"14591:18:54"},{"body":{"id":16945,"nodeType":"Block","src":"14678:1128:54","statements":[{"condition":{"id":16829,"name":"shiftWithdraw","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":16811,"src":"14690:13:54","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"falseBody":{"id":16885,"nodeType":"Block","src":"14901:329:54","statements":[{"condition":{"commonType":{"typeIdentifier":"t_uint8","typeString":"uint8"},"id":16862,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"baseExpression":{"id":16855,"name":"_withdrawQueue","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":15725,"src":"14915:14:54","typeDescriptions":{"typeIdentifier":"t_array$_t_uint8_$32_storage","typeString":"uint8[32] storage ref"}},"id":16857,"indexExpression":{"id":16856,"name":"i","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":16760,"src":"14930:1:54","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"14915:17:54","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"components":[{"commonType":{"typeIdentifier":"t_uint8","typeString":"uint8"},"id":16860,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":16858,"name":"strategyIndex","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":16696,"src":"14937:13:54","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}},"nodeType":"BinaryOperation","operator":"+","rightExpression":{"hexValue":"31","id":16859,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"14953:1:54","typeDescriptions":{"typeIdentifier":"t_rational_1_by_1","typeString":"int_const 1"},"value":"1"},"src":"14937:17:54","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}}],"id":16861,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"14936:19:54","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}},"src":"14915:40:54","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"falseBody":{"condition":{"commonType":{"typeIdentifier":"t_uint8","typeString":"uint8"},"id":16875,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"baseExpression":{"id":16868,"name":"_withdrawQueue","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":15725,"src":"15088:14:54","typeDescriptions":{"typeIdentifier":"t_array$_t_uint8_$32_storage","typeString":"uint8[32] storage ref"}},"id":16870,"indexExpression":{"id":16869,"name":"i","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":16760,"src":"15103:1:54","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"15088:17:54","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}},"nodeType":"BinaryOperation","operator":">","rightExpression":{"components":[{"commonType":{"typeIdentifier":"t_uint8","typeString":"uint8"},"id":16873,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":16871,"name":"strategyIndex","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":16696,"src":"15109:13:54","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}},"nodeType":"BinaryOperation","operator":"+","rightExpression":{"hexValue":"31","id":16872,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"15125:1:54","typeDescriptions":{"typeIdentifier":"t_rational_1_by_1","typeString":"int_const 1"},"value":"1"},"src":"15109:17:54","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}}],"id":16874,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"15108:19:54","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}},"src":"15088:39:54","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":16883,"nodeType":"IfStatement","src":"15084:138:54","trueBody":{"id":16882,"nodeType":"Block","src":"15129:93:54","statements":[{"expression":{"id":16880,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"baseExpression":{"id":16876,"name":"_withdrawQueue","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":15725,"src":"15189:14:54","typeDescriptions":{"typeIdentifier":"t_array$_t_uint8_$32_storage","typeString":"uint8[32] storage ref"}},"id":16878,"indexExpression":{"id":16877,"name":"i","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":16760,"src":"15204:1:54","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"nodeType":"IndexAccess","src":"15189:17:54","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}},"nodeType":"Assignment","operator":"-=","rightHandSide":{"hexValue":"31","id":16879,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"15210:1:54","typeDescriptions":{"typeIdentifier":"t_rational_1_by_1","typeString":"int_const 1"},"value":"1"},"src":"15189:22:54","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}},"id":16881,"nodeType":"ExpressionStatement","src":"15189:22:54"}]}},"id":16884,"nodeType":"IfStatement","src":"14911:311:54","trueBody":{"id":16867,"nodeType":"Block","src":"14957:121:54","statements":[{"expression":{"id":16865,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":16863,"name":"shiftWithdraw","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":16811,"src":"15047:13:54","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"hexValue":"74727565","id":16864,"isConstant":false,"isLValue":false,"isPure":true,"kind":"bool","lValueRequested":false,"nodeType":"Literal","src":"15063:4:54","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"value":"true"},"src":"15047:20:54","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":16866,"nodeType":"ExpressionStatement","src":"15047:20:54"}]}}]},"id":16886,"nodeType":"IfStatement","src":"14686:544:54","trueBody":{"id":16854,"nodeType":"Block","src":"14705:190:54","statements":[{"expression":{"id":16852,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"baseExpression":{"id":16830,"name":"_withdrawQueue","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":15725,"src":"14791:14:54","typeDescriptions":{"typeIdentifier":"t_array$_t_uint8_$32_storage","typeString":"uint8[32] storage ref"}},"id":16834,"indexExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":16833,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":16831,"name":"i","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":16760,"src":"14806:1:54","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"-","rightExpression":{"hexValue":"31","id":16832,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"14810:1:54","typeDescriptions":{"typeIdentifier":"t_rational_1_by_1","typeString":"int_const 1"},"value":"1"},"src":"14806:5:54","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"nodeType":"IndexAccess","src":"14791:21:54","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"commonType":{"typeIdentifier":"t_uint8","typeString":"uint8"},"id":16851,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"baseExpression":{"id":16835,"name":"_withdrawQueue","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":15725,"src":"14815:14:54","typeDescriptions":{"typeIdentifier":"t_array$_t_uint8_$32_storage","typeString":"uint8[32] storage ref"}},"id":16837,"indexExpression":{"id":16836,"name":"i","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":16760,"src":"14830:1:54","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"14815:17:54","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}},"nodeType":"BinaryOperation","operator":"-","rightExpression":{"components":[{"condition":{"components":[{"commonType":{"typeIdentifier":"t_uint8","typeString":"uint8"},"id":16845,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"baseExpression":{"id":16838,"name":"_withdrawQueue","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":15725,"src":"14837:14:54","typeDescriptions":{"typeIdentifier":"t_array$_t_uint8_$32_storage","typeString":"uint8[32] storage ref"}},"id":16840,"indexExpression":{"id":16839,"name":"i","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":16760,"src":"14852:1:54","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"14837:17:54","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}},"nodeType":"BinaryOperation","operator":">","rightExpression":{"components":[{"commonType":{"typeIdentifier":"t_uint8","typeString":"uint8"},"id":16843,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":16841,"name":"strategyIndex","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":16696,"src":"14858:13:54","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}},"nodeType":"BinaryOperation","operator":"+","rightExpression":{"hexValue":"31","id":16842,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"14874:1:54","typeDescriptions":{"typeIdentifier":"t_rational_1_by_1","typeString":"int_const 1"},"value":"1"},"src":"14858:17:54","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}}],"id":16844,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"14857:19:54","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}},"src":"14837:39:54","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}}],"id":16846,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"14836:41:54","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"falseExpression":{"hexValue":"30","id":16848,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"14884:1:54","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"id":16849,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"Conditional","src":"14836:49:54","trueExpression":{"hexValue":"31","id":16847,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"14880:1:54","typeDescriptions":{"typeIdentifier":"t_rational_1_by_1","typeString":"int_const 1"},"value":"1"},"typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}}],"id":16850,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"14835:51:54","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}},"src":"14815:71:54","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}},"src":"14791:95:54","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}},"id":16853,"nodeType":"ExpressionStatement","src":"14791:95:54"}]}},{"condition":{"id":16887,"name":"shiftDeposit","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":16808,"src":"15268:12:54","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"falseBody":{"id":16943,"nodeType":"Block","src":"15475:325:54","statements":[{"condition":{"commonType":{"typeIdentifier":"t_uint8","typeString":"uint8"},"id":16920,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"baseExpression":{"id":16913,"name":"_depositQueue","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":15721,"src":"15489:13:54","typeDescriptions":{"typeIdentifier":"t_array$_t_uint8_$32_storage","typeString":"uint8[32] storage ref"}},"id":16915,"indexExpression":{"id":16914,"name":"i","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":16760,"src":"15503:1:54","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"15489:16:54","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"components":[{"commonType":{"typeIdentifier":"t_uint8","typeString":"uint8"},"id":16918,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":16916,"name":"strategyIndex","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":16696,"src":"15510:13:54","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}},"nodeType":"BinaryOperation","operator":"+","rightExpression":{"hexValue":"31","id":16917,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"15526:1:54","typeDescriptions":{"typeIdentifier":"t_rational_1_by_1","typeString":"int_const 1"},"value":"1"},"src":"15510:17:54","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}}],"id":16919,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"15509:19:54","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}},"src":"15489:39:54","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"falseBody":{"condition":{"commonType":{"typeIdentifier":"t_uint8","typeString":"uint8"},"id":16933,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"baseExpression":{"id":16926,"name":"_depositQueue","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":15721,"src":"15660:13:54","typeDescriptions":{"typeIdentifier":"t_array$_t_uint8_$32_storage","typeString":"uint8[32] storage ref"}},"id":16928,"indexExpression":{"id":16927,"name":"i","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":16760,"src":"15674:1:54","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"15660:16:54","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}},"nodeType":"BinaryOperation","operator":">","rightExpression":{"components":[{"commonType":{"typeIdentifier":"t_uint8","typeString":"uint8"},"id":16931,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":16929,"name":"strategyIndex","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":16696,"src":"15680:13:54","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}},"nodeType":"BinaryOperation","operator":"+","rightExpression":{"hexValue":"31","id":16930,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"15696:1:54","typeDescriptions":{"typeIdentifier":"t_rational_1_by_1","typeString":"int_const 1"},"value":"1"},"src":"15680:17:54","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}}],"id":16932,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"15679:19:54","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}},"src":"15660:38:54","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":16941,"nodeType":"IfStatement","src":"15656:136:54","trueBody":{"id":16940,"nodeType":"Block","src":"15700:92:54","statements":[{"expression":{"id":16938,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"baseExpression":{"id":16934,"name":"_depositQueue","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":15721,"src":"15760:13:54","typeDescriptions":{"typeIdentifier":"t_array$_t_uint8_$32_storage","typeString":"uint8[32] storage ref"}},"id":16936,"indexExpression":{"id":16935,"name":"i","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":16760,"src":"15774:1:54","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"nodeType":"IndexAccess","src":"15760:16:54","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}},"nodeType":"Assignment","operator":"-=","rightHandSide":{"hexValue":"31","id":16937,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"15780:1:54","typeDescriptions":{"typeIdentifier":"t_rational_1_by_1","typeString":"int_const 1"},"value":"1"},"src":"15760:21:54","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}},"id":16939,"nodeType":"ExpressionStatement","src":"15760:21:54"}]}},"id":16942,"nodeType":"IfStatement","src":"15485:307:54","trueBody":{"id":16925,"nodeType":"Block","src":"15530:120:54","statements":[{"expression":{"id":16923,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":16921,"name":"shiftDeposit","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":16808,"src":"15620:12:54","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"hexValue":"74727565","id":16922,"isConstant":false,"isLValue":false,"isPure":true,"kind":"bool","lValueRequested":false,"nodeType":"Literal","src":"15635:4:54","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"value":"true"},"src":"15620:19:54","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":16924,"nodeType":"ExpressionStatement","src":"15620:19:54"}]}}]},"id":16944,"nodeType":"IfStatement","src":"15264:536:54","trueBody":{"id":16912,"nodeType":"Block","src":"15282:187:54","statements":[{"expression":{"id":16910,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"baseExpression":{"id":16888,"name":"_depositQueue","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":15721,"src":"15368:13:54","typeDescriptions":{"typeIdentifier":"t_array$_t_uint8_$32_storage","typeString":"uint8[32] storage ref"}},"id":16892,"indexExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":16891,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":16889,"name":"i","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":16760,"src":"15382:1:54","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"-","rightExpression":{"hexValue":"31","id":16890,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"15386:1:54","typeDescriptions":{"typeIdentifier":"t_rational_1_by_1","typeString":"int_const 1"},"value":"1"},"src":"15382:5:54","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"nodeType":"IndexAccess","src":"15368:20:54","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"commonType":{"typeIdentifier":"t_uint8","typeString":"uint8"},"id":16909,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"baseExpression":{"id":16893,"name":"_depositQueue","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":15721,"src":"15391:13:54","typeDescriptions":{"typeIdentifier":"t_array$_t_uint8_$32_storage","typeString":"uint8[32] storage ref"}},"id":16895,"indexExpression":{"id":16894,"name":"i","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":16760,"src":"15405:1:54","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"15391:16:54","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}},"nodeType":"BinaryOperation","operator":"-","rightExpression":{"components":[{"condition":{"components":[{"commonType":{"typeIdentifier":"t_uint8","typeString":"uint8"},"id":16903,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"baseExpression":{"id":16896,"name":"_depositQueue","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":15721,"src":"15412:13:54","typeDescriptions":{"typeIdentifier":"t_array$_t_uint8_$32_storage","typeString":"uint8[32] storage ref"}},"id":16898,"indexExpression":{"id":16897,"name":"i","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":16760,"src":"15426:1:54","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"15412:16:54","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}},"nodeType":"BinaryOperation","operator":">","rightExpression":{"components":[{"commonType":{"typeIdentifier":"t_uint8","typeString":"uint8"},"id":16901,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":16899,"name":"strategyIndex","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":16696,"src":"15432:13:54","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}},"nodeType":"BinaryOperation","operator":"+","rightExpression":{"hexValue":"31","id":16900,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"15448:1:54","typeDescriptions":{"typeIdentifier":"t_rational_1_by_1","typeString":"int_const 1"},"value":"1"},"src":"15432:17:54","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}}],"id":16902,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"15431:19:54","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}},"src":"15412:38:54","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}}],"id":16904,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"15411:40:54","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"falseExpression":{"hexValue":"30","id":16906,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"15458:1:54","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"id":16907,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"Conditional","src":"15411:48:54","trueExpression":{"hexValue":"31","id":16905,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"15454:1:54","typeDescriptions":{"typeIdentifier":"t_rational_1_by_1","typeString":"int_const 1"},"value":"1"},"typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}}],"id":16908,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"15410:50:54","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}},"src":"15391:69:54","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}},"src":"15368:92:54","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}},"id":16911,"nodeType":"ExpressionStatement","src":"15368:92:54"}]}}]},"condition":{"commonType":{"typeIdentifier":"t_bool","typeString":"bool"},"id":16825,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"commonType":{"typeIdentifier":"t_uint8","typeString":"uint8"},"id":16821,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"baseExpression":{"id":16817,"name":"_withdrawQueue","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":15725,"src":"14627:14:54","typeDescriptions":{"typeIdentifier":"t_array$_t_uint8_$32_storage","typeString":"uint8[32] storage ref"}},"id":16819,"indexExpression":{"id":16818,"name":"i","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":16760,"src":"14642:1:54","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"14627:17:54","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}},"nodeType":"BinaryOperation","operator":"!=","rightExpression":{"hexValue":"30","id":16820,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"14648:1:54","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"14627:22:54","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"nodeType":"BinaryOperation","operator":"&&","rightExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":16824,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":16822,"name":"i","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":16760,"src":"14653:1:54","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"<","rightExpression":{"id":16823,"name":"MAX_STRATEGIES","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":15717,"src":"14657:14:54","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}},"src":"14653:18:54","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"src":"14627:44:54","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":16946,"initializationExpression":{"expression":{"id":16815,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":16813,"name":"i","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":16760,"src":"14620:1:54","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"hexValue":"30","id":16814,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"14624:1:54","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"14620:5:54","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":16816,"nodeType":"ExpressionStatement","src":"14620:5:54"},"isSimpleCounterLoop":false,"loopExpression":{"expression":{"id":16827,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"UnaryOperation","operator":"++","prefix":true,"src":"14673:3:54","subExpression":{"id":16826,"name":"i","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":16760,"src":"14675:1:54","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":16828,"nodeType":"ExpressionStatement","src":"14673:3:54"},"nodeType":"ForStatement","src":"14615:1191:54"},{"expression":{"id":16953,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"baseExpression":{"id":16947,"name":"_depositQueue","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":15721,"src":"15811:13:54","typeDescriptions":{"typeIdentifier":"t_array$_t_uint8_$32_storage","typeString":"uint8[32] storage ref"}},"id":16951,"indexExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":16950,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":16948,"name":"i","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":16760,"src":"15825:1:54","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"-","rightExpression":{"hexValue":"31","id":16949,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"15829:1:54","typeDescriptions":{"typeIdentifier":"t_rational_1_by_1","typeString":"int_const 1"},"value":"1"},"src":"15825:5:54","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"nodeType":"IndexAccess","src":"15811:20:54","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"hexValue":"30","id":16952,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"15834:1:54","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"15811:24:54","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}},"id":16954,"nodeType":"ExpressionStatement","src":"15811:24:54"},{"expression":{"id":16961,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"baseExpression":{"id":16955,"name":"_withdrawQueue","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":15725,"src":"15841:14:54","typeDescriptions":{"typeIdentifier":"t_array$_t_uint8_$32_storage","typeString":"uint8[32] storage ref"}},"id":16959,"indexExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":16958,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":16956,"name":"i","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":16760,"src":"15856:1:54","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"-","rightExpression":{"hexValue":"31","id":16957,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"15860:1:54","typeDescriptions":{"typeIdentifier":"t_rational_1_by_1","typeString":"int_const 1"},"value":"1"},"src":"15856:5:54","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"nodeType":"IndexAccess","src":"15841:21:54","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"hexValue":"30","id":16960,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"15865:1:54","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"15841:25:54","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}},"id":16962,"nodeType":"ExpressionStatement","src":"15841:25:54"},{"expression":{"arguments":[{"id":16966,"name":"force","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":16698,"src":"15894:5:54","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"}],"expression":{"id":16963,"name":"strategy","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":16710,"src":"15872:8:54","typeDescriptions":{"typeIdentifier":"t_contract$_IInvestStrategy_$20725","typeString":"contract IInvestStrategy"}},"id":16965,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"15881:12:54","memberName":"dcDisconnect","nodeType":"MemberAccess","referencedDeclaration":15385,"src":"15872:21:54","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_contract$_IInvestStrategy_$20725_$_t_bool_$returns$__$attached_to$_t_contract$_IInvestStrategy_$20725_$","typeString":"function (contract IInvestStrategy,bool)"}},"id":16967,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"15872:28:54","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":16968,"nodeType":"ExpressionStatement","src":"15872:28:54"},{"eventCall":{"arguments":[{"id":16970,"name":"strategy","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":16710,"src":"15927:8:54","typeDescriptions":{"typeIdentifier":"t_contract$_IInvestStrategy_$20725","typeString":"contract IInvestStrategy"}},{"id":16971,"name":"strategyIndex","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":16696,"src":"15937:13:54","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_contract$_IInvestStrategy_$20725","typeString":"contract IInvestStrategy"},{"typeIdentifier":"t_uint8","typeString":"uint8"}],"id":16969,"name":"StrategyRemoved","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":15764,"src":"15911:15:54","typeDescriptions":{"typeIdentifier":"t_function_event_nonpayable$_t_contract$_IInvestStrategy_$20725_$_t_uint8_$returns$__$","typeString":"function (contract IInvestStrategy,uint8)"}},"id":16972,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"15911:40:54","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":16973,"nodeType":"EmitStatement","src":"15906:45:54"}]},"documentation":{"id":16694,"nodeType":"StructuredDocumentation","src":"13367:369:54","text":" @dev Remove an strategy from the vault. It's only possible if the strategy doesn't have assets.\n      The strategy is removed from deposit and withdraw queues\n @param strategyIndex The index of the strategy in the _strategies array\n @param force If strategy.disconnect fails, this parameter indicates whether the operation is reverted or not."},"functionSelector":"96da35da","id":16975,"implemented":true,"kind":"function","modifiers":[],"name":"removeStrategy","nameLocation":"13748:14:54","nodeType":"FunctionDefinition","parameters":{"id":16699,"nodeType":"ParameterList","parameters":[{"constant":false,"id":16696,"mutability":"mutable","name":"strategyIndex","nameLocation":"13769:13:54","nodeType":"VariableDeclaration","scope":16975,"src":"13763:19:54","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"},"typeName":{"id":16695,"name":"uint8","nodeType":"ElementaryTypeName","src":"13763:5:54","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}},"visibility":"internal"},{"constant":false,"id":16698,"mutability":"mutable","name":"force","nameLocation":"13789:5:54","nodeType":"VariableDeclaration","scope":16975,"src":"13784:10:54","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":16697,"name":"bool","nodeType":"ElementaryTypeName","src":"13784:4:54","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"}],"src":"13762:33:54"},"returnParameters":{"id":16700,"nodeType":"ParameterList","parameters":[],"src":"13811:0:54"},"scope":17366,"src":"13739:2217:54","stateMutability":"nonpayable","virtual":true,"visibility":"public"},{"body":{"id":17086,"nodeType":"Block","src":"16348:657:54","statements":[{"assignments":[16987],"declarations":[{"constant":false,"id":16987,"mutability":"mutable","name":"seen","nameLocation":"16382:4:54","nodeType":"VariableDeclaration","scope":17086,"src":"16354:32:54","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_array$_t_bool_$32_memory_ptr","typeString":"bool[32]"},"typeName":{"baseType":{"id":16985,"name":"bool","nodeType":"ElementaryTypeName","src":"16354:4:54","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":16986,"length":{"id":16984,"name":"MAX_STRATEGIES","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":15717,"src":"16359:14:54","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}},"nodeType":"ArrayTypeName","src":"16354:20:54","typeDescriptions":{"typeIdentifier":"t_array$_t_bool_$32_storage_ptr","typeString":"bool[32]"}},"visibility":"internal"}],"id":16988,"nodeType":"VariableDeclarationStatement","src":"16354:32:54"},{"assignments":[16990],"declarations":[{"constant":false,"id":16990,"mutability":"mutable","name":"i","nameLocation":"16400:1:54","nodeType":"VariableDeclaration","scope":17086,"src":"16392:9:54","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":16989,"name":"uint256","nodeType":"ElementaryTypeName","src":"16392:7:54","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":16992,"initialValue":{"hexValue":"30","id":16991,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"16404:1:54","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"nodeType":"VariableDeclarationStatement","src":"16392:13:54"},{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":16996,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"expression":{"id":16993,"name":"newDepositQueue_","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":16979,"src":"16415:16:54","typeDescriptions":{"typeIdentifier":"t_array$_t_uint8_$dyn_memory_ptr","typeString":"uint8[] memory"}},"id":16994,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"16432:6:54","memberName":"length","nodeType":"MemberAccess","src":"16415:23:54","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">","rightExpression":{"id":16995,"name":"MAX_STRATEGIES","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":15717,"src":"16441:14:54","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}},"src":"16415:40:54","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":17000,"nodeType":"IfStatement","src":"16411:67:54","trueBody":{"errorCall":{"arguments":[],"expression":{"argumentTypes":[],"id":16997,"name":"InvalidQueue","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":15811,"src":"16464:12:54","typeDescriptions":{"typeIdentifier":"t_function_error_pure$__$returns$_t_error_$","typeString":"function () pure returns (error)"}},"id":16998,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"16464:14:54","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_error","typeString":"error"}},"id":16999,"nodeType":"RevertStatement","src":"16457:21:54"}},{"body":{"id":17061,"nodeType":"Block","src":"16525:330:54","statements":[{"condition":{"commonType":{"typeIdentifier":"t_bool","typeString":"bool"},"id":17026,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"commonType":{"typeIdentifier":"t_uint8","typeString":"uint8"},"id":17012,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"baseExpression":{"id":17008,"name":"newDepositQueue_","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":16979,"src":"16537:16:54","typeDescriptions":{"typeIdentifier":"t_array$_t_uint8_$dyn_memory_ptr","typeString":"uint8[] memory"}},"id":17010,"indexExpression":{"id":17009,"name":"i","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":16990,"src":"16554:1:54","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"16537:19:54","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}},"nodeType":"BinaryOperation","operator":">=","rightExpression":{"id":17011,"name":"MAX_STRATEGIES","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":15717,"src":"16560:14:54","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}},"src":"16537:37:54","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"nodeType":"BinaryOperation","operator":"||","rightExpression":{"commonType":{"typeIdentifier":"t_address","typeString":"address"},"id":17025,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"arguments":[{"baseExpression":{"id":17015,"name":"_strategies","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":15730,"src":"16586:11:54","typeDescriptions":{"typeIdentifier":"t_array$_t_contract$_IInvestStrategy_$20725_$32_storage","typeString":"contract IInvestStrategy[32] storage ref"}},"id":17019,"indexExpression":{"baseExpression":{"id":17016,"name":"newDepositQueue_","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":16979,"src":"16598:16:54","typeDescriptions":{"typeIdentifier":"t_array$_t_uint8_$dyn_memory_ptr","typeString":"uint8[] memory"}},"id":17018,"indexExpression":{"id":17017,"name":"i","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":16990,"src":"16615:1:54","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"16598:19:54","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"16586:32:54","typeDescriptions":{"typeIdentifier":"t_contract$_IInvestStrategy_$20725","typeString":"contract IInvestStrategy"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_contract$_IInvestStrategy_$20725","typeString":"contract IInvestStrategy"}],"id":17014,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"16578:7:54","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":17013,"name":"address","nodeType":"ElementaryTypeName","src":"16578:7:54","typeDescriptions":{}}},"id":17020,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"16578:41:54","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"arguments":[{"hexValue":"30","id":17023,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"16631: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":17022,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"16623:7:54","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":17021,"name":"address","nodeType":"ElementaryTypeName","src":"16623:7:54","typeDescriptions":{}}},"id":17024,"isConstant":false,"isLValue":false,"isPure":true,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"16623:10:54","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"src":"16578:55:54","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"src":"16537:96:54","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":17030,"nodeType":"IfStatement","src":"16533:131:54","trueBody":{"errorCall":{"arguments":[],"expression":{"argumentTypes":[],"id":17027,"name":"InvalidQueue","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":15811,"src":"16650:12:54","typeDescriptions":{"typeIdentifier":"t_function_error_pure$__$returns$_t_error_$","typeString":"function () pure returns (error)"}},"id":17028,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"16650:14:54","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_error","typeString":"error"}},"id":17029,"nodeType":"RevertStatement","src":"16643:21:54"}},{"condition":{"baseExpression":{"id":17031,"name":"seen","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":16987,"src":"16676:4:54","typeDescriptions":{"typeIdentifier":"t_array$_t_bool_$32_memory_ptr","typeString":"bool[32] memory"}},"id":17035,"indexExpression":{"baseExpression":{"id":17032,"name":"newDepositQueue_","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":16979,"src":"16681:16:54","typeDescriptions":{"typeIdentifier":"t_array$_t_uint8_$dyn_memory_ptr","typeString":"uint8[] memory"}},"id":17034,"indexExpression":{"id":17033,"name":"i","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":16990,"src":"16698:1:54","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"16681:19:54","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"16676:25:54","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":17042,"nodeType":"IfStatement","src":"16672:86:54","trueBody":{"errorCall":{"arguments":[{"baseExpression":{"id":17037,"name":"newDepositQueue_","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":16979,"src":"16738:16:54","typeDescriptions":{"typeIdentifier":"t_array$_t_uint8_$dyn_memory_ptr","typeString":"uint8[] memory"}},"id":17039,"indexExpression":{"id":17038,"name":"i","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":16990,"src":"16755:1:54","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"16738:19:54","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint8","typeString":"uint8"}],"id":17036,"name":"InvalidQueueIndexDuplicated","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":15817,"src":"16710:27:54","typeDescriptions":{"typeIdentifier":"t_function_error_pure$_t_uint8_$returns$_t_error_$","typeString":"function (uint8) pure returns (error)"}},"id":17040,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"16710:48:54","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_error","typeString":"error"}},"id":17041,"nodeType":"RevertStatement","src":"16703:55:54"}},{"expression":{"id":17049,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"baseExpression":{"id":17043,"name":"seen","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":16987,"src":"16766:4:54","typeDescriptions":{"typeIdentifier":"t_array$_t_bool_$32_memory_ptr","typeString":"bool[32] memory"}},"id":17047,"indexExpression":{"baseExpression":{"id":17044,"name":"newDepositQueue_","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":16979,"src":"16771:16:54","typeDescriptions":{"typeIdentifier":"t_array$_t_uint8_$dyn_memory_ptr","typeString":"uint8[] memory"}},"id":17046,"indexExpression":{"id":17045,"name":"i","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":16990,"src":"16788:1:54","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"16771:19:54","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"nodeType":"IndexAccess","src":"16766:25:54","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"hexValue":"74727565","id":17048,"isConstant":false,"isLValue":false,"isPure":true,"kind":"bool","lValueRequested":false,"nodeType":"Literal","src":"16794:4:54","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"value":"true"},"src":"16766:32:54","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":17050,"nodeType":"ExpressionStatement","src":"16766:32:54"},{"expression":{"id":17059,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"baseExpression":{"id":17051,"name":"_depositQueue","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":15721,"src":"16806:13:54","typeDescriptions":{"typeIdentifier":"t_array$_t_uint8_$32_storage","typeString":"uint8[32] storage ref"}},"id":17053,"indexExpression":{"id":17052,"name":"i","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":16990,"src":"16820:1:54","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"nodeType":"IndexAccess","src":"16806:16:54","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"commonType":{"typeIdentifier":"t_uint8","typeString":"uint8"},"id":17058,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"baseExpression":{"id":17054,"name":"newDepositQueue_","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":16979,"src":"16825:16:54","typeDescriptions":{"typeIdentifier":"t_array$_t_uint8_$dyn_memory_ptr","typeString":"uint8[] memory"}},"id":17056,"indexExpression":{"id":17055,"name":"i","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":16990,"src":"16842:1:54","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"16825:19:54","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}},"nodeType":"BinaryOperation","operator":"+","rightExpression":{"hexValue":"31","id":17057,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"16847:1:54","typeDescriptions":{"typeIdentifier":"t_rational_1_by_1","typeString":"int_const 1"},"value":"1"},"src":"16825:23:54","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}},"src":"16806:42:54","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}},"id":17060,"nodeType":"ExpressionStatement","src":"16806:42:54"}]},"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":17004,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":17001,"name":"i","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":16990,"src":"16491:1:54","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"<","rightExpression":{"expression":{"id":17002,"name":"newDepositQueue_","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":16979,"src":"16495:16:54","typeDescriptions":{"typeIdentifier":"t_array$_t_uint8_$dyn_memory_ptr","typeString":"uint8[] memory"}},"id":17003,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"16512:6:54","memberName":"length","nodeType":"MemberAccess","src":"16495:23:54","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"16491:27:54","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":17062,"isSimpleCounterLoop":true,"loopExpression":{"expression":{"id":17006,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"UnaryOperation","operator":"++","prefix":true,"src":"16520:3:54","subExpression":{"id":17005,"name":"i","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":16990,"src":"16522:1:54","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":17007,"nodeType":"ExpressionStatement","src":"16520:3:54"},"nodeType":"ForStatement","src":"16484:371:54"},{"condition":{"commonType":{"typeIdentifier":"t_bool","typeString":"bool"},"id":17077,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":17065,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":17063,"name":"i","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":16990,"src":"16864:1:54","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"<","rightExpression":{"id":17064,"name":"MAX_STRATEGIES","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":15717,"src":"16868:14:54","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}},"src":"16864:18:54","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"nodeType":"BinaryOperation","operator":"&&","rightExpression":{"commonType":{"typeIdentifier":"t_address","typeString":"address"},"id":17076,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"arguments":[{"baseExpression":{"id":17068,"name":"_strategies","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":15730,"src":"16894:11:54","typeDescriptions":{"typeIdentifier":"t_array$_t_contract$_IInvestStrategy_$20725_$32_storage","typeString":"contract IInvestStrategy[32] storage ref"}},"id":17070,"indexExpression":{"id":17069,"name":"i","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":16990,"src":"16906:1:54","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"16894:14:54","typeDescriptions":{"typeIdentifier":"t_contract$_IInvestStrategy_$20725","typeString":"contract IInvestStrategy"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_contract$_IInvestStrategy_$20725","typeString":"contract IInvestStrategy"}],"id":17067,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"16886:7:54","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":17066,"name":"address","nodeType":"ElementaryTypeName","src":"16886:7:54","typeDescriptions":{}}},"id":17071,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"16886:23:54","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"BinaryOperation","operator":"!=","rightExpression":{"arguments":[{"hexValue":"30","id":17074,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"16921: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":17073,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"16913:7:54","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":17072,"name":"address","nodeType":"ElementaryTypeName","src":"16913:7:54","typeDescriptions":{}}},"id":17075,"isConstant":false,"isLValue":false,"isPure":true,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"16913:10:54","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"src":"16886:37:54","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"src":"16864:59:54","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":17081,"nodeType":"IfStatement","src":"16860:92:54","trueBody":{"errorCall":{"arguments":[],"expression":{"argumentTypes":[],"id":17078,"name":"InvalidQueueLength","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":15813,"src":"16932:18:54","typeDescriptions":{"typeIdentifier":"t_function_error_pure$__$returns$_t_error_$","typeString":"function () pure returns (error)"}},"id":17079,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"16932:20:54","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_error","typeString":"error"}},"id":17080,"nodeType":"RevertStatement","src":"16925:27:54"}},{"eventCall":{"arguments":[{"id":17083,"name":"newDepositQueue_","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":16979,"src":"16983:16:54","typeDescriptions":{"typeIdentifier":"t_array$_t_uint8_$dyn_memory_ptr","typeString":"uint8[] memory"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_array$_t_uint8_$dyn_memory_ptr","typeString":"uint8[] memory"}],"id":17082,"name":"DepositQueueChanged","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":15769,"src":"16963:19:54","typeDescriptions":{"typeIdentifier":"t_function_event_nonpayable$_t_array$_t_uint8_$dyn_memory_ptr_$returns$__$","typeString":"function (uint8[] memory)"}},"id":17084,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"16963:37:54","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":17085,"nodeType":"EmitStatement","src":"16958:42:54"}]},"documentation":{"id":16976,"nodeType":"StructuredDocumentation","src":"15959:310:54","text":" @dev Updates the deposit queue with a new one.\n @notice Emits DepositQueueChanged(uint8[]) when updating the deposit queue.\n @param newDepositQueue_ New deposit queue, the lenght must be the same of the installed strategies without\n                         repeated indexes"},"functionSelector":"914abf4f","id":17087,"implemented":true,"kind":"function","modifiers":[],"name":"changeDepositQueue","nameLocation":"16281:18:54","nodeType":"FunctionDefinition","parameters":{"id":16980,"nodeType":"ParameterList","parameters":[{"constant":false,"id":16979,"mutability":"mutable","name":"newDepositQueue_","nameLocation":"16315:16:54","nodeType":"VariableDeclaration","scope":17087,"src":"16300:31:54","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_array$_t_uint8_$dyn_memory_ptr","typeString":"uint8[]"},"typeName":{"baseType":{"id":16977,"name":"uint8","nodeType":"ElementaryTypeName","src":"16300:5:54","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}},"id":16978,"nodeType":"ArrayTypeName","src":"16300:7:54","typeDescriptions":{"typeIdentifier":"t_array$_t_uint8_$dyn_storage_ptr","typeString":"uint8[]"}},"visibility":"internal"}],"src":"16299:33:54"},"returnParameters":{"id":16981,"nodeType":"ParameterList","parameters":[],"src":"16348:0:54"},"scope":17366,"src":"16272:733:54","stateMutability":"nonpayable","virtual":true,"visibility":"public"},{"body":{"id":17198,"nodeType":"Block","src":"17407:666:54","statements":[{"assignments":[17099],"declarations":[{"constant":false,"id":17099,"mutability":"mutable","name":"seen","nameLocation":"17441:4:54","nodeType":"VariableDeclaration","scope":17198,"src":"17413:32:54","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_array$_t_bool_$32_memory_ptr","typeString":"bool[32]"},"typeName":{"baseType":{"id":17097,"name":"bool","nodeType":"ElementaryTypeName","src":"17413:4:54","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":17098,"length":{"id":17096,"name":"MAX_STRATEGIES","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":15717,"src":"17418:14:54","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}},"nodeType":"ArrayTypeName","src":"17413:20:54","typeDescriptions":{"typeIdentifier":"t_array$_t_bool_$32_storage_ptr","typeString":"bool[32]"}},"visibility":"internal"}],"id":17100,"nodeType":"VariableDeclarationStatement","src":"17413:32:54"},{"assignments":[17102],"declarations":[{"constant":false,"id":17102,"mutability":"mutable","name":"i","nameLocation":"17457:1:54","nodeType":"VariableDeclaration","scope":17198,"src":"17451:7:54","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"},"typeName":{"id":17101,"name":"uint8","nodeType":"ElementaryTypeName","src":"17451:5:54","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}},"visibility":"internal"}],"id":17104,"initialValue":{"hexValue":"30","id":17103,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"17461:1:54","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"nodeType":"VariableDeclarationStatement","src":"17451:11:54"},{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":17108,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"expression":{"id":17105,"name":"newWithdrawQueue_","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":17091,"src":"17472:17:54","typeDescriptions":{"typeIdentifier":"t_array$_t_uint8_$dyn_memory_ptr","typeString":"uint8[] memory"}},"id":17106,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"17490:6:54","memberName":"length","nodeType":"MemberAccess","src":"17472:24:54","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">","rightExpression":{"id":17107,"name":"MAX_STRATEGIES","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":15717,"src":"17499:14:54","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}},"src":"17472:41:54","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":17112,"nodeType":"IfStatement","src":"17468:68:54","trueBody":{"errorCall":{"arguments":[],"expression":{"argumentTypes":[],"id":17109,"name":"InvalidQueue","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":15811,"src":"17522:12:54","typeDescriptions":{"typeIdentifier":"t_function_error_pure$__$returns$_t_error_$","typeString":"function () pure returns (error)"}},"id":17110,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"17522:14:54","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_error","typeString":"error"}},"id":17111,"nodeType":"RevertStatement","src":"17515:21:54"}},{"body":{"id":17173,"nodeType":"Block","src":"17584:337:54","statements":[{"condition":{"commonType":{"typeIdentifier":"t_bool","typeString":"bool"},"id":17138,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"commonType":{"typeIdentifier":"t_uint8","typeString":"uint8"},"id":17124,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"baseExpression":{"id":17120,"name":"newWithdrawQueue_","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":17091,"src":"17596:17:54","typeDescriptions":{"typeIdentifier":"t_array$_t_uint8_$dyn_memory_ptr","typeString":"uint8[] memory"}},"id":17122,"indexExpression":{"id":17121,"name":"i","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":17102,"src":"17614:1:54","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"17596:20:54","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}},"nodeType":"BinaryOperation","operator":">=","rightExpression":{"id":17123,"name":"MAX_STRATEGIES","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":15717,"src":"17620:14:54","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}},"src":"17596:38:54","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"nodeType":"BinaryOperation","operator":"||","rightExpression":{"commonType":{"typeIdentifier":"t_address","typeString":"address"},"id":17137,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"arguments":[{"baseExpression":{"id":17127,"name":"_strategies","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":15730,"src":"17646:11:54","typeDescriptions":{"typeIdentifier":"t_array$_t_contract$_IInvestStrategy_$20725_$32_storage","typeString":"contract IInvestStrategy[32] storage ref"}},"id":17131,"indexExpression":{"baseExpression":{"id":17128,"name":"newWithdrawQueue_","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":17091,"src":"17658:17:54","typeDescriptions":{"typeIdentifier":"t_array$_t_uint8_$dyn_memory_ptr","typeString":"uint8[] memory"}},"id":17130,"indexExpression":{"id":17129,"name":"i","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":17102,"src":"17676:1:54","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"17658:20:54","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"17646:33:54","typeDescriptions":{"typeIdentifier":"t_contract$_IInvestStrategy_$20725","typeString":"contract IInvestStrategy"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_contract$_IInvestStrategy_$20725","typeString":"contract IInvestStrategy"}],"id":17126,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"17638:7:54","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":17125,"name":"address","nodeType":"ElementaryTypeName","src":"17638:7:54","typeDescriptions":{}}},"id":17132,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"17638:42:54","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"arguments":[{"hexValue":"30","id":17135,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"17692: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":17134,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"17684:7:54","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":17133,"name":"address","nodeType":"ElementaryTypeName","src":"17684:7:54","typeDescriptions":{}}},"id":17136,"isConstant":false,"isLValue":false,"isPure":true,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"17684:10:54","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"src":"17638:56:54","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"src":"17596:98:54","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":17142,"nodeType":"IfStatement","src":"17592:133:54","trueBody":{"errorCall":{"arguments":[],"expression":{"argumentTypes":[],"id":17139,"name":"InvalidQueue","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":15811,"src":"17711:12:54","typeDescriptions":{"typeIdentifier":"t_function_error_pure$__$returns$_t_error_$","typeString":"function () pure returns (error)"}},"id":17140,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"17711:14:54","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_error","typeString":"error"}},"id":17141,"nodeType":"RevertStatement","src":"17704:21:54"}},{"condition":{"baseExpression":{"id":17143,"name":"seen","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":17099,"src":"17737:4:54","typeDescriptions":{"typeIdentifier":"t_array$_t_bool_$32_memory_ptr","typeString":"bool[32] memory"}},"id":17147,"indexExpression":{"baseExpression":{"id":17144,"name":"newWithdrawQueue_","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":17091,"src":"17742:17:54","typeDescriptions":{"typeIdentifier":"t_array$_t_uint8_$dyn_memory_ptr","typeString":"uint8[] memory"}},"id":17146,"indexExpression":{"id":17145,"name":"i","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":17102,"src":"17760:1:54","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"17742:20:54","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"17737:26:54","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":17154,"nodeType":"IfStatement","src":"17733:88:54","trueBody":{"errorCall":{"arguments":[{"baseExpression":{"id":17149,"name":"newWithdrawQueue_","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":17091,"src":"17800:17:54","typeDescriptions":{"typeIdentifier":"t_array$_t_uint8_$dyn_memory_ptr","typeString":"uint8[] memory"}},"id":17151,"indexExpression":{"id":17150,"name":"i","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":17102,"src":"17818:1:54","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"17800:20:54","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint8","typeString":"uint8"}],"id":17148,"name":"InvalidQueueIndexDuplicated","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":15817,"src":"17772:27:54","typeDescriptions":{"typeIdentifier":"t_function_error_pure$_t_uint8_$returns$_t_error_$","typeString":"function (uint8) pure returns (error)"}},"id":17152,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"17772:49:54","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_error","typeString":"error"}},"id":17153,"nodeType":"RevertStatement","src":"17765:56:54"}},{"expression":{"id":17161,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"baseExpression":{"id":17155,"name":"seen","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":17099,"src":"17829:4:54","typeDescriptions":{"typeIdentifier":"t_array$_t_bool_$32_memory_ptr","typeString":"bool[32] memory"}},"id":17159,"indexExpression":{"baseExpression":{"id":17156,"name":"newWithdrawQueue_","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":17091,"src":"17834:17:54","typeDescriptions":{"typeIdentifier":"t_array$_t_uint8_$dyn_memory_ptr","typeString":"uint8[] memory"}},"id":17158,"indexExpression":{"id":17157,"name":"i","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":17102,"src":"17852:1:54","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"17834:20:54","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"nodeType":"IndexAccess","src":"17829:26:54","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"hexValue":"74727565","id":17160,"isConstant":false,"isLValue":false,"isPure":true,"kind":"bool","lValueRequested":false,"nodeType":"Literal","src":"17858:4:54","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"value":"true"},"src":"17829:33:54","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":17162,"nodeType":"ExpressionStatement","src":"17829:33:54"},{"expression":{"id":17171,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"baseExpression":{"id":17163,"name":"_withdrawQueue","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":15725,"src":"17870:14:54","typeDescriptions":{"typeIdentifier":"t_array$_t_uint8_$32_storage","typeString":"uint8[32] storage ref"}},"id":17165,"indexExpression":{"id":17164,"name":"i","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":17102,"src":"17885:1:54","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"nodeType":"IndexAccess","src":"17870:17:54","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"commonType":{"typeIdentifier":"t_uint8","typeString":"uint8"},"id":17170,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"baseExpression":{"id":17166,"name":"newWithdrawQueue_","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":17091,"src":"17890:17:54","typeDescriptions":{"typeIdentifier":"t_array$_t_uint8_$dyn_memory_ptr","typeString":"uint8[] memory"}},"id":17168,"indexExpression":{"id":17167,"name":"i","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":17102,"src":"17908:1:54","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"17890:20:54","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}},"nodeType":"BinaryOperation","operator":"+","rightExpression":{"hexValue":"31","id":17169,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"17913:1:54","typeDescriptions":{"typeIdentifier":"t_rational_1_by_1","typeString":"int_const 1"},"value":"1"},"src":"17890:24:54","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}},"src":"17870:44:54","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}},"id":17172,"nodeType":"ExpressionStatement","src":"17870:44:54"}]},"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":17116,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":17113,"name":"i","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":17102,"src":"17549:1:54","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}},"nodeType":"BinaryOperation","operator":"<","rightExpression":{"expression":{"id":17114,"name":"newWithdrawQueue_","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":17091,"src":"17553:17:54","typeDescriptions":{"typeIdentifier":"t_array$_t_uint8_$dyn_memory_ptr","typeString":"uint8[] memory"}},"id":17115,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"17571:6:54","memberName":"length","nodeType":"MemberAccess","src":"17553:24:54","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"17549:28:54","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":17174,"isSimpleCounterLoop":false,"loopExpression":{"expression":{"id":17118,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"UnaryOperation","operator":"++","prefix":true,"src":"17579:3:54","subExpression":{"id":17117,"name":"i","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":17102,"src":"17581:1:54","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}},"typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}},"id":17119,"nodeType":"ExpressionStatement","src":"17579:3:54"},"nodeType":"ForStatement","src":"17542:379:54"},{"condition":{"commonType":{"typeIdentifier":"t_bool","typeString":"bool"},"id":17189,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"commonType":{"typeIdentifier":"t_uint8","typeString":"uint8"},"id":17177,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":17175,"name":"i","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":17102,"src":"17930:1:54","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}},"nodeType":"BinaryOperation","operator":"<","rightExpression":{"id":17176,"name":"MAX_STRATEGIES","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":15717,"src":"17934:14:54","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}},"src":"17930:18:54","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"nodeType":"BinaryOperation","operator":"&&","rightExpression":{"commonType":{"typeIdentifier":"t_address","typeString":"address"},"id":17188,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"arguments":[{"baseExpression":{"id":17180,"name":"_strategies","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":15730,"src":"17960:11:54","typeDescriptions":{"typeIdentifier":"t_array$_t_contract$_IInvestStrategy_$20725_$32_storage","typeString":"contract IInvestStrategy[32] storage ref"}},"id":17182,"indexExpression":{"id":17181,"name":"i","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":17102,"src":"17972:1:54","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"17960:14:54","typeDescriptions":{"typeIdentifier":"t_contract$_IInvestStrategy_$20725","typeString":"contract IInvestStrategy"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_contract$_IInvestStrategy_$20725","typeString":"contract IInvestStrategy"}],"id":17179,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"17952:7:54","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":17178,"name":"address","nodeType":"ElementaryTypeName","src":"17952:7:54","typeDescriptions":{}}},"id":17183,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"17952:23:54","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"BinaryOperation","operator":"!=","rightExpression":{"arguments":[{"hexValue":"30","id":17186,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"17987: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":17185,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"17979:7:54","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":17184,"name":"address","nodeType":"ElementaryTypeName","src":"17979:7:54","typeDescriptions":{}}},"id":17187,"isConstant":false,"isLValue":false,"isPure":true,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"17979:10:54","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"src":"17952:37:54","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"src":"17930:59:54","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":17193,"nodeType":"IfStatement","src":"17926:92:54","trueBody":{"errorCall":{"arguments":[],"expression":{"argumentTypes":[],"id":17190,"name":"InvalidQueueLength","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":15813,"src":"17998:18:54","typeDescriptions":{"typeIdentifier":"t_function_error_pure$__$returns$_t_error_$","typeString":"function () pure returns (error)"}},"id":17191,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"17998:20:54","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_error","typeString":"error"}},"id":17192,"nodeType":"RevertStatement","src":"17991:27:54"}},{"eventCall":{"arguments":[{"id":17195,"name":"newWithdrawQueue_","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":17091,"src":"18050:17:54","typeDescriptions":{"typeIdentifier":"t_array$_t_uint8_$dyn_memory_ptr","typeString":"uint8[] memory"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_array$_t_uint8_$dyn_memory_ptr","typeString":"uint8[] memory"}],"id":17194,"name":"WithdrawQueueChanged","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":15774,"src":"18029:20:54","typeDescriptions":{"typeIdentifier":"t_function_event_nonpayable$_t_array$_t_uint8_$dyn_memory_ptr_$returns$__$","typeString":"function (uint8[] memory)"}},"id":17196,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"18029:39:54","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":17197,"nodeType":"EmitStatement","src":"18024:44:54"}]},"documentation":{"id":17088,"nodeType":"StructuredDocumentation","src":"17009:317:54","text":" @dev Updates the withdraw queue with a new one.\n @notice Emits WithdrawQueueChanged(uint8[]) when updating the deposit queue.\n @param newWithdrawQueue_ New withdrawal queue, the lenght must be the same of the installed strategies without\n                          repeated indexes"},"functionSelector":"bd577eb6","id":17199,"implemented":true,"kind":"function","modifiers":[],"name":"changeWithdrawQueue","nameLocation":"17338:19:54","nodeType":"FunctionDefinition","parameters":{"id":17092,"nodeType":"ParameterList","parameters":[{"constant":false,"id":17091,"mutability":"mutable","name":"newWithdrawQueue_","nameLocation":"17373:17:54","nodeType":"VariableDeclaration","scope":17199,"src":"17358:32:54","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_array$_t_uint8_$dyn_memory_ptr","typeString":"uint8[]"},"typeName":{"baseType":{"id":17089,"name":"uint8","nodeType":"ElementaryTypeName","src":"17358:5:54","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}},"id":17090,"nodeType":"ArrayTypeName","src":"17358:7:54","typeDescriptions":{"typeIdentifier":"t_array$_t_uint8_$dyn_storage_ptr","typeString":"uint8[]"}},"visibility":"internal"}],"src":"17357:34:54"},"returnParameters":{"id":17093,"nodeType":"ParameterList","parameters":[],"src":"17407:0:54"},"scope":17366,"src":"17329:744:54","stateMutability":"nonpayable","virtual":true,"visibility":"public"},{"body":{"id":17325,"nodeType":"Block","src":"18656:897:54","statements":[{"condition":{"commonType":{"typeIdentifier":"t_bool","typeString":"bool"},"id":17217,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"commonType":{"typeIdentifier":"t_uint8","typeString":"uint8"},"id":17213,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":17211,"name":"strategyFromIdx","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":17202,"src":"18666:15:54","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}},"nodeType":"BinaryOperation","operator":">=","rightExpression":{"id":17212,"name":"MAX_STRATEGIES","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":15717,"src":"18685:14:54","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}},"src":"18666:33:54","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"nodeType":"BinaryOperation","operator":"||","rightExpression":{"commonType":{"typeIdentifier":"t_uint8","typeString":"uint8"},"id":17216,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":17214,"name":"strategyToIdx","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":17204,"src":"18703:13:54","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}},"nodeType":"BinaryOperation","operator":">=","rightExpression":{"id":17215,"name":"MAX_STRATEGIES","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":15717,"src":"18720:14:54","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}},"src":"18703:31:54","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"src":"18666:68:54","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":17221,"nodeType":"IfStatement","src":"18662:98:54","trueBody":{"errorCall":{"arguments":[],"expression":{"argumentTypes":[],"id":17218,"name":"InvalidStrategy","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":15788,"src":"18743:15:54","typeDescriptions":{"typeIdentifier":"t_function_error_pure$__$returns$_t_error_$","typeString":"function () pure returns (error)"}},"id":17219,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"18743:17:54","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_error","typeString":"error"}},"id":17220,"nodeType":"RevertStatement","src":"18736:24:54"}},{"assignments":[17224],"declarations":[{"constant":false,"id":17224,"mutability":"mutable","name":"strategyFrom","nameLocation":"18782:12:54","nodeType":"VariableDeclaration","scope":17325,"src":"18766:28:54","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_contract$_IInvestStrategy_$20725","typeString":"contract IInvestStrategy"},"typeName":{"id":17223,"nodeType":"UserDefinedTypeName","pathNode":{"id":17222,"name":"IInvestStrategy","nameLocations":["18766:15:54"],"nodeType":"IdentifierPath","referencedDeclaration":20725,"src":"18766:15:54"},"referencedDeclaration":20725,"src":"18766:15:54","typeDescriptions":{"typeIdentifier":"t_contract$_IInvestStrategy_$20725","typeString":"contract IInvestStrategy"}},"visibility":"internal"}],"id":17228,"initialValue":{"baseExpression":{"id":17225,"name":"_strategies","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":15730,"src":"18797:11:54","typeDescriptions":{"typeIdentifier":"t_array$_t_contract$_IInvestStrategy_$20725_$32_storage","typeString":"contract IInvestStrategy[32] storage ref"}},"id":17227,"indexExpression":{"id":17226,"name":"strategyFromIdx","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":17202,"src":"18809:15:54","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"18797:28:54","typeDescriptions":{"typeIdentifier":"t_contract$_IInvestStrategy_$20725","typeString":"contract IInvestStrategy"}},"nodeType":"VariableDeclarationStatement","src":"18766:59:54"},{"assignments":[17231],"declarations":[{"constant":false,"id":17231,"mutability":"mutable","name":"strategyTo","nameLocation":"18847:10:54","nodeType":"VariableDeclaration","scope":17325,"src":"18831:26:54","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_contract$_IInvestStrategy_$20725","typeString":"contract IInvestStrategy"},"typeName":{"id":17230,"nodeType":"UserDefinedTypeName","pathNode":{"id":17229,"name":"IInvestStrategy","nameLocations":["18831:15:54"],"nodeType":"IdentifierPath","referencedDeclaration":20725,"src":"18831:15:54"},"referencedDeclaration":20725,"src":"18831:15:54","typeDescriptions":{"typeIdentifier":"t_contract$_IInvestStrategy_$20725","typeString":"contract IInvestStrategy"}},"visibility":"internal"}],"id":17235,"initialValue":{"baseExpression":{"id":17232,"name":"_strategies","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":15730,"src":"18860:11:54","typeDescriptions":{"typeIdentifier":"t_array$_t_contract$_IInvestStrategy_$20725_$32_storage","typeString":"contract IInvestStrategy[32] storage ref"}},"id":17234,"indexExpression":{"id":17233,"name":"strategyToIdx","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":17204,"src":"18872:13:54","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"18860:26:54","typeDescriptions":{"typeIdentifier":"t_contract$_IInvestStrategy_$20725","typeString":"contract IInvestStrategy"}},"nodeType":"VariableDeclarationStatement","src":"18831:55:54"},{"condition":{"commonType":{"typeIdentifier":"t_bool","typeString":"bool"},"id":17254,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"commonType":{"typeIdentifier":"t_address","typeString":"address"},"id":17244,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"arguments":[{"id":17238,"name":"strategyFrom","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":17224,"src":"18904:12:54","typeDescriptions":{"typeIdentifier":"t_contract$_IInvestStrategy_$20725","typeString":"contract IInvestStrategy"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_contract$_IInvestStrategy_$20725","typeString":"contract IInvestStrategy"}],"id":17237,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"18896:7:54","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":17236,"name":"address","nodeType":"ElementaryTypeName","src":"18896:7:54","typeDescriptions":{}}},"id":17239,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"18896:21:54","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"arguments":[{"hexValue":"30","id":17242,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"18929: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":17241,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"18921:7:54","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":17240,"name":"address","nodeType":"ElementaryTypeName","src":"18921:7:54","typeDescriptions":{}}},"id":17243,"isConstant":false,"isLValue":false,"isPure":true,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"18921:10:54","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"src":"18896:35:54","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"nodeType":"BinaryOperation","operator":"||","rightExpression":{"commonType":{"typeIdentifier":"t_address","typeString":"address"},"id":17253,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"arguments":[{"id":17247,"name":"strategyTo","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":17231,"src":"18943:10:54","typeDescriptions":{"typeIdentifier":"t_contract$_IInvestStrategy_$20725","typeString":"contract IInvestStrategy"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_contract$_IInvestStrategy_$20725","typeString":"contract IInvestStrategy"}],"id":17246,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"18935:7:54","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":17245,"name":"address","nodeType":"ElementaryTypeName","src":"18935:7:54","typeDescriptions":{}}},"id":17248,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"18935:19:54","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"arguments":[{"hexValue":"30","id":17251,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"18966: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":17250,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"18958:7:54","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":17249,"name":"address","nodeType":"ElementaryTypeName","src":"18958:7:54","typeDescriptions":{}}},"id":17252,"isConstant":false,"isLValue":false,"isPure":true,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"18958:10:54","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"src":"18935:33:54","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"src":"18896:72:54","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":17258,"nodeType":"IfStatement","src":"18892:102:54","trueBody":{"errorCall":{"arguments":[],"expression":{"argumentTypes":[],"id":17255,"name":"InvalidStrategy","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":15788,"src":"18977:15:54","typeDescriptions":{"typeIdentifier":"t_function_error_pure$__$returns$_t_error_$","typeString":"function () pure returns (error)"}},"id":17256,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"18977:17:54","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_error","typeString":"error"}},"id":17257,"nodeType":"RevertStatement","src":"18970:24:54"}},{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":17265,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":17259,"name":"amount","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":17206,"src":"19004:6:54","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"expression":{"arguments":[{"id":17262,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"19019:7:54","typeDescriptions":{"typeIdentifier":"t_type$_t_uint256_$","typeString":"type(uint256)"},"typeName":{"id":17261,"name":"uint256","nodeType":"ElementaryTypeName","src":"19019:7:54","typeDescriptions":{}}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_type$_t_uint256_$","typeString":"type(uint256)"}],"id":17260,"name":"type","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-27,"src":"19014:4:54","typeDescriptions":{"typeIdentifier":"t_function_metatype_pure$__$returns$__$","typeString":"function () pure"}},"id":17263,"isConstant":false,"isLValue":false,"isPure":true,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"19014:13:54","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_magic_meta_type_t_uint256","typeString":"type(uint256)"}},"id":17264,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberLocation":"19028:3:54","memberName":"max","nodeType":"MemberAccess","src":"19014:17:54","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"19004:27:54","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":17272,"nodeType":"IfStatement","src":"19000:68:54","trueBody":{"expression":{"id":17270,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":17266,"name":"amount","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":17206,"src":"19033:6:54","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"arguments":[],"expression":{"argumentTypes":[],"expression":{"id":17267,"name":"strategyFrom","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":17224,"src":"19042:12:54","typeDescriptions":{"typeIdentifier":"t_contract$_IInvestStrategy_$20725","typeString":"contract IInvestStrategy"}},"id":17268,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"19055:11:54","memberName":"totalAssets","nodeType":"MemberAccess","referencedDeclaration":15656,"src":"19042:24:54","typeDescriptions":{"typeIdentifier":"t_function_internal_view$_t_contract$_IInvestStrategy_$20725_$returns$_t_uint256_$attached_to$_t_contract$_IInvestStrategy_$20725_$","typeString":"function (contract IInvestStrategy) view returns (uint256)"}},"id":17269,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"19042:26:54","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"19033:35:54","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":17271,"nodeType":"ExpressionStatement","src":"19033:35:54"}},{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":17275,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":17273,"name":"amount","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":17206,"src":"19078:6:54","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"hexValue":"30","id":17274,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"19088:1:54","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"19078:11:54","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":17278,"nodeType":"IfStatement","src":"19074:25:54","trueBody":{"expression":{"hexValue":"30","id":17276,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"19098:1:54","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"functionReturnParameters":17210,"id":17277,"nodeType":"Return","src":"19091:8:54"}},{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":17283,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":17279,"name":"amount","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":17206,"src":"19177:6:54","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">","rightExpression":{"arguments":[],"expression":{"argumentTypes":[],"expression":{"id":17280,"name":"strategyFrom","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":17224,"src":"19186:12:54","typeDescriptions":{"typeIdentifier":"t_contract$_IInvestStrategy_$20725","typeString":"contract IInvestStrategy"}},"id":17281,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"19199:11:54","memberName":"maxWithdraw","nodeType":"MemberAccess","referencedDeclaration":15692,"src":"19186:24:54","typeDescriptions":{"typeIdentifier":"t_function_internal_view$_t_contract$_IInvestStrategy_$20725_$returns$_t_uint256_$attached_to$_t_contract$_IInvestStrategy_$20725_$","typeString":"function (contract IInvestStrategy) view returns (uint256)"}},"id":17282,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"19186:26:54","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"19177:35:54","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":17290,"nodeType":"IfStatement","src":"19173:109:54","trueBody":{"errorCall":{"arguments":[{"arguments":[],"expression":{"argumentTypes":[],"expression":{"id":17285,"name":"strategyFrom","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":17224,"src":"19255:12:54","typeDescriptions":{"typeIdentifier":"t_contract$_IInvestStrategy_$20725","typeString":"contract IInvestStrategy"}},"id":17286,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"19268:11:54","memberName":"maxWithdraw","nodeType":"MemberAccess","referencedDeclaration":15692,"src":"19255:24:54","typeDescriptions":{"typeIdentifier":"t_function_internal_view$_t_contract$_IInvestStrategy_$20725_$returns$_t_uint256_$attached_to$_t_contract$_IInvestStrategy_$20725_$","typeString":"function (contract IInvestStrategy) view returns (uint256)"}},"id":17287,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"19255:26:54","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":17284,"name":"RebalanceAmountExceedsMaxWithdraw","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":15825,"src":"19221:33:54","typeDescriptions":{"typeIdentifier":"t_function_error_pure$_t_uint256_$returns$_t_error_$","typeString":"function (uint256) pure returns (error)"}},"id":17288,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"19221:61:54","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_error","typeString":"error"}},"id":17289,"nodeType":"RevertStatement","src":"19214:68:54"}},{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":17295,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":17291,"name":"amount","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":17206,"src":"19292:6:54","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">","rightExpression":{"arguments":[],"expression":{"argumentTypes":[],"expression":{"id":17292,"name":"strategyTo","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":17231,"src":"19301:10:54","typeDescriptions":{"typeIdentifier":"t_contract$_IInvestStrategy_$20725","typeString":"contract IInvestStrategy"}},"id":17293,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"19312:10:54","memberName":"maxDeposit","nodeType":"MemberAccess","referencedDeclaration":15674,"src":"19301:21:54","typeDescriptions":{"typeIdentifier":"t_function_internal_view$_t_contract$_IInvestStrategy_$20725_$returns$_t_uint256_$attached_to$_t_contract$_IInvestStrategy_$20725_$","typeString":"function (contract IInvestStrategy) view returns (uint256)"}},"id":17294,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"19301:23:54","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"19292:32:54","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":17302,"nodeType":"IfStatement","src":"19288:102:54","trueBody":{"errorCall":{"arguments":[{"arguments":[],"expression":{"argumentTypes":[],"expression":{"id":17297,"name":"strategyTo","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":17231,"src":"19366:10:54","typeDescriptions":{"typeIdentifier":"t_contract$_IInvestStrategy_$20725","typeString":"contract IInvestStrategy"}},"id":17298,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"19377:10:54","memberName":"maxDeposit","nodeType":"MemberAccess","referencedDeclaration":15674,"src":"19366:21:54","typeDescriptions":{"typeIdentifier":"t_function_internal_view$_t_contract$_IInvestStrategy_$20725_$returns$_t_uint256_$attached_to$_t_contract$_IInvestStrategy_$20725_$","typeString":"function (contract IInvestStrategy) view returns (uint256)"}},"id":17299,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"19366:23:54","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":17296,"name":"RebalanceAmountExceedsMaxDeposit","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":15821,"src":"19333:32:54","typeDescriptions":{"typeIdentifier":"t_function_error_pure$_t_uint256_$returns$_t_error_$","typeString":"function (uint256) pure returns (error)"}},"id":17300,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"19333:57:54","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_error","typeString":"error"}},"id":17301,"nodeType":"RevertStatement","src":"19326:64:54"}},{"expression":{"arguments":[{"id":17306,"name":"amount","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":17206,"src":"19420:6:54","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"hexValue":"66616c7365","id":17307,"isConstant":false,"isLValue":false,"isPure":true,"kind":"bool","lValueRequested":false,"nodeType":"Literal","src":"19428:5:54","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"value":"false"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_bool","typeString":"bool"}],"expression":{"id":17303,"name":"strategyFrom","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":17224,"src":"19396:12:54","typeDescriptions":{"typeIdentifier":"t_contract$_IInvestStrategy_$20725","typeString":"contract IInvestStrategy"}},"id":17305,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"19409:10:54","memberName":"dcWithdraw","nodeType":"MemberAccess","referencedDeclaration":15444,"src":"19396:23:54","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_contract$_IInvestStrategy_$20725_$_t_uint256_$_t_bool_$returns$_t_bool_$attached_to$_t_contract$_IInvestStrategy_$20725_$","typeString":"function (contract IInvestStrategy,uint256,bool) returns (bool)"}},"id":17308,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"19396:38:54","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":17309,"nodeType":"ExpressionStatement","src":"19396:38:54"},{"expression":{"arguments":[{"id":17313,"name":"amount","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":17206,"src":"19461:6:54","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"hexValue":"66616c7365","id":17314,"isConstant":false,"isLValue":false,"isPure":true,"kind":"bool","lValueRequested":false,"nodeType":"Literal","src":"19469:5:54","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"value":"false"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_bool","typeString":"bool"}],"expression":{"id":17310,"name":"strategyTo","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":17231,"src":"19440:10:54","typeDescriptions":{"typeIdentifier":"t_contract$_IInvestStrategy_$20725","typeString":"contract IInvestStrategy"}},"id":17312,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"19451:9:54","memberName":"dcDeposit","nodeType":"MemberAccess","referencedDeclaration":15503,"src":"19440:20:54","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_contract$_IInvestStrategy_$20725_$_t_uint256_$_t_bool_$returns$_t_bool_$attached_to$_t_contract$_IInvestStrategy_$20725_$","typeString":"function (contract IInvestStrategy,uint256,bool) returns (bool)"}},"id":17315,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"19440:35:54","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":17316,"nodeType":"ExpressionStatement","src":"19440:35:54"},{"eventCall":{"arguments":[{"id":17318,"name":"strategyFrom","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":17224,"src":"19496:12:54","typeDescriptions":{"typeIdentifier":"t_contract$_IInvestStrategy_$20725","typeString":"contract IInvestStrategy"}},{"id":17319,"name":"strategyTo","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":17231,"src":"19510:10:54","typeDescriptions":{"typeIdentifier":"t_contract$_IInvestStrategy_$20725","typeString":"contract IInvestStrategy"}},{"id":17320,"name":"amount","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":17206,"src":"19522:6:54","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_contract$_IInvestStrategy_$20725","typeString":"contract IInvestStrategy"},{"typeIdentifier":"t_contract$_IInvestStrategy_$20725","typeString":"contract IInvestStrategy"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":17317,"name":"Rebalance","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":15784,"src":"19486:9:54","typeDescriptions":{"typeIdentifier":"t_function_event_nonpayable$_t_contract$_IInvestStrategy_$20725_$_t_contract$_IInvestStrategy_$20725_$_t_uint256_$returns$__$","typeString":"function (contract IInvestStrategy,contract IInvestStrategy,uint256)"}},"id":17321,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"19486:43:54","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":17322,"nodeType":"EmitStatement","src":"19481:48:54"},{"expression":{"id":17323,"name":"amount","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":17206,"src":"19542:6:54","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"functionReturnParameters":17210,"id":17324,"nodeType":"Return","src":"19535:13:54"}]},"documentation":{"id":17200,"nodeType":"StructuredDocumentation","src":"18077:464:54","text":" @dev Moves funds from one strategy to another.\n @notice Emits {Rebalance(strategyFrom, strategyTo, amount)}\n @param strategyFromIdx The index of the strategy that will provide the funds in the _strategies array\n @param strategyToIdx The index of the strategy that will receive the funds in the _strategies array\n @param amount The amount to transfer from one strategy to the other. type(uint256).max to move all the assets."},"functionSelector":"e682324d","id":17326,"implemented":true,"kind":"function","modifiers":[],"name":"rebalance","nameLocation":"18553:9:54","nodeType":"FunctionDefinition","parameters":{"id":17207,"nodeType":"ParameterList","parameters":[{"constant":false,"id":17202,"mutability":"mutable","name":"strategyFromIdx","nameLocation":"18569:15:54","nodeType":"VariableDeclaration","scope":17326,"src":"18563:21:54","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"},"typeName":{"id":17201,"name":"uint8","nodeType":"ElementaryTypeName","src":"18563:5:54","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}},"visibility":"internal"},{"constant":false,"id":17204,"mutability":"mutable","name":"strategyToIdx","nameLocation":"18592:13:54","nodeType":"VariableDeclaration","scope":17326,"src":"18586:19:54","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"},"typeName":{"id":17203,"name":"uint8","nodeType":"ElementaryTypeName","src":"18586:5:54","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}},"visibility":"internal"},{"constant":false,"id":17206,"mutability":"mutable","name":"amount","nameLocation":"18615:6:54","nodeType":"VariableDeclaration","scope":17326,"src":"18607:14:54","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":17205,"name":"uint256","nodeType":"ElementaryTypeName","src":"18607:7:54","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"18562:60:54"},"returnParameters":{"id":17210,"nodeType":"ParameterList","parameters":[{"constant":false,"id":17209,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":17326,"src":"18647:7:54","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":17208,"name":"uint256","nodeType":"ElementaryTypeName","src":"18647:7:54","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"18646:9:54"},"scope":17366,"src":"18544:1009:54","stateMutability":"nonpayable","virtual":true,"visibility":"public"},{"body":{"id":17337,"nodeType":"Block","src":"19808:29:54","statements":[{"expression":{"id":17335,"name":"_strategies","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":15730,"src":"19821:11:54","typeDescriptions":{"typeIdentifier":"t_array$_t_contract$_IInvestStrategy_$20725_$32_storage","typeString":"contract IInvestStrategy[32] storage ref"}},"functionReturnParameters":17334,"id":17336,"nodeType":"Return","src":"19814:18:54"}]},"documentation":{"id":17327,"nodeType":"StructuredDocumentation","src":"19557:163:54","text":" @dev Returns the list of strategies in the vault in order.\n      The array is filled with zero addresses after the first one that is address(0)."},"functionSelector":"d9f9027f","id":17338,"implemented":true,"kind":"function","modifiers":[],"name":"strategies","nameLocation":"19732:10:54","nodeType":"FunctionDefinition","parameters":{"id":17328,"nodeType":"ParameterList","parameters":[],"src":"19742:2:54"},"returnParameters":{"id":17334,"nodeType":"ParameterList","parameters":[{"constant":false,"id":17333,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":17338,"src":"19768:38:54","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_array$_t_contract$_IInvestStrategy_$20725_$32_memory_ptr","typeString":"contract IInvestStrategy[32]"},"typeName":{"baseType":{"id":17330,"nodeType":"UserDefinedTypeName","pathNode":{"id":17329,"name":"IInvestStrategy","nameLocations":["19768:15:54"],"nodeType":"IdentifierPath","referencedDeclaration":20725,"src":"19768:15:54"},"referencedDeclaration":20725,"src":"19768:15:54","typeDescriptions":{"typeIdentifier":"t_contract$_IInvestStrategy_$20725","typeString":"contract IInvestStrategy"}},"id":17332,"length":{"id":17331,"name":"MAX_STRATEGIES","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":15717,"src":"19784:14:54","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}},"nodeType":"ArrayTypeName","src":"19768:31:54","typeDescriptions":{"typeIdentifier":"t_array$_t_contract$_IInvestStrategy_$20725_$32_storage_ptr","typeString":"contract IInvestStrategy[32]"}},"visibility":"internal"}],"src":"19767:40:54"},"scope":17366,"src":"19723:114:54","stateMutability":"view","virtual":false,"visibility":"external"},{"body":{"id":17348,"nodeType":"Block","src":"20080:31:54","statements":[{"expression":{"id":17346,"name":"_depositQueue","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":15721,"src":"20093:13:54","typeDescriptions":{"typeIdentifier":"t_array$_t_uint8_$32_storage","typeString":"uint8[32] storage ref"}},"functionReturnParameters":17345,"id":17347,"nodeType":"Return","src":"20086:20:54"}]},"documentation":{"id":17339,"nodeType":"StructuredDocumentation","src":"19841:159:54","text":" @dev Returns the order in which the deposits will be made, expressed as index+1 in the _strategies array,\n      filled with zeros at the end"},"functionSelector":"f617eecc","id":17349,"implemented":true,"kind":"function","modifiers":[],"name":"depositQueue","nameLocation":"20012:12:54","nodeType":"FunctionDefinition","parameters":{"id":17340,"nodeType":"ParameterList","parameters":[],"src":"20024:2:54"},"returnParameters":{"id":17345,"nodeType":"ParameterList","parameters":[{"constant":false,"id":17344,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":17349,"src":"20050:28:54","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_array$_t_uint8_$32_memory_ptr","typeString":"uint8[32]"},"typeName":{"baseType":{"id":17341,"name":"uint8","nodeType":"ElementaryTypeName","src":"20050:5:54","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}},"id":17343,"length":{"id":17342,"name":"MAX_STRATEGIES","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":15717,"src":"20056:14:54","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}},"nodeType":"ArrayTypeName","src":"20050:21:54","typeDescriptions":{"typeIdentifier":"t_array$_t_uint8_$32_storage_ptr","typeString":"uint8[32]"}},"visibility":"internal"}],"src":"20049:30:54"},"scope":17366,"src":"20003:108:54","stateMutability":"view","virtual":false,"visibility":"external"},{"body":{"id":17359,"nodeType":"Block","src":"20356:32:54","statements":[{"expression":{"id":17357,"name":"_withdrawQueue","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":15725,"src":"20369:14:54","typeDescriptions":{"typeIdentifier":"t_array$_t_uint8_$32_storage","typeString":"uint8[32] storage ref"}},"functionReturnParameters":17356,"id":17358,"nodeType":"Return","src":"20362:21:54"}]},"documentation":{"id":17350,"nodeType":"StructuredDocumentation","src":"20115:160:54","text":" @dev Returns the order in which the withdraws will be made, expressed as index+1 in the _strategies array,\n      filled with zeros at the end"},"functionSelector":"51a2d6d1","id":17360,"implemented":true,"kind":"function","modifiers":[],"name":"withdrawQueue","nameLocation":"20287:13:54","nodeType":"FunctionDefinition","parameters":{"id":17351,"nodeType":"ParameterList","parameters":[],"src":"20300:2:54"},"returnParameters":{"id":17356,"nodeType":"ParameterList","parameters":[{"constant":false,"id":17355,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":17360,"src":"20326:28:54","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_array$_t_uint8_$32_memory_ptr","typeString":"uint8[32]"},"typeName":{"baseType":{"id":17352,"name":"uint8","nodeType":"ElementaryTypeName","src":"20326:5:54","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}},"id":17354,"length":{"id":17353,"name":"MAX_STRATEGIES","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":15717,"src":"20332:14:54","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}},"nodeType":"ArrayTypeName","src":"20326:21:54","typeDescriptions":{"typeIdentifier":"t_array$_t_uint8_$32_storage_ptr","typeString":"uint8[32]"}},"visibility":"internal"}],"src":"20325:30:54"},"scope":17366,"src":"20278:110:54","stateMutability":"view","virtual":false,"visibility":"external"},{"constant":false,"documentation":{"id":17361,"nodeType":"StructuredDocumentation","src":"20392:246:54","text":" @dev This empty reserved space is put in place to allow future versions to add new\n variables without shifting down storage in the inheritance chain.\n See https://docs.openzeppelin.com/contracts/4.x/upgradeable#storage_gaps"},"id":17365,"mutability":"mutable","name":"__gap","nameLocation":"20661:5:54","nodeType":"VariableDeclaration","scope":17366,"src":"20641:25:54","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$16_storage","typeString":"uint256[16]"},"typeName":{"baseType":{"id":17362,"name":"uint256","nodeType":"ElementaryTypeName","src":"20641:7:54","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":17364,"length":{"hexValue":"3136","id":17363,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"20649:2:54","typeDescriptions":{"typeIdentifier":"t_rational_16_by_1","typeString":"int_const 16"},"value":"16"},"nodeType":"ArrayTypeName","src":"20641:11:54","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$16_storage_ptr","typeString":"uint256[16]"}},"visibility":"private"}],"scope":17367,"src":"1644:19025:54","usedErrors":[9878,10299,15311,15786,15788,15793,15797,15801,15803,15805,15807,15809,15811,15813,15817,15821,15825],"usedEvents":[15297,15301,15305,15309,15738,15742,15746,15750,15757,15764,15769,15774,15784]}],"src":"39:20631:54"},"id":54},"contracts/OutflowLimitedAMMSV.sol":{"ast":{"absolutePath":"contracts/OutflowLimitedAMMSV.sol","exportedSymbols":{"AccessManagedMSV":[15277],"ERC4626Upgradeable":[4428],"OutflowLimitedAMMSV":[17740],"SafeCast":[14491]},"id":17741,"license":"Apache-2.0","nodeType":"SourceUnit","nodes":[{"id":17368,"literals":["solidity","^","0.8",".0"],"nodeType":"PragmaDirective","src":"39:23:55"},{"absolutePath":"@openzeppelin/contracts-upgradeable/token/ERC20/extensions/ERC4626Upgradeable.sol","file":"@openzeppelin/contracts-upgradeable/token/ERC20/extensions/ERC4626Upgradeable.sol","id":17370,"nameLocation":"-1:-1:-1","nodeType":"ImportDirective","scope":17741,"sourceUnit":4429,"src":"64:117:55","symbolAliases":[{"foreign":{"id":17369,"name":"ERC4626Upgradeable","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4428,"src":"72:18:55","typeDescriptions":{}},"nameLocation":"-1:-1:-1"}],"unitAlias":""},{"absolutePath":"contracts/AccessManagedMSV.sol","file":"./AccessManagedMSV.sol","id":17372,"nameLocation":"-1:-1:-1","nodeType":"ImportDirective","scope":17741,"sourceUnit":15278,"src":"182:56:55","symbolAliases":[{"foreign":{"id":17371,"name":"AccessManagedMSV","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":15277,"src":"190:16:55","typeDescriptions":{}},"nameLocation":"-1:-1:-1"}],"unitAlias":""},{"absolutePath":"@openzeppelin/contracts/utils/math/SafeCast.sol","file":"@openzeppelin/contracts/utils/math/SafeCast.sol","id":17374,"nameLocation":"-1:-1:-1","nodeType":"ImportDirective","scope":17741,"sourceUnit":14492,"src":"239:73:55","symbolAliases":[{"foreign":{"id":17373,"name":"SafeCast","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":14491,"src":"247:8:55","typeDescriptions":{}},"nameLocation":"-1:-1:-1"}],"unitAlias":""},{"abstract":false,"baseContracts":[{"baseName":{"id":17376,"name":"AccessManagedMSV","nameLocations":["1186:16:55"],"nodeType":"IdentifierPath","referencedDeclaration":15277,"src":"1186:16:55"},"id":17377,"nodeType":"InheritanceSpecifier","src":"1186:16:55"}],"canonicalName":"OutflowLimitedAMMSV","contractDependencies":[],"contractKind":"contract","documentation":{"id":17375,"nodeType":"StructuredDocumentation","src":"314:839:55","text":" @title OutflowLimitedAMMSV\n @dev Variant of the AccessManagedMSV that has protection to limit the amount of outflows in a given timeframe.\n      Reverts if net outflows in a given timeframe exceeded a given threshold.\n      The check is executed before any withdraw/redeem operation, and the outflows are recorded on each\n      withdraw/redeem/mint/deposit methods.\n      The limit is applied for TWO `slotSize` periods. So for example if slotSize=1 day and limit=100K, this means\n      that up to 100K of outflows every two consecutive calendar days are acceptable.\n      The vault MUST be deployed behind an AccessManagedProxy that controls the access to the critical methods\n      Since this contract DOESN'T DO ANY ACCESS CONTROL.\n @custom:security-contact security@ensuro.co\n @author Ensuro"},"fullyImplemented":true,"id":17740,"linearizedBaseContracts":[17740,15277,4428,7127,3664,7179,9411,8679,4474,7920,8086,7137,17366,20649],"name":"OutflowLimitedAMMSV","nameLocation":"1163:19:55","nodeType":"ContractDefinition","nodes":[{"global":false,"id":17380,"libraryName":{"id":17378,"name":"SafeCast","nameLocations":["1213:8:55"],"nodeType":"IdentifierPath","referencedDeclaration":14491,"src":"1213:8:55"},"nodeType":"UsingForDirective","src":"1207:27:55","typeName":{"id":17379,"name":"uint256","nodeType":"ElementaryTypeName","src":"1226:7:55","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}},{"canonicalName":"OutflowLimitedAMMSV.SlotIndex","id":17382,"name":"SlotIndex","nameLocation":"1243:9:55","nodeType":"UserDefinedValueTypeDefinition","src":"1238:26:55","underlyingType":{"id":17381,"name":"uint256","nodeType":"ElementaryTypeName","src":"1256:7:55","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}},{"canonicalName":"OutflowLimitedAMMSV.LOMStorage","id":17392,"members":[{"constant":false,"id":17384,"mutability":"mutable","name":"slotSize","nameLocation":"1421:8:55","nodeType":"VariableDeclaration","scope":17392,"src":"1413:16:55","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint128","typeString":"uint128"},"typeName":{"id":17383,"name":"uint128","nodeType":"ElementaryTypeName","src":"1413:7:55","typeDescriptions":{"typeIdentifier":"t_uint128","typeString":"uint128"}},"visibility":"internal"},{"constant":false,"id":17386,"mutability":"mutable","name":"limit","nameLocation":"1484:5:55","nodeType":"VariableDeclaration","scope":17392,"src":"1476:13:55","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint128","typeString":"uint128"},"typeName":{"id":17385,"name":"uint128","nodeType":"ElementaryTypeName","src":"1476:7:55","typeDescriptions":{"typeIdentifier":"t_uint128","typeString":"uint128"}},"visibility":"internal"},{"constant":false,"id":17391,"mutability":"mutable","name":"assetsDelta","nameLocation":"1580:11:55","nodeType":"VariableDeclaration","scope":17392,"src":"1551:40:55","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_mapping$_t_userDefinedValueType$_SlotIndex_$17382_$_t_int256_$","typeString":"mapping(OutflowLimitedAMMSV.SlotIndex => int256)"},"typeName":{"id":17390,"keyName":"","keyNameLocation":"-1:-1:-1","keyType":{"id":17388,"nodeType":"UserDefinedTypeName","pathNode":{"id":17387,"name":"SlotIndex","nameLocations":["1559:9:55"],"nodeType":"IdentifierPath","referencedDeclaration":17382,"src":"1559:9:55"},"referencedDeclaration":17382,"src":"1559:9:55","typeDescriptions":{"typeIdentifier":"t_userDefinedValueType$_SlotIndex_$17382","typeString":"OutflowLimitedAMMSV.SlotIndex"}},"nodeType":"Mapping","src":"1551:28:55","typeDescriptions":{"typeIdentifier":"t_mapping$_t_userDefinedValueType$_SlotIndex_$17382_$_t_int256_$","typeString":"mapping(OutflowLimitedAMMSV.SlotIndex => int256)"},"valueName":"","valueNameLocation":"-1:-1:-1","valueType":{"id":17389,"name":"int256","nodeType":"ElementaryTypeName","src":"1572:6:55","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}}},"visibility":"internal"}],"name":"LOMStorage","nameLocation":"1396:10:55","nodeType":"StructDefinition","scope":17740,"src":"1389:246:55","visibility":"public"},{"anonymous":false,"eventSelector":"b60cc7dc67f7eca3662ae255cd7c76bb80b4229692532f6af8851a2a119e6b85","id":17398,"name":"LimitChanged","nameLocation":"1645:12:55","nodeType":"EventDefinition","parameters":{"id":17397,"nodeType":"ParameterList","parameters":[{"constant":false,"id":17394,"indexed":false,"mutability":"mutable","name":"slotSize","nameLocation":"1666:8:55","nodeType":"VariableDeclaration","scope":17398,"src":"1658:16:55","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":17393,"name":"uint256","nodeType":"ElementaryTypeName","src":"1658:7:55","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":17396,"indexed":false,"mutability":"mutable","name":"newLimit","nameLocation":"1684:8:55","nodeType":"VariableDeclaration","scope":17398,"src":"1676:16:55","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":17395,"name":"uint256","nodeType":"ElementaryTypeName","src":"1676:7:55","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"1657:36:55"},"src":"1639:55:55"},{"anonymous":false,"eventSelector":"177df7ef9e6eced78bb1837ddf81f055288f88e41ca91a74d394b2c8f0660ff2","id":17407,"name":"DeltaManuallySet","nameLocation":"1703:16:55","nodeType":"EventDefinition","parameters":{"id":17406,"nodeType":"ParameterList","parameters":[{"constant":false,"id":17401,"indexed":false,"mutability":"mutable","name":"slot","nameLocation":"1730:4:55","nodeType":"VariableDeclaration","scope":17407,"src":"1720:14:55","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_userDefinedValueType$_SlotIndex_$17382","typeString":"OutflowLimitedAMMSV.SlotIndex"},"typeName":{"id":17400,"nodeType":"UserDefinedTypeName","pathNode":{"id":17399,"name":"SlotIndex","nameLocations":["1720:9:55"],"nodeType":"IdentifierPath","referencedDeclaration":17382,"src":"1720:9:55"},"referencedDeclaration":17382,"src":"1720:9:55","typeDescriptions":{"typeIdentifier":"t_userDefinedValueType$_SlotIndex_$17382","typeString":"OutflowLimitedAMMSV.SlotIndex"}},"visibility":"internal"},{"constant":false,"id":17403,"indexed":false,"mutability":"mutable","name":"oldDelta","nameLocation":"1743:8:55","nodeType":"VariableDeclaration","scope":17407,"src":"1736:15:55","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"},"typeName":{"id":17402,"name":"int256","nodeType":"ElementaryTypeName","src":"1736:6:55","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"visibility":"internal"},{"constant":false,"id":17405,"indexed":false,"mutability":"mutable","name":"newDelta","nameLocation":"1760:8:55","nodeType":"VariableDeclaration","scope":17407,"src":"1753:15:55","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"},"typeName":{"id":17404,"name":"int256","nodeType":"ElementaryTypeName","src":"1753:6:55","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"visibility":"internal"}],"src":"1719:50:55"},"src":"1697:73:55"},{"errorSelector":"cc9a5053","id":17413,"name":"LimitReached","nameLocation":"1780:12:55","nodeType":"ErrorDefinition","parameters":{"id":17412,"nodeType":"ParameterList","parameters":[{"constant":false,"id":17409,"mutability":"mutable","name":"assetsDelta","nameLocation":"1800:11:55","nodeType":"VariableDeclaration","scope":17413,"src":"1793:18:55","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"},"typeName":{"id":17408,"name":"int256","nodeType":"ElementaryTypeName","src":"1793:6:55","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"visibility":"internal"},{"constant":false,"id":17411,"mutability":"mutable","name":"limit","nameLocation":"1821:5:55","nodeType":"VariableDeclaration","scope":17413,"src":"1813:13:55","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":17410,"name":"uint256","nodeType":"ElementaryTypeName","src":"1813:7:55","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"1792:35:55"},"src":"1774:54:55"},{"constant":true,"id":17416,"mutability":"constant","name":"STORAGE_LOCATION","nameLocation":"1972:16:55","nodeType":"VariableDeclaration","scope":17740,"src":"1947:110:55","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":17414,"name":"bytes32","nodeType":"ElementaryTypeName","src":"1947:7:55","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"value":{"hexValue":"307861326164613564363733646261356565636561376337353033656538376532393931336430643336616530393365393530643633326637623836383931663030","id":17415,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"1991:66:55","typeDescriptions":{"typeIdentifier":"t_rational_73581490582472894178950370765311832641134941280308971241484088529496614444800_by_1","typeString":"int_const 7358...(69 digits omitted)...4800"},"value":"0xa2ada5d673dba5eecea7c7503ee87e29913d0d36ae093e950d632f7b86891f00"},"visibility":"private"},{"body":{"id":17423,"nodeType":"Block","src":"2132:111:55","statements":[{"AST":{"nativeSrc":"2199:40:55","nodeType":"YulBlock","src":"2199:40:55","statements":[{"nativeSrc":"2207:26:55","nodeType":"YulAssignment","src":"2207:26:55","value":{"name":"STORAGE_LOCATION","nativeSrc":"2217:16:55","nodeType":"YulIdentifier","src":"2217:16:55"},"variableNames":[{"name":"$.slot","nativeSrc":"2207:6:55","nodeType":"YulIdentifier","src":"2207:6:55"}]}]},"evmVersion":"prague","externalReferences":[{"declaration":17420,"isOffset":false,"isSlot":true,"src":"2207:6:55","suffix":"slot","valueSize":1},{"declaration":17416,"isOffset":false,"isSlot":false,"src":"2217:16:55","valueSize":1}],"id":17422,"nodeType":"InlineAssembly","src":"2190:49:55"}]},"id":17424,"implemented":true,"kind":"function","modifiers":[],"name":"_getLOMStorage","nameLocation":"2071:14:55","nodeType":"FunctionDefinition","parameters":{"id":17417,"nodeType":"ParameterList","parameters":[],"src":"2085:2:55"},"returnParameters":{"id":17421,"nodeType":"ParameterList","parameters":[{"constant":false,"id":17420,"mutability":"mutable","name":"$","nameLocation":"2129:1:55","nodeType":"VariableDeclaration","scope":17424,"src":"2110:20:55","stateVariable":false,"storageLocation":"storage","typeDescriptions":{"typeIdentifier":"t_struct$_LOMStorage_$17392_storage_ptr","typeString":"struct OutflowLimitedAMMSV.LOMStorage"},"typeName":{"id":17419,"nodeType":"UserDefinedTypeName","pathNode":{"id":17418,"name":"LOMStorage","nameLocations":["2110:10:55"],"nodeType":"IdentifierPath","referencedDeclaration":17392,"src":"2110:10:55"},"referencedDeclaration":17392,"src":"2110:10:55","typeDescriptions":{"typeIdentifier":"t_struct$_LOMStorage_$17392_storage_ptr","typeString":"struct OutflowLimitedAMMSV.LOMStorage"}},"visibility":"internal"}],"src":"2109:22:55"},"scope":17740,"src":"2062:181:55","stateMutability":"pure","virtual":false,"visibility":"private"},{"body":{"id":17459,"nodeType":"Block","src":"2876:162:55","statements":[{"assignments":[17434],"declarations":[{"constant":false,"id":17434,"mutability":"mutable","name":"$","nameLocation":"2901:1:55","nodeType":"VariableDeclaration","scope":17459,"src":"2882:20:55","stateVariable":false,"storageLocation":"storage","typeDescriptions":{"typeIdentifier":"t_struct$_LOMStorage_$17392_storage_ptr","typeString":"struct OutflowLimitedAMMSV.LOMStorage"},"typeName":{"id":17433,"nodeType":"UserDefinedTypeName","pathNode":{"id":17432,"name":"LOMStorage","nameLocations":["2882:10:55"],"nodeType":"IdentifierPath","referencedDeclaration":17392,"src":"2882:10:55"},"referencedDeclaration":17392,"src":"2882:10:55","typeDescriptions":{"typeIdentifier":"t_struct$_LOMStorage_$17392_storage_ptr","typeString":"struct OutflowLimitedAMMSV.LOMStorage"}},"visibility":"internal"}],"id":17437,"initialValue":{"arguments":[],"expression":{"argumentTypes":[],"id":17435,"name":"_getLOMStorage","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":17424,"src":"2905:14:55","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$__$returns$_t_struct$_LOMStorage_$17392_storage_ptr_$","typeString":"function () pure returns (struct OutflowLimitedAMMSV.LOMStorage storage pointer)"}},"id":17436,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"2905:16:55","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_struct$_LOMStorage_$17392_storage_ptr","typeString":"struct OutflowLimitedAMMSV.LOMStorage storage pointer"}},"nodeType":"VariableDeclarationStatement","src":"2882:39:55"},{"expression":{"id":17444,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"expression":{"id":17438,"name":"$","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":17434,"src":"2927:1:55","typeDescriptions":{"typeIdentifier":"t_struct$_LOMStorage_$17392_storage_ptr","typeString":"struct OutflowLimitedAMMSV.LOMStorage storage pointer"}},"id":17440,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"memberLocation":"2929:5:55","memberName":"limit","nodeType":"MemberAccess","referencedDeclaration":17386,"src":"2927:7:55","typeDescriptions":{"typeIdentifier":"t_uint128","typeString":"uint128"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"arguments":[],"expression":{"argumentTypes":[],"expression":{"id":17441,"name":"limit","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":17429,"src":"2937:5:55","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":17442,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"2943:9:55","memberName":"toUint128","nodeType":"MemberAccess","referencedDeclaration":13201,"src":"2937:15:55","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_uint256_$returns$_t_uint128_$attached_to$_t_uint256_$","typeString":"function (uint256) pure returns (uint128)"}},"id":17443,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"2937:17:55","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint128","typeString":"uint128"}},"src":"2927:27:55","typeDescriptions":{"typeIdentifier":"t_uint128","typeString":"uint128"}},"id":17445,"nodeType":"ExpressionStatement","src":"2927:27:55"},{"expression":{"id":17452,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"expression":{"id":17446,"name":"$","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":17434,"src":"2960:1:55","typeDescriptions":{"typeIdentifier":"t_struct$_LOMStorage_$17392_storage_ptr","typeString":"struct OutflowLimitedAMMSV.LOMStorage storage pointer"}},"id":17448,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"memberLocation":"2962:8:55","memberName":"slotSize","nodeType":"MemberAccess","referencedDeclaration":17384,"src":"2960:10:55","typeDescriptions":{"typeIdentifier":"t_uint128","typeString":"uint128"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"arguments":[],"expression":{"argumentTypes":[],"expression":{"id":17449,"name":"slotSize","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":17427,"src":"2973:8:55","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":17450,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"2982:9:55","memberName":"toUint128","nodeType":"MemberAccess","referencedDeclaration":13201,"src":"2973:18:55","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_uint256_$returns$_t_uint128_$attached_to$_t_uint256_$","typeString":"function (uint256) pure returns (uint128)"}},"id":17451,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"2973:20:55","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint128","typeString":"uint128"}},"src":"2960:33:55","typeDescriptions":{"typeIdentifier":"t_uint128","typeString":"uint128"}},"id":17453,"nodeType":"ExpressionStatement","src":"2960:33:55"},{"eventCall":{"arguments":[{"id":17455,"name":"slotSize","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":17427,"src":"3017:8:55","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"id":17456,"name":"limit","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":17429,"src":"3027:5:55","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":17454,"name":"LimitChanged","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":17398,"src":"3004:12:55","typeDescriptions":{"typeIdentifier":"t_function_event_nonpayable$_t_uint256_$_t_uint256_$returns$__$","typeString":"function (uint256,uint256)"}},"id":17457,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"3004:29:55","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":17458,"nodeType":"EmitStatement","src":"2999:34:55"}]},"documentation":{"id":17425,"nodeType":"StructuredDocumentation","src":"2247:557:55","text":" @dev Changes the limit and the timeframe used to track it.\n WARNING: changing the slotSize effectivelly resets the recorded outflows, so after this call (if slotSize\n changed), the delta will be zero.\n @param slotSize The duration in seconds of the timeframe used to limit the amount of outflows. Setting slotSize\n                 to zero disables the outflow limit checks and the vault behaves like a normal AccessManagedMSV\n @param limit    The max amount of outflows that will be allowed in a given time slot."},"functionSelector":"0a604584","id":17460,"implemented":true,"kind":"function","modifiers":[],"name":"setupOutflowLimit","nameLocation":"2816:17:55","nodeType":"FunctionDefinition","parameters":{"id":17430,"nodeType":"ParameterList","parameters":[{"constant":false,"id":17427,"mutability":"mutable","name":"slotSize","nameLocation":"2842:8:55","nodeType":"VariableDeclaration","scope":17460,"src":"2834:16:55","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":17426,"name":"uint256","nodeType":"ElementaryTypeName","src":"2834:7:55","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":17429,"mutability":"mutable","name":"limit","nameLocation":"2860:5:55","nodeType":"VariableDeclaration","scope":17460,"src":"2852:13:55","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":17428,"name":"uint256","nodeType":"ElementaryTypeName","src":"2852:7:55","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"2833:33:55"},"returnParameters":{"id":17431,"nodeType":"ParameterList","parameters":[],"src":"2876:0:55"},"scope":17740,"src":"2807:231:55","stateMutability":"nonpayable","virtual":false,"visibility":"external"},{"body":{"id":17470,"nodeType":"Block","src":"3178:43:55","statements":[{"expression":{"expression":{"arguments":[],"expression":{"argumentTypes":[],"id":17466,"name":"_getLOMStorage","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":17424,"src":"3191:14:55","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$__$returns$_t_struct$_LOMStorage_$17392_storage_ptr_$","typeString":"function () pure returns (struct OutflowLimitedAMMSV.LOMStorage storage pointer)"}},"id":17467,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"3191:16:55","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_struct$_LOMStorage_$17392_storage_ptr","typeString":"struct OutflowLimitedAMMSV.LOMStorage storage pointer"}},"id":17468,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"3208:8:55","memberName":"slotSize","nodeType":"MemberAccess","referencedDeclaration":17384,"src":"3191:25:55","typeDescriptions":{"typeIdentifier":"t_uint128","typeString":"uint128"}},"functionReturnParameters":17465,"id":17469,"nodeType":"Return","src":"3184:32:55"}]},"documentation":{"id":17461,"nodeType":"StructuredDocumentation","src":"3042:66:55","text":" @dev Returns the current time slot size in seconds."},"functionSelector":"2e6863da","id":17471,"implemented":true,"kind":"function","modifiers":[],"name":"getOutflowLimitSlotSize","nameLocation":"3120:23:55","nodeType":"FunctionDefinition","parameters":{"id":17462,"nodeType":"ParameterList","parameters":[],"src":"3143:2:55"},"returnParameters":{"id":17465,"nodeType":"ParameterList","parameters":[{"constant":false,"id":17464,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":17471,"src":"3169:7:55","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":17463,"name":"uint256","nodeType":"ElementaryTypeName","src":"3169:7:55","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"3168:9:55"},"scope":17740,"src":"3111:110:55","stateMutability":"view","virtual":false,"visibility":"external"},{"body":{"id":17481,"nodeType":"Block","src":"3387:40:55","statements":[{"expression":{"expression":{"arguments":[],"expression":{"argumentTypes":[],"id":17477,"name":"_getLOMStorage","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":17424,"src":"3400:14:55","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$__$returns$_t_struct$_LOMStorage_$17392_storage_ptr_$","typeString":"function () pure returns (struct OutflowLimitedAMMSV.LOMStorage storage pointer)"}},"id":17478,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"3400:16:55","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_struct$_LOMStorage_$17392_storage_ptr","typeString":"struct OutflowLimitedAMMSV.LOMStorage storage pointer"}},"id":17479,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"3417:5:55","memberName":"limit","nodeType":"MemberAccess","referencedDeclaration":17386,"src":"3400:22:55","typeDescriptions":{"typeIdentifier":"t_uint128","typeString":"uint128"}},"functionReturnParameters":17476,"id":17480,"nodeType":"Return","src":"3393:29:55"}]},"documentation":{"id":17472,"nodeType":"StructuredDocumentation","src":"3225:100:55","text":" @dev Returns the net outflow limit that will be applied on two consecutive time slots"},"functionSelector":"d89b074d","id":17482,"implemented":true,"kind":"function","modifiers":[],"name":"getOutflowLimit","nameLocation":"3337:15:55","nodeType":"FunctionDefinition","parameters":{"id":17473,"nodeType":"ParameterList","parameters":[],"src":"3352:2:55"},"returnParameters":{"id":17476,"nodeType":"ParameterList","parameters":[{"constant":false,"id":17475,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":17482,"src":"3378:7:55","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":17474,"name":"uint256","nodeType":"ElementaryTypeName","src":"3378:7:55","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"3377:9:55"},"scope":17740,"src":"3328:99:55","stateMutability":"view","virtual":false,"visibility":"external"},{"body":{"id":17497,"nodeType":"Block","src":"3869:52:55","statements":[{"expression":{"baseExpression":{"expression":{"arguments":[],"expression":{"argumentTypes":[],"id":17491,"name":"_getLOMStorage","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":17424,"src":"3882:14:55","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$__$returns$_t_struct$_LOMStorage_$17392_storage_ptr_$","typeString":"function () pure returns (struct OutflowLimitedAMMSV.LOMStorage storage pointer)"}},"id":17492,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"3882:16:55","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_struct$_LOMStorage_$17392_storage_ptr","typeString":"struct OutflowLimitedAMMSV.LOMStorage storage pointer"}},"id":17493,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"3899:11:55","memberName":"assetsDelta","nodeType":"MemberAccess","referencedDeclaration":17391,"src":"3882:28:55","typeDescriptions":{"typeIdentifier":"t_mapping$_t_userDefinedValueType$_SlotIndex_$17382_$_t_int256_$","typeString":"mapping(OutflowLimitedAMMSV.SlotIndex => int256)"}},"id":17495,"indexExpression":{"id":17494,"name":"slot","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":17486,"src":"3911:4:55","typeDescriptions":{"typeIdentifier":"t_userDefinedValueType$_SlotIndex_$17382","typeString":"OutflowLimitedAMMSV.SlotIndex"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"3882:34:55","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"functionReturnParameters":17490,"id":17496,"nodeType":"Return","src":"3875:41:55"}]},"documentation":{"id":17483,"nodeType":"StructuredDocumentation","src":"3431:364:55","text":" @dev The current delta variation in assets for the given slot.\n      Calculated as the sum of limit + deposits - withdrawals.\n @param slot The given slot to check the delta. Compatible with the slot calculated by makeOutflowSlot.\n @return The net flows in a slot (positive for inflows, more deposits than withdrawals, negative otherwise)"},"functionSelector":"92ce412e","id":17498,"implemented":true,"kind":"function","modifiers":[],"name":"getAssetsDelta","nameLocation":"3807:14:55","nodeType":"FunctionDefinition","parameters":{"id":17487,"nodeType":"ParameterList","parameters":[{"constant":false,"id":17486,"mutability":"mutable","name":"slot","nameLocation":"3832:4:55","nodeType":"VariableDeclaration","scope":17498,"src":"3822:14:55","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_userDefinedValueType$_SlotIndex_$17382","typeString":"OutflowLimitedAMMSV.SlotIndex"},"typeName":{"id":17485,"nodeType":"UserDefinedTypeName","pathNode":{"id":17484,"name":"SlotIndex","nameLocations":["3822:9:55"],"nodeType":"IdentifierPath","referencedDeclaration":17382,"src":"3822:9:55"},"referencedDeclaration":17382,"src":"3822:9:55","typeDescriptions":{"typeIdentifier":"t_userDefinedValueType$_SlotIndex_$17382","typeString":"OutflowLimitedAMMSV.SlotIndex"}},"visibility":"internal"}],"src":"3821:16:55"},"returnParameters":{"id":17490,"nodeType":"ParameterList","parameters":[{"constant":false,"id":17489,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":17498,"src":"3861:6:55","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"},"typeName":{"id":17488,"name":"int256","nodeType":"ElementaryTypeName","src":"3861:6:55","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"visibility":"internal"}],"src":"3860:8:55"},"scope":17740,"src":"3798:123:55","stateMutability":"view","virtual":false,"visibility":"external"},{"body":{"id":17521,"nodeType":"Block","src":"4506:74:55","statements":[{"expression":{"arguments":[{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":17518,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"components":[{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":17513,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":17511,"name":"slotSize","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":17501,"src":"4535:8:55","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"<<","rightExpression":{"hexValue":"313238","id":17512,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"4547:3:55","typeDescriptions":{"typeIdentifier":"t_rational_128_by_1","typeString":"int_const 128"},"value":"128"},"src":"4535:15:55","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"id":17514,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"4534:17:55","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"+","rightExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":17517,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":17515,"name":"timestamp","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":17503,"src":"4554:9:55","typeDescriptions":{"typeIdentifier":"t_uint40","typeString":"uint40"}},"nodeType":"BinaryOperation","operator":"/","rightExpression":{"id":17516,"name":"slotSize","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":17501,"src":"4566:8:55","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"4554:20:55","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"4534:40:55","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"expression":{"id":17509,"name":"SlotIndex","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":17382,"src":"4519:9:55","typeDescriptions":{"typeIdentifier":"t_type$_t_userDefinedValueType$_SlotIndex_$17382_$","typeString":"type(OutflowLimitedAMMSV.SlotIndex)"}},"id":17510,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberLocation":"4529:4:55","memberName":"wrap","nodeType":"MemberAccess","src":"4519:14:55","typeDescriptions":{"typeIdentifier":"t_function_wrap_pure$_t_uint256_$returns$_t_userDefinedValueType$_SlotIndex_$17382_$","typeString":"function (uint256) pure returns (OutflowLimitedAMMSV.SlotIndex)"}},"id":17519,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"4519:56:55","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_userDefinedValueType$_SlotIndex_$17382","typeString":"OutflowLimitedAMMSV.SlotIndex"}},"functionReturnParameters":17508,"id":17520,"nodeType":"Return","src":"4512:63:55"}]},"documentation":{"id":17499,"nodeType":"StructuredDocumentation","src":"3925:483:55","text":" @dev Computes the SlotIndex datatype comining both the slotSize and the index in which the timestamp is in\n      a line of time that starts at epoch, with slots of slotSize\n @param slotSize The size of the slot in seconds that splits the timeline\n @param timestamp The time for which we want to calculate the slot.\n @return Returns a SlotIndex datatype that's the combination of the slotSize and the index in which the timestamp\n         falls"},"functionSelector":"8eef8380","id":17522,"implemented":true,"kind":"function","modifiers":[],"name":"makeOutflowSlot","nameLocation":"4420:15:55","nodeType":"FunctionDefinition","parameters":{"id":17504,"nodeType":"ParameterList","parameters":[{"constant":false,"id":17501,"mutability":"mutable","name":"slotSize","nameLocation":"4444:8:55","nodeType":"VariableDeclaration","scope":17522,"src":"4436:16:55","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":17500,"name":"uint256","nodeType":"ElementaryTypeName","src":"4436:7:55","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":17503,"mutability":"mutable","name":"timestamp","nameLocation":"4461:9:55","nodeType":"VariableDeclaration","scope":17522,"src":"4454:16:55","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint40","typeString":"uint40"},"typeName":{"id":17502,"name":"uint40","nodeType":"ElementaryTypeName","src":"4454:6:55","typeDescriptions":{"typeIdentifier":"t_uint40","typeString":"uint40"}},"visibility":"internal"}],"src":"4435:36:55"},"returnParameters":{"id":17508,"nodeType":"ParameterList","parameters":[{"constant":false,"id":17507,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":17522,"src":"4495:9:55","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_userDefinedValueType$_SlotIndex_$17382","typeString":"OutflowLimitedAMMSV.SlotIndex"},"typeName":{"id":17506,"nodeType":"UserDefinedTypeName","pathNode":{"id":17505,"name":"SlotIndex","nameLocations":["4495:9:55"],"nodeType":"IdentifierPath","referencedDeclaration":17382,"src":"4495:9:55"},"referencedDeclaration":17382,"src":"4495:9:55","typeDescriptions":{"typeIdentifier":"t_userDefinedValueType$_SlotIndex_$17382","typeString":"OutflowLimitedAMMSV.SlotIndex"}},"visibility":"internal"}],"src":"4494:11:55"},"scope":17740,"src":"4411:169:55","stateMutability":"pure","virtual":false,"visibility":"external"},{"body":{"id":17557,"nodeType":"Block","src":"5330:182:55","statements":[{"assignments":[17534],"declarations":[{"constant":false,"id":17534,"mutability":"mutable","name":"oldDelta","nameLocation":"5343:8:55","nodeType":"VariableDeclaration","scope":17557,"src":"5336:15:55","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"},"typeName":{"id":17533,"name":"int256","nodeType":"ElementaryTypeName","src":"5336:6:55","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"visibility":"internal"}],"id":17540,"initialValue":{"baseExpression":{"expression":{"arguments":[],"expression":{"argumentTypes":[],"id":17535,"name":"_getLOMStorage","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":17424,"src":"5354:14:55","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$__$returns$_t_struct$_LOMStorage_$17392_storage_ptr_$","typeString":"function () pure returns (struct OutflowLimitedAMMSV.LOMStorage storage pointer)"}},"id":17536,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"5354:16:55","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_struct$_LOMStorage_$17392_storage_ptr","typeString":"struct OutflowLimitedAMMSV.LOMStorage storage pointer"}},"id":17537,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"5371:11:55","memberName":"assetsDelta","nodeType":"MemberAccess","referencedDeclaration":17391,"src":"5354:28:55","typeDescriptions":{"typeIdentifier":"t_mapping$_t_userDefinedValueType$_SlotIndex_$17382_$_t_int256_$","typeString":"mapping(OutflowLimitedAMMSV.SlotIndex => int256)"}},"id":17539,"indexExpression":{"id":17538,"name":"slot","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":17526,"src":"5383:4:55","typeDescriptions":{"typeIdentifier":"t_userDefinedValueType$_SlotIndex_$17382","typeString":"OutflowLimitedAMMSV.SlotIndex"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"5354:34:55","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"nodeType":"VariableDeclarationStatement","src":"5336:52:55"},{"expression":{"id":17549,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":17541,"name":"newDelta","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":17531,"src":"5394:8:55","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"id":17548,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"baseExpression":{"expression":{"arguments":[],"expression":{"argumentTypes":[],"id":17542,"name":"_getLOMStorage","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":17424,"src":"5405:14:55","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$__$returns$_t_struct$_LOMStorage_$17392_storage_ptr_$","typeString":"function () pure returns (struct OutflowLimitedAMMSV.LOMStorage storage pointer)"}},"id":17543,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"5405:16:55","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_struct$_LOMStorage_$17392_storage_ptr","typeString":"struct OutflowLimitedAMMSV.LOMStorage storage pointer"}},"id":17544,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"5422:11:55","memberName":"assetsDelta","nodeType":"MemberAccess","referencedDeclaration":17391,"src":"5405:28:55","typeDescriptions":{"typeIdentifier":"t_mapping$_t_userDefinedValueType$_SlotIndex_$17382_$_t_int256_$","typeString":"mapping(OutflowLimitedAMMSV.SlotIndex => int256)"}},"id":17546,"indexExpression":{"id":17545,"name":"slot","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":17526,"src":"5434:4:55","typeDescriptions":{"typeIdentifier":"t_userDefinedValueType$_SlotIndex_$17382","typeString":"OutflowLimitedAMMSV.SlotIndex"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"nodeType":"IndexAccess","src":"5405:34:55","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"nodeType":"Assignment","operator":"+=","rightHandSide":{"id":17547,"name":"deltaChange","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":17528,"src":"5443:11:55","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"src":"5405:49:55","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"src":"5394:60:55","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"id":17550,"nodeType":"ExpressionStatement","src":"5394:60:55"},{"eventCall":{"arguments":[{"id":17552,"name":"slot","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":17526,"src":"5482:4:55","typeDescriptions":{"typeIdentifier":"t_userDefinedValueType$_SlotIndex_$17382","typeString":"OutflowLimitedAMMSV.SlotIndex"}},{"id":17553,"name":"oldDelta","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":17534,"src":"5488:8:55","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},{"id":17554,"name":"newDelta","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":17531,"src":"5498:8:55","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_userDefinedValueType$_SlotIndex_$17382","typeString":"OutflowLimitedAMMSV.SlotIndex"},{"typeIdentifier":"t_int256","typeString":"int256"},{"typeIdentifier":"t_int256","typeString":"int256"}],"id":17551,"name":"DeltaManuallySet","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":17407,"src":"5465:16:55","typeDescriptions":{"typeIdentifier":"t_function_event_nonpayable$_t_userDefinedValueType$_SlotIndex_$17382_$_t_int256_$_t_int256_$returns$__$","typeString":"function (OutflowLimitedAMMSV.SlotIndex,int256,int256)"}},"id":17555,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"5465:42:55","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":17556,"nodeType":"EmitStatement","src":"5460:47:55"}]},"documentation":{"id":17523,"nodeType":"StructuredDocumentation","src":"4584:651:55","text":" @dev Manually changes the delta in a given slot. Used to exceptionally allow or disallow limits different than\n      the configured ones or to reset the limit when a valid operation is verified.\n @param slot Identification of the slot to modify.\n             The slot is computed as `slotSize << 128 + block.timestamp / slotSize` (See {makeOutflowSlot})\n @param deltaChange The modification to apply to the registered inflows in a given slot. Positive to increase the\n                    inflows, negative to decrease the outflows.\n @return newDelta The resulting delta in the slot after applying the change"},"functionSelector":"508a0538","id":17558,"implemented":true,"kind":"function","modifiers":[],"name":"changeDelta","nameLocation":"5247:11:55","nodeType":"FunctionDefinition","parameters":{"id":17529,"nodeType":"ParameterList","parameters":[{"constant":false,"id":17526,"mutability":"mutable","name":"slot","nameLocation":"5269:4:55","nodeType":"VariableDeclaration","scope":17558,"src":"5259:14:55","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_userDefinedValueType$_SlotIndex_$17382","typeString":"OutflowLimitedAMMSV.SlotIndex"},"typeName":{"id":17525,"nodeType":"UserDefinedTypeName","pathNode":{"id":17524,"name":"SlotIndex","nameLocations":["5259:9:55"],"nodeType":"IdentifierPath","referencedDeclaration":17382,"src":"5259:9:55"},"referencedDeclaration":17382,"src":"5259:9:55","typeDescriptions":{"typeIdentifier":"t_userDefinedValueType$_SlotIndex_$17382","typeString":"OutflowLimitedAMMSV.SlotIndex"}},"visibility":"internal"},{"constant":false,"id":17528,"mutability":"mutable","name":"deltaChange","nameLocation":"5282:11:55","nodeType":"VariableDeclaration","scope":17558,"src":"5275:18:55","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"},"typeName":{"id":17527,"name":"int256","nodeType":"ElementaryTypeName","src":"5275:6:55","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"visibility":"internal"}],"src":"5258:36:55"},"returnParameters":{"id":17532,"nodeType":"ParameterList","parameters":[{"constant":false,"id":17531,"mutability":"mutable","name":"newDelta","nameLocation":"5320:8:55","nodeType":"VariableDeclaration","scope":17558,"src":"5313:15:55","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"},"typeName":{"id":17530,"name":"int256","nodeType":"ElementaryTypeName","src":"5313:6:55","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"visibility":"internal"}],"src":"5312:17:55"},"scope":17740,"src":"5238:274:55","stateMutability":"nonpayable","virtual":false,"visibility":"external"},{"body":{"id":17583,"nodeType":"Block","src":"5572:130:55","statements":[{"assignments":[17565],"declarations":[{"constant":false,"id":17565,"mutability":"mutable","name":"slotSize","nameLocation":"5586:8:55","nodeType":"VariableDeclaration","scope":17583,"src":"5578:16:55","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":17564,"name":"uint256","nodeType":"ElementaryTypeName","src":"5578:7:55","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":17569,"initialValue":{"expression":{"arguments":[],"expression":{"argumentTypes":[],"id":17566,"name":"_getLOMStorage","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":17424,"src":"5597:14:55","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$__$returns$_t_struct$_LOMStorage_$17392_storage_ptr_$","typeString":"function () pure returns (struct OutflowLimitedAMMSV.LOMStorage storage pointer)"}},"id":17567,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"5597:16:55","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_struct$_LOMStorage_$17392_storage_ptr","typeString":"struct OutflowLimitedAMMSV.LOMStorage storage pointer"}},"id":17568,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"5614:8:55","memberName":"slotSize","nodeType":"MemberAccess","referencedDeclaration":17384,"src":"5597:25:55","typeDescriptions":{"typeIdentifier":"t_uint128","typeString":"uint128"}},"nodeType":"VariableDeclarationStatement","src":"5578:44:55"},{"expression":{"arguments":[{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":17580,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"components":[{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":17574,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":17572,"name":"slotSize","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":17565,"src":"5651:8:55","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"<<","rightExpression":{"hexValue":"313238","id":17573,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"5663:3:55","typeDescriptions":{"typeIdentifier":"t_rational_128_by_1","typeString":"int_const 128"},"value":"128"},"src":"5651:15:55","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"id":17575,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"5650:17:55","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"+","rightExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":17579,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"expression":{"id":17576,"name":"block","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-4,"src":"5670:5:55","typeDescriptions":{"typeIdentifier":"t_magic_block","typeString":"block"}},"id":17577,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"5676:9:55","memberName":"timestamp","nodeType":"MemberAccess","src":"5670:15:55","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"/","rightExpression":{"id":17578,"name":"slotSize","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":17565,"src":"5688:8:55","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"5670:26:55","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"5650:46:55","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"expression":{"id":17570,"name":"SlotIndex","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":17382,"src":"5635:9:55","typeDescriptions":{"typeIdentifier":"t_type$_t_userDefinedValueType$_SlotIndex_$17382_$","typeString":"type(OutflowLimitedAMMSV.SlotIndex)"}},"id":17571,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberLocation":"5645:4:55","memberName":"wrap","nodeType":"MemberAccess","src":"5635:14:55","typeDescriptions":{"typeIdentifier":"t_function_wrap_pure$_t_uint256_$returns$_t_userDefinedValueType$_SlotIndex_$17382_$","typeString":"function (uint256) pure returns (OutflowLimitedAMMSV.SlotIndex)"}},"id":17581,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"5635:62:55","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_userDefinedValueType$_SlotIndex_$17382","typeString":"OutflowLimitedAMMSV.SlotIndex"}},"functionReturnParameters":17563,"id":17582,"nodeType":"Return","src":"5628:69:55"}]},"id":17584,"implemented":true,"kind":"function","modifiers":[],"name":"_slotIndex","nameLocation":"5525:10:55","nodeType":"FunctionDefinition","parameters":{"id":17559,"nodeType":"ParameterList","parameters":[],"src":"5535:2:55"},"returnParameters":{"id":17563,"nodeType":"ParameterList","parameters":[{"constant":false,"id":17562,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":17584,"src":"5561:9:55","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_userDefinedValueType$_SlotIndex_$17382","typeString":"OutflowLimitedAMMSV.SlotIndex"},"typeName":{"id":17561,"nodeType":"UserDefinedTypeName","pathNode":{"id":17560,"name":"SlotIndex","nameLocations":["5561:9:55"],"nodeType":"IdentifierPath","referencedDeclaration":17382,"src":"5561:9:55"},"referencedDeclaration":17382,"src":"5561:9:55","typeDescriptions":{"typeIdentifier":"t_userDefinedValueType$_SlotIndex_$17382","typeString":"OutflowLimitedAMMSV.SlotIndex"}},"visibility":"internal"}],"src":"5560:11:55"},"scope":17740,"src":"5516:186:55","stateMutability":"view","virtual":false,"visibility":"internal"},{"baseFunctions":[15167],"body":{"id":17687,"nodeType":"Block","src":"5893:872:55","statements":[{"assignments":[17601],"declarations":[{"constant":false,"id":17601,"mutability":"mutable","name":"$","nameLocation":"5918:1:55","nodeType":"VariableDeclaration","scope":17687,"src":"5899:20:55","stateVariable":false,"storageLocation":"storage","typeDescriptions":{"typeIdentifier":"t_struct$_LOMStorage_$17392_storage_ptr","typeString":"struct OutflowLimitedAMMSV.LOMStorage"},"typeName":{"id":17600,"nodeType":"UserDefinedTypeName","pathNode":{"id":17599,"name":"LOMStorage","nameLocations":["5899:10:55"],"nodeType":"IdentifierPath","referencedDeclaration":17392,"src":"5899:10:55"},"referencedDeclaration":17392,"src":"5899:10:55","typeDescriptions":{"typeIdentifier":"t_struct$_LOMStorage_$17392_storage_ptr","typeString":"struct OutflowLimitedAMMSV.LOMStorage"}},"visibility":"internal"}],"id":17604,"initialValue":{"arguments":[],"expression":{"argumentTypes":[],"id":17602,"name":"_getLOMStorage","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":17424,"src":"5922:14:55","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$__$returns$_t_struct$_LOMStorage_$17392_storage_ptr_$","typeString":"function () pure returns (struct OutflowLimitedAMMSV.LOMStorage storage pointer)"}},"id":17603,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"5922:16:55","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_struct$_LOMStorage_$17392_storage_ptr","typeString":"struct OutflowLimitedAMMSV.LOMStorage storage pointer"}},"nodeType":"VariableDeclarationStatement","src":"5899:39:55"},{"condition":{"commonType":{"typeIdentifier":"t_uint128","typeString":"uint128"},"id":17608,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"expression":{"id":17605,"name":"$","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":17601,"src":"5948:1:55","typeDescriptions":{"typeIdentifier":"t_struct$_LOMStorage_$17392_storage_ptr","typeString":"struct OutflowLimitedAMMSV.LOMStorage storage pointer"}},"id":17606,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"5950:8:55","memberName":"slotSize","nodeType":"MemberAccess","referencedDeclaration":17384,"src":"5948:10:55","typeDescriptions":{"typeIdentifier":"t_uint128","typeString":"uint128"}},"nodeType":"BinaryOperation","operator":"!=","rightExpression":{"hexValue":"30","id":17607,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"5962:1:55","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"5948:15:55","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":17676,"nodeType":"IfStatement","src":"5944:755:55","trueBody":{"id":17675,"nodeType":"Block","src":"5965:734:55","statements":[{"assignments":[17611],"declarations":[{"constant":false,"id":17611,"mutability":"mutable","name":"slot","nameLocation":"5983:4:55","nodeType":"VariableDeclaration","scope":17675,"src":"5973:14:55","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_userDefinedValueType$_SlotIndex_$17382","typeString":"OutflowLimitedAMMSV.SlotIndex"},"typeName":{"id":17610,"nodeType":"UserDefinedTypeName","pathNode":{"id":17609,"name":"SlotIndex","nameLocations":["5973:9:55"],"nodeType":"IdentifierPath","referencedDeclaration":17382,"src":"5973:9:55"},"referencedDeclaration":17382,"src":"5973:9:55","typeDescriptions":{"typeIdentifier":"t_userDefinedValueType$_SlotIndex_$17382","typeString":"OutflowLimitedAMMSV.SlotIndex"}},"visibility":"internal"}],"id":17614,"initialValue":{"arguments":[],"expression":{"argumentTypes":[],"id":17612,"name":"_slotIndex","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":17584,"src":"5990:10:55","typeDescriptions":{"typeIdentifier":"t_function_internal_view$__$returns$_t_userDefinedValueType$_SlotIndex_$17382_$","typeString":"function () view returns (OutflowLimitedAMMSV.SlotIndex)"}},"id":17613,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"5990:12:55","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_userDefinedValueType$_SlotIndex_$17382","typeString":"OutflowLimitedAMMSV.SlotIndex"}},"nodeType":"VariableDeclarationStatement","src":"5973:29:55"},{"assignments":[17617],"declarations":[{"constant":false,"id":17617,"mutability":"mutable","name":"prevSlot","nameLocation":"6071:8:55","nodeType":"VariableDeclaration","scope":17675,"src":"6061:18:55","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_userDefinedValueType$_SlotIndex_$17382","typeString":"OutflowLimitedAMMSV.SlotIndex"},"typeName":{"id":17616,"nodeType":"UserDefinedTypeName","pathNode":{"id":17615,"name":"SlotIndex","nameLocations":["6061:9:55"],"nodeType":"IdentifierPath","referencedDeclaration":17382,"src":"6061:9:55"},"referencedDeclaration":17382,"src":"6061:9:55","typeDescriptions":{"typeIdentifier":"t_userDefinedValueType$_SlotIndex_$17382","typeString":"OutflowLimitedAMMSV.SlotIndex"}},"visibility":"internal"}],"id":17627,"initialValue":{"arguments":[{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":17625,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"arguments":[{"id":17622,"name":"slot","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":17611,"src":"6114:4:55","typeDescriptions":{"typeIdentifier":"t_userDefinedValueType$_SlotIndex_$17382","typeString":"OutflowLimitedAMMSV.SlotIndex"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_userDefinedValueType$_SlotIndex_$17382","typeString":"OutflowLimitedAMMSV.SlotIndex"}],"expression":{"id":17620,"name":"SlotIndex","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":17382,"src":"6097:9:55","typeDescriptions":{"typeIdentifier":"t_type$_t_userDefinedValueType$_SlotIndex_$17382_$","typeString":"type(OutflowLimitedAMMSV.SlotIndex)"}},"id":17621,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberLocation":"6107:6:55","memberName":"unwrap","nodeType":"MemberAccess","src":"6097:16:55","typeDescriptions":{"typeIdentifier":"t_function_unwrap_pure$_t_userDefinedValueType$_SlotIndex_$17382_$returns$_t_uint256_$","typeString":"function (OutflowLimitedAMMSV.SlotIndex) pure returns (uint256)"}},"id":17623,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"6097:22:55","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"-","rightExpression":{"hexValue":"31","id":17624,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"6122:1:55","typeDescriptions":{"typeIdentifier":"t_rational_1_by_1","typeString":"int_const 1"},"value":"1"},"src":"6097:26:55","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"expression":{"id":17618,"name":"SlotIndex","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":17382,"src":"6082:9:55","typeDescriptions":{"typeIdentifier":"t_type$_t_userDefinedValueType$_SlotIndex_$17382_$","typeString":"type(OutflowLimitedAMMSV.SlotIndex)"}},"id":17619,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberLocation":"6092:4:55","memberName":"wrap","nodeType":"MemberAccess","src":"6082:14:55","typeDescriptions":{"typeIdentifier":"t_function_wrap_pure$_t_uint256_$returns$_t_userDefinedValueType$_SlotIndex_$17382_$","typeString":"function (uint256) pure returns (OutflowLimitedAMMSV.SlotIndex)"}},"id":17626,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"6082:42:55","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_userDefinedValueType$_SlotIndex_$17382","typeString":"OutflowLimitedAMMSV.SlotIndex"}},"nodeType":"VariableDeclarationStatement","src":"6061:63:55"},{"assignments":[17629],"declarations":[{"constant":false,"id":17629,"mutability":"mutable","name":"deltaLastTwoSlots","nameLocation":"6139:17:55","nodeType":"VariableDeclaration","scope":17675,"src":"6132:24:55","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"},"typeName":{"id":17628,"name":"int256","nodeType":"ElementaryTypeName","src":"6132:6:55","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"visibility":"internal"}],"id":17645,"initialValue":{"commonType":{"typeIdentifier":"t_int256","typeString":"int256"},"id":17644,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"commonType":{"typeIdentifier":"t_int256","typeString":"int256"},"id":17639,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":17634,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"UnaryOperation","operator":"-","prefix":true,"src":"6159:15:55","subExpression":{"arguments":[{"id":17632,"name":"assets","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":17593,"src":"6167:6:55","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":17631,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"6160:6:55","typeDescriptions":{"typeIdentifier":"t_type$_t_int256_$","typeString":"type(int256)"},"typeName":{"id":17630,"name":"int256","nodeType":"ElementaryTypeName","src":"6160:6:55","typeDescriptions":{}}},"id":17633,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"6160:14:55","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"nodeType":"BinaryOperation","operator":"+","rightExpression":{"baseExpression":{"expression":{"id":17635,"name":"$","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":17601,"src":"6177:1:55","typeDescriptions":{"typeIdentifier":"t_struct$_LOMStorage_$17392_storage_ptr","typeString":"struct OutflowLimitedAMMSV.LOMStorage storage pointer"}},"id":17636,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"6179:11:55","memberName":"assetsDelta","nodeType":"MemberAccess","referencedDeclaration":17391,"src":"6177:13:55","typeDescriptions":{"typeIdentifier":"t_mapping$_t_userDefinedValueType$_SlotIndex_$17382_$_t_int256_$","typeString":"mapping(OutflowLimitedAMMSV.SlotIndex => int256)"}},"id":17638,"indexExpression":{"id":17637,"name":"slot","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":17611,"src":"6191:4:55","typeDescriptions":{"typeIdentifier":"t_userDefinedValueType$_SlotIndex_$17382","typeString":"OutflowLimitedAMMSV.SlotIndex"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"6177:19:55","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"src":"6159:37:55","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"nodeType":"BinaryOperation","operator":"+","rightExpression":{"baseExpression":{"expression":{"id":17640,"name":"$","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":17601,"src":"6199:1:55","typeDescriptions":{"typeIdentifier":"t_struct$_LOMStorage_$17392_storage_ptr","typeString":"struct OutflowLimitedAMMSV.LOMStorage storage pointer"}},"id":17641,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"6201:11:55","memberName":"assetsDelta","nodeType":"MemberAccess","referencedDeclaration":17391,"src":"6199:13:55","typeDescriptions":{"typeIdentifier":"t_mapping$_t_userDefinedValueType$_SlotIndex_$17382_$_t_int256_$","typeString":"mapping(OutflowLimitedAMMSV.SlotIndex => int256)"}},"id":17643,"indexExpression":{"id":17642,"name":"prevSlot","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":17617,"src":"6213:8:55","typeDescriptions":{"typeIdentifier":"t_userDefinedValueType$_SlotIndex_$17382","typeString":"OutflowLimitedAMMSV.SlotIndex"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"6199:23:55","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"src":"6159:63:55","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"nodeType":"VariableDeclarationStatement","src":"6132:90:55"},{"condition":{"commonType":{"typeIdentifier":"t_bool","typeString":"bool"},"id":17657,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"commonType":{"typeIdentifier":"t_int256","typeString":"int256"},"id":17648,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":17646,"name":"deltaLastTwoSlots","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":17629,"src":"6458:17:55","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"nodeType":"BinaryOperation","operator":"<","rightExpression":{"hexValue":"30","id":17647,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"6478:1:55","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"6458:21:55","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"nodeType":"BinaryOperation","operator":"&&","rightExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":17656,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"arguments":[{"id":17652,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"UnaryOperation","operator":"-","prefix":true,"src":"6491:18:55","subExpression":{"id":17651,"name":"deltaLastTwoSlots","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":17629,"src":"6492:17:55","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_int256","typeString":"int256"}],"id":17650,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"6483:7:55","typeDescriptions":{"typeIdentifier":"t_type$_t_uint256_$","typeString":"type(uint256)"},"typeName":{"id":17649,"name":"uint256","nodeType":"ElementaryTypeName","src":"6483:7:55","typeDescriptions":{}}},"id":17653,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"6483:27:55","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">","rightExpression":{"expression":{"id":17654,"name":"$","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":17601,"src":"6513:1:55","typeDescriptions":{"typeIdentifier":"t_struct$_LOMStorage_$17392_storage_ptr","typeString":"struct OutflowLimitedAMMSV.LOMStorage storage pointer"}},"id":17655,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"6515:5:55","memberName":"limit","nodeType":"MemberAccess","referencedDeclaration":17386,"src":"6513:7:55","typeDescriptions":{"typeIdentifier":"t_uint128","typeString":"uint128"}},"src":"6483:37:55","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"src":"6458:62:55","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":17664,"nodeType":"IfStatement","src":"6454:123:55","trueBody":{"errorCall":{"arguments":[{"id":17659,"name":"deltaLastTwoSlots","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":17629,"src":"6550:17:55","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},{"expression":{"id":17660,"name":"$","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":17601,"src":"6569:1:55","typeDescriptions":{"typeIdentifier":"t_struct$_LOMStorage_$17392_storage_ptr","typeString":"struct OutflowLimitedAMMSV.LOMStorage storage pointer"}},"id":17661,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"6571:5:55","memberName":"limit","nodeType":"MemberAccess","referencedDeclaration":17386,"src":"6569:7:55","typeDescriptions":{"typeIdentifier":"t_uint128","typeString":"uint128"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_int256","typeString":"int256"},{"typeIdentifier":"t_uint128","typeString":"uint128"}],"id":17658,"name":"LimitReached","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":17413,"src":"6537:12:55","typeDescriptions":{"typeIdentifier":"t_function_error_pure$_t_int256_$_t_uint256_$returns$_t_error_$","typeString":"function (int256,uint256) pure returns (error)"}},"id":17662,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"6537:40:55","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_error","typeString":"error"}},"id":17663,"nodeType":"RevertStatement","src":"6530:47:55"}},{"expression":{"id":17673,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"baseExpression":{"expression":{"id":17665,"name":"$","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":17601,"src":"6652:1:55","typeDescriptions":{"typeIdentifier":"t_struct$_LOMStorage_$17392_storage_ptr","typeString":"struct OutflowLimitedAMMSV.LOMStorage storage pointer"}},"id":17668,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"6654:11:55","memberName":"assetsDelta","nodeType":"MemberAccess","referencedDeclaration":17391,"src":"6652:13:55","typeDescriptions":{"typeIdentifier":"t_mapping$_t_userDefinedValueType$_SlotIndex_$17382_$_t_int256_$","typeString":"mapping(OutflowLimitedAMMSV.SlotIndex => int256)"}},"id":17669,"indexExpression":{"id":17667,"name":"slot","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":17611,"src":"6666:4:55","typeDescriptions":{"typeIdentifier":"t_userDefinedValueType$_SlotIndex_$17382","typeString":"OutflowLimitedAMMSV.SlotIndex"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"nodeType":"IndexAccess","src":"6652:19:55","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"nodeType":"Assignment","operator":"-=","rightHandSide":{"arguments":[],"expression":{"argumentTypes":[],"expression":{"id":17670,"name":"assets","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":17593,"src":"6675:6:55","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":17671,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"6682:8:55","memberName":"toInt256","nodeType":"MemberAccess","referencedDeclaration":14480,"src":"6675:15:55","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_uint256_$returns$_t_int256_$attached_to$_t_uint256_$","typeString":"function (uint256) pure returns (int256)"}},"id":17672,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"6675:17:55","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"src":"6652:40:55","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"id":17674,"nodeType":"ExpressionStatement","src":"6652:40:55"}]}},{"expression":{"arguments":[{"id":17680,"name":"caller","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":17587,"src":"6720:6:55","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":17681,"name":"receiver","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":17589,"src":"6728:8:55","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":17682,"name":"owner","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":17591,"src":"6738:5:55","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":17683,"name":"assets","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":17593,"src":"6745:6:55","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"id":17684,"name":"shares","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":17595,"src":"6753:6:55","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"}],"expression":{"id":17677,"name":"super","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-25,"src":"6704:5:55","typeDescriptions":{"typeIdentifier":"t_type$_t_super$_OutflowLimitedAMMSV_$17740_$","typeString":"type(contract super OutflowLimitedAMMSV)"}},"id":17679,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"6710:9:55","memberName":"_withdraw","nodeType":"MemberAccess","referencedDeclaration":15167,"src":"6704:15:55","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_address_$_t_address_$_t_address_$_t_uint256_$_t_uint256_$returns$__$","typeString":"function (address,address,address,uint256,uint256)"}},"id":17685,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"6704:56:55","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":17686,"nodeType":"ExpressionStatement","src":"6704:56:55"}]},"documentation":{"id":17585,"nodeType":"StructuredDocumentation","src":"5706:34:55","text":"@inheritdoc ERC4626Upgradeable"},"id":17688,"implemented":true,"kind":"function","modifiers":[],"name":"_withdraw","nameLocation":"5752:9:55","nodeType":"FunctionDefinition","overrides":{"id":17597,"nodeType":"OverrideSpecifier","overrides":[],"src":"5884:8:55"},"parameters":{"id":17596,"nodeType":"ParameterList","parameters":[{"constant":false,"id":17587,"mutability":"mutable","name":"caller","nameLocation":"5775:6:55","nodeType":"VariableDeclaration","scope":17688,"src":"5767:14:55","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":17586,"name":"address","nodeType":"ElementaryTypeName","src":"5767:7:55","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":17589,"mutability":"mutable","name":"receiver","nameLocation":"5795:8:55","nodeType":"VariableDeclaration","scope":17688,"src":"5787:16:55","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":17588,"name":"address","nodeType":"ElementaryTypeName","src":"5787:7:55","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":17591,"mutability":"mutable","name":"owner","nameLocation":"5817:5:55","nodeType":"VariableDeclaration","scope":17688,"src":"5809:13:55","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":17590,"name":"address","nodeType":"ElementaryTypeName","src":"5809:7:55","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":17593,"mutability":"mutable","name":"assets","nameLocation":"5836:6:55","nodeType":"VariableDeclaration","scope":17688,"src":"5828:14:55","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":17592,"name":"uint256","nodeType":"ElementaryTypeName","src":"5828:7:55","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":17595,"mutability":"mutable","name":"shares","nameLocation":"5856:6:55","nodeType":"VariableDeclaration","scope":17688,"src":"5848:14:55","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":17594,"name":"uint256","nodeType":"ElementaryTypeName","src":"5848:7:55","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"5761:105:55"},"returnParameters":{"id":17598,"nodeType":"ParameterList","parameters":[],"src":"5893:0:55"},"scope":17740,"src":"5743:1022:55","stateMutability":"nonpayable","virtual":true,"visibility":"internal"},{"baseFunctions":[15194],"body":{"id":17738,"nodeType":"Block","src":"6916:293:55","statements":[{"assignments":[17703],"declarations":[{"constant":false,"id":17703,"mutability":"mutable","name":"$","nameLocation":"6941:1:55","nodeType":"VariableDeclaration","scope":17738,"src":"6922:20:55","stateVariable":false,"storageLocation":"storage","typeDescriptions":{"typeIdentifier":"t_struct$_LOMStorage_$17392_storage_ptr","typeString":"struct OutflowLimitedAMMSV.LOMStorage"},"typeName":{"id":17702,"nodeType":"UserDefinedTypeName","pathNode":{"id":17701,"name":"LOMStorage","nameLocations":["6922:10:55"],"nodeType":"IdentifierPath","referencedDeclaration":17392,"src":"6922:10:55"},"referencedDeclaration":17392,"src":"6922:10:55","typeDescriptions":{"typeIdentifier":"t_struct$_LOMStorage_$17392_storage_ptr","typeString":"struct OutflowLimitedAMMSV.LOMStorage"}},"visibility":"internal"}],"id":17706,"initialValue":{"arguments":[],"expression":{"argumentTypes":[],"id":17704,"name":"_getLOMStorage","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":17424,"src":"6945:14:55","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$__$returns$_t_struct$_LOMStorage_$17392_storage_ptr_$","typeString":"function () pure returns (struct OutflowLimitedAMMSV.LOMStorage storage pointer)"}},"id":17705,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"6945:16:55","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_struct$_LOMStorage_$17392_storage_ptr","typeString":"struct OutflowLimitedAMMSV.LOMStorage storage pointer"}},"nodeType":"VariableDeclarationStatement","src":"6922:39:55"},{"condition":{"commonType":{"typeIdentifier":"t_uint128","typeString":"uint128"},"id":17710,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"expression":{"id":17707,"name":"$","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":17703,"src":"6971:1:55","typeDescriptions":{"typeIdentifier":"t_struct$_LOMStorage_$17392_storage_ptr","typeString":"struct OutflowLimitedAMMSV.LOMStorage storage pointer"}},"id":17708,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"6973:8:55","memberName":"slotSize","nodeType":"MemberAccess","referencedDeclaration":17384,"src":"6971:10:55","typeDescriptions":{"typeIdentifier":"t_uint128","typeString":"uint128"}},"nodeType":"BinaryOperation","operator":"!=","rightExpression":{"hexValue":"30","id":17709,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"6985:1:55","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"6971:15:55","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":17728,"nodeType":"IfStatement","src":"6967:184:55","trueBody":{"id":17727,"nodeType":"Block","src":"6988:163:55","statements":[{"assignments":[17713],"declarations":[{"constant":false,"id":17713,"mutability":"mutable","name":"slot","nameLocation":"7077:4:55","nodeType":"VariableDeclaration","scope":17727,"src":"7067:14:55","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_userDefinedValueType$_SlotIndex_$17382","typeString":"OutflowLimitedAMMSV.SlotIndex"},"typeName":{"id":17712,"nodeType":"UserDefinedTypeName","pathNode":{"id":17711,"name":"SlotIndex","nameLocations":["7067:9:55"],"nodeType":"IdentifierPath","referencedDeclaration":17382,"src":"7067:9:55"},"referencedDeclaration":17382,"src":"7067:9:55","typeDescriptions":{"typeIdentifier":"t_userDefinedValueType$_SlotIndex_$17382","typeString":"OutflowLimitedAMMSV.SlotIndex"}},"visibility":"internal"}],"id":17716,"initialValue":{"arguments":[],"expression":{"argumentTypes":[],"id":17714,"name":"_slotIndex","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":17584,"src":"7084:10:55","typeDescriptions":{"typeIdentifier":"t_function_internal_view$__$returns$_t_userDefinedValueType$_SlotIndex_$17382_$","typeString":"function () view returns (OutflowLimitedAMMSV.SlotIndex)"}},"id":17715,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"7084:12:55","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_userDefinedValueType$_SlotIndex_$17382","typeString":"OutflowLimitedAMMSV.SlotIndex"}},"nodeType":"VariableDeclarationStatement","src":"7067:29:55"},{"expression":{"id":17725,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"baseExpression":{"expression":{"id":17717,"name":"$","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":17703,"src":"7104:1:55","typeDescriptions":{"typeIdentifier":"t_struct$_LOMStorage_$17392_storage_ptr","typeString":"struct OutflowLimitedAMMSV.LOMStorage storage pointer"}},"id":17720,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"7106:11:55","memberName":"assetsDelta","nodeType":"MemberAccess","referencedDeclaration":17391,"src":"7104:13:55","typeDescriptions":{"typeIdentifier":"t_mapping$_t_userDefinedValueType$_SlotIndex_$17382_$_t_int256_$","typeString":"mapping(OutflowLimitedAMMSV.SlotIndex => int256)"}},"id":17721,"indexExpression":{"id":17719,"name":"slot","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":17713,"src":"7118:4:55","typeDescriptions":{"typeIdentifier":"t_userDefinedValueType$_SlotIndex_$17382","typeString":"OutflowLimitedAMMSV.SlotIndex"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"nodeType":"IndexAccess","src":"7104:19:55","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"nodeType":"Assignment","operator":"+=","rightHandSide":{"arguments":[],"expression":{"argumentTypes":[],"expression":{"id":17722,"name":"assets","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":17695,"src":"7127:6:55","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":17723,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"7134:8:55","memberName":"toInt256","nodeType":"MemberAccess","referencedDeclaration":14480,"src":"7127:15:55","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_uint256_$returns$_t_int256_$attached_to$_t_uint256_$","typeString":"function (uint256) pure returns (int256)"}},"id":17724,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"7127:17:55","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"src":"7104:40:55","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"id":17726,"nodeType":"ExpressionStatement","src":"7104:40:55"}]}},{"expression":{"arguments":[{"id":17732,"name":"caller","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":17691,"src":"7171:6:55","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":17733,"name":"receiver","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":17693,"src":"7179:8:55","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":17734,"name":"assets","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":17695,"src":"7189:6:55","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"id":17735,"name":"shares","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":17697,"src":"7197:6:55","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":17729,"name":"super","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-25,"src":"7156:5:55","typeDescriptions":{"typeIdentifier":"t_type$_t_super$_OutflowLimitedAMMSV_$17740_$","typeString":"type(contract super OutflowLimitedAMMSV)"}},"id":17731,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"7162:8:55","memberName":"_deposit","nodeType":"MemberAccess","referencedDeclaration":15194,"src":"7156:14:55","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_address_$_t_address_$_t_uint256_$_t_uint256_$returns$__$","typeString":"function (address,address,uint256,uint256)"}},"id":17736,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"7156:48:55","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":17737,"nodeType":"ExpressionStatement","src":"7156:48:55"}]},"documentation":{"id":17689,"nodeType":"StructuredDocumentation","src":"6769:34:55","text":"@inheritdoc ERC4626Upgradeable"},"id":17739,"implemented":true,"kind":"function","modifiers":[],"name":"_deposit","nameLocation":"6815:8:55","nodeType":"FunctionDefinition","overrides":{"id":17699,"nodeType":"OverrideSpecifier","overrides":[],"src":"6907:8:55"},"parameters":{"id":17698,"nodeType":"ParameterList","parameters":[{"constant":false,"id":17691,"mutability":"mutable","name":"caller","nameLocation":"6832:6:55","nodeType":"VariableDeclaration","scope":17739,"src":"6824:14:55","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":17690,"name":"address","nodeType":"ElementaryTypeName","src":"6824:7:55","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":17693,"mutability":"mutable","name":"receiver","nameLocation":"6848:8:55","nodeType":"VariableDeclaration","scope":17739,"src":"6840:16:55","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":17692,"name":"address","nodeType":"ElementaryTypeName","src":"6840:7:55","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":17695,"mutability":"mutable","name":"assets","nameLocation":"6866:6:55","nodeType":"VariableDeclaration","scope":17739,"src":"6858:14:55","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":17694,"name":"uint256","nodeType":"ElementaryTypeName","src":"6858:7:55","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":17697,"mutability":"mutable","name":"shares","nameLocation":"6882:6:55","nodeType":"VariableDeclaration","scope":17739,"src":"6874:14:55","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":17696,"name":"uint256","nodeType":"ElementaryTypeName","src":"6874:7:55","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"6823:66:55"},"returnParameters":{"id":17700,"nodeType":"ParameterList","parameters":[],"src":"6916:0:55"},"scope":17740,"src":"6806:403:55","stateMutability":"nonpayable","virtual":true,"visibility":"internal"}],"scope":17741,"src":"1154:6057:55","usedErrors":[10,3721,3730,3739,3748,7149,7154,7159,7168,7173,7178,7332,7345,7669,7672,7943,7948,9423,9878,10299,12736,12753,15311,15786,15788,15793,15797,15801,15803,15805,15807,15809,15811,15813,15817,15821,15825,17413],"usedEvents":[6936,6978,6990,7677,8613,8622,15297,15301,15305,15309,15738,15742,15746,15750,15757,15764,15769,15774,15784,17398,17407]}],"src":"39:7173:55"},"id":55},"contracts/dependencies/aave-v3/DataTypes.sol":{"ast":{"absolutePath":"contracts/dependencies/aave-v3/DataTypes.sol","exportedSymbols":{"DataTypes":[18092]},"id":18093,"license":"BUSL-1.1","nodeType":"SourceUnit","nodes":[{"id":17742,"literals":["solidity","^","0.8",".0"],"nodeType":"PragmaDirective","src":"37:23:56"},{"abstract":false,"baseContracts":[],"canonicalName":"DataTypes","contractDependencies":[],"contractKind":"library","fullyImplemented":true,"id":18092,"linearizedBaseContracts":[18092],"name":"DataTypes","nameLocation":"70:9:56","nodeType":"ContractDefinition","nodes":[{"canonicalName":"DataTypes.ReserveData","id":17774,"members":[{"constant":false,"id":17745,"mutability":"mutable","name":"configuration","nameLocation":"172:13:56","nodeType":"VariableDeclaration","scope":17774,"src":"148:37:56","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_struct$_ReserveConfigurationMap_$17777_storage_ptr","typeString":"struct DataTypes.ReserveConfigurationMap"},"typeName":{"id":17744,"nodeType":"UserDefinedTypeName","pathNode":{"id":17743,"name":"ReserveConfigurationMap","nameLocations":["148:23:56"],"nodeType":"IdentifierPath","referencedDeclaration":17777,"src":"148:23:56"},"referencedDeclaration":17777,"src":"148:23:56","typeDescriptions":{"typeIdentifier":"t_struct$_ReserveConfigurationMap_$17777_storage_ptr","typeString":"struct DataTypes.ReserveConfigurationMap"}},"visibility":"internal"},{"constant":false,"id":17747,"mutability":"mutable","name":"liquidityIndex","nameLocation":"243:14:56","nodeType":"VariableDeclaration","scope":17774,"src":"235:22:56","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint128","typeString":"uint128"},"typeName":{"id":17746,"name":"uint128","nodeType":"ElementaryTypeName","src":"235:7:56","typeDescriptions":{"typeIdentifier":"t_uint128","typeString":"uint128"}},"visibility":"internal"},{"constant":false,"id":17749,"mutability":"mutable","name":"currentLiquidityRate","nameLocation":"319:20:56","nodeType":"VariableDeclaration","scope":17774,"src":"311:28:56","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint128","typeString":"uint128"},"typeName":{"id":17748,"name":"uint128","nodeType":"ElementaryTypeName","src":"311:7:56","typeDescriptions":{"typeIdentifier":"t_uint128","typeString":"uint128"}},"visibility":"internal"},{"constant":false,"id":17751,"mutability":"mutable","name":"variableBorrowIndex","nameLocation":"399:19:56","nodeType":"VariableDeclaration","scope":17774,"src":"391:27:56","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint128","typeString":"uint128"},"typeName":{"id":17750,"name":"uint128","nodeType":"ElementaryTypeName","src":"391:7:56","typeDescriptions":{"typeIdentifier":"t_uint128","typeString":"uint128"}},"visibility":"internal"},{"constant":false,"id":17753,"mutability":"mutable","name":"currentVariableBorrowRate","nameLocation":"489:25:56","nodeType":"VariableDeclaration","scope":17774,"src":"481:33:56","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint128","typeString":"uint128"},"typeName":{"id":17752,"name":"uint128","nodeType":"ElementaryTypeName","src":"481:7:56","typeDescriptions":{"typeIdentifier":"t_uint128","typeString":"uint128"}},"visibility":"internal"},{"constant":false,"id":17755,"mutability":"mutable","name":"currentStableBorrowRate","nameLocation":"583:23:56","nodeType":"VariableDeclaration","scope":17774,"src":"575:31:56","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint128","typeString":"uint128"},"typeName":{"id":17754,"name":"uint128","nodeType":"ElementaryTypeName","src":"575:7:56","typeDescriptions":{"typeIdentifier":"t_uint128","typeString":"uint128"}},"visibility":"internal"},{"constant":false,"id":17757,"mutability":"mutable","name":"lastUpdateTimestamp","nameLocation":"650:19:56","nodeType":"VariableDeclaration","scope":17774,"src":"643:26:56","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint40","typeString":"uint40"},"typeName":{"id":17756,"name":"uint40","nodeType":"ElementaryTypeName","src":"643:6:56","typeDescriptions":{"typeIdentifier":"t_uint40","typeString":"uint40"}},"visibility":"internal"},{"constant":false,"id":17759,"mutability":"mutable","name":"id","nameLocation":"770:2:56","nodeType":"VariableDeclaration","scope":17774,"src":"763:9:56","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint16","typeString":"uint16"},"typeName":{"id":17758,"name":"uint16","nodeType":"ElementaryTypeName","src":"763:6:56","typeDescriptions":{"typeIdentifier":"t_uint16","typeString":"uint16"}},"visibility":"internal"},{"constant":false,"id":17761,"mutability":"mutable","name":"aTokenAddress","nameLocation":"807:13:56","nodeType":"VariableDeclaration","scope":17774,"src":"799:21:56","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":17760,"name":"address","nodeType":"ElementaryTypeName","src":"799:7:56","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":17763,"mutability":"mutable","name":"stableDebtTokenAddress","nameLocation":"864:22:56","nodeType":"VariableDeclaration","scope":17774,"src":"856:30:56","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":17762,"name":"address","nodeType":"ElementaryTypeName","src":"856:7:56","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":17765,"mutability":"mutable","name":"variableDebtTokenAddress","nameLocation":"932:24:56","nodeType":"VariableDeclaration","scope":17774,"src":"924:32:56","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":17764,"name":"address","nodeType":"ElementaryTypeName","src":"924:7:56","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":17767,"mutability":"mutable","name":"interestRateStrategyAddress","nameLocation":"1014:27:56","nodeType":"VariableDeclaration","scope":17774,"src":"1006:35:56","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":17766,"name":"address","nodeType":"ElementaryTypeName","src":"1006:7:56","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":17769,"mutability":"mutable","name":"accruedToTreasury","nameLocation":"1098:17:56","nodeType":"VariableDeclaration","scope":17774,"src":"1090:25:56","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint128","typeString":"uint128"},"typeName":{"id":17768,"name":"uint128","nodeType":"ElementaryTypeName","src":"1090:7:56","typeDescriptions":{"typeIdentifier":"t_uint128","typeString":"uint128"}},"visibility":"internal"},{"constant":false,"id":17771,"mutability":"mutable","name":"unbacked","nameLocation":"1204:8:56","nodeType":"VariableDeclaration","scope":17774,"src":"1196:16:56","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint128","typeString":"uint128"},"typeName":{"id":17770,"name":"uint128","nodeType":"ElementaryTypeName","src":"1196:7:56","typeDescriptions":{"typeIdentifier":"t_uint128","typeString":"uint128"}},"visibility":"internal"},{"constant":false,"id":17773,"mutability":"mutable","name":"isolationModeTotalDebt","nameLocation":"1299:22:56","nodeType":"VariableDeclaration","scope":17774,"src":"1291:30:56","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint128","typeString":"uint128"},"typeName":{"id":17772,"name":"uint128","nodeType":"ElementaryTypeName","src":"1291:7:56","typeDescriptions":{"typeIdentifier":"t_uint128","typeString":"uint128"}},"visibility":"internal"}],"name":"ReserveData","nameLocation":"91:11:56","nodeType":"StructDefinition","scope":18092,"src":"84:1242:56","visibility":"public"},{"canonicalName":"DataTypes.ReserveConfigurationMap","id":17777,"members":[{"constant":false,"id":17776,"mutability":"mutable","name":"data","nameLocation":"2260:4:56","nodeType":"VariableDeclaration","scope":17777,"src":"2252:12:56","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":17775,"name":"uint256","nodeType":"ElementaryTypeName","src":"2252:7:56","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"name":"ReserveConfigurationMap","nameLocation":"1337:23:56","nodeType":"StructDefinition","scope":18092,"src":"1330:939:56","visibility":"public"},{"canonicalName":"DataTypes.UserConfigurationMap","id":17781,"members":[{"constant":false,"id":17780,"mutability":"mutable","name":"data","nameLocation":"2578:4:56","nodeType":"VariableDeclaration","scope":17781,"src":"2570:12:56","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":17779,"name":"uint256","nodeType":"ElementaryTypeName","src":"2570:7:56","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"name":"UserConfigurationMap","nameLocation":"2280:20:56","nodeType":"StructDefinition","scope":18092,"src":"2273:314:56","visibility":"public"},{"canonicalName":"DataTypes.EModeCategory","id":17792,"members":[{"constant":false,"id":17783,"mutability":"mutable","name":"ltv","nameLocation":"2695:3:56","nodeType":"VariableDeclaration","scope":17792,"src":"2688:10:56","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint16","typeString":"uint16"},"typeName":{"id":17782,"name":"uint16","nodeType":"ElementaryTypeName","src":"2688:6:56","typeDescriptions":{"typeIdentifier":"t_uint16","typeString":"uint16"}},"visibility":"internal"},{"constant":false,"id":17785,"mutability":"mutable","name":"liquidationThreshold","nameLocation":"2711:20:56","nodeType":"VariableDeclaration","scope":17792,"src":"2704:27:56","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint16","typeString":"uint16"},"typeName":{"id":17784,"name":"uint16","nodeType":"ElementaryTypeName","src":"2704:6:56","typeDescriptions":{"typeIdentifier":"t_uint16","typeString":"uint16"}},"visibility":"internal"},{"constant":false,"id":17787,"mutability":"mutable","name":"liquidationBonus","nameLocation":"2744:16:56","nodeType":"VariableDeclaration","scope":17792,"src":"2737:23:56","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint16","typeString":"uint16"},"typeName":{"id":17786,"name":"uint16","nodeType":"ElementaryTypeName","src":"2737:6:56","typeDescriptions":{"typeIdentifier":"t_uint16","typeString":"uint16"}},"visibility":"internal"},{"constant":false,"id":17789,"mutability":"mutable","name":"priceSource","nameLocation":"2885:11:56","nodeType":"VariableDeclaration","scope":17792,"src":"2877:19:56","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":17788,"name":"address","nodeType":"ElementaryTypeName","src":"2877:7:56","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":17791,"mutability":"mutable","name":"label","nameLocation":"2909:5:56","nodeType":"VariableDeclaration","scope":17792,"src":"2902:12:56","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_string_storage_ptr","typeString":"string"},"typeName":{"id":17790,"name":"string","nodeType":"ElementaryTypeName","src":"2902:6:56","typeDescriptions":{"typeIdentifier":"t_string_storage_ptr","typeString":"string"}},"visibility":"internal"}],"name":"EModeCategory","nameLocation":"2598:13:56","nodeType":"StructDefinition","scope":18092,"src":"2591:328:56","visibility":"public"},{"canonicalName":"DataTypes.InterestRateMode","id":17796,"members":[{"id":17793,"name":"NONE","nameLocation":"2946:4:56","nodeType":"EnumValue","src":"2946:4:56"},{"id":17794,"name":"STABLE","nameLocation":"2952:6:56","nodeType":"EnumValue","src":"2952:6:56"},{"id":17795,"name":"VARIABLE","nameLocation":"2960:8:56","nodeType":"EnumValue","src":"2960:8:56"}],"name":"InterestRateMode","nameLocation":"2928:16:56","nodeType":"EnumDefinition","src":"2923:46:56"},{"canonicalName":"DataTypes.ReserveCache","id":17838,"members":[{"constant":false,"id":17798,"mutability":"mutable","name":"currScaledVariableDebt","nameLocation":"3007:22:56","nodeType":"VariableDeclaration","scope":17838,"src":"2999:30:56","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":17797,"name":"uint256","nodeType":"ElementaryTypeName","src":"2999:7:56","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":17800,"mutability":"mutable","name":"nextScaledVariableDebt","nameLocation":"3043:22:56","nodeType":"VariableDeclaration","scope":17838,"src":"3035:30:56","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":17799,"name":"uint256","nodeType":"ElementaryTypeName","src":"3035:7:56","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":17802,"mutability":"mutable","name":"currPrincipalStableDebt","nameLocation":"3079:23:56","nodeType":"VariableDeclaration","scope":17838,"src":"3071:31:56","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":17801,"name":"uint256","nodeType":"ElementaryTypeName","src":"3071:7:56","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":17804,"mutability":"mutable","name":"currAvgStableBorrowRate","nameLocation":"3116:23:56","nodeType":"VariableDeclaration","scope":17838,"src":"3108:31:56","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":17803,"name":"uint256","nodeType":"ElementaryTypeName","src":"3108:7:56","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":17806,"mutability":"mutable","name":"currTotalStableDebt","nameLocation":"3153:19:56","nodeType":"VariableDeclaration","scope":17838,"src":"3145:27:56","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":17805,"name":"uint256","nodeType":"ElementaryTypeName","src":"3145:7:56","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":17808,"mutability":"mutable","name":"nextAvgStableBorrowRate","nameLocation":"3186:23:56","nodeType":"VariableDeclaration","scope":17838,"src":"3178:31:56","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":17807,"name":"uint256","nodeType":"ElementaryTypeName","src":"3178:7:56","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":17810,"mutability":"mutable","name":"nextTotalStableDebt","nameLocation":"3223:19:56","nodeType":"VariableDeclaration","scope":17838,"src":"3215:27:56","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":17809,"name":"uint256","nodeType":"ElementaryTypeName","src":"3215:7:56","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":17812,"mutability":"mutable","name":"currLiquidityIndex","nameLocation":"3256:18:56","nodeType":"VariableDeclaration","scope":17838,"src":"3248:26:56","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":17811,"name":"uint256","nodeType":"ElementaryTypeName","src":"3248:7:56","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":17814,"mutability":"mutable","name":"nextLiquidityIndex","nameLocation":"3288:18:56","nodeType":"VariableDeclaration","scope":17838,"src":"3280:26:56","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":17813,"name":"uint256","nodeType":"ElementaryTypeName","src":"3280:7:56","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":17816,"mutability":"mutable","name":"currVariableBorrowIndex","nameLocation":"3320:23:56","nodeType":"VariableDeclaration","scope":17838,"src":"3312:31:56","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":17815,"name":"uint256","nodeType":"ElementaryTypeName","src":"3312:7:56","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":17818,"mutability":"mutable","name":"nextVariableBorrowIndex","nameLocation":"3357:23:56","nodeType":"VariableDeclaration","scope":17838,"src":"3349:31:56","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":17817,"name":"uint256","nodeType":"ElementaryTypeName","src":"3349:7:56","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":17820,"mutability":"mutable","name":"currLiquidityRate","nameLocation":"3394:17:56","nodeType":"VariableDeclaration","scope":17838,"src":"3386:25:56","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":17819,"name":"uint256","nodeType":"ElementaryTypeName","src":"3386:7:56","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":17822,"mutability":"mutable","name":"currVariableBorrowRate","nameLocation":"3425:22:56","nodeType":"VariableDeclaration","scope":17838,"src":"3417:30:56","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":17821,"name":"uint256","nodeType":"ElementaryTypeName","src":"3417:7:56","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":17824,"mutability":"mutable","name":"reserveFactor","nameLocation":"3461:13:56","nodeType":"VariableDeclaration","scope":17838,"src":"3453:21:56","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":17823,"name":"uint256","nodeType":"ElementaryTypeName","src":"3453:7:56","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":17827,"mutability":"mutable","name":"reserveConfiguration","nameLocation":"3504:20:56","nodeType":"VariableDeclaration","scope":17838,"src":"3480:44:56","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_struct$_ReserveConfigurationMap_$17777_storage_ptr","typeString":"struct DataTypes.ReserveConfigurationMap"},"typeName":{"id":17826,"nodeType":"UserDefinedTypeName","pathNode":{"id":17825,"name":"ReserveConfigurationMap","nameLocations":["3480:23:56"],"nodeType":"IdentifierPath","referencedDeclaration":17777,"src":"3480:23:56"},"referencedDeclaration":17777,"src":"3480:23:56","typeDescriptions":{"typeIdentifier":"t_struct$_ReserveConfigurationMap_$17777_storage_ptr","typeString":"struct DataTypes.ReserveConfigurationMap"}},"visibility":"internal"},{"constant":false,"id":17829,"mutability":"mutable","name":"aTokenAddress","nameLocation":"3538:13:56","nodeType":"VariableDeclaration","scope":17838,"src":"3530:21:56","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":17828,"name":"address","nodeType":"ElementaryTypeName","src":"3530:7:56","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":17831,"mutability":"mutable","name":"stableDebtTokenAddress","nameLocation":"3565:22:56","nodeType":"VariableDeclaration","scope":17838,"src":"3557:30:56","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":17830,"name":"address","nodeType":"ElementaryTypeName","src":"3557:7:56","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":17833,"mutability":"mutable","name":"variableDebtTokenAddress","nameLocation":"3601:24:56","nodeType":"VariableDeclaration","scope":17838,"src":"3593:32:56","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":17832,"name":"address","nodeType":"ElementaryTypeName","src":"3593:7:56","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":17835,"mutability":"mutable","name":"reserveLastUpdateTimestamp","nameLocation":"3638:26:56","nodeType":"VariableDeclaration","scope":17838,"src":"3631:33:56","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint40","typeString":"uint40"},"typeName":{"id":17834,"name":"uint40","nodeType":"ElementaryTypeName","src":"3631:6:56","typeDescriptions":{"typeIdentifier":"t_uint40","typeString":"uint40"}},"visibility":"internal"},{"constant":false,"id":17837,"mutability":"mutable","name":"stableDebtLastUpdateTimestamp","nameLocation":"3677:29:56","nodeType":"VariableDeclaration","scope":17838,"src":"3670:36:56","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint40","typeString":"uint40"},"typeName":{"id":17836,"name":"uint40","nodeType":"ElementaryTypeName","src":"3670:6:56","typeDescriptions":{"typeIdentifier":"t_uint40","typeString":"uint40"}},"visibility":"internal"}],"name":"ReserveCache","nameLocation":"2980:12:56","nodeType":"StructDefinition","scope":18092,"src":"2973:738:56","visibility":"public"},{"canonicalName":"DataTypes.ExecuteLiquidationCallParams","id":17857,"members":[{"constant":false,"id":17840,"mutability":"mutable","name":"reservesCount","nameLocation":"3765:13:56","nodeType":"VariableDeclaration","scope":17857,"src":"3757:21:56","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":17839,"name":"uint256","nodeType":"ElementaryTypeName","src":"3757:7:56","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":17842,"mutability":"mutable","name":"debtToCover","nameLocation":"3792:11:56","nodeType":"VariableDeclaration","scope":17857,"src":"3784:19:56","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":17841,"name":"uint256","nodeType":"ElementaryTypeName","src":"3784:7:56","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":17844,"mutability":"mutable","name":"collateralAsset","nameLocation":"3817:15:56","nodeType":"VariableDeclaration","scope":17857,"src":"3809:23:56","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":17843,"name":"address","nodeType":"ElementaryTypeName","src":"3809:7:56","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":17846,"mutability":"mutable","name":"debtAsset","nameLocation":"3846:9:56","nodeType":"VariableDeclaration","scope":17857,"src":"3838:17:56","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":17845,"name":"address","nodeType":"ElementaryTypeName","src":"3838:7:56","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":17848,"mutability":"mutable","name":"user","nameLocation":"3869:4:56","nodeType":"VariableDeclaration","scope":17857,"src":"3861:12:56","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":17847,"name":"address","nodeType":"ElementaryTypeName","src":"3861:7:56","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":17850,"mutability":"mutable","name":"receiveAToken","nameLocation":"3884:13:56","nodeType":"VariableDeclaration","scope":17857,"src":"3879:18:56","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":17849,"name":"bool","nodeType":"ElementaryTypeName","src":"3879:4:56","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"},{"constant":false,"id":17852,"mutability":"mutable","name":"priceOracle","nameLocation":"3911:11:56","nodeType":"VariableDeclaration","scope":17857,"src":"3903:19:56","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":17851,"name":"address","nodeType":"ElementaryTypeName","src":"3903:7:56","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":17854,"mutability":"mutable","name":"userEModeCategory","nameLocation":"3934:17:56","nodeType":"VariableDeclaration","scope":17857,"src":"3928:23:56","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"},"typeName":{"id":17853,"name":"uint8","nodeType":"ElementaryTypeName","src":"3928:5:56","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}},"visibility":"internal"},{"constant":false,"id":17856,"mutability":"mutable","name":"priceOracleSentinel","nameLocation":"3965:19:56","nodeType":"VariableDeclaration","scope":17857,"src":"3957:27:56","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":17855,"name":"address","nodeType":"ElementaryTypeName","src":"3957:7:56","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"name":"ExecuteLiquidationCallParams","nameLocation":"3722:28:56","nodeType":"StructDefinition","scope":18092,"src":"3715:274:56","visibility":"public"},{"canonicalName":"DataTypes.ExecuteSupplyParams","id":17866,"members":[{"constant":false,"id":17859,"mutability":"mutable","name":"asset","nameLocation":"4034:5:56","nodeType":"VariableDeclaration","scope":17866,"src":"4026:13:56","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":17858,"name":"address","nodeType":"ElementaryTypeName","src":"4026:7:56","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":17861,"mutability":"mutable","name":"amount","nameLocation":"4053:6:56","nodeType":"VariableDeclaration","scope":17866,"src":"4045:14:56","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":17860,"name":"uint256","nodeType":"ElementaryTypeName","src":"4045:7:56","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":17863,"mutability":"mutable","name":"onBehalfOf","nameLocation":"4073:10:56","nodeType":"VariableDeclaration","scope":17866,"src":"4065:18:56","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":17862,"name":"address","nodeType":"ElementaryTypeName","src":"4065:7:56","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":17865,"mutability":"mutable","name":"referralCode","nameLocation":"4096:12:56","nodeType":"VariableDeclaration","scope":17866,"src":"4089:19:56","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint16","typeString":"uint16"},"typeName":{"id":17864,"name":"uint16","nodeType":"ElementaryTypeName","src":"4089:6:56","typeDescriptions":{"typeIdentifier":"t_uint16","typeString":"uint16"}},"visibility":"internal"}],"name":"ExecuteSupplyParams","nameLocation":"4000:19:56","nodeType":"StructDefinition","scope":18092,"src":"3993:120:56","visibility":"public"},{"canonicalName":"DataTypes.ExecuteBorrowParams","id":17892,"members":[{"constant":false,"id":17868,"mutability":"mutable","name":"asset","nameLocation":"4158:5:56","nodeType":"VariableDeclaration","scope":17892,"src":"4150:13:56","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":17867,"name":"address","nodeType":"ElementaryTypeName","src":"4150:7:56","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":17870,"mutability":"mutable","name":"user","nameLocation":"4177:4:56","nodeType":"VariableDeclaration","scope":17892,"src":"4169:12:56","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":17869,"name":"address","nodeType":"ElementaryTypeName","src":"4169:7:56","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":17872,"mutability":"mutable","name":"onBehalfOf","nameLocation":"4195:10:56","nodeType":"VariableDeclaration","scope":17892,"src":"4187:18:56","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":17871,"name":"address","nodeType":"ElementaryTypeName","src":"4187:7:56","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":17874,"mutability":"mutable","name":"amount","nameLocation":"4219:6:56","nodeType":"VariableDeclaration","scope":17892,"src":"4211:14:56","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":17873,"name":"uint256","nodeType":"ElementaryTypeName","src":"4211:7:56","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":17877,"mutability":"mutable","name":"interestRateMode","nameLocation":"4248:16:56","nodeType":"VariableDeclaration","scope":17892,"src":"4231:33:56","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_enum$_InterestRateMode_$17796","typeString":"enum DataTypes.InterestRateMode"},"typeName":{"id":17876,"nodeType":"UserDefinedTypeName","pathNode":{"id":17875,"name":"InterestRateMode","nameLocations":["4231:16:56"],"nodeType":"IdentifierPath","referencedDeclaration":17796,"src":"4231:16:56"},"referencedDeclaration":17796,"src":"4231:16:56","typeDescriptions":{"typeIdentifier":"t_enum$_InterestRateMode_$17796","typeString":"enum DataTypes.InterestRateMode"}},"visibility":"internal"},{"constant":false,"id":17879,"mutability":"mutable","name":"referralCode","nameLocation":"4277:12:56","nodeType":"VariableDeclaration","scope":17892,"src":"4270:19:56","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint16","typeString":"uint16"},"typeName":{"id":17878,"name":"uint16","nodeType":"ElementaryTypeName","src":"4270:6:56","typeDescriptions":{"typeIdentifier":"t_uint16","typeString":"uint16"}},"visibility":"internal"},{"constant":false,"id":17881,"mutability":"mutable","name":"releaseUnderlying","nameLocation":"4300:17:56","nodeType":"VariableDeclaration","scope":17892,"src":"4295:22:56","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":17880,"name":"bool","nodeType":"ElementaryTypeName","src":"4295:4:56","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"},{"constant":false,"id":17883,"mutability":"mutable","name":"maxStableRateBorrowSizePercent","nameLocation":"4331:30:56","nodeType":"VariableDeclaration","scope":17892,"src":"4323:38:56","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":17882,"name":"uint256","nodeType":"ElementaryTypeName","src":"4323:7:56","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":17885,"mutability":"mutable","name":"reservesCount","nameLocation":"4375:13:56","nodeType":"VariableDeclaration","scope":17892,"src":"4367:21:56","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":17884,"name":"uint256","nodeType":"ElementaryTypeName","src":"4367:7:56","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":17887,"mutability":"mutable","name":"oracle","nameLocation":"4402:6:56","nodeType":"VariableDeclaration","scope":17892,"src":"4394:14:56","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":17886,"name":"address","nodeType":"ElementaryTypeName","src":"4394:7:56","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":17889,"mutability":"mutable","name":"userEModeCategory","nameLocation":"4420:17:56","nodeType":"VariableDeclaration","scope":17892,"src":"4414:23:56","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"},"typeName":{"id":17888,"name":"uint8","nodeType":"ElementaryTypeName","src":"4414:5:56","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}},"visibility":"internal"},{"constant":false,"id":17891,"mutability":"mutable","name":"priceOracleSentinel","nameLocation":"4451:19:56","nodeType":"VariableDeclaration","scope":17892,"src":"4443:27:56","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":17890,"name":"address","nodeType":"ElementaryTypeName","src":"4443:7:56","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"name":"ExecuteBorrowParams","nameLocation":"4124:19:56","nodeType":"StructDefinition","scope":18092,"src":"4117:358:56","visibility":"public"},{"canonicalName":"DataTypes.ExecuteRepayParams","id":17904,"members":[{"constant":false,"id":17894,"mutability":"mutable","name":"asset","nameLocation":"4519:5:56","nodeType":"VariableDeclaration","scope":17904,"src":"4511:13:56","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":17893,"name":"address","nodeType":"ElementaryTypeName","src":"4511:7:56","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":17896,"mutability":"mutable","name":"amount","nameLocation":"4538:6:56","nodeType":"VariableDeclaration","scope":17904,"src":"4530:14:56","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":17895,"name":"uint256","nodeType":"ElementaryTypeName","src":"4530:7:56","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":17899,"mutability":"mutable","name":"interestRateMode","nameLocation":"4567:16:56","nodeType":"VariableDeclaration","scope":17904,"src":"4550:33:56","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_enum$_InterestRateMode_$17796","typeString":"enum DataTypes.InterestRateMode"},"typeName":{"id":17898,"nodeType":"UserDefinedTypeName","pathNode":{"id":17897,"name":"InterestRateMode","nameLocations":["4550:16:56"],"nodeType":"IdentifierPath","referencedDeclaration":17796,"src":"4550:16:56"},"referencedDeclaration":17796,"src":"4550:16:56","typeDescriptions":{"typeIdentifier":"t_enum$_InterestRateMode_$17796","typeString":"enum DataTypes.InterestRateMode"}},"visibility":"internal"},{"constant":false,"id":17901,"mutability":"mutable","name":"onBehalfOf","nameLocation":"4597:10:56","nodeType":"VariableDeclaration","scope":17904,"src":"4589:18:56","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":17900,"name":"address","nodeType":"ElementaryTypeName","src":"4589:7:56","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":17903,"mutability":"mutable","name":"useATokens","nameLocation":"4618:10:56","nodeType":"VariableDeclaration","scope":17904,"src":"4613:15:56","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":17902,"name":"bool","nodeType":"ElementaryTypeName","src":"4613:4:56","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"}],"name":"ExecuteRepayParams","nameLocation":"4486:18:56","nodeType":"StructDefinition","scope":18092,"src":"4479:154:56","visibility":"public"},{"canonicalName":"DataTypes.ExecuteWithdrawParams","id":17917,"members":[{"constant":false,"id":17906,"mutability":"mutable","name":"asset","nameLocation":"4680:5:56","nodeType":"VariableDeclaration","scope":17917,"src":"4672:13:56","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":17905,"name":"address","nodeType":"ElementaryTypeName","src":"4672:7:56","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":17908,"mutability":"mutable","name":"amount","nameLocation":"4699:6:56","nodeType":"VariableDeclaration","scope":17917,"src":"4691:14:56","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":17907,"name":"uint256","nodeType":"ElementaryTypeName","src":"4691:7:56","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":17910,"mutability":"mutable","name":"to","nameLocation":"4719:2:56","nodeType":"VariableDeclaration","scope":17917,"src":"4711:10:56","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":17909,"name":"address","nodeType":"ElementaryTypeName","src":"4711:7:56","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":17912,"mutability":"mutable","name":"reservesCount","nameLocation":"4735:13:56","nodeType":"VariableDeclaration","scope":17917,"src":"4727:21:56","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":17911,"name":"uint256","nodeType":"ElementaryTypeName","src":"4727:7:56","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":17914,"mutability":"mutable","name":"oracle","nameLocation":"4762:6:56","nodeType":"VariableDeclaration","scope":17917,"src":"4754:14:56","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":17913,"name":"address","nodeType":"ElementaryTypeName","src":"4754:7:56","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":17916,"mutability":"mutable","name":"userEModeCategory","nameLocation":"4780:17:56","nodeType":"VariableDeclaration","scope":17917,"src":"4774:23:56","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"},"typeName":{"id":17915,"name":"uint8","nodeType":"ElementaryTypeName","src":"4774:5:56","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}},"visibility":"internal"}],"name":"ExecuteWithdrawParams","nameLocation":"4644:21:56","nodeType":"StructDefinition","scope":18092,"src":"4637:165:56","visibility":"public"},{"canonicalName":"DataTypes.ExecuteSetUserEModeParams","id":17924,"members":[{"constant":false,"id":17919,"mutability":"mutable","name":"reservesCount","nameLocation":"4853:13:56","nodeType":"VariableDeclaration","scope":17924,"src":"4845:21:56","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":17918,"name":"uint256","nodeType":"ElementaryTypeName","src":"4845:7:56","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":17921,"mutability":"mutable","name":"oracle","nameLocation":"4880:6:56","nodeType":"VariableDeclaration","scope":17924,"src":"4872:14:56","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":17920,"name":"address","nodeType":"ElementaryTypeName","src":"4872:7:56","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":17923,"mutability":"mutable","name":"categoryId","nameLocation":"4898:10:56","nodeType":"VariableDeclaration","scope":17924,"src":"4892:16:56","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"},"typeName":{"id":17922,"name":"uint8","nodeType":"ElementaryTypeName","src":"4892:5:56","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}},"visibility":"internal"}],"name":"ExecuteSetUserEModeParams","nameLocation":"4813:25:56","nodeType":"StructDefinition","scope":18092,"src":"4806:107:56","visibility":"public"},{"canonicalName":"DataTypes.FinalizeTransferParams","id":17943,"members":[{"constant":false,"id":17926,"mutability":"mutable","name":"asset","nameLocation":"4961:5:56","nodeType":"VariableDeclaration","scope":17943,"src":"4953:13:56","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":17925,"name":"address","nodeType":"ElementaryTypeName","src":"4953:7:56","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":17928,"mutability":"mutable","name":"from","nameLocation":"4980:4:56","nodeType":"VariableDeclaration","scope":17943,"src":"4972:12:56","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":17927,"name":"address","nodeType":"ElementaryTypeName","src":"4972:7:56","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":17930,"mutability":"mutable","name":"to","nameLocation":"4998:2:56","nodeType":"VariableDeclaration","scope":17943,"src":"4990:10:56","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":17929,"name":"address","nodeType":"ElementaryTypeName","src":"4990:7:56","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":17932,"mutability":"mutable","name":"amount","nameLocation":"5014:6:56","nodeType":"VariableDeclaration","scope":17943,"src":"5006:14:56","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":17931,"name":"uint256","nodeType":"ElementaryTypeName","src":"5006:7:56","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":17934,"mutability":"mutable","name":"balanceFromBefore","nameLocation":"5034:17:56","nodeType":"VariableDeclaration","scope":17943,"src":"5026:25:56","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":17933,"name":"uint256","nodeType":"ElementaryTypeName","src":"5026:7:56","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":17936,"mutability":"mutable","name":"balanceToBefore","nameLocation":"5065:15:56","nodeType":"VariableDeclaration","scope":17943,"src":"5057:23:56","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":17935,"name":"uint256","nodeType":"ElementaryTypeName","src":"5057:7:56","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":17938,"mutability":"mutable","name":"reservesCount","nameLocation":"5094:13:56","nodeType":"VariableDeclaration","scope":17943,"src":"5086:21:56","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":17937,"name":"uint256","nodeType":"ElementaryTypeName","src":"5086:7:56","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":17940,"mutability":"mutable","name":"oracle","nameLocation":"5121:6:56","nodeType":"VariableDeclaration","scope":17943,"src":"5113:14:56","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":17939,"name":"address","nodeType":"ElementaryTypeName","src":"5113:7:56","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":17942,"mutability":"mutable","name":"fromEModeCategory","nameLocation":"5139:17:56","nodeType":"VariableDeclaration","scope":17943,"src":"5133:23:56","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"},"typeName":{"id":17941,"name":"uint8","nodeType":"ElementaryTypeName","src":"5133:5:56","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}},"visibility":"internal"}],"name":"FinalizeTransferParams","nameLocation":"4924:22:56","nodeType":"StructDefinition","scope":18092,"src":"4917:244:56","visibility":"public"},{"canonicalName":"DataTypes.FlashloanParams","id":17975,"members":[{"constant":false,"id":17945,"mutability":"mutable","name":"receiverAddress","nameLocation":"5202:15:56","nodeType":"VariableDeclaration","scope":17975,"src":"5194:23:56","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":17944,"name":"address","nodeType":"ElementaryTypeName","src":"5194:7:56","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":17948,"mutability":"mutable","name":"assets","nameLocation":"5233:6:56","nodeType":"VariableDeclaration","scope":17975,"src":"5223:16:56","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_array$_t_address_$dyn_storage_ptr","typeString":"address[]"},"typeName":{"baseType":{"id":17946,"name":"address","nodeType":"ElementaryTypeName","src":"5223:7:56","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"id":17947,"nodeType":"ArrayTypeName","src":"5223:9:56","typeDescriptions":{"typeIdentifier":"t_array$_t_address_$dyn_storage_ptr","typeString":"address[]"}},"visibility":"internal"},{"constant":false,"id":17951,"mutability":"mutable","name":"amounts","nameLocation":"5255:7:56","nodeType":"VariableDeclaration","scope":17975,"src":"5245:17:56","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_storage_ptr","typeString":"uint256[]"},"typeName":{"baseType":{"id":17949,"name":"uint256","nodeType":"ElementaryTypeName","src":"5245:7:56","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":17950,"nodeType":"ArrayTypeName","src":"5245:9:56","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_storage_ptr","typeString":"uint256[]"}},"visibility":"internal"},{"constant":false,"id":17954,"mutability":"mutable","name":"interestRateModes","nameLocation":"5278:17:56","nodeType":"VariableDeclaration","scope":17975,"src":"5268:27:56","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_storage_ptr","typeString":"uint256[]"},"typeName":{"baseType":{"id":17952,"name":"uint256","nodeType":"ElementaryTypeName","src":"5268:7:56","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":17953,"nodeType":"ArrayTypeName","src":"5268:9:56","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_storage_ptr","typeString":"uint256[]"}},"visibility":"internal"},{"constant":false,"id":17956,"mutability":"mutable","name":"onBehalfOf","nameLocation":"5309:10:56","nodeType":"VariableDeclaration","scope":17975,"src":"5301:18:56","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":17955,"name":"address","nodeType":"ElementaryTypeName","src":"5301:7:56","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":17958,"mutability":"mutable","name":"params","nameLocation":"5331:6:56","nodeType":"VariableDeclaration","scope":17975,"src":"5325:12:56","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"},"typeName":{"id":17957,"name":"bytes","nodeType":"ElementaryTypeName","src":"5325:5:56","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"},{"constant":false,"id":17960,"mutability":"mutable","name":"referralCode","nameLocation":"5350:12:56","nodeType":"VariableDeclaration","scope":17975,"src":"5343:19:56","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint16","typeString":"uint16"},"typeName":{"id":17959,"name":"uint16","nodeType":"ElementaryTypeName","src":"5343:6:56","typeDescriptions":{"typeIdentifier":"t_uint16","typeString":"uint16"}},"visibility":"internal"},{"constant":false,"id":17962,"mutability":"mutable","name":"flashLoanPremiumToProtocol","nameLocation":"5376:26:56","nodeType":"VariableDeclaration","scope":17975,"src":"5368:34:56","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":17961,"name":"uint256","nodeType":"ElementaryTypeName","src":"5368:7:56","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":17964,"mutability":"mutable","name":"flashLoanPremiumTotal","nameLocation":"5416:21:56","nodeType":"VariableDeclaration","scope":17975,"src":"5408:29:56","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":17963,"name":"uint256","nodeType":"ElementaryTypeName","src":"5408:7:56","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":17966,"mutability":"mutable","name":"maxStableRateBorrowSizePercent","nameLocation":"5451:30:56","nodeType":"VariableDeclaration","scope":17975,"src":"5443:38:56","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":17965,"name":"uint256","nodeType":"ElementaryTypeName","src":"5443:7:56","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":17968,"mutability":"mutable","name":"reservesCount","nameLocation":"5495:13:56","nodeType":"VariableDeclaration","scope":17975,"src":"5487:21:56","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":17967,"name":"uint256","nodeType":"ElementaryTypeName","src":"5487:7:56","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":17970,"mutability":"mutable","name":"addressesProvider","nameLocation":"5522:17:56","nodeType":"VariableDeclaration","scope":17975,"src":"5514:25:56","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":17969,"name":"address","nodeType":"ElementaryTypeName","src":"5514:7:56","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":17972,"mutability":"mutable","name":"userEModeCategory","nameLocation":"5551:17:56","nodeType":"VariableDeclaration","scope":17975,"src":"5545:23:56","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"},"typeName":{"id":17971,"name":"uint8","nodeType":"ElementaryTypeName","src":"5545:5:56","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}},"visibility":"internal"},{"constant":false,"id":17974,"mutability":"mutable","name":"isAuthorizedFlashBorrower","nameLocation":"5579:25:56","nodeType":"VariableDeclaration","scope":17975,"src":"5574:30:56","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":17973,"name":"bool","nodeType":"ElementaryTypeName","src":"5574:4:56","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"}],"name":"FlashloanParams","nameLocation":"5172:15:56","nodeType":"StructDefinition","scope":18092,"src":"5165:444:56","visibility":"public"},{"canonicalName":"DataTypes.FlashloanSimpleParams","id":17990,"members":[{"constant":false,"id":17977,"mutability":"mutable","name":"receiverAddress","nameLocation":"5656:15:56","nodeType":"VariableDeclaration","scope":17990,"src":"5648:23:56","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":17976,"name":"address","nodeType":"ElementaryTypeName","src":"5648:7:56","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":17979,"mutability":"mutable","name":"asset","nameLocation":"5685:5:56","nodeType":"VariableDeclaration","scope":17990,"src":"5677:13:56","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":17978,"name":"address","nodeType":"ElementaryTypeName","src":"5677:7:56","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":17981,"mutability":"mutable","name":"amount","nameLocation":"5704:6:56","nodeType":"VariableDeclaration","scope":17990,"src":"5696:14:56","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":17980,"name":"uint256","nodeType":"ElementaryTypeName","src":"5696:7:56","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":17983,"mutability":"mutable","name":"params","nameLocation":"5722:6:56","nodeType":"VariableDeclaration","scope":17990,"src":"5716:12:56","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"},"typeName":{"id":17982,"name":"bytes","nodeType":"ElementaryTypeName","src":"5716:5:56","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"},{"constant":false,"id":17985,"mutability":"mutable","name":"referralCode","nameLocation":"5741:12:56","nodeType":"VariableDeclaration","scope":17990,"src":"5734:19:56","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint16","typeString":"uint16"},"typeName":{"id":17984,"name":"uint16","nodeType":"ElementaryTypeName","src":"5734:6:56","typeDescriptions":{"typeIdentifier":"t_uint16","typeString":"uint16"}},"visibility":"internal"},{"constant":false,"id":17987,"mutability":"mutable","name":"flashLoanPremiumToProtocol","nameLocation":"5767:26:56","nodeType":"VariableDeclaration","scope":17990,"src":"5759:34:56","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":17986,"name":"uint256","nodeType":"ElementaryTypeName","src":"5759:7:56","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":17989,"mutability":"mutable","name":"flashLoanPremiumTotal","nameLocation":"5807:21:56","nodeType":"VariableDeclaration","scope":17990,"src":"5799:29:56","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":17988,"name":"uint256","nodeType":"ElementaryTypeName","src":"5799:7:56","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"name":"FlashloanSimpleParams","nameLocation":"5620:21:56","nodeType":"StructDefinition","scope":18092,"src":"5613:220:56","visibility":"public"},{"canonicalName":"DataTypes.FlashLoanRepaymentParams","id":18003,"members":[{"constant":false,"id":17992,"mutability":"mutable","name":"amount","nameLocation":"5883:6:56","nodeType":"VariableDeclaration","scope":18003,"src":"5875:14:56","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":17991,"name":"uint256","nodeType":"ElementaryTypeName","src":"5875:7:56","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":17994,"mutability":"mutable","name":"totalPremium","nameLocation":"5903:12:56","nodeType":"VariableDeclaration","scope":18003,"src":"5895:20:56","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":17993,"name":"uint256","nodeType":"ElementaryTypeName","src":"5895:7:56","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":17996,"mutability":"mutable","name":"flashLoanPremiumToProtocol","nameLocation":"5929:26:56","nodeType":"VariableDeclaration","scope":18003,"src":"5921:34:56","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":17995,"name":"uint256","nodeType":"ElementaryTypeName","src":"5921:7:56","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":17998,"mutability":"mutable","name":"asset","nameLocation":"5969:5:56","nodeType":"VariableDeclaration","scope":18003,"src":"5961:13:56","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":17997,"name":"address","nodeType":"ElementaryTypeName","src":"5961:7:56","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":18000,"mutability":"mutable","name":"receiverAddress","nameLocation":"5988:15:56","nodeType":"VariableDeclaration","scope":18003,"src":"5980:23:56","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":17999,"name":"address","nodeType":"ElementaryTypeName","src":"5980:7:56","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":18002,"mutability":"mutable","name":"referralCode","nameLocation":"6016:12:56","nodeType":"VariableDeclaration","scope":18003,"src":"6009:19:56","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint16","typeString":"uint16"},"typeName":{"id":18001,"name":"uint16","nodeType":"ElementaryTypeName","src":"6009:6:56","typeDescriptions":{"typeIdentifier":"t_uint16","typeString":"uint16"}},"visibility":"internal"}],"name":"FlashLoanRepaymentParams","nameLocation":"5844:24:56","nodeType":"StructDefinition","scope":18092,"src":"5837:196:56","visibility":"public"},{"canonicalName":"DataTypes.CalculateUserAccountDataParams","id":18015,"members":[{"constant":false,"id":18006,"mutability":"mutable","name":"userConfig","nameLocation":"6102:10:56","nodeType":"VariableDeclaration","scope":18015,"src":"6081:31:56","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_struct$_UserConfigurationMap_$17781_storage_ptr","typeString":"struct DataTypes.UserConfigurationMap"},"typeName":{"id":18005,"nodeType":"UserDefinedTypeName","pathNode":{"id":18004,"name":"UserConfigurationMap","nameLocations":["6081:20:56"],"nodeType":"IdentifierPath","referencedDeclaration":17781,"src":"6081:20:56"},"referencedDeclaration":17781,"src":"6081:20:56","typeDescriptions":{"typeIdentifier":"t_struct$_UserConfigurationMap_$17781_storage_ptr","typeString":"struct DataTypes.UserConfigurationMap"}},"visibility":"internal"},{"constant":false,"id":18008,"mutability":"mutable","name":"reservesCount","nameLocation":"6126:13:56","nodeType":"VariableDeclaration","scope":18015,"src":"6118:21:56","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":18007,"name":"uint256","nodeType":"ElementaryTypeName","src":"6118:7:56","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":18010,"mutability":"mutable","name":"user","nameLocation":"6153:4:56","nodeType":"VariableDeclaration","scope":18015,"src":"6145:12:56","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":18009,"name":"address","nodeType":"ElementaryTypeName","src":"6145:7:56","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":18012,"mutability":"mutable","name":"oracle","nameLocation":"6171:6:56","nodeType":"VariableDeclaration","scope":18015,"src":"6163:14:56","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":18011,"name":"address","nodeType":"ElementaryTypeName","src":"6163:7:56","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":18014,"mutability":"mutable","name":"userEModeCategory","nameLocation":"6189:17:56","nodeType":"VariableDeclaration","scope":18015,"src":"6183:23:56","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"},"typeName":{"id":18013,"name":"uint8","nodeType":"ElementaryTypeName","src":"6183:5:56","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}},"visibility":"internal"}],"name":"CalculateUserAccountDataParams","nameLocation":"6044:30:56","nodeType":"StructDefinition","scope":18092,"src":"6037:174:56","visibility":"public"},{"canonicalName":"DataTypes.ValidateBorrowParams","id":18047,"members":[{"constant":false,"id":18018,"mutability":"mutable","name":"reserveCache","nameLocation":"6262:12:56","nodeType":"VariableDeclaration","scope":18047,"src":"6249:25:56","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_struct$_ReserveCache_$17838_storage_ptr","typeString":"struct DataTypes.ReserveCache"},"typeName":{"id":18017,"nodeType":"UserDefinedTypeName","pathNode":{"id":18016,"name":"ReserveCache","nameLocations":["6249:12:56"],"nodeType":"IdentifierPath","referencedDeclaration":17838,"src":"6249:12:56"},"referencedDeclaration":17838,"src":"6249:12:56","typeDescriptions":{"typeIdentifier":"t_struct$_ReserveCache_$17838_storage_ptr","typeString":"struct DataTypes.ReserveCache"}},"visibility":"internal"},{"constant":false,"id":18021,"mutability":"mutable","name":"userConfig","nameLocation":"6301:10:56","nodeType":"VariableDeclaration","scope":18047,"src":"6280:31:56","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_struct$_UserConfigurationMap_$17781_storage_ptr","typeString":"struct DataTypes.UserConfigurationMap"},"typeName":{"id":18020,"nodeType":"UserDefinedTypeName","pathNode":{"id":18019,"name":"UserConfigurationMap","nameLocations":["6280:20:56"],"nodeType":"IdentifierPath","referencedDeclaration":17781,"src":"6280:20:56"},"referencedDeclaration":17781,"src":"6280:20:56","typeDescriptions":{"typeIdentifier":"t_struct$_UserConfigurationMap_$17781_storage_ptr","typeString":"struct DataTypes.UserConfigurationMap"}},"visibility":"internal"},{"constant":false,"id":18023,"mutability":"mutable","name":"asset","nameLocation":"6325:5:56","nodeType":"VariableDeclaration","scope":18047,"src":"6317:13:56","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":18022,"name":"address","nodeType":"ElementaryTypeName","src":"6317:7:56","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":18025,"mutability":"mutable","name":"userAddress","nameLocation":"6344:11:56","nodeType":"VariableDeclaration","scope":18047,"src":"6336:19:56","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":18024,"name":"address","nodeType":"ElementaryTypeName","src":"6336:7:56","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":18027,"mutability":"mutable","name":"amount","nameLocation":"6369:6:56","nodeType":"VariableDeclaration","scope":18047,"src":"6361:14:56","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":18026,"name":"uint256","nodeType":"ElementaryTypeName","src":"6361:7:56","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":18030,"mutability":"mutable","name":"interestRateMode","nameLocation":"6398:16:56","nodeType":"VariableDeclaration","scope":18047,"src":"6381:33:56","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_enum$_InterestRateMode_$17796","typeString":"enum DataTypes.InterestRateMode"},"typeName":{"id":18029,"nodeType":"UserDefinedTypeName","pathNode":{"id":18028,"name":"InterestRateMode","nameLocations":["6381:16:56"],"nodeType":"IdentifierPath","referencedDeclaration":17796,"src":"6381:16:56"},"referencedDeclaration":17796,"src":"6381:16:56","typeDescriptions":{"typeIdentifier":"t_enum$_InterestRateMode_$17796","typeString":"enum DataTypes.InterestRateMode"}},"visibility":"internal"},{"constant":false,"id":18032,"mutability":"mutable","name":"maxStableLoanPercent","nameLocation":"6428:20:56","nodeType":"VariableDeclaration","scope":18047,"src":"6420:28:56","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":18031,"name":"uint256","nodeType":"ElementaryTypeName","src":"6420:7:56","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":18034,"mutability":"mutable","name":"reservesCount","nameLocation":"6462:13:56","nodeType":"VariableDeclaration","scope":18047,"src":"6454:21:56","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":18033,"name":"uint256","nodeType":"ElementaryTypeName","src":"6454:7:56","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":18036,"mutability":"mutable","name":"oracle","nameLocation":"6489:6:56","nodeType":"VariableDeclaration","scope":18047,"src":"6481:14:56","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":18035,"name":"address","nodeType":"ElementaryTypeName","src":"6481:7:56","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":18038,"mutability":"mutable","name":"userEModeCategory","nameLocation":"6507:17:56","nodeType":"VariableDeclaration","scope":18047,"src":"6501:23:56","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"},"typeName":{"id":18037,"name":"uint8","nodeType":"ElementaryTypeName","src":"6501:5:56","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}},"visibility":"internal"},{"constant":false,"id":18040,"mutability":"mutable","name":"priceOracleSentinel","nameLocation":"6538:19:56","nodeType":"VariableDeclaration","scope":18047,"src":"6530:27:56","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":18039,"name":"address","nodeType":"ElementaryTypeName","src":"6530:7:56","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":18042,"mutability":"mutable","name":"isolationModeActive","nameLocation":"6568:19:56","nodeType":"VariableDeclaration","scope":18047,"src":"6563:24:56","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":18041,"name":"bool","nodeType":"ElementaryTypeName","src":"6563:4:56","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"},{"constant":false,"id":18044,"mutability":"mutable","name":"isolationModeCollateralAddress","nameLocation":"6601:30:56","nodeType":"VariableDeclaration","scope":18047,"src":"6593:38:56","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":18043,"name":"address","nodeType":"ElementaryTypeName","src":"6593:7:56","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":18046,"mutability":"mutable","name":"isolationModeDebtCeiling","nameLocation":"6645:24:56","nodeType":"VariableDeclaration","scope":18047,"src":"6637:32:56","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":18045,"name":"uint256","nodeType":"ElementaryTypeName","src":"6637:7:56","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"name":"ValidateBorrowParams","nameLocation":"6222:20:56","nodeType":"StructDefinition","scope":18092,"src":"6215:459:56","visibility":"public"},{"canonicalName":"DataTypes.ValidateLiquidationCallParams","id":18057,"members":[{"constant":false,"id":18050,"mutability":"mutable","name":"debtReserveCache","nameLocation":"6734:16:56","nodeType":"VariableDeclaration","scope":18057,"src":"6721:29:56","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_struct$_ReserveCache_$17838_storage_ptr","typeString":"struct DataTypes.ReserveCache"},"typeName":{"id":18049,"nodeType":"UserDefinedTypeName","pathNode":{"id":18048,"name":"ReserveCache","nameLocations":["6721:12:56"],"nodeType":"IdentifierPath","referencedDeclaration":17838,"src":"6721:12:56"},"referencedDeclaration":17838,"src":"6721:12:56","typeDescriptions":{"typeIdentifier":"t_struct$_ReserveCache_$17838_storage_ptr","typeString":"struct DataTypes.ReserveCache"}},"visibility":"internal"},{"constant":false,"id":18052,"mutability":"mutable","name":"totalDebt","nameLocation":"6764:9:56","nodeType":"VariableDeclaration","scope":18057,"src":"6756:17:56","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":18051,"name":"uint256","nodeType":"ElementaryTypeName","src":"6756:7:56","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":18054,"mutability":"mutable","name":"healthFactor","nameLocation":"6787:12:56","nodeType":"VariableDeclaration","scope":18057,"src":"6779:20:56","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":18053,"name":"uint256","nodeType":"ElementaryTypeName","src":"6779:7:56","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":18056,"mutability":"mutable","name":"priceOracleSentinel","nameLocation":"6813:19:56","nodeType":"VariableDeclaration","scope":18057,"src":"6805:27:56","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":18055,"name":"address","nodeType":"ElementaryTypeName","src":"6805:7:56","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"name":"ValidateLiquidationCallParams","nameLocation":"6685:29:56","nodeType":"StructDefinition","scope":18092,"src":"6678:159:56","visibility":"public"},{"canonicalName":"DataTypes.CalculateInterestRatesParams","id":18076,"members":[{"constant":false,"id":18059,"mutability":"mutable","name":"unbacked","nameLocation":"6891:8:56","nodeType":"VariableDeclaration","scope":18076,"src":"6883:16:56","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":18058,"name":"uint256","nodeType":"ElementaryTypeName","src":"6883:7:56","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":18061,"mutability":"mutable","name":"liquidityAdded","nameLocation":"6913:14:56","nodeType":"VariableDeclaration","scope":18076,"src":"6905:22:56","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":18060,"name":"uint256","nodeType":"ElementaryTypeName","src":"6905:7:56","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":18063,"mutability":"mutable","name":"liquidityTaken","nameLocation":"6941:14:56","nodeType":"VariableDeclaration","scope":18076,"src":"6933:22:56","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":18062,"name":"uint256","nodeType":"ElementaryTypeName","src":"6933:7:56","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":18065,"mutability":"mutable","name":"totalStableDebt","nameLocation":"6969:15:56","nodeType":"VariableDeclaration","scope":18076,"src":"6961:23:56","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":18064,"name":"uint256","nodeType":"ElementaryTypeName","src":"6961:7:56","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":18067,"mutability":"mutable","name":"totalVariableDebt","nameLocation":"6998:17:56","nodeType":"VariableDeclaration","scope":18076,"src":"6990:25:56","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":18066,"name":"uint256","nodeType":"ElementaryTypeName","src":"6990:7:56","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":18069,"mutability":"mutable","name":"averageStableBorrowRate","nameLocation":"7029:23:56","nodeType":"VariableDeclaration","scope":18076,"src":"7021:31:56","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":18068,"name":"uint256","nodeType":"ElementaryTypeName","src":"7021:7:56","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":18071,"mutability":"mutable","name":"reserveFactor","nameLocation":"7066:13:56","nodeType":"VariableDeclaration","scope":18076,"src":"7058:21:56","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":18070,"name":"uint256","nodeType":"ElementaryTypeName","src":"7058:7:56","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":18073,"mutability":"mutable","name":"reserve","nameLocation":"7093:7:56","nodeType":"VariableDeclaration","scope":18076,"src":"7085:15:56","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":18072,"name":"address","nodeType":"ElementaryTypeName","src":"7085:7:56","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":18075,"mutability":"mutable","name":"aToken","nameLocation":"7114:6:56","nodeType":"VariableDeclaration","scope":18076,"src":"7106:14:56","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":18074,"name":"address","nodeType":"ElementaryTypeName","src":"7106:7:56","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"name":"CalculateInterestRatesParams","nameLocation":"6848:28:56","nodeType":"StructDefinition","scope":18092,"src":"6841:284:56","visibility":"public"},{"canonicalName":"DataTypes.InitReserveParams","id":18091,"members":[{"constant":false,"id":18078,"mutability":"mutable","name":"asset","nameLocation":"7168:5:56","nodeType":"VariableDeclaration","scope":18091,"src":"7160:13:56","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":18077,"name":"address","nodeType":"ElementaryTypeName","src":"7160:7:56","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":18080,"mutability":"mutable","name":"aTokenAddress","nameLocation":"7187:13:56","nodeType":"VariableDeclaration","scope":18091,"src":"7179:21:56","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":18079,"name":"address","nodeType":"ElementaryTypeName","src":"7179:7:56","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":18082,"mutability":"mutable","name":"stableDebtAddress","nameLocation":"7214:17:56","nodeType":"VariableDeclaration","scope":18091,"src":"7206:25:56","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":18081,"name":"address","nodeType":"ElementaryTypeName","src":"7206:7:56","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":18084,"mutability":"mutable","name":"variableDebtAddress","nameLocation":"7245:19:56","nodeType":"VariableDeclaration","scope":18091,"src":"7237:27:56","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":18083,"name":"address","nodeType":"ElementaryTypeName","src":"7237:7:56","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":18086,"mutability":"mutable","name":"interestRateStrategyAddress","nameLocation":"7278:27:56","nodeType":"VariableDeclaration","scope":18091,"src":"7270:35:56","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":18085,"name":"address","nodeType":"ElementaryTypeName","src":"7270:7:56","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":18088,"mutability":"mutable","name":"reservesCount","nameLocation":"7318:13:56","nodeType":"VariableDeclaration","scope":18091,"src":"7311:20:56","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint16","typeString":"uint16"},"typeName":{"id":18087,"name":"uint16","nodeType":"ElementaryTypeName","src":"7311:6:56","typeDescriptions":{"typeIdentifier":"t_uint16","typeString":"uint16"}},"visibility":"internal"},{"constant":false,"id":18090,"mutability":"mutable","name":"maxNumberReserves","nameLocation":"7344:17:56","nodeType":"VariableDeclaration","scope":18091,"src":"7337:24:56","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint16","typeString":"uint16"},"typeName":{"id":18089,"name":"uint16","nodeType":"ElementaryTypeName","src":"7337:6:56","typeDescriptions":{"typeIdentifier":"t_uint16","typeString":"uint16"}},"visibility":"internal"}],"name":"InitReserveParams","nameLocation":"7136:17:56","nodeType":"StructDefinition","scope":18092,"src":"7129:237:56","visibility":"public"}],"scope":18093,"src":"62:7306:56","usedErrors":[],"usedEvents":[]}],"src":"37:7332:56"},"id":56},"contracts/dependencies/aave-v3/Errors.sol":{"ast":{"absolutePath":"contracts/dependencies/aave-v3/Errors.sol","exportedSymbols":{"Errors":[18366]},"id":18367,"license":"BUSL-1.1","nodeType":"SourceUnit","nodes":[{"id":18094,"literals":["solidity","^","0.8",".0"],"nodeType":"PragmaDirective","src":"37:23:57"},{"abstract":false,"baseContracts":[],"canonicalName":"Errors","contractDependencies":[],"contractKind":"library","documentation":{"id":18095,"nodeType":"StructuredDocumentation","src":"62:142:57","text":" @title Errors library\n @author Aave\n @notice Defines the error messages emitted by the different contracts of the Aave protocol"},"fullyImplemented":true,"id":18366,"linearizedBaseContracts":[18366],"name":"Errors","nameLocation":"213:6:57","nodeType":"ContractDefinition","nodes":[{"constant":true,"functionSelector":"ac753236","id":18098,"mutability":"constant","name":"CALLER_NOT_POOL_ADMIN","nameLocation":"247:21:57","nodeType":"VariableDeclaration","scope":18366,"src":"224:50:57","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string"},"typeName":{"id":18096,"name":"string","nodeType":"ElementaryTypeName","src":"224:6:57","typeDescriptions":{"typeIdentifier":"t_string_storage_ptr","typeString":"string"}},"value":{"hexValue":"31","id":18097,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"271:3:57","typeDescriptions":{"typeIdentifier":"t_stringliteral_c89efdaa54c0f20c7adf612882df0950f5a951637e0307cdcb4c672f298b8bc6","typeString":"literal_string \"1\""},"value":"1"},"visibility":"public"},{"constant":true,"functionSelector":"485c8ff6","id":18101,"mutability":"constant","name":"CALLER_NOT_EMERGENCY_ADMIN","nameLocation":"353:26:57","nodeType":"VariableDeclaration","scope":18366,"src":"330:55:57","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string"},"typeName":{"id":18099,"name":"string","nodeType":"ElementaryTypeName","src":"330:6:57","typeDescriptions":{"typeIdentifier":"t_string_storage_ptr","typeString":"string"}},"value":{"hexValue":"32","id":18100,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"382:3:57","typeDescriptions":{"typeIdentifier":"t_stringliteral_ad7c5bef027816a800da1736444fb58a807ef4c9603b7848673f7e3a68eb14a5","typeString":"literal_string \"2\""},"value":"2"},"visibility":"public"},{"constant":true,"functionSelector":"26e7b312","id":18104,"mutability":"constant","name":"CALLER_NOT_POOL_OR_EMERGENCY_ADMIN","nameLocation":"470:34:57","nodeType":"VariableDeclaration","scope":18366,"src":"447:63:57","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string"},"typeName":{"id":18102,"name":"string","nodeType":"ElementaryTypeName","src":"447:6:57","typeDescriptions":{"typeIdentifier":"t_string_storage_ptr","typeString":"string"}},"value":{"hexValue":"33","id":18103,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"507:3:57","typeDescriptions":{"typeIdentifier":"t_stringliteral_2a80e1ef1d7842f27f2e6be0972bb708b9a135c38860dbe73c27c3486c34f4de","typeString":"literal_string \"3\""},"value":"3"},"visibility":"public"},{"constant":true,"functionSelector":"b5e79366","id":18107,"mutability":"constant","name":"CALLER_NOT_RISK_OR_POOL_ADMIN","nameLocation":"602:29:57","nodeType":"VariableDeclaration","scope":18366,"src":"579:58:57","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string"},"typeName":{"id":18105,"name":"string","nodeType":"ElementaryTypeName","src":"579:6:57","typeDescriptions":{"typeIdentifier":"t_string_storage_ptr","typeString":"string"}},"value":{"hexValue":"34","id":18106,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"634:3:57","typeDescriptions":{"typeIdentifier":"t_stringliteral_13600b294191fc92924bb3ce4b969c1e7e2bab8f4c93c3fc6d0a51733df3c060","typeString":"literal_string \"4\""},"value":"4"},"visibility":"public"},{"constant":true,"functionSelector":"2c8e3b4c","id":18110,"mutability":"constant","name":"CALLER_NOT_ASSET_LISTING_OR_POOL_ADMIN","nameLocation":"724:38:57","nodeType":"VariableDeclaration","scope":18366,"src":"701:67:57","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string"},"typeName":{"id":18108,"name":"string","nodeType":"ElementaryTypeName","src":"701:6:57","typeDescriptions":{"typeIdentifier":"t_string_storage_ptr","typeString":"string"}},"value":{"hexValue":"35","id":18109,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"765:3:57","typeDescriptions":{"typeIdentifier":"t_stringliteral_ceebf77a833b30520287ddd9478ff51abbdffa30aa90a8d655dba0e8a79ce0c1","typeString":"literal_string \"5\""},"value":"5"},"visibility":"public"},{"constant":true,"functionSelector":"4f77647b","id":18113,"mutability":"constant","name":"CALLER_NOT_BRIDGE","nameLocation":"865:17:57","nodeType":"VariableDeclaration","scope":18366,"src":"842:46:57","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string"},"typeName":{"id":18111,"name":"string","nodeType":"ElementaryTypeName","src":"842:6:57","typeDescriptions":{"typeIdentifier":"t_string_storage_ptr","typeString":"string"}},"value":{"hexValue":"36","id":18112,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"885:3:57","typeDescriptions":{"typeIdentifier":"t_stringliteral_e455bf8ea6e7463a1046a0b52804526e119b4bf5136279614e0b1e8e296a4e2d","typeString":"literal_string \"6\""},"value":"6"},"visibility":"public"},{"constant":true,"functionSelector":"e02f07ee","id":18116,"mutability":"constant","name":"ADDRESSES_PROVIDER_NOT_REGISTERED","nameLocation":"963:33:57","nodeType":"VariableDeclaration","scope":18366,"src":"940:62:57","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string"},"typeName":{"id":18114,"name":"string","nodeType":"ElementaryTypeName","src":"940:6:57","typeDescriptions":{"typeIdentifier":"t_string_storage_ptr","typeString":"string"}},"value":{"hexValue":"37","id":18115,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"999:3:57","typeDescriptions":{"typeIdentifier":"t_stringliteral_52f1a9b320cab38e5da8a8f97989383aab0a49165fc91c737310e4f7e9821021","typeString":"literal_string \"7\""},"value":"7"},"visibility":"public"},{"constant":true,"functionSelector":"60c3de80","id":18119,"mutability":"constant","name":"INVALID_ADDRESSES_PROVIDER_ID","nameLocation":"1076:29:57","nodeType":"VariableDeclaration","scope":18366,"src":"1053:58:57","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string"},"typeName":{"id":18117,"name":"string","nodeType":"ElementaryTypeName","src":"1053:6:57","typeDescriptions":{"typeIdentifier":"t_string_storage_ptr","typeString":"string"}},"value":{"hexValue":"38","id":18118,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"1108:3:57","typeDescriptions":{"typeIdentifier":"t_stringliteral_e4b1702d9298fee62dfeccc57d322a463ad55ca201256d01f62b45b2e1c21c10","typeString":"literal_string \"8\""},"value":"8"},"visibility":"public"},{"constant":true,"functionSelector":"11d7b006","id":18122,"mutability":"constant","name":"NOT_CONTRACT","nameLocation":"1186:12:57","nodeType":"VariableDeclaration","scope":18366,"src":"1163:41:57","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string"},"typeName":{"id":18120,"name":"string","nodeType":"ElementaryTypeName","src":"1163:6:57","typeDescriptions":{"typeIdentifier":"t_string_storage_ptr","typeString":"string"}},"value":{"hexValue":"39","id":18121,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"1201:3:57","typeDescriptions":{"typeIdentifier":"t_stringliteral_d2f8f61201b2b11a78d6e866abc9c3db2ae8631fa656bfe5cb53668255367afb","typeString":"literal_string \"9\""},"value":"9"},"visibility":"public"},{"constant":true,"functionSelector":"61c111d2","id":18125,"mutability":"constant","name":"CALLER_NOT_POOL_CONFIGURATOR","nameLocation":"1262:28:57","nodeType":"VariableDeclaration","scope":18366,"src":"1239:58:57","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string"},"typeName":{"id":18123,"name":"string","nodeType":"ElementaryTypeName","src":"1239:6:57","typeDescriptions":{"typeIdentifier":"t_string_storage_ptr","typeString":"string"}},"value":{"hexValue":"3130","id":18124,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"1293:4:57","typeDescriptions":{"typeIdentifier":"t_stringliteral_1a192fabce13988b84994d4296e6cdc418d55e2f1d7f942188d4040b94fc57ac","typeString":"literal_string \"10\""},"value":"10"},"visibility":"public"},{"constant":true,"functionSelector":"a2e976c6","id":18128,"mutability":"constant","name":"CALLER_NOT_ATOKEN","nameLocation":"1385:17:57","nodeType":"VariableDeclaration","scope":18366,"src":"1362:47:57","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string"},"typeName":{"id":18126,"name":"string","nodeType":"ElementaryTypeName","src":"1362:6:57","typeDescriptions":{"typeIdentifier":"t_string_storage_ptr","typeString":"string"}},"value":{"hexValue":"3131","id":18127,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"1405:4:57","typeDescriptions":{"typeIdentifier":"t_stringliteral_7880aec93413f117ef14bd4e6d130875ab2c7d7d55a064fac3c2f7bd51516380","typeString":"literal_string \"11\""},"value":"11"},"visibility":"public"},{"constant":true,"functionSelector":"37930782","id":18131,"mutability":"constant","name":"INVALID_ADDRESSES_PROVIDER","nameLocation":"1485:26:57","nodeType":"VariableDeclaration","scope":18366,"src":"1462:56:57","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string"},"typeName":{"id":18129,"name":"string","nodeType":"ElementaryTypeName","src":"1462:6:57","typeDescriptions":{"typeIdentifier":"t_string_storage_ptr","typeString":"string"}},"value":{"hexValue":"3132","id":18130,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"1514:4:57","typeDescriptions":{"typeIdentifier":"t_stringliteral_7f8b6b088b6d74c2852fc86c796dca07b44eed6fb3daf5e6b59f7c364db14528","typeString":"literal_string \"12\""},"value":"12"},"visibility":"public"},{"constant":true,"functionSelector":"7fea6f36","id":18134,"mutability":"constant","name":"INVALID_FLASHLOAN_EXECUTOR_RETURN","nameLocation":"1604:33:57","nodeType":"VariableDeclaration","scope":18366,"src":"1581:63:57","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string"},"typeName":{"id":18132,"name":"string","nodeType":"ElementaryTypeName","src":"1581:6:57","typeDescriptions":{"typeIdentifier":"t_string_storage_ptr","typeString":"string"}},"value":{"hexValue":"3133","id":18133,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"1640:4:57","typeDescriptions":{"typeIdentifier":"t_stringliteral_789bcdf275fa270780a52ae3b79bb1ce0fda7e0aaad87b57b74bb99ac290714a","typeString":"literal_string \"13\""},"value":"13"},"visibility":"public"},{"constant":true,"functionSelector":"12dcade8","id":18137,"mutability":"constant","name":"RESERVE_ALREADY_ADDED","nameLocation":"1732:21:57","nodeType":"VariableDeclaration","scope":18366,"src":"1709:51:57","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string"},"typeName":{"id":18135,"name":"string","nodeType":"ElementaryTypeName","src":"1709:6:57","typeDescriptions":{"typeIdentifier":"t_string_storage_ptr","typeString":"string"}},"value":{"hexValue":"3134","id":18136,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"1756:4:57","typeDescriptions":{"typeIdentifier":"t_stringliteral_5c4c6aa067b6f8e6cb38e6ab843832a94d1712d661a04d73c517d6a1931a9e5d","typeString":"literal_string \"14\""},"value":"14"},"visibility":"public"},{"constant":true,"functionSelector":"76ae8fca","id":18140,"mutability":"constant","name":"NO_MORE_RESERVES_ALLOWED","nameLocation":"1839:24:57","nodeType":"VariableDeclaration","scope":18366,"src":"1816:54:57","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string"},"typeName":{"id":18138,"name":"string","nodeType":"ElementaryTypeName","src":"1816:6:57","typeDescriptions":{"typeIdentifier":"t_string_storage_ptr","typeString":"string"}},"value":{"hexValue":"3135","id":18139,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"1866:4:57","typeDescriptions":{"typeIdentifier":"t_stringliteral_1d3be50b2bb17407dd170f1d5da128d1def30c6b1598d6a629e79b4775265526","typeString":"literal_string \"15\""},"value":"15"},"visibility":"public"},{"constant":true,"functionSelector":"f479ea11","id":18143,"mutability":"constant","name":"EMODE_CATEGORY_RESERVED","nameLocation":"1949:23:57","nodeType":"VariableDeclaration","scope":18366,"src":"1926:53:57","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string"},"typeName":{"id":18141,"name":"string","nodeType":"ElementaryTypeName","src":"1926:6:57","typeDescriptions":{"typeIdentifier":"t_string_storage_ptr","typeString":"string"}},"value":{"hexValue":"3136","id":18142,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"1975:4:57","typeDescriptions":{"typeIdentifier":"t_stringliteral_277ab82e5a4641341820a4a2933a62c1de997e42e92548657ae21b3728d580fe","typeString":"literal_string \"16\""},"value":"16"},"visibility":"public"},{"constant":true,"functionSelector":"5d9c76c0","id":18146,"mutability":"constant","name":"INVALID_EMODE_CATEGORY_ASSIGNMENT","nameLocation":"2077:33:57","nodeType":"VariableDeclaration","scope":18366,"src":"2054:63:57","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string"},"typeName":{"id":18144,"name":"string","nodeType":"ElementaryTypeName","src":"2054:6:57","typeDescriptions":{"typeIdentifier":"t_string_storage_ptr","typeString":"string"}},"value":{"hexValue":"3137","id":18145,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"2113:4:57","typeDescriptions":{"typeIdentifier":"t_stringliteral_8e8fab5f003314da8d1873ea7720e8d9f47650136d916064d1edb8a11d682624","typeString":"literal_string \"17\""},"value":"17"},"visibility":"public"},{"constant":true,"functionSelector":"084dfa0d","id":18149,"mutability":"constant","name":"RESERVE_LIQUIDITY_NOT_ZERO","nameLocation":"2192:26:57","nodeType":"VariableDeclaration","scope":18366,"src":"2169:56:57","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string"},"typeName":{"id":18147,"name":"string","nodeType":"ElementaryTypeName","src":"2169:6:57","typeDescriptions":{"typeIdentifier":"t_string_storage_ptr","typeString":"string"}},"value":{"hexValue":"3138","id":18148,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"2221:4:57","typeDescriptions":{"typeIdentifier":"t_stringliteral_8fef2229291b68be841adf029e58b87f39ba144b2d3b0af1760243d0a9bc6a1c","typeString":"literal_string \"18\""},"value":"18"},"visibility":"public"},{"constant":true,"functionSelector":"747fa556","id":18152,"mutability":"constant","name":"FLASHLOAN_PREMIUM_INVALID","nameLocation":"2300:25:57","nodeType":"VariableDeclaration","scope":18366,"src":"2277:55:57","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string"},"typeName":{"id":18150,"name":"string","nodeType":"ElementaryTypeName","src":"2277:6:57","typeDescriptions":{"typeIdentifier":"t_string_storage_ptr","typeString":"string"}},"value":{"hexValue":"3139","id":18151,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"2328:4:57","typeDescriptions":{"typeIdentifier":"t_stringliteral_939eb54753ed0cc7e2272bfb34cbe098308c93936ed54d79078f76ade0b2e789","typeString":"literal_string \"19\""},"value":"19"},"visibility":"public"},{"constant":true,"functionSelector":"335763de","id":18155,"mutability":"constant","name":"INVALID_RESERVE_PARAMS","nameLocation":"2390:22:57","nodeType":"VariableDeclaration","scope":18366,"src":"2367:52:57","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string"},"typeName":{"id":18153,"name":"string","nodeType":"ElementaryTypeName","src":"2367:6:57","typeDescriptions":{"typeIdentifier":"t_string_storage_ptr","typeString":"string"}},"value":{"hexValue":"3230","id":18154,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"2415:4:57","typeDescriptions":{"typeIdentifier":"t_stringliteral_731dc163f73d31d8c68f9917ce4ff967753939f70432973c04fd2c2a48148607","typeString":"literal_string \"20\""},"value":"20"},"visibility":"public"},{"constant":true,"functionSelector":"47cf1523","id":18158,"mutability":"constant","name":"INVALID_EMODE_CATEGORY_PARAMS","nameLocation":"2491:29:57","nodeType":"VariableDeclaration","scope":18366,"src":"2468:59:57","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string"},"typeName":{"id":18156,"name":"string","nodeType":"ElementaryTypeName","src":"2468:6:57","typeDescriptions":{"typeIdentifier":"t_string_storage_ptr","typeString":"string"}},"value":{"hexValue":"3231","id":18157,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"2523:4:57","typeDescriptions":{"typeIdentifier":"t_stringliteral_f4c2b5de886427473655d4c904c743576dc2d53249b7535d96c06cc97ae7216b","typeString":"literal_string \"21\""},"value":"21"},"visibility":"public"},{"constant":true,"functionSelector":"7aa0767e","id":18161,"mutability":"constant","name":"BRIDGE_PROTOCOL_FEE_INVALID","nameLocation":"2606:27:57","nodeType":"VariableDeclaration","scope":18366,"src":"2583:57:57","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string"},"typeName":{"id":18159,"name":"string","nodeType":"ElementaryTypeName","src":"2583:6:57","typeDescriptions":{"typeIdentifier":"t_string_storage_ptr","typeString":"string"}},"value":{"hexValue":"3232","id":18160,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"2636:4:57","typeDescriptions":{"typeIdentifier":"t_stringliteral_d4d1a59767271eefdc7830a772b9732a11d503531d972ab8c981a6b1c0e666e5","typeString":"literal_string \"22\""},"value":"22"},"visibility":"public"},{"constant":true,"functionSelector":"471df685","id":18164,"mutability":"constant","name":"CALLER_MUST_BE_POOL","nameLocation":"2700:19:57","nodeType":"VariableDeclaration","scope":18366,"src":"2677:49:57","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string"},"typeName":{"id":18162,"name":"string","nodeType":"ElementaryTypeName","src":"2677:6:57","typeDescriptions":{"typeIdentifier":"t_string_storage_ptr","typeString":"string"}},"value":{"hexValue":"3233","id":18163,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"2722:4:57","typeDescriptions":{"typeIdentifier":"t_stringliteral_1572b593c53d839d80004aa4b8c51211864104f06ace9e22be9c4365b50655ea","typeString":"literal_string \"23\""},"value":"23"},"visibility":"public"},{"constant":true,"functionSelector":"abd351b1","id":18167,"mutability":"constant","name":"INVALID_MINT_AMOUNT","nameLocation":"2801:19:57","nodeType":"VariableDeclaration","scope":18366,"src":"2778:49:57","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string"},"typeName":{"id":18165,"name":"string","nodeType":"ElementaryTypeName","src":"2778:6:57","typeDescriptions":{"typeIdentifier":"t_string_storage_ptr","typeString":"string"}},"value":{"hexValue":"3234","id":18166,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"2823:4:57","typeDescriptions":{"typeIdentifier":"t_stringliteral_6585423cb6456b1d4957f6454d2f004f0c4f58d53a00082412d5c2ef4b1b31fd","typeString":"literal_string \"24\""},"value":"24"},"visibility":"public"},{"constant":true,"functionSelector":"51267450","id":18170,"mutability":"constant","name":"INVALID_BURN_AMOUNT","nameLocation":"2882:19:57","nodeType":"VariableDeclaration","scope":18366,"src":"2859:49:57","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string"},"typeName":{"id":18168,"name":"string","nodeType":"ElementaryTypeName","src":"2859:6:57","typeDescriptions":{"typeIdentifier":"t_string_storage_ptr","typeString":"string"}},"value":{"hexValue":"3235","id":18169,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"2904:4:57","typeDescriptions":{"typeIdentifier":"t_stringliteral_81e080ffc23e8b8d44dd829bc823229e92b893eb1d8f624419d3f5682eb97fc3","typeString":"literal_string \"25\""},"value":"25"},"visibility":"public"},{"constant":true,"functionSelector":"fae82791","id":18173,"mutability":"constant","name":"INVALID_AMOUNT","nameLocation":"2963:14:57","nodeType":"VariableDeclaration","scope":18366,"src":"2940:44:57","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string"},"typeName":{"id":18171,"name":"string","nodeType":"ElementaryTypeName","src":"2940:6:57","typeDescriptions":{"typeIdentifier":"t_string_storage_ptr","typeString":"string"}},"value":{"hexValue":"3236","id":18172,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"2980:4:57","typeDescriptions":{"typeIdentifier":"t_stringliteral_9cce9eb03c9f29c6481fca9f0f942b15bef0bbbc47fda0ddb44df157019835d9","typeString":"literal_string \"26\""},"value":"26"},"visibility":"public"},{"constant":true,"functionSelector":"52ba9dbe","id":18176,"mutability":"constant","name":"RESERVE_INACTIVE","nameLocation":"3046:16:57","nodeType":"VariableDeclaration","scope":18366,"src":"3023:46:57","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string"},"typeName":{"id":18174,"name":"string","nodeType":"ElementaryTypeName","src":"3023:6:57","typeDescriptions":{"typeIdentifier":"t_string_storage_ptr","typeString":"string"}},"value":{"hexValue":"3237","id":18175,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"3065:4:57","typeDescriptions":{"typeIdentifier":"t_stringliteral_58a280f74f57bf051c40f060139dc747e015be52f68c57e2c4ab2e4bd4146f43","typeString":"literal_string \"27\""},"value":"27"},"visibility":"public"},{"constant":true,"functionSelector":"6cd3cfbc","id":18179,"mutability":"constant","name":"RESERVE_FROZEN","nameLocation":"3135:14:57","nodeType":"VariableDeclaration","scope":18366,"src":"3112:44:57","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string"},"typeName":{"id":18177,"name":"string","nodeType":"ElementaryTypeName","src":"3112:6:57","typeDescriptions":{"typeIdentifier":"t_string_storage_ptr","typeString":"string"}},"value":{"hexValue":"3238","id":18178,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"3152:4:57","typeDescriptions":{"typeIdentifier":"t_stringliteral_9560168699514dcd528543d614e81b4f36adf182dc624d2f1eb91df8addd987e","typeString":"literal_string \"28\""},"value":"28"},"visibility":"public"},{"constant":true,"functionSelector":"b68774e9","id":18182,"mutability":"constant","name":"RESERVE_PAUSED","nameLocation":"3245:14:57","nodeType":"VariableDeclaration","scope":18366,"src":"3222:44:57","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string"},"typeName":{"id":18180,"name":"string","nodeType":"ElementaryTypeName","src":"3222:6:57","typeDescriptions":{"typeIdentifier":"t_string_storage_ptr","typeString":"string"}},"value":{"hexValue":"3239","id":18181,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"3262:4:57","typeDescriptions":{"typeIdentifier":"t_stringliteral_7749cc8014201da2069c21d93ba99c584b6f62d393fde534ed47eac227e31561","typeString":"literal_string \"29\""},"value":"29"},"visibility":"public"},{"constant":true,"functionSelector":"4ef999ff","id":18185,"mutability":"constant","name":"BORROWING_NOT_ENABLED","nameLocation":"3355:21:57","nodeType":"VariableDeclaration","scope":18366,"src":"3332:51:57","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string"},"typeName":{"id":18183,"name":"string","nodeType":"ElementaryTypeName","src":"3332:6:57","typeDescriptions":{"typeIdentifier":"t_string_storage_ptr","typeString":"string"}},"value":{"hexValue":"3330","id":18184,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"3379:4:57","typeDescriptions":{"typeIdentifier":"t_stringliteral_bbf5a24880b10a5f9f601c4058e4771ddea17e7d765ceb3c903814e1c0d621e0","typeString":"literal_string \"30\""},"value":"30"},"visibility":"public"},{"constant":true,"functionSelector":"4d86f393","id":18188,"mutability":"constant","name":"STABLE_BORROWING_NOT_ENABLED","nameLocation":"3440:28:57","nodeType":"VariableDeclaration","scope":18366,"src":"3417:58:57","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string"},"typeName":{"id":18186,"name":"string","nodeType":"ElementaryTypeName","src":"3417:6:57","typeDescriptions":{"typeIdentifier":"t_string_storage_ptr","typeString":"string"}},"value":{"hexValue":"3331","id":18187,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"3471:4:57","typeDescriptions":{"typeIdentifier":"t_stringliteral_933c48a61c3bad621ebc5d57117f9e773fefae4468bceaf9d3198a3bf7c1d678","typeString":"literal_string \"31\""},"value":"31"},"visibility":"public"},{"constant":true,"functionSelector":"b7f5e224","id":18191,"mutability":"constant","name":"NOT_ENOUGH_AVAILABLE_USER_BALANCE","nameLocation":"3539:33:57","nodeType":"VariableDeclaration","scope":18366,"src":"3516:63:57","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string"},"typeName":{"id":18189,"name":"string","nodeType":"ElementaryTypeName","src":"3516:6:57","typeDescriptions":{"typeIdentifier":"t_string_storage_ptr","typeString":"string"}},"value":{"hexValue":"3332","id":18190,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"3575:4:57","typeDescriptions":{"typeIdentifier":"t_stringliteral_8b953cbb84328003779eb1ef176ef07f7dd0ae3d4a8e408de53d15a36466c86e","typeString":"literal_string \"32\""},"value":"32"},"visibility":"public"},{"constant":true,"functionSelector":"89c5d45f","id":18194,"mutability":"constant","name":"INVALID_INTEREST_RATE_MODE_SELECTED","nameLocation":"3664:35:57","nodeType":"VariableDeclaration","scope":18366,"src":"3641:65:57","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string"},"typeName":{"id":18192,"name":"string","nodeType":"ElementaryTypeName","src":"3641:6:57","typeDescriptions":{"typeIdentifier":"t_string_storage_ptr","typeString":"string"}},"value":{"hexValue":"3333","id":18193,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"3702:4:57","typeDescriptions":{"typeIdentifier":"t_stringliteral_ed93c67e1a9b7f09d3b44ee593360f0073603a8e45415e2c3c69afc994a1103d","typeString":"literal_string \"33\""},"value":"33"},"visibility":"public"},{"constant":true,"functionSelector":"4e01e3c1","id":18197,"mutability":"constant","name":"COLLATERAL_BALANCE_IS_ZERO","nameLocation":"3774:26:57","nodeType":"VariableDeclaration","scope":18366,"src":"3751:56:57","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string"},"typeName":{"id":18195,"name":"string","nodeType":"ElementaryTypeName","src":"3751:6:57","typeDescriptions":{"typeIdentifier":"t_string_storage_ptr","typeString":"string"}},"value":{"hexValue":"3334","id":18196,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"3803:4:57","typeDescriptions":{"typeIdentifier":"t_stringliteral_77c32b454bb61eb9df9e3848d0ded3e59753acda90ae58befe564733aec82e4c","typeString":"literal_string \"34\""},"value":"34"},"visibility":"public"},{"constant":true,"functionSelector":"366eb54d","id":18200,"mutability":"constant","name":"HEALTH_FACTOR_LOWER_THAN_LIQUIDATION_THRESHOLD","nameLocation":"3867:46:57","nodeType":"VariableDeclaration","scope":18366,"src":"3844:76:57","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string"},"typeName":{"id":18198,"name":"string","nodeType":"ElementaryTypeName","src":"3844:6:57","typeDescriptions":{"typeIdentifier":"t_string_storage_ptr","typeString":"string"}},"value":{"hexValue":"3335","id":18199,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"3916:4:57","typeDescriptions":{"typeIdentifier":"t_stringliteral_5ca7b081b8c6c57b0469c340dba43ec8d33c0b898c69e55c4f74ff7ed9ac71ea","typeString":"literal_string \"35\""},"value":"35"},"visibility":"public"},{"constant":true,"functionSelector":"e3fa20f5","id":18203,"mutability":"constant","name":"COLLATERAL_CANNOT_COVER_NEW_BORROW","nameLocation":"4007:34:57","nodeType":"VariableDeclaration","scope":18366,"src":"3984:64:57","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string"},"typeName":{"id":18201,"name":"string","nodeType":"ElementaryTypeName","src":"3984:6:57","typeDescriptions":{"typeIdentifier":"t_string_storage_ptr","typeString":"string"}},"value":{"hexValue":"3336","id":18202,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"4044:4:57","typeDescriptions":{"typeIdentifier":"t_stringliteral_3b4066bd7b7960752225af105d3beafb5c47a26c5aae7e6798a437b7c0bb33e6","typeString":"literal_string \"36\""},"value":"36"},"visibility":"public"},{"constant":true,"functionSelector":"8a344000","id":18206,"mutability":"constant","name":"COLLATERAL_SAME_AS_BORROWING_CURRENCY","nameLocation":"4133:37:57","nodeType":"VariableDeclaration","scope":18366,"src":"4110:67:57","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string"},"typeName":{"id":18204,"name":"string","nodeType":"ElementaryTypeName","src":"4110:6:57","typeDescriptions":{"typeIdentifier":"t_string_storage_ptr","typeString":"string"}},"value":{"hexValue":"3337","id":18205,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"4173:4:57","typeDescriptions":{"typeIdentifier":"t_stringliteral_5bc0457d8881b800fd1bc0d6df907345b3bf287e43a5790ded3d08dbacf9c03a","typeString":"literal_string \"37\""},"value":"37"},"visibility":"public"},{"constant":true,"functionSelector":"f07f6785","id":18209,"mutability":"constant","name":"AMOUNT_BIGGER_THAN_MAX_LOAN_SIZE_STABLE","nameLocation":"4273:39:57","nodeType":"VariableDeclaration","scope":18366,"src":"4250:69:57","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string"},"typeName":{"id":18207,"name":"string","nodeType":"ElementaryTypeName","src":"4250:6:57","typeDescriptions":{"typeIdentifier":"t_string_storage_ptr","typeString":"string"}},"value":{"hexValue":"3338","id":18208,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"4315:4:57","typeDescriptions":{"typeIdentifier":"t_stringliteral_d67d834462ca31eaef1f30157e31659f60355143b7441e6fc7d9eae1fa79f3f8","typeString":"literal_string \"38\""},"value":"38"},"visibility":"public"},{"constant":true,"functionSelector":"dc191bd9","id":18212,"mutability":"constant","name":"NO_DEBT_OF_SELECTED_TYPE","nameLocation":"4426:24:57","nodeType":"VariableDeclaration","scope":18366,"src":"4403:54:57","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string"},"typeName":{"id":18210,"name":"string","nodeType":"ElementaryTypeName","src":"4403:6:57","typeDescriptions":{"typeIdentifier":"t_string_storage_ptr","typeString":"string"}},"value":{"hexValue":"3339","id":18211,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"4453:4:57","typeDescriptions":{"typeIdentifier":"t_stringliteral_318a541463286d7584b45438601196fbc1a55628e303a0613eb6d46e60640c95","typeString":"literal_string \"39\""},"value":"39"},"visibility":"public"},{"constant":true,"functionSelector":"712f536a","id":18215,"mutability":"constant","name":"NO_EXPLICIT_AMOUNT_TO_REPAY_ON_BEHALF","nameLocation":"4569:37:57","nodeType":"VariableDeclaration","scope":18366,"src":"4546:67:57","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string"},"typeName":{"id":18213,"name":"string","nodeType":"ElementaryTypeName","src":"4546:6:57","typeDescriptions":{"typeIdentifier":"t_string_storage_ptr","typeString":"string"}},"value":{"hexValue":"3430","id":18214,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"4609:4:57","typeDescriptions":{"typeIdentifier":"t_stringliteral_880de8116b3dfac28e9ff528a9fef1d1e0a51449c1addce011ffec1f302992b6","typeString":"literal_string \"40\""},"value":"40"},"visibility":"public"},{"constant":true,"functionSelector":"74459b14","id":18218,"mutability":"constant","name":"NO_OUTSTANDING_STABLE_DEBT","nameLocation":"4712:26:57","nodeType":"VariableDeclaration","scope":18366,"src":"4689:56:57","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string"},"typeName":{"id":18216,"name":"string","nodeType":"ElementaryTypeName","src":"4689:6:57","typeDescriptions":{"typeIdentifier":"t_string_storage_ptr","typeString":"string"}},"value":{"hexValue":"3431","id":18217,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"4741:4:57","typeDescriptions":{"typeIdentifier":"t_stringliteral_6bcaf047ba4c8ac400fca43393035242dd1aabda2d6068a0c51242b97224de8d","typeString":"literal_string \"41\""},"value":"41"},"visibility":"public"},{"constant":true,"functionSelector":"b4a45730","id":18221,"mutability":"constant","name":"NO_OUTSTANDING_VARIABLE_DEBT","nameLocation":"4841:28:57","nodeType":"VariableDeclaration","scope":18366,"src":"4818:58:57","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string"},"typeName":{"id":18219,"name":"string","nodeType":"ElementaryTypeName","src":"4818:6:57","typeDescriptions":{"typeIdentifier":"t_string_storage_ptr","typeString":"string"}},"value":{"hexValue":"3432","id":18220,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"4872:4:57","typeDescriptions":{"typeIdentifier":"t_stringliteral_ccb1f717aa77602faf03a594761a36956b1c4cf44c6b336d1db57da799b331b8","typeString":"literal_string \"42\""},"value":"42"},"visibility":"public"},{"constant":true,"functionSelector":"a2797c80","id":18224,"mutability":"constant","name":"UNDERLYING_BALANCE_ZERO","nameLocation":"4974:23:57","nodeType":"VariableDeclaration","scope":18366,"src":"4951:53:57","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string"},"typeName":{"id":18222,"name":"string","nodeType":"ElementaryTypeName","src":"4951:6:57","typeDescriptions":{"typeIdentifier":"t_string_storage_ptr","typeString":"string"}},"value":{"hexValue":"3433","id":18223,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"5000:4:57","typeDescriptions":{"typeIdentifier":"t_stringliteral_4dfb3440902001bce9b7ebf7be7d95fe9e2056bd5ce309ceb83b32f4e00e21ed","typeString":"literal_string \"43\""},"value":"43"},"visibility":"public"},{"constant":true,"functionSelector":"2926c971","id":18227,"mutability":"constant","name":"INTEREST_RATE_REBALANCE_CONDITIONS_NOT_MET","nameLocation":"5086:42:57","nodeType":"VariableDeclaration","scope":18366,"src":"5063:72:57","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string"},"typeName":{"id":18225,"name":"string","nodeType":"ElementaryTypeName","src":"5063:6:57","typeDescriptions":{"typeIdentifier":"t_string_storage_ptr","typeString":"string"}},"value":{"hexValue":"3434","id":18226,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"5131:4:57","typeDescriptions":{"typeIdentifier":"t_stringliteral_2e9b7c94e032d8b3b8b30bd825717a5ac74958b53e7c37a892a4fd7dc56e4975","typeString":"literal_string \"44\""},"value":"44"},"visibility":"public"},{"constant":true,"functionSelector":"952633c5","id":18230,"mutability":"constant","name":"HEALTH_FACTOR_NOT_BELOW_THRESHOLD","nameLocation":"5215:33:57","nodeType":"VariableDeclaration","scope":18366,"src":"5192:63:57","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string"},"typeName":{"id":18228,"name":"string","nodeType":"ElementaryTypeName","src":"5192:6:57","typeDescriptions":{"typeIdentifier":"t_string_storage_ptr","typeString":"string"}},"value":{"hexValue":"3435","id":18229,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"5251:4:57","typeDescriptions":{"typeIdentifier":"t_stringliteral_cc1431a2586c1e11fb75c87e5ee58e4204126a9fdde07075c91770f50276cbb0","typeString":"literal_string \"45\""},"value":"45"},"visibility":"public"},{"constant":true,"functionSelector":"895f7dc8","id":18233,"mutability":"constant","name":"COLLATERAL_CANNOT_BE_LIQUIDATED","nameLocation":"5328:31:57","nodeType":"VariableDeclaration","scope":18366,"src":"5305:61:57","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string"},"typeName":{"id":18231,"name":"string","nodeType":"ElementaryTypeName","src":"5305:6:57","typeDescriptions":{"typeIdentifier":"t_string_storage_ptr","typeString":"string"}},"value":{"hexValue":"3436","id":18232,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"5362:4:57","typeDescriptions":{"typeIdentifier":"t_stringliteral_c47ece0ffae697632ce145a7086cbcf260f7fa60876ff2606761ea2b7581ee76","typeString":"literal_string \"46\""},"value":"46"},"visibility":"public"},{"constant":true,"functionSelector":"22a73446","id":18236,"mutability":"constant","name":"SPECIFIED_CURRENCY_NOT_BORROWED_BY_USER","nameLocation":"5441:39:57","nodeType":"VariableDeclaration","scope":18366,"src":"5418:69:57","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string"},"typeName":{"id":18234,"name":"string","nodeType":"ElementaryTypeName","src":"5418:6:57","typeDescriptions":{"typeIdentifier":"t_string_storage_ptr","typeString":"string"}},"value":{"hexValue":"3437","id":18235,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"5483:4:57","typeDescriptions":{"typeIdentifier":"t_stringliteral_eb09910a03c892999c305d4a86a46fa82693119d981eef22c8d043b31f9e8a31","typeString":"literal_string \"47\""},"value":"47"},"visibility":"public"},{"constant":true,"functionSelector":"73dea5e3","id":18239,"mutability":"constant","name":"INCONSISTENT_FLASHLOAN_PARAMS","nameLocation":"5562:29:57","nodeType":"VariableDeclaration","scope":18366,"src":"5539:59:57","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string"},"typeName":{"id":18237,"name":"string","nodeType":"ElementaryTypeName","src":"5539:6:57","typeDescriptions":{"typeIdentifier":"t_string_storage_ptr","typeString":"string"}},"value":{"hexValue":"3439","id":18238,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"5594:4:57","typeDescriptions":{"typeIdentifier":"t_stringliteral_59c0d2b7af0a8e6d3d8e710a078764bd67b7223777026c424cdb4f599824bb79","typeString":"literal_string \"49\""},"value":"49"},"visibility":"public"},{"constant":true,"functionSelector":"2eed17e8","id":18242,"mutability":"constant","name":"BORROW_CAP_EXCEEDED","nameLocation":"5664:19:57","nodeType":"VariableDeclaration","scope":18366,"src":"5641:49:57","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string"},"typeName":{"id":18240,"name":"string","nodeType":"ElementaryTypeName","src":"5641:6:57","typeDescriptions":{"typeIdentifier":"t_string_storage_ptr","typeString":"string"}},"value":{"hexValue":"3530","id":18241,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"5686:4:57","typeDescriptions":{"typeIdentifier":"t_stringliteral_215d56ac8bbcf4ec574772ebea743ba30ac9d1c5e1b1ff899e5de1045f5df803","typeString":"literal_string \"50\""},"value":"50"},"visibility":"public"},{"constant":true,"functionSelector":"b0510054","id":18245,"mutability":"constant","name":"SUPPLY_CAP_EXCEEDED","nameLocation":"5745:19:57","nodeType":"VariableDeclaration","scope":18366,"src":"5722:49:57","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string"},"typeName":{"id":18243,"name":"string","nodeType":"ElementaryTypeName","src":"5722:6:57","typeDescriptions":{"typeIdentifier":"t_string_storage_ptr","typeString":"string"}},"value":{"hexValue":"3531","id":18244,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"5767:4:57","typeDescriptions":{"typeIdentifier":"t_stringliteral_f928ede1c39c5595ff22fe845412ee05a93eeaa584f8ef0c46b5eeb14cb99ec8","typeString":"literal_string \"51\""},"value":"51"},"visibility":"public"},{"constant":true,"functionSelector":"6b3f7cc7","id":18248,"mutability":"constant","name":"UNBACKED_MINT_CAP_EXCEEDED","nameLocation":"5826:26:57","nodeType":"VariableDeclaration","scope":18366,"src":"5803:56:57","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string"},"typeName":{"id":18246,"name":"string","nodeType":"ElementaryTypeName","src":"5803:6:57","typeDescriptions":{"typeIdentifier":"t_string_storage_ptr","typeString":"string"}},"value":{"hexValue":"3532","id":18247,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"5855:4:57","typeDescriptions":{"typeIdentifier":"t_stringliteral_cd41b8bf8f20f7ad95d96d948a315af225b219053fc98a80aee13063b692b681","typeString":"literal_string \"52\""},"value":"52"},"visibility":"public"},{"constant":true,"functionSelector":"65a83bab","id":18251,"mutability":"constant","name":"DEBT_CEILING_EXCEEDED","nameLocation":"5921:21:57","nodeType":"VariableDeclaration","scope":18366,"src":"5898:51:57","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string"},"typeName":{"id":18249,"name":"string","nodeType":"ElementaryTypeName","src":"5898:6:57","typeDescriptions":{"typeIdentifier":"t_string_storage_ptr","typeString":"string"}},"value":{"hexValue":"3533","id":18250,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"5945:4:57","typeDescriptions":{"typeIdentifier":"t_stringliteral_bbd48b257be1b8216d144ef9be5734f8d11697959c9e0f7768bec89db74a63a3","typeString":"literal_string \"53\""},"value":"53"},"visibility":"public"},{"constant":true,"functionSelector":"94f9fd8a","id":18254,"mutability":"constant","name":"UNDERLYING_CLAIMABLE_RIGHTS_NOT_ZERO","nameLocation":"6006:36:57","nodeType":"VariableDeclaration","scope":18366,"src":"5983:66:57","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string"},"typeName":{"id":18252,"name":"string","nodeType":"ElementaryTypeName","src":"5983:6:57","typeDescriptions":{"typeIdentifier":"t_string_storage_ptr","typeString":"string"}},"value":{"hexValue":"3534","id":18253,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"6045:4:57","typeDescriptions":{"typeIdentifier":"t_stringliteral_006b3e710f3089a74ecb6b0f5948e5ff07a3db6ba4da475d2be17624ba96b95b","typeString":"literal_string \"54\""},"value":"54"},"visibility":"public"},{"constant":true,"functionSelector":"65e7ef4c","id":18257,"mutability":"constant","name":"STABLE_DEBT_NOT_ZERO","nameLocation":"6160:20:57","nodeType":"VariableDeclaration","scope":18366,"src":"6137:50:57","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string"},"typeName":{"id":18255,"name":"string","nodeType":"ElementaryTypeName","src":"6137:6:57","typeDescriptions":{"typeIdentifier":"t_string_storage_ptr","typeString":"string"}},"value":{"hexValue":"3535","id":18256,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"6183:4:57","typeDescriptions":{"typeIdentifier":"t_stringliteral_6590fa52fa76f967656340b874bc9ca09733c2fddea9886210ebcbbceee04b35","typeString":"literal_string \"55\""},"value":"55"},"visibility":"public"},{"constant":true,"functionSelector":"f10727db","id":18260,"mutability":"constant","name":"VARIABLE_DEBT_SUPPLY_NOT_ZERO","nameLocation":"6250:29:57","nodeType":"VariableDeclaration","scope":18366,"src":"6227:59:57","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string"},"typeName":{"id":18258,"name":"string","nodeType":"ElementaryTypeName","src":"6227:6:57","typeDescriptions":{"typeIdentifier":"t_string_storage_ptr","typeString":"string"}},"value":{"hexValue":"3536","id":18259,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"6282:4:57","typeDescriptions":{"typeIdentifier":"t_stringliteral_32da71dbd53bc029835bc5ecdd3e688035cc92bb61b1811d1685e67ba974e19f","typeString":"literal_string \"56\""},"value":"56"},"visibility":"public"},{"constant":true,"functionSelector":"b87041c2","id":18263,"mutability":"constant","name":"LTV_VALIDATION_FAILED","nameLocation":"6351:21:57","nodeType":"VariableDeclaration","scope":18366,"src":"6328:51:57","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string"},"typeName":{"id":18261,"name":"string","nodeType":"ElementaryTypeName","src":"6328:6:57","typeDescriptions":{"typeIdentifier":"t_string_storage_ptr","typeString":"string"}},"value":{"hexValue":"3537","id":18262,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"6375:4:57","typeDescriptions":{"typeIdentifier":"t_stringliteral_e921da22f871c25c63f06c1365385cbb26397f64f79055cdbab32187a9377d16","typeString":"literal_string \"57\""},"value":"57"},"visibility":"public"},{"constant":true,"functionSelector":"8f7722b2","id":18266,"mutability":"constant","name":"INCONSISTENT_EMODE_CATEGORY","nameLocation":"6433:27:57","nodeType":"VariableDeclaration","scope":18366,"src":"6410:57:57","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string"},"typeName":{"id":18264,"name":"string","nodeType":"ElementaryTypeName","src":"6410:6:57","typeDescriptions":{"typeIdentifier":"t_string_storage_ptr","typeString":"string"}},"value":{"hexValue":"3538","id":18265,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"6463:4:57","typeDescriptions":{"typeIdentifier":"t_stringliteral_59d26ca75eb04b47ab1bca5d789d02e4d0cf9ff8cb49c9041caeeeab4eccafbf","typeString":"literal_string \"58\""},"value":"58"},"visibility":"public"},{"constant":true,"functionSelector":"c8638082","id":18269,"mutability":"constant","name":"PRICE_ORACLE_SENTINEL_CHECK_FAILED","nameLocation":"6527:34:57","nodeType":"VariableDeclaration","scope":18366,"src":"6504:64:57","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string"},"typeName":{"id":18267,"name":"string","nodeType":"ElementaryTypeName","src":"6504:6:57","typeDescriptions":{"typeIdentifier":"t_string_storage_ptr","typeString":"string"}},"value":{"hexValue":"3539","id":18268,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"6564:4:57","typeDescriptions":{"typeIdentifier":"t_stringliteral_dec29173c70f4e70086d64e09cb72b415f3d6a1843817cff62483903f0e12f62","typeString":"literal_string \"59\""},"value":"59"},"visibility":"public"},{"constant":true,"functionSelector":"8596aad5","id":18272,"mutability":"constant","name":"ASSET_NOT_BORROWABLE_IN_ISOLATION","nameLocation":"6640:33:57","nodeType":"VariableDeclaration","scope":18366,"src":"6617:63:57","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string"},"typeName":{"id":18270,"name":"string","nodeType":"ElementaryTypeName","src":"6617:6:57","typeDescriptions":{"typeIdentifier":"t_string_storage_ptr","typeString":"string"}},"value":{"hexValue":"3630","id":18271,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"6676:4:57","typeDescriptions":{"typeIdentifier":"t_stringliteral_7446b42d7fe1689ec32fc1ca65129d9f21f1979742315d34500a6886f6986bea","typeString":"literal_string \"60\""},"value":"60"},"visibility":"public"},{"constant":true,"functionSelector":"d9adda85","id":18275,"mutability":"constant","name":"RESERVE_ALREADY_INITIALIZED","nameLocation":"6754:27:57","nodeType":"VariableDeclaration","scope":18366,"src":"6731:57:57","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string"},"typeName":{"id":18273,"name":"string","nodeType":"ElementaryTypeName","src":"6731:6:57","typeDescriptions":{"typeIdentifier":"t_string_storage_ptr","typeString":"string"}},"value":{"hexValue":"3631","id":18274,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"6784:4:57","typeDescriptions":{"typeIdentifier":"t_stringliteral_5ae62207e7adee0b793bf869601474e77943fa4d9e3e0420f34d788e59bc19bd","typeString":"literal_string \"61\""},"value":"61"},"visibility":"public"},{"constant":true,"functionSelector":"480702ae","id":18278,"mutability":"constant","name":"USER_IN_ISOLATION_MODE_OR_LTV_ZERO","nameLocation":"6857:34:57","nodeType":"VariableDeclaration","scope":18366,"src":"6834:64:57","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string"},"typeName":{"id":18276,"name":"string","nodeType":"ElementaryTypeName","src":"6834:6:57","typeDescriptions":{"typeIdentifier":"t_string_storage_ptr","typeString":"string"}},"value":{"hexValue":"3632","id":18277,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"6894:4:57","typeDescriptions":{"typeIdentifier":"t_stringliteral_d9670a00d025e59e1bd58d53874bea4ab34fea782716e2c168e89a3c8452d3bb","typeString":"literal_string \"62\""},"value":"62"},"visibility":"public"},{"constant":true,"functionSelector":"99ce53f3","id":18281,"mutability":"constant","name":"INVALID_LTV","nameLocation":"6971:11:57","nodeType":"VariableDeclaration","scope":18366,"src":"6948:41:57","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string"},"typeName":{"id":18279,"name":"string","nodeType":"ElementaryTypeName","src":"6948:6:57","typeDescriptions":{"typeIdentifier":"t_string_storage_ptr","typeString":"string"}},"value":{"hexValue":"3633","id":18280,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"6985:4:57","typeDescriptions":{"typeIdentifier":"t_stringliteral_4569971f3d79dc8da7f8a6820be6cb8dc4a52bb0df6599b2aae7182111b63cd5","typeString":"literal_string \"63\""},"value":"63"},"visibility":"public"},{"constant":true,"functionSelector":"dd1dd95f","id":18284,"mutability":"constant","name":"INVALID_LIQ_THRESHOLD","nameLocation":"7059:21:57","nodeType":"VariableDeclaration","scope":18366,"src":"7036:51:57","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string"},"typeName":{"id":18282,"name":"string","nodeType":"ElementaryTypeName","src":"7036:6:57","typeDescriptions":{"typeIdentifier":"t_string_storage_ptr","typeString":"string"}},"value":{"hexValue":"3634","id":18283,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"7083:4:57","typeDescriptions":{"typeIdentifier":"t_stringliteral_646d998f946f968f0675fd4e3cb527e1222094ea0d9cc1fd615146a8fe29802e","typeString":"literal_string \"64\""},"value":"64"},"visibility":"public"},{"constant":true,"functionSelector":"9527e9d9","id":18287,"mutability":"constant","name":"INVALID_LIQ_BONUS","nameLocation":"7173:17:57","nodeType":"VariableDeclaration","scope":18366,"src":"7150:47:57","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string"},"typeName":{"id":18285,"name":"string","nodeType":"ElementaryTypeName","src":"7150:6:57","typeDescriptions":{"typeIdentifier":"t_string_storage_ptr","typeString":"string"}},"value":{"hexValue":"3635","id":18286,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"7193:4:57","typeDescriptions":{"typeIdentifier":"t_stringliteral_606503ebd6bdca7290248af82fd5a09ca0489398da9f242244210336ae6ece9f","typeString":"literal_string \"65\""},"value":"65"},"visibility":"public"},{"constant":true,"functionSelector":"fa163a83","id":18290,"mutability":"constant","name":"INVALID_DECIMALS","nameLocation":"7279:16:57","nodeType":"VariableDeclaration","scope":18366,"src":"7256:46:57","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string"},"typeName":{"id":18288,"name":"string","nodeType":"ElementaryTypeName","src":"7256:6:57","typeDescriptions":{"typeIdentifier":"t_string_storage_ptr","typeString":"string"}},"value":{"hexValue":"3636","id":18289,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"7298:4:57","typeDescriptions":{"typeIdentifier":"t_stringliteral_35bb2e240092263378f77ea1e9c278099a33b604c4c4e26d13ea227e8bb74470","typeString":"literal_string \"66\""},"value":"66"},"visibility":"public"},{"constant":true,"functionSelector":"a4868dca","id":18293,"mutability":"constant","name":"INVALID_RESERVE_FACTOR","nameLocation":"7400:22:57","nodeType":"VariableDeclaration","scope":18366,"src":"7377:52:57","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string"},"typeName":{"id":18291,"name":"string","nodeType":"ElementaryTypeName","src":"7377:6:57","typeDescriptions":{"typeIdentifier":"t_string_storage_ptr","typeString":"string"}},"value":{"hexValue":"3637","id":18292,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"7425:4:57","typeDescriptions":{"typeIdentifier":"t_stringliteral_eafa31dc210956fc0884ec5660eba9405197797219cbbda41b6aaf7118c651d8","typeString":"literal_string \"67\""},"value":"67"},"visibility":"public"},{"constant":true,"functionSelector":"d6f9fcde","id":18296,"mutability":"constant","name":"INVALID_BORROW_CAP","nameLocation":"7510:18:57","nodeType":"VariableDeclaration","scope":18366,"src":"7487:48:57","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string"},"typeName":{"id":18294,"name":"string","nodeType":"ElementaryTypeName","src":"7487:6:57","typeDescriptions":{"typeIdentifier":"t_string_storage_ptr","typeString":"string"}},"value":{"hexValue":"3638","id":18295,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"7531:4:57","typeDescriptions":{"typeIdentifier":"t_stringliteral_cc143a676b82d5e07b2c9d57717b403ab3c58caa273a42cdb95b15980141a86c","typeString":"literal_string \"68\""},"value":"68"},"visibility":"public"},{"constant":true,"functionSelector":"26bbd053","id":18299,"mutability":"constant","name":"INVALID_SUPPLY_CAP","nameLocation":"7602:18:57","nodeType":"VariableDeclaration","scope":18366,"src":"7579:48:57","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string"},"typeName":{"id":18297,"name":"string","nodeType":"ElementaryTypeName","src":"7579:6:57","typeDescriptions":{"typeIdentifier":"t_string_storage_ptr","typeString":"string"}},"value":{"hexValue":"3639","id":18298,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"7623:4:57","typeDescriptions":{"typeIdentifier":"t_stringliteral_db37925934a3d3177db64e11f5e0156ceb8a756fee58ded16e549afa607ddb1d","typeString":"literal_string \"69\""},"value":"69"},"visibility":"public"},{"constant":true,"functionSelector":"8eda46bd","id":18302,"mutability":"constant","name":"INVALID_LIQUIDATION_PROTOCOL_FEE","nameLocation":"7694:32:57","nodeType":"VariableDeclaration","scope":18366,"src":"7671:62:57","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string"},"typeName":{"id":18300,"name":"string","nodeType":"ElementaryTypeName","src":"7671:6:57","typeDescriptions":{"typeIdentifier":"t_string_storage_ptr","typeString":"string"}},"value":{"hexValue":"3730","id":18301,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"7729:4:57","typeDescriptions":{"typeIdentifier":"t_stringliteral_cdbc23227c72e0a3f4683bdbccfcbed38047ca1a70d48b78c210dc5393029019","typeString":"literal_string \"70\""},"value":"70"},"visibility":"public"},{"constant":true,"functionSelector":"a8c97853","id":18305,"mutability":"constant","name":"INVALID_EMODE_CATEGORY","nameLocation":"7814:22:57","nodeType":"VariableDeclaration","scope":18366,"src":"7791:52:57","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string"},"typeName":{"id":18303,"name":"string","nodeType":"ElementaryTypeName","src":"7791:6:57","typeDescriptions":{"typeIdentifier":"t_string_storage_ptr","typeString":"string"}},"value":{"hexValue":"3731","id":18304,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"7839:4:57","typeDescriptions":{"typeIdentifier":"t_stringliteral_2cc0d3dcb20652cd8f106aee76b6a7391771a130885634c0eb2bbe3cde796691","typeString":"literal_string \"71\""},"value":"71"},"visibility":"public"},{"constant":true,"functionSelector":"47ba93d8","id":18308,"mutability":"constant","name":"INVALID_UNBACKED_MINT_CAP","nameLocation":"7914:25:57","nodeType":"VariableDeclaration","scope":18366,"src":"7891:55:57","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string"},"typeName":{"id":18306,"name":"string","nodeType":"ElementaryTypeName","src":"7891:6:57","typeDescriptions":{"typeIdentifier":"t_string_storage_ptr","typeString":"string"}},"value":{"hexValue":"3732","id":18307,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"7942:4:57","typeDescriptions":{"typeIdentifier":"t_stringliteral_8fd0324b6a5df169e0aa0c7938ef0034d0e971a998f91b36eba211882d3617b1","typeString":"literal_string \"72\""},"value":"72"},"visibility":"public"},{"constant":true,"functionSelector":"dcc56db6","id":18311,"mutability":"constant","name":"INVALID_DEBT_CEILING","nameLocation":"8020:20:57","nodeType":"VariableDeclaration","scope":18366,"src":"7997:50:57","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string"},"typeName":{"id":18309,"name":"string","nodeType":"ElementaryTypeName","src":"7997:6:57","typeDescriptions":{"typeIdentifier":"t_string_storage_ptr","typeString":"string"}},"value":{"hexValue":"3733","id":18310,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"8043:4:57","typeDescriptions":{"typeIdentifier":"t_stringliteral_b2219b801710730437d0358146c829b62297a059eceaa0b40b27aea2daecf595","typeString":"literal_string \"73\""},"value":"73"},"visibility":"public"},{"constant":true,"functionSelector":"d1cd8b1d","id":18314,"mutability":"constant","name":"INVALID_RESERVE_INDEX","nameLocation":"8115:21:57","nodeType":"VariableDeclaration","scope":18366,"src":"8092:51:57","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string"},"typeName":{"id":18312,"name":"string","nodeType":"ElementaryTypeName","src":"8092:6:57","typeDescriptions":{"typeIdentifier":"t_string_storage_ptr","typeString":"string"}},"value":{"hexValue":"3734","id":18313,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"8139:4:57","typeDescriptions":{"typeIdentifier":"t_stringliteral_57014f1e5f1d53e43fa40624186159531d6372d1ab8f40ec7882845ca66de31d","typeString":"literal_string \"74\""},"value":"74"},"visibility":"public"},{"constant":true,"functionSelector":"fd1828ff","id":18317,"mutability":"constant","name":"ACL_ADMIN_CANNOT_BE_ZERO","nameLocation":"8197:24:57","nodeType":"VariableDeclaration","scope":18366,"src":"8174:54:57","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string"},"typeName":{"id":18315,"name":"string","nodeType":"ElementaryTypeName","src":"8174:6:57","typeDescriptions":{"typeIdentifier":"t_string_storage_ptr","typeString":"string"}},"value":{"hexValue":"3735","id":18316,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"8224:4:57","typeDescriptions":{"typeIdentifier":"t_stringliteral_6dbb33232cde86c8a04f90a8bed9fc1c5ef520188a14538d96eb100d69bc2a94","typeString":"literal_string \"75\""},"value":"75"},"visibility":"public"},{"constant":true,"functionSelector":"bad8308c","id":18320,"mutability":"constant","name":"INCONSISTENT_PARAMS_LENGTH","nameLocation":"8304:26:57","nodeType":"VariableDeclaration","scope":18366,"src":"8281:56:57","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string"},"typeName":{"id":18318,"name":"string","nodeType":"ElementaryTypeName","src":"8281:6:57","typeDescriptions":{"typeIdentifier":"t_string_storage_ptr","typeString":"string"}},"value":{"hexValue":"3736","id":18319,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"8333:4:57","typeDescriptions":{"typeIdentifier":"t_stringliteral_f1ae7da53f98170be52cc9330214a82f7ba06ee306297b4e1fb86fb21c611aa6","typeString":"literal_string \"76\""},"value":"76"},"visibility":"public"},{"constant":true,"functionSelector":"d14bb17a","id":18323,"mutability":"constant","name":"ZERO_ADDRESS_NOT_VALID","nameLocation":"8422:22:57","nodeType":"VariableDeclaration","scope":18366,"src":"8399:52:57","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string"},"typeName":{"id":18321,"name":"string","nodeType":"ElementaryTypeName","src":"8399:6:57","typeDescriptions":{"typeIdentifier":"t_string_storage_ptr","typeString":"string"}},"value":{"hexValue":"3737","id":18322,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"8447:4:57","typeDescriptions":{"typeIdentifier":"t_stringliteral_7fe86492ed9171487feeb17b76d71244c5fb104d897816bb03a924e5871f3fa3","typeString":"literal_string \"77\""},"value":"77"},"visibility":"public"},{"constant":true,"functionSelector":"c08a1146","id":18326,"mutability":"constant","name":"INVALID_EXPIRATION","nameLocation":"8506:18:57","nodeType":"VariableDeclaration","scope":18366,"src":"8483:48:57","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string"},"typeName":{"id":18324,"name":"string","nodeType":"ElementaryTypeName","src":"8483:6:57","typeDescriptions":{"typeIdentifier":"t_string_storage_ptr","typeString":"string"}},"value":{"hexValue":"3738","id":18325,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"8527:4:57","typeDescriptions":{"typeIdentifier":"t_stringliteral_63867b8d5e748cf93e24f7b381d92337d037805bfc271d6d67e0e86772662677","typeString":"literal_string \"78\""},"value":"78"},"visibility":"public"},{"constant":true,"functionSelector":"a3402a38","id":18329,"mutability":"constant","name":"INVALID_SIGNATURE","nameLocation":"8582:17:57","nodeType":"VariableDeclaration","scope":18366,"src":"8559:47:57","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string"},"typeName":{"id":18327,"name":"string","nodeType":"ElementaryTypeName","src":"8559:6:57","typeDescriptions":{"typeIdentifier":"t_string_storage_ptr","typeString":"string"}},"value":{"hexValue":"3739","id":18328,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"8602:4:57","typeDescriptions":{"typeIdentifier":"t_stringliteral_2bf418e3ea3cce1b306c1bbf566df40bf3703cc73b456ccd399088d784bc76ee","typeString":"literal_string \"79\""},"value":"79"},"visibility":"public"},{"constant":true,"functionSelector":"8b8b98d7","id":18332,"mutability":"constant","name":"OPERATION_NOT_SUPPORTED","nameLocation":"8656:23:57","nodeType":"VariableDeclaration","scope":18366,"src":"8633:53:57","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string"},"typeName":{"id":18330,"name":"string","nodeType":"ElementaryTypeName","src":"8633:6:57","typeDescriptions":{"typeIdentifier":"t_string_storage_ptr","typeString":"string"}},"value":{"hexValue":"3830","id":18331,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"8682:4:57","typeDescriptions":{"typeIdentifier":"t_stringliteral_742ccb3c5ad7b0e2030ad7fa03711e32b9f4236452343c6e16a6cf67d464d149","typeString":"literal_string \"80\""},"value":"80"},"visibility":"public"},{"constant":true,"functionSelector":"e4dd8b74","id":18335,"mutability":"constant","name":"DEBT_CEILING_NOT_ZERO","nameLocation":"8742:21:57","nodeType":"VariableDeclaration","scope":18366,"src":"8719:51:57","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string"},"typeName":{"id":18333,"name":"string","nodeType":"ElementaryTypeName","src":"8719:6:57","typeDescriptions":{"typeIdentifier":"t_string_storage_ptr","typeString":"string"}},"value":{"hexValue":"3831","id":18334,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"8766:4:57","typeDescriptions":{"typeIdentifier":"t_stringliteral_e2ecacab2e0418b841e7d0b206f5c40e0e0489353c5747dd1cc77d7f5a66829f","typeString":"literal_string \"81\""},"value":"81"},"visibility":"public"},{"constant":true,"functionSelector":"cd23367c","id":18338,"mutability":"constant","name":"ASSET_NOT_LISTED","nameLocation":"8827:16:57","nodeType":"VariableDeclaration","scope":18366,"src":"8804:46:57","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string"},"typeName":{"id":18336,"name":"string","nodeType":"ElementaryTypeName","src":"8804:6:57","typeDescriptions":{"typeIdentifier":"t_string_storage_ptr","typeString":"string"}},"value":{"hexValue":"3832","id":18337,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"8846:4:57","typeDescriptions":{"typeIdentifier":"t_stringliteral_5392f7a671cdf89487ccf8e3646ea8f7570009490584962db6fa064c6e4ad499","typeString":"literal_string \"82\""},"value":"82"},"visibility":"public"},{"constant":true,"functionSelector":"4e3aed37","id":18341,"mutability":"constant","name":"INVALID_OPTIMAL_USAGE_RATIO","nameLocation":"8902:27:57","nodeType":"VariableDeclaration","scope":18366,"src":"8879:57:57","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string"},"typeName":{"id":18339,"name":"string","nodeType":"ElementaryTypeName","src":"8879:6:57","typeDescriptions":{"typeIdentifier":"t_string_storage_ptr","typeString":"string"}},"value":{"hexValue":"3833","id":18340,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"8932:4:57","typeDescriptions":{"typeIdentifier":"t_stringliteral_043ab7193d962ca510e48770a5a13714f4684febe0e5affcfd1eb73cfed1f218","typeString":"literal_string \"83\""},"value":"83"},"visibility":"public"},{"constant":true,"functionSelector":"c899301a","id":18344,"mutability":"constant","name":"INVALID_OPTIMAL_STABLE_TO_TOTAL_DEBT_RATIO","nameLocation":"8996:42:57","nodeType":"VariableDeclaration","scope":18366,"src":"8973:72:57","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string"},"typeName":{"id":18342,"name":"string","nodeType":"ElementaryTypeName","src":"8973:6:57","typeDescriptions":{"typeIdentifier":"t_string_storage_ptr","typeString":"string"}},"value":{"hexValue":"3834","id":18343,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"9041:4:57","typeDescriptions":{"typeIdentifier":"t_stringliteral_ab20a672b3c5d5f71a8da6c43d4bf580ed35b623d6b0366b1de9df7e12238080","typeString":"literal_string \"84\""},"value":"84"},"visibility":"public"},{"constant":true,"functionSelector":"ab883ca0","id":18347,"mutability":"constant","name":"UNDERLYING_CANNOT_BE_RESCUED","nameLocation":"9120:28:57","nodeType":"VariableDeclaration","scope":18366,"src":"9097:58:57","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string"},"typeName":{"id":18345,"name":"string","nodeType":"ElementaryTypeName","src":"9097:6:57","typeDescriptions":{"typeIdentifier":"t_string_storage_ptr","typeString":"string"}},"value":{"hexValue":"3835","id":18346,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"9151:4:57","typeDescriptions":{"typeIdentifier":"t_stringliteral_17157e479612de6088d957c64aca858964825e74089b3c7dacc26409e6d53000","typeString":"literal_string \"85\""},"value":"85"},"visibility":"public"},{"constant":true,"functionSelector":"14dcfbbc","id":18350,"mutability":"constant","name":"ADDRESSES_PROVIDER_ALREADY_ADDED","nameLocation":"9226:32:57","nodeType":"VariableDeclaration","scope":18366,"src":"9203:62:57","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string"},"typeName":{"id":18348,"name":"string","nodeType":"ElementaryTypeName","src":"9203:6:57","typeDescriptions":{"typeIdentifier":"t_string_storage_ptr","typeString":"string"}},"value":{"hexValue":"3836","id":18349,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"9261:4:57","typeDescriptions":{"typeIdentifier":"t_stringliteral_cc193713febc75d3d9bd2f9ce113f403ff19633f15c8cdbcf79756ae23e77f9a","typeString":"literal_string \"86\""},"value":"86"},"visibility":"public"},{"constant":true,"functionSelector":"1abbb001","id":18353,"mutability":"constant","name":"POOL_ADDRESSES_DO_NOT_MATCH","nameLocation":"9344:27:57","nodeType":"VariableDeclaration","scope":18366,"src":"9321:57:57","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string"},"typeName":{"id":18351,"name":"string","nodeType":"ElementaryTypeName","src":"9321:6:57","typeDescriptions":{"typeIdentifier":"t_string_storage_ptr","typeString":"string"}},"value":{"hexValue":"3837","id":18352,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"9374:4:57","typeDescriptions":{"typeIdentifier":"t_stringliteral_845e9c18ca148a712f01bf14c91c3e2fe352eabe86c44817e3f33b63f585a343","typeString":"literal_string \"87\""},"value":"87"},"visibility":"public"},{"constant":true,"functionSelector":"198d6a6b","id":18356,"mutability":"constant","name":"STABLE_BORROWING_ENABLED","nameLocation":"9516:24:57","nodeType":"VariableDeclaration","scope":18366,"src":"9493:54:57","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string"},"typeName":{"id":18354,"name":"string","nodeType":"ElementaryTypeName","src":"9493:6:57","typeDescriptions":{"typeIdentifier":"t_string_storage_ptr","typeString":"string"}},"value":{"hexValue":"3838","id":18355,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"9543:4:57","typeDescriptions":{"typeIdentifier":"t_stringliteral_a3bcf8af6929b66d6da7ee355c48fd1cf926fd090bc75a4dcbf7bd8e365645e3","typeString":"literal_string \"88\""},"value":"88"},"visibility":"public"},{"constant":true,"functionSelector":"de24948c","id":18359,"mutability":"constant","name":"SILOED_BORROWING_VIOLATION","nameLocation":"9607:26:57","nodeType":"VariableDeclaration","scope":18366,"src":"9584:56:57","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string"},"typeName":{"id":18357,"name":"string","nodeType":"ElementaryTypeName","src":"9584:6:57","typeDescriptions":{"typeIdentifier":"t_string_storage_ptr","typeString":"string"}},"value":{"hexValue":"3839","id":18358,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"9636:4:57","typeDescriptions":{"typeIdentifier":"t_stringliteral_5ad0f966e4dd8863f27c0e6ee7d684c0c8f4319efed210fe15662a0d29bcd615","typeString":"literal_string \"89\""},"value":"89"},"visibility":"public"},{"constant":true,"functionSelector":"e981483a","id":18362,"mutability":"constant","name":"RESERVE_DEBT_NOT_ZERO","nameLocation":"9736:21:57","nodeType":"VariableDeclaration","scope":18366,"src":"9713:51:57","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string"},"typeName":{"id":18360,"name":"string","nodeType":"ElementaryTypeName","src":"9713:6:57","typeDescriptions":{"typeIdentifier":"t_string_storage_ptr","typeString":"string"}},"value":{"hexValue":"3930","id":18361,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"9760:4:57","typeDescriptions":{"typeIdentifier":"t_stringliteral_04e57633024368235fc5219bfb9802814291d3a7b9a68d0aeb7bd3d297ac474e","typeString":"literal_string \"90\""},"value":"90"},"visibility":"public"},{"constant":true,"functionSelector":"8aa3ca4c","id":18365,"mutability":"constant","name":"FLASHLOAN_DISABLED","nameLocation":"9838:18:57","nodeType":"VariableDeclaration","scope":18366,"src":"9815:48:57","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string"},"typeName":{"id":18363,"name":"string","nodeType":"ElementaryTypeName","src":"9815:6:57","typeDescriptions":{"typeIdentifier":"t_string_storage_ptr","typeString":"string"}},"value":{"hexValue":"3931","id":18364,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"9859:4:57","typeDescriptions":{"typeIdentifier":"t_stringliteral_4393e7114eb674248a1480712950c28cb06e118e040859a2eafa3ca8a6dfbd69","typeString":"literal_string \"91\""},"value":"91"},"visibility":"public"}],"scope":18367,"src":"205:9704:57","usedErrors":[],"usedEvents":[]}],"src":"37:9873:57"},"id":57},"contracts/dependencies/aave-v3/IPool.sol":{"ast":{"absolutePath":"contracts/dependencies/aave-v3/IPool.sol","exportedSymbols":{"DataTypes":[18092],"IPool":[19003],"IPoolAddressesProvider":[19212]},"id":19004,"license":"AGPL-3.0","nodeType":"SourceUnit","nodes":[{"id":18368,"literals":["solidity","^","0.8",".0"],"nodeType":"PragmaDirective","src":"37:23:58"},{"absolutePath":"contracts/dependencies/aave-v3/IPoolAddressesProvider.sol","file":"./IPoolAddressesProvider.sol","id":18370,"nameLocation":"-1:-1:-1","nodeType":"ImportDirective","scope":19004,"sourceUnit":19213,"src":"62:68:58","symbolAliases":[{"foreign":{"id":18369,"name":"IPoolAddressesProvider","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":19212,"src":"70:22:58","typeDescriptions":{}},"nameLocation":"-1:-1:-1"}],"unitAlias":""},{"absolutePath":"contracts/dependencies/aave-v3/DataTypes.sol","file":"./DataTypes.sol","id":18372,"nameLocation":"-1:-1:-1","nodeType":"ImportDirective","scope":19004,"sourceUnit":18093,"src":"131:42:58","symbolAliases":[{"foreign":{"id":18371,"name":"DataTypes","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":18092,"src":"139:9:58","typeDescriptions":{}},"nameLocation":"-1:-1:-1"}],"unitAlias":""},{"abstract":false,"baseContracts":[],"canonicalName":"IPool","contractDependencies":[],"contractKind":"interface","documentation":{"id":18373,"nodeType":"StructuredDocumentation","src":"175:97:58","text":" @title IPool\n @author Aave\n @notice Defines the basic interface for an Aave Pool.*"},"fullyImplemented":false,"id":19003,"linearizedBaseContracts":[19003],"name":"IPool","nameLocation":"283:5:58","nodeType":"ContractDefinition","nodes":[{"anonymous":false,"documentation":{"id":18374,"nodeType":"StructuredDocumentation","src":"293:350:58","text":" @dev Emitted on mintUnbacked()\n @param reserve The address of the underlying asset of the reserve\n @param user The address initiating the supply\n @param onBehalfOf The beneficiary of the supplied assets, receiving the aTokens\n @param amount The amount of supplied assets\n @param referralCode The referral code used*"},"eventSelector":"f25af37b3d3ec226063dc9bdc103ece7eb110a50f340fe854bb7bc1b0676d7d0","id":18386,"name":"MintUnbacked","nameLocation":"652:12:58","nodeType":"EventDefinition","parameters":{"id":18385,"nodeType":"ParameterList","parameters":[{"constant":false,"id":18376,"indexed":true,"mutability":"mutable","name":"reserve","nameLocation":"686:7:58","nodeType":"VariableDeclaration","scope":18386,"src":"670:23:58","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":18375,"name":"address","nodeType":"ElementaryTypeName","src":"670:7:58","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":18378,"indexed":false,"mutability":"mutable","name":"user","nameLocation":"707:4:58","nodeType":"VariableDeclaration","scope":18386,"src":"699:12:58","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":18377,"name":"address","nodeType":"ElementaryTypeName","src":"699:7:58","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":18380,"indexed":true,"mutability":"mutable","name":"onBehalfOf","nameLocation":"733:10:58","nodeType":"VariableDeclaration","scope":18386,"src":"717:26:58","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":18379,"name":"address","nodeType":"ElementaryTypeName","src":"717:7:58","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":18382,"indexed":false,"mutability":"mutable","name":"amount","nameLocation":"757:6:58","nodeType":"VariableDeclaration","scope":18386,"src":"749:14:58","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":18381,"name":"uint256","nodeType":"ElementaryTypeName","src":"749:7:58","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":18384,"indexed":true,"mutability":"mutable","name":"referralCode","nameLocation":"784:12:58","nodeType":"VariableDeclaration","scope":18386,"src":"769:27:58","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint16","typeString":"uint16"},"typeName":{"id":18383,"name":"uint16","nodeType":"ElementaryTypeName","src":"769:6:58","typeDescriptions":{"typeIdentifier":"t_uint16","typeString":"uint16"}},"visibility":"internal"}],"src":"664:136:58"},"src":"646:155:58"},{"anonymous":false,"documentation":{"id":18387,"nodeType":"StructuredDocumentation","src":"805:258:58","text":" @dev Emitted on backUnbacked()\n @param reserve The address of the underlying asset of the reserve\n @param backer The address paying for the backing\n @param amount The amount added as backing\n @param fee The amount paid in fees*"},"eventSelector":"281596e92b2d974beb7d4f124df30a0b39067b096893e95011ce4bdad798b759","id":18397,"name":"BackUnbacked","nameLocation":"1072:12:58","nodeType":"EventDefinition","parameters":{"id":18396,"nodeType":"ParameterList","parameters":[{"constant":false,"id":18389,"indexed":true,"mutability":"mutable","name":"reserve","nameLocation":"1101:7:58","nodeType":"VariableDeclaration","scope":18397,"src":"1085:23:58","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":18388,"name":"address","nodeType":"ElementaryTypeName","src":"1085:7:58","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":18391,"indexed":true,"mutability":"mutable","name":"backer","nameLocation":"1126:6:58","nodeType":"VariableDeclaration","scope":18397,"src":"1110:22:58","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":18390,"name":"address","nodeType":"ElementaryTypeName","src":"1110:7:58","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":18393,"indexed":false,"mutability":"mutable","name":"amount","nameLocation":"1142:6:58","nodeType":"VariableDeclaration","scope":18397,"src":"1134:14:58","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":18392,"name":"uint256","nodeType":"ElementaryTypeName","src":"1134:7:58","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":18395,"indexed":false,"mutability":"mutable","name":"fee","nameLocation":"1158:3:58","nodeType":"VariableDeclaration","scope":18397,"src":"1150:11:58","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":18394,"name":"uint256","nodeType":"ElementaryTypeName","src":"1150:7:58","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"1084:78:58"},"src":"1066:97:58"},{"anonymous":false,"documentation":{"id":18398,"nodeType":"StructuredDocumentation","src":"1167:325:58","text":" @dev Emitted on supply()\n @param reserve The address of the underlying asset of the reserve\n @param user The address initiating the supply\n @param onBehalfOf The beneficiary of the supply, receiving the aTokens\n @param amount The amount supplied\n @param referralCode The referral code used*"},"eventSelector":"2b627736bca15cd5381dcf80b0bf11fd197d01a037c52b927a881a10fb73ba61","id":18410,"name":"Supply","nameLocation":"1501:6:58","nodeType":"EventDefinition","parameters":{"id":18409,"nodeType":"ParameterList","parameters":[{"constant":false,"id":18400,"indexed":true,"mutability":"mutable","name":"reserve","nameLocation":"1529:7:58","nodeType":"VariableDeclaration","scope":18410,"src":"1513:23:58","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":18399,"name":"address","nodeType":"ElementaryTypeName","src":"1513:7:58","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":18402,"indexed":false,"mutability":"mutable","name":"user","nameLocation":"1550:4:58","nodeType":"VariableDeclaration","scope":18410,"src":"1542:12:58","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":18401,"name":"address","nodeType":"ElementaryTypeName","src":"1542:7:58","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":18404,"indexed":true,"mutability":"mutable","name":"onBehalfOf","nameLocation":"1576:10:58","nodeType":"VariableDeclaration","scope":18410,"src":"1560:26:58","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":18403,"name":"address","nodeType":"ElementaryTypeName","src":"1560:7:58","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":18406,"indexed":false,"mutability":"mutable","name":"amount","nameLocation":"1600:6:58","nodeType":"VariableDeclaration","scope":18410,"src":"1592:14:58","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":18405,"name":"uint256","nodeType":"ElementaryTypeName","src":"1592:7:58","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":18408,"indexed":true,"mutability":"mutable","name":"referralCode","nameLocation":"1627:12:58","nodeType":"VariableDeclaration","scope":18410,"src":"1612:27:58","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint16","typeString":"uint16"},"typeName":{"id":18407,"name":"uint16","nodeType":"ElementaryTypeName","src":"1612:6:58","typeDescriptions":{"typeIdentifier":"t_uint16","typeString":"uint16"}},"visibility":"internal"}],"src":"1507:136:58"},"src":"1495:149:58"},{"anonymous":false,"documentation":{"id":18411,"nodeType":"StructuredDocumentation","src":"1648:293:58","text":" @dev Emitted on withdraw()\n @param reserve The address of the underlying asset being withdrawn\n @param user The address initiating the withdrawal, owner of aTokens\n @param to The address that will receive the underlying\n @param amount The amount to be withdrawn*"},"eventSelector":"3115d1449a7b732c986cba18244e897a450f61e1bb8d589cd2e69e6c8924f9f7","id":18421,"name":"Withdraw","nameLocation":"1950:8:58","nodeType":"EventDefinition","parameters":{"id":18420,"nodeType":"ParameterList","parameters":[{"constant":false,"id":18413,"indexed":true,"mutability":"mutable","name":"reserve","nameLocation":"1975:7:58","nodeType":"VariableDeclaration","scope":18421,"src":"1959:23:58","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":18412,"name":"address","nodeType":"ElementaryTypeName","src":"1959:7:58","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":18415,"indexed":true,"mutability":"mutable","name":"user","nameLocation":"2000:4:58","nodeType":"VariableDeclaration","scope":18421,"src":"1984:20:58","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":18414,"name":"address","nodeType":"ElementaryTypeName","src":"1984:7:58","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":18417,"indexed":true,"mutability":"mutable","name":"to","nameLocation":"2022:2:58","nodeType":"VariableDeclaration","scope":18421,"src":"2006:18:58","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":18416,"name":"address","nodeType":"ElementaryTypeName","src":"2006:7:58","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":18419,"indexed":false,"mutability":"mutable","name":"amount","nameLocation":"2034:6:58","nodeType":"VariableDeclaration","scope":18421,"src":"2026:14:58","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":18418,"name":"uint256","nodeType":"ElementaryTypeName","src":"2026:7:58","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"1958:83:58"},"src":"1944:98:58"},{"anonymous":false,"documentation":{"id":18422,"nodeType":"StructuredDocumentation","src":"2046:629:58","text":" @dev Emitted on borrow() and flashLoan() when debt needs to be opened\n @param reserve The address of the underlying asset being borrowed\n @param user The address of the user initiating the borrow(), receiving the funds on borrow() or just\n initiator of the transaction on flashLoan()\n @param onBehalfOf The address that will be getting the debt\n @param amount The amount borrowed out\n @param interestRateMode The rate mode: 1 for Stable, 2 for Variable\n @param borrowRate The numeric rate at which the user has borrowed, expressed in ray\n @param referralCode The referral code used*"},"eventSelector":"b3d084820fb1a9decffb176436bd02558d15fac9b0ddfed8c465bc7359d7dce0","id":18439,"name":"Borrow","nameLocation":"2684:6:58","nodeType":"EventDefinition","parameters":{"id":18438,"nodeType":"ParameterList","parameters":[{"constant":false,"id":18424,"indexed":true,"mutability":"mutable","name":"reserve","nameLocation":"2712:7:58","nodeType":"VariableDeclaration","scope":18439,"src":"2696:23:58","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":18423,"name":"address","nodeType":"ElementaryTypeName","src":"2696:7:58","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":18426,"indexed":false,"mutability":"mutable","name":"user","nameLocation":"2733:4:58","nodeType":"VariableDeclaration","scope":18439,"src":"2725:12:58","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":18425,"name":"address","nodeType":"ElementaryTypeName","src":"2725:7:58","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":18428,"indexed":true,"mutability":"mutable","name":"onBehalfOf","nameLocation":"2759:10:58","nodeType":"VariableDeclaration","scope":18439,"src":"2743:26:58","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":18427,"name":"address","nodeType":"ElementaryTypeName","src":"2743:7:58","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":18430,"indexed":false,"mutability":"mutable","name":"amount","nameLocation":"2783:6:58","nodeType":"VariableDeclaration","scope":18439,"src":"2775:14:58","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":18429,"name":"uint256","nodeType":"ElementaryTypeName","src":"2775:7:58","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":18433,"indexed":false,"mutability":"mutable","name":"interestRateMode","nameLocation":"2822:16:58","nodeType":"VariableDeclaration","scope":18439,"src":"2795:43:58","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_enum$_InterestRateMode_$17796","typeString":"enum DataTypes.InterestRateMode"},"typeName":{"id":18432,"nodeType":"UserDefinedTypeName","pathNode":{"id":18431,"name":"DataTypes.InterestRateMode","nameLocations":["2795:9:58","2805:16:58"],"nodeType":"IdentifierPath","referencedDeclaration":17796,"src":"2795:26:58"},"referencedDeclaration":17796,"src":"2795:26:58","typeDescriptions":{"typeIdentifier":"t_enum$_InterestRateMode_$17796","typeString":"enum DataTypes.InterestRateMode"}},"visibility":"internal"},{"constant":false,"id":18435,"indexed":false,"mutability":"mutable","name":"borrowRate","nameLocation":"2852:10:58","nodeType":"VariableDeclaration","scope":18439,"src":"2844:18:58","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":18434,"name":"uint256","nodeType":"ElementaryTypeName","src":"2844:7:58","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":18437,"indexed":true,"mutability":"mutable","name":"referralCode","nameLocation":"2883:12:58","nodeType":"VariableDeclaration","scope":18439,"src":"2868:27:58","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint16","typeString":"uint16"},"typeName":{"id":18436,"name":"uint16","nodeType":"ElementaryTypeName","src":"2868:6:58","typeDescriptions":{"typeIdentifier":"t_uint16","typeString":"uint16"}},"visibility":"internal"}],"src":"2690:209:58"},"src":"2678:222:58"},{"anonymous":false,"documentation":{"id":18440,"nodeType":"StructuredDocumentation","src":"2904:426:58","text":" @dev Emitted on repay()\n @param reserve The address of the underlying asset of the reserve\n @param user The beneficiary of the repayment, getting his debt reduced\n @param repayer The address of the user initiating the repay(), providing the funds\n @param amount The amount repaid\n @param useATokens True if the repayment is done using aTokens, `false` if done with underlying asset directly*"},"eventSelector":"a534c8dbe71f871f9f3530e97a74601fea17b426cae02e1c5aee42c96c784051","id":18452,"name":"Repay","nameLocation":"3339:5:58","nodeType":"EventDefinition","parameters":{"id":18451,"nodeType":"ParameterList","parameters":[{"constant":false,"id":18442,"indexed":true,"mutability":"mutable","name":"reserve","nameLocation":"3366:7:58","nodeType":"VariableDeclaration","scope":18452,"src":"3350:23:58","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":18441,"name":"address","nodeType":"ElementaryTypeName","src":"3350:7:58","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":18444,"indexed":true,"mutability":"mutable","name":"user","nameLocation":"3395:4:58","nodeType":"VariableDeclaration","scope":18452,"src":"3379:20:58","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":18443,"name":"address","nodeType":"ElementaryTypeName","src":"3379:7:58","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":18446,"indexed":true,"mutability":"mutable","name":"repayer","nameLocation":"3421:7:58","nodeType":"VariableDeclaration","scope":18452,"src":"3405:23:58","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":18445,"name":"address","nodeType":"ElementaryTypeName","src":"3405:7:58","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":18448,"indexed":false,"mutability":"mutable","name":"amount","nameLocation":"3442:6:58","nodeType":"VariableDeclaration","scope":18452,"src":"3434:14:58","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":18447,"name":"uint256","nodeType":"ElementaryTypeName","src":"3434:7:58","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":18450,"indexed":false,"mutability":"mutable","name":"useATokens","nameLocation":"3459:10:58","nodeType":"VariableDeclaration","scope":18452,"src":"3454:15:58","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":18449,"name":"bool","nodeType":"ElementaryTypeName","src":"3454:4:58","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"}],"src":"3344:129:58"},"src":"3333:141:58"},{"anonymous":false,"documentation":{"id":18453,"nodeType":"StructuredDocumentation","src":"3478:307:58","text":" @dev Emitted on swapBorrowRateMode()\n @param reserve The address of the underlying asset of the reserve\n @param user The address of the user swapping his rate mode\n @param interestRateMode The current interest rate mode of the position being swapped: 1 for Stable, 2 for Variable*"},"eventSelector":"7962b394d85a534033ba2efcf43cd36de57b7ebeb3de0ca4428965d9b3ddc481","id":18462,"name":"SwapBorrowRateMode","nameLocation":"3794:18:58","nodeType":"EventDefinition","parameters":{"id":18461,"nodeType":"ParameterList","parameters":[{"constant":false,"id":18455,"indexed":true,"mutability":"mutable","name":"reserve","nameLocation":"3834:7:58","nodeType":"VariableDeclaration","scope":18462,"src":"3818:23:58","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":18454,"name":"address","nodeType":"ElementaryTypeName","src":"3818:7:58","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":18457,"indexed":true,"mutability":"mutable","name":"user","nameLocation":"3863:4:58","nodeType":"VariableDeclaration","scope":18462,"src":"3847:20:58","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":18456,"name":"address","nodeType":"ElementaryTypeName","src":"3847:7:58","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":18460,"indexed":false,"mutability":"mutable","name":"interestRateMode","nameLocation":"3900:16:58","nodeType":"VariableDeclaration","scope":18462,"src":"3873:43:58","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_enum$_InterestRateMode_$17796","typeString":"enum DataTypes.InterestRateMode"},"typeName":{"id":18459,"nodeType":"UserDefinedTypeName","pathNode":{"id":18458,"name":"DataTypes.InterestRateMode","nameLocations":["3873:9:58","3883:16:58"],"nodeType":"IdentifierPath","referencedDeclaration":17796,"src":"3873:26:58"},"referencedDeclaration":17796,"src":"3873:26:58","typeDescriptions":{"typeIdentifier":"t_enum$_InterestRateMode_$17796","typeString":"enum DataTypes.InterestRateMode"}},"visibility":"internal"}],"src":"3812:108:58"},"src":"3788:133:58"},{"anonymous":false,"documentation":{"id":18463,"nodeType":"StructuredDocumentation","src":"3925:234:58","text":" @dev Emitted on borrow(), repay() and liquidationCall() when using isolated assets\n @param asset The address of the underlying asset of the reserve\n @param totalDebt The total isolation mode debt for the reserve"},"eventSelector":"aef84d3b40895fd58c561f3998000f0583abb992a52fbdc99ace8e8de4d676a5","id":18469,"name":"IsolationModeTotalDebtUpdated","nameLocation":"4168:29:58","nodeType":"EventDefinition","parameters":{"id":18468,"nodeType":"ParameterList","parameters":[{"constant":false,"id":18465,"indexed":true,"mutability":"mutable","name":"asset","nameLocation":"4214:5:58","nodeType":"VariableDeclaration","scope":18469,"src":"4198:21:58","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":18464,"name":"address","nodeType":"ElementaryTypeName","src":"4198:7:58","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":18467,"indexed":false,"mutability":"mutable","name":"totalDebt","nameLocation":"4229:9:58","nodeType":"VariableDeclaration","scope":18469,"src":"4221:17:58","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":18466,"name":"uint256","nodeType":"ElementaryTypeName","src":"4221:7:58","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"4197:42:58"},"src":"4162:78:58"},{"anonymous":false,"documentation":{"id":18470,"nodeType":"StructuredDocumentation","src":"4244:165:58","text":" @dev Emitted when the user selects a certain asset category for eMode\n @param user The address of the user\n @param categoryId The category id*"},"eventSelector":"d728da875fc88944cbf17638bcbe4af0eedaef63becd1d1c57cc097eb4608d84","id":18476,"name":"UserEModeSet","nameLocation":"4418:12:58","nodeType":"EventDefinition","parameters":{"id":18475,"nodeType":"ParameterList","parameters":[{"constant":false,"id":18472,"indexed":true,"mutability":"mutable","name":"user","nameLocation":"4447:4:58","nodeType":"VariableDeclaration","scope":18476,"src":"4431:20:58","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":18471,"name":"address","nodeType":"ElementaryTypeName","src":"4431:7:58","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":18474,"indexed":false,"mutability":"mutable","name":"categoryId","nameLocation":"4459:10:58","nodeType":"VariableDeclaration","scope":18476,"src":"4453:16:58","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"},"typeName":{"id":18473,"name":"uint8","nodeType":"ElementaryTypeName","src":"4453:5:58","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}},"visibility":"internal"}],"src":"4430:40:58"},"src":"4412:59:58"},{"anonymous":false,"documentation":{"id":18477,"nodeType":"StructuredDocumentation","src":"4475:208:58","text":" @dev Emitted on setUserUseReserveAsCollateral()\n @param reserve The address of the underlying asset of the reserve\n @param user The address of the user enabling the usage as collateral*"},"eventSelector":"00058a56ea94653cdf4f152d227ace22d4c00ad99e2a43f58cb7d9e3feb295f2","id":18483,"name":"ReserveUsedAsCollateralEnabled","nameLocation":"4692:30:58","nodeType":"EventDefinition","parameters":{"id":18482,"nodeType":"ParameterList","parameters":[{"constant":false,"id":18479,"indexed":true,"mutability":"mutable","name":"reserve","nameLocation":"4739:7:58","nodeType":"VariableDeclaration","scope":18483,"src":"4723:23:58","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":18478,"name":"address","nodeType":"ElementaryTypeName","src":"4723:7:58","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":18481,"indexed":true,"mutability":"mutable","name":"user","nameLocation":"4764:4:58","nodeType":"VariableDeclaration","scope":18483,"src":"4748:20:58","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":18480,"name":"address","nodeType":"ElementaryTypeName","src":"4748:7:58","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"4722:47:58"},"src":"4686:84:58"},{"anonymous":false,"documentation":{"id":18484,"nodeType":"StructuredDocumentation","src":"4774:208:58","text":" @dev Emitted on setUserUseReserveAsCollateral()\n @param reserve The address of the underlying asset of the reserve\n @param user The address of the user enabling the usage as collateral*"},"eventSelector":"44c58d81365b66dd4b1a7f36c25aa97b8c71c361ee4937adc1a00000227db5dd","id":18490,"name":"ReserveUsedAsCollateralDisabled","nameLocation":"4991:31:58","nodeType":"EventDefinition","parameters":{"id":18489,"nodeType":"ParameterList","parameters":[{"constant":false,"id":18486,"indexed":true,"mutability":"mutable","name":"reserve","nameLocation":"5039:7:58","nodeType":"VariableDeclaration","scope":18490,"src":"5023:23:58","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":18485,"name":"address","nodeType":"ElementaryTypeName","src":"5023:7:58","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":18488,"indexed":true,"mutability":"mutable","name":"user","nameLocation":"5064:4:58","nodeType":"VariableDeclaration","scope":18490,"src":"5048:20:58","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":18487,"name":"address","nodeType":"ElementaryTypeName","src":"5048:7:58","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"5022:47:58"},"src":"4985:85:58"},{"anonymous":false,"documentation":{"id":18491,"nodeType":"StructuredDocumentation","src":"5074:213:58","text":" @dev Emitted on rebalanceStableBorrowRate()\n @param reserve The address of the underlying asset of the reserve\n @param user The address of the user for which the rebalance has been executed*"},"eventSelector":"9f439ae0c81e41a04d3fdfe07aed54e6a179fb0db15be7702eb66fa8ef6f5300","id":18497,"name":"RebalanceStableBorrowRate","nameLocation":"5296:25:58","nodeType":"EventDefinition","parameters":{"id":18496,"nodeType":"ParameterList","parameters":[{"constant":false,"id":18493,"indexed":true,"mutability":"mutable","name":"reserve","nameLocation":"5338:7:58","nodeType":"VariableDeclaration","scope":18497,"src":"5322:23:58","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":18492,"name":"address","nodeType":"ElementaryTypeName","src":"5322:7:58","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":18495,"indexed":true,"mutability":"mutable","name":"user","nameLocation":"5363:4:58","nodeType":"VariableDeclaration","scope":18497,"src":"5347:20:58","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":18494,"name":"address","nodeType":"ElementaryTypeName","src":"5347:7:58","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"5321:47:58"},"src":"5290:79:58"},{"anonymous":false,"documentation":{"id":18498,"nodeType":"StructuredDocumentation","src":"5373:483:58","text":" @dev Emitted on flashLoan()\n @param target The address of the flash loan receiver contract\n @param initiator The address initiating the flash loan\n @param asset The address of the asset being flash borrowed\n @param amount The amount flash borrowed\n @param interestRateMode The flashloan mode: 0 for regular flashloan, 1 for Stable debt, 2 for Variable debt\n @param premium The fee flash borrowed\n @param referralCode The referral code used*"},"eventSelector":"efefaba5e921573100900a3ad9cf29f222d995fb3b6045797eaea7521bd8d6f0","id":18515,"name":"FlashLoan","nameLocation":"5865:9:58","nodeType":"EventDefinition","parameters":{"id":18514,"nodeType":"ParameterList","parameters":[{"constant":false,"id":18500,"indexed":true,"mutability":"mutable","name":"target","nameLocation":"5896:6:58","nodeType":"VariableDeclaration","scope":18515,"src":"5880:22:58","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":18499,"name":"address","nodeType":"ElementaryTypeName","src":"5880:7:58","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":18502,"indexed":false,"mutability":"mutable","name":"initiator","nameLocation":"5916:9:58","nodeType":"VariableDeclaration","scope":18515,"src":"5908:17:58","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":18501,"name":"address","nodeType":"ElementaryTypeName","src":"5908:7:58","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":18504,"indexed":true,"mutability":"mutable","name":"asset","nameLocation":"5947:5:58","nodeType":"VariableDeclaration","scope":18515,"src":"5931:21:58","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":18503,"name":"address","nodeType":"ElementaryTypeName","src":"5931:7:58","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":18506,"indexed":false,"mutability":"mutable","name":"amount","nameLocation":"5966:6:58","nodeType":"VariableDeclaration","scope":18515,"src":"5958:14:58","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":18505,"name":"uint256","nodeType":"ElementaryTypeName","src":"5958:7:58","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":18509,"indexed":false,"mutability":"mutable","name":"interestRateMode","nameLocation":"6005:16:58","nodeType":"VariableDeclaration","scope":18515,"src":"5978:43:58","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_enum$_InterestRateMode_$17796","typeString":"enum DataTypes.InterestRateMode"},"typeName":{"id":18508,"nodeType":"UserDefinedTypeName","pathNode":{"id":18507,"name":"DataTypes.InterestRateMode","nameLocations":["5978:9:58","5988:16:58"],"nodeType":"IdentifierPath","referencedDeclaration":17796,"src":"5978:26:58"},"referencedDeclaration":17796,"src":"5978:26:58","typeDescriptions":{"typeIdentifier":"t_enum$_InterestRateMode_$17796","typeString":"enum DataTypes.InterestRateMode"}},"visibility":"internal"},{"constant":false,"id":18511,"indexed":false,"mutability":"mutable","name":"premium","nameLocation":"6035:7:58","nodeType":"VariableDeclaration","scope":18515,"src":"6027:15:58","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":18510,"name":"uint256","nodeType":"ElementaryTypeName","src":"6027:7:58","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":18513,"indexed":true,"mutability":"mutable","name":"referralCode","nameLocation":"6063:12:58","nodeType":"VariableDeclaration","scope":18515,"src":"6048:27:58","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint16","typeString":"uint16"},"typeName":{"id":18512,"name":"uint16","nodeType":"ElementaryTypeName","src":"6048:6:58","typeDescriptions":{"typeIdentifier":"t_uint16","typeString":"uint16"}},"visibility":"internal"}],"src":"5874:205:58"},"src":"5859:221:58"},{"anonymous":false,"documentation":{"id":18516,"nodeType":"StructuredDocumentation","src":"6084:750:58","text":" @dev Emitted when a borrower is liquidated.\n @param collateralAsset The address of the underlying asset used as collateral, to receive as result of the liquidation\n @param debtAsset The address of the underlying borrowed asset to be repaid with the liquidation\n @param user The address of the borrower getting liquidated\n @param debtToCover The debt amount of borrowed `asset` the liquidator wants to cover\n @param liquidatedCollateralAmount The amount of collateral received by the liquidator\n @param liquidator The address of the liquidator\n @param receiveAToken True if the liquidators wants to receive the collateral aTokens, `false` if he wants\n to receive the underlying collateral asset directly*"},"eventSelector":"e413a321e8681d831f4dbccbca790d2952b56f977908e45be37335533e005286","id":18532,"name":"LiquidationCall","nameLocation":"6843:15:58","nodeType":"EventDefinition","parameters":{"id":18531,"nodeType":"ParameterList","parameters":[{"constant":false,"id":18518,"indexed":true,"mutability":"mutable","name":"collateralAsset","nameLocation":"6880:15:58","nodeType":"VariableDeclaration","scope":18532,"src":"6864:31:58","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":18517,"name":"address","nodeType":"ElementaryTypeName","src":"6864:7:58","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":18520,"indexed":true,"mutability":"mutable","name":"debtAsset","nameLocation":"6917:9:58","nodeType":"VariableDeclaration","scope":18532,"src":"6901:25:58","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":18519,"name":"address","nodeType":"ElementaryTypeName","src":"6901:7:58","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":18522,"indexed":true,"mutability":"mutable","name":"user","nameLocation":"6948:4:58","nodeType":"VariableDeclaration","scope":18532,"src":"6932:20:58","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":18521,"name":"address","nodeType":"ElementaryTypeName","src":"6932:7:58","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":18524,"indexed":false,"mutability":"mutable","name":"debtToCover","nameLocation":"6966:11:58","nodeType":"VariableDeclaration","scope":18532,"src":"6958:19:58","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":18523,"name":"uint256","nodeType":"ElementaryTypeName","src":"6958:7:58","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":18526,"indexed":false,"mutability":"mutable","name":"liquidatedCollateralAmount","nameLocation":"6991:26:58","nodeType":"VariableDeclaration","scope":18532,"src":"6983:34:58","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":18525,"name":"uint256","nodeType":"ElementaryTypeName","src":"6983:7:58","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":18528,"indexed":false,"mutability":"mutable","name":"liquidator","nameLocation":"7031:10:58","nodeType":"VariableDeclaration","scope":18532,"src":"7023:18:58","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":18527,"name":"address","nodeType":"ElementaryTypeName","src":"7023:7:58","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":18530,"indexed":false,"mutability":"mutable","name":"receiveAToken","nameLocation":"7052:13:58","nodeType":"VariableDeclaration","scope":18532,"src":"7047:18:58","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":18529,"name":"bool","nodeType":"ElementaryTypeName","src":"7047:4:58","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"}],"src":"6858:211:58"},"src":"6837:233:58"},{"anonymous":false,"documentation":{"id":18533,"nodeType":"StructuredDocumentation","src":"7074:422:58","text":" @dev Emitted when the state of a reserve is updated.\n @param reserve The address of the underlying asset of the reserve\n @param liquidityRate The next liquidity rate\n @param stableBorrowRate The next stable borrow rate\n @param variableBorrowRate The next variable borrow rate\n @param liquidityIndex The next liquidity index\n @param variableBorrowIndex The next variable borrow index*"},"eventSelector":"804c9b842b2748a22bb64b345453a3de7ca54a6ca45ce00d415894979e22897a","id":18547,"name":"ReserveDataUpdated","nameLocation":"7505:18:58","nodeType":"EventDefinition","parameters":{"id":18546,"nodeType":"ParameterList","parameters":[{"constant":false,"id":18535,"indexed":true,"mutability":"mutable","name":"reserve","nameLocation":"7545:7:58","nodeType":"VariableDeclaration","scope":18547,"src":"7529:23:58","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":18534,"name":"address","nodeType":"ElementaryTypeName","src":"7529:7:58","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":18537,"indexed":false,"mutability":"mutable","name":"liquidityRate","nameLocation":"7566:13:58","nodeType":"VariableDeclaration","scope":18547,"src":"7558:21:58","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":18536,"name":"uint256","nodeType":"ElementaryTypeName","src":"7558:7:58","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":18539,"indexed":false,"mutability":"mutable","name":"stableBorrowRate","nameLocation":"7593:16:58","nodeType":"VariableDeclaration","scope":18547,"src":"7585:24:58","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":18538,"name":"uint256","nodeType":"ElementaryTypeName","src":"7585:7:58","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":18541,"indexed":false,"mutability":"mutable","name":"variableBorrowRate","nameLocation":"7623:18:58","nodeType":"VariableDeclaration","scope":18547,"src":"7615:26:58","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":18540,"name":"uint256","nodeType":"ElementaryTypeName","src":"7615:7:58","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":18543,"indexed":false,"mutability":"mutable","name":"liquidityIndex","nameLocation":"7655:14:58","nodeType":"VariableDeclaration","scope":18547,"src":"7647:22:58","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":18542,"name":"uint256","nodeType":"ElementaryTypeName","src":"7647:7:58","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":18545,"indexed":false,"mutability":"mutable","name":"variableBorrowIndex","nameLocation":"7683:19:58","nodeType":"VariableDeclaration","scope":18547,"src":"7675:27:58","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":18544,"name":"uint256","nodeType":"ElementaryTypeName","src":"7675:7:58","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"7523:183:58"},"src":"7499:208:58"},{"anonymous":false,"documentation":{"id":18548,"nodeType":"StructuredDocumentation","src":"7711:212:58","text":" @dev Emitted when the protocol treasury receives minted aTokens from the accrued interest.\n @param reserve The address of the reserve\n @param amountMinted The amount minted to the treasury*"},"eventSelector":"bfa21aa5d5f9a1f0120a95e7c0749f389863cbdbfff531aa7339077a5bc919de","id":18554,"name":"MintedToTreasury","nameLocation":"7932:16:58","nodeType":"EventDefinition","parameters":{"id":18553,"nodeType":"ParameterList","parameters":[{"constant":false,"id":18550,"indexed":true,"mutability":"mutable","name":"reserve","nameLocation":"7965:7:58","nodeType":"VariableDeclaration","scope":18554,"src":"7949:23:58","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":18549,"name":"address","nodeType":"ElementaryTypeName","src":"7949:7:58","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":18552,"indexed":false,"mutability":"mutable","name":"amountMinted","nameLocation":"7982:12:58","nodeType":"VariableDeclaration","scope":18554,"src":"7974:20:58","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":18551,"name":"uint256","nodeType":"ElementaryTypeName","src":"7974:7:58","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"7948:47:58"},"src":"7926:70:58"},{"documentation":{"id":18555,"nodeType":"StructuredDocumentation","src":"8000:426:58","text":" @dev Mints an `amount` of aTokens to the `onBehalfOf`\n @param asset The address of the underlying asset to mint\n @param amount The amount to mint\n @param onBehalfOf The address that will receive the aTokens\n @param referralCode Code used to register the integrator originating the operation, for potential rewards.\n   0 if the action is executed directly by the user, without any middle-man*"},"functionSelector":"69a933a5","id":18566,"implemented":false,"kind":"function","modifiers":[],"name":"mintUnbacked","nameLocation":"8438:12:58","nodeType":"FunctionDefinition","parameters":{"id":18564,"nodeType":"ParameterList","parameters":[{"constant":false,"id":18557,"mutability":"mutable","name":"asset","nameLocation":"8464:5:58","nodeType":"VariableDeclaration","scope":18566,"src":"8456:13:58","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":18556,"name":"address","nodeType":"ElementaryTypeName","src":"8456:7:58","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":18559,"mutability":"mutable","name":"amount","nameLocation":"8483:6:58","nodeType":"VariableDeclaration","scope":18566,"src":"8475:14:58","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":18558,"name":"uint256","nodeType":"ElementaryTypeName","src":"8475:7:58","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":18561,"mutability":"mutable","name":"onBehalfOf","nameLocation":"8503:10:58","nodeType":"VariableDeclaration","scope":18566,"src":"8495:18:58","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":18560,"name":"address","nodeType":"ElementaryTypeName","src":"8495:7:58","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":18563,"mutability":"mutable","name":"referralCode","nameLocation":"8526:12:58","nodeType":"VariableDeclaration","scope":18566,"src":"8519:19:58","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint16","typeString":"uint16"},"typeName":{"id":18562,"name":"uint16","nodeType":"ElementaryTypeName","src":"8519:6:58","typeDescriptions":{"typeIdentifier":"t_uint16","typeString":"uint16"}},"visibility":"internal"}],"src":"8450:92:58"},"returnParameters":{"id":18565,"nodeType":"ParameterList","parameters":[],"src":"8551:0:58"},"scope":19003,"src":"8429:123:58","stateMutability":"nonpayable","virtual":false,"visibility":"external"},{"documentation":{"id":18567,"nodeType":"StructuredDocumentation","src":"8556:226:58","text":" @dev Back the current unbacked underlying with `amount` and pay `fee`.\n @param asset The address of the underlying asset to back\n @param amount The amount to back\n @param fee The amount paid in fees*"},"functionSelector":"d65dc7a1","id":18576,"implemented":false,"kind":"function","modifiers":[],"name":"backUnbacked","nameLocation":"8794:12:58","nodeType":"FunctionDefinition","parameters":{"id":18574,"nodeType":"ParameterList","parameters":[{"constant":false,"id":18569,"mutability":"mutable","name":"asset","nameLocation":"8820:5:58","nodeType":"VariableDeclaration","scope":18576,"src":"8812:13:58","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":18568,"name":"address","nodeType":"ElementaryTypeName","src":"8812:7:58","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":18571,"mutability":"mutable","name":"amount","nameLocation":"8839:6:58","nodeType":"VariableDeclaration","scope":18576,"src":"8831:14:58","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":18570,"name":"uint256","nodeType":"ElementaryTypeName","src":"8831:7:58","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":18573,"mutability":"mutable","name":"fee","nameLocation":"8859:3:58","nodeType":"VariableDeclaration","scope":18576,"src":"8851:11:58","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":18572,"name":"uint256","nodeType":"ElementaryTypeName","src":"8851:7:58","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"8806:60:58"},"returnParameters":{"id":18575,"nodeType":"ParameterList","parameters":[],"src":"8875:0:58"},"scope":19003,"src":"8785:91:58","stateMutability":"nonpayable","virtual":false,"visibility":"external"},{"documentation":{"id":18577,"nodeType":"StructuredDocumentation","src":"8880:713:58","text":" @notice Supplies an `amount` of underlying asset into the reserve, receiving in return overlying aTokens.\n - E.g. User supplies 100 USDC and gets in return 100 aUSDC\n @param asset The address of the underlying asset to supply\n @param amount The amount to be supplied\n @param onBehalfOf The address that will receive the aTokens, same as msg.sender if the user\n   wants to receive them on his own wallet, or a different address if the beneficiary of aTokens\n   is a different wallet\n @param referralCode Code used to register the integrator originating the operation, for potential rewards.\n   0 if the action is executed directly by the user, without any middle-man*"},"functionSelector":"617ba037","id":18588,"implemented":false,"kind":"function","modifiers":[],"name":"supply","nameLocation":"9605:6:58","nodeType":"FunctionDefinition","parameters":{"id":18586,"nodeType":"ParameterList","parameters":[{"constant":false,"id":18579,"mutability":"mutable","name":"asset","nameLocation":"9625:5:58","nodeType":"VariableDeclaration","scope":18588,"src":"9617:13:58","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":18578,"name":"address","nodeType":"ElementaryTypeName","src":"9617:7:58","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":18581,"mutability":"mutable","name":"amount","nameLocation":"9644:6:58","nodeType":"VariableDeclaration","scope":18588,"src":"9636:14:58","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":18580,"name":"uint256","nodeType":"ElementaryTypeName","src":"9636:7:58","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":18583,"mutability":"mutable","name":"onBehalfOf","nameLocation":"9664:10:58","nodeType":"VariableDeclaration","scope":18588,"src":"9656:18:58","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":18582,"name":"address","nodeType":"ElementaryTypeName","src":"9656:7:58","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":18585,"mutability":"mutable","name":"referralCode","nameLocation":"9687:12:58","nodeType":"VariableDeclaration","scope":18588,"src":"9680:19:58","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint16","typeString":"uint16"},"typeName":{"id":18584,"name":"uint16","nodeType":"ElementaryTypeName","src":"9680:6:58","typeDescriptions":{"typeIdentifier":"t_uint16","typeString":"uint16"}},"visibility":"internal"}],"src":"9611:92:58"},"returnParameters":{"id":18587,"nodeType":"ParameterList","parameters":[],"src":"9712:0:58"},"scope":19003,"src":"9596:117:58","stateMutability":"nonpayable","virtual":false,"visibility":"external"},{"documentation":{"id":18589,"nodeType":"StructuredDocumentation","src":"9717:963:58","text":" @notice Supply with transfer approval of asset to be supplied done via permit function\n see: https://eips.ethereum.org/EIPS/eip-2612 and https://eips.ethereum.org/EIPS/eip-713\n @param asset The address of the underlying asset to supply\n @param amount The amount to be supplied\n @param onBehalfOf The address that will receive the aTokens, same as msg.sender if the user\n   wants to receive them on his own wallet, or a different address if the beneficiary of aTokens\n   is a different wallet\n @param deadline The deadline timestamp that the permit is valid\n @param referralCode Code used to register the integrator originating the operation, for potential rewards.\n   0 if the action is executed directly by the user, without any middle-man\n @param permitV The V parameter of ERC712 permit sig\n @param permitR The R parameter of ERC712 permit sig\n @param permitS The S parameter of ERC712 permit sig*"},"functionSelector":"02c205f0","id":18608,"implemented":false,"kind":"function","modifiers":[],"name":"supplyWithPermit","nameLocation":"10692:16:58","nodeType":"FunctionDefinition","parameters":{"id":18606,"nodeType":"ParameterList","parameters":[{"constant":false,"id":18591,"mutability":"mutable","name":"asset","nameLocation":"10722:5:58","nodeType":"VariableDeclaration","scope":18608,"src":"10714:13:58","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":18590,"name":"address","nodeType":"ElementaryTypeName","src":"10714:7:58","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":18593,"mutability":"mutable","name":"amount","nameLocation":"10741:6:58","nodeType":"VariableDeclaration","scope":18608,"src":"10733:14:58","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":18592,"name":"uint256","nodeType":"ElementaryTypeName","src":"10733:7:58","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":18595,"mutability":"mutable","name":"onBehalfOf","nameLocation":"10761:10:58","nodeType":"VariableDeclaration","scope":18608,"src":"10753:18:58","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":18594,"name":"address","nodeType":"ElementaryTypeName","src":"10753:7:58","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":18597,"mutability":"mutable","name":"referralCode","nameLocation":"10784:12:58","nodeType":"VariableDeclaration","scope":18608,"src":"10777:19:58","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint16","typeString":"uint16"},"typeName":{"id":18596,"name":"uint16","nodeType":"ElementaryTypeName","src":"10777:6:58","typeDescriptions":{"typeIdentifier":"t_uint16","typeString":"uint16"}},"visibility":"internal"},{"constant":false,"id":18599,"mutability":"mutable","name":"deadline","nameLocation":"10810:8:58","nodeType":"VariableDeclaration","scope":18608,"src":"10802:16:58","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":18598,"name":"uint256","nodeType":"ElementaryTypeName","src":"10802:7:58","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":18601,"mutability":"mutable","name":"permitV","nameLocation":"10830:7:58","nodeType":"VariableDeclaration","scope":18608,"src":"10824:13:58","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"},"typeName":{"id":18600,"name":"uint8","nodeType":"ElementaryTypeName","src":"10824:5:58","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}},"visibility":"internal"},{"constant":false,"id":18603,"mutability":"mutable","name":"permitR","nameLocation":"10851:7:58","nodeType":"VariableDeclaration","scope":18608,"src":"10843:15:58","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":18602,"name":"bytes32","nodeType":"ElementaryTypeName","src":"10843:7:58","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"},{"constant":false,"id":18605,"mutability":"mutable","name":"permitS","nameLocation":"10872:7:58","nodeType":"VariableDeclaration","scope":18608,"src":"10864:15:58","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":18604,"name":"bytes32","nodeType":"ElementaryTypeName","src":"10864:7:58","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"}],"src":"10708:175:58"},"returnParameters":{"id":18607,"nodeType":"ParameterList","parameters":[],"src":"10892:0:58"},"scope":19003,"src":"10683:210:58","stateMutability":"nonpayable","virtual":false,"visibility":"external"},{"documentation":{"id":18609,"nodeType":"StructuredDocumentation","src":"10897:672:58","text":" @notice Withdraws an `amount` of underlying asset from the reserve, burning the equivalent aTokens owned\n E.g. User has 100 aUSDC, calls withdraw() and receives 100 USDC, burning the 100 aUSDC\n @param asset The address of the underlying asset to withdraw\n @param amount The underlying amount to be withdrawn\n   - Send the value type(uint256).max in order to withdraw the whole aToken balance\n @param to The address that will receive the underlying, same as msg.sender if the user\n   wants to receive it on his own wallet, or a different address if the beneficiary is a\n   different wallet\n @return The final amount withdrawn*"},"functionSelector":"69328dec","id":18620,"implemented":false,"kind":"function","modifiers":[],"name":"withdraw","nameLocation":"11581:8:58","nodeType":"FunctionDefinition","parameters":{"id":18616,"nodeType":"ParameterList","parameters":[{"constant":false,"id":18611,"mutability":"mutable","name":"asset","nameLocation":"11603:5:58","nodeType":"VariableDeclaration","scope":18620,"src":"11595:13:58","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":18610,"name":"address","nodeType":"ElementaryTypeName","src":"11595:7:58","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":18613,"mutability":"mutable","name":"amount","nameLocation":"11622:6:58","nodeType":"VariableDeclaration","scope":18620,"src":"11614:14:58","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":18612,"name":"uint256","nodeType":"ElementaryTypeName","src":"11614:7:58","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":18615,"mutability":"mutable","name":"to","nameLocation":"11642:2:58","nodeType":"VariableDeclaration","scope":18620,"src":"11634:10:58","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":18614,"name":"address","nodeType":"ElementaryTypeName","src":"11634:7:58","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"11589:59:58"},"returnParameters":{"id":18619,"nodeType":"ParameterList","parameters":[{"constant":false,"id":18618,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":18620,"src":"11667:7:58","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":18617,"name":"uint256","nodeType":"ElementaryTypeName","src":"11667:7:58","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"11666:9:58"},"scope":19003,"src":"11572:104:58","stateMutability":"nonpayable","virtual":false,"visibility":"external"},{"documentation":{"id":18621,"nodeType":"StructuredDocumentation","src":"11680:1199:58","text":" @notice Allows users to borrow a specific `amount` of the reserve underlying asset, provided that the borrower\n already supplied enough collateral, or he was given enough allowance by a credit delegator on the\n corresponding debt token (StableDebtToken or VariableDebtToken)\n - E.g. User borrows 100 USDC passing as `onBehalfOf` his own address, receiving the 100 USDC in his wallet\n   and 100 stable/variable debt tokens, depending on the `interestRateMode`\n @param asset The address of the underlying asset to borrow\n @param amount The amount to be borrowed\n @param interestRateMode The interest rate mode at which the user wants to borrow: 1 for Stable, 2 for Variable\n @param referralCode The code used to register the integrator originating the operation, for potential rewards.\n   0 if the action is executed directly by the user, without any middle-man\n @param onBehalfOf The address of the user who will receive the debt. Should be the address of the borrower itself\n calling the function if he wants to borrow against his own collateral, or the address of the credit delegator\n if he has been given credit delegation allowance*"},"functionSelector":"a415bcad","id":18634,"implemented":false,"kind":"function","modifiers":[],"name":"borrow","nameLocation":"12891:6:58","nodeType":"FunctionDefinition","parameters":{"id":18632,"nodeType":"ParameterList","parameters":[{"constant":false,"id":18623,"mutability":"mutable","name":"asset","nameLocation":"12911:5:58","nodeType":"VariableDeclaration","scope":18634,"src":"12903:13:58","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":18622,"name":"address","nodeType":"ElementaryTypeName","src":"12903:7:58","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":18625,"mutability":"mutable","name":"amount","nameLocation":"12930:6:58","nodeType":"VariableDeclaration","scope":18634,"src":"12922:14:58","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":18624,"name":"uint256","nodeType":"ElementaryTypeName","src":"12922:7:58","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":18627,"mutability":"mutable","name":"interestRateMode","nameLocation":"12950:16:58","nodeType":"VariableDeclaration","scope":18634,"src":"12942:24:58","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":18626,"name":"uint256","nodeType":"ElementaryTypeName","src":"12942:7:58","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":18629,"mutability":"mutable","name":"referralCode","nameLocation":"12979:12:58","nodeType":"VariableDeclaration","scope":18634,"src":"12972:19:58","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint16","typeString":"uint16"},"typeName":{"id":18628,"name":"uint16","nodeType":"ElementaryTypeName","src":"12972:6:58","typeDescriptions":{"typeIdentifier":"t_uint16","typeString":"uint16"}},"visibility":"internal"},{"constant":false,"id":18631,"mutability":"mutable","name":"onBehalfOf","nameLocation":"13005:10:58","nodeType":"VariableDeclaration","scope":18634,"src":"12997:18:58","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":18630,"name":"address","nodeType":"ElementaryTypeName","src":"12997:7:58","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"12897:122:58"},"returnParameters":{"id":18633,"nodeType":"ParameterList","parameters":[],"src":"13028:0:58"},"scope":19003,"src":"12882:147:58","stateMutability":"nonpayable","virtual":false,"visibility":"external"},{"documentation":{"id":18635,"nodeType":"StructuredDocumentation","src":"13033:874:58","text":" @notice Repays a borrowed `amount` on a specific reserve, burning the equivalent debt tokens owned\n - E.g. User repays 100 USDC, burning 100 variable/stable debt tokens of the `onBehalfOf` address\n @param asset The address of the borrowed underlying asset previously borrowed\n @param amount The amount to repay\n - Send the value type(uint256).max in order to repay the whole debt for `asset` on the specific `debtMode`\n @param interestRateMode The interest rate mode at of the debt the user wants to repay: 1 for Stable, 2 for Variable\n @param onBehalfOf The address of the user who will get his debt reduced/removed. Should be the address of the\n user calling the function if he wants to reduce/remove his own debt, or the address of any other\n other borrower whose debt should be removed\n @return The final amount repaid*"},"functionSelector":"573ade81","id":18648,"implemented":false,"kind":"function","modifiers":[],"name":"repay","nameLocation":"13919:5:58","nodeType":"FunctionDefinition","parameters":{"id":18644,"nodeType":"ParameterList","parameters":[{"constant":false,"id":18637,"mutability":"mutable","name":"asset","nameLocation":"13938:5:58","nodeType":"VariableDeclaration","scope":18648,"src":"13930:13:58","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":18636,"name":"address","nodeType":"ElementaryTypeName","src":"13930:7:58","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":18639,"mutability":"mutable","name":"amount","nameLocation":"13957:6:58","nodeType":"VariableDeclaration","scope":18648,"src":"13949:14:58","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":18638,"name":"uint256","nodeType":"ElementaryTypeName","src":"13949:7:58","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":18641,"mutability":"mutable","name":"interestRateMode","nameLocation":"13977:16:58","nodeType":"VariableDeclaration","scope":18648,"src":"13969:24:58","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":18640,"name":"uint256","nodeType":"ElementaryTypeName","src":"13969:7:58","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":18643,"mutability":"mutable","name":"onBehalfOf","nameLocation":"14007:10:58","nodeType":"VariableDeclaration","scope":18648,"src":"13999:18:58","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":18642,"name":"address","nodeType":"ElementaryTypeName","src":"13999:7:58","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"13924:97:58"},"returnParameters":{"id":18647,"nodeType":"ParameterList","parameters":[{"constant":false,"id":18646,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":18648,"src":"14040:7:58","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":18645,"name":"uint256","nodeType":"ElementaryTypeName","src":"14040:7:58","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"14039:9:58"},"scope":19003,"src":"13910:139:58","stateMutability":"nonpayable","virtual":false,"visibility":"external"},{"documentation":{"id":18649,"nodeType":"StructuredDocumentation","src":"14053:1086:58","text":" @notice Repay with transfer approval of asset to be repaid done via permit function\n see: https://eips.ethereum.org/EIPS/eip-2612 and https://eips.ethereum.org/EIPS/eip-713\n @param asset The address of the borrowed underlying asset previously borrowed\n @param amount The amount to repay\n - Send the value type(uint256).max in order to repay the whole debt for `asset` on the specific `debtMode`\n @param interestRateMode The interest rate mode at of the debt the user wants to repay: 1 for Stable, 2 for Variable\n @param onBehalfOf Address of the user who will get his debt reduced/removed. Should be the address of the\n user calling the function if he wants to reduce/remove his own debt, or the address of any other\n other borrower whose debt should be removed\n @param deadline The deadline timestamp that the permit is valid\n @param permitV The V parameter of ERC712 permit sig\n @param permitR The R parameter of ERC712 permit sig\n @param permitS The S parameter of ERC712 permit sig\n @return The final amount repaid*"},"functionSelector":"ee3e210b","id":18670,"implemented":false,"kind":"function","modifiers":[],"name":"repayWithPermit","nameLocation":"15151:15:58","nodeType":"FunctionDefinition","parameters":{"id":18666,"nodeType":"ParameterList","parameters":[{"constant":false,"id":18651,"mutability":"mutable","name":"asset","nameLocation":"15180:5:58","nodeType":"VariableDeclaration","scope":18670,"src":"15172:13:58","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":18650,"name":"address","nodeType":"ElementaryTypeName","src":"15172:7:58","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":18653,"mutability":"mutable","name":"amount","nameLocation":"15199:6:58","nodeType":"VariableDeclaration","scope":18670,"src":"15191:14:58","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":18652,"name":"uint256","nodeType":"ElementaryTypeName","src":"15191:7:58","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":18655,"mutability":"mutable","name":"interestRateMode","nameLocation":"15219:16:58","nodeType":"VariableDeclaration","scope":18670,"src":"15211:24:58","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":18654,"name":"uint256","nodeType":"ElementaryTypeName","src":"15211:7:58","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":18657,"mutability":"mutable","name":"onBehalfOf","nameLocation":"15249:10:58","nodeType":"VariableDeclaration","scope":18670,"src":"15241:18:58","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":18656,"name":"address","nodeType":"ElementaryTypeName","src":"15241:7:58","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":18659,"mutability":"mutable","name":"deadline","nameLocation":"15273:8:58","nodeType":"VariableDeclaration","scope":18670,"src":"15265:16:58","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":18658,"name":"uint256","nodeType":"ElementaryTypeName","src":"15265:7:58","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":18661,"mutability":"mutable","name":"permitV","nameLocation":"15293:7:58","nodeType":"VariableDeclaration","scope":18670,"src":"15287:13:58","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"},"typeName":{"id":18660,"name":"uint8","nodeType":"ElementaryTypeName","src":"15287:5:58","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}},"visibility":"internal"},{"constant":false,"id":18663,"mutability":"mutable","name":"permitR","nameLocation":"15314:7:58","nodeType":"VariableDeclaration","scope":18670,"src":"15306:15:58","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":18662,"name":"bytes32","nodeType":"ElementaryTypeName","src":"15306:7:58","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"},{"constant":false,"id":18665,"mutability":"mutable","name":"permitS","nameLocation":"15335:7:58","nodeType":"VariableDeclaration","scope":18670,"src":"15327:15:58","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":18664,"name":"bytes32","nodeType":"ElementaryTypeName","src":"15327:7:58","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"}],"src":"15166:180:58"},"returnParameters":{"id":18669,"nodeType":"ParameterList","parameters":[{"constant":false,"id":18668,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":18670,"src":"15365:7:58","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":18667,"name":"uint256","nodeType":"ElementaryTypeName","src":"15365:7:58","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"15364:9:58"},"scope":19003,"src":"15142:232:58","stateMutability":"nonpayable","virtual":false,"visibility":"external"},{"documentation":{"id":18671,"nodeType":"StructuredDocumentation","src":"15378:780:58","text":" @notice Repays a borrowed `amount` on a specific reserve using the reserve aTokens, burning the\n equivalent debt tokens\n - E.g. User repays 100 USDC using 100 aUSDC, burning 100 variable/stable debt tokens\n @dev  Passing uint256.max as amount will clean up any residual aToken dust balance, if the user aToken\n balance is not enough to cover the whole debt\n @param asset The address of the borrowed underlying asset previously borrowed\n @param amount The amount to repay\n - Send the value type(uint256).max in order to repay the whole debt for `asset` on the specific `debtMode`\n @param interestRateMode The interest rate mode at of the debt the user wants to repay: 1 for Stable, 2 for Variable\n @return The final amount repaid*"},"functionSelector":"2dad97d4","id":18682,"implemented":false,"kind":"function","modifiers":[],"name":"repayWithATokens","nameLocation":"16170:16:58","nodeType":"FunctionDefinition","parameters":{"id":18678,"nodeType":"ParameterList","parameters":[{"constant":false,"id":18673,"mutability":"mutable","name":"asset","nameLocation":"16200:5:58","nodeType":"VariableDeclaration","scope":18682,"src":"16192:13:58","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":18672,"name":"address","nodeType":"ElementaryTypeName","src":"16192:7:58","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":18675,"mutability":"mutable","name":"amount","nameLocation":"16219:6:58","nodeType":"VariableDeclaration","scope":18682,"src":"16211:14:58","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":18674,"name":"uint256","nodeType":"ElementaryTypeName","src":"16211:7:58","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":18677,"mutability":"mutable","name":"interestRateMode","nameLocation":"16239:16:58","nodeType":"VariableDeclaration","scope":18682,"src":"16231:24:58","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":18676,"name":"uint256","nodeType":"ElementaryTypeName","src":"16231:7:58","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"16186:73:58"},"returnParameters":{"id":18681,"nodeType":"ParameterList","parameters":[{"constant":false,"id":18680,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":18682,"src":"16278:7:58","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":18679,"name":"uint256","nodeType":"ElementaryTypeName","src":"16278:7:58","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"16277:9:58"},"scope":19003,"src":"16161:126:58","stateMutability":"nonpayable","virtual":false,"visibility":"external"},{"documentation":{"id":18683,"nodeType":"StructuredDocumentation","src":"16291:289:58","text":" @notice Allows a borrower to swap his debt between stable and variable mode, or vice versa\n @param asset The address of the underlying asset borrowed\n @param interestRateMode The current interest rate mode of the position being swapped: 1 for Stable, 2 for Variable*"},"functionSelector":"94ba89a2","id":18690,"implemented":false,"kind":"function","modifiers":[],"name":"swapBorrowRateMode","nameLocation":"16592:18:58","nodeType":"FunctionDefinition","parameters":{"id":18688,"nodeType":"ParameterList","parameters":[{"constant":false,"id":18685,"mutability":"mutable","name":"asset","nameLocation":"16619:5:58","nodeType":"VariableDeclaration","scope":18690,"src":"16611:13:58","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":18684,"name":"address","nodeType":"ElementaryTypeName","src":"16611:7:58","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":18687,"mutability":"mutable","name":"interestRateMode","nameLocation":"16634:16:58","nodeType":"VariableDeclaration","scope":18690,"src":"16626:24:58","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":18686,"name":"uint256","nodeType":"ElementaryTypeName","src":"16626:7:58","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"16610:41:58"},"returnParameters":{"id":18689,"nodeType":"ParameterList","parameters":[],"src":"16660:0:58"},"scope":19003,"src":"16583:78:58","stateMutability":"nonpayable","virtual":false,"visibility":"external"},{"documentation":{"id":18691,"nodeType":"StructuredDocumentation","src":"16665:554:58","text":" @notice Rebalances the stable interest rate of a user to the current stable rate defined on the reserve.\n - Users can be rebalanced if the following conditions are satisfied:\n     1. Usage ratio is above 95%\n     2. the current supply APY is below REBALANCE_UP_THRESHOLD * maxVariableBorrowRate, which means that too\n        much has been borrowed at a stable rate and suppliers are not earning enough\n @param asset The address of the underlying asset borrowed\n @param user The address of the user to be rebalanced*"},"functionSelector":"cd112382","id":18698,"implemented":false,"kind":"function","modifiers":[],"name":"rebalanceStableBorrowRate","nameLocation":"17231:25:58","nodeType":"FunctionDefinition","parameters":{"id":18696,"nodeType":"ParameterList","parameters":[{"constant":false,"id":18693,"mutability":"mutable","name":"asset","nameLocation":"17265:5:58","nodeType":"VariableDeclaration","scope":18698,"src":"17257:13:58","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":18692,"name":"address","nodeType":"ElementaryTypeName","src":"17257:7:58","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":18695,"mutability":"mutable","name":"user","nameLocation":"17280:4:58","nodeType":"VariableDeclaration","scope":18698,"src":"17272:12:58","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":18694,"name":"address","nodeType":"ElementaryTypeName","src":"17272:7:58","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"17256:29:58"},"returnParameters":{"id":18697,"nodeType":"ParameterList","parameters":[],"src":"17294:0:58"},"scope":19003,"src":"17222:73:58","stateMutability":"nonpayable","virtual":false,"visibility":"external"},{"documentation":{"id":18699,"nodeType":"StructuredDocumentation","src":"17299:261:58","text":" @notice Allows suppliers to enable/disable a specific supplied asset as collateral\n @param asset The address of the underlying asset supplied\n @param useAsCollateral True if the user wants to use the supply as collateral, false otherwise*"},"functionSelector":"5a3b74b9","id":18706,"implemented":false,"kind":"function","modifiers":[],"name":"setUserUseReserveAsCollateral","nameLocation":"17572:29:58","nodeType":"FunctionDefinition","parameters":{"id":18704,"nodeType":"ParameterList","parameters":[{"constant":false,"id":18701,"mutability":"mutable","name":"asset","nameLocation":"17610:5:58","nodeType":"VariableDeclaration","scope":18706,"src":"17602:13:58","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":18700,"name":"address","nodeType":"ElementaryTypeName","src":"17602:7:58","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":18703,"mutability":"mutable","name":"useAsCollateral","nameLocation":"17622:15:58","nodeType":"VariableDeclaration","scope":18706,"src":"17617:20:58","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":18702,"name":"bool","nodeType":"ElementaryTypeName","src":"17617:4:58","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"}],"src":"17601:37:58"},"returnParameters":{"id":18705,"nodeType":"ParameterList","parameters":[],"src":"17647:0:58"},"scope":19003,"src":"17563:85:58","stateMutability":"nonpayable","virtual":false,"visibility":"external"},{"documentation":{"id":18707,"nodeType":"StructuredDocumentation","src":"17652:861:58","text":" @notice Function to liquidate a non-healthy position collateral-wise, with Health Factor below 1\n - The caller (liquidator) covers `debtToCover` amount of debt of the user getting liquidated, and receives\n   a proportionally amount of the `collateralAsset` plus a bonus to cover market risk\n @param collateralAsset The address of the underlying asset used as collateral, to receive as result of the liquidation\n @param debtAsset The address of the underlying borrowed asset to be repaid with the liquidation\n @param user The address of the borrower getting liquidated\n @param debtToCover The debt amount of borrowed `asset` the liquidator wants to cover\n @param receiveAToken True if the liquidators wants to receive the collateral aTokens, `false` if he wants\n to receive the underlying collateral asset directly*"},"functionSelector":"00a718a9","id":18720,"implemented":false,"kind":"function","modifiers":[],"name":"liquidationCall","nameLocation":"18525:15:58","nodeType":"FunctionDefinition","parameters":{"id":18718,"nodeType":"ParameterList","parameters":[{"constant":false,"id":18709,"mutability":"mutable","name":"collateralAsset","nameLocation":"18554:15:58","nodeType":"VariableDeclaration","scope":18720,"src":"18546:23:58","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":18708,"name":"address","nodeType":"ElementaryTypeName","src":"18546:7:58","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":18711,"mutability":"mutable","name":"debtAsset","nameLocation":"18583:9:58","nodeType":"VariableDeclaration","scope":18720,"src":"18575:17:58","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":18710,"name":"address","nodeType":"ElementaryTypeName","src":"18575:7:58","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":18713,"mutability":"mutable","name":"user","nameLocation":"18606:4:58","nodeType":"VariableDeclaration","scope":18720,"src":"18598:12:58","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":18712,"name":"address","nodeType":"ElementaryTypeName","src":"18598:7:58","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":18715,"mutability":"mutable","name":"debtToCover","nameLocation":"18624:11:58","nodeType":"VariableDeclaration","scope":18720,"src":"18616:19:58","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":18714,"name":"uint256","nodeType":"ElementaryTypeName","src":"18616:7:58","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":18717,"mutability":"mutable","name":"receiveAToken","nameLocation":"18646:13:58","nodeType":"VariableDeclaration","scope":18720,"src":"18641:18:58","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":18716,"name":"bool","nodeType":"ElementaryTypeName","src":"18641:4:58","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"}],"src":"18540:123:58"},"returnParameters":{"id":18719,"nodeType":"ParameterList","parameters":[],"src":"18672:0:58"},"scope":19003,"src":"18516:157:58","stateMutability":"nonpayable","virtual":false,"visibility":"external"},{"documentation":{"id":18721,"nodeType":"StructuredDocumentation","src":"18677:1402:58","text":" @notice Allows smartcontracts to access the liquidity of the pool within one transaction,\n as long as the amount taken plus a fee is returned.\n @dev IMPORTANT There are security concerns for developers of flashloan receiver contracts that must be kept\n into consideration. For further details please visit https://developers.aave.com\n @param receiverAddress The address of the contract receiving the funds, implementing IFlashLoanReceiver interface\n @param assets The addresses of the assets being flash-borrowed\n @param amounts The amounts of the assets being flash-borrowed\n @param interestRateModes Types of the debt to open if the flash loan is not returned:\n   0 -> Don't open any debt, just revert if funds can't be transferred from the receiver\n   1 -> Open debt at stable rate for the value of the amount flash-borrowed to the `onBehalfOf` address\n   2 -> Open debt at variable rate for the value of the amount flash-borrowed to the `onBehalfOf` address\n @param onBehalfOf The address  that will receive the debt in the case of using on `modes` 1 or 2\n @param params Variadic packed params to pass to the receiver as extra information\n @param referralCode The code used to register the integrator originating the operation, for potential rewards.\n   0 if the action is executed directly by the user, without any middle-man*"},"functionSelector":"ab9c4b5d","id":18741,"implemented":false,"kind":"function","modifiers":[],"name":"flashLoan","nameLocation":"20091:9:58","nodeType":"FunctionDefinition","parameters":{"id":18739,"nodeType":"ParameterList","parameters":[{"constant":false,"id":18723,"mutability":"mutable","name":"receiverAddress","nameLocation":"20114:15:58","nodeType":"VariableDeclaration","scope":18741,"src":"20106:23:58","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":18722,"name":"address","nodeType":"ElementaryTypeName","src":"20106:7:58","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":18726,"mutability":"mutable","name":"assets","nameLocation":"20154:6:58","nodeType":"VariableDeclaration","scope":18741,"src":"20135:25:58","stateVariable":false,"storageLocation":"calldata","typeDescriptions":{"typeIdentifier":"t_array$_t_address_$dyn_calldata_ptr","typeString":"address[]"},"typeName":{"baseType":{"id":18724,"name":"address","nodeType":"ElementaryTypeName","src":"20135:7:58","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"id":18725,"nodeType":"ArrayTypeName","src":"20135:9:58","typeDescriptions":{"typeIdentifier":"t_array$_t_address_$dyn_storage_ptr","typeString":"address[]"}},"visibility":"internal"},{"constant":false,"id":18729,"mutability":"mutable","name":"amounts","nameLocation":"20185:7:58","nodeType":"VariableDeclaration","scope":18741,"src":"20166:26:58","stateVariable":false,"storageLocation":"calldata","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_calldata_ptr","typeString":"uint256[]"},"typeName":{"baseType":{"id":18727,"name":"uint256","nodeType":"ElementaryTypeName","src":"20166:7:58","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":18728,"nodeType":"ArrayTypeName","src":"20166:9:58","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_storage_ptr","typeString":"uint256[]"}},"visibility":"internal"},{"constant":false,"id":18732,"mutability":"mutable","name":"interestRateModes","nameLocation":"20217:17:58","nodeType":"VariableDeclaration","scope":18741,"src":"20198:36:58","stateVariable":false,"storageLocation":"calldata","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_calldata_ptr","typeString":"uint256[]"},"typeName":{"baseType":{"id":18730,"name":"uint256","nodeType":"ElementaryTypeName","src":"20198:7:58","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":18731,"nodeType":"ArrayTypeName","src":"20198:9:58","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_storage_ptr","typeString":"uint256[]"}},"visibility":"internal"},{"constant":false,"id":18734,"mutability":"mutable","name":"onBehalfOf","nameLocation":"20248:10:58","nodeType":"VariableDeclaration","scope":18741,"src":"20240:18:58","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":18733,"name":"address","nodeType":"ElementaryTypeName","src":"20240:7:58","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":18736,"mutability":"mutable","name":"params","nameLocation":"20279:6:58","nodeType":"VariableDeclaration","scope":18741,"src":"20264:21:58","stateVariable":false,"storageLocation":"calldata","typeDescriptions":{"typeIdentifier":"t_bytes_calldata_ptr","typeString":"bytes"},"typeName":{"id":18735,"name":"bytes","nodeType":"ElementaryTypeName","src":"20264:5:58","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"},{"constant":false,"id":18738,"mutability":"mutable","name":"referralCode","nameLocation":"20298:12:58","nodeType":"VariableDeclaration","scope":18741,"src":"20291:19:58","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint16","typeString":"uint16"},"typeName":{"id":18737,"name":"uint16","nodeType":"ElementaryTypeName","src":"20291:6:58","typeDescriptions":{"typeIdentifier":"t_uint16","typeString":"uint16"}},"visibility":"internal"}],"src":"20100:214:58"},"returnParameters":{"id":18740,"nodeType":"ParameterList","parameters":[],"src":"20323:0:58"},"scope":19003,"src":"20082:242:58","stateMutability":"nonpayable","virtual":false,"visibility":"external"},{"documentation":{"id":18742,"nodeType":"StructuredDocumentation","src":"20328:897:58","text":" @notice Allows smartcontracts to access the liquidity of the pool within one transaction,\n as long as the amount taken plus a fee is returned.\n @dev IMPORTANT There are security concerns for developers of flashloan receiver contracts that must be kept\n into consideration. For further details please visit https://developers.aave.com\n @param receiverAddress The address of the contract receiving the funds, implementing IFlashLoanSimpleReceiver interface\n @param asset The address of the asset being flash-borrowed\n @param amount The amount of the asset being flash-borrowed\n @param params Variadic packed params to pass to the receiver as extra information\n @param referralCode The code used to register the integrator originating the operation, for potential rewards.\n   0 if the action is executed directly by the user, without any middle-man*"},"functionSelector":"42b0b77c","id":18755,"implemented":false,"kind":"function","modifiers":[],"name":"flashLoanSimple","nameLocation":"21237:15:58","nodeType":"FunctionDefinition","parameters":{"id":18753,"nodeType":"ParameterList","parameters":[{"constant":false,"id":18744,"mutability":"mutable","name":"receiverAddress","nameLocation":"21266:15:58","nodeType":"VariableDeclaration","scope":18755,"src":"21258:23:58","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":18743,"name":"address","nodeType":"ElementaryTypeName","src":"21258:7:58","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":18746,"mutability":"mutable","name":"asset","nameLocation":"21295:5:58","nodeType":"VariableDeclaration","scope":18755,"src":"21287:13:58","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":18745,"name":"address","nodeType":"ElementaryTypeName","src":"21287:7:58","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":18748,"mutability":"mutable","name":"amount","nameLocation":"21314:6:58","nodeType":"VariableDeclaration","scope":18755,"src":"21306:14:58","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":18747,"name":"uint256","nodeType":"ElementaryTypeName","src":"21306:7:58","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":18750,"mutability":"mutable","name":"params","nameLocation":"21341:6:58","nodeType":"VariableDeclaration","scope":18755,"src":"21326:21:58","stateVariable":false,"storageLocation":"calldata","typeDescriptions":{"typeIdentifier":"t_bytes_calldata_ptr","typeString":"bytes"},"typeName":{"id":18749,"name":"bytes","nodeType":"ElementaryTypeName","src":"21326:5:58","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"},{"constant":false,"id":18752,"mutability":"mutable","name":"referralCode","nameLocation":"21360:12:58","nodeType":"VariableDeclaration","scope":18755,"src":"21353:19:58","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint16","typeString":"uint16"},"typeName":{"id":18751,"name":"uint16","nodeType":"ElementaryTypeName","src":"21353:6:58","typeDescriptions":{"typeIdentifier":"t_uint16","typeString":"uint16"}},"visibility":"internal"}],"src":"21252:124:58"},"returnParameters":{"id":18754,"nodeType":"ParameterList","parameters":[],"src":"21385:0:58"},"scope":19003,"src":"21228:158:58","stateMutability":"nonpayable","virtual":false,"visibility":"external"},{"documentation":{"id":18756,"nodeType":"StructuredDocumentation","src":"21390:631:58","text":" @notice Returns the user account data across all the reserves\n @param user The address of the user\n @return totalCollateralBase The total collateral of the user in the base currency used by the price feed\n @return totalDebtBase The total debt of the user in the base currency used by the price feed\n @return availableBorrowsBase The borrowing power left of the user in the base currency used by the price feed\n @return currentLiquidationThreshold The liquidation threshold of the user\n @return ltv The loan to value of The user\n @return healthFactor The current health factor of the user*"},"functionSelector":"bf92857c","id":18773,"implemented":false,"kind":"function","modifiers":[],"name":"getUserAccountData","nameLocation":"22033:18:58","nodeType":"FunctionDefinition","parameters":{"id":18759,"nodeType":"ParameterList","parameters":[{"constant":false,"id":18758,"mutability":"mutable","name":"user","nameLocation":"22060:4:58","nodeType":"VariableDeclaration","scope":18773,"src":"22052:12:58","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":18757,"name":"address","nodeType":"ElementaryTypeName","src":"22052:7:58","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"22051:14:58"},"returnParameters":{"id":18772,"nodeType":"ParameterList","parameters":[{"constant":false,"id":18761,"mutability":"mutable","name":"totalCollateralBase","nameLocation":"22116:19:58","nodeType":"VariableDeclaration","scope":18773,"src":"22108:27:58","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":18760,"name":"uint256","nodeType":"ElementaryTypeName","src":"22108:7:58","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":18763,"mutability":"mutable","name":"totalDebtBase","nameLocation":"22151:13:58","nodeType":"VariableDeclaration","scope":18773,"src":"22143:21:58","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":18762,"name":"uint256","nodeType":"ElementaryTypeName","src":"22143:7:58","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":18765,"mutability":"mutable","name":"availableBorrowsBase","nameLocation":"22180:20:58","nodeType":"VariableDeclaration","scope":18773,"src":"22172:28:58","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":18764,"name":"uint256","nodeType":"ElementaryTypeName","src":"22172:7:58","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":18767,"mutability":"mutable","name":"currentLiquidationThreshold","nameLocation":"22216:27:58","nodeType":"VariableDeclaration","scope":18773,"src":"22208:35:58","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":18766,"name":"uint256","nodeType":"ElementaryTypeName","src":"22208:7:58","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":18769,"mutability":"mutable","name":"ltv","nameLocation":"22259:3:58","nodeType":"VariableDeclaration","scope":18773,"src":"22251:11:58","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":18768,"name":"uint256","nodeType":"ElementaryTypeName","src":"22251:7:58","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":18771,"mutability":"mutable","name":"healthFactor","nameLocation":"22278:12:58","nodeType":"VariableDeclaration","scope":18773,"src":"22270:20:58","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":18770,"name":"uint256","nodeType":"ElementaryTypeName","src":"22270:7:58","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"22100:196:58"},"scope":19003,"src":"22024:273:58","stateMutability":"view","virtual":false,"visibility":"external"},{"documentation":{"id":18774,"nodeType":"StructuredDocumentation","src":"22301:646:58","text":" @notice Initializes a reserve, activating it, assigning an aToken and debt tokens and an\n interest rate strategy\n @dev Only callable by the PoolConfigurator contract\n @param asset The address of the underlying asset of the reserve\n @param aTokenAddress The address of the aToken that will be assigned to the reserve\n @param stableDebtAddress The address of the StableDebtToken that will be assigned to the reserve\n @param variableDebtAddress The address of the VariableDebtToken that will be assigned to the reserve\n @param interestRateStrategyAddress The address of the interest rate strategy contract*"},"functionSelector":"7a708e92","id":18787,"implemented":false,"kind":"function","modifiers":[],"name":"initReserve","nameLocation":"22959:11:58","nodeType":"FunctionDefinition","parameters":{"id":18785,"nodeType":"ParameterList","parameters":[{"constant":false,"id":18776,"mutability":"mutable","name":"asset","nameLocation":"22984:5:58","nodeType":"VariableDeclaration","scope":18787,"src":"22976:13:58","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":18775,"name":"address","nodeType":"ElementaryTypeName","src":"22976:7:58","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":18778,"mutability":"mutable","name":"aTokenAddress","nameLocation":"23003:13:58","nodeType":"VariableDeclaration","scope":18787,"src":"22995:21:58","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":18777,"name":"address","nodeType":"ElementaryTypeName","src":"22995:7:58","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":18780,"mutability":"mutable","name":"stableDebtAddress","nameLocation":"23030:17:58","nodeType":"VariableDeclaration","scope":18787,"src":"23022:25:58","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":18779,"name":"address","nodeType":"ElementaryTypeName","src":"23022:7:58","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":18782,"mutability":"mutable","name":"variableDebtAddress","nameLocation":"23061:19:58","nodeType":"VariableDeclaration","scope":18787,"src":"23053:27:58","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":18781,"name":"address","nodeType":"ElementaryTypeName","src":"23053:7:58","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":18784,"mutability":"mutable","name":"interestRateStrategyAddress","nameLocation":"23094:27:58","nodeType":"VariableDeclaration","scope":18787,"src":"23086:35:58","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":18783,"name":"address","nodeType":"ElementaryTypeName","src":"23086:7:58","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"22970:155:58"},"returnParameters":{"id":18786,"nodeType":"ParameterList","parameters":[],"src":"23134:0:58"},"scope":19003,"src":"22950:185:58","stateMutability":"nonpayable","virtual":false,"visibility":"external"},{"documentation":{"id":18788,"nodeType":"StructuredDocumentation","src":"23139:164:58","text":" @notice Drop a reserve\n @dev Only callable by the PoolConfigurator contract\n @param asset The address of the underlying asset of the reserve*"},"functionSelector":"63c9b860","id":18793,"implemented":false,"kind":"function","modifiers":[],"name":"dropReserve","nameLocation":"23315:11:58","nodeType":"FunctionDefinition","parameters":{"id":18791,"nodeType":"ParameterList","parameters":[{"constant":false,"id":18790,"mutability":"mutable","name":"asset","nameLocation":"23335:5:58","nodeType":"VariableDeclaration","scope":18793,"src":"23327:13:58","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":18789,"name":"address","nodeType":"ElementaryTypeName","src":"23327:7:58","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"23326:15:58"},"returnParameters":{"id":18792,"nodeType":"ParameterList","parameters":[],"src":"23350:0:58"},"scope":19003,"src":"23306:45:58","stateMutability":"nonpayable","virtual":false,"visibility":"external"},{"documentation":{"id":18794,"nodeType":"StructuredDocumentation","src":"23355:291:58","text":" @notice Updates the address of the interest rate strategy contract\n @dev Only callable by the PoolConfigurator contract\n @param asset The address of the underlying asset of the reserve\n @param rateStrategyAddress The address of the interest rate strategy contract*"},"functionSelector":"1d2118f9","id":18801,"implemented":false,"kind":"function","modifiers":[],"name":"setReserveInterestRateStrategyAddress","nameLocation":"23658:37:58","nodeType":"FunctionDefinition","parameters":{"id":18799,"nodeType":"ParameterList","parameters":[{"constant":false,"id":18796,"mutability":"mutable","name":"asset","nameLocation":"23704:5:58","nodeType":"VariableDeclaration","scope":18801,"src":"23696:13:58","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":18795,"name":"address","nodeType":"ElementaryTypeName","src":"23696:7:58","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":18798,"mutability":"mutable","name":"rateStrategyAddress","nameLocation":"23719:19:58","nodeType":"VariableDeclaration","scope":18801,"src":"23711:27:58","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":18797,"name":"address","nodeType":"ElementaryTypeName","src":"23711:7:58","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"23695:44:58"},"returnParameters":{"id":18800,"nodeType":"ParameterList","parameters":[],"src":"23752:0:58"},"scope":19003,"src":"23649:104:58","stateMutability":"nonpayable","virtual":false,"visibility":"external"},{"documentation":{"id":18802,"nodeType":"StructuredDocumentation","src":"23757:260:58","text":" @notice Sets the configuration bitmap of the reserve as a whole\n @dev Only callable by the PoolConfigurator contract\n @param asset The address of the underlying asset of the reserve\n @param configuration The new configuration bitmap*"},"functionSelector":"f51e435b","id":18810,"implemented":false,"kind":"function","modifiers":[],"name":"setConfiguration","nameLocation":"24029:16:58","nodeType":"FunctionDefinition","parameters":{"id":18808,"nodeType":"ParameterList","parameters":[{"constant":false,"id":18804,"mutability":"mutable","name":"asset","nameLocation":"24054:5:58","nodeType":"VariableDeclaration","scope":18810,"src":"24046:13:58","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":18803,"name":"address","nodeType":"ElementaryTypeName","src":"24046:7:58","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":18807,"mutability":"mutable","name":"configuration","nameLocation":"24104:13:58","nodeType":"VariableDeclaration","scope":18810,"src":"24061:56:58","stateVariable":false,"storageLocation":"calldata","typeDescriptions":{"typeIdentifier":"t_struct$_ReserveConfigurationMap_$17777_calldata_ptr","typeString":"struct DataTypes.ReserveConfigurationMap"},"typeName":{"id":18806,"nodeType":"UserDefinedTypeName","pathNode":{"id":18805,"name":"DataTypes.ReserveConfigurationMap","nameLocations":["24061:9:58","24071:23:58"],"nodeType":"IdentifierPath","referencedDeclaration":17777,"src":"24061:33:58"},"referencedDeclaration":17777,"src":"24061:33:58","typeDescriptions":{"typeIdentifier":"t_struct$_ReserveConfigurationMap_$17777_storage_ptr","typeString":"struct DataTypes.ReserveConfigurationMap"}},"visibility":"internal"}],"src":"24045:73:58"},"returnParameters":{"id":18809,"nodeType":"ParameterList","parameters":[],"src":"24131:0:58"},"scope":19003,"src":"24020:112:58","stateMutability":"nonpayable","virtual":false,"visibility":"external"},{"documentation":{"id":18811,"nodeType":"StructuredDocumentation","src":"24136:179:58","text":" @notice Returns the configuration of the reserve\n @param asset The address of the underlying asset of the reserve\n @return The configuration of the reserve*"},"functionSelector":"c44b11f7","id":18819,"implemented":false,"kind":"function","modifiers":[],"name":"getConfiguration","nameLocation":"24327:16:58","nodeType":"FunctionDefinition","parameters":{"id":18814,"nodeType":"ParameterList","parameters":[{"constant":false,"id":18813,"mutability":"mutable","name":"asset","nameLocation":"24352:5:58","nodeType":"VariableDeclaration","scope":18819,"src":"24344:13:58","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":18812,"name":"address","nodeType":"ElementaryTypeName","src":"24344:7:58","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"24343:15:58"},"returnParameters":{"id":18818,"nodeType":"ParameterList","parameters":[{"constant":false,"id":18817,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":18819,"src":"24394:40:58","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_struct$_ReserveConfigurationMap_$17777_memory_ptr","typeString":"struct DataTypes.ReserveConfigurationMap"},"typeName":{"id":18816,"nodeType":"UserDefinedTypeName","pathNode":{"id":18815,"name":"DataTypes.ReserveConfigurationMap","nameLocations":["24394:9:58","24404:23:58"],"nodeType":"IdentifierPath","referencedDeclaration":17777,"src":"24394:33:58"},"referencedDeclaration":17777,"src":"24394:33:58","typeDescriptions":{"typeIdentifier":"t_struct$_ReserveConfigurationMap_$17777_storage_ptr","typeString":"struct DataTypes.ReserveConfigurationMap"}},"visibility":"internal"}],"src":"24393:42:58"},"scope":19003,"src":"24318:118:58","stateMutability":"view","virtual":false,"visibility":"external"},{"documentation":{"id":18820,"nodeType":"StructuredDocumentation","src":"24440:162:58","text":" @notice Returns the configuration of the user across all the reserves\n @param user The user address\n @return The configuration of the user*"},"functionSelector":"4417a583","id":18828,"implemented":false,"kind":"function","modifiers":[],"name":"getUserConfiguration","nameLocation":"24614:20:58","nodeType":"FunctionDefinition","parameters":{"id":18823,"nodeType":"ParameterList","parameters":[{"constant":false,"id":18822,"mutability":"mutable","name":"user","nameLocation":"24643:4:58","nodeType":"VariableDeclaration","scope":18828,"src":"24635:12:58","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":18821,"name":"address","nodeType":"ElementaryTypeName","src":"24635:7:58","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"24634:14:58"},"returnParameters":{"id":18827,"nodeType":"ParameterList","parameters":[{"constant":false,"id":18826,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":18828,"src":"24684:37:58","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_struct$_UserConfigurationMap_$17781_memory_ptr","typeString":"struct DataTypes.UserConfigurationMap"},"typeName":{"id":18825,"nodeType":"UserDefinedTypeName","pathNode":{"id":18824,"name":"DataTypes.UserConfigurationMap","nameLocations":["24684:9:58","24694:20:58"],"nodeType":"IdentifierPath","referencedDeclaration":17781,"src":"24684:30:58"},"referencedDeclaration":17781,"src":"24684:30:58","typeDescriptions":{"typeIdentifier":"t_struct$_UserConfigurationMap_$17781_storage_ptr","typeString":"struct DataTypes.UserConfigurationMap"}},"visibility":"internal"}],"src":"24683:39:58"},"scope":19003,"src":"24605:118:58","stateMutability":"view","virtual":false,"visibility":"external"},{"documentation":{"id":18829,"nodeType":"StructuredDocumentation","src":"24727:199:58","text":" @notice Returns the normalized income normalized income of the reserve\n @param asset The address of the underlying asset of the reserve\n @return The reserve's normalized income"},"functionSelector":"d15e0053","id":18836,"implemented":false,"kind":"function","modifiers":[],"name":"getReserveNormalizedIncome","nameLocation":"24938:26:58","nodeType":"FunctionDefinition","parameters":{"id":18832,"nodeType":"ParameterList","parameters":[{"constant":false,"id":18831,"mutability":"mutable","name":"asset","nameLocation":"24973:5:58","nodeType":"VariableDeclaration","scope":18836,"src":"24965:13:58","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":18830,"name":"address","nodeType":"ElementaryTypeName","src":"24965:7:58","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"24964:15:58"},"returnParameters":{"id":18835,"nodeType":"ParameterList","parameters":[{"constant":false,"id":18834,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":18836,"src":"25003:7:58","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":18833,"name":"uint256","nodeType":"ElementaryTypeName","src":"25003:7:58","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"25002:9:58"},"scope":19003,"src":"24929:83:58","stateMutability":"view","virtual":false,"visibility":"external"},{"documentation":{"id":18837,"nodeType":"StructuredDocumentation","src":"25016:196:58","text":" @notice Returns the normalized variable debt per unit of asset\n @param asset The address of the underlying asset of the reserve\n @return The reserve normalized variable debt"},"functionSelector":"386497fd","id":18844,"implemented":false,"kind":"function","modifiers":[],"name":"getReserveNormalizedVariableDebt","nameLocation":"25224:32:58","nodeType":"FunctionDefinition","parameters":{"id":18840,"nodeType":"ParameterList","parameters":[{"constant":false,"id":18839,"mutability":"mutable","name":"asset","nameLocation":"25265:5:58","nodeType":"VariableDeclaration","scope":18844,"src":"25257:13:58","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":18838,"name":"address","nodeType":"ElementaryTypeName","src":"25257:7:58","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"25256:15:58"},"returnParameters":{"id":18843,"nodeType":"ParameterList","parameters":[{"constant":false,"id":18842,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":18844,"src":"25295:7:58","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":18841,"name":"uint256","nodeType":"ElementaryTypeName","src":"25295:7:58","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"25294:9:58"},"scope":19003,"src":"25215:89:58","stateMutability":"view","virtual":false,"visibility":"external"},{"documentation":{"id":18845,"nodeType":"StructuredDocumentation","src":"25308:204:58","text":" @notice Returns the state and configuration of the reserve\n @param asset The address of the underlying asset of the reserve\n @return The state and configuration data of the reserve*"},"functionSelector":"35ea6a75","id":18853,"implemented":false,"kind":"function","modifiers":[],"name":"getReserveData","nameLocation":"25524:14:58","nodeType":"FunctionDefinition","parameters":{"id":18848,"nodeType":"ParameterList","parameters":[{"constant":false,"id":18847,"mutability":"mutable","name":"asset","nameLocation":"25547:5:58","nodeType":"VariableDeclaration","scope":18853,"src":"25539:13:58","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":18846,"name":"address","nodeType":"ElementaryTypeName","src":"25539:7:58","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"25538:15:58"},"returnParameters":{"id":18852,"nodeType":"ParameterList","parameters":[{"constant":false,"id":18851,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":18853,"src":"25577:28:58","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_struct$_ReserveData_$17774_memory_ptr","typeString":"struct DataTypes.ReserveData"},"typeName":{"id":18850,"nodeType":"UserDefinedTypeName","pathNode":{"id":18849,"name":"DataTypes.ReserveData","nameLocations":["25577:9:58","25587:11:58"],"nodeType":"IdentifierPath","referencedDeclaration":17774,"src":"25577:21:58"},"referencedDeclaration":17774,"src":"25577:21:58","typeDescriptions":{"typeIdentifier":"t_struct$_ReserveData_$17774_storage_ptr","typeString":"struct DataTypes.ReserveData"}},"visibility":"internal"}],"src":"25576:30:58"},"scope":19003,"src":"25515:92:58","stateMutability":"view","virtual":false,"visibility":"external"},{"documentation":{"id":18854,"nodeType":"StructuredDocumentation","src":"25611:537:58","text":" @notice Validates and finalizes an aToken transfer\n @dev Only callable by the overlying aToken of the `asset`\n @param asset The address of the underlying asset of the aToken\n @param from The user from which the aTokens are transferred\n @param to The user receiving the aTokens\n @param amount The amount being transferred/withdrawn\n @param balanceFromBefore The aToken balance of the `from` user before the transfer\n @param balanceToBefore The aToken balance of the `to` user before the transfer"},"functionSelector":"d5ed3933","id":18869,"implemented":false,"kind":"function","modifiers":[],"name":"finalizeTransfer","nameLocation":"26160:16:58","nodeType":"FunctionDefinition","parameters":{"id":18867,"nodeType":"ParameterList","parameters":[{"constant":false,"id":18856,"mutability":"mutable","name":"asset","nameLocation":"26190:5:58","nodeType":"VariableDeclaration","scope":18869,"src":"26182:13:58","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":18855,"name":"address","nodeType":"ElementaryTypeName","src":"26182:7:58","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":18858,"mutability":"mutable","name":"from","nameLocation":"26209:4:58","nodeType":"VariableDeclaration","scope":18869,"src":"26201:12:58","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":18857,"name":"address","nodeType":"ElementaryTypeName","src":"26201:7:58","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":18860,"mutability":"mutable","name":"to","nameLocation":"26227:2:58","nodeType":"VariableDeclaration","scope":18869,"src":"26219:10:58","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":18859,"name":"address","nodeType":"ElementaryTypeName","src":"26219:7:58","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":18862,"mutability":"mutable","name":"amount","nameLocation":"26243:6:58","nodeType":"VariableDeclaration","scope":18869,"src":"26235:14:58","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":18861,"name":"uint256","nodeType":"ElementaryTypeName","src":"26235:7:58","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":18864,"mutability":"mutable","name":"balanceFromBefore","nameLocation":"26263:17:58","nodeType":"VariableDeclaration","scope":18869,"src":"26255:25:58","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":18863,"name":"uint256","nodeType":"ElementaryTypeName","src":"26255:7:58","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":18866,"mutability":"mutable","name":"balanceToBefore","nameLocation":"26294:15:58","nodeType":"VariableDeclaration","scope":18869,"src":"26286:23:58","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":18865,"name":"uint256","nodeType":"ElementaryTypeName","src":"26286:7:58","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"26176:137:58"},"returnParameters":{"id":18868,"nodeType":"ParameterList","parameters":[],"src":"26322:0:58"},"scope":19003,"src":"26151:172:58","stateMutability":"nonpayable","virtual":false,"visibility":"external"},{"documentation":{"id":18870,"nodeType":"StructuredDocumentation","src":"26327:224:58","text":" @notice Returns the list of the underlying assets of all the initialized reserves\n @dev It does not include dropped reserves\n @return The addresses of the underlying assets of the initialized reserves*"},"functionSelector":"d1946dbc","id":18876,"implemented":false,"kind":"function","modifiers":[],"name":"getReservesList","nameLocation":"26563:15:58","nodeType":"FunctionDefinition","parameters":{"id":18871,"nodeType":"ParameterList","parameters":[],"src":"26578:2:58"},"returnParameters":{"id":18875,"nodeType":"ParameterList","parameters":[{"constant":false,"id":18874,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":18876,"src":"26604:16:58","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_array$_t_address_$dyn_memory_ptr","typeString":"address[]"},"typeName":{"baseType":{"id":18872,"name":"address","nodeType":"ElementaryTypeName","src":"26604:7:58","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"id":18873,"nodeType":"ArrayTypeName","src":"26604:9:58","typeDescriptions":{"typeIdentifier":"t_array$_t_address_$dyn_storage_ptr","typeString":"address[]"}},"visibility":"internal"}],"src":"26603:18:58"},"scope":19003,"src":"26554:68:58","stateMutability":"view","virtual":false,"visibility":"external"},{"documentation":{"id":18877,"nodeType":"StructuredDocumentation","src":"26626:286:58","text":" @notice Returns the address of the underlying asset of a reserve by the reserve id as stored in the DataTypes.ReserveData struct\n @param id The id of the reserve as stored in the DataTypes.ReserveData struct\n @return The address of the reserve associated with id*"},"functionSelector":"52751797","id":18884,"implemented":false,"kind":"function","modifiers":[],"name":"getReserveAddressById","nameLocation":"26924:21:58","nodeType":"FunctionDefinition","parameters":{"id":18880,"nodeType":"ParameterList","parameters":[{"constant":false,"id":18879,"mutability":"mutable","name":"id","nameLocation":"26953:2:58","nodeType":"VariableDeclaration","scope":18884,"src":"26946:9:58","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint16","typeString":"uint16"},"typeName":{"id":18878,"name":"uint16","nodeType":"ElementaryTypeName","src":"26946:6:58","typeDescriptions":{"typeIdentifier":"t_uint16","typeString":"uint16"}},"visibility":"internal"}],"src":"26945:11:58"},"returnParameters":{"id":18883,"nodeType":"ParameterList","parameters":[{"constant":false,"id":18882,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":18884,"src":"26980:7:58","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":18881,"name":"address","nodeType":"ElementaryTypeName","src":"26980:7:58","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"26979:9:58"},"scope":19003,"src":"26915:74:58","stateMutability":"view","virtual":false,"visibility":"external"},{"documentation":{"id":18885,"nodeType":"StructuredDocumentation","src":"26993:138:58","text":" @notice Returns the PoolAddressesProvider connected to this contract\n @return The address of the PoolAddressesProvider*"},"functionSelector":"0542975c","id":18891,"implemented":false,"kind":"function","modifiers":[],"name":"ADDRESSES_PROVIDER","nameLocation":"27143:18:58","nodeType":"FunctionDefinition","parameters":{"id":18886,"nodeType":"ParameterList","parameters":[],"src":"27161:2:58"},"returnParameters":{"id":18890,"nodeType":"ParameterList","parameters":[{"constant":false,"id":18889,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":18891,"src":"27187:22:58","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_contract$_IPoolAddressesProvider_$19212","typeString":"contract IPoolAddressesProvider"},"typeName":{"id":18888,"nodeType":"UserDefinedTypeName","pathNode":{"id":18887,"name":"IPoolAddressesProvider","nameLocations":["27187:22:58"],"nodeType":"IdentifierPath","referencedDeclaration":19212,"src":"27187:22:58"},"referencedDeclaration":19212,"src":"27187:22:58","typeDescriptions":{"typeIdentifier":"t_contract$_IPoolAddressesProvider_$19212","typeString":"contract IPoolAddressesProvider"}},"visibility":"internal"}],"src":"27186:24:58"},"scope":19003,"src":"27134:77:58","stateMutability":"view","virtual":false,"visibility":"external"},{"documentation":{"id":18892,"nodeType":"StructuredDocumentation","src":"27215:147:58","text":" @notice Updates the protocol fee on the bridging\n @param bridgeProtocolFee The part of the premium sent to the protocol treasury"},"functionSelector":"3036b439","id":18897,"implemented":false,"kind":"function","modifiers":[],"name":"updateBridgeProtocolFee","nameLocation":"27374:23:58","nodeType":"FunctionDefinition","parameters":{"id":18895,"nodeType":"ParameterList","parameters":[{"constant":false,"id":18894,"mutability":"mutable","name":"bridgeProtocolFee","nameLocation":"27406:17:58","nodeType":"VariableDeclaration","scope":18897,"src":"27398:25:58","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":18893,"name":"uint256","nodeType":"ElementaryTypeName","src":"27398:7:58","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"27397:27:58"},"returnParameters":{"id":18896,"nodeType":"ParameterList","parameters":[],"src":"27433:0:58"},"scope":19003,"src":"27365:69:58","stateMutability":"nonpayable","virtual":false,"visibility":"external"},{"documentation":{"id":18898,"nodeType":"StructuredDocumentation","src":"27438:650:58","text":" @notice Updates flash loan premiums. Flash loan premium consists of two parts:\n - A part is sent to aToken holders as extra, one time accumulated interest\n - A part is collected by the protocol treasury\n @dev The total premium is calculated on the total borrowed amount\n @dev The premium to protocol is calculated on the total premium, being a percentage of `flashLoanPremiumTotal`\n @dev Only callable by the PoolConfigurator contract\n @param flashLoanPremiumTotal The total premium, expressed in bps\n @param flashLoanPremiumToProtocol The part of the premium sent to the protocol treasury, expressed in bps"},"functionSelector":"bcb6e522","id":18905,"implemented":false,"kind":"function","modifiers":[],"name":"updateFlashloanPremiums","nameLocation":"28100:23:58","nodeType":"FunctionDefinition","parameters":{"id":18903,"nodeType":"ParameterList","parameters":[{"constant":false,"id":18900,"mutability":"mutable","name":"flashLoanPremiumTotal","nameLocation":"28137:21:58","nodeType":"VariableDeclaration","scope":18905,"src":"28129:29:58","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint128","typeString":"uint128"},"typeName":{"id":18899,"name":"uint128","nodeType":"ElementaryTypeName","src":"28129:7:58","typeDescriptions":{"typeIdentifier":"t_uint128","typeString":"uint128"}},"visibility":"internal"},{"constant":false,"id":18902,"mutability":"mutable","name":"flashLoanPremiumToProtocol","nameLocation":"28172:26:58","nodeType":"VariableDeclaration","scope":18905,"src":"28164:34:58","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint128","typeString":"uint128"},"typeName":{"id":18901,"name":"uint128","nodeType":"ElementaryTypeName","src":"28164:7:58","typeDescriptions":{"typeIdentifier":"t_uint128","typeString":"uint128"}},"visibility":"internal"}],"src":"28123:79:58"},"returnParameters":{"id":18904,"nodeType":"ParameterList","parameters":[],"src":"28211:0:58"},"scope":19003,"src":"28091:121:58","stateMutability":"nonpayable","virtual":false,"visibility":"external"},{"documentation":{"id":18906,"nodeType":"StructuredDocumentation","src":"28216:331:58","text":" @notice Configures a new category for the eMode.\n @dev In eMode, the protocol allows very high borrowing power to borrow assets of the same category.\n The category 0 is reserved as it's the default for volatile assets\n @param id The id of the category\n @param config The configuration of the category"},"functionSelector":"d579ea7d","id":18914,"implemented":false,"kind":"function","modifiers":[],"name":"configureEModeCategory","nameLocation":"28559:22:58","nodeType":"FunctionDefinition","parameters":{"id":18912,"nodeType":"ParameterList","parameters":[{"constant":false,"id":18908,"mutability":"mutable","name":"id","nameLocation":"28588:2:58","nodeType":"VariableDeclaration","scope":18914,"src":"28582:8:58","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"},"typeName":{"id":18907,"name":"uint8","nodeType":"ElementaryTypeName","src":"28582:5:58","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}},"visibility":"internal"},{"constant":false,"id":18911,"mutability":"mutable","name":"config","nameLocation":"28623:6:58","nodeType":"VariableDeclaration","scope":18914,"src":"28592:37:58","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_struct$_EModeCategory_$17792_memory_ptr","typeString":"struct DataTypes.EModeCategory"},"typeName":{"id":18910,"nodeType":"UserDefinedTypeName","pathNode":{"id":18909,"name":"DataTypes.EModeCategory","nameLocations":["28592:9:58","28602:13:58"],"nodeType":"IdentifierPath","referencedDeclaration":17792,"src":"28592:23:58"},"referencedDeclaration":17792,"src":"28592:23:58","typeDescriptions":{"typeIdentifier":"t_struct$_EModeCategory_$17792_storage_ptr","typeString":"struct DataTypes.EModeCategory"}},"visibility":"internal"}],"src":"28581:49:58"},"returnParameters":{"id":18913,"nodeType":"ParameterList","parameters":[],"src":"28639:0:58"},"scope":19003,"src":"28550:90:58","stateMutability":"nonpayable","virtual":false,"visibility":"external"},{"documentation":{"id":18915,"nodeType":"StructuredDocumentation","src":"28644:150:58","text":" @notice Returns the data of an eMode category\n @param id The id of the category\n @return The configuration data of the category"},"functionSelector":"6c6f6ae1","id":18923,"implemented":false,"kind":"function","modifiers":[],"name":"getEModeCategoryData","nameLocation":"28806:20:58","nodeType":"FunctionDefinition","parameters":{"id":18918,"nodeType":"ParameterList","parameters":[{"constant":false,"id":18917,"mutability":"mutable","name":"id","nameLocation":"28833:2:58","nodeType":"VariableDeclaration","scope":18923,"src":"28827:8:58","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"},"typeName":{"id":18916,"name":"uint8","nodeType":"ElementaryTypeName","src":"28827:5:58","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}},"visibility":"internal"}],"src":"28826:10:58"},"returnParameters":{"id":18922,"nodeType":"ParameterList","parameters":[{"constant":false,"id":18921,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":18923,"src":"28860:30:58","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_struct$_EModeCategory_$17792_memory_ptr","typeString":"struct DataTypes.EModeCategory"},"typeName":{"id":18920,"nodeType":"UserDefinedTypeName","pathNode":{"id":18919,"name":"DataTypes.EModeCategory","nameLocations":["28860:9:58","28870:13:58"],"nodeType":"IdentifierPath","referencedDeclaration":17792,"src":"28860:23:58"},"referencedDeclaration":17792,"src":"28860:23:58","typeDescriptions":{"typeIdentifier":"t_struct$_EModeCategory_$17792_storage_ptr","typeString":"struct DataTypes.EModeCategory"}},"visibility":"internal"}],"src":"28859:32:58"},"scope":19003,"src":"28797:95:58","stateMutability":"view","virtual":false,"visibility":"external"},{"documentation":{"id":18924,"nodeType":"StructuredDocumentation","src":"28896:111:58","text":" @notice Allows a user to use the protocol in eMode\n @param categoryId The id of the category"},"functionSelector":"28530a47","id":18929,"implemented":false,"kind":"function","modifiers":[],"name":"setUserEMode","nameLocation":"29019:12:58","nodeType":"FunctionDefinition","parameters":{"id":18927,"nodeType":"ParameterList","parameters":[{"constant":false,"id":18926,"mutability":"mutable","name":"categoryId","nameLocation":"29038:10:58","nodeType":"VariableDeclaration","scope":18929,"src":"29032:16:58","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"},"typeName":{"id":18925,"name":"uint8","nodeType":"ElementaryTypeName","src":"29032:5:58","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}},"visibility":"internal"}],"src":"29031:18:58"},"returnParameters":{"id":18928,"nodeType":"ParameterList","parameters":[],"src":"29058:0:58"},"scope":19003,"src":"29010:49:58","stateMutability":"nonpayable","virtual":false,"visibility":"external"},{"documentation":{"id":18930,"nodeType":"StructuredDocumentation","src":"29063:125:58","text":" @notice Returns the eMode the user is using\n @param user The address of the user\n @return The eMode id"},"functionSelector":"eddf1b79","id":18937,"implemented":false,"kind":"function","modifiers":[],"name":"getUserEMode","nameLocation":"29200:12:58","nodeType":"FunctionDefinition","parameters":{"id":18933,"nodeType":"ParameterList","parameters":[{"constant":false,"id":18932,"mutability":"mutable","name":"user","nameLocation":"29221:4:58","nodeType":"VariableDeclaration","scope":18937,"src":"29213:12:58","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":18931,"name":"address","nodeType":"ElementaryTypeName","src":"29213:7:58","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"29212:14:58"},"returnParameters":{"id":18936,"nodeType":"ParameterList","parameters":[{"constant":false,"id":18935,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":18937,"src":"29250:7:58","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":18934,"name":"uint256","nodeType":"ElementaryTypeName","src":"29250:7:58","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"29249:9:58"},"scope":19003,"src":"29191:68:58","stateMutability":"view","virtual":false,"visibility":"external"},{"documentation":{"id":18938,"nodeType":"StructuredDocumentation","src":"29263:236:58","text":" @notice Resets the isolation mode total debt of the given asset to zero\n @dev It requires the given asset has zero debt ceiling\n @param asset The address of the underlying asset to reset the isolationModeTotalDebt"},"functionSelector":"e43e88a1","id":18943,"implemented":false,"kind":"function","modifiers":[],"name":"resetIsolationModeTotalDebt","nameLocation":"29511:27:58","nodeType":"FunctionDefinition","parameters":{"id":18941,"nodeType":"ParameterList","parameters":[{"constant":false,"id":18940,"mutability":"mutable","name":"asset","nameLocation":"29547:5:58","nodeType":"VariableDeclaration","scope":18943,"src":"29539:13:58","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":18939,"name":"address","nodeType":"ElementaryTypeName","src":"29539:7:58","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"29538:15:58"},"returnParameters":{"id":18942,"nodeType":"ParameterList","parameters":[],"src":"29562:0:58"},"scope":19003,"src":"29502:61:58","stateMutability":"nonpayable","virtual":false,"visibility":"external"},{"documentation":{"id":18944,"nodeType":"StructuredDocumentation","src":"29567:191:58","text":" @notice Returns the percentage of available liquidity that can be borrowed at once at stable rate\n @return The percentage of available liquidity to borrow, expressed in bps"},"functionSelector":"e82fec2f","id":18949,"implemented":false,"kind":"function","modifiers":[],"name":"MAX_STABLE_RATE_BORROW_SIZE_PERCENT","nameLocation":"29770:35:58","nodeType":"FunctionDefinition","parameters":{"id":18945,"nodeType":"ParameterList","parameters":[],"src":"29805:2:58"},"returnParameters":{"id":18948,"nodeType":"ParameterList","parameters":[{"constant":false,"id":18947,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":18949,"src":"29831:7:58","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":18946,"name":"uint256","nodeType":"ElementaryTypeName","src":"29831:7:58","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"29830:9:58"},"scope":19003,"src":"29761:79:58","stateMutability":"view","virtual":false,"visibility":"external"},{"documentation":{"id":18950,"nodeType":"StructuredDocumentation","src":"29844:100:58","text":" @notice Returns the total fee on flash loans\n @return The total fee on flashloans"},"functionSelector":"074b2e43","id":18955,"implemented":false,"kind":"function","modifiers":[],"name":"FLASHLOAN_PREMIUM_TOTAL","nameLocation":"29956:23:58","nodeType":"FunctionDefinition","parameters":{"id":18951,"nodeType":"ParameterList","parameters":[],"src":"29979:2:58"},"returnParameters":{"id":18954,"nodeType":"ParameterList","parameters":[{"constant":false,"id":18953,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":18955,"src":"30005:7:58","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint128","typeString":"uint128"},"typeName":{"id":18952,"name":"uint128","nodeType":"ElementaryTypeName","src":"30005:7:58","typeDescriptions":{"typeIdentifier":"t_uint128","typeString":"uint128"}},"visibility":"internal"}],"src":"30004:9:58"},"scope":19003,"src":"29947:67:58","stateMutability":"view","virtual":false,"visibility":"external"},{"documentation":{"id":18956,"nodeType":"StructuredDocumentation","src":"30018:133:58","text":" @notice Returns the part of the bridge fees sent to protocol\n @return The bridge fee sent to the protocol treasury"},"functionSelector":"272d9072","id":18961,"implemented":false,"kind":"function","modifiers":[],"name":"BRIDGE_PROTOCOL_FEE","nameLocation":"30163:19:58","nodeType":"FunctionDefinition","parameters":{"id":18957,"nodeType":"ParameterList","parameters":[],"src":"30182:2:58"},"returnParameters":{"id":18960,"nodeType":"ParameterList","parameters":[{"constant":false,"id":18959,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":18961,"src":"30208:7:58","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":18958,"name":"uint256","nodeType":"ElementaryTypeName","src":"30208:7:58","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"30207:9:58"},"scope":19003,"src":"30154:63:58","stateMutability":"view","virtual":false,"visibility":"external"},{"documentation":{"id":18962,"nodeType":"StructuredDocumentation","src":"30221:139:58","text":" @notice Returns the part of the flashloan fees sent to protocol\n @return The flashloan fee sent to the protocol treasury"},"functionSelector":"6a99c036","id":18967,"implemented":false,"kind":"function","modifiers":[],"name":"FLASHLOAN_PREMIUM_TO_PROTOCOL","nameLocation":"30372:29:58","nodeType":"FunctionDefinition","parameters":{"id":18963,"nodeType":"ParameterList","parameters":[],"src":"30401:2:58"},"returnParameters":{"id":18966,"nodeType":"ParameterList","parameters":[{"constant":false,"id":18965,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":18967,"src":"30427:7:58","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint128","typeString":"uint128"},"typeName":{"id":18964,"name":"uint128","nodeType":"ElementaryTypeName","src":"30427:7:58","typeDescriptions":{"typeIdentifier":"t_uint128","typeString":"uint128"}},"visibility":"internal"}],"src":"30426:9:58"},"scope":19003,"src":"30363:73:58","stateMutability":"view","virtual":false,"visibility":"external"},{"documentation":{"id":18968,"nodeType":"StructuredDocumentation","src":"30440:151:58","text":" @notice Returns the maximum number of reserves supported to be listed in this Pool\n @return The maximum number of reserves supported"},"functionSelector":"f8119d51","id":18973,"implemented":false,"kind":"function","modifiers":[],"name":"MAX_NUMBER_RESERVES","nameLocation":"30603:19:58","nodeType":"FunctionDefinition","parameters":{"id":18969,"nodeType":"ParameterList","parameters":[],"src":"30622:2:58"},"returnParameters":{"id":18972,"nodeType":"ParameterList","parameters":[{"constant":false,"id":18971,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":18973,"src":"30648:6:58","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint16","typeString":"uint16"},"typeName":{"id":18970,"name":"uint16","nodeType":"ElementaryTypeName","src":"30648:6:58","typeDescriptions":{"typeIdentifier":"t_uint16","typeString":"uint16"}},"visibility":"internal"}],"src":"30647:8:58"},"scope":19003,"src":"30594:62:58","stateMutability":"view","virtual":false,"visibility":"external"},{"documentation":{"id":18974,"nodeType":"StructuredDocumentation","src":"30660:197:58","text":" @notice Mints the assets accrued through the reserve factor to the treasury in the form of aTokens\n @param assets The list of reserves for which the minting needs to be executed*"},"functionSelector":"9cd19996","id":18980,"implemented":false,"kind":"function","modifiers":[],"name":"mintToTreasury","nameLocation":"30869:14:58","nodeType":"FunctionDefinition","parameters":{"id":18978,"nodeType":"ParameterList","parameters":[{"constant":false,"id":18977,"mutability":"mutable","name":"assets","nameLocation":"30903:6:58","nodeType":"VariableDeclaration","scope":18980,"src":"30884:25:58","stateVariable":false,"storageLocation":"calldata","typeDescriptions":{"typeIdentifier":"t_array$_t_address_$dyn_calldata_ptr","typeString":"address[]"},"typeName":{"baseType":{"id":18975,"name":"address","nodeType":"ElementaryTypeName","src":"30884:7:58","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"id":18976,"nodeType":"ArrayTypeName","src":"30884:9:58","typeDescriptions":{"typeIdentifier":"t_array$_t_address_$dyn_storage_ptr","typeString":"address[]"}},"visibility":"internal"}],"src":"30883:27:58"},"returnParameters":{"id":18979,"nodeType":"ParameterList","parameters":[],"src":"30919:0:58"},"scope":19003,"src":"30860:60:58","stateMutability":"nonpayable","virtual":false,"visibility":"external"},{"documentation":{"id":18981,"nodeType":"StructuredDocumentation","src":"30924:211:58","text":" @notice Rescue and transfer tokens locked in this contract\n @param token The address of the token\n @param to The address of the recipient\n @param amount The amount of token to transfer"},"functionSelector":"cea9d26f","id":18990,"implemented":false,"kind":"function","modifiers":[],"name":"rescueTokens","nameLocation":"31147:12:58","nodeType":"FunctionDefinition","parameters":{"id":18988,"nodeType":"ParameterList","parameters":[{"constant":false,"id":18983,"mutability":"mutable","name":"token","nameLocation":"31173:5:58","nodeType":"VariableDeclaration","scope":18990,"src":"31165:13:58","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":18982,"name":"address","nodeType":"ElementaryTypeName","src":"31165:7:58","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":18985,"mutability":"mutable","name":"to","nameLocation":"31192:2:58","nodeType":"VariableDeclaration","scope":18990,"src":"31184:10:58","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":18984,"name":"address","nodeType":"ElementaryTypeName","src":"31184:7:58","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":18987,"mutability":"mutable","name":"amount","nameLocation":"31208:6:58","nodeType":"VariableDeclaration","scope":18990,"src":"31200:14:58","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":18986,"name":"uint256","nodeType":"ElementaryTypeName","src":"31200:7:58","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"31159:59:58"},"returnParameters":{"id":18989,"nodeType":"ParameterList","parameters":[],"src":"31227:0:58"},"scope":19003,"src":"31138:90:58","stateMutability":"nonpayable","virtual":false,"visibility":"external"},{"documentation":{"id":18991,"nodeType":"StructuredDocumentation","src":"31232:769:58","text":" @notice Supplies an `amount` of underlying asset into the reserve, receiving in return overlying aTokens.\n - E.g. User supplies 100 USDC and gets in return 100 aUSDC\n @dev Deprecated: Use the `supply` function instead\n @param asset The address of the underlying asset to supply\n @param amount The amount to be supplied\n @param onBehalfOf The address that will receive the aTokens, same as msg.sender if the user\n   wants to receive them on his own wallet, or a different address if the beneficiary of aTokens\n   is a different wallet\n @param referralCode Code used to register the integrator originating the operation, for potential rewards.\n   0 if the action is executed directly by the user, without any middle-man*"},"functionSelector":"e8eda9df","id":19002,"implemented":false,"kind":"function","modifiers":[],"name":"deposit","nameLocation":"32013:7:58","nodeType":"FunctionDefinition","parameters":{"id":19000,"nodeType":"ParameterList","parameters":[{"constant":false,"id":18993,"mutability":"mutable","name":"asset","nameLocation":"32034:5:58","nodeType":"VariableDeclaration","scope":19002,"src":"32026:13:58","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":18992,"name":"address","nodeType":"ElementaryTypeName","src":"32026:7:58","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":18995,"mutability":"mutable","name":"amount","nameLocation":"32053:6:58","nodeType":"VariableDeclaration","scope":19002,"src":"32045:14:58","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":18994,"name":"uint256","nodeType":"ElementaryTypeName","src":"32045:7:58","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":18997,"mutability":"mutable","name":"onBehalfOf","nameLocation":"32073:10:58","nodeType":"VariableDeclaration","scope":19002,"src":"32065:18:58","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":18996,"name":"address","nodeType":"ElementaryTypeName","src":"32065:7:58","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":18999,"mutability":"mutable","name":"referralCode","nameLocation":"32096:12:58","nodeType":"VariableDeclaration","scope":19002,"src":"32089:19:58","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint16","typeString":"uint16"},"typeName":{"id":18998,"name":"uint16","nodeType":"ElementaryTypeName","src":"32089:6:58","typeDescriptions":{"typeIdentifier":"t_uint16","typeString":"uint16"}},"visibility":"internal"}],"src":"32020:92:58"},"returnParameters":{"id":19001,"nodeType":"ParameterList","parameters":[],"src":"32121:0:58"},"scope":19003,"src":"32004:118:58","stateMutability":"nonpayable","virtual":false,"visibility":"external"}],"scope":19004,"src":"273:31851:58","usedErrors":[],"usedEvents":[18386,18397,18410,18421,18439,18452,18462,18469,18476,18483,18490,18497,18515,18532,18547,18554]}],"src":"37:32088:58"},"id":58},"contracts/dependencies/aave-v3/IPoolAddressesProvider.sol":{"ast":{"absolutePath":"contracts/dependencies/aave-v3/IPoolAddressesProvider.sol","exportedSymbols":{"IPoolAddressesProvider":[19212]},"id":19213,"license":"AGPL-3.0","nodeType":"SourceUnit","nodes":[{"id":19005,"literals":["solidity","^","0.8",".0"],"nodeType":"PragmaDirective","src":"37:23:59"},{"abstract":false,"baseContracts":[],"canonicalName":"IPoolAddressesProvider","contractDependencies":[],"contractKind":"interface","documentation":{"id":19006,"nodeType":"StructuredDocumentation","src":"62:127:59","text":" @title IPoolAddressesProvider\n @author Aave\n @notice Defines the basic interface for a Pool Addresses Provider.*"},"fullyImplemented":false,"id":19212,"linearizedBaseContracts":[19212],"name":"IPoolAddressesProvider","nameLocation":"200:22:59","nodeType":"ContractDefinition","nodes":[{"anonymous":false,"documentation":{"id":19007,"nodeType":"StructuredDocumentation","src":"227:164:59","text":" @dev Emitted when the market identifier is updated.\n @param oldMarketId The old id of the market\n @param newMarketId The new id of the market"},"eventSelector":"e685c8cdecc6030c45030fd54778812cb84ed8e4467c38294403d68ba7860823","id":19013,"name":"MarketIdSet","nameLocation":"400:11:59","nodeType":"EventDefinition","parameters":{"id":19012,"nodeType":"ParameterList","parameters":[{"constant":false,"id":19009,"indexed":true,"mutability":"mutable","name":"oldMarketId","nameLocation":"427:11:59","nodeType":"VariableDeclaration","scope":19013,"src":"412:26:59","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string"},"typeName":{"id":19008,"name":"string","nodeType":"ElementaryTypeName","src":"412:6:59","typeDescriptions":{"typeIdentifier":"t_string_storage_ptr","typeString":"string"}},"visibility":"internal"},{"constant":false,"id":19011,"indexed":true,"mutability":"mutable","name":"newMarketId","nameLocation":"455:11:59","nodeType":"VariableDeclaration","scope":19013,"src":"440:26:59","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string"},"typeName":{"id":19010,"name":"string","nodeType":"ElementaryTypeName","src":"440:6:59","typeDescriptions":{"typeIdentifier":"t_string_storage_ptr","typeString":"string"}},"visibility":"internal"}],"src":"411:56:59"},"src":"394:74:59"},{"anonymous":false,"documentation":{"id":19014,"nodeType":"StructuredDocumentation","src":"472:155:59","text":" @dev Emitted when the pool is updated.\n @param oldAddress The old address of the Pool\n @param newAddress The new address of the Pool"},"eventSelector":"90affc163f1a2dfedcd36aa02ed992eeeba8100a4014f0b4cdc20ea265a66627","id":19020,"name":"PoolUpdated","nameLocation":"636:11:59","nodeType":"EventDefinition","parameters":{"id":19019,"nodeType":"ParameterList","parameters":[{"constant":false,"id":19016,"indexed":true,"mutability":"mutable","name":"oldAddress","nameLocation":"664:10:59","nodeType":"VariableDeclaration","scope":19020,"src":"648:26:59","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":19015,"name":"address","nodeType":"ElementaryTypeName","src":"648:7:59","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":19018,"indexed":true,"mutability":"mutable","name":"newAddress","nameLocation":"692:10:59","nodeType":"VariableDeclaration","scope":19020,"src":"676:26:59","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":19017,"name":"address","nodeType":"ElementaryTypeName","src":"676:7:59","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"647:56:59"},"src":"630:74:59"},{"anonymous":false,"documentation":{"id":19021,"nodeType":"StructuredDocumentation","src":"708:192:59","text":" @dev Emitted when the pool configurator is updated.\n @param oldAddress The old address of the PoolConfigurator\n @param newAddress The new address of the PoolConfigurator"},"eventSelector":"8932892569eba59c8382a089d9b732d1f49272878775235761a2a6b0309cd465","id":19027,"name":"PoolConfiguratorUpdated","nameLocation":"909:23:59","nodeType":"EventDefinition","parameters":{"id":19026,"nodeType":"ParameterList","parameters":[{"constant":false,"id":19023,"indexed":true,"mutability":"mutable","name":"oldAddress","nameLocation":"949:10:59","nodeType":"VariableDeclaration","scope":19027,"src":"933:26:59","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":19022,"name":"address","nodeType":"ElementaryTypeName","src":"933:7:59","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":19025,"indexed":true,"mutability":"mutable","name":"newAddress","nameLocation":"977:10:59","nodeType":"VariableDeclaration","scope":19027,"src":"961:26:59","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":19024,"name":"address","nodeType":"ElementaryTypeName","src":"961:7:59","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"932:56:59"},"src":"903:86:59"},{"anonymous":false,"documentation":{"id":19028,"nodeType":"StructuredDocumentation","src":"993:177:59","text":" @dev Emitted when the price oracle is updated.\n @param oldAddress The old address of the PriceOracle\n @param newAddress The new address of the PriceOracle"},"eventSelector":"56b5f80d8cac1479698aa7d01605fd6111e90b15fc4d2b377417f46034876cbd","id":19034,"name":"PriceOracleUpdated","nameLocation":"1179:18:59","nodeType":"EventDefinition","parameters":{"id":19033,"nodeType":"ParameterList","parameters":[{"constant":false,"id":19030,"indexed":true,"mutability":"mutable","name":"oldAddress","nameLocation":"1214:10:59","nodeType":"VariableDeclaration","scope":19034,"src":"1198:26:59","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":19029,"name":"address","nodeType":"ElementaryTypeName","src":"1198:7:59","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":19032,"indexed":true,"mutability":"mutable","name":"newAddress","nameLocation":"1242:10:59","nodeType":"VariableDeclaration","scope":19034,"src":"1226:26:59","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":19031,"name":"address","nodeType":"ElementaryTypeName","src":"1226:7:59","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"1197:56:59"},"src":"1173:81:59"},{"anonymous":false,"documentation":{"id":19035,"nodeType":"StructuredDocumentation","src":"1258:174:59","text":" @dev Emitted when the ACL manager is updated.\n @param oldAddress The old address of the ACLManager\n @param newAddress The new address of the ACLManager"},"eventSelector":"b30efa04327bb8a537d61cc1e5c48095345ad18ef7cc04e6bacf7dfb6caaf507","id":19041,"name":"ACLManagerUpdated","nameLocation":"1441:17:59","nodeType":"EventDefinition","parameters":{"id":19040,"nodeType":"ParameterList","parameters":[{"constant":false,"id":19037,"indexed":true,"mutability":"mutable","name":"oldAddress","nameLocation":"1475:10:59","nodeType":"VariableDeclaration","scope":19041,"src":"1459:26:59","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":19036,"name":"address","nodeType":"ElementaryTypeName","src":"1459:7:59","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":19039,"indexed":true,"mutability":"mutable","name":"newAddress","nameLocation":"1503:10:59","nodeType":"VariableDeclaration","scope":19041,"src":"1487:26:59","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":19038,"name":"address","nodeType":"ElementaryTypeName","src":"1487:7:59","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"1458:56:59"},"src":"1435:80:59"},{"anonymous":false,"documentation":{"id":19042,"nodeType":"StructuredDocumentation","src":"1519:168:59","text":" @dev Emitted when the ACL admin is updated.\n @param oldAddress The old address of the ACLAdmin\n @param newAddress The new address of the ACLAdmin"},"eventSelector":"e9cf53972264dc95304fd424458745019ddfca0e37ae8f703d74772c41ad115b","id":19048,"name":"ACLAdminUpdated","nameLocation":"1696:15:59","nodeType":"EventDefinition","parameters":{"id":19047,"nodeType":"ParameterList","parameters":[{"constant":false,"id":19044,"indexed":true,"mutability":"mutable","name":"oldAddress","nameLocation":"1728:10:59","nodeType":"VariableDeclaration","scope":19048,"src":"1712:26:59","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":19043,"name":"address","nodeType":"ElementaryTypeName","src":"1712:7:59","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":19046,"indexed":true,"mutability":"mutable","name":"newAddress","nameLocation":"1756:10:59","nodeType":"VariableDeclaration","scope":19048,"src":"1740:26:59","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":19045,"name":"address","nodeType":"ElementaryTypeName","src":"1740:7:59","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"1711:56:59"},"src":"1690:78:59"},{"anonymous":false,"documentation":{"id":19049,"nodeType":"StructuredDocumentation","src":"1772:202:59","text":" @dev Emitted when the price oracle sentinel is updated.\n @param oldAddress The old address of the PriceOracleSentinel\n @param newAddress The new address of the PriceOracleSentinel"},"eventSelector":"5326514eeca90494a14bedabcff812a0e683029ee85d1e23824d44fd14cd6ae7","id":19055,"name":"PriceOracleSentinelUpdated","nameLocation":"1983:26:59","nodeType":"EventDefinition","parameters":{"id":19054,"nodeType":"ParameterList","parameters":[{"constant":false,"id":19051,"indexed":true,"mutability":"mutable","name":"oldAddress","nameLocation":"2026:10:59","nodeType":"VariableDeclaration","scope":19055,"src":"2010:26:59","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":19050,"name":"address","nodeType":"ElementaryTypeName","src":"2010:7:59","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":19053,"indexed":true,"mutability":"mutable","name":"newAddress","nameLocation":"2054:10:59","nodeType":"VariableDeclaration","scope":19055,"src":"2038:26:59","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":19052,"name":"address","nodeType":"ElementaryTypeName","src":"2038:7:59","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"2009:56:59"},"src":"1977:89:59"},{"anonymous":false,"documentation":{"id":19056,"nodeType":"StructuredDocumentation","src":"2070:193:59","text":" @dev Emitted when the pool data provider is updated.\n @param oldAddress The old address of the PoolDataProvider\n @param newAddress The new address of the PoolDataProvider"},"eventSelector":"c853974cfbf81487a14a23565917bee63f527853bcb5fa54f2ae1cdf8a38356d","id":19062,"name":"PoolDataProviderUpdated","nameLocation":"2272:23:59","nodeType":"EventDefinition","parameters":{"id":19061,"nodeType":"ParameterList","parameters":[{"constant":false,"id":19058,"indexed":true,"mutability":"mutable","name":"oldAddress","nameLocation":"2312:10:59","nodeType":"VariableDeclaration","scope":19062,"src":"2296:26:59","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":19057,"name":"address","nodeType":"ElementaryTypeName","src":"2296:7:59","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":19060,"indexed":true,"mutability":"mutable","name":"newAddress","nameLocation":"2340:10:59","nodeType":"VariableDeclaration","scope":19062,"src":"2324:26:59","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":19059,"name":"address","nodeType":"ElementaryTypeName","src":"2324:7:59","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"2295:56:59"},"src":"2266:86:59"},{"anonymous":false,"documentation":{"id":19063,"nodeType":"StructuredDocumentation","src":"2356:243:59","text":" @dev Emitted when a new proxy is created.\n @param id The identifier of the proxy\n @param proxyAddress The address of the created proxy contract\n @param implementationAddress The address of the implementation contract"},"eventSelector":"4a465a9bd819d9662563c1e11ae958f8109e437e7f4bf1c6ef0b9a7b3f35d478","id":19071,"name":"ProxyCreated","nameLocation":"2608:12:59","nodeType":"EventDefinition","parameters":{"id":19070,"nodeType":"ParameterList","parameters":[{"constant":false,"id":19065,"indexed":true,"mutability":"mutable","name":"id","nameLocation":"2642:2:59","nodeType":"VariableDeclaration","scope":19071,"src":"2626:18:59","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":19064,"name":"bytes32","nodeType":"ElementaryTypeName","src":"2626:7:59","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"},{"constant":false,"id":19067,"indexed":true,"mutability":"mutable","name":"proxyAddress","nameLocation":"2666:12:59","nodeType":"VariableDeclaration","scope":19071,"src":"2650:28:59","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":19066,"name":"address","nodeType":"ElementaryTypeName","src":"2650:7:59","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":19069,"indexed":true,"mutability":"mutable","name":"implementationAddress","nameLocation":"2700:21:59","nodeType":"VariableDeclaration","scope":19071,"src":"2684:37:59","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":19068,"name":"address","nodeType":"ElementaryTypeName","src":"2684:7:59","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"2620:105:59"},"src":"2602:124:59"},{"anonymous":false,"documentation":{"id":19072,"nodeType":"StructuredDocumentation","src":"2730:238:59","text":" @dev Emitted when a new non-proxied contract address is registered.\n @param id The identifier of the contract\n @param oldAddress The address of the old contract\n @param newAddress The address of the new contract"},"eventSelector":"9ef0e8c8e52743bb38b83b17d9429141d494b8041ca6d616a6c77cebae9cd8b7","id":19080,"name":"AddressSet","nameLocation":"2977:10:59","nodeType":"EventDefinition","parameters":{"id":19079,"nodeType":"ParameterList","parameters":[{"constant":false,"id":19074,"indexed":true,"mutability":"mutable","name":"id","nameLocation":"3004:2:59","nodeType":"VariableDeclaration","scope":19080,"src":"2988:18:59","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":19073,"name":"bytes32","nodeType":"ElementaryTypeName","src":"2988:7:59","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"},{"constant":false,"id":19076,"indexed":true,"mutability":"mutable","name":"oldAddress","nameLocation":"3024:10:59","nodeType":"VariableDeclaration","scope":19080,"src":"3008:26:59","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":19075,"name":"address","nodeType":"ElementaryTypeName","src":"3008:7:59","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":19078,"indexed":true,"mutability":"mutable","name":"newAddress","nameLocation":"3052:10:59","nodeType":"VariableDeclaration","scope":19080,"src":"3036:26:59","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":19077,"name":"address","nodeType":"ElementaryTypeName","src":"3036:7:59","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"2987:76:59"},"src":"2971:93:59"},{"anonymous":false,"documentation":{"id":19081,"nodeType":"StructuredDocumentation","src":"3068:367:59","text":" @dev Emitted when the implementation of the proxy registered with id is updated\n @param id The identifier of the contract\n @param proxyAddress The address of the proxy contract\n @param oldImplementationAddress The address of the old implementation contract\n @param newImplementationAddress The address of the new implementation contract"},"eventSelector":"3bbd45b5429b385e3fb37ad5cd1cd1435a3c8ec32196c7937597365a3fd3e99c","id":19091,"name":"AddressSetAsProxy","nameLocation":"3444:17:59","nodeType":"EventDefinition","parameters":{"id":19090,"nodeType":"ParameterList","parameters":[{"constant":false,"id":19083,"indexed":true,"mutability":"mutable","name":"id","nameLocation":"3483:2:59","nodeType":"VariableDeclaration","scope":19091,"src":"3467:18:59","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":19082,"name":"bytes32","nodeType":"ElementaryTypeName","src":"3467:7:59","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"},{"constant":false,"id":19085,"indexed":true,"mutability":"mutable","name":"proxyAddress","nameLocation":"3507:12:59","nodeType":"VariableDeclaration","scope":19091,"src":"3491:28:59","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":19084,"name":"address","nodeType":"ElementaryTypeName","src":"3491:7:59","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":19087,"indexed":false,"mutability":"mutable","name":"oldImplementationAddress","nameLocation":"3533:24:59","nodeType":"VariableDeclaration","scope":19091,"src":"3525:32:59","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":19086,"name":"address","nodeType":"ElementaryTypeName","src":"3525:7:59","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":19089,"indexed":true,"mutability":"mutable","name":"newImplementationAddress","nameLocation":"3579:24:59","nodeType":"VariableDeclaration","scope":19091,"src":"3563:40:59","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":19088,"name":"address","nodeType":"ElementaryTypeName","src":"3563:7:59","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"3461:146:59"},"src":"3438:170:59"},{"documentation":{"id":19092,"nodeType":"StructuredDocumentation","src":"3612:118:59","text":" @notice Returns the id of the Aave market to which this contract points to.\n @return The market id*"},"functionSelector":"568ef470","id":19097,"implemented":false,"kind":"function","modifiers":[],"name":"getMarketId","nameLocation":"3742:11:59","nodeType":"FunctionDefinition","parameters":{"id":19093,"nodeType":"ParameterList","parameters":[],"src":"3753:2:59"},"returnParameters":{"id":19096,"nodeType":"ParameterList","parameters":[{"constant":false,"id":19095,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":19097,"src":"3779:13:59","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string"},"typeName":{"id":19094,"name":"string","nodeType":"ElementaryTypeName","src":"3779:6:59","typeDescriptions":{"typeIdentifier":"t_string_storage_ptr","typeString":"string"}},"visibility":"internal"}],"src":"3778:15:59"},"scope":19212,"src":"3733:61:59","stateMutability":"view","virtual":false,"visibility":"external"},{"documentation":{"id":19098,"nodeType":"StructuredDocumentation","src":"3798:252:59","text":" @notice Associates an id with a specific PoolAddressesProvider.\n @dev This can be used to create an onchain registry of PoolAddressesProviders to\n identify and validate multiple Aave markets.\n @param newMarketId The market id"},"functionSelector":"f67b1847","id":19103,"implemented":false,"kind":"function","modifiers":[],"name":"setMarketId","nameLocation":"4062:11:59","nodeType":"FunctionDefinition","parameters":{"id":19101,"nodeType":"ParameterList","parameters":[{"constant":false,"id":19100,"mutability":"mutable","name":"newMarketId","nameLocation":"4090:11:59","nodeType":"VariableDeclaration","scope":19103,"src":"4074:27:59","stateVariable":false,"storageLocation":"calldata","typeDescriptions":{"typeIdentifier":"t_string_calldata_ptr","typeString":"string"},"typeName":{"id":19099,"name":"string","nodeType":"ElementaryTypeName","src":"4074:6:59","typeDescriptions":{"typeIdentifier":"t_string_storage_ptr","typeString":"string"}},"visibility":"internal"}],"src":"4073:29:59"},"returnParameters":{"id":19102,"nodeType":"ParameterList","parameters":[],"src":"4111:0:59"},"scope":19212,"src":"4053:59:59","stateMutability":"nonpayable","virtual":false,"visibility":"external"},{"documentation":{"id":19104,"nodeType":"StructuredDocumentation","src":"4116:306:59","text":" @notice Returns an address by its identifier.\n @dev The returned address might be an EOA or a contract, potentially proxied\n @dev It returns ZERO if there is no registered address with the given id\n @param id The id\n @return The address of the registered for the specified id"},"functionSelector":"21f8a721","id":19111,"implemented":false,"kind":"function","modifiers":[],"name":"getAddress","nameLocation":"4434:10:59","nodeType":"FunctionDefinition","parameters":{"id":19107,"nodeType":"ParameterList","parameters":[{"constant":false,"id":19106,"mutability":"mutable","name":"id","nameLocation":"4453:2:59","nodeType":"VariableDeclaration","scope":19111,"src":"4445:10:59","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":19105,"name":"bytes32","nodeType":"ElementaryTypeName","src":"4445:7:59","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"}],"src":"4444:12:59"},"returnParameters":{"id":19110,"nodeType":"ParameterList","parameters":[{"constant":false,"id":19109,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":19111,"src":"4480:7:59","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":19108,"name":"address","nodeType":"ElementaryTypeName","src":"4480:7:59","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"4479:9:59"},"scope":19212,"src":"4425:64:59","stateMutability":"view","virtual":false,"visibility":"external"},{"documentation":{"id":19112,"nodeType":"StructuredDocumentation","src":"4493:485:59","text":" @notice General function to update the implementation of a proxy registered with\n certain `id`. If there is no proxy registered, it will instantiate one and\n set as implementation the `newImplementationAddress`.\n @dev IMPORTANT Use this function carefully, only for ids that don't have an explicit\n setter function, in order to avoid unexpected consequences\n @param id The id\n @param newImplementationAddress The address of the new implementation"},"functionSelector":"5dcc528c","id":19119,"implemented":false,"kind":"function","modifiers":[],"name":"setAddressAsProxy","nameLocation":"4990:17:59","nodeType":"FunctionDefinition","parameters":{"id":19117,"nodeType":"ParameterList","parameters":[{"constant":false,"id":19114,"mutability":"mutable","name":"id","nameLocation":"5016:2:59","nodeType":"VariableDeclaration","scope":19119,"src":"5008:10:59","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":19113,"name":"bytes32","nodeType":"ElementaryTypeName","src":"5008:7:59","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"},{"constant":false,"id":19116,"mutability":"mutable","name":"newImplementationAddress","nameLocation":"5028:24:59","nodeType":"VariableDeclaration","scope":19119,"src":"5020:32:59","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":19115,"name":"address","nodeType":"ElementaryTypeName","src":"5020:7:59","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"5007:46:59"},"returnParameters":{"id":19118,"nodeType":"ParameterList","parameters":[],"src":"5062:0:59"},"scope":19212,"src":"4981:82:59","stateMutability":"nonpayable","virtual":false,"visibility":"external"},{"documentation":{"id":19120,"nodeType":"StructuredDocumentation","src":"5067:244:59","text":" @notice Sets an address for an id replacing the address saved in the addresses map.\n @dev IMPORTANT Use this function carefully, as it will do a hard replacement\n @param id The id\n @param newAddress The address to set"},"functionSelector":"ca446dd9","id":19127,"implemented":false,"kind":"function","modifiers":[],"name":"setAddress","nameLocation":"5323:10:59","nodeType":"FunctionDefinition","parameters":{"id":19125,"nodeType":"ParameterList","parameters":[{"constant":false,"id":19122,"mutability":"mutable","name":"id","nameLocation":"5342:2:59","nodeType":"VariableDeclaration","scope":19127,"src":"5334:10:59","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":19121,"name":"bytes32","nodeType":"ElementaryTypeName","src":"5334:7:59","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"},{"constant":false,"id":19124,"mutability":"mutable","name":"newAddress","nameLocation":"5354:10:59","nodeType":"VariableDeclaration","scope":19127,"src":"5346:18:59","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":19123,"name":"address","nodeType":"ElementaryTypeName","src":"5346:7:59","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"5333:32:59"},"returnParameters":{"id":19126,"nodeType":"ParameterList","parameters":[],"src":"5374:0:59"},"scope":19212,"src":"5314:61:59","stateMutability":"nonpayable","virtual":false,"visibility":"external"},{"documentation":{"id":19128,"nodeType":"StructuredDocumentation","src":"5379:98:59","text":" @notice Returns the address of the Pool proxy.\n @return The Pool proxy address*"},"functionSelector":"026b1d5f","id":19133,"implemented":false,"kind":"function","modifiers":[],"name":"getPool","nameLocation":"5489:7:59","nodeType":"FunctionDefinition","parameters":{"id":19129,"nodeType":"ParameterList","parameters":[],"src":"5496:2:59"},"returnParameters":{"id":19132,"nodeType":"ParameterList","parameters":[{"constant":false,"id":19131,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":19133,"src":"5522:7:59","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":19130,"name":"address","nodeType":"ElementaryTypeName","src":"5522:7:59","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"5521:9:59"},"scope":19212,"src":"5480:51:59","stateMutability":"view","virtual":false,"visibility":"external"},{"documentation":{"id":19134,"nodeType":"StructuredDocumentation","src":"5535:225:59","text":" @notice Updates the implementation of the Pool, or creates a proxy\n setting the new `pool` implementation when the function is called for the first time.\n @param newPoolImpl The new Pool implementation*"},"functionSelector":"a1564406","id":19139,"implemented":false,"kind":"function","modifiers":[],"name":"setPoolImpl","nameLocation":"5772:11:59","nodeType":"FunctionDefinition","parameters":{"id":19137,"nodeType":"ParameterList","parameters":[{"constant":false,"id":19136,"mutability":"mutable","name":"newPoolImpl","nameLocation":"5792:11:59","nodeType":"VariableDeclaration","scope":19139,"src":"5784:19:59","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":19135,"name":"address","nodeType":"ElementaryTypeName","src":"5784:7:59","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"5783:21:59"},"returnParameters":{"id":19138,"nodeType":"ParameterList","parameters":[],"src":"5813:0:59"},"scope":19212,"src":"5763:51:59","stateMutability":"nonpayable","virtual":false,"visibility":"external"},{"documentation":{"id":19140,"nodeType":"StructuredDocumentation","src":"5818:122:59","text":" @notice Returns the address of the PoolConfigurator proxy.\n @return The PoolConfigurator proxy address*"},"functionSelector":"631adfca","id":19145,"implemented":false,"kind":"function","modifiers":[],"name":"getPoolConfigurator","nameLocation":"5952:19:59","nodeType":"FunctionDefinition","parameters":{"id":19141,"nodeType":"ParameterList","parameters":[],"src":"5971:2:59"},"returnParameters":{"id":19144,"nodeType":"ParameterList","parameters":[{"constant":false,"id":19143,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":19145,"src":"5997:7:59","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":19142,"name":"address","nodeType":"ElementaryTypeName","src":"5997:7:59","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"5996:9:59"},"scope":19212,"src":"5943:63:59","stateMutability":"view","virtual":false,"visibility":"external"},{"documentation":{"id":19146,"nodeType":"StructuredDocumentation","src":"6010:273:59","text":" @notice Updates the implementation of the PoolConfigurator, or creates a proxy\n setting the new `PoolConfigurator` implementation when the function is called for the first time.\n @param newPoolConfiguratorImpl The new PoolConfigurator implementation*"},"functionSelector":"e4ca28b7","id":19151,"implemented":false,"kind":"function","modifiers":[],"name":"setPoolConfiguratorImpl","nameLocation":"6295:23:59","nodeType":"FunctionDefinition","parameters":{"id":19149,"nodeType":"ParameterList","parameters":[{"constant":false,"id":19148,"mutability":"mutable","name":"newPoolConfiguratorImpl","nameLocation":"6327:23:59","nodeType":"VariableDeclaration","scope":19151,"src":"6319:31:59","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":19147,"name":"address","nodeType":"ElementaryTypeName","src":"6319:7:59","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"6318:33:59"},"returnParameters":{"id":19150,"nodeType":"ParameterList","parameters":[],"src":"6360:0:59"},"scope":19212,"src":"6286:75:59","stateMutability":"nonpayable","virtual":false,"visibility":"external"},{"documentation":{"id":19152,"nodeType":"StructuredDocumentation","src":"6365:107:59","text":" @notice Returns the address of the price oracle.\n @return The address of the PriceOracle"},"functionSelector":"fca513a8","id":19157,"implemented":false,"kind":"function","modifiers":[],"name":"getPriceOracle","nameLocation":"6484:14:59","nodeType":"FunctionDefinition","parameters":{"id":19153,"nodeType":"ParameterList","parameters":[],"src":"6498:2:59"},"returnParameters":{"id":19156,"nodeType":"ParameterList","parameters":[{"constant":false,"id":19155,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":19157,"src":"6524:7:59","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":19154,"name":"address","nodeType":"ElementaryTypeName","src":"6524:7:59","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"6523:9:59"},"scope":19212,"src":"6475:58:59","stateMutability":"view","virtual":false,"visibility":"external"},{"documentation":{"id":19158,"nodeType":"StructuredDocumentation","src":"6537:125:59","text":" @notice Updates the address of the price oracle.\n @param newPriceOracle The address of the new PriceOracle"},"functionSelector":"530e784f","id":19163,"implemented":false,"kind":"function","modifiers":[],"name":"setPriceOracle","nameLocation":"6674:14:59","nodeType":"FunctionDefinition","parameters":{"id":19161,"nodeType":"ParameterList","parameters":[{"constant":false,"id":19160,"mutability":"mutable","name":"newPriceOracle","nameLocation":"6697:14:59","nodeType":"VariableDeclaration","scope":19163,"src":"6689:22:59","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":19159,"name":"address","nodeType":"ElementaryTypeName","src":"6689:7:59","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"6688:24:59"},"returnParameters":{"id":19162,"nodeType":"ParameterList","parameters":[],"src":"6721:0:59"},"scope":19212,"src":"6665:57:59","stateMutability":"nonpayable","virtual":false,"visibility":"external"},{"documentation":{"id":19164,"nodeType":"StructuredDocumentation","src":"6726:105:59","text":" @notice Returns the address of the ACL manager.\n @return The address of the ACLManager"},"functionSelector":"707cd716","id":19169,"implemented":false,"kind":"function","modifiers":[],"name":"getACLManager","nameLocation":"6843:13:59","nodeType":"FunctionDefinition","parameters":{"id":19165,"nodeType":"ParameterList","parameters":[],"src":"6856:2:59"},"returnParameters":{"id":19168,"nodeType":"ParameterList","parameters":[{"constant":false,"id":19167,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":19169,"src":"6882:7:59","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":19166,"name":"address","nodeType":"ElementaryTypeName","src":"6882:7:59","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"6881:9:59"},"scope":19212,"src":"6834:57:59","stateMutability":"view","virtual":false,"visibility":"external"},{"documentation":{"id":19170,"nodeType":"StructuredDocumentation","src":"6895:123:59","text":" @notice Updates the address of the ACL manager.\n @param newAclManager The address of the new ACLManager*"},"functionSelector":"ed301ca9","id":19175,"implemented":false,"kind":"function","modifiers":[],"name":"setACLManager","nameLocation":"7030:13:59","nodeType":"FunctionDefinition","parameters":{"id":19173,"nodeType":"ParameterList","parameters":[{"constant":false,"id":19172,"mutability":"mutable","name":"newAclManager","nameLocation":"7052:13:59","nodeType":"VariableDeclaration","scope":19175,"src":"7044:21:59","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":19171,"name":"address","nodeType":"ElementaryTypeName","src":"7044:7:59","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"7043:23:59"},"returnParameters":{"id":19174,"nodeType":"ParameterList","parameters":[],"src":"7075:0:59"},"scope":19212,"src":"7021:55:59","stateMutability":"nonpayable","virtual":false,"visibility":"external"},{"documentation":{"id":19176,"nodeType":"StructuredDocumentation","src":"7080:102:59","text":" @notice Returns the address of the ACL admin.\n @return The address of the ACL admin"},"functionSelector":"0e67178c","id":19181,"implemented":false,"kind":"function","modifiers":[],"name":"getACLAdmin","nameLocation":"7194:11:59","nodeType":"FunctionDefinition","parameters":{"id":19177,"nodeType":"ParameterList","parameters":[],"src":"7205:2:59"},"returnParameters":{"id":19180,"nodeType":"ParameterList","parameters":[{"constant":false,"id":19179,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":19181,"src":"7231:7:59","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":19178,"name":"address","nodeType":"ElementaryTypeName","src":"7231:7:59","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"7230:9:59"},"scope":19212,"src":"7185:55:59","stateMutability":"view","virtual":false,"visibility":"external"},{"documentation":{"id":19182,"nodeType":"StructuredDocumentation","src":"7244:117:59","text":" @notice Updates the address of the ACL admin.\n @param newAclAdmin The address of the new ACL admin"},"functionSelector":"76d84ffc","id":19187,"implemented":false,"kind":"function","modifiers":[],"name":"setACLAdmin","nameLocation":"7373:11:59","nodeType":"FunctionDefinition","parameters":{"id":19185,"nodeType":"ParameterList","parameters":[{"constant":false,"id":19184,"mutability":"mutable","name":"newAclAdmin","nameLocation":"7393:11:59","nodeType":"VariableDeclaration","scope":19187,"src":"7385:19:59","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":19183,"name":"address","nodeType":"ElementaryTypeName","src":"7385:7:59","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"7384:21:59"},"returnParameters":{"id":19186,"nodeType":"ParameterList","parameters":[],"src":"7414:0:59"},"scope":19212,"src":"7364:51:59","stateMutability":"nonpayable","virtual":false,"visibility":"external"},{"documentation":{"id":19188,"nodeType":"StructuredDocumentation","src":"7419:124:59","text":" @notice Returns the address of the price oracle sentinel.\n @return The address of the PriceOracleSentinel"},"functionSelector":"5eb88d3d","id":19193,"implemented":false,"kind":"function","modifiers":[],"name":"getPriceOracleSentinel","nameLocation":"7555:22:59","nodeType":"FunctionDefinition","parameters":{"id":19189,"nodeType":"ParameterList","parameters":[],"src":"7577:2:59"},"returnParameters":{"id":19192,"nodeType":"ParameterList","parameters":[{"constant":false,"id":19191,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":19193,"src":"7603:7:59","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":19190,"name":"address","nodeType":"ElementaryTypeName","src":"7603:7:59","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"7602:9:59"},"scope":19212,"src":"7546:66:59","stateMutability":"view","virtual":false,"visibility":"external"},{"documentation":{"id":19194,"nodeType":"StructuredDocumentation","src":"7616:151:59","text":" @notice Updates the address of the price oracle sentinel.\n @param newPriceOracleSentinel The address of the new PriceOracleSentinel*"},"functionSelector":"74944cec","id":19199,"implemented":false,"kind":"function","modifiers":[],"name":"setPriceOracleSentinel","nameLocation":"7779:22:59","nodeType":"FunctionDefinition","parameters":{"id":19197,"nodeType":"ParameterList","parameters":[{"constant":false,"id":19196,"mutability":"mutable","name":"newPriceOracleSentinel","nameLocation":"7810:22:59","nodeType":"VariableDeclaration","scope":19199,"src":"7802:30:59","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":19195,"name":"address","nodeType":"ElementaryTypeName","src":"7802:7:59","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"7801:32:59"},"returnParameters":{"id":19198,"nodeType":"ParameterList","parameters":[],"src":"7842:0:59"},"scope":19212,"src":"7770:73:59","stateMutability":"nonpayable","virtual":false,"visibility":"external"},{"documentation":{"id":19200,"nodeType":"StructuredDocumentation","src":"7847:109:59","text":" @notice Returns the address of the data provider.\n @return The address of the DataProvider"},"functionSelector":"e860accb","id":19205,"implemented":false,"kind":"function","modifiers":[],"name":"getPoolDataProvider","nameLocation":"7968:19:59","nodeType":"FunctionDefinition","parameters":{"id":19201,"nodeType":"ParameterList","parameters":[],"src":"7987:2:59"},"returnParameters":{"id":19204,"nodeType":"ParameterList","parameters":[{"constant":false,"id":19203,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":19205,"src":"8013:7:59","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":19202,"name":"address","nodeType":"ElementaryTypeName","src":"8013:7:59","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"8012:9:59"},"scope":19212,"src":"7959:63:59","stateMutability":"view","virtual":false,"visibility":"external"},{"documentation":{"id":19206,"nodeType":"StructuredDocumentation","src":"8026:129:59","text":" @notice Updates the address of the data provider.\n @param newDataProvider The address of the new DataProvider*"},"functionSelector":"e44e9ed1","id":19211,"implemented":false,"kind":"function","modifiers":[],"name":"setPoolDataProvider","nameLocation":"8167:19:59","nodeType":"FunctionDefinition","parameters":{"id":19209,"nodeType":"ParameterList","parameters":[{"constant":false,"id":19208,"mutability":"mutable","name":"newDataProvider","nameLocation":"8195:15:59","nodeType":"VariableDeclaration","scope":19211,"src":"8187:23:59","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":19207,"name":"address","nodeType":"ElementaryTypeName","src":"8187:7:59","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"8186:25:59"},"returnParameters":{"id":19210,"nodeType":"ParameterList","parameters":[],"src":"8220:0:59"},"scope":19212,"src":"8158:63:59","stateMutability":"nonpayable","virtual":false,"visibility":"external"}],"scope":19213,"src":"190:8033:59","usedErrors":[],"usedEvents":[19013,19020,19027,19034,19041,19048,19055,19062,19071,19080,19091]}],"src":"37:8187:59"},"id":59},"contracts/dependencies/aave-v3/ReserveConfiguration.sol":{"ast":{"absolutePath":"contracts/dependencies/aave-v3/ReserveConfiguration.sol","exportedSymbols":{"DataTypes":[18092],"Errors":[18366],"ReserveConfiguration":[20496]},"id":20497,"license":"BUSL-1.1","nodeType":"SourceUnit","nodes":[{"id":19214,"literals":["solidity","^","0.8",".0"],"nodeType":"PragmaDirective","src":"37:23:60"},{"absolutePath":"contracts/dependencies/aave-v3/Errors.sol","file":"./Errors.sol","id":19216,"nameLocation":"-1:-1:-1","nodeType":"ImportDirective","scope":20497,"sourceUnit":18367,"src":"62:36:60","symbolAliases":[{"foreign":{"id":19215,"name":"Errors","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":18366,"src":"70:6:60","typeDescriptions":{}},"nameLocation":"-1:-1:-1"}],"unitAlias":""},{"absolutePath":"contracts/dependencies/aave-v3/DataTypes.sol","file":"./DataTypes.sol","id":19218,"nameLocation":"-1:-1:-1","nodeType":"ImportDirective","scope":20497,"sourceUnit":18093,"src":"99:42:60","symbolAliases":[{"foreign":{"id":19217,"name":"DataTypes","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":18092,"src":"107:9:60","typeDescriptions":{}},"nameLocation":"-1:-1:-1"}],"unitAlias":""},{"abstract":false,"baseContracts":[],"canonicalName":"ReserveConfiguration","contractDependencies":[],"contractKind":"library","documentation":{"id":19219,"nodeType":"StructuredDocumentation","src":"143:137:60","text":" @title ReserveConfiguration library\n @author Aave\n @notice Implements the bitmap logic to handle the reserve configuration"},"fullyImplemented":true,"id":20496,"linearizedBaseContracts":[20496],"name":"ReserveConfiguration","nameLocation":"289:20:60","nodeType":"ContractDefinition","nodes":[{"constant":true,"id":19222,"mutability":"constant","name":"LTV_MASK","nameLocation":"340:8:60","nodeType":"VariableDeclaration","scope":20496,"src":"314:125:60","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":19220,"name":"uint256","nodeType":"ElementaryTypeName","src":"314:7:60","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"value":{"hexValue":"307846464646464646464646464646464646464646464646464646464646464646464646464646464646464646464646464646464646464646464646464630303030","id":19221,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"373:66:60","typeDescriptions":{"typeIdentifier":"t_rational_115792089237316195423570985008687907853269984665640564039457584007913129574400_by_1","typeString":"int_const 1157...(70 digits omitted)...4400"},"value":"0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF0000"},"visibility":"internal"},{"constant":true,"id":19225,"mutability":"constant","name":"LIQUIDATION_THRESHOLD_MASK","nameLocation":"488:26:60","nodeType":"VariableDeclaration","scope":20496,"src":"462:125:60","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":19223,"name":"uint256","nodeType":"ElementaryTypeName","src":"462:7:60","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"value":{"hexValue":"307846464646464646464646464646464646464646464646464646464646464646464646464646464646464646464646464646464646464646463030303046464646","id":19224,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"521:66:60","typeDescriptions":{"typeIdentifier":"t_rational_115792089237316195423570985008687907853269984665640564039457584007908834738175_by_1","typeString":"int_const 1157...(70 digits omitted)...8175"},"value":"0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF0000FFFF"},"visibility":"internal"},{"constant":true,"id":19228,"mutability":"constant","name":"LIQUIDATION_BONUS_MASK","nameLocation":"636:22:60","nodeType":"VariableDeclaration","scope":20496,"src":"610:125:60","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":19226,"name":"uint256","nodeType":"ElementaryTypeName","src":"610:7:60","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"value":{"hexValue":"307846464646464646464646464646464646464646464646464646464646464646464646464646464646464646464646464646464646303030304646464646464646","id":19227,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"669:66:60","typeDescriptions":{"typeIdentifier":"t_rational_115792089237316195423570985008687907853269984665640564039457583726442447896575_by_1","typeString":"int_const 1157...(70 digits omitted)...6575"},"value":"0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF0000FFFFFFFF"},"visibility":"internal"},{"constant":true,"id":19231,"mutability":"constant","name":"DECIMALS_MASK","nameLocation":"784:13:60","nodeType":"VariableDeclaration","scope":20496,"src":"758:125:60","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":19229,"name":"uint256","nodeType":"ElementaryTypeName","src":"758:7:60","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"value":{"hexValue":"307846464646464646464646464646464646464646464646464646464646464646464646464646464646464646464646464646463030464646464646464646464646","id":19230,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"817:66:60","typeDescriptions":{"typeIdentifier":"t_rational_115792089237316195423570985008687907853269984665640564039457512231794068422655_by_1","typeString":"int_const 1157...(70 digits omitted)...2655"},"value":"0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF00FFFFFFFFFFFF"},"visibility":"internal"},{"constant":true,"id":19234,"mutability":"constant","name":"ACTIVE_MASK","nameLocation":"932:11:60","nodeType":"VariableDeclaration","scope":20496,"src":"906:125:60","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":19232,"name":"uint256","nodeType":"ElementaryTypeName","src":"906:7:60","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"value":{"hexValue":"307846464646464646464646464646464646464646464646464646464646464646464646464646464646464646464646464646454646464646464646464646464646","id":19233,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"965:66:60","typeDescriptions":{"typeIdentifier":"t_rational_115792089237316195423570985008687907853269984665640564039457511950319091711999_by_1","typeString":"int_const 1157...(70 digits omitted)...1999"},"value":"0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFEFFFFFFFFFFFFFF"},"visibility":"internal"},{"constant":true,"id":19237,"mutability":"constant","name":"FROZEN_MASK","nameLocation":"1080:11:60","nodeType":"VariableDeclaration","scope":20496,"src":"1054:125:60","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":19235,"name":"uint256","nodeType":"ElementaryTypeName","src":"1054:7:60","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"value":{"hexValue":"307846464646464646464646464646464646464646464646464646464646464646464646464646464646464646464646464646444646464646464646464646464646","id":19236,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"1113:66:60","typeDescriptions":{"typeIdentifier":"t_rational_115792089237316195423570985008687907853269984665640564039457439892725053784063_by_1","typeString":"int_const 1157...(70 digits omitted)...4063"},"value":"0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFDFFFFFFFFFFFFFF"},"visibility":"internal"},{"constant":true,"id":19240,"mutability":"constant","name":"BORROWING_MASK","nameLocation":"1228:14:60","nodeType":"VariableDeclaration","scope":20496,"src":"1202:125:60","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":19238,"name":"uint256","nodeType":"ElementaryTypeName","src":"1202:7:60","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"value":{"hexValue":"307846464646464646464646464646464646464646464646464646464646464646464646464646464646464646464646464646424646464646464646464646464646","id":19239,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"1261:66:60","typeDescriptions":{"typeIdentifier":"t_rational_115792089237316195423570985008687907853269984665640564039457295777536977928191_by_1","typeString":"int_const 1157...(70 digits omitted)...8191"},"value":"0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFBFFFFFFFFFFFFFF"},"visibility":"internal"},{"constant":true,"id":19243,"mutability":"constant","name":"STABLE_BORROWING_MASK","nameLocation":"1376:21:60","nodeType":"VariableDeclaration","scope":20496,"src":"1350:125:60","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":19241,"name":"uint256","nodeType":"ElementaryTypeName","src":"1350:7:60","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"value":{"hexValue":"307846464646464646464646464646464646464646464646464646464646464646464646464646464646464646464646464646374646464646464646464646464646","id":19242,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"1409:66:60","typeDescriptions":{"typeIdentifier":"t_rational_115792089237316195423570985008687907853269984665640564039457007547160826216447_by_1","typeString":"int_const 1157...(70 digits omitted)...6447"},"value":"0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF7FFFFFFFFFFFFFF"},"visibility":"internal"},{"constant":true,"id":19246,"mutability":"constant","name":"PAUSED_MASK","nameLocation":"1524:11:60","nodeType":"VariableDeclaration","scope":20496,"src":"1498:125:60","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":19244,"name":"uint256","nodeType":"ElementaryTypeName","src":"1498:7:60","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"value":{"hexValue":"307846464646464646464646464646464646464646464646464646464646464646464646464646464646464646464646464645464646464646464646464646464646","id":19245,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"1557:66:60","typeDescriptions":{"typeIdentifier":"t_rational_115792089237316195423570985008687907853269984665640564039456431086408522792959_by_1","typeString":"int_const 1157...(70 digits omitted)...2959"},"value":"0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFEFFFFFFFFFFFFFFF"},"visibility":"internal"},{"constant":true,"id":19249,"mutability":"constant","name":"BORROWABLE_IN_ISOLATION_MASK","nameLocation":"1672:28:60","nodeType":"VariableDeclaration","scope":20496,"src":"1646:125:60","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":19247,"name":"uint256","nodeType":"ElementaryTypeName","src":"1646:7:60","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"value":{"hexValue":"307846464646464646464646464646464646464646464646464646464646464646464646464646464646464646464646464644464646464646464646464646464646","id":19248,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"1705:66:60","typeDescriptions":{"typeIdentifier":"t_rational_115792089237316195423570985008687907853269984665640564039455278164903915945983_by_1","typeString":"int_const 1157...(70 digits omitted)...5983"},"value":"0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFDFFFFFFFFFFFFFFF"},"visibility":"internal"},{"constant":true,"id":19252,"mutability":"constant","name":"SILOED_BORROWING_MASK","nameLocation":"1820:21:60","nodeType":"VariableDeclaration","scope":20496,"src":"1794:125:60","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":19250,"name":"uint256","nodeType":"ElementaryTypeName","src":"1794:7:60","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"value":{"hexValue":"307846464646464646464646464646464646464646464646464646464646464646464646464646464646464646464646464642464646464646464646464646464646","id":19251,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"1853:66:60","typeDescriptions":{"typeIdentifier":"t_rational_115792089237316195423570985008687907853269984665640564039452972321894702252031_by_1","typeString":"int_const 1157...(70 digits omitted)...2031"},"value":"0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFBFFFFFFFFFFFFFFF"},"visibility":"internal"},{"constant":true,"id":19255,"mutability":"constant","name":"FLASHLOAN_ENABLED_MASK","nameLocation":"1968:22:60","nodeType":"VariableDeclaration","scope":20496,"src":"1942:125:60","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":19253,"name":"uint256","nodeType":"ElementaryTypeName","src":"1942:7:60","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"value":{"hexValue":"307846464646464646464646464646464646464646464646464646464646464646464646464646464646464646464646464637464646464646464646464646464646","id":19254,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"2001:66:60","typeDescriptions":{"typeIdentifier":"t_rational_115792089237316195423570985008687907853269984665640564039448360635876274864127_by_1","typeString":"int_const 1157...(70 digits omitted)...4127"},"value":"0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF7FFFFFFFFFFFFFFF"},"visibility":"internal"},{"constant":true,"id":19258,"mutability":"constant","name":"RESERVE_FACTOR_MASK","nameLocation":"2116:19:60","nodeType":"VariableDeclaration","scope":20496,"src":"2090:125:60","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":19256,"name":"uint256","nodeType":"ElementaryTypeName","src":"2090:7:60","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"value":{"hexValue":"307846464646464646464646464646464646464646464646464646464646464646464646464646464646464646463030303046464646464646464646464646464646","id":19257,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"2149:66:60","typeDescriptions":{"typeIdentifier":"t_rational_115792089237316195423570985008687907853269984665640562830550211137357664485375_by_1","typeString":"int_const 1157...(70 digits omitted)...5375"},"value":"0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF0000FFFFFFFFFFFFFFFF"},"visibility":"internal"},{"constant":true,"id":19261,"mutability":"constant","name":"BORROW_CAP_MASK","nameLocation":"2264:15:60","nodeType":"VariableDeclaration","scope":20496,"src":"2238:125:60","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":19259,"name":"uint256","nodeType":"ElementaryTypeName","src":"2238:7:60","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"value":{"hexValue":"307846464646464646464646464646464646464646464646464646464646464646464646463030303030303030304646464646464646464646464646464646464646","id":19260,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"2297:66:60","typeDescriptions":{"typeIdentifier":"t_rational_115792089237316195423570985008687907853269901588890828691141347134601036824575_by_1","typeString":"int_const 1157...(70 digits omitted)...4575"},"value":"0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF000000000FFFFFFFFFFFFFFFFFFFF"},"visibility":"internal"},{"constant":true,"id":19264,"mutability":"constant","name":"SUPPLY_CAP_MASK","nameLocation":"2412:15:60","nodeType":"VariableDeclaration","scope":20496,"src":"2386:125:60","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":19262,"name":"uint256","nodeType":"ElementaryTypeName","src":"2386:7:60","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"value":{"hexValue":"307846464646464646464646464646464646464646464646464646463030303030303030304646464646464646464646464646464646464646464646464646464646","id":19263,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"2445:66:60","typeDescriptions":{"typeIdentifier":"t_rational_115792089237316195423570985008682198862499243902866067452821842515308866174975_by_1","typeString":"int_const 1157...(70 digits omitted)...4975"},"value":"0xFFFFFFFFFFFFFFFFFFFFFFFFFF000000000FFFFFFFFFFFFFFFFFFFFFFFFFFFFF"},"visibility":"internal"},{"constant":true,"id":19267,"mutability":"constant","name":"LIQUIDATION_PROTOCOL_FEE_MASK","nameLocation":"2560:29:60","nodeType":"VariableDeclaration","scope":20496,"src":"2534:125:60","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":19265,"name":"uint256","nodeType":"ElementaryTypeName","src":"2534:7:60","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"value":{"hexValue":"307846464646464646464646464646464646464646464646303030304646464646464646464646464646464646464646464646464646464646464646464646464646","id":19266,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"2593:66:60","typeDescriptions":{"typeIdentifier":"t_rational_115792089237316195423570984634549197687329661445021480007966928956539929624575_by_1","typeString":"int_const 1157...(70 digits omitted)...4575"},"value":"0xFFFFFFFFFFFFFFFFFFFFFF0000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF"},"visibility":"internal"},{"constant":true,"id":19270,"mutability":"constant","name":"EMODE_CATEGORY_MASK","nameLocation":"2708:19:60","nodeType":"VariableDeclaration","scope":20496,"src":"2682:125:60","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":19268,"name":"uint256","nodeType":"ElementaryTypeName","src":"2682:7:60","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"value":{"hexValue":"307846464646464646464646464646464646464646463030464646464646464646464646464646464646464646464646464646464646464646464646464646464646","id":19269,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"2741:66:60","typeDescriptions":{"typeIdentifier":"t_rational_115792089237316195423570889601861022891927484329094684320502060868636724166655_by_1","typeString":"int_const 1157...(70 digits omitted)...6655"},"value":"0xFFFFFFFFFFFFFFFFFFFF00FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF"},"visibility":"internal"},{"constant":true,"id":19273,"mutability":"constant","name":"UNBACKED_MINT_CAP_MASK","nameLocation":"2856:22:60","nodeType":"VariableDeclaration","scope":20496,"src":"2830:125:60","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":19271,"name":"uint256","nodeType":"ElementaryTypeName","src":"2830:7:60","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"value":{"hexValue":"307846464646464646464646463030303030303030304646464646464646464646464646464646464646464646464646464646464646464646464646464646464646","id":19272,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"2889:66:60","typeDescriptions":{"typeIdentifier":"t_rational_115792089237309613405341795965490592094593402660309829990319025859654871678975_by_1","typeString":"int_const 1157...(70 digits omitted)...8975"},"value":"0xFFFFFFFFFFF000000000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF"},"visibility":"internal"},{"constant":true,"id":19276,"mutability":"constant","name":"DEBT_CEILING_MASK","nameLocation":"3004:17:60","nodeType":"VariableDeclaration","scope":20496,"src":"2978:125:60","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":19274,"name":"uint256","nodeType":"ElementaryTypeName","src":"2978:7:60","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"value":{"hexValue":"307846303030303030303030304646464646464646464646464646464646464646464646464646464646464646464646464646464646464646464646464646464646","id":19275,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"3037:66:60","typeDescriptions":{"typeIdentifier":"t_rational_108555083659990515227827083269813533489170840026057959730454019326871953473535_by_1","typeString":"int_const 1085...(70 digits omitted)...3535"},"value":"0xF0000000000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF"},"visibility":"internal"},{"constant":true,"documentation":{"id":19277,"nodeType":"StructuredDocumentation","src":"3127:83:60","text":"@dev For the LTV, the start bit is 0 (up to 15), hence no bitshifting is needed"},"id":19280,"mutability":"constant","name":"LIQUIDATION_THRESHOLD_START_BIT_POSITION","nameLocation":"3239:40:60","nodeType":"VariableDeclaration","scope":20496,"src":"3213:71:60","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":19278,"name":"uint256","nodeType":"ElementaryTypeName","src":"3213:7:60","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"value":{"hexValue":"3136","id":19279,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"3282:2:60","typeDescriptions":{"typeIdentifier":"t_rational_16_by_1","typeString":"int_const 16"},"value":"16"},"visibility":"internal"},{"constant":true,"id":19283,"mutability":"constant","name":"LIQUIDATION_BONUS_START_BIT_POSITION","nameLocation":"3314:36:60","nodeType":"VariableDeclaration","scope":20496,"src":"3288:67:60","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":19281,"name":"uint256","nodeType":"ElementaryTypeName","src":"3288:7:60","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"value":{"hexValue":"3332","id":19282,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"3353:2:60","typeDescriptions":{"typeIdentifier":"t_rational_32_by_1","typeString":"int_const 32"},"value":"32"},"visibility":"internal"},{"constant":true,"id":19286,"mutability":"constant","name":"RESERVE_DECIMALS_START_BIT_POSITION","nameLocation":"3385:35:60","nodeType":"VariableDeclaration","scope":20496,"src":"3359:66:60","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":19284,"name":"uint256","nodeType":"ElementaryTypeName","src":"3359:7:60","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"value":{"hexValue":"3438","id":19285,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"3423:2:60","typeDescriptions":{"typeIdentifier":"t_rational_48_by_1","typeString":"int_const 48"},"value":"48"},"visibility":"internal"},{"constant":true,"id":19289,"mutability":"constant","name":"IS_ACTIVE_START_BIT_POSITION","nameLocation":"3455:28:60","nodeType":"VariableDeclaration","scope":20496,"src":"3429:59:60","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":19287,"name":"uint256","nodeType":"ElementaryTypeName","src":"3429:7:60","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"value":{"hexValue":"3536","id":19288,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"3486:2:60","typeDescriptions":{"typeIdentifier":"t_rational_56_by_1","typeString":"int_const 56"},"value":"56"},"visibility":"internal"},{"constant":true,"id":19292,"mutability":"constant","name":"IS_FROZEN_START_BIT_POSITION","nameLocation":"3518:28:60","nodeType":"VariableDeclaration","scope":20496,"src":"3492:59:60","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":19290,"name":"uint256","nodeType":"ElementaryTypeName","src":"3492:7:60","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"value":{"hexValue":"3537","id":19291,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"3549:2:60","typeDescriptions":{"typeIdentifier":"t_rational_57_by_1","typeString":"int_const 57"},"value":"57"},"visibility":"internal"},{"constant":true,"id":19295,"mutability":"constant","name":"BORROWING_ENABLED_START_BIT_POSITION","nameLocation":"3581:36:60","nodeType":"VariableDeclaration","scope":20496,"src":"3555:67:60","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":19293,"name":"uint256","nodeType":"ElementaryTypeName","src":"3555:7:60","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"value":{"hexValue":"3538","id":19294,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"3620:2:60","typeDescriptions":{"typeIdentifier":"t_rational_58_by_1","typeString":"int_const 58"},"value":"58"},"visibility":"internal"},{"constant":true,"id":19298,"mutability":"constant","name":"STABLE_BORROWING_ENABLED_START_BIT_POSITION","nameLocation":"3652:43:60","nodeType":"VariableDeclaration","scope":20496,"src":"3626:74:60","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":19296,"name":"uint256","nodeType":"ElementaryTypeName","src":"3626:7:60","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"value":{"hexValue":"3539","id":19297,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"3698:2:60","typeDescriptions":{"typeIdentifier":"t_rational_59_by_1","typeString":"int_const 59"},"value":"59"},"visibility":"internal"},{"constant":true,"id":19301,"mutability":"constant","name":"IS_PAUSED_START_BIT_POSITION","nameLocation":"3730:28:60","nodeType":"VariableDeclaration","scope":20496,"src":"3704:59:60","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":19299,"name":"uint256","nodeType":"ElementaryTypeName","src":"3704:7:60","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"value":{"hexValue":"3630","id":19300,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"3761:2:60","typeDescriptions":{"typeIdentifier":"t_rational_60_by_1","typeString":"int_const 60"},"value":"60"},"visibility":"internal"},{"constant":true,"id":19304,"mutability":"constant","name":"BORROWABLE_IN_ISOLATION_START_BIT_POSITION","nameLocation":"3793:42:60","nodeType":"VariableDeclaration","scope":20496,"src":"3767:73:60","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":19302,"name":"uint256","nodeType":"ElementaryTypeName","src":"3767:7:60","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"value":{"hexValue":"3631","id":19303,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"3838:2:60","typeDescriptions":{"typeIdentifier":"t_rational_61_by_1","typeString":"int_const 61"},"value":"61"},"visibility":"internal"},{"constant":true,"id":19307,"mutability":"constant","name":"SILOED_BORROWING_START_BIT_POSITION","nameLocation":"3870:35:60","nodeType":"VariableDeclaration","scope":20496,"src":"3844:66:60","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":19305,"name":"uint256","nodeType":"ElementaryTypeName","src":"3844:7:60","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"value":{"hexValue":"3632","id":19306,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"3908:2:60","typeDescriptions":{"typeIdentifier":"t_rational_62_by_1","typeString":"int_const 62"},"value":"62"},"visibility":"internal"},{"constant":true,"id":19310,"mutability":"constant","name":"FLASHLOAN_ENABLED_START_BIT_POSITION","nameLocation":"3940:36:60","nodeType":"VariableDeclaration","scope":20496,"src":"3914:67:60","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":19308,"name":"uint256","nodeType":"ElementaryTypeName","src":"3914:7:60","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"value":{"hexValue":"3633","id":19309,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"3979:2:60","typeDescriptions":{"typeIdentifier":"t_rational_63_by_1","typeString":"int_const 63"},"value":"63"},"visibility":"internal"},{"constant":true,"id":19313,"mutability":"constant","name":"RESERVE_FACTOR_START_BIT_POSITION","nameLocation":"4011:33:60","nodeType":"VariableDeclaration","scope":20496,"src":"3985:64:60","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":19311,"name":"uint256","nodeType":"ElementaryTypeName","src":"3985:7:60","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"value":{"hexValue":"3634","id":19312,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"4047:2:60","typeDescriptions":{"typeIdentifier":"t_rational_64_by_1","typeString":"int_const 64"},"value":"64"},"visibility":"internal"},{"constant":true,"id":19316,"mutability":"constant","name":"BORROW_CAP_START_BIT_POSITION","nameLocation":"4079:29:60","nodeType":"VariableDeclaration","scope":20496,"src":"4053:60:60","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":19314,"name":"uint256","nodeType":"ElementaryTypeName","src":"4053:7:60","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"value":{"hexValue":"3830","id":19315,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"4111:2:60","typeDescriptions":{"typeIdentifier":"t_rational_80_by_1","typeString":"int_const 80"},"value":"80"},"visibility":"internal"},{"constant":true,"id":19319,"mutability":"constant","name":"SUPPLY_CAP_START_BIT_POSITION","nameLocation":"4143:29:60","nodeType":"VariableDeclaration","scope":20496,"src":"4117:61:60","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":19317,"name":"uint256","nodeType":"ElementaryTypeName","src":"4117:7:60","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"value":{"hexValue":"313136","id":19318,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"4175:3:60","typeDescriptions":{"typeIdentifier":"t_rational_116_by_1","typeString":"int_const 116"},"value":"116"},"visibility":"internal"},{"constant":true,"id":19322,"mutability":"constant","name":"LIQUIDATION_PROTOCOL_FEE_START_BIT_POSITION","nameLocation":"4208:43:60","nodeType":"VariableDeclaration","scope":20496,"src":"4182:75:60","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":19320,"name":"uint256","nodeType":"ElementaryTypeName","src":"4182:7:60","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"value":{"hexValue":"313532","id":19321,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"4254:3:60","typeDescriptions":{"typeIdentifier":"t_rational_152_by_1","typeString":"int_const 152"},"value":"152"},"visibility":"internal"},{"constant":true,"id":19325,"mutability":"constant","name":"EMODE_CATEGORY_START_BIT_POSITION","nameLocation":"4287:33:60","nodeType":"VariableDeclaration","scope":20496,"src":"4261:65:60","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":19323,"name":"uint256","nodeType":"ElementaryTypeName","src":"4261:7:60","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"value":{"hexValue":"313638","id":19324,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"4323:3:60","typeDescriptions":{"typeIdentifier":"t_rational_168_by_1","typeString":"int_const 168"},"value":"168"},"visibility":"internal"},{"constant":true,"id":19328,"mutability":"constant","name":"UNBACKED_MINT_CAP_START_BIT_POSITION","nameLocation":"4356:36:60","nodeType":"VariableDeclaration","scope":20496,"src":"4330:68:60","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":19326,"name":"uint256","nodeType":"ElementaryTypeName","src":"4330:7:60","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"value":{"hexValue":"313736","id":19327,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"4395:3:60","typeDescriptions":{"typeIdentifier":"t_rational_176_by_1","typeString":"int_const 176"},"value":"176"},"visibility":"internal"},{"constant":true,"id":19331,"mutability":"constant","name":"DEBT_CEILING_START_BIT_POSITION","nameLocation":"4428:31:60","nodeType":"VariableDeclaration","scope":20496,"src":"4402:63:60","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":19329,"name":"uint256","nodeType":"ElementaryTypeName","src":"4402:7:60","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"value":{"hexValue":"323132","id":19330,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"4462:3:60","typeDescriptions":{"typeIdentifier":"t_rational_212_by_1","typeString":"int_const 212"},"value":"212"},"visibility":"internal"},{"constant":true,"id":19334,"mutability":"constant","name":"MAX_VALID_LTV","nameLocation":"4496:13:60","nodeType":"VariableDeclaration","scope":20496,"src":"4470:47:60","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":19332,"name":"uint256","nodeType":"ElementaryTypeName","src":"4470:7:60","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"value":{"hexValue":"3635353335","id":19333,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"4512:5:60","typeDescriptions":{"typeIdentifier":"t_rational_65535_by_1","typeString":"int_const 65535"},"value":"65535"},"visibility":"internal"},{"constant":true,"id":19337,"mutability":"constant","name":"MAX_VALID_LIQUIDATION_THRESHOLD","nameLocation":"4547:31:60","nodeType":"VariableDeclaration","scope":20496,"src":"4521:65:60","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":19335,"name":"uint256","nodeType":"ElementaryTypeName","src":"4521:7:60","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"value":{"hexValue":"3635353335","id":19336,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"4581:5:60","typeDescriptions":{"typeIdentifier":"t_rational_65535_by_1","typeString":"int_const 65535"},"value":"65535"},"visibility":"internal"},{"constant":true,"id":19340,"mutability":"constant","name":"MAX_VALID_LIQUIDATION_BONUS","nameLocation":"4616:27:60","nodeType":"VariableDeclaration","scope":20496,"src":"4590:61:60","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":19338,"name":"uint256","nodeType":"ElementaryTypeName","src":"4590:7:60","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"value":{"hexValue":"3635353335","id":19339,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"4646:5:60","typeDescriptions":{"typeIdentifier":"t_rational_65535_by_1","typeString":"int_const 65535"},"value":"65535"},"visibility":"internal"},{"constant":true,"id":19343,"mutability":"constant","name":"MAX_VALID_DECIMALS","nameLocation":"4681:18:60","nodeType":"VariableDeclaration","scope":20496,"src":"4655:50:60","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":19341,"name":"uint256","nodeType":"ElementaryTypeName","src":"4655:7:60","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"value":{"hexValue":"323535","id":19342,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"4702:3:60","typeDescriptions":{"typeIdentifier":"t_rational_255_by_1","typeString":"int_const 255"},"value":"255"},"visibility":"internal"},{"constant":true,"id":19346,"mutability":"constant","name":"MAX_VALID_RESERVE_FACTOR","nameLocation":"4735:24:60","nodeType":"VariableDeclaration","scope":20496,"src":"4709:58:60","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":19344,"name":"uint256","nodeType":"ElementaryTypeName","src":"4709:7:60","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"value":{"hexValue":"3635353335","id":19345,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"4762:5:60","typeDescriptions":{"typeIdentifier":"t_rational_65535_by_1","typeString":"int_const 65535"},"value":"65535"},"visibility":"internal"},{"constant":true,"id":19349,"mutability":"constant","name":"MAX_VALID_BORROW_CAP","nameLocation":"4797:20:60","nodeType":"VariableDeclaration","scope":20496,"src":"4771:60:60","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":19347,"name":"uint256","nodeType":"ElementaryTypeName","src":"4771:7:60","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"value":{"hexValue":"3638373139343736373335","id":19348,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"4820:11:60","typeDescriptions":{"typeIdentifier":"t_rational_68719476735_by_1","typeString":"int_const 68719476735"},"value":"68719476735"},"visibility":"internal"},{"constant":true,"id":19352,"mutability":"constant","name":"MAX_VALID_SUPPLY_CAP","nameLocation":"4861:20:60","nodeType":"VariableDeclaration","scope":20496,"src":"4835:60:60","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":19350,"name":"uint256","nodeType":"ElementaryTypeName","src":"4835:7:60","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"value":{"hexValue":"3638373139343736373335","id":19351,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"4884:11:60","typeDescriptions":{"typeIdentifier":"t_rational_68719476735_by_1","typeString":"int_const 68719476735"},"value":"68719476735"},"visibility":"internal"},{"constant":true,"id":19355,"mutability":"constant","name":"MAX_VALID_LIQUIDATION_PROTOCOL_FEE","nameLocation":"4925:34:60","nodeType":"VariableDeclaration","scope":20496,"src":"4899:68:60","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":19353,"name":"uint256","nodeType":"ElementaryTypeName","src":"4899:7:60","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"value":{"hexValue":"3635353335","id":19354,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"4962:5:60","typeDescriptions":{"typeIdentifier":"t_rational_65535_by_1","typeString":"int_const 65535"},"value":"65535"},"visibility":"internal"},{"constant":true,"id":19358,"mutability":"constant","name":"MAX_VALID_EMODE_CATEGORY","nameLocation":"4997:24:60","nodeType":"VariableDeclaration","scope":20496,"src":"4971:56:60","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":19356,"name":"uint256","nodeType":"ElementaryTypeName","src":"4971:7:60","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"value":{"hexValue":"323535","id":19357,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"5024:3:60","typeDescriptions":{"typeIdentifier":"t_rational_255_by_1","typeString":"int_const 255"},"value":"255"},"visibility":"internal"},{"constant":true,"id":19361,"mutability":"constant","name":"MAX_VALID_UNBACKED_MINT_CAP","nameLocation":"5057:27:60","nodeType":"VariableDeclaration","scope":20496,"src":"5031:67:60","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":19359,"name":"uint256","nodeType":"ElementaryTypeName","src":"5031:7:60","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"value":{"hexValue":"3638373139343736373335","id":19360,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"5087:11:60","typeDescriptions":{"typeIdentifier":"t_rational_68719476735_by_1","typeString":"int_const 68719476735"},"value":"68719476735"},"visibility":"internal"},{"constant":true,"id":19364,"mutability":"constant","name":"MAX_VALID_DEBT_CEILING","nameLocation":"5128:22:60","nodeType":"VariableDeclaration","scope":20496,"src":"5102:64:60","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":19362,"name":"uint256","nodeType":"ElementaryTypeName","src":"5102:7:60","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"value":{"hexValue":"31303939353131363237373735","id":19363,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"5153:13:60","typeDescriptions":{"typeIdentifier":"t_rational_1099511627775_by_1","typeString":"int_const 1099511627775"},"value":"1099511627775"},"visibility":"internal"},{"constant":true,"functionSelector":"280d5de9","id":19367,"mutability":"constant","name":"DEBT_CEILING_DECIMALS","nameLocation":"5195:21:60","nodeType":"VariableDeclaration","scope":20496,"src":"5171:49:60","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":19365,"name":"uint256","nodeType":"ElementaryTypeName","src":"5171:7:60","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"value":{"hexValue":"32","id":19366,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"5219:1:60","typeDescriptions":{"typeIdentifier":"t_rational_2_by_1","typeString":"int_const 2"},"value":"2"},"visibility":"public"},{"constant":true,"functionSelector":"31b561ba","id":19370,"mutability":"constant","name":"MAX_RESERVES_COUNT","nameLocation":"5247:18:60","nodeType":"VariableDeclaration","scope":20496,"src":"5224:47:60","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint16","typeString":"uint16"},"typeName":{"id":19368,"name":"uint16","nodeType":"ElementaryTypeName","src":"5224:6:60","typeDescriptions":{"typeIdentifier":"t_uint16","typeString":"uint16"}},"value":{"hexValue":"313238","id":19369,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"5268:3:60","typeDescriptions":{"typeIdentifier":"t_rational_128_by_1","typeString":"int_const 128"},"value":"128"},"visibility":"public"},{"body":{"id":19399,"nodeType":"Block","src":"5500:107:60","statements":[{"expression":{"arguments":[{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":19382,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":19380,"name":"ltv","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":19376,"src":"5514:3:60","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"<=","rightExpression":{"id":19381,"name":"MAX_VALID_LTV","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":19334,"src":"5521:13:60","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"5514:20:60","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},{"expression":{"id":19383,"name":"Errors","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":18366,"src":"5536:6:60","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_Errors_$18366_$","typeString":"type(library Errors)"}},"id":19384,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberLocation":"5543:11:60","memberName":"INVALID_LTV","nodeType":"MemberAccess","referencedDeclaration":18281,"src":"5536:18:60","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"}],"id":19379,"name":"require","nodeType":"Identifier","overloadedDeclarations":[-18,-18,-18],"referencedDeclaration":-18,"src":"5506:7:60","typeDescriptions":{"typeIdentifier":"t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$","typeString":"function (bool,string memory) pure"}},"id":19385,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"5506:49:60","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":19386,"nodeType":"ExpressionStatement","src":"5506:49:60"},{"expression":{"id":19397,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"expression":{"id":19387,"name":"self","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":19374,"src":"5562:4:60","typeDescriptions":{"typeIdentifier":"t_struct$_ReserveConfigurationMap_$17777_memory_ptr","typeString":"struct DataTypes.ReserveConfigurationMap memory"}},"id":19389,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"memberLocation":"5567:4:60","memberName":"data","nodeType":"MemberAccess","referencedDeclaration":17776,"src":"5562:9:60","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":19396,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"components":[{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":19393,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"expression":{"id":19390,"name":"self","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":19374,"src":"5575:4:60","typeDescriptions":{"typeIdentifier":"t_struct$_ReserveConfigurationMap_$17777_memory_ptr","typeString":"struct DataTypes.ReserveConfigurationMap memory"}},"id":19391,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"5580:4:60","memberName":"data","nodeType":"MemberAccess","referencedDeclaration":17776,"src":"5575:9:60","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"&","rightExpression":{"id":19392,"name":"LTV_MASK","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":19222,"src":"5587:8:60","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"5575:20:60","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"id":19394,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"5574:22:60","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"|","rightExpression":{"id":19395,"name":"ltv","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":19376,"src":"5599:3:60","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"5574:28:60","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"5562:40:60","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":19398,"nodeType":"ExpressionStatement","src":"5562:40:60"}]},"documentation":{"id":19371,"nodeType":"StructuredDocumentation","src":"5276:131:60","text":" @notice Sets the Loan to Value of the reserve\n @param self The reserve configuration\n @param ltv The new ltv"},"id":19400,"implemented":true,"kind":"function","modifiers":[],"name":"setLtv","nameLocation":"5419:6:60","nodeType":"FunctionDefinition","parameters":{"id":19377,"nodeType":"ParameterList","parameters":[{"constant":false,"id":19374,"mutability":"mutable","name":"self","nameLocation":"5467:4:60","nodeType":"VariableDeclaration","scope":19400,"src":"5426:45:60","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_struct$_ReserveConfigurationMap_$17777_memory_ptr","typeString":"struct DataTypes.ReserveConfigurationMap"},"typeName":{"id":19373,"nodeType":"UserDefinedTypeName","pathNode":{"id":19372,"name":"DataTypes.ReserveConfigurationMap","nameLocations":["5426:9:60","5436:23:60"],"nodeType":"IdentifierPath","referencedDeclaration":17777,"src":"5426:33:60"},"referencedDeclaration":17777,"src":"5426:33:60","typeDescriptions":{"typeIdentifier":"t_struct$_ReserveConfigurationMap_$17777_storage_ptr","typeString":"struct DataTypes.ReserveConfigurationMap"}},"visibility":"internal"},{"constant":false,"id":19376,"mutability":"mutable","name":"ltv","nameLocation":"5481:3:60","nodeType":"VariableDeclaration","scope":19400,"src":"5473:11:60","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":19375,"name":"uint256","nodeType":"ElementaryTypeName","src":"5473:7:60","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"5425:60:60"},"returnParameters":{"id":19378,"nodeType":"ParameterList","parameters":[],"src":"5500:0:60"},"scope":20496,"src":"5410:197:60","stateMutability":"pure","virtual":false,"visibility":"internal"},{"body":{"id":19415,"nodeType":"Block","src":"5843:39:60","statements":[{"expression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":19413,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"expression":{"id":19409,"name":"self","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":19404,"src":"5856:4:60","typeDescriptions":{"typeIdentifier":"t_struct$_ReserveConfigurationMap_$17777_memory_ptr","typeString":"struct DataTypes.ReserveConfigurationMap memory"}},"id":19410,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"5861:4:60","memberName":"data","nodeType":"MemberAccess","referencedDeclaration":17776,"src":"5856:9:60","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"&","rightExpression":{"id":19412,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"UnaryOperation","operator":"~","prefix":true,"src":"5868:9:60","subExpression":{"id":19411,"name":"LTV_MASK","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":19222,"src":"5869:8:60","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"5856:21:60","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"functionReturnParameters":19408,"id":19414,"nodeType":"Return","src":"5849:28:60"}]},"documentation":{"id":19401,"nodeType":"StructuredDocumentation","src":"5611:134:60","text":" @notice Gets the Loan to Value of the reserve\n @param self The reserve configuration\n @return The loan to value"},"id":19416,"implemented":true,"kind":"function","modifiers":[],"name":"getLtv","nameLocation":"5757:6:60","nodeType":"FunctionDefinition","parameters":{"id":19405,"nodeType":"ParameterList","parameters":[{"constant":false,"id":19404,"mutability":"mutable","name":"self","nameLocation":"5805:4:60","nodeType":"VariableDeclaration","scope":19416,"src":"5764:45:60","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_struct$_ReserveConfigurationMap_$17777_memory_ptr","typeString":"struct DataTypes.ReserveConfigurationMap"},"typeName":{"id":19403,"nodeType":"UserDefinedTypeName","pathNode":{"id":19402,"name":"DataTypes.ReserveConfigurationMap","nameLocations":["5764:9:60","5774:23:60"],"nodeType":"IdentifierPath","referencedDeclaration":17777,"src":"5764:33:60"},"referencedDeclaration":17777,"src":"5764:33:60","typeDescriptions":{"typeIdentifier":"t_struct$_ReserveConfigurationMap_$17777_storage_ptr","typeString":"struct DataTypes.ReserveConfigurationMap"}},"visibility":"internal"}],"src":"5763:47:60"},"returnParameters":{"id":19408,"nodeType":"ParameterList","parameters":[{"constant":false,"id":19407,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":19416,"src":"5834:7:60","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":19406,"name":"uint256","nodeType":"ElementaryTypeName","src":"5834:7:60","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"5833:9:60"},"scope":20496,"src":"5748:134:60","stateMutability":"pure","virtual":false,"visibility":"internal"},{"body":{"id":19448,"nodeType":"Block","src":"6177:223:60","statements":[{"expression":{"arguments":[{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":19428,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":19426,"name":"threshold","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":19422,"src":"6191:9:60","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"<=","rightExpression":{"id":19427,"name":"MAX_VALID_LIQUIDATION_THRESHOLD","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":19337,"src":"6204:31:60","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"6191:44:60","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},{"expression":{"id":19429,"name":"Errors","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":18366,"src":"6237:6:60","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_Errors_$18366_$","typeString":"type(library Errors)"}},"id":19430,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberLocation":"6244:21:60","memberName":"INVALID_LIQ_THRESHOLD","nodeType":"MemberAccess","referencedDeclaration":18284,"src":"6237:28:60","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"}],"id":19425,"name":"require","nodeType":"Identifier","overloadedDeclarations":[-18,-18,-18],"referencedDeclaration":-18,"src":"6183:7:60","typeDescriptions":{"typeIdentifier":"t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$","typeString":"function (bool,string memory) pure"}},"id":19431,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"6183:83:60","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":19432,"nodeType":"ExpressionStatement","src":"6183:83:60"},{"expression":{"id":19446,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"expression":{"id":19433,"name":"self","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":19420,"src":"6273:4:60","typeDescriptions":{"typeIdentifier":"t_struct$_ReserveConfigurationMap_$17777_memory_ptr","typeString":"struct DataTypes.ReserveConfigurationMap memory"}},"id":19435,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"memberLocation":"6278:4:60","memberName":"data","nodeType":"MemberAccess","referencedDeclaration":17776,"src":"6273:9:60","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":19445,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"components":[{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":19439,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"expression":{"id":19436,"name":"self","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":19420,"src":"6292:4:60","typeDescriptions":{"typeIdentifier":"t_struct$_ReserveConfigurationMap_$17777_memory_ptr","typeString":"struct DataTypes.ReserveConfigurationMap memory"}},"id":19437,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"6297:4:60","memberName":"data","nodeType":"MemberAccess","referencedDeclaration":17776,"src":"6292:9:60","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"&","rightExpression":{"id":19438,"name":"LIQUIDATION_THRESHOLD_MASK","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":19225,"src":"6304:26:60","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"6292:38:60","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"id":19440,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"6291:40:60","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"|","rightExpression":{"components":[{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":19443,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":19441,"name":"threshold","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":19422,"src":"6341:9:60","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"<<","rightExpression":{"id":19442,"name":"LIQUIDATION_THRESHOLD_START_BIT_POSITION","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":19280,"src":"6354:40:60","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"6341:53:60","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"id":19444,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"6340:55:60","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"6291:104:60","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"6273:122:60","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":19447,"nodeType":"ExpressionStatement","src":"6273:122:60"}]},"documentation":{"id":19417,"nodeType":"StructuredDocumentation","src":"5886:163:60","text":" @notice Sets the liquidation threshold of the reserve\n @param self The reserve configuration\n @param threshold The new liquidation threshold"},"id":19449,"implemented":true,"kind":"function","modifiers":[],"name":"setLiquidationThreshold","nameLocation":"6061:23:60","nodeType":"FunctionDefinition","parameters":{"id":19423,"nodeType":"ParameterList","parameters":[{"constant":false,"id":19420,"mutability":"mutable","name":"self","nameLocation":"6131:4:60","nodeType":"VariableDeclaration","scope":19449,"src":"6090:45:60","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_struct$_ReserveConfigurationMap_$17777_memory_ptr","typeString":"struct DataTypes.ReserveConfigurationMap"},"typeName":{"id":19419,"nodeType":"UserDefinedTypeName","pathNode":{"id":19418,"name":"DataTypes.ReserveConfigurationMap","nameLocations":["6090:9:60","6100:23:60"],"nodeType":"IdentifierPath","referencedDeclaration":17777,"src":"6090:33:60"},"referencedDeclaration":17777,"src":"6090:33:60","typeDescriptions":{"typeIdentifier":"t_struct$_ReserveConfigurationMap_$17777_storage_ptr","typeString":"struct DataTypes.ReserveConfigurationMap"}},"visibility":"internal"},{"constant":false,"id":19422,"mutability":"mutable","name":"threshold","nameLocation":"6149:9:60","nodeType":"VariableDeclaration","scope":19449,"src":"6141:17:60","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":19421,"name":"uint256","nodeType":"ElementaryTypeName","src":"6141:7:60","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"6084:78:60"},"returnParameters":{"id":19424,"nodeType":"ParameterList","parameters":[],"src":"6177:0:60"},"scope":20496,"src":"6052:348:60","stateMutability":"pure","virtual":false,"visibility":"internal"},{"body":{"id":19467,"nodeType":"Block","src":"6677:103:60","statements":[{"expression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":19465,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"components":[{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":19462,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"expression":{"id":19458,"name":"self","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":19453,"src":"6691:4:60","typeDescriptions":{"typeIdentifier":"t_struct$_ReserveConfigurationMap_$17777_memory_ptr","typeString":"struct DataTypes.ReserveConfigurationMap memory"}},"id":19459,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"6696:4:60","memberName":"data","nodeType":"MemberAccess","referencedDeclaration":17776,"src":"6691:9:60","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"&","rightExpression":{"id":19461,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"UnaryOperation","operator":"~","prefix":true,"src":"6703:27:60","subExpression":{"id":19460,"name":"LIQUIDATION_THRESHOLD_MASK","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":19225,"src":"6704:26:60","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"6691:39:60","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"id":19463,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"6690:41:60","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">>","rightExpression":{"id":19464,"name":"LIQUIDATION_THRESHOLD_START_BIT_POSITION","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":19280,"src":"6735:40:60","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"6690:85:60","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"functionReturnParameters":19457,"id":19466,"nodeType":"Return","src":"6683:92:60"}]},"documentation":{"id":19450,"nodeType":"StructuredDocumentation","src":"6404:150:60","text":" @notice Gets the liquidation threshold of the reserve\n @param self The reserve configuration\n @return The liquidation threshold"},"id":19468,"implemented":true,"kind":"function","modifiers":[],"name":"getLiquidationThreshold","nameLocation":"6566:23:60","nodeType":"FunctionDefinition","parameters":{"id":19454,"nodeType":"ParameterList","parameters":[{"constant":false,"id":19453,"mutability":"mutable","name":"self","nameLocation":"6636:4:60","nodeType":"VariableDeclaration","scope":19468,"src":"6595:45:60","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_struct$_ReserveConfigurationMap_$17777_memory_ptr","typeString":"struct DataTypes.ReserveConfigurationMap"},"typeName":{"id":19452,"nodeType":"UserDefinedTypeName","pathNode":{"id":19451,"name":"DataTypes.ReserveConfigurationMap","nameLocations":["6595:9:60","6605:23:60"],"nodeType":"IdentifierPath","referencedDeclaration":17777,"src":"6595:33:60"},"referencedDeclaration":17777,"src":"6595:33:60","typeDescriptions":{"typeIdentifier":"t_struct$_ReserveConfigurationMap_$17777_storage_ptr","typeString":"struct DataTypes.ReserveConfigurationMap"}},"visibility":"internal"}],"src":"6589:55:60"},"returnParameters":{"id":19457,"nodeType":"ParameterList","parameters":[{"constant":false,"id":19456,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":19468,"src":"6668:7:60","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":19455,"name":"uint256","nodeType":"ElementaryTypeName","src":"6668:7:60","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"6667:9:60"},"scope":20496,"src":"6557:223:60","stateMutability":"pure","virtual":false,"visibility":"internal"},{"body":{"id":19500,"nodeType":"Block","src":"7055:199:60","statements":[{"expression":{"arguments":[{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":19480,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":19478,"name":"bonus","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":19474,"src":"7069:5:60","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"<=","rightExpression":{"id":19479,"name":"MAX_VALID_LIQUIDATION_BONUS","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":19340,"src":"7078:27:60","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"7069:36:60","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},{"expression":{"id":19481,"name":"Errors","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":18366,"src":"7107:6:60","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_Errors_$18366_$","typeString":"type(library Errors)"}},"id":19482,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberLocation":"7114:17:60","memberName":"INVALID_LIQ_BONUS","nodeType":"MemberAccess","referencedDeclaration":18287,"src":"7107:24:60","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"}],"id":19477,"name":"require","nodeType":"Identifier","overloadedDeclarations":[-18,-18,-18],"referencedDeclaration":-18,"src":"7061:7:60","typeDescriptions":{"typeIdentifier":"t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$","typeString":"function (bool,string memory) pure"}},"id":19483,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"7061:71:60","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":19484,"nodeType":"ExpressionStatement","src":"7061:71:60"},{"expression":{"id":19498,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"expression":{"id":19485,"name":"self","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":19472,"src":"7139:4:60","typeDescriptions":{"typeIdentifier":"t_struct$_ReserveConfigurationMap_$17777_memory_ptr","typeString":"struct DataTypes.ReserveConfigurationMap memory"}},"id":19487,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"memberLocation":"7144:4:60","memberName":"data","nodeType":"MemberAccess","referencedDeclaration":17776,"src":"7139:9:60","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":19497,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"components":[{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":19491,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"expression":{"id":19488,"name":"self","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":19472,"src":"7158:4:60","typeDescriptions":{"typeIdentifier":"t_struct$_ReserveConfigurationMap_$17777_memory_ptr","typeString":"struct DataTypes.ReserveConfigurationMap memory"}},"id":19489,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"7163:4:60","memberName":"data","nodeType":"MemberAccess","referencedDeclaration":17776,"src":"7158:9:60","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"&","rightExpression":{"id":19490,"name":"LIQUIDATION_BONUS_MASK","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":19228,"src":"7170:22:60","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"7158:34:60","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"id":19492,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"7157:36:60","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"|","rightExpression":{"components":[{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":19495,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":19493,"name":"bonus","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":19474,"src":"7203:5:60","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"<<","rightExpression":{"id":19494,"name":"LIQUIDATION_BONUS_START_BIT_POSITION","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":19283,"src":"7212:36:60","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"7203:45:60","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"id":19496,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"7202:47:60","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"7157:92:60","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"7139:110:60","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":19499,"nodeType":"ExpressionStatement","src":"7139:110:60"}]},"documentation":{"id":19469,"nodeType":"StructuredDocumentation","src":"6784:151:60","text":" @notice Sets the liquidation bonus of the reserve\n @param self The reserve configuration\n @param bonus The new liquidation bonus"},"id":19501,"implemented":true,"kind":"function","modifiers":[],"name":"setLiquidationBonus","nameLocation":"6947:19:60","nodeType":"FunctionDefinition","parameters":{"id":19475,"nodeType":"ParameterList","parameters":[{"constant":false,"id":19472,"mutability":"mutable","name":"self","nameLocation":"7013:4:60","nodeType":"VariableDeclaration","scope":19501,"src":"6972:45:60","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_struct$_ReserveConfigurationMap_$17777_memory_ptr","typeString":"struct DataTypes.ReserveConfigurationMap"},"typeName":{"id":19471,"nodeType":"UserDefinedTypeName","pathNode":{"id":19470,"name":"DataTypes.ReserveConfigurationMap","nameLocations":["6972:9:60","6982:23:60"],"nodeType":"IdentifierPath","referencedDeclaration":17777,"src":"6972:33:60"},"referencedDeclaration":17777,"src":"6972:33:60","typeDescriptions":{"typeIdentifier":"t_struct$_ReserveConfigurationMap_$17777_storage_ptr","typeString":"struct DataTypes.ReserveConfigurationMap"}},"visibility":"internal"},{"constant":false,"id":19474,"mutability":"mutable","name":"bonus","nameLocation":"7031:5:60","nodeType":"VariableDeclaration","scope":19501,"src":"7023:13:60","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":19473,"name":"uint256","nodeType":"ElementaryTypeName","src":"7023:7:60","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"6966:74:60"},"returnParameters":{"id":19476,"nodeType":"ParameterList","parameters":[],"src":"7055:0:60"},"scope":20496,"src":"6938:316:60","stateMutability":"pure","virtual":false,"visibility":"internal"},{"body":{"id":19519,"nodeType":"Block","src":"7519:95:60","statements":[{"expression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":19517,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"components":[{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":19514,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"expression":{"id":19510,"name":"self","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":19505,"src":"7533:4:60","typeDescriptions":{"typeIdentifier":"t_struct$_ReserveConfigurationMap_$17777_memory_ptr","typeString":"struct DataTypes.ReserveConfigurationMap memory"}},"id":19511,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"7538:4:60","memberName":"data","nodeType":"MemberAccess","referencedDeclaration":17776,"src":"7533:9:60","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"&","rightExpression":{"id":19513,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"UnaryOperation","operator":"~","prefix":true,"src":"7545:23:60","subExpression":{"id":19512,"name":"LIQUIDATION_BONUS_MASK","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":19228,"src":"7546:22:60","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"7533:35:60","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"id":19515,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"7532:37:60","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">>","rightExpression":{"id":19516,"name":"LIQUIDATION_BONUS_START_BIT_POSITION","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":19283,"src":"7573:36:60","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"7532:77:60","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"functionReturnParameters":19509,"id":19518,"nodeType":"Return","src":"7525:84:60"}]},"documentation":{"id":19502,"nodeType":"StructuredDocumentation","src":"7258:142:60","text":" @notice Gets the liquidation bonus of the reserve\n @param self The reserve configuration\n @return The liquidation bonus"},"id":19520,"implemented":true,"kind":"function","modifiers":[],"name":"getLiquidationBonus","nameLocation":"7412:19:60","nodeType":"FunctionDefinition","parameters":{"id":19506,"nodeType":"ParameterList","parameters":[{"constant":false,"id":19505,"mutability":"mutable","name":"self","nameLocation":"7478:4:60","nodeType":"VariableDeclaration","scope":19520,"src":"7437:45:60","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_struct$_ReserveConfigurationMap_$17777_memory_ptr","typeString":"struct DataTypes.ReserveConfigurationMap"},"typeName":{"id":19504,"nodeType":"UserDefinedTypeName","pathNode":{"id":19503,"name":"DataTypes.ReserveConfigurationMap","nameLocations":["7437:9:60","7447:23:60"],"nodeType":"IdentifierPath","referencedDeclaration":17777,"src":"7437:33:60"},"referencedDeclaration":17777,"src":"7437:33:60","typeDescriptions":{"typeIdentifier":"t_struct$_ReserveConfigurationMap_$17777_storage_ptr","typeString":"struct DataTypes.ReserveConfigurationMap"}},"visibility":"internal"}],"src":"7431:55:60"},"returnParameters":{"id":19509,"nodeType":"ParameterList","parameters":[{"constant":false,"id":19508,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":19520,"src":"7510:7:60","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":19507,"name":"uint256","nodeType":"ElementaryTypeName","src":"7510:7:60","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"7509:9:60"},"scope":20496,"src":"7403:211:60","stateMutability":"pure","virtual":false,"visibility":"internal"},{"body":{"id":19552,"nodeType":"Block","src":"7889:173:60","statements":[{"expression":{"arguments":[{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":19532,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":19530,"name":"decimals","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":19526,"src":"7903:8:60","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"<=","rightExpression":{"id":19531,"name":"MAX_VALID_DECIMALS","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":19343,"src":"7915:18:60","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"7903:30:60","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},{"expression":{"id":19533,"name":"Errors","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":18366,"src":"7935:6:60","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_Errors_$18366_$","typeString":"type(library Errors)"}},"id":19534,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberLocation":"7942:16:60","memberName":"INVALID_DECIMALS","nodeType":"MemberAccess","referencedDeclaration":18290,"src":"7935:23:60","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"}],"id":19529,"name":"require","nodeType":"Identifier","overloadedDeclarations":[-18,-18,-18],"referencedDeclaration":-18,"src":"7895:7:60","typeDescriptions":{"typeIdentifier":"t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$","typeString":"function (bool,string memory) pure"}},"id":19535,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"7895:64:60","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":19536,"nodeType":"ExpressionStatement","src":"7895:64:60"},{"expression":{"id":19550,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"expression":{"id":19537,"name":"self","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":19524,"src":"7966:4:60","typeDescriptions":{"typeIdentifier":"t_struct$_ReserveConfigurationMap_$17777_memory_ptr","typeString":"struct DataTypes.ReserveConfigurationMap memory"}},"id":19539,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"memberLocation":"7971:4:60","memberName":"data","nodeType":"MemberAccess","referencedDeclaration":17776,"src":"7966:9:60","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":19549,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"components":[{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":19543,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"expression":{"id":19540,"name":"self","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":19524,"src":"7979:4:60","typeDescriptions":{"typeIdentifier":"t_struct$_ReserveConfigurationMap_$17777_memory_ptr","typeString":"struct DataTypes.ReserveConfigurationMap memory"}},"id":19541,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"7984:4:60","memberName":"data","nodeType":"MemberAccess","referencedDeclaration":17776,"src":"7979:9:60","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"&","rightExpression":{"id":19542,"name":"DECIMALS_MASK","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":19231,"src":"7991:13:60","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"7979:25:60","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"id":19544,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"7978:27:60","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"|","rightExpression":{"components":[{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":19547,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":19545,"name":"decimals","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":19526,"src":"8009:8:60","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"<<","rightExpression":{"id":19546,"name":"RESERVE_DECIMALS_START_BIT_POSITION","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":19286,"src":"8021:35:60","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"8009:47:60","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"id":19548,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"8008:49:60","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"7978:79:60","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"7966:91:60","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":19551,"nodeType":"ExpressionStatement","src":"7966:91:60"}]},"documentation":{"id":19521,"nodeType":"StructuredDocumentation","src":"7618:156:60","text":" @notice Sets the decimals of the underlying asset of the reserve\n @param self The reserve configuration\n @param decimals The decimals"},"id":19553,"implemented":true,"kind":"function","modifiers":[],"name":"setDecimals","nameLocation":"7786:11:60","nodeType":"FunctionDefinition","parameters":{"id":19527,"nodeType":"ParameterList","parameters":[{"constant":false,"id":19524,"mutability":"mutable","name":"self","nameLocation":"7844:4:60","nodeType":"VariableDeclaration","scope":19553,"src":"7803:45:60","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_struct$_ReserveConfigurationMap_$17777_memory_ptr","typeString":"struct DataTypes.ReserveConfigurationMap"},"typeName":{"id":19523,"nodeType":"UserDefinedTypeName","pathNode":{"id":19522,"name":"DataTypes.ReserveConfigurationMap","nameLocations":["7803:9:60","7813:23:60"],"nodeType":"IdentifierPath","referencedDeclaration":17777,"src":"7803:33:60"},"referencedDeclaration":17777,"src":"7803:33:60","typeDescriptions":{"typeIdentifier":"t_struct$_ReserveConfigurationMap_$17777_storage_ptr","typeString":"struct DataTypes.ReserveConfigurationMap"}},"visibility":"internal"},{"constant":false,"id":19526,"mutability":"mutable","name":"decimals","nameLocation":"7862:8:60","nodeType":"VariableDeclaration","scope":19553,"src":"7854:16:60","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":19525,"name":"uint256","nodeType":"ElementaryTypeName","src":"7854:7:60","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"7797:77:60"},"returnParameters":{"id":19528,"nodeType":"ParameterList","parameters":[],"src":"7889:0:60"},"scope":20496,"src":"7777:285:60","stateMutability":"pure","virtual":false,"visibility":"internal"},{"body":{"id":19571,"nodeType":"Block","src":"8338:85:60","statements":[{"expression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":19569,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"components":[{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":19566,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"expression":{"id":19562,"name":"self","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":19557,"src":"8352:4:60","typeDescriptions":{"typeIdentifier":"t_struct$_ReserveConfigurationMap_$17777_memory_ptr","typeString":"struct DataTypes.ReserveConfigurationMap memory"}},"id":19563,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"8357:4:60","memberName":"data","nodeType":"MemberAccess","referencedDeclaration":17776,"src":"8352:9:60","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"&","rightExpression":{"id":19565,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"UnaryOperation","operator":"~","prefix":true,"src":"8364:14:60","subExpression":{"id":19564,"name":"DECIMALS_MASK","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":19231,"src":"8365:13:60","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"8352:26:60","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"id":19567,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"8351:28:60","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">>","rightExpression":{"id":19568,"name":"RESERVE_DECIMALS_START_BIT_POSITION","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":19286,"src":"8383:35:60","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"8351:67:60","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"functionReturnParameters":19561,"id":19570,"nodeType":"Return","src":"8344:74:60"}]},"documentation":{"id":19554,"nodeType":"StructuredDocumentation","src":"8066:161:60","text":" @notice Gets the decimals of the underlying asset of the reserve\n @param self The reserve configuration\n @return The decimals of the asset"},"id":19572,"implemented":true,"kind":"function","modifiers":[],"name":"getDecimals","nameLocation":"8239:11:60","nodeType":"FunctionDefinition","parameters":{"id":19558,"nodeType":"ParameterList","parameters":[{"constant":false,"id":19557,"mutability":"mutable","name":"self","nameLocation":"8297:4:60","nodeType":"VariableDeclaration","scope":19572,"src":"8256:45:60","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_struct$_ReserveConfigurationMap_$17777_memory_ptr","typeString":"struct DataTypes.ReserveConfigurationMap"},"typeName":{"id":19556,"nodeType":"UserDefinedTypeName","pathNode":{"id":19555,"name":"DataTypes.ReserveConfigurationMap","nameLocations":["8256:9:60","8266:23:60"],"nodeType":"IdentifierPath","referencedDeclaration":17777,"src":"8256:33:60"},"referencedDeclaration":17777,"src":"8256:33:60","typeDescriptions":{"typeIdentifier":"t_struct$_ReserveConfigurationMap_$17777_storage_ptr","typeString":"struct DataTypes.ReserveConfigurationMap"}},"visibility":"internal"}],"src":"8250:55:60"},"returnParameters":{"id":19561,"nodeType":"ParameterList","parameters":[{"constant":false,"id":19560,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":19572,"src":"8329:7:60","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":19559,"name":"uint256","nodeType":"ElementaryTypeName","src":"8329:7:60","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"8328:9:60"},"scope":20496,"src":"8230:193:60","stateMutability":"pure","virtual":false,"visibility":"internal"},{"body":{"id":19602,"nodeType":"Block","src":"8661:120:60","statements":[{"expression":{"id":19600,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"expression":{"id":19581,"name":"self","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":19576,"src":"8667:4:60","typeDescriptions":{"typeIdentifier":"t_struct$_ReserveConfigurationMap_$17777_memory_ptr","typeString":"struct DataTypes.ReserveConfigurationMap memory"}},"id":19583,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"memberLocation":"8672:4:60","memberName":"data","nodeType":"MemberAccess","referencedDeclaration":17776,"src":"8667:9:60","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":19599,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"components":[{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":19587,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"expression":{"id":19584,"name":"self","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":19576,"src":"8686:4:60","typeDescriptions":{"typeIdentifier":"t_struct$_ReserveConfigurationMap_$17777_memory_ptr","typeString":"struct DataTypes.ReserveConfigurationMap memory"}},"id":19585,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"8691:4:60","memberName":"data","nodeType":"MemberAccess","referencedDeclaration":17776,"src":"8686:9:60","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"&","rightExpression":{"id":19586,"name":"ACTIVE_MASK","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":19234,"src":"8698:11:60","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"8686:23:60","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"id":19588,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"8685:25:60","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"|","rightExpression":{"components":[{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":19597,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"arguments":[{"condition":{"id":19591,"name":"active","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":19578,"src":"8728:6:60","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"falseExpression":{"hexValue":"30","id":19593,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"8741:1:60","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"id":19594,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"Conditional","src":"8728:14:60","trueExpression":{"hexValue":"31","id":19592,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"8737:1:60","typeDescriptions":{"typeIdentifier":"t_rational_1_by_1","typeString":"int_const 1"},"value":"1"},"typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint8","typeString":"uint8"}],"id":19590,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"8720:7:60","typeDescriptions":{"typeIdentifier":"t_type$_t_uint256_$","typeString":"type(uint256)"},"typeName":{"id":19589,"name":"uint256","nodeType":"ElementaryTypeName","src":"8720:7:60","typeDescriptions":{}}},"id":19595,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"8720:23:60","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"<<","rightExpression":{"id":19596,"name":"IS_ACTIVE_START_BIT_POSITION","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":19289,"src":"8747:28:60","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"8720:55:60","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"id":19598,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"8719:57:60","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"8685:91:60","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"8667:109:60","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":19601,"nodeType":"ExpressionStatement","src":"8667:109:60"}]},"documentation":{"id":19573,"nodeType":"StructuredDocumentation","src":"8427:138:60","text":" @notice Sets the active state of the reserve\n @param self The reserve configuration\n @param active The active state"},"id":19603,"implemented":true,"kind":"function","modifiers":[],"name":"setActive","nameLocation":"8577:9:60","nodeType":"FunctionDefinition","parameters":{"id":19579,"nodeType":"ParameterList","parameters":[{"constant":false,"id":19576,"mutability":"mutable","name":"self","nameLocation":"8628:4:60","nodeType":"VariableDeclaration","scope":19603,"src":"8587:45:60","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_struct$_ReserveConfigurationMap_$17777_memory_ptr","typeString":"struct DataTypes.ReserveConfigurationMap"},"typeName":{"id":19575,"nodeType":"UserDefinedTypeName","pathNode":{"id":19574,"name":"DataTypes.ReserveConfigurationMap","nameLocations":["8587:9:60","8597:23:60"],"nodeType":"IdentifierPath","referencedDeclaration":17777,"src":"8587:33:60"},"referencedDeclaration":17777,"src":"8587:33:60","typeDescriptions":{"typeIdentifier":"t_struct$_ReserveConfigurationMap_$17777_storage_ptr","typeString":"struct DataTypes.ReserveConfigurationMap"}},"visibility":"internal"},{"constant":false,"id":19578,"mutability":"mutable","name":"active","nameLocation":"8639:6:60","nodeType":"VariableDeclaration","scope":19603,"src":"8634:11:60","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":19577,"name":"bool","nodeType":"ElementaryTypeName","src":"8634:4:60","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"}],"src":"8586:60:60"},"returnParameters":{"id":19580,"nodeType":"ParameterList","parameters":[],"src":"8661:0:60"},"scope":20496,"src":"8568:213:60","stateMutability":"pure","virtual":false,"visibility":"internal"},{"body":{"id":19621,"nodeType":"Block","src":"9015:49:60","statements":[{"expression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":19619,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"components":[{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":19616,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"expression":{"id":19612,"name":"self","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":19607,"src":"9029:4:60","typeDescriptions":{"typeIdentifier":"t_struct$_ReserveConfigurationMap_$17777_memory_ptr","typeString":"struct DataTypes.ReserveConfigurationMap memory"}},"id":19613,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"9034:4:60","memberName":"data","nodeType":"MemberAccess","referencedDeclaration":17776,"src":"9029:9:60","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"&","rightExpression":{"id":19615,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"UnaryOperation","operator":"~","prefix":true,"src":"9041:12:60","subExpression":{"id":19614,"name":"ACTIVE_MASK","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":19234,"src":"9042:11:60","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"9029:24:60","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"id":19617,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"9028:26:60","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"!=","rightExpression":{"hexValue":"30","id":19618,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"9058:1:60","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"9028:31:60","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"functionReturnParameters":19611,"id":19620,"nodeType":"Return","src":"9021:38:60"}]},"documentation":{"id":19604,"nodeType":"StructuredDocumentation","src":"8785:132:60","text":" @notice Gets the active state of the reserve\n @param self The reserve configuration\n @return The active state"},"id":19622,"implemented":true,"kind":"function","modifiers":[],"name":"getActive","nameLocation":"8929:9:60","nodeType":"FunctionDefinition","parameters":{"id":19608,"nodeType":"ParameterList","parameters":[{"constant":false,"id":19607,"mutability":"mutable","name":"self","nameLocation":"8980:4:60","nodeType":"VariableDeclaration","scope":19622,"src":"8939:45:60","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_struct$_ReserveConfigurationMap_$17777_memory_ptr","typeString":"struct DataTypes.ReserveConfigurationMap"},"typeName":{"id":19606,"nodeType":"UserDefinedTypeName","pathNode":{"id":19605,"name":"DataTypes.ReserveConfigurationMap","nameLocations":["8939:9:60","8949:23:60"],"nodeType":"IdentifierPath","referencedDeclaration":17777,"src":"8939:33:60"},"referencedDeclaration":17777,"src":"8939:33:60","typeDescriptions":{"typeIdentifier":"t_struct$_ReserveConfigurationMap_$17777_storage_ptr","typeString":"struct DataTypes.ReserveConfigurationMap"}},"visibility":"internal"}],"src":"8938:47:60"},"returnParameters":{"id":19611,"nodeType":"ParameterList","parameters":[{"constant":false,"id":19610,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":19622,"src":"9009:4:60","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":19609,"name":"bool","nodeType":"ElementaryTypeName","src":"9009:4:60","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"}],"src":"9008:6:60"},"scope":20496,"src":"8920:144:60","stateMutability":"pure","virtual":false,"visibility":"internal"},{"body":{"id":19652,"nodeType":"Block","src":"9302:120:60","statements":[{"expression":{"id":19650,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"expression":{"id":19631,"name":"self","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":19626,"src":"9308:4:60","typeDescriptions":{"typeIdentifier":"t_struct$_ReserveConfigurationMap_$17777_memory_ptr","typeString":"struct DataTypes.ReserveConfigurationMap memory"}},"id":19633,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"memberLocation":"9313:4:60","memberName":"data","nodeType":"MemberAccess","referencedDeclaration":17776,"src":"9308:9:60","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":19649,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"components":[{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":19637,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"expression":{"id":19634,"name":"self","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":19626,"src":"9327:4:60","typeDescriptions":{"typeIdentifier":"t_struct$_ReserveConfigurationMap_$17777_memory_ptr","typeString":"struct DataTypes.ReserveConfigurationMap memory"}},"id":19635,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"9332:4:60","memberName":"data","nodeType":"MemberAccess","referencedDeclaration":17776,"src":"9327:9:60","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"&","rightExpression":{"id":19636,"name":"FROZEN_MASK","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":19237,"src":"9339:11:60","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"9327:23:60","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"id":19638,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"9326:25:60","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"|","rightExpression":{"components":[{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":19647,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"arguments":[{"condition":{"id":19641,"name":"frozen","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":19628,"src":"9369:6:60","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"falseExpression":{"hexValue":"30","id":19643,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"9382:1:60","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"id":19644,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"Conditional","src":"9369:14:60","trueExpression":{"hexValue":"31","id":19642,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"9378:1:60","typeDescriptions":{"typeIdentifier":"t_rational_1_by_1","typeString":"int_const 1"},"value":"1"},"typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint8","typeString":"uint8"}],"id":19640,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"9361:7:60","typeDescriptions":{"typeIdentifier":"t_type$_t_uint256_$","typeString":"type(uint256)"},"typeName":{"id":19639,"name":"uint256","nodeType":"ElementaryTypeName","src":"9361:7:60","typeDescriptions":{}}},"id":19645,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"9361:23:60","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"<<","rightExpression":{"id":19646,"name":"IS_FROZEN_START_BIT_POSITION","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":19292,"src":"9388:28:60","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"9361:55:60","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"id":19648,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"9360:57:60","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"9326:91:60","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"9308:109:60","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":19651,"nodeType":"ExpressionStatement","src":"9308:109:60"}]},"documentation":{"id":19623,"nodeType":"StructuredDocumentation","src":"9068:138:60","text":" @notice Sets the frozen state of the reserve\n @param self The reserve configuration\n @param frozen The frozen state"},"id":19653,"implemented":true,"kind":"function","modifiers":[],"name":"setFrozen","nameLocation":"9218:9:60","nodeType":"FunctionDefinition","parameters":{"id":19629,"nodeType":"ParameterList","parameters":[{"constant":false,"id":19626,"mutability":"mutable","name":"self","nameLocation":"9269:4:60","nodeType":"VariableDeclaration","scope":19653,"src":"9228:45:60","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_struct$_ReserveConfigurationMap_$17777_memory_ptr","typeString":"struct DataTypes.ReserveConfigurationMap"},"typeName":{"id":19625,"nodeType":"UserDefinedTypeName","pathNode":{"id":19624,"name":"DataTypes.ReserveConfigurationMap","nameLocations":["9228:9:60","9238:23:60"],"nodeType":"IdentifierPath","referencedDeclaration":17777,"src":"9228:33:60"},"referencedDeclaration":17777,"src":"9228:33:60","typeDescriptions":{"typeIdentifier":"t_struct$_ReserveConfigurationMap_$17777_storage_ptr","typeString":"struct DataTypes.ReserveConfigurationMap"}},"visibility":"internal"},{"constant":false,"id":19628,"mutability":"mutable","name":"frozen","nameLocation":"9280:6:60","nodeType":"VariableDeclaration","scope":19653,"src":"9275:11:60","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":19627,"name":"bool","nodeType":"ElementaryTypeName","src":"9275:4:60","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"}],"src":"9227:60:60"},"returnParameters":{"id":19630,"nodeType":"ParameterList","parameters":[],"src":"9302:0:60"},"scope":20496,"src":"9209:213:60","stateMutability":"pure","virtual":false,"visibility":"internal"},{"body":{"id":19671,"nodeType":"Block","src":"9656:49:60","statements":[{"expression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":19669,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"components":[{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":19666,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"expression":{"id":19662,"name":"self","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":19657,"src":"9670:4:60","typeDescriptions":{"typeIdentifier":"t_struct$_ReserveConfigurationMap_$17777_memory_ptr","typeString":"struct DataTypes.ReserveConfigurationMap memory"}},"id":19663,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"9675:4:60","memberName":"data","nodeType":"MemberAccess","referencedDeclaration":17776,"src":"9670:9:60","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"&","rightExpression":{"id":19665,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"UnaryOperation","operator":"~","prefix":true,"src":"9682:12:60","subExpression":{"id":19664,"name":"FROZEN_MASK","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":19237,"src":"9683:11:60","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"9670:24:60","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"id":19667,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"9669:26:60","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"!=","rightExpression":{"hexValue":"30","id":19668,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"9699:1:60","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"9669:31:60","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"functionReturnParameters":19661,"id":19670,"nodeType":"Return","src":"9662:38:60"}]},"documentation":{"id":19654,"nodeType":"StructuredDocumentation","src":"9426:132:60","text":" @notice Gets the frozen state of the reserve\n @param self The reserve configuration\n @return The frozen state"},"id":19672,"implemented":true,"kind":"function","modifiers":[],"name":"getFrozen","nameLocation":"9570:9:60","nodeType":"FunctionDefinition","parameters":{"id":19658,"nodeType":"ParameterList","parameters":[{"constant":false,"id":19657,"mutability":"mutable","name":"self","nameLocation":"9621:4:60","nodeType":"VariableDeclaration","scope":19672,"src":"9580:45:60","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_struct$_ReserveConfigurationMap_$17777_memory_ptr","typeString":"struct DataTypes.ReserveConfigurationMap"},"typeName":{"id":19656,"nodeType":"UserDefinedTypeName","pathNode":{"id":19655,"name":"DataTypes.ReserveConfigurationMap","nameLocations":["9580:9:60","9590:23:60"],"nodeType":"IdentifierPath","referencedDeclaration":17777,"src":"9580:33:60"},"referencedDeclaration":17777,"src":"9580:33:60","typeDescriptions":{"typeIdentifier":"t_struct$_ReserveConfigurationMap_$17777_storage_ptr","typeString":"struct DataTypes.ReserveConfigurationMap"}},"visibility":"internal"}],"src":"9579:47:60"},"returnParameters":{"id":19661,"nodeType":"ParameterList","parameters":[{"constant":false,"id":19660,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":19672,"src":"9650:4:60","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":19659,"name":"bool","nodeType":"ElementaryTypeName","src":"9650:4:60","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"}],"src":"9649:6:60"},"scope":20496,"src":"9561:144:60","stateMutability":"pure","virtual":false,"visibility":"internal"},{"body":{"id":19702,"nodeType":"Block","src":"9943:120:60","statements":[{"expression":{"id":19700,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"expression":{"id":19681,"name":"self","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":19676,"src":"9949:4:60","typeDescriptions":{"typeIdentifier":"t_struct$_ReserveConfigurationMap_$17777_memory_ptr","typeString":"struct DataTypes.ReserveConfigurationMap memory"}},"id":19683,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"memberLocation":"9954:4:60","memberName":"data","nodeType":"MemberAccess","referencedDeclaration":17776,"src":"9949:9:60","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":19699,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"components":[{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":19687,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"expression":{"id":19684,"name":"self","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":19676,"src":"9968:4:60","typeDescriptions":{"typeIdentifier":"t_struct$_ReserveConfigurationMap_$17777_memory_ptr","typeString":"struct DataTypes.ReserveConfigurationMap memory"}},"id":19685,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"9973:4:60","memberName":"data","nodeType":"MemberAccess","referencedDeclaration":17776,"src":"9968:9:60","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"&","rightExpression":{"id":19686,"name":"PAUSED_MASK","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":19246,"src":"9980:11:60","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"9968:23:60","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"id":19688,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"9967:25:60","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"|","rightExpression":{"components":[{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":19697,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"arguments":[{"condition":{"id":19691,"name":"paused","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":19678,"src":"10010:6:60","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"falseExpression":{"hexValue":"30","id":19693,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"10023:1:60","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"id":19694,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"Conditional","src":"10010:14:60","trueExpression":{"hexValue":"31","id":19692,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"10019:1:60","typeDescriptions":{"typeIdentifier":"t_rational_1_by_1","typeString":"int_const 1"},"value":"1"},"typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint8","typeString":"uint8"}],"id":19690,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"10002:7:60","typeDescriptions":{"typeIdentifier":"t_type$_t_uint256_$","typeString":"type(uint256)"},"typeName":{"id":19689,"name":"uint256","nodeType":"ElementaryTypeName","src":"10002:7:60","typeDescriptions":{}}},"id":19695,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"10002:23:60","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"<<","rightExpression":{"id":19696,"name":"IS_PAUSED_START_BIT_POSITION","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":19301,"src":"10029:28:60","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"10002:55:60","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"id":19698,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"10001:57:60","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"9967:91:60","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"9949:109:60","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":19701,"nodeType":"ExpressionStatement","src":"9949:109:60"}]},"documentation":{"id":19673,"nodeType":"StructuredDocumentation","src":"9709:138:60","text":" @notice Sets the paused state of the reserve\n @param self The reserve configuration\n @param paused The paused state"},"id":19703,"implemented":true,"kind":"function","modifiers":[],"name":"setPaused","nameLocation":"9859:9:60","nodeType":"FunctionDefinition","parameters":{"id":19679,"nodeType":"ParameterList","parameters":[{"constant":false,"id":19676,"mutability":"mutable","name":"self","nameLocation":"9910:4:60","nodeType":"VariableDeclaration","scope":19703,"src":"9869:45:60","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_struct$_ReserveConfigurationMap_$17777_memory_ptr","typeString":"struct DataTypes.ReserveConfigurationMap"},"typeName":{"id":19675,"nodeType":"UserDefinedTypeName","pathNode":{"id":19674,"name":"DataTypes.ReserveConfigurationMap","nameLocations":["9869:9:60","9879:23:60"],"nodeType":"IdentifierPath","referencedDeclaration":17777,"src":"9869:33:60"},"referencedDeclaration":17777,"src":"9869:33:60","typeDescriptions":{"typeIdentifier":"t_struct$_ReserveConfigurationMap_$17777_storage_ptr","typeString":"struct DataTypes.ReserveConfigurationMap"}},"visibility":"internal"},{"constant":false,"id":19678,"mutability":"mutable","name":"paused","nameLocation":"9921:6:60","nodeType":"VariableDeclaration","scope":19703,"src":"9916:11:60","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":19677,"name":"bool","nodeType":"ElementaryTypeName","src":"9916:4:60","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"}],"src":"9868:60:60"},"returnParameters":{"id":19680,"nodeType":"ParameterList","parameters":[],"src":"9943:0:60"},"scope":20496,"src":"9850:213:60","stateMutability":"pure","virtual":false,"visibility":"internal"},{"body":{"id":19721,"nodeType":"Block","src":"10297:49:60","statements":[{"expression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":19719,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"components":[{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":19716,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"expression":{"id":19712,"name":"self","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":19707,"src":"10311:4:60","typeDescriptions":{"typeIdentifier":"t_struct$_ReserveConfigurationMap_$17777_memory_ptr","typeString":"struct DataTypes.ReserveConfigurationMap memory"}},"id":19713,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"10316:4:60","memberName":"data","nodeType":"MemberAccess","referencedDeclaration":17776,"src":"10311:9:60","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"&","rightExpression":{"id":19715,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"UnaryOperation","operator":"~","prefix":true,"src":"10323:12:60","subExpression":{"id":19714,"name":"PAUSED_MASK","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":19246,"src":"10324:11:60","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"10311:24:60","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"id":19717,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"10310:26:60","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"!=","rightExpression":{"hexValue":"30","id":19718,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"10340:1:60","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"10310:31:60","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"functionReturnParameters":19711,"id":19720,"nodeType":"Return","src":"10303:38:60"}]},"documentation":{"id":19704,"nodeType":"StructuredDocumentation","src":"10067:132:60","text":" @notice Gets the paused state of the reserve\n @param self The reserve configuration\n @return The paused state"},"id":19722,"implemented":true,"kind":"function","modifiers":[],"name":"getPaused","nameLocation":"10211:9:60","nodeType":"FunctionDefinition","parameters":{"id":19708,"nodeType":"ParameterList","parameters":[{"constant":false,"id":19707,"mutability":"mutable","name":"self","nameLocation":"10262:4:60","nodeType":"VariableDeclaration","scope":19722,"src":"10221:45:60","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_struct$_ReserveConfigurationMap_$17777_memory_ptr","typeString":"struct DataTypes.ReserveConfigurationMap"},"typeName":{"id":19706,"nodeType":"UserDefinedTypeName","pathNode":{"id":19705,"name":"DataTypes.ReserveConfigurationMap","nameLocations":["10221:9:60","10231:23:60"],"nodeType":"IdentifierPath","referencedDeclaration":17777,"src":"10221:33:60"},"referencedDeclaration":17777,"src":"10221:33:60","typeDescriptions":{"typeIdentifier":"t_struct$_ReserveConfigurationMap_$17777_storage_ptr","typeString":"struct DataTypes.ReserveConfigurationMap"}},"visibility":"internal"}],"src":"10220:47:60"},"returnParameters":{"id":19711,"nodeType":"ParameterList","parameters":[{"constant":false,"id":19710,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":19722,"src":"10291:4:60","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":19709,"name":"bool","nodeType":"ElementaryTypeName","src":"10291:4:60","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"}],"src":"10290:6:60"},"scope":20496,"src":"10202:144:60","stateMutability":"pure","virtual":false,"visibility":"internal"},{"body":{"id":19752,"nodeType":"Block","src":"11010:155:60","statements":[{"expression":{"id":19750,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"expression":{"id":19731,"name":"self","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":19726,"src":"11016:4:60","typeDescriptions":{"typeIdentifier":"t_struct$_ReserveConfigurationMap_$17777_memory_ptr","typeString":"struct DataTypes.ReserveConfigurationMap memory"}},"id":19733,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"memberLocation":"11021:4:60","memberName":"data","nodeType":"MemberAccess","referencedDeclaration":17776,"src":"11016:9:60","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":19749,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"components":[{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":19737,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"expression":{"id":19734,"name":"self","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":19726,"src":"11035:4:60","typeDescriptions":{"typeIdentifier":"t_struct$_ReserveConfigurationMap_$17777_memory_ptr","typeString":"struct DataTypes.ReserveConfigurationMap memory"}},"id":19735,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"11040:4:60","memberName":"data","nodeType":"MemberAccess","referencedDeclaration":17776,"src":"11035:9:60","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"&","rightExpression":{"id":19736,"name":"BORROWABLE_IN_ISOLATION_MASK","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":19249,"src":"11047:28:60","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"11035:40:60","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"id":19738,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"11034:42:60","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"|","rightExpression":{"components":[{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":19747,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"arguments":[{"condition":{"id":19741,"name":"borrowable","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":19728,"src":"11094:10:60","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"falseExpression":{"hexValue":"30","id":19743,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"11111:1:60","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"id":19744,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"Conditional","src":"11094:18:60","trueExpression":{"hexValue":"31","id":19742,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"11107:1:60","typeDescriptions":{"typeIdentifier":"t_rational_1_by_1","typeString":"int_const 1"},"value":"1"},"typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint8","typeString":"uint8"}],"id":19740,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"11086:7:60","typeDescriptions":{"typeIdentifier":"t_type$_t_uint256_$","typeString":"type(uint256)"},"typeName":{"id":19739,"name":"uint256","nodeType":"ElementaryTypeName","src":"11086:7:60","typeDescriptions":{}}},"id":19745,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"11086:27:60","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"<<","rightExpression":{"id":19746,"name":"BORROWABLE_IN_ISOLATION_START_BIT_POSITION","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":19304,"src":"11117:42:60","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"11086:73:60","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"id":19748,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"11085:75:60","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"11034:126:60","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"11016:144:60","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":19751,"nodeType":"ExpressionStatement","src":"11016:144:60"}]},"documentation":{"id":19723,"nodeType":"StructuredDocumentation","src":"10350:533:60","text":" @notice Sets the borrowable in isolation flag for the reserve.\n @dev When this flag is set to true, the asset will be borrowable against isolated collaterals and the borrowed\n amount will be accumulated in the isolated collateral's total debt exposure.\n @dev Only assets of the same family (eg USD stablecoins) should be borrowable in isolation mode to keep\n consistency in the debt ceiling calculations.\n @param self The reserve configuration\n @param borrowable True if the asset is borrowable"},"id":19753,"implemented":true,"kind":"function","modifiers":[],"name":"setBorrowableInIsolation","nameLocation":"10895:24:60","nodeType":"FunctionDefinition","parameters":{"id":19729,"nodeType":"ParameterList","parameters":[{"constant":false,"id":19726,"mutability":"mutable","name":"self","nameLocation":"10966:4:60","nodeType":"VariableDeclaration","scope":19753,"src":"10925:45:60","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_struct$_ReserveConfigurationMap_$17777_memory_ptr","typeString":"struct DataTypes.ReserveConfigurationMap"},"typeName":{"id":19725,"nodeType":"UserDefinedTypeName","pathNode":{"id":19724,"name":"DataTypes.ReserveConfigurationMap","nameLocations":["10925:9:60","10935:23:60"],"nodeType":"IdentifierPath","referencedDeclaration":17777,"src":"10925:33:60"},"referencedDeclaration":17777,"src":"10925:33:60","typeDescriptions":{"typeIdentifier":"t_struct$_ReserveConfigurationMap_$17777_storage_ptr","typeString":"struct DataTypes.ReserveConfigurationMap"}},"visibility":"internal"},{"constant":false,"id":19728,"mutability":"mutable","name":"borrowable","nameLocation":"10981:10:60","nodeType":"VariableDeclaration","scope":19753,"src":"10976:15:60","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":19727,"name":"bool","nodeType":"ElementaryTypeName","src":"10976:4:60","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"}],"src":"10919:76:60"},"returnParameters":{"id":19730,"nodeType":"ParameterList","parameters":[],"src":"11010:0:60"},"scope":20496,"src":"10886:279:60","stateMutability":"pure","virtual":false,"visibility":"internal"},{"body":{"id":19771,"nodeType":"Block","src":"11822:66:60","statements":[{"expression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":19769,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"components":[{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":19766,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"expression":{"id":19762,"name":"self","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":19757,"src":"11836:4:60","typeDescriptions":{"typeIdentifier":"t_struct$_ReserveConfigurationMap_$17777_memory_ptr","typeString":"struct DataTypes.ReserveConfigurationMap memory"}},"id":19763,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"11841:4:60","memberName":"data","nodeType":"MemberAccess","referencedDeclaration":17776,"src":"11836:9:60","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"&","rightExpression":{"id":19765,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"UnaryOperation","operator":"~","prefix":true,"src":"11848:29:60","subExpression":{"id":19764,"name":"BORROWABLE_IN_ISOLATION_MASK","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":19249,"src":"11849:28:60","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"11836:41:60","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"id":19767,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"11835:43:60","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"!=","rightExpression":{"hexValue":"30","id":19768,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"11882:1:60","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"11835:48:60","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"functionReturnParameters":19761,"id":19770,"nodeType":"Return","src":"11828:55:60"}]},"documentation":{"id":19754,"nodeType":"StructuredDocumentation","src":"11169:532:60","text":" @notice Gets the borrowable in isolation flag for the reserve.\n @dev If the returned flag is true, the asset is borrowable against isolated collateral. Assets borrowed with\n isolated collateral is accounted for in the isolated collateral's total debt exposure.\n @dev Only assets of the same family (eg USD stablecoins) should be borrowable in isolation mode to keep\n consistency in the debt ceiling calculations.\n @param self The reserve configuration\n @return The borrowable in isolation flag"},"id":19772,"implemented":true,"kind":"function","modifiers":[],"name":"getBorrowableInIsolation","nameLocation":"11713:24:60","nodeType":"FunctionDefinition","parameters":{"id":19758,"nodeType":"ParameterList","parameters":[{"constant":false,"id":19757,"mutability":"mutable","name":"self","nameLocation":"11784:4:60","nodeType":"VariableDeclaration","scope":19772,"src":"11743:45:60","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_struct$_ReserveConfigurationMap_$17777_memory_ptr","typeString":"struct DataTypes.ReserveConfigurationMap"},"typeName":{"id":19756,"nodeType":"UserDefinedTypeName","pathNode":{"id":19755,"name":"DataTypes.ReserveConfigurationMap","nameLocations":["11743:9:60","11753:23:60"],"nodeType":"IdentifierPath","referencedDeclaration":17777,"src":"11743:33:60"},"referencedDeclaration":17777,"src":"11743:33:60","typeDescriptions":{"typeIdentifier":"t_struct$_ReserveConfigurationMap_$17777_storage_ptr","typeString":"struct DataTypes.ReserveConfigurationMap"}},"visibility":"internal"}],"src":"11737:55:60"},"returnParameters":{"id":19761,"nodeType":"ParameterList","parameters":[{"constant":false,"id":19760,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":19772,"src":"11816:4:60","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":19759,"name":"bool","nodeType":"ElementaryTypeName","src":"11816:4:60","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"}],"src":"11815:6:60"},"scope":20496,"src":"11704:184:60","stateMutability":"pure","virtual":false,"visibility":"internal"},{"body":{"id":19802,"nodeType":"Block","src":"12284:137:60","statements":[{"expression":{"id":19800,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"expression":{"id":19781,"name":"self","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":19776,"src":"12290:4:60","typeDescriptions":{"typeIdentifier":"t_struct$_ReserveConfigurationMap_$17777_memory_ptr","typeString":"struct DataTypes.ReserveConfigurationMap memory"}},"id":19783,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"memberLocation":"12295:4:60","memberName":"data","nodeType":"MemberAccess","referencedDeclaration":17776,"src":"12290:9:60","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":19799,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"components":[{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":19787,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"expression":{"id":19784,"name":"self","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":19776,"src":"12309:4:60","typeDescriptions":{"typeIdentifier":"t_struct$_ReserveConfigurationMap_$17777_memory_ptr","typeString":"struct DataTypes.ReserveConfigurationMap memory"}},"id":19785,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"12314:4:60","memberName":"data","nodeType":"MemberAccess","referencedDeclaration":17776,"src":"12309:9:60","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"&","rightExpression":{"id":19786,"name":"SILOED_BORROWING_MASK","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":19252,"src":"12321:21:60","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"12309:33:60","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"id":19788,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"12308:35:60","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"|","rightExpression":{"components":[{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":19797,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"arguments":[{"condition":{"id":19791,"name":"siloed","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":19778,"src":"12361:6:60","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"falseExpression":{"hexValue":"30","id":19793,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"12374:1:60","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"id":19794,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"Conditional","src":"12361:14:60","trueExpression":{"hexValue":"31","id":19792,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"12370:1:60","typeDescriptions":{"typeIdentifier":"t_rational_1_by_1","typeString":"int_const 1"},"value":"1"},"typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint8","typeString":"uint8"}],"id":19790,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"12353:7:60","typeDescriptions":{"typeIdentifier":"t_type$_t_uint256_$","typeString":"type(uint256)"},"typeName":{"id":19789,"name":"uint256","nodeType":"ElementaryTypeName","src":"12353:7:60","typeDescriptions":{}}},"id":19795,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"12353:23:60","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"<<","rightExpression":{"id":19796,"name":"SILOED_BORROWING_START_BIT_POSITION","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":19307,"src":"12380:35:60","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"12353:62:60","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"id":19798,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"12352:64:60","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"12308:108:60","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"12290:126:60","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":19801,"nodeType":"ExpressionStatement","src":"12290:126:60"}]},"documentation":{"id":19773,"nodeType":"StructuredDocumentation","src":"11892:275:60","text":" @notice Sets the siloed borrowing flag for the reserve.\n @dev When this flag is set to true, users borrowing this asset will not be allowed to borrow any other asset.\n @param self The reserve configuration\n @param siloed True if the asset is siloed"},"id":19803,"implemented":true,"kind":"function","modifiers":[],"name":"setSiloedBorrowing","nameLocation":"12179:18:60","nodeType":"FunctionDefinition","parameters":{"id":19779,"nodeType":"ParameterList","parameters":[{"constant":false,"id":19776,"mutability":"mutable","name":"self","nameLocation":"12244:4:60","nodeType":"VariableDeclaration","scope":19803,"src":"12203:45:60","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_struct$_ReserveConfigurationMap_$17777_memory_ptr","typeString":"struct DataTypes.ReserveConfigurationMap"},"typeName":{"id":19775,"nodeType":"UserDefinedTypeName","pathNode":{"id":19774,"name":"DataTypes.ReserveConfigurationMap","nameLocations":["12203:9:60","12213:23:60"],"nodeType":"IdentifierPath","referencedDeclaration":17777,"src":"12203:33:60"},"referencedDeclaration":17777,"src":"12203:33:60","typeDescriptions":{"typeIdentifier":"t_struct$_ReserveConfigurationMap_$17777_storage_ptr","typeString":"struct DataTypes.ReserveConfigurationMap"}},"visibility":"internal"},{"constant":false,"id":19778,"mutability":"mutable","name":"siloed","nameLocation":"12259:6:60","nodeType":"VariableDeclaration","scope":19803,"src":"12254:11:60","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":19777,"name":"bool","nodeType":"ElementaryTypeName","src":"12254:4:60","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"}],"src":"12197:72:60"},"returnParameters":{"id":19780,"nodeType":"ParameterList","parameters":[],"src":"12284:0:60"},"scope":20496,"src":"12170:251:60","stateMutability":"pure","virtual":false,"visibility":"internal"},{"body":{"id":19821,"nodeType":"Block","src":"12807:59:60","statements":[{"expression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":19819,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"components":[{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":19816,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"expression":{"id":19812,"name":"self","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":19807,"src":"12821:4:60","typeDescriptions":{"typeIdentifier":"t_struct$_ReserveConfigurationMap_$17777_memory_ptr","typeString":"struct DataTypes.ReserveConfigurationMap memory"}},"id":19813,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"12826:4:60","memberName":"data","nodeType":"MemberAccess","referencedDeclaration":17776,"src":"12821:9:60","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"&","rightExpression":{"id":19815,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"UnaryOperation","operator":"~","prefix":true,"src":"12833:22:60","subExpression":{"id":19814,"name":"SILOED_BORROWING_MASK","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":19252,"src":"12834:21:60","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"12821:34:60","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"id":19817,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"12820:36:60","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"!=","rightExpression":{"hexValue":"30","id":19818,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"12860:1:60","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"12820:41:60","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"functionReturnParameters":19811,"id":19820,"nodeType":"Return","src":"12813:48:60"}]},"documentation":{"id":19804,"nodeType":"StructuredDocumentation","src":"12425:267:60","text":" @notice Gets the siloed borrowing flag for the reserve.\n @dev When this flag is set to true, users borrowing this asset will not be allowed to borrow any other asset.\n @param self The reserve configuration\n @return The siloed borrowing flag"},"id":19822,"implemented":true,"kind":"function","modifiers":[],"name":"getSiloedBorrowing","nameLocation":"12704:18:60","nodeType":"FunctionDefinition","parameters":{"id":19808,"nodeType":"ParameterList","parameters":[{"constant":false,"id":19807,"mutability":"mutable","name":"self","nameLocation":"12769:4:60","nodeType":"VariableDeclaration","scope":19822,"src":"12728:45:60","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_struct$_ReserveConfigurationMap_$17777_memory_ptr","typeString":"struct DataTypes.ReserveConfigurationMap"},"typeName":{"id":19806,"nodeType":"UserDefinedTypeName","pathNode":{"id":19805,"name":"DataTypes.ReserveConfigurationMap","nameLocations":["12728:9:60","12738:23:60"],"nodeType":"IdentifierPath","referencedDeclaration":17777,"src":"12728:33:60"},"referencedDeclaration":17777,"src":"12728:33:60","typeDescriptions":{"typeIdentifier":"t_struct$_ReserveConfigurationMap_$17777_storage_ptr","typeString":"struct DataTypes.ReserveConfigurationMap"}},"visibility":"internal"}],"src":"12722:55:60"},"returnParameters":{"id":19811,"nodeType":"ParameterList","parameters":[{"constant":false,"id":19810,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":19822,"src":"12801:4:60","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":19809,"name":"bool","nodeType":"ElementaryTypeName","src":"12801:4:60","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"}],"src":"12800:6:60"},"scope":20496,"src":"12695:171:60","stateMutability":"pure","virtual":false,"visibility":"internal"},{"body":{"id":19852,"nodeType":"Block","src":"13178:132:60","statements":[{"expression":{"id":19850,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"expression":{"id":19831,"name":"self","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":19826,"src":"13184:4:60","typeDescriptions":{"typeIdentifier":"t_struct$_ReserveConfigurationMap_$17777_memory_ptr","typeString":"struct DataTypes.ReserveConfigurationMap memory"}},"id":19833,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"memberLocation":"13189:4:60","memberName":"data","nodeType":"MemberAccess","referencedDeclaration":17776,"src":"13184:9:60","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":19849,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"components":[{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":19837,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"expression":{"id":19834,"name":"self","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":19826,"src":"13203:4:60","typeDescriptions":{"typeIdentifier":"t_struct$_ReserveConfigurationMap_$17777_memory_ptr","typeString":"struct DataTypes.ReserveConfigurationMap memory"}},"id":19835,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"13208:4:60","memberName":"data","nodeType":"MemberAccess","referencedDeclaration":17776,"src":"13203:9:60","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"&","rightExpression":{"id":19836,"name":"BORROWING_MASK","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":19240,"src":"13215:14:60","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"13203:26:60","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"id":19838,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"13202:28:60","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"|","rightExpression":{"components":[{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":19847,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"arguments":[{"condition":{"id":19841,"name":"enabled","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":19828,"src":"13248:7:60","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"falseExpression":{"hexValue":"30","id":19843,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"13262:1:60","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"id":19844,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"Conditional","src":"13248:15:60","trueExpression":{"hexValue":"31","id":19842,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"13258:1:60","typeDescriptions":{"typeIdentifier":"t_rational_1_by_1","typeString":"int_const 1"},"value":"1"},"typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint8","typeString":"uint8"}],"id":19840,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"13240:7:60","typeDescriptions":{"typeIdentifier":"t_type$_t_uint256_$","typeString":"type(uint256)"},"typeName":{"id":19839,"name":"uint256","nodeType":"ElementaryTypeName","src":"13240:7:60","typeDescriptions":{}}},"id":19845,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"13240:24:60","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"<<","rightExpression":{"id":19846,"name":"BORROWING_ENABLED_START_BIT_POSITION","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":19295,"src":"13268:36:60","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"13240:64:60","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"id":19848,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"13239:66:60","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"13202:103:60","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"13184:121:60","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":19851,"nodeType":"ExpressionStatement","src":"13184:121:60"}]},"documentation":{"id":19823,"nodeType":"StructuredDocumentation","src":"12870:189:60","text":" @notice Enables or disables borrowing on the reserve\n @param self The reserve configuration\n @param enabled True if the borrowing needs to be enabled, false otherwise"},"id":19853,"implemented":true,"kind":"function","modifiers":[],"name":"setBorrowingEnabled","nameLocation":"13071:19:60","nodeType":"FunctionDefinition","parameters":{"id":19829,"nodeType":"ParameterList","parameters":[{"constant":false,"id":19826,"mutability":"mutable","name":"self","nameLocation":"13137:4:60","nodeType":"VariableDeclaration","scope":19853,"src":"13096:45:60","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_struct$_ReserveConfigurationMap_$17777_memory_ptr","typeString":"struct DataTypes.ReserveConfigurationMap"},"typeName":{"id":19825,"nodeType":"UserDefinedTypeName","pathNode":{"id":19824,"name":"DataTypes.ReserveConfigurationMap","nameLocations":["13096:9:60","13106:23:60"],"nodeType":"IdentifierPath","referencedDeclaration":17777,"src":"13096:33:60"},"referencedDeclaration":17777,"src":"13096:33:60","typeDescriptions":{"typeIdentifier":"t_struct$_ReserveConfigurationMap_$17777_storage_ptr","typeString":"struct DataTypes.ReserveConfigurationMap"}},"visibility":"internal"},{"constant":false,"id":19828,"mutability":"mutable","name":"enabled","nameLocation":"13152:7:60","nodeType":"VariableDeclaration","scope":19853,"src":"13147:12:60","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":19827,"name":"bool","nodeType":"ElementaryTypeName","src":"13147:4:60","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"}],"src":"13090:73:60"},"returnParameters":{"id":19830,"nodeType":"ParameterList","parameters":[],"src":"13178:0:60"},"scope":20496,"src":"13062:248:60","stateMutability":"pure","virtual":false,"visibility":"internal"},{"body":{"id":19871,"nodeType":"Block","src":"13568:52:60","statements":[{"expression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":19869,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"components":[{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":19866,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"expression":{"id":19862,"name":"self","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":19857,"src":"13582:4:60","typeDescriptions":{"typeIdentifier":"t_struct$_ReserveConfigurationMap_$17777_memory_ptr","typeString":"struct DataTypes.ReserveConfigurationMap memory"}},"id":19863,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"13587:4:60","memberName":"data","nodeType":"MemberAccess","referencedDeclaration":17776,"src":"13582:9:60","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"&","rightExpression":{"id":19865,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"UnaryOperation","operator":"~","prefix":true,"src":"13594:15:60","subExpression":{"id":19864,"name":"BORROWING_MASK","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":19240,"src":"13595:14:60","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"13582:27:60","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"id":19867,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"13581:29:60","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"!=","rightExpression":{"hexValue":"30","id":19868,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"13614:1:60","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"13581:34:60","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"functionReturnParameters":19861,"id":19870,"nodeType":"Return","src":"13574:41:60"}]},"documentation":{"id":19854,"nodeType":"StructuredDocumentation","src":"13314:138:60","text":" @notice Gets the borrowing state of the reserve\n @param self The reserve configuration\n @return The borrowing state"},"id":19872,"implemented":true,"kind":"function","modifiers":[],"name":"getBorrowingEnabled","nameLocation":"13464:19:60","nodeType":"FunctionDefinition","parameters":{"id":19858,"nodeType":"ParameterList","parameters":[{"constant":false,"id":19857,"mutability":"mutable","name":"self","nameLocation":"13530:4:60","nodeType":"VariableDeclaration","scope":19872,"src":"13489:45:60","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_struct$_ReserveConfigurationMap_$17777_memory_ptr","typeString":"struct DataTypes.ReserveConfigurationMap"},"typeName":{"id":19856,"nodeType":"UserDefinedTypeName","pathNode":{"id":19855,"name":"DataTypes.ReserveConfigurationMap","nameLocations":["13489:9:60","13499:23:60"],"nodeType":"IdentifierPath","referencedDeclaration":17777,"src":"13489:33:60"},"referencedDeclaration":17777,"src":"13489:33:60","typeDescriptions":{"typeIdentifier":"t_struct$_ReserveConfigurationMap_$17777_storage_ptr","typeString":"struct DataTypes.ReserveConfigurationMap"}},"visibility":"internal"}],"src":"13483:55:60"},"returnParameters":{"id":19861,"nodeType":"ParameterList","parameters":[{"constant":false,"id":19860,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":19872,"src":"13562:4:60","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":19859,"name":"bool","nodeType":"ElementaryTypeName","src":"13562:4:60","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"}],"src":"13561:6:60"},"scope":20496,"src":"13455:165:60","stateMutability":"pure","virtual":false,"visibility":"internal"},{"body":{"id":19902,"nodeType":"Block","src":"13966:146:60","statements":[{"expression":{"id":19900,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"expression":{"id":19881,"name":"self","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":19876,"src":"13972:4:60","typeDescriptions":{"typeIdentifier":"t_struct$_ReserveConfigurationMap_$17777_memory_ptr","typeString":"struct DataTypes.ReserveConfigurationMap memory"}},"id":19883,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"memberLocation":"13977:4:60","memberName":"data","nodeType":"MemberAccess","referencedDeclaration":17776,"src":"13972:9:60","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":19899,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"components":[{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":19887,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"expression":{"id":19884,"name":"self","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":19876,"src":"13991:4:60","typeDescriptions":{"typeIdentifier":"t_struct$_ReserveConfigurationMap_$17777_memory_ptr","typeString":"struct DataTypes.ReserveConfigurationMap memory"}},"id":19885,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"13996:4:60","memberName":"data","nodeType":"MemberAccess","referencedDeclaration":17776,"src":"13991:9:60","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"&","rightExpression":{"id":19886,"name":"STABLE_BORROWING_MASK","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":19243,"src":"14003:21:60","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"13991:33:60","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"id":19888,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"13990:35:60","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"|","rightExpression":{"components":[{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":19897,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"arguments":[{"condition":{"id":19891,"name":"enabled","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":19878,"src":"14043:7:60","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"falseExpression":{"hexValue":"30","id":19893,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"14057:1:60","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"id":19894,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"Conditional","src":"14043:15:60","trueExpression":{"hexValue":"31","id":19892,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"14053:1:60","typeDescriptions":{"typeIdentifier":"t_rational_1_by_1","typeString":"int_const 1"},"value":"1"},"typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint8","typeString":"uint8"}],"id":19890,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"14035:7:60","typeDescriptions":{"typeIdentifier":"t_type$_t_uint256_$","typeString":"type(uint256)"},"typeName":{"id":19889,"name":"uint256","nodeType":"ElementaryTypeName","src":"14035:7:60","typeDescriptions":{}}},"id":19895,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"14035:24:60","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"<<","rightExpression":{"id":19896,"name":"STABLE_BORROWING_ENABLED_START_BIT_POSITION","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":19298,"src":"14063:43:60","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"14035:71:60","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"id":19898,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"14034:73:60","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"13990:117:60","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"13972:135:60","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":19901,"nodeType":"ExpressionStatement","src":"13972:135:60"}]},"documentation":{"id":19873,"nodeType":"StructuredDocumentation","src":"13624:213:60","text":" @notice Enables or disables stable rate borrowing on the reserve\n @param self The reserve configuration\n @param enabled True if the stable rate borrowing needs to be enabled, false otherwise"},"id":19903,"implemented":true,"kind":"function","modifiers":[],"name":"setStableRateBorrowingEnabled","nameLocation":"13849:29:60","nodeType":"FunctionDefinition","parameters":{"id":19879,"nodeType":"ParameterList","parameters":[{"constant":false,"id":19876,"mutability":"mutable","name":"self","nameLocation":"13925:4:60","nodeType":"VariableDeclaration","scope":19903,"src":"13884:45:60","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_struct$_ReserveConfigurationMap_$17777_memory_ptr","typeString":"struct DataTypes.ReserveConfigurationMap"},"typeName":{"id":19875,"nodeType":"UserDefinedTypeName","pathNode":{"id":19874,"name":"DataTypes.ReserveConfigurationMap","nameLocations":["13884:9:60","13894:23:60"],"nodeType":"IdentifierPath","referencedDeclaration":17777,"src":"13884:33:60"},"referencedDeclaration":17777,"src":"13884:33:60","typeDescriptions":{"typeIdentifier":"t_struct$_ReserveConfigurationMap_$17777_storage_ptr","typeString":"struct DataTypes.ReserveConfigurationMap"}},"visibility":"internal"},{"constant":false,"id":19878,"mutability":"mutable","name":"enabled","nameLocation":"13940:7:60","nodeType":"VariableDeclaration","scope":19903,"src":"13935:12:60","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":19877,"name":"bool","nodeType":"ElementaryTypeName","src":"13935:4:60","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"}],"src":"13878:73:60"},"returnParameters":{"id":19880,"nodeType":"ParameterList","parameters":[],"src":"13966:0:60"},"scope":20496,"src":"13840:272:60","stateMutability":"pure","virtual":false,"visibility":"internal"},{"body":{"id":19921,"nodeType":"Block","src":"14404:59:60","statements":[{"expression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":19919,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"components":[{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":19916,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"expression":{"id":19912,"name":"self","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":19907,"src":"14418:4:60","typeDescriptions":{"typeIdentifier":"t_struct$_ReserveConfigurationMap_$17777_memory_ptr","typeString":"struct DataTypes.ReserveConfigurationMap memory"}},"id":19913,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"14423:4:60","memberName":"data","nodeType":"MemberAccess","referencedDeclaration":17776,"src":"14418:9:60","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"&","rightExpression":{"id":19915,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"UnaryOperation","operator":"~","prefix":true,"src":"14430:22:60","subExpression":{"id":19914,"name":"STABLE_BORROWING_MASK","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":19243,"src":"14431:21:60","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"14418:34:60","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"id":19917,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"14417:36:60","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"!=","rightExpression":{"hexValue":"30","id":19918,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"14457:1:60","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"14417:41:60","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"functionReturnParameters":19911,"id":19920,"nodeType":"Return","src":"14410:48:60"}]},"documentation":{"id":19904,"nodeType":"StructuredDocumentation","src":"14116:162:60","text":" @notice Gets the stable rate borrowing state of the reserve\n @param self The reserve configuration\n @return The stable rate borrowing state"},"id":19922,"implemented":true,"kind":"function","modifiers":[],"name":"getStableRateBorrowingEnabled","nameLocation":"14290:29:60","nodeType":"FunctionDefinition","parameters":{"id":19908,"nodeType":"ParameterList","parameters":[{"constant":false,"id":19907,"mutability":"mutable","name":"self","nameLocation":"14366:4:60","nodeType":"VariableDeclaration","scope":19922,"src":"14325:45:60","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_struct$_ReserveConfigurationMap_$17777_memory_ptr","typeString":"struct DataTypes.ReserveConfigurationMap"},"typeName":{"id":19906,"nodeType":"UserDefinedTypeName","pathNode":{"id":19905,"name":"DataTypes.ReserveConfigurationMap","nameLocations":["14325:9:60","14335:23:60"],"nodeType":"IdentifierPath","referencedDeclaration":17777,"src":"14325:33:60"},"referencedDeclaration":17777,"src":"14325:33:60","typeDescriptions":{"typeIdentifier":"t_struct$_ReserveConfigurationMap_$17777_storage_ptr","typeString":"struct DataTypes.ReserveConfigurationMap"}},"visibility":"internal"}],"src":"14319:55:60"},"returnParameters":{"id":19911,"nodeType":"ParameterList","parameters":[{"constant":false,"id":19910,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":19922,"src":"14398:4:60","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":19909,"name":"bool","nodeType":"ElementaryTypeName","src":"14398:4:60","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"}],"src":"14397:6:60"},"scope":20496,"src":"14281:182:60","stateMutability":"pure","virtual":false,"visibility":"internal"},{"body":{"id":19954,"nodeType":"Block","src":"14741:211:60","statements":[{"expression":{"arguments":[{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":19934,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":19932,"name":"reserveFactor","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":19928,"src":"14755:13:60","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"<=","rightExpression":{"id":19933,"name":"MAX_VALID_RESERVE_FACTOR","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":19346,"src":"14772:24:60","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"14755:41:60","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},{"expression":{"id":19935,"name":"Errors","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":18366,"src":"14798:6:60","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_Errors_$18366_$","typeString":"type(library Errors)"}},"id":19936,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberLocation":"14805:22:60","memberName":"INVALID_RESERVE_FACTOR","nodeType":"MemberAccess","referencedDeclaration":18293,"src":"14798:29:60","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"}],"id":19931,"name":"require","nodeType":"Identifier","overloadedDeclarations":[-18,-18,-18],"referencedDeclaration":-18,"src":"14747:7:60","typeDescriptions":{"typeIdentifier":"t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$","typeString":"function (bool,string memory) pure"}},"id":19937,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"14747:81:60","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":19938,"nodeType":"ExpressionStatement","src":"14747:81:60"},{"expression":{"id":19952,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"expression":{"id":19939,"name":"self","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":19926,"src":"14835:4:60","typeDescriptions":{"typeIdentifier":"t_struct$_ReserveConfigurationMap_$17777_memory_ptr","typeString":"struct DataTypes.ReserveConfigurationMap memory"}},"id":19941,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"memberLocation":"14840:4:60","memberName":"data","nodeType":"MemberAccess","referencedDeclaration":17776,"src":"14835:9:60","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":19951,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"components":[{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":19945,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"expression":{"id":19942,"name":"self","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":19926,"src":"14854:4:60","typeDescriptions":{"typeIdentifier":"t_struct$_ReserveConfigurationMap_$17777_memory_ptr","typeString":"struct DataTypes.ReserveConfigurationMap memory"}},"id":19943,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"14859:4:60","memberName":"data","nodeType":"MemberAccess","referencedDeclaration":17776,"src":"14854:9:60","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"&","rightExpression":{"id":19944,"name":"RESERVE_FACTOR_MASK","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":19258,"src":"14866:19:60","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"14854:31:60","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"id":19946,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"14853:33:60","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"|","rightExpression":{"components":[{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":19949,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":19947,"name":"reserveFactor","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":19928,"src":"14896:13:60","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"<<","rightExpression":{"id":19948,"name":"RESERVE_FACTOR_START_BIT_POSITION","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":19313,"src":"14913:33:60","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"14896:50:60","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"id":19950,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"14895:52:60","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"14853:94:60","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"14835:112:60","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":19953,"nodeType":"ExpressionStatement","src":"14835:112:60"}]},"documentation":{"id":19923,"nodeType":"StructuredDocumentation","src":"14467:149:60","text":" @notice Sets the reserve factor of the reserve\n @param self The reserve configuration\n @param reserveFactor The reserve factor"},"id":19955,"implemented":true,"kind":"function","modifiers":[],"name":"setReserveFactor","nameLocation":"14628:16:60","nodeType":"FunctionDefinition","parameters":{"id":19929,"nodeType":"ParameterList","parameters":[{"constant":false,"id":19926,"mutability":"mutable","name":"self","nameLocation":"14691:4:60","nodeType":"VariableDeclaration","scope":19955,"src":"14650:45:60","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_struct$_ReserveConfigurationMap_$17777_memory_ptr","typeString":"struct DataTypes.ReserveConfigurationMap"},"typeName":{"id":19925,"nodeType":"UserDefinedTypeName","pathNode":{"id":19924,"name":"DataTypes.ReserveConfigurationMap","nameLocations":["14650:9:60","14660:23:60"],"nodeType":"IdentifierPath","referencedDeclaration":17777,"src":"14650:33:60"},"referencedDeclaration":17777,"src":"14650:33:60","typeDescriptions":{"typeIdentifier":"t_struct$_ReserveConfigurationMap_$17777_storage_ptr","typeString":"struct DataTypes.ReserveConfigurationMap"}},"visibility":"internal"},{"constant":false,"id":19928,"mutability":"mutable","name":"reserveFactor","nameLocation":"14709:13:60","nodeType":"VariableDeclaration","scope":19955,"src":"14701:21:60","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":19927,"name":"uint256","nodeType":"ElementaryTypeName","src":"14701:7:60","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"14644:82:60"},"returnParameters":{"id":19930,"nodeType":"ParameterList","parameters":[],"src":"14741:0:60"},"scope":20496,"src":"14619:333:60","stateMutability":"pure","virtual":false,"visibility":"internal"},{"body":{"id":19973,"nodeType":"Block","src":"15208:89:60","statements":[{"expression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":19971,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"components":[{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":19968,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"expression":{"id":19964,"name":"self","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":19959,"src":"15222:4:60","typeDescriptions":{"typeIdentifier":"t_struct$_ReserveConfigurationMap_$17777_memory_ptr","typeString":"struct DataTypes.ReserveConfigurationMap memory"}},"id":19965,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"15227:4:60","memberName":"data","nodeType":"MemberAccess","referencedDeclaration":17776,"src":"15222:9:60","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"&","rightExpression":{"id":19967,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"UnaryOperation","operator":"~","prefix":true,"src":"15234:20:60","subExpression":{"id":19966,"name":"RESERVE_FACTOR_MASK","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":19258,"src":"15235:19:60","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"15222:32:60","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"id":19969,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"15221:34:60","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">>","rightExpression":{"id":19970,"name":"RESERVE_FACTOR_START_BIT_POSITION","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":19313,"src":"15259:33:60","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"15221:71:60","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"functionReturnParameters":19963,"id":19972,"nodeType":"Return","src":"15214:78:60"}]},"documentation":{"id":19956,"nodeType":"StructuredDocumentation","src":"14956:136:60","text":" @notice Gets the reserve factor of the reserve\n @param self The reserve configuration\n @return The reserve factor"},"id":19974,"implemented":true,"kind":"function","modifiers":[],"name":"getReserveFactor","nameLocation":"15104:16:60","nodeType":"FunctionDefinition","parameters":{"id":19960,"nodeType":"ParameterList","parameters":[{"constant":false,"id":19959,"mutability":"mutable","name":"self","nameLocation":"15167:4:60","nodeType":"VariableDeclaration","scope":19974,"src":"15126:45:60","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_struct$_ReserveConfigurationMap_$17777_memory_ptr","typeString":"struct DataTypes.ReserveConfigurationMap"},"typeName":{"id":19958,"nodeType":"UserDefinedTypeName","pathNode":{"id":19957,"name":"DataTypes.ReserveConfigurationMap","nameLocations":["15126:9:60","15136:23:60"],"nodeType":"IdentifierPath","referencedDeclaration":17777,"src":"15126:33:60"},"referencedDeclaration":17777,"src":"15126:33:60","typeDescriptions":{"typeIdentifier":"t_struct$_ReserveConfigurationMap_$17777_storage_ptr","typeString":"struct DataTypes.ReserveConfigurationMap"}},"visibility":"internal"}],"src":"15120:55:60"},"returnParameters":{"id":19963,"nodeType":"ParameterList","parameters":[{"constant":false,"id":19962,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":19974,"src":"15199:7:60","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":19961,"name":"uint256","nodeType":"ElementaryTypeName","src":"15199:7:60","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"15198:9:60"},"scope":20496,"src":"15095:202:60","stateMutability":"pure","virtual":false,"visibility":"internal"},{"body":{"id":20006,"nodeType":"Block","src":"15555:175:60","statements":[{"expression":{"arguments":[{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":19986,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":19984,"name":"borrowCap","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":19980,"src":"15569:9:60","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"<=","rightExpression":{"id":19985,"name":"MAX_VALID_BORROW_CAP","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":19349,"src":"15582:20:60","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"15569:33:60","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},{"expression":{"id":19987,"name":"Errors","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":18366,"src":"15604:6:60","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_Errors_$18366_$","typeString":"type(library Errors)"}},"id":19988,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberLocation":"15611:18:60","memberName":"INVALID_BORROW_CAP","nodeType":"MemberAccess","referencedDeclaration":18296,"src":"15604:25:60","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"}],"id":19983,"name":"require","nodeType":"Identifier","overloadedDeclarations":[-18,-18,-18],"referencedDeclaration":-18,"src":"15561:7:60","typeDescriptions":{"typeIdentifier":"t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$","typeString":"function (bool,string memory) pure"}},"id":19989,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"15561:69:60","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":19990,"nodeType":"ExpressionStatement","src":"15561:69:60"},{"expression":{"id":20004,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"expression":{"id":19991,"name":"self","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":19978,"src":"15637:4:60","typeDescriptions":{"typeIdentifier":"t_struct$_ReserveConfigurationMap_$17777_memory_ptr","typeString":"struct DataTypes.ReserveConfigurationMap memory"}},"id":19993,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"memberLocation":"15642:4:60","memberName":"data","nodeType":"MemberAccess","referencedDeclaration":17776,"src":"15637:9:60","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":20003,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"components":[{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":19997,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"expression":{"id":19994,"name":"self","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":19978,"src":"15650:4:60","typeDescriptions":{"typeIdentifier":"t_struct$_ReserveConfigurationMap_$17777_memory_ptr","typeString":"struct DataTypes.ReserveConfigurationMap memory"}},"id":19995,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"15655:4:60","memberName":"data","nodeType":"MemberAccess","referencedDeclaration":17776,"src":"15650:9:60","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"&","rightExpression":{"id":19996,"name":"BORROW_CAP_MASK","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":19261,"src":"15662:15:60","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"15650:27:60","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"id":19998,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"15649:29:60","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"|","rightExpression":{"components":[{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":20001,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":19999,"name":"borrowCap","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":19980,"src":"15682:9:60","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"<<","rightExpression":{"id":20000,"name":"BORROW_CAP_START_BIT_POSITION","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":19316,"src":"15695:29:60","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"15682:42:60","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"id":20002,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"15681:44:60","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"15649:76:60","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"15637:88:60","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":20005,"nodeType":"ExpressionStatement","src":"15637:88:60"}]},"documentation":{"id":19975,"nodeType":"StructuredDocumentation","src":"15301:137:60","text":" @notice Sets the borrow cap of the reserve\n @param self The reserve configuration\n @param borrowCap The borrow cap"},"id":20007,"implemented":true,"kind":"function","modifiers":[],"name":"setBorrowCap","nameLocation":"15450:12:60","nodeType":"FunctionDefinition","parameters":{"id":19981,"nodeType":"ParameterList","parameters":[{"constant":false,"id":19978,"mutability":"mutable","name":"self","nameLocation":"15509:4:60","nodeType":"VariableDeclaration","scope":20007,"src":"15468:45:60","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_struct$_ReserveConfigurationMap_$17777_memory_ptr","typeString":"struct DataTypes.ReserveConfigurationMap"},"typeName":{"id":19977,"nodeType":"UserDefinedTypeName","pathNode":{"id":19976,"name":"DataTypes.ReserveConfigurationMap","nameLocations":["15468:9:60","15478:23:60"],"nodeType":"IdentifierPath","referencedDeclaration":17777,"src":"15468:33:60"},"referencedDeclaration":17777,"src":"15468:33:60","typeDescriptions":{"typeIdentifier":"t_struct$_ReserveConfigurationMap_$17777_storage_ptr","typeString":"struct DataTypes.ReserveConfigurationMap"}},"visibility":"internal"},{"constant":false,"id":19980,"mutability":"mutable","name":"borrowCap","nameLocation":"15527:9:60","nodeType":"VariableDeclaration","scope":20007,"src":"15519:17:60","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":19979,"name":"uint256","nodeType":"ElementaryTypeName","src":"15519:7:60","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"15462:78:60"},"returnParameters":{"id":19982,"nodeType":"ParameterList","parameters":[],"src":"15555:0:60"},"scope":20496,"src":"15441:289:60","stateMutability":"pure","virtual":false,"visibility":"internal"},{"body":{"id":20025,"nodeType":"Block","src":"15974:81:60","statements":[{"expression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":20023,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"components":[{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":20020,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"expression":{"id":20016,"name":"self","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":20011,"src":"15988:4:60","typeDescriptions":{"typeIdentifier":"t_struct$_ReserveConfigurationMap_$17777_memory_ptr","typeString":"struct DataTypes.ReserveConfigurationMap memory"}},"id":20017,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"15993:4:60","memberName":"data","nodeType":"MemberAccess","referencedDeclaration":17776,"src":"15988:9:60","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"&","rightExpression":{"id":20019,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"UnaryOperation","operator":"~","prefix":true,"src":"16000:16:60","subExpression":{"id":20018,"name":"BORROW_CAP_MASK","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":19261,"src":"16001:15:60","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"15988:28:60","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"id":20021,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"15987:30:60","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">>","rightExpression":{"id":20022,"name":"BORROW_CAP_START_BIT_POSITION","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":19316,"src":"16021:29:60","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"15987:63:60","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"functionReturnParameters":20015,"id":20024,"nodeType":"Return","src":"15980:70:60"}]},"documentation":{"id":20008,"nodeType":"StructuredDocumentation","src":"15734:128:60","text":" @notice Gets the borrow cap of the reserve\n @param self The reserve configuration\n @return The borrow cap"},"id":20026,"implemented":true,"kind":"function","modifiers":[],"name":"getBorrowCap","nameLocation":"15874:12:60","nodeType":"FunctionDefinition","parameters":{"id":20012,"nodeType":"ParameterList","parameters":[{"constant":false,"id":20011,"mutability":"mutable","name":"self","nameLocation":"15933:4:60","nodeType":"VariableDeclaration","scope":20026,"src":"15892:45:60","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_struct$_ReserveConfigurationMap_$17777_memory_ptr","typeString":"struct DataTypes.ReserveConfigurationMap"},"typeName":{"id":20010,"nodeType":"UserDefinedTypeName","pathNode":{"id":20009,"name":"DataTypes.ReserveConfigurationMap","nameLocations":["15892:9:60","15902:23:60"],"nodeType":"IdentifierPath","referencedDeclaration":17777,"src":"15892:33:60"},"referencedDeclaration":17777,"src":"15892:33:60","typeDescriptions":{"typeIdentifier":"t_struct$_ReserveConfigurationMap_$17777_storage_ptr","typeString":"struct DataTypes.ReserveConfigurationMap"}},"visibility":"internal"}],"src":"15886:55:60"},"returnParameters":{"id":20015,"nodeType":"ParameterList","parameters":[{"constant":false,"id":20014,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":20026,"src":"15965:7:60","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":20013,"name":"uint256","nodeType":"ElementaryTypeName","src":"15965:7:60","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"15964:9:60"},"scope":20496,"src":"15865:190:60","stateMutability":"pure","virtual":false,"visibility":"internal"},{"body":{"id":20058,"nodeType":"Block","src":"16313:175:60","statements":[{"expression":{"arguments":[{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":20038,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":20036,"name":"supplyCap","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":20032,"src":"16327:9:60","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"<=","rightExpression":{"id":20037,"name":"MAX_VALID_SUPPLY_CAP","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":19352,"src":"16340:20:60","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"16327:33:60","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},{"expression":{"id":20039,"name":"Errors","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":18366,"src":"16362:6:60","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_Errors_$18366_$","typeString":"type(library Errors)"}},"id":20040,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberLocation":"16369:18:60","memberName":"INVALID_SUPPLY_CAP","nodeType":"MemberAccess","referencedDeclaration":18299,"src":"16362:25:60","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"}],"id":20035,"name":"require","nodeType":"Identifier","overloadedDeclarations":[-18,-18,-18],"referencedDeclaration":-18,"src":"16319:7:60","typeDescriptions":{"typeIdentifier":"t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$","typeString":"function (bool,string memory) pure"}},"id":20041,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"16319:69:60","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":20042,"nodeType":"ExpressionStatement","src":"16319:69:60"},{"expression":{"id":20056,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"expression":{"id":20043,"name":"self","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":20030,"src":"16395:4:60","typeDescriptions":{"typeIdentifier":"t_struct$_ReserveConfigurationMap_$17777_memory_ptr","typeString":"struct DataTypes.ReserveConfigurationMap memory"}},"id":20045,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"memberLocation":"16400:4:60","memberName":"data","nodeType":"MemberAccess","referencedDeclaration":17776,"src":"16395:9:60","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":20055,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"components":[{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":20049,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"expression":{"id":20046,"name":"self","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":20030,"src":"16408:4:60","typeDescriptions":{"typeIdentifier":"t_struct$_ReserveConfigurationMap_$17777_memory_ptr","typeString":"struct DataTypes.ReserveConfigurationMap memory"}},"id":20047,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"16413:4:60","memberName":"data","nodeType":"MemberAccess","referencedDeclaration":17776,"src":"16408:9:60","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"&","rightExpression":{"id":20048,"name":"SUPPLY_CAP_MASK","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":19264,"src":"16420:15:60","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"16408:27:60","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"id":20050,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"16407:29:60","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"|","rightExpression":{"components":[{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":20053,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":20051,"name":"supplyCap","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":20032,"src":"16440:9:60","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"<<","rightExpression":{"id":20052,"name":"SUPPLY_CAP_START_BIT_POSITION","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":19319,"src":"16453:29:60","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"16440:42:60","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"id":20054,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"16439:44:60","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"16407:76:60","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"16395:88:60","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":20057,"nodeType":"ExpressionStatement","src":"16395:88:60"}]},"documentation":{"id":20027,"nodeType":"StructuredDocumentation","src":"16059:137:60","text":" @notice Sets the supply cap of the reserve\n @param self The reserve configuration\n @param supplyCap The supply cap"},"id":20059,"implemented":true,"kind":"function","modifiers":[],"name":"setSupplyCap","nameLocation":"16208:12:60","nodeType":"FunctionDefinition","parameters":{"id":20033,"nodeType":"ParameterList","parameters":[{"constant":false,"id":20030,"mutability":"mutable","name":"self","nameLocation":"16267:4:60","nodeType":"VariableDeclaration","scope":20059,"src":"16226:45:60","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_struct$_ReserveConfigurationMap_$17777_memory_ptr","typeString":"struct DataTypes.ReserveConfigurationMap"},"typeName":{"id":20029,"nodeType":"UserDefinedTypeName","pathNode":{"id":20028,"name":"DataTypes.ReserveConfigurationMap","nameLocations":["16226:9:60","16236:23:60"],"nodeType":"IdentifierPath","referencedDeclaration":17777,"src":"16226:33:60"},"referencedDeclaration":17777,"src":"16226:33:60","typeDescriptions":{"typeIdentifier":"t_struct$_ReserveConfigurationMap_$17777_storage_ptr","typeString":"struct DataTypes.ReserveConfigurationMap"}},"visibility":"internal"},{"constant":false,"id":20032,"mutability":"mutable","name":"supplyCap","nameLocation":"16285:9:60","nodeType":"VariableDeclaration","scope":20059,"src":"16277:17:60","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":20031,"name":"uint256","nodeType":"ElementaryTypeName","src":"16277:7:60","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"16220:78:60"},"returnParameters":{"id":20034,"nodeType":"ParameterList","parameters":[],"src":"16313:0:60"},"scope":20496,"src":"16199:289:60","stateMutability":"pure","virtual":false,"visibility":"internal"},{"body":{"id":20077,"nodeType":"Block","src":"16732:81:60","statements":[{"expression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":20075,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"components":[{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":20072,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"expression":{"id":20068,"name":"self","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":20063,"src":"16746:4:60","typeDescriptions":{"typeIdentifier":"t_struct$_ReserveConfigurationMap_$17777_memory_ptr","typeString":"struct DataTypes.ReserveConfigurationMap memory"}},"id":20069,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"16751:4:60","memberName":"data","nodeType":"MemberAccess","referencedDeclaration":17776,"src":"16746:9:60","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"&","rightExpression":{"id":20071,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"UnaryOperation","operator":"~","prefix":true,"src":"16758:16:60","subExpression":{"id":20070,"name":"SUPPLY_CAP_MASK","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":19264,"src":"16759:15:60","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"16746:28:60","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"id":20073,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"16745:30:60","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">>","rightExpression":{"id":20074,"name":"SUPPLY_CAP_START_BIT_POSITION","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":19319,"src":"16779:29:60","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"16745:63:60","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"functionReturnParameters":20067,"id":20076,"nodeType":"Return","src":"16738:70:60"}]},"documentation":{"id":20060,"nodeType":"StructuredDocumentation","src":"16492:128:60","text":" @notice Gets the supply cap of the reserve\n @param self The reserve configuration\n @return The supply cap"},"id":20078,"implemented":true,"kind":"function","modifiers":[],"name":"getSupplyCap","nameLocation":"16632:12:60","nodeType":"FunctionDefinition","parameters":{"id":20064,"nodeType":"ParameterList","parameters":[{"constant":false,"id":20063,"mutability":"mutable","name":"self","nameLocation":"16691:4:60","nodeType":"VariableDeclaration","scope":20078,"src":"16650:45:60","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_struct$_ReserveConfigurationMap_$17777_memory_ptr","typeString":"struct DataTypes.ReserveConfigurationMap"},"typeName":{"id":20062,"nodeType":"UserDefinedTypeName","pathNode":{"id":20061,"name":"DataTypes.ReserveConfigurationMap","nameLocations":["16650:9:60","16660:23:60"],"nodeType":"IdentifierPath","referencedDeclaration":17777,"src":"16650:33:60"},"referencedDeclaration":17777,"src":"16650:33:60","typeDescriptions":{"typeIdentifier":"t_struct$_ReserveConfigurationMap_$17777_storage_ptr","typeString":"struct DataTypes.ReserveConfigurationMap"}},"visibility":"internal"}],"src":"16644:55:60"},"returnParameters":{"id":20067,"nodeType":"ParameterList","parameters":[{"constant":false,"id":20066,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":20078,"src":"16723:7:60","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":20065,"name":"uint256","nodeType":"ElementaryTypeName","src":"16723:7:60","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"16722:9:60"},"scope":20496,"src":"16623:190:60","stateMutability":"pure","virtual":false,"visibility":"internal"},{"body":{"id":20110,"nodeType":"Block","src":"17112:179:60","statements":[{"expression":{"arguments":[{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":20090,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":20088,"name":"ceiling","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":20084,"src":"17126:7:60","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"<=","rightExpression":{"id":20089,"name":"MAX_VALID_DEBT_CEILING","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":19364,"src":"17137:22:60","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"17126:33:60","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},{"expression":{"id":20091,"name":"Errors","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":18366,"src":"17161:6:60","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_Errors_$18366_$","typeString":"type(library Errors)"}},"id":20092,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberLocation":"17168:20:60","memberName":"INVALID_DEBT_CEILING","nodeType":"MemberAccess","referencedDeclaration":18311,"src":"17161:27:60","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"}],"id":20087,"name":"require","nodeType":"Identifier","overloadedDeclarations":[-18,-18,-18],"referencedDeclaration":-18,"src":"17118:7:60","typeDescriptions":{"typeIdentifier":"t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$","typeString":"function (bool,string memory) pure"}},"id":20093,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"17118:71:60","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":20094,"nodeType":"ExpressionStatement","src":"17118:71:60"},{"expression":{"id":20108,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"expression":{"id":20095,"name":"self","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":20082,"src":"17196:4:60","typeDescriptions":{"typeIdentifier":"t_struct$_ReserveConfigurationMap_$17777_memory_ptr","typeString":"struct DataTypes.ReserveConfigurationMap memory"}},"id":20097,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"memberLocation":"17201:4:60","memberName":"data","nodeType":"MemberAccess","referencedDeclaration":17776,"src":"17196:9:60","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":20107,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"components":[{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":20101,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"expression":{"id":20098,"name":"self","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":20082,"src":"17209:4:60","typeDescriptions":{"typeIdentifier":"t_struct$_ReserveConfigurationMap_$17777_memory_ptr","typeString":"struct DataTypes.ReserveConfigurationMap memory"}},"id":20099,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"17214:4:60","memberName":"data","nodeType":"MemberAccess","referencedDeclaration":17776,"src":"17209:9:60","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"&","rightExpression":{"id":20100,"name":"DEBT_CEILING_MASK","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":19276,"src":"17221:17:60","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"17209:29:60","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"id":20102,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"17208:31:60","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"|","rightExpression":{"components":[{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":20105,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":20103,"name":"ceiling","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":20084,"src":"17243:7:60","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"<<","rightExpression":{"id":20104,"name":"DEBT_CEILING_START_BIT_POSITION","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":19331,"src":"17254:31:60","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"17243:42:60","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"id":20106,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"17242:44:60","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"17208:78:60","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"17196:90:60","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":20109,"nodeType":"ExpressionStatement","src":"17196:90:60"}]},"documentation":{"id":20079,"nodeType":"StructuredDocumentation","src":"16817:178:60","text":" @notice Sets the debt ceiling in isolation mode for the asset\n @param self The reserve configuration\n @param ceiling The maximum debt ceiling for the asset"},"id":20111,"implemented":true,"kind":"function","modifiers":[],"name":"setDebtCeiling","nameLocation":"17007:14:60","nodeType":"FunctionDefinition","parameters":{"id":20085,"nodeType":"ParameterList","parameters":[{"constant":false,"id":20082,"mutability":"mutable","name":"self","nameLocation":"17068:4:60","nodeType":"VariableDeclaration","scope":20111,"src":"17027:45:60","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_struct$_ReserveConfigurationMap_$17777_memory_ptr","typeString":"struct DataTypes.ReserveConfigurationMap"},"typeName":{"id":20081,"nodeType":"UserDefinedTypeName","pathNode":{"id":20080,"name":"DataTypes.ReserveConfigurationMap","nameLocations":["17027:9:60","17037:23:60"],"nodeType":"IdentifierPath","referencedDeclaration":17777,"src":"17027:33:60"},"referencedDeclaration":17777,"src":"17027:33:60","typeDescriptions":{"typeIdentifier":"t_struct$_ReserveConfigurationMap_$17777_storage_ptr","typeString":"struct DataTypes.ReserveConfigurationMap"}},"visibility":"internal"},{"constant":false,"id":20084,"mutability":"mutable","name":"ceiling","nameLocation":"17086:7:60","nodeType":"VariableDeclaration","scope":20111,"src":"17078:15:60","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":20083,"name":"uint256","nodeType":"ElementaryTypeName","src":"17078:7:60","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"17021:76:60"},"returnParameters":{"id":20086,"nodeType":"ParameterList","parameters":[],"src":"17112:0:60"},"scope":20496,"src":"16998:293:60","stateMutability":"pure","virtual":false,"visibility":"internal"},{"body":{"id":20129,"nodeType":"Block","src":"17604:85:60","statements":[{"expression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":20127,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"components":[{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":20124,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"expression":{"id":20120,"name":"self","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":20115,"src":"17618:4:60","typeDescriptions":{"typeIdentifier":"t_struct$_ReserveConfigurationMap_$17777_memory_ptr","typeString":"struct DataTypes.ReserveConfigurationMap memory"}},"id":20121,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"17623:4:60","memberName":"data","nodeType":"MemberAccess","referencedDeclaration":17776,"src":"17618:9:60","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"&","rightExpression":{"id":20123,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"UnaryOperation","operator":"~","prefix":true,"src":"17630:18:60","subExpression":{"id":20122,"name":"DEBT_CEILING_MASK","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":19276,"src":"17631:17:60","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"17618:30:60","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"id":20125,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"17617:32:60","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">>","rightExpression":{"id":20126,"name":"DEBT_CEILING_START_BIT_POSITION","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":19331,"src":"17653:31:60","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"17617:67:60","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"functionReturnParameters":20119,"id":20128,"nodeType":"Return","src":"17610:74:60"}]},"documentation":{"id":20112,"nodeType":"StructuredDocumentation","src":"17295:195:60","text":" @notice Gets the debt ceiling for the asset if the asset is in isolation mode\n @param self The reserve configuration\n @return The debt ceiling (0 = isolation mode disabled)"},"id":20130,"implemented":true,"kind":"function","modifiers":[],"name":"getDebtCeiling","nameLocation":"17502:14:60","nodeType":"FunctionDefinition","parameters":{"id":20116,"nodeType":"ParameterList","parameters":[{"constant":false,"id":20115,"mutability":"mutable","name":"self","nameLocation":"17563:4:60","nodeType":"VariableDeclaration","scope":20130,"src":"17522:45:60","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_struct$_ReserveConfigurationMap_$17777_memory_ptr","typeString":"struct DataTypes.ReserveConfigurationMap"},"typeName":{"id":20114,"nodeType":"UserDefinedTypeName","pathNode":{"id":20113,"name":"DataTypes.ReserveConfigurationMap","nameLocations":["17522:9:60","17532:23:60"],"nodeType":"IdentifierPath","referencedDeclaration":17777,"src":"17522:33:60"},"referencedDeclaration":17777,"src":"17522:33:60","typeDescriptions":{"typeIdentifier":"t_struct$_ReserveConfigurationMap_$17777_storage_ptr","typeString":"struct DataTypes.ReserveConfigurationMap"}},"visibility":"internal"}],"src":"17516:55:60"},"returnParameters":{"id":20119,"nodeType":"ParameterList","parameters":[{"constant":false,"id":20118,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":20130,"src":"17595:7:60","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":20117,"name":"uint256","nodeType":"ElementaryTypeName","src":"17595:7:60","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"17594:9:60"},"scope":20496,"src":"17493:196:60","stateMutability":"pure","virtual":false,"visibility":"internal"},{"body":{"id":20162,"nodeType":"Block","src":"18014:287:60","statements":[{"expression":{"arguments":[{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":20142,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":20140,"name":"liquidationProtocolFee","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":20136,"src":"18035:22:60","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"<=","rightExpression":{"id":20141,"name":"MAX_VALID_LIQUIDATION_PROTOCOL_FEE","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":19355,"src":"18061:34:60","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"18035:60:60","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},{"expression":{"id":20143,"name":"Errors","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":18366,"src":"18103:6:60","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_Errors_$18366_$","typeString":"type(library Errors)"}},"id":20144,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberLocation":"18110:32:60","memberName":"INVALID_LIQUIDATION_PROTOCOL_FEE","nodeType":"MemberAccess","referencedDeclaration":18302,"src":"18103:39:60","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"}],"id":20139,"name":"require","nodeType":"Identifier","overloadedDeclarations":[-18,-18,-18],"referencedDeclaration":-18,"src":"18020:7:60","typeDescriptions":{"typeIdentifier":"t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$","typeString":"function (bool,string memory) pure"}},"id":20145,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"18020:128:60","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":20146,"nodeType":"ExpressionStatement","src":"18020:128:60"},{"expression":{"id":20160,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"expression":{"id":20147,"name":"self","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":20134,"src":"18155:4:60","typeDescriptions":{"typeIdentifier":"t_struct$_ReserveConfigurationMap_$17777_memory_ptr","typeString":"struct DataTypes.ReserveConfigurationMap memory"}},"id":20149,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"memberLocation":"18160:4:60","memberName":"data","nodeType":"MemberAccess","referencedDeclaration":17776,"src":"18155:9:60","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":20159,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"components":[{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":20153,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"expression":{"id":20150,"name":"self","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":20134,"src":"18174:4:60","typeDescriptions":{"typeIdentifier":"t_struct$_ReserveConfigurationMap_$17777_memory_ptr","typeString":"struct DataTypes.ReserveConfigurationMap memory"}},"id":20151,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"18179:4:60","memberName":"data","nodeType":"MemberAccess","referencedDeclaration":17776,"src":"18174:9:60","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"&","rightExpression":{"id":20152,"name":"LIQUIDATION_PROTOCOL_FEE_MASK","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":19267,"src":"18186:29:60","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"18174:41:60","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"id":20154,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"18173:43:60","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"|","rightExpression":{"components":[{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":20157,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":20155,"name":"liquidationProtocolFee","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":20136,"src":"18226:22:60","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"<<","rightExpression":{"id":20156,"name":"LIQUIDATION_PROTOCOL_FEE_START_BIT_POSITION","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":19322,"src":"18252:43:60","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"18226:69:60","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"id":20158,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"18225:71:60","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"18173:123:60","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"18155:141:60","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":20161,"nodeType":"ExpressionStatement","src":"18155:141:60"}]},"documentation":{"id":20131,"nodeType":"StructuredDocumentation","src":"17693:178:60","text":" @notice Sets the liquidation protocol fee of the reserve\n @param self The reserve configuration\n @param liquidationProtocolFee The liquidation protocol fee"},"id":20163,"implemented":true,"kind":"function","modifiers":[],"name":"setLiquidationProtocolFee","nameLocation":"17883:25:60","nodeType":"FunctionDefinition","parameters":{"id":20137,"nodeType":"ParameterList","parameters":[{"constant":false,"id":20134,"mutability":"mutable","name":"self","nameLocation":"17955:4:60","nodeType":"VariableDeclaration","scope":20163,"src":"17914:45:60","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_struct$_ReserveConfigurationMap_$17777_memory_ptr","typeString":"struct DataTypes.ReserveConfigurationMap"},"typeName":{"id":20133,"nodeType":"UserDefinedTypeName","pathNode":{"id":20132,"name":"DataTypes.ReserveConfigurationMap","nameLocations":["17914:9:60","17924:23:60"],"nodeType":"IdentifierPath","referencedDeclaration":17777,"src":"17914:33:60"},"referencedDeclaration":17777,"src":"17914:33:60","typeDescriptions":{"typeIdentifier":"t_struct$_ReserveConfigurationMap_$17777_storage_ptr","typeString":"struct DataTypes.ReserveConfigurationMap"}},"visibility":"internal"},{"constant":false,"id":20136,"mutability":"mutable","name":"liquidationProtocolFee","nameLocation":"17973:22:60","nodeType":"VariableDeclaration","scope":20163,"src":"17965:30:60","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":20135,"name":"uint256","nodeType":"ElementaryTypeName","src":"17965:7:60","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"17908:91:60"},"returnParameters":{"id":20138,"nodeType":"ParameterList","parameters":[],"src":"18014:0:60"},"scope":20496,"src":"17874:427:60","stateMutability":"pure","virtual":false,"visibility":"internal"},{"body":{"id":20181,"nodeType":"Block","src":"18568:115:60","statements":[{"expression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":20179,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"components":[{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":20176,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"expression":{"id":20172,"name":"self","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":20167,"src":"18588:4:60","typeDescriptions":{"typeIdentifier":"t_struct$_ReserveConfigurationMap_$17777_memory_ptr","typeString":"struct DataTypes.ReserveConfigurationMap memory"}},"id":20173,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"18593:4:60","memberName":"data","nodeType":"MemberAccess","referencedDeclaration":17776,"src":"18588:9:60","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"&","rightExpression":{"id":20175,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"UnaryOperation","operator":"~","prefix":true,"src":"18600:30:60","subExpression":{"id":20174,"name":"LIQUIDATION_PROTOCOL_FEE_MASK","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":19267,"src":"18601:29:60","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"18588:42:60","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"id":20177,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"18587:44:60","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">>","rightExpression":{"id":20178,"name":"LIQUIDATION_PROTOCOL_FEE_START_BIT_POSITION","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":19322,"src":"18635:43:60","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"18587:91:60","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"functionReturnParameters":20171,"id":20180,"nodeType":"Return","src":"18574:104:60"}]},"documentation":{"id":20164,"nodeType":"StructuredDocumentation","src":"18305:138:60","text":" @dev Gets the liquidation protocol fee\n @param self The reserve configuration\n @return The liquidation protocol fee"},"id":20182,"implemented":true,"kind":"function","modifiers":[],"name":"getLiquidationProtocolFee","nameLocation":"18455:25:60","nodeType":"FunctionDefinition","parameters":{"id":20168,"nodeType":"ParameterList","parameters":[{"constant":false,"id":20167,"mutability":"mutable","name":"self","nameLocation":"18527:4:60","nodeType":"VariableDeclaration","scope":20182,"src":"18486:45:60","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_struct$_ReserveConfigurationMap_$17777_memory_ptr","typeString":"struct DataTypes.ReserveConfigurationMap"},"typeName":{"id":20166,"nodeType":"UserDefinedTypeName","pathNode":{"id":20165,"name":"DataTypes.ReserveConfigurationMap","nameLocations":["18486:9:60","18496:23:60"],"nodeType":"IdentifierPath","referencedDeclaration":17777,"src":"18486:33:60"},"referencedDeclaration":17777,"src":"18486:33:60","typeDescriptions":{"typeIdentifier":"t_struct$_ReserveConfigurationMap_$17777_storage_ptr","typeString":"struct DataTypes.ReserveConfigurationMap"}},"visibility":"internal"}],"src":"18480:55:60"},"returnParameters":{"id":20171,"nodeType":"ParameterList","parameters":[{"constant":false,"id":20170,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":20182,"src":"18559:7:60","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":20169,"name":"uint256","nodeType":"ElementaryTypeName","src":"18559:7:60","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"18558:9:60"},"scope":20496,"src":"18446:237:60","stateMutability":"pure","virtual":false,"visibility":"internal"},{"body":{"id":20214,"nodeType":"Block","src":"18973:227:60","statements":[{"expression":{"arguments":[{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":20194,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":20192,"name":"unbackedMintCap","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":20188,"src":"18987:15:60","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"<=","rightExpression":{"id":20193,"name":"MAX_VALID_UNBACKED_MINT_CAP","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":19361,"src":"19006:27:60","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"18987:46:60","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},{"expression":{"id":20195,"name":"Errors","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":18366,"src":"19035:6:60","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_Errors_$18366_$","typeString":"type(library Errors)"}},"id":20196,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberLocation":"19042:25:60","memberName":"INVALID_UNBACKED_MINT_CAP","nodeType":"MemberAccess","referencedDeclaration":18308,"src":"19035:32:60","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"}],"id":20191,"name":"require","nodeType":"Identifier","overloadedDeclarations":[-18,-18,-18],"referencedDeclaration":-18,"src":"18979:7:60","typeDescriptions":{"typeIdentifier":"t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$","typeString":"function (bool,string memory) pure"}},"id":20197,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"18979:89:60","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":20198,"nodeType":"ExpressionStatement","src":"18979:89:60"},{"expression":{"id":20212,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"expression":{"id":20199,"name":"self","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":20186,"src":"19075:4:60","typeDescriptions":{"typeIdentifier":"t_struct$_ReserveConfigurationMap_$17777_memory_ptr","typeString":"struct DataTypes.ReserveConfigurationMap memory"}},"id":20201,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"memberLocation":"19080:4:60","memberName":"data","nodeType":"MemberAccess","referencedDeclaration":17776,"src":"19075:9:60","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":20211,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"components":[{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":20205,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"expression":{"id":20202,"name":"self","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":20186,"src":"19094:4:60","typeDescriptions":{"typeIdentifier":"t_struct$_ReserveConfigurationMap_$17777_memory_ptr","typeString":"struct DataTypes.ReserveConfigurationMap memory"}},"id":20203,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"19099:4:60","memberName":"data","nodeType":"MemberAccess","referencedDeclaration":17776,"src":"19094:9:60","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"&","rightExpression":{"id":20204,"name":"UNBACKED_MINT_CAP_MASK","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":19273,"src":"19106:22:60","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"19094:34:60","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"id":20206,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"19093:36:60","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"|","rightExpression":{"components":[{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":20209,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":20207,"name":"unbackedMintCap","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":20188,"src":"19139:15:60","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"<<","rightExpression":{"id":20208,"name":"UNBACKED_MINT_CAP_START_BIT_POSITION","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":19328,"src":"19158:36:60","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"19139:55:60","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"id":20210,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"19138:57:60","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"19093:102:60","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"19075:120:60","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":20213,"nodeType":"ExpressionStatement","src":"19075:120:60"}]},"documentation":{"id":20183,"nodeType":"StructuredDocumentation","src":"18687:157:60","text":" @notice Sets the unbacked mint cap of the reserve\n @param self The reserve configuration\n @param unbackedMintCap The unbacked mint cap"},"id":20215,"implemented":true,"kind":"function","modifiers":[],"name":"setUnbackedMintCap","nameLocation":"18856:18:60","nodeType":"FunctionDefinition","parameters":{"id":20189,"nodeType":"ParameterList","parameters":[{"constant":false,"id":20186,"mutability":"mutable","name":"self","nameLocation":"18921:4:60","nodeType":"VariableDeclaration","scope":20215,"src":"18880:45:60","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_struct$_ReserveConfigurationMap_$17777_memory_ptr","typeString":"struct DataTypes.ReserveConfigurationMap"},"typeName":{"id":20185,"nodeType":"UserDefinedTypeName","pathNode":{"id":20184,"name":"DataTypes.ReserveConfigurationMap","nameLocations":["18880:9:60","18890:23:60"],"nodeType":"IdentifierPath","referencedDeclaration":17777,"src":"18880:33:60"},"referencedDeclaration":17777,"src":"18880:33:60","typeDescriptions":{"typeIdentifier":"t_struct$_ReserveConfigurationMap_$17777_storage_ptr","typeString":"struct DataTypes.ReserveConfigurationMap"}},"visibility":"internal"},{"constant":false,"id":20188,"mutability":"mutable","name":"unbackedMintCap","nameLocation":"18939:15:60","nodeType":"VariableDeclaration","scope":20215,"src":"18931:23:60","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":20187,"name":"uint256","nodeType":"ElementaryTypeName","src":"18931:7:60","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"18874:84:60"},"returnParameters":{"id":20190,"nodeType":"ParameterList","parameters":[],"src":"18973:0:60"},"scope":20496,"src":"18847:353:60","stateMutability":"pure","virtual":false,"visibility":"internal"},{"body":{"id":20233,"nodeType":"Block","src":"19461:95:60","statements":[{"expression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":20231,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"components":[{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":20228,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"expression":{"id":20224,"name":"self","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":20219,"src":"19475:4:60","typeDescriptions":{"typeIdentifier":"t_struct$_ReserveConfigurationMap_$17777_memory_ptr","typeString":"struct DataTypes.ReserveConfigurationMap memory"}},"id":20225,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"19480:4:60","memberName":"data","nodeType":"MemberAccess","referencedDeclaration":17776,"src":"19475:9:60","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"&","rightExpression":{"id":20227,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"UnaryOperation","operator":"~","prefix":true,"src":"19487:23:60","subExpression":{"id":20226,"name":"UNBACKED_MINT_CAP_MASK","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":19273,"src":"19488:22:60","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"19475:35:60","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"id":20229,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"19474:37:60","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">>","rightExpression":{"id":20230,"name":"UNBACKED_MINT_CAP_START_BIT_POSITION","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":19328,"src":"19515:36:60","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"19474:77:60","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"functionReturnParameters":20223,"id":20232,"nodeType":"Return","src":"19467:84:60"}]},"documentation":{"id":20216,"nodeType":"StructuredDocumentation","src":"19204:139:60","text":" @dev Gets the unbacked mint cap of the reserve\n @param self The reserve configuration\n @return The unbacked mint cap"},"id":20234,"implemented":true,"kind":"function","modifiers":[],"name":"getUnbackedMintCap","nameLocation":"19355:18:60","nodeType":"FunctionDefinition","parameters":{"id":20220,"nodeType":"ParameterList","parameters":[{"constant":false,"id":20219,"mutability":"mutable","name":"self","nameLocation":"19420:4:60","nodeType":"VariableDeclaration","scope":20234,"src":"19379:45:60","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_struct$_ReserveConfigurationMap_$17777_memory_ptr","typeString":"struct DataTypes.ReserveConfigurationMap"},"typeName":{"id":20218,"nodeType":"UserDefinedTypeName","pathNode":{"id":20217,"name":"DataTypes.ReserveConfigurationMap","nameLocations":["19379:9:60","19389:23:60"],"nodeType":"IdentifierPath","referencedDeclaration":17777,"src":"19379:33:60"},"referencedDeclaration":17777,"src":"19379:33:60","typeDescriptions":{"typeIdentifier":"t_struct$_ReserveConfigurationMap_$17777_storage_ptr","typeString":"struct DataTypes.ReserveConfigurationMap"}},"visibility":"internal"}],"src":"19373:55:60"},"returnParameters":{"id":20223,"nodeType":"ParameterList","parameters":[{"constant":false,"id":20222,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":20234,"src":"19452:7:60","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":20221,"name":"uint256","nodeType":"ElementaryTypeName","src":"19452:7:60","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"19451:9:60"},"scope":20496,"src":"19346:210:60","stateMutability":"pure","virtual":false,"visibility":"internal"},{"body":{"id":20266,"nodeType":"Block","src":"19847:189:60","statements":[{"expression":{"arguments":[{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":20246,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":20244,"name":"category","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":20240,"src":"19861:8:60","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"<=","rightExpression":{"id":20245,"name":"MAX_VALID_EMODE_CATEGORY","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":19358,"src":"19873:24:60","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"19861:36:60","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},{"expression":{"id":20247,"name":"Errors","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":18366,"src":"19899:6:60","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_Errors_$18366_$","typeString":"type(library Errors)"}},"id":20248,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberLocation":"19906:22:60","memberName":"INVALID_EMODE_CATEGORY","nodeType":"MemberAccess","referencedDeclaration":18305,"src":"19899:29:60","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"}],"id":20243,"name":"require","nodeType":"Identifier","overloadedDeclarations":[-18,-18,-18],"referencedDeclaration":-18,"src":"19853:7:60","typeDescriptions":{"typeIdentifier":"t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$","typeString":"function (bool,string memory) pure"}},"id":20249,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"19853:76:60","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":20250,"nodeType":"ExpressionStatement","src":"19853:76:60"},{"expression":{"id":20264,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"expression":{"id":20251,"name":"self","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":20238,"src":"19936:4:60","typeDescriptions":{"typeIdentifier":"t_struct$_ReserveConfigurationMap_$17777_memory_ptr","typeString":"struct DataTypes.ReserveConfigurationMap memory"}},"id":20253,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"memberLocation":"19941:4:60","memberName":"data","nodeType":"MemberAccess","referencedDeclaration":17776,"src":"19936:9:60","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":20263,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"components":[{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":20257,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"expression":{"id":20254,"name":"self","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":20238,"src":"19949:4:60","typeDescriptions":{"typeIdentifier":"t_struct$_ReserveConfigurationMap_$17777_memory_ptr","typeString":"struct DataTypes.ReserveConfigurationMap memory"}},"id":20255,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"19954:4:60","memberName":"data","nodeType":"MemberAccess","referencedDeclaration":17776,"src":"19949:9:60","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"&","rightExpression":{"id":20256,"name":"EMODE_CATEGORY_MASK","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":19270,"src":"19961:19:60","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"19949:31:60","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"id":20258,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"19948:33:60","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"|","rightExpression":{"components":[{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":20261,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":20259,"name":"category","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":20240,"src":"19985:8:60","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"<<","rightExpression":{"id":20260,"name":"EMODE_CATEGORY_START_BIT_POSITION","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":19325,"src":"19997:33:60","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"19985:45:60","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"id":20262,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"19984:47:60","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"19948:83:60","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"19936:95:60","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":20265,"nodeType":"ExpressionStatement","src":"19936:95:60"}]},"documentation":{"id":20235,"nodeType":"StructuredDocumentation","src":"19560:167:60","text":" @notice Sets the eMode asset category\n @param self The reserve configuration\n @param category The asset category when the user selects the eMode"},"id":20267,"implemented":true,"kind":"function","modifiers":[],"name":"setEModeCategory","nameLocation":"19739:16:60","nodeType":"FunctionDefinition","parameters":{"id":20241,"nodeType":"ParameterList","parameters":[{"constant":false,"id":20238,"mutability":"mutable","name":"self","nameLocation":"19802:4:60","nodeType":"VariableDeclaration","scope":20267,"src":"19761:45:60","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_struct$_ReserveConfigurationMap_$17777_memory_ptr","typeString":"struct DataTypes.ReserveConfigurationMap"},"typeName":{"id":20237,"nodeType":"UserDefinedTypeName","pathNode":{"id":20236,"name":"DataTypes.ReserveConfigurationMap","nameLocations":["19761:9:60","19771:23:60"],"nodeType":"IdentifierPath","referencedDeclaration":17777,"src":"19761:33:60"},"referencedDeclaration":17777,"src":"19761:33:60","typeDescriptions":{"typeIdentifier":"t_struct$_ReserveConfigurationMap_$17777_storage_ptr","typeString":"struct DataTypes.ReserveConfigurationMap"}},"visibility":"internal"},{"constant":false,"id":20240,"mutability":"mutable","name":"category","nameLocation":"19820:8:60","nodeType":"VariableDeclaration","scope":20267,"src":"19812:16:60","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":20239,"name":"uint256","nodeType":"ElementaryTypeName","src":"19812:7:60","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"19755:77:60"},"returnParameters":{"id":20242,"nodeType":"ParameterList","parameters":[],"src":"19847:0:60"},"scope":20496,"src":"19730:306:60","stateMutability":"pure","virtual":false,"visibility":"internal"},{"body":{"id":20285,"nodeType":"Block","src":"20294:89:60","statements":[{"expression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":20283,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"components":[{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":20280,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"expression":{"id":20276,"name":"self","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":20271,"src":"20308:4:60","typeDescriptions":{"typeIdentifier":"t_struct$_ReserveConfigurationMap_$17777_memory_ptr","typeString":"struct DataTypes.ReserveConfigurationMap memory"}},"id":20277,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"20313:4:60","memberName":"data","nodeType":"MemberAccess","referencedDeclaration":17776,"src":"20308:9:60","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"&","rightExpression":{"id":20279,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"UnaryOperation","operator":"~","prefix":true,"src":"20320:20:60","subExpression":{"id":20278,"name":"EMODE_CATEGORY_MASK","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":19270,"src":"20321:19:60","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"20308:32:60","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"id":20281,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"20307:34:60","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">>","rightExpression":{"id":20282,"name":"EMODE_CATEGORY_START_BIT_POSITION","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":19325,"src":"20345:33:60","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"20307:71:60","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"functionReturnParameters":20275,"id":20284,"nodeType":"Return","src":"20300:78:60"}]},"documentation":{"id":20268,"nodeType":"StructuredDocumentation","src":"20040:138:60","text":" @dev Gets the eMode asset category\n @param self The reserve configuration\n @return The eMode category for the asset"},"id":20286,"implemented":true,"kind":"function","modifiers":[],"name":"getEModeCategory","nameLocation":"20190:16:60","nodeType":"FunctionDefinition","parameters":{"id":20272,"nodeType":"ParameterList","parameters":[{"constant":false,"id":20271,"mutability":"mutable","name":"self","nameLocation":"20253:4:60","nodeType":"VariableDeclaration","scope":20286,"src":"20212:45:60","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_struct$_ReserveConfigurationMap_$17777_memory_ptr","typeString":"struct DataTypes.ReserveConfigurationMap"},"typeName":{"id":20270,"nodeType":"UserDefinedTypeName","pathNode":{"id":20269,"name":"DataTypes.ReserveConfigurationMap","nameLocations":["20212:9:60","20222:23:60"],"nodeType":"IdentifierPath","referencedDeclaration":17777,"src":"20212:33:60"},"referencedDeclaration":17777,"src":"20212:33:60","typeDescriptions":{"typeIdentifier":"t_struct$_ReserveConfigurationMap_$17777_storage_ptr","typeString":"struct DataTypes.ReserveConfigurationMap"}},"visibility":"internal"}],"src":"20206:55:60"},"returnParameters":{"id":20275,"nodeType":"ParameterList","parameters":[{"constant":false,"id":20274,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":20286,"src":"20285:7:60","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":20273,"name":"uint256","nodeType":"ElementaryTypeName","src":"20285:7:60","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"20284:9:60"},"scope":20496,"src":"20181:202:60","stateMutability":"pure","virtual":false,"visibility":"internal"},{"body":{"id":20316,"nodeType":"Block","src":"20705:149:60","statements":[{"expression":{"id":20314,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"expression":{"id":20295,"name":"self","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":20290,"src":"20711:4:60","typeDescriptions":{"typeIdentifier":"t_struct$_ReserveConfigurationMap_$17777_memory_ptr","typeString":"struct DataTypes.ReserveConfigurationMap memory"}},"id":20297,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"memberLocation":"20716:4:60","memberName":"data","nodeType":"MemberAccess","referencedDeclaration":17776,"src":"20711:9:60","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":20313,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"components":[{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":20301,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"expression":{"id":20298,"name":"self","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":20290,"src":"20730:4:60","typeDescriptions":{"typeIdentifier":"t_struct$_ReserveConfigurationMap_$17777_memory_ptr","typeString":"struct DataTypes.ReserveConfigurationMap memory"}},"id":20299,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"20735:4:60","memberName":"data","nodeType":"MemberAccess","referencedDeclaration":17776,"src":"20730:9:60","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"&","rightExpression":{"id":20300,"name":"FLASHLOAN_ENABLED_MASK","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":19255,"src":"20742:22:60","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"20730:34:60","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"id":20302,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"20729:36:60","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"|","rightExpression":{"components":[{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":20311,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"arguments":[{"condition":{"id":20305,"name":"flashLoanEnabled","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":20292,"src":"20783:16:60","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"falseExpression":{"hexValue":"30","id":20307,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"20806:1:60","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"id":20308,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"Conditional","src":"20783:24:60","trueExpression":{"hexValue":"31","id":20306,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"20802:1:60","typeDescriptions":{"typeIdentifier":"t_rational_1_by_1","typeString":"int_const 1"},"value":"1"},"typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint8","typeString":"uint8"}],"id":20304,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"20775:7:60","typeDescriptions":{"typeIdentifier":"t_type$_t_uint256_$","typeString":"type(uint256)"},"typeName":{"id":20303,"name":"uint256","nodeType":"ElementaryTypeName","src":"20775:7:60","typeDescriptions":{}}},"id":20309,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"20775:33:60","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"<<","rightExpression":{"id":20310,"name":"FLASHLOAN_ENABLED_START_BIT_POSITION","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":19310,"src":"20812:36:60","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"20775:73:60","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"id":20312,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"20774:75:60","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"20729:120:60","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"20711:138:60","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":20315,"nodeType":"ExpressionStatement","src":"20711:138:60"}]},"documentation":{"id":20287,"nodeType":"StructuredDocumentation","src":"20387:190:60","text":" @notice Sets the flashloanable flag for the reserve\n @param self The reserve configuration\n @param flashLoanEnabled True if the asset is flashloanable, false otherwise"},"id":20317,"implemented":true,"kind":"function","modifiers":[],"name":"setFlashLoanEnabled","nameLocation":"20589:19:60","nodeType":"FunctionDefinition","parameters":{"id":20293,"nodeType":"ParameterList","parameters":[{"constant":false,"id":20290,"mutability":"mutable","name":"self","nameLocation":"20655:4:60","nodeType":"VariableDeclaration","scope":20317,"src":"20614:45:60","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_struct$_ReserveConfigurationMap_$17777_memory_ptr","typeString":"struct DataTypes.ReserveConfigurationMap"},"typeName":{"id":20289,"nodeType":"UserDefinedTypeName","pathNode":{"id":20288,"name":"DataTypes.ReserveConfigurationMap","nameLocations":["20614:9:60","20624:23:60"],"nodeType":"IdentifierPath","referencedDeclaration":17777,"src":"20614:33:60"},"referencedDeclaration":17777,"src":"20614:33:60","typeDescriptions":{"typeIdentifier":"t_struct$_ReserveConfigurationMap_$17777_storage_ptr","typeString":"struct DataTypes.ReserveConfigurationMap"}},"visibility":"internal"},{"constant":false,"id":20292,"mutability":"mutable","name":"flashLoanEnabled","nameLocation":"20670:16:60","nodeType":"VariableDeclaration","scope":20317,"src":"20665:21:60","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":20291,"name":"bool","nodeType":"ElementaryTypeName","src":"20665:4:60","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"}],"src":"20608:82:60"},"returnParameters":{"id":20294,"nodeType":"ParameterList","parameters":[],"src":"20705:0:60"},"scope":20496,"src":"20580:274:60","stateMutability":"pure","virtual":false,"visibility":"internal"},{"body":{"id":20335,"nodeType":"Block","src":"21119:60:60","statements":[{"expression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":20333,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"components":[{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":20330,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"expression":{"id":20326,"name":"self","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":20321,"src":"21133:4:60","typeDescriptions":{"typeIdentifier":"t_struct$_ReserveConfigurationMap_$17777_memory_ptr","typeString":"struct DataTypes.ReserveConfigurationMap memory"}},"id":20327,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"21138:4:60","memberName":"data","nodeType":"MemberAccess","referencedDeclaration":17776,"src":"21133:9:60","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"&","rightExpression":{"id":20329,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"UnaryOperation","operator":"~","prefix":true,"src":"21145:23:60","subExpression":{"id":20328,"name":"FLASHLOAN_ENABLED_MASK","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":19255,"src":"21146:22:60","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"21133:35:60","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"id":20331,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"21132:37:60","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"!=","rightExpression":{"hexValue":"30","id":20332,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"21173:1:60","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"21132:42:60","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"functionReturnParameters":20325,"id":20334,"nodeType":"Return","src":"21125:49:60"}]},"documentation":{"id":20318,"nodeType":"StructuredDocumentation","src":"20858:145:60","text":" @notice Gets the flashloanable flag for the reserve\n @param self The reserve configuration\n @return The flashloanable flag"},"id":20336,"implemented":true,"kind":"function","modifiers":[],"name":"getFlashLoanEnabled","nameLocation":"21015:19:60","nodeType":"FunctionDefinition","parameters":{"id":20322,"nodeType":"ParameterList","parameters":[{"constant":false,"id":20321,"mutability":"mutable","name":"self","nameLocation":"21081:4:60","nodeType":"VariableDeclaration","scope":20336,"src":"21040:45:60","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_struct$_ReserveConfigurationMap_$17777_memory_ptr","typeString":"struct DataTypes.ReserveConfigurationMap"},"typeName":{"id":20320,"nodeType":"UserDefinedTypeName","pathNode":{"id":20319,"name":"DataTypes.ReserveConfigurationMap","nameLocations":["21040:9:60","21050:23:60"],"nodeType":"IdentifierPath","referencedDeclaration":17777,"src":"21040:33:60"},"referencedDeclaration":17777,"src":"21040:33:60","typeDescriptions":{"typeIdentifier":"t_struct$_ReserveConfigurationMap_$17777_storage_ptr","typeString":"struct DataTypes.ReserveConfigurationMap"}},"visibility":"internal"}],"src":"21034:55:60"},"returnParameters":{"id":20325,"nodeType":"ParameterList","parameters":[{"constant":false,"id":20324,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":20336,"src":"21113:4:60","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":20323,"name":"bool","nodeType":"ElementaryTypeName","src":"21113:4:60","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"}],"src":"21112:6:60"},"scope":20496,"src":"21006:173:60","stateMutability":"pure","virtual":false,"visibility":"internal"},{"body":{"id":20395,"nodeType":"Block","src":"21693:268:60","statements":[{"assignments":[20354],"declarations":[{"constant":false,"id":20354,"mutability":"mutable","name":"dataLocal","nameLocation":"21707:9:60","nodeType":"VariableDeclaration","scope":20395,"src":"21699:17:60","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":20353,"name":"uint256","nodeType":"ElementaryTypeName","src":"21699:7:60","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":20357,"initialValue":{"expression":{"id":20355,"name":"self","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":20340,"src":"21719:4:60","typeDescriptions":{"typeIdentifier":"t_struct$_ReserveConfigurationMap_$17777_memory_ptr","typeString":"struct DataTypes.ReserveConfigurationMap memory"}},"id":20356,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"21724:4:60","memberName":"data","nodeType":"MemberAccess","referencedDeclaration":17776,"src":"21719:9:60","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"VariableDeclarationStatement","src":"21699:29:60"},{"expression":{"components":[{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":20364,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"components":[{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":20361,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":20358,"name":"dataLocal","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":20354,"src":"21751:9:60","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"&","rightExpression":{"id":20360,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"UnaryOperation","operator":"~","prefix":true,"src":"21763:12:60","subExpression":{"id":20359,"name":"ACTIVE_MASK","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":19234,"src":"21764:11:60","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"21751:24:60","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"id":20362,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"21750:26:60","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"!=","rightExpression":{"hexValue":"30","id":20363,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"21780:1:60","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"21750:31:60","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":20371,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"components":[{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":20368,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":20365,"name":"dataLocal","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":20354,"src":"21790:9:60","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"&","rightExpression":{"id":20367,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"UnaryOperation","operator":"~","prefix":true,"src":"21802:12:60","subExpression":{"id":20366,"name":"FROZEN_MASK","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":19237,"src":"21803:11:60","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"21790:24:60","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"id":20369,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"21789:26:60","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"!=","rightExpression":{"hexValue":"30","id":20370,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"21819:1:60","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"21789:31:60","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":20378,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"components":[{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":20375,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":20372,"name":"dataLocal","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":20354,"src":"21829:9:60","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"&","rightExpression":{"id":20374,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"UnaryOperation","operator":"~","prefix":true,"src":"21841:15:60","subExpression":{"id":20373,"name":"BORROWING_MASK","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":19240,"src":"21842:14:60","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"21829:27:60","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"id":20376,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"21828:29:60","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"!=","rightExpression":{"hexValue":"30","id":20377,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"21861:1:60","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"21828:34:60","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":20385,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"components":[{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":20382,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":20379,"name":"dataLocal","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":20354,"src":"21871:9:60","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"&","rightExpression":{"id":20381,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"UnaryOperation","operator":"~","prefix":true,"src":"21883:22:60","subExpression":{"id":20380,"name":"STABLE_BORROWING_MASK","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":19243,"src":"21884:21:60","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"21871:34:60","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"id":20383,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"21870:36:60","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"!=","rightExpression":{"hexValue":"30","id":20384,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"21910:1:60","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"21870:41:60","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":20392,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"components":[{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":20389,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":20386,"name":"dataLocal","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":20354,"src":"21920:9:60","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"&","rightExpression":{"id":20388,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"UnaryOperation","operator":"~","prefix":true,"src":"21932:12:60","subExpression":{"id":20387,"name":"PAUSED_MASK","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":19246,"src":"21933:11:60","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"21920:24:60","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"id":20390,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"21919:26:60","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"!=","rightExpression":{"hexValue":"30","id":20391,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"21949:1:60","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"21919:31:60","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}}],"id":20393,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"21742:214:60","typeDescriptions":{"typeIdentifier":"t_tuple$_t_bool_$_t_bool_$_t_bool_$_t_bool_$_t_bool_$","typeString":"tuple(bool,bool,bool,bool,bool)"}},"functionReturnParameters":20352,"id":20394,"nodeType":"Return","src":"21735:221:60"}]},"documentation":{"id":20337,"nodeType":"StructuredDocumentation","src":"21183:381:60","text":" @notice Gets the configuration flags of the reserve\n @param self The reserve configuration\n @return The state flag representing active\n @return The state flag representing frozen\n @return The state flag representing borrowing enabled\n @return The state flag representing stableRateBorrowing enabled\n @return The state flag representing paused"},"id":20396,"implemented":true,"kind":"function","modifiers":[],"name":"getFlags","nameLocation":"21576:8:60","nodeType":"FunctionDefinition","parameters":{"id":20341,"nodeType":"ParameterList","parameters":[{"constant":false,"id":20340,"mutability":"mutable","name":"self","nameLocation":"21631:4:60","nodeType":"VariableDeclaration","scope":20396,"src":"21590:45:60","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_struct$_ReserveConfigurationMap_$17777_memory_ptr","typeString":"struct DataTypes.ReserveConfigurationMap"},"typeName":{"id":20339,"nodeType":"UserDefinedTypeName","pathNode":{"id":20338,"name":"DataTypes.ReserveConfigurationMap","nameLocations":["21590:9:60","21600:23:60"],"nodeType":"IdentifierPath","referencedDeclaration":17777,"src":"21590:33:60"},"referencedDeclaration":17777,"src":"21590:33:60","typeDescriptions":{"typeIdentifier":"t_struct$_ReserveConfigurationMap_$17777_storage_ptr","typeString":"struct DataTypes.ReserveConfigurationMap"}},"visibility":"internal"}],"src":"21584:55:60"},"returnParameters":{"id":20352,"nodeType":"ParameterList","parameters":[{"constant":false,"id":20343,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":20396,"src":"21663:4:60","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":20342,"name":"bool","nodeType":"ElementaryTypeName","src":"21663:4:60","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"},{"constant":false,"id":20345,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":20396,"src":"21669:4:60","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":20344,"name":"bool","nodeType":"ElementaryTypeName","src":"21669:4:60","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"},{"constant":false,"id":20347,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":20396,"src":"21675:4:60","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":20346,"name":"bool","nodeType":"ElementaryTypeName","src":"21675:4:60","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"},{"constant":false,"id":20349,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":20396,"src":"21681:4:60","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":20348,"name":"bool","nodeType":"ElementaryTypeName","src":"21681:4:60","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"},{"constant":false,"id":20351,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":20396,"src":"21687:4:60","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":20350,"name":"bool","nodeType":"ElementaryTypeName","src":"21687:4:60","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"}],"src":"21662:30:60"},"scope":20496,"src":"21567:394:60","stateMutability":"pure","virtual":false,"visibility":"internal"},{"body":{"id":20461,"nodeType":"Block","src":"22589:500:60","statements":[{"assignments":[20416],"declarations":[{"constant":false,"id":20416,"mutability":"mutable","name":"dataLocal","nameLocation":"22603:9:60","nodeType":"VariableDeclaration","scope":20461,"src":"22595:17:60","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":20415,"name":"uint256","nodeType":"ElementaryTypeName","src":"22595:7:60","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":20419,"initialValue":{"expression":{"id":20417,"name":"self","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":20400,"src":"22615:4:60","typeDescriptions":{"typeIdentifier":"t_struct$_ReserveConfigurationMap_$17777_memory_ptr","typeString":"struct DataTypes.ReserveConfigurationMap memory"}},"id":20418,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"22620:4:60","memberName":"data","nodeType":"MemberAccess","referencedDeclaration":17776,"src":"22615:9:60","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"VariableDeclarationStatement","src":"22595:29:60"},{"expression":{"components":[{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":20423,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":20420,"name":"dataLocal","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":20416,"src":"22646:9:60","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"&","rightExpression":{"id":20422,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"UnaryOperation","operator":"~","prefix":true,"src":"22658:9:60","subExpression":{"id":20421,"name":"LTV_MASK","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":19222,"src":"22659:8:60","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"22646:21:60","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":20430,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"components":[{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":20427,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":20424,"name":"dataLocal","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":20416,"src":"22676:9:60","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"&","rightExpression":{"id":20426,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"UnaryOperation","operator":"~","prefix":true,"src":"22688:27:60","subExpression":{"id":20425,"name":"LIQUIDATION_THRESHOLD_MASK","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":19225,"src":"22689:26:60","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"22676:39:60","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"id":20428,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"22675:41:60","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">>","rightExpression":{"id":20429,"name":"LIQUIDATION_THRESHOLD_START_BIT_POSITION","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":19280,"src":"22720:40:60","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"22675:85:60","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":20437,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"components":[{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":20434,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":20431,"name":"dataLocal","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":20416,"src":"22769:9:60","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"&","rightExpression":{"id":20433,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"UnaryOperation","operator":"~","prefix":true,"src":"22781:23:60","subExpression":{"id":20432,"name":"LIQUIDATION_BONUS_MASK","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":19228,"src":"22782:22:60","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"22769:35:60","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"id":20435,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"22768:37:60","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">>","rightExpression":{"id":20436,"name":"LIQUIDATION_BONUS_START_BIT_POSITION","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":19283,"src":"22809:36:60","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"22768:77:60","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":20444,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"components":[{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":20441,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":20438,"name":"dataLocal","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":20416,"src":"22854:9:60","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"&","rightExpression":{"id":20440,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"UnaryOperation","operator":"~","prefix":true,"src":"22866:14:60","subExpression":{"id":20439,"name":"DECIMALS_MASK","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":19231,"src":"22867:13:60","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"22854:26:60","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"id":20442,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"22853:28:60","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">>","rightExpression":{"id":20443,"name":"RESERVE_DECIMALS_START_BIT_POSITION","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":19286,"src":"22885:35:60","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"22853:67:60","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":20451,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"components":[{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":20448,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":20445,"name":"dataLocal","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":20416,"src":"22929:9:60","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"&","rightExpression":{"id":20447,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"UnaryOperation","operator":"~","prefix":true,"src":"22941:20:60","subExpression":{"id":20446,"name":"RESERVE_FACTOR_MASK","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":19258,"src":"22942:19:60","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"22929:32:60","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"id":20449,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"22928:34:60","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">>","rightExpression":{"id":20450,"name":"RESERVE_FACTOR_START_BIT_POSITION","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":19313,"src":"22966:33:60","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"22928:71:60","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":20458,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"components":[{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":20455,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":20452,"name":"dataLocal","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":20416,"src":"23008:9:60","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"&","rightExpression":{"id":20454,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"UnaryOperation","operator":"~","prefix":true,"src":"23020:20:60","subExpression":{"id":20453,"name":"EMODE_CATEGORY_MASK","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":19270,"src":"23021:19:60","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"23008:32:60","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"id":20456,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"23007:34:60","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">>","rightExpression":{"id":20457,"name":"EMODE_CATEGORY_START_BIT_POSITION","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":19325,"src":"23045:33:60","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"23007:71:60","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"id":20459,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"22638:446:60","typeDescriptions":{"typeIdentifier":"t_tuple$_t_uint256_$_t_uint256_$_t_uint256_$_t_uint256_$_t_uint256_$_t_uint256_$","typeString":"tuple(uint256,uint256,uint256,uint256,uint256,uint256)"}},"functionReturnParameters":20414,"id":20460,"nodeType":"Return","src":"22631:453:60"}]},"documentation":{"id":20397,"nodeType":"StructuredDocumentation","src":"21965:470:60","text":" @notice Gets the configuration parameters of the reserve from storage\n @param self The reserve configuration\n @return The state param representing ltv\n @return The state param representing liquidation threshold\n @return The state param representing liquidation bonus\n @return The state param representing reserve decimals\n @return The state param representing reserve factor\n @return The state param representing eMode category"},"id":20462,"implemented":true,"kind":"function","modifiers":[],"name":"getParams","nameLocation":"22447:9:60","nodeType":"FunctionDefinition","parameters":{"id":20401,"nodeType":"ParameterList","parameters":[{"constant":false,"id":20400,"mutability":"mutable","name":"self","nameLocation":"22503:4:60","nodeType":"VariableDeclaration","scope":20462,"src":"22462:45:60","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_struct$_ReserveConfigurationMap_$17777_memory_ptr","typeString":"struct DataTypes.ReserveConfigurationMap"},"typeName":{"id":20399,"nodeType":"UserDefinedTypeName","pathNode":{"id":20398,"name":"DataTypes.ReserveConfigurationMap","nameLocations":["22462:9:60","22472:23:60"],"nodeType":"IdentifierPath","referencedDeclaration":17777,"src":"22462:33:60"},"referencedDeclaration":17777,"src":"22462:33:60","typeDescriptions":{"typeIdentifier":"t_struct$_ReserveConfigurationMap_$17777_storage_ptr","typeString":"struct DataTypes.ReserveConfigurationMap"}},"visibility":"internal"}],"src":"22456:55:60"},"returnParameters":{"id":20414,"nodeType":"ParameterList","parameters":[{"constant":false,"id":20403,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":20462,"src":"22535:7:60","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":20402,"name":"uint256","nodeType":"ElementaryTypeName","src":"22535:7:60","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":20405,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":20462,"src":"22544:7:60","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":20404,"name":"uint256","nodeType":"ElementaryTypeName","src":"22544:7:60","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":20407,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":20462,"src":"22553:7:60","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":20406,"name":"uint256","nodeType":"ElementaryTypeName","src":"22553:7:60","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":20409,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":20462,"src":"22562:7:60","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":20408,"name":"uint256","nodeType":"ElementaryTypeName","src":"22562:7:60","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":20411,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":20462,"src":"22571:7:60","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":20410,"name":"uint256","nodeType":"ElementaryTypeName","src":"22571:7:60","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":20413,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":20462,"src":"22580:7:60","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":20412,"name":"uint256","nodeType":"ElementaryTypeName","src":"22580:7:60","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"22534:54:60"},"scope":20496,"src":"22438:651:60","stateMutability":"pure","virtual":false,"visibility":"internal"},{"body":{"id":20494,"nodeType":"Block","src":"23434:202:60","statements":[{"assignments":[20474],"declarations":[{"constant":false,"id":20474,"mutability":"mutable","name":"dataLocal","nameLocation":"23448:9:60","nodeType":"VariableDeclaration","scope":20494,"src":"23440:17:60","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":20473,"name":"uint256","nodeType":"ElementaryTypeName","src":"23440:7:60","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":20477,"initialValue":{"expression":{"id":20475,"name":"self","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":20466,"src":"23460:4:60","typeDescriptions":{"typeIdentifier":"t_struct$_ReserveConfigurationMap_$17777_memory_ptr","typeString":"struct DataTypes.ReserveConfigurationMap memory"}},"id":20476,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"23465:4:60","memberName":"data","nodeType":"MemberAccess","referencedDeclaration":17776,"src":"23460:9:60","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"VariableDeclarationStatement","src":"23440:29:60"},{"expression":{"components":[{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":20484,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"components":[{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":20481,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":20478,"name":"dataLocal","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":20474,"src":"23492:9:60","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"&","rightExpression":{"id":20480,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"UnaryOperation","operator":"~","prefix":true,"src":"23504:16:60","subExpression":{"id":20479,"name":"BORROW_CAP_MASK","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":19261,"src":"23505:15:60","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"23492:28:60","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"id":20482,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"23491:30:60","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">>","rightExpression":{"id":20483,"name":"BORROW_CAP_START_BIT_POSITION","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":19316,"src":"23525:29:60","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"23491:63:60","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":20491,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"components":[{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":20488,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":20485,"name":"dataLocal","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":20474,"src":"23563:9:60","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"&","rightExpression":{"id":20487,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"UnaryOperation","operator":"~","prefix":true,"src":"23575:16:60","subExpression":{"id":20486,"name":"SUPPLY_CAP_MASK","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":19264,"src":"23576:15:60","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"23563:28:60","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"id":20489,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"23562:30:60","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">>","rightExpression":{"id":20490,"name":"SUPPLY_CAP_START_BIT_POSITION","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":19319,"src":"23596:29:60","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"23562:63:60","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"id":20492,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"23483:148:60","typeDescriptions":{"typeIdentifier":"t_tuple$_t_uint256_$_t_uint256_$","typeString":"tuple(uint256,uint256)"}},"functionReturnParameters":20472,"id":20493,"nodeType":"Return","src":"23476:155:60"}]},"documentation":{"id":20463,"nodeType":"StructuredDocumentation","src":"23093:225:60","text":" @notice Gets the caps parameters of the reserve from storage\n @param self The reserve configuration\n @return The state param representing borrow cap\n @return The state param representing supply cap."},"id":20495,"implemented":true,"kind":"function","modifiers":[],"name":"getCaps","nameLocation":"23330:7:60","nodeType":"FunctionDefinition","parameters":{"id":20467,"nodeType":"ParameterList","parameters":[{"constant":false,"id":20466,"mutability":"mutable","name":"self","nameLocation":"23384:4:60","nodeType":"VariableDeclaration","scope":20495,"src":"23343:45:60","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_struct$_ReserveConfigurationMap_$17777_memory_ptr","typeString":"struct DataTypes.ReserveConfigurationMap"},"typeName":{"id":20465,"nodeType":"UserDefinedTypeName","pathNode":{"id":20464,"name":"DataTypes.ReserveConfigurationMap","nameLocations":["23343:9:60","23353:23:60"],"nodeType":"IdentifierPath","referencedDeclaration":17777,"src":"23343:33:60"},"referencedDeclaration":17777,"src":"23343:33:60","typeDescriptions":{"typeIdentifier":"t_struct$_ReserveConfigurationMap_$17777_storage_ptr","typeString":"struct DataTypes.ReserveConfigurationMap"}},"visibility":"internal"}],"src":"23337:55:60"},"returnParameters":{"id":20472,"nodeType":"ParameterList","parameters":[{"constant":false,"id":20469,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":20495,"src":"23416:7:60","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":20468,"name":"uint256","nodeType":"ElementaryTypeName","src":"23416:7:60","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":20471,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":20495,"src":"23425:7:60","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":20470,"name":"uint256","nodeType":"ElementaryTypeName","src":"23425:7:60","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"23415:18:60"},"scope":20496,"src":"23321:315:60","stateMutability":"pure","virtual":false,"visibility":"internal"}],"scope":20497,"src":"281:23357:60","usedErrors":[],"usedEvents":[]}],"src":"37:23602:60"},"id":60},"contracts/dependencies/chainlink/AggregatorV3Interface.sol":{"ast":{"absolutePath":"contracts/dependencies/chainlink/AggregatorV3Interface.sol","exportedSymbols":{"AggregatorV3Interface":[20542]},"id":20543,"license":"MIT","nodeType":"SourceUnit","nodes":[{"id":20498,"literals":["solidity","^","0.8",".0"],"nodeType":"PragmaDirective","src":"32:23:61"},{"abstract":false,"baseContracts":[],"canonicalName":"AggregatorV3Interface","contractDependencies":[],"contractKind":"interface","fullyImplemented":false,"id":20542,"linearizedBaseContracts":[20542],"name":"AggregatorV3Interface","nameLocation":"120:21:61","nodeType":"ContractDefinition","nodes":[{"functionSelector":"313ce567","id":20503,"implemented":false,"kind":"function","modifiers":[],"name":"decimals","nameLocation":"155:8:61","nodeType":"FunctionDefinition","parameters":{"id":20499,"nodeType":"ParameterList","parameters":[],"src":"163:2:61"},"returnParameters":{"id":20502,"nodeType":"ParameterList","parameters":[{"constant":false,"id":20501,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":20503,"src":"189:5:61","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"},"typeName":{"id":20500,"name":"uint8","nodeType":"ElementaryTypeName","src":"189:5:61","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}},"visibility":"internal"}],"src":"188:7:61"},"scope":20542,"src":"146:50:61","stateMutability":"view","virtual":false,"visibility":"external"},{"functionSelector":"7284e416","id":20508,"implemented":false,"kind":"function","modifiers":[],"name":"description","nameLocation":"209:11:61","nodeType":"FunctionDefinition","parameters":{"id":20504,"nodeType":"ParameterList","parameters":[],"src":"220:2:61"},"returnParameters":{"id":20507,"nodeType":"ParameterList","parameters":[{"constant":false,"id":20506,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":20508,"src":"246:13:61","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string"},"typeName":{"id":20505,"name":"string","nodeType":"ElementaryTypeName","src":"246:6:61","typeDescriptions":{"typeIdentifier":"t_string_storage_ptr","typeString":"string"}},"visibility":"internal"}],"src":"245:15:61"},"scope":20542,"src":"200:61:61","stateMutability":"view","virtual":false,"visibility":"external"},{"functionSelector":"54fd4d50","id":20513,"implemented":false,"kind":"function","modifiers":[],"name":"version","nameLocation":"274:7:61","nodeType":"FunctionDefinition","parameters":{"id":20509,"nodeType":"ParameterList","parameters":[],"src":"281:2:61"},"returnParameters":{"id":20512,"nodeType":"ParameterList","parameters":[{"constant":false,"id":20511,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":20513,"src":"307:7:61","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":20510,"name":"uint256","nodeType":"ElementaryTypeName","src":"307:7:61","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"306:9:61"},"scope":20542,"src":"265:51:61","stateMutability":"view","virtual":false,"visibility":"external"},{"functionSelector":"9a6fc8f5","id":20528,"implemented":false,"kind":"function","modifiers":[],"name":"getRoundData","nameLocation":"329:12:61","nodeType":"FunctionDefinition","parameters":{"id":20516,"nodeType":"ParameterList","parameters":[{"constant":false,"id":20515,"mutability":"mutable","name":"_roundId","nameLocation":"354:8:61","nodeType":"VariableDeclaration","scope":20528,"src":"347:15:61","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint80","typeString":"uint80"},"typeName":{"id":20514,"name":"uint80","nodeType":"ElementaryTypeName","src":"347:6:61","typeDescriptions":{"typeIdentifier":"t_uint80","typeString":"uint80"}},"visibility":"internal"}],"src":"341:25:61"},"returnParameters":{"id":20527,"nodeType":"ParameterList","parameters":[{"constant":false,"id":20518,"mutability":"mutable","name":"roundId","nameLocation":"397:7:61","nodeType":"VariableDeclaration","scope":20528,"src":"390:14:61","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint80","typeString":"uint80"},"typeName":{"id":20517,"name":"uint80","nodeType":"ElementaryTypeName","src":"390:6:61","typeDescriptions":{"typeIdentifier":"t_uint80","typeString":"uint80"}},"visibility":"internal"},{"constant":false,"id":20520,"mutability":"mutable","name":"answer","nameLocation":"413:6:61","nodeType":"VariableDeclaration","scope":20528,"src":"406:13:61","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"},"typeName":{"id":20519,"name":"int256","nodeType":"ElementaryTypeName","src":"406:6:61","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"visibility":"internal"},{"constant":false,"id":20522,"mutability":"mutable","name":"startedAt","nameLocation":"429:9:61","nodeType":"VariableDeclaration","scope":20528,"src":"421:17:61","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":20521,"name":"uint256","nodeType":"ElementaryTypeName","src":"421:7:61","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":20524,"mutability":"mutable","name":"updatedAt","nameLocation":"448:9:61","nodeType":"VariableDeclaration","scope":20528,"src":"440:17:61","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":20523,"name":"uint256","nodeType":"ElementaryTypeName","src":"440:7:61","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":20526,"mutability":"mutable","name":"answeredInRound","nameLocation":"466:15:61","nodeType":"VariableDeclaration","scope":20528,"src":"459:22:61","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint80","typeString":"uint80"},"typeName":{"id":20525,"name":"uint80","nodeType":"ElementaryTypeName","src":"459:6:61","typeDescriptions":{"typeIdentifier":"t_uint80","typeString":"uint80"}},"visibility":"internal"}],"src":"389:93:61"},"scope":20542,"src":"320:163:61","stateMutability":"view","virtual":false,"visibility":"external"},{"functionSelector":"feaf968c","id":20541,"implemented":false,"kind":"function","modifiers":[],"name":"latestRoundData","nameLocation":"496:15:61","nodeType":"FunctionDefinition","parameters":{"id":20529,"nodeType":"ParameterList","parameters":[],"src":"511:2:61"},"returnParameters":{"id":20540,"nodeType":"ParameterList","parameters":[{"constant":false,"id":20531,"mutability":"mutable","name":"roundId","nameLocation":"556:7:61","nodeType":"VariableDeclaration","scope":20541,"src":"549:14:61","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint80","typeString":"uint80"},"typeName":{"id":20530,"name":"uint80","nodeType":"ElementaryTypeName","src":"549:6:61","typeDescriptions":{"typeIdentifier":"t_uint80","typeString":"uint80"}},"visibility":"internal"},{"constant":false,"id":20533,"mutability":"mutable","name":"answer","nameLocation":"572:6:61","nodeType":"VariableDeclaration","scope":20541,"src":"565:13:61","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"},"typeName":{"id":20532,"name":"int256","nodeType":"ElementaryTypeName","src":"565:6:61","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"visibility":"internal"},{"constant":false,"id":20535,"mutability":"mutable","name":"startedAt","nameLocation":"588:9:61","nodeType":"VariableDeclaration","scope":20541,"src":"580:17:61","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":20534,"name":"uint256","nodeType":"ElementaryTypeName","src":"580:7:61","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":20537,"mutability":"mutable","name":"updatedAt","nameLocation":"607:9:61","nodeType":"VariableDeclaration","scope":20541,"src":"599:17:61","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":20536,"name":"uint256","nodeType":"ElementaryTypeName","src":"599:7:61","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":20539,"mutability":"mutable","name":"answeredInRound","nameLocation":"625:15:61","nodeType":"VariableDeclaration","scope":20541,"src":"618:22:61","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint80","typeString":"uint80"},"typeName":{"id":20538,"name":"uint80","nodeType":"ElementaryTypeName","src":"618:6:61","typeDescriptions":{"typeIdentifier":"t_uint80","typeString":"uint80"}},"visibility":"internal"}],"src":"548:93:61"},"scope":20542,"src":"487:155:61","stateMutability":"view","virtual":false,"visibility":"external"}],"scope":20543,"src":"110:534:61","usedErrors":[],"usedEvents":[]}],"src":"32:613:61"},"id":61},"contracts/dependencies/compound-v3/ICometRewards.sol":{"ast":{"absolutePath":"contracts/dependencies/compound-v3/ICometRewards.sol","exportedSymbols":{"ICometRewards":[20581]},"id":20582,"license":"Apache-2.0","nodeType":"SourceUnit","nodes":[{"id":20544,"literals":["solidity","^","0.8",".0"],"nodeType":"PragmaDirective","src":"39:23:62"},{"abstract":false,"baseContracts":[],"canonicalName":"ICometRewards","contractDependencies":[],"contractKind":"interface","documentation":{"id":20545,"nodeType":"StructuredDocumentation","src":"64:169:62","text":" @dev Methods of the CometRewards interface we use\n      Full interface in\n  https://github.com/compound-finance/comet/blob/main/contracts/CometRewards.sol"},"fullyImplemented":false,"id":20581,"linearizedBaseContracts":[20581],"name":"ICometRewards","nameLocation":"244:13:62","nodeType":"ContractDefinition","nodes":[{"canonicalName":"ICometRewards.RewardOwed","id":20550,"members":[{"constant":false,"id":20547,"mutability":"mutable","name":"token","nameLocation":"302:5:62","nodeType":"VariableDeclaration","scope":20550,"src":"294:13:62","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":20546,"name":"address","nodeType":"ElementaryTypeName","src":"294:7:62","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":20549,"mutability":"mutable","name":"owed","nameLocation":"322:4:62","nodeType":"VariableDeclaration","scope":20550,"src":"317:9:62","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":20548,"name":"uint","nodeType":"ElementaryTypeName","src":"317:4:62","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"name":"RewardOwed","nameLocation":"273:10:62","nodeType":"StructDefinition","scope":20581,"src":"266:67:62","visibility":"public"},{"functionSelector":"2289b6b8","id":20561,"implemented":false,"kind":"function","modifiers":[],"name":"rewardConfig","nameLocation":"346:12:62","nodeType":"FunctionDefinition","parameters":{"id":20553,"nodeType":"ParameterList","parameters":[{"constant":false,"id":20552,"mutability":"mutable","name":"cToken","nameLocation":"367:6:62","nodeType":"VariableDeclaration","scope":20561,"src":"359:14:62","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":20551,"name":"address","nodeType":"ElementaryTypeName","src":"359:7:62","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"358:16:62"},"returnParameters":{"id":20560,"nodeType":"ParameterList","parameters":[{"constant":false,"id":20555,"mutability":"mutable","name":"token","nameLocation":"401:5:62","nodeType":"VariableDeclaration","scope":20561,"src":"393:13:62","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":20554,"name":"address","nodeType":"ElementaryTypeName","src":"393:7:62","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":20557,"mutability":"mutable","name":"rescaleFactor","nameLocation":"415:13:62","nodeType":"VariableDeclaration","scope":20561,"src":"408:20:62","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint64","typeString":"uint64"},"typeName":{"id":20556,"name":"uint64","nodeType":"ElementaryTypeName","src":"408:6:62","typeDescriptions":{"typeIdentifier":"t_uint64","typeString":"uint64"}},"visibility":"internal"},{"constant":false,"id":20559,"mutability":"mutable","name":"shouldUpscale","nameLocation":"435:13:62","nodeType":"VariableDeclaration","scope":20561,"src":"430:18:62","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":20558,"name":"bool","nodeType":"ElementaryTypeName","src":"430:4:62","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"}],"src":"392:57:62"},"scope":20581,"src":"337:113:62","stateMutability":"nonpayable","virtual":false,"visibility":"external"},{"functionSelector":"b7034f7e","id":20570,"implemented":false,"kind":"function","modifiers":[],"name":"claim","nameLocation":"463:5:62","nodeType":"FunctionDefinition","parameters":{"id":20568,"nodeType":"ParameterList","parameters":[{"constant":false,"id":20563,"mutability":"mutable","name":"comet","nameLocation":"477:5:62","nodeType":"VariableDeclaration","scope":20570,"src":"469:13:62","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":20562,"name":"address","nodeType":"ElementaryTypeName","src":"469:7:62","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":20565,"mutability":"mutable","name":"src","nameLocation":"492:3:62","nodeType":"VariableDeclaration","scope":20570,"src":"484:11:62","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":20564,"name":"address","nodeType":"ElementaryTypeName","src":"484:7:62","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":20567,"mutability":"mutable","name":"shouldAccrue","nameLocation":"502:12:62","nodeType":"VariableDeclaration","scope":20570,"src":"497:17:62","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":20566,"name":"bool","nodeType":"ElementaryTypeName","src":"497:4:62","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"}],"src":"468:47:62"},"returnParameters":{"id":20569,"nodeType":"ParameterList","parameters":[],"src":"524:0:62"},"scope":20581,"src":"454:71:62","stateMutability":"nonpayable","virtual":false,"visibility":"external"},{"functionSelector":"41e0cad6","id":20580,"implemented":false,"kind":"function","modifiers":[],"name":"getRewardOwed","nameLocation":"538:13:62","nodeType":"FunctionDefinition","parameters":{"id":20575,"nodeType":"ParameterList","parameters":[{"constant":false,"id":20572,"mutability":"mutable","name":"comet","nameLocation":"560:5:62","nodeType":"VariableDeclaration","scope":20580,"src":"552:13:62","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":20571,"name":"address","nodeType":"ElementaryTypeName","src":"552:7:62","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":20574,"mutability":"mutable","name":"account","nameLocation":"575:7:62","nodeType":"VariableDeclaration","scope":20580,"src":"567:15:62","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":20573,"name":"address","nodeType":"ElementaryTypeName","src":"567:7:62","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"551:32:62"},"returnParameters":{"id":20579,"nodeType":"ParameterList","parameters":[{"constant":false,"id":20578,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":20580,"src":"602:17:62","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_struct$_RewardOwed_$20550_memory_ptr","typeString":"struct ICometRewards.RewardOwed"},"typeName":{"id":20577,"nodeType":"UserDefinedTypeName","pathNode":{"id":20576,"name":"RewardOwed","nameLocations":["602:10:62"],"nodeType":"IdentifierPath","referencedDeclaration":20550,"src":"602:10:62"},"referencedDeclaration":20550,"src":"602:10:62","typeDescriptions":{"typeIdentifier":"t_struct$_RewardOwed_$20550_storage_ptr","typeString":"struct ICometRewards.RewardOwed"}},"visibility":"internal"}],"src":"601:19:62"},"scope":20581,"src":"529:92:62","stateMutability":"nonpayable","virtual":false,"visibility":"external"}],"scope":20582,"src":"234:389:62","usedErrors":[],"usedEvents":[]}],"src":"39:585:62"},"id":62},"contracts/dependencies/compound-v3/ICompoundV3.sol":{"ast":{"absolutePath":"contracts/dependencies/compound-v3/ICompoundV3.sol","exportedSymbols":{"ICompoundV3":[20619],"IERC20Metadata":[9411]},"id":20620,"license":"Apache-2.0","nodeType":"SourceUnit","nodes":[{"id":20583,"literals":["solidity","^","0.8",".0"],"nodeType":"PragmaDirective","src":"39:23:63"},{"absolutePath":"@openzeppelin/contracts/token/ERC20/extensions/IERC20Metadata.sol","file":"@openzeppelin/contracts/token/ERC20/extensions/IERC20Metadata.sol","id":20585,"nameLocation":"-1:-1:-1","nodeType":"ImportDirective","scope":20620,"sourceUnit":9412,"src":"64:97:63","symbolAliases":[{"foreign":{"id":20584,"name":"IERC20Metadata","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9411,"src":"72:14:63","typeDescriptions":{}},"nameLocation":"-1:-1:-1"}],"unitAlias":""},{"abstract":false,"baseContracts":[{"baseName":{"id":20587,"name":"IERC20Metadata","nameLocations":["450:14:63"],"nodeType":"IdentifierPath","referencedDeclaration":9411,"src":"450:14:63"},"id":20588,"nodeType":"InheritanceSpecifier","src":"450:14:63"}],"canonicalName":"ICompoundV3","contractDependencies":[],"contractKind":"interface","documentation":{"id":20586,"nodeType":"StructuredDocumentation","src":"163:261:63","text":" @dev Methods of the CompoundV3 interface we use\n      Full interface in\n  https://github.com/compound-finance/comet/blob/main/contracts/CometExtInterface.sol\n  https://github.com/compound-finance/comet/blob/main/contracts/CometMainInterface.sol"},"fullyImplemented":false,"id":20619,"linearizedBaseContracts":[20619,9411,8679],"name":"ICompoundV3","nameLocation":"435:11:63","nodeType":"ContractDefinition","nodes":[{"documentation":{"id":20589,"nodeType":"StructuredDocumentation","src":"469:62:63","text":" @dev Executes the collector and withdrawer task"},"functionSelector":"c55dae63","id":20594,"implemented":false,"kind":"function","modifiers":[],"name":"baseToken","nameLocation":"543:9:63","nodeType":"FunctionDefinition","parameters":{"id":20590,"nodeType":"ParameterList","parameters":[],"src":"552:2:63"},"returnParameters":{"id":20593,"nodeType":"ParameterList","parameters":[{"constant":false,"id":20592,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":20594,"src":"578:7:63","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":20591,"name":"address","nodeType":"ElementaryTypeName","src":"578:7:63","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"577:9:63"},"scope":20619,"src":"534:53:63","stateMutability":"view","virtual":false,"visibility":"external"},{"functionSelector":"0bc47ad1","id":20599,"implemented":false,"kind":"function","modifiers":[],"name":"isSupplyPaused","nameLocation":"600:14:63","nodeType":"FunctionDefinition","parameters":{"id":20595,"nodeType":"ParameterList","parameters":[],"src":"614:2:63"},"returnParameters":{"id":20598,"nodeType":"ParameterList","parameters":[{"constant":false,"id":20597,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":20599,"src":"640:4:63","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":20596,"name":"bool","nodeType":"ElementaryTypeName","src":"640:4:63","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"}],"src":"639:6:63"},"scope":20619,"src":"591:55:63","stateMutability":"view","virtual":false,"visibility":"external"},{"functionSelector":"67800b5f","id":20604,"implemented":false,"kind":"function","modifiers":[],"name":"isWithdrawPaused","nameLocation":"658:16:63","nodeType":"FunctionDefinition","parameters":{"id":20600,"nodeType":"ParameterList","parameters":[],"src":"674:2:63"},"returnParameters":{"id":20603,"nodeType":"ParameterList","parameters":[{"constant":false,"id":20602,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":20604,"src":"700:4:63","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":20601,"name":"bool","nodeType":"ElementaryTypeName","src":"700:4:63","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"}],"src":"699:6:63"},"scope":20619,"src":"649:57:63","stateMutability":"view","virtual":false,"visibility":"external"},{"functionSelector":"f3fef3a3","id":20611,"implemented":false,"kind":"function","modifiers":[],"name":"withdraw","nameLocation":"719:8:63","nodeType":"FunctionDefinition","parameters":{"id":20609,"nodeType":"ParameterList","parameters":[{"constant":false,"id":20606,"mutability":"mutable","name":"asset","nameLocation":"736:5:63","nodeType":"VariableDeclaration","scope":20611,"src":"728:13:63","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":20605,"name":"address","nodeType":"ElementaryTypeName","src":"728:7:63","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":20608,"mutability":"mutable","name":"amount","nameLocation":"751:6:63","nodeType":"VariableDeclaration","scope":20611,"src":"743:14:63","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":20607,"name":"uint256","nodeType":"ElementaryTypeName","src":"743:7:63","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"727:31:63"},"returnParameters":{"id":20610,"nodeType":"ParameterList","parameters":[],"src":"767:0:63"},"scope":20619,"src":"710:58:63","stateMutability":"nonpayable","virtual":false,"visibility":"external"},{"functionSelector":"f2b9fdb8","id":20618,"implemented":false,"kind":"function","modifiers":[],"name":"supply","nameLocation":"780:6:63","nodeType":"FunctionDefinition","parameters":{"id":20616,"nodeType":"ParameterList","parameters":[{"constant":false,"id":20613,"mutability":"mutable","name":"asset","nameLocation":"795:5:63","nodeType":"VariableDeclaration","scope":20618,"src":"787:13:63","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":20612,"name":"address","nodeType":"ElementaryTypeName","src":"787:7:63","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":20615,"mutability":"mutable","name":"amount","nameLocation":"810:6:63","nodeType":"VariableDeclaration","scope":20618,"src":"802:14:63","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":20614,"name":"uint256","nodeType":"ElementaryTypeName","src":"802:7:63","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"786:31:63"},"returnParameters":{"id":20617,"nodeType":"ParameterList","parameters":[],"src":"826:0:63"},"scope":20619,"src":"771:56:63","stateMutability":"nonpayable","virtual":false,"visibility":"external"}],"scope":20620,"src":"425:404:63","usedErrors":[],"usedEvents":[8613,8622]}],"src":"39:791:63"},"id":63},"contracts/hardhat-dependency-compiler/@ensuro/access-managed-proxy/contracts/AccessManagedProxy.sol":{"ast":{"absolutePath":"contracts/hardhat-dependency-compiler/@ensuro/access-managed-proxy/contracts/AccessManagedProxy.sol","exportedSymbols":{"AMPUtils":[240],"AccessManagedProxy":[330],"AccessManagedProxyBase":[443],"IAccessManagedProxy":[488],"IAccessManager":[6842]},"id":20623,"license":"UNLICENSED","nodeType":"SourceUnit","nodes":[{"id":20621,"literals":["solidity",">","0.0",".0"],"nodeType":"PragmaDirective","src":"39:23:64"},{"absolutePath":"@ensuro/access-managed-proxy/contracts/AccessManagedProxy.sol","file":"@ensuro/access-managed-proxy/contracts/AccessManagedProxy.sol","id":20622,"nameLocation":"-1:-1:-1","nodeType":"ImportDirective","scope":20623,"sourceUnit":331,"src":"63:71:64","symbolAliases":[],"unitAlias":""}],"src":"39:96:64"},"id":64},"contracts/hardhat-dependency-compiler/@ensuro/swaplibrary/contracts/mocks/SwapRouterMock.sol":{"ast":{"absolutePath":"contracts/hardhat-dependency-compiler/@ensuro/swaplibrary/contracts/mocks/SwapRouterMock.sol","exportedSymbols":{"IERC20Metadata":[9411],"ISwapRouter":[14879],"ISwapRouterErrors":[2186],"Math":[12726],"SafeCast":[14491],"SafeERC20":[9866],"SwapRouterMock":[2639]},"id":20626,"license":"UNLICENSED","nodeType":"SourceUnit","nodes":[{"id":20624,"literals":["solidity",">","0.0",".0"],"nodeType":"PragmaDirective","src":"39:23:65"},{"absolutePath":"@ensuro/swaplibrary/contracts/mocks/SwapRouterMock.sol","file":"@ensuro/swaplibrary/contracts/mocks/SwapRouterMock.sol","id":20625,"nameLocation":"-1:-1:-1","nodeType":"ImportDirective","scope":20626,"sourceUnit":2640,"src":"63:64:65","symbolAliases":[],"unitAlias":""}],"src":"39:89:65"},"id":65},"contracts/hardhat-dependency-compiler/@ensuro/utils/contracts/TestCurrency.sol":{"ast":{"absolutePath":"contracts/hardhat-dependency-compiler/@ensuro/utils/contracts/TestCurrency.sol","exportedSymbols":{"ERC20":[8601],"TestCurrency":[2709]},"id":20629,"license":"UNLICENSED","nodeType":"SourceUnit","nodes":[{"id":20627,"literals":["solidity",">","0.0",".0"],"nodeType":"PragmaDirective","src":"39:23:66"},{"absolutePath":"@ensuro/utils/contracts/TestCurrency.sol","file":"@ensuro/utils/contracts/TestCurrency.sol","id":20628,"nameLocation":"-1:-1:-1","nodeType":"ImportDirective","scope":20629,"sourceUnit":2710,"src":"63:50:66","symbolAliases":[],"unitAlias":""}],"src":"39:75:66"},"id":66},"contracts/hardhat-dependency-compiler/@ensuro/utils/contracts/TestERC4626.sol":{"ast":{"absolutePath":"contracts/hardhat-dependency-compiler/@ensuro/utils/contracts/TestERC4626.sol","exportedSymbols":{"ERC20":[8601],"ERC4626":[9385],"IERC20Metadata":[9411],"IMintable":[2732],"TestERC4626":[3043]},"id":20632,"license":"UNLICENSED","nodeType":"SourceUnit","nodes":[{"id":20630,"literals":["solidity",">","0.0",".0"],"nodeType":"PragmaDirective","src":"39:23:67"},{"absolutePath":"@ensuro/utils/contracts/TestERC4626.sol","file":"@ensuro/utils/contracts/TestERC4626.sol","id":20631,"nameLocation":"-1:-1:-1","nodeType":"ImportDirective","scope":20632,"sourceUnit":3044,"src":"63:49:67","symbolAliases":[],"unitAlias":""}],"src":"39:74:67"},"id":67},"contracts/hardhat-dependency-compiler/@openzeppelin/contracts/access/manager/AccessManager.sol":{"ast":{"absolutePath":"contracts/hardhat-dependency-compiler/@openzeppelin/contracts/access/manager/AccessManager.sol","exportedSymbols":{"AccessManager":[6372],"Address":[10256],"Context":[10286],"Hashes":[11072],"IAccessManaged":[6412],"IAccessManager":[6842],"Math":[12726],"Multicall":[10856],"Time":[14765]},"id":20635,"license":"UNLICENSED","nodeType":"SourceUnit","nodes":[{"id":20633,"literals":["solidity",">","0.0",".0"],"nodeType":"PragmaDirective","src":"39:23:68"},{"absolutePath":"@openzeppelin/contracts/access/manager/AccessManager.sol","file":"@openzeppelin/contracts/access/manager/AccessManager.sol","id":20634,"nameLocation":"-1:-1:-1","nodeType":"ImportDirective","scope":20635,"sourceUnit":6373,"src":"63:66:68","symbolAliases":[],"unitAlias":""}],"src":"39:91:68"},"id":68},"contracts/hardhat-dependency-compiler/@openzeppelin/contracts/proxy/ERC1967/ERC1967Proxy.sol":{"ast":{"absolutePath":"contracts/hardhat-dependency-compiler/@openzeppelin/contracts/proxy/ERC1967/ERC1967Proxy.sol","exportedSymbols":{"ERC1967Proxy":[7312],"ERC1967Utils":[7606],"Proxy":[7642]},"id":20638,"license":"UNLICENSED","nodeType":"SourceUnit","nodes":[{"id":20636,"literals":["solidity",">","0.0",".0"],"nodeType":"PragmaDirective","src":"39:23:69"},{"absolutePath":"@openzeppelin/contracts/proxy/ERC1967/ERC1967Proxy.sol","file":"@openzeppelin/contracts/proxy/ERC1967/ERC1967Proxy.sol","id":20637,"nameLocation":"-1:-1:-1","nodeType":"ImportDirective","scope":20638,"sourceUnit":7313,"src":"63:64:69","symbolAliases":[],"unitAlias":""}],"src":"39:89:69"},"id":69},"contracts/interfaces/IExposeStorage.sol":{"ast":{"absolutePath":"contracts/interfaces/IExposeStorage.sol","exportedSymbols":{"IExposeStorage":[20649]},"id":20650,"license":"Apache-2.0","nodeType":"SourceUnit","nodes":[{"id":20639,"literals":["solidity","^","0.8",".0"],"nodeType":"PragmaDirective","src":"39:23:70"},{"abstract":false,"baseContracts":[],"canonicalName":"IExposeStorage","contractDependencies":[],"contractKind":"interface","documentation":{"id":20640,"nodeType":"StructuredDocumentation","src":"64:248:70","text":" @title IExposeStorage\n @dev Interface for calling contracts to expose the storage, used by views of the strategies if they need to access\n      the strategy data.\n @custom:security-contact security@ensuro.co\n @author Ensuro"},"fullyImplemented":false,"id":20649,"linearizedBaseContracts":[20649],"name":"IExposeStorage","nameLocation":"323:14:70","nodeType":"ContractDefinition","nodes":[{"documentation":{"id":20641,"nodeType":"StructuredDocumentation","src":"342:255:70","text":" @dev Returns the data stored on a given slot as bytes. The contract can revert if doesn't want to share a\n      specific slot.\n @param slot The slot where the data is stored.\n @return The data in the specified slot as bytes"},"functionSelector":"47e57533","id":20648,"implemented":false,"kind":"function","modifiers":[],"name":"getBytesSlot","nameLocation":"609:12:70","nodeType":"FunctionDefinition","parameters":{"id":20644,"nodeType":"ParameterList","parameters":[{"constant":false,"id":20643,"mutability":"mutable","name":"slot","nameLocation":"630:4:70","nodeType":"VariableDeclaration","scope":20648,"src":"622:12:70","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":20642,"name":"bytes32","nodeType":"ElementaryTypeName","src":"622:7:70","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"}],"src":"621:14:70"},"returnParameters":{"id":20647,"nodeType":"ParameterList","parameters":[{"constant":false,"id":20646,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":20648,"src":"659:12:70","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes"},"typeName":{"id":20645,"name":"bytes","nodeType":"ElementaryTypeName","src":"659:5:70","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"}],"src":"658:14:70"},"scope":20649,"src":"600:73:70","stateMutability":"view","virtual":false,"visibility":"external"}],"scope":20650,"src":"313:362:70","usedErrors":[],"usedEvents":[]}],"src":"39:637:70"},"id":70},"contracts/interfaces/IInvestStrategy.sol":{"ast":{"absolutePath":"contracts/interfaces/IInvestStrategy.sol","exportedSymbols":{"IInvestStrategy":[20725]},"id":20726,"license":"Apache-2.0","nodeType":"SourceUnit","nodes":[{"id":20651,"literals":["solidity","^","0.8",".0"],"nodeType":"PragmaDirective","src":"39:23:71"},{"abstract":false,"baseContracts":[],"canonicalName":"IInvestStrategy","contractDependencies":[],"contractKind":"interface","documentation":{"id":20652,"nodeType":"StructuredDocumentation","src":"64:592:71","text":" @title IInvestStrategy\n @dev Interface that must follow investment strategies to be plugged into ERC4626 vaults. All the non-view methods\n      MUST be called using delegatecall, thus executed in the context of the calling vault.\n      The strategy can use the storage of the calling contract, but ONLY in the storageSlot computed calling\n      {InvestStrategyClient.makeStorageSlot}\n      The calling contract should implement IExposeStorage to give access to the storage to the strategy views\n @custom:security-contact security@ensuro.co\n @author Ensuro"},"fullyImplemented":false,"id":20725,"linearizedBaseContracts":[20725],"name":"IInvestStrategy","nameLocation":"667:15:71","nodeType":"ContractDefinition","nodes":[{"documentation":{"id":20653,"nodeType":"StructuredDocumentation","src":"687:282:71","text":" @dev Called when the strategy is plugged into the vault. Initializes the strategy storage and can do validations\n @param initData Initialization data for the strategy. Must be parsed by the strategy, since the format is\n                 strategy specific"},"functionSelector":"9cd47128","id":20658,"implemented":false,"kind":"function","modifiers":[],"name":"connect","nameLocation":"981:7:71","nodeType":"FunctionDefinition","parameters":{"id":20656,"nodeType":"ParameterList","parameters":[{"constant":false,"id":20655,"mutability":"mutable","name":"initData","nameLocation":"1002:8:71","nodeType":"VariableDeclaration","scope":20658,"src":"989:21:71","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes"},"typeName":{"id":20654,"name":"bytes","nodeType":"ElementaryTypeName","src":"989:5:71","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"}],"src":"988:23:71"},"returnParameters":{"id":20657,"nodeType":"ParameterList","parameters":[],"src":"1020:0:71"},"scope":20725,"src":"972:49:71","stateMutability":"nonpayable","virtual":false,"visibility":"external"},{"documentation":{"id":20659,"nodeType":"StructuredDocumentation","src":"1025:327:71","text":" @dev Called when the strategy is un-plugged from the vault. Should revert if there are still assets in the\n      strategy, unless force==true.\n @param force If true, disconnect should not fail if assets remain in the strategy. Otherwise, disconnect\n              MUST fail if totalAssets() != 0."},"functionSelector":"5a117456","id":20664,"implemented":false,"kind":"function","modifiers":[],"name":"disconnect","nameLocation":"1364:10:71","nodeType":"FunctionDefinition","parameters":{"id":20662,"nodeType":"ParameterList","parameters":[{"constant":false,"id":20661,"mutability":"mutable","name":"force","nameLocation":"1380:5:71","nodeType":"VariableDeclaration","scope":20664,"src":"1375:10:71","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":20660,"name":"bool","nodeType":"ElementaryTypeName","src":"1375:4:71","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"}],"src":"1374:12:71"},"returnParameters":{"id":20663,"nodeType":"ParameterList","parameters":[],"src":"1395:0:71"},"scope":20725,"src":"1355:41:71","stateMutability":"nonpayable","virtual":false,"visibility":"external"},{"documentation":{"id":20665,"nodeType":"StructuredDocumentation","src":"1400:297:71","text":" @dev Deposits a given amount of assets into the strategy. It MUST revert if it can't deposit the specified amount.\n      It assumes the assets are already in the contract (owned by address(this)).\n @param assets The amount of assets to deposit. Should be <= maxDeposit."},"functionSelector":"b6b55f25","id":20670,"implemented":false,"kind":"function","modifiers":[],"name":"deposit","nameLocation":"1709:7:71","nodeType":"FunctionDefinition","parameters":{"id":20668,"nodeType":"ParameterList","parameters":[{"constant":false,"id":20667,"mutability":"mutable","name":"assets","nameLocation":"1725:6:71","nodeType":"VariableDeclaration","scope":20670,"src":"1717:14:71","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":20666,"name":"uint256","nodeType":"ElementaryTypeName","src":"1717:7:71","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"1716:16:71"},"returnParameters":{"id":20669,"nodeType":"ParameterList","parameters":[],"src":"1741:0:71"},"scope":20725,"src":"1700:42:71","stateMutability":"nonpayable","virtual":false,"visibility":"external"},{"documentation":{"id":20671,"nodeType":"StructuredDocumentation","src":"1746:295:71","text":" @dev Withdraws a given amount of assets from the strategy. It MUST revert if it can't withdraw the specified amount.\n      Leaves the withdrawn assets in the contract (owned by address(this)).\n @param assets The amount of assets to withdraw. Should be <= maxWithdraw."},"functionSelector":"2e1a7d4d","id":20676,"implemented":false,"kind":"function","modifiers":[],"name":"withdraw","nameLocation":"2053:8:71","nodeType":"FunctionDefinition","parameters":{"id":20674,"nodeType":"ParameterList","parameters":[{"constant":false,"id":20673,"mutability":"mutable","name":"assets","nameLocation":"2070:6:71","nodeType":"VariableDeclaration","scope":20676,"src":"2062:14:71","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":20672,"name":"uint256","nodeType":"ElementaryTypeName","src":"2062:7:71","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"2061:16:71"},"returnParameters":{"id":20675,"nodeType":"ParameterList","parameters":[],"src":"2086:0:71"},"scope":20725,"src":"2044:43:71","stateMutability":"nonpayable","virtual":false,"visibility":"external"},{"documentation":{"id":20677,"nodeType":"StructuredDocumentation","src":"2091:614:71","text":" @dev Receives an external call to execute a custom method of action in the strategy. Can be used for harvesting\n      rewards or other tasks. It's called with delegatecall from the calling vault. The calling vault SHOULD\n      do the access control validation, since the strategy normally won't do it.\n @param method An id of the method or action to call/execute. It's recommended to define an enum and convert the\n               the uint8 value into the enum.\n @param params Params for the method or action. Parsed by the strategy, it might differ from one or other method."},"functionSelector":"0981b1c2","id":20686,"implemented":false,"kind":"function","modifiers":[],"name":"forwardEntryPoint","nameLocation":"2717:17:71","nodeType":"FunctionDefinition","parameters":{"id":20682,"nodeType":"ParameterList","parameters":[{"constant":false,"id":20679,"mutability":"mutable","name":"method","nameLocation":"2741:6:71","nodeType":"VariableDeclaration","scope":20686,"src":"2735:12:71","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"},"typeName":{"id":20678,"name":"uint8","nodeType":"ElementaryTypeName","src":"2735:5:71","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}},"visibility":"internal"},{"constant":false,"id":20681,"mutability":"mutable","name":"params","nameLocation":"2762:6:71","nodeType":"VariableDeclaration","scope":20686,"src":"2749:19:71","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes"},"typeName":{"id":20680,"name":"bytes","nodeType":"ElementaryTypeName","src":"2749:5:71","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"}],"src":"2734:35:71"},"returnParameters":{"id":20685,"nodeType":"ParameterList","parameters":[{"constant":false,"id":20684,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":20686,"src":"2788:12:71","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes"},"typeName":{"id":20683,"name":"bytes","nodeType":"ElementaryTypeName","src":"2788:5:71","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"}],"src":"2787:14:71"},"scope":20725,"src":"2708:94:71","stateMutability":"nonpayable","virtual":false,"visibility":"external"},{"documentation":{"id":20687,"nodeType":"StructuredDocumentation","src":"3043:277:71","text":" @dev The address of the underlying token used for accounting, depositing, and withdrawing. It must be the same\n      as `IERC4626(contract_).asset()` when dealing with vaults.\n @param contract_ The address of the vault contract that owns the assets."},"functionSelector":"9c4667a2","id":20694,"implemented":false,"kind":"function","modifiers":[],"name":"asset","nameLocation":"3332:5:71","nodeType":"FunctionDefinition","parameters":{"id":20690,"nodeType":"ParameterList","parameters":[{"constant":false,"id":20689,"mutability":"mutable","name":"contract_","nameLocation":"3346:9:71","nodeType":"VariableDeclaration","scope":20694,"src":"3338:17:71","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":20688,"name":"address","nodeType":"ElementaryTypeName","src":"3338:7:71","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"3337:19:71"},"returnParameters":{"id":20693,"nodeType":"ParameterList","parameters":[{"constant":false,"id":20692,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":20694,"src":"3380:7:71","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":20691,"name":"address","nodeType":"ElementaryTypeName","src":"3380:7:71","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"3379:9:71"},"scope":20725,"src":"3323:66:71","stateMutability":"view","virtual":false,"visibility":"external"},{"documentation":{"id":20695,"nodeType":"StructuredDocumentation","src":"3393:230:71","text":" @dev Returns the number of assets under management of the investment strategy for a given contract.\n @param contract_ The address of the vault contract that owns the assets and where the strategy is plugged"},"functionSelector":"f3e0ffbf","id":20702,"implemented":false,"kind":"function","modifiers":[],"name":"totalAssets","nameLocation":"3635:11:71","nodeType":"FunctionDefinition","parameters":{"id":20698,"nodeType":"ParameterList","parameters":[{"constant":false,"id":20697,"mutability":"mutable","name":"contract_","nameLocation":"3655:9:71","nodeType":"VariableDeclaration","scope":20702,"src":"3647:17:71","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":20696,"name":"address","nodeType":"ElementaryTypeName","src":"3647:7:71","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"3646:19:71"},"returnParameters":{"id":20701,"nodeType":"ParameterList","parameters":[{"constant":false,"id":20700,"mutability":"mutable","name":"totalManagedAssets","nameLocation":"3697:18:71","nodeType":"VariableDeclaration","scope":20702,"src":"3689:26:71","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":20699,"name":"uint256","nodeType":"ElementaryTypeName","src":"3689:7:71","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"3688:28:71"},"scope":20725,"src":"3626:91:71","stateMutability":"view","virtual":false,"visibility":"external"},{"documentation":{"id":20703,"nodeType":"StructuredDocumentation","src":"3721:199:71","text":" @dev Returns the max amount that can be deposited into the strategy.\n @param contract_ The address of the vault contract that owns the assets and where the strategy is plugged"},"functionSelector":"402d267d","id":20710,"implemented":false,"kind":"function","modifiers":[],"name":"maxDeposit","nameLocation":"3932:10:71","nodeType":"FunctionDefinition","parameters":{"id":20706,"nodeType":"ParameterList","parameters":[{"constant":false,"id":20705,"mutability":"mutable","name":"contract_","nameLocation":"3951:9:71","nodeType":"VariableDeclaration","scope":20710,"src":"3943:17:71","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":20704,"name":"address","nodeType":"ElementaryTypeName","src":"3943:7:71","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"3942:19:71"},"returnParameters":{"id":20709,"nodeType":"ParameterList","parameters":[{"constant":false,"id":20708,"mutability":"mutable","name":"maxAssets","nameLocation":"3993:9:71","nodeType":"VariableDeclaration","scope":20710,"src":"3985:17:71","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":20707,"name":"uint256","nodeType":"ElementaryTypeName","src":"3985:7:71","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"3984:19:71"},"scope":20725,"src":"3923:81:71","stateMutability":"view","virtual":false,"visibility":"external"},{"documentation":{"id":20711,"nodeType":"StructuredDocumentation","src":"4008:199:71","text":" @dev Returns the max amount that can be withdrawn from the strategy.\n @param contract_ The address of the vault contract that owns the assets and where the strategy is plugged"},"functionSelector":"ce96cb77","id":20718,"implemented":false,"kind":"function","modifiers":[],"name":"maxWithdraw","nameLocation":"4219:11:71","nodeType":"FunctionDefinition","parameters":{"id":20714,"nodeType":"ParameterList","parameters":[{"constant":false,"id":20713,"mutability":"mutable","name":"contract_","nameLocation":"4239:9:71","nodeType":"VariableDeclaration","scope":20718,"src":"4231:17:71","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":20712,"name":"address","nodeType":"ElementaryTypeName","src":"4231:7:71","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"4230:19:71"},"returnParameters":{"id":20717,"nodeType":"ParameterList","parameters":[{"constant":false,"id":20716,"mutability":"mutable","name":"maxAssets","nameLocation":"4281:9:71","nodeType":"VariableDeclaration","scope":20718,"src":"4273:17:71","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":20715,"name":"uint256","nodeType":"ElementaryTypeName","src":"4273:7:71","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"4272:19:71"},"scope":20725,"src":"4210:82:71","stateMutability":"view","virtual":false,"visibility":"external"},{"documentation":{"id":20719,"nodeType":"StructuredDocumentation","src":"4296:177:71","text":" @dev Returns the slot where the data of the strategy can be stored.\n       Typically it would return `InvestStrategyClient.makeStorageSlot(<strategyAddress>)`"},"functionSelector":"5b9a4c35","id":20724,"implemented":false,"kind":"function","modifiers":[],"name":"storageSlot","nameLocation":"4485:11:71","nodeType":"FunctionDefinition","parameters":{"id":20720,"nodeType":"ParameterList","parameters":[],"src":"4496:2:71"},"returnParameters":{"id":20723,"nodeType":"ParameterList","parameters":[{"constant":false,"id":20722,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":20724,"src":"4522:7:71","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":20721,"name":"bytes32","nodeType":"ElementaryTypeName","src":"4522:7:71","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"}],"src":"4521:9:71"},"scope":20725,"src":"4476:55:71","stateMutability":"view","virtual":false,"visibility":"external"}],"scope":20726,"src":"657:3876:71","usedErrors":[],"usedEvents":[]}],"src":"39:4495:71"},"id":71},"contracts/mock/ChainlinkOracleMock.sol":{"ast":{"absolutePath":"contracts/mock/ChainlinkOracleMock.sol","exportedSymbols":{"AggregatorV3Interface":[20542],"ChainlinkOracleMock":[20880]},"id":20881,"license":"Apache-2.0","nodeType":"SourceUnit","nodes":[{"id":20727,"literals":["solidity","^","0.8",".0"],"nodeType":"PragmaDirective","src":"39:23:72"},{"absolutePath":"contracts/dependencies/chainlink/AggregatorV3Interface.sol","file":"../dependencies/chainlink/AggregatorV3Interface.sol","id":20729,"nameLocation":"-1:-1:-1","nodeType":"ImportDirective","scope":20881,"sourceUnit":20543,"src":"64:90:72","symbolAliases":[{"foreign":{"id":20728,"name":"AggregatorV3Interface","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":20542,"src":"72:21:72","typeDescriptions":{}},"nameLocation":"-1:-1:-1"}],"unitAlias":""},{"abstract":false,"baseContracts":[{"baseName":{"id":20730,"name":"AggregatorV3Interface","nameLocations":["188:21:72"],"nodeType":"IdentifierPath","referencedDeclaration":20542,"src":"188:21:72"},"id":20731,"nodeType":"InheritanceSpecifier","src":"188:21:72"}],"canonicalName":"ChainlinkOracleMock","contractDependencies":[],"contractKind":"contract","fullyImplemented":true,"id":20880,"linearizedBaseContracts":[20880,20542],"name":"ChainlinkOracleMock","nameLocation":"165:19:72","nodeType":"ContractDefinition","nodes":[{"baseFunctions":[20503],"constant":false,"functionSelector":"313ce567","id":20733,"mutability":"mutable","name":"decimals","nameLocation":"227:8:72","nodeType":"VariableDeclaration","scope":20880,"src":"214:21:72","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"},"typeName":{"id":20732,"name":"uint8","nodeType":"ElementaryTypeName","src":"214:5:72","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}},"visibility":"public"},{"baseFunctions":[20508],"constant":false,"functionSelector":"7284e416","id":20735,"mutability":"mutable","name":"description","nameLocation":"253:11:72","nodeType":"VariableDeclaration","scope":20880,"src":"239:25:72","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_string_storage","typeString":"string"},"typeName":{"id":20734,"name":"string","nodeType":"ElementaryTypeName","src":"239:6:72","typeDescriptions":{"typeIdentifier":"t_string_storage_ptr","typeString":"string"}},"visibility":"public"},{"baseFunctions":[20513],"constant":false,"functionSelector":"54fd4d50","id":20737,"mutability":"mutable","name":"version","nameLocation":"283:7:72","nodeType":"VariableDeclaration","scope":20880,"src":"268:22:72","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":20736,"name":"uint256","nodeType":"ElementaryTypeName","src":"268:7:72","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"public"},{"canonicalName":"ChainlinkOracleMock.Round","id":20748,"members":[{"constant":false,"id":20739,"mutability":"mutable","name":"roundId","nameLocation":"321:7:72","nodeType":"VariableDeclaration","scope":20748,"src":"314:14:72","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint80","typeString":"uint80"},"typeName":{"id":20738,"name":"uint80","nodeType":"ElementaryTypeName","src":"314:6:72","typeDescriptions":{"typeIdentifier":"t_uint80","typeString":"uint80"}},"visibility":"internal"},{"constant":false,"id":20741,"mutability":"mutable","name":"answer","nameLocation":"341:6:72","nodeType":"VariableDeclaration","scope":20748,"src":"334:13:72","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"},"typeName":{"id":20740,"name":"int256","nodeType":"ElementaryTypeName","src":"334:6:72","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"visibility":"internal"},{"constant":false,"id":20743,"mutability":"mutable","name":"startedAt","nameLocation":"361:9:72","nodeType":"VariableDeclaration","scope":20748,"src":"353:17:72","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":20742,"name":"uint256","nodeType":"ElementaryTypeName","src":"353:7:72","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":20745,"mutability":"mutable","name":"updatedAt","nameLocation":"384:9:72","nodeType":"VariableDeclaration","scope":20748,"src":"376:17:72","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":20744,"name":"uint256","nodeType":"ElementaryTypeName","src":"376:7:72","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":20747,"mutability":"mutable","name":"answeredInRound","nameLocation":"406:15:72","nodeType":"VariableDeclaration","scope":20748,"src":"399:22:72","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint80","typeString":"uint80"},"typeName":{"id":20746,"name":"uint80","nodeType":"ElementaryTypeName","src":"399:6:72","typeDescriptions":{"typeIdentifier":"t_uint80","typeString":"uint80"}},"visibility":"internal"}],"name":"Round","nameLocation":"302:5:72","nodeType":"StructDefinition","scope":20880,"src":"295:131:72","visibility":"public"},{"constant":false,"id":20753,"mutability":"mutable","name":"_rounds","nameLocation":"464:7:72","nodeType":"VariableDeclaration","scope":20880,"src":"430:41:72","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_mapping$_t_uint80_$_t_struct$_Round_$20748_storage_$","typeString":"mapping(uint80 => struct ChainlinkOracleMock.Round)"},"typeName":{"id":20752,"keyName":"","keyNameLocation":"-1:-1:-1","keyType":{"id":20749,"name":"uint80","nodeType":"ElementaryTypeName","src":"438:6:72","typeDescriptions":{"typeIdentifier":"t_uint80","typeString":"uint80"}},"nodeType":"Mapping","src":"430:24:72","typeDescriptions":{"typeIdentifier":"t_mapping$_t_uint80_$_t_struct$_Round_$20748_storage_$","typeString":"mapping(uint80 => struct ChainlinkOracleMock.Round)"},"valueName":"","valueNameLocation":"-1:-1:-1","valueType":{"id":20751,"nodeType":"UserDefinedTypeName","pathNode":{"id":20750,"name":"Round","nameLocations":["448:5:72"],"nodeType":"IdentifierPath","referencedDeclaration":20748,"src":"448:5:72"},"referencedDeclaration":20748,"src":"448:5:72","typeDescriptions":{"typeIdentifier":"t_struct$_Round_$20748_storage_ptr","typeString":"struct ChainlinkOracleMock.Round"}}},"visibility":"internal"},{"constant":false,"functionSelector":"388ca80f","id":20755,"mutability":"mutable","name":"lastRoundId","nameLocation":"489:11:72","nodeType":"VariableDeclaration","scope":20880,"src":"475:25:72","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint80","typeString":"uint80"},"typeName":{"id":20754,"name":"uint80","nodeType":"ElementaryTypeName","src":"475:6:72","typeDescriptions":{"typeIdentifier":"t_uint80","typeString":"uint80"}},"visibility":"public"},{"body":{"id":20776,"nodeType":"Block","src":"580:87:72","statements":[{"expression":{"id":20766,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":20764,"name":"decimals","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":20733,"src":"586:8:72","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"id":20765,"name":"decimals_","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":20757,"src":"597:9:72","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}},"src":"586:20:72","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}},"id":20767,"nodeType":"ExpressionStatement","src":"586:20:72"},{"expression":{"id":20770,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":20768,"name":"description","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":20735,"src":"612:11:72","typeDescriptions":{"typeIdentifier":"t_string_storage","typeString":"string storage ref"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"id":20769,"name":"description_","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":20759,"src":"626:12:72","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"}},"src":"612:26:72","typeDescriptions":{"typeIdentifier":"t_string_storage","typeString":"string storage ref"}},"id":20771,"nodeType":"ExpressionStatement","src":"612:26:72"},{"expression":{"id":20774,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":20772,"name":"version","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":20737,"src":"644:7:72","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"id":20773,"name":"version_","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":20761,"src":"654:8:72","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"644:18:72","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":20775,"nodeType":"ExpressionStatement","src":"644:18:72"}]},"id":20777,"implemented":true,"kind":"constructor","modifiers":[],"name":"","nameLocation":"-1:-1:-1","nodeType":"FunctionDefinition","parameters":{"id":20762,"nodeType":"ParameterList","parameters":[{"constant":false,"id":20757,"mutability":"mutable","name":"decimals_","nameLocation":"523:9:72","nodeType":"VariableDeclaration","scope":20777,"src":"517:15:72","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"},"typeName":{"id":20756,"name":"uint8","nodeType":"ElementaryTypeName","src":"517:5:72","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}},"visibility":"internal"},{"constant":false,"id":20759,"mutability":"mutable","name":"description_","nameLocation":"548:12:72","nodeType":"VariableDeclaration","scope":20777,"src":"534:26:72","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string"},"typeName":{"id":20758,"name":"string","nodeType":"ElementaryTypeName","src":"534:6:72","typeDescriptions":{"typeIdentifier":"t_string_storage_ptr","typeString":"string"}},"visibility":"internal"},{"constant":false,"id":20761,"mutability":"mutable","name":"version_","nameLocation":"570:8:72","nodeType":"VariableDeclaration","scope":20777,"src":"562:16:72","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":20760,"name":"uint256","nodeType":"ElementaryTypeName","src":"562:7:72","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"516:63:72"},"returnParameters":{"id":20763,"nodeType":"ParameterList","parameters":[],"src":"580:0:72"},"scope":20880,"src":"505:162:72","stateMutability":"nonpayable","virtual":false,"visibility":"public"},{"body":{"id":20810,"nodeType":"Block","src":"815:145:72","statements":[{"expression":{"id":20800,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"baseExpression":{"id":20790,"name":"_rounds","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":20753,"src":"821:7:72","typeDescriptions":{"typeIdentifier":"t_mapping$_t_uint80_$_t_struct$_Round_$20748_storage_$","typeString":"mapping(uint80 => struct ChainlinkOracleMock.Round storage ref)"}},"id":20792,"indexExpression":{"id":20791,"name":"roundId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":20779,"src":"829:7:72","typeDescriptions":{"typeIdentifier":"t_uint80","typeString":"uint80"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"nodeType":"IndexAccess","src":"821:16:72","typeDescriptions":{"typeIdentifier":"t_struct$_Round_$20748_storage","typeString":"struct ChainlinkOracleMock.Round storage ref"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"arguments":[{"id":20794,"name":"roundId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":20779,"src":"846:7:72","typeDescriptions":{"typeIdentifier":"t_uint80","typeString":"uint80"}},{"id":20795,"name":"answer","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":20781,"src":"855:6:72","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},{"id":20796,"name":"startedAt","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":20783,"src":"863:9:72","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"id":20797,"name":"updatedAt","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":20785,"src":"874:9:72","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"id":20798,"name":"answeredInRound","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":20787,"src":"885:15:72","typeDescriptions":{"typeIdentifier":"t_uint80","typeString":"uint80"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint80","typeString":"uint80"},{"typeIdentifier":"t_int256","typeString":"int256"},{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_uint80","typeString":"uint80"}],"id":20793,"name":"Round","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":20748,"src":"840:5:72","typeDescriptions":{"typeIdentifier":"t_type$_t_struct$_Round_$20748_storage_ptr_$","typeString":"type(struct ChainlinkOracleMock.Round storage pointer)"}},"id":20799,"isConstant":false,"isLValue":false,"isPure":false,"kind":"structConstructorCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"840:61:72","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_struct$_Round_$20748_memory_ptr","typeString":"struct ChainlinkOracleMock.Round memory"}},"src":"821:80:72","typeDescriptions":{"typeIdentifier":"t_struct$_Round_$20748_storage","typeString":"struct ChainlinkOracleMock.Round storage ref"}},"id":20801,"nodeType":"ExpressionStatement","src":"821:80:72"},{"condition":{"commonType":{"typeIdentifier":"t_uint80","typeString":"uint80"},"id":20804,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":20802,"name":"roundId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":20779,"src":"911:7:72","typeDescriptions":{"typeIdentifier":"t_uint80","typeString":"uint80"}},"nodeType":"BinaryOperation","operator":">","rightExpression":{"id":20803,"name":"lastRoundId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":20755,"src":"921:11:72","typeDescriptions":{"typeIdentifier":"t_uint80","typeString":"uint80"}},"src":"911:21:72","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":20809,"nodeType":"IfStatement","src":"907:48:72","trueBody":{"expression":{"id":20807,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":20805,"name":"lastRoundId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":20755,"src":"934:11:72","typeDescriptions":{"typeIdentifier":"t_uint80","typeString":"uint80"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"id":20806,"name":"roundId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":20779,"src":"948:7:72","typeDescriptions":{"typeIdentifier":"t_uint80","typeString":"uint80"}},"src":"934:21:72","typeDescriptions":{"typeIdentifier":"t_uint80","typeString":"uint80"}},"id":20808,"nodeType":"ExpressionStatement","src":"934:21:72"}}]},"functionSelector":"acfc72a4","id":20811,"implemented":true,"kind":"function","modifiers":[],"name":"addRound","nameLocation":"680:8:72","nodeType":"FunctionDefinition","parameters":{"id":20788,"nodeType":"ParameterList","parameters":[{"constant":false,"id":20779,"mutability":"mutable","name":"roundId","nameLocation":"701:7:72","nodeType":"VariableDeclaration","scope":20811,"src":"694:14:72","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint80","typeString":"uint80"},"typeName":{"id":20778,"name":"uint80","nodeType":"ElementaryTypeName","src":"694:6:72","typeDescriptions":{"typeIdentifier":"t_uint80","typeString":"uint80"}},"visibility":"internal"},{"constant":false,"id":20781,"mutability":"mutable","name":"answer","nameLocation":"721:6:72","nodeType":"VariableDeclaration","scope":20811,"src":"714:13:72","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"},"typeName":{"id":20780,"name":"int256","nodeType":"ElementaryTypeName","src":"714:6:72","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"visibility":"internal"},{"constant":false,"id":20783,"mutability":"mutable","name":"startedAt","nameLocation":"741:9:72","nodeType":"VariableDeclaration","scope":20811,"src":"733:17:72","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":20782,"name":"uint256","nodeType":"ElementaryTypeName","src":"733:7:72","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":20785,"mutability":"mutable","name":"updatedAt","nameLocation":"764:9:72","nodeType":"VariableDeclaration","scope":20811,"src":"756:17:72","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":20784,"name":"uint256","nodeType":"ElementaryTypeName","src":"756:7:72","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":20787,"mutability":"mutable","name":"answeredInRound","nameLocation":"786:15:72","nodeType":"VariableDeclaration","scope":20811,"src":"779:22:72","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint80","typeString":"uint80"},"typeName":{"id":20786,"name":"uint80","nodeType":"ElementaryTypeName","src":"779:6:72","typeDescriptions":{"typeIdentifier":"t_uint80","typeString":"uint80"}},"visibility":"internal"}],"src":"688:117:72"},"returnParameters":{"id":20789,"nodeType":"ParameterList","parameters":[],"src":"815:0:72"},"scope":20880,"src":"671:289:72","stateMutability":"nonpayable","virtual":false,"visibility":"external"},{"baseFunctions":[20528],"body":{"id":20845,"nodeType":"Block","src":"1141:149:72","statements":[{"assignments":[20828],"declarations":[{"constant":false,"id":20828,"mutability":"mutable","name":"round","nameLocation":"1161:5:72","nodeType":"VariableDeclaration","scope":20845,"src":"1147:19:72","stateVariable":false,"storageLocation":"storage","typeDescriptions":{"typeIdentifier":"t_struct$_Round_$20748_storage_ptr","typeString":"struct ChainlinkOracleMock.Round"},"typeName":{"id":20827,"nodeType":"UserDefinedTypeName","pathNode":{"id":20826,"name":"Round","nameLocations":["1147:5:72"],"nodeType":"IdentifierPath","referencedDeclaration":20748,"src":"1147:5:72"},"referencedDeclaration":20748,"src":"1147:5:72","typeDescriptions":{"typeIdentifier":"t_struct$_Round_$20748_storage_ptr","typeString":"struct ChainlinkOracleMock.Round"}},"visibility":"internal"}],"id":20832,"initialValue":{"baseExpression":{"id":20829,"name":"_rounds","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":20753,"src":"1169:7:72","typeDescriptions":{"typeIdentifier":"t_mapping$_t_uint80_$_t_struct$_Round_$20748_storage_$","typeString":"mapping(uint80 => struct ChainlinkOracleMock.Round storage ref)"}},"id":20831,"indexExpression":{"id":20830,"name":"_roundId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":20813,"src":"1177:8:72","typeDescriptions":{"typeIdentifier":"t_uint80","typeString":"uint80"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"1169:17:72","typeDescriptions":{"typeIdentifier":"t_struct$_Round_$20748_storage","typeString":"struct ChainlinkOracleMock.Round storage ref"}},"nodeType":"VariableDeclarationStatement","src":"1147:39:72"},{"expression":{"components":[{"expression":{"id":20833,"name":"round","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":20828,"src":"1200:5:72","typeDescriptions":{"typeIdentifier":"t_struct$_Round_$20748_storage_ptr","typeString":"struct ChainlinkOracleMock.Round storage pointer"}},"id":20834,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"1206:7:72","memberName":"roundId","nodeType":"MemberAccess","referencedDeclaration":20739,"src":"1200:13:72","typeDescriptions":{"typeIdentifier":"t_uint80","typeString":"uint80"}},{"expression":{"id":20835,"name":"round","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":20828,"src":"1215:5:72","typeDescriptions":{"typeIdentifier":"t_struct$_Round_$20748_storage_ptr","typeString":"struct ChainlinkOracleMock.Round storage pointer"}},"id":20836,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"1221:6:72","memberName":"answer","nodeType":"MemberAccess","referencedDeclaration":20741,"src":"1215:12:72","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},{"expression":{"id":20837,"name":"round","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":20828,"src":"1229:5:72","typeDescriptions":{"typeIdentifier":"t_struct$_Round_$20748_storage_ptr","typeString":"struct ChainlinkOracleMock.Round storage pointer"}},"id":20838,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"1235:9:72","memberName":"startedAt","nodeType":"MemberAccess","referencedDeclaration":20743,"src":"1229:15:72","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"expression":{"id":20839,"name":"round","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":20828,"src":"1246:5:72","typeDescriptions":{"typeIdentifier":"t_struct$_Round_$20748_storage_ptr","typeString":"struct ChainlinkOracleMock.Round storage pointer"}},"id":20840,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"1252:9:72","memberName":"updatedAt","nodeType":"MemberAccess","referencedDeclaration":20745,"src":"1246:15:72","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"expression":{"id":20841,"name":"round","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":20828,"src":"1263:5:72","typeDescriptions":{"typeIdentifier":"t_struct$_Round_$20748_storage_ptr","typeString":"struct ChainlinkOracleMock.Round storage pointer"}},"id":20842,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"1269:15:72","memberName":"answeredInRound","nodeType":"MemberAccess","referencedDeclaration":20747,"src":"1263:21:72","typeDescriptions":{"typeIdentifier":"t_uint80","typeString":"uint80"}}],"id":20843,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"1199:86:72","typeDescriptions":{"typeIdentifier":"t_tuple$_t_uint80_$_t_int256_$_t_uint256_$_t_uint256_$_t_uint80_$","typeString":"tuple(uint80,int256,uint256,uint256,uint80)"}},"functionReturnParameters":20825,"id":20844,"nodeType":"Return","src":"1192:93:72"}]},"functionSelector":"9a6fc8f5","id":20846,"implemented":true,"kind":"function","modifiers":[],"name":"getRoundData","nameLocation":"973:12:72","nodeType":"FunctionDefinition","parameters":{"id":20814,"nodeType":"ParameterList","parameters":[{"constant":false,"id":20813,"mutability":"mutable","name":"_roundId","nameLocation":"998:8:72","nodeType":"VariableDeclaration","scope":20846,"src":"991:15:72","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint80","typeString":"uint80"},"typeName":{"id":20812,"name":"uint80","nodeType":"ElementaryTypeName","src":"991:6:72","typeDescriptions":{"typeIdentifier":"t_uint80","typeString":"uint80"}},"visibility":"internal"}],"src":"985:25:72"},"returnParameters":{"id":20825,"nodeType":"ParameterList","parameters":[{"constant":false,"id":20816,"mutability":"mutable","name":"roundId","nameLocation":"1053:7:72","nodeType":"VariableDeclaration","scope":20846,"src":"1046:14:72","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint80","typeString":"uint80"},"typeName":{"id":20815,"name":"uint80","nodeType":"ElementaryTypeName","src":"1046:6:72","typeDescriptions":{"typeIdentifier":"t_uint80","typeString":"uint80"}},"visibility":"internal"},{"constant":false,"id":20818,"mutability":"mutable","name":"answer","nameLocation":"1069:6:72","nodeType":"VariableDeclaration","scope":20846,"src":"1062:13:72","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"},"typeName":{"id":20817,"name":"int256","nodeType":"ElementaryTypeName","src":"1062:6:72","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"visibility":"internal"},{"constant":false,"id":20820,"mutability":"mutable","name":"startedAt","nameLocation":"1085:9:72","nodeType":"VariableDeclaration","scope":20846,"src":"1077:17:72","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":20819,"name":"uint256","nodeType":"ElementaryTypeName","src":"1077:7:72","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":20822,"mutability":"mutable","name":"updatedAt","nameLocation":"1104:9:72","nodeType":"VariableDeclaration","scope":20846,"src":"1096:17:72","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":20821,"name":"uint256","nodeType":"ElementaryTypeName","src":"1096:7:72","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":20824,"mutability":"mutable","name":"answeredInRound","nameLocation":"1122:15:72","nodeType":"VariableDeclaration","scope":20846,"src":"1115:22:72","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint80","typeString":"uint80"},"typeName":{"id":20823,"name":"uint80","nodeType":"ElementaryTypeName","src":"1115:6:72","typeDescriptions":{"typeIdentifier":"t_uint80","typeString":"uint80"}},"visibility":"internal"}],"src":"1045:93:72"},"scope":20880,"src":"964:326:72","stateMutability":"view","virtual":false,"visibility":"external"},{"baseFunctions":[20541],"body":{"id":20878,"nodeType":"Block","src":"1451:152:72","statements":[{"assignments":[20861],"declarations":[{"constant":false,"id":20861,"mutability":"mutable","name":"round","nameLocation":"1471:5:72","nodeType":"VariableDeclaration","scope":20878,"src":"1457:19:72","stateVariable":false,"storageLocation":"storage","typeDescriptions":{"typeIdentifier":"t_struct$_Round_$20748_storage_ptr","typeString":"struct ChainlinkOracleMock.Round"},"typeName":{"id":20860,"nodeType":"UserDefinedTypeName","pathNode":{"id":20859,"name":"Round","nameLocations":["1457:5:72"],"nodeType":"IdentifierPath","referencedDeclaration":20748,"src":"1457:5:72"},"referencedDeclaration":20748,"src":"1457:5:72","typeDescriptions":{"typeIdentifier":"t_struct$_Round_$20748_storage_ptr","typeString":"struct ChainlinkOracleMock.Round"}},"visibility":"internal"}],"id":20865,"initialValue":{"baseExpression":{"id":20862,"name":"_rounds","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":20753,"src":"1479:7:72","typeDescriptions":{"typeIdentifier":"t_mapping$_t_uint80_$_t_struct$_Round_$20748_storage_$","typeString":"mapping(uint80 => struct ChainlinkOracleMock.Round storage ref)"}},"id":20864,"indexExpression":{"id":20863,"name":"lastRoundId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":20755,"src":"1487:11:72","typeDescriptions":{"typeIdentifier":"t_uint80","typeString":"uint80"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"1479:20:72","typeDescriptions":{"typeIdentifier":"t_struct$_Round_$20748_storage","typeString":"struct ChainlinkOracleMock.Round storage ref"}},"nodeType":"VariableDeclarationStatement","src":"1457:42:72"},{"expression":{"components":[{"expression":{"id":20866,"name":"round","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":20861,"src":"1513:5:72","typeDescriptions":{"typeIdentifier":"t_struct$_Round_$20748_storage_ptr","typeString":"struct ChainlinkOracleMock.Round storage pointer"}},"id":20867,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"1519:7:72","memberName":"roundId","nodeType":"MemberAccess","referencedDeclaration":20739,"src":"1513:13:72","typeDescriptions":{"typeIdentifier":"t_uint80","typeString":"uint80"}},{"expression":{"id":20868,"name":"round","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":20861,"src":"1528:5:72","typeDescriptions":{"typeIdentifier":"t_struct$_Round_$20748_storage_ptr","typeString":"struct ChainlinkOracleMock.Round storage pointer"}},"id":20869,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"1534:6:72","memberName":"answer","nodeType":"MemberAccess","referencedDeclaration":20741,"src":"1528:12:72","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},{"expression":{"id":20870,"name":"round","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":20861,"src":"1542:5:72","typeDescriptions":{"typeIdentifier":"t_struct$_Round_$20748_storage_ptr","typeString":"struct ChainlinkOracleMock.Round storage pointer"}},"id":20871,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"1548:9:72","memberName":"startedAt","nodeType":"MemberAccess","referencedDeclaration":20743,"src":"1542:15:72","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"expression":{"id":20872,"name":"round","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":20861,"src":"1559:5:72","typeDescriptions":{"typeIdentifier":"t_struct$_Round_$20748_storage_ptr","typeString":"struct ChainlinkOracleMock.Round storage pointer"}},"id":20873,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"1565:9:72","memberName":"updatedAt","nodeType":"MemberAccess","referencedDeclaration":20745,"src":"1559:15:72","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"expression":{"id":20874,"name":"round","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":20861,"src":"1576:5:72","typeDescriptions":{"typeIdentifier":"t_struct$_Round_$20748_storage_ptr","typeString":"struct ChainlinkOracleMock.Round storage pointer"}},"id":20875,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"1582:15:72","memberName":"answeredInRound","nodeType":"MemberAccess","referencedDeclaration":20747,"src":"1576:21:72","typeDescriptions":{"typeIdentifier":"t_uint80","typeString":"uint80"}}],"id":20876,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"1512:86:72","typeDescriptions":{"typeIdentifier":"t_tuple$_t_uint80_$_t_int256_$_t_uint256_$_t_uint256_$_t_uint80_$","typeString":"tuple(uint80,int256,uint256,uint256,uint80)"}},"functionReturnParameters":20858,"id":20877,"nodeType":"Return","src":"1505:93:72"}]},"functionSelector":"feaf968c","id":20879,"implemented":true,"kind":"function","modifiers":[],"name":"latestRoundData","nameLocation":"1303:15:72","nodeType":"FunctionDefinition","parameters":{"id":20847,"nodeType":"ParameterList","parameters":[],"src":"1318:2:72"},"returnParameters":{"id":20858,"nodeType":"ParameterList","parameters":[{"constant":false,"id":20849,"mutability":"mutable","name":"roundId","nameLocation":"1363:7:72","nodeType":"VariableDeclaration","scope":20879,"src":"1356:14:72","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint80","typeString":"uint80"},"typeName":{"id":20848,"name":"uint80","nodeType":"ElementaryTypeName","src":"1356:6:72","typeDescriptions":{"typeIdentifier":"t_uint80","typeString":"uint80"}},"visibility":"internal"},{"constant":false,"id":20851,"mutability":"mutable","name":"answer","nameLocation":"1379:6:72","nodeType":"VariableDeclaration","scope":20879,"src":"1372:13:72","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"},"typeName":{"id":20850,"name":"int256","nodeType":"ElementaryTypeName","src":"1372:6:72","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"visibility":"internal"},{"constant":false,"id":20853,"mutability":"mutable","name":"startedAt","nameLocation":"1395:9:72","nodeType":"VariableDeclaration","scope":20879,"src":"1387:17:72","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":20852,"name":"uint256","nodeType":"ElementaryTypeName","src":"1387:7:72","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":20855,"mutability":"mutable","name":"updatedAt","nameLocation":"1414:9:72","nodeType":"VariableDeclaration","scope":20879,"src":"1406:17:72","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":20854,"name":"uint256","nodeType":"ElementaryTypeName","src":"1406:7:72","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":20857,"mutability":"mutable","name":"answeredInRound","nameLocation":"1432:15:72","nodeType":"VariableDeclaration","scope":20879,"src":"1425:22:72","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint80","typeString":"uint80"},"typeName":{"id":20856,"name":"uint80","nodeType":"ElementaryTypeName","src":"1425:6:72","typeDescriptions":{"typeIdentifier":"t_uint80","typeString":"uint80"}},"visibility":"internal"}],"src":"1355:93:72"},"scope":20880,"src":"1294:309:72","stateMutability":"view","virtual":false,"visibility":"external"}],"scope":20881,"src":"156:1449:72","usedErrors":[],"usedEvents":[]}],"src":"39:1567:72"},"id":72},"contracts/mock/DummyInvestStrategy.sol":{"ast":{"absolutePath":"contracts/mock/DummyInvestStrategy.sol","exportedSymbols":{"DummyInvestStrategy":[21291],"IERC20":[8679],"IERC4626":[7127],"IExposeStorage":[20649],"IInvestStrategy":[20725],"InvestStrategyClient":[15693],"OtherAddress":[20913],"StorageSlot":[11032]},"id":21292,"license":"Apache-2.0","nodeType":"SourceUnit","nodes":[{"id":20882,"literals":["solidity","^","0.8",".0"],"nodeType":"PragmaDirective","src":"39:23:73"},{"absolutePath":"@openzeppelin/contracts/interfaces/IERC20.sol","file":"@openzeppelin/contracts/interfaces/IERC20.sol","id":20884,"nameLocation":"-1:-1:-1","nodeType":"ImportDirective","scope":21292,"sourceUnit":6954,"src":"64:69:73","symbolAliases":[{"foreign":{"id":20883,"name":"IERC20","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8679,"src":"72:6:73","typeDescriptions":{}},"nameLocation":"-1:-1:-1"}],"unitAlias":""},{"absolutePath":"@openzeppelin/contracts/interfaces/IERC4626.sol","file":"@openzeppelin/contracts/interfaces/IERC4626.sol","id":20886,"nameLocation":"-1:-1:-1","nodeType":"ImportDirective","scope":21292,"sourceUnit":7128,"src":"134:73:73","symbolAliases":[{"foreign":{"id":20885,"name":"IERC4626","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7127,"src":"142:8:73","typeDescriptions":{}},"nameLocation":"-1:-1:-1"}],"unitAlias":""},{"absolutePath":"@openzeppelin/contracts/utils/StorageSlot.sol","file":"@openzeppelin/contracts/utils/StorageSlot.sol","id":20888,"nameLocation":"-1:-1:-1","nodeType":"ImportDirective","scope":21292,"sourceUnit":11033,"src":"208:74:73","symbolAliases":[{"foreign":{"id":20887,"name":"StorageSlot","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":11032,"src":"216:11:73","typeDescriptions":{}},"nameLocation":"-1:-1:-1"}],"unitAlias":""},{"absolutePath":"contracts/interfaces/IInvestStrategy.sol","file":"../interfaces/IInvestStrategy.sol","id":20890,"nameLocation":"-1:-1:-1","nodeType":"ImportDirective","scope":21292,"sourceUnit":20726,"src":"283:66:73","symbolAliases":[{"foreign":{"id":20889,"name":"IInvestStrategy","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":20725,"src":"291:15:73","typeDescriptions":{}},"nameLocation":"-1:-1:-1"}],"unitAlias":""},{"absolutePath":"contracts/interfaces/IExposeStorage.sol","file":"../interfaces/IExposeStorage.sol","id":20892,"nameLocation":"-1:-1:-1","nodeType":"ImportDirective","scope":21292,"sourceUnit":20650,"src":"350:64:73","symbolAliases":[{"foreign":{"id":20891,"name":"IExposeStorage","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":20649,"src":"358:14:73","typeDescriptions":{}},"nameLocation":"-1:-1:-1"}],"unitAlias":""},{"absolutePath":"contracts/InvestStrategyClient.sol","file":"../InvestStrategyClient.sol","id":20894,"nameLocation":"-1:-1:-1","nodeType":"ImportDirective","scope":21292,"sourceUnit":15694,"src":"415:65:73","symbolAliases":[{"foreign":{"id":20893,"name":"InvestStrategyClient","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":15693,"src":"423:20:73","typeDescriptions":{}},"nameLocation":"-1:-1:-1"}],"unitAlias":""},{"abstract":false,"baseContracts":[],"canonicalName":"OtherAddress","contractDependencies":[],"contractKind":"contract","fullyImplemented":true,"id":20913,"linearizedBaseContracts":[20913],"name":"OtherAddress","nameLocation":"491:12:73","nodeType":"ContractDefinition","nodes":[{"body":{"id":20911,"nodeType":"Block","src":"580:38:73","statements":[{"expression":{"arguments":[{"id":20907,"name":"to","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":20899,"src":"602:2:73","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":20908,"name":"amount","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":20901,"src":"606:6:73","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"expression":{"id":20904,"name":"asset_","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":20897,"src":"586:6:73","typeDescriptions":{"typeIdentifier":"t_contract$_IERC20_$8679","typeString":"contract IERC20"}},"id":20906,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"593:8:73","memberName":"transfer","nodeType":"MemberAccess","referencedDeclaration":8646,"src":"586:15:73","typeDescriptions":{"typeIdentifier":"t_function_external_nonpayable$_t_address_$_t_uint256_$returns$_t_bool_$","typeString":"function (address,uint256) external returns (bool)"}},"id":20909,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"586:27:73","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":20910,"nodeType":"ExpressionStatement","src":"586:27:73"}]},"functionSelector":"a5f2a152","id":20912,"implemented":true,"kind":"function","modifiers":[],"name":"transferTo","nameLocation":"517:10:73","nodeType":"FunctionDefinition","parameters":{"id":20902,"nodeType":"ParameterList","parameters":[{"constant":false,"id":20897,"mutability":"mutable","name":"asset_","nameLocation":"535:6:73","nodeType":"VariableDeclaration","scope":20912,"src":"528:13:73","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_contract$_IERC20_$8679","typeString":"contract IERC20"},"typeName":{"id":20896,"nodeType":"UserDefinedTypeName","pathNode":{"id":20895,"name":"IERC20","nameLocations":["528:6:73"],"nodeType":"IdentifierPath","referencedDeclaration":8679,"src":"528:6:73"},"referencedDeclaration":8679,"src":"528:6:73","typeDescriptions":{"typeIdentifier":"t_contract$_IERC20_$8679","typeString":"contract IERC20"}},"visibility":"internal"},{"constant":false,"id":20899,"mutability":"mutable","name":"to","nameLocation":"551:2:73","nodeType":"VariableDeclaration","scope":20912,"src":"543:10:73","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":20898,"name":"address","nodeType":"ElementaryTypeName","src":"543:7:73","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":20901,"mutability":"mutable","name":"amount","nameLocation":"563:6:73","nodeType":"VariableDeclaration","scope":20912,"src":"555:14:73","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":20900,"name":"uint256","nodeType":"ElementaryTypeName","src":"555:7:73","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"527:43:73"},"returnParameters":{"id":20903,"nodeType":"ParameterList","parameters":[],"src":"580:0:73"},"scope":20913,"src":"508:110:73","stateMutability":"nonpayable","virtual":false,"visibility":"external"}],"scope":21292,"src":"482:138:73","usedErrors":[],"usedEvents":[]},{"abstract":false,"baseContracts":[{"baseName":{"id":20914,"name":"IInvestStrategy","nameLocations":["654:15:73"],"nodeType":"IdentifierPath","referencedDeclaration":20725,"src":"654:15:73"},"id":20915,"nodeType":"InheritanceSpecifier","src":"654:15:73"}],"canonicalName":"DummyInvestStrategy","contractDependencies":[20913],"contractKind":"contract","fullyImplemented":true,"id":21291,"linearizedBaseContracts":[21291,20725],"name":"DummyInvestStrategy","nameLocation":"631:19:73","nodeType":"ContractDefinition","nodes":[{"constant":false,"id":20918,"mutability":"immutable","name":"_asset","nameLocation":"700:6:73","nodeType":"VariableDeclaration","scope":21291,"src":"674:32:73","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_contract$_IERC20_$8679","typeString":"contract IERC20"},"typeName":{"id":20917,"nodeType":"UserDefinedTypeName","pathNode":{"id":20916,"name":"IERC20","nameLocations":["674:6:73"],"nodeType":"IdentifierPath","referencedDeclaration":8679,"src":"674:6:73"},"referencedDeclaration":8679,"src":"674:6:73","typeDescriptions":{"typeIdentifier":"t_contract$_IERC20_$8679","typeString":"contract IERC20"}},"visibility":"internal"},{"constant":false,"id":20924,"mutability":"immutable","name":"__self","nameLocation":"736:6:73","nodeType":"VariableDeclaration","scope":21291,"src":"710:48:73","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":20919,"name":"address","nodeType":"ElementaryTypeName","src":"710:7:73","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"value":{"arguments":[{"id":20922,"name":"this","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-28,"src":"753:4:73","typeDescriptions":{"typeIdentifier":"t_contract$_DummyInvestStrategy_$21291","typeString":"contract DummyInvestStrategy"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_contract$_DummyInvestStrategy_$21291","typeString":"contract DummyInvestStrategy"}],"id":20921,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"745:7:73","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":20920,"name":"address","nodeType":"ElementaryTypeName","src":"745:7:73","typeDescriptions":{}}},"id":20923,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"745:13:73","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"private"},{"baseFunctions":[20724],"constant":false,"functionSelector":"5b9a4c35","id":20930,"mutability":"immutable","name":"storageSlot","nameLocation":"787:11:73","nodeType":"VariableDeclaration","scope":21291,"src":"762:81:73","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":20925,"name":"bytes32","nodeType":"ElementaryTypeName","src":"762:7:73","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"value":{"arguments":[{"id":20928,"name":"this","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-28,"src":"838:4:73","typeDescriptions":{"typeIdentifier":"t_contract$_DummyInvestStrategy_$21291","typeString":"contract DummyInvestStrategy"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_contract$_DummyInvestStrategy_$21291","typeString":"contract DummyInvestStrategy"}],"expression":{"id":20926,"name":"InvestStrategyClient","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":15693,"src":"801:20:73","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_InvestStrategyClient_$15693_$","typeString":"type(library InvestStrategyClient)"}},"id":20927,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"822:15:73","memberName":"makeStorageSlot","nodeType":"MemberAccess","referencedDeclaration":15638,"src":"801:36:73","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_contract$_IInvestStrategy_$20725_$returns$_t_bytes32_$","typeString":"function (contract IInvestStrategy) pure returns (bytes32)"}},"id":20929,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"801:42:73","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"public"},{"constant":false,"functionSelector":"85295877","id":20932,"mutability":"immutable","name":"other","nameLocation":"872:5:73","nodeType":"VariableDeclaration","scope":21291,"src":"847:30:73","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":20931,"name":"address","nodeType":"ElementaryTypeName","src":"847:7:73","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"public"},{"errorSelector":"f11f7f0c","id":20936,"name":"Fail","nameLocation":"888:4:73","nodeType":"ErrorDefinition","parameters":{"id":20935,"nodeType":"ParameterList","parameters":[{"constant":false,"id":20934,"mutability":"mutable","name":"where","nameLocation":"900:5:73","nodeType":"VariableDeclaration","scope":20936,"src":"893:12:73","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string"},"typeName":{"id":20933,"name":"string","nodeType":"ElementaryTypeName","src":"893:6:73","typeDescriptions":{"typeIdentifier":"t_string_storage_ptr","typeString":"string"}},"visibility":"internal"}],"src":"892:14:73"},"src":"882:25:73"},{"errorSelector":"50701b61","id":20938,"name":"NoExtraDataAllowed","nameLocation":"916:18:73","nodeType":"ErrorDefinition","parameters":{"id":20937,"nodeType":"ParameterList","parameters":[],"src":"934:2:73"},"src":"910:27:73"},{"canonicalName":"DummyInvestStrategy.ForwardMethods","id":20940,"members":[{"id":20939,"name":"setFail","nameLocation":"967:7:73","nodeType":"EnumValue","src":"967:7:73"}],"name":"ForwardMethods","nameLocation":"946:14:73","nodeType":"EnumDefinition","src":"941:37:73"},{"canonicalName":"DummyInvestStrategy.DummyStorage","id":20949,"members":[{"constant":false,"id":20942,"mutability":"mutable","name":"failConnect","nameLocation":"1013:11:73","nodeType":"VariableDeclaration","scope":20949,"src":"1008:16:73","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":20941,"name":"bool","nodeType":"ElementaryTypeName","src":"1008:4:73","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"},{"constant":false,"id":20944,"mutability":"mutable","name":"failDisconnect","nameLocation":"1035:14:73","nodeType":"VariableDeclaration","scope":20949,"src":"1030:19:73","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":20943,"name":"bool","nodeType":"ElementaryTypeName","src":"1030:4:73","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"},{"constant":false,"id":20946,"mutability":"mutable","name":"failDeposit","nameLocation":"1060:11:73","nodeType":"VariableDeclaration","scope":20949,"src":"1055:16:73","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":20945,"name":"bool","nodeType":"ElementaryTypeName","src":"1055:4:73","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"},{"constant":false,"id":20948,"mutability":"mutable","name":"failWithdraw","nameLocation":"1082:12:73","nodeType":"VariableDeclaration","scope":20949,"src":"1077:17:73","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":20947,"name":"bool","nodeType":"ElementaryTypeName","src":"1077:4:73","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"}],"name":"DummyStorage","nameLocation":"989:12:73","nodeType":"StructDefinition","scope":21291,"src":"982:117:73","visibility":"public"},{"anonymous":false,"eventSelector":"4d6ce1e535dbade1c23defba91e23b8f791ce5edc0cc320257a2b364e4e38426","id":20953,"name":"Deposit","nameLocation":"1109:7:73","nodeType":"EventDefinition","parameters":{"id":20952,"nodeType":"ParameterList","parameters":[{"constant":false,"id":20951,"indexed":false,"mutability":"mutable","name":"assets","nameLocation":"1125:6:73","nodeType":"VariableDeclaration","scope":20953,"src":"1117:14:73","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":20950,"name":"uint256","nodeType":"ElementaryTypeName","src":"1117:7:73","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"1116:16:73"},"src":"1103:30:73"},{"anonymous":false,"eventSelector":"5b6b431d4476a211bb7d41c20d1aab9ae2321deee0d20be3d9fc9b1093fa6e3d","id":20957,"name":"Withdraw","nameLocation":"1142:8:73","nodeType":"EventDefinition","parameters":{"id":20956,"nodeType":"ParameterList","parameters":[{"constant":false,"id":20955,"indexed":false,"mutability":"mutable","name":"assets","nameLocation":"1159:6:73","nodeType":"VariableDeclaration","scope":20957,"src":"1151:14:73","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":20954,"name":"uint256","nodeType":"ElementaryTypeName","src":"1151:7:73","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"1150:16:73"},"src":"1136:31:73"},{"anonymous":false,"eventSelector":"1b5482bdd0870e5877dfba574a78890a9ed35fa5fe455e49d0ee06d40014d15e","id":20961,"name":"Disconnect","nameLocation":"1176:10:73","nodeType":"EventDefinition","parameters":{"id":20960,"nodeType":"ParameterList","parameters":[{"constant":false,"id":20959,"indexed":false,"mutability":"mutable","name":"force","nameLocation":"1192:5:73","nodeType":"VariableDeclaration","scope":20961,"src":"1187:10:73","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":20958,"name":"bool","nodeType":"ElementaryTypeName","src":"1187:4:73","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"}],"src":"1186:12:73"},"src":"1170:29:73"},{"anonymous":false,"eventSelector":"71149fec4141134c52c251b737df39ca5dd7286b51b86a0b68b2dd900243c0ce","id":20965,"name":"Connect","nameLocation":"1208:7:73","nodeType":"EventDefinition","parameters":{"id":20964,"nodeType":"ParameterList","parameters":[{"constant":false,"id":20963,"indexed":false,"mutability":"mutable","name":"initData","nameLocation":"1222:8:73","nodeType":"VariableDeclaration","scope":20965,"src":"1216:14:73","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes"},"typeName":{"id":20962,"name":"bytes","nodeType":"ElementaryTypeName","src":"1216:5:73","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"}],"src":"1215:16:73"},"src":"1202:30:73"},{"anonymous":false,"eventSelector":"973e473eebb9c0190db312a86661d30a6e022561e4049e3850ddc7e5d24ba9d1","id":20970,"name":"SetFail","nameLocation":"1241:7:73","nodeType":"EventDefinition","parameters":{"id":20969,"nodeType":"ParameterList","parameters":[{"constant":false,"id":20968,"indexed":false,"mutability":"mutable","name":"fail","nameLocation":"1262:4:73","nodeType":"VariableDeclaration","scope":20970,"src":"1249:17:73","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_struct$_DummyStorage_$20949_memory_ptr","typeString":"struct DummyInvestStrategy.DummyStorage"},"typeName":{"id":20967,"nodeType":"UserDefinedTypeName","pathNode":{"id":20966,"name":"DummyStorage","nameLocations":["1249:12:73"],"nodeType":"IdentifierPath","referencedDeclaration":20949,"src":"1249:12:73"},"referencedDeclaration":20949,"src":"1249:12:73","typeDescriptions":{"typeIdentifier":"t_struct$_DummyStorage_$20949_storage_ptr","typeString":"struct DummyInvestStrategy.DummyStorage"}},"visibility":"internal"}],"src":"1248:19:73"},"src":"1235:33:73"},{"body":{"id":20990,"nodeType":"Block","src":"1299:67:73","statements":[{"expression":{"id":20978,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":20976,"name":"_asset","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":20918,"src":"1305:6:73","typeDescriptions":{"typeIdentifier":"t_contract$_IERC20_$8679","typeString":"contract IERC20"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"id":20977,"name":"asset_","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":20973,"src":"1314:6:73","typeDescriptions":{"typeIdentifier":"t_contract$_IERC20_$8679","typeString":"contract IERC20"}},"src":"1305:15:73","typeDescriptions":{"typeIdentifier":"t_contract$_IERC20_$8679","typeString":"contract IERC20"}},"id":20979,"nodeType":"ExpressionStatement","src":"1305:15:73"},{"expression":{"id":20988,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":20980,"name":"other","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":20932,"src":"1326:5:73","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"arguments":[{"arguments":[],"expression":{"argumentTypes":[],"id":20985,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"NewExpression","src":"1342:16:73","typeDescriptions":{"typeIdentifier":"t_function_creation_nonpayable$__$returns$_t_contract$_OtherAddress_$20913_$","typeString":"function () returns (contract OtherAddress)"},"typeName":{"id":20984,"nodeType":"UserDefinedTypeName","pathNode":{"id":20983,"name":"OtherAddress","nameLocations":["1346:12:73"],"nodeType":"IdentifierPath","referencedDeclaration":20913,"src":"1346:12:73"},"referencedDeclaration":20913,"src":"1346:12:73","typeDescriptions":{"typeIdentifier":"t_contract$_OtherAddress_$20913","typeString":"contract OtherAddress"}}},"id":20986,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"1342:18:73","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_contract$_OtherAddress_$20913","typeString":"contract OtherAddress"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_contract$_OtherAddress_$20913","typeString":"contract OtherAddress"}],"id":20982,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"1334:7:73","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":20981,"name":"address","nodeType":"ElementaryTypeName","src":"1334:7:73","typeDescriptions":{}}},"id":20987,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"1334:27:73","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"src":"1326:35:73","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"id":20989,"nodeType":"ExpressionStatement","src":"1326:35:73"}]},"id":20991,"implemented":true,"kind":"constructor","modifiers":[],"name":"","nameLocation":"-1:-1:-1","nodeType":"FunctionDefinition","parameters":{"id":20974,"nodeType":"ParameterList","parameters":[{"constant":false,"id":20973,"mutability":"mutable","name":"asset_","nameLocation":"1291:6:73","nodeType":"VariableDeclaration","scope":20991,"src":"1284:13:73","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_contract$_IERC20_$8679","typeString":"contract IERC20"},"typeName":{"id":20972,"nodeType":"UserDefinedTypeName","pathNode":{"id":20971,"name":"IERC20","nameLocations":["1284:6:73"],"nodeType":"IdentifierPath","referencedDeclaration":8679,"src":"1284:6:73"},"referencedDeclaration":8679,"src":"1284:6:73","typeDescriptions":{"typeIdentifier":"t_contract$_IERC20_$8679","typeString":"contract IERC20"}},"visibility":"internal"}],"src":"1283:15:73"},"returnParameters":{"id":20975,"nodeType":"ParameterList","parameters":[],"src":"1299:0:73"},"scope":21291,"src":"1272:94:73","stateMutability":"nonpayable","virtual":false,"visibility":"public"},{"baseFunctions":[20658],"body":{"id":21039,"nodeType":"Block","src":"1428:293:73","statements":[{"assignments":[20999],"declarations":[{"constant":false,"id":20999,"mutability":"mutable","name":"fail","nameLocation":"1454:4:73","nodeType":"VariableDeclaration","scope":21039,"src":"1434:24:73","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_struct$_DummyStorage_$20949_memory_ptr","typeString":"struct DummyInvestStrategy.DummyStorage"},"typeName":{"id":20998,"nodeType":"UserDefinedTypeName","pathNode":{"id":20997,"name":"DummyStorage","nameLocations":["1434:12:73"],"nodeType":"IdentifierPath","referencedDeclaration":20949,"src":"1434:12:73"},"referencedDeclaration":20949,"src":"1434:12:73","typeDescriptions":{"typeIdentifier":"t_struct$_DummyStorage_$20949_storage_ptr","typeString":"struct DummyInvestStrategy.DummyStorage"}},"visibility":"internal"}],"id":21006,"initialValue":{"arguments":[{"id":21002,"name":"initData","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":20993,"src":"1472:8:73","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}},{"components":[{"id":21003,"name":"DummyStorage","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":20949,"src":"1483:12:73","typeDescriptions":{"typeIdentifier":"t_type$_t_struct$_DummyStorage_$20949_storage_ptr_$","typeString":"type(struct DummyInvestStrategy.DummyStorage storage pointer)"}}],"id":21004,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"TupleExpression","src":"1482:14:73","typeDescriptions":{"typeIdentifier":"t_type$_t_struct$_DummyStorage_$20949_storage_ptr_$","typeString":"type(struct DummyInvestStrategy.DummyStorage storage pointer)"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"},{"typeIdentifier":"t_type$_t_struct$_DummyStorage_$20949_storage_ptr_$","typeString":"type(struct DummyInvestStrategy.DummyStorage storage pointer)"}],"expression":{"id":21000,"name":"abi","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-1,"src":"1461:3:73","typeDescriptions":{"typeIdentifier":"t_magic_abi","typeString":"abi"}},"id":21001,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberLocation":"1465:6:73","memberName":"decode","nodeType":"MemberAccess","src":"1461:10:73","typeDescriptions":{"typeIdentifier":"t_function_abidecode_pure$__$returns$__$","typeString":"function () pure"}},"id":21005,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"1461:36:73","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_struct$_DummyStorage_$20949_memory_ptr","typeString":"struct DummyInvestStrategy.DummyStorage memory"}},"nodeType":"VariableDeclarationStatement","src":"1434:63:73"},{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":21014,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"expression":{"arguments":[{"id":21009,"name":"fail","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":20999,"src":"1518:4:73","typeDescriptions":{"typeIdentifier":"t_struct$_DummyStorage_$20949_memory_ptr","typeString":"struct DummyInvestStrategy.DummyStorage memory"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_struct$_DummyStorage_$20949_memory_ptr","typeString":"struct DummyInvestStrategy.DummyStorage memory"}],"expression":{"id":21007,"name":"abi","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-1,"src":"1507:3:73","typeDescriptions":{"typeIdentifier":"t_magic_abi","typeString":"abi"}},"id":21008,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberLocation":"1511:6:73","memberName":"encode","nodeType":"MemberAccess","src":"1507:10:73","typeDescriptions":{"typeIdentifier":"t_function_abiencode_pure$__$returns$_t_bytes_memory_ptr_$","typeString":"function () pure returns (bytes memory)"}},"id":21010,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"1507:16:73","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}},"id":21011,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"1524:6:73","memberName":"length","nodeType":"MemberAccess","src":"1507:23:73","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"!=","rightExpression":{"expression":{"id":21012,"name":"initData","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":20993,"src":"1534:8:73","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}},"id":21013,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"1543:6:73","memberName":"length","nodeType":"MemberAccess","src":"1534:15:73","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"1507:42:73","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":21018,"nodeType":"IfStatement","src":"1503:75:73","trueBody":{"errorCall":{"arguments":[],"expression":{"argumentTypes":[],"id":21015,"name":"NoExtraDataAllowed","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":20938,"src":"1558:18:73","typeDescriptions":{"typeIdentifier":"t_function_error_pure$__$returns$_t_error_$","typeString":"function () pure returns (error)"}},"id":21016,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"1558:20:73","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_error","typeString":"error"}},"id":21017,"nodeType":"RevertStatement","src":"1551:27:73"}},{"expression":{"id":21026,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"expression":{"arguments":[{"id":21022,"name":"storageSlot","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":20930,"src":"1609:11:73","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes32","typeString":"bytes32"}],"expression":{"id":21019,"name":"StorageSlot","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":11032,"src":"1584:11:73","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_StorageSlot_$11032_$","typeString":"type(library StorageSlot)"}},"id":21021,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"1596:12:73","memberName":"getBytesSlot","nodeType":"MemberAccess","referencedDeclaration":11020,"src":"1584:24:73","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_bytes32_$returns$_t_struct$_BytesSlot_$10932_storage_ptr_$","typeString":"function (bytes32) pure returns (struct StorageSlot.BytesSlot storage pointer)"}},"id":21023,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"1584:37:73","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_struct$_BytesSlot_$10932_storage_ptr","typeString":"struct StorageSlot.BytesSlot storage pointer"}},"id":21024,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"memberLocation":"1622:5:73","memberName":"value","nodeType":"MemberAccess","referencedDeclaration":10931,"src":"1584:43:73","typeDescriptions":{"typeIdentifier":"t_bytes_storage","typeString":"bytes storage ref"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"id":21025,"name":"initData","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":20993,"src":"1630:8:73","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}},"src":"1584:54:73","typeDescriptions":{"typeIdentifier":"t_bytes_storage","typeString":"bytes storage ref"}},"id":21027,"nodeType":"ExpressionStatement","src":"1584:54:73"},{"condition":{"expression":{"id":21028,"name":"fail","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":20999,"src":"1648:4:73","typeDescriptions":{"typeIdentifier":"t_struct$_DummyStorage_$20949_memory_ptr","typeString":"struct DummyInvestStrategy.DummyStorage memory"}},"id":21029,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"1653:11:73","memberName":"failConnect","nodeType":"MemberAccess","referencedDeclaration":20942,"src":"1648:16:73","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":21034,"nodeType":"IfStatement","src":"1644:44:73","trueBody":{"errorCall":{"arguments":[{"hexValue":"636f6e6e656374","id":21031,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"1678:9:73","typeDescriptions":{"typeIdentifier":"t_stringliteral_6cc4cd8a2857f640feca9d434996a8bd85fc3342a4342aa8c9e794d5d512b324","typeString":"literal_string \"connect\""},"value":"connect"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_stringliteral_6cc4cd8a2857f640feca9d434996a8bd85fc3342a4342aa8c9e794d5d512b324","typeString":"literal_string \"connect\""}],"id":21030,"name":"Fail","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":20936,"src":"1673:4:73","typeDescriptions":{"typeIdentifier":"t_function_error_pure$_t_string_memory_ptr_$returns$_t_error_$","typeString":"function (string memory) pure returns (error)"}},"id":21032,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"1673:15:73","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_error","typeString":"error"}},"id":21033,"nodeType":"RevertStatement","src":"1666:22:73"}},{"eventCall":{"arguments":[{"id":21036,"name":"initData","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":20993,"src":"1707:8:73","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}],"id":21035,"name":"Connect","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":20965,"src":"1699:7:73","typeDescriptions":{"typeIdentifier":"t_function_event_nonpayable$_t_bytes_memory_ptr_$returns$__$","typeString":"function (bytes memory)"}},"id":21037,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"1699:17:73","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":21038,"nodeType":"EmitStatement","src":"1694:22:73"}]},"functionSelector":"9cd47128","id":21040,"implemented":true,"kind":"function","modifiers":[],"name":"connect","nameLocation":"1379:7:73","nodeType":"FunctionDefinition","overrides":{"id":20995,"nodeType":"OverrideSpecifier","overrides":[],"src":"1419:8:73"},"parameters":{"id":20994,"nodeType":"ParameterList","parameters":[{"constant":false,"id":20993,"mutability":"mutable","name":"initData","nameLocation":"1400:8:73","nodeType":"VariableDeclaration","scope":21040,"src":"1387:21:73","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes"},"typeName":{"id":20992,"name":"bytes","nodeType":"ElementaryTypeName","src":"1387:5:73","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"}],"src":"1386:23:73"},"returnParameters":{"id":20996,"nodeType":"ParameterList","parameters":[],"src":"1428:0:73"},"scope":21291,"src":"1370:351:73","stateMutability":"nonpayable","virtual":false,"visibility":"external"},{"body":{"id":21057,"nodeType":"Block","src":"1792:89:73","statements":[{"expression":{"arguments":[{"expression":{"arguments":[{"id":21050,"name":"storageSlot","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":20930,"src":"1841:11:73","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes32","typeString":"bytes32"}],"expression":{"id":21048,"name":"StorageSlot","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":11032,"src":"1816:11:73","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_StorageSlot_$11032_$","typeString":"type(library StorageSlot)"}},"id":21049,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"1828:12:73","memberName":"getBytesSlot","nodeType":"MemberAccess","referencedDeclaration":11020,"src":"1816:24:73","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_bytes32_$returns$_t_struct$_BytesSlot_$10932_storage_ptr_$","typeString":"function (bytes32) pure returns (struct StorageSlot.BytesSlot storage pointer)"}},"id":21051,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"1816:37:73","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_struct$_BytesSlot_$10932_storage_ptr","typeString":"struct StorageSlot.BytesSlot storage pointer"}},"id":21052,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"1854:5:73","memberName":"value","nodeType":"MemberAccess","referencedDeclaration":10931,"src":"1816:43:73","typeDescriptions":{"typeIdentifier":"t_bytes_storage","typeString":"bytes storage ref"}},{"components":[{"id":21053,"name":"DummyStorage","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":20949,"src":"1862:12:73","typeDescriptions":{"typeIdentifier":"t_type$_t_struct$_DummyStorage_$20949_storage_ptr_$","typeString":"type(struct DummyInvestStrategy.DummyStorage storage pointer)"}}],"id":21054,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"TupleExpression","src":"1861:14:73","typeDescriptions":{"typeIdentifier":"t_type$_t_struct$_DummyStorage_$20949_storage_ptr_$","typeString":"type(struct DummyInvestStrategy.DummyStorage storage pointer)"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes_storage","typeString":"bytes storage ref"},{"typeIdentifier":"t_type$_t_struct$_DummyStorage_$20949_storage_ptr_$","typeString":"type(struct DummyInvestStrategy.DummyStorage storage pointer)"}],"expression":{"id":21046,"name":"abi","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-1,"src":"1805:3:73","typeDescriptions":{"typeIdentifier":"t_magic_abi","typeString":"abi"}},"id":21047,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberLocation":"1809:6:73","memberName":"decode","nodeType":"MemberAccess","src":"1805:10:73","typeDescriptions":{"typeIdentifier":"t_function_abidecode_pure$__$returns$__$","typeString":"function () pure"}},"id":21055,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"1805:71:73","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_struct$_DummyStorage_$20949_memory_ptr","typeString":"struct DummyInvestStrategy.DummyStorage memory"}},"functionReturnParameters":21045,"id":21056,"nodeType":"Return","src":"1798:78:73"}]},"id":21058,"implemented":true,"kind":"function","modifiers":[],"name":"_getStorage","nameLocation":"1734:11:73","nodeType":"FunctionDefinition","parameters":{"id":21041,"nodeType":"ParameterList","parameters":[],"src":"1745:2:73"},"returnParameters":{"id":21045,"nodeType":"ParameterList","parameters":[{"constant":false,"id":21044,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":21058,"src":"1771:19:73","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_struct$_DummyStorage_$20949_memory_ptr","typeString":"struct DummyInvestStrategy.DummyStorage"},"typeName":{"id":21043,"nodeType":"UserDefinedTypeName","pathNode":{"id":21042,"name":"DummyStorage","nameLocations":["1771:12:73"],"nodeType":"IdentifierPath","referencedDeclaration":20949,"src":"1771:12:73"},"referencedDeclaration":20949,"src":"1771:12:73","typeDescriptions":{"typeIdentifier":"t_struct$_DummyStorage_$20949_storage_ptr","typeString":"struct DummyInvestStrategy.DummyStorage"}},"visibility":"internal"}],"src":"1770:21:73"},"scope":21291,"src":"1725:156:73","stateMutability":"view","virtual":false,"visibility":"internal"},{"body":{"id":21078,"nodeType":"Block","src":"1977:97:73","statements":[{"expression":{"arguments":[{"arguments":[{"id":21072,"name":"storageSlot","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":20930,"src":"2040:11:73","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes32","typeString":"bytes32"}],"expression":{"arguments":[{"id":21069,"name":"contract_","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":21060,"src":"2016:9:73","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"id":21068,"name":"IExposeStorage","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":20649,"src":"2001:14:73","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_IExposeStorage_$20649_$","typeString":"type(contract IExposeStorage)"}},"id":21070,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"2001:25:73","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_contract$_IExposeStorage_$20649","typeString":"contract IExposeStorage"}},"id":21071,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"2027:12:73","memberName":"getBytesSlot","nodeType":"MemberAccess","referencedDeclaration":20648,"src":"2001:38:73","typeDescriptions":{"typeIdentifier":"t_function_external_view$_t_bytes32_$returns$_t_bytes_memory_ptr_$","typeString":"function (bytes32) view external returns (bytes memory)"}},"id":21073,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"2001:51:73","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}},{"components":[{"id":21074,"name":"DummyStorage","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":20949,"src":"2055:12:73","typeDescriptions":{"typeIdentifier":"t_type$_t_struct$_DummyStorage_$20949_storage_ptr_$","typeString":"type(struct DummyInvestStrategy.DummyStorage storage pointer)"}}],"id":21075,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"TupleExpression","src":"2054:14:73","typeDescriptions":{"typeIdentifier":"t_type$_t_struct$_DummyStorage_$20949_storage_ptr_$","typeString":"type(struct DummyInvestStrategy.DummyStorage storage pointer)"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"},{"typeIdentifier":"t_type$_t_struct$_DummyStorage_$20949_storage_ptr_$","typeString":"type(struct DummyInvestStrategy.DummyStorage storage pointer)"}],"expression":{"id":21066,"name":"abi","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-1,"src":"1990:3:73","typeDescriptions":{"typeIdentifier":"t_magic_abi","typeString":"abi"}},"id":21067,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberLocation":"1994:6:73","memberName":"decode","nodeType":"MemberAccess","src":"1990:10:73","typeDescriptions":{"typeIdentifier":"t_function_abidecode_pure$__$returns$__$","typeString":"function () pure"}},"id":21076,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"1990:79:73","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_struct$_DummyStorage_$20949_memory_ptr","typeString":"struct DummyInvestStrategy.DummyStorage memory"}},"functionReturnParameters":21065,"id":21077,"nodeType":"Return","src":"1983:86:73"}]},"id":21079,"implemented":true,"kind":"function","modifiers":[],"name":"_getStorageForViews","nameLocation":"1894:19:73","nodeType":"FunctionDefinition","parameters":{"id":21061,"nodeType":"ParameterList","parameters":[{"constant":false,"id":21060,"mutability":"mutable","name":"contract_","nameLocation":"1922:9:73","nodeType":"VariableDeclaration","scope":21079,"src":"1914:17:73","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":21059,"name":"address","nodeType":"ElementaryTypeName","src":"1914:7:73","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"1913:19:73"},"returnParameters":{"id":21065,"nodeType":"ParameterList","parameters":[{"constant":false,"id":21064,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":21079,"src":"1956:19:73","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_struct$_DummyStorage_$20949_memory_ptr","typeString":"struct DummyInvestStrategy.DummyStorage"},"typeName":{"id":21063,"nodeType":"UserDefinedTypeName","pathNode":{"id":21062,"name":"DummyStorage","nameLocations":["1956:12:73"],"nodeType":"IdentifierPath","referencedDeclaration":20949,"src":"1956:12:73"},"referencedDeclaration":20949,"src":"1956:12:73","typeDescriptions":{"typeIdentifier":"t_struct$_DummyStorage_$20949_storage_ptr","typeString":"struct DummyInvestStrategy.DummyStorage"}},"visibility":"internal"}],"src":"1955:21:73"},"scope":21291,"src":"1885:189:73","stateMutability":"view","virtual":false,"visibility":"internal"},{"baseFunctions":[20664],"body":{"id":21097,"nodeType":"Block","src":"2128:98:73","statements":[{"condition":{"expression":{"arguments":[],"expression":{"argumentTypes":[],"id":21085,"name":"_getStorage","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":21058,"src":"2138:11:73","typeDescriptions":{"typeIdentifier":"t_function_internal_view$__$returns$_t_struct$_DummyStorage_$20949_memory_ptr_$","typeString":"function () view returns (struct DummyInvestStrategy.DummyStorage memory)"}},"id":21086,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"2138:13:73","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_struct$_DummyStorage_$20949_memory_ptr","typeString":"struct DummyInvestStrategy.DummyStorage memory"}},"id":21087,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"2152:14:73","memberName":"failDisconnect","nodeType":"MemberAccess","referencedDeclaration":20944,"src":"2138:28:73","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":21092,"nodeType":"IfStatement","src":"2134:59:73","trueBody":{"errorCall":{"arguments":[{"hexValue":"646973636f6e6e656374","id":21089,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"2180:12:73","typeDescriptions":{"typeIdentifier":"t_stringliteral_33f3b0f27639a8cf87e42127aff3d5fb0ceefb0ec7f418bbae25f31ac364ef39","typeString":"literal_string \"disconnect\""},"value":"disconnect"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_stringliteral_33f3b0f27639a8cf87e42127aff3d5fb0ceefb0ec7f418bbae25f31ac364ef39","typeString":"literal_string \"disconnect\""}],"id":21088,"name":"Fail","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":20936,"src":"2175:4:73","typeDescriptions":{"typeIdentifier":"t_function_error_pure$_t_string_memory_ptr_$returns$_t_error_$","typeString":"function (string memory) pure returns (error)"}},"id":21090,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"2175:18:73","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_error","typeString":"error"}},"id":21091,"nodeType":"RevertStatement","src":"2168:25:73"}},{"eventCall":{"arguments":[{"id":21094,"name":"force","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":21081,"src":"2215:5:73","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"}],"id":21093,"name":"Disconnect","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":20961,"src":"2204:10:73","typeDescriptions":{"typeIdentifier":"t_function_event_nonpayable$_t_bool_$returns$__$","typeString":"function (bool)"}},"id":21095,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"2204:17:73","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":21096,"nodeType":"EmitStatement","src":"2199:22:73"}]},"functionSelector":"5a117456","id":21098,"implemented":true,"kind":"function","modifiers":[],"name":"disconnect","nameLocation":"2087:10:73","nodeType":"FunctionDefinition","overrides":{"id":21083,"nodeType":"OverrideSpecifier","overrides":[],"src":"2119:8:73"},"parameters":{"id":21082,"nodeType":"ParameterList","parameters":[{"constant":false,"id":21081,"mutability":"mutable","name":"force","nameLocation":"2103:5:73","nodeType":"VariableDeclaration","scope":21098,"src":"2098:10:73","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":21080,"name":"bool","nodeType":"ElementaryTypeName","src":"2098:4:73","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"}],"src":"2097:12:73"},"returnParameters":{"id":21084,"nodeType":"ParameterList","parameters":[],"src":"2128:0:73"},"scope":21291,"src":"2078:148:73","stateMutability":"nonpayable","virtual":false,"visibility":"external"},{"baseFunctions":[20718],"body":{"id":21118,"nodeType":"Block","src":"2317:104:73","statements":[{"condition":{"expression":{"arguments":[{"id":21107,"name":"contract_","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":21100,"src":"2347:9:73","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"id":21106,"name":"_getStorageForViews","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":21079,"src":"2327:19:73","typeDescriptions":{"typeIdentifier":"t_function_internal_view$_t_address_$returns$_t_struct$_DummyStorage_$20949_memory_ptr_$","typeString":"function (address) view returns (struct DummyInvestStrategy.DummyStorage memory)"}},"id":21108,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"2327:30:73","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_struct$_DummyStorage_$20949_memory_ptr","typeString":"struct DummyInvestStrategy.DummyStorage memory"}},"id":21109,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"2358:12:73","memberName":"failWithdraw","nodeType":"MemberAccess","referencedDeclaration":20948,"src":"2327:43:73","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":21112,"nodeType":"IfStatement","src":"2323:57:73","trueBody":{"expression":{"hexValue":"30","id":21110,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"2379:1:73","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"functionReturnParameters":21105,"id":21111,"nodeType":"Return","src":"2372:8:73"}},{"expression":{"arguments":[{"id":21115,"name":"other","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":20932,"src":"2410:5:73","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"expression":{"id":21113,"name":"_asset","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":20918,"src":"2393:6:73","typeDescriptions":{"typeIdentifier":"t_contract$_IERC20_$8679","typeString":"contract IERC20"}},"id":21114,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"2400:9:73","memberName":"balanceOf","nodeType":"MemberAccess","referencedDeclaration":8636,"src":"2393:16:73","typeDescriptions":{"typeIdentifier":"t_function_external_view$_t_address_$returns$_t_uint256_$","typeString":"function (address) view external returns (uint256)"}},"id":21116,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"2393:23:73","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"functionReturnParameters":21105,"id":21117,"nodeType":"Return","src":"2386:30:73"}]},"functionSelector":"ce96cb77","id":21119,"implemented":true,"kind":"function","modifiers":[],"name":"maxWithdraw","nameLocation":"2239:11:73","nodeType":"FunctionDefinition","overrides":{"id":21102,"nodeType":"OverrideSpecifier","overrides":[],"src":"2290:8:73"},"parameters":{"id":21101,"nodeType":"ParameterList","parameters":[{"constant":false,"id":21100,"mutability":"mutable","name":"contract_","nameLocation":"2259:9:73","nodeType":"VariableDeclaration","scope":21119,"src":"2251:17:73","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":21099,"name":"address","nodeType":"ElementaryTypeName","src":"2251:7:73","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"2250:19:73"},"returnParameters":{"id":21105,"nodeType":"ParameterList","parameters":[{"constant":false,"id":21104,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":21119,"src":"2308:7:73","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":21103,"name":"uint256","nodeType":"ElementaryTypeName","src":"2308:7:73","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"2307:9:73"},"scope":21291,"src":"2230:191:73","stateMutability":"view","virtual":true,"visibility":"public"},{"baseFunctions":[20710],"body":{"id":21140,"nodeType":"Block","src":"2511:97:73","statements":[{"condition":{"expression":{"arguments":[{"id":21128,"name":"contract_","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":21121,"src":"2541:9:73","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"id":21127,"name":"_getStorageForViews","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":21079,"src":"2521:19:73","typeDescriptions":{"typeIdentifier":"t_function_internal_view$_t_address_$returns$_t_struct$_DummyStorage_$20949_memory_ptr_$","typeString":"function (address) view returns (struct DummyInvestStrategy.DummyStorage memory)"}},"id":21129,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"2521:30:73","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_struct$_DummyStorage_$20949_memory_ptr","typeString":"struct DummyInvestStrategy.DummyStorage memory"}},"id":21130,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"2552:11:73","memberName":"failDeposit","nodeType":"MemberAccess","referencedDeclaration":20946,"src":"2521:42:73","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":21133,"nodeType":"IfStatement","src":"2517:56:73","trueBody":{"expression":{"hexValue":"30","id":21131,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"2572:1:73","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"functionReturnParameters":21126,"id":21132,"nodeType":"Return","src":"2565:8:73"}},{"expression":{"expression":{"arguments":[{"id":21136,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"2591:7:73","typeDescriptions":{"typeIdentifier":"t_type$_t_uint256_$","typeString":"type(uint256)"},"typeName":{"id":21135,"name":"uint256","nodeType":"ElementaryTypeName","src":"2591:7:73","typeDescriptions":{}}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_type$_t_uint256_$","typeString":"type(uint256)"}],"id":21134,"name":"type","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-27,"src":"2586:4:73","typeDescriptions":{"typeIdentifier":"t_function_metatype_pure$__$returns$__$","typeString":"function () pure"}},"id":21137,"isConstant":false,"isLValue":false,"isPure":true,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"2586:13:73","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_magic_meta_type_t_uint256","typeString":"type(uint256)"}},"id":21138,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberLocation":"2600:3:73","memberName":"max","nodeType":"MemberAccess","src":"2586:17:73","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"functionReturnParameters":21126,"id":21139,"nodeType":"Return","src":"2579:24:73"}]},"functionSelector":"402d267d","id":21141,"implemented":true,"kind":"function","modifiers":[],"name":"maxDeposit","nameLocation":"2434:10:73","nodeType":"FunctionDefinition","overrides":{"id":21123,"nodeType":"OverrideSpecifier","overrides":[],"src":"2484:8:73"},"parameters":{"id":21122,"nodeType":"ParameterList","parameters":[{"constant":false,"id":21121,"mutability":"mutable","name":"contract_","nameLocation":"2453:9:73","nodeType":"VariableDeclaration","scope":21141,"src":"2445:17:73","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":21120,"name":"address","nodeType":"ElementaryTypeName","src":"2445:7:73","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"2444:19:73"},"returnParameters":{"id":21126,"nodeType":"ParameterList","parameters":[{"constant":false,"id":21125,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":21141,"src":"2502:7:73","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":21124,"name":"uint256","nodeType":"ElementaryTypeName","src":"2502:7:73","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"2501:9:73"},"scope":21291,"src":"2425:183:73","stateMutability":"view","virtual":true,"visibility":"public"},{"baseFunctions":[20694],"body":{"id":21154,"nodeType":"Block","src":"2683:33:73","statements":[{"expression":{"arguments":[{"id":21151,"name":"_asset","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":20918,"src":"2704:6:73","typeDescriptions":{"typeIdentifier":"t_contract$_IERC20_$8679","typeString":"contract IERC20"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_contract$_IERC20_$8679","typeString":"contract IERC20"}],"id":21150,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"2696:7:73","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":21149,"name":"address","nodeType":"ElementaryTypeName","src":"2696:7:73","typeDescriptions":{}}},"id":21152,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"2696:15:73","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"functionReturnParameters":21148,"id":21153,"nodeType":"Return","src":"2689:22:73"}]},"functionSelector":"9c4667a2","id":21155,"implemented":true,"kind":"function","modifiers":[],"name":"asset","nameLocation":"2621:5:73","nodeType":"FunctionDefinition","overrides":{"id":21145,"nodeType":"OverrideSpecifier","overrides":[],"src":"2656:8:73"},"parameters":{"id":21144,"nodeType":"ParameterList","parameters":[{"constant":false,"id":21143,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":21155,"src":"2627:7:73","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":21142,"name":"address","nodeType":"ElementaryTypeName","src":"2627:7:73","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"2626:9:73"},"returnParameters":{"id":21148,"nodeType":"ParameterList","parameters":[{"constant":false,"id":21147,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":21155,"src":"2674:7:73","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":21146,"name":"address","nodeType":"ElementaryTypeName","src":"2674:7:73","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"2673:9:73"},"scope":21291,"src":"2612:104:73","stateMutability":"view","virtual":true,"visibility":"public"},{"baseFunctions":[20702],"body":{"id":21168,"nodeType":"Block","src":"2804:41:73","statements":[{"expression":{"arguments":[{"id":21165,"name":"other","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":20932,"src":"2834:5:73","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"expression":{"id":21163,"name":"_asset","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":20918,"src":"2817:6:73","typeDescriptions":{"typeIdentifier":"t_contract$_IERC20_$8679","typeString":"contract IERC20"}},"id":21164,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"2824:9:73","memberName":"balanceOf","nodeType":"MemberAccess","referencedDeclaration":8636,"src":"2817:16:73","typeDescriptions":{"typeIdentifier":"t_function_external_view$_t_address_$returns$_t_uint256_$","typeString":"function (address) view external returns (uint256)"}},"id":21166,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"2817:23:73","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"functionReturnParameters":21162,"id":21167,"nodeType":"Return","src":"2810:30:73"}]},"functionSelector":"f3e0ffbf","id":21169,"implemented":true,"kind":"function","modifiers":[],"name":"totalAssets","nameLocation":"2729:11:73","nodeType":"FunctionDefinition","overrides":{"id":21159,"nodeType":"OverrideSpecifier","overrides":[],"src":"2770:8:73"},"parameters":{"id":21158,"nodeType":"ParameterList","parameters":[{"constant":false,"id":21157,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":21169,"src":"2741:7:73","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":21156,"name":"address","nodeType":"ElementaryTypeName","src":"2741:7:73","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"2740:9:73"},"returnParameters":{"id":21162,"nodeType":"ParameterList","parameters":[{"constant":false,"id":21161,"mutability":"mutable","name":"assets","nameLocation":"2796:6:73","nodeType":"VariableDeclaration","scope":21169,"src":"2788:14:73","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":21160,"name":"uint256","nodeType":"ElementaryTypeName","src":"2788:7:73","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"2787:16:73"},"scope":21291,"src":"2720:125:73","stateMutability":"view","virtual":true,"visibility":"public"},{"baseFunctions":[20676],"body":{"id":21199,"nodeType":"Block","src":"2901:160:73","statements":[{"condition":{"expression":{"arguments":[],"expression":{"argumentTypes":[],"id":21175,"name":"_getStorage","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":21058,"src":"2911:11:73","typeDescriptions":{"typeIdentifier":"t_function_internal_view$__$returns$_t_struct$_DummyStorage_$20949_memory_ptr_$","typeString":"function () view returns (struct DummyInvestStrategy.DummyStorage memory)"}},"id":21176,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"2911:13:73","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_struct$_DummyStorage_$20949_memory_ptr","typeString":"struct DummyInvestStrategy.DummyStorage memory"}},"id":21177,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"2925:12:73","memberName":"failWithdraw","nodeType":"MemberAccess","referencedDeclaration":20948,"src":"2911:26:73","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":21182,"nodeType":"IfStatement","src":"2907:55:73","trueBody":{"errorCall":{"arguments":[{"hexValue":"7769746864726177","id":21179,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"2951:10:73","typeDescriptions":{"typeIdentifier":"t_stringliteral_855511cc3694f64379908437d6d64458dc76d02482052bfb8a5b33a72c054c77","typeString":"literal_string \"withdraw\""},"value":"withdraw"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_stringliteral_855511cc3694f64379908437d6d64458dc76d02482052bfb8a5b33a72c054c77","typeString":"literal_string \"withdraw\""}],"id":21178,"name":"Fail","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":20936,"src":"2946:4:73","typeDescriptions":{"typeIdentifier":"t_function_error_pure$_t_string_memory_ptr_$returns$_t_error_$","typeString":"function (string memory) pure returns (error)"}},"id":21180,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"2946:16:73","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_error","typeString":"error"}},"id":21181,"nodeType":"RevertStatement","src":"2939:23:73"}},{"expression":{"arguments":[{"id":21187,"name":"_asset","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":20918,"src":"2999:6:73","typeDescriptions":{"typeIdentifier":"t_contract$_IERC20_$8679","typeString":"contract IERC20"}},{"arguments":[{"id":21190,"name":"this","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-28,"src":"3015:4:73","typeDescriptions":{"typeIdentifier":"t_contract$_DummyInvestStrategy_$21291","typeString":"contract DummyInvestStrategy"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_contract$_DummyInvestStrategy_$21291","typeString":"contract DummyInvestStrategy"}],"id":21189,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"3007:7:73","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":21188,"name":"address","nodeType":"ElementaryTypeName","src":"3007:7:73","typeDescriptions":{}}},"id":21191,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"3007:13:73","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":21192,"name":"assets","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":21171,"src":"3022:6:73","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_contract$_IERC20_$8679","typeString":"contract IERC20"},{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"expression":{"arguments":[{"id":21184,"name":"other","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":20932,"src":"2981:5:73","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"id":21183,"name":"OtherAddress","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":20913,"src":"2968:12:73","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_OtherAddress_$20913_$","typeString":"type(contract OtherAddress)"}},"id":21185,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"2968:19:73","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_contract$_OtherAddress_$20913","typeString":"contract OtherAddress"}},"id":21186,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"2988:10:73","memberName":"transferTo","nodeType":"MemberAccess","referencedDeclaration":20912,"src":"2968:30:73","typeDescriptions":{"typeIdentifier":"t_function_external_nonpayable$_t_contract$_IERC20_$8679_$_t_address_$_t_uint256_$returns$__$","typeString":"function (contract IERC20,address,uint256) external"}},"id":21193,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"2968:61:73","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":21194,"nodeType":"ExpressionStatement","src":"2968:61:73"},{"eventCall":{"arguments":[{"id":21196,"name":"assets","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":21171,"src":"3049:6:73","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":21195,"name":"Withdraw","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":20957,"src":"3040:8:73","typeDescriptions":{"typeIdentifier":"t_function_event_nonpayable$_t_uint256_$returns$__$","typeString":"function (uint256)"}},"id":21197,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"3040:16:73","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":21198,"nodeType":"EmitStatement","src":"3035:21:73"}]},"functionSelector":"2e1a7d4d","id":21200,"implemented":true,"kind":"function","modifiers":[],"name":"withdraw","nameLocation":"2858:8:73","nodeType":"FunctionDefinition","overrides":{"id":21173,"nodeType":"OverrideSpecifier","overrides":[],"src":"2892:8:73"},"parameters":{"id":21172,"nodeType":"ParameterList","parameters":[{"constant":false,"id":21171,"mutability":"mutable","name":"assets","nameLocation":"2875:6:73","nodeType":"VariableDeclaration","scope":21200,"src":"2867:14:73","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":21170,"name":"uint256","nodeType":"ElementaryTypeName","src":"2867:7:73","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"2866:16:73"},"returnParameters":{"id":21174,"nodeType":"ParameterList","parameters":[],"src":"2901:0:73"},"scope":21291,"src":"2849:212:73","stateMutability":"nonpayable","virtual":false,"visibility":"external"},{"baseFunctions":[20670],"body":{"id":21225,"nodeType":"Block","src":"3116:126:73","statements":[{"condition":{"expression":{"arguments":[],"expression":{"argumentTypes":[],"id":21206,"name":"_getStorage","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":21058,"src":"3126:11:73","typeDescriptions":{"typeIdentifier":"t_function_internal_view$__$returns$_t_struct$_DummyStorage_$20949_memory_ptr_$","typeString":"function () view returns (struct DummyInvestStrategy.DummyStorage memory)"}},"id":21207,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"3126:13:73","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_struct$_DummyStorage_$20949_memory_ptr","typeString":"struct DummyInvestStrategy.DummyStorage memory"}},"id":21208,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"3140:11:73","memberName":"failDeposit","nodeType":"MemberAccess","referencedDeclaration":20946,"src":"3126:25:73","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":21213,"nodeType":"IfStatement","src":"3122:53:73","trueBody":{"errorCall":{"arguments":[{"hexValue":"6465706f736974","id":21210,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"3165:9:73","typeDescriptions":{"typeIdentifier":"t_stringliteral_48c73f681176fc7b3f9693986fd7b14581e8d540519e27400e88b8713932be01","typeString":"literal_string \"deposit\""},"value":"deposit"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_stringliteral_48c73f681176fc7b3f9693986fd7b14581e8d540519e27400e88b8713932be01","typeString":"literal_string \"deposit\""}],"id":21209,"name":"Fail","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":20936,"src":"3160:4:73","typeDescriptions":{"typeIdentifier":"t_function_error_pure$_t_string_memory_ptr_$returns$_t_error_$","typeString":"function (string memory) pure returns (error)"}},"id":21211,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"3160:15:73","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_error","typeString":"error"}},"id":21212,"nodeType":"RevertStatement","src":"3153:22:73"}},{"expression":{"arguments":[{"id":21217,"name":"other","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":20932,"src":"3197:5:73","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":21218,"name":"assets","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":21202,"src":"3204:6:73","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"expression":{"id":21214,"name":"_asset","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":20918,"src":"3181:6:73","typeDescriptions":{"typeIdentifier":"t_contract$_IERC20_$8679","typeString":"contract IERC20"}},"id":21216,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"3188:8:73","memberName":"transfer","nodeType":"MemberAccess","referencedDeclaration":8646,"src":"3181:15:73","typeDescriptions":{"typeIdentifier":"t_function_external_nonpayable$_t_address_$_t_uint256_$returns$_t_bool_$","typeString":"function (address,uint256) external returns (bool)"}},"id":21219,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"3181:30:73","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":21220,"nodeType":"ExpressionStatement","src":"3181:30:73"},{"eventCall":{"arguments":[{"id":21222,"name":"assets","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":21202,"src":"3230:6:73","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":21221,"name":"Deposit","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":20953,"src":"3222:7:73","typeDescriptions":{"typeIdentifier":"t_function_event_nonpayable$_t_uint256_$returns$__$","typeString":"function (uint256)"}},"id":21223,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"3222:15:73","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":21224,"nodeType":"EmitStatement","src":"3217:20:73"}]},"functionSelector":"b6b55f25","id":21226,"implemented":true,"kind":"function","modifiers":[],"name":"deposit","nameLocation":"3074:7:73","nodeType":"FunctionDefinition","overrides":{"id":21204,"nodeType":"OverrideSpecifier","overrides":[],"src":"3107:8:73"},"parameters":{"id":21203,"nodeType":"ParameterList","parameters":[{"constant":false,"id":21202,"mutability":"mutable","name":"assets","nameLocation":"3090:6:73","nodeType":"VariableDeclaration","scope":21226,"src":"3082:14:73","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":21201,"name":"uint256","nodeType":"ElementaryTypeName","src":"3082:7:73","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"3081:16:73"},"returnParameters":{"id":21205,"nodeType":"ParameterList","parameters":[],"src":"3116:0:73"},"scope":21291,"src":"3065:177:73","stateMutability":"nonpayable","virtual":false,"visibility":"external"},{"baseFunctions":[20686],"body":{"id":21276,"nodeType":"Block","src":"3340:298:73","statements":[{"assignments":[21237],"declarations":[{"constant":false,"id":21237,"mutability":"mutable","name":"checkedMethod","nameLocation":"3361:13:73","nodeType":"VariableDeclaration","scope":21276,"src":"3346:28:73","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_enum$_ForwardMethods_$20940","typeString":"enum DummyInvestStrategy.ForwardMethods"},"typeName":{"id":21236,"nodeType":"UserDefinedTypeName","pathNode":{"id":21235,"name":"ForwardMethods","nameLocations":["3346:14:73"],"nodeType":"IdentifierPath","referencedDeclaration":20940,"src":"3346:14:73"},"referencedDeclaration":20940,"src":"3346:14:73","typeDescriptions":{"typeIdentifier":"t_enum$_ForwardMethods_$20940","typeString":"enum DummyInvestStrategy.ForwardMethods"}},"visibility":"internal"}],"id":21241,"initialValue":{"arguments":[{"id":21239,"name":"method","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":21228,"src":"3392:6:73","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint8","typeString":"uint8"}],"id":21238,"name":"ForwardMethods","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":20940,"src":"3377:14:73","typeDescriptions":{"typeIdentifier":"t_type$_t_enum$_ForwardMethods_$20940_$","typeString":"type(enum DummyInvestStrategy.ForwardMethods)"}},"id":21240,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"3377:22:73","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_enum$_ForwardMethods_$20940","typeString":"enum DummyInvestStrategy.ForwardMethods"}},"nodeType":"VariableDeclarationStatement","src":"3346:53:73"},{"condition":{"commonType":{"typeIdentifier":"t_enum$_ForwardMethods_$20940","typeString":"enum DummyInvestStrategy.ForwardMethods"},"id":21245,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":21242,"name":"checkedMethod","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":21237,"src":"3409:13:73","typeDescriptions":{"typeIdentifier":"t_enum$_ForwardMethods_$20940","typeString":"enum DummyInvestStrategy.ForwardMethods"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"expression":{"id":21243,"name":"ForwardMethods","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":20940,"src":"3426:14:73","typeDescriptions":{"typeIdentifier":"t_type$_t_enum$_ForwardMethods_$20940_$","typeString":"type(enum DummyInvestStrategy.ForwardMethods)"}},"id":21244,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberLocation":"3441:7:73","memberName":"setFail","nodeType":"MemberAccess","referencedDeclaration":20939,"src":"3426:22:73","typeDescriptions":{"typeIdentifier":"t_enum$_ForwardMethods_$20940","typeString":"enum DummyInvestStrategy.ForwardMethods"}},"src":"3409:39:73","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":21270,"nodeType":"IfStatement","src":"3405:207:73","trueBody":{"id":21269,"nodeType":"Block","src":"3450:162:73","statements":[{"assignments":[21248],"declarations":[{"constant":false,"id":21248,"mutability":"mutable","name":"fail","nameLocation":"3478:4:73","nodeType":"VariableDeclaration","scope":21269,"src":"3458:24:73","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_struct$_DummyStorage_$20949_memory_ptr","typeString":"struct DummyInvestStrategy.DummyStorage"},"typeName":{"id":21247,"nodeType":"UserDefinedTypeName","pathNode":{"id":21246,"name":"DummyStorage","nameLocations":["3458:12:73"],"nodeType":"IdentifierPath","referencedDeclaration":20949,"src":"3458:12:73"},"referencedDeclaration":20949,"src":"3458:12:73","typeDescriptions":{"typeIdentifier":"t_struct$_DummyStorage_$20949_storage_ptr","typeString":"struct DummyInvestStrategy.DummyStorage"}},"visibility":"internal"}],"id":21255,"initialValue":{"arguments":[{"id":21251,"name":"params","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":21230,"src":"3496:6:73","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}},{"components":[{"id":21252,"name":"DummyStorage","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":20949,"src":"3505:12:73","typeDescriptions":{"typeIdentifier":"t_type$_t_struct$_DummyStorage_$20949_storage_ptr_$","typeString":"type(struct DummyInvestStrategy.DummyStorage storage pointer)"}}],"id":21253,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"TupleExpression","src":"3504:14:73","typeDescriptions":{"typeIdentifier":"t_type$_t_struct$_DummyStorage_$20949_storage_ptr_$","typeString":"type(struct DummyInvestStrategy.DummyStorage storage pointer)"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"},{"typeIdentifier":"t_type$_t_struct$_DummyStorage_$20949_storage_ptr_$","typeString":"type(struct DummyInvestStrategy.DummyStorage storage pointer)"}],"expression":{"id":21249,"name":"abi","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-1,"src":"3485:3:73","typeDescriptions":{"typeIdentifier":"t_magic_abi","typeString":"abi"}},"id":21250,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberLocation":"3489:6:73","memberName":"decode","nodeType":"MemberAccess","src":"3485:10:73","typeDescriptions":{"typeIdentifier":"t_function_abidecode_pure$__$returns$__$","typeString":"function () pure"}},"id":21254,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"3485:34:73","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_struct$_DummyStorage_$20949_memory_ptr","typeString":"struct DummyInvestStrategy.DummyStorage memory"}},"nodeType":"VariableDeclarationStatement","src":"3458:61:73"},{"expression":{"id":21263,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"expression":{"arguments":[{"id":21259,"name":"storageSlot","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":20930,"src":"3552:11:73","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes32","typeString":"bytes32"}],"expression":{"id":21256,"name":"StorageSlot","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":11032,"src":"3527:11:73","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_StorageSlot_$11032_$","typeString":"type(library StorageSlot)"}},"id":21258,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"3539:12:73","memberName":"getBytesSlot","nodeType":"MemberAccess","referencedDeclaration":11020,"src":"3527:24:73","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_bytes32_$returns$_t_struct$_BytesSlot_$10932_storage_ptr_$","typeString":"function (bytes32) pure returns (struct StorageSlot.BytesSlot storage pointer)"}},"id":21260,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"3527:37:73","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_struct$_BytesSlot_$10932_storage_ptr","typeString":"struct StorageSlot.BytesSlot storage pointer"}},"id":21261,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"memberLocation":"3565:5:73","memberName":"value","nodeType":"MemberAccess","referencedDeclaration":10931,"src":"3527:43:73","typeDescriptions":{"typeIdentifier":"t_bytes_storage","typeString":"bytes storage ref"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"id":21262,"name":"params","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":21230,"src":"3573:6:73","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}},"src":"3527:52:73","typeDescriptions":{"typeIdentifier":"t_bytes_storage","typeString":"bytes storage ref"}},"id":21264,"nodeType":"ExpressionStatement","src":"3527:52:73"},{"eventCall":{"arguments":[{"id":21266,"name":"fail","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":21248,"src":"3600:4:73","typeDescriptions":{"typeIdentifier":"t_struct$_DummyStorage_$20949_memory_ptr","typeString":"struct DummyInvestStrategy.DummyStorage memory"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_struct$_DummyStorage_$20949_memory_ptr","typeString":"struct DummyInvestStrategy.DummyStorage memory"}],"id":21265,"name":"SetFail","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":20970,"src":"3592:7:73","typeDescriptions":{"typeIdentifier":"t_function_event_nonpayable$_t_struct$_DummyStorage_$20949_memory_ptr_$returns$__$","typeString":"function (struct DummyInvestStrategy.DummyStorage memory)"}},"id":21267,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"3592:13:73","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":21268,"nodeType":"EmitStatement","src":"3587:18:73"}]}},{"expression":{"arguments":[{"hexValue":"","id":21273,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"3630:2:73","typeDescriptions":{"typeIdentifier":"t_stringliteral_c5d2460186f7233c927e7db2dcc703c0e500b653ca82273b7bfad8045d85a470","typeString":"literal_string \"\""},"value":""}],"expression":{"argumentTypes":[{"typeIdentifier":"t_stringliteral_c5d2460186f7233c927e7db2dcc703c0e500b653ca82273b7bfad8045d85a470","typeString":"literal_string \"\""}],"id":21272,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"3624:5:73","typeDescriptions":{"typeIdentifier":"t_type$_t_bytes_storage_ptr_$","typeString":"type(bytes storage pointer)"},"typeName":{"id":21271,"name":"bytes","nodeType":"ElementaryTypeName","src":"3624:5:73","typeDescriptions":{}}},"id":21274,"isConstant":false,"isLValue":false,"isPure":true,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"3624:9:73","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}},"functionReturnParameters":21234,"id":21275,"nodeType":"Return","src":"3617:16:73"}]},"functionSelector":"0981b1c2","id":21277,"implemented":true,"kind":"function","modifiers":[],"name":"forwardEntryPoint","nameLocation":"3255:17:73","nodeType":"FunctionDefinition","parameters":{"id":21231,"nodeType":"ParameterList","parameters":[{"constant":false,"id":21228,"mutability":"mutable","name":"method","nameLocation":"3279:6:73","nodeType":"VariableDeclaration","scope":21277,"src":"3273:12:73","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"},"typeName":{"id":21227,"name":"uint8","nodeType":"ElementaryTypeName","src":"3273:5:73","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}},"visibility":"internal"},{"constant":false,"id":21230,"mutability":"mutable","name":"params","nameLocation":"3300:6:73","nodeType":"VariableDeclaration","scope":21277,"src":"3287:19:73","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes"},"typeName":{"id":21229,"name":"bytes","nodeType":"ElementaryTypeName","src":"3287:5:73","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"}],"src":"3272:35:73"},"returnParameters":{"id":21234,"nodeType":"ParameterList","parameters":[{"constant":false,"id":21233,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":21277,"src":"3326:12:73","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes"},"typeName":{"id":21232,"name":"bytes","nodeType":"ElementaryTypeName","src":"3326:5:73","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"}],"src":"3325:14:73"},"scope":21291,"src":"3246:392:73","stateMutability":"nonpayable","virtual":false,"visibility":"external"},{"body":{"id":21289,"nodeType":"Block","src":"3722:48:73","statements":[{"expression":{"arguments":[{"id":21286,"name":"contract_","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":21279,"src":"3755:9:73","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"id":21285,"name":"_getStorageForViews","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":21079,"src":"3735:19:73","typeDescriptions":{"typeIdentifier":"t_function_internal_view$_t_address_$returns$_t_struct$_DummyStorage_$20949_memory_ptr_$","typeString":"function (address) view returns (struct DummyInvestStrategy.DummyStorage memory)"}},"id":21287,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"3735:30:73","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_struct$_DummyStorage_$20949_memory_ptr","typeString":"struct DummyInvestStrategy.DummyStorage memory"}},"functionReturnParameters":21284,"id":21288,"nodeType":"Return","src":"3728:37:73"}]},"functionSelector":"728d6fd8","id":21290,"implemented":true,"kind":"function","modifiers":[],"name":"getFail","nameLocation":"3651:7:73","nodeType":"FunctionDefinition","parameters":{"id":21280,"nodeType":"ParameterList","parameters":[{"constant":false,"id":21279,"mutability":"mutable","name":"contract_","nameLocation":"3667:9:73","nodeType":"VariableDeclaration","scope":21290,"src":"3659:17:73","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":21278,"name":"address","nodeType":"ElementaryTypeName","src":"3659:7:73","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"3658:19:73"},"returnParameters":{"id":21284,"nodeType":"ParameterList","parameters":[{"constant":false,"id":21283,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":21290,"src":"3701:19:73","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_struct$_DummyStorage_$20949_memory_ptr","typeString":"struct DummyInvestStrategy.DummyStorage"},"typeName":{"id":21282,"nodeType":"UserDefinedTypeName","pathNode":{"id":21281,"name":"DummyStorage","nameLocations":["3701:12:73"],"nodeType":"IdentifierPath","referencedDeclaration":20949,"src":"3701:12:73"},"referencedDeclaration":20949,"src":"3701:12:73","typeDescriptions":{"typeIdentifier":"t_struct$_DummyStorage_$20949_storage_ptr","typeString":"struct DummyInvestStrategy.DummyStorage"}},"visibility":"internal"}],"src":"3700:21:73"},"scope":21291,"src":"3642:128:73","stateMutability":"view","virtual":false,"visibility":"external"}],"scope":21292,"src":"622:3150:73","usedErrors":[20936,20938],"usedEvents":[20953,20957,20961,20965,20970]}],"src":"39:3734:73"},"id":73},"contracts/mock/SingleStrategyERC4626.sol":{"ast":{"absolutePath":"contracts/mock/SingleStrategyERC4626.sol","exportedSymbols":{"Address":[10256],"ERC20Upgradeable":[3664],"ERC4626Upgradeable":[4428],"IERC20":[8679],"IERC20Metadata":[9411],"IExposeStorage":[20649],"IInvestStrategy":[20725],"InvestStrategyClient":[15693],"Math":[12726],"SafeERC20":[9866],"SingleStrategyERC4626":[21731],"StorageSlot":[11032],"UUPSUpgradeable":[8086]},"id":21732,"license":"Apache-2.0","nodeType":"SourceUnit","nodes":[{"id":21293,"literals":["solidity","^","0.8",".0"],"nodeType":"PragmaDirective","src":"39:23:74"},{"absolutePath":"@openzeppelin/contracts/token/ERC20/extensions/IERC20Metadata.sol","file":"@openzeppelin/contracts/token/ERC20/extensions/IERC20Metadata.sol","id":21295,"nameLocation":"-1:-1:-1","nodeType":"ImportDirective","scope":21732,"sourceUnit":9412,"src":"64:97:74","symbolAliases":[{"foreign":{"id":21294,"name":"IERC20Metadata","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9411,"src":"72:14:74","typeDescriptions":{}},"nameLocation":"-1:-1:-1"}],"unitAlias":""},{"absolutePath":"@openzeppelin/contracts/token/ERC20/IERC20.sol","file":"@openzeppelin/contracts/token/ERC20/IERC20.sol","id":21297,"nameLocation":"-1:-1:-1","nodeType":"ImportDirective","scope":21732,"sourceUnit":8680,"src":"162:70:74","symbolAliases":[{"foreign":{"id":21296,"name":"IERC20","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8679,"src":"170:6:74","typeDescriptions":{}},"nameLocation":"-1:-1:-1"}],"unitAlias":""},{"absolutePath":"@openzeppelin/contracts/utils/Address.sol","file":"@openzeppelin/contracts/utils/Address.sol","id":21299,"nameLocation":"-1:-1:-1","nodeType":"ImportDirective","scope":21732,"sourceUnit":10257,"src":"233:66:74","symbolAliases":[{"foreign":{"id":21298,"name":"Address","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10256,"src":"241:7:74","typeDescriptions":{}},"nameLocation":"-1:-1:-1"}],"unitAlias":""},{"absolutePath":"@openzeppelin/contracts/utils/StorageSlot.sol","file":"@openzeppelin/contracts/utils/StorageSlot.sol","id":21301,"nameLocation":"-1:-1:-1","nodeType":"ImportDirective","scope":21732,"sourceUnit":11033,"src":"300:74:74","symbolAliases":[{"foreign":{"id":21300,"name":"StorageSlot","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":11032,"src":"308:11:74","typeDescriptions":{}},"nameLocation":"-1:-1:-1"}],"unitAlias":""},{"absolutePath":"@openzeppelin/contracts/token/ERC20/utils/SafeERC20.sol","file":"@openzeppelin/contracts/token/ERC20/utils/SafeERC20.sol","id":21303,"nameLocation":"-1:-1:-1","nodeType":"ImportDirective","scope":21732,"sourceUnit":9867,"src":"375:82:74","symbolAliases":[{"foreign":{"id":21302,"name":"SafeERC20","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9866,"src":"383:9:74","typeDescriptions":{}},"nameLocation":"-1:-1:-1"}],"unitAlias":""},{"absolutePath":"@openzeppelin/contracts/utils/math/Math.sol","file":"@openzeppelin/contracts/utils/math/Math.sol","id":21305,"nameLocation":"-1:-1:-1","nodeType":"ImportDirective","scope":21732,"sourceUnit":12727,"src":"458:65:74","symbolAliases":[{"foreign":{"id":21304,"name":"Math","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":12726,"src":"466:4:74","typeDescriptions":{}},"nameLocation":"-1:-1:-1"}],"unitAlias":""},{"absolutePath":"@openzeppelin/contracts-upgradeable/token/ERC20/extensions/ERC4626Upgradeable.sol","file":"@openzeppelin/contracts-upgradeable/token/ERC20/extensions/ERC4626Upgradeable.sol","id":21307,"nameLocation":"-1:-1:-1","nodeType":"ImportDirective","scope":21732,"sourceUnit":4429,"src":"524:117:74","symbolAliases":[{"foreign":{"id":21306,"name":"ERC4626Upgradeable","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4428,"src":"532:18:74","typeDescriptions":{}},"nameLocation":"-1:-1:-1"}],"unitAlias":""},{"absolutePath":"@openzeppelin/contracts-upgradeable/token/ERC20/ERC20Upgradeable.sol","file":"@openzeppelin/contracts-upgradeable/token/ERC20/ERC20Upgradeable.sol","id":21309,"nameLocation":"-1:-1:-1","nodeType":"ImportDirective","scope":21732,"sourceUnit":3665,"src":"642:102:74","symbolAliases":[{"foreign":{"id":21308,"name":"ERC20Upgradeable","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3664,"src":"650:16:74","typeDescriptions":{}},"nameLocation":"-1:-1:-1"}],"unitAlias":""},{"absolutePath":"@openzeppelin/contracts-upgradeable/proxy/utils/UUPSUpgradeable.sol","file":"@openzeppelin/contracts-upgradeable/proxy/utils/UUPSUpgradeable.sol","id":21311,"nameLocation":"-1:-1:-1","nodeType":"ImportDirective","scope":21732,"sourceUnit":3048,"src":"745:100:74","symbolAliases":[{"foreign":{"id":21310,"name":"UUPSUpgradeable","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8086,"src":"753:15:74","typeDescriptions":{}},"nameLocation":"-1:-1:-1"}],"unitAlias":""},{"absolutePath":"contracts/interfaces/IInvestStrategy.sol","file":"../interfaces/IInvestStrategy.sol","id":21313,"nameLocation":"-1:-1:-1","nodeType":"ImportDirective","scope":21732,"sourceUnit":20726,"src":"846:66:74","symbolAliases":[{"foreign":{"id":21312,"name":"IInvestStrategy","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":20725,"src":"854:15:74","typeDescriptions":{}},"nameLocation":"-1:-1:-1"}],"unitAlias":""},{"absolutePath":"contracts/interfaces/IExposeStorage.sol","file":"../interfaces/IExposeStorage.sol","id":21315,"nameLocation":"-1:-1:-1","nodeType":"ImportDirective","scope":21732,"sourceUnit":20650,"src":"913:64:74","symbolAliases":[{"foreign":{"id":21314,"name":"IExposeStorage","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":20649,"src":"921:14:74","typeDescriptions":{}},"nameLocation":"-1:-1:-1"}],"unitAlias":""},{"absolutePath":"contracts/InvestStrategyClient.sol","file":"../InvestStrategyClient.sol","id":21317,"nameLocation":"-1:-1:-1","nodeType":"ImportDirective","scope":21732,"sourceUnit":15694,"src":"978:65:74","symbolAliases":[{"foreign":{"id":21316,"name":"InvestStrategyClient","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":15693,"src":"986:20:74","typeDescriptions":{}},"nameLocation":"-1:-1:-1"}],"unitAlias":""},{"abstract":false,"baseContracts":[{"baseName":{"id":21319,"name":"ERC4626Upgradeable","nameLocations":["1957:18:74"],"nodeType":"IdentifierPath","referencedDeclaration":4428,"src":"1957:18:74"},"id":21320,"nodeType":"InheritanceSpecifier","src":"1957:18:74"},{"baseName":{"id":21321,"name":"UUPSUpgradeable","nameLocations":["1977:15:74"],"nodeType":"IdentifierPath","referencedDeclaration":8086,"src":"1977:15:74"},"id":21322,"nodeType":"InheritanceSpecifier","src":"1977:15:74"},{"baseName":{"id":21323,"name":"IExposeStorage","nameLocations":["1994:14:74"],"nodeType":"IdentifierPath","referencedDeclaration":20649,"src":"1994:14:74"},"id":21324,"nodeType":"InheritanceSpecifier","src":"1994:14:74"}],"canonicalName":"SingleStrategyERC4626","contractDependencies":[],"contractKind":"contract","documentation":{"id":21318,"nodeType":"StructuredDocumentation","src":"1045:877:74","text":" @title SingleStrategyERC4626\n @dev Vault that invests/deinvests using a pluggable IInvestStrategy on each deposit/withdraw.\n      The vault is permissioned to deposit/withdraw (not transfer). The owner of the shares must have LP_ROLE.\n      Investment strategy can be changed. Also, custom messages can be sent to the IInvestStrategy contract.\n      The code of the IInvestStrategy is called using delegatecall, so it has full control over the assets and\n      storage of this contract, so you must be very careful the kind of IInvestStrategy is plugged.\n WARNING: this contract isn't fully tested and has known errors (lack of access validation on forwardToStrategy),\n          so this is not intended to be used in production. Is just for the purpose of testing strategies.\n @custom:security-contact security@ensuro.co\n @author Ensuro"},"fullyImplemented":true,"id":21731,"linearizedBaseContracts":[21731,20649,8086,7137,4428,7127,3664,7179,9411,8679,4474,7920],"name":"SingleStrategyERC4626","nameLocation":"1932:21:74","nodeType":"ContractDefinition","nodes":[{"global":false,"id":21328,"libraryName":{"id":21325,"name":"SafeERC20","nameLocations":["2019:9:74"],"nodeType":"IdentifierPath","referencedDeclaration":9866,"src":"2019:9:74"},"nodeType":"UsingForDirective","src":"2013:35:74","typeName":{"id":21327,"nodeType":"UserDefinedTypeName","pathNode":{"id":21326,"name":"IERC20Metadata","nameLocations":["2033:14:74"],"nodeType":"IdentifierPath","referencedDeclaration":9411,"src":"2033:14:74"},"referencedDeclaration":9411,"src":"2033:14:74","typeDescriptions":{"typeIdentifier":"t_contract$_IERC20Metadata_$9411","typeString":"contract IERC20Metadata"}}},{"global":false,"id":21331,"libraryName":{"id":21329,"name":"Address","nameLocations":["2057:7:74"],"nodeType":"IdentifierPath","referencedDeclaration":10256,"src":"2057:7:74"},"nodeType":"UsingForDirective","src":"2051:26:74","typeName":{"id":21330,"name":"address","nodeType":"ElementaryTypeName","src":"2069:7:74","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}},{"global":false,"id":21335,"libraryName":{"id":21332,"name":"InvestStrategyClient","nameLocations":["2086:20:74"],"nodeType":"IdentifierPath","referencedDeclaration":15693,"src":"2086:20:74"},"nodeType":"UsingForDirective","src":"2080:47:74","typeName":{"id":21334,"nodeType":"UserDefinedTypeName","pathNode":{"id":21333,"name":"IInvestStrategy","nameLocations":["2111:15:74"],"nodeType":"IdentifierPath","referencedDeclaration":20725,"src":"2111:15:74"},"referencedDeclaration":20725,"src":"2111:15:74","typeDescriptions":{"typeIdentifier":"t_contract$_IInvestStrategy_$20725","typeString":"contract IInvestStrategy"}}},{"constant":false,"id":21338,"mutability":"mutable","name":"_strategy","nameLocation":"2156:9:74","nodeType":"VariableDeclaration","scope":21731,"src":"2131:34:74","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_contract$_IInvestStrategy_$20725","typeString":"contract IInvestStrategy"},"typeName":{"id":21337,"nodeType":"UserDefinedTypeName","pathNode":{"id":21336,"name":"IInvestStrategy","nameLocations":["2131:15:74"],"nodeType":"IdentifierPath","referencedDeclaration":20725,"src":"2131:15:74"},"referencedDeclaration":20725,"src":"2131:15:74","typeDescriptions":{"typeIdentifier":"t_contract$_IInvestStrategy_$20725","typeString":"contract IInvestStrategy"}},"visibility":"internal"},{"anonymous":false,"eventSelector":"254c88e7a2ea123aeeb89b7cc413fb949188fefcdb7584c4f3d493294daf65c5","id":21346,"name":"StrategyChanged","nameLocation":"2261:15:74","nodeType":"EventDefinition","parameters":{"id":21345,"nodeType":"ParameterList","parameters":[{"constant":false,"id":21341,"indexed":false,"mutability":"mutable","name":"oldStrategy","nameLocation":"2293:11:74","nodeType":"VariableDeclaration","scope":21346,"src":"2277:27:74","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_contract$_IInvestStrategy_$20725","typeString":"contract IInvestStrategy"},"typeName":{"id":21340,"nodeType":"UserDefinedTypeName","pathNode":{"id":21339,"name":"IInvestStrategy","nameLocations":["2277:15:74"],"nodeType":"IdentifierPath","referencedDeclaration":20725,"src":"2277:15:74"},"referencedDeclaration":20725,"src":"2277:15:74","typeDescriptions":{"typeIdentifier":"t_contract$_IInvestStrategy_$20725","typeString":"contract IInvestStrategy"}},"visibility":"internal"},{"constant":false,"id":21344,"indexed":false,"mutability":"mutable","name":"newStrategy","nameLocation":"2322:11:74","nodeType":"VariableDeclaration","scope":21346,"src":"2306:27:74","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_contract$_IInvestStrategy_$20725","typeString":"contract IInvestStrategy"},"typeName":{"id":21343,"nodeType":"UserDefinedTypeName","pathNode":{"id":21342,"name":"IInvestStrategy","nameLocations":["2306:15:74"],"nodeType":"IdentifierPath","referencedDeclaration":20725,"src":"2306:15:74"},"referencedDeclaration":20725,"src":"2306:15:74","typeDescriptions":{"typeIdentifier":"t_contract$_IInvestStrategy_$20725","typeString":"contract IInvestStrategy"}},"visibility":"internal"}],"src":"2276:58:74"},"src":"2255:80:74"},{"anonymous":false,"eventSelector":"ad0ad28a12a6ed800f1a7b398454913afe6826c175e6cc28f2e8e2c175b0d728","id":21350,"name":"WithdrawFailed","nameLocation":"2344:14:74","nodeType":"EventDefinition","parameters":{"id":21349,"nodeType":"ParameterList","parameters":[{"constant":false,"id":21348,"indexed":false,"mutability":"mutable","name":"reason","nameLocation":"2365:6:74","nodeType":"VariableDeclaration","scope":21350,"src":"2359:12:74","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes"},"typeName":{"id":21347,"name":"bytes","nodeType":"ElementaryTypeName","src":"2359:5:74","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"}],"src":"2358:14:74"},"src":"2338:35:74"},{"anonymous":false,"eventSelector":"f8e68f23d3b33772e986cc9861e94e8fd6b9461d62bc1fb21cd754bbaf726bd3","id":21354,"name":"DepositFailed","nameLocation":"2382:13:74","nodeType":"EventDefinition","parameters":{"id":21353,"nodeType":"ParameterList","parameters":[{"constant":false,"id":21352,"indexed":false,"mutability":"mutable","name":"reason","nameLocation":"2402:6:74","nodeType":"VariableDeclaration","scope":21354,"src":"2396:12:74","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes"},"typeName":{"id":21351,"name":"bytes","nodeType":"ElementaryTypeName","src":"2396:5:74","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"}],"src":"2395:14:74"},"src":"2376:34:74"},{"anonymous":false,"eventSelector":"9f864ace9f45c2734f9444cb9a0c1ade6f1b15a8c202c17175b759728a4a0bf8","id":21358,"name":"DisconnectFailed","nameLocation":"2419:16:74","nodeType":"EventDefinition","parameters":{"id":21357,"nodeType":"ParameterList","parameters":[{"constant":false,"id":21356,"indexed":false,"mutability":"mutable","name":"reason","nameLocation":"2442:6:74","nodeType":"VariableDeclaration","scope":21358,"src":"2436:12:74","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes"},"typeName":{"id":21355,"name":"bytes","nodeType":"ElementaryTypeName","src":"2436:5:74","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"}],"src":"2435:14:74"},"src":"2413:37:74"},{"errorSelector":"426213ba","id":21360,"name":"OnlyStrategyStorageExposed","nameLocation":"2460:26:74","nodeType":"ErrorDefinition","parameters":{"id":21359,"nodeType":"ParameterList","parameters":[],"src":"2486:2:74"},"src":"2454:35:74"},{"body":{"id":21367,"nodeType":"Block","src":"2558:33:74","statements":[{"expression":{"arguments":[],"expression":{"argumentTypes":[],"id":21364,"name":"_disableInitializers","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7874,"src":"2564:20:74","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$__$returns$__$","typeString":"function ()"}},"id":21365,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"2564:22:74","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":21366,"nodeType":"ExpressionStatement","src":"2564:22:74"}]},"documentation":{"id":21361,"nodeType":"StructuredDocumentation","src":"2493:48:74","text":"@custom:oz-upgrades-unsafe-allow constructor"},"id":21368,"implemented":true,"kind":"constructor","modifiers":[],"name":"","nameLocation":"-1:-1:-1","nodeType":"FunctionDefinition","parameters":{"id":21362,"nodeType":"ParameterList","parameters":[],"src":"2555:2:74"},"returnParameters":{"id":21363,"nodeType":"ParameterList","parameters":[],"src":"2558:0:74"},"scope":21731,"src":"2544:47:74","stateMutability":"nonpayable","virtual":false,"visibility":"public"},{"body":{"id":21394,"nodeType":"Block","src":"3178:92:74","statements":[{"expression":{"arguments":[{"id":21387,"name":"name_","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":21371,"src":"3213:5:74","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"}},{"id":21388,"name":"symbol_","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":21373,"src":"3220:7:74","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"}},{"id":21389,"name":"asset_","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":21376,"src":"3229:6:74","typeDescriptions":{"typeIdentifier":"t_contract$_IERC20_$8679","typeString":"contract IERC20"}},{"id":21390,"name":"strategy_","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":21379,"src":"3237:9:74","typeDescriptions":{"typeIdentifier":"t_contract$_IInvestStrategy_$20725","typeString":"contract IInvestStrategy"}},{"id":21391,"name":"initStrategyData","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":21381,"src":"3248:16:74","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"},{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"},{"typeIdentifier":"t_contract$_IERC20_$8679","typeString":"contract IERC20"},{"typeIdentifier":"t_contract$_IInvestStrategy_$20725","typeString":"contract IInvestStrategy"},{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}],"id":21386,"name":"__SingleStrategyERC4626_init","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":21427,"src":"3184:28:74","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_string_memory_ptr_$_t_string_memory_ptr_$_t_contract$_IERC20_$8679_$_t_contract$_IInvestStrategy_$20725_$_t_bytes_memory_ptr_$returns$__$","typeString":"function (string memory,string memory,contract IERC20,contract IInvestStrategy,bytes memory)"}},"id":21392,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"3184:81:74","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":21393,"nodeType":"ExpressionStatement","src":"3184:81:74"}]},"documentation":{"id":21369,"nodeType":"StructuredDocumentation","src":"2595:392:74","text":" @dev Initializes the SingleStrategyERC4626\n @param name_ Name of the ERC20/ERC4626 token\n @param symbol_ Symbol of the ERC20/ERC4626 token\n @param asset_ The asset() of the ERC4626\n @param strategy_ The IInvestStrategy that will be used to manage the funds received.\n @param initStrategyData Initialization data that will be sent to the IInvestStrategy"},"functionSelector":"effe0e1c","id":21395,"implemented":true,"kind":"function","modifiers":[{"id":21384,"kind":"modifierInvocation","modifierName":{"id":21383,"name":"initializer","nameLocations":["3166:11:74"],"nodeType":"IdentifierPath","referencedDeclaration":7760,"src":"3166:11:74"},"nodeType":"ModifierInvocation","src":"3166:11:74"}],"name":"initialize","nameLocation":"2999:10:74","nodeType":"FunctionDefinition","parameters":{"id":21382,"nodeType":"ParameterList","parameters":[{"constant":false,"id":21371,"mutability":"mutable","name":"name_","nameLocation":"3029:5:74","nodeType":"VariableDeclaration","scope":21395,"src":"3015:19:74","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string"},"typeName":{"id":21370,"name":"string","nodeType":"ElementaryTypeName","src":"3015:6:74","typeDescriptions":{"typeIdentifier":"t_string_storage_ptr","typeString":"string"}},"visibility":"internal"},{"constant":false,"id":21373,"mutability":"mutable","name":"symbol_","nameLocation":"3054:7:74","nodeType":"VariableDeclaration","scope":21395,"src":"3040:21:74","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string"},"typeName":{"id":21372,"name":"string","nodeType":"ElementaryTypeName","src":"3040:6:74","typeDescriptions":{"typeIdentifier":"t_string_storage_ptr","typeString":"string"}},"visibility":"internal"},{"constant":false,"id":21376,"mutability":"mutable","name":"asset_","nameLocation":"3074:6:74","nodeType":"VariableDeclaration","scope":21395,"src":"3067:13:74","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_contract$_IERC20_$8679","typeString":"contract IERC20"},"typeName":{"id":21375,"nodeType":"UserDefinedTypeName","pathNode":{"id":21374,"name":"IERC20","nameLocations":["3067:6:74"],"nodeType":"IdentifierPath","referencedDeclaration":8679,"src":"3067:6:74"},"referencedDeclaration":8679,"src":"3067:6:74","typeDescriptions":{"typeIdentifier":"t_contract$_IERC20_$8679","typeString":"contract IERC20"}},"visibility":"internal"},{"constant":false,"id":21379,"mutability":"mutable","name":"strategy_","nameLocation":"3102:9:74","nodeType":"VariableDeclaration","scope":21395,"src":"3086:25:74","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_contract$_IInvestStrategy_$20725","typeString":"contract IInvestStrategy"},"typeName":{"id":21378,"nodeType":"UserDefinedTypeName","pathNode":{"id":21377,"name":"IInvestStrategy","nameLocations":["3086:15:74"],"nodeType":"IdentifierPath","referencedDeclaration":20725,"src":"3086:15:74"},"referencedDeclaration":20725,"src":"3086:15:74","typeDescriptions":{"typeIdentifier":"t_contract$_IInvestStrategy_$20725","typeString":"contract IInvestStrategy"}},"visibility":"internal"},{"constant":false,"id":21381,"mutability":"mutable","name":"initStrategyData","nameLocation":"3130:16:74","nodeType":"VariableDeclaration","scope":21395,"src":"3117:29:74","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes"},"typeName":{"id":21380,"name":"bytes","nodeType":"ElementaryTypeName","src":"3117:5:74","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"}],"src":"3009:141:74"},"returnParameters":{"id":21385,"nodeType":"ParameterList","parameters":[],"src":"3178:0:74"},"scope":21731,"src":"2990:280:74","stateMutability":"nonpayable","virtual":true,"visibility":"public"},{"body":{"id":21426,"nodeType":"Block","src":"3530:140:74","statements":[{"expression":{"arguments":[{"id":21413,"name":"name_","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":21397,"src":"3549:5:74","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"}},{"id":21414,"name":"symbol_","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":21399,"src":"3556:7:74","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"},{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"}],"id":21412,"name":"__ERC20_init","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3115,"src":"3536:12:74","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_string_memory_ptr_$_t_string_memory_ptr_$returns$__$","typeString":"function (string memory,string memory)"}},"id":21415,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"3536:28:74","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":21416,"nodeType":"ExpressionStatement","src":"3536:28:74"},{"expression":{"arguments":[{"id":21418,"name":"asset_","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":21402,"src":"3585:6:74","typeDescriptions":{"typeIdentifier":"t_contract$_IERC20_$8679","typeString":"contract IERC20"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_contract$_IERC20_$8679","typeString":"contract IERC20"}],"id":21417,"name":"__ERC4626_init","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3762,"src":"3570:14:74","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_contract$_IERC20_$8679_$returns$__$","typeString":"function (contract IERC20)"}},"id":21419,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"3570:22:74","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":21420,"nodeType":"ExpressionStatement","src":"3570:22:74"},{"expression":{"arguments":[{"id":21422,"name":"strategy_","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":21405,"src":"3637:9:74","typeDescriptions":{"typeIdentifier":"t_contract$_IInvestStrategy_$20725","typeString":"contract IInvestStrategy"}},{"id":21423,"name":"initStrategyData","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":21407,"src":"3648:16:74","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_contract$_IInvestStrategy_$20725","typeString":"contract IInvestStrategy"},{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}],"id":21421,"name":"__SingleStrategyERC4626_init_unchained","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":21455,"src":"3598:38:74","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_contract$_IInvestStrategy_$20725_$_t_bytes_memory_ptr_$returns$__$","typeString":"function (contract IInvestStrategy,bytes memory)"}},"id":21424,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"3598:67:74","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":21425,"nodeType":"ExpressionStatement","src":"3598:67:74"}]},"id":21427,"implemented":true,"kind":"function","modifiers":[{"id":21410,"kind":"modifierInvocation","modifierName":{"id":21409,"name":"onlyInitializing","nameLocations":["3513:16:74"],"nodeType":"IdentifierPath","referencedDeclaration":7815,"src":"3513:16:74"},"nodeType":"ModifierInvocation","src":"3513:16:74"}],"name":"__SingleStrategyERC4626_init","nameLocation":"3334:28:74","nodeType":"FunctionDefinition","parameters":{"id":21408,"nodeType":"ParameterList","parameters":[{"constant":false,"id":21397,"mutability":"mutable","name":"name_","nameLocation":"3382:5:74","nodeType":"VariableDeclaration","scope":21427,"src":"3368:19:74","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string"},"typeName":{"id":21396,"name":"string","nodeType":"ElementaryTypeName","src":"3368:6:74","typeDescriptions":{"typeIdentifier":"t_string_storage_ptr","typeString":"string"}},"visibility":"internal"},{"constant":false,"id":21399,"mutability":"mutable","name":"symbol_","nameLocation":"3407:7:74","nodeType":"VariableDeclaration","scope":21427,"src":"3393:21:74","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string"},"typeName":{"id":21398,"name":"string","nodeType":"ElementaryTypeName","src":"3393:6:74","typeDescriptions":{"typeIdentifier":"t_string_storage_ptr","typeString":"string"}},"visibility":"internal"},{"constant":false,"id":21402,"mutability":"mutable","name":"asset_","nameLocation":"3427:6:74","nodeType":"VariableDeclaration","scope":21427,"src":"3420:13:74","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_contract$_IERC20_$8679","typeString":"contract IERC20"},"typeName":{"id":21401,"nodeType":"UserDefinedTypeName","pathNode":{"id":21400,"name":"IERC20","nameLocations":["3420:6:74"],"nodeType":"IdentifierPath","referencedDeclaration":8679,"src":"3420:6:74"},"referencedDeclaration":8679,"src":"3420:6:74","typeDescriptions":{"typeIdentifier":"t_contract$_IERC20_$8679","typeString":"contract IERC20"}},"visibility":"internal"},{"constant":false,"id":21405,"mutability":"mutable","name":"strategy_","nameLocation":"3455:9:74","nodeType":"VariableDeclaration","scope":21427,"src":"3439:25:74","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_contract$_IInvestStrategy_$20725","typeString":"contract IInvestStrategy"},"typeName":{"id":21404,"nodeType":"UserDefinedTypeName","pathNode":{"id":21403,"name":"IInvestStrategy","nameLocations":["3439:15:74"],"nodeType":"IdentifierPath","referencedDeclaration":20725,"src":"3439:15:74"},"referencedDeclaration":20725,"src":"3439:15:74","typeDescriptions":{"typeIdentifier":"t_contract$_IInvestStrategy_$20725","typeString":"contract IInvestStrategy"}},"visibility":"internal"},{"constant":false,"id":21407,"mutability":"mutable","name":"initStrategyData","nameLocation":"3483:16:74","nodeType":"VariableDeclaration","scope":21427,"src":"3470:29:74","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes"},"typeName":{"id":21406,"name":"bytes","nodeType":"ElementaryTypeName","src":"3470:5:74","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"}],"src":"3362:141:74"},"returnParameters":{"id":21411,"nodeType":"ParameterList","parameters":[],"src":"3530:0:74"},"scope":21731,"src":"3325:345:74","stateMutability":"nonpayable","virtual":false,"visibility":"internal"},{"body":{"id":21454,"nodeType":"Block","src":"3869:110:74","statements":[{"expression":{"id":21439,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":21437,"name":"_strategy","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":21338,"src":"3875:9:74","typeDescriptions":{"typeIdentifier":"t_contract$_IInvestStrategy_$20725","typeString":"contract IInvestStrategy"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"id":21438,"name":"strategy_","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":21430,"src":"3887:9:74","typeDescriptions":{"typeIdentifier":"t_contract$_IInvestStrategy_$20725","typeString":"contract IInvestStrategy"}},"src":"3875:21:74","typeDescriptions":{"typeIdentifier":"t_contract$_IInvestStrategy_$20725","typeString":"contract IInvestStrategy"}},"id":21440,"nodeType":"ExpressionStatement","src":"3875:21:74"},{"expression":{"arguments":[{"arguments":[],"expression":{"argumentTypes":[],"id":21444,"name":"asset","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3919,"src":"3923:5:74","typeDescriptions":{"typeIdentifier":"t_function_internal_view$__$returns$_t_address_$","typeString":"function () view returns (address)"}},"id":21445,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"3923:7:74","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"expression":{"id":21441,"name":"strategy_","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":21430,"src":"3902:9:74","typeDescriptions":{"typeIdentifier":"t_contract$_IInvestStrategy_$20725","typeString":"contract IInvestStrategy"}},"id":21443,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"3912:10:74","memberName":"checkAsset","nodeType":"MemberAccess","referencedDeclaration":15555,"src":"3902:20:74","typeDescriptions":{"typeIdentifier":"t_function_internal_view$_t_contract$_IInvestStrategy_$20725_$_t_address_$returns$__$attached_to$_t_contract$_IInvestStrategy_$20725_$","typeString":"function (contract IInvestStrategy,address) view"}},"id":21446,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"3902:29:74","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":21447,"nodeType":"ExpressionStatement","src":"3902:29:74"},{"expression":{"arguments":[{"id":21451,"name":"initStrategyData","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":21432,"src":"3957:16:74","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}],"expression":{"id":21448,"name":"_strategy","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":21338,"src":"3937:9:74","typeDescriptions":{"typeIdentifier":"t_contract$_IInvestStrategy_$20725","typeString":"contract IInvestStrategy"}},"id":21450,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"3947:9:74","memberName":"dcConnect","nodeType":"MemberAccess","referencedDeclaration":15334,"src":"3937:19:74","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_contract$_IInvestStrategy_$20725_$_t_bytes_memory_ptr_$returns$__$attached_to$_t_contract$_IInvestStrategy_$20725_$","typeString":"function (contract IInvestStrategy,bytes memory)"}},"id":21452,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"3937:37:74","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":21453,"nodeType":"ExpressionStatement","src":"3937:37:74"}]},"id":21455,"implemented":true,"kind":"function","modifiers":[{"id":21435,"kind":"modifierInvocation","modifierName":{"id":21434,"name":"onlyInitializing","nameLocations":["3852:16:74"],"nodeType":"IdentifierPath","referencedDeclaration":7815,"src":"3852:16:74"},"nodeType":"ModifierInvocation","src":"3852:16:74"}],"name":"__SingleStrategyERC4626_init_unchained","nameLocation":"3734:38:74","nodeType":"FunctionDefinition","parameters":{"id":21433,"nodeType":"ParameterList","parameters":[{"constant":false,"id":21430,"mutability":"mutable","name":"strategy_","nameLocation":"3794:9:74","nodeType":"VariableDeclaration","scope":21455,"src":"3778:25:74","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_contract$_IInvestStrategy_$20725","typeString":"contract IInvestStrategy"},"typeName":{"id":21429,"nodeType":"UserDefinedTypeName","pathNode":{"id":21428,"name":"IInvestStrategy","nameLocations":["3778:15:74"],"nodeType":"IdentifierPath","referencedDeclaration":20725,"src":"3778:15:74"},"referencedDeclaration":20725,"src":"3778:15:74","typeDescriptions":{"typeIdentifier":"t_contract$_IInvestStrategy_$20725","typeString":"contract IInvestStrategy"}},"visibility":"internal"},{"constant":false,"id":21432,"mutability":"mutable","name":"initStrategyData","nameLocation":"3822:16:74","nodeType":"VariableDeclaration","scope":21455,"src":"3809:29:74","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes"},"typeName":{"id":21431,"name":"bytes","nodeType":"ElementaryTypeName","src":"3809:5:74","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"}],"src":"3772:70:74"},"returnParameters":{"id":21436,"nodeType":"ParameterList","parameters":[],"src":"3869:0:74"},"scope":21731,"src":"3725:254:74","stateMutability":"nonpayable","virtual":false,"visibility":"internal"},{"baseFunctions":[4014],"body":{"id":21475,"nodeType":"Block","src":"4116:77:74","statements":[{"expression":{"arguments":[{"arguments":[],"expression":{"argumentTypes":[],"expression":{"id":21466,"name":"_strategy","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":21338,"src":"4138:9:74","typeDescriptions":{"typeIdentifier":"t_contract$_IInvestStrategy_$20725","typeString":"contract IInvestStrategy"}},"id":21467,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"4148:11:74","memberName":"maxWithdraw","nodeType":"MemberAccess","referencedDeclaration":15692,"src":"4138:21:74","typeDescriptions":{"typeIdentifier":"t_function_internal_view$_t_contract$_IInvestStrategy_$20725_$returns$_t_uint256_$attached_to$_t_contract$_IInvestStrategy_$20725_$","typeString":"function (contract IInvestStrategy) view returns (uint256)"}},"id":21468,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"4138:23:74","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"arguments":[{"id":21471,"name":"owner","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":21458,"src":"4181:5:74","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"expression":{"id":21469,"name":"super","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-25,"src":"4163:5:74","typeDescriptions":{"typeIdentifier":"t_type$_t_super$_SingleStrategyERC4626_$21731_$","typeString":"type(contract super SingleStrategyERC4626)"}},"id":21470,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"4169:11:74","memberName":"maxWithdraw","nodeType":"MemberAccess","referencedDeclaration":4014,"src":"4163:17:74","typeDescriptions":{"typeIdentifier":"t_function_internal_view$_t_address_$returns$_t_uint256_$","typeString":"function (address) view returns (uint256)"}},"id":21472,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"4163:24:74","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"expression":{"id":21464,"name":"Math","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":12726,"src":"4129:4:74","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_Math_$12726_$","typeString":"type(library Math)"}},"id":21465,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"4134:3:74","memberName":"min","nodeType":"MemberAccess","referencedDeclaration":11411,"src":"4129:8:74","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_uint256_$_t_uint256_$returns$_t_uint256_$","typeString":"function (uint256,uint256) pure returns (uint256)"}},"id":21473,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"4129:59:74","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"functionReturnParameters":21463,"id":21474,"nodeType":"Return","src":"4122:66:74"}]},"documentation":{"id":21456,"nodeType":"StructuredDocumentation","src":"3983:47:74","text":" @dev See {IERC4626-maxWithdraw}."},"functionSelector":"ce96cb77","id":21476,"implemented":true,"kind":"function","modifiers":[],"name":"maxWithdraw","nameLocation":"4042:11:74","nodeType":"FunctionDefinition","overrides":{"id":21460,"nodeType":"OverrideSpecifier","overrides":[],"src":"4089:8:74"},"parameters":{"id":21459,"nodeType":"ParameterList","parameters":[{"constant":false,"id":21458,"mutability":"mutable","name":"owner","nameLocation":"4062:5:74","nodeType":"VariableDeclaration","scope":21476,"src":"4054:13:74","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":21457,"name":"address","nodeType":"ElementaryTypeName","src":"4054:7:74","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"4053:15:74"},"returnParameters":{"id":21463,"nodeType":"ParameterList","parameters":[{"constant":false,"id":21462,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":21476,"src":"4107:7:74","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":21461,"name":"uint256","nodeType":"ElementaryTypeName","src":"4107:7:74","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"4106:9:74"},"scope":21731,"src":"4033:160:74","stateMutability":"view","virtual":true,"visibility":"public"},{"baseFunctions":[4027],"body":{"id":21505,"nodeType":"Block","src":"4326:149:74","statements":[{"assignments":[21486],"declarations":[{"constant":false,"id":21486,"mutability":"mutable","name":"maxAssets","nameLocation":"4340:9:74","nodeType":"VariableDeclaration","scope":21505,"src":"4332:17:74","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":21485,"name":"uint256","nodeType":"ElementaryTypeName","src":"4332:7:74","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":21490,"initialValue":{"arguments":[],"expression":{"argumentTypes":[],"expression":{"id":21487,"name":"_strategy","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":21338,"src":"4352:9:74","typeDescriptions":{"typeIdentifier":"t_contract$_IInvestStrategy_$20725","typeString":"contract IInvestStrategy"}},"id":21488,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"4362:11:74","memberName":"maxWithdraw","nodeType":"MemberAccess","referencedDeclaration":15692,"src":"4352:21:74","typeDescriptions":{"typeIdentifier":"t_function_internal_view$_t_contract$_IInvestStrategy_$20725_$returns$_t_uint256_$attached_to$_t_contract$_IInvestStrategy_$20725_$","typeString":"function (contract IInvestStrategy) view returns (uint256)"}},"id":21489,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"4352:23:74","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"VariableDeclarationStatement","src":"4332:43:74"},{"expression":{"arguments":[{"arguments":[{"id":21494,"name":"maxAssets","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":21486,"src":"4414:9:74","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"expression":{"expression":{"id":21495,"name":"Math","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":12726,"src":"4425:4:74","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_Math_$12726_$","typeString":"type(library Math)"}},"id":21496,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"4430:8:74","memberName":"Rounding","nodeType":"MemberAccess","referencedDeclaration":11096,"src":"4425:13:74","typeDescriptions":{"typeIdentifier":"t_type$_t_enum$_Rounding_$11096_$","typeString":"type(enum Math.Rounding)"}},"id":21497,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberLocation":"4439:5:74","memberName":"Floor","nodeType":"MemberAccess","referencedDeclaration":11092,"src":"4425:19:74","typeDescriptions":{"typeIdentifier":"t_enum$_Rounding_$11096","typeString":"enum Math.Rounding"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_enum$_Rounding_$11096","typeString":"enum Math.Rounding"}],"id":21493,"name":"_convertToShares","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4301,"src":"4397:16:74","typeDescriptions":{"typeIdentifier":"t_function_internal_view$_t_uint256_$_t_enum$_Rounding_$11096_$returns$_t_uint256_$","typeString":"function (uint256,enum Math.Rounding) view returns (uint256)"}},"id":21498,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"4397:48:74","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"arguments":[{"id":21501,"name":"owner","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":21479,"src":"4463:5:74","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"expression":{"id":21499,"name":"super","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-25,"src":"4447:5:74","typeDescriptions":{"typeIdentifier":"t_type$_t_super$_SingleStrategyERC4626_$21731_$","typeString":"type(contract super SingleStrategyERC4626)"}},"id":21500,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"4453:9:74","memberName":"maxRedeem","nodeType":"MemberAccess","referencedDeclaration":4027,"src":"4447:15:74","typeDescriptions":{"typeIdentifier":"t_function_internal_view$_t_address_$returns$_t_uint256_$","typeString":"function (address) view returns (uint256)"}},"id":21502,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"4447:22:74","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"expression":{"id":21491,"name":"Math","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":12726,"src":"4388:4:74","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_Math_$12726_$","typeString":"type(library Math)"}},"id":21492,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"4393:3:74","memberName":"min","nodeType":"MemberAccess","referencedDeclaration":11411,"src":"4388:8:74","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_uint256_$_t_uint256_$returns$_t_uint256_$","typeString":"function (uint256,uint256) pure returns (uint256)"}},"id":21503,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"4388:82:74","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"functionReturnParameters":21484,"id":21504,"nodeType":"Return","src":"4381:89:74"}]},"documentation":{"id":21477,"nodeType":"StructuredDocumentation","src":"4197:45:74","text":" @dev See {IERC4626-maxRedeem}."},"functionSelector":"d905777e","id":21506,"implemented":true,"kind":"function","modifiers":[],"name":"maxRedeem","nameLocation":"4254:9:74","nodeType":"FunctionDefinition","overrides":{"id":21481,"nodeType":"OverrideSpecifier","overrides":[],"src":"4299:8:74"},"parameters":{"id":21480,"nodeType":"ParameterList","parameters":[{"constant":false,"id":21479,"mutability":"mutable","name":"owner","nameLocation":"4272:5:74","nodeType":"VariableDeclaration","scope":21506,"src":"4264:13:74","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":21478,"name":"address","nodeType":"ElementaryTypeName","src":"4264:7:74","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"4263:15:74"},"returnParameters":{"id":21484,"nodeType":"ParameterList","parameters":[{"constant":false,"id":21483,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":21506,"src":"4317:7:74","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":21482,"name":"uint256","nodeType":"ElementaryTypeName","src":"4317:7:74","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"4316:9:74"},"scope":21731,"src":"4245:230:74","stateMutability":"view","virtual":true,"visibility":"public"},{"baseFunctions":[3984],"body":{"id":21526,"nodeType":"Block","src":"4610:75:74","statements":[{"expression":{"arguments":[{"arguments":[],"expression":{"argumentTypes":[],"expression":{"id":21517,"name":"_strategy","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":21338,"src":"4632:9:74","typeDescriptions":{"typeIdentifier":"t_contract$_IInvestStrategy_$20725","typeString":"contract IInvestStrategy"}},"id":21518,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"4642:10:74","memberName":"maxDeposit","nodeType":"MemberAccess","referencedDeclaration":15674,"src":"4632:20:74","typeDescriptions":{"typeIdentifier":"t_function_internal_view$_t_contract$_IInvestStrategy_$20725_$returns$_t_uint256_$attached_to$_t_contract$_IInvestStrategy_$20725_$","typeString":"function (contract IInvestStrategy) view returns (uint256)"}},"id":21519,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"4632:22:74","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"arguments":[{"id":21522,"name":"owner","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":21509,"src":"4673:5:74","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"expression":{"id":21520,"name":"super","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-25,"src":"4656:5:74","typeDescriptions":{"typeIdentifier":"t_type$_t_super$_SingleStrategyERC4626_$21731_$","typeString":"type(contract super SingleStrategyERC4626)"}},"id":21521,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"4662:10:74","memberName":"maxDeposit","nodeType":"MemberAccess","referencedDeclaration":3984,"src":"4656:16:74","typeDescriptions":{"typeIdentifier":"t_function_internal_view$_t_address_$returns$_t_uint256_$","typeString":"function (address) view returns (uint256)"}},"id":21523,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"4656:23:74","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"expression":{"id":21515,"name":"Math","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":12726,"src":"4623:4:74","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_Math_$12726_$","typeString":"type(library Math)"}},"id":21516,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"4628:3:74","memberName":"min","nodeType":"MemberAccess","referencedDeclaration":11411,"src":"4623:8:74","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_uint256_$_t_uint256_$returns$_t_uint256_$","typeString":"function (uint256,uint256) pure returns (uint256)"}},"id":21524,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"4623:57:74","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"functionReturnParameters":21514,"id":21525,"nodeType":"Return","src":"4616:64:74"}]},"documentation":{"id":21507,"nodeType":"StructuredDocumentation","src":"4479:46:74","text":" @dev See {IERC4626-maxDeposit}."},"functionSelector":"402d267d","id":21527,"implemented":true,"kind":"function","modifiers":[],"name":"maxDeposit","nameLocation":"4537:10:74","nodeType":"FunctionDefinition","overrides":{"id":21511,"nodeType":"OverrideSpecifier","overrides":[],"src":"4583:8:74"},"parameters":{"id":21510,"nodeType":"ParameterList","parameters":[{"constant":false,"id":21509,"mutability":"mutable","name":"owner","nameLocation":"4556:5:74","nodeType":"VariableDeclaration","scope":21527,"src":"4548:13:74","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":21508,"name":"address","nodeType":"ElementaryTypeName","src":"4548:7:74","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"4547:15:74"},"returnParameters":{"id":21514,"nodeType":"ParameterList","parameters":[{"constant":false,"id":21513,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":21527,"src":"4601:7:74","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":21512,"name":"uint256","nodeType":"ElementaryTypeName","src":"4601:7:74","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"4600:9:74"},"scope":21731,"src":"4528:157:74","stateMutability":"view","virtual":true,"visibility":"public"},{"baseFunctions":[3999],"body":{"id":21556,"nodeType":"Block","src":"4814:146:74","statements":[{"assignments":[21537],"declarations":[{"constant":false,"id":21537,"mutability":"mutable","name":"maxAssets","nameLocation":"4828:9:74","nodeType":"VariableDeclaration","scope":21556,"src":"4820:17:74","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":21536,"name":"uint256","nodeType":"ElementaryTypeName","src":"4820:7:74","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":21541,"initialValue":{"arguments":[],"expression":{"argumentTypes":[],"expression":{"id":21538,"name":"_strategy","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":21338,"src":"4840:9:74","typeDescriptions":{"typeIdentifier":"t_contract$_IInvestStrategy_$20725","typeString":"contract IInvestStrategy"}},"id":21539,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"4850:10:74","memberName":"maxDeposit","nodeType":"MemberAccess","referencedDeclaration":15674,"src":"4840:20:74","typeDescriptions":{"typeIdentifier":"t_function_internal_view$_t_contract$_IInvestStrategy_$20725_$returns$_t_uint256_$attached_to$_t_contract$_IInvestStrategy_$20725_$","typeString":"function (contract IInvestStrategy) view returns (uint256)"}},"id":21540,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"4840:22:74","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"VariableDeclarationStatement","src":"4820:42:74"},{"expression":{"arguments":[{"arguments":[{"id":21545,"name":"maxAssets","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":21537,"src":"4901:9:74","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"expression":{"expression":{"id":21546,"name":"Math","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":12726,"src":"4912:4:74","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_Math_$12726_$","typeString":"type(library Math)"}},"id":21547,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"4917:8:74","memberName":"Rounding","nodeType":"MemberAccess","referencedDeclaration":11096,"src":"4912:13:74","typeDescriptions":{"typeIdentifier":"t_type$_t_enum$_Rounding_$11096_$","typeString":"type(enum Math.Rounding)"}},"id":21548,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberLocation":"4926:5:74","memberName":"Floor","nodeType":"MemberAccess","referencedDeclaration":11092,"src":"4912:19:74","typeDescriptions":{"typeIdentifier":"t_enum$_Rounding_$11096","typeString":"enum Math.Rounding"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_enum$_Rounding_$11096","typeString":"enum Math.Rounding"}],"id":21544,"name":"_convertToShares","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4301,"src":"4884:16:74","typeDescriptions":{"typeIdentifier":"t_function_internal_view$_t_uint256_$_t_enum$_Rounding_$11096_$returns$_t_uint256_$","typeString":"function (uint256,enum Math.Rounding) view returns (uint256)"}},"id":21549,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"4884:48:74","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"arguments":[{"id":21552,"name":"owner","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":21530,"src":"4948:5:74","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"expression":{"id":21550,"name":"super","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-25,"src":"4934:5:74","typeDescriptions":{"typeIdentifier":"t_type$_t_super$_SingleStrategyERC4626_$21731_$","typeString":"type(contract super SingleStrategyERC4626)"}},"id":21551,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"4940:7:74","memberName":"maxMint","nodeType":"MemberAccess","referencedDeclaration":3999,"src":"4934:13:74","typeDescriptions":{"typeIdentifier":"t_function_internal_view$_t_address_$returns$_t_uint256_$","typeString":"function (address) view returns (uint256)"}},"id":21553,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"4934:20:74","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"expression":{"id":21542,"name":"Math","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":12726,"src":"4875:4:74","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_Math_$12726_$","typeString":"type(library Math)"}},"id":21543,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"4880:3:74","memberName":"min","nodeType":"MemberAccess","referencedDeclaration":11411,"src":"4875:8:74","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_uint256_$_t_uint256_$returns$_t_uint256_$","typeString":"function (uint256,uint256) pure returns (uint256)"}},"id":21554,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"4875:80:74","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"functionReturnParameters":21535,"id":21555,"nodeType":"Return","src":"4868:87:74"}]},"documentation":{"id":21528,"nodeType":"StructuredDocumentation","src":"4689:43:74","text":" @dev See {IERC4626-maxMint}."},"functionSelector":"c63d75b6","id":21557,"implemented":true,"kind":"function","modifiers":[],"name":"maxMint","nameLocation":"4744:7:74","nodeType":"FunctionDefinition","overrides":{"id":21532,"nodeType":"OverrideSpecifier","overrides":[],"src":"4787:8:74"},"parameters":{"id":21531,"nodeType":"ParameterList","parameters":[{"constant":false,"id":21530,"mutability":"mutable","name":"owner","nameLocation":"4760:5:74","nodeType":"VariableDeclaration","scope":21557,"src":"4752:13:74","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":21529,"name":"address","nodeType":"ElementaryTypeName","src":"4752:7:74","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"4751:15:74"},"returnParameters":{"id":21535,"nodeType":"ParameterList","parameters":[{"constant":false,"id":21534,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":21557,"src":"4805:7:74","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":21533,"name":"uint256","nodeType":"ElementaryTypeName","src":"4805:7:74","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"4804:9:74"},"scope":21731,"src":"4735:225:74","stateMutability":"view","virtual":true,"visibility":"public"},{"baseFunctions":[3937],"body":{"id":21568,"nodeType":"Block","src":"5091:41:74","statements":[{"expression":{"arguments":[],"expression":{"argumentTypes":[],"expression":{"id":21564,"name":"_strategy","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":21338,"src":"5104:9:74","typeDescriptions":{"typeIdentifier":"t_contract$_IInvestStrategy_$20725","typeString":"contract IInvestStrategy"}},"id":21565,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"5114:11:74","memberName":"totalAssets","nodeType":"MemberAccess","referencedDeclaration":15656,"src":"5104:21:74","typeDescriptions":{"typeIdentifier":"t_function_internal_view$_t_contract$_IInvestStrategy_$20725_$returns$_t_uint256_$attached_to$_t_contract$_IInvestStrategy_$20725_$","typeString":"function (contract IInvestStrategy) view returns (uint256)"}},"id":21566,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"5104:23:74","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"functionReturnParameters":21563,"id":21567,"nodeType":"Return","src":"5097:30:74"}]},"documentation":{"id":21558,"nodeType":"StructuredDocumentation","src":"4964:47:74","text":" @dev See {IERC4626-totalAssets}."},"functionSelector":"01e1d114","id":21569,"implemented":true,"kind":"function","modifiers":[],"name":"totalAssets","nameLocation":"5023:11:74","nodeType":"FunctionDefinition","overrides":{"id":21560,"nodeType":"OverrideSpecifier","overrides":[],"src":"5057:8:74"},"parameters":{"id":21559,"nodeType":"ParameterList","parameters":[],"src":"5034:2:74"},"returnParameters":{"id":21563,"nodeType":"ParameterList","parameters":[{"constant":false,"id":21562,"mutability":"mutable","name":"assets","nameLocation":"5083:6:74","nodeType":"VariableDeclaration","scope":21569,"src":"5075:14:74","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":21561,"name":"uint256","nodeType":"ElementaryTypeName","src":"5075:7:74","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"5074:16:74"},"scope":21731,"src":"5014:118:74","stateMutability":"view","virtual":true,"visibility":"public"},{"baseFunctions":[4419],"body":{"id":21600,"nodeType":"Block","src":"5286:108:74","statements":[{"expression":{"arguments":[{"id":21586,"name":"assets","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":21577,"src":"5313:6:74","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"hexValue":"66616c7365","id":21587,"isConstant":false,"isLValue":false,"isPure":true,"kind":"bool","lValueRequested":false,"nodeType":"Literal","src":"5321:5:74","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"value":"false"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_bool","typeString":"bool"}],"expression":{"id":21583,"name":"_strategy","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":21338,"src":"5292:9:74","typeDescriptions":{"typeIdentifier":"t_contract$_IInvestStrategy_$20725","typeString":"contract IInvestStrategy"}},"id":21585,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"5302:10:74","memberName":"dcWithdraw","nodeType":"MemberAccess","referencedDeclaration":15444,"src":"5292:20:74","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_contract$_IInvestStrategy_$20725_$_t_uint256_$_t_bool_$returns$_t_bool_$attached_to$_t_contract$_IInvestStrategy_$20725_$","typeString":"function (contract IInvestStrategy,uint256,bool) returns (bool)"}},"id":21588,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"5292:35:74","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":21589,"nodeType":"ExpressionStatement","src":"5292:35:74"},{"expression":{"arguments":[{"id":21593,"name":"caller","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":21571,"src":"5349:6:74","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":21594,"name":"receiver","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":21573,"src":"5357:8:74","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":21595,"name":"owner","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":21575,"src":"5367:5:74","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":21596,"name":"assets","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":21577,"src":"5374:6:74","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"id":21597,"name":"shares","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":21579,"src":"5382:6:74","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"}],"expression":{"id":21590,"name":"super","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-25,"src":"5333:5:74","typeDescriptions":{"typeIdentifier":"t_type$_t_super$_SingleStrategyERC4626_$21731_$","typeString":"type(contract super SingleStrategyERC4626)"}},"id":21592,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"5339:9:74","memberName":"_withdraw","nodeType":"MemberAccess","referencedDeclaration":4419,"src":"5333:15:74","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_address_$_t_address_$_t_address_$_t_uint256_$_t_uint256_$returns$__$","typeString":"function (address,address,address,uint256,uint256)"}},"id":21598,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"5333:56:74","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":21599,"nodeType":"ExpressionStatement","src":"5333:56:74"}]},"id":21601,"implemented":true,"kind":"function","modifiers":[],"name":"_withdraw","nameLocation":"5145:9:74","nodeType":"FunctionDefinition","overrides":{"id":21581,"nodeType":"OverrideSpecifier","overrides":[],"src":"5277:8:74"},"parameters":{"id":21580,"nodeType":"ParameterList","parameters":[{"constant":false,"id":21571,"mutability":"mutable","name":"caller","nameLocation":"5168:6:74","nodeType":"VariableDeclaration","scope":21601,"src":"5160:14:74","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":21570,"name":"address","nodeType":"ElementaryTypeName","src":"5160:7:74","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":21573,"mutability":"mutable","name":"receiver","nameLocation":"5188:8:74","nodeType":"VariableDeclaration","scope":21601,"src":"5180:16:74","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":21572,"name":"address","nodeType":"ElementaryTypeName","src":"5180:7:74","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":21575,"mutability":"mutable","name":"owner","nameLocation":"5210:5:74","nodeType":"VariableDeclaration","scope":21601,"src":"5202:13:74","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":21574,"name":"address","nodeType":"ElementaryTypeName","src":"5202:7:74","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":21577,"mutability":"mutable","name":"assets","nameLocation":"5229:6:74","nodeType":"VariableDeclaration","scope":21601,"src":"5221:14:74","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":21576,"name":"uint256","nodeType":"ElementaryTypeName","src":"5221:7:74","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":21579,"mutability":"mutable","name":"shares","nameLocation":"5249:6:74","nodeType":"VariableDeclaration","scope":21601,"src":"5241:14:74","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":21578,"name":"uint256","nodeType":"ElementaryTypeName","src":"5241:7:74","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"5154:105:74"},"returnParameters":{"id":21582,"nodeType":"ParameterList","parameters":[],"src":"5286:0:74"},"scope":21731,"src":"5136:258:74","stateMutability":"nonpayable","virtual":true,"visibility":"internal"},{"baseFunctions":[4369],"body":{"id":21629,"nodeType":"Block","src":"5508:168:74","statements":[{"expression":{"arguments":[{"id":21616,"name":"caller","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":21603,"src":"5598:6:74","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":21617,"name":"receiver","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":21605,"src":"5606:8:74","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":21618,"name":"assets","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":21607,"src":"5616:6:74","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"id":21619,"name":"shares","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":21609,"src":"5624:6:74","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":21613,"name":"super","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-25,"src":"5583:5:74","typeDescriptions":{"typeIdentifier":"t_type$_t_super$_SingleStrategyERC4626_$21731_$","typeString":"type(contract super SingleStrategyERC4626)"}},"id":21615,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"5589:8:74","memberName":"_deposit","nodeType":"MemberAccess","referencedDeclaration":4369,"src":"5583:14:74","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_address_$_t_address_$_t_uint256_$_t_uint256_$returns$__$","typeString":"function (address,address,uint256,uint256)"}},"id":21620,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"5583:48:74","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":21621,"nodeType":"ExpressionStatement","src":"5583:48:74"},{"expression":{"arguments":[{"id":21625,"name":"assets","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":21607,"src":"5657:6:74","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"hexValue":"66616c7365","id":21626,"isConstant":false,"isLValue":false,"isPure":true,"kind":"bool","lValueRequested":false,"nodeType":"Literal","src":"5665:5:74","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"value":"false"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_bool","typeString":"bool"}],"expression":{"id":21622,"name":"_strategy","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":21338,"src":"5637:9:74","typeDescriptions":{"typeIdentifier":"t_contract$_IInvestStrategy_$20725","typeString":"contract IInvestStrategy"}},"id":21624,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"5647:9:74","memberName":"dcDeposit","nodeType":"MemberAccess","referencedDeclaration":15503,"src":"5637:19:74","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_contract$_IInvestStrategy_$20725_$_t_uint256_$_t_bool_$returns$_t_bool_$attached_to$_t_contract$_IInvestStrategy_$20725_$","typeString":"function (contract IInvestStrategy,uint256,bool) returns (bool)"}},"id":21627,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"5637:34:74","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":21628,"nodeType":"ExpressionStatement","src":"5637:34:74"}]},"id":21630,"implemented":true,"kind":"function","modifiers":[],"name":"_deposit","nameLocation":"5407:8:74","nodeType":"FunctionDefinition","overrides":{"id":21611,"nodeType":"OverrideSpecifier","overrides":[],"src":"5499:8:74"},"parameters":{"id":21610,"nodeType":"ParameterList","parameters":[{"constant":false,"id":21603,"mutability":"mutable","name":"caller","nameLocation":"5424:6:74","nodeType":"VariableDeclaration","scope":21630,"src":"5416:14:74","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":21602,"name":"address","nodeType":"ElementaryTypeName","src":"5416:7:74","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":21605,"mutability":"mutable","name":"receiver","nameLocation":"5440:8:74","nodeType":"VariableDeclaration","scope":21630,"src":"5432:16:74","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":21604,"name":"address","nodeType":"ElementaryTypeName","src":"5432:7:74","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":21607,"mutability":"mutable","name":"assets","nameLocation":"5458:6:74","nodeType":"VariableDeclaration","scope":21630,"src":"5450:14:74","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":21606,"name":"uint256","nodeType":"ElementaryTypeName","src":"5450:7:74","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":21609,"mutability":"mutable","name":"shares","nameLocation":"5474:6:74","nodeType":"VariableDeclaration","scope":21630,"src":"5466:14:74","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":21608,"name":"uint256","nodeType":"ElementaryTypeName","src":"5466:7:74","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"5415:66:74"},"returnParameters":{"id":21612,"nodeType":"ParameterList","parameters":[],"src":"5508:0:74"},"scope":21731,"src":"5398:278:74","stateMutability":"nonpayable","virtual":true,"visibility":"internal"},{"baseFunctions":[20648],"body":{"id":21661,"nodeType":"Block","src":"5952:173:74","statements":[{"condition":{"commonType":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"id":21643,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":21639,"name":"slot","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":21633,"src":"5962:4:74","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"nodeType":"BinaryOperation","operator":"!=","rightExpression":{"arguments":[],"expression":{"argumentTypes":[],"expression":{"id":21640,"name":"_strategy","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":21338,"src":"5970:9:74","typeDescriptions":{"typeIdentifier":"t_contract$_IInvestStrategy_$20725","typeString":"contract IInvestStrategy"}},"id":21641,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"5980:11:74","memberName":"storageSlot","nodeType":"MemberAccess","referencedDeclaration":20724,"src":"5970:21:74","typeDescriptions":{"typeIdentifier":"t_function_external_view$__$returns$_t_bytes32_$","typeString":"function () view external returns (bytes32)"}},"id":21642,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"5970:23:74","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"src":"5962:31:74","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":21647,"nodeType":"IfStatement","src":"5958:72:74","trueBody":{"errorCall":{"arguments":[],"expression":{"argumentTypes":[],"id":21644,"name":"OnlyStrategyStorageExposed","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":21360,"src":"6002:26:74","typeDescriptions":{"typeIdentifier":"t_function_error_pure$__$returns$_t_error_$","typeString":"function () pure returns (error)"}},"id":21645,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"6002:28:74","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_error","typeString":"error"}},"id":21646,"nodeType":"RevertStatement","src":"5995:35:74"}},{"assignments":[21652],"declarations":[{"constant":false,"id":21652,"mutability":"mutable","name":"r","nameLocation":"6066:1:74","nodeType":"VariableDeclaration","scope":21661,"src":"6036:31:74","stateVariable":false,"storageLocation":"storage","typeDescriptions":{"typeIdentifier":"t_struct$_BytesSlot_$10932_storage_ptr","typeString":"struct StorageSlot.BytesSlot"},"typeName":{"id":21651,"nodeType":"UserDefinedTypeName","pathNode":{"id":21650,"name":"StorageSlot.BytesSlot","nameLocations":["6036:11:74","6048:9:74"],"nodeType":"IdentifierPath","referencedDeclaration":10932,"src":"6036:21:74"},"referencedDeclaration":10932,"src":"6036:21:74","typeDescriptions":{"typeIdentifier":"t_struct$_BytesSlot_$10932_storage_ptr","typeString":"struct StorageSlot.BytesSlot"}},"visibility":"internal"}],"id":21657,"initialValue":{"arguments":[{"id":21655,"name":"slot","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":21633,"src":"6095:4:74","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes32","typeString":"bytes32"}],"expression":{"id":21653,"name":"StorageSlot","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":11032,"src":"6070:11:74","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_StorageSlot_$11032_$","typeString":"type(library StorageSlot)"}},"id":21654,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"6082:12:74","memberName":"getBytesSlot","nodeType":"MemberAccess","referencedDeclaration":11020,"src":"6070:24:74","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_bytes32_$returns$_t_struct$_BytesSlot_$10932_storage_ptr_$","typeString":"function (bytes32) pure returns (struct StorageSlot.BytesSlot storage pointer)"}},"id":21656,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"6070:30:74","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_struct$_BytesSlot_$10932_storage_ptr","typeString":"struct StorageSlot.BytesSlot storage pointer"}},"nodeType":"VariableDeclarationStatement","src":"6036:64:74"},{"expression":{"expression":{"id":21658,"name":"r","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":21652,"src":"6113:1:74","typeDescriptions":{"typeIdentifier":"t_struct$_BytesSlot_$10932_storage_ptr","typeString":"struct StorageSlot.BytesSlot storage pointer"}},"id":21659,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"6115:5:74","memberName":"value","nodeType":"MemberAccess","referencedDeclaration":10931,"src":"6113:7:74","typeDescriptions":{"typeIdentifier":"t_bytes_storage","typeString":"bytes storage ref"}},"functionReturnParameters":21638,"id":21660,"nodeType":"Return","src":"6106:14:74"}]},"documentation":{"id":21631,"nodeType":"StructuredDocumentation","src":"5680:187:74","text":" @dev Exposes a given slot as a bytes array. To be used by the IInvestStrategy views to access their storage.\n      Only the slot==strategyStorageSlot() can be accessed."},"functionSelector":"47e57533","id":21662,"implemented":true,"kind":"function","modifiers":[],"name":"getBytesSlot","nameLocation":"5879:12:74","nodeType":"FunctionDefinition","overrides":{"id":21635,"nodeType":"OverrideSpecifier","overrides":[],"src":"5920:8:74"},"parameters":{"id":21634,"nodeType":"ParameterList","parameters":[{"constant":false,"id":21633,"mutability":"mutable","name":"slot","nameLocation":"5900:4:74","nodeType":"VariableDeclaration","scope":21662,"src":"5892:12:74","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":21632,"name":"bytes32","nodeType":"ElementaryTypeName","src":"5892:7:74","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"}],"src":"5891:14:74"},"returnParameters":{"id":21638,"nodeType":"ParameterList","parameters":[{"constant":false,"id":21637,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":21662,"src":"5938:12:74","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes"},"typeName":{"id":21636,"name":"bytes","nodeType":"ElementaryTypeName","src":"5938:5:74","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"}],"src":"5937:14:74"},"scope":21731,"src":"5870:255:74","stateMutability":"view","virtual":false,"visibility":"external"},{"body":{"id":21678,"nodeType":"Block","src":"6735:56:74","statements":[{"expression":{"arguments":[{"id":21674,"name":"method","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":21665,"src":"6768:6:74","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}},{"id":21675,"name":"extraData","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":21667,"src":"6776:9:74","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint8","typeString":"uint8"},{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}],"expression":{"id":21672,"name":"_strategy","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":21338,"src":"6748:9:74","typeDescriptions":{"typeIdentifier":"t_contract$_IInvestStrategy_$20725","typeString":"contract IInvestStrategy"}},"id":21673,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"6758:9:74","memberName":"dcForward","nodeType":"MemberAccess","referencedDeclaration":15532,"src":"6748:19:74","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_contract$_IInvestStrategy_$20725_$_t_uint8_$_t_bytes_memory_ptr_$returns$_t_bytes_memory_ptr_$attached_to$_t_contract$_IInvestStrategy_$20725_$","typeString":"function (contract IInvestStrategy,uint8,bytes memory) returns (bytes memory)"}},"id":21676,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"6748:38:74","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}},"functionReturnParameters":21671,"id":21677,"nodeType":"Return","src":"6741:45:74"}]},"documentation":{"id":21663,"nodeType":"StructuredDocumentation","src":"6129:506:74","text":" @dev Used to call specific methods on the strategies. Anyone can call this method, is responsability of the\n      IInvestStrategy to check access permissions when needed.\n @param method Id of the method to call. Is recommended that the strategy defines an enum with the methods that\n               can be called externally and validates this value.\n @param extraData Additional parameters sent to the method.\n @return Returns the output received from the IInvestStrategy."},"functionSelector":"d4f39110","id":21679,"implemented":true,"kind":"function","modifiers":[],"name":"forwardToStrategy","nameLocation":"6647:17:74","nodeType":"FunctionDefinition","parameters":{"id":21668,"nodeType":"ParameterList","parameters":[{"constant":false,"id":21665,"mutability":"mutable","name":"method","nameLocation":"6671:6:74","nodeType":"VariableDeclaration","scope":21679,"src":"6665:12:74","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"},"typeName":{"id":21664,"name":"uint8","nodeType":"ElementaryTypeName","src":"6665:5:74","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}},"visibility":"internal"},{"constant":false,"id":21667,"mutability":"mutable","name":"extraData","nameLocation":"6692:9:74","nodeType":"VariableDeclaration","scope":21679,"src":"6679:22:74","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes"},"typeName":{"id":21666,"name":"bytes","nodeType":"ElementaryTypeName","src":"6679:5:74","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"}],"src":"6664:38:74"},"returnParameters":{"id":21671,"nodeType":"ParameterList","parameters":[{"constant":false,"id":21670,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":21679,"src":"6721:12:74","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes"},"typeName":{"id":21669,"name":"bytes","nodeType":"ElementaryTypeName","src":"6721:5:74","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"}],"src":"6720:14:74"},"scope":21731,"src":"6638:153:74","stateMutability":"nonpayable","virtual":false,"visibility":"external"},{"body":{"id":21707,"nodeType":"Block","src":"7622:149:74","statements":[{"expression":{"arguments":[{"id":21693,"name":"_strategy","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":21338,"src":"7664:9:74","typeDescriptions":{"typeIdentifier":"t_contract$_IInvestStrategy_$20725","typeString":"contract IInvestStrategy"}},{"id":21694,"name":"newStrategy","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":21683,"src":"7675:11:74","typeDescriptions":{"typeIdentifier":"t_contract$_IInvestStrategy_$20725","typeString":"contract IInvestStrategy"}},{"id":21695,"name":"initStrategyData","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":21685,"src":"7688:16:74","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}},{"arguments":[{"arguments":[],"expression":{"argumentTypes":[],"id":21697,"name":"asset","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3919,"src":"7721:5:74","typeDescriptions":{"typeIdentifier":"t_function_internal_view$__$returns$_t_address_$","typeString":"function () view returns (address)"}},"id":21698,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"7721:7:74","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"id":21696,"name":"IERC20Metadata","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9411,"src":"7706:14:74","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_IERC20Metadata_$9411_$","typeString":"type(contract IERC20Metadata)"}},"id":21699,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"7706:23:74","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_contract$_IERC20Metadata_$9411","typeString":"contract IERC20Metadata"}},{"id":21700,"name":"force","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":21687,"src":"7731:5:74","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_contract$_IInvestStrategy_$20725","typeString":"contract IInvestStrategy"},{"typeIdentifier":"t_contract$_IInvestStrategy_$20725","typeString":"contract IInvestStrategy"},{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"},{"typeIdentifier":"t_contract$_IERC20Metadata_$9411","typeString":"contract IERC20Metadata"},{"typeIdentifier":"t_bool","typeString":"bool"}],"expression":{"id":21690,"name":"InvestStrategyClient","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":15693,"src":"7628:20:74","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_InvestStrategyClient_$15693_$","typeString":"type(library InvestStrategyClient)"}},"id":21692,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"7649:14:74","memberName":"strategyChange","nodeType":"MemberAccess","referencedDeclaration":15620,"src":"7628:35:74","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_contract$_IInvestStrategy_$20725_$_t_contract$_IInvestStrategy_$20725_$_t_bytes_memory_ptr_$_t_contract$_IERC20Metadata_$9411_$_t_bool_$returns$__$","typeString":"function (contract IInvestStrategy,contract IInvestStrategy,bytes memory,contract IERC20Metadata,bool)"}},"id":21701,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"7628:109:74","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":21702,"nodeType":"ExpressionStatement","src":"7628:109:74"},{"expression":{"id":21705,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":21703,"name":"_strategy","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":21338,"src":"7743:9:74","typeDescriptions":{"typeIdentifier":"t_contract$_IInvestStrategy_$20725","typeString":"contract IInvestStrategy"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"id":21704,"name":"newStrategy","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":21683,"src":"7755:11:74","typeDescriptions":{"typeIdentifier":"t_contract$_IInvestStrategy_$20725","typeString":"contract IInvestStrategy"}},"src":"7743:23:74","typeDescriptions":{"typeIdentifier":"t_contract$_IInvestStrategy_$20725","typeString":"contract IInvestStrategy"}},"id":21706,"nodeType":"ExpressionStatement","src":"7743:23:74"}]},"documentation":{"id":21680,"nodeType":"StructuredDocumentation","src":"6795:722:74","text":" @dev Changes the current investment strategy to a new one. When this happens, all funds are withdrawn from the\n      old strategy and deposited on the new one. This reverts if any of this fails, unless the force parameter is\n      true, in that case errors in withdrawal or deposit are silented.\n @param newStrategy The new strategy to plug into the vault\n @param initStrategyData Initialization parameters for this new strategy\n @param force Boolean to indicate if errors on withdraw or deposit should be accepted. Normally you should send\n              this value in `false`. Only use `true` if you know what you are doing and trying to replace a faulty\n              strategy."},"functionSelector":"d9221bb5","id":21708,"implemented":true,"kind":"function","modifiers":[],"name":"setStrategy","nameLocation":"7529:11:74","nodeType":"FunctionDefinition","parameters":{"id":21688,"nodeType":"ParameterList","parameters":[{"constant":false,"id":21683,"mutability":"mutable","name":"newStrategy","nameLocation":"7557:11:74","nodeType":"VariableDeclaration","scope":21708,"src":"7541:27:74","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_contract$_IInvestStrategy_$20725","typeString":"contract IInvestStrategy"},"typeName":{"id":21682,"nodeType":"UserDefinedTypeName","pathNode":{"id":21681,"name":"IInvestStrategy","nameLocations":["7541:15:74"],"nodeType":"IdentifierPath","referencedDeclaration":20725,"src":"7541:15:74"},"referencedDeclaration":20725,"src":"7541:15:74","typeDescriptions":{"typeIdentifier":"t_contract$_IInvestStrategy_$20725","typeString":"contract IInvestStrategy"}},"visibility":"internal"},{"constant":false,"id":21685,"mutability":"mutable","name":"initStrategyData","nameLocation":"7583:16:74","nodeType":"VariableDeclaration","scope":21708,"src":"7570:29:74","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes"},"typeName":{"id":21684,"name":"bytes","nodeType":"ElementaryTypeName","src":"7570:5:74","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"},{"constant":false,"id":21687,"mutability":"mutable","name":"force","nameLocation":"7606:5:74","nodeType":"VariableDeclaration","scope":21708,"src":"7601:10:74","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":21686,"name":"bool","nodeType":"ElementaryTypeName","src":"7601:4:74","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"}],"src":"7540:72:74"},"returnParameters":{"id":21689,"nodeType":"ParameterList","parameters":[],"src":"7622:0:74"},"scope":21731,"src":"7520:251:74","stateMutability":"nonpayable","virtual":false,"visibility":"external"},{"body":{"id":21717,"nodeType":"Block","src":"7912:27:74","statements":[{"expression":{"id":21715,"name":"_strategy","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":21338,"src":"7925:9:74","typeDescriptions":{"typeIdentifier":"t_contract$_IInvestStrategy_$20725","typeString":"contract IInvestStrategy"}},"functionReturnParameters":21714,"id":21716,"nodeType":"Return","src":"7918:16:74"}]},"documentation":{"id":21709,"nodeType":"StructuredDocumentation","src":"7775:74:74","text":" @dev Returns the current strategy plugged into the contract"},"functionSelector":"a8c62e76","id":21718,"implemented":true,"kind":"function","modifiers":[],"name":"strategy","nameLocation":"7861:8:74","nodeType":"FunctionDefinition","parameters":{"id":21710,"nodeType":"ParameterList","parameters":[],"src":"7869:2:74"},"returnParameters":{"id":21714,"nodeType":"ParameterList","parameters":[{"constant":false,"id":21713,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":21718,"src":"7895:15:74","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_contract$_IInvestStrategy_$20725","typeString":"contract IInvestStrategy"},"typeName":{"id":21712,"nodeType":"UserDefinedTypeName","pathNode":{"id":21711,"name":"IInvestStrategy","nameLocations":["7895:15:74"],"nodeType":"IdentifierPath","referencedDeclaration":20725,"src":"7895:15:74"},"referencedDeclaration":20725,"src":"7895:15:74","typeDescriptions":{"typeIdentifier":"t_contract$_IInvestStrategy_$20725","typeString":"contract IInvestStrategy"}},"visibility":"internal"}],"src":"7894:17:74"},"scope":21731,"src":"7852:87:74","stateMutability":"view","virtual":false,"visibility":"external"},{"baseFunctions":[8040],"body":{"id":21724,"nodeType":"Block","src":"8015:2:74","statements":[]},"id":21725,"implemented":true,"kind":"function","modifiers":[],"name":"_authorizeUpgrade","nameLocation":"7952:17:74","nodeType":"FunctionDefinition","overrides":{"id":21722,"nodeType":"OverrideSpecifier","overrides":[],"src":"8006:8:74"},"parameters":{"id":21721,"nodeType":"ParameterList","parameters":[{"constant":false,"id":21720,"mutability":"mutable","name":"newImplementation","nameLocation":"7978:17:74","nodeType":"VariableDeclaration","scope":21725,"src":"7970:25:74","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":21719,"name":"address","nodeType":"ElementaryTypeName","src":"7970:7:74","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"7969:27:74"},"returnParameters":{"id":21723,"nodeType":"ParameterList","parameters":[],"src":"8015:0:74"},"scope":21731,"src":"7943:74:74","stateMutability":"nonpayable","virtual":false,"visibility":"internal"},{"constant":false,"documentation":{"id":21726,"nodeType":"StructuredDocumentation","src":"8021:246:74","text":" @dev This empty reserved space is put in place to allow future versions to add new\n variables without shifting down storage in the inheritance chain.\n See https://docs.openzeppelin.com/contracts/4.x/upgradeable#storage_gaps"},"id":21730,"mutability":"mutable","name":"__gap","nameLocation":"8290:5:74","nodeType":"VariableDeclaration","scope":21731,"src":"8270:25:74","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$49_storage","typeString":"uint256[49]"},"typeName":{"baseType":{"id":21727,"name":"uint256","nodeType":"ElementaryTypeName","src":"8270:7:74","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":21729,"length":{"hexValue":"3439","id":21728,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"8278:2:74","typeDescriptions":{"typeIdentifier":"t_rational_49_by_1","typeString":"int_const 49"},"value":"49"},"nodeType":"ArrayTypeName","src":"8270:11:74","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$49_storage_ptr","typeString":"uint256[49]"}},"visibility":"private"}],"scope":21732,"src":"1923:6375:74","usedErrors":[3721,3730,3739,3748,7149,7154,7159,7168,7173,7178,7332,7345,7669,7672,7943,7948,9423,9878,10299,15311,21360],"usedEvents":[6936,6978,6990,7677,8613,8622,15297,15301,15305,15309,21346,21350,21354,21358]}],"src":"39:8260:74"},"id":74},"contracts/mock/VaultV2Mock.sol":{"ast":{"absolutePath":"contracts/mock/VaultV2Mock.sol","exportedSymbols":{"IERC20Metadata":[9411],"TestERC4626":[3043],"VaultV2Mock":[21833]},"id":21834,"license":"Apache-2.0","nodeType":"SourceUnit","nodes":[{"id":21733,"literals":["solidity","^","0.8",".0"],"nodeType":"PragmaDirective","src":"38:23:75"},{"absolutePath":"@openzeppelin/contracts/token/ERC20/extensions/IERC20Metadata.sol","file":"@openzeppelin/contracts/token/ERC20/extensions/IERC20Metadata.sol","id":21735,"nameLocation":"-1:-1:-1","nodeType":"ImportDirective","scope":21834,"sourceUnit":9412,"src":"63:97:75","symbolAliases":[{"foreign":{"id":21734,"name":"IERC20Metadata","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9411,"src":"71:14:75","typeDescriptions":{}},"nameLocation":"-1:-1:-1"}],"unitAlias":""},{"absolutePath":"@ensuro/utils/contracts/TestERC4626.sol","file":"@ensuro/utils/contracts/TestERC4626.sol","id":21737,"nameLocation":"-1:-1:-1","nodeType":"ImportDirective","scope":21834,"sourceUnit":3044,"src":"161:68:75","symbolAliases":[{"foreign":{"id":21736,"name":"TestERC4626","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3043,"src":"169:11:75","typeDescriptions":{}},"nameLocation":"-1:-1:-1"}],"unitAlias":""},{"abstract":false,"baseContracts":[{"baseName":{"id":21738,"name":"TestERC4626","nameLocations":["255:11:75"],"nodeType":"IdentifierPath","referencedDeclaration":3043,"src":"255:11:75"},"id":21739,"nodeType":"InheritanceSpecifier","src":"255:11:75"}],"canonicalName":"VaultV2Mock","contractDependencies":[],"contractKind":"contract","fullyImplemented":true,"id":21833,"linearizedBaseContracts":[21833,3043,9385,7127,8601,7179,9411,8679,10286],"name":"VaultV2Mock","nameLocation":"240:11:75","nodeType":"ContractDefinition","nodes":[{"constant":false,"functionSelector":"ce04bebb","id":21741,"mutability":"mutable","name":"_totalAssets","nameLocation":"286:12:75","nodeType":"VariableDeclaration","scope":21833,"src":"271:27:75","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint128","typeString":"uint128"},"typeName":{"id":21740,"name":"uint128","nodeType":"ElementaryTypeName","src":"271:7:75","typeDescriptions":{"typeIdentifier":"t_uint128","typeString":"uint128"}},"visibility":"public"},{"constant":false,"functionSelector":"c0463711","id":21743,"mutability":"mutable","name":"lastUpdate","nameLocation":"316:10:75","nodeType":"VariableDeclaration","scope":21833,"src":"302:24:75","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint64","typeString":"uint64"},"typeName":{"id":21742,"name":"uint64","nodeType":"ElementaryTypeName","src":"302:6:75","typeDescriptions":{"typeIdentifier":"t_uint64","typeString":"uint64"}},"visibility":"public"},{"body":{"id":21758,"nodeType":"Block","src":"446:2:75","statements":[]},"id":21759,"implemented":true,"kind":"constructor","modifiers":[{"arguments":[{"id":21753,"name":"name_","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":21745,"src":"422:5:75","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"}},{"id":21754,"name":"symbol_","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":21747,"src":"429:7:75","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"}},{"id":21755,"name":"asset_","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":21750,"src":"438:6:75","typeDescriptions":{"typeIdentifier":"t_contract$_IERC20Metadata_$9411","typeString":"contract IERC20Metadata"}}],"id":21756,"kind":"baseConstructorSpecifier","modifierName":{"id":21752,"name":"TestERC4626","nameLocations":["410:11:75"],"nodeType":"IdentifierPath","referencedDeclaration":3043,"src":"410:11:75"},"nodeType":"ModifierInvocation","src":"410:35:75"}],"name":"","nameLocation":"-1:-1:-1","nodeType":"FunctionDefinition","parameters":{"id":21751,"nodeType":"ParameterList","parameters":[{"constant":false,"id":21745,"mutability":"mutable","name":"name_","nameLocation":"357:5:75","nodeType":"VariableDeclaration","scope":21759,"src":"343:19:75","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string"},"typeName":{"id":21744,"name":"string","nodeType":"ElementaryTypeName","src":"343:6:75","typeDescriptions":{"typeIdentifier":"t_string_storage_ptr","typeString":"string"}},"visibility":"internal"},{"constant":false,"id":21747,"mutability":"mutable","name":"symbol_","nameLocation":"378:7:75","nodeType":"VariableDeclaration","scope":21759,"src":"364:21:75","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string"},"typeName":{"id":21746,"name":"string","nodeType":"ElementaryTypeName","src":"364:6:75","typeDescriptions":{"typeIdentifier":"t_string_storage_ptr","typeString":"string"}},"visibility":"internal"},{"constant":false,"id":21750,"mutability":"mutable","name":"asset_","nameLocation":"402:6:75","nodeType":"VariableDeclaration","scope":21759,"src":"387:21:75","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_contract$_IERC20Metadata_$9411","typeString":"contract IERC20Metadata"},"typeName":{"id":21749,"nodeType":"UserDefinedTypeName","pathNode":{"id":21748,"name":"IERC20Metadata","nameLocations":["387:14:75"],"nodeType":"IdentifierPath","referencedDeclaration":9411,"src":"387:14:75"},"referencedDeclaration":9411,"src":"387:14:75","typeDescriptions":{"typeIdentifier":"t_contract$_IERC20Metadata_$9411","typeString":"contract IERC20Metadata"}},"visibility":"internal"}],"src":"342:67:75"},"returnParameters":{"id":21757,"nodeType":"ParameterList","parameters":[],"src":"446:0:75"},"scope":21833,"src":"331:117:75","stateMutability":"nonpayable","virtual":false,"visibility":"public"},{"baseFunctions":[2833],"body":{"id":21783,"nodeType":"Block","src":"562:90:75","statements":[{"expression":{"arguments":[{"id":21774,"name":"caller","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":21761,"src":"583:6:75","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":21775,"name":"receiver","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":21763,"src":"591:8:75","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":21776,"name":"assets","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":21765,"src":"601:6:75","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"id":21777,"name":"shares","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":21767,"src":"609:6:75","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":21771,"name":"super","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-25,"src":"568:5:75","typeDescriptions":{"typeIdentifier":"t_type$_t_super$_VaultV2Mock_$21833_$","typeString":"type(contract super VaultV2Mock)"}},"id":21773,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"574:8:75","memberName":"_deposit","nodeType":"MemberAccess","referencedDeclaration":2833,"src":"568:14:75","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_address_$_t_address_$_t_uint256_$_t_uint256_$returns$__$","typeString":"function (address,address,uint256,uint256)"}},"id":21778,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"568:48:75","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":21779,"nodeType":"ExpressionStatement","src":"568:48:75"},{"expression":{"arguments":[],"expression":{"argumentTypes":[],"id":21780,"name":"updateCachedTotalAssets","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":21832,"src":"622:23:75","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$__$returns$__$","typeString":"function ()"}},"id":21781,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"622:25:75","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":21782,"nodeType":"ExpressionStatement","src":"622:25:75"}]},"id":21784,"implemented":true,"kind":"function","modifiers":[],"name":"_deposit","nameLocation":"461:8:75","nodeType":"FunctionDefinition","overrides":{"id":21769,"nodeType":"OverrideSpecifier","overrides":[],"src":"553:8:75"},"parameters":{"id":21768,"nodeType":"ParameterList","parameters":[{"constant":false,"id":21761,"mutability":"mutable","name":"caller","nameLocation":"478:6:75","nodeType":"VariableDeclaration","scope":21784,"src":"470:14:75","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":21760,"name":"address","nodeType":"ElementaryTypeName","src":"470:7:75","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":21763,"mutability":"mutable","name":"receiver","nameLocation":"494:8:75","nodeType":"VariableDeclaration","scope":21784,"src":"486:16:75","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":21762,"name":"address","nodeType":"ElementaryTypeName","src":"486:7:75","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":21765,"mutability":"mutable","name":"assets","nameLocation":"512:6:75","nodeType":"VariableDeclaration","scope":21784,"src":"504:14:75","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":21764,"name":"uint256","nodeType":"ElementaryTypeName","src":"504:7:75","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":21767,"mutability":"mutable","name":"shares","nameLocation":"528:6:75","nodeType":"VariableDeclaration","scope":21784,"src":"520:14:75","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":21766,"name":"uint256","nodeType":"ElementaryTypeName","src":"520:7:75","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"469:66:75"},"returnParameters":{"id":21770,"nodeType":"ParameterList","parameters":[],"src":"562:0:75"},"scope":21833,"src":"452:200:75","stateMutability":"nonpayable","virtual":true,"visibility":"internal"},{"baseFunctions":[2860],"body":{"id":21811,"nodeType":"Block","src":"806:98:75","statements":[{"expression":{"arguments":[{"id":21801,"name":"caller","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":21786,"src":"828:6:75","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":21802,"name":"receiver","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":21788,"src":"836:8:75","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":21803,"name":"owner","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":21790,"src":"846:5:75","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":21804,"name":"assets","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":21792,"src":"853:6:75","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"id":21805,"name":"shares","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":21794,"src":"861:6:75","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"}],"expression":{"id":21798,"name":"super","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-25,"src":"812:5:75","typeDescriptions":{"typeIdentifier":"t_type$_t_super$_VaultV2Mock_$21833_$","typeString":"type(contract super VaultV2Mock)"}},"id":21800,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"818:9:75","memberName":"_withdraw","nodeType":"MemberAccess","referencedDeclaration":2860,"src":"812:15:75","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_address_$_t_address_$_t_address_$_t_uint256_$_t_uint256_$returns$__$","typeString":"function (address,address,address,uint256,uint256)"}},"id":21806,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"812:56:75","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":21807,"nodeType":"ExpressionStatement","src":"812:56:75"},{"expression":{"arguments":[],"expression":{"argumentTypes":[],"id":21808,"name":"updateCachedTotalAssets","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":21832,"src":"874:23:75","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$__$returns$__$","typeString":"function ()"}},"id":21809,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"874:25:75","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":21810,"nodeType":"ExpressionStatement","src":"874:25:75"}]},"id":21812,"implemented":true,"kind":"function","modifiers":[],"name":"_withdraw","nameLocation":"665:9:75","nodeType":"FunctionDefinition","overrides":{"id":21796,"nodeType":"OverrideSpecifier","overrides":[],"src":"797:8:75"},"parameters":{"id":21795,"nodeType":"ParameterList","parameters":[{"constant":false,"id":21786,"mutability":"mutable","name":"caller","nameLocation":"688:6:75","nodeType":"VariableDeclaration","scope":21812,"src":"680:14:75","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":21785,"name":"address","nodeType":"ElementaryTypeName","src":"680:7:75","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":21788,"mutability":"mutable","name":"receiver","nameLocation":"708:8:75","nodeType":"VariableDeclaration","scope":21812,"src":"700:16:75","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":21787,"name":"address","nodeType":"ElementaryTypeName","src":"700:7:75","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":21790,"mutability":"mutable","name":"owner","nameLocation":"730:5:75","nodeType":"VariableDeclaration","scope":21812,"src":"722:13:75","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":21789,"name":"address","nodeType":"ElementaryTypeName","src":"722:7:75","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":21792,"mutability":"mutable","name":"assets","nameLocation":"749:6:75","nodeType":"VariableDeclaration","scope":21812,"src":"741:14:75","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":21791,"name":"uint256","nodeType":"ElementaryTypeName","src":"741:7:75","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":21794,"mutability":"mutable","name":"shares","nameLocation":"769:6:75","nodeType":"VariableDeclaration","scope":21812,"src":"761:14:75","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":21793,"name":"uint256","nodeType":"ElementaryTypeName","src":"761:7:75","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"674:105:75"},"returnParameters":{"id":21797,"nodeType":"ParameterList","parameters":[],"src":"806:0:75"},"scope":21833,"src":"656:248:75","stateMutability":"nonpayable","virtual":true,"visibility":"internal"},{"body":{"id":21831,"nodeType":"Block","src":"950:90:75","statements":[{"expression":{"id":21821,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":21815,"name":"_totalAssets","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":21741,"src":"956:12:75","typeDescriptions":{"typeIdentifier":"t_uint128","typeString":"uint128"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"arguments":[{"arguments":[],"expression":{"argumentTypes":[],"id":21818,"name":"totalAssets","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8894,"src":"979:11:75","typeDescriptions":{"typeIdentifier":"t_function_internal_view$__$returns$_t_uint256_$","typeString":"function () view returns (uint256)"}},"id":21819,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"979:13:75","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":21817,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"971:7:75","typeDescriptions":{"typeIdentifier":"t_type$_t_uint128_$","typeString":"type(uint128)"},"typeName":{"id":21816,"name":"uint128","nodeType":"ElementaryTypeName","src":"971:7:75","typeDescriptions":{}}},"id":21820,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"971:22:75","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint128","typeString":"uint128"}},"src":"956:37:75","typeDescriptions":{"typeIdentifier":"t_uint128","typeString":"uint128"}},"id":21822,"nodeType":"ExpressionStatement","src":"956:37:75"},{"expression":{"id":21829,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":21823,"name":"lastUpdate","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":21743,"src":"999:10:75","typeDescriptions":{"typeIdentifier":"t_uint64","typeString":"uint64"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"arguments":[{"expression":{"id":21826,"name":"block","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-4,"src":"1019:5:75","typeDescriptions":{"typeIdentifier":"t_magic_block","typeString":"block"}},"id":21827,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"1025:9:75","memberName":"timestamp","nodeType":"MemberAccess","src":"1019:15:75","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":21825,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"1012:6:75","typeDescriptions":{"typeIdentifier":"t_type$_t_uint64_$","typeString":"type(uint64)"},"typeName":{"id":21824,"name":"uint64","nodeType":"ElementaryTypeName","src":"1012:6:75","typeDescriptions":{}}},"id":21828,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"1012:23:75","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint64","typeString":"uint64"}},"src":"999:36:75","typeDescriptions":{"typeIdentifier":"t_uint64","typeString":"uint64"}},"id":21830,"nodeType":"ExpressionStatement","src":"999:36:75"}]},"functionSelector":"f0fe6ef8","id":21832,"implemented":true,"kind":"function","modifiers":[],"name":"updateCachedTotalAssets","nameLocation":"917:23:75","nodeType":"FunctionDefinition","parameters":{"id":21813,"nodeType":"ParameterList","parameters":[],"src":"940:2:75"},"returnParameters":{"id":21814,"nodeType":"ParameterList","parameters":[],"src":"950:0:75"},"scope":21833,"src":"908:132:75","stateMutability":"nonpayable","virtual":false,"visibility":"public"}],"scope":21834,"src":"231:811:75","usedErrors":[2762,7149,7154,7159,7168,7173,7178,8717,8726,8735,8744,9423],"usedEvents":[6978,6990,8613,8622]}],"src":"38:1005:75"},"id":75},"contracts/strategies/AaveV3InvestStrategy.sol":{"ast":{"absolutePath":"contracts/strategies/AaveV3InvestStrategy.sol","exportedSymbols":{"AaveV3InvestStrategy":[22207],"DataTypes":[18092],"IERC20":[8679],"IInvestStrategy":[20725],"IPool":[19003],"InvestStrategyClient":[15693],"ReserveConfiguration":[20496]},"id":22208,"license":"Apache-2.0","nodeType":"SourceUnit","nodes":[{"id":21835,"literals":["solidity","^","0.8",".0"],"nodeType":"PragmaDirective","src":"39:23:76"},{"absolutePath":"contracts/dependencies/aave-v3/IPool.sol","file":"../dependencies/aave-v3/IPool.sol","id":21837,"nameLocation":"-1:-1:-1","nodeType":"ImportDirective","scope":22208,"sourceUnit":19004,"src":"64:56:76","symbolAliases":[{"foreign":{"id":21836,"name":"IPool","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":19003,"src":"72:5:76","typeDescriptions":{}},"nameLocation":"-1:-1:-1"}],"unitAlias":""},{"absolutePath":"contracts/dependencies/aave-v3/DataTypes.sol","file":"../dependencies/aave-v3/DataTypes.sol","id":21839,"nameLocation":"-1:-1:-1","nodeType":"ImportDirective","scope":22208,"sourceUnit":18093,"src":"121:64:76","symbolAliases":[{"foreign":{"id":21838,"name":"DataTypes","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":18092,"src":"129:9:76","typeDescriptions":{}},"nameLocation":"-1:-1:-1"}],"unitAlias":""},{"absolutePath":"contracts/dependencies/aave-v3/ReserveConfiguration.sol","file":"../dependencies/aave-v3/ReserveConfiguration.sol","id":21841,"nameLocation":"-1:-1:-1","nodeType":"ImportDirective","scope":22208,"sourceUnit":20497,"src":"186:86:76","symbolAliases":[{"foreign":{"id":21840,"name":"ReserveConfiguration","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":20496,"src":"194:20:76","typeDescriptions":{}},"nameLocation":"-1:-1:-1"}],"unitAlias":""},{"absolutePath":"@openzeppelin/contracts/interfaces/IERC20.sol","file":"@openzeppelin/contracts/interfaces/IERC20.sol","id":21843,"nameLocation":"-1:-1:-1","nodeType":"ImportDirective","scope":22208,"sourceUnit":6954,"src":"273:69:76","symbolAliases":[{"foreign":{"id":21842,"name":"IERC20","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8679,"src":"281:6:76","typeDescriptions":{}},"nameLocation":"-1:-1:-1"}],"unitAlias":""},{"absolutePath":"contracts/interfaces/IInvestStrategy.sol","file":"../interfaces/IInvestStrategy.sol","id":21845,"nameLocation":"-1:-1:-1","nodeType":"ImportDirective","scope":22208,"sourceUnit":20726,"src":"343:66:76","symbolAliases":[{"foreign":{"id":21844,"name":"IInvestStrategy","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":20725,"src":"351:15:76","typeDescriptions":{}},"nameLocation":"-1:-1:-1"}],"unitAlias":""},{"absolutePath":"contracts/InvestStrategyClient.sol","file":"../InvestStrategyClient.sol","id":21847,"nameLocation":"-1:-1:-1","nodeType":"ImportDirective","scope":22208,"sourceUnit":15694,"src":"410:65:76","symbolAliases":[{"foreign":{"id":21846,"name":"InvestStrategyClient","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":15693,"src":"418:20:76","typeDescriptions":{}},"nameLocation":"-1:-1:-1"}],"unitAlias":""},{"abstract":false,"baseContracts":[{"baseName":{"id":21849,"name":"IInvestStrategy","nameLocations":["698:15:76"],"nodeType":"IdentifierPath","referencedDeclaration":20725,"src":"698:15:76"},"id":21850,"nodeType":"InheritanceSpecifier","src":"698:15:76"}],"canonicalName":"AaveV3InvestStrategy","contractDependencies":[],"contractKind":"contract","documentation":{"id":21848,"nodeType":"StructuredDocumentation","src":"477:187:76","text":" @title AaveV3InvestStrategy\n @dev Strategy that invests/deinvests into AaveV3 on each deposit/withdraw.\n @custom:security-contact security@ensuro.co\n @author Ensuro"},"fullyImplemented":true,"id":22207,"linearizedBaseContracts":[22207,20725],"name":"AaveV3InvestStrategy","nameLocation":"674:20:76","nodeType":"ContractDefinition","nodes":[{"global":false,"id":21854,"libraryName":{"id":21851,"name":"ReserveConfiguration","nameLocations":["724:20:76"],"nodeType":"IdentifierPath","referencedDeclaration":20496,"src":"724:20:76"},"nodeType":"UsingForDirective","src":"718:65:76","typeName":{"id":21853,"nodeType":"UserDefinedTypeName","pathNode":{"id":21852,"name":"DataTypes.ReserveConfigurationMap","nameLocations":["749:9:76","759:23:76"],"nodeType":"IdentifierPath","referencedDeclaration":17777,"src":"749:33:76"},"referencedDeclaration":17777,"src":"749:33:76","typeDescriptions":{"typeIdentifier":"t_struct$_ReserveConfigurationMap_$17777_storage_ptr","typeString":"struct DataTypes.ReserveConfigurationMap"}}},{"constant":false,"id":21860,"mutability":"immutable","name":"__self","nameLocation":"813:6:76","nodeType":"VariableDeclaration","scope":22207,"src":"787:48:76","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":21855,"name":"address","nodeType":"ElementaryTypeName","src":"787:7:76","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"value":{"arguments":[{"id":21858,"name":"this","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-28,"src":"830:4:76","typeDescriptions":{"typeIdentifier":"t_contract$_AaveV3InvestStrategy_$22207","typeString":"contract AaveV3InvestStrategy"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_contract$_AaveV3InvestStrategy_$22207","typeString":"contract AaveV3InvestStrategy"}],"id":21857,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"822:7:76","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":21856,"name":"address","nodeType":"ElementaryTypeName","src":"822:7:76","typeDescriptions":{}}},"id":21859,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"822:13:76","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"private"},{"baseFunctions":[20724],"constant":false,"functionSelector":"5b9a4c35","id":21866,"mutability":"immutable","name":"storageSlot","nameLocation":"864:11:76","nodeType":"VariableDeclaration","scope":22207,"src":"839:81:76","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":21861,"name":"bytes32","nodeType":"ElementaryTypeName","src":"839:7:76","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"value":{"arguments":[{"id":21864,"name":"this","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-28,"src":"915:4:76","typeDescriptions":{"typeIdentifier":"t_contract$_AaveV3InvestStrategy_$22207","typeString":"contract AaveV3InvestStrategy"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_contract$_AaveV3InvestStrategy_$22207","typeString":"contract AaveV3InvestStrategy"}],"expression":{"id":21862,"name":"InvestStrategyClient","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":15693,"src":"878:20:76","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_InvestStrategyClient_$15693_$","typeString":"type(library InvestStrategyClient)"}},"id":21863,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"899:15:76","memberName":"makeStorageSlot","nodeType":"MemberAccess","referencedDeclaration":15638,"src":"878:36:76","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_contract$_IInvestStrategy_$20725_$returns$_t_bytes32_$","typeString":"function (contract IInvestStrategy) pure returns (bytes32)"}},"id":21865,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"878:42:76","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"public"},{"constant":false,"id":21869,"mutability":"immutable","name":"_aave","nameLocation":"950:5:76","nodeType":"VariableDeclaration","scope":22207,"src":"925:30:76","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_contract$_IPool_$19003","typeString":"contract IPool"},"typeName":{"id":21868,"nodeType":"UserDefinedTypeName","pathNode":{"id":21867,"name":"IPool","nameLocations":["925:5:76"],"nodeType":"IdentifierPath","referencedDeclaration":19003,"src":"925:5:76"},"referencedDeclaration":19003,"src":"925:5:76","typeDescriptions":{"typeIdentifier":"t_contract$_IPool_$19003","typeString":"contract IPool"}},"visibility":"internal"},{"constant":false,"id":21872,"mutability":"immutable","name":"_asset","nameLocation":"985:6:76","nodeType":"VariableDeclaration","scope":22207,"src":"959:32:76","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_contract$_IERC20_$8679","typeString":"contract IERC20"},"typeName":{"id":21871,"nodeType":"UserDefinedTypeName","pathNode":{"id":21870,"name":"IERC20","nameLocations":["959:6:76"],"nodeType":"IdentifierPath","referencedDeclaration":8679,"src":"959:6:76"},"referencedDeclaration":8679,"src":"959:6:76","typeDescriptions":{"typeIdentifier":"t_contract$_IERC20_$8679","typeString":"contract IERC20"}},"visibility":"internal"},{"errorSelector":"aafc462c","id":21874,"name":"CanBeCalledOnlyThroughDelegateCall","nameLocation":"1002:34:76","nodeType":"ErrorDefinition","parameters":{"id":21873,"nodeType":"ParameterList","parameters":[],"src":"1036:2:76"},"src":"996:43:76"},{"errorSelector":"8542eda2","id":21876,"name":"CannotDisconnectWithAssets","nameLocation":"1048:26:76","nodeType":"ErrorDefinition","parameters":{"id":21875,"nodeType":"ParameterList","parameters":[],"src":"1074:2:76"},"src":"1042:35:76"},{"errorSelector":"50701b61","id":21878,"name":"NoExtraDataAllowed","nameLocation":"1086:18:76","nodeType":"ErrorDefinition","parameters":{"id":21877,"nodeType":"ParameterList","parameters":[],"src":"1104:2:76"},"src":"1080:27:76"},{"errorSelector":"c3eb4ed5","id":21880,"name":"ReserveNotFoundInAave","nameLocation":"1116:21:76","nodeType":"ErrorDefinition","parameters":{"id":21879,"nodeType":"ParameterList","parameters":[],"src":"1137:2:76"},"src":"1110:30:76"},{"body":{"id":21893,"nodeType":"Block","src":"1169:90:76","statements":[{"condition":{"commonType":{"typeIdentifier":"t_address","typeString":"address"},"id":21887,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"arguments":[{"id":21884,"name":"this","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-28,"src":"1187:4:76","typeDescriptions":{"typeIdentifier":"t_contract$_AaveV3InvestStrategy_$22207","typeString":"contract AaveV3InvestStrategy"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_contract$_AaveV3InvestStrategy_$22207","typeString":"contract AaveV3InvestStrategy"}],"id":21883,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"1179:7:76","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":21882,"name":"address","nodeType":"ElementaryTypeName","src":"1179:7:76","typeDescriptions":{}}},"id":21885,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"1179:13:76","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"id":21886,"name":"__self","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":21860,"src":"1196:6:76","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"src":"1179:23:76","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":21891,"nodeType":"IfStatement","src":"1175:72:76","trueBody":{"errorCall":{"arguments":[],"expression":{"argumentTypes":[],"id":21888,"name":"CanBeCalledOnlyThroughDelegateCall","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":21874,"src":"1211:34:76","typeDescriptions":{"typeIdentifier":"t_function_error_pure$__$returns$_t_error_$","typeString":"function () pure returns (error)"}},"id":21889,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"1211:36:76","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_error","typeString":"error"}},"id":21890,"nodeType":"RevertStatement","src":"1204:43:76"}},{"id":21892,"nodeType":"PlaceholderStatement","src":"1253:1:76"}]},"id":21894,"name":"onlyDelegCall","nameLocation":"1153:13:76","nodeType":"ModifierDefinition","parameters":{"id":21881,"nodeType":"ParameterList","parameters":[],"src":"1166:2:76"},"src":"1144:115:76","virtual":false,"visibility":"internal"},{"body":{"id":21928,"nodeType":"Block","src":"1303:152:76","statements":[{"condition":{"commonType":{"typeIdentifier":"t_address","typeString":"address"},"id":21915,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"expression":{"arguments":[{"arguments":[{"id":21907,"name":"asset_","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":21897,"src":"1342:6:76","typeDescriptions":{"typeIdentifier":"t_contract$_IERC20_$8679","typeString":"contract IERC20"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_contract$_IERC20_$8679","typeString":"contract IERC20"}],"id":21906,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"1334:7:76","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":21905,"name":"address","nodeType":"ElementaryTypeName","src":"1334:7:76","typeDescriptions":{}}},"id":21908,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"1334:15:76","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"expression":{"id":21903,"name":"aave_","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":21900,"src":"1313:5:76","typeDescriptions":{"typeIdentifier":"t_contract$_IPool_$19003","typeString":"contract IPool"}},"id":21904,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"1319:14:76","memberName":"getReserveData","nodeType":"MemberAccess","referencedDeclaration":18853,"src":"1313:20:76","typeDescriptions":{"typeIdentifier":"t_function_external_view$_t_address_$returns$_t_struct$_ReserveData_$17774_memory_ptr_$","typeString":"function (address) view external returns (struct DataTypes.ReserveData memory)"}},"id":21909,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"1313:37:76","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_struct$_ReserveData_$17774_memory_ptr","typeString":"struct DataTypes.ReserveData memory"}},"id":21910,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"1351:13:76","memberName":"aTokenAddress","nodeType":"MemberAccess","referencedDeclaration":17761,"src":"1313:51:76","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"arguments":[{"hexValue":"30","id":21913,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"1376:1:76","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":21912,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"1368:7:76","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":21911,"name":"address","nodeType":"ElementaryTypeName","src":"1368:7:76","typeDescriptions":{}}},"id":21914,"isConstant":false,"isLValue":false,"isPure":true,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"1368:10:76","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"src":"1313:65:76","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":21919,"nodeType":"IfStatement","src":"1309:101:76","trueBody":{"errorCall":{"arguments":[],"expression":{"argumentTypes":[],"id":21916,"name":"ReserveNotFoundInAave","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":21880,"src":"1387:21:76","typeDescriptions":{"typeIdentifier":"t_function_error_pure$__$returns$_t_error_$","typeString":"function () pure returns (error)"}},"id":21917,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"1387:23:76","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_error","typeString":"error"}},"id":21918,"nodeType":"RevertStatement","src":"1380:30:76"}},{"expression":{"id":21922,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":21920,"name":"_aave","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":21869,"src":"1416:5:76","typeDescriptions":{"typeIdentifier":"t_contract$_IPool_$19003","typeString":"contract IPool"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"id":21921,"name":"aave_","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":21900,"src":"1424:5:76","typeDescriptions":{"typeIdentifier":"t_contract$_IPool_$19003","typeString":"contract IPool"}},"src":"1416:13:76","typeDescriptions":{"typeIdentifier":"t_contract$_IPool_$19003","typeString":"contract IPool"}},"id":21923,"nodeType":"ExpressionStatement","src":"1416:13:76"},{"expression":{"id":21926,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":21924,"name":"_asset","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":21872,"src":"1435:6:76","typeDescriptions":{"typeIdentifier":"t_contract$_IERC20_$8679","typeString":"contract IERC20"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"id":21925,"name":"asset_","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":21897,"src":"1444:6:76","typeDescriptions":{"typeIdentifier":"t_contract$_IERC20_$8679","typeString":"contract IERC20"}},"src":"1435:15:76","typeDescriptions":{"typeIdentifier":"t_contract$_IERC20_$8679","typeString":"contract IERC20"}},"id":21927,"nodeType":"ExpressionStatement","src":"1435:15:76"}]},"id":21929,"implemented":true,"kind":"constructor","modifiers":[],"name":"","nameLocation":"-1:-1:-1","nodeType":"FunctionDefinition","parameters":{"id":21901,"nodeType":"ParameterList","parameters":[{"constant":false,"id":21897,"mutability":"mutable","name":"asset_","nameLocation":"1282:6:76","nodeType":"VariableDeclaration","scope":21929,"src":"1275:13:76","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_contract$_IERC20_$8679","typeString":"contract IERC20"},"typeName":{"id":21896,"nodeType":"UserDefinedTypeName","pathNode":{"id":21895,"name":"IERC20","nameLocations":["1275:6:76"],"nodeType":"IdentifierPath","referencedDeclaration":8679,"src":"1275:6:76"},"referencedDeclaration":8679,"src":"1275:6:76","typeDescriptions":{"typeIdentifier":"t_contract$_IERC20_$8679","typeString":"contract IERC20"}},"visibility":"internal"},{"constant":false,"id":21900,"mutability":"mutable","name":"aave_","nameLocation":"1296:5:76","nodeType":"VariableDeclaration","scope":21929,"src":"1290:11:76","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_contract$_IPool_$19003","typeString":"contract IPool"},"typeName":{"id":21899,"nodeType":"UserDefinedTypeName","pathNode":{"id":21898,"name":"IPool","nameLocations":["1290:5:76"],"nodeType":"IdentifierPath","referencedDeclaration":19003,"src":"1290:5:76"},"referencedDeclaration":19003,"src":"1290:5:76","typeDescriptions":{"typeIdentifier":"t_contract$_IPool_$19003","typeString":"contract IPool"}},"visibility":"internal"}],"src":"1274:28:76"},"returnParameters":{"id":21902,"nodeType":"ParameterList","parameters":[],"src":"1303:0:76"},"scope":22207,"src":"1263:192:76","stateMutability":"nonpayable","virtual":false,"visibility":"public"},{"body":{"id":21943,"nodeType":"Block","src":"1536:55:76","statements":[{"expression":{"arguments":[{"arguments":[{"id":21939,"name":"_asset","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":21872,"src":"1578:6:76","typeDescriptions":{"typeIdentifier":"t_contract$_IERC20_$8679","typeString":"contract IERC20"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_contract$_IERC20_$8679","typeString":"contract IERC20"}],"id":21938,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"1570:7:76","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":21937,"name":"address","nodeType":"ElementaryTypeName","src":"1570:7:76","typeDescriptions":{}}},"id":21940,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"1570:15:76","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"expression":{"id":21935,"name":"_aave","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":21869,"src":"1549:5:76","typeDescriptions":{"typeIdentifier":"t_contract$_IPool_$19003","typeString":"contract IPool"}},"id":21936,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"1555:14:76","memberName":"getReserveData","nodeType":"MemberAccess","referencedDeclaration":18853,"src":"1549:20:76","typeDescriptions":{"typeIdentifier":"t_function_external_view$_t_address_$returns$_t_struct$_ReserveData_$17774_memory_ptr_$","typeString":"function (address) view external returns (struct DataTypes.ReserveData memory)"}},"id":21941,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"1549:37:76","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_struct$_ReserveData_$17774_memory_ptr","typeString":"struct DataTypes.ReserveData memory"}},"functionReturnParameters":21934,"id":21942,"nodeType":"Return","src":"1542:44:76"}]},"id":21944,"implemented":true,"kind":"function","modifiers":[],"name":"_reserveData","nameLocation":"1468:12:76","nodeType":"FunctionDefinition","parameters":{"id":21930,"nodeType":"ParameterList","parameters":[],"src":"1480:2:76"},"returnParameters":{"id":21934,"nodeType":"ParameterList","parameters":[{"constant":false,"id":21933,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":21944,"src":"1506:28:76","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_struct$_ReserveData_$17774_memory_ptr","typeString":"struct DataTypes.ReserveData"},"typeName":{"id":21932,"nodeType":"UserDefinedTypeName","pathNode":{"id":21931,"name":"DataTypes.ReserveData","nameLocations":["1506:9:76","1516:11:76"],"nodeType":"IdentifierPath","referencedDeclaration":17774,"src":"1506:21:76"},"referencedDeclaration":17774,"src":"1506:21:76","typeDescriptions":{"typeIdentifier":"t_struct$_ReserveData_$17774_storage_ptr","typeString":"struct DataTypes.ReserveData"}},"visibility":"internal"}],"src":"1505:30:76"},"scope":22207,"src":"1459:132:76","stateMutability":"view","virtual":false,"visibility":"internal"},{"baseFunctions":[20658],"body":{"id":21961,"nodeType":"Block","src":"1709:64:76","statements":[{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":21956,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"expression":{"id":21953,"name":"initData","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":21947,"src":"1719:8:76","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}},"id":21954,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"1728:6:76","memberName":"length","nodeType":"MemberAccess","src":"1719:15:76","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"!=","rightExpression":{"hexValue":"30","id":21955,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"1738:1:76","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"1719:20:76","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":21960,"nodeType":"IfStatement","src":"1715:53:76","trueBody":{"errorCall":{"arguments":[],"expression":{"argumentTypes":[],"id":21957,"name":"NoExtraDataAllowed","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":21878,"src":"1748:18:76","typeDescriptions":{"typeIdentifier":"t_function_error_pure$__$returns$_t_error_$","typeString":"function () pure returns (error)"}},"id":21958,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"1748:20:76","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_error","typeString":"error"}},"id":21959,"nodeType":"RevertStatement","src":"1741:27:76"}}]},"documentation":{"id":21945,"nodeType":"StructuredDocumentation","src":"1595:31:76","text":"@inheritdoc IInvestStrategy"},"functionSelector":"9cd47128","id":21962,"implemented":true,"kind":"function","modifiers":[{"id":21951,"kind":"modifierInvocation","modifierName":{"id":21950,"name":"onlyDelegCall","nameLocations":["1695:13:76"],"nodeType":"IdentifierPath","referencedDeclaration":21894,"src":"1695:13:76"},"nodeType":"ModifierInvocation","src":"1695:13:76"}],"name":"connect","nameLocation":"1638:7:76","nodeType":"FunctionDefinition","overrides":{"id":21949,"nodeType":"OverrideSpecifier","overrides":[],"src":"1686:8:76"},"parameters":{"id":21948,"nodeType":"ParameterList","parameters":[{"constant":false,"id":21947,"mutability":"mutable","name":"initData","nameLocation":"1659:8:76","nodeType":"VariableDeclaration","scope":21962,"src":"1646:21:76","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes"},"typeName":{"id":21946,"name":"bytes","nodeType":"ElementaryTypeName","src":"1646:5:76","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"}],"src":"1645:23:76"},"returnParameters":{"id":21952,"nodeType":"ParameterList","parameters":[],"src":"1709:0:76"},"scope":22207,"src":"1629:144:76","stateMutability":"nonpayable","virtual":true,"visibility":"external"},{"baseFunctions":[20664],"body":{"id":21996,"nodeType":"Block","src":"1883:156:76","statements":[{"assignments":[21973],"declarations":[{"constant":false,"id":21973,"mutability":"mutable","name":"aToken","nameLocation":"1896:6:76","nodeType":"VariableDeclaration","scope":21996,"src":"1889:13:76","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_contract$_IERC20_$8679","typeString":"contract IERC20"},"typeName":{"id":21972,"nodeType":"UserDefinedTypeName","pathNode":{"id":21971,"name":"IERC20","nameLocations":["1889:6:76"],"nodeType":"IdentifierPath","referencedDeclaration":8679,"src":"1889:6:76"},"referencedDeclaration":8679,"src":"1889:6:76","typeDescriptions":{"typeIdentifier":"t_contract$_IERC20_$8679","typeString":"contract IERC20"}},"visibility":"internal"}],"id":21979,"initialValue":{"arguments":[{"expression":{"arguments":[],"expression":{"argumentTypes":[],"id":21975,"name":"_reserveData","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":21944,"src":"1912:12:76","typeDescriptions":{"typeIdentifier":"t_function_internal_view$__$returns$_t_struct$_ReserveData_$17774_memory_ptr_$","typeString":"function () view returns (struct DataTypes.ReserveData memory)"}},"id":21976,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"1912:14:76","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_struct$_ReserveData_$17774_memory_ptr","typeString":"struct DataTypes.ReserveData memory"}},"id":21977,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"1927:13:76","memberName":"aTokenAddress","nodeType":"MemberAccess","referencedDeclaration":17761,"src":"1912:28:76","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"id":21974,"name":"IERC20","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8679,"src":"1905:6:76","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_IERC20_$8679_$","typeString":"type(contract IERC20)"}},"id":21978,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"1905:36:76","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_contract$_IERC20_$8679","typeString":"contract IERC20"}},"nodeType":"VariableDeclarationStatement","src":"1889:52:76"},{"condition":{"commonType":{"typeIdentifier":"t_bool","typeString":"bool"},"id":21991,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":21981,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"UnaryOperation","operator":"!","prefix":true,"src":"1951:6:76","subExpression":{"id":21980,"name":"force","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":21965,"src":"1952:5:76","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"nodeType":"BinaryOperation","operator":"&&","rightExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":21990,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"arguments":[{"arguments":[{"id":21986,"name":"this","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-28,"src":"1986:4:76","typeDescriptions":{"typeIdentifier":"t_contract$_AaveV3InvestStrategy_$22207","typeString":"contract AaveV3InvestStrategy"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_contract$_AaveV3InvestStrategy_$22207","typeString":"contract AaveV3InvestStrategy"}],"id":21985,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"1978:7:76","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":21984,"name":"address","nodeType":"ElementaryTypeName","src":"1978:7:76","typeDescriptions":{}}},"id":21987,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"1978:13:76","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"expression":{"id":21982,"name":"aToken","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":21973,"src":"1961:6:76","typeDescriptions":{"typeIdentifier":"t_contract$_IERC20_$8679","typeString":"contract IERC20"}},"id":21983,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"1968:9:76","memberName":"balanceOf","nodeType":"MemberAccess","referencedDeclaration":8636,"src":"1961:16:76","typeDescriptions":{"typeIdentifier":"t_function_external_view$_t_address_$returns$_t_uint256_$","typeString":"function (address) view external returns (uint256)"}},"id":21988,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"1961:31:76","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"!=","rightExpression":{"hexValue":"30","id":21989,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"1996:1:76","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"1961:36:76","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"src":"1951:46:76","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":21995,"nodeType":"IfStatement","src":"1947:87:76","trueBody":{"errorCall":{"arguments":[],"expression":{"argumentTypes":[],"id":21992,"name":"CannotDisconnectWithAssets","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":21876,"src":"2006:26:76","typeDescriptions":{"typeIdentifier":"t_function_error_pure$__$returns$_t_error_$","typeString":"function () pure returns (error)"}},"id":21993,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"2006:28:76","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_error","typeString":"error"}},"id":21994,"nodeType":"RevertStatement","src":"1999:35:76"}}]},"documentation":{"id":21963,"nodeType":"StructuredDocumentation","src":"1777:31:76","text":"@inheritdoc IInvestStrategy"},"functionSelector":"5a117456","id":21997,"implemented":true,"kind":"function","modifiers":[{"id":21969,"kind":"modifierInvocation","modifierName":{"id":21968,"name":"onlyDelegCall","nameLocations":["1869:13:76"],"nodeType":"IdentifierPath","referencedDeclaration":21894,"src":"1869:13:76"},"nodeType":"ModifierInvocation","src":"1869:13:76"}],"name":"disconnect","nameLocation":"1820:10:76","nodeType":"FunctionDefinition","overrides":{"id":21967,"nodeType":"OverrideSpecifier","overrides":[],"src":"1860:8:76"},"parameters":{"id":21966,"nodeType":"ParameterList","parameters":[{"constant":false,"id":21965,"mutability":"mutable","name":"force","nameLocation":"1836:5:76","nodeType":"VariableDeclaration","scope":21997,"src":"1831:10:76","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":21964,"name":"bool","nodeType":"ElementaryTypeName","src":"1831:4:76","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"}],"src":"1830:12:76"},"returnParameters":{"id":21970,"nodeType":"ParameterList","parameters":[],"src":"1883:0:76"},"scope":22207,"src":"1811:228:76","stateMutability":"nonpayable","virtual":true,"visibility":"external"},{"baseFunctions":[20718],"body":{"id":22035,"nodeType":"Block","src":"2164:218:76","statements":[{"assignments":[22010],"declarations":[{"constant":false,"id":22010,"mutability":"mutable","name":"reserve","nameLocation":"2199:7:76","nodeType":"VariableDeclaration","scope":22035,"src":"2170:36:76","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_struct$_ReserveData_$17774_memory_ptr","typeString":"struct DataTypes.ReserveData"},"typeName":{"id":22009,"nodeType":"UserDefinedTypeName","pathNode":{"id":22008,"name":"DataTypes.ReserveData","nameLocations":["2170:9:76","2180:11:76"],"nodeType":"IdentifierPath","referencedDeclaration":17774,"src":"2170:21:76"},"referencedDeclaration":17774,"src":"2170:21:76","typeDescriptions":{"typeIdentifier":"t_struct$_ReserveData_$17774_storage_ptr","typeString":"struct DataTypes.ReserveData"}},"visibility":"internal"}],"id":22013,"initialValue":{"arguments":[],"expression":{"argumentTypes":[],"id":22011,"name":"_reserveData","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":21944,"src":"2209:12:76","typeDescriptions":{"typeIdentifier":"t_function_internal_view$__$returns$_t_struct$_ReserveData_$17774_memory_ptr_$","typeString":"function () view returns (struct DataTypes.ReserveData memory)"}},"id":22012,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"2209:14:76","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_struct$_ReserveData_$17774_memory_ptr","typeString":"struct DataTypes.ReserveData memory"}},"nodeType":"VariableDeclarationStatement","src":"2170:53:76"},{"condition":{"commonType":{"typeIdentifier":"t_bool","typeString":"bool"},"id":22023,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":22018,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"UnaryOperation","operator":"!","prefix":true,"src":"2233:34:76","subExpression":{"arguments":[],"expression":{"argumentTypes":[],"expression":{"expression":{"id":22014,"name":"reserve","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":22010,"src":"2234:7:76","typeDescriptions":{"typeIdentifier":"t_struct$_ReserveData_$17774_memory_ptr","typeString":"struct DataTypes.ReserveData memory"}},"id":22015,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"2242:13:76","memberName":"configuration","nodeType":"MemberAccess","referencedDeclaration":17745,"src":"2234:21:76","typeDescriptions":{"typeIdentifier":"t_struct$_ReserveConfigurationMap_$17777_memory_ptr","typeString":"struct DataTypes.ReserveConfigurationMap memory"}},"id":22016,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"2256:9:76","memberName":"getActive","nodeType":"MemberAccess","referencedDeclaration":19622,"src":"2234:31:76","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_struct$_ReserveConfigurationMap_$17777_memory_ptr_$returns$_t_bool_$attached_to$_t_struct$_ReserveConfigurationMap_$17777_memory_ptr_$","typeString":"function (struct DataTypes.ReserveConfigurationMap memory) pure returns (bool)"}},"id":22017,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"2234:33:76","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"nodeType":"BinaryOperation","operator":"||","rightExpression":{"arguments":[],"expression":{"argumentTypes":[],"expression":{"expression":{"id":22019,"name":"reserve","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":22010,"src":"2271:7:76","typeDescriptions":{"typeIdentifier":"t_struct$_ReserveData_$17774_memory_ptr","typeString":"struct DataTypes.ReserveData memory"}},"id":22020,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"2279:13:76","memberName":"configuration","nodeType":"MemberAccess","referencedDeclaration":17745,"src":"2271:21:76","typeDescriptions":{"typeIdentifier":"t_struct$_ReserveConfigurationMap_$17777_memory_ptr","typeString":"struct DataTypes.ReserveConfigurationMap memory"}},"id":22021,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"2293:9:76","memberName":"getPaused","nodeType":"MemberAccess","referencedDeclaration":19722,"src":"2271:31:76","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_struct$_ReserveConfigurationMap_$17777_memory_ptr_$returns$_t_bool_$attached_to$_t_struct$_ReserveConfigurationMap_$17777_memory_ptr_$","typeString":"function (struct DataTypes.ReserveConfigurationMap memory) pure returns (bool)"}},"id":22022,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"2271:33:76","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"src":"2233:71:76","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":22026,"nodeType":"IfStatement","src":"2229:85:76","trueBody":{"expression":{"hexValue":"30","id":22024,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"2313:1:76","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"functionReturnParameters":22005,"id":22025,"nodeType":"Return","src":"2306:8:76"}},{"expression":{"arguments":[{"id":22032,"name":"contract_","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":22000,"src":"2367:9:76","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"expression":{"arguments":[{"expression":{"id":22028,"name":"reserve","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":22010,"src":"2334:7:76","typeDescriptions":{"typeIdentifier":"t_struct$_ReserveData_$17774_memory_ptr","typeString":"struct DataTypes.ReserveData memory"}},"id":22029,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"2342:13:76","memberName":"aTokenAddress","nodeType":"MemberAccess","referencedDeclaration":17761,"src":"2334:21:76","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"id":22027,"name":"IERC20","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8679,"src":"2327:6:76","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_IERC20_$8679_$","typeString":"type(contract IERC20)"}},"id":22030,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"2327:29:76","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_contract$_IERC20_$8679","typeString":"contract IERC20"}},"id":22031,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"2357:9:76","memberName":"balanceOf","nodeType":"MemberAccess","referencedDeclaration":8636,"src":"2327:39:76","typeDescriptions":{"typeIdentifier":"t_function_external_view$_t_address_$returns$_t_uint256_$","typeString":"function (address) view external returns (uint256)"}},"id":22033,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"2327:50:76","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"functionReturnParameters":22005,"id":22034,"nodeType":"Return","src":"2320:57:76"}]},"documentation":{"id":21998,"nodeType":"StructuredDocumentation","src":"2043:31:76","text":"@inheritdoc IInvestStrategy"},"functionSelector":"ce96cb77","id":22036,"implemented":true,"kind":"function","modifiers":[],"name":"maxWithdraw","nameLocation":"2086:11:76","nodeType":"FunctionDefinition","overrides":{"id":22002,"nodeType":"OverrideSpecifier","overrides":[],"src":"2137:8:76"},"parameters":{"id":22001,"nodeType":"ParameterList","parameters":[{"constant":false,"id":22000,"mutability":"mutable","name":"contract_","nameLocation":"2106:9:76","nodeType":"VariableDeclaration","scope":22036,"src":"2098:17:76","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":21999,"name":"address","nodeType":"ElementaryTypeName","src":"2098:7:76","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"2097:19:76"},"returnParameters":{"id":22005,"nodeType":"ParameterList","parameters":[{"constant":false,"id":22004,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":22036,"src":"2155:7:76","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":22003,"name":"uint256","nodeType":"ElementaryTypeName","src":"2155:7:76","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"2154:9:76"},"scope":22207,"src":"2077:305:76","stateMutability":"view","virtual":true,"visibility":"public"},{"baseFunctions":[20710],"body":{"id":22077,"nodeType":"Block","src":"2510:254:76","statements":[{"assignments":[22049],"declarations":[{"constant":false,"id":22049,"mutability":"mutable","name":"reserve","nameLocation":"2545:7:76","nodeType":"VariableDeclaration","scope":22077,"src":"2516:36:76","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_struct$_ReserveData_$17774_memory_ptr","typeString":"struct DataTypes.ReserveData"},"typeName":{"id":22048,"nodeType":"UserDefinedTypeName","pathNode":{"id":22047,"name":"DataTypes.ReserveData","nameLocations":["2516:9:76","2526:11:76"],"nodeType":"IdentifierPath","referencedDeclaration":17774,"src":"2516:21:76"},"referencedDeclaration":17774,"src":"2516:21:76","typeDescriptions":{"typeIdentifier":"t_struct$_ReserveData_$17774_storage_ptr","typeString":"struct DataTypes.ReserveData"}},"visibility":"internal"}],"id":22052,"initialValue":{"arguments":[],"expression":{"argumentTypes":[],"id":22050,"name":"_reserveData","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":21944,"src":"2555:12:76","typeDescriptions":{"typeIdentifier":"t_function_internal_view$__$returns$_t_struct$_ReserveData_$17774_memory_ptr_$","typeString":"function () view returns (struct DataTypes.ReserveData memory)"}},"id":22051,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"2555:14:76","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_struct$_ReserveData_$17774_memory_ptr","typeString":"struct DataTypes.ReserveData memory"}},"nodeType":"VariableDeclarationStatement","src":"2516:53:76"},{"condition":{"commonType":{"typeIdentifier":"t_bool","typeString":"bool"},"id":22067,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"commonType":{"typeIdentifier":"t_bool","typeString":"bool"},"id":22062,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":22057,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"UnaryOperation","operator":"!","prefix":true,"src":"2579:34:76","subExpression":{"arguments":[],"expression":{"argumentTypes":[],"expression":{"expression":{"id":22053,"name":"reserve","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":22049,"src":"2580:7:76","typeDescriptions":{"typeIdentifier":"t_struct$_ReserveData_$17774_memory_ptr","typeString":"struct DataTypes.ReserveData memory"}},"id":22054,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"2588:13:76","memberName":"configuration","nodeType":"MemberAccess","referencedDeclaration":17745,"src":"2580:21:76","typeDescriptions":{"typeIdentifier":"t_struct$_ReserveConfigurationMap_$17777_memory_ptr","typeString":"struct DataTypes.ReserveConfigurationMap memory"}},"id":22055,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"2602:9:76","memberName":"getActive","nodeType":"MemberAccess","referencedDeclaration":19622,"src":"2580:31:76","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_struct$_ReserveConfigurationMap_$17777_memory_ptr_$returns$_t_bool_$attached_to$_t_struct$_ReserveConfigurationMap_$17777_memory_ptr_$","typeString":"function (struct DataTypes.ReserveConfigurationMap memory) pure returns (bool)"}},"id":22056,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"2580:33:76","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"nodeType":"BinaryOperation","operator":"||","rightExpression":{"arguments":[],"expression":{"argumentTypes":[],"expression":{"expression":{"id":22058,"name":"reserve","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":22049,"src":"2617:7:76","typeDescriptions":{"typeIdentifier":"t_struct$_ReserveData_$17774_memory_ptr","typeString":"struct DataTypes.ReserveData memory"}},"id":22059,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"2625:13:76","memberName":"configuration","nodeType":"MemberAccess","referencedDeclaration":17745,"src":"2617:21:76","typeDescriptions":{"typeIdentifier":"t_struct$_ReserveConfigurationMap_$17777_memory_ptr","typeString":"struct DataTypes.ReserveConfigurationMap memory"}},"id":22060,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"2639:9:76","memberName":"getPaused","nodeType":"MemberAccess","referencedDeclaration":19722,"src":"2617:31:76","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_struct$_ReserveConfigurationMap_$17777_memory_ptr_$returns$_t_bool_$attached_to$_t_struct$_ReserveConfigurationMap_$17777_memory_ptr_$","typeString":"function (struct DataTypes.ReserveConfigurationMap memory) pure returns (bool)"}},"id":22061,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"2617:33:76","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"src":"2579:71:76","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"nodeType":"BinaryOperation","operator":"||","rightExpression":{"arguments":[],"expression":{"argumentTypes":[],"expression":{"expression":{"id":22063,"name":"reserve","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":22049,"src":"2654:7:76","typeDescriptions":{"typeIdentifier":"t_struct$_ReserveData_$17774_memory_ptr","typeString":"struct DataTypes.ReserveData memory"}},"id":22064,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"2662:13:76","memberName":"configuration","nodeType":"MemberAccess","referencedDeclaration":17745,"src":"2654:21:76","typeDescriptions":{"typeIdentifier":"t_struct$_ReserveConfigurationMap_$17777_memory_ptr","typeString":"struct DataTypes.ReserveConfigurationMap memory"}},"id":22065,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"2676:9:76","memberName":"getFrozen","nodeType":"MemberAccess","referencedDeclaration":19672,"src":"2654:31:76","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_struct$_ReserveConfigurationMap_$17777_memory_ptr_$returns$_t_bool_$attached_to$_t_struct$_ReserveConfigurationMap_$17777_memory_ptr_$","typeString":"function (struct DataTypes.ReserveConfigurationMap memory) pure returns (bool)"}},"id":22066,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"2654:33:76","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"src":"2579:108:76","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":22070,"nodeType":"IfStatement","src":"2575:128:76","trueBody":{"expression":{"hexValue":"30","id":22068,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"2702:1:76","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"functionReturnParameters":22044,"id":22069,"nodeType":"Return","src":"2695:8:76"}},{"expression":{"expression":{"arguments":[{"id":22073,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"2747:7:76","typeDescriptions":{"typeIdentifier":"t_type$_t_uint256_$","typeString":"type(uint256)"},"typeName":{"id":22072,"name":"uint256","nodeType":"ElementaryTypeName","src":"2747:7:76","typeDescriptions":{}}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_type$_t_uint256_$","typeString":"type(uint256)"}],"id":22071,"name":"type","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-27,"src":"2742:4:76","typeDescriptions":{"typeIdentifier":"t_function_metatype_pure$__$returns$__$","typeString":"function () pure"}},"id":22074,"isConstant":false,"isLValue":false,"isPure":true,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"2742:13:76","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_magic_meta_type_t_uint256","typeString":"type(uint256)"}},"id":22075,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberLocation":"2756:3:76","memberName":"max","nodeType":"MemberAccess","src":"2742:17:76","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"functionReturnParameters":22044,"id":22076,"nodeType":"Return","src":"2735:24:76"}]},"documentation":{"id":22037,"nodeType":"StructuredDocumentation","src":"2386:31:76","text":"@inheritdoc IInvestStrategy"},"functionSelector":"402d267d","id":22078,"implemented":true,"kind":"function","modifiers":[],"name":"maxDeposit","nameLocation":"2429:10:76","nodeType":"FunctionDefinition","overrides":{"id":22041,"nodeType":"OverrideSpecifier","overrides":[],"src":"2483:8:76"},"parameters":{"id":22040,"nodeType":"ParameterList","parameters":[{"constant":false,"id":22039,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":22078,"src":"2440:7:76","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":22038,"name":"address","nodeType":"ElementaryTypeName","src":"2440:7:76","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"2439:23:76"},"returnParameters":{"id":22044,"nodeType":"ParameterList","parameters":[{"constant":false,"id":22043,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":22078,"src":"2501:7:76","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":22042,"name":"uint256","nodeType":"ElementaryTypeName","src":"2501:7:76","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"2500:9:76"},"scope":22207,"src":"2420:344:76","stateMutability":"view","virtual":true,"visibility":"public"},{"baseFunctions":[20694],"body":{"id":22092,"nodeType":"Block","src":"2873:33:76","statements":[{"expression":{"arguments":[{"id":22089,"name":"_asset","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":21872,"src":"2894:6:76","typeDescriptions":{"typeIdentifier":"t_contract$_IERC20_$8679","typeString":"contract IERC20"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_contract$_IERC20_$8679","typeString":"contract IERC20"}],"id":22088,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"2886:7:76","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":22087,"name":"address","nodeType":"ElementaryTypeName","src":"2886:7:76","typeDescriptions":{}}},"id":22090,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"2886:15:76","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"functionReturnParameters":22086,"id":22091,"nodeType":"Return","src":"2879:22:76"}]},"documentation":{"id":22079,"nodeType":"StructuredDocumentation","src":"2768:31:76","text":"@inheritdoc IInvestStrategy"},"functionSelector":"9c4667a2","id":22093,"implemented":true,"kind":"function","modifiers":[],"name":"asset","nameLocation":"2811:5:76","nodeType":"FunctionDefinition","overrides":{"id":22083,"nodeType":"OverrideSpecifier","overrides":[],"src":"2846:8:76"},"parameters":{"id":22082,"nodeType":"ParameterList","parameters":[{"constant":false,"id":22081,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":22093,"src":"2817:7:76","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":22080,"name":"address","nodeType":"ElementaryTypeName","src":"2817:7:76","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"2816:9:76"},"returnParameters":{"id":22086,"nodeType":"ParameterList","parameters":[{"constant":false,"id":22085,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":22093,"src":"2864:7:76","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":22084,"name":"address","nodeType":"ElementaryTypeName","src":"2864:7:76","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"2863:9:76"},"scope":22207,"src":"2802:104:76","stateMutability":"view","virtual":true,"visibility":"public"},{"baseFunctions":[20702],"body":{"id":22111,"nodeType":"Block","src":"3038:75:76","statements":[{"expression":{"arguments":[{"id":22108,"name":"contract_","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":22096,"src":"3098:9:76","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"expression":{"arguments":[{"expression":{"arguments":[],"expression":{"argumentTypes":[],"id":22103,"name":"_reserveData","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":21944,"src":"3058:12:76","typeDescriptions":{"typeIdentifier":"t_function_internal_view$__$returns$_t_struct$_ReserveData_$17774_memory_ptr_$","typeString":"function () view returns (struct DataTypes.ReserveData memory)"}},"id":22104,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"3058:14:76","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_struct$_ReserveData_$17774_memory_ptr","typeString":"struct DataTypes.ReserveData memory"}},"id":22105,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"3073:13:76","memberName":"aTokenAddress","nodeType":"MemberAccess","referencedDeclaration":17761,"src":"3058:28:76","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"id":22102,"name":"IERC20","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8679,"src":"3051:6:76","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_IERC20_$8679_$","typeString":"type(contract IERC20)"}},"id":22106,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"3051:36:76","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_contract$_IERC20_$8679","typeString":"contract IERC20"}},"id":22107,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"3088:9:76","memberName":"balanceOf","nodeType":"MemberAccess","referencedDeclaration":8636,"src":"3051:46:76","typeDescriptions":{"typeIdentifier":"t_function_external_view$_t_address_$returns$_t_uint256_$","typeString":"function (address) view external returns (uint256)"}},"id":22109,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"3051:57:76","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"functionReturnParameters":22101,"id":22110,"nodeType":"Return","src":"3044:64:76"}]},"documentation":{"id":22094,"nodeType":"StructuredDocumentation","src":"2910:31:76","text":"@inheritdoc IInvestStrategy"},"functionSelector":"f3e0ffbf","id":22112,"implemented":true,"kind":"function","modifiers":[],"name":"totalAssets","nameLocation":"2953:11:76","nodeType":"FunctionDefinition","overrides":{"id":22098,"nodeType":"OverrideSpecifier","overrides":[],"src":"3004:8:76"},"parameters":{"id":22097,"nodeType":"ParameterList","parameters":[{"constant":false,"id":22096,"mutability":"mutable","name":"contract_","nameLocation":"2973:9:76","nodeType":"VariableDeclaration","scope":22112,"src":"2965:17:76","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":22095,"name":"address","nodeType":"ElementaryTypeName","src":"2965:7:76","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"2964:19:76"},"returnParameters":{"id":22101,"nodeType":"ParameterList","parameters":[{"constant":false,"id":22100,"mutability":"mutable","name":"assets","nameLocation":"3030:6:76","nodeType":"VariableDeclaration","scope":22112,"src":"3022:14:76","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":22099,"name":"uint256","nodeType":"ElementaryTypeName","src":"3022:7:76","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"3021:16:76"},"scope":22207,"src":"2944:169:76","stateMutability":"view","virtual":true,"visibility":"public"},{"baseFunctions":[20676],"body":{"id":22139,"nodeType":"Block","src":"3225:82:76","statements":[{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":22123,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":22121,"name":"assets","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":22115,"src":"3235:6:76","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"!=","rightExpression":{"hexValue":"30","id":22122,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"3245:1:76","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"3235:11:76","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":22138,"nodeType":"IfStatement","src":"3231:71:76","trueBody":{"expression":{"arguments":[{"arguments":[{"id":22129,"name":"_asset","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":21872,"src":"3271:6:76","typeDescriptions":{"typeIdentifier":"t_contract$_IERC20_$8679","typeString":"contract IERC20"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_contract$_IERC20_$8679","typeString":"contract IERC20"}],"id":22128,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"3263:7:76","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":22127,"name":"address","nodeType":"ElementaryTypeName","src":"3263:7:76","typeDescriptions":{}}},"id":22130,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"3263:15:76","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":22131,"name":"assets","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":22115,"src":"3280:6:76","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"arguments":[{"id":22134,"name":"this","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-28,"src":"3296:4:76","typeDescriptions":{"typeIdentifier":"t_contract$_AaveV3InvestStrategy_$22207","typeString":"contract AaveV3InvestStrategy"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_contract$_AaveV3InvestStrategy_$22207","typeString":"contract AaveV3InvestStrategy"}],"id":22133,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"3288:7:76","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":22132,"name":"address","nodeType":"ElementaryTypeName","src":"3288:7:76","typeDescriptions":{}}},"id":22135,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"3288:13:76","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_address","typeString":"address"}],"expression":{"id":22124,"name":"_aave","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":21869,"src":"3248:5:76","typeDescriptions":{"typeIdentifier":"t_contract$_IPool_$19003","typeString":"contract IPool"}},"id":22126,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"3254:8:76","memberName":"withdraw","nodeType":"MemberAccess","referencedDeclaration":18620,"src":"3248:14:76","typeDescriptions":{"typeIdentifier":"t_function_external_nonpayable$_t_address_$_t_uint256_$_t_address_$returns$_t_uint256_$","typeString":"function (address,uint256,address) external returns (uint256)"}},"id":22136,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"3248:54:76","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":22137,"nodeType":"ExpressionStatement","src":"3248:54:76"}}]},"documentation":{"id":22113,"nodeType":"StructuredDocumentation","src":"3117:31:76","text":"@inheritdoc IInvestStrategy"},"functionSelector":"2e1a7d4d","id":22140,"implemented":true,"kind":"function","modifiers":[{"id":22119,"kind":"modifierInvocation","modifierName":{"id":22118,"name":"onlyDelegCall","nameLocations":["3211:13:76"],"nodeType":"IdentifierPath","referencedDeclaration":21894,"src":"3211:13:76"},"nodeType":"ModifierInvocation","src":"3211:13:76"}],"name":"withdraw","nameLocation":"3160:8:76","nodeType":"FunctionDefinition","overrides":{"id":22117,"nodeType":"OverrideSpecifier","overrides":[],"src":"3202:8:76"},"parameters":{"id":22116,"nodeType":"ParameterList","parameters":[{"constant":false,"id":22115,"mutability":"mutable","name":"assets","nameLocation":"3177:6:76","nodeType":"VariableDeclaration","scope":22140,"src":"3169:14:76","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":22114,"name":"uint256","nodeType":"ElementaryTypeName","src":"3169:7:76","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"3168:16:76"},"returnParameters":{"id":22120,"nodeType":"ParameterList","parameters":[],"src":"3225:0:76"},"scope":22207,"src":"3151:156:76","stateMutability":"nonpayable","virtual":true,"visibility":"external"},{"baseFunctions":[20670],"body":{"id":22157,"nodeType":"Block","src":"3418:43:76","statements":[{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":22151,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":22149,"name":"assets","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":22143,"src":"3428:6:76","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"!=","rightExpression":{"hexValue":"30","id":22150,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"3438:1:76","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"3428:11:76","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":22156,"nodeType":"IfStatement","src":"3424:32:76","trueBody":{"expression":{"arguments":[{"id":22153,"name":"assets","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":22143,"src":"3449:6:76","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":22152,"name":"_supply","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":22190,"src":"3441:7:76","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_uint256_$returns$__$","typeString":"function (uint256)"}},"id":22154,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"3441:15:76","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":22155,"nodeType":"ExpressionStatement","src":"3441:15:76"}}]},"documentation":{"id":22141,"nodeType":"StructuredDocumentation","src":"3311:31:76","text":"@inheritdoc IInvestStrategy"},"functionSelector":"b6b55f25","id":22158,"implemented":true,"kind":"function","modifiers":[{"id":22147,"kind":"modifierInvocation","modifierName":{"id":22146,"name":"onlyDelegCall","nameLocations":["3404:13:76"],"nodeType":"IdentifierPath","referencedDeclaration":21894,"src":"3404:13:76"},"nodeType":"ModifierInvocation","src":"3404:13:76"}],"name":"deposit","nameLocation":"3354:7:76","nodeType":"FunctionDefinition","overrides":{"id":22145,"nodeType":"OverrideSpecifier","overrides":[],"src":"3395:8:76"},"parameters":{"id":22144,"nodeType":"ParameterList","parameters":[{"constant":false,"id":22143,"mutability":"mutable","name":"assets","nameLocation":"3370:6:76","nodeType":"VariableDeclaration","scope":22158,"src":"3362:14:76","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":22142,"name":"uint256","nodeType":"ElementaryTypeName","src":"3362:7:76","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"3361:16:76"},"returnParameters":{"id":22148,"nodeType":"ParameterList","parameters":[],"src":"3418:0:76"},"scope":22207,"src":"3345:116:76","stateMutability":"nonpayable","virtual":true,"visibility":"external"},{"body":{"id":22189,"nodeType":"Block","src":"3507:118:76","statements":[{"expression":{"arguments":[{"arguments":[{"id":22169,"name":"_aave","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":21869,"src":"3544:5:76","typeDescriptions":{"typeIdentifier":"t_contract$_IPool_$19003","typeString":"contract IPool"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_contract$_IPool_$19003","typeString":"contract IPool"}],"id":22168,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"3536:7:76","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":22167,"name":"address","nodeType":"ElementaryTypeName","src":"3536:7:76","typeDescriptions":{}}},"id":22170,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"3536:14:76","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":22171,"name":"assets","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":22160,"src":"3552:6:76","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"expression":{"arguments":[{"id":22164,"name":"_asset","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":21872,"src":"3520:6:76","typeDescriptions":{"typeIdentifier":"t_contract$_IERC20_$8679","typeString":"contract IERC20"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_contract$_IERC20_$8679","typeString":"contract IERC20"}],"id":22163,"name":"IERC20","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8679,"src":"3513:6:76","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_IERC20_$8679_$","typeString":"type(contract IERC20)"}},"id":22165,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"3513:14:76","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_contract$_IERC20_$8679","typeString":"contract IERC20"}},"id":22166,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"3528:7:76","memberName":"approve","nodeType":"MemberAccess","referencedDeclaration":8666,"src":"3513:22:76","typeDescriptions":{"typeIdentifier":"t_function_external_nonpayable$_t_address_$_t_uint256_$returns$_t_bool_$","typeString":"function (address,uint256) external returns (bool)"}},"id":22172,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"3513:46:76","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":22173,"nodeType":"ExpressionStatement","src":"3513:46:76"},{"expression":{"arguments":[{"arguments":[{"id":22179,"name":"_asset","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":21872,"src":"3586:6:76","typeDescriptions":{"typeIdentifier":"t_contract$_IERC20_$8679","typeString":"contract IERC20"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_contract$_IERC20_$8679","typeString":"contract IERC20"}],"id":22178,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"3578:7:76","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":22177,"name":"address","nodeType":"ElementaryTypeName","src":"3578:7:76","typeDescriptions":{}}},"id":22180,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"3578:15:76","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":22181,"name":"assets","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":22160,"src":"3595:6:76","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"arguments":[{"id":22184,"name":"this","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-28,"src":"3611:4:76","typeDescriptions":{"typeIdentifier":"t_contract$_AaveV3InvestStrategy_$22207","typeString":"contract AaveV3InvestStrategy"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_contract$_AaveV3InvestStrategy_$22207","typeString":"contract AaveV3InvestStrategy"}],"id":22183,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"3603:7:76","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":22182,"name":"address","nodeType":"ElementaryTypeName","src":"3603:7:76","typeDescriptions":{}}},"id":22185,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"3603:13:76","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"hexValue":"30","id":22186,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"3618:1:76","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"}],"expression":{"id":22174,"name":"_aave","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":21869,"src":"3565:5:76","typeDescriptions":{"typeIdentifier":"t_contract$_IPool_$19003","typeString":"contract IPool"}},"id":22176,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"3571:6:76","memberName":"supply","nodeType":"MemberAccess","referencedDeclaration":18588,"src":"3565:12:76","typeDescriptions":{"typeIdentifier":"t_function_external_nonpayable$_t_address_$_t_uint256_$_t_address_$_t_uint16_$returns$__$","typeString":"function (address,uint256,address,uint16) external"}},"id":22187,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"3565:55:76","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":22188,"nodeType":"ExpressionStatement","src":"3565:55:76"}]},"id":22190,"implemented":true,"kind":"function","modifiers":[],"name":"_supply","nameLocation":"3474:7:76","nodeType":"FunctionDefinition","parameters":{"id":22161,"nodeType":"ParameterList","parameters":[{"constant":false,"id":22160,"mutability":"mutable","name":"assets","nameLocation":"3490:6:76","nodeType":"VariableDeclaration","scope":22190,"src":"3482:14:76","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":22159,"name":"uint256","nodeType":"ElementaryTypeName","src":"3482:7:76","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"3481:16:76"},"returnParameters":{"id":22162,"nodeType":"ParameterList","parameters":[],"src":"3507:0:76"},"scope":22207,"src":"3465:160:76","stateMutability":"nonpayable","virtual":false,"visibility":"internal"},{"baseFunctions":[20686],"body":{"id":22205,"nodeType":"Block","src":"3762:84:76","statements":[{"expression":{"arguments":[],"expression":{"argumentTypes":[],"id":22202,"name":"revert","nodeType":"Identifier","overloadedDeclarations":[-19,-19],"referencedDeclaration":-19,"src":"3833:6:76","typeDescriptions":{"typeIdentifier":"t_function_revert_pure$__$returns$__$","typeString":"function () pure"}},"id":22203,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"3833:8:76","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":22204,"nodeType":"ExpressionStatement","src":"3833:8:76"}]},"documentation":{"id":22191,"nodeType":"StructuredDocumentation","src":"3629:31:76","text":"@inheritdoc IInvestStrategy"},"functionSelector":"0981b1c2","id":22206,"implemented":true,"kind":"function","modifiers":[{"id":22198,"kind":"modifierInvocation","modifierName":{"id":22197,"name":"onlyDelegCall","nameLocations":["3725:13:76"],"nodeType":"IdentifierPath","referencedDeclaration":21894,"src":"3725:13:76"},"nodeType":"ModifierInvocation","src":"3725:13:76"}],"name":"forwardEntryPoint","nameLocation":"3672:17:76","nodeType":"FunctionDefinition","parameters":{"id":22196,"nodeType":"ParameterList","parameters":[{"constant":false,"id":22193,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":22206,"src":"3690:5:76","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"},"typeName":{"id":22192,"name":"uint8","nodeType":"ElementaryTypeName","src":"3690:5:76","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}},"visibility":"internal"},{"constant":false,"id":22195,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":22206,"src":"3697:12:76","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes"},"typeName":{"id":22194,"name":"bytes","nodeType":"ElementaryTypeName","src":"3697:5:76","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"}],"src":"3689:21:76"},"returnParameters":{"id":22201,"nodeType":"ParameterList","parameters":[{"constant":false,"id":22200,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":22206,"src":"3748:12:76","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes"},"typeName":{"id":22199,"name":"bytes","nodeType":"ElementaryTypeName","src":"3748:5:76","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"}],"src":"3747:14:76"},"scope":22207,"src":"3663:183:76","stateMutability":"view","virtual":false,"visibility":"external"}],"scope":22208,"src":"665:3183:76","usedErrors":[21874,21876,21878,21880],"usedEvents":[]}],"src":"39:3810:76"},"id":76},"contracts/strategies/ChainlinkSwapAssetInvestStrategy.sol":{"ast":{"absolutePath":"contracts/strategies/ChainlinkSwapAssetInvestStrategy.sol","exportedSymbols":{"AggregatorV3Interface":[20542],"ChainlinkSwapAssetInvestStrategy":[22360],"IERC20Metadata":[9411],"Math":[12726],"SwapAssetInvestStrategy":[24509]},"id":22361,"license":"Apache-2.0","nodeType":"SourceUnit","nodes":[{"id":22209,"literals":["solidity","^","0.8",".0"],"nodeType":"PragmaDirective","src":"39:23:77"},{"absolutePath":"@openzeppelin/contracts/interfaces/IERC20Metadata.sol","file":"@openzeppelin/contracts/interfaces/IERC20Metadata.sol","id":22211,"nameLocation":"-1:-1:-1","nodeType":"ImportDirective","scope":22361,"sourceUnit":6958,"src":"64:85:77","symbolAliases":[{"foreign":{"id":22210,"name":"IERC20Metadata","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9411,"src":"72:14:77","typeDescriptions":{}},"nameLocation":"-1:-1:-1"}],"unitAlias":""},{"absolutePath":"contracts/strategies/SwapAssetInvestStrategy.sol","file":"./SwapAssetInvestStrategy.sol","id":22213,"nameLocation":"-1:-1:-1","nodeType":"ImportDirective","scope":22361,"sourceUnit":24510,"src":"150:70:77","symbolAliases":[{"foreign":{"id":22212,"name":"SwapAssetInvestStrategy","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":24509,"src":"158:23:77","typeDescriptions":{}},"nameLocation":"-1:-1:-1"}],"unitAlias":""},{"absolutePath":"contracts/dependencies/chainlink/AggregatorV3Interface.sol","file":"../dependencies/chainlink/AggregatorV3Interface.sol","id":22215,"nameLocation":"-1:-1:-1","nodeType":"ImportDirective","scope":22361,"sourceUnit":20543,"src":"221:90:77","symbolAliases":[{"foreign":{"id":22214,"name":"AggregatorV3Interface","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":20542,"src":"229:21:77","typeDescriptions":{}},"nameLocation":"-1:-1:-1"}],"unitAlias":""},{"absolutePath":"@openzeppelin/contracts/utils/math/Math.sol","file":"@openzeppelin/contracts/utils/math/Math.sol","id":22217,"nameLocation":"-1:-1:-1","nodeType":"ImportDirective","scope":22361,"sourceUnit":12727,"src":"312:65:77","symbolAliases":[{"foreign":{"id":22216,"name":"Math","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":12726,"src":"320:4:77","typeDescriptions":{}},"nameLocation":"-1:-1:-1"}],"unitAlias":""},{"abstract":false,"baseContracts":[{"baseName":{"id":22219,"name":"SwapAssetInvestStrategy","nameLocations":["1044:23:77"],"nodeType":"IdentifierPath","referencedDeclaration":24509,"src":"1044:23:77"},"id":22220,"nodeType":"InheritanceSpecifier","src":"1044:23:77"}],"canonicalName":"ChainlinkSwapAssetInvestStrategy","contractDependencies":[],"contractKind":"contract","documentation":{"id":22218,"nodeType":"StructuredDocumentation","src":"379:619:77","text":" @title ChainlinkSwapAssetInvestStrategy\n @dev Strategy that invests/deinvests by swapping into another token, where the price of both tokens is obtained\n      from chainlink oracles.\n      The oracles should express the prices in the same base. For example if asset=USDC and investAsset=WPOL,\n      then `assetOracle()` is an oracle that returns the price of USDC in USD (or other base) and\n      `investAssetOracle()` is an oracle that returns the price of WPOL in USD (or other base, but the same as\n      `assetOracle()`).\n @custom:security-contact security@ensuro.co\n @author Ensuro"},"fullyImplemented":true,"id":22360,"linearizedBaseContracts":[22360,24509,20725],"name":"ChainlinkSwapAssetInvestStrategy","nameLocation":"1008:32:77","nodeType":"ContractDefinition","nodes":[{"constant":false,"functionSelector":"1d4d3a5d","id":22223,"mutability":"immutable","name":"assetOracle","nameLocation":"1111:11:77","nodeType":"VariableDeclaration","scope":22360,"src":"1072:50:77","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_contract$_AggregatorV3Interface_$20542","typeString":"contract AggregatorV3Interface"},"typeName":{"id":22222,"nodeType":"UserDefinedTypeName","pathNode":{"id":22221,"name":"AggregatorV3Interface","nameLocations":["1072:21:77"],"nodeType":"IdentifierPath","referencedDeclaration":20542,"src":"1072:21:77"},"referencedDeclaration":20542,"src":"1072:21:77","typeDescriptions":{"typeIdentifier":"t_contract$_AggregatorV3Interface_$20542","typeString":"contract AggregatorV3Interface"}},"visibility":"public"},{"constant":false,"functionSelector":"52ebfa29","id":22226,"mutability":"immutable","name":"investAssetOracle","nameLocation":"1165:17:77","nodeType":"VariableDeclaration","scope":22360,"src":"1126:56:77","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_contract$_AggregatorV3Interface_$20542","typeString":"contract AggregatorV3Interface"},"typeName":{"id":22225,"nodeType":"UserDefinedTypeName","pathNode":{"id":22224,"name":"AggregatorV3Interface","nameLocations":["1126:21:77"],"nodeType":"IdentifierPath","referencedDeclaration":20542,"src":"1126:21:77"},"referencedDeclaration":20542,"src":"1126:21:77","typeDescriptions":{"typeIdentifier":"t_contract$_AggregatorV3Interface_$20542","typeString":"contract AggregatorV3Interface"}},"visibility":"public"},{"constant":false,"functionSelector":"59011cd1","id":22228,"mutability":"immutable","name":"priceTolerance","nameLocation":"1211:14:77","nodeType":"VariableDeclaration","scope":22360,"src":"1186:39:77","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":22227,"name":"uint256","nodeType":"ElementaryTypeName","src":"1186:7:77","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"public"},{"errorSelector":"3156ea93","id":22234,"name":"PriceTooOld","nameLocation":"1236:11:77","nodeType":"ErrorDefinition","parameters":{"id":22233,"nodeType":"ParameterList","parameters":[{"constant":false,"id":22230,"mutability":"mutable","name":"minUpdateAt","nameLocation":"1256:11:77","nodeType":"VariableDeclaration","scope":22234,"src":"1248:19:77","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":22229,"name":"uint256","nodeType":"ElementaryTypeName","src":"1248:7:77","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":22232,"mutability":"mutable","name":"updatedAt","nameLocation":"1277:9:77","nodeType":"VariableDeclaration","scope":22234,"src":"1269:17:77","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":22231,"name":"uint256","nodeType":"ElementaryTypeName","src":"1269:7:77","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"1247:40:77"},"src":"1230:58:77"},{"errorSelector":"38ee04a7","id":22238,"name":"InvalidPrice","nameLocation":"1297:12:77","nodeType":"ErrorDefinition","parameters":{"id":22237,"nodeType":"ParameterList","parameters":[{"constant":false,"id":22236,"mutability":"mutable","name":"chainlinkAnswer","nameLocation":"1317:15:77","nodeType":"VariableDeclaration","scope":22238,"src":"1310:22:77","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"},"typeName":{"id":22235,"name":"int256","nodeType":"ElementaryTypeName","src":"1310:6:77","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"visibility":"internal"}],"src":"1309:24:77"},"src":"1291:43:77"},{"body":{"id":22272,"nodeType":"Block","src":"2071:119:77","statements":[{"expression":{"id":22262,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":22260,"name":"investAssetOracle","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":22226,"src":"2077:17:77","typeDescriptions":{"typeIdentifier":"t_contract$_AggregatorV3Interface_$20542","typeString":"contract AggregatorV3Interface"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"id":22261,"name":"investAssetOracle_","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":22251,"src":"2097:18:77","typeDescriptions":{"typeIdentifier":"t_contract$_AggregatorV3Interface_$20542","typeString":"contract AggregatorV3Interface"}},"src":"2077:38:77","typeDescriptions":{"typeIdentifier":"t_contract$_AggregatorV3Interface_$20542","typeString":"contract AggregatorV3Interface"}},"id":22263,"nodeType":"ExpressionStatement","src":"2077:38:77"},{"expression":{"id":22266,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":22264,"name":"assetOracle","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":22223,"src":"2121:11:77","typeDescriptions":{"typeIdentifier":"t_contract$_AggregatorV3Interface_$20542","typeString":"contract AggregatorV3Interface"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"id":22265,"name":"assetOracle_","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":22248,"src":"2135:12:77","typeDescriptions":{"typeIdentifier":"t_contract$_AggregatorV3Interface_$20542","typeString":"contract AggregatorV3Interface"}},"src":"2121:26:77","typeDescriptions":{"typeIdentifier":"t_contract$_AggregatorV3Interface_$20542","typeString":"contract AggregatorV3Interface"}},"id":22267,"nodeType":"ExpressionStatement","src":"2121:26:77"},{"expression":{"id":22270,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":22268,"name":"priceTolerance","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":22228,"src":"2153:14:77","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"id":22269,"name":"priceTolerance_","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":22253,"src":"2170:15:77","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"2153:32:77","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":22271,"nodeType":"ExpressionStatement","src":"2153:32:77"}]},"documentation":{"id":22239,"nodeType":"StructuredDocumentation","src":"1338:493:77","text":" @dev Constructor of the strategy\n @param asset_ The address of the underlying token used for accounting, depositing, and withdrawing.\n @param investAsset_ The address of the tokens hold by the strategy. Typically a rebasing yield bearing token\n @param assetOracle_ The chainlink oracle to obtain the price of the asset. If address(0) the price is 1.\n @param investAssetOracle_ The chainlink oracle to obtain the price of the invest asset. If address(0) => 1"},"id":22273,"implemented":true,"kind":"constructor","modifiers":[{"arguments":[{"id":22256,"name":"asset_","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":22242,"src":"2049:6:77","typeDescriptions":{"typeIdentifier":"t_contract$_IERC20Metadata_$9411","typeString":"contract IERC20Metadata"}},{"id":22257,"name":"investAsset_","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":22245,"src":"2057:12:77","typeDescriptions":{"typeIdentifier":"t_contract$_IERC20Metadata_$9411","typeString":"contract IERC20Metadata"}}],"id":22258,"kind":"baseConstructorSpecifier","modifierName":{"id":22255,"name":"SwapAssetInvestStrategy","nameLocations":["2025:23:77"],"nodeType":"IdentifierPath","referencedDeclaration":24509,"src":"2025:23:77"},"nodeType":"ModifierInvocation","src":"2025:45:77"}],"name":"","nameLocation":"-1:-1:-1","nodeType":"FunctionDefinition","parameters":{"id":22254,"nodeType":"ParameterList","parameters":[{"constant":false,"id":22242,"mutability":"mutable","name":"asset_","nameLocation":"1866:6:77","nodeType":"VariableDeclaration","scope":22273,"src":"1851:21:77","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_contract$_IERC20Metadata_$9411","typeString":"contract IERC20Metadata"},"typeName":{"id":22241,"nodeType":"UserDefinedTypeName","pathNode":{"id":22240,"name":"IERC20Metadata","nameLocations":["1851:14:77"],"nodeType":"IdentifierPath","referencedDeclaration":9411,"src":"1851:14:77"},"referencedDeclaration":9411,"src":"1851:14:77","typeDescriptions":{"typeIdentifier":"t_contract$_IERC20Metadata_$9411","typeString":"contract IERC20Metadata"}},"visibility":"internal"},{"constant":false,"id":22245,"mutability":"mutable","name":"investAsset_","nameLocation":"1893:12:77","nodeType":"VariableDeclaration","scope":22273,"src":"1878:27:77","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_contract$_IERC20Metadata_$9411","typeString":"contract IERC20Metadata"},"typeName":{"id":22244,"nodeType":"UserDefinedTypeName","pathNode":{"id":22243,"name":"IERC20Metadata","nameLocations":["1878:14:77"],"nodeType":"IdentifierPath","referencedDeclaration":9411,"src":"1878:14:77"},"referencedDeclaration":9411,"src":"1878:14:77","typeDescriptions":{"typeIdentifier":"t_contract$_IERC20Metadata_$9411","typeString":"contract IERC20Metadata"}},"visibility":"internal"},{"constant":false,"id":22248,"mutability":"mutable","name":"assetOracle_","nameLocation":"1933:12:77","nodeType":"VariableDeclaration","scope":22273,"src":"1911:34:77","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_contract$_AggregatorV3Interface_$20542","typeString":"contract AggregatorV3Interface"},"typeName":{"id":22247,"nodeType":"UserDefinedTypeName","pathNode":{"id":22246,"name":"AggregatorV3Interface","nameLocations":["1911:21:77"],"nodeType":"IdentifierPath","referencedDeclaration":20542,"src":"1911:21:77"},"referencedDeclaration":20542,"src":"1911:21:77","typeDescriptions":{"typeIdentifier":"t_contract$_AggregatorV3Interface_$20542","typeString":"contract AggregatorV3Interface"}},"visibility":"internal"},{"constant":false,"id":22251,"mutability":"mutable","name":"investAssetOracle_","nameLocation":"1973:18:77","nodeType":"VariableDeclaration","scope":22273,"src":"1951:40:77","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_contract$_AggregatorV3Interface_$20542","typeString":"contract AggregatorV3Interface"},"typeName":{"id":22250,"nodeType":"UserDefinedTypeName","pathNode":{"id":22249,"name":"AggregatorV3Interface","nameLocations":["1951:21:77"],"nodeType":"IdentifierPath","referencedDeclaration":20542,"src":"1951:21:77"},"referencedDeclaration":20542,"src":"1951:21:77","typeDescriptions":{"typeIdentifier":"t_contract$_AggregatorV3Interface_$20542","typeString":"contract AggregatorV3Interface"}},"visibility":"internal"},{"constant":false,"id":22253,"mutability":"mutable","name":"priceTolerance_","nameLocation":"2005:15:77","nodeType":"VariableDeclaration","scope":22273,"src":"1997:23:77","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":22252,"name":"uint256","nodeType":"ElementaryTypeName","src":"1997:7:77","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"1845:179:77"},"returnParameters":{"id":22259,"nodeType":"ParameterList","parameters":[],"src":"2071:0:77"},"scope":22360,"src":"1834:356:77","stateMutability":"nonpayable","virtual":false,"visibility":"public"},{"baseFunctions":[24170],"body":{"id":22290,"nodeType":"Block","src":"2269:100:77","statements":[{"expression":{"arguments":[{"arguments":[{"id":22282,"name":"investAssetOracle","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":22226,"src":"2310:17:77","typeDescriptions":{"typeIdentifier":"t_contract$_AggregatorV3Interface_$20542","typeString":"contract AggregatorV3Interface"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_contract$_AggregatorV3Interface_$20542","typeString":"contract AggregatorV3Interface"}],"id":22281,"name":"_getOraclePrice","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":22359,"src":"2294:15:77","typeDescriptions":{"typeIdentifier":"t_function_internal_view$_t_contract$_AggregatorV3Interface_$20542_$returns$_t_uint256_$","typeString":"function (contract AggregatorV3Interface) view returns (uint256)"}},"id":22283,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"2294:34:77","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"id":22284,"name":"WAD","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":23940,"src":"2330:3:77","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"arguments":[{"id":22286,"name":"assetOracle","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":22223,"src":"2351:11:77","typeDescriptions":{"typeIdentifier":"t_contract$_AggregatorV3Interface_$20542","typeString":"contract AggregatorV3Interface"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_contract$_AggregatorV3Interface_$20542","typeString":"contract AggregatorV3Interface"}],"id":22285,"name":"_getOraclePrice","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":22359,"src":"2335:15:77","typeDescriptions":{"typeIdentifier":"t_function_internal_view$_t_contract$_AggregatorV3Interface_$20542_$returns$_t_uint256_$","typeString":"function (contract AggregatorV3Interface) view returns (uint256)"}},"id":22287,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"2335:28:77","tryCall":false,"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":22279,"name":"Math","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":12726,"src":"2282:4:77","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_Math_$12726_$","typeString":"type(library Math)"}},"id":22280,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"2287:6:77","memberName":"mulDiv","nodeType":"MemberAccess","referencedDeclaration":11611,"src":"2282:11:77","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_uint256_$_t_uint256_$_t_uint256_$returns$_t_uint256_$","typeString":"function (uint256,uint256,uint256) pure returns (uint256)"}},"id":22288,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"2282:82:77","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"functionReturnParameters":22278,"id":22289,"nodeType":"Return","src":"2275:89:77"}]},"functionSelector":"1418983b","id":22291,"implemented":true,"kind":"function","modifiers":[],"name":"investAssetPrice","nameLocation":"2203:16:77","nodeType":"FunctionDefinition","overrides":{"id":22275,"nodeType":"OverrideSpecifier","overrides":[],"src":"2242:8:77"},"parameters":{"id":22274,"nodeType":"ParameterList","parameters":[],"src":"2219:2:77"},"returnParameters":{"id":22278,"nodeType":"ParameterList","parameters":[{"constant":false,"id":22277,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":22291,"src":"2260:7:77","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":22276,"name":"uint256","nodeType":"ElementaryTypeName","src":"2260:7:77","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"2259:9:77"},"scope":22360,"src":"2194:175:77","stateMutability":"view","virtual":true,"visibility":"public"},{"body":{"id":22358,"nodeType":"Block","src":"2460:354:77","statements":[{"condition":{"commonType":{"typeIdentifier":"t_address","typeString":"address"},"id":22307,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"arguments":[{"id":22301,"name":"oracle","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":22294,"src":"2478:6:77","typeDescriptions":{"typeIdentifier":"t_contract$_AggregatorV3Interface_$20542","typeString":"contract AggregatorV3Interface"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_contract$_AggregatorV3Interface_$20542","typeString":"contract AggregatorV3Interface"}],"id":22300,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"2470:7:77","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":22299,"name":"address","nodeType":"ElementaryTypeName","src":"2470:7:77","typeDescriptions":{}}},"id":22302,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"2470:15:77","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"arguments":[{"hexValue":"30","id":22305,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"2497:1:77","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":22304,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"2489:7:77","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":22303,"name":"address","nodeType":"ElementaryTypeName","src":"2489:7:77","typeDescriptions":{}}},"id":22306,"isConstant":false,"isLValue":false,"isPure":true,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"2489:10:77","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"src":"2470:29:77","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":22310,"nodeType":"IfStatement","src":"2466:45:77","trueBody":{"expression":{"id":22308,"name":"WAD","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":23940,"src":"2508:3:77","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"functionReturnParameters":22298,"id":22309,"nodeType":"Return","src":"2501:10:77"}},{"assignments":[null,22312,null,22314,null],"declarations":[null,{"constant":false,"id":22312,"mutability":"mutable","name":"answer","nameLocation":"2527:6:77","nodeType":"VariableDeclaration","scope":22358,"src":"2520:13:77","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"},"typeName":{"id":22311,"name":"int256","nodeType":"ElementaryTypeName","src":"2520:6:77","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"visibility":"internal"},null,{"constant":false,"id":22314,"mutability":"mutable","name":"updatedAt","nameLocation":"2545:9:77","nodeType":"VariableDeclaration","scope":22358,"src":"2537:17:77","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":22313,"name":"uint256","nodeType":"ElementaryTypeName","src":"2537:7:77","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},null],"id":22318,"initialValue":{"arguments":[],"expression":{"argumentTypes":[],"expression":{"id":22315,"name":"oracle","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":22294,"src":"2560:6:77","typeDescriptions":{"typeIdentifier":"t_contract$_AggregatorV3Interface_$20542","typeString":"contract AggregatorV3Interface"}},"id":22316,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"2567:15:77","memberName":"latestRoundData","nodeType":"MemberAccess","referencedDeclaration":20541,"src":"2560:22:77","typeDescriptions":{"typeIdentifier":"t_function_external_view$__$returns$_t_uint80_$_t_int256_$_t_uint256_$_t_uint256_$_t_uint80_$","typeString":"function () view external returns (uint80,int256,uint256,uint256,uint80)"}},"id":22317,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"2560:24:77","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$_t_uint80_$_t_int256_$_t_uint256_$_t_uint256_$_t_uint80_$","typeString":"tuple(uint80,int256,uint256,uint256,uint80)"}},"nodeType":"VariableDeclarationStatement","src":"2517:67:77"},{"expression":{"arguments":[{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":22325,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":22320,"name":"updatedAt","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":22314,"src":"2598:9:77","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">","rightExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":22324,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"expression":{"id":22321,"name":"block","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-4,"src":"2610:5:77","typeDescriptions":{"typeIdentifier":"t_magic_block","typeString":"block"}},"id":22322,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"2616:9:77","memberName":"timestamp","nodeType":"MemberAccess","src":"2610:15:77","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"-","rightExpression":{"id":22323,"name":"priceTolerance","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":22228,"src":"2628:14:77","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"2610:32:77","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"2598:44:77","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},{"arguments":[{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":22330,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"expression":{"id":22327,"name":"block","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-4,"src":"2656:5:77","typeDescriptions":{"typeIdentifier":"t_magic_block","typeString":"block"}},"id":22328,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"2662:9:77","memberName":"timestamp","nodeType":"MemberAccess","src":"2656:15:77","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"-","rightExpression":{"id":22329,"name":"priceTolerance","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":22228,"src":"2674:14:77","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"2656:32:77","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"id":22331,"name":"updatedAt","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":22314,"src":"2690:9:77","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":22326,"name":"PriceTooOld","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":22234,"src":"2644:11:77","typeDescriptions":{"typeIdentifier":"t_function_error_pure$_t_uint256_$_t_uint256_$returns$_t_error_$","typeString":"function (uint256,uint256) pure returns (error)"}},"id":22332,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"2644:56:77","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_error","typeString":"error"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_error","typeString":"error"}],"id":22319,"name":"require","nodeType":"Identifier","overloadedDeclarations":[-18,-18,-18],"referencedDeclaration":-18,"src":"2590:7:77","typeDescriptions":{"typeIdentifier":"t_function_require_pure$_t_bool_$_t_error_$returns$__$","typeString":"function (bool,error) pure"}},"id":22333,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"2590:111:77","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":22334,"nodeType":"ExpressionStatement","src":"2590:111:77"},{"expression":{"arguments":[{"commonType":{"typeIdentifier":"t_int256","typeString":"int256"},"id":22338,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":22336,"name":"answer","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":22312,"src":"2715:6:77","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"nodeType":"BinaryOperation","operator":">","rightExpression":{"hexValue":"30","id":22337,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"2724:1:77","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"2715:10:77","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},{"arguments":[{"id":22340,"name":"answer","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":22312,"src":"2740:6:77","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_int256","typeString":"int256"}],"id":22339,"name":"InvalidPrice","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":22238,"src":"2727:12:77","typeDescriptions":{"typeIdentifier":"t_function_error_pure$_t_int256_$returns$_t_error_$","typeString":"function (int256) pure returns (error)"}},"id":22341,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"2727:20:77","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_error","typeString":"error"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_error","typeString":"error"}],"id":22335,"name":"require","nodeType":"Identifier","overloadedDeclarations":[-18,-18,-18],"referencedDeclaration":-18,"src":"2707:7:77","typeDescriptions":{"typeIdentifier":"t_function_require_pure$_t_bool_$_t_error_$returns$__$","typeString":"function (bool,error) pure"}},"id":22342,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"2707:41:77","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":22343,"nodeType":"ExpressionStatement","src":"2707:41:77"},{"expression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":22356,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"arguments":[{"id":22346,"name":"answer","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":22312,"src":"2769:6:77","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_int256","typeString":"int256"}],"id":22345,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"2761:7:77","typeDescriptions":{"typeIdentifier":"t_type$_t_uint256_$","typeString":"type(uint256)"},"typeName":{"id":22344,"name":"uint256","nodeType":"ElementaryTypeName","src":"2761:7:77","typeDescriptions":{}}},"id":22347,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"2761:15:77","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"*","rightExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":22355,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"hexValue":"3130","id":22348,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"2779:2:77","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":22353,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"hexValue":"3138","id":22349,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"2786:2:77","typeDescriptions":{"typeIdentifier":"t_rational_18_by_1","typeString":"int_const 18"},"value":"18"},"nodeType":"BinaryOperation","operator":"-","rightExpression":{"arguments":[],"expression":{"argumentTypes":[],"expression":{"id":22350,"name":"oracle","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":22294,"src":"2791:6:77","typeDescriptions":{"typeIdentifier":"t_contract$_AggregatorV3Interface_$20542","typeString":"contract AggregatorV3Interface"}},"id":22351,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"2798:8:77","memberName":"decimals","nodeType":"MemberAccess","referencedDeclaration":20503,"src":"2791:15:77","typeDescriptions":{"typeIdentifier":"t_function_external_view$__$returns$_t_uint8_$","typeString":"function () view external returns (uint8)"}},"id":22352,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"2791:17:77","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}},"src":"2786:22:77","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}}],"id":22354,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"2785:24:77","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}},"src":"2779:30:77","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"2761:48:77","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"functionReturnParameters":22298,"id":22357,"nodeType":"Return","src":"2754:55:77"}]},"id":22359,"implemented":true,"kind":"function","modifiers":[],"name":"_getOraclePrice","nameLocation":"2382:15:77","nodeType":"FunctionDefinition","parameters":{"id":22295,"nodeType":"ParameterList","parameters":[{"constant":false,"id":22294,"mutability":"mutable","name":"oracle","nameLocation":"2420:6:77","nodeType":"VariableDeclaration","scope":22359,"src":"2398:28:77","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_contract$_AggregatorV3Interface_$20542","typeString":"contract AggregatorV3Interface"},"typeName":{"id":22293,"nodeType":"UserDefinedTypeName","pathNode":{"id":22292,"name":"AggregatorV3Interface","nameLocations":["2398:21:77"],"nodeType":"IdentifierPath","referencedDeclaration":20542,"src":"2398:21:77"},"referencedDeclaration":20542,"src":"2398:21:77","typeDescriptions":{"typeIdentifier":"t_contract$_AggregatorV3Interface_$20542","typeString":"contract AggregatorV3Interface"}},"visibility":"internal"}],"src":"2397:30:77"},"returnParameters":{"id":22298,"nodeType":"ParameterList","parameters":[{"constant":false,"id":22297,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":22359,"src":"2451:7:77","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":22296,"name":"uint256","nodeType":"ElementaryTypeName","src":"2451:7:77","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"2450:9:77"},"scope":22360,"src":"2373:441:77","stateMutability":"view","virtual":false,"visibility":"internal"}],"scope":22361,"src":"999:1817:77","usedErrors":[22234,22238,23968,23970,23972,23974],"usedEvents":[23966]}],"src":"39:2778:77"},"id":77},"contracts/strategies/CompoundV3InvestStrategy.sol":{"ast":{"absolutePath":"contracts/strategies/CompoundV3InvestStrategy.sol","exportedSymbols":{"CompoundV3InvestStrategy":[22951],"ICometRewards":[20581],"ICompoundV3":[20619],"IERC20":[8679],"IExposeStorage":[20649],"IInvestStrategy":[20725],"InvestStrategyClient":[15693],"MSVBase":[17366],"StorageSlot":[11032],"SwapLibrary":[1879]},"id":22952,"license":"Apache-2.0","nodeType":"SourceUnit","nodes":[{"id":22362,"literals":["solidity","^","0.8",".0"],"nodeType":"PragmaDirective","src":"39:23:78"},{"absolutePath":"contracts/dependencies/compound-v3/ICompoundV3.sol","file":"../dependencies/compound-v3/ICompoundV3.sol","id":22364,"nameLocation":"-1:-1:-1","nodeType":"ImportDirective","scope":22952,"sourceUnit":20620,"src":"64:72:78","symbolAliases":[{"foreign":{"id":22363,"name":"ICompoundV3","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":20619,"src":"72:11:78","typeDescriptions":{}},"nameLocation":"-1:-1:-1"}],"unitAlias":""},{"absolutePath":"contracts/dependencies/compound-v3/ICometRewards.sol","file":"../dependencies/compound-v3/ICometRewards.sol","id":22366,"nameLocation":"-1:-1:-1","nodeType":"ImportDirective","scope":22952,"sourceUnit":20582,"src":"137:76:78","symbolAliases":[{"foreign":{"id":22365,"name":"ICometRewards","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":20581,"src":"145:13:78","typeDescriptions":{}},"nameLocation":"-1:-1:-1"}],"unitAlias":""},{"absolutePath":"@openzeppelin/contracts/interfaces/IERC20.sol","file":"@openzeppelin/contracts/interfaces/IERC20.sol","id":22368,"nameLocation":"-1:-1:-1","nodeType":"ImportDirective","scope":22952,"sourceUnit":6954,"src":"214:69:78","symbolAliases":[{"foreign":{"id":22367,"name":"IERC20","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8679,"src":"222:6:78","typeDescriptions":{}},"nameLocation":"-1:-1:-1"}],"unitAlias":""},{"absolutePath":"@ensuro/swaplibrary/contracts/SwapLibrary.sol","file":"@ensuro/swaplibrary/contracts/SwapLibrary.sol","id":22370,"nameLocation":"-1:-1:-1","nodeType":"ImportDirective","scope":22952,"sourceUnit":1880,"src":"284:74:78","symbolAliases":[{"foreign":{"id":22369,"name":"SwapLibrary","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1879,"src":"292:11:78","typeDescriptions":{}},"nameLocation":"-1:-1:-1"}],"unitAlias":""},{"absolutePath":"contracts/interfaces/IInvestStrategy.sol","file":"../interfaces/IInvestStrategy.sol","id":22372,"nameLocation":"-1:-1:-1","nodeType":"ImportDirective","scope":22952,"sourceUnit":20726,"src":"359:66:78","symbolAliases":[{"foreign":{"id":22371,"name":"IInvestStrategy","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":20725,"src":"367:15:78","typeDescriptions":{}},"nameLocation":"-1:-1:-1"}],"unitAlias":""},{"absolutePath":"@openzeppelin/contracts/utils/StorageSlot.sol","file":"@openzeppelin/contracts/utils/StorageSlot.sol","id":22374,"nameLocation":"-1:-1:-1","nodeType":"ImportDirective","scope":22952,"sourceUnit":11033,"src":"426:74:78","symbolAliases":[{"foreign":{"id":22373,"name":"StorageSlot","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":11032,"src":"434:11:78","typeDescriptions":{}},"nameLocation":"-1:-1:-1"}],"unitAlias":""},{"absolutePath":"contracts/interfaces/IExposeStorage.sol","file":"../interfaces/IExposeStorage.sol","id":22376,"nameLocation":"-1:-1:-1","nodeType":"ImportDirective","scope":22952,"sourceUnit":20650,"src":"501:64:78","symbolAliases":[{"foreign":{"id":22375,"name":"IExposeStorage","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":20649,"src":"509:14:78","typeDescriptions":{}},"nameLocation":"-1:-1:-1"}],"unitAlias":""},{"absolutePath":"contracts/InvestStrategyClient.sol","file":"../InvestStrategyClient.sol","id":22378,"nameLocation":"-1:-1:-1","nodeType":"ImportDirective","scope":22952,"sourceUnit":15694,"src":"566:65:78","symbolAliases":[{"foreign":{"id":22377,"name":"InvestStrategyClient","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":15693,"src":"574:20:78","typeDescriptions":{}},"nameLocation":"-1:-1:-1"}],"unitAlias":""},{"absolutePath":"contracts/MSVBase.sol","file":"../MSVBase.sol","id":22380,"nameLocation":"-1:-1:-1","nodeType":"ImportDirective","scope":22952,"sourceUnit":17367,"src":"632:39:78","symbolAliases":[{"foreign":{"id":22379,"name":"MSVBase","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":17366,"src":"640:7:78","typeDescriptions":{}},"nameLocation":"-1:-1:-1"}],"unitAlias":""},{"abstract":false,"baseContracts":[{"baseName":{"id":22382,"name":"IInvestStrategy","nameLocations":["1352:15:78"],"nodeType":"IdentifierPath","referencedDeclaration":20725,"src":"1352:15:78"},"id":22383,"nodeType":"InheritanceSpecifier","src":"1352:15:78"}],"canonicalName":"CompoundV3InvestStrategy","contractDependencies":[],"contractKind":"contract","documentation":{"id":22381,"nodeType":"StructuredDocumentation","src":"673:641:78","text":" @title CompoundV3InvestStrategy\n @dev Strategy that invests/deinvests into CompoundV3 on each deposit/withdraw. Also, has a method to claim the\n      rewards, swap them, and reinvests the result into CompoundV3.\n      The rewards are not accounted in the totalAssets() until they are claimed. It's advised to claim the rewards\n      frequently, to avoid discrete variations on the returns.\n      This strategy as the other IInvestStrategy are supposed to be called with delegateCall by a vault, managing\n      the assets on behalf of the vault.\n @custom:security-contact security@ensuro.co\n @author Ensuro"},"fullyImplemented":true,"id":22951,"linearizedBaseContracts":[22951,20725],"name":"CompoundV3InvestStrategy","nameLocation":"1324:24:78","nodeType":"ContractDefinition","nodes":[{"global":false,"id":22387,"libraryName":{"id":22384,"name":"SwapLibrary","nameLocations":["1378:11:78"],"nodeType":"IdentifierPath","referencedDeclaration":1879,"src":"1378:11:78"},"nodeType":"UsingForDirective","src":"1372:45:78","typeName":{"id":22386,"nodeType":"UserDefinedTypeName","pathNode":{"id":22385,"name":"SwapLibrary.SwapConfig","nameLocations":["1394:11:78","1406:10:78"],"nodeType":"IdentifierPath","referencedDeclaration":1113,"src":"1394:22:78"},"referencedDeclaration":1113,"src":"1394:22:78","typeDescriptions":{"typeIdentifier":"t_struct$_SwapConfig_$1113_storage_ptr","typeString":"struct SwapLibrary.SwapConfig"}}},{"constant":false,"id":22393,"mutability":"immutable","name":"__self","nameLocation":"1447:6:78","nodeType":"VariableDeclaration","scope":22951,"src":"1421:48:78","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":22388,"name":"address","nodeType":"ElementaryTypeName","src":"1421:7:78","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"value":{"arguments":[{"id":22391,"name":"this","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-28,"src":"1464:4:78","typeDescriptions":{"typeIdentifier":"t_contract$_CompoundV3InvestStrategy_$22951","typeString":"contract CompoundV3InvestStrategy"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_contract$_CompoundV3InvestStrategy_$22951","typeString":"contract CompoundV3InvestStrategy"}],"id":22390,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"1456:7:78","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":22389,"name":"address","nodeType":"ElementaryTypeName","src":"1456:7:78","typeDescriptions":{}}},"id":22392,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"1456:13:78","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"private"},{"baseFunctions":[20724],"constant":false,"functionSelector":"5b9a4c35","id":22399,"mutability":"immutable","name":"storageSlot","nameLocation":"1498:11:78","nodeType":"VariableDeclaration","scope":22951,"src":"1473:81:78","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":22394,"name":"bytes32","nodeType":"ElementaryTypeName","src":"1473:7:78","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"value":{"arguments":[{"id":22397,"name":"this","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-28,"src":"1549:4:78","typeDescriptions":{"typeIdentifier":"t_contract$_CompoundV3InvestStrategy_$22951","typeString":"contract CompoundV3InvestStrategy"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_contract$_CompoundV3InvestStrategy_$22951","typeString":"contract CompoundV3InvestStrategy"}],"expression":{"id":22395,"name":"InvestStrategyClient","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":15693,"src":"1512:20:78","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_InvestStrategyClient_$15693_$","typeString":"type(library InvestStrategyClient)"}},"id":22396,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"1533:15:78","memberName":"makeStorageSlot","nodeType":"MemberAccess","referencedDeclaration":15638,"src":"1512:36:78","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_contract$_IInvestStrategy_$20725_$returns$_t_bytes32_$","typeString":"function (contract IInvestStrategy) pure returns (bytes32)"}},"id":22398,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"1512:42:78","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"public"},{"constant":false,"id":22402,"mutability":"immutable","name":"_cToken","nameLocation":"1590:7:78","nodeType":"VariableDeclaration","scope":22951,"src":"1559:38:78","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_contract$_ICompoundV3_$20619","typeString":"contract ICompoundV3"},"typeName":{"id":22401,"nodeType":"UserDefinedTypeName","pathNode":{"id":22400,"name":"ICompoundV3","nameLocations":["1559:11:78"],"nodeType":"IdentifierPath","referencedDeclaration":20619,"src":"1559:11:78"},"referencedDeclaration":20619,"src":"1559:11:78","typeDescriptions":{"typeIdentifier":"t_contract$_ICompoundV3_$20619","typeString":"contract ICompoundV3"}},"visibility":"internal"},{"constant":false,"id":22405,"mutability":"immutable","name":"_rewardsManager","nameLocation":"1634:15:78","nodeType":"VariableDeclaration","scope":22951,"src":"1601:48:78","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_contract$_ICometRewards_$20581","typeString":"contract ICometRewards"},"typeName":{"id":22404,"nodeType":"UserDefinedTypeName","pathNode":{"id":22403,"name":"ICometRewards","nameLocations":["1601:13:78"],"nodeType":"IdentifierPath","referencedDeclaration":20581,"src":"1601:13:78"},"referencedDeclaration":20581,"src":"1601:13:78","typeDescriptions":{"typeIdentifier":"t_contract$_ICometRewards_$20581","typeString":"contract ICometRewards"}},"visibility":"internal"},{"constant":false,"id":22407,"mutability":"immutable","name":"_baseToken","nameLocation":"1680:10:78","nodeType":"VariableDeclaration","scope":22951,"src":"1653:37:78","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":22406,"name":"address","nodeType":"ElementaryTypeName","src":"1653:7:78","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"anonymous":false,"documentation":{"id":22408,"nodeType":"StructuredDocumentation","src":"1695:282:78","text":" @dev Emitted when the rewards are claimed\n @param token The token in which the rewards are denominated\n @param rewards Amount of rewards received (in units of token)\n @param receivedInAsset Amount of `asset()` received in exchange of the rewards sold"},"eventSelector":"dacbdde355ba930696a362ea6738feb9f8bd52dfb3d81947558fd3217e23e325","id":22416,"name":"RewardsClaimed","nameLocation":"1986:14:78","nodeType":"EventDefinition","parameters":{"id":22415,"nodeType":"ParameterList","parameters":[{"constant":false,"id":22410,"indexed":false,"mutability":"mutable","name":"token","nameLocation":"2009:5:78","nodeType":"VariableDeclaration","scope":22416,"src":"2001:13:78","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":22409,"name":"address","nodeType":"ElementaryTypeName","src":"2001:7:78","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":22412,"indexed":false,"mutability":"mutable","name":"rewards","nameLocation":"2024:7:78","nodeType":"VariableDeclaration","scope":22416,"src":"2016:15:78","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":22411,"name":"uint256","nodeType":"ElementaryTypeName","src":"2016:7:78","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":22414,"indexed":false,"mutability":"mutable","name":"receivedInAsset","nameLocation":"2041:15:78","nodeType":"VariableDeclaration","scope":22416,"src":"2033:23:78","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":22413,"name":"uint256","nodeType":"ElementaryTypeName","src":"2033:7:78","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"2000:57:78"},"src":"1980:78:78"},{"anonymous":false,"documentation":{"id":22417,"nodeType":"StructuredDocumentation","src":"2062:248:78","text":" @dev Emitted when the swap config is changed. This swap config is used to swap the rewards for assets``\n @param oldConfig The swap configuration before the change\n @param newConfig The swap configuration after the change"},"eventSelector":"ca7f7aa563866a1d31c74deba224724d1da9c35cbb6f783f2ccf0182f91e34f8","id":22425,"name":"SwapConfigChanged","nameLocation":"2319:17:78","nodeType":"EventDefinition","parameters":{"id":22424,"nodeType":"ParameterList","parameters":[{"constant":false,"id":22420,"indexed":false,"mutability":"mutable","name":"oldConfig","nameLocation":"2360:9:78","nodeType":"VariableDeclaration","scope":22425,"src":"2337:32:78","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_struct$_SwapConfig_$1113_memory_ptr","typeString":"struct SwapLibrary.SwapConfig"},"typeName":{"id":22419,"nodeType":"UserDefinedTypeName","pathNode":{"id":22418,"name":"SwapLibrary.SwapConfig","nameLocations":["2337:11:78","2349:10:78"],"nodeType":"IdentifierPath","referencedDeclaration":1113,"src":"2337:22:78"},"referencedDeclaration":1113,"src":"2337:22:78","typeDescriptions":{"typeIdentifier":"t_struct$_SwapConfig_$1113_storage_ptr","typeString":"struct SwapLibrary.SwapConfig"}},"visibility":"internal"},{"constant":false,"id":22423,"indexed":false,"mutability":"mutable","name":"newConfig","nameLocation":"2394:9:78","nodeType":"VariableDeclaration","scope":22425,"src":"2371:32:78","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_struct$_SwapConfig_$1113_memory_ptr","typeString":"struct SwapLibrary.SwapConfig"},"typeName":{"id":22422,"nodeType":"UserDefinedTypeName","pathNode":{"id":22421,"name":"SwapLibrary.SwapConfig","nameLocations":["2371:11:78","2383:10:78"],"nodeType":"IdentifierPath","referencedDeclaration":1113,"src":"2371:22:78"},"referencedDeclaration":1113,"src":"2371:22:78","typeDescriptions":{"typeIdentifier":"t_struct$_SwapConfig_$1113_storage_ptr","typeString":"struct SwapLibrary.SwapConfig"}},"visibility":"internal"}],"src":"2336:68:78"},"src":"2313:92:78"},{"errorSelector":"aafc462c","id":22427,"name":"CanBeCalledOnlyThroughDelegateCall","nameLocation":"2415:34:78","nodeType":"ErrorDefinition","parameters":{"id":22426,"nodeType":"ParameterList","parameters":[],"src":"2449:2:78"},"src":"2409:43:78"},{"errorSelector":"8542eda2","id":22429,"name":"CannotDisconnectWithAssets","nameLocation":"2461:26:78","nodeType":"ErrorDefinition","parameters":{"id":22428,"nodeType":"ParameterList","parameters":[],"src":"2487:2:78"},"src":"2455:35:78"},{"errorSelector":"50701b61","id":22431,"name":"NoExtraDataAllowed","nameLocation":"2499:18:78","nodeType":"ErrorDefinition","parameters":{"id":22430,"nodeType":"ParameterList","parameters":[],"src":"2517:2:78"},"src":"2493:27:78"},{"errorSelector":"a74363cd","id":22433,"name":"RewardsManagerRequired","nameLocation":"2529:22:78","nodeType":"ErrorDefinition","parameters":{"id":22432,"nodeType":"ParameterList","parameters":[],"src":"2551:2:78"},"src":"2523:31:78"},{"canonicalName":"CompoundV3InvestStrategy.ForwardMethods","documentation":{"id":22434,"nodeType":"StructuredDocumentation","src":"2558:293:78","text":" @dev \"Methods\" called from the vault to execute different operations on the strategy\n @enum harvestRewards Used to trigger the claim of rewards and the swap of them for `asset`\n @enum setSwapConfig Used to change the swap configuration, used for selling the rewards"},"id":22437,"members":[{"id":22435,"name":"harvestRewards","nameLocation":"2880:14:78","nodeType":"EnumValue","src":"2880:14:78"},{"id":22436,"name":"setSwapConfig","nameLocation":"2900:13:78","nodeType":"EnumValue","src":"2900:13:78"}],"name":"ForwardMethods","nameLocation":"2859:14:78","nodeType":"EnumDefinition","src":"2854:63:78"},{"body":{"id":22450,"nodeType":"Block","src":"2946:90:78","statements":[{"condition":{"commonType":{"typeIdentifier":"t_address","typeString":"address"},"id":22444,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"arguments":[{"id":22441,"name":"this","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-28,"src":"2964:4:78","typeDescriptions":{"typeIdentifier":"t_contract$_CompoundV3InvestStrategy_$22951","typeString":"contract CompoundV3InvestStrategy"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_contract$_CompoundV3InvestStrategy_$22951","typeString":"contract CompoundV3InvestStrategy"}],"id":22440,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"2956:7:78","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":22439,"name":"address","nodeType":"ElementaryTypeName","src":"2956:7:78","typeDescriptions":{}}},"id":22442,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"2956:13:78","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"id":22443,"name":"__self","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":22393,"src":"2973:6:78","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"src":"2956:23:78","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":22448,"nodeType":"IfStatement","src":"2952:72:78","trueBody":{"errorCall":{"arguments":[],"expression":{"argumentTypes":[],"id":22445,"name":"CanBeCalledOnlyThroughDelegateCall","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":22427,"src":"2988:34:78","typeDescriptions":{"typeIdentifier":"t_function_error_pure$__$returns$_t_error_$","typeString":"function () pure returns (error)"}},"id":22446,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"2988:36:78","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_error","typeString":"error"}},"id":22447,"nodeType":"RevertStatement","src":"2981:43:78"}},{"id":22449,"nodeType":"PlaceholderStatement","src":"3030:1:78"}]},"id":22451,"name":"onlyDelegCall","nameLocation":"2930:13:78","nodeType":"ModifierDefinition","parameters":{"id":22438,"nodeType":"ParameterList","parameters":[],"src":"2943:2:78"},"src":"2921:115:78","virtual":false,"visibility":"internal"},{"body":{"id":22489,"nodeType":"Block","src":"3435:184:78","statements":[{"expression":{"arguments":[{"commonType":{"typeIdentifier":"t_address","typeString":"address"},"id":22470,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"arguments":[{"id":22464,"name":"rewardsManager_","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":22458,"src":"3457:15:78","typeDescriptions":{"typeIdentifier":"t_contract$_ICometRewards_$20581","typeString":"contract ICometRewards"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_contract$_ICometRewards_$20581","typeString":"contract ICometRewards"}],"id":22463,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"3449:7:78","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":22462,"name":"address","nodeType":"ElementaryTypeName","src":"3449:7:78","typeDescriptions":{}}},"id":22465,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"3449:24:78","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"BinaryOperation","operator":"!=","rightExpression":{"arguments":[{"hexValue":"30","id":22468,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"3485:1:78","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":22467,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"3477:7:78","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":22466,"name":"address","nodeType":"ElementaryTypeName","src":"3477:7:78","typeDescriptions":{}}},"id":22469,"isConstant":false,"isLValue":false,"isPure":true,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"3477:10:78","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"src":"3449:38:78","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},{"arguments":[],"expression":{"argumentTypes":[],"id":22471,"name":"RewardsManagerRequired","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":22433,"src":"3489:22:78","typeDescriptions":{"typeIdentifier":"t_function_error_pure$__$returns$_t_error_$","typeString":"function () pure returns (error)"}},"id":22472,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"3489:24:78","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_error","typeString":"error"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_error","typeString":"error"}],"id":22461,"name":"require","nodeType":"Identifier","overloadedDeclarations":[-18,-18,-18],"referencedDeclaration":-18,"src":"3441:7:78","typeDescriptions":{"typeIdentifier":"t_function_require_pure$_t_bool_$_t_error_$returns$__$","typeString":"function (bool,error) pure"}},"id":22473,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"3441:73:78","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":22474,"nodeType":"ExpressionStatement","src":"3441:73:78"},{"expression":{"id":22477,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":22475,"name":"_cToken","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":22402,"src":"3520:7:78","typeDescriptions":{"typeIdentifier":"t_contract$_ICompoundV3_$20619","typeString":"contract ICompoundV3"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"id":22476,"name":"cToken_","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":22455,"src":"3530:7:78","typeDescriptions":{"typeIdentifier":"t_contract$_ICompoundV3_$20619","typeString":"contract ICompoundV3"}},"src":"3520:17:78","typeDescriptions":{"typeIdentifier":"t_contract$_ICompoundV3_$20619","typeString":"contract ICompoundV3"}},"id":22478,"nodeType":"ExpressionStatement","src":"3520:17:78"},{"expression":{"id":22481,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":22479,"name":"_rewardsManager","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":22405,"src":"3543:15:78","typeDescriptions":{"typeIdentifier":"t_contract$_ICometRewards_$20581","typeString":"contract ICometRewards"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"id":22480,"name":"rewardsManager_","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":22458,"src":"3561:15:78","typeDescriptions":{"typeIdentifier":"t_contract$_ICometRewards_$20581","typeString":"contract ICometRewards"}},"src":"3543:33:78","typeDescriptions":{"typeIdentifier":"t_contract$_ICometRewards_$20581","typeString":"contract ICometRewards"}},"id":22482,"nodeType":"ExpressionStatement","src":"3543:33:78"},{"expression":{"id":22487,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":22483,"name":"_baseToken","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":22407,"src":"3582:10:78","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"arguments":[],"expression":{"argumentTypes":[],"expression":{"id":22484,"name":"cToken_","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":22455,"src":"3595:7:78","typeDescriptions":{"typeIdentifier":"t_contract$_ICompoundV3_$20619","typeString":"contract ICompoundV3"}},"id":22485,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"3603:9:78","memberName":"baseToken","nodeType":"MemberAccess","referencedDeclaration":20594,"src":"3595:17:78","typeDescriptions":{"typeIdentifier":"t_function_external_view$__$returns$_t_address_$","typeString":"function () view external returns (address)"}},"id":22486,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"3595:19:78","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"src":"3582:32:78","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"id":22488,"nodeType":"ExpressionStatement","src":"3582:32:78"}]},"documentation":{"id":22452,"nodeType":"StructuredDocumentation","src":"3040:328:78","text":" @dev Constructor of the strategy.\n @param cToken_ The address of the cToken (compound pool) where funds will be supplied. The strategy asset()\n                will be `cToken_.baseToken()`.\n @param rewardsManager_ The address of the rewards manager contract that will be used to claim the rewards"},"id":22490,"implemented":true,"kind":"constructor","modifiers":[],"name":"","nameLocation":"-1:-1:-1","nodeType":"FunctionDefinition","parameters":{"id":22459,"nodeType":"ParameterList","parameters":[{"constant":false,"id":22455,"mutability":"mutable","name":"cToken_","nameLocation":"3395:7:78","nodeType":"VariableDeclaration","scope":22490,"src":"3383:19:78","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_contract$_ICompoundV3_$20619","typeString":"contract ICompoundV3"},"typeName":{"id":22454,"nodeType":"UserDefinedTypeName","pathNode":{"id":22453,"name":"ICompoundV3","nameLocations":["3383:11:78"],"nodeType":"IdentifierPath","referencedDeclaration":20619,"src":"3383:11:78"},"referencedDeclaration":20619,"src":"3383:11:78","typeDescriptions":{"typeIdentifier":"t_contract$_ICompoundV3_$20619","typeString":"contract ICompoundV3"}},"visibility":"internal"},{"constant":false,"id":22458,"mutability":"mutable","name":"rewardsManager_","nameLocation":"3418:15:78","nodeType":"VariableDeclaration","scope":22490,"src":"3404:29:78","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_contract$_ICometRewards_$20581","typeString":"contract ICometRewards"},"typeName":{"id":22457,"nodeType":"UserDefinedTypeName","pathNode":{"id":22456,"name":"ICometRewards","nameLocations":["3404:13:78"],"nodeType":"IdentifierPath","referencedDeclaration":20581,"src":"3404:13:78"},"referencedDeclaration":20581,"src":"3404:13:78","typeDescriptions":{"typeIdentifier":"t_contract$_ICometRewards_$20581","typeString":"contract ICometRewards"}},"visibility":"internal"}],"src":"3382:52:78"},"returnParameters":{"id":22460,"nodeType":"ParameterList","parameters":[],"src":"3435:0:78"},"scope":22951,"src":"3371:248:78","stateMutability":"nonpayable","virtual":false,"visibility":"public"},{"baseFunctions":[20658],"body":{"id":22514,"nodeType":"Block","src":"3737:109:78","statements":[{"expression":{"arguments":[{"arguments":[{"expression":{"expression":{"id":22502,"name":"SwapLibrary","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1879,"src":"3781:11:78","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_SwapLibrary_$1879_$","typeString":"type(library SwapLibrary)"}},"id":22503,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"3793:12:78","memberName":"SwapProtocol","nodeType":"MemberAccess","referencedDeclaration":1105,"src":"3781:24:78","typeDescriptions":{"typeIdentifier":"t_type$_t_enum$_SwapProtocol_$1105_$","typeString":"type(enum SwapLibrary.SwapProtocol)"}},"id":22504,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberLocation":"3806:9:78","memberName":"undefined","nodeType":"MemberAccess","referencedDeclaration":1102,"src":"3781:34:78","typeDescriptions":{"typeIdentifier":"t_enum$_SwapProtocol_$1105","typeString":"enum SwapLibrary.SwapProtocol"}},{"hexValue":"30","id":22505,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"3817:1:78","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},{"arguments":[{"hexValue":"","id":22508,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"3826:2:78","typeDescriptions":{"typeIdentifier":"t_stringliteral_c5d2460186f7233c927e7db2dcc703c0e500b653ca82273b7bfad8045d85a470","typeString":"literal_string \"\""},"value":""}],"expression":{"argumentTypes":[{"typeIdentifier":"t_stringliteral_c5d2460186f7233c927e7db2dcc703c0e500b653ca82273b7bfad8045d85a470","typeString":"literal_string \"\""}],"id":22507,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"3820:5:78","typeDescriptions":{"typeIdentifier":"t_type$_t_bytes_storage_ptr_$","typeString":"type(bytes storage pointer)"},"typeName":{"id":22506,"name":"bytes","nodeType":"ElementaryTypeName","src":"3820:5:78","typeDescriptions":{}}},"id":22509,"isConstant":false,"isLValue":false,"isPure":true,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"3820:9:78","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_enum$_SwapProtocol_$1105","typeString":"enum SwapLibrary.SwapProtocol"},{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}],"expression":{"id":22500,"name":"SwapLibrary","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1879,"src":"3758:11:78","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_SwapLibrary_$1879_$","typeString":"type(library SwapLibrary)"}},"id":22501,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"3770:10:78","memberName":"SwapConfig","nodeType":"MemberAccess","referencedDeclaration":1113,"src":"3758:22:78","typeDescriptions":{"typeIdentifier":"t_type$_t_struct$_SwapConfig_$1113_storage_ptr_$","typeString":"type(struct SwapLibrary.SwapConfig storage pointer)"}},"id":22510,"isConstant":false,"isLValue":false,"isPure":true,"kind":"structConstructorCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"3758:72:78","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_struct$_SwapConfig_$1113_memory_ptr","typeString":"struct SwapLibrary.SwapConfig memory"}},{"id":22511,"name":"initData","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":22493,"src":"3832:8:78","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_struct$_SwapConfig_$1113_memory_ptr","typeString":"struct SwapLibrary.SwapConfig memory"},{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}],"id":22499,"name":"_setSwapConfig","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":22846,"src":"3743:14:78","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_struct$_SwapConfig_$1113_memory_ptr_$_t_bytes_memory_ptr_$returns$__$","typeString":"function (struct SwapLibrary.SwapConfig memory,bytes memory)"}},"id":22512,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"3743:98:78","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":22513,"nodeType":"ExpressionStatement","src":"3743:98:78"}]},"documentation":{"id":22491,"nodeType":"StructuredDocumentation","src":"3623:31:78","text":"@inheritdoc IInvestStrategy"},"functionSelector":"9cd47128","id":22515,"implemented":true,"kind":"function","modifiers":[{"id":22497,"kind":"modifierInvocation","modifierName":{"id":22496,"name":"onlyDelegCall","nameLocations":["3723:13:78"],"nodeType":"IdentifierPath","referencedDeclaration":22451,"src":"3723:13:78"},"nodeType":"ModifierInvocation","src":"3723:13:78"}],"name":"connect","nameLocation":"3666:7:78","nodeType":"FunctionDefinition","overrides":{"id":22495,"nodeType":"OverrideSpecifier","overrides":[],"src":"3714:8:78"},"parameters":{"id":22494,"nodeType":"ParameterList","parameters":[{"constant":false,"id":22493,"mutability":"mutable","name":"initData","nameLocation":"3687:8:78","nodeType":"VariableDeclaration","scope":22515,"src":"3674:21:78","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes"},"typeName":{"id":22492,"name":"bytes","nodeType":"ElementaryTypeName","src":"3674:5:78","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"}],"src":"3673:23:78"},"returnParameters":{"id":22498,"nodeType":"ParameterList","parameters":[],"src":"3737:0:78"},"scope":22951,"src":"3657:189:78","stateMutability":"nonpayable","virtual":true,"visibility":"external"},{"baseFunctions":[20664],"body":{"id":22574,"nodeType":"Block","src":"3956:315:78","statements":[{"condition":{"id":22525,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"UnaryOperation","operator":"!","prefix":true,"src":"3966:6:78","subExpression":{"id":22524,"name":"force","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":22518,"src":"3967:5:78","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":22573,"nodeType":"IfStatement","src":"3962:305:78","trueBody":{"id":22572,"nodeType":"Block","src":"3974:293:78","statements":[{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":22534,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"arguments":[{"arguments":[{"id":22530,"name":"this","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-28,"src":"4012:4:78","typeDescriptions":{"typeIdentifier":"t_contract$_CompoundV3InvestStrategy_$22951","typeString":"contract CompoundV3InvestStrategy"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_contract$_CompoundV3InvestStrategy_$22951","typeString":"contract CompoundV3InvestStrategy"}],"id":22529,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"4004:7:78","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":22528,"name":"address","nodeType":"ElementaryTypeName","src":"4004:7:78","typeDescriptions":{}}},"id":22531,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"4004:13:78","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"expression":{"id":22526,"name":"_cToken","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":22402,"src":"3986:7:78","typeDescriptions":{"typeIdentifier":"t_contract$_ICompoundV3_$20619","typeString":"contract ICompoundV3"}},"id":22527,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"3994:9:78","memberName":"balanceOf","nodeType":"MemberAccess","referencedDeclaration":8636,"src":"3986:17:78","typeDescriptions":{"typeIdentifier":"t_function_external_view$_t_address_$returns$_t_uint256_$","typeString":"function (address) view external returns (uint256)"}},"id":22532,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"3986:32:78","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"!=","rightExpression":{"hexValue":"30","id":22533,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"4022:1:78","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"3986:37:78","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":22538,"nodeType":"IfStatement","src":"3982:78:78","trueBody":{"errorCall":{"arguments":[],"expression":{"argumentTypes":[],"id":22535,"name":"CannotDisconnectWithAssets","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":22429,"src":"4032:26:78","typeDescriptions":{"typeIdentifier":"t_function_error_pure$__$returns$_t_error_$","typeString":"function () pure returns (error)"}},"id":22536,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"4032:28:78","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_error","typeString":"error"}},"id":22537,"nodeType":"RevertStatement","src":"4025:35:78"}},{"assignments":[22543],"declarations":[{"constant":false,"id":22543,"mutability":"mutable","name":"owed","nameLocation":"4100:4:78","nodeType":"VariableDeclaration","scope":22572,"src":"4068:36:78","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_struct$_RewardOwed_$20550_memory_ptr","typeString":"struct ICometRewards.RewardOwed"},"typeName":{"id":22542,"nodeType":"UserDefinedTypeName","pathNode":{"id":22541,"name":"ICometRewards.RewardOwed","nameLocations":["4068:13:78","4082:10:78"],"nodeType":"IdentifierPath","referencedDeclaration":20550,"src":"4068:24:78"},"referencedDeclaration":20550,"src":"4068:24:78","typeDescriptions":{"typeIdentifier":"t_struct$_RewardOwed_$20550_storage_ptr","typeString":"struct ICometRewards.RewardOwed"}},"visibility":"internal"}],"id":22555,"initialValue":{"arguments":[{"arguments":[{"id":22548,"name":"_cToken","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":22402,"src":"4145:7:78","typeDescriptions":{"typeIdentifier":"t_contract$_ICompoundV3_$20619","typeString":"contract ICompoundV3"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_contract$_ICompoundV3_$20619","typeString":"contract ICompoundV3"}],"id":22547,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"4137:7:78","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":22546,"name":"address","nodeType":"ElementaryTypeName","src":"4137:7:78","typeDescriptions":{}}},"id":22549,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"4137:16:78","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"arguments":[{"id":22552,"name":"this","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-28,"src":"4163:4:78","typeDescriptions":{"typeIdentifier":"t_contract$_CompoundV3InvestStrategy_$22951","typeString":"contract CompoundV3InvestStrategy"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_contract$_CompoundV3InvestStrategy_$22951","typeString":"contract CompoundV3InvestStrategy"}],"id":22551,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"4155:7:78","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":22550,"name":"address","nodeType":"ElementaryTypeName","src":"4155:7:78","typeDescriptions":{}}},"id":22553,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"4155:13:78","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_address","typeString":"address"}],"expression":{"id":22544,"name":"_rewardsManager","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":22405,"src":"4107:15:78","typeDescriptions":{"typeIdentifier":"t_contract$_ICometRewards_$20581","typeString":"contract ICometRewards"}},"id":22545,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"4123:13:78","memberName":"getRewardOwed","nodeType":"MemberAccess","referencedDeclaration":20580,"src":"4107:29:78","typeDescriptions":{"typeIdentifier":"t_function_external_nonpayable$_t_address_$_t_address_$returns$_t_struct$_RewardOwed_$20550_memory_ptr_$","typeString":"function (address,address) external returns (struct ICometRewards.RewardOwed memory)"}},"id":22554,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"4107:62:78","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_struct$_RewardOwed_$20550_memory_ptr","typeString":"struct ICometRewards.RewardOwed memory"}},"nodeType":"VariableDeclarationStatement","src":"4068:101:78"},{"condition":{"commonType":{"typeIdentifier":"t_bool","typeString":"bool"},"id":22567,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"commonType":{"typeIdentifier":"t_address","typeString":"address"},"id":22562,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"expression":{"id":22556,"name":"owed","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":22543,"src":"4181:4:78","typeDescriptions":{"typeIdentifier":"t_struct$_RewardOwed_$20550_memory_ptr","typeString":"struct ICometRewards.RewardOwed memory"}},"id":22557,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"4186:5:78","memberName":"token","nodeType":"MemberAccess","referencedDeclaration":20547,"src":"4181:10:78","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"BinaryOperation","operator":"!=","rightExpression":{"arguments":[{"hexValue":"30","id":22560,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"4203:1:78","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":22559,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"4195:7:78","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":22558,"name":"address","nodeType":"ElementaryTypeName","src":"4195:7:78","typeDescriptions":{}}},"id":22561,"isConstant":false,"isLValue":false,"isPure":true,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"4195:10:78","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"src":"4181:24:78","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"nodeType":"BinaryOperation","operator":"&&","rightExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":22566,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"expression":{"id":22563,"name":"owed","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":22543,"src":"4209:4:78","typeDescriptions":{"typeIdentifier":"t_struct$_RewardOwed_$20550_memory_ptr","typeString":"struct ICometRewards.RewardOwed memory"}},"id":22564,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"4214:4:78","memberName":"owed","nodeType":"MemberAccess","referencedDeclaration":20549,"src":"4209:9:78","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"!=","rightExpression":{"hexValue":"30","id":22565,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"4222:1:78","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"4209:14:78","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"src":"4181:42:78","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":22571,"nodeType":"IfStatement","src":"4177:83:78","trueBody":{"errorCall":{"arguments":[],"expression":{"argumentTypes":[],"id":22568,"name":"CannotDisconnectWithAssets","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":22429,"src":"4232:26:78","typeDescriptions":{"typeIdentifier":"t_function_error_pure$__$returns$_t_error_$","typeString":"function () pure returns (error)"}},"id":22569,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"4232:28:78","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_error","typeString":"error"}},"id":22570,"nodeType":"RevertStatement","src":"4225:35:78"}}]}}]},"documentation":{"id":22516,"nodeType":"StructuredDocumentation","src":"3850:31:78","text":"@inheritdoc IInvestStrategy"},"functionSelector":"5a117456","id":22575,"implemented":true,"kind":"function","modifiers":[{"id":22522,"kind":"modifierInvocation","modifierName":{"id":22521,"name":"onlyDelegCall","nameLocations":["3942:13:78"],"nodeType":"IdentifierPath","referencedDeclaration":22451,"src":"3942:13:78"},"nodeType":"ModifierInvocation","src":"3942:13:78"}],"name":"disconnect","nameLocation":"3893:10:78","nodeType":"FunctionDefinition","overrides":{"id":22520,"nodeType":"OverrideSpecifier","overrides":[],"src":"3933:8:78"},"parameters":{"id":22519,"nodeType":"ParameterList","parameters":[{"constant":false,"id":22518,"mutability":"mutable","name":"force","nameLocation":"3909:5:78","nodeType":"VariableDeclaration","scope":22575,"src":"3904:10:78","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":22517,"name":"bool","nodeType":"ElementaryTypeName","src":"3904:4:78","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"}],"src":"3903:12:78"},"returnParameters":{"id":22523,"nodeType":"ParameterList","parameters":[],"src":"3956:0:78"},"scope":22951,"src":"3884:387:78","stateMutability":"nonpayable","virtual":true,"visibility":"external"},{"baseFunctions":[20718],"body":{"id":22595,"nodeType":"Block","src":"4396:92:78","statements":[{"condition":{"arguments":[],"expression":{"argumentTypes":[],"expression":{"id":22584,"name":"_cToken","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":22402,"src":"4406:7:78","typeDescriptions":{"typeIdentifier":"t_contract$_ICompoundV3_$20619","typeString":"contract ICompoundV3"}},"id":22585,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"4414:16:78","memberName":"isWithdrawPaused","nodeType":"MemberAccess","referencedDeclaration":20604,"src":"4406:24:78","typeDescriptions":{"typeIdentifier":"t_function_external_view$__$returns$_t_bool_$","typeString":"function () view external returns (bool)"}},"id":22586,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"4406:26:78","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":22589,"nodeType":"IfStatement","src":"4402:40:78","trueBody":{"expression":{"hexValue":"30","id":22587,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"4441:1:78","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"functionReturnParameters":22583,"id":22588,"nodeType":"Return","src":"4434:8:78"}},{"expression":{"arguments":[{"id":22592,"name":"contract_","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":22578,"src":"4473:9:78","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"expression":{"id":22590,"name":"_cToken","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":22402,"src":"4455:7:78","typeDescriptions":{"typeIdentifier":"t_contract$_ICompoundV3_$20619","typeString":"contract ICompoundV3"}},"id":22591,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"4463:9:78","memberName":"balanceOf","nodeType":"MemberAccess","referencedDeclaration":8636,"src":"4455:17:78","typeDescriptions":{"typeIdentifier":"t_function_external_view$_t_address_$returns$_t_uint256_$","typeString":"function (address) view external returns (uint256)"}},"id":22593,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"4455:28:78","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"functionReturnParameters":22583,"id":22594,"nodeType":"Return","src":"4448:35:78"}]},"documentation":{"id":22576,"nodeType":"StructuredDocumentation","src":"4275:31:78","text":"@inheritdoc IInvestStrategy"},"functionSelector":"ce96cb77","id":22596,"implemented":true,"kind":"function","modifiers":[],"name":"maxWithdraw","nameLocation":"4318:11:78","nodeType":"FunctionDefinition","overrides":{"id":22580,"nodeType":"OverrideSpecifier","overrides":[],"src":"4369:8:78"},"parameters":{"id":22579,"nodeType":"ParameterList","parameters":[{"constant":false,"id":22578,"mutability":"mutable","name":"contract_","nameLocation":"4338:9:78","nodeType":"VariableDeclaration","scope":22596,"src":"4330:17:78","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":22577,"name":"address","nodeType":"ElementaryTypeName","src":"4330:7:78","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"4329:19:78"},"returnParameters":{"id":22583,"nodeType":"ParameterList","parameters":[{"constant":false,"id":22582,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":22596,"src":"4387:7:78","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":22581,"name":"uint256","nodeType":"ElementaryTypeName","src":"4387:7:78","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"4386:9:78"},"scope":22951,"src":"4309:179:78","stateMutability":"view","virtual":true,"visibility":"public"},{"baseFunctions":[20710],"body":{"id":22617,"nodeType":"Block","src":"4616:79:78","statements":[{"condition":{"arguments":[],"expression":{"argumentTypes":[],"expression":{"id":22605,"name":"_cToken","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":22402,"src":"4626:7:78","typeDescriptions":{"typeIdentifier":"t_contract$_ICompoundV3_$20619","typeString":"contract ICompoundV3"}},"id":22606,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"4634:14:78","memberName":"isSupplyPaused","nodeType":"MemberAccess","referencedDeclaration":20599,"src":"4626:22:78","typeDescriptions":{"typeIdentifier":"t_function_external_view$__$returns$_t_bool_$","typeString":"function () view external returns (bool)"}},"id":22607,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"4626:24:78","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":22610,"nodeType":"IfStatement","src":"4622:38:78","trueBody":{"expression":{"hexValue":"30","id":22608,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"4659:1:78","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"functionReturnParameters":22604,"id":22609,"nodeType":"Return","src":"4652:8:78"}},{"expression":{"expression":{"arguments":[{"id":22613,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"4678:7:78","typeDescriptions":{"typeIdentifier":"t_type$_t_uint256_$","typeString":"type(uint256)"},"typeName":{"id":22612,"name":"uint256","nodeType":"ElementaryTypeName","src":"4678:7:78","typeDescriptions":{}}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_type$_t_uint256_$","typeString":"type(uint256)"}],"id":22611,"name":"type","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-27,"src":"4673:4:78","typeDescriptions":{"typeIdentifier":"t_function_metatype_pure$__$returns$__$","typeString":"function () pure"}},"id":22614,"isConstant":false,"isLValue":false,"isPure":true,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"4673:13:78","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_magic_meta_type_t_uint256","typeString":"type(uint256)"}},"id":22615,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberLocation":"4687:3:78","memberName":"max","nodeType":"MemberAccess","src":"4673:17:78","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"functionReturnParameters":22604,"id":22616,"nodeType":"Return","src":"4666:24:78"}]},"documentation":{"id":22597,"nodeType":"StructuredDocumentation","src":"4492:31:78","text":"@inheritdoc IInvestStrategy"},"functionSelector":"402d267d","id":22618,"implemented":true,"kind":"function","modifiers":[],"name":"maxDeposit","nameLocation":"4535:10:78","nodeType":"FunctionDefinition","overrides":{"id":22601,"nodeType":"OverrideSpecifier","overrides":[],"src":"4589:8:78"},"parameters":{"id":22600,"nodeType":"ParameterList","parameters":[{"constant":false,"id":22599,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":22618,"src":"4546:7:78","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":22598,"name":"address","nodeType":"ElementaryTypeName","src":"4546:7:78","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"4545:23:78"},"returnParameters":{"id":22604,"nodeType":"ParameterList","parameters":[{"constant":false,"id":22603,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":22618,"src":"4607:7:78","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":22602,"name":"uint256","nodeType":"ElementaryTypeName","src":"4607:7:78","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"4606:9:78"},"scope":22951,"src":"4526:169:78","stateMutability":"view","virtual":true,"visibility":"public"},{"baseFunctions":[20694],"body":{"id":22629,"nodeType":"Block","src":"4804:28:78","statements":[{"expression":{"id":22627,"name":"_baseToken","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":22407,"src":"4817:10:78","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"functionReturnParameters":22626,"id":22628,"nodeType":"Return","src":"4810:17:78"}]},"documentation":{"id":22619,"nodeType":"StructuredDocumentation","src":"4699:31:78","text":"@inheritdoc IInvestStrategy"},"functionSelector":"9c4667a2","id":22630,"implemented":true,"kind":"function","modifiers":[],"name":"asset","nameLocation":"4742:5:78","nodeType":"FunctionDefinition","overrides":{"id":22623,"nodeType":"OverrideSpecifier","overrides":[],"src":"4777:8:78"},"parameters":{"id":22622,"nodeType":"ParameterList","parameters":[{"constant":false,"id":22621,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":22630,"src":"4748:7:78","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":22620,"name":"address","nodeType":"ElementaryTypeName","src":"4748:7:78","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"4747:9:78"},"returnParameters":{"id":22626,"nodeType":"ParameterList","parameters":[{"constant":false,"id":22625,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":22630,"src":"4795:7:78","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":22624,"name":"address","nodeType":"ElementaryTypeName","src":"4795:7:78","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"4794:9:78"},"scope":22951,"src":"4733:99:78","stateMutability":"view","virtual":true,"visibility":"public"},{"baseFunctions":[20702],"body":{"id":22644,"nodeType":"Block","src":"4964:46:78","statements":[{"expression":{"arguments":[{"id":22641,"name":"contract_","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":22633,"src":"4995:9:78","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"expression":{"id":22639,"name":"_cToken","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":22402,"src":"4977:7:78","typeDescriptions":{"typeIdentifier":"t_contract$_ICompoundV3_$20619","typeString":"contract ICompoundV3"}},"id":22640,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"4985:9:78","memberName":"balanceOf","nodeType":"MemberAccess","referencedDeclaration":8636,"src":"4977:17:78","typeDescriptions":{"typeIdentifier":"t_function_external_view$_t_address_$returns$_t_uint256_$","typeString":"function (address) view external returns (uint256)"}},"id":22642,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"4977:28:78","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"functionReturnParameters":22638,"id":22643,"nodeType":"Return","src":"4970:35:78"}]},"documentation":{"id":22631,"nodeType":"StructuredDocumentation","src":"4836:31:78","text":"@inheritdoc IInvestStrategy"},"functionSelector":"f3e0ffbf","id":22645,"implemented":true,"kind":"function","modifiers":[],"name":"totalAssets","nameLocation":"4879:11:78","nodeType":"FunctionDefinition","overrides":{"id":22635,"nodeType":"OverrideSpecifier","overrides":[],"src":"4930:8:78"},"parameters":{"id":22634,"nodeType":"ParameterList","parameters":[{"constant":false,"id":22633,"mutability":"mutable","name":"contract_","nameLocation":"4899:9:78","nodeType":"VariableDeclaration","scope":22645,"src":"4891:17:78","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":22632,"name":"address","nodeType":"ElementaryTypeName","src":"4891:7:78","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"4890:19:78"},"returnParameters":{"id":22638,"nodeType":"ParameterList","parameters":[{"constant":false,"id":22637,"mutability":"mutable","name":"assets","nameLocation":"4956:6:78","nodeType":"VariableDeclaration","scope":22645,"src":"4948:14:78","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":22636,"name":"uint256","nodeType":"ElementaryTypeName","src":"4948:7:78","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"4947:16:78"},"scope":22951,"src":"4870:140:78","stateMutability":"view","virtual":true,"visibility":"public"},{"baseFunctions":[20676],"body":{"id":22661,"nodeType":"Block","src":"5122:47:78","statements":[{"expression":{"arguments":[{"id":22657,"name":"_baseToken","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":22407,"src":"5145:10:78","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":22658,"name":"assets","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":22648,"src":"5157:6:78","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"expression":{"id":22654,"name":"_cToken","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":22402,"src":"5128:7:78","typeDescriptions":{"typeIdentifier":"t_contract$_ICompoundV3_$20619","typeString":"contract ICompoundV3"}},"id":22656,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"5136:8:78","memberName":"withdraw","nodeType":"MemberAccess","referencedDeclaration":20611,"src":"5128:16:78","typeDescriptions":{"typeIdentifier":"t_function_external_nonpayable$_t_address_$_t_uint256_$returns$__$","typeString":"function (address,uint256) external"}},"id":22659,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"5128:36:78","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":22660,"nodeType":"ExpressionStatement","src":"5128:36:78"}]},"documentation":{"id":22646,"nodeType":"StructuredDocumentation","src":"5014:31:78","text":"@inheritdoc IInvestStrategy"},"functionSelector":"2e1a7d4d","id":22662,"implemented":true,"kind":"function","modifiers":[{"id":22652,"kind":"modifierInvocation","modifierName":{"id":22651,"name":"onlyDelegCall","nameLocations":["5108:13:78"],"nodeType":"IdentifierPath","referencedDeclaration":22451,"src":"5108:13:78"},"nodeType":"ModifierInvocation","src":"5108:13:78"}],"name":"withdraw","nameLocation":"5057:8:78","nodeType":"FunctionDefinition","overrides":{"id":22650,"nodeType":"OverrideSpecifier","overrides":[],"src":"5099:8:78"},"parameters":{"id":22649,"nodeType":"ParameterList","parameters":[{"constant":false,"id":22648,"mutability":"mutable","name":"assets","nameLocation":"5074:6:78","nodeType":"VariableDeclaration","scope":22662,"src":"5066:14:78","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":22647,"name":"uint256","nodeType":"ElementaryTypeName","src":"5066:7:78","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"5065:16:78"},"returnParameters":{"id":22653,"nodeType":"ParameterList","parameters":[],"src":"5122:0:78"},"scope":22951,"src":"5048:121:78","stateMutability":"nonpayable","virtual":true,"visibility":"external"},{"baseFunctions":[20670],"body":{"id":22675,"nodeType":"Block","src":"5280:26:78","statements":[{"expression":{"arguments":[{"id":22672,"name":"assets","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":22665,"src":"5294:6:78","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":22671,"name":"_supply","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":22700,"src":"5286:7:78","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_uint256_$returns$__$","typeString":"function (uint256)"}},"id":22673,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"5286:15:78","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":22674,"nodeType":"ExpressionStatement","src":"5286:15:78"}]},"documentation":{"id":22663,"nodeType":"StructuredDocumentation","src":"5173:31:78","text":"@inheritdoc IInvestStrategy"},"functionSelector":"b6b55f25","id":22676,"implemented":true,"kind":"function","modifiers":[{"id":22669,"kind":"modifierInvocation","modifierName":{"id":22668,"name":"onlyDelegCall","nameLocations":["5266:13:78"],"nodeType":"IdentifierPath","referencedDeclaration":22451,"src":"5266:13:78"},"nodeType":"ModifierInvocation","src":"5266:13:78"}],"name":"deposit","nameLocation":"5216:7:78","nodeType":"FunctionDefinition","overrides":{"id":22667,"nodeType":"OverrideSpecifier","overrides":[],"src":"5257:8:78"},"parameters":{"id":22666,"nodeType":"ParameterList","parameters":[{"constant":false,"id":22665,"mutability":"mutable","name":"assets","nameLocation":"5232:6:78","nodeType":"VariableDeclaration","scope":22676,"src":"5224:14:78","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":22664,"name":"uint256","nodeType":"ElementaryTypeName","src":"5224:7:78","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"5223:16:78"},"returnParameters":{"id":22670,"nodeType":"ParameterList","parameters":[],"src":"5280:0:78"},"scope":22951,"src":"5207:99:78","stateMutability":"nonpayable","virtual":true,"visibility":"external"},{"body":{"id":22699,"nodeType":"Block","src":"5352:103:78","statements":[{"expression":{"arguments":[{"arguments":[{"id":22687,"name":"_cToken","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":22402,"src":"5393:7:78","typeDescriptions":{"typeIdentifier":"t_contract$_ICompoundV3_$20619","typeString":"contract ICompoundV3"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_contract$_ICompoundV3_$20619","typeString":"contract ICompoundV3"}],"id":22686,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"5385:7:78","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":22685,"name":"address","nodeType":"ElementaryTypeName","src":"5385:7:78","typeDescriptions":{}}},"id":22688,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"5385:16:78","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":22689,"name":"assets","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":22678,"src":"5403:6:78","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"expression":{"arguments":[{"id":22682,"name":"_baseToken","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":22407,"src":"5365:10:78","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"id":22681,"name":"IERC20","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8679,"src":"5358:6:78","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_IERC20_$8679_$","typeString":"type(contract IERC20)"}},"id":22683,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"5358:18:78","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_contract$_IERC20_$8679","typeString":"contract IERC20"}},"id":22684,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"5377:7:78","memberName":"approve","nodeType":"MemberAccess","referencedDeclaration":8666,"src":"5358:26:78","typeDescriptions":{"typeIdentifier":"t_function_external_nonpayable$_t_address_$_t_uint256_$returns$_t_bool_$","typeString":"function (address,uint256) external returns (bool)"}},"id":22690,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"5358:52:78","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":22691,"nodeType":"ExpressionStatement","src":"5358:52:78"},{"expression":{"arguments":[{"id":22695,"name":"_baseToken","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":22407,"src":"5431:10:78","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":22696,"name":"assets","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":22678,"src":"5443:6:78","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"expression":{"id":22692,"name":"_cToken","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":22402,"src":"5416:7:78","typeDescriptions":{"typeIdentifier":"t_contract$_ICompoundV3_$20619","typeString":"contract ICompoundV3"}},"id":22694,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"5424:6:78","memberName":"supply","nodeType":"MemberAccess","referencedDeclaration":20618,"src":"5416:14:78","typeDescriptions":{"typeIdentifier":"t_function_external_nonpayable$_t_address_$_t_uint256_$returns$__$","typeString":"function (address,uint256) external"}},"id":22697,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"5416:34:78","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":22698,"nodeType":"ExpressionStatement","src":"5416:34:78"}]},"id":22700,"implemented":true,"kind":"function","modifiers":[],"name":"_supply","nameLocation":"5319:7:78","nodeType":"FunctionDefinition","parameters":{"id":22679,"nodeType":"ParameterList","parameters":[{"constant":false,"id":22678,"mutability":"mutable","name":"assets","nameLocation":"5335:6:78","nodeType":"VariableDeclaration","scope":22700,"src":"5327:14:78","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":22677,"name":"uint256","nodeType":"ElementaryTypeName","src":"5327:7:78","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"5326:16:78"},"returnParameters":{"id":22680,"nodeType":"ParameterList","parameters":[],"src":"5352:0:78"},"scope":22951,"src":"5310:145:78","stateMutability":"nonpayable","virtual":false,"visibility":"internal"},{"body":{"id":22792,"nodeType":"Block","src":"5508:605:78","statements":[{"assignments":[22706,null,null],"declarations":[{"constant":false,"id":22706,"mutability":"mutable","name":"reward","nameLocation":"5523:6:78","nodeType":"VariableDeclaration","scope":22792,"src":"5515:14:78","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":22705,"name":"address","nodeType":"ElementaryTypeName","src":"5515:7:78","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},null,null],"id":22714,"initialValue":{"arguments":[{"arguments":[{"id":22711,"name":"_cToken","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":22402,"src":"5574:7:78","typeDescriptions":{"typeIdentifier":"t_contract$_ICompoundV3_$20619","typeString":"contract ICompoundV3"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_contract$_ICompoundV3_$20619","typeString":"contract ICompoundV3"}],"id":22710,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"5566:7:78","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":22709,"name":"address","nodeType":"ElementaryTypeName","src":"5566:7:78","typeDescriptions":{}}},"id":22712,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"5566:16:78","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"expression":{"id":22707,"name":"_rewardsManager","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":22405,"src":"5537:15:78","typeDescriptions":{"typeIdentifier":"t_contract$_ICometRewards_$20581","typeString":"contract ICometRewards"}},"id":22708,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"5553:12:78","memberName":"rewardConfig","nodeType":"MemberAccess","referencedDeclaration":20561,"src":"5537:28:78","typeDescriptions":{"typeIdentifier":"t_function_external_nonpayable$_t_address_$returns$_t_address_$_t_uint64_$_t_bool_$","typeString":"function (address) external returns (address,uint64,bool)"}},"id":22713,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"5537:46:78","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$_t_address_$_t_uint64_$_t_bool_$","typeString":"tuple(address,uint64,bool)"}},"nodeType":"VariableDeclarationStatement","src":"5514:69:78"},{"condition":{"commonType":{"typeIdentifier":"t_address","typeString":"address"},"id":22720,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":22715,"name":"reward","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":22706,"src":"5593:6:78","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"arguments":[{"hexValue":"30","id":22718,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"5611:1:78","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":22717,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"5603:7:78","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":22716,"name":"address","nodeType":"ElementaryTypeName","src":"5603:7:78","typeDescriptions":{}}},"id":22719,"isConstant":false,"isLValue":false,"isPure":true,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"5603:10:78","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"src":"5593:20:78","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":22722,"nodeType":"IfStatement","src":"5589:33:78","trueBody":{"functionReturnParameters":22704,"id":22721,"nodeType":"Return","src":"5615:7:78"}},{"expression":{"arguments":[{"arguments":[{"id":22728,"name":"_cToken","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":22402,"src":"5657:7:78","typeDescriptions":{"typeIdentifier":"t_contract$_ICompoundV3_$20619","typeString":"contract ICompoundV3"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_contract$_ICompoundV3_$20619","typeString":"contract ICompoundV3"}],"id":22727,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"5649:7:78","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":22726,"name":"address","nodeType":"ElementaryTypeName","src":"5649:7:78","typeDescriptions":{}}},"id":22729,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"5649:16:78","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"arguments":[{"id":22732,"name":"this","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-28,"src":"5675:4:78","typeDescriptions":{"typeIdentifier":"t_contract$_CompoundV3InvestStrategy_$22951","typeString":"contract CompoundV3InvestStrategy"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_contract$_CompoundV3InvestStrategy_$22951","typeString":"contract CompoundV3InvestStrategy"}],"id":22731,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"5667:7:78","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":22730,"name":"address","nodeType":"ElementaryTypeName","src":"5667:7:78","typeDescriptions":{}}},"id":22733,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"5667:13:78","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"hexValue":"74727565","id":22734,"isConstant":false,"isLValue":false,"isPure":true,"kind":"bool","lValueRequested":false,"nodeType":"Literal","src":"5682:4:78","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"}],"expression":{"id":22723,"name":"_rewardsManager","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":22405,"src":"5627:15:78","typeDescriptions":{"typeIdentifier":"t_contract$_ICometRewards_$20581","typeString":"contract ICometRewards"}},"id":22725,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"5643:5:78","memberName":"claim","nodeType":"MemberAccess","referencedDeclaration":20570,"src":"5627:21:78","typeDescriptions":{"typeIdentifier":"t_function_external_nonpayable$_t_address_$_t_address_$_t_bool_$returns$__$","typeString":"function (address,address,bool) external"}},"id":22735,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"5627:60:78","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":22736,"nodeType":"ExpressionStatement","src":"5627:60:78"},{"assignments":[22741],"declarations":[{"constant":false,"id":22741,"mutability":"mutable","name":"swapConfig","nameLocation":"5724:10:78","nodeType":"VariableDeclaration","scope":22792,"src":"5694:40:78","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_struct$_SwapConfig_$1113_memory_ptr","typeString":"struct SwapLibrary.SwapConfig"},"typeName":{"id":22740,"nodeType":"UserDefinedTypeName","pathNode":{"id":22739,"name":"SwapLibrary.SwapConfig","nameLocations":["5694:11:78","5706:10:78"],"nodeType":"IdentifierPath","referencedDeclaration":1113,"src":"5694:22:78"},"referencedDeclaration":1113,"src":"5694:22:78","typeDescriptions":{"typeIdentifier":"t_struct$_SwapConfig_$1113_storage_ptr","typeString":"struct SwapLibrary.SwapConfig"}},"visibility":"internal"}],"id":22753,"initialValue":{"arguments":[{"expression":{"arguments":[{"id":22746,"name":"storageSlot","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":22399,"src":"5780:11:78","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes32","typeString":"bytes32"}],"expression":{"id":22744,"name":"StorageSlot","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":11032,"src":"5755:11:78","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_StorageSlot_$11032_$","typeString":"type(library StorageSlot)"}},"id":22745,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"5767:12:78","memberName":"getBytesSlot","nodeType":"MemberAccess","referencedDeclaration":11020,"src":"5755:24:78","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_bytes32_$returns$_t_struct$_BytesSlot_$10932_storage_ptr_$","typeString":"function (bytes32) pure returns (struct StorageSlot.BytesSlot storage pointer)"}},"id":22747,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"5755:37:78","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_struct$_BytesSlot_$10932_storage_ptr","typeString":"struct StorageSlot.BytesSlot storage pointer"}},"id":22748,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"5793:5:78","memberName":"value","nodeType":"MemberAccess","referencedDeclaration":10931,"src":"5755:43:78","typeDescriptions":{"typeIdentifier":"t_bytes_storage","typeString":"bytes storage ref"}},{"components":[{"expression":{"id":22749,"name":"SwapLibrary","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1879,"src":"5807:11:78","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_SwapLibrary_$1879_$","typeString":"type(library SwapLibrary)"}},"id":22750,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"5819:10:78","memberName":"SwapConfig","nodeType":"MemberAccess","referencedDeclaration":1113,"src":"5807:22:78","typeDescriptions":{"typeIdentifier":"t_type$_t_struct$_SwapConfig_$1113_storage_ptr_$","typeString":"type(struct SwapLibrary.SwapConfig storage pointer)"}}],"id":22751,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"5806:24:78","typeDescriptions":{"typeIdentifier":"t_type$_t_struct$_SwapConfig_$1113_storage_ptr_$","typeString":"type(struct SwapLibrary.SwapConfig storage pointer)"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes_storage","typeString":"bytes storage ref"},{"typeIdentifier":"t_type$_t_struct$_SwapConfig_$1113_storage_ptr_$","typeString":"type(struct SwapLibrary.SwapConfig storage pointer)"}],"expression":{"id":22742,"name":"abi","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-1,"src":"5737:3:78","typeDescriptions":{"typeIdentifier":"t_magic_abi","typeString":"abi"}},"id":22743,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberLocation":"5741:6:78","memberName":"decode","nodeType":"MemberAccess","src":"5737:10:78","typeDescriptions":{"typeIdentifier":"t_function_abidecode_pure$__$returns$__$","typeString":"function () pure"}},"id":22752,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"5737:99:78","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_struct$_SwapConfig_$1113_memory_ptr","typeString":"struct SwapLibrary.SwapConfig memory"}},"nodeType":"VariableDeclarationStatement","src":"5694:142:78"},{"assignments":[22755],"declarations":[{"constant":false,"id":22755,"mutability":"mutable","name":"earned","nameLocation":"5851:6:78","nodeType":"VariableDeclaration","scope":22792,"src":"5843:14:78","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":22754,"name":"uint256","nodeType":"ElementaryTypeName","src":"5843:7:78","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":22765,"initialValue":{"arguments":[{"arguments":[{"id":22762,"name":"this","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-28,"src":"5893:4:78","typeDescriptions":{"typeIdentifier":"t_contract$_CompoundV3InvestStrategy_$22951","typeString":"contract CompoundV3InvestStrategy"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_contract$_CompoundV3InvestStrategy_$22951","typeString":"contract CompoundV3InvestStrategy"}],"id":22761,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"5885:7:78","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":22760,"name":"address","nodeType":"ElementaryTypeName","src":"5885:7:78","typeDescriptions":{}}},"id":22763,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"5885:13:78","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"expression":{"arguments":[{"id":22757,"name":"reward","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":22706,"src":"5867:6:78","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"id":22756,"name":"IERC20","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8679,"src":"5860:6:78","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_IERC20_$8679_$","typeString":"type(contract IERC20)"}},"id":22758,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"5860:14:78","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_contract$_IERC20_$8679","typeString":"contract IERC20"}},"id":22759,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"5875:9:78","memberName":"balanceOf","nodeType":"MemberAccess","referencedDeclaration":8636,"src":"5860:24:78","typeDescriptions":{"typeIdentifier":"t_function_external_view$_t_address_$returns$_t_uint256_$","typeString":"function (address) view external returns (uint256)"}},"id":22764,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"5860:39:78","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"VariableDeclarationStatement","src":"5843:56:78"},{"assignments":[22767],"declarations":[{"constant":false,"id":22767,"mutability":"mutable","name":"reinvestAmount","nameLocation":"5913:14:78","nodeType":"VariableDeclaration","scope":22792,"src":"5905:22:78","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":22766,"name":"uint256","nodeType":"ElementaryTypeName","src":"5905:7:78","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":22775,"initialValue":{"arguments":[{"id":22770,"name":"reward","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":22706,"src":"5952:6:78","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":22771,"name":"_baseToken","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":22407,"src":"5960:10:78","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":22772,"name":"earned","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":22755,"src":"5972:6:78","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"id":22773,"name":"price","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":22702,"src":"5980:5:78","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":22768,"name":"swapConfig","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":22741,"src":"5930:10:78","typeDescriptions":{"typeIdentifier":"t_struct$_SwapConfig_$1113_memory_ptr","typeString":"struct SwapLibrary.SwapConfig memory"}},"id":22769,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"5941:10:78","memberName":"exactInput","nodeType":"MemberAccess","referencedDeclaration":1283,"src":"5930:21:78","typeDescriptions":{"typeIdentifier":"t_function_delegatecall_nonpayable$_t_struct$_SwapConfig_$1113_memory_ptr_$_t_address_$_t_address_$_t_uint256_$_t_uint256_$returns$_t_uint256_$attached_to$_t_struct$_SwapConfig_$1113_memory_ptr_$","typeString":"function (struct SwapLibrary.SwapConfig memory,address,address,uint256,uint256) returns (uint256)"}},"id":22774,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"5930:56:78","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"VariableDeclarationStatement","src":"5905:81:78"},{"expression":{"arguments":[{"id":22783,"name":"reinvestAmount","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":22767,"src":"6036:14:78","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"expression":{"arguments":[{"arguments":[{"id":22779,"name":"this","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-28,"src":"6009:4:78","typeDescriptions":{"typeIdentifier":"t_contract$_CompoundV3InvestStrategy_$22951","typeString":"contract CompoundV3InvestStrategy"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_contract$_CompoundV3InvestStrategy_$22951","typeString":"contract CompoundV3InvestStrategy"}],"id":22778,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"6001:7:78","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":22777,"name":"address","nodeType":"ElementaryTypeName","src":"6001:7:78","typeDescriptions":{}}},"id":22780,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"6001:13:78","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"id":22776,"name":"MSVBase","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":17366,"src":"5993:7:78","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_MSVBase_$17366_$","typeString":"type(contract MSVBase)"}},"id":22781,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"5993:22:78","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_contract$_MSVBase_$17366","typeString":"contract MSVBase"}},"id":22782,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"6016:19:78","memberName":"depositToStrategies","nodeType":"MemberAccess","referencedDeclaration":16379,"src":"5993:42:78","typeDescriptions":{"typeIdentifier":"t_function_external_nonpayable$_t_uint256_$returns$__$","typeString":"function (uint256) external"}},"id":22784,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"5993:58:78","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":22785,"nodeType":"ExpressionStatement","src":"5993:58:78"},{"eventCall":{"arguments":[{"id":22787,"name":"reward","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":22706,"src":"6077:6:78","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":22788,"name":"earned","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":22755,"src":"6085:6:78","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"id":22789,"name":"reinvestAmount","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":22767,"src":"6093:14:78","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":22786,"name":"RewardsClaimed","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":22416,"src":"6062:14:78","typeDescriptions":{"typeIdentifier":"t_function_event_nonpayable$_t_address_$_t_uint256_$_t_uint256_$returns$__$","typeString":"function (address,uint256,uint256)"}},"id":22790,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"6062:46:78","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":22791,"nodeType":"EmitStatement","src":"6057:51:78"}]},"id":22793,"implemented":true,"kind":"function","modifiers":[],"name":"_harvestRewards","nameLocation":"5468:15:78","nodeType":"FunctionDefinition","parameters":{"id":22703,"nodeType":"ParameterList","parameters":[{"constant":false,"id":22702,"mutability":"mutable","name":"price","nameLocation":"5492:5:78","nodeType":"VariableDeclaration","scope":22793,"src":"5484:13:78","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":22701,"name":"uint256","nodeType":"ElementaryTypeName","src":"5484:7:78","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"5483:15:78"},"returnParameters":{"id":22704,"nodeType":"ParameterList","parameters":[],"src":"5508:0:78"},"scope":22951,"src":"5459:654:78","stateMutability":"nonpayable","virtual":false,"visibility":"internal"},{"body":{"id":22845,"nodeType":"Block","src":"6230:365:78","statements":[{"assignments":[22805],"declarations":[{"constant":false,"id":22805,"mutability":"mutable","name":"swapConfig","nameLocation":"6266:10:78","nodeType":"VariableDeclaration","scope":22845,"src":"6236:40:78","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_struct$_SwapConfig_$1113_memory_ptr","typeString":"struct SwapLibrary.SwapConfig"},"typeName":{"id":22804,"nodeType":"UserDefinedTypeName","pathNode":{"id":22803,"name":"SwapLibrary.SwapConfig","nameLocations":["6236:11:78","6248:10:78"],"nodeType":"IdentifierPath","referencedDeclaration":1113,"src":"6236:22:78"},"referencedDeclaration":1113,"src":"6236:22:78","typeDescriptions":{"typeIdentifier":"t_struct$_SwapConfig_$1113_storage_ptr","typeString":"struct SwapLibrary.SwapConfig"}},"visibility":"internal"}],"id":22813,"initialValue":{"arguments":[{"id":22808,"name":"newSwapConfigAsBytes","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":22798,"src":"6290:20:78","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}},{"components":[{"expression":{"id":22809,"name":"SwapLibrary","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1879,"src":"6313:11:78","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_SwapLibrary_$1879_$","typeString":"type(library SwapLibrary)"}},"id":22810,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"6325:10:78","memberName":"SwapConfig","nodeType":"MemberAccess","referencedDeclaration":1113,"src":"6313:22:78","typeDescriptions":{"typeIdentifier":"t_type$_t_struct$_SwapConfig_$1113_storage_ptr_$","typeString":"type(struct SwapLibrary.SwapConfig storage pointer)"}}],"id":22811,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"6312:24:78","typeDescriptions":{"typeIdentifier":"t_type$_t_struct$_SwapConfig_$1113_storage_ptr_$","typeString":"type(struct SwapLibrary.SwapConfig storage pointer)"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"},{"typeIdentifier":"t_type$_t_struct$_SwapConfig_$1113_storage_ptr_$","typeString":"type(struct SwapLibrary.SwapConfig storage pointer)"}],"expression":{"id":22806,"name":"abi","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-1,"src":"6279:3:78","typeDescriptions":{"typeIdentifier":"t_magic_abi","typeString":"abi"}},"id":22807,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberLocation":"6283:6:78","memberName":"decode","nodeType":"MemberAccess","src":"6279:10:78","typeDescriptions":{"typeIdentifier":"t_function_abidecode_pure$__$returns$__$","typeString":"function () pure"}},"id":22812,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"6279:58:78","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_struct$_SwapConfig_$1113_memory_ptr","typeString":"struct SwapLibrary.SwapConfig memory"}},"nodeType":"VariableDeclarationStatement","src":"6236:101:78"},{"expression":{"arguments":[],"expression":{"argumentTypes":[],"expression":{"id":22814,"name":"swapConfig","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":22805,"src":"6343:10:78","typeDescriptions":{"typeIdentifier":"t_struct$_SwapConfig_$1113_memory_ptr","typeString":"struct SwapLibrary.SwapConfig memory"}},"id":22816,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"6354:8:78","memberName":"validate","nodeType":"MemberAccess","referencedDeclaration":1213,"src":"6343:19:78","typeDescriptions":{"typeIdentifier":"t_function_delegatecall_pure$_t_struct$_SwapConfig_$1113_memory_ptr_$returns$__$attached_to$_t_struct$_SwapConfig_$1113_memory_ptr_$","typeString":"function (struct SwapLibrary.SwapConfig memory) pure"}},"id":22817,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"6343:21:78","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":22818,"nodeType":"ExpressionStatement","src":"6343:21:78"},{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":22826,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"expression":{"arguments":[{"id":22821,"name":"swapConfig","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":22805,"src":"6385:10:78","typeDescriptions":{"typeIdentifier":"t_struct$_SwapConfig_$1113_memory_ptr","typeString":"struct SwapLibrary.SwapConfig memory"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_struct$_SwapConfig_$1113_memory_ptr","typeString":"struct SwapLibrary.SwapConfig memory"}],"expression":{"id":22819,"name":"abi","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-1,"src":"6374:3:78","typeDescriptions":{"typeIdentifier":"t_magic_abi","typeString":"abi"}},"id":22820,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberLocation":"6378:6:78","memberName":"encode","nodeType":"MemberAccess","src":"6374:10:78","typeDescriptions":{"typeIdentifier":"t_function_abiencode_pure$__$returns$_t_bytes_memory_ptr_$","typeString":"function () pure returns (bytes memory)"}},"id":22822,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"6374:22:78","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}},"id":22823,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"6397:6:78","memberName":"length","nodeType":"MemberAccess","src":"6374:29:78","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"!=","rightExpression":{"expression":{"id":22824,"name":"newSwapConfigAsBytes","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":22798,"src":"6407:20:78","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}},"id":22825,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"6428:6:78","memberName":"length","nodeType":"MemberAccess","src":"6407:27:78","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"6374:60:78","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":22830,"nodeType":"IfStatement","src":"6370:93:78","trueBody":{"errorCall":{"arguments":[],"expression":{"argumentTypes":[],"id":22827,"name":"NoExtraDataAllowed","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":22431,"src":"6443:18:78","typeDescriptions":{"typeIdentifier":"t_function_error_pure$__$returns$_t_error_$","typeString":"function () pure returns (error)"}},"id":22828,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"6443:20:78","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_error","typeString":"error"}},"id":22829,"nodeType":"RevertStatement","src":"6436:27:78"}},{"eventCall":{"arguments":[{"id":22832,"name":"oldSwapConfig","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":22796,"src":"6492:13:78","typeDescriptions":{"typeIdentifier":"t_struct$_SwapConfig_$1113_memory_ptr","typeString":"struct SwapLibrary.SwapConfig memory"}},{"id":22833,"name":"swapConfig","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":22805,"src":"6507:10:78","typeDescriptions":{"typeIdentifier":"t_struct$_SwapConfig_$1113_memory_ptr","typeString":"struct SwapLibrary.SwapConfig memory"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_struct$_SwapConfig_$1113_memory_ptr","typeString":"struct SwapLibrary.SwapConfig memory"},{"typeIdentifier":"t_struct$_SwapConfig_$1113_memory_ptr","typeString":"struct SwapLibrary.SwapConfig memory"}],"id":22831,"name":"SwapConfigChanged","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":22425,"src":"6474:17:78","typeDescriptions":{"typeIdentifier":"t_function_event_nonpayable$_t_struct$_SwapConfig_$1113_memory_ptr_$_t_struct$_SwapConfig_$1113_memory_ptr_$returns$__$","typeString":"function (struct SwapLibrary.SwapConfig memory,struct SwapLibrary.SwapConfig memory)"}},"id":22834,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"6474:44:78","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":22835,"nodeType":"EmitStatement","src":"6469:49:78"},{"expression":{"id":22843,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"expression":{"arguments":[{"id":22839,"name":"storageSlot","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":22399,"src":"6549:11:78","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes32","typeString":"bytes32"}],"expression":{"id":22836,"name":"StorageSlot","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":11032,"src":"6524:11:78","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_StorageSlot_$11032_$","typeString":"type(library StorageSlot)"}},"id":22838,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"6536:12:78","memberName":"getBytesSlot","nodeType":"MemberAccess","referencedDeclaration":11020,"src":"6524:24:78","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_bytes32_$returns$_t_struct$_BytesSlot_$10932_storage_ptr_$","typeString":"function (bytes32) pure returns (struct StorageSlot.BytesSlot storage pointer)"}},"id":22840,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"6524:37:78","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_struct$_BytesSlot_$10932_storage_ptr","typeString":"struct StorageSlot.BytesSlot storage pointer"}},"id":22841,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"memberLocation":"6562:5:78","memberName":"value","nodeType":"MemberAccess","referencedDeclaration":10931,"src":"6524:43:78","typeDescriptions":{"typeIdentifier":"t_bytes_storage","typeString":"bytes storage ref"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"id":22842,"name":"newSwapConfigAsBytes","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":22798,"src":"6570:20:78","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}},"src":"6524:66:78","typeDescriptions":{"typeIdentifier":"t_bytes_storage","typeString":"bytes storage ref"}},"id":22844,"nodeType":"ExpressionStatement","src":"6524:66:78"}]},"id":22846,"implemented":true,"kind":"function","modifiers":[],"name":"_setSwapConfig","nameLocation":"6126:14:78","nodeType":"FunctionDefinition","parameters":{"id":22799,"nodeType":"ParameterList","parameters":[{"constant":false,"id":22796,"mutability":"mutable","name":"oldSwapConfig","nameLocation":"6171:13:78","nodeType":"VariableDeclaration","scope":22846,"src":"6141:43:78","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_struct$_SwapConfig_$1113_memory_ptr","typeString":"struct SwapLibrary.SwapConfig"},"typeName":{"id":22795,"nodeType":"UserDefinedTypeName","pathNode":{"id":22794,"name":"SwapLibrary.SwapConfig","nameLocations":["6141:11:78","6153:10:78"],"nodeType":"IdentifierPath","referencedDeclaration":1113,"src":"6141:22:78"},"referencedDeclaration":1113,"src":"6141:22:78","typeDescriptions":{"typeIdentifier":"t_struct$_SwapConfig_$1113_storage_ptr","typeString":"struct SwapLibrary.SwapConfig"}},"visibility":"internal"},{"constant":false,"id":22798,"mutability":"mutable","name":"newSwapConfigAsBytes","nameLocation":"6199:20:78","nodeType":"VariableDeclaration","scope":22846,"src":"6186:33:78","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes"},"typeName":{"id":22797,"name":"bytes","nodeType":"ElementaryTypeName","src":"6186:5:78","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"}],"src":"6140:80:78"},"returnParameters":{"id":22800,"nodeType":"ParameterList","parameters":[],"src":"6230:0:78"},"scope":22951,"src":"6117:478:78","stateMutability":"nonpayable","virtual":false,"visibility":"internal"},{"baseFunctions":[20686],"body":{"id":22909,"nodeType":"Block","src":"6741:1373:78","statements":[{"assignments":[22860],"declarations":[{"constant":false,"id":22860,"mutability":"mutable","name":"checkedMethod","nameLocation":"6762:13:78","nodeType":"VariableDeclaration","scope":22909,"src":"6747:28:78","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_enum$_ForwardMethods_$22437","typeString":"enum CompoundV3InvestStrategy.ForwardMethods"},"typeName":{"id":22859,"nodeType":"UserDefinedTypeName","pathNode":{"id":22858,"name":"ForwardMethods","nameLocations":["6747:14:78"],"nodeType":"IdentifierPath","referencedDeclaration":22437,"src":"6747:14:78"},"referencedDeclaration":22437,"src":"6747:14:78","typeDescriptions":{"typeIdentifier":"t_enum$_ForwardMethods_$22437","typeString":"enum CompoundV3InvestStrategy.ForwardMethods"}},"visibility":"internal"}],"id":22864,"initialValue":{"arguments":[{"id":22862,"name":"method","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":22849,"src":"6793:6:78","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint8","typeString":"uint8"}],"id":22861,"name":"ForwardMethods","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":22437,"src":"6778:14:78","typeDescriptions":{"typeIdentifier":"t_type$_t_enum$_ForwardMethods_$22437_$","typeString":"type(enum CompoundV3InvestStrategy.ForwardMethods)"}},"id":22863,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"6778:22:78","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_enum$_ForwardMethods_$22437","typeString":"enum CompoundV3InvestStrategy.ForwardMethods"}},"nodeType":"VariableDeclarationStatement","src":"6747:53:78"},{"condition":{"commonType":{"typeIdentifier":"t_enum$_ForwardMethods_$22437","typeString":"enum CompoundV3InvestStrategy.ForwardMethods"},"id":22868,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":22865,"name":"checkedMethod","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":22860,"src":"6810:13:78","typeDescriptions":{"typeIdentifier":"t_enum$_ForwardMethods_$22437","typeString":"enum CompoundV3InvestStrategy.ForwardMethods"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"expression":{"id":22866,"name":"ForwardMethods","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":22437,"src":"6827:14:78","typeDescriptions":{"typeIdentifier":"t_type$_t_enum$_ForwardMethods_$22437_$","typeString":"type(enum CompoundV3InvestStrategy.ForwardMethods)"}},"id":22867,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberLocation":"6842:14:78","memberName":"harvestRewards","nodeType":"MemberAccess","referencedDeclaration":22435,"src":"6827:29:78","typeDescriptions":{"typeIdentifier":"t_enum$_ForwardMethods_$22437","typeString":"enum CompoundV3InvestStrategy.ForwardMethods"}},"src":"6810:46:78","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"falseBody":{"condition":{"commonType":{"typeIdentifier":"t_enum$_ForwardMethods_$22437","typeString":"enum CompoundV3InvestStrategy.ForwardMethods"},"id":22887,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":22884,"name":"checkedMethod","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":22860,"src":"7507:13:78","typeDescriptions":{"typeIdentifier":"t_enum$_ForwardMethods_$22437","typeString":"enum CompoundV3InvestStrategy.ForwardMethods"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"expression":{"id":22885,"name":"ForwardMethods","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":22437,"src":"7524:14:78","typeDescriptions":{"typeIdentifier":"t_type$_t_enum$_ForwardMethods_$22437_$","typeString":"type(enum CompoundV3InvestStrategy.ForwardMethods)"}},"id":22886,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberLocation":"7539:13:78","memberName":"setSwapConfig","nodeType":"MemberAccess","referencedDeclaration":22436,"src":"7524:28:78","typeDescriptions":{"typeIdentifier":"t_enum$_ForwardMethods_$22437","typeString":"enum CompoundV3InvestStrategy.ForwardMethods"}},"src":"7507:45:78","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"falseBody":{"expression":{"arguments":[],"expression":{"argumentTypes":[],"id":22899,"name":"revert","nodeType":"Identifier","overloadedDeclarations":[-19,-19],"referencedDeclaration":-19,"src":"8078:6:78","typeDescriptions":{"typeIdentifier":"t_function_revert_pure$__$returns$__$","typeString":"function () pure"}},"id":22900,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"8078:8:78","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":22901,"nodeType":"ExpressionStatement","src":"8078:8:78"},"id":22902,"nodeType":"IfStatement","src":"7503:583:78","trueBody":{"id":22898,"nodeType":"Block","src":"7554:274:78","statements":[{"expression":{"arguments":[{"arguments":[{"arguments":[{"id":22892,"name":"this","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-28,"src":"7806:4:78","typeDescriptions":{"typeIdentifier":"t_contract$_CompoundV3InvestStrategy_$22951","typeString":"contract CompoundV3InvestStrategy"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_contract$_CompoundV3InvestStrategy_$22951","typeString":"contract CompoundV3InvestStrategy"}],"id":22891,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"7798:7:78","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":22890,"name":"address","nodeType":"ElementaryTypeName","src":"7798:7:78","typeDescriptions":{}}},"id":22893,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"7798:13:78","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"id":22889,"name":"_getSwapConfig","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":22936,"src":"7783:14:78","typeDescriptions":{"typeIdentifier":"t_function_internal_view$_t_address_$returns$_t_struct$_SwapConfig_$1113_memory_ptr_$","typeString":"function (address) view returns (struct SwapLibrary.SwapConfig memory)"}},"id":22894,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"7783:29:78","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_struct$_SwapConfig_$1113_memory_ptr","typeString":"struct SwapLibrary.SwapConfig memory"}},{"id":22895,"name":"params","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":22851,"src":"7814:6:78","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_struct$_SwapConfig_$1113_memory_ptr","typeString":"struct SwapLibrary.SwapConfig memory"},{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}],"id":22888,"name":"_setSwapConfig","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":22846,"src":"7768:14:78","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_struct$_SwapConfig_$1113_memory_ptr_$_t_bytes_memory_ptr_$returns$__$","typeString":"function (struct SwapLibrary.SwapConfig memory,bytes memory)"}},"id":22896,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"7768:53:78","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":22897,"nodeType":"ExpressionStatement","src":"7768:53:78"}]}},"id":22903,"nodeType":"IfStatement","src":"6806:1280:78","trueBody":{"id":22883,"nodeType":"Block","src":"6858:639:78","statements":[{"assignments":[22870],"declarations":[{"constant":false,"id":22870,"mutability":"mutable","name":"price","nameLocation":"7423:5:78","nodeType":"VariableDeclaration","scope":22883,"src":"7415:13:78","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":22869,"name":"uint256","nodeType":"ElementaryTypeName","src":"7415:7:78","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":22878,"initialValue":{"arguments":[{"id":22873,"name":"params","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":22851,"src":"7442:6:78","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}},{"components":[{"id":22875,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"7451:7:78","typeDescriptions":{"typeIdentifier":"t_type$_t_uint256_$","typeString":"type(uint256)"},"typeName":{"id":22874,"name":"uint256","nodeType":"ElementaryTypeName","src":"7451:7:78","typeDescriptions":{}}}],"id":22876,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"TupleExpression","src":"7450:9:78","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":22871,"name":"abi","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-1,"src":"7431:3:78","typeDescriptions":{"typeIdentifier":"t_magic_abi","typeString":"abi"}},"id":22872,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberLocation":"7435:6:78","memberName":"decode","nodeType":"MemberAccess","src":"7431:10:78","typeDescriptions":{"typeIdentifier":"t_function_abidecode_pure$__$returns$__$","typeString":"function () pure"}},"id":22877,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"7431:29:78","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"VariableDeclarationStatement","src":"7415:45:78"},{"expression":{"arguments":[{"id":22880,"name":"price","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":22870,"src":"7484:5:78","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":22879,"name":"_harvestRewards","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":22793,"src":"7468:15:78","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_uint256_$returns$__$","typeString":"function (uint256)"}},"id":22881,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"7468:22:78","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":22882,"nodeType":"ExpressionStatement","src":"7468:22:78"}]}},{"expression":{"arguments":[{"hexValue":"","id":22906,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"8106:2:78","typeDescriptions":{"typeIdentifier":"t_stringliteral_c5d2460186f7233c927e7db2dcc703c0e500b653ca82273b7bfad8045d85a470","typeString":"literal_string \"\""},"value":""}],"expression":{"argumentTypes":[{"typeIdentifier":"t_stringliteral_c5d2460186f7233c927e7db2dcc703c0e500b653ca82273b7bfad8045d85a470","typeString":"literal_string \"\""}],"id":22905,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"8100:5:78","typeDescriptions":{"typeIdentifier":"t_type$_t_bytes_storage_ptr_$","typeString":"type(bytes storage pointer)"},"typeName":{"id":22904,"name":"bytes","nodeType":"ElementaryTypeName","src":"8100:5:78","typeDescriptions":{}}},"id":22907,"isConstant":false,"isLValue":false,"isPure":true,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"8100:9:78","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}},"functionReturnParameters":22857,"id":22908,"nodeType":"Return","src":"8093:16:78"}]},"documentation":{"id":22847,"nodeType":"StructuredDocumentation","src":"6599:31:78","text":"@inheritdoc IInvestStrategy"},"functionSelector":"0981b1c2","id":22910,"implemented":true,"kind":"function","modifiers":[{"id":22854,"kind":"modifierInvocation","modifierName":{"id":22853,"name":"onlyDelegCall","nameLocations":["6704:13:78"],"nodeType":"IdentifierPath","referencedDeclaration":22451,"src":"6704:13:78"},"nodeType":"ModifierInvocation","src":"6704:13:78"}],"name":"forwardEntryPoint","nameLocation":"6642:17:78","nodeType":"FunctionDefinition","parameters":{"id":22852,"nodeType":"ParameterList","parameters":[{"constant":false,"id":22849,"mutability":"mutable","name":"method","nameLocation":"6666:6:78","nodeType":"VariableDeclaration","scope":22910,"src":"6660:12:78","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"},"typeName":{"id":22848,"name":"uint8","nodeType":"ElementaryTypeName","src":"6660:5:78","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}},"visibility":"internal"},{"constant":false,"id":22851,"mutability":"mutable","name":"params","nameLocation":"6687:6:78","nodeType":"VariableDeclaration","scope":22910,"src":"6674:19:78","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes"},"typeName":{"id":22850,"name":"bytes","nodeType":"ElementaryTypeName","src":"6674:5:78","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"}],"src":"6659:35:78"},"returnParameters":{"id":22857,"nodeType":"ParameterList","parameters":[{"constant":false,"id":22856,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":22910,"src":"6727:12:78","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes"},"typeName":{"id":22855,"name":"bytes","nodeType":"ElementaryTypeName","src":"6727:5:78","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"}],"src":"6726:14:78"},"scope":22951,"src":"6633:1481:78","stateMutability":"nonpayable","virtual":false,"visibility":"external"},{"body":{"id":22935,"nodeType":"Block","src":"8215:163:78","statements":[{"assignments":[22919],"declarations":[{"constant":false,"id":22919,"mutability":"mutable","name":"swapConfigAsBytes","nameLocation":"8234:17:78","nodeType":"VariableDeclaration","scope":22935,"src":"8221:30:78","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes"},"typeName":{"id":22918,"name":"bytes","nodeType":"ElementaryTypeName","src":"8221:5:78","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"}],"id":22926,"initialValue":{"arguments":[{"id":22924,"name":"storageSlot","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":22399,"src":"8293:11:78","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes32","typeString":"bytes32"}],"expression":{"arguments":[{"id":22921,"name":"contract_","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":22912,"src":"8269:9:78","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"id":22920,"name":"IExposeStorage","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":20649,"src":"8254:14:78","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_IExposeStorage_$20649_$","typeString":"type(contract IExposeStorage)"}},"id":22922,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"8254:25:78","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_contract$_IExposeStorage_$20649","typeString":"contract IExposeStorage"}},"id":22923,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"8280:12:78","memberName":"getBytesSlot","nodeType":"MemberAccess","referencedDeclaration":20648,"src":"8254:38:78","typeDescriptions":{"typeIdentifier":"t_function_external_view$_t_bytes32_$returns$_t_bytes_memory_ptr_$","typeString":"function (bytes32) view external returns (bytes memory)"}},"id":22925,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"8254:51:78","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}},"nodeType":"VariableDeclarationStatement","src":"8221:84:78"},{"expression":{"arguments":[{"id":22929,"name":"swapConfigAsBytes","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":22919,"src":"8329:17:78","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}},{"components":[{"expression":{"id":22930,"name":"SwapLibrary","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1879,"src":"8349:11:78","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_SwapLibrary_$1879_$","typeString":"type(library SwapLibrary)"}},"id":22931,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"8361:10:78","memberName":"SwapConfig","nodeType":"MemberAccess","referencedDeclaration":1113,"src":"8349:22:78","typeDescriptions":{"typeIdentifier":"t_type$_t_struct$_SwapConfig_$1113_storage_ptr_$","typeString":"type(struct SwapLibrary.SwapConfig storage pointer)"}}],"id":22932,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"8348:24:78","typeDescriptions":{"typeIdentifier":"t_type$_t_struct$_SwapConfig_$1113_storage_ptr_$","typeString":"type(struct SwapLibrary.SwapConfig storage pointer)"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"},{"typeIdentifier":"t_type$_t_struct$_SwapConfig_$1113_storage_ptr_$","typeString":"type(struct SwapLibrary.SwapConfig storage pointer)"}],"expression":{"id":22927,"name":"abi","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-1,"src":"8318:3:78","typeDescriptions":{"typeIdentifier":"t_magic_abi","typeString":"abi"}},"id":22928,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberLocation":"8322:6:78","memberName":"decode","nodeType":"MemberAccess","src":"8318:10:78","typeDescriptions":{"typeIdentifier":"t_function_abidecode_pure$__$returns$__$","typeString":"function () pure"}},"id":22933,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"8318:55:78","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_struct$_SwapConfig_$1113_memory_ptr","typeString":"struct SwapLibrary.SwapConfig memory"}},"functionReturnParameters":22917,"id":22934,"nodeType":"Return","src":"8311:62:78"}]},"id":22936,"implemented":true,"kind":"function","modifiers":[],"name":"_getSwapConfig","nameLocation":"8127:14:78","nodeType":"FunctionDefinition","parameters":{"id":22913,"nodeType":"ParameterList","parameters":[{"constant":false,"id":22912,"mutability":"mutable","name":"contract_","nameLocation":"8150:9:78","nodeType":"VariableDeclaration","scope":22936,"src":"8142:17:78","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":22911,"name":"address","nodeType":"ElementaryTypeName","src":"8142:7:78","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"8141:19:78"},"returnParameters":{"id":22917,"nodeType":"ParameterList","parameters":[{"constant":false,"id":22916,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":22936,"src":"8184:29:78","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_struct$_SwapConfig_$1113_memory_ptr","typeString":"struct SwapLibrary.SwapConfig"},"typeName":{"id":22915,"nodeType":"UserDefinedTypeName","pathNode":{"id":22914,"name":"SwapLibrary.SwapConfig","nameLocations":["8184:11:78","8196:10:78"],"nodeType":"IdentifierPath","referencedDeclaration":1113,"src":"8184:22:78"},"referencedDeclaration":1113,"src":"8184:22:78","typeDescriptions":{"typeIdentifier":"t_struct$_SwapConfig_$1113_storage_ptr","typeString":"struct SwapLibrary.SwapConfig"}},"visibility":"internal"}],"src":"8183:31:78"},"scope":22951,"src":"8118:260:78","stateMutability":"view","virtual":false,"visibility":"internal"},{"body":{"id":22949,"nodeType":"Block","src":"8734:43:78","statements":[{"expression":{"arguments":[{"id":22946,"name":"contract_","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":22939,"src":"8762:9:78","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"id":22945,"name":"_getSwapConfig","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":22936,"src":"8747:14:78","typeDescriptions":{"typeIdentifier":"t_function_internal_view$_t_address_$returns$_t_struct$_SwapConfig_$1113_memory_ptr_$","typeString":"function (address) view returns (struct SwapLibrary.SwapConfig memory)"}},"id":22947,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"8747:25:78","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_struct$_SwapConfig_$1113_memory_ptr","typeString":"struct SwapLibrary.SwapConfig memory"}},"functionReturnParameters":22944,"id":22948,"nodeType":"Return","src":"8740:32:78"}]},"documentation":{"id":22937,"nodeType":"StructuredDocumentation","src":"8382:255:78","text":" @dev Returns the swap configuration of the given contract. It uses the internal function _getSwapConfig that returns the decoded swap configuration structure.\n @param contract_ Address of the contract configuration being requested."},"functionSelector":"42b054f0","id":22950,"implemented":true,"kind":"function","modifiers":[],"name":"getSwapConfig","nameLocation":"8649:13:78","nodeType":"FunctionDefinition","parameters":{"id":22940,"nodeType":"ParameterList","parameters":[{"constant":false,"id":22939,"mutability":"mutable","name":"contract_","nameLocation":"8671:9:78","nodeType":"VariableDeclaration","scope":22950,"src":"8663:17:78","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":22938,"name":"address","nodeType":"ElementaryTypeName","src":"8663:7:78","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"8662:19:78"},"returnParameters":{"id":22944,"nodeType":"ParameterList","parameters":[{"constant":false,"id":22943,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":22950,"src":"8703:29:78","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_struct$_SwapConfig_$1113_memory_ptr","typeString":"struct SwapLibrary.SwapConfig"},"typeName":{"id":22942,"nodeType":"UserDefinedTypeName","pathNode":{"id":22941,"name":"SwapLibrary.SwapConfig","nameLocations":["8703:11:78","8715:10:78"],"nodeType":"IdentifierPath","referencedDeclaration":1113,"src":"8703:22:78"},"referencedDeclaration":1113,"src":"8703:22:78","typeDescriptions":{"typeIdentifier":"t_struct$_SwapConfig_$1113_storage_ptr","typeString":"struct SwapLibrary.SwapConfig"}},"visibility":"internal"}],"src":"8702:31:78"},"scope":22951,"src":"8640:137:78","stateMutability":"view","virtual":false,"visibility":"public"}],"scope":22952,"src":"1315:7464:78","usedErrors":[22427,22429,22431,22433],"usedEvents":[22416,22425]}],"src":"39:8741:78"},"id":78},"contracts/strategies/ERC4626InvestStrategy.sol":{"ast":{"absolutePath":"contracts/strategies/ERC4626InvestStrategy.sol","exportedSymbols":{"ERC4626InvestStrategy":[23209],"IERC20":[8679],"IERC4626":[7127],"IInvestStrategy":[20725],"InvestStrategyClient":[15693]},"id":23210,"license":"Apache-2.0","nodeType":"SourceUnit","nodes":[{"id":22953,"literals":["solidity","^","0.8",".0"],"nodeType":"PragmaDirective","src":"39:23:79"},{"absolutePath":"@openzeppelin/contracts/interfaces/IERC20.sol","file":"@openzeppelin/contracts/interfaces/IERC20.sol","id":22955,"nameLocation":"-1:-1:-1","nodeType":"ImportDirective","scope":23210,"sourceUnit":6954,"src":"64:69:79","symbolAliases":[{"foreign":{"id":22954,"name":"IERC20","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8679,"src":"72:6:79","typeDescriptions":{}},"nameLocation":"-1:-1:-1"}],"unitAlias":""},{"absolutePath":"@openzeppelin/contracts/interfaces/IERC4626.sol","file":"@openzeppelin/contracts/interfaces/IERC4626.sol","id":22957,"nameLocation":"-1:-1:-1","nodeType":"ImportDirective","scope":23210,"sourceUnit":7128,"src":"134:73:79","symbolAliases":[{"foreign":{"id":22956,"name":"IERC4626","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7127,"src":"142:8:79","typeDescriptions":{}},"nameLocation":"-1:-1:-1"}],"unitAlias":""},{"absolutePath":"contracts/interfaces/IInvestStrategy.sol","file":"../interfaces/IInvestStrategy.sol","id":22959,"nameLocation":"-1:-1:-1","nodeType":"ImportDirective","scope":23210,"sourceUnit":20726,"src":"208:66:79","symbolAliases":[{"foreign":{"id":22958,"name":"IInvestStrategy","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":20725,"src":"216:15:79","typeDescriptions":{}},"nameLocation":"-1:-1:-1"}],"unitAlias":""},{"absolutePath":"contracts/InvestStrategyClient.sol","file":"../InvestStrategyClient.sol","id":22961,"nameLocation":"-1:-1:-1","nodeType":"ImportDirective","scope":23210,"sourceUnit":15694,"src":"275:65:79","symbolAliases":[{"foreign":{"id":22960,"name":"InvestStrategyClient","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":15693,"src":"283:20:79","typeDescriptions":{}},"nameLocation":"-1:-1:-1"}],"unitAlias":""},{"abstract":false,"baseContracts":[{"baseName":{"id":22963,"name":"IInvestStrategy","nameLocations":["545:15:79"],"nodeType":"IdentifierPath","referencedDeclaration":20725,"src":"545:15:79"},"id":22964,"nodeType":"InheritanceSpecifier","src":"545:15:79"}],"canonicalName":"ERC4626InvestStrategy","contractDependencies":[],"contractKind":"contract","documentation":{"id":22962,"nodeType":"StructuredDocumentation","src":"342:168:79","text":" @title ERC4626InvestStrategy\n @dev Strategy that invests/deinvests into a 4626 vault\n @custom:security-contact security@ensuro.co\n @author Ensuro"},"fullyImplemented":true,"id":23209,"linearizedBaseContracts":[23209,20725],"name":"ERC4626InvestStrategy","nameLocation":"520:21:79","nodeType":"ContractDefinition","nodes":[{"constant":false,"id":22970,"mutability":"immutable","name":"__self","nameLocation":"591:6:79","nodeType":"VariableDeclaration","scope":23209,"src":"565:48:79","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":22965,"name":"address","nodeType":"ElementaryTypeName","src":"565:7:79","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"value":{"arguments":[{"id":22968,"name":"this","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-28,"src":"608:4:79","typeDescriptions":{"typeIdentifier":"t_contract$_ERC4626InvestStrategy_$23209","typeString":"contract ERC4626InvestStrategy"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_contract$_ERC4626InvestStrategy_$23209","typeString":"contract ERC4626InvestStrategy"}],"id":22967,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"600:7:79","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":22966,"name":"address","nodeType":"ElementaryTypeName","src":"600:7:79","typeDescriptions":{}}},"id":22969,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"600:13:79","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"private"},{"baseFunctions":[20724],"constant":false,"functionSelector":"5b9a4c35","id":22976,"mutability":"immutable","name":"storageSlot","nameLocation":"642:11:79","nodeType":"VariableDeclaration","scope":23209,"src":"617:81:79","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":22971,"name":"bytes32","nodeType":"ElementaryTypeName","src":"617:7:79","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"value":{"arguments":[{"id":22974,"name":"this","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-28,"src":"693:4:79","typeDescriptions":{"typeIdentifier":"t_contract$_ERC4626InvestStrategy_$23209","typeString":"contract ERC4626InvestStrategy"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_contract$_ERC4626InvestStrategy_$23209","typeString":"contract ERC4626InvestStrategy"}],"expression":{"id":22972,"name":"InvestStrategyClient","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":15693,"src":"656:20:79","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_InvestStrategyClient_$15693_$","typeString":"type(library InvestStrategyClient)"}},"id":22973,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"677:15:79","memberName":"makeStorageSlot","nodeType":"MemberAccess","referencedDeclaration":15638,"src":"656:36:79","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_contract$_IInvestStrategy_$20725_$returns$_t_bytes32_$","typeString":"function (contract IInvestStrategy) pure returns (bytes32)"}},"id":22975,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"656:42:79","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"public"},{"constant":false,"id":22979,"mutability":"immutable","name":"_vault","nameLocation":"731:6:79","nodeType":"VariableDeclaration","scope":23209,"src":"703:34:79","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_contract$_IERC4626_$7127","typeString":"contract IERC4626"},"typeName":{"id":22978,"nodeType":"UserDefinedTypeName","pathNode":{"id":22977,"name":"IERC4626","nameLocations":["703:8:79"],"nodeType":"IdentifierPath","referencedDeclaration":7127,"src":"703:8:79"},"referencedDeclaration":7127,"src":"703:8:79","typeDescriptions":{"typeIdentifier":"t_contract$_IERC4626_$7127","typeString":"contract IERC4626"}},"visibility":"internal"},{"constant":false,"id":22982,"mutability":"immutable","name":"_asset","nameLocation":"767:6:79","nodeType":"VariableDeclaration","scope":23209,"src":"741:32:79","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_contract$_IERC20_$8679","typeString":"contract IERC20"},"typeName":{"id":22981,"nodeType":"UserDefinedTypeName","pathNode":{"id":22980,"name":"IERC20","nameLocations":["741:6:79"],"nodeType":"IdentifierPath","referencedDeclaration":8679,"src":"741:6:79"},"referencedDeclaration":8679,"src":"741:6:79","typeDescriptions":{"typeIdentifier":"t_contract$_IERC20_$8679","typeString":"contract IERC20"}},"visibility":"internal"},{"errorSelector":"aafc462c","id":22984,"name":"CanBeCalledOnlyThroughDelegateCall","nameLocation":"784:34:79","nodeType":"ErrorDefinition","parameters":{"id":22983,"nodeType":"ParameterList","parameters":[],"src":"818:2:79"},"src":"778:43:79"},{"errorSelector":"8542eda2","id":22986,"name":"CannotDisconnectWithAssets","nameLocation":"830:26:79","nodeType":"ErrorDefinition","parameters":{"id":22985,"nodeType":"ParameterList","parameters":[],"src":"856:2:79"},"src":"824:35:79"},{"errorSelector":"50701b61","id":22988,"name":"NoExtraDataAllowed","nameLocation":"868:18:79","nodeType":"ErrorDefinition","parameters":{"id":22987,"nodeType":"ParameterList","parameters":[],"src":"886:2:79"},"src":"862:27:79"},{"body":{"id":23001,"nodeType":"Block","src":"918:90:79","statements":[{"condition":{"commonType":{"typeIdentifier":"t_address","typeString":"address"},"id":22995,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"arguments":[{"id":22992,"name":"this","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-28,"src":"936:4:79","typeDescriptions":{"typeIdentifier":"t_contract$_ERC4626InvestStrategy_$23209","typeString":"contract ERC4626InvestStrategy"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_contract$_ERC4626InvestStrategy_$23209","typeString":"contract ERC4626InvestStrategy"}],"id":22991,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"928:7:79","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":22990,"name":"address","nodeType":"ElementaryTypeName","src":"928:7:79","typeDescriptions":{}}},"id":22993,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"928:13:79","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"id":22994,"name":"__self","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":22970,"src":"945:6:79","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"src":"928:23:79","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":22999,"nodeType":"IfStatement","src":"924:72:79","trueBody":{"errorCall":{"arguments":[],"expression":{"argumentTypes":[],"id":22996,"name":"CanBeCalledOnlyThroughDelegateCall","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":22984,"src":"960:34:79","typeDescriptions":{"typeIdentifier":"t_function_error_pure$__$returns$_t_error_$","typeString":"function () pure returns (error)"}},"id":22997,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"960:36:79","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_error","typeString":"error"}},"id":22998,"nodeType":"RevertStatement","src":"953:43:79"}},{"id":23000,"nodeType":"PlaceholderStatement","src":"1002:1:79"}]},"id":23002,"name":"onlyDelegCall","nameLocation":"902:13:79","nodeType":"ModifierDefinition","parameters":{"id":22989,"nodeType":"ParameterList","parameters":[],"src":"915:2:79"},"src":"893:115:79","virtual":false,"visibility":"internal"},{"body":{"id":23020,"nodeType":"Block","src":"1041:63:79","statements":[{"expression":{"id":23010,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":23008,"name":"_vault","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":22979,"src":"1047:6:79","typeDescriptions":{"typeIdentifier":"t_contract$_IERC4626_$7127","typeString":"contract IERC4626"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"id":23009,"name":"vault_","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":23005,"src":"1056:6:79","typeDescriptions":{"typeIdentifier":"t_contract$_IERC4626_$7127","typeString":"contract IERC4626"}},"src":"1047:15:79","typeDescriptions":{"typeIdentifier":"t_contract$_IERC4626_$7127","typeString":"contract IERC4626"}},"id":23011,"nodeType":"ExpressionStatement","src":"1047:15:79"},{"expression":{"id":23018,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":23012,"name":"_asset","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":22982,"src":"1068:6:79","typeDescriptions":{"typeIdentifier":"t_contract$_IERC20_$8679","typeString":"contract IERC20"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"arguments":[{"arguments":[],"expression":{"argumentTypes":[],"expression":{"id":23014,"name":"vault_","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":23005,"src":"1084:6:79","typeDescriptions":{"typeIdentifier":"t_contract$_IERC4626_$7127","typeString":"contract IERC4626"}},"id":23015,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"1091:5:79","memberName":"asset","nodeType":"MemberAccess","referencedDeclaration":6996,"src":"1084:12:79","typeDescriptions":{"typeIdentifier":"t_function_external_view$__$returns$_t_address_$","typeString":"function () view external returns (address)"}},"id":23016,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"1084:14:79","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"id":23013,"name":"IERC20","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8679,"src":"1077:6:79","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_IERC20_$8679_$","typeString":"type(contract IERC20)"}},"id":23017,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"1077:22:79","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_contract$_IERC20_$8679","typeString":"contract IERC20"}},"src":"1068:31:79","typeDescriptions":{"typeIdentifier":"t_contract$_IERC20_$8679","typeString":"contract IERC20"}},"id":23019,"nodeType":"ExpressionStatement","src":"1068:31:79"}]},"id":23021,"implemented":true,"kind":"constructor","modifiers":[],"name":"","nameLocation":"-1:-1:-1","nodeType":"FunctionDefinition","parameters":{"id":23006,"nodeType":"ParameterList","parameters":[{"constant":false,"id":23005,"mutability":"mutable","name":"vault_","nameLocation":"1033:6:79","nodeType":"VariableDeclaration","scope":23021,"src":"1024:15:79","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_contract$_IERC4626_$7127","typeString":"contract IERC4626"},"typeName":{"id":23004,"nodeType":"UserDefinedTypeName","pathNode":{"id":23003,"name":"IERC4626","nameLocations":["1024:8:79"],"nodeType":"IdentifierPath","referencedDeclaration":7127,"src":"1024:8:79"},"referencedDeclaration":7127,"src":"1024:8:79","typeDescriptions":{"typeIdentifier":"t_contract$_IERC4626_$7127","typeString":"contract IERC4626"}},"visibility":"internal"}],"src":"1023:17:79"},"returnParameters":{"id":23007,"nodeType":"ParameterList","parameters":[],"src":"1041:0:79"},"scope":23209,"src":"1012:92:79","stateMutability":"nonpayable","virtual":false,"visibility":"public"},{"baseFunctions":[20658],"body":{"id":23038,"nodeType":"Block","src":"1222:64:79","statements":[{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":23033,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"expression":{"id":23030,"name":"initData","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":23024,"src":"1232:8:79","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}},"id":23031,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"1241:6:79","memberName":"length","nodeType":"MemberAccess","src":"1232:15:79","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"!=","rightExpression":{"hexValue":"30","id":23032,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"1251:1:79","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"1232:20:79","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":23037,"nodeType":"IfStatement","src":"1228:53:79","trueBody":{"errorCall":{"arguments":[],"expression":{"argumentTypes":[],"id":23034,"name":"NoExtraDataAllowed","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":22988,"src":"1261:18:79","typeDescriptions":{"typeIdentifier":"t_function_error_pure$__$returns$_t_error_$","typeString":"function () pure returns (error)"}},"id":23035,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"1261:20:79","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_error","typeString":"error"}},"id":23036,"nodeType":"RevertStatement","src":"1254:27:79"}}]},"documentation":{"id":23022,"nodeType":"StructuredDocumentation","src":"1108:31:79","text":"@inheritdoc IInvestStrategy"},"functionSelector":"9cd47128","id":23039,"implemented":true,"kind":"function","modifiers":[{"id":23028,"kind":"modifierInvocation","modifierName":{"id":23027,"name":"onlyDelegCall","nameLocations":["1208:13:79"],"nodeType":"IdentifierPath","referencedDeclaration":23002,"src":"1208:13:79"},"nodeType":"ModifierInvocation","src":"1208:13:79"}],"name":"connect","nameLocation":"1151:7:79","nodeType":"FunctionDefinition","overrides":{"id":23026,"nodeType":"OverrideSpecifier","overrides":[],"src":"1199:8:79"},"parameters":{"id":23025,"nodeType":"ParameterList","parameters":[{"constant":false,"id":23024,"mutability":"mutable","name":"initData","nameLocation":"1172:8:79","nodeType":"VariableDeclaration","scope":23039,"src":"1159:21:79","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes"},"typeName":{"id":23023,"name":"bytes","nodeType":"ElementaryTypeName","src":"1159:5:79","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"}],"src":"1158:23:79"},"returnParameters":{"id":23029,"nodeType":"ParameterList","parameters":[],"src":"1222:0:79"},"scope":23209,"src":"1142:144:79","stateMutability":"nonpayable","virtual":true,"visibility":"external"},{"baseFunctions":[20664],"body":{"id":23064,"nodeType":"Block","src":"1396:322:79","statements":[{"condition":{"commonType":{"typeIdentifier":"t_bool","typeString":"bool"},"id":23059,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":23049,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"UnaryOperation","operator":"!","prefix":true,"src":"1630:6:79","subExpression":{"id":23048,"name":"force","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":23042,"src":"1631:5:79","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"nodeType":"BinaryOperation","operator":"&&","rightExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":23058,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"arguments":[{"arguments":[{"id":23054,"name":"this","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-28,"src":"1665:4:79","typeDescriptions":{"typeIdentifier":"t_contract$_ERC4626InvestStrategy_$23209","typeString":"contract ERC4626InvestStrategy"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_contract$_ERC4626InvestStrategy_$23209","typeString":"contract ERC4626InvestStrategy"}],"id":23053,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"1657:7:79","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":23052,"name":"address","nodeType":"ElementaryTypeName","src":"1657:7:79","typeDescriptions":{}}},"id":23055,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"1657:13:79","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"expression":{"id":23050,"name":"_vault","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":22979,"src":"1640:6:79","typeDescriptions":{"typeIdentifier":"t_contract$_IERC4626_$7127","typeString":"contract IERC4626"}},"id":23051,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"1647:9:79","memberName":"balanceOf","nodeType":"MemberAccess","referencedDeclaration":8636,"src":"1640:16:79","typeDescriptions":{"typeIdentifier":"t_function_external_view$_t_address_$returns$_t_uint256_$","typeString":"function (address) view external returns (uint256)"}},"id":23056,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"1640:31:79","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"!=","rightExpression":{"hexValue":"30","id":23057,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"1675:1:79","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"1640:36:79","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"src":"1630:46:79","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":23063,"nodeType":"IfStatement","src":"1626:87:79","trueBody":{"errorCall":{"arguments":[],"expression":{"argumentTypes":[],"id":23060,"name":"CannotDisconnectWithAssets","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":22986,"src":"1685:26:79","typeDescriptions":{"typeIdentifier":"t_function_error_pure$__$returns$_t_error_$","typeString":"function () pure returns (error)"}},"id":23061,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"1685:28:79","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_error","typeString":"error"}},"id":23062,"nodeType":"RevertStatement","src":"1678:35:79"}}]},"documentation":{"id":23040,"nodeType":"StructuredDocumentation","src":"1290:31:79","text":"@inheritdoc IInvestStrategy"},"functionSelector":"5a117456","id":23065,"implemented":true,"kind":"function","modifiers":[{"id":23046,"kind":"modifierInvocation","modifierName":{"id":23045,"name":"onlyDelegCall","nameLocations":["1382:13:79"],"nodeType":"IdentifierPath","referencedDeclaration":23002,"src":"1382:13:79"},"nodeType":"ModifierInvocation","src":"1382:13:79"}],"name":"disconnect","nameLocation":"1333:10:79","nodeType":"FunctionDefinition","overrides":{"id":23044,"nodeType":"OverrideSpecifier","overrides":[],"src":"1373:8:79"},"parameters":{"id":23043,"nodeType":"ParameterList","parameters":[{"constant":false,"id":23042,"mutability":"mutable","name":"force","nameLocation":"1349:5:79","nodeType":"VariableDeclaration","scope":23065,"src":"1344:10:79","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":23041,"name":"bool","nodeType":"ElementaryTypeName","src":"1344:4:79","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"}],"src":"1343:12:79"},"returnParameters":{"id":23047,"nodeType":"ParameterList","parameters":[],"src":"1396:0:79"},"scope":23209,"src":"1324:394:79","stateMutability":"nonpayable","virtual":true,"visibility":"external"},{"baseFunctions":[20718],"body":{"id":23079,"nodeType":"Block","src":"1843:47:79","statements":[{"expression":{"arguments":[{"id":23076,"name":"contract_","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":23068,"src":"1875:9:79","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"expression":{"id":23074,"name":"_vault","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":22979,"src":"1856:6:79","typeDescriptions":{"typeIdentifier":"t_contract$_IERC4626_$7127","typeString":"contract IERC4626"}},"id":23075,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"1863:11:79","memberName":"maxWithdraw","nodeType":"MemberAccess","referencedDeclaration":7078,"src":"1856:18:79","typeDescriptions":{"typeIdentifier":"t_function_external_view$_t_address_$returns$_t_uint256_$","typeString":"function (address) view external returns (uint256)"}},"id":23077,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"1856:29:79","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"functionReturnParameters":23073,"id":23078,"nodeType":"Return","src":"1849:36:79"}]},"documentation":{"id":23066,"nodeType":"StructuredDocumentation","src":"1722:31:79","text":"@inheritdoc IInvestStrategy"},"functionSelector":"ce96cb77","id":23080,"implemented":true,"kind":"function","modifiers":[],"name":"maxWithdraw","nameLocation":"1765:11:79","nodeType":"FunctionDefinition","overrides":{"id":23070,"nodeType":"OverrideSpecifier","overrides":[],"src":"1816:8:79"},"parameters":{"id":23069,"nodeType":"ParameterList","parameters":[{"constant":false,"id":23068,"mutability":"mutable","name":"contract_","nameLocation":"1785:9:79","nodeType":"VariableDeclaration","scope":23080,"src":"1777:17:79","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":23067,"name":"address","nodeType":"ElementaryTypeName","src":"1777:7:79","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"1776:19:79"},"returnParameters":{"id":23073,"nodeType":"ParameterList","parameters":[{"constant":false,"id":23072,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":23080,"src":"1834:7:79","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":23071,"name":"uint256","nodeType":"ElementaryTypeName","src":"1834:7:79","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"1833:9:79"},"scope":23209,"src":"1756:134:79","stateMutability":"view","virtual":true,"visibility":"public"},{"baseFunctions":[20710],"body":{"id":23094,"nodeType":"Block","src":"2014:46:79","statements":[{"expression":{"arguments":[{"id":23091,"name":"contract_","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":23083,"src":"2045:9:79","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"expression":{"id":23089,"name":"_vault","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":22979,"src":"2027:6:79","typeDescriptions":{"typeIdentifier":"t_contract$_IERC4626_$7127","typeString":"contract IERC4626"}},"id":23090,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"2034:10:79","memberName":"maxDeposit","nodeType":"MemberAccess","referencedDeclaration":7026,"src":"2027:17:79","typeDescriptions":{"typeIdentifier":"t_function_external_view$_t_address_$returns$_t_uint256_$","typeString":"function (address) view external returns (uint256)"}},"id":23092,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"2027:28:79","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"functionReturnParameters":23088,"id":23093,"nodeType":"Return","src":"2020:35:79"}]},"documentation":{"id":23081,"nodeType":"StructuredDocumentation","src":"1894:31:79","text":"@inheritdoc IInvestStrategy"},"functionSelector":"402d267d","id":23095,"implemented":true,"kind":"function","modifiers":[],"name":"maxDeposit","nameLocation":"1937:10:79","nodeType":"FunctionDefinition","overrides":{"id":23085,"nodeType":"OverrideSpecifier","overrides":[],"src":"1987:8:79"},"parameters":{"id":23084,"nodeType":"ParameterList","parameters":[{"constant":false,"id":23083,"mutability":"mutable","name":"contract_","nameLocation":"1956:9:79","nodeType":"VariableDeclaration","scope":23095,"src":"1948:17:79","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":23082,"name":"address","nodeType":"ElementaryTypeName","src":"1948:7:79","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"1947:19:79"},"returnParameters":{"id":23088,"nodeType":"ParameterList","parameters":[{"constant":false,"id":23087,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":23095,"src":"2005:7:79","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":23086,"name":"uint256","nodeType":"ElementaryTypeName","src":"2005:7:79","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"2004:9:79"},"scope":23209,"src":"1928:132:79","stateMutability":"view","virtual":true,"visibility":"public"},{"baseFunctions":[20694],"body":{"id":23109,"nodeType":"Block","src":"2169:33:79","statements":[{"expression":{"arguments":[{"id":23106,"name":"_asset","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":22982,"src":"2190:6:79","typeDescriptions":{"typeIdentifier":"t_contract$_IERC20_$8679","typeString":"contract IERC20"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_contract$_IERC20_$8679","typeString":"contract IERC20"}],"id":23105,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"2182:7:79","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":23104,"name":"address","nodeType":"ElementaryTypeName","src":"2182:7:79","typeDescriptions":{}}},"id":23107,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"2182:15:79","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"functionReturnParameters":23103,"id":23108,"nodeType":"Return","src":"2175:22:79"}]},"documentation":{"id":23096,"nodeType":"StructuredDocumentation","src":"2064:31:79","text":"@inheritdoc IInvestStrategy"},"functionSelector":"9c4667a2","id":23110,"implemented":true,"kind":"function","modifiers":[],"name":"asset","nameLocation":"2107:5:79","nodeType":"FunctionDefinition","overrides":{"id":23100,"nodeType":"OverrideSpecifier","overrides":[],"src":"2142:8:79"},"parameters":{"id":23099,"nodeType":"ParameterList","parameters":[{"constant":false,"id":23098,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":23110,"src":"2113:7:79","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":23097,"name":"address","nodeType":"ElementaryTypeName","src":"2113:7:79","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"2112:9:79"},"returnParameters":{"id":23103,"nodeType":"ParameterList","parameters":[{"constant":false,"id":23102,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":23110,"src":"2160:7:79","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":23101,"name":"address","nodeType":"ElementaryTypeName","src":"2160:7:79","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"2159:9:79"},"scope":23209,"src":"2098:104:79","stateMutability":"view","virtual":true,"visibility":"public"},{"body":{"id":23119,"nodeType":"Block","src":"2340:24:79","statements":[{"expression":{"id":23117,"name":"_vault","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":22979,"src":"2353:6:79","typeDescriptions":{"typeIdentifier":"t_contract$_IERC4626_$7127","typeString":"contract IERC4626"}},"functionReturnParameters":23116,"id":23118,"nodeType":"Return","src":"2346:13:79"}]},"documentation":{"id":23111,"nodeType":"StructuredDocumentation","src":"2206:77:79","text":" @dev Returns the ERC4626 where this strategy invests the funds"},"functionSelector":"de2a87b5","id":23120,"implemented":true,"kind":"function","modifiers":[],"name":"investVault","nameLocation":"2295:11:79","nodeType":"FunctionDefinition","parameters":{"id":23112,"nodeType":"ParameterList","parameters":[],"src":"2306:2:79"},"returnParameters":{"id":23116,"nodeType":"ParameterList","parameters":[{"constant":false,"id":23115,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":23120,"src":"2330:8:79","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_contract$_IERC4626_$7127","typeString":"contract IERC4626"},"typeName":{"id":23114,"nodeType":"UserDefinedTypeName","pathNode":{"id":23113,"name":"IERC4626","nameLocations":["2330:8:79"],"nodeType":"IdentifierPath","referencedDeclaration":7127,"src":"2330:8:79"},"referencedDeclaration":7127,"src":"2330:8:79","typeDescriptions":{"typeIdentifier":"t_contract$_IERC4626_$7127","typeString":"contract IERC4626"}},"visibility":"internal"}],"src":"2329:10:79"},"scope":23209,"src":"2286:78:79","stateMutability":"view","virtual":false,"visibility":"public"},{"baseFunctions":[20702],"body":{"id":23137,"nodeType":"Block","src":"2496:69:79","statements":[{"expression":{"arguments":[{"arguments":[{"id":23133,"name":"contract_","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":23123,"src":"2549:9:79","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"expression":{"id":23131,"name":"_vault","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":22979,"src":"2532:6:79","typeDescriptions":{"typeIdentifier":"t_contract$_IERC4626_$7127","typeString":"contract IERC4626"}},"id":23132,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"2539:9:79","memberName":"balanceOf","nodeType":"MemberAccess","referencedDeclaration":8636,"src":"2532:16:79","typeDescriptions":{"typeIdentifier":"t_function_external_view$_t_address_$returns$_t_uint256_$","typeString":"function (address) view external returns (uint256)"}},"id":23134,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"2532:27:79","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"expression":{"id":23129,"name":"_vault","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":22979,"src":"2509:6:79","typeDescriptions":{"typeIdentifier":"t_contract$_IERC4626_$7127","typeString":"contract IERC4626"}},"id":23130,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"2516:15:79","memberName":"convertToAssets","nodeType":"MemberAccess","referencedDeclaration":7018,"src":"2509:22:79","typeDescriptions":{"typeIdentifier":"t_function_external_view$_t_uint256_$returns$_t_uint256_$","typeString":"function (uint256) view external returns (uint256)"}},"id":23135,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"2509:51:79","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"functionReturnParameters":23128,"id":23136,"nodeType":"Return","src":"2502:58:79"}]},"documentation":{"id":23121,"nodeType":"StructuredDocumentation","src":"2368:31:79","text":"@inheritdoc IInvestStrategy"},"functionSelector":"f3e0ffbf","id":23138,"implemented":true,"kind":"function","modifiers":[],"name":"totalAssets","nameLocation":"2411:11:79","nodeType":"FunctionDefinition","overrides":{"id":23125,"nodeType":"OverrideSpecifier","overrides":[],"src":"2462:8:79"},"parameters":{"id":23124,"nodeType":"ParameterList","parameters":[{"constant":false,"id":23123,"mutability":"mutable","name":"contract_","nameLocation":"2431:9:79","nodeType":"VariableDeclaration","scope":23138,"src":"2423:17:79","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":23122,"name":"address","nodeType":"ElementaryTypeName","src":"2423:7:79","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"2422:19:79"},"returnParameters":{"id":23128,"nodeType":"ParameterList","parameters":[{"constant":false,"id":23127,"mutability":"mutable","name":"assets","nameLocation":"2488:6:79","nodeType":"VariableDeclaration","scope":23138,"src":"2480:14:79","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":23126,"name":"uint256","nodeType":"ElementaryTypeName","src":"2480:7:79","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"2479:16:79"},"scope":23209,"src":"2402:163:79","stateMutability":"view","virtual":true,"visibility":"public"},{"baseFunctions":[20676],"body":{"id":23161,"nodeType":"Block","src":"2677:64:79","statements":[{"expression":{"arguments":[{"id":23150,"name":"assets","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":23141,"src":"2699:6:79","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"arguments":[{"id":23153,"name":"this","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-28,"src":"2715:4:79","typeDescriptions":{"typeIdentifier":"t_contract$_ERC4626InvestStrategy_$23209","typeString":"contract ERC4626InvestStrategy"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_contract$_ERC4626InvestStrategy_$23209","typeString":"contract ERC4626InvestStrategy"}],"id":23152,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"2707:7:79","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":23151,"name":"address","nodeType":"ElementaryTypeName","src":"2707:7:79","typeDescriptions":{}}},"id":23154,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"2707:13:79","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"arguments":[{"id":23157,"name":"this","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-28,"src":"2730:4:79","typeDescriptions":{"typeIdentifier":"t_contract$_ERC4626InvestStrategy_$23209","typeString":"contract ERC4626InvestStrategy"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_contract$_ERC4626InvestStrategy_$23209","typeString":"contract ERC4626InvestStrategy"}],"id":23156,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"2722:7:79","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":23155,"name":"address","nodeType":"ElementaryTypeName","src":"2722:7:79","typeDescriptions":{}}},"id":23158,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"2722:13:79","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_address","typeString":"address"}],"expression":{"id":23147,"name":"_vault","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":22979,"src":"2683:6:79","typeDescriptions":{"typeIdentifier":"t_contract$_IERC4626_$7127","typeString":"contract IERC4626"}},"id":23149,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"2690:8:79","memberName":"withdraw","nodeType":"MemberAccess","referencedDeclaration":7098,"src":"2683:15:79","typeDescriptions":{"typeIdentifier":"t_function_external_nonpayable$_t_uint256_$_t_address_$_t_address_$returns$_t_uint256_$","typeString":"function (uint256,address,address) external returns (uint256)"}},"id":23159,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"2683:53:79","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":23160,"nodeType":"ExpressionStatement","src":"2683:53:79"}]},"documentation":{"id":23139,"nodeType":"StructuredDocumentation","src":"2569:31:79","text":"@inheritdoc IInvestStrategy"},"functionSelector":"2e1a7d4d","id":23162,"implemented":true,"kind":"function","modifiers":[{"id":23145,"kind":"modifierInvocation","modifierName":{"id":23144,"name":"onlyDelegCall","nameLocations":["2663:13:79"],"nodeType":"IdentifierPath","referencedDeclaration":23002,"src":"2663:13:79"},"nodeType":"ModifierInvocation","src":"2663:13:79"}],"name":"withdraw","nameLocation":"2612:8:79","nodeType":"FunctionDefinition","overrides":{"id":23143,"nodeType":"OverrideSpecifier","overrides":[],"src":"2654:8:79"},"parameters":{"id":23142,"nodeType":"ParameterList","parameters":[{"constant":false,"id":23141,"mutability":"mutable","name":"assets","nameLocation":"2629:6:79","nodeType":"VariableDeclaration","scope":23162,"src":"2621:14:79","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":23140,"name":"uint256","nodeType":"ElementaryTypeName","src":"2621:7:79","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"2620:16:79"},"returnParameters":{"id":23146,"nodeType":"ParameterList","parameters":[],"src":"2677:0:79"},"scope":23209,"src":"2603:138:79","stateMutability":"nonpayable","virtual":true,"visibility":"external"},{"baseFunctions":[20670],"body":{"id":23191,"nodeType":"Block","src":"2852:93:79","statements":[{"expression":{"arguments":[{"arguments":[{"id":23176,"name":"_vault","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":22979,"src":"2881:6:79","typeDescriptions":{"typeIdentifier":"t_contract$_IERC4626_$7127","typeString":"contract IERC4626"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_contract$_IERC4626_$7127","typeString":"contract IERC4626"}],"id":23175,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"2873:7:79","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":23174,"name":"address","nodeType":"ElementaryTypeName","src":"2873:7:79","typeDescriptions":{}}},"id":23177,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"2873:15:79","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":23178,"name":"assets","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":23165,"src":"2890:6:79","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"expression":{"id":23171,"name":"_asset","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":22982,"src":"2858:6:79","typeDescriptions":{"typeIdentifier":"t_contract$_IERC20_$8679","typeString":"contract IERC20"}},"id":23173,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"2865:7:79","memberName":"approve","nodeType":"MemberAccess","referencedDeclaration":8666,"src":"2858:14:79","typeDescriptions":{"typeIdentifier":"t_function_external_nonpayable$_t_address_$_t_uint256_$returns$_t_bool_$","typeString":"function (address,uint256) external returns (bool)"}},"id":23179,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"2858:39:79","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":23180,"nodeType":"ExpressionStatement","src":"2858:39:79"},{"expression":{"arguments":[{"id":23184,"name":"assets","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":23165,"src":"2918:6:79","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"arguments":[{"id":23187,"name":"this","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-28,"src":"2934:4:79","typeDescriptions":{"typeIdentifier":"t_contract$_ERC4626InvestStrategy_$23209","typeString":"contract ERC4626InvestStrategy"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_contract$_ERC4626InvestStrategy_$23209","typeString":"contract ERC4626InvestStrategy"}],"id":23186,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"2926:7:79","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":23185,"name":"address","nodeType":"ElementaryTypeName","src":"2926:7:79","typeDescriptions":{}}},"id":23188,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"2926:13:79","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_address","typeString":"address"}],"expression":{"id":23181,"name":"_vault","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":22979,"src":"2903:6:79","typeDescriptions":{"typeIdentifier":"t_contract$_IERC4626_$7127","typeString":"contract IERC4626"}},"id":23183,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"2910:7:79","memberName":"deposit","nodeType":"MemberAccess","referencedDeclaration":7044,"src":"2903:14:79","typeDescriptions":{"typeIdentifier":"t_function_external_nonpayable$_t_uint256_$_t_address_$returns$_t_uint256_$","typeString":"function (uint256,address) external returns (uint256)"}},"id":23189,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"2903:37:79","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":23190,"nodeType":"ExpressionStatement","src":"2903:37:79"}]},"documentation":{"id":23163,"nodeType":"StructuredDocumentation","src":"2745:31:79","text":"@inheritdoc IInvestStrategy"},"functionSelector":"b6b55f25","id":23192,"implemented":true,"kind":"function","modifiers":[{"id":23169,"kind":"modifierInvocation","modifierName":{"id":23168,"name":"onlyDelegCall","nameLocations":["2838:13:79"],"nodeType":"IdentifierPath","referencedDeclaration":23002,"src":"2838:13:79"},"nodeType":"ModifierInvocation","src":"2838:13:79"}],"name":"deposit","nameLocation":"2788:7:79","nodeType":"FunctionDefinition","overrides":{"id":23167,"nodeType":"OverrideSpecifier","overrides":[],"src":"2829:8:79"},"parameters":{"id":23166,"nodeType":"ParameterList","parameters":[{"constant":false,"id":23165,"mutability":"mutable","name":"assets","nameLocation":"2804:6:79","nodeType":"VariableDeclaration","scope":23192,"src":"2796:14:79","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":23164,"name":"uint256","nodeType":"ElementaryTypeName","src":"2796:7:79","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"2795:16:79"},"returnParameters":{"id":23170,"nodeType":"ParameterList","parameters":[],"src":"2852:0:79"},"scope":23209,"src":"2779:166:79","stateMutability":"nonpayable","virtual":true,"visibility":"external"},{"baseFunctions":[20686],"body":{"id":23207,"nodeType":"Block","src":"3082:84:79","statements":[{"expression":{"arguments":[],"expression":{"argumentTypes":[],"id":23204,"name":"revert","nodeType":"Identifier","overloadedDeclarations":[-19,-19],"referencedDeclaration":-19,"src":"3153:6:79","typeDescriptions":{"typeIdentifier":"t_function_revert_pure$__$returns$__$","typeString":"function () pure"}},"id":23205,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"3153:8:79","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":23206,"nodeType":"ExpressionStatement","src":"3153:8:79"}]},"documentation":{"id":23193,"nodeType":"StructuredDocumentation","src":"2949:31:79","text":"@inheritdoc IInvestStrategy"},"functionSelector":"0981b1c2","id":23208,"implemented":true,"kind":"function","modifiers":[{"id":23200,"kind":"modifierInvocation","modifierName":{"id":23199,"name":"onlyDelegCall","nameLocations":["3045:13:79"],"nodeType":"IdentifierPath","referencedDeclaration":23002,"src":"3045:13:79"},"nodeType":"ModifierInvocation","src":"3045:13:79"}],"name":"forwardEntryPoint","nameLocation":"2992:17:79","nodeType":"FunctionDefinition","parameters":{"id":23198,"nodeType":"ParameterList","parameters":[{"constant":false,"id":23195,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":23208,"src":"3010:5:79","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"},"typeName":{"id":23194,"name":"uint8","nodeType":"ElementaryTypeName","src":"3010:5:79","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}},"visibility":"internal"},{"constant":false,"id":23197,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":23208,"src":"3017:12:79","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes"},"typeName":{"id":23196,"name":"bytes","nodeType":"ElementaryTypeName","src":"3017:5:79","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"}],"src":"3009:21:79"},"returnParameters":{"id":23203,"nodeType":"ParameterList","parameters":[{"constant":false,"id":23202,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":23208,"src":"3068:12:79","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes"},"typeName":{"id":23201,"name":"bytes","nodeType":"ElementaryTypeName","src":"3068:5:79","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"}],"src":"3067:14:79"},"scope":23209,"src":"2983:183:79","stateMutability":"view","virtual":false,"visibility":"external"}],"scope":23210,"src":"511:2657:79","usedErrors":[22984,22986,22988],"usedEvents":[]}],"src":"39:3130:79"},"id":79},"contracts/strategies/IdleInvestStrategy.sol":{"ast":{"absolutePath":"contracts/strategies/IdleInvestStrategy.sol","exportedSymbols":{"IERC20Metadata":[9411],"IInvestStrategy":[20725],"IdleInvestStrategy":[23407],"InvestStrategyClient":[15693]},"id":23408,"license":"Apache-2.0","nodeType":"SourceUnit","nodes":[{"id":23211,"literals":["solidity","^","0.8",".0"],"nodeType":"PragmaDirective","src":"39:23:80"},{"absolutePath":"@openzeppelin/contracts/interfaces/IERC20Metadata.sol","file":"@openzeppelin/contracts/interfaces/IERC20Metadata.sol","id":23213,"nameLocation":"-1:-1:-1","nodeType":"ImportDirective","scope":23408,"sourceUnit":6958,"src":"64:85:80","symbolAliases":[{"foreign":{"id":23212,"name":"IERC20Metadata","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9411,"src":"72:14:80","typeDescriptions":{}},"nameLocation":"-1:-1:-1"}],"unitAlias":""},{"absolutePath":"contracts/interfaces/IInvestStrategy.sol","file":"../interfaces/IInvestStrategy.sol","id":23215,"nameLocation":"-1:-1:-1","nodeType":"ImportDirective","scope":23408,"sourceUnit":20726,"src":"150:66:80","symbolAliases":[{"foreign":{"id":23214,"name":"IInvestStrategy","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":20725,"src":"158:15:80","typeDescriptions":{}},"nameLocation":"-1:-1:-1"}],"unitAlias":""},{"absolutePath":"contracts/InvestStrategyClient.sol","file":"../InvestStrategyClient.sol","id":23217,"nameLocation":"-1:-1:-1","nodeType":"ImportDirective","scope":23408,"sourceUnit":15694,"src":"217:65:80","symbolAliases":[{"foreign":{"id":23216,"name":"InvestStrategyClient","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":15693,"src":"225:20:80","typeDescriptions":{}},"nameLocation":"-1:-1:-1"}],"unitAlias":""},{"abstract":false,"baseContracts":[{"baseName":{"id":23219,"name":"IInvestStrategy","nameLocations":["514:15:80"],"nodeType":"IdentifierPath","referencedDeclaration":20725,"src":"514:15:80"},"id":23220,"nodeType":"InheritanceSpecifier","src":"514:15:80"}],"canonicalName":"IdleInvestStrategy","contractDependencies":[],"contractKind":"contract","documentation":{"id":23218,"nodeType":"StructuredDocumentation","src":"284:198:80","text":" @title IdleInvestStrategy\n @dev Strategy that keeps the funds idle, in vault's asset(), without generating any yield.\n @custom:security-contact security@ensuro.co\n @author Ensuro"},"fullyImplemented":true,"id":23407,"linearizedBaseContracts":[23407,20725],"name":"IdleInvestStrategy","nameLocation":"492:18:80","nodeType":"ContractDefinition","nodes":[{"constant":false,"id":23226,"mutability":"immutable","name":"__self","nameLocation":"561:6:80","nodeType":"VariableDeclaration","scope":23407,"src":"534:49:80","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":23221,"name":"address","nodeType":"ElementaryTypeName","src":"534:7:80","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"value":{"arguments":[{"id":23224,"name":"this","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-28,"src":"578:4:80","typeDescriptions":{"typeIdentifier":"t_contract$_IdleInvestStrategy_$23407","typeString":"contract IdleInvestStrategy"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_contract$_IdleInvestStrategy_$23407","typeString":"contract IdleInvestStrategy"}],"id":23223,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"570:7:80","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":23222,"name":"address","nodeType":"ElementaryTypeName","src":"570:7:80","typeDescriptions":{}}},"id":23225,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"570:13:80","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"baseFunctions":[20724],"constant":false,"functionSelector":"5b9a4c35","id":23232,"mutability":"immutable","name":"storageSlot","nameLocation":"612:11:80","nodeType":"VariableDeclaration","scope":23407,"src":"587:81:80","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":23227,"name":"bytes32","nodeType":"ElementaryTypeName","src":"587:7:80","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"value":{"arguments":[{"id":23230,"name":"this","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-28,"src":"663:4:80","typeDescriptions":{"typeIdentifier":"t_contract$_IdleInvestStrategy_$23407","typeString":"contract IdleInvestStrategy"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_contract$_IdleInvestStrategy_$23407","typeString":"contract IdleInvestStrategy"}],"expression":{"id":23228,"name":"InvestStrategyClient","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":15693,"src":"626:20:80","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_InvestStrategyClient_$15693_$","typeString":"type(library InvestStrategyClient)"}},"id":23229,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"647:15:80","memberName":"makeStorageSlot","nodeType":"MemberAccess","referencedDeclaration":15638,"src":"626:36:80","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_contract$_IInvestStrategy_$20725_$returns$_t_bytes32_$","typeString":"function (contract IInvestStrategy) pure returns (bytes32)"}},"id":23231,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"626:42:80","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"public"},{"constant":false,"id":23235,"mutability":"immutable","name":"_asset","nameLocation":"707:6:80","nodeType":"VariableDeclaration","scope":23407,"src":"673:40:80","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_contract$_IERC20Metadata_$9411","typeString":"contract IERC20Metadata"},"typeName":{"id":23234,"nodeType":"UserDefinedTypeName","pathNode":{"id":23233,"name":"IERC20Metadata","nameLocations":["673:14:80"],"nodeType":"IdentifierPath","referencedDeclaration":9411,"src":"673:14:80"},"referencedDeclaration":9411,"src":"673:14:80","typeDescriptions":{"typeIdentifier":"t_contract$_IERC20Metadata_$9411","typeString":"contract IERC20Metadata"}},"visibility":"internal"},{"errorSelector":"aafc462c","id":23237,"name":"CanBeCalledOnlyThroughDelegateCall","nameLocation":"724:34:80","nodeType":"ErrorDefinition","parameters":{"id":23236,"nodeType":"ParameterList","parameters":[],"src":"758:2:80"},"src":"718:43:80"},{"errorSelector":"8542eda2","id":23239,"name":"CannotDisconnectWithAssets","nameLocation":"770:26:80","nodeType":"ErrorDefinition","parameters":{"id":23238,"nodeType":"ParameterList","parameters":[],"src":"796:2:80"},"src":"764:35:80"},{"errorSelector":"50701b61","id":23241,"name":"NoExtraDataAllowed","nameLocation":"808:18:80","nodeType":"ErrorDefinition","parameters":{"id":23240,"nodeType":"ParameterList","parameters":[],"src":"826:2:80"},"src":"802:27:80"},{"body":{"id":23254,"nodeType":"Block","src":"858:90:80","statements":[{"condition":{"commonType":{"typeIdentifier":"t_address","typeString":"address"},"id":23248,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"arguments":[{"id":23245,"name":"this","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-28,"src":"876:4:80","typeDescriptions":{"typeIdentifier":"t_contract$_IdleInvestStrategy_$23407","typeString":"contract IdleInvestStrategy"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_contract$_IdleInvestStrategy_$23407","typeString":"contract IdleInvestStrategy"}],"id":23244,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"868:7:80","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":23243,"name":"address","nodeType":"ElementaryTypeName","src":"868:7:80","typeDescriptions":{}}},"id":23246,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"868:13:80","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"id":23247,"name":"__self","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":23226,"src":"885:6:80","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"src":"868:23:80","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":23252,"nodeType":"IfStatement","src":"864:72:80","trueBody":{"errorCall":{"arguments":[],"expression":{"argumentTypes":[],"id":23249,"name":"CanBeCalledOnlyThroughDelegateCall","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":23237,"src":"900:34:80","typeDescriptions":{"typeIdentifier":"t_function_error_pure$__$returns$_t_error_$","typeString":"function () pure returns (error)"}},"id":23250,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"900:36:80","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_error","typeString":"error"}},"id":23251,"nodeType":"RevertStatement","src":"893:43:80"}},{"id":23253,"nodeType":"PlaceholderStatement","src":"942:1:80"}]},"id":23255,"name":"onlyDelegCall","nameLocation":"842:13:80","nodeType":"ModifierDefinition","parameters":{"id":23242,"nodeType":"ParameterList","parameters":[],"src":"855:2:80"},"src":"833:115:80","virtual":false,"visibility":"internal"},{"body":{"id":23266,"nodeType":"Block","src":"1147:26:80","statements":[{"expression":{"id":23264,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":23262,"name":"_asset","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":23235,"src":"1153:6:80","typeDescriptions":{"typeIdentifier":"t_contract$_IERC20Metadata_$9411","typeString":"contract IERC20Metadata"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"id":23263,"name":"asset_","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":23259,"src":"1162:6:80","typeDescriptions":{"typeIdentifier":"t_contract$_IERC20Metadata_$9411","typeString":"contract IERC20Metadata"}},"src":"1153:15:80","typeDescriptions":{"typeIdentifier":"t_contract$_IERC20Metadata_$9411","typeString":"contract IERC20Metadata"}},"id":23265,"nodeType":"ExpressionStatement","src":"1153:15:80"}]},"documentation":{"id":23256,"nodeType":"StructuredDocumentation","src":"952:157:80","text":" @dev Constructor of the strategy\n @param asset_ The address of the underlying token used for accounting, depositing, and withdrawing."},"id":23267,"implemented":true,"kind":"constructor","modifiers":[],"name":"","nameLocation":"-1:-1:-1","nodeType":"FunctionDefinition","parameters":{"id":23260,"nodeType":"ParameterList","parameters":[{"constant":false,"id":23259,"mutability":"mutable","name":"asset_","nameLocation":"1139:6:80","nodeType":"VariableDeclaration","scope":23267,"src":"1124:21:80","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_contract$_IERC20Metadata_$9411","typeString":"contract IERC20Metadata"},"typeName":{"id":23258,"nodeType":"UserDefinedTypeName","pathNode":{"id":23257,"name":"IERC20Metadata","nameLocations":["1124:14:80"],"nodeType":"IdentifierPath","referencedDeclaration":9411,"src":"1124:14:80"},"referencedDeclaration":9411,"src":"1124:14:80","typeDescriptions":{"typeIdentifier":"t_contract$_IERC20Metadata_$9411","typeString":"contract IERC20Metadata"}},"visibility":"internal"}],"src":"1123:23:80"},"returnParameters":{"id":23261,"nodeType":"ParameterList","parameters":[],"src":"1147:0:80"},"scope":23407,"src":"1112:61:80","stateMutability":"nonpayable","virtual":false,"visibility":"public"},{"baseFunctions":[20658],"body":{"id":23284,"nodeType":"Block","src":"1291:64:80","statements":[{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":23279,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"expression":{"id":23276,"name":"initData","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":23270,"src":"1301:8:80","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}},"id":23277,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"1310:6:80","memberName":"length","nodeType":"MemberAccess","src":"1301:15:80","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"!=","rightExpression":{"hexValue":"30","id":23278,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"1320:1:80","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"1301:20:80","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":23283,"nodeType":"IfStatement","src":"1297:53:80","trueBody":{"errorCall":{"arguments":[],"expression":{"argumentTypes":[],"id":23280,"name":"NoExtraDataAllowed","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":23241,"src":"1330:18:80","typeDescriptions":{"typeIdentifier":"t_function_error_pure$__$returns$_t_error_$","typeString":"function () pure returns (error)"}},"id":23281,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"1330:20:80","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_error","typeString":"error"}},"id":23282,"nodeType":"RevertStatement","src":"1323:27:80"}}]},"documentation":{"id":23268,"nodeType":"StructuredDocumentation","src":"1177:31:80","text":"@inheritdoc IInvestStrategy"},"functionSelector":"9cd47128","id":23285,"implemented":true,"kind":"function","modifiers":[{"id":23274,"kind":"modifierInvocation","modifierName":{"id":23273,"name":"onlyDelegCall","nameLocations":["1277:13:80"],"nodeType":"IdentifierPath","referencedDeclaration":23255,"src":"1277:13:80"},"nodeType":"ModifierInvocation","src":"1277:13:80"}],"name":"connect","nameLocation":"1220:7:80","nodeType":"FunctionDefinition","overrides":{"id":23272,"nodeType":"OverrideSpecifier","overrides":[],"src":"1268:8:80"},"parameters":{"id":23271,"nodeType":"ParameterList","parameters":[{"constant":false,"id":23270,"mutability":"mutable","name":"initData","nameLocation":"1241:8:80","nodeType":"VariableDeclaration","scope":23285,"src":"1228:21:80","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes"},"typeName":{"id":23269,"name":"bytes","nodeType":"ElementaryTypeName","src":"1228:5:80","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"}],"src":"1227:23:80"},"returnParameters":{"id":23275,"nodeType":"ParameterList","parameters":[],"src":"1291:0:80"},"scope":23407,"src":"1211:144:80","stateMutability":"nonpayable","virtual":true,"visibility":"external"},{"baseFunctions":[20664],"body":{"id":23309,"nodeType":"Block","src":"1465:93:80","statements":[{"condition":{"commonType":{"typeIdentifier":"t_bool","typeString":"bool"},"id":23304,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":23295,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"UnaryOperation","operator":"!","prefix":true,"src":"1475:6:80","subExpression":{"id":23294,"name":"force","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":23288,"src":"1476:5:80","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"nodeType":"BinaryOperation","operator":"&&","rightExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":23303,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"arguments":[{"arguments":[{"id":23299,"name":"this","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-28,"src":"1505:4:80","typeDescriptions":{"typeIdentifier":"t_contract$_IdleInvestStrategy_$23407","typeString":"contract IdleInvestStrategy"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_contract$_IdleInvestStrategy_$23407","typeString":"contract IdleInvestStrategy"}],"id":23298,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"1497:7:80","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":23297,"name":"address","nodeType":"ElementaryTypeName","src":"1497:7:80","typeDescriptions":{}}},"id":23300,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"1497:13:80","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"id":23296,"name":"totalAssets","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":23370,"src":"1485:11:80","typeDescriptions":{"typeIdentifier":"t_function_internal_view$_t_address_$returns$_t_uint256_$","typeString":"function (address) view returns (uint256)"}},"id":23301,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"1485:26:80","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"!=","rightExpression":{"hexValue":"30","id":23302,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"1515:1:80","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"1485:31:80","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"src":"1475:41:80","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":23308,"nodeType":"IfStatement","src":"1471:82:80","trueBody":{"errorCall":{"arguments":[],"expression":{"argumentTypes":[],"id":23305,"name":"CannotDisconnectWithAssets","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":23239,"src":"1525:26:80","typeDescriptions":{"typeIdentifier":"t_function_error_pure$__$returns$_t_error_$","typeString":"function () pure returns (error)"}},"id":23306,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"1525:28:80","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_error","typeString":"error"}},"id":23307,"nodeType":"RevertStatement","src":"1518:35:80"}}]},"documentation":{"id":23286,"nodeType":"StructuredDocumentation","src":"1359:31:80","text":"@inheritdoc IInvestStrategy"},"functionSelector":"5a117456","id":23310,"implemented":true,"kind":"function","modifiers":[{"id":23292,"kind":"modifierInvocation","modifierName":{"id":23291,"name":"onlyDelegCall","nameLocations":["1451:13:80"],"nodeType":"IdentifierPath","referencedDeclaration":23255,"src":"1451:13:80"},"nodeType":"ModifierInvocation","src":"1451:13:80"}],"name":"disconnect","nameLocation":"1402:10:80","nodeType":"FunctionDefinition","overrides":{"id":23290,"nodeType":"OverrideSpecifier","overrides":[],"src":"1442:8:80"},"parameters":{"id":23289,"nodeType":"ParameterList","parameters":[{"constant":false,"id":23288,"mutability":"mutable","name":"force","nameLocation":"1418:5:80","nodeType":"VariableDeclaration","scope":23310,"src":"1413:10:80","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":23287,"name":"bool","nodeType":"ElementaryTypeName","src":"1413:4:80","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"}],"src":"1412:12:80"},"returnParameters":{"id":23293,"nodeType":"ParameterList","parameters":[],"src":"1465:0:80"},"scope":23407,"src":"1393:165:80","stateMutability":"nonpayable","virtual":true,"visibility":"external"},{"baseFunctions":[20718],"body":{"id":23323,"nodeType":"Block","src":"1683:40:80","statements":[{"expression":{"arguments":[{"id":23320,"name":"contract_","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":23313,"src":"1708:9:80","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"id":23319,"name":"totalAssets","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":23370,"src":"1696:11:80","typeDescriptions":{"typeIdentifier":"t_function_internal_view$_t_address_$returns$_t_uint256_$","typeString":"function (address) view returns (uint256)"}},"id":23321,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"1696:22:80","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"functionReturnParameters":23318,"id":23322,"nodeType":"Return","src":"1689:29:80"}]},"documentation":{"id":23311,"nodeType":"StructuredDocumentation","src":"1562:31:80","text":"@inheritdoc IInvestStrategy"},"functionSelector":"ce96cb77","id":23324,"implemented":true,"kind":"function","modifiers":[],"name":"maxWithdraw","nameLocation":"1605:11:80","nodeType":"FunctionDefinition","overrides":{"id":23315,"nodeType":"OverrideSpecifier","overrides":[],"src":"1656:8:80"},"parameters":{"id":23314,"nodeType":"ParameterList","parameters":[{"constant":false,"id":23313,"mutability":"mutable","name":"contract_","nameLocation":"1625:9:80","nodeType":"VariableDeclaration","scope":23324,"src":"1617:17:80","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":23312,"name":"address","nodeType":"ElementaryTypeName","src":"1617:7:80","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"1616:19:80"},"returnParameters":{"id":23318,"nodeType":"ParameterList","parameters":[{"constant":false,"id":23317,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":23324,"src":"1674:7:80","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":23316,"name":"uint256","nodeType":"ElementaryTypeName","src":"1674:7:80","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"1673:9:80"},"scope":23407,"src":"1596:127:80","stateMutability":"view","virtual":true,"visibility":"public"},{"baseFunctions":[20710],"body":{"id":23339,"nodeType":"Block","src":"1851:35:80","statements":[{"expression":{"expression":{"arguments":[{"id":23335,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"1869:7:80","typeDescriptions":{"typeIdentifier":"t_type$_t_uint256_$","typeString":"type(uint256)"},"typeName":{"id":23334,"name":"uint256","nodeType":"ElementaryTypeName","src":"1869:7:80","typeDescriptions":{}}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_type$_t_uint256_$","typeString":"type(uint256)"}],"id":23333,"name":"type","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-27,"src":"1864:4:80","typeDescriptions":{"typeIdentifier":"t_function_metatype_pure$__$returns$__$","typeString":"function () pure"}},"id":23336,"isConstant":false,"isLValue":false,"isPure":true,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"1864:13:80","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_magic_meta_type_t_uint256","typeString":"type(uint256)"}},"id":23337,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberLocation":"1878:3:80","memberName":"max","nodeType":"MemberAccess","src":"1864:17:80","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"functionReturnParameters":23332,"id":23338,"nodeType":"Return","src":"1857:24:80"}]},"documentation":{"id":23325,"nodeType":"StructuredDocumentation","src":"1727:31:80","text":"@inheritdoc IInvestStrategy"},"functionSelector":"402d267d","id":23340,"implemented":true,"kind":"function","modifiers":[],"name":"maxDeposit","nameLocation":"1770:10:80","nodeType":"FunctionDefinition","overrides":{"id":23329,"nodeType":"OverrideSpecifier","overrides":[],"src":"1824:8:80"},"parameters":{"id":23328,"nodeType":"ParameterList","parameters":[{"constant":false,"id":23327,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":23340,"src":"1781:7:80","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":23326,"name":"address","nodeType":"ElementaryTypeName","src":"1781:7:80","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"1780:23:80"},"returnParameters":{"id":23332,"nodeType":"ParameterList","parameters":[{"constant":false,"id":23331,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":23340,"src":"1842:7:80","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":23330,"name":"uint256","nodeType":"ElementaryTypeName","src":"1842:7:80","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"1841:9:80"},"scope":23407,"src":"1761:125:80","stateMutability":"view","virtual":true,"visibility":"public"},{"baseFunctions":[20694],"body":{"id":23354,"nodeType":"Block","src":"1995:33:80","statements":[{"expression":{"arguments":[{"id":23351,"name":"_asset","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":23235,"src":"2016:6:80","typeDescriptions":{"typeIdentifier":"t_contract$_IERC20Metadata_$9411","typeString":"contract IERC20Metadata"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_contract$_IERC20Metadata_$9411","typeString":"contract IERC20Metadata"}],"id":23350,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"2008:7:80","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":23349,"name":"address","nodeType":"ElementaryTypeName","src":"2008:7:80","typeDescriptions":{}}},"id":23352,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"2008:15:80","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"functionReturnParameters":23348,"id":23353,"nodeType":"Return","src":"2001:22:80"}]},"documentation":{"id":23341,"nodeType":"StructuredDocumentation","src":"1890:31:80","text":"@inheritdoc IInvestStrategy"},"functionSelector":"9c4667a2","id":23355,"implemented":true,"kind":"function","modifiers":[],"name":"asset","nameLocation":"1933:5:80","nodeType":"FunctionDefinition","overrides":{"id":23345,"nodeType":"OverrideSpecifier","overrides":[],"src":"1968:8:80"},"parameters":{"id":23344,"nodeType":"ParameterList","parameters":[{"constant":false,"id":23343,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":23355,"src":"1939:7:80","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":23342,"name":"address","nodeType":"ElementaryTypeName","src":"1939:7:80","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"1938:9:80"},"returnParameters":{"id":23348,"nodeType":"ParameterList","parameters":[{"constant":false,"id":23347,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":23355,"src":"1986:7:80","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":23346,"name":"address","nodeType":"ElementaryTypeName","src":"1986:7:80","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"1985:9:80"},"scope":23407,"src":"1924:104:80","stateMutability":"view","virtual":true,"visibility":"public"},{"baseFunctions":[20702],"body":{"id":23369,"nodeType":"Block","src":"2160:45:80","statements":[{"expression":{"arguments":[{"id":23366,"name":"contract_","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":23358,"src":"2190:9:80","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"expression":{"id":23364,"name":"_asset","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":23235,"src":"2173:6:80","typeDescriptions":{"typeIdentifier":"t_contract$_IERC20Metadata_$9411","typeString":"contract IERC20Metadata"}},"id":23365,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"2180:9:80","memberName":"balanceOf","nodeType":"MemberAccess","referencedDeclaration":8636,"src":"2173:16:80","typeDescriptions":{"typeIdentifier":"t_function_external_view$_t_address_$returns$_t_uint256_$","typeString":"function (address) view external returns (uint256)"}},"id":23367,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"2173:27:80","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"functionReturnParameters":23363,"id":23368,"nodeType":"Return","src":"2166:34:80"}]},"documentation":{"id":23356,"nodeType":"StructuredDocumentation","src":"2032:31:80","text":"@inheritdoc IInvestStrategy"},"functionSelector":"f3e0ffbf","id":23370,"implemented":true,"kind":"function","modifiers":[],"name":"totalAssets","nameLocation":"2075:11:80","nodeType":"FunctionDefinition","overrides":{"id":23360,"nodeType":"OverrideSpecifier","overrides":[],"src":"2126:8:80"},"parameters":{"id":23359,"nodeType":"ParameterList","parameters":[{"constant":false,"id":23358,"mutability":"mutable","name":"contract_","nameLocation":"2095:9:80","nodeType":"VariableDeclaration","scope":23370,"src":"2087:17:80","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":23357,"name":"address","nodeType":"ElementaryTypeName","src":"2087:7:80","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"2086:19:80"},"returnParameters":{"id":23363,"nodeType":"ParameterList","parameters":[{"constant":false,"id":23362,"mutability":"mutable","name":"assets","nameLocation":"2152:6:80","nodeType":"VariableDeclaration","scope":23370,"src":"2144:14:80","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":23361,"name":"uint256","nodeType":"ElementaryTypeName","src":"2144:7:80","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"2143:16:80"},"scope":23407,"src":"2066:139:80","stateMutability":"view","virtual":true,"visibility":"public"},{"baseFunctions":[20676],"body":{"id":23379,"nodeType":"Block","src":"2362:2:80","statements":[]},"documentation":{"id":23371,"nodeType":"StructuredDocumentation","src":"2209:31:80","text":"@inheritdoc IInvestStrategy"},"functionSelector":"2e1a7d4d","id":23380,"implemented":true,"kind":"function","modifiers":[{"id":23377,"kind":"modifierInvocation","modifierName":{"id":23376,"name":"onlyDelegCall","nameLocations":["2348:13:80"],"nodeType":"IdentifierPath","referencedDeclaration":23255,"src":"2348:13:80"},"nodeType":"ModifierInvocation","src":"2348:13:80"}],"name":"withdraw","nameLocation":"2299:8:80","nodeType":"FunctionDefinition","overrides":{"id":23375,"nodeType":"OverrideSpecifier","overrides":[],"src":"2339:8:80"},"parameters":{"id":23374,"nodeType":"ParameterList","parameters":[{"constant":false,"id":23373,"mutability":"mutable","name":"assets","nameLocation":"2316:6:80","nodeType":"VariableDeclaration","scope":23380,"src":"2308:14:80","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":23372,"name":"uint256","nodeType":"ElementaryTypeName","src":"2308:7:80","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"2307:16:80"},"returnParameters":{"id":23378,"nodeType":"ParameterList","parameters":[],"src":"2362:0:80"},"scope":23407,"src":"2290:74:80","stateMutability":"nonpayable","virtual":true,"visibility":"public"},{"baseFunctions":[20670],"body":{"id":23389,"nodeType":"Block","src":"2520:2:80","statements":[]},"documentation":{"id":23381,"nodeType":"StructuredDocumentation","src":"2368:31:80","text":"@inheritdoc IInvestStrategy"},"functionSelector":"b6b55f25","id":23390,"implemented":true,"kind":"function","modifiers":[{"id":23387,"kind":"modifierInvocation","modifierName":{"id":23386,"name":"onlyDelegCall","nameLocations":["2506:13:80"],"nodeType":"IdentifierPath","referencedDeclaration":23255,"src":"2506:13:80"},"nodeType":"ModifierInvocation","src":"2506:13:80"}],"name":"deposit","nameLocation":"2458:7:80","nodeType":"FunctionDefinition","overrides":{"id":23385,"nodeType":"OverrideSpecifier","overrides":[],"src":"2497:8:80"},"parameters":{"id":23384,"nodeType":"ParameterList","parameters":[{"constant":false,"id":23383,"mutability":"mutable","name":"assets","nameLocation":"2474:6:80","nodeType":"VariableDeclaration","scope":23390,"src":"2466:14:80","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":23382,"name":"uint256","nodeType":"ElementaryTypeName","src":"2466:7:80","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"2465:16:80"},"returnParameters":{"id":23388,"nodeType":"ParameterList","parameters":[],"src":"2520:0:80"},"scope":23407,"src":"2449:73:80","stateMutability":"nonpayable","virtual":true,"visibility":"public"},{"baseFunctions":[20686],"body":{"id":23405,"nodeType":"Block","src":"2659:84:80","statements":[{"expression":{"arguments":[],"expression":{"argumentTypes":[],"id":23402,"name":"revert","nodeType":"Identifier","overloadedDeclarations":[-19,-19],"referencedDeclaration":-19,"src":"2730:6:80","typeDescriptions":{"typeIdentifier":"t_function_revert_pure$__$returns$__$","typeString":"function () pure"}},"id":23403,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"2730:8:80","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":23404,"nodeType":"ExpressionStatement","src":"2730:8:80"}]},"documentation":{"id":23391,"nodeType":"StructuredDocumentation","src":"2526:31:80","text":"@inheritdoc IInvestStrategy"},"functionSelector":"0981b1c2","id":23406,"implemented":true,"kind":"function","modifiers":[{"id":23398,"kind":"modifierInvocation","modifierName":{"id":23397,"name":"onlyDelegCall","nameLocations":["2622:13:80"],"nodeType":"IdentifierPath","referencedDeclaration":23255,"src":"2622:13:80"},"nodeType":"ModifierInvocation","src":"2622:13:80"}],"name":"forwardEntryPoint","nameLocation":"2569:17:80","nodeType":"FunctionDefinition","parameters":{"id":23396,"nodeType":"ParameterList","parameters":[{"constant":false,"id":23393,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":23406,"src":"2587:5:80","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"},"typeName":{"id":23392,"name":"uint8","nodeType":"ElementaryTypeName","src":"2587:5:80","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}},"visibility":"internal"},{"constant":false,"id":23395,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":23406,"src":"2594:12:80","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes"},"typeName":{"id":23394,"name":"bytes","nodeType":"ElementaryTypeName","src":"2594:5:80","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"}],"src":"2586:21:80"},"returnParameters":{"id":23401,"nodeType":"ParameterList","parameters":[{"constant":false,"id":23400,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":23406,"src":"2645:12:80","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes"},"typeName":{"id":23399,"name":"bytes","nodeType":"ElementaryTypeName","src":"2645:5:80","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"}],"src":"2644:14:80"},"scope":23407,"src":"2560:183:80","stateMutability":"view","virtual":false,"visibility":"external"}],"scope":23408,"src":"483:2262:80","usedErrors":[23237,23239,23241],"usedEvents":[]}],"src":"39:2707:80"},"id":80},"contracts/strategies/MerklRewardsInvestStrategy.sol":{"ast":{"absolutePath":"contracts/strategies/MerklRewardsInvestStrategy.sol","exportedSymbols":{"Address":[10256],"AggregatorV3Interface":[20542],"ChainlinkSwapAssetInvestStrategy":[22360],"ERC1967Utils":[7606],"IERC20Metadata":[9411],"IInvestStrategy":[20725],"IMerklDistributor":[23442],"MSVBase":[17366],"MerklRewardsInvestStrategy":[23766],"SwapLibrary":[1879]},"id":23767,"license":"Apache-2.0","nodeType":"SourceUnit","nodes":[{"id":23409,"literals":["solidity","^","0.8",".0"],"nodeType":"PragmaDirective","src":"39:23:81"},{"absolutePath":"@openzeppelin/contracts/interfaces/IERC20Metadata.sol","file":"@openzeppelin/contracts/interfaces/IERC20Metadata.sol","id":23411,"nameLocation":"-1:-1:-1","nodeType":"ImportDirective","scope":23767,"sourceUnit":6958,"src":"64:85:81","symbolAliases":[{"foreign":{"id":23410,"name":"IERC20Metadata","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9411,"src":"72:14:81","typeDescriptions":{}},"nameLocation":"-1:-1:-1"}],"unitAlias":""},{"absolutePath":"@openzeppelin/contracts/proxy/ERC1967/ERC1967Utils.sol","file":"@openzeppelin/contracts/proxy/ERC1967/ERC1967Utils.sol","id":23413,"nameLocation":"-1:-1:-1","nodeType":"ImportDirective","scope":23767,"sourceUnit":7607,"src":"150:84:81","symbolAliases":[{"foreign":{"id":23412,"name":"ERC1967Utils","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7606,"src":"158:12:81","typeDescriptions":{}},"nameLocation":"-1:-1:-1"}],"unitAlias":""},{"absolutePath":"@openzeppelin/contracts/utils/Address.sol","file":"@openzeppelin/contracts/utils/Address.sol","id":23415,"nameLocation":"-1:-1:-1","nodeType":"ImportDirective","scope":23767,"sourceUnit":10257,"src":"235:66:81","symbolAliases":[{"foreign":{"id":23414,"name":"Address","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10256,"src":"243:7:81","typeDescriptions":{}},"nameLocation":"-1:-1:-1"}],"unitAlias":""},{"absolutePath":"@ensuro/swaplibrary/contracts/SwapLibrary.sol","file":"@ensuro/swaplibrary/contracts/SwapLibrary.sol","id":23417,"nameLocation":"-1:-1:-1","nodeType":"ImportDirective","scope":23767,"sourceUnit":1880,"src":"302:74:81","symbolAliases":[{"foreign":{"id":23416,"name":"SwapLibrary","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1879,"src":"310:11:81","typeDescriptions":{}},"nameLocation":"-1:-1:-1"}],"unitAlias":""},{"absolutePath":"contracts/interfaces/IInvestStrategy.sol","file":"../interfaces/IInvestStrategy.sol","id":23419,"nameLocation":"-1:-1:-1","nodeType":"ImportDirective","scope":23767,"sourceUnit":20726,"src":"377:66:81","symbolAliases":[{"foreign":{"id":23418,"name":"IInvestStrategy","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":20725,"src":"385:15:81","typeDescriptions":{}},"nameLocation":"-1:-1:-1"}],"unitAlias":""},{"absolutePath":"contracts/strategies/ChainlinkSwapAssetInvestStrategy.sol","file":"./ChainlinkSwapAssetInvestStrategy.sol","id":23421,"nameLocation":"-1:-1:-1","nodeType":"ImportDirective","scope":23767,"sourceUnit":22361,"src":"444:88:81","symbolAliases":[{"foreign":{"id":23420,"name":"ChainlinkSwapAssetInvestStrategy","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":22360,"src":"452:32:81","typeDescriptions":{}},"nameLocation":"-1:-1:-1"}],"unitAlias":""},{"absolutePath":"contracts/dependencies/chainlink/AggregatorV3Interface.sol","file":"../dependencies/chainlink/AggregatorV3Interface.sol","id":23423,"nameLocation":"-1:-1:-1","nodeType":"ImportDirective","scope":23767,"sourceUnit":20543,"src":"533:90:81","symbolAliases":[{"foreign":{"id":23422,"name":"AggregatorV3Interface","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":20542,"src":"541:21:81","typeDescriptions":{}},"nameLocation":"-1:-1:-1"}],"unitAlias":""},{"absolutePath":"contracts/MSVBase.sol","file":"../MSVBase.sol","id":23425,"nameLocation":"-1:-1:-1","nodeType":"ImportDirective","scope":23767,"sourceUnit":17367,"src":"624:39:81","symbolAliases":[{"foreign":{"id":23424,"name":"MSVBase","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":17366,"src":"632:7:81","typeDescriptions":{}},"nameLocation":"-1:-1:-1"}],"unitAlias":""},{"abstract":false,"baseContracts":[],"canonicalName":"IMerklDistributor","contractDependencies":[],"contractKind":"interface","fullyImplemented":false,"id":23442,"linearizedBaseContracts":[23442],"name":"IMerklDistributor","nameLocation":"675:17:81","nodeType":"ContractDefinition","nodes":[{"functionSelector":"71ee95c0","id":23441,"implemented":false,"kind":"function","modifiers":[],"name":"claim","nameLocation":"706:5:81","nodeType":"FunctionDefinition","parameters":{"id":23439,"nodeType":"ParameterList","parameters":[{"constant":false,"id":23428,"mutability":"mutable","name":"users","nameLocation":"736:5:81","nodeType":"VariableDeclaration","scope":23441,"src":"717:24:81","stateVariable":false,"storageLocation":"calldata","typeDescriptions":{"typeIdentifier":"t_array$_t_address_$dyn_calldata_ptr","typeString":"address[]"},"typeName":{"baseType":{"id":23426,"name":"address","nodeType":"ElementaryTypeName","src":"717:7:81","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"id":23427,"nodeType":"ArrayTypeName","src":"717:9:81","typeDescriptions":{"typeIdentifier":"t_array$_t_address_$dyn_storage_ptr","typeString":"address[]"}},"visibility":"internal"},{"constant":false,"id":23431,"mutability":"mutable","name":"tokens","nameLocation":"766:6:81","nodeType":"VariableDeclaration","scope":23441,"src":"747:25:81","stateVariable":false,"storageLocation":"calldata","typeDescriptions":{"typeIdentifier":"t_array$_t_address_$dyn_calldata_ptr","typeString":"address[]"},"typeName":{"baseType":{"id":23429,"name":"address","nodeType":"ElementaryTypeName","src":"747:7:81","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"id":23430,"nodeType":"ArrayTypeName","src":"747:9:81","typeDescriptions":{"typeIdentifier":"t_array$_t_address_$dyn_storage_ptr","typeString":"address[]"}},"visibility":"internal"},{"constant":false,"id":23434,"mutability":"mutable","name":"amounts","nameLocation":"797:7:81","nodeType":"VariableDeclaration","scope":23441,"src":"778:26:81","stateVariable":false,"storageLocation":"calldata","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_calldata_ptr","typeString":"uint256[]"},"typeName":{"baseType":{"id":23432,"name":"uint256","nodeType":"ElementaryTypeName","src":"778:7:81","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":23433,"nodeType":"ArrayTypeName","src":"778:9:81","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_storage_ptr","typeString":"uint256[]"}},"visibility":"internal"},{"constant":false,"id":23438,"mutability":"mutable","name":"proofs","nameLocation":"831:6:81","nodeType":"VariableDeclaration","scope":23441,"src":"810:27:81","stateVariable":false,"storageLocation":"calldata","typeDescriptions":{"typeIdentifier":"t_array$_t_array$_t_bytes32_$dyn_calldata_ptr_$dyn_calldata_ptr","typeString":"bytes32[][]"},"typeName":{"baseType":{"baseType":{"id":23435,"name":"bytes32","nodeType":"ElementaryTypeName","src":"810:7:81","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"id":23436,"nodeType":"ArrayTypeName","src":"810:9:81","typeDescriptions":{"typeIdentifier":"t_array$_t_bytes32_$dyn_storage_ptr","typeString":"bytes32[]"}},"id":23437,"nodeType":"ArrayTypeName","src":"810:11:81","typeDescriptions":{"typeIdentifier":"t_array$_t_array$_t_bytes32_$dyn_storage_$dyn_storage_ptr","typeString":"bytes32[][]"}},"visibility":"internal"}],"src":"711:130:81"},"returnParameters":{"id":23440,"nodeType":"ParameterList","parameters":[],"src":"850:0:81"},"scope":23442,"src":"697:154:81","stateMutability":"nonpayable","virtual":false,"visibility":"external"}],"scope":23767,"src":"665:188:81","usedErrors":[],"usedEvents":[]},{"abstract":false,"baseContracts":[{"baseName":{"id":23444,"name":"ChainlinkSwapAssetInvestStrategy","nameLocations":["1200:32:81"],"nodeType":"IdentifierPath","referencedDeclaration":22360,"src":"1200:32:81"},"id":23445,"nodeType":"InheritanceSpecifier","src":"1200:32:81"}],"canonicalName":"MerklRewardsInvestStrategy","contractDependencies":[],"contractKind":"contract","documentation":{"id":23443,"nodeType":"StructuredDocumentation","src":"855:305:81","text":" @title MerklRewardsInvestStrategy\n @dev Strategy that collects the Merkl Rewards and accounts them. Also supports swapping them in reinjecting\n      them into the vault.\n      Uses Chainlink oracles to price the asset\n @custom:security-contact security@ensuro.co\n @author Ensuro"},"fullyImplemented":true,"id":23766,"linearizedBaseContracts":[23766,22360,24509,20725],"name":"MerklRewardsInvestStrategy","nameLocation":"1170:26:81","nodeType":"ContractDefinition","nodes":[{"global":false,"id":23448,"libraryName":{"id":23446,"name":"Address","nameLocations":["1243:7:81"],"nodeType":"IdentifierPath","referencedDeclaration":10256,"src":"1243:7:81"},"nodeType":"UsingForDirective","src":"1237:26:81","typeName":{"id":23447,"name":"address","nodeType":"ElementaryTypeName","src":"1255:7:81","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}},{"global":false,"id":23452,"libraryName":{"id":23449,"name":"SwapLibrary","nameLocations":["1272:11:81"],"nodeType":"IdentifierPath","referencedDeclaration":1879,"src":"1272:11:81"},"nodeType":"UsingForDirective","src":"1266:45:81","typeName":{"id":23451,"nodeType":"UserDefinedTypeName","pathNode":{"id":23450,"name":"SwapLibrary.SwapConfig","nameLocations":["1288:11:81","1300:10:81"],"nodeType":"IdentifierPath","referencedDeclaration":1113,"src":"1288:22:81"},"referencedDeclaration":1113,"src":"1288:22:81","typeDescriptions":{"typeIdentifier":"t_struct$_SwapConfig_$1113_storage_ptr","typeString":"struct SwapLibrary.SwapConfig"}}},{"constant":false,"functionSelector":"bfe10928","id":23455,"mutability":"immutable","name":"distributor","nameLocation":"1350:11:81","nodeType":"VariableDeclaration","scope":23766,"src":"1315:46:81","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_contract$_IMerklDistributor_$23442","typeString":"contract IMerklDistributor"},"typeName":{"id":23454,"nodeType":"UserDefinedTypeName","pathNode":{"id":23453,"name":"IMerklDistributor","nameLocations":["1315:17:81"],"nodeType":"IdentifierPath","referencedDeclaration":23442,"src":"1315:17:81"},"referencedDeclaration":23442,"src":"1315:17:81","typeDescriptions":{"typeIdentifier":"t_contract$_IMerklDistributor_$23442","typeString":"contract IMerklDistributor"}},"visibility":"public"},{"canonicalName":"MerklRewardsInvestStrategy.MerklForwardMethods","id":23460,"members":[{"id":23456,"name":"setSwapConfig","nameLocation":"1397:13:81","nodeType":"EnumValue","src":"1397:13:81"},{"id":23457,"name":"claimRewards","nameLocation":"1416:12:81","nodeType":"EnumValue","src":"1416:12:81"},{"id":23458,"name":"claimAndSwapRewards","nameLocation":"1434:19:81","nodeType":"EnumValue","src":"1434:19:81"},{"id":23459,"name":"swapRewards","nameLocation":"1459:11:81","nodeType":"EnumValue","src":"1459:11:81"}],"name":"MerklForwardMethods","nameLocation":"1371:19:81","nodeType":"EnumDefinition","src":"1366:108:81"},{"anonymous":false,"eventSelector":"fc30cddea38e2bf4d6ea7d3f9ed3b6ad7f176419f4963bd81318067a4aee73fe","id":23466,"name":"RewardsClaimed","nameLocation":"1484:14:81","nodeType":"EventDefinition","parameters":{"id":23465,"nodeType":"ParameterList","parameters":[{"constant":false,"id":23462,"indexed":true,"mutability":"mutable","name":"token","nameLocation":"1515:5:81","nodeType":"VariableDeclaration","scope":23466,"src":"1499:21:81","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":23461,"name":"address","nodeType":"ElementaryTypeName","src":"1499:7:81","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":23464,"indexed":false,"mutability":"mutable","name":"amount","nameLocation":"1530:6:81","nodeType":"VariableDeclaration","scope":23466,"src":"1522:14:81","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":23463,"name":"uint256","nodeType":"ElementaryTypeName","src":"1522:7:81","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"1498:39:81"},"src":"1478:60:81"},{"anonymous":false,"eventSelector":"1704c39241bc5ffa667c69806b5ba3acd0d4637515695bab7a812e01e5ee27eb","id":23474,"name":"RewardsSwapped","nameLocation":"1547:14:81","nodeType":"EventDefinition","parameters":{"id":23473,"nodeType":"ParameterList","parameters":[{"constant":false,"id":23468,"indexed":true,"mutability":"mutable","name":"token","nameLocation":"1578:5:81","nodeType":"VariableDeclaration","scope":23474,"src":"1562:21:81","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":23467,"name":"address","nodeType":"ElementaryTypeName","src":"1562:7:81","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":23470,"indexed":false,"mutability":"mutable","name":"amountIn","nameLocation":"1593:8:81","nodeType":"VariableDeclaration","scope":23474,"src":"1585:16:81","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":23469,"name":"uint256","nodeType":"ElementaryTypeName","src":"1585:7:81","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":23472,"indexed":false,"mutability":"mutable","name":"amountOut","nameLocation":"1611:9:81","nodeType":"VariableDeclaration","scope":23474,"src":"1603:17:81","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":23471,"name":"uint256","nodeType":"ElementaryTypeName","src":"1603:7:81","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"1561:60:81"},"src":"1541:81:81"},{"body":{"id":23506,"nodeType":"Block","src":"2567:37:81","statements":[{"expression":{"id":23504,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":23502,"name":"distributor","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":23455,"src":"2573:11:81","typeDescriptions":{"typeIdentifier":"t_contract$_IMerklDistributor_$23442","typeString":"contract IMerklDistributor"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"id":23503,"name":"distributor_","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":23492,"src":"2587:12:81","typeDescriptions":{"typeIdentifier":"t_contract$_IMerklDistributor_$23442","typeString":"contract IMerklDistributor"}},"src":"2573:26:81","typeDescriptions":{"typeIdentifier":"t_contract$_IMerklDistributor_$23442","typeString":"contract IMerklDistributor"}},"id":23505,"nodeType":"ExpressionStatement","src":"2573:26:81"}]},"documentation":{"id":23475,"nodeType":"StructuredDocumentation","src":"1626:605:81","text":" @dev Constructor of the strategy\n @param asset_ The address of the underlying token used for accounting, depositing, and withdrawing.\n @param investAsset_ The address of the tokens hold by the strategy. Typically a rebasing yield bearing token\n @param assetOracle_ The chainlink oracle to obtain the price of the asset. If address(0) the price is 1.\n @param investAssetOracle_ The chainlink oracle to obtain the price of the invest asset. If address(0) => 1\n @param investAssetOracle_ The chainlink oracle to obtain the price of the invest asset. If address(0) => 1"},"id":23507,"implemented":true,"kind":"constructor","modifiers":[{"arguments":[{"id":23495,"name":"asset_","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":23478,"src":"2494:6:81","typeDescriptions":{"typeIdentifier":"t_contract$_IERC20Metadata_$9411","typeString":"contract IERC20Metadata"}},{"id":23496,"name":"investAsset_","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":23481,"src":"2502:12:81","typeDescriptions":{"typeIdentifier":"t_contract$_IERC20Metadata_$9411","typeString":"contract IERC20Metadata"}},{"id":23497,"name":"assetOracle_","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":23484,"src":"2516:12:81","typeDescriptions":{"typeIdentifier":"t_contract$_AggregatorV3Interface_$20542","typeString":"contract AggregatorV3Interface"}},{"id":23498,"name":"investAssetOracle_","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":23487,"src":"2530:18:81","typeDescriptions":{"typeIdentifier":"t_contract$_AggregatorV3Interface_$20542","typeString":"contract AggregatorV3Interface"}},{"id":23499,"name":"priceTolerance_","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":23489,"src":"2550:15:81","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"id":23500,"kind":"baseConstructorSpecifier","modifierName":{"id":23494,"name":"ChainlinkSwapAssetInvestStrategy","nameLocations":["2461:32:81"],"nodeType":"IdentifierPath","referencedDeclaration":22360,"src":"2461:32:81"},"nodeType":"ModifierInvocation","src":"2461:105:81"}],"name":"","nameLocation":"-1:-1:-1","nodeType":"FunctionDefinition","parameters":{"id":23493,"nodeType":"ParameterList","parameters":[{"constant":false,"id":23478,"mutability":"mutable","name":"asset_","nameLocation":"2266:6:81","nodeType":"VariableDeclaration","scope":23507,"src":"2251:21:81","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_contract$_IERC20Metadata_$9411","typeString":"contract IERC20Metadata"},"typeName":{"id":23477,"nodeType":"UserDefinedTypeName","pathNode":{"id":23476,"name":"IERC20Metadata","nameLocations":["2251:14:81"],"nodeType":"IdentifierPath","referencedDeclaration":9411,"src":"2251:14:81"},"referencedDeclaration":9411,"src":"2251:14:81","typeDescriptions":{"typeIdentifier":"t_contract$_IERC20Metadata_$9411","typeString":"contract IERC20Metadata"}},"visibility":"internal"},{"constant":false,"id":23481,"mutability":"mutable","name":"investAsset_","nameLocation":"2293:12:81","nodeType":"VariableDeclaration","scope":23507,"src":"2278:27:81","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_contract$_IERC20Metadata_$9411","typeString":"contract IERC20Metadata"},"typeName":{"id":23480,"nodeType":"UserDefinedTypeName","pathNode":{"id":23479,"name":"IERC20Metadata","nameLocations":["2278:14:81"],"nodeType":"IdentifierPath","referencedDeclaration":9411,"src":"2278:14:81"},"referencedDeclaration":9411,"src":"2278:14:81","typeDescriptions":{"typeIdentifier":"t_contract$_IERC20Metadata_$9411","typeString":"contract IERC20Metadata"}},"visibility":"internal"},{"constant":false,"id":23484,"mutability":"mutable","name":"assetOracle_","nameLocation":"2333:12:81","nodeType":"VariableDeclaration","scope":23507,"src":"2311:34:81","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_contract$_AggregatorV3Interface_$20542","typeString":"contract AggregatorV3Interface"},"typeName":{"id":23483,"nodeType":"UserDefinedTypeName","pathNode":{"id":23482,"name":"AggregatorV3Interface","nameLocations":["2311:21:81"],"nodeType":"IdentifierPath","referencedDeclaration":20542,"src":"2311:21:81"},"referencedDeclaration":20542,"src":"2311:21:81","typeDescriptions":{"typeIdentifier":"t_contract$_AggregatorV3Interface_$20542","typeString":"contract AggregatorV3Interface"}},"visibility":"internal"},{"constant":false,"id":23487,"mutability":"mutable","name":"investAssetOracle_","nameLocation":"2373:18:81","nodeType":"VariableDeclaration","scope":23507,"src":"2351:40:81","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_contract$_AggregatorV3Interface_$20542","typeString":"contract AggregatorV3Interface"},"typeName":{"id":23486,"nodeType":"UserDefinedTypeName","pathNode":{"id":23485,"name":"AggregatorV3Interface","nameLocations":["2351:21:81"],"nodeType":"IdentifierPath","referencedDeclaration":20542,"src":"2351:21:81"},"referencedDeclaration":20542,"src":"2351:21:81","typeDescriptions":{"typeIdentifier":"t_contract$_AggregatorV3Interface_$20542","typeString":"contract AggregatorV3Interface"}},"visibility":"internal"},{"constant":false,"id":23489,"mutability":"mutable","name":"priceTolerance_","nameLocation":"2405:15:81","nodeType":"VariableDeclaration","scope":23507,"src":"2397:23:81","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":23488,"name":"uint256","nodeType":"ElementaryTypeName","src":"2397:7:81","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":23492,"mutability":"mutable","name":"distributor_","nameLocation":"2444:12:81","nodeType":"VariableDeclaration","scope":23507,"src":"2426:30:81","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_contract$_IMerklDistributor_$23442","typeString":"contract IMerklDistributor"},"typeName":{"id":23491,"nodeType":"UserDefinedTypeName","pathNode":{"id":23490,"name":"IMerklDistributor","nameLocations":["2426:17:81"],"nodeType":"IdentifierPath","referencedDeclaration":23442,"src":"2426:17:81"},"referencedDeclaration":23442,"src":"2426:17:81","typeDescriptions":{"typeIdentifier":"t_contract$_IMerklDistributor_$23442","typeString":"contract IMerklDistributor"}},"visibility":"internal"}],"src":"2245:215:81"},"returnParameters":{"id":23501,"nodeType":"ParameterList","parameters":[],"src":"2567:0:81"},"scope":23766,"src":"2234:370:81","stateMutability":"nonpayable","virtual":false,"visibility":"public"},{"baseFunctions":[24135],"body":{"id":23518,"nodeType":"Block","src":"2732:43:81","statements":[{"expression":{"hexValue":"30","id":23516,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"2769:1:81","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"functionReturnParameters":23515,"id":23517,"nodeType":"Return","src":"2762:8:81"}]},"documentation":{"id":23508,"nodeType":"StructuredDocumentation","src":"2608:31:81","text":"@inheritdoc IInvestStrategy"},"functionSelector":"402d267d","id":23519,"implemented":true,"kind":"function","modifiers":[],"name":"maxDeposit","nameLocation":"2651:10:81","nodeType":"FunctionDefinition","overrides":{"id":23512,"nodeType":"OverrideSpecifier","overrides":[],"src":"2705:8:81"},"parameters":{"id":23511,"nodeType":"ParameterList","parameters":[{"constant":false,"id":23510,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":23519,"src":"2662:7:81","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":23509,"name":"address","nodeType":"ElementaryTypeName","src":"2662:7:81","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"2661:23:81"},"returnParameters":{"id":23515,"nodeType":"ParameterList","parameters":[{"constant":false,"id":23514,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":23519,"src":"2723:7:81","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":23513,"name":"uint256","nodeType":"ElementaryTypeName","src":"2723:7:81","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"2722:9:81"},"scope":23766,"src":"2642:133:81","stateMutability":"view","virtual":true,"visibility":"public"},{"body":{"id":23627,"nodeType":"Block","src":"2832:450:81","statements":[{"assignments":[23528],"declarations":[{"constant":false,"id":23528,"mutability":"mutable","name":"amounts","nameLocation":"2855:7:81","nodeType":"VariableDeclaration","scope":23627,"src":"2838:24:81","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_memory_ptr","typeString":"uint256[]"},"typeName":{"baseType":{"id":23526,"name":"uint256","nodeType":"ElementaryTypeName","src":"2838:7:81","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":23527,"nodeType":"ArrayTypeName","src":"2838:9:81","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_storage_ptr","typeString":"uint256[]"}},"visibility":"internal"}],"id":23534,"initialValue":{"arguments":[{"hexValue":"31","id":23532,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"2879:1:81","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":23531,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"NewExpression","src":"2865:13:81","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":23529,"name":"uint256","nodeType":"ElementaryTypeName","src":"2869:7:81","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":23530,"nodeType":"ArrayTypeName","src":"2869:9:81","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_storage_ptr","typeString":"uint256[]"}}},"id":23533,"isConstant":false,"isLValue":false,"isPure":true,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"2865:16:81","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_memory_ptr","typeString":"uint256[] memory"}},"nodeType":"VariableDeclarationStatement","src":"2838:43:81"},{"assignments":[23539],"declarations":[{"constant":false,"id":23539,"mutability":"mutable","name":"users","nameLocation":"2904:5:81","nodeType":"VariableDeclaration","scope":23627,"src":"2887:22:81","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_array$_t_address_$dyn_memory_ptr","typeString":"address[]"},"typeName":{"baseType":{"id":23537,"name":"address","nodeType":"ElementaryTypeName","src":"2887:7:81","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"id":23538,"nodeType":"ArrayTypeName","src":"2887:9:81","typeDescriptions":{"typeIdentifier":"t_array$_t_address_$dyn_storage_ptr","typeString":"address[]"}},"visibility":"internal"}],"id":23545,"initialValue":{"arguments":[{"hexValue":"31","id":23543,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"2926:1:81","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":23542,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"NewExpression","src":"2912:13:81","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":23540,"name":"address","nodeType":"ElementaryTypeName","src":"2916:7:81","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"id":23541,"nodeType":"ArrayTypeName","src":"2916:9:81","typeDescriptions":{"typeIdentifier":"t_array$_t_address_$dyn_storage_ptr","typeString":"address[]"}}},"id":23544,"isConstant":false,"isLValue":false,"isPure":true,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"2912:16:81","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_array$_t_address_$dyn_memory_ptr","typeString":"address[] memory"}},"nodeType":"VariableDeclarationStatement","src":"2887:41:81"},{"assignments":[23550],"declarations":[{"constant":false,"id":23550,"mutability":"mutable","name":"tokens","nameLocation":"2951:6:81","nodeType":"VariableDeclaration","scope":23627,"src":"2934:23:81","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_array$_t_address_$dyn_memory_ptr","typeString":"address[]"},"typeName":{"baseType":{"id":23548,"name":"address","nodeType":"ElementaryTypeName","src":"2934:7:81","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"id":23549,"nodeType":"ArrayTypeName","src":"2934:9:81","typeDescriptions":{"typeIdentifier":"t_array$_t_address_$dyn_storage_ptr","typeString":"address[]"}},"visibility":"internal"}],"id":23556,"initialValue":{"arguments":[{"hexValue":"31","id":23554,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"2974:1:81","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":23553,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"NewExpression","src":"2960:13:81","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":23551,"name":"address","nodeType":"ElementaryTypeName","src":"2964:7:81","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"id":23552,"nodeType":"ArrayTypeName","src":"2964:9:81","typeDescriptions":{"typeIdentifier":"t_array$_t_address_$dyn_storage_ptr","typeString":"address[]"}}},"id":23555,"isConstant":false,"isLValue":false,"isPure":true,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"2960:16:81","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_array$_t_address_$dyn_memory_ptr","typeString":"address[] memory"}},"nodeType":"VariableDeclarationStatement","src":"2934:42:81"},{"assignments":[23562],"declarations":[{"constant":false,"id":23562,"mutability":"mutable","name":"proofs","nameLocation":"3001:6:81","nodeType":"VariableDeclaration","scope":23627,"src":"2982:25:81","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_array$_t_array$_t_bytes32_$dyn_memory_ptr_$dyn_memory_ptr","typeString":"bytes32[][]"},"typeName":{"baseType":{"baseType":{"id":23559,"name":"bytes32","nodeType":"ElementaryTypeName","src":"2982:7:81","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"id":23560,"nodeType":"ArrayTypeName","src":"2982:9:81","typeDescriptions":{"typeIdentifier":"t_array$_t_bytes32_$dyn_storage_ptr","typeString":"bytes32[]"}},"id":23561,"nodeType":"ArrayTypeName","src":"2982:11:81","typeDescriptions":{"typeIdentifier":"t_array$_t_array$_t_bytes32_$dyn_storage_$dyn_storage_ptr","typeString":"bytes32[][]"}},"visibility":"internal"}],"id":23569,"initialValue":{"arguments":[{"hexValue":"31","id":23567,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"3026:1:81","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":23566,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"NewExpression","src":"3010:15:81","typeDescriptions":{"typeIdentifier":"t_function_objectcreation_pure$_t_uint256_$returns$_t_array$_t_array$_t_bytes32_$dyn_memory_ptr_$dyn_memory_ptr_$","typeString":"function (uint256) pure returns (bytes32[] memory[] memory)"},"typeName":{"baseType":{"baseType":{"id":23563,"name":"bytes32","nodeType":"ElementaryTypeName","src":"3014:7:81","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"id":23564,"nodeType":"ArrayTypeName","src":"3014:9:81","typeDescriptions":{"typeIdentifier":"t_array$_t_bytes32_$dyn_storage_ptr","typeString":"bytes32[]"}},"id":23565,"nodeType":"ArrayTypeName","src":"3014:11:81","typeDescriptions":{"typeIdentifier":"t_array$_t_array$_t_bytes32_$dyn_storage_$dyn_storage_ptr","typeString":"bytes32[][]"}}},"id":23568,"isConstant":false,"isLValue":false,"isPure":true,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"3010:18:81","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_array$_t_array$_t_bytes32_$dyn_memory_ptr_$dyn_memory_ptr","typeString":"bytes32[] memory[] memory"}},"nodeType":"VariableDeclarationStatement","src":"2982:46:81"},{"expression":{"id":23587,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"components":[{"baseExpression":{"id":23570,"name":"amounts","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":23528,"src":"3035:7:81","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_memory_ptr","typeString":"uint256[] memory"}},"id":23572,"indexExpression":{"hexValue":"30","id":23571,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"3043:1:81","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"nodeType":"IndexAccess","src":"3035:10:81","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"baseExpression":{"id":23573,"name":"proofs","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":23562,"src":"3047:6:81","typeDescriptions":{"typeIdentifier":"t_array$_t_array$_t_bytes32_$dyn_memory_ptr_$dyn_memory_ptr","typeString":"bytes32[] memory[] memory"}},"id":23575,"indexExpression":{"hexValue":"30","id":23574,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"3054:1:81","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"nodeType":"IndexAccess","src":"3047:9:81","typeDescriptions":{"typeIdentifier":"t_array$_t_bytes32_$dyn_memory_ptr","typeString":"bytes32[] memory"}}],"id":23576,"isConstant":false,"isInlineArray":false,"isLValue":true,"isPure":false,"lValueRequested":true,"nodeType":"TupleExpression","src":"3034:23:81","typeDescriptions":{"typeIdentifier":"t_tuple$_t_uint256_$_t_array$_t_bytes32_$dyn_memory_ptr_$","typeString":"tuple(uint256,bytes32[] memory)"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"arguments":[{"id":23579,"name":"params","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":23521,"src":"3071:6:81","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}},{"components":[{"id":23581,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"3080:7:81","typeDescriptions":{"typeIdentifier":"t_type$_t_uint256_$","typeString":"type(uint256)"},"typeName":{"id":23580,"name":"uint256","nodeType":"ElementaryTypeName","src":"3080:7:81","typeDescriptions":{}}},{"baseExpression":{"id":23583,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"3089:7:81","typeDescriptions":{"typeIdentifier":"t_type$_t_bytes32_$","typeString":"type(bytes32)"},"typeName":{"id":23582,"name":"bytes32","nodeType":"ElementaryTypeName","src":"3089:7:81","typeDescriptions":{}}},"id":23584,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"IndexAccess","src":"3089:9:81","typeDescriptions":{"typeIdentifier":"t_type$_t_array$_t_bytes32_$dyn_memory_ptr_$","typeString":"type(bytes32[] memory)"}}],"id":23585,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"TupleExpression","src":"3079:20:81","typeDescriptions":{"typeIdentifier":"t_tuple$_t_type$_t_uint256_$_$_t_type$_t_array$_t_bytes32_$dyn_memory_ptr_$_$","typeString":"tuple(type(uint256),type(bytes32[] memory))"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"},{"typeIdentifier":"t_tuple$_t_type$_t_uint256_$_$_t_type$_t_array$_t_bytes32_$dyn_memory_ptr_$_$","typeString":"tuple(type(uint256),type(bytes32[] memory))"}],"expression":{"id":23577,"name":"abi","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-1,"src":"3060:3:81","typeDescriptions":{"typeIdentifier":"t_magic_abi","typeString":"abi"}},"id":23578,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberLocation":"3064:6:81","memberName":"decode","nodeType":"MemberAccess","src":"3060:10:81","typeDescriptions":{"typeIdentifier":"t_function_abidecode_pure$__$returns$__$","typeString":"function () pure"}},"id":23586,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"3060:40:81","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$_t_uint256_$_t_array$_t_bytes32_$dyn_memory_ptr_$","typeString":"tuple(uint256,bytes32[] memory)"}},"src":"3034:66:81","typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":23588,"nodeType":"ExpressionStatement","src":"3034:66:81"},{"expression":{"id":23596,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"baseExpression":{"id":23589,"name":"users","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":23539,"src":"3106:5:81","typeDescriptions":{"typeIdentifier":"t_array$_t_address_$dyn_memory_ptr","typeString":"address[] memory"}},"id":23591,"indexExpression":{"hexValue":"30","id":23590,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"3112:1:81","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"nodeType":"IndexAccess","src":"3106:8:81","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"arguments":[{"id":23594,"name":"this","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-28,"src":"3125:4:81","typeDescriptions":{"typeIdentifier":"t_contract$_MerklRewardsInvestStrategy_$23766","typeString":"contract MerklRewardsInvestStrategy"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_contract$_MerklRewardsInvestStrategy_$23766","typeString":"contract MerklRewardsInvestStrategy"}],"id":23593,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"3117:7:81","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":23592,"name":"address","nodeType":"ElementaryTypeName","src":"3117:7:81","typeDescriptions":{}}},"id":23595,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"3117:13:81","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"src":"3106:24:81","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"id":23597,"nodeType":"ExpressionStatement","src":"3106:24:81"},{"expression":{"id":23607,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"baseExpression":{"id":23598,"name":"tokens","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":23550,"src":"3136:6:81","typeDescriptions":{"typeIdentifier":"t_array$_t_address_$dyn_memory_ptr","typeString":"address[] memory"}},"id":23600,"indexExpression":{"hexValue":"30","id":23599,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"3143:1:81","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"nodeType":"IndexAccess","src":"3136:9:81","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"arguments":[{"arguments":[{"id":23604,"name":"this","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-28,"src":"3168:4:81","typeDescriptions":{"typeIdentifier":"t_contract$_MerklRewardsInvestStrategy_$23766","typeString":"contract MerklRewardsInvestStrategy"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_contract$_MerklRewardsInvestStrategy_$23766","typeString":"contract MerklRewardsInvestStrategy"}],"id":23603,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"3160:7:81","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":23602,"name":"address","nodeType":"ElementaryTypeName","src":"3160:7:81","typeDescriptions":{}}},"id":23605,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"3160:13:81","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"id":23601,"name":"investAsset","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":24164,"src":"3148:11:81","typeDescriptions":{"typeIdentifier":"t_function_internal_view$_t_address_$returns$_t_address_$","typeString":"function (address) view returns (address)"}},"id":23606,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"3148:26:81","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"src":"3136:38:81","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"id":23608,"nodeType":"ExpressionStatement","src":"3136:38:81"},{"expression":{"arguments":[{"id":23612,"name":"users","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":23539,"src":"3198:5:81","typeDescriptions":{"typeIdentifier":"t_array$_t_address_$dyn_memory_ptr","typeString":"address[] memory"}},{"id":23613,"name":"tokens","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":23550,"src":"3205:6:81","typeDescriptions":{"typeIdentifier":"t_array$_t_address_$dyn_memory_ptr","typeString":"address[] memory"}},{"id":23614,"name":"amounts","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":23528,"src":"3213:7:81","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_memory_ptr","typeString":"uint256[] memory"}},{"id":23615,"name":"proofs","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":23562,"src":"3222:6:81","typeDescriptions":{"typeIdentifier":"t_array$_t_array$_t_bytes32_$dyn_memory_ptr_$dyn_memory_ptr","typeString":"bytes32[] memory[] memory"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_array$_t_address_$dyn_memory_ptr","typeString":"address[] memory"},{"typeIdentifier":"t_array$_t_address_$dyn_memory_ptr","typeString":"address[] memory"},{"typeIdentifier":"t_array$_t_uint256_$dyn_memory_ptr","typeString":"uint256[] memory"},{"typeIdentifier":"t_array$_t_array$_t_bytes32_$dyn_memory_ptr_$dyn_memory_ptr","typeString":"bytes32[] memory[] memory"}],"expression":{"id":23609,"name":"distributor","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":23455,"src":"3180:11:81","typeDescriptions":{"typeIdentifier":"t_contract$_IMerklDistributor_$23442","typeString":"contract IMerklDistributor"}},"id":23611,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"3192:5:81","memberName":"claim","nodeType":"MemberAccess","referencedDeclaration":23441,"src":"3180:17:81","typeDescriptions":{"typeIdentifier":"t_function_external_nonpayable$_t_array$_t_address_$dyn_memory_ptr_$_t_array$_t_address_$dyn_memory_ptr_$_t_array$_t_uint256_$dyn_memory_ptr_$_t_array$_t_array$_t_bytes32_$dyn_memory_ptr_$dyn_memory_ptr_$returns$__$","typeString":"function (address[] memory,address[] memory,uint256[] memory,bytes32[] memory[] memory) external"}},"id":23616,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"3180:49:81","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":23617,"nodeType":"ExpressionStatement","src":"3180:49:81"},{"eventCall":{"arguments":[{"baseExpression":{"id":23619,"name":"tokens","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":23550,"src":"3255:6:81","typeDescriptions":{"typeIdentifier":"t_array$_t_address_$dyn_memory_ptr","typeString":"address[] memory"}},"id":23621,"indexExpression":{"hexValue":"30","id":23620,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"3262:1:81","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"3255:9:81","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"baseExpression":{"id":23622,"name":"amounts","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":23528,"src":"3266:7:81","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_memory_ptr","typeString":"uint256[] memory"}},"id":23624,"indexExpression":{"hexValue":"30","id":23623,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"3274:1:81","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"3266:10:81","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":23618,"name":"RewardsClaimed","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":23466,"src":"3240:14:81","typeDescriptions":{"typeIdentifier":"t_function_event_nonpayable$_t_address_$_t_uint256_$returns$__$","typeString":"function (address,uint256)"}},"id":23625,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"3240:37:81","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":23626,"nodeType":"EmitStatement","src":"3235:42:81"}]},"id":23628,"implemented":true,"kind":"function","modifiers":[],"name":"_claimRewards","nameLocation":"2788:13:81","nodeType":"FunctionDefinition","parameters":{"id":23522,"nodeType":"ParameterList","parameters":[{"constant":false,"id":23521,"mutability":"mutable","name":"params","nameLocation":"2815:6:81","nodeType":"VariableDeclaration","scope":23628,"src":"2802:19:81","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes"},"typeName":{"id":23520,"name":"bytes","nodeType":"ElementaryTypeName","src":"2802:5:81","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"}],"src":"2801:21:81"},"returnParameters":{"id":23523,"nodeType":"ParameterList","parameters":[],"src":"2832:0:81"},"scope":23766,"src":"2779:503:81","stateMutability":"nonpayable","virtual":false,"visibility":"internal"},{"body":{"id":23693,"nodeType":"Block","src":"3333:540:81","statements":[{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":23639,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":23633,"name":"amount","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":23630,"src":"3343:6:81","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"expression":{"arguments":[{"id":23636,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"3358:7:81","typeDescriptions":{"typeIdentifier":"t_type$_t_uint256_$","typeString":"type(uint256)"},"typeName":{"id":23635,"name":"uint256","nodeType":"ElementaryTypeName","src":"3358:7:81","typeDescriptions":{}}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_type$_t_uint256_$","typeString":"type(uint256)"}],"id":23634,"name":"type","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-27,"src":"3353:4:81","typeDescriptions":{"typeIdentifier":"t_function_metatype_pure$__$returns$__$","typeString":"function () pure"}},"id":23637,"isConstant":false,"isLValue":false,"isPure":true,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"3353:13:81","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_magic_meta_type_t_uint256","typeString":"type(uint256)"}},"id":23638,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberLocation":"3367:3:81","memberName":"max","nodeType":"MemberAccess","src":"3353:17:81","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"3343:27:81","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":23650,"nodeType":"IfStatement","src":"3339:79:81","trueBody":{"expression":{"id":23648,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":23640,"name":"amount","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":23630,"src":"3372:6:81","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"arguments":[{"arguments":[{"id":23645,"name":"this","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-28,"src":"3412:4:81","typeDescriptions":{"typeIdentifier":"t_contract$_MerklRewardsInvestStrategy_$23766","typeString":"contract MerklRewardsInvestStrategy"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_contract$_MerklRewardsInvestStrategy_$23766","typeString":"contract MerklRewardsInvestStrategy"}],"id":23644,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"3404:7:81","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":23643,"name":"address","nodeType":"ElementaryTypeName","src":"3404:7:81","typeDescriptions":{}}},"id":23646,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"3404:13:81","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"expression":{"id":23641,"name":"_investAsset","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":23958,"src":"3381:12:81","typeDescriptions":{"typeIdentifier":"t_contract$_IERC20Metadata_$9411","typeString":"contract IERC20Metadata"}},"id":23642,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"3394:9:81","memberName":"balanceOf","nodeType":"MemberAccess","referencedDeclaration":8636,"src":"3381:22:81","typeDescriptions":{"typeIdentifier":"t_function_external_view$_t_address_$returns$_t_uint256_$","typeString":"function (address) view external returns (uint256)"}},"id":23647,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"3381:37:81","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"3372:46:81","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":23649,"nodeType":"ExpressionStatement","src":"3372:46:81"}},{"assignments":[23652],"declarations":[{"constant":false,"id":23652,"mutability":"mutable","name":"amountOut","nameLocation":"3432:9:81","nodeType":"VariableDeclaration","scope":23693,"src":"3424:17:81","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":23651,"name":"uint256","nodeType":"ElementaryTypeName","src":"3424:7:81","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":23668,"initialValue":{"arguments":[{"arguments":[{"id":23658,"name":"_investAsset","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":23958,"src":"3491:12:81","typeDescriptions":{"typeIdentifier":"t_contract$_IERC20Metadata_$9411","typeString":"contract IERC20Metadata"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_contract$_IERC20Metadata_$9411","typeString":"contract IERC20Metadata"}],"id":23657,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"3483:7:81","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":23656,"name":"address","nodeType":"ElementaryTypeName","src":"3483:7:81","typeDescriptions":{}}},"id":23659,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"3483:21:81","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"arguments":[{"id":23662,"name":"_asset","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":23955,"src":"3520:6:81","typeDescriptions":{"typeIdentifier":"t_contract$_IERC20Metadata_$9411","typeString":"contract IERC20Metadata"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_contract$_IERC20Metadata_$9411","typeString":"contract IERC20Metadata"}],"id":23661,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"3512:7:81","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":23660,"name":"address","nodeType":"ElementaryTypeName","src":"3512:7:81","typeDescriptions":{}}},"id":23663,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"3512:15:81","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":23664,"name":"amount","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":23630,"src":"3535:6:81","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"arguments":[],"expression":{"argumentTypes":[],"id":23665,"name":"sellInvestAssetPrice","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":24184,"src":"3549:20:81","typeDescriptions":{"typeIdentifier":"t_function_internal_view$__$returns$_t_uint256_$","typeString":"function () view returns (uint256)"}},"id":23666,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"3549:22:81","tryCall":false,"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":{"arguments":[],"expression":{"argumentTypes":[],"id":23653,"name":"_getSwapConfigSelf","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":24494,"src":"3444:18:81","typeDescriptions":{"typeIdentifier":"t_function_internal_view$__$returns$_t_struct$_SwapConfig_$1113_memory_ptr_$","typeString":"function () view returns (struct SwapLibrary.SwapConfig memory)"}},"id":23654,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"3444:20:81","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_struct$_SwapConfig_$1113_memory_ptr","typeString":"struct SwapLibrary.SwapConfig memory"}},"id":23655,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"3465:10:81","memberName":"exactInput","nodeType":"MemberAccess","referencedDeclaration":1283,"src":"3444:31:81","typeDescriptions":{"typeIdentifier":"t_function_delegatecall_nonpayable$_t_struct$_SwapConfig_$1113_memory_ptr_$_t_address_$_t_address_$_t_uint256_$_t_uint256_$returns$_t_uint256_$attached_to$_t_struct$_SwapConfig_$1113_memory_ptr_$","typeString":"function (struct SwapLibrary.SwapConfig memory,address,address,uint256,uint256) returns (uint256)"}},"id":23667,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"3444:133:81","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"VariableDeclarationStatement","src":"3424:153:81"},{"expression":{"arguments":[{"arguments":[{"expression":{"id":23676,"name":"MSVBase","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":17366,"src":"3756:7:81","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_MSVBase_$17366_$","typeString":"type(contract MSVBase)"}},"id":23677,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberLocation":"3764:19:81","memberName":"depositToStrategies","nodeType":"MemberAccess","referencedDeclaration":16379,"src":"3756:27:81","typeDescriptions":{"typeIdentifier":"t_function_declaration_nonpayable$_t_uint256_$returns$__$","typeString":"function MSVBase.depositToStrategies(uint256)"}},{"id":23678,"name":"amountOut","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":23652,"src":"3785:9:81","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_function_declaration_nonpayable$_t_uint256_$returns$__$","typeString":"function MSVBase.depositToStrategies(uint256)"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"expression":{"id":23674,"name":"abi","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-1,"src":"3741:3:81","typeDescriptions":{"typeIdentifier":"t_magic_abi","typeString":"abi"}},"id":23675,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberLocation":"3745:10:81","memberName":"encodeCall","nodeType":"MemberAccess","src":"3741:14:81","typeDescriptions":{"typeIdentifier":"t_function_abiencodecall_pure$__$returns$_t_bytes_memory_ptr_$","typeString":"function () pure returns (bytes memory)"}},"id":23679,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"3741:54:81","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}],"expression":{"arguments":[],"expression":{"argumentTypes":[],"expression":{"id":23669,"name":"ERC1967Utils","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7606,"src":"3687:12:81","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_ERC1967Utils_$7606_$","typeString":"type(library ERC1967Utils)"}},"id":23671,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"3700:17:81","memberName":"getImplementation","nodeType":"MemberAccess","referencedDeclaration":7358,"src":"3687:30:81","typeDescriptions":{"typeIdentifier":"t_function_internal_view$__$returns$_t_address_$","typeString":"function () view returns (address)"}},"id":23672,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"3687:32:81","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"id":23673,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"3720:20:81","memberName":"functionDelegateCall","nodeType":"MemberAccess","referencedDeclaration":10166,"src":"3687:53:81","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_address_$_t_bytes_memory_ptr_$returns$_t_bytes_memory_ptr_$attached_to$_t_address_$","typeString":"function (address,bytes memory) returns (bytes memory)"}},"id":23680,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"3687:109:81","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}},"id":23681,"nodeType":"ExpressionStatement","src":"3687:109:81"},{"eventCall":{"arguments":[{"arguments":[{"arguments":[{"id":23686,"name":"this","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-28,"src":"3842:4:81","typeDescriptions":{"typeIdentifier":"t_contract$_MerklRewardsInvestStrategy_$23766","typeString":"contract MerklRewardsInvestStrategy"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_contract$_MerklRewardsInvestStrategy_$23766","typeString":"contract MerklRewardsInvestStrategy"}],"id":23685,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"3834:7:81","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":23684,"name":"address","nodeType":"ElementaryTypeName","src":"3834:7:81","typeDescriptions":{}}},"id":23687,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"3834:13:81","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"id":23683,"name":"investAsset","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":24164,"src":"3822:11:81","typeDescriptions":{"typeIdentifier":"t_function_internal_view$_t_address_$returns$_t_address_$","typeString":"function (address) view returns (address)"}},"id":23688,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"3822:26:81","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":23689,"name":"amount","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":23630,"src":"3850:6:81","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"id":23690,"name":"amountOut","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":23652,"src":"3858:9:81","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":23682,"name":"RewardsSwapped","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":23474,"src":"3807:14:81","typeDescriptions":{"typeIdentifier":"t_function_event_nonpayable$_t_address_$_t_uint256_$_t_uint256_$returns$__$","typeString":"function (address,uint256,uint256)"}},"id":23691,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"3807:61:81","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":23692,"nodeType":"EmitStatement","src":"3802:66:81"}]},"id":23694,"implemented":true,"kind":"function","modifiers":[],"name":"_swapRewards","nameLocation":"3295:12:81","nodeType":"FunctionDefinition","parameters":{"id":23631,"nodeType":"ParameterList","parameters":[{"constant":false,"id":23630,"mutability":"mutable","name":"amount","nameLocation":"3316:6:81","nodeType":"VariableDeclaration","scope":23694,"src":"3308:14:81","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":23629,"name":"uint256","nodeType":"ElementaryTypeName","src":"3308:7:81","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"3307:16:81"},"returnParameters":{"id":23632,"nodeType":"ParameterList","parameters":[],"src":"3333:0:81"},"scope":23766,"src":"3286:587:81","stateMutability":"nonpayable","virtual":false,"visibility":"internal"},{"baseFunctions":[24449],"body":{"id":23764,"nodeType":"Block","src":"4053:484:81","statements":[{"assignments":[23709],"declarations":[{"constant":false,"id":23709,"mutability":"mutable","name":"checkedMethod","nameLocation":"4079:13:81","nodeType":"VariableDeclaration","scope":23764,"src":"4059:33:81","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_enum$_MerklForwardMethods_$23460","typeString":"enum MerklRewardsInvestStrategy.MerklForwardMethods"},"typeName":{"id":23708,"nodeType":"UserDefinedTypeName","pathNode":{"id":23707,"name":"MerklForwardMethods","nameLocations":["4059:19:81"],"nodeType":"IdentifierPath","referencedDeclaration":23460,"src":"4059:19:81"},"referencedDeclaration":23460,"src":"4059:19:81","typeDescriptions":{"typeIdentifier":"t_enum$_MerklForwardMethods_$23460","typeString":"enum MerklRewardsInvestStrategy.MerklForwardMethods"}},"visibility":"internal"}],"id":23713,"initialValue":{"arguments":[{"id":23711,"name":"method","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":23697,"src":"4115:6:81","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint8","typeString":"uint8"}],"id":23710,"name":"MerklForwardMethods","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":23460,"src":"4095:19:81","typeDescriptions":{"typeIdentifier":"t_type$_t_enum$_MerklForwardMethods_$23460_$","typeString":"type(enum MerklRewardsInvestStrategy.MerklForwardMethods)"}},"id":23712,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"4095:27:81","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_enum$_MerklForwardMethods_$23460","typeString":"enum MerklRewardsInvestStrategy.MerklForwardMethods"}},"nodeType":"VariableDeclarationStatement","src":"4059:63:81"},{"condition":{"commonType":{"typeIdentifier":"t_enum$_MerklForwardMethods_$23460","typeString":"enum MerklRewardsInvestStrategy.MerklForwardMethods"},"id":23717,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":23714,"name":"checkedMethod","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":23709,"src":"4132:13:81","typeDescriptions":{"typeIdentifier":"t_enum$_MerklForwardMethods_$23460","typeString":"enum MerklRewardsInvestStrategy.MerklForwardMethods"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"expression":{"id":23715,"name":"MerklForwardMethods","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":23460,"src":"4149:19:81","typeDescriptions":{"typeIdentifier":"t_type$_t_enum$_MerklForwardMethods_$23460_$","typeString":"type(enum MerklRewardsInvestStrategy.MerklForwardMethods)"}},"id":23716,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberLocation":"4169:12:81","memberName":"claimRewards","nodeType":"MemberAccess","referencedDeclaration":23457,"src":"4149:32:81","typeDescriptions":{"typeIdentifier":"t_enum$_MerklForwardMethods_$23460","typeString":"enum MerklRewardsInvestStrategy.MerklForwardMethods"}},"src":"4132:49:81","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"falseBody":{"condition":{"commonType":{"typeIdentifier":"t_enum$_MerklForwardMethods_$23460","typeString":"enum MerklRewardsInvestStrategy.MerklForwardMethods"},"id":23726,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":23723,"name":"checkedMethod","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":23709,"src":"4229:13:81","typeDescriptions":{"typeIdentifier":"t_enum$_MerklForwardMethods_$23460","typeString":"enum MerklRewardsInvestStrategy.MerklForwardMethods"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"expression":{"id":23724,"name":"MerklForwardMethods","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":23460,"src":"4246:19:81","typeDescriptions":{"typeIdentifier":"t_type$_t_enum$_MerklForwardMethods_$23460_$","typeString":"type(enum MerklRewardsInvestStrategy.MerklForwardMethods)"}},"id":23725,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberLocation":"4266:19:81","memberName":"claimAndSwapRewards","nodeType":"MemberAccess","referencedDeclaration":23458,"src":"4246:39:81","typeDescriptions":{"typeIdentifier":"t_enum$_MerklForwardMethods_$23460","typeString":"enum MerklRewardsInvestStrategy.MerklForwardMethods"}},"src":"4229:56:81","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"falseBody":{"condition":{"commonType":{"typeIdentifier":"t_enum$_MerklForwardMethods_$23460","typeString":"enum MerklRewardsInvestStrategy.MerklForwardMethods"},"id":23743,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":23740,"name":"checkedMethod","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":23709,"src":"4372:13:81","typeDescriptions":{"typeIdentifier":"t_enum$_MerklForwardMethods_$23460","typeString":"enum MerklRewardsInvestStrategy.MerklForwardMethods"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"expression":{"id":23741,"name":"MerklForwardMethods","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":23460,"src":"4389:19:81","typeDescriptions":{"typeIdentifier":"t_type$_t_enum$_MerklForwardMethods_$23460_$","typeString":"type(enum MerklRewardsInvestStrategy.MerklForwardMethods)"}},"id":23742,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberLocation":"4409:11:81","memberName":"swapRewards","nodeType":"MemberAccess","referencedDeclaration":23459,"src":"4389:31:81","typeDescriptions":{"typeIdentifier":"t_enum$_MerklForwardMethods_$23460","typeString":"enum MerklRewardsInvestStrategy.MerklForwardMethods"}},"src":"4372:48:81","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"falseBody":{"expression":{"arguments":[{"id":23757,"name":"method","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":23697,"src":"4517:6:81","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}},{"id":23758,"name":"params","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":23699,"src":"4525:6:81","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint8","typeString":"uint8"},{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}],"expression":{"id":23755,"name":"super","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-25,"src":"4493:5:81","typeDescriptions":{"typeIdentifier":"t_type$_t_super$_MerklRewardsInvestStrategy_$23766_$","typeString":"type(contract super MerklRewardsInvestStrategy)"}},"id":23756,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"4499:17:81","memberName":"forwardEntryPoint","nodeType":"MemberAccess","referencedDeclaration":24449,"src":"4493:23:81","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_uint8_$_t_bytes_memory_ptr_$returns$_t_bytes_memory_ptr_$","typeString":"function (uint8,bytes memory) returns (bytes memory)"}},"id":23759,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"4493:39:81","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}},"functionReturnParameters":23706,"id":23760,"nodeType":"Return","src":"4486:46:81"},"id":23761,"nodeType":"IfStatement","src":"4368:164:81","trueBody":{"id":23754,"nodeType":"Block","src":"4422:58:81","statements":[{"expression":{"arguments":[{"arguments":[{"id":23747,"name":"params","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":23699,"src":"4454:6:81","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}},{"components":[{"id":23749,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"4463:7:81","typeDescriptions":{"typeIdentifier":"t_type$_t_uint256_$","typeString":"type(uint256)"},"typeName":{"id":23748,"name":"uint256","nodeType":"ElementaryTypeName","src":"4463:7:81","typeDescriptions":{}}}],"id":23750,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"TupleExpression","src":"4462:9:81","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":23745,"name":"abi","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-1,"src":"4443:3:81","typeDescriptions":{"typeIdentifier":"t_magic_abi","typeString":"abi"}},"id":23746,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberLocation":"4447:6:81","memberName":"decode","nodeType":"MemberAccess","src":"4443:10:81","typeDescriptions":{"typeIdentifier":"t_function_abidecode_pure$__$returns$__$","typeString":"function () pure"}},"id":23751,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"4443:29:81","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":23744,"name":"_swapRewards","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":23694,"src":"4430:12:81","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_uint256_$returns$__$","typeString":"function (uint256)"}},"id":23752,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"4430:43:81","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":23753,"nodeType":"ExpressionStatement","src":"4430:43:81"}]}},"id":23762,"nodeType":"IfStatement","src":"4225:307:81","trueBody":{"id":23739,"nodeType":"Block","src":"4287:75:81","statements":[{"expression":{"arguments":[{"id":23728,"name":"params","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":23699,"src":"4309:6:81","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}],"id":23727,"name":"_claimRewards","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":23628,"src":"4295:13:81","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_bytes_memory_ptr_$returns$__$","typeString":"function (bytes memory)"}},"id":23729,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"4295:21:81","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":23730,"nodeType":"ExpressionStatement","src":"4295:21:81"},{"expression":{"arguments":[{"expression":{"arguments":[{"id":23734,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"4342:7:81","typeDescriptions":{"typeIdentifier":"t_type$_t_uint256_$","typeString":"type(uint256)"},"typeName":{"id":23733,"name":"uint256","nodeType":"ElementaryTypeName","src":"4342:7:81","typeDescriptions":{}}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_type$_t_uint256_$","typeString":"type(uint256)"}],"id":23732,"name":"type","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-27,"src":"4337:4:81","typeDescriptions":{"typeIdentifier":"t_function_metatype_pure$__$returns$__$","typeString":"function () pure"}},"id":23735,"isConstant":false,"isLValue":false,"isPure":true,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"4337:13:81","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_magic_meta_type_t_uint256","typeString":"type(uint256)"}},"id":23736,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberLocation":"4351:3:81","memberName":"max","nodeType":"MemberAccess","src":"4337:17:81","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":23731,"name":"_swapRewards","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":23694,"src":"4324:12:81","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_uint256_$returns$__$","typeString":"function (uint256)"}},"id":23737,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"4324:31:81","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":23738,"nodeType":"ExpressionStatement","src":"4324:31:81"}]}},"id":23763,"nodeType":"IfStatement","src":"4128:404:81","trueBody":{"id":23722,"nodeType":"Block","src":"4183:36:81","statements":[{"expression":{"arguments":[{"id":23719,"name":"params","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":23699,"src":"4205:6:81","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}],"id":23718,"name":"_claimRewards","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":23628,"src":"4191:13:81","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_bytes_memory_ptr_$returns$__$","typeString":"function (bytes memory)"}},"id":23720,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"4191:21:81","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":23721,"nodeType":"ExpressionStatement","src":"4191:21:81"}]}}]},"documentation":{"id":23695,"nodeType":"StructuredDocumentation","src":"3877:31:81","text":"@inheritdoc IInvestStrategy"},"functionSelector":"0981b1c2","id":23765,"implemented":true,"kind":"function","modifiers":[{"id":23703,"kind":"modifierInvocation","modifierName":{"id":23702,"name":"onlyDelegCall","nameLocations":["4009:13:81"],"nodeType":"IdentifierPath","referencedDeclaration":23990,"src":"4009:13:81"},"nodeType":"ModifierInvocation","src":"4009:13:81"}],"name":"forwardEntryPoint","nameLocation":"3920:17:81","nodeType":"FunctionDefinition","overrides":{"id":23701,"nodeType":"OverrideSpecifier","overrides":[],"src":"4000:8:81"},"parameters":{"id":23700,"nodeType":"ParameterList","parameters":[{"constant":false,"id":23697,"mutability":"mutable","name":"method","nameLocation":"3949:6:81","nodeType":"VariableDeclaration","scope":23765,"src":"3943:12:81","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"},"typeName":{"id":23696,"name":"uint8","nodeType":"ElementaryTypeName","src":"3943:5:81","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}},"visibility":"internal"},{"constant":false,"id":23699,"mutability":"mutable","name":"params","nameLocation":"3974:6:81","nodeType":"VariableDeclaration","scope":23765,"src":"3961:19:81","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes"},"typeName":{"id":23698,"name":"bytes","nodeType":"ElementaryTypeName","src":"3961:5:81","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"}],"src":"3937:47:81"},"returnParameters":{"id":23706,"nodeType":"ParameterList","parameters":[{"constant":false,"id":23705,"mutability":"mutable","name":"result","nameLocation":"4045:6:81","nodeType":"VariableDeclaration","scope":23765,"src":"4032:19:81","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes"},"typeName":{"id":23704,"name":"bytes","nodeType":"ElementaryTypeName","src":"4032:5:81","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"}],"src":"4031:21:81"},"scope":23766,"src":"3911:626:81","stateMutability":"nonpayable","virtual":true,"visibility":"public"}],"scope":23767,"src":"1161:3378:81","usedErrors":[9878,10299,22234,22238,23968,23970,23972,23974],"usedEvents":[23466,23474,23966]}],"src":"39:4501:81"},"id":81},"contracts/strategies/MorphoVaultV2InvestStrategy.sol":{"ast":{"absolutePath":"contracts/strategies/MorphoVaultV2InvestStrategy.sol","exportedSymbols":{"ERC4626InvestStrategy":[23209],"IERC4626":[7127],"IInvestStrategy":[20725],"IVaultV2":[23790],"Math":[12726],"MorphoVaultV2InvestStrategy":[23914]},"id":23915,"license":"Apache-2.0","nodeType":"SourceUnit","nodes":[{"id":23768,"literals":["solidity","^","0.8",".0"],"nodeType":"PragmaDirective","src":"39:23:82"},{"absolutePath":"@openzeppelin/contracts/interfaces/IERC4626.sol","file":"@openzeppelin/contracts/interfaces/IERC4626.sol","id":23770,"nameLocation":"-1:-1:-1","nodeType":"ImportDirective","scope":23915,"sourceUnit":7128,"src":"64:73:82","symbolAliases":[{"foreign":{"id":23769,"name":"IERC4626","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7127,"src":"72:8:82","typeDescriptions":{}},"nameLocation":"-1:-1:-1"}],"unitAlias":""},{"absolutePath":"@openzeppelin/contracts/utils/math/Math.sol","file":"@openzeppelin/contracts/utils/math/Math.sol","id":23772,"nameLocation":"-1:-1:-1","nodeType":"ImportDirective","scope":23915,"sourceUnit":12727,"src":"138:65:82","symbolAliases":[{"foreign":{"id":23771,"name":"Math","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":12726,"src":"146:4:82","typeDescriptions":{}},"nameLocation":"-1:-1:-1"}],"unitAlias":""},{"absolutePath":"contracts/interfaces/IInvestStrategy.sol","file":"../interfaces/IInvestStrategy.sol","id":23774,"nameLocation":"-1:-1:-1","nodeType":"ImportDirective","scope":23915,"sourceUnit":20726,"src":"204:66:82","symbolAliases":[{"foreign":{"id":23773,"name":"IInvestStrategy","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":20725,"src":"212:15:82","typeDescriptions":{}},"nameLocation":"-1:-1:-1"}],"unitAlias":""},{"absolutePath":"contracts/strategies/ERC4626InvestStrategy.sol","file":"./ERC4626InvestStrategy.sol","id":23776,"nameLocation":"-1:-1:-1","nodeType":"ImportDirective","scope":23915,"sourceUnit":23210,"src":"271:66:82","symbolAliases":[{"foreign":{"id":23775,"name":"ERC4626InvestStrategy","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":23209,"src":"279:21:82","typeDescriptions":{}},"nameLocation":"-1:-1:-1"}],"unitAlias":""},{"abstract":false,"baseContracts":[{"baseName":{"id":23778,"name":"IERC4626","nameLocations":["556:8:82"],"nodeType":"IdentifierPath","referencedDeclaration":7127,"src":"556:8:82"},"id":23779,"nodeType":"InheritanceSpecifier","src":"556:8:82"}],"canonicalName":"IVaultV2","contractDependencies":[],"contractKind":"interface","documentation":{"id":23777,"nodeType":"StructuredDocumentation","src":"339:194:82","text":" @title IVaultV2\n @notice Interface of VaultV2 Morpho contracts, only relevant methods.\n @dev See https://github.com/morpho-org/vault-v2/blob/main/src/interfaces/IVaultV2.sol"},"fullyImplemented":false,"id":23790,"linearizedBaseContracts":[23790,7127,9411,8679],"name":"IVaultV2","nameLocation":"544:8:82","nodeType":"ContractDefinition","nodes":[{"functionSelector":"ce04bebb","id":23784,"implemented":false,"kind":"function","modifiers":[],"name":"_totalAssets","nameLocation":"578:12:82","nodeType":"FunctionDefinition","parameters":{"id":23780,"nodeType":"ParameterList","parameters":[],"src":"590:2:82"},"returnParameters":{"id":23783,"nodeType":"ParameterList","parameters":[{"constant":false,"id":23782,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":23784,"src":"616:7:82","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint128","typeString":"uint128"},"typeName":{"id":23781,"name":"uint128","nodeType":"ElementaryTypeName","src":"616:7:82","typeDescriptions":{"typeIdentifier":"t_uint128","typeString":"uint128"}},"visibility":"internal"}],"src":"615:9:82"},"scope":23790,"src":"569:56:82","stateMutability":"view","virtual":false,"visibility":"external"},{"functionSelector":"c0463711","id":23789,"implemented":false,"kind":"function","modifiers":[],"name":"lastUpdate","nameLocation":"637:10:82","nodeType":"FunctionDefinition","parameters":{"id":23785,"nodeType":"ParameterList","parameters":[],"src":"647:2:82"},"returnParameters":{"id":23788,"nodeType":"ParameterList","parameters":[{"constant":false,"id":23787,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":23789,"src":"673:6:82","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint64","typeString":"uint64"},"typeName":{"id":23786,"name":"uint64","nodeType":"ElementaryTypeName","src":"673:6:82","typeDescriptions":{"typeIdentifier":"t_uint64","typeString":"uint64"}},"visibility":"internal"}],"src":"672:8:82"},"scope":23790,"src":"628:53:82","stateMutability":"view","virtual":false,"visibility":"external"}],"scope":23915,"src":"534:149:82","usedErrors":[],"usedEvents":[6978,6990,8613,8622]},{"abstract":false,"baseContracts":[{"baseName":{"id":23792,"name":"ERC4626InvestStrategy","nameLocations":["981:21:82"],"nodeType":"IdentifierPath","referencedDeclaration":23209,"src":"981:21:82"},"id":23793,"nodeType":"InheritanceSpecifier","src":"981:21:82"}],"canonicalName":"MorphoVaultV2InvestStrategy","contractDependencies":[],"contractKind":"contract","documentation":{"id":23791,"nodeType":"StructuredDocumentation","src":"685:255:82","text":" @title MorphoVaultV2InvestStrategy\n @dev Strategy that invests/deinvests into a MorphoV2 vault\n      See https://github.com/morpho-org/vault-v2/blob/main/src/VaultV2.sol\n @custom:security-contact security@ensuro.co\n @author Ensuro"},"fullyImplemented":true,"id":23914,"linearizedBaseContracts":[23914,23209,20725],"name":"MorphoVaultV2InvestStrategy","nameLocation":"950:27:82","nodeType":"ContractDefinition","nodes":[{"global":false,"id":23796,"libraryName":{"id":23794,"name":"Math","nameLocations":["1013:4:82"],"nodeType":"IdentifierPath","referencedDeclaration":12726,"src":"1013:4:82"},"nodeType":"UsingForDirective","src":"1007:23:82","typeName":{"id":23795,"name":"uint256","nodeType":"ElementaryTypeName","src":"1022:7:82","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}},{"constant":true,"id":23799,"mutability":"constant","name":"CACHED_TOTAL_ASSETS_MAX_AGE","nameLocation":"1057:27:82","nodeType":"VariableDeclaration","scope":23914,"src":"1033:60:82","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint64","typeString":"uint64"},"typeName":{"id":23797,"name":"uint64","nodeType":"ElementaryTypeName","src":"1033:6:82","typeDescriptions":{"typeIdentifier":"t_uint64","typeString":"uint64"}},"value":{"hexValue":"31","id":23798,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"1087:6:82","subdenomination":"days","typeDescriptions":{"typeIdentifier":"t_rational_86400_by_1","typeString":"int_const 86400"},"value":"1"},"visibility":"private"},{"body":{"id":23808,"nodeType":"Block","src":"1157:2:82","statements":[]},"id":23809,"implemented":true,"kind":"constructor","modifiers":[{"arguments":[{"id":23805,"name":"vault_","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":23802,"src":"1149:6:82","typeDescriptions":{"typeIdentifier":"t_contract$_IERC4626_$7127","typeString":"contract IERC4626"}}],"id":23806,"kind":"baseConstructorSpecifier","modifierName":{"id":23804,"name":"ERC4626InvestStrategy","nameLocations":["1127:21:82"],"nodeType":"IdentifierPath","referencedDeclaration":23209,"src":"1127:21:82"},"nodeType":"ModifierInvocation","src":"1127:29:82"}],"name":"","nameLocation":"-1:-1:-1","nodeType":"FunctionDefinition","parameters":{"id":23803,"nodeType":"ParameterList","parameters":[{"constant":false,"id":23802,"mutability":"mutable","name":"vault_","nameLocation":"1119:6:82","nodeType":"VariableDeclaration","scope":23809,"src":"1110:15:82","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_contract$_IERC4626_$7127","typeString":"contract IERC4626"},"typeName":{"id":23801,"nodeType":"UserDefinedTypeName","pathNode":{"id":23800,"name":"IERC4626","nameLocations":["1110:8:82"],"nodeType":"IdentifierPath","referencedDeclaration":7127,"src":"1110:8:82"},"referencedDeclaration":7127,"src":"1110:8:82","typeDescriptions":{"typeIdentifier":"t_contract$_IERC4626_$7127","typeString":"contract IERC4626"}},"visibility":"internal"}],"src":"1109:17:82"},"returnParameters":{"id":23807,"nodeType":"ParameterList","parameters":[],"src":"1157:0:82"},"scope":23914,"src":"1098:61:82","stateMutability":"nonpayable","virtual":false,"visibility":"public"},{"baseFunctions":[23080],"body":{"id":23822,"nodeType":"Block","src":"1284:40:82","statements":[{"expression":{"arguments":[{"id":23819,"name":"contract_","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":23812,"src":"1309:9:82","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"id":23818,"name":"totalAssets","nodeType":"Identifier","overloadedDeclarations":[23913],"referencedDeclaration":23913,"src":"1297:11:82","typeDescriptions":{"typeIdentifier":"t_function_internal_view$_t_address_$returns$_t_uint256_$","typeString":"function (address) view returns (uint256)"}},"id":23820,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"1297:22:82","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"functionReturnParameters":23817,"id":23821,"nodeType":"Return","src":"1290:29:82"}]},"documentation":{"id":23810,"nodeType":"StructuredDocumentation","src":"1163:31:82","text":"@inheritdoc IInvestStrategy"},"functionSelector":"ce96cb77","id":23823,"implemented":true,"kind":"function","modifiers":[],"name":"maxWithdraw","nameLocation":"1206:11:82","nodeType":"FunctionDefinition","overrides":{"id":23814,"nodeType":"OverrideSpecifier","overrides":[],"src":"1257:8:82"},"parameters":{"id":23813,"nodeType":"ParameterList","parameters":[{"constant":false,"id":23812,"mutability":"mutable","name":"contract_","nameLocation":"1226:9:82","nodeType":"VariableDeclaration","scope":23823,"src":"1218:17:82","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":23811,"name":"address","nodeType":"ElementaryTypeName","src":"1218:7:82","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"1217:19:82"},"returnParameters":{"id":23817,"nodeType":"ParameterList","parameters":[{"constant":false,"id":23816,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":23823,"src":"1275:7:82","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":23815,"name":"uint256","nodeType":"ElementaryTypeName","src":"1275:7:82","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"1274:9:82"},"scope":23914,"src":"1197:127:82","stateMutability":"view","virtual":true,"visibility":"public"},{"baseFunctions":[23095],"body":{"id":23838,"nodeType":"Block","src":"1438:35:82","statements":[{"expression":{"expression":{"arguments":[{"id":23834,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"1456:7:82","typeDescriptions":{"typeIdentifier":"t_type$_t_uint256_$","typeString":"type(uint256)"},"typeName":{"id":23833,"name":"uint256","nodeType":"ElementaryTypeName","src":"1456:7:82","typeDescriptions":{}}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_type$_t_uint256_$","typeString":"type(uint256)"}],"id":23832,"name":"type","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-27,"src":"1451:4:82","typeDescriptions":{"typeIdentifier":"t_function_metatype_pure$__$returns$__$","typeString":"function () pure"}},"id":23835,"isConstant":false,"isLValue":false,"isPure":true,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"1451:13:82","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_magic_meta_type_t_uint256","typeString":"type(uint256)"}},"id":23836,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberLocation":"1465:3:82","memberName":"max","nodeType":"MemberAccess","src":"1451:17:82","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"functionReturnParameters":23831,"id":23837,"nodeType":"Return","src":"1444:24:82"}]},"documentation":{"id":23824,"nodeType":"StructuredDocumentation","src":"1328:31:82","text":"@inheritdoc IInvestStrategy"},"functionSelector":"402d267d","id":23839,"implemented":true,"kind":"function","modifiers":[],"name":"maxDeposit","nameLocation":"1371:10:82","nodeType":"FunctionDefinition","overrides":{"id":23828,"nodeType":"OverrideSpecifier","overrides":[],"src":"1411:8:82"},"parameters":{"id":23827,"nodeType":"ParameterList","parameters":[{"constant":false,"id":23826,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":23839,"src":"1382:7:82","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":23825,"name":"address","nodeType":"ElementaryTypeName","src":"1382:7:82","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"1381:9:82"},"returnParameters":{"id":23831,"nodeType":"ParameterList","parameters":[{"constant":false,"id":23830,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":23839,"src":"1429:7:82","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":23829,"name":"uint256","nodeType":"ElementaryTypeName","src":"1429:7:82","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"1428:9:82"},"scope":23914,"src":"1362:111:82","stateMutability":"view","virtual":true,"visibility":"public"},{"baseFunctions":[23138],"body":{"id":23912,"nodeType":"Block","src":"1605:544:82","statements":[{"assignments":[23849],"declarations":[{"constant":false,"id":23849,"mutability":"mutable","name":"shares","nameLocation":"1619:6:82","nodeType":"VariableDeclaration","scope":23912,"src":"1611:14:82","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":23848,"name":"uint256","nodeType":"ElementaryTypeName","src":"1611:7:82","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":23854,"initialValue":{"arguments":[{"id":23852,"name":"contract_","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":23842,"src":"1645:9:82","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"expression":{"id":23850,"name":"_vault","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":22979,"src":"1628:6:82","typeDescriptions":{"typeIdentifier":"t_contract$_IERC4626_$7127","typeString":"contract IERC4626"}},"id":23851,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"1635:9:82","memberName":"balanceOf","nodeType":"MemberAccess","referencedDeclaration":8636,"src":"1628:16:82","typeDescriptions":{"typeIdentifier":"t_function_external_view$_t_address_$returns$_t_uint256_$","typeString":"function (address) view external returns (uint256)"}},"id":23853,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"1628:27:82","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"VariableDeclarationStatement","src":"1611:44:82"},{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":23857,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":23855,"name":"shares","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":23849,"src":"1665:6:82","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"hexValue":"30","id":23856,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"1675:1:82","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"1665:11:82","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":23860,"nodeType":"IfStatement","src":"1661:25:82","trueBody":{"expression":{"hexValue":"30","id":23858,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"1685:1:82","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"functionReturnParameters":23847,"id":23859,"nodeType":"Return","src":"1678:8:82"}},{"assignments":[23863],"declarations":[{"constant":false,"id":23863,"mutability":"mutable","name":"vaultV2","nameLocation":"1701:7:82","nodeType":"VariableDeclaration","scope":23912,"src":"1692:16:82","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_contract$_IVaultV2_$23790","typeString":"contract IVaultV2"},"typeName":{"id":23862,"nodeType":"UserDefinedTypeName","pathNode":{"id":23861,"name":"IVaultV2","nameLocations":["1692:8:82"],"nodeType":"IdentifierPath","referencedDeclaration":23790,"src":"1692:8:82"},"referencedDeclaration":23790,"src":"1692:8:82","typeDescriptions":{"typeIdentifier":"t_contract$_IVaultV2_$23790","typeString":"contract IVaultV2"}},"visibility":"internal"}],"id":23870,"initialValue":{"arguments":[{"arguments":[{"id":23867,"name":"_vault","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":22979,"src":"1728:6:82","typeDescriptions":{"typeIdentifier":"t_contract$_IERC4626_$7127","typeString":"contract IERC4626"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_contract$_IERC4626_$7127","typeString":"contract IERC4626"}],"id":23866,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"1720:7:82","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":23865,"name":"address","nodeType":"ElementaryTypeName","src":"1720:7:82","typeDescriptions":{}}},"id":23868,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"1720:15:82","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"id":23864,"name":"IVaultV2","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":23790,"src":"1711:8:82","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_IVaultV2_$23790_$","typeString":"type(contract IVaultV2)"}},"id":23869,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"1711:25:82","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_contract$_IVaultV2_$23790","typeString":"contract IVaultV2"}},"nodeType":"VariableDeclarationStatement","src":"1692:44:82"},{"assignments":[23872],"declarations":[{"constant":false,"id":23872,"mutability":"mutable","name":"lastUpdate","nameLocation":"1749:10:82","nodeType":"VariableDeclaration","scope":23912,"src":"1742:17:82","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint64","typeString":"uint64"},"typeName":{"id":23871,"name":"uint64","nodeType":"ElementaryTypeName","src":"1742:6:82","typeDescriptions":{"typeIdentifier":"t_uint64","typeString":"uint64"}},"visibility":"internal"}],"id":23876,"initialValue":{"arguments":[],"expression":{"argumentTypes":[],"expression":{"id":23873,"name":"vaultV2","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":23863,"src":"1762:7:82","typeDescriptions":{"typeIdentifier":"t_contract$_IVaultV2_$23790","typeString":"contract IVaultV2"}},"id":23874,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"1770:10:82","memberName":"lastUpdate","nodeType":"MemberAccess","referencedDeclaration":23789,"src":"1762:18:82","typeDescriptions":{"typeIdentifier":"t_function_external_view$__$returns$_t_uint64_$","typeString":"function () view external returns (uint64)"}},"id":23875,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"1762:20:82","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint64","typeString":"uint64"}},"nodeType":"VariableDeclarationStatement","src":"1742:40:82"},{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":23882,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"commonType":{"typeIdentifier":"t_uint64","typeString":"uint64"},"id":23879,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":23877,"name":"lastUpdate","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":23872,"src":"1792:10:82","typeDescriptions":{"typeIdentifier":"t_uint64","typeString":"uint64"}},"nodeType":"BinaryOperation","operator":"+","rightExpression":{"id":23878,"name":"CACHED_TOTAL_ASSETS_MAX_AGE","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":23799,"src":"1805:27:82","typeDescriptions":{"typeIdentifier":"t_uint64","typeString":"uint64"}},"src":"1792:40:82","typeDescriptions":{"typeIdentifier":"t_uint64","typeString":"uint64"}},"nodeType":"BinaryOperation","operator":"<","rightExpression":{"expression":{"id":23880,"name":"block","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-4,"src":"1835:5:82","typeDescriptions":{"typeIdentifier":"t_magic_block","typeString":"block"}},"id":23881,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"1841:9:82","memberName":"timestamp","nodeType":"MemberAccess","src":"1835:15:82","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"1792:58:82","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"falseBody":{"id":23910,"nodeType":"Block","src":"1980:165:82","statements":[{"assignments":[23890],"declarations":[{"constant":false,"id":23890,"mutability":"mutable","name":"totAssets","nameLocation":"1996:9:82","nodeType":"VariableDeclaration","scope":23910,"src":"1988:17:82","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":23889,"name":"uint256","nodeType":"ElementaryTypeName","src":"1988:7:82","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":23897,"initialValue":{"arguments":[{"arguments":[],"expression":{"argumentTypes":[],"expression":{"id":23893,"name":"vaultV2","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":23863,"src":"2016:7:82","typeDescriptions":{"typeIdentifier":"t_contract$_IVaultV2_$23790","typeString":"contract IVaultV2"}},"id":23894,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"2024:12:82","memberName":"_totalAssets","nodeType":"MemberAccess","referencedDeclaration":23784,"src":"2016:20:82","typeDescriptions":{"typeIdentifier":"t_function_external_view$__$returns$_t_uint128_$","typeString":"function () view external returns (uint128)"}},"id":23895,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"2016:22:82","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint128","typeString":"uint128"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint128","typeString":"uint128"}],"id":23892,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"2008:7:82","typeDescriptions":{"typeIdentifier":"t_type$_t_uint256_$","typeString":"type(uint256)"},"typeName":{"id":23891,"name":"uint256","nodeType":"ElementaryTypeName","src":"2008:7:82","typeDescriptions":{}}},"id":23896,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"2008:31:82","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"VariableDeclarationStatement","src":"1988:51:82"},{"assignments":[23899],"declarations":[{"constant":false,"id":23899,"mutability":"mutable","name":"totShares","nameLocation":"2055:9:82","nodeType":"VariableDeclaration","scope":23910,"src":"2047:17:82","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":23898,"name":"uint256","nodeType":"ElementaryTypeName","src":"2047:7:82","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":23903,"initialValue":{"arguments":[],"expression":{"argumentTypes":[],"expression":{"id":23900,"name":"vaultV2","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":23863,"src":"2067:7:82","typeDescriptions":{"typeIdentifier":"t_contract$_IVaultV2_$23790","typeString":"contract IVaultV2"}},"id":23901,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"2075:11:82","memberName":"totalSupply","nodeType":"MemberAccess","referencedDeclaration":8628,"src":"2067:19:82","typeDescriptions":{"typeIdentifier":"t_function_external_view$__$returns$_t_uint256_$","typeString":"function () view external returns (uint256)"}},"id":23902,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"2067:21:82","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"VariableDeclarationStatement","src":"2047:41:82"},{"expression":{"arguments":[{"id":23906,"name":"shares","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":23849,"src":"2120:6:82","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"id":23907,"name":"totShares","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":23899,"src":"2128:9:82","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"expression":{"id":23904,"name":"totAssets","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":23890,"src":"2103:9:82","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":23905,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"2113:6:82","memberName":"mulDiv","nodeType":"MemberAccess","referencedDeclaration":11611,"src":"2103:16:82","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_uint256_$_t_uint256_$_t_uint256_$returns$_t_uint256_$attached_to$_t_uint256_$","typeString":"function (uint256,uint256,uint256) pure returns (uint256)"}},"id":23908,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"2103:35:82","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"functionReturnParameters":23847,"id":23909,"nodeType":"Return","src":"2096:42:82"}]},"id":23911,"nodeType":"IfStatement","src":"1788:357:82","trueBody":{"id":23888,"nodeType":"Block","src":"1852:122:82","statements":[{"expression":{"arguments":[{"id":23885,"name":"shares","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":23849,"src":"1960:6:82","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"expression":{"id":23883,"name":"vaultV2","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":23863,"src":"1938:7:82","typeDescriptions":{"typeIdentifier":"t_contract$_IVaultV2_$23790","typeString":"contract IVaultV2"}},"id":23884,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"1946:13:82","memberName":"previewRedeem","nodeType":"MemberAccess","referencedDeclaration":7114,"src":"1938:21:82","typeDescriptions":{"typeIdentifier":"t_function_external_view$_t_uint256_$returns$_t_uint256_$","typeString":"function (uint256) view external returns (uint256)"}},"id":23886,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"1938:29:82","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"functionReturnParameters":23847,"id":23887,"nodeType":"Return","src":"1931:36:82"}]}}]},"documentation":{"id":23840,"nodeType":"StructuredDocumentation","src":"1477:31:82","text":"@inheritdoc IInvestStrategy"},"functionSelector":"f3e0ffbf","id":23913,"implemented":true,"kind":"function","modifiers":[],"name":"totalAssets","nameLocation":"1520:11:82","nodeType":"FunctionDefinition","overrides":{"id":23844,"nodeType":"OverrideSpecifier","overrides":[],"src":"1571:8:82"},"parameters":{"id":23843,"nodeType":"ParameterList","parameters":[{"constant":false,"id":23842,"mutability":"mutable","name":"contract_","nameLocation":"1540:9:82","nodeType":"VariableDeclaration","scope":23913,"src":"1532:17:82","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":23841,"name":"address","nodeType":"ElementaryTypeName","src":"1532:7:82","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"1531:19:82"},"returnParameters":{"id":23847,"nodeType":"ParameterList","parameters":[{"constant":false,"id":23846,"mutability":"mutable","name":"assets","nameLocation":"1597:6:82","nodeType":"VariableDeclaration","scope":23913,"src":"1589:14:82","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":23845,"name":"uint256","nodeType":"ElementaryTypeName","src":"1589:7:82","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"1588:16:82"},"scope":23914,"src":"1511:638:82","stateMutability":"view","virtual":true,"visibility":"public"}],"scope":23915,"src":"941:1210:82","usedErrors":[22984,22986,22988],"usedEvents":[]}],"src":"39:2113:82"},"id":82},"contracts/strategies/SwapAssetInvestStrategy.sol":{"ast":{"absolutePath":"contracts/strategies/SwapAssetInvestStrategy.sol","exportedSymbols":{"IERC20Metadata":[9411],"IExposeStorage":[20649],"IInvestStrategy":[20725],"InvestStrategyClient":[15693],"Math":[12726],"StorageSlot":[11032],"SwapAssetInvestStrategy":[24509],"SwapLibrary":[1879]},"id":24510,"license":"Apache-2.0","nodeType":"SourceUnit","nodes":[{"id":23916,"literals":["solidity","^","0.8",".0"],"nodeType":"PragmaDirective","src":"39:23:83"},{"absolutePath":"@openzeppelin/contracts/interfaces/IERC20Metadata.sol","file":"@openzeppelin/contracts/interfaces/IERC20Metadata.sol","id":23918,"nameLocation":"-1:-1:-1","nodeType":"ImportDirective","scope":24510,"sourceUnit":6958,"src":"64:85:83","symbolAliases":[{"foreign":{"id":23917,"name":"IERC20Metadata","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9411,"src":"72:14:83","typeDescriptions":{}},"nameLocation":"-1:-1:-1"}],"unitAlias":""},{"absolutePath":"@ensuro/swaplibrary/contracts/SwapLibrary.sol","file":"@ensuro/swaplibrary/contracts/SwapLibrary.sol","id":23920,"nameLocation":"-1:-1:-1","nodeType":"ImportDirective","scope":24510,"sourceUnit":1880,"src":"150:74:83","symbolAliases":[{"foreign":{"id":23919,"name":"SwapLibrary","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1879,"src":"158:11:83","typeDescriptions":{}},"nameLocation":"-1:-1:-1"}],"unitAlias":""},{"absolutePath":"contracts/interfaces/IInvestStrategy.sol","file":"../interfaces/IInvestStrategy.sol","id":23922,"nameLocation":"-1:-1:-1","nodeType":"ImportDirective","scope":24510,"sourceUnit":20726,"src":"225:66:83","symbolAliases":[{"foreign":{"id":23921,"name":"IInvestStrategy","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":20725,"src":"233:15:83","typeDescriptions":{}},"nameLocation":"-1:-1:-1"}],"unitAlias":""},{"absolutePath":"@openzeppelin/contracts/utils/StorageSlot.sol","file":"@openzeppelin/contracts/utils/StorageSlot.sol","id":23924,"nameLocation":"-1:-1:-1","nodeType":"ImportDirective","scope":24510,"sourceUnit":11033,"src":"292:74:83","symbolAliases":[{"foreign":{"id":23923,"name":"StorageSlot","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":11032,"src":"300:11:83","typeDescriptions":{}},"nameLocation":"-1:-1:-1"}],"unitAlias":""},{"absolutePath":"@openzeppelin/contracts/utils/math/Math.sol","file":"@openzeppelin/contracts/utils/math/Math.sol","id":23926,"nameLocation":"-1:-1:-1","nodeType":"ImportDirective","scope":24510,"sourceUnit":12727,"src":"367:65:83","symbolAliases":[{"foreign":{"id":23925,"name":"Math","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":12726,"src":"375:4:83","typeDescriptions":{}},"nameLocation":"-1:-1:-1"}],"unitAlias":""},{"absolutePath":"contracts/interfaces/IExposeStorage.sol","file":"../interfaces/IExposeStorage.sol","id":23928,"nameLocation":"-1:-1:-1","nodeType":"ImportDirective","scope":24510,"sourceUnit":20650,"src":"433:64:83","symbolAliases":[{"foreign":{"id":23927,"name":"IExposeStorage","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":20649,"src":"441:14:83","typeDescriptions":{}},"nameLocation":"-1:-1:-1"}],"unitAlias":""},{"absolutePath":"contracts/InvestStrategyClient.sol","file":"../InvestStrategyClient.sol","id":23930,"nameLocation":"-1:-1:-1","nodeType":"ImportDirective","scope":24510,"sourceUnit":15694,"src":"498:65:83","symbolAliases":[{"foreign":{"id":23929,"name":"InvestStrategyClient","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":15693,"src":"506:20:83","typeDescriptions":{}},"nameLocation":"-1:-1:-1"}],"unitAlias":""},{"abstract":true,"baseContracts":[{"baseName":{"id":23932,"name":"IInvestStrategy","nameLocations":["865:15:83"],"nodeType":"IdentifierPath","referencedDeclaration":20725,"src":"865:15:83"},"id":23933,"nodeType":"InheritanceSpecifier","src":"865:15:83"}],"canonicalName":"SwapAssetInvestStrategy","contractDependencies":[],"contractKind":"contract","documentation":{"id":23931,"nodeType":"StructuredDocumentation","src":"565:254:83","text":" @title SwapAssetInvestStrategy\n @dev Strategy that invests/deinvests by swapping into another token. Abstract contract, childs must define how\n      to get the swap price.\n @custom:security-contact security@ensuro.co\n @author Ensuro"},"fullyImplemented":false,"id":24509,"linearizedBaseContracts":[24509,20725],"name":"SwapAssetInvestStrategy","nameLocation":"838:23:83","nodeType":"ContractDefinition","nodes":[{"global":false,"id":23937,"libraryName":{"id":23934,"name":"SwapLibrary","nameLocations":["891:11:83"],"nodeType":"IdentifierPath","referencedDeclaration":1879,"src":"891:11:83"},"nodeType":"UsingForDirective","src":"885:45:83","typeName":{"id":23936,"nodeType":"UserDefinedTypeName","pathNode":{"id":23935,"name":"SwapLibrary.SwapConfig","nameLocations":["907:11:83","919:10:83"],"nodeType":"IdentifierPath","referencedDeclaration":1113,"src":"907:22:83"},"referencedDeclaration":1113,"src":"907:22:83","typeDescriptions":{"typeIdentifier":"t_struct$_SwapConfig_$1113_storage_ptr","typeString":"struct SwapLibrary.SwapConfig"}}},{"constant":true,"id":23940,"mutability":"constant","name":"WAD","nameLocation":"960:3:83","nodeType":"VariableDeclaration","scope":24509,"src":"934:36:83","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":23938,"name":"uint256","nodeType":"ElementaryTypeName","src":"934:7:83","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"value":{"hexValue":"31653138","id":23939,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"966:4:83","typeDescriptions":{"typeIdentifier":"t_rational_1000000000000000000_by_1","typeString":"int_const 1000000000000000000"},"value":"1e18"},"visibility":"internal"},{"constant":false,"id":23946,"mutability":"immutable","name":"__self","nameLocation":"1002:6:83","nodeType":"VariableDeclaration","scope":24509,"src":"975:49:83","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":23941,"name":"address","nodeType":"ElementaryTypeName","src":"975:7:83","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"value":{"arguments":[{"id":23944,"name":"this","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-28,"src":"1019:4:83","typeDescriptions":{"typeIdentifier":"t_contract$_SwapAssetInvestStrategy_$24509","typeString":"contract SwapAssetInvestStrategy"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_contract$_SwapAssetInvestStrategy_$24509","typeString":"contract SwapAssetInvestStrategy"}],"id":23943,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"1011:7:83","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":23942,"name":"address","nodeType":"ElementaryTypeName","src":"1011:7:83","typeDescriptions":{}}},"id":23945,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"1011:13:83","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"baseFunctions":[20724],"constant":false,"functionSelector":"5b9a4c35","id":23952,"mutability":"immutable","name":"storageSlot","nameLocation":"1053:11:83","nodeType":"VariableDeclaration","scope":24509,"src":"1028:81:83","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":23947,"name":"bytes32","nodeType":"ElementaryTypeName","src":"1028:7:83","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"value":{"arguments":[{"id":23950,"name":"this","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-28,"src":"1104:4:83","typeDescriptions":{"typeIdentifier":"t_contract$_SwapAssetInvestStrategy_$24509","typeString":"contract SwapAssetInvestStrategy"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_contract$_SwapAssetInvestStrategy_$24509","typeString":"contract SwapAssetInvestStrategy"}],"expression":{"id":23948,"name":"InvestStrategyClient","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":15693,"src":"1067:20:83","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_InvestStrategyClient_$15693_$","typeString":"type(library InvestStrategyClient)"}},"id":23949,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"1088:15:83","memberName":"makeStorageSlot","nodeType":"MemberAccess","referencedDeclaration":15638,"src":"1067:36:83","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_contract$_IInvestStrategy_$20725_$returns$_t_bytes32_$","typeString":"function (contract IInvestStrategy) pure returns (bytes32)"}},"id":23951,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"1067:42:83","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"public"},{"constant":false,"id":23955,"mutability":"immutable","name":"_asset","nameLocation":"1148:6:83","nodeType":"VariableDeclaration","scope":24509,"src":"1114:40:83","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_contract$_IERC20Metadata_$9411","typeString":"contract IERC20Metadata"},"typeName":{"id":23954,"nodeType":"UserDefinedTypeName","pathNode":{"id":23953,"name":"IERC20Metadata","nameLocations":["1114:14:83"],"nodeType":"IdentifierPath","referencedDeclaration":9411,"src":"1114:14:83"},"referencedDeclaration":9411,"src":"1114:14:83","typeDescriptions":{"typeIdentifier":"t_contract$_IERC20Metadata_$9411","typeString":"contract IERC20Metadata"}},"visibility":"internal"},{"constant":false,"id":23958,"mutability":"immutable","name":"_investAsset","nameLocation":"1192:12:83","nodeType":"VariableDeclaration","scope":24509,"src":"1158:46:83","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_contract$_IERC20Metadata_$9411","typeString":"contract IERC20Metadata"},"typeName":{"id":23957,"nodeType":"UserDefinedTypeName","pathNode":{"id":23956,"name":"IERC20Metadata","nameLocations":["1158:14:83"],"nodeType":"IdentifierPath","referencedDeclaration":9411,"src":"1158:14:83"},"referencedDeclaration":9411,"src":"1158:14:83","typeDescriptions":{"typeIdentifier":"t_contract$_IERC20Metadata_$9411","typeString":"contract IERC20Metadata"}},"visibility":"internal"},{"anonymous":false,"eventSelector":"ca7f7aa563866a1d31c74deba224724d1da9c35cbb6f783f2ccf0182f91e34f8","id":23966,"name":"SwapConfigChanged","nameLocation":"1215:17:83","nodeType":"EventDefinition","parameters":{"id":23965,"nodeType":"ParameterList","parameters":[{"constant":false,"id":23961,"indexed":false,"mutability":"mutable","name":"oldConfig","nameLocation":"1256:9:83","nodeType":"VariableDeclaration","scope":23966,"src":"1233:32:83","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_struct$_SwapConfig_$1113_memory_ptr","typeString":"struct SwapLibrary.SwapConfig"},"typeName":{"id":23960,"nodeType":"UserDefinedTypeName","pathNode":{"id":23959,"name":"SwapLibrary.SwapConfig","nameLocations":["1233:11:83","1245:10:83"],"nodeType":"IdentifierPath","referencedDeclaration":1113,"src":"1233:22:83"},"referencedDeclaration":1113,"src":"1233:22:83","typeDescriptions":{"typeIdentifier":"t_struct$_SwapConfig_$1113_storage_ptr","typeString":"struct SwapLibrary.SwapConfig"}},"visibility":"internal"},{"constant":false,"id":23964,"indexed":false,"mutability":"mutable","name":"newConfig","nameLocation":"1290:9:83","nodeType":"VariableDeclaration","scope":23966,"src":"1267:32:83","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_struct$_SwapConfig_$1113_memory_ptr","typeString":"struct SwapLibrary.SwapConfig"},"typeName":{"id":23963,"nodeType":"UserDefinedTypeName","pathNode":{"id":23962,"name":"SwapLibrary.SwapConfig","nameLocations":["1267:11:83","1279:10:83"],"nodeType":"IdentifierPath","referencedDeclaration":1113,"src":"1267:22:83"},"referencedDeclaration":1113,"src":"1267:22:83","typeDescriptions":{"typeIdentifier":"t_struct$_SwapConfig_$1113_storage_ptr","typeString":"struct SwapLibrary.SwapConfig"}},"visibility":"internal"}],"src":"1232:68:83"},"src":"1209:92:83"},{"errorSelector":"aafc462c","id":23968,"name":"CanBeCalledOnlyThroughDelegateCall","nameLocation":"1311:34:83","nodeType":"ErrorDefinition","parameters":{"id":23967,"nodeType":"ParameterList","parameters":[],"src":"1345:2:83"},"src":"1305:43:83"},{"errorSelector":"8542eda2","id":23970,"name":"CannotDisconnectWithAssets","nameLocation":"1357:26:83","nodeType":"ErrorDefinition","parameters":{"id":23969,"nodeType":"ParameterList","parameters":[],"src":"1383:2:83"},"src":"1351:35:83"},{"errorSelector":"50701b61","id":23972,"name":"NoExtraDataAllowed","nameLocation":"1395:18:83","nodeType":"ErrorDefinition","parameters":{"id":23971,"nodeType":"ParameterList","parameters":[],"src":"1413:2:83"},"src":"1389:27:83"},{"errorSelector":"c891add2","id":23974,"name":"InvalidAsset","nameLocation":"1425:12:83","nodeType":"ErrorDefinition","parameters":{"id":23973,"nodeType":"ParameterList","parameters":[],"src":"1437:2:83"},"src":"1419:21:83"},{"canonicalName":"SwapAssetInvestStrategy.ForwardMethods","id":23976,"members":[{"id":23975,"name":"setSwapConfig","nameLocation":"1470:13:83","nodeType":"EnumValue","src":"1470:13:83"}],"name":"ForwardMethods","nameLocation":"1449:14:83","nodeType":"EnumDefinition","src":"1444:43:83"},{"body":{"id":23989,"nodeType":"Block","src":"1516:90:83","statements":[{"condition":{"commonType":{"typeIdentifier":"t_address","typeString":"address"},"id":23983,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"arguments":[{"id":23980,"name":"this","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-28,"src":"1534:4:83","typeDescriptions":{"typeIdentifier":"t_contract$_SwapAssetInvestStrategy_$24509","typeString":"contract SwapAssetInvestStrategy"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_contract$_SwapAssetInvestStrategy_$24509","typeString":"contract SwapAssetInvestStrategy"}],"id":23979,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"1526:7:83","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":23978,"name":"address","nodeType":"ElementaryTypeName","src":"1526:7:83","typeDescriptions":{}}},"id":23981,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"1526:13:83","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"id":23982,"name":"__self","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":23946,"src":"1543:6:83","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"src":"1526:23:83","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":23987,"nodeType":"IfStatement","src":"1522:72:83","trueBody":{"errorCall":{"arguments":[],"expression":{"argumentTypes":[],"id":23984,"name":"CanBeCalledOnlyThroughDelegateCall","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":23968,"src":"1558:34:83","typeDescriptions":{"typeIdentifier":"t_function_error_pure$__$returns$_t_error_$","typeString":"function () pure returns (error)"}},"id":23985,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"1558:36:83","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_error","typeString":"error"}},"id":23986,"nodeType":"RevertStatement","src":"1551:43:83"}},{"id":23988,"nodeType":"PlaceholderStatement","src":"1600:1:83"}]},"id":23990,"name":"onlyDelegCall","nameLocation":"1500:13:83","nodeType":"ModifierDefinition","parameters":{"id":23977,"nodeType":"ParameterList","parameters":[],"src":"1513:2:83"},"src":"1491:115:83","virtual":false,"visibility":"internal"},{"body":{"id":24036,"nodeType":"Block","src":"1948:226:83","statements":[{"expression":{"arguments":[{"commonType":{"typeIdentifier":"t_uint8","typeString":"uint8"},"id":24005,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"arguments":[],"expression":{"argumentTypes":[],"expression":{"id":24001,"name":"asset_","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":23994,"src":"1962:6:83","typeDescriptions":{"typeIdentifier":"t_contract$_IERC20Metadata_$9411","typeString":"contract IERC20Metadata"}},"id":24002,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"1969:8:83","memberName":"decimals","nodeType":"MemberAccess","referencedDeclaration":9410,"src":"1962:15:83","typeDescriptions":{"typeIdentifier":"t_function_external_view$__$returns$_t_uint8_$","typeString":"function () view external returns (uint8)"}},"id":24003,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"1962:17:83","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}},"nodeType":"BinaryOperation","operator":"<=","rightExpression":{"hexValue":"3138","id":24004,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"1983:2:83","typeDescriptions":{"typeIdentifier":"t_rational_18_by_1","typeString":"int_const 18"},"value":"18"},"src":"1962:23:83","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},{"arguments":[],"expression":{"argumentTypes":[],"id":24006,"name":"InvalidAsset","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":23974,"src":"1987:12:83","typeDescriptions":{"typeIdentifier":"t_function_error_pure$__$returns$_t_error_$","typeString":"function () pure returns (error)"}},"id":24007,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"1987:14:83","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_error","typeString":"error"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_error","typeString":"error"}],"id":24000,"name":"require","nodeType":"Identifier","overloadedDeclarations":[-18,-18,-18],"referencedDeclaration":-18,"src":"1954:7:83","typeDescriptions":{"typeIdentifier":"t_function_require_pure$_t_bool_$_t_error_$returns$__$","typeString":"function (bool,error) pure"}},"id":24008,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"1954:48:83","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":24009,"nodeType":"ExpressionStatement","src":"1954:48:83"},{"expression":{"arguments":[{"commonType":{"typeIdentifier":"t_uint8","typeString":"uint8"},"id":24015,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"arguments":[],"expression":{"argumentTypes":[],"expression":{"id":24011,"name":"investAsset_","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":23997,"src":"2016:12:83","typeDescriptions":{"typeIdentifier":"t_contract$_IERC20Metadata_$9411","typeString":"contract IERC20Metadata"}},"id":24012,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"2029:8:83","memberName":"decimals","nodeType":"MemberAccess","referencedDeclaration":9410,"src":"2016:21:83","typeDescriptions":{"typeIdentifier":"t_function_external_view$__$returns$_t_uint8_$","typeString":"function () view external returns (uint8)"}},"id":24013,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"2016:23:83","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}},"nodeType":"BinaryOperation","operator":"<=","rightExpression":{"hexValue":"3138","id":24014,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"2043:2:83","typeDescriptions":{"typeIdentifier":"t_rational_18_by_1","typeString":"int_const 18"},"value":"18"},"src":"2016:29:83","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},{"arguments":[],"expression":{"argumentTypes":[],"id":24016,"name":"InvalidAsset","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":23974,"src":"2047:12:83","typeDescriptions":{"typeIdentifier":"t_function_error_pure$__$returns$_t_error_$","typeString":"function () pure returns (error)"}},"id":24017,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"2047:14:83","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_error","typeString":"error"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_error","typeString":"error"}],"id":24010,"name":"require","nodeType":"Identifier","overloadedDeclarations":[-18,-18,-18],"referencedDeclaration":-18,"src":"2008:7:83","typeDescriptions":{"typeIdentifier":"t_function_require_pure$_t_bool_$_t_error_$returns$__$","typeString":"function (bool,error) pure"}},"id":24018,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"2008:54:83","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":24019,"nodeType":"ExpressionStatement","src":"2008:54:83"},{"expression":{"arguments":[{"commonType":{"typeIdentifier":"t_contract$_IERC20Metadata_$9411","typeString":"contract IERC20Metadata"},"id":24023,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":24021,"name":"asset_","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":23994,"src":"2076:6:83","typeDescriptions":{"typeIdentifier":"t_contract$_IERC20Metadata_$9411","typeString":"contract IERC20Metadata"}},"nodeType":"BinaryOperation","operator":"!=","rightExpression":{"id":24022,"name":"investAsset_","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":23997,"src":"2086:12:83","typeDescriptions":{"typeIdentifier":"t_contract$_IERC20Metadata_$9411","typeString":"contract IERC20Metadata"}},"src":"2076:22:83","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},{"arguments":[],"expression":{"argumentTypes":[],"id":24024,"name":"InvalidAsset","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":23974,"src":"2100:12:83","typeDescriptions":{"typeIdentifier":"t_function_error_pure$__$returns$_t_error_$","typeString":"function () pure returns (error)"}},"id":24025,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"2100:14:83","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_error","typeString":"error"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_error","typeString":"error"}],"id":24020,"name":"require","nodeType":"Identifier","overloadedDeclarations":[-18,-18,-18],"referencedDeclaration":-18,"src":"2068:7:83","typeDescriptions":{"typeIdentifier":"t_function_require_pure$_t_bool_$_t_error_$returns$__$","typeString":"function (bool,error) pure"}},"id":24026,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"2068:47:83","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":24027,"nodeType":"ExpressionStatement","src":"2068:47:83"},{"expression":{"id":24030,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":24028,"name":"_asset","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":23955,"src":"2121:6:83","typeDescriptions":{"typeIdentifier":"t_contract$_IERC20Metadata_$9411","typeString":"contract IERC20Metadata"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"id":24029,"name":"asset_","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":23994,"src":"2130:6:83","typeDescriptions":{"typeIdentifier":"t_contract$_IERC20Metadata_$9411","typeString":"contract IERC20Metadata"}},"src":"2121:15:83","typeDescriptions":{"typeIdentifier":"t_contract$_IERC20Metadata_$9411","typeString":"contract IERC20Metadata"}},"id":24031,"nodeType":"ExpressionStatement","src":"2121:15:83"},{"expression":{"id":24034,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":24032,"name":"_investAsset","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":23958,"src":"2142:12:83","typeDescriptions":{"typeIdentifier":"t_contract$_IERC20Metadata_$9411","typeString":"contract IERC20Metadata"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"id":24033,"name":"investAsset_","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":23997,"src":"2157:12:83","typeDescriptions":{"typeIdentifier":"t_contract$_IERC20Metadata_$9411","typeString":"contract IERC20Metadata"}},"src":"2142:27:83","typeDescriptions":{"typeIdentifier":"t_contract$_IERC20Metadata_$9411","typeString":"contract IERC20Metadata"}},"id":24035,"nodeType":"ExpressionStatement","src":"2142:27:83"}]},"documentation":{"id":23991,"nodeType":"StructuredDocumentation","src":"1610:271:83","text":" @dev Constructor of the strategy\n @param asset_ The address of the underlying token used for accounting, depositing, and withdrawing.\n @param investAsset_ The address of the tokens hold by the strategy. Typically a rebasing yield bearing token"},"id":24037,"implemented":true,"kind":"constructor","modifiers":[],"name":"","nameLocation":"-1:-1:-1","nodeType":"FunctionDefinition","parameters":{"id":23998,"nodeType":"ParameterList","parameters":[{"constant":false,"id":23994,"mutability":"mutable","name":"asset_","nameLocation":"1911:6:83","nodeType":"VariableDeclaration","scope":24037,"src":"1896:21:83","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_contract$_IERC20Metadata_$9411","typeString":"contract IERC20Metadata"},"typeName":{"id":23993,"nodeType":"UserDefinedTypeName","pathNode":{"id":23992,"name":"IERC20Metadata","nameLocations":["1896:14:83"],"nodeType":"IdentifierPath","referencedDeclaration":9411,"src":"1896:14:83"},"referencedDeclaration":9411,"src":"1896:14:83","typeDescriptions":{"typeIdentifier":"t_contract$_IERC20Metadata_$9411","typeString":"contract IERC20Metadata"}},"visibility":"internal"},{"constant":false,"id":23997,"mutability":"mutable","name":"investAsset_","nameLocation":"1934:12:83","nodeType":"VariableDeclaration","scope":24037,"src":"1919:27:83","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_contract$_IERC20Metadata_$9411","typeString":"contract IERC20Metadata"},"typeName":{"id":23996,"nodeType":"UserDefinedTypeName","pathNode":{"id":23995,"name":"IERC20Metadata","nameLocations":["1919:14:83"],"nodeType":"IdentifierPath","referencedDeclaration":9411,"src":"1919:14:83"},"referencedDeclaration":9411,"src":"1919:14:83","typeDescriptions":{"typeIdentifier":"t_contract$_IERC20Metadata_$9411","typeString":"contract IERC20Metadata"}},"visibility":"internal"}],"src":"1895:52:83"},"returnParameters":{"id":23999,"nodeType":"ParameterList","parameters":[],"src":"1948:0:83"},"scope":24509,"src":"1884:290:83","stateMutability":"nonpayable","virtual":false,"visibility":"internal"},{"body":{"id":24054,"nodeType":"Block","src":"2254:47:83","statements":[{"expression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":24052,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"hexValue":"3130","id":24045,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"2267:2:83","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":24050,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"hexValue":"3138","id":24046,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"2274:2:83","typeDescriptions":{"typeIdentifier":"t_rational_18_by_1","typeString":"int_const 18"},"value":"18"},"nodeType":"BinaryOperation","operator":"-","rightExpression":{"arguments":[],"expression":{"argumentTypes":[],"expression":{"id":24047,"name":"token","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":24040,"src":"2279:5:83","typeDescriptions":{"typeIdentifier":"t_contract$_IERC20Metadata_$9411","typeString":"contract IERC20Metadata"}},"id":24048,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"2285:8:83","memberName":"decimals","nodeType":"MemberAccess","referencedDeclaration":9410,"src":"2279:14:83","typeDescriptions":{"typeIdentifier":"t_function_external_view$__$returns$_t_uint8_$","typeString":"function () view external returns (uint8)"}},"id":24049,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"2279:16:83","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}},"src":"2274:21:83","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}}],"id":24051,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"2273:23:83","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}},"src":"2267:29:83","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"functionReturnParameters":24044,"id":24053,"nodeType":"Return","src":"2260:36:83"}]},"id":24055,"implemented":true,"kind":"function","modifiers":[],"name":"_toWadFactor","nameLocation":"2187:12:83","nodeType":"FunctionDefinition","parameters":{"id":24041,"nodeType":"ParameterList","parameters":[{"constant":false,"id":24040,"mutability":"mutable","name":"token","nameLocation":"2215:5:83","nodeType":"VariableDeclaration","scope":24055,"src":"2200:20:83","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_contract$_IERC20Metadata_$9411","typeString":"contract IERC20Metadata"},"typeName":{"id":24039,"nodeType":"UserDefinedTypeName","pathNode":{"id":24038,"name":"IERC20Metadata","nameLocations":["2200:14:83"],"nodeType":"IdentifierPath","referencedDeclaration":9411,"src":"2200:14:83"},"referencedDeclaration":9411,"src":"2200:14:83","typeDescriptions":{"typeIdentifier":"t_contract$_IERC20Metadata_$9411","typeString":"contract IERC20Metadata"}},"visibility":"internal"}],"src":"2199:22:83"},"returnParameters":{"id":24044,"nodeType":"ParameterList","parameters":[{"constant":false,"id":24043,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":24055,"src":"2245:7:83","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":24042,"name":"uint256","nodeType":"ElementaryTypeName","src":"2245:7:83","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"2244:9:83"},"scope":24509,"src":"2178:123:83","stateMutability":"view","virtual":false,"visibility":"internal"},{"baseFunctions":[20658],"body":{"id":24079,"nodeType":"Block","src":"2419:109:83","statements":[{"expression":{"arguments":[{"arguments":[{"expression":{"expression":{"id":24067,"name":"SwapLibrary","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1879,"src":"2463:11:83","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_SwapLibrary_$1879_$","typeString":"type(library SwapLibrary)"}},"id":24068,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"2475:12:83","memberName":"SwapProtocol","nodeType":"MemberAccess","referencedDeclaration":1105,"src":"2463:24:83","typeDescriptions":{"typeIdentifier":"t_type$_t_enum$_SwapProtocol_$1105_$","typeString":"type(enum SwapLibrary.SwapProtocol)"}},"id":24069,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberLocation":"2488:9:83","memberName":"undefined","nodeType":"MemberAccess","referencedDeclaration":1102,"src":"2463:34:83","typeDescriptions":{"typeIdentifier":"t_enum$_SwapProtocol_$1105","typeString":"enum SwapLibrary.SwapProtocol"}},{"hexValue":"30","id":24070,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"2499:1:83","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},{"arguments":[{"hexValue":"","id":24073,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"2508:2:83","typeDescriptions":{"typeIdentifier":"t_stringliteral_c5d2460186f7233c927e7db2dcc703c0e500b653ca82273b7bfad8045d85a470","typeString":"literal_string \"\""},"value":""}],"expression":{"argumentTypes":[{"typeIdentifier":"t_stringliteral_c5d2460186f7233c927e7db2dcc703c0e500b653ca82273b7bfad8045d85a470","typeString":"literal_string \"\""}],"id":24072,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"2502:5:83","typeDescriptions":{"typeIdentifier":"t_type$_t_bytes_storage_ptr_$","typeString":"type(bytes storage pointer)"},"typeName":{"id":24071,"name":"bytes","nodeType":"ElementaryTypeName","src":"2502:5:83","typeDescriptions":{}}},"id":24074,"isConstant":false,"isLValue":false,"isPure":true,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"2502:9:83","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_enum$_SwapProtocol_$1105","typeString":"enum SwapLibrary.SwapProtocol"},{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}],"expression":{"id":24065,"name":"SwapLibrary","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1879,"src":"2440:11:83","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_SwapLibrary_$1879_$","typeString":"type(library SwapLibrary)"}},"id":24066,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"2452:10:83","memberName":"SwapConfig","nodeType":"MemberAccess","referencedDeclaration":1113,"src":"2440:22:83","typeDescriptions":{"typeIdentifier":"t_type$_t_struct$_SwapConfig_$1113_storage_ptr_$","typeString":"type(struct SwapLibrary.SwapConfig storage pointer)"}},"id":24075,"isConstant":false,"isLValue":false,"isPure":true,"kind":"structConstructorCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"2440:72:83","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_struct$_SwapConfig_$1113_memory_ptr","typeString":"struct SwapLibrary.SwapConfig memory"}},{"id":24076,"name":"initData","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":24058,"src":"2514:8:83","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_struct$_SwapConfig_$1113_memory_ptr","typeString":"struct SwapLibrary.SwapConfig memory"},{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}],"id":24064,"name":"_setSwapConfig","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":24405,"src":"2425:14:83","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_struct$_SwapConfig_$1113_memory_ptr_$_t_bytes_memory_ptr_$returns$__$","typeString":"function (struct SwapLibrary.SwapConfig memory,bytes memory)"}},"id":24077,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"2425:98:83","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":24078,"nodeType":"ExpressionStatement","src":"2425:98:83"}]},"documentation":{"id":24056,"nodeType":"StructuredDocumentation","src":"2305:31:83","text":"@inheritdoc IInvestStrategy"},"functionSelector":"9cd47128","id":24080,"implemented":true,"kind":"function","modifiers":[{"id":24062,"kind":"modifierInvocation","modifierName":{"id":24061,"name":"onlyDelegCall","nameLocations":["2405:13:83"],"nodeType":"IdentifierPath","referencedDeclaration":23990,"src":"2405:13:83"},"nodeType":"ModifierInvocation","src":"2405:13:83"}],"name":"connect","nameLocation":"2348:7:83","nodeType":"FunctionDefinition","overrides":{"id":24060,"nodeType":"OverrideSpecifier","overrides":[],"src":"2396:8:83"},"parameters":{"id":24059,"nodeType":"ParameterList","parameters":[{"constant":false,"id":24058,"mutability":"mutable","name":"initData","nameLocation":"2369:8:83","nodeType":"VariableDeclaration","scope":24080,"src":"2356:21:83","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes"},"typeName":{"id":24057,"name":"bytes","nodeType":"ElementaryTypeName","src":"2356:5:83","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"}],"src":"2355:23:83"},"returnParameters":{"id":24063,"nodeType":"ParameterList","parameters":[],"src":"2419:0:83"},"scope":24509,"src":"2339:189:83","stateMutability":"nonpayable","virtual":true,"visibility":"external"},{"baseFunctions":[20664],"body":{"id":24104,"nodeType":"Block","src":"2638:93:83","statements":[{"condition":{"commonType":{"typeIdentifier":"t_bool","typeString":"bool"},"id":24099,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":24090,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"UnaryOperation","operator":"!","prefix":true,"src":"2648:6:83","subExpression":{"id":24089,"name":"force","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":24083,"src":"2649:5:83","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"nodeType":"BinaryOperation","operator":"&&","rightExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":24098,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"arguments":[{"arguments":[{"id":24094,"name":"this","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-28,"src":"2678:4:83","typeDescriptions":{"typeIdentifier":"t_contract$_SwapAssetInvestStrategy_$24509","typeString":"contract SwapAssetInvestStrategy"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_contract$_SwapAssetInvestStrategy_$24509","typeString":"contract SwapAssetInvestStrategy"}],"id":24093,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"2670:7:83","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":24092,"name":"address","nodeType":"ElementaryTypeName","src":"2670:7:83","typeDescriptions":{}}},"id":24095,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"2670:13:83","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"id":24091,"name":"totalAssets","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":24239,"src":"2658:11:83","typeDescriptions":{"typeIdentifier":"t_function_internal_view$_t_address_$returns$_t_uint256_$","typeString":"function (address) view returns (uint256)"}},"id":24096,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"2658:26:83","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"!=","rightExpression":{"hexValue":"30","id":24097,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"2688:1:83","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"2658:31:83","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"src":"2648:41:83","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":24103,"nodeType":"IfStatement","src":"2644:82:83","trueBody":{"errorCall":{"arguments":[],"expression":{"argumentTypes":[],"id":24100,"name":"CannotDisconnectWithAssets","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":23970,"src":"2698:26:83","typeDescriptions":{"typeIdentifier":"t_function_error_pure$__$returns$_t_error_$","typeString":"function () pure returns (error)"}},"id":24101,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"2698:28:83","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_error","typeString":"error"}},"id":24102,"nodeType":"RevertStatement","src":"2691:35:83"}}]},"documentation":{"id":24081,"nodeType":"StructuredDocumentation","src":"2532:31:83","text":"@inheritdoc IInvestStrategy"},"functionSelector":"5a117456","id":24105,"implemented":true,"kind":"function","modifiers":[{"id":24087,"kind":"modifierInvocation","modifierName":{"id":24086,"name":"onlyDelegCall","nameLocations":["2624:13:83"],"nodeType":"IdentifierPath","referencedDeclaration":23990,"src":"2624:13:83"},"nodeType":"ModifierInvocation","src":"2624:13:83"}],"name":"disconnect","nameLocation":"2575:10:83","nodeType":"FunctionDefinition","overrides":{"id":24085,"nodeType":"OverrideSpecifier","overrides":[],"src":"2615:8:83"},"parameters":{"id":24084,"nodeType":"ParameterList","parameters":[{"constant":false,"id":24083,"mutability":"mutable","name":"force","nameLocation":"2591:5:83","nodeType":"VariableDeclaration","scope":24105,"src":"2586:10:83","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":24082,"name":"bool","nodeType":"ElementaryTypeName","src":"2586:4:83","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"}],"src":"2585:12:83"},"returnParameters":{"id":24088,"nodeType":"ParameterList","parameters":[],"src":"2638:0:83"},"scope":24509,"src":"2566:165:83","stateMutability":"nonpayable","virtual":true,"visibility":"external"},{"baseFunctions":[20718],"body":{"id":24118,"nodeType":"Block","src":"2856:109:83","statements":[{"expression":{"arguments":[{"id":24115,"name":"contract_","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":24108,"src":"2881:9:83","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"id":24114,"name":"totalAssets","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":24239,"src":"2869:11:83","typeDescriptions":{"typeIdentifier":"t_function_internal_view$_t_address_$returns$_t_uint256_$","typeString":"function (address) view returns (uint256)"}},"id":24116,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"2869:22:83","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"functionReturnParameters":24113,"id":24117,"nodeType":"Return","src":"2862:29:83"}]},"documentation":{"id":24106,"nodeType":"StructuredDocumentation","src":"2735:31:83","text":"@inheritdoc IInvestStrategy"},"functionSelector":"ce96cb77","id":24119,"implemented":true,"kind":"function","modifiers":[],"name":"maxWithdraw","nameLocation":"2778:11:83","nodeType":"FunctionDefinition","overrides":{"id":24110,"nodeType":"OverrideSpecifier","overrides":[],"src":"2829:8:83"},"parameters":{"id":24109,"nodeType":"ParameterList","parameters":[{"constant":false,"id":24108,"mutability":"mutable","name":"contract_","nameLocation":"2798:9:83","nodeType":"VariableDeclaration","scope":24119,"src":"2790:17:83","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":24107,"name":"address","nodeType":"ElementaryTypeName","src":"2790:7:83","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"2789:19:83"},"returnParameters":{"id":24113,"nodeType":"ParameterList","parameters":[{"constant":false,"id":24112,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":24119,"src":"2847:7:83","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":24111,"name":"uint256","nodeType":"ElementaryTypeName","src":"2847:7:83","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"2846:9:83"},"scope":24509,"src":"2769:196:83","stateMutability":"view","virtual":true,"visibility":"public"},{"baseFunctions":[20710],"body":{"id":24134,"nodeType":"Block","src":"3093:104:83","statements":[{"expression":{"expression":{"arguments":[{"id":24130,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"3111:7:83","typeDescriptions":{"typeIdentifier":"t_type$_t_uint256_$","typeString":"type(uint256)"},"typeName":{"id":24129,"name":"uint256","nodeType":"ElementaryTypeName","src":"3111:7:83","typeDescriptions":{}}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_type$_t_uint256_$","typeString":"type(uint256)"}],"id":24128,"name":"type","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-27,"src":"3106:4:83","typeDescriptions":{"typeIdentifier":"t_function_metatype_pure$__$returns$__$","typeString":"function () pure"}},"id":24131,"isConstant":false,"isLValue":false,"isPure":true,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"3106:13:83","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_magic_meta_type_t_uint256","typeString":"type(uint256)"}},"id":24132,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberLocation":"3120:3:83","memberName":"max","nodeType":"MemberAccess","src":"3106:17:83","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"functionReturnParameters":24127,"id":24133,"nodeType":"Return","src":"3099:24:83"}]},"documentation":{"id":24120,"nodeType":"StructuredDocumentation","src":"2969:31:83","text":"@inheritdoc IInvestStrategy"},"functionSelector":"402d267d","id":24135,"implemented":true,"kind":"function","modifiers":[],"name":"maxDeposit","nameLocation":"3012:10:83","nodeType":"FunctionDefinition","overrides":{"id":24124,"nodeType":"OverrideSpecifier","overrides":[],"src":"3066:8:83"},"parameters":{"id":24123,"nodeType":"ParameterList","parameters":[{"constant":false,"id":24122,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":24135,"src":"3023:7:83","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":24121,"name":"address","nodeType":"ElementaryTypeName","src":"3023:7:83","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"3022:23:83"},"returnParameters":{"id":24127,"nodeType":"ParameterList","parameters":[{"constant":false,"id":24126,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":24135,"src":"3084:7:83","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":24125,"name":"uint256","nodeType":"ElementaryTypeName","src":"3084:7:83","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"3083:9:83"},"scope":24509,"src":"3003:194:83","stateMutability":"view","virtual":true,"visibility":"public"},{"baseFunctions":[20694],"body":{"id":24149,"nodeType":"Block","src":"3306:33:83","statements":[{"expression":{"arguments":[{"id":24146,"name":"_asset","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":23955,"src":"3327:6:83","typeDescriptions":{"typeIdentifier":"t_contract$_IERC20Metadata_$9411","typeString":"contract IERC20Metadata"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_contract$_IERC20Metadata_$9411","typeString":"contract IERC20Metadata"}],"id":24145,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"3319:7:83","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":24144,"name":"address","nodeType":"ElementaryTypeName","src":"3319:7:83","typeDescriptions":{}}},"id":24147,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"3319:15:83","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"functionReturnParameters":24143,"id":24148,"nodeType":"Return","src":"3312:22:83"}]},"documentation":{"id":24136,"nodeType":"StructuredDocumentation","src":"3201:31:83","text":"@inheritdoc IInvestStrategy"},"functionSelector":"9c4667a2","id":24150,"implemented":true,"kind":"function","modifiers":[],"name":"asset","nameLocation":"3244:5:83","nodeType":"FunctionDefinition","overrides":{"id":24140,"nodeType":"OverrideSpecifier","overrides":[],"src":"3279:8:83"},"parameters":{"id":24139,"nodeType":"ParameterList","parameters":[{"constant":false,"id":24138,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":24150,"src":"3250:7:83","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":24137,"name":"address","nodeType":"ElementaryTypeName","src":"3250:7:83","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"3249:9:83"},"returnParameters":{"id":24143,"nodeType":"ParameterList","parameters":[{"constant":false,"id":24142,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":24150,"src":"3297:7:83","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":24141,"name":"address","nodeType":"ElementaryTypeName","src":"3297:7:83","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"3296:9:83"},"scope":24509,"src":"3235:104:83","stateMutability":"view","virtual":true,"visibility":"public"},{"body":{"id":24163,"nodeType":"Block","src":"3484:39:83","statements":[{"expression":{"arguments":[{"id":24160,"name":"_investAsset","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":23958,"src":"3505:12:83","typeDescriptions":{"typeIdentifier":"t_contract$_IERC20Metadata_$9411","typeString":"contract IERC20Metadata"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_contract$_IERC20Metadata_$9411","typeString":"contract IERC20Metadata"}],"id":24159,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"3497:7:83","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":24158,"name":"address","nodeType":"ElementaryTypeName","src":"3497:7:83","typeDescriptions":{}}},"id":24161,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"3497:21:83","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"functionReturnParameters":24157,"id":24162,"nodeType":"Return","src":"3490:28:83"}]},"documentation":{"id":24151,"nodeType":"StructuredDocumentation","src":"3343:78:83","text":" @dev Returns the address of the asset invested in the strategy."},"functionSelector":"de846ae4","id":24164,"implemented":true,"kind":"function","modifiers":[],"name":"investAsset","nameLocation":"3433:11:83","nodeType":"FunctionDefinition","parameters":{"id":24154,"nodeType":"ParameterList","parameters":[{"constant":false,"id":24153,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":24164,"src":"3445:7:83","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":24152,"name":"address","nodeType":"ElementaryTypeName","src":"3445:7:83","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"3444:9:83"},"returnParameters":{"id":24157,"nodeType":"ParameterList","parameters":[{"constant":false,"id":24156,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":24164,"src":"3475:7:83","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":24155,"name":"address","nodeType":"ElementaryTypeName","src":"3475:7:83","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"3474:9:83"},"scope":24509,"src":"3424:99:83","stateMutability":"view","virtual":false,"visibility":"public"},{"documentation":{"id":24165,"nodeType":"StructuredDocumentation","src":"3527:319:83","text":" @dev Returns the amount of `asset()` required to acquire one unit of `investAsset()` or the amount of `asset()`\n      that should be received by selling a unit of `investAsset()`. It doesn't consider slippage.\n @return The amount is expressed in WAD (18 decimals), units: (asset/investAsset)"},"functionSelector":"1418983b","id":24170,"implemented":false,"kind":"function","modifiers":[],"name":"investAssetPrice","nameLocation":"3858:16:83","nodeType":"FunctionDefinition","parameters":{"id":24166,"nodeType":"ParameterList","parameters":[],"src":"3874:2:83"},"returnParameters":{"id":24169,"nodeType":"ParameterList","parameters":[{"constant":false,"id":24168,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":24170,"src":"3906:7:83","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":24167,"name":"uint256","nodeType":"ElementaryTypeName","src":"3906:7:83","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"3905:9:83"},"scope":24509,"src":"3849:66:83","stateMutability":"view","virtual":true,"visibility":"public"},{"body":{"id":24183,"nodeType":"Block","src":"3983:110:83","statements":[{"expression":{"arguments":[{"id":24177,"name":"WAD","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":23940,"src":"4008:3:83","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"id":24178,"name":"WAD","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":23940,"src":"4013:3:83","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"arguments":[],"expression":{"argumentTypes":[],"id":24179,"name":"investAssetPrice","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":24170,"src":"4018:16:83","typeDescriptions":{"typeIdentifier":"t_function_internal_view$__$returns$_t_uint256_$","typeString":"function () view returns (uint256)"}},"id":24180,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"4018:18:83","tryCall":false,"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":24175,"name":"Math","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":12726,"src":"3996:4:83","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_Math_$12726_$","typeString":"type(library Math)"}},"id":24176,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"4001:6:83","memberName":"mulDiv","nodeType":"MemberAccess","referencedDeclaration":11611,"src":"3996:11:83","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_uint256_$_t_uint256_$_t_uint256_$returns$_t_uint256_$","typeString":"function (uint256,uint256,uint256) pure returns (uint256)"}},"id":24181,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"3996:41:83","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"functionReturnParameters":24174,"id":24182,"nodeType":"Return","src":"3989:48:83"}]},"id":24184,"implemented":true,"kind":"function","modifiers":[],"name":"sellInvestAssetPrice","nameLocation":"3928:20:83","nodeType":"FunctionDefinition","parameters":{"id":24171,"nodeType":"ParameterList","parameters":[],"src":"3948:2:83"},"returnParameters":{"id":24174,"nodeType":"ParameterList","parameters":[{"constant":false,"id":24173,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":24184,"src":"3974:7:83","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":24172,"name":"uint256","nodeType":"ElementaryTypeName","src":"3974:7:83","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"3973:9:83"},"scope":24509,"src":"3919:174:83","stateMutability":"view","virtual":false,"visibility":"internal"},{"body":{"id":24220,"nodeType":"Block","src":"4662:221:83","statements":[{"expression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":24218,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"arguments":[{"arguments":[{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":24202,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":24198,"name":"investAssets","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":24187,"src":"4714:12:83","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"*","rightExpression":{"arguments":[{"id":24200,"name":"_investAsset","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":23958,"src":"4742:12:83","typeDescriptions":{"typeIdentifier":"t_contract$_IERC20Metadata_$9411","typeString":"contract IERC20Metadata"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_contract$_IERC20Metadata_$9411","typeString":"contract IERC20Metadata"}],"id":24199,"name":"_toWadFactor","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":24055,"src":"4729:12:83","typeDescriptions":{"typeIdentifier":"t_function_internal_view$_t_contract$_IERC20Metadata_$9411_$returns$_t_uint256_$","typeString":"function (contract IERC20Metadata) view returns (uint256)"}},"id":24201,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"4729:26:83","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"4714:41:83","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"arguments":[],"expression":{"argumentTypes":[],"id":24203,"name":"investAssetPrice","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":24170,"src":"4757:16:83","typeDescriptions":{"typeIdentifier":"t_function_internal_view$__$returns$_t_uint256_$","typeString":"function () view returns (uint256)"}},"id":24204,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"4757:18:83","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"id":24205,"name":"WAD","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":23940,"src":"4777:3:83","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":24196,"name":"Math","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":12726,"src":"4702:4:83","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_Math_$12726_$","typeString":"type(library Math)"}},"id":24197,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"4707:6:83","memberName":"mulDiv","nodeType":"MemberAccess","referencedDeclaration":11611,"src":"4702:11:83","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_uint256_$_t_uint256_$_t_uint256_$returns$_t_uint256_$","typeString":"function (uint256,uint256,uint256) pure returns (uint256)"}},"id":24206,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"4702:79:83","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":24212,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":24207,"name":"WAD","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":23940,"src":"4791:3:83","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"-","rightExpression":{"expression":{"arguments":[{"id":24209,"name":"contract_","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":24189,"src":"4812:9:83","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"id":24208,"name":"_getSwapConfig","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":24475,"src":"4797:14:83","typeDescriptions":{"typeIdentifier":"t_function_internal_view$_t_address_$returns$_t_struct$_SwapConfig_$1113_memory_ptr_$","typeString":"function (address) view returns (struct SwapLibrary.SwapConfig memory)"}},"id":24210,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"4797:25:83","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_struct$_SwapConfig_$1113_memory_ptr","typeString":"struct SwapLibrary.SwapConfig memory"}},"id":24211,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"4823:11:83","memberName":"maxSlippage","nodeType":"MemberAccess","referencedDeclaration":1110,"src":"4797:37:83","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"4791:43:83","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"id":24213,"name":"WAD","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":23940,"src":"4844:3:83","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":24194,"name":"Math","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":12726,"src":"4681:4:83","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_Math_$12726_$","typeString":"type(library Math)"}},"id":24195,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"4686:6:83","memberName":"mulDiv","nodeType":"MemberAccess","referencedDeclaration":11611,"src":"4681:11:83","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_uint256_$_t_uint256_$_t_uint256_$returns$_t_uint256_$","typeString":"function (uint256,uint256,uint256) pure returns (uint256)"}},"id":24214,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"4681:174:83","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"/","rightExpression":{"arguments":[{"id":24216,"name":"_asset","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":23955,"src":"4871:6:83","typeDescriptions":{"typeIdentifier":"t_contract$_IERC20Metadata_$9411","typeString":"contract IERC20Metadata"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_contract$_IERC20Metadata_$9411","typeString":"contract IERC20Metadata"}],"id":24215,"name":"_toWadFactor","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":24055,"src":"4858:12:83","typeDescriptions":{"typeIdentifier":"t_function_internal_view$_t_contract$_IERC20Metadata_$9411_$returns$_t_uint256_$","typeString":"function (contract IERC20Metadata) view returns (uint256)"}},"id":24217,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"4858:20:83","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"4681:197:83","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"functionReturnParameters":24193,"id":24219,"nodeType":"Return","src":"4668:210:83"}]},"documentation":{"id":24185,"nodeType":"StructuredDocumentation","src":"4097:450:83","text":" @dev Converts a given amount of investAssets into assets, considering the difference in decimals and the\n      maxSlippage accepted\n @param investAssets Amount in investAssets\n @param contract_ The address of the vault, not used in the implementation, but it might be required by\n                  inheriting contracts.\n @return assets The minimum amount in assets that will result from swapping `investAssets`"},"id":24221,"implemented":true,"kind":"function","modifiers":[],"name":"_convertAssets","nameLocation":"4559:14:83","nodeType":"FunctionDefinition","parameters":{"id":24190,"nodeType":"ParameterList","parameters":[{"constant":false,"id":24187,"mutability":"mutable","name":"investAssets","nameLocation":"4582:12:83","nodeType":"VariableDeclaration","scope":24221,"src":"4574:20:83","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":24186,"name":"uint256","nodeType":"ElementaryTypeName","src":"4574:7:83","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":24189,"mutability":"mutable","name":"contract_","nameLocation":"4604:9:83","nodeType":"VariableDeclaration","scope":24221,"src":"4596:17:83","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":24188,"name":"address","nodeType":"ElementaryTypeName","src":"4596:7:83","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"4573:41:83"},"returnParameters":{"id":24193,"nodeType":"ParameterList","parameters":[{"constant":false,"id":24192,"mutability":"mutable","name":"assets","nameLocation":"4654:6:83","nodeType":"VariableDeclaration","scope":24221,"src":"4646:14:83","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":24191,"name":"uint256","nodeType":"ElementaryTypeName","src":"4646:7:83","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"4645:16:83"},"scope":24509,"src":"4550:333:83","stateMutability":"view","virtual":true,"visibility":"internal"},{"baseFunctions":[20702],"body":{"id":24238,"nodeType":"Block","src":"5015:78:83","statements":[{"expression":{"arguments":[{"arguments":[{"id":24233,"name":"contract_","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":24224,"src":"5066:9:83","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"expression":{"id":24231,"name":"_investAsset","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":23958,"src":"5043:12:83","typeDescriptions":{"typeIdentifier":"t_contract$_IERC20Metadata_$9411","typeString":"contract IERC20Metadata"}},"id":24232,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"5056:9:83","memberName":"balanceOf","nodeType":"MemberAccess","referencedDeclaration":8636,"src":"5043:22:83","typeDescriptions":{"typeIdentifier":"t_function_external_view$_t_address_$returns$_t_uint256_$","typeString":"function (address) view external returns (uint256)"}},"id":24234,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"5043:33:83","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"id":24235,"name":"contract_","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":24224,"src":"5078:9:83","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_address","typeString":"address"}],"id":24230,"name":"_convertAssets","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":24221,"src":"5028:14:83","typeDescriptions":{"typeIdentifier":"t_function_internal_view$_t_uint256_$_t_address_$returns$_t_uint256_$","typeString":"function (uint256,address) view returns (uint256)"}},"id":24236,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"5028:60:83","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"functionReturnParameters":24229,"id":24237,"nodeType":"Return","src":"5021:67:83"}]},"documentation":{"id":24222,"nodeType":"StructuredDocumentation","src":"4887:31:83","text":"@inheritdoc IInvestStrategy"},"functionSelector":"f3e0ffbf","id":24239,"implemented":true,"kind":"function","modifiers":[],"name":"totalAssets","nameLocation":"4930:11:83","nodeType":"FunctionDefinition","overrides":{"id":24226,"nodeType":"OverrideSpecifier","overrides":[],"src":"4981:8:83"},"parameters":{"id":24225,"nodeType":"ParameterList","parameters":[{"constant":false,"id":24224,"mutability":"mutable","name":"contract_","nameLocation":"4950:9:83","nodeType":"VariableDeclaration","scope":24239,"src":"4942:17:83","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":24223,"name":"address","nodeType":"ElementaryTypeName","src":"4942:7:83","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"4941:19:83"},"returnParameters":{"id":24229,"nodeType":"ParameterList","parameters":[{"constant":false,"id":24228,"mutability":"mutable","name":"assets","nameLocation":"5007:6:83","nodeType":"VariableDeclaration","scope":24239,"src":"4999:14:83","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":24227,"name":"uint256","nodeType":"ElementaryTypeName","src":"4999:7:83","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"4998:16:83"},"scope":24509,"src":"4921:172:83","stateMutability":"view","virtual":true,"visibility":"public"},{"baseFunctions":[20676],"body":{"id":24320,"nodeType":"Block","src":"5370:669:83","statements":[{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":24250,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":24248,"name":"assets","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":24242,"src":"5380:6:83","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"hexValue":"30","id":24249,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"5390:1:83","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"5380:11:83","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":24252,"nodeType":"IfStatement","src":"5376:24:83","trueBody":{"functionReturnParameters":24247,"id":24251,"nodeType":"Return","src":"5393:7:83"}},{"assignments":[24257],"declarations":[{"constant":false,"id":24257,"mutability":"mutable","name":"swapConfig","nameLocation":"5435:10:83","nodeType":"VariableDeclaration","scope":24320,"src":"5405:40:83","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_struct$_SwapConfig_$1113_memory_ptr","typeString":"struct SwapLibrary.SwapConfig"},"typeName":{"id":24256,"nodeType":"UserDefinedTypeName","pathNode":{"id":24255,"name":"SwapLibrary.SwapConfig","nameLocations":["5405:11:83","5417:10:83"],"nodeType":"IdentifierPath","referencedDeclaration":1113,"src":"5405:22:83"},"referencedDeclaration":1113,"src":"5405:22:83","typeDescriptions":{"typeIdentifier":"t_struct$_SwapConfig_$1113_storage_ptr","typeString":"struct SwapLibrary.SwapConfig"}},"visibility":"internal"}],"id":24260,"initialValue":{"arguments":[],"expression":{"argumentTypes":[],"id":24258,"name":"_getSwapConfigSelf","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":24494,"src":"5448:18:83","typeDescriptions":{"typeIdentifier":"t_function_internal_view$__$returns$_t_struct$_SwapConfig_$1113_memory_ptr_$","typeString":"function () view returns (struct SwapLibrary.SwapConfig memory)"}},"id":24259,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"5448:20:83","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_struct$_SwapConfig_$1113_memory_ptr","typeString":"struct SwapLibrary.SwapConfig memory"}},"nodeType":"VariableDeclarationStatement","src":"5405:63:83"},{"assignments":[24262],"declarations":[{"constant":false,"id":24262,"mutability":"mutable","name":"price","nameLocation":"5482:5:83","nodeType":"VariableDeclaration","scope":24320,"src":"5474:13:83","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":24261,"name":"uint256","nodeType":"ElementaryTypeName","src":"5474:7:83","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":24265,"initialValue":{"arguments":[],"expression":{"argumentTypes":[],"id":24263,"name":"sellInvestAssetPrice","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":24184,"src":"5490:20:83","typeDescriptions":{"typeIdentifier":"t_function_internal_view$__$returns$_t_uint256_$","typeString":"function () view returns (uint256)"}},"id":24264,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"5490:22:83","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"VariableDeclarationStatement","src":"5474:38:83"},{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":24280,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":24266,"name":"assets","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":24242,"src":"5522:6:83","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">=","rightExpression":{"arguments":[{"arguments":[{"arguments":[{"id":24272,"name":"this","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-28,"src":"5578:4:83","typeDescriptions":{"typeIdentifier":"t_contract$_SwapAssetInvestStrategy_$24509","typeString":"contract SwapAssetInvestStrategy"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_contract$_SwapAssetInvestStrategy_$24509","typeString":"contract SwapAssetInvestStrategy"}],"id":24271,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"5570:7:83","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":24270,"name":"address","nodeType":"ElementaryTypeName","src":"5570:7:83","typeDescriptions":{}}},"id":24273,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"5570:13:83","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"expression":{"id":24268,"name":"_investAsset","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":23958,"src":"5547:12:83","typeDescriptions":{"typeIdentifier":"t_contract$_IERC20Metadata_$9411","typeString":"contract IERC20Metadata"}},"id":24269,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"5560:9:83","memberName":"balanceOf","nodeType":"MemberAccess","referencedDeclaration":8636,"src":"5547:22:83","typeDescriptions":{"typeIdentifier":"t_function_external_view$_t_address_$returns$_t_uint256_$","typeString":"function (address) view external returns (uint256)"}},"id":24274,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"5547:37:83","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"arguments":[{"id":24277,"name":"this","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-28,"src":"5594:4:83","typeDescriptions":{"typeIdentifier":"t_contract$_SwapAssetInvestStrategy_$24509","typeString":"contract SwapAssetInvestStrategy"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_contract$_SwapAssetInvestStrategy_$24509","typeString":"contract SwapAssetInvestStrategy"}],"id":24276,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"5586:7:83","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":24275,"name":"address","nodeType":"ElementaryTypeName","src":"5586:7:83","typeDescriptions":{}}},"id":24278,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"5586:13:83","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_address","typeString":"address"}],"id":24267,"name":"_convertAssets","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":24221,"src":"5532:14:83","typeDescriptions":{"typeIdentifier":"t_function_internal_view$_t_uint256_$_t_address_$returns$_t_uint256_$","typeString":"function (uint256,address) view returns (uint256)"}},"id":24279,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"5532:68:83","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"5522:78:83","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"falseBody":{"id":24318,"nodeType":"Block","src":"5943:92:83","statements":[{"expression":{"arguments":[{"arguments":[{"id":24308,"name":"_investAsset","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":23958,"src":"5982:12:83","typeDescriptions":{"typeIdentifier":"t_contract$_IERC20Metadata_$9411","typeString":"contract IERC20Metadata"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_contract$_IERC20Metadata_$9411","typeString":"contract IERC20Metadata"}],"id":24307,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"5974:7:83","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":24306,"name":"address","nodeType":"ElementaryTypeName","src":"5974:7:83","typeDescriptions":{}}},"id":24309,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"5974:21:83","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"arguments":[{"id":24312,"name":"_asset","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":23955,"src":"6005:6:83","typeDescriptions":{"typeIdentifier":"t_contract$_IERC20Metadata_$9411","typeString":"contract IERC20Metadata"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_contract$_IERC20Metadata_$9411","typeString":"contract IERC20Metadata"}],"id":24311,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"5997:7:83","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":24310,"name":"address","nodeType":"ElementaryTypeName","src":"5997:7:83","typeDescriptions":{}}},"id":24313,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"5997:15:83","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":24314,"name":"assets","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":24242,"src":"6014:6:83","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"id":24315,"name":"price","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":24262,"src":"6022:5:83","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":24303,"name":"swapConfig","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":24257,"src":"5951:10:83","typeDescriptions":{"typeIdentifier":"t_struct$_SwapConfig_$1113_memory_ptr","typeString":"struct SwapLibrary.SwapConfig memory"}},"id":24305,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"5962:11:83","memberName":"exactOutput","nodeType":"MemberAccess","referencedDeclaration":1333,"src":"5951:22:83","typeDescriptions":{"typeIdentifier":"t_function_delegatecall_nonpayable$_t_struct$_SwapConfig_$1113_memory_ptr_$_t_address_$_t_address_$_t_uint256_$_t_uint256_$returns$_t_uint256_$attached_to$_t_struct$_SwapConfig_$1113_memory_ptr_$","typeString":"function (struct SwapLibrary.SwapConfig memory,address,address,uint256,uint256) returns (uint256)"}},"id":24316,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"5951:77:83","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":24317,"nodeType":"ExpressionStatement","src":"5951:77:83"}]},"id":24319,"nodeType":"IfStatement","src":"5518:517:83","trueBody":{"id":24302,"nodeType":"Block","src":"5602:335:83","statements":[{"expression":{"arguments":[{"arguments":[{"id":24286,"name":"_investAsset","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":23958,"src":"5853:12:83","typeDescriptions":{"typeIdentifier":"t_contract$_IERC20Metadata_$9411","typeString":"contract IERC20Metadata"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_contract$_IERC20Metadata_$9411","typeString":"contract IERC20Metadata"}],"id":24285,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"5845:7:83","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":24284,"name":"address","nodeType":"ElementaryTypeName","src":"5845:7:83","typeDescriptions":{}}},"id":24287,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"5845:21:83","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"arguments":[{"id":24290,"name":"_asset","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":23955,"src":"5876:6:83","typeDescriptions":{"typeIdentifier":"t_contract$_IERC20Metadata_$9411","typeString":"contract IERC20Metadata"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_contract$_IERC20Metadata_$9411","typeString":"contract IERC20Metadata"}],"id":24289,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"5868:7:83","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":24288,"name":"address","nodeType":"ElementaryTypeName","src":"5868:7:83","typeDescriptions":{}}},"id":24291,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"5868:15:83","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"arguments":[{"arguments":[{"id":24296,"name":"this","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-28,"src":"5916:4:83","typeDescriptions":{"typeIdentifier":"t_contract$_SwapAssetInvestStrategy_$24509","typeString":"contract SwapAssetInvestStrategy"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_contract$_SwapAssetInvestStrategy_$24509","typeString":"contract SwapAssetInvestStrategy"}],"id":24295,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"5908:7:83","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":24294,"name":"address","nodeType":"ElementaryTypeName","src":"5908:7:83","typeDescriptions":{}}},"id":24297,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"5908:13:83","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"expression":{"id":24292,"name":"_investAsset","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":23958,"src":"5885:12:83","typeDescriptions":{"typeIdentifier":"t_contract$_IERC20Metadata_$9411","typeString":"contract IERC20Metadata"}},"id":24293,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"5898:9:83","memberName":"balanceOf","nodeType":"MemberAccess","referencedDeclaration":8636,"src":"5885:22:83","typeDescriptions":{"typeIdentifier":"t_function_external_view$_t_address_$returns$_t_uint256_$","typeString":"function (address) view external returns (uint256)"}},"id":24298,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"5885:37:83","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"id":24299,"name":"price","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":24262,"src":"5924:5:83","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":24281,"name":"swapConfig","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":24257,"src":"5823:10:83","typeDescriptions":{"typeIdentifier":"t_struct$_SwapConfig_$1113_memory_ptr","typeString":"struct SwapLibrary.SwapConfig memory"}},"id":24283,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"5834:10:83","memberName":"exactInput","nodeType":"MemberAccess","referencedDeclaration":1283,"src":"5823:21:83","typeDescriptions":{"typeIdentifier":"t_function_delegatecall_nonpayable$_t_struct$_SwapConfig_$1113_memory_ptr_$_t_address_$_t_address_$_t_uint256_$_t_uint256_$returns$_t_uint256_$attached_to$_t_struct$_SwapConfig_$1113_memory_ptr_$","typeString":"function (struct SwapLibrary.SwapConfig memory,address,address,uint256,uint256) returns (uint256)"}},"id":24300,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"5823:107:83","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":24301,"nodeType":"ExpressionStatement","src":"5823:107:83"}]}}]},"documentation":{"id":24240,"nodeType":"StructuredDocumentation","src":"5131:164:83","text":" @dev Withdraws the amount of assets given from the strategy swapping _investAsset to _asset\n @param assets Amount of assets to be withdrawn."},"functionSelector":"2e1a7d4d","id":24321,"implemented":true,"kind":"function","modifiers":[{"id":24246,"kind":"modifierInvocation","modifierName":{"id":24245,"name":"onlyDelegCall","nameLocations":["5356:13:83"],"nodeType":"IdentifierPath","referencedDeclaration":23990,"src":"5356:13:83"},"nodeType":"ModifierInvocation","src":"5356:13:83"}],"name":"withdraw","nameLocation":"5307:8:83","nodeType":"FunctionDefinition","overrides":{"id":24244,"nodeType":"OverrideSpecifier","overrides":[],"src":"5347:8:83"},"parameters":{"id":24243,"nodeType":"ParameterList","parameters":[{"constant":false,"id":24242,"mutability":"mutable","name":"assets","nameLocation":"5324:6:83","nodeType":"VariableDeclaration","scope":24321,"src":"5316:14:83","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":24241,"name":"uint256","nodeType":"ElementaryTypeName","src":"5316:7:83","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"5315:16:83"},"returnParameters":{"id":24247,"nodeType":"ParameterList","parameters":[],"src":"5370:0:83"},"scope":24509,"src":"5298:741:83","stateMutability":"nonpayable","virtual":true,"visibility":"public"},{"baseFunctions":[20670],"body":{"id":24351,"nodeType":"Block","src":"6316:260:83","statements":[{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":24332,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":24330,"name":"assets","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":24324,"src":"6326:6:83","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"hexValue":"30","id":24331,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"6336:1:83","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"6326:11:83","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":24334,"nodeType":"IfStatement","src":"6322:24:83","trueBody":{"functionReturnParameters":24329,"id":24333,"nodeType":"Return","src":"6339:7:83"}},{"expression":{"arguments":[{"arguments":[{"id":24340,"name":"_asset","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":23955,"src":"6512:6:83","typeDescriptions":{"typeIdentifier":"t_contract$_IERC20Metadata_$9411","typeString":"contract IERC20Metadata"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_contract$_IERC20Metadata_$9411","typeString":"contract IERC20Metadata"}],"id":24339,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"6504:7:83","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":24338,"name":"address","nodeType":"ElementaryTypeName","src":"6504:7:83","typeDescriptions":{}}},"id":24341,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"6504:15:83","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"arguments":[{"id":24344,"name":"_investAsset","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":23958,"src":"6529:12:83","typeDescriptions":{"typeIdentifier":"t_contract$_IERC20Metadata_$9411","typeString":"contract IERC20Metadata"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_contract$_IERC20Metadata_$9411","typeString":"contract IERC20Metadata"}],"id":24343,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"6521:7:83","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":24342,"name":"address","nodeType":"ElementaryTypeName","src":"6521:7:83","typeDescriptions":{}}},"id":24345,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"6521:21:83","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":24346,"name":"assets","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":24324,"src":"6544:6:83","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"arguments":[],"expression":{"argumentTypes":[],"id":24347,"name":"investAssetPrice","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":24170,"src":"6552:16:83","typeDescriptions":{"typeIdentifier":"t_function_internal_view$__$returns$_t_uint256_$","typeString":"function () view returns (uint256)"}},"id":24348,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"6552:18:83","tryCall":false,"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":{"arguments":[],"expression":{"argumentTypes":[],"id":24335,"name":"_getSwapConfigSelf","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":24494,"src":"6472:18:83","typeDescriptions":{"typeIdentifier":"t_function_internal_view$__$returns$_t_struct$_SwapConfig_$1113_memory_ptr_$","typeString":"function () view returns (struct SwapLibrary.SwapConfig memory)"}},"id":24336,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"6472:20:83","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_struct$_SwapConfig_$1113_memory_ptr","typeString":"struct SwapLibrary.SwapConfig memory"}},"id":24337,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"6493:10:83","memberName":"exactInput","nodeType":"MemberAccess","referencedDeclaration":1283,"src":"6472:31:83","typeDescriptions":{"typeIdentifier":"t_function_delegatecall_nonpayable$_t_struct$_SwapConfig_$1113_memory_ptr_$_t_address_$_t_address_$_t_uint256_$_t_uint256_$returns$_t_uint256_$attached_to$_t_struct$_SwapConfig_$1113_memory_ptr_$","typeString":"function (struct SwapLibrary.SwapConfig memory,address,address,uint256,uint256) returns (uint256)"}},"id":24349,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"6472:99:83","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":24350,"nodeType":"ExpressionStatement","src":"6472:99:83"}]},"documentation":{"id":24322,"nodeType":"StructuredDocumentation","src":"6077:165:83","text":" @dev Deposit the amount of assets given into the strategy by swapping _asset to _investAsset\n @param assets Amount of assets to be deposited."},"functionSelector":"b6b55f25","id":24352,"implemented":true,"kind":"function","modifiers":[{"id":24328,"kind":"modifierInvocation","modifierName":{"id":24327,"name":"onlyDelegCall","nameLocations":["6302:13:83"],"nodeType":"IdentifierPath","referencedDeclaration":23990,"src":"6302:13:83"},"nodeType":"ModifierInvocation","src":"6302:13:83"}],"name":"deposit","nameLocation":"6254:7:83","nodeType":"FunctionDefinition","overrides":{"id":24326,"nodeType":"OverrideSpecifier","overrides":[],"src":"6293:8:83"},"parameters":{"id":24325,"nodeType":"ParameterList","parameters":[{"constant":false,"id":24324,"mutability":"mutable","name":"assets","nameLocation":"6270:6:83","nodeType":"VariableDeclaration","scope":24352,"src":"6262:14:83","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":24323,"name":"uint256","nodeType":"ElementaryTypeName","src":"6262:7:83","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"6261:16:83"},"returnParameters":{"id":24329,"nodeType":"ParameterList","parameters":[],"src":"6316:0:83"},"scope":24509,"src":"6245:331:83","stateMutability":"nonpayable","virtual":true,"visibility":"public"},{"body":{"id":24404,"nodeType":"Block","src":"6693:365:83","statements":[{"assignments":[24364],"declarations":[{"constant":false,"id":24364,"mutability":"mutable","name":"swapConfig","nameLocation":"6729:10:83","nodeType":"VariableDeclaration","scope":24404,"src":"6699:40:83","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_struct$_SwapConfig_$1113_memory_ptr","typeString":"struct SwapLibrary.SwapConfig"},"typeName":{"id":24363,"nodeType":"UserDefinedTypeName","pathNode":{"id":24362,"name":"SwapLibrary.SwapConfig","nameLocations":["6699:11:83","6711:10:83"],"nodeType":"IdentifierPath","referencedDeclaration":1113,"src":"6699:22:83"},"referencedDeclaration":1113,"src":"6699:22:83","typeDescriptions":{"typeIdentifier":"t_struct$_SwapConfig_$1113_storage_ptr","typeString":"struct SwapLibrary.SwapConfig"}},"visibility":"internal"}],"id":24372,"initialValue":{"arguments":[{"id":24367,"name":"newSwapConfigAsBytes","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":24357,"src":"6753:20:83","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}},{"components":[{"expression":{"id":24368,"name":"SwapLibrary","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1879,"src":"6776:11:83","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_SwapLibrary_$1879_$","typeString":"type(library SwapLibrary)"}},"id":24369,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"6788:10:83","memberName":"SwapConfig","nodeType":"MemberAccess","referencedDeclaration":1113,"src":"6776:22:83","typeDescriptions":{"typeIdentifier":"t_type$_t_struct$_SwapConfig_$1113_storage_ptr_$","typeString":"type(struct SwapLibrary.SwapConfig storage pointer)"}}],"id":24370,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"6775:24:83","typeDescriptions":{"typeIdentifier":"t_type$_t_struct$_SwapConfig_$1113_storage_ptr_$","typeString":"type(struct SwapLibrary.SwapConfig storage pointer)"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"},{"typeIdentifier":"t_type$_t_struct$_SwapConfig_$1113_storage_ptr_$","typeString":"type(struct SwapLibrary.SwapConfig storage pointer)"}],"expression":{"id":24365,"name":"abi","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-1,"src":"6742:3:83","typeDescriptions":{"typeIdentifier":"t_magic_abi","typeString":"abi"}},"id":24366,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberLocation":"6746:6:83","memberName":"decode","nodeType":"MemberAccess","src":"6742:10:83","typeDescriptions":{"typeIdentifier":"t_function_abidecode_pure$__$returns$__$","typeString":"function () pure"}},"id":24371,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"6742:58:83","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_struct$_SwapConfig_$1113_memory_ptr","typeString":"struct SwapLibrary.SwapConfig memory"}},"nodeType":"VariableDeclarationStatement","src":"6699:101:83"},{"expression":{"arguments":[],"expression":{"argumentTypes":[],"expression":{"id":24373,"name":"swapConfig","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":24364,"src":"6806:10:83","typeDescriptions":{"typeIdentifier":"t_struct$_SwapConfig_$1113_memory_ptr","typeString":"struct SwapLibrary.SwapConfig memory"}},"id":24375,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"6817:8:83","memberName":"validate","nodeType":"MemberAccess","referencedDeclaration":1213,"src":"6806:19:83","typeDescriptions":{"typeIdentifier":"t_function_delegatecall_pure$_t_struct$_SwapConfig_$1113_memory_ptr_$returns$__$attached_to$_t_struct$_SwapConfig_$1113_memory_ptr_$","typeString":"function (struct SwapLibrary.SwapConfig memory) pure"}},"id":24376,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"6806:21:83","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":24377,"nodeType":"ExpressionStatement","src":"6806:21:83"},{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":24385,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"expression":{"arguments":[{"id":24380,"name":"swapConfig","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":24364,"src":"6848:10:83","typeDescriptions":{"typeIdentifier":"t_struct$_SwapConfig_$1113_memory_ptr","typeString":"struct SwapLibrary.SwapConfig memory"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_struct$_SwapConfig_$1113_memory_ptr","typeString":"struct SwapLibrary.SwapConfig memory"}],"expression":{"id":24378,"name":"abi","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-1,"src":"6837:3:83","typeDescriptions":{"typeIdentifier":"t_magic_abi","typeString":"abi"}},"id":24379,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberLocation":"6841:6:83","memberName":"encode","nodeType":"MemberAccess","src":"6837:10:83","typeDescriptions":{"typeIdentifier":"t_function_abiencode_pure$__$returns$_t_bytes_memory_ptr_$","typeString":"function () pure returns (bytes memory)"}},"id":24381,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"6837:22:83","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}},"id":24382,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"6860:6:83","memberName":"length","nodeType":"MemberAccess","src":"6837:29:83","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"!=","rightExpression":{"expression":{"id":24383,"name":"newSwapConfigAsBytes","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":24357,"src":"6870:20:83","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}},"id":24384,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"6891:6:83","memberName":"length","nodeType":"MemberAccess","src":"6870:27:83","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"6837:60:83","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":24389,"nodeType":"IfStatement","src":"6833:93:83","trueBody":{"errorCall":{"arguments":[],"expression":{"argumentTypes":[],"id":24386,"name":"NoExtraDataAllowed","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":23972,"src":"6906:18:83","typeDescriptions":{"typeIdentifier":"t_function_error_pure$__$returns$_t_error_$","typeString":"function () pure returns (error)"}},"id":24387,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"6906:20:83","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_error","typeString":"error"}},"id":24388,"nodeType":"RevertStatement","src":"6899:27:83"}},{"eventCall":{"arguments":[{"id":24391,"name":"oldSwapConfig","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":24355,"src":"6955:13:83","typeDescriptions":{"typeIdentifier":"t_struct$_SwapConfig_$1113_memory_ptr","typeString":"struct SwapLibrary.SwapConfig memory"}},{"id":24392,"name":"swapConfig","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":24364,"src":"6970:10:83","typeDescriptions":{"typeIdentifier":"t_struct$_SwapConfig_$1113_memory_ptr","typeString":"struct SwapLibrary.SwapConfig memory"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_struct$_SwapConfig_$1113_memory_ptr","typeString":"struct SwapLibrary.SwapConfig memory"},{"typeIdentifier":"t_struct$_SwapConfig_$1113_memory_ptr","typeString":"struct SwapLibrary.SwapConfig memory"}],"id":24390,"name":"SwapConfigChanged","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":23966,"src":"6937:17:83","typeDescriptions":{"typeIdentifier":"t_function_event_nonpayable$_t_struct$_SwapConfig_$1113_memory_ptr_$_t_struct$_SwapConfig_$1113_memory_ptr_$returns$__$","typeString":"function (struct SwapLibrary.SwapConfig memory,struct SwapLibrary.SwapConfig memory)"}},"id":24393,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"6937:44:83","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":24394,"nodeType":"EmitStatement","src":"6932:49:83"},{"expression":{"id":24402,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"expression":{"arguments":[{"id":24398,"name":"storageSlot","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":23952,"src":"7012:11:83","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes32","typeString":"bytes32"}],"expression":{"id":24395,"name":"StorageSlot","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":11032,"src":"6987:11:83","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_StorageSlot_$11032_$","typeString":"type(library StorageSlot)"}},"id":24397,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"6999:12:83","memberName":"getBytesSlot","nodeType":"MemberAccess","referencedDeclaration":11020,"src":"6987:24:83","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_bytes32_$returns$_t_struct$_BytesSlot_$10932_storage_ptr_$","typeString":"function (bytes32) pure returns (struct StorageSlot.BytesSlot storage pointer)"}},"id":24399,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"6987:37:83","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_struct$_BytesSlot_$10932_storage_ptr","typeString":"struct StorageSlot.BytesSlot storage pointer"}},"id":24400,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"memberLocation":"7025:5:83","memberName":"value","nodeType":"MemberAccess","referencedDeclaration":10931,"src":"6987:43:83","typeDescriptions":{"typeIdentifier":"t_bytes_storage","typeString":"bytes storage ref"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"id":24401,"name":"newSwapConfigAsBytes","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":24357,"src":"7033:20:83","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}},"src":"6987:66:83","typeDescriptions":{"typeIdentifier":"t_bytes_storage","typeString":"bytes storage ref"}},"id":24403,"nodeType":"ExpressionStatement","src":"6987:66:83"}]},"id":24405,"implemented":true,"kind":"function","modifiers":[],"name":"_setSwapConfig","nameLocation":"6589:14:83","nodeType":"FunctionDefinition","parameters":{"id":24358,"nodeType":"ParameterList","parameters":[{"constant":false,"id":24355,"mutability":"mutable","name":"oldSwapConfig","nameLocation":"6634:13:83","nodeType":"VariableDeclaration","scope":24405,"src":"6604:43:83","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_struct$_SwapConfig_$1113_memory_ptr","typeString":"struct SwapLibrary.SwapConfig"},"typeName":{"id":24354,"nodeType":"UserDefinedTypeName","pathNode":{"id":24353,"name":"SwapLibrary.SwapConfig","nameLocations":["6604:11:83","6616:10:83"],"nodeType":"IdentifierPath","referencedDeclaration":1113,"src":"6604:22:83"},"referencedDeclaration":1113,"src":"6604:22:83","typeDescriptions":{"typeIdentifier":"t_struct$_SwapConfig_$1113_storage_ptr","typeString":"struct SwapLibrary.SwapConfig"}},"visibility":"internal"},{"constant":false,"id":24357,"mutability":"mutable","name":"newSwapConfigAsBytes","nameLocation":"6662:20:83","nodeType":"VariableDeclaration","scope":24405,"src":"6649:33:83","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes"},"typeName":{"id":24356,"name":"bytes","nodeType":"ElementaryTypeName","src":"6649:5:83","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"}],"src":"6603:80:83"},"returnParameters":{"id":24359,"nodeType":"ParameterList","parameters":[],"src":"6693:0:83"},"scope":24509,"src":"6580:478:83","stateMutability":"nonpayable","virtual":false,"visibility":"internal"},{"baseFunctions":[20686],"body":{"id":24448,"nodeType":"Block","src":"7210:741:83","statements":[{"assignments":[24419],"declarations":[{"constant":false,"id":24419,"mutability":"mutable","name":"checkedMethod","nameLocation":"7231:13:83","nodeType":"VariableDeclaration","scope":24448,"src":"7216:28:83","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_enum$_ForwardMethods_$23976","typeString":"enum SwapAssetInvestStrategy.ForwardMethods"},"typeName":{"id":24418,"nodeType":"UserDefinedTypeName","pathNode":{"id":24417,"name":"ForwardMethods","nameLocations":["7216:14:83"],"nodeType":"IdentifierPath","referencedDeclaration":23976,"src":"7216:14:83"},"referencedDeclaration":23976,"src":"7216:14:83","typeDescriptions":{"typeIdentifier":"t_enum$_ForwardMethods_$23976","typeString":"enum SwapAssetInvestStrategy.ForwardMethods"}},"visibility":"internal"}],"id":24423,"initialValue":{"arguments":[{"id":24421,"name":"method","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":24408,"src":"7262:6:83","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint8","typeString":"uint8"}],"id":24420,"name":"ForwardMethods","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":23976,"src":"7247:14:83","typeDescriptions":{"typeIdentifier":"t_type$_t_enum$_ForwardMethods_$23976_$","typeString":"type(enum SwapAssetInvestStrategy.ForwardMethods)"}},"id":24422,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"7247:22:83","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_enum$_ForwardMethods_$23976","typeString":"enum SwapAssetInvestStrategy.ForwardMethods"}},"nodeType":"VariableDeclarationStatement","src":"7216:53:83"},{"condition":{"commonType":{"typeIdentifier":"t_enum$_ForwardMethods_$23976","typeString":"enum SwapAssetInvestStrategy.ForwardMethods"},"id":24427,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":24424,"name":"checkedMethod","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":24419,"src":"7279:13:83","typeDescriptions":{"typeIdentifier":"t_enum$_ForwardMethods_$23976","typeString":"enum SwapAssetInvestStrategy.ForwardMethods"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"expression":{"id":24425,"name":"ForwardMethods","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":23976,"src":"7296:14:83","typeDescriptions":{"typeIdentifier":"t_type$_t_enum$_ForwardMethods_$23976_$","typeString":"type(enum SwapAssetInvestStrategy.ForwardMethods)"}},"id":24426,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberLocation":"7311:13:83","memberName":"setSwapConfig","nodeType":"MemberAccess","referencedDeclaration":23975,"src":"7296:28:83","typeDescriptions":{"typeIdentifier":"t_enum$_ForwardMethods_$23976","typeString":"enum SwapAssetInvestStrategy.ForwardMethods"}},"src":"7279:45:83","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"falseBody":{"expression":{"arguments":[],"expression":{"argumentTypes":[],"id":24439,"name":"revert","nodeType":"Identifier","overloadedDeclarations":[-19,-19],"referencedDeclaration":-19,"src":"7915:6:83","typeDescriptions":{"typeIdentifier":"t_function_revert_pure$__$returns$__$","typeString":"function () pure"}},"id":24440,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"7915:8:83","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":24441,"nodeType":"ExpressionStatement","src":"7915:8:83"},"id":24442,"nodeType":"IfStatement","src":"7275:648:83","trueBody":{"id":24438,"nodeType":"Block","src":"7326:337:83","statements":[{"expression":{"arguments":[{"arguments":[{"arguments":[{"id":24432,"name":"this","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-28,"src":"7641:4:83","typeDescriptions":{"typeIdentifier":"t_contract$_SwapAssetInvestStrategy_$24509","typeString":"contract SwapAssetInvestStrategy"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_contract$_SwapAssetInvestStrategy_$24509","typeString":"contract SwapAssetInvestStrategy"}],"id":24431,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"7633:7:83","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":24430,"name":"address","nodeType":"ElementaryTypeName","src":"7633:7:83","typeDescriptions":{}}},"id":24433,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"7633:13:83","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"id":24429,"name":"_getSwapConfig","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":24475,"src":"7618:14:83","typeDescriptions":{"typeIdentifier":"t_function_internal_view$_t_address_$returns$_t_struct$_SwapConfig_$1113_memory_ptr_$","typeString":"function (address) view returns (struct SwapLibrary.SwapConfig memory)"}},"id":24434,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"7618:29:83","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_struct$_SwapConfig_$1113_memory_ptr","typeString":"struct SwapLibrary.SwapConfig memory"}},{"id":24435,"name":"params","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":24410,"src":"7649:6:83","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_struct$_SwapConfig_$1113_memory_ptr","typeString":"struct SwapLibrary.SwapConfig memory"},{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}],"id":24428,"name":"_setSwapConfig","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":24405,"src":"7603:14:83","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_struct$_SwapConfig_$1113_memory_ptr_$_t_bytes_memory_ptr_$returns$__$","typeString":"function (struct SwapLibrary.SwapConfig memory,bytes memory)"}},"id":24436,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"7603:53:83","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":24437,"nodeType":"ExpressionStatement","src":"7603:53:83"}]}},{"expression":{"arguments":[{"hexValue":"","id":24445,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"7943:2:83","typeDescriptions":{"typeIdentifier":"t_stringliteral_c5d2460186f7233c927e7db2dcc703c0e500b653ca82273b7bfad8045d85a470","typeString":"literal_string \"\""},"value":""}],"expression":{"argumentTypes":[{"typeIdentifier":"t_stringliteral_c5d2460186f7233c927e7db2dcc703c0e500b653ca82273b7bfad8045d85a470","typeString":"literal_string \"\""}],"id":24444,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"7937:5:83","typeDescriptions":{"typeIdentifier":"t_type$_t_bytes_storage_ptr_$","typeString":"type(bytes storage pointer)"},"typeName":{"id":24443,"name":"bytes","nodeType":"ElementaryTypeName","src":"7937:5:83","typeDescriptions":{}}},"id":24446,"isConstant":false,"isLValue":false,"isPure":true,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"7937:9:83","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}},"functionReturnParameters":24416,"id":24447,"nodeType":"Return","src":"7930:16:83"}]},"documentation":{"id":24406,"nodeType":"StructuredDocumentation","src":"7062:31:83","text":"@inheritdoc IInvestStrategy"},"functionSelector":"0981b1c2","id":24449,"implemented":true,"kind":"function","modifiers":[{"id":24413,"kind":"modifierInvocation","modifierName":{"id":24412,"name":"onlyDelegCall","nameLocations":["7173:13:83"],"nodeType":"IdentifierPath","referencedDeclaration":23990,"src":"7173:13:83"},"nodeType":"ModifierInvocation","src":"7173:13:83"}],"name":"forwardEntryPoint","nameLocation":"7105:17:83","nodeType":"FunctionDefinition","parameters":{"id":24411,"nodeType":"ParameterList","parameters":[{"constant":false,"id":24408,"mutability":"mutable","name":"method","nameLocation":"7129:6:83","nodeType":"VariableDeclaration","scope":24449,"src":"7123:12:83","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"},"typeName":{"id":24407,"name":"uint8","nodeType":"ElementaryTypeName","src":"7123:5:83","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}},"visibility":"internal"},{"constant":false,"id":24410,"mutability":"mutable","name":"params","nameLocation":"7150:6:83","nodeType":"VariableDeclaration","scope":24449,"src":"7137:19:83","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes"},"typeName":{"id":24409,"name":"bytes","nodeType":"ElementaryTypeName","src":"7137:5:83","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"}],"src":"7122:35:83"},"returnParameters":{"id":24416,"nodeType":"ParameterList","parameters":[{"constant":false,"id":24415,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":24449,"src":"7196:12:83","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes"},"typeName":{"id":24414,"name":"bytes","nodeType":"ElementaryTypeName","src":"7196:5:83","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"}],"src":"7195:14:83"},"scope":24509,"src":"7096:855:83","stateMutability":"nonpayable","virtual":true,"visibility":"public"},{"body":{"id":24474,"nodeType":"Block","src":"8052:163:83","statements":[{"assignments":[24458],"declarations":[{"constant":false,"id":24458,"mutability":"mutable","name":"swapConfigAsBytes","nameLocation":"8071:17:83","nodeType":"VariableDeclaration","scope":24474,"src":"8058:30:83","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes"},"typeName":{"id":24457,"name":"bytes","nodeType":"ElementaryTypeName","src":"8058:5:83","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"}],"id":24465,"initialValue":{"arguments":[{"id":24463,"name":"storageSlot","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":23952,"src":"8130:11:83","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes32","typeString":"bytes32"}],"expression":{"arguments":[{"id":24460,"name":"contract_","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":24451,"src":"8106:9:83","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"id":24459,"name":"IExposeStorage","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":20649,"src":"8091:14:83","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_IExposeStorage_$20649_$","typeString":"type(contract IExposeStorage)"}},"id":24461,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"8091:25:83","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_contract$_IExposeStorage_$20649","typeString":"contract IExposeStorage"}},"id":24462,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"8117:12:83","memberName":"getBytesSlot","nodeType":"MemberAccess","referencedDeclaration":20648,"src":"8091:38:83","typeDescriptions":{"typeIdentifier":"t_function_external_view$_t_bytes32_$returns$_t_bytes_memory_ptr_$","typeString":"function (bytes32) view external returns (bytes memory)"}},"id":24464,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"8091:51:83","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}},"nodeType":"VariableDeclarationStatement","src":"8058:84:83"},{"expression":{"arguments":[{"id":24468,"name":"swapConfigAsBytes","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":24458,"src":"8166:17:83","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}},{"components":[{"expression":{"id":24469,"name":"SwapLibrary","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1879,"src":"8186:11:83","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_SwapLibrary_$1879_$","typeString":"type(library SwapLibrary)"}},"id":24470,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"8198:10:83","memberName":"SwapConfig","nodeType":"MemberAccess","referencedDeclaration":1113,"src":"8186:22:83","typeDescriptions":{"typeIdentifier":"t_type$_t_struct$_SwapConfig_$1113_storage_ptr_$","typeString":"type(struct SwapLibrary.SwapConfig storage pointer)"}}],"id":24471,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"8185:24:83","typeDescriptions":{"typeIdentifier":"t_type$_t_struct$_SwapConfig_$1113_storage_ptr_$","typeString":"type(struct SwapLibrary.SwapConfig storage pointer)"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"},{"typeIdentifier":"t_type$_t_struct$_SwapConfig_$1113_storage_ptr_$","typeString":"type(struct SwapLibrary.SwapConfig storage pointer)"}],"expression":{"id":24466,"name":"abi","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-1,"src":"8155:3:83","typeDescriptions":{"typeIdentifier":"t_magic_abi","typeString":"abi"}},"id":24467,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberLocation":"8159:6:83","memberName":"decode","nodeType":"MemberAccess","src":"8155:10:83","typeDescriptions":{"typeIdentifier":"t_function_abidecode_pure$__$returns$__$","typeString":"function () pure"}},"id":24472,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"8155:55:83","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_struct$_SwapConfig_$1113_memory_ptr","typeString":"struct SwapLibrary.SwapConfig memory"}},"functionReturnParameters":24456,"id":24473,"nodeType":"Return","src":"8148:62:83"}]},"id":24475,"implemented":true,"kind":"function","modifiers":[],"name":"_getSwapConfig","nameLocation":"7964:14:83","nodeType":"FunctionDefinition","parameters":{"id":24452,"nodeType":"ParameterList","parameters":[{"constant":false,"id":24451,"mutability":"mutable","name":"contract_","nameLocation":"7987:9:83","nodeType":"VariableDeclaration","scope":24475,"src":"7979:17:83","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":24450,"name":"address","nodeType":"ElementaryTypeName","src":"7979:7:83","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"7978:19:83"},"returnParameters":{"id":24456,"nodeType":"ParameterList","parameters":[{"constant":false,"id":24455,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":24475,"src":"8021:29:83","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_struct$_SwapConfig_$1113_memory_ptr","typeString":"struct SwapLibrary.SwapConfig"},"typeName":{"id":24454,"nodeType":"UserDefinedTypeName","pathNode":{"id":24453,"name":"SwapLibrary.SwapConfig","nameLocations":["8021:11:83","8033:10:83"],"nodeType":"IdentifierPath","referencedDeclaration":1113,"src":"8021:22:83"},"referencedDeclaration":1113,"src":"8021:22:83","typeDescriptions":{"typeIdentifier":"t_struct$_SwapConfig_$1113_storage_ptr","typeString":"struct SwapLibrary.SwapConfig"}},"visibility":"internal"}],"src":"8020:31:83"},"scope":24509,"src":"7955:260:83","stateMutability":"view","virtual":false,"visibility":"internal"},{"body":{"id":24493,"nodeType":"Block","src":"8303:99:83","statements":[{"expression":{"arguments":[{"expression":{"arguments":[{"id":24485,"name":"storageSlot","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":23952,"src":"8352:11:83","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes32","typeString":"bytes32"}],"expression":{"id":24483,"name":"StorageSlot","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":11032,"src":"8327:11:83","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_StorageSlot_$11032_$","typeString":"type(library StorageSlot)"}},"id":24484,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"8339:12:83","memberName":"getBytesSlot","nodeType":"MemberAccess","referencedDeclaration":11020,"src":"8327:24:83","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_bytes32_$returns$_t_struct$_BytesSlot_$10932_storage_ptr_$","typeString":"function (bytes32) pure returns (struct StorageSlot.BytesSlot storage pointer)"}},"id":24486,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"8327:37:83","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_struct$_BytesSlot_$10932_storage_ptr","typeString":"struct StorageSlot.BytesSlot storage pointer"}},"id":24487,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"8365:5:83","memberName":"value","nodeType":"MemberAccess","referencedDeclaration":10931,"src":"8327:43:83","typeDescriptions":{"typeIdentifier":"t_bytes_storage","typeString":"bytes storage ref"}},{"components":[{"expression":{"id":24488,"name":"SwapLibrary","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1879,"src":"8373:11:83","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_SwapLibrary_$1879_$","typeString":"type(library SwapLibrary)"}},"id":24489,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"8385:10:83","memberName":"SwapConfig","nodeType":"MemberAccess","referencedDeclaration":1113,"src":"8373:22:83","typeDescriptions":{"typeIdentifier":"t_type$_t_struct$_SwapConfig_$1113_storage_ptr_$","typeString":"type(struct SwapLibrary.SwapConfig storage pointer)"}}],"id":24490,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"8372:24:83","typeDescriptions":{"typeIdentifier":"t_type$_t_struct$_SwapConfig_$1113_storage_ptr_$","typeString":"type(struct SwapLibrary.SwapConfig storage pointer)"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes_storage","typeString":"bytes storage ref"},{"typeIdentifier":"t_type$_t_struct$_SwapConfig_$1113_storage_ptr_$","typeString":"type(struct SwapLibrary.SwapConfig storage pointer)"}],"expression":{"id":24481,"name":"abi","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-1,"src":"8316:3:83","typeDescriptions":{"typeIdentifier":"t_magic_abi","typeString":"abi"}},"id":24482,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberLocation":"8320:6:83","memberName":"decode","nodeType":"MemberAccess","src":"8316:10:83","typeDescriptions":{"typeIdentifier":"t_function_abidecode_pure$__$returns$__$","typeString":"function () pure"}},"id":24491,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"8316:81:83","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_struct$_SwapConfig_$1113_memory_ptr","typeString":"struct SwapLibrary.SwapConfig memory"}},"functionReturnParameters":24480,"id":24492,"nodeType":"Return","src":"8309:88:83"}]},"id":24494,"implemented":true,"kind":"function","modifiers":[],"name":"_getSwapConfigSelf","nameLocation":"8228:18:83","nodeType":"FunctionDefinition","parameters":{"id":24476,"nodeType":"ParameterList","parameters":[],"src":"8246:2:83"},"returnParameters":{"id":24480,"nodeType":"ParameterList","parameters":[{"constant":false,"id":24479,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":24494,"src":"8272:29:83","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_struct$_SwapConfig_$1113_memory_ptr","typeString":"struct SwapLibrary.SwapConfig"},"typeName":{"id":24478,"nodeType":"UserDefinedTypeName","pathNode":{"id":24477,"name":"SwapLibrary.SwapConfig","nameLocations":["8272:11:83","8284:10:83"],"nodeType":"IdentifierPath","referencedDeclaration":1113,"src":"8272:22:83"},"referencedDeclaration":1113,"src":"8272:22:83","typeDescriptions":{"typeIdentifier":"t_struct$_SwapConfig_$1113_storage_ptr","typeString":"struct SwapLibrary.SwapConfig"}},"visibility":"internal"}],"src":"8271:31:83"},"scope":24509,"src":"8219:183:83","stateMutability":"view","virtual":false,"visibility":"internal"},{"body":{"id":24507,"nodeType":"Block","src":"8633:43:83","statements":[{"expression":{"arguments":[{"id":24504,"name":"contract_","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":24497,"src":"8661:9:83","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"id":24503,"name":"_getSwapConfig","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":24475,"src":"8646:14:83","typeDescriptions":{"typeIdentifier":"t_function_internal_view$_t_address_$returns$_t_struct$_SwapConfig_$1113_memory_ptr_$","typeString":"function (address) view returns (struct SwapLibrary.SwapConfig memory)"}},"id":24505,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"8646:25:83","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_struct$_SwapConfig_$1113_memory_ptr","typeString":"struct SwapLibrary.SwapConfig memory"}},"functionReturnParameters":24502,"id":24506,"nodeType":"Return","src":"8639:32:83"}]},"documentation":{"id":24495,"nodeType":"StructuredDocumentation","src":"8406:130:83","text":" @dev Returns the swap configuration of the given contract.\n @param contract_ Address of the vault contract"},"functionSelector":"42b054f0","id":24508,"implemented":true,"kind":"function","modifiers":[],"name":"getSwapConfig","nameLocation":"8548:13:83","nodeType":"FunctionDefinition","parameters":{"id":24498,"nodeType":"ParameterList","parameters":[{"constant":false,"id":24497,"mutability":"mutable","name":"contract_","nameLocation":"8570:9:83","nodeType":"VariableDeclaration","scope":24508,"src":"8562:17:83","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":24496,"name":"address","nodeType":"ElementaryTypeName","src":"8562:7:83","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"8561:19:83"},"returnParameters":{"id":24502,"nodeType":"ParameterList","parameters":[{"constant":false,"id":24501,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":24508,"src":"8602:29:83","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_struct$_SwapConfig_$1113_memory_ptr","typeString":"struct SwapLibrary.SwapConfig"},"typeName":{"id":24500,"nodeType":"UserDefinedTypeName","pathNode":{"id":24499,"name":"SwapLibrary.SwapConfig","nameLocations":["8602:11:83","8614:10:83"],"nodeType":"IdentifierPath","referencedDeclaration":1113,"src":"8602:22:83"},"referencedDeclaration":1113,"src":"8602:22:83","typeDescriptions":{"typeIdentifier":"t_struct$_SwapConfig_$1113_storage_ptr","typeString":"struct SwapLibrary.SwapConfig"}},"visibility":"internal"}],"src":"8601:31:83"},"scope":24509,"src":"8539:137:83","stateMutability":"view","virtual":false,"visibility":"public"}],"scope":24510,"src":"820:7858:83","usedErrors":[23968,23970,23972,23974],"usedEvents":[23966]}],"src":"39:8640:83"},"id":83},"contracts/strategies/SwapStableAaveV3InvestStrategy.sol":{"ast":{"absolutePath":"contracts/strategies/SwapStableAaveV3InvestStrategy.sol","exportedSymbols":{"DataTypes":[18092],"IERC20Metadata":[9411],"IPool":[19003],"ReserveConfiguration":[20496],"SwapStableAaveV3InvestStrategy":[24845],"SwapStableInvestStrategy":[24887]},"id":24846,"license":"Apache-2.0","nodeType":"SourceUnit","nodes":[{"id":24511,"literals":["solidity","^","0.8",".0"],"nodeType":"PragmaDirective","src":"39:23:84"},{"absolutePath":"contracts/dependencies/aave-v3/IPool.sol","file":"../dependencies/aave-v3/IPool.sol","id":24513,"nameLocation":"-1:-1:-1","nodeType":"ImportDirective","scope":24846,"sourceUnit":19004,"src":"64:56:84","symbolAliases":[{"foreign":{"id":24512,"name":"IPool","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":19003,"src":"72:5:84","typeDescriptions":{}},"nameLocation":"-1:-1:-1"}],"unitAlias":""},{"absolutePath":"contracts/dependencies/aave-v3/DataTypes.sol","file":"../dependencies/aave-v3/DataTypes.sol","id":24515,"nameLocation":"-1:-1:-1","nodeType":"ImportDirective","scope":24846,"sourceUnit":18093,"src":"121:64:84","symbolAliases":[{"foreign":{"id":24514,"name":"DataTypes","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":18092,"src":"129:9:84","typeDescriptions":{}},"nameLocation":"-1:-1:-1"}],"unitAlias":""},{"absolutePath":"contracts/dependencies/aave-v3/ReserveConfiguration.sol","file":"../dependencies/aave-v3/ReserveConfiguration.sol","id":24517,"nameLocation":"-1:-1:-1","nodeType":"ImportDirective","scope":24846,"sourceUnit":20497,"src":"186:86:84","symbolAliases":[{"foreign":{"id":24516,"name":"ReserveConfiguration","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":20496,"src":"194:20:84","typeDescriptions":{}},"nameLocation":"-1:-1:-1"}],"unitAlias":""},{"absolutePath":"@openzeppelin/contracts/interfaces/IERC20Metadata.sol","file":"@openzeppelin/contracts/interfaces/IERC20Metadata.sol","id":24519,"nameLocation":"-1:-1:-1","nodeType":"ImportDirective","scope":24846,"sourceUnit":6958,"src":"273:85:84","symbolAliases":[{"foreign":{"id":24518,"name":"IERC20Metadata","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9411,"src":"281:14:84","typeDescriptions":{}},"nameLocation":"-1:-1:-1"}],"unitAlias":""},{"absolutePath":"contracts/strategies/SwapStableInvestStrategy.sol","file":"./SwapStableInvestStrategy.sol","id":24521,"nameLocation":"-1:-1:-1","nodeType":"ImportDirective","scope":24846,"sourceUnit":24888,"src":"359:72:84","symbolAliases":[{"foreign":{"id":24520,"name":"SwapStableInvestStrategy","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":24887,"src":"367:24:84","typeDescriptions":{}},"nameLocation":"-1:-1:-1"}],"unitAlias":""},{"abstract":false,"baseContracts":[{"baseName":{"id":24523,"name":"SwapStableInvestStrategy","nameLocations":["869:24:84"],"nodeType":"IdentifierPath","referencedDeclaration":24887,"src":"869:24:84"},"id":24524,"nodeType":"InheritanceSpecifier","src":"869:24:84"}],"canonicalName":"SwapStableAaveV3InvestStrategy","contractDependencies":[],"contractKind":"contract","documentation":{"id":24522,"nodeType":"StructuredDocumentation","src":"433:392:84","text":" @title SwapStableAaveV3InvestStrategy\n @dev Strategy that invests/deinvests by swapping into another token that has a stable price compared to the asset.\n      And then invests the resulting token in AAVE. Useful when equivalent assets like Bridged USDC and Native USDC\n      have different returns on AAVE.\n @custom:security-contact security@ensuro.co\n @author Ensuro"},"fullyImplemented":true,"id":24845,"linearizedBaseContracts":[24845,24887,24509,20725],"name":"SwapStableAaveV3InvestStrategy","nameLocation":"835:30:84","nodeType":"ContractDefinition","nodes":[{"global":false,"id":24528,"libraryName":{"id":24525,"name":"ReserveConfiguration","nameLocations":["904:20:84"],"nodeType":"IdentifierPath","referencedDeclaration":20496,"src":"904:20:84"},"nodeType":"UsingForDirective","src":"898:65:84","typeName":{"id":24527,"nodeType":"UserDefinedTypeName","pathNode":{"id":24526,"name":"DataTypes.ReserveConfigurationMap","nameLocations":["929:9:84","939:23:84"],"nodeType":"IdentifierPath","referencedDeclaration":17777,"src":"929:33:84"},"referencedDeclaration":17777,"src":"929:33:84","typeDescriptions":{"typeIdentifier":"t_struct$_ReserveConfigurationMap_$17777_storage_ptr","typeString":"struct DataTypes.ReserveConfigurationMap"}}},{"anonymous":false,"eventSelector":"323f803ab99bd4b7b37bba0e83169793239f293cc8b9d11837997563c5902eac","id":24532,"name":"ResupplyFailed","nameLocation":"973:14:84","nodeType":"EventDefinition","parameters":{"id":24531,"nodeType":"ParameterList","parameters":[{"constant":false,"id":24530,"indexed":false,"mutability":"mutable","name":"assets","nameLocation":"996:6:84","nodeType":"VariableDeclaration","scope":24532,"src":"988:14:84","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":24529,"name":"uint256","nodeType":"ElementaryTypeName","src":"988:7:84","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"987:16:84"},"src":"967:37:84"},{"constant":false,"id":24535,"mutability":"immutable","name":"_aave","nameLocation":"1033:5:84","nodeType":"VariableDeclaration","scope":24845,"src":"1008:30:84","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_contract$_IPool_$19003","typeString":"contract IPool"},"typeName":{"id":24534,"nodeType":"UserDefinedTypeName","pathNode":{"id":24533,"name":"IPool","nameLocations":["1008:5:84"],"nodeType":"IdentifierPath","referencedDeclaration":19003,"src":"1008:5:84"},"referencedDeclaration":19003,"src":"1008:5:84","typeDescriptions":{"typeIdentifier":"t_contract$_IPool_$19003","typeString":"contract IPool"}},"visibility":"internal"},{"body":{"id":24559,"nodeType":"Block","src":"1601:24:84","statements":[{"expression":{"id":24557,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":24555,"name":"_aave","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":24535,"src":"1607:5:84","typeDescriptions":{"typeIdentifier":"t_contract$_IPool_$19003","typeString":"contract IPool"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"id":24556,"name":"aave_","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":24547,"src":"1615:5:84","typeDescriptions":{"typeIdentifier":"t_contract$_IPool_$19003","typeString":"contract IPool"}},"src":"1607:13:84","typeDescriptions":{"typeIdentifier":"t_contract$_IPool_$19003","typeString":"contract IPool"}},"id":24558,"nodeType":"ExpressionStatement","src":"1607:13:84"}]},"documentation":{"id":24536,"nodeType":"StructuredDocumentation","src":"1042:388:84","text":" @dev Constructor of the strategy\n @param asset_ The address of the underlying token used for accounting, depositing, and withdrawing.\n @param investAsset_ The address of the tokens that are later supplied to AAVE\n @param price_ Approximate amount of units of _asset required to acquire a unit of _investAsset\n @param aave_ Address of AAVE Pool contract"},"id":24560,"implemented":true,"kind":"constructor","modifiers":[{"arguments":[{"id":24550,"name":"asset_","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":24539,"src":"1571:6:84","typeDescriptions":{"typeIdentifier":"t_contract$_IERC20Metadata_$9411","typeString":"contract IERC20Metadata"}},{"id":24551,"name":"investAsset_","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":24542,"src":"1579:12:84","typeDescriptions":{"typeIdentifier":"t_contract$_IERC20Metadata_$9411","typeString":"contract IERC20Metadata"}},{"id":24552,"name":"price_","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":24544,"src":"1593:6:84","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"id":24553,"kind":"baseConstructorSpecifier","modifierName":{"id":24549,"name":"SwapStableInvestStrategy","nameLocations":["1546:24:84"],"nodeType":"IdentifierPath","referencedDeclaration":24887,"src":"1546:24:84"},"nodeType":"ModifierInvocation","src":"1546:54:84"}],"name":"","nameLocation":"-1:-1:-1","nodeType":"FunctionDefinition","parameters":{"id":24548,"nodeType":"ParameterList","parameters":[{"constant":false,"id":24539,"mutability":"mutable","name":"asset_","nameLocation":"1465:6:84","nodeType":"VariableDeclaration","scope":24560,"src":"1450:21:84","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_contract$_IERC20Metadata_$9411","typeString":"contract IERC20Metadata"},"typeName":{"id":24538,"nodeType":"UserDefinedTypeName","pathNode":{"id":24537,"name":"IERC20Metadata","nameLocations":["1450:14:84"],"nodeType":"IdentifierPath","referencedDeclaration":9411,"src":"1450:14:84"},"referencedDeclaration":9411,"src":"1450:14:84","typeDescriptions":{"typeIdentifier":"t_contract$_IERC20Metadata_$9411","typeString":"contract IERC20Metadata"}},"visibility":"internal"},{"constant":false,"id":24542,"mutability":"mutable","name":"investAsset_","nameLocation":"1492:12:84","nodeType":"VariableDeclaration","scope":24560,"src":"1477:27:84","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_contract$_IERC20Metadata_$9411","typeString":"contract IERC20Metadata"},"typeName":{"id":24541,"nodeType":"UserDefinedTypeName","pathNode":{"id":24540,"name":"IERC20Metadata","nameLocations":["1477:14:84"],"nodeType":"IdentifierPath","referencedDeclaration":9411,"src":"1477:14:84"},"referencedDeclaration":9411,"src":"1477:14:84","typeDescriptions":{"typeIdentifier":"t_contract$_IERC20Metadata_$9411","typeString":"contract IERC20Metadata"}},"visibility":"internal"},{"constant":false,"id":24544,"mutability":"mutable","name":"price_","nameLocation":"1518:6:84","nodeType":"VariableDeclaration","scope":24560,"src":"1510:14:84","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":24543,"name":"uint256","nodeType":"ElementaryTypeName","src":"1510:7:84","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":24547,"mutability":"mutable","name":"aave_","nameLocation":"1536:5:84","nodeType":"VariableDeclaration","scope":24560,"src":"1530:11:84","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_contract$_IPool_$19003","typeString":"contract IPool"},"typeName":{"id":24546,"nodeType":"UserDefinedTypeName","pathNode":{"id":24545,"name":"IPool","nameLocations":["1530:5:84"],"nodeType":"IdentifierPath","referencedDeclaration":19003,"src":"1530:5:84"},"referencedDeclaration":19003,"src":"1530:5:84","typeDescriptions":{"typeIdentifier":"t_contract$_IPool_$19003","typeString":"contract IPool"}},"visibility":"internal"}],"src":"1444:101:84"},"returnParameters":{"id":24554,"nodeType":"ParameterList","parameters":[],"src":"1601:0:84"},"scope":24845,"src":"1433:192:84","stateMutability":"nonpayable","virtual":false,"visibility":"public"},{"body":{"id":24574,"nodeType":"Block","src":"1706:61:84","statements":[{"expression":{"arguments":[{"arguments":[{"id":24570,"name":"_investAsset","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":23958,"src":"1748:12:84","typeDescriptions":{"typeIdentifier":"t_contract$_IERC20Metadata_$9411","typeString":"contract IERC20Metadata"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_contract$_IERC20Metadata_$9411","typeString":"contract IERC20Metadata"}],"id":24569,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"1740:7:84","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":24568,"name":"address","nodeType":"ElementaryTypeName","src":"1740:7:84","typeDescriptions":{}}},"id":24571,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"1740:21:84","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"expression":{"id":24566,"name":"_aave","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":24535,"src":"1719:5:84","typeDescriptions":{"typeIdentifier":"t_contract$_IPool_$19003","typeString":"contract IPool"}},"id":24567,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"1725:14:84","memberName":"getReserveData","nodeType":"MemberAccess","referencedDeclaration":18853,"src":"1719:20:84","typeDescriptions":{"typeIdentifier":"t_function_external_view$_t_address_$returns$_t_struct$_ReserveData_$17774_memory_ptr_$","typeString":"function (address) view external returns (struct DataTypes.ReserveData memory)"}},"id":24572,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"1719:43:84","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_struct$_ReserveData_$17774_memory_ptr","typeString":"struct DataTypes.ReserveData memory"}},"functionReturnParameters":24565,"id":24573,"nodeType":"Return","src":"1712:50:84"}]},"id":24575,"implemented":true,"kind":"function","modifiers":[],"name":"_reserveData","nameLocation":"1638:12:84","nodeType":"FunctionDefinition","parameters":{"id":24561,"nodeType":"ParameterList","parameters":[],"src":"1650:2:84"},"returnParameters":{"id":24565,"nodeType":"ParameterList","parameters":[{"constant":false,"id":24564,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":24575,"src":"1676:28:84","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_struct$_ReserveData_$17774_memory_ptr","typeString":"struct DataTypes.ReserveData"},"typeName":{"id":24563,"nodeType":"UserDefinedTypeName","pathNode":{"id":24562,"name":"DataTypes.ReserveData","nameLocations":["1676:9:84","1686:11:84"],"nodeType":"IdentifierPath","referencedDeclaration":17774,"src":"1676:21:84"},"referencedDeclaration":17774,"src":"1676:21:84","typeDescriptions":{"typeIdentifier":"t_struct$_ReserveData_$17774_storage_ptr","typeString":"struct DataTypes.ReserveData"}},"visibility":"internal"}],"src":"1675:30:84"},"scope":24845,"src":"1629:138:84","stateMutability":"view","virtual":false,"visibility":"internal"},{"baseFunctions":[24105],"body":{"id":24608,"nodeType":"Block","src":"1843:172:84","statements":[{"assignments":[24585],"declarations":[{"constant":false,"id":24585,"mutability":"mutable","name":"aToken","nameLocation":"1864:6:84","nodeType":"VariableDeclaration","scope":24608,"src":"1849:21:84","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_contract$_IERC20Metadata_$9411","typeString":"contract IERC20Metadata"},"typeName":{"id":24584,"nodeType":"UserDefinedTypeName","pathNode":{"id":24583,"name":"IERC20Metadata","nameLocations":["1849:14:84"],"nodeType":"IdentifierPath","referencedDeclaration":9411,"src":"1849:14:84"},"referencedDeclaration":9411,"src":"1849:14:84","typeDescriptions":{"typeIdentifier":"t_contract$_IERC20Metadata_$9411","typeString":"contract IERC20Metadata"}},"visibility":"internal"}],"id":24591,"initialValue":{"arguments":[{"expression":{"arguments":[],"expression":{"argumentTypes":[],"id":24587,"name":"_reserveData","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":24575,"src":"1888:12:84","typeDescriptions":{"typeIdentifier":"t_function_internal_view$__$returns$_t_struct$_ReserveData_$17774_memory_ptr_$","typeString":"function () view returns (struct DataTypes.ReserveData memory)"}},"id":24588,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"1888:14:84","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_struct$_ReserveData_$17774_memory_ptr","typeString":"struct DataTypes.ReserveData memory"}},"id":24589,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"1903:13:84","memberName":"aTokenAddress","nodeType":"MemberAccess","referencedDeclaration":17761,"src":"1888:28:84","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"id":24586,"name":"IERC20Metadata","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9411,"src":"1873:14:84","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_IERC20Metadata_$9411_$","typeString":"type(contract IERC20Metadata)"}},"id":24590,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"1873:44:84","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_contract$_IERC20Metadata_$9411","typeString":"contract IERC20Metadata"}},"nodeType":"VariableDeclarationStatement","src":"1849:68:84"},{"condition":{"commonType":{"typeIdentifier":"t_bool","typeString":"bool"},"id":24603,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":24593,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"UnaryOperation","operator":"!","prefix":true,"src":"1927:6:84","subExpression":{"id":24592,"name":"force","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":24577,"src":"1928:5:84","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"nodeType":"BinaryOperation","operator":"&&","rightExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":24602,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"arguments":[{"arguments":[{"id":24598,"name":"this","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-28,"src":"1962:4:84","typeDescriptions":{"typeIdentifier":"t_contract$_SwapStableAaveV3InvestStrategy_$24845","typeString":"contract SwapStableAaveV3InvestStrategy"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_contract$_SwapStableAaveV3InvestStrategy_$24845","typeString":"contract SwapStableAaveV3InvestStrategy"}],"id":24597,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"1954:7:84","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":24596,"name":"address","nodeType":"ElementaryTypeName","src":"1954:7:84","typeDescriptions":{}}},"id":24599,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"1954:13:84","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"expression":{"id":24594,"name":"aToken","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":24585,"src":"1937:6:84","typeDescriptions":{"typeIdentifier":"t_contract$_IERC20Metadata_$9411","typeString":"contract IERC20Metadata"}},"id":24595,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"1944:9:84","memberName":"balanceOf","nodeType":"MemberAccess","referencedDeclaration":8636,"src":"1937:16:84","typeDescriptions":{"typeIdentifier":"t_function_external_view$_t_address_$returns$_t_uint256_$","typeString":"function (address) view external returns (uint256)"}},"id":24600,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"1937:31:84","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"!=","rightExpression":{"hexValue":"30","id":24601,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"1972:1:84","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"1937:36:84","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"src":"1927:46:84","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":24607,"nodeType":"IfStatement","src":"1923:87:84","trueBody":{"errorCall":{"arguments":[],"expression":{"argumentTypes":[],"id":24604,"name":"CannotDisconnectWithAssets","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":23970,"src":"1982:26:84","typeDescriptions":{"typeIdentifier":"t_function_error_pure$__$returns$_t_error_$","typeString":"function () pure returns (error)"}},"id":24605,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"1982:28:84","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_error","typeString":"error"}},"id":24606,"nodeType":"RevertStatement","src":"1975:35:84"}}]},"functionSelector":"5a117456","id":24609,"implemented":true,"kind":"function","modifiers":[{"id":24581,"kind":"modifierInvocation","modifierName":{"id":24580,"name":"onlyDelegCall","nameLocations":["1829:13:84"],"nodeType":"IdentifierPath","referencedDeclaration":23990,"src":"1829:13:84"},"nodeType":"ModifierInvocation","src":"1829:13:84"}],"name":"disconnect","nameLocation":"1780:10:84","nodeType":"FunctionDefinition","overrides":{"id":24579,"nodeType":"OverrideSpecifier","overrides":[],"src":"1820:8:84"},"parameters":{"id":24578,"nodeType":"ParameterList","parameters":[{"constant":false,"id":24577,"mutability":"mutable","name":"force","nameLocation":"1796:5:84","nodeType":"VariableDeclaration","scope":24609,"src":"1791:10:84","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":24576,"name":"bool","nodeType":"ElementaryTypeName","src":"1791:4:84","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"}],"src":"1790:12:84"},"returnParameters":{"id":24582,"nodeType":"ParameterList","parameters":[],"src":"1843:0:84"},"scope":24845,"src":"1771:244:84","stateMutability":"nonpayable","virtual":true,"visibility":"external"},{"baseFunctions":[24119],"body":{"id":24642,"nodeType":"Block","src":"2106:259:84","statements":[{"assignments":[24621],"declarations":[{"constant":false,"id":24621,"mutability":"mutable","name":"reserve","nameLocation":"2141:7:84","nodeType":"VariableDeclaration","scope":24642,"src":"2112:36:84","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_struct$_ReserveData_$17774_memory_ptr","typeString":"struct DataTypes.ReserveData"},"typeName":{"id":24620,"nodeType":"UserDefinedTypeName","pathNode":{"id":24619,"name":"DataTypes.ReserveData","nameLocations":["2112:9:84","2122:11:84"],"nodeType":"IdentifierPath","referencedDeclaration":17774,"src":"2112:21:84"},"referencedDeclaration":17774,"src":"2112:21:84","typeDescriptions":{"typeIdentifier":"t_struct$_ReserveData_$17774_storage_ptr","typeString":"struct DataTypes.ReserveData"}},"visibility":"internal"}],"id":24624,"initialValue":{"arguments":[],"expression":{"argumentTypes":[],"id":24622,"name":"_reserveData","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":24575,"src":"2151:12:84","typeDescriptions":{"typeIdentifier":"t_function_internal_view$__$returns$_t_struct$_ReserveData_$17774_memory_ptr_$","typeString":"function () view returns (struct DataTypes.ReserveData memory)"}},"id":24623,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"2151:14:84","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_struct$_ReserveData_$17774_memory_ptr","typeString":"struct DataTypes.ReserveData memory"}},"nodeType":"VariableDeclarationStatement","src":"2112:53:84"},{"condition":{"commonType":{"typeIdentifier":"t_bool","typeString":"bool"},"id":24634,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":24629,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"UnaryOperation","operator":"!","prefix":true,"src":"2175:34:84","subExpression":{"arguments":[],"expression":{"argumentTypes":[],"expression":{"expression":{"id":24625,"name":"reserve","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":24621,"src":"2176:7:84","typeDescriptions":{"typeIdentifier":"t_struct$_ReserveData_$17774_memory_ptr","typeString":"struct DataTypes.ReserveData memory"}},"id":24626,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"2184:13:84","memberName":"configuration","nodeType":"MemberAccess","referencedDeclaration":17745,"src":"2176:21:84","typeDescriptions":{"typeIdentifier":"t_struct$_ReserveConfigurationMap_$17777_memory_ptr","typeString":"struct DataTypes.ReserveConfigurationMap memory"}},"id":24627,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"2198:9:84","memberName":"getActive","nodeType":"MemberAccess","referencedDeclaration":19622,"src":"2176:31:84","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_struct$_ReserveConfigurationMap_$17777_memory_ptr_$returns$_t_bool_$attached_to$_t_struct$_ReserveConfigurationMap_$17777_memory_ptr_$","typeString":"function (struct DataTypes.ReserveConfigurationMap memory) pure returns (bool)"}},"id":24628,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"2176:33:84","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"nodeType":"BinaryOperation","operator":"||","rightExpression":{"arguments":[],"expression":{"argumentTypes":[],"expression":{"expression":{"id":24630,"name":"reserve","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":24621,"src":"2213:7:84","typeDescriptions":{"typeIdentifier":"t_struct$_ReserveData_$17774_memory_ptr","typeString":"struct DataTypes.ReserveData memory"}},"id":24631,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"2221:13:84","memberName":"configuration","nodeType":"MemberAccess","referencedDeclaration":17745,"src":"2213:21:84","typeDescriptions":{"typeIdentifier":"t_struct$_ReserveConfigurationMap_$17777_memory_ptr","typeString":"struct DataTypes.ReserveConfigurationMap memory"}},"id":24632,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"2235:9:84","memberName":"getPaused","nodeType":"MemberAccess","referencedDeclaration":19722,"src":"2213:31:84","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_struct$_ReserveConfigurationMap_$17777_memory_ptr_$returns$_t_bool_$attached_to$_t_struct$_ReserveConfigurationMap_$17777_memory_ptr_$","typeString":"function (struct DataTypes.ReserveConfigurationMap memory) pure returns (bool)"}},"id":24633,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"2213:33:84","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"src":"2175:71:84","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":24637,"nodeType":"IfStatement","src":"2171:85:84","trueBody":{"expression":{"hexValue":"30","id":24635,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"2255:1:84","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"functionReturnParameters":24616,"id":24636,"nodeType":"Return","src":"2248:8:84"}},{"expression":{"arguments":[{"id":24639,"name":"contract_","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":24611,"src":"2281:9:84","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"id":24638,"name":"totalAssets","nodeType":"Identifier","overloadedDeclarations":[24705],"referencedDeclaration":24705,"src":"2269:11:84","typeDescriptions":{"typeIdentifier":"t_function_internal_view$_t_address_$returns$_t_uint256_$","typeString":"function (address) view returns (uint256)"}},"id":24640,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"2269:22:84","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"functionReturnParameters":24616,"id":24641,"nodeType":"Return","src":"2262:29:84"}]},"functionSelector":"ce96cb77","id":24643,"implemented":true,"kind":"function","modifiers":[],"name":"maxWithdraw","nameLocation":"2028:11:84","nodeType":"FunctionDefinition","overrides":{"id":24613,"nodeType":"OverrideSpecifier","overrides":[],"src":"2079:8:84"},"parameters":{"id":24612,"nodeType":"ParameterList","parameters":[{"constant":false,"id":24611,"mutability":"mutable","name":"contract_","nameLocation":"2048:9:84","nodeType":"VariableDeclaration","scope":24643,"src":"2040:17:84","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":24610,"name":"address","nodeType":"ElementaryTypeName","src":"2040:7:84","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"2039:19:84"},"returnParameters":{"id":24616,"nodeType":"ParameterList","parameters":[{"constant":false,"id":24615,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":24643,"src":"2097:7:84","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":24614,"name":"uint256","nodeType":"ElementaryTypeName","src":"2097:7:84","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"2096:9:84"},"scope":24845,"src":"2019:346:84","stateMutability":"view","virtual":true,"visibility":"public"},{"baseFunctions":[24135],"body":{"id":24683,"nodeType":"Block","src":"2459:254:84","statements":[{"assignments":[24655],"declarations":[{"constant":false,"id":24655,"mutability":"mutable","name":"reserve","nameLocation":"2494:7:84","nodeType":"VariableDeclaration","scope":24683,"src":"2465:36:84","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_struct$_ReserveData_$17774_memory_ptr","typeString":"struct DataTypes.ReserveData"},"typeName":{"id":24654,"nodeType":"UserDefinedTypeName","pathNode":{"id":24653,"name":"DataTypes.ReserveData","nameLocations":["2465:9:84","2475:11:84"],"nodeType":"IdentifierPath","referencedDeclaration":17774,"src":"2465:21:84"},"referencedDeclaration":17774,"src":"2465:21:84","typeDescriptions":{"typeIdentifier":"t_struct$_ReserveData_$17774_storage_ptr","typeString":"struct DataTypes.ReserveData"}},"visibility":"internal"}],"id":24658,"initialValue":{"arguments":[],"expression":{"argumentTypes":[],"id":24656,"name":"_reserveData","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":24575,"src":"2504:12:84","typeDescriptions":{"typeIdentifier":"t_function_internal_view$__$returns$_t_struct$_ReserveData_$17774_memory_ptr_$","typeString":"function () view returns (struct DataTypes.ReserveData memory)"}},"id":24657,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"2504:14:84","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_struct$_ReserveData_$17774_memory_ptr","typeString":"struct DataTypes.ReserveData memory"}},"nodeType":"VariableDeclarationStatement","src":"2465:53:84"},{"condition":{"commonType":{"typeIdentifier":"t_bool","typeString":"bool"},"id":24673,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"commonType":{"typeIdentifier":"t_bool","typeString":"bool"},"id":24668,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":24663,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"UnaryOperation","operator":"!","prefix":true,"src":"2528:34:84","subExpression":{"arguments":[],"expression":{"argumentTypes":[],"expression":{"expression":{"id":24659,"name":"reserve","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":24655,"src":"2529:7:84","typeDescriptions":{"typeIdentifier":"t_struct$_ReserveData_$17774_memory_ptr","typeString":"struct DataTypes.ReserveData memory"}},"id":24660,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"2537:13:84","memberName":"configuration","nodeType":"MemberAccess","referencedDeclaration":17745,"src":"2529:21:84","typeDescriptions":{"typeIdentifier":"t_struct$_ReserveConfigurationMap_$17777_memory_ptr","typeString":"struct DataTypes.ReserveConfigurationMap memory"}},"id":24661,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"2551:9:84","memberName":"getActive","nodeType":"MemberAccess","referencedDeclaration":19622,"src":"2529:31:84","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_struct$_ReserveConfigurationMap_$17777_memory_ptr_$returns$_t_bool_$attached_to$_t_struct$_ReserveConfigurationMap_$17777_memory_ptr_$","typeString":"function (struct DataTypes.ReserveConfigurationMap memory) pure returns (bool)"}},"id":24662,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"2529:33:84","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"nodeType":"BinaryOperation","operator":"||","rightExpression":{"arguments":[],"expression":{"argumentTypes":[],"expression":{"expression":{"id":24664,"name":"reserve","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":24655,"src":"2566:7:84","typeDescriptions":{"typeIdentifier":"t_struct$_ReserveData_$17774_memory_ptr","typeString":"struct DataTypes.ReserveData memory"}},"id":24665,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"2574:13:84","memberName":"configuration","nodeType":"MemberAccess","referencedDeclaration":17745,"src":"2566:21:84","typeDescriptions":{"typeIdentifier":"t_struct$_ReserveConfigurationMap_$17777_memory_ptr","typeString":"struct DataTypes.ReserveConfigurationMap memory"}},"id":24666,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"2588:9:84","memberName":"getPaused","nodeType":"MemberAccess","referencedDeclaration":19722,"src":"2566:31:84","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_struct$_ReserveConfigurationMap_$17777_memory_ptr_$returns$_t_bool_$attached_to$_t_struct$_ReserveConfigurationMap_$17777_memory_ptr_$","typeString":"function (struct DataTypes.ReserveConfigurationMap memory) pure returns (bool)"}},"id":24667,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"2566:33:84","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"src":"2528:71:84","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"nodeType":"BinaryOperation","operator":"||","rightExpression":{"arguments":[],"expression":{"argumentTypes":[],"expression":{"expression":{"id":24669,"name":"reserve","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":24655,"src":"2603:7:84","typeDescriptions":{"typeIdentifier":"t_struct$_ReserveData_$17774_memory_ptr","typeString":"struct DataTypes.ReserveData memory"}},"id":24670,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"2611:13:84","memberName":"configuration","nodeType":"MemberAccess","referencedDeclaration":17745,"src":"2603:21:84","typeDescriptions":{"typeIdentifier":"t_struct$_ReserveConfigurationMap_$17777_memory_ptr","typeString":"struct DataTypes.ReserveConfigurationMap memory"}},"id":24671,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"2625:9:84","memberName":"getFrozen","nodeType":"MemberAccess","referencedDeclaration":19672,"src":"2603:31:84","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_struct$_ReserveConfigurationMap_$17777_memory_ptr_$returns$_t_bool_$attached_to$_t_struct$_ReserveConfigurationMap_$17777_memory_ptr_$","typeString":"function (struct DataTypes.ReserveConfigurationMap memory) pure returns (bool)"}},"id":24672,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"2603:33:84","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"src":"2528:108:84","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":24676,"nodeType":"IfStatement","src":"2524:128:84","trueBody":{"expression":{"hexValue":"30","id":24674,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"2651:1:84","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"functionReturnParameters":24650,"id":24675,"nodeType":"Return","src":"2644:8:84"}},{"expression":{"expression":{"arguments":[{"id":24679,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"2696:7:84","typeDescriptions":{"typeIdentifier":"t_type$_t_uint256_$","typeString":"type(uint256)"},"typeName":{"id":24678,"name":"uint256","nodeType":"ElementaryTypeName","src":"2696:7:84","typeDescriptions":{}}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_type$_t_uint256_$","typeString":"type(uint256)"}],"id":24677,"name":"type","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-27,"src":"2691:4:84","typeDescriptions":{"typeIdentifier":"t_function_metatype_pure$__$returns$__$","typeString":"function () pure"}},"id":24680,"isConstant":false,"isLValue":false,"isPure":true,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"2691:13:84","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_magic_meta_type_t_uint256","typeString":"type(uint256)"}},"id":24681,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberLocation":"2705:3:84","memberName":"max","nodeType":"MemberAccess","src":"2691:17:84","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"functionReturnParameters":24650,"id":24682,"nodeType":"Return","src":"2684:24:84"}]},"functionSelector":"402d267d","id":24684,"implemented":true,"kind":"function","modifiers":[],"name":"maxDeposit","nameLocation":"2378:10:84","nodeType":"FunctionDefinition","overrides":{"id":24647,"nodeType":"OverrideSpecifier","overrides":[],"src":"2432:8:84"},"parameters":{"id":24646,"nodeType":"ParameterList","parameters":[{"constant":false,"id":24645,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":24684,"src":"2389:7:84","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":24644,"name":"address","nodeType":"ElementaryTypeName","src":"2389:7:84","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"2388:23:84"},"returnParameters":{"id":24650,"nodeType":"ParameterList","parameters":[{"constant":false,"id":24649,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":24684,"src":"2450:7:84","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":24648,"name":"uint256","nodeType":"ElementaryTypeName","src":"2450:7:84","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"2449:9:84"},"scope":24845,"src":"2369:344:84","stateMutability":"view","virtual":true,"visibility":"public"},{"baseFunctions":[24239],"body":{"id":24704,"nodeType":"Block","src":"2811:110:84","statements":[{"expression":{"arguments":[{"arguments":[{"id":24699,"name":"contract_","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":24686,"src":"2894:9:84","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"expression":{"arguments":[{"expression":{"arguments":[],"expression":{"argumentTypes":[],"id":24694,"name":"_reserveData","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":24575,"src":"2854:12:84","typeDescriptions":{"typeIdentifier":"t_function_internal_view$__$returns$_t_struct$_ReserveData_$17774_memory_ptr_$","typeString":"function () view returns (struct DataTypes.ReserveData memory)"}},"id":24695,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"2854:14:84","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_struct$_ReserveData_$17774_memory_ptr","typeString":"struct DataTypes.ReserveData memory"}},"id":24696,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"2869:13:84","memberName":"aTokenAddress","nodeType":"MemberAccess","referencedDeclaration":17761,"src":"2854:28:84","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"id":24693,"name":"IERC20Metadata","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9411,"src":"2839:14:84","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_IERC20Metadata_$9411_$","typeString":"type(contract IERC20Metadata)"}},"id":24697,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"2839:44:84","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_contract$_IERC20Metadata_$9411","typeString":"contract IERC20Metadata"}},"id":24698,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"2884:9:84","memberName":"balanceOf","nodeType":"MemberAccess","referencedDeclaration":8636,"src":"2839:54:84","typeDescriptions":{"typeIdentifier":"t_function_external_view$_t_address_$returns$_t_uint256_$","typeString":"function (address) view external returns (uint256)"}},"id":24700,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"2839:65:84","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"id":24701,"name":"contract_","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":24686,"src":"2906:9:84","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_address","typeString":"address"}],"id":24692,"name":"_convertAssets","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":24221,"src":"2824:14:84","typeDescriptions":{"typeIdentifier":"t_function_internal_view$_t_uint256_$_t_address_$returns$_t_uint256_$","typeString":"function (uint256,address) view returns (uint256)"}},"id":24702,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"2824:92:84","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"functionReturnParameters":24691,"id":24703,"nodeType":"Return","src":"2817:99:84"}]},"functionSelector":"f3e0ffbf","id":24705,"implemented":true,"kind":"function","modifiers":[],"name":"totalAssets","nameLocation":"2726:11:84","nodeType":"FunctionDefinition","overrides":{"id":24688,"nodeType":"OverrideSpecifier","overrides":[],"src":"2777:8:84"},"parameters":{"id":24687,"nodeType":"ParameterList","parameters":[{"constant":false,"id":24686,"mutability":"mutable","name":"contract_","nameLocation":"2746:9:84","nodeType":"VariableDeclaration","scope":24705,"src":"2738:17:84","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":24685,"name":"address","nodeType":"ElementaryTypeName","src":"2738:7:84","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"2737:19:84"},"returnParameters":{"id":24691,"nodeType":"ParameterList","parameters":[{"constant":false,"id":24690,"mutability":"mutable","name":"assets","nameLocation":"2803:6:84","nodeType":"VariableDeclaration","scope":24705,"src":"2795:14:84","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":24689,"name":"uint256","nodeType":"ElementaryTypeName","src":"2795:7:84","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"2794:16:84"},"scope":24845,"src":"2717:204:84","stateMutability":"view","virtual":true,"visibility":"public"},{"baseFunctions":[24321],"body":{"id":24753,"nodeType":"Block","src":"2997:478:84","statements":[{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":24715,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":24713,"name":"assets","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":24707,"src":"3007:6:84","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"hexValue":"30","id":24714,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"3017:1:84","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"3007:11:84","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":24717,"nodeType":"IfStatement","src":"3003:24:84","trueBody":{"functionReturnParameters":24712,"id":24716,"nodeType":"Return","src":"3020:7:84"}},{"expression":{"arguments":[{"arguments":[{"id":24723,"name":"_investAsset","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":23958,"src":"3109:12:84","typeDescriptions":{"typeIdentifier":"t_contract$_IERC20Metadata_$9411","typeString":"contract IERC20Metadata"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_contract$_IERC20Metadata_$9411","typeString":"contract IERC20Metadata"}],"id":24722,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"3101:7:84","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":24721,"name":"address","nodeType":"ElementaryTypeName","src":"3101:7:84","typeDescriptions":{}}},"id":24724,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"3101:21:84","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"expression":{"arguments":[{"id":24727,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"3129:7:84","typeDescriptions":{"typeIdentifier":"t_type$_t_uint256_$","typeString":"type(uint256)"},"typeName":{"id":24726,"name":"uint256","nodeType":"ElementaryTypeName","src":"3129:7:84","typeDescriptions":{}}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_type$_t_uint256_$","typeString":"type(uint256)"}],"id":24725,"name":"type","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-27,"src":"3124:4:84","typeDescriptions":{"typeIdentifier":"t_function_metatype_pure$__$returns$__$","typeString":"function () pure"}},"id":24728,"isConstant":false,"isLValue":false,"isPure":true,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"3124:13:84","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_magic_meta_type_t_uint256","typeString":"type(uint256)"}},"id":24729,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberLocation":"3138:3:84","memberName":"max","nodeType":"MemberAccess","src":"3124:17:84","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"arguments":[{"id":24732,"name":"this","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-28,"src":"3151:4:84","typeDescriptions":{"typeIdentifier":"t_contract$_SwapStableAaveV3InvestStrategy_$24845","typeString":"contract SwapStableAaveV3InvestStrategy"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_contract$_SwapStableAaveV3InvestStrategy_$24845","typeString":"contract SwapStableAaveV3InvestStrategy"}],"id":24731,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"3143:7:84","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":24730,"name":"address","nodeType":"ElementaryTypeName","src":"3143:7:84","typeDescriptions":{}}},"id":24733,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"3143:13:84","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_address","typeString":"address"}],"expression":{"id":24718,"name":"_aave","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":24535,"src":"3086:5:84","typeDescriptions":{"typeIdentifier":"t_contract$_IPool_$19003","typeString":"contract IPool"}},"id":24720,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"3092:8:84","memberName":"withdraw","nodeType":"MemberAccess","referencedDeclaration":18620,"src":"3086:14:84","typeDescriptions":{"typeIdentifier":"t_function_external_nonpayable$_t_address_$_t_uint256_$_t_address_$returns$_t_uint256_$","typeString":"function (address,uint256,address) external returns (uint256)"}},"id":24734,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"3086:71:84","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":24735,"nodeType":"ExpressionStatement","src":"3086:71:84"},{"expression":{"arguments":[{"id":24739,"name":"assets","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":24707,"src":"3231:6:84","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"expression":{"id":24736,"name":"super","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-25,"src":"3216:5:84","typeDescriptions":{"typeIdentifier":"t_type$_t_super$_SwapStableAaveV3InvestStrategy_$24845_$","typeString":"type(contract super SwapStableAaveV3InvestStrategy)"}},"id":24738,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"3222:8:84","memberName":"withdraw","nodeType":"MemberAccess","referencedDeclaration":24321,"src":"3216:14:84","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_uint256_$returns$__$","typeString":"function (uint256)"}},"id":24740,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"3216:22:84","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":24741,"nodeType":"ExpressionStatement","src":"3216:22:84"},{"expression":{"arguments":[{"arguments":[{"arguments":[{"id":24747,"name":"this","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-28,"src":"3457:4:84","typeDescriptions":{"typeIdentifier":"t_contract$_SwapStableAaveV3InvestStrategy_$24845","typeString":"contract SwapStableAaveV3InvestStrategy"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_contract$_SwapStableAaveV3InvestStrategy_$24845","typeString":"contract SwapStableAaveV3InvestStrategy"}],"id":24746,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"3449:7:84","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":24745,"name":"address","nodeType":"ElementaryTypeName","src":"3449:7:84","typeDescriptions":{}}},"id":24748,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"3449:13:84","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"expression":{"id":24743,"name":"_investAsset","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":23958,"src":"3426:12:84","typeDescriptions":{"typeIdentifier":"t_contract$_IERC20Metadata_$9411","typeString":"contract IERC20Metadata"}},"id":24744,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"3439:9:84","memberName":"balanceOf","nodeType":"MemberAccess","referencedDeclaration":8636,"src":"3426:22:84","typeDescriptions":{"typeIdentifier":"t_function_external_view$_t_address_$returns$_t_uint256_$","typeString":"function (address) view external returns (uint256)"}},"id":24749,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"3426:37:84","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"hexValue":"74727565","id":24750,"isConstant":false,"isLValue":false,"isPure":true,"kind":"bool","lValueRequested":false,"nodeType":"Literal","src":"3465:4:84","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"value":"true"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_bool","typeString":"bool"}],"id":24742,"name":"_supply","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":24844,"src":"3418:7:84","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_uint256_$_t_bool_$returns$__$","typeString":"function (uint256,bool)"}},"id":24751,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"3418:52:84","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":24752,"nodeType":"ExpressionStatement","src":"3418:52:84"}]},"functionSelector":"2e1a7d4d","id":24754,"implemented":true,"kind":"function","modifiers":[{"id":24711,"kind":"modifierInvocation","modifierName":{"id":24710,"name":"onlyDelegCall","nameLocations":["2983:13:84"],"nodeType":"IdentifierPath","referencedDeclaration":23990,"src":"2983:13:84"},"nodeType":"ModifierInvocation","src":"2983:13:84"}],"name":"withdraw","nameLocation":"2934:8:84","nodeType":"FunctionDefinition","overrides":{"id":24709,"nodeType":"OverrideSpecifier","overrides":[],"src":"2974:8:84"},"parameters":{"id":24708,"nodeType":"ParameterList","parameters":[{"constant":false,"id":24707,"mutability":"mutable","name":"assets","nameLocation":"2951:6:84","nodeType":"VariableDeclaration","scope":24754,"src":"2943:14:84","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":24706,"name":"uint256","nodeType":"ElementaryTypeName","src":"2943:7:84","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"2942:16:84"},"returnParameters":{"id":24712,"nodeType":"ParameterList","parameters":[],"src":"2997:0:84"},"scope":24845,"src":"2925:550:84","stateMutability":"nonpayable","virtual":true,"visibility":"public"},{"baseFunctions":[24352],"body":{"id":24779,"nodeType":"Block","src":"3550:126:84","statements":[{"expression":{"arguments":[{"id":24765,"name":"assets","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":24756,"src":"3570:6:84","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"expression":{"id":24762,"name":"super","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-25,"src":"3556:5:84","typeDescriptions":{"typeIdentifier":"t_type$_t_super$_SwapStableAaveV3InvestStrategy_$24845_$","typeString":"type(contract super SwapStableAaveV3InvestStrategy)"}},"id":24764,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"3562:7:84","memberName":"deposit","nodeType":"MemberAccess","referencedDeclaration":24352,"src":"3556:13:84","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_uint256_$returns$__$","typeString":"function (uint256)"}},"id":24766,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"3556:21:84","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":24767,"nodeType":"ExpressionStatement","src":"3556:21:84"},{"expression":{"arguments":[{"arguments":[{"arguments":[{"id":24773,"name":"this","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-28,"src":"3657:4:84","typeDescriptions":{"typeIdentifier":"t_contract$_SwapStableAaveV3InvestStrategy_$24845","typeString":"contract SwapStableAaveV3InvestStrategy"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_contract$_SwapStableAaveV3InvestStrategy_$24845","typeString":"contract SwapStableAaveV3InvestStrategy"}],"id":24772,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"3649:7:84","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":24771,"name":"address","nodeType":"ElementaryTypeName","src":"3649:7:84","typeDescriptions":{}}},"id":24774,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"3649:13:84","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"expression":{"id":24769,"name":"_investAsset","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":23958,"src":"3626:12:84","typeDescriptions":{"typeIdentifier":"t_contract$_IERC20Metadata_$9411","typeString":"contract IERC20Metadata"}},"id":24770,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"3639:9:84","memberName":"balanceOf","nodeType":"MemberAccess","referencedDeclaration":8636,"src":"3626:22:84","typeDescriptions":{"typeIdentifier":"t_function_external_view$_t_address_$returns$_t_uint256_$","typeString":"function (address) view external returns (uint256)"}},"id":24775,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"3626:37:84","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"hexValue":"66616c7365","id":24776,"isConstant":false,"isLValue":false,"isPure":true,"kind":"bool","lValueRequested":false,"nodeType":"Literal","src":"3665:5:84","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"value":"false"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_bool","typeString":"bool"}],"id":24768,"name":"_supply","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":24844,"src":"3618:7:84","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_uint256_$_t_bool_$returns$__$","typeString":"function (uint256,bool)"}},"id":24777,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"3618:53:84","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":24778,"nodeType":"ExpressionStatement","src":"3618:53:84"}]},"functionSelector":"b6b55f25","id":24780,"implemented":true,"kind":"function","modifiers":[{"id":24760,"kind":"modifierInvocation","modifierName":{"id":24759,"name":"onlyDelegCall","nameLocations":["3536:13:84"],"nodeType":"IdentifierPath","referencedDeclaration":23990,"src":"3536:13:84"},"nodeType":"ModifierInvocation","src":"3536:13:84"}],"name":"deposit","nameLocation":"3488:7:84","nodeType":"FunctionDefinition","overrides":{"id":24758,"nodeType":"OverrideSpecifier","overrides":[],"src":"3527:8:84"},"parameters":{"id":24757,"nodeType":"ParameterList","parameters":[{"constant":false,"id":24756,"mutability":"mutable","name":"assets","nameLocation":"3504:6:84","nodeType":"VariableDeclaration","scope":24780,"src":"3496:14:84","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":24755,"name":"uint256","nodeType":"ElementaryTypeName","src":"3496:7:84","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"3495:16:84"},"returnParameters":{"id":24761,"nodeType":"ParameterList","parameters":[],"src":"3550:0:84"},"scope":24845,"src":"3479:197:84","stateMutability":"nonpayable","virtual":true,"visibility":"public"},{"body":{"id":24843,"nodeType":"Block","src":"3737:329:84","statements":[{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":24789,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":24787,"name":"assets","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":24782,"src":"3747:6:84","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"hexValue":"30","id":24788,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"3757:1:84","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"3747:11:84","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":24791,"nodeType":"IfStatement","src":"3743:24:84","trueBody":{"functionReturnParameters":24786,"id":24790,"nodeType":"Return","src":"3760:7:84"}},{"expression":{"arguments":[{"arguments":[{"id":24797,"name":"_aave","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":24535,"src":"3801:5:84","typeDescriptions":{"typeIdentifier":"t_contract$_IPool_$19003","typeString":"contract IPool"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_contract$_IPool_$19003","typeString":"contract IPool"}],"id":24796,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"3793:7:84","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":24795,"name":"address","nodeType":"ElementaryTypeName","src":"3793:7:84","typeDescriptions":{}}},"id":24798,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"3793:14:84","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":24799,"name":"assets","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":24782,"src":"3809:6:84","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"expression":{"id":24792,"name":"_investAsset","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":23958,"src":"3772:12:84","typeDescriptions":{"typeIdentifier":"t_contract$_IERC20Metadata_$9411","typeString":"contract IERC20Metadata"}},"id":24794,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"3785:7:84","memberName":"approve","nodeType":"MemberAccess","referencedDeclaration":8666,"src":"3772:20:84","typeDescriptions":{"typeIdentifier":"t_function_external_nonpayable$_t_address_$_t_uint256_$returns$_t_bool_$","typeString":"function (address,uint256) external returns (bool)"}},"id":24800,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"3772:44:84","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":24801,"nodeType":"ExpressionStatement","src":"3772:44:84"},{"condition":{"id":24802,"name":"failSafe","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":24784,"src":"3826:8:84","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"falseBody":{"expression":{"arguments":[{"arguments":[{"id":24832,"name":"_investAsset","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":23958,"src":"4021:12:84","typeDescriptions":{"typeIdentifier":"t_contract$_IERC20Metadata_$9411","typeString":"contract IERC20Metadata"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_contract$_IERC20Metadata_$9411","typeString":"contract IERC20Metadata"}],"id":24831,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"4013:7:84","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":24830,"name":"address","nodeType":"ElementaryTypeName","src":"4013:7:84","typeDescriptions":{}}},"id":24833,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"4013:21:84","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":24834,"name":"assets","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":24782,"src":"4036:6:84","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"arguments":[{"id":24837,"name":"this","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-28,"src":"4052:4:84","typeDescriptions":{"typeIdentifier":"t_contract$_SwapStableAaveV3InvestStrategy_$24845","typeString":"contract SwapStableAaveV3InvestStrategy"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_contract$_SwapStableAaveV3InvestStrategy_$24845","typeString":"contract SwapStableAaveV3InvestStrategy"}],"id":24836,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"4044:7:84","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":24835,"name":"address","nodeType":"ElementaryTypeName","src":"4044:7:84","typeDescriptions":{}}},"id":24838,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"4044:13:84","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"hexValue":"30","id":24839,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"4059:1:84","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"}],"expression":{"id":24827,"name":"_aave","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":24535,"src":"4000:5:84","typeDescriptions":{"typeIdentifier":"t_contract$_IPool_$19003","typeString":"contract IPool"}},"id":24829,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"4006:6:84","memberName":"supply","nodeType":"MemberAccess","referencedDeclaration":18588,"src":"4000:12:84","typeDescriptions":{"typeIdentifier":"t_function_external_nonpayable$_t_address_$_t_uint256_$_t_address_$_t_uint16_$returns$__$","typeString":"function (address,uint256,address,uint16) external"}},"id":24840,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"4000:61:84","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":24841,"nodeType":"ExpressionStatement","src":"4000:61:84"},"id":24842,"nodeType":"IfStatement","src":"3822:239:84","trueBody":{"id":24826,"nodeType":"Block","src":"3836:158:84","statements":[{"clauses":[{"block":{"id":24817,"nodeType":"Block","src":"3910:25:84","statements":[{"functionReturnParameters":24786,"id":24816,"nodeType":"Return","src":"3920:7:84"}]},"errorName":"","id":24818,"nodeType":"TryCatchClause","src":"3910:25:84"},{"block":{"id":24823,"nodeType":"Block","src":"3942:46:84","statements":[{"eventCall":{"arguments":[{"id":24820,"name":"assets","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":24782,"src":"3972:6:84","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":24819,"name":"ResupplyFailed","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":24532,"src":"3957:14:84","typeDescriptions":{"typeIdentifier":"t_function_event_nonpayable$_t_uint256_$returns$__$","typeString":"function (uint256)"}},"id":24821,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"3957:22:84","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":24822,"nodeType":"EmitStatement","src":"3952:27:84"}]},"errorName":"","id":24824,"nodeType":"TryCatchClause","src":"3936:52:84"}],"externalCall":{"arguments":[{"arguments":[{"id":24807,"name":"_investAsset","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":23958,"src":"3869:12:84","typeDescriptions":{"typeIdentifier":"t_contract$_IERC20Metadata_$9411","typeString":"contract IERC20Metadata"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_contract$_IERC20Metadata_$9411","typeString":"contract IERC20Metadata"}],"id":24806,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"3861:7:84","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":24805,"name":"address","nodeType":"ElementaryTypeName","src":"3861:7:84","typeDescriptions":{}}},"id":24808,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"3861:21:84","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":24809,"name":"assets","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":24782,"src":"3884:6:84","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"arguments":[{"id":24812,"name":"this","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-28,"src":"3900:4:84","typeDescriptions":{"typeIdentifier":"t_contract$_SwapStableAaveV3InvestStrategy_$24845","typeString":"contract SwapStableAaveV3InvestStrategy"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_contract$_SwapStableAaveV3InvestStrategy_$24845","typeString":"contract SwapStableAaveV3InvestStrategy"}],"id":24811,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"3892:7:84","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":24810,"name":"address","nodeType":"ElementaryTypeName","src":"3892:7:84","typeDescriptions":{}}},"id":24813,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"3892:13:84","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"hexValue":"30","id":24814,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"3907:1:84","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"}],"expression":{"id":24803,"name":"_aave","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":24535,"src":"3848:5:84","typeDescriptions":{"typeIdentifier":"t_contract$_IPool_$19003","typeString":"contract IPool"}},"id":24804,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"3854:6:84","memberName":"supply","nodeType":"MemberAccess","referencedDeclaration":18588,"src":"3848:12:84","typeDescriptions":{"typeIdentifier":"t_function_external_nonpayable$_t_address_$_t_uint256_$_t_address_$_t_uint16_$returns$__$","typeString":"function (address,uint256,address,uint16) external"}},"id":24815,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"3848:61:84","tryCall":true,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":24825,"nodeType":"TryStatement","src":"3844:144:84"}]}}]},"id":24844,"implemented":true,"kind":"function","modifiers":[],"name":"_supply","nameLocation":"3689:7:84","nodeType":"FunctionDefinition","parameters":{"id":24785,"nodeType":"ParameterList","parameters":[{"constant":false,"id":24782,"mutability":"mutable","name":"assets","nameLocation":"3705:6:84","nodeType":"VariableDeclaration","scope":24844,"src":"3697:14:84","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":24781,"name":"uint256","nodeType":"ElementaryTypeName","src":"3697:7:84","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":24784,"mutability":"mutable","name":"failSafe","nameLocation":"3718:8:84","nodeType":"VariableDeclaration","scope":24844,"src":"3713:13:84","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":24783,"name":"bool","nodeType":"ElementaryTypeName","src":"3713:4:84","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"}],"src":"3696:31:84"},"returnParameters":{"id":24786,"nodeType":"ParameterList","parameters":[],"src":"3737:0:84"},"scope":24845,"src":"3680:386:84","stateMutability":"nonpayable","virtual":false,"visibility":"internal"}],"scope":24846,"src":"826:3242:84","usedErrors":[23968,23970,23972,23974],"usedEvents":[23966,24532]}],"src":"39:4030:84"},"id":84},"contracts/strategies/SwapStableInvestStrategy.sol":{"ast":{"absolutePath":"contracts/strategies/SwapStableInvestStrategy.sol","exportedSymbols":{"IERC20Metadata":[9411],"SwapAssetInvestStrategy":[24509],"SwapStableInvestStrategy":[24887]},"id":24888,"license":"Apache-2.0","nodeType":"SourceUnit","nodes":[{"id":24847,"literals":["solidity","^","0.8",".0"],"nodeType":"PragmaDirective","src":"39:23:85"},{"absolutePath":"@openzeppelin/contracts/interfaces/IERC20Metadata.sol","file":"@openzeppelin/contracts/interfaces/IERC20Metadata.sol","id":24849,"nameLocation":"-1:-1:-1","nodeType":"ImportDirective","scope":24888,"sourceUnit":6958,"src":"64:85:85","symbolAliases":[{"foreign":{"id":24848,"name":"IERC20Metadata","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9411,"src":"72:14:85","typeDescriptions":{}},"nameLocation":"-1:-1:-1"}],"unitAlias":""},{"absolutePath":"contracts/strategies/SwapAssetInvestStrategy.sol","file":"./SwapAssetInvestStrategy.sol","id":24851,"nameLocation":"-1:-1:-1","nodeType":"ImportDirective","scope":24888,"sourceUnit":24510,"src":"150:70:85","symbolAliases":[{"foreign":{"id":24850,"name":"SwapAssetInvestStrategy","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":24509,"src":"158:23:85","typeDescriptions":{}},"nameLocation":"-1:-1:-1"}],"unitAlias":""},{"abstract":false,"baseContracts":[{"baseName":{"id":24853,"name":"SwapAssetInvestStrategy","nameLocations":["554:23:85"],"nodeType":"IdentifierPath","referencedDeclaration":24509,"src":"554:23:85"},"id":24854,"nodeType":"InheritanceSpecifier","src":"554:23:85"}],"canonicalName":"SwapStableInvestStrategy","contractDependencies":[],"contractKind":"contract","documentation":{"id":24852,"nodeType":"StructuredDocumentation","src":"222:294:85","text":" @title SwapStableInvestStrategy\n @dev Strategy that invests/deinvests by swapping into another token that has a stable price compared to the asset.\n      Useful for yield bearing rebasing tokens like Lido o USDM\n @custom:security-contact security@ensuro.co\n @author Ensuro"},"fullyImplemented":true,"id":24887,"linearizedBaseContracts":[24887,24509,20725],"name":"SwapStableInvestStrategy","nameLocation":"526:24:85","nodeType":"ContractDefinition","nodes":[{"constant":false,"id":24856,"mutability":"immutable","name":"_price","nameLocation":"609:6:85","nodeType":"VariableDeclaration","scope":24887,"src":"582:33:85","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":24855,"name":"uint256","nodeType":"ElementaryTypeName","src":"582:7:85","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"body":{"id":24876,"nodeType":"Block","src":"1212:26:85","statements":[{"expression":{"id":24874,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":24872,"name":"_price","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":24856,"src":"1218:6:85","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"id":24873,"name":"price_","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":24865,"src":"1227:6:85","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"1218:15:85","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":24875,"nodeType":"ExpressionStatement","src":"1218:15:85"}]},"documentation":{"id":24857,"nodeType":"StructuredDocumentation","src":"696:371:85","text":" @dev Constructor of the strategy\n @param asset_ The address of the underlying token used for accounting, depositing, and withdrawing.\n @param investAsset_ The address of the tokens hold by the strategy. Typically a rebasing yield bearing token\n @param price_ Approximate amount of units of _asset required to acquire a unit of _investAsset"},"id":24877,"implemented":true,"kind":"constructor","modifiers":[{"arguments":[{"id":24868,"name":"asset_","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":24860,"src":"1190:6:85","typeDescriptions":{"typeIdentifier":"t_contract$_IERC20Metadata_$9411","typeString":"contract IERC20Metadata"}},{"id":24869,"name":"investAsset_","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":24863,"src":"1198:12:85","typeDescriptions":{"typeIdentifier":"t_contract$_IERC20Metadata_$9411","typeString":"contract IERC20Metadata"}}],"id":24870,"kind":"baseConstructorSpecifier","modifierName":{"id":24867,"name":"SwapAssetInvestStrategy","nameLocations":["1166:23:85"],"nodeType":"IdentifierPath","referencedDeclaration":24509,"src":"1166:23:85"},"nodeType":"ModifierInvocation","src":"1166:45:85"}],"name":"","nameLocation":"-1:-1:-1","nodeType":"FunctionDefinition","parameters":{"id":24866,"nodeType":"ParameterList","parameters":[{"constant":false,"id":24860,"mutability":"mutable","name":"asset_","nameLocation":"1102:6:85","nodeType":"VariableDeclaration","scope":24877,"src":"1087:21:85","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_contract$_IERC20Metadata_$9411","typeString":"contract IERC20Metadata"},"typeName":{"id":24859,"nodeType":"UserDefinedTypeName","pathNode":{"id":24858,"name":"IERC20Metadata","nameLocations":["1087:14:85"],"nodeType":"IdentifierPath","referencedDeclaration":9411,"src":"1087:14:85"},"referencedDeclaration":9411,"src":"1087:14:85","typeDescriptions":{"typeIdentifier":"t_contract$_IERC20Metadata_$9411","typeString":"contract IERC20Metadata"}},"visibility":"internal"},{"constant":false,"id":24863,"mutability":"mutable","name":"investAsset_","nameLocation":"1129:12:85","nodeType":"VariableDeclaration","scope":24877,"src":"1114:27:85","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_contract$_IERC20Metadata_$9411","typeString":"contract IERC20Metadata"},"typeName":{"id":24862,"nodeType":"UserDefinedTypeName","pathNode":{"id":24861,"name":"IERC20Metadata","nameLocations":["1114:14:85"],"nodeType":"IdentifierPath","referencedDeclaration":9411,"src":"1114:14:85"},"referencedDeclaration":9411,"src":"1114:14:85","typeDescriptions":{"typeIdentifier":"t_contract$_IERC20Metadata_$9411","typeString":"contract IERC20Metadata"}},"visibility":"internal"},{"constant":false,"id":24865,"mutability":"mutable","name":"price_","nameLocation":"1155:6:85","nodeType":"VariableDeclaration","scope":24877,"src":"1147:14:85","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":24864,"name":"uint256","nodeType":"ElementaryTypeName","src":"1147:7:85","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"1081:84:85"},"returnParameters":{"id":24871,"nodeType":"ParameterList","parameters":[],"src":"1212:0:85"},"scope":24887,"src":"1070:168:85","stateMutability":"nonpayable","virtual":false,"visibility":"public"},{"baseFunctions":[24170],"body":{"id":24885,"nodeType":"Block","src":"1317:24:85","statements":[{"expression":{"id":24883,"name":"_price","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":24856,"src":"1330:6:85","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"functionReturnParameters":24882,"id":24884,"nodeType":"Return","src":"1323:13:85"}]},"functionSelector":"1418983b","id":24886,"implemented":true,"kind":"function","modifiers":[],"name":"investAssetPrice","nameLocation":"1251:16:85","nodeType":"FunctionDefinition","overrides":{"id":24879,"nodeType":"OverrideSpecifier","overrides":[],"src":"1290:8:85"},"parameters":{"id":24878,"nodeType":"ParameterList","parameters":[],"src":"1267:2:85"},"returnParameters":{"id":24882,"nodeType":"ParameterList","parameters":[{"constant":false,"id":24881,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":24886,"src":"1308:7:85","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":24880,"name":"uint256","nodeType":"ElementaryTypeName","src":"1308:7:85","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"1307:9:85"},"scope":24887,"src":"1242:99:85","stateMutability":"view","virtual":true,"visibility":"public"}],"scope":24888,"src":"517:826:85","usedErrors":[23968,23970,23972,23974],"usedEvents":[23966]}],"src":"39:1305:85"},"id":85},"solidity-bytes-utils/contracts/BytesLib.sol":{"ast":{"absolutePath":"solidity-bytes-utils/contracts/BytesLib.sol","exportedSymbols":{"BytesLib":[25221]},"id":25222,"license":"Unlicense","nodeType":"SourceUnit","nodes":[{"id":24889,"literals":["solidity",">=","0.8",".0","<","0.9",".0"],"nodeType":"PragmaDirective","src":"336:31:86"},{"abstract":false,"baseContracts":[],"canonicalName":"BytesLib","contractDependencies":[],"contractKind":"library","fullyImplemented":true,"id":25221,"linearizedBaseContracts":[25221],"name":"BytesLib","nameLocation":"378:8:86","nodeType":"ContractDefinition","nodes":[{"body":{"id":24904,"nodeType":"Block","src":"545:2803:86","statements":[{"assignments":[24899],"declarations":[{"constant":false,"id":24899,"mutability":"mutable","name":"tempBytes","nameLocation":"568:9:86","nodeType":"VariableDeclaration","scope":24904,"src":"555:22:86","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes"},"typeName":{"id":24898,"name":"bytes","nodeType":"ElementaryTypeName","src":"555:5:86","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"}],"id":24900,"nodeType":"VariableDeclarationStatement","src":"555:22:86"},{"AST":{"nativeSrc":"597:2718:86","nodeType":"YulBlock","src":"597:2718:86","statements":[{"nativeSrc":"741:24:86","nodeType":"YulAssignment","src":"741:24:86","value":{"arguments":[{"kind":"number","nativeSrc":"760:4:86","nodeType":"YulLiteral","src":"760:4:86","type":"","value":"0x40"}],"functionName":{"name":"mload","nativeSrc":"754:5:86","nodeType":"YulIdentifier","src":"754:5:86"},"nativeSrc":"754:11:86","nodeType":"YulFunctionCall","src":"754:11:86"},"variableNames":[{"name":"tempBytes","nativeSrc":"741:9:86","nodeType":"YulIdentifier","src":"741:9:86"}]},{"nativeSrc":"897:30:86","nodeType":"YulVariableDeclaration","src":"897:30:86","value":{"arguments":[{"name":"_preBytes","nativeSrc":"917:9:86","nodeType":"YulIdentifier","src":"917:9:86"}],"functionName":{"name":"mload","nativeSrc":"911:5:86","nodeType":"YulIdentifier","src":"911:5:86"},"nativeSrc":"911:16:86","nodeType":"YulFunctionCall","src":"911:16:86"},"variables":[{"name":"length","nativeSrc":"901:6:86","nodeType":"YulTypedName","src":"901:6:86","type":""}]},{"expression":{"arguments":[{"name":"tempBytes","nativeSrc":"947:9:86","nodeType":"YulIdentifier","src":"947:9:86"},{"name":"length","nativeSrc":"958:6:86","nodeType":"YulIdentifier","src":"958:6:86"}],"functionName":{"name":"mstore","nativeSrc":"940:6:86","nodeType":"YulIdentifier","src":"940:6:86"},"nativeSrc":"940:25:86","nodeType":"YulFunctionCall","src":"940:25:86"},"nativeSrc":"940:25:86","nodeType":"YulExpressionStatement","src":"940:25:86"},{"nativeSrc":"1175:30:86","nodeType":"YulVariableDeclaration","src":"1175:30:86","value":{"arguments":[{"name":"tempBytes","nativeSrc":"1189:9:86","nodeType":"YulIdentifier","src":"1189:9:86"},{"kind":"number","nativeSrc":"1200:4:86","nodeType":"YulLiteral","src":"1200:4:86","type":"","value":"0x20"}],"functionName":{"name":"add","nativeSrc":"1185:3:86","nodeType":"YulIdentifier","src":"1185:3:86"},"nativeSrc":"1185:20:86","nodeType":"YulFunctionCall","src":"1185:20:86"},"variables":[{"name":"mc","nativeSrc":"1179:2:86","nodeType":"YulTypedName","src":"1179:2:86","type":""}]},{"nativeSrc":"1330:26:86","nodeType":"YulVariableDeclaration","src":"1330:26:86","value":{"arguments":[{"name":"mc","nativeSrc":"1345:2:86","nodeType":"YulIdentifier","src":"1345:2:86"},{"name":"length","nativeSrc":"1349:6:86","nodeType":"YulIdentifier","src":"1349:6:86"}],"functionName":{"name":"add","nativeSrc":"1341:3:86","nodeType":"YulIdentifier","src":"1341:3:86"},"nativeSrc":"1341:15:86","nodeType":"YulFunctionCall","src":"1341:15:86"},"variables":[{"name":"end","nativeSrc":"1334:3:86","nodeType":"YulTypedName","src":"1334:3:86","type":""}]},{"body":{"nativeSrc":"1733:162:86","nodeType":"YulBlock","src":"1733:162:86","statements":[{"expression":{"arguments":[{"name":"mc","nativeSrc":"1867:2:86","nodeType":"YulIdentifier","src":"1867:2:86"},{"arguments":[{"name":"cc","nativeSrc":"1877:2:86","nodeType":"YulIdentifier","src":"1877:2:86"}],"functionName":{"name":"mload","nativeSrc":"1871:5:86","nodeType":"YulIdentifier","src":"1871:5:86"},"nativeSrc":"1871:9:86","nodeType":"YulFunctionCall","src":"1871:9:86"}],"functionName":{"name":"mstore","nativeSrc":"1860:6:86","nodeType":"YulIdentifier","src":"1860:6:86"},"nativeSrc":"1860:21:86","nodeType":"YulFunctionCall","src":"1860:21:86"},"nativeSrc":"1860:21:86","nodeType":"YulExpressionStatement","src":"1860:21:86"}]},"condition":{"arguments":[{"name":"mc","nativeSrc":"1566:2:86","nodeType":"YulIdentifier","src":"1566:2:86"},{"name":"end","nativeSrc":"1570:3:86","nodeType":"YulIdentifier","src":"1570:3:86"}],"functionName":{"name":"lt","nativeSrc":"1563:2:86","nodeType":"YulIdentifier","src":"1563:2:86"},"nativeSrc":"1563:11:86","nodeType":"YulFunctionCall","src":"1563:11:86"},"nativeSrc":"1370:525:86","nodeType":"YulForLoop","post":{"nativeSrc":"1575:157:86","nodeType":"YulBlock","src":"1575:157:86","statements":[{"nativeSrc":"1663:19:86","nodeType":"YulAssignment","src":"1663:19:86","value":{"arguments":[{"name":"mc","nativeSrc":"1673:2:86","nodeType":"YulIdentifier","src":"1673:2:86"},{"kind":"number","nativeSrc":"1677:4:86","nodeType":"YulLiteral","src":"1677:4:86","type":"","value":"0x20"}],"functionName":{"name":"add","nativeSrc":"1669:3:86","nodeType":"YulIdentifier","src":"1669:3:86"},"nativeSrc":"1669:13:86","nodeType":"YulFunctionCall","src":"1669:13:86"},"variableNames":[{"name":"mc","nativeSrc":"1663:2:86","nodeType":"YulIdentifier","src":"1663:2:86"}]},{"nativeSrc":"1699:19:86","nodeType":"YulAssignment","src":"1699:19:86","value":{"arguments":[{"name":"cc","nativeSrc":"1709:2:86","nodeType":"YulIdentifier","src":"1709:2:86"},{"kind":"number","nativeSrc":"1713:4:86","nodeType":"YulLiteral","src":"1713:4:86","type":"","value":"0x20"}],"functionName":{"name":"add","nativeSrc":"1705:3:86","nodeType":"YulIdentifier","src":"1705:3:86"},"nativeSrc":"1705:13:86","nodeType":"YulFunctionCall","src":"1705:13:86"},"variableNames":[{"name":"cc","nativeSrc":"1699:2:86","nodeType":"YulIdentifier","src":"1699:2:86"}]}]},"pre":{"nativeSrc":"1374:188:86","nodeType":"YulBlock","src":"1374:188:86","statements":[{"nativeSrc":"1518:30:86","nodeType":"YulVariableDeclaration","src":"1518:30:86","value":{"arguments":[{"name":"_preBytes","nativeSrc":"1532:9:86","nodeType":"YulIdentifier","src":"1532:9:86"},{"kind":"number","nativeSrc":"1543:4:86","nodeType":"YulLiteral","src":"1543:4:86","type":"","value":"0x20"}],"functionName":{"name":"add","nativeSrc":"1528:3:86","nodeType":"YulIdentifier","src":"1528:3:86"},"nativeSrc":"1528:20:86","nodeType":"YulFunctionCall","src":"1528:20:86"},"variables":[{"name":"cc","nativeSrc":"1522:2:86","nodeType":"YulTypedName","src":"1522:2:86","type":""}]}]},"src":"1370:525:86"},{"nativeSrc":"2096:27:86","nodeType":"YulAssignment","src":"2096:27:86","value":{"arguments":[{"name":"_postBytes","nativeSrc":"2112:10:86","nodeType":"YulIdentifier","src":"2112:10:86"}],"functionName":{"name":"mload","nativeSrc":"2106:5:86","nodeType":"YulIdentifier","src":"2106:5:86"},"nativeSrc":"2106:17:86","nodeType":"YulFunctionCall","src":"2106:17:86"},"variableNames":[{"name":"length","nativeSrc":"2096:6:86","nodeType":"YulIdentifier","src":"2096:6:86"}]},{"expression":{"arguments":[{"name":"tempBytes","nativeSrc":"2143:9:86","nodeType":"YulIdentifier","src":"2143:9:86"},{"arguments":[{"name":"length","nativeSrc":"2158:6:86","nodeType":"YulIdentifier","src":"2158:6:86"},{"arguments":[{"name":"tempBytes","nativeSrc":"2172:9:86","nodeType":"YulIdentifier","src":"2172:9:86"}],"functionName":{"name":"mload","nativeSrc":"2166:5:86","nodeType":"YulIdentifier","src":"2166:5:86"},"nativeSrc":"2166:16:86","nodeType":"YulFunctionCall","src":"2166:16:86"}],"functionName":{"name":"add","nativeSrc":"2154:3:86","nodeType":"YulIdentifier","src":"2154:3:86"},"nativeSrc":"2154:29:86","nodeType":"YulFunctionCall","src":"2154:29:86"}],"functionName":{"name":"mstore","nativeSrc":"2136:6:86","nodeType":"YulIdentifier","src":"2136:6:86"},"nativeSrc":"2136:48:86","nodeType":"YulFunctionCall","src":"2136:48:86"},"nativeSrc":"2136:48:86","nodeType":"YulExpressionStatement","src":"2136:48:86"},{"nativeSrc":"2322:9:86","nodeType":"YulAssignment","src":"2322:9:86","value":{"name":"end","nativeSrc":"2328:3:86","nodeType":"YulIdentifier","src":"2328:3:86"},"variableNames":[{"name":"mc","nativeSrc":"2322:2:86","nodeType":"YulIdentifier","src":"2322:2:86"}]},{"nativeSrc":"2458:22:86","nodeType":"YulAssignment","src":"2458:22:86","value":{"arguments":[{"name":"mc","nativeSrc":"2469:2:86","nodeType":"YulIdentifier","src":"2469:2:86"},{"name":"length","nativeSrc":"2473:6:86","nodeType":"YulIdentifier","src":"2473:6:86"}],"functionName":{"name":"add","nativeSrc":"2465:3:86","nodeType":"YulIdentifier","src":"2465:3:86"},"nativeSrc":"2465:15:86","nodeType":"YulFunctionCall","src":"2465:15:86"},"variableNames":[{"name":"end","nativeSrc":"2458:3:86","nodeType":"YulIdentifier","src":"2458:3:86"}]},{"body":{"nativeSrc":"2662:53:86","nodeType":"YulBlock","src":"2662:53:86","statements":[{"expression":{"arguments":[{"name":"mc","nativeSrc":"2687:2:86","nodeType":"YulIdentifier","src":"2687:2:86"},{"arguments":[{"name":"cc","nativeSrc":"2697:2:86","nodeType":"YulIdentifier","src":"2697:2:86"}],"functionName":{"name":"mload","nativeSrc":"2691:5:86","nodeType":"YulIdentifier","src":"2691:5:86"},"nativeSrc":"2691:9:86","nodeType":"YulFunctionCall","src":"2691:9:86"}],"functionName":{"name":"mstore","nativeSrc":"2680:6:86","nodeType":"YulIdentifier","src":"2680:6:86"},"nativeSrc":"2680:21:86","nodeType":"YulFunctionCall","src":"2680:21:86"},"nativeSrc":"2680:21:86","nodeType":"YulExpressionStatement","src":"2680:21:86"}]},"condition":{"arguments":[{"name":"mc","nativeSrc":"2565:2:86","nodeType":"YulIdentifier","src":"2565:2:86"},{"name":"end","nativeSrc":"2569:3:86","nodeType":"YulIdentifier","src":"2569:3:86"}],"functionName":{"name":"lt","nativeSrc":"2562:2:86","nodeType":"YulIdentifier","src":"2562:2:86"},"nativeSrc":"2562:11:86","nodeType":"YulFunctionCall","src":"2562:11:86"},"nativeSrc":"2494:221:86","nodeType":"YulForLoop","post":{"nativeSrc":"2574:87:86","nodeType":"YulBlock","src":"2574:87:86","statements":[{"nativeSrc":"2592:19:86","nodeType":"YulAssignment","src":"2592:19:86","value":{"arguments":[{"name":"mc","nativeSrc":"2602:2:86","nodeType":"YulIdentifier","src":"2602:2:86"},{"kind":"number","nativeSrc":"2606:4:86","nodeType":"YulLiteral","src":"2606:4:86","type":"","value":"0x20"}],"functionName":{"name":"add","nativeSrc":"2598:3:86","nodeType":"YulIdentifier","src":"2598:3:86"},"nativeSrc":"2598:13:86","nodeType":"YulFunctionCall","src":"2598:13:86"},"variableNames":[{"name":"mc","nativeSrc":"2592:2:86","nodeType":"YulIdentifier","src":"2592:2:86"}]},{"nativeSrc":"2628:19:86","nodeType":"YulAssignment","src":"2628:19:86","value":{"arguments":[{"name":"cc","nativeSrc":"2638:2:86","nodeType":"YulIdentifier","src":"2638:2:86"},{"kind":"number","nativeSrc":"2642:4:86","nodeType":"YulLiteral","src":"2642:4:86","type":"","value":"0x20"}],"functionName":{"name":"add","nativeSrc":"2634:3:86","nodeType":"YulIdentifier","src":"2634:3:86"},"nativeSrc":"2634:13:86","nodeType":"YulFunctionCall","src":"2634:13:86"},"variableNames":[{"name":"cc","nativeSrc":"2628:2:86","nodeType":"YulIdentifier","src":"2628:2:86"}]}]},"pre":{"nativeSrc":"2498:63:86","nodeType":"YulBlock","src":"2498:63:86","statements":[{"nativeSrc":"2516:31:86","nodeType":"YulVariableDeclaration","src":"2516:31:86","value":{"arguments":[{"name":"_postBytes","nativeSrc":"2530:10:86","nodeType":"YulIdentifier","src":"2530:10:86"},{"kind":"number","nativeSrc":"2542:4:86","nodeType":"YulLiteral","src":"2542:4:86","type":"","value":"0x20"}],"functionName":{"name":"add","nativeSrc":"2526:3:86","nodeType":"YulIdentifier","src":"2526:3:86"},"nativeSrc":"2526:21:86","nodeType":"YulFunctionCall","src":"2526:21:86"},"variables":[{"name":"cc","nativeSrc":"2520:2:86","nodeType":"YulTypedName","src":"2520:2:86","type":""}]}]},"src":"2494:221:86"},{"expression":{"arguments":[{"kind":"number","nativeSrc":"3147:4:86","nodeType":"YulLiteral","src":"3147:4:86","type":"","value":"0x40"},{"arguments":[{"arguments":[{"arguments":[{"name":"end","nativeSrc":"3180:3:86","nodeType":"YulIdentifier","src":"3180:3:86"},{"arguments":[{"arguments":[{"name":"length","nativeSrc":"3196:6:86","nodeType":"YulIdentifier","src":"3196:6:86"},{"arguments":[{"name":"_preBytes","nativeSrc":"3210:9:86","nodeType":"YulIdentifier","src":"3210:9:86"}],"functionName":{"name":"mload","nativeSrc":"3204:5:86","nodeType":"YulIdentifier","src":"3204:5:86"},"nativeSrc":"3204:16:86","nodeType":"YulFunctionCall","src":"3204:16:86"}],"functionName":{"name":"add","nativeSrc":"3192:3:86","nodeType":"YulIdentifier","src":"3192:3:86"},"nativeSrc":"3192:29:86","nodeType":"YulFunctionCall","src":"3192:29:86"}],"functionName":{"name":"iszero","nativeSrc":"3185:6:86","nodeType":"YulIdentifier","src":"3185:6:86"},"nativeSrc":"3185:37:86","nodeType":"YulFunctionCall","src":"3185:37:86"}],"functionName":{"name":"add","nativeSrc":"3176:3:86","nodeType":"YulIdentifier","src":"3176:3:86"},"nativeSrc":"3176:47:86","nodeType":"YulFunctionCall","src":"3176:47:86"},{"kind":"number","nativeSrc":"3225:2:86","nodeType":"YulLiteral","src":"3225:2:86","type":"","value":"31"}],"functionName":{"name":"add","nativeSrc":"3172:3:86","nodeType":"YulIdentifier","src":"3172:3:86"},"nativeSrc":"3172:56:86","nodeType":"YulFunctionCall","src":"3172:56:86"},{"arguments":[{"kind":"number","nativeSrc":"3248:2:86","nodeType":"YulLiteral","src":"3248:2:86","type":"","value":"31"}],"functionName":{"name":"not","nativeSrc":"3244:3:86","nodeType":"YulIdentifier","src":"3244:3:86"},"nativeSrc":"3244:7:86","nodeType":"YulFunctionCall","src":"3244:7:86"}],"functionName":{"name":"and","nativeSrc":"3153:3:86","nodeType":"YulIdentifier","src":"3153:3:86"},"nativeSrc":"3153:151:86","nodeType":"YulFunctionCall","src":"3153:151:86"}],"functionName":{"name":"mstore","nativeSrc":"3140:6:86","nodeType":"YulIdentifier","src":"3140:6:86"},"nativeSrc":"3140:165:86","nodeType":"YulFunctionCall","src":"3140:165:86"},"nativeSrc":"3140:165:86","nodeType":"YulExpressionStatement","src":"3140:165:86"}]},"evmVersion":"prague","externalReferences":[{"declaration":24893,"isOffset":false,"isSlot":false,"src":"2112:10:86","valueSize":1},{"declaration":24893,"isOffset":false,"isSlot":false,"src":"2530:10:86","valueSize":1},{"declaration":24891,"isOffset":false,"isSlot":false,"src":"1532:9:86","valueSize":1},{"declaration":24891,"isOffset":false,"isSlot":false,"src":"3210:9:86","valueSize":1},{"declaration":24891,"isOffset":false,"isSlot":false,"src":"917:9:86","valueSize":1},{"declaration":24899,"isOffset":false,"isSlot":false,"src":"1189:9:86","valueSize":1},{"declaration":24899,"isOffset":false,"isSlot":false,"src":"2143:9:86","valueSize":1},{"declaration":24899,"isOffset":false,"isSlot":false,"src":"2172:9:86","valueSize":1},{"declaration":24899,"isOffset":false,"isSlot":false,"src":"741:9:86","valueSize":1},{"declaration":24899,"isOffset":false,"isSlot":false,"src":"947:9:86","valueSize":1}],"id":24901,"nodeType":"InlineAssembly","src":"588:2727:86"},{"expression":{"id":24902,"name":"tempBytes","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":24899,"src":"3332:9:86","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}},"functionReturnParameters":24897,"id":24903,"nodeType":"Return","src":"3325:16:86"}]},"id":24905,"implemented":true,"kind":"function","modifiers":[],"name":"concat","nameLocation":"402:6:86","nodeType":"FunctionDefinition","parameters":{"id":24894,"nodeType":"ParameterList","parameters":[{"constant":false,"id":24891,"mutability":"mutable","name":"_preBytes","nameLocation":"431:9:86","nodeType":"VariableDeclaration","scope":24905,"src":"418:22:86","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes"},"typeName":{"id":24890,"name":"bytes","nodeType":"ElementaryTypeName","src":"418:5:86","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"},{"constant":false,"id":24893,"mutability":"mutable","name":"_postBytes","nameLocation":"463:10:86","nodeType":"VariableDeclaration","scope":24905,"src":"450:23:86","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes"},"typeName":{"id":24892,"name":"bytes","nodeType":"ElementaryTypeName","src":"450:5:86","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"}],"src":"408:71:86"},"returnParameters":{"id":24897,"nodeType":"ParameterList","parameters":[{"constant":false,"id":24896,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":24905,"src":"527:12:86","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes"},"typeName":{"id":24895,"name":"bytes","nodeType":"ElementaryTypeName","src":"527:5:86","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"}],"src":"526:14:86"},"scope":25221,"src":"393:2955:86","stateMutability":"pure","virtual":false,"visibility":"internal"},{"body":{"id":24913,"nodeType":"Block","src":"3436:6015:86","statements":[{"AST":{"nativeSrc":"3455:5990:86","nodeType":"YulBlock","src":"3455:5990:86","statements":[{"nativeSrc":"3678:34:86","nodeType":"YulVariableDeclaration","src":"3678:34:86","value":{"arguments":[{"name":"_preBytes.slot","nativeSrc":"3697:14:86","nodeType":"YulIdentifier","src":"3697:14:86"}],"functionName":{"name":"sload","nativeSrc":"3691:5:86","nodeType":"YulIdentifier","src":"3691:5:86"},"nativeSrc":"3691:21:86","nodeType":"YulFunctionCall","src":"3691:21:86"},"variables":[{"name":"fslot","nativeSrc":"3682:5:86","nodeType":"YulTypedName","src":"3682:5:86","type":""}]},{"nativeSrc":"4205:76:86","nodeType":"YulVariableDeclaration","src":"4205:76:86","value":{"arguments":[{"arguments":[{"name":"fslot","nativeSrc":"4228:5:86","nodeType":"YulIdentifier","src":"4228:5:86"},{"arguments":[{"arguments":[{"kind":"number","nativeSrc":"4243:5:86","nodeType":"YulLiteral","src":"4243:5:86","type":"","value":"0x100"},{"arguments":[{"arguments":[{"name":"fslot","nativeSrc":"4261:5:86","nodeType":"YulIdentifier","src":"4261:5:86"},{"kind":"number","nativeSrc":"4268:1:86","nodeType":"YulLiteral","src":"4268:1:86","type":"","value":"1"}],"functionName":{"name":"and","nativeSrc":"4257:3:86","nodeType":"YulIdentifier","src":"4257:3:86"},"nativeSrc":"4257:13:86","nodeType":"YulFunctionCall","src":"4257:13:86"}],"functionName":{"name":"iszero","nativeSrc":"4250:6:86","nodeType":"YulIdentifier","src":"4250:6:86"},"nativeSrc":"4250:21:86","nodeType":"YulFunctionCall","src":"4250:21:86"}],"functionName":{"name":"mul","nativeSrc":"4239:3:86","nodeType":"YulIdentifier","src":"4239:3:86"},"nativeSrc":"4239:33:86","nodeType":"YulFunctionCall","src":"4239:33:86"},{"kind":"number","nativeSrc":"4274:1:86","nodeType":"YulLiteral","src":"4274:1:86","type":"","value":"1"}],"functionName":{"name":"sub","nativeSrc":"4235:3:86","nodeType":"YulIdentifier","src":"4235:3:86"},"nativeSrc":"4235:41:86","nodeType":"YulFunctionCall","src":"4235:41:86"}],"functionName":{"name":"and","nativeSrc":"4224:3:86","nodeType":"YulIdentifier","src":"4224:3:86"},"nativeSrc":"4224:53:86","nodeType":"YulFunctionCall","src":"4224:53:86"},{"kind":"number","nativeSrc":"4279:1:86","nodeType":"YulLiteral","src":"4279:1:86","type":"","value":"2"}],"functionName":{"name":"div","nativeSrc":"4220:3:86","nodeType":"YulIdentifier","src":"4220:3:86"},"nativeSrc":"4220:61:86","nodeType":"YulFunctionCall","src":"4220:61:86"},"variables":[{"name":"slength","nativeSrc":"4209:7:86","nodeType":"YulTypedName","src":"4209:7:86","type":""}]},{"nativeSrc":"4294:32:86","nodeType":"YulVariableDeclaration","src":"4294:32:86","value":{"arguments":[{"name":"_postBytes","nativeSrc":"4315:10:86","nodeType":"YulIdentifier","src":"4315:10:86"}],"functionName":{"name":"mload","nativeSrc":"4309:5:86","nodeType":"YulIdentifier","src":"4309:5:86"},"nativeSrc":"4309:17:86","nodeType":"YulFunctionCall","src":"4309:17:86"},"variables":[{"name":"mlength","nativeSrc":"4298:7:86","nodeType":"YulTypedName","src":"4298:7:86","type":""}]},{"nativeSrc":"4339:38:86","nodeType":"YulVariableDeclaration","src":"4339:38:86","value":{"arguments":[{"name":"slength","nativeSrc":"4360:7:86","nodeType":"YulIdentifier","src":"4360:7:86"},{"name":"mlength","nativeSrc":"4369:7:86","nodeType":"YulIdentifier","src":"4369:7:86"}],"functionName":{"name":"add","nativeSrc":"4356:3:86","nodeType":"YulIdentifier","src":"4356:3:86"},"nativeSrc":"4356:21:86","nodeType":"YulFunctionCall","src":"4356:21:86"},"variables":[{"name":"newlength","nativeSrc":"4343:9:86","nodeType":"YulTypedName","src":"4343:9:86","type":""}]},{"cases":[{"body":{"nativeSrc":"4710:1485:86","nodeType":"YulBlock","src":"4710:1485:86","statements":[{"expression":{"arguments":[{"name":"_preBytes.slot","nativeSrc":"4991:14:86","nodeType":"YulIdentifier","src":"4991:14:86"},{"arguments":[{"name":"fslot","nativeSrc":"5303:5:86","nodeType":"YulIdentifier","src":"5303:5:86"},{"arguments":[{"arguments":[{"arguments":[{"arguments":[{"arguments":[{"name":"_postBytes","nativeSrc":"5521:10:86","nodeType":"YulIdentifier","src":"5521:10:86"},{"kind":"number","nativeSrc":"5533:4:86","nodeType":"YulLiteral","src":"5533:4:86","type":"","value":"0x20"}],"functionName":{"name":"add","nativeSrc":"5517:3:86","nodeType":"YulIdentifier","src":"5517:3:86"},"nativeSrc":"5517:21:86","nodeType":"YulFunctionCall","src":"5517:21:86"}],"functionName":{"name":"mload","nativeSrc":"5511:5:86","nodeType":"YulIdentifier","src":"5511:5:86"},"nativeSrc":"5511:28:86","nodeType":"YulFunctionCall","src":"5511:28:86"},{"arguments":[{"kind":"number","nativeSrc":"5648:5:86","nodeType":"YulLiteral","src":"5648:5:86","type":"","value":"0x100"},{"arguments":[{"kind":"number","nativeSrc":"5659:2:86","nodeType":"YulLiteral","src":"5659:2:86","type":"","value":"32"},{"name":"mlength","nativeSrc":"5663:7:86","nodeType":"YulIdentifier","src":"5663:7:86"}],"functionName":{"name":"sub","nativeSrc":"5655:3:86","nodeType":"YulIdentifier","src":"5655:3:86"},"nativeSrc":"5655:16:86","nodeType":"YulFunctionCall","src":"5655:16:86"}],"functionName":{"name":"exp","nativeSrc":"5644:3:86","nodeType":"YulIdentifier","src":"5644:3:86"},"nativeSrc":"5644:28:86","nodeType":"YulFunctionCall","src":"5644:28:86"}],"functionName":{"name":"div","nativeSrc":"5404:3:86","nodeType":"YulIdentifier","src":"5404:3:86"},"nativeSrc":"5404:302:86","nodeType":"YulFunctionCall","src":"5404:302:86"},{"arguments":[{"kind":"number","nativeSrc":"5895:5:86","nodeType":"YulLiteral","src":"5895:5:86","type":"","value":"0x100"},{"arguments":[{"kind":"number","nativeSrc":"5906:2:86","nodeType":"YulLiteral","src":"5906:2:86","type":"","value":"32"},{"name":"newlength","nativeSrc":"5910:9:86","nodeType":"YulIdentifier","src":"5910:9:86"}],"functionName":{"name":"sub","nativeSrc":"5902:3:86","nodeType":"YulIdentifier","src":"5902:3:86"},"nativeSrc":"5902:18:86","nodeType":"YulFunctionCall","src":"5902:18:86"}],"functionName":{"name":"exp","nativeSrc":"5891:3:86","nodeType":"YulIdentifier","src":"5891:3:86"},"nativeSrc":"5891:30:86","nodeType":"YulFunctionCall","src":"5891:30:86"}],"functionName":{"name":"mul","nativeSrc":"5367:3:86","nodeType":"YulIdentifier","src":"5367:3:86"},"nativeSrc":"5367:584:86","nodeType":"YulFunctionCall","src":"5367:584:86"},{"arguments":[{"name":"mlength","nativeSrc":"6104:7:86","nodeType":"YulIdentifier","src":"6104:7:86"},{"kind":"number","nativeSrc":"6113:1:86","nodeType":"YulLiteral","src":"6113:1:86","type":"","value":"2"}],"functionName":{"name":"mul","nativeSrc":"6100:3:86","nodeType":"YulIdentifier","src":"6100:3:86"},"nativeSrc":"6100:15:86","nodeType":"YulFunctionCall","src":"6100:15:86"}],"functionName":{"name":"add","nativeSrc":"5334:3:86","nodeType":"YulIdentifier","src":"5334:3:86"},"nativeSrc":"5334:807:86","nodeType":"YulFunctionCall","src":"5334:807:86"}],"functionName":{"name":"add","nativeSrc":"5134:3:86","nodeType":"YulIdentifier","src":"5134:3:86"},"nativeSrc":"5134:1029:86","nodeType":"YulFunctionCall","src":"5134:1029:86"}],"functionName":{"name":"sstore","nativeSrc":"4963:6:86","nodeType":"YulIdentifier","src":"4963:6:86"},"nativeSrc":"4963:1218:86","nodeType":"YulFunctionCall","src":"4963:1218:86"},"nativeSrc":"4963:1218:86","nodeType":"YulExpressionStatement","src":"4963:1218:86"}]},"nativeSrc":"4703:1492:86","nodeType":"YulCase","src":"4703:1492:86","value":{"kind":"number","nativeSrc":"4708:1:86","nodeType":"YulLiteral","src":"4708:1:86","type":"","value":"2"}},{"body":{"nativeSrc":"6215:1935:86","nodeType":"YulBlock","src":"6215:1935:86","statements":[{"expression":{"arguments":[{"kind":"number","nativeSrc":"6424:3:86","nodeType":"YulLiteral","src":"6424:3:86","type":"","value":"0x0"},{"name":"_preBytes.slot","nativeSrc":"6429:14:86","nodeType":"YulIdentifier","src":"6429:14:86"}],"functionName":{"name":"mstore","nativeSrc":"6417:6:86","nodeType":"YulIdentifier","src":"6417:6:86"},"nativeSrc":"6417:27:86","nodeType":"YulFunctionCall","src":"6417:27:86"},"nativeSrc":"6417:27:86","nodeType":"YulExpressionStatement","src":"6417:27:86"},{"nativeSrc":"6461:53:86","nodeType":"YulVariableDeclaration","src":"6461:53:86","value":{"arguments":[{"arguments":[{"kind":"number","nativeSrc":"6485:3:86","nodeType":"YulLiteral","src":"6485:3:86","type":"","value":"0x0"},{"kind":"number","nativeSrc":"6490:4:86","nodeType":"YulLiteral","src":"6490:4:86","type":"","value":"0x20"}],"functionName":{"name":"keccak256","nativeSrc":"6475:9:86","nodeType":"YulIdentifier","src":"6475:9:86"},"nativeSrc":"6475:20:86","nodeType":"YulFunctionCall","src":"6475:20:86"},{"arguments":[{"name":"slength","nativeSrc":"6501:7:86","nodeType":"YulIdentifier","src":"6501:7:86"},{"kind":"number","nativeSrc":"6510:2:86","nodeType":"YulLiteral","src":"6510:2:86","type":"","value":"32"}],"functionName":{"name":"div","nativeSrc":"6497:3:86","nodeType":"YulIdentifier","src":"6497:3:86"},"nativeSrc":"6497:16:86","nodeType":"YulFunctionCall","src":"6497:16:86"}],"functionName":{"name":"add","nativeSrc":"6471:3:86","nodeType":"YulIdentifier","src":"6471:3:86"},"nativeSrc":"6471:43:86","nodeType":"YulFunctionCall","src":"6471:43:86"},"variables":[{"name":"sc","nativeSrc":"6465:2:86","nodeType":"YulTypedName","src":"6465:2:86","type":""}]},{"expression":{"arguments":[{"name":"_preBytes.slot","nativeSrc":"6574:14:86","nodeType":"YulIdentifier","src":"6574:14:86"},{"arguments":[{"arguments":[{"name":"newlength","nativeSrc":"6598:9:86","nodeType":"YulIdentifier","src":"6598:9:86"},{"kind":"number","nativeSrc":"6609:1:86","nodeType":"YulLiteral","src":"6609:1:86","type":"","value":"2"}],"functionName":{"name":"mul","nativeSrc":"6594:3:86","nodeType":"YulIdentifier","src":"6594:3:86"},"nativeSrc":"6594:17:86","nodeType":"YulFunctionCall","src":"6594:17:86"},{"kind":"number","nativeSrc":"6613:1:86","nodeType":"YulLiteral","src":"6613:1:86","type":"","value":"1"}],"functionName":{"name":"add","nativeSrc":"6590:3:86","nodeType":"YulIdentifier","src":"6590:3:86"},"nativeSrc":"6590:25:86","nodeType":"YulFunctionCall","src":"6590:25:86"}],"functionName":{"name":"sstore","nativeSrc":"6567:6:86","nodeType":"YulIdentifier","src":"6567:6:86"},"nativeSrc":"6567:49:86","nodeType":"YulFunctionCall","src":"6567:49:86"},"nativeSrc":"6567:49:86","nodeType":"YulExpressionStatement","src":"6567:49:86"},{"nativeSrc":"7204:30:86","nodeType":"YulVariableDeclaration","src":"7204:30:86","value":{"arguments":[{"kind":"number","nativeSrc":"7222:2:86","nodeType":"YulLiteral","src":"7222:2:86","type":"","value":"32"},{"name":"slength","nativeSrc":"7226:7:86","nodeType":"YulIdentifier","src":"7226:7:86"}],"functionName":{"name":"sub","nativeSrc":"7218:3:86","nodeType":"YulIdentifier","src":"7218:3:86"},"nativeSrc":"7218:16:86","nodeType":"YulFunctionCall","src":"7218:16:86"},"variables":[{"name":"submod","nativeSrc":"7208:6:86","nodeType":"YulTypedName","src":"7208:6:86","type":""}]},{"nativeSrc":"7251:33:86","nodeType":"YulVariableDeclaration","src":"7251:33:86","value":{"arguments":[{"name":"_postBytes","nativeSrc":"7265:10:86","nodeType":"YulIdentifier","src":"7265:10:86"},{"name":"submod","nativeSrc":"7277:6:86","nodeType":"YulIdentifier","src":"7277:6:86"}],"functionName":{"name":"add","nativeSrc":"7261:3:86","nodeType":"YulIdentifier","src":"7261:3:86"},"nativeSrc":"7261:23:86","nodeType":"YulFunctionCall","src":"7261:23:86"},"variables":[{"name":"mc","nativeSrc":"7255:2:86","nodeType":"YulTypedName","src":"7255:2:86","type":""}]},{"nativeSrc":"7301:35:86","nodeType":"YulVariableDeclaration","src":"7301:35:86","value":{"arguments":[{"name":"_postBytes","nativeSrc":"7316:10:86","nodeType":"YulIdentifier","src":"7316:10:86"},{"name":"mlength","nativeSrc":"7328:7:86","nodeType":"YulIdentifier","src":"7328:7:86"}],"functionName":{"name":"add","nativeSrc":"7312:3:86","nodeType":"YulIdentifier","src":"7312:3:86"},"nativeSrc":"7312:24:86","nodeType":"YulFunctionCall","src":"7312:24:86"},"variables":[{"name":"end","nativeSrc":"7305:3:86","nodeType":"YulTypedName","src":"7305:3:86","type":""}]},{"nativeSrc":"7353:38:86","nodeType":"YulVariableDeclaration","src":"7353:38:86","value":{"arguments":[{"arguments":[{"kind":"number","nativeSrc":"7373:5:86","nodeType":"YulLiteral","src":"7373:5:86","type":"","value":"0x100"},{"name":"submod","nativeSrc":"7380:6:86","nodeType":"YulIdentifier","src":"7380:6:86"}],"functionName":{"name":"exp","nativeSrc":"7369:3:86","nodeType":"YulIdentifier","src":"7369:3:86"},"nativeSrc":"7369:18:86","nodeType":"YulFunctionCall","src":"7369:18:86"},{"kind":"number","nativeSrc":"7389:1:86","nodeType":"YulLiteral","src":"7389:1:86","type":"","value":"1"}],"functionName":{"name":"sub","nativeSrc":"7365:3:86","nodeType":"YulIdentifier","src":"7365:3:86"},"nativeSrc":"7365:26:86","nodeType":"YulFunctionCall","src":"7365:26:86"},"variables":[{"name":"mask","nativeSrc":"7357:4:86","nodeType":"YulTypedName","src":"7357:4:86","type":""}]},{"expression":{"arguments":[{"name":"sc","nativeSrc":"7437:2:86","nodeType":"YulIdentifier","src":"7437:2:86"},{"arguments":[{"arguments":[{"name":"fslot","nativeSrc":"7523:5:86","nodeType":"YulIdentifier","src":"7523:5:86"},{"kind":"number","nativeSrc":"7558:66:86","nodeType":"YulLiteral","src":"7558:66:86","type":"","value":"0xffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00"}],"functionName":{"name":"and","nativeSrc":"7490:3:86","nodeType":"YulIdentifier","src":"7490:3:86"},"nativeSrc":"7490:160:86","nodeType":"YulFunctionCall","src":"7490:160:86"},{"arguments":[{"arguments":[{"name":"mc","nativeSrc":"7686:2:86","nodeType":"YulIdentifier","src":"7686:2:86"}],"functionName":{"name":"mload","nativeSrc":"7680:5:86","nodeType":"YulIdentifier","src":"7680:5:86"},"nativeSrc":"7680:9:86","nodeType":"YulFunctionCall","src":"7680:9:86"},{"name":"mask","nativeSrc":"7691:4:86","nodeType":"YulIdentifier","src":"7691:4:86"}],"functionName":{"name":"and","nativeSrc":"7676:3:86","nodeType":"YulIdentifier","src":"7676:3:86"},"nativeSrc":"7676:20:86","nodeType":"YulFunctionCall","src":"7676:20:86"}],"functionName":{"name":"add","nativeSrc":"7461:3:86","nodeType":"YulIdentifier","src":"7461:3:86"},"nativeSrc":"7461:257:86","nodeType":"YulFunctionCall","src":"7461:257:86"}],"functionName":{"name":"sstore","nativeSrc":"7409:6:86","nodeType":"YulIdentifier","src":"7409:6:86"},"nativeSrc":"7409:327:86","nodeType":"YulFunctionCall","src":"7409:327:86"},"nativeSrc":"7409:327:86","nodeType":"YulExpressionStatement","src":"7409:327:86"},{"body":{"nativeSrc":"7964:61:86","nodeType":"YulBlock","src":"7964:61:86","statements":[{"expression":{"arguments":[{"name":"sc","nativeSrc":"7993:2:86","nodeType":"YulIdentifier","src":"7993:2:86"},{"arguments":[{"name":"mc","nativeSrc":"8003:2:86","nodeType":"YulIdentifier","src":"8003:2:86"}],"functionName":{"name":"mload","nativeSrc":"7997:5:86","nodeType":"YulIdentifier","src":"7997:5:86"},"nativeSrc":"7997:9:86","nodeType":"YulFunctionCall","src":"7997:9:86"}],"functionName":{"name":"sstore","nativeSrc":"7986:6:86","nodeType":"YulIdentifier","src":"7986:6:86"},"nativeSrc":"7986:21:86","nodeType":"YulFunctionCall","src":"7986:21:86"},"nativeSrc":"7986:21:86","nodeType":"YulExpressionStatement","src":"7986:21:86"}]},"condition":{"arguments":[{"name":"mc","nativeSrc":"7858:2:86","nodeType":"YulIdentifier","src":"7858:2:86"},{"name":"end","nativeSrc":"7862:3:86","nodeType":"YulIdentifier","src":"7862:3:86"}],"functionName":{"name":"lt","nativeSrc":"7855:2:86","nodeType":"YulIdentifier","src":"7855:2:86"},"nativeSrc":"7855:11:86","nodeType":"YulFunctionCall","src":"7855:11:86"},"nativeSrc":"7754:271:86","nodeType":"YulForLoop","post":{"nativeSrc":"7867:96:86","nodeType":"YulBlock","src":"7867:96:86","statements":[{"nativeSrc":"7889:16:86","nodeType":"YulAssignment","src":"7889:16:86","value":{"arguments":[{"name":"sc","nativeSrc":"7899:2:86","nodeType":"YulIdentifier","src":"7899:2:86"},{"kind":"number","nativeSrc":"7903:1:86","nodeType":"YulLiteral","src":"7903:1:86","type":"","value":"1"}],"functionName":{"name":"add","nativeSrc":"7895:3:86","nodeType":"YulIdentifier","src":"7895:3:86"},"nativeSrc":"7895:10:86","nodeType":"YulFunctionCall","src":"7895:10:86"},"variableNames":[{"name":"sc","nativeSrc":"7889:2:86","nodeType":"YulIdentifier","src":"7889:2:86"}]},{"nativeSrc":"7926:19:86","nodeType":"YulAssignment","src":"7926:19:86","value":{"arguments":[{"name":"mc","nativeSrc":"7936:2:86","nodeType":"YulIdentifier","src":"7936:2:86"},{"kind":"number","nativeSrc":"7940:4:86","nodeType":"YulLiteral","src":"7940:4:86","type":"","value":"0x20"}],"functionName":{"name":"add","nativeSrc":"7932:3:86","nodeType":"YulIdentifier","src":"7932:3:86"},"nativeSrc":"7932:13:86","nodeType":"YulFunctionCall","src":"7932:13:86"},"variableNames":[{"name":"mc","nativeSrc":"7926:2:86","nodeType":"YulIdentifier","src":"7926:2:86"}]}]},"pre":{"nativeSrc":"7758:96:86","nodeType":"YulBlock","src":"7758:96:86","statements":[{"nativeSrc":"7780:19:86","nodeType":"YulAssignment","src":"7780:19:86","value":{"arguments":[{"name":"mc","nativeSrc":"7790:2:86","nodeType":"YulIdentifier","src":"7790:2:86"},{"kind":"number","nativeSrc":"7794:4:86","nodeType":"YulLiteral","src":"7794:4:86","type":"","value":"0x20"}],"functionName":{"name":"add","nativeSrc":"7786:3:86","nodeType":"YulIdentifier","src":"7786:3:86"},"nativeSrc":"7786:13:86","nodeType":"YulFunctionCall","src":"7786:13:86"},"variableNames":[{"name":"mc","nativeSrc":"7780:2:86","nodeType":"YulIdentifier","src":"7780:2:86"}]},{"nativeSrc":"7820:16:86","nodeType":"YulAssignment","src":"7820:16:86","value":{"arguments":[{"name":"sc","nativeSrc":"7830:2:86","nodeType":"YulIdentifier","src":"7830:2:86"},{"kind":"number","nativeSrc":"7834:1:86","nodeType":"YulLiteral","src":"7834:1:86","type":"","value":"1"}],"functionName":{"name":"add","nativeSrc":"7826:3:86","nodeType":"YulIdentifier","src":"7826:3:86"},"nativeSrc":"7826:10:86","nodeType":"YulFunctionCall","src":"7826:10:86"},"variableNames":[{"name":"sc","nativeSrc":"7820:2:86","nodeType":"YulIdentifier","src":"7820:2:86"}]}]},"src":"7754:271:86"},{"nativeSrc":"8043:32:86","nodeType":"YulAssignment","src":"8043:32:86","value":{"arguments":[{"kind":"number","nativeSrc":"8055:5:86","nodeType":"YulLiteral","src":"8055:5:86","type":"","value":"0x100"},{"arguments":[{"name":"mc","nativeSrc":"8066:2:86","nodeType":"YulIdentifier","src":"8066:2:86"},{"name":"end","nativeSrc":"8070:3:86","nodeType":"YulIdentifier","src":"8070:3:86"}],"functionName":{"name":"sub","nativeSrc":"8062:3:86","nodeType":"YulIdentifier","src":"8062:3:86"},"nativeSrc":"8062:12:86","nodeType":"YulFunctionCall","src":"8062:12:86"}],"functionName":{"name":"exp","nativeSrc":"8051:3:86","nodeType":"YulIdentifier","src":"8051:3:86"},"nativeSrc":"8051:24:86","nodeType":"YulFunctionCall","src":"8051:24:86"},"variableNames":[{"name":"mask","nativeSrc":"8043:4:86","nodeType":"YulIdentifier","src":"8043:4:86"}]},{"expression":{"arguments":[{"name":"sc","nativeSrc":"8100:2:86","nodeType":"YulIdentifier","src":"8100:2:86"},{"arguments":[{"arguments":[{"arguments":[{"name":"mc","nativeSrc":"8118:2:86","nodeType":"YulIdentifier","src":"8118:2:86"}],"functionName":{"name":"mload","nativeSrc":"8112:5:86","nodeType":"YulIdentifier","src":"8112:5:86"},"nativeSrc":"8112:9:86","nodeType":"YulFunctionCall","src":"8112:9:86"},{"name":"mask","nativeSrc":"8123:4:86","nodeType":"YulIdentifier","src":"8123:4:86"}],"functionName":{"name":"div","nativeSrc":"8108:3:86","nodeType":"YulIdentifier","src":"8108:3:86"},"nativeSrc":"8108:20:86","nodeType":"YulFunctionCall","src":"8108:20:86"},{"name":"mask","nativeSrc":"8130:4:86","nodeType":"YulIdentifier","src":"8130:4:86"}],"functionName":{"name":"mul","nativeSrc":"8104:3:86","nodeType":"YulIdentifier","src":"8104:3:86"},"nativeSrc":"8104:31:86","nodeType":"YulFunctionCall","src":"8104:31:86"}],"functionName":{"name":"sstore","nativeSrc":"8093:6:86","nodeType":"YulIdentifier","src":"8093:6:86"},"nativeSrc":"8093:43:86","nodeType":"YulFunctionCall","src":"8093:43:86"},"nativeSrc":"8093:43:86","nodeType":"YulExpressionStatement","src":"8093:43:86"}]},"nativeSrc":"6208:1942:86","nodeType":"YulCase","src":"6208:1942:86","value":{"kind":"number","nativeSrc":"6213:1:86","nodeType":"YulLiteral","src":"6213:1:86","type":"","value":"1"}},{"body":{"nativeSrc":"8171:1264:86","nodeType":"YulBlock","src":"8171:1264:86","statements":[{"expression":{"arguments":[{"kind":"number","nativeSrc":"8268:3:86","nodeType":"YulLiteral","src":"8268:3:86","type":"","value":"0x0"},{"name":"_preBytes.slot","nativeSrc":"8273:14:86","nodeType":"YulIdentifier","src":"8273:14:86"}],"functionName":{"name":"mstore","nativeSrc":"8261:6:86","nodeType":"YulIdentifier","src":"8261:6:86"},"nativeSrc":"8261:27:86","nodeType":"YulFunctionCall","src":"8261:27:86"},"nativeSrc":"8261:27:86","nodeType":"YulExpressionStatement","src":"8261:27:86"},{"nativeSrc":"8381:53:86","nodeType":"YulVariableDeclaration","src":"8381:53:86","value":{"arguments":[{"arguments":[{"kind":"number","nativeSrc":"8405:3:86","nodeType":"YulLiteral","src":"8405:3:86","type":"","value":"0x0"},{"kind":"number","nativeSrc":"8410:4:86","nodeType":"YulLiteral","src":"8410:4:86","type":"","value":"0x20"}],"functionName":{"name":"keccak256","nativeSrc":"8395:9:86","nodeType":"YulIdentifier","src":"8395:9:86"},"nativeSrc":"8395:20:86","nodeType":"YulFunctionCall","src":"8395:20:86"},{"arguments":[{"name":"slength","nativeSrc":"8421:7:86","nodeType":"YulIdentifier","src":"8421:7:86"},{"kind":"number","nativeSrc":"8430:2:86","nodeType":"YulLiteral","src":"8430:2:86","type":"","value":"32"}],"functionName":{"name":"div","nativeSrc":"8417:3:86","nodeType":"YulIdentifier","src":"8417:3:86"},"nativeSrc":"8417:16:86","nodeType":"YulFunctionCall","src":"8417:16:86"}],"functionName":{"name":"add","nativeSrc":"8391:3:86","nodeType":"YulIdentifier","src":"8391:3:86"},"nativeSrc":"8391:43:86","nodeType":"YulFunctionCall","src":"8391:43:86"},"variables":[{"name":"sc","nativeSrc":"8385:2:86","nodeType":"YulTypedName","src":"8385:2:86","type":""}]},{"expression":{"arguments":[{"name":"_preBytes.slot","nativeSrc":"8494:14:86","nodeType":"YulIdentifier","src":"8494:14:86"},{"arguments":[{"arguments":[{"name":"newlength","nativeSrc":"8518:9:86","nodeType":"YulIdentifier","src":"8518:9:86"},{"kind":"number","nativeSrc":"8529:1:86","nodeType":"YulLiteral","src":"8529:1:86","type":"","value":"2"}],"functionName":{"name":"mul","nativeSrc":"8514:3:86","nodeType":"YulIdentifier","src":"8514:3:86"},"nativeSrc":"8514:17:86","nodeType":"YulFunctionCall","src":"8514:17:86"},{"kind":"number","nativeSrc":"8533:1:86","nodeType":"YulLiteral","src":"8533:1:86","type":"","value":"1"}],"functionName":{"name":"add","nativeSrc":"8510:3:86","nodeType":"YulIdentifier","src":"8510:3:86"},"nativeSrc":"8510:25:86","nodeType":"YulFunctionCall","src":"8510:25:86"}],"functionName":{"name":"sstore","nativeSrc":"8487:6:86","nodeType":"YulIdentifier","src":"8487:6:86"},"nativeSrc":"8487:49:86","nodeType":"YulFunctionCall","src":"8487:49:86"},"nativeSrc":"8487:49:86","nodeType":"YulExpressionStatement","src":"8487:49:86"},{"nativeSrc":"8663:34:86","nodeType":"YulVariableDeclaration","src":"8663:34:86","value":{"arguments":[{"name":"slength","nativeSrc":"8685:7:86","nodeType":"YulIdentifier","src":"8685:7:86"},{"kind":"number","nativeSrc":"8694:2:86","nodeType":"YulLiteral","src":"8694:2:86","type":"","value":"32"}],"functionName":{"name":"mod","nativeSrc":"8681:3:86","nodeType":"YulIdentifier","src":"8681:3:86"},"nativeSrc":"8681:16:86","nodeType":"YulFunctionCall","src":"8681:16:86"},"variables":[{"name":"slengthmod","nativeSrc":"8667:10:86","nodeType":"YulTypedName","src":"8667:10:86","type":""}]},{"nativeSrc":"8714:34:86","nodeType":"YulVariableDeclaration","src":"8714:34:86","value":{"arguments":[{"name":"mlength","nativeSrc":"8736:7:86","nodeType":"YulIdentifier","src":"8736:7:86"},{"kind":"number","nativeSrc":"8745:2:86","nodeType":"YulLiteral","src":"8745:2:86","type":"","value":"32"}],"functionName":{"name":"mod","nativeSrc":"8732:3:86","nodeType":"YulIdentifier","src":"8732:3:86"},"nativeSrc":"8732:16:86","nodeType":"YulFunctionCall","src":"8732:16:86"},"variables":[{"name":"mlengthmod","nativeSrc":"8718:10:86","nodeType":"YulTypedName","src":"8718:10:86","type":""}]},{"nativeSrc":"8765:33:86","nodeType":"YulVariableDeclaration","src":"8765:33:86","value":{"arguments":[{"kind":"number","nativeSrc":"8783:2:86","nodeType":"YulLiteral","src":"8783:2:86","type":"","value":"32"},{"name":"slengthmod","nativeSrc":"8787:10:86","nodeType":"YulIdentifier","src":"8787:10:86"}],"functionName":{"name":"sub","nativeSrc":"8779:3:86","nodeType":"YulIdentifier","src":"8779:3:86"},"nativeSrc":"8779:19:86","nodeType":"YulFunctionCall","src":"8779:19:86"},"variables":[{"name":"submod","nativeSrc":"8769:6:86","nodeType":"YulTypedName","src":"8769:6:86","type":""}]},{"nativeSrc":"8815:33:86","nodeType":"YulVariableDeclaration","src":"8815:33:86","value":{"arguments":[{"name":"_postBytes","nativeSrc":"8829:10:86","nodeType":"YulIdentifier","src":"8829:10:86"},{"name":"submod","nativeSrc":"8841:6:86","nodeType":"YulIdentifier","src":"8841:6:86"}],"functionName":{"name":"add","nativeSrc":"8825:3:86","nodeType":"YulIdentifier","src":"8825:3:86"},"nativeSrc":"8825:23:86","nodeType":"YulFunctionCall","src":"8825:23:86"},"variables":[{"name":"mc","nativeSrc":"8819:2:86","nodeType":"YulTypedName","src":"8819:2:86","type":""}]},{"nativeSrc":"8865:35:86","nodeType":"YulVariableDeclaration","src":"8865:35:86","value":{"arguments":[{"name":"_postBytes","nativeSrc":"8880:10:86","nodeType":"YulIdentifier","src":"8880:10:86"},{"name":"mlength","nativeSrc":"8892:7:86","nodeType":"YulIdentifier","src":"8892:7:86"}],"functionName":{"name":"add","nativeSrc":"8876:3:86","nodeType":"YulIdentifier","src":"8876:3:86"},"nativeSrc":"8876:24:86","nodeType":"YulFunctionCall","src":"8876:24:86"},"variables":[{"name":"end","nativeSrc":"8869:3:86","nodeType":"YulTypedName","src":"8869:3:86","type":""}]},{"nativeSrc":"8917:38:86","nodeType":"YulVariableDeclaration","src":"8917:38:86","value":{"arguments":[{"arguments":[{"kind":"number","nativeSrc":"8937:5:86","nodeType":"YulLiteral","src":"8937:5:86","type":"","value":"0x100"},{"name":"submod","nativeSrc":"8944:6:86","nodeType":"YulIdentifier","src":"8944:6:86"}],"functionName":{"name":"exp","nativeSrc":"8933:3:86","nodeType":"YulIdentifier","src":"8933:3:86"},"nativeSrc":"8933:18:86","nodeType":"YulFunctionCall","src":"8933:18:86"},{"kind":"number","nativeSrc":"8953:1:86","nodeType":"YulLiteral","src":"8953:1:86","type":"","value":"1"}],"functionName":{"name":"sub","nativeSrc":"8929:3:86","nodeType":"YulIdentifier","src":"8929:3:86"},"nativeSrc":"8929:26:86","nodeType":"YulFunctionCall","src":"8929:26:86"},"variables":[{"name":"mask","nativeSrc":"8921:4:86","nodeType":"YulTypedName","src":"8921:4:86","type":""}]},{"expression":{"arguments":[{"name":"sc","nativeSrc":"8980:2:86","nodeType":"YulIdentifier","src":"8980:2:86"},{"arguments":[{"arguments":[{"name":"sc","nativeSrc":"8994:2:86","nodeType":"YulIdentifier","src":"8994:2:86"}],"functionName":{"name":"sload","nativeSrc":"8988:5:86","nodeType":"YulIdentifier","src":"8988:5:86"},"nativeSrc":"8988:9:86","nodeType":"YulFunctionCall","src":"8988:9:86"},{"arguments":[{"arguments":[{"name":"mc","nativeSrc":"9009:2:86","nodeType":"YulIdentifier","src":"9009:2:86"}],"functionName":{"name":"mload","nativeSrc":"9003:5:86","nodeType":"YulIdentifier","src":"9003:5:86"},"nativeSrc":"9003:9:86","nodeType":"YulFunctionCall","src":"9003:9:86"},{"name":"mask","nativeSrc":"9014:4:86","nodeType":"YulIdentifier","src":"9014:4:86"}],"functionName":{"name":"and","nativeSrc":"8999:3:86","nodeType":"YulIdentifier","src":"8999:3:86"},"nativeSrc":"8999:20:86","nodeType":"YulFunctionCall","src":"8999:20:86"}],"functionName":{"name":"add","nativeSrc":"8984:3:86","nodeType":"YulIdentifier","src":"8984:3:86"},"nativeSrc":"8984:36:86","nodeType":"YulFunctionCall","src":"8984:36:86"}],"functionName":{"name":"sstore","nativeSrc":"8973:6:86","nodeType":"YulIdentifier","src":"8973:6:86"},"nativeSrc":"8973:48:86","nodeType":"YulFunctionCall","src":"8973:48:86"},"nativeSrc":"8973:48:86","nodeType":"YulExpressionStatement","src":"8973:48:86"},{"body":{"nativeSrc":"9249:61:86","nodeType":"YulBlock","src":"9249:61:86","statements":[{"expression":{"arguments":[{"name":"sc","nativeSrc":"9278:2:86","nodeType":"YulIdentifier","src":"9278:2:86"},{"arguments":[{"name":"mc","nativeSrc":"9288:2:86","nodeType":"YulIdentifier","src":"9288:2:86"}],"functionName":{"name":"mload","nativeSrc":"9282:5:86","nodeType":"YulIdentifier","src":"9282:5:86"},"nativeSrc":"9282:9:86","nodeType":"YulFunctionCall","src":"9282:9:86"}],"functionName":{"name":"sstore","nativeSrc":"9271:6:86","nodeType":"YulIdentifier","src":"9271:6:86"},"nativeSrc":"9271:21:86","nodeType":"YulFunctionCall","src":"9271:21:86"},"nativeSrc":"9271:21:86","nodeType":"YulExpressionStatement","src":"9271:21:86"}]},"condition":{"arguments":[{"name":"mc","nativeSrc":"9143:2:86","nodeType":"YulIdentifier","src":"9143:2:86"},{"name":"end","nativeSrc":"9147:3:86","nodeType":"YulIdentifier","src":"9147:3:86"}],"functionName":{"name":"lt","nativeSrc":"9140:2:86","nodeType":"YulIdentifier","src":"9140:2:86"},"nativeSrc":"9140:11:86","nodeType":"YulFunctionCall","src":"9140:11:86"},"nativeSrc":"9039:271:86","nodeType":"YulForLoop","post":{"nativeSrc":"9152:96:86","nodeType":"YulBlock","src":"9152:96:86","statements":[{"nativeSrc":"9174:16:86","nodeType":"YulAssignment","src":"9174:16:86","value":{"arguments":[{"name":"sc","nativeSrc":"9184:2:86","nodeType":"YulIdentifier","src":"9184:2:86"},{"kind":"number","nativeSrc":"9188:1:86","nodeType":"YulLiteral","src":"9188:1:86","type":"","value":"1"}],"functionName":{"name":"add","nativeSrc":"9180:3:86","nodeType":"YulIdentifier","src":"9180:3:86"},"nativeSrc":"9180:10:86","nodeType":"YulFunctionCall","src":"9180:10:86"},"variableNames":[{"name":"sc","nativeSrc":"9174:2:86","nodeType":"YulIdentifier","src":"9174:2:86"}]},{"nativeSrc":"9211:19:86","nodeType":"YulAssignment","src":"9211:19:86","value":{"arguments":[{"name":"mc","nativeSrc":"9221:2:86","nodeType":"YulIdentifier","src":"9221:2:86"},{"kind":"number","nativeSrc":"9225:4:86","nodeType":"YulLiteral","src":"9225:4:86","type":"","value":"0x20"}],"functionName":{"name":"add","nativeSrc":"9217:3:86","nodeType":"YulIdentifier","src":"9217:3:86"},"nativeSrc":"9217:13:86","nodeType":"YulFunctionCall","src":"9217:13:86"},"variableNames":[{"name":"mc","nativeSrc":"9211:2:86","nodeType":"YulIdentifier","src":"9211:2:86"}]}]},"pre":{"nativeSrc":"9043:96:86","nodeType":"YulBlock","src":"9043:96:86","statements":[{"nativeSrc":"9065:16:86","nodeType":"YulAssignment","src":"9065:16:86","value":{"arguments":[{"name":"sc","nativeSrc":"9075:2:86","nodeType":"YulIdentifier","src":"9075:2:86"},{"kind":"number","nativeSrc":"9079:1:86","nodeType":"YulLiteral","src":"9079:1:86","type":"","value":"1"}],"functionName":{"name":"add","nativeSrc":"9071:3:86","nodeType":"YulIdentifier","src":"9071:3:86"},"nativeSrc":"9071:10:86","nodeType":"YulFunctionCall","src":"9071:10:86"},"variableNames":[{"name":"sc","nativeSrc":"9065:2:86","nodeType":"YulIdentifier","src":"9065:2:86"}]},{"nativeSrc":"9102:19:86","nodeType":"YulAssignment","src":"9102:19:86","value":{"arguments":[{"name":"mc","nativeSrc":"9112:2:86","nodeType":"YulIdentifier","src":"9112:2:86"},{"kind":"number","nativeSrc":"9116:4:86","nodeType":"YulLiteral","src":"9116:4:86","type":"","value":"0x20"}],"functionName":{"name":"add","nativeSrc":"9108:3:86","nodeType":"YulIdentifier","src":"9108:3:86"},"nativeSrc":"9108:13:86","nodeType":"YulFunctionCall","src":"9108:13:86"},"variableNames":[{"name":"mc","nativeSrc":"9102:2:86","nodeType":"YulIdentifier","src":"9102:2:86"}]}]},"src":"9039:271:86"},{"nativeSrc":"9328:32:86","nodeType":"YulAssignment","src":"9328:32:86","value":{"arguments":[{"kind":"number","nativeSrc":"9340:5:86","nodeType":"YulLiteral","src":"9340:5:86","type":"","value":"0x100"},{"arguments":[{"name":"mc","nativeSrc":"9351:2:86","nodeType":"YulIdentifier","src":"9351:2:86"},{"name":"end","nativeSrc":"9355:3:86","nodeType":"YulIdentifier","src":"9355:3:86"}],"functionName":{"name":"sub","nativeSrc":"9347:3:86","nodeType":"YulIdentifier","src":"9347:3:86"},"nativeSrc":"9347:12:86","nodeType":"YulFunctionCall","src":"9347:12:86"}],"functionName":{"name":"exp","nativeSrc":"9336:3:86","nodeType":"YulIdentifier","src":"9336:3:86"},"nativeSrc":"9336:24:86","nodeType":"YulFunctionCall","src":"9336:24:86"},"variableNames":[{"name":"mask","nativeSrc":"9328:4:86","nodeType":"YulIdentifier","src":"9328:4:86"}]},{"expression":{"arguments":[{"name":"sc","nativeSrc":"9385:2:86","nodeType":"YulIdentifier","src":"9385:2:86"},{"arguments":[{"arguments":[{"arguments":[{"name":"mc","nativeSrc":"9403:2:86","nodeType":"YulIdentifier","src":"9403:2:86"}],"functionName":{"name":"mload","nativeSrc":"9397:5:86","nodeType":"YulIdentifier","src":"9397:5:86"},"nativeSrc":"9397:9:86","nodeType":"YulFunctionCall","src":"9397:9:86"},{"name":"mask","nativeSrc":"9408:4:86","nodeType":"YulIdentifier","src":"9408:4:86"}],"functionName":{"name":"div","nativeSrc":"9393:3:86","nodeType":"YulIdentifier","src":"9393:3:86"},"nativeSrc":"9393:20:86","nodeType":"YulFunctionCall","src":"9393:20:86"},{"name":"mask","nativeSrc":"9415:4:86","nodeType":"YulIdentifier","src":"9415:4:86"}],"functionName":{"name":"mul","nativeSrc":"9389:3:86","nodeType":"YulIdentifier","src":"9389:3:86"},"nativeSrc":"9389:31:86","nodeType":"YulFunctionCall","src":"9389:31:86"}],"functionName":{"name":"sstore","nativeSrc":"9378:6:86","nodeType":"YulIdentifier","src":"9378:6:86"},"nativeSrc":"9378:43:86","nodeType":"YulFunctionCall","src":"9378:43:86"},"nativeSrc":"9378:43:86","nodeType":"YulExpressionStatement","src":"9378:43:86"}]},"nativeSrc":"8163:1272:86","nodeType":"YulCase","src":"8163:1272:86","value":"default"}],"expression":{"arguments":[{"arguments":[{"name":"slength","nativeSrc":"4658:7:86","nodeType":"YulIdentifier","src":"4658:7:86"},{"kind":"number","nativeSrc":"4667:2:86","nodeType":"YulLiteral","src":"4667:2:86","type":"","value":"32"}],"functionName":{"name":"lt","nativeSrc":"4655:2:86","nodeType":"YulIdentifier","src":"4655:2:86"},"nativeSrc":"4655:15:86","nodeType":"YulFunctionCall","src":"4655:15:86"},{"arguments":[{"name":"newlength","nativeSrc":"4675:9:86","nodeType":"YulIdentifier","src":"4675:9:86"},{"kind":"number","nativeSrc":"4686:2:86","nodeType":"YulLiteral","src":"4686:2:86","type":"","value":"32"}],"functionName":{"name":"lt","nativeSrc":"4672:2:86","nodeType":"YulIdentifier","src":"4672:2:86"},"nativeSrc":"4672:17:86","nodeType":"YulFunctionCall","src":"4672:17:86"}],"functionName":{"name":"add","nativeSrc":"4651:3:86","nodeType":"YulIdentifier","src":"4651:3:86"},"nativeSrc":"4651:39:86","nodeType":"YulFunctionCall","src":"4651:39:86"},"nativeSrc":"4644:4791:86","nodeType":"YulSwitch","src":"4644:4791:86"}]},"evmVersion":"prague","externalReferences":[{"declaration":24909,"isOffset":false,"isSlot":false,"src":"4315:10:86","valueSize":1},{"declaration":24909,"isOffset":false,"isSlot":false,"src":"5521:10:86","valueSize":1},{"declaration":24909,"isOffset":false,"isSlot":false,"src":"7265:10:86","valueSize":1},{"declaration":24909,"isOffset":false,"isSlot":false,"src":"7316:10:86","valueSize":1},{"declaration":24909,"isOffset":false,"isSlot":false,"src":"8829:10:86","valueSize":1},{"declaration":24909,"isOffset":false,"isSlot":false,"src":"8880:10:86","valueSize":1},{"declaration":24907,"isOffset":false,"isSlot":true,"src":"3697:14:86","suffix":"slot","valueSize":1},{"declaration":24907,"isOffset":false,"isSlot":true,"src":"4991:14:86","suffix":"slot","valueSize":1},{"declaration":24907,"isOffset":false,"isSlot":true,"src":"6429:14:86","suffix":"slot","valueSize":1},{"declaration":24907,"isOffset":false,"isSlot":true,"src":"6574:14:86","suffix":"slot","valueSize":1},{"declaration":24907,"isOffset":false,"isSlot":true,"src":"8273:14:86","suffix":"slot","valueSize":1},{"declaration":24907,"isOffset":false,"isSlot":true,"src":"8494:14:86","suffix":"slot","valueSize":1}],"id":24912,"nodeType":"InlineAssembly","src":"3446:5999:86"}]},"id":24914,"implemented":true,"kind":"function","modifiers":[],"name":"concatStorage","nameLocation":"3363:13:86","nodeType":"FunctionDefinition","parameters":{"id":24910,"nodeType":"ParameterList","parameters":[{"constant":false,"id":24907,"mutability":"mutable","name":"_preBytes","nameLocation":"3391:9:86","nodeType":"VariableDeclaration","scope":24914,"src":"3377:23:86","stateVariable":false,"storageLocation":"storage","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"},"typeName":{"id":24906,"name":"bytes","nodeType":"ElementaryTypeName","src":"3377:5:86","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"},{"constant":false,"id":24909,"mutability":"mutable","name":"_postBytes","nameLocation":"3415:10:86","nodeType":"VariableDeclaration","scope":24914,"src":"3402:23:86","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes"},"typeName":{"id":24908,"name":"bytes","nodeType":"ElementaryTypeName","src":"3402:5:86","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"}],"src":"3376:50:86"},"returnParameters":{"id":24911,"nodeType":"ParameterList","parameters":[],"src":"3436:0:86"},"scope":25221,"src":"3354:6097:86","stateMutability":"nonpayable","virtual":false,"visibility":"internal"},{"body":{"id":24951,"nodeType":"Block","src":"9621:2805:86","statements":[{"id":24934,"nodeType":"UncheckedBlock","src":"9762:85:86","statements":[{"expression":{"arguments":[{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":24930,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":24928,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":24926,"name":"_length","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":24920,"src":"9794:7:86","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"+","rightExpression":{"hexValue":"3331","id":24927,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"9804:2:86","typeDescriptions":{"typeIdentifier":"t_rational_31_by_1","typeString":"int_const 31"},"value":"31"},"src":"9794:12:86","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">=","rightExpression":{"id":24929,"name":"_length","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":24920,"src":"9810:7:86","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"9794:23:86","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},{"hexValue":"736c6963655f6f766572666c6f77","id":24931,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"9819:16:86","typeDescriptions":{"typeIdentifier":"t_stringliteral_5d3d629f76473d94377d221b1f1c8f2161f7b65cab69e095662ec5d0e026c17e","typeString":"literal_string \"slice_overflow\""},"value":"slice_overflow"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_stringliteral_5d3d629f76473d94377d221b1f1c8f2161f7b65cab69e095662ec5d0e026c17e","typeString":"literal_string \"slice_overflow\""}],"id":24925,"name":"require","nodeType":"Identifier","overloadedDeclarations":[-18,-18,-18],"referencedDeclaration":-18,"src":"9786:7:86","typeDescriptions":{"typeIdentifier":"t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$","typeString":"function (bool,string memory) pure"}},"id":24932,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"9786:50:86","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":24933,"nodeType":"ExpressionStatement","src":"9786:50:86"}]},{"expression":{"arguments":[{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":24941,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"expression":{"id":24936,"name":"_bytes","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":24916,"src":"9864:6:86","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}},"id":24937,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"9871:6:86","memberName":"length","nodeType":"MemberAccess","src":"9864:13:86","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">=","rightExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":24940,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":24938,"name":"_start","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":24918,"src":"9881:6:86","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"+","rightExpression":{"id":24939,"name":"_length","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":24920,"src":"9890:7:86","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"9881:16:86","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"9864:33:86","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},{"hexValue":"736c6963655f6f75744f66426f756e6473","id":24942,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"9899:19:86","typeDescriptions":{"typeIdentifier":"t_stringliteral_cca2258dcc0d08c244435525255fbef9116c9a31b4c29471218f002bbbceb7a0","typeString":"literal_string \"slice_outOfBounds\""},"value":"slice_outOfBounds"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_stringliteral_cca2258dcc0d08c244435525255fbef9116c9a31b4c29471218f002bbbceb7a0","typeString":"literal_string \"slice_outOfBounds\""}],"id":24935,"name":"require","nodeType":"Identifier","overloadedDeclarations":[-18,-18,-18],"referencedDeclaration":-18,"src":"9856:7:86","typeDescriptions":{"typeIdentifier":"t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$","typeString":"function (bool,string memory) pure"}},"id":24943,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"9856:63:86","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":24944,"nodeType":"ExpressionStatement","src":"9856:63:86"},{"assignments":[24946],"declarations":[{"constant":false,"id":24946,"mutability":"mutable","name":"tempBytes","nameLocation":"9943:9:86","nodeType":"VariableDeclaration","scope":24951,"src":"9930:22:86","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes"},"typeName":{"id":24945,"name":"bytes","nodeType":"ElementaryTypeName","src":"9930:5:86","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"}],"id":24947,"nodeType":"VariableDeclarationStatement","src":"9930:22:86"},{"AST":{"nativeSrc":"9972:2421:86","nodeType":"YulBlock","src":"9972:2421:86","statements":[{"cases":[{"body":{"nativeSrc":"10028:1960:86","nodeType":"YulBlock","src":"10028:1960:86","statements":[{"nativeSrc":"10184:24:86","nodeType":"YulAssignment","src":"10184:24:86","value":{"arguments":[{"kind":"number","nativeSrc":"10203:4:86","nodeType":"YulLiteral","src":"10203:4:86","type":"","value":"0x40"}],"functionName":{"name":"mload","nativeSrc":"10197:5:86","nodeType":"YulIdentifier","src":"10197:5:86"},"nativeSrc":"10197:11:86","nodeType":"YulFunctionCall","src":"10197:11:86"},"variableNames":[{"name":"tempBytes","nativeSrc":"10184:9:86","nodeType":"YulIdentifier","src":"10184:9:86"}]},{"nativeSrc":"10832:33:86","nodeType":"YulVariableDeclaration","src":"10832:33:86","value":{"arguments":[{"name":"_length","nativeSrc":"10853:7:86","nodeType":"YulIdentifier","src":"10853:7:86"},{"kind":"number","nativeSrc":"10862:2:86","nodeType":"YulLiteral","src":"10862:2:86","type":"","value":"31"}],"functionName":{"name":"and","nativeSrc":"10849:3:86","nodeType":"YulIdentifier","src":"10849:3:86"},"nativeSrc":"10849:16:86","nodeType":"YulFunctionCall","src":"10849:16:86"},"variables":[{"name":"lengthmod","nativeSrc":"10836:9:86","nodeType":"YulTypedName","src":"10836:9:86","type":""}]},{"nativeSrc":"11186:70:86","nodeType":"YulVariableDeclaration","src":"11186:70:86","value":{"arguments":[{"arguments":[{"name":"tempBytes","nativeSrc":"11204:9:86","nodeType":"YulIdentifier","src":"11204:9:86"},{"name":"lengthmod","nativeSrc":"11215:9:86","nodeType":"YulIdentifier","src":"11215:9:86"}],"functionName":{"name":"add","nativeSrc":"11200:3:86","nodeType":"YulIdentifier","src":"11200:3:86"},"nativeSrc":"11200:25:86","nodeType":"YulFunctionCall","src":"11200:25:86"},{"arguments":[{"kind":"number","nativeSrc":"11231:4:86","nodeType":"YulLiteral","src":"11231:4:86","type":"","value":"0x20"},{"arguments":[{"name":"lengthmod","nativeSrc":"11244:9:86","nodeType":"YulIdentifier","src":"11244:9:86"}],"functionName":{"name":"iszero","nativeSrc":"11237:6:86","nodeType":"YulIdentifier","src":"11237:6:86"},"nativeSrc":"11237:17:86","nodeType":"YulFunctionCall","src":"11237:17:86"}],"functionName":{"name":"mul","nativeSrc":"11227:3:86","nodeType":"YulIdentifier","src":"11227:3:86"},"nativeSrc":"11227:28:86","nodeType":"YulFunctionCall","src":"11227:28:86"}],"functionName":{"name":"add","nativeSrc":"11196:3:86","nodeType":"YulIdentifier","src":"11196:3:86"},"nativeSrc":"11196:60:86","nodeType":"YulFunctionCall","src":"11196:60:86"},"variables":[{"name":"mc","nativeSrc":"11190:2:86","nodeType":"YulTypedName","src":"11190:2:86","type":""}]},{"nativeSrc":"11273:27:86","nodeType":"YulVariableDeclaration","src":"11273:27:86","value":{"arguments":[{"name":"mc","nativeSrc":"11288:2:86","nodeType":"YulIdentifier","src":"11288:2:86"},{"name":"_length","nativeSrc":"11292:7:86","nodeType":"YulIdentifier","src":"11292:7:86"}],"functionName":{"name":"add","nativeSrc":"11284:3:86","nodeType":"YulIdentifier","src":"11284:3:86"},"nativeSrc":"11284:16:86","nodeType":"YulFunctionCall","src":"11284:16:86"},"variables":[{"name":"end","nativeSrc":"11277:3:86","nodeType":"YulTypedName","src":"11277:3:86","type":""}]},{"body":{"nativeSrc":"11682:61:86","nodeType":"YulBlock","src":"11682:61:86","statements":[{"expression":{"arguments":[{"name":"mc","nativeSrc":"11711:2:86","nodeType":"YulIdentifier","src":"11711:2:86"},{"arguments":[{"name":"cc","nativeSrc":"11721:2:86","nodeType":"YulIdentifier","src":"11721:2:86"}],"functionName":{"name":"mload","nativeSrc":"11715:5:86","nodeType":"YulIdentifier","src":"11715:5:86"},"nativeSrc":"11715:9:86","nodeType":"YulFunctionCall","src":"11715:9:86"}],"functionName":{"name":"mstore","nativeSrc":"11704:6:86","nodeType":"YulIdentifier","src":"11704:6:86"},"nativeSrc":"11704:21:86","nodeType":"YulFunctionCall","src":"11704:21:86"},"nativeSrc":"11704:21:86","nodeType":"YulExpressionStatement","src":"11704:21:86"}]},"condition":{"arguments":[{"name":"mc","nativeSrc":"11573:2:86","nodeType":"YulIdentifier","src":"11573:2:86"},{"name":"end","nativeSrc":"11577:3:86","nodeType":"YulIdentifier","src":"11577:3:86"}],"functionName":{"name":"lt","nativeSrc":"11570:2:86","nodeType":"YulIdentifier","src":"11570:2:86"},"nativeSrc":"11570:11:86","nodeType":"YulFunctionCall","src":"11570:11:86"},"nativeSrc":"11318:425:86","nodeType":"YulForLoop","post":{"nativeSrc":"11582:99:86","nodeType":"YulBlock","src":"11582:99:86","statements":[{"nativeSrc":"11604:19:86","nodeType":"YulAssignment","src":"11604:19:86","value":{"arguments":[{"name":"mc","nativeSrc":"11614:2:86","nodeType":"YulIdentifier","src":"11614:2:86"},{"kind":"number","nativeSrc":"11618:4:86","nodeType":"YulLiteral","src":"11618:4:86","type":"","value":"0x20"}],"functionName":{"name":"add","nativeSrc":"11610:3:86","nodeType":"YulIdentifier","src":"11610:3:86"},"nativeSrc":"11610:13:86","nodeType":"YulFunctionCall","src":"11610:13:86"},"variableNames":[{"name":"mc","nativeSrc":"11604:2:86","nodeType":"YulIdentifier","src":"11604:2:86"}]},{"nativeSrc":"11644:19:86","nodeType":"YulAssignment","src":"11644:19:86","value":{"arguments":[{"name":"cc","nativeSrc":"11654:2:86","nodeType":"YulIdentifier","src":"11654:2:86"},{"kind":"number","nativeSrc":"11658:4:86","nodeType":"YulLiteral","src":"11658:4:86","type":"","value":"0x20"}],"functionName":{"name":"add","nativeSrc":"11650:3:86","nodeType":"YulIdentifier","src":"11650:3:86"},"nativeSrc":"11650:13:86","nodeType":"YulFunctionCall","src":"11650:13:86"},"variableNames":[{"name":"cc","nativeSrc":"11644:2:86","nodeType":"YulIdentifier","src":"11644:2:86"}]}]},"pre":{"nativeSrc":"11322:247:86","nodeType":"YulBlock","src":"11322:247:86","statements":[{"nativeSrc":"11471:80:86","nodeType":"YulVariableDeclaration","src":"11471:80:86","value":{"arguments":[{"arguments":[{"arguments":[{"name":"_bytes","nativeSrc":"11493:6:86","nodeType":"YulIdentifier","src":"11493:6:86"},{"name":"lengthmod","nativeSrc":"11501:9:86","nodeType":"YulIdentifier","src":"11501:9:86"}],"functionName":{"name":"add","nativeSrc":"11489:3:86","nodeType":"YulIdentifier","src":"11489:3:86"},"nativeSrc":"11489:22:86","nodeType":"YulFunctionCall","src":"11489:22:86"},{"arguments":[{"kind":"number","nativeSrc":"11517:4:86","nodeType":"YulLiteral","src":"11517:4:86","type":"","value":"0x20"},{"arguments":[{"name":"lengthmod","nativeSrc":"11530:9:86","nodeType":"YulIdentifier","src":"11530:9:86"}],"functionName":{"name":"iszero","nativeSrc":"11523:6:86","nodeType":"YulIdentifier","src":"11523:6:86"},"nativeSrc":"11523:17:86","nodeType":"YulFunctionCall","src":"11523:17:86"}],"functionName":{"name":"mul","nativeSrc":"11513:3:86","nodeType":"YulIdentifier","src":"11513:3:86"},"nativeSrc":"11513:28:86","nodeType":"YulFunctionCall","src":"11513:28:86"}],"functionName":{"name":"add","nativeSrc":"11485:3:86","nodeType":"YulIdentifier","src":"11485:3:86"},"nativeSrc":"11485:57:86","nodeType":"YulFunctionCall","src":"11485:57:86"},{"name":"_start","nativeSrc":"11544:6:86","nodeType":"YulIdentifier","src":"11544:6:86"}],"functionName":{"name":"add","nativeSrc":"11481:3:86","nodeType":"YulIdentifier","src":"11481:3:86"},"nativeSrc":"11481:70:86","nodeType":"YulFunctionCall","src":"11481:70:86"},"variables":[{"name":"cc","nativeSrc":"11475:2:86","nodeType":"YulTypedName","src":"11475:2:86","type":""}]}]},"src":"11318:425:86"},{"expression":{"arguments":[{"name":"tempBytes","nativeSrc":"11768:9:86","nodeType":"YulIdentifier","src":"11768:9:86"},{"name":"_length","nativeSrc":"11779:7:86","nodeType":"YulIdentifier","src":"11779:7:86"}],"functionName":{"name":"mstore","nativeSrc":"11761:6:86","nodeType":"YulIdentifier","src":"11761:6:86"},"nativeSrc":"11761:26:86","nodeType":"YulFunctionCall","src":"11761:26:86"},"nativeSrc":"11761:26:86","nodeType":"YulExpressionStatement","src":"11761:26:86"},{"expression":{"arguments":[{"kind":"number","nativeSrc":"11942:4:86","nodeType":"YulLiteral","src":"11942:4:86","type":"","value":"0x40"},{"arguments":[{"arguments":[{"name":"mc","nativeSrc":"11956:2:86","nodeType":"YulIdentifier","src":"11956:2:86"},{"kind":"number","nativeSrc":"11960:2:86","nodeType":"YulLiteral","src":"11960:2:86","type":"","value":"31"}],"functionName":{"name":"add","nativeSrc":"11952:3:86","nodeType":"YulIdentifier","src":"11952:3:86"},"nativeSrc":"11952:11:86","nodeType":"YulFunctionCall","src":"11952:11:86"},{"arguments":[{"kind":"number","nativeSrc":"11969:2:86","nodeType":"YulLiteral","src":"11969:2:86","type":"","value":"31"}],"functionName":{"name":"not","nativeSrc":"11965:3:86","nodeType":"YulIdentifier","src":"11965:3:86"},"nativeSrc":"11965:7:86","nodeType":"YulFunctionCall","src":"11965:7:86"}],"functionName":{"name":"and","nativeSrc":"11948:3:86","nodeType":"YulIdentifier","src":"11948:3:86"},"nativeSrc":"11948:25:86","nodeType":"YulFunctionCall","src":"11948:25:86"}],"functionName":{"name":"mstore","nativeSrc":"11935:6:86","nodeType":"YulIdentifier","src":"11935:6:86"},"nativeSrc":"11935:39:86","nodeType":"YulFunctionCall","src":"11935:39:86"},"nativeSrc":"11935:39:86","nodeType":"YulExpressionStatement","src":"11935:39:86"}]},"nativeSrc":"10021:1967:86","nodeType":"YulCase","src":"10021:1967:86","value":{"kind":"number","nativeSrc":"10026:1:86","nodeType":"YulLiteral","src":"10026:1:86","type":"","value":"0"}},{"body":{"nativeSrc":"12092:291:86","nodeType":"YulBlock","src":"12092:291:86","statements":[{"nativeSrc":"12110:24:86","nodeType":"YulAssignment","src":"12110:24:86","value":{"arguments":[{"kind":"number","nativeSrc":"12129:4:86","nodeType":"YulLiteral","src":"12129:4:86","type":"","value":"0x40"}],"functionName":{"name":"mload","nativeSrc":"12123:5:86","nodeType":"YulIdentifier","src":"12123:5:86"},"nativeSrc":"12123:11:86","nodeType":"YulFunctionCall","src":"12123:11:86"},"variableNames":[{"name":"tempBytes","nativeSrc":"12110:9:86","nodeType":"YulIdentifier","src":"12110:9:86"}]},{"expression":{"arguments":[{"name":"tempBytes","nativeSrc":"12304:9:86","nodeType":"YulIdentifier","src":"12304:9:86"},{"kind":"number","nativeSrc":"12315:1:86","nodeType":"YulLiteral","src":"12315:1:86","type":"","value":"0"}],"functionName":{"name":"mstore","nativeSrc":"12297:6:86","nodeType":"YulIdentifier","src":"12297:6:86"},"nativeSrc":"12297:20:86","nodeType":"YulFunctionCall","src":"12297:20:86"},"nativeSrc":"12297:20:86","nodeType":"YulExpressionStatement","src":"12297:20:86"},{"expression":{"arguments":[{"kind":"number","nativeSrc":"12342:4:86","nodeType":"YulLiteral","src":"12342:4:86","type":"","value":"0x40"},{"arguments":[{"name":"tempBytes","nativeSrc":"12352:9:86","nodeType":"YulIdentifier","src":"12352:9:86"},{"kind":"number","nativeSrc":"12363:4:86","nodeType":"YulLiteral","src":"12363:4:86","type":"","value":"0x20"}],"functionName":{"name":"add","nativeSrc":"12348:3:86","nodeType":"YulIdentifier","src":"12348:3:86"},"nativeSrc":"12348:20:86","nodeType":"YulFunctionCall","src":"12348:20:86"}],"functionName":{"name":"mstore","nativeSrc":"12335:6:86","nodeType":"YulIdentifier","src":"12335:6:86"},"nativeSrc":"12335:34:86","nodeType":"YulFunctionCall","src":"12335:34:86"},"nativeSrc":"12335:34:86","nodeType":"YulExpressionStatement","src":"12335:34:86"}]},"nativeSrc":"12084:299:86","nodeType":"YulCase","src":"12084:299:86","value":"default"}],"expression":{"arguments":[{"name":"_length","nativeSrc":"10000:7:86","nodeType":"YulIdentifier","src":"10000:7:86"}],"functionName":{"name":"iszero","nativeSrc":"9993:6:86","nodeType":"YulIdentifier","src":"9993:6:86"},"nativeSrc":"9993:15:86","nodeType":"YulFunctionCall","src":"9993:15:86"},"nativeSrc":"9986:2397:86","nodeType":"YulSwitch","src":"9986:2397:86"}]},"evmVersion":"prague","externalReferences":[{"declaration":24916,"isOffset":false,"isSlot":false,"src":"11493:6:86","valueSize":1},{"declaration":24920,"isOffset":false,"isSlot":false,"src":"10000:7:86","valueSize":1},{"declaration":24920,"isOffset":false,"isSlot":false,"src":"10853:7:86","valueSize":1},{"declaration":24920,"isOffset":false,"isSlot":false,"src":"11292:7:86","valueSize":1},{"declaration":24920,"isOffset":false,"isSlot":false,"src":"11779:7:86","valueSize":1},{"declaration":24918,"isOffset":false,"isSlot":false,"src":"11544:6:86","valueSize":1},{"declaration":24946,"isOffset":false,"isSlot":false,"src":"10184:9:86","valueSize":1},{"declaration":24946,"isOffset":false,"isSlot":false,"src":"11204:9:86","valueSize":1},{"declaration":24946,"isOffset":false,"isSlot":false,"src":"11768:9:86","valueSize":1},{"declaration":24946,"isOffset":false,"isSlot":false,"src":"12110:9:86","valueSize":1},{"declaration":24946,"isOffset":false,"isSlot":false,"src":"12304:9:86","valueSize":1},{"declaration":24946,"isOffset":false,"isSlot":false,"src":"12352:9:86","valueSize":1}],"id":24948,"nodeType":"InlineAssembly","src":"9963:2430:86"},{"expression":{"id":24949,"name":"tempBytes","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":24946,"src":"12410:9:86","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}},"functionReturnParameters":24924,"id":24950,"nodeType":"Return","src":"12403:16:86"}]},"id":24952,"implemented":true,"kind":"function","modifiers":[],"name":"slice","nameLocation":"9466:5:86","nodeType":"FunctionDefinition","parameters":{"id":24921,"nodeType":"ParameterList","parameters":[{"constant":false,"id":24916,"mutability":"mutable","name":"_bytes","nameLocation":"9494:6:86","nodeType":"VariableDeclaration","scope":24952,"src":"9481:19:86","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes"},"typeName":{"id":24915,"name":"bytes","nodeType":"ElementaryTypeName","src":"9481:5:86","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"},{"constant":false,"id":24918,"mutability":"mutable","name":"_start","nameLocation":"9518:6:86","nodeType":"VariableDeclaration","scope":24952,"src":"9510:14:86","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":24917,"name":"uint256","nodeType":"ElementaryTypeName","src":"9510:7:86","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":24920,"mutability":"mutable","name":"_length","nameLocation":"9542:7:86","nodeType":"VariableDeclaration","scope":24952,"src":"9534:15:86","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":24919,"name":"uint256","nodeType":"ElementaryTypeName","src":"9534:7:86","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"9471:84:86"},"returnParameters":{"id":24924,"nodeType":"ParameterList","parameters":[{"constant":false,"id":24923,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":24952,"src":"9603:12:86","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes"},"typeName":{"id":24922,"name":"bytes","nodeType":"ElementaryTypeName","src":"9603:5:86","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"}],"src":"9602:14:86"},"scope":25221,"src":"9457:2969:86","stateMutability":"pure","virtual":false,"visibility":"internal"},{"body":{"id":24977,"nodeType":"Block","src":"12520:266:86","statements":[{"expression":{"arguments":[{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":24967,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"expression":{"id":24962,"name":"_bytes","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":24954,"src":"12538:6:86","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}},"id":24963,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"12545:6:86","memberName":"length","nodeType":"MemberAccess","src":"12538:13:86","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">=","rightExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":24966,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":24964,"name":"_start","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":24956,"src":"12555:6:86","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"+","rightExpression":{"hexValue":"3230","id":24965,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"12564:2:86","typeDescriptions":{"typeIdentifier":"t_rational_20_by_1","typeString":"int_const 20"},"value":"20"},"src":"12555:11:86","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"12538:28:86","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},{"hexValue":"746f416464726573735f6f75744f66426f756e6473","id":24968,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"12568:23:86","typeDescriptions":{"typeIdentifier":"t_stringliteral_9f688071e1df0f70b63e3651005878331be1fe9591d6cfb3187cb52a13439e5d","typeString":"literal_string \"toAddress_outOfBounds\""},"value":"toAddress_outOfBounds"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_stringliteral_9f688071e1df0f70b63e3651005878331be1fe9591d6cfb3187cb52a13439e5d","typeString":"literal_string \"toAddress_outOfBounds\""}],"id":24961,"name":"require","nodeType":"Identifier","overloadedDeclarations":[-18,-18,-18],"referencedDeclaration":-18,"src":"12530:7:86","typeDescriptions":{"typeIdentifier":"t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$","typeString":"function (bool,string memory) pure"}},"id":24969,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"12530:62:86","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":24970,"nodeType":"ExpressionStatement","src":"12530:62:86"},{"assignments":[24972],"declarations":[{"constant":false,"id":24972,"mutability":"mutable","name":"tempAddress","nameLocation":"12610:11:86","nodeType":"VariableDeclaration","scope":24977,"src":"12602:19:86","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":24971,"name":"address","nodeType":"ElementaryTypeName","src":"12602:7:86","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"id":24973,"nodeType":"VariableDeclarationStatement","src":"12602:19:86"},{"AST":{"nativeSrc":"12641:110:86","nodeType":"YulBlock","src":"12641:110:86","statements":[{"nativeSrc":"12655:86:86","nodeType":"YulAssignment","src":"12655:86:86","value":{"arguments":[{"arguments":[{"arguments":[{"arguments":[{"name":"_bytes","nativeSrc":"12688:6:86","nodeType":"YulIdentifier","src":"12688:6:86"},{"kind":"number","nativeSrc":"12696:4:86","nodeType":"YulLiteral","src":"12696:4:86","type":"","value":"0x20"}],"functionName":{"name":"add","nativeSrc":"12684:3:86","nodeType":"YulIdentifier","src":"12684:3:86"},"nativeSrc":"12684:17:86","nodeType":"YulFunctionCall","src":"12684:17:86"},{"name":"_start","nativeSrc":"12703:6:86","nodeType":"YulIdentifier","src":"12703:6:86"}],"functionName":{"name":"add","nativeSrc":"12680:3:86","nodeType":"YulIdentifier","src":"12680:3:86"},"nativeSrc":"12680:30:86","nodeType":"YulFunctionCall","src":"12680:30:86"}],"functionName":{"name":"mload","nativeSrc":"12674:5:86","nodeType":"YulIdentifier","src":"12674:5:86"},"nativeSrc":"12674:37:86","nodeType":"YulFunctionCall","src":"12674:37:86"},{"kind":"number","nativeSrc":"12713:27:86","nodeType":"YulLiteral","src":"12713:27:86","type":"","value":"0x1000000000000000000000000"}],"functionName":{"name":"div","nativeSrc":"12670:3:86","nodeType":"YulIdentifier","src":"12670:3:86"},"nativeSrc":"12670:71:86","nodeType":"YulFunctionCall","src":"12670:71:86"},"variableNames":[{"name":"tempAddress","nativeSrc":"12655:11:86","nodeType":"YulIdentifier","src":"12655:11:86"}]}]},"evmVersion":"prague","externalReferences":[{"declaration":24954,"isOffset":false,"isSlot":false,"src":"12688:6:86","valueSize":1},{"declaration":24956,"isOffset":false,"isSlot":false,"src":"12703:6:86","valueSize":1},{"declaration":24972,"isOffset":false,"isSlot":false,"src":"12655:11:86","valueSize":1}],"id":24974,"nodeType":"InlineAssembly","src":"12632:119:86"},{"expression":{"id":24975,"name":"tempAddress","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":24972,"src":"12768:11:86","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"functionReturnParameters":24960,"id":24976,"nodeType":"Return","src":"12761:18:86"}]},"id":24978,"implemented":true,"kind":"function","modifiers":[],"name":"toAddress","nameLocation":"12441:9:86","nodeType":"FunctionDefinition","parameters":{"id":24957,"nodeType":"ParameterList","parameters":[{"constant":false,"id":24954,"mutability":"mutable","name":"_bytes","nameLocation":"12464:6:86","nodeType":"VariableDeclaration","scope":24978,"src":"12451:19:86","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes"},"typeName":{"id":24953,"name":"bytes","nodeType":"ElementaryTypeName","src":"12451:5:86","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"},{"constant":false,"id":24956,"mutability":"mutable","name":"_start","nameLocation":"12480:6:86","nodeType":"VariableDeclaration","scope":24978,"src":"12472:14:86","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":24955,"name":"uint256","nodeType":"ElementaryTypeName","src":"12472:7:86","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"12450:37:86"},"returnParameters":{"id":24960,"nodeType":"ParameterList","parameters":[{"constant":false,"id":24959,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":24978,"src":"12511:7:86","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":24958,"name":"address","nodeType":"ElementaryTypeName","src":"12511:7:86","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"12510:9:86"},"scope":25221,"src":"12432:354:86","stateMutability":"pure","virtual":false,"visibility":"internal"},{"body":{"id":25003,"nodeType":"Block","src":"12876:218:86","statements":[{"expression":{"arguments":[{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":24993,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"expression":{"id":24988,"name":"_bytes","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":24980,"src":"12894:6:86","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}},"id":24989,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"12901:6:86","memberName":"length","nodeType":"MemberAccess","src":"12894:13:86","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">=","rightExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":24992,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":24990,"name":"_start","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":24982,"src":"12911:6:86","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"+","rightExpression":{"hexValue":"31","id":24991,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"12920:1:86","typeDescriptions":{"typeIdentifier":"t_rational_1_by_1","typeString":"int_const 1"},"value":"1"},"src":"12911:10:86","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"12894:27:86","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},{"hexValue":"746f55696e74385f6f75744f66426f756e6473","id":24994,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"12924:21:86","typeDescriptions":{"typeIdentifier":"t_stringliteral_ce6d7be00009dd45cc670fb6c2ceee25786f142bcb64e7f1ee73012b26bb6ca1","typeString":"literal_string \"toUint8_outOfBounds\""},"value":"toUint8_outOfBounds"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_stringliteral_ce6d7be00009dd45cc670fb6c2ceee25786f142bcb64e7f1ee73012b26bb6ca1","typeString":"literal_string \"toUint8_outOfBounds\""}],"id":24987,"name":"require","nodeType":"Identifier","overloadedDeclarations":[-18,-18,-18],"referencedDeclaration":-18,"src":"12886:7:86","typeDescriptions":{"typeIdentifier":"t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$","typeString":"function (bool,string memory) pure"}},"id":24995,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"12886:60:86","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":24996,"nodeType":"ExpressionStatement","src":"12886:60:86"},{"assignments":[24998],"declarations":[{"constant":false,"id":24998,"mutability":"mutable","name":"tempUint","nameLocation":"12962:8:86","nodeType":"VariableDeclaration","scope":25003,"src":"12956:14:86","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"},"typeName":{"id":24997,"name":"uint8","nodeType":"ElementaryTypeName","src":"12956:5:86","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}},"visibility":"internal"}],"id":24999,"nodeType":"VariableDeclarationStatement","src":"12956:14:86"},{"AST":{"nativeSrc":"12990:72:86","nodeType":"YulBlock","src":"12990:72:86","statements":[{"nativeSrc":"13004:48:86","nodeType":"YulAssignment","src":"13004:48:86","value":{"arguments":[{"arguments":[{"arguments":[{"name":"_bytes","nativeSrc":"13030:6:86","nodeType":"YulIdentifier","src":"13030:6:86"},{"kind":"number","nativeSrc":"13038:3:86","nodeType":"YulLiteral","src":"13038:3:86","type":"","value":"0x1"}],"functionName":{"name":"add","nativeSrc":"13026:3:86","nodeType":"YulIdentifier","src":"13026:3:86"},"nativeSrc":"13026:16:86","nodeType":"YulFunctionCall","src":"13026:16:86"},{"name":"_start","nativeSrc":"13044:6:86","nodeType":"YulIdentifier","src":"13044:6:86"}],"functionName":{"name":"add","nativeSrc":"13022:3:86","nodeType":"YulIdentifier","src":"13022:3:86"},"nativeSrc":"13022:29:86","nodeType":"YulFunctionCall","src":"13022:29:86"}],"functionName":{"name":"mload","nativeSrc":"13016:5:86","nodeType":"YulIdentifier","src":"13016:5:86"},"nativeSrc":"13016:36:86","nodeType":"YulFunctionCall","src":"13016:36:86"},"variableNames":[{"name":"tempUint","nativeSrc":"13004:8:86","nodeType":"YulIdentifier","src":"13004:8:86"}]}]},"evmVersion":"prague","externalReferences":[{"declaration":24980,"isOffset":false,"isSlot":false,"src":"13030:6:86","valueSize":1},{"declaration":24982,"isOffset":false,"isSlot":false,"src":"13044:6:86","valueSize":1},{"declaration":24998,"isOffset":false,"isSlot":false,"src":"13004:8:86","valueSize":1}],"id":25000,"nodeType":"InlineAssembly","src":"12981:81:86"},{"expression":{"id":25001,"name":"tempUint","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":24998,"src":"13079:8:86","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}},"functionReturnParameters":24986,"id":25002,"nodeType":"Return","src":"13072:15:86"}]},"id":25004,"implemented":true,"kind":"function","modifiers":[],"name":"toUint8","nameLocation":"12801:7:86","nodeType":"FunctionDefinition","parameters":{"id":24983,"nodeType":"ParameterList","parameters":[{"constant":false,"id":24980,"mutability":"mutable","name":"_bytes","nameLocation":"12822:6:86","nodeType":"VariableDeclaration","scope":25004,"src":"12809:19:86","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes"},"typeName":{"id":24979,"name":"bytes","nodeType":"ElementaryTypeName","src":"12809:5:86","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"},{"constant":false,"id":24982,"mutability":"mutable","name":"_start","nameLocation":"12838:6:86","nodeType":"VariableDeclaration","scope":25004,"src":"12830:14:86","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":24981,"name":"uint256","nodeType":"ElementaryTypeName","src":"12830:7:86","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"12808:37:86"},"returnParameters":{"id":24986,"nodeType":"ParameterList","parameters":[{"constant":false,"id":24985,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":25004,"src":"12869:5:86","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"},"typeName":{"id":24984,"name":"uint8","nodeType":"ElementaryTypeName","src":"12869:5:86","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}},"visibility":"internal"}],"src":"12868:7:86"},"scope":25221,"src":"12792:302:86","stateMutability":"pure","virtual":false,"visibility":"internal"},{"body":{"id":25029,"nodeType":"Block","src":"13186:219:86","statements":[{"expression":{"arguments":[{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":25019,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"expression":{"id":25014,"name":"_bytes","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":25006,"src":"13204:6:86","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}},"id":25015,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"13211:6:86","memberName":"length","nodeType":"MemberAccess","src":"13204:13:86","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">=","rightExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":25018,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":25016,"name":"_start","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":25008,"src":"13221:6:86","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"+","rightExpression":{"hexValue":"32","id":25017,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"13230:1:86","typeDescriptions":{"typeIdentifier":"t_rational_2_by_1","typeString":"int_const 2"},"value":"2"},"src":"13221:10:86","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"13204:27:86","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},{"hexValue":"746f55696e7431365f6f75744f66426f756e6473","id":25020,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"13233:22:86","typeDescriptions":{"typeIdentifier":"t_stringliteral_414233483a71244a4f2700455a9733e71511b5279e381bdd2af6d44b1b09ecab","typeString":"literal_string \"toUint16_outOfBounds\""},"value":"toUint16_outOfBounds"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_stringliteral_414233483a71244a4f2700455a9733e71511b5279e381bdd2af6d44b1b09ecab","typeString":"literal_string \"toUint16_outOfBounds\""}],"id":25013,"name":"require","nodeType":"Identifier","overloadedDeclarations":[-18,-18,-18],"referencedDeclaration":-18,"src":"13196:7:86","typeDescriptions":{"typeIdentifier":"t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$","typeString":"function (bool,string memory) pure"}},"id":25021,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"13196:60:86","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":25022,"nodeType":"ExpressionStatement","src":"13196:60:86"},{"assignments":[25024],"declarations":[{"constant":false,"id":25024,"mutability":"mutable","name":"tempUint","nameLocation":"13273:8:86","nodeType":"VariableDeclaration","scope":25029,"src":"13266:15:86","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint16","typeString":"uint16"},"typeName":{"id":25023,"name":"uint16","nodeType":"ElementaryTypeName","src":"13266:6:86","typeDescriptions":{"typeIdentifier":"t_uint16","typeString":"uint16"}},"visibility":"internal"}],"id":25025,"nodeType":"VariableDeclarationStatement","src":"13266:15:86"},{"AST":{"nativeSrc":"13301:72:86","nodeType":"YulBlock","src":"13301:72:86","statements":[{"nativeSrc":"13315:48:86","nodeType":"YulAssignment","src":"13315:48:86","value":{"arguments":[{"arguments":[{"arguments":[{"name":"_bytes","nativeSrc":"13341:6:86","nodeType":"YulIdentifier","src":"13341:6:86"},{"kind":"number","nativeSrc":"13349:3:86","nodeType":"YulLiteral","src":"13349:3:86","type":"","value":"0x2"}],"functionName":{"name":"add","nativeSrc":"13337:3:86","nodeType":"YulIdentifier","src":"13337:3:86"},"nativeSrc":"13337:16:86","nodeType":"YulFunctionCall","src":"13337:16:86"},{"name":"_start","nativeSrc":"13355:6:86","nodeType":"YulIdentifier","src":"13355:6:86"}],"functionName":{"name":"add","nativeSrc":"13333:3:86","nodeType":"YulIdentifier","src":"13333:3:86"},"nativeSrc":"13333:29:86","nodeType":"YulFunctionCall","src":"13333:29:86"}],"functionName":{"name":"mload","nativeSrc":"13327:5:86","nodeType":"YulIdentifier","src":"13327:5:86"},"nativeSrc":"13327:36:86","nodeType":"YulFunctionCall","src":"13327:36:86"},"variableNames":[{"name":"tempUint","nativeSrc":"13315:8:86","nodeType":"YulIdentifier","src":"13315:8:86"}]}]},"evmVersion":"prague","externalReferences":[{"declaration":25006,"isOffset":false,"isSlot":false,"src":"13341:6:86","valueSize":1},{"declaration":25008,"isOffset":false,"isSlot":false,"src":"13355:6:86","valueSize":1},{"declaration":25024,"isOffset":false,"isSlot":false,"src":"13315:8:86","valueSize":1}],"id":25026,"nodeType":"InlineAssembly","src":"13292:81:86"},{"expression":{"id":25027,"name":"tempUint","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":25024,"src":"13390:8:86","typeDescriptions":{"typeIdentifier":"t_uint16","typeString":"uint16"}},"functionReturnParameters":25012,"id":25028,"nodeType":"Return","src":"13383:15:86"}]},"id":25030,"implemented":true,"kind":"function","modifiers":[],"name":"toUint16","nameLocation":"13109:8:86","nodeType":"FunctionDefinition","parameters":{"id":25009,"nodeType":"ParameterList","parameters":[{"constant":false,"id":25006,"mutability":"mutable","name":"_bytes","nameLocation":"13131:6:86","nodeType":"VariableDeclaration","scope":25030,"src":"13118:19:86","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes"},"typeName":{"id":25005,"name":"bytes","nodeType":"ElementaryTypeName","src":"13118:5:86","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"},{"constant":false,"id":25008,"mutability":"mutable","name":"_start","nameLocation":"13147:6:86","nodeType":"VariableDeclaration","scope":25030,"src":"13139:14:86","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":25007,"name":"uint256","nodeType":"ElementaryTypeName","src":"13139:7:86","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"13117:37:86"},"returnParameters":{"id":25012,"nodeType":"ParameterList","parameters":[{"constant":false,"id":25011,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":25030,"src":"13178:6:86","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint16","typeString":"uint16"},"typeName":{"id":25010,"name":"uint16","nodeType":"ElementaryTypeName","src":"13178:6:86","typeDescriptions":{"typeIdentifier":"t_uint16","typeString":"uint16"}},"visibility":"internal"}],"src":"13177:8:86"},"scope":25221,"src":"13100:305:86","stateMutability":"pure","virtual":false,"visibility":"internal"},{"body":{"id":25055,"nodeType":"Block","src":"13497:219:86","statements":[{"expression":{"arguments":[{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":25045,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"expression":{"id":25040,"name":"_bytes","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":25032,"src":"13515:6:86","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}},"id":25041,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"13522:6:86","memberName":"length","nodeType":"MemberAccess","src":"13515:13:86","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">=","rightExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":25044,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":25042,"name":"_start","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":25034,"src":"13532:6:86","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"+","rightExpression":{"hexValue":"34","id":25043,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"13541:1:86","typeDescriptions":{"typeIdentifier":"t_rational_4_by_1","typeString":"int_const 4"},"value":"4"},"src":"13532:10:86","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"13515:27:86","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},{"hexValue":"746f55696e7433325f6f75744f66426f756e6473","id":25046,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"13544:22:86","typeDescriptions":{"typeIdentifier":"t_stringliteral_e0a09853867d05bef4b1d534052126bc72acd3515e1725b9b280e16d988e6ccf","typeString":"literal_string \"toUint32_outOfBounds\""},"value":"toUint32_outOfBounds"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_stringliteral_e0a09853867d05bef4b1d534052126bc72acd3515e1725b9b280e16d988e6ccf","typeString":"literal_string \"toUint32_outOfBounds\""}],"id":25039,"name":"require","nodeType":"Identifier","overloadedDeclarations":[-18,-18,-18],"referencedDeclaration":-18,"src":"13507:7:86","typeDescriptions":{"typeIdentifier":"t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$","typeString":"function (bool,string memory) pure"}},"id":25047,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"13507:60:86","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":25048,"nodeType":"ExpressionStatement","src":"13507:60:86"},{"assignments":[25050],"declarations":[{"constant":false,"id":25050,"mutability":"mutable","name":"tempUint","nameLocation":"13584:8:86","nodeType":"VariableDeclaration","scope":25055,"src":"13577:15:86","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint32","typeString":"uint32"},"typeName":{"id":25049,"name":"uint32","nodeType":"ElementaryTypeName","src":"13577:6:86","typeDescriptions":{"typeIdentifier":"t_uint32","typeString":"uint32"}},"visibility":"internal"}],"id":25051,"nodeType":"VariableDeclarationStatement","src":"13577:15:86"},{"AST":{"nativeSrc":"13612:72:86","nodeType":"YulBlock","src":"13612:72:86","statements":[{"nativeSrc":"13626:48:86","nodeType":"YulAssignment","src":"13626:48:86","value":{"arguments":[{"arguments":[{"arguments":[{"name":"_bytes","nativeSrc":"13652:6:86","nodeType":"YulIdentifier","src":"13652:6:86"},{"kind":"number","nativeSrc":"13660:3:86","nodeType":"YulLiteral","src":"13660:3:86","type":"","value":"0x4"}],"functionName":{"name":"add","nativeSrc":"13648:3:86","nodeType":"YulIdentifier","src":"13648:3:86"},"nativeSrc":"13648:16:86","nodeType":"YulFunctionCall","src":"13648:16:86"},{"name":"_start","nativeSrc":"13666:6:86","nodeType":"YulIdentifier","src":"13666:6:86"}],"functionName":{"name":"add","nativeSrc":"13644:3:86","nodeType":"YulIdentifier","src":"13644:3:86"},"nativeSrc":"13644:29:86","nodeType":"YulFunctionCall","src":"13644:29:86"}],"functionName":{"name":"mload","nativeSrc":"13638:5:86","nodeType":"YulIdentifier","src":"13638:5:86"},"nativeSrc":"13638:36:86","nodeType":"YulFunctionCall","src":"13638:36:86"},"variableNames":[{"name":"tempUint","nativeSrc":"13626:8:86","nodeType":"YulIdentifier","src":"13626:8:86"}]}]},"evmVersion":"prague","externalReferences":[{"declaration":25032,"isOffset":false,"isSlot":false,"src":"13652:6:86","valueSize":1},{"declaration":25034,"isOffset":false,"isSlot":false,"src":"13666:6:86","valueSize":1},{"declaration":25050,"isOffset":false,"isSlot":false,"src":"13626:8:86","valueSize":1}],"id":25052,"nodeType":"InlineAssembly","src":"13603:81:86"},{"expression":{"id":25053,"name":"tempUint","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":25050,"src":"13701:8:86","typeDescriptions":{"typeIdentifier":"t_uint32","typeString":"uint32"}},"functionReturnParameters":25038,"id":25054,"nodeType":"Return","src":"13694:15:86"}]},"id":25056,"implemented":true,"kind":"function","modifiers":[],"name":"toUint32","nameLocation":"13420:8:86","nodeType":"FunctionDefinition","parameters":{"id":25035,"nodeType":"ParameterList","parameters":[{"constant":false,"id":25032,"mutability":"mutable","name":"_bytes","nameLocation":"13442:6:86","nodeType":"VariableDeclaration","scope":25056,"src":"13429:19:86","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes"},"typeName":{"id":25031,"name":"bytes","nodeType":"ElementaryTypeName","src":"13429:5:86","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"},{"constant":false,"id":25034,"mutability":"mutable","name":"_start","nameLocation":"13458:6:86","nodeType":"VariableDeclaration","scope":25056,"src":"13450:14:86","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":25033,"name":"uint256","nodeType":"ElementaryTypeName","src":"13450:7:86","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"13428:37:86"},"returnParameters":{"id":25038,"nodeType":"ParameterList","parameters":[{"constant":false,"id":25037,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":25056,"src":"13489:6:86","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint32","typeString":"uint32"},"typeName":{"id":25036,"name":"uint32","nodeType":"ElementaryTypeName","src":"13489:6:86","typeDescriptions":{"typeIdentifier":"t_uint32","typeString":"uint32"}},"visibility":"internal"}],"src":"13488:8:86"},"scope":25221,"src":"13411:305:86","stateMutability":"pure","virtual":false,"visibility":"internal"},{"body":{"id":25081,"nodeType":"Block","src":"13808:219:86","statements":[{"expression":{"arguments":[{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":25071,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"expression":{"id":25066,"name":"_bytes","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":25058,"src":"13826:6:86","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}},"id":25067,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"13833:6:86","memberName":"length","nodeType":"MemberAccess","src":"13826:13:86","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">=","rightExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":25070,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":25068,"name":"_start","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":25060,"src":"13843:6:86","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"+","rightExpression":{"hexValue":"38","id":25069,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"13852:1:86","typeDescriptions":{"typeIdentifier":"t_rational_8_by_1","typeString":"int_const 8"},"value":"8"},"src":"13843:10:86","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"13826:27:86","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},{"hexValue":"746f55696e7436345f6f75744f66426f756e6473","id":25072,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"13855:22:86","typeDescriptions":{"typeIdentifier":"t_stringliteral_55885cc1e15ebd0ff3d9803b39476f6ee2279f42aa3070b40f2de433347c0145","typeString":"literal_string \"toUint64_outOfBounds\""},"value":"toUint64_outOfBounds"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_stringliteral_55885cc1e15ebd0ff3d9803b39476f6ee2279f42aa3070b40f2de433347c0145","typeString":"literal_string \"toUint64_outOfBounds\""}],"id":25065,"name":"require","nodeType":"Identifier","overloadedDeclarations":[-18,-18,-18],"referencedDeclaration":-18,"src":"13818:7:86","typeDescriptions":{"typeIdentifier":"t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$","typeString":"function (bool,string memory) pure"}},"id":25073,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"13818:60:86","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":25074,"nodeType":"ExpressionStatement","src":"13818:60:86"},{"assignments":[25076],"declarations":[{"constant":false,"id":25076,"mutability":"mutable","name":"tempUint","nameLocation":"13895:8:86","nodeType":"VariableDeclaration","scope":25081,"src":"13888:15:86","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint64","typeString":"uint64"},"typeName":{"id":25075,"name":"uint64","nodeType":"ElementaryTypeName","src":"13888:6:86","typeDescriptions":{"typeIdentifier":"t_uint64","typeString":"uint64"}},"visibility":"internal"}],"id":25077,"nodeType":"VariableDeclarationStatement","src":"13888:15:86"},{"AST":{"nativeSrc":"13923:72:86","nodeType":"YulBlock","src":"13923:72:86","statements":[{"nativeSrc":"13937:48:86","nodeType":"YulAssignment","src":"13937:48:86","value":{"arguments":[{"arguments":[{"arguments":[{"name":"_bytes","nativeSrc":"13963:6:86","nodeType":"YulIdentifier","src":"13963:6:86"},{"kind":"number","nativeSrc":"13971:3:86","nodeType":"YulLiteral","src":"13971:3:86","type":"","value":"0x8"}],"functionName":{"name":"add","nativeSrc":"13959:3:86","nodeType":"YulIdentifier","src":"13959:3:86"},"nativeSrc":"13959:16:86","nodeType":"YulFunctionCall","src":"13959:16:86"},{"name":"_start","nativeSrc":"13977:6:86","nodeType":"YulIdentifier","src":"13977:6:86"}],"functionName":{"name":"add","nativeSrc":"13955:3:86","nodeType":"YulIdentifier","src":"13955:3:86"},"nativeSrc":"13955:29:86","nodeType":"YulFunctionCall","src":"13955:29:86"}],"functionName":{"name":"mload","nativeSrc":"13949:5:86","nodeType":"YulIdentifier","src":"13949:5:86"},"nativeSrc":"13949:36:86","nodeType":"YulFunctionCall","src":"13949:36:86"},"variableNames":[{"name":"tempUint","nativeSrc":"13937:8:86","nodeType":"YulIdentifier","src":"13937:8:86"}]}]},"evmVersion":"prague","externalReferences":[{"declaration":25058,"isOffset":false,"isSlot":false,"src":"13963:6:86","valueSize":1},{"declaration":25060,"isOffset":false,"isSlot":false,"src":"13977:6:86","valueSize":1},{"declaration":25076,"isOffset":false,"isSlot":false,"src":"13937:8:86","valueSize":1}],"id":25078,"nodeType":"InlineAssembly","src":"13914:81:86"},{"expression":{"id":25079,"name":"tempUint","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":25076,"src":"14012:8:86","typeDescriptions":{"typeIdentifier":"t_uint64","typeString":"uint64"}},"functionReturnParameters":25064,"id":25080,"nodeType":"Return","src":"14005:15:86"}]},"id":25082,"implemented":true,"kind":"function","modifiers":[],"name":"toUint64","nameLocation":"13731:8:86","nodeType":"FunctionDefinition","parameters":{"id":25061,"nodeType":"ParameterList","parameters":[{"constant":false,"id":25058,"mutability":"mutable","name":"_bytes","nameLocation":"13753:6:86","nodeType":"VariableDeclaration","scope":25082,"src":"13740:19:86","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes"},"typeName":{"id":25057,"name":"bytes","nodeType":"ElementaryTypeName","src":"13740:5:86","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"},{"constant":false,"id":25060,"mutability":"mutable","name":"_start","nameLocation":"13769:6:86","nodeType":"VariableDeclaration","scope":25082,"src":"13761:14:86","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":25059,"name":"uint256","nodeType":"ElementaryTypeName","src":"13761:7:86","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"13739:37:86"},"returnParameters":{"id":25064,"nodeType":"ParameterList","parameters":[{"constant":false,"id":25063,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":25082,"src":"13800:6:86","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint64","typeString":"uint64"},"typeName":{"id":25062,"name":"uint64","nodeType":"ElementaryTypeName","src":"13800:6:86","typeDescriptions":{"typeIdentifier":"t_uint64","typeString":"uint64"}},"visibility":"internal"}],"src":"13799:8:86"},"scope":25221,"src":"13722:305:86","stateMutability":"pure","virtual":false,"visibility":"internal"},{"body":{"id":25107,"nodeType":"Block","src":"14119:220:86","statements":[{"expression":{"arguments":[{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":25097,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"expression":{"id":25092,"name":"_bytes","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":25084,"src":"14137:6:86","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}},"id":25093,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"14144:6:86","memberName":"length","nodeType":"MemberAccess","src":"14137:13:86","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">=","rightExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":25096,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":25094,"name":"_start","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":25086,"src":"14154:6:86","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"+","rightExpression":{"hexValue":"3132","id":25095,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"14163:2:86","typeDescriptions":{"typeIdentifier":"t_rational_12_by_1","typeString":"int_const 12"},"value":"12"},"src":"14154:11:86","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"14137:28:86","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},{"hexValue":"746f55696e7439365f6f75744f66426f756e6473","id":25098,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"14167:22:86","typeDescriptions":{"typeIdentifier":"t_stringliteral_245175b34ac1d95c460f2a4fcb106dbfea12949a3cbb7ae3362c49144bb9feb7","typeString":"literal_string \"toUint96_outOfBounds\""},"value":"toUint96_outOfBounds"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_stringliteral_245175b34ac1d95c460f2a4fcb106dbfea12949a3cbb7ae3362c49144bb9feb7","typeString":"literal_string \"toUint96_outOfBounds\""}],"id":25091,"name":"require","nodeType":"Identifier","overloadedDeclarations":[-18,-18,-18],"referencedDeclaration":-18,"src":"14129:7:86","typeDescriptions":{"typeIdentifier":"t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$","typeString":"function (bool,string memory) pure"}},"id":25099,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"14129:61:86","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":25100,"nodeType":"ExpressionStatement","src":"14129:61:86"},{"assignments":[25102],"declarations":[{"constant":false,"id":25102,"mutability":"mutable","name":"tempUint","nameLocation":"14207:8:86","nodeType":"VariableDeclaration","scope":25107,"src":"14200:15:86","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint96","typeString":"uint96"},"typeName":{"id":25101,"name":"uint96","nodeType":"ElementaryTypeName","src":"14200:6:86","typeDescriptions":{"typeIdentifier":"t_uint96","typeString":"uint96"}},"visibility":"internal"}],"id":25103,"nodeType":"VariableDeclarationStatement","src":"14200:15:86"},{"AST":{"nativeSrc":"14235:72:86","nodeType":"YulBlock","src":"14235:72:86","statements":[{"nativeSrc":"14249:48:86","nodeType":"YulAssignment","src":"14249:48:86","value":{"arguments":[{"arguments":[{"arguments":[{"name":"_bytes","nativeSrc":"14275:6:86","nodeType":"YulIdentifier","src":"14275:6:86"},{"kind":"number","nativeSrc":"14283:3:86","nodeType":"YulLiteral","src":"14283:3:86","type":"","value":"0xc"}],"functionName":{"name":"add","nativeSrc":"14271:3:86","nodeType":"YulIdentifier","src":"14271:3:86"},"nativeSrc":"14271:16:86","nodeType":"YulFunctionCall","src":"14271:16:86"},{"name":"_start","nativeSrc":"14289:6:86","nodeType":"YulIdentifier","src":"14289:6:86"}],"functionName":{"name":"add","nativeSrc":"14267:3:86","nodeType":"YulIdentifier","src":"14267:3:86"},"nativeSrc":"14267:29:86","nodeType":"YulFunctionCall","src":"14267:29:86"}],"functionName":{"name":"mload","nativeSrc":"14261:5:86","nodeType":"YulIdentifier","src":"14261:5:86"},"nativeSrc":"14261:36:86","nodeType":"YulFunctionCall","src":"14261:36:86"},"variableNames":[{"name":"tempUint","nativeSrc":"14249:8:86","nodeType":"YulIdentifier","src":"14249:8:86"}]}]},"evmVersion":"prague","externalReferences":[{"declaration":25084,"isOffset":false,"isSlot":false,"src":"14275:6:86","valueSize":1},{"declaration":25086,"isOffset":false,"isSlot":false,"src":"14289:6:86","valueSize":1},{"declaration":25102,"isOffset":false,"isSlot":false,"src":"14249:8:86","valueSize":1}],"id":25104,"nodeType":"InlineAssembly","src":"14226:81:86"},{"expression":{"id":25105,"name":"tempUint","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":25102,"src":"14324:8:86","typeDescriptions":{"typeIdentifier":"t_uint96","typeString":"uint96"}},"functionReturnParameters":25090,"id":25106,"nodeType":"Return","src":"14317:15:86"}]},"id":25108,"implemented":true,"kind":"function","modifiers":[],"name":"toUint96","nameLocation":"14042:8:86","nodeType":"FunctionDefinition","parameters":{"id":25087,"nodeType":"ParameterList","parameters":[{"constant":false,"id":25084,"mutability":"mutable","name":"_bytes","nameLocation":"14064:6:86","nodeType":"VariableDeclaration","scope":25108,"src":"14051:19:86","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes"},"typeName":{"id":25083,"name":"bytes","nodeType":"ElementaryTypeName","src":"14051:5:86","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"},{"constant":false,"id":25086,"mutability":"mutable","name":"_start","nameLocation":"14080:6:86","nodeType":"VariableDeclaration","scope":25108,"src":"14072:14:86","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":25085,"name":"uint256","nodeType":"ElementaryTypeName","src":"14072:7:86","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"14050:37:86"},"returnParameters":{"id":25090,"nodeType":"ParameterList","parameters":[{"constant":false,"id":25089,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":25108,"src":"14111:6:86","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint96","typeString":"uint96"},"typeName":{"id":25088,"name":"uint96","nodeType":"ElementaryTypeName","src":"14111:6:86","typeDescriptions":{"typeIdentifier":"t_uint96","typeString":"uint96"}},"visibility":"internal"}],"src":"14110:8:86"},"scope":25221,"src":"14033:306:86","stateMutability":"pure","virtual":false,"visibility":"internal"},{"body":{"id":25133,"nodeType":"Block","src":"14433:223:86","statements":[{"expression":{"arguments":[{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":25123,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"expression":{"id":25118,"name":"_bytes","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":25110,"src":"14451:6:86","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}},"id":25119,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"14458:6:86","memberName":"length","nodeType":"MemberAccess","src":"14451:13:86","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">=","rightExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":25122,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":25120,"name":"_start","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":25112,"src":"14468:6:86","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"+","rightExpression":{"hexValue":"3136","id":25121,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"14477:2:86","typeDescriptions":{"typeIdentifier":"t_rational_16_by_1","typeString":"int_const 16"},"value":"16"},"src":"14468:11:86","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"14451:28:86","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},{"hexValue":"746f55696e743132385f6f75744f66426f756e6473","id":25124,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"14481:23:86","typeDescriptions":{"typeIdentifier":"t_stringliteral_17474b965d7fdba029328487966488b63c32338e60aea74eafb22325bb8d90dc","typeString":"literal_string \"toUint128_outOfBounds\""},"value":"toUint128_outOfBounds"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_stringliteral_17474b965d7fdba029328487966488b63c32338e60aea74eafb22325bb8d90dc","typeString":"literal_string \"toUint128_outOfBounds\""}],"id":25117,"name":"require","nodeType":"Identifier","overloadedDeclarations":[-18,-18,-18],"referencedDeclaration":-18,"src":"14443:7:86","typeDescriptions":{"typeIdentifier":"t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$","typeString":"function (bool,string memory) pure"}},"id":25125,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"14443:62:86","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":25126,"nodeType":"ExpressionStatement","src":"14443:62:86"},{"assignments":[25128],"declarations":[{"constant":false,"id":25128,"mutability":"mutable","name":"tempUint","nameLocation":"14523:8:86","nodeType":"VariableDeclaration","scope":25133,"src":"14515:16:86","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint128","typeString":"uint128"},"typeName":{"id":25127,"name":"uint128","nodeType":"ElementaryTypeName","src":"14515:7:86","typeDescriptions":{"typeIdentifier":"t_uint128","typeString":"uint128"}},"visibility":"internal"}],"id":25129,"nodeType":"VariableDeclarationStatement","src":"14515:16:86"},{"AST":{"nativeSrc":"14551:73:86","nodeType":"YulBlock","src":"14551:73:86","statements":[{"nativeSrc":"14565:49:86","nodeType":"YulAssignment","src":"14565:49:86","value":{"arguments":[{"arguments":[{"arguments":[{"name":"_bytes","nativeSrc":"14591:6:86","nodeType":"YulIdentifier","src":"14591:6:86"},{"kind":"number","nativeSrc":"14599:4:86","nodeType":"YulLiteral","src":"14599:4:86","type":"","value":"0x10"}],"functionName":{"name":"add","nativeSrc":"14587:3:86","nodeType":"YulIdentifier","src":"14587:3:86"},"nativeSrc":"14587:17:86","nodeType":"YulFunctionCall","src":"14587:17:86"},{"name":"_start","nativeSrc":"14606:6:86","nodeType":"YulIdentifier","src":"14606:6:86"}],"functionName":{"name":"add","nativeSrc":"14583:3:86","nodeType":"YulIdentifier","src":"14583:3:86"},"nativeSrc":"14583:30:86","nodeType":"YulFunctionCall","src":"14583:30:86"}],"functionName":{"name":"mload","nativeSrc":"14577:5:86","nodeType":"YulIdentifier","src":"14577:5:86"},"nativeSrc":"14577:37:86","nodeType":"YulFunctionCall","src":"14577:37:86"},"variableNames":[{"name":"tempUint","nativeSrc":"14565:8:86","nodeType":"YulIdentifier","src":"14565:8:86"}]}]},"evmVersion":"prague","externalReferences":[{"declaration":25110,"isOffset":false,"isSlot":false,"src":"14591:6:86","valueSize":1},{"declaration":25112,"isOffset":false,"isSlot":false,"src":"14606:6:86","valueSize":1},{"declaration":25128,"isOffset":false,"isSlot":false,"src":"14565:8:86","valueSize":1}],"id":25130,"nodeType":"InlineAssembly","src":"14542:82:86"},{"expression":{"id":25131,"name":"tempUint","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":25128,"src":"14641:8:86","typeDescriptions":{"typeIdentifier":"t_uint128","typeString":"uint128"}},"functionReturnParameters":25116,"id":25132,"nodeType":"Return","src":"14634:15:86"}]},"id":25134,"implemented":true,"kind":"function","modifiers":[],"name":"toUint128","nameLocation":"14354:9:86","nodeType":"FunctionDefinition","parameters":{"id":25113,"nodeType":"ParameterList","parameters":[{"constant":false,"id":25110,"mutability":"mutable","name":"_bytes","nameLocation":"14377:6:86","nodeType":"VariableDeclaration","scope":25134,"src":"14364:19:86","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes"},"typeName":{"id":25109,"name":"bytes","nodeType":"ElementaryTypeName","src":"14364:5:86","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"},{"constant":false,"id":25112,"mutability":"mutable","name":"_start","nameLocation":"14393:6:86","nodeType":"VariableDeclaration","scope":25134,"src":"14385:14:86","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":25111,"name":"uint256","nodeType":"ElementaryTypeName","src":"14385:7:86","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"14363:37:86"},"returnParameters":{"id":25116,"nodeType":"ParameterList","parameters":[{"constant":false,"id":25115,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":25134,"src":"14424:7:86","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint128","typeString":"uint128"},"typeName":{"id":25114,"name":"uint128","nodeType":"ElementaryTypeName","src":"14424:7:86","typeDescriptions":{"typeIdentifier":"t_uint128","typeString":"uint128"}},"visibility":"internal"}],"src":"14423:9:86"},"scope":25221,"src":"14345:311:86","stateMutability":"pure","virtual":false,"visibility":"internal"},{"body":{"id":25159,"nodeType":"Block","src":"14750:223:86","statements":[{"expression":{"arguments":[{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":25149,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"expression":{"id":25144,"name":"_bytes","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":25136,"src":"14768:6:86","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}},"id":25145,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"14775:6:86","memberName":"length","nodeType":"MemberAccess","src":"14768:13:86","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">=","rightExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":25148,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":25146,"name":"_start","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":25138,"src":"14785:6:86","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"+","rightExpression":{"hexValue":"3332","id":25147,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"14794:2:86","typeDescriptions":{"typeIdentifier":"t_rational_32_by_1","typeString":"int_const 32"},"value":"32"},"src":"14785:11:86","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"14768:28:86","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},{"hexValue":"746f55696e743235365f6f75744f66426f756e6473","id":25150,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"14798:23:86","typeDescriptions":{"typeIdentifier":"t_stringliteral_87a32b96294a395a4fb365d8b27a23d532fa10419cffd7dc13367cdc71bf4d7b","typeString":"literal_string \"toUint256_outOfBounds\""},"value":"toUint256_outOfBounds"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_stringliteral_87a32b96294a395a4fb365d8b27a23d532fa10419cffd7dc13367cdc71bf4d7b","typeString":"literal_string \"toUint256_outOfBounds\""}],"id":25143,"name":"require","nodeType":"Identifier","overloadedDeclarations":[-18,-18,-18],"referencedDeclaration":-18,"src":"14760:7:86","typeDescriptions":{"typeIdentifier":"t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$","typeString":"function (bool,string memory) pure"}},"id":25151,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"14760:62:86","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":25152,"nodeType":"ExpressionStatement","src":"14760:62:86"},{"assignments":[25154],"declarations":[{"constant":false,"id":25154,"mutability":"mutable","name":"tempUint","nameLocation":"14840:8:86","nodeType":"VariableDeclaration","scope":25159,"src":"14832:16:86","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":25153,"name":"uint256","nodeType":"ElementaryTypeName","src":"14832:7:86","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":25155,"nodeType":"VariableDeclarationStatement","src":"14832:16:86"},{"AST":{"nativeSrc":"14868:73:86","nodeType":"YulBlock","src":"14868:73:86","statements":[{"nativeSrc":"14882:49:86","nodeType":"YulAssignment","src":"14882:49:86","value":{"arguments":[{"arguments":[{"arguments":[{"name":"_bytes","nativeSrc":"14908:6:86","nodeType":"YulIdentifier","src":"14908:6:86"},{"kind":"number","nativeSrc":"14916:4:86","nodeType":"YulLiteral","src":"14916:4:86","type":"","value":"0x20"}],"functionName":{"name":"add","nativeSrc":"14904:3:86","nodeType":"YulIdentifier","src":"14904:3:86"},"nativeSrc":"14904:17:86","nodeType":"YulFunctionCall","src":"14904:17:86"},{"name":"_start","nativeSrc":"14923:6:86","nodeType":"YulIdentifier","src":"14923:6:86"}],"functionName":{"name":"add","nativeSrc":"14900:3:86","nodeType":"YulIdentifier","src":"14900:3:86"},"nativeSrc":"14900:30:86","nodeType":"YulFunctionCall","src":"14900:30:86"}],"functionName":{"name":"mload","nativeSrc":"14894:5:86","nodeType":"YulIdentifier","src":"14894:5:86"},"nativeSrc":"14894:37:86","nodeType":"YulFunctionCall","src":"14894:37:86"},"variableNames":[{"name":"tempUint","nativeSrc":"14882:8:86","nodeType":"YulIdentifier","src":"14882:8:86"}]}]},"evmVersion":"prague","externalReferences":[{"declaration":25136,"isOffset":false,"isSlot":false,"src":"14908:6:86","valueSize":1},{"declaration":25138,"isOffset":false,"isSlot":false,"src":"14923:6:86","valueSize":1},{"declaration":25154,"isOffset":false,"isSlot":false,"src":"14882:8:86","valueSize":1}],"id":25156,"nodeType":"InlineAssembly","src":"14859:82:86"},{"expression":{"id":25157,"name":"tempUint","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":25154,"src":"14958:8:86","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"functionReturnParameters":25142,"id":25158,"nodeType":"Return","src":"14951:15:86"}]},"id":25160,"implemented":true,"kind":"function","modifiers":[],"name":"toUint256","nameLocation":"14671:9:86","nodeType":"FunctionDefinition","parameters":{"id":25139,"nodeType":"ParameterList","parameters":[{"constant":false,"id":25136,"mutability":"mutable","name":"_bytes","nameLocation":"14694:6:86","nodeType":"VariableDeclaration","scope":25160,"src":"14681:19:86","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes"},"typeName":{"id":25135,"name":"bytes","nodeType":"ElementaryTypeName","src":"14681:5:86","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"},{"constant":false,"id":25138,"mutability":"mutable","name":"_start","nameLocation":"14710:6:86","nodeType":"VariableDeclaration","scope":25160,"src":"14702:14:86","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":25137,"name":"uint256","nodeType":"ElementaryTypeName","src":"14702:7:86","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"14680:37:86"},"returnParameters":{"id":25142,"nodeType":"ParameterList","parameters":[{"constant":false,"id":25141,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":25160,"src":"14741:7:86","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":25140,"name":"uint256","nodeType":"ElementaryTypeName","src":"14741:7:86","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"14740:9:86"},"scope":25221,"src":"14662:311:86","stateMutability":"pure","virtual":false,"visibility":"internal"},{"body":{"id":25185,"nodeType":"Block","src":"15067:232:86","statements":[{"expression":{"arguments":[{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":25175,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"expression":{"id":25170,"name":"_bytes","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":25162,"src":"15085:6:86","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}},"id":25171,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"15092:6:86","memberName":"length","nodeType":"MemberAccess","src":"15085:13:86","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">=","rightExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":25174,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":25172,"name":"_start","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":25164,"src":"15102:6:86","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"+","rightExpression":{"hexValue":"3332","id":25173,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"15111:2:86","typeDescriptions":{"typeIdentifier":"t_rational_32_by_1","typeString":"int_const 32"},"value":"32"},"src":"15102:11:86","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"15085:28:86","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},{"hexValue":"746f427974657333325f6f75744f66426f756e6473","id":25176,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"15115:23:86","typeDescriptions":{"typeIdentifier":"t_stringliteral_95abc635681816f3b423f999d8035c1cc722b70e3d801f56cd1748a4f5810fa2","typeString":"literal_string \"toBytes32_outOfBounds\""},"value":"toBytes32_outOfBounds"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_stringliteral_95abc635681816f3b423f999d8035c1cc722b70e3d801f56cd1748a4f5810fa2","typeString":"literal_string \"toBytes32_outOfBounds\""}],"id":25169,"name":"require","nodeType":"Identifier","overloadedDeclarations":[-18,-18,-18],"referencedDeclaration":-18,"src":"15077:7:86","typeDescriptions":{"typeIdentifier":"t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$","typeString":"function (bool,string memory) pure"}},"id":25177,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"15077:62:86","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":25178,"nodeType":"ExpressionStatement","src":"15077:62:86"},{"assignments":[25180],"declarations":[{"constant":false,"id":25180,"mutability":"mutable","name":"tempBytes32","nameLocation":"15157:11:86","nodeType":"VariableDeclaration","scope":25185,"src":"15149:19:86","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":25179,"name":"bytes32","nodeType":"ElementaryTypeName","src":"15149:7:86","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"}],"id":25181,"nodeType":"VariableDeclarationStatement","src":"15149:19:86"},{"AST":{"nativeSrc":"15188:76:86","nodeType":"YulBlock","src":"15188:76:86","statements":[{"nativeSrc":"15202:52:86","nodeType":"YulAssignment","src":"15202:52:86","value":{"arguments":[{"arguments":[{"arguments":[{"name":"_bytes","nativeSrc":"15231:6:86","nodeType":"YulIdentifier","src":"15231:6:86"},{"kind":"number","nativeSrc":"15239:4:86","nodeType":"YulLiteral","src":"15239:4:86","type":"","value":"0x20"}],"functionName":{"name":"add","nativeSrc":"15227:3:86","nodeType":"YulIdentifier","src":"15227:3:86"},"nativeSrc":"15227:17:86","nodeType":"YulFunctionCall","src":"15227:17:86"},{"name":"_start","nativeSrc":"15246:6:86","nodeType":"YulIdentifier","src":"15246:6:86"}],"functionName":{"name":"add","nativeSrc":"15223:3:86","nodeType":"YulIdentifier","src":"15223:3:86"},"nativeSrc":"15223:30:86","nodeType":"YulFunctionCall","src":"15223:30:86"}],"functionName":{"name":"mload","nativeSrc":"15217:5:86","nodeType":"YulIdentifier","src":"15217:5:86"},"nativeSrc":"15217:37:86","nodeType":"YulFunctionCall","src":"15217:37:86"},"variableNames":[{"name":"tempBytes32","nativeSrc":"15202:11:86","nodeType":"YulIdentifier","src":"15202:11:86"}]}]},"evmVersion":"prague","externalReferences":[{"declaration":25162,"isOffset":false,"isSlot":false,"src":"15231:6:86","valueSize":1},{"declaration":25164,"isOffset":false,"isSlot":false,"src":"15246:6:86","valueSize":1},{"declaration":25180,"isOffset":false,"isSlot":false,"src":"15202:11:86","valueSize":1}],"id":25182,"nodeType":"InlineAssembly","src":"15179:85:86"},{"expression":{"id":25183,"name":"tempBytes32","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":25180,"src":"15281:11:86","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"functionReturnParameters":25168,"id":25184,"nodeType":"Return","src":"15274:18:86"}]},"id":25186,"implemented":true,"kind":"function","modifiers":[],"name":"toBytes32","nameLocation":"14988:9:86","nodeType":"FunctionDefinition","parameters":{"id":25165,"nodeType":"ParameterList","parameters":[{"constant":false,"id":25162,"mutability":"mutable","name":"_bytes","nameLocation":"15011:6:86","nodeType":"VariableDeclaration","scope":25186,"src":"14998:19:86","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes"},"typeName":{"id":25161,"name":"bytes","nodeType":"ElementaryTypeName","src":"14998:5:86","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"},{"constant":false,"id":25164,"mutability":"mutable","name":"_start","nameLocation":"15027:6:86","nodeType":"VariableDeclaration","scope":25186,"src":"15019:14:86","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":25163,"name":"uint256","nodeType":"ElementaryTypeName","src":"15019:7:86","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"14997:37:86"},"returnParameters":{"id":25168,"nodeType":"ParameterList","parameters":[{"constant":false,"id":25167,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":25186,"src":"15058:7:86","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":25166,"name":"bytes32","nodeType":"ElementaryTypeName","src":"15058:7:86","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"}],"src":"15057:9:86"},"scope":25221,"src":"14979:320:86","stateMutability":"pure","virtual":false,"visibility":"internal"},{"body":{"id":25202,"nodeType":"Block","src":"15398:1323:86","statements":[{"assignments":[25196],"declarations":[{"constant":false,"id":25196,"mutability":"mutable","name":"success","nameLocation":"15413:7:86","nodeType":"VariableDeclaration","scope":25202,"src":"15408:12:86","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":25195,"name":"bool","nodeType":"ElementaryTypeName","src":"15408:4:86","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"}],"id":25198,"initialValue":{"hexValue":"74727565","id":25197,"isConstant":false,"isLValue":false,"isPure":true,"kind":"bool","lValueRequested":false,"nodeType":"Literal","src":"15423:4:86","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"value":"true"},"nodeType":"VariableDeclarationStatement","src":"15408:19:86"},{"AST":{"nativeSrc":"15447:1243:86","nodeType":"YulBlock","src":"15447:1243:86","statements":[{"nativeSrc":"15461:30:86","nodeType":"YulVariableDeclaration","src":"15461:30:86","value":{"arguments":[{"name":"_preBytes","nativeSrc":"15481:9:86","nodeType":"YulIdentifier","src":"15481:9:86"}],"functionName":{"name":"mload","nativeSrc":"15475:5:86","nodeType":"YulIdentifier","src":"15475:5:86"},"nativeSrc":"15475:16:86","nodeType":"YulFunctionCall","src":"15475:16:86"},"variables":[{"name":"length","nativeSrc":"15465:6:86","nodeType":"YulTypedName","src":"15465:6:86","type":""}]},{"cases":[{"body":{"nativeSrc":"15624:961:86","nodeType":"YulBlock","src":"15624:961:86","statements":[{"nativeSrc":"15853:11:86","nodeType":"YulVariableDeclaration","src":"15853:11:86","value":{"kind":"number","nativeSrc":"15863:1:86","nodeType":"YulLiteral","src":"15863:1:86","type":"","value":"1"},"variables":[{"name":"cb","nativeSrc":"15857:2:86","nodeType":"YulTypedName","src":"15857:2:86","type":""}]},{"nativeSrc":"15882:30:86","nodeType":"YulVariableDeclaration","src":"15882:30:86","value":{"arguments":[{"name":"_preBytes","nativeSrc":"15896:9:86","nodeType":"YulIdentifier","src":"15896:9:86"},{"kind":"number","nativeSrc":"15907:4:86","nodeType":"YulLiteral","src":"15907:4:86","type":"","value":"0x20"}],"functionName":{"name":"add","nativeSrc":"15892:3:86","nodeType":"YulIdentifier","src":"15892:3:86"},"nativeSrc":"15892:20:86","nodeType":"YulFunctionCall","src":"15892:20:86"},"variables":[{"name":"mc","nativeSrc":"15886:2:86","nodeType":"YulTypedName","src":"15886:2:86","type":""}]},{"nativeSrc":"15929:26:86","nodeType":"YulVariableDeclaration","src":"15929:26:86","value":{"arguments":[{"name":"mc","nativeSrc":"15944:2:86","nodeType":"YulIdentifier","src":"15944:2:86"},{"name":"length","nativeSrc":"15948:6:86","nodeType":"YulIdentifier","src":"15948:6:86"}],"functionName":{"name":"add","nativeSrc":"15940:3:86","nodeType":"YulIdentifier","src":"15940:3:86"},"nativeSrc":"15940:15:86","nodeType":"YulFunctionCall","src":"15940:15:86"},"variables":[{"name":"end","nativeSrc":"15933:3:86","nodeType":"YulTypedName","src":"15933:3:86","type":""}]},{"body":{"nativeSrc":"16287:284:86","nodeType":"YulBlock","src":"16287:284:86","statements":[{"body":{"nativeSrc":"16423:130:86","nodeType":"YulBlock","src":"16423:130:86","statements":[{"nativeSrc":"16487:12:86","nodeType":"YulAssignment","src":"16487:12:86","value":{"kind":"number","nativeSrc":"16498:1:86","nodeType":"YulLiteral","src":"16498:1:86","type":"","value":"0"},"variableNames":[{"name":"success","nativeSrc":"16487:7:86","nodeType":"YulIdentifier","src":"16487:7:86"}]},{"nativeSrc":"16524:7:86","nodeType":"YulAssignment","src":"16524:7:86","value":{"kind":"number","nativeSrc":"16530:1:86","nodeType":"YulLiteral","src":"16530:1:86","type":"","value":"0"},"variableNames":[{"name":"cb","nativeSrc":"16524:2:86","nodeType":"YulIdentifier","src":"16524:2:86"}]}]},"condition":{"arguments":[{"arguments":[{"arguments":[{"name":"mc","nativeSrc":"16406:2:86","nodeType":"YulIdentifier","src":"16406:2:86"}],"functionName":{"name":"mload","nativeSrc":"16400:5:86","nodeType":"YulIdentifier","src":"16400:5:86"},"nativeSrc":"16400:9:86","nodeType":"YulFunctionCall","src":"16400:9:86"},{"arguments":[{"name":"cc","nativeSrc":"16417:2:86","nodeType":"YulIdentifier","src":"16417:2:86"}],"functionName":{"name":"mload","nativeSrc":"16411:5:86","nodeType":"YulIdentifier","src":"16411:5:86"},"nativeSrc":"16411:9:86","nodeType":"YulFunctionCall","src":"16411:9:86"}],"functionName":{"name":"eq","nativeSrc":"16397:2:86","nodeType":"YulIdentifier","src":"16397:2:86"},"nativeSrc":"16397:24:86","nodeType":"YulFunctionCall","src":"16397:24:86"}],"functionName":{"name":"iszero","nativeSrc":"16390:6:86","nodeType":"YulIdentifier","src":"16390:6:86"},"nativeSrc":"16390:32:86","nodeType":"YulFunctionCall","src":"16390:32:86"},"nativeSrc":"16387:166:86","nodeType":"YulIf","src":"16387:166:86"}]},"condition":{"arguments":[{"arguments":[{"arguments":[{"name":"mc","nativeSrc":"16169:2:86","nodeType":"YulIdentifier","src":"16169:2:86"},{"name":"end","nativeSrc":"16173:3:86","nodeType":"YulIdentifier","src":"16173:3:86"}],"functionName":{"name":"lt","nativeSrc":"16166:2:86","nodeType":"YulIdentifier","src":"16166:2:86"},"nativeSrc":"16166:11:86","nodeType":"YulFunctionCall","src":"16166:11:86"},{"name":"cb","nativeSrc":"16179:2:86","nodeType":"YulIdentifier","src":"16179:2:86"}],"functionName":{"name":"add","nativeSrc":"16162:3:86","nodeType":"YulIdentifier","src":"16162:3:86"},"nativeSrc":"16162:20:86","nodeType":"YulFunctionCall","src":"16162:20:86"},{"kind":"number","nativeSrc":"16184:1:86","nodeType":"YulLiteral","src":"16184:1:86","type":"","value":"2"}],"functionName":{"name":"eq","nativeSrc":"16159:2:86","nodeType":"YulIdentifier","src":"16159:2:86"},"nativeSrc":"16159:27:86","nodeType":"YulFunctionCall","src":"16159:27:86"},"nativeSrc":"15973:598:86","nodeType":"YulForLoop","post":{"nativeSrc":"16187:99:86","nodeType":"YulBlock","src":"16187:99:86","statements":[{"nativeSrc":"16209:19:86","nodeType":"YulAssignment","src":"16209:19:86","value":{"arguments":[{"name":"mc","nativeSrc":"16219:2:86","nodeType":"YulIdentifier","src":"16219:2:86"},{"kind":"number","nativeSrc":"16223:4:86","nodeType":"YulLiteral","src":"16223:4:86","type":"","value":"0x20"}],"functionName":{"name":"add","nativeSrc":"16215:3:86","nodeType":"YulIdentifier","src":"16215:3:86"},"nativeSrc":"16215:13:86","nodeType":"YulFunctionCall","src":"16215:13:86"},"variableNames":[{"name":"mc","nativeSrc":"16209:2:86","nodeType":"YulIdentifier","src":"16209:2:86"}]},{"nativeSrc":"16249:19:86","nodeType":"YulAssignment","src":"16249:19:86","value":{"arguments":[{"name":"cc","nativeSrc":"16259:2:86","nodeType":"YulIdentifier","src":"16259:2:86"},{"kind":"number","nativeSrc":"16263:4:86","nodeType":"YulLiteral","src":"16263:4:86","type":"","value":"0x20"}],"functionName":{"name":"add","nativeSrc":"16255:3:86","nodeType":"YulIdentifier","src":"16255:3:86"},"nativeSrc":"16255:13:86","nodeType":"YulFunctionCall","src":"16255:13:86"},"variableNames":[{"name":"cc","nativeSrc":"16249:2:86","nodeType":"YulIdentifier","src":"16249:2:86"}]}]},"pre":{"nativeSrc":"15977:181:86","nodeType":"YulBlock","src":"15977:181:86","statements":[{"nativeSrc":"15999:31:86","nodeType":"YulVariableDeclaration","src":"15999:31:86","value":{"arguments":[{"name":"_postBytes","nativeSrc":"16013:10:86","nodeType":"YulIdentifier","src":"16013:10:86"},{"kind":"number","nativeSrc":"16025:4:86","nodeType":"YulLiteral","src":"16025:4:86","type":"","value":"0x20"}],"functionName":{"name":"add","nativeSrc":"16009:3:86","nodeType":"YulIdentifier","src":"16009:3:86"},"nativeSrc":"16009:21:86","nodeType":"YulFunctionCall","src":"16009:21:86"},"variables":[{"name":"cc","nativeSrc":"16003:2:86","nodeType":"YulTypedName","src":"16003:2:86","type":""}]}]},"src":"15973:598:86"}]},"nativeSrc":"15617:968:86","nodeType":"YulCase","src":"15617:968:86","value":{"kind":"number","nativeSrc":"15622:1:86","nodeType":"YulLiteral","src":"15622:1:86","type":"","value":"1"}},{"body":{"nativeSrc":"16606:74:86","nodeType":"YulBlock","src":"16606:74:86","statements":[{"nativeSrc":"16654:12:86","nodeType":"YulAssignment","src":"16654:12:86","value":{"kind":"number","nativeSrc":"16665:1:86","nodeType":"YulLiteral","src":"16665:1:86","type":"","value":"0"},"variableNames":[{"name":"success","nativeSrc":"16654:7:86","nodeType":"YulIdentifier","src":"16654:7:86"}]}]},"nativeSrc":"16598:82:86","nodeType":"YulCase","src":"16598:82:86","value":"default"}],"expression":{"arguments":[{"name":"length","nativeSrc":"15578:6:86","nodeType":"YulIdentifier","src":"15578:6:86"},{"arguments":[{"name":"_postBytes","nativeSrc":"15592:10:86","nodeType":"YulIdentifier","src":"15592:10:86"}],"functionName":{"name":"mload","nativeSrc":"15586:5:86","nodeType":"YulIdentifier","src":"15586:5:86"},"nativeSrc":"15586:17:86","nodeType":"YulFunctionCall","src":"15586:17:86"}],"functionName":{"name":"eq","nativeSrc":"15575:2:86","nodeType":"YulIdentifier","src":"15575:2:86"},"nativeSrc":"15575:29:86","nodeType":"YulFunctionCall","src":"15575:29:86"},"nativeSrc":"15568:1112:86","nodeType":"YulSwitch","src":"15568:1112:86"}]},"evmVersion":"prague","externalReferences":[{"declaration":25190,"isOffset":false,"isSlot":false,"src":"15592:10:86","valueSize":1},{"declaration":25190,"isOffset":false,"isSlot":false,"src":"16013:10:86","valueSize":1},{"declaration":25188,"isOffset":false,"isSlot":false,"src":"15481:9:86","valueSize":1},{"declaration":25188,"isOffset":false,"isSlot":false,"src":"15896:9:86","valueSize":1},{"declaration":25196,"isOffset":false,"isSlot":false,"src":"16487:7:86","valueSize":1},{"declaration":25196,"isOffset":false,"isSlot":false,"src":"16654:7:86","valueSize":1}],"id":25199,"nodeType":"InlineAssembly","src":"15438:1252:86"},{"expression":{"id":25200,"name":"success","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":25196,"src":"16707:7:86","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"functionReturnParameters":25194,"id":25201,"nodeType":"Return","src":"16700:14:86"}]},"id":25203,"implemented":true,"kind":"function","modifiers":[],"name":"equal","nameLocation":"15314:5:86","nodeType":"FunctionDefinition","parameters":{"id":25191,"nodeType":"ParameterList","parameters":[{"constant":false,"id":25188,"mutability":"mutable","name":"_preBytes","nameLocation":"15333:9:86","nodeType":"VariableDeclaration","scope":25203,"src":"15320:22:86","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes"},"typeName":{"id":25187,"name":"bytes","nodeType":"ElementaryTypeName","src":"15320:5:86","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"},{"constant":false,"id":25190,"mutability":"mutable","name":"_postBytes","nameLocation":"15357:10:86","nodeType":"VariableDeclaration","scope":25203,"src":"15344:23:86","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes"},"typeName":{"id":25189,"name":"bytes","nodeType":"ElementaryTypeName","src":"15344:5:86","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"}],"src":"15319:49:86"},"returnParameters":{"id":25194,"nodeType":"ParameterList","parameters":[{"constant":false,"id":25193,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":25203,"src":"15392:4:86","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":25192,"name":"bool","nodeType":"ElementaryTypeName","src":"15392:4:86","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"}],"src":"15391:6:86"},"scope":25221,"src":"15305:1416:86","stateMutability":"pure","virtual":false,"visibility":"internal"},{"body":{"id":25219,"nodeType":"Block","src":"16878:2559:86","statements":[{"assignments":[25213],"declarations":[{"constant":false,"id":25213,"mutability":"mutable","name":"success","nameLocation":"16893:7:86","nodeType":"VariableDeclaration","scope":25219,"src":"16888:12:86","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":25212,"name":"bool","nodeType":"ElementaryTypeName","src":"16888:4:86","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"}],"id":25215,"initialValue":{"hexValue":"74727565","id":25214,"isConstant":false,"isLValue":false,"isPure":true,"kind":"bool","lValueRequested":false,"nodeType":"Literal","src":"16903:4:86","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"value":"true"},"nodeType":"VariableDeclarationStatement","src":"16888:19:86"},{"AST":{"nativeSrc":"16927:2479:86","nodeType":"YulBlock","src":"16927:2479:86","statements":[{"nativeSrc":"16986:34:86","nodeType":"YulVariableDeclaration","src":"16986:34:86","value":{"arguments":[{"name":"_preBytes.slot","nativeSrc":"17005:14:86","nodeType":"YulIdentifier","src":"17005:14:86"}],"functionName":{"name":"sload","nativeSrc":"16999:5:86","nodeType":"YulIdentifier","src":"16999:5:86"},"nativeSrc":"16999:21:86","nodeType":"YulFunctionCall","src":"16999:21:86"},"variables":[{"name":"fslot","nativeSrc":"16990:5:86","nodeType":"YulTypedName","src":"16990:5:86","type":""}]},{"nativeSrc":"17111:76:86","nodeType":"YulVariableDeclaration","src":"17111:76:86","value":{"arguments":[{"arguments":[{"name":"fslot","nativeSrc":"17134:5:86","nodeType":"YulIdentifier","src":"17134:5:86"},{"arguments":[{"arguments":[{"kind":"number","nativeSrc":"17149:5:86","nodeType":"YulLiteral","src":"17149:5:86","type":"","value":"0x100"},{"arguments":[{"arguments":[{"name":"fslot","nativeSrc":"17167:5:86","nodeType":"YulIdentifier","src":"17167:5:86"},{"kind":"number","nativeSrc":"17174:1:86","nodeType":"YulLiteral","src":"17174:1:86","type":"","value":"1"}],"functionName":{"name":"and","nativeSrc":"17163:3:86","nodeType":"YulIdentifier","src":"17163:3:86"},"nativeSrc":"17163:13:86","nodeType":"YulFunctionCall","src":"17163:13:86"}],"functionName":{"name":"iszero","nativeSrc":"17156:6:86","nodeType":"YulIdentifier","src":"17156:6:86"},"nativeSrc":"17156:21:86","nodeType":"YulFunctionCall","src":"17156:21:86"}],"functionName":{"name":"mul","nativeSrc":"17145:3:86","nodeType":"YulIdentifier","src":"17145:3:86"},"nativeSrc":"17145:33:86","nodeType":"YulFunctionCall","src":"17145:33:86"},{"kind":"number","nativeSrc":"17180:1:86","nodeType":"YulLiteral","src":"17180:1:86","type":"","value":"1"}],"functionName":{"name":"sub","nativeSrc":"17141:3:86","nodeType":"YulIdentifier","src":"17141:3:86"},"nativeSrc":"17141:41:86","nodeType":"YulFunctionCall","src":"17141:41:86"}],"functionName":{"name":"and","nativeSrc":"17130:3:86","nodeType":"YulIdentifier","src":"17130:3:86"},"nativeSrc":"17130:53:86","nodeType":"YulFunctionCall","src":"17130:53:86"},{"kind":"number","nativeSrc":"17185:1:86","nodeType":"YulLiteral","src":"17185:1:86","type":"","value":"2"}],"functionName":{"name":"div","nativeSrc":"17126:3:86","nodeType":"YulIdentifier","src":"17126:3:86"},"nativeSrc":"17126:61:86","nodeType":"YulFunctionCall","src":"17126:61:86"},"variables":[{"name":"slength","nativeSrc":"17115:7:86","nodeType":"YulTypedName","src":"17115:7:86","type":""}]},{"nativeSrc":"17200:32:86","nodeType":"YulVariableDeclaration","src":"17200:32:86","value":{"arguments":[{"name":"_postBytes","nativeSrc":"17221:10:86","nodeType":"YulIdentifier","src":"17221:10:86"}],"functionName":{"name":"mload","nativeSrc":"17215:5:86","nodeType":"YulIdentifier","src":"17215:5:86"},"nativeSrc":"17215:17:86","nodeType":"YulFunctionCall","src":"17215:17:86"},"variables":[{"name":"mlength","nativeSrc":"17204:7:86","nodeType":"YulTypedName","src":"17204:7:86","type":""}]},{"cases":[{"body":{"nativeSrc":"17356:1945:86","nodeType":"YulBlock","src":"17356:1945:86","statements":[{"body":{"nativeSrc":"17667:1620:86","nodeType":"YulBlock","src":"17667:1620:86","statements":[{"cases":[{"body":{"nativeSrc":"17739:340:86","nodeType":"YulBlock","src":"17739:340:86","statements":[{"nativeSrc":"17832:38:86","nodeType":"YulAssignment","src":"17832:38:86","value":{"arguments":[{"arguments":[{"name":"fslot","nativeSrc":"17849:5:86","nodeType":"YulIdentifier","src":"17849:5:86"},{"kind":"number","nativeSrc":"17856:5:86","nodeType":"YulLiteral","src":"17856:5:86","type":"","value":"0x100"}],"functionName":{"name":"div","nativeSrc":"17845:3:86","nodeType":"YulIdentifier","src":"17845:3:86"},"nativeSrc":"17845:17:86","nodeType":"YulFunctionCall","src":"17845:17:86"},{"kind":"number","nativeSrc":"17864:5:86","nodeType":"YulLiteral","src":"17864:5:86","type":"","value":"0x100"}],"functionName":{"name":"mul","nativeSrc":"17841:3:86","nodeType":"YulIdentifier","src":"17841:3:86"},"nativeSrc":"17841:29:86","nodeType":"YulFunctionCall","src":"17841:29:86"},"variableNames":[{"name":"fslot","nativeSrc":"17832:5:86","nodeType":"YulIdentifier","src":"17832:5:86"}]},{"body":{"nativeSrc":"17947:110:86","nodeType":"YulBlock","src":"17947:110:86","statements":[{"nativeSrc":"18019:12:86","nodeType":"YulAssignment","src":"18019:12:86","value":{"kind":"number","nativeSrc":"18030:1:86","nodeType":"YulLiteral","src":"18030:1:86","type":"","value":"0"},"variableNames":[{"name":"success","nativeSrc":"18019:7:86","nodeType":"YulIdentifier","src":"18019:7:86"}]}]},"condition":{"arguments":[{"arguments":[{"name":"fslot","nativeSrc":"17909:5:86","nodeType":"YulIdentifier","src":"17909:5:86"},{"arguments":[{"arguments":[{"name":"_postBytes","nativeSrc":"17926:10:86","nodeType":"YulIdentifier","src":"17926:10:86"},{"kind":"number","nativeSrc":"17938:4:86","nodeType":"YulLiteral","src":"17938:4:86","type":"","value":"0x20"}],"functionName":{"name":"add","nativeSrc":"17922:3:86","nodeType":"YulIdentifier","src":"17922:3:86"},"nativeSrc":"17922:21:86","nodeType":"YulFunctionCall","src":"17922:21:86"}],"functionName":{"name":"mload","nativeSrc":"17916:5:86","nodeType":"YulIdentifier","src":"17916:5:86"},"nativeSrc":"17916:28:86","nodeType":"YulFunctionCall","src":"17916:28:86"}],"functionName":{"name":"eq","nativeSrc":"17906:2:86","nodeType":"YulIdentifier","src":"17906:2:86"},"nativeSrc":"17906:39:86","nodeType":"YulFunctionCall","src":"17906:39:86"}],"functionName":{"name":"iszero","nativeSrc":"17899:6:86","nodeType":"YulIdentifier","src":"17899:6:86"},"nativeSrc":"17899:47:86","nodeType":"YulFunctionCall","src":"17899:47:86"},"nativeSrc":"17896:161:86","nodeType":"YulIf","src":"17896:161:86"}]},"nativeSrc":"17732:347:86","nodeType":"YulCase","src":"17732:347:86","value":{"kind":"number","nativeSrc":"17737:1:86","nodeType":"YulLiteral","src":"17737:1:86","type":"","value":"1"}},{"body":{"nativeSrc":"18108:1161:86","nodeType":"YulBlock","src":"18108:1161:86","statements":[{"nativeSrc":"18377:11:86","nodeType":"YulVariableDeclaration","src":"18377:11:86","value":{"kind":"number","nativeSrc":"18387:1:86","nodeType":"YulLiteral","src":"18387:1:86","type":"","value":"1"},"variables":[{"name":"cb","nativeSrc":"18381:2:86","nodeType":"YulTypedName","src":"18381:2:86","type":""}]},{"expression":{"arguments":[{"kind":"number","nativeSrc":"18501:3:86","nodeType":"YulLiteral","src":"18501:3:86","type":"","value":"0x0"},{"name":"_preBytes.slot","nativeSrc":"18506:14:86","nodeType":"YulIdentifier","src":"18506:14:86"}],"functionName":{"name":"mstore","nativeSrc":"18494:6:86","nodeType":"YulIdentifier","src":"18494:6:86"},"nativeSrc":"18494:27:86","nodeType":"YulFunctionCall","src":"18494:27:86"},"nativeSrc":"18494:27:86","nodeType":"YulExpressionStatement","src":"18494:27:86"},{"nativeSrc":"18546:30:86","nodeType":"YulVariableDeclaration","src":"18546:30:86","value":{"arguments":[{"kind":"number","nativeSrc":"18566:3:86","nodeType":"YulLiteral","src":"18566:3:86","type":"","value":"0x0"},{"kind":"number","nativeSrc":"18571:4:86","nodeType":"YulLiteral","src":"18571:4:86","type":"","value":"0x20"}],"functionName":{"name":"keccak256","nativeSrc":"18556:9:86","nodeType":"YulIdentifier","src":"18556:9:86"},"nativeSrc":"18556:20:86","nodeType":"YulFunctionCall","src":"18556:20:86"},"variables":[{"name":"sc","nativeSrc":"18550:2:86","nodeType":"YulTypedName","src":"18550:2:86","type":""}]},{"nativeSrc":"18602:31:86","nodeType":"YulVariableDeclaration","src":"18602:31:86","value":{"arguments":[{"name":"_postBytes","nativeSrc":"18616:10:86","nodeType":"YulIdentifier","src":"18616:10:86"},{"kind":"number","nativeSrc":"18628:4:86","nodeType":"YulLiteral","src":"18628:4:86","type":"","value":"0x20"}],"functionName":{"name":"add","nativeSrc":"18612:3:86","nodeType":"YulIdentifier","src":"18612:3:86"},"nativeSrc":"18612:21:86","nodeType":"YulFunctionCall","src":"18612:21:86"},"variables":[{"name":"mc","nativeSrc":"18606:2:86","nodeType":"YulTypedName","src":"18606:2:86","type":""}]},{"nativeSrc":"18658:27:86","nodeType":"YulVariableDeclaration","src":"18658:27:86","value":{"arguments":[{"name":"mc","nativeSrc":"18673:2:86","nodeType":"YulIdentifier","src":"18673:2:86"},{"name":"mlength","nativeSrc":"18677:7:86","nodeType":"YulIdentifier","src":"18677:7:86"}],"functionName":{"name":"add","nativeSrc":"18669:3:86","nodeType":"YulIdentifier","src":"18669:3:86"},"nativeSrc":"18669:16:86","nodeType":"YulFunctionCall","src":"18669:16:86"},"variables":[{"name":"end","nativeSrc":"18662:3:86","nodeType":"YulTypedName","src":"18662:3:86","type":""}]},{"body":{"nativeSrc":"18993:254:86","nodeType":"YulBlock","src":"18993:254:86","statements":[{"body":{"nativeSrc":"19059:162:86","nodeType":"YulBlock","src":"19059:162:86","statements":[{"nativeSrc":"19139:12:86","nodeType":"YulAssignment","src":"19139:12:86","value":{"kind":"number","nativeSrc":"19150:1:86","nodeType":"YulLiteral","src":"19150:1:86","type":"","value":"0"},"variableNames":[{"name":"success","nativeSrc":"19139:7:86","nodeType":"YulIdentifier","src":"19139:7:86"}]},{"nativeSrc":"19184:7:86","nodeType":"YulAssignment","src":"19184:7:86","value":{"kind":"number","nativeSrc":"19190:1:86","nodeType":"YulLiteral","src":"19190:1:86","type":"","value":"0"},"variableNames":[{"name":"cb","nativeSrc":"19184:2:86","nodeType":"YulIdentifier","src":"19184:2:86"}]}]},"condition":{"arguments":[{"arguments":[{"arguments":[{"name":"sc","nativeSrc":"19042:2:86","nodeType":"YulIdentifier","src":"19042:2:86"}],"functionName":{"name":"sload","nativeSrc":"19036:5:86","nodeType":"YulIdentifier","src":"19036:5:86"},"nativeSrc":"19036:9:86","nodeType":"YulFunctionCall","src":"19036:9:86"},{"arguments":[{"name":"mc","nativeSrc":"19053:2:86","nodeType":"YulIdentifier","src":"19053:2:86"}],"functionName":{"name":"mload","nativeSrc":"19047:5:86","nodeType":"YulIdentifier","src":"19047:5:86"},"nativeSrc":"19047:9:86","nodeType":"YulFunctionCall","src":"19047:9:86"}],"functionName":{"name":"eq","nativeSrc":"19033:2:86","nodeType":"YulIdentifier","src":"19033:2:86"},"nativeSrc":"19033:24:86","nodeType":"YulFunctionCall","src":"19033:24:86"}],"functionName":{"name":"iszero","nativeSrc":"19026:6:86","nodeType":"YulIdentifier","src":"19026:6:86"},"nativeSrc":"19026:32:86","nodeType":"YulFunctionCall","src":"19026:32:86"},"nativeSrc":"19023:198:86","nodeType":"YulIf","src":"19023:198:86"}]},"condition":{"arguments":[{"arguments":[{"arguments":[{"name":"mc","nativeSrc":"18854:2:86","nodeType":"YulIdentifier","src":"18854:2:86"},{"name":"end","nativeSrc":"18858:3:86","nodeType":"YulIdentifier","src":"18858:3:86"}],"functionName":{"name":"lt","nativeSrc":"18851:2:86","nodeType":"YulIdentifier","src":"18851:2:86"},"nativeSrc":"18851:11:86","nodeType":"YulFunctionCall","src":"18851:11:86"},{"name":"cb","nativeSrc":"18864:2:86","nodeType":"YulIdentifier","src":"18864:2:86"}],"functionName":{"name":"add","nativeSrc":"18847:3:86","nodeType":"YulIdentifier","src":"18847:3:86"},"nativeSrc":"18847:20:86","nodeType":"YulFunctionCall","src":"18847:20:86"},{"kind":"number","nativeSrc":"18869:1:86","nodeType":"YulLiteral","src":"18869:1:86","type":"","value":"2"}],"functionName":{"name":"eq","nativeSrc":"18844:2:86","nodeType":"YulIdentifier","src":"18844:2:86"},"nativeSrc":"18844:27:86","nodeType":"YulFunctionCall","src":"18844:27:86"},"nativeSrc":"18837:410:86","nodeType":"YulForLoop","post":{"nativeSrc":"18872:120:86","nodeType":"YulBlock","src":"18872:120:86","statements":[{"nativeSrc":"18902:16:86","nodeType":"YulAssignment","src":"18902:16:86","value":{"arguments":[{"name":"sc","nativeSrc":"18912:2:86","nodeType":"YulIdentifier","src":"18912:2:86"},{"kind":"number","nativeSrc":"18916:1:86","nodeType":"YulLiteral","src":"18916:1:86","type":"","value":"1"}],"functionName":{"name":"add","nativeSrc":"18908:3:86","nodeType":"YulIdentifier","src":"18908:3:86"},"nativeSrc":"18908:10:86","nodeType":"YulFunctionCall","src":"18908:10:86"},"variableNames":[{"name":"sc","nativeSrc":"18902:2:86","nodeType":"YulIdentifier","src":"18902:2:86"}]},{"nativeSrc":"18947:19:86","nodeType":"YulAssignment","src":"18947:19:86","value":{"arguments":[{"name":"mc","nativeSrc":"18957:2:86","nodeType":"YulIdentifier","src":"18957:2:86"},{"kind":"number","nativeSrc":"18961:4:86","nodeType":"YulLiteral","src":"18961:4:86","type":"","value":"0x20"}],"functionName":{"name":"add","nativeSrc":"18953:3:86","nodeType":"YulIdentifier","src":"18953:3:86"},"nativeSrc":"18953:13:86","nodeType":"YulFunctionCall","src":"18953:13:86"},"variableNames":[{"name":"mc","nativeSrc":"18947:2:86","nodeType":"YulIdentifier","src":"18947:2:86"}]}]},"pre":{"nativeSrc":"18841:2:86","nodeType":"YulBlock","src":"18841:2:86","statements":[]},"src":"18837:410:86"}]},"nativeSrc":"18100:1169:86","nodeType":"YulCase","src":"18100:1169:86","value":"default"}],"expression":{"arguments":[{"name":"slength","nativeSrc":"17699:7:86","nodeType":"YulIdentifier","src":"17699:7:86"},{"kind":"number","nativeSrc":"17708:2:86","nodeType":"YulLiteral","src":"17708:2:86","type":"","value":"32"}],"functionName":{"name":"lt","nativeSrc":"17696:2:86","nodeType":"YulIdentifier","src":"17696:2:86"},"nativeSrc":"17696:15:86","nodeType":"YulFunctionCall","src":"17696:15:86"},"nativeSrc":"17689:1580:86","nodeType":"YulSwitch","src":"17689:1580:86"}]},"condition":{"arguments":[{"arguments":[{"name":"slength","nativeSrc":"17657:7:86","nodeType":"YulIdentifier","src":"17657:7:86"}],"functionName":{"name":"iszero","nativeSrc":"17650:6:86","nodeType":"YulIdentifier","src":"17650:6:86"},"nativeSrc":"17650:15:86","nodeType":"YulFunctionCall","src":"17650:15:86"}],"functionName":{"name":"iszero","nativeSrc":"17643:6:86","nodeType":"YulIdentifier","src":"17643:6:86"},"nativeSrc":"17643:23:86","nodeType":"YulFunctionCall","src":"17643:23:86"},"nativeSrc":"17640:1647:86","nodeType":"YulIf","src":"17640:1647:86"}]},"nativeSrc":"17349:1952:86","nodeType":"YulCase","src":"17349:1952:86","value":{"kind":"number","nativeSrc":"17354:1:86","nodeType":"YulLiteral","src":"17354:1:86","type":"","value":"1"}},{"body":{"nativeSrc":"19322:74:86","nodeType":"YulBlock","src":"19322:74:86","statements":[{"nativeSrc":"19370:12:86","nodeType":"YulAssignment","src":"19370:12:86","value":{"kind":"number","nativeSrc":"19381:1:86","nodeType":"YulLiteral","src":"19381:1:86","type":"","value":"0"},"variableNames":[{"name":"success","nativeSrc":"19370:7:86","nodeType":"YulIdentifier","src":"19370:7:86"}]}]},"nativeSrc":"19314:82:86","nodeType":"YulCase","src":"19314:82:86","value":"default"}],"expression":{"arguments":[{"name":"slength","nativeSrc":"17319:7:86","nodeType":"YulIdentifier","src":"17319:7:86"},{"name":"mlength","nativeSrc":"17328:7:86","nodeType":"YulIdentifier","src":"17328:7:86"}],"functionName":{"name":"eq","nativeSrc":"17316:2:86","nodeType":"YulIdentifier","src":"17316:2:86"},"nativeSrc":"17316:20:86","nodeType":"YulFunctionCall","src":"17316:20:86"},"nativeSrc":"17309:2087:86","nodeType":"YulSwitch","src":"17309:2087:86"}]},"evmVersion":"prague","externalReferences":[{"declaration":25207,"isOffset":false,"isSlot":false,"src":"17221:10:86","valueSize":1},{"declaration":25207,"isOffset":false,"isSlot":false,"src":"17926:10:86","valueSize":1},{"declaration":25207,"isOffset":false,"isSlot":false,"src":"18616:10:86","valueSize":1},{"declaration":25205,"isOffset":false,"isSlot":true,"src":"17005:14:86","suffix":"slot","valueSize":1},{"declaration":25205,"isOffset":false,"isSlot":true,"src":"18506:14:86","suffix":"slot","valueSize":1},{"declaration":25213,"isOffset":false,"isSlot":false,"src":"18019:7:86","valueSize":1},{"declaration":25213,"isOffset":false,"isSlot":false,"src":"19139:7:86","valueSize":1},{"declaration":25213,"isOffset":false,"isSlot":false,"src":"19370:7:86","valueSize":1}],"id":25216,"nodeType":"InlineAssembly","src":"16918:2488:86"},{"expression":{"id":25217,"name":"success","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":25213,"src":"19423:7:86","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"functionReturnParameters":25211,"id":25218,"nodeType":"Return","src":"19416:14:86"}]},"id":25220,"implemented":true,"kind":"function","modifiers":[],"name":"equalStorage","nameLocation":"16736:12:86","nodeType":"FunctionDefinition","parameters":{"id":25208,"nodeType":"ParameterList","parameters":[{"constant":false,"id":25205,"mutability":"mutable","name":"_preBytes","nameLocation":"16772:9:86","nodeType":"VariableDeclaration","scope":25220,"src":"16758:23:86","stateVariable":false,"storageLocation":"storage","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"},"typeName":{"id":25204,"name":"bytes","nodeType":"ElementaryTypeName","src":"16758:5:86","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"},{"constant":false,"id":25207,"mutability":"mutable","name":"_postBytes","nameLocation":"16804:10:86","nodeType":"VariableDeclaration","scope":25220,"src":"16791:23:86","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes"},"typeName":{"id":25206,"name":"bytes","nodeType":"ElementaryTypeName","src":"16791:5:86","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"}],"src":"16748:72:86"},"returnParameters":{"id":25211,"nodeType":"ParameterList","parameters":[{"constant":false,"id":25210,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":25220,"src":"16868:4:86","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":25209,"name":"bool","nodeType":"ElementaryTypeName","src":"16868:4:86","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"}],"src":"16867:6:86"},"scope":25221,"src":"16727:2710:86","stateMutability":"view","virtual":false,"visibility":"internal"}],"scope":25222,"src":"370:19069:86","usedErrors":[],"usedEvents":[]}],"src":"336:19104:86"},"id":86}},"contracts":{"@ensuro/access-managed-proxy/contracts/AMPUtils.sol":{"AMPUtils":{"abi":[{"inputs":[{"internalType":"address","name":"caller","type":"address"}],"name":"AccessManagedUnauthorized","type":"error"}],"evm":{"bytecode":{"functionDebugData":{},"generatedSources":[],"linkReferences":{},"object":"60556032600b8282823980515f1a607314602657634e487b7160e01b5f525f60045260245ffd5b305f52607381538281f3fe730000000000000000000000000000000000000000301460806040525f5ffdfea2646970667358221220706f85329afd92eb084fd58d0817ecdf5dc94acd4d44ef60bae0ab96e66cca3564736f6c634300081e0033","opcodes":"PUSH1 0x55 PUSH1 0x32 PUSH1 0xB DUP3 DUP3 DUP3 CODECOPY DUP1 MLOAD PUSH0 BYTE PUSH1 0x73 EQ PUSH1 0x26 JUMPI PUSH4 0x4E487B71 PUSH1 0xE0 SHL PUSH0 MSTORE PUSH0 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH0 REVERT JUMPDEST ADDRESS PUSH0 MSTORE PUSH1 0x73 DUP2 MSTORE8 DUP3 DUP2 RETURN INVALID PUSH20 0x0 ADDRESS EQ PUSH1 0x80 PUSH1 0x40 MSTORE PUSH0 PUSH0 REVERT INVALID LOG2 PUSH5 0x6970667358 0x22 SLT KECCAK256 PUSH17 0x6F85329AFD92EB084FD58D0817ECDF5DC9 BLOBBASEFEE 0xCD 0x4D PREVRANDAO 0xEF PUSH1 0xBA RJUMP 0xAB96 DUPN 0x6C 0xCA CALLDATALOAD PUSH5 0x736F6C6343 STOP ADDMOD 0x1E STOP CALLER ","sourceMap":"394:3043:0:-:0;;;;;;;;;;;;;;;-1:-1:-1;;;394:3043:0;;;;;;;;;;;;;;;;;"},"deployedBytecode":{"functionDebugData":{},"generatedSources":[],"immutableReferences":{},"linkReferences":{},"object":"730000000000000000000000000000000000000000301460806040525f5ffdfea2646970667358221220706f85329afd92eb084fd58d0817ecdf5dc94acd4d44ef60bae0ab96e66cca3564736f6c634300081e0033","opcodes":"PUSH20 0x0 ADDRESS EQ PUSH1 0x80 PUSH1 0x40 MSTORE PUSH0 PUSH0 REVERT INVALID LOG2 PUSH5 0x6970667358 0x22 SLT KECCAK256 PUSH17 0x6F85329AFD92EB084FD58D0817ECDF5DC9 BLOBBASEFEE 0xCD 0x4D PREVRANDAO 0xEF PUSH1 0xBA RJUMP 0xAB96 DUPN 0x6C 0xCA CALLDATALOAD PUSH5 0x736F6C6343 STOP ADDMOD 0x1E STOP CALLER ","sourceMap":"394:3043:0:-:0;;;;;;;;"},"methodIdentifiers":{}},"metadata":"{\"compiler\":{\"version\":\"0.8.30+commit.73712a01\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"inputs\":[{\"internalType\":\"address\",\"name\":\"caller\",\"type\":\"address\"}],\"name\":\"AccessManagedUnauthorized\",\"type\":\"error\"}],\"devdoc\":{\"author\":\"Ensuro\",\"details\":\"Utility functions for doing custom access control rules, for contracts deployed      with AccessManagedProxy\",\"kind\":\"dev\",\"methods\":{},\"stateVariables\":{\"AccessManagedProxyStorageLocation\":{\"details\":\"Computed as: `keccak256(    abi.encode(uint256(keccak256(\\\"ensuro.storage.AccessManagedProxy\\\")) - 1) ) & ~bytes32(uint256(0xff))\"}},\"title\":\"AMPUtils\",\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{},\"version\":1}},\"settings\":{\"compilationTarget\":{\"@ensuro/access-managed-proxy/contracts/AMPUtils.sol\":\"AMPUtils\"},\"evmVersion\":\"prague\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"enabled\":true,\"runs\":200},\"remappings\":[]},\"sources\":{\"@ensuro/access-managed-proxy/contracts/AMPUtils.sol\":{\"keccak256\":\"0x3f25097d759aa89ce9a7a94f98b854a3dc23c51f7f895b95a8d489e74d5f1d98\",\"license\":\"Apache-2.0\",\"urls\":[\"bzz-raw://2912cf8c79b973d07fbb741e7d1048026f0a71489df2adf97552b83b23b427d7\",\"dweb:/ipfs/QmRTfFaqy72p4RfY99hKM1K9wH5kxaTnikH5VJjpL7K7sD\"]},\"@ensuro/access-managed-proxy/contracts/interfaces/IAccessManagedProxy.sol\":{\"keccak256\":\"0xdd762bad2f6ad362f5a38fb333d2a953f6c9d0beea122dbaef0e333a7b83a054\",\"license\":\"Apache-2.0\",\"urls\":[\"bzz-raw://a2bb86de08187cee5956393ca2cf096a09eb6ac694471e436ca12e377d97cb40\",\"dweb:/ipfs/Qmf6cNjug4swjsvTJYjbzhMMfAfSFdUuyJjkEf3b1cu2hn\"]},\"@openzeppelin/contracts/access/manager/IAccessManager.sol\":{\"keccak256\":\"0x71e3e350e83af0018a1683cc2ce4c13893cc01f78e5c9c305f6828608ffcfa18\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://0a7b521c9999007715c9bdedffaad2ef7d2ccfa07bca2a39ba9e0c2e8a944a63\",\"dweb:/ipfs/QmamPG6Y1p7iZh4cF8Hfp3oufowSRyB3S3DisTKkmVWSai\"]}},\"version\":1}","storageLayout":{"storage":[],"types":null}}},"@ensuro/access-managed-proxy/contracts/AccessManagedProxy.sol":{"AccessManagedProxy":{"abi":[{"inputs":[{"internalType":"address","name":"implementation","type":"address"},{"internalType":"bytes","name":"_data","type":"bytes"},{"internalType":"contract IAccessManager","name":"accessManager","type":"address"},{"internalType":"bytes4[]","name":"passThruMethods","type":"bytes4[]"}],"stateMutability":"payable","type":"constructor"},{"inputs":[{"internalType":"address","name":"authority","type":"address"}],"name":"AccessManagedInvalidAuthority","type":"error"},{"inputs":[{"internalType":"address","name":"caller","type":"address"}],"name":"AccessManagedUnauthorized","type":"error"},{"inputs":[{"internalType":"address","name":"target","type":"address"}],"name":"AddressEmptyCode","type":"error"},{"inputs":[{"internalType":"address","name":"implementation","type":"address"}],"name":"ERC1967InvalidImplementation","type":"error"},{"inputs":[],"name":"ERC1967NonPayable","type":"error"},{"inputs":[],"name":"FailedCall","type":"error"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"address","name":"authority","type":"address"}],"name":"AuthorityUpdated","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"bytes4[]","name":"newPassThruMethods","type":"bytes4[]"}],"name":"PassThruMethodsChanged","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"implementation","type":"address"}],"name":"Upgraded","type":"event"},{"stateMutability":"payable","type":"fallback"},{"inputs":[],"name":"ACCESS_MANAGER","outputs":[{"internalType":"contract IAccessManager","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"PASS_THRU_METHODS","outputs":[{"internalType":"bytes4[]","name":"methods","type":"bytes4[]"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"authority","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"}],"evm":{"bytecode":{"functionDebugData":{"@_284":{"entryPoint":null,"id":284,"parameterSlots":4,"returnSlots":0},"@_356":{"entryPoint":null,"id":356,"parameterSlots":2,"returnSlots":0},"@_7299":{"entryPoint":null,"id":7299,"parameterSlots":2,"returnSlots":0},"@_checkNonPayable_7605":{"entryPoint":965,"id":7605,"parameterSlots":0,"returnSlots":0},"@_setImplementation_7385":{"entryPoint":686,"id":7385,"parameterSlots":1,"returnSlots":0},"@bubbleRevert_10459":{"entryPoint":1042,"id":10459,"parameterSlots":0,"returnSlots":0},"@delegatecallNoReturn_10421":{"entryPoint":998,"id":10421,"parameterSlots":2,"returnSlots":1},"@functionDelegateCall_10166":{"entryPoint":804,"id":10166,"parameterSlots":2,"returnSlots":1},"@getAccessManagedProxyStorage_33":{"entryPoint":null,"id":33,"parameterSlots":0,"returnSlots":1},"@getAddressSlot_10943":{"entryPoint":null,"id":10943,"parameterSlots":1,"returnSlots":1},"@returnDataSize_10445":{"entryPoint":null,"id":10445,"parameterSlots":0,"returnSlots":1},"@returnData_10453":{"entryPoint":1017,"id":10453,"parameterSlots":0,"returnSlots":1},"@setAccessManager_74":{"entryPoint":179,"id":74,"parameterSlots":1,"returnSlots":0},"@setPassThruMethods_137":{"entryPoint":334,"id":137,"parameterSlots":1,"returnSlots":0},"@upgradeToAndCall_7421":{"entryPoint":85,"id":7421,"parameterSlots":2,"returnSlots":0},"abi_decode_array_bytes4_dyn_fromMemory":{"entryPoint":1349,"id":null,"parameterSlots":2,"returnSlots":1},"abi_decode_contract_IAccessManager_fromMemory":{"entryPoint":1333,"id":null,"parameterSlots":1,"returnSlots":1},"abi_decode_tuple_t_addresst_bytes_memory_ptrt_contract$_IAccessManager_$6842t_array$_t_bytes4_$dyn_memory_ptr_fromMemory":{"entryPoint":1497,"id":null,"parameterSlots":2,"returnSlots":4},"abi_encode_tuple_t_address__to_t_address__fromStack_reversed":{"entryPoint":null,"id":null,"parameterSlots":2,"returnSlots":1},"abi_encode_tuple_t_array$_t_bytes4_$dyn_memory_ptr__to_t_array$_t_bytes4_$dyn_memory_ptr__fromStack_reversed":{"entryPoint":1741,"id":null,"parameterSlots":2,"returnSlots":1},"allocate_memory":{"entryPoint":1285,"id":null,"parameterSlots":1,"returnSlots":1},"panic_error_0x32":{"entryPoint":1721,"id":null,"parameterSlots":0,"returnSlots":0},"panic_error_0x41":{"entryPoint":1265,"id":null,"parameterSlots":0,"returnSlots":0},"validator_revert_address":{"entryPoint":1242,"id":null,"parameterSlots":1,"returnSlots":0}},"generatedSources":[{"ast":{"nativeSrc":"0:3793:87","nodeType":"YulBlock","src":"0:3793:87","statements":[{"nativeSrc":"6:3:87","nodeType":"YulBlock","src":"6:3:87","statements":[]},{"body":{"nativeSrc":"59:86:87","nodeType":"YulBlock","src":"59:86:87","statements":[{"body":{"nativeSrc":"123:16:87","nodeType":"YulBlock","src":"123:16:87","statements":[{"expression":{"arguments":[{"kind":"number","nativeSrc":"132:1:87","nodeType":"YulLiteral","src":"132:1:87","type":"","value":"0"},{"kind":"number","nativeSrc":"135:1:87","nodeType":"YulLiteral","src":"135:1:87","type":"","value":"0"}],"functionName":{"name":"revert","nativeSrc":"125:6:87","nodeType":"YulIdentifier","src":"125:6:87"},"nativeSrc":"125:12:87","nodeType":"YulFunctionCall","src":"125:12:87"},"nativeSrc":"125:12:87","nodeType":"YulExpressionStatement","src":"125:12:87"}]},"condition":{"arguments":[{"arguments":[{"name":"value","nativeSrc":"82:5:87","nodeType":"YulIdentifier","src":"82:5:87"},{"arguments":[{"name":"value","nativeSrc":"93:5:87","nodeType":"YulIdentifier","src":"93:5:87"},{"arguments":[{"arguments":[{"kind":"number","nativeSrc":"108:3:87","nodeType":"YulLiteral","src":"108:3:87","type":"","value":"160"},{"kind":"number","nativeSrc":"113:1:87","nodeType":"YulLiteral","src":"113:1:87","type":"","value":"1"}],"functionName":{"name":"shl","nativeSrc":"104:3:87","nodeType":"YulIdentifier","src":"104:3:87"},"nativeSrc":"104:11:87","nodeType":"YulFunctionCall","src":"104:11:87"},{"kind":"number","nativeSrc":"117:1:87","nodeType":"YulLiteral","src":"117:1:87","type":"","value":"1"}],"functionName":{"name":"sub","nativeSrc":"100:3:87","nodeType":"YulIdentifier","src":"100:3:87"},"nativeSrc":"100:19:87","nodeType":"YulFunctionCall","src":"100:19:87"}],"functionName":{"name":"and","nativeSrc":"89:3:87","nodeType":"YulIdentifier","src":"89:3:87"},"nativeSrc":"89:31:87","nodeType":"YulFunctionCall","src":"89:31:87"}],"functionName":{"name":"eq","nativeSrc":"79:2:87","nodeType":"YulIdentifier","src":"79:2:87"},"nativeSrc":"79:42:87","nodeType":"YulFunctionCall","src":"79:42:87"}],"functionName":{"name":"iszero","nativeSrc":"72:6:87","nodeType":"YulIdentifier","src":"72:6:87"},"nativeSrc":"72:50:87","nodeType":"YulFunctionCall","src":"72:50:87"},"nativeSrc":"69:70:87","nodeType":"YulIf","src":"69:70:87"}]},"name":"validator_revert_address","nativeSrc":"14:131:87","nodeType":"YulFunctionDefinition","parameters":[{"name":"value","nativeSrc":"48:5:87","nodeType":"YulTypedName","src":"48:5:87","type":""}],"src":"14:131:87"},{"body":{"nativeSrc":"182:95:87","nodeType":"YulBlock","src":"182:95:87","statements":[{"expression":{"arguments":[{"kind":"number","nativeSrc":"199:1:87","nodeType":"YulLiteral","src":"199:1:87","type":"","value":"0"},{"arguments":[{"kind":"number","nativeSrc":"206:3:87","nodeType":"YulLiteral","src":"206:3:87","type":"","value":"224"},{"kind":"number","nativeSrc":"211:10:87","nodeType":"YulLiteral","src":"211:10:87","type":"","value":"0x4e487b71"}],"functionName":{"name":"shl","nativeSrc":"202:3:87","nodeType":"YulIdentifier","src":"202:3:87"},"nativeSrc":"202:20:87","nodeType":"YulFunctionCall","src":"202:20:87"}],"functionName":{"name":"mstore","nativeSrc":"192:6:87","nodeType":"YulIdentifier","src":"192:6:87"},"nativeSrc":"192:31:87","nodeType":"YulFunctionCall","src":"192:31:87"},"nativeSrc":"192:31:87","nodeType":"YulExpressionStatement","src":"192:31:87"},{"expression":{"arguments":[{"kind":"number","nativeSrc":"239:1:87","nodeType":"YulLiteral","src":"239:1:87","type":"","value":"4"},{"kind":"number","nativeSrc":"242:4:87","nodeType":"YulLiteral","src":"242:4:87","type":"","value":"0x41"}],"functionName":{"name":"mstore","nativeSrc":"232:6:87","nodeType":"YulIdentifier","src":"232:6:87"},"nativeSrc":"232:15:87","nodeType":"YulFunctionCall","src":"232:15:87"},"nativeSrc":"232:15:87","nodeType":"YulExpressionStatement","src":"232:15:87"},{"expression":{"arguments":[{"kind":"number","nativeSrc":"263:1:87","nodeType":"YulLiteral","src":"263:1:87","type":"","value":"0"},{"kind":"number","nativeSrc":"266:4:87","nodeType":"YulLiteral","src":"266:4:87","type":"","value":"0x24"}],"functionName":{"name":"revert","nativeSrc":"256:6:87","nodeType":"YulIdentifier","src":"256:6:87"},"nativeSrc":"256:15:87","nodeType":"YulFunctionCall","src":"256:15:87"},"nativeSrc":"256:15:87","nodeType":"YulExpressionStatement","src":"256:15:87"}]},"name":"panic_error_0x41","nativeSrc":"150:127:87","nodeType":"YulFunctionDefinition","src":"150:127:87"},{"body":{"nativeSrc":"327:230:87","nodeType":"YulBlock","src":"327:230:87","statements":[{"nativeSrc":"337:19:87","nodeType":"YulAssignment","src":"337:19:87","value":{"arguments":[{"kind":"number","nativeSrc":"353:2:87","nodeType":"YulLiteral","src":"353:2:87","type":"","value":"64"}],"functionName":{"name":"mload","nativeSrc":"347:5:87","nodeType":"YulIdentifier","src":"347:5:87"},"nativeSrc":"347:9:87","nodeType":"YulFunctionCall","src":"347:9:87"},"variableNames":[{"name":"memPtr","nativeSrc":"337:6:87","nodeType":"YulIdentifier","src":"337:6:87"}]},{"nativeSrc":"365:58:87","nodeType":"YulVariableDeclaration","src":"365:58:87","value":{"arguments":[{"name":"memPtr","nativeSrc":"387:6:87","nodeType":"YulIdentifier","src":"387:6:87"},{"arguments":[{"arguments":[{"name":"size","nativeSrc":"403:4:87","nodeType":"YulIdentifier","src":"403:4:87"},{"kind":"number","nativeSrc":"409:2:87","nodeType":"YulLiteral","src":"409:2:87","type":"","value":"31"}],"functionName":{"name":"add","nativeSrc":"399:3:87","nodeType":"YulIdentifier","src":"399:3:87"},"nativeSrc":"399:13:87","nodeType":"YulFunctionCall","src":"399:13:87"},{"arguments":[{"kind":"number","nativeSrc":"418:2:87","nodeType":"YulLiteral","src":"418:2:87","type":"","value":"31"}],"functionName":{"name":"not","nativeSrc":"414:3:87","nodeType":"YulIdentifier","src":"414:3:87"},"nativeSrc":"414:7:87","nodeType":"YulFunctionCall","src":"414:7:87"}],"functionName":{"name":"and","nativeSrc":"395:3:87","nodeType":"YulIdentifier","src":"395:3:87"},"nativeSrc":"395:27:87","nodeType":"YulFunctionCall","src":"395:27:87"}],"functionName":{"name":"add","nativeSrc":"383:3:87","nodeType":"YulIdentifier","src":"383:3:87"},"nativeSrc":"383:40:87","nodeType":"YulFunctionCall","src":"383:40:87"},"variables":[{"name":"newFreePtr","nativeSrc":"369:10:87","nodeType":"YulTypedName","src":"369:10:87","type":""}]},{"body":{"nativeSrc":"498:22:87","nodeType":"YulBlock","src":"498:22:87","statements":[{"expression":{"arguments":[],"functionName":{"name":"panic_error_0x41","nativeSrc":"500:16:87","nodeType":"YulIdentifier","src":"500:16:87"},"nativeSrc":"500:18:87","nodeType":"YulFunctionCall","src":"500:18:87"},"nativeSrc":"500:18:87","nodeType":"YulExpressionStatement","src":"500:18:87"}]},"condition":{"arguments":[{"arguments":[{"name":"newFreePtr","nativeSrc":"441:10:87","nodeType":"YulIdentifier","src":"441:10:87"},{"arguments":[{"arguments":[{"kind":"number","nativeSrc":"461:2:87","nodeType":"YulLiteral","src":"461:2:87","type":"","value":"64"},{"kind":"number","nativeSrc":"465:1:87","nodeType":"YulLiteral","src":"465:1:87","type":"","value":"1"}],"functionName":{"name":"shl","nativeSrc":"457:3:87","nodeType":"YulIdentifier","src":"457:3:87"},"nativeSrc":"457:10:87","nodeType":"YulFunctionCall","src":"457:10:87"},{"kind":"number","nativeSrc":"469:1:87","nodeType":"YulLiteral","src":"469:1:87","type":"","value":"1"}],"functionName":{"name":"sub","nativeSrc":"453:3:87","nodeType":"YulIdentifier","src":"453:3:87"},"nativeSrc":"453:18:87","nodeType":"YulFunctionCall","src":"453:18:87"}],"functionName":{"name":"gt","nativeSrc":"438:2:87","nodeType":"YulIdentifier","src":"438:2:87"},"nativeSrc":"438:34:87","nodeType":"YulFunctionCall","src":"438:34:87"},{"arguments":[{"name":"newFreePtr","nativeSrc":"477:10:87","nodeType":"YulIdentifier","src":"477:10:87"},{"name":"memPtr","nativeSrc":"489:6:87","nodeType":"YulIdentifier","src":"489:6:87"}],"functionName":{"name":"lt","nativeSrc":"474:2:87","nodeType":"YulIdentifier","src":"474:2:87"},"nativeSrc":"474:22:87","nodeType":"YulFunctionCall","src":"474:22:87"}],"functionName":{"name":"or","nativeSrc":"435:2:87","nodeType":"YulIdentifier","src":"435:2:87"},"nativeSrc":"435:62:87","nodeType":"YulFunctionCall","src":"435:62:87"},"nativeSrc":"432:88:87","nodeType":"YulIf","src":"432:88:87"},{"expression":{"arguments":[{"kind":"number","nativeSrc":"536:2:87","nodeType":"YulLiteral","src":"536:2:87","type":"","value":"64"},{"name":"newFreePtr","nativeSrc":"540:10:87","nodeType":"YulIdentifier","src":"540:10:87"}],"functionName":{"name":"mstore","nativeSrc":"529:6:87","nodeType":"YulIdentifier","src":"529:6:87"},"nativeSrc":"529:22:87","nodeType":"YulFunctionCall","src":"529:22:87"},"nativeSrc":"529:22:87","nodeType":"YulExpressionStatement","src":"529:22:87"}]},"name":"allocate_memory","nativeSrc":"282:275:87","nodeType":"YulFunctionDefinition","parameters":[{"name":"size","nativeSrc":"307:4:87","nodeType":"YulTypedName","src":"307:4:87","type":""}],"returnVariables":[{"name":"memPtr","nativeSrc":"316:6:87","nodeType":"YulTypedName","src":"316:6:87","type":""}],"src":"282:275:87"},{"body":{"nativeSrc":"638:78:87","nodeType":"YulBlock","src":"638:78:87","statements":[{"nativeSrc":"648:22:87","nodeType":"YulAssignment","src":"648:22:87","value":{"arguments":[{"name":"offset","nativeSrc":"663:6:87","nodeType":"YulIdentifier","src":"663:6:87"}],"functionName":{"name":"mload","nativeSrc":"657:5:87","nodeType":"YulIdentifier","src":"657:5:87"},"nativeSrc":"657:13:87","nodeType":"YulFunctionCall","src":"657:13:87"},"variableNames":[{"name":"value","nativeSrc":"648:5:87","nodeType":"YulIdentifier","src":"648:5:87"}]},{"expression":{"arguments":[{"name":"value","nativeSrc":"704:5:87","nodeType":"YulIdentifier","src":"704:5:87"}],"functionName":{"name":"validator_revert_address","nativeSrc":"679:24:87","nodeType":"YulIdentifier","src":"679:24:87"},"nativeSrc":"679:31:87","nodeType":"YulFunctionCall","src":"679:31:87"},"nativeSrc":"679:31:87","nodeType":"YulExpressionStatement","src":"679:31:87"}]},"name":"abi_decode_contract_IAccessManager_fromMemory","nativeSrc":"562:154:87","nodeType":"YulFunctionDefinition","parameters":[{"name":"offset","nativeSrc":"617:6:87","nodeType":"YulTypedName","src":"617:6:87","type":""}],"returnVariables":[{"name":"value","nativeSrc":"628:5:87","nodeType":"YulTypedName","src":"628:5:87","type":""}],"src":"562:154:87"},{"body":{"nativeSrc":"795:758:87","nodeType":"YulBlock","src":"795:758:87","statements":[{"body":{"nativeSrc":"844:16:87","nodeType":"YulBlock","src":"844:16:87","statements":[{"expression":{"arguments":[{"kind":"number","nativeSrc":"853:1:87","nodeType":"YulLiteral","src":"853:1:87","type":"","value":"0"},{"kind":"number","nativeSrc":"856:1:87","nodeType":"YulLiteral","src":"856:1:87","type":"","value":"0"}],"functionName":{"name":"revert","nativeSrc":"846:6:87","nodeType":"YulIdentifier","src":"846:6:87"},"nativeSrc":"846:12:87","nodeType":"YulFunctionCall","src":"846:12:87"},"nativeSrc":"846:12:87","nodeType":"YulExpressionStatement","src":"846:12:87"}]},"condition":{"arguments":[{"arguments":[{"arguments":[{"name":"offset","nativeSrc":"823:6:87","nodeType":"YulIdentifier","src":"823:6:87"},{"kind":"number","nativeSrc":"831:4:87","nodeType":"YulLiteral","src":"831:4:87","type":"","value":"0x1f"}],"functionName":{"name":"add","nativeSrc":"819:3:87","nodeType":"YulIdentifier","src":"819:3:87"},"nativeSrc":"819:17:87","nodeType":"YulFunctionCall","src":"819:17:87"},{"name":"end","nativeSrc":"838:3:87","nodeType":"YulIdentifier","src":"838:3:87"}],"functionName":{"name":"slt","nativeSrc":"815:3:87","nodeType":"YulIdentifier","src":"815:3:87"},"nativeSrc":"815:27:87","nodeType":"YulFunctionCall","src":"815:27:87"}],"functionName":{"name":"iszero","nativeSrc":"808:6:87","nodeType":"YulIdentifier","src":"808:6:87"},"nativeSrc":"808:35:87","nodeType":"YulFunctionCall","src":"808:35:87"},"nativeSrc":"805:55:87","nodeType":"YulIf","src":"805:55:87"},{"nativeSrc":"869:27:87","nodeType":"YulVariableDeclaration","src":"869:27:87","value":{"arguments":[{"name":"offset","nativeSrc":"889:6:87","nodeType":"YulIdentifier","src":"889:6:87"}],"functionName":{"name":"mload","nativeSrc":"883:5:87","nodeType":"YulIdentifier","src":"883:5:87"},"nativeSrc":"883:13:87","nodeType":"YulFunctionCall","src":"883:13:87"},"variables":[{"name":"length","nativeSrc":"873:6:87","nodeType":"YulTypedName","src":"873:6:87","type":""}]},{"body":{"nativeSrc":"939:22:87","nodeType":"YulBlock","src":"939:22:87","statements":[{"expression":{"arguments":[],"functionName":{"name":"panic_error_0x41","nativeSrc":"941:16:87","nodeType":"YulIdentifier","src":"941:16:87"},"nativeSrc":"941:18:87","nodeType":"YulFunctionCall","src":"941:18:87"},"nativeSrc":"941:18:87","nodeType":"YulExpressionStatement","src":"941:18:87"}]},"condition":{"arguments":[{"name":"length","nativeSrc":"911:6:87","nodeType":"YulIdentifier","src":"911:6:87"},{"arguments":[{"arguments":[{"kind":"number","nativeSrc":"927:2:87","nodeType":"YulLiteral","src":"927:2:87","type":"","value":"64"},{"kind":"number","nativeSrc":"931:1:87","nodeType":"YulLiteral","src":"931:1:87","type":"","value":"1"}],"functionName":{"name":"shl","nativeSrc":"923:3:87","nodeType":"YulIdentifier","src":"923:3:87"},"nativeSrc":"923:10:87","nodeType":"YulFunctionCall","src":"923:10:87"},{"kind":"number","nativeSrc":"935:1:87","nodeType":"YulLiteral","src":"935:1:87","type":"","value":"1"}],"functionName":{"name":"sub","nativeSrc":"919:3:87","nodeType":"YulIdentifier","src":"919:3:87"},"nativeSrc":"919:18:87","nodeType":"YulFunctionCall","src":"919:18:87"}],"functionName":{"name":"gt","nativeSrc":"908:2:87","nodeType":"YulIdentifier","src":"908:2:87"},"nativeSrc":"908:30:87","nodeType":"YulFunctionCall","src":"908:30:87"},"nativeSrc":"905:56:87","nodeType":"YulIf","src":"905:56:87"},{"nativeSrc":"970:24:87","nodeType":"YulVariableDeclaration","src":"970:24:87","value":{"arguments":[{"kind":"number","nativeSrc":"984:1:87","nodeType":"YulLiteral","src":"984:1:87","type":"","value":"5"},{"name":"length","nativeSrc":"987:6:87","nodeType":"YulIdentifier","src":"987:6:87"}],"functionName":{"name":"shl","nativeSrc":"980:3:87","nodeType":"YulIdentifier","src":"980:3:87"},"nativeSrc":"980:14:87","nodeType":"YulFunctionCall","src":"980:14:87"},"variables":[{"name":"_1","nativeSrc":"974:2:87","nodeType":"YulTypedName","src":"974:2:87","type":""}]},{"nativeSrc":"1003:41:87","nodeType":"YulVariableDeclaration","src":"1003:41:87","value":{"arguments":[{"arguments":[{"name":"_1","nativeSrc":"1034:2:87","nodeType":"YulIdentifier","src":"1034:2:87"},{"kind":"number","nativeSrc":"1038:4:87","nodeType":"YulLiteral","src":"1038:4:87","type":"","value":"0x20"}],"functionName":{"name":"add","nativeSrc":"1030:3:87","nodeType":"YulIdentifier","src":"1030:3:87"},"nativeSrc":"1030:13:87","nodeType":"YulFunctionCall","src":"1030:13:87"}],"functionName":{"name":"allocate_memory","nativeSrc":"1014:15:87","nodeType":"YulIdentifier","src":"1014:15:87"},"nativeSrc":"1014:30:87","nodeType":"YulFunctionCall","src":"1014:30:87"},"variables":[{"name":"dst","nativeSrc":"1007:3:87","nodeType":"YulTypedName","src":"1007:3:87","type":""}]},{"nativeSrc":"1053:18:87","nodeType":"YulVariableDeclaration","src":"1053:18:87","value":{"name":"dst","nativeSrc":"1068:3:87","nodeType":"YulIdentifier","src":"1068:3:87"},"variables":[{"name":"array_1","nativeSrc":"1057:7:87","nodeType":"YulTypedName","src":"1057:7:87","type":""}]},{"expression":{"arguments":[{"name":"dst","nativeSrc":"1087:3:87","nodeType":"YulIdentifier","src":"1087:3:87"},{"name":"length","nativeSrc":"1092:6:87","nodeType":"YulIdentifier","src":"1092:6:87"}],"functionName":{"name":"mstore","nativeSrc":"1080:6:87","nodeType":"YulIdentifier","src":"1080:6:87"},"nativeSrc":"1080:19:87","nodeType":"YulFunctionCall","src":"1080:19:87"},"nativeSrc":"1080:19:87","nodeType":"YulExpressionStatement","src":"1080:19:87"},{"nativeSrc":"1108:21:87","nodeType":"YulAssignment","src":"1108:21:87","value":{"arguments":[{"name":"dst","nativeSrc":"1119:3:87","nodeType":"YulIdentifier","src":"1119:3:87"},{"kind":"number","nativeSrc":"1124:4:87","nodeType":"YulLiteral","src":"1124:4:87","type":"","value":"0x20"}],"functionName":{"name":"add","nativeSrc":"1115:3:87","nodeType":"YulIdentifier","src":"1115:3:87"},"nativeSrc":"1115:14:87","nodeType":"YulFunctionCall","src":"1115:14:87"},"variableNames":[{"name":"dst","nativeSrc":"1108:3:87","nodeType":"YulIdentifier","src":"1108:3:87"}]},{"nativeSrc":"1138:40:87","nodeType":"YulVariableDeclaration","src":"1138:40:87","value":{"arguments":[{"arguments":[{"name":"offset","nativeSrc":"1160:6:87","nodeType":"YulIdentifier","src":"1160:6:87"},{"name":"_1","nativeSrc":"1168:2:87","nodeType":"YulIdentifier","src":"1168:2:87"}],"functionName":{"name":"add","nativeSrc":"1156:3:87","nodeType":"YulIdentifier","src":"1156:3:87"},"nativeSrc":"1156:15:87","nodeType":"YulFunctionCall","src":"1156:15:87"},{"kind":"number","nativeSrc":"1173:4:87","nodeType":"YulLiteral","src":"1173:4:87","type":"","value":"0x20"}],"functionName":{"name":"add","nativeSrc":"1152:3:87","nodeType":"YulIdentifier","src":"1152:3:87"},"nativeSrc":"1152:26:87","nodeType":"YulFunctionCall","src":"1152:26:87"},"variables":[{"name":"srcEnd","nativeSrc":"1142:6:87","nodeType":"YulTypedName","src":"1142:6:87","type":""}]},{"body":{"nativeSrc":"1206:16:87","nodeType":"YulBlock","src":"1206:16:87","statements":[{"expression":{"arguments":[{"kind":"number","nativeSrc":"1215:1:87","nodeType":"YulLiteral","src":"1215:1:87","type":"","value":"0"},{"kind":"number","nativeSrc":"1218:1:87","nodeType":"YulLiteral","src":"1218:1:87","type":"","value":"0"}],"functionName":{"name":"revert","nativeSrc":"1208:6:87","nodeType":"YulIdentifier","src":"1208:6:87"},"nativeSrc":"1208:12:87","nodeType":"YulFunctionCall","src":"1208:12:87"},"nativeSrc":"1208:12:87","nodeType":"YulExpressionStatement","src":"1208:12:87"}]},"condition":{"arguments":[{"name":"srcEnd","nativeSrc":"1193:6:87","nodeType":"YulIdentifier","src":"1193:6:87"},{"name":"end","nativeSrc":"1201:3:87","nodeType":"YulIdentifier","src":"1201:3:87"}],"functionName":{"name":"gt","nativeSrc":"1190:2:87","nodeType":"YulIdentifier","src":"1190:2:87"},"nativeSrc":"1190:15:87","nodeType":"YulFunctionCall","src":"1190:15:87"},"nativeSrc":"1187:35:87","nodeType":"YulIf","src":"1187:35:87"},{"nativeSrc":"1231:28:87","nodeType":"YulVariableDeclaration","src":"1231:28:87","value":{"arguments":[{"name":"offset","nativeSrc":"1246:6:87","nodeType":"YulIdentifier","src":"1246:6:87"},{"kind":"number","nativeSrc":"1254:4:87","nodeType":"YulLiteral","src":"1254:4:87","type":"","value":"0x20"}],"functionName":{"name":"add","nativeSrc":"1242:3:87","nodeType":"YulIdentifier","src":"1242:3:87"},"nativeSrc":"1242:17:87","nodeType":"YulFunctionCall","src":"1242:17:87"},"variables":[{"name":"src","nativeSrc":"1235:3:87","nodeType":"YulTypedName","src":"1235:3:87","type":""}]},{"body":{"nativeSrc":"1326:196:87","nodeType":"YulBlock","src":"1326:196:87","statements":[{"nativeSrc":"1340:23:87","nodeType":"YulVariableDeclaration","src":"1340:23:87","value":{"arguments":[{"name":"src","nativeSrc":"1359:3:87","nodeType":"YulIdentifier","src":"1359:3:87"}],"functionName":{"name":"mload","nativeSrc":"1353:5:87","nodeType":"YulIdentifier","src":"1353:5:87"},"nativeSrc":"1353:10:87","nodeType":"YulFunctionCall","src":"1353:10:87"},"variables":[{"name":"value","nativeSrc":"1344:5:87","nodeType":"YulTypedName","src":"1344:5:87","type":""}]},{"body":{"nativeSrc":"1431:16:87","nodeType":"YulBlock","src":"1431:16:87","statements":[{"expression":{"arguments":[{"kind":"number","nativeSrc":"1440:1:87","nodeType":"YulLiteral","src":"1440:1:87","type":"","value":"0"},{"kind":"number","nativeSrc":"1443:1:87","nodeType":"YulLiteral","src":"1443:1:87","type":"","value":"0"}],"functionName":{"name":"revert","nativeSrc":"1433:6:87","nodeType":"YulIdentifier","src":"1433:6:87"},"nativeSrc":"1433:12:87","nodeType":"YulFunctionCall","src":"1433:12:87"},"nativeSrc":"1433:12:87","nodeType":"YulExpressionStatement","src":"1433:12:87"}]},"condition":{"arguments":[{"arguments":[{"name":"value","nativeSrc":"1389:5:87","nodeType":"YulIdentifier","src":"1389:5:87"},{"arguments":[{"name":"value","nativeSrc":"1400:5:87","nodeType":"YulIdentifier","src":"1400:5:87"},{"arguments":[{"kind":"number","nativeSrc":"1411:3:87","nodeType":"YulLiteral","src":"1411:3:87","type":"","value":"224"},{"kind":"number","nativeSrc":"1416:10:87","nodeType":"YulLiteral","src":"1416:10:87","type":"","value":"0xffffffff"}],"functionName":{"name":"shl","nativeSrc":"1407:3:87","nodeType":"YulIdentifier","src":"1407:3:87"},"nativeSrc":"1407:20:87","nodeType":"YulFunctionCall","src":"1407:20:87"}],"functionName":{"name":"and","nativeSrc":"1396:3:87","nodeType":"YulIdentifier","src":"1396:3:87"},"nativeSrc":"1396:32:87","nodeType":"YulFunctionCall","src":"1396:32:87"}],"functionName":{"name":"eq","nativeSrc":"1386:2:87","nodeType":"YulIdentifier","src":"1386:2:87"},"nativeSrc":"1386:43:87","nodeType":"YulFunctionCall","src":"1386:43:87"}],"functionName":{"name":"iszero","nativeSrc":"1379:6:87","nodeType":"YulIdentifier","src":"1379:6:87"},"nativeSrc":"1379:51:87","nodeType":"YulFunctionCall","src":"1379:51:87"},"nativeSrc":"1376:71:87","nodeType":"YulIf","src":"1376:71:87"},{"expression":{"arguments":[{"name":"dst","nativeSrc":"1467:3:87","nodeType":"YulIdentifier","src":"1467:3:87"},{"name":"value","nativeSrc":"1472:5:87","nodeType":"YulIdentifier","src":"1472:5:87"}],"functionName":{"name":"mstore","nativeSrc":"1460:6:87","nodeType":"YulIdentifier","src":"1460:6:87"},"nativeSrc":"1460:18:87","nodeType":"YulFunctionCall","src":"1460:18:87"},"nativeSrc":"1460:18:87","nodeType":"YulExpressionStatement","src":"1460:18:87"},{"nativeSrc":"1491:21:87","nodeType":"YulAssignment","src":"1491:21:87","value":{"arguments":[{"name":"dst","nativeSrc":"1502:3:87","nodeType":"YulIdentifier","src":"1502:3:87"},{"kind":"number","nativeSrc":"1507:4:87","nodeType":"YulLiteral","src":"1507:4:87","type":"","value":"0x20"}],"functionName":{"name":"add","nativeSrc":"1498:3:87","nodeType":"YulIdentifier","src":"1498:3:87"},"nativeSrc":"1498:14:87","nodeType":"YulFunctionCall","src":"1498:14:87"},"variableNames":[{"name":"dst","nativeSrc":"1491:3:87","nodeType":"YulIdentifier","src":"1491:3:87"}]}]},"condition":{"arguments":[{"name":"src","nativeSrc":"1279:3:87","nodeType":"YulIdentifier","src":"1279:3:87"},{"name":"srcEnd","nativeSrc":"1284:6:87","nodeType":"YulIdentifier","src":"1284:6:87"}],"functionName":{"name":"lt","nativeSrc":"1276:2:87","nodeType":"YulIdentifier","src":"1276:2:87"},"nativeSrc":"1276:15:87","nodeType":"YulFunctionCall","src":"1276:15:87"},"nativeSrc":"1268:254:87","nodeType":"YulForLoop","post":{"nativeSrc":"1292:25:87","nodeType":"YulBlock","src":"1292:25:87","statements":[{"nativeSrc":"1294:21:87","nodeType":"YulAssignment","src":"1294:21:87","value":{"arguments":[{"name":"src","nativeSrc":"1305:3:87","nodeType":"YulIdentifier","src":"1305:3:87"},{"kind":"number","nativeSrc":"1310:4:87","nodeType":"YulLiteral","src":"1310:4:87","type":"","value":"0x20"}],"functionName":{"name":"add","nativeSrc":"1301:3:87","nodeType":"YulIdentifier","src":"1301:3:87"},"nativeSrc":"1301:14:87","nodeType":"YulFunctionCall","src":"1301:14:87"},"variableNames":[{"name":"src","nativeSrc":"1294:3:87","nodeType":"YulIdentifier","src":"1294:3:87"}]}]},"pre":{"nativeSrc":"1272:3:87","nodeType":"YulBlock","src":"1272:3:87","statements":[]},"src":"1268:254:87"},{"nativeSrc":"1531:16:87","nodeType":"YulAssignment","src":"1531:16:87","value":{"name":"array_1","nativeSrc":"1540:7:87","nodeType":"YulIdentifier","src":"1540:7:87"},"variableNames":[{"name":"array","nativeSrc":"1531:5:87","nodeType":"YulIdentifier","src":"1531:5:87"}]}]},"name":"abi_decode_array_bytes4_dyn_fromMemory","nativeSrc":"721:832:87","nodeType":"YulFunctionDefinition","parameters":[{"name":"offset","nativeSrc":"769:6:87","nodeType":"YulTypedName","src":"769:6:87","type":""},{"name":"end","nativeSrc":"777:3:87","nodeType":"YulTypedName","src":"777:3:87","type":""}],"returnVariables":[{"name":"array","nativeSrc":"785:5:87","nodeType":"YulTypedName","src":"785:5:87","type":""}],"src":"721:832:87"},{"body":{"nativeSrc":"1746:1064:87","nodeType":"YulBlock","src":"1746:1064:87","statements":[{"body":{"nativeSrc":"1793:16:87","nodeType":"YulBlock","src":"1793:16:87","statements":[{"expression":{"arguments":[{"kind":"number","nativeSrc":"1802:1:87","nodeType":"YulLiteral","src":"1802:1:87","type":"","value":"0"},{"kind":"number","nativeSrc":"1805:1:87","nodeType":"YulLiteral","src":"1805:1:87","type":"","value":"0"}],"functionName":{"name":"revert","nativeSrc":"1795:6:87","nodeType":"YulIdentifier","src":"1795:6:87"},"nativeSrc":"1795:12:87","nodeType":"YulFunctionCall","src":"1795:12:87"},"nativeSrc":"1795:12:87","nodeType":"YulExpressionStatement","src":"1795:12:87"}]},"condition":{"arguments":[{"arguments":[{"name":"dataEnd","nativeSrc":"1767:7:87","nodeType":"YulIdentifier","src":"1767:7:87"},{"name":"headStart","nativeSrc":"1776:9:87","nodeType":"YulIdentifier","src":"1776:9:87"}],"functionName":{"name":"sub","nativeSrc":"1763:3:87","nodeType":"YulIdentifier","src":"1763:3:87"},"nativeSrc":"1763:23:87","nodeType":"YulFunctionCall","src":"1763:23:87"},{"kind":"number","nativeSrc":"1788:3:87","nodeType":"YulLiteral","src":"1788:3:87","type":"","value":"128"}],"functionName":{"name":"slt","nativeSrc":"1759:3:87","nodeType":"YulIdentifier","src":"1759:3:87"},"nativeSrc":"1759:33:87","nodeType":"YulFunctionCall","src":"1759:33:87"},"nativeSrc":"1756:53:87","nodeType":"YulIf","src":"1756:53:87"},{"nativeSrc":"1818:29:87","nodeType":"YulVariableDeclaration","src":"1818:29:87","value":{"arguments":[{"name":"headStart","nativeSrc":"1837:9:87","nodeType":"YulIdentifier","src":"1837:9:87"}],"functionName":{"name":"mload","nativeSrc":"1831:5:87","nodeType":"YulIdentifier","src":"1831:5:87"},"nativeSrc":"1831:16:87","nodeType":"YulFunctionCall","src":"1831:16:87"},"variables":[{"name":"value","nativeSrc":"1822:5:87","nodeType":"YulTypedName","src":"1822:5:87","type":""}]},{"expression":{"arguments":[{"name":"value","nativeSrc":"1881:5:87","nodeType":"YulIdentifier","src":"1881:5:87"}],"functionName":{"name":"validator_revert_address","nativeSrc":"1856:24:87","nodeType":"YulIdentifier","src":"1856:24:87"},"nativeSrc":"1856:31:87","nodeType":"YulFunctionCall","src":"1856:31:87"},"nativeSrc":"1856:31:87","nodeType":"YulExpressionStatement","src":"1856:31:87"},{"nativeSrc":"1896:15:87","nodeType":"YulAssignment","src":"1896:15:87","value":{"name":"value","nativeSrc":"1906:5:87","nodeType":"YulIdentifier","src":"1906:5:87"},"variableNames":[{"name":"value0","nativeSrc":"1896:6:87","nodeType":"YulIdentifier","src":"1896:6:87"}]},{"nativeSrc":"1920:39:87","nodeType":"YulVariableDeclaration","src":"1920:39:87","value":{"arguments":[{"arguments":[{"name":"headStart","nativeSrc":"1944:9:87","nodeType":"YulIdentifier","src":"1944:9:87"},{"kind":"number","nativeSrc":"1955:2:87","nodeType":"YulLiteral","src":"1955:2:87","type":"","value":"32"}],"functionName":{"name":"add","nativeSrc":"1940:3:87","nodeType":"YulIdentifier","src":"1940:3:87"},"nativeSrc":"1940:18:87","nodeType":"YulFunctionCall","src":"1940:18:87"}],"functionName":{"name":"mload","nativeSrc":"1934:5:87","nodeType":"YulIdentifier","src":"1934:5:87"},"nativeSrc":"1934:25:87","nodeType":"YulFunctionCall","src":"1934:25:87"},"variables":[{"name":"offset","nativeSrc":"1924:6:87","nodeType":"YulTypedName","src":"1924:6:87","type":""}]},{"body":{"nativeSrc":"2002:16:87","nodeType":"YulBlock","src":"2002:16:87","statements":[{"expression":{"arguments":[{"kind":"number","nativeSrc":"2011:1:87","nodeType":"YulLiteral","src":"2011:1:87","type":"","value":"0"},{"kind":"number","nativeSrc":"2014:1:87","nodeType":"YulLiteral","src":"2014:1:87","type":"","value":"0"}],"functionName":{"name":"revert","nativeSrc":"2004:6:87","nodeType":"YulIdentifier","src":"2004:6:87"},"nativeSrc":"2004:12:87","nodeType":"YulFunctionCall","src":"2004:12:87"},"nativeSrc":"2004:12:87","nodeType":"YulExpressionStatement","src":"2004:12:87"}]},"condition":{"arguments":[{"name":"offset","nativeSrc":"1974:6:87","nodeType":"YulIdentifier","src":"1974:6:87"},{"arguments":[{"arguments":[{"kind":"number","nativeSrc":"1990:2:87","nodeType":"YulLiteral","src":"1990:2:87","type":"","value":"64"},{"kind":"number","nativeSrc":"1994:1:87","nodeType":"YulLiteral","src":"1994:1:87","type":"","value":"1"}],"functionName":{"name":"shl","nativeSrc":"1986:3:87","nodeType":"YulIdentifier","src":"1986:3:87"},"nativeSrc":"1986:10:87","nodeType":"YulFunctionCall","src":"1986:10:87"},{"kind":"number","nativeSrc":"1998:1:87","nodeType":"YulLiteral","src":"1998:1:87","type":"","value":"1"}],"functionName":{"name":"sub","nativeSrc":"1982:3:87","nodeType":"YulIdentifier","src":"1982:3:87"},"nativeSrc":"1982:18:87","nodeType":"YulFunctionCall","src":"1982:18:87"}],"functionName":{"name":"gt","nativeSrc":"1971:2:87","nodeType":"YulIdentifier","src":"1971:2:87"},"nativeSrc":"1971:30:87","nodeType":"YulFunctionCall","src":"1971:30:87"},"nativeSrc":"1968:50:87","nodeType":"YulIf","src":"1968:50:87"},{"nativeSrc":"2027:32:87","nodeType":"YulVariableDeclaration","src":"2027:32:87","value":{"arguments":[{"name":"headStart","nativeSrc":"2041:9:87","nodeType":"YulIdentifier","src":"2041:9:87"},{"name":"offset","nativeSrc":"2052:6:87","nodeType":"YulIdentifier","src":"2052:6:87"}],"functionName":{"name":"add","nativeSrc":"2037:3:87","nodeType":"YulIdentifier","src":"2037:3:87"},"nativeSrc":"2037:22:87","nodeType":"YulFunctionCall","src":"2037:22:87"},"variables":[{"name":"_1","nativeSrc":"2031:2:87","nodeType":"YulTypedName","src":"2031:2:87","type":""}]},{"body":{"nativeSrc":"2107:16:87","nodeType":"YulBlock","src":"2107:16:87","statements":[{"expression":{"arguments":[{"kind":"number","nativeSrc":"2116:1:87","nodeType":"YulLiteral","src":"2116:1:87","type":"","value":"0"},{"kind":"number","nativeSrc":"2119:1:87","nodeType":"YulLiteral","src":"2119:1:87","type":"","value":"0"}],"functionName":{"name":"revert","nativeSrc":"2109:6:87","nodeType":"YulIdentifier","src":"2109:6:87"},"nativeSrc":"2109:12:87","nodeType":"YulFunctionCall","src":"2109:12:87"},"nativeSrc":"2109:12:87","nodeType":"YulExpressionStatement","src":"2109:12:87"}]},"condition":{"arguments":[{"arguments":[{"arguments":[{"name":"_1","nativeSrc":"2086:2:87","nodeType":"YulIdentifier","src":"2086:2:87"},{"kind":"number","nativeSrc":"2090:4:87","nodeType":"YulLiteral","src":"2090:4:87","type":"","value":"0x1f"}],"functionName":{"name":"add","nativeSrc":"2082:3:87","nodeType":"YulIdentifier","src":"2082:3:87"},"nativeSrc":"2082:13:87","nodeType":"YulFunctionCall","src":"2082:13:87"},{"name":"dataEnd","nativeSrc":"2097:7:87","nodeType":"YulIdentifier","src":"2097:7:87"}],"functionName":{"name":"slt","nativeSrc":"2078:3:87","nodeType":"YulIdentifier","src":"2078:3:87"},"nativeSrc":"2078:27:87","nodeType":"YulFunctionCall","src":"2078:27:87"}],"functionName":{"name":"iszero","nativeSrc":"2071:6:87","nodeType":"YulIdentifier","src":"2071:6:87"},"nativeSrc":"2071:35:87","nodeType":"YulFunctionCall","src":"2071:35:87"},"nativeSrc":"2068:55:87","nodeType":"YulIf","src":"2068:55:87"},{"nativeSrc":"2132:23:87","nodeType":"YulVariableDeclaration","src":"2132:23:87","value":{"arguments":[{"name":"_1","nativeSrc":"2152:2:87","nodeType":"YulIdentifier","src":"2152:2:87"}],"functionName":{"name":"mload","nativeSrc":"2146:5:87","nodeType":"YulIdentifier","src":"2146:5:87"},"nativeSrc":"2146:9:87","nodeType":"YulFunctionCall","src":"2146:9:87"},"variables":[{"name":"length","nativeSrc":"2136:6:87","nodeType":"YulTypedName","src":"2136:6:87","type":""}]},{"body":{"nativeSrc":"2198:22:87","nodeType":"YulBlock","src":"2198:22:87","statements":[{"expression":{"arguments":[],"functionName":{"name":"panic_error_0x41","nativeSrc":"2200:16:87","nodeType":"YulIdentifier","src":"2200:16:87"},"nativeSrc":"2200:18:87","nodeType":"YulFunctionCall","src":"2200:18:87"},"nativeSrc":"2200:18:87","nodeType":"YulExpressionStatement","src":"2200:18:87"}]},"condition":{"arguments":[{"name":"length","nativeSrc":"2170:6:87","nodeType":"YulIdentifier","src":"2170:6:87"},{"arguments":[{"arguments":[{"kind":"number","nativeSrc":"2186:2:87","nodeType":"YulLiteral","src":"2186:2:87","type":"","value":"64"},{"kind":"number","nativeSrc":"2190:1:87","nodeType":"YulLiteral","src":"2190:1:87","type":"","value":"1"}],"functionName":{"name":"shl","nativeSrc":"2182:3:87","nodeType":"YulIdentifier","src":"2182:3:87"},"nativeSrc":"2182:10:87","nodeType":"YulFunctionCall","src":"2182:10:87"},{"kind":"number","nativeSrc":"2194:1:87","nodeType":"YulLiteral","src":"2194:1:87","type":"","value":"1"}],"functionName":{"name":"sub","nativeSrc":"2178:3:87","nodeType":"YulIdentifier","src":"2178:3:87"},"nativeSrc":"2178:18:87","nodeType":"YulFunctionCall","src":"2178:18:87"}],"functionName":{"name":"gt","nativeSrc":"2167:2:87","nodeType":"YulIdentifier","src":"2167:2:87"},"nativeSrc":"2167:30:87","nodeType":"YulFunctionCall","src":"2167:30:87"},"nativeSrc":"2164:56:87","nodeType":"YulIf","src":"2164:56:87"},{"nativeSrc":"2229:70:87","nodeType":"YulVariableDeclaration","src":"2229:70:87","value":{"arguments":[{"arguments":[{"arguments":[{"arguments":[{"name":"length","nativeSrc":"2270:6:87","nodeType":"YulIdentifier","src":"2270:6:87"},{"kind":"number","nativeSrc":"2278:4:87","nodeType":"YulLiteral","src":"2278:4:87","type":"","value":"0x1f"}],"functionName":{"name":"add","nativeSrc":"2266:3:87","nodeType":"YulIdentifier","src":"2266:3:87"},"nativeSrc":"2266:17:87","nodeType":"YulFunctionCall","src":"2266:17:87"},{"arguments":[{"kind":"number","nativeSrc":"2289:2:87","nodeType":"YulLiteral","src":"2289:2:87","type":"","value":"31"}],"functionName":{"name":"not","nativeSrc":"2285:3:87","nodeType":"YulIdentifier","src":"2285:3:87"},"nativeSrc":"2285:7:87","nodeType":"YulFunctionCall","src":"2285:7:87"}],"functionName":{"name":"and","nativeSrc":"2262:3:87","nodeType":"YulIdentifier","src":"2262:3:87"},"nativeSrc":"2262:31:87","nodeType":"YulFunctionCall","src":"2262:31:87"},{"kind":"number","nativeSrc":"2295:2:87","nodeType":"YulLiteral","src":"2295:2:87","type":"","value":"32"}],"functionName":{"name":"add","nativeSrc":"2258:3:87","nodeType":"YulIdentifier","src":"2258:3:87"},"nativeSrc":"2258:40:87","nodeType":"YulFunctionCall","src":"2258:40:87"}],"functionName":{"name":"allocate_memory","nativeSrc":"2242:15:87","nodeType":"YulIdentifier","src":"2242:15:87"},"nativeSrc":"2242:57:87","nodeType":"YulFunctionCall","src":"2242:57:87"},"variables":[{"name":"array","nativeSrc":"2233:5:87","nodeType":"YulTypedName","src":"2233:5:87","type":""}]},{"expression":{"arguments":[{"name":"array","nativeSrc":"2315:5:87","nodeType":"YulIdentifier","src":"2315:5:87"},{"name":"length","nativeSrc":"2322:6:87","nodeType":"YulIdentifier","src":"2322:6:87"}],"functionName":{"name":"mstore","nativeSrc":"2308:6:87","nodeType":"YulIdentifier","src":"2308:6:87"},"nativeSrc":"2308:21:87","nodeType":"YulFunctionCall","src":"2308:21:87"},"nativeSrc":"2308:21:87","nodeType":"YulExpressionStatement","src":"2308:21:87"},{"body":{"nativeSrc":"2379:16:87","nodeType":"YulBlock","src":"2379:16:87","statements":[{"expression":{"arguments":[{"kind":"number","nativeSrc":"2388:1:87","nodeType":"YulLiteral","src":"2388:1:87","type":"","value":"0"},{"kind":"number","nativeSrc":"2391:1:87","nodeType":"YulLiteral","src":"2391:1:87","type":"","value":"0"}],"functionName":{"name":"revert","nativeSrc":"2381:6:87","nodeType":"YulIdentifier","src":"2381:6:87"},"nativeSrc":"2381:12:87","nodeType":"YulFunctionCall","src":"2381:12:87"},"nativeSrc":"2381:12:87","nodeType":"YulExpressionStatement","src":"2381:12:87"}]},"condition":{"arguments":[{"arguments":[{"arguments":[{"name":"_1","nativeSrc":"2352:2:87","nodeType":"YulIdentifier","src":"2352:2:87"},{"name":"length","nativeSrc":"2356:6:87","nodeType":"YulIdentifier","src":"2356:6:87"}],"functionName":{"name":"add","nativeSrc":"2348:3:87","nodeType":"YulIdentifier","src":"2348:3:87"},"nativeSrc":"2348:15:87","nodeType":"YulFunctionCall","src":"2348:15:87"},{"kind":"number","nativeSrc":"2365:2:87","nodeType":"YulLiteral","src":"2365:2:87","type":"","value":"32"}],"functionName":{"name":"add","nativeSrc":"2344:3:87","nodeType":"YulIdentifier","src":"2344:3:87"},"nativeSrc":"2344:24:87","nodeType":"YulFunctionCall","src":"2344:24:87"},{"name":"dataEnd","nativeSrc":"2370:7:87","nodeType":"YulIdentifier","src":"2370:7:87"}],"functionName":{"name":"gt","nativeSrc":"2341:2:87","nodeType":"YulIdentifier","src":"2341:2:87"},"nativeSrc":"2341:37:87","nodeType":"YulFunctionCall","src":"2341:37:87"},"nativeSrc":"2338:57:87","nodeType":"YulIf","src":"2338:57:87"},{"expression":{"arguments":[{"arguments":[{"name":"array","nativeSrc":"2414:5:87","nodeType":"YulIdentifier","src":"2414:5:87"},{"kind":"number","nativeSrc":"2421:2:87","nodeType":"YulLiteral","src":"2421:2:87","type":"","value":"32"}],"functionName":{"name":"add","nativeSrc":"2410:3:87","nodeType":"YulIdentifier","src":"2410:3:87"},"nativeSrc":"2410:14:87","nodeType":"YulFunctionCall","src":"2410:14:87"},{"arguments":[{"name":"_1","nativeSrc":"2430:2:87","nodeType":"YulIdentifier","src":"2430:2:87"},{"kind":"number","nativeSrc":"2434:2:87","nodeType":"YulLiteral","src":"2434:2:87","type":"","value":"32"}],"functionName":{"name":"add","nativeSrc":"2426:3:87","nodeType":"YulIdentifier","src":"2426:3:87"},"nativeSrc":"2426:11:87","nodeType":"YulFunctionCall","src":"2426:11:87"},{"name":"length","nativeSrc":"2439:6:87","nodeType":"YulIdentifier","src":"2439:6:87"}],"functionName":{"name":"mcopy","nativeSrc":"2404:5:87","nodeType":"YulIdentifier","src":"2404:5:87"},"nativeSrc":"2404:42:87","nodeType":"YulFunctionCall","src":"2404:42:87"},"nativeSrc":"2404:42:87","nodeType":"YulExpressionStatement","src":"2404:42:87"},{"expression":{"arguments":[{"arguments":[{"arguments":[{"name":"array","nativeSrc":"2470:5:87","nodeType":"YulIdentifier","src":"2470:5:87"},{"name":"length","nativeSrc":"2477:6:87","nodeType":"YulIdentifier","src":"2477:6:87"}],"functionName":{"name":"add","nativeSrc":"2466:3:87","nodeType":"YulIdentifier","src":"2466:3:87"},"nativeSrc":"2466:18:87","nodeType":"YulFunctionCall","src":"2466:18:87"},{"kind":"number","nativeSrc":"2486:2:87","nodeType":"YulLiteral","src":"2486:2:87","type":"","value":"32"}],"functionName":{"name":"add","nativeSrc":"2462:3:87","nodeType":"YulIdentifier","src":"2462:3:87"},"nativeSrc":"2462:27:87","nodeType":"YulFunctionCall","src":"2462:27:87"},{"kind":"number","nativeSrc":"2491:1:87","nodeType":"YulLiteral","src":"2491:1:87","type":"","value":"0"}],"functionName":{"name":"mstore","nativeSrc":"2455:6:87","nodeType":"YulIdentifier","src":"2455:6:87"},"nativeSrc":"2455:38:87","nodeType":"YulFunctionCall","src":"2455:38:87"},"nativeSrc":"2455:38:87","nodeType":"YulExpressionStatement","src":"2455:38:87"},{"nativeSrc":"2502:15:87","nodeType":"YulAssignment","src":"2502:15:87","value":{"name":"array","nativeSrc":"2512:5:87","nodeType":"YulIdentifier","src":"2512:5:87"},"variableNames":[{"name":"value1","nativeSrc":"2502:6:87","nodeType":"YulIdentifier","src":"2502:6:87"}]},{"nativeSrc":"2526:75:87","nodeType":"YulAssignment","src":"2526:75:87","value":{"arguments":[{"arguments":[{"name":"headStart","nativeSrc":"2586:9:87","nodeType":"YulIdentifier","src":"2586:9:87"},{"kind":"number","nativeSrc":"2597:2:87","nodeType":"YulLiteral","src":"2597:2:87","type":"","value":"64"}],"functionName":{"name":"add","nativeSrc":"2582:3:87","nodeType":"YulIdentifier","src":"2582:3:87"},"nativeSrc":"2582:18:87","nodeType":"YulFunctionCall","src":"2582:18:87"}],"functionName":{"name":"abi_decode_contract_IAccessManager_fromMemory","nativeSrc":"2536:45:87","nodeType":"YulIdentifier","src":"2536:45:87"},"nativeSrc":"2536:65:87","nodeType":"YulFunctionCall","src":"2536:65:87"},"variableNames":[{"name":"value2","nativeSrc":"2526:6:87","nodeType":"YulIdentifier","src":"2526:6:87"}]},{"nativeSrc":"2610:41:87","nodeType":"YulVariableDeclaration","src":"2610:41:87","value":{"arguments":[{"arguments":[{"name":"headStart","nativeSrc":"2636:9:87","nodeType":"YulIdentifier","src":"2636:9:87"},{"kind":"number","nativeSrc":"2647:2:87","nodeType":"YulLiteral","src":"2647:2:87","type":"","value":"96"}],"functionName":{"name":"add","nativeSrc":"2632:3:87","nodeType":"YulIdentifier","src":"2632:3:87"},"nativeSrc":"2632:18:87","nodeType":"YulFunctionCall","src":"2632:18:87"}],"functionName":{"name":"mload","nativeSrc":"2626:5:87","nodeType":"YulIdentifier","src":"2626:5:87"},"nativeSrc":"2626:25:87","nodeType":"YulFunctionCall","src":"2626:25:87"},"variables":[{"name":"offset_1","nativeSrc":"2614:8:87","nodeType":"YulTypedName","src":"2614:8:87","type":""}]},{"body":{"nativeSrc":"2696:16:87","nodeType":"YulBlock","src":"2696:16:87","statements":[{"expression":{"arguments":[{"kind":"number","nativeSrc":"2705:1:87","nodeType":"YulLiteral","src":"2705:1:87","type":"","value":"0"},{"kind":"number","nativeSrc":"2708:1:87","nodeType":"YulLiteral","src":"2708:1:87","type":"","value":"0"}],"functionName":{"name":"revert","nativeSrc":"2698:6:87","nodeType":"YulIdentifier","src":"2698:6:87"},"nativeSrc":"2698:12:87","nodeType":"YulFunctionCall","src":"2698:12:87"},"nativeSrc":"2698:12:87","nodeType":"YulExpressionStatement","src":"2698:12:87"}]},"condition":{"arguments":[{"name":"offset_1","nativeSrc":"2666:8:87","nodeType":"YulIdentifier","src":"2666:8:87"},{"arguments":[{"arguments":[{"kind":"number","nativeSrc":"2684:2:87","nodeType":"YulLiteral","src":"2684:2:87","type":"","value":"64"},{"kind":"number","nativeSrc":"2688:1:87","nodeType":"YulLiteral","src":"2688:1:87","type":"","value":"1"}],"functionName":{"name":"shl","nativeSrc":"2680:3:87","nodeType":"YulIdentifier","src":"2680:3:87"},"nativeSrc":"2680:10:87","nodeType":"YulFunctionCall","src":"2680:10:87"},{"kind":"number","nativeSrc":"2692:1:87","nodeType":"YulLiteral","src":"2692:1:87","type":"","value":"1"}],"functionName":{"name":"sub","nativeSrc":"2676:3:87","nodeType":"YulIdentifier","src":"2676:3:87"},"nativeSrc":"2676:18:87","nodeType":"YulFunctionCall","src":"2676:18:87"}],"functionName":{"name":"gt","nativeSrc":"2663:2:87","nodeType":"YulIdentifier","src":"2663:2:87"},"nativeSrc":"2663:32:87","nodeType":"YulFunctionCall","src":"2663:32:87"},"nativeSrc":"2660:52:87","nodeType":"YulIf","src":"2660:52:87"},{"nativeSrc":"2721:83:87","nodeType":"YulAssignment","src":"2721:83:87","value":{"arguments":[{"arguments":[{"name":"headStart","nativeSrc":"2774:9:87","nodeType":"YulIdentifier","src":"2774:9:87"},{"name":"offset_1","nativeSrc":"2785:8:87","nodeType":"YulIdentifier","src":"2785:8:87"}],"functionName":{"name":"add","nativeSrc":"2770:3:87","nodeType":"YulIdentifier","src":"2770:3:87"},"nativeSrc":"2770:24:87","nodeType":"YulFunctionCall","src":"2770:24:87"},{"name":"dataEnd","nativeSrc":"2796:7:87","nodeType":"YulIdentifier","src":"2796:7:87"}],"functionName":{"name":"abi_decode_array_bytes4_dyn_fromMemory","nativeSrc":"2731:38:87","nodeType":"YulIdentifier","src":"2731:38:87"},"nativeSrc":"2731:73:87","nodeType":"YulFunctionCall","src":"2731:73:87"},"variableNames":[{"name":"value3","nativeSrc":"2721:6:87","nodeType":"YulIdentifier","src":"2721:6:87"}]}]},"name":"abi_decode_tuple_t_addresst_bytes_memory_ptrt_contract$_IAccessManager_$6842t_array$_t_bytes4_$dyn_memory_ptr_fromMemory","nativeSrc":"1558:1252:87","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nativeSrc":"1688:9:87","nodeType":"YulTypedName","src":"1688:9:87","type":""},{"name":"dataEnd","nativeSrc":"1699:7:87","nodeType":"YulTypedName","src":"1699:7:87","type":""}],"returnVariables":[{"name":"value0","nativeSrc":"1711:6:87","nodeType":"YulTypedName","src":"1711:6:87","type":""},{"name":"value1","nativeSrc":"1719:6:87","nodeType":"YulTypedName","src":"1719:6:87","type":""},{"name":"value2","nativeSrc":"1727:6:87","nodeType":"YulTypedName","src":"1727:6:87","type":""},{"name":"value3","nativeSrc":"1735:6:87","nodeType":"YulTypedName","src":"1735:6:87","type":""}],"src":"1558:1252:87"},{"body":{"nativeSrc":"2916:102:87","nodeType":"YulBlock","src":"2916:102:87","statements":[{"nativeSrc":"2926:26:87","nodeType":"YulAssignment","src":"2926:26:87","value":{"arguments":[{"name":"headStart","nativeSrc":"2938:9:87","nodeType":"YulIdentifier","src":"2938:9:87"},{"kind":"number","nativeSrc":"2949:2:87","nodeType":"YulLiteral","src":"2949:2:87","type":"","value":"32"}],"functionName":{"name":"add","nativeSrc":"2934:3:87","nodeType":"YulIdentifier","src":"2934:3:87"},"nativeSrc":"2934:18:87","nodeType":"YulFunctionCall","src":"2934:18:87"},"variableNames":[{"name":"tail","nativeSrc":"2926:4:87","nodeType":"YulIdentifier","src":"2926:4:87"}]},{"expression":{"arguments":[{"name":"headStart","nativeSrc":"2968:9:87","nodeType":"YulIdentifier","src":"2968:9:87"},{"arguments":[{"name":"value0","nativeSrc":"2983:6:87","nodeType":"YulIdentifier","src":"2983:6:87"},{"arguments":[{"arguments":[{"kind":"number","nativeSrc":"2999:3:87","nodeType":"YulLiteral","src":"2999:3:87","type":"","value":"160"},{"kind":"number","nativeSrc":"3004:1:87","nodeType":"YulLiteral","src":"3004:1:87","type":"","value":"1"}],"functionName":{"name":"shl","nativeSrc":"2995:3:87","nodeType":"YulIdentifier","src":"2995:3:87"},"nativeSrc":"2995:11:87","nodeType":"YulFunctionCall","src":"2995:11:87"},{"kind":"number","nativeSrc":"3008:1:87","nodeType":"YulLiteral","src":"3008:1:87","type":"","value":"1"}],"functionName":{"name":"sub","nativeSrc":"2991:3:87","nodeType":"YulIdentifier","src":"2991:3:87"},"nativeSrc":"2991:19:87","nodeType":"YulFunctionCall","src":"2991:19:87"}],"functionName":{"name":"and","nativeSrc":"2979:3:87","nodeType":"YulIdentifier","src":"2979:3:87"},"nativeSrc":"2979:32:87","nodeType":"YulFunctionCall","src":"2979:32:87"}],"functionName":{"name":"mstore","nativeSrc":"2961:6:87","nodeType":"YulIdentifier","src":"2961:6:87"},"nativeSrc":"2961:51:87","nodeType":"YulFunctionCall","src":"2961:51:87"},"nativeSrc":"2961:51:87","nodeType":"YulExpressionStatement","src":"2961:51:87"}]},"name":"abi_encode_tuple_t_address__to_t_address__fromStack_reversed","nativeSrc":"2815:203:87","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nativeSrc":"2885:9:87","nodeType":"YulTypedName","src":"2885:9:87","type":""},{"name":"value0","nativeSrc":"2896:6:87","nodeType":"YulTypedName","src":"2896:6:87","type":""}],"returnVariables":[{"name":"tail","nativeSrc":"2907:4:87","nodeType":"YulTypedName","src":"2907:4:87","type":""}],"src":"2815:203:87"},{"body":{"nativeSrc":"3055:95:87","nodeType":"YulBlock","src":"3055:95:87","statements":[{"expression":{"arguments":[{"kind":"number","nativeSrc":"3072:1:87","nodeType":"YulLiteral","src":"3072:1:87","type":"","value":"0"},{"arguments":[{"kind":"number","nativeSrc":"3079:3:87","nodeType":"YulLiteral","src":"3079:3:87","type":"","value":"224"},{"kind":"number","nativeSrc":"3084:10:87","nodeType":"YulLiteral","src":"3084:10:87","type":"","value":"0x4e487b71"}],"functionName":{"name":"shl","nativeSrc":"3075:3:87","nodeType":"YulIdentifier","src":"3075:3:87"},"nativeSrc":"3075:20:87","nodeType":"YulFunctionCall","src":"3075:20:87"}],"functionName":{"name":"mstore","nativeSrc":"3065:6:87","nodeType":"YulIdentifier","src":"3065:6:87"},"nativeSrc":"3065:31:87","nodeType":"YulFunctionCall","src":"3065:31:87"},"nativeSrc":"3065:31:87","nodeType":"YulExpressionStatement","src":"3065:31:87"},{"expression":{"arguments":[{"kind":"number","nativeSrc":"3112:1:87","nodeType":"YulLiteral","src":"3112:1:87","type":"","value":"4"},{"kind":"number","nativeSrc":"3115:4:87","nodeType":"YulLiteral","src":"3115:4:87","type":"","value":"0x32"}],"functionName":{"name":"mstore","nativeSrc":"3105:6:87","nodeType":"YulIdentifier","src":"3105:6:87"},"nativeSrc":"3105:15:87","nodeType":"YulFunctionCall","src":"3105:15:87"},"nativeSrc":"3105:15:87","nodeType":"YulExpressionStatement","src":"3105:15:87"},{"expression":{"arguments":[{"kind":"number","nativeSrc":"3136:1:87","nodeType":"YulLiteral","src":"3136:1:87","type":"","value":"0"},{"kind":"number","nativeSrc":"3139:4:87","nodeType":"YulLiteral","src":"3139:4:87","type":"","value":"0x24"}],"functionName":{"name":"revert","nativeSrc":"3129:6:87","nodeType":"YulIdentifier","src":"3129:6:87"},"nativeSrc":"3129:15:87","nodeType":"YulFunctionCall","src":"3129:15:87"},"nativeSrc":"3129:15:87","nodeType":"YulExpressionStatement","src":"3129:15:87"}]},"name":"panic_error_0x32","nativeSrc":"3023:127:87","nodeType":"YulFunctionDefinition","src":"3023:127:87"},{"body":{"nativeSrc":"3304:487:87","nodeType":"YulBlock","src":"3304:487:87","statements":[{"nativeSrc":"3314:32:87","nodeType":"YulVariableDeclaration","src":"3314:32:87","value":{"arguments":[{"name":"headStart","nativeSrc":"3332:9:87","nodeType":"YulIdentifier","src":"3332:9:87"},{"kind":"number","nativeSrc":"3343:2:87","nodeType":"YulLiteral","src":"3343:2:87","type":"","value":"32"}],"functionName":{"name":"add","nativeSrc":"3328:3:87","nodeType":"YulIdentifier","src":"3328:3:87"},"nativeSrc":"3328:18:87","nodeType":"YulFunctionCall","src":"3328:18:87"},"variables":[{"name":"tail_1","nativeSrc":"3318:6:87","nodeType":"YulTypedName","src":"3318:6:87","type":""}]},{"expression":{"arguments":[{"name":"headStart","nativeSrc":"3362:9:87","nodeType":"YulIdentifier","src":"3362:9:87"},{"kind":"number","nativeSrc":"3373:2:87","nodeType":"YulLiteral","src":"3373:2:87","type":"","value":"32"}],"functionName":{"name":"mstore","nativeSrc":"3355:6:87","nodeType":"YulIdentifier","src":"3355:6:87"},"nativeSrc":"3355:21:87","nodeType":"YulFunctionCall","src":"3355:21:87"},"nativeSrc":"3355:21:87","nodeType":"YulExpressionStatement","src":"3355:21:87"},{"nativeSrc":"3385:17:87","nodeType":"YulVariableDeclaration","src":"3385:17:87","value":{"name":"tail_1","nativeSrc":"3396:6:87","nodeType":"YulIdentifier","src":"3396:6:87"},"variables":[{"name":"pos","nativeSrc":"3389:3:87","nodeType":"YulTypedName","src":"3389:3:87","type":""}]},{"nativeSrc":"3411:27:87","nodeType":"YulVariableDeclaration","src":"3411:27:87","value":{"arguments":[{"name":"value0","nativeSrc":"3431:6:87","nodeType":"YulIdentifier","src":"3431:6:87"}],"functionName":{"name":"mload","nativeSrc":"3425:5:87","nodeType":"YulIdentifier","src":"3425:5:87"},"nativeSrc":"3425:13:87","nodeType":"YulFunctionCall","src":"3425:13:87"},"variables":[{"name":"length","nativeSrc":"3415:6:87","nodeType":"YulTypedName","src":"3415:6:87","type":""}]},{"expression":{"arguments":[{"name":"tail_1","nativeSrc":"3454:6:87","nodeType":"YulIdentifier","src":"3454:6:87"},{"name":"length","nativeSrc":"3462:6:87","nodeType":"YulIdentifier","src":"3462:6:87"}],"functionName":{"name":"mstore","nativeSrc":"3447:6:87","nodeType":"YulIdentifier","src":"3447:6:87"},"nativeSrc":"3447:22:87","nodeType":"YulFunctionCall","src":"3447:22:87"},"nativeSrc":"3447:22:87","nodeType":"YulExpressionStatement","src":"3447:22:87"},{"nativeSrc":"3478:25:87","nodeType":"YulAssignment","src":"3478:25:87","value":{"arguments":[{"name":"headStart","nativeSrc":"3489:9:87","nodeType":"YulIdentifier","src":"3489:9:87"},{"kind":"number","nativeSrc":"3500:2:87","nodeType":"YulLiteral","src":"3500:2:87","type":"","value":"64"}],"functionName":{"name":"add","nativeSrc":"3485:3:87","nodeType":"YulIdentifier","src":"3485:3:87"},"nativeSrc":"3485:18:87","nodeType":"YulFunctionCall","src":"3485:18:87"},"variableNames":[{"name":"pos","nativeSrc":"3478:3:87","nodeType":"YulIdentifier","src":"3478:3:87"}]},{"nativeSrc":"3512:29:87","nodeType":"YulVariableDeclaration","src":"3512:29:87","value":{"arguments":[{"name":"value0","nativeSrc":"3530:6:87","nodeType":"YulIdentifier","src":"3530:6:87"},{"kind":"number","nativeSrc":"3538:2:87","nodeType":"YulLiteral","src":"3538:2:87","type":"","value":"32"}],"functionName":{"name":"add","nativeSrc":"3526:3:87","nodeType":"YulIdentifier","src":"3526:3:87"},"nativeSrc":"3526:15:87","nodeType":"YulFunctionCall","src":"3526:15:87"},"variables":[{"name":"srcPtr","nativeSrc":"3516:6:87","nodeType":"YulTypedName","src":"3516:6:87","type":""}]},{"nativeSrc":"3550:10:87","nodeType":"YulVariableDeclaration","src":"3550:10:87","value":{"kind":"number","nativeSrc":"3559:1:87","nodeType":"YulLiteral","src":"3559:1:87","type":"","value":"0"},"variables":[{"name":"i","nativeSrc":"3554:1:87","nodeType":"YulTypedName","src":"3554:1:87","type":""}]},{"body":{"nativeSrc":"3618:147:87","nodeType":"YulBlock","src":"3618:147:87","statements":[{"expression":{"arguments":[{"name":"pos","nativeSrc":"3639:3:87","nodeType":"YulIdentifier","src":"3639:3:87"},{"arguments":[{"arguments":[{"name":"srcPtr","nativeSrc":"3654:6:87","nodeType":"YulIdentifier","src":"3654:6:87"}],"functionName":{"name":"mload","nativeSrc":"3648:5:87","nodeType":"YulIdentifier","src":"3648:5:87"},"nativeSrc":"3648:13:87","nodeType":"YulFunctionCall","src":"3648:13:87"},{"arguments":[{"kind":"number","nativeSrc":"3667:3:87","nodeType":"YulLiteral","src":"3667:3:87","type":"","value":"224"},{"kind":"number","nativeSrc":"3672:10:87","nodeType":"YulLiteral","src":"3672:10:87","type":"","value":"0xffffffff"}],"functionName":{"name":"shl","nativeSrc":"3663:3:87","nodeType":"YulIdentifier","src":"3663:3:87"},"nativeSrc":"3663:20:87","nodeType":"YulFunctionCall","src":"3663:20:87"}],"functionName":{"name":"and","nativeSrc":"3644:3:87","nodeType":"YulIdentifier","src":"3644:3:87"},"nativeSrc":"3644:40:87","nodeType":"YulFunctionCall","src":"3644:40:87"}],"functionName":{"name":"mstore","nativeSrc":"3632:6:87","nodeType":"YulIdentifier","src":"3632:6:87"},"nativeSrc":"3632:53:87","nodeType":"YulFunctionCall","src":"3632:53:87"},"nativeSrc":"3632:53:87","nodeType":"YulExpressionStatement","src":"3632:53:87"},{"nativeSrc":"3698:19:87","nodeType":"YulAssignment","src":"3698:19:87","value":{"arguments":[{"name":"pos","nativeSrc":"3709:3:87","nodeType":"YulIdentifier","src":"3709:3:87"},{"kind":"number","nativeSrc":"3714:2:87","nodeType":"YulLiteral","src":"3714:2:87","type":"","value":"32"}],"functionName":{"name":"add","nativeSrc":"3705:3:87","nodeType":"YulIdentifier","src":"3705:3:87"},"nativeSrc":"3705:12:87","nodeType":"YulFunctionCall","src":"3705:12:87"},"variableNames":[{"name":"pos","nativeSrc":"3698:3:87","nodeType":"YulIdentifier","src":"3698:3:87"}]},{"nativeSrc":"3730:25:87","nodeType":"YulAssignment","src":"3730:25:87","value":{"arguments":[{"name":"srcPtr","nativeSrc":"3744:6:87","nodeType":"YulIdentifier","src":"3744:6:87"},{"kind":"number","nativeSrc":"3752:2:87","nodeType":"YulLiteral","src":"3752:2:87","type":"","value":"32"}],"functionName":{"name":"add","nativeSrc":"3740:3:87","nodeType":"YulIdentifier","src":"3740:3:87"},"nativeSrc":"3740:15:87","nodeType":"YulFunctionCall","src":"3740:15:87"},"variableNames":[{"name":"srcPtr","nativeSrc":"3730:6:87","nodeType":"YulIdentifier","src":"3730:6:87"}]}]},"condition":{"arguments":[{"name":"i","nativeSrc":"3580:1:87","nodeType":"YulIdentifier","src":"3580:1:87"},{"name":"length","nativeSrc":"3583:6:87","nodeType":"YulIdentifier","src":"3583:6:87"}],"functionName":{"name":"lt","nativeSrc":"3577:2:87","nodeType":"YulIdentifier","src":"3577:2:87"},"nativeSrc":"3577:13:87","nodeType":"YulFunctionCall","src":"3577:13:87"},"nativeSrc":"3569:196:87","nodeType":"YulForLoop","post":{"nativeSrc":"3591:18:87","nodeType":"YulBlock","src":"3591:18:87","statements":[{"nativeSrc":"3593:14:87","nodeType":"YulAssignment","src":"3593:14:87","value":{"arguments":[{"name":"i","nativeSrc":"3602:1:87","nodeType":"YulIdentifier","src":"3602:1:87"},{"kind":"number","nativeSrc":"3605:1:87","nodeType":"YulLiteral","src":"3605:1:87","type":"","value":"1"}],"functionName":{"name":"add","nativeSrc":"3598:3:87","nodeType":"YulIdentifier","src":"3598:3:87"},"nativeSrc":"3598:9:87","nodeType":"YulFunctionCall","src":"3598:9:87"},"variableNames":[{"name":"i","nativeSrc":"3593:1:87","nodeType":"YulIdentifier","src":"3593:1:87"}]}]},"pre":{"nativeSrc":"3573:3:87","nodeType":"YulBlock","src":"3573:3:87","statements":[]},"src":"3569:196:87"},{"nativeSrc":"3774:11:87","nodeType":"YulAssignment","src":"3774:11:87","value":{"name":"pos","nativeSrc":"3782:3:87","nodeType":"YulIdentifier","src":"3782:3:87"},"variableNames":[{"name":"tail","nativeSrc":"3774:4:87","nodeType":"YulIdentifier","src":"3774:4:87"}]}]},"name":"abi_encode_tuple_t_array$_t_bytes4_$dyn_memory_ptr__to_t_array$_t_bytes4_$dyn_memory_ptr__fromStack_reversed","nativeSrc":"3155:636:87","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nativeSrc":"3273:9:87","nodeType":"YulTypedName","src":"3273:9:87","type":""},{"name":"value0","nativeSrc":"3284:6:87","nodeType":"YulTypedName","src":"3284:6:87","type":""}],"returnVariables":[{"name":"tail","nativeSrc":"3295:4:87","nodeType":"YulTypedName","src":"3295:4:87","type":""}],"src":"3155:636:87"}]},"contents":"{\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    function panic_error_0x41()\n    {\n        mstore(0, shl(224, 0x4e487b71))\n        mstore(4, 0x41)\n        revert(0, 0x24)\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 abi_decode_contract_IAccessManager_fromMemory(offset) -> value\n    {\n        value := mload(offset)\n        validator_revert_address(value)\n    }\n    function abi_decode_array_bytes4_dyn_fromMemory(offset, end) -> array\n    {\n        if iszero(slt(add(offset, 0x1f), end)) { revert(0, 0) }\n        let length := mload(offset)\n        if gt(length, sub(shl(64, 1), 1)) { panic_error_0x41() }\n        let _1 := shl(5, length)\n        let dst := allocate_memory(add(_1, 0x20))\n        let array_1 := dst\n        mstore(dst, length)\n        dst := add(dst, 0x20)\n        let srcEnd := add(add(offset, _1), 0x20)\n        if gt(srcEnd, end) { revert(0, 0) }\n        let src := add(offset, 0x20)\n        for { } lt(src, srcEnd) { src := add(src, 0x20) }\n        {\n            let value := mload(src)\n            if iszero(eq(value, and(value, shl(224, 0xffffffff)))) { revert(0, 0) }\n            mstore(dst, value)\n            dst := add(dst, 0x20)\n        }\n        array := array_1\n    }\n    function abi_decode_tuple_t_addresst_bytes_memory_ptrt_contract$_IAccessManager_$6842t_array$_t_bytes4_$dyn_memory_ptr_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 offset := mload(add(headStart, 32))\n        if gt(offset, sub(shl(64, 1), 1)) { revert(0, 0) }\n        let _1 := add(headStart, offset)\n        if iszero(slt(add(_1, 0x1f), dataEnd)) { revert(0, 0) }\n        let length := mload(_1)\n        if gt(length, sub(shl(64, 1), 1)) { panic_error_0x41() }\n        let array := allocate_memory(add(and(add(length, 0x1f), not(31)), 32))\n        mstore(array, length)\n        if gt(add(add(_1, length), 32), dataEnd) { revert(0, 0) }\n        mcopy(add(array, 32), add(_1, 32), length)\n        mstore(add(add(array, length), 32), 0)\n        value1 := array\n        value2 := abi_decode_contract_IAccessManager_fromMemory(add(headStart, 64))\n        let offset_1 := mload(add(headStart, 96))\n        if gt(offset_1, sub(shl(64, 1), 1)) { revert(0, 0) }\n        value3 := abi_decode_array_bytes4_dyn_fromMemory(add(headStart, offset_1), dataEnd)\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, sub(shl(160, 1), 1)))\n    }\n    function panic_error_0x32()\n    {\n        mstore(0, shl(224, 0x4e487b71))\n        mstore(4, 0x32)\n        revert(0, 0x24)\n    }\n    function abi_encode_tuple_t_array$_t_bytes4_$dyn_memory_ptr__to_t_array$_t_bytes4_$dyn_memory_ptr__fromStack_reversed(headStart, value0) -> tail\n    {\n        let tail_1 := add(headStart, 32)\n        mstore(headStart, 32)\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, 32)\n        let i := 0\n        for { } lt(i, length) { i := add(i, 1) }\n        {\n            mstore(pos, and(mload(srcPtr), shl(224, 0xffffffff)))\n            pos := add(pos, 32)\n            srcPtr := add(srcPtr, 32)\n        }\n        tail := pos\n    }\n}","id":87,"language":"Yul","name":"#utility.yul"}],"linkReferences":{},"object":"6080604052604051610b71380380610b71833981016040819052610022916105d9565b838381816100308282610055565b50505050610043826100b360201b60201c565b61004c8161014e565b50505050610719565b61005e826102ae565b6040516001600160a01b038316907fbc7cd75a20ee27fd9adebab32041f755214dbc6bffa90cc0225b39da2e5c2d3b905f90a28051156100a7576100a28282610324565b505050565b6100af6103c5565b5050565b806001600160a01b03163b5f036100ed576040516361798f2f60e11b81526001600160a01b03821660048201526024015b60405180910390fd5b805f516020610b515f395f51905f5280546001600160a01b0319166001600160a01b0392831617905560405190821681527f2f658b440c35314f52658ea8a740e05b284cdc84dc9ae01e891f21b8933e7cad9060200160405180910390a150565b80515f516020610b515f395f51905f52906001600160401b03811115610176576101766104f1565b60405190808252806020026020018201604052801561019f578160200160208202803683370190505b5080516101b691600184019160209091019061041d565b505f5b8251811015610272578281815181106101d4576101d46106b9565b60200260200101518260010182815481106101f1576101f16106b9565b905f5260205f2090600891828204019190066004026101000a81548163ffffffff021916908360e01c02179055506001826002015f858481518110610238576102386106b9565b6020908102919091018101516001600160e01b03191682528101919091526040015f20805460ff19169115159190911790556001016101b9565b507f3da94442c0a9daca8284d03a02aafdc638dfaae447d5d7879542573a9095b493826040516102a291906106cd565b60405180910390a15050565b806001600160a01b03163b5f036102e357604051634c9c8ce360e01b81526001600160a01b03821660048201526024016100e4565b7f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc80546001600160a01b0319166001600160a01b0392909216919091179055565b60605f61033184846103e6565b905080801561035257505f3d118061035257505f846001600160a01b03163b115b156103675761035f6103f9565b9150506103bf565b801561039157604051639996b31560e01b81526001600160a01b03851660048201526024016100e4565b3d156103a45761039f610412565b6103bd565b60405163d6bda27560e01b815260040160405180910390fd5b505b92915050565b34156103e45760405163b398979f60e01b815260040160405180910390fd5b565b5f5f5f835160208501865af49392505050565b6040513d81523d5f602083013e3d602001810160405290565b6040513d5f823e3d81fd5b828054828255905f5260205f20906007016008900481019282156104b6579160200282015f5b8382111561048457835183826101000a81548163ffffffff021916908360e01c02179055509260200192600401602081600301049283019260010302610443565b80156104b45782816101000a81549063ffffffff0219169055600401602081600301049283019260010302610484565b505b506104c29291506104c6565b5090565b5b808211156104c2575f81556001016104c7565b6001600160a01b03811681146104ee575f5ffd5b50565b634e487b7160e01b5f52604160045260245ffd5b604051601f8201601f191681016001600160401b038111828210171561052d5761052d6104f1565b604052919050565b8051610540816104da565b919050565b5f82601f830112610554575f5ffd5b81516001600160401b0381111561056d5761056d6104f1565b8060051b61057d60208201610505565b91825260208185018101929081019086841115610598575f5ffd5b6020860192505b838310156105cf5782516001600160e01b0319811681146105be575f5ffd5b82526020928301929091019061059f565b9695505050505050565b5f5f5f5f608085870312156105ec575f5ffd5b84516105f7816104da565b60208601519094506001600160401b03811115610612575f5ffd5b8501601f81018713610622575f5ffd5b80516001600160401b0381111561063b5761063b6104f1565b61064e601f8201601f1916602001610505565b818152886020838501011115610662575f5ffd5b8160208401602083015e5f6020838301015280955050505061068660408601610535565b60608601519092506001600160401b038111156106a1575f5ffd5b6106ad87828801610545565b91505092959194509250565b634e487b7160e01b5f52603260045260245ffd5b602080825282518282018190525f918401906040840190835b8181101561070e5783516001600160e01b0319168352602093840193909201916001016106e6565b509095945050505050565b61042b806107265f395ff3fe608060405260043610610033575f3560e01c806314416c031461003d5780633a7b7a3914610067578063bf7e214f14610093575b61003b6100a7565b005b348015610048575f5ffd5b506100516100b9565b60405161005e9190610306565b60405180910390f35b348015610072575f5ffd5b5061007b61015d565b6040516001600160a01b03909116815260200161005e565b34801561009e575f5ffd5b5061007b61018f565b6100b76100b261019d565b6101a6565b565b60607f787c9d7ac910d64252bcea05acd5b7af6d59644e0451a8bb5674587555049c0060010180548060200260200160405190810160405280929190818152602001828054801561015357602002820191905f5260205f20905f905b82829054906101000a900460e01b6001600160e01b031916815260200190600401906020826003010492830192600103820291508084116101155790505b5050505050905090565b5f7f787c9d7ac910d64252bcea05acd5b7af6d59644e0451a8bb5674587555049c005b546001600160a01b0316919050565b5f61019861015d565b905090565b5f6101986102c1565b5f6101b46004823681610352565b6101bd91610379565b90505f610201826001600160e01b0319165f9081527f787c9d7ac910d64252bcea05acd5b7af6d59644e0451a8bb5674587555049c02602052604090205460ff1690565b9050806102b35761021061015d565b60405163b700961360e01b81523360048201523060248201526001600160e01b0319841660448201526001600160a01b03919091169063b7009613906064016040805180830381865afa158015610269573d5f5f3e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061028d91906103b1565b509050806102b35760405162d1953b60e31b815233600482015260240160405180910390fd5b6102bc836102e8565b505050565b5f7f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc610180565b365f5f375f5f365f845af43d5f5f3e808015610302573d5ff35b3d5ffd5b602080825282518282018190525f918401906040840190835b818110156103475783516001600160e01b03191683526020938401939092019160010161031f565b509095945050505050565b5f5f85851115610360575f5ffd5b8386111561036c575f5ffd5b5050820193919092039150565b80356001600160e01b031981169060048410156103aa576001600160e01b0319600485900360031b81901b82161691505b5092915050565b5f5f604083850312156103c2575f5ffd5b825180151581146103d1575f5ffd5b602084015190925063ffffffff811681146103ea575f5ffd5b80915050925092905056fea2646970667358221220796d73dadbf09c6c954563dc24f0c3543d8cd13e6203e424ca2d472b56f4a76064736f6c634300081e0033787c9d7ac910d64252bcea05acd5b7af6d59644e0451a8bb5674587555049c00","opcodes":"PUSH1 0x80 PUSH1 0x40 MSTORE PUSH1 0x40 MLOAD PUSH2 0xB71 CODESIZE SUB DUP1 PUSH2 0xB71 DUP4 CODECOPY DUP2 ADD PUSH1 0x40 DUP2 SWAP1 MSTORE PUSH2 0x22 SWAP2 PUSH2 0x5D9 JUMP JUMPDEST DUP4 DUP4 DUP2 DUP2 PUSH2 0x30 DUP3 DUP3 PUSH2 0x55 JUMP JUMPDEST POP POP POP POP PUSH2 0x43 DUP3 PUSH2 0xB3 PUSH1 0x20 SHL PUSH1 0x20 SHR JUMP JUMPDEST PUSH2 0x4C DUP2 PUSH2 0x14E JUMP JUMPDEST POP POP POP POP PUSH2 0x719 JUMP JUMPDEST PUSH2 0x5E DUP3 PUSH2 0x2AE JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP4 AND SWAP1 PUSH32 0xBC7CD75A20EE27FD9ADEBAB32041F755214DBC6BFFA90CC0225B39DA2E5C2D3B SWAP1 PUSH0 SWAP1 LOG2 DUP1 MLOAD ISZERO PUSH2 0xA7 JUMPI PUSH2 0xA2 DUP3 DUP3 PUSH2 0x324 JUMP JUMPDEST POP POP POP JUMP JUMPDEST PUSH2 0xAF PUSH2 0x3C5 JUMP JUMPDEST POP POP JUMP JUMPDEST DUP1 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND EXTCODESIZE PUSH0 SUB PUSH2 0xED JUMPI PUSH1 0x40 MLOAD PUSH4 0x61798F2F PUSH1 0xE1 SHL DUP2 MSTORE PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP3 AND PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x24 ADD JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST DUP1 PUSH0 MLOAD PUSH1 0x20 PUSH2 0xB51 PUSH0 CODECOPY PUSH0 MLOAD SWAP1 PUSH0 MSTORE DUP1 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB NOT AND PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP3 DUP4 AND OR SWAP1 SSTORE PUSH1 0x40 MLOAD SWAP1 DUP3 AND DUP2 MSTORE PUSH32 0x2F658B440C35314F52658EA8A740E05B284CDC84DC9AE01E891F21B8933E7CAD SWAP1 PUSH1 0x20 ADD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 LOG1 POP JUMP JUMPDEST DUP1 MLOAD PUSH0 MLOAD PUSH1 0x20 PUSH2 0xB51 PUSH0 CODECOPY PUSH0 MLOAD SWAP1 PUSH0 MSTORE SWAP1 PUSH1 0x1 PUSH1 0x1 PUSH1 0x40 SHL SUB DUP2 GT ISZERO PUSH2 0x176 JUMPI PUSH2 0x176 PUSH2 0x4F1 JUMP JUMPDEST PUSH1 0x40 MLOAD SWAP1 DUP1 DUP3 MSTORE DUP1 PUSH1 0x20 MUL PUSH1 0x20 ADD DUP3 ADD PUSH1 0x40 MSTORE DUP1 ISZERO PUSH2 0x19F JUMPI DUP2 PUSH1 0x20 ADD PUSH1 0x20 DUP3 MUL DUP1 CALLDATASIZE DUP4 CALLDATACOPY ADD SWAP1 POP JUMPDEST POP DUP1 MLOAD PUSH2 0x1B6 SWAP2 PUSH1 0x1 DUP5 ADD SWAP2 PUSH1 0x20 SWAP1 SWAP2 ADD SWAP1 PUSH2 0x41D JUMP JUMPDEST POP PUSH0 JUMPDEST DUP3 MLOAD DUP2 LT ISZERO PUSH2 0x272 JUMPI DUP3 DUP2 DUP2 MLOAD DUP2 LT PUSH2 0x1D4 JUMPI PUSH2 0x1D4 PUSH2 0x6B9 JUMP JUMPDEST PUSH1 0x20 MUL PUSH1 0x20 ADD ADD MLOAD DUP3 PUSH1 0x1 ADD DUP3 DUP2 SLOAD DUP2 LT PUSH2 0x1F1 JUMPI PUSH2 0x1F1 PUSH2 0x6B9 JUMP JUMPDEST SWAP1 PUSH0 MSTORE PUSH1 0x20 PUSH0 KECCAK256 SWAP1 PUSH1 0x8 SWAP2 DUP3 DUP3 DIV ADD SWAP2 SWAP1 MOD PUSH1 0x4 MUL PUSH2 0x100 EXP DUP2 SLOAD DUP2 PUSH4 0xFFFFFFFF MUL NOT AND SWAP1 DUP4 PUSH1 0xE0 SHR MUL OR SWAP1 SSTORE POP PUSH1 0x1 DUP3 PUSH1 0x2 ADD PUSH0 DUP6 DUP5 DUP2 MLOAD DUP2 LT PUSH2 0x238 JUMPI PUSH2 0x238 PUSH2 0x6B9 JUMP JUMPDEST PUSH1 0x20 SWAP1 DUP2 MUL SWAP2 SWAP1 SWAP2 ADD DUP2 ADD MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xE0 SHL SUB NOT AND DUP3 MSTORE DUP2 ADD SWAP2 SWAP1 SWAP2 MSTORE PUSH1 0x40 ADD PUSH0 KECCAK256 DUP1 SLOAD PUSH1 0xFF NOT AND SWAP2 ISZERO ISZERO SWAP2 SWAP1 SWAP2 OR SWAP1 SSTORE PUSH1 0x1 ADD PUSH2 0x1B9 JUMP JUMPDEST POP PUSH32 0x3DA94442C0A9DACA8284D03A02AAFDC638DFAAE447D5D7879542573A9095B493 DUP3 PUSH1 0x40 MLOAD PUSH2 0x2A2 SWAP2 SWAP1 PUSH2 0x6CD JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 LOG1 POP POP JUMP JUMPDEST DUP1 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND EXTCODESIZE PUSH0 SUB PUSH2 0x2E3 JUMPI PUSH1 0x40 MLOAD PUSH4 0x4C9C8CE3 PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP3 AND PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x24 ADD PUSH2 0xE4 JUMP JUMPDEST PUSH32 0x360894A13BA1A3210667C828492DB98DCA3E2076CC3735A920A3CA505D382BBC DUP1 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB NOT AND PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP3 SWAP1 SWAP3 AND SWAP2 SWAP1 SWAP2 OR SWAP1 SSTORE JUMP JUMPDEST PUSH1 0x60 PUSH0 PUSH2 0x331 DUP5 DUP5 PUSH2 0x3E6 JUMP JUMPDEST SWAP1 POP DUP1 DUP1 ISZERO PUSH2 0x352 JUMPI POP PUSH0 RETURNDATASIZE GT DUP1 PUSH2 0x352 JUMPI POP PUSH0 DUP5 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND EXTCODESIZE GT JUMPDEST ISZERO PUSH2 0x367 JUMPI PUSH2 0x35F PUSH2 0x3F9 JUMP JUMPDEST SWAP2 POP POP PUSH2 0x3BF JUMP JUMPDEST DUP1 ISZERO PUSH2 0x391 JUMPI PUSH1 0x40 MLOAD PUSH4 0x9996B315 PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP6 AND PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x24 ADD PUSH2 0xE4 JUMP JUMPDEST RETURNDATASIZE ISZERO PUSH2 0x3A4 JUMPI PUSH2 0x39F PUSH2 0x412 JUMP JUMPDEST PUSH2 0x3BD JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH4 0xD6BDA275 PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST POP JUMPDEST SWAP3 SWAP2 POP POP JUMP JUMPDEST CALLVALUE ISZERO PUSH2 0x3E4 JUMPI PUSH1 0x40 MLOAD PUSH4 0xB398979F PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST JUMP JUMPDEST PUSH0 PUSH0 PUSH0 DUP4 MLOAD PUSH1 0x20 DUP6 ADD DUP7 GAS DELEGATECALL SWAP4 SWAP3 POP POP POP JUMP JUMPDEST PUSH1 0x40 MLOAD RETURNDATASIZE DUP2 MSTORE RETURNDATASIZE PUSH0 PUSH1 0x20 DUP4 ADD RETURNDATACOPY RETURNDATASIZE PUSH1 0x20 ADD DUP2 ADD PUSH1 0x40 MSTORE SWAP1 JUMP JUMPDEST PUSH1 0x40 MLOAD RETURNDATASIZE PUSH0 DUP3 RETURNDATACOPY RETURNDATASIZE DUP2 REVERT JUMPDEST DUP3 DUP1 SLOAD DUP3 DUP3 SSTORE SWAP1 PUSH0 MSTORE PUSH1 0x20 PUSH0 KECCAK256 SWAP1 PUSH1 0x7 ADD PUSH1 0x8 SWAP1 DIV DUP2 ADD SWAP3 DUP3 ISZERO PUSH2 0x4B6 JUMPI SWAP2 PUSH1 0x20 MUL DUP3 ADD PUSH0 JUMPDEST DUP4 DUP3 GT ISZERO PUSH2 0x484 JUMPI DUP4 MLOAD DUP4 DUP3 PUSH2 0x100 EXP DUP2 SLOAD DUP2 PUSH4 0xFFFFFFFF MUL NOT AND SWAP1 DUP4 PUSH1 0xE0 SHR MUL OR SWAP1 SSTORE POP SWAP3 PUSH1 0x20 ADD SWAP3 PUSH1 0x4 ADD PUSH1 0x20 DUP2 PUSH1 0x3 ADD DIV SWAP3 DUP4 ADD SWAP3 PUSH1 0x1 SUB MUL PUSH2 0x443 JUMP JUMPDEST DUP1 ISZERO PUSH2 0x4B4 JUMPI DUP3 DUP2 PUSH2 0x100 EXP DUP2 SLOAD SWAP1 PUSH4 0xFFFFFFFF MUL NOT AND SWAP1 SSTORE PUSH1 0x4 ADD PUSH1 0x20 DUP2 PUSH1 0x3 ADD DIV SWAP3 DUP4 ADD SWAP3 PUSH1 0x1 SUB MUL PUSH2 0x484 JUMP JUMPDEST POP JUMPDEST POP PUSH2 0x4C2 SWAP3 SWAP2 POP PUSH2 0x4C6 JUMP JUMPDEST POP SWAP1 JUMP JUMPDEST JUMPDEST DUP1 DUP3 GT ISZERO PUSH2 0x4C2 JUMPI PUSH0 DUP2 SSTORE PUSH1 0x1 ADD PUSH2 0x4C7 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 AND DUP2 EQ PUSH2 0x4EE JUMPI PUSH0 PUSH0 REVERT JUMPDEST POP JUMP JUMPDEST PUSH4 0x4E487B71 PUSH1 0xE0 SHL PUSH0 MSTORE PUSH1 0x41 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH0 REVERT 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 PUSH2 0x52D JUMPI PUSH2 0x52D PUSH2 0x4F1 JUMP JUMPDEST PUSH1 0x40 MSTORE SWAP2 SWAP1 POP JUMP JUMPDEST DUP1 MLOAD PUSH2 0x540 DUP2 PUSH2 0x4DA JUMP JUMPDEST SWAP2 SWAP1 POP JUMP JUMPDEST PUSH0 DUP3 PUSH1 0x1F DUP4 ADD SLT PUSH2 0x554 JUMPI PUSH0 PUSH0 REVERT JUMPDEST DUP2 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0x40 SHL SUB DUP2 GT ISZERO PUSH2 0x56D JUMPI PUSH2 0x56D PUSH2 0x4F1 JUMP JUMPDEST DUP1 PUSH1 0x5 SHL PUSH2 0x57D PUSH1 0x20 DUP3 ADD PUSH2 0x505 JUMP JUMPDEST SWAP2 DUP3 MSTORE PUSH1 0x20 DUP2 DUP6 ADD DUP2 ADD SWAP3 SWAP1 DUP2 ADD SWAP1 DUP7 DUP5 GT ISZERO PUSH2 0x598 JUMPI PUSH0 PUSH0 REVERT JUMPDEST PUSH1 0x20 DUP7 ADD SWAP3 POP JUMPDEST DUP4 DUP4 LT ISZERO PUSH2 0x5CF JUMPI DUP3 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xE0 SHL SUB NOT DUP2 AND DUP2 EQ PUSH2 0x5BE JUMPI PUSH0 PUSH0 REVERT JUMPDEST DUP3 MSTORE PUSH1 0x20 SWAP3 DUP4 ADD SWAP3 SWAP1 SWAP2 ADD SWAP1 PUSH2 0x59F JUMP JUMPDEST SWAP7 SWAP6 POP POP POP POP POP POP JUMP JUMPDEST PUSH0 PUSH0 PUSH0 PUSH0 PUSH1 0x80 DUP6 DUP8 SUB SLT ISZERO PUSH2 0x5EC JUMPI PUSH0 PUSH0 REVERT JUMPDEST DUP5 MLOAD PUSH2 0x5F7 DUP2 PUSH2 0x4DA JUMP JUMPDEST PUSH1 0x20 DUP7 ADD MLOAD SWAP1 SWAP5 POP PUSH1 0x1 PUSH1 0x1 PUSH1 0x40 SHL SUB DUP2 GT ISZERO PUSH2 0x612 JUMPI PUSH0 PUSH0 REVERT JUMPDEST DUP6 ADD PUSH1 0x1F DUP2 ADD DUP8 SGT PUSH2 0x622 JUMPI PUSH0 PUSH0 REVERT JUMPDEST DUP1 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0x40 SHL SUB DUP2 GT ISZERO PUSH2 0x63B JUMPI PUSH2 0x63B PUSH2 0x4F1 JUMP JUMPDEST PUSH2 0x64E PUSH1 0x1F DUP3 ADD PUSH1 0x1F NOT AND PUSH1 0x20 ADD PUSH2 0x505 JUMP JUMPDEST DUP2 DUP2 MSTORE DUP9 PUSH1 0x20 DUP4 DUP6 ADD ADD GT ISZERO PUSH2 0x662 JUMPI PUSH0 PUSH0 REVERT JUMPDEST DUP2 PUSH1 0x20 DUP5 ADD PUSH1 0x20 DUP4 ADD MCOPY PUSH0 PUSH1 0x20 DUP4 DUP4 ADD ADD MSTORE DUP1 SWAP6 POP POP POP POP PUSH2 0x686 PUSH1 0x40 DUP7 ADD PUSH2 0x535 JUMP JUMPDEST PUSH1 0x60 DUP7 ADD MLOAD SWAP1 SWAP3 POP PUSH1 0x1 PUSH1 0x1 PUSH1 0x40 SHL SUB DUP2 GT ISZERO PUSH2 0x6A1 JUMPI PUSH0 PUSH0 REVERT JUMPDEST PUSH2 0x6AD DUP8 DUP3 DUP9 ADD PUSH2 0x545 JUMP JUMPDEST SWAP2 POP POP SWAP3 SWAP6 SWAP2 SWAP5 POP SWAP3 POP JUMP JUMPDEST PUSH4 0x4E487B71 PUSH1 0xE0 SHL PUSH0 MSTORE PUSH1 0x32 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH0 REVERT JUMPDEST PUSH1 0x20 DUP1 DUP3 MSTORE DUP3 MLOAD DUP3 DUP3 ADD DUP2 SWAP1 MSTORE PUSH0 SWAP2 DUP5 ADD SWAP1 PUSH1 0x40 DUP5 ADD SWAP1 DUP4 JUMPDEST DUP2 DUP2 LT ISZERO PUSH2 0x70E JUMPI DUP4 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xE0 SHL SUB NOT AND DUP4 MSTORE PUSH1 0x20 SWAP4 DUP5 ADD SWAP4 SWAP1 SWAP3 ADD SWAP2 PUSH1 0x1 ADD PUSH2 0x6E6 JUMP JUMPDEST POP SWAP1 SWAP6 SWAP5 POP POP POP POP POP JUMP JUMPDEST PUSH2 0x42B DUP1 PUSH2 0x726 PUSH0 CODECOPY PUSH0 RETURN INVALID PUSH1 0x80 PUSH1 0x40 MSTORE PUSH1 0x4 CALLDATASIZE LT PUSH2 0x33 JUMPI PUSH0 CALLDATALOAD PUSH1 0xE0 SHR DUP1 PUSH4 0x14416C03 EQ PUSH2 0x3D JUMPI DUP1 PUSH4 0x3A7B7A39 EQ PUSH2 0x67 JUMPI DUP1 PUSH4 0xBF7E214F EQ PUSH2 0x93 JUMPI JUMPDEST PUSH2 0x3B PUSH2 0xA7 JUMP JUMPDEST STOP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x48 JUMPI PUSH0 PUSH0 REVERT JUMPDEST POP PUSH2 0x51 PUSH2 0xB9 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0x5E SWAP2 SWAP1 PUSH2 0x306 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x72 JUMPI PUSH0 PUSH0 REVERT JUMPDEST POP PUSH2 0x7B PUSH2 0x15D JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP1 SWAP2 AND DUP2 MSTORE PUSH1 0x20 ADD PUSH2 0x5E JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x9E JUMPI PUSH0 PUSH0 REVERT JUMPDEST POP PUSH2 0x7B PUSH2 0x18F JUMP JUMPDEST PUSH2 0xB7 PUSH2 0xB2 PUSH2 0x19D JUMP JUMPDEST PUSH2 0x1A6 JUMP JUMPDEST JUMP JUMPDEST PUSH1 0x60 PUSH32 0x787C9D7AC910D64252BCEA05ACD5B7AF6D59644E0451A8BB5674587555049C00 PUSH1 0x1 ADD 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 0x153 JUMPI PUSH1 0x20 MUL DUP3 ADD SWAP2 SWAP1 PUSH0 MSTORE PUSH1 0x20 PUSH0 KECCAK256 SWAP1 PUSH0 SWAP1 JUMPDEST DUP3 DUP3 SWAP1 SLOAD SWAP1 PUSH2 0x100 EXP SWAP1 DIV PUSH1 0xE0 SHL PUSH1 0x1 PUSH1 0x1 PUSH1 0xE0 SHL SUB NOT AND DUP2 MSTORE PUSH1 0x20 ADD SWAP1 PUSH1 0x4 ADD SWAP1 PUSH1 0x20 DUP3 PUSH1 0x3 ADD DIV SWAP3 DUP4 ADD SWAP3 PUSH1 0x1 SUB DUP3 MUL SWAP2 POP DUP1 DUP5 GT PUSH2 0x115 JUMPI SWAP1 POP JUMPDEST POP POP POP POP POP SWAP1 POP SWAP1 JUMP JUMPDEST PUSH0 PUSH32 0x787C9D7AC910D64252BCEA05ACD5B7AF6D59644E0451A8BB5674587555049C00 JUMPDEST SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND SWAP2 SWAP1 POP JUMP JUMPDEST PUSH0 PUSH2 0x198 PUSH2 0x15D JUMP JUMPDEST SWAP1 POP SWAP1 JUMP JUMPDEST PUSH0 PUSH2 0x198 PUSH2 0x2C1 JUMP JUMPDEST PUSH0 PUSH2 0x1B4 PUSH1 0x4 DUP3 CALLDATASIZE DUP2 PUSH2 0x352 JUMP JUMPDEST PUSH2 0x1BD SWAP2 PUSH2 0x379 JUMP JUMPDEST SWAP1 POP PUSH0 PUSH2 0x201 DUP3 PUSH1 0x1 PUSH1 0x1 PUSH1 0xE0 SHL SUB NOT AND PUSH0 SWAP1 DUP2 MSTORE PUSH32 0x787C9D7AC910D64252BCEA05ACD5B7AF6D59644E0451A8BB5674587555049C02 PUSH1 0x20 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD PUSH1 0xFF AND SWAP1 JUMP JUMPDEST SWAP1 POP DUP1 PUSH2 0x2B3 JUMPI PUSH2 0x210 PUSH2 0x15D JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH4 0xB7009613 PUSH1 0xE0 SHL DUP2 MSTORE CALLER PUSH1 0x4 DUP3 ADD MSTORE ADDRESS PUSH1 0x24 DUP3 ADD MSTORE PUSH1 0x1 PUSH1 0x1 PUSH1 0xE0 SHL SUB NOT DUP5 AND PUSH1 0x44 DUP3 ADD MSTORE PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP2 SWAP1 SWAP2 AND SWAP1 PUSH4 0xB7009613 SWAP1 PUSH1 0x64 ADD PUSH1 0x40 DUP1 MLOAD DUP1 DUP4 SUB DUP2 DUP7 GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x269 JUMPI RETURNDATASIZE PUSH0 PUSH0 RETURNDATACOPY RETURNDATASIZE PUSH0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP3 ADD DUP1 PUSH1 0x40 MSTORE POP DUP2 ADD SWAP1 PUSH2 0x28D SWAP2 SWAP1 PUSH2 0x3B1 JUMP JUMPDEST POP SWAP1 POP DUP1 PUSH2 0x2B3 JUMPI PUSH1 0x40 MLOAD PUSH3 0xD1953B PUSH1 0xE3 SHL DUP2 MSTORE CALLER PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x24 ADD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH2 0x2BC DUP4 PUSH2 0x2E8 JUMP JUMPDEST POP POP POP JUMP JUMPDEST PUSH0 PUSH32 0x360894A13BA1A3210667C828492DB98DCA3E2076CC3735A920A3CA505D382BBC PUSH2 0x180 JUMP JUMPDEST CALLDATASIZE PUSH0 PUSH0 CALLDATACOPY PUSH0 PUSH0 CALLDATASIZE PUSH0 DUP5 GAS DELEGATECALL RETURNDATASIZE PUSH0 PUSH0 RETURNDATACOPY DUP1 DUP1 ISZERO PUSH2 0x302 JUMPI RETURNDATASIZE PUSH0 RETURN JUMPDEST RETURNDATASIZE PUSH0 REVERT JUMPDEST PUSH1 0x20 DUP1 DUP3 MSTORE DUP3 MLOAD DUP3 DUP3 ADD DUP2 SWAP1 MSTORE PUSH0 SWAP2 DUP5 ADD SWAP1 PUSH1 0x40 DUP5 ADD SWAP1 DUP4 JUMPDEST DUP2 DUP2 LT ISZERO PUSH2 0x347 JUMPI DUP4 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xE0 SHL SUB NOT AND DUP4 MSTORE PUSH1 0x20 SWAP4 DUP5 ADD SWAP4 SWAP1 SWAP3 ADD SWAP2 PUSH1 0x1 ADD PUSH2 0x31F JUMP JUMPDEST POP SWAP1 SWAP6 SWAP5 POP POP POP POP POP JUMP JUMPDEST PUSH0 PUSH0 DUP6 DUP6 GT ISZERO PUSH2 0x360 JUMPI PUSH0 PUSH0 REVERT JUMPDEST DUP4 DUP7 GT ISZERO PUSH2 0x36C JUMPI PUSH0 PUSH0 REVERT JUMPDEST POP POP DUP3 ADD SWAP4 SWAP2 SWAP1 SWAP3 SUB SWAP2 POP JUMP JUMPDEST DUP1 CALLDATALOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xE0 SHL SUB NOT DUP2 AND SWAP1 PUSH1 0x4 DUP5 LT ISZERO PUSH2 0x3AA JUMPI PUSH1 0x1 PUSH1 0x1 PUSH1 0xE0 SHL SUB NOT PUSH1 0x4 DUP6 SWAP1 SUB PUSH1 0x3 SHL DUP2 SWAP1 SHL DUP3 AND AND SWAP2 POP JUMPDEST POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH0 PUSH0 PUSH1 0x40 DUP4 DUP6 SUB SLT ISZERO PUSH2 0x3C2 JUMPI PUSH0 PUSH0 REVERT JUMPDEST DUP3 MLOAD DUP1 ISZERO ISZERO DUP2 EQ PUSH2 0x3D1 JUMPI PUSH0 PUSH0 REVERT JUMPDEST PUSH1 0x20 DUP5 ADD MLOAD SWAP1 SWAP3 POP PUSH4 0xFFFFFFFF DUP2 AND DUP2 EQ PUSH2 0x3EA JUMPI PUSH0 PUSH0 REVERT JUMPDEST DUP1 SWAP2 POP POP SWAP3 POP SWAP3 SWAP1 POP JUMP INVALID LOG2 PUSH5 0x6970667358 0x22 SLT KECCAK256 PUSH26 0x6D73DADBF09C6C954563DC24F0C3543D8CD13E6203E424CA2D47 0x2B JUMP DELEGATECALL 0xA7 PUSH1 0x64 PUSH20 0x6F6C634300081E0033787C9D7AC910D64252BCEA SDIV 0xAC 0xD5 0xB7 0xAF PUSH14 0x59644E0451A8BB5674587555049C STOP ","sourceMap":"1448:2096:1:-:0;;;2569:294;;;;;;;;;;;;;;;;;;:::i;:::-;2739:14;2755:5;2739:14;2755:5;1155:52:26;2739:14:1;2755:5;1155:29:26;:52::i;:::-;1081:133;;1843:102:2;;2768:40:1::1;2794:13;2768:25;;;:40;;:::i;:::-;2814:44;2842:15:::0;2814:27:::1;:44::i;:::-;2569:294:::0;;;;1448:2096;;2264:344:27;2355:37;2374:17;2355:18;:37::i;:::-;2407:36;;-1:-1:-1;;;;;2407:36:27;;;;;;;;2458:11;;:15;2454:148;;2489:53;2518:17;2537:4;2489:28;:53::i;:::-;;2264:344;;:::o;2454:148::-;2573:18;:16;:18::i;:::-;2264:344;;:::o;1375:352:0:-;1458:13;-1:-1:-1;;;;;1450:34:0;;1488:1;1450:39;1446:140;;1506:73;;-1:-1:-1;;;1506:73:0;;-1:-1:-1;;;;;2979:32:87;;1506:73:0;;;2961:51:87;2934:18;;1506:73:0;;;;;;;;1446:140;1638:13;-1:-1:-1;;;;;;;;;;;1591:60:0;;-1:-1:-1;;;;;;1591:60:0;-1:-1:-1;;;;;1591:60:0;;;;;;1662;;2979:32:87;;;2961:51;;1662:60:0;;2949:2:87;2934:18;1662:60:0;;;;;;;1375:352;:::o;1731:443::-;1923:22;;-1:-1:-1;;;;;;;;;;;1328:33:0;-1:-1:-1;;;;;1910:36:0;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;1910:36:0;-1:-1:-1;1890:56:0;;;;:17;;;;:56;;;;;;:::i;:::-;;1957:9;1952:148;1972:15;:22;1968:1;:26;1952:148;;;2032:15;2048:1;2032:18;;;;;;;;:::i;:::-;;;;;;;2009:1;:17;;2027:1;2009:20;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;:41;;;;;;;;;;;;;;;;;;2089:4;2058:1;:8;;:28;2067:15;2083:1;2067:18;;;;;;;;:::i;:::-;;;;;;;;;;;;-1:-1:-1;;;;;;2058:28:0;;;;;;;;;;;-1:-1:-1;2058:28:0;:35;;-1:-1:-1;;2058:35:0;;;;;;;;;;-1:-1:-1;1996:3:0;1952:148;;;;2110:59;2153:15;2110:59;;;;;;:::i;:::-;;;;;;;;1801:373;1731:443;:::o;1671:281:27:-;1748:17;-1:-1:-1;;;;;1748:29:27;;1781:1;1748:34;1744:119;;1805:47;;-1:-1:-1;;;1805:47:27;;-1:-1:-1;;;;;2979:32:87;;1805:47:27;;;2961:51:87;2934:18;;1805:47:27;2815:203:87;1744:119:27;811:66;1872:73;;-1:-1:-1;;;;;;1872:73:27;-1:-1:-1;;;;;1872:73:27;;;;;;;;;;1671:281::o;4691:549:37:-;4774:12;4798;4813:47;4847:6;4855:4;4813:33;:47::i;:::-;4798:62;;4874:7;:72;;;;-1:-1:-1;4918:1:37;4583:16:40;4886:33:37;:59;;;;4944:1;4923:6;-1:-1:-1;;;;;4923:18:37;;:22;4886:59;4870:364;;;4969:25;:23;:25::i;:::-;4962:32;;;;;4870:364;5015:7;5011:223;;;5045:24;;-1:-1:-1;;;5045:24:37;;-1:-1:-1;;;;;2979:32:87;;5045:24:37;;;2961:51:87;2934:18;;5045:24:37;2815:203:87;5011:223:37;4583:16:40;5090:33:37;5086:148;;5139:27;:25;:27::i;:::-;5086:148;;;5204:19;;-1:-1:-1;;;5204:19:37;;;;;;;;;;;5086:148;4788:452;4691:549;;;;;:::o;6113:122:27:-;6163:9;:13;6159:70;;6199:19;;-1:-1:-1;;;6199:19:27;;;;;;;;;;;6159:70;6113:122::o;3383:242:40:-;3466:12;3604:4;3598;3591;3585:11;3578:4;3572;3568:15;3560:6;3553:5;3540:69;3529:80;3383:242;-1:-1:-1;;;3383:242:40:o;4698:334::-;4829:4;4823:11;4862:16;4847:32;;4932:16;4926:4;4919;4907:17;;4892:57;4997:16;4991:4;4987:27;4979:6;4975:40;4969:4;4962:54;4698:334;:::o;5099:223::-;5203:4;5197:11;5247:16;5241:4;5236:3;5221:43;5289:16;5284:3;5277:29;1448:2096:1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;1448:2096:1;;;-1:-1:-1;1448:2096:1;:::i;:::-;;;:::o;:::-;;;;;;;;;;;;;;;14:131:87;-1:-1:-1;;;;;89:31:87;;79:42;;69:70;;135:1;132;125:12;69:70;14:131;:::o;150:127::-;211:10;206:3;202:20;199:1;192:31;242:4;239:1;232:15;266:4;263:1;256:15;282:275;353:2;347:9;418:2;399:13;;-1:-1:-1;;395:27:87;383:40;;-1:-1:-1;;;;;438:34:87;;474:22;;;435:62;432:88;;;500:18;;:::i;:::-;536:2;529:22;282:275;;-1:-1:-1;282:275:87:o;562:154::-;657:13;;679:31;657:13;679:31;:::i;:::-;562:154;;;:::o;721:832::-;785:5;838:3;831:4;823:6;819:17;815:27;805:55;;856:1;853;846:12;805:55;883:13;;-1:-1:-1;;;;;908:30:87;;905:56;;;941:18;;:::i;:::-;987:6;984:1;980:14;1014:30;1038:4;1034:2;1030:13;1014:30;:::i;:::-;1080:19;;;1124:4;1156:15;;;1152:26;;;1115:14;;;;1190:15;;;1187:35;;;1218:1;1215;1208:12;1187:35;1254:4;1246:6;1242:17;1231:28;;1268:254;1284:6;1279:3;1276:15;1268:254;;;1353:10;;-1:-1:-1;;;;;;1396:32:87;;1386:43;;1376:71;;1443:1;1440;1433:12;1376:71;1460:18;;1507:4;1301:14;;;;1498;;;;1268:254;;;1540:7;721:832;-1:-1:-1;;;;;;721:832:87:o;1558:1252::-;1711:6;1719;1727;1735;1788:3;1776:9;1767:7;1763:23;1759:33;1756:53;;;1805:1;1802;1795:12;1756:53;1837:9;1831:16;1856:31;1881:5;1856:31;:::i;:::-;1955:2;1940:18;;1934:25;1906:5;;-1:-1:-1;;;;;;1971:30:87;;1968:50;;;2014:1;2011;2004:12;1968:50;2037:22;;2090:4;2082:13;;2078:27;-1:-1:-1;2068:55:87;;2119:1;2116;2109:12;2068:55;2146:9;;-1:-1:-1;;;;;2167:30:87;;2164:56;;;2200:18;;:::i;:::-;2242:57;2289:2;2266:17;;-1:-1:-1;;2262:31:87;2295:2;2258:40;2242:57;:::i;:::-;2322:6;2315:5;2308:21;2370:7;2365:2;2356:6;2352:2;2348:15;2344:24;2341:37;2338:57;;;2391:1;2388;2381:12;2338:57;2439:6;2434:2;2430;2426:11;2421:2;2414:5;2410:14;2404:42;2491:1;2486:2;2477:6;2470:5;2466:18;2462:27;2455:38;2512:5;2502:15;;;;;2536:65;2597:2;2586:9;2582:18;2536:65;:::i;:::-;2647:2;2632:18;;2626:25;2526:75;;-1:-1:-1;;;;;;2663:32:87;;2660:52;;;2708:1;2705;2698:12;2660:52;2731:73;2796:7;2785:8;2774:9;2770:24;2731:73;:::i;:::-;2721:83;;;1558:1252;;;;;;;:::o;3023:127::-;3084:10;3079:3;3075:20;3072:1;3065:31;3115:4;3112:1;3105:15;3139:4;3136:1;3129:15;3155:636;3343:2;3355:21;;;3425:13;;3328:18;;;3447:22;;;3295:4;;3526:15;;;3500:2;3485:18;;;3295:4;3569:196;3583:6;3580:1;3577:13;3569:196;;;3648:13;;-1:-1:-1;;;;;;3644:40:87;3632:53;;3714:2;3740:15;;;;3705:12;;;;3605:1;3598:9;3569:196;;;-1:-1:-1;3782:3:87;;3155:636;-1:-1:-1;;;;;3155:636:87:o;:::-;1448:2096:1;;;;;;"},"deployedBytecode":{"functionDebugData":{"@ACCESS_MANAGER_329":{"entryPoint":349,"id":329,"parameterSlots":0,"returnSlots":1},"@PASS_THRU_METHODS_315":{"entryPoint":185,"id":315,"parameterSlots":0,"returnSlots":1},"@_7641":{"entryPoint":null,"id":7641,"parameterSlots":0,"returnSlots":0},"@_delegate_434":{"entryPoint":422,"id":434,"parameterSlots":1,"returnSlots":0},"@_delegate_7617":{"entryPoint":744,"id":7617,"parameterSlots":1,"returnSlots":0},"@_fallback_7633":{"entryPoint":167,"id":7633,"parameterSlots":0,"returnSlots":0},"@_implementation_7311":{"entryPoint":413,"id":7311,"parameterSlots":0,"returnSlots":1},"@_skipAC_301":{"entryPoint":null,"id":301,"parameterSlots":1,"returnSlots":1},"@authority_376":{"entryPoint":399,"id":376,"parameterSlots":0,"returnSlots":1},"@getAccessManagedProxyStorage_33":{"entryPoint":null,"id":33,"parameterSlots":0,"returnSlots":1},"@getAddressSlot_10943":{"entryPoint":null,"id":10943,"parameterSlots":1,"returnSlots":1},"@getImplementation_7358":{"entryPoint":705,"id":7358,"parameterSlots":0,"returnSlots":1},"abi_decode_tuple_t_boolt_uint32_fromMemory":{"entryPoint":945,"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_address_t_address_t_bytes4__to_t_address_t_address_t_bytes4__fromStack_reversed":{"entryPoint":null,"id":null,"parameterSlots":4,"returnSlots":1},"abi_encode_tuple_t_array$_t_bytes4_$dyn_memory_ptr__to_t_array$_t_bytes4_$dyn_memory_ptr__fromStack_reversed":{"entryPoint":774,"id":null,"parameterSlots":2,"returnSlots":1},"abi_encode_tuple_t_contract$_IAccessManager_$6842__to_t_address__fromStack_reversed":{"entryPoint":null,"id":null,"parameterSlots":2,"returnSlots":1},"calldata_array_index_range_access_t_bytes_calldata_ptr":{"entryPoint":850,"id":null,"parameterSlots":4,"returnSlots":2},"convert_bytes_to_fixedbytes_from_t_bytes_calldata_ptr_to_t_bytes4":{"entryPoint":889,"id":null,"parameterSlots":2,"returnSlots":1}},"generatedSources":[{"ast":{"nativeSrc":"0:2618:87","nodeType":"YulBlock","src":"0:2618:87","statements":[{"nativeSrc":"6:3:87","nodeType":"YulBlock","src":"6:3:87","statements":[]},{"body":{"nativeSrc":"163:487:87","nodeType":"YulBlock","src":"163:487:87","statements":[{"nativeSrc":"173:32:87","nodeType":"YulVariableDeclaration","src":"173:32:87","value":{"arguments":[{"name":"headStart","nativeSrc":"191:9:87","nodeType":"YulIdentifier","src":"191:9:87"},{"kind":"number","nativeSrc":"202:2:87","nodeType":"YulLiteral","src":"202:2:87","type":"","value":"32"}],"functionName":{"name":"add","nativeSrc":"187:3:87","nodeType":"YulIdentifier","src":"187:3:87"},"nativeSrc":"187:18:87","nodeType":"YulFunctionCall","src":"187:18:87"},"variables":[{"name":"tail_1","nativeSrc":"177:6:87","nodeType":"YulTypedName","src":"177:6:87","type":""}]},{"expression":{"arguments":[{"name":"headStart","nativeSrc":"221:9:87","nodeType":"YulIdentifier","src":"221:9:87"},{"kind":"number","nativeSrc":"232:2:87","nodeType":"YulLiteral","src":"232:2:87","type":"","value":"32"}],"functionName":{"name":"mstore","nativeSrc":"214:6:87","nodeType":"YulIdentifier","src":"214:6:87"},"nativeSrc":"214:21:87","nodeType":"YulFunctionCall","src":"214:21:87"},"nativeSrc":"214:21:87","nodeType":"YulExpressionStatement","src":"214:21:87"},{"nativeSrc":"244:17:87","nodeType":"YulVariableDeclaration","src":"244:17:87","value":{"name":"tail_1","nativeSrc":"255:6:87","nodeType":"YulIdentifier","src":"255:6:87"},"variables":[{"name":"pos","nativeSrc":"248:3:87","nodeType":"YulTypedName","src":"248:3:87","type":""}]},{"nativeSrc":"270:27:87","nodeType":"YulVariableDeclaration","src":"270:27:87","value":{"arguments":[{"name":"value0","nativeSrc":"290:6:87","nodeType":"YulIdentifier","src":"290:6:87"}],"functionName":{"name":"mload","nativeSrc":"284:5:87","nodeType":"YulIdentifier","src":"284:5:87"},"nativeSrc":"284:13:87","nodeType":"YulFunctionCall","src":"284:13:87"},"variables":[{"name":"length","nativeSrc":"274:6:87","nodeType":"YulTypedName","src":"274:6:87","type":""}]},{"expression":{"arguments":[{"name":"tail_1","nativeSrc":"313:6:87","nodeType":"YulIdentifier","src":"313:6:87"},{"name":"length","nativeSrc":"321:6:87","nodeType":"YulIdentifier","src":"321:6:87"}],"functionName":{"name":"mstore","nativeSrc":"306:6:87","nodeType":"YulIdentifier","src":"306:6:87"},"nativeSrc":"306:22:87","nodeType":"YulFunctionCall","src":"306:22:87"},"nativeSrc":"306:22:87","nodeType":"YulExpressionStatement","src":"306:22:87"},{"nativeSrc":"337:25:87","nodeType":"YulAssignment","src":"337:25:87","value":{"arguments":[{"name":"headStart","nativeSrc":"348:9:87","nodeType":"YulIdentifier","src":"348:9:87"},{"kind":"number","nativeSrc":"359:2:87","nodeType":"YulLiteral","src":"359:2:87","type":"","value":"64"}],"functionName":{"name":"add","nativeSrc":"344:3:87","nodeType":"YulIdentifier","src":"344:3:87"},"nativeSrc":"344:18:87","nodeType":"YulFunctionCall","src":"344:18:87"},"variableNames":[{"name":"pos","nativeSrc":"337:3:87","nodeType":"YulIdentifier","src":"337:3:87"}]},{"nativeSrc":"371:29:87","nodeType":"YulVariableDeclaration","src":"371:29:87","value":{"arguments":[{"name":"value0","nativeSrc":"389:6:87","nodeType":"YulIdentifier","src":"389:6:87"},{"kind":"number","nativeSrc":"397:2:87","nodeType":"YulLiteral","src":"397:2:87","type":"","value":"32"}],"functionName":{"name":"add","nativeSrc":"385:3:87","nodeType":"YulIdentifier","src":"385:3:87"},"nativeSrc":"385:15:87","nodeType":"YulFunctionCall","src":"385:15:87"},"variables":[{"name":"srcPtr","nativeSrc":"375:6:87","nodeType":"YulTypedName","src":"375:6:87","type":""}]},{"nativeSrc":"409:10:87","nodeType":"YulVariableDeclaration","src":"409:10:87","value":{"kind":"number","nativeSrc":"418:1:87","nodeType":"YulLiteral","src":"418:1:87","type":"","value":"0"},"variables":[{"name":"i","nativeSrc":"413:1:87","nodeType":"YulTypedName","src":"413:1:87","type":""}]},{"body":{"nativeSrc":"477:147:87","nodeType":"YulBlock","src":"477:147:87","statements":[{"expression":{"arguments":[{"name":"pos","nativeSrc":"498:3:87","nodeType":"YulIdentifier","src":"498:3:87"},{"arguments":[{"arguments":[{"name":"srcPtr","nativeSrc":"513:6:87","nodeType":"YulIdentifier","src":"513:6:87"}],"functionName":{"name":"mload","nativeSrc":"507:5:87","nodeType":"YulIdentifier","src":"507:5:87"},"nativeSrc":"507:13:87","nodeType":"YulFunctionCall","src":"507:13:87"},{"arguments":[{"kind":"number","nativeSrc":"526:3:87","nodeType":"YulLiteral","src":"526:3:87","type":"","value":"224"},{"kind":"number","nativeSrc":"531:10:87","nodeType":"YulLiteral","src":"531:10:87","type":"","value":"0xffffffff"}],"functionName":{"name":"shl","nativeSrc":"522:3:87","nodeType":"YulIdentifier","src":"522:3:87"},"nativeSrc":"522:20:87","nodeType":"YulFunctionCall","src":"522:20:87"}],"functionName":{"name":"and","nativeSrc":"503:3:87","nodeType":"YulIdentifier","src":"503:3:87"},"nativeSrc":"503:40:87","nodeType":"YulFunctionCall","src":"503:40:87"}],"functionName":{"name":"mstore","nativeSrc":"491:6:87","nodeType":"YulIdentifier","src":"491:6:87"},"nativeSrc":"491:53:87","nodeType":"YulFunctionCall","src":"491:53:87"},"nativeSrc":"491:53:87","nodeType":"YulExpressionStatement","src":"491:53:87"},{"nativeSrc":"557:19:87","nodeType":"YulAssignment","src":"557:19:87","value":{"arguments":[{"name":"pos","nativeSrc":"568:3:87","nodeType":"YulIdentifier","src":"568:3:87"},{"kind":"number","nativeSrc":"573:2:87","nodeType":"YulLiteral","src":"573:2:87","type":"","value":"32"}],"functionName":{"name":"add","nativeSrc":"564:3:87","nodeType":"YulIdentifier","src":"564:3:87"},"nativeSrc":"564:12:87","nodeType":"YulFunctionCall","src":"564:12:87"},"variableNames":[{"name":"pos","nativeSrc":"557:3:87","nodeType":"YulIdentifier","src":"557:3:87"}]},{"nativeSrc":"589:25:87","nodeType":"YulAssignment","src":"589:25:87","value":{"arguments":[{"name":"srcPtr","nativeSrc":"603:6:87","nodeType":"YulIdentifier","src":"603:6:87"},{"kind":"number","nativeSrc":"611:2:87","nodeType":"YulLiteral","src":"611:2:87","type":"","value":"32"}],"functionName":{"name":"add","nativeSrc":"599:3:87","nodeType":"YulIdentifier","src":"599:3:87"},"nativeSrc":"599:15:87","nodeType":"YulFunctionCall","src":"599:15:87"},"variableNames":[{"name":"srcPtr","nativeSrc":"589:6:87","nodeType":"YulIdentifier","src":"589:6:87"}]}]},"condition":{"arguments":[{"name":"i","nativeSrc":"439:1:87","nodeType":"YulIdentifier","src":"439:1:87"},{"name":"length","nativeSrc":"442:6:87","nodeType":"YulIdentifier","src":"442:6:87"}],"functionName":{"name":"lt","nativeSrc":"436:2:87","nodeType":"YulIdentifier","src":"436:2:87"},"nativeSrc":"436:13:87","nodeType":"YulFunctionCall","src":"436:13:87"},"nativeSrc":"428:196:87","nodeType":"YulForLoop","post":{"nativeSrc":"450:18:87","nodeType":"YulBlock","src":"450:18:87","statements":[{"nativeSrc":"452:14:87","nodeType":"YulAssignment","src":"452:14:87","value":{"arguments":[{"name":"i","nativeSrc":"461:1:87","nodeType":"YulIdentifier","src":"461:1:87"},{"kind":"number","nativeSrc":"464:1:87","nodeType":"YulLiteral","src":"464:1:87","type":"","value":"1"}],"functionName":{"name":"add","nativeSrc":"457:3:87","nodeType":"YulIdentifier","src":"457:3:87"},"nativeSrc":"457:9:87","nodeType":"YulFunctionCall","src":"457:9:87"},"variableNames":[{"name":"i","nativeSrc":"452:1:87","nodeType":"YulIdentifier","src":"452:1:87"}]}]},"pre":{"nativeSrc":"432:3:87","nodeType":"YulBlock","src":"432:3:87","statements":[]},"src":"428:196:87"},{"nativeSrc":"633:11:87","nodeType":"YulAssignment","src":"633:11:87","value":{"name":"pos","nativeSrc":"641:3:87","nodeType":"YulIdentifier","src":"641:3:87"},"variableNames":[{"name":"tail","nativeSrc":"633:4:87","nodeType":"YulIdentifier","src":"633:4:87"}]}]},"name":"abi_encode_tuple_t_array$_t_bytes4_$dyn_memory_ptr__to_t_array$_t_bytes4_$dyn_memory_ptr__fromStack_reversed","nativeSrc":"14:636:87","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nativeSrc":"132:9:87","nodeType":"YulTypedName","src":"132:9:87","type":""},{"name":"value0","nativeSrc":"143:6:87","nodeType":"YulTypedName","src":"143:6:87","type":""}],"returnVariables":[{"name":"tail","nativeSrc":"154:4:87","nodeType":"YulTypedName","src":"154:4:87","type":""}],"src":"14:636:87"},{"body":{"nativeSrc":"779:102:87","nodeType":"YulBlock","src":"779:102:87","statements":[{"nativeSrc":"789:26:87","nodeType":"YulAssignment","src":"789:26:87","value":{"arguments":[{"name":"headStart","nativeSrc":"801:9:87","nodeType":"YulIdentifier","src":"801:9:87"},{"kind":"number","nativeSrc":"812:2:87","nodeType":"YulLiteral","src":"812:2:87","type":"","value":"32"}],"functionName":{"name":"add","nativeSrc":"797:3:87","nodeType":"YulIdentifier","src":"797:3:87"},"nativeSrc":"797:18:87","nodeType":"YulFunctionCall","src":"797:18:87"},"variableNames":[{"name":"tail","nativeSrc":"789:4:87","nodeType":"YulIdentifier","src":"789:4:87"}]},{"expression":{"arguments":[{"name":"headStart","nativeSrc":"831:9:87","nodeType":"YulIdentifier","src":"831:9:87"},{"arguments":[{"name":"value0","nativeSrc":"846:6:87","nodeType":"YulIdentifier","src":"846:6:87"},{"arguments":[{"arguments":[{"kind":"number","nativeSrc":"862:3:87","nodeType":"YulLiteral","src":"862:3:87","type":"","value":"160"},{"kind":"number","nativeSrc":"867:1:87","nodeType":"YulLiteral","src":"867:1:87","type":"","value":"1"}],"functionName":{"name":"shl","nativeSrc":"858:3:87","nodeType":"YulIdentifier","src":"858:3:87"},"nativeSrc":"858:11:87","nodeType":"YulFunctionCall","src":"858:11:87"},{"kind":"number","nativeSrc":"871:1:87","nodeType":"YulLiteral","src":"871:1:87","type":"","value":"1"}],"functionName":{"name":"sub","nativeSrc":"854:3:87","nodeType":"YulIdentifier","src":"854:3:87"},"nativeSrc":"854:19:87","nodeType":"YulFunctionCall","src":"854:19:87"}],"functionName":{"name":"and","nativeSrc":"842:3:87","nodeType":"YulIdentifier","src":"842:3:87"},"nativeSrc":"842:32:87","nodeType":"YulFunctionCall","src":"842:32:87"}],"functionName":{"name":"mstore","nativeSrc":"824:6:87","nodeType":"YulIdentifier","src":"824:6:87"},"nativeSrc":"824:51:87","nodeType":"YulFunctionCall","src":"824:51:87"},"nativeSrc":"824:51:87","nodeType":"YulExpressionStatement","src":"824:51:87"}]},"name":"abi_encode_tuple_t_contract$_IAccessManager_$6842__to_t_address__fromStack_reversed","nativeSrc":"655:226:87","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nativeSrc":"748:9:87","nodeType":"YulTypedName","src":"748:9:87","type":""},{"name":"value0","nativeSrc":"759:6:87","nodeType":"YulTypedName","src":"759:6:87","type":""}],"returnVariables":[{"name":"tail","nativeSrc":"770:4:87","nodeType":"YulTypedName","src":"770:4:87","type":""}],"src":"655:226:87"},{"body":{"nativeSrc":"987:102:87","nodeType":"YulBlock","src":"987:102:87","statements":[{"nativeSrc":"997:26:87","nodeType":"YulAssignment","src":"997:26:87","value":{"arguments":[{"name":"headStart","nativeSrc":"1009:9:87","nodeType":"YulIdentifier","src":"1009:9:87"},{"kind":"number","nativeSrc":"1020:2:87","nodeType":"YulLiteral","src":"1020:2:87","type":"","value":"32"}],"functionName":{"name":"add","nativeSrc":"1005:3:87","nodeType":"YulIdentifier","src":"1005:3:87"},"nativeSrc":"1005:18:87","nodeType":"YulFunctionCall","src":"1005:18:87"},"variableNames":[{"name":"tail","nativeSrc":"997:4:87","nodeType":"YulIdentifier","src":"997:4:87"}]},{"expression":{"arguments":[{"name":"headStart","nativeSrc":"1039:9:87","nodeType":"YulIdentifier","src":"1039:9:87"},{"arguments":[{"name":"value0","nativeSrc":"1054:6:87","nodeType":"YulIdentifier","src":"1054:6:87"},{"arguments":[{"arguments":[{"kind":"number","nativeSrc":"1070:3:87","nodeType":"YulLiteral","src":"1070:3:87","type":"","value":"160"},{"kind":"number","nativeSrc":"1075:1:87","nodeType":"YulLiteral","src":"1075:1:87","type":"","value":"1"}],"functionName":{"name":"shl","nativeSrc":"1066:3:87","nodeType":"YulIdentifier","src":"1066:3:87"},"nativeSrc":"1066:11:87","nodeType":"YulFunctionCall","src":"1066:11:87"},{"kind":"number","nativeSrc":"1079:1:87","nodeType":"YulLiteral","src":"1079:1:87","type":"","value":"1"}],"functionName":{"name":"sub","nativeSrc":"1062:3:87","nodeType":"YulIdentifier","src":"1062:3:87"},"nativeSrc":"1062:19:87","nodeType":"YulFunctionCall","src":"1062:19:87"}],"functionName":{"name":"and","nativeSrc":"1050:3:87","nodeType":"YulIdentifier","src":"1050:3:87"},"nativeSrc":"1050:32:87","nodeType":"YulFunctionCall","src":"1050:32:87"}],"functionName":{"name":"mstore","nativeSrc":"1032:6:87","nodeType":"YulIdentifier","src":"1032:6:87"},"nativeSrc":"1032:51:87","nodeType":"YulFunctionCall","src":"1032:51:87"},"nativeSrc":"1032:51:87","nodeType":"YulExpressionStatement","src":"1032:51:87"}]},"name":"abi_encode_tuple_t_address__to_t_address__fromStack_reversed","nativeSrc":"886:203:87","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nativeSrc":"956:9:87","nodeType":"YulTypedName","src":"956:9:87","type":""},{"name":"value0","nativeSrc":"967:6:87","nodeType":"YulTypedName","src":"967:6:87","type":""}],"returnVariables":[{"name":"tail","nativeSrc":"978:4:87","nodeType":"YulTypedName","src":"978:4:87","type":""}],"src":"886:203:87"},{"body":{"nativeSrc":"1224:201:87","nodeType":"YulBlock","src":"1224:201:87","statements":[{"body":{"nativeSrc":"1262:16:87","nodeType":"YulBlock","src":"1262:16:87","statements":[{"expression":{"arguments":[{"kind":"number","nativeSrc":"1271:1:87","nodeType":"YulLiteral","src":"1271:1:87","type":"","value":"0"},{"kind":"number","nativeSrc":"1274:1:87","nodeType":"YulLiteral","src":"1274:1:87","type":"","value":"0"}],"functionName":{"name":"revert","nativeSrc":"1264:6:87","nodeType":"YulIdentifier","src":"1264:6:87"},"nativeSrc":"1264:12:87","nodeType":"YulFunctionCall","src":"1264:12:87"},"nativeSrc":"1264:12:87","nodeType":"YulExpressionStatement","src":"1264:12:87"}]},"condition":{"arguments":[{"name":"startIndex","nativeSrc":"1240:10:87","nodeType":"YulIdentifier","src":"1240:10:87"},{"name":"endIndex","nativeSrc":"1252:8:87","nodeType":"YulIdentifier","src":"1252:8:87"}],"functionName":{"name":"gt","nativeSrc":"1237:2:87","nodeType":"YulIdentifier","src":"1237:2:87"},"nativeSrc":"1237:24:87","nodeType":"YulFunctionCall","src":"1237:24:87"},"nativeSrc":"1234:44:87","nodeType":"YulIf","src":"1234:44:87"},{"body":{"nativeSrc":"1311:16:87","nodeType":"YulBlock","src":"1311:16:87","statements":[{"expression":{"arguments":[{"kind":"number","nativeSrc":"1320:1:87","nodeType":"YulLiteral","src":"1320:1:87","type":"","value":"0"},{"kind":"number","nativeSrc":"1323:1:87","nodeType":"YulLiteral","src":"1323:1:87","type":"","value":"0"}],"functionName":{"name":"revert","nativeSrc":"1313:6:87","nodeType":"YulIdentifier","src":"1313:6:87"},"nativeSrc":"1313:12:87","nodeType":"YulFunctionCall","src":"1313:12:87"},"nativeSrc":"1313:12:87","nodeType":"YulExpressionStatement","src":"1313:12:87"}]},"condition":{"arguments":[{"name":"endIndex","nativeSrc":"1293:8:87","nodeType":"YulIdentifier","src":"1293:8:87"},{"name":"length","nativeSrc":"1303:6:87","nodeType":"YulIdentifier","src":"1303:6:87"}],"functionName":{"name":"gt","nativeSrc":"1290:2:87","nodeType":"YulIdentifier","src":"1290:2:87"},"nativeSrc":"1290:20:87","nodeType":"YulFunctionCall","src":"1290:20:87"},"nativeSrc":"1287:40:87","nodeType":"YulIf","src":"1287:40:87"},{"nativeSrc":"1336:36:87","nodeType":"YulAssignment","src":"1336:36:87","value":{"arguments":[{"name":"offset","nativeSrc":"1353:6:87","nodeType":"YulIdentifier","src":"1353:6:87"},{"name":"startIndex","nativeSrc":"1361:10:87","nodeType":"YulIdentifier","src":"1361:10:87"}],"functionName":{"name":"add","nativeSrc":"1349:3:87","nodeType":"YulIdentifier","src":"1349:3:87"},"nativeSrc":"1349:23:87","nodeType":"YulFunctionCall","src":"1349:23:87"},"variableNames":[{"name":"offsetOut","nativeSrc":"1336:9:87","nodeType":"YulIdentifier","src":"1336:9:87"}]},{"nativeSrc":"1381:38:87","nodeType":"YulAssignment","src":"1381:38:87","value":{"arguments":[{"name":"endIndex","nativeSrc":"1398:8:87","nodeType":"YulIdentifier","src":"1398:8:87"},{"name":"startIndex","nativeSrc":"1408:10:87","nodeType":"YulIdentifier","src":"1408:10:87"}],"functionName":{"name":"sub","nativeSrc":"1394:3:87","nodeType":"YulIdentifier","src":"1394:3:87"},"nativeSrc":"1394:25:87","nodeType":"YulFunctionCall","src":"1394:25:87"},"variableNames":[{"name":"lengthOut","nativeSrc":"1381:9:87","nodeType":"YulIdentifier","src":"1381:9:87"}]}]},"name":"calldata_array_index_range_access_t_bytes_calldata_ptr","nativeSrc":"1094:331:87","nodeType":"YulFunctionDefinition","parameters":[{"name":"offset","nativeSrc":"1158:6:87","nodeType":"YulTypedName","src":"1158:6:87","type":""},{"name":"length","nativeSrc":"1166:6:87","nodeType":"YulTypedName","src":"1166:6:87","type":""},{"name":"startIndex","nativeSrc":"1174:10:87","nodeType":"YulTypedName","src":"1174:10:87","type":""},{"name":"endIndex","nativeSrc":"1186:8:87","nodeType":"YulTypedName","src":"1186:8:87","type":""}],"returnVariables":[{"name":"offsetOut","nativeSrc":"1199:9:87","nodeType":"YulTypedName","src":"1199:9:87","type":""},{"name":"lengthOut","nativeSrc":"1210:9:87","nodeType":"YulTypedName","src":"1210:9:87","type":""}],"src":"1094:331:87"},{"body":{"nativeSrc":"1530:238:87","nodeType":"YulBlock","src":"1530:238:87","statements":[{"nativeSrc":"1540:29:87","nodeType":"YulVariableDeclaration","src":"1540:29:87","value":{"arguments":[{"name":"array","nativeSrc":"1563:5:87","nodeType":"YulIdentifier","src":"1563:5:87"}],"functionName":{"name":"calldataload","nativeSrc":"1550:12:87","nodeType":"YulIdentifier","src":"1550:12:87"},"nativeSrc":"1550:19:87","nodeType":"YulFunctionCall","src":"1550:19:87"},"variables":[{"name":"_1","nativeSrc":"1544:2:87","nodeType":"YulTypedName","src":"1544:2:87","type":""}]},{"nativeSrc":"1578:38:87","nodeType":"YulAssignment","src":"1578:38:87","value":{"arguments":[{"name":"_1","nativeSrc":"1591:2:87","nodeType":"YulIdentifier","src":"1591:2:87"},{"arguments":[{"kind":"number","nativeSrc":"1599:3:87","nodeType":"YulLiteral","src":"1599:3:87","type":"","value":"224"},{"kind":"number","nativeSrc":"1604:10:87","nodeType":"YulLiteral","src":"1604:10:87","type":"","value":"0xffffffff"}],"functionName":{"name":"shl","nativeSrc":"1595:3:87","nodeType":"YulIdentifier","src":"1595:3:87"},"nativeSrc":"1595:20:87","nodeType":"YulFunctionCall","src":"1595:20:87"}],"functionName":{"name":"and","nativeSrc":"1587:3:87","nodeType":"YulIdentifier","src":"1587:3:87"},"nativeSrc":"1587:29:87","nodeType":"YulFunctionCall","src":"1587:29:87"},"variableNames":[{"name":"value","nativeSrc":"1578:5:87","nodeType":"YulIdentifier","src":"1578:5:87"}]},{"body":{"nativeSrc":"1647:115:87","nodeType":"YulBlock","src":"1647:115:87","statements":[{"nativeSrc":"1661:91:87","nodeType":"YulAssignment","src":"1661:91:87","value":{"arguments":[{"arguments":[{"name":"_1","nativeSrc":"1678:2:87","nodeType":"YulIdentifier","src":"1678:2:87"},{"arguments":[{"arguments":[{"kind":"number","nativeSrc":"1690:1:87","nodeType":"YulLiteral","src":"1690:1:87","type":"","value":"3"},{"arguments":[{"kind":"number","nativeSrc":"1697:1:87","nodeType":"YulLiteral","src":"1697:1:87","type":"","value":"4"},{"name":"len","nativeSrc":"1700:3:87","nodeType":"YulIdentifier","src":"1700:3:87"}],"functionName":{"name":"sub","nativeSrc":"1693:3:87","nodeType":"YulIdentifier","src":"1693:3:87"},"nativeSrc":"1693:11:87","nodeType":"YulFunctionCall","src":"1693:11:87"}],"functionName":{"name":"shl","nativeSrc":"1686:3:87","nodeType":"YulIdentifier","src":"1686:3:87"},"nativeSrc":"1686:19:87","nodeType":"YulFunctionCall","src":"1686:19:87"},{"arguments":[{"kind":"number","nativeSrc":"1711:3:87","nodeType":"YulLiteral","src":"1711:3:87","type":"","value":"224"},{"kind":"number","nativeSrc":"1716:10:87","nodeType":"YulLiteral","src":"1716:10:87","type":"","value":"0xffffffff"}],"functionName":{"name":"shl","nativeSrc":"1707:3:87","nodeType":"YulIdentifier","src":"1707:3:87"},"nativeSrc":"1707:20:87","nodeType":"YulFunctionCall","src":"1707:20:87"}],"functionName":{"name":"shl","nativeSrc":"1682:3:87","nodeType":"YulIdentifier","src":"1682:3:87"},"nativeSrc":"1682:46:87","nodeType":"YulFunctionCall","src":"1682:46:87"}],"functionName":{"name":"and","nativeSrc":"1674:3:87","nodeType":"YulIdentifier","src":"1674:3:87"},"nativeSrc":"1674:55:87","nodeType":"YulFunctionCall","src":"1674:55:87"},{"arguments":[{"kind":"number","nativeSrc":"1735:3:87","nodeType":"YulLiteral","src":"1735:3:87","type":"","value":"224"},{"kind":"number","nativeSrc":"1740:10:87","nodeType":"YulLiteral","src":"1740:10:87","type":"","value":"0xffffffff"}],"functionName":{"name":"shl","nativeSrc":"1731:3:87","nodeType":"YulIdentifier","src":"1731:3:87"},"nativeSrc":"1731:20:87","nodeType":"YulFunctionCall","src":"1731:20:87"}],"functionName":{"name":"and","nativeSrc":"1670:3:87","nodeType":"YulIdentifier","src":"1670:3:87"},"nativeSrc":"1670:82:87","nodeType":"YulFunctionCall","src":"1670:82:87"},"variableNames":[{"name":"value","nativeSrc":"1661:5:87","nodeType":"YulIdentifier","src":"1661:5:87"}]}]},"condition":{"arguments":[{"name":"len","nativeSrc":"1631:3:87","nodeType":"YulIdentifier","src":"1631:3:87"},{"kind":"number","nativeSrc":"1636:1:87","nodeType":"YulLiteral","src":"1636:1:87","type":"","value":"4"}],"functionName":{"name":"lt","nativeSrc":"1628:2:87","nodeType":"YulIdentifier","src":"1628:2:87"},"nativeSrc":"1628:10:87","nodeType":"YulFunctionCall","src":"1628:10:87"},"nativeSrc":"1625:137:87","nodeType":"YulIf","src":"1625:137:87"}]},"name":"convert_bytes_to_fixedbytes_from_t_bytes_calldata_ptr_to_t_bytes4","nativeSrc":"1430:338:87","nodeType":"YulFunctionDefinition","parameters":[{"name":"array","nativeSrc":"1505:5:87","nodeType":"YulTypedName","src":"1505:5:87","type":""},{"name":"len","nativeSrc":"1512:3:87","nodeType":"YulTypedName","src":"1512:3:87","type":""}],"returnVariables":[{"name":"value","nativeSrc":"1520:5:87","nodeType":"YulTypedName","src":"1520:5:87","type":""}],"src":"1430:338:87"},{"body":{"nativeSrc":"1928:241:87","nodeType":"YulBlock","src":"1928:241:87","statements":[{"nativeSrc":"1938:26:87","nodeType":"YulAssignment","src":"1938:26:87","value":{"arguments":[{"name":"headStart","nativeSrc":"1950:9:87","nodeType":"YulIdentifier","src":"1950:9:87"},{"kind":"number","nativeSrc":"1961:2:87","nodeType":"YulLiteral","src":"1961:2:87","type":"","value":"96"}],"functionName":{"name":"add","nativeSrc":"1946:3:87","nodeType":"YulIdentifier","src":"1946:3:87"},"nativeSrc":"1946:18:87","nodeType":"YulFunctionCall","src":"1946:18:87"},"variableNames":[{"name":"tail","nativeSrc":"1938:4:87","nodeType":"YulIdentifier","src":"1938:4:87"}]},{"expression":{"arguments":[{"name":"headStart","nativeSrc":"1980:9:87","nodeType":"YulIdentifier","src":"1980:9:87"},{"arguments":[{"name":"value0","nativeSrc":"1995:6:87","nodeType":"YulIdentifier","src":"1995:6:87"},{"arguments":[{"arguments":[{"kind":"number","nativeSrc":"2011:3:87","nodeType":"YulLiteral","src":"2011:3:87","type":"","value":"160"},{"kind":"number","nativeSrc":"2016:1:87","nodeType":"YulLiteral","src":"2016:1:87","type":"","value":"1"}],"functionName":{"name":"shl","nativeSrc":"2007:3:87","nodeType":"YulIdentifier","src":"2007:3:87"},"nativeSrc":"2007:11:87","nodeType":"YulFunctionCall","src":"2007:11:87"},{"kind":"number","nativeSrc":"2020:1:87","nodeType":"YulLiteral","src":"2020:1:87","type":"","value":"1"}],"functionName":{"name":"sub","nativeSrc":"2003:3:87","nodeType":"YulIdentifier","src":"2003:3:87"},"nativeSrc":"2003:19:87","nodeType":"YulFunctionCall","src":"2003:19:87"}],"functionName":{"name":"and","nativeSrc":"1991:3:87","nodeType":"YulIdentifier","src":"1991:3:87"},"nativeSrc":"1991:32:87","nodeType":"YulFunctionCall","src":"1991:32:87"}],"functionName":{"name":"mstore","nativeSrc":"1973:6:87","nodeType":"YulIdentifier","src":"1973:6:87"},"nativeSrc":"1973:51:87","nodeType":"YulFunctionCall","src":"1973:51:87"},"nativeSrc":"1973:51:87","nodeType":"YulExpressionStatement","src":"1973:51:87"},{"expression":{"arguments":[{"arguments":[{"name":"headStart","nativeSrc":"2044:9:87","nodeType":"YulIdentifier","src":"2044:9:87"},{"kind":"number","nativeSrc":"2055:2:87","nodeType":"YulLiteral","src":"2055:2:87","type":"","value":"32"}],"functionName":{"name":"add","nativeSrc":"2040:3:87","nodeType":"YulIdentifier","src":"2040:3:87"},"nativeSrc":"2040:18:87","nodeType":"YulFunctionCall","src":"2040:18:87"},{"arguments":[{"name":"value1","nativeSrc":"2064:6:87","nodeType":"YulIdentifier","src":"2064:6:87"},{"arguments":[{"arguments":[{"kind":"number","nativeSrc":"2080:3:87","nodeType":"YulLiteral","src":"2080:3:87","type":"","value":"160"},{"kind":"number","nativeSrc":"2085:1:87","nodeType":"YulLiteral","src":"2085:1:87","type":"","value":"1"}],"functionName":{"name":"shl","nativeSrc":"2076:3:87","nodeType":"YulIdentifier","src":"2076:3:87"},"nativeSrc":"2076:11:87","nodeType":"YulFunctionCall","src":"2076:11:87"},{"kind":"number","nativeSrc":"2089:1:87","nodeType":"YulLiteral","src":"2089:1:87","type":"","value":"1"}],"functionName":{"name":"sub","nativeSrc":"2072:3:87","nodeType":"YulIdentifier","src":"2072:3:87"},"nativeSrc":"2072:19:87","nodeType":"YulFunctionCall","src":"2072:19:87"}],"functionName":{"name":"and","nativeSrc":"2060:3:87","nodeType":"YulIdentifier","src":"2060:3:87"},"nativeSrc":"2060:32:87","nodeType":"YulFunctionCall","src":"2060:32:87"}],"functionName":{"name":"mstore","nativeSrc":"2033:6:87","nodeType":"YulIdentifier","src":"2033:6:87"},"nativeSrc":"2033:60:87","nodeType":"YulFunctionCall","src":"2033:60:87"},"nativeSrc":"2033:60:87","nodeType":"YulExpressionStatement","src":"2033:60:87"},{"expression":{"arguments":[{"arguments":[{"name":"headStart","nativeSrc":"2113:9:87","nodeType":"YulIdentifier","src":"2113:9:87"},{"kind":"number","nativeSrc":"2124:2:87","nodeType":"YulLiteral","src":"2124:2:87","type":"","value":"64"}],"functionName":{"name":"add","nativeSrc":"2109:3:87","nodeType":"YulIdentifier","src":"2109:3:87"},"nativeSrc":"2109:18:87","nodeType":"YulFunctionCall","src":"2109:18:87"},{"arguments":[{"name":"value2","nativeSrc":"2133:6:87","nodeType":"YulIdentifier","src":"2133:6:87"},{"arguments":[{"kind":"number","nativeSrc":"2145:3:87","nodeType":"YulLiteral","src":"2145:3:87","type":"","value":"224"},{"kind":"number","nativeSrc":"2150:10:87","nodeType":"YulLiteral","src":"2150:10:87","type":"","value":"0xffffffff"}],"functionName":{"name":"shl","nativeSrc":"2141:3:87","nodeType":"YulIdentifier","src":"2141:3:87"},"nativeSrc":"2141:20:87","nodeType":"YulFunctionCall","src":"2141:20:87"}],"functionName":{"name":"and","nativeSrc":"2129:3:87","nodeType":"YulIdentifier","src":"2129:3:87"},"nativeSrc":"2129:33:87","nodeType":"YulFunctionCall","src":"2129:33:87"}],"functionName":{"name":"mstore","nativeSrc":"2102:6:87","nodeType":"YulIdentifier","src":"2102:6:87"},"nativeSrc":"2102:61:87","nodeType":"YulFunctionCall","src":"2102:61:87"},"nativeSrc":"2102:61:87","nodeType":"YulExpressionStatement","src":"2102:61:87"}]},"name":"abi_encode_tuple_t_address_t_address_t_bytes4__to_t_address_t_address_t_bytes4__fromStack_reversed","nativeSrc":"1773:396:87","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nativeSrc":"1881:9:87","nodeType":"YulTypedName","src":"1881:9:87","type":""},{"name":"value2","nativeSrc":"1892:6:87","nodeType":"YulTypedName","src":"1892:6:87","type":""},{"name":"value1","nativeSrc":"1900:6:87","nodeType":"YulTypedName","src":"1900:6:87","type":""},{"name":"value0","nativeSrc":"1908:6:87","nodeType":"YulTypedName","src":"1908:6:87","type":""}],"returnVariables":[{"name":"tail","nativeSrc":"1919:4:87","nodeType":"YulTypedName","src":"1919:4:87","type":""}],"src":"1773:396:87"},{"body":{"nativeSrc":"2268:348:87","nodeType":"YulBlock","src":"2268:348:87","statements":[{"body":{"nativeSrc":"2314:16:87","nodeType":"YulBlock","src":"2314:16:87","statements":[{"expression":{"arguments":[{"kind":"number","nativeSrc":"2323:1:87","nodeType":"YulLiteral","src":"2323:1:87","type":"","value":"0"},{"kind":"number","nativeSrc":"2326:1:87","nodeType":"YulLiteral","src":"2326:1:87","type":"","value":"0"}],"functionName":{"name":"revert","nativeSrc":"2316:6:87","nodeType":"YulIdentifier","src":"2316:6:87"},"nativeSrc":"2316:12:87","nodeType":"YulFunctionCall","src":"2316:12:87"},"nativeSrc":"2316:12:87","nodeType":"YulExpressionStatement","src":"2316:12:87"}]},"condition":{"arguments":[{"arguments":[{"name":"dataEnd","nativeSrc":"2289:7:87","nodeType":"YulIdentifier","src":"2289:7:87"},{"name":"headStart","nativeSrc":"2298:9:87","nodeType":"YulIdentifier","src":"2298:9:87"}],"functionName":{"name":"sub","nativeSrc":"2285:3:87","nodeType":"YulIdentifier","src":"2285:3:87"},"nativeSrc":"2285:23:87","nodeType":"YulFunctionCall","src":"2285:23:87"},{"kind":"number","nativeSrc":"2310:2:87","nodeType":"YulLiteral","src":"2310:2:87","type":"","value":"64"}],"functionName":{"name":"slt","nativeSrc":"2281:3:87","nodeType":"YulIdentifier","src":"2281:3:87"},"nativeSrc":"2281:32:87","nodeType":"YulFunctionCall","src":"2281:32:87"},"nativeSrc":"2278:52:87","nodeType":"YulIf","src":"2278:52:87"},{"nativeSrc":"2339:29:87","nodeType":"YulVariableDeclaration","src":"2339:29:87","value":{"arguments":[{"name":"headStart","nativeSrc":"2358:9:87","nodeType":"YulIdentifier","src":"2358:9:87"}],"functionName":{"name":"mload","nativeSrc":"2352:5:87","nodeType":"YulIdentifier","src":"2352:5:87"},"nativeSrc":"2352:16:87","nodeType":"YulFunctionCall","src":"2352:16:87"},"variables":[{"name":"value","nativeSrc":"2343:5:87","nodeType":"YulTypedName","src":"2343:5:87","type":""}]},{"body":{"nativeSrc":"2421:16:87","nodeType":"YulBlock","src":"2421:16:87","statements":[{"expression":{"arguments":[{"kind":"number","nativeSrc":"2430:1:87","nodeType":"YulLiteral","src":"2430:1:87","type":"","value":"0"},{"kind":"number","nativeSrc":"2433:1:87","nodeType":"YulLiteral","src":"2433:1:87","type":"","value":"0"}],"functionName":{"name":"revert","nativeSrc":"2423:6:87","nodeType":"YulIdentifier","src":"2423:6:87"},"nativeSrc":"2423:12:87","nodeType":"YulFunctionCall","src":"2423:12:87"},"nativeSrc":"2423:12:87","nodeType":"YulExpressionStatement","src":"2423:12:87"}]},"condition":{"arguments":[{"arguments":[{"name":"value","nativeSrc":"2390:5:87","nodeType":"YulIdentifier","src":"2390:5:87"},{"arguments":[{"arguments":[{"name":"value","nativeSrc":"2411:5:87","nodeType":"YulIdentifier","src":"2411:5:87"}],"functionName":{"name":"iszero","nativeSrc":"2404:6:87","nodeType":"YulIdentifier","src":"2404:6:87"},"nativeSrc":"2404:13:87","nodeType":"YulFunctionCall","src":"2404:13:87"}],"functionName":{"name":"iszero","nativeSrc":"2397:6:87","nodeType":"YulIdentifier","src":"2397:6:87"},"nativeSrc":"2397:21:87","nodeType":"YulFunctionCall","src":"2397:21:87"}],"functionName":{"name":"eq","nativeSrc":"2387:2:87","nodeType":"YulIdentifier","src":"2387:2:87"},"nativeSrc":"2387:32:87","nodeType":"YulFunctionCall","src":"2387:32:87"}],"functionName":{"name":"iszero","nativeSrc":"2380:6:87","nodeType":"YulIdentifier","src":"2380:6:87"},"nativeSrc":"2380:40:87","nodeType":"YulFunctionCall","src":"2380:40:87"},"nativeSrc":"2377:60:87","nodeType":"YulIf","src":"2377:60:87"},{"nativeSrc":"2446:15:87","nodeType":"YulAssignment","src":"2446:15:87","value":{"name":"value","nativeSrc":"2456:5:87","nodeType":"YulIdentifier","src":"2456:5:87"},"variableNames":[{"name":"value0","nativeSrc":"2446:6:87","nodeType":"YulIdentifier","src":"2446:6:87"}]},{"nativeSrc":"2470:40:87","nodeType":"YulVariableDeclaration","src":"2470:40:87","value":{"arguments":[{"arguments":[{"name":"headStart","nativeSrc":"2495:9:87","nodeType":"YulIdentifier","src":"2495:9:87"},{"kind":"number","nativeSrc":"2506:2:87","nodeType":"YulLiteral","src":"2506:2:87","type":"","value":"32"}],"functionName":{"name":"add","nativeSrc":"2491:3:87","nodeType":"YulIdentifier","src":"2491:3:87"},"nativeSrc":"2491:18:87","nodeType":"YulFunctionCall","src":"2491:18:87"}],"functionName":{"name":"mload","nativeSrc":"2485:5:87","nodeType":"YulIdentifier","src":"2485:5:87"},"nativeSrc":"2485:25:87","nodeType":"YulFunctionCall","src":"2485:25:87"},"variables":[{"name":"value_1","nativeSrc":"2474:7:87","nodeType":"YulTypedName","src":"2474:7:87","type":""}]},{"body":{"nativeSrc":"2568:16:87","nodeType":"YulBlock","src":"2568:16:87","statements":[{"expression":{"arguments":[{"kind":"number","nativeSrc":"2577:1:87","nodeType":"YulLiteral","src":"2577:1:87","type":"","value":"0"},{"kind":"number","nativeSrc":"2580:1:87","nodeType":"YulLiteral","src":"2580:1:87","type":"","value":"0"}],"functionName":{"name":"revert","nativeSrc":"2570:6:87","nodeType":"YulIdentifier","src":"2570:6:87"},"nativeSrc":"2570:12:87","nodeType":"YulFunctionCall","src":"2570:12:87"},"nativeSrc":"2570:12:87","nodeType":"YulExpressionStatement","src":"2570:12:87"}]},"condition":{"arguments":[{"arguments":[{"name":"value_1","nativeSrc":"2532:7:87","nodeType":"YulIdentifier","src":"2532:7:87"},{"arguments":[{"name":"value_1","nativeSrc":"2545:7:87","nodeType":"YulIdentifier","src":"2545:7:87"},{"kind":"number","nativeSrc":"2554:10:87","nodeType":"YulLiteral","src":"2554:10:87","type":"","value":"0xffffffff"}],"functionName":{"name":"and","nativeSrc":"2541:3:87","nodeType":"YulIdentifier","src":"2541:3:87"},"nativeSrc":"2541:24:87","nodeType":"YulFunctionCall","src":"2541:24:87"}],"functionName":{"name":"eq","nativeSrc":"2529:2:87","nodeType":"YulIdentifier","src":"2529:2:87"},"nativeSrc":"2529:37:87","nodeType":"YulFunctionCall","src":"2529:37:87"}],"functionName":{"name":"iszero","nativeSrc":"2522:6:87","nodeType":"YulIdentifier","src":"2522:6:87"},"nativeSrc":"2522:45:87","nodeType":"YulFunctionCall","src":"2522:45:87"},"nativeSrc":"2519:65:87","nodeType":"YulIf","src":"2519:65:87"},{"nativeSrc":"2593:17:87","nodeType":"YulAssignment","src":"2593:17:87","value":{"name":"value_1","nativeSrc":"2603:7:87","nodeType":"YulIdentifier","src":"2603:7:87"},"variableNames":[{"name":"value1","nativeSrc":"2593:6:87","nodeType":"YulIdentifier","src":"2593:6:87"}]}]},"name":"abi_decode_tuple_t_boolt_uint32_fromMemory","nativeSrc":"2174:442:87","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nativeSrc":"2226:9:87","nodeType":"YulTypedName","src":"2226:9:87","type":""},{"name":"dataEnd","nativeSrc":"2237:7:87","nodeType":"YulTypedName","src":"2237:7:87","type":""}],"returnVariables":[{"name":"value0","nativeSrc":"2249:6:87","nodeType":"YulTypedName","src":"2249:6:87","type":""},{"name":"value1","nativeSrc":"2257:6:87","nodeType":"YulTypedName","src":"2257:6:87","type":""}],"src":"2174:442:87"}]},"contents":"{\n    { }\n    function abi_encode_tuple_t_array$_t_bytes4_$dyn_memory_ptr__to_t_array$_t_bytes4_$dyn_memory_ptr__fromStack_reversed(headStart, value0) -> tail\n    {\n        let tail_1 := add(headStart, 32)\n        mstore(headStart, 32)\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, 32)\n        let i := 0\n        for { } lt(i, length) { i := add(i, 1) }\n        {\n            mstore(pos, and(mload(srcPtr), shl(224, 0xffffffff)))\n            pos := add(pos, 32)\n            srcPtr := add(srcPtr, 32)\n        }\n        tail := pos\n    }\n    function abi_encode_tuple_t_contract$_IAccessManager_$6842__to_t_address__fromStack_reversed(headStart, value0) -> tail\n    {\n        tail := add(headStart, 32)\n        mstore(headStart, and(value0, sub(shl(160, 1), 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, sub(shl(160, 1), 1)))\n    }\n    function calldata_array_index_range_access_t_bytes_calldata_ptr(offset, length, startIndex, endIndex) -> offsetOut, lengthOut\n    {\n        if gt(startIndex, endIndex) { revert(0, 0) }\n        if gt(endIndex, length) { revert(0, 0) }\n        offsetOut := add(offset, startIndex)\n        lengthOut := sub(endIndex, startIndex)\n    }\n    function convert_bytes_to_fixedbytes_from_t_bytes_calldata_ptr_to_t_bytes4(array, len) -> value\n    {\n        let _1 := calldataload(array)\n        value := and(_1, shl(224, 0xffffffff))\n        if lt(len, 4)\n        {\n            value := and(and(_1, shl(shl(3, sub(4, len)), shl(224, 0xffffffff))), shl(224, 0xffffffff))\n        }\n    }\n    function abi_encode_tuple_t_address_t_address_t_bytes4__to_t_address_t_address_t_bytes4__fromStack_reversed(headStart, value2, value1, value0) -> tail\n    {\n        tail := add(headStart, 96)\n        mstore(headStart, and(value0, sub(shl(160, 1), 1)))\n        mstore(add(headStart, 32), and(value1, sub(shl(160, 1), 1)))\n        mstore(add(headStart, 64), and(value2, shl(224, 0xffffffff)))\n    }\n    function abi_decode_tuple_t_boolt_uint32_fromMemory(headStart, dataEnd) -> value0, value1\n    {\n        if slt(sub(dataEnd, headStart), 64) { revert(0, 0) }\n        let value := mload(headStart)\n        if iszero(eq(value, iszero(iszero(value)))) { revert(0, 0) }\n        value0 := value\n        let value_1 := mload(add(headStart, 32))\n        if iszero(eq(value_1, and(value_1, 0xffffffff))) { revert(0, 0) }\n        value1 := value_1\n    }\n}","id":87,"language":"Yul","name":"#utility.yul"}],"immutableReferences":{},"linkReferences":{},"object":"608060405260043610610033575f3560e01c806314416c031461003d5780633a7b7a3914610067578063bf7e214f14610093575b61003b6100a7565b005b348015610048575f5ffd5b506100516100b9565b60405161005e9190610306565b60405180910390f35b348015610072575f5ffd5b5061007b61015d565b6040516001600160a01b03909116815260200161005e565b34801561009e575f5ffd5b5061007b61018f565b6100b76100b261019d565b6101a6565b565b60607f787c9d7ac910d64252bcea05acd5b7af6d59644e0451a8bb5674587555049c0060010180548060200260200160405190810160405280929190818152602001828054801561015357602002820191905f5260205f20905f905b82829054906101000a900460e01b6001600160e01b031916815260200190600401906020826003010492830192600103820291508084116101155790505b5050505050905090565b5f7f787c9d7ac910d64252bcea05acd5b7af6d59644e0451a8bb5674587555049c005b546001600160a01b0316919050565b5f61019861015d565b905090565b5f6101986102c1565b5f6101b46004823681610352565b6101bd91610379565b90505f610201826001600160e01b0319165f9081527f787c9d7ac910d64252bcea05acd5b7af6d59644e0451a8bb5674587555049c02602052604090205460ff1690565b9050806102b35761021061015d565b60405163b700961360e01b81523360048201523060248201526001600160e01b0319841660448201526001600160a01b03919091169063b7009613906064016040805180830381865afa158015610269573d5f5f3e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061028d91906103b1565b509050806102b35760405162d1953b60e31b815233600482015260240160405180910390fd5b6102bc836102e8565b505050565b5f7f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc610180565b365f5f375f5f365f845af43d5f5f3e808015610302573d5ff35b3d5ffd5b602080825282518282018190525f918401906040840190835b818110156103475783516001600160e01b03191683526020938401939092019160010161031f565b509095945050505050565b5f5f85851115610360575f5ffd5b8386111561036c575f5ffd5b5050820193919092039150565b80356001600160e01b031981169060048410156103aa576001600160e01b0319600485900360031b81901b82161691505b5092915050565b5f5f604083850312156103c2575f5ffd5b825180151581146103d1575f5ffd5b602084015190925063ffffffff811681146103ea575f5ffd5b80915050925092905056fea2646970667358221220796d73dadbf09c6c954563dc24f0c3543d8cd13e6203e424ca2d472b56f4a76064736f6c634300081e0033","opcodes":"PUSH1 0x80 PUSH1 0x40 MSTORE PUSH1 0x4 CALLDATASIZE LT PUSH2 0x33 JUMPI PUSH0 CALLDATALOAD PUSH1 0xE0 SHR DUP1 PUSH4 0x14416C03 EQ PUSH2 0x3D JUMPI DUP1 PUSH4 0x3A7B7A39 EQ PUSH2 0x67 JUMPI DUP1 PUSH4 0xBF7E214F EQ PUSH2 0x93 JUMPI JUMPDEST PUSH2 0x3B PUSH2 0xA7 JUMP JUMPDEST STOP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x48 JUMPI PUSH0 PUSH0 REVERT JUMPDEST POP PUSH2 0x51 PUSH2 0xB9 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0x5E SWAP2 SWAP1 PUSH2 0x306 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x72 JUMPI PUSH0 PUSH0 REVERT JUMPDEST POP PUSH2 0x7B PUSH2 0x15D JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP1 SWAP2 AND DUP2 MSTORE PUSH1 0x20 ADD PUSH2 0x5E JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x9E JUMPI PUSH0 PUSH0 REVERT JUMPDEST POP PUSH2 0x7B PUSH2 0x18F JUMP JUMPDEST PUSH2 0xB7 PUSH2 0xB2 PUSH2 0x19D JUMP JUMPDEST PUSH2 0x1A6 JUMP JUMPDEST JUMP JUMPDEST PUSH1 0x60 PUSH32 0x787C9D7AC910D64252BCEA05ACD5B7AF6D59644E0451A8BB5674587555049C00 PUSH1 0x1 ADD 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 0x153 JUMPI PUSH1 0x20 MUL DUP3 ADD SWAP2 SWAP1 PUSH0 MSTORE PUSH1 0x20 PUSH0 KECCAK256 SWAP1 PUSH0 SWAP1 JUMPDEST DUP3 DUP3 SWAP1 SLOAD SWAP1 PUSH2 0x100 EXP SWAP1 DIV PUSH1 0xE0 SHL PUSH1 0x1 PUSH1 0x1 PUSH1 0xE0 SHL SUB NOT AND DUP2 MSTORE PUSH1 0x20 ADD SWAP1 PUSH1 0x4 ADD SWAP1 PUSH1 0x20 DUP3 PUSH1 0x3 ADD DIV SWAP3 DUP4 ADD SWAP3 PUSH1 0x1 SUB DUP3 MUL SWAP2 POP DUP1 DUP5 GT PUSH2 0x115 JUMPI SWAP1 POP JUMPDEST POP POP POP POP POP SWAP1 POP SWAP1 JUMP JUMPDEST PUSH0 PUSH32 0x787C9D7AC910D64252BCEA05ACD5B7AF6D59644E0451A8BB5674587555049C00 JUMPDEST SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND SWAP2 SWAP1 POP JUMP JUMPDEST PUSH0 PUSH2 0x198 PUSH2 0x15D JUMP JUMPDEST SWAP1 POP SWAP1 JUMP JUMPDEST PUSH0 PUSH2 0x198 PUSH2 0x2C1 JUMP JUMPDEST PUSH0 PUSH2 0x1B4 PUSH1 0x4 DUP3 CALLDATASIZE DUP2 PUSH2 0x352 JUMP JUMPDEST PUSH2 0x1BD SWAP2 PUSH2 0x379 JUMP JUMPDEST SWAP1 POP PUSH0 PUSH2 0x201 DUP3 PUSH1 0x1 PUSH1 0x1 PUSH1 0xE0 SHL SUB NOT AND PUSH0 SWAP1 DUP2 MSTORE PUSH32 0x787C9D7AC910D64252BCEA05ACD5B7AF6D59644E0451A8BB5674587555049C02 PUSH1 0x20 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD PUSH1 0xFF AND SWAP1 JUMP JUMPDEST SWAP1 POP DUP1 PUSH2 0x2B3 JUMPI PUSH2 0x210 PUSH2 0x15D JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH4 0xB7009613 PUSH1 0xE0 SHL DUP2 MSTORE CALLER PUSH1 0x4 DUP3 ADD MSTORE ADDRESS PUSH1 0x24 DUP3 ADD MSTORE PUSH1 0x1 PUSH1 0x1 PUSH1 0xE0 SHL SUB NOT DUP5 AND PUSH1 0x44 DUP3 ADD MSTORE PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP2 SWAP1 SWAP2 AND SWAP1 PUSH4 0xB7009613 SWAP1 PUSH1 0x64 ADD PUSH1 0x40 DUP1 MLOAD DUP1 DUP4 SUB DUP2 DUP7 GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x269 JUMPI RETURNDATASIZE PUSH0 PUSH0 RETURNDATACOPY RETURNDATASIZE PUSH0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP3 ADD DUP1 PUSH1 0x40 MSTORE POP DUP2 ADD SWAP1 PUSH2 0x28D SWAP2 SWAP1 PUSH2 0x3B1 JUMP JUMPDEST POP SWAP1 POP DUP1 PUSH2 0x2B3 JUMPI PUSH1 0x40 MLOAD PUSH3 0xD1953B PUSH1 0xE3 SHL DUP2 MSTORE CALLER PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x24 ADD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH2 0x2BC DUP4 PUSH2 0x2E8 JUMP JUMPDEST POP POP POP JUMP JUMPDEST PUSH0 PUSH32 0x360894A13BA1A3210667C828492DB98DCA3E2076CC3735A920A3CA505D382BBC PUSH2 0x180 JUMP JUMPDEST CALLDATASIZE PUSH0 PUSH0 CALLDATACOPY PUSH0 PUSH0 CALLDATASIZE PUSH0 DUP5 GAS DELEGATECALL RETURNDATASIZE PUSH0 PUSH0 RETURNDATACOPY DUP1 DUP1 ISZERO PUSH2 0x302 JUMPI RETURNDATASIZE PUSH0 RETURN JUMPDEST RETURNDATASIZE PUSH0 REVERT JUMPDEST PUSH1 0x20 DUP1 DUP3 MSTORE DUP3 MLOAD DUP3 DUP3 ADD DUP2 SWAP1 MSTORE PUSH0 SWAP2 DUP5 ADD SWAP1 PUSH1 0x40 DUP5 ADD SWAP1 DUP4 JUMPDEST DUP2 DUP2 LT ISZERO PUSH2 0x347 JUMPI DUP4 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xE0 SHL SUB NOT AND DUP4 MSTORE PUSH1 0x20 SWAP4 DUP5 ADD SWAP4 SWAP1 SWAP3 ADD SWAP2 PUSH1 0x1 ADD PUSH2 0x31F JUMP JUMPDEST POP SWAP1 SWAP6 SWAP5 POP POP POP POP POP JUMP JUMPDEST PUSH0 PUSH0 DUP6 DUP6 GT ISZERO PUSH2 0x360 JUMPI PUSH0 PUSH0 REVERT JUMPDEST DUP4 DUP7 GT ISZERO PUSH2 0x36C JUMPI PUSH0 PUSH0 REVERT JUMPDEST POP POP DUP3 ADD SWAP4 SWAP2 SWAP1 SWAP3 SUB SWAP2 POP JUMP JUMPDEST DUP1 CALLDATALOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xE0 SHL SUB NOT DUP2 AND SWAP1 PUSH1 0x4 DUP5 LT ISZERO PUSH2 0x3AA JUMPI PUSH1 0x1 PUSH1 0x1 PUSH1 0xE0 SHL SUB NOT PUSH1 0x4 DUP6 SWAP1 SUB PUSH1 0x3 SHL DUP2 SWAP1 SHL DUP3 AND AND SWAP2 POP JUMPDEST POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH0 PUSH0 PUSH1 0x40 DUP4 DUP6 SUB SLT ISZERO PUSH2 0x3C2 JUMPI PUSH0 PUSH0 REVERT JUMPDEST DUP3 MLOAD DUP1 ISZERO ISZERO DUP2 EQ PUSH2 0x3D1 JUMPI PUSH0 PUSH0 REVERT JUMPDEST PUSH1 0x20 DUP5 ADD MLOAD SWAP1 SWAP3 POP PUSH4 0xFFFFFFFF DUP2 AND DUP2 EQ PUSH2 0x3EA JUMPI PUSH0 PUSH0 REVERT JUMPDEST DUP1 SWAP2 POP POP SWAP3 POP SWAP3 SWAP1 POP JUMP INVALID LOG2 PUSH5 0x6970667358 0x22 SLT KECCAK256 PUSH26 0x6D73DADBF09C6C954563DC24F0C3543D8CD13E6203E424CA2D47 0x2B JUMP DELEGATECALL 0xA7 PUSH1 0x64 PUSH20 0x6F6C634300081E00330000000000000000000000 ","sourceMap":"1448:2096:1:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;2676:11:28;:9;:11::i;:::-;1448:2096:1;3147:159;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;3399:143;;;;;;;;;;;;;:::i;:::-;;;-1:-1:-1;;;;;842:32:87;;;824:51;;812:2;797:18;3399:143:1;655:226:87;2151:104:2;;;;;;;;;;;;;:::i;2350:83:28:-;2398:28;2408:17;:15;:17::i;:::-;2398:9;:28::i;:::-;2350:83::o;3147:159:1:-;3208:23;1328:33:0;3246:55:1;;3239:62;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;3239:62:1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;3147:159;:::o;3399:143::-;3455:14;1328:33:0;3484:39:1;:53;-1:-1:-1;;;;;3484:53:1;;3399:143;-1:-1:-1;3399:143:1:o;2151:104:2:-;2203:7;2233:16;:14;:16::i;:::-;2218:32;;2151:104;:::o;1583:132:26:-;1650:7;1676:32;:30;:32::i;2688:449:2:-;2763:15;2788:13;2799:1;2763:15;2788:8;2763:15;2788:13;:::i;:::-;2781:21;;;:::i;:::-;2763:39;;2808:14;2825:17;2833:8;-1:-1:-1;;;;;;2993:56:1;2974:4;2993:56;;;:46;:56;;;;;;;;;2908:146;2825:17:2;2808:34;;2925:9;2920:176;;2960:16;:14;:16::i;:::-;:61;;-1:-1:-1;;;2960:61:2;;2985:10;2960:61;;;1973:51:87;3005:4:2;2040:18:87;;;2033:60;-1:-1:-1;;;;;;2129:33:87;;2109:18;;;2102:61;-1:-1:-1;;;;;2960:24:2;;;;;;;1946:18:87;;2960:61:2;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;-1:-1:-1;2944:77:2;-1:-1:-1;2944:77:2;3029:60;;3052:37;;-1:-1:-1;;;3052:37:2;;3078:10;3052:37;;;824:51:87;797:18;;3052:37:2;;;;;;;3029:60;3101:31;3117:14;3101:15;:31::i;:::-;2757:380;;2688:449;:::o;1441:138:27:-;1493:7;811:66;1519:47;1899:163:44;949:922:28;1293:14;1287:4;1281;1268:40;1513:4;1507;1491:14;1485:4;1469:14;1462:5;1449:69;1598:16;1592:4;1586;1571:44;1636:6;1703:69;;;;1824:16;1818:4;1811:30;1703:69;1741:16;1735:4;1728:30;14:636:87;202:2;214:21;;;284:13;;187:18;;;306:22;;;154:4;;385:15;;;359:2;344:18;;;154:4;428:196;442:6;439:1;436:13;428:196;;;507:13;;-1:-1:-1;;;;;;503:40:87;491:53;;573:2;599:15;;;;564:12;;;;464:1;457:9;428:196;;;-1:-1:-1;641:3:87;;14:636;-1:-1:-1;;;;;14:636:87:o;1094:331::-;1199:9;1210;1252:8;1240:10;1237:24;1234:44;;;1274:1;1271;1264:12;1234:44;1303:6;1293:8;1290:20;1287:40;;;1323:1;1320;1313:12;1287:40;-1:-1:-1;;1349:23:87;;;1394:25;;;;;-1:-1:-1;1094:331:87:o;1430:338::-;1550:19;;-1:-1:-1;;;;;;1587:29:87;;;1636:1;1628:10;;1625:137;;;-1:-1:-1;;;;;;1697:1:87;1693:11;;;1690:1;1686:19;1682:46;;;1674:55;;1670:82;;-1:-1:-1;1625:137:87;;1430:338;;;;:::o;2174:442::-;2249:6;2257;2310:2;2298:9;2289:7;2285:23;2281:32;2278:52;;;2326:1;2323;2316:12;2278:52;2358:9;2352:16;2411:5;2404:13;2397:21;2390:5;2387:32;2377:60;;2433:1;2430;2423:12;2377:60;2506:2;2491:18;;2485:25;2456:5;;-1:-1:-1;2554:10:87;2541:24;;2529:37;;2519:65;;2580:1;2577;2570:12;2519:65;2603:7;2593:17;;;2174:442;;;;;:::o"},"methodIdentifiers":{"ACCESS_MANAGER()":"3a7b7a39","PASS_THRU_METHODS()":"14416c03","authority()":"bf7e214f"}},"metadata":"{\"compiler\":{\"version\":\"0.8.30+commit.73712a01\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"inputs\":[{\"internalType\":\"address\",\"name\":\"implementation\",\"type\":\"address\"},{\"internalType\":\"bytes\",\"name\":\"_data\",\"type\":\"bytes\"},{\"internalType\":\"contract IAccessManager\",\"name\":\"accessManager\",\"type\":\"address\"},{\"internalType\":\"bytes4[]\",\"name\":\"passThruMethods\",\"type\":\"bytes4[]\"}],\"stateMutability\":\"payable\",\"type\":\"constructor\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"authority\",\"type\":\"address\"}],\"name\":\"AccessManagedInvalidAuthority\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"caller\",\"type\":\"address\"}],\"name\":\"AccessManagedUnauthorized\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"target\",\"type\":\"address\"}],\"name\":\"AddressEmptyCode\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"implementation\",\"type\":\"address\"}],\"name\":\"ERC1967InvalidImplementation\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"ERC1967NonPayable\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"FailedCall\",\"type\":\"error\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"address\",\"name\":\"authority\",\"type\":\"address\"}],\"name\":\"AuthorityUpdated\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"bytes4[]\",\"name\":\"newPassThruMethods\",\"type\":\"bytes4[]\"}],\"name\":\"PassThruMethodsChanged\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"implementation\",\"type\":\"address\"}],\"name\":\"Upgraded\",\"type\":\"event\"},{\"stateMutability\":\"payable\",\"type\":\"fallback\"},{\"inputs\":[],\"name\":\"ACCESS_MANAGER\",\"outputs\":[{\"internalType\":\"contract IAccessManager\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"PASS_THRU_METHODS\",\"outputs\":[{\"internalType\":\"bytes4[]\",\"name\":\"methods\",\"type\":\"bytes4[]\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"authority\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"}],\"devdoc\":{\"author\":\"Ensuro\",\"custom:security-contact\":\"security@ensuro.co\",\"details\":\"It's a variant of ERC1967Proxy.      Currently the check is executed on any call received by the proxy contract (even calls to view methods, i.e.      staticcall). For gas efficiency, you can also have `passThruMethods`, and for those methods it will skip      the call to the AccessManager, calling directly to the implementation contract.      The accessManager and the passThruMethods are in the storage, but this contract doesn't include any method      to modify them. They should be modified by the implementation contract (check AMPUtils for functions that      encapsulate these operations).      Check https://forum.openzeppelin.com/t/accessmanagedproxy-is-a-good-idea/41917 for a discussion on the      advantages and disadvantages of using it. Also https://www.youtube.com/watch?v=DKdwJ9Ap9vM for a presentation      on this approach.\",\"errors\":{\"AddressEmptyCode(address)\":[{\"details\":\"There's no code at `target` (it is not a contract).\"}],\"ERC1967InvalidImplementation(address)\":[{\"details\":\"The `implementation` of the proxy is invalid.\"}],\"ERC1967NonPayable()\":[{\"details\":\"An upgrade function sees `msg.value > 0` that may be lost.\"}],\"FailedCall()\":[{\"details\":\"A call to an address target failed. The target may have reverted.\"}]},\"events\":{\"AuthorityUpdated(address)\":{\"details\":\"Authority that manages this contract was updated. Uses same interface as OZ's IAccessManaged\"},\"PassThruMethodsChanged(bytes4[])\":{\"details\":\"Emitted when the passThruMethods has changed.\"},\"Upgraded(address)\":{\"details\":\"Emitted when the implementation is upgraded.\"}},\"kind\":\"dev\",\"methods\":{\"PASS_THRU_METHODS()\":{\"returns\":{\"methods\":\"The list of method selectors that skip ACCESS_MANAGER access control\"}},\"authority()\":{\"details\":\"Returns the current authority. Same as ACCESS_MANAGER(), added for compatibility with OZ's IAccessManaged\"},\"constructor\":{\"custom:pre\":\"If `_data` is empty, `msg.value` must be zero.\",\"details\":\"Initializes the upgradeable proxy with an initial implementation specified by `implementation` and      with `accessManager` as the ACCESS_MANAGER that will handle access control.\",\"params\":{\"_data\":\"If nonempty, it's used as data in a delegate call to `implementation`. This will typically be an              encoded function call, and allows initializing the storage of the proxy like a Solidity constructor.\",\"accessManager\":\"The access manager that will handle access control\",\"implementation\":\"The initial implementation contract.\",\"passThruMethods\":\"The selector of methods that will skip the access control validation, typically used for                        views and other methods for gas optimization.\"}}},\"title\":\"AccessManagedProxy\",\"version\":1},\"userdoc\":{\"events\":{\"AuthorityUpdated(address)\":{\"notice\":\"The ACCESS_MANAGER that manages the access controls was updated\"}},\"kind\":\"user\",\"methods\":{\"ACCESS_MANAGER()\":{\"notice\":\"AccessManager contract that handles the permissions to access the implementation methods\"},\"PASS_THRU_METHODS()\":{\"notice\":\"Gives observability to the methods that are skipped from access control\"},\"authority()\":{\"notice\":\"Returns the current authority.\"},\"constructor\":{\"notice\":\"Constructor of the proxy, defining the implementation and the access manager\"}},\"notice\":\"Proxy contract using IAccessManager to manage access control before delegating calls (mutable version)\",\"version\":1}},\"settings\":{\"compilationTarget\":{\"@ensuro/access-managed-proxy/contracts/AccessManagedProxy.sol\":\"AccessManagedProxy\"},\"evmVersion\":\"prague\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"enabled\":true,\"runs\":200},\"remappings\":[]},\"sources\":{\"@ensuro/access-managed-proxy/contracts/AMPUtils.sol\":{\"keccak256\":\"0x3f25097d759aa89ce9a7a94f98b854a3dc23c51f7f895b95a8d489e74d5f1d98\",\"license\":\"Apache-2.0\",\"urls\":[\"bzz-raw://2912cf8c79b973d07fbb741e7d1048026f0a71489df2adf97552b83b23b427d7\",\"dweb:/ipfs/QmRTfFaqy72p4RfY99hKM1K9wH5kxaTnikH5VJjpL7K7sD\"]},\"@ensuro/access-managed-proxy/contracts/AccessManagedProxy.sol\":{\"keccak256\":\"0x0d3a66feed9000ccbc8a8e6c597b7fe4659f56b5a4dfa2ab1eea314171ae9745\",\"license\":\"Apache-2.0\",\"urls\":[\"bzz-raw://fa3f292954915546ce72159da1dbcd44b8cdc19ea0b5b3fc6dbb47070451583c\",\"dweb:/ipfs/QmeL7krtsKLpuS9hy5w6eRoRsXU874XtgNWutUavxRKzmA\"]},\"@ensuro/access-managed-proxy/contracts/AccessManagedProxyBase.sol\":{\"keccak256\":\"0xe84ff4706a5ae4c03f011343dfb73ce8b731e1eb2287d25018a449b3e802092e\",\"license\":\"Apache-2.0\",\"urls\":[\"bzz-raw://53202b0391daa08f69fda5c471f957f9811dba1d2033e5e3e3a7a78c1d05eb39\",\"dweb:/ipfs/QmabycaktcAsVJFEdf7F4Lk1WsAz9qesqQARLwjYvM722m\"]},\"@ensuro/access-managed-proxy/contracts/interfaces/IAccessManagedProxy.sol\":{\"keccak256\":\"0xdd762bad2f6ad362f5a38fb333d2a953f6c9d0beea122dbaef0e333a7b83a054\",\"license\":\"Apache-2.0\",\"urls\":[\"bzz-raw://a2bb86de08187cee5956393ca2cf096a09eb6ac694471e436ca12e377d97cb40\",\"dweb:/ipfs/Qmf6cNjug4swjsvTJYjbzhMMfAfSFdUuyJjkEf3b1cu2hn\"]},\"@openzeppelin/contracts/access/manager/IAccessManager.sol\":{\"keccak256\":\"0x71e3e350e83af0018a1683cc2ce4c13893cc01f78e5c9c305f6828608ffcfa18\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://0a7b521c9999007715c9bdedffaad2ef7d2ccfa07bca2a39ba9e0c2e8a944a63\",\"dweb:/ipfs/QmamPG6Y1p7iZh4cF8Hfp3oufowSRyB3S3DisTKkmVWSai\"]},\"@openzeppelin/contracts/interfaces/IERC1967.sol\":{\"keccak256\":\"0xbf2aefe54b76d7f7bcd4f6da1080b7b1662611937d870b880db584d09cea56b5\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://f5e7e2f12e0feec75296e57f51f82fdaa8bd1551f4b8cc6560442c0bf60f818c\",\"dweb:/ipfs/QmcW9wDMaQ8RbQibMarfp17a3bABzY5KraWe2YDwuUrUoz\"]},\"@openzeppelin/contracts/proxy/ERC1967/ERC1967Proxy.sol\":{\"keccak256\":\"0xa3066ff86b94128a9d3956a63a0511fa1aae41bd455772ab587b32ff322acb2e\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://bf7b192fd82acf6187970c80548f624b1b9c80425b62fa49e7fdb538a52de049\",\"dweb:/ipfs/QmWXG1YCde1tqDYTbNwjkZDWVgPEjzaQGSDqWkyKLzaNua\"]},\"@openzeppelin/contracts/proxy/ERC1967/ERC1967Utils.sol\":{\"keccak256\":\"0xa1ad192cd45317c788618bef5cb1fb3ca4ce8b230f6433ac68cc1d850fb81618\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://b43447bb85a53679d269a403c693b9d88d6c74177dfb35eddca63abaf7cf110a\",\"dweb:/ipfs/QmXSDmpd4bNZj1PDgegr6C4w1jDaWHXCconC3rYiw9TSkQ\"]},\"@openzeppelin/contracts/proxy/Proxy.sol\":{\"keccak256\":\"0x80935e4fae2c414f4e7789e13a820d06901182a5733ab006f8d68b5b09db993f\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://752d991d6ca1087587b48103bc623f74888054f58581ff29166d90889c4765c5\",\"dweb:/ipfs/QmRBsa6K2ChKxVWYY54YiyYhDBPbmY5HyKCtij5LoWh56o\"]},\"@openzeppelin/contracts/proxy/beacon/IBeacon.sol\":{\"keccak256\":\"0x20462ddb2665e9521372c76b001d0ce196e59dbbd989de9af5576cad0bd5628b\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://f417fd12aeec8fbfaceaa30e3a08a0724c0bc39de363e2acf6773c897abbaf6d\",\"dweb:/ipfs/QmU4Hko6sApdweVM92CsiuLKkCk8HfyBeutF89PCTz5Tye\"]},\"@openzeppelin/contracts/utils/Address.sol\":{\"keccak256\":\"0x0fa9e0d3a859900b5a46f70a03c73adf259603d5e05027a37fe0b45529d85346\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://c2add4da0240c9f2ce47649c8bb6b11b40e98cf6f88b8bdc76b2704e89391710\",\"dweb:/ipfs/QmNQTwF2uVzu4CRtNxr8bxyP9XuW6VsZuo2Nr4KR2bZr3d\"]},\"@openzeppelin/contracts/utils/Errors.sol\":{\"keccak256\":\"0x6afa713bfd42cf0f7656efa91201007ac465e42049d7de1d50753a373648c123\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://ba1d02f4847670a1b83dec9f7d37f0b0418d6043447b69f3a29a5f9efc547fcf\",\"dweb:/ipfs/QmQ7iH2keLNUKgq2xSWcRmuBE5eZ3F5whYAkAGzCNNoEWB\"]},\"@openzeppelin/contracts/utils/LowLevelCall.sol\":{\"keccak256\":\"0x5b4802a4352474792df3107e961d1cc593e47b820c14f69d3505cb28f5a6a583\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://a6f86fd01f829499fe0545ff5dda07d4521988e88bfe0bf801fc15650921ed56\",\"dweb:/ipfs/QmUUKu4ZDffHAmfkf3asuQfmLTyfpuy2Amdncc3SqfzKPG\"]},\"@openzeppelin/contracts/utils/StorageSlot.sol\":{\"keccak256\":\"0xcf74f855663ce2ae00ed8352666b7935f6cddea2932fdf2c3ecd30a9b1cd0e97\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://9f660b1f351b757dfe01438e59888f31f33ded3afcf5cb5b0d9bf9aa6f320a8b\",\"dweb:/ipfs/QmarDJ5hZEgBtCmmrVzEZWjub9769eD686jmzb2XpSU1cM\"]}},\"version\":1}","storageLayout":{"storage":[],"types":null}}},"@ensuro/access-managed-proxy/contracts/AccessManagedProxyBase.sol":{"AccessManagedProxyBase":{"abi":[{"inputs":[{"internalType":"address","name":"authority","type":"address"}],"name":"AccessManagedInvalidAuthority","type":"error"},{"inputs":[{"internalType":"address","name":"caller","type":"address"}],"name":"AccessManagedUnauthorized","type":"error"},{"inputs":[{"internalType":"address","name":"target","type":"address"}],"name":"AddressEmptyCode","type":"error"},{"inputs":[{"internalType":"address","name":"implementation","type":"address"}],"name":"ERC1967InvalidImplementation","type":"error"},{"inputs":[],"name":"ERC1967NonPayable","type":"error"},{"inputs":[],"name":"FailedCall","type":"error"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"address","name":"authority","type":"address"}],"name":"AuthorityUpdated","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"bytes4[]","name":"newPassThruMethods","type":"bytes4[]"}],"name":"PassThruMethodsChanged","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"implementation","type":"address"}],"name":"Upgraded","type":"event"},{"stateMutability":"payable","type":"fallback"},{"inputs":[],"name":"ACCESS_MANAGER","outputs":[{"internalType":"contract IAccessManager","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"PASS_THRU_METHODS","outputs":[{"internalType":"bytes4[]","name":"methods","type":"bytes4[]"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"authority","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"}],"evm":{"bytecode":{"functionDebugData":{},"generatedSources":[],"linkReferences":{},"object":"","opcodes":"","sourceMap":""},"deployedBytecode":{"functionDebugData":{},"generatedSources":[],"immutableReferences":{},"linkReferences":{},"object":"","opcodes":"","sourceMap":""},"methodIdentifiers":{"ACCESS_MANAGER()":"3a7b7a39","PASS_THRU_METHODS()":"14416c03","authority()":"bf7e214f"}},"metadata":"{\"compiler\":{\"version\":\"0.8.30+commit.73712a01\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"inputs\":[{\"internalType\":\"address\",\"name\":\"authority\",\"type\":\"address\"}],\"name\":\"AccessManagedInvalidAuthority\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"caller\",\"type\":\"address\"}],\"name\":\"AccessManagedUnauthorized\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"target\",\"type\":\"address\"}],\"name\":\"AddressEmptyCode\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"implementation\",\"type\":\"address\"}],\"name\":\"ERC1967InvalidImplementation\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"ERC1967NonPayable\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"FailedCall\",\"type\":\"error\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"address\",\"name\":\"authority\",\"type\":\"address\"}],\"name\":\"AuthorityUpdated\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"bytes4[]\",\"name\":\"newPassThruMethods\",\"type\":\"bytes4[]\"}],\"name\":\"PassThruMethodsChanged\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"implementation\",\"type\":\"address\"}],\"name\":\"Upgraded\",\"type\":\"event\"},{\"stateMutability\":\"payable\",\"type\":\"fallback\"},{\"inputs\":[],\"name\":\"ACCESS_MANAGER\",\"outputs\":[{\"internalType\":\"contract IAccessManager\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"PASS_THRU_METHODS\",\"outputs\":[{\"internalType\":\"bytes4[]\",\"name\":\"methods\",\"type\":\"bytes4[]\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"authority\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"}],\"devdoc\":{\"author\":\"Ensuro\",\"custom:security-contact\":\"security@ensuro.co\",\"details\":\"It's a variant of ERC1967Proxy.      Currently the check is executed on any call received by the proxy contract even calls to view methods      (staticcall). In the setup of the ACCESS_MANAGER permissions you would want to make all the views and pure      functions enabled for the PUBLIC_ROLE.      This base contract delegates on descendent contracts the storage of the ACCESS_MANAGER.      Check https://forum.openzeppelin.com/t/accessmanagedproxy-is-a-good-idea/41917 for a discussion on the      advantages and disadvantages of using it.\",\"errors\":{\"AddressEmptyCode(address)\":[{\"details\":\"There's no code at `target` (it is not a contract).\"}],\"ERC1967InvalidImplementation(address)\":[{\"details\":\"The `implementation` of the proxy is invalid.\"}],\"ERC1967NonPayable()\":[{\"details\":\"An upgrade function sees `msg.value > 0` that may be lost.\"}],\"FailedCall()\":[{\"details\":\"A call to an address target failed. The target may have reverted.\"}]},\"events\":{\"AuthorityUpdated(address)\":{\"details\":\"Authority that manages this contract was updated. Uses same interface as OZ's IAccessManaged\"},\"PassThruMethodsChanged(bytes4[])\":{\"details\":\"Emitted when the passThruMethods has changed.\"},\"Upgraded(address)\":{\"details\":\"Emitted when the implementation is upgraded.\"}},\"kind\":\"dev\",\"methods\":{\"PASS_THRU_METHODS()\":{\"returns\":{\"methods\":\"The list of method selectors that skip ACCESS_MANAGER access control\"}},\"authority()\":{\"details\":\"Returns the current authority. Same as ACCESS_MANAGER(), added for compatibility with OZ's IAccessManaged\"},\"constructor\":{\"custom:pre\":\"If `_data` is empty, `msg.value` must be zero.\",\"details\":\"Initializes the upgradeable proxy with an initial implementation specified by `implementation` and      with `manager` as the ACCESS_MANAGER that will handle access control.\",\"params\":{\"_data\":\"If nonempty, it's used as data in a delegate call to `implementation`. This will typically be an              encoded function call, and allows initializing the storage of the proxy like a Solidity constructor.\",\"implementation\":\"The initial implementation contract.\"}}},\"title\":\"AccessManagedProxyBase\",\"version\":1},\"userdoc\":{\"events\":{\"AuthorityUpdated(address)\":{\"notice\":\"The ACCESS_MANAGER that manages the access controls was updated\"}},\"kind\":\"user\",\"methods\":{\"ACCESS_MANAGER()\":{\"notice\":\"AccessManager contract that handles the permissions to access the implementation methods\"},\"PASS_THRU_METHODS()\":{\"notice\":\"Gives observability to the methods that are skipped from access control\"},\"authority()\":{\"notice\":\"Returns the current authority.\"},\"constructor\":{\"notice\":\"Constructor of the proxy, defining the implementation and the access manager\"}},\"notice\":\"Proxy contract using IAccessManager to manage access control before delegating calls.\",\"version\":1}},\"settings\":{\"compilationTarget\":{\"@ensuro/access-managed-proxy/contracts/AccessManagedProxyBase.sol\":\"AccessManagedProxyBase\"},\"evmVersion\":\"prague\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"enabled\":true,\"runs\":200},\"remappings\":[]},\"sources\":{\"@ensuro/access-managed-proxy/contracts/AccessManagedProxyBase.sol\":{\"keccak256\":\"0xe84ff4706a5ae4c03f011343dfb73ce8b731e1eb2287d25018a449b3e802092e\",\"license\":\"Apache-2.0\",\"urls\":[\"bzz-raw://53202b0391daa08f69fda5c471f957f9811dba1d2033e5e3e3a7a78c1d05eb39\",\"dweb:/ipfs/QmabycaktcAsVJFEdf7F4Lk1WsAz9qesqQARLwjYvM722m\"]},\"@ensuro/access-managed-proxy/contracts/interfaces/IAccessManagedProxy.sol\":{\"keccak256\":\"0xdd762bad2f6ad362f5a38fb333d2a953f6c9d0beea122dbaef0e333a7b83a054\",\"license\":\"Apache-2.0\",\"urls\":[\"bzz-raw://a2bb86de08187cee5956393ca2cf096a09eb6ac694471e436ca12e377d97cb40\",\"dweb:/ipfs/Qmf6cNjug4swjsvTJYjbzhMMfAfSFdUuyJjkEf3b1cu2hn\"]},\"@openzeppelin/contracts/access/manager/IAccessManager.sol\":{\"keccak256\":\"0x71e3e350e83af0018a1683cc2ce4c13893cc01f78e5c9c305f6828608ffcfa18\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://0a7b521c9999007715c9bdedffaad2ef7d2ccfa07bca2a39ba9e0c2e8a944a63\",\"dweb:/ipfs/QmamPG6Y1p7iZh4cF8Hfp3oufowSRyB3S3DisTKkmVWSai\"]},\"@openzeppelin/contracts/interfaces/IERC1967.sol\":{\"keccak256\":\"0xbf2aefe54b76d7f7bcd4f6da1080b7b1662611937d870b880db584d09cea56b5\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://f5e7e2f12e0feec75296e57f51f82fdaa8bd1551f4b8cc6560442c0bf60f818c\",\"dweb:/ipfs/QmcW9wDMaQ8RbQibMarfp17a3bABzY5KraWe2YDwuUrUoz\"]},\"@openzeppelin/contracts/proxy/ERC1967/ERC1967Proxy.sol\":{\"keccak256\":\"0xa3066ff86b94128a9d3956a63a0511fa1aae41bd455772ab587b32ff322acb2e\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://bf7b192fd82acf6187970c80548f624b1b9c80425b62fa49e7fdb538a52de049\",\"dweb:/ipfs/QmWXG1YCde1tqDYTbNwjkZDWVgPEjzaQGSDqWkyKLzaNua\"]},\"@openzeppelin/contracts/proxy/ERC1967/ERC1967Utils.sol\":{\"keccak256\":\"0xa1ad192cd45317c788618bef5cb1fb3ca4ce8b230f6433ac68cc1d850fb81618\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://b43447bb85a53679d269a403c693b9d88d6c74177dfb35eddca63abaf7cf110a\",\"dweb:/ipfs/QmXSDmpd4bNZj1PDgegr6C4w1jDaWHXCconC3rYiw9TSkQ\"]},\"@openzeppelin/contracts/proxy/Proxy.sol\":{\"keccak256\":\"0x80935e4fae2c414f4e7789e13a820d06901182a5733ab006f8d68b5b09db993f\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://752d991d6ca1087587b48103bc623f74888054f58581ff29166d90889c4765c5\",\"dweb:/ipfs/QmRBsa6K2ChKxVWYY54YiyYhDBPbmY5HyKCtij5LoWh56o\"]},\"@openzeppelin/contracts/proxy/beacon/IBeacon.sol\":{\"keccak256\":\"0x20462ddb2665e9521372c76b001d0ce196e59dbbd989de9af5576cad0bd5628b\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://f417fd12aeec8fbfaceaa30e3a08a0724c0bc39de363e2acf6773c897abbaf6d\",\"dweb:/ipfs/QmU4Hko6sApdweVM92CsiuLKkCk8HfyBeutF89PCTz5Tye\"]},\"@openzeppelin/contracts/utils/Address.sol\":{\"keccak256\":\"0x0fa9e0d3a859900b5a46f70a03c73adf259603d5e05027a37fe0b45529d85346\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://c2add4da0240c9f2ce47649c8bb6b11b40e98cf6f88b8bdc76b2704e89391710\",\"dweb:/ipfs/QmNQTwF2uVzu4CRtNxr8bxyP9XuW6VsZuo2Nr4KR2bZr3d\"]},\"@openzeppelin/contracts/utils/Errors.sol\":{\"keccak256\":\"0x6afa713bfd42cf0f7656efa91201007ac465e42049d7de1d50753a373648c123\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://ba1d02f4847670a1b83dec9f7d37f0b0418d6043447b69f3a29a5f9efc547fcf\",\"dweb:/ipfs/QmQ7iH2keLNUKgq2xSWcRmuBE5eZ3F5whYAkAGzCNNoEWB\"]},\"@openzeppelin/contracts/utils/LowLevelCall.sol\":{\"keccak256\":\"0x5b4802a4352474792df3107e961d1cc593e47b820c14f69d3505cb28f5a6a583\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://a6f86fd01f829499fe0545ff5dda07d4521988e88bfe0bf801fc15650921ed56\",\"dweb:/ipfs/QmUUKu4ZDffHAmfkf3asuQfmLTyfpuy2Amdncc3SqfzKPG\"]},\"@openzeppelin/contracts/utils/StorageSlot.sol\":{\"keccak256\":\"0xcf74f855663ce2ae00ed8352666b7935f6cddea2932fdf2c3ecd30a9b1cd0e97\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://9f660b1f351b757dfe01438e59888f31f33ded3afcf5cb5b0d9bf9aa6f320a8b\",\"dweb:/ipfs/QmarDJ5hZEgBtCmmrVzEZWjub9769eD686jmzb2XpSU1cM\"]}},\"version\":1}","storageLayout":{"storage":[],"types":null}}},"@ensuro/access-managed-proxy/contracts/interfaces/IAccessManagedProxy.sol":{"IAccessManagedProxy":{"abi":[{"inputs":[{"internalType":"address","name":"authority","type":"address"}],"name":"AccessManagedInvalidAuthority","type":"error"},{"inputs":[{"internalType":"address","name":"caller","type":"address"}],"name":"AccessManagedUnauthorized","type":"error"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"address","name":"authority","type":"address"}],"name":"AuthorityUpdated","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"bytes4[]","name":"newPassThruMethods","type":"bytes4[]"}],"name":"PassThruMethodsChanged","type":"event"},{"inputs":[],"name":"ACCESS_MANAGER","outputs":[{"internalType":"contract IAccessManager","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"PASS_THRU_METHODS","outputs":[{"internalType":"bytes4[]","name":"methods","type":"bytes4[]"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"authority","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"}],"evm":{"bytecode":{"functionDebugData":{},"generatedSources":[],"linkReferences":{},"object":"","opcodes":"","sourceMap":""},"deployedBytecode":{"functionDebugData":{},"generatedSources":[],"immutableReferences":{},"linkReferences":{},"object":"","opcodes":"","sourceMap":""},"methodIdentifiers":{"ACCESS_MANAGER()":"3a7b7a39","PASS_THRU_METHODS()":"14416c03","authority()":"bf7e214f"}},"metadata":"{\"compiler\":{\"version\":\"0.8.30+commit.73712a01\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"inputs\":[{\"internalType\":\"address\",\"name\":\"authority\",\"type\":\"address\"}],\"name\":\"AccessManagedInvalidAuthority\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"caller\",\"type\":\"address\"}],\"name\":\"AccessManagedUnauthorized\",\"type\":\"error\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"address\",\"name\":\"authority\",\"type\":\"address\"}],\"name\":\"AuthorityUpdated\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"bytes4[]\",\"name\":\"newPassThruMethods\",\"type\":\"bytes4[]\"}],\"name\":\"PassThruMethodsChanged\",\"type\":\"event\"},{\"inputs\":[],\"name\":\"ACCESS_MANAGER\",\"outputs\":[{\"internalType\":\"contract IAccessManager\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"PASS_THRU_METHODS\",\"outputs\":[{\"internalType\":\"bytes4[]\",\"name\":\"methods\",\"type\":\"bytes4[]\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"authority\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"}],\"devdoc\":{\"author\":\"Ensuro\",\"details\":\"The `ACCESS_MANAGER()` is the AccessManager contract that stores the access roles for most of the methods, except those listed in `PASS_THRU_METHODS()` that are forwarded directly to the proxy and don't have access control (at least not by the AccessManager contract).\",\"events\":{\"AuthorityUpdated(address)\":{\"details\":\"Authority that manages this contract was updated. Uses same interface as OZ's IAccessManaged\"},\"PassThruMethodsChanged(bytes4[])\":{\"details\":\"Emitted when the passThruMethods has changed.\"}},\"kind\":\"dev\",\"methods\":{\"PASS_THRU_METHODS()\":{\"returns\":{\"methods\":\"The list of method selectors that skip ACCESS_MANAGER access control\"}},\"authority()\":{\"details\":\"Returns the current authority. Same as ACCESS_MANAGER(), added for compatibility with OZ's IAccessManaged\"}},\"title\":\"IAccessManagedProxy - Interface of AccessManagedProxy contracts\",\"version\":1},\"userdoc\":{\"events\":{\"AuthorityUpdated(address)\":{\"notice\":\"The ACCESS_MANAGER that manages the access controls was updated\"}},\"kind\":\"user\",\"methods\":{\"ACCESS_MANAGER()\":{\"notice\":\"AccessManager contract that handles the permissions to access the implementation methods\"},\"PASS_THRU_METHODS()\":{\"notice\":\"Gives observability to the methods that are skipped from access control\"},\"authority()\":{\"notice\":\"Returns the current authority.\"}},\"notice\":\"This interface gives observability of the access control setup\",\"version\":1}},\"settings\":{\"compilationTarget\":{\"@ensuro/access-managed-proxy/contracts/interfaces/IAccessManagedProxy.sol\":\"IAccessManagedProxy\"},\"evmVersion\":\"prague\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"enabled\":true,\"runs\":200},\"remappings\":[]},\"sources\":{\"@ensuro/access-managed-proxy/contracts/interfaces/IAccessManagedProxy.sol\":{\"keccak256\":\"0xdd762bad2f6ad362f5a38fb333d2a953f6c9d0beea122dbaef0e333a7b83a054\",\"license\":\"Apache-2.0\",\"urls\":[\"bzz-raw://a2bb86de08187cee5956393ca2cf096a09eb6ac694471e436ca12e377d97cb40\",\"dweb:/ipfs/Qmf6cNjug4swjsvTJYjbzhMMfAfSFdUuyJjkEf3b1cu2hn\"]},\"@openzeppelin/contracts/access/manager/IAccessManager.sol\":{\"keccak256\":\"0x71e3e350e83af0018a1683cc2ce4c13893cc01f78e5c9c305f6828608ffcfa18\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://0a7b521c9999007715c9bdedffaad2ef7d2ccfa07bca2a39ba9e0c2e8a944a63\",\"dweb:/ipfs/QmamPG6Y1p7iZh4cF8Hfp3oufowSRyB3S3DisTKkmVWSai\"]}},\"version\":1}","storageLayout":{"storage":[],"types":null}}},"@ensuro/swaplibrary/contracts/CurveRoutes.sol":{"CurveRoutes":{"abi":[{"inputs":[],"name":"AtLeastOneRoute","type":"error"},{"inputs":[],"name":"CurveRouterCantBeZero","type":"error"},{"inputs":[],"name":"InvalidLength","type":"error"},{"inputs":[{"components":[{"internalType":"address[11]","name":"route","type":"address[11]"},{"internalType":"uint256[5][5]","name":"swapParams","type":"uint256[5][5]"},{"internalType":"address[5]","name":"pools","type":"address[5]"}],"internalType":"struct CurveRoutes.CurveRoute","name":"route","type":"tuple"}],"name":"InvalidRoute","type":"error"},{"inputs":[{"internalType":"address","name":"tokenIn","type":"address"},{"internalType":"address","name":"tokenOut","type":"address"}],"name":"RouteNotFound","type":"error"},{"inputs":[{"internalType":"uint8","name":"nSwaps","type":"uint8"}],"name":"TooManySwaps","type":"error"}],"evm":{"bytecode":{"functionDebugData":{},"generatedSources":[],"linkReferences":{},"object":"60556032600b8282823980515f1a607314602657634e487b7160e01b5f525f60045260245ffd5b305f52607381538281f3fe730000000000000000000000000000000000000000301460806040525f5ffdfea264697066735822122016e218a1bea1fe9a6bd548b392fcd997c77710deeb4bfbec665a7d7ce15adf3d64736f6c634300081e0033","opcodes":"PUSH1 0x55 PUSH1 0x32 PUSH1 0xB DUP3 DUP3 DUP3 CODECOPY DUP1 MLOAD PUSH0 BYTE PUSH1 0x73 EQ PUSH1 0x26 JUMPI PUSH4 0x4E487B71 PUSH1 0xE0 SHL PUSH0 MSTORE PUSH0 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH0 REVERT JUMPDEST ADDRESS PUSH0 MSTORE PUSH1 0x73 DUP2 MSTORE8 DUP3 DUP2 RETURN INVALID PUSH20 0x0 ADDRESS EQ PUSH1 0x80 PUSH1 0x40 MSTORE PUSH0 PUSH0 REVERT INVALID LOG2 PUSH5 0x6970667358 0x22 SLT KECCAK256 AND 0xE2 XOR LOG1 0xBE LOG1 INVALID SWAP11 PUSH12 0xD548B392FCD997C77710DEEB 0x4B EXTSTATICCALL EOFCREATE 0x66 GAS PUSH30 0x7CE15ADF3D64736F6C634300081E00330000000000000000000000000000 ","sourceMap":"839:4055:4:-:0;;;;;;;;;;;;;;;-1:-1:-1;;;839:4055:4;;;;;;;;;;;;;;;;;"},"deployedBytecode":{"functionDebugData":{},"generatedSources":[],"immutableReferences":{},"linkReferences":{},"object":"730000000000000000000000000000000000000000301460806040525f5ffdfea264697066735822122016e218a1bea1fe9a6bd548b392fcd997c77710deeb4bfbec665a7d7ce15adf3d64736f6c634300081e0033","opcodes":"PUSH20 0x0 ADDRESS EQ PUSH1 0x80 PUSH1 0x40 MSTORE PUSH0 PUSH0 REVERT INVALID LOG2 PUSH5 0x6970667358 0x22 SLT KECCAK256 AND 0xE2 XOR LOG1 0xBE LOG1 INVALID SWAP11 PUSH12 0xD548B392FCD997C77710DEEB 0x4B EXTSTATICCALL EOFCREATE 0x66 GAS PUSH30 0x7CE15ADF3D64736F6C634300081E00330000000000000000000000000000 ","sourceMap":"839:4055:4:-:0;;;;;;;;"},"methodIdentifiers":{}},"metadata":"{\"compiler\":{\"version\":\"0.8.30+commit.73712a01\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"inputs\":[],\"name\":\"AtLeastOneRoute\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"CurveRouterCantBeZero\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"InvalidLength\",\"type\":\"error\"},{\"inputs\":[{\"components\":[{\"internalType\":\"address[11]\",\"name\":\"route\",\"type\":\"address[11]\"},{\"internalType\":\"uint256[5][5]\",\"name\":\"swapParams\",\"type\":\"uint256[5][5]\"},{\"internalType\":\"address[5]\",\"name\":\"pools\",\"type\":\"address[5]\"}],\"internalType\":\"struct CurveRoutes.CurveRoute\",\"name\":\"route\",\"type\":\"tuple\"}],\"name\":\"InvalidRoute\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"tokenIn\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"tokenOut\",\"type\":\"address\"}],\"name\":\"RouteNotFound\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"uint8\",\"name\":\"nSwaps\",\"type\":\"uint8\"}],\"name\":\"TooManySwaps\",\"type\":\"error\"}],\"devdoc\":{\"author\":\"Ensuro\",\"custom:security-contact\":\"security@ensuro.co\",\"details\":\"The format is a concatenation of bytes, packed (ethers.solidityPack in js) with the following fields      Fields:      <ICurveRouter router>      <uint8 numberOfRoutes>      -- for each route --      <uint8 numberOfSwaps>      <address route[i] for i in range((numberOfSwaps * 2) + 1)      <uint8 swapParam[i][j] for i in range(numberOfSwaps) for j in range(5)>      <address pool[i] for in range(numberOfSwaps)      -- end - for each route --\",\"kind\":\"dev\",\"methods\":{},\"title\":\"Library to access a set of curve routes stored as tightly packed bytes\",\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{},\"version\":1}},\"settings\":{\"compilationTarget\":{\"@ensuro/swaplibrary/contracts/CurveRoutes.sol\":\"CurveRoutes\"},\"evmVersion\":\"prague\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"enabled\":true,\"runs\":200},\"remappings\":[]},\"sources\":{\"@ensuro/swaplibrary/contracts/CurveRoutes.sol\":{\"keccak256\":\"0x631af8ec291043d7eef34b97a427a4f53eb46d852088f6620c46a36a7e851963\",\"license\":\"Apache-2.0\",\"urls\":[\"bzz-raw://fbaf0f64980572d977b87b83e8bfc9c79fd1d2dc49a21e77e2a11fb8dec2413a\",\"dweb:/ipfs/QmYTpv2BroRz8PpWXYRp5KaaCXRy3tkZ95DeXybP4j3ti4\"]},\"@ensuro/swaplibrary/contracts/dependencies/ICurveRouter.sol\":{\"keccak256\":\"0xf8c39f61b7459cfe6ba74d88fee74efd6d3d05d5cd64dc9eb6d08fbe0361affd\",\"license\":\"UNLICENSED\",\"urls\":[\"bzz-raw://55f11ef7e1cc66fa2c6c2aec436ccf00a835acf4281bff4ee9b4d2cb8980c92f\",\"dweb:/ipfs/QmPfvjcbLbHwoFRFGkM5zvM25vrEvZxjwbxSUL5jm5n3pZ\"]},\"solidity-bytes-utils/contracts/BytesLib.sol\":{\"keccak256\":\"0xf4b07e5d8f69407bb43c6db224adfcf6c73b512dd64e85008ac3c222910c3555\",\"license\":\"Unlicense\",\"urls\":[\"bzz-raw://db020721e59008f7159b65962cc24038c92ac1c2ee8b7cfaa28a1771ced663f5\",\"dweb:/ipfs/QmQ8rznRTYc3AoVCJno8tY6vQVKCbhDJ3husfytUUvMrSN\"]}},\"version\":1}","storageLayout":{"storage":[],"types":null}}},"@ensuro/swaplibrary/contracts/SwapLibrary.sol":{"SwapLibrary":{"abi":[{"inputs":[],"name":"AllowanceShouldGoBackToZero","type":"error"},{"inputs":[],"name":"AtLeastOneRoute","type":"error"},{"inputs":[],"name":"CurveRouterCantBeZero","type":"error"},{"inputs":[],"name":"InvalidLength","type":"error"},{"inputs":[],"name":"InvalidProtocol","type":"error"},{"inputs":[{"components":[{"internalType":"address[11]","name":"route","type":"address[11]"},{"internalType":"uint256[5][5]","name":"swapParams","type":"uint256[5][5]"},{"internalType":"address[5]","name":"pools","type":"address[5]"}],"internalType":"struct CurveRoutes.CurveRoute","name":"route","type":"tuple"}],"name":"InvalidRoute","type":"error"},{"inputs":[],"name":"MaxSlippageCannotBeZero","type":"error"},{"inputs":[{"internalType":"uint256","name":"received","type":"uint256"},{"internalType":"uint256","name":"amountOutMin","type":"uint256"}],"name":"ReceivedLessThanAcceptable","type":"error"},{"inputs":[{"internalType":"address","name":"tokenIn","type":"address"},{"internalType":"address","name":"tokenOut","type":"address"}],"name":"RouteNotFound","type":"error"},{"inputs":[{"internalType":"uint256","name":"spent","type":"uint256"},{"internalType":"uint256","name":"amountInMax","type":"uint256"}],"name":"SpentMoreThanAcceptable","type":"error"},{"inputs":[{"internalType":"uint8","name":"nSwaps","type":"uint8"}],"name":"TooManySwaps","type":"error"},{"inputs":[],"name":"UniswapFeeTierCannotBeZero","type":"error"},{"inputs":[],"name":"UniswapRouterCannotBeZero","type":"error"},{"inputs":[{"components":[{"internalType":"enum SwapLibrary.SwapProtocol","name":"protocol","type":"SwapLibrary.SwapProtocol"},{"internalType":"uint256","name":"maxSlippage","type":"uint256"},{"internalType":"bytes","name":"customParams","type":"bytes"}],"internalType":"struct SwapLibrary.SwapConfig","name":"swapConfig","type":"tuple"}],"name":"validate","outputs":[],"stateMutability":"pure","type":"function"}],"evm":{"bytecode":{"functionDebugData":{},"generatedSources":[],"linkReferences":{},"object":"611c93610034600b8282823980515f1a607314602857634e487b7160e01b5f525f60045260245ffd5b305f52607381538281f3fe730000000000000000000000000000000000000000301460806040526004361061004a575f3560e01c8063581e517d1461004e578063775669151461007f578063b2fca32c1461009e575b5f5ffd5b818015610059575f5ffd5b5061006d610068366004611678565b6100b3565b60405190815260200160405180910390f35b81801561008a575f5ffd5b5061006d610099366004611678565b61012b565b6100b16100ac3660046116e7565b610190565b005b5f60016100c36020880188611735565b60028111156100d4576100d4611721565b036100ed576100e686868686866102d6565b9050610122565b60026100fc6020880188611735565b600281111561010d5761010d611721565b0361011f576100e6868686868661050e565b505f5b95945050505050565b5f600161013b6020880188611735565b600281111561014c5761014c611721565b0361015e576100e686868686866106c6565b600261016d6020880188611735565b600281111561017e5761017e611721565b0361011f576100e68686868686610908565b80602001355f036101b457604051633b3a5b4760e21b815260040160405180910390fd5b60016101c36020830183611735565b60028111156101d4576101d4611721565b0361024c575f6101e76040830183611753565b8101906101f4919061179d565b60208101519091506001600160a01b03166102225760405163e35d3f9360e01b815260040160405180910390fd5b805162ffffff165f036102485760405163c087296d60e01b815260040160405180910390fd5b5050565b600261025b6020830183611735565b600281111561026c5761026c611721565b036102bd576102ba6102816040830183611753565b8080601f0160208091040260200160405190810160405280939291908181526020018383808284375f92019190915250610aee92505050565b50565b6040516301fc71f560e21b815260040160405180910390fd5b5f806102e56040880188611753565b8101906102f2919061179d565b90505f610306858960200135898988610d2c565b602083015160405163095ea7b360e01b81526001600160a01b0391821660048201525f19602482015291925088169063095ea7b3906044016020604051808303815f875af115801561035a573d5f5f3e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061037e919061180f565b505f604051806101000160405280896001600160a01b03168152602001886001600160a01b03168152602001845f015162ffffff168152602001306001600160a01b031681526020014281526020018781526020018381526020015f6001600160a01b031681525090505f83602001516001600160a01b031663db3e2198836040518263ffffffff1660e01b815260040161041991906118a3565b6020604051808303815f875af1158015610435573d5f5f3e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061045991906118b2565b602085015160405163095ea7b360e01b81526001600160a01b0391821660048201525f60248201529192508a169063095ea7b3906044016020604051808303815f875af11580156104ac573d5f5f3e3d5ffd5b505050506040513d601f19601f820116820180604052508101906104d0919061180f565b508281111561050157604051634641f9e160e01b815260048101829052602481018490526044015b60405180910390fd5b9998505050505050505050565b5f808061055e61052160408a018a611753565b8080601f0160208091040260200160405190810160405280939291908181526020018383808284375f920191909152508b92508a9150610d8f9050565b915091505f610574868a602001358a8a89610d2c565b60405163095ea7b360e01b81526001600160a01b038581166004830152602482018390529192509089169063095ea7b3906044016020604051808303815f875af11580156105c4573d5f5f3e3d5ffd5b505050506040513d601f19601f820116820180604052508101906105e8919061180f565b505f805b87158015906105fb5750600281105b15610648575f5f61060d87878c610ed5565b9150915061061b8a83610fdf565b610625908b6118dd565b995061063181856118f0565b93505050808061064090611903565b9150506105ec565b5060405163095ea7b360e01b81526001600160a01b0385811660048301525f60248301528a169063095ea7b3906044016020604051808303815f875af1158015610694573d5f5f3e3d5ffd5b505050506040513d601f19601f820116820180604052508101906106b8919061180f565b509998505050505050505050565b5f806106d56040880188611753565b8101906106e2919061179d565b90505f6106f6858960200135898988610ff3565b602083015160405163095ea7b360e01b81526001600160a01b0391821660048201526024810188905291925088169063095ea7b3906044016020604051808303815f875af115801561074a573d5f5f3e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061076e919061180f565b505f604051806101000160405280896001600160a01b03168152602001886001600160a01b03168152602001845f015162ffffff168152602001306001600160a01b031681526020014281526020018781526020018381526020015f6001600160a01b031681525090505f83602001516001600160a01b031663414bf389836040518263ffffffff1660e01b815260040161080991906118a3565b6020604051808303815f875af1158015610825573d5f5f3e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061084991906118b2565b6020850151604051636eb1769f60e11b81523060048201526001600160a01b0391821660248201529192508a169063dd62ed3e90604401602060405180830381865afa15801561089b573d5f5f3e3d5ffd5b505050506040513d601f19601f820116820180604052508101906108bf91906118b2565b156108dd57604051630511d53d60e41b815260040160405180910390fd5b8281101561050157604051634209aa3160e11b815260048101829052602481018490526044016104f8565b5f808061091b61052160408a018a611753565b915091505f610931868a602001358a8a89610ff3565b60405163095ea7b360e01b81526001600160a01b038581166004830152602482018990529192509089169063095ea7b3906044016020604051808303815f875af1158015610981573d5f5f3e3d5ffd5b505050506040513d601f19601f820116820180604052508101906109a5919061180f565b5081516020830151604080850151905163c872a3c560e01b81526001600160a01b0387169363c872a3c5936109e793919290918c9188919030906004016119bc565b6020604051808303815f875af1158015610a03573d5f5f3e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610a2791906118b2565b604051636eb1769f60e11b81523060048201526001600160a01b0385811660248301529195509089169063dd62ed3e90604401602060405180830381865afa158015610a75573d5f5f3e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610a9991906118b2565b15610ab757604051630511d53d60e41b815260040160405180910390fd5b80841015610ae257604051634209aa3160e11b815260048101859052602481018290526044016104f8565b50505095945050505050565b5f610af98282611026565b90506001600160a01b038116610b225760405163e368363760e01b815260040160405180910390fd5b5f610b38610b316014836118f0565b849061108a565b90508060ff165f03610b5d576040516301ec987f60e31b815260040160405180910390fd5b5f6001610b6b6014836118f0565b610b7591906118f0565b90505f5b8260ff16811015610d04575f5f610b9087856110e5565b915091505f5b8260ff16811015610c375781515f90610bb0836002611a12565b600b8110610bc057610bc0611a29565b60200201516001600160a01b03161480610c0f575081515f90610be4836002611a12565b610bef9060016118f0565b600b8110610bff57610bff611a29565b60200201516001600160a01b0316145b15610c2f5781604051635875b11160e01b81526004016104f89190611a3d565b600101610b96565b5080515f90610c47846002611aa1565b60ff16600b8110610c5a57610c5a611a29565b60200201516001600160a01b031603610c885780604051635875b11160e01b81526004016104f89190611a3d565b60058260ff1614158015610cc5575080515f90610ca4846113e0565b600b8110610cb457610cb4611a29565b60200201516001600160a01b031614155b15610ce55780604051635875b11160e01b81526004016104f89190611a3d565b610cee82611400565b610cf890856118f0565b93505050600101610b79565b5080845114610d265760405163251f56a160e21b815260040160405180910390fd5b50505050565b5f610d368461145d565b610d7b610d4b87670de0b6b3a76400006118f0565b670de0b6b3a7640000610d7486670de0b6b3a7640000610d6a8a61145d565b610d74908e611a12565b91906114d4565b610d859190611ad1565b9695505050505050565b5f610d986115b2565b610da2855f611026565b91505f610dba610db36014836118f0565b879061108a565b90505f6001610dca6014836118f0565b610dd491906118f0565b90505f5b8260ff16811015610ea0575f610dee898461108a565b90506001600160a01b038816610e0f610e086001866118f0565b8b90611026565b6001600160a01b0316148015610e6657506001600160a01b038716610e5b610e3b60ff84166014611a12565b610e46906002611a12565b610e516001876118f0565b610e0891906118f0565b6001600160a01b0316145b15610e8257610e7589846110e5565b9550610ecd945050505050565b610e8b81611400565b610e9590846118f0565b925050600101610dd8565b50604051638c9aec7b60e01b81526001600160a01b038088166004830152861660248201526044016104f8565b935093915050565b81516020830151604080850151905163c07b535360e01b81525f9384936001600160a01b0389169363c07b535393610f139392918991600401611af0565b602060405180830381865afa158015610f2e573d5f5f3e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610f5291906118b2565b84516020860151604080880151905163c872a3c560e01b81529394506001600160a01b0389169363c872a3c593610f95939092909187915f9130906004016119bc565b6020604051808303815f875af1158015610fb1573d5f5f3e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610fd591906118b2565b9150935093915050565b5f8282188284100282185b90505b92915050565b5f610ffd8361145d565b610d7b61101287670de0b6b3a76400006118dd565b8461101c8861145d565b610d74908b611a12565b5f6110328260146118f0565b8351101561107a5760405162461bcd60e51b8152602060048201526015602482015274746f416464726573735f6f75744f66426f756e647360581b60448201526064016104f8565b500160200151600160601b900490565b5f6110968260016118f0565b835110156110dc5760405162461bcd60e51b8152602060048201526013602482015272746f55696e74385f6f75744f66426f756e647360681b60448201526064016104f8565b50016001015190565b5f6110ee6115b2565b6110f8848461108a565b915060058260ff16111561112457604051635b030b5960e11b815260ff831660048201526024016104f8565b5f5b61112f836113e0565b81101561118e57611160611144601483611a12565b61114f6001876118f0565b61115991906118f0565b8690611026565b825182600b811061117357611173611a29565b6001600160a01b039092166020929092020152600101611126565b50601461119a836113e0565b6111a49190611a12565b6111af9060016118f0565b6111b990846118f0565b92505f5b8260ff1681101561135c576111f26111d6600183611a12565b6111e1906005611a12565b6111eb90866118f0565b869061108a565b60ff168260200151826005811061120b5761120b611a29565b60200201515261123f61121f600183611a12565b61122a906005611a12565b61123490866118f0565b6111eb9060016118f0565b60ff168260200151826005811061125857611258611a29565b602002015160016020020152611292611272600183611a12565b61127d906005611a12565b61128790866118f0565b6111eb9060026118f0565b60ff16826020015182600581106112ab576112ab611a29565b6020020151604001526112e26112c2600183611a12565b6112cd906005611a12565b6112d790866118f0565b6111eb9060036118f0565b60ff16826020015182600581106112fb576112fb611a29565b602002015160600152611332611312600183611a12565b61131d906005611a12565b61132790866118f0565b6111eb9060046118f0565b60ff168260200151826005811061134b5761134b611a29565b6020020151608001526001016111bd565b5061136b600160ff8416611a12565b611376906005611a12565b61138090846118f0565b92505f5b8260ff168110156113d8576113a761139d601483611a12565b61115990866118f0565b826040015182600581106113bd576113bd611a29565b6001600160a01b039092166020929092020152600101611384565b509250929050565b5f6113ec826002611aa1565b6113f7906001611b22565b60ff1692915050565b5f61140f601460ff8416611a12565b600161141c846005611aa1565b60ff166114299190611a12565b6014611434856113e0565b61143e9190611a12565b6114499060016118f0565b61145391906118f0565b610fed91906118f0565b5f816001600160a01b031663313ce5676040518163ffffffff1660e01b8152600401602060405180830381865afa15801561149a573d5f5f3e3d5ffd5b505050506040513d601f19601f820116820180604052508101906114be9190611b3b565b6114c9906012611b5b565b610fed90600a611c4f565b5f5f5f6114e18686611585565b91509150815f03611505578381816114fb576114fb611abd565b049250505061157e565b81841161151c5761151c60038515026011186115a1565b5f848688095f868103871696879004966002600389028118808a02820302808a02820302808a02820302808a02820302808a02820302808a02909103029181900381900460010185841190960395909502919093039390930492909217029150505b9392505050565b5f805f1983850993909202808410938190039390930393915050565b634e487b715f52806020526024601cfd5b60405180606001604052806115c56115e4565b81526020016115d2611603565b81526020016115df611630565b905290565b604051806101600160405280600b906020820280368337509192915050565b6040518060a001604052806005905b61161a611630565b8152602001906001900390816116125790505090565b6040518060a001604052806005906020820280368337509192915050565b5f6060828403121561165e575f5ffd5b50919050565b6001600160a01b03811681146102ba575f5ffd5b5f5f5f5f5f60a0868803121561168c575f5ffd5b853567ffffffffffffffff8111156116a2575f5ffd5b6116ae8882890161164e565b95505060208601356116bf81611664565b935060408601356116cf81611664565b94979396509394606081013594506080013592915050565b5f602082840312156116f7575f5ffd5b813567ffffffffffffffff81111561170d575f5ffd5b6117198482850161164e565b949350505050565b634e487b7160e01b5f52602160045260245ffd5b5f60208284031215611745575f5ffd5b81356003811061157e575f5ffd5b5f5f8335601e19843603018112611768575f5ffd5b83018035915067ffffffffffffffff821115611782575f5ffd5b602001915036819003821315611796575f5ffd5b9250929050565b5f60408284031280156117ae575f5ffd5b506040805190810167ffffffffffffffff811182821017156117de57634e487b7160e01b5f52604160045260245ffd5b604052823562ffffff811681146117f3575f5ffd5b8152602083013561180381611664565b60208201529392505050565b5f6020828403121561181f575f5ffd5b8151801515811461157e575f5ffd5b80516001600160a01b03908116835260208083015182169084015260408083015162ffffff169084015260608083015191821690840152506080810151608083015260a081015160a083015260c081015160c083015260e081015161189e60e08401826001600160a01b03169052565b505050565b6101008101610fed828461182e565b5f602082840312156118c2575f5ffd5b5051919050565b634e487b7160e01b5f52601160045260245ffd5b81810381811115610fed57610fed6118c9565b80820180821115610fed57610fed6118c9565b5f60018201611914576119146118c9565b5060010190565b805f5b600b811015610d265781516001600160a01b031684526020938401939091019060010161191e565b805f5b6005811015610d265781515f85815b6005811015611977578351825260209384019390910190600101611958565b50505060a094909401935060209190910190600101611949565b805f5b6005811015610d265781516001600160a01b0316845260209384019390910190600101611994565b61058081016119cb828961191b565b6119d9610160830188611946565b85610480830152846104a08301526119f56104c0830185611991565b6001600160a01b0392909216610560919091015295945050505050565b8082028115828204841417610fed57610fed6118c9565b634e487b7160e01b5f52603260045260245ffd5b8151610520820190825f5b600b811015611a705782516001600160a01b0316825260209283019290910190600101611a48565b5050506020830151611a86610160840182611946565b506040830151611a9a610480840182611991565b5092915050565b60ff8181168382160290811690818114611a9a57611a9a6118c9565b634e487b7160e01b5f52601260045260245ffd5b5f82611aeb57634e487b7160e01b5f52601260045260245ffd5b500490565b6105408101611aff828761191b565b611b0d610160830186611946565b836104808301526101226104a0830184611991565b60ff8181168382160190811115610fed57610fed6118c9565b5f60208284031215611b4b575f5ffd5b815160ff8116811461157e575f5ffd5b60ff8281168282160390811115610fed57610fed6118c9565b6001815b6001841115610ecd57808504811115611b9357611b936118c9565b6001841615611ba157908102905b60019390931c928002611b78565b5f82611bbd57506001610fed565b81611bc957505f610fed565b8160018114611bdf5760028114611be957611c05565b6001915050610fed565b60ff841115611bfa57611bfa6118c9565b50506001821b610fed565b5060208310610133831016604e8410600b8410161715611c28575081810a610fed565b611c345f198484611b74565b805f1904821115611c4757611c476118c9565b029392505050565b5f610fea60ff841683611baf56fea26469706673582212208787ac633566049c39b641484173ba28749957df6425bb8a9bbdf7459286e43964736f6c634300081e0033","opcodes":"PUSH2 0x1C93 PUSH2 0x34 PUSH1 0xB DUP3 DUP3 DUP3 CODECOPY DUP1 MLOAD PUSH0 BYTE PUSH1 0x73 EQ PUSH1 0x28 JUMPI PUSH4 0x4E487B71 PUSH1 0xE0 SHL PUSH0 MSTORE PUSH0 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH0 REVERT JUMPDEST ADDRESS PUSH0 MSTORE PUSH1 0x73 DUP2 MSTORE8 DUP3 DUP2 RETURN INVALID PUSH20 0x0 ADDRESS EQ PUSH1 0x80 PUSH1 0x40 MSTORE PUSH1 0x4 CALLDATASIZE LT PUSH2 0x4A JUMPI PUSH0 CALLDATALOAD PUSH1 0xE0 SHR DUP1 PUSH4 0x581E517D EQ PUSH2 0x4E JUMPI DUP1 PUSH4 0x77566915 EQ PUSH2 0x7F JUMPI DUP1 PUSH4 0xB2FCA32C EQ PUSH2 0x9E JUMPI JUMPDEST PUSH0 PUSH0 REVERT JUMPDEST DUP2 DUP1 ISZERO PUSH2 0x59 JUMPI PUSH0 PUSH0 REVERT JUMPDEST POP PUSH2 0x6D PUSH2 0x68 CALLDATASIZE PUSH1 0x4 PUSH2 0x1678 JUMP JUMPDEST PUSH2 0xB3 JUMP JUMPDEST PUSH1 0x40 MLOAD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST DUP2 DUP1 ISZERO PUSH2 0x8A JUMPI PUSH0 PUSH0 REVERT JUMPDEST POP PUSH2 0x6D PUSH2 0x99 CALLDATASIZE PUSH1 0x4 PUSH2 0x1678 JUMP JUMPDEST PUSH2 0x12B JUMP JUMPDEST PUSH2 0xB1 PUSH2 0xAC CALLDATASIZE PUSH1 0x4 PUSH2 0x16E7 JUMP JUMPDEST PUSH2 0x190 JUMP JUMPDEST STOP JUMPDEST PUSH0 PUSH1 0x1 PUSH2 0xC3 PUSH1 0x20 DUP9 ADD DUP9 PUSH2 0x1735 JUMP JUMPDEST PUSH1 0x2 DUP2 GT ISZERO PUSH2 0xD4 JUMPI PUSH2 0xD4 PUSH2 0x1721 JUMP JUMPDEST SUB PUSH2 0xED JUMPI PUSH2 0xE6 DUP7 DUP7 DUP7 DUP7 DUP7 PUSH2 0x2D6 JUMP JUMPDEST SWAP1 POP PUSH2 0x122 JUMP JUMPDEST PUSH1 0x2 PUSH2 0xFC PUSH1 0x20 DUP9 ADD DUP9 PUSH2 0x1735 JUMP JUMPDEST PUSH1 0x2 DUP2 GT ISZERO PUSH2 0x10D JUMPI PUSH2 0x10D PUSH2 0x1721 JUMP JUMPDEST SUB PUSH2 0x11F JUMPI PUSH2 0xE6 DUP7 DUP7 DUP7 DUP7 DUP7 PUSH2 0x50E JUMP JUMPDEST POP PUSH0 JUMPDEST SWAP6 SWAP5 POP POP POP POP POP JUMP JUMPDEST PUSH0 PUSH1 0x1 PUSH2 0x13B PUSH1 0x20 DUP9 ADD DUP9 PUSH2 0x1735 JUMP JUMPDEST PUSH1 0x2 DUP2 GT ISZERO PUSH2 0x14C JUMPI PUSH2 0x14C PUSH2 0x1721 JUMP JUMPDEST SUB PUSH2 0x15E JUMPI PUSH2 0xE6 DUP7 DUP7 DUP7 DUP7 DUP7 PUSH2 0x6C6 JUMP JUMPDEST PUSH1 0x2 PUSH2 0x16D PUSH1 0x20 DUP9 ADD DUP9 PUSH2 0x1735 JUMP JUMPDEST PUSH1 0x2 DUP2 GT ISZERO PUSH2 0x17E JUMPI PUSH2 0x17E PUSH2 0x1721 JUMP JUMPDEST SUB PUSH2 0x11F JUMPI PUSH2 0xE6 DUP7 DUP7 DUP7 DUP7 DUP7 PUSH2 0x908 JUMP JUMPDEST DUP1 PUSH1 0x20 ADD CALLDATALOAD PUSH0 SUB PUSH2 0x1B4 JUMPI PUSH1 0x40 MLOAD PUSH4 0x3B3A5B47 PUSH1 0xE2 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH1 0x1 PUSH2 0x1C3 PUSH1 0x20 DUP4 ADD DUP4 PUSH2 0x1735 JUMP JUMPDEST PUSH1 0x2 DUP2 GT ISZERO PUSH2 0x1D4 JUMPI PUSH2 0x1D4 PUSH2 0x1721 JUMP JUMPDEST SUB PUSH2 0x24C JUMPI PUSH0 PUSH2 0x1E7 PUSH1 0x40 DUP4 ADD DUP4 PUSH2 0x1753 JUMP JUMPDEST DUP2 ADD SWAP1 PUSH2 0x1F4 SWAP2 SWAP1 PUSH2 0x179D JUMP JUMPDEST PUSH1 0x20 DUP2 ADD MLOAD SWAP1 SWAP2 POP PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH2 0x222 JUMPI PUSH1 0x40 MLOAD PUSH4 0xE35D3F93 PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST DUP1 MLOAD PUSH3 0xFFFFFF AND PUSH0 SUB PUSH2 0x248 JUMPI PUSH1 0x40 MLOAD PUSH4 0xC087296D PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST POP POP JUMP JUMPDEST PUSH1 0x2 PUSH2 0x25B PUSH1 0x20 DUP4 ADD DUP4 PUSH2 0x1735 JUMP JUMPDEST PUSH1 0x2 DUP2 GT ISZERO PUSH2 0x26C JUMPI PUSH2 0x26C PUSH2 0x1721 JUMP JUMPDEST SUB PUSH2 0x2BD JUMPI PUSH2 0x2BA PUSH2 0x281 PUSH1 0x40 DUP4 ADD DUP4 PUSH2 0x1753 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 PUSH0 SWAP3 ADD SWAP2 SWAP1 SWAP2 MSTORE POP PUSH2 0xAEE SWAP3 POP POP POP JUMP JUMPDEST POP JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH4 0x1FC71F5 PUSH1 0xE2 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH0 DUP1 PUSH2 0x2E5 PUSH1 0x40 DUP9 ADD DUP9 PUSH2 0x1753 JUMP JUMPDEST DUP2 ADD SWAP1 PUSH2 0x2F2 SWAP2 SWAP1 PUSH2 0x179D JUMP JUMPDEST SWAP1 POP PUSH0 PUSH2 0x306 DUP6 DUP10 PUSH1 0x20 ADD CALLDATALOAD DUP10 DUP10 DUP9 PUSH2 0xD2C JUMP JUMPDEST PUSH1 0x20 DUP4 ADD MLOAD PUSH1 0x40 MLOAD PUSH4 0x95EA7B3 PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP2 DUP3 AND PUSH1 0x4 DUP3 ADD MSTORE PUSH0 NOT PUSH1 0x24 DUP3 ADD MSTORE SWAP2 SWAP3 POP DUP9 AND SWAP1 PUSH4 0x95EA7B3 SWAP1 PUSH1 0x44 ADD PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 PUSH0 DUP8 GAS CALL ISZERO DUP1 ISZERO PUSH2 0x35A JUMPI RETURNDATASIZE PUSH0 PUSH0 RETURNDATACOPY RETURNDATASIZE PUSH0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP3 ADD DUP1 PUSH1 0x40 MSTORE POP DUP2 ADD SWAP1 PUSH2 0x37E SWAP2 SWAP1 PUSH2 0x180F JUMP JUMPDEST POP PUSH0 PUSH1 0x40 MLOAD DUP1 PUSH2 0x100 ADD PUSH1 0x40 MSTORE DUP1 DUP10 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP2 MSTORE PUSH1 0x20 ADD DUP9 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP2 MSTORE PUSH1 0x20 ADD DUP5 PUSH0 ADD MLOAD PUSH3 0xFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD ADDRESS PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP2 MSTORE PUSH1 0x20 ADD TIMESTAMP DUP2 MSTORE PUSH1 0x20 ADD DUP8 DUP2 MSTORE PUSH1 0x20 ADD DUP4 DUP2 MSTORE PUSH1 0x20 ADD PUSH0 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP2 MSTORE POP SWAP1 POP PUSH0 DUP4 PUSH1 0x20 ADD MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH4 0xDB3E2198 DUP4 PUSH1 0x40 MLOAD DUP3 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x419 SWAP2 SWAP1 PUSH2 0x18A3 JUMP JUMPDEST PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 PUSH0 DUP8 GAS CALL ISZERO DUP1 ISZERO PUSH2 0x435 JUMPI RETURNDATASIZE PUSH0 PUSH0 RETURNDATACOPY RETURNDATASIZE PUSH0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP3 ADD DUP1 PUSH1 0x40 MSTORE POP DUP2 ADD SWAP1 PUSH2 0x459 SWAP2 SWAP1 PUSH2 0x18B2 JUMP JUMPDEST PUSH1 0x20 DUP6 ADD MLOAD PUSH1 0x40 MLOAD PUSH4 0x95EA7B3 PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP2 DUP3 AND PUSH1 0x4 DUP3 ADD MSTORE PUSH0 PUSH1 0x24 DUP3 ADD MSTORE SWAP2 SWAP3 POP DUP11 AND SWAP1 PUSH4 0x95EA7B3 SWAP1 PUSH1 0x44 ADD PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 PUSH0 DUP8 GAS CALL ISZERO DUP1 ISZERO PUSH2 0x4AC JUMPI RETURNDATASIZE PUSH0 PUSH0 RETURNDATACOPY RETURNDATASIZE PUSH0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP3 ADD DUP1 PUSH1 0x40 MSTORE POP DUP2 ADD SWAP1 PUSH2 0x4D0 SWAP2 SWAP1 PUSH2 0x180F JUMP JUMPDEST POP DUP3 DUP2 GT ISZERO PUSH2 0x501 JUMPI PUSH1 0x40 MLOAD PUSH4 0x4641F9E1 PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 DUP2 ADD DUP3 SWAP1 MSTORE PUSH1 0x24 DUP2 ADD DUP5 SWAP1 MSTORE PUSH1 0x44 ADD JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST SWAP10 SWAP9 POP POP POP POP POP POP POP POP POP JUMP JUMPDEST PUSH0 DUP1 DUP1 PUSH2 0x55E PUSH2 0x521 PUSH1 0x40 DUP11 ADD DUP11 PUSH2 0x1753 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 PUSH0 SWAP3 ADD SWAP2 SWAP1 SWAP2 MSTORE POP DUP12 SWAP3 POP DUP11 SWAP2 POP PUSH2 0xD8F SWAP1 POP JUMP JUMPDEST SWAP2 POP SWAP2 POP PUSH0 PUSH2 0x574 DUP7 DUP11 PUSH1 0x20 ADD CALLDATALOAD DUP11 DUP11 DUP10 PUSH2 0xD2C JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH4 0x95EA7B3 PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP6 DUP2 AND PUSH1 0x4 DUP4 ADD MSTORE PUSH1 0x24 DUP3 ADD DUP4 SWAP1 MSTORE SWAP2 SWAP3 POP SWAP1 DUP10 AND SWAP1 PUSH4 0x95EA7B3 SWAP1 PUSH1 0x44 ADD PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 PUSH0 DUP8 GAS CALL ISZERO DUP1 ISZERO PUSH2 0x5C4 JUMPI RETURNDATASIZE PUSH0 PUSH0 RETURNDATACOPY RETURNDATASIZE PUSH0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP3 ADD DUP1 PUSH1 0x40 MSTORE POP DUP2 ADD SWAP1 PUSH2 0x5E8 SWAP2 SWAP1 PUSH2 0x180F JUMP JUMPDEST POP PUSH0 DUP1 JUMPDEST DUP8 ISZERO DUP1 ISZERO SWAP1 PUSH2 0x5FB JUMPI POP PUSH1 0x2 DUP2 LT JUMPDEST ISZERO PUSH2 0x648 JUMPI PUSH0 PUSH0 PUSH2 0x60D DUP8 DUP8 DUP13 PUSH2 0xED5 JUMP JUMPDEST SWAP2 POP SWAP2 POP PUSH2 0x61B DUP11 DUP4 PUSH2 0xFDF JUMP JUMPDEST PUSH2 0x625 SWAP1 DUP12 PUSH2 0x18DD JUMP JUMPDEST SWAP10 POP PUSH2 0x631 DUP2 DUP6 PUSH2 0x18F0 JUMP JUMPDEST SWAP4 POP POP POP DUP1 DUP1 PUSH2 0x640 SWAP1 PUSH2 0x1903 JUMP JUMPDEST SWAP2 POP POP PUSH2 0x5EC JUMP JUMPDEST POP PUSH1 0x40 MLOAD PUSH4 0x95EA7B3 PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP6 DUP2 AND PUSH1 0x4 DUP4 ADD MSTORE PUSH0 PUSH1 0x24 DUP4 ADD MSTORE DUP11 AND SWAP1 PUSH4 0x95EA7B3 SWAP1 PUSH1 0x44 ADD PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 PUSH0 DUP8 GAS CALL ISZERO DUP1 ISZERO PUSH2 0x694 JUMPI RETURNDATASIZE PUSH0 PUSH0 RETURNDATACOPY RETURNDATASIZE PUSH0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP3 ADD DUP1 PUSH1 0x40 MSTORE POP DUP2 ADD SWAP1 PUSH2 0x6B8 SWAP2 SWAP1 PUSH2 0x180F JUMP JUMPDEST POP SWAP10 SWAP9 POP POP POP POP POP POP POP POP POP JUMP JUMPDEST PUSH0 DUP1 PUSH2 0x6D5 PUSH1 0x40 DUP9 ADD DUP9 PUSH2 0x1753 JUMP JUMPDEST DUP2 ADD SWAP1 PUSH2 0x6E2 SWAP2 SWAP1 PUSH2 0x179D JUMP JUMPDEST SWAP1 POP PUSH0 PUSH2 0x6F6 DUP6 DUP10 PUSH1 0x20 ADD CALLDATALOAD DUP10 DUP10 DUP9 PUSH2 0xFF3 JUMP JUMPDEST PUSH1 0x20 DUP4 ADD MLOAD PUSH1 0x40 MLOAD PUSH4 0x95EA7B3 PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP2 DUP3 AND PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x24 DUP2 ADD DUP9 SWAP1 MSTORE SWAP2 SWAP3 POP DUP9 AND SWAP1 PUSH4 0x95EA7B3 SWAP1 PUSH1 0x44 ADD PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 PUSH0 DUP8 GAS CALL ISZERO DUP1 ISZERO PUSH2 0x74A JUMPI RETURNDATASIZE PUSH0 PUSH0 RETURNDATACOPY RETURNDATASIZE PUSH0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP3 ADD DUP1 PUSH1 0x40 MSTORE POP DUP2 ADD SWAP1 PUSH2 0x76E SWAP2 SWAP1 PUSH2 0x180F JUMP JUMPDEST POP PUSH0 PUSH1 0x40 MLOAD DUP1 PUSH2 0x100 ADD PUSH1 0x40 MSTORE DUP1 DUP10 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP2 MSTORE PUSH1 0x20 ADD DUP9 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP2 MSTORE PUSH1 0x20 ADD DUP5 PUSH0 ADD MLOAD PUSH3 0xFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD ADDRESS PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP2 MSTORE PUSH1 0x20 ADD TIMESTAMP DUP2 MSTORE PUSH1 0x20 ADD DUP8 DUP2 MSTORE PUSH1 0x20 ADD DUP4 DUP2 MSTORE PUSH1 0x20 ADD PUSH0 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP2 MSTORE POP SWAP1 POP PUSH0 DUP4 PUSH1 0x20 ADD MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH4 0x414BF389 DUP4 PUSH1 0x40 MLOAD DUP3 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x809 SWAP2 SWAP1 PUSH2 0x18A3 JUMP JUMPDEST PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 PUSH0 DUP8 GAS CALL ISZERO DUP1 ISZERO PUSH2 0x825 JUMPI RETURNDATASIZE PUSH0 PUSH0 RETURNDATACOPY RETURNDATASIZE PUSH0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP3 ADD DUP1 PUSH1 0x40 MSTORE POP DUP2 ADD SWAP1 PUSH2 0x849 SWAP2 SWAP1 PUSH2 0x18B2 JUMP JUMPDEST PUSH1 0x20 DUP6 ADD MLOAD PUSH1 0x40 MLOAD PUSH4 0x6EB1769F PUSH1 0xE1 SHL DUP2 MSTORE ADDRESS PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP2 DUP3 AND PUSH1 0x24 DUP3 ADD MSTORE SWAP2 SWAP3 POP DUP11 AND SWAP1 PUSH4 0xDD62ED3E SWAP1 PUSH1 0x44 ADD PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x89B JUMPI RETURNDATASIZE PUSH0 PUSH0 RETURNDATACOPY RETURNDATASIZE PUSH0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP3 ADD DUP1 PUSH1 0x40 MSTORE POP DUP2 ADD SWAP1 PUSH2 0x8BF SWAP2 SWAP1 PUSH2 0x18B2 JUMP JUMPDEST ISZERO PUSH2 0x8DD JUMPI PUSH1 0x40 MLOAD PUSH4 0x511D53D PUSH1 0xE4 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST DUP3 DUP2 LT ISZERO PUSH2 0x501 JUMPI PUSH1 0x40 MLOAD PUSH4 0x4209AA31 PUSH1 0xE1 SHL DUP2 MSTORE PUSH1 0x4 DUP2 ADD DUP3 SWAP1 MSTORE PUSH1 0x24 DUP2 ADD DUP5 SWAP1 MSTORE PUSH1 0x44 ADD PUSH2 0x4F8 JUMP JUMPDEST PUSH0 DUP1 DUP1 PUSH2 0x91B PUSH2 0x521 PUSH1 0x40 DUP11 ADD DUP11 PUSH2 0x1753 JUMP JUMPDEST SWAP2 POP SWAP2 POP PUSH0 PUSH2 0x931 DUP7 DUP11 PUSH1 0x20 ADD CALLDATALOAD DUP11 DUP11 DUP10 PUSH2 0xFF3 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH4 0x95EA7B3 PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP6 DUP2 AND PUSH1 0x4 DUP4 ADD MSTORE PUSH1 0x24 DUP3 ADD DUP10 SWAP1 MSTORE SWAP2 SWAP3 POP SWAP1 DUP10 AND SWAP1 PUSH4 0x95EA7B3 SWAP1 PUSH1 0x44 ADD PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 PUSH0 DUP8 GAS CALL ISZERO DUP1 ISZERO PUSH2 0x981 JUMPI RETURNDATASIZE PUSH0 PUSH0 RETURNDATACOPY RETURNDATASIZE PUSH0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP3 ADD DUP1 PUSH1 0x40 MSTORE POP DUP2 ADD SWAP1 PUSH2 0x9A5 SWAP2 SWAP1 PUSH2 0x180F JUMP JUMPDEST POP DUP2 MLOAD PUSH1 0x20 DUP4 ADD MLOAD PUSH1 0x40 DUP1 DUP6 ADD MLOAD SWAP1 MLOAD PUSH4 0xC872A3C5 PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP8 AND SWAP4 PUSH4 0xC872A3C5 SWAP4 PUSH2 0x9E7 SWAP4 SWAP2 SWAP3 SWAP1 SWAP2 DUP13 SWAP2 DUP9 SWAP2 SWAP1 ADDRESS SWAP1 PUSH1 0x4 ADD PUSH2 0x19BC JUMP JUMPDEST PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 PUSH0 DUP8 GAS CALL ISZERO DUP1 ISZERO PUSH2 0xA03 JUMPI RETURNDATASIZE PUSH0 PUSH0 RETURNDATACOPY RETURNDATASIZE PUSH0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP3 ADD DUP1 PUSH1 0x40 MSTORE POP DUP2 ADD SWAP1 PUSH2 0xA27 SWAP2 SWAP1 PUSH2 0x18B2 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH4 0x6EB1769F PUSH1 0xE1 SHL DUP2 MSTORE ADDRESS PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP6 DUP2 AND PUSH1 0x24 DUP4 ADD MSTORE SWAP2 SWAP6 POP SWAP1 DUP10 AND SWAP1 PUSH4 0xDD62ED3E SWAP1 PUSH1 0x44 ADD PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0xA75 JUMPI RETURNDATASIZE PUSH0 PUSH0 RETURNDATACOPY RETURNDATASIZE PUSH0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP3 ADD DUP1 PUSH1 0x40 MSTORE POP DUP2 ADD SWAP1 PUSH2 0xA99 SWAP2 SWAP1 PUSH2 0x18B2 JUMP JUMPDEST ISZERO PUSH2 0xAB7 JUMPI PUSH1 0x40 MLOAD PUSH4 0x511D53D PUSH1 0xE4 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST DUP1 DUP5 LT ISZERO PUSH2 0xAE2 JUMPI PUSH1 0x40 MLOAD PUSH4 0x4209AA31 PUSH1 0xE1 SHL DUP2 MSTORE PUSH1 0x4 DUP2 ADD DUP6 SWAP1 MSTORE PUSH1 0x24 DUP2 ADD DUP3 SWAP1 MSTORE PUSH1 0x44 ADD PUSH2 0x4F8 JUMP JUMPDEST POP POP POP SWAP6 SWAP5 POP POP POP POP POP JUMP JUMPDEST PUSH0 PUSH2 0xAF9 DUP3 DUP3 PUSH2 0x1026 JUMP JUMPDEST SWAP1 POP PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 AND PUSH2 0xB22 JUMPI PUSH1 0x40 MLOAD PUSH4 0xE3683637 PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH0 PUSH2 0xB38 PUSH2 0xB31 PUSH1 0x14 DUP4 PUSH2 0x18F0 JUMP JUMPDEST DUP5 SWAP1 PUSH2 0x108A JUMP JUMPDEST SWAP1 POP DUP1 PUSH1 0xFF AND PUSH0 SUB PUSH2 0xB5D JUMPI PUSH1 0x40 MLOAD PUSH4 0x1EC987F PUSH1 0xE3 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH0 PUSH1 0x1 PUSH2 0xB6B PUSH1 0x14 DUP4 PUSH2 0x18F0 JUMP JUMPDEST PUSH2 0xB75 SWAP2 SWAP1 PUSH2 0x18F0 JUMP JUMPDEST SWAP1 POP PUSH0 JUMPDEST DUP3 PUSH1 0xFF AND DUP2 LT ISZERO PUSH2 0xD04 JUMPI PUSH0 PUSH0 PUSH2 0xB90 DUP8 DUP6 PUSH2 0x10E5 JUMP JUMPDEST SWAP2 POP SWAP2 POP PUSH0 JUMPDEST DUP3 PUSH1 0xFF AND DUP2 LT ISZERO PUSH2 0xC37 JUMPI DUP2 MLOAD PUSH0 SWAP1 PUSH2 0xBB0 DUP4 PUSH1 0x2 PUSH2 0x1A12 JUMP JUMPDEST PUSH1 0xB DUP2 LT PUSH2 0xBC0 JUMPI PUSH2 0xBC0 PUSH2 0x1A29 JUMP JUMPDEST PUSH1 0x20 MUL ADD MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND EQ DUP1 PUSH2 0xC0F JUMPI POP DUP2 MLOAD PUSH0 SWAP1 PUSH2 0xBE4 DUP4 PUSH1 0x2 PUSH2 0x1A12 JUMP JUMPDEST PUSH2 0xBEF SWAP1 PUSH1 0x1 PUSH2 0x18F0 JUMP JUMPDEST PUSH1 0xB DUP2 LT PUSH2 0xBFF JUMPI PUSH2 0xBFF PUSH2 0x1A29 JUMP JUMPDEST PUSH1 0x20 MUL ADD MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND EQ JUMPDEST ISZERO PUSH2 0xC2F JUMPI DUP2 PUSH1 0x40 MLOAD PUSH4 0x5875B111 PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x4F8 SWAP2 SWAP1 PUSH2 0x1A3D JUMP JUMPDEST PUSH1 0x1 ADD PUSH2 0xB96 JUMP JUMPDEST POP DUP1 MLOAD PUSH0 SWAP1 PUSH2 0xC47 DUP5 PUSH1 0x2 PUSH2 0x1AA1 JUMP JUMPDEST PUSH1 0xFF AND PUSH1 0xB DUP2 LT PUSH2 0xC5A JUMPI PUSH2 0xC5A PUSH2 0x1A29 JUMP JUMPDEST PUSH1 0x20 MUL ADD MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND SUB PUSH2 0xC88 JUMPI DUP1 PUSH1 0x40 MLOAD PUSH4 0x5875B111 PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x4F8 SWAP2 SWAP1 PUSH2 0x1A3D JUMP JUMPDEST PUSH1 0x5 DUP3 PUSH1 0xFF AND EQ ISZERO DUP1 ISZERO PUSH2 0xCC5 JUMPI POP DUP1 MLOAD PUSH0 SWAP1 PUSH2 0xCA4 DUP5 PUSH2 0x13E0 JUMP JUMPDEST PUSH1 0xB DUP2 LT PUSH2 0xCB4 JUMPI PUSH2 0xCB4 PUSH2 0x1A29 JUMP JUMPDEST PUSH1 0x20 MUL ADD MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND EQ ISZERO JUMPDEST ISZERO PUSH2 0xCE5 JUMPI DUP1 PUSH1 0x40 MLOAD PUSH4 0x5875B111 PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x4F8 SWAP2 SWAP1 PUSH2 0x1A3D JUMP JUMPDEST PUSH2 0xCEE DUP3 PUSH2 0x1400 JUMP JUMPDEST PUSH2 0xCF8 SWAP1 DUP6 PUSH2 0x18F0 JUMP JUMPDEST SWAP4 POP POP POP PUSH1 0x1 ADD PUSH2 0xB79 JUMP JUMPDEST POP DUP1 DUP5 MLOAD EQ PUSH2 0xD26 JUMPI PUSH1 0x40 MLOAD PUSH4 0x251F56A1 PUSH1 0xE2 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST POP POP POP POP JUMP JUMPDEST PUSH0 PUSH2 0xD36 DUP5 PUSH2 0x145D JUMP JUMPDEST PUSH2 0xD7B PUSH2 0xD4B DUP8 PUSH8 0xDE0B6B3A7640000 PUSH2 0x18F0 JUMP JUMPDEST PUSH8 0xDE0B6B3A7640000 PUSH2 0xD74 DUP7 PUSH8 0xDE0B6B3A7640000 PUSH2 0xD6A DUP11 PUSH2 0x145D JUMP JUMPDEST PUSH2 0xD74 SWAP1 DUP15 PUSH2 0x1A12 JUMP JUMPDEST SWAP2 SWAP1 PUSH2 0x14D4 JUMP JUMPDEST PUSH2 0xD85 SWAP2 SWAP1 PUSH2 0x1AD1 JUMP JUMPDEST SWAP7 SWAP6 POP POP POP POP POP POP JUMP JUMPDEST PUSH0 PUSH2 0xD98 PUSH2 0x15B2 JUMP JUMPDEST PUSH2 0xDA2 DUP6 PUSH0 PUSH2 0x1026 JUMP JUMPDEST SWAP2 POP PUSH0 PUSH2 0xDBA PUSH2 0xDB3 PUSH1 0x14 DUP4 PUSH2 0x18F0 JUMP JUMPDEST DUP8 SWAP1 PUSH2 0x108A JUMP JUMPDEST SWAP1 POP PUSH0 PUSH1 0x1 PUSH2 0xDCA PUSH1 0x14 DUP4 PUSH2 0x18F0 JUMP JUMPDEST PUSH2 0xDD4 SWAP2 SWAP1 PUSH2 0x18F0 JUMP JUMPDEST SWAP1 POP PUSH0 JUMPDEST DUP3 PUSH1 0xFF AND DUP2 LT ISZERO PUSH2 0xEA0 JUMPI PUSH0 PUSH2 0xDEE DUP10 DUP5 PUSH2 0x108A JUMP JUMPDEST SWAP1 POP PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP9 AND PUSH2 0xE0F PUSH2 0xE08 PUSH1 0x1 DUP7 PUSH2 0x18F0 JUMP JUMPDEST DUP12 SWAP1 PUSH2 0x1026 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND EQ DUP1 ISZERO PUSH2 0xE66 JUMPI POP PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP8 AND PUSH2 0xE5B PUSH2 0xE3B PUSH1 0xFF DUP5 AND PUSH1 0x14 PUSH2 0x1A12 JUMP JUMPDEST PUSH2 0xE46 SWAP1 PUSH1 0x2 PUSH2 0x1A12 JUMP JUMPDEST PUSH2 0xE51 PUSH1 0x1 DUP8 PUSH2 0x18F0 JUMP JUMPDEST PUSH2 0xE08 SWAP2 SWAP1 PUSH2 0x18F0 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND EQ JUMPDEST ISZERO PUSH2 0xE82 JUMPI PUSH2 0xE75 DUP10 DUP5 PUSH2 0x10E5 JUMP JUMPDEST SWAP6 POP PUSH2 0xECD SWAP5 POP POP POP POP POP JUMP JUMPDEST PUSH2 0xE8B DUP2 PUSH2 0x1400 JUMP JUMPDEST PUSH2 0xE95 SWAP1 DUP5 PUSH2 0x18F0 JUMP JUMPDEST SWAP3 POP POP PUSH1 0x1 ADD PUSH2 0xDD8 JUMP JUMPDEST POP PUSH1 0x40 MLOAD PUSH4 0x8C9AEC7B PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP1 DUP9 AND PUSH1 0x4 DUP4 ADD MSTORE DUP7 AND PUSH1 0x24 DUP3 ADD MSTORE PUSH1 0x44 ADD PUSH2 0x4F8 JUMP JUMPDEST SWAP4 POP SWAP4 SWAP2 POP POP JUMP JUMPDEST DUP2 MLOAD PUSH1 0x20 DUP4 ADD MLOAD PUSH1 0x40 DUP1 DUP6 ADD MLOAD SWAP1 MLOAD PUSH4 0xC07B5353 PUSH1 0xE0 SHL DUP2 MSTORE PUSH0 SWAP4 DUP5 SWAP4 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP10 AND SWAP4 PUSH4 0xC07B5353 SWAP4 PUSH2 0xF13 SWAP4 SWAP3 SWAP2 DUP10 SWAP2 PUSH1 0x4 ADD PUSH2 0x1AF0 JUMP JUMPDEST PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0xF2E JUMPI RETURNDATASIZE PUSH0 PUSH0 RETURNDATACOPY RETURNDATASIZE PUSH0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP3 ADD DUP1 PUSH1 0x40 MSTORE POP DUP2 ADD SWAP1 PUSH2 0xF52 SWAP2 SWAP1 PUSH2 0x18B2 JUMP JUMPDEST DUP5 MLOAD PUSH1 0x20 DUP7 ADD MLOAD PUSH1 0x40 DUP1 DUP9 ADD MLOAD SWAP1 MLOAD PUSH4 0xC872A3C5 PUSH1 0xE0 SHL DUP2 MSTORE SWAP4 SWAP5 POP PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP10 AND SWAP4 PUSH4 0xC872A3C5 SWAP4 PUSH2 0xF95 SWAP4 SWAP1 SWAP3 SWAP1 SWAP2 DUP8 SWAP2 PUSH0 SWAP2 ADDRESS SWAP1 PUSH1 0x4 ADD PUSH2 0x19BC JUMP JUMPDEST PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 PUSH0 DUP8 GAS CALL ISZERO DUP1 ISZERO PUSH2 0xFB1 JUMPI RETURNDATASIZE PUSH0 PUSH0 RETURNDATACOPY RETURNDATASIZE PUSH0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP3 ADD DUP1 PUSH1 0x40 MSTORE POP DUP2 ADD SWAP1 PUSH2 0xFD5 SWAP2 SWAP1 PUSH2 0x18B2 JUMP JUMPDEST SWAP2 POP SWAP4 POP SWAP4 SWAP2 POP POP JUMP JUMPDEST PUSH0 DUP3 DUP3 XOR DUP3 DUP5 LT MUL DUP3 XOR JUMPDEST SWAP1 POP JUMPDEST SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH0 PUSH2 0xFFD DUP4 PUSH2 0x145D JUMP JUMPDEST PUSH2 0xD7B PUSH2 0x1012 DUP8 PUSH8 0xDE0B6B3A7640000 PUSH2 0x18DD JUMP JUMPDEST DUP5 PUSH2 0x101C DUP9 PUSH2 0x145D JUMP JUMPDEST PUSH2 0xD74 SWAP1 DUP12 PUSH2 0x1A12 JUMP JUMPDEST PUSH0 PUSH2 0x1032 DUP3 PUSH1 0x14 PUSH2 0x18F0 JUMP JUMPDEST DUP4 MLOAD LT ISZERO PUSH2 0x107A 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 PUSH21 0x746F416464726573735F6F75744F66426F756E6473 PUSH1 0x58 SHL PUSH1 0x44 DUP3 ADD MSTORE PUSH1 0x64 ADD PUSH2 0x4F8 JUMP JUMPDEST POP ADD PUSH1 0x20 ADD MLOAD PUSH1 0x1 PUSH1 0x60 SHL SWAP1 DIV SWAP1 JUMP JUMPDEST PUSH0 PUSH2 0x1096 DUP3 PUSH1 0x1 PUSH2 0x18F0 JUMP JUMPDEST DUP4 MLOAD LT ISZERO PUSH2 0x10DC 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 PUSH19 0x746F55696E74385F6F75744F66426F756E6473 PUSH1 0x68 SHL PUSH1 0x44 DUP3 ADD MSTORE PUSH1 0x64 ADD PUSH2 0x4F8 JUMP JUMPDEST POP ADD PUSH1 0x1 ADD MLOAD SWAP1 JUMP JUMPDEST PUSH0 PUSH2 0x10EE PUSH2 0x15B2 JUMP JUMPDEST PUSH2 0x10F8 DUP5 DUP5 PUSH2 0x108A JUMP JUMPDEST SWAP2 POP PUSH1 0x5 DUP3 PUSH1 0xFF AND GT ISZERO PUSH2 0x1124 JUMPI PUSH1 0x40 MLOAD PUSH4 0x5B030B59 PUSH1 0xE1 SHL DUP2 MSTORE PUSH1 0xFF DUP4 AND PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x24 ADD PUSH2 0x4F8 JUMP JUMPDEST PUSH0 JUMPDEST PUSH2 0x112F DUP4 PUSH2 0x13E0 JUMP JUMPDEST DUP2 LT ISZERO PUSH2 0x118E JUMPI PUSH2 0x1160 PUSH2 0x1144 PUSH1 0x14 DUP4 PUSH2 0x1A12 JUMP JUMPDEST PUSH2 0x114F PUSH1 0x1 DUP8 PUSH2 0x18F0 JUMP JUMPDEST PUSH2 0x1159 SWAP2 SWAP1 PUSH2 0x18F0 JUMP JUMPDEST DUP7 SWAP1 PUSH2 0x1026 JUMP JUMPDEST DUP3 MLOAD DUP3 PUSH1 0xB DUP2 LT PUSH2 0x1173 JUMPI PUSH2 0x1173 PUSH2 0x1A29 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP1 SWAP3 AND PUSH1 0x20 SWAP3 SWAP1 SWAP3 MUL ADD MSTORE PUSH1 0x1 ADD PUSH2 0x1126 JUMP JUMPDEST POP PUSH1 0x14 PUSH2 0x119A DUP4 PUSH2 0x13E0 JUMP JUMPDEST PUSH2 0x11A4 SWAP2 SWAP1 PUSH2 0x1A12 JUMP JUMPDEST PUSH2 0x11AF SWAP1 PUSH1 0x1 PUSH2 0x18F0 JUMP JUMPDEST PUSH2 0x11B9 SWAP1 DUP5 PUSH2 0x18F0 JUMP JUMPDEST SWAP3 POP PUSH0 JUMPDEST DUP3 PUSH1 0xFF AND DUP2 LT ISZERO PUSH2 0x135C JUMPI PUSH2 0x11F2 PUSH2 0x11D6 PUSH1 0x1 DUP4 PUSH2 0x1A12 JUMP JUMPDEST PUSH2 0x11E1 SWAP1 PUSH1 0x5 PUSH2 0x1A12 JUMP JUMPDEST PUSH2 0x11EB SWAP1 DUP7 PUSH2 0x18F0 JUMP JUMPDEST DUP7 SWAP1 PUSH2 0x108A JUMP JUMPDEST PUSH1 0xFF AND DUP3 PUSH1 0x20 ADD MLOAD DUP3 PUSH1 0x5 DUP2 LT PUSH2 0x120B JUMPI PUSH2 0x120B PUSH2 0x1A29 JUMP JUMPDEST PUSH1 0x20 MUL ADD MLOAD MSTORE PUSH2 0x123F PUSH2 0x121F PUSH1 0x1 DUP4 PUSH2 0x1A12 JUMP JUMPDEST PUSH2 0x122A SWAP1 PUSH1 0x5 PUSH2 0x1A12 JUMP JUMPDEST PUSH2 0x1234 SWAP1 DUP7 PUSH2 0x18F0 JUMP JUMPDEST PUSH2 0x11EB SWAP1 PUSH1 0x1 PUSH2 0x18F0 JUMP JUMPDEST PUSH1 0xFF AND DUP3 PUSH1 0x20 ADD MLOAD DUP3 PUSH1 0x5 DUP2 LT PUSH2 0x1258 JUMPI PUSH2 0x1258 PUSH2 0x1A29 JUMP JUMPDEST PUSH1 0x20 MUL ADD MLOAD PUSH1 0x1 PUSH1 0x20 MUL ADD MSTORE PUSH2 0x1292 PUSH2 0x1272 PUSH1 0x1 DUP4 PUSH2 0x1A12 JUMP JUMPDEST PUSH2 0x127D SWAP1 PUSH1 0x5 PUSH2 0x1A12 JUMP JUMPDEST PUSH2 0x1287 SWAP1 DUP7 PUSH2 0x18F0 JUMP JUMPDEST PUSH2 0x11EB SWAP1 PUSH1 0x2 PUSH2 0x18F0 JUMP JUMPDEST PUSH1 0xFF AND DUP3 PUSH1 0x20 ADD MLOAD DUP3 PUSH1 0x5 DUP2 LT PUSH2 0x12AB JUMPI PUSH2 0x12AB PUSH2 0x1A29 JUMP JUMPDEST PUSH1 0x20 MUL ADD MLOAD PUSH1 0x40 ADD MSTORE PUSH2 0x12E2 PUSH2 0x12C2 PUSH1 0x1 DUP4 PUSH2 0x1A12 JUMP JUMPDEST PUSH2 0x12CD SWAP1 PUSH1 0x5 PUSH2 0x1A12 JUMP JUMPDEST PUSH2 0x12D7 SWAP1 DUP7 PUSH2 0x18F0 JUMP JUMPDEST PUSH2 0x11EB SWAP1 PUSH1 0x3 PUSH2 0x18F0 JUMP JUMPDEST PUSH1 0xFF AND DUP3 PUSH1 0x20 ADD MLOAD DUP3 PUSH1 0x5 DUP2 LT PUSH2 0x12FB JUMPI PUSH2 0x12FB PUSH2 0x1A29 JUMP JUMPDEST PUSH1 0x20 MUL ADD MLOAD PUSH1 0x60 ADD MSTORE PUSH2 0x1332 PUSH2 0x1312 PUSH1 0x1 DUP4 PUSH2 0x1A12 JUMP JUMPDEST PUSH2 0x131D SWAP1 PUSH1 0x5 PUSH2 0x1A12 JUMP JUMPDEST PUSH2 0x1327 SWAP1 DUP7 PUSH2 0x18F0 JUMP JUMPDEST PUSH2 0x11EB SWAP1 PUSH1 0x4 PUSH2 0x18F0 JUMP JUMPDEST PUSH1 0xFF AND DUP3 PUSH1 0x20 ADD MLOAD DUP3 PUSH1 0x5 DUP2 LT PUSH2 0x134B JUMPI PUSH2 0x134B PUSH2 0x1A29 JUMP JUMPDEST PUSH1 0x20 MUL ADD MLOAD PUSH1 0x80 ADD MSTORE PUSH1 0x1 ADD PUSH2 0x11BD JUMP JUMPDEST POP PUSH2 0x136B PUSH1 0x1 PUSH1 0xFF DUP5 AND PUSH2 0x1A12 JUMP JUMPDEST PUSH2 0x1376 SWAP1 PUSH1 0x5 PUSH2 0x1A12 JUMP JUMPDEST PUSH2 0x1380 SWAP1 DUP5 PUSH2 0x18F0 JUMP JUMPDEST SWAP3 POP PUSH0 JUMPDEST DUP3 PUSH1 0xFF AND DUP2 LT ISZERO PUSH2 0x13D8 JUMPI PUSH2 0x13A7 PUSH2 0x139D PUSH1 0x14 DUP4 PUSH2 0x1A12 JUMP JUMPDEST PUSH2 0x1159 SWAP1 DUP7 PUSH2 0x18F0 JUMP JUMPDEST DUP3 PUSH1 0x40 ADD MLOAD DUP3 PUSH1 0x5 DUP2 LT PUSH2 0x13BD JUMPI PUSH2 0x13BD PUSH2 0x1A29 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP1 SWAP3 AND PUSH1 0x20 SWAP3 SWAP1 SWAP3 MUL ADD MSTORE PUSH1 0x1 ADD PUSH2 0x1384 JUMP JUMPDEST POP SWAP3 POP SWAP3 SWAP1 POP JUMP JUMPDEST PUSH0 PUSH2 0x13EC DUP3 PUSH1 0x2 PUSH2 0x1AA1 JUMP JUMPDEST PUSH2 0x13F7 SWAP1 PUSH1 0x1 PUSH2 0x1B22 JUMP JUMPDEST PUSH1 0xFF AND SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH0 PUSH2 0x140F PUSH1 0x14 PUSH1 0xFF DUP5 AND PUSH2 0x1A12 JUMP JUMPDEST PUSH1 0x1 PUSH2 0x141C DUP5 PUSH1 0x5 PUSH2 0x1AA1 JUMP JUMPDEST PUSH1 0xFF AND PUSH2 0x1429 SWAP2 SWAP1 PUSH2 0x1A12 JUMP JUMPDEST PUSH1 0x14 PUSH2 0x1434 DUP6 PUSH2 0x13E0 JUMP JUMPDEST PUSH2 0x143E SWAP2 SWAP1 PUSH2 0x1A12 JUMP JUMPDEST PUSH2 0x1449 SWAP1 PUSH1 0x1 PUSH2 0x18F0 JUMP JUMPDEST PUSH2 0x1453 SWAP2 SWAP1 PUSH2 0x18F0 JUMP JUMPDEST PUSH2 0xFED SWAP2 SWAP1 PUSH2 0x18F0 JUMP JUMPDEST PUSH0 DUP2 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 GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x149A JUMPI RETURNDATASIZE PUSH0 PUSH0 RETURNDATACOPY RETURNDATASIZE PUSH0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP3 ADD DUP1 PUSH1 0x40 MSTORE POP DUP2 ADD SWAP1 PUSH2 0x14BE SWAP2 SWAP1 PUSH2 0x1B3B JUMP JUMPDEST PUSH2 0x14C9 SWAP1 PUSH1 0x12 PUSH2 0x1B5B JUMP JUMPDEST PUSH2 0xFED SWAP1 PUSH1 0xA PUSH2 0x1C4F JUMP JUMPDEST PUSH0 PUSH0 PUSH0 PUSH2 0x14E1 DUP7 DUP7 PUSH2 0x1585 JUMP JUMPDEST SWAP2 POP SWAP2 POP DUP2 PUSH0 SUB PUSH2 0x1505 JUMPI DUP4 DUP2 DUP2 PUSH2 0x14FB JUMPI PUSH2 0x14FB PUSH2 0x1ABD JUMP JUMPDEST DIV SWAP3 POP POP POP PUSH2 0x157E JUMP JUMPDEST DUP2 DUP5 GT PUSH2 0x151C JUMPI PUSH2 0x151C PUSH1 0x3 DUP6 ISZERO MUL PUSH1 0x11 XOR PUSH2 0x15A1 JUMP JUMPDEST PUSH0 DUP5 DUP7 DUP9 MULMOD PUSH0 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 DUP6 DUP5 GT SWAP1 SWAP7 SUB SWAP6 SWAP1 SWAP6 MUL SWAP2 SWAP1 SWAP4 SUB SWAP4 SWAP1 SWAP4 DIV SWAP3 SWAP1 SWAP3 OR MUL SWAP2 POP POP JUMPDEST SWAP4 SWAP3 POP POP POP JUMP JUMPDEST PUSH0 DUP1 PUSH0 NOT DUP4 DUP6 MULMOD SWAP4 SWAP1 SWAP3 MUL DUP1 DUP5 LT SWAP4 DUP2 SWAP1 SUB SWAP4 SWAP1 SWAP4 SUB SWAP4 SWAP2 POP POP JUMP JUMPDEST PUSH4 0x4E487B71 PUSH0 MSTORE DUP1 PUSH1 0x20 MSTORE PUSH1 0x24 PUSH1 0x1C REVERT JUMPDEST PUSH1 0x40 MLOAD DUP1 PUSH1 0x60 ADD PUSH1 0x40 MSTORE DUP1 PUSH2 0x15C5 PUSH2 0x15E4 JUMP JUMPDEST DUP2 MSTORE PUSH1 0x20 ADD PUSH2 0x15D2 PUSH2 0x1603 JUMP JUMPDEST DUP2 MSTORE PUSH1 0x20 ADD PUSH2 0x15DF PUSH2 0x1630 JUMP JUMPDEST SWAP1 MSTORE SWAP1 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 PUSH2 0x160 ADD PUSH1 0x40 MSTORE DUP1 PUSH1 0xB SWAP1 PUSH1 0x20 DUP3 MUL DUP1 CALLDATASIZE DUP4 CALLDATACOPY POP SWAP2 SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 PUSH1 0xA0 ADD PUSH1 0x40 MSTORE DUP1 PUSH1 0x5 SWAP1 JUMPDEST PUSH2 0x161A PUSH2 0x1630 JUMP JUMPDEST DUP2 MSTORE PUSH1 0x20 ADD SWAP1 PUSH1 0x1 SWAP1 SUB SWAP1 DUP2 PUSH2 0x1612 JUMPI SWAP1 POP POP SWAP1 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 PUSH1 0xA0 ADD PUSH1 0x40 MSTORE DUP1 PUSH1 0x5 SWAP1 PUSH1 0x20 DUP3 MUL DUP1 CALLDATASIZE DUP4 CALLDATACOPY POP SWAP2 SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH0 PUSH1 0x60 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x165E JUMPI PUSH0 PUSH0 REVERT JUMPDEST POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 AND DUP2 EQ PUSH2 0x2BA JUMPI PUSH0 PUSH0 REVERT JUMPDEST PUSH0 PUSH0 PUSH0 PUSH0 PUSH0 PUSH1 0xA0 DUP7 DUP9 SUB SLT ISZERO PUSH2 0x168C JUMPI PUSH0 PUSH0 REVERT JUMPDEST DUP6 CALLDATALOAD PUSH8 0xFFFFFFFFFFFFFFFF DUP2 GT ISZERO PUSH2 0x16A2 JUMPI PUSH0 PUSH0 REVERT JUMPDEST PUSH2 0x16AE DUP9 DUP3 DUP10 ADD PUSH2 0x164E JUMP JUMPDEST SWAP6 POP POP PUSH1 0x20 DUP7 ADD CALLDATALOAD PUSH2 0x16BF DUP2 PUSH2 0x1664 JUMP JUMPDEST SWAP4 POP PUSH1 0x40 DUP7 ADD CALLDATALOAD PUSH2 0x16CF DUP2 PUSH2 0x1664 JUMP JUMPDEST SWAP5 SWAP8 SWAP4 SWAP7 POP SWAP4 SWAP5 PUSH1 0x60 DUP2 ADD CALLDATALOAD SWAP5 POP PUSH1 0x80 ADD CALLDATALOAD SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x16F7 JUMPI PUSH0 PUSH0 REVERT JUMPDEST DUP2 CALLDATALOAD PUSH8 0xFFFFFFFFFFFFFFFF DUP2 GT ISZERO PUSH2 0x170D JUMPI PUSH0 PUSH0 REVERT JUMPDEST PUSH2 0x1719 DUP5 DUP3 DUP6 ADD PUSH2 0x164E JUMP JUMPDEST SWAP5 SWAP4 POP POP POP POP JUMP JUMPDEST PUSH4 0x4E487B71 PUSH1 0xE0 SHL PUSH0 MSTORE PUSH1 0x21 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH0 REVERT JUMPDEST PUSH0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x1745 JUMPI PUSH0 PUSH0 REVERT JUMPDEST DUP2 CALLDATALOAD PUSH1 0x3 DUP2 LT PUSH2 0x157E JUMPI PUSH0 PUSH0 REVERT JUMPDEST PUSH0 PUSH0 DUP4 CALLDATALOAD PUSH1 0x1E NOT DUP5 CALLDATASIZE SUB ADD DUP2 SLT PUSH2 0x1768 JUMPI PUSH0 PUSH0 REVERT JUMPDEST DUP4 ADD DUP1 CALLDATALOAD SWAP2 POP PUSH8 0xFFFFFFFFFFFFFFFF DUP3 GT ISZERO PUSH2 0x1782 JUMPI PUSH0 PUSH0 REVERT JUMPDEST PUSH1 0x20 ADD SWAP2 POP CALLDATASIZE DUP2 SWAP1 SUB DUP3 SGT ISZERO PUSH2 0x1796 JUMPI PUSH0 PUSH0 REVERT JUMPDEST SWAP3 POP SWAP3 SWAP1 POP JUMP JUMPDEST PUSH0 PUSH1 0x40 DUP3 DUP5 SUB SLT DUP1 ISZERO PUSH2 0x17AE JUMPI PUSH0 PUSH0 REVERT JUMPDEST POP PUSH1 0x40 DUP1 MLOAD SWAP1 DUP2 ADD PUSH8 0xFFFFFFFFFFFFFFFF DUP2 GT DUP3 DUP3 LT OR ISZERO PUSH2 0x17DE JUMPI PUSH4 0x4E487B71 PUSH1 0xE0 SHL PUSH0 MSTORE PUSH1 0x41 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH0 REVERT JUMPDEST PUSH1 0x40 MSTORE DUP3 CALLDATALOAD PUSH3 0xFFFFFF DUP2 AND DUP2 EQ PUSH2 0x17F3 JUMPI PUSH0 PUSH0 REVERT JUMPDEST DUP2 MSTORE PUSH1 0x20 DUP4 ADD CALLDATALOAD PUSH2 0x1803 DUP2 PUSH2 0x1664 JUMP JUMPDEST PUSH1 0x20 DUP3 ADD MSTORE SWAP4 SWAP3 POP POP POP JUMP JUMPDEST PUSH0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x181F JUMPI PUSH0 PUSH0 REVERT JUMPDEST DUP2 MLOAD DUP1 ISZERO ISZERO DUP2 EQ PUSH2 0x157E JUMPI PUSH0 PUSH0 REVERT JUMPDEST DUP1 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP1 DUP2 AND DUP4 MSTORE PUSH1 0x20 DUP1 DUP4 ADD MLOAD DUP3 AND SWAP1 DUP5 ADD MSTORE PUSH1 0x40 DUP1 DUP4 ADD MLOAD PUSH3 0xFFFFFF AND SWAP1 DUP5 ADD MSTORE PUSH1 0x60 DUP1 DUP4 ADD MLOAD SWAP2 DUP3 AND SWAP1 DUP5 ADD MSTORE POP PUSH1 0x80 DUP2 ADD MLOAD PUSH1 0x80 DUP4 ADD MSTORE PUSH1 0xA0 DUP2 ADD MLOAD PUSH1 0xA0 DUP4 ADD MSTORE PUSH1 0xC0 DUP2 ADD MLOAD PUSH1 0xC0 DUP4 ADD MSTORE PUSH1 0xE0 DUP2 ADD MLOAD PUSH2 0x189E PUSH1 0xE0 DUP5 ADD DUP3 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND SWAP1 MSTORE JUMP JUMPDEST POP POP POP JUMP JUMPDEST PUSH2 0x100 DUP2 ADD PUSH2 0xFED DUP3 DUP5 PUSH2 0x182E JUMP JUMPDEST PUSH0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x18C2 JUMPI PUSH0 PUSH0 REVERT JUMPDEST POP MLOAD SWAP2 SWAP1 POP JUMP JUMPDEST PUSH4 0x4E487B71 PUSH1 0xE0 SHL PUSH0 MSTORE PUSH1 0x11 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH0 REVERT JUMPDEST DUP2 DUP2 SUB DUP2 DUP2 GT ISZERO PUSH2 0xFED JUMPI PUSH2 0xFED PUSH2 0x18C9 JUMP JUMPDEST DUP1 DUP3 ADD DUP1 DUP3 GT ISZERO PUSH2 0xFED JUMPI PUSH2 0xFED PUSH2 0x18C9 JUMP JUMPDEST PUSH0 PUSH1 0x1 DUP3 ADD PUSH2 0x1914 JUMPI PUSH2 0x1914 PUSH2 0x18C9 JUMP JUMPDEST POP PUSH1 0x1 ADD SWAP1 JUMP JUMPDEST DUP1 PUSH0 JUMPDEST PUSH1 0xB DUP2 LT ISZERO PUSH2 0xD26 JUMPI DUP2 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP5 MSTORE PUSH1 0x20 SWAP4 DUP5 ADD SWAP4 SWAP1 SWAP2 ADD SWAP1 PUSH1 0x1 ADD PUSH2 0x191E JUMP JUMPDEST DUP1 PUSH0 JUMPDEST PUSH1 0x5 DUP2 LT ISZERO PUSH2 0xD26 JUMPI DUP2 MLOAD PUSH0 DUP6 DUP2 JUMPDEST PUSH1 0x5 DUP2 LT ISZERO PUSH2 0x1977 JUMPI DUP4 MLOAD DUP3 MSTORE PUSH1 0x20 SWAP4 DUP5 ADD SWAP4 SWAP1 SWAP2 ADD SWAP1 PUSH1 0x1 ADD PUSH2 0x1958 JUMP JUMPDEST POP POP POP PUSH1 0xA0 SWAP5 SWAP1 SWAP5 ADD SWAP4 POP PUSH1 0x20 SWAP2 SWAP1 SWAP2 ADD SWAP1 PUSH1 0x1 ADD PUSH2 0x1949 JUMP JUMPDEST DUP1 PUSH0 JUMPDEST PUSH1 0x5 DUP2 LT ISZERO PUSH2 0xD26 JUMPI DUP2 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP5 MSTORE PUSH1 0x20 SWAP4 DUP5 ADD SWAP4 SWAP1 SWAP2 ADD SWAP1 PUSH1 0x1 ADD PUSH2 0x1994 JUMP JUMPDEST PUSH2 0x580 DUP2 ADD PUSH2 0x19CB DUP3 DUP10 PUSH2 0x191B JUMP JUMPDEST PUSH2 0x19D9 PUSH2 0x160 DUP4 ADD DUP9 PUSH2 0x1946 JUMP JUMPDEST DUP6 PUSH2 0x480 DUP4 ADD MSTORE DUP5 PUSH2 0x4A0 DUP4 ADD MSTORE PUSH2 0x19F5 PUSH2 0x4C0 DUP4 ADD DUP6 PUSH2 0x1991 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP3 SWAP1 SWAP3 AND PUSH2 0x560 SWAP2 SWAP1 SWAP2 ADD MSTORE SWAP6 SWAP5 POP POP POP POP POP JUMP JUMPDEST DUP1 DUP3 MUL DUP2 ISZERO DUP3 DUP3 DIV DUP5 EQ OR PUSH2 0xFED JUMPI PUSH2 0xFED PUSH2 0x18C9 JUMP JUMPDEST PUSH4 0x4E487B71 PUSH1 0xE0 SHL PUSH0 MSTORE PUSH1 0x32 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH0 REVERT JUMPDEST DUP2 MLOAD PUSH2 0x520 DUP3 ADD SWAP1 DUP3 PUSH0 JUMPDEST PUSH1 0xB DUP2 LT ISZERO PUSH2 0x1A70 JUMPI DUP3 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP3 MSTORE PUSH1 0x20 SWAP3 DUP4 ADD SWAP3 SWAP1 SWAP2 ADD SWAP1 PUSH1 0x1 ADD PUSH2 0x1A48 JUMP JUMPDEST POP POP POP PUSH1 0x20 DUP4 ADD MLOAD PUSH2 0x1A86 PUSH2 0x160 DUP5 ADD DUP3 PUSH2 0x1946 JUMP JUMPDEST POP PUSH1 0x40 DUP4 ADD MLOAD PUSH2 0x1A9A PUSH2 0x480 DUP5 ADD DUP3 PUSH2 0x1991 JUMP JUMPDEST POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0xFF DUP2 DUP2 AND DUP4 DUP3 AND MUL SWAP1 DUP2 AND SWAP1 DUP2 DUP2 EQ PUSH2 0x1A9A JUMPI PUSH2 0x1A9A PUSH2 0x18C9 JUMP JUMPDEST PUSH4 0x4E487B71 PUSH1 0xE0 SHL PUSH0 MSTORE PUSH1 0x12 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH0 REVERT JUMPDEST PUSH0 DUP3 PUSH2 0x1AEB JUMPI PUSH4 0x4E487B71 PUSH1 0xE0 SHL PUSH0 MSTORE PUSH1 0x12 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH0 REVERT JUMPDEST POP DIV SWAP1 JUMP JUMPDEST PUSH2 0x540 DUP2 ADD PUSH2 0x1AFF DUP3 DUP8 PUSH2 0x191B JUMP JUMPDEST PUSH2 0x1B0D PUSH2 0x160 DUP4 ADD DUP7 PUSH2 0x1946 JUMP JUMPDEST DUP4 PUSH2 0x480 DUP4 ADD MSTORE PUSH2 0x122 PUSH2 0x4A0 DUP4 ADD DUP5 PUSH2 0x1991 JUMP JUMPDEST PUSH1 0xFF DUP2 DUP2 AND DUP4 DUP3 AND ADD SWAP1 DUP2 GT ISZERO PUSH2 0xFED JUMPI PUSH2 0xFED PUSH2 0x18C9 JUMP JUMPDEST PUSH0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x1B4B JUMPI PUSH0 PUSH0 REVERT JUMPDEST DUP2 MLOAD PUSH1 0xFF DUP2 AND DUP2 EQ PUSH2 0x157E JUMPI PUSH0 PUSH0 REVERT JUMPDEST PUSH1 0xFF DUP3 DUP2 AND DUP3 DUP3 AND SUB SWAP1 DUP2 GT ISZERO PUSH2 0xFED JUMPI PUSH2 0xFED PUSH2 0x18C9 JUMP JUMPDEST PUSH1 0x1 DUP2 JUMPDEST PUSH1 0x1 DUP5 GT ISZERO PUSH2 0xECD JUMPI DUP1 DUP6 DIV DUP2 GT ISZERO PUSH2 0x1B93 JUMPI PUSH2 0x1B93 PUSH2 0x18C9 JUMP JUMPDEST PUSH1 0x1 DUP5 AND ISZERO PUSH2 0x1BA1 JUMPI SWAP1 DUP2 MUL SWAP1 JUMPDEST PUSH1 0x1 SWAP4 SWAP1 SWAP4 SHR SWAP3 DUP1 MUL PUSH2 0x1B78 JUMP JUMPDEST PUSH0 DUP3 PUSH2 0x1BBD JUMPI POP PUSH1 0x1 PUSH2 0xFED JUMP JUMPDEST DUP2 PUSH2 0x1BC9 JUMPI POP PUSH0 PUSH2 0xFED JUMP JUMPDEST DUP2 PUSH1 0x1 DUP2 EQ PUSH2 0x1BDF JUMPI PUSH1 0x2 DUP2 EQ PUSH2 0x1BE9 JUMPI PUSH2 0x1C05 JUMP JUMPDEST PUSH1 0x1 SWAP2 POP POP PUSH2 0xFED JUMP JUMPDEST PUSH1 0xFF DUP5 GT ISZERO PUSH2 0x1BFA JUMPI PUSH2 0x1BFA PUSH2 0x18C9 JUMP JUMPDEST POP POP PUSH1 0x1 DUP3 SHL PUSH2 0xFED JUMP JUMPDEST POP PUSH1 0x20 DUP4 LT PUSH2 0x133 DUP4 LT AND PUSH1 0x4E DUP5 LT PUSH1 0xB DUP5 LT AND OR ISZERO PUSH2 0x1C28 JUMPI POP DUP2 DUP2 EXP PUSH2 0xFED JUMP JUMPDEST PUSH2 0x1C34 PUSH0 NOT DUP5 DUP5 PUSH2 0x1B74 JUMP JUMPDEST DUP1 PUSH0 NOT DIV DUP3 GT ISZERO PUSH2 0x1C47 JUMPI PUSH2 0x1C47 PUSH2 0x18C9 JUMP JUMPDEST MUL SWAP4 SWAP3 POP POP POP JUMP JUMPDEST PUSH0 PUSH2 0xFEA PUSH1 0xFF DUP5 AND DUP4 PUSH2 0x1BAF JUMP INVALID LOG2 PUSH5 0x6970667358 0x22 SLT KECCAK256 DUP8 DUP8 0xAC PUSH4 0x3566049C CODECOPY 0xB6 COINBASE BASEFEE COINBASE PUSH20 0xBA28749957DF6425BB8A9BBDF7459286E4396473 PUSH16 0x6C634300081E00330000000000000000 ","sourceMap":"522:9839:5:-:0;;;;;;;;;;;;;;;-1:-1:-1;;;522:9839:5;;;;;;;;;;;;;;;;;"},"deployedBytecode":{"functionDebugData":{"@_calcMaxAmount_1403":{"entryPoint":3372,"id":1403,"parameterSlots":5,"returnSlots":1},"@_calcMinAmount_1366":{"entryPoint":4083,"id":1366,"parameterSlots":5,"returnSlots":1},"@_exactInputCurve_1724":{"entryPoint":2312,"id":1724,"parameterSlots":5,"returnSlots":1},"@_exactInputUniswap_1515":{"entryPoint":1734,"id":1515,"parameterSlots":5,"returnSlots":1},"@_exactOutputCurve_1878":{"entryPoint":1294,"id":1878,"parameterSlots":5,"returnSlots":1},"@_exactOutputUniswap_1623":{"entryPoint":726,"id":1623,"parameterSlots":5,"returnSlots":1},"@_exchangeCurve_1771":{"entryPoint":3797,"id":1771,"parameterSlots":3,"returnSlots":2},"@_routeLen_975":{"entryPoint":5088,"id":975,"parameterSlots":1,"returnSlots":1},"@_toWadFactor_1233":{"entryPoint":5213,"id":1233,"parameterSlots":1,"returnSlots":1},"@exactInput_1283":{"entryPoint":299,"id":1283,"parameterSlots":5,"returnSlots":1},"@exactOutput_1333":{"entryPoint":179,"id":1333,"parameterSlots":5,"returnSlots":1},"@findRoute_1077":{"entryPoint":3471,"id":1077,"parameterSlots":3,"returnSlots":2},"@min_11411":{"entryPoint":4063,"id":11411,"parameterSlots":2,"returnSlots":1},"@mul512_11124":{"entryPoint":5509,"id":11124,"parameterSlots":2,"returnSlots":2},"@mulDiv_11611":{"entryPoint":5332,"id":11611,"parameterSlots":3,"returnSlots":1},"@panic_10907":{"entryPoint":5537,"id":10907,"parameterSlots":1,"returnSlots":0},"@readRoute_932":{"entryPoint":4325,"id":932,"parameterSlots":2,"returnSlots":2},"@routeSize_960":{"entryPoint":5120,"id":960,"parameterSlots":1,"returnSlots":1},"@ternary_11373":{"entryPoint":null,"id":11373,"parameterSlots":3,"returnSlots":1},"@toAddress_24978":{"entryPoint":4134,"id":24978,"parameterSlots":2,"returnSlots":1},"@toUint8_25004":{"entryPoint":4234,"id":25004,"parameterSlots":2,"returnSlots":1},"@toUint_14490":{"entryPoint":null,"id":14490,"parameterSlots":1,"returnSlots":1},"@validate_1213":{"entryPoint":400,"id":1213,"parameterSlots":1,"returnSlots":0},"@validate_716":{"entryPoint":2798,"id":716,"parameterSlots":1,"returnSlots":0},"abi_decode_struct_SwapConfig_calldata":{"entryPoint":5710,"id":null,"parameterSlots":2,"returnSlots":1},"abi_decode_tuple_t_bool_fromMemory":{"entryPoint":6159,"id":null,"parameterSlots":2,"returnSlots":1},"abi_decode_tuple_t_enum$_SwapProtocol_$1105":{"entryPoint":5941,"id":null,"parameterSlots":2,"returnSlots":1},"abi_decode_tuple_t_struct$_SwapConfig_$1113_calldata_ptr":{"entryPoint":5863,"id":null,"parameterSlots":2,"returnSlots":1},"abi_decode_tuple_t_struct$_SwapConfig_$1113_calldata_ptrt_addresst_addresst_uint256t_uint256":{"entryPoint":5752,"id":null,"parameterSlots":2,"returnSlots":5},"abi_decode_tuple_t_struct$_UniswapCustomParams_$1119_memory_ptr":{"entryPoint":6045,"id":null,"parameterSlots":2,"returnSlots":1},"abi_decode_tuple_t_uint256_fromMemory":{"entryPoint":6322,"id":null,"parameterSlots":2,"returnSlots":1},"abi_decode_tuple_t_uint8_fromMemory":{"entryPoint":6971,"id":null,"parameterSlots":2,"returnSlots":1},"abi_encode_address":{"entryPoint":null,"id":null,"parameterSlots":2,"returnSlots":0},"abi_encode_array_address":{"entryPoint":6427,"id":null,"parameterSlots":2,"returnSlots":0},"abi_encode_array_address_memory_ptr":{"entryPoint":6545,"id":null,"parameterSlots":2,"returnSlots":0},"abi_encode_array_array_uint256":{"entryPoint":6470,"id":null,"parameterSlots":2,"returnSlots":0},"abi_encode_struct_ExactOutputSingleParams":{"entryPoint":6190,"id":null,"parameterSlots":2,"returnSlots":0},"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_rational_0_by_1__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_$11_memory_ptr_t_array$_t_array$_t_uint256_$5_memory_ptr_$5_memory_ptr_t_uint256_t_array$_t_address_$5_memory_ptr__to_t_array$_t_address_$11_memory_ptr_t_array$_t_array$_t_uint256_$5_memory_ptr_$5_memory_ptr_t_uint256_t_array$_t_address_$5_memory_ptr__fromStack_reversed":{"entryPoint":6896,"id":null,"parameterSlots":5,"returnSlots":1},"abi_encode_tuple_t_array$_t_address_$11_memory_ptr_t_array$_t_array$_t_uint256_$5_memory_ptr_$5_memory_ptr_t_uint256_t_rational_0_by_1_t_array$_t_address_$5_memory_ptr_t_address__to_t_array$_t_address_$11_memory_ptr_t_array$_t_array$_t_uint256_$5_memory_ptr_$5_memory_ptr_t_uint256_t_uint256_t_array$_t_address_$5_memory_ptr_t_address__fromStack_reversed":{"entryPoint":null,"id":null,"parameterSlots":7,"returnSlots":1},"abi_encode_tuple_t_array$_t_address_$11_memory_ptr_t_array$_t_array$_t_uint256_$5_memory_ptr_$5_memory_ptr_t_uint256_t_uint256_t_array$_t_address_$5_memory_ptr_t_address__to_t_array$_t_address_$11_memory_ptr_t_array$_t_array$_t_uint256_$5_memory_ptr_$5_memory_ptr_t_uint256_t_uint256_t_array$_t_address_$5_memory_ptr_t_address__fromStack_reversed":{"entryPoint":6588,"id":null,"parameterSlots":7,"returnSlots":1},"abi_encode_tuple_t_stringliteral_9f688071e1df0f70b63e3651005878331be1fe9591d6cfb3187cb52a13439e5d__to_t_string_memory_ptr__fromStack_reversed":{"entryPoint":null,"id":null,"parameterSlots":1,"returnSlots":1},"abi_encode_tuple_t_stringliteral_ce6d7be00009dd45cc670fb6c2ceee25786f142bcb64e7f1ee73012b26bb6ca1__to_t_string_memory_ptr__fromStack_reversed":{"entryPoint":null,"id":null,"parameterSlots":1,"returnSlots":1},"abi_encode_tuple_t_struct$_CurveRoute_$536_memory_ptr__to_t_struct$_CurveRoute_$536_memory_ptr__fromStack_reversed":{"entryPoint":6717,"id":null,"parameterSlots":2,"returnSlots":1},"abi_encode_tuple_t_struct$_ExactInputSingleParams_$14803_memory_ptr__to_t_struct$_ExactInputSingleParams_$14803_memory_ptr__fromStack_reversed":{"entryPoint":null,"id":null,"parameterSlots":2,"returnSlots":1},"abi_encode_tuple_t_struct$_ExactOutputSingleParams_$14849_memory_ptr__to_t_struct$_ExactOutputSingleParams_$14849_memory_ptr__fromStack_reversed":{"entryPoint":6307,"id":null,"parameterSlots":2,"returnSlots":1},"abi_encode_tuple_t_uint256__to_t_uint256__fromStack_library_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},"access_calldata_tail_t_bytes_calldata_ptr":{"entryPoint":5971,"id":null,"parameterSlots":2,"returnSlots":2},"checked_add_t_uint256":{"entryPoint":6384,"id":null,"parameterSlots":2,"returnSlots":1},"checked_add_t_uint8":{"entryPoint":6946,"id":null,"parameterSlots":2,"returnSlots":1},"checked_div_t_uint256":{"entryPoint":6865,"id":null,"parameterSlots":2,"returnSlots":1},"checked_exp_helper":{"entryPoint":7028,"id":null,"parameterSlots":3,"returnSlots":2},"checked_exp_t_uint256_t_uint8":{"entryPoint":7247,"id":null,"parameterSlots":2,"returnSlots":1},"checked_exp_unsigned":{"entryPoint":7087,"id":null,"parameterSlots":2,"returnSlots":1},"checked_mul_t_uint256":{"entryPoint":6674,"id":null,"parameterSlots":2,"returnSlots":1},"checked_mul_t_uint8":{"entryPoint":6817,"id":null,"parameterSlots":2,"returnSlots":1},"checked_sub_t_uint256":{"entryPoint":6365,"id":null,"parameterSlots":2,"returnSlots":1},"checked_sub_t_uint8":{"entryPoint":7003,"id":null,"parameterSlots":2,"returnSlots":1},"increment_t_uint256":{"entryPoint":6403,"id":null,"parameterSlots":1,"returnSlots":1},"panic_error_0x11":{"entryPoint":6345,"id":null,"parameterSlots":0,"returnSlots":0},"panic_error_0x12":{"entryPoint":6845,"id":null,"parameterSlots":0,"returnSlots":0},"panic_error_0x21":{"entryPoint":5921,"id":null,"parameterSlots":0,"returnSlots":0},"panic_error_0x32":{"entryPoint":6697,"id":null,"parameterSlots":0,"returnSlots":0},"validator_revert_address":{"entryPoint":5732,"id":null,"parameterSlots":1,"returnSlots":0}},"generatedSources":[{"ast":{"nativeSrc":"0:15358:87","nodeType":"YulBlock","src":"0:15358:87","statements":[{"nativeSrc":"6:3:87","nodeType":"YulBlock","src":"6:3:87","statements":[]},{"body":{"nativeSrc":"87:85:87","nodeType":"YulBlock","src":"87:85:87","statements":[{"body":{"nativeSrc":"126:16:87","nodeType":"YulBlock","src":"126:16:87","statements":[{"expression":{"arguments":[{"kind":"number","nativeSrc":"135:1:87","nodeType":"YulLiteral","src":"135:1:87","type":"","value":"0"},{"kind":"number","nativeSrc":"138:1:87","nodeType":"YulLiteral","src":"138:1:87","type":"","value":"0"}],"functionName":{"name":"revert","nativeSrc":"128:6:87","nodeType":"YulIdentifier","src":"128:6:87"},"nativeSrc":"128:12:87","nodeType":"YulFunctionCall","src":"128:12:87"},"nativeSrc":"128:12:87","nodeType":"YulExpressionStatement","src":"128:12:87"}]},"condition":{"arguments":[{"arguments":[{"name":"end","nativeSrc":"108:3:87","nodeType":"YulIdentifier","src":"108:3:87"},{"name":"offset","nativeSrc":"113:6:87","nodeType":"YulIdentifier","src":"113:6:87"}],"functionName":{"name":"sub","nativeSrc":"104:3:87","nodeType":"YulIdentifier","src":"104:3:87"},"nativeSrc":"104:16:87","nodeType":"YulFunctionCall","src":"104:16:87"},{"kind":"number","nativeSrc":"122:2:87","nodeType":"YulLiteral","src":"122:2:87","type":"","value":"96"}],"functionName":{"name":"slt","nativeSrc":"100:3:87","nodeType":"YulIdentifier","src":"100:3:87"},"nativeSrc":"100:25:87","nodeType":"YulFunctionCall","src":"100:25:87"},"nativeSrc":"97:45:87","nodeType":"YulIf","src":"97:45:87"},{"nativeSrc":"151:15:87","nodeType":"YulAssignment","src":"151:15:87","value":{"name":"offset","nativeSrc":"160:6:87","nodeType":"YulIdentifier","src":"160:6:87"},"variableNames":[{"name":"value","nativeSrc":"151:5:87","nodeType":"YulIdentifier","src":"151:5:87"}]}]},"name":"abi_decode_struct_SwapConfig_calldata","nativeSrc":"14:158:87","nodeType":"YulFunctionDefinition","parameters":[{"name":"offset","nativeSrc":"61:6:87","nodeType":"YulTypedName","src":"61:6:87","type":""},{"name":"end","nativeSrc":"69:3:87","nodeType":"YulTypedName","src":"69:3:87","type":""}],"returnVariables":[{"name":"value","nativeSrc":"77:5:87","nodeType":"YulTypedName","src":"77:5:87","type":""}],"src":"14:158:87"},{"body":{"nativeSrc":"222:86:87","nodeType":"YulBlock","src":"222:86:87","statements":[{"body":{"nativeSrc":"286:16:87","nodeType":"YulBlock","src":"286:16:87","statements":[{"expression":{"arguments":[{"kind":"number","nativeSrc":"295:1:87","nodeType":"YulLiteral","src":"295:1:87","type":"","value":"0"},{"kind":"number","nativeSrc":"298:1:87","nodeType":"YulLiteral","src":"298:1:87","type":"","value":"0"}],"functionName":{"name":"revert","nativeSrc":"288:6:87","nodeType":"YulIdentifier","src":"288:6:87"},"nativeSrc":"288:12:87","nodeType":"YulFunctionCall","src":"288:12:87"},"nativeSrc":"288:12:87","nodeType":"YulExpressionStatement","src":"288:12:87"}]},"condition":{"arguments":[{"arguments":[{"name":"value","nativeSrc":"245:5:87","nodeType":"YulIdentifier","src":"245:5:87"},{"arguments":[{"name":"value","nativeSrc":"256:5:87","nodeType":"YulIdentifier","src":"256:5:87"},{"arguments":[{"arguments":[{"kind":"number","nativeSrc":"271:3:87","nodeType":"YulLiteral","src":"271:3:87","type":"","value":"160"},{"kind":"number","nativeSrc":"276:1:87","nodeType":"YulLiteral","src":"276:1:87","type":"","value":"1"}],"functionName":{"name":"shl","nativeSrc":"267:3:87","nodeType":"YulIdentifier","src":"267:3:87"},"nativeSrc":"267:11:87","nodeType":"YulFunctionCall","src":"267:11:87"},{"kind":"number","nativeSrc":"280:1:87","nodeType":"YulLiteral","src":"280:1:87","type":"","value":"1"}],"functionName":{"name":"sub","nativeSrc":"263:3:87","nodeType":"YulIdentifier","src":"263:3:87"},"nativeSrc":"263:19:87","nodeType":"YulFunctionCall","src":"263:19:87"}],"functionName":{"name":"and","nativeSrc":"252:3:87","nodeType":"YulIdentifier","src":"252:3:87"},"nativeSrc":"252:31:87","nodeType":"YulFunctionCall","src":"252:31:87"}],"functionName":{"name":"eq","nativeSrc":"242:2:87","nodeType":"YulIdentifier","src":"242:2:87"},"nativeSrc":"242:42:87","nodeType":"YulFunctionCall","src":"242:42:87"}],"functionName":{"name":"iszero","nativeSrc":"235:6:87","nodeType":"YulIdentifier","src":"235:6:87"},"nativeSrc":"235:50:87","nodeType":"YulFunctionCall","src":"235:50:87"},"nativeSrc":"232:70:87","nodeType":"YulIf","src":"232:70:87"}]},"name":"validator_revert_address","nativeSrc":"177:131:87","nodeType":"YulFunctionDefinition","parameters":[{"name":"value","nativeSrc":"211:5:87","nodeType":"YulTypedName","src":"211:5:87","type":""}],"src":"177:131:87"},{"body":{"nativeSrc":"481:712:87","nodeType":"YulBlock","src":"481:712:87","statements":[{"body":{"nativeSrc":"528:16:87","nodeType":"YulBlock","src":"528:16:87","statements":[{"expression":{"arguments":[{"kind":"number","nativeSrc":"537:1:87","nodeType":"YulLiteral","src":"537:1:87","type":"","value":"0"},{"kind":"number","nativeSrc":"540:1:87","nodeType":"YulLiteral","src":"540:1:87","type":"","value":"0"}],"functionName":{"name":"revert","nativeSrc":"530:6:87","nodeType":"YulIdentifier","src":"530:6:87"},"nativeSrc":"530:12:87","nodeType":"YulFunctionCall","src":"530:12:87"},"nativeSrc":"530:12:87","nodeType":"YulExpressionStatement","src":"530:12:87"}]},"condition":{"arguments":[{"arguments":[{"name":"dataEnd","nativeSrc":"502:7:87","nodeType":"YulIdentifier","src":"502:7:87"},{"name":"headStart","nativeSrc":"511:9:87","nodeType":"YulIdentifier","src":"511:9:87"}],"functionName":{"name":"sub","nativeSrc":"498:3:87","nodeType":"YulIdentifier","src":"498:3:87"},"nativeSrc":"498:23:87","nodeType":"YulFunctionCall","src":"498:23:87"},{"kind":"number","nativeSrc":"523:3:87","nodeType":"YulLiteral","src":"523:3:87","type":"","value":"160"}],"functionName":{"name":"slt","nativeSrc":"494:3:87","nodeType":"YulIdentifier","src":"494:3:87"},"nativeSrc":"494:33:87","nodeType":"YulFunctionCall","src":"494:33:87"},"nativeSrc":"491:53:87","nodeType":"YulIf","src":"491:53:87"},{"nativeSrc":"553:37:87","nodeType":"YulVariableDeclaration","src":"553:37:87","value":{"arguments":[{"name":"headStart","nativeSrc":"580:9:87","nodeType":"YulIdentifier","src":"580:9:87"}],"functionName":{"name":"calldataload","nativeSrc":"567:12:87","nodeType":"YulIdentifier","src":"567:12:87"},"nativeSrc":"567:23:87","nodeType":"YulFunctionCall","src":"567:23:87"},"variables":[{"name":"offset","nativeSrc":"557:6:87","nodeType":"YulTypedName","src":"557:6:87","type":""}]},{"body":{"nativeSrc":"633:16:87","nodeType":"YulBlock","src":"633:16:87","statements":[{"expression":{"arguments":[{"kind":"number","nativeSrc":"642:1:87","nodeType":"YulLiteral","src":"642:1:87","type":"","value":"0"},{"kind":"number","nativeSrc":"645:1:87","nodeType":"YulLiteral","src":"645:1:87","type":"","value":"0"}],"functionName":{"name":"revert","nativeSrc":"635:6:87","nodeType":"YulIdentifier","src":"635:6:87"},"nativeSrc":"635:12:87","nodeType":"YulFunctionCall","src":"635:12:87"},"nativeSrc":"635:12:87","nodeType":"YulExpressionStatement","src":"635:12:87"}]},"condition":{"arguments":[{"name":"offset","nativeSrc":"605:6:87","nodeType":"YulIdentifier","src":"605:6:87"},{"kind":"number","nativeSrc":"613:18:87","nodeType":"YulLiteral","src":"613:18:87","type":"","value":"0xffffffffffffffff"}],"functionName":{"name":"gt","nativeSrc":"602:2:87","nodeType":"YulIdentifier","src":"602:2:87"},"nativeSrc":"602:30:87","nodeType":"YulFunctionCall","src":"602:30:87"},"nativeSrc":"599:50:87","nodeType":"YulIf","src":"599:50:87"},{"nativeSrc":"658:80:87","nodeType":"YulAssignment","src":"658:80:87","value":{"arguments":[{"arguments":[{"name":"headStart","nativeSrc":"710:9:87","nodeType":"YulIdentifier","src":"710:9:87"},{"name":"offset","nativeSrc":"721:6:87","nodeType":"YulIdentifier","src":"721:6:87"}],"functionName":{"name":"add","nativeSrc":"706:3:87","nodeType":"YulIdentifier","src":"706:3:87"},"nativeSrc":"706:22:87","nodeType":"YulFunctionCall","src":"706:22:87"},{"name":"dataEnd","nativeSrc":"730:7:87","nodeType":"YulIdentifier","src":"730:7:87"}],"functionName":{"name":"abi_decode_struct_SwapConfig_calldata","nativeSrc":"668:37:87","nodeType":"YulIdentifier","src":"668:37:87"},"nativeSrc":"668:70:87","nodeType":"YulFunctionCall","src":"668:70:87"},"variableNames":[{"name":"value0","nativeSrc":"658:6:87","nodeType":"YulIdentifier","src":"658:6:87"}]},{"nativeSrc":"747:45:87","nodeType":"YulVariableDeclaration","src":"747:45:87","value":{"arguments":[{"arguments":[{"name":"headStart","nativeSrc":"777:9:87","nodeType":"YulIdentifier","src":"777:9:87"},{"kind":"number","nativeSrc":"788:2:87","nodeType":"YulLiteral","src":"788:2:87","type":"","value":"32"}],"functionName":{"name":"add","nativeSrc":"773:3:87","nodeType":"YulIdentifier","src":"773:3:87"},"nativeSrc":"773:18:87","nodeType":"YulFunctionCall","src":"773:18:87"}],"functionName":{"name":"calldataload","nativeSrc":"760:12:87","nodeType":"YulIdentifier","src":"760:12:87"},"nativeSrc":"760:32:87","nodeType":"YulFunctionCall","src":"760:32:87"},"variables":[{"name":"value","nativeSrc":"751:5:87","nodeType":"YulTypedName","src":"751:5:87","type":""}]},{"expression":{"arguments":[{"name":"value","nativeSrc":"826:5:87","nodeType":"YulIdentifier","src":"826:5:87"}],"functionName":{"name":"validator_revert_address","nativeSrc":"801:24:87","nodeType":"YulIdentifier","src":"801:24:87"},"nativeSrc":"801:31:87","nodeType":"YulFunctionCall","src":"801:31:87"},"nativeSrc":"801:31:87","nodeType":"YulExpressionStatement","src":"801:31:87"},{"nativeSrc":"841:15:87","nodeType":"YulAssignment","src":"841:15:87","value":{"name":"value","nativeSrc":"851:5:87","nodeType":"YulIdentifier","src":"851:5:87"},"variableNames":[{"name":"value1","nativeSrc":"841:6:87","nodeType":"YulIdentifier","src":"841:6:87"}]},{"nativeSrc":"865:47:87","nodeType":"YulVariableDeclaration","src":"865:47:87","value":{"arguments":[{"arguments":[{"name":"headStart","nativeSrc":"897:9:87","nodeType":"YulIdentifier","src":"897:9:87"},{"kind":"number","nativeSrc":"908:2:87","nodeType":"YulLiteral","src":"908:2:87","type":"","value":"64"}],"functionName":{"name":"add","nativeSrc":"893:3:87","nodeType":"YulIdentifier","src":"893:3:87"},"nativeSrc":"893:18:87","nodeType":"YulFunctionCall","src":"893:18:87"}],"functionName":{"name":"calldataload","nativeSrc":"880:12:87","nodeType":"YulIdentifier","src":"880:12:87"},"nativeSrc":"880:32:87","nodeType":"YulFunctionCall","src":"880:32:87"},"variables":[{"name":"value_1","nativeSrc":"869:7:87","nodeType":"YulTypedName","src":"869:7:87","type":""}]},{"expression":{"arguments":[{"name":"value_1","nativeSrc":"946:7:87","nodeType":"YulIdentifier","src":"946:7:87"}],"functionName":{"name":"validator_revert_address","nativeSrc":"921:24:87","nodeType":"YulIdentifier","src":"921:24:87"},"nativeSrc":"921:33:87","nodeType":"YulFunctionCall","src":"921:33:87"},"nativeSrc":"921:33:87","nodeType":"YulExpressionStatement","src":"921:33:87"},{"nativeSrc":"963:17:87","nodeType":"YulAssignment","src":"963:17:87","value":{"name":"value_1","nativeSrc":"973:7:87","nodeType":"YulIdentifier","src":"973:7:87"},"variableNames":[{"name":"value2","nativeSrc":"963:6:87","nodeType":"YulIdentifier","src":"963:6:87"}]},{"nativeSrc":"989:16:87","nodeType":"YulVariableDeclaration","src":"989:16:87","value":{"kind":"number","nativeSrc":"1004:1:87","nodeType":"YulLiteral","src":"1004:1:87","type":"","value":"0"},"variables":[{"name":"value_2","nativeSrc":"993:7:87","nodeType":"YulTypedName","src":"993:7:87","type":""}]},{"nativeSrc":"1014:43:87","nodeType":"YulAssignment","src":"1014:43:87","value":{"arguments":[{"arguments":[{"name":"headStart","nativeSrc":"1042:9:87","nodeType":"YulIdentifier","src":"1042:9:87"},{"kind":"number","nativeSrc":"1053:2:87","nodeType":"YulLiteral","src":"1053:2:87","type":"","value":"96"}],"functionName":{"name":"add","nativeSrc":"1038:3:87","nodeType":"YulIdentifier","src":"1038:3:87"},"nativeSrc":"1038:18:87","nodeType":"YulFunctionCall","src":"1038:18:87"}],"functionName":{"name":"calldataload","nativeSrc":"1025:12:87","nodeType":"YulIdentifier","src":"1025:12:87"},"nativeSrc":"1025:32:87","nodeType":"YulFunctionCall","src":"1025:32:87"},"variableNames":[{"name":"value_2","nativeSrc":"1014:7:87","nodeType":"YulIdentifier","src":"1014:7:87"}]},{"nativeSrc":"1066:17:87","nodeType":"YulAssignment","src":"1066:17:87","value":{"name":"value_2","nativeSrc":"1076:7:87","nodeType":"YulIdentifier","src":"1076:7:87"},"variableNames":[{"name":"value3","nativeSrc":"1066:6:87","nodeType":"YulIdentifier","src":"1066:6:87"}]},{"nativeSrc":"1092:16:87","nodeType":"YulVariableDeclaration","src":"1092:16:87","value":{"kind":"number","nativeSrc":"1107:1:87","nodeType":"YulLiteral","src":"1107:1:87","type":"","value":"0"},"variables":[{"name":"value_3","nativeSrc":"1096:7:87","nodeType":"YulTypedName","src":"1096:7:87","type":""}]},{"nativeSrc":"1117:44:87","nodeType":"YulAssignment","src":"1117:44:87","value":{"arguments":[{"arguments":[{"name":"headStart","nativeSrc":"1145:9:87","nodeType":"YulIdentifier","src":"1145:9:87"},{"kind":"number","nativeSrc":"1156:3:87","nodeType":"YulLiteral","src":"1156:3:87","type":"","value":"128"}],"functionName":{"name":"add","nativeSrc":"1141:3:87","nodeType":"YulIdentifier","src":"1141:3:87"},"nativeSrc":"1141:19:87","nodeType":"YulFunctionCall","src":"1141:19:87"}],"functionName":{"name":"calldataload","nativeSrc":"1128:12:87","nodeType":"YulIdentifier","src":"1128:12:87"},"nativeSrc":"1128:33:87","nodeType":"YulFunctionCall","src":"1128:33:87"},"variableNames":[{"name":"value_3","nativeSrc":"1117:7:87","nodeType":"YulIdentifier","src":"1117:7:87"}]},{"nativeSrc":"1170:17:87","nodeType":"YulAssignment","src":"1170:17:87","value":{"name":"value_3","nativeSrc":"1180:7:87","nodeType":"YulIdentifier","src":"1180:7:87"},"variableNames":[{"name":"value4","nativeSrc":"1170:6:87","nodeType":"YulIdentifier","src":"1170:6:87"}]}]},"name":"abi_decode_tuple_t_struct$_SwapConfig_$1113_calldata_ptrt_addresst_addresst_uint256t_uint256","nativeSrc":"313:880:87","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nativeSrc":"415:9:87","nodeType":"YulTypedName","src":"415:9:87","type":""},{"name":"dataEnd","nativeSrc":"426:7:87","nodeType":"YulTypedName","src":"426:7:87","type":""}],"returnVariables":[{"name":"value0","nativeSrc":"438:6:87","nodeType":"YulTypedName","src":"438:6:87","type":""},{"name":"value1","nativeSrc":"446:6:87","nodeType":"YulTypedName","src":"446:6:87","type":""},{"name":"value2","nativeSrc":"454:6:87","nodeType":"YulTypedName","src":"454:6:87","type":""},{"name":"value3","nativeSrc":"462:6:87","nodeType":"YulTypedName","src":"462:6:87","type":""},{"name":"value4","nativeSrc":"470:6:87","nodeType":"YulTypedName","src":"470:6:87","type":""}],"src":"313:880:87"},{"body":{"nativeSrc":"1307:76:87","nodeType":"YulBlock","src":"1307:76:87","statements":[{"nativeSrc":"1317:26:87","nodeType":"YulAssignment","src":"1317:26:87","value":{"arguments":[{"name":"headStart","nativeSrc":"1329:9:87","nodeType":"YulIdentifier","src":"1329:9:87"},{"kind":"number","nativeSrc":"1340:2:87","nodeType":"YulLiteral","src":"1340:2:87","type":"","value":"32"}],"functionName":{"name":"add","nativeSrc":"1325:3:87","nodeType":"YulIdentifier","src":"1325:3:87"},"nativeSrc":"1325:18:87","nodeType":"YulFunctionCall","src":"1325:18:87"},"variableNames":[{"name":"tail","nativeSrc":"1317:4:87","nodeType":"YulIdentifier","src":"1317:4:87"}]},{"expression":{"arguments":[{"name":"headStart","nativeSrc":"1359:9:87","nodeType":"YulIdentifier","src":"1359:9:87"},{"name":"value0","nativeSrc":"1370:6:87","nodeType":"YulIdentifier","src":"1370:6:87"}],"functionName":{"name":"mstore","nativeSrc":"1352:6:87","nodeType":"YulIdentifier","src":"1352:6:87"},"nativeSrc":"1352:25:87","nodeType":"YulFunctionCall","src":"1352:25:87"},"nativeSrc":"1352:25:87","nodeType":"YulExpressionStatement","src":"1352:25:87"}]},"name":"abi_encode_tuple_t_uint256__to_t_uint256__fromStack_library_reversed","nativeSrc":"1198:185:87","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nativeSrc":"1276:9:87","nodeType":"YulTypedName","src":"1276:9:87","type":""},{"name":"value0","nativeSrc":"1287:6:87","nodeType":"YulTypedName","src":"1287:6:87","type":""}],"returnVariables":[{"name":"tail","nativeSrc":"1298:4:87","nodeType":"YulTypedName","src":"1298:4:87","type":""}],"src":"1198:185:87"},{"body":{"nativeSrc":"1488:262:87","nodeType":"YulBlock","src":"1488:262:87","statements":[{"body":{"nativeSrc":"1534:16:87","nodeType":"YulBlock","src":"1534:16:87","statements":[{"expression":{"arguments":[{"kind":"number","nativeSrc":"1543:1:87","nodeType":"YulLiteral","src":"1543:1:87","type":"","value":"0"},{"kind":"number","nativeSrc":"1546:1:87","nodeType":"YulLiteral","src":"1546:1:87","type":"","value":"0"}],"functionName":{"name":"revert","nativeSrc":"1536:6:87","nodeType":"YulIdentifier","src":"1536:6:87"},"nativeSrc":"1536:12:87","nodeType":"YulFunctionCall","src":"1536:12:87"},"nativeSrc":"1536:12:87","nodeType":"YulExpressionStatement","src":"1536:12:87"}]},"condition":{"arguments":[{"arguments":[{"name":"dataEnd","nativeSrc":"1509:7:87","nodeType":"YulIdentifier","src":"1509:7:87"},{"name":"headStart","nativeSrc":"1518:9:87","nodeType":"YulIdentifier","src":"1518:9:87"}],"functionName":{"name":"sub","nativeSrc":"1505:3:87","nodeType":"YulIdentifier","src":"1505:3:87"},"nativeSrc":"1505:23:87","nodeType":"YulFunctionCall","src":"1505:23:87"},{"kind":"number","nativeSrc":"1530:2:87","nodeType":"YulLiteral","src":"1530:2:87","type":"","value":"32"}],"functionName":{"name":"slt","nativeSrc":"1501:3:87","nodeType":"YulIdentifier","src":"1501:3:87"},"nativeSrc":"1501:32:87","nodeType":"YulFunctionCall","src":"1501:32:87"},"nativeSrc":"1498:52:87","nodeType":"YulIf","src":"1498:52:87"},{"nativeSrc":"1559:37:87","nodeType":"YulVariableDeclaration","src":"1559:37:87","value":{"arguments":[{"name":"headStart","nativeSrc":"1586:9:87","nodeType":"YulIdentifier","src":"1586:9:87"}],"functionName":{"name":"calldataload","nativeSrc":"1573:12:87","nodeType":"YulIdentifier","src":"1573:12:87"},"nativeSrc":"1573:23:87","nodeType":"YulFunctionCall","src":"1573:23:87"},"variables":[{"name":"offset","nativeSrc":"1563:6:87","nodeType":"YulTypedName","src":"1563:6:87","type":""}]},{"body":{"nativeSrc":"1639:16:87","nodeType":"YulBlock","src":"1639:16:87","statements":[{"expression":{"arguments":[{"kind":"number","nativeSrc":"1648:1:87","nodeType":"YulLiteral","src":"1648:1:87","type":"","value":"0"},{"kind":"number","nativeSrc":"1651:1:87","nodeType":"YulLiteral","src":"1651:1:87","type":"","value":"0"}],"functionName":{"name":"revert","nativeSrc":"1641:6:87","nodeType":"YulIdentifier","src":"1641:6:87"},"nativeSrc":"1641:12:87","nodeType":"YulFunctionCall","src":"1641:12:87"},"nativeSrc":"1641:12:87","nodeType":"YulExpressionStatement","src":"1641:12:87"}]},"condition":{"arguments":[{"name":"offset","nativeSrc":"1611:6:87","nodeType":"YulIdentifier","src":"1611:6:87"},{"kind":"number","nativeSrc":"1619:18:87","nodeType":"YulLiteral","src":"1619:18:87","type":"","value":"0xffffffffffffffff"}],"functionName":{"name":"gt","nativeSrc":"1608:2:87","nodeType":"YulIdentifier","src":"1608:2:87"},"nativeSrc":"1608:30:87","nodeType":"YulFunctionCall","src":"1608:30:87"},"nativeSrc":"1605:50:87","nodeType":"YulIf","src":"1605:50:87"},{"nativeSrc":"1664:80:87","nodeType":"YulAssignment","src":"1664:80:87","value":{"arguments":[{"arguments":[{"name":"headStart","nativeSrc":"1716:9:87","nodeType":"YulIdentifier","src":"1716:9:87"},{"name":"offset","nativeSrc":"1727:6:87","nodeType":"YulIdentifier","src":"1727:6:87"}],"functionName":{"name":"add","nativeSrc":"1712:3:87","nodeType":"YulIdentifier","src":"1712:3:87"},"nativeSrc":"1712:22:87","nodeType":"YulFunctionCall","src":"1712:22:87"},{"name":"dataEnd","nativeSrc":"1736:7:87","nodeType":"YulIdentifier","src":"1736:7:87"}],"functionName":{"name":"abi_decode_struct_SwapConfig_calldata","nativeSrc":"1674:37:87","nodeType":"YulIdentifier","src":"1674:37:87"},"nativeSrc":"1674:70:87","nodeType":"YulFunctionCall","src":"1674:70:87"},"variableNames":[{"name":"value0","nativeSrc":"1664:6:87","nodeType":"YulIdentifier","src":"1664:6:87"}]}]},"name":"abi_decode_tuple_t_struct$_SwapConfig_$1113_calldata_ptr","nativeSrc":"1388:362:87","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nativeSrc":"1454:9:87","nodeType":"YulTypedName","src":"1454:9:87","type":""},{"name":"dataEnd","nativeSrc":"1465:7:87","nodeType":"YulTypedName","src":"1465:7:87","type":""}],"returnVariables":[{"name":"value0","nativeSrc":"1477:6:87","nodeType":"YulTypedName","src":"1477:6:87","type":""}],"src":"1388:362:87"},{"body":{"nativeSrc":"1787:95:87","nodeType":"YulBlock","src":"1787:95:87","statements":[{"expression":{"arguments":[{"kind":"number","nativeSrc":"1804:1:87","nodeType":"YulLiteral","src":"1804:1:87","type":"","value":"0"},{"arguments":[{"kind":"number","nativeSrc":"1811:3:87","nodeType":"YulLiteral","src":"1811:3:87","type":"","value":"224"},{"kind":"number","nativeSrc":"1816:10:87","nodeType":"YulLiteral","src":"1816:10:87","type":"","value":"0x4e487b71"}],"functionName":{"name":"shl","nativeSrc":"1807:3:87","nodeType":"YulIdentifier","src":"1807:3:87"},"nativeSrc":"1807:20:87","nodeType":"YulFunctionCall","src":"1807:20:87"}],"functionName":{"name":"mstore","nativeSrc":"1797:6:87","nodeType":"YulIdentifier","src":"1797:6:87"},"nativeSrc":"1797:31:87","nodeType":"YulFunctionCall","src":"1797:31:87"},"nativeSrc":"1797:31:87","nodeType":"YulExpressionStatement","src":"1797:31:87"},{"expression":{"arguments":[{"kind":"number","nativeSrc":"1844:1:87","nodeType":"YulLiteral","src":"1844:1:87","type":"","value":"4"},{"kind":"number","nativeSrc":"1847:4:87","nodeType":"YulLiteral","src":"1847:4:87","type":"","value":"0x21"}],"functionName":{"name":"mstore","nativeSrc":"1837:6:87","nodeType":"YulIdentifier","src":"1837:6:87"},"nativeSrc":"1837:15:87","nodeType":"YulFunctionCall","src":"1837:15:87"},"nativeSrc":"1837:15:87","nodeType":"YulExpressionStatement","src":"1837:15:87"},{"expression":{"arguments":[{"kind":"number","nativeSrc":"1868:1:87","nodeType":"YulLiteral","src":"1868:1:87","type":"","value":"0"},{"kind":"number","nativeSrc":"1871:4:87","nodeType":"YulLiteral","src":"1871:4:87","type":"","value":"0x24"}],"functionName":{"name":"revert","nativeSrc":"1861:6:87","nodeType":"YulIdentifier","src":"1861:6:87"},"nativeSrc":"1861:15:87","nodeType":"YulFunctionCall","src":"1861:15:87"},"nativeSrc":"1861:15:87","nodeType":"YulExpressionStatement","src":"1861:15:87"}]},"name":"panic_error_0x21","nativeSrc":"1755:127:87","nodeType":"YulFunctionDefinition","src":"1755:127:87"},{"body":{"nativeSrc":"1974:186:87","nodeType":"YulBlock","src":"1974:186:87","statements":[{"body":{"nativeSrc":"2020:16:87","nodeType":"YulBlock","src":"2020:16:87","statements":[{"expression":{"arguments":[{"kind":"number","nativeSrc":"2029:1:87","nodeType":"YulLiteral","src":"2029:1:87","type":"","value":"0"},{"kind":"number","nativeSrc":"2032:1:87","nodeType":"YulLiteral","src":"2032:1:87","type":"","value":"0"}],"functionName":{"name":"revert","nativeSrc":"2022:6:87","nodeType":"YulIdentifier","src":"2022:6:87"},"nativeSrc":"2022:12:87","nodeType":"YulFunctionCall","src":"2022:12:87"},"nativeSrc":"2022:12:87","nodeType":"YulExpressionStatement","src":"2022:12:87"}]},"condition":{"arguments":[{"arguments":[{"name":"dataEnd","nativeSrc":"1995:7:87","nodeType":"YulIdentifier","src":"1995:7:87"},{"name":"headStart","nativeSrc":"2004:9:87","nodeType":"YulIdentifier","src":"2004:9:87"}],"functionName":{"name":"sub","nativeSrc":"1991:3:87","nodeType":"YulIdentifier","src":"1991:3:87"},"nativeSrc":"1991:23:87","nodeType":"YulFunctionCall","src":"1991:23:87"},{"kind":"number","nativeSrc":"2016:2:87","nodeType":"YulLiteral","src":"2016:2:87","type":"","value":"32"}],"functionName":{"name":"slt","nativeSrc":"1987:3:87","nodeType":"YulIdentifier","src":"1987:3:87"},"nativeSrc":"1987:32:87","nodeType":"YulFunctionCall","src":"1987:32:87"},"nativeSrc":"1984:52:87","nodeType":"YulIf","src":"1984:52:87"},{"nativeSrc":"2045:36:87","nodeType":"YulVariableDeclaration","src":"2045:36:87","value":{"arguments":[{"name":"headStart","nativeSrc":"2071:9:87","nodeType":"YulIdentifier","src":"2071:9:87"}],"functionName":{"name":"calldataload","nativeSrc":"2058:12:87","nodeType":"YulIdentifier","src":"2058:12:87"},"nativeSrc":"2058:23:87","nodeType":"YulFunctionCall","src":"2058:23:87"},"variables":[{"name":"value","nativeSrc":"2049:5:87","nodeType":"YulTypedName","src":"2049:5:87","type":""}]},{"body":{"nativeSrc":"2114:16:87","nodeType":"YulBlock","src":"2114:16:87","statements":[{"expression":{"arguments":[{"kind":"number","nativeSrc":"2123:1:87","nodeType":"YulLiteral","src":"2123:1:87","type":"","value":"0"},{"kind":"number","nativeSrc":"2126:1:87","nodeType":"YulLiteral","src":"2126:1:87","type":"","value":"0"}],"functionName":{"name":"revert","nativeSrc":"2116:6:87","nodeType":"YulIdentifier","src":"2116:6:87"},"nativeSrc":"2116:12:87","nodeType":"YulFunctionCall","src":"2116:12:87"},"nativeSrc":"2116:12:87","nodeType":"YulExpressionStatement","src":"2116:12:87"}]},"condition":{"arguments":[{"arguments":[{"name":"value","nativeSrc":"2103:5:87","nodeType":"YulIdentifier","src":"2103:5:87"},{"kind":"number","nativeSrc":"2110:1:87","nodeType":"YulLiteral","src":"2110:1:87","type":"","value":"3"}],"functionName":{"name":"lt","nativeSrc":"2100:2:87","nodeType":"YulIdentifier","src":"2100:2:87"},"nativeSrc":"2100:12:87","nodeType":"YulFunctionCall","src":"2100:12:87"}],"functionName":{"name":"iszero","nativeSrc":"2093:6:87","nodeType":"YulIdentifier","src":"2093:6:87"},"nativeSrc":"2093:20:87","nodeType":"YulFunctionCall","src":"2093:20:87"},"nativeSrc":"2090:40:87","nodeType":"YulIf","src":"2090:40:87"},{"nativeSrc":"2139:15:87","nodeType":"YulAssignment","src":"2139:15:87","value":{"name":"value","nativeSrc":"2149:5:87","nodeType":"YulIdentifier","src":"2149:5:87"},"variableNames":[{"name":"value0","nativeSrc":"2139:6:87","nodeType":"YulIdentifier","src":"2139:6:87"}]}]},"name":"abi_decode_tuple_t_enum$_SwapProtocol_$1105","nativeSrc":"1887:273:87","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nativeSrc":"1940:9:87","nodeType":"YulTypedName","src":"1940:9:87","type":""},{"name":"dataEnd","nativeSrc":"1951:7:87","nodeType":"YulTypedName","src":"1951:7:87","type":""}],"returnVariables":[{"name":"value0","nativeSrc":"1963:6:87","nodeType":"YulTypedName","src":"1963:6:87","type":""}],"src":"1887:273:87"},{"body":{"nativeSrc":"2259:427:87","nodeType":"YulBlock","src":"2259:427:87","statements":[{"nativeSrc":"2269:51:87","nodeType":"YulVariableDeclaration","src":"2269:51:87","value":{"arguments":[{"name":"ptr_to_tail","nativeSrc":"2308:11:87","nodeType":"YulIdentifier","src":"2308:11:87"}],"functionName":{"name":"calldataload","nativeSrc":"2295:12:87","nodeType":"YulIdentifier","src":"2295:12:87"},"nativeSrc":"2295:25:87","nodeType":"YulFunctionCall","src":"2295:25:87"},"variables":[{"name":"rel_offset_of_tail","nativeSrc":"2273:18:87","nodeType":"YulTypedName","src":"2273:18:87","type":""}]},{"body":{"nativeSrc":"2409:16:87","nodeType":"YulBlock","src":"2409:16:87","statements":[{"expression":{"arguments":[{"kind":"number","nativeSrc":"2418:1:87","nodeType":"YulLiteral","src":"2418:1:87","type":"","value":"0"},{"kind":"number","nativeSrc":"2421:1:87","nodeType":"YulLiteral","src":"2421:1:87","type":"","value":"0"}],"functionName":{"name":"revert","nativeSrc":"2411:6:87","nodeType":"YulIdentifier","src":"2411:6:87"},"nativeSrc":"2411:12:87","nodeType":"YulFunctionCall","src":"2411:12:87"},"nativeSrc":"2411:12:87","nodeType":"YulExpressionStatement","src":"2411:12:87"}]},"condition":{"arguments":[{"arguments":[{"name":"rel_offset_of_tail","nativeSrc":"2343:18:87","nodeType":"YulIdentifier","src":"2343:18:87"},{"arguments":[{"arguments":[{"arguments":[],"functionName":{"name":"calldatasize","nativeSrc":"2371:12:87","nodeType":"YulIdentifier","src":"2371:12:87"},"nativeSrc":"2371:14:87","nodeType":"YulFunctionCall","src":"2371:14:87"},{"name":"base_ref","nativeSrc":"2387:8:87","nodeType":"YulIdentifier","src":"2387:8:87"}],"functionName":{"name":"sub","nativeSrc":"2367:3:87","nodeType":"YulIdentifier","src":"2367:3:87"},"nativeSrc":"2367:29:87","nodeType":"YulFunctionCall","src":"2367:29:87"},{"arguments":[{"kind":"number","nativeSrc":"2402:2:87","nodeType":"YulLiteral","src":"2402:2:87","type":"","value":"30"}],"functionName":{"name":"not","nativeSrc":"2398:3:87","nodeType":"YulIdentifier","src":"2398:3:87"},"nativeSrc":"2398:7:87","nodeType":"YulFunctionCall","src":"2398:7:87"}],"functionName":{"name":"add","nativeSrc":"2363:3:87","nodeType":"YulIdentifier","src":"2363:3:87"},"nativeSrc":"2363:43:87","nodeType":"YulFunctionCall","src":"2363:43:87"}],"functionName":{"name":"slt","nativeSrc":"2339:3:87","nodeType":"YulIdentifier","src":"2339:3:87"},"nativeSrc":"2339:68:87","nodeType":"YulFunctionCall","src":"2339:68:87"}],"functionName":{"name":"iszero","nativeSrc":"2332:6:87","nodeType":"YulIdentifier","src":"2332:6:87"},"nativeSrc":"2332:76:87","nodeType":"YulFunctionCall","src":"2332:76:87"},"nativeSrc":"2329:96:87","nodeType":"YulIf","src":"2329:96:87"},{"nativeSrc":"2434:47:87","nodeType":"YulVariableDeclaration","src":"2434:47:87","value":{"arguments":[{"name":"base_ref","nativeSrc":"2452:8:87","nodeType":"YulIdentifier","src":"2452:8:87"},{"name":"rel_offset_of_tail","nativeSrc":"2462:18:87","nodeType":"YulIdentifier","src":"2462:18:87"}],"functionName":{"name":"add","nativeSrc":"2448:3:87","nodeType":"YulIdentifier","src":"2448:3:87"},"nativeSrc":"2448:33:87","nodeType":"YulFunctionCall","src":"2448:33:87"},"variables":[{"name":"addr_1","nativeSrc":"2438:6:87","nodeType":"YulTypedName","src":"2438:6:87","type":""}]},{"nativeSrc":"2490:30:87","nodeType":"YulAssignment","src":"2490:30:87","value":{"arguments":[{"name":"addr_1","nativeSrc":"2513:6:87","nodeType":"YulIdentifier","src":"2513:6:87"}],"functionName":{"name":"calldataload","nativeSrc":"2500:12:87","nodeType":"YulIdentifier","src":"2500:12:87"},"nativeSrc":"2500:20:87","nodeType":"YulFunctionCall","src":"2500:20:87"},"variableNames":[{"name":"length","nativeSrc":"2490:6:87","nodeType":"YulIdentifier","src":"2490:6:87"}]},{"body":{"nativeSrc":"2563:16:87","nodeType":"YulBlock","src":"2563:16:87","statements":[{"expression":{"arguments":[{"kind":"number","nativeSrc":"2572:1:87","nodeType":"YulLiteral","src":"2572:1:87","type":"","value":"0"},{"kind":"number","nativeSrc":"2575:1:87","nodeType":"YulLiteral","src":"2575:1:87","type":"","value":"0"}],"functionName":{"name":"revert","nativeSrc":"2565:6:87","nodeType":"YulIdentifier","src":"2565:6:87"},"nativeSrc":"2565:12:87","nodeType":"YulFunctionCall","src":"2565:12:87"},"nativeSrc":"2565:12:87","nodeType":"YulExpressionStatement","src":"2565:12:87"}]},"condition":{"arguments":[{"name":"length","nativeSrc":"2535:6:87","nodeType":"YulIdentifier","src":"2535:6:87"},{"kind":"number","nativeSrc":"2543:18:87","nodeType":"YulLiteral","src":"2543:18:87","type":"","value":"0xffffffffffffffff"}],"functionName":{"name":"gt","nativeSrc":"2532:2:87","nodeType":"YulIdentifier","src":"2532:2:87"},"nativeSrc":"2532:30:87","nodeType":"YulFunctionCall","src":"2532:30:87"},"nativeSrc":"2529:50:87","nodeType":"YulIf","src":"2529:50:87"},{"nativeSrc":"2588:25:87","nodeType":"YulAssignment","src":"2588:25:87","value":{"arguments":[{"name":"addr_1","nativeSrc":"2600:6:87","nodeType":"YulIdentifier","src":"2600:6:87"},{"kind":"number","nativeSrc":"2608:4:87","nodeType":"YulLiteral","src":"2608:4:87","type":"","value":"0x20"}],"functionName":{"name":"add","nativeSrc":"2596:3:87","nodeType":"YulIdentifier","src":"2596:3:87"},"nativeSrc":"2596:17:87","nodeType":"YulFunctionCall","src":"2596:17:87"},"variableNames":[{"name":"addr","nativeSrc":"2588:4:87","nodeType":"YulIdentifier","src":"2588:4:87"}]},{"body":{"nativeSrc":"2664:16:87","nodeType":"YulBlock","src":"2664:16:87","statements":[{"expression":{"arguments":[{"kind":"number","nativeSrc":"2673:1:87","nodeType":"YulLiteral","src":"2673:1:87","type":"","value":"0"},{"kind":"number","nativeSrc":"2676:1:87","nodeType":"YulLiteral","src":"2676:1:87","type":"","value":"0"}],"functionName":{"name":"revert","nativeSrc":"2666:6:87","nodeType":"YulIdentifier","src":"2666:6:87"},"nativeSrc":"2666:12:87","nodeType":"YulFunctionCall","src":"2666:12:87"},"nativeSrc":"2666:12:87","nodeType":"YulExpressionStatement","src":"2666:12:87"}]},"condition":{"arguments":[{"name":"addr","nativeSrc":"2629:4:87","nodeType":"YulIdentifier","src":"2629:4:87"},{"arguments":[{"arguments":[],"functionName":{"name":"calldatasize","nativeSrc":"2639:12:87","nodeType":"YulIdentifier","src":"2639:12:87"},"nativeSrc":"2639:14:87","nodeType":"YulFunctionCall","src":"2639:14:87"},{"name":"length","nativeSrc":"2655:6:87","nodeType":"YulIdentifier","src":"2655:6:87"}],"functionName":{"name":"sub","nativeSrc":"2635:3:87","nodeType":"YulIdentifier","src":"2635:3:87"},"nativeSrc":"2635:27:87","nodeType":"YulFunctionCall","src":"2635:27:87"}],"functionName":{"name":"sgt","nativeSrc":"2625:3:87","nodeType":"YulIdentifier","src":"2625:3:87"},"nativeSrc":"2625:38:87","nodeType":"YulFunctionCall","src":"2625:38:87"},"nativeSrc":"2622:58:87","nodeType":"YulIf","src":"2622:58:87"}]},"name":"access_calldata_tail_t_bytes_calldata_ptr","nativeSrc":"2165:521:87","nodeType":"YulFunctionDefinition","parameters":[{"name":"base_ref","nativeSrc":"2216:8:87","nodeType":"YulTypedName","src":"2216:8:87","type":""},{"name":"ptr_to_tail","nativeSrc":"2226:11:87","nodeType":"YulTypedName","src":"2226:11:87","type":""}],"returnVariables":[{"name":"addr","nativeSrc":"2242:4:87","nodeType":"YulTypedName","src":"2242:4:87","type":""},{"name":"length","nativeSrc":"2248:6:87","nodeType":"YulTypedName","src":"2248:6:87","type":""}],"src":"2165:521:87"},{"body":{"nativeSrc":"2798:711:87","nodeType":"YulBlock","src":"2798:711:87","statements":[{"nativeSrc":"2808:42:87","nodeType":"YulVariableDeclaration","src":"2808:42:87","value":{"arguments":[{"arguments":[{"name":"dataEnd","nativeSrc":"2826:7:87","nodeType":"YulIdentifier","src":"2826:7:87"},{"name":"headStart","nativeSrc":"2835:9:87","nodeType":"YulIdentifier","src":"2835:9:87"}],"functionName":{"name":"sub","nativeSrc":"2822:3:87","nodeType":"YulIdentifier","src":"2822:3:87"},"nativeSrc":"2822:23:87","nodeType":"YulFunctionCall","src":"2822:23:87"},{"kind":"number","nativeSrc":"2847:2:87","nodeType":"YulLiteral","src":"2847:2:87","type":"","value":"64"}],"functionName":{"name":"slt","nativeSrc":"2818:3:87","nodeType":"YulIdentifier","src":"2818:3:87"},"nativeSrc":"2818:32:87","nodeType":"YulFunctionCall","src":"2818:32:87"},"variables":[{"name":"_1","nativeSrc":"2812:2:87","nodeType":"YulTypedName","src":"2812:2:87","type":""}]},{"body":{"nativeSrc":"2865:16:87","nodeType":"YulBlock","src":"2865:16:87","statements":[{"expression":{"arguments":[{"kind":"number","nativeSrc":"2874:1:87","nodeType":"YulLiteral","src":"2874:1:87","type":"","value":"0"},{"kind":"number","nativeSrc":"2877:1:87","nodeType":"YulLiteral","src":"2877:1:87","type":"","value":"0"}],"functionName":{"name":"revert","nativeSrc":"2867:6:87","nodeType":"YulIdentifier","src":"2867:6:87"},"nativeSrc":"2867:12:87","nodeType":"YulFunctionCall","src":"2867:12:87"},"nativeSrc":"2867:12:87","nodeType":"YulExpressionStatement","src":"2867:12:87"}]},"condition":{"name":"_1","nativeSrc":"2862:2:87","nodeType":"YulIdentifier","src":"2862:2:87"},"nativeSrc":"2859:22:87","nodeType":"YulIf","src":"2859:22:87"},{"nativeSrc":"2890:7:87","nodeType":"YulAssignment","src":"2890:7:87","value":{"kind":"number","nativeSrc":"2896:1:87","nodeType":"YulLiteral","src":"2896:1:87","type":"","value":"0"},"variableNames":[{"name":"_1","nativeSrc":"2890:2:87","nodeType":"YulIdentifier","src":"2890:2:87"}]},{"nativeSrc":"2906:23:87","nodeType":"YulVariableDeclaration","src":"2906:23:87","value":{"arguments":[{"kind":"number","nativeSrc":"2926:2:87","nodeType":"YulLiteral","src":"2926:2:87","type":"","value":"64"}],"functionName":{"name":"mload","nativeSrc":"2920:5:87","nodeType":"YulIdentifier","src":"2920:5:87"},"nativeSrc":"2920:9:87","nodeType":"YulFunctionCall","src":"2920:9:87"},"variables":[{"name":"memPtr","nativeSrc":"2910:6:87","nodeType":"YulTypedName","src":"2910:6:87","type":""}]},{"nativeSrc":"2938:33:87","nodeType":"YulVariableDeclaration","src":"2938:33:87","value":{"arguments":[{"name":"memPtr","nativeSrc":"2960:6:87","nodeType":"YulIdentifier","src":"2960:6:87"},{"kind":"number","nativeSrc":"2968:2:87","nodeType":"YulLiteral","src":"2968:2:87","type":"","value":"64"}],"functionName":{"name":"add","nativeSrc":"2956:3:87","nodeType":"YulIdentifier","src":"2956:3:87"},"nativeSrc":"2956:15:87","nodeType":"YulFunctionCall","src":"2956:15:87"},"variables":[{"name":"newFreePtr","nativeSrc":"2942:10:87","nodeType":"YulTypedName","src":"2942:10:87","type":""}]},{"body":{"nativeSrc":"3054:111:87","nodeType":"YulBlock","src":"3054:111:87","statements":[{"expression":{"arguments":[{"kind":"number","nativeSrc":"3075:1:87","nodeType":"YulLiteral","src":"3075:1:87","type":"","value":"0"},{"arguments":[{"kind":"number","nativeSrc":"3082:3:87","nodeType":"YulLiteral","src":"3082:3:87","type":"","value":"224"},{"kind":"number","nativeSrc":"3087:10:87","nodeType":"YulLiteral","src":"3087:10:87","type":"","value":"0x4e487b71"}],"functionName":{"name":"shl","nativeSrc":"3078:3:87","nodeType":"YulIdentifier","src":"3078:3:87"},"nativeSrc":"3078:20:87","nodeType":"YulFunctionCall","src":"3078:20:87"}],"functionName":{"name":"mstore","nativeSrc":"3068:6:87","nodeType":"YulIdentifier","src":"3068:6:87"},"nativeSrc":"3068:31:87","nodeType":"YulFunctionCall","src":"3068:31:87"},"nativeSrc":"3068:31:87","nodeType":"YulExpressionStatement","src":"3068:31:87"},{"expression":{"arguments":[{"kind":"number","nativeSrc":"3119:1:87","nodeType":"YulLiteral","src":"3119:1:87","type":"","value":"4"},{"kind":"number","nativeSrc":"3122:4:87","nodeType":"YulLiteral","src":"3122:4:87","type":"","value":"0x41"}],"functionName":{"name":"mstore","nativeSrc":"3112:6:87","nodeType":"YulIdentifier","src":"3112:6:87"},"nativeSrc":"3112:15:87","nodeType":"YulFunctionCall","src":"3112:15:87"},"nativeSrc":"3112:15:87","nodeType":"YulExpressionStatement","src":"3112:15:87"},{"expression":{"arguments":[{"kind":"number","nativeSrc":"3147:1:87","nodeType":"YulLiteral","src":"3147:1:87","type":"","value":"0"},{"kind":"number","nativeSrc":"3150:4:87","nodeType":"YulLiteral","src":"3150:4:87","type":"","value":"0x24"}],"functionName":{"name":"revert","nativeSrc":"3140:6:87","nodeType":"YulIdentifier","src":"3140:6:87"},"nativeSrc":"3140:15:87","nodeType":"YulFunctionCall","src":"3140:15:87"},"nativeSrc":"3140:15:87","nodeType":"YulExpressionStatement","src":"3140:15:87"}]},"condition":{"arguments":[{"arguments":[{"name":"newFreePtr","nativeSrc":"2989:10:87","nodeType":"YulIdentifier","src":"2989:10:87"},{"kind":"number","nativeSrc":"3001:18:87","nodeType":"YulLiteral","src":"3001:18:87","type":"","value":"0xffffffffffffffff"}],"functionName":{"name":"gt","nativeSrc":"2986:2:87","nodeType":"YulIdentifier","src":"2986:2:87"},"nativeSrc":"2986:34:87","nodeType":"YulFunctionCall","src":"2986:34:87"},{"arguments":[{"name":"newFreePtr","nativeSrc":"3025:10:87","nodeType":"YulIdentifier","src":"3025:10:87"},{"name":"memPtr","nativeSrc":"3037:6:87","nodeType":"YulIdentifier","src":"3037:6:87"}],"functionName":{"name":"lt","nativeSrc":"3022:2:87","nodeType":"YulIdentifier","src":"3022:2:87"},"nativeSrc":"3022:22:87","nodeType":"YulFunctionCall","src":"3022:22:87"}],"functionName":{"name":"or","nativeSrc":"2983:2:87","nodeType":"YulIdentifier","src":"2983:2:87"},"nativeSrc":"2983:62:87","nodeType":"YulFunctionCall","src":"2983:62:87"},"nativeSrc":"2980:185:87","nodeType":"YulIf","src":"2980:185:87"},{"expression":{"arguments":[{"kind":"number","nativeSrc":"3181:2:87","nodeType":"YulLiteral","src":"3181:2:87","type":"","value":"64"},{"name":"newFreePtr","nativeSrc":"3185:10:87","nodeType":"YulIdentifier","src":"3185:10:87"}],"functionName":{"name":"mstore","nativeSrc":"3174:6:87","nodeType":"YulIdentifier","src":"3174:6:87"},"nativeSrc":"3174:22:87","nodeType":"YulFunctionCall","src":"3174:22:87"},"nativeSrc":"3174:22:87","nodeType":"YulExpressionStatement","src":"3174:22:87"},{"nativeSrc":"3205:36:87","nodeType":"YulVariableDeclaration","src":"3205:36:87","value":{"arguments":[{"name":"headStart","nativeSrc":"3231:9:87","nodeType":"YulIdentifier","src":"3231:9:87"}],"functionName":{"name":"calldataload","nativeSrc":"3218:12:87","nodeType":"YulIdentifier","src":"3218:12:87"},"nativeSrc":"3218:23:87","nodeType":"YulFunctionCall","src":"3218:23:87"},"variables":[{"name":"value","nativeSrc":"3209:5:87","nodeType":"YulTypedName","src":"3209:5:87","type":""}]},{"body":{"nativeSrc":"3293:16:87","nodeType":"YulBlock","src":"3293:16:87","statements":[{"expression":{"arguments":[{"kind":"number","nativeSrc":"3302:1:87","nodeType":"YulLiteral","src":"3302:1:87","type":"","value":"0"},{"kind":"number","nativeSrc":"3305:1:87","nodeType":"YulLiteral","src":"3305:1:87","type":"","value":"0"}],"functionName":{"name":"revert","nativeSrc":"3295:6:87","nodeType":"YulIdentifier","src":"3295:6:87"},"nativeSrc":"3295:12:87","nodeType":"YulFunctionCall","src":"3295:12:87"},"nativeSrc":"3295:12:87","nodeType":"YulExpressionStatement","src":"3295:12:87"}]},"condition":{"arguments":[{"arguments":[{"name":"value","nativeSrc":"3263:5:87","nodeType":"YulIdentifier","src":"3263:5:87"},{"arguments":[{"name":"value","nativeSrc":"3274:5:87","nodeType":"YulIdentifier","src":"3274:5:87"},{"kind":"number","nativeSrc":"3281:8:87","nodeType":"YulLiteral","src":"3281:8:87","type":"","value":"0xffffff"}],"functionName":{"name":"and","nativeSrc":"3270:3:87","nodeType":"YulIdentifier","src":"3270:3:87"},"nativeSrc":"3270:20:87","nodeType":"YulFunctionCall","src":"3270:20:87"}],"functionName":{"name":"eq","nativeSrc":"3260:2:87","nodeType":"YulIdentifier","src":"3260:2:87"},"nativeSrc":"3260:31:87","nodeType":"YulFunctionCall","src":"3260:31:87"}],"functionName":{"name":"iszero","nativeSrc":"3253:6:87","nodeType":"YulIdentifier","src":"3253:6:87"},"nativeSrc":"3253:39:87","nodeType":"YulFunctionCall","src":"3253:39:87"},"nativeSrc":"3250:59:87","nodeType":"YulIf","src":"3250:59:87"},{"expression":{"arguments":[{"name":"memPtr","nativeSrc":"3325:6:87","nodeType":"YulIdentifier","src":"3325:6:87"},{"name":"value","nativeSrc":"3333:5:87","nodeType":"YulIdentifier","src":"3333:5:87"}],"functionName":{"name":"mstore","nativeSrc":"3318:6:87","nodeType":"YulIdentifier","src":"3318:6:87"},"nativeSrc":"3318:21:87","nodeType":"YulFunctionCall","src":"3318:21:87"},"nativeSrc":"3318:21:87","nodeType":"YulExpressionStatement","src":"3318:21:87"},{"nativeSrc":"3348:47:87","nodeType":"YulVariableDeclaration","src":"3348:47:87","value":{"arguments":[{"arguments":[{"name":"headStart","nativeSrc":"3380:9:87","nodeType":"YulIdentifier","src":"3380:9:87"},{"kind":"number","nativeSrc":"3391:2:87","nodeType":"YulLiteral","src":"3391:2:87","type":"","value":"32"}],"functionName":{"name":"add","nativeSrc":"3376:3:87","nodeType":"YulIdentifier","src":"3376:3:87"},"nativeSrc":"3376:18:87","nodeType":"YulFunctionCall","src":"3376:18:87"}],"functionName":{"name":"calldataload","nativeSrc":"3363:12:87","nodeType":"YulIdentifier","src":"3363:12:87"},"nativeSrc":"3363:32:87","nodeType":"YulFunctionCall","src":"3363:32:87"},"variables":[{"name":"value_1","nativeSrc":"3352:7:87","nodeType":"YulTypedName","src":"3352:7:87","type":""}]},{"expression":{"arguments":[{"name":"value_1","nativeSrc":"3429:7:87","nodeType":"YulIdentifier","src":"3429:7:87"}],"functionName":{"name":"validator_revert_address","nativeSrc":"3404:24:87","nodeType":"YulIdentifier","src":"3404:24:87"},"nativeSrc":"3404:33:87","nodeType":"YulFunctionCall","src":"3404:33:87"},"nativeSrc":"3404:33:87","nodeType":"YulExpressionStatement","src":"3404:33:87"},{"expression":{"arguments":[{"arguments":[{"name":"memPtr","nativeSrc":"3457:6:87","nodeType":"YulIdentifier","src":"3457:6:87"},{"kind":"number","nativeSrc":"3465:2:87","nodeType":"YulLiteral","src":"3465:2:87","type":"","value":"32"}],"functionName":{"name":"add","nativeSrc":"3453:3:87","nodeType":"YulIdentifier","src":"3453:3:87"},"nativeSrc":"3453:15:87","nodeType":"YulFunctionCall","src":"3453:15:87"},{"name":"value_1","nativeSrc":"3470:7:87","nodeType":"YulIdentifier","src":"3470:7:87"}],"functionName":{"name":"mstore","nativeSrc":"3446:6:87","nodeType":"YulIdentifier","src":"3446:6:87"},"nativeSrc":"3446:32:87","nodeType":"YulFunctionCall","src":"3446:32:87"},"nativeSrc":"3446:32:87","nodeType":"YulExpressionStatement","src":"3446:32:87"},{"nativeSrc":"3487:16:87","nodeType":"YulAssignment","src":"3487:16:87","value":{"name":"memPtr","nativeSrc":"3497:6:87","nodeType":"YulIdentifier","src":"3497:6:87"},"variableNames":[{"name":"value0","nativeSrc":"3487:6:87","nodeType":"YulIdentifier","src":"3487:6:87"}]}]},"name":"abi_decode_tuple_t_struct$_UniswapCustomParams_$1119_memory_ptr","nativeSrc":"2691:818:87","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nativeSrc":"2764:9:87","nodeType":"YulTypedName","src":"2764:9:87","type":""},{"name":"dataEnd","nativeSrc":"2775:7:87","nodeType":"YulTypedName","src":"2775:7:87","type":""}],"returnVariables":[{"name":"value0","nativeSrc":"2787:6:87","nodeType":"YulTypedName","src":"2787:6:87","type":""}],"src":"2691:818:87"},{"body":{"nativeSrc":"3558:60:87","nodeType":"YulBlock","src":"3558:60:87","statements":[{"expression":{"arguments":[{"name":"pos","nativeSrc":"3575:3:87","nodeType":"YulIdentifier","src":"3575:3:87"},{"arguments":[{"name":"value","nativeSrc":"3584:5:87","nodeType":"YulIdentifier","src":"3584:5:87"},{"arguments":[{"arguments":[{"kind":"number","nativeSrc":"3599:3:87","nodeType":"YulLiteral","src":"3599:3:87","type":"","value":"160"},{"kind":"number","nativeSrc":"3604:1:87","nodeType":"YulLiteral","src":"3604:1:87","type":"","value":"1"}],"functionName":{"name":"shl","nativeSrc":"3595:3:87","nodeType":"YulIdentifier","src":"3595:3:87"},"nativeSrc":"3595:11:87","nodeType":"YulFunctionCall","src":"3595:11:87"},{"kind":"number","nativeSrc":"3608:1:87","nodeType":"YulLiteral","src":"3608:1:87","type":"","value":"1"}],"functionName":{"name":"sub","nativeSrc":"3591:3:87","nodeType":"YulIdentifier","src":"3591:3:87"},"nativeSrc":"3591:19:87","nodeType":"YulFunctionCall","src":"3591:19:87"}],"functionName":{"name":"and","nativeSrc":"3580:3:87","nodeType":"YulIdentifier","src":"3580:3:87"},"nativeSrc":"3580:31:87","nodeType":"YulFunctionCall","src":"3580:31:87"}],"functionName":{"name":"mstore","nativeSrc":"3568:6:87","nodeType":"YulIdentifier","src":"3568:6:87"},"nativeSrc":"3568:44:87","nodeType":"YulFunctionCall","src":"3568:44:87"},"nativeSrc":"3568:44:87","nodeType":"YulExpressionStatement","src":"3568:44:87"}]},"name":"abi_encode_address","nativeSrc":"3514:104:87","nodeType":"YulFunctionDefinition","parameters":[{"name":"value","nativeSrc":"3542:5:87","nodeType":"YulTypedName","src":"3542:5:87","type":""},{"name":"pos","nativeSrc":"3549:3:87","nodeType":"YulTypedName","src":"3549:3:87","type":""}],"src":"3514:104:87"},{"body":{"nativeSrc":"3752:145:87","nodeType":"YulBlock","src":"3752:145:87","statements":[{"nativeSrc":"3762:26:87","nodeType":"YulAssignment","src":"3762:26:87","value":{"arguments":[{"name":"headStart","nativeSrc":"3774:9:87","nodeType":"YulIdentifier","src":"3774:9:87"},{"kind":"number","nativeSrc":"3785:2:87","nodeType":"YulLiteral","src":"3785:2:87","type":"","value":"64"}],"functionName":{"name":"add","nativeSrc":"3770:3:87","nodeType":"YulIdentifier","src":"3770:3:87"},"nativeSrc":"3770:18:87","nodeType":"YulFunctionCall","src":"3770:18:87"},"variableNames":[{"name":"tail","nativeSrc":"3762:4:87","nodeType":"YulIdentifier","src":"3762:4:87"}]},{"expression":{"arguments":[{"name":"headStart","nativeSrc":"3804:9:87","nodeType":"YulIdentifier","src":"3804:9:87"},{"arguments":[{"name":"value0","nativeSrc":"3819:6:87","nodeType":"YulIdentifier","src":"3819:6:87"},{"arguments":[{"arguments":[{"kind":"number","nativeSrc":"3835:3:87","nodeType":"YulLiteral","src":"3835:3:87","type":"","value":"160"},{"kind":"number","nativeSrc":"3840:1:87","nodeType":"YulLiteral","src":"3840:1:87","type":"","value":"1"}],"functionName":{"name":"shl","nativeSrc":"3831:3:87","nodeType":"YulIdentifier","src":"3831:3:87"},"nativeSrc":"3831:11:87","nodeType":"YulFunctionCall","src":"3831:11:87"},{"kind":"number","nativeSrc":"3844:1:87","nodeType":"YulLiteral","src":"3844:1:87","type":"","value":"1"}],"functionName":{"name":"sub","nativeSrc":"3827:3:87","nodeType":"YulIdentifier","src":"3827:3:87"},"nativeSrc":"3827:19:87","nodeType":"YulFunctionCall","src":"3827:19:87"}],"functionName":{"name":"and","nativeSrc":"3815:3:87","nodeType":"YulIdentifier","src":"3815:3:87"},"nativeSrc":"3815:32:87","nodeType":"YulFunctionCall","src":"3815:32:87"}],"functionName":{"name":"mstore","nativeSrc":"3797:6:87","nodeType":"YulIdentifier","src":"3797:6:87"},"nativeSrc":"3797:51:87","nodeType":"YulFunctionCall","src":"3797:51:87"},"nativeSrc":"3797:51:87","nodeType":"YulExpressionStatement","src":"3797:51:87"},{"expression":{"arguments":[{"arguments":[{"name":"headStart","nativeSrc":"3868:9:87","nodeType":"YulIdentifier","src":"3868:9:87"},{"kind":"number","nativeSrc":"3879:2:87","nodeType":"YulLiteral","src":"3879:2:87","type":"","value":"32"}],"functionName":{"name":"add","nativeSrc":"3864:3:87","nodeType":"YulIdentifier","src":"3864:3:87"},"nativeSrc":"3864:18:87","nodeType":"YulFunctionCall","src":"3864:18:87"},{"name":"value1","nativeSrc":"3884:6:87","nodeType":"YulIdentifier","src":"3884:6:87"}],"functionName":{"name":"mstore","nativeSrc":"3857:6:87","nodeType":"YulIdentifier","src":"3857:6:87"},"nativeSrc":"3857:34:87","nodeType":"YulFunctionCall","src":"3857:34:87"},"nativeSrc":"3857:34:87","nodeType":"YulExpressionStatement","src":"3857:34:87"}]},"name":"abi_encode_tuple_t_address_t_uint256__to_t_address_t_uint256__fromStack_reversed","nativeSrc":"3623:274:87","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nativeSrc":"3713:9:87","nodeType":"YulTypedName","src":"3713:9:87","type":""},{"name":"value1","nativeSrc":"3724:6:87","nodeType":"YulTypedName","src":"3724:6:87","type":""},{"name":"value0","nativeSrc":"3732:6:87","nodeType":"YulTypedName","src":"3732:6:87","type":""}],"returnVariables":[{"name":"tail","nativeSrc":"3743:4:87","nodeType":"YulTypedName","src":"3743:4:87","type":""}],"src":"3623:274:87"},{"body":{"nativeSrc":"3980:199:87","nodeType":"YulBlock","src":"3980:199:87","statements":[{"body":{"nativeSrc":"4026:16:87","nodeType":"YulBlock","src":"4026:16:87","statements":[{"expression":{"arguments":[{"kind":"number","nativeSrc":"4035:1:87","nodeType":"YulLiteral","src":"4035:1:87","type":"","value":"0"},{"kind":"number","nativeSrc":"4038:1:87","nodeType":"YulLiteral","src":"4038:1:87","type":"","value":"0"}],"functionName":{"name":"revert","nativeSrc":"4028:6:87","nodeType":"YulIdentifier","src":"4028:6:87"},"nativeSrc":"4028:12:87","nodeType":"YulFunctionCall","src":"4028:12:87"},"nativeSrc":"4028:12:87","nodeType":"YulExpressionStatement","src":"4028:12:87"}]},"condition":{"arguments":[{"arguments":[{"name":"dataEnd","nativeSrc":"4001:7:87","nodeType":"YulIdentifier","src":"4001:7:87"},{"name":"headStart","nativeSrc":"4010:9:87","nodeType":"YulIdentifier","src":"4010:9:87"}],"functionName":{"name":"sub","nativeSrc":"3997:3:87","nodeType":"YulIdentifier","src":"3997:3:87"},"nativeSrc":"3997:23:87","nodeType":"YulFunctionCall","src":"3997:23:87"},{"kind":"number","nativeSrc":"4022:2:87","nodeType":"YulLiteral","src":"4022:2:87","type":"","value":"32"}],"functionName":{"name":"slt","nativeSrc":"3993:3:87","nodeType":"YulIdentifier","src":"3993:3:87"},"nativeSrc":"3993:32:87","nodeType":"YulFunctionCall","src":"3993:32:87"},"nativeSrc":"3990:52:87","nodeType":"YulIf","src":"3990:52:87"},{"nativeSrc":"4051:29:87","nodeType":"YulVariableDeclaration","src":"4051:29:87","value":{"arguments":[{"name":"headStart","nativeSrc":"4070:9:87","nodeType":"YulIdentifier","src":"4070:9:87"}],"functionName":{"name":"mload","nativeSrc":"4064:5:87","nodeType":"YulIdentifier","src":"4064:5:87"},"nativeSrc":"4064:16:87","nodeType":"YulFunctionCall","src":"4064:16:87"},"variables":[{"name":"value","nativeSrc":"4055:5:87","nodeType":"YulTypedName","src":"4055:5:87","type":""}]},{"body":{"nativeSrc":"4133:16:87","nodeType":"YulBlock","src":"4133:16:87","statements":[{"expression":{"arguments":[{"kind":"number","nativeSrc":"4142:1:87","nodeType":"YulLiteral","src":"4142:1:87","type":"","value":"0"},{"kind":"number","nativeSrc":"4145:1:87","nodeType":"YulLiteral","src":"4145:1:87","type":"","value":"0"}],"functionName":{"name":"revert","nativeSrc":"4135:6:87","nodeType":"YulIdentifier","src":"4135:6:87"},"nativeSrc":"4135:12:87","nodeType":"YulFunctionCall","src":"4135:12:87"},"nativeSrc":"4135:12:87","nodeType":"YulExpressionStatement","src":"4135:12:87"}]},"condition":{"arguments":[{"arguments":[{"name":"value","nativeSrc":"4102:5:87","nodeType":"YulIdentifier","src":"4102:5:87"},{"arguments":[{"arguments":[{"name":"value","nativeSrc":"4123:5:87","nodeType":"YulIdentifier","src":"4123:5:87"}],"functionName":{"name":"iszero","nativeSrc":"4116:6:87","nodeType":"YulIdentifier","src":"4116:6:87"},"nativeSrc":"4116:13:87","nodeType":"YulFunctionCall","src":"4116:13:87"}],"functionName":{"name":"iszero","nativeSrc":"4109:6:87","nodeType":"YulIdentifier","src":"4109:6:87"},"nativeSrc":"4109:21:87","nodeType":"YulFunctionCall","src":"4109:21:87"}],"functionName":{"name":"eq","nativeSrc":"4099:2:87","nodeType":"YulIdentifier","src":"4099:2:87"},"nativeSrc":"4099:32:87","nodeType":"YulFunctionCall","src":"4099:32:87"}],"functionName":{"name":"iszero","nativeSrc":"4092:6:87","nodeType":"YulIdentifier","src":"4092:6:87"},"nativeSrc":"4092:40:87","nodeType":"YulFunctionCall","src":"4092:40:87"},"nativeSrc":"4089:60:87","nodeType":"YulIf","src":"4089:60:87"},{"nativeSrc":"4158:15:87","nodeType":"YulAssignment","src":"4158:15:87","value":{"name":"value","nativeSrc":"4168:5:87","nodeType":"YulIdentifier","src":"4168:5:87"},"variableNames":[{"name":"value0","nativeSrc":"4158:6:87","nodeType":"YulIdentifier","src":"4158:6:87"}]}]},"name":"abi_decode_tuple_t_bool_fromMemory","nativeSrc":"3902:277:87","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nativeSrc":"3946:9:87","nodeType":"YulTypedName","src":"3946:9:87","type":""},{"name":"dataEnd","nativeSrc":"3957:7:87","nodeType":"YulTypedName","src":"3957:7:87","type":""}],"returnVariables":[{"name":"value0","nativeSrc":"3969:6:87","nodeType":"YulTypedName","src":"3969:6:87","type":""}],"src":"3902:277:87"},{"body":{"nativeSrc":"4251:610:87","nodeType":"YulBlock","src":"4251:610:87","statements":[{"expression":{"arguments":[{"name":"pos","nativeSrc":"4268:3:87","nodeType":"YulIdentifier","src":"4268:3:87"},{"arguments":[{"arguments":[{"name":"value","nativeSrc":"4283:5:87","nodeType":"YulIdentifier","src":"4283:5:87"}],"functionName":{"name":"mload","nativeSrc":"4277:5:87","nodeType":"YulIdentifier","src":"4277:5:87"},"nativeSrc":"4277:12:87","nodeType":"YulFunctionCall","src":"4277:12:87"},{"arguments":[{"arguments":[{"kind":"number","nativeSrc":"4299:3:87","nodeType":"YulLiteral","src":"4299:3:87","type":"","value":"160"},{"kind":"number","nativeSrc":"4304:1:87","nodeType":"YulLiteral","src":"4304:1:87","type":"","value":"1"}],"functionName":{"name":"shl","nativeSrc":"4295:3:87","nodeType":"YulIdentifier","src":"4295:3:87"},"nativeSrc":"4295:11:87","nodeType":"YulFunctionCall","src":"4295:11:87"},{"kind":"number","nativeSrc":"4308:1:87","nodeType":"YulLiteral","src":"4308:1:87","type":"","value":"1"}],"functionName":{"name":"sub","nativeSrc":"4291:3:87","nodeType":"YulIdentifier","src":"4291:3:87"},"nativeSrc":"4291:19:87","nodeType":"YulFunctionCall","src":"4291:19:87"}],"functionName":{"name":"and","nativeSrc":"4273:3:87","nodeType":"YulIdentifier","src":"4273:3:87"},"nativeSrc":"4273:38:87","nodeType":"YulFunctionCall","src":"4273:38:87"}],"functionName":{"name":"mstore","nativeSrc":"4261:6:87","nodeType":"YulIdentifier","src":"4261:6:87"},"nativeSrc":"4261:51:87","nodeType":"YulFunctionCall","src":"4261:51:87"},"nativeSrc":"4261:51:87","nodeType":"YulExpressionStatement","src":"4261:51:87"},{"expression":{"arguments":[{"arguments":[{"name":"pos","nativeSrc":"4332:3:87","nodeType":"YulIdentifier","src":"4332:3:87"},{"kind":"number","nativeSrc":"4337:4:87","nodeType":"YulLiteral","src":"4337:4:87","type":"","value":"0x20"}],"functionName":{"name":"add","nativeSrc":"4328:3:87","nodeType":"YulIdentifier","src":"4328:3:87"},"nativeSrc":"4328:14:87","nodeType":"YulFunctionCall","src":"4328:14:87"},{"arguments":[{"arguments":[{"arguments":[{"name":"value","nativeSrc":"4358:5:87","nodeType":"YulIdentifier","src":"4358:5:87"},{"kind":"number","nativeSrc":"4365:4:87","nodeType":"YulLiteral","src":"4365:4:87","type":"","value":"0x20"}],"functionName":{"name":"add","nativeSrc":"4354:3:87","nodeType":"YulIdentifier","src":"4354:3:87"},"nativeSrc":"4354:16:87","nodeType":"YulFunctionCall","src":"4354:16:87"}],"functionName":{"name":"mload","nativeSrc":"4348:5:87","nodeType":"YulIdentifier","src":"4348:5:87"},"nativeSrc":"4348:23:87","nodeType":"YulFunctionCall","src":"4348:23:87"},{"arguments":[{"arguments":[{"kind":"number","nativeSrc":"4381:3:87","nodeType":"YulLiteral","src":"4381:3:87","type":"","value":"160"},{"kind":"number","nativeSrc":"4386:1:87","nodeType":"YulLiteral","src":"4386:1:87","type":"","value":"1"}],"functionName":{"name":"shl","nativeSrc":"4377:3:87","nodeType":"YulIdentifier","src":"4377:3:87"},"nativeSrc":"4377:11:87","nodeType":"YulFunctionCall","src":"4377:11:87"},{"kind":"number","nativeSrc":"4390:1:87","nodeType":"YulLiteral","src":"4390:1:87","type":"","value":"1"}],"functionName":{"name":"sub","nativeSrc":"4373:3:87","nodeType":"YulIdentifier","src":"4373:3:87"},"nativeSrc":"4373:19:87","nodeType":"YulFunctionCall","src":"4373:19:87"}],"functionName":{"name":"and","nativeSrc":"4344:3:87","nodeType":"YulIdentifier","src":"4344:3:87"},"nativeSrc":"4344:49:87","nodeType":"YulFunctionCall","src":"4344:49:87"}],"functionName":{"name":"mstore","nativeSrc":"4321:6:87","nodeType":"YulIdentifier","src":"4321:6:87"},"nativeSrc":"4321:73:87","nodeType":"YulFunctionCall","src":"4321:73:87"},"nativeSrc":"4321:73:87","nodeType":"YulExpressionStatement","src":"4321:73:87"},{"expression":{"arguments":[{"arguments":[{"name":"pos","nativeSrc":"4414:3:87","nodeType":"YulIdentifier","src":"4414:3:87"},{"kind":"number","nativeSrc":"4419:4:87","nodeType":"YulLiteral","src":"4419:4:87","type":"","value":"0x40"}],"functionName":{"name":"add","nativeSrc":"4410:3:87","nodeType":"YulIdentifier","src":"4410:3:87"},"nativeSrc":"4410:14:87","nodeType":"YulFunctionCall","src":"4410:14:87"},{"arguments":[{"arguments":[{"arguments":[{"name":"value","nativeSrc":"4440:5:87","nodeType":"YulIdentifier","src":"4440:5:87"},{"kind":"number","nativeSrc":"4447:4:87","nodeType":"YulLiteral","src":"4447:4:87","type":"","value":"0x40"}],"functionName":{"name":"add","nativeSrc":"4436:3:87","nodeType":"YulIdentifier","src":"4436:3:87"},"nativeSrc":"4436:16:87","nodeType":"YulFunctionCall","src":"4436:16:87"}],"functionName":{"name":"mload","nativeSrc":"4430:5:87","nodeType":"YulIdentifier","src":"4430:5:87"},"nativeSrc":"4430:23:87","nodeType":"YulFunctionCall","src":"4430:23:87"},{"kind":"number","nativeSrc":"4455:8:87","nodeType":"YulLiteral","src":"4455:8:87","type":"","value":"0xffffff"}],"functionName":{"name":"and","nativeSrc":"4426:3:87","nodeType":"YulIdentifier","src":"4426:3:87"},"nativeSrc":"4426:38:87","nodeType":"YulFunctionCall","src":"4426:38:87"}],"functionName":{"name":"mstore","nativeSrc":"4403:6:87","nodeType":"YulIdentifier","src":"4403:6:87"},"nativeSrc":"4403:62:87","nodeType":"YulFunctionCall","src":"4403:62:87"},"nativeSrc":"4403:62:87","nodeType":"YulExpressionStatement","src":"4403:62:87"},{"nativeSrc":"4474:43:87","nodeType":"YulVariableDeclaration","src":"4474:43:87","value":{"arguments":[{"arguments":[{"name":"value","nativeSrc":"4504:5:87","nodeType":"YulIdentifier","src":"4504:5:87"},{"kind":"number","nativeSrc":"4511:4:87","nodeType":"YulLiteral","src":"4511:4:87","type":"","value":"0x60"}],"functionName":{"name":"add","nativeSrc":"4500:3:87","nodeType":"YulIdentifier","src":"4500:3:87"},"nativeSrc":"4500:16:87","nodeType":"YulFunctionCall","src":"4500:16:87"}],"functionName":{"name":"mload","nativeSrc":"4494:5:87","nodeType":"YulIdentifier","src":"4494:5:87"},"nativeSrc":"4494:23:87","nodeType":"YulFunctionCall","src":"4494:23:87"},"variables":[{"name":"memberValue0","nativeSrc":"4478:12:87","nodeType":"YulTypedName","src":"4478:12:87","type":""}]},{"expression":{"arguments":[{"name":"memberValue0","nativeSrc":"4545:12:87","nodeType":"YulIdentifier","src":"4545:12:87"},{"arguments":[{"name":"pos","nativeSrc":"4563:3:87","nodeType":"YulIdentifier","src":"4563:3:87"},{"kind":"number","nativeSrc":"4568:4:87","nodeType":"YulLiteral","src":"4568:4:87","type":"","value":"0x60"}],"functionName":{"name":"add","nativeSrc":"4559:3:87","nodeType":"YulIdentifier","src":"4559:3:87"},"nativeSrc":"4559:14:87","nodeType":"YulFunctionCall","src":"4559:14:87"}],"functionName":{"name":"abi_encode_address","nativeSrc":"4526:18:87","nodeType":"YulIdentifier","src":"4526:18:87"},"nativeSrc":"4526:48:87","nodeType":"YulFunctionCall","src":"4526:48:87"},"nativeSrc":"4526:48:87","nodeType":"YulExpressionStatement","src":"4526:48:87"},{"expression":{"arguments":[{"arguments":[{"name":"pos","nativeSrc":"4594:3:87","nodeType":"YulIdentifier","src":"4594:3:87"},{"kind":"number","nativeSrc":"4599:4:87","nodeType":"YulLiteral","src":"4599:4:87","type":"","value":"0x80"}],"functionName":{"name":"add","nativeSrc":"4590:3:87","nodeType":"YulIdentifier","src":"4590:3:87"},"nativeSrc":"4590:14:87","nodeType":"YulFunctionCall","src":"4590:14:87"},{"arguments":[{"arguments":[{"name":"value","nativeSrc":"4616:5:87","nodeType":"YulIdentifier","src":"4616:5:87"},{"kind":"number","nativeSrc":"4623:4:87","nodeType":"YulLiteral","src":"4623:4:87","type":"","value":"0x80"}],"functionName":{"name":"add","nativeSrc":"4612:3:87","nodeType":"YulIdentifier","src":"4612:3:87"},"nativeSrc":"4612:16:87","nodeType":"YulFunctionCall","src":"4612:16:87"}],"functionName":{"name":"mload","nativeSrc":"4606:5:87","nodeType":"YulIdentifier","src":"4606:5:87"},"nativeSrc":"4606:23:87","nodeType":"YulFunctionCall","src":"4606:23:87"}],"functionName":{"name":"mstore","nativeSrc":"4583:6:87","nodeType":"YulIdentifier","src":"4583:6:87"},"nativeSrc":"4583:47:87","nodeType":"YulFunctionCall","src":"4583:47:87"},"nativeSrc":"4583:47:87","nodeType":"YulExpressionStatement","src":"4583:47:87"},{"expression":{"arguments":[{"arguments":[{"name":"pos","nativeSrc":"4650:3:87","nodeType":"YulIdentifier","src":"4650:3:87"},{"kind":"number","nativeSrc":"4655:4:87","nodeType":"YulLiteral","src":"4655:4:87","type":"","value":"0xa0"}],"functionName":{"name":"add","nativeSrc":"4646:3:87","nodeType":"YulIdentifier","src":"4646:3:87"},"nativeSrc":"4646:14:87","nodeType":"YulFunctionCall","src":"4646:14:87"},{"arguments":[{"arguments":[{"name":"value","nativeSrc":"4672:5:87","nodeType":"YulIdentifier","src":"4672:5:87"},{"kind":"number","nativeSrc":"4679:4:87","nodeType":"YulLiteral","src":"4679:4:87","type":"","value":"0xa0"}],"functionName":{"name":"add","nativeSrc":"4668:3:87","nodeType":"YulIdentifier","src":"4668:3:87"},"nativeSrc":"4668:16:87","nodeType":"YulFunctionCall","src":"4668:16:87"}],"functionName":{"name":"mload","nativeSrc":"4662:5:87","nodeType":"YulIdentifier","src":"4662:5:87"},"nativeSrc":"4662:23:87","nodeType":"YulFunctionCall","src":"4662:23:87"}],"functionName":{"name":"mstore","nativeSrc":"4639:6:87","nodeType":"YulIdentifier","src":"4639:6:87"},"nativeSrc":"4639:47:87","nodeType":"YulFunctionCall","src":"4639:47:87"},"nativeSrc":"4639:47:87","nodeType":"YulExpressionStatement","src":"4639:47:87"},{"expression":{"arguments":[{"arguments":[{"name":"pos","nativeSrc":"4706:3:87","nodeType":"YulIdentifier","src":"4706:3:87"},{"kind":"number","nativeSrc":"4711:4:87","nodeType":"YulLiteral","src":"4711:4:87","type":"","value":"0xc0"}],"functionName":{"name":"add","nativeSrc":"4702:3:87","nodeType":"YulIdentifier","src":"4702:3:87"},"nativeSrc":"4702:14:87","nodeType":"YulFunctionCall","src":"4702:14:87"},{"arguments":[{"arguments":[{"name":"value","nativeSrc":"4728:5:87","nodeType":"YulIdentifier","src":"4728:5:87"},{"kind":"number","nativeSrc":"4735:4:87","nodeType":"YulLiteral","src":"4735:4:87","type":"","value":"0xc0"}],"functionName":{"name":"add","nativeSrc":"4724:3:87","nodeType":"YulIdentifier","src":"4724:3:87"},"nativeSrc":"4724:16:87","nodeType":"YulFunctionCall","src":"4724:16:87"}],"functionName":{"name":"mload","nativeSrc":"4718:5:87","nodeType":"YulIdentifier","src":"4718:5:87"},"nativeSrc":"4718:23:87","nodeType":"YulFunctionCall","src":"4718:23:87"}],"functionName":{"name":"mstore","nativeSrc":"4695:6:87","nodeType":"YulIdentifier","src":"4695:6:87"},"nativeSrc":"4695:47:87","nodeType":"YulFunctionCall","src":"4695:47:87"},"nativeSrc":"4695:47:87","nodeType":"YulExpressionStatement","src":"4695:47:87"},{"nativeSrc":"4751:45:87","nodeType":"YulVariableDeclaration","src":"4751:45:87","value":{"arguments":[{"arguments":[{"name":"value","nativeSrc":"4783:5:87","nodeType":"YulIdentifier","src":"4783:5:87"},{"kind":"number","nativeSrc":"4790:4:87","nodeType":"YulLiteral","src":"4790:4:87","type":"","value":"0xe0"}],"functionName":{"name":"add","nativeSrc":"4779:3:87","nodeType":"YulIdentifier","src":"4779:3:87"},"nativeSrc":"4779:16:87","nodeType":"YulFunctionCall","src":"4779:16:87"}],"functionName":{"name":"mload","nativeSrc":"4773:5:87","nodeType":"YulIdentifier","src":"4773:5:87"},"nativeSrc":"4773:23:87","nodeType":"YulFunctionCall","src":"4773:23:87"},"variables":[{"name":"memberValue0_1","nativeSrc":"4755:14:87","nodeType":"YulTypedName","src":"4755:14:87","type":""}]},{"expression":{"arguments":[{"name":"memberValue0_1","nativeSrc":"4824:14:87","nodeType":"YulIdentifier","src":"4824:14:87"},{"arguments":[{"name":"pos","nativeSrc":"4844:3:87","nodeType":"YulIdentifier","src":"4844:3:87"},{"kind":"number","nativeSrc":"4849:4:87","nodeType":"YulLiteral","src":"4849:4:87","type":"","value":"0xe0"}],"functionName":{"name":"add","nativeSrc":"4840:3:87","nodeType":"YulIdentifier","src":"4840:3:87"},"nativeSrc":"4840:14:87","nodeType":"YulFunctionCall","src":"4840:14:87"}],"functionName":{"name":"abi_encode_address","nativeSrc":"4805:18:87","nodeType":"YulIdentifier","src":"4805:18:87"},"nativeSrc":"4805:50:87","nodeType":"YulFunctionCall","src":"4805:50:87"},"nativeSrc":"4805:50:87","nodeType":"YulExpressionStatement","src":"4805:50:87"}]},"name":"abi_encode_struct_ExactOutputSingleParams","nativeSrc":"4184:677:87","nodeType":"YulFunctionDefinition","parameters":[{"name":"value","nativeSrc":"4235:5:87","nodeType":"YulTypedName","src":"4235:5:87","type":""},{"name":"pos","nativeSrc":"4242:3:87","nodeType":"YulTypedName","src":"4242:3:87","type":""}],"src":"4184:677:87"},{"body":{"nativeSrc":"5051:112:87","nodeType":"YulBlock","src":"5051:112:87","statements":[{"nativeSrc":"5061:27:87","nodeType":"YulAssignment","src":"5061:27:87","value":{"arguments":[{"name":"headStart","nativeSrc":"5073:9:87","nodeType":"YulIdentifier","src":"5073:9:87"},{"kind":"number","nativeSrc":"5084:3:87","nodeType":"YulLiteral","src":"5084:3:87","type":"","value":"256"}],"functionName":{"name":"add","nativeSrc":"5069:3:87","nodeType":"YulIdentifier","src":"5069:3:87"},"nativeSrc":"5069:19:87","nodeType":"YulFunctionCall","src":"5069:19:87"},"variableNames":[{"name":"tail","nativeSrc":"5061:4:87","nodeType":"YulIdentifier","src":"5061:4:87"}]},{"expression":{"arguments":[{"name":"value0","nativeSrc":"5139:6:87","nodeType":"YulIdentifier","src":"5139:6:87"},{"name":"headStart","nativeSrc":"5147:9:87","nodeType":"YulIdentifier","src":"5147:9:87"}],"functionName":{"name":"abi_encode_struct_ExactOutputSingleParams","nativeSrc":"5097:41:87","nodeType":"YulIdentifier","src":"5097:41:87"},"nativeSrc":"5097:60:87","nodeType":"YulFunctionCall","src":"5097:60:87"},"nativeSrc":"5097:60:87","nodeType":"YulExpressionStatement","src":"5097:60:87"}]},"name":"abi_encode_tuple_t_struct$_ExactOutputSingleParams_$14849_memory_ptr__to_t_struct$_ExactOutputSingleParams_$14849_memory_ptr__fromStack_reversed","nativeSrc":"4866:297:87","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nativeSrc":"5020:9:87","nodeType":"YulTypedName","src":"5020:9:87","type":""},{"name":"value0","nativeSrc":"5031:6:87","nodeType":"YulTypedName","src":"5031:6:87","type":""}],"returnVariables":[{"name":"tail","nativeSrc":"5042:4:87","nodeType":"YulTypedName","src":"5042:4:87","type":""}],"src":"4866:297:87"},{"body":{"nativeSrc":"5249:103:87","nodeType":"YulBlock","src":"5249:103:87","statements":[{"body":{"nativeSrc":"5295:16:87","nodeType":"YulBlock","src":"5295:16:87","statements":[{"expression":{"arguments":[{"kind":"number","nativeSrc":"5304:1:87","nodeType":"YulLiteral","src":"5304:1:87","type":"","value":"0"},{"kind":"number","nativeSrc":"5307:1:87","nodeType":"YulLiteral","src":"5307:1:87","type":"","value":"0"}],"functionName":{"name":"revert","nativeSrc":"5297:6:87","nodeType":"YulIdentifier","src":"5297:6:87"},"nativeSrc":"5297:12:87","nodeType":"YulFunctionCall","src":"5297:12:87"},"nativeSrc":"5297:12:87","nodeType":"YulExpressionStatement","src":"5297:12:87"}]},"condition":{"arguments":[{"arguments":[{"name":"dataEnd","nativeSrc":"5270:7:87","nodeType":"YulIdentifier","src":"5270:7:87"},{"name":"headStart","nativeSrc":"5279:9:87","nodeType":"YulIdentifier","src":"5279:9:87"}],"functionName":{"name":"sub","nativeSrc":"5266:3:87","nodeType":"YulIdentifier","src":"5266:3:87"},"nativeSrc":"5266:23:87","nodeType":"YulFunctionCall","src":"5266:23:87"},{"kind":"number","nativeSrc":"5291:2:87","nodeType":"YulLiteral","src":"5291:2:87","type":"","value":"32"}],"functionName":{"name":"slt","nativeSrc":"5262:3:87","nodeType":"YulIdentifier","src":"5262:3:87"},"nativeSrc":"5262:32:87","nodeType":"YulFunctionCall","src":"5262:32:87"},"nativeSrc":"5259:52:87","nodeType":"YulIf","src":"5259:52:87"},{"nativeSrc":"5320:26:87","nodeType":"YulAssignment","src":"5320:26:87","value":{"arguments":[{"name":"headStart","nativeSrc":"5336:9:87","nodeType":"YulIdentifier","src":"5336:9:87"}],"functionName":{"name":"mload","nativeSrc":"5330:5:87","nodeType":"YulIdentifier","src":"5330:5:87"},"nativeSrc":"5330:16:87","nodeType":"YulFunctionCall","src":"5330:16:87"},"variableNames":[{"name":"value0","nativeSrc":"5320:6:87","nodeType":"YulIdentifier","src":"5320:6:87"}]}]},"name":"abi_decode_tuple_t_uint256_fromMemory","nativeSrc":"5168:184:87","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nativeSrc":"5215:9:87","nodeType":"YulTypedName","src":"5215:9:87","type":""},{"name":"dataEnd","nativeSrc":"5226:7:87","nodeType":"YulTypedName","src":"5226:7:87","type":""}],"returnVariables":[{"name":"value0","nativeSrc":"5238:6:87","nodeType":"YulTypedName","src":"5238:6:87","type":""}],"src":"5168:184:87"},{"body":{"nativeSrc":"5494:145:87","nodeType":"YulBlock","src":"5494:145:87","statements":[{"nativeSrc":"5504:26:87","nodeType":"YulAssignment","src":"5504:26:87","value":{"arguments":[{"name":"headStart","nativeSrc":"5516:9:87","nodeType":"YulIdentifier","src":"5516:9:87"},{"kind":"number","nativeSrc":"5527:2:87","nodeType":"YulLiteral","src":"5527:2:87","type":"","value":"64"}],"functionName":{"name":"add","nativeSrc":"5512:3:87","nodeType":"YulIdentifier","src":"5512:3:87"},"nativeSrc":"5512:18:87","nodeType":"YulFunctionCall","src":"5512:18:87"},"variableNames":[{"name":"tail","nativeSrc":"5504:4:87","nodeType":"YulIdentifier","src":"5504:4:87"}]},{"expression":{"arguments":[{"name":"headStart","nativeSrc":"5546:9:87","nodeType":"YulIdentifier","src":"5546:9:87"},{"arguments":[{"name":"value0","nativeSrc":"5561:6:87","nodeType":"YulIdentifier","src":"5561:6:87"},{"arguments":[{"arguments":[{"kind":"number","nativeSrc":"5577:3:87","nodeType":"YulLiteral","src":"5577:3:87","type":"","value":"160"},{"kind":"number","nativeSrc":"5582:1:87","nodeType":"YulLiteral","src":"5582:1:87","type":"","value":"1"}],"functionName":{"name":"shl","nativeSrc":"5573:3:87","nodeType":"YulIdentifier","src":"5573:3:87"},"nativeSrc":"5573:11:87","nodeType":"YulFunctionCall","src":"5573:11:87"},{"kind":"number","nativeSrc":"5586:1:87","nodeType":"YulLiteral","src":"5586:1:87","type":"","value":"1"}],"functionName":{"name":"sub","nativeSrc":"5569:3:87","nodeType":"YulIdentifier","src":"5569:3:87"},"nativeSrc":"5569:19:87","nodeType":"YulFunctionCall","src":"5569:19:87"}],"functionName":{"name":"and","nativeSrc":"5557:3:87","nodeType":"YulIdentifier","src":"5557:3:87"},"nativeSrc":"5557:32:87","nodeType":"YulFunctionCall","src":"5557:32:87"}],"functionName":{"name":"mstore","nativeSrc":"5539:6:87","nodeType":"YulIdentifier","src":"5539:6:87"},"nativeSrc":"5539:51:87","nodeType":"YulFunctionCall","src":"5539:51:87"},"nativeSrc":"5539:51:87","nodeType":"YulExpressionStatement","src":"5539:51:87"},{"expression":{"arguments":[{"arguments":[{"name":"headStart","nativeSrc":"5610:9:87","nodeType":"YulIdentifier","src":"5610:9:87"},{"kind":"number","nativeSrc":"5621:2:87","nodeType":"YulLiteral","src":"5621:2:87","type":"","value":"32"}],"functionName":{"name":"add","nativeSrc":"5606:3:87","nodeType":"YulIdentifier","src":"5606:3:87"},"nativeSrc":"5606:18:87","nodeType":"YulFunctionCall","src":"5606:18:87"},{"name":"value1","nativeSrc":"5626:6:87","nodeType":"YulIdentifier","src":"5626:6:87"}],"functionName":{"name":"mstore","nativeSrc":"5599:6:87","nodeType":"YulIdentifier","src":"5599:6:87"},"nativeSrc":"5599:34:87","nodeType":"YulFunctionCall","src":"5599:34:87"},"nativeSrc":"5599:34:87","nodeType":"YulExpressionStatement","src":"5599:34:87"}]},"name":"abi_encode_tuple_t_address_t_rational_0_by_1__to_t_address_t_uint256__fromStack_reversed","nativeSrc":"5357:282:87","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nativeSrc":"5455:9:87","nodeType":"YulTypedName","src":"5455:9:87","type":""},{"name":"value1","nativeSrc":"5466:6:87","nodeType":"YulTypedName","src":"5466:6:87","type":""},{"name":"value0","nativeSrc":"5474:6:87","nodeType":"YulTypedName","src":"5474:6:87","type":""}],"returnVariables":[{"name":"tail","nativeSrc":"5485:4:87","nodeType":"YulTypedName","src":"5485:4:87","type":""}],"src":"5357:282:87"},{"body":{"nativeSrc":"5773:119:87","nodeType":"YulBlock","src":"5773:119:87","statements":[{"nativeSrc":"5783:26:87","nodeType":"YulAssignment","src":"5783:26:87","value":{"arguments":[{"name":"headStart","nativeSrc":"5795:9:87","nodeType":"YulIdentifier","src":"5795:9:87"},{"kind":"number","nativeSrc":"5806:2:87","nodeType":"YulLiteral","src":"5806:2:87","type":"","value":"64"}],"functionName":{"name":"add","nativeSrc":"5791:3:87","nodeType":"YulIdentifier","src":"5791:3:87"},"nativeSrc":"5791:18:87","nodeType":"YulFunctionCall","src":"5791:18:87"},"variableNames":[{"name":"tail","nativeSrc":"5783:4:87","nodeType":"YulIdentifier","src":"5783:4:87"}]},{"expression":{"arguments":[{"name":"headStart","nativeSrc":"5825:9:87","nodeType":"YulIdentifier","src":"5825:9:87"},{"name":"value0","nativeSrc":"5836:6:87","nodeType":"YulIdentifier","src":"5836:6:87"}],"functionName":{"name":"mstore","nativeSrc":"5818:6:87","nodeType":"YulIdentifier","src":"5818:6:87"},"nativeSrc":"5818:25:87","nodeType":"YulFunctionCall","src":"5818:25:87"},"nativeSrc":"5818:25:87","nodeType":"YulExpressionStatement","src":"5818:25:87"},{"expression":{"arguments":[{"arguments":[{"name":"headStart","nativeSrc":"5863:9:87","nodeType":"YulIdentifier","src":"5863:9:87"},{"kind":"number","nativeSrc":"5874:2:87","nodeType":"YulLiteral","src":"5874:2:87","type":"","value":"32"}],"functionName":{"name":"add","nativeSrc":"5859:3:87","nodeType":"YulIdentifier","src":"5859:3:87"},"nativeSrc":"5859:18:87","nodeType":"YulFunctionCall","src":"5859:18:87"},{"name":"value1","nativeSrc":"5879:6:87","nodeType":"YulIdentifier","src":"5879:6:87"}],"functionName":{"name":"mstore","nativeSrc":"5852:6:87","nodeType":"YulIdentifier","src":"5852:6:87"},"nativeSrc":"5852:34:87","nodeType":"YulFunctionCall","src":"5852:34:87"},"nativeSrc":"5852:34:87","nodeType":"YulExpressionStatement","src":"5852:34:87"}]},"name":"abi_encode_tuple_t_uint256_t_uint256__to_t_uint256_t_uint256__fromStack_reversed","nativeSrc":"5644:248:87","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nativeSrc":"5734:9:87","nodeType":"YulTypedName","src":"5734:9:87","type":""},{"name":"value1","nativeSrc":"5745:6:87","nodeType":"YulTypedName","src":"5745:6:87","type":""},{"name":"value0","nativeSrc":"5753:6:87","nodeType":"YulTypedName","src":"5753:6:87","type":""}],"returnVariables":[{"name":"tail","nativeSrc":"5764:4:87","nodeType":"YulTypedName","src":"5764:4:87","type":""}],"src":"5644:248:87"},{"body":{"nativeSrc":"5929:95:87","nodeType":"YulBlock","src":"5929:95:87","statements":[{"expression":{"arguments":[{"kind":"number","nativeSrc":"5946:1:87","nodeType":"YulLiteral","src":"5946:1:87","type":"","value":"0"},{"arguments":[{"kind":"number","nativeSrc":"5953:3:87","nodeType":"YulLiteral","src":"5953:3:87","type":"","value":"224"},{"kind":"number","nativeSrc":"5958:10:87","nodeType":"YulLiteral","src":"5958:10:87","type":"","value":"0x4e487b71"}],"functionName":{"name":"shl","nativeSrc":"5949:3:87","nodeType":"YulIdentifier","src":"5949:3:87"},"nativeSrc":"5949:20:87","nodeType":"YulFunctionCall","src":"5949:20:87"}],"functionName":{"name":"mstore","nativeSrc":"5939:6:87","nodeType":"YulIdentifier","src":"5939:6:87"},"nativeSrc":"5939:31:87","nodeType":"YulFunctionCall","src":"5939:31:87"},"nativeSrc":"5939:31:87","nodeType":"YulExpressionStatement","src":"5939:31:87"},{"expression":{"arguments":[{"kind":"number","nativeSrc":"5986:1:87","nodeType":"YulLiteral","src":"5986:1:87","type":"","value":"4"},{"kind":"number","nativeSrc":"5989:4:87","nodeType":"YulLiteral","src":"5989:4:87","type":"","value":"0x11"}],"functionName":{"name":"mstore","nativeSrc":"5979:6:87","nodeType":"YulIdentifier","src":"5979:6:87"},"nativeSrc":"5979:15:87","nodeType":"YulFunctionCall","src":"5979:15:87"},"nativeSrc":"5979:15:87","nodeType":"YulExpressionStatement","src":"5979:15:87"},{"expression":{"arguments":[{"kind":"number","nativeSrc":"6010:1:87","nodeType":"YulLiteral","src":"6010:1:87","type":"","value":"0"},{"kind":"number","nativeSrc":"6013:4:87","nodeType":"YulLiteral","src":"6013:4:87","type":"","value":"0x24"}],"functionName":{"name":"revert","nativeSrc":"6003:6:87","nodeType":"YulIdentifier","src":"6003:6:87"},"nativeSrc":"6003:15:87","nodeType":"YulFunctionCall","src":"6003:15:87"},"nativeSrc":"6003:15:87","nodeType":"YulExpressionStatement","src":"6003:15:87"}]},"name":"panic_error_0x11","nativeSrc":"5897:127:87","nodeType":"YulFunctionDefinition","src":"5897:127:87"},{"body":{"nativeSrc":"6078:79:87","nodeType":"YulBlock","src":"6078:79:87","statements":[{"nativeSrc":"6088:17:87","nodeType":"YulAssignment","src":"6088:17:87","value":{"arguments":[{"name":"x","nativeSrc":"6100:1:87","nodeType":"YulIdentifier","src":"6100:1:87"},{"name":"y","nativeSrc":"6103:1:87","nodeType":"YulIdentifier","src":"6103:1:87"}],"functionName":{"name":"sub","nativeSrc":"6096:3:87","nodeType":"YulIdentifier","src":"6096:3:87"},"nativeSrc":"6096:9:87","nodeType":"YulFunctionCall","src":"6096:9:87"},"variableNames":[{"name":"diff","nativeSrc":"6088:4:87","nodeType":"YulIdentifier","src":"6088:4:87"}]},{"body":{"nativeSrc":"6129:22:87","nodeType":"YulBlock","src":"6129:22:87","statements":[{"expression":{"arguments":[],"functionName":{"name":"panic_error_0x11","nativeSrc":"6131:16:87","nodeType":"YulIdentifier","src":"6131:16:87"},"nativeSrc":"6131:18:87","nodeType":"YulFunctionCall","src":"6131:18:87"},"nativeSrc":"6131:18:87","nodeType":"YulExpressionStatement","src":"6131:18:87"}]},"condition":{"arguments":[{"name":"diff","nativeSrc":"6120:4:87","nodeType":"YulIdentifier","src":"6120:4:87"},{"name":"x","nativeSrc":"6126:1:87","nodeType":"YulIdentifier","src":"6126:1:87"}],"functionName":{"name":"gt","nativeSrc":"6117:2:87","nodeType":"YulIdentifier","src":"6117:2:87"},"nativeSrc":"6117:11:87","nodeType":"YulFunctionCall","src":"6117:11:87"},"nativeSrc":"6114:37:87","nodeType":"YulIf","src":"6114:37:87"}]},"name":"checked_sub_t_uint256","nativeSrc":"6029:128:87","nodeType":"YulFunctionDefinition","parameters":[{"name":"x","nativeSrc":"6060:1:87","nodeType":"YulTypedName","src":"6060:1:87","type":""},{"name":"y","nativeSrc":"6063:1:87","nodeType":"YulTypedName","src":"6063:1:87","type":""}],"returnVariables":[{"name":"diff","nativeSrc":"6069:4:87","nodeType":"YulTypedName","src":"6069:4:87","type":""}],"src":"6029:128:87"},{"body":{"nativeSrc":"6210:77:87","nodeType":"YulBlock","src":"6210:77:87","statements":[{"nativeSrc":"6220:16:87","nodeType":"YulAssignment","src":"6220:16:87","value":{"arguments":[{"name":"x","nativeSrc":"6231:1:87","nodeType":"YulIdentifier","src":"6231:1:87"},{"name":"y","nativeSrc":"6234:1:87","nodeType":"YulIdentifier","src":"6234:1:87"}],"functionName":{"name":"add","nativeSrc":"6227:3:87","nodeType":"YulIdentifier","src":"6227:3:87"},"nativeSrc":"6227:9:87","nodeType":"YulFunctionCall","src":"6227:9:87"},"variableNames":[{"name":"sum","nativeSrc":"6220:3:87","nodeType":"YulIdentifier","src":"6220:3:87"}]},{"body":{"nativeSrc":"6259:22:87","nodeType":"YulBlock","src":"6259:22:87","statements":[{"expression":{"arguments":[],"functionName":{"name":"panic_error_0x11","nativeSrc":"6261:16:87","nodeType":"YulIdentifier","src":"6261:16:87"},"nativeSrc":"6261:18:87","nodeType":"YulFunctionCall","src":"6261:18:87"},"nativeSrc":"6261:18:87","nodeType":"YulExpressionStatement","src":"6261:18:87"}]},"condition":{"arguments":[{"name":"x","nativeSrc":"6251:1:87","nodeType":"YulIdentifier","src":"6251:1:87"},{"name":"sum","nativeSrc":"6254:3:87","nodeType":"YulIdentifier","src":"6254:3:87"}],"functionName":{"name":"gt","nativeSrc":"6248:2:87","nodeType":"YulIdentifier","src":"6248:2:87"},"nativeSrc":"6248:10:87","nodeType":"YulFunctionCall","src":"6248:10:87"},"nativeSrc":"6245:36:87","nodeType":"YulIf","src":"6245:36:87"}]},"name":"checked_add_t_uint256","nativeSrc":"6162:125:87","nodeType":"YulFunctionDefinition","parameters":[{"name":"x","nativeSrc":"6193:1:87","nodeType":"YulTypedName","src":"6193:1:87","type":""},{"name":"y","nativeSrc":"6196:1:87","nodeType":"YulTypedName","src":"6196:1:87","type":""}],"returnVariables":[{"name":"sum","nativeSrc":"6202:3:87","nodeType":"YulTypedName","src":"6202:3:87","type":""}],"src":"6162:125:87"},{"body":{"nativeSrc":"6339:88:87","nodeType":"YulBlock","src":"6339:88:87","statements":[{"body":{"nativeSrc":"6370:22:87","nodeType":"YulBlock","src":"6370:22:87","statements":[{"expression":{"arguments":[],"functionName":{"name":"panic_error_0x11","nativeSrc":"6372:16:87","nodeType":"YulIdentifier","src":"6372:16:87"},"nativeSrc":"6372:18:87","nodeType":"YulFunctionCall","src":"6372:18:87"},"nativeSrc":"6372:18:87","nodeType":"YulExpressionStatement","src":"6372:18:87"}]},"condition":{"arguments":[{"name":"value","nativeSrc":"6355:5:87","nodeType":"YulIdentifier","src":"6355:5:87"},{"arguments":[{"kind":"number","nativeSrc":"6366:1:87","nodeType":"YulLiteral","src":"6366:1:87","type":"","value":"0"}],"functionName":{"name":"not","nativeSrc":"6362:3:87","nodeType":"YulIdentifier","src":"6362:3:87"},"nativeSrc":"6362:6:87","nodeType":"YulFunctionCall","src":"6362:6:87"}],"functionName":{"name":"eq","nativeSrc":"6352:2:87","nodeType":"YulIdentifier","src":"6352:2:87"},"nativeSrc":"6352:17:87","nodeType":"YulFunctionCall","src":"6352:17:87"},"nativeSrc":"6349:43:87","nodeType":"YulIf","src":"6349:43:87"},{"nativeSrc":"6401:20:87","nodeType":"YulAssignment","src":"6401:20:87","value":{"arguments":[{"name":"value","nativeSrc":"6412:5:87","nodeType":"YulIdentifier","src":"6412:5:87"},{"kind":"number","nativeSrc":"6419:1:87","nodeType":"YulLiteral","src":"6419:1:87","type":"","value":"1"}],"functionName":{"name":"add","nativeSrc":"6408:3:87","nodeType":"YulIdentifier","src":"6408:3:87"},"nativeSrc":"6408:13:87","nodeType":"YulFunctionCall","src":"6408:13:87"},"variableNames":[{"name":"ret","nativeSrc":"6401:3:87","nodeType":"YulIdentifier","src":"6401:3:87"}]}]},"name":"increment_t_uint256","nativeSrc":"6292:135:87","nodeType":"YulFunctionDefinition","parameters":[{"name":"value","nativeSrc":"6321:5:87","nodeType":"YulTypedName","src":"6321:5:87","type":""}],"returnVariables":[{"name":"ret","nativeSrc":"6331:3:87","nodeType":"YulTypedName","src":"6331:3:87","type":""}],"src":"6292:135:87"},{"body":{"nativeSrc":"6615:112:87","nodeType":"YulBlock","src":"6615:112:87","statements":[{"nativeSrc":"6625:27:87","nodeType":"YulAssignment","src":"6625:27:87","value":{"arguments":[{"name":"headStart","nativeSrc":"6637:9:87","nodeType":"YulIdentifier","src":"6637:9:87"},{"kind":"number","nativeSrc":"6648:3:87","nodeType":"YulLiteral","src":"6648:3:87","type":"","value":"256"}],"functionName":{"name":"add","nativeSrc":"6633:3:87","nodeType":"YulIdentifier","src":"6633:3:87"},"nativeSrc":"6633:19:87","nodeType":"YulFunctionCall","src":"6633:19:87"},"variableNames":[{"name":"tail","nativeSrc":"6625:4:87","nodeType":"YulIdentifier","src":"6625:4:87"}]},{"expression":{"arguments":[{"name":"value0","nativeSrc":"6703:6:87","nodeType":"YulIdentifier","src":"6703:6:87"},{"name":"headStart","nativeSrc":"6711:9:87","nodeType":"YulIdentifier","src":"6711:9:87"}],"functionName":{"name":"abi_encode_struct_ExactOutputSingleParams","nativeSrc":"6661:41:87","nodeType":"YulIdentifier","src":"6661:41:87"},"nativeSrc":"6661:60:87","nodeType":"YulFunctionCall","src":"6661:60:87"},"nativeSrc":"6661:60:87","nodeType":"YulExpressionStatement","src":"6661:60:87"}]},"name":"abi_encode_tuple_t_struct$_ExactInputSingleParams_$14803_memory_ptr__to_t_struct$_ExactInputSingleParams_$14803_memory_ptr__fromStack_reversed","nativeSrc":"6432:295:87","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nativeSrc":"6584:9:87","nodeType":"YulTypedName","src":"6584:9:87","type":""},{"name":"value0","nativeSrc":"6595:6:87","nodeType":"YulTypedName","src":"6595:6:87","type":""}],"returnVariables":[{"name":"tail","nativeSrc":"6606:4:87","nodeType":"YulTypedName","src":"6606:4:87","type":""}],"src":"6432:295:87"},{"body":{"nativeSrc":"6861:171:87","nodeType":"YulBlock","src":"6861:171:87","statements":[{"nativeSrc":"6871:26:87","nodeType":"YulAssignment","src":"6871:26:87","value":{"arguments":[{"name":"headStart","nativeSrc":"6883:9:87","nodeType":"YulIdentifier","src":"6883:9:87"},{"kind":"number","nativeSrc":"6894:2:87","nodeType":"YulLiteral","src":"6894:2:87","type":"","value":"64"}],"functionName":{"name":"add","nativeSrc":"6879:3:87","nodeType":"YulIdentifier","src":"6879:3:87"},"nativeSrc":"6879:18:87","nodeType":"YulFunctionCall","src":"6879:18:87"},"variableNames":[{"name":"tail","nativeSrc":"6871:4:87","nodeType":"YulIdentifier","src":"6871:4:87"}]},{"expression":{"arguments":[{"name":"headStart","nativeSrc":"6913:9:87","nodeType":"YulIdentifier","src":"6913:9:87"},{"arguments":[{"name":"value0","nativeSrc":"6928:6:87","nodeType":"YulIdentifier","src":"6928:6:87"},{"arguments":[{"arguments":[{"kind":"number","nativeSrc":"6944:3:87","nodeType":"YulLiteral","src":"6944:3:87","type":"","value":"160"},{"kind":"number","nativeSrc":"6949:1:87","nodeType":"YulLiteral","src":"6949:1:87","type":"","value":"1"}],"functionName":{"name":"shl","nativeSrc":"6940:3:87","nodeType":"YulIdentifier","src":"6940:3:87"},"nativeSrc":"6940:11:87","nodeType":"YulFunctionCall","src":"6940:11:87"},{"kind":"number","nativeSrc":"6953:1:87","nodeType":"YulLiteral","src":"6953:1:87","type":"","value":"1"}],"functionName":{"name":"sub","nativeSrc":"6936:3:87","nodeType":"YulIdentifier","src":"6936:3:87"},"nativeSrc":"6936:19:87","nodeType":"YulFunctionCall","src":"6936:19:87"}],"functionName":{"name":"and","nativeSrc":"6924:3:87","nodeType":"YulIdentifier","src":"6924:3:87"},"nativeSrc":"6924:32:87","nodeType":"YulFunctionCall","src":"6924:32:87"}],"functionName":{"name":"mstore","nativeSrc":"6906:6:87","nodeType":"YulIdentifier","src":"6906:6:87"},"nativeSrc":"6906:51:87","nodeType":"YulFunctionCall","src":"6906:51:87"},"nativeSrc":"6906:51:87","nodeType":"YulExpressionStatement","src":"6906:51:87"},{"expression":{"arguments":[{"arguments":[{"name":"headStart","nativeSrc":"6977:9:87","nodeType":"YulIdentifier","src":"6977:9:87"},{"kind":"number","nativeSrc":"6988:2:87","nodeType":"YulLiteral","src":"6988:2:87","type":"","value":"32"}],"functionName":{"name":"add","nativeSrc":"6973:3:87","nodeType":"YulIdentifier","src":"6973:3:87"},"nativeSrc":"6973:18:87","nodeType":"YulFunctionCall","src":"6973:18:87"},{"arguments":[{"name":"value1","nativeSrc":"6997:6:87","nodeType":"YulIdentifier","src":"6997:6:87"},{"arguments":[{"arguments":[{"kind":"number","nativeSrc":"7013:3:87","nodeType":"YulLiteral","src":"7013:3:87","type":"","value":"160"},{"kind":"number","nativeSrc":"7018:1:87","nodeType":"YulLiteral","src":"7018:1:87","type":"","value":"1"}],"functionName":{"name":"shl","nativeSrc":"7009:3:87","nodeType":"YulIdentifier","src":"7009:3:87"},"nativeSrc":"7009:11:87","nodeType":"YulFunctionCall","src":"7009:11:87"},{"kind":"number","nativeSrc":"7022:1:87","nodeType":"YulLiteral","src":"7022:1:87","type":"","value":"1"}],"functionName":{"name":"sub","nativeSrc":"7005:3:87","nodeType":"YulIdentifier","src":"7005:3:87"},"nativeSrc":"7005:19:87","nodeType":"YulFunctionCall","src":"7005:19:87"}],"functionName":{"name":"and","nativeSrc":"6993:3:87","nodeType":"YulIdentifier","src":"6993:3:87"},"nativeSrc":"6993:32:87","nodeType":"YulFunctionCall","src":"6993:32:87"}],"functionName":{"name":"mstore","nativeSrc":"6966:6:87","nodeType":"YulIdentifier","src":"6966:6:87"},"nativeSrc":"6966:60:87","nodeType":"YulFunctionCall","src":"6966:60:87"},"nativeSrc":"6966:60:87","nodeType":"YulExpressionStatement","src":"6966:60:87"}]},"name":"abi_encode_tuple_t_address_t_address__to_t_address_t_address__fromStack_reversed","nativeSrc":"6732:300:87","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nativeSrc":"6822:9:87","nodeType":"YulTypedName","src":"6822:9:87","type":""},{"name":"value1","nativeSrc":"6833:6:87","nodeType":"YulTypedName","src":"6833:6:87","type":""},{"name":"value0","nativeSrc":"6841:6:87","nodeType":"YulTypedName","src":"6841:6:87","type":""}],"returnVariables":[{"name":"tail","nativeSrc":"6852:4:87","nodeType":"YulTypedName","src":"6852:4:87","type":""}],"src":"6732:300:87"},{"body":{"nativeSrc":"7087:279:87","nodeType":"YulBlock","src":"7087:279:87","statements":[{"nativeSrc":"7097:10:87","nodeType":"YulAssignment","src":"7097:10:87","value":{"name":"pos","nativeSrc":"7104:3:87","nodeType":"YulIdentifier","src":"7104:3:87"},"variableNames":[{"name":"pos","nativeSrc":"7097:3:87","nodeType":"YulIdentifier","src":"7097:3:87"}]},{"nativeSrc":"7116:19:87","nodeType":"YulVariableDeclaration","src":"7116:19:87","value":{"name":"value","nativeSrc":"7130:5:87","nodeType":"YulIdentifier","src":"7130:5:87"},"variables":[{"name":"srcPtr","nativeSrc":"7120:6:87","nodeType":"YulTypedName","src":"7120:6:87","type":""}]},{"nativeSrc":"7144:10:87","nodeType":"YulVariableDeclaration","src":"7144:10:87","value":{"kind":"number","nativeSrc":"7153:1:87","nodeType":"YulLiteral","src":"7153:1:87","type":"","value":"0"},"variables":[{"name":"i","nativeSrc":"7148:1:87","nodeType":"YulTypedName","src":"7148:1:87","type":""}]},{"body":{"nativeSrc":"7210:150:87","nodeType":"YulBlock","src":"7210:150:87","statements":[{"expression":{"arguments":[{"name":"pos","nativeSrc":"7231:3:87","nodeType":"YulIdentifier","src":"7231:3:87"},{"arguments":[{"arguments":[{"name":"srcPtr","nativeSrc":"7246:6:87","nodeType":"YulIdentifier","src":"7246:6:87"}],"functionName":{"name":"mload","nativeSrc":"7240:5:87","nodeType":"YulIdentifier","src":"7240:5:87"},"nativeSrc":"7240:13:87","nodeType":"YulFunctionCall","src":"7240:13:87"},{"arguments":[{"arguments":[{"kind":"number","nativeSrc":"7263:3:87","nodeType":"YulLiteral","src":"7263:3:87","type":"","value":"160"},{"kind":"number","nativeSrc":"7268:1:87","nodeType":"YulLiteral","src":"7268:1:87","type":"","value":"1"}],"functionName":{"name":"shl","nativeSrc":"7259:3:87","nodeType":"YulIdentifier","src":"7259:3:87"},"nativeSrc":"7259:11:87","nodeType":"YulFunctionCall","src":"7259:11:87"},{"kind":"number","nativeSrc":"7272:1:87","nodeType":"YulLiteral","src":"7272:1:87","type":"","value":"1"}],"functionName":{"name":"sub","nativeSrc":"7255:3:87","nodeType":"YulIdentifier","src":"7255:3:87"},"nativeSrc":"7255:19:87","nodeType":"YulFunctionCall","src":"7255:19:87"}],"functionName":{"name":"and","nativeSrc":"7236:3:87","nodeType":"YulIdentifier","src":"7236:3:87"},"nativeSrc":"7236:39:87","nodeType":"YulFunctionCall","src":"7236:39:87"}],"functionName":{"name":"mstore","nativeSrc":"7224:6:87","nodeType":"YulIdentifier","src":"7224:6:87"},"nativeSrc":"7224:52:87","nodeType":"YulFunctionCall","src":"7224:52:87"},"nativeSrc":"7224:52:87","nodeType":"YulExpressionStatement","src":"7224:52:87"},{"nativeSrc":"7289:21:87","nodeType":"YulAssignment","src":"7289:21:87","value":{"arguments":[{"name":"pos","nativeSrc":"7300:3:87","nodeType":"YulIdentifier","src":"7300:3:87"},{"kind":"number","nativeSrc":"7305:4:87","nodeType":"YulLiteral","src":"7305:4:87","type":"","value":"0x20"}],"functionName":{"name":"add","nativeSrc":"7296:3:87","nodeType":"YulIdentifier","src":"7296:3:87"},"nativeSrc":"7296:14:87","nodeType":"YulFunctionCall","src":"7296:14:87"},"variableNames":[{"name":"pos","nativeSrc":"7289:3:87","nodeType":"YulIdentifier","src":"7289:3:87"}]},{"nativeSrc":"7323:27:87","nodeType":"YulAssignment","src":"7323:27:87","value":{"arguments":[{"name":"srcPtr","nativeSrc":"7337:6:87","nodeType":"YulIdentifier","src":"7337:6:87"},{"kind":"number","nativeSrc":"7345:4:87","nodeType":"YulLiteral","src":"7345:4:87","type":"","value":"0x20"}],"functionName":{"name":"add","nativeSrc":"7333:3:87","nodeType":"YulIdentifier","src":"7333:3:87"},"nativeSrc":"7333:17:87","nodeType":"YulFunctionCall","src":"7333:17:87"},"variableNames":[{"name":"srcPtr","nativeSrc":"7323:6:87","nodeType":"YulIdentifier","src":"7323:6:87"}]}]},"condition":{"arguments":[{"name":"i","nativeSrc":"7174:1:87","nodeType":"YulIdentifier","src":"7174:1:87"},{"kind":"number","nativeSrc":"7177:4:87","nodeType":"YulLiteral","src":"7177:4:87","type":"","value":"0x0b"}],"functionName":{"name":"lt","nativeSrc":"7171:2:87","nodeType":"YulIdentifier","src":"7171:2:87"},"nativeSrc":"7171:11:87","nodeType":"YulFunctionCall","src":"7171:11:87"},"nativeSrc":"7163:197:87","nodeType":"YulForLoop","post":{"nativeSrc":"7183:18:87","nodeType":"YulBlock","src":"7183:18:87","statements":[{"nativeSrc":"7185:14:87","nodeType":"YulAssignment","src":"7185:14:87","value":{"arguments":[{"name":"i","nativeSrc":"7194:1:87","nodeType":"YulIdentifier","src":"7194:1:87"},{"kind":"number","nativeSrc":"7197:1:87","nodeType":"YulLiteral","src":"7197:1:87","type":"","value":"1"}],"functionName":{"name":"add","nativeSrc":"7190:3:87","nodeType":"YulIdentifier","src":"7190:3:87"},"nativeSrc":"7190:9:87","nodeType":"YulFunctionCall","src":"7190:9:87"},"variableNames":[{"name":"i","nativeSrc":"7185:1:87","nodeType":"YulIdentifier","src":"7185:1:87"}]}]},"pre":{"nativeSrc":"7167:3:87","nodeType":"YulBlock","src":"7167:3:87","statements":[]},"src":"7163:197:87"}]},"name":"abi_encode_array_address","nativeSrc":"7037:329:87","nodeType":"YulFunctionDefinition","parameters":[{"name":"value","nativeSrc":"7071:5:87","nodeType":"YulTypedName","src":"7071:5:87","type":""},{"name":"pos","nativeSrc":"7078:3:87","nodeType":"YulTypedName","src":"7078:3:87","type":""}],"src":"7037:329:87"},{"body":{"nativeSrc":"7427:651:87","nodeType":"YulBlock","src":"7427:651:87","statements":[{"nativeSrc":"7437:10:87","nodeType":"YulAssignment","src":"7437:10:87","value":{"name":"pos","nativeSrc":"7444:3:87","nodeType":"YulIdentifier","src":"7444:3:87"},"variableNames":[{"name":"pos","nativeSrc":"7437:3:87","nodeType":"YulIdentifier","src":"7437:3:87"}]},{"nativeSrc":"7456:19:87","nodeType":"YulVariableDeclaration","src":"7456:19:87","value":{"name":"value","nativeSrc":"7470:5:87","nodeType":"YulIdentifier","src":"7470:5:87"},"variables":[{"name":"srcPtr","nativeSrc":"7460:6:87","nodeType":"YulTypedName","src":"7460:6:87","type":""}]},{"nativeSrc":"7484:10:87","nodeType":"YulVariableDeclaration","src":"7484:10:87","value":{"kind":"number","nativeSrc":"7493:1:87","nodeType":"YulLiteral","src":"7493:1:87","type":"","value":"0"},"variables":[{"name":"i","nativeSrc":"7488:1:87","nodeType":"YulTypedName","src":"7488:1:87","type":""}]},{"body":{"nativeSrc":"7550:522:87","nodeType":"YulBlock","src":"7550:522:87","statements":[{"nativeSrc":"7564:23:87","nodeType":"YulVariableDeclaration","src":"7564:23:87","value":{"arguments":[{"name":"srcPtr","nativeSrc":"7580:6:87","nodeType":"YulIdentifier","src":"7580:6:87"}],"functionName":{"name":"mload","nativeSrc":"7574:5:87","nodeType":"YulIdentifier","src":"7574:5:87"},"nativeSrc":"7574:13:87","nodeType":"YulFunctionCall","src":"7574:13:87"},"variables":[{"name":"_1","nativeSrc":"7568:2:87","nodeType":"YulTypedName","src":"7568:2:87","type":""}]},{"nativeSrc":"7600:19:87","nodeType":"YulVariableDeclaration","src":"7600:19:87","value":{"kind":"number","nativeSrc":"7618:1:87","nodeType":"YulLiteral","src":"7618:1:87","type":"","value":"0"},"variables":[{"name":"updatedPos","nativeSrc":"7604:10:87","nodeType":"YulTypedName","src":"7604:10:87","type":""}]},{"nativeSrc":"7632:16:87","nodeType":"YulVariableDeclaration","src":"7632:16:87","value":{"name":"pos","nativeSrc":"7645:3:87","nodeType":"YulIdentifier","src":"7645:3:87"},"variables":[{"name":"pos_1","nativeSrc":"7636:5:87","nodeType":"YulTypedName","src":"7636:5:87","type":""}]},{"nativeSrc":"7661:12:87","nodeType":"YulAssignment","src":"7661:12:87","value":{"name":"pos","nativeSrc":"7670:3:87","nodeType":"YulIdentifier","src":"7670:3:87"},"variableNames":[{"name":"pos_1","nativeSrc":"7661:5:87","nodeType":"YulIdentifier","src":"7661:5:87"}]},{"nativeSrc":"7686:18:87","nodeType":"YulVariableDeclaration","src":"7686:18:87","value":{"name":"_1","nativeSrc":"7702:2:87","nodeType":"YulIdentifier","src":"7702:2:87"},"variables":[{"name":"srcPtr_1","nativeSrc":"7690:8:87","nodeType":"YulTypedName","src":"7690:8:87","type":""}]},{"nativeSrc":"7717:12:87","nodeType":"YulVariableDeclaration","src":"7717:12:87","value":{"kind":"number","nativeSrc":"7728:1:87","nodeType":"YulLiteral","src":"7728:1:87","type":"","value":"0"},"variables":[{"name":"i_1","nativeSrc":"7721:3:87","nodeType":"YulTypedName","src":"7721:3:87","type":""}]},{"body":{"nativeSrc":"7799:152:87","nodeType":"YulBlock","src":"7799:152:87","statements":[{"expression":{"arguments":[{"name":"pos_1","nativeSrc":"7824:5:87","nodeType":"YulIdentifier","src":"7824:5:87"},{"arguments":[{"name":"srcPtr_1","nativeSrc":"7837:8:87","nodeType":"YulIdentifier","src":"7837:8:87"}],"functionName":{"name":"mload","nativeSrc":"7831:5:87","nodeType":"YulIdentifier","src":"7831:5:87"},"nativeSrc":"7831:15:87","nodeType":"YulFunctionCall","src":"7831:15:87"}],"functionName":{"name":"mstore","nativeSrc":"7817:6:87","nodeType":"YulIdentifier","src":"7817:6:87"},"nativeSrc":"7817:30:87","nodeType":"YulFunctionCall","src":"7817:30:87"},"nativeSrc":"7817:30:87","nodeType":"YulExpressionStatement","src":"7817:30:87"},{"nativeSrc":"7864:25:87","nodeType":"YulAssignment","src":"7864:25:87","value":{"arguments":[{"name":"pos_1","nativeSrc":"7877:5:87","nodeType":"YulIdentifier","src":"7877:5:87"},{"kind":"number","nativeSrc":"7884:4:87","nodeType":"YulLiteral","src":"7884:4:87","type":"","value":"0x20"}],"functionName":{"name":"add","nativeSrc":"7873:3:87","nodeType":"YulIdentifier","src":"7873:3:87"},"nativeSrc":"7873:16:87","nodeType":"YulFunctionCall","src":"7873:16:87"},"variableNames":[{"name":"pos_1","nativeSrc":"7864:5:87","nodeType":"YulIdentifier","src":"7864:5:87"}]},{"nativeSrc":"7906:31:87","nodeType":"YulAssignment","src":"7906:31:87","value":{"arguments":[{"name":"srcPtr_1","nativeSrc":"7922:8:87","nodeType":"YulIdentifier","src":"7922:8:87"},{"kind":"number","nativeSrc":"7932:4:87","nodeType":"YulLiteral","src":"7932:4:87","type":"","value":"0x20"}],"functionName":{"name":"add","nativeSrc":"7918:3:87","nodeType":"YulIdentifier","src":"7918:3:87"},"nativeSrc":"7918:19:87","nodeType":"YulFunctionCall","src":"7918:19:87"},"variableNames":[{"name":"srcPtr_1","nativeSrc":"7906:8:87","nodeType":"YulIdentifier","src":"7906:8:87"}]}]},"condition":{"arguments":[{"name":"i_1","nativeSrc":"7753:3:87","nodeType":"YulIdentifier","src":"7753:3:87"},{"kind":"number","nativeSrc":"7758:4:87","nodeType":"YulLiteral","src":"7758:4:87","type":"","value":"0x05"}],"functionName":{"name":"lt","nativeSrc":"7750:2:87","nodeType":"YulIdentifier","src":"7750:2:87"},"nativeSrc":"7750:13:87","nodeType":"YulFunctionCall","src":"7750:13:87"},"nativeSrc":"7742:209:87","nodeType":"YulForLoop","post":{"nativeSrc":"7764:22:87","nodeType":"YulBlock","src":"7764:22:87","statements":[{"nativeSrc":"7766:18:87","nodeType":"YulAssignment","src":"7766:18:87","value":{"arguments":[{"name":"i_1","nativeSrc":"7777:3:87","nodeType":"YulIdentifier","src":"7777:3:87"},{"kind":"number","nativeSrc":"7782:1:87","nodeType":"YulLiteral","src":"7782:1:87","type":"","value":"1"}],"functionName":{"name":"add","nativeSrc":"7773:3:87","nodeType":"YulIdentifier","src":"7773:3:87"},"nativeSrc":"7773:11:87","nodeType":"YulFunctionCall","src":"7773:11:87"},"variableNames":[{"name":"i_1","nativeSrc":"7766:3:87","nodeType":"YulIdentifier","src":"7766:3:87"}]}]},"pre":{"nativeSrc":"7746:3:87","nodeType":"YulBlock","src":"7746:3:87","statements":[]},"src":"7742:209:87"},{"nativeSrc":"7964:28:87","nodeType":"YulAssignment","src":"7964:28:87","value":{"arguments":[{"name":"pos","nativeSrc":"7982:3:87","nodeType":"YulIdentifier","src":"7982:3:87"},{"kind":"number","nativeSrc":"7987:4:87","nodeType":"YulLiteral","src":"7987:4:87","type":"","value":"0xa0"}],"functionName":{"name":"add","nativeSrc":"7978:3:87","nodeType":"YulIdentifier","src":"7978:3:87"},"nativeSrc":"7978:14:87","nodeType":"YulFunctionCall","src":"7978:14:87"},"variableNames":[{"name":"updatedPos","nativeSrc":"7964:10:87","nodeType":"YulIdentifier","src":"7964:10:87"}]},{"nativeSrc":"8005:17:87","nodeType":"YulAssignment","src":"8005:17:87","value":{"name":"updatedPos","nativeSrc":"8012:10:87","nodeType":"YulIdentifier","src":"8012:10:87"},"variableNames":[{"name":"pos","nativeSrc":"8005:3:87","nodeType":"YulIdentifier","src":"8005:3:87"}]},{"nativeSrc":"8035:27:87","nodeType":"YulAssignment","src":"8035:27:87","value":{"arguments":[{"name":"srcPtr","nativeSrc":"8049:6:87","nodeType":"YulIdentifier","src":"8049:6:87"},{"kind":"number","nativeSrc":"8057:4:87","nodeType":"YulLiteral","src":"8057:4:87","type":"","value":"0x20"}],"functionName":{"name":"add","nativeSrc":"8045:3:87","nodeType":"YulIdentifier","src":"8045:3:87"},"nativeSrc":"8045:17:87","nodeType":"YulFunctionCall","src":"8045:17:87"},"variableNames":[{"name":"srcPtr","nativeSrc":"8035:6:87","nodeType":"YulIdentifier","src":"8035:6:87"}]}]},"condition":{"arguments":[{"name":"i","nativeSrc":"7514:1:87","nodeType":"YulIdentifier","src":"7514:1:87"},{"kind":"number","nativeSrc":"7517:4:87","nodeType":"YulLiteral","src":"7517:4:87","type":"","value":"0x05"}],"functionName":{"name":"lt","nativeSrc":"7511:2:87","nodeType":"YulIdentifier","src":"7511:2:87"},"nativeSrc":"7511:11:87","nodeType":"YulFunctionCall","src":"7511:11:87"},"nativeSrc":"7503:569:87","nodeType":"YulForLoop","post":{"nativeSrc":"7523:18:87","nodeType":"YulBlock","src":"7523:18:87","statements":[{"nativeSrc":"7525:14:87","nodeType":"YulAssignment","src":"7525:14:87","value":{"arguments":[{"name":"i","nativeSrc":"7534:1:87","nodeType":"YulIdentifier","src":"7534:1:87"},{"kind":"number","nativeSrc":"7537:1:87","nodeType":"YulLiteral","src":"7537:1:87","type":"","value":"1"}],"functionName":{"name":"add","nativeSrc":"7530:3:87","nodeType":"YulIdentifier","src":"7530:3:87"},"nativeSrc":"7530:9:87","nodeType":"YulFunctionCall","src":"7530:9:87"},"variableNames":[{"name":"i","nativeSrc":"7525:1:87","nodeType":"YulIdentifier","src":"7525:1:87"}]}]},"pre":{"nativeSrc":"7507:3:87","nodeType":"YulBlock","src":"7507:3:87","statements":[]},"src":"7503:569:87"}]},"name":"abi_encode_array_array_uint256","nativeSrc":"7371:707:87","nodeType":"YulFunctionDefinition","parameters":[{"name":"value","nativeSrc":"7411:5:87","nodeType":"YulTypedName","src":"7411:5:87","type":""},{"name":"pos","nativeSrc":"7418:3:87","nodeType":"YulTypedName","src":"7418:3:87","type":""}],"src":"7371:707:87"},{"body":{"nativeSrc":"8144:279:87","nodeType":"YulBlock","src":"8144:279:87","statements":[{"nativeSrc":"8154:10:87","nodeType":"YulAssignment","src":"8154:10:87","value":{"name":"pos","nativeSrc":"8161:3:87","nodeType":"YulIdentifier","src":"8161:3:87"},"variableNames":[{"name":"pos","nativeSrc":"8154:3:87","nodeType":"YulIdentifier","src":"8154:3:87"}]},{"nativeSrc":"8173:19:87","nodeType":"YulVariableDeclaration","src":"8173:19:87","value":{"name":"value","nativeSrc":"8187:5:87","nodeType":"YulIdentifier","src":"8187:5:87"},"variables":[{"name":"srcPtr","nativeSrc":"8177:6:87","nodeType":"YulTypedName","src":"8177:6:87","type":""}]},{"nativeSrc":"8201:10:87","nodeType":"YulVariableDeclaration","src":"8201:10:87","value":{"kind":"number","nativeSrc":"8210:1:87","nodeType":"YulLiteral","src":"8210:1:87","type":"","value":"0"},"variables":[{"name":"i","nativeSrc":"8205:1:87","nodeType":"YulTypedName","src":"8205:1:87","type":""}]},{"body":{"nativeSrc":"8267:150:87","nodeType":"YulBlock","src":"8267:150:87","statements":[{"expression":{"arguments":[{"name":"pos","nativeSrc":"8288:3:87","nodeType":"YulIdentifier","src":"8288:3:87"},{"arguments":[{"arguments":[{"name":"srcPtr","nativeSrc":"8303:6:87","nodeType":"YulIdentifier","src":"8303:6:87"}],"functionName":{"name":"mload","nativeSrc":"8297:5:87","nodeType":"YulIdentifier","src":"8297:5:87"},"nativeSrc":"8297:13:87","nodeType":"YulFunctionCall","src":"8297:13:87"},{"arguments":[{"arguments":[{"kind":"number","nativeSrc":"8320:3:87","nodeType":"YulLiteral","src":"8320:3:87","type":"","value":"160"},{"kind":"number","nativeSrc":"8325:1:87","nodeType":"YulLiteral","src":"8325:1:87","type":"","value":"1"}],"functionName":{"name":"shl","nativeSrc":"8316:3:87","nodeType":"YulIdentifier","src":"8316:3:87"},"nativeSrc":"8316:11:87","nodeType":"YulFunctionCall","src":"8316:11:87"},{"kind":"number","nativeSrc":"8329:1:87","nodeType":"YulLiteral","src":"8329:1:87","type":"","value":"1"}],"functionName":{"name":"sub","nativeSrc":"8312:3:87","nodeType":"YulIdentifier","src":"8312:3:87"},"nativeSrc":"8312:19:87","nodeType":"YulFunctionCall","src":"8312:19:87"}],"functionName":{"name":"and","nativeSrc":"8293:3:87","nodeType":"YulIdentifier","src":"8293:3:87"},"nativeSrc":"8293:39:87","nodeType":"YulFunctionCall","src":"8293:39:87"}],"functionName":{"name":"mstore","nativeSrc":"8281:6:87","nodeType":"YulIdentifier","src":"8281:6:87"},"nativeSrc":"8281:52:87","nodeType":"YulFunctionCall","src":"8281:52:87"},"nativeSrc":"8281:52:87","nodeType":"YulExpressionStatement","src":"8281:52:87"},{"nativeSrc":"8346:21:87","nodeType":"YulAssignment","src":"8346:21:87","value":{"arguments":[{"name":"pos","nativeSrc":"8357:3:87","nodeType":"YulIdentifier","src":"8357:3:87"},{"kind":"number","nativeSrc":"8362:4:87","nodeType":"YulLiteral","src":"8362:4:87","type":"","value":"0x20"}],"functionName":{"name":"add","nativeSrc":"8353:3:87","nodeType":"YulIdentifier","src":"8353:3:87"},"nativeSrc":"8353:14:87","nodeType":"YulFunctionCall","src":"8353:14:87"},"variableNames":[{"name":"pos","nativeSrc":"8346:3:87","nodeType":"YulIdentifier","src":"8346:3:87"}]},{"nativeSrc":"8380:27:87","nodeType":"YulAssignment","src":"8380:27:87","value":{"arguments":[{"name":"srcPtr","nativeSrc":"8394:6:87","nodeType":"YulIdentifier","src":"8394:6:87"},{"kind":"number","nativeSrc":"8402:4:87","nodeType":"YulLiteral","src":"8402:4:87","type":"","value":"0x20"}],"functionName":{"name":"add","nativeSrc":"8390:3:87","nodeType":"YulIdentifier","src":"8390:3:87"},"nativeSrc":"8390:17:87","nodeType":"YulFunctionCall","src":"8390:17:87"},"variableNames":[{"name":"srcPtr","nativeSrc":"8380:6:87","nodeType":"YulIdentifier","src":"8380:6:87"}]}]},"condition":{"arguments":[{"name":"i","nativeSrc":"8231:1:87","nodeType":"YulIdentifier","src":"8231:1:87"},{"kind":"number","nativeSrc":"8234:4:87","nodeType":"YulLiteral","src":"8234:4:87","type":"","value":"0x05"}],"functionName":{"name":"lt","nativeSrc":"8228:2:87","nodeType":"YulIdentifier","src":"8228:2:87"},"nativeSrc":"8228:11:87","nodeType":"YulFunctionCall","src":"8228:11:87"},"nativeSrc":"8220:197:87","nodeType":"YulForLoop","post":{"nativeSrc":"8240:18:87","nodeType":"YulBlock","src":"8240:18:87","statements":[{"nativeSrc":"8242:14:87","nodeType":"YulAssignment","src":"8242:14:87","value":{"arguments":[{"name":"i","nativeSrc":"8251:1:87","nodeType":"YulIdentifier","src":"8251:1:87"},{"kind":"number","nativeSrc":"8254:1:87","nodeType":"YulLiteral","src":"8254:1:87","type":"","value":"1"}],"functionName":{"name":"add","nativeSrc":"8247:3:87","nodeType":"YulIdentifier","src":"8247:3:87"},"nativeSrc":"8247:9:87","nodeType":"YulFunctionCall","src":"8247:9:87"},"variableNames":[{"name":"i","nativeSrc":"8242:1:87","nodeType":"YulIdentifier","src":"8242:1:87"}]}]},"pre":{"nativeSrc":"8224:3:87","nodeType":"YulBlock","src":"8224:3:87","statements":[]},"src":"8220:197:87"}]},"name":"abi_encode_array_address_memory_ptr","nativeSrc":"8083:340:87","nodeType":"YulFunctionDefinition","parameters":[{"name":"value","nativeSrc":"8128:5:87","nodeType":"YulTypedName","src":"8128:5:87","type":""},{"name":"pos","nativeSrc":"8135:3:87","nodeType":"YulTypedName","src":"8135:3:87","type":""}],"src":"8083:340:87"},{"body":{"nativeSrc":"8855:399:87","nodeType":"YulBlock","src":"8855:399:87","statements":[{"nativeSrc":"8865:28:87","nodeType":"YulAssignment","src":"8865:28:87","value":{"arguments":[{"name":"headStart","nativeSrc":"8877:9:87","nodeType":"YulIdentifier","src":"8877:9:87"},{"kind":"number","nativeSrc":"8888:4:87","nodeType":"YulLiteral","src":"8888:4:87","type":"","value":"1408"}],"functionName":{"name":"add","nativeSrc":"8873:3:87","nodeType":"YulIdentifier","src":"8873:3:87"},"nativeSrc":"8873:20:87","nodeType":"YulFunctionCall","src":"8873:20:87"},"variableNames":[{"name":"tail","nativeSrc":"8865:4:87","nodeType":"YulIdentifier","src":"8865:4:87"}]},{"expression":{"arguments":[{"name":"value0","nativeSrc":"8927:6:87","nodeType":"YulIdentifier","src":"8927:6:87"},{"name":"headStart","nativeSrc":"8935:9:87","nodeType":"YulIdentifier","src":"8935:9:87"}],"functionName":{"name":"abi_encode_array_address","nativeSrc":"8902:24:87","nodeType":"YulIdentifier","src":"8902:24:87"},"nativeSrc":"8902:43:87","nodeType":"YulFunctionCall","src":"8902:43:87"},"nativeSrc":"8902:43:87","nodeType":"YulExpressionStatement","src":"8902:43:87"},{"expression":{"arguments":[{"name":"value1","nativeSrc":"8985:6:87","nodeType":"YulIdentifier","src":"8985:6:87"},{"arguments":[{"name":"headStart","nativeSrc":"8997:9:87","nodeType":"YulIdentifier","src":"8997:9:87"},{"kind":"number","nativeSrc":"9008:3:87","nodeType":"YulLiteral","src":"9008:3:87","type":"","value":"352"}],"functionName":{"name":"add","nativeSrc":"8993:3:87","nodeType":"YulIdentifier","src":"8993:3:87"},"nativeSrc":"8993:19:87","nodeType":"YulFunctionCall","src":"8993:19:87"}],"functionName":{"name":"abi_encode_array_array_uint256","nativeSrc":"8954:30:87","nodeType":"YulIdentifier","src":"8954:30:87"},"nativeSrc":"8954:59:87","nodeType":"YulFunctionCall","src":"8954:59:87"},"nativeSrc":"8954:59:87","nodeType":"YulExpressionStatement","src":"8954:59:87"},{"expression":{"arguments":[{"arguments":[{"name":"headStart","nativeSrc":"9033:9:87","nodeType":"YulIdentifier","src":"9033:9:87"},{"kind":"number","nativeSrc":"9044:4:87","nodeType":"YulLiteral","src":"9044:4:87","type":"","value":"1152"}],"functionName":{"name":"add","nativeSrc":"9029:3:87","nodeType":"YulIdentifier","src":"9029:3:87"},"nativeSrc":"9029:20:87","nodeType":"YulFunctionCall","src":"9029:20:87"},{"name":"value2","nativeSrc":"9051:6:87","nodeType":"YulIdentifier","src":"9051:6:87"}],"functionName":{"name":"mstore","nativeSrc":"9022:6:87","nodeType":"YulIdentifier","src":"9022:6:87"},"nativeSrc":"9022:36:87","nodeType":"YulFunctionCall","src":"9022:36:87"},"nativeSrc":"9022:36:87","nodeType":"YulExpressionStatement","src":"9022:36:87"},{"expression":{"arguments":[{"arguments":[{"name":"headStart","nativeSrc":"9078:9:87","nodeType":"YulIdentifier","src":"9078:9:87"},{"kind":"number","nativeSrc":"9089:4:87","nodeType":"YulLiteral","src":"9089:4:87","type":"","value":"1184"}],"functionName":{"name":"add","nativeSrc":"9074:3:87","nodeType":"YulIdentifier","src":"9074:3:87"},"nativeSrc":"9074:20:87","nodeType":"YulFunctionCall","src":"9074:20:87"},{"name":"value3","nativeSrc":"9096:6:87","nodeType":"YulIdentifier","src":"9096:6:87"}],"functionName":{"name":"mstore","nativeSrc":"9067:6:87","nodeType":"YulIdentifier","src":"9067:6:87"},"nativeSrc":"9067:36:87","nodeType":"YulFunctionCall","src":"9067:36:87"},"nativeSrc":"9067:36:87","nodeType":"YulExpressionStatement","src":"9067:36:87"},{"expression":{"arguments":[{"name":"value4","nativeSrc":"9148:6:87","nodeType":"YulIdentifier","src":"9148:6:87"},{"arguments":[{"name":"headStart","nativeSrc":"9160:9:87","nodeType":"YulIdentifier","src":"9160:9:87"},{"kind":"number","nativeSrc":"9171:4:87","nodeType":"YulLiteral","src":"9171:4:87","type":"","value":"1216"}],"functionName":{"name":"add","nativeSrc":"9156:3:87","nodeType":"YulIdentifier","src":"9156:3:87"},"nativeSrc":"9156:20:87","nodeType":"YulFunctionCall","src":"9156:20:87"}],"functionName":{"name":"abi_encode_array_address_memory_ptr","nativeSrc":"9112:35:87","nodeType":"YulIdentifier","src":"9112:35:87"},"nativeSrc":"9112:65:87","nodeType":"YulFunctionCall","src":"9112:65:87"},"nativeSrc":"9112:65:87","nodeType":"YulExpressionStatement","src":"9112:65:87"},{"expression":{"arguments":[{"arguments":[{"name":"headStart","nativeSrc":"9197:9:87","nodeType":"YulIdentifier","src":"9197:9:87"},{"kind":"number","nativeSrc":"9208:4:87","nodeType":"YulLiteral","src":"9208:4:87","type":"","value":"1376"}],"functionName":{"name":"add","nativeSrc":"9193:3:87","nodeType":"YulIdentifier","src":"9193:3:87"},"nativeSrc":"9193:20:87","nodeType":"YulFunctionCall","src":"9193:20:87"},{"arguments":[{"name":"value5","nativeSrc":"9219:6:87","nodeType":"YulIdentifier","src":"9219:6:87"},{"arguments":[{"arguments":[{"kind":"number","nativeSrc":"9235:3:87","nodeType":"YulLiteral","src":"9235:3:87","type":"","value":"160"},{"kind":"number","nativeSrc":"9240:1:87","nodeType":"YulLiteral","src":"9240:1:87","type":"","value":"1"}],"functionName":{"name":"shl","nativeSrc":"9231:3:87","nodeType":"YulIdentifier","src":"9231:3:87"},"nativeSrc":"9231:11:87","nodeType":"YulFunctionCall","src":"9231:11:87"},{"kind":"number","nativeSrc":"9244:1:87","nodeType":"YulLiteral","src":"9244:1:87","type":"","value":"1"}],"functionName":{"name":"sub","nativeSrc":"9227:3:87","nodeType":"YulIdentifier","src":"9227:3:87"},"nativeSrc":"9227:19:87","nodeType":"YulFunctionCall","src":"9227:19:87"}],"functionName":{"name":"and","nativeSrc":"9215:3:87","nodeType":"YulIdentifier","src":"9215:3:87"},"nativeSrc":"9215:32:87","nodeType":"YulFunctionCall","src":"9215:32:87"}],"functionName":{"name":"mstore","nativeSrc":"9186:6:87","nodeType":"YulIdentifier","src":"9186:6:87"},"nativeSrc":"9186:62:87","nodeType":"YulFunctionCall","src":"9186:62:87"},"nativeSrc":"9186:62:87","nodeType":"YulExpressionStatement","src":"9186:62:87"}]},"name":"abi_encode_tuple_t_array$_t_address_$11_memory_ptr_t_array$_t_array$_t_uint256_$5_memory_ptr_$5_memory_ptr_t_uint256_t_uint256_t_array$_t_address_$5_memory_ptr_t_address__to_t_array$_t_address_$11_memory_ptr_t_array$_t_array$_t_uint256_$5_memory_ptr_$5_memory_ptr_t_uint256_t_uint256_t_array$_t_address_$5_memory_ptr_t_address__fromStack_reversed","nativeSrc":"8428:826:87","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nativeSrc":"8784:9:87","nodeType":"YulTypedName","src":"8784:9:87","type":""},{"name":"value5","nativeSrc":"8795:6:87","nodeType":"YulTypedName","src":"8795:6:87","type":""},{"name":"value4","nativeSrc":"8803:6:87","nodeType":"YulTypedName","src":"8803:6:87","type":""},{"name":"value3","nativeSrc":"8811:6:87","nodeType":"YulTypedName","src":"8811:6:87","type":""},{"name":"value2","nativeSrc":"8819:6:87","nodeType":"YulTypedName","src":"8819:6:87","type":""},{"name":"value1","nativeSrc":"8827:6:87","nodeType":"YulTypedName","src":"8827:6:87","type":""},{"name":"value0","nativeSrc":"8835:6:87","nodeType":"YulTypedName","src":"8835:6:87","type":""}],"returnVariables":[{"name":"tail","nativeSrc":"8846:4:87","nodeType":"YulTypedName","src":"8846:4:87","type":""}],"src":"8428:826:87"},{"body":{"nativeSrc":"9311:116:87","nodeType":"YulBlock","src":"9311:116:87","statements":[{"nativeSrc":"9321:20:87","nodeType":"YulAssignment","src":"9321:20:87","value":{"arguments":[{"name":"x","nativeSrc":"9336:1:87","nodeType":"YulIdentifier","src":"9336:1:87"},{"name":"y","nativeSrc":"9339:1:87","nodeType":"YulIdentifier","src":"9339:1:87"}],"functionName":{"name":"mul","nativeSrc":"9332:3:87","nodeType":"YulIdentifier","src":"9332:3:87"},"nativeSrc":"9332:9:87","nodeType":"YulFunctionCall","src":"9332:9:87"},"variableNames":[{"name":"product","nativeSrc":"9321:7:87","nodeType":"YulIdentifier","src":"9321:7:87"}]},{"body":{"nativeSrc":"9399:22:87","nodeType":"YulBlock","src":"9399:22:87","statements":[{"expression":{"arguments":[],"functionName":{"name":"panic_error_0x11","nativeSrc":"9401:16:87","nodeType":"YulIdentifier","src":"9401:16:87"},"nativeSrc":"9401:18:87","nodeType":"YulFunctionCall","src":"9401:18:87"},"nativeSrc":"9401:18:87","nodeType":"YulExpressionStatement","src":"9401:18:87"}]},"condition":{"arguments":[{"arguments":[{"arguments":[{"name":"x","nativeSrc":"9370:1:87","nodeType":"YulIdentifier","src":"9370:1:87"}],"functionName":{"name":"iszero","nativeSrc":"9363:6:87","nodeType":"YulIdentifier","src":"9363:6:87"},"nativeSrc":"9363:9:87","nodeType":"YulFunctionCall","src":"9363:9:87"},{"arguments":[{"name":"y","nativeSrc":"9377:1:87","nodeType":"YulIdentifier","src":"9377:1:87"},{"arguments":[{"name":"product","nativeSrc":"9384:7:87","nodeType":"YulIdentifier","src":"9384:7:87"},{"name":"x","nativeSrc":"9393:1:87","nodeType":"YulIdentifier","src":"9393:1:87"}],"functionName":{"name":"div","nativeSrc":"9380:3:87","nodeType":"YulIdentifier","src":"9380:3:87"},"nativeSrc":"9380:15:87","nodeType":"YulFunctionCall","src":"9380:15:87"}],"functionName":{"name":"eq","nativeSrc":"9374:2:87","nodeType":"YulIdentifier","src":"9374:2:87"},"nativeSrc":"9374:22:87","nodeType":"YulFunctionCall","src":"9374:22:87"}],"functionName":{"name":"or","nativeSrc":"9360:2:87","nodeType":"YulIdentifier","src":"9360:2:87"},"nativeSrc":"9360:37:87","nodeType":"YulFunctionCall","src":"9360:37:87"}],"functionName":{"name":"iszero","nativeSrc":"9353:6:87","nodeType":"YulIdentifier","src":"9353:6:87"},"nativeSrc":"9353:45:87","nodeType":"YulFunctionCall","src":"9353:45:87"},"nativeSrc":"9350:71:87","nodeType":"YulIf","src":"9350:71:87"}]},"name":"checked_mul_t_uint256","nativeSrc":"9259:168:87","nodeType":"YulFunctionDefinition","parameters":[{"name":"x","nativeSrc":"9290:1:87","nodeType":"YulTypedName","src":"9290:1:87","type":""},{"name":"y","nativeSrc":"9293:1:87","nodeType":"YulTypedName","src":"9293:1:87","type":""}],"returnVariables":[{"name":"product","nativeSrc":"9299:7:87","nodeType":"YulTypedName","src":"9299:7:87","type":""}],"src":"9259:168:87"},{"body":{"nativeSrc":"9464:95:87","nodeType":"YulBlock","src":"9464:95:87","statements":[{"expression":{"arguments":[{"kind":"number","nativeSrc":"9481:1:87","nodeType":"YulLiteral","src":"9481:1:87","type":"","value":"0"},{"arguments":[{"kind":"number","nativeSrc":"9488:3:87","nodeType":"YulLiteral","src":"9488:3:87","type":"","value":"224"},{"kind":"number","nativeSrc":"9493:10:87","nodeType":"YulLiteral","src":"9493:10:87","type":"","value":"0x4e487b71"}],"functionName":{"name":"shl","nativeSrc":"9484:3:87","nodeType":"YulIdentifier","src":"9484:3:87"},"nativeSrc":"9484:20:87","nodeType":"YulFunctionCall","src":"9484:20:87"}],"functionName":{"name":"mstore","nativeSrc":"9474:6:87","nodeType":"YulIdentifier","src":"9474:6:87"},"nativeSrc":"9474:31:87","nodeType":"YulFunctionCall","src":"9474:31:87"},"nativeSrc":"9474:31:87","nodeType":"YulExpressionStatement","src":"9474:31:87"},{"expression":{"arguments":[{"kind":"number","nativeSrc":"9521:1:87","nodeType":"YulLiteral","src":"9521:1:87","type":"","value":"4"},{"kind":"number","nativeSrc":"9524:4:87","nodeType":"YulLiteral","src":"9524:4:87","type":"","value":"0x32"}],"functionName":{"name":"mstore","nativeSrc":"9514:6:87","nodeType":"YulIdentifier","src":"9514:6:87"},"nativeSrc":"9514:15:87","nodeType":"YulFunctionCall","src":"9514:15:87"},"nativeSrc":"9514:15:87","nodeType":"YulExpressionStatement","src":"9514:15:87"},{"expression":{"arguments":[{"kind":"number","nativeSrc":"9545:1:87","nodeType":"YulLiteral","src":"9545:1:87","type":"","value":"0"},{"kind":"number","nativeSrc":"9548:4:87","nodeType":"YulLiteral","src":"9548:4:87","type":"","value":"0x24"}],"functionName":{"name":"revert","nativeSrc":"9538:6:87","nodeType":"YulIdentifier","src":"9538:6:87"},"nativeSrc":"9538:15:87","nodeType":"YulFunctionCall","src":"9538:15:87"},"nativeSrc":"9538:15:87","nodeType":"YulExpressionStatement","src":"9538:15:87"}]},"name":"panic_error_0x32","nativeSrc":"9432:127:87","nodeType":"YulFunctionDefinition","src":"9432:127:87"},{"body":{"nativeSrc":"9719:649:87","nodeType":"YulBlock","src":"9719:649:87","statements":[{"nativeSrc":"9729:28:87","nodeType":"YulAssignment","src":"9729:28:87","value":{"arguments":[{"name":"headStart","nativeSrc":"9741:9:87","nodeType":"YulIdentifier","src":"9741:9:87"},{"kind":"number","nativeSrc":"9752:4:87","nodeType":"YulLiteral","src":"9752:4:87","type":"","value":"1312"}],"functionName":{"name":"add","nativeSrc":"9737:3:87","nodeType":"YulIdentifier","src":"9737:3:87"},"nativeSrc":"9737:20:87","nodeType":"YulFunctionCall","src":"9737:20:87"},"variableNames":[{"name":"tail","nativeSrc":"9729:4:87","nodeType":"YulIdentifier","src":"9729:4:87"}]},{"nativeSrc":"9766:23:87","nodeType":"YulVariableDeclaration","src":"9766:23:87","value":{"arguments":[{"name":"value0","nativeSrc":"9782:6:87","nodeType":"YulIdentifier","src":"9782:6:87"}],"functionName":{"name":"mload","nativeSrc":"9776:5:87","nodeType":"YulIdentifier","src":"9776:5:87"},"nativeSrc":"9776:13:87","nodeType":"YulFunctionCall","src":"9776:13:87"},"variables":[{"name":"_1","nativeSrc":"9770:2:87","nodeType":"YulTypedName","src":"9770:2:87","type":""}]},{"nativeSrc":"9798:20:87","nodeType":"YulVariableDeclaration","src":"9798:20:87","value":{"name":"headStart","nativeSrc":"9809:9:87","nodeType":"YulIdentifier","src":"9809:9:87"},"variables":[{"name":"pos","nativeSrc":"9802:3:87","nodeType":"YulTypedName","src":"9802:3:87","type":""}]},{"nativeSrc":"9827:16:87","nodeType":"YulAssignment","src":"9827:16:87","value":{"name":"headStart","nativeSrc":"9834:9:87","nodeType":"YulIdentifier","src":"9834:9:87"},"variableNames":[{"name":"pos","nativeSrc":"9827:3:87","nodeType":"YulIdentifier","src":"9827:3:87"}]},{"nativeSrc":"9852:16:87","nodeType":"YulVariableDeclaration","src":"9852:16:87","value":{"name":"_1","nativeSrc":"9866:2:87","nodeType":"YulIdentifier","src":"9866:2:87"},"variables":[{"name":"srcPtr","nativeSrc":"9856:6:87","nodeType":"YulTypedName","src":"9856:6:87","type":""}]},{"nativeSrc":"9877:10:87","nodeType":"YulVariableDeclaration","src":"9877:10:87","value":{"kind":"number","nativeSrc":"9886:1:87","nodeType":"YulLiteral","src":"9886:1:87","type":"","value":"0"},"variables":[{"name":"i","nativeSrc":"9881:1:87","nodeType":"YulTypedName","src":"9881:1:87","type":""}]},{"body":{"nativeSrc":"9943:150:87","nodeType":"YulBlock","src":"9943:150:87","statements":[{"expression":{"arguments":[{"name":"pos","nativeSrc":"9964:3:87","nodeType":"YulIdentifier","src":"9964:3:87"},{"arguments":[{"arguments":[{"name":"srcPtr","nativeSrc":"9979:6:87","nodeType":"YulIdentifier","src":"9979:6:87"}],"functionName":{"name":"mload","nativeSrc":"9973:5:87","nodeType":"YulIdentifier","src":"9973:5:87"},"nativeSrc":"9973:13:87","nodeType":"YulFunctionCall","src":"9973:13:87"},{"arguments":[{"arguments":[{"kind":"number","nativeSrc":"9996:3:87","nodeType":"YulLiteral","src":"9996:3:87","type":"","value":"160"},{"kind":"number","nativeSrc":"10001:1:87","nodeType":"YulLiteral","src":"10001:1:87","type":"","value":"1"}],"functionName":{"name":"shl","nativeSrc":"9992:3:87","nodeType":"YulIdentifier","src":"9992:3:87"},"nativeSrc":"9992:11:87","nodeType":"YulFunctionCall","src":"9992:11:87"},{"kind":"number","nativeSrc":"10005:1:87","nodeType":"YulLiteral","src":"10005:1:87","type":"","value":"1"}],"functionName":{"name":"sub","nativeSrc":"9988:3:87","nodeType":"YulIdentifier","src":"9988:3:87"},"nativeSrc":"9988:19:87","nodeType":"YulFunctionCall","src":"9988:19:87"}],"functionName":{"name":"and","nativeSrc":"9969:3:87","nodeType":"YulIdentifier","src":"9969:3:87"},"nativeSrc":"9969:39:87","nodeType":"YulFunctionCall","src":"9969:39:87"}],"functionName":{"name":"mstore","nativeSrc":"9957:6:87","nodeType":"YulIdentifier","src":"9957:6:87"},"nativeSrc":"9957:52:87","nodeType":"YulFunctionCall","src":"9957:52:87"},"nativeSrc":"9957:52:87","nodeType":"YulExpressionStatement","src":"9957:52:87"},{"nativeSrc":"10022:21:87","nodeType":"YulAssignment","src":"10022:21:87","value":{"arguments":[{"name":"pos","nativeSrc":"10033:3:87","nodeType":"YulIdentifier","src":"10033:3:87"},{"kind":"number","nativeSrc":"10038:4:87","nodeType":"YulLiteral","src":"10038:4:87","type":"","value":"0x20"}],"functionName":{"name":"add","nativeSrc":"10029:3:87","nodeType":"YulIdentifier","src":"10029:3:87"},"nativeSrc":"10029:14:87","nodeType":"YulFunctionCall","src":"10029:14:87"},"variableNames":[{"name":"pos","nativeSrc":"10022:3:87","nodeType":"YulIdentifier","src":"10022:3:87"}]},{"nativeSrc":"10056:27:87","nodeType":"YulAssignment","src":"10056:27:87","value":{"arguments":[{"name":"srcPtr","nativeSrc":"10070:6:87","nodeType":"YulIdentifier","src":"10070:6:87"},{"kind":"number","nativeSrc":"10078:4:87","nodeType":"YulLiteral","src":"10078:4:87","type":"","value":"0x20"}],"functionName":{"name":"add","nativeSrc":"10066:3:87","nodeType":"YulIdentifier","src":"10066:3:87"},"nativeSrc":"10066:17:87","nodeType":"YulFunctionCall","src":"10066:17:87"},"variableNames":[{"name":"srcPtr","nativeSrc":"10056:6:87","nodeType":"YulIdentifier","src":"10056:6:87"}]}]},"condition":{"arguments":[{"name":"i","nativeSrc":"9907:1:87","nodeType":"YulIdentifier","src":"9907:1:87"},{"kind":"number","nativeSrc":"9910:4:87","nodeType":"YulLiteral","src":"9910:4:87","type":"","value":"0x0b"}],"functionName":{"name":"lt","nativeSrc":"9904:2:87","nodeType":"YulIdentifier","src":"9904:2:87"},"nativeSrc":"9904:11:87","nodeType":"YulFunctionCall","src":"9904:11:87"},"nativeSrc":"9896:197:87","nodeType":"YulForLoop","post":{"nativeSrc":"9916:18:87","nodeType":"YulBlock","src":"9916:18:87","statements":[{"nativeSrc":"9918:14:87","nodeType":"YulAssignment","src":"9918:14:87","value":{"arguments":[{"name":"i","nativeSrc":"9927:1:87","nodeType":"YulIdentifier","src":"9927:1:87"},{"kind":"number","nativeSrc":"9930:1:87","nodeType":"YulLiteral","src":"9930:1:87","type":"","value":"1"}],"functionName":{"name":"add","nativeSrc":"9923:3:87","nodeType":"YulIdentifier","src":"9923:3:87"},"nativeSrc":"9923:9:87","nodeType":"YulFunctionCall","src":"9923:9:87"},"variableNames":[{"name":"i","nativeSrc":"9918:1:87","nodeType":"YulIdentifier","src":"9918:1:87"}]}]},"pre":{"nativeSrc":"9900:3:87","nodeType":"YulBlock","src":"9900:3:87","statements":[]},"src":"9896:197:87"},{"nativeSrc":"10102:44:87","nodeType":"YulVariableDeclaration","src":"10102:44:87","value":{"arguments":[{"arguments":[{"name":"value0","nativeSrc":"10132:6:87","nodeType":"YulIdentifier","src":"10132:6:87"},{"kind":"number","nativeSrc":"10140:4:87","nodeType":"YulLiteral","src":"10140:4:87","type":"","value":"0x20"}],"functionName":{"name":"add","nativeSrc":"10128:3:87","nodeType":"YulIdentifier","src":"10128:3:87"},"nativeSrc":"10128:17:87","nodeType":"YulFunctionCall","src":"10128:17:87"}],"functionName":{"name":"mload","nativeSrc":"10122:5:87","nodeType":"YulIdentifier","src":"10122:5:87"},"nativeSrc":"10122:24:87","nodeType":"YulFunctionCall","src":"10122:24:87"},"variables":[{"name":"memberValue0","nativeSrc":"10106:12:87","nodeType":"YulTypedName","src":"10106:12:87","type":""}]},{"expression":{"arguments":[{"name":"memberValue0","nativeSrc":"10186:12:87","nodeType":"YulIdentifier","src":"10186:12:87"},{"arguments":[{"name":"headStart","nativeSrc":"10204:9:87","nodeType":"YulIdentifier","src":"10204:9:87"},{"kind":"number","nativeSrc":"10215:6:87","nodeType":"YulLiteral","src":"10215:6:87","type":"","value":"0x0160"}],"functionName":{"name":"add","nativeSrc":"10200:3:87","nodeType":"YulIdentifier","src":"10200:3:87"},"nativeSrc":"10200:22:87","nodeType":"YulFunctionCall","src":"10200:22:87"}],"functionName":{"name":"abi_encode_array_array_uint256","nativeSrc":"10155:30:87","nodeType":"YulIdentifier","src":"10155:30:87"},"nativeSrc":"10155:68:87","nodeType":"YulFunctionCall","src":"10155:68:87"},"nativeSrc":"10155:68:87","nodeType":"YulExpressionStatement","src":"10155:68:87"},{"nativeSrc":"10232:46:87","nodeType":"YulVariableDeclaration","src":"10232:46:87","value":{"arguments":[{"arguments":[{"name":"value0","nativeSrc":"10264:6:87","nodeType":"YulIdentifier","src":"10264:6:87"},{"kind":"number","nativeSrc":"10272:4:87","nodeType":"YulLiteral","src":"10272:4:87","type":"","value":"0x40"}],"functionName":{"name":"add","nativeSrc":"10260:3:87","nodeType":"YulIdentifier","src":"10260:3:87"},"nativeSrc":"10260:17:87","nodeType":"YulFunctionCall","src":"10260:17:87"}],"functionName":{"name":"mload","nativeSrc":"10254:5:87","nodeType":"YulIdentifier","src":"10254:5:87"},"nativeSrc":"10254:24:87","nodeType":"YulFunctionCall","src":"10254:24:87"},"variables":[{"name":"memberValue0_1","nativeSrc":"10236:14:87","nodeType":"YulTypedName","src":"10236:14:87","type":""}]},{"expression":{"arguments":[{"name":"memberValue0_1","nativeSrc":"10323:14:87","nodeType":"YulIdentifier","src":"10323:14:87"},{"arguments":[{"name":"headStart","nativeSrc":"10343:9:87","nodeType":"YulIdentifier","src":"10343:9:87"},{"kind":"number","nativeSrc":"10354:6:87","nodeType":"YulLiteral","src":"10354:6:87","type":"","value":"0x0480"}],"functionName":{"name":"add","nativeSrc":"10339:3:87","nodeType":"YulIdentifier","src":"10339:3:87"},"nativeSrc":"10339:22:87","nodeType":"YulFunctionCall","src":"10339:22:87"}],"functionName":{"name":"abi_encode_array_address_memory_ptr","nativeSrc":"10287:35:87","nodeType":"YulIdentifier","src":"10287:35:87"},"nativeSrc":"10287:75:87","nodeType":"YulFunctionCall","src":"10287:75:87"},"nativeSrc":"10287:75:87","nodeType":"YulExpressionStatement","src":"10287:75:87"}]},"name":"abi_encode_tuple_t_struct$_CurveRoute_$536_memory_ptr__to_t_struct$_CurveRoute_$536_memory_ptr__fromStack_reversed","nativeSrc":"9564:804:87","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nativeSrc":"9688:9:87","nodeType":"YulTypedName","src":"9688:9:87","type":""},{"name":"value0","nativeSrc":"9699:6:87","nodeType":"YulTypedName","src":"9699:6:87","type":""}],"returnVariables":[{"name":"tail","nativeSrc":"9710:4:87","nodeType":"YulTypedName","src":"9710:4:87","type":""}],"src":"9564:804:87"},{"body":{"nativeSrc":"10423:175:87","nodeType":"YulBlock","src":"10423:175:87","statements":[{"nativeSrc":"10433:50:87","nodeType":"YulVariableDeclaration","src":"10433:50:87","value":{"arguments":[{"arguments":[{"name":"x","nativeSrc":"10460:1:87","nodeType":"YulIdentifier","src":"10460:1:87"},{"kind":"number","nativeSrc":"10463:4:87","nodeType":"YulLiteral","src":"10463:4:87","type":"","value":"0xff"}],"functionName":{"name":"and","nativeSrc":"10456:3:87","nodeType":"YulIdentifier","src":"10456:3:87"},"nativeSrc":"10456:12:87","nodeType":"YulFunctionCall","src":"10456:12:87"},{"arguments":[{"name":"y","nativeSrc":"10474:1:87","nodeType":"YulIdentifier","src":"10474:1:87"},{"kind":"number","nativeSrc":"10477:4:87","nodeType":"YulLiteral","src":"10477:4:87","type":"","value":"0xff"}],"functionName":{"name":"and","nativeSrc":"10470:3:87","nodeType":"YulIdentifier","src":"10470:3:87"},"nativeSrc":"10470:12:87","nodeType":"YulFunctionCall","src":"10470:12:87"}],"functionName":{"name":"mul","nativeSrc":"10452:3:87","nodeType":"YulIdentifier","src":"10452:3:87"},"nativeSrc":"10452:31:87","nodeType":"YulFunctionCall","src":"10452:31:87"},"variables":[{"name":"product_raw","nativeSrc":"10437:11:87","nodeType":"YulTypedName","src":"10437:11:87","type":""}]},{"nativeSrc":"10492:33:87","nodeType":"YulAssignment","src":"10492:33:87","value":{"arguments":[{"name":"product_raw","nativeSrc":"10507:11:87","nodeType":"YulIdentifier","src":"10507:11:87"},{"kind":"number","nativeSrc":"10520:4:87","nodeType":"YulLiteral","src":"10520:4:87","type":"","value":"0xff"}],"functionName":{"name":"and","nativeSrc":"10503:3:87","nodeType":"YulIdentifier","src":"10503:3:87"},"nativeSrc":"10503:22:87","nodeType":"YulFunctionCall","src":"10503:22:87"},"variableNames":[{"name":"product","nativeSrc":"10492:7:87","nodeType":"YulIdentifier","src":"10492:7:87"}]},{"body":{"nativeSrc":"10570:22:87","nodeType":"YulBlock","src":"10570:22:87","statements":[{"expression":{"arguments":[],"functionName":{"name":"panic_error_0x11","nativeSrc":"10572:16:87","nodeType":"YulIdentifier","src":"10572:16:87"},"nativeSrc":"10572:18:87","nodeType":"YulFunctionCall","src":"10572:18:87"},"nativeSrc":"10572:18:87","nodeType":"YulExpressionStatement","src":"10572:18:87"}]},"condition":{"arguments":[{"arguments":[{"name":"product","nativeSrc":"10547:7:87","nodeType":"YulIdentifier","src":"10547:7:87"},{"name":"product_raw","nativeSrc":"10556:11:87","nodeType":"YulIdentifier","src":"10556:11:87"}],"functionName":{"name":"eq","nativeSrc":"10544:2:87","nodeType":"YulIdentifier","src":"10544:2:87"},"nativeSrc":"10544:24:87","nodeType":"YulFunctionCall","src":"10544:24:87"}],"functionName":{"name":"iszero","nativeSrc":"10537:6:87","nodeType":"YulIdentifier","src":"10537:6:87"},"nativeSrc":"10537:32:87","nodeType":"YulFunctionCall","src":"10537:32:87"},"nativeSrc":"10534:58:87","nodeType":"YulIf","src":"10534:58:87"}]},"name":"checked_mul_t_uint8","nativeSrc":"10373:225:87","nodeType":"YulFunctionDefinition","parameters":[{"name":"x","nativeSrc":"10402:1:87","nodeType":"YulTypedName","src":"10402:1:87","type":""},{"name":"y","nativeSrc":"10405:1:87","nodeType":"YulTypedName","src":"10405:1:87","type":""}],"returnVariables":[{"name":"product","nativeSrc":"10411:7:87","nodeType":"YulTypedName","src":"10411:7:87","type":""}],"src":"10373:225:87"},{"body":{"nativeSrc":"10635:95:87","nodeType":"YulBlock","src":"10635:95:87","statements":[{"expression":{"arguments":[{"kind":"number","nativeSrc":"10652:1:87","nodeType":"YulLiteral","src":"10652:1:87","type":"","value":"0"},{"arguments":[{"kind":"number","nativeSrc":"10659:3:87","nodeType":"YulLiteral","src":"10659:3:87","type":"","value":"224"},{"kind":"number","nativeSrc":"10664:10:87","nodeType":"YulLiteral","src":"10664:10:87","type":"","value":"0x4e487b71"}],"functionName":{"name":"shl","nativeSrc":"10655:3:87","nodeType":"YulIdentifier","src":"10655:3:87"},"nativeSrc":"10655:20:87","nodeType":"YulFunctionCall","src":"10655:20:87"}],"functionName":{"name":"mstore","nativeSrc":"10645:6:87","nodeType":"YulIdentifier","src":"10645:6:87"},"nativeSrc":"10645:31:87","nodeType":"YulFunctionCall","src":"10645:31:87"},"nativeSrc":"10645:31:87","nodeType":"YulExpressionStatement","src":"10645:31:87"},{"expression":{"arguments":[{"kind":"number","nativeSrc":"10692:1:87","nodeType":"YulLiteral","src":"10692:1:87","type":"","value":"4"},{"kind":"number","nativeSrc":"10695:4:87","nodeType":"YulLiteral","src":"10695:4:87","type":"","value":"0x12"}],"functionName":{"name":"mstore","nativeSrc":"10685:6:87","nodeType":"YulIdentifier","src":"10685:6:87"},"nativeSrc":"10685:15:87","nodeType":"YulFunctionCall","src":"10685:15:87"},"nativeSrc":"10685:15:87","nodeType":"YulExpressionStatement","src":"10685:15:87"},{"expression":{"arguments":[{"kind":"number","nativeSrc":"10716:1:87","nodeType":"YulLiteral","src":"10716:1:87","type":"","value":"0"},{"kind":"number","nativeSrc":"10719:4:87","nodeType":"YulLiteral","src":"10719:4:87","type":"","value":"0x24"}],"functionName":{"name":"revert","nativeSrc":"10709:6:87","nodeType":"YulIdentifier","src":"10709:6:87"},"nativeSrc":"10709:15:87","nodeType":"YulFunctionCall","src":"10709:15:87"},"nativeSrc":"10709:15:87","nodeType":"YulExpressionStatement","src":"10709:15:87"}]},"name":"panic_error_0x12","nativeSrc":"10603:127:87","nodeType":"YulFunctionDefinition","src":"10603:127:87"},{"body":{"nativeSrc":"10781:171:87","nodeType":"YulBlock","src":"10781:171:87","statements":[{"body":{"nativeSrc":"10812:111:87","nodeType":"YulBlock","src":"10812:111:87","statements":[{"expression":{"arguments":[{"kind":"number","nativeSrc":"10833:1:87","nodeType":"YulLiteral","src":"10833:1:87","type":"","value":"0"},{"arguments":[{"kind":"number","nativeSrc":"10840:3:87","nodeType":"YulLiteral","src":"10840:3:87","type":"","value":"224"},{"kind":"number","nativeSrc":"10845:10:87","nodeType":"YulLiteral","src":"10845:10:87","type":"","value":"0x4e487b71"}],"functionName":{"name":"shl","nativeSrc":"10836:3:87","nodeType":"YulIdentifier","src":"10836:3:87"},"nativeSrc":"10836:20:87","nodeType":"YulFunctionCall","src":"10836:20:87"}],"functionName":{"name":"mstore","nativeSrc":"10826:6:87","nodeType":"YulIdentifier","src":"10826:6:87"},"nativeSrc":"10826:31:87","nodeType":"YulFunctionCall","src":"10826:31:87"},"nativeSrc":"10826:31:87","nodeType":"YulExpressionStatement","src":"10826:31:87"},{"expression":{"arguments":[{"kind":"number","nativeSrc":"10877:1:87","nodeType":"YulLiteral","src":"10877:1:87","type":"","value":"4"},{"kind":"number","nativeSrc":"10880:4:87","nodeType":"YulLiteral","src":"10880:4:87","type":"","value":"0x12"}],"functionName":{"name":"mstore","nativeSrc":"10870:6:87","nodeType":"YulIdentifier","src":"10870:6:87"},"nativeSrc":"10870:15:87","nodeType":"YulFunctionCall","src":"10870:15:87"},"nativeSrc":"10870:15:87","nodeType":"YulExpressionStatement","src":"10870:15:87"},{"expression":{"arguments":[{"kind":"number","nativeSrc":"10905:1:87","nodeType":"YulLiteral","src":"10905:1:87","type":"","value":"0"},{"kind":"number","nativeSrc":"10908:4:87","nodeType":"YulLiteral","src":"10908:4:87","type":"","value":"0x24"}],"functionName":{"name":"revert","nativeSrc":"10898:6:87","nodeType":"YulIdentifier","src":"10898:6:87"},"nativeSrc":"10898:15:87","nodeType":"YulFunctionCall","src":"10898:15:87"},"nativeSrc":"10898:15:87","nodeType":"YulExpressionStatement","src":"10898:15:87"}]},"condition":{"arguments":[{"name":"y","nativeSrc":"10801:1:87","nodeType":"YulIdentifier","src":"10801:1:87"}],"functionName":{"name":"iszero","nativeSrc":"10794:6:87","nodeType":"YulIdentifier","src":"10794:6:87"},"nativeSrc":"10794:9:87","nodeType":"YulFunctionCall","src":"10794:9:87"},"nativeSrc":"10791:132:87","nodeType":"YulIf","src":"10791:132:87"},{"nativeSrc":"10932:14:87","nodeType":"YulAssignment","src":"10932:14:87","value":{"arguments":[{"name":"x","nativeSrc":"10941:1:87","nodeType":"YulIdentifier","src":"10941:1:87"},{"name":"y","nativeSrc":"10944:1:87","nodeType":"YulIdentifier","src":"10944:1:87"}],"functionName":{"name":"div","nativeSrc":"10937:3:87","nodeType":"YulIdentifier","src":"10937:3:87"},"nativeSrc":"10937:9:87","nodeType":"YulFunctionCall","src":"10937:9:87"},"variableNames":[{"name":"r","nativeSrc":"10932:1:87","nodeType":"YulIdentifier","src":"10932:1:87"}]}]},"name":"checked_div_t_uint256","nativeSrc":"10735:217:87","nodeType":"YulFunctionDefinition","parameters":[{"name":"x","nativeSrc":"10766:1:87","nodeType":"YulTypedName","src":"10766:1:87","type":""},{"name":"y","nativeSrc":"10769:1:87","nodeType":"YulTypedName","src":"10769:1:87","type":""}],"returnVariables":[{"name":"r","nativeSrc":"10775:1:87","nodeType":"YulTypedName","src":"10775:1:87","type":""}],"src":"10735:217:87"},{"body":{"nativeSrc":"11328:283:87","nodeType":"YulBlock","src":"11328:283:87","statements":[{"nativeSrc":"11338:28:87","nodeType":"YulAssignment","src":"11338:28:87","value":{"arguments":[{"name":"headStart","nativeSrc":"11350:9:87","nodeType":"YulIdentifier","src":"11350:9:87"},{"kind":"number","nativeSrc":"11361:4:87","nodeType":"YulLiteral","src":"11361:4:87","type":"","value":"1344"}],"functionName":{"name":"add","nativeSrc":"11346:3:87","nodeType":"YulIdentifier","src":"11346:3:87"},"nativeSrc":"11346:20:87","nodeType":"YulFunctionCall","src":"11346:20:87"},"variableNames":[{"name":"tail","nativeSrc":"11338:4:87","nodeType":"YulIdentifier","src":"11338:4:87"}]},{"expression":{"arguments":[{"name":"value0","nativeSrc":"11400:6:87","nodeType":"YulIdentifier","src":"11400:6:87"},{"name":"headStart","nativeSrc":"11408:9:87","nodeType":"YulIdentifier","src":"11408:9:87"}],"functionName":{"name":"abi_encode_array_address","nativeSrc":"11375:24:87","nodeType":"YulIdentifier","src":"11375:24:87"},"nativeSrc":"11375:43:87","nodeType":"YulFunctionCall","src":"11375:43:87"},"nativeSrc":"11375:43:87","nodeType":"YulExpressionStatement","src":"11375:43:87"},{"expression":{"arguments":[{"name":"value1","nativeSrc":"11458:6:87","nodeType":"YulIdentifier","src":"11458:6:87"},{"arguments":[{"name":"headStart","nativeSrc":"11470:9:87","nodeType":"YulIdentifier","src":"11470:9:87"},{"kind":"number","nativeSrc":"11481:3:87","nodeType":"YulLiteral","src":"11481:3:87","type":"","value":"352"}],"functionName":{"name":"add","nativeSrc":"11466:3:87","nodeType":"YulIdentifier","src":"11466:3:87"},"nativeSrc":"11466:19:87","nodeType":"YulFunctionCall","src":"11466:19:87"}],"functionName":{"name":"abi_encode_array_array_uint256","nativeSrc":"11427:30:87","nodeType":"YulIdentifier","src":"11427:30:87"},"nativeSrc":"11427:59:87","nodeType":"YulFunctionCall","src":"11427:59:87"},"nativeSrc":"11427:59:87","nodeType":"YulExpressionStatement","src":"11427:59:87"},{"expression":{"arguments":[{"arguments":[{"name":"headStart","nativeSrc":"11506:9:87","nodeType":"YulIdentifier","src":"11506:9:87"},{"kind":"number","nativeSrc":"11517:4:87","nodeType":"YulLiteral","src":"11517:4:87","type":"","value":"1152"}],"functionName":{"name":"add","nativeSrc":"11502:3:87","nodeType":"YulIdentifier","src":"11502:3:87"},"nativeSrc":"11502:20:87","nodeType":"YulFunctionCall","src":"11502:20:87"},{"name":"value2","nativeSrc":"11524:6:87","nodeType":"YulIdentifier","src":"11524:6:87"}],"functionName":{"name":"mstore","nativeSrc":"11495:6:87","nodeType":"YulIdentifier","src":"11495:6:87"},"nativeSrc":"11495:36:87","nodeType":"YulFunctionCall","src":"11495:36:87"},"nativeSrc":"11495:36:87","nodeType":"YulExpressionStatement","src":"11495:36:87"},{"expression":{"arguments":[{"name":"value3","nativeSrc":"11576:6:87","nodeType":"YulIdentifier","src":"11576:6:87"},{"arguments":[{"name":"headStart","nativeSrc":"11588:9:87","nodeType":"YulIdentifier","src":"11588:9:87"},{"kind":"number","nativeSrc":"11599:4:87","nodeType":"YulLiteral","src":"11599:4:87","type":"","value":"1184"}],"functionName":{"name":"add","nativeSrc":"11584:3:87","nodeType":"YulIdentifier","src":"11584:3:87"},"nativeSrc":"11584:20:87","nodeType":"YulFunctionCall","src":"11584:20:87"}],"functionName":{"name":"abi_encode_array_address_memory_ptr","nativeSrc":"11540:35:87","nodeType":"YulIdentifier","src":"11540:35:87"},"nativeSrc":"11540:65:87","nodeType":"YulFunctionCall","src":"11540:65:87"},"nativeSrc":"11540:65:87","nodeType":"YulExpressionStatement","src":"11540:65:87"}]},"name":"abi_encode_tuple_t_array$_t_address_$11_memory_ptr_t_array$_t_array$_t_uint256_$5_memory_ptr_$5_memory_ptr_t_uint256_t_array$_t_address_$5_memory_ptr__to_t_array$_t_address_$11_memory_ptr_t_array$_t_array$_t_uint256_$5_memory_ptr_$5_memory_ptr_t_uint256_t_array$_t_address_$5_memory_ptr__fromStack_reversed","nativeSrc":"10957:654:87","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nativeSrc":"11273:9:87","nodeType":"YulTypedName","src":"11273:9:87","type":""},{"name":"value3","nativeSrc":"11284:6:87","nodeType":"YulTypedName","src":"11284:6:87","type":""},{"name":"value2","nativeSrc":"11292:6:87","nodeType":"YulTypedName","src":"11292:6:87","type":""},{"name":"value1","nativeSrc":"11300:6:87","nodeType":"YulTypedName","src":"11300:6:87","type":""},{"name":"value0","nativeSrc":"11308:6:87","nodeType":"YulTypedName","src":"11308:6:87","type":""}],"returnVariables":[{"name":"tail","nativeSrc":"11319:4:87","nodeType":"YulTypedName","src":"11319:4:87","type":""}],"src":"10957:654:87"},{"body":{"nativeSrc":"12051:399:87","nodeType":"YulBlock","src":"12051:399:87","statements":[{"nativeSrc":"12061:28:87","nodeType":"YulAssignment","src":"12061:28:87","value":{"arguments":[{"name":"headStart","nativeSrc":"12073:9:87","nodeType":"YulIdentifier","src":"12073:9:87"},{"kind":"number","nativeSrc":"12084:4:87","nodeType":"YulLiteral","src":"12084:4:87","type":"","value":"1408"}],"functionName":{"name":"add","nativeSrc":"12069:3:87","nodeType":"YulIdentifier","src":"12069:3:87"},"nativeSrc":"12069:20:87","nodeType":"YulFunctionCall","src":"12069:20:87"},"variableNames":[{"name":"tail","nativeSrc":"12061:4:87","nodeType":"YulIdentifier","src":"12061:4:87"}]},{"expression":{"arguments":[{"name":"value0","nativeSrc":"12123:6:87","nodeType":"YulIdentifier","src":"12123:6:87"},{"name":"headStart","nativeSrc":"12131:9:87","nodeType":"YulIdentifier","src":"12131:9:87"}],"functionName":{"name":"abi_encode_array_address","nativeSrc":"12098:24:87","nodeType":"YulIdentifier","src":"12098:24:87"},"nativeSrc":"12098:43:87","nodeType":"YulFunctionCall","src":"12098:43:87"},"nativeSrc":"12098:43:87","nodeType":"YulExpressionStatement","src":"12098:43:87"},{"expression":{"arguments":[{"name":"value1","nativeSrc":"12181:6:87","nodeType":"YulIdentifier","src":"12181:6:87"},{"arguments":[{"name":"headStart","nativeSrc":"12193:9:87","nodeType":"YulIdentifier","src":"12193:9:87"},{"kind":"number","nativeSrc":"12204:3:87","nodeType":"YulLiteral","src":"12204:3:87","type":"","value":"352"}],"functionName":{"name":"add","nativeSrc":"12189:3:87","nodeType":"YulIdentifier","src":"12189:3:87"},"nativeSrc":"12189:19:87","nodeType":"YulFunctionCall","src":"12189:19:87"}],"functionName":{"name":"abi_encode_array_array_uint256","nativeSrc":"12150:30:87","nodeType":"YulIdentifier","src":"12150:30:87"},"nativeSrc":"12150:59:87","nodeType":"YulFunctionCall","src":"12150:59:87"},"nativeSrc":"12150:59:87","nodeType":"YulExpressionStatement","src":"12150:59:87"},{"expression":{"arguments":[{"arguments":[{"name":"headStart","nativeSrc":"12229:9:87","nodeType":"YulIdentifier","src":"12229:9:87"},{"kind":"number","nativeSrc":"12240:4:87","nodeType":"YulLiteral","src":"12240:4:87","type":"","value":"1152"}],"functionName":{"name":"add","nativeSrc":"12225:3:87","nodeType":"YulIdentifier","src":"12225:3:87"},"nativeSrc":"12225:20:87","nodeType":"YulFunctionCall","src":"12225:20:87"},{"name":"value2","nativeSrc":"12247:6:87","nodeType":"YulIdentifier","src":"12247:6:87"}],"functionName":{"name":"mstore","nativeSrc":"12218:6:87","nodeType":"YulIdentifier","src":"12218:6:87"},"nativeSrc":"12218:36:87","nodeType":"YulFunctionCall","src":"12218:36:87"},"nativeSrc":"12218:36:87","nodeType":"YulExpressionStatement","src":"12218:36:87"},{"expression":{"arguments":[{"arguments":[{"name":"headStart","nativeSrc":"12274:9:87","nodeType":"YulIdentifier","src":"12274:9:87"},{"kind":"number","nativeSrc":"12285:4:87","nodeType":"YulLiteral","src":"12285:4:87","type":"","value":"1184"}],"functionName":{"name":"add","nativeSrc":"12270:3:87","nodeType":"YulIdentifier","src":"12270:3:87"},"nativeSrc":"12270:20:87","nodeType":"YulFunctionCall","src":"12270:20:87"},{"name":"value3","nativeSrc":"12292:6:87","nodeType":"YulIdentifier","src":"12292:6:87"}],"functionName":{"name":"mstore","nativeSrc":"12263:6:87","nodeType":"YulIdentifier","src":"12263:6:87"},"nativeSrc":"12263:36:87","nodeType":"YulFunctionCall","src":"12263:36:87"},"nativeSrc":"12263:36:87","nodeType":"YulExpressionStatement","src":"12263:36:87"},{"expression":{"arguments":[{"name":"value4","nativeSrc":"12344:6:87","nodeType":"YulIdentifier","src":"12344:6:87"},{"arguments":[{"name":"headStart","nativeSrc":"12356:9:87","nodeType":"YulIdentifier","src":"12356:9:87"},{"kind":"number","nativeSrc":"12367:4:87","nodeType":"YulLiteral","src":"12367:4:87","type":"","value":"1216"}],"functionName":{"name":"add","nativeSrc":"12352:3:87","nodeType":"YulIdentifier","src":"12352:3:87"},"nativeSrc":"12352:20:87","nodeType":"YulFunctionCall","src":"12352:20:87"}],"functionName":{"name":"abi_encode_array_address_memory_ptr","nativeSrc":"12308:35:87","nodeType":"YulIdentifier","src":"12308:35:87"},"nativeSrc":"12308:65:87","nodeType":"YulFunctionCall","src":"12308:65:87"},"nativeSrc":"12308:65:87","nodeType":"YulExpressionStatement","src":"12308:65:87"},{"expression":{"arguments":[{"arguments":[{"name":"headStart","nativeSrc":"12393:9:87","nodeType":"YulIdentifier","src":"12393:9:87"},{"kind":"number","nativeSrc":"12404:4:87","nodeType":"YulLiteral","src":"12404:4:87","type":"","value":"1376"}],"functionName":{"name":"add","nativeSrc":"12389:3:87","nodeType":"YulIdentifier","src":"12389:3:87"},"nativeSrc":"12389:20:87","nodeType":"YulFunctionCall","src":"12389:20:87"},{"arguments":[{"name":"value5","nativeSrc":"12415:6:87","nodeType":"YulIdentifier","src":"12415:6:87"},{"arguments":[{"arguments":[{"kind":"number","nativeSrc":"12431:3:87","nodeType":"YulLiteral","src":"12431:3:87","type":"","value":"160"},{"kind":"number","nativeSrc":"12436:1:87","nodeType":"YulLiteral","src":"12436:1:87","type":"","value":"1"}],"functionName":{"name":"shl","nativeSrc":"12427:3:87","nodeType":"YulIdentifier","src":"12427:3:87"},"nativeSrc":"12427:11:87","nodeType":"YulFunctionCall","src":"12427:11:87"},{"kind":"number","nativeSrc":"12440:1:87","nodeType":"YulLiteral","src":"12440:1:87","type":"","value":"1"}],"functionName":{"name":"sub","nativeSrc":"12423:3:87","nodeType":"YulIdentifier","src":"12423:3:87"},"nativeSrc":"12423:19:87","nodeType":"YulFunctionCall","src":"12423:19:87"}],"functionName":{"name":"and","nativeSrc":"12411:3:87","nodeType":"YulIdentifier","src":"12411:3:87"},"nativeSrc":"12411:32:87","nodeType":"YulFunctionCall","src":"12411:32:87"}],"functionName":{"name":"mstore","nativeSrc":"12382:6:87","nodeType":"YulIdentifier","src":"12382:6:87"},"nativeSrc":"12382:62:87","nodeType":"YulFunctionCall","src":"12382:62:87"},"nativeSrc":"12382:62:87","nodeType":"YulExpressionStatement","src":"12382:62:87"}]},"name":"abi_encode_tuple_t_array$_t_address_$11_memory_ptr_t_array$_t_array$_t_uint256_$5_memory_ptr_$5_memory_ptr_t_uint256_t_rational_0_by_1_t_array$_t_address_$5_memory_ptr_t_address__to_t_array$_t_address_$11_memory_ptr_t_array$_t_array$_t_uint256_$5_memory_ptr_$5_memory_ptr_t_uint256_t_uint256_t_array$_t_address_$5_memory_ptr_t_address__fromStack_reversed","nativeSrc":"11616:834:87","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nativeSrc":"11980:9:87","nodeType":"YulTypedName","src":"11980:9:87","type":""},{"name":"value5","nativeSrc":"11991:6:87","nodeType":"YulTypedName","src":"11991:6:87","type":""},{"name":"value4","nativeSrc":"11999:6:87","nodeType":"YulTypedName","src":"11999:6:87","type":""},{"name":"value3","nativeSrc":"12007:6:87","nodeType":"YulTypedName","src":"12007:6:87","type":""},{"name":"value2","nativeSrc":"12015:6:87","nodeType":"YulTypedName","src":"12015:6:87","type":""},{"name":"value1","nativeSrc":"12023:6:87","nodeType":"YulTypedName","src":"12023:6:87","type":""},{"name":"value0","nativeSrc":"12031:6:87","nodeType":"YulTypedName","src":"12031:6:87","type":""}],"returnVariables":[{"name":"tail","nativeSrc":"12042:4:87","nodeType":"YulTypedName","src":"12042:4:87","type":""}],"src":"11616:834:87"},{"body":{"nativeSrc":"12629:171:87","nodeType":"YulBlock","src":"12629:171:87","statements":[{"expression":{"arguments":[{"name":"headStart","nativeSrc":"12646:9:87","nodeType":"YulIdentifier","src":"12646:9:87"},{"kind":"number","nativeSrc":"12657:2:87","nodeType":"YulLiteral","src":"12657:2:87","type":"","value":"32"}],"functionName":{"name":"mstore","nativeSrc":"12639:6:87","nodeType":"YulIdentifier","src":"12639:6:87"},"nativeSrc":"12639:21:87","nodeType":"YulFunctionCall","src":"12639:21:87"},"nativeSrc":"12639:21:87","nodeType":"YulExpressionStatement","src":"12639:21:87"},{"expression":{"arguments":[{"arguments":[{"name":"headStart","nativeSrc":"12680:9:87","nodeType":"YulIdentifier","src":"12680:9:87"},{"kind":"number","nativeSrc":"12691:2:87","nodeType":"YulLiteral","src":"12691:2:87","type":"","value":"32"}],"functionName":{"name":"add","nativeSrc":"12676:3:87","nodeType":"YulIdentifier","src":"12676:3:87"},"nativeSrc":"12676:18:87","nodeType":"YulFunctionCall","src":"12676:18:87"},{"kind":"number","nativeSrc":"12696:2:87","nodeType":"YulLiteral","src":"12696:2:87","type":"","value":"21"}],"functionName":{"name":"mstore","nativeSrc":"12669:6:87","nodeType":"YulIdentifier","src":"12669:6:87"},"nativeSrc":"12669:30:87","nodeType":"YulFunctionCall","src":"12669:30:87"},"nativeSrc":"12669:30:87","nodeType":"YulExpressionStatement","src":"12669:30:87"},{"expression":{"arguments":[{"arguments":[{"name":"headStart","nativeSrc":"12719:9:87","nodeType":"YulIdentifier","src":"12719:9:87"},{"kind":"number","nativeSrc":"12730:2:87","nodeType":"YulLiteral","src":"12730:2:87","type":"","value":"64"}],"functionName":{"name":"add","nativeSrc":"12715:3:87","nodeType":"YulIdentifier","src":"12715:3:87"},"nativeSrc":"12715:18:87","nodeType":"YulFunctionCall","src":"12715:18:87"},{"hexValue":"746f416464726573735f6f75744f66426f756e6473","kind":"string","nativeSrc":"12735:23:87","nodeType":"YulLiteral","src":"12735:23:87","type":"","value":"toAddress_outOfBounds"}],"functionName":{"name":"mstore","nativeSrc":"12708:6:87","nodeType":"YulIdentifier","src":"12708:6:87"},"nativeSrc":"12708:51:87","nodeType":"YulFunctionCall","src":"12708:51:87"},"nativeSrc":"12708:51:87","nodeType":"YulExpressionStatement","src":"12708:51:87"},{"nativeSrc":"12768:26:87","nodeType":"YulAssignment","src":"12768:26:87","value":{"arguments":[{"name":"headStart","nativeSrc":"12780:9:87","nodeType":"YulIdentifier","src":"12780:9:87"},{"kind":"number","nativeSrc":"12791:2:87","nodeType":"YulLiteral","src":"12791:2:87","type":"","value":"96"}],"functionName":{"name":"add","nativeSrc":"12776:3:87","nodeType":"YulIdentifier","src":"12776:3:87"},"nativeSrc":"12776:18:87","nodeType":"YulFunctionCall","src":"12776:18:87"},"variableNames":[{"name":"tail","nativeSrc":"12768:4:87","nodeType":"YulIdentifier","src":"12768:4:87"}]}]},"name":"abi_encode_tuple_t_stringliteral_9f688071e1df0f70b63e3651005878331be1fe9591d6cfb3187cb52a13439e5d__to_t_string_memory_ptr__fromStack_reversed","nativeSrc":"12455:345:87","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nativeSrc":"12606:9:87","nodeType":"YulTypedName","src":"12606:9:87","type":""}],"returnVariables":[{"name":"tail","nativeSrc":"12620:4:87","nodeType":"YulTypedName","src":"12620:4:87","type":""}],"src":"12455:345:87"},{"body":{"nativeSrc":"12979:169:87","nodeType":"YulBlock","src":"12979:169:87","statements":[{"expression":{"arguments":[{"name":"headStart","nativeSrc":"12996:9:87","nodeType":"YulIdentifier","src":"12996:9:87"},{"kind":"number","nativeSrc":"13007:2:87","nodeType":"YulLiteral","src":"13007:2:87","type":"","value":"32"}],"functionName":{"name":"mstore","nativeSrc":"12989:6:87","nodeType":"YulIdentifier","src":"12989:6:87"},"nativeSrc":"12989:21:87","nodeType":"YulFunctionCall","src":"12989:21:87"},"nativeSrc":"12989:21:87","nodeType":"YulExpressionStatement","src":"12989:21:87"},{"expression":{"arguments":[{"arguments":[{"name":"headStart","nativeSrc":"13030:9:87","nodeType":"YulIdentifier","src":"13030:9:87"},{"kind":"number","nativeSrc":"13041:2:87","nodeType":"YulLiteral","src":"13041:2:87","type":"","value":"32"}],"functionName":{"name":"add","nativeSrc":"13026:3:87","nodeType":"YulIdentifier","src":"13026:3:87"},"nativeSrc":"13026:18:87","nodeType":"YulFunctionCall","src":"13026:18:87"},{"kind":"number","nativeSrc":"13046:2:87","nodeType":"YulLiteral","src":"13046:2:87","type":"","value":"19"}],"functionName":{"name":"mstore","nativeSrc":"13019:6:87","nodeType":"YulIdentifier","src":"13019:6:87"},"nativeSrc":"13019:30:87","nodeType":"YulFunctionCall","src":"13019:30:87"},"nativeSrc":"13019:30:87","nodeType":"YulExpressionStatement","src":"13019:30:87"},{"expression":{"arguments":[{"arguments":[{"name":"headStart","nativeSrc":"13069:9:87","nodeType":"YulIdentifier","src":"13069:9:87"},{"kind":"number","nativeSrc":"13080:2:87","nodeType":"YulLiteral","src":"13080:2:87","type":"","value":"64"}],"functionName":{"name":"add","nativeSrc":"13065:3:87","nodeType":"YulIdentifier","src":"13065:3:87"},"nativeSrc":"13065:18:87","nodeType":"YulFunctionCall","src":"13065:18:87"},{"hexValue":"746f55696e74385f6f75744f66426f756e6473","kind":"string","nativeSrc":"13085:21:87","nodeType":"YulLiteral","src":"13085:21:87","type":"","value":"toUint8_outOfBounds"}],"functionName":{"name":"mstore","nativeSrc":"13058:6:87","nodeType":"YulIdentifier","src":"13058:6:87"},"nativeSrc":"13058:49:87","nodeType":"YulFunctionCall","src":"13058:49:87"},"nativeSrc":"13058:49:87","nodeType":"YulExpressionStatement","src":"13058:49:87"},{"nativeSrc":"13116:26:87","nodeType":"YulAssignment","src":"13116:26:87","value":{"arguments":[{"name":"headStart","nativeSrc":"13128:9:87","nodeType":"YulIdentifier","src":"13128:9:87"},{"kind":"number","nativeSrc":"13139:2:87","nodeType":"YulLiteral","src":"13139:2:87","type":"","value":"96"}],"functionName":{"name":"add","nativeSrc":"13124:3:87","nodeType":"YulIdentifier","src":"13124:3:87"},"nativeSrc":"13124:18:87","nodeType":"YulFunctionCall","src":"13124:18:87"},"variableNames":[{"name":"tail","nativeSrc":"13116:4:87","nodeType":"YulIdentifier","src":"13116:4:87"}]}]},"name":"abi_encode_tuple_t_stringliteral_ce6d7be00009dd45cc670fb6c2ceee25786f142bcb64e7f1ee73012b26bb6ca1__to_t_string_memory_ptr__fromStack_reversed","nativeSrc":"12805:343:87","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nativeSrc":"12956:9:87","nodeType":"YulTypedName","src":"12956:9:87","type":""}],"returnVariables":[{"name":"tail","nativeSrc":"12970:4:87","nodeType":"YulTypedName","src":"12970:4:87","type":""}],"src":"12805:343:87"},{"body":{"nativeSrc":"13250:87:87","nodeType":"YulBlock","src":"13250:87:87","statements":[{"nativeSrc":"13260:26:87","nodeType":"YulAssignment","src":"13260:26:87","value":{"arguments":[{"name":"headStart","nativeSrc":"13272:9:87","nodeType":"YulIdentifier","src":"13272:9:87"},{"kind":"number","nativeSrc":"13283:2:87","nodeType":"YulLiteral","src":"13283:2:87","type":"","value":"32"}],"functionName":{"name":"add","nativeSrc":"13268:3:87","nodeType":"YulIdentifier","src":"13268:3:87"},"nativeSrc":"13268:18:87","nodeType":"YulFunctionCall","src":"13268:18:87"},"variableNames":[{"name":"tail","nativeSrc":"13260:4:87","nodeType":"YulIdentifier","src":"13260:4:87"}]},{"expression":{"arguments":[{"name":"headStart","nativeSrc":"13302:9:87","nodeType":"YulIdentifier","src":"13302:9:87"},{"arguments":[{"name":"value0","nativeSrc":"13317:6:87","nodeType":"YulIdentifier","src":"13317:6:87"},{"kind":"number","nativeSrc":"13325:4:87","nodeType":"YulLiteral","src":"13325:4:87","type":"","value":"0xff"}],"functionName":{"name":"and","nativeSrc":"13313:3:87","nodeType":"YulIdentifier","src":"13313:3:87"},"nativeSrc":"13313:17:87","nodeType":"YulFunctionCall","src":"13313:17:87"}],"functionName":{"name":"mstore","nativeSrc":"13295:6:87","nodeType":"YulIdentifier","src":"13295:6:87"},"nativeSrc":"13295:36:87","nodeType":"YulFunctionCall","src":"13295:36:87"},"nativeSrc":"13295:36:87","nodeType":"YulExpressionStatement","src":"13295:36:87"}]},"name":"abi_encode_tuple_t_uint8__to_t_uint8__fromStack_reversed","nativeSrc":"13153:184:87","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nativeSrc":"13219:9:87","nodeType":"YulTypedName","src":"13219:9:87","type":""},{"name":"value0","nativeSrc":"13230:6:87","nodeType":"YulTypedName","src":"13230:6:87","type":""}],"returnVariables":[{"name":"tail","nativeSrc":"13241:4:87","nodeType":"YulTypedName","src":"13241:4:87","type":""}],"src":"13153:184:87"},{"body":{"nativeSrc":"13388:102:87","nodeType":"YulBlock","src":"13388:102:87","statements":[{"nativeSrc":"13398:38:87","nodeType":"YulAssignment","src":"13398:38:87","value":{"arguments":[{"arguments":[{"name":"x","nativeSrc":"13413:1:87","nodeType":"YulIdentifier","src":"13413:1:87"},{"kind":"number","nativeSrc":"13416:4:87","nodeType":"YulLiteral","src":"13416:4:87","type":"","value":"0xff"}],"functionName":{"name":"and","nativeSrc":"13409:3:87","nodeType":"YulIdentifier","src":"13409:3:87"},"nativeSrc":"13409:12:87","nodeType":"YulFunctionCall","src":"13409:12:87"},{"arguments":[{"name":"y","nativeSrc":"13427:1:87","nodeType":"YulIdentifier","src":"13427:1:87"},{"kind":"number","nativeSrc":"13430:4:87","nodeType":"YulLiteral","src":"13430:4:87","type":"","value":"0xff"}],"functionName":{"name":"and","nativeSrc":"13423:3:87","nodeType":"YulIdentifier","src":"13423:3:87"},"nativeSrc":"13423:12:87","nodeType":"YulFunctionCall","src":"13423:12:87"}],"functionName":{"name":"add","nativeSrc":"13405:3:87","nodeType":"YulIdentifier","src":"13405:3:87"},"nativeSrc":"13405:31:87","nodeType":"YulFunctionCall","src":"13405:31:87"},"variableNames":[{"name":"sum","nativeSrc":"13398:3:87","nodeType":"YulIdentifier","src":"13398:3:87"}]},{"body":{"nativeSrc":"13462:22:87","nodeType":"YulBlock","src":"13462:22:87","statements":[{"expression":{"arguments":[],"functionName":{"name":"panic_error_0x11","nativeSrc":"13464:16:87","nodeType":"YulIdentifier","src":"13464:16:87"},"nativeSrc":"13464:18:87","nodeType":"YulFunctionCall","src":"13464:18:87"},"nativeSrc":"13464:18:87","nodeType":"YulExpressionStatement","src":"13464:18:87"}]},"condition":{"arguments":[{"name":"sum","nativeSrc":"13451:3:87","nodeType":"YulIdentifier","src":"13451:3:87"},{"kind":"number","nativeSrc":"13456:4:87","nodeType":"YulLiteral","src":"13456:4:87","type":"","value":"0xff"}],"functionName":{"name":"gt","nativeSrc":"13448:2:87","nodeType":"YulIdentifier","src":"13448:2:87"},"nativeSrc":"13448:13:87","nodeType":"YulFunctionCall","src":"13448:13:87"},"nativeSrc":"13445:39:87","nodeType":"YulIf","src":"13445:39:87"}]},"name":"checked_add_t_uint8","nativeSrc":"13342:148:87","nodeType":"YulFunctionDefinition","parameters":[{"name":"x","nativeSrc":"13371:1:87","nodeType":"YulTypedName","src":"13371:1:87","type":""},{"name":"y","nativeSrc":"13374:1:87","nodeType":"YulTypedName","src":"13374:1:87","type":""}],"returnVariables":[{"name":"sum","nativeSrc":"13380:3:87","nodeType":"YulTypedName","src":"13380:3:87","type":""}],"src":"13342:148:87"},{"body":{"nativeSrc":"13574:194:87","nodeType":"YulBlock","src":"13574:194:87","statements":[{"body":{"nativeSrc":"13620:16:87","nodeType":"YulBlock","src":"13620:16:87","statements":[{"expression":{"arguments":[{"kind":"number","nativeSrc":"13629:1:87","nodeType":"YulLiteral","src":"13629:1:87","type":"","value":"0"},{"kind":"number","nativeSrc":"13632:1:87","nodeType":"YulLiteral","src":"13632:1:87","type":"","value":"0"}],"functionName":{"name":"revert","nativeSrc":"13622:6:87","nodeType":"YulIdentifier","src":"13622:6:87"},"nativeSrc":"13622:12:87","nodeType":"YulFunctionCall","src":"13622:12:87"},"nativeSrc":"13622:12:87","nodeType":"YulExpressionStatement","src":"13622:12:87"}]},"condition":{"arguments":[{"arguments":[{"name":"dataEnd","nativeSrc":"13595:7:87","nodeType":"YulIdentifier","src":"13595:7:87"},{"name":"headStart","nativeSrc":"13604:9:87","nodeType":"YulIdentifier","src":"13604:9:87"}],"functionName":{"name":"sub","nativeSrc":"13591:3:87","nodeType":"YulIdentifier","src":"13591:3:87"},"nativeSrc":"13591:23:87","nodeType":"YulFunctionCall","src":"13591:23:87"},{"kind":"number","nativeSrc":"13616:2:87","nodeType":"YulLiteral","src":"13616:2:87","type":"","value":"32"}],"functionName":{"name":"slt","nativeSrc":"13587:3:87","nodeType":"YulIdentifier","src":"13587:3:87"},"nativeSrc":"13587:32:87","nodeType":"YulFunctionCall","src":"13587:32:87"},"nativeSrc":"13584:52:87","nodeType":"YulIf","src":"13584:52:87"},{"nativeSrc":"13645:29:87","nodeType":"YulVariableDeclaration","src":"13645:29:87","value":{"arguments":[{"name":"headStart","nativeSrc":"13664:9:87","nodeType":"YulIdentifier","src":"13664:9:87"}],"functionName":{"name":"mload","nativeSrc":"13658:5:87","nodeType":"YulIdentifier","src":"13658:5:87"},"nativeSrc":"13658:16:87","nodeType":"YulFunctionCall","src":"13658:16:87"},"variables":[{"name":"value","nativeSrc":"13649:5:87","nodeType":"YulTypedName","src":"13649:5:87","type":""}]},{"body":{"nativeSrc":"13722:16:87","nodeType":"YulBlock","src":"13722:16:87","statements":[{"expression":{"arguments":[{"kind":"number","nativeSrc":"13731:1:87","nodeType":"YulLiteral","src":"13731:1:87","type":"","value":"0"},{"kind":"number","nativeSrc":"13734:1:87","nodeType":"YulLiteral","src":"13734:1:87","type":"","value":"0"}],"functionName":{"name":"revert","nativeSrc":"13724:6:87","nodeType":"YulIdentifier","src":"13724:6:87"},"nativeSrc":"13724:12:87","nodeType":"YulFunctionCall","src":"13724:12:87"},"nativeSrc":"13724:12:87","nodeType":"YulExpressionStatement","src":"13724:12:87"}]},"condition":{"arguments":[{"arguments":[{"name":"value","nativeSrc":"13696:5:87","nodeType":"YulIdentifier","src":"13696:5:87"},{"arguments":[{"name":"value","nativeSrc":"13707:5:87","nodeType":"YulIdentifier","src":"13707:5:87"},{"kind":"number","nativeSrc":"13714:4:87","nodeType":"YulLiteral","src":"13714:4:87","type":"","value":"0xff"}],"functionName":{"name":"and","nativeSrc":"13703:3:87","nodeType":"YulIdentifier","src":"13703:3:87"},"nativeSrc":"13703:16:87","nodeType":"YulFunctionCall","src":"13703:16:87"}],"functionName":{"name":"eq","nativeSrc":"13693:2:87","nodeType":"YulIdentifier","src":"13693:2:87"},"nativeSrc":"13693:27:87","nodeType":"YulFunctionCall","src":"13693:27:87"}],"functionName":{"name":"iszero","nativeSrc":"13686:6:87","nodeType":"YulIdentifier","src":"13686:6:87"},"nativeSrc":"13686:35:87","nodeType":"YulFunctionCall","src":"13686:35:87"},"nativeSrc":"13683:55:87","nodeType":"YulIf","src":"13683:55:87"},{"nativeSrc":"13747:15:87","nodeType":"YulAssignment","src":"13747:15:87","value":{"name":"value","nativeSrc":"13757:5:87","nodeType":"YulIdentifier","src":"13757:5:87"},"variableNames":[{"name":"value0","nativeSrc":"13747:6:87","nodeType":"YulIdentifier","src":"13747:6:87"}]}]},"name":"abi_decode_tuple_t_uint8_fromMemory","nativeSrc":"13495:273:87","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nativeSrc":"13540:9:87","nodeType":"YulTypedName","src":"13540:9:87","type":""},{"name":"dataEnd","nativeSrc":"13551:7:87","nodeType":"YulTypedName","src":"13551:7:87","type":""}],"returnVariables":[{"name":"value0","nativeSrc":"13563:6:87","nodeType":"YulTypedName","src":"13563:6:87","type":""}],"src":"13495:273:87"},{"body":{"nativeSrc":"13820:104:87","nodeType":"YulBlock","src":"13820:104:87","statements":[{"nativeSrc":"13830:39:87","nodeType":"YulAssignment","src":"13830:39:87","value":{"arguments":[{"arguments":[{"name":"x","nativeSrc":"13846:1:87","nodeType":"YulIdentifier","src":"13846:1:87"},{"kind":"number","nativeSrc":"13849:4:87","nodeType":"YulLiteral","src":"13849:4:87","type":"","value":"0xff"}],"functionName":{"name":"and","nativeSrc":"13842:3:87","nodeType":"YulIdentifier","src":"13842:3:87"},"nativeSrc":"13842:12:87","nodeType":"YulFunctionCall","src":"13842:12:87"},{"arguments":[{"name":"y","nativeSrc":"13860:1:87","nodeType":"YulIdentifier","src":"13860:1:87"},{"kind":"number","nativeSrc":"13863:4:87","nodeType":"YulLiteral","src":"13863:4:87","type":"","value":"0xff"}],"functionName":{"name":"and","nativeSrc":"13856:3:87","nodeType":"YulIdentifier","src":"13856:3:87"},"nativeSrc":"13856:12:87","nodeType":"YulFunctionCall","src":"13856:12:87"}],"functionName":{"name":"sub","nativeSrc":"13838:3:87","nodeType":"YulIdentifier","src":"13838:3:87"},"nativeSrc":"13838:31:87","nodeType":"YulFunctionCall","src":"13838:31:87"},"variableNames":[{"name":"diff","nativeSrc":"13830:4:87","nodeType":"YulIdentifier","src":"13830:4:87"}]},{"body":{"nativeSrc":"13896:22:87","nodeType":"YulBlock","src":"13896:22:87","statements":[{"expression":{"arguments":[],"functionName":{"name":"panic_error_0x11","nativeSrc":"13898:16:87","nodeType":"YulIdentifier","src":"13898:16:87"},"nativeSrc":"13898:18:87","nodeType":"YulFunctionCall","src":"13898:18:87"},"nativeSrc":"13898:18:87","nodeType":"YulExpressionStatement","src":"13898:18:87"}]},"condition":{"arguments":[{"name":"diff","nativeSrc":"13884:4:87","nodeType":"YulIdentifier","src":"13884:4:87"},{"kind":"number","nativeSrc":"13890:4:87","nodeType":"YulLiteral","src":"13890:4:87","type":"","value":"0xff"}],"functionName":{"name":"gt","nativeSrc":"13881:2:87","nodeType":"YulIdentifier","src":"13881:2:87"},"nativeSrc":"13881:14:87","nodeType":"YulFunctionCall","src":"13881:14:87"},"nativeSrc":"13878:40:87","nodeType":"YulIf","src":"13878:40:87"}]},"name":"checked_sub_t_uint8","nativeSrc":"13773:151:87","nodeType":"YulFunctionDefinition","parameters":[{"name":"x","nativeSrc":"13802:1:87","nodeType":"YulTypedName","src":"13802:1:87","type":""},{"name":"y","nativeSrc":"13805:1:87","nodeType":"YulTypedName","src":"13805:1:87","type":""}],"returnVariables":[{"name":"diff","nativeSrc":"13811:4:87","nodeType":"YulTypedName","src":"13811:4:87","type":""}],"src":"13773:151:87"},{"body":{"nativeSrc":"13998:306:87","nodeType":"YulBlock","src":"13998:306:87","statements":[{"nativeSrc":"14008:10:87","nodeType":"YulAssignment","src":"14008:10:87","value":{"kind":"number","nativeSrc":"14017:1:87","nodeType":"YulLiteral","src":"14017:1:87","type":"","value":"1"},"variableNames":[{"name":"power","nativeSrc":"14008:5:87","nodeType":"YulIdentifier","src":"14008:5:87"}]},{"nativeSrc":"14027:13:87","nodeType":"YulAssignment","src":"14027:13:87","value":{"name":"_base","nativeSrc":"14035:5:87","nodeType":"YulIdentifier","src":"14035:5:87"},"variableNames":[{"name":"base","nativeSrc":"14027:4:87","nodeType":"YulIdentifier","src":"14027:4:87"}]},{"body":{"nativeSrc":"14085:213:87","nodeType":"YulBlock","src":"14085:213:87","statements":[{"body":{"nativeSrc":"14127:22:87","nodeType":"YulBlock","src":"14127:22:87","statements":[{"expression":{"arguments":[],"functionName":{"name":"panic_error_0x11","nativeSrc":"14129:16:87","nodeType":"YulIdentifier","src":"14129:16:87"},"nativeSrc":"14129:18:87","nodeType":"YulFunctionCall","src":"14129:18:87"},"nativeSrc":"14129:18:87","nodeType":"YulExpressionStatement","src":"14129:18:87"}]},"condition":{"arguments":[{"name":"base","nativeSrc":"14105:4:87","nodeType":"YulIdentifier","src":"14105:4:87"},{"arguments":[{"name":"max","nativeSrc":"14115:3:87","nodeType":"YulIdentifier","src":"14115:3:87"},{"name":"base","nativeSrc":"14120:4:87","nodeType":"YulIdentifier","src":"14120:4:87"}],"functionName":{"name":"div","nativeSrc":"14111:3:87","nodeType":"YulIdentifier","src":"14111:3:87"},"nativeSrc":"14111:14:87","nodeType":"YulFunctionCall","src":"14111:14:87"}],"functionName":{"name":"gt","nativeSrc":"14102:2:87","nodeType":"YulIdentifier","src":"14102:2:87"},"nativeSrc":"14102:24:87","nodeType":"YulFunctionCall","src":"14102:24:87"},"nativeSrc":"14099:50:87","nodeType":"YulIf","src":"14099:50:87"},{"body":{"nativeSrc":"14182:29:87","nodeType":"YulBlock","src":"14182:29:87","statements":[{"nativeSrc":"14184:25:87","nodeType":"YulAssignment","src":"14184:25:87","value":{"arguments":[{"name":"power","nativeSrc":"14197:5:87","nodeType":"YulIdentifier","src":"14197:5:87"},{"name":"base","nativeSrc":"14204:4:87","nodeType":"YulIdentifier","src":"14204:4:87"}],"functionName":{"name":"mul","nativeSrc":"14193:3:87","nodeType":"YulIdentifier","src":"14193:3:87"},"nativeSrc":"14193:16:87","nodeType":"YulFunctionCall","src":"14193:16:87"},"variableNames":[{"name":"power","nativeSrc":"14184:5:87","nodeType":"YulIdentifier","src":"14184:5:87"}]}]},"condition":{"arguments":[{"name":"exponent","nativeSrc":"14169:8:87","nodeType":"YulIdentifier","src":"14169:8:87"},{"kind":"number","nativeSrc":"14179:1:87","nodeType":"YulLiteral","src":"14179:1:87","type":"","value":"1"}],"functionName":{"name":"and","nativeSrc":"14165:3:87","nodeType":"YulIdentifier","src":"14165:3:87"},"nativeSrc":"14165:16:87","nodeType":"YulFunctionCall","src":"14165:16:87"},"nativeSrc":"14162:49:87","nodeType":"YulIf","src":"14162:49:87"},{"nativeSrc":"14224:23:87","nodeType":"YulAssignment","src":"14224:23:87","value":{"arguments":[{"name":"base","nativeSrc":"14236:4:87","nodeType":"YulIdentifier","src":"14236:4:87"},{"name":"base","nativeSrc":"14242:4:87","nodeType":"YulIdentifier","src":"14242:4:87"}],"functionName":{"name":"mul","nativeSrc":"14232:3:87","nodeType":"YulIdentifier","src":"14232:3:87"},"nativeSrc":"14232:15:87","nodeType":"YulFunctionCall","src":"14232:15:87"},"variableNames":[{"name":"base","nativeSrc":"14224:4:87","nodeType":"YulIdentifier","src":"14224:4:87"}]},{"nativeSrc":"14260:28:87","nodeType":"YulAssignment","src":"14260:28:87","value":{"arguments":[{"kind":"number","nativeSrc":"14276:1:87","nodeType":"YulLiteral","src":"14276:1:87","type":"","value":"1"},{"name":"exponent","nativeSrc":"14279:8:87","nodeType":"YulIdentifier","src":"14279:8:87"}],"functionName":{"name":"shr","nativeSrc":"14272:3:87","nodeType":"YulIdentifier","src":"14272:3:87"},"nativeSrc":"14272:16:87","nodeType":"YulFunctionCall","src":"14272:16:87"},"variableNames":[{"name":"exponent","nativeSrc":"14260:8:87","nodeType":"YulIdentifier","src":"14260:8:87"}]}]},"condition":{"arguments":[{"name":"exponent","nativeSrc":"14060:8:87","nodeType":"YulIdentifier","src":"14060:8:87"},{"kind":"number","nativeSrc":"14070:1:87","nodeType":"YulLiteral","src":"14070:1:87","type":"","value":"1"}],"functionName":{"name":"gt","nativeSrc":"14057:2:87","nodeType":"YulIdentifier","src":"14057:2:87"},"nativeSrc":"14057:15:87","nodeType":"YulFunctionCall","src":"14057:15:87"},"nativeSrc":"14049:249:87","nodeType":"YulForLoop","post":{"nativeSrc":"14073:3:87","nodeType":"YulBlock","src":"14073:3:87","statements":[]},"pre":{"nativeSrc":"14053:3:87","nodeType":"YulBlock","src":"14053:3:87","statements":[]},"src":"14049:249:87"}]},"name":"checked_exp_helper","nativeSrc":"13929:375:87","nodeType":"YulFunctionDefinition","parameters":[{"name":"_base","nativeSrc":"13957:5:87","nodeType":"YulTypedName","src":"13957:5:87","type":""},{"name":"exponent","nativeSrc":"13964:8:87","nodeType":"YulTypedName","src":"13964:8:87","type":""},{"name":"max","nativeSrc":"13974:3:87","nodeType":"YulTypedName","src":"13974:3:87","type":""}],"returnVariables":[{"name":"power","nativeSrc":"13982:5:87","nodeType":"YulTypedName","src":"13982:5:87","type":""},{"name":"base","nativeSrc":"13989:4:87","nodeType":"YulTypedName","src":"13989:4:87","type":""}],"src":"13929:375:87"},{"body":{"nativeSrc":"14368:843:87","nodeType":"YulBlock","src":"14368:843:87","statements":[{"body":{"nativeSrc":"14406:52:87","nodeType":"YulBlock","src":"14406:52:87","statements":[{"nativeSrc":"14420:10:87","nodeType":"YulAssignment","src":"14420:10:87","value":{"kind":"number","nativeSrc":"14429:1:87","nodeType":"YulLiteral","src":"14429:1:87","type":"","value":"1"},"variableNames":[{"name":"power","nativeSrc":"14420:5:87","nodeType":"YulIdentifier","src":"14420:5:87"}]},{"nativeSrc":"14443:5:87","nodeType":"YulLeave","src":"14443:5:87"}]},"condition":{"arguments":[{"name":"exponent","nativeSrc":"14388:8:87","nodeType":"YulIdentifier","src":"14388:8:87"}],"functionName":{"name":"iszero","nativeSrc":"14381:6:87","nodeType":"YulIdentifier","src":"14381:6:87"},"nativeSrc":"14381:16:87","nodeType":"YulFunctionCall","src":"14381:16:87"},"nativeSrc":"14378:80:87","nodeType":"YulIf","src":"14378:80:87"},{"body":{"nativeSrc":"14491:52:87","nodeType":"YulBlock","src":"14491:52:87","statements":[{"nativeSrc":"14505:10:87","nodeType":"YulAssignment","src":"14505:10:87","value":{"kind":"number","nativeSrc":"14514:1:87","nodeType":"YulLiteral","src":"14514:1:87","type":"","value":"0"},"variableNames":[{"name":"power","nativeSrc":"14505:5:87","nodeType":"YulIdentifier","src":"14505:5:87"}]},{"nativeSrc":"14528:5:87","nodeType":"YulLeave","src":"14528:5:87"}]},"condition":{"arguments":[{"name":"base","nativeSrc":"14477:4:87","nodeType":"YulIdentifier","src":"14477:4:87"}],"functionName":{"name":"iszero","nativeSrc":"14470:6:87","nodeType":"YulIdentifier","src":"14470:6:87"},"nativeSrc":"14470:12:87","nodeType":"YulFunctionCall","src":"14470:12:87"},"nativeSrc":"14467:76:87","nodeType":"YulIf","src":"14467:76:87"},{"cases":[{"body":{"nativeSrc":"14579:52:87","nodeType":"YulBlock","src":"14579:52:87","statements":[{"nativeSrc":"14593:10:87","nodeType":"YulAssignment","src":"14593:10:87","value":{"kind":"number","nativeSrc":"14602:1:87","nodeType":"YulLiteral","src":"14602:1:87","type":"","value":"1"},"variableNames":[{"name":"power","nativeSrc":"14593:5:87","nodeType":"YulIdentifier","src":"14593:5:87"}]},{"nativeSrc":"14616:5:87","nodeType":"YulLeave","src":"14616:5:87"}]},"nativeSrc":"14572:59:87","nodeType":"YulCase","src":"14572:59:87","value":{"kind":"number","nativeSrc":"14577:1:87","nodeType":"YulLiteral","src":"14577:1:87","type":"","value":"1"}},{"body":{"nativeSrc":"14647:167:87","nodeType":"YulBlock","src":"14647:167:87","statements":[{"body":{"nativeSrc":"14682:22:87","nodeType":"YulBlock","src":"14682:22:87","statements":[{"expression":{"arguments":[],"functionName":{"name":"panic_error_0x11","nativeSrc":"14684:16:87","nodeType":"YulIdentifier","src":"14684:16:87"},"nativeSrc":"14684:18:87","nodeType":"YulFunctionCall","src":"14684:18:87"},"nativeSrc":"14684:18:87","nodeType":"YulExpressionStatement","src":"14684:18:87"}]},"condition":{"arguments":[{"name":"exponent","nativeSrc":"14667:8:87","nodeType":"YulIdentifier","src":"14667:8:87"},{"kind":"number","nativeSrc":"14677:3:87","nodeType":"YulLiteral","src":"14677:3:87","type":"","value":"255"}],"functionName":{"name":"gt","nativeSrc":"14664:2:87","nodeType":"YulIdentifier","src":"14664:2:87"},"nativeSrc":"14664:17:87","nodeType":"YulFunctionCall","src":"14664:17:87"},"nativeSrc":"14661:43:87","nodeType":"YulIf","src":"14661:43:87"},{"nativeSrc":"14717:25:87","nodeType":"YulAssignment","src":"14717:25:87","value":{"arguments":[{"name":"exponent","nativeSrc":"14730:8:87","nodeType":"YulIdentifier","src":"14730:8:87"},{"kind":"number","nativeSrc":"14740:1:87","nodeType":"YulLiteral","src":"14740:1:87","type":"","value":"1"}],"functionName":{"name":"shl","nativeSrc":"14726:3:87","nodeType":"YulIdentifier","src":"14726:3:87"},"nativeSrc":"14726:16:87","nodeType":"YulFunctionCall","src":"14726:16:87"},"variableNames":[{"name":"power","nativeSrc":"14717:5:87","nodeType":"YulIdentifier","src":"14717:5:87"}]},{"nativeSrc":"14755:11:87","nodeType":"YulVariableDeclaration","src":"14755:11:87","value":{"kind":"number","nativeSrc":"14765:1:87","nodeType":"YulLiteral","src":"14765:1:87","type":"","value":"0"},"variables":[{"name":"_1","nativeSrc":"14759:2:87","nodeType":"YulTypedName","src":"14759:2:87","type":""}]},{"nativeSrc":"14779:7:87","nodeType":"YulAssignment","src":"14779:7:87","value":{"kind":"number","nativeSrc":"14785:1:87","nodeType":"YulLiteral","src":"14785:1:87","type":"","value":"0"},"variableNames":[{"name":"_1","nativeSrc":"14779:2:87","nodeType":"YulIdentifier","src":"14779:2:87"}]},{"nativeSrc":"14799:5:87","nodeType":"YulLeave","src":"14799:5:87"}]},"nativeSrc":"14640:174:87","nodeType":"YulCase","src":"14640:174:87","value":{"kind":"number","nativeSrc":"14645:1:87","nodeType":"YulLiteral","src":"14645:1:87","type":"","value":"2"}}],"expression":{"name":"base","nativeSrc":"14559:4:87","nodeType":"YulIdentifier","src":"14559:4:87"},"nativeSrc":"14552:262:87","nodeType":"YulSwitch","src":"14552:262:87"},{"body":{"nativeSrc":"14912:114:87","nodeType":"YulBlock","src":"14912:114:87","statements":[{"nativeSrc":"14926:28:87","nodeType":"YulAssignment","src":"14926:28:87","value":{"arguments":[{"name":"base","nativeSrc":"14939:4:87","nodeType":"YulIdentifier","src":"14939:4:87"},{"name":"exponent","nativeSrc":"14945:8:87","nodeType":"YulIdentifier","src":"14945:8:87"}],"functionName":{"name":"exp","nativeSrc":"14935:3:87","nodeType":"YulIdentifier","src":"14935:3:87"},"nativeSrc":"14935:19:87","nodeType":"YulFunctionCall","src":"14935:19:87"},"variableNames":[{"name":"power","nativeSrc":"14926:5:87","nodeType":"YulIdentifier","src":"14926:5:87"}]},{"nativeSrc":"14967:11:87","nodeType":"YulVariableDeclaration","src":"14967:11:87","value":{"kind":"number","nativeSrc":"14977:1:87","nodeType":"YulLiteral","src":"14977:1:87","type":"","value":"0"},"variables":[{"name":"_2","nativeSrc":"14971:2:87","nodeType":"YulTypedName","src":"14971:2:87","type":""}]},{"nativeSrc":"14991:7:87","nodeType":"YulAssignment","src":"14991:7:87","value":{"kind":"number","nativeSrc":"14997:1:87","nodeType":"YulLiteral","src":"14997:1:87","type":"","value":"0"},"variableNames":[{"name":"_2","nativeSrc":"14991:2:87","nodeType":"YulIdentifier","src":"14991:2:87"}]},{"nativeSrc":"15011:5:87","nodeType":"YulLeave","src":"15011:5:87"}]},"condition":{"arguments":[{"arguments":[{"arguments":[{"name":"base","nativeSrc":"14836:4:87","nodeType":"YulIdentifier","src":"14836:4:87"},{"kind":"number","nativeSrc":"14842:2:87","nodeType":"YulLiteral","src":"14842:2:87","type":"","value":"11"}],"functionName":{"name":"lt","nativeSrc":"14833:2:87","nodeType":"YulIdentifier","src":"14833:2:87"},"nativeSrc":"14833:12:87","nodeType":"YulFunctionCall","src":"14833:12:87"},{"arguments":[{"name":"exponent","nativeSrc":"14850:8:87","nodeType":"YulIdentifier","src":"14850:8:87"},{"kind":"number","nativeSrc":"14860:2:87","nodeType":"YulLiteral","src":"14860:2:87","type":"","value":"78"}],"functionName":{"name":"lt","nativeSrc":"14847:2:87","nodeType":"YulIdentifier","src":"14847:2:87"},"nativeSrc":"14847:16:87","nodeType":"YulFunctionCall","src":"14847:16:87"}],"functionName":{"name":"and","nativeSrc":"14829:3:87","nodeType":"YulIdentifier","src":"14829:3:87"},"nativeSrc":"14829:35:87","nodeType":"YulFunctionCall","src":"14829:35:87"},{"arguments":[{"arguments":[{"name":"base","nativeSrc":"14873:4:87","nodeType":"YulIdentifier","src":"14873:4:87"},{"kind":"number","nativeSrc":"14879:3:87","nodeType":"YulLiteral","src":"14879:3:87","type":"","value":"307"}],"functionName":{"name":"lt","nativeSrc":"14870:2:87","nodeType":"YulIdentifier","src":"14870:2:87"},"nativeSrc":"14870:13:87","nodeType":"YulFunctionCall","src":"14870:13:87"},{"arguments":[{"name":"exponent","nativeSrc":"14888:8:87","nodeType":"YulIdentifier","src":"14888:8:87"},{"kind":"number","nativeSrc":"14898:2:87","nodeType":"YulLiteral","src":"14898:2:87","type":"","value":"32"}],"functionName":{"name":"lt","nativeSrc":"14885:2:87","nodeType":"YulIdentifier","src":"14885:2:87"},"nativeSrc":"14885:16:87","nodeType":"YulFunctionCall","src":"14885:16:87"}],"functionName":{"name":"and","nativeSrc":"14866:3:87","nodeType":"YulIdentifier","src":"14866:3:87"},"nativeSrc":"14866:36:87","nodeType":"YulFunctionCall","src":"14866:36:87"}],"functionName":{"name":"or","nativeSrc":"14826:2:87","nodeType":"YulIdentifier","src":"14826:2:87"},"nativeSrc":"14826:77:87","nodeType":"YulFunctionCall","src":"14826:77:87"},"nativeSrc":"14823:203:87","nodeType":"YulIf","src":"14823:203:87"},{"nativeSrc":"15035:65:87","nodeType":"YulVariableDeclaration","src":"15035:65:87","value":{"arguments":[{"name":"base","nativeSrc":"15077:4:87","nodeType":"YulIdentifier","src":"15077:4:87"},{"name":"exponent","nativeSrc":"15083:8:87","nodeType":"YulIdentifier","src":"15083:8:87"},{"arguments":[{"kind":"number","nativeSrc":"15097:1:87","nodeType":"YulLiteral","src":"15097:1:87","type":"","value":"0"}],"functionName":{"name":"not","nativeSrc":"15093:3:87","nodeType":"YulIdentifier","src":"15093:3:87"},"nativeSrc":"15093:6:87","nodeType":"YulFunctionCall","src":"15093:6:87"}],"functionName":{"name":"checked_exp_helper","nativeSrc":"15058:18:87","nodeType":"YulIdentifier","src":"15058:18:87"},"nativeSrc":"15058:42:87","nodeType":"YulFunctionCall","src":"15058:42:87"},"variables":[{"name":"power_1","nativeSrc":"15039:7:87","nodeType":"YulTypedName","src":"15039:7:87","type":""},{"name":"base_1","nativeSrc":"15048:6:87","nodeType":"YulTypedName","src":"15048:6:87","type":""}]},{"body":{"nativeSrc":"15145:22:87","nodeType":"YulBlock","src":"15145:22:87","statements":[{"expression":{"arguments":[],"functionName":{"name":"panic_error_0x11","nativeSrc":"15147:16:87","nodeType":"YulIdentifier","src":"15147:16:87"},"nativeSrc":"15147:18:87","nodeType":"YulFunctionCall","src":"15147:18:87"},"nativeSrc":"15147:18:87","nodeType":"YulExpressionStatement","src":"15147:18:87"}]},"condition":{"arguments":[{"name":"power_1","nativeSrc":"15115:7:87","nodeType":"YulIdentifier","src":"15115:7:87"},{"arguments":[{"arguments":[{"kind":"number","nativeSrc":"15132:1:87","nodeType":"YulLiteral","src":"15132:1:87","type":"","value":"0"}],"functionName":{"name":"not","nativeSrc":"15128:3:87","nodeType":"YulIdentifier","src":"15128:3:87"},"nativeSrc":"15128:6:87","nodeType":"YulFunctionCall","src":"15128:6:87"},{"name":"base_1","nativeSrc":"15136:6:87","nodeType":"YulIdentifier","src":"15136:6:87"}],"functionName":{"name":"div","nativeSrc":"15124:3:87","nodeType":"YulIdentifier","src":"15124:3:87"},"nativeSrc":"15124:19:87","nodeType":"YulFunctionCall","src":"15124:19:87"}],"functionName":{"name":"gt","nativeSrc":"15112:2:87","nodeType":"YulIdentifier","src":"15112:2:87"},"nativeSrc":"15112:32:87","nodeType":"YulFunctionCall","src":"15112:32:87"},"nativeSrc":"15109:58:87","nodeType":"YulIf","src":"15109:58:87"},{"nativeSrc":"15176:29:87","nodeType":"YulAssignment","src":"15176:29:87","value":{"arguments":[{"name":"power_1","nativeSrc":"15189:7:87","nodeType":"YulIdentifier","src":"15189:7:87"},{"name":"base_1","nativeSrc":"15198:6:87","nodeType":"YulIdentifier","src":"15198:6:87"}],"functionName":{"name":"mul","nativeSrc":"15185:3:87","nodeType":"YulIdentifier","src":"15185:3:87"},"nativeSrc":"15185:20:87","nodeType":"YulFunctionCall","src":"15185:20:87"},"variableNames":[{"name":"power","nativeSrc":"15176:5:87","nodeType":"YulIdentifier","src":"15176:5:87"}]}]},"name":"checked_exp_unsigned","nativeSrc":"14309:902:87","nodeType":"YulFunctionDefinition","parameters":[{"name":"base","nativeSrc":"14339:4:87","nodeType":"YulTypedName","src":"14339:4:87","type":""},{"name":"exponent","nativeSrc":"14345:8:87","nodeType":"YulTypedName","src":"14345:8:87","type":""}],"returnVariables":[{"name":"power","nativeSrc":"14358:5:87","nodeType":"YulTypedName","src":"14358:5:87","type":""}],"src":"14309:902:87"},{"body":{"nativeSrc":"15284:72:87","nodeType":"YulBlock","src":"15284:72:87","statements":[{"nativeSrc":"15294:56:87","nodeType":"YulAssignment","src":"15294:56:87","value":{"arguments":[{"name":"base","nativeSrc":"15324:4:87","nodeType":"YulIdentifier","src":"15324:4:87"},{"arguments":[{"name":"exponent","nativeSrc":"15334:8:87","nodeType":"YulIdentifier","src":"15334:8:87"},{"kind":"number","nativeSrc":"15344:4:87","nodeType":"YulLiteral","src":"15344:4:87","type":"","value":"0xff"}],"functionName":{"name":"and","nativeSrc":"15330:3:87","nodeType":"YulIdentifier","src":"15330:3:87"},"nativeSrc":"15330:19:87","nodeType":"YulFunctionCall","src":"15330:19:87"}],"functionName":{"name":"checked_exp_unsigned","nativeSrc":"15303:20:87","nodeType":"YulIdentifier","src":"15303:20:87"},"nativeSrc":"15303:47:87","nodeType":"YulFunctionCall","src":"15303:47:87"},"variableNames":[{"name":"power","nativeSrc":"15294:5:87","nodeType":"YulIdentifier","src":"15294:5:87"}]}]},"name":"checked_exp_t_uint256_t_uint8","nativeSrc":"15216:140:87","nodeType":"YulFunctionDefinition","parameters":[{"name":"base","nativeSrc":"15255:4:87","nodeType":"YulTypedName","src":"15255:4:87","type":""},{"name":"exponent","nativeSrc":"15261:8:87","nodeType":"YulTypedName","src":"15261:8:87","type":""}],"returnVariables":[{"name":"power","nativeSrc":"15274:5:87","nodeType":"YulTypedName","src":"15274:5:87","type":""}],"src":"15216:140:87"}]},"contents":"{\n    { }\n    function abi_decode_struct_SwapConfig_calldata(offset, end) -> value\n    {\n        if slt(sub(end, offset), 96) { revert(0, 0) }\n        value := offset\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    function abi_decode_tuple_t_struct$_SwapConfig_$1113_calldata_ptrt_addresst_addresst_uint256t_uint256(headStart, dataEnd) -> value0, value1, value2, value3, value4\n    {\n        if slt(sub(dataEnd, headStart), 160) { revert(0, 0) }\n        let offset := calldataload(headStart)\n        if gt(offset, 0xffffffffffffffff) { revert(0, 0) }\n        value0 := abi_decode_struct_SwapConfig_calldata(add(headStart, offset), dataEnd)\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_address(value_1)\n        value2 := value_1\n        let value_2 := 0\n        value_2 := calldataload(add(headStart, 96))\n        value3 := value_2\n        let value_3 := 0\n        value_3 := calldataload(add(headStart, 128))\n        value4 := value_3\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    function abi_decode_tuple_t_struct$_SwapConfig_$1113_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        value0 := abi_decode_struct_SwapConfig_calldata(add(headStart, offset), dataEnd)\n    }\n    function panic_error_0x21()\n    {\n        mstore(0, shl(224, 0x4e487b71))\n        mstore(4, 0x21)\n        revert(0, 0x24)\n    }\n    function abi_decode_tuple_t_enum$_SwapProtocol_$1105(headStart, dataEnd) -> value0\n    {\n        if slt(sub(dataEnd, headStart), 32) { revert(0, 0) }\n        let value := calldataload(headStart)\n        if iszero(lt(value, 3)) { revert(0, 0) }\n        value0 := value\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), not(30)))) { 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 abi_decode_tuple_t_struct$_UniswapCustomParams_$1119_memory_ptr(headStart, dataEnd) -> value0\n    {\n        let _1 := slt(sub(dataEnd, headStart), 64)\n        if _1 { revert(0, 0) }\n        _1 := 0\n        let memPtr := mload(64)\n        let newFreePtr := add(memPtr, 64)\n        if or(gt(newFreePtr, 0xffffffffffffffff), lt(newFreePtr, memPtr))\n        {\n            mstore(0, shl(224, 0x4e487b71))\n            mstore(4, 0x41)\n            revert(0, 0x24)\n        }\n        mstore(64, newFreePtr)\n        let value := calldataload(headStart)\n        if iszero(eq(value, and(value, 0xffffff))) { revert(0, 0) }\n        mstore(memPtr, value)\n        let value_1 := calldataload(add(headStart, 32))\n        validator_revert_address(value_1)\n        mstore(add(memPtr, 32), value_1)\n        value0 := memPtr\n    }\n    function abi_encode_address(value, pos)\n    {\n        mstore(pos, and(value, sub(shl(160, 1), 1)))\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, sub(shl(160, 1), 1)))\n        mstore(add(headStart, 32), value1)\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_encode_struct_ExactOutputSingleParams(value, pos)\n    {\n        mstore(pos, and(mload(value), sub(shl(160, 1), 1)))\n        mstore(add(pos, 0x20), and(mload(add(value, 0x20)), sub(shl(160, 1), 1)))\n        mstore(add(pos, 0x40), and(mload(add(value, 0x40)), 0xffffff))\n        let memberValue0 := mload(add(value, 0x60))\n        abi_encode_address(memberValue0, add(pos, 0x60))\n        mstore(add(pos, 0x80), mload(add(value, 0x80)))\n        mstore(add(pos, 0xa0), mload(add(value, 0xa0)))\n        mstore(add(pos, 0xc0), mload(add(value, 0xc0)))\n        let memberValue0_1 := mload(add(value, 0xe0))\n        abi_encode_address(memberValue0_1, add(pos, 0xe0))\n    }\n    function abi_encode_tuple_t_struct$_ExactOutputSingleParams_$14849_memory_ptr__to_t_struct$_ExactOutputSingleParams_$14849_memory_ptr__fromStack_reversed(headStart, value0) -> tail\n    {\n        tail := add(headStart, 256)\n        abi_encode_struct_ExactOutputSingleParams(value0, 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_t_address_t_rational_0_by_1__to_t_address_t_uint256__fromStack_reversed(headStart, value1, value0) -> tail\n    {\n        tail := add(headStart, 64)\n        mstore(headStart, and(value0, sub(shl(160, 1), 1)))\n        mstore(add(headStart, 32), value1)\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 panic_error_0x11()\n    {\n        mstore(0, shl(224, 0x4e487b71))\n        mstore(4, 0x11)\n        revert(0, 0x24)\n    }\n    function checked_sub_t_uint256(x, y) -> diff\n    {\n        diff := sub(x, y)\n        if gt(diff, x) { panic_error_0x11() }\n    }\n    function checked_add_t_uint256(x, y) -> sum\n    {\n        sum := add(x, y)\n        if gt(x, sum) { panic_error_0x11() }\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 abi_encode_tuple_t_struct$_ExactInputSingleParams_$14803_memory_ptr__to_t_struct$_ExactInputSingleParams_$14803_memory_ptr__fromStack_reversed(headStart, value0) -> tail\n    {\n        tail := add(headStart, 256)\n        abi_encode_struct_ExactOutputSingleParams(value0, headStart)\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        mstore(headStart, and(value0, sub(shl(160, 1), 1)))\n        mstore(add(headStart, 32), and(value1, sub(shl(160, 1), 1)))\n    }\n    function abi_encode_array_address(value, pos)\n    {\n        pos := pos\n        let srcPtr := value\n        let i := 0\n        for { } lt(i, 0x0b) { i := add(i, 1) }\n        {\n            mstore(pos, and(mload(srcPtr), sub(shl(160, 1), 1)))\n            pos := add(pos, 0x20)\n            srcPtr := add(srcPtr, 0x20)\n        }\n    }\n    function abi_encode_array_array_uint256(value, pos)\n    {\n        pos := pos\n        let srcPtr := value\n        let i := 0\n        for { } lt(i, 0x05) { i := add(i, 1) }\n        {\n            let _1 := mload(srcPtr)\n            let updatedPos := 0\n            let pos_1 := pos\n            pos_1 := pos\n            let srcPtr_1 := _1\n            let i_1 := 0\n            for { } lt(i_1, 0x05) { i_1 := add(i_1, 1) }\n            {\n                mstore(pos_1, mload(srcPtr_1))\n                pos_1 := add(pos_1, 0x20)\n                srcPtr_1 := add(srcPtr_1, 0x20)\n            }\n            updatedPos := add(pos, 0xa0)\n            pos := updatedPos\n            srcPtr := add(srcPtr, 0x20)\n        }\n    }\n    function abi_encode_array_address_memory_ptr(value, pos)\n    {\n        pos := pos\n        let srcPtr := value\n        let i := 0\n        for { } lt(i, 0x05) { i := add(i, 1) }\n        {\n            mstore(pos, and(mload(srcPtr), sub(shl(160, 1), 1)))\n            pos := add(pos, 0x20)\n            srcPtr := add(srcPtr, 0x20)\n        }\n    }\n    function abi_encode_tuple_t_array$_t_address_$11_memory_ptr_t_array$_t_array$_t_uint256_$5_memory_ptr_$5_memory_ptr_t_uint256_t_uint256_t_array$_t_address_$5_memory_ptr_t_address__to_t_array$_t_address_$11_memory_ptr_t_array$_t_array$_t_uint256_$5_memory_ptr_$5_memory_ptr_t_uint256_t_uint256_t_array$_t_address_$5_memory_ptr_t_address__fromStack_reversed(headStart, value5, value4, value3, value2, value1, value0) -> tail\n    {\n        tail := add(headStart, 1408)\n        abi_encode_array_address(value0, headStart)\n        abi_encode_array_array_uint256(value1, add(headStart, 352))\n        mstore(add(headStart, 1152), value2)\n        mstore(add(headStart, 1184), value3)\n        abi_encode_array_address_memory_ptr(value4, add(headStart, 1216))\n        mstore(add(headStart, 1376), and(value5, sub(shl(160, 1), 1)))\n    }\n    function checked_mul_t_uint256(x, y) -> product\n    {\n        product := mul(x, y)\n        if iszero(or(iszero(x), eq(y, div(product, x)))) { panic_error_0x11() }\n    }\n    function panic_error_0x32()\n    {\n        mstore(0, shl(224, 0x4e487b71))\n        mstore(4, 0x32)\n        revert(0, 0x24)\n    }\n    function abi_encode_tuple_t_struct$_CurveRoute_$536_memory_ptr__to_t_struct$_CurveRoute_$536_memory_ptr__fromStack_reversed(headStart, value0) -> tail\n    {\n        tail := add(headStart, 1312)\n        let _1 := mload(value0)\n        let pos := headStart\n        pos := headStart\n        let srcPtr := _1\n        let i := 0\n        for { } lt(i, 0x0b) { i := add(i, 1) }\n        {\n            mstore(pos, and(mload(srcPtr), sub(shl(160, 1), 1)))\n            pos := add(pos, 0x20)\n            srcPtr := add(srcPtr, 0x20)\n        }\n        let memberValue0 := mload(add(value0, 0x20))\n        abi_encode_array_array_uint256(memberValue0, add(headStart, 0x0160))\n        let memberValue0_1 := mload(add(value0, 0x40))\n        abi_encode_array_address_memory_ptr(memberValue0_1, add(headStart, 0x0480))\n    }\n    function checked_mul_t_uint8(x, y) -> product\n    {\n        let product_raw := mul(and(x, 0xff), and(y, 0xff))\n        product := and(product_raw, 0xff)\n        if iszero(eq(product, product_raw)) { panic_error_0x11() }\n    }\n    function panic_error_0x12()\n    {\n        mstore(0, shl(224, 0x4e487b71))\n        mstore(4, 0x12)\n        revert(0, 0x24)\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 abi_encode_tuple_t_array$_t_address_$11_memory_ptr_t_array$_t_array$_t_uint256_$5_memory_ptr_$5_memory_ptr_t_uint256_t_array$_t_address_$5_memory_ptr__to_t_array$_t_address_$11_memory_ptr_t_array$_t_array$_t_uint256_$5_memory_ptr_$5_memory_ptr_t_uint256_t_array$_t_address_$5_memory_ptr__fromStack_reversed(headStart, value3, value2, value1, value0) -> tail\n    {\n        tail := add(headStart, 1344)\n        abi_encode_array_address(value0, headStart)\n        abi_encode_array_array_uint256(value1, add(headStart, 352))\n        mstore(add(headStart, 1152), value2)\n        abi_encode_array_address_memory_ptr(value3, add(headStart, 1184))\n    }\n    function abi_encode_tuple_t_array$_t_address_$11_memory_ptr_t_array$_t_array$_t_uint256_$5_memory_ptr_$5_memory_ptr_t_uint256_t_rational_0_by_1_t_array$_t_address_$5_memory_ptr_t_address__to_t_array$_t_address_$11_memory_ptr_t_array$_t_array$_t_uint256_$5_memory_ptr_$5_memory_ptr_t_uint256_t_uint256_t_array$_t_address_$5_memory_ptr_t_address__fromStack_reversed(headStart, value5, value4, value3, value2, value1, value0) -> tail\n    {\n        tail := add(headStart, 1408)\n        abi_encode_array_address(value0, headStart)\n        abi_encode_array_array_uint256(value1, add(headStart, 352))\n        mstore(add(headStart, 1152), value2)\n        mstore(add(headStart, 1184), value3)\n        abi_encode_array_address_memory_ptr(value4, add(headStart, 1216))\n        mstore(add(headStart, 1376), and(value5, sub(shl(160, 1), 1)))\n    }\n    function abi_encode_tuple_t_stringliteral_9f688071e1df0f70b63e3651005878331be1fe9591d6cfb3187cb52a13439e5d__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), \"toAddress_outOfBounds\")\n        tail := add(headStart, 96)\n    }\n    function abi_encode_tuple_t_stringliteral_ce6d7be00009dd45cc670fb6c2ceee25786f142bcb64e7f1ee73012b26bb6ca1__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), \"toUint8_outOfBounds\")\n        tail := add(headStart, 96)\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_uint8(x, y) -> sum\n    {\n        sum := add(and(x, 0xff), and(y, 0xff))\n        if gt(sum, 0xff) { panic_error_0x11() }\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 checked_sub_t_uint8(x, y) -> diff\n    {\n        diff := sub(and(x, 0xff), and(y, 0xff))\n        if gt(diff, 0xff) { panic_error_0x11() }\n    }\n    function checked_exp_helper(_base, exponent, max) -> power, base\n    {\n        power := 1\n        base := _base\n        for { } gt(exponent, 1) { }\n        {\n            if gt(base, div(max, base)) { panic_error_0x11() }\n            if and(exponent, 1) { power := mul(power, base) }\n            base := mul(base, base)\n            exponent := shr(1, exponent)\n        }\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            let _1 := 0\n            _1 := 0\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            let _2 := 0\n            _2 := 0\n            leave\n        }\n        let power_1, base_1 := checked_exp_helper(base, exponent, not(0))\n        if gt(power_1, div(not(0), base_1)) { panic_error_0x11() }\n        power := mul(power_1, base_1)\n    }\n    function checked_exp_t_uint256_t_uint8(base, exponent) -> power\n    {\n        power := checked_exp_unsigned(base, and(exponent, 0xff))\n    }\n}","id":87,"language":"Yul","name":"#utility.yul"}],"immutableReferences":{},"linkReferences":{},"object":"730000000000000000000000000000000000000000301460806040526004361061004a575f3560e01c8063581e517d1461004e578063775669151461007f578063b2fca32c1461009e575b5f5ffd5b818015610059575f5ffd5b5061006d610068366004611678565b6100b3565b60405190815260200160405180910390f35b81801561008a575f5ffd5b5061006d610099366004611678565b61012b565b6100b16100ac3660046116e7565b610190565b005b5f60016100c36020880188611735565b60028111156100d4576100d4611721565b036100ed576100e686868686866102d6565b9050610122565b60026100fc6020880188611735565b600281111561010d5761010d611721565b0361011f576100e6868686868661050e565b505f5b95945050505050565b5f600161013b6020880188611735565b600281111561014c5761014c611721565b0361015e576100e686868686866106c6565b600261016d6020880188611735565b600281111561017e5761017e611721565b0361011f576100e68686868686610908565b80602001355f036101b457604051633b3a5b4760e21b815260040160405180910390fd5b60016101c36020830183611735565b60028111156101d4576101d4611721565b0361024c575f6101e76040830183611753565b8101906101f4919061179d565b60208101519091506001600160a01b03166102225760405163e35d3f9360e01b815260040160405180910390fd5b805162ffffff165f036102485760405163c087296d60e01b815260040160405180910390fd5b5050565b600261025b6020830183611735565b600281111561026c5761026c611721565b036102bd576102ba6102816040830183611753565b8080601f0160208091040260200160405190810160405280939291908181526020018383808284375f92019190915250610aee92505050565b50565b6040516301fc71f560e21b815260040160405180910390fd5b5f806102e56040880188611753565b8101906102f2919061179d565b90505f610306858960200135898988610d2c565b602083015160405163095ea7b360e01b81526001600160a01b0391821660048201525f19602482015291925088169063095ea7b3906044016020604051808303815f875af115801561035a573d5f5f3e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061037e919061180f565b505f604051806101000160405280896001600160a01b03168152602001886001600160a01b03168152602001845f015162ffffff168152602001306001600160a01b031681526020014281526020018781526020018381526020015f6001600160a01b031681525090505f83602001516001600160a01b031663db3e2198836040518263ffffffff1660e01b815260040161041991906118a3565b6020604051808303815f875af1158015610435573d5f5f3e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061045991906118b2565b602085015160405163095ea7b360e01b81526001600160a01b0391821660048201525f60248201529192508a169063095ea7b3906044016020604051808303815f875af11580156104ac573d5f5f3e3d5ffd5b505050506040513d601f19601f820116820180604052508101906104d0919061180f565b508281111561050157604051634641f9e160e01b815260048101829052602481018490526044015b60405180910390fd5b9998505050505050505050565b5f808061055e61052160408a018a611753565b8080601f0160208091040260200160405190810160405280939291908181526020018383808284375f920191909152508b92508a9150610d8f9050565b915091505f610574868a602001358a8a89610d2c565b60405163095ea7b360e01b81526001600160a01b038581166004830152602482018390529192509089169063095ea7b3906044016020604051808303815f875af11580156105c4573d5f5f3e3d5ffd5b505050506040513d601f19601f820116820180604052508101906105e8919061180f565b505f805b87158015906105fb5750600281105b15610648575f5f61060d87878c610ed5565b9150915061061b8a83610fdf565b610625908b6118dd565b995061063181856118f0565b93505050808061064090611903565b9150506105ec565b5060405163095ea7b360e01b81526001600160a01b0385811660048301525f60248301528a169063095ea7b3906044016020604051808303815f875af1158015610694573d5f5f3e3d5ffd5b505050506040513d601f19601f820116820180604052508101906106b8919061180f565b509998505050505050505050565b5f806106d56040880188611753565b8101906106e2919061179d565b90505f6106f6858960200135898988610ff3565b602083015160405163095ea7b360e01b81526001600160a01b0391821660048201526024810188905291925088169063095ea7b3906044016020604051808303815f875af115801561074a573d5f5f3e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061076e919061180f565b505f604051806101000160405280896001600160a01b03168152602001886001600160a01b03168152602001845f015162ffffff168152602001306001600160a01b031681526020014281526020018781526020018381526020015f6001600160a01b031681525090505f83602001516001600160a01b031663414bf389836040518263ffffffff1660e01b815260040161080991906118a3565b6020604051808303815f875af1158015610825573d5f5f3e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061084991906118b2565b6020850151604051636eb1769f60e11b81523060048201526001600160a01b0391821660248201529192508a169063dd62ed3e90604401602060405180830381865afa15801561089b573d5f5f3e3d5ffd5b505050506040513d601f19601f820116820180604052508101906108bf91906118b2565b156108dd57604051630511d53d60e41b815260040160405180910390fd5b8281101561050157604051634209aa3160e11b815260048101829052602481018490526044016104f8565b5f808061091b61052160408a018a611753565b915091505f610931868a602001358a8a89610ff3565b60405163095ea7b360e01b81526001600160a01b038581166004830152602482018990529192509089169063095ea7b3906044016020604051808303815f875af1158015610981573d5f5f3e3d5ffd5b505050506040513d601f19601f820116820180604052508101906109a5919061180f565b5081516020830151604080850151905163c872a3c560e01b81526001600160a01b0387169363c872a3c5936109e793919290918c9188919030906004016119bc565b6020604051808303815f875af1158015610a03573d5f5f3e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610a2791906118b2565b604051636eb1769f60e11b81523060048201526001600160a01b0385811660248301529195509089169063dd62ed3e90604401602060405180830381865afa158015610a75573d5f5f3e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610a9991906118b2565b15610ab757604051630511d53d60e41b815260040160405180910390fd5b80841015610ae257604051634209aa3160e11b815260048101859052602481018290526044016104f8565b50505095945050505050565b5f610af98282611026565b90506001600160a01b038116610b225760405163e368363760e01b815260040160405180910390fd5b5f610b38610b316014836118f0565b849061108a565b90508060ff165f03610b5d576040516301ec987f60e31b815260040160405180910390fd5b5f6001610b6b6014836118f0565b610b7591906118f0565b90505f5b8260ff16811015610d04575f5f610b9087856110e5565b915091505f5b8260ff16811015610c375781515f90610bb0836002611a12565b600b8110610bc057610bc0611a29565b60200201516001600160a01b03161480610c0f575081515f90610be4836002611a12565b610bef9060016118f0565b600b8110610bff57610bff611a29565b60200201516001600160a01b0316145b15610c2f5781604051635875b11160e01b81526004016104f89190611a3d565b600101610b96565b5080515f90610c47846002611aa1565b60ff16600b8110610c5a57610c5a611a29565b60200201516001600160a01b031603610c885780604051635875b11160e01b81526004016104f89190611a3d565b60058260ff1614158015610cc5575080515f90610ca4846113e0565b600b8110610cb457610cb4611a29565b60200201516001600160a01b031614155b15610ce55780604051635875b11160e01b81526004016104f89190611a3d565b610cee82611400565b610cf890856118f0565b93505050600101610b79565b5080845114610d265760405163251f56a160e21b815260040160405180910390fd5b50505050565b5f610d368461145d565b610d7b610d4b87670de0b6b3a76400006118f0565b670de0b6b3a7640000610d7486670de0b6b3a7640000610d6a8a61145d565b610d74908e611a12565b91906114d4565b610d859190611ad1565b9695505050505050565b5f610d986115b2565b610da2855f611026565b91505f610dba610db36014836118f0565b879061108a565b90505f6001610dca6014836118f0565b610dd491906118f0565b90505f5b8260ff16811015610ea0575f610dee898461108a565b90506001600160a01b038816610e0f610e086001866118f0565b8b90611026565b6001600160a01b0316148015610e6657506001600160a01b038716610e5b610e3b60ff84166014611a12565b610e46906002611a12565b610e516001876118f0565b610e0891906118f0565b6001600160a01b0316145b15610e8257610e7589846110e5565b9550610ecd945050505050565b610e8b81611400565b610e9590846118f0565b925050600101610dd8565b50604051638c9aec7b60e01b81526001600160a01b038088166004830152861660248201526044016104f8565b935093915050565b81516020830151604080850151905163c07b535360e01b81525f9384936001600160a01b0389169363c07b535393610f139392918991600401611af0565b602060405180830381865afa158015610f2e573d5f5f3e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610f5291906118b2565b84516020860151604080880151905163c872a3c560e01b81529394506001600160a01b0389169363c872a3c593610f95939092909187915f9130906004016119bc565b6020604051808303815f875af1158015610fb1573d5f5f3e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610fd591906118b2565b9150935093915050565b5f8282188284100282185b90505b92915050565b5f610ffd8361145d565b610d7b61101287670de0b6b3a76400006118dd565b8461101c8861145d565b610d74908b611a12565b5f6110328260146118f0565b8351101561107a5760405162461bcd60e51b8152602060048201526015602482015274746f416464726573735f6f75744f66426f756e647360581b60448201526064016104f8565b500160200151600160601b900490565b5f6110968260016118f0565b835110156110dc5760405162461bcd60e51b8152602060048201526013602482015272746f55696e74385f6f75744f66426f756e647360681b60448201526064016104f8565b50016001015190565b5f6110ee6115b2565b6110f8848461108a565b915060058260ff16111561112457604051635b030b5960e11b815260ff831660048201526024016104f8565b5f5b61112f836113e0565b81101561118e57611160611144601483611a12565b61114f6001876118f0565b61115991906118f0565b8690611026565b825182600b811061117357611173611a29565b6001600160a01b039092166020929092020152600101611126565b50601461119a836113e0565b6111a49190611a12565b6111af9060016118f0565b6111b990846118f0565b92505f5b8260ff1681101561135c576111f26111d6600183611a12565b6111e1906005611a12565b6111eb90866118f0565b869061108a565b60ff168260200151826005811061120b5761120b611a29565b60200201515261123f61121f600183611a12565b61122a906005611a12565b61123490866118f0565b6111eb9060016118f0565b60ff168260200151826005811061125857611258611a29565b602002015160016020020152611292611272600183611a12565b61127d906005611a12565b61128790866118f0565b6111eb9060026118f0565b60ff16826020015182600581106112ab576112ab611a29565b6020020151604001526112e26112c2600183611a12565b6112cd906005611a12565b6112d790866118f0565b6111eb9060036118f0565b60ff16826020015182600581106112fb576112fb611a29565b602002015160600152611332611312600183611a12565b61131d906005611a12565b61132790866118f0565b6111eb9060046118f0565b60ff168260200151826005811061134b5761134b611a29565b6020020151608001526001016111bd565b5061136b600160ff8416611a12565b611376906005611a12565b61138090846118f0565b92505f5b8260ff168110156113d8576113a761139d601483611a12565b61115990866118f0565b826040015182600581106113bd576113bd611a29565b6001600160a01b039092166020929092020152600101611384565b509250929050565b5f6113ec826002611aa1565b6113f7906001611b22565b60ff1692915050565b5f61140f601460ff8416611a12565b600161141c846005611aa1565b60ff166114299190611a12565b6014611434856113e0565b61143e9190611a12565b6114499060016118f0565b61145391906118f0565b610fed91906118f0565b5f816001600160a01b031663313ce5676040518163ffffffff1660e01b8152600401602060405180830381865afa15801561149a573d5f5f3e3d5ffd5b505050506040513d601f19601f820116820180604052508101906114be9190611b3b565b6114c9906012611b5b565b610fed90600a611c4f565b5f5f5f6114e18686611585565b91509150815f03611505578381816114fb576114fb611abd565b049250505061157e565b81841161151c5761151c60038515026011186115a1565b5f848688095f868103871696879004966002600389028118808a02820302808a02820302808a02820302808a02820302808a02820302808a02909103029181900381900460010185841190960395909502919093039390930492909217029150505b9392505050565b5f805f1983850993909202808410938190039390930393915050565b634e487b715f52806020526024601cfd5b60405180606001604052806115c56115e4565b81526020016115d2611603565b81526020016115df611630565b905290565b604051806101600160405280600b906020820280368337509192915050565b6040518060a001604052806005905b61161a611630565b8152602001906001900390816116125790505090565b6040518060a001604052806005906020820280368337509192915050565b5f6060828403121561165e575f5ffd5b50919050565b6001600160a01b03811681146102ba575f5ffd5b5f5f5f5f5f60a0868803121561168c575f5ffd5b853567ffffffffffffffff8111156116a2575f5ffd5b6116ae8882890161164e565b95505060208601356116bf81611664565b935060408601356116cf81611664565b94979396509394606081013594506080013592915050565b5f602082840312156116f7575f5ffd5b813567ffffffffffffffff81111561170d575f5ffd5b6117198482850161164e565b949350505050565b634e487b7160e01b5f52602160045260245ffd5b5f60208284031215611745575f5ffd5b81356003811061157e575f5ffd5b5f5f8335601e19843603018112611768575f5ffd5b83018035915067ffffffffffffffff821115611782575f5ffd5b602001915036819003821315611796575f5ffd5b9250929050565b5f60408284031280156117ae575f5ffd5b506040805190810167ffffffffffffffff811182821017156117de57634e487b7160e01b5f52604160045260245ffd5b604052823562ffffff811681146117f3575f5ffd5b8152602083013561180381611664565b60208201529392505050565b5f6020828403121561181f575f5ffd5b8151801515811461157e575f5ffd5b80516001600160a01b03908116835260208083015182169084015260408083015162ffffff169084015260608083015191821690840152506080810151608083015260a081015160a083015260c081015160c083015260e081015161189e60e08401826001600160a01b03169052565b505050565b6101008101610fed828461182e565b5f602082840312156118c2575f5ffd5b5051919050565b634e487b7160e01b5f52601160045260245ffd5b81810381811115610fed57610fed6118c9565b80820180821115610fed57610fed6118c9565b5f60018201611914576119146118c9565b5060010190565b805f5b600b811015610d265781516001600160a01b031684526020938401939091019060010161191e565b805f5b6005811015610d265781515f85815b6005811015611977578351825260209384019390910190600101611958565b50505060a094909401935060209190910190600101611949565b805f5b6005811015610d265781516001600160a01b0316845260209384019390910190600101611994565b61058081016119cb828961191b565b6119d9610160830188611946565b85610480830152846104a08301526119f56104c0830185611991565b6001600160a01b0392909216610560919091015295945050505050565b8082028115828204841417610fed57610fed6118c9565b634e487b7160e01b5f52603260045260245ffd5b8151610520820190825f5b600b811015611a705782516001600160a01b0316825260209283019290910190600101611a48565b5050506020830151611a86610160840182611946565b506040830151611a9a610480840182611991565b5092915050565b60ff8181168382160290811690818114611a9a57611a9a6118c9565b634e487b7160e01b5f52601260045260245ffd5b5f82611aeb57634e487b7160e01b5f52601260045260245ffd5b500490565b6105408101611aff828761191b565b611b0d610160830186611946565b836104808301526101226104a0830184611991565b60ff8181168382160190811115610fed57610fed6118c9565b5f60208284031215611b4b575f5ffd5b815160ff8116811461157e575f5ffd5b60ff8281168282160390811115610fed57610fed6118c9565b6001815b6001841115610ecd57808504811115611b9357611b936118c9565b6001841615611ba157908102905b60019390931c928002611b78565b5f82611bbd57506001610fed565b81611bc957505f610fed565b8160018114611bdf5760028114611be957611c05565b6001915050610fed565b60ff841115611bfa57611bfa6118c9565b50506001821b610fed565b5060208310610133831016604e8410600b8410161715611c28575081810a610fed565b611c345f198484611b74565b805f1904821115611c4757611c476118c9565b029392505050565b5f610fea60ff841683611baf56fea26469706673582212208787ac633566049c39b641484173ba28749957df6425bb8a9bbdf7459286e43964736f6c634300081e0033","opcodes":"PUSH20 0x0 ADDRESS EQ PUSH1 0x80 PUSH1 0x40 MSTORE PUSH1 0x4 CALLDATASIZE LT PUSH2 0x4A JUMPI PUSH0 CALLDATALOAD PUSH1 0xE0 SHR DUP1 PUSH4 0x581E517D EQ PUSH2 0x4E JUMPI DUP1 PUSH4 0x77566915 EQ PUSH2 0x7F JUMPI DUP1 PUSH4 0xB2FCA32C EQ PUSH2 0x9E JUMPI JUMPDEST PUSH0 PUSH0 REVERT JUMPDEST DUP2 DUP1 ISZERO PUSH2 0x59 JUMPI PUSH0 PUSH0 REVERT JUMPDEST POP PUSH2 0x6D PUSH2 0x68 CALLDATASIZE PUSH1 0x4 PUSH2 0x1678 JUMP JUMPDEST PUSH2 0xB3 JUMP JUMPDEST PUSH1 0x40 MLOAD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST DUP2 DUP1 ISZERO PUSH2 0x8A JUMPI PUSH0 PUSH0 REVERT JUMPDEST POP PUSH2 0x6D PUSH2 0x99 CALLDATASIZE PUSH1 0x4 PUSH2 0x1678 JUMP JUMPDEST PUSH2 0x12B JUMP JUMPDEST PUSH2 0xB1 PUSH2 0xAC CALLDATASIZE PUSH1 0x4 PUSH2 0x16E7 JUMP JUMPDEST PUSH2 0x190 JUMP JUMPDEST STOP JUMPDEST PUSH0 PUSH1 0x1 PUSH2 0xC3 PUSH1 0x20 DUP9 ADD DUP9 PUSH2 0x1735 JUMP JUMPDEST PUSH1 0x2 DUP2 GT ISZERO PUSH2 0xD4 JUMPI PUSH2 0xD4 PUSH2 0x1721 JUMP JUMPDEST SUB PUSH2 0xED JUMPI PUSH2 0xE6 DUP7 DUP7 DUP7 DUP7 DUP7 PUSH2 0x2D6 JUMP JUMPDEST SWAP1 POP PUSH2 0x122 JUMP JUMPDEST PUSH1 0x2 PUSH2 0xFC PUSH1 0x20 DUP9 ADD DUP9 PUSH2 0x1735 JUMP JUMPDEST PUSH1 0x2 DUP2 GT ISZERO PUSH2 0x10D JUMPI PUSH2 0x10D PUSH2 0x1721 JUMP JUMPDEST SUB PUSH2 0x11F JUMPI PUSH2 0xE6 DUP7 DUP7 DUP7 DUP7 DUP7 PUSH2 0x50E JUMP JUMPDEST POP PUSH0 JUMPDEST SWAP6 SWAP5 POP POP POP POP POP JUMP JUMPDEST PUSH0 PUSH1 0x1 PUSH2 0x13B PUSH1 0x20 DUP9 ADD DUP9 PUSH2 0x1735 JUMP JUMPDEST PUSH1 0x2 DUP2 GT ISZERO PUSH2 0x14C JUMPI PUSH2 0x14C PUSH2 0x1721 JUMP JUMPDEST SUB PUSH2 0x15E JUMPI PUSH2 0xE6 DUP7 DUP7 DUP7 DUP7 DUP7 PUSH2 0x6C6 JUMP JUMPDEST PUSH1 0x2 PUSH2 0x16D PUSH1 0x20 DUP9 ADD DUP9 PUSH2 0x1735 JUMP JUMPDEST PUSH1 0x2 DUP2 GT ISZERO PUSH2 0x17E JUMPI PUSH2 0x17E PUSH2 0x1721 JUMP JUMPDEST SUB PUSH2 0x11F JUMPI PUSH2 0xE6 DUP7 DUP7 DUP7 DUP7 DUP7 PUSH2 0x908 JUMP JUMPDEST DUP1 PUSH1 0x20 ADD CALLDATALOAD PUSH0 SUB PUSH2 0x1B4 JUMPI PUSH1 0x40 MLOAD PUSH4 0x3B3A5B47 PUSH1 0xE2 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH1 0x1 PUSH2 0x1C3 PUSH1 0x20 DUP4 ADD DUP4 PUSH2 0x1735 JUMP JUMPDEST PUSH1 0x2 DUP2 GT ISZERO PUSH2 0x1D4 JUMPI PUSH2 0x1D4 PUSH2 0x1721 JUMP JUMPDEST SUB PUSH2 0x24C JUMPI PUSH0 PUSH2 0x1E7 PUSH1 0x40 DUP4 ADD DUP4 PUSH2 0x1753 JUMP JUMPDEST DUP2 ADD SWAP1 PUSH2 0x1F4 SWAP2 SWAP1 PUSH2 0x179D JUMP JUMPDEST PUSH1 0x20 DUP2 ADD MLOAD SWAP1 SWAP2 POP PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH2 0x222 JUMPI PUSH1 0x40 MLOAD PUSH4 0xE35D3F93 PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST DUP1 MLOAD PUSH3 0xFFFFFF AND PUSH0 SUB PUSH2 0x248 JUMPI PUSH1 0x40 MLOAD PUSH4 0xC087296D PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST POP POP JUMP JUMPDEST PUSH1 0x2 PUSH2 0x25B PUSH1 0x20 DUP4 ADD DUP4 PUSH2 0x1735 JUMP JUMPDEST PUSH1 0x2 DUP2 GT ISZERO PUSH2 0x26C JUMPI PUSH2 0x26C PUSH2 0x1721 JUMP JUMPDEST SUB PUSH2 0x2BD JUMPI PUSH2 0x2BA PUSH2 0x281 PUSH1 0x40 DUP4 ADD DUP4 PUSH2 0x1753 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 PUSH0 SWAP3 ADD SWAP2 SWAP1 SWAP2 MSTORE POP PUSH2 0xAEE SWAP3 POP POP POP JUMP JUMPDEST POP JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH4 0x1FC71F5 PUSH1 0xE2 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH0 DUP1 PUSH2 0x2E5 PUSH1 0x40 DUP9 ADD DUP9 PUSH2 0x1753 JUMP JUMPDEST DUP2 ADD SWAP1 PUSH2 0x2F2 SWAP2 SWAP1 PUSH2 0x179D JUMP JUMPDEST SWAP1 POP PUSH0 PUSH2 0x306 DUP6 DUP10 PUSH1 0x20 ADD CALLDATALOAD DUP10 DUP10 DUP9 PUSH2 0xD2C JUMP JUMPDEST PUSH1 0x20 DUP4 ADD MLOAD PUSH1 0x40 MLOAD PUSH4 0x95EA7B3 PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP2 DUP3 AND PUSH1 0x4 DUP3 ADD MSTORE PUSH0 NOT PUSH1 0x24 DUP3 ADD MSTORE SWAP2 SWAP3 POP DUP9 AND SWAP1 PUSH4 0x95EA7B3 SWAP1 PUSH1 0x44 ADD PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 PUSH0 DUP8 GAS CALL ISZERO DUP1 ISZERO PUSH2 0x35A JUMPI RETURNDATASIZE PUSH0 PUSH0 RETURNDATACOPY RETURNDATASIZE PUSH0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP3 ADD DUP1 PUSH1 0x40 MSTORE POP DUP2 ADD SWAP1 PUSH2 0x37E SWAP2 SWAP1 PUSH2 0x180F JUMP JUMPDEST POP PUSH0 PUSH1 0x40 MLOAD DUP1 PUSH2 0x100 ADD PUSH1 0x40 MSTORE DUP1 DUP10 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP2 MSTORE PUSH1 0x20 ADD DUP9 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP2 MSTORE PUSH1 0x20 ADD DUP5 PUSH0 ADD MLOAD PUSH3 0xFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD ADDRESS PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP2 MSTORE PUSH1 0x20 ADD TIMESTAMP DUP2 MSTORE PUSH1 0x20 ADD DUP8 DUP2 MSTORE PUSH1 0x20 ADD DUP4 DUP2 MSTORE PUSH1 0x20 ADD PUSH0 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP2 MSTORE POP SWAP1 POP PUSH0 DUP4 PUSH1 0x20 ADD MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH4 0xDB3E2198 DUP4 PUSH1 0x40 MLOAD DUP3 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x419 SWAP2 SWAP1 PUSH2 0x18A3 JUMP JUMPDEST PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 PUSH0 DUP8 GAS CALL ISZERO DUP1 ISZERO PUSH2 0x435 JUMPI RETURNDATASIZE PUSH0 PUSH0 RETURNDATACOPY RETURNDATASIZE PUSH0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP3 ADD DUP1 PUSH1 0x40 MSTORE POP DUP2 ADD SWAP1 PUSH2 0x459 SWAP2 SWAP1 PUSH2 0x18B2 JUMP JUMPDEST PUSH1 0x20 DUP6 ADD MLOAD PUSH1 0x40 MLOAD PUSH4 0x95EA7B3 PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP2 DUP3 AND PUSH1 0x4 DUP3 ADD MSTORE PUSH0 PUSH1 0x24 DUP3 ADD MSTORE SWAP2 SWAP3 POP DUP11 AND SWAP1 PUSH4 0x95EA7B3 SWAP1 PUSH1 0x44 ADD PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 PUSH0 DUP8 GAS CALL ISZERO DUP1 ISZERO PUSH2 0x4AC JUMPI RETURNDATASIZE PUSH0 PUSH0 RETURNDATACOPY RETURNDATASIZE PUSH0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP3 ADD DUP1 PUSH1 0x40 MSTORE POP DUP2 ADD SWAP1 PUSH2 0x4D0 SWAP2 SWAP1 PUSH2 0x180F JUMP JUMPDEST POP DUP3 DUP2 GT ISZERO PUSH2 0x501 JUMPI PUSH1 0x40 MLOAD PUSH4 0x4641F9E1 PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 DUP2 ADD DUP3 SWAP1 MSTORE PUSH1 0x24 DUP2 ADD DUP5 SWAP1 MSTORE PUSH1 0x44 ADD JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST SWAP10 SWAP9 POP POP POP POP POP POP POP POP POP JUMP JUMPDEST PUSH0 DUP1 DUP1 PUSH2 0x55E PUSH2 0x521 PUSH1 0x40 DUP11 ADD DUP11 PUSH2 0x1753 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 PUSH0 SWAP3 ADD SWAP2 SWAP1 SWAP2 MSTORE POP DUP12 SWAP3 POP DUP11 SWAP2 POP PUSH2 0xD8F SWAP1 POP JUMP JUMPDEST SWAP2 POP SWAP2 POP PUSH0 PUSH2 0x574 DUP7 DUP11 PUSH1 0x20 ADD CALLDATALOAD DUP11 DUP11 DUP10 PUSH2 0xD2C JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH4 0x95EA7B3 PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP6 DUP2 AND PUSH1 0x4 DUP4 ADD MSTORE PUSH1 0x24 DUP3 ADD DUP4 SWAP1 MSTORE SWAP2 SWAP3 POP SWAP1 DUP10 AND SWAP1 PUSH4 0x95EA7B3 SWAP1 PUSH1 0x44 ADD PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 PUSH0 DUP8 GAS CALL ISZERO DUP1 ISZERO PUSH2 0x5C4 JUMPI RETURNDATASIZE PUSH0 PUSH0 RETURNDATACOPY RETURNDATASIZE PUSH0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP3 ADD DUP1 PUSH1 0x40 MSTORE POP DUP2 ADD SWAP1 PUSH2 0x5E8 SWAP2 SWAP1 PUSH2 0x180F JUMP JUMPDEST POP PUSH0 DUP1 JUMPDEST DUP8 ISZERO DUP1 ISZERO SWAP1 PUSH2 0x5FB JUMPI POP PUSH1 0x2 DUP2 LT JUMPDEST ISZERO PUSH2 0x648 JUMPI PUSH0 PUSH0 PUSH2 0x60D DUP8 DUP8 DUP13 PUSH2 0xED5 JUMP JUMPDEST SWAP2 POP SWAP2 POP PUSH2 0x61B DUP11 DUP4 PUSH2 0xFDF JUMP JUMPDEST PUSH2 0x625 SWAP1 DUP12 PUSH2 0x18DD JUMP JUMPDEST SWAP10 POP PUSH2 0x631 DUP2 DUP6 PUSH2 0x18F0 JUMP JUMPDEST SWAP4 POP POP POP DUP1 DUP1 PUSH2 0x640 SWAP1 PUSH2 0x1903 JUMP JUMPDEST SWAP2 POP POP PUSH2 0x5EC JUMP JUMPDEST POP PUSH1 0x40 MLOAD PUSH4 0x95EA7B3 PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP6 DUP2 AND PUSH1 0x4 DUP4 ADD MSTORE PUSH0 PUSH1 0x24 DUP4 ADD MSTORE DUP11 AND SWAP1 PUSH4 0x95EA7B3 SWAP1 PUSH1 0x44 ADD PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 PUSH0 DUP8 GAS CALL ISZERO DUP1 ISZERO PUSH2 0x694 JUMPI RETURNDATASIZE PUSH0 PUSH0 RETURNDATACOPY RETURNDATASIZE PUSH0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP3 ADD DUP1 PUSH1 0x40 MSTORE POP DUP2 ADD SWAP1 PUSH2 0x6B8 SWAP2 SWAP1 PUSH2 0x180F JUMP JUMPDEST POP SWAP10 SWAP9 POP POP POP POP POP POP POP POP POP JUMP JUMPDEST PUSH0 DUP1 PUSH2 0x6D5 PUSH1 0x40 DUP9 ADD DUP9 PUSH2 0x1753 JUMP JUMPDEST DUP2 ADD SWAP1 PUSH2 0x6E2 SWAP2 SWAP1 PUSH2 0x179D JUMP JUMPDEST SWAP1 POP PUSH0 PUSH2 0x6F6 DUP6 DUP10 PUSH1 0x20 ADD CALLDATALOAD DUP10 DUP10 DUP9 PUSH2 0xFF3 JUMP JUMPDEST PUSH1 0x20 DUP4 ADD MLOAD PUSH1 0x40 MLOAD PUSH4 0x95EA7B3 PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP2 DUP3 AND PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x24 DUP2 ADD DUP9 SWAP1 MSTORE SWAP2 SWAP3 POP DUP9 AND SWAP1 PUSH4 0x95EA7B3 SWAP1 PUSH1 0x44 ADD PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 PUSH0 DUP8 GAS CALL ISZERO DUP1 ISZERO PUSH2 0x74A JUMPI RETURNDATASIZE PUSH0 PUSH0 RETURNDATACOPY RETURNDATASIZE PUSH0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP3 ADD DUP1 PUSH1 0x40 MSTORE POP DUP2 ADD SWAP1 PUSH2 0x76E SWAP2 SWAP1 PUSH2 0x180F JUMP JUMPDEST POP PUSH0 PUSH1 0x40 MLOAD DUP1 PUSH2 0x100 ADD PUSH1 0x40 MSTORE DUP1 DUP10 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP2 MSTORE PUSH1 0x20 ADD DUP9 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP2 MSTORE PUSH1 0x20 ADD DUP5 PUSH0 ADD MLOAD PUSH3 0xFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD ADDRESS PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP2 MSTORE PUSH1 0x20 ADD TIMESTAMP DUP2 MSTORE PUSH1 0x20 ADD DUP8 DUP2 MSTORE PUSH1 0x20 ADD DUP4 DUP2 MSTORE PUSH1 0x20 ADD PUSH0 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP2 MSTORE POP SWAP1 POP PUSH0 DUP4 PUSH1 0x20 ADD MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH4 0x414BF389 DUP4 PUSH1 0x40 MLOAD DUP3 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x809 SWAP2 SWAP1 PUSH2 0x18A3 JUMP JUMPDEST PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 PUSH0 DUP8 GAS CALL ISZERO DUP1 ISZERO PUSH2 0x825 JUMPI RETURNDATASIZE PUSH0 PUSH0 RETURNDATACOPY RETURNDATASIZE PUSH0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP3 ADD DUP1 PUSH1 0x40 MSTORE POP DUP2 ADD SWAP1 PUSH2 0x849 SWAP2 SWAP1 PUSH2 0x18B2 JUMP JUMPDEST PUSH1 0x20 DUP6 ADD MLOAD PUSH1 0x40 MLOAD PUSH4 0x6EB1769F PUSH1 0xE1 SHL DUP2 MSTORE ADDRESS PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP2 DUP3 AND PUSH1 0x24 DUP3 ADD MSTORE SWAP2 SWAP3 POP DUP11 AND SWAP1 PUSH4 0xDD62ED3E SWAP1 PUSH1 0x44 ADD PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x89B JUMPI RETURNDATASIZE PUSH0 PUSH0 RETURNDATACOPY RETURNDATASIZE PUSH0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP3 ADD DUP1 PUSH1 0x40 MSTORE POP DUP2 ADD SWAP1 PUSH2 0x8BF SWAP2 SWAP1 PUSH2 0x18B2 JUMP JUMPDEST ISZERO PUSH2 0x8DD JUMPI PUSH1 0x40 MLOAD PUSH4 0x511D53D PUSH1 0xE4 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST DUP3 DUP2 LT ISZERO PUSH2 0x501 JUMPI PUSH1 0x40 MLOAD PUSH4 0x4209AA31 PUSH1 0xE1 SHL DUP2 MSTORE PUSH1 0x4 DUP2 ADD DUP3 SWAP1 MSTORE PUSH1 0x24 DUP2 ADD DUP5 SWAP1 MSTORE PUSH1 0x44 ADD PUSH2 0x4F8 JUMP JUMPDEST PUSH0 DUP1 DUP1 PUSH2 0x91B PUSH2 0x521 PUSH1 0x40 DUP11 ADD DUP11 PUSH2 0x1753 JUMP JUMPDEST SWAP2 POP SWAP2 POP PUSH0 PUSH2 0x931 DUP7 DUP11 PUSH1 0x20 ADD CALLDATALOAD DUP11 DUP11 DUP10 PUSH2 0xFF3 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH4 0x95EA7B3 PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP6 DUP2 AND PUSH1 0x4 DUP4 ADD MSTORE PUSH1 0x24 DUP3 ADD DUP10 SWAP1 MSTORE SWAP2 SWAP3 POP SWAP1 DUP10 AND SWAP1 PUSH4 0x95EA7B3 SWAP1 PUSH1 0x44 ADD PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 PUSH0 DUP8 GAS CALL ISZERO DUP1 ISZERO PUSH2 0x981 JUMPI RETURNDATASIZE PUSH0 PUSH0 RETURNDATACOPY RETURNDATASIZE PUSH0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP3 ADD DUP1 PUSH1 0x40 MSTORE POP DUP2 ADD SWAP1 PUSH2 0x9A5 SWAP2 SWAP1 PUSH2 0x180F JUMP JUMPDEST POP DUP2 MLOAD PUSH1 0x20 DUP4 ADD MLOAD PUSH1 0x40 DUP1 DUP6 ADD MLOAD SWAP1 MLOAD PUSH4 0xC872A3C5 PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP8 AND SWAP4 PUSH4 0xC872A3C5 SWAP4 PUSH2 0x9E7 SWAP4 SWAP2 SWAP3 SWAP1 SWAP2 DUP13 SWAP2 DUP9 SWAP2 SWAP1 ADDRESS SWAP1 PUSH1 0x4 ADD PUSH2 0x19BC JUMP JUMPDEST PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 PUSH0 DUP8 GAS CALL ISZERO DUP1 ISZERO PUSH2 0xA03 JUMPI RETURNDATASIZE PUSH0 PUSH0 RETURNDATACOPY RETURNDATASIZE PUSH0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP3 ADD DUP1 PUSH1 0x40 MSTORE POP DUP2 ADD SWAP1 PUSH2 0xA27 SWAP2 SWAP1 PUSH2 0x18B2 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH4 0x6EB1769F PUSH1 0xE1 SHL DUP2 MSTORE ADDRESS PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP6 DUP2 AND PUSH1 0x24 DUP4 ADD MSTORE SWAP2 SWAP6 POP SWAP1 DUP10 AND SWAP1 PUSH4 0xDD62ED3E SWAP1 PUSH1 0x44 ADD PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0xA75 JUMPI RETURNDATASIZE PUSH0 PUSH0 RETURNDATACOPY RETURNDATASIZE PUSH0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP3 ADD DUP1 PUSH1 0x40 MSTORE POP DUP2 ADD SWAP1 PUSH2 0xA99 SWAP2 SWAP1 PUSH2 0x18B2 JUMP JUMPDEST ISZERO PUSH2 0xAB7 JUMPI PUSH1 0x40 MLOAD PUSH4 0x511D53D PUSH1 0xE4 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST DUP1 DUP5 LT ISZERO PUSH2 0xAE2 JUMPI PUSH1 0x40 MLOAD PUSH4 0x4209AA31 PUSH1 0xE1 SHL DUP2 MSTORE PUSH1 0x4 DUP2 ADD DUP6 SWAP1 MSTORE PUSH1 0x24 DUP2 ADD DUP3 SWAP1 MSTORE PUSH1 0x44 ADD PUSH2 0x4F8 JUMP JUMPDEST POP POP POP SWAP6 SWAP5 POP POP POP POP POP JUMP JUMPDEST PUSH0 PUSH2 0xAF9 DUP3 DUP3 PUSH2 0x1026 JUMP JUMPDEST SWAP1 POP PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 AND PUSH2 0xB22 JUMPI PUSH1 0x40 MLOAD PUSH4 0xE3683637 PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH0 PUSH2 0xB38 PUSH2 0xB31 PUSH1 0x14 DUP4 PUSH2 0x18F0 JUMP JUMPDEST DUP5 SWAP1 PUSH2 0x108A JUMP JUMPDEST SWAP1 POP DUP1 PUSH1 0xFF AND PUSH0 SUB PUSH2 0xB5D JUMPI PUSH1 0x40 MLOAD PUSH4 0x1EC987F PUSH1 0xE3 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH0 PUSH1 0x1 PUSH2 0xB6B PUSH1 0x14 DUP4 PUSH2 0x18F0 JUMP JUMPDEST PUSH2 0xB75 SWAP2 SWAP1 PUSH2 0x18F0 JUMP JUMPDEST SWAP1 POP PUSH0 JUMPDEST DUP3 PUSH1 0xFF AND DUP2 LT ISZERO PUSH2 0xD04 JUMPI PUSH0 PUSH0 PUSH2 0xB90 DUP8 DUP6 PUSH2 0x10E5 JUMP JUMPDEST SWAP2 POP SWAP2 POP PUSH0 JUMPDEST DUP3 PUSH1 0xFF AND DUP2 LT ISZERO PUSH2 0xC37 JUMPI DUP2 MLOAD PUSH0 SWAP1 PUSH2 0xBB0 DUP4 PUSH1 0x2 PUSH2 0x1A12 JUMP JUMPDEST PUSH1 0xB DUP2 LT PUSH2 0xBC0 JUMPI PUSH2 0xBC0 PUSH2 0x1A29 JUMP JUMPDEST PUSH1 0x20 MUL ADD MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND EQ DUP1 PUSH2 0xC0F JUMPI POP DUP2 MLOAD PUSH0 SWAP1 PUSH2 0xBE4 DUP4 PUSH1 0x2 PUSH2 0x1A12 JUMP JUMPDEST PUSH2 0xBEF SWAP1 PUSH1 0x1 PUSH2 0x18F0 JUMP JUMPDEST PUSH1 0xB DUP2 LT PUSH2 0xBFF JUMPI PUSH2 0xBFF PUSH2 0x1A29 JUMP JUMPDEST PUSH1 0x20 MUL ADD MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND EQ JUMPDEST ISZERO PUSH2 0xC2F JUMPI DUP2 PUSH1 0x40 MLOAD PUSH4 0x5875B111 PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x4F8 SWAP2 SWAP1 PUSH2 0x1A3D JUMP JUMPDEST PUSH1 0x1 ADD PUSH2 0xB96 JUMP JUMPDEST POP DUP1 MLOAD PUSH0 SWAP1 PUSH2 0xC47 DUP5 PUSH1 0x2 PUSH2 0x1AA1 JUMP JUMPDEST PUSH1 0xFF AND PUSH1 0xB DUP2 LT PUSH2 0xC5A JUMPI PUSH2 0xC5A PUSH2 0x1A29 JUMP JUMPDEST PUSH1 0x20 MUL ADD MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND SUB PUSH2 0xC88 JUMPI DUP1 PUSH1 0x40 MLOAD PUSH4 0x5875B111 PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x4F8 SWAP2 SWAP1 PUSH2 0x1A3D JUMP JUMPDEST PUSH1 0x5 DUP3 PUSH1 0xFF AND EQ ISZERO DUP1 ISZERO PUSH2 0xCC5 JUMPI POP DUP1 MLOAD PUSH0 SWAP1 PUSH2 0xCA4 DUP5 PUSH2 0x13E0 JUMP JUMPDEST PUSH1 0xB DUP2 LT PUSH2 0xCB4 JUMPI PUSH2 0xCB4 PUSH2 0x1A29 JUMP JUMPDEST PUSH1 0x20 MUL ADD MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND EQ ISZERO JUMPDEST ISZERO PUSH2 0xCE5 JUMPI DUP1 PUSH1 0x40 MLOAD PUSH4 0x5875B111 PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x4F8 SWAP2 SWAP1 PUSH2 0x1A3D JUMP JUMPDEST PUSH2 0xCEE DUP3 PUSH2 0x1400 JUMP JUMPDEST PUSH2 0xCF8 SWAP1 DUP6 PUSH2 0x18F0 JUMP JUMPDEST SWAP4 POP POP POP PUSH1 0x1 ADD PUSH2 0xB79 JUMP JUMPDEST POP DUP1 DUP5 MLOAD EQ PUSH2 0xD26 JUMPI PUSH1 0x40 MLOAD PUSH4 0x251F56A1 PUSH1 0xE2 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST POP POP POP POP JUMP JUMPDEST PUSH0 PUSH2 0xD36 DUP5 PUSH2 0x145D JUMP JUMPDEST PUSH2 0xD7B PUSH2 0xD4B DUP8 PUSH8 0xDE0B6B3A7640000 PUSH2 0x18F0 JUMP JUMPDEST PUSH8 0xDE0B6B3A7640000 PUSH2 0xD74 DUP7 PUSH8 0xDE0B6B3A7640000 PUSH2 0xD6A DUP11 PUSH2 0x145D JUMP JUMPDEST PUSH2 0xD74 SWAP1 DUP15 PUSH2 0x1A12 JUMP JUMPDEST SWAP2 SWAP1 PUSH2 0x14D4 JUMP JUMPDEST PUSH2 0xD85 SWAP2 SWAP1 PUSH2 0x1AD1 JUMP JUMPDEST SWAP7 SWAP6 POP POP POP POP POP POP JUMP JUMPDEST PUSH0 PUSH2 0xD98 PUSH2 0x15B2 JUMP JUMPDEST PUSH2 0xDA2 DUP6 PUSH0 PUSH2 0x1026 JUMP JUMPDEST SWAP2 POP PUSH0 PUSH2 0xDBA PUSH2 0xDB3 PUSH1 0x14 DUP4 PUSH2 0x18F0 JUMP JUMPDEST DUP8 SWAP1 PUSH2 0x108A JUMP JUMPDEST SWAP1 POP PUSH0 PUSH1 0x1 PUSH2 0xDCA PUSH1 0x14 DUP4 PUSH2 0x18F0 JUMP JUMPDEST PUSH2 0xDD4 SWAP2 SWAP1 PUSH2 0x18F0 JUMP JUMPDEST SWAP1 POP PUSH0 JUMPDEST DUP3 PUSH1 0xFF AND DUP2 LT ISZERO PUSH2 0xEA0 JUMPI PUSH0 PUSH2 0xDEE DUP10 DUP5 PUSH2 0x108A JUMP JUMPDEST SWAP1 POP PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP9 AND PUSH2 0xE0F PUSH2 0xE08 PUSH1 0x1 DUP7 PUSH2 0x18F0 JUMP JUMPDEST DUP12 SWAP1 PUSH2 0x1026 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND EQ DUP1 ISZERO PUSH2 0xE66 JUMPI POP PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP8 AND PUSH2 0xE5B PUSH2 0xE3B PUSH1 0xFF DUP5 AND PUSH1 0x14 PUSH2 0x1A12 JUMP JUMPDEST PUSH2 0xE46 SWAP1 PUSH1 0x2 PUSH2 0x1A12 JUMP JUMPDEST PUSH2 0xE51 PUSH1 0x1 DUP8 PUSH2 0x18F0 JUMP JUMPDEST PUSH2 0xE08 SWAP2 SWAP1 PUSH2 0x18F0 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND EQ JUMPDEST ISZERO PUSH2 0xE82 JUMPI PUSH2 0xE75 DUP10 DUP5 PUSH2 0x10E5 JUMP JUMPDEST SWAP6 POP PUSH2 0xECD SWAP5 POP POP POP POP POP JUMP JUMPDEST PUSH2 0xE8B DUP2 PUSH2 0x1400 JUMP JUMPDEST PUSH2 0xE95 SWAP1 DUP5 PUSH2 0x18F0 JUMP JUMPDEST SWAP3 POP POP PUSH1 0x1 ADD PUSH2 0xDD8 JUMP JUMPDEST POP PUSH1 0x40 MLOAD PUSH4 0x8C9AEC7B PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP1 DUP9 AND PUSH1 0x4 DUP4 ADD MSTORE DUP7 AND PUSH1 0x24 DUP3 ADD MSTORE PUSH1 0x44 ADD PUSH2 0x4F8 JUMP JUMPDEST SWAP4 POP SWAP4 SWAP2 POP POP JUMP JUMPDEST DUP2 MLOAD PUSH1 0x20 DUP4 ADD MLOAD PUSH1 0x40 DUP1 DUP6 ADD MLOAD SWAP1 MLOAD PUSH4 0xC07B5353 PUSH1 0xE0 SHL DUP2 MSTORE PUSH0 SWAP4 DUP5 SWAP4 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP10 AND SWAP4 PUSH4 0xC07B5353 SWAP4 PUSH2 0xF13 SWAP4 SWAP3 SWAP2 DUP10 SWAP2 PUSH1 0x4 ADD PUSH2 0x1AF0 JUMP JUMPDEST PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0xF2E JUMPI RETURNDATASIZE PUSH0 PUSH0 RETURNDATACOPY RETURNDATASIZE PUSH0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP3 ADD DUP1 PUSH1 0x40 MSTORE POP DUP2 ADD SWAP1 PUSH2 0xF52 SWAP2 SWAP1 PUSH2 0x18B2 JUMP JUMPDEST DUP5 MLOAD PUSH1 0x20 DUP7 ADD MLOAD PUSH1 0x40 DUP1 DUP9 ADD MLOAD SWAP1 MLOAD PUSH4 0xC872A3C5 PUSH1 0xE0 SHL DUP2 MSTORE SWAP4 SWAP5 POP PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP10 AND SWAP4 PUSH4 0xC872A3C5 SWAP4 PUSH2 0xF95 SWAP4 SWAP1 SWAP3 SWAP1 SWAP2 DUP8 SWAP2 PUSH0 SWAP2 ADDRESS SWAP1 PUSH1 0x4 ADD PUSH2 0x19BC JUMP JUMPDEST PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 PUSH0 DUP8 GAS CALL ISZERO DUP1 ISZERO PUSH2 0xFB1 JUMPI RETURNDATASIZE PUSH0 PUSH0 RETURNDATACOPY RETURNDATASIZE PUSH0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP3 ADD DUP1 PUSH1 0x40 MSTORE POP DUP2 ADD SWAP1 PUSH2 0xFD5 SWAP2 SWAP1 PUSH2 0x18B2 JUMP JUMPDEST SWAP2 POP SWAP4 POP SWAP4 SWAP2 POP POP JUMP JUMPDEST PUSH0 DUP3 DUP3 XOR DUP3 DUP5 LT MUL DUP3 XOR JUMPDEST SWAP1 POP JUMPDEST SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH0 PUSH2 0xFFD DUP4 PUSH2 0x145D JUMP JUMPDEST PUSH2 0xD7B PUSH2 0x1012 DUP8 PUSH8 0xDE0B6B3A7640000 PUSH2 0x18DD JUMP JUMPDEST DUP5 PUSH2 0x101C DUP9 PUSH2 0x145D JUMP JUMPDEST PUSH2 0xD74 SWAP1 DUP12 PUSH2 0x1A12 JUMP JUMPDEST PUSH0 PUSH2 0x1032 DUP3 PUSH1 0x14 PUSH2 0x18F0 JUMP JUMPDEST DUP4 MLOAD LT ISZERO PUSH2 0x107A 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 PUSH21 0x746F416464726573735F6F75744F66426F756E6473 PUSH1 0x58 SHL PUSH1 0x44 DUP3 ADD MSTORE PUSH1 0x64 ADD PUSH2 0x4F8 JUMP JUMPDEST POP ADD PUSH1 0x20 ADD MLOAD PUSH1 0x1 PUSH1 0x60 SHL SWAP1 DIV SWAP1 JUMP JUMPDEST PUSH0 PUSH2 0x1096 DUP3 PUSH1 0x1 PUSH2 0x18F0 JUMP JUMPDEST DUP4 MLOAD LT ISZERO PUSH2 0x10DC 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 PUSH19 0x746F55696E74385F6F75744F66426F756E6473 PUSH1 0x68 SHL PUSH1 0x44 DUP3 ADD MSTORE PUSH1 0x64 ADD PUSH2 0x4F8 JUMP JUMPDEST POP ADD PUSH1 0x1 ADD MLOAD SWAP1 JUMP JUMPDEST PUSH0 PUSH2 0x10EE PUSH2 0x15B2 JUMP JUMPDEST PUSH2 0x10F8 DUP5 DUP5 PUSH2 0x108A JUMP JUMPDEST SWAP2 POP PUSH1 0x5 DUP3 PUSH1 0xFF AND GT ISZERO PUSH2 0x1124 JUMPI PUSH1 0x40 MLOAD PUSH4 0x5B030B59 PUSH1 0xE1 SHL DUP2 MSTORE PUSH1 0xFF DUP4 AND PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x24 ADD PUSH2 0x4F8 JUMP JUMPDEST PUSH0 JUMPDEST PUSH2 0x112F DUP4 PUSH2 0x13E0 JUMP JUMPDEST DUP2 LT ISZERO PUSH2 0x118E JUMPI PUSH2 0x1160 PUSH2 0x1144 PUSH1 0x14 DUP4 PUSH2 0x1A12 JUMP JUMPDEST PUSH2 0x114F PUSH1 0x1 DUP8 PUSH2 0x18F0 JUMP JUMPDEST PUSH2 0x1159 SWAP2 SWAP1 PUSH2 0x18F0 JUMP JUMPDEST DUP7 SWAP1 PUSH2 0x1026 JUMP JUMPDEST DUP3 MLOAD DUP3 PUSH1 0xB DUP2 LT PUSH2 0x1173 JUMPI PUSH2 0x1173 PUSH2 0x1A29 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP1 SWAP3 AND PUSH1 0x20 SWAP3 SWAP1 SWAP3 MUL ADD MSTORE PUSH1 0x1 ADD PUSH2 0x1126 JUMP JUMPDEST POP PUSH1 0x14 PUSH2 0x119A DUP4 PUSH2 0x13E0 JUMP JUMPDEST PUSH2 0x11A4 SWAP2 SWAP1 PUSH2 0x1A12 JUMP JUMPDEST PUSH2 0x11AF SWAP1 PUSH1 0x1 PUSH2 0x18F0 JUMP JUMPDEST PUSH2 0x11B9 SWAP1 DUP5 PUSH2 0x18F0 JUMP JUMPDEST SWAP3 POP PUSH0 JUMPDEST DUP3 PUSH1 0xFF AND DUP2 LT ISZERO PUSH2 0x135C JUMPI PUSH2 0x11F2 PUSH2 0x11D6 PUSH1 0x1 DUP4 PUSH2 0x1A12 JUMP JUMPDEST PUSH2 0x11E1 SWAP1 PUSH1 0x5 PUSH2 0x1A12 JUMP JUMPDEST PUSH2 0x11EB SWAP1 DUP7 PUSH2 0x18F0 JUMP JUMPDEST DUP7 SWAP1 PUSH2 0x108A JUMP JUMPDEST PUSH1 0xFF AND DUP3 PUSH1 0x20 ADD MLOAD DUP3 PUSH1 0x5 DUP2 LT PUSH2 0x120B JUMPI PUSH2 0x120B PUSH2 0x1A29 JUMP JUMPDEST PUSH1 0x20 MUL ADD MLOAD MSTORE PUSH2 0x123F PUSH2 0x121F PUSH1 0x1 DUP4 PUSH2 0x1A12 JUMP JUMPDEST PUSH2 0x122A SWAP1 PUSH1 0x5 PUSH2 0x1A12 JUMP JUMPDEST PUSH2 0x1234 SWAP1 DUP7 PUSH2 0x18F0 JUMP JUMPDEST PUSH2 0x11EB SWAP1 PUSH1 0x1 PUSH2 0x18F0 JUMP JUMPDEST PUSH1 0xFF AND DUP3 PUSH1 0x20 ADD MLOAD DUP3 PUSH1 0x5 DUP2 LT PUSH2 0x1258 JUMPI PUSH2 0x1258 PUSH2 0x1A29 JUMP JUMPDEST PUSH1 0x20 MUL ADD MLOAD PUSH1 0x1 PUSH1 0x20 MUL ADD MSTORE PUSH2 0x1292 PUSH2 0x1272 PUSH1 0x1 DUP4 PUSH2 0x1A12 JUMP JUMPDEST PUSH2 0x127D SWAP1 PUSH1 0x5 PUSH2 0x1A12 JUMP JUMPDEST PUSH2 0x1287 SWAP1 DUP7 PUSH2 0x18F0 JUMP JUMPDEST PUSH2 0x11EB SWAP1 PUSH1 0x2 PUSH2 0x18F0 JUMP JUMPDEST PUSH1 0xFF AND DUP3 PUSH1 0x20 ADD MLOAD DUP3 PUSH1 0x5 DUP2 LT PUSH2 0x12AB JUMPI PUSH2 0x12AB PUSH2 0x1A29 JUMP JUMPDEST PUSH1 0x20 MUL ADD MLOAD PUSH1 0x40 ADD MSTORE PUSH2 0x12E2 PUSH2 0x12C2 PUSH1 0x1 DUP4 PUSH2 0x1A12 JUMP JUMPDEST PUSH2 0x12CD SWAP1 PUSH1 0x5 PUSH2 0x1A12 JUMP JUMPDEST PUSH2 0x12D7 SWAP1 DUP7 PUSH2 0x18F0 JUMP JUMPDEST PUSH2 0x11EB SWAP1 PUSH1 0x3 PUSH2 0x18F0 JUMP JUMPDEST PUSH1 0xFF AND DUP3 PUSH1 0x20 ADD MLOAD DUP3 PUSH1 0x5 DUP2 LT PUSH2 0x12FB JUMPI PUSH2 0x12FB PUSH2 0x1A29 JUMP JUMPDEST PUSH1 0x20 MUL ADD MLOAD PUSH1 0x60 ADD MSTORE PUSH2 0x1332 PUSH2 0x1312 PUSH1 0x1 DUP4 PUSH2 0x1A12 JUMP JUMPDEST PUSH2 0x131D SWAP1 PUSH1 0x5 PUSH2 0x1A12 JUMP JUMPDEST PUSH2 0x1327 SWAP1 DUP7 PUSH2 0x18F0 JUMP JUMPDEST PUSH2 0x11EB SWAP1 PUSH1 0x4 PUSH2 0x18F0 JUMP JUMPDEST PUSH1 0xFF AND DUP3 PUSH1 0x20 ADD MLOAD DUP3 PUSH1 0x5 DUP2 LT PUSH2 0x134B JUMPI PUSH2 0x134B PUSH2 0x1A29 JUMP JUMPDEST PUSH1 0x20 MUL ADD MLOAD PUSH1 0x80 ADD MSTORE PUSH1 0x1 ADD PUSH2 0x11BD JUMP JUMPDEST POP PUSH2 0x136B PUSH1 0x1 PUSH1 0xFF DUP5 AND PUSH2 0x1A12 JUMP JUMPDEST PUSH2 0x1376 SWAP1 PUSH1 0x5 PUSH2 0x1A12 JUMP JUMPDEST PUSH2 0x1380 SWAP1 DUP5 PUSH2 0x18F0 JUMP JUMPDEST SWAP3 POP PUSH0 JUMPDEST DUP3 PUSH1 0xFF AND DUP2 LT ISZERO PUSH2 0x13D8 JUMPI PUSH2 0x13A7 PUSH2 0x139D PUSH1 0x14 DUP4 PUSH2 0x1A12 JUMP JUMPDEST PUSH2 0x1159 SWAP1 DUP7 PUSH2 0x18F0 JUMP JUMPDEST DUP3 PUSH1 0x40 ADD MLOAD DUP3 PUSH1 0x5 DUP2 LT PUSH2 0x13BD JUMPI PUSH2 0x13BD PUSH2 0x1A29 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP1 SWAP3 AND PUSH1 0x20 SWAP3 SWAP1 SWAP3 MUL ADD MSTORE PUSH1 0x1 ADD PUSH2 0x1384 JUMP JUMPDEST POP SWAP3 POP SWAP3 SWAP1 POP JUMP JUMPDEST PUSH0 PUSH2 0x13EC DUP3 PUSH1 0x2 PUSH2 0x1AA1 JUMP JUMPDEST PUSH2 0x13F7 SWAP1 PUSH1 0x1 PUSH2 0x1B22 JUMP JUMPDEST PUSH1 0xFF AND SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH0 PUSH2 0x140F PUSH1 0x14 PUSH1 0xFF DUP5 AND PUSH2 0x1A12 JUMP JUMPDEST PUSH1 0x1 PUSH2 0x141C DUP5 PUSH1 0x5 PUSH2 0x1AA1 JUMP JUMPDEST PUSH1 0xFF AND PUSH2 0x1429 SWAP2 SWAP1 PUSH2 0x1A12 JUMP JUMPDEST PUSH1 0x14 PUSH2 0x1434 DUP6 PUSH2 0x13E0 JUMP JUMPDEST PUSH2 0x143E SWAP2 SWAP1 PUSH2 0x1A12 JUMP JUMPDEST PUSH2 0x1449 SWAP1 PUSH1 0x1 PUSH2 0x18F0 JUMP JUMPDEST PUSH2 0x1453 SWAP2 SWAP1 PUSH2 0x18F0 JUMP JUMPDEST PUSH2 0xFED SWAP2 SWAP1 PUSH2 0x18F0 JUMP JUMPDEST PUSH0 DUP2 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 GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x149A JUMPI RETURNDATASIZE PUSH0 PUSH0 RETURNDATACOPY RETURNDATASIZE PUSH0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP3 ADD DUP1 PUSH1 0x40 MSTORE POP DUP2 ADD SWAP1 PUSH2 0x14BE SWAP2 SWAP1 PUSH2 0x1B3B JUMP JUMPDEST PUSH2 0x14C9 SWAP1 PUSH1 0x12 PUSH2 0x1B5B JUMP JUMPDEST PUSH2 0xFED SWAP1 PUSH1 0xA PUSH2 0x1C4F JUMP JUMPDEST PUSH0 PUSH0 PUSH0 PUSH2 0x14E1 DUP7 DUP7 PUSH2 0x1585 JUMP JUMPDEST SWAP2 POP SWAP2 POP DUP2 PUSH0 SUB PUSH2 0x1505 JUMPI DUP4 DUP2 DUP2 PUSH2 0x14FB JUMPI PUSH2 0x14FB PUSH2 0x1ABD JUMP JUMPDEST DIV SWAP3 POP POP POP PUSH2 0x157E JUMP JUMPDEST DUP2 DUP5 GT PUSH2 0x151C JUMPI PUSH2 0x151C PUSH1 0x3 DUP6 ISZERO MUL PUSH1 0x11 XOR PUSH2 0x15A1 JUMP JUMPDEST PUSH0 DUP5 DUP7 DUP9 MULMOD PUSH0 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 DUP6 DUP5 GT SWAP1 SWAP7 SUB SWAP6 SWAP1 SWAP6 MUL SWAP2 SWAP1 SWAP4 SUB SWAP4 SWAP1 SWAP4 DIV SWAP3 SWAP1 SWAP3 OR MUL SWAP2 POP POP JUMPDEST SWAP4 SWAP3 POP POP POP JUMP JUMPDEST PUSH0 DUP1 PUSH0 NOT DUP4 DUP6 MULMOD SWAP4 SWAP1 SWAP3 MUL DUP1 DUP5 LT SWAP4 DUP2 SWAP1 SUB SWAP4 SWAP1 SWAP4 SUB SWAP4 SWAP2 POP POP JUMP JUMPDEST PUSH4 0x4E487B71 PUSH0 MSTORE DUP1 PUSH1 0x20 MSTORE PUSH1 0x24 PUSH1 0x1C REVERT JUMPDEST PUSH1 0x40 MLOAD DUP1 PUSH1 0x60 ADD PUSH1 0x40 MSTORE DUP1 PUSH2 0x15C5 PUSH2 0x15E4 JUMP JUMPDEST DUP2 MSTORE PUSH1 0x20 ADD PUSH2 0x15D2 PUSH2 0x1603 JUMP JUMPDEST DUP2 MSTORE PUSH1 0x20 ADD PUSH2 0x15DF PUSH2 0x1630 JUMP JUMPDEST SWAP1 MSTORE SWAP1 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 PUSH2 0x160 ADD PUSH1 0x40 MSTORE DUP1 PUSH1 0xB SWAP1 PUSH1 0x20 DUP3 MUL DUP1 CALLDATASIZE DUP4 CALLDATACOPY POP SWAP2 SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 PUSH1 0xA0 ADD PUSH1 0x40 MSTORE DUP1 PUSH1 0x5 SWAP1 JUMPDEST PUSH2 0x161A PUSH2 0x1630 JUMP JUMPDEST DUP2 MSTORE PUSH1 0x20 ADD SWAP1 PUSH1 0x1 SWAP1 SUB SWAP1 DUP2 PUSH2 0x1612 JUMPI SWAP1 POP POP SWAP1 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 PUSH1 0xA0 ADD PUSH1 0x40 MSTORE DUP1 PUSH1 0x5 SWAP1 PUSH1 0x20 DUP3 MUL DUP1 CALLDATASIZE DUP4 CALLDATACOPY POP SWAP2 SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH0 PUSH1 0x60 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x165E JUMPI PUSH0 PUSH0 REVERT JUMPDEST POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 AND DUP2 EQ PUSH2 0x2BA JUMPI PUSH0 PUSH0 REVERT JUMPDEST PUSH0 PUSH0 PUSH0 PUSH0 PUSH0 PUSH1 0xA0 DUP7 DUP9 SUB SLT ISZERO PUSH2 0x168C JUMPI PUSH0 PUSH0 REVERT JUMPDEST DUP6 CALLDATALOAD PUSH8 0xFFFFFFFFFFFFFFFF DUP2 GT ISZERO PUSH2 0x16A2 JUMPI PUSH0 PUSH0 REVERT JUMPDEST PUSH2 0x16AE DUP9 DUP3 DUP10 ADD PUSH2 0x164E JUMP JUMPDEST SWAP6 POP POP PUSH1 0x20 DUP7 ADD CALLDATALOAD PUSH2 0x16BF DUP2 PUSH2 0x1664 JUMP JUMPDEST SWAP4 POP PUSH1 0x40 DUP7 ADD CALLDATALOAD PUSH2 0x16CF DUP2 PUSH2 0x1664 JUMP JUMPDEST SWAP5 SWAP8 SWAP4 SWAP7 POP SWAP4 SWAP5 PUSH1 0x60 DUP2 ADD CALLDATALOAD SWAP5 POP PUSH1 0x80 ADD CALLDATALOAD SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x16F7 JUMPI PUSH0 PUSH0 REVERT JUMPDEST DUP2 CALLDATALOAD PUSH8 0xFFFFFFFFFFFFFFFF DUP2 GT ISZERO PUSH2 0x170D JUMPI PUSH0 PUSH0 REVERT JUMPDEST PUSH2 0x1719 DUP5 DUP3 DUP6 ADD PUSH2 0x164E JUMP JUMPDEST SWAP5 SWAP4 POP POP POP POP JUMP JUMPDEST PUSH4 0x4E487B71 PUSH1 0xE0 SHL PUSH0 MSTORE PUSH1 0x21 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH0 REVERT JUMPDEST PUSH0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x1745 JUMPI PUSH0 PUSH0 REVERT JUMPDEST DUP2 CALLDATALOAD PUSH1 0x3 DUP2 LT PUSH2 0x157E JUMPI PUSH0 PUSH0 REVERT JUMPDEST PUSH0 PUSH0 DUP4 CALLDATALOAD PUSH1 0x1E NOT DUP5 CALLDATASIZE SUB ADD DUP2 SLT PUSH2 0x1768 JUMPI PUSH0 PUSH0 REVERT JUMPDEST DUP4 ADD DUP1 CALLDATALOAD SWAP2 POP PUSH8 0xFFFFFFFFFFFFFFFF DUP3 GT ISZERO PUSH2 0x1782 JUMPI PUSH0 PUSH0 REVERT JUMPDEST PUSH1 0x20 ADD SWAP2 POP CALLDATASIZE DUP2 SWAP1 SUB DUP3 SGT ISZERO PUSH2 0x1796 JUMPI PUSH0 PUSH0 REVERT JUMPDEST SWAP3 POP SWAP3 SWAP1 POP JUMP JUMPDEST PUSH0 PUSH1 0x40 DUP3 DUP5 SUB SLT DUP1 ISZERO PUSH2 0x17AE JUMPI PUSH0 PUSH0 REVERT JUMPDEST POP PUSH1 0x40 DUP1 MLOAD SWAP1 DUP2 ADD PUSH8 0xFFFFFFFFFFFFFFFF DUP2 GT DUP3 DUP3 LT OR ISZERO PUSH2 0x17DE JUMPI PUSH4 0x4E487B71 PUSH1 0xE0 SHL PUSH0 MSTORE PUSH1 0x41 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH0 REVERT JUMPDEST PUSH1 0x40 MSTORE DUP3 CALLDATALOAD PUSH3 0xFFFFFF DUP2 AND DUP2 EQ PUSH2 0x17F3 JUMPI PUSH0 PUSH0 REVERT JUMPDEST DUP2 MSTORE PUSH1 0x20 DUP4 ADD CALLDATALOAD PUSH2 0x1803 DUP2 PUSH2 0x1664 JUMP JUMPDEST PUSH1 0x20 DUP3 ADD MSTORE SWAP4 SWAP3 POP POP POP JUMP JUMPDEST PUSH0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x181F JUMPI PUSH0 PUSH0 REVERT JUMPDEST DUP2 MLOAD DUP1 ISZERO ISZERO DUP2 EQ PUSH2 0x157E JUMPI PUSH0 PUSH0 REVERT JUMPDEST DUP1 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP1 DUP2 AND DUP4 MSTORE PUSH1 0x20 DUP1 DUP4 ADD MLOAD DUP3 AND SWAP1 DUP5 ADD MSTORE PUSH1 0x40 DUP1 DUP4 ADD MLOAD PUSH3 0xFFFFFF AND SWAP1 DUP5 ADD MSTORE PUSH1 0x60 DUP1 DUP4 ADD MLOAD SWAP2 DUP3 AND SWAP1 DUP5 ADD MSTORE POP PUSH1 0x80 DUP2 ADD MLOAD PUSH1 0x80 DUP4 ADD MSTORE PUSH1 0xA0 DUP2 ADD MLOAD PUSH1 0xA0 DUP4 ADD MSTORE PUSH1 0xC0 DUP2 ADD MLOAD PUSH1 0xC0 DUP4 ADD MSTORE PUSH1 0xE0 DUP2 ADD MLOAD PUSH2 0x189E PUSH1 0xE0 DUP5 ADD DUP3 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND SWAP1 MSTORE JUMP JUMPDEST POP POP POP JUMP JUMPDEST PUSH2 0x100 DUP2 ADD PUSH2 0xFED DUP3 DUP5 PUSH2 0x182E JUMP JUMPDEST PUSH0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x18C2 JUMPI PUSH0 PUSH0 REVERT JUMPDEST POP MLOAD SWAP2 SWAP1 POP JUMP JUMPDEST PUSH4 0x4E487B71 PUSH1 0xE0 SHL PUSH0 MSTORE PUSH1 0x11 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH0 REVERT JUMPDEST DUP2 DUP2 SUB DUP2 DUP2 GT ISZERO PUSH2 0xFED JUMPI PUSH2 0xFED PUSH2 0x18C9 JUMP JUMPDEST DUP1 DUP3 ADD DUP1 DUP3 GT ISZERO PUSH2 0xFED JUMPI PUSH2 0xFED PUSH2 0x18C9 JUMP JUMPDEST PUSH0 PUSH1 0x1 DUP3 ADD PUSH2 0x1914 JUMPI PUSH2 0x1914 PUSH2 0x18C9 JUMP JUMPDEST POP PUSH1 0x1 ADD SWAP1 JUMP JUMPDEST DUP1 PUSH0 JUMPDEST PUSH1 0xB DUP2 LT ISZERO PUSH2 0xD26 JUMPI DUP2 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP5 MSTORE PUSH1 0x20 SWAP4 DUP5 ADD SWAP4 SWAP1 SWAP2 ADD SWAP1 PUSH1 0x1 ADD PUSH2 0x191E JUMP JUMPDEST DUP1 PUSH0 JUMPDEST PUSH1 0x5 DUP2 LT ISZERO PUSH2 0xD26 JUMPI DUP2 MLOAD PUSH0 DUP6 DUP2 JUMPDEST PUSH1 0x5 DUP2 LT ISZERO PUSH2 0x1977 JUMPI DUP4 MLOAD DUP3 MSTORE PUSH1 0x20 SWAP4 DUP5 ADD SWAP4 SWAP1 SWAP2 ADD SWAP1 PUSH1 0x1 ADD PUSH2 0x1958 JUMP JUMPDEST POP POP POP PUSH1 0xA0 SWAP5 SWAP1 SWAP5 ADD SWAP4 POP PUSH1 0x20 SWAP2 SWAP1 SWAP2 ADD SWAP1 PUSH1 0x1 ADD PUSH2 0x1949 JUMP JUMPDEST DUP1 PUSH0 JUMPDEST PUSH1 0x5 DUP2 LT ISZERO PUSH2 0xD26 JUMPI DUP2 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP5 MSTORE PUSH1 0x20 SWAP4 DUP5 ADD SWAP4 SWAP1 SWAP2 ADD SWAP1 PUSH1 0x1 ADD PUSH2 0x1994 JUMP JUMPDEST PUSH2 0x580 DUP2 ADD PUSH2 0x19CB DUP3 DUP10 PUSH2 0x191B JUMP JUMPDEST PUSH2 0x19D9 PUSH2 0x160 DUP4 ADD DUP9 PUSH2 0x1946 JUMP JUMPDEST DUP6 PUSH2 0x480 DUP4 ADD MSTORE DUP5 PUSH2 0x4A0 DUP4 ADD MSTORE PUSH2 0x19F5 PUSH2 0x4C0 DUP4 ADD DUP6 PUSH2 0x1991 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP3 SWAP1 SWAP3 AND PUSH2 0x560 SWAP2 SWAP1 SWAP2 ADD MSTORE SWAP6 SWAP5 POP POP POP POP POP JUMP JUMPDEST DUP1 DUP3 MUL DUP2 ISZERO DUP3 DUP3 DIV DUP5 EQ OR PUSH2 0xFED JUMPI PUSH2 0xFED PUSH2 0x18C9 JUMP JUMPDEST PUSH4 0x4E487B71 PUSH1 0xE0 SHL PUSH0 MSTORE PUSH1 0x32 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH0 REVERT JUMPDEST DUP2 MLOAD PUSH2 0x520 DUP3 ADD SWAP1 DUP3 PUSH0 JUMPDEST PUSH1 0xB DUP2 LT ISZERO PUSH2 0x1A70 JUMPI DUP3 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP3 MSTORE PUSH1 0x20 SWAP3 DUP4 ADD SWAP3 SWAP1 SWAP2 ADD SWAP1 PUSH1 0x1 ADD PUSH2 0x1A48 JUMP JUMPDEST POP POP POP PUSH1 0x20 DUP4 ADD MLOAD PUSH2 0x1A86 PUSH2 0x160 DUP5 ADD DUP3 PUSH2 0x1946 JUMP JUMPDEST POP PUSH1 0x40 DUP4 ADD MLOAD PUSH2 0x1A9A PUSH2 0x480 DUP5 ADD DUP3 PUSH2 0x1991 JUMP JUMPDEST POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0xFF DUP2 DUP2 AND DUP4 DUP3 AND MUL SWAP1 DUP2 AND SWAP1 DUP2 DUP2 EQ PUSH2 0x1A9A JUMPI PUSH2 0x1A9A PUSH2 0x18C9 JUMP JUMPDEST PUSH4 0x4E487B71 PUSH1 0xE0 SHL PUSH0 MSTORE PUSH1 0x12 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH0 REVERT JUMPDEST PUSH0 DUP3 PUSH2 0x1AEB JUMPI PUSH4 0x4E487B71 PUSH1 0xE0 SHL PUSH0 MSTORE PUSH1 0x12 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH0 REVERT JUMPDEST POP DIV SWAP1 JUMP JUMPDEST PUSH2 0x540 DUP2 ADD PUSH2 0x1AFF DUP3 DUP8 PUSH2 0x191B JUMP JUMPDEST PUSH2 0x1B0D PUSH2 0x160 DUP4 ADD DUP7 PUSH2 0x1946 JUMP JUMPDEST DUP4 PUSH2 0x480 DUP4 ADD MSTORE PUSH2 0x122 PUSH2 0x4A0 DUP4 ADD DUP5 PUSH2 0x1991 JUMP JUMPDEST PUSH1 0xFF DUP2 DUP2 AND DUP4 DUP3 AND ADD SWAP1 DUP2 GT ISZERO PUSH2 0xFED JUMPI PUSH2 0xFED PUSH2 0x18C9 JUMP JUMPDEST PUSH0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x1B4B JUMPI PUSH0 PUSH0 REVERT JUMPDEST DUP2 MLOAD PUSH1 0xFF DUP2 AND DUP2 EQ PUSH2 0x157E JUMPI PUSH0 PUSH0 REVERT JUMPDEST PUSH1 0xFF DUP3 DUP2 AND DUP3 DUP3 AND SUB SWAP1 DUP2 GT ISZERO PUSH2 0xFED JUMPI PUSH2 0xFED PUSH2 0x18C9 JUMP JUMPDEST PUSH1 0x1 DUP2 JUMPDEST PUSH1 0x1 DUP5 GT ISZERO PUSH2 0xECD JUMPI DUP1 DUP6 DIV DUP2 GT ISZERO PUSH2 0x1B93 JUMPI PUSH2 0x1B93 PUSH2 0x18C9 JUMP JUMPDEST PUSH1 0x1 DUP5 AND ISZERO PUSH2 0x1BA1 JUMPI SWAP1 DUP2 MUL SWAP1 JUMPDEST PUSH1 0x1 SWAP4 SWAP1 SWAP4 SHR SWAP3 DUP1 MUL PUSH2 0x1B78 JUMP JUMPDEST PUSH0 DUP3 PUSH2 0x1BBD JUMPI POP PUSH1 0x1 PUSH2 0xFED JUMP JUMPDEST DUP2 PUSH2 0x1BC9 JUMPI POP PUSH0 PUSH2 0xFED JUMP JUMPDEST DUP2 PUSH1 0x1 DUP2 EQ PUSH2 0x1BDF JUMPI PUSH1 0x2 DUP2 EQ PUSH2 0x1BE9 JUMPI PUSH2 0x1C05 JUMP JUMPDEST PUSH1 0x1 SWAP2 POP POP PUSH2 0xFED JUMP JUMPDEST PUSH1 0xFF DUP5 GT ISZERO PUSH2 0x1BFA JUMPI PUSH2 0x1BFA PUSH2 0x18C9 JUMP JUMPDEST POP POP PUSH1 0x1 DUP3 SHL PUSH2 0xFED JUMP JUMPDEST POP PUSH1 0x20 DUP4 LT PUSH2 0x133 DUP4 LT AND PUSH1 0x4E DUP5 LT PUSH1 0xB DUP5 LT AND OR ISZERO PUSH2 0x1C28 JUMPI POP DUP2 DUP2 EXP PUSH2 0xFED JUMP JUMPDEST PUSH2 0x1C34 PUSH0 NOT DUP5 DUP5 PUSH2 0x1B74 JUMP JUMPDEST DUP1 PUSH0 NOT DIV DUP3 GT ISZERO PUSH2 0x1C47 JUMPI PUSH2 0x1C47 PUSH2 0x18C9 JUMP JUMPDEST MUL SWAP4 SWAP3 POP POP POP JUMP JUMPDEST PUSH0 PUSH2 0xFEA PUSH1 0xFF DUP5 AND DUP4 PUSH2 0x1BAF JUMP INVALID LOG2 PUSH5 0x6970667358 0x22 SLT KECCAK256 DUP8 DUP8 0xAC PUSH4 0x3566049C CODECOPY 0xB6 COINBASE BASEFEE COINBASE PUSH20 0xBA28749957DF6425BB8A9BBDF7459286E4396473 PUSH16 0x6C634300081E00330000000000000000 ","sourceMap":"522:9839:5:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;4594:474;;;;;;;;;;-1:-1:-1;4594:474:5;;;;;:::i;:::-;;:::i;:::-;;;1352:25:87;;;1340:2;1325:18;4594:474:5;;;;;;;3071:471;;;;;;;;;;-1:-1:-1;3071:471:5;;;;;:::i;:::-;;:::i;1371:593::-;;;;;;:::i;:::-;;:::i;:::-;;4594:474;4755:7;4797:20;4774:19;;;;:10;:19;:::i;:::-;:43;;;;;;;;:::i;:::-;;4770:280;;4834:65;4854:10;4866:7;4875:8;4885:6;4893:5;4834:19;:65::i;:::-;4827:72;;;;4770:280;4939:24;4916:19;;;;:10;:19;:::i;:::-;:47;;;;;;;;:::i;:::-;;4912:138;;4980:63;4998:10;5010:7;5019:8;5029:6;5037:5;4980:17;:63::i;4912:138::-;-1:-1:-1;5062:1:5;4594:474;;;;;;;;:::o;3071:471::-;3231:7;3273:20;3250:19;;;;:10;:19;:::i;:::-;:43;;;;;;;;:::i;:::-;;3246:278;;3310:64;3329:10;3341:7;3350:8;3360:6;3368:5;3310:18;:64::i;3246:278::-;3414:24;3391:19;;;;:10;:19;:::i;:::-;:47;;;;;;;;:::i;:::-;;3387:137;;3455:62;3472:10;3484:7;3493:8;3503:6;3511:5;3455:16;:62::i;1371:593::-;1445:10;:22;;;1471:1;1445:27;1441:65;;1481:25;;-1:-1:-1;;;1481:25:5;;;;;;;;;;;1441:65;1539:20;1516:19;;;;:10;:19;:::i;:::-;:43;;;;;;;;:::i;:::-;;1512:447;;1569:29;1612:23;;;;:10;:23;:::i;:::-;1601:58;;;;;;;:::i;:::-;1679:9;;;;1569:90;;-1:-1:-1;;;;;;1671:32:5;1667:72;;1712:27;;-1:-1:-1;;;1712:27:5;;;;;;;;;;;1667:72;1751:10;;:15;;:10;:15;1747:56;;1775:28;;-1:-1:-1;;;1775:28:5;;;;;;;;;;;1747:56;1561:249;1371:593;:::o;1512:447::-;1843:24;1820:19;;;;:10;:19;:::i;:::-;:47;;;;;;;;:::i;:::-;;1816:143;;1877:45;1898:23;;;;:10;:23;:::i;:::-;1877:45;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;1877:20:5;;-1:-1:-1;;;1877:45:5:i;:::-;1371:593;:::o;1816:143::-;1942:17;;-1:-1:-1;;;1942:17:5;;;;;;;;;;;6847:1160;7016:7;;7074:23;;;;:10;:23;:::i;:::-;7063:58;;;;;;;:::i;:::-;7031:90;;7128:19;7150:72;7165:6;7173:10;:22;;;7197:7;7206:8;7216:5;7150:14;:72::i;:::-;7269:9;;;;7229:70;;-1:-1:-1;;;7229:70:5;;-1:-1:-1;;;;;3815:32:87;;;7229:70:5;;;3797:51:87;-1:-1:-1;;3864:18:87;;;3857:34;7128:94:5;;-1:-1:-1;7229:31:5;;;;;3770:18:87;;7229:70:5;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;7305:49;7357:380;;;;;;;;7410:7;-1:-1:-1;;;;;7357:380:5;;;;;7435:8;-1:-1:-1;;;;;7357:380:5;;;;;7456:2;:10;;;7357:380;;;;;;7493:4;-1:-1:-1;;;;;7357:380:5;;;;;7516:15;7357:380;;;;7550:6;7357:380;;;;7581:11;7357:380;;;;7619:1;-1:-1:-1;;;;;7357:380:5;;;;7305:432;;7743:20;7766:2;:9;;;-1:-1:-1;;;;;7766:27:5;;7794:6;7766:35;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;7848:9;;;;7808:54;;-1:-1:-1;;;7808:54:5;;-1:-1:-1;;;;;3815:32:87;;;7808:54:5;;;3797:51:87;7860:1:5;3864:18:87;;;3857:34;7743:58:5;;-1:-1:-1;7808:31:5;;;;;3770:18:87;;7808:54:5;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;7907:11;7892:12;:26;7888:89;;;7927:50;;-1:-1:-1;;;7927:50:5;;;;;5818:25:87;;;5859:18;;;5852:34;;;5791:18;;7927:50:5;;;;;;;;7888:89;7990:12;6847:1160;-1:-1:-1;;;;;;;;;6847:1160:5:o;9384:975::-;9551:7;;;9627:89;9656:23;;;;:10;:23;:::i;:::-;9627:89;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;9687:7:5;;-1:-1:-1;9702:8:5;;-1:-1:-1;9627:21:5;;-1:-1:-1;9627:89:5:i;:::-;9566:150;;;;9722:19;9744:72;9759:6;9767:10;:22;;;9791:7;9800:8;9810:5;9744:14;:72::i;:::-;9822:61;;-1:-1:-1;;;9822:61:5;;-1:-1:-1;;;;;3815:32:87;;;9822:61:5;;;3797:51:87;3864:18;;;3857:34;;;9722:94:5;;-1:-1:-1;9822:31:5;;;;;;3770:18:87;;9822:61:5;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;-1:-1:-1;9889:24:5;;10032:237;10048:11;;;;;:31;;;733:1;10063;:16;10048:31;10032:237;;;10095:16;10113:22;10139:37;10154:6;10162:5;10169:6;10139:14;:37::i;:::-;10094:82;;;;10194:26;10203:6;10211:8;10194;:26::i;:::-;10184:36;;;;:::i;:::-;;-1:-1:-1;10228:34:5;10248:14;10228:34;;:::i;:::-;;;10086:183;;10081:3;;;;;:::i;:::-;;;;10032:237;;;-1:-1:-1;10274:51:5;;-1:-1:-1;;;10274:51:5;;-1:-1:-1;;;;;3815:32:87;;;10274:51:5;;;3797::87;10323:1:5;3864:18:87;;;3857:34;10274:31:5;;;;;3770:18:87;;10274:51:5;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;-1:-1:-1;10338:16:5;9384:975;-1:-1:-1;;;;;;;;;9384:975:5:o;5647:1196::-;5815:7;;5873:23;;;;:10;:23;:::i;:::-;5862:58;;;;;;;:::i;:::-;5830:90;;5926:20;5949:72;5964:6;5972:10;:22;;;5996:7;6005:8;6015:5;5949:14;:72::i;:::-;6068:9;;;;6028:59;;-1:-1:-1;;;6028:59:5;;-1:-1:-1;;;;;3815:32:87;;;6028:59:5;;;3797:51:87;3864:18;;;3857:34;;;5926:95:5;;-1:-1:-1;6028:31:5;;;;;3770:18:87;;6028:59:5;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;6093:48;6144:380;;;;;;;;6196:7;-1:-1:-1;;;;;6144:380:5;;;;;6221:8;-1:-1:-1;;;;;6144:380:5;;;;;6242:2;:10;;;6144:380;;;;;;6279:4;-1:-1:-1;;;;;6144:380:5;;;;;6302:15;6144:380;;;;6335:6;6144:380;;;;6367:12;6144:380;;;;6406:1;-1:-1:-1;;;;;6144:380:5;;;;6093:431;;6531:16;6550:2;:9;;;-1:-1:-1;;;;;6550:26:5;;6577:6;6550:34;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;6651:9;;;;6594:68;;-1:-1:-1;;;6594:68:5;;6636:4;6594:68;;;6906:51:87;-1:-1:-1;;;;;6993:32:87;;;6973:18;;;6966:60;6531:53:5;;-1:-1:-1;6594:33:5;;;;;6879:18:87;;6594:68:5;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;:73;6590:115;;6676:29;;-1:-1:-1;;;6676:29:5;;;;;;;;;;;6590:115;6746:12;6735:8;:23;6731:86;;;6767:50;;-1:-1:-1;;;6767:50:5;;;;;5818:25:87;;;5859:18;;;5852:34;;;5791:18;;6767:50:5;5644:248:87;8011:874:5;8177:16;;;8262:89;8291:23;;;;:10;:23;:::i;8262:89::-;8201:150;;;;8357:20;8380:72;8395:6;8403:10;:22;;;8427:7;8436:8;8446:5;8380:14;:72::i;:::-;8459:56;;-1:-1:-1;;;8459:56:5;;-1:-1:-1;;;;;3815:32:87;;;8459:56:5;;;3797:51:87;3864:18;;;3857:34;;;8357:95:5;;-1:-1:-1;8459:31:5;;;;;;3770:18:87;;8459:56:5;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;-1:-1:-1;8548:11:5;;8561:16;;;;8601:11;;;;;8532:96;;-1:-1:-1;;;8532:96:5;;-1:-1:-1;;;;;8532:15:5;;;;;:96;;8548:11;;8561:16;;8579:6;;8587:12;;8601:11;8622:4;;8532:96;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;8639:65;;-1:-1:-1;;;8639:65:5;;8681:4;8639:65;;;6906:51:87;-1:-1:-1;;;;;6993:32:87;;;6973:18;;;6966:60;8521:107:5;;-1:-1:-1;8639:33:5;;;;;;6879:18:87;;8639:65:5;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;:70;8635:112;;8718:29;;-1:-1:-1;;;8718:29:5;;;;;;;;;;;8635:112;8788:12;8777:8;:23;8773:86;;;8809:50;;-1:-1:-1;;;8809:50:5;;;;;5818:25:87;;;5859:18;;;5852:34;;;5791:18;;8809:50:5;5644:248:87;8773:86:5;8865:15;;;8011:874;;;;;;;:::o;1751:929:4:-;1815:19;1850:36;:11;1815:19;1850:21;:36::i;:::-;1815:72;-1:-1:-1;;;;;;1897:29:4;;1893:65;;1935:23;;-1:-1:-1;;;1935:23:4;;;;;;;;;;;1893:65;1964:13;1980:36;1116:28;932:2;1964:13;1116:28;:::i;:::-;1980:11;;:19;:36::i;:::-;1964:52;;2026:7;:12;;2037:1;2026:12;2022:42;;2047:17;;-1:-1:-1;;;2047:17:4;;;;;;;;;;;2022:42;2070:14;977:1;1116:28;932:2;2070:14;1116:28;:::i;:::-;1195;;;;:::i;:::-;2070:35;;2116:9;2111:503;2131:7;2127:11;;:1;:11;2111:503;;;2154:12;2168:23;2195:30;2205:11;2218:6;2195:9;:30::i;:::-;2153:72;;;;2238:9;2233:156;2253:6;2249:10;;:1;:10;2233:156;;;2280:11;;2310:1;;2292:5;:1;2296;2292:5;:::i;:::-;2280:18;;;;;;;:::i;:::-;;;;;-1:-1:-1;;;;;2280:32:4;;:72;;;-1:-1:-1;2316:11:4;;2350:1;;2328:5;:1;2332;2328:5;:::i;:::-;:9;;2336:1;2328:9;:::i;:::-;2316:22;;;;;;;:::i;:::-;;;;;-1:-1:-1;;;;;2316:36:4;;2280:72;2276:104;;;2374:5;2361:19;;-1:-1:-1;;;2361:19:4;;;;;;;;:::i;2276:104::-;2261:3;;2233:156;;;-1:-1:-1;2400:11:4;;2435:1;;2412:10;:6;2421:1;2412:10;:::i;:::-;2400:23;;;;;;;;;:::i;:::-;;;;;-1:-1:-1;;;;;2400:37:4;;2396:69;;2459:5;2446:19;;-1:-1:-1;;;2446:19:4;;;;;;;;:::i;2396:69::-;1020:1;2477:6;:19;;;;:67;;;;-1:-1:-1;2500:11:4;;2542:1;;2512:17;2522:6;2512:9;:17::i;:::-;2500:30;;;;;;;:::i;:::-;;;;;-1:-1:-1;;;;;2500:44:4;;;2477:67;2473:99;;;2566:5;2553:19;;-1:-1:-1;;;2553:19:4;;;;;;;;:::i;2473:99::-;2590:17;2600:6;2590:9;:17::i;:::-;2580:27;;;;:::i;:::-;;-1:-1:-1;;;2140:3:4;;2111:503;;;;2645:6;2623:11;:18;:28;2619:56;;2660:15;;-1:-1:-1;;;2660:15:4;;;;;;;;;;;2619:56;1809:871;;;1751:929;:::o;5351:292:5:-;5509:7;5617:21;5630:7;5617:12;:21::i;:::-;5531:83;5591:17;5597:11;605:4;5591:17;:::i;:::-;605:4;5531:52;5572:5;605:4;5541:22;5554:8;5541:12;:22::i;:::-;5532:31;;:6;:31;:::i;:::-;5531:40;:52;:40;:52::i;:83::-;:107;;;;:::i;:::-;5524:114;5351:292;-1:-1:-1;;;;;;5351:292:5:o;4113:779:4:-;4232:19;4253:23;;:::i;:::-;4306:36;:11;1067:1;4306:21;:36::i;:::-;4284:59;-1:-1:-1;4349:13:4;4365:36;1116:28;932:2;4349:13;1116:28;:::i;:::-;4365:11;;:19;:36::i;:::-;4349:52;-1:-1:-1;4407:14:4;977:1;1116:28;932:2;4407:14;1116:28;:::i;:::-;1195;;;;:::i;:::-;4407:35;;4453:9;4448:395;4468:7;4464:11;;:1;:11;4448:395;;;4490:12;4505:27;:11;4525:6;4505:19;:27::i;:::-;4490:42;-1:-1:-1;;;;;;4553:53:4;;:42;4575:19;977:1;4575:6;:19;:::i;:::-;4553:11;;:21;:42::i;:::-;-1:-1:-1;;;;;4553:53:4;;:147;;;;-1:-1:-1;;;;;;4618:82:4;;:70;4662:21;;;;932:2;4662:21;:::i;:::-;:25;;4686:1;4662:25;:::i;:::-;4640:19;977:1;4640:6;:19;:::i;:::-;:47;;;;:::i;4618:70::-;-1:-1:-1;;;;;4618:82:4;;4553:147;4540:262;;;4731:30;4741:11;4754:6;4731:9;:30::i;:::-;4719:42;-1:-1:-1;4771:22:4;;-1:-1:-1;;;;;4771:22:4;4540:262;4819:17;4829:6;4819:9;:17::i;:::-;4809:27;;;;:::i;:::-;;-1:-1:-1;;4477:3:4;;4448:395;;;-1:-1:-1;4855:32:4;;-1:-1:-1;;;4855:32:4;;-1:-1:-1;;;;;6924:32:87;;;4855::4;;;6906:51:87;6993:32;;6973:18;;;6966:60;6879:18;;4855:32:4;6732:300:87;4113:779:4;;;;;;;:::o;8889:491:5:-;9100:11;;9113:16;;;;9139:11;;;;;9086:65;;-1:-1:-1;;;9086:65:5;;9021:16;;;;-1:-1:-1;;;;;9086:13:5;;;;;:65;;9100:11;9113:16;9131:6;;9086:65;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;9191:11;;9210:16;;;;9337:11;;;;;9168:207;;-1:-1:-1;;;9168:207:5;;9069:82;;-1:-1:-1;;;;;;9168:15:5;;;;;:207;;9191:11;;9210:16;;9069:82;;9191:11;;9364:4;;9168:207;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;9157:218;;8889:491;;;;;;:::o;5633:111:47:-;5691:7;5328:5;;;5725;;;5327:36;5322:42;;5717:20;5710:27;;5633:111;;;;;:::o;5072:275:5:-;5230:7;5320:22;5333:8;5320:12;:22::i;:::-;5252:65;5292:17;5298:11;605:4;5292:17;:::i;:::-;5311:5;5262:21;5275:7;5262:12;:21::i;:::-;5253:30;;:6;:30;:::i;12432:354:86:-;12511:7;12555:11;:6;12564:2;12555:11;:::i;:::-;12538:6;:13;:28;;12530:62;;;;-1:-1:-1;;;12530:62:86;;12657:2:87;12530:62:86;;;12639:21:87;12696:2;12676:18;;;12669:30;-1:-1:-1;;;12715:18:87;;;12708:51;12776:18;;12530:62:86;12455:345:87;12530:62:86;-1:-1:-1;12680:30:86;12696:4;12680:30;12674:37;-1:-1:-1;;;12670:71:86;;;12432:354::o;12792:302::-;12869:5;12911:10;:6;12920:1;12911:10;:::i;:::-;12894:6;:13;:27;;12886:60;;;;-1:-1:-1;;;12886:60:86;;13007:2:87;12886:60:86;;;12989:21:87;13046:2;13026:18;;;13019:30;-1:-1:-1;;;13065:18:87;;;13058:49;13124:18;;12886:60:86;12805:343:87;12886:60:86;-1:-1:-1;13022:29:86;13038:3;13022:29;13016:36;;12792:302::o;2684:1065:4:-;2780:12;2794:23;;:::i;:::-;2834:27;:11;2854:6;2834:19;:27::i;:::-;2825:36;;1020:1;2871:6;:18;;;2867:51;;;2898:20;;-1:-1:-1;;;2898:20:4;;13325:4:87;13313:17;;2898:20:4;;;13295:36:87;13268:18;;2898:20:4;13153:184:87;2867:51:4;2929:9;2924:137;2944:17;2954:6;2944:9;:17::i;:::-;2940:1;:21;2924:137;;;2993:61;3037:16;932:2;3037:1;:16;:::i;:::-;3015:19;977:1;3015:6;:19;:::i;:::-;:38;;;;:::i;:::-;2993:11;;:21;:61::i;:::-;2976:11;;2988:1;2976:14;;;;;;;:::i;:::-;-1:-1:-1;;;;;2976:78:4;;;:14;;;;;;:78;2963:3;;2924:137;;;;932:2;3089:17;3099:6;3089:9;:17::i;:::-;:32;;;;:::i;:::-;3076:45;;977:1;3076:45;:::i;:::-;3066:55;;;;:::i;:::-;;;3132:9;3127:461;3147:6;3143:10;;:1;:10;3127:461;;;3193:48;3222:14;977:1;3222;:14;:::i;:::-;:18;;3239:1;3222:18;:::i;:::-;3213:27;;:6;:27;:::i;:::-;3193:11;;:19;:48::i;:::-;3168:73;;:5;:16;;;3185:1;3168:19;;;;;;;:::i;:::-;;;;;:73;3274:52;3303:14;977:1;3303;:14;:::i;:::-;:18;;3320:1;3303:18;:::i;:::-;3294:27;;:6;:27;:::i;:::-;:31;;3324:1;3294:31;:::i;3274:52::-;3249:77;;:5;:16;;;3266:1;3249:19;;;;;;;:::i;:::-;;;;;3269:1;3249:22;;;:77;3359:52;3388:14;977:1;3388;:14;:::i;:::-;:18;;3405:1;3388:18;:::i;:::-;3379:27;;:6;:27;:::i;:::-;:31;;3409:1;3379:31;:::i;3359:52::-;3334:77;;:5;:16;;;3351:1;3334:19;;;;;;;:::i;:::-;;;;;:22;;:77;3444:52;3473:14;977:1;3473;:14;:::i;:::-;:18;;3490:1;3473:18;:::i;:::-;3464:27;;:6;:27;:::i;:::-;:31;;3494:1;3464:31;:::i;3444:52::-;3419:77;;:5;:16;;;3436:1;3419:19;;;;;;;:::i;:::-;;;;;:22;;:77;3529:52;3558:14;977:1;3558;:14;:::i;:::-;:18;;3575:1;3558:18;:::i;:::-;3549:27;;:6;:27;:::i;:::-;:31;;3579:1;3549:31;:::i;3529:52::-;3504:77;;:5;:16;;;3521:1;3504:19;;;;;;;:::i;:::-;;;;;:22;;:77;3155:3;;3127:461;;;-1:-1:-1;3603:19:4;977:1;3603:19;;;;:::i;:::-;:23;;3625:1;3603:23;:::i;:::-;3593:33;;;;:::i;:::-;;;3637:9;3632:113;3652:6;3648:10;;:1;:10;3632:113;;;3690:48;3721:16;932:2;3721:1;:16;:::i;:::-;3712:25;;:6;:25;:::i;3690:48::-;3673:5;:11;;;3685:1;3673:14;;;;;;;:::i;:::-;-1:-1:-1;;;;;3673:65:4;;;:14;;;;;;:65;3660:3;;3632:113;;;;2684:1065;;;;;:::o;4011:98::-;4066:7;4089:10;:6;4098:1;4089:10;:::i;:::-;:14;;4102:1;4089:14;:::i;:::-;4081:23;;;4011:98;-1:-1:-1;;4011:98:4:o;3753:254::-;3809:7;3971:21;932:2;3971:21;;;;:::i;:::-;977:1;3923:10;:6;3932:1;3923:10;:::i;:::-;:23;;;;;;:::i;:::-;932:2;3866:17;3876:6;3866:9;:17::i;:::-;:38;;;;:::i;:::-;3837:67;;977:1;3837:67;:::i;:::-;:110;;;;:::i;:::-;:156;;;;:::i;1968:134:5:-;2028:7;2078:5;-1:-1:-1;;;;;2063:30:5;;:32;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;2058:37;;:2;:37;:::i;:::-;2051:45;;:2;:45;:::i;7258:3683:47:-;7340:14;7391:12;7405:11;7420:12;7427:1;7430;7420:6;:12::i;:::-;7390:42;;;;7514:4;7522:1;7514:9;7510:365;;7849:11;7843:3;:17;;;;;:::i;:::-;;7836:24;;;;;;7510:365;8000:4;7985:11;:19;7981:142;;8024:84;5328:5;8044:16;;5327:36;940:4:43;5322:42:47;8024:11;:84::i;:::-;8375:17;8526:11;8523:1;8520;8513:25;8918:12;8948:15;;;8933:31;;9083:22;;;;;9816:1;9797;:15;;9796:21;;10049;;;10045:25;;10034:36;10119:21;;;10115:25;;10104:36;10191:21;;;10187:25;;10176:36;10262:21;;;10258:25;;10247:36;10335:21;;;10331:25;;10320:36;10409:21;;;10405:25;;;10394:36;9325:12;;;;9321:23;;;9346:1;9317:31;8638:18;;;8628:29;;;9432:11;;;;8681:19;;;;9176:14;;;;9425:18;;;;10884:13;;-1:-1:-1;;7258:3683:47;;;;;;:::o;1027:550::-;1088:12;;-1:-1:-1;;1471:1:47;1468;1461:20;1501:9;;;;1549:11;;;1535:12;;;;1531:30;;;;;1027:550;-1:-1:-1;;1027:550:47:o;1776:194:43:-;1881:10;1875:4;1868:24;1918:4;1912;1905:18;1949:4;1943;1936:18;-1:-1:-1;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;:::o;:::-;;;;;;;;;;;;;;;;;;;;;;;;:::o;:::-;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;:::o;:::-;;;;;;;;;;;;;;;;;;;;;;;;:::o;14:158:87:-;77:5;122:2;113:6;108:3;104:16;100:25;97:45;;;138:1;135;128:12;97:45;-1:-1:-1;160:6:87;14:158;-1:-1:-1;14:158:87:o;177:131::-;-1:-1:-1;;;;;252:31:87;;242:42;;232:70;;298:1;295;288:12;313:880;438:6;446;454;462;470;523:3;511:9;502:7;498:23;494:33;491:53;;;540:1;537;530:12;491:53;580:9;567:23;613:18;605:6;602:30;599:50;;;645:1;642;635:12;599:50;668:70;730:7;721:6;710:9;706:22;668:70;:::i;:::-;658:80;;;788:2;777:9;773:18;760:32;801:31;826:5;801:31;:::i;:::-;851:5;-1:-1:-1;908:2:87;893:18;;880:32;921:33;880:32;921:33;:::i;:::-;313:880;;;;-1:-1:-1;973:7:87;;1053:2;1038:18;;1025:32;;-1:-1:-1;1156:3:87;1141:19;1128:33;;313:880;-1:-1:-1;;313:880:87:o;1388:362::-;1477:6;1530:2;1518:9;1509:7;1505:23;1501:32;1498:52;;;1546:1;1543;1536:12;1498:52;1586:9;1573:23;1619:18;1611:6;1608:30;1605:50;;;1651:1;1648;1641:12;1605:50;1674:70;1736:7;1727:6;1716:9;1712:22;1674:70;:::i;:::-;1664:80;1388:362;-1:-1:-1;;;;1388:362:87:o;1755:127::-;1816:10;1811:3;1807:20;1804:1;1797:31;1847:4;1844:1;1837:15;1871:4;1868:1;1861:15;1887:273;1963:6;2016:2;2004:9;1995:7;1991:23;1987:32;1984:52;;;2032:1;2029;2022:12;1984:52;2071:9;2058:23;2110:1;2103:5;2100:12;2090:40;;2126:1;2123;2116:12;2165:521;2242:4;2248:6;2308:11;2295:25;2402:2;2398:7;2387:8;2371:14;2367:29;2363:43;2343:18;2339:68;2329:96;;2421:1;2418;2411:12;2329:96;2448:33;;2500:20;;;-1:-1:-1;2543:18:87;2532:30;;2529:50;;;2575:1;2572;2565:12;2529:50;2608:4;2596:17;;-1:-1:-1;2639:14:87;2635:27;;;2625:38;;2622:58;;;2676:1;2673;2666:12;2622:58;2165:521;;;;;:::o;2691:818::-;2787:6;2847:2;2835:9;2826:7;2822:23;2818:32;2862:2;2859:22;;;2877:1;2874;2867:12;2859:22;-1:-1:-1;2926:2:87;2920:9;;;2956:15;;3001:18;2986:34;;3022:22;;;2983:62;2980:185;;;3087:10;3082:3;3078:20;3075:1;3068:31;3122:4;3119:1;3112:15;3150:4;3147:1;3140:15;2980:185;3181:2;3174:22;3218:23;;3281:8;3270:20;;3260:31;;3250:59;;3305:1;3302;3295:12;3250:59;3318:21;;3391:2;3376:18;;3363:32;3404:33;3363:32;3404:33;:::i;:::-;3465:2;3453:15;;3446:32;3457:6;2691:818;-1:-1:-1;;;2691:818:87:o;3902:277::-;3969:6;4022:2;4010:9;4001:7;3997:23;3993:32;3990:52;;;4038:1;4035;4028:12;3990:52;4070:9;4064:16;4123:5;4116:13;4109:21;4102:5;4099:32;4089:60;;4145:1;4142;4135:12;4184:677;4277:12;;-1:-1:-1;;;;;4273:38:87;;;4261:51;;4365:4;4354:16;;;4348:23;4344:49;;4328:14;;;4321:73;4447:4;4436:16;;;4430:23;4455:8;4426:38;4410:14;;;4403:62;4511:4;4500:16;;;4494:23;3580:31;;;4559:14;;;3568:44;4526:48;4623:4;4616:5;4612:16;4606:23;4599:4;4594:3;4590:14;4583:47;4679:4;4672:5;4668:16;4662:23;4655:4;4650:3;4646:14;4639:47;4735:4;4728:5;4724:16;4718:23;4711:4;4706:3;4702:14;4695:47;4790:4;4783:5;4779:16;4773:23;4805:50;4849:4;4844:3;4840:14;4824;-1:-1:-1;;;;;3580:31:87;3568:44;;3514:104;4805:50;;4184:677;;:::o;4866:297::-;5084:3;5069:19;;5097:60;5073:9;5139:6;5097:60;:::i;5168:184::-;5238:6;5291:2;5279:9;5270:7;5266:23;5262:32;5259:52;;;5307:1;5304;5297:12;5259:52;-1:-1:-1;5330:16:87;;5168:184;-1:-1:-1;5168:184:87:o;5897:127::-;5958:10;5953:3;5949:20;5946:1;5939:31;5989:4;5986:1;5979:15;6013:4;6010:1;6003:15;6029:128;6096:9;;;6117:11;;;6114:37;;;6131:18;;:::i;6162:125::-;6227:9;;;6248:10;;;6245:36;;;6261:18;;:::i;6292:135::-;6331:3;6352:17;;;6349:43;;6372:18;;:::i;:::-;-1:-1:-1;6419:1:87;6408:13;;6292:135::o;7037:329::-;7130:5;7153:1;7163:197;7177:4;7174:1;7171:11;7163:197;;;7240:13;;-1:-1:-1;;;;;7236:39:87;7224:52;;7305:4;7296:14;;;;7333:17;;;;7272:1;7190:9;7163:197;;7371:707;7470:5;7493:1;7503:569;7517:4;7514:1;7511:11;7503:569;;;7574:13;;7618:1;7645:3;7618:1;7742:209;7758:4;7753:3;7750:13;7742:209;;;7831:15;;7817:30;;7884:4;7918:19;;;;7873:16;;;;7782:1;7773:11;7742:209;;;-1:-1:-1;;;7987:4:87;7978:14;;;;;-1:-1:-1;8057:4:87;8045:17;;;;;7537:1;7530:9;7503:569;;8083:340;8187:5;8210:1;8220:197;8234:4;8231:1;8228:11;8220:197;;;8297:13;;-1:-1:-1;;;;;8293:39:87;8281:52;;8362:4;8353:14;;;;8390:17;;;;8329:1;8247:9;8220:197;;8428:826;8888:4;8873:20;;8902:43;8877:9;8927:6;8902:43;:::i;:::-;8954:59;9008:3;8997:9;8993:19;8985:6;8954:59;:::i;:::-;9051:6;9044:4;9033:9;9029:20;9022:36;9096:6;9089:4;9078:9;9074:20;9067:36;9112:65;9171:4;9160:9;9156:20;9148:6;9112:65;:::i;:::-;-1:-1:-1;;;;;9215:32:87;;;;9208:4;9193:20;;;;9186:62;8428:826;;-1:-1:-1;;;;;8428:826:87:o;9259:168::-;9332:9;;;9363;;9380:15;;;9374:22;;9360:37;9350:71;;9401:18;;:::i;9432:127::-;9493:10;9488:3;9484:20;9481:1;9474:31;9524:4;9521:1;9514:15;9548:4;9545:1;9538:15;9564:804;9776:13;;9752:4;9737:20;;;9741:9;9710:4;9896:197;9910:4;9907:1;9904:11;9896:197;;;9973:13;;-1:-1:-1;;;;;9969:39:87;9957:52;;10038:4;10066:17;;;;10029:14;;;;10005:1;9923:9;9896:197;;;9900:3;;;10140:4;10132:6;10128:17;10122:24;10155:68;10215:6;10204:9;10200:22;10186:12;10155:68;:::i;:::-;;10272:4;10264:6;10260:17;10254:24;10287:75;10354:6;10343:9;10339:22;10323:14;10287:75;:::i;:::-;;9564:804;;;;:::o;10373:225::-;10477:4;10456:12;;;10470;;;10452:31;10503:22;;;;10544:24;;;10534:58;;10572:18;;:::i;10603:127::-;10664:10;10659:3;10655:20;10652:1;10645:31;10695:4;10692:1;10685:15;10719:4;10716:1;10709:15;10735:217;10775:1;10801;10791:132;;10845:10;10840:3;10836:20;10833:1;10826:31;10880:4;10877:1;10870:15;10908:4;10905:1;10898:15;10791:132;-1:-1:-1;10937:9:87;;10735:217::o;10957:654::-;11361:4;11346:20;;11375:43;11350:9;11400:6;11375:43;:::i;:::-;11427:59;11481:3;11470:9;11466:19;11458:6;11427:59;:::i;:::-;11524:6;11517:4;11506:9;11502:20;11495:36;11540:65;11599:4;11588:9;11584:20;11576:6;11540:65;:::i;13342:148::-;13430:4;13409:12;;;13423;;;13405:31;;13448:13;;13445:39;;;13464:18;;:::i;13495:273::-;13563:6;13616:2;13604:9;13595:7;13591:23;13587:32;13584:52;;;13632:1;13629;13622:12;13584:52;13664:9;13658:16;13714:4;13707:5;13703:16;13696:5;13693:27;13683:55;;13734:1;13731;13724:12;13773:151;13863:4;13856:12;;;13842;;;13838:31;;13881:14;;13878:40;;;13898:18;;:::i;13929:375::-;14017:1;14035:5;14049:249;14070:1;14060:8;14057:15;14049:249;;;14120:4;14115:3;14111:14;14105:4;14102:24;14099:50;;;14129:18;;:::i;:::-;14179:1;14169:8;14165:16;14162:49;;;14193:16;;;;14162:49;14276:1;14272:16;;;;;14232:15;;14049:249;;14309:902;14358:5;14388:8;14378:80;;-1:-1:-1;14429:1:87;14443:5;;14378:80;14477:4;14467:76;;-1:-1:-1;14514:1:87;14528:5;;14467:76;14559:4;14577:1;14572:59;;;;14645:1;14640:174;;;;14552:262;;14572:59;14602:1;14593:10;;14616:5;;;14640:174;14677:3;14667:8;14664:17;14661:43;;;14684:18;;:::i;:::-;-1:-1:-1;;14740:1:87;14726:16;;14799:5;;14552:262;;14898:2;14888:8;14885:16;14879:3;14873:4;14870:13;14866:36;14860:2;14850:8;14847:16;14842:2;14836:4;14833:12;14829:35;14826:77;14823:203;;;-1:-1:-1;14935:19:87;;;15011:5;;14823:203;15058:42;-1:-1:-1;;15083:8:87;15077:4;15058:42;:::i;:::-;15136:6;15132:1;15128:6;15124:19;15115:7;15112:32;15109:58;;;15147:18;;:::i;:::-;15185:20;;14309:902;-1:-1:-1;;;14309:902:87:o;15216:140::-;15274:5;15303:47;15344:4;15334:8;15330:19;15324:4;15303:47;:::i"},"methodIdentifiers":{"exactInput(SwapLibrary.SwapConfig,address,address,uint256,uint256)":"77566915","exactOutput(SwapLibrary.SwapConfig,address,address,uint256,uint256)":"581e517d","validate(SwapLibrary.SwapConfig)":"b2fca32c"}},"metadata":"{\"compiler\":{\"version\":\"0.8.30+commit.73712a01\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"inputs\":[],\"name\":\"AllowanceShouldGoBackToZero\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"AtLeastOneRoute\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"CurveRouterCantBeZero\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"InvalidLength\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"InvalidProtocol\",\"type\":\"error\"},{\"inputs\":[{\"components\":[{\"internalType\":\"address[11]\",\"name\":\"route\",\"type\":\"address[11]\"},{\"internalType\":\"uint256[5][5]\",\"name\":\"swapParams\",\"type\":\"uint256[5][5]\"},{\"internalType\":\"address[5]\",\"name\":\"pools\",\"type\":\"address[5]\"}],\"internalType\":\"struct CurveRoutes.CurveRoute\",\"name\":\"route\",\"type\":\"tuple\"}],\"name\":\"InvalidRoute\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"MaxSlippageCannotBeZero\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"received\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"amountOutMin\",\"type\":\"uint256\"}],\"name\":\"ReceivedLessThanAcceptable\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"tokenIn\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"tokenOut\",\"type\":\"address\"}],\"name\":\"RouteNotFound\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"spent\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"amountInMax\",\"type\":\"uint256\"}],\"name\":\"SpentMoreThanAcceptable\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"uint8\",\"name\":\"nSwaps\",\"type\":\"uint8\"}],\"name\":\"TooManySwaps\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"UniswapFeeTierCannotBeZero\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"UniswapRouterCannotBeZero\",\"type\":\"error\"},{\"inputs\":[{\"components\":[{\"internalType\":\"enum SwapLibrary.SwapProtocol\",\"name\":\"protocol\",\"type\":\"SwapLibrary.SwapProtocol\"},{\"internalType\":\"uint256\",\"name\":\"maxSlippage\",\"type\":\"uint256\"},{\"internalType\":\"bytes\",\"name\":\"customParams\",\"type\":\"bytes\"}],\"internalType\":\"struct SwapLibrary.SwapConfig\",\"name\":\"swapConfig\",\"type\":\"tuple\"}],\"name\":\"validate\",\"outputs\":[],\"stateMutability\":\"pure\",\"type\":\"function\"}],\"devdoc\":{\"author\":\"Ensuro\",\"custom:security-contact\":\"security@ensuro.co\",\"kind\":\"dev\",\"methods\":{\"exactInput(SwapLibrary.SwapConfig,address,address,uint256,uint256)\":{\"details\":\"Executes a swap of `amount` from the input token (`tokenIn`) to the output token (`tokenOut`),\",\"params\":{\"amount\":\"The exact amount of input token to be swapped.\",\"price\":\"Approximate amount of units of tokenIn required to acquire a unit of tokenOut.              It will be validated against the swap rate considering the maxSlippage.\",\"swapConfig\":\"Swap configuration including the swap protocol to use.\",\"tokenIn\":\"The address of the token to be swapped.\",\"tokenOut\":\"The address of the token to be received as a result of the swap.\"},\"returns\":{\"_0\":\"That exact `amount` went out and an tokenOut amount equal to amount/price +- slippage% came in.\"}},\"exactOutput(SwapLibrary.SwapConfig,address,address,uint256,uint256)\":{\"details\":\"Executes a swap, where the desired output amount of `tokenOut` is specified,\",\"params\":{\"amount\":\"The desired amount of output tokens (`tokenOut`) to be obtained from the swap.\",\"price\":\"Approximate amount of units of tokenIn required to acquire a unit of tokenOut.              It will be validated against the swap rate considering the maxSlippage.\",\"swapConfig\":\"Swap configuration including the protocol to use for the swap.\",\"tokenIn\":\"The address of the token to be used as input for the swap.\",\"tokenOut\":\"The address of the token to be received as a result of the swap.\"},\"returns\":{\"_0\":\"The actual amount of input tokens (`tokenIn`) spent to obtain the desired output amount (`amount`)   should be within the expected slippage range.\"}}},\"title\":\"Swap Library\",\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{\"exactInput(SwapLibrary.SwapConfig,address,address,uint256,uint256)\":{\"notice\":\"Should have at least `amount` of tokenIn in the contract to execute the transaction. Requirements: - tokenIn and tokenOut decimals <= 18 - SwapConfig must be valid and should be validated using the `validate()` method.\"},\"exactOutput(SwapLibrary.SwapConfig,address,address,uint256,uint256)\":{\"notice\":\"Should have sufficient `tokenIn` to fulfill the desired output amount. Requirements: - tokenIn and tokenOut decimals <= 18 - SwapConfig must be valid and should be validated using the `validate()` method.\"}},\"version\":1}},\"settings\":{\"compilationTarget\":{\"@ensuro/swaplibrary/contracts/SwapLibrary.sol\":\"SwapLibrary\"},\"evmVersion\":\"prague\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"enabled\":true,\"runs\":200},\"remappings\":[]},\"sources\":{\"@ensuro/swaplibrary/contracts/CurveRoutes.sol\":{\"keccak256\":\"0x631af8ec291043d7eef34b97a427a4f53eb46d852088f6620c46a36a7e851963\",\"license\":\"Apache-2.0\",\"urls\":[\"bzz-raw://fbaf0f64980572d977b87b83e8bfc9c79fd1d2dc49a21e77e2a11fb8dec2413a\",\"dweb:/ipfs/QmYTpv2BroRz8PpWXYRp5KaaCXRy3tkZ95DeXybP4j3ti4\"]},\"@ensuro/swaplibrary/contracts/SwapLibrary.sol\":{\"keccak256\":\"0x3b1db1690ce8fa74972e4b4a57de41f4a880c8566b279316113d7398ea711812\",\"license\":\"Apache-2.0\",\"urls\":[\"bzz-raw://2746b500f5916604c16589fdbabf94b4d97689dcb96095376ed4956f9de663a6\",\"dweb:/ipfs/QmepecwnwauXsLuQmmoFNbH5XbZYEHH4bjnshQRRUeyH4r\"]},\"@ensuro/swaplibrary/contracts/dependencies/ICurveRouter.sol\":{\"keccak256\":\"0xf8c39f61b7459cfe6ba74d88fee74efd6d3d05d5cd64dc9eb6d08fbe0361affd\",\"license\":\"UNLICENSED\",\"urls\":[\"bzz-raw://55f11ef7e1cc66fa2c6c2aec436ccf00a835acf4281bff4ee9b4d2cb8980c92f\",\"dweb:/ipfs/QmPfvjcbLbHwoFRFGkM5zvM25vrEvZxjwbxSUL5jm5n3pZ\"]},\"@openzeppelin/contracts/token/ERC20/IERC20.sol\":{\"keccak256\":\"0x74ed01eb66b923d0d0cfe3be84604ac04b76482a55f9dd655e1ef4d367f95bc2\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://5282825a626cfe924e504274b864a652b0023591fa66f06a067b25b51ba9b303\",\"dweb:/ipfs/QmeCfPykghhMc81VJTrHTC7sF6CRvaA1FXVq2pJhwYp1dV\"]},\"@openzeppelin/contracts/token/ERC20/extensions/IERC20Metadata.sol\":{\"keccak256\":\"0xd6fa4088198f04eef10c5bce8a2f4d60554b7ec4b987f684393c01bf79b94d9f\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://f95ee0bbd4dd3ac730d066ba3e785ded4565e890dbec2fa7d3b9fe3bad9d0d6e\",\"dweb:/ipfs/QmSLr6bHkPFWT7ntj34jmwfyskpwo97T9jZUrk5sz3sdtR\"]},\"@openzeppelin/contracts/utils/Panic.sol\":{\"keccak256\":\"0xf7fe324703a64fc51702311dc51562d5cb1497734f074e4f483bfb6717572d7a\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://c6a5ff4f9fd8649b7ee20800b7fa387d3465bd77cf20c2d1068cd5c98e1ed57a\",\"dweb:/ipfs/QmVSaVJf9FXFhdYEYeCEfjMVHrxDh5qL4CGkxdMWpQCrqG\"]},\"@openzeppelin/contracts/utils/math/Math.sol\":{\"keccak256\":\"0x09e3f1c72d4c5cbe8e2644ab7313f8f7177533ae2f4c24cdcbbeaf520a73734c\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://93208401215d539fa2d81626b207c1f611def7883d0e447b3b5969ebaa7b3c2c\",\"dweb:/ipfs/QmXPxDnQPx8LAweX5ZJqEcwkvs59kP4c64VVDG1Jjq1mef\"]},\"@openzeppelin/contracts/utils/math/SafeCast.sol\":{\"keccak256\":\"0x195533c86d0ef72bcc06456a4f66a9b941f38eb403739b00f21fd7c1abd1ae54\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://b1d578337048cad08c1c03041cca5978eff5428aa130c781b271ad9e5566e1f8\",\"dweb:/ipfs/QmPFKL2r9CBsMwmUqqdcFPfHZB2qcs9g1HDrPxzWSxomvy\"]},\"@uniswap/v3-core/contracts/interfaces/callback/IUniswapV3SwapCallback.sol\":{\"keccak256\":\"0x3f485fb1a44e8fbeadefb5da07d66edab3cfe809f0ac4074b1e54e3eb3c4cf69\",\"license\":\"GPL-2.0-or-later\",\"urls\":[\"bzz-raw://095ce0626b41318c772b3ebf19d548282607f6a8f3d6c41c13edfbd5370c8652\",\"dweb:/ipfs/QmVDZfJJ89UUCE1hMyzqpkZAtQ8jUsBgZNE5AMRG7RzRFS\"]},\"@uniswap/v3-periphery/contracts/interfaces/ISwapRouter.sol\":{\"keccak256\":\"0x9bfaf1feb32814623e627ab70f2409760b15d95f1f9b058e2b3399a8bb732975\",\"license\":\"GPL-2.0-or-later\",\"urls\":[\"bzz-raw://a8a2c3e55965b61bcd91993d8e1d5d34b8b8a63e0fdfce87a85f6af92526fd53\",\"dweb:/ipfs/QmQj2CSCSwqDSU4KMNWxGsN2336Cy64WgpV1X1EHXNZWxM\"]},\"solidity-bytes-utils/contracts/BytesLib.sol\":{\"keccak256\":\"0xf4b07e5d8f69407bb43c6db224adfcf6c73b512dd64e85008ac3c222910c3555\",\"license\":\"Unlicense\",\"urls\":[\"bzz-raw://db020721e59008f7159b65962cc24038c92ac1c2ee8b7cfaa28a1771ced663f5\",\"dweb:/ipfs/QmQ8rznRTYc3AoVCJno8tY6vQVKCbhDJ3husfytUUvMrSN\"]}},\"version\":1}","storageLayout":{"storage":[],"types":null}}},"@ensuro/swaplibrary/contracts/dependencies/ICurveRouter.sol":{"ICurveRouter":{"abi":[{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"sender","type":"address"},{"indexed":true,"internalType":"address","name":"receiver","type":"address"},{"indexed":false,"internalType":"address[11]","name":"route","type":"address[11]"},{"indexed":false,"internalType":"uint256[5][5]","name":"swap_params","type":"uint256[5][5]"},{"indexed":false,"internalType":"address[5]","name":"pools","type":"address[5]"},{"indexed":false,"internalType":"uint256","name":"in_amount","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"out_amount","type":"uint256"}],"name":"Exchange","type":"event"},{"inputs":[{"internalType":"address[11]","name":"_route","type":"address[11]"},{"internalType":"uint256[5][5]","name":"_swap_params","type":"uint256[5][5]"},{"internalType":"uint256","name":"_amount","type":"uint256"},{"internalType":"uint256","name":"_expected","type":"uint256"}],"name":"exchange","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"payable","type":"function"},{"inputs":[{"internalType":"address[11]","name":"_route","type":"address[11]"},{"internalType":"uint256[5][5]","name":"_swap_params","type":"uint256[5][5]"},{"internalType":"uint256","name":"_amount","type":"uint256"},{"internalType":"uint256","name":"_expected","type":"uint256"},{"internalType":"address[5]","name":"_pools","type":"address[5]"}],"name":"exchange","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"payable","type":"function"},{"inputs":[{"internalType":"address[11]","name":"_route","type":"address[11]"},{"internalType":"uint256[5][5]","name":"_swap_params","type":"uint256[5][5]"},{"internalType":"uint256","name":"_amount","type":"uint256"},{"internalType":"uint256","name":"_expected","type":"uint256"},{"internalType":"address[5]","name":"_pools","type":"address[5]"},{"internalType":"address","name":"_receiver","type":"address"}],"name":"exchange","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"payable","type":"function"},{"inputs":[{"internalType":"address[11]","name":"_route","type":"address[11]"},{"internalType":"uint256[5][5]","name":"_swap_params","type":"uint256[5][5]"},{"internalType":"uint256","name":"_out_amount","type":"uint256"},{"internalType":"address[5]","name":"_pools","type":"address[5]"},{"internalType":"address[5]","name":"_base_pools","type":"address[5]"},{"internalType":"address[5]","name":"_base_tokens","type":"address[5]"},{"internalType":"address[5]","name":"_second_base_pools","type":"address[5]"},{"internalType":"address[5]","name":"_second_base_tokens","type":"address[5]"}],"name":"get_dx","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address[11]","name":"_route","type":"address[11]"},{"internalType":"uint256[5][5]","name":"_swap_params","type":"uint256[5][5]"},{"internalType":"uint256","name":"_out_amount","type":"uint256"},{"internalType":"address[5]","name":"_pools","type":"address[5]"},{"internalType":"address[5]","name":"_base_pools","type":"address[5]"}],"name":"get_dx","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address[11]","name":"_route","type":"address[11]"},{"internalType":"uint256[5][5]","name":"_swap_params","type":"uint256[5][5]"},{"internalType":"uint256","name":"_out_amount","type":"uint256"},{"internalType":"address[5]","name":"_pools","type":"address[5]"},{"internalType":"address[5]","name":"_base_pools","type":"address[5]"},{"internalType":"address[5]","name":"_base_tokens","type":"address[5]"}],"name":"get_dx","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address[11]","name":"_route","type":"address[11]"},{"internalType":"uint256[5][5]","name":"_swap_params","type":"uint256[5][5]"},{"internalType":"uint256","name":"_out_amount","type":"uint256"},{"internalType":"address[5]","name":"_pools","type":"address[5]"}],"name":"get_dx","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address[11]","name":"_route","type":"address[11]"},{"internalType":"uint256[5][5]","name":"_swap_params","type":"uint256[5][5]"},{"internalType":"uint256","name":"_out_amount","type":"uint256"},{"internalType":"address[5]","name":"_pools","type":"address[5]"},{"internalType":"address[5]","name":"_base_pools","type":"address[5]"},{"internalType":"address[5]","name":"_base_tokens","type":"address[5]"},{"internalType":"address[5]","name":"_second_base_pools","type":"address[5]"}],"name":"get_dx","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address[11]","name":"_route","type":"address[11]"},{"internalType":"uint256[5][5]","name":"_swap_params","type":"uint256[5][5]"},{"internalType":"uint256","name":"_amount","type":"uint256"},{"internalType":"address[5]","name":"_pools","type":"address[5]"}],"name":"get_dy","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address[11]","name":"_route","type":"address[11]"},{"internalType":"uint256[5][5]","name":"_swap_params","type":"uint256[5][5]"},{"internalType":"uint256","name":"_amount","type":"uint256"}],"name":"get_dy","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"}],"evm":{"bytecode":{"functionDebugData":{},"generatedSources":[],"linkReferences":{},"object":"","opcodes":"","sourceMap":""},"deployedBytecode":{"functionDebugData":{},"generatedSources":[],"immutableReferences":{},"linkReferences":{},"object":"","opcodes":"","sourceMap":""},"methodIdentifiers":{"exchange(address[11],uint256[5][5],uint256,uint256)":"371dc447","exchange(address[11],uint256[5][5],uint256,uint256,address[5])":"5c9c18e2","exchange(address[11],uint256[5][5],uint256,uint256,address[5],address)":"c872a3c5","get_dx(address[11],uint256[5][5],uint256,address[5])":"c07b5353","get_dx(address[11],uint256[5][5],uint256,address[5],address[5])":"81fc0ca5","get_dx(address[11],uint256[5][5],uint256,address[5],address[5],address[5])":"90e7e205","get_dx(address[11],uint256[5][5],uint256,address[5],address[5],address[5],address[5])":"d10eb385","get_dx(address[11],uint256[5][5],uint256,address[5],address[5],address[5],address[5],address[5])":"6d654ccd","get_dy(address[11],uint256[5][5],uint256)":"81889a2c","get_dy(address[11],uint256[5][5],uint256,address[5])":"637653cb"}},"metadata":"{\"compiler\":{\"version\":\"0.8.30+commit.73712a01\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"sender\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"receiver\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"address[11]\",\"name\":\"route\",\"type\":\"address[11]\"},{\"indexed\":false,\"internalType\":\"uint256[5][5]\",\"name\":\"swap_params\",\"type\":\"uint256[5][5]\"},{\"indexed\":false,\"internalType\":\"address[5]\",\"name\":\"pools\",\"type\":\"address[5]\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"in_amount\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"out_amount\",\"type\":\"uint256\"}],\"name\":\"Exchange\",\"type\":\"event\"},{\"inputs\":[{\"internalType\":\"address[11]\",\"name\":\"_route\",\"type\":\"address[11]\"},{\"internalType\":\"uint256[5][5]\",\"name\":\"_swap_params\",\"type\":\"uint256[5][5]\"},{\"internalType\":\"uint256\",\"name\":\"_amount\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"_expected\",\"type\":\"uint256\"}],\"name\":\"exchange\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"payable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address[11]\",\"name\":\"_route\",\"type\":\"address[11]\"},{\"internalType\":\"uint256[5][5]\",\"name\":\"_swap_params\",\"type\":\"uint256[5][5]\"},{\"internalType\":\"uint256\",\"name\":\"_amount\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"_expected\",\"type\":\"uint256\"},{\"internalType\":\"address[5]\",\"name\":\"_pools\",\"type\":\"address[5]\"}],\"name\":\"exchange\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"payable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address[11]\",\"name\":\"_route\",\"type\":\"address[11]\"},{\"internalType\":\"uint256[5][5]\",\"name\":\"_swap_params\",\"type\":\"uint256[5][5]\"},{\"internalType\":\"uint256\",\"name\":\"_amount\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"_expected\",\"type\":\"uint256\"},{\"internalType\":\"address[5]\",\"name\":\"_pools\",\"type\":\"address[5]\"},{\"internalType\":\"address\",\"name\":\"_receiver\",\"type\":\"address\"}],\"name\":\"exchange\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"payable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address[11]\",\"name\":\"_route\",\"type\":\"address[11]\"},{\"internalType\":\"uint256[5][5]\",\"name\":\"_swap_params\",\"type\":\"uint256[5][5]\"},{\"internalType\":\"uint256\",\"name\":\"_out_amount\",\"type\":\"uint256\"},{\"internalType\":\"address[5]\",\"name\":\"_pools\",\"type\":\"address[5]\"},{\"internalType\":\"address[5]\",\"name\":\"_base_pools\",\"type\":\"address[5]\"},{\"internalType\":\"address[5]\",\"name\":\"_base_tokens\",\"type\":\"address[5]\"},{\"internalType\":\"address[5]\",\"name\":\"_second_base_pools\",\"type\":\"address[5]\"},{\"internalType\":\"address[5]\",\"name\":\"_second_base_tokens\",\"type\":\"address[5]\"}],\"name\":\"get_dx\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address[11]\",\"name\":\"_route\",\"type\":\"address[11]\"},{\"internalType\":\"uint256[5][5]\",\"name\":\"_swap_params\",\"type\":\"uint256[5][5]\"},{\"internalType\":\"uint256\",\"name\":\"_out_amount\",\"type\":\"uint256\"},{\"internalType\":\"address[5]\",\"name\":\"_pools\",\"type\":\"address[5]\"},{\"internalType\":\"address[5]\",\"name\":\"_base_pools\",\"type\":\"address[5]\"}],\"name\":\"get_dx\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address[11]\",\"name\":\"_route\",\"type\":\"address[11]\"},{\"internalType\":\"uint256[5][5]\",\"name\":\"_swap_params\",\"type\":\"uint256[5][5]\"},{\"internalType\":\"uint256\",\"name\":\"_out_amount\",\"type\":\"uint256\"},{\"internalType\":\"address[5]\",\"name\":\"_pools\",\"type\":\"address[5]\"},{\"internalType\":\"address[5]\",\"name\":\"_base_pools\",\"type\":\"address[5]\"},{\"internalType\":\"address[5]\",\"name\":\"_base_tokens\",\"type\":\"address[5]\"}],\"name\":\"get_dx\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address[11]\",\"name\":\"_route\",\"type\":\"address[11]\"},{\"internalType\":\"uint256[5][5]\",\"name\":\"_swap_params\",\"type\":\"uint256[5][5]\"},{\"internalType\":\"uint256\",\"name\":\"_out_amount\",\"type\":\"uint256\"},{\"internalType\":\"address[5]\",\"name\":\"_pools\",\"type\":\"address[5]\"}],\"name\":\"get_dx\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address[11]\",\"name\":\"_route\",\"type\":\"address[11]\"},{\"internalType\":\"uint256[5][5]\",\"name\":\"_swap_params\",\"type\":\"uint256[5][5]\"},{\"internalType\":\"uint256\",\"name\":\"_out_amount\",\"type\":\"uint256\"},{\"internalType\":\"address[5]\",\"name\":\"_pools\",\"type\":\"address[5]\"},{\"internalType\":\"address[5]\",\"name\":\"_base_pools\",\"type\":\"address[5]\"},{\"internalType\":\"address[5]\",\"name\":\"_base_tokens\",\"type\":\"address[5]\"},{\"internalType\":\"address[5]\",\"name\":\"_second_base_pools\",\"type\":\"address[5]\"}],\"name\":\"get_dx\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address[11]\",\"name\":\"_route\",\"type\":\"address[11]\"},{\"internalType\":\"uint256[5][5]\",\"name\":\"_swap_params\",\"type\":\"uint256[5][5]\"},{\"internalType\":\"uint256\",\"name\":\"_amount\",\"type\":\"uint256\"},{\"internalType\":\"address[5]\",\"name\":\"_pools\",\"type\":\"address[5]\"}],\"name\":\"get_dy\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address[11]\",\"name\":\"_route\",\"type\":\"address[11]\"},{\"internalType\":\"uint256[5][5]\",\"name\":\"_swap_params\",\"type\":\"uint256[5][5]\"},{\"internalType\":\"uint256\",\"name\":\"_amount\",\"type\":\"uint256\"}],\"name\":\"get_dy\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"}],\"devdoc\":{\"kind\":\"dev\",\"methods\":{},\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{},\"version\":1}},\"settings\":{\"compilationTarget\":{\"@ensuro/swaplibrary/contracts/dependencies/ICurveRouter.sol\":\"ICurveRouter\"},\"evmVersion\":\"prague\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"enabled\":true,\"runs\":200},\"remappings\":[]},\"sources\":{\"@ensuro/swaplibrary/contracts/dependencies/ICurveRouter.sol\":{\"keccak256\":\"0xf8c39f61b7459cfe6ba74d88fee74efd6d3d05d5cd64dc9eb6d08fbe0361affd\",\"license\":\"UNLICENSED\",\"urls\":[\"bzz-raw://55f11ef7e1cc66fa2c6c2aec436ccf00a835acf4281bff4ee9b4d2cb8980c92f\",\"dweb:/ipfs/QmPfvjcbLbHwoFRFGkM5zvM25vrEvZxjwbxSUL5jm5n3pZ\"]}},\"version\":1}","storageLayout":{"storage":[],"types":null}}},"@ensuro/swaplibrary/contracts/interfaces/ISwapRouterErrors.sol":{"ISwapRouterErrors":{"abi":[{"inputs":[],"name":"AmountCannotBeZero","type":"error"},{"inputs":[],"name":"DeadlineInThePast","type":"error"},{"inputs":[{"internalType":"uint256","name":"amountIn","type":"uint256"},{"internalType":"uint256","name":"amountInMaximum","type":"uint256"}],"name":"InputAmountExceedsSlippage","type":"error"},{"inputs":[],"name":"NotImplemented","type":"error"},{"inputs":[{"internalType":"uint256","name":"amountOut","type":"uint256"},{"internalType":"uint256","name":"amountOutMinimum","type":"uint256"}],"name":"OutputAmountLessThanSlippage","type":"error"},{"inputs":[],"name":"RecipientCannotBeZero","type":"error"},{"inputs":[],"name":"TokenCannotBeZero","type":"error"},{"inputs":[{"components":[{"internalType":"bytes","name":"path","type":"bytes"},{"internalType":"address","name":"recipient","type":"address"},{"internalType":"uint256","name":"deadline","type":"uint256"},{"internalType":"uint256","name":"amountIn","type":"uint256"},{"internalType":"uint256","name":"amountOutMinimum","type":"uint256"}],"internalType":"struct ISwapRouter.ExactInputParams","name":"params","type":"tuple"}],"name":"exactInput","outputs":[{"internalType":"uint256","name":"amountOut","type":"uint256"}],"stateMutability":"payable","type":"function"},{"inputs":[{"components":[{"internalType":"address","name":"tokenIn","type":"address"},{"internalType":"address","name":"tokenOut","type":"address"},{"internalType":"uint24","name":"fee","type":"uint24"},{"internalType":"address","name":"recipient","type":"address"},{"internalType":"uint256","name":"deadline","type":"uint256"},{"internalType":"uint256","name":"amountIn","type":"uint256"},{"internalType":"uint256","name":"amountOutMinimum","type":"uint256"},{"internalType":"uint160","name":"sqrtPriceLimitX96","type":"uint160"}],"internalType":"struct ISwapRouter.ExactInputSingleParams","name":"params","type":"tuple"}],"name":"exactInputSingle","outputs":[{"internalType":"uint256","name":"amountOut","type":"uint256"}],"stateMutability":"payable","type":"function"},{"inputs":[{"components":[{"internalType":"bytes","name":"path","type":"bytes"},{"internalType":"address","name":"recipient","type":"address"},{"internalType":"uint256","name":"deadline","type":"uint256"},{"internalType":"uint256","name":"amountOut","type":"uint256"},{"internalType":"uint256","name":"amountInMaximum","type":"uint256"}],"internalType":"struct ISwapRouter.ExactOutputParams","name":"params","type":"tuple"}],"name":"exactOutput","outputs":[{"internalType":"uint256","name":"amountIn","type":"uint256"}],"stateMutability":"payable","type":"function"},{"inputs":[{"components":[{"internalType":"address","name":"tokenIn","type":"address"},{"internalType":"address","name":"tokenOut","type":"address"},{"internalType":"uint24","name":"fee","type":"uint24"},{"internalType":"address","name":"recipient","type":"address"},{"internalType":"uint256","name":"deadline","type":"uint256"},{"internalType":"uint256","name":"amountOut","type":"uint256"},{"internalType":"uint256","name":"amountInMaximum","type":"uint256"},{"internalType":"uint160","name":"sqrtPriceLimitX96","type":"uint160"}],"internalType":"struct ISwapRouter.ExactOutputSingleParams","name":"params","type":"tuple"}],"name":"exactOutputSingle","outputs":[{"internalType":"uint256","name":"amountIn","type":"uint256"}],"stateMutability":"payable","type":"function"},{"inputs":[{"internalType":"int256","name":"amount0Delta","type":"int256"},{"internalType":"int256","name":"amount1Delta","type":"int256"},{"internalType":"bytes","name":"data","type":"bytes"}],"name":"uniswapV3SwapCallback","outputs":[],"stateMutability":"nonpayable","type":"function"}],"evm":{"bytecode":{"functionDebugData":{},"generatedSources":[],"linkReferences":{},"object":"","opcodes":"","sourceMap":""},"deployedBytecode":{"functionDebugData":{},"generatedSources":[],"immutableReferences":{},"linkReferences":{},"object":"","opcodes":"","sourceMap":""},"methodIdentifiers":{"exactInput((bytes,address,uint256,uint256,uint256))":"c04b8d59","exactInputSingle((address,address,uint24,address,uint256,uint256,uint256,uint160))":"414bf389","exactOutput((bytes,address,uint256,uint256,uint256))":"f28c0498","exactOutputSingle((address,address,uint24,address,uint256,uint256,uint256,uint160))":"db3e2198","uniswapV3SwapCallback(int256,int256,bytes)":"fa461e33"}},"metadata":"{\"compiler\":{\"version\":\"0.8.30+commit.73712a01\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"inputs\":[],\"name\":\"AmountCannotBeZero\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"DeadlineInThePast\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"amountIn\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"amountInMaximum\",\"type\":\"uint256\"}],\"name\":\"InputAmountExceedsSlippage\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"NotImplemented\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"amountOut\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"amountOutMinimum\",\"type\":\"uint256\"}],\"name\":\"OutputAmountLessThanSlippage\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"RecipientCannotBeZero\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"TokenCannotBeZero\",\"type\":\"error\"},{\"inputs\":[{\"components\":[{\"internalType\":\"bytes\",\"name\":\"path\",\"type\":\"bytes\"},{\"internalType\":\"address\",\"name\":\"recipient\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"deadline\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"amountIn\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"amountOutMinimum\",\"type\":\"uint256\"}],\"internalType\":\"struct ISwapRouter.ExactInputParams\",\"name\":\"params\",\"type\":\"tuple\"}],\"name\":\"exactInput\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"amountOut\",\"type\":\"uint256\"}],\"stateMutability\":\"payable\",\"type\":\"function\"},{\"inputs\":[{\"components\":[{\"internalType\":\"address\",\"name\":\"tokenIn\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"tokenOut\",\"type\":\"address\"},{\"internalType\":\"uint24\",\"name\":\"fee\",\"type\":\"uint24\"},{\"internalType\":\"address\",\"name\":\"recipient\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"deadline\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"amountIn\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"amountOutMinimum\",\"type\":\"uint256\"},{\"internalType\":\"uint160\",\"name\":\"sqrtPriceLimitX96\",\"type\":\"uint160\"}],\"internalType\":\"struct ISwapRouter.ExactInputSingleParams\",\"name\":\"params\",\"type\":\"tuple\"}],\"name\":\"exactInputSingle\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"amountOut\",\"type\":\"uint256\"}],\"stateMutability\":\"payable\",\"type\":\"function\"},{\"inputs\":[{\"components\":[{\"internalType\":\"bytes\",\"name\":\"path\",\"type\":\"bytes\"},{\"internalType\":\"address\",\"name\":\"recipient\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"deadline\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"amountOut\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"amountInMaximum\",\"type\":\"uint256\"}],\"internalType\":\"struct ISwapRouter.ExactOutputParams\",\"name\":\"params\",\"type\":\"tuple\"}],\"name\":\"exactOutput\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"amountIn\",\"type\":\"uint256\"}],\"stateMutability\":\"payable\",\"type\":\"function\"},{\"inputs\":[{\"components\":[{\"internalType\":\"address\",\"name\":\"tokenIn\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"tokenOut\",\"type\":\"address\"},{\"internalType\":\"uint24\",\"name\":\"fee\",\"type\":\"uint24\"},{\"internalType\":\"address\",\"name\":\"recipient\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"deadline\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"amountOut\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"amountInMaximum\",\"type\":\"uint256\"},{\"internalType\":\"uint160\",\"name\":\"sqrtPriceLimitX96\",\"type\":\"uint160\"}],\"internalType\":\"struct ISwapRouter.ExactOutputSingleParams\",\"name\":\"params\",\"type\":\"tuple\"}],\"name\":\"exactOutputSingle\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"amountIn\",\"type\":\"uint256\"}],\"stateMutability\":\"payable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"int256\",\"name\":\"amount0Delta\",\"type\":\"int256\"},{\"internalType\":\"int256\",\"name\":\"amount1Delta\",\"type\":\"int256\"},{\"internalType\":\"bytes\",\"name\":\"data\",\"type\":\"bytes\"}],\"name\":\"uniswapV3SwapCallback\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"}],\"devdoc\":{\"kind\":\"dev\",\"methods\":{\"exactInput((bytes,address,uint256,uint256,uint256))\":{\"params\":{\"params\":\"The parameters necessary for the multi-hop swap, encoded as `ExactInputParams` in calldata\"},\"returns\":{\"amountOut\":\"The amount of the received token\"}},\"exactInputSingle((address,address,uint24,address,uint256,uint256,uint256,uint160))\":{\"params\":{\"params\":\"The parameters necessary for the swap, encoded as `ExactInputSingleParams` in calldata\"},\"returns\":{\"amountOut\":\"The amount of the received token\"}},\"exactOutput((bytes,address,uint256,uint256,uint256))\":{\"params\":{\"params\":\"The parameters necessary for the multi-hop swap, encoded as `ExactOutputParams` in calldata\"},\"returns\":{\"amountIn\":\"The amount of the input token\"}},\"exactOutputSingle((address,address,uint24,address,uint256,uint256,uint256,uint160))\":{\"params\":{\"params\":\"The parameters necessary for the swap, encoded as `ExactOutputSingleParams` in calldata\"},\"returns\":{\"amountIn\":\"The amount of the input token\"}},\"uniswapV3SwapCallback(int256,int256,bytes)\":{\"details\":\"In the implementation you must pay the pool tokens owed for the swap. The caller of this method must be checked to be a UniswapV3Pool deployed by the canonical UniswapV3Factory. amount0Delta and amount1Delta can both be 0 if no tokens were swapped.\",\"params\":{\"amount0Delta\":\"The amount of token0 that was sent (negative) or must be received (positive) by the pool by the end of the swap. If positive, the callback must send that amount of token0 to the pool.\",\"amount1Delta\":\"The amount of token1 that was sent (negative) or must be received (positive) by the pool by the end of the swap. If positive, the callback must send that amount of token1 to the pool.\",\"data\":\"Any data passed through by the caller via the IUniswapV3PoolActions#swap call\"}}},\"title\":\"ISwapRouterErrors\",\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{\"exactInput((bytes,address,uint256,uint256,uint256))\":{\"notice\":\"Swaps `amountIn` of one token for as much as possible of another along the specified path\"},\"exactInputSingle((address,address,uint24,address,uint256,uint256,uint256,uint160))\":{\"notice\":\"Swaps `amountIn` of one token for as much as possible of another token\"},\"exactOutput((bytes,address,uint256,uint256,uint256))\":{\"notice\":\"Swaps as little as possible of one token for `amountOut` of another along the specified path (reversed)\"},\"exactOutputSingle((address,address,uint24,address,uint256,uint256,uint256,uint160))\":{\"notice\":\"Swaps as little as possible of one token for `amountOut` of another token\"},\"uniswapV3SwapCallback(int256,int256,bytes)\":{\"notice\":\"Called to `msg.sender` after executing a swap via IUniswapV3Pool#swap.\"}},\"version\":1}},\"settings\":{\"compilationTarget\":{\"@ensuro/swaplibrary/contracts/interfaces/ISwapRouterErrors.sol\":\"ISwapRouterErrors\"},\"evmVersion\":\"prague\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"enabled\":true,\"runs\":200},\"remappings\":[]},\"sources\":{\"@ensuro/swaplibrary/contracts/interfaces/ISwapRouterErrors.sol\":{\"keccak256\":\"0x896abfd41692c6fdce8bff95510374807df8661c25650bf5974abaa2f89f91f4\",\"license\":\"Apache-2.0\",\"urls\":[\"bzz-raw://1c221f36a8aad0c42df332f1984c2f5c1f251daf33858ff42b0d9aaa6b6eab3c\",\"dweb:/ipfs/Qmf8d7HwMfqqPxChyxn3X6ZikBmuxW8fGBCaADw5yKSzCL\"]},\"@uniswap/v3-core/contracts/interfaces/callback/IUniswapV3SwapCallback.sol\":{\"keccak256\":\"0x3f485fb1a44e8fbeadefb5da07d66edab3cfe809f0ac4074b1e54e3eb3c4cf69\",\"license\":\"GPL-2.0-or-later\",\"urls\":[\"bzz-raw://095ce0626b41318c772b3ebf19d548282607f6a8f3d6c41c13edfbd5370c8652\",\"dweb:/ipfs/QmVDZfJJ89UUCE1hMyzqpkZAtQ8jUsBgZNE5AMRG7RzRFS\"]},\"@uniswap/v3-periphery/contracts/interfaces/ISwapRouter.sol\":{\"keccak256\":\"0x9bfaf1feb32814623e627ab70f2409760b15d95f1f9b058e2b3399a8bb732975\",\"license\":\"GPL-2.0-or-later\",\"urls\":[\"bzz-raw://a8a2c3e55965b61bcd91993d8e1d5d34b8b8a63e0fdfce87a85f6af92526fd53\",\"dweb:/ipfs/QmQj2CSCSwqDSU4KMNWxGsN2336Cy64WgpV1X1EHXNZWxM\"]}},\"version\":1}","storageLayout":{"storage":[],"types":null}}},"@ensuro/swaplibrary/contracts/mocks/SwapRouterMock.sol":{"SwapRouterMock":{"abi":[{"inputs":[{"internalType":"address","name":"admin","type":"address"}],"stateMutability":"nonpayable","type":"constructor"},{"inputs":[],"name":"AdminCannotBeZero","type":"error"},{"inputs":[],"name":"AmountCannotBeZero","type":"error"},{"inputs":[],"name":"DeadlineInThePast","type":"error"},{"inputs":[{"internalType":"uint256","name":"amountIn","type":"uint256"},{"internalType":"uint256","name":"amountInMaximum","type":"uint256"}],"name":"InputAmountExceedsSlippage","type":"error"},{"inputs":[{"internalType":"uint256","name":"available","type":"uint256"},{"internalType":"uint256","name":"required","type":"uint256"}],"name":"NotEnoughBalance","type":"error"},{"inputs":[],"name":"NotImplemented","type":"error"},{"inputs":[{"internalType":"uint256","name":"amountOut","type":"uint256"},{"internalType":"uint256","name":"amountOutMinimum","type":"uint256"}],"name":"OutputAmountLessThanSlippage","type":"error"},{"inputs":[],"name":"RecipientCannotBeZero","type":"error"},{"inputs":[{"internalType":"address","name":"token","type":"address"}],"name":"SafeERC20FailedOperation","type":"error"},{"inputs":[],"name":"TokenCannotBeZero","type":"error"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"address","name":"tokenIn","type":"address"},{"indexed":false,"internalType":"address","name":"tokenOut","type":"address"},{"indexed":false,"internalType":"uint256","name":"price","type":"uint256"}],"name":"PriceUpdated","type":"event"},{"inputs":[{"components":[{"internalType":"bytes","name":"path","type":"bytes"},{"internalType":"address","name":"recipient","type":"address"},{"internalType":"uint256","name":"deadline","type":"uint256"},{"internalType":"uint256","name":"amountIn","type":"uint256"},{"internalType":"uint256","name":"amountOutMinimum","type":"uint256"}],"internalType":"struct ISwapRouter.ExactInputParams","name":"","type":"tuple"}],"name":"exactInput","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"payable","type":"function"},{"inputs":[{"components":[{"internalType":"address","name":"tokenIn","type":"address"},{"internalType":"address","name":"tokenOut","type":"address"},{"internalType":"uint24","name":"fee","type":"uint24"},{"internalType":"address","name":"recipient","type":"address"},{"internalType":"uint256","name":"deadline","type":"uint256"},{"internalType":"uint256","name":"amountIn","type":"uint256"},{"internalType":"uint256","name":"amountOutMinimum","type":"uint256"},{"internalType":"uint160","name":"sqrtPriceLimitX96","type":"uint160"}],"internalType":"struct ISwapRouter.ExactInputSingleParams","name":"params","type":"tuple"}],"name":"exactInputSingle","outputs":[{"internalType":"uint256","name":"amountOut","type":"uint256"}],"stateMutability":"payable","type":"function"},{"inputs":[{"components":[{"internalType":"bytes","name":"path","type":"bytes"},{"internalType":"address","name":"recipient","type":"address"},{"internalType":"uint256","name":"deadline","type":"uint256"},{"internalType":"uint256","name":"amountOut","type":"uint256"},{"internalType":"uint256","name":"amountInMaximum","type":"uint256"}],"internalType":"struct ISwapRouter.ExactOutputParams","name":"","type":"tuple"}],"name":"exactOutput","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"payable","type":"function"},{"inputs":[{"components":[{"internalType":"address","name":"tokenIn","type":"address"},{"internalType":"address","name":"tokenOut","type":"address"},{"internalType":"uint24","name":"fee","type":"uint24"},{"internalType":"address","name":"recipient","type":"address"},{"internalType":"uint256","name":"deadline","type":"uint256"},{"internalType":"uint256","name":"amountOut","type":"uint256"},{"internalType":"uint256","name":"amountInMaximum","type":"uint256"},{"internalType":"uint160","name":"sqrtPriceLimitX96","type":"uint160"}],"internalType":"struct ISwapRouter.ExactOutputSingleParams","name":"params","type":"tuple"}],"name":"exactOutputSingle","outputs":[{"internalType":"uint256","name":"amountIn","type":"uint256"}],"stateMutability":"payable","type":"function"},{"inputs":[{"internalType":"address","name":"tokenIn","type":"address"},{"internalType":"address","name":"tokenOut","type":"address"},{"internalType":"uint256","name":"price_","type":"uint256"}],"name":"setCurrentPrice","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"int256","name":"","type":"int256"},{"internalType":"int256","name":"","type":"int256"},{"internalType":"bytes","name":"","type":"bytes"}],"name":"uniswapV3SwapCallback","outputs":[],"stateMutability":"pure","type":"function"},{"inputs":[{"internalType":"address","name":"token","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"withdraw","outputs":[],"stateMutability":"nonpayable","type":"function"}],"evm":{"bytecode":{"functionDebugData":{"@_2255":{"entryPoint":null,"id":2255,"parameterSlots":1,"returnSlots":0},"abi_decode_tuple_t_address_fromMemory":{"entryPoint":86,"id":null,"parameterSlots":2,"returnSlots":1}},"generatedSources":[{"ast":{"nativeSrc":"0:306:87","nodeType":"YulBlock","src":"0:306:87","statements":[{"nativeSrc":"6:3:87","nodeType":"YulBlock","src":"6:3:87","statements":[]},{"body":{"nativeSrc":"95:209:87","nodeType":"YulBlock","src":"95:209:87","statements":[{"body":{"nativeSrc":"141:16:87","nodeType":"YulBlock","src":"141:16:87","statements":[{"expression":{"arguments":[{"kind":"number","nativeSrc":"150:1:87","nodeType":"YulLiteral","src":"150:1:87","type":"","value":"0"},{"kind":"number","nativeSrc":"153:1:87","nodeType":"YulLiteral","src":"153:1:87","type":"","value":"0"}],"functionName":{"name":"revert","nativeSrc":"143:6:87","nodeType":"YulIdentifier","src":"143:6:87"},"nativeSrc":"143:12:87","nodeType":"YulFunctionCall","src":"143:12:87"},"nativeSrc":"143:12:87","nodeType":"YulExpressionStatement","src":"143:12:87"}]},"condition":{"arguments":[{"arguments":[{"name":"dataEnd","nativeSrc":"116:7:87","nodeType":"YulIdentifier","src":"116:7:87"},{"name":"headStart","nativeSrc":"125:9:87","nodeType":"YulIdentifier","src":"125:9:87"}],"functionName":{"name":"sub","nativeSrc":"112:3:87","nodeType":"YulIdentifier","src":"112:3:87"},"nativeSrc":"112:23:87","nodeType":"YulFunctionCall","src":"112:23:87"},{"kind":"number","nativeSrc":"137:2:87","nodeType":"YulLiteral","src":"137:2:87","type":"","value":"32"}],"functionName":{"name":"slt","nativeSrc":"108:3:87","nodeType":"YulIdentifier","src":"108:3:87"},"nativeSrc":"108:32:87","nodeType":"YulFunctionCall","src":"108:32:87"},"nativeSrc":"105:52:87","nodeType":"YulIf","src":"105:52:87"},{"nativeSrc":"166:29:87","nodeType":"YulVariableDeclaration","src":"166:29:87","value":{"arguments":[{"name":"headStart","nativeSrc":"185:9:87","nodeType":"YulIdentifier","src":"185:9:87"}],"functionName":{"name":"mload","nativeSrc":"179:5:87","nodeType":"YulIdentifier","src":"179:5:87"},"nativeSrc":"179:16:87","nodeType":"YulFunctionCall","src":"179:16:87"},"variables":[{"name":"value","nativeSrc":"170:5:87","nodeType":"YulTypedName","src":"170:5:87","type":""}]},{"body":{"nativeSrc":"258:16:87","nodeType":"YulBlock","src":"258:16:87","statements":[{"expression":{"arguments":[{"kind":"number","nativeSrc":"267:1:87","nodeType":"YulLiteral","src":"267:1:87","type":"","value":"0"},{"kind":"number","nativeSrc":"270:1:87","nodeType":"YulLiteral","src":"270:1:87","type":"","value":"0"}],"functionName":{"name":"revert","nativeSrc":"260:6:87","nodeType":"YulIdentifier","src":"260:6:87"},"nativeSrc":"260:12:87","nodeType":"YulFunctionCall","src":"260:12:87"},"nativeSrc":"260:12:87","nodeType":"YulExpressionStatement","src":"260:12:87"}]},"condition":{"arguments":[{"arguments":[{"name":"value","nativeSrc":"217:5:87","nodeType":"YulIdentifier","src":"217:5:87"},{"arguments":[{"name":"value","nativeSrc":"228:5:87","nodeType":"YulIdentifier","src":"228:5:87"},{"arguments":[{"arguments":[{"kind":"number","nativeSrc":"243:3:87","nodeType":"YulLiteral","src":"243:3:87","type":"","value":"160"},{"kind":"number","nativeSrc":"248:1:87","nodeType":"YulLiteral","src":"248:1:87","type":"","value":"1"}],"functionName":{"name":"shl","nativeSrc":"239:3:87","nodeType":"YulIdentifier","src":"239:3:87"},"nativeSrc":"239:11:87","nodeType":"YulFunctionCall","src":"239:11:87"},{"kind":"number","nativeSrc":"252:1:87","nodeType":"YulLiteral","src":"252:1:87","type":"","value":"1"}],"functionName":{"name":"sub","nativeSrc":"235:3:87","nodeType":"YulIdentifier","src":"235:3:87"},"nativeSrc":"235:19:87","nodeType":"YulFunctionCall","src":"235:19:87"}],"functionName":{"name":"and","nativeSrc":"224:3:87","nodeType":"YulIdentifier","src":"224:3:87"},"nativeSrc":"224:31:87","nodeType":"YulFunctionCall","src":"224:31:87"}],"functionName":{"name":"eq","nativeSrc":"214:2:87","nodeType":"YulIdentifier","src":"214:2:87"},"nativeSrc":"214:42:87","nodeType":"YulFunctionCall","src":"214:42:87"}],"functionName":{"name":"iszero","nativeSrc":"207:6:87","nodeType":"YulIdentifier","src":"207:6:87"},"nativeSrc":"207:50:87","nodeType":"YulFunctionCall","src":"207:50:87"},"nativeSrc":"204:70:87","nodeType":"YulIf","src":"204:70:87"},{"nativeSrc":"283:15:87","nodeType":"YulAssignment","src":"283:15:87","value":{"name":"value","nativeSrc":"293:5:87","nodeType":"YulIdentifier","src":"293:5:87"},"variableNames":[{"name":"value0","nativeSrc":"283:6:87","nodeType":"YulIdentifier","src":"283:6:87"}]}]},"name":"abi_decode_tuple_t_address_fromMemory","nativeSrc":"14:290:87","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nativeSrc":"61:9:87","nodeType":"YulTypedName","src":"61:9:87","type":""},{"name":"dataEnd","nativeSrc":"72:7:87","nodeType":"YulTypedName","src":"72:7:87","type":""}],"returnVariables":[{"name":"value0","nativeSrc":"84:6:87","nodeType":"YulTypedName","src":"84:6:87","type":""}],"src":"14:290:87"}]},"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":87,"language":"Yul","name":"#utility.yul"}],"linkReferences":{},"object":"6080604052348015600e575f5ffd5b50604051610d1e380380610d1e833981016040819052602b916056565b6001600160a01b038116605157604051636b35b1b760e01b815260040160405180910390fd5b506081565b5f602082840312156065575f5ffd5b81516001600160a01b0381168114607a575f5ffd5b9392505050565b610c908061008e5f395ff3fe60806040526004361061006e575f3560e01c8063db3e21981161004c578063db3e2198146100cb578063f28c0498146100b8578063f3fef3a3146100de578063fa461e33146100fd575f5ffd5b8063414bf389146100725780634562e01514610097578063c04b8d59146100b8575b5f5ffd5b610085610080366004610944565b61011c565b60405190815260200160405180910390f35b3480156100a2575f5ffd5b506100b66100b136600461097a565b6102ef565b005b6100856100c63660046109c4565b6103a9565b6100856100d9366004610944565b6103c3565b3480156100e9575f5ffd5b506100b66100f83660046109fe565b61061b565b348015610108575f5ffd5b506100b6610117366004610a26565b61067a565b5f8061012e6080840160608501610aa2565b6001600160a01b0316036101545760405162e18e7f60e71b815260040160405180910390fd5b428260800135101561017c576040516001623859e760e21b0319815260040160405180910390fd5b5f8260a00135116101a05760405163d11b25af60e01b815260040160405180910390fd5b5f610234670de0b6b3a764000082806101bc6020880188610aa2565b6001600160a01b03166001600160a01b031681526020019081526020015f205f8660200160208101906101ef9190610aa2565b6001600160a01b031681526020808201929092526040015f20549061021f9061021a90880188610aa2565b610693565b61022d9060a0880135610acf565b9190610710565b905061024961021a6040850160208601610aa2565b6102539082610afa565b91508160c08401358082101561028a5760405163296ba6e160e01b8152600481019290925260248201526044015b60405180910390fd5b506102b59050333060a08601356102a46020880188610aa2565b6001600160a01b03169291906107c1565b6102e96102c86080850160608601610aa2565b836102d96040870160208801610aa2565b6001600160a01b031691906107fd565b50919050565b6001600160a01b0383166103165760405163165a825360e21b815260040160405180910390fd5b6001600160a01b03821661033d5760405163165a825360e21b815260040160405180910390fd5b6001600160a01b038381165f818152602081815260408083209487168084529482529182902085905581519283528201929092529081018290527fb71c154260e8508e211e2ace194becba2c6d7e727c3ed292fe4787458969cd109060600160405180910390a1505050565b5f60405163d623472560e01b815260040160405180910390fd5b5f806103d56080840160608501610aa2565b6001600160a01b0316036103fb5760405162e18e7f60e71b815260040160405180910390fd5b4282608001351015610423576040516001623859e760e21b0319815260040160405180910390fd5b5f8260a00135116104475760405163d11b25af60e01b815260040160405180910390fd5b5f6104586040840160208501610aa2565b6040516370a0823160e01b81523060048201526001600160a01b0391909116906370a0823190602401602060405180830381865afa15801561049c573d5f5f3e3d5ffd5b505050506040513d601f19601f820116820180604052508101906104c09190610b19565b90508060a0840135808210156104f257604051634787a10360e11b815260048101929092526024820152604401610281565b505f905061058881806105086020880188610aa2565b6001600160a01b03166001600160a01b031681526020019081526020015f205f86602001602081019061053b9190610aa2565b6001600160a01b03166001600160a01b031681526020019081526020015f2054670de0b6b3a764000061057a87602001602081019061021a9190610aa2565b61022d9060a0890135610acf565b905061059a61021a6020860186610aa2565b6105a49082610afa565b92508260c0850135808211156105d657604051639a06025d60e01b815260048101929092526024820152604401610281565b506105ec90503330856102a46020890189610aa2565b6106146105ff6080860160608701610aa2565b60a08601356102d96040880160208901610aa2565b5050919050565b6001600160a01b0382166106425760405163165a825360e21b815260040160405180910390fd5b5f81116106625760405163165a825360e21b815260040160405180910390fd5b6106766001600160a01b03831633836107fd565b5050565b60405163d623472560e01b815260040160405180910390fd5b5f816001600160a01b031663313ce5676040518163ffffffff1660e01b8152600401602060405180830381865afa1580156106d0573d5f5f3e3d5ffd5b505050506040513d601f19601f820116820180604052508101906106f49190610b30565b6106ff906012610b50565b61070a90600a610c4c565b92915050565b5f5f5f61071d8686610837565b91509150815f036107415783818161073757610737610ae6565b04925050506107ba565b818411610758576107586003851502601118610853565b5f848688095f868103871696879004966002600389028118808a02820302808a02820302808a02820302808a02820302808a02820302808a02909103029181900381900460010185841190960395909502919093039390930492909217029150505b9392505050565b6107cf848484846001610864565b6107f757604051635274afe760e01b81526001600160a01b0385166004820152602401610281565b50505050565b61080a83838360016108d1565b61083257604051635274afe760e01b81526001600160a01b0384166004820152602401610281565b505050565b5f805f1983850993909202808410938190039390930393915050565b634e487b715f52806020526024601cfd5b6040516323b872dd60e01b5f8181526001600160a01b038781166004528616602452604485905291602083606481808c5af1925060015f511483166108c05783831516156108b4573d5f823e3d81fd5b5f883b113d1516831692505b604052505f60605295945050505050565b60405163a9059cbb60e01b5f8181526001600160a01b038616600452602485905291602083604481808b5af1925060015f5114831661092757838315161561091b573d5f823e3d81fd5b5f873b113d1516831692505b60405250949350505050565b5f61010082840312156102e9575f5ffd5b5f6101008284031215610955575f5ffd5b6107ba8383610933565b80356001600160a01b0381168114610975575f5ffd5b919050565b5f5f5f6060848603121561098c575f5ffd5b6109958461095f565b92506109a36020850161095f565b929592945050506040919091013590565b5f60a082840312156102e9575f5ffd5b5f602082840312156109d4575f5ffd5b813567ffffffffffffffff8111156109ea575f5ffd5b6109f6848285016109b4565b949350505050565b5f5f60408385031215610a0f575f5ffd5b610a188361095f565b946020939093013593505050565b5f5f5f5f60608587031215610a39575f5ffd5b8435935060208501359250604085013567ffffffffffffffff811115610a5d575f5ffd5b8501601f81018713610a6d575f5ffd5b803567ffffffffffffffff811115610a83575f5ffd5b876020828401011115610a94575f5ffd5b949793965060200194505050565b5f60208284031215610ab2575f5ffd5b6107ba8261095f565b634e487b7160e01b5f52601160045260245ffd5b808202811582820484141761070a5761070a610abb565b634e487b7160e01b5f52601260045260245ffd5b5f82610b1457634e487b7160e01b5f52601260045260245ffd5b500490565b5f60208284031215610b29575f5ffd5b5051919050565b5f60208284031215610b40575f5ffd5b815160ff811681146107ba575f5ffd5b60ff828116828216039081111561070a5761070a610abb565b6001815b6001841115610ba457808504811115610b8857610b88610abb565b6001841615610b9657908102905b60019390931c928002610b6d565b935093915050565b5f82610bba5750600161070a565b81610bc657505f61070a565b8160018114610bdc5760028114610be657610c02565b600191505061070a565b60ff841115610bf757610bf7610abb565b50506001821b61070a565b5060208310610133831016604e8410600b8410161715610c25575081810a61070a565b610c315f198484610b69565b805f1904821115610c4457610c44610abb565b029392505050565b5f6107ba60ff841683610bac56fea264697066735822122068f7199ba62683e64df5eba3dc3a99514c339440f8b5daa255cd04eb362aaef764736f6c634300081e0033","opcodes":"PUSH1 0x80 PUSH1 0x40 MSTORE CALLVALUE DUP1 ISZERO PUSH1 0xE JUMPI PUSH0 PUSH0 REVERT JUMPDEST POP PUSH1 0x40 MLOAD PUSH2 0xD1E CODESIZE SUB DUP1 PUSH2 0xD1E DUP4 CODECOPY DUP2 ADD PUSH1 0x40 DUP2 SWAP1 MSTORE PUSH1 0x2B SWAP2 PUSH1 0x56 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 AND PUSH1 0x51 JUMPI PUSH1 0x40 MLOAD PUSH4 0x6B35B1B7 PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST POP PUSH1 0x81 JUMP JUMPDEST PUSH0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH1 0x65 JUMPI PUSH0 PUSH0 REVERT JUMPDEST DUP2 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 AND DUP2 EQ PUSH1 0x7A JUMPI PUSH0 PUSH0 REVERT JUMPDEST SWAP4 SWAP3 POP POP POP JUMP JUMPDEST PUSH2 0xC90 DUP1 PUSH2 0x8E PUSH0 CODECOPY PUSH0 RETURN INVALID PUSH1 0x80 PUSH1 0x40 MSTORE PUSH1 0x4 CALLDATASIZE LT PUSH2 0x6E JUMPI PUSH0 CALLDATALOAD PUSH1 0xE0 SHR DUP1 PUSH4 0xDB3E2198 GT PUSH2 0x4C JUMPI DUP1 PUSH4 0xDB3E2198 EQ PUSH2 0xCB JUMPI DUP1 PUSH4 0xF28C0498 EQ PUSH2 0xB8 JUMPI DUP1 PUSH4 0xF3FEF3A3 EQ PUSH2 0xDE JUMPI DUP1 PUSH4 0xFA461E33 EQ PUSH2 0xFD JUMPI PUSH0 PUSH0 REVERT JUMPDEST DUP1 PUSH4 0x414BF389 EQ PUSH2 0x72 JUMPI DUP1 PUSH4 0x4562E015 EQ PUSH2 0x97 JUMPI DUP1 PUSH4 0xC04B8D59 EQ PUSH2 0xB8 JUMPI JUMPDEST PUSH0 PUSH0 REVERT JUMPDEST PUSH2 0x85 PUSH2 0x80 CALLDATASIZE PUSH1 0x4 PUSH2 0x944 JUMP JUMPDEST PUSH2 0x11C JUMP JUMPDEST PUSH1 0x40 MLOAD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0xA2 JUMPI PUSH0 PUSH0 REVERT JUMPDEST POP PUSH2 0xB6 PUSH2 0xB1 CALLDATASIZE PUSH1 0x4 PUSH2 0x97A JUMP JUMPDEST PUSH2 0x2EF JUMP JUMPDEST STOP JUMPDEST PUSH2 0x85 PUSH2 0xC6 CALLDATASIZE PUSH1 0x4 PUSH2 0x9C4 JUMP JUMPDEST PUSH2 0x3A9 JUMP JUMPDEST PUSH2 0x85 PUSH2 0xD9 CALLDATASIZE PUSH1 0x4 PUSH2 0x944 JUMP JUMPDEST PUSH2 0x3C3 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0xE9 JUMPI PUSH0 PUSH0 REVERT JUMPDEST POP PUSH2 0xB6 PUSH2 0xF8 CALLDATASIZE PUSH1 0x4 PUSH2 0x9FE JUMP JUMPDEST PUSH2 0x61B JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x108 JUMPI PUSH0 PUSH0 REVERT JUMPDEST POP PUSH2 0xB6 PUSH2 0x117 CALLDATASIZE PUSH1 0x4 PUSH2 0xA26 JUMP JUMPDEST PUSH2 0x67A JUMP JUMPDEST PUSH0 DUP1 PUSH2 0x12E PUSH1 0x80 DUP5 ADD PUSH1 0x60 DUP6 ADD PUSH2 0xAA2 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND SUB PUSH2 0x154 JUMPI PUSH1 0x40 MLOAD PUSH3 0xE18E7F PUSH1 0xE7 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST TIMESTAMP DUP3 PUSH1 0x80 ADD CALLDATALOAD LT ISZERO PUSH2 0x17C JUMPI PUSH1 0x40 MLOAD PUSH1 0x1 PUSH3 0x3859E7 PUSH1 0xE2 SHL SUB NOT DUP2 MSTORE PUSH1 0x4 ADD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH0 DUP3 PUSH1 0xA0 ADD CALLDATALOAD GT PUSH2 0x1A0 JUMPI PUSH1 0x40 MLOAD PUSH4 0xD11B25AF PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH0 PUSH2 0x234 PUSH8 0xDE0B6B3A7640000 DUP3 DUP1 PUSH2 0x1BC PUSH1 0x20 DUP9 ADD DUP9 PUSH2 0xAA2 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH0 KECCAK256 PUSH0 DUP7 PUSH1 0x20 ADD PUSH1 0x20 DUP2 ADD SWAP1 PUSH2 0x1EF SWAP2 SWAP1 PUSH2 0xAA2 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP2 MSTORE PUSH1 0x20 DUP1 DUP3 ADD SWAP3 SWAP1 SWAP3 MSTORE PUSH1 0x40 ADD PUSH0 KECCAK256 SLOAD SWAP1 PUSH2 0x21F SWAP1 PUSH2 0x21A SWAP1 DUP9 ADD DUP9 PUSH2 0xAA2 JUMP JUMPDEST PUSH2 0x693 JUMP JUMPDEST PUSH2 0x22D SWAP1 PUSH1 0xA0 DUP9 ADD CALLDATALOAD PUSH2 0xACF JUMP JUMPDEST SWAP2 SWAP1 PUSH2 0x710 JUMP JUMPDEST SWAP1 POP PUSH2 0x249 PUSH2 0x21A PUSH1 0x40 DUP6 ADD PUSH1 0x20 DUP7 ADD PUSH2 0xAA2 JUMP JUMPDEST PUSH2 0x253 SWAP1 DUP3 PUSH2 0xAFA JUMP JUMPDEST SWAP2 POP DUP2 PUSH1 0xC0 DUP5 ADD CALLDATALOAD DUP1 DUP3 LT ISZERO PUSH2 0x28A JUMPI PUSH1 0x40 MLOAD PUSH4 0x296BA6E1 PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 DUP2 ADD SWAP3 SWAP1 SWAP3 MSTORE PUSH1 0x24 DUP3 ADD MSTORE PUSH1 0x44 ADD JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST POP PUSH2 0x2B5 SWAP1 POP CALLER ADDRESS PUSH1 0xA0 DUP7 ADD CALLDATALOAD PUSH2 0x2A4 PUSH1 0x20 DUP9 ADD DUP9 PUSH2 0xAA2 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND SWAP3 SWAP2 SWAP1 PUSH2 0x7C1 JUMP JUMPDEST PUSH2 0x2E9 PUSH2 0x2C8 PUSH1 0x80 DUP6 ADD PUSH1 0x60 DUP7 ADD PUSH2 0xAA2 JUMP JUMPDEST DUP4 PUSH2 0x2D9 PUSH1 0x40 DUP8 ADD PUSH1 0x20 DUP9 ADD PUSH2 0xAA2 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND SWAP2 SWAP1 PUSH2 0x7FD JUMP JUMPDEST POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP4 AND PUSH2 0x316 JUMPI PUSH1 0x40 MLOAD PUSH4 0x165A8253 PUSH1 0xE2 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP3 AND PUSH2 0x33D JUMPI PUSH1 0x40 MLOAD PUSH4 0x165A8253 PUSH1 0xE2 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP4 DUP2 AND PUSH0 DUP2 DUP2 MSTORE PUSH1 0x20 DUP2 DUP2 MSTORE PUSH1 0x40 DUP1 DUP4 KECCAK256 SWAP5 DUP8 AND DUP1 DUP5 MSTORE SWAP5 DUP3 MSTORE SWAP2 DUP3 SWAP1 KECCAK256 DUP6 SWAP1 SSTORE DUP2 MLOAD SWAP3 DUP4 MSTORE DUP3 ADD SWAP3 SWAP1 SWAP3 MSTORE SWAP1 DUP2 ADD DUP3 SWAP1 MSTORE PUSH32 0xB71C154260E8508E211E2ACE194BECBA2C6D7E727C3ED292FE4787458969CD10 SWAP1 PUSH1 0x60 ADD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 LOG1 POP POP POP JUMP JUMPDEST PUSH0 PUSH1 0x40 MLOAD PUSH4 0xD6234725 PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH0 DUP1 PUSH2 0x3D5 PUSH1 0x80 DUP5 ADD PUSH1 0x60 DUP6 ADD PUSH2 0xAA2 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND SUB PUSH2 0x3FB JUMPI PUSH1 0x40 MLOAD PUSH3 0xE18E7F PUSH1 0xE7 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST TIMESTAMP DUP3 PUSH1 0x80 ADD CALLDATALOAD LT ISZERO PUSH2 0x423 JUMPI PUSH1 0x40 MLOAD PUSH1 0x1 PUSH3 0x3859E7 PUSH1 0xE2 SHL SUB NOT DUP2 MSTORE PUSH1 0x4 ADD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH0 DUP3 PUSH1 0xA0 ADD CALLDATALOAD GT PUSH2 0x447 JUMPI PUSH1 0x40 MLOAD PUSH4 0xD11B25AF PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH0 PUSH2 0x458 PUSH1 0x40 DUP5 ADD PUSH1 0x20 DUP6 ADD PUSH2 0xAA2 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH4 0x70A08231 PUSH1 0xE0 SHL DUP2 MSTORE ADDRESS PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP2 SWAP1 SWAP2 AND SWAP1 PUSH4 0x70A08231 SWAP1 PUSH1 0x24 ADD PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x49C JUMPI RETURNDATASIZE PUSH0 PUSH0 RETURNDATACOPY RETURNDATASIZE PUSH0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP3 ADD DUP1 PUSH1 0x40 MSTORE POP DUP2 ADD SWAP1 PUSH2 0x4C0 SWAP2 SWAP1 PUSH2 0xB19 JUMP JUMPDEST SWAP1 POP DUP1 PUSH1 0xA0 DUP5 ADD CALLDATALOAD DUP1 DUP3 LT ISZERO PUSH2 0x4F2 JUMPI PUSH1 0x40 MLOAD PUSH4 0x4787A103 PUSH1 0xE1 SHL DUP2 MSTORE PUSH1 0x4 DUP2 ADD SWAP3 SWAP1 SWAP3 MSTORE PUSH1 0x24 DUP3 ADD MSTORE PUSH1 0x44 ADD PUSH2 0x281 JUMP JUMPDEST POP PUSH0 SWAP1 POP PUSH2 0x588 DUP2 DUP1 PUSH2 0x508 PUSH1 0x20 DUP9 ADD DUP9 PUSH2 0xAA2 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH0 KECCAK256 PUSH0 DUP7 PUSH1 0x20 ADD PUSH1 0x20 DUP2 ADD SWAP1 PUSH2 0x53B SWAP2 SWAP1 PUSH2 0xAA2 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH0 KECCAK256 SLOAD PUSH8 0xDE0B6B3A7640000 PUSH2 0x57A DUP8 PUSH1 0x20 ADD PUSH1 0x20 DUP2 ADD SWAP1 PUSH2 0x21A SWAP2 SWAP1 PUSH2 0xAA2 JUMP JUMPDEST PUSH2 0x22D SWAP1 PUSH1 0xA0 DUP10 ADD CALLDATALOAD PUSH2 0xACF JUMP JUMPDEST SWAP1 POP PUSH2 0x59A PUSH2 0x21A PUSH1 0x20 DUP7 ADD DUP7 PUSH2 0xAA2 JUMP JUMPDEST PUSH2 0x5A4 SWAP1 DUP3 PUSH2 0xAFA JUMP JUMPDEST SWAP3 POP DUP3 PUSH1 0xC0 DUP6 ADD CALLDATALOAD DUP1 DUP3 GT ISZERO PUSH2 0x5D6 JUMPI PUSH1 0x40 MLOAD PUSH4 0x9A06025D PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 DUP2 ADD SWAP3 SWAP1 SWAP3 MSTORE PUSH1 0x24 DUP3 ADD MSTORE PUSH1 0x44 ADD PUSH2 0x281 JUMP JUMPDEST POP PUSH2 0x5EC SWAP1 POP CALLER ADDRESS DUP6 PUSH2 0x2A4 PUSH1 0x20 DUP10 ADD DUP10 PUSH2 0xAA2 JUMP JUMPDEST PUSH2 0x614 PUSH2 0x5FF PUSH1 0x80 DUP7 ADD PUSH1 0x60 DUP8 ADD PUSH2 0xAA2 JUMP JUMPDEST PUSH1 0xA0 DUP7 ADD CALLDATALOAD PUSH2 0x2D9 PUSH1 0x40 DUP9 ADD PUSH1 0x20 DUP10 ADD PUSH2 0xAA2 JUMP JUMPDEST POP POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP3 AND PUSH2 0x642 JUMPI PUSH1 0x40 MLOAD PUSH4 0x165A8253 PUSH1 0xE2 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH0 DUP2 GT PUSH2 0x662 JUMPI PUSH1 0x40 MLOAD PUSH4 0x165A8253 PUSH1 0xE2 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH2 0x676 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP4 AND CALLER DUP4 PUSH2 0x7FD JUMP JUMPDEST POP POP JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH4 0xD6234725 PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH0 DUP2 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 GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x6D0 JUMPI RETURNDATASIZE PUSH0 PUSH0 RETURNDATACOPY RETURNDATASIZE PUSH0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP3 ADD DUP1 PUSH1 0x40 MSTORE POP DUP2 ADD SWAP1 PUSH2 0x6F4 SWAP2 SWAP1 PUSH2 0xB30 JUMP JUMPDEST PUSH2 0x6FF SWAP1 PUSH1 0x12 PUSH2 0xB50 JUMP JUMPDEST PUSH2 0x70A SWAP1 PUSH1 0xA PUSH2 0xC4C JUMP JUMPDEST SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH0 PUSH0 PUSH0 PUSH2 0x71D DUP7 DUP7 PUSH2 0x837 JUMP JUMPDEST SWAP2 POP SWAP2 POP DUP2 PUSH0 SUB PUSH2 0x741 JUMPI DUP4 DUP2 DUP2 PUSH2 0x737 JUMPI PUSH2 0x737 PUSH2 0xAE6 JUMP JUMPDEST DIV SWAP3 POP POP POP PUSH2 0x7BA JUMP JUMPDEST DUP2 DUP5 GT PUSH2 0x758 JUMPI PUSH2 0x758 PUSH1 0x3 DUP6 ISZERO MUL PUSH1 0x11 XOR PUSH2 0x853 JUMP JUMPDEST PUSH0 DUP5 DUP7 DUP9 MULMOD PUSH0 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 DUP6 DUP5 GT SWAP1 SWAP7 SUB SWAP6 SWAP1 SWAP6 MUL SWAP2 SWAP1 SWAP4 SUB SWAP4 SWAP1 SWAP4 DIV SWAP3 SWAP1 SWAP3 OR MUL SWAP2 POP POP JUMPDEST SWAP4 SWAP3 POP POP POP JUMP JUMPDEST PUSH2 0x7CF DUP5 DUP5 DUP5 DUP5 PUSH1 0x1 PUSH2 0x864 JUMP JUMPDEST PUSH2 0x7F7 JUMPI PUSH1 0x40 MLOAD PUSH4 0x5274AFE7 PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP6 AND PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x24 ADD PUSH2 0x281 JUMP JUMPDEST POP POP POP POP JUMP JUMPDEST PUSH2 0x80A DUP4 DUP4 DUP4 PUSH1 0x1 PUSH2 0x8D1 JUMP JUMPDEST PUSH2 0x832 JUMPI PUSH1 0x40 MLOAD PUSH4 0x5274AFE7 PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP5 AND PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x24 ADD PUSH2 0x281 JUMP JUMPDEST POP POP POP JUMP JUMPDEST PUSH0 DUP1 PUSH0 NOT DUP4 DUP6 MULMOD SWAP4 SWAP1 SWAP3 MUL DUP1 DUP5 LT SWAP4 DUP2 SWAP1 SUB SWAP4 SWAP1 SWAP4 SUB SWAP4 SWAP2 POP POP JUMP JUMPDEST PUSH4 0x4E487B71 PUSH0 MSTORE DUP1 PUSH1 0x20 MSTORE PUSH1 0x24 PUSH1 0x1C REVERT JUMPDEST PUSH1 0x40 MLOAD PUSH4 0x23B872DD PUSH1 0xE0 SHL PUSH0 DUP2 DUP2 MSTORE PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP8 DUP2 AND PUSH1 0x4 MSTORE DUP7 AND PUSH1 0x24 MSTORE PUSH1 0x44 DUP6 SWAP1 MSTORE SWAP2 PUSH1 0x20 DUP4 PUSH1 0x64 DUP2 DUP1 DUP13 GAS CALL SWAP3 POP PUSH1 0x1 PUSH0 MLOAD EQ DUP4 AND PUSH2 0x8C0 JUMPI DUP4 DUP4 ISZERO AND ISZERO PUSH2 0x8B4 JUMPI RETURNDATASIZE PUSH0 DUP3 RETURNDATACOPY RETURNDATASIZE DUP2 REVERT JUMPDEST PUSH0 DUP9 EXTCODESIZE GT RETURNDATASIZE ISZERO AND DUP4 AND SWAP3 POP JUMPDEST PUSH1 0x40 MSTORE POP PUSH0 PUSH1 0x60 MSTORE SWAP6 SWAP5 POP POP POP POP POP JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH4 0xA9059CBB PUSH1 0xE0 SHL PUSH0 DUP2 DUP2 MSTORE PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP7 AND PUSH1 0x4 MSTORE PUSH1 0x24 DUP6 SWAP1 MSTORE SWAP2 PUSH1 0x20 DUP4 PUSH1 0x44 DUP2 DUP1 DUP12 GAS CALL SWAP3 POP PUSH1 0x1 PUSH0 MLOAD EQ DUP4 AND PUSH2 0x927 JUMPI DUP4 DUP4 ISZERO AND ISZERO PUSH2 0x91B JUMPI RETURNDATASIZE PUSH0 DUP3 RETURNDATACOPY RETURNDATASIZE DUP2 REVERT JUMPDEST PUSH0 DUP8 EXTCODESIZE GT RETURNDATASIZE ISZERO AND DUP4 AND SWAP3 POP JUMPDEST PUSH1 0x40 MSTORE POP SWAP5 SWAP4 POP POP POP POP JUMP JUMPDEST PUSH0 PUSH2 0x100 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x2E9 JUMPI PUSH0 PUSH0 REVERT JUMPDEST PUSH0 PUSH2 0x100 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x955 JUMPI PUSH0 PUSH0 REVERT JUMPDEST PUSH2 0x7BA DUP4 DUP4 PUSH2 0x933 JUMP JUMPDEST DUP1 CALLDATALOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 AND DUP2 EQ PUSH2 0x975 JUMPI PUSH0 PUSH0 REVERT JUMPDEST SWAP2 SWAP1 POP JUMP JUMPDEST PUSH0 PUSH0 PUSH0 PUSH1 0x60 DUP5 DUP7 SUB SLT ISZERO PUSH2 0x98C JUMPI PUSH0 PUSH0 REVERT JUMPDEST PUSH2 0x995 DUP5 PUSH2 0x95F JUMP JUMPDEST SWAP3 POP PUSH2 0x9A3 PUSH1 0x20 DUP6 ADD PUSH2 0x95F JUMP JUMPDEST SWAP3 SWAP6 SWAP3 SWAP5 POP POP POP PUSH1 0x40 SWAP2 SWAP1 SWAP2 ADD CALLDATALOAD SWAP1 JUMP JUMPDEST PUSH0 PUSH1 0xA0 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x2E9 JUMPI PUSH0 PUSH0 REVERT JUMPDEST PUSH0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x9D4 JUMPI PUSH0 PUSH0 REVERT JUMPDEST DUP2 CALLDATALOAD PUSH8 0xFFFFFFFFFFFFFFFF DUP2 GT ISZERO PUSH2 0x9EA JUMPI PUSH0 PUSH0 REVERT JUMPDEST PUSH2 0x9F6 DUP5 DUP3 DUP6 ADD PUSH2 0x9B4 JUMP JUMPDEST SWAP5 SWAP4 POP POP POP POP JUMP JUMPDEST PUSH0 PUSH0 PUSH1 0x40 DUP4 DUP6 SUB SLT ISZERO PUSH2 0xA0F JUMPI PUSH0 PUSH0 REVERT JUMPDEST PUSH2 0xA18 DUP4 PUSH2 0x95F JUMP JUMPDEST SWAP5 PUSH1 0x20 SWAP4 SWAP1 SWAP4 ADD CALLDATALOAD SWAP4 POP POP POP JUMP JUMPDEST PUSH0 PUSH0 PUSH0 PUSH0 PUSH1 0x60 DUP6 DUP8 SUB SLT ISZERO PUSH2 0xA39 JUMPI PUSH0 PUSH0 REVERT JUMPDEST DUP5 CALLDATALOAD SWAP4 POP PUSH1 0x20 DUP6 ADD CALLDATALOAD SWAP3 POP PUSH1 0x40 DUP6 ADD CALLDATALOAD PUSH8 0xFFFFFFFFFFFFFFFF DUP2 GT ISZERO PUSH2 0xA5D JUMPI PUSH0 PUSH0 REVERT JUMPDEST DUP6 ADD PUSH1 0x1F DUP2 ADD DUP8 SGT PUSH2 0xA6D JUMPI PUSH0 PUSH0 REVERT JUMPDEST DUP1 CALLDATALOAD PUSH8 0xFFFFFFFFFFFFFFFF DUP2 GT ISZERO PUSH2 0xA83 JUMPI PUSH0 PUSH0 REVERT JUMPDEST DUP8 PUSH1 0x20 DUP3 DUP5 ADD ADD GT ISZERO PUSH2 0xA94 JUMPI PUSH0 PUSH0 REVERT JUMPDEST SWAP5 SWAP8 SWAP4 SWAP7 POP PUSH1 0x20 ADD SWAP5 POP POP POP JUMP JUMPDEST PUSH0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0xAB2 JUMPI PUSH0 PUSH0 REVERT JUMPDEST PUSH2 0x7BA DUP3 PUSH2 0x95F JUMP JUMPDEST PUSH4 0x4E487B71 PUSH1 0xE0 SHL PUSH0 MSTORE PUSH1 0x11 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH0 REVERT JUMPDEST DUP1 DUP3 MUL DUP2 ISZERO DUP3 DUP3 DIV DUP5 EQ OR PUSH2 0x70A JUMPI PUSH2 0x70A PUSH2 0xABB JUMP JUMPDEST PUSH4 0x4E487B71 PUSH1 0xE0 SHL PUSH0 MSTORE PUSH1 0x12 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH0 REVERT JUMPDEST PUSH0 DUP3 PUSH2 0xB14 JUMPI PUSH4 0x4E487B71 PUSH1 0xE0 SHL PUSH0 MSTORE PUSH1 0x12 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH0 REVERT JUMPDEST POP DIV SWAP1 JUMP JUMPDEST PUSH0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0xB29 JUMPI PUSH0 PUSH0 REVERT JUMPDEST POP MLOAD SWAP2 SWAP1 POP JUMP JUMPDEST PUSH0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0xB40 JUMPI PUSH0 PUSH0 REVERT JUMPDEST DUP2 MLOAD PUSH1 0xFF DUP2 AND DUP2 EQ PUSH2 0x7BA JUMPI PUSH0 PUSH0 REVERT JUMPDEST PUSH1 0xFF DUP3 DUP2 AND DUP3 DUP3 AND SUB SWAP1 DUP2 GT ISZERO PUSH2 0x70A JUMPI PUSH2 0x70A PUSH2 0xABB JUMP JUMPDEST PUSH1 0x1 DUP2 JUMPDEST PUSH1 0x1 DUP5 GT ISZERO PUSH2 0xBA4 JUMPI DUP1 DUP6 DIV DUP2 GT ISZERO PUSH2 0xB88 JUMPI PUSH2 0xB88 PUSH2 0xABB JUMP JUMPDEST PUSH1 0x1 DUP5 AND ISZERO PUSH2 0xB96 JUMPI SWAP1 DUP2 MUL SWAP1 JUMPDEST PUSH1 0x1 SWAP4 SWAP1 SWAP4 SHR SWAP3 DUP1 MUL PUSH2 0xB6D JUMP JUMPDEST SWAP4 POP SWAP4 SWAP2 POP POP JUMP JUMPDEST PUSH0 DUP3 PUSH2 0xBBA JUMPI POP PUSH1 0x1 PUSH2 0x70A JUMP JUMPDEST DUP2 PUSH2 0xBC6 JUMPI POP PUSH0 PUSH2 0x70A JUMP JUMPDEST DUP2 PUSH1 0x1 DUP2 EQ PUSH2 0xBDC JUMPI PUSH1 0x2 DUP2 EQ PUSH2 0xBE6 JUMPI PUSH2 0xC02 JUMP JUMPDEST PUSH1 0x1 SWAP2 POP POP PUSH2 0x70A JUMP JUMPDEST PUSH1 0xFF DUP5 GT ISZERO PUSH2 0xBF7 JUMPI PUSH2 0xBF7 PUSH2 0xABB JUMP JUMPDEST POP POP PUSH1 0x1 DUP3 SHL PUSH2 0x70A JUMP JUMPDEST POP PUSH1 0x20 DUP4 LT PUSH2 0x133 DUP4 LT AND PUSH1 0x4E DUP5 LT PUSH1 0xB DUP5 LT AND OR ISZERO PUSH2 0xC25 JUMPI POP DUP2 DUP2 EXP PUSH2 0x70A JUMP JUMPDEST PUSH2 0xC31 PUSH0 NOT DUP5 DUP5 PUSH2 0xB69 JUMP JUMPDEST DUP1 PUSH0 NOT DIV DUP3 GT ISZERO PUSH2 0xC44 JUMPI PUSH2 0xC44 PUSH2 0xABB JUMP JUMPDEST MUL SWAP4 SWAP3 POP POP POP JUMP JUMPDEST PUSH0 PUSH2 0x7BA PUSH1 0xFF DUP5 AND DUP4 PUSH2 0xBAC JUMP INVALID LOG2 PUSH5 0x6970667358 0x22 SLT KECCAK256 PUSH9 0xF7199BA62683E64DF5 0xEB LOG3 0xDC GASPRICE SWAP10 MLOAD 0x4C CALLER SWAP5 BLOCKHASH EXTCALL 0xB5 0xDA LOG2 SSTORE 0xCD DIV 0xEB CALLDATASIZE 0x2A 0xAE 0xF7 PUSH5 0x736F6C6343 STOP ADDMOD 0x1E STOP CALLER ","sourceMap":"661:3653:8:-:0;;;1079:87;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;-1:-1:-1;;;;;1120:19:8;;1112:49;;;;-1:-1:-1;;;1112:49:8;;;;;;;;;;;;1079:87;661:3653;;14:290:87;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:87;;214:42;;204:70;;270:1;267;260:12;204:70;293:5;14:290;-1:-1:-1;;;14:290:87:o;:::-;661:3653:8;;;;;;"},"deployedBytecode":{"functionDebugData":{"@_safeTransferFrom_9842":{"entryPoint":2148,"id":9842,"parameterSlots":5,"returnSlots":1},"@_safeTransfer_9817":{"entryPoint":2257,"id":9817,"parameterSlots":4,"returnSlots":1},"@_toWadFactor_2275":{"entryPoint":1683,"id":2275,"parameterSlots":1,"returnSlots":1},"@exactInputSingle_2383":{"entryPoint":284,"id":2383,"parameterSlots":1,"returnSlots":1},"@exactInput_2624":{"entryPoint":937,"id":2624,"parameterSlots":1,"returnSlots":1},"@exactOutputSingle_2516":{"entryPoint":963,"id":2516,"parameterSlots":1,"returnSlots":1},"@exactOutput_2611":{"entryPoint":null,"id":2611,"parameterSlots":1,"returnSlots":1},"@mul512_11124":{"entryPoint":2103,"id":11124,"parameterSlots":2,"returnSlots":2},"@mulDiv_11611":{"entryPoint":1808,"id":11611,"parameterSlots":3,"returnSlots":1},"@panic_10907":{"entryPoint":2131,"id":10907,"parameterSlots":1,"returnSlots":0},"@safeTransferFrom_9491":{"entryPoint":1985,"id":9491,"parameterSlots":4,"returnSlots":0},"@safeTransfer_9460":{"entryPoint":2045,"id":9460,"parameterSlots":3,"returnSlots":0},"@setCurrentPrice_2598":{"entryPoint":751,"id":2598,"parameterSlots":3,"returnSlots":0},"@ternary_11373":{"entryPoint":null,"id":11373,"parameterSlots":3,"returnSlots":1},"@toUint_14490":{"entryPoint":null,"id":14490,"parameterSlots":1,"returnSlots":1},"@uniswapV3SwapCallback_2638":{"entryPoint":1658,"id":2638,"parameterSlots":4,"returnSlots":0},"@withdraw_2552":{"entryPoint":1563,"id":2552,"parameterSlots":2,"returnSlots":0},"abi_decode_address":{"entryPoint":2399,"id":null,"parameterSlots":1,"returnSlots":1},"abi_decode_struct_ExactInputParams_calldata":{"entryPoint":2484,"id":null,"parameterSlots":2,"returnSlots":1},"abi_decode_struct_ExactInputSingleParams_calldata":{"entryPoint":2355,"id":null,"parameterSlots":2,"returnSlots":1},"abi_decode_tuple_t_address":{"entryPoint":2722,"id":null,"parameterSlots":2,"returnSlots":1},"abi_decode_tuple_t_addresst_addresst_uint256":{"entryPoint":2426,"id":null,"parameterSlots":2,"returnSlots":3},"abi_decode_tuple_t_addresst_uint256":{"entryPoint":2558,"id":null,"parameterSlots":2,"returnSlots":2},"abi_decode_tuple_t_int256t_int256t_bytes_calldata_ptr":{"entryPoint":2598,"id":null,"parameterSlots":2,"returnSlots":4},"abi_decode_tuple_t_struct$_ExactInputParams_$14823_calldata_ptr":{"entryPoint":2500,"id":null,"parameterSlots":2,"returnSlots":1},"abi_decode_tuple_t_struct$_ExactInputSingleParams_$14803_calldata_ptr":{"entryPoint":2372,"id":null,"parameterSlots":2,"returnSlots":1},"abi_decode_tuple_t_struct$_ExactOutputParams_$14869_calldata_ptr":{"entryPoint":null,"id":null,"parameterSlots":2,"returnSlots":1},"abi_decode_tuple_t_struct$_ExactOutputSingleParams_$14849_calldata_ptr":{"entryPoint":null,"id":null,"parameterSlots":2,"returnSlots":1},"abi_decode_tuple_t_uint256_fromMemory":{"entryPoint":2841,"id":null,"parameterSlots":2,"returnSlots":1},"abi_decode_tuple_t_uint8_fromMemory":{"entryPoint":2864,"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__to_t_address_t_address_t_uint256__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},"checked_div_t_uint256":{"entryPoint":2810,"id":null,"parameterSlots":2,"returnSlots":1},"checked_exp_helper":{"entryPoint":2921,"id":null,"parameterSlots":3,"returnSlots":2},"checked_exp_t_uint256_t_uint8":{"entryPoint":3148,"id":null,"parameterSlots":2,"returnSlots":1},"checked_exp_unsigned":{"entryPoint":2988,"id":null,"parameterSlots":2,"returnSlots":1},"checked_mul_t_uint256":{"entryPoint":2767,"id":null,"parameterSlots":2,"returnSlots":1},"checked_sub_t_uint8":{"entryPoint":2896,"id":null,"parameterSlots":2,"returnSlots":1},"panic_error_0x11":{"entryPoint":2747,"id":null,"parameterSlots":0,"returnSlots":0},"panic_error_0x12":{"entryPoint":2790,"id":null,"parameterSlots":0,"returnSlots":0}},"generatedSources":[{"ast":{"nativeSrc":"0:7278:87","nodeType":"YulBlock","src":"0:7278:87","statements":[{"nativeSrc":"6:3:87","nodeType":"YulBlock","src":"6:3:87","statements":[]},{"body":{"nativeSrc":"99:86:87","nodeType":"YulBlock","src":"99:86:87","statements":[{"body":{"nativeSrc":"139:16:87","nodeType":"YulBlock","src":"139:16:87","statements":[{"expression":{"arguments":[{"kind":"number","nativeSrc":"148:1:87","nodeType":"YulLiteral","src":"148:1:87","type":"","value":"0"},{"kind":"number","nativeSrc":"151:1:87","nodeType":"YulLiteral","src":"151:1:87","type":"","value":"0"}],"functionName":{"name":"revert","nativeSrc":"141:6:87","nodeType":"YulIdentifier","src":"141:6:87"},"nativeSrc":"141:12:87","nodeType":"YulFunctionCall","src":"141:12:87"},"nativeSrc":"141:12:87","nodeType":"YulExpressionStatement","src":"141:12:87"}]},"condition":{"arguments":[{"arguments":[{"name":"end","nativeSrc":"120:3:87","nodeType":"YulIdentifier","src":"120:3:87"},{"name":"offset","nativeSrc":"125:6:87","nodeType":"YulIdentifier","src":"125:6:87"}],"functionName":{"name":"sub","nativeSrc":"116:3:87","nodeType":"YulIdentifier","src":"116:3:87"},"nativeSrc":"116:16:87","nodeType":"YulFunctionCall","src":"116:16:87"},{"kind":"number","nativeSrc":"134:3:87","nodeType":"YulLiteral","src":"134:3:87","type":"","value":"256"}],"functionName":{"name":"slt","nativeSrc":"112:3:87","nodeType":"YulIdentifier","src":"112:3:87"},"nativeSrc":"112:26:87","nodeType":"YulFunctionCall","src":"112:26:87"},"nativeSrc":"109:46:87","nodeType":"YulIf","src":"109:46:87"},{"nativeSrc":"164:15:87","nodeType":"YulAssignment","src":"164:15:87","value":{"name":"offset","nativeSrc":"173:6:87","nodeType":"YulIdentifier","src":"173:6:87"},"variableNames":[{"name":"value","nativeSrc":"164:5:87","nodeType":"YulIdentifier","src":"164:5:87"}]}]},"name":"abi_decode_struct_ExactInputSingleParams_calldata","nativeSrc":"14:171:87","nodeType":"YulFunctionDefinition","parameters":[{"name":"offset","nativeSrc":"73:6:87","nodeType":"YulTypedName","src":"73:6:87","type":""},{"name":"end","nativeSrc":"81:3:87","nodeType":"YulTypedName","src":"81:3:87","type":""}],"returnVariables":[{"name":"value","nativeSrc":"89:5:87","nodeType":"YulTypedName","src":"89:5:87","type":""}],"src":"14:171:87"},{"body":{"nativeSrc":"303:157:87","nodeType":"YulBlock","src":"303:157:87","statements":[{"body":{"nativeSrc":"350:16:87","nodeType":"YulBlock","src":"350:16:87","statements":[{"expression":{"arguments":[{"kind":"number","nativeSrc":"359:1:87","nodeType":"YulLiteral","src":"359:1:87","type":"","value":"0"},{"kind":"number","nativeSrc":"362:1:87","nodeType":"YulLiteral","src":"362:1:87","type":"","value":"0"}],"functionName":{"name":"revert","nativeSrc":"352:6:87","nodeType":"YulIdentifier","src":"352:6:87"},"nativeSrc":"352:12:87","nodeType":"YulFunctionCall","src":"352:12:87"},"nativeSrc":"352:12:87","nodeType":"YulExpressionStatement","src":"352:12:87"}]},"condition":{"arguments":[{"arguments":[{"name":"dataEnd","nativeSrc":"324:7:87","nodeType":"YulIdentifier","src":"324:7:87"},{"name":"headStart","nativeSrc":"333:9:87","nodeType":"YulIdentifier","src":"333:9:87"}],"functionName":{"name":"sub","nativeSrc":"320:3:87","nodeType":"YulIdentifier","src":"320:3:87"},"nativeSrc":"320:23:87","nodeType":"YulFunctionCall","src":"320:23:87"},{"kind":"number","nativeSrc":"345:3:87","nodeType":"YulLiteral","src":"345:3:87","type":"","value":"256"}],"functionName":{"name":"slt","nativeSrc":"316:3:87","nodeType":"YulIdentifier","src":"316:3:87"},"nativeSrc":"316:33:87","nodeType":"YulFunctionCall","src":"316:33:87"},"nativeSrc":"313:53:87","nodeType":"YulIf","src":"313:53:87"},{"nativeSrc":"375:79:87","nodeType":"YulAssignment","src":"375:79:87","value":{"arguments":[{"name":"headStart","nativeSrc":"435:9:87","nodeType":"YulIdentifier","src":"435:9:87"},{"name":"dataEnd","nativeSrc":"446:7:87","nodeType":"YulIdentifier","src":"446:7:87"}],"functionName":{"name":"abi_decode_struct_ExactInputSingleParams_calldata","nativeSrc":"385:49:87","nodeType":"YulIdentifier","src":"385:49:87"},"nativeSrc":"385:69:87","nodeType":"YulFunctionCall","src":"385:69:87"},"variableNames":[{"name":"value0","nativeSrc":"375:6:87","nodeType":"YulIdentifier","src":"375:6:87"}]}]},"name":"abi_decode_tuple_t_struct$_ExactInputSingleParams_$14803_calldata_ptr","nativeSrc":"190:270:87","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nativeSrc":"269:9:87","nodeType":"YulTypedName","src":"269:9:87","type":""},{"name":"dataEnd","nativeSrc":"280:7:87","nodeType":"YulTypedName","src":"280:7:87","type":""}],"returnVariables":[{"name":"value0","nativeSrc":"292:6:87","nodeType":"YulTypedName","src":"292:6:87","type":""}],"src":"190:270:87"},{"body":{"nativeSrc":"566:76:87","nodeType":"YulBlock","src":"566:76:87","statements":[{"nativeSrc":"576:26:87","nodeType":"YulAssignment","src":"576:26:87","value":{"arguments":[{"name":"headStart","nativeSrc":"588:9:87","nodeType":"YulIdentifier","src":"588:9:87"},{"kind":"number","nativeSrc":"599:2:87","nodeType":"YulLiteral","src":"599:2:87","type":"","value":"32"}],"functionName":{"name":"add","nativeSrc":"584:3:87","nodeType":"YulIdentifier","src":"584:3:87"},"nativeSrc":"584:18:87","nodeType":"YulFunctionCall","src":"584:18:87"},"variableNames":[{"name":"tail","nativeSrc":"576:4:87","nodeType":"YulIdentifier","src":"576:4:87"}]},{"expression":{"arguments":[{"name":"headStart","nativeSrc":"618:9:87","nodeType":"YulIdentifier","src":"618:9:87"},{"name":"value0","nativeSrc":"629:6:87","nodeType":"YulIdentifier","src":"629:6:87"}],"functionName":{"name":"mstore","nativeSrc":"611:6:87","nodeType":"YulIdentifier","src":"611:6:87"},"nativeSrc":"611:25:87","nodeType":"YulFunctionCall","src":"611:25:87"},"nativeSrc":"611:25:87","nodeType":"YulExpressionStatement","src":"611:25:87"}]},"name":"abi_encode_tuple_t_uint256__to_t_uint256__fromStack_reversed","nativeSrc":"465:177:87","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nativeSrc":"535:9:87","nodeType":"YulTypedName","src":"535:9:87","type":""},{"name":"value0","nativeSrc":"546:6:87","nodeType":"YulTypedName","src":"546:6:87","type":""}],"returnVariables":[{"name":"tail","nativeSrc":"557:4:87","nodeType":"YulTypedName","src":"557:4:87","type":""}],"src":"465:177:87"},{"body":{"nativeSrc":"696:124:87","nodeType":"YulBlock","src":"696:124:87","statements":[{"nativeSrc":"706:29:87","nodeType":"YulAssignment","src":"706:29:87","value":{"arguments":[{"name":"offset","nativeSrc":"728:6:87","nodeType":"YulIdentifier","src":"728:6:87"}],"functionName":{"name":"calldataload","nativeSrc":"715:12:87","nodeType":"YulIdentifier","src":"715:12:87"},"nativeSrc":"715:20:87","nodeType":"YulFunctionCall","src":"715:20:87"},"variableNames":[{"name":"value","nativeSrc":"706:5:87","nodeType":"YulIdentifier","src":"706:5:87"}]},{"body":{"nativeSrc":"798:16:87","nodeType":"YulBlock","src":"798:16:87","statements":[{"expression":{"arguments":[{"kind":"number","nativeSrc":"807:1:87","nodeType":"YulLiteral","src":"807:1:87","type":"","value":"0"},{"kind":"number","nativeSrc":"810:1:87","nodeType":"YulLiteral","src":"810:1:87","type":"","value":"0"}],"functionName":{"name":"revert","nativeSrc":"800:6:87","nodeType":"YulIdentifier","src":"800:6:87"},"nativeSrc":"800:12:87","nodeType":"YulFunctionCall","src":"800:12:87"},"nativeSrc":"800:12:87","nodeType":"YulExpressionStatement","src":"800:12:87"}]},"condition":{"arguments":[{"arguments":[{"name":"value","nativeSrc":"757:5:87","nodeType":"YulIdentifier","src":"757:5:87"},{"arguments":[{"name":"value","nativeSrc":"768:5:87","nodeType":"YulIdentifier","src":"768:5:87"},{"arguments":[{"arguments":[{"kind":"number","nativeSrc":"783:3:87","nodeType":"YulLiteral","src":"783:3:87","type":"","value":"160"},{"kind":"number","nativeSrc":"788:1:87","nodeType":"YulLiteral","src":"788:1:87","type":"","value":"1"}],"functionName":{"name":"shl","nativeSrc":"779:3:87","nodeType":"YulIdentifier","src":"779:3:87"},"nativeSrc":"779:11:87","nodeType":"YulFunctionCall","src":"779:11:87"},{"kind":"number","nativeSrc":"792:1:87","nodeType":"YulLiteral","src":"792:1:87","type":"","value":"1"}],"functionName":{"name":"sub","nativeSrc":"775:3:87","nodeType":"YulIdentifier","src":"775:3:87"},"nativeSrc":"775:19:87","nodeType":"YulFunctionCall","src":"775:19:87"}],"functionName":{"name":"and","nativeSrc":"764:3:87","nodeType":"YulIdentifier","src":"764:3:87"},"nativeSrc":"764:31:87","nodeType":"YulFunctionCall","src":"764:31:87"}],"functionName":{"name":"eq","nativeSrc":"754:2:87","nodeType":"YulIdentifier","src":"754:2:87"},"nativeSrc":"754:42:87","nodeType":"YulFunctionCall","src":"754:42:87"}],"functionName":{"name":"iszero","nativeSrc":"747:6:87","nodeType":"YulIdentifier","src":"747:6:87"},"nativeSrc":"747:50:87","nodeType":"YulFunctionCall","src":"747:50:87"},"nativeSrc":"744:70:87","nodeType":"YulIf","src":"744:70:87"}]},"name":"abi_decode_address","nativeSrc":"647:173:87","nodeType":"YulFunctionDefinition","parameters":[{"name":"offset","nativeSrc":"675:6:87","nodeType":"YulTypedName","src":"675:6:87","type":""}],"returnVariables":[{"name":"value","nativeSrc":"686:5:87","nodeType":"YulTypedName","src":"686:5:87","type":""}],"src":"647:173:87"},{"body":{"nativeSrc":"929:270:87","nodeType":"YulBlock","src":"929:270:87","statements":[{"body":{"nativeSrc":"975:16:87","nodeType":"YulBlock","src":"975:16:87","statements":[{"expression":{"arguments":[{"kind":"number","nativeSrc":"984:1:87","nodeType":"YulLiteral","src":"984:1:87","type":"","value":"0"},{"kind":"number","nativeSrc":"987:1:87","nodeType":"YulLiteral","src":"987:1:87","type":"","value":"0"}],"functionName":{"name":"revert","nativeSrc":"977:6:87","nodeType":"YulIdentifier","src":"977:6:87"},"nativeSrc":"977:12:87","nodeType":"YulFunctionCall","src":"977:12:87"},"nativeSrc":"977:12:87","nodeType":"YulExpressionStatement","src":"977:12:87"}]},"condition":{"arguments":[{"arguments":[{"name":"dataEnd","nativeSrc":"950:7:87","nodeType":"YulIdentifier","src":"950:7:87"},{"name":"headStart","nativeSrc":"959:9:87","nodeType":"YulIdentifier","src":"959:9:87"}],"functionName":{"name":"sub","nativeSrc":"946:3:87","nodeType":"YulIdentifier","src":"946:3:87"},"nativeSrc":"946:23:87","nodeType":"YulFunctionCall","src":"946:23:87"},{"kind":"number","nativeSrc":"971:2:87","nodeType":"YulLiteral","src":"971:2:87","type":"","value":"96"}],"functionName":{"name":"slt","nativeSrc":"942:3:87","nodeType":"YulIdentifier","src":"942:3:87"},"nativeSrc":"942:32:87","nodeType":"YulFunctionCall","src":"942:32:87"},"nativeSrc":"939:52:87","nodeType":"YulIf","src":"939:52:87"},{"nativeSrc":"1000:39:87","nodeType":"YulAssignment","src":"1000:39:87","value":{"arguments":[{"name":"headStart","nativeSrc":"1029:9:87","nodeType":"YulIdentifier","src":"1029:9:87"}],"functionName":{"name":"abi_decode_address","nativeSrc":"1010:18:87","nodeType":"YulIdentifier","src":"1010:18:87"},"nativeSrc":"1010:29:87","nodeType":"YulFunctionCall","src":"1010:29:87"},"variableNames":[{"name":"value0","nativeSrc":"1000:6:87","nodeType":"YulIdentifier","src":"1000:6:87"}]},{"nativeSrc":"1048:48:87","nodeType":"YulAssignment","src":"1048:48:87","value":{"arguments":[{"arguments":[{"name":"headStart","nativeSrc":"1081:9:87","nodeType":"YulIdentifier","src":"1081:9:87"},{"kind":"number","nativeSrc":"1092:2:87","nodeType":"YulLiteral","src":"1092:2:87","type":"","value":"32"}],"functionName":{"name":"add","nativeSrc":"1077:3:87","nodeType":"YulIdentifier","src":"1077:3:87"},"nativeSrc":"1077:18:87","nodeType":"YulFunctionCall","src":"1077:18:87"}],"functionName":{"name":"abi_decode_address","nativeSrc":"1058:18:87","nodeType":"YulIdentifier","src":"1058:18:87"},"nativeSrc":"1058:38:87","nodeType":"YulFunctionCall","src":"1058:38:87"},"variableNames":[{"name":"value1","nativeSrc":"1048:6:87","nodeType":"YulIdentifier","src":"1048:6:87"}]},{"nativeSrc":"1105:14:87","nodeType":"YulVariableDeclaration","src":"1105:14:87","value":{"kind":"number","nativeSrc":"1118:1:87","nodeType":"YulLiteral","src":"1118:1:87","type":"","value":"0"},"variables":[{"name":"value","nativeSrc":"1109:5:87","nodeType":"YulTypedName","src":"1109:5:87","type":""}]},{"nativeSrc":"1128:41:87","nodeType":"YulAssignment","src":"1128:41:87","value":{"arguments":[{"arguments":[{"name":"headStart","nativeSrc":"1154:9:87","nodeType":"YulIdentifier","src":"1154:9:87"},{"kind":"number","nativeSrc":"1165:2:87","nodeType":"YulLiteral","src":"1165:2:87","type":"","value":"64"}],"functionName":{"name":"add","nativeSrc":"1150:3:87","nodeType":"YulIdentifier","src":"1150:3:87"},"nativeSrc":"1150:18:87","nodeType":"YulFunctionCall","src":"1150:18:87"}],"functionName":{"name":"calldataload","nativeSrc":"1137:12:87","nodeType":"YulIdentifier","src":"1137:12:87"},"nativeSrc":"1137:32:87","nodeType":"YulFunctionCall","src":"1137:32:87"},"variableNames":[{"name":"value","nativeSrc":"1128:5:87","nodeType":"YulIdentifier","src":"1128:5:87"}]},{"nativeSrc":"1178:15:87","nodeType":"YulAssignment","src":"1178:15:87","value":{"name":"value","nativeSrc":"1188:5:87","nodeType":"YulIdentifier","src":"1188:5:87"},"variableNames":[{"name":"value2","nativeSrc":"1178:6:87","nodeType":"YulIdentifier","src":"1178:6:87"}]}]},"name":"abi_decode_tuple_t_addresst_addresst_uint256","nativeSrc":"825:374:87","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nativeSrc":"879:9:87","nodeType":"YulTypedName","src":"879:9:87","type":""},{"name":"dataEnd","nativeSrc":"890:7:87","nodeType":"YulTypedName","src":"890:7:87","type":""}],"returnVariables":[{"name":"value0","nativeSrc":"902:6:87","nodeType":"YulTypedName","src":"902:6:87","type":""},{"name":"value1","nativeSrc":"910:6:87","nodeType":"YulTypedName","src":"910:6:87","type":""},{"name":"value2","nativeSrc":"918:6:87","nodeType":"YulTypedName","src":"918:6:87","type":""}],"src":"825:374:87"},{"body":{"nativeSrc":"1283:86:87","nodeType":"YulBlock","src":"1283:86:87","statements":[{"body":{"nativeSrc":"1323:16:87","nodeType":"YulBlock","src":"1323:16:87","statements":[{"expression":{"arguments":[{"kind":"number","nativeSrc":"1332:1:87","nodeType":"YulLiteral","src":"1332:1:87","type":"","value":"0"},{"kind":"number","nativeSrc":"1335:1:87","nodeType":"YulLiteral","src":"1335:1:87","type":"","value":"0"}],"functionName":{"name":"revert","nativeSrc":"1325:6:87","nodeType":"YulIdentifier","src":"1325:6:87"},"nativeSrc":"1325:12:87","nodeType":"YulFunctionCall","src":"1325:12:87"},"nativeSrc":"1325:12:87","nodeType":"YulExpressionStatement","src":"1325:12:87"}]},"condition":{"arguments":[{"arguments":[{"name":"end","nativeSrc":"1304:3:87","nodeType":"YulIdentifier","src":"1304:3:87"},{"name":"offset","nativeSrc":"1309:6:87","nodeType":"YulIdentifier","src":"1309:6:87"}],"functionName":{"name":"sub","nativeSrc":"1300:3:87","nodeType":"YulIdentifier","src":"1300:3:87"},"nativeSrc":"1300:16:87","nodeType":"YulFunctionCall","src":"1300:16:87"},{"kind":"number","nativeSrc":"1318:3:87","nodeType":"YulLiteral","src":"1318:3:87","type":"","value":"160"}],"functionName":{"name":"slt","nativeSrc":"1296:3:87","nodeType":"YulIdentifier","src":"1296:3:87"},"nativeSrc":"1296:26:87","nodeType":"YulFunctionCall","src":"1296:26:87"},"nativeSrc":"1293:46:87","nodeType":"YulIf","src":"1293:46:87"},{"nativeSrc":"1348:15:87","nodeType":"YulAssignment","src":"1348:15:87","value":{"name":"offset","nativeSrc":"1357:6:87","nodeType":"YulIdentifier","src":"1357:6:87"},"variableNames":[{"name":"value","nativeSrc":"1348:5:87","nodeType":"YulIdentifier","src":"1348:5:87"}]}]},"name":"abi_decode_struct_ExactInputParams_calldata","nativeSrc":"1204:165:87","nodeType":"YulFunctionDefinition","parameters":[{"name":"offset","nativeSrc":"1257:6:87","nodeType":"YulTypedName","src":"1257:6:87","type":""},{"name":"end","nativeSrc":"1265:3:87","nodeType":"YulTypedName","src":"1265:3:87","type":""}],"returnVariables":[{"name":"value","nativeSrc":"1273:5:87","nodeType":"YulTypedName","src":"1273:5:87","type":""}],"src":"1204:165:87"},{"body":{"nativeSrc":"1481:268:87","nodeType":"YulBlock","src":"1481:268:87","statements":[{"body":{"nativeSrc":"1527:16:87","nodeType":"YulBlock","src":"1527:16:87","statements":[{"expression":{"arguments":[{"kind":"number","nativeSrc":"1536:1:87","nodeType":"YulLiteral","src":"1536:1:87","type":"","value":"0"},{"kind":"number","nativeSrc":"1539:1:87","nodeType":"YulLiteral","src":"1539:1:87","type":"","value":"0"}],"functionName":{"name":"revert","nativeSrc":"1529:6:87","nodeType":"YulIdentifier","src":"1529:6:87"},"nativeSrc":"1529:12:87","nodeType":"YulFunctionCall","src":"1529:12:87"},"nativeSrc":"1529:12:87","nodeType":"YulExpressionStatement","src":"1529:12:87"}]},"condition":{"arguments":[{"arguments":[{"name":"dataEnd","nativeSrc":"1502:7:87","nodeType":"YulIdentifier","src":"1502:7:87"},{"name":"headStart","nativeSrc":"1511:9:87","nodeType":"YulIdentifier","src":"1511:9:87"}],"functionName":{"name":"sub","nativeSrc":"1498:3:87","nodeType":"YulIdentifier","src":"1498:3:87"},"nativeSrc":"1498:23:87","nodeType":"YulFunctionCall","src":"1498:23:87"},{"kind":"number","nativeSrc":"1523:2:87","nodeType":"YulLiteral","src":"1523:2:87","type":"","value":"32"}],"functionName":{"name":"slt","nativeSrc":"1494:3:87","nodeType":"YulIdentifier","src":"1494:3:87"},"nativeSrc":"1494:32:87","nodeType":"YulFunctionCall","src":"1494:32:87"},"nativeSrc":"1491:52:87","nodeType":"YulIf","src":"1491:52:87"},{"nativeSrc":"1552:37:87","nodeType":"YulVariableDeclaration","src":"1552:37:87","value":{"arguments":[{"name":"headStart","nativeSrc":"1579:9:87","nodeType":"YulIdentifier","src":"1579:9:87"}],"functionName":{"name":"calldataload","nativeSrc":"1566:12:87","nodeType":"YulIdentifier","src":"1566:12:87"},"nativeSrc":"1566:23:87","nodeType":"YulFunctionCall","src":"1566:23:87"},"variables":[{"name":"offset","nativeSrc":"1556:6:87","nodeType":"YulTypedName","src":"1556:6:87","type":""}]},{"body":{"nativeSrc":"1632:16:87","nodeType":"YulBlock","src":"1632:16:87","statements":[{"expression":{"arguments":[{"kind":"number","nativeSrc":"1641:1:87","nodeType":"YulLiteral","src":"1641:1:87","type":"","value":"0"},{"kind":"number","nativeSrc":"1644:1:87","nodeType":"YulLiteral","src":"1644:1:87","type":"","value":"0"}],"functionName":{"name":"revert","nativeSrc":"1634:6:87","nodeType":"YulIdentifier","src":"1634:6:87"},"nativeSrc":"1634:12:87","nodeType":"YulFunctionCall","src":"1634:12:87"},"nativeSrc":"1634:12:87","nodeType":"YulExpressionStatement","src":"1634:12:87"}]},"condition":{"arguments":[{"name":"offset","nativeSrc":"1604:6:87","nodeType":"YulIdentifier","src":"1604:6:87"},{"kind":"number","nativeSrc":"1612:18:87","nodeType":"YulLiteral","src":"1612:18:87","type":"","value":"0xffffffffffffffff"}],"functionName":{"name":"gt","nativeSrc":"1601:2:87","nodeType":"YulIdentifier","src":"1601:2:87"},"nativeSrc":"1601:30:87","nodeType":"YulFunctionCall","src":"1601:30:87"},"nativeSrc":"1598:50:87","nodeType":"YulIf","src":"1598:50:87"},{"nativeSrc":"1657:86:87","nodeType":"YulAssignment","src":"1657:86:87","value":{"arguments":[{"arguments":[{"name":"headStart","nativeSrc":"1715:9:87","nodeType":"YulIdentifier","src":"1715:9:87"},{"name":"offset","nativeSrc":"1726:6:87","nodeType":"YulIdentifier","src":"1726:6:87"}],"functionName":{"name":"add","nativeSrc":"1711:3:87","nodeType":"YulIdentifier","src":"1711:3:87"},"nativeSrc":"1711:22:87","nodeType":"YulFunctionCall","src":"1711:22:87"},{"name":"dataEnd","nativeSrc":"1735:7:87","nodeType":"YulIdentifier","src":"1735:7:87"}],"functionName":{"name":"abi_decode_struct_ExactInputParams_calldata","nativeSrc":"1667:43:87","nodeType":"YulIdentifier","src":"1667:43:87"},"nativeSrc":"1667:76:87","nodeType":"YulFunctionCall","src":"1667:76:87"},"variableNames":[{"name":"value0","nativeSrc":"1657:6:87","nodeType":"YulIdentifier","src":"1657:6:87"}]}]},"name":"abi_decode_tuple_t_struct$_ExactInputParams_$14823_calldata_ptr","nativeSrc":"1374:375:87","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nativeSrc":"1447:9:87","nodeType":"YulTypedName","src":"1447:9:87","type":""},{"name":"dataEnd","nativeSrc":"1458:7:87","nodeType":"YulTypedName","src":"1458:7:87","type":""}],"returnVariables":[{"name":"value0","nativeSrc":"1470:6:87","nodeType":"YulTypedName","src":"1470:6:87","type":""}],"src":"1374:375:87"},{"body":{"nativeSrc":"1868:157:87","nodeType":"YulBlock","src":"1868:157:87","statements":[{"body":{"nativeSrc":"1915:16:87","nodeType":"YulBlock","src":"1915:16:87","statements":[{"expression":{"arguments":[{"kind":"number","nativeSrc":"1924:1:87","nodeType":"YulLiteral","src":"1924:1:87","type":"","value":"0"},{"kind":"number","nativeSrc":"1927:1:87","nodeType":"YulLiteral","src":"1927:1:87","type":"","value":"0"}],"functionName":{"name":"revert","nativeSrc":"1917:6:87","nodeType":"YulIdentifier","src":"1917:6:87"},"nativeSrc":"1917:12:87","nodeType":"YulFunctionCall","src":"1917:12:87"},"nativeSrc":"1917:12:87","nodeType":"YulExpressionStatement","src":"1917:12:87"}]},"condition":{"arguments":[{"arguments":[{"name":"dataEnd","nativeSrc":"1889:7:87","nodeType":"YulIdentifier","src":"1889:7:87"},{"name":"headStart","nativeSrc":"1898:9:87","nodeType":"YulIdentifier","src":"1898:9:87"}],"functionName":{"name":"sub","nativeSrc":"1885:3:87","nodeType":"YulIdentifier","src":"1885:3:87"},"nativeSrc":"1885:23:87","nodeType":"YulFunctionCall","src":"1885:23:87"},{"kind":"number","nativeSrc":"1910:3:87","nodeType":"YulLiteral","src":"1910:3:87","type":"","value":"256"}],"functionName":{"name":"slt","nativeSrc":"1881:3:87","nodeType":"YulIdentifier","src":"1881:3:87"},"nativeSrc":"1881:33:87","nodeType":"YulFunctionCall","src":"1881:33:87"},"nativeSrc":"1878:53:87","nodeType":"YulIf","src":"1878:53:87"},{"nativeSrc":"1940:79:87","nodeType":"YulAssignment","src":"1940:79:87","value":{"arguments":[{"name":"headStart","nativeSrc":"2000:9:87","nodeType":"YulIdentifier","src":"2000:9:87"},{"name":"dataEnd","nativeSrc":"2011:7:87","nodeType":"YulIdentifier","src":"2011:7:87"}],"functionName":{"name":"abi_decode_struct_ExactInputSingleParams_calldata","nativeSrc":"1950:49:87","nodeType":"YulIdentifier","src":"1950:49:87"},"nativeSrc":"1950:69:87","nodeType":"YulFunctionCall","src":"1950:69:87"},"variableNames":[{"name":"value0","nativeSrc":"1940:6:87","nodeType":"YulIdentifier","src":"1940:6:87"}]}]},"name":"abi_decode_tuple_t_struct$_ExactOutputSingleParams_$14849_calldata_ptr","nativeSrc":"1754:271:87","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nativeSrc":"1834:9:87","nodeType":"YulTypedName","src":"1834:9:87","type":""},{"name":"dataEnd","nativeSrc":"1845:7:87","nodeType":"YulTypedName","src":"1845:7:87","type":""}],"returnVariables":[{"name":"value0","nativeSrc":"1857:6:87","nodeType":"YulTypedName","src":"1857:6:87","type":""}],"src":"1754:271:87"},{"body":{"nativeSrc":"2138:268:87","nodeType":"YulBlock","src":"2138:268:87","statements":[{"body":{"nativeSrc":"2184:16:87","nodeType":"YulBlock","src":"2184:16:87","statements":[{"expression":{"arguments":[{"kind":"number","nativeSrc":"2193:1:87","nodeType":"YulLiteral","src":"2193:1:87","type":"","value":"0"},{"kind":"number","nativeSrc":"2196:1:87","nodeType":"YulLiteral","src":"2196:1:87","type":"","value":"0"}],"functionName":{"name":"revert","nativeSrc":"2186:6:87","nodeType":"YulIdentifier","src":"2186:6:87"},"nativeSrc":"2186:12:87","nodeType":"YulFunctionCall","src":"2186:12:87"},"nativeSrc":"2186:12:87","nodeType":"YulExpressionStatement","src":"2186:12:87"}]},"condition":{"arguments":[{"arguments":[{"name":"dataEnd","nativeSrc":"2159:7:87","nodeType":"YulIdentifier","src":"2159:7:87"},{"name":"headStart","nativeSrc":"2168:9:87","nodeType":"YulIdentifier","src":"2168:9:87"}],"functionName":{"name":"sub","nativeSrc":"2155:3:87","nodeType":"YulIdentifier","src":"2155:3:87"},"nativeSrc":"2155:23:87","nodeType":"YulFunctionCall","src":"2155:23:87"},{"kind":"number","nativeSrc":"2180:2:87","nodeType":"YulLiteral","src":"2180:2:87","type":"","value":"32"}],"functionName":{"name":"slt","nativeSrc":"2151:3:87","nodeType":"YulIdentifier","src":"2151:3:87"},"nativeSrc":"2151:32:87","nodeType":"YulFunctionCall","src":"2151:32:87"},"nativeSrc":"2148:52:87","nodeType":"YulIf","src":"2148:52:87"},{"nativeSrc":"2209:37:87","nodeType":"YulVariableDeclaration","src":"2209:37:87","value":{"arguments":[{"name":"headStart","nativeSrc":"2236:9:87","nodeType":"YulIdentifier","src":"2236:9:87"}],"functionName":{"name":"calldataload","nativeSrc":"2223:12:87","nodeType":"YulIdentifier","src":"2223:12:87"},"nativeSrc":"2223:23:87","nodeType":"YulFunctionCall","src":"2223:23:87"},"variables":[{"name":"offset","nativeSrc":"2213:6:87","nodeType":"YulTypedName","src":"2213:6:87","type":""}]},{"body":{"nativeSrc":"2289:16:87","nodeType":"YulBlock","src":"2289:16:87","statements":[{"expression":{"arguments":[{"kind":"number","nativeSrc":"2298:1:87","nodeType":"YulLiteral","src":"2298:1:87","type":"","value":"0"},{"kind":"number","nativeSrc":"2301:1:87","nodeType":"YulLiteral","src":"2301:1:87","type":"","value":"0"}],"functionName":{"name":"revert","nativeSrc":"2291:6:87","nodeType":"YulIdentifier","src":"2291:6:87"},"nativeSrc":"2291:12:87","nodeType":"YulFunctionCall","src":"2291:12:87"},"nativeSrc":"2291:12:87","nodeType":"YulExpressionStatement","src":"2291:12:87"}]},"condition":{"arguments":[{"name":"offset","nativeSrc":"2261:6:87","nodeType":"YulIdentifier","src":"2261:6:87"},{"kind":"number","nativeSrc":"2269:18:87","nodeType":"YulLiteral","src":"2269:18:87","type":"","value":"0xffffffffffffffff"}],"functionName":{"name":"gt","nativeSrc":"2258:2:87","nodeType":"YulIdentifier","src":"2258:2:87"},"nativeSrc":"2258:30:87","nodeType":"YulFunctionCall","src":"2258:30:87"},"nativeSrc":"2255:50:87","nodeType":"YulIf","src":"2255:50:87"},{"nativeSrc":"2314:86:87","nodeType":"YulAssignment","src":"2314:86:87","value":{"arguments":[{"arguments":[{"name":"headStart","nativeSrc":"2372:9:87","nodeType":"YulIdentifier","src":"2372:9:87"},{"name":"offset","nativeSrc":"2383:6:87","nodeType":"YulIdentifier","src":"2383:6:87"}],"functionName":{"name":"add","nativeSrc":"2368:3:87","nodeType":"YulIdentifier","src":"2368:3:87"},"nativeSrc":"2368:22:87","nodeType":"YulFunctionCall","src":"2368:22:87"},{"name":"dataEnd","nativeSrc":"2392:7:87","nodeType":"YulIdentifier","src":"2392:7:87"}],"functionName":{"name":"abi_decode_struct_ExactInputParams_calldata","nativeSrc":"2324:43:87","nodeType":"YulIdentifier","src":"2324:43:87"},"nativeSrc":"2324:76:87","nodeType":"YulFunctionCall","src":"2324:76:87"},"variableNames":[{"name":"value0","nativeSrc":"2314:6:87","nodeType":"YulIdentifier","src":"2314:6:87"}]}]},"name":"abi_decode_tuple_t_struct$_ExactOutputParams_$14869_calldata_ptr","nativeSrc":"2030:376:87","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nativeSrc":"2104:9:87","nodeType":"YulTypedName","src":"2104:9:87","type":""},{"name":"dataEnd","nativeSrc":"2115:7:87","nodeType":"YulTypedName","src":"2115:7:87","type":""}],"returnVariables":[{"name":"value0","nativeSrc":"2127:6:87","nodeType":"YulTypedName","src":"2127:6:87","type":""}],"src":"2030:376:87"},{"body":{"nativeSrc":"2498:213:87","nodeType":"YulBlock","src":"2498:213:87","statements":[{"body":{"nativeSrc":"2544:16:87","nodeType":"YulBlock","src":"2544:16:87","statements":[{"expression":{"arguments":[{"kind":"number","nativeSrc":"2553:1:87","nodeType":"YulLiteral","src":"2553:1:87","type":"","value":"0"},{"kind":"number","nativeSrc":"2556:1:87","nodeType":"YulLiteral","src":"2556:1:87","type":"","value":"0"}],"functionName":{"name":"revert","nativeSrc":"2546:6:87","nodeType":"YulIdentifier","src":"2546:6:87"},"nativeSrc":"2546:12:87","nodeType":"YulFunctionCall","src":"2546:12:87"},"nativeSrc":"2546:12:87","nodeType":"YulExpressionStatement","src":"2546:12:87"}]},"condition":{"arguments":[{"arguments":[{"name":"dataEnd","nativeSrc":"2519:7:87","nodeType":"YulIdentifier","src":"2519:7:87"},{"name":"headStart","nativeSrc":"2528:9:87","nodeType":"YulIdentifier","src":"2528:9:87"}],"functionName":{"name":"sub","nativeSrc":"2515:3:87","nodeType":"YulIdentifier","src":"2515:3:87"},"nativeSrc":"2515:23:87","nodeType":"YulFunctionCall","src":"2515:23:87"},{"kind":"number","nativeSrc":"2540:2:87","nodeType":"YulLiteral","src":"2540:2:87","type":"","value":"64"}],"functionName":{"name":"slt","nativeSrc":"2511:3:87","nodeType":"YulIdentifier","src":"2511:3:87"},"nativeSrc":"2511:32:87","nodeType":"YulFunctionCall","src":"2511:32:87"},"nativeSrc":"2508:52:87","nodeType":"YulIf","src":"2508:52:87"},{"nativeSrc":"2569:39:87","nodeType":"YulAssignment","src":"2569:39:87","value":{"arguments":[{"name":"headStart","nativeSrc":"2598:9:87","nodeType":"YulIdentifier","src":"2598:9:87"}],"functionName":{"name":"abi_decode_address","nativeSrc":"2579:18:87","nodeType":"YulIdentifier","src":"2579:18:87"},"nativeSrc":"2579:29:87","nodeType":"YulFunctionCall","src":"2579:29:87"},"variableNames":[{"name":"value0","nativeSrc":"2569:6:87","nodeType":"YulIdentifier","src":"2569:6:87"}]},{"nativeSrc":"2617:14:87","nodeType":"YulVariableDeclaration","src":"2617:14:87","value":{"kind":"number","nativeSrc":"2630:1:87","nodeType":"YulLiteral","src":"2630:1:87","type":"","value":"0"},"variables":[{"name":"value","nativeSrc":"2621:5:87","nodeType":"YulTypedName","src":"2621:5:87","type":""}]},{"nativeSrc":"2640:41:87","nodeType":"YulAssignment","src":"2640:41:87","value":{"arguments":[{"arguments":[{"name":"headStart","nativeSrc":"2666:9:87","nodeType":"YulIdentifier","src":"2666:9:87"},{"kind":"number","nativeSrc":"2677:2:87","nodeType":"YulLiteral","src":"2677:2:87","type":"","value":"32"}],"functionName":{"name":"add","nativeSrc":"2662:3:87","nodeType":"YulIdentifier","src":"2662:3:87"},"nativeSrc":"2662:18:87","nodeType":"YulFunctionCall","src":"2662:18:87"}],"functionName":{"name":"calldataload","nativeSrc":"2649:12:87","nodeType":"YulIdentifier","src":"2649:12:87"},"nativeSrc":"2649:32:87","nodeType":"YulFunctionCall","src":"2649:32:87"},"variableNames":[{"name":"value","nativeSrc":"2640:5:87","nodeType":"YulIdentifier","src":"2640:5:87"}]},{"nativeSrc":"2690:15:87","nodeType":"YulAssignment","src":"2690:15:87","value":{"name":"value","nativeSrc":"2700:5:87","nodeType":"YulIdentifier","src":"2700:5:87"},"variableNames":[{"name":"value1","nativeSrc":"2690:6:87","nodeType":"YulIdentifier","src":"2690:6:87"}]}]},"name":"abi_decode_tuple_t_addresst_uint256","nativeSrc":"2411:300:87","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nativeSrc":"2456:9:87","nodeType":"YulTypedName","src":"2456:9:87","type":""},{"name":"dataEnd","nativeSrc":"2467:7:87","nodeType":"YulTypedName","src":"2467:7:87","type":""}],"returnVariables":[{"name":"value0","nativeSrc":"2479:6:87","nodeType":"YulTypedName","src":"2479:6:87","type":""},{"name":"value1","nativeSrc":"2487:6:87","nodeType":"YulTypedName","src":"2487:6:87","type":""}],"src":"2411:300:87"},{"body":{"nativeSrc":"2837:697:87","nodeType":"YulBlock","src":"2837:697:87","statements":[{"body":{"nativeSrc":"2883:16:87","nodeType":"YulBlock","src":"2883:16:87","statements":[{"expression":{"arguments":[{"kind":"number","nativeSrc":"2892:1:87","nodeType":"YulLiteral","src":"2892:1:87","type":"","value":"0"},{"kind":"number","nativeSrc":"2895:1:87","nodeType":"YulLiteral","src":"2895:1:87","type":"","value":"0"}],"functionName":{"name":"revert","nativeSrc":"2885:6:87","nodeType":"YulIdentifier","src":"2885:6:87"},"nativeSrc":"2885:12:87","nodeType":"YulFunctionCall","src":"2885:12:87"},"nativeSrc":"2885:12:87","nodeType":"YulExpressionStatement","src":"2885:12:87"}]},"condition":{"arguments":[{"arguments":[{"name":"dataEnd","nativeSrc":"2858:7:87","nodeType":"YulIdentifier","src":"2858:7:87"},{"name":"headStart","nativeSrc":"2867:9:87","nodeType":"YulIdentifier","src":"2867:9:87"}],"functionName":{"name":"sub","nativeSrc":"2854:3:87","nodeType":"YulIdentifier","src":"2854:3:87"},"nativeSrc":"2854:23:87","nodeType":"YulFunctionCall","src":"2854:23:87"},{"kind":"number","nativeSrc":"2879:2:87","nodeType":"YulLiteral","src":"2879:2:87","type":"","value":"96"}],"functionName":{"name":"slt","nativeSrc":"2850:3:87","nodeType":"YulIdentifier","src":"2850:3:87"},"nativeSrc":"2850:32:87","nodeType":"YulFunctionCall","src":"2850:32:87"},"nativeSrc":"2847:52:87","nodeType":"YulIf","src":"2847:52:87"},{"nativeSrc":"2908:14:87","nodeType":"YulVariableDeclaration","src":"2908:14:87","value":{"kind":"number","nativeSrc":"2921:1:87","nodeType":"YulLiteral","src":"2921:1:87","type":"","value":"0"},"variables":[{"name":"value","nativeSrc":"2912:5:87","nodeType":"YulTypedName","src":"2912:5:87","type":""}]},{"nativeSrc":"2931:32:87","nodeType":"YulAssignment","src":"2931:32:87","value":{"arguments":[{"name":"headStart","nativeSrc":"2953:9:87","nodeType":"YulIdentifier","src":"2953:9:87"}],"functionName":{"name":"calldataload","nativeSrc":"2940:12:87","nodeType":"YulIdentifier","src":"2940:12:87"},"nativeSrc":"2940:23:87","nodeType":"YulFunctionCall","src":"2940:23:87"},"variableNames":[{"name":"value","nativeSrc":"2931:5:87","nodeType":"YulIdentifier","src":"2931:5:87"}]},{"nativeSrc":"2972:15:87","nodeType":"YulAssignment","src":"2972:15:87","value":{"name":"value","nativeSrc":"2982:5:87","nodeType":"YulIdentifier","src":"2982:5:87"},"variableNames":[{"name":"value0","nativeSrc":"2972:6:87","nodeType":"YulIdentifier","src":"2972:6:87"}]},{"nativeSrc":"2996:16:87","nodeType":"YulVariableDeclaration","src":"2996:16:87","value":{"kind":"number","nativeSrc":"3011:1:87","nodeType":"YulLiteral","src":"3011:1:87","type":"","value":"0"},"variables":[{"name":"value_1","nativeSrc":"3000:7:87","nodeType":"YulTypedName","src":"3000:7:87","type":""}]},{"nativeSrc":"3021:43:87","nodeType":"YulAssignment","src":"3021:43:87","value":{"arguments":[{"arguments":[{"name":"headStart","nativeSrc":"3049:9:87","nodeType":"YulIdentifier","src":"3049:9:87"},{"kind":"number","nativeSrc":"3060:2:87","nodeType":"YulLiteral","src":"3060:2:87","type":"","value":"32"}],"functionName":{"name":"add","nativeSrc":"3045:3:87","nodeType":"YulIdentifier","src":"3045:3:87"},"nativeSrc":"3045:18:87","nodeType":"YulFunctionCall","src":"3045:18:87"}],"functionName":{"name":"calldataload","nativeSrc":"3032:12:87","nodeType":"YulIdentifier","src":"3032:12:87"},"nativeSrc":"3032:32:87","nodeType":"YulFunctionCall","src":"3032:32:87"},"variableNames":[{"name":"value_1","nativeSrc":"3021:7:87","nodeType":"YulIdentifier","src":"3021:7:87"}]},{"nativeSrc":"3073:17:87","nodeType":"YulAssignment","src":"3073:17:87","value":{"name":"value_1","nativeSrc":"3083:7:87","nodeType":"YulIdentifier","src":"3083:7:87"},"variableNames":[{"name":"value1","nativeSrc":"3073:6:87","nodeType":"YulIdentifier","src":"3073:6:87"}]},{"nativeSrc":"3099:46:87","nodeType":"YulVariableDeclaration","src":"3099:46:87","value":{"arguments":[{"arguments":[{"name":"headStart","nativeSrc":"3130:9:87","nodeType":"YulIdentifier","src":"3130:9:87"},{"kind":"number","nativeSrc":"3141:2:87","nodeType":"YulLiteral","src":"3141:2:87","type":"","value":"64"}],"functionName":{"name":"add","nativeSrc":"3126:3:87","nodeType":"YulIdentifier","src":"3126:3:87"},"nativeSrc":"3126:18:87","nodeType":"YulFunctionCall","src":"3126:18:87"}],"functionName":{"name":"calldataload","nativeSrc":"3113:12:87","nodeType":"YulIdentifier","src":"3113:12:87"},"nativeSrc":"3113:32:87","nodeType":"YulFunctionCall","src":"3113:32:87"},"variables":[{"name":"offset","nativeSrc":"3103:6:87","nodeType":"YulTypedName","src":"3103:6:87","type":""}]},{"body":{"nativeSrc":"3188:16:87","nodeType":"YulBlock","src":"3188:16:87","statements":[{"expression":{"arguments":[{"kind":"number","nativeSrc":"3197:1:87","nodeType":"YulLiteral","src":"3197:1:87","type":"","value":"0"},{"kind":"number","nativeSrc":"3200:1:87","nodeType":"YulLiteral","src":"3200:1:87","type":"","value":"0"}],"functionName":{"name":"revert","nativeSrc":"3190:6:87","nodeType":"YulIdentifier","src":"3190:6:87"},"nativeSrc":"3190:12:87","nodeType":"YulFunctionCall","src":"3190:12:87"},"nativeSrc":"3190:12:87","nodeType":"YulExpressionStatement","src":"3190:12:87"}]},"condition":{"arguments":[{"name":"offset","nativeSrc":"3160:6:87","nodeType":"YulIdentifier","src":"3160:6:87"},{"kind":"number","nativeSrc":"3168:18:87","nodeType":"YulLiteral","src":"3168:18:87","type":"","value":"0xffffffffffffffff"}],"functionName":{"name":"gt","nativeSrc":"3157:2:87","nodeType":"YulIdentifier","src":"3157:2:87"},"nativeSrc":"3157:30:87","nodeType":"YulFunctionCall","src":"3157:30:87"},"nativeSrc":"3154:50:87","nodeType":"YulIf","src":"3154:50:87"},{"nativeSrc":"3213:32:87","nodeType":"YulVariableDeclaration","src":"3213:32:87","value":{"arguments":[{"name":"headStart","nativeSrc":"3227:9:87","nodeType":"YulIdentifier","src":"3227:9:87"},{"name":"offset","nativeSrc":"3238:6:87","nodeType":"YulIdentifier","src":"3238:6:87"}],"functionName":{"name":"add","nativeSrc":"3223:3:87","nodeType":"YulIdentifier","src":"3223:3:87"},"nativeSrc":"3223:22:87","nodeType":"YulFunctionCall","src":"3223:22:87"},"variables":[{"name":"_1","nativeSrc":"3217:2:87","nodeType":"YulTypedName","src":"3217:2:87","type":""}]},{"body":{"nativeSrc":"3293:16:87","nodeType":"YulBlock","src":"3293:16:87","statements":[{"expression":{"arguments":[{"kind":"number","nativeSrc":"3302:1:87","nodeType":"YulLiteral","src":"3302:1:87","type":"","value":"0"},{"kind":"number","nativeSrc":"3305:1:87","nodeType":"YulLiteral","src":"3305:1:87","type":"","value":"0"}],"functionName":{"name":"revert","nativeSrc":"3295:6:87","nodeType":"YulIdentifier","src":"3295:6:87"},"nativeSrc":"3295:12:87","nodeType":"YulFunctionCall","src":"3295:12:87"},"nativeSrc":"3295:12:87","nodeType":"YulExpressionStatement","src":"3295:12:87"}]},"condition":{"arguments":[{"arguments":[{"arguments":[{"name":"_1","nativeSrc":"3272:2:87","nodeType":"YulIdentifier","src":"3272:2:87"},{"kind":"number","nativeSrc":"3276:4:87","nodeType":"YulLiteral","src":"3276:4:87","type":"","value":"0x1f"}],"functionName":{"name":"add","nativeSrc":"3268:3:87","nodeType":"YulIdentifier","src":"3268:3:87"},"nativeSrc":"3268:13:87","nodeType":"YulFunctionCall","src":"3268:13:87"},{"name":"dataEnd","nativeSrc":"3283:7:87","nodeType":"YulIdentifier","src":"3283:7:87"}],"functionName":{"name":"slt","nativeSrc":"3264:3:87","nodeType":"YulIdentifier","src":"3264:3:87"},"nativeSrc":"3264:27:87","nodeType":"YulFunctionCall","src":"3264:27:87"}],"functionName":{"name":"iszero","nativeSrc":"3257:6:87","nodeType":"YulIdentifier","src":"3257:6:87"},"nativeSrc":"3257:35:87","nodeType":"YulFunctionCall","src":"3257:35:87"},"nativeSrc":"3254:55:87","nodeType":"YulIf","src":"3254:55:87"},{"nativeSrc":"3318:30:87","nodeType":"YulVariableDeclaration","src":"3318:30:87","value":{"arguments":[{"name":"_1","nativeSrc":"3345:2:87","nodeType":"YulIdentifier","src":"3345:2:87"}],"functionName":{"name":"calldataload","nativeSrc":"3332:12:87","nodeType":"YulIdentifier","src":"3332:12:87"},"nativeSrc":"3332:16:87","nodeType":"YulFunctionCall","src":"3332:16:87"},"variables":[{"name":"length","nativeSrc":"3322:6:87","nodeType":"YulTypedName","src":"3322:6:87","type":""}]},{"body":{"nativeSrc":"3391:16:87","nodeType":"YulBlock","src":"3391:16:87","statements":[{"expression":{"arguments":[{"kind":"number","nativeSrc":"3400:1:87","nodeType":"YulLiteral","src":"3400:1:87","type":"","value":"0"},{"kind":"number","nativeSrc":"3403:1:87","nodeType":"YulLiteral","src":"3403:1:87","type":"","value":"0"}],"functionName":{"name":"revert","nativeSrc":"3393:6:87","nodeType":"YulIdentifier","src":"3393:6:87"},"nativeSrc":"3393:12:87","nodeType":"YulFunctionCall","src":"3393:12:87"},"nativeSrc":"3393:12:87","nodeType":"YulExpressionStatement","src":"3393:12:87"}]},"condition":{"arguments":[{"name":"length","nativeSrc":"3363:6:87","nodeType":"YulIdentifier","src":"3363:6:87"},{"kind":"number","nativeSrc":"3371:18:87","nodeType":"YulLiteral","src":"3371:18:87","type":"","value":"0xffffffffffffffff"}],"functionName":{"name":"gt","nativeSrc":"3360:2:87","nodeType":"YulIdentifier","src":"3360:2:87"},"nativeSrc":"3360:30:87","nodeType":"YulFunctionCall","src":"3360:30:87"},"nativeSrc":"3357:50:87","nodeType":"YulIf","src":"3357:50:87"},{"body":{"nativeSrc":"3457:16:87","nodeType":"YulBlock","src":"3457:16:87","statements":[{"expression":{"arguments":[{"kind":"number","nativeSrc":"3466:1:87","nodeType":"YulLiteral","src":"3466:1:87","type":"","value":"0"},{"kind":"number","nativeSrc":"3469:1:87","nodeType":"YulLiteral","src":"3469:1:87","type":"","value":"0"}],"functionName":{"name":"revert","nativeSrc":"3459:6:87","nodeType":"YulIdentifier","src":"3459:6:87"},"nativeSrc":"3459:12:87","nodeType":"YulFunctionCall","src":"3459:12:87"},"nativeSrc":"3459:12:87","nodeType":"YulExpressionStatement","src":"3459:12:87"}]},"condition":{"arguments":[{"arguments":[{"arguments":[{"name":"_1","nativeSrc":"3430:2:87","nodeType":"YulIdentifier","src":"3430:2:87"},{"name":"length","nativeSrc":"3434:6:87","nodeType":"YulIdentifier","src":"3434:6:87"}],"functionName":{"name":"add","nativeSrc":"3426:3:87","nodeType":"YulIdentifier","src":"3426:3:87"},"nativeSrc":"3426:15:87","nodeType":"YulFunctionCall","src":"3426:15:87"},{"kind":"number","nativeSrc":"3443:2:87","nodeType":"YulLiteral","src":"3443:2:87","type":"","value":"32"}],"functionName":{"name":"add","nativeSrc":"3422:3:87","nodeType":"YulIdentifier","src":"3422:3:87"},"nativeSrc":"3422:24:87","nodeType":"YulFunctionCall","src":"3422:24:87"},{"name":"dataEnd","nativeSrc":"3448:7:87","nodeType":"YulIdentifier","src":"3448:7:87"}],"functionName":{"name":"gt","nativeSrc":"3419:2:87","nodeType":"YulIdentifier","src":"3419:2:87"},"nativeSrc":"3419:37:87","nodeType":"YulFunctionCall","src":"3419:37:87"},"nativeSrc":"3416:57:87","nodeType":"YulIf","src":"3416:57:87"},{"nativeSrc":"3482:21:87","nodeType":"YulAssignment","src":"3482:21:87","value":{"arguments":[{"name":"_1","nativeSrc":"3496:2:87","nodeType":"YulIdentifier","src":"3496:2:87"},{"kind":"number","nativeSrc":"3500:2:87","nodeType":"YulLiteral","src":"3500:2:87","type":"","value":"32"}],"functionName":{"name":"add","nativeSrc":"3492:3:87","nodeType":"YulIdentifier","src":"3492:3:87"},"nativeSrc":"3492:11:87","nodeType":"YulFunctionCall","src":"3492:11:87"},"variableNames":[{"name":"value2","nativeSrc":"3482:6:87","nodeType":"YulIdentifier","src":"3482:6:87"}]},{"nativeSrc":"3512:16:87","nodeType":"YulAssignment","src":"3512:16:87","value":{"name":"length","nativeSrc":"3522:6:87","nodeType":"YulIdentifier","src":"3522:6:87"},"variableNames":[{"name":"value3","nativeSrc":"3512:6:87","nodeType":"YulIdentifier","src":"3512:6:87"}]}]},"name":"abi_decode_tuple_t_int256t_int256t_bytes_calldata_ptr","nativeSrc":"2716:818:87","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nativeSrc":"2779:9:87","nodeType":"YulTypedName","src":"2779:9:87","type":""},{"name":"dataEnd","nativeSrc":"2790:7:87","nodeType":"YulTypedName","src":"2790:7:87","type":""}],"returnVariables":[{"name":"value0","nativeSrc":"2802:6:87","nodeType":"YulTypedName","src":"2802:6:87","type":""},{"name":"value1","nativeSrc":"2810:6:87","nodeType":"YulTypedName","src":"2810:6:87","type":""},{"name":"value2","nativeSrc":"2818:6:87","nodeType":"YulTypedName","src":"2818:6:87","type":""},{"name":"value3","nativeSrc":"2826:6:87","nodeType":"YulTypedName","src":"2826:6:87","type":""}],"src":"2716:818:87"},{"body":{"nativeSrc":"3609:116:87","nodeType":"YulBlock","src":"3609:116:87","statements":[{"body":{"nativeSrc":"3655:16:87","nodeType":"YulBlock","src":"3655:16:87","statements":[{"expression":{"arguments":[{"kind":"number","nativeSrc":"3664:1:87","nodeType":"YulLiteral","src":"3664:1:87","type":"","value":"0"},{"kind":"number","nativeSrc":"3667:1:87","nodeType":"YulLiteral","src":"3667:1:87","type":"","value":"0"}],"functionName":{"name":"revert","nativeSrc":"3657:6:87","nodeType":"YulIdentifier","src":"3657:6:87"},"nativeSrc":"3657:12:87","nodeType":"YulFunctionCall","src":"3657:12:87"},"nativeSrc":"3657:12:87","nodeType":"YulExpressionStatement","src":"3657:12:87"}]},"condition":{"arguments":[{"arguments":[{"name":"dataEnd","nativeSrc":"3630:7:87","nodeType":"YulIdentifier","src":"3630:7:87"},{"name":"headStart","nativeSrc":"3639:9:87","nodeType":"YulIdentifier","src":"3639:9:87"}],"functionName":{"name":"sub","nativeSrc":"3626:3:87","nodeType":"YulIdentifier","src":"3626:3:87"},"nativeSrc":"3626:23:87","nodeType":"YulFunctionCall","src":"3626:23:87"},{"kind":"number","nativeSrc":"3651:2:87","nodeType":"YulLiteral","src":"3651:2:87","type":"","value":"32"}],"functionName":{"name":"slt","nativeSrc":"3622:3:87","nodeType":"YulIdentifier","src":"3622:3:87"},"nativeSrc":"3622:32:87","nodeType":"YulFunctionCall","src":"3622:32:87"},"nativeSrc":"3619:52:87","nodeType":"YulIf","src":"3619:52:87"},{"nativeSrc":"3680:39:87","nodeType":"YulAssignment","src":"3680:39:87","value":{"arguments":[{"name":"headStart","nativeSrc":"3709:9:87","nodeType":"YulIdentifier","src":"3709:9:87"}],"functionName":{"name":"abi_decode_address","nativeSrc":"3690:18:87","nodeType":"YulIdentifier","src":"3690:18:87"},"nativeSrc":"3690:29:87","nodeType":"YulFunctionCall","src":"3690:29:87"},"variableNames":[{"name":"value0","nativeSrc":"3680:6:87","nodeType":"YulIdentifier","src":"3680:6:87"}]}]},"name":"abi_decode_tuple_t_address","nativeSrc":"3539:186:87","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nativeSrc":"3575:9:87","nodeType":"YulTypedName","src":"3575:9:87","type":""},{"name":"dataEnd","nativeSrc":"3586:7:87","nodeType":"YulTypedName","src":"3586:7:87","type":""}],"returnVariables":[{"name":"value0","nativeSrc":"3598:6:87","nodeType":"YulTypedName","src":"3598:6:87","type":""}],"src":"3539:186:87"},{"body":{"nativeSrc":"3762:95:87","nodeType":"YulBlock","src":"3762:95:87","statements":[{"expression":{"arguments":[{"kind":"number","nativeSrc":"3779:1:87","nodeType":"YulLiteral","src":"3779:1:87","type":"","value":"0"},{"arguments":[{"kind":"number","nativeSrc":"3786:3:87","nodeType":"YulLiteral","src":"3786:3:87","type":"","value":"224"},{"kind":"number","nativeSrc":"3791:10:87","nodeType":"YulLiteral","src":"3791:10:87","type":"","value":"0x4e487b71"}],"functionName":{"name":"shl","nativeSrc":"3782:3:87","nodeType":"YulIdentifier","src":"3782:3:87"},"nativeSrc":"3782:20:87","nodeType":"YulFunctionCall","src":"3782:20:87"}],"functionName":{"name":"mstore","nativeSrc":"3772:6:87","nodeType":"YulIdentifier","src":"3772:6:87"},"nativeSrc":"3772:31:87","nodeType":"YulFunctionCall","src":"3772:31:87"},"nativeSrc":"3772:31:87","nodeType":"YulExpressionStatement","src":"3772:31:87"},{"expression":{"arguments":[{"kind":"number","nativeSrc":"3819:1:87","nodeType":"YulLiteral","src":"3819:1:87","type":"","value":"4"},{"kind":"number","nativeSrc":"3822:4:87","nodeType":"YulLiteral","src":"3822:4:87","type":"","value":"0x11"}],"functionName":{"name":"mstore","nativeSrc":"3812:6:87","nodeType":"YulIdentifier","src":"3812:6:87"},"nativeSrc":"3812:15:87","nodeType":"YulFunctionCall","src":"3812:15:87"},"nativeSrc":"3812:15:87","nodeType":"YulExpressionStatement","src":"3812:15:87"},{"expression":{"arguments":[{"kind":"number","nativeSrc":"3843:1:87","nodeType":"YulLiteral","src":"3843:1:87","type":"","value":"0"},{"kind":"number","nativeSrc":"3846:4:87","nodeType":"YulLiteral","src":"3846:4:87","type":"","value":"0x24"}],"functionName":{"name":"revert","nativeSrc":"3836:6:87","nodeType":"YulIdentifier","src":"3836:6:87"},"nativeSrc":"3836:15:87","nodeType":"YulFunctionCall","src":"3836:15:87"},"nativeSrc":"3836:15:87","nodeType":"YulExpressionStatement","src":"3836:15:87"}]},"name":"panic_error_0x11","nativeSrc":"3730:127:87","nodeType":"YulFunctionDefinition","src":"3730:127:87"},{"body":{"nativeSrc":"3914:116:87","nodeType":"YulBlock","src":"3914:116:87","statements":[{"nativeSrc":"3924:20:87","nodeType":"YulAssignment","src":"3924:20:87","value":{"arguments":[{"name":"x","nativeSrc":"3939:1:87","nodeType":"YulIdentifier","src":"3939:1:87"},{"name":"y","nativeSrc":"3942:1:87","nodeType":"YulIdentifier","src":"3942:1:87"}],"functionName":{"name":"mul","nativeSrc":"3935:3:87","nodeType":"YulIdentifier","src":"3935:3:87"},"nativeSrc":"3935:9:87","nodeType":"YulFunctionCall","src":"3935:9:87"},"variableNames":[{"name":"product","nativeSrc":"3924:7:87","nodeType":"YulIdentifier","src":"3924:7:87"}]},{"body":{"nativeSrc":"4002:22:87","nodeType":"YulBlock","src":"4002:22:87","statements":[{"expression":{"arguments":[],"functionName":{"name":"panic_error_0x11","nativeSrc":"4004:16:87","nodeType":"YulIdentifier","src":"4004:16:87"},"nativeSrc":"4004:18:87","nodeType":"YulFunctionCall","src":"4004:18:87"},"nativeSrc":"4004:18:87","nodeType":"YulExpressionStatement","src":"4004:18:87"}]},"condition":{"arguments":[{"arguments":[{"arguments":[{"name":"x","nativeSrc":"3973:1:87","nodeType":"YulIdentifier","src":"3973:1:87"}],"functionName":{"name":"iszero","nativeSrc":"3966:6:87","nodeType":"YulIdentifier","src":"3966:6:87"},"nativeSrc":"3966:9:87","nodeType":"YulFunctionCall","src":"3966:9:87"},{"arguments":[{"name":"y","nativeSrc":"3980:1:87","nodeType":"YulIdentifier","src":"3980:1:87"},{"arguments":[{"name":"product","nativeSrc":"3987:7:87","nodeType":"YulIdentifier","src":"3987:7:87"},{"name":"x","nativeSrc":"3996:1:87","nodeType":"YulIdentifier","src":"3996:1:87"}],"functionName":{"name":"div","nativeSrc":"3983:3:87","nodeType":"YulIdentifier","src":"3983:3:87"},"nativeSrc":"3983:15:87","nodeType":"YulFunctionCall","src":"3983:15:87"}],"functionName":{"name":"eq","nativeSrc":"3977:2:87","nodeType":"YulIdentifier","src":"3977:2:87"},"nativeSrc":"3977:22:87","nodeType":"YulFunctionCall","src":"3977:22:87"}],"functionName":{"name":"or","nativeSrc":"3963:2:87","nodeType":"YulIdentifier","src":"3963:2:87"},"nativeSrc":"3963:37:87","nodeType":"YulFunctionCall","src":"3963:37:87"}],"functionName":{"name":"iszero","nativeSrc":"3956:6:87","nodeType":"YulIdentifier","src":"3956:6:87"},"nativeSrc":"3956:45:87","nodeType":"YulFunctionCall","src":"3956:45:87"},"nativeSrc":"3953:71:87","nodeType":"YulIf","src":"3953:71:87"}]},"name":"checked_mul_t_uint256","nativeSrc":"3862:168:87","nodeType":"YulFunctionDefinition","parameters":[{"name":"x","nativeSrc":"3893:1:87","nodeType":"YulTypedName","src":"3893:1:87","type":""},{"name":"y","nativeSrc":"3896:1:87","nodeType":"YulTypedName","src":"3896:1:87","type":""}],"returnVariables":[{"name":"product","nativeSrc":"3902:7:87","nodeType":"YulTypedName","src":"3902:7:87","type":""}],"src":"3862:168:87"},{"body":{"nativeSrc":"4067:95:87","nodeType":"YulBlock","src":"4067:95:87","statements":[{"expression":{"arguments":[{"kind":"number","nativeSrc":"4084:1:87","nodeType":"YulLiteral","src":"4084:1:87","type":"","value":"0"},{"arguments":[{"kind":"number","nativeSrc":"4091:3:87","nodeType":"YulLiteral","src":"4091:3:87","type":"","value":"224"},{"kind":"number","nativeSrc":"4096:10:87","nodeType":"YulLiteral","src":"4096:10:87","type":"","value":"0x4e487b71"}],"functionName":{"name":"shl","nativeSrc":"4087:3:87","nodeType":"YulIdentifier","src":"4087:3:87"},"nativeSrc":"4087:20:87","nodeType":"YulFunctionCall","src":"4087:20:87"}],"functionName":{"name":"mstore","nativeSrc":"4077:6:87","nodeType":"YulIdentifier","src":"4077:6:87"},"nativeSrc":"4077:31:87","nodeType":"YulFunctionCall","src":"4077:31:87"},"nativeSrc":"4077:31:87","nodeType":"YulExpressionStatement","src":"4077:31:87"},{"expression":{"arguments":[{"kind":"number","nativeSrc":"4124:1:87","nodeType":"YulLiteral","src":"4124:1:87","type":"","value":"4"},{"kind":"number","nativeSrc":"4127:4:87","nodeType":"YulLiteral","src":"4127:4:87","type":"","value":"0x12"}],"functionName":{"name":"mstore","nativeSrc":"4117:6:87","nodeType":"YulIdentifier","src":"4117:6:87"},"nativeSrc":"4117:15:87","nodeType":"YulFunctionCall","src":"4117:15:87"},"nativeSrc":"4117:15:87","nodeType":"YulExpressionStatement","src":"4117:15:87"},{"expression":{"arguments":[{"kind":"number","nativeSrc":"4148:1:87","nodeType":"YulLiteral","src":"4148:1:87","type":"","value":"0"},{"kind":"number","nativeSrc":"4151:4:87","nodeType":"YulLiteral","src":"4151:4:87","type":"","value":"0x24"}],"functionName":{"name":"revert","nativeSrc":"4141:6:87","nodeType":"YulIdentifier","src":"4141:6:87"},"nativeSrc":"4141:15:87","nodeType":"YulFunctionCall","src":"4141:15:87"},"nativeSrc":"4141:15:87","nodeType":"YulExpressionStatement","src":"4141:15:87"}]},"name":"panic_error_0x12","nativeSrc":"4035:127:87","nodeType":"YulFunctionDefinition","src":"4035:127:87"},{"body":{"nativeSrc":"4213:171:87","nodeType":"YulBlock","src":"4213:171:87","statements":[{"body":{"nativeSrc":"4244:111:87","nodeType":"YulBlock","src":"4244:111:87","statements":[{"expression":{"arguments":[{"kind":"number","nativeSrc":"4265:1:87","nodeType":"YulLiteral","src":"4265:1:87","type":"","value":"0"},{"arguments":[{"kind":"number","nativeSrc":"4272:3:87","nodeType":"YulLiteral","src":"4272:3:87","type":"","value":"224"},{"kind":"number","nativeSrc":"4277:10:87","nodeType":"YulLiteral","src":"4277:10:87","type":"","value":"0x4e487b71"}],"functionName":{"name":"shl","nativeSrc":"4268:3:87","nodeType":"YulIdentifier","src":"4268:3:87"},"nativeSrc":"4268:20:87","nodeType":"YulFunctionCall","src":"4268:20:87"}],"functionName":{"name":"mstore","nativeSrc":"4258:6:87","nodeType":"YulIdentifier","src":"4258:6:87"},"nativeSrc":"4258:31:87","nodeType":"YulFunctionCall","src":"4258:31:87"},"nativeSrc":"4258:31:87","nodeType":"YulExpressionStatement","src":"4258:31:87"},{"expression":{"arguments":[{"kind":"number","nativeSrc":"4309:1:87","nodeType":"YulLiteral","src":"4309:1:87","type":"","value":"4"},{"kind":"number","nativeSrc":"4312:4:87","nodeType":"YulLiteral","src":"4312:4:87","type":"","value":"0x12"}],"functionName":{"name":"mstore","nativeSrc":"4302:6:87","nodeType":"YulIdentifier","src":"4302:6:87"},"nativeSrc":"4302:15:87","nodeType":"YulFunctionCall","src":"4302:15:87"},"nativeSrc":"4302:15:87","nodeType":"YulExpressionStatement","src":"4302:15:87"},{"expression":{"arguments":[{"kind":"number","nativeSrc":"4337:1:87","nodeType":"YulLiteral","src":"4337:1:87","type":"","value":"0"},{"kind":"number","nativeSrc":"4340:4:87","nodeType":"YulLiteral","src":"4340:4:87","type":"","value":"0x24"}],"functionName":{"name":"revert","nativeSrc":"4330:6:87","nodeType":"YulIdentifier","src":"4330:6:87"},"nativeSrc":"4330:15:87","nodeType":"YulFunctionCall","src":"4330:15:87"},"nativeSrc":"4330:15:87","nodeType":"YulExpressionStatement","src":"4330:15:87"}]},"condition":{"arguments":[{"name":"y","nativeSrc":"4233:1:87","nodeType":"YulIdentifier","src":"4233:1:87"}],"functionName":{"name":"iszero","nativeSrc":"4226:6:87","nodeType":"YulIdentifier","src":"4226:6:87"},"nativeSrc":"4226:9:87","nodeType":"YulFunctionCall","src":"4226:9:87"},"nativeSrc":"4223:132:87","nodeType":"YulIf","src":"4223:132:87"},{"nativeSrc":"4364:14:87","nodeType":"YulAssignment","src":"4364:14:87","value":{"arguments":[{"name":"x","nativeSrc":"4373:1:87","nodeType":"YulIdentifier","src":"4373:1:87"},{"name":"y","nativeSrc":"4376:1:87","nodeType":"YulIdentifier","src":"4376:1:87"}],"functionName":{"name":"div","nativeSrc":"4369:3:87","nodeType":"YulIdentifier","src":"4369:3:87"},"nativeSrc":"4369:9:87","nodeType":"YulFunctionCall","src":"4369:9:87"},"variableNames":[{"name":"r","nativeSrc":"4364:1:87","nodeType":"YulIdentifier","src":"4364:1:87"}]}]},"name":"checked_div_t_uint256","nativeSrc":"4167:217:87","nodeType":"YulFunctionDefinition","parameters":[{"name":"x","nativeSrc":"4198:1:87","nodeType":"YulTypedName","src":"4198:1:87","type":""},{"name":"y","nativeSrc":"4201:1:87","nodeType":"YulTypedName","src":"4201:1:87","type":""}],"returnVariables":[{"name":"r","nativeSrc":"4207:1:87","nodeType":"YulTypedName","src":"4207:1:87","type":""}],"src":"4167:217:87"},{"body":{"nativeSrc":"4518:119:87","nodeType":"YulBlock","src":"4518:119:87","statements":[{"nativeSrc":"4528:26:87","nodeType":"YulAssignment","src":"4528:26:87","value":{"arguments":[{"name":"headStart","nativeSrc":"4540:9:87","nodeType":"YulIdentifier","src":"4540:9:87"},{"kind":"number","nativeSrc":"4551:2:87","nodeType":"YulLiteral","src":"4551:2:87","type":"","value":"64"}],"functionName":{"name":"add","nativeSrc":"4536:3:87","nodeType":"YulIdentifier","src":"4536:3:87"},"nativeSrc":"4536:18:87","nodeType":"YulFunctionCall","src":"4536:18:87"},"variableNames":[{"name":"tail","nativeSrc":"4528:4:87","nodeType":"YulIdentifier","src":"4528:4:87"}]},{"expression":{"arguments":[{"name":"headStart","nativeSrc":"4570:9:87","nodeType":"YulIdentifier","src":"4570:9:87"},{"name":"value0","nativeSrc":"4581:6:87","nodeType":"YulIdentifier","src":"4581:6:87"}],"functionName":{"name":"mstore","nativeSrc":"4563:6:87","nodeType":"YulIdentifier","src":"4563:6:87"},"nativeSrc":"4563:25:87","nodeType":"YulFunctionCall","src":"4563:25:87"},"nativeSrc":"4563:25:87","nodeType":"YulExpressionStatement","src":"4563:25:87"},{"expression":{"arguments":[{"arguments":[{"name":"headStart","nativeSrc":"4608:9:87","nodeType":"YulIdentifier","src":"4608:9:87"},{"kind":"number","nativeSrc":"4619:2:87","nodeType":"YulLiteral","src":"4619:2:87","type":"","value":"32"}],"functionName":{"name":"add","nativeSrc":"4604:3:87","nodeType":"YulIdentifier","src":"4604:3:87"},"nativeSrc":"4604:18:87","nodeType":"YulFunctionCall","src":"4604:18:87"},{"name":"value1","nativeSrc":"4624:6:87","nodeType":"YulIdentifier","src":"4624:6:87"}],"functionName":{"name":"mstore","nativeSrc":"4597:6:87","nodeType":"YulIdentifier","src":"4597:6:87"},"nativeSrc":"4597:34:87","nodeType":"YulFunctionCall","src":"4597:34:87"},"nativeSrc":"4597:34:87","nodeType":"YulExpressionStatement","src":"4597:34:87"}]},"name":"abi_encode_tuple_t_uint256_t_uint256__to_t_uint256_t_uint256__fromStack_reversed","nativeSrc":"4389:248:87","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nativeSrc":"4479:9:87","nodeType":"YulTypedName","src":"4479:9:87","type":""},{"name":"value1","nativeSrc":"4490:6:87","nodeType":"YulTypedName","src":"4490:6:87","type":""},{"name":"value0","nativeSrc":"4498:6:87","nodeType":"YulTypedName","src":"4498:6:87","type":""}],"returnVariables":[{"name":"tail","nativeSrc":"4509:4:87","nodeType":"YulTypedName","src":"4509:4:87","type":""}],"src":"4389:248:87"},{"body":{"nativeSrc":"4799:214:87","nodeType":"YulBlock","src":"4799:214:87","statements":[{"nativeSrc":"4809:26:87","nodeType":"YulAssignment","src":"4809:26:87","value":{"arguments":[{"name":"headStart","nativeSrc":"4821:9:87","nodeType":"YulIdentifier","src":"4821:9:87"},{"kind":"number","nativeSrc":"4832:2:87","nodeType":"YulLiteral","src":"4832:2:87","type":"","value":"96"}],"functionName":{"name":"add","nativeSrc":"4817:3:87","nodeType":"YulIdentifier","src":"4817:3:87"},"nativeSrc":"4817:18:87","nodeType":"YulFunctionCall","src":"4817:18:87"},"variableNames":[{"name":"tail","nativeSrc":"4809:4:87","nodeType":"YulIdentifier","src":"4809:4:87"}]},{"expression":{"arguments":[{"name":"headStart","nativeSrc":"4851:9:87","nodeType":"YulIdentifier","src":"4851:9:87"},{"arguments":[{"name":"value0","nativeSrc":"4866:6:87","nodeType":"YulIdentifier","src":"4866:6:87"},{"arguments":[{"arguments":[{"kind":"number","nativeSrc":"4882:3:87","nodeType":"YulLiteral","src":"4882:3:87","type":"","value":"160"},{"kind":"number","nativeSrc":"4887:1:87","nodeType":"YulLiteral","src":"4887:1:87","type":"","value":"1"}],"functionName":{"name":"shl","nativeSrc":"4878:3:87","nodeType":"YulIdentifier","src":"4878:3:87"},"nativeSrc":"4878:11:87","nodeType":"YulFunctionCall","src":"4878:11:87"},{"kind":"number","nativeSrc":"4891:1:87","nodeType":"YulLiteral","src":"4891:1:87","type":"","value":"1"}],"functionName":{"name":"sub","nativeSrc":"4874:3:87","nodeType":"YulIdentifier","src":"4874:3:87"},"nativeSrc":"4874:19:87","nodeType":"YulFunctionCall","src":"4874:19:87"}],"functionName":{"name":"and","nativeSrc":"4862:3:87","nodeType":"YulIdentifier","src":"4862:3:87"},"nativeSrc":"4862:32:87","nodeType":"YulFunctionCall","src":"4862:32:87"}],"functionName":{"name":"mstore","nativeSrc":"4844:6:87","nodeType":"YulIdentifier","src":"4844:6:87"},"nativeSrc":"4844:51:87","nodeType":"YulFunctionCall","src":"4844:51:87"},"nativeSrc":"4844:51:87","nodeType":"YulExpressionStatement","src":"4844:51:87"},{"expression":{"arguments":[{"arguments":[{"name":"headStart","nativeSrc":"4915:9:87","nodeType":"YulIdentifier","src":"4915:9:87"},{"kind":"number","nativeSrc":"4926:2:87","nodeType":"YulLiteral","src":"4926:2:87","type":"","value":"32"}],"functionName":{"name":"add","nativeSrc":"4911:3:87","nodeType":"YulIdentifier","src":"4911:3:87"},"nativeSrc":"4911:18:87","nodeType":"YulFunctionCall","src":"4911:18:87"},{"arguments":[{"name":"value1","nativeSrc":"4935:6:87","nodeType":"YulIdentifier","src":"4935:6:87"},{"arguments":[{"arguments":[{"kind":"number","nativeSrc":"4951:3:87","nodeType":"YulLiteral","src":"4951:3:87","type":"","value":"160"},{"kind":"number","nativeSrc":"4956:1:87","nodeType":"YulLiteral","src":"4956:1:87","type":"","value":"1"}],"functionName":{"name":"shl","nativeSrc":"4947:3:87","nodeType":"YulIdentifier","src":"4947:3:87"},"nativeSrc":"4947:11:87","nodeType":"YulFunctionCall","src":"4947:11:87"},{"kind":"number","nativeSrc":"4960:1:87","nodeType":"YulLiteral","src":"4960:1:87","type":"","value":"1"}],"functionName":{"name":"sub","nativeSrc":"4943:3:87","nodeType":"YulIdentifier","src":"4943:3:87"},"nativeSrc":"4943:19:87","nodeType":"YulFunctionCall","src":"4943:19:87"}],"functionName":{"name":"and","nativeSrc":"4931:3:87","nodeType":"YulIdentifier","src":"4931:3:87"},"nativeSrc":"4931:32:87","nodeType":"YulFunctionCall","src":"4931:32:87"}],"functionName":{"name":"mstore","nativeSrc":"4904:6:87","nodeType":"YulIdentifier","src":"4904:6:87"},"nativeSrc":"4904:60:87","nodeType":"YulFunctionCall","src":"4904:60:87"},"nativeSrc":"4904:60:87","nodeType":"YulExpressionStatement","src":"4904:60:87"},{"expression":{"arguments":[{"arguments":[{"name":"headStart","nativeSrc":"4984:9:87","nodeType":"YulIdentifier","src":"4984:9:87"},{"kind":"number","nativeSrc":"4995:2:87","nodeType":"YulLiteral","src":"4995:2:87","type":"","value":"64"}],"functionName":{"name":"add","nativeSrc":"4980:3:87","nodeType":"YulIdentifier","src":"4980:3:87"},"nativeSrc":"4980:18:87","nodeType":"YulFunctionCall","src":"4980:18:87"},{"name":"value2","nativeSrc":"5000:6:87","nodeType":"YulIdentifier","src":"5000:6:87"}],"functionName":{"name":"mstore","nativeSrc":"4973:6:87","nodeType":"YulIdentifier","src":"4973:6:87"},"nativeSrc":"4973:34:87","nodeType":"YulFunctionCall","src":"4973:34:87"},"nativeSrc":"4973:34:87","nodeType":"YulExpressionStatement","src":"4973:34:87"}]},"name":"abi_encode_tuple_t_address_t_address_t_uint256__to_t_address_t_address_t_uint256__fromStack_reversed","nativeSrc":"4642:371:87","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nativeSrc":"4752:9:87","nodeType":"YulTypedName","src":"4752:9:87","type":""},{"name":"value2","nativeSrc":"4763:6:87","nodeType":"YulTypedName","src":"4763:6:87","type":""},{"name":"value1","nativeSrc":"4771:6:87","nodeType":"YulTypedName","src":"4771:6:87","type":""},{"name":"value0","nativeSrc":"4779:6:87","nodeType":"YulTypedName","src":"4779:6:87","type":""}],"returnVariables":[{"name":"tail","nativeSrc":"4790:4:87","nodeType":"YulTypedName","src":"4790:4:87","type":""}],"src":"4642:371:87"},{"body":{"nativeSrc":"5119:102:87","nodeType":"YulBlock","src":"5119:102:87","statements":[{"nativeSrc":"5129:26:87","nodeType":"YulAssignment","src":"5129:26:87","value":{"arguments":[{"name":"headStart","nativeSrc":"5141:9:87","nodeType":"YulIdentifier","src":"5141:9:87"},{"kind":"number","nativeSrc":"5152:2:87","nodeType":"YulLiteral","src":"5152:2:87","type":"","value":"32"}],"functionName":{"name":"add","nativeSrc":"5137:3:87","nodeType":"YulIdentifier","src":"5137:3:87"},"nativeSrc":"5137:18:87","nodeType":"YulFunctionCall","src":"5137:18:87"},"variableNames":[{"name":"tail","nativeSrc":"5129:4:87","nodeType":"YulIdentifier","src":"5129:4:87"}]},{"expression":{"arguments":[{"name":"headStart","nativeSrc":"5171:9:87","nodeType":"YulIdentifier","src":"5171:9:87"},{"arguments":[{"name":"value0","nativeSrc":"5186:6:87","nodeType":"YulIdentifier","src":"5186:6:87"},{"arguments":[{"arguments":[{"kind":"number","nativeSrc":"5202:3:87","nodeType":"YulLiteral","src":"5202:3:87","type":"","value":"160"},{"kind":"number","nativeSrc":"5207:1:87","nodeType":"YulLiteral","src":"5207:1:87","type":"","value":"1"}],"functionName":{"name":"shl","nativeSrc":"5198:3:87","nodeType":"YulIdentifier","src":"5198:3:87"},"nativeSrc":"5198:11:87","nodeType":"YulFunctionCall","src":"5198:11:87"},{"kind":"number","nativeSrc":"5211:1:87","nodeType":"YulLiteral","src":"5211:1:87","type":"","value":"1"}],"functionName":{"name":"sub","nativeSrc":"5194:3:87","nodeType":"YulIdentifier","src":"5194:3:87"},"nativeSrc":"5194:19:87","nodeType":"YulFunctionCall","src":"5194:19:87"}],"functionName":{"name":"and","nativeSrc":"5182:3:87","nodeType":"YulIdentifier","src":"5182:3:87"},"nativeSrc":"5182:32:87","nodeType":"YulFunctionCall","src":"5182:32:87"}],"functionName":{"name":"mstore","nativeSrc":"5164:6:87","nodeType":"YulIdentifier","src":"5164:6:87"},"nativeSrc":"5164:51:87","nodeType":"YulFunctionCall","src":"5164:51:87"},"nativeSrc":"5164:51:87","nodeType":"YulExpressionStatement","src":"5164:51:87"}]},"name":"abi_encode_tuple_t_address__to_t_address__fromStack_reversed","nativeSrc":"5018:203:87","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nativeSrc":"5088:9:87","nodeType":"YulTypedName","src":"5088:9:87","type":""},{"name":"value0","nativeSrc":"5099:6:87","nodeType":"YulTypedName","src":"5099:6:87","type":""}],"returnVariables":[{"name":"tail","nativeSrc":"5110:4:87","nodeType":"YulTypedName","src":"5110:4:87","type":""}],"src":"5018:203:87"},{"body":{"nativeSrc":"5307:103:87","nodeType":"YulBlock","src":"5307:103:87","statements":[{"body":{"nativeSrc":"5353:16:87","nodeType":"YulBlock","src":"5353:16:87","statements":[{"expression":{"arguments":[{"kind":"number","nativeSrc":"5362:1:87","nodeType":"YulLiteral","src":"5362:1:87","type":"","value":"0"},{"kind":"number","nativeSrc":"5365:1:87","nodeType":"YulLiteral","src":"5365:1:87","type":"","value":"0"}],"functionName":{"name":"revert","nativeSrc":"5355:6:87","nodeType":"YulIdentifier","src":"5355:6:87"},"nativeSrc":"5355:12:87","nodeType":"YulFunctionCall","src":"5355:12:87"},"nativeSrc":"5355:12:87","nodeType":"YulExpressionStatement","src":"5355:12:87"}]},"condition":{"arguments":[{"arguments":[{"name":"dataEnd","nativeSrc":"5328:7:87","nodeType":"YulIdentifier","src":"5328:7:87"},{"name":"headStart","nativeSrc":"5337:9:87","nodeType":"YulIdentifier","src":"5337:9:87"}],"functionName":{"name":"sub","nativeSrc":"5324:3:87","nodeType":"YulIdentifier","src":"5324:3:87"},"nativeSrc":"5324:23:87","nodeType":"YulFunctionCall","src":"5324:23:87"},{"kind":"number","nativeSrc":"5349:2:87","nodeType":"YulLiteral","src":"5349:2:87","type":"","value":"32"}],"functionName":{"name":"slt","nativeSrc":"5320:3:87","nodeType":"YulIdentifier","src":"5320:3:87"},"nativeSrc":"5320:32:87","nodeType":"YulFunctionCall","src":"5320:32:87"},"nativeSrc":"5317:52:87","nodeType":"YulIf","src":"5317:52:87"},{"nativeSrc":"5378:26:87","nodeType":"YulAssignment","src":"5378:26:87","value":{"arguments":[{"name":"headStart","nativeSrc":"5394:9:87","nodeType":"YulIdentifier","src":"5394:9:87"}],"functionName":{"name":"mload","nativeSrc":"5388:5:87","nodeType":"YulIdentifier","src":"5388:5:87"},"nativeSrc":"5388:16:87","nodeType":"YulFunctionCall","src":"5388:16:87"},"variableNames":[{"name":"value0","nativeSrc":"5378:6:87","nodeType":"YulIdentifier","src":"5378:6:87"}]}]},"name":"abi_decode_tuple_t_uint256_fromMemory","nativeSrc":"5226:184:87","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nativeSrc":"5273:9:87","nodeType":"YulTypedName","src":"5273:9:87","type":""},{"name":"dataEnd","nativeSrc":"5284:7:87","nodeType":"YulTypedName","src":"5284:7:87","type":""}],"returnVariables":[{"name":"value0","nativeSrc":"5296:6:87","nodeType":"YulTypedName","src":"5296:6:87","type":""}],"src":"5226:184:87"},{"body":{"nativeSrc":"5494:194:87","nodeType":"YulBlock","src":"5494:194:87","statements":[{"body":{"nativeSrc":"5540:16:87","nodeType":"YulBlock","src":"5540:16:87","statements":[{"expression":{"arguments":[{"kind":"number","nativeSrc":"5549:1:87","nodeType":"YulLiteral","src":"5549:1:87","type":"","value":"0"},{"kind":"number","nativeSrc":"5552:1:87","nodeType":"YulLiteral","src":"5552:1:87","type":"","value":"0"}],"functionName":{"name":"revert","nativeSrc":"5542:6:87","nodeType":"YulIdentifier","src":"5542:6:87"},"nativeSrc":"5542:12:87","nodeType":"YulFunctionCall","src":"5542:12:87"},"nativeSrc":"5542:12:87","nodeType":"YulExpressionStatement","src":"5542:12:87"}]},"condition":{"arguments":[{"arguments":[{"name":"dataEnd","nativeSrc":"5515:7:87","nodeType":"YulIdentifier","src":"5515:7:87"},{"name":"headStart","nativeSrc":"5524:9:87","nodeType":"YulIdentifier","src":"5524:9:87"}],"functionName":{"name":"sub","nativeSrc":"5511:3:87","nodeType":"YulIdentifier","src":"5511:3:87"},"nativeSrc":"5511:23:87","nodeType":"YulFunctionCall","src":"5511:23:87"},{"kind":"number","nativeSrc":"5536:2:87","nodeType":"YulLiteral","src":"5536:2:87","type":"","value":"32"}],"functionName":{"name":"slt","nativeSrc":"5507:3:87","nodeType":"YulIdentifier","src":"5507:3:87"},"nativeSrc":"5507:32:87","nodeType":"YulFunctionCall","src":"5507:32:87"},"nativeSrc":"5504:52:87","nodeType":"YulIf","src":"5504:52:87"},{"nativeSrc":"5565:29:87","nodeType":"YulVariableDeclaration","src":"5565:29:87","value":{"arguments":[{"name":"headStart","nativeSrc":"5584:9:87","nodeType":"YulIdentifier","src":"5584:9:87"}],"functionName":{"name":"mload","nativeSrc":"5578:5:87","nodeType":"YulIdentifier","src":"5578:5:87"},"nativeSrc":"5578:16:87","nodeType":"YulFunctionCall","src":"5578:16:87"},"variables":[{"name":"value","nativeSrc":"5569:5:87","nodeType":"YulTypedName","src":"5569:5:87","type":""}]},{"body":{"nativeSrc":"5642:16:87","nodeType":"YulBlock","src":"5642:16:87","statements":[{"expression":{"arguments":[{"kind":"number","nativeSrc":"5651:1:87","nodeType":"YulLiteral","src":"5651:1:87","type":"","value":"0"},{"kind":"number","nativeSrc":"5654:1:87","nodeType":"YulLiteral","src":"5654:1:87","type":"","value":"0"}],"functionName":{"name":"revert","nativeSrc":"5644:6:87","nodeType":"YulIdentifier","src":"5644:6:87"},"nativeSrc":"5644:12:87","nodeType":"YulFunctionCall","src":"5644:12:87"},"nativeSrc":"5644:12:87","nodeType":"YulExpressionStatement","src":"5644:12:87"}]},"condition":{"arguments":[{"arguments":[{"name":"value","nativeSrc":"5616:5:87","nodeType":"YulIdentifier","src":"5616:5:87"},{"arguments":[{"name":"value","nativeSrc":"5627:5:87","nodeType":"YulIdentifier","src":"5627:5:87"},{"kind":"number","nativeSrc":"5634:4:87","nodeType":"YulLiteral","src":"5634:4:87","type":"","value":"0xff"}],"functionName":{"name":"and","nativeSrc":"5623:3:87","nodeType":"YulIdentifier","src":"5623:3:87"},"nativeSrc":"5623:16:87","nodeType":"YulFunctionCall","src":"5623:16:87"}],"functionName":{"name":"eq","nativeSrc":"5613:2:87","nodeType":"YulIdentifier","src":"5613:2:87"},"nativeSrc":"5613:27:87","nodeType":"YulFunctionCall","src":"5613:27:87"}],"functionName":{"name":"iszero","nativeSrc":"5606:6:87","nodeType":"YulIdentifier","src":"5606:6:87"},"nativeSrc":"5606:35:87","nodeType":"YulFunctionCall","src":"5606:35:87"},"nativeSrc":"5603:55:87","nodeType":"YulIf","src":"5603:55:87"},{"nativeSrc":"5667:15:87","nodeType":"YulAssignment","src":"5667:15:87","value":{"name":"value","nativeSrc":"5677:5:87","nodeType":"YulIdentifier","src":"5677:5:87"},"variableNames":[{"name":"value0","nativeSrc":"5667:6:87","nodeType":"YulIdentifier","src":"5667:6:87"}]}]},"name":"abi_decode_tuple_t_uint8_fromMemory","nativeSrc":"5415:273:87","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nativeSrc":"5460:9:87","nodeType":"YulTypedName","src":"5460:9:87","type":""},{"name":"dataEnd","nativeSrc":"5471:7:87","nodeType":"YulTypedName","src":"5471:7:87","type":""}],"returnVariables":[{"name":"value0","nativeSrc":"5483:6:87","nodeType":"YulTypedName","src":"5483:6:87","type":""}],"src":"5415:273:87"},{"body":{"nativeSrc":"5740:104:87","nodeType":"YulBlock","src":"5740:104:87","statements":[{"nativeSrc":"5750:39:87","nodeType":"YulAssignment","src":"5750:39:87","value":{"arguments":[{"arguments":[{"name":"x","nativeSrc":"5766:1:87","nodeType":"YulIdentifier","src":"5766:1:87"},{"kind":"number","nativeSrc":"5769:4:87","nodeType":"YulLiteral","src":"5769:4:87","type":"","value":"0xff"}],"functionName":{"name":"and","nativeSrc":"5762:3:87","nodeType":"YulIdentifier","src":"5762:3:87"},"nativeSrc":"5762:12:87","nodeType":"YulFunctionCall","src":"5762:12:87"},{"arguments":[{"name":"y","nativeSrc":"5780:1:87","nodeType":"YulIdentifier","src":"5780:1:87"},{"kind":"number","nativeSrc":"5783:4:87","nodeType":"YulLiteral","src":"5783:4:87","type":"","value":"0xff"}],"functionName":{"name":"and","nativeSrc":"5776:3:87","nodeType":"YulIdentifier","src":"5776:3:87"},"nativeSrc":"5776:12:87","nodeType":"YulFunctionCall","src":"5776:12:87"}],"functionName":{"name":"sub","nativeSrc":"5758:3:87","nodeType":"YulIdentifier","src":"5758:3:87"},"nativeSrc":"5758:31:87","nodeType":"YulFunctionCall","src":"5758:31:87"},"variableNames":[{"name":"diff","nativeSrc":"5750:4:87","nodeType":"YulIdentifier","src":"5750:4:87"}]},{"body":{"nativeSrc":"5816:22:87","nodeType":"YulBlock","src":"5816:22:87","statements":[{"expression":{"arguments":[],"functionName":{"name":"panic_error_0x11","nativeSrc":"5818:16:87","nodeType":"YulIdentifier","src":"5818:16:87"},"nativeSrc":"5818:18:87","nodeType":"YulFunctionCall","src":"5818:18:87"},"nativeSrc":"5818:18:87","nodeType":"YulExpressionStatement","src":"5818:18:87"}]},"condition":{"arguments":[{"name":"diff","nativeSrc":"5804:4:87","nodeType":"YulIdentifier","src":"5804:4:87"},{"kind":"number","nativeSrc":"5810:4:87","nodeType":"YulLiteral","src":"5810:4:87","type":"","value":"0xff"}],"functionName":{"name":"gt","nativeSrc":"5801:2:87","nodeType":"YulIdentifier","src":"5801:2:87"},"nativeSrc":"5801:14:87","nodeType":"YulFunctionCall","src":"5801:14:87"},"nativeSrc":"5798:40:87","nodeType":"YulIf","src":"5798:40:87"}]},"name":"checked_sub_t_uint8","nativeSrc":"5693:151:87","nodeType":"YulFunctionDefinition","parameters":[{"name":"x","nativeSrc":"5722:1:87","nodeType":"YulTypedName","src":"5722:1:87","type":""},{"name":"y","nativeSrc":"5725:1:87","nodeType":"YulTypedName","src":"5725:1:87","type":""}],"returnVariables":[{"name":"diff","nativeSrc":"5731:4:87","nodeType":"YulTypedName","src":"5731:4:87","type":""}],"src":"5693:151:87"},{"body":{"nativeSrc":"5918:306:87","nodeType":"YulBlock","src":"5918:306:87","statements":[{"nativeSrc":"5928:10:87","nodeType":"YulAssignment","src":"5928:10:87","value":{"kind":"number","nativeSrc":"5937:1:87","nodeType":"YulLiteral","src":"5937:1:87","type":"","value":"1"},"variableNames":[{"name":"power","nativeSrc":"5928:5:87","nodeType":"YulIdentifier","src":"5928:5:87"}]},{"nativeSrc":"5947:13:87","nodeType":"YulAssignment","src":"5947:13:87","value":{"name":"_base","nativeSrc":"5955:5:87","nodeType":"YulIdentifier","src":"5955:5:87"},"variableNames":[{"name":"base","nativeSrc":"5947:4:87","nodeType":"YulIdentifier","src":"5947:4:87"}]},{"body":{"nativeSrc":"6005:213:87","nodeType":"YulBlock","src":"6005:213:87","statements":[{"body":{"nativeSrc":"6047:22:87","nodeType":"YulBlock","src":"6047:22:87","statements":[{"expression":{"arguments":[],"functionName":{"name":"panic_error_0x11","nativeSrc":"6049:16:87","nodeType":"YulIdentifier","src":"6049:16:87"},"nativeSrc":"6049:18:87","nodeType":"YulFunctionCall","src":"6049:18:87"},"nativeSrc":"6049:18:87","nodeType":"YulExpressionStatement","src":"6049:18:87"}]},"condition":{"arguments":[{"name":"base","nativeSrc":"6025:4:87","nodeType":"YulIdentifier","src":"6025:4:87"},{"arguments":[{"name":"max","nativeSrc":"6035:3:87","nodeType":"YulIdentifier","src":"6035:3:87"},{"name":"base","nativeSrc":"6040:4:87","nodeType":"YulIdentifier","src":"6040:4:87"}],"functionName":{"name":"div","nativeSrc":"6031:3:87","nodeType":"YulIdentifier","src":"6031:3:87"},"nativeSrc":"6031:14:87","nodeType":"YulFunctionCall","src":"6031:14:87"}],"functionName":{"name":"gt","nativeSrc":"6022:2:87","nodeType":"YulIdentifier","src":"6022:2:87"},"nativeSrc":"6022:24:87","nodeType":"YulFunctionCall","src":"6022:24:87"},"nativeSrc":"6019:50:87","nodeType":"YulIf","src":"6019:50:87"},{"body":{"nativeSrc":"6102:29:87","nodeType":"YulBlock","src":"6102:29:87","statements":[{"nativeSrc":"6104:25:87","nodeType":"YulAssignment","src":"6104:25:87","value":{"arguments":[{"name":"power","nativeSrc":"6117:5:87","nodeType":"YulIdentifier","src":"6117:5:87"},{"name":"base","nativeSrc":"6124:4:87","nodeType":"YulIdentifier","src":"6124:4:87"}],"functionName":{"name":"mul","nativeSrc":"6113:3:87","nodeType":"YulIdentifier","src":"6113:3:87"},"nativeSrc":"6113:16:87","nodeType":"YulFunctionCall","src":"6113:16:87"},"variableNames":[{"name":"power","nativeSrc":"6104:5:87","nodeType":"YulIdentifier","src":"6104:5:87"}]}]},"condition":{"arguments":[{"name":"exponent","nativeSrc":"6089:8:87","nodeType":"YulIdentifier","src":"6089:8:87"},{"kind":"number","nativeSrc":"6099:1:87","nodeType":"YulLiteral","src":"6099:1:87","type":"","value":"1"}],"functionName":{"name":"and","nativeSrc":"6085:3:87","nodeType":"YulIdentifier","src":"6085:3:87"},"nativeSrc":"6085:16:87","nodeType":"YulFunctionCall","src":"6085:16:87"},"nativeSrc":"6082:49:87","nodeType":"YulIf","src":"6082:49:87"},{"nativeSrc":"6144:23:87","nodeType":"YulAssignment","src":"6144:23:87","value":{"arguments":[{"name":"base","nativeSrc":"6156:4:87","nodeType":"YulIdentifier","src":"6156:4:87"},{"name":"base","nativeSrc":"6162:4:87","nodeType":"YulIdentifier","src":"6162:4:87"}],"functionName":{"name":"mul","nativeSrc":"6152:3:87","nodeType":"YulIdentifier","src":"6152:3:87"},"nativeSrc":"6152:15:87","nodeType":"YulFunctionCall","src":"6152:15:87"},"variableNames":[{"name":"base","nativeSrc":"6144:4:87","nodeType":"YulIdentifier","src":"6144:4:87"}]},{"nativeSrc":"6180:28:87","nodeType":"YulAssignment","src":"6180:28:87","value":{"arguments":[{"kind":"number","nativeSrc":"6196:1:87","nodeType":"YulLiteral","src":"6196:1:87","type":"","value":"1"},{"name":"exponent","nativeSrc":"6199:8:87","nodeType":"YulIdentifier","src":"6199:8:87"}],"functionName":{"name":"shr","nativeSrc":"6192:3:87","nodeType":"YulIdentifier","src":"6192:3:87"},"nativeSrc":"6192:16:87","nodeType":"YulFunctionCall","src":"6192:16:87"},"variableNames":[{"name":"exponent","nativeSrc":"6180:8:87","nodeType":"YulIdentifier","src":"6180:8:87"}]}]},"condition":{"arguments":[{"name":"exponent","nativeSrc":"5980:8:87","nodeType":"YulIdentifier","src":"5980:8:87"},{"kind":"number","nativeSrc":"5990:1:87","nodeType":"YulLiteral","src":"5990:1:87","type":"","value":"1"}],"functionName":{"name":"gt","nativeSrc":"5977:2:87","nodeType":"YulIdentifier","src":"5977:2:87"},"nativeSrc":"5977:15:87","nodeType":"YulFunctionCall","src":"5977:15:87"},"nativeSrc":"5969:249:87","nodeType":"YulForLoop","post":{"nativeSrc":"5993:3:87","nodeType":"YulBlock","src":"5993:3:87","statements":[]},"pre":{"nativeSrc":"5973:3:87","nodeType":"YulBlock","src":"5973:3:87","statements":[]},"src":"5969:249:87"}]},"name":"checked_exp_helper","nativeSrc":"5849:375:87","nodeType":"YulFunctionDefinition","parameters":[{"name":"_base","nativeSrc":"5877:5:87","nodeType":"YulTypedName","src":"5877:5:87","type":""},{"name":"exponent","nativeSrc":"5884:8:87","nodeType":"YulTypedName","src":"5884:8:87","type":""},{"name":"max","nativeSrc":"5894:3:87","nodeType":"YulTypedName","src":"5894:3:87","type":""}],"returnVariables":[{"name":"power","nativeSrc":"5902:5:87","nodeType":"YulTypedName","src":"5902:5:87","type":""},{"name":"base","nativeSrc":"5909:4:87","nodeType":"YulTypedName","src":"5909:4:87","type":""}],"src":"5849:375:87"},{"body":{"nativeSrc":"6288:843:87","nodeType":"YulBlock","src":"6288:843:87","statements":[{"body":{"nativeSrc":"6326:52:87","nodeType":"YulBlock","src":"6326:52:87","statements":[{"nativeSrc":"6340:10:87","nodeType":"YulAssignment","src":"6340:10:87","value":{"kind":"number","nativeSrc":"6349:1:87","nodeType":"YulLiteral","src":"6349:1:87","type":"","value":"1"},"variableNames":[{"name":"power","nativeSrc":"6340:5:87","nodeType":"YulIdentifier","src":"6340:5:87"}]},{"nativeSrc":"6363:5:87","nodeType":"YulLeave","src":"6363:5:87"}]},"condition":{"arguments":[{"name":"exponent","nativeSrc":"6308:8:87","nodeType":"YulIdentifier","src":"6308:8:87"}],"functionName":{"name":"iszero","nativeSrc":"6301:6:87","nodeType":"YulIdentifier","src":"6301:6:87"},"nativeSrc":"6301:16:87","nodeType":"YulFunctionCall","src":"6301:16:87"},"nativeSrc":"6298:80:87","nodeType":"YulIf","src":"6298:80:87"},{"body":{"nativeSrc":"6411:52:87","nodeType":"YulBlock","src":"6411:52:87","statements":[{"nativeSrc":"6425:10:87","nodeType":"YulAssignment","src":"6425:10:87","value":{"kind":"number","nativeSrc":"6434:1:87","nodeType":"YulLiteral","src":"6434:1:87","type":"","value":"0"},"variableNames":[{"name":"power","nativeSrc":"6425:5:87","nodeType":"YulIdentifier","src":"6425:5:87"}]},{"nativeSrc":"6448:5:87","nodeType":"YulLeave","src":"6448:5:87"}]},"condition":{"arguments":[{"name":"base","nativeSrc":"6397:4:87","nodeType":"YulIdentifier","src":"6397:4:87"}],"functionName":{"name":"iszero","nativeSrc":"6390:6:87","nodeType":"YulIdentifier","src":"6390:6:87"},"nativeSrc":"6390:12:87","nodeType":"YulFunctionCall","src":"6390:12:87"},"nativeSrc":"6387:76:87","nodeType":"YulIf","src":"6387:76:87"},{"cases":[{"body":{"nativeSrc":"6499:52:87","nodeType":"YulBlock","src":"6499:52:87","statements":[{"nativeSrc":"6513:10:87","nodeType":"YulAssignment","src":"6513:10:87","value":{"kind":"number","nativeSrc":"6522:1:87","nodeType":"YulLiteral","src":"6522:1:87","type":"","value":"1"},"variableNames":[{"name":"power","nativeSrc":"6513:5:87","nodeType":"YulIdentifier","src":"6513:5:87"}]},{"nativeSrc":"6536:5:87","nodeType":"YulLeave","src":"6536:5:87"}]},"nativeSrc":"6492:59:87","nodeType":"YulCase","src":"6492:59:87","value":{"kind":"number","nativeSrc":"6497:1:87","nodeType":"YulLiteral","src":"6497:1:87","type":"","value":"1"}},{"body":{"nativeSrc":"6567:167:87","nodeType":"YulBlock","src":"6567:167:87","statements":[{"body":{"nativeSrc":"6602:22:87","nodeType":"YulBlock","src":"6602:22:87","statements":[{"expression":{"arguments":[],"functionName":{"name":"panic_error_0x11","nativeSrc":"6604:16:87","nodeType":"YulIdentifier","src":"6604:16:87"},"nativeSrc":"6604:18:87","nodeType":"YulFunctionCall","src":"6604:18:87"},"nativeSrc":"6604:18:87","nodeType":"YulExpressionStatement","src":"6604:18:87"}]},"condition":{"arguments":[{"name":"exponent","nativeSrc":"6587:8:87","nodeType":"YulIdentifier","src":"6587:8:87"},{"kind":"number","nativeSrc":"6597:3:87","nodeType":"YulLiteral","src":"6597:3:87","type":"","value":"255"}],"functionName":{"name":"gt","nativeSrc":"6584:2:87","nodeType":"YulIdentifier","src":"6584:2:87"},"nativeSrc":"6584:17:87","nodeType":"YulFunctionCall","src":"6584:17:87"},"nativeSrc":"6581:43:87","nodeType":"YulIf","src":"6581:43:87"},{"nativeSrc":"6637:25:87","nodeType":"YulAssignment","src":"6637:25:87","value":{"arguments":[{"name":"exponent","nativeSrc":"6650:8:87","nodeType":"YulIdentifier","src":"6650:8:87"},{"kind":"number","nativeSrc":"6660:1:87","nodeType":"YulLiteral","src":"6660:1:87","type":"","value":"1"}],"functionName":{"name":"shl","nativeSrc":"6646:3:87","nodeType":"YulIdentifier","src":"6646:3:87"},"nativeSrc":"6646:16:87","nodeType":"YulFunctionCall","src":"6646:16:87"},"variableNames":[{"name":"power","nativeSrc":"6637:5:87","nodeType":"YulIdentifier","src":"6637:5:87"}]},{"nativeSrc":"6675:11:87","nodeType":"YulVariableDeclaration","src":"6675:11:87","value":{"kind":"number","nativeSrc":"6685:1:87","nodeType":"YulLiteral","src":"6685:1:87","type":"","value":"0"},"variables":[{"name":"_1","nativeSrc":"6679:2:87","nodeType":"YulTypedName","src":"6679:2:87","type":""}]},{"nativeSrc":"6699:7:87","nodeType":"YulAssignment","src":"6699:7:87","value":{"kind":"number","nativeSrc":"6705:1:87","nodeType":"YulLiteral","src":"6705:1:87","type":"","value":"0"},"variableNames":[{"name":"_1","nativeSrc":"6699:2:87","nodeType":"YulIdentifier","src":"6699:2:87"}]},{"nativeSrc":"6719:5:87","nodeType":"YulLeave","src":"6719:5:87"}]},"nativeSrc":"6560:174:87","nodeType":"YulCase","src":"6560:174:87","value":{"kind":"number","nativeSrc":"6565:1:87","nodeType":"YulLiteral","src":"6565:1:87","type":"","value":"2"}}],"expression":{"name":"base","nativeSrc":"6479:4:87","nodeType":"YulIdentifier","src":"6479:4:87"},"nativeSrc":"6472:262:87","nodeType":"YulSwitch","src":"6472:262:87"},{"body":{"nativeSrc":"6832:114:87","nodeType":"YulBlock","src":"6832:114:87","statements":[{"nativeSrc":"6846:28:87","nodeType":"YulAssignment","src":"6846:28:87","value":{"arguments":[{"name":"base","nativeSrc":"6859:4:87","nodeType":"YulIdentifier","src":"6859:4:87"},{"name":"exponent","nativeSrc":"6865:8:87","nodeType":"YulIdentifier","src":"6865:8:87"}],"functionName":{"name":"exp","nativeSrc":"6855:3:87","nodeType":"YulIdentifier","src":"6855:3:87"},"nativeSrc":"6855:19:87","nodeType":"YulFunctionCall","src":"6855:19:87"},"variableNames":[{"name":"power","nativeSrc":"6846:5:87","nodeType":"YulIdentifier","src":"6846:5:87"}]},{"nativeSrc":"6887:11:87","nodeType":"YulVariableDeclaration","src":"6887:11:87","value":{"kind":"number","nativeSrc":"6897:1:87","nodeType":"YulLiteral","src":"6897:1:87","type":"","value":"0"},"variables":[{"name":"_2","nativeSrc":"6891:2:87","nodeType":"YulTypedName","src":"6891:2:87","type":""}]},{"nativeSrc":"6911:7:87","nodeType":"YulAssignment","src":"6911:7:87","value":{"kind":"number","nativeSrc":"6917:1:87","nodeType":"YulLiteral","src":"6917:1:87","type":"","value":"0"},"variableNames":[{"name":"_2","nativeSrc":"6911:2:87","nodeType":"YulIdentifier","src":"6911:2:87"}]},{"nativeSrc":"6931:5:87","nodeType":"YulLeave","src":"6931:5:87"}]},"condition":{"arguments":[{"arguments":[{"arguments":[{"name":"base","nativeSrc":"6756:4:87","nodeType":"YulIdentifier","src":"6756:4:87"},{"kind":"number","nativeSrc":"6762:2:87","nodeType":"YulLiteral","src":"6762:2:87","type":"","value":"11"}],"functionName":{"name":"lt","nativeSrc":"6753:2:87","nodeType":"YulIdentifier","src":"6753:2:87"},"nativeSrc":"6753:12:87","nodeType":"YulFunctionCall","src":"6753:12:87"},{"arguments":[{"name":"exponent","nativeSrc":"6770:8:87","nodeType":"YulIdentifier","src":"6770:8:87"},{"kind":"number","nativeSrc":"6780:2:87","nodeType":"YulLiteral","src":"6780:2:87","type":"","value":"78"}],"functionName":{"name":"lt","nativeSrc":"6767:2:87","nodeType":"YulIdentifier","src":"6767:2:87"},"nativeSrc":"6767:16:87","nodeType":"YulFunctionCall","src":"6767:16:87"}],"functionName":{"name":"and","nativeSrc":"6749:3:87","nodeType":"YulIdentifier","src":"6749:3:87"},"nativeSrc":"6749:35:87","nodeType":"YulFunctionCall","src":"6749:35:87"},{"arguments":[{"arguments":[{"name":"base","nativeSrc":"6793:4:87","nodeType":"YulIdentifier","src":"6793:4:87"},{"kind":"number","nativeSrc":"6799:3:87","nodeType":"YulLiteral","src":"6799:3:87","type":"","value":"307"}],"functionName":{"name":"lt","nativeSrc":"6790:2:87","nodeType":"YulIdentifier","src":"6790:2:87"},"nativeSrc":"6790:13:87","nodeType":"YulFunctionCall","src":"6790:13:87"},{"arguments":[{"name":"exponent","nativeSrc":"6808:8:87","nodeType":"YulIdentifier","src":"6808:8:87"},{"kind":"number","nativeSrc":"6818:2:87","nodeType":"YulLiteral","src":"6818:2:87","type":"","value":"32"}],"functionName":{"name":"lt","nativeSrc":"6805:2:87","nodeType":"YulIdentifier","src":"6805:2:87"},"nativeSrc":"6805:16:87","nodeType":"YulFunctionCall","src":"6805:16:87"}],"functionName":{"name":"and","nativeSrc":"6786:3:87","nodeType":"YulIdentifier","src":"6786:3:87"},"nativeSrc":"6786:36:87","nodeType":"YulFunctionCall","src":"6786:36:87"}],"functionName":{"name":"or","nativeSrc":"6746:2:87","nodeType":"YulIdentifier","src":"6746:2:87"},"nativeSrc":"6746:77:87","nodeType":"YulFunctionCall","src":"6746:77:87"},"nativeSrc":"6743:203:87","nodeType":"YulIf","src":"6743:203:87"},{"nativeSrc":"6955:65:87","nodeType":"YulVariableDeclaration","src":"6955:65:87","value":{"arguments":[{"name":"base","nativeSrc":"6997:4:87","nodeType":"YulIdentifier","src":"6997:4:87"},{"name":"exponent","nativeSrc":"7003:8:87","nodeType":"YulIdentifier","src":"7003:8:87"},{"arguments":[{"kind":"number","nativeSrc":"7017:1:87","nodeType":"YulLiteral","src":"7017:1:87","type":"","value":"0"}],"functionName":{"name":"not","nativeSrc":"7013:3:87","nodeType":"YulIdentifier","src":"7013:3:87"},"nativeSrc":"7013:6:87","nodeType":"YulFunctionCall","src":"7013:6:87"}],"functionName":{"name":"checked_exp_helper","nativeSrc":"6978:18:87","nodeType":"YulIdentifier","src":"6978:18:87"},"nativeSrc":"6978:42:87","nodeType":"YulFunctionCall","src":"6978:42:87"},"variables":[{"name":"power_1","nativeSrc":"6959:7:87","nodeType":"YulTypedName","src":"6959:7:87","type":""},{"name":"base_1","nativeSrc":"6968:6:87","nodeType":"YulTypedName","src":"6968:6:87","type":""}]},{"body":{"nativeSrc":"7065:22:87","nodeType":"YulBlock","src":"7065:22:87","statements":[{"expression":{"arguments":[],"functionName":{"name":"panic_error_0x11","nativeSrc":"7067:16:87","nodeType":"YulIdentifier","src":"7067:16:87"},"nativeSrc":"7067:18:87","nodeType":"YulFunctionCall","src":"7067:18:87"},"nativeSrc":"7067:18:87","nodeType":"YulExpressionStatement","src":"7067:18:87"}]},"condition":{"arguments":[{"name":"power_1","nativeSrc":"7035:7:87","nodeType":"YulIdentifier","src":"7035:7:87"},{"arguments":[{"arguments":[{"kind":"number","nativeSrc":"7052:1:87","nodeType":"YulLiteral","src":"7052:1:87","type":"","value":"0"}],"functionName":{"name":"not","nativeSrc":"7048:3:87","nodeType":"YulIdentifier","src":"7048:3:87"},"nativeSrc":"7048:6:87","nodeType":"YulFunctionCall","src":"7048:6:87"},{"name":"base_1","nativeSrc":"7056:6:87","nodeType":"YulIdentifier","src":"7056:6:87"}],"functionName":{"name":"div","nativeSrc":"7044:3:87","nodeType":"YulIdentifier","src":"7044:3:87"},"nativeSrc":"7044:19:87","nodeType":"YulFunctionCall","src":"7044:19:87"}],"functionName":{"name":"gt","nativeSrc":"7032:2:87","nodeType":"YulIdentifier","src":"7032:2:87"},"nativeSrc":"7032:32:87","nodeType":"YulFunctionCall","src":"7032:32:87"},"nativeSrc":"7029:58:87","nodeType":"YulIf","src":"7029:58:87"},{"nativeSrc":"7096:29:87","nodeType":"YulAssignment","src":"7096:29:87","value":{"arguments":[{"name":"power_1","nativeSrc":"7109:7:87","nodeType":"YulIdentifier","src":"7109:7:87"},{"name":"base_1","nativeSrc":"7118:6:87","nodeType":"YulIdentifier","src":"7118:6:87"}],"functionName":{"name":"mul","nativeSrc":"7105:3:87","nodeType":"YulIdentifier","src":"7105:3:87"},"nativeSrc":"7105:20:87","nodeType":"YulFunctionCall","src":"7105:20:87"},"variableNames":[{"name":"power","nativeSrc":"7096:5:87","nodeType":"YulIdentifier","src":"7096:5:87"}]}]},"name":"checked_exp_unsigned","nativeSrc":"6229:902:87","nodeType":"YulFunctionDefinition","parameters":[{"name":"base","nativeSrc":"6259:4:87","nodeType":"YulTypedName","src":"6259:4:87","type":""},{"name":"exponent","nativeSrc":"6265:8:87","nodeType":"YulTypedName","src":"6265:8:87","type":""}],"returnVariables":[{"name":"power","nativeSrc":"6278:5:87","nodeType":"YulTypedName","src":"6278:5:87","type":""}],"src":"6229:902:87"},{"body":{"nativeSrc":"7204:72:87","nodeType":"YulBlock","src":"7204:72:87","statements":[{"nativeSrc":"7214:56:87","nodeType":"YulAssignment","src":"7214:56:87","value":{"arguments":[{"name":"base","nativeSrc":"7244:4:87","nodeType":"YulIdentifier","src":"7244:4:87"},{"arguments":[{"name":"exponent","nativeSrc":"7254:8:87","nodeType":"YulIdentifier","src":"7254:8:87"},{"kind":"number","nativeSrc":"7264:4:87","nodeType":"YulLiteral","src":"7264:4:87","type":"","value":"0xff"}],"functionName":{"name":"and","nativeSrc":"7250:3:87","nodeType":"YulIdentifier","src":"7250:3:87"},"nativeSrc":"7250:19:87","nodeType":"YulFunctionCall","src":"7250:19:87"}],"functionName":{"name":"checked_exp_unsigned","nativeSrc":"7223:20:87","nodeType":"YulIdentifier","src":"7223:20:87"},"nativeSrc":"7223:47:87","nodeType":"YulFunctionCall","src":"7223:47:87"},"variableNames":[{"name":"power","nativeSrc":"7214:5:87","nodeType":"YulIdentifier","src":"7214:5:87"}]}]},"name":"checked_exp_t_uint256_t_uint8","nativeSrc":"7136:140:87","nodeType":"YulFunctionDefinition","parameters":[{"name":"base","nativeSrc":"7175:4:87","nodeType":"YulTypedName","src":"7175:4:87","type":""},{"name":"exponent","nativeSrc":"7181:8:87","nodeType":"YulTypedName","src":"7181:8:87","type":""}],"returnVariables":[{"name":"power","nativeSrc":"7194:5:87","nodeType":"YulTypedName","src":"7194:5:87","type":""}],"src":"7136:140:87"}]},"contents":"{\n    { }\n    function abi_decode_struct_ExactInputSingleParams_calldata(offset, end) -> value\n    {\n        if slt(sub(end, offset), 256) { revert(0, 0) }\n        value := offset\n    }\n    function abi_decode_tuple_t_struct$_ExactInputSingleParams_$14803_calldata_ptr(headStart, dataEnd) -> value0\n    {\n        if slt(sub(dataEnd, headStart), 256) { revert(0, 0) }\n        value0 := abi_decode_struct_ExactInputSingleParams_calldata(headStart, dataEnd)\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_decode_address(offset) -> value\n    {\n        value := calldataload(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(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        let value := 0\n        value := calldataload(add(headStart, 64))\n        value2 := value\n    }\n    function abi_decode_struct_ExactInputParams_calldata(offset, end) -> value\n    {\n        if slt(sub(end, offset), 160) { revert(0, 0) }\n        value := offset\n    }\n    function abi_decode_tuple_t_struct$_ExactInputParams_$14823_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        value0 := abi_decode_struct_ExactInputParams_calldata(add(headStart, offset), dataEnd)\n    }\n    function abi_decode_tuple_t_struct$_ExactOutputSingleParams_$14849_calldata_ptr(headStart, dataEnd) -> value0\n    {\n        if slt(sub(dataEnd, headStart), 256) { revert(0, 0) }\n        value0 := abi_decode_struct_ExactInputSingleParams_calldata(headStart, dataEnd)\n    }\n    function abi_decode_tuple_t_struct$_ExactOutputParams_$14869_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        value0 := abi_decode_struct_ExactInputParams_calldata(add(headStart, offset), dataEnd)\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        let value := 0\n        value := calldataload(add(headStart, 32))\n        value1 := value\n    }\n    function abi_decode_tuple_t_int256t_int256t_bytes_calldata_ptr(headStart, dataEnd) -> value0, value1, value2, value3\n    {\n        if slt(sub(dataEnd, headStart), 96) { revert(0, 0) }\n        let value := 0\n        value := calldataload(headStart)\n        value0 := value\n        let value_1 := 0\n        value_1 := calldataload(add(headStart, 32))\n        value1 := value_1\n        let offset := calldataload(add(headStart, 64))\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 length := calldataload(_1)\n        if gt(length, 0xffffffffffffffff) { revert(0, 0) }\n        if gt(add(add(_1, length), 32), dataEnd) { revert(0, 0) }\n        value2 := add(_1, 32)\n        value3 := length\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 panic_error_0x11()\n    {\n        mstore(0, shl(224, 0x4e487b71))\n        mstore(4, 0x11)\n        revert(0, 0x24)\n    }\n    function checked_mul_t_uint256(x, y) -> product\n    {\n        product := mul(x, y)\n        if iszero(or(iszero(x), eq(y, div(product, x)))) { panic_error_0x11() }\n    }\n    function panic_error_0x12()\n    {\n        mstore(0, shl(224, 0x4e487b71))\n        mstore(4, 0x12)\n        revert(0, 0x24)\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 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_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        mstore(headStart, and(value0, sub(shl(160, 1), 1)))\n        mstore(add(headStart, 32), and(value1, sub(shl(160, 1), 1)))\n        mstore(add(headStart, 64), value2)\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, sub(shl(160, 1), 1)))\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 checked_sub_t_uint8(x, y) -> diff\n    {\n        diff := sub(and(x, 0xff), and(y, 0xff))\n        if gt(diff, 0xff) { panic_error_0x11() }\n    }\n    function checked_exp_helper(_base, exponent, max) -> power, base\n    {\n        power := 1\n        base := _base\n        for { } gt(exponent, 1) { }\n        {\n            if gt(base, div(max, base)) { panic_error_0x11() }\n            if and(exponent, 1) { power := mul(power, base) }\n            base := mul(base, base)\n            exponent := shr(1, exponent)\n        }\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            let _1 := 0\n            _1 := 0\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            let _2 := 0\n            _2 := 0\n            leave\n        }\n        let power_1, base_1 := checked_exp_helper(base, exponent, not(0))\n        if gt(power_1, div(not(0), base_1)) { panic_error_0x11() }\n        power := mul(power_1, base_1)\n    }\n    function checked_exp_t_uint256_t_uint8(base, exponent) -> power\n    {\n        power := checked_exp_unsigned(base, and(exponent, 0xff))\n    }\n}","id":87,"language":"Yul","name":"#utility.yul"}],"immutableReferences":{},"linkReferences":{},"object":"60806040526004361061006e575f3560e01c8063db3e21981161004c578063db3e2198146100cb578063f28c0498146100b8578063f3fef3a3146100de578063fa461e33146100fd575f5ffd5b8063414bf389146100725780634562e01514610097578063c04b8d59146100b8575b5f5ffd5b610085610080366004610944565b61011c565b60405190815260200160405180910390f35b3480156100a2575f5ffd5b506100b66100b136600461097a565b6102ef565b005b6100856100c63660046109c4565b6103a9565b6100856100d9366004610944565b6103c3565b3480156100e9575f5ffd5b506100b66100f83660046109fe565b61061b565b348015610108575f5ffd5b506100b6610117366004610a26565b61067a565b5f8061012e6080840160608501610aa2565b6001600160a01b0316036101545760405162e18e7f60e71b815260040160405180910390fd5b428260800135101561017c576040516001623859e760e21b0319815260040160405180910390fd5b5f8260a00135116101a05760405163d11b25af60e01b815260040160405180910390fd5b5f610234670de0b6b3a764000082806101bc6020880188610aa2565b6001600160a01b03166001600160a01b031681526020019081526020015f205f8660200160208101906101ef9190610aa2565b6001600160a01b031681526020808201929092526040015f20549061021f9061021a90880188610aa2565b610693565b61022d9060a0880135610acf565b9190610710565b905061024961021a6040850160208601610aa2565b6102539082610afa565b91508160c08401358082101561028a5760405163296ba6e160e01b8152600481019290925260248201526044015b60405180910390fd5b506102b59050333060a08601356102a46020880188610aa2565b6001600160a01b03169291906107c1565b6102e96102c86080850160608601610aa2565b836102d96040870160208801610aa2565b6001600160a01b031691906107fd565b50919050565b6001600160a01b0383166103165760405163165a825360e21b815260040160405180910390fd5b6001600160a01b03821661033d5760405163165a825360e21b815260040160405180910390fd5b6001600160a01b038381165f818152602081815260408083209487168084529482529182902085905581519283528201929092529081018290527fb71c154260e8508e211e2ace194becba2c6d7e727c3ed292fe4787458969cd109060600160405180910390a1505050565b5f60405163d623472560e01b815260040160405180910390fd5b5f806103d56080840160608501610aa2565b6001600160a01b0316036103fb5760405162e18e7f60e71b815260040160405180910390fd5b4282608001351015610423576040516001623859e760e21b0319815260040160405180910390fd5b5f8260a00135116104475760405163d11b25af60e01b815260040160405180910390fd5b5f6104586040840160208501610aa2565b6040516370a0823160e01b81523060048201526001600160a01b0391909116906370a0823190602401602060405180830381865afa15801561049c573d5f5f3e3d5ffd5b505050506040513d601f19601f820116820180604052508101906104c09190610b19565b90508060a0840135808210156104f257604051634787a10360e11b815260048101929092526024820152604401610281565b505f905061058881806105086020880188610aa2565b6001600160a01b03166001600160a01b031681526020019081526020015f205f86602001602081019061053b9190610aa2565b6001600160a01b03166001600160a01b031681526020019081526020015f2054670de0b6b3a764000061057a87602001602081019061021a9190610aa2565b61022d9060a0890135610acf565b905061059a61021a6020860186610aa2565b6105a49082610afa565b92508260c0850135808211156105d657604051639a06025d60e01b815260048101929092526024820152604401610281565b506105ec90503330856102a46020890189610aa2565b6106146105ff6080860160608701610aa2565b60a08601356102d96040880160208901610aa2565b5050919050565b6001600160a01b0382166106425760405163165a825360e21b815260040160405180910390fd5b5f81116106625760405163165a825360e21b815260040160405180910390fd5b6106766001600160a01b03831633836107fd565b5050565b60405163d623472560e01b815260040160405180910390fd5b5f816001600160a01b031663313ce5676040518163ffffffff1660e01b8152600401602060405180830381865afa1580156106d0573d5f5f3e3d5ffd5b505050506040513d601f19601f820116820180604052508101906106f49190610b30565b6106ff906012610b50565b61070a90600a610c4c565b92915050565b5f5f5f61071d8686610837565b91509150815f036107415783818161073757610737610ae6565b04925050506107ba565b818411610758576107586003851502601118610853565b5f848688095f868103871696879004966002600389028118808a02820302808a02820302808a02820302808a02820302808a02820302808a02909103029181900381900460010185841190960395909502919093039390930492909217029150505b9392505050565b6107cf848484846001610864565b6107f757604051635274afe760e01b81526001600160a01b0385166004820152602401610281565b50505050565b61080a83838360016108d1565b61083257604051635274afe760e01b81526001600160a01b0384166004820152602401610281565b505050565b5f805f1983850993909202808410938190039390930393915050565b634e487b715f52806020526024601cfd5b6040516323b872dd60e01b5f8181526001600160a01b038781166004528616602452604485905291602083606481808c5af1925060015f511483166108c05783831516156108b4573d5f823e3d81fd5b5f883b113d1516831692505b604052505f60605295945050505050565b60405163a9059cbb60e01b5f8181526001600160a01b038616600452602485905291602083604481808b5af1925060015f5114831661092757838315161561091b573d5f823e3d81fd5b5f873b113d1516831692505b60405250949350505050565b5f61010082840312156102e9575f5ffd5b5f6101008284031215610955575f5ffd5b6107ba8383610933565b80356001600160a01b0381168114610975575f5ffd5b919050565b5f5f5f6060848603121561098c575f5ffd5b6109958461095f565b92506109a36020850161095f565b929592945050506040919091013590565b5f60a082840312156102e9575f5ffd5b5f602082840312156109d4575f5ffd5b813567ffffffffffffffff8111156109ea575f5ffd5b6109f6848285016109b4565b949350505050565b5f5f60408385031215610a0f575f5ffd5b610a188361095f565b946020939093013593505050565b5f5f5f5f60608587031215610a39575f5ffd5b8435935060208501359250604085013567ffffffffffffffff811115610a5d575f5ffd5b8501601f81018713610a6d575f5ffd5b803567ffffffffffffffff811115610a83575f5ffd5b876020828401011115610a94575f5ffd5b949793965060200194505050565b5f60208284031215610ab2575f5ffd5b6107ba8261095f565b634e487b7160e01b5f52601160045260245ffd5b808202811582820484141761070a5761070a610abb565b634e487b7160e01b5f52601260045260245ffd5b5f82610b1457634e487b7160e01b5f52601260045260245ffd5b500490565b5f60208284031215610b29575f5ffd5b5051919050565b5f60208284031215610b40575f5ffd5b815160ff811681146107ba575f5ffd5b60ff828116828216039081111561070a5761070a610abb565b6001815b6001841115610ba457808504811115610b8857610b88610abb565b6001841615610b9657908102905b60019390931c928002610b6d565b935093915050565b5f82610bba5750600161070a565b81610bc657505f61070a565b8160018114610bdc5760028114610be657610c02565b600191505061070a565b60ff841115610bf757610bf7610abb565b50506001821b61070a565b5060208310610133831016604e8410600b8410161715610c25575081810a61070a565b610c315f198484610b69565b805f1904821115610c4457610c44610abb565b029392505050565b5f6107ba60ff841683610bac56fea264697066735822122068f7199ba62683e64df5eba3dc3a99514c339440f8b5daa255cd04eb362aaef764736f6c634300081e0033","opcodes":"PUSH1 0x80 PUSH1 0x40 MSTORE PUSH1 0x4 CALLDATASIZE LT PUSH2 0x6E JUMPI PUSH0 CALLDATALOAD PUSH1 0xE0 SHR DUP1 PUSH4 0xDB3E2198 GT PUSH2 0x4C JUMPI DUP1 PUSH4 0xDB3E2198 EQ PUSH2 0xCB JUMPI DUP1 PUSH4 0xF28C0498 EQ PUSH2 0xB8 JUMPI DUP1 PUSH4 0xF3FEF3A3 EQ PUSH2 0xDE JUMPI DUP1 PUSH4 0xFA461E33 EQ PUSH2 0xFD JUMPI PUSH0 PUSH0 REVERT JUMPDEST DUP1 PUSH4 0x414BF389 EQ PUSH2 0x72 JUMPI DUP1 PUSH4 0x4562E015 EQ PUSH2 0x97 JUMPI DUP1 PUSH4 0xC04B8D59 EQ PUSH2 0xB8 JUMPI JUMPDEST PUSH0 PUSH0 REVERT JUMPDEST PUSH2 0x85 PUSH2 0x80 CALLDATASIZE PUSH1 0x4 PUSH2 0x944 JUMP JUMPDEST PUSH2 0x11C JUMP JUMPDEST PUSH1 0x40 MLOAD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0xA2 JUMPI PUSH0 PUSH0 REVERT JUMPDEST POP PUSH2 0xB6 PUSH2 0xB1 CALLDATASIZE PUSH1 0x4 PUSH2 0x97A JUMP JUMPDEST PUSH2 0x2EF JUMP JUMPDEST STOP JUMPDEST PUSH2 0x85 PUSH2 0xC6 CALLDATASIZE PUSH1 0x4 PUSH2 0x9C4 JUMP JUMPDEST PUSH2 0x3A9 JUMP JUMPDEST PUSH2 0x85 PUSH2 0xD9 CALLDATASIZE PUSH1 0x4 PUSH2 0x944 JUMP JUMPDEST PUSH2 0x3C3 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0xE9 JUMPI PUSH0 PUSH0 REVERT JUMPDEST POP PUSH2 0xB6 PUSH2 0xF8 CALLDATASIZE PUSH1 0x4 PUSH2 0x9FE JUMP JUMPDEST PUSH2 0x61B JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x108 JUMPI PUSH0 PUSH0 REVERT JUMPDEST POP PUSH2 0xB6 PUSH2 0x117 CALLDATASIZE PUSH1 0x4 PUSH2 0xA26 JUMP JUMPDEST PUSH2 0x67A JUMP JUMPDEST PUSH0 DUP1 PUSH2 0x12E PUSH1 0x80 DUP5 ADD PUSH1 0x60 DUP6 ADD PUSH2 0xAA2 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND SUB PUSH2 0x154 JUMPI PUSH1 0x40 MLOAD PUSH3 0xE18E7F PUSH1 0xE7 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST TIMESTAMP DUP3 PUSH1 0x80 ADD CALLDATALOAD LT ISZERO PUSH2 0x17C JUMPI PUSH1 0x40 MLOAD PUSH1 0x1 PUSH3 0x3859E7 PUSH1 0xE2 SHL SUB NOT DUP2 MSTORE PUSH1 0x4 ADD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH0 DUP3 PUSH1 0xA0 ADD CALLDATALOAD GT PUSH2 0x1A0 JUMPI PUSH1 0x40 MLOAD PUSH4 0xD11B25AF PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH0 PUSH2 0x234 PUSH8 0xDE0B6B3A7640000 DUP3 DUP1 PUSH2 0x1BC PUSH1 0x20 DUP9 ADD DUP9 PUSH2 0xAA2 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH0 KECCAK256 PUSH0 DUP7 PUSH1 0x20 ADD PUSH1 0x20 DUP2 ADD SWAP1 PUSH2 0x1EF SWAP2 SWAP1 PUSH2 0xAA2 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP2 MSTORE PUSH1 0x20 DUP1 DUP3 ADD SWAP3 SWAP1 SWAP3 MSTORE PUSH1 0x40 ADD PUSH0 KECCAK256 SLOAD SWAP1 PUSH2 0x21F SWAP1 PUSH2 0x21A SWAP1 DUP9 ADD DUP9 PUSH2 0xAA2 JUMP JUMPDEST PUSH2 0x693 JUMP JUMPDEST PUSH2 0x22D SWAP1 PUSH1 0xA0 DUP9 ADD CALLDATALOAD PUSH2 0xACF JUMP JUMPDEST SWAP2 SWAP1 PUSH2 0x710 JUMP JUMPDEST SWAP1 POP PUSH2 0x249 PUSH2 0x21A PUSH1 0x40 DUP6 ADD PUSH1 0x20 DUP7 ADD PUSH2 0xAA2 JUMP JUMPDEST PUSH2 0x253 SWAP1 DUP3 PUSH2 0xAFA JUMP JUMPDEST SWAP2 POP DUP2 PUSH1 0xC0 DUP5 ADD CALLDATALOAD DUP1 DUP3 LT ISZERO PUSH2 0x28A JUMPI PUSH1 0x40 MLOAD PUSH4 0x296BA6E1 PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 DUP2 ADD SWAP3 SWAP1 SWAP3 MSTORE PUSH1 0x24 DUP3 ADD MSTORE PUSH1 0x44 ADD JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST POP PUSH2 0x2B5 SWAP1 POP CALLER ADDRESS PUSH1 0xA0 DUP7 ADD CALLDATALOAD PUSH2 0x2A4 PUSH1 0x20 DUP9 ADD DUP9 PUSH2 0xAA2 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND SWAP3 SWAP2 SWAP1 PUSH2 0x7C1 JUMP JUMPDEST PUSH2 0x2E9 PUSH2 0x2C8 PUSH1 0x80 DUP6 ADD PUSH1 0x60 DUP7 ADD PUSH2 0xAA2 JUMP JUMPDEST DUP4 PUSH2 0x2D9 PUSH1 0x40 DUP8 ADD PUSH1 0x20 DUP9 ADD PUSH2 0xAA2 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND SWAP2 SWAP1 PUSH2 0x7FD JUMP JUMPDEST POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP4 AND PUSH2 0x316 JUMPI PUSH1 0x40 MLOAD PUSH4 0x165A8253 PUSH1 0xE2 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP3 AND PUSH2 0x33D JUMPI PUSH1 0x40 MLOAD PUSH4 0x165A8253 PUSH1 0xE2 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP4 DUP2 AND PUSH0 DUP2 DUP2 MSTORE PUSH1 0x20 DUP2 DUP2 MSTORE PUSH1 0x40 DUP1 DUP4 KECCAK256 SWAP5 DUP8 AND DUP1 DUP5 MSTORE SWAP5 DUP3 MSTORE SWAP2 DUP3 SWAP1 KECCAK256 DUP6 SWAP1 SSTORE DUP2 MLOAD SWAP3 DUP4 MSTORE DUP3 ADD SWAP3 SWAP1 SWAP3 MSTORE SWAP1 DUP2 ADD DUP3 SWAP1 MSTORE PUSH32 0xB71C154260E8508E211E2ACE194BECBA2C6D7E727C3ED292FE4787458969CD10 SWAP1 PUSH1 0x60 ADD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 LOG1 POP POP POP JUMP JUMPDEST PUSH0 PUSH1 0x40 MLOAD PUSH4 0xD6234725 PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH0 DUP1 PUSH2 0x3D5 PUSH1 0x80 DUP5 ADD PUSH1 0x60 DUP6 ADD PUSH2 0xAA2 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND SUB PUSH2 0x3FB JUMPI PUSH1 0x40 MLOAD PUSH3 0xE18E7F PUSH1 0xE7 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST TIMESTAMP DUP3 PUSH1 0x80 ADD CALLDATALOAD LT ISZERO PUSH2 0x423 JUMPI PUSH1 0x40 MLOAD PUSH1 0x1 PUSH3 0x3859E7 PUSH1 0xE2 SHL SUB NOT DUP2 MSTORE PUSH1 0x4 ADD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH0 DUP3 PUSH1 0xA0 ADD CALLDATALOAD GT PUSH2 0x447 JUMPI PUSH1 0x40 MLOAD PUSH4 0xD11B25AF PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH0 PUSH2 0x458 PUSH1 0x40 DUP5 ADD PUSH1 0x20 DUP6 ADD PUSH2 0xAA2 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH4 0x70A08231 PUSH1 0xE0 SHL DUP2 MSTORE ADDRESS PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP2 SWAP1 SWAP2 AND SWAP1 PUSH4 0x70A08231 SWAP1 PUSH1 0x24 ADD PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x49C JUMPI RETURNDATASIZE PUSH0 PUSH0 RETURNDATACOPY RETURNDATASIZE PUSH0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP3 ADD DUP1 PUSH1 0x40 MSTORE POP DUP2 ADD SWAP1 PUSH2 0x4C0 SWAP2 SWAP1 PUSH2 0xB19 JUMP JUMPDEST SWAP1 POP DUP1 PUSH1 0xA0 DUP5 ADD CALLDATALOAD DUP1 DUP3 LT ISZERO PUSH2 0x4F2 JUMPI PUSH1 0x40 MLOAD PUSH4 0x4787A103 PUSH1 0xE1 SHL DUP2 MSTORE PUSH1 0x4 DUP2 ADD SWAP3 SWAP1 SWAP3 MSTORE PUSH1 0x24 DUP3 ADD MSTORE PUSH1 0x44 ADD PUSH2 0x281 JUMP JUMPDEST POP PUSH0 SWAP1 POP PUSH2 0x588 DUP2 DUP1 PUSH2 0x508 PUSH1 0x20 DUP9 ADD DUP9 PUSH2 0xAA2 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH0 KECCAK256 PUSH0 DUP7 PUSH1 0x20 ADD PUSH1 0x20 DUP2 ADD SWAP1 PUSH2 0x53B SWAP2 SWAP1 PUSH2 0xAA2 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH0 KECCAK256 SLOAD PUSH8 0xDE0B6B3A7640000 PUSH2 0x57A DUP8 PUSH1 0x20 ADD PUSH1 0x20 DUP2 ADD SWAP1 PUSH2 0x21A SWAP2 SWAP1 PUSH2 0xAA2 JUMP JUMPDEST PUSH2 0x22D SWAP1 PUSH1 0xA0 DUP10 ADD CALLDATALOAD PUSH2 0xACF JUMP JUMPDEST SWAP1 POP PUSH2 0x59A PUSH2 0x21A PUSH1 0x20 DUP7 ADD DUP7 PUSH2 0xAA2 JUMP JUMPDEST PUSH2 0x5A4 SWAP1 DUP3 PUSH2 0xAFA JUMP JUMPDEST SWAP3 POP DUP3 PUSH1 0xC0 DUP6 ADD CALLDATALOAD DUP1 DUP3 GT ISZERO PUSH2 0x5D6 JUMPI PUSH1 0x40 MLOAD PUSH4 0x9A06025D PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 DUP2 ADD SWAP3 SWAP1 SWAP3 MSTORE PUSH1 0x24 DUP3 ADD MSTORE PUSH1 0x44 ADD PUSH2 0x281 JUMP JUMPDEST POP PUSH2 0x5EC SWAP1 POP CALLER ADDRESS DUP6 PUSH2 0x2A4 PUSH1 0x20 DUP10 ADD DUP10 PUSH2 0xAA2 JUMP JUMPDEST PUSH2 0x614 PUSH2 0x5FF PUSH1 0x80 DUP7 ADD PUSH1 0x60 DUP8 ADD PUSH2 0xAA2 JUMP JUMPDEST PUSH1 0xA0 DUP7 ADD CALLDATALOAD PUSH2 0x2D9 PUSH1 0x40 DUP9 ADD PUSH1 0x20 DUP10 ADD PUSH2 0xAA2 JUMP JUMPDEST POP POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP3 AND PUSH2 0x642 JUMPI PUSH1 0x40 MLOAD PUSH4 0x165A8253 PUSH1 0xE2 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH0 DUP2 GT PUSH2 0x662 JUMPI PUSH1 0x40 MLOAD PUSH4 0x165A8253 PUSH1 0xE2 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH2 0x676 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP4 AND CALLER DUP4 PUSH2 0x7FD JUMP JUMPDEST POP POP JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH4 0xD6234725 PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH0 DUP2 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 GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x6D0 JUMPI RETURNDATASIZE PUSH0 PUSH0 RETURNDATACOPY RETURNDATASIZE PUSH0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP3 ADD DUP1 PUSH1 0x40 MSTORE POP DUP2 ADD SWAP1 PUSH2 0x6F4 SWAP2 SWAP1 PUSH2 0xB30 JUMP JUMPDEST PUSH2 0x6FF SWAP1 PUSH1 0x12 PUSH2 0xB50 JUMP JUMPDEST PUSH2 0x70A SWAP1 PUSH1 0xA PUSH2 0xC4C JUMP JUMPDEST SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH0 PUSH0 PUSH0 PUSH2 0x71D DUP7 DUP7 PUSH2 0x837 JUMP JUMPDEST SWAP2 POP SWAP2 POP DUP2 PUSH0 SUB PUSH2 0x741 JUMPI DUP4 DUP2 DUP2 PUSH2 0x737 JUMPI PUSH2 0x737 PUSH2 0xAE6 JUMP JUMPDEST DIV SWAP3 POP POP POP PUSH2 0x7BA JUMP JUMPDEST DUP2 DUP5 GT PUSH2 0x758 JUMPI PUSH2 0x758 PUSH1 0x3 DUP6 ISZERO MUL PUSH1 0x11 XOR PUSH2 0x853 JUMP JUMPDEST PUSH0 DUP5 DUP7 DUP9 MULMOD PUSH0 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 DUP6 DUP5 GT SWAP1 SWAP7 SUB SWAP6 SWAP1 SWAP6 MUL SWAP2 SWAP1 SWAP4 SUB SWAP4 SWAP1 SWAP4 DIV SWAP3 SWAP1 SWAP3 OR MUL SWAP2 POP POP JUMPDEST SWAP4 SWAP3 POP POP POP JUMP JUMPDEST PUSH2 0x7CF DUP5 DUP5 DUP5 DUP5 PUSH1 0x1 PUSH2 0x864 JUMP JUMPDEST PUSH2 0x7F7 JUMPI PUSH1 0x40 MLOAD PUSH4 0x5274AFE7 PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP6 AND PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x24 ADD PUSH2 0x281 JUMP JUMPDEST POP POP POP POP JUMP JUMPDEST PUSH2 0x80A DUP4 DUP4 DUP4 PUSH1 0x1 PUSH2 0x8D1 JUMP JUMPDEST PUSH2 0x832 JUMPI PUSH1 0x40 MLOAD PUSH4 0x5274AFE7 PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP5 AND PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x24 ADD PUSH2 0x281 JUMP JUMPDEST POP POP POP JUMP JUMPDEST PUSH0 DUP1 PUSH0 NOT DUP4 DUP6 MULMOD SWAP4 SWAP1 SWAP3 MUL DUP1 DUP5 LT SWAP4 DUP2 SWAP1 SUB SWAP4 SWAP1 SWAP4 SUB SWAP4 SWAP2 POP POP JUMP JUMPDEST PUSH4 0x4E487B71 PUSH0 MSTORE DUP1 PUSH1 0x20 MSTORE PUSH1 0x24 PUSH1 0x1C REVERT JUMPDEST PUSH1 0x40 MLOAD PUSH4 0x23B872DD PUSH1 0xE0 SHL PUSH0 DUP2 DUP2 MSTORE PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP8 DUP2 AND PUSH1 0x4 MSTORE DUP7 AND PUSH1 0x24 MSTORE PUSH1 0x44 DUP6 SWAP1 MSTORE SWAP2 PUSH1 0x20 DUP4 PUSH1 0x64 DUP2 DUP1 DUP13 GAS CALL SWAP3 POP PUSH1 0x1 PUSH0 MLOAD EQ DUP4 AND PUSH2 0x8C0 JUMPI DUP4 DUP4 ISZERO AND ISZERO PUSH2 0x8B4 JUMPI RETURNDATASIZE PUSH0 DUP3 RETURNDATACOPY RETURNDATASIZE DUP2 REVERT JUMPDEST PUSH0 DUP9 EXTCODESIZE GT RETURNDATASIZE ISZERO AND DUP4 AND SWAP3 POP JUMPDEST PUSH1 0x40 MSTORE POP PUSH0 PUSH1 0x60 MSTORE SWAP6 SWAP5 POP POP POP POP POP JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH4 0xA9059CBB PUSH1 0xE0 SHL PUSH0 DUP2 DUP2 MSTORE PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP7 AND PUSH1 0x4 MSTORE PUSH1 0x24 DUP6 SWAP1 MSTORE SWAP2 PUSH1 0x20 DUP4 PUSH1 0x44 DUP2 DUP1 DUP12 GAS CALL SWAP3 POP PUSH1 0x1 PUSH0 MLOAD EQ DUP4 AND PUSH2 0x927 JUMPI DUP4 DUP4 ISZERO AND ISZERO PUSH2 0x91B JUMPI RETURNDATASIZE PUSH0 DUP3 RETURNDATACOPY RETURNDATASIZE DUP2 REVERT JUMPDEST PUSH0 DUP8 EXTCODESIZE GT RETURNDATASIZE ISZERO AND DUP4 AND SWAP3 POP JUMPDEST PUSH1 0x40 MSTORE POP SWAP5 SWAP4 POP POP POP POP JUMP JUMPDEST PUSH0 PUSH2 0x100 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x2E9 JUMPI PUSH0 PUSH0 REVERT JUMPDEST PUSH0 PUSH2 0x100 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x955 JUMPI PUSH0 PUSH0 REVERT JUMPDEST PUSH2 0x7BA DUP4 DUP4 PUSH2 0x933 JUMP JUMPDEST DUP1 CALLDATALOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 AND DUP2 EQ PUSH2 0x975 JUMPI PUSH0 PUSH0 REVERT JUMPDEST SWAP2 SWAP1 POP JUMP JUMPDEST PUSH0 PUSH0 PUSH0 PUSH1 0x60 DUP5 DUP7 SUB SLT ISZERO PUSH2 0x98C JUMPI PUSH0 PUSH0 REVERT JUMPDEST PUSH2 0x995 DUP5 PUSH2 0x95F JUMP JUMPDEST SWAP3 POP PUSH2 0x9A3 PUSH1 0x20 DUP6 ADD PUSH2 0x95F JUMP JUMPDEST SWAP3 SWAP6 SWAP3 SWAP5 POP POP POP PUSH1 0x40 SWAP2 SWAP1 SWAP2 ADD CALLDATALOAD SWAP1 JUMP JUMPDEST PUSH0 PUSH1 0xA0 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x2E9 JUMPI PUSH0 PUSH0 REVERT JUMPDEST PUSH0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x9D4 JUMPI PUSH0 PUSH0 REVERT JUMPDEST DUP2 CALLDATALOAD PUSH8 0xFFFFFFFFFFFFFFFF DUP2 GT ISZERO PUSH2 0x9EA JUMPI PUSH0 PUSH0 REVERT JUMPDEST PUSH2 0x9F6 DUP5 DUP3 DUP6 ADD PUSH2 0x9B4 JUMP JUMPDEST SWAP5 SWAP4 POP POP POP POP JUMP JUMPDEST PUSH0 PUSH0 PUSH1 0x40 DUP4 DUP6 SUB SLT ISZERO PUSH2 0xA0F JUMPI PUSH0 PUSH0 REVERT JUMPDEST PUSH2 0xA18 DUP4 PUSH2 0x95F JUMP JUMPDEST SWAP5 PUSH1 0x20 SWAP4 SWAP1 SWAP4 ADD CALLDATALOAD SWAP4 POP POP POP JUMP JUMPDEST PUSH0 PUSH0 PUSH0 PUSH0 PUSH1 0x60 DUP6 DUP8 SUB SLT ISZERO PUSH2 0xA39 JUMPI PUSH0 PUSH0 REVERT JUMPDEST DUP5 CALLDATALOAD SWAP4 POP PUSH1 0x20 DUP6 ADD CALLDATALOAD SWAP3 POP PUSH1 0x40 DUP6 ADD CALLDATALOAD PUSH8 0xFFFFFFFFFFFFFFFF DUP2 GT ISZERO PUSH2 0xA5D JUMPI PUSH0 PUSH0 REVERT JUMPDEST DUP6 ADD PUSH1 0x1F DUP2 ADD DUP8 SGT PUSH2 0xA6D JUMPI PUSH0 PUSH0 REVERT JUMPDEST DUP1 CALLDATALOAD PUSH8 0xFFFFFFFFFFFFFFFF DUP2 GT ISZERO PUSH2 0xA83 JUMPI PUSH0 PUSH0 REVERT JUMPDEST DUP8 PUSH1 0x20 DUP3 DUP5 ADD ADD GT ISZERO PUSH2 0xA94 JUMPI PUSH0 PUSH0 REVERT JUMPDEST SWAP5 SWAP8 SWAP4 SWAP7 POP PUSH1 0x20 ADD SWAP5 POP POP POP JUMP JUMPDEST PUSH0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0xAB2 JUMPI PUSH0 PUSH0 REVERT JUMPDEST PUSH2 0x7BA DUP3 PUSH2 0x95F JUMP JUMPDEST PUSH4 0x4E487B71 PUSH1 0xE0 SHL PUSH0 MSTORE PUSH1 0x11 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH0 REVERT JUMPDEST DUP1 DUP3 MUL DUP2 ISZERO DUP3 DUP3 DIV DUP5 EQ OR PUSH2 0x70A JUMPI PUSH2 0x70A PUSH2 0xABB JUMP JUMPDEST PUSH4 0x4E487B71 PUSH1 0xE0 SHL PUSH0 MSTORE PUSH1 0x12 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH0 REVERT JUMPDEST PUSH0 DUP3 PUSH2 0xB14 JUMPI PUSH4 0x4E487B71 PUSH1 0xE0 SHL PUSH0 MSTORE PUSH1 0x12 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH0 REVERT JUMPDEST POP DIV SWAP1 JUMP JUMPDEST PUSH0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0xB29 JUMPI PUSH0 PUSH0 REVERT JUMPDEST POP MLOAD SWAP2 SWAP1 POP JUMP JUMPDEST PUSH0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0xB40 JUMPI PUSH0 PUSH0 REVERT JUMPDEST DUP2 MLOAD PUSH1 0xFF DUP2 AND DUP2 EQ PUSH2 0x7BA JUMPI PUSH0 PUSH0 REVERT JUMPDEST PUSH1 0xFF DUP3 DUP2 AND DUP3 DUP3 AND SUB SWAP1 DUP2 GT ISZERO PUSH2 0x70A JUMPI PUSH2 0x70A PUSH2 0xABB JUMP JUMPDEST PUSH1 0x1 DUP2 JUMPDEST PUSH1 0x1 DUP5 GT ISZERO PUSH2 0xBA4 JUMPI DUP1 DUP6 DIV DUP2 GT ISZERO PUSH2 0xB88 JUMPI PUSH2 0xB88 PUSH2 0xABB JUMP JUMPDEST PUSH1 0x1 DUP5 AND ISZERO PUSH2 0xB96 JUMPI SWAP1 DUP2 MUL SWAP1 JUMPDEST PUSH1 0x1 SWAP4 SWAP1 SWAP4 SHR SWAP3 DUP1 MUL PUSH2 0xB6D JUMP JUMPDEST SWAP4 POP SWAP4 SWAP2 POP POP JUMP JUMPDEST PUSH0 DUP3 PUSH2 0xBBA JUMPI POP PUSH1 0x1 PUSH2 0x70A JUMP JUMPDEST DUP2 PUSH2 0xBC6 JUMPI POP PUSH0 PUSH2 0x70A JUMP JUMPDEST DUP2 PUSH1 0x1 DUP2 EQ PUSH2 0xBDC JUMPI PUSH1 0x2 DUP2 EQ PUSH2 0xBE6 JUMPI PUSH2 0xC02 JUMP JUMPDEST PUSH1 0x1 SWAP2 POP POP PUSH2 0x70A JUMP JUMPDEST PUSH1 0xFF DUP5 GT ISZERO PUSH2 0xBF7 JUMPI PUSH2 0xBF7 PUSH2 0xABB JUMP JUMPDEST POP POP PUSH1 0x1 DUP3 SHL PUSH2 0x70A JUMP JUMPDEST POP PUSH1 0x20 DUP4 LT PUSH2 0x133 DUP4 LT AND PUSH1 0x4E DUP5 LT PUSH1 0xB DUP5 LT AND OR ISZERO PUSH2 0xC25 JUMPI POP DUP2 DUP2 EXP PUSH2 0x70A JUMP JUMPDEST PUSH2 0xC31 PUSH0 NOT DUP5 DUP5 PUSH2 0xB69 JUMP JUMPDEST DUP1 PUSH0 NOT DIV DUP3 GT ISZERO PUSH2 0xC44 JUMPI PUSH2 0xC44 PUSH2 0xABB JUMP JUMPDEST MUL SWAP4 SWAP3 POP POP POP JUMP JUMPDEST PUSH0 PUSH2 0x7BA PUSH1 0xFF DUP5 AND DUP4 PUSH2 0xBAC JUMP INVALID LOG2 PUSH5 0x6970667358 0x22 SLT KECCAK256 PUSH9 0xF7199BA62683E64DF5 0xEB LOG3 0xDC GASPRICE SWAP10 MLOAD 0x4C CALLER SWAP5 BLOCKHASH EXTCALL 0xB5 0xDA LOG2 SSTORE 0xCD DIV 0xEB CALLDATASIZE 0x2A 0xAE 0xF7 PUSH5 0x736F6C6343 STOP ADDMOD 0x1E STOP CALLER ","sourceMap":"661:3653:8:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1349:822;;;;;;:::i;:::-;;:::i;:::-;;;611:25:87;;;599:2;584:18;1349:822:8;;;;;;;3427:296;;;;;;;;;;-1:-1:-1;3427:296:8;;;;;:::i;:::-;;:::i;:::-;;4023:116;;;;;;:::i;:::-;;:::i;2216:979::-;;;;;;:::i;:::-;;:::i;3199:224::-;;;;;;;;;;-1:-1:-1;3199:224:8;;;;;:::i;:::-;;:::i;4201:111::-;;;;;;;;;;-1:-1:-1;4201:111:8;;;;;:::i;:::-;;:::i;1349:822::-;1441:17;;1474:16;;;;;;;;:::i;:::-;-1:-1:-1;;;;;1474:30:8;;1466:64;;;;-1:-1:-1;;;1466:64:8;;;;;;;;;;;;1563:15;1544:6;:15;;;:34;;1536:64;;;;-1:-1:-1;;;;;;1536:64:8;;;;;;;;;;;;1632:1;1614:6;:15;;;:19;1606:50;;;;-1:-1:-1;;;1606:50:8;;;;;;;;;;;;1663:22;1688:120;837:4;1663:22;;1770:14;;;;:6;:14;:::i;:::-;-1:-1:-1;;;;;1762:23:8;-1:-1:-1;;;;;1762:23:8;;;;;;;;;;;;:40;1786:6;:15;;;;;;;;;;:::i;:::-;-1:-1:-1;;;;;1762:40:8;;;;;;;;;;;;;-1:-1:-1;1762:40:8;;;1707:28;;1720:14;;;;:6;:14;:::i;:::-;1707:12;:28::i;:::-;1689:46;;:15;;;;:46;:::i;:::-;1688:55;:120;:55;:120::i;:::-;1663:145;-1:-1:-1;1843:29:8;1856:15;;;;;;;;:::i;1843:29::-;1826:46;;:14;:46;:::i;:::-;1814:58;-1:-1:-1;1814:58:8;1899:23;;;;1886:36;;;;1878:111;;;;-1:-1:-1;;;1878:111:8;;;;;4563:25:87;;;;4604:18;;;4597:34;4536:18;;1878:111:8;;;;;;;;;-1:-1:-1;1996:91:8;;-1:-1:-1;2044:10:8;2064:4;2071:15;;;;2011:14;;;;2071:6;2011:14;:::i;:::-;-1:-1:-1;;;;;1996:47:8;;:91;;:47;:91::i;:::-;2093:73;2138:16;;;;;;;;:::i;:::-;2156:9;2108:15;;;;;;;;:::i;:::-;-1:-1:-1;;;;;2093:44:8;;:73;:44;:73::i;:::-;1460:711;1349:822;;;:::o;3427:296::-;-1:-1:-1;;;;;3526:21:8;;3518:51;;;;-1:-1:-1;;;3518:51:8;;;;;;;;;;;;-1:-1:-1;;;;;3583:22:8;;3575:52;;;;-1:-1:-1;;;3575:52:8;;;;;;;;;;;;-1:-1:-1;;;;;3633:16:8;;;:7;:16;;;;;;;;;;;:26;;;;;;;;;;;;;:35;;;3679:39;;4844:51:87;;;4911:18;;4904:60;;;;4980:18;;;4973:34;;;3679:39:8;;4832:2:87;4817:18;3679:39:8;;;;;;;3427:296;;;:::o;4023:116::-;4096:7;4118:16;;-1:-1:-1;;;4118:16:8;;;;;;;;;;;2216:979;2310:16;;2342;;;;;;;;:::i;:::-;-1:-1:-1;;;;;2342:30:8;;2334:64;;;;-1:-1:-1;;;2334:64:8;;;;;;;;;;;;2431:15;2412:6;:15;;;:34;;2404:64;;;;-1:-1:-1;;;;;;2404:64:8;;;;;;;;;;;;2501:1;2482:6;:16;;;:20;2474:51;;;;-1:-1:-1;;;2474:51:8;;;;;;;;;;;;2531:15;2564;;;;;;;;:::i;:::-;2549:56;;-1:-1:-1;;;2549:56:8;;2599:4;2549:56;;;5164:51:87;-1:-1:-1;;;;;2549:41:8;;;;;;;5137:18:87;;2549:56:8;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;2531:74;-1:-1:-1;2531:74:8;2630:16;;;;2619:27;;;;2611:81;;;;-1:-1:-1;;;2611:81:8;;;;;4563:25:87;;;;4604:18;;;4597:34;4536:18;;2611:81:8;4389:248:87;2611:81:8;-1:-1:-1;2699:19:8;;-1:-1:-1;2721:122:8;2699:19;;2794:14;;;;:6;:14;:::i;:::-;-1:-1:-1;;;;;2786:23:8;-1:-1:-1;;;;;2786:23:8;;;;;;;;;;;;:40;2810:6;:15;;;;;;;;;;:::i;:::-;-1:-1:-1;;;;;2786:40:8;-1:-1:-1;;;;;2786:40:8;;;;;;;;;;;;;837:4;2741:29;2754:6;:15;;;;;;;;;;:::i;2741:29::-;2722:48;;:16;;;;:48;:::i;2721:122::-;2699:144;-1:-1:-1;2874:28:8;2887:14;;;;:6;:14;:::i;2874:28::-;2860:42;;:11;:42;:::i;:::-;2849:53;-1:-1:-1;2849:53:8;2928:22;;;;2916:34;;;;2908:105;;;;-1:-1:-1;;;2908:105:8;;;;;4563:25:87;;;;4604:18;;;4597:34;4536:18;;2908:105:8;4389:248:87;2908:105:8;-1:-1:-1;3020:84:8;;-1:-1:-1;3068:10:8;3088:4;3095:8;3035:14;;;;:6;:14;:::i;3020:84::-;3110:80;3155:16;;;;;;;;:::i;:::-;3173;;;;3125:15;;;;;;;;:::i;3110:80::-;2328:867;;2216:979;;;:::o;3199:224::-;-1:-1:-1;;;;;3271:19:8;;3263:49;;;;-1:-1:-1;;;3263:49:8;;;;;;;;;;;;3335:1;3326:6;:10;3318:40;;;;-1:-1:-1;;;3318:40:8;;;;;;;;;;;;3364:54;-1:-1:-1;;;;;3364:34:8;;3399:10;3411:6;3364:34;:54::i;:::-;3199:224;;:::o;4201:111::-;4291:16;;-1:-1:-1;;;4291:16:8;;;;;;;;;;;1170:134;1230:7;1280:5;-1:-1:-1;;;;;1265:30:8;;:32;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;1260:37;;:2;:37;:::i;:::-;1253:45;;:2;:45;:::i;:::-;1245:54;1170:134;-1:-1:-1;;1170:134:8:o;7258:3683:47:-;7340:14;7391:12;7405:11;7420:12;7427:1;7430;7420:6;:12::i;:::-;7390:42;;;;7514:4;7522:1;7514:9;7510:365;;7849:11;7843:3;:17;;;;;:::i;:::-;;7836:24;;;;;;7510:365;8000:4;7985:11;:19;7981:142;;8024:84;5328:5;8044:16;;5327:36;940:4:43;5322:42:47;8024:11;:84::i;:::-;8375:17;8526:11;8523:1;8520;8513:25;8918:12;8948:15;;;8933:31;;9083:22;;;;;9816:1;9797;:15;;9796:21;;10049;;;10045:25;;10034:36;10119:21;;;10115:25;;10104:36;10191:21;;;10187:25;;10176:36;10262:21;;;10258:25;;10247:36;10335:21;;;10331:25;;10320:36;10409:21;;;10405:25;;;10394:36;9325:12;;;;9321:23;;;9346:1;9317:31;8638:18;;;8628:29;;;9432:11;;;;8681:19;;;;9176:14;;;;9425:18;;;;10884:13;;-1:-1:-1;;7258:3683:47;;;;;;:::o;1662:232:36:-;1767:47;1785:5;1792:4;1798:2;1802:5;1809:4;1767:17;:47::i;:::-;1762:126;;1837:40;;-1:-1:-1;;;1837:40:36;;-1:-1:-1;;;;;5182:32:87;;1837:40:36;;;5164:51:87;5137:18;;1837:40:36;5018:203:87;1762:126:36;1662:232;;;;:::o;1219:204::-;1306:37;1320:5;1327:2;1331:5;1338:4;1306:13;:37::i;:::-;1301:116;;1366:40;;-1:-1:-1;;;1366:40:36;;-1:-1:-1;;;;;5182:32:87;;1366:40:36;;;5164:51:87;5137:18;;1366:40:36;5018:203:87;1301:116:36;1219:204;;;:::o;1027:550:47:-;1088:12;;-1:-1:-1;;1471:1:47;1468;1461:20;1501:9;;;;1549:11;;;1535:12;;;;1531:30;;;;;1027:550;-1:-1:-1;;1027:550:47:o;1776:194:43:-;1881:10;1875:4;1868:24;1918:4;1912;1905:18;1949:4;1943;1936:18;10165:1393:36;10460:4;10454:11;-1:-1:-1;;;10323:12:36;10478:22;;;-1:-1:-1;;;;;10526:26:36;;;10520:4;10513:40;10579:24;;10573:4;10566:38;10624:4;10617:19;;;10323:12;10700:4;10323:12;10688:4;10323:12;;10672:5;10665;10660:45;10649:56;;10917:1;10910:4;10904:11;10901:18;10892:7;10888:32;10878:606;;11049:6;11039:7;11032:15;11028:28;11025:165;;;11105:16;11099:4;11094:3;11079:43;11155:16;11150:3;11143:29;11025:165;11466:1;11458:5;11446:18;11443:25;11424:16;11417:24;11413:56;11404:7;11400:70;11389:81;;10878:606;11504:4;11497:17;-1:-1:-1;11540:1:36;11534:4;11527:15;10165:1393;;-1:-1:-1;;;;;10165:1393:36:o;8373:1244::-;8600:4;8594:11;-1:-1:-1;;;8467:12:36;8618:22;;;-1:-1:-1;;;;;8666:24:36;;8660:4;8653:38;8711:4;8704:19;;;8467:12;8787:4;8467:12;8775:4;8467:12;;8759:5;8752;8747:45;8736:56;;9004:1;8997:4;8991:11;8988:18;8979:7;8975:32;8965:606;;9136:6;9126:7;9119:15;9115:28;9112:165;;;9192:16;9186:4;9181:3;9166:43;9242:16;9237:3;9230:29;9112:165;9553:1;9545:5;9533:18;9530:25;9511:16;9504:24;9500:56;9491:7;9487:70;9476:81;;8965:606;9591:4;9584:17;-1:-1:-1;8373:1244:36;;-1:-1:-1;;;;8373:1244:36:o;14:171:87:-;89:5;134:3;125:6;120:3;116:16;112:26;109:46;;;151:1;148;141:12;190:270;292:6;345:3;333:9;324:7;320:23;316:33;313:53;;;362:1;359;352:12;313:53;385:69;446:7;435:9;385:69;:::i;647:173::-;715:20;;-1:-1:-1;;;;;764:31:87;;754:42;;744:70;;810:1;807;800:12;744:70;647:173;;;:::o;825:374::-;902:6;910;918;971:2;959:9;950:7;946:23;942:32;939:52;;;987:1;984;977:12;939:52;1010:29;1029:9;1010:29;:::i;:::-;1000:39;;1058:38;1092:2;1081:9;1077:18;1058:38;:::i;:::-;825:374;;1048:48;;-1:-1:-1;;;1165:2:87;1150:18;;;;1137:32;;825:374::o;1204:165::-;1273:5;1318:3;1309:6;1304:3;1300:16;1296:26;1293:46;;;1335:1;1332;1325:12;1374:375;1470:6;1523:2;1511:9;1502:7;1498:23;1494:32;1491:52;;;1539:1;1536;1529:12;1491:52;1579:9;1566:23;1612:18;1604:6;1601:30;1598:50;;;1644:1;1641;1634:12;1598:50;1667:76;1735:7;1726:6;1715:9;1711:22;1667:76;:::i;:::-;1657:86;1374:375;-1:-1:-1;;;;1374:375:87:o;2411:300::-;2479:6;2487;2540:2;2528:9;2519:7;2515:23;2511:32;2508:52;;;2556:1;2553;2546:12;2508:52;2579:29;2598:9;2579:29;:::i;:::-;2569:39;2677:2;2662:18;;;;2649:32;;-1:-1:-1;;;2411:300:87:o;2716:818::-;2802:6;2810;2818;2826;2879:2;2867:9;2858:7;2854:23;2850:32;2847:52;;;2895:1;2892;2885:12;2847:52;2940:23;;;-1:-1:-1;3060:2:87;3045:18;;3032:32;;-1:-1:-1;3141:2:87;3126:18;;3113:32;3168:18;3157:30;;3154:50;;;3200:1;3197;3190:12;3154:50;3223:22;;3276:4;3268:13;;3264:27;-1:-1:-1;3254:55:87;;3305:1;3302;3295:12;3254:55;3345:2;3332:16;3371:18;3363:6;3360:30;3357:50;;;3403:1;3400;3393:12;3357:50;3448:7;3443:2;3434:6;3430:2;3426:15;3422:24;3419:37;3416:57;;;3469:1;3466;3459:12;3416:57;2716:818;;;;-1:-1:-1;3500:2:87;3492:11;;-1:-1:-1;;;2716:818:87:o;3539:186::-;3598:6;3651:2;3639:9;3630:7;3626:23;3622:32;3619:52;;;3667:1;3664;3657:12;3619:52;3690:29;3709:9;3690:29;:::i;3730:127::-;3791:10;3786:3;3782:20;3779:1;3772:31;3822:4;3819:1;3812:15;3846:4;3843:1;3836:15;3862:168;3935:9;;;3966;;3983:15;;;3977:22;;3963:37;3953:71;;4004:18;;:::i;4035:127::-;4096:10;4091:3;4087:20;4084:1;4077:31;4127:4;4124:1;4117:15;4151:4;4148:1;4141:15;4167:217;4207:1;4233;4223:132;;4277:10;4272:3;4268:20;4265:1;4258:31;4312:4;4309:1;4302:15;4340:4;4337:1;4330:15;4223:132;-1:-1:-1;4369:9:87;;4167:217::o;5226:184::-;5296:6;5349:2;5337:9;5328:7;5324:23;5320:32;5317:52;;;5365:1;5362;5355:12;5317:52;-1:-1:-1;5388:16:87;;5226:184;-1:-1:-1;5226:184:87:o;5415:273::-;5483:6;5536:2;5524:9;5515:7;5511:23;5507:32;5504:52;;;5552:1;5549;5542:12;5504:52;5584:9;5578:16;5634:4;5627:5;5623:16;5616:5;5613:27;5603:55;;5654:1;5651;5644:12;5693:151;5783:4;5776:12;;;5762;;;5758:31;;5801:14;;5798:40;;;5818:18;;:::i;5849:375::-;5937:1;5955:5;5969:249;5990:1;5980:8;5977:15;5969:249;;;6040:4;6035:3;6031:14;6025:4;6022:24;6019:50;;;6049:18;;:::i;:::-;6099:1;6089:8;6085:16;6082:49;;;6113:16;;;;6082:49;6196:1;6192:16;;;;;6152:15;;5969:249;;;5849:375;;;;;;:::o;6229:902::-;6278:5;6308:8;6298:80;;-1:-1:-1;6349:1:87;6363:5;;6298:80;6397:4;6387:76;;-1:-1:-1;6434:1:87;6448:5;;6387:76;6479:4;6497:1;6492:59;;;;6565:1;6560:174;;;;6472:262;;6492:59;6522:1;6513:10;;6536:5;;;6560:174;6597:3;6587:8;6584:17;6581:43;;;6604:18;;:::i;:::-;-1:-1:-1;;6660:1:87;6646:16;;6719:5;;6472:262;;6818:2;6808:8;6805:16;6799:3;6793:4;6790:13;6786:36;6780:2;6770:8;6767:16;6762:2;6756:4;6753:12;6749:35;6746:77;6743:203;;;-1:-1:-1;6855:19:87;;;6931:5;;6743:203;6978:42;-1:-1:-1;;7003:8:87;6997:4;6978:42;:::i;:::-;7056:6;7052:1;7048:6;7044:19;7035:7;7032:32;7029:58;;;7067:18;;:::i;:::-;7105:20;;6229:902;-1:-1:-1;;;6229:902:87:o;7136:140::-;7194:5;7223:47;7264:4;7254:8;7250:19;7244:4;7223:47;:::i"},"methodIdentifiers":{"exactInput((bytes,address,uint256,uint256,uint256))":"c04b8d59","exactInputSingle((address,address,uint24,address,uint256,uint256,uint256,uint160))":"414bf389","exactOutput((bytes,address,uint256,uint256,uint256))":"f28c0498","exactOutputSingle((address,address,uint24,address,uint256,uint256,uint256,uint160))":"db3e2198","setCurrentPrice(address,address,uint256)":"4562e015","uniswapV3SwapCallback(int256,int256,bytes)":"fa461e33","withdraw(address,uint256)":"f3fef3a3"}},"metadata":"{\"compiler\":{\"version\":\"0.8.30+commit.73712a01\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"inputs\":[{\"internalType\":\"address\",\"name\":\"admin\",\"type\":\"address\"}],\"stateMutability\":\"nonpayable\",\"type\":\"constructor\"},{\"inputs\":[],\"name\":\"AdminCannotBeZero\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"AmountCannotBeZero\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"DeadlineInThePast\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"amountIn\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"amountInMaximum\",\"type\":\"uint256\"}],\"name\":\"InputAmountExceedsSlippage\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"available\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"required\",\"type\":\"uint256\"}],\"name\":\"NotEnoughBalance\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"NotImplemented\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"amountOut\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"amountOutMinimum\",\"type\":\"uint256\"}],\"name\":\"OutputAmountLessThanSlippage\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"RecipientCannotBeZero\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"token\",\"type\":\"address\"}],\"name\":\"SafeERC20FailedOperation\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"TokenCannotBeZero\",\"type\":\"error\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"address\",\"name\":\"tokenIn\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"address\",\"name\":\"tokenOut\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"price\",\"type\":\"uint256\"}],\"name\":\"PriceUpdated\",\"type\":\"event\"},{\"inputs\":[{\"components\":[{\"internalType\":\"bytes\",\"name\":\"path\",\"type\":\"bytes\"},{\"internalType\":\"address\",\"name\":\"recipient\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"deadline\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"amountIn\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"amountOutMinimum\",\"type\":\"uint256\"}],\"internalType\":\"struct ISwapRouter.ExactInputParams\",\"name\":\"\",\"type\":\"tuple\"}],\"name\":\"exactInput\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"payable\",\"type\":\"function\"},{\"inputs\":[{\"components\":[{\"internalType\":\"address\",\"name\":\"tokenIn\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"tokenOut\",\"type\":\"address\"},{\"internalType\":\"uint24\",\"name\":\"fee\",\"type\":\"uint24\"},{\"internalType\":\"address\",\"name\":\"recipient\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"deadline\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"amountIn\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"amountOutMinimum\",\"type\":\"uint256\"},{\"internalType\":\"uint160\",\"name\":\"sqrtPriceLimitX96\",\"type\":\"uint160\"}],\"internalType\":\"struct ISwapRouter.ExactInputSingleParams\",\"name\":\"params\",\"type\":\"tuple\"}],\"name\":\"exactInputSingle\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"amountOut\",\"type\":\"uint256\"}],\"stateMutability\":\"payable\",\"type\":\"function\"},{\"inputs\":[{\"components\":[{\"internalType\":\"bytes\",\"name\":\"path\",\"type\":\"bytes\"},{\"internalType\":\"address\",\"name\":\"recipient\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"deadline\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"amountOut\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"amountInMaximum\",\"type\":\"uint256\"}],\"internalType\":\"struct ISwapRouter.ExactOutputParams\",\"name\":\"\",\"type\":\"tuple\"}],\"name\":\"exactOutput\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"payable\",\"type\":\"function\"},{\"inputs\":[{\"components\":[{\"internalType\":\"address\",\"name\":\"tokenIn\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"tokenOut\",\"type\":\"address\"},{\"internalType\":\"uint24\",\"name\":\"fee\",\"type\":\"uint24\"},{\"internalType\":\"address\",\"name\":\"recipient\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"deadline\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"amountOut\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"amountInMaximum\",\"type\":\"uint256\"},{\"internalType\":\"uint160\",\"name\":\"sqrtPriceLimitX96\",\"type\":\"uint160\"}],\"internalType\":\"struct ISwapRouter.ExactOutputSingleParams\",\"name\":\"params\",\"type\":\"tuple\"}],\"name\":\"exactOutputSingle\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"amountIn\",\"type\":\"uint256\"}],\"stateMutability\":\"payable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"tokenIn\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"tokenOut\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"price_\",\"type\":\"uint256\"}],\"name\":\"setCurrentPrice\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"int256\",\"name\":\"\",\"type\":\"int256\"},{\"internalType\":\"int256\",\"name\":\"\",\"type\":\"int256\"},{\"internalType\":\"bytes\",\"name\":\"\",\"type\":\"bytes\"}],\"name\":\"uniswapV3SwapCallback\",\"outputs\":[],\"stateMutability\":\"pure\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"token\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"}],\"name\":\"withdraw\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"}],\"devdoc\":{\"errors\":{\"SafeERC20FailedOperation(address)\":[{\"details\":\"An operation with an ERC-20 token failed.\"}]},\"kind\":\"dev\",\"methods\":{\"exactInput((bytes,address,uint256,uint256,uint256))\":{\"params\":{\"params\":\"The parameters necessary for the multi-hop swap, encoded as `ExactInputParams` in calldata\"},\"returns\":{\"_0\":\"The amount of the received token\"}},\"exactInputSingle((address,address,uint24,address,uint256,uint256,uint256,uint160))\":{\"params\":{\"params\":\"The parameters necessary for the swap, encoded as `ExactInputSingleParams` in calldata\"},\"returns\":{\"amountOut\":\"The amount of the received token\"}},\"exactOutput((bytes,address,uint256,uint256,uint256))\":{\"params\":{\"params\":\"The parameters necessary for the multi-hop swap, encoded as `ExactOutputParams` in calldata\"},\"returns\":{\"_0\":\"The amount of the input token\"}},\"exactOutputSingle((address,address,uint24,address,uint256,uint256,uint256,uint160))\":{\"params\":{\"params\":\"The parameters necessary for the swap, encoded as `ExactOutputSingleParams` in calldata\"},\"returns\":{\"amountIn\":\"The amount of the input token\"}}},\"title\":\"SwapRouterMock\",\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{\"exactInput((bytes,address,uint256,uint256,uint256))\":{\"notice\":\"This function is not implemented\"},\"exactInputSingle((address,address,uint24,address,uint256,uint256,uint256,uint160))\":{\"notice\":\"Swaps `amountIn` of one token for as much as possible of another token\"},\"exactOutput((bytes,address,uint256,uint256,uint256))\":{\"notice\":\"This function is not implemented\"},\"exactOutputSingle((address,address,uint24,address,uint256,uint256,uint256,uint160))\":{\"notice\":\"Swaps as little as possible of one token for `amountOut` of another token\"},\"uniswapV3SwapCallback(int256,int256,bytes)\":{\"notice\":\"This function is not implemented\"}},\"notice\":\"SwapRouter mock that can swap a single type of token for several others\",\"version\":1}},\"settings\":{\"compilationTarget\":{\"@ensuro/swaplibrary/contracts/mocks/SwapRouterMock.sol\":\"SwapRouterMock\"},\"evmVersion\":\"prague\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"enabled\":true,\"runs\":200},\"remappings\":[]},\"sources\":{\"@ensuro/swaplibrary/contracts/interfaces/ISwapRouterErrors.sol\":{\"keccak256\":\"0x896abfd41692c6fdce8bff95510374807df8661c25650bf5974abaa2f89f91f4\",\"license\":\"Apache-2.0\",\"urls\":[\"bzz-raw://1c221f36a8aad0c42df332f1984c2f5c1f251daf33858ff42b0d9aaa6b6eab3c\",\"dweb:/ipfs/Qmf8d7HwMfqqPxChyxn3X6ZikBmuxW8fGBCaADw5yKSzCL\"]},\"@ensuro/swaplibrary/contracts/mocks/SwapRouterMock.sol\":{\"keccak256\":\"0xfce8c95dadbdb64b76c8aeb63a9879c98f7fab7d21f02aea24794cd56b75ee10\",\"license\":\"Apache-2.0\",\"urls\":[\"bzz-raw://044a7afb8d1fc0c8562640ea8ff0e7ee20974f6ba8b3ef6428625451c55470de\",\"dweb:/ipfs/Qmb6Kdk8Mwj27SHDWEzvDk6fUGD5JrKhWVX2h88yZCmM2v\"]},\"@openzeppelin/contracts/interfaces/IERC1363.sol\":{\"keccak256\":\"0xd5ea07362ab630a6a3dee4285a74cf2377044ca2e4be472755ad64d7c5d4b69d\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://da5e832b40fc5c3145d3781e2e5fa60ac2052c9d08af7e300dc8ab80c4343100\",\"dweb:/ipfs/QmTzf7N5ZUdh5raqtzbM11yexiUoLC9z3Ws632MCuycq1d\"]},\"@openzeppelin/contracts/interfaces/IERC165.sol\":{\"keccak256\":\"0x0afcb7e740d1537b252cb2676f600465ce6938398569f09ba1b9ca240dde2dfc\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://1c299900ac4ec268d4570ecef0d697a3013cd11a6eb74e295ee3fbc945056037\",\"dweb:/ipfs/Qmab9owJoxcA7vJT5XNayCMaUR1qxqj1NDzzisduwaJMcZ\"]},\"@openzeppelin/contracts/interfaces/IERC20.sol\":{\"keccak256\":\"0x1a6221315ce0307746c2c4827c125d821ee796c74a676787762f4778671d4f44\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://1bb2332a7ee26dd0b0de9b7fe266749f54820c99ab6a3bcb6f7e6b751d47ee2d\",\"dweb:/ipfs/QmcRWpaBeCYkhy68PR3B4AgD7asuQk7PwkWxrvJbZcikLF\"]},\"@openzeppelin/contracts/token/ERC20/IERC20.sol\":{\"keccak256\":\"0x74ed01eb66b923d0d0cfe3be84604ac04b76482a55f9dd655e1ef4d367f95bc2\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://5282825a626cfe924e504274b864a652b0023591fa66f06a067b25b51ba9b303\",\"dweb:/ipfs/QmeCfPykghhMc81VJTrHTC7sF6CRvaA1FXVq2pJhwYp1dV\"]},\"@openzeppelin/contracts/token/ERC20/extensions/IERC20Metadata.sol\":{\"keccak256\":\"0xd6fa4088198f04eef10c5bce8a2f4d60554b7ec4b987f684393c01bf79b94d9f\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://f95ee0bbd4dd3ac730d066ba3e785ded4565e890dbec2fa7d3b9fe3bad9d0d6e\",\"dweb:/ipfs/QmSLr6bHkPFWT7ntj34jmwfyskpwo97T9jZUrk5sz3sdtR\"]},\"@openzeppelin/contracts/token/ERC20/utils/SafeERC20.sol\":{\"keccak256\":\"0x304d732678032a9781ae85c8f204c8fba3d3a5e31c02616964e75cfdc5049098\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://299ced486011781dc98f638059678323c03079fefae1482abaa2135b22fa92d0\",\"dweb:/ipfs/QmbZNbcPTBxNvwChavN2kkZZs7xHhYL7mv51KrxMhsMs3j\"]},\"@openzeppelin/contracts/utils/Panic.sol\":{\"keccak256\":\"0xf7fe324703a64fc51702311dc51562d5cb1497734f074e4f483bfb6717572d7a\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://c6a5ff4f9fd8649b7ee20800b7fa387d3465bd77cf20c2d1068cd5c98e1ed57a\",\"dweb:/ipfs/QmVSaVJf9FXFhdYEYeCEfjMVHrxDh5qL4CGkxdMWpQCrqG\"]},\"@openzeppelin/contracts/utils/introspection/IERC165.sol\":{\"keccak256\":\"0x8891738ffe910f0cf2da09566928589bf5d63f4524dd734fd9cedbac3274dd5c\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://971f954442df5c2ef5b5ebf1eb245d7105d9fbacc7386ee5c796df1d45b21617\",\"dweb:/ipfs/QmadRjHbkicwqwwh61raUEapaVEtaLMcYbQZWs9gUkgj3u\"]},\"@openzeppelin/contracts/utils/math/Math.sol\":{\"keccak256\":\"0x09e3f1c72d4c5cbe8e2644ab7313f8f7177533ae2f4c24cdcbbeaf520a73734c\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://93208401215d539fa2d81626b207c1f611def7883d0e447b3b5969ebaa7b3c2c\",\"dweb:/ipfs/QmXPxDnQPx8LAweX5ZJqEcwkvs59kP4c64VVDG1Jjq1mef\"]},\"@openzeppelin/contracts/utils/math/SafeCast.sol\":{\"keccak256\":\"0x195533c86d0ef72bcc06456a4f66a9b941f38eb403739b00f21fd7c1abd1ae54\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://b1d578337048cad08c1c03041cca5978eff5428aa130c781b271ad9e5566e1f8\",\"dweb:/ipfs/QmPFKL2r9CBsMwmUqqdcFPfHZB2qcs9g1HDrPxzWSxomvy\"]},\"@uniswap/v3-core/contracts/interfaces/callback/IUniswapV3SwapCallback.sol\":{\"keccak256\":\"0x3f485fb1a44e8fbeadefb5da07d66edab3cfe809f0ac4074b1e54e3eb3c4cf69\",\"license\":\"GPL-2.0-or-later\",\"urls\":[\"bzz-raw://095ce0626b41318c772b3ebf19d548282607f6a8f3d6c41c13edfbd5370c8652\",\"dweb:/ipfs/QmVDZfJJ89UUCE1hMyzqpkZAtQ8jUsBgZNE5AMRG7RzRFS\"]},\"@uniswap/v3-periphery/contracts/interfaces/ISwapRouter.sol\":{\"keccak256\":\"0x9bfaf1feb32814623e627ab70f2409760b15d95f1f9b058e2b3399a8bb732975\",\"license\":\"GPL-2.0-or-later\",\"urls\":[\"bzz-raw://a8a2c3e55965b61bcd91993d8e1d5d34b8b8a63e0fdfce87a85f6af92526fd53\",\"dweb:/ipfs/QmQj2CSCSwqDSU4KMNWxGsN2336Cy64WgpV1X1EHXNZWxM\"]}},\"version\":1}","storageLayout":{"storage":[{"astId":2238,"contract":"@ensuro/swaplibrary/contracts/mocks/SwapRouterMock.sol:SwapRouterMock","label":"_prices","offset":0,"slot":"0","type":"t_mapping(t_address,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"}}}}},"@ensuro/utils/contracts/TestCurrency.sol":{"TestCurrency":{"abi":[{"inputs":[{"internalType":"string","name":"name_","type":"string"},{"internalType":"string","name":"symbol_","type":"string"},{"internalType":"uint256","name":"initialSupply","type":"uint256"},{"internalType":"uint8","name":"decimals_","type":"uint8"}],"stateMutability":"nonpayable","type":"constructor"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"allowance","type":"uint256"},{"internalType":"uint256","name":"needed","type":"uint256"}],"name":"ERC20InsufficientAllowance","type":"error"},{"inputs":[{"internalType":"address","name":"sender","type":"address"},{"internalType":"uint256","name":"balance","type":"uint256"},{"internalType":"uint256","name":"needed","type":"uint256"}],"name":"ERC20InsufficientBalance","type":"error"},{"inputs":[{"internalType":"address","name":"approver","type":"address"}],"name":"ERC20InvalidApprover","type":"error"},{"inputs":[{"internalType":"address","name":"receiver","type":"address"}],"name":"ERC20InvalidReceiver","type":"error"},{"inputs":[{"internalType":"address","name":"sender","type":"address"}],"name":"ERC20InvalidSender","type":"error"},{"inputs":[{"internalType":"address","name":"spender","type":"address"}],"name":"ERC20InvalidSpender","type":"error"},{"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":"value","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":"recipient","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"burn","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"decimals","outputs":[{"internalType":"uint8","name":"","type":"uint8"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"recipient","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"mint","outputs":[],"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":"to","type":"address"},{"internalType":"uint256","name":"value","type":"uint256"}],"name":"transfer","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"from","type":"address"},{"internalType":"address","name":"to","type":"address"},{"internalType":"uint256","name":"value","type":"uint256"}],"name":"transferFrom","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"}],"evm":{"bytecode":{"functionDebugData":{"@_2673":{"entryPoint":null,"id":2673,"parameterSlots":4,"returnSlots":0},"@_8138":{"entryPoint":null,"id":8138,"parameterSlots":2,"returnSlots":0},"@_mint_8441":{"entryPoint":102,"id":8441,"parameterSlots":2,"returnSlots":0},"@_update_8408":{"entryPoint":163,"id":8408,"parameterSlots":3,"returnSlots":0},"abi_decode_string_fromMemory":{"entryPoint":477,"id":null,"parameterSlots":2,"returnSlots":1},"abi_decode_tuple_t_string_memory_ptrt_string_memory_ptrt_uint256t_uint8_fromMemory":{"entryPoint":614,"id":null,"parameterSlots":2,"returnSlots":4},"abi_encode_tuple_t_address__to_t_address__fromStack_reversed":{"entryPoint":null,"id":null,"parameterSlots":2,"returnSlots":1},"abi_encode_tuple_t_address_t_uint256_t_uint256__to_t_address_t_uint256_t_uint256__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},"array_dataslot_string_storage":{"entryPoint":null,"id":null,"parameterSlots":1,"returnSlots":1},"checked_add_t_uint256":{"entryPoint":1065,"id":null,"parameterSlots":2,"returnSlots":1},"clean_up_bytearray_end_slots_string_storage":{"entryPoint":803,"id":null,"parameterSlots":3,"returnSlots":0},"copy_byte_array_to_storage_from_t_string_memory_ptr_to_t_string_storage":{"entryPoint":879,"id":null,"parameterSlots":2,"returnSlots":0},"extract_byte_array_length":{"entryPoint":747,"id":null,"parameterSlots":1,"returnSlots":1},"extract_used_part_and_set_length_of_short_byte_array":{"entryPoint":null,"id":null,"parameterSlots":2,"returnSlots":1},"panic_error_0x41":{"entryPoint":457,"id":null,"parameterSlots":0,"returnSlots":0}},"generatedSources":[{"ast":{"nativeSrc":"0:5121:87","nodeType":"YulBlock","src":"0:5121:87","statements":[{"nativeSrc":"6:3:87","nodeType":"YulBlock","src":"6:3:87","statements":[]},{"body":{"nativeSrc":"46:95:87","nodeType":"YulBlock","src":"46:95:87","statements":[{"expression":{"arguments":[{"kind":"number","nativeSrc":"63:1:87","nodeType":"YulLiteral","src":"63:1:87","type":"","value":"0"},{"arguments":[{"kind":"number","nativeSrc":"70:3:87","nodeType":"YulLiteral","src":"70:3:87","type":"","value":"224"},{"kind":"number","nativeSrc":"75:10:87","nodeType":"YulLiteral","src":"75:10:87","type":"","value":"0x4e487b71"}],"functionName":{"name":"shl","nativeSrc":"66:3:87","nodeType":"YulIdentifier","src":"66:3:87"},"nativeSrc":"66:20:87","nodeType":"YulFunctionCall","src":"66:20:87"}],"functionName":{"name":"mstore","nativeSrc":"56:6:87","nodeType":"YulIdentifier","src":"56:6:87"},"nativeSrc":"56:31:87","nodeType":"YulFunctionCall","src":"56:31:87"},"nativeSrc":"56:31:87","nodeType":"YulExpressionStatement","src":"56:31:87"},{"expression":{"arguments":[{"kind":"number","nativeSrc":"103:1:87","nodeType":"YulLiteral","src":"103:1:87","type":"","value":"4"},{"kind":"number","nativeSrc":"106:4:87","nodeType":"YulLiteral","src":"106:4:87","type":"","value":"0x41"}],"functionName":{"name":"mstore","nativeSrc":"96:6:87","nodeType":"YulIdentifier","src":"96:6:87"},"nativeSrc":"96:15:87","nodeType":"YulFunctionCall","src":"96:15:87"},"nativeSrc":"96:15:87","nodeType":"YulExpressionStatement","src":"96:15:87"},{"expression":{"arguments":[{"kind":"number","nativeSrc":"127:1:87","nodeType":"YulLiteral","src":"127:1:87","type":"","value":"0"},{"kind":"number","nativeSrc":"130:4:87","nodeType":"YulLiteral","src":"130:4:87","type":"","value":"0x24"}],"functionName":{"name":"revert","nativeSrc":"120:6:87","nodeType":"YulIdentifier","src":"120:6:87"},"nativeSrc":"120:15:87","nodeType":"YulFunctionCall","src":"120:15:87"},"nativeSrc":"120:15:87","nodeType":"YulExpressionStatement","src":"120:15:87"}]},"name":"panic_error_0x41","nativeSrc":"14:127:87","nodeType":"YulFunctionDefinition","src":"14:127:87"},{"body":{"nativeSrc":"210:659:87","nodeType":"YulBlock","src":"210:659:87","statements":[{"body":{"nativeSrc":"259:16:87","nodeType":"YulBlock","src":"259:16:87","statements":[{"expression":{"arguments":[{"kind":"number","nativeSrc":"268:1:87","nodeType":"YulLiteral","src":"268:1:87","type":"","value":"0"},{"kind":"number","nativeSrc":"271:1:87","nodeType":"YulLiteral","src":"271:1:87","type":"","value":"0"}],"functionName":{"name":"revert","nativeSrc":"261:6:87","nodeType":"YulIdentifier","src":"261:6:87"},"nativeSrc":"261:12:87","nodeType":"YulFunctionCall","src":"261:12:87"},"nativeSrc":"261:12:87","nodeType":"YulExpressionStatement","src":"261:12:87"}]},"condition":{"arguments":[{"arguments":[{"arguments":[{"name":"offset","nativeSrc":"238:6:87","nodeType":"YulIdentifier","src":"238:6:87"},{"kind":"number","nativeSrc":"246:4:87","nodeType":"YulLiteral","src":"246:4:87","type":"","value":"0x1f"}],"functionName":{"name":"add","nativeSrc":"234:3:87","nodeType":"YulIdentifier","src":"234:3:87"},"nativeSrc":"234:17:87","nodeType":"YulFunctionCall","src":"234:17:87"},{"name":"end","nativeSrc":"253:3:87","nodeType":"YulIdentifier","src":"253:3:87"}],"functionName":{"name":"slt","nativeSrc":"230:3:87","nodeType":"YulIdentifier","src":"230:3:87"},"nativeSrc":"230:27:87","nodeType":"YulFunctionCall","src":"230:27:87"}],"functionName":{"name":"iszero","nativeSrc":"223:6:87","nodeType":"YulIdentifier","src":"223:6:87"},"nativeSrc":"223:35:87","nodeType":"YulFunctionCall","src":"223:35:87"},"nativeSrc":"220:55:87","nodeType":"YulIf","src":"220:55:87"},{"nativeSrc":"284:27:87","nodeType":"YulVariableDeclaration","src":"284:27:87","value":{"arguments":[{"name":"offset","nativeSrc":"304:6:87","nodeType":"YulIdentifier","src":"304:6:87"}],"functionName":{"name":"mload","nativeSrc":"298:5:87","nodeType":"YulIdentifier","src":"298:5:87"},"nativeSrc":"298:13:87","nodeType":"YulFunctionCall","src":"298:13:87"},"variables":[{"name":"length","nativeSrc":"288:6:87","nodeType":"YulTypedName","src":"288:6:87","type":""}]},{"body":{"nativeSrc":"354:22:87","nodeType":"YulBlock","src":"354:22:87","statements":[{"expression":{"arguments":[],"functionName":{"name":"panic_error_0x41","nativeSrc":"356:16:87","nodeType":"YulIdentifier","src":"356:16:87"},"nativeSrc":"356:18:87","nodeType":"YulFunctionCall","src":"356:18:87"},"nativeSrc":"356:18:87","nodeType":"YulExpressionStatement","src":"356:18:87"}]},"condition":{"arguments":[{"name":"length","nativeSrc":"326:6:87","nodeType":"YulIdentifier","src":"326:6:87"},{"arguments":[{"arguments":[{"kind":"number","nativeSrc":"342:2:87","nodeType":"YulLiteral","src":"342:2:87","type":"","value":"64"},{"kind":"number","nativeSrc":"346:1:87","nodeType":"YulLiteral","src":"346:1:87","type":"","value":"1"}],"functionName":{"name":"shl","nativeSrc":"338:3:87","nodeType":"YulIdentifier","src":"338:3:87"},"nativeSrc":"338:10:87","nodeType":"YulFunctionCall","src":"338:10:87"},{"kind":"number","nativeSrc":"350:1:87","nodeType":"YulLiteral","src":"350:1:87","type":"","value":"1"}],"functionName":{"name":"sub","nativeSrc":"334:3:87","nodeType":"YulIdentifier","src":"334:3:87"},"nativeSrc":"334:18:87","nodeType":"YulFunctionCall","src":"334:18:87"}],"functionName":{"name":"gt","nativeSrc":"323:2:87","nodeType":"YulIdentifier","src":"323:2:87"},"nativeSrc":"323:30:87","nodeType":"YulFunctionCall","src":"323:30:87"},"nativeSrc":"320:56:87","nodeType":"YulIf","src":"320:56:87"},{"nativeSrc":"385:23:87","nodeType":"YulVariableDeclaration","src":"385:23:87","value":{"arguments":[{"kind":"number","nativeSrc":"405:2:87","nodeType":"YulLiteral","src":"405:2:87","type":"","value":"64"}],"functionName":{"name":"mload","nativeSrc":"399:5:87","nodeType":"YulIdentifier","src":"399:5:87"},"nativeSrc":"399:9:87","nodeType":"YulFunctionCall","src":"399:9:87"},"variables":[{"name":"memPtr","nativeSrc":"389:6:87","nodeType":"YulTypedName","src":"389:6:87","type":""}]},{"nativeSrc":"417:85:87","nodeType":"YulVariableDeclaration","src":"417:85:87","value":{"arguments":[{"name":"memPtr","nativeSrc":"439:6:87","nodeType":"YulIdentifier","src":"439:6:87"},{"arguments":[{"arguments":[{"arguments":[{"arguments":[{"name":"length","nativeSrc":"463:6:87","nodeType":"YulIdentifier","src":"463:6:87"},{"kind":"number","nativeSrc":"471:4:87","nodeType":"YulLiteral","src":"471:4:87","type":"","value":"0x1f"}],"functionName":{"name":"add","nativeSrc":"459:3:87","nodeType":"YulIdentifier","src":"459:3:87"},"nativeSrc":"459:17:87","nodeType":"YulFunctionCall","src":"459:17:87"},{"arguments":[{"kind":"number","nativeSrc":"482:2:87","nodeType":"YulLiteral","src":"482:2:87","type":"","value":"31"}],"functionName":{"name":"not","nativeSrc":"478:3:87","nodeType":"YulIdentifier","src":"478:3:87"},"nativeSrc":"478:7:87","nodeType":"YulFunctionCall","src":"478:7:87"}],"functionName":{"name":"and","nativeSrc":"455:3:87","nodeType":"YulIdentifier","src":"455:3:87"},"nativeSrc":"455:31:87","nodeType":"YulFunctionCall","src":"455:31:87"},{"kind":"number","nativeSrc":"488:2:87","nodeType":"YulLiteral","src":"488:2:87","type":"","value":"63"}],"functionName":{"name":"add","nativeSrc":"451:3:87","nodeType":"YulIdentifier","src":"451:3:87"},"nativeSrc":"451:40:87","nodeType":"YulFunctionCall","src":"451:40:87"},{"arguments":[{"kind":"number","nativeSrc":"497:2:87","nodeType":"YulLiteral","src":"497:2:87","type":"","value":"31"}],"functionName":{"name":"not","nativeSrc":"493:3:87","nodeType":"YulIdentifier","src":"493:3:87"},"nativeSrc":"493:7:87","nodeType":"YulFunctionCall","src":"493:7:87"}],"functionName":{"name":"and","nativeSrc":"447:3:87","nodeType":"YulIdentifier","src":"447:3:87"},"nativeSrc":"447:54:87","nodeType":"YulFunctionCall","src":"447:54:87"}],"functionName":{"name":"add","nativeSrc":"435:3:87","nodeType":"YulIdentifier","src":"435:3:87"},"nativeSrc":"435:67:87","nodeType":"YulFunctionCall","src":"435:67:87"},"variables":[{"name":"newFreePtr","nativeSrc":"421:10:87","nodeType":"YulTypedName","src":"421:10:87","type":""}]},{"body":{"nativeSrc":"577:22:87","nodeType":"YulBlock","src":"577:22:87","statements":[{"expression":{"arguments":[],"functionName":{"name":"panic_error_0x41","nativeSrc":"579:16:87","nodeType":"YulIdentifier","src":"579:16:87"},"nativeSrc":"579:18:87","nodeType":"YulFunctionCall","src":"579:18:87"},"nativeSrc":"579:18:87","nodeType":"YulExpressionStatement","src":"579:18:87"}]},"condition":{"arguments":[{"arguments":[{"name":"newFreePtr","nativeSrc":"520:10:87","nodeType":"YulIdentifier","src":"520:10:87"},{"arguments":[{"arguments":[{"kind":"number","nativeSrc":"540:2:87","nodeType":"YulLiteral","src":"540:2:87","type":"","value":"64"},{"kind":"number","nativeSrc":"544:1:87","nodeType":"YulLiteral","src":"544:1:87","type":"","value":"1"}],"functionName":{"name":"shl","nativeSrc":"536:3:87","nodeType":"YulIdentifier","src":"536:3:87"},"nativeSrc":"536:10:87","nodeType":"YulFunctionCall","src":"536:10:87"},{"kind":"number","nativeSrc":"548:1:87","nodeType":"YulLiteral","src":"548:1:87","type":"","value":"1"}],"functionName":{"name":"sub","nativeSrc":"532:3:87","nodeType":"YulIdentifier","src":"532:3:87"},"nativeSrc":"532:18:87","nodeType":"YulFunctionCall","src":"532:18:87"}],"functionName":{"name":"gt","nativeSrc":"517:2:87","nodeType":"YulIdentifier","src":"517:2:87"},"nativeSrc":"517:34:87","nodeType":"YulFunctionCall","src":"517:34:87"},{"arguments":[{"name":"newFreePtr","nativeSrc":"556:10:87","nodeType":"YulIdentifier","src":"556:10:87"},{"name":"memPtr","nativeSrc":"568:6:87","nodeType":"YulIdentifier","src":"568:6:87"}],"functionName":{"name":"lt","nativeSrc":"553:2:87","nodeType":"YulIdentifier","src":"553:2:87"},"nativeSrc":"553:22:87","nodeType":"YulFunctionCall","src":"553:22:87"}],"functionName":{"name":"or","nativeSrc":"514:2:87","nodeType":"YulIdentifier","src":"514:2:87"},"nativeSrc":"514:62:87","nodeType":"YulFunctionCall","src":"514:62:87"},"nativeSrc":"511:88:87","nodeType":"YulIf","src":"511:88:87"},{"expression":{"arguments":[{"kind":"number","nativeSrc":"615:2:87","nodeType":"YulLiteral","src":"615:2:87","type":"","value":"64"},{"name":"newFreePtr","nativeSrc":"619:10:87","nodeType":"YulIdentifier","src":"619:10:87"}],"functionName":{"name":"mstore","nativeSrc":"608:6:87","nodeType":"YulIdentifier","src":"608:6:87"},"nativeSrc":"608:22:87","nodeType":"YulFunctionCall","src":"608:22:87"},"nativeSrc":"608:22:87","nodeType":"YulExpressionStatement","src":"608:22:87"},{"expression":{"arguments":[{"name":"memPtr","nativeSrc":"646:6:87","nodeType":"YulIdentifier","src":"646:6:87"},{"name":"length","nativeSrc":"654:6:87","nodeType":"YulIdentifier","src":"654:6:87"}],"functionName":{"name":"mstore","nativeSrc":"639:6:87","nodeType":"YulIdentifier","src":"639:6:87"},"nativeSrc":"639:22:87","nodeType":"YulFunctionCall","src":"639:22:87"},"nativeSrc":"639:22:87","nodeType":"YulExpressionStatement","src":"639:22:87"},{"body":{"nativeSrc":"713:16:87","nodeType":"YulBlock","src":"713:16:87","statements":[{"expression":{"arguments":[{"kind":"number","nativeSrc":"722:1:87","nodeType":"YulLiteral","src":"722:1:87","type":"","value":"0"},{"kind":"number","nativeSrc":"725:1:87","nodeType":"YulLiteral","src":"725:1:87","type":"","value":"0"}],"functionName":{"name":"revert","nativeSrc":"715:6:87","nodeType":"YulIdentifier","src":"715:6:87"},"nativeSrc":"715:12:87","nodeType":"YulFunctionCall","src":"715:12:87"},"nativeSrc":"715:12:87","nodeType":"YulExpressionStatement","src":"715:12:87"}]},"condition":{"arguments":[{"arguments":[{"arguments":[{"name":"offset","nativeSrc":"684:6:87","nodeType":"YulIdentifier","src":"684:6:87"},{"name":"length","nativeSrc":"692:6:87","nodeType":"YulIdentifier","src":"692:6:87"}],"functionName":{"name":"add","nativeSrc":"680:3:87","nodeType":"YulIdentifier","src":"680:3:87"},"nativeSrc":"680:19:87","nodeType":"YulFunctionCall","src":"680:19:87"},{"kind":"number","nativeSrc":"701:4:87","nodeType":"YulLiteral","src":"701:4:87","type":"","value":"0x20"}],"functionName":{"name":"add","nativeSrc":"676:3:87","nodeType":"YulIdentifier","src":"676:3:87"},"nativeSrc":"676:30:87","nodeType":"YulFunctionCall","src":"676:30:87"},{"name":"end","nativeSrc":"708:3:87","nodeType":"YulIdentifier","src":"708:3:87"}],"functionName":{"name":"gt","nativeSrc":"673:2:87","nodeType":"YulIdentifier","src":"673:2:87"},"nativeSrc":"673:39:87","nodeType":"YulFunctionCall","src":"673:39:87"},"nativeSrc":"670:59:87","nodeType":"YulIf","src":"670:59:87"},{"expression":{"arguments":[{"arguments":[{"name":"memPtr","nativeSrc":"748:6:87","nodeType":"YulIdentifier","src":"748:6:87"},{"kind":"number","nativeSrc":"756:4:87","nodeType":"YulLiteral","src":"756:4:87","type":"","value":"0x20"}],"functionName":{"name":"add","nativeSrc":"744:3:87","nodeType":"YulIdentifier","src":"744:3:87"},"nativeSrc":"744:17:87","nodeType":"YulFunctionCall","src":"744:17:87"},{"arguments":[{"name":"offset","nativeSrc":"767:6:87","nodeType":"YulIdentifier","src":"767:6:87"},{"kind":"number","nativeSrc":"775:4:87","nodeType":"YulLiteral","src":"775:4:87","type":"","value":"0x20"}],"functionName":{"name":"add","nativeSrc":"763:3:87","nodeType":"YulIdentifier","src":"763:3:87"},"nativeSrc":"763:17:87","nodeType":"YulFunctionCall","src":"763:17:87"},{"name":"length","nativeSrc":"782:6:87","nodeType":"YulIdentifier","src":"782:6:87"}],"functionName":{"name":"mcopy","nativeSrc":"738:5:87","nodeType":"YulIdentifier","src":"738:5:87"},"nativeSrc":"738:51:87","nodeType":"YulFunctionCall","src":"738:51:87"},"nativeSrc":"738:51:87","nodeType":"YulExpressionStatement","src":"738:51:87"},{"expression":{"arguments":[{"arguments":[{"arguments":[{"name":"memPtr","nativeSrc":"813:6:87","nodeType":"YulIdentifier","src":"813:6:87"},{"name":"length","nativeSrc":"821:6:87","nodeType":"YulIdentifier","src":"821:6:87"}],"functionName":{"name":"add","nativeSrc":"809:3:87","nodeType":"YulIdentifier","src":"809:3:87"},"nativeSrc":"809:19:87","nodeType":"YulFunctionCall","src":"809:19:87"},{"kind":"number","nativeSrc":"830:4:87","nodeType":"YulLiteral","src":"830:4:87","type":"","value":"0x20"}],"functionName":{"name":"add","nativeSrc":"805:3:87","nodeType":"YulIdentifier","src":"805:3:87"},"nativeSrc":"805:30:87","nodeType":"YulFunctionCall","src":"805:30:87"},{"kind":"number","nativeSrc":"837:1:87","nodeType":"YulLiteral","src":"837:1:87","type":"","value":"0"}],"functionName":{"name":"mstore","nativeSrc":"798:6:87","nodeType":"YulIdentifier","src":"798:6:87"},"nativeSrc":"798:41:87","nodeType":"YulFunctionCall","src":"798:41:87"},"nativeSrc":"798:41:87","nodeType":"YulExpressionStatement","src":"798:41:87"},{"nativeSrc":"848:15:87","nodeType":"YulAssignment","src":"848:15:87","value":{"name":"memPtr","nativeSrc":"857:6:87","nodeType":"YulIdentifier","src":"857:6:87"},"variableNames":[{"name":"array","nativeSrc":"848:5:87","nodeType":"YulIdentifier","src":"848:5:87"}]}]},"name":"abi_decode_string_fromMemory","nativeSrc":"146:723:87","nodeType":"YulFunctionDefinition","parameters":[{"name":"offset","nativeSrc":"184:6:87","nodeType":"YulTypedName","src":"184:6:87","type":""},{"name":"end","nativeSrc":"192:3:87","nodeType":"YulTypedName","src":"192:3:87","type":""}],"returnVariables":[{"name":"array","nativeSrc":"200:5:87","nodeType":"YulTypedName","src":"200:5:87","type":""}],"src":"146:723:87"},{"body":{"nativeSrc":"1024:619:87","nodeType":"YulBlock","src":"1024:619:87","statements":[{"body":{"nativeSrc":"1071:16:87","nodeType":"YulBlock","src":"1071:16:87","statements":[{"expression":{"arguments":[{"kind":"number","nativeSrc":"1080:1:87","nodeType":"YulLiteral","src":"1080:1:87","type":"","value":"0"},{"kind":"number","nativeSrc":"1083:1:87","nodeType":"YulLiteral","src":"1083:1:87","type":"","value":"0"}],"functionName":{"name":"revert","nativeSrc":"1073:6:87","nodeType":"YulIdentifier","src":"1073:6:87"},"nativeSrc":"1073:12:87","nodeType":"YulFunctionCall","src":"1073:12:87"},"nativeSrc":"1073:12:87","nodeType":"YulExpressionStatement","src":"1073:12:87"}]},"condition":{"arguments":[{"arguments":[{"name":"dataEnd","nativeSrc":"1045:7:87","nodeType":"YulIdentifier","src":"1045:7:87"},{"name":"headStart","nativeSrc":"1054:9:87","nodeType":"YulIdentifier","src":"1054:9:87"}],"functionName":{"name":"sub","nativeSrc":"1041:3:87","nodeType":"YulIdentifier","src":"1041:3:87"},"nativeSrc":"1041:23:87","nodeType":"YulFunctionCall","src":"1041:23:87"},{"kind":"number","nativeSrc":"1066:3:87","nodeType":"YulLiteral","src":"1066:3:87","type":"","value":"128"}],"functionName":{"name":"slt","nativeSrc":"1037:3:87","nodeType":"YulIdentifier","src":"1037:3:87"},"nativeSrc":"1037:33:87","nodeType":"YulFunctionCall","src":"1037:33:87"},"nativeSrc":"1034:53:87","nodeType":"YulIf","src":"1034:53:87"},{"nativeSrc":"1096:30:87","nodeType":"YulVariableDeclaration","src":"1096:30:87","value":{"arguments":[{"name":"headStart","nativeSrc":"1116:9:87","nodeType":"YulIdentifier","src":"1116:9:87"}],"functionName":{"name":"mload","nativeSrc":"1110:5:87","nodeType":"YulIdentifier","src":"1110:5:87"},"nativeSrc":"1110:16:87","nodeType":"YulFunctionCall","src":"1110:16:87"},"variables":[{"name":"offset","nativeSrc":"1100:6:87","nodeType":"YulTypedName","src":"1100:6:87","type":""}]},{"body":{"nativeSrc":"1169:16:87","nodeType":"YulBlock","src":"1169:16:87","statements":[{"expression":{"arguments":[{"kind":"number","nativeSrc":"1178:1:87","nodeType":"YulLiteral","src":"1178:1:87","type":"","value":"0"},{"kind":"number","nativeSrc":"1181:1:87","nodeType":"YulLiteral","src":"1181:1:87","type":"","value":"0"}],"functionName":{"name":"revert","nativeSrc":"1171:6:87","nodeType":"YulIdentifier","src":"1171:6:87"},"nativeSrc":"1171:12:87","nodeType":"YulFunctionCall","src":"1171:12:87"},"nativeSrc":"1171:12:87","nodeType":"YulExpressionStatement","src":"1171:12:87"}]},"condition":{"arguments":[{"name":"offset","nativeSrc":"1141:6:87","nodeType":"YulIdentifier","src":"1141:6:87"},{"arguments":[{"arguments":[{"kind":"number","nativeSrc":"1157:2:87","nodeType":"YulLiteral","src":"1157:2:87","type":"","value":"64"},{"kind":"number","nativeSrc":"1161:1:87","nodeType":"YulLiteral","src":"1161:1:87","type":"","value":"1"}],"functionName":{"name":"shl","nativeSrc":"1153:3:87","nodeType":"YulIdentifier","src":"1153:3:87"},"nativeSrc":"1153:10:87","nodeType":"YulFunctionCall","src":"1153:10:87"},{"kind":"number","nativeSrc":"1165:1:87","nodeType":"YulLiteral","src":"1165:1:87","type":"","value":"1"}],"functionName":{"name":"sub","nativeSrc":"1149:3:87","nodeType":"YulIdentifier","src":"1149:3:87"},"nativeSrc":"1149:18:87","nodeType":"YulFunctionCall","src":"1149:18:87"}],"functionName":{"name":"gt","nativeSrc":"1138:2:87","nodeType":"YulIdentifier","src":"1138:2:87"},"nativeSrc":"1138:30:87","nodeType":"YulFunctionCall","src":"1138:30:87"},"nativeSrc":"1135:50:87","nodeType":"YulIf","src":"1135:50:87"},{"nativeSrc":"1194:71:87","nodeType":"YulAssignment","src":"1194:71:87","value":{"arguments":[{"arguments":[{"name":"headStart","nativeSrc":"1237:9:87","nodeType":"YulIdentifier","src":"1237:9:87"},{"name":"offset","nativeSrc":"1248:6:87","nodeType":"YulIdentifier","src":"1248:6:87"}],"functionName":{"name":"add","nativeSrc":"1233:3:87","nodeType":"YulIdentifier","src":"1233:3:87"},"nativeSrc":"1233:22:87","nodeType":"YulFunctionCall","src":"1233:22:87"},{"name":"dataEnd","nativeSrc":"1257:7:87","nodeType":"YulIdentifier","src":"1257:7:87"}],"functionName":{"name":"abi_decode_string_fromMemory","nativeSrc":"1204:28:87","nodeType":"YulIdentifier","src":"1204:28:87"},"nativeSrc":"1204:61:87","nodeType":"YulFunctionCall","src":"1204:61:87"},"variableNames":[{"name":"value0","nativeSrc":"1194:6:87","nodeType":"YulIdentifier","src":"1194:6:87"}]},{"nativeSrc":"1274:41:87","nodeType":"YulVariableDeclaration","src":"1274:41:87","value":{"arguments":[{"arguments":[{"name":"headStart","nativeSrc":"1300:9:87","nodeType":"YulIdentifier","src":"1300:9:87"},{"kind":"number","nativeSrc":"1311:2:87","nodeType":"YulLiteral","src":"1311:2:87","type":"","value":"32"}],"functionName":{"name":"add","nativeSrc":"1296:3:87","nodeType":"YulIdentifier","src":"1296:3:87"},"nativeSrc":"1296:18:87","nodeType":"YulFunctionCall","src":"1296:18:87"}],"functionName":{"name":"mload","nativeSrc":"1290:5:87","nodeType":"YulIdentifier","src":"1290:5:87"},"nativeSrc":"1290:25:87","nodeType":"YulFunctionCall","src":"1290:25:87"},"variables":[{"name":"offset_1","nativeSrc":"1278:8:87","nodeType":"YulTypedName","src":"1278:8:87","type":""}]},{"body":{"nativeSrc":"1360:16:87","nodeType":"YulBlock","src":"1360:16:87","statements":[{"expression":{"arguments":[{"kind":"number","nativeSrc":"1369:1:87","nodeType":"YulLiteral","src":"1369:1:87","type":"","value":"0"},{"kind":"number","nativeSrc":"1372:1:87","nodeType":"YulLiteral","src":"1372:1:87","type":"","value":"0"}],"functionName":{"name":"revert","nativeSrc":"1362:6:87","nodeType":"YulIdentifier","src":"1362:6:87"},"nativeSrc":"1362:12:87","nodeType":"YulFunctionCall","src":"1362:12:87"},"nativeSrc":"1362:12:87","nodeType":"YulExpressionStatement","src":"1362:12:87"}]},"condition":{"arguments":[{"name":"offset_1","nativeSrc":"1330:8:87","nodeType":"YulIdentifier","src":"1330:8:87"},{"arguments":[{"arguments":[{"kind":"number","nativeSrc":"1348:2:87","nodeType":"YulLiteral","src":"1348:2:87","type":"","value":"64"},{"kind":"number","nativeSrc":"1352:1:87","nodeType":"YulLiteral","src":"1352:1:87","type":"","value":"1"}],"functionName":{"name":"shl","nativeSrc":"1344:3:87","nodeType":"YulIdentifier","src":"1344:3:87"},"nativeSrc":"1344:10:87","nodeType":"YulFunctionCall","src":"1344:10:87"},{"kind":"number","nativeSrc":"1356:1:87","nodeType":"YulLiteral","src":"1356:1:87","type":"","value":"1"}],"functionName":{"name":"sub","nativeSrc":"1340:3:87","nodeType":"YulIdentifier","src":"1340:3:87"},"nativeSrc":"1340:18:87","nodeType":"YulFunctionCall","src":"1340:18:87"}],"functionName":{"name":"gt","nativeSrc":"1327:2:87","nodeType":"YulIdentifier","src":"1327:2:87"},"nativeSrc":"1327:32:87","nodeType":"YulFunctionCall","src":"1327:32:87"},"nativeSrc":"1324:52:87","nodeType":"YulIf","src":"1324:52:87"},{"nativeSrc":"1385:73:87","nodeType":"YulAssignment","src":"1385:73:87","value":{"arguments":[{"arguments":[{"name":"headStart","nativeSrc":"1428:9:87","nodeType":"YulIdentifier","src":"1428:9:87"},{"name":"offset_1","nativeSrc":"1439:8:87","nodeType":"YulIdentifier","src":"1439:8:87"}],"functionName":{"name":"add","nativeSrc":"1424:3:87","nodeType":"YulIdentifier","src":"1424:3:87"},"nativeSrc":"1424:24:87","nodeType":"YulFunctionCall","src":"1424:24:87"},{"name":"dataEnd","nativeSrc":"1450:7:87","nodeType":"YulIdentifier","src":"1450:7:87"}],"functionName":{"name":"abi_decode_string_fromMemory","nativeSrc":"1395:28:87","nodeType":"YulIdentifier","src":"1395:28:87"},"nativeSrc":"1395:63:87","nodeType":"YulFunctionCall","src":"1395:63:87"},"variableNames":[{"name":"value1","nativeSrc":"1385:6:87","nodeType":"YulIdentifier","src":"1385:6:87"}]},{"nativeSrc":"1467:35:87","nodeType":"YulAssignment","src":"1467:35:87","value":{"arguments":[{"arguments":[{"name":"headStart","nativeSrc":"1487:9:87","nodeType":"YulIdentifier","src":"1487:9:87"},{"kind":"number","nativeSrc":"1498:2:87","nodeType":"YulLiteral","src":"1498:2:87","type":"","value":"64"}],"functionName":{"name":"add","nativeSrc":"1483:3:87","nodeType":"YulIdentifier","src":"1483:3:87"},"nativeSrc":"1483:18:87","nodeType":"YulFunctionCall","src":"1483:18:87"}],"functionName":{"name":"mload","nativeSrc":"1477:5:87","nodeType":"YulIdentifier","src":"1477:5:87"},"nativeSrc":"1477:25:87","nodeType":"YulFunctionCall","src":"1477:25:87"},"variableNames":[{"name":"value2","nativeSrc":"1467:6:87","nodeType":"YulIdentifier","src":"1467:6:87"}]},{"nativeSrc":"1511:38:87","nodeType":"YulVariableDeclaration","src":"1511:38:87","value":{"arguments":[{"arguments":[{"name":"headStart","nativeSrc":"1534:9:87","nodeType":"YulIdentifier","src":"1534:9:87"},{"kind":"number","nativeSrc":"1545:2:87","nodeType":"YulLiteral","src":"1545:2:87","type":"","value":"96"}],"functionName":{"name":"add","nativeSrc":"1530:3:87","nodeType":"YulIdentifier","src":"1530:3:87"},"nativeSrc":"1530:18:87","nodeType":"YulFunctionCall","src":"1530:18:87"}],"functionName":{"name":"mload","nativeSrc":"1524:5:87","nodeType":"YulIdentifier","src":"1524:5:87"},"nativeSrc":"1524:25:87","nodeType":"YulFunctionCall","src":"1524:25:87"},"variables":[{"name":"value","nativeSrc":"1515:5:87","nodeType":"YulTypedName","src":"1515:5:87","type":""}]},{"body":{"nativeSrc":"1597:16:87","nodeType":"YulBlock","src":"1597:16:87","statements":[{"expression":{"arguments":[{"kind":"number","nativeSrc":"1606:1:87","nodeType":"YulLiteral","src":"1606:1:87","type":"","value":"0"},{"kind":"number","nativeSrc":"1609:1:87","nodeType":"YulLiteral","src":"1609:1:87","type":"","value":"0"}],"functionName":{"name":"revert","nativeSrc":"1599:6:87","nodeType":"YulIdentifier","src":"1599:6:87"},"nativeSrc":"1599:12:87","nodeType":"YulFunctionCall","src":"1599:12:87"},"nativeSrc":"1599:12:87","nodeType":"YulExpressionStatement","src":"1599:12:87"}]},"condition":{"arguments":[{"arguments":[{"name":"value","nativeSrc":"1571:5:87","nodeType":"YulIdentifier","src":"1571:5:87"},{"arguments":[{"name":"value","nativeSrc":"1582:5:87","nodeType":"YulIdentifier","src":"1582:5:87"},{"kind":"number","nativeSrc":"1589:4:87","nodeType":"YulLiteral","src":"1589:4:87","type":"","value":"0xff"}],"functionName":{"name":"and","nativeSrc":"1578:3:87","nodeType":"YulIdentifier","src":"1578:3:87"},"nativeSrc":"1578:16:87","nodeType":"YulFunctionCall","src":"1578:16:87"}],"functionName":{"name":"eq","nativeSrc":"1568:2:87","nodeType":"YulIdentifier","src":"1568:2:87"},"nativeSrc":"1568:27:87","nodeType":"YulFunctionCall","src":"1568:27:87"}],"functionName":{"name":"iszero","nativeSrc":"1561:6:87","nodeType":"YulIdentifier","src":"1561:6:87"},"nativeSrc":"1561:35:87","nodeType":"YulFunctionCall","src":"1561:35:87"},"nativeSrc":"1558:55:87","nodeType":"YulIf","src":"1558:55:87"},{"nativeSrc":"1622:15:87","nodeType":"YulAssignment","src":"1622:15:87","value":{"name":"value","nativeSrc":"1632:5:87","nodeType":"YulIdentifier","src":"1632:5:87"},"variableNames":[{"name":"value3","nativeSrc":"1622:6:87","nodeType":"YulIdentifier","src":"1622:6:87"}]}]},"name":"abi_decode_tuple_t_string_memory_ptrt_string_memory_ptrt_uint256t_uint8_fromMemory","nativeSrc":"874:769:87","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nativeSrc":"966:9:87","nodeType":"YulTypedName","src":"966:9:87","type":""},{"name":"dataEnd","nativeSrc":"977:7:87","nodeType":"YulTypedName","src":"977:7:87","type":""}],"returnVariables":[{"name":"value0","nativeSrc":"989:6:87","nodeType":"YulTypedName","src":"989:6:87","type":""},{"name":"value1","nativeSrc":"997:6:87","nodeType":"YulTypedName","src":"997:6:87","type":""},{"name":"value2","nativeSrc":"1005:6:87","nodeType":"YulTypedName","src":"1005:6:87","type":""},{"name":"value3","nativeSrc":"1013:6:87","nodeType":"YulTypedName","src":"1013:6:87","type":""}],"src":"874:769:87"},{"body":{"nativeSrc":"1703:325:87","nodeType":"YulBlock","src":"1703:325:87","statements":[{"nativeSrc":"1713:22:87","nodeType":"YulAssignment","src":"1713:22:87","value":{"arguments":[{"kind":"number","nativeSrc":"1727:1:87","nodeType":"YulLiteral","src":"1727:1:87","type":"","value":"1"},{"name":"data","nativeSrc":"1730:4:87","nodeType":"YulIdentifier","src":"1730:4:87"}],"functionName":{"name":"shr","nativeSrc":"1723:3:87","nodeType":"YulIdentifier","src":"1723:3:87"},"nativeSrc":"1723:12:87","nodeType":"YulFunctionCall","src":"1723:12:87"},"variableNames":[{"name":"length","nativeSrc":"1713:6:87","nodeType":"YulIdentifier","src":"1713:6:87"}]},{"nativeSrc":"1744:38:87","nodeType":"YulVariableDeclaration","src":"1744:38:87","value":{"arguments":[{"name":"data","nativeSrc":"1774:4:87","nodeType":"YulIdentifier","src":"1774:4:87"},{"kind":"number","nativeSrc":"1780:1:87","nodeType":"YulLiteral","src":"1780:1:87","type":"","value":"1"}],"functionName":{"name":"and","nativeSrc":"1770:3:87","nodeType":"YulIdentifier","src":"1770:3:87"},"nativeSrc":"1770:12:87","nodeType":"YulFunctionCall","src":"1770:12:87"},"variables":[{"name":"outOfPlaceEncoding","nativeSrc":"1748:18:87","nodeType":"YulTypedName","src":"1748:18:87","type":""}]},{"body":{"nativeSrc":"1821:31:87","nodeType":"YulBlock","src":"1821:31:87","statements":[{"nativeSrc":"1823:27:87","nodeType":"YulAssignment","src":"1823:27:87","value":{"arguments":[{"name":"length","nativeSrc":"1837:6:87","nodeType":"YulIdentifier","src":"1837:6:87"},{"kind":"number","nativeSrc":"1845:4:87","nodeType":"YulLiteral","src":"1845:4:87","type":"","value":"0x7f"}],"functionName":{"name":"and","nativeSrc":"1833:3:87","nodeType":"YulIdentifier","src":"1833:3:87"},"nativeSrc":"1833:17:87","nodeType":"YulFunctionCall","src":"1833:17:87"},"variableNames":[{"name":"length","nativeSrc":"1823:6:87","nodeType":"YulIdentifier","src":"1823:6:87"}]}]},"condition":{"arguments":[{"name":"outOfPlaceEncoding","nativeSrc":"1801:18:87","nodeType":"YulIdentifier","src":"1801:18:87"}],"functionName":{"name":"iszero","nativeSrc":"1794:6:87","nodeType":"YulIdentifier","src":"1794:6:87"},"nativeSrc":"1794:26:87","nodeType":"YulFunctionCall","src":"1794:26:87"},"nativeSrc":"1791:61:87","nodeType":"YulIf","src":"1791:61:87"},{"body":{"nativeSrc":"1911:111:87","nodeType":"YulBlock","src":"1911:111:87","statements":[{"expression":{"arguments":[{"kind":"number","nativeSrc":"1932:1:87","nodeType":"YulLiteral","src":"1932:1:87","type":"","value":"0"},{"arguments":[{"kind":"number","nativeSrc":"1939:3:87","nodeType":"YulLiteral","src":"1939:3:87","type":"","value":"224"},{"kind":"number","nativeSrc":"1944:10:87","nodeType":"YulLiteral","src":"1944:10:87","type":"","value":"0x4e487b71"}],"functionName":{"name":"shl","nativeSrc":"1935:3:87","nodeType":"YulIdentifier","src":"1935:3:87"},"nativeSrc":"1935:20:87","nodeType":"YulFunctionCall","src":"1935:20:87"}],"functionName":{"name":"mstore","nativeSrc":"1925:6:87","nodeType":"YulIdentifier","src":"1925:6:87"},"nativeSrc":"1925:31:87","nodeType":"YulFunctionCall","src":"1925:31:87"},"nativeSrc":"1925:31:87","nodeType":"YulExpressionStatement","src":"1925:31:87"},{"expression":{"arguments":[{"kind":"number","nativeSrc":"1976:1:87","nodeType":"YulLiteral","src":"1976:1:87","type":"","value":"4"},{"kind":"number","nativeSrc":"1979:4:87","nodeType":"YulLiteral","src":"1979:4:87","type":"","value":"0x22"}],"functionName":{"name":"mstore","nativeSrc":"1969:6:87","nodeType":"YulIdentifier","src":"1969:6:87"},"nativeSrc":"1969:15:87","nodeType":"YulFunctionCall","src":"1969:15:87"},"nativeSrc":"1969:15:87","nodeType":"YulExpressionStatement","src":"1969:15:87"},{"expression":{"arguments":[{"kind":"number","nativeSrc":"2004:1:87","nodeType":"YulLiteral","src":"2004:1:87","type":"","value":"0"},{"kind":"number","nativeSrc":"2007:4:87","nodeType":"YulLiteral","src":"2007:4:87","type":"","value":"0x24"}],"functionName":{"name":"revert","nativeSrc":"1997:6:87","nodeType":"YulIdentifier","src":"1997:6:87"},"nativeSrc":"1997:15:87","nodeType":"YulFunctionCall","src":"1997:15:87"},"nativeSrc":"1997:15:87","nodeType":"YulExpressionStatement","src":"1997:15:87"}]},"condition":{"arguments":[{"name":"outOfPlaceEncoding","nativeSrc":"1867:18:87","nodeType":"YulIdentifier","src":"1867:18:87"},{"arguments":[{"name":"length","nativeSrc":"1890:6:87","nodeType":"YulIdentifier","src":"1890:6:87"},{"kind":"number","nativeSrc":"1898:2:87","nodeType":"YulLiteral","src":"1898:2:87","type":"","value":"32"}],"functionName":{"name":"lt","nativeSrc":"1887:2:87","nodeType":"YulIdentifier","src":"1887:2:87"},"nativeSrc":"1887:14:87","nodeType":"YulFunctionCall","src":"1887:14:87"}],"functionName":{"name":"eq","nativeSrc":"1864:2:87","nodeType":"YulIdentifier","src":"1864:2:87"},"nativeSrc":"1864:38:87","nodeType":"YulFunctionCall","src":"1864:38:87"},"nativeSrc":"1861:161:87","nodeType":"YulIf","src":"1861:161:87"}]},"name":"extract_byte_array_length","nativeSrc":"1648:380:87","nodeType":"YulFunctionDefinition","parameters":[{"name":"data","nativeSrc":"1683:4:87","nodeType":"YulTypedName","src":"1683:4:87","type":""}],"returnVariables":[{"name":"length","nativeSrc":"1692:6:87","nodeType":"YulTypedName","src":"1692:6:87","type":""}],"src":"1648:380:87"},{"body":{"nativeSrc":"2089:65:87","nodeType":"YulBlock","src":"2089:65:87","statements":[{"expression":{"arguments":[{"kind":"number","nativeSrc":"2106:1:87","nodeType":"YulLiteral","src":"2106:1:87","type":"","value":"0"},{"name":"ptr","nativeSrc":"2109:3:87","nodeType":"YulIdentifier","src":"2109:3:87"}],"functionName":{"name":"mstore","nativeSrc":"2099:6:87","nodeType":"YulIdentifier","src":"2099:6:87"},"nativeSrc":"2099:14:87","nodeType":"YulFunctionCall","src":"2099:14:87"},"nativeSrc":"2099:14:87","nodeType":"YulExpressionStatement","src":"2099:14:87"},{"nativeSrc":"2122:26:87","nodeType":"YulAssignment","src":"2122:26:87","value":{"arguments":[{"kind":"number","nativeSrc":"2140:1:87","nodeType":"YulLiteral","src":"2140:1:87","type":"","value":"0"},{"kind":"number","nativeSrc":"2143:4:87","nodeType":"YulLiteral","src":"2143:4:87","type":"","value":"0x20"}],"functionName":{"name":"keccak256","nativeSrc":"2130:9:87","nodeType":"YulIdentifier","src":"2130:9:87"},"nativeSrc":"2130:18:87","nodeType":"YulFunctionCall","src":"2130:18:87"},"variableNames":[{"name":"data","nativeSrc":"2122:4:87","nodeType":"YulIdentifier","src":"2122:4:87"}]}]},"name":"array_dataslot_string_storage","nativeSrc":"2033:121:87","nodeType":"YulFunctionDefinition","parameters":[{"name":"ptr","nativeSrc":"2072:3:87","nodeType":"YulTypedName","src":"2072:3:87","type":""}],"returnVariables":[{"name":"data","nativeSrc":"2080:4:87","nodeType":"YulTypedName","src":"2080:4:87","type":""}],"src":"2033:121:87"},{"body":{"nativeSrc":"2240:437:87","nodeType":"YulBlock","src":"2240:437:87","statements":[{"body":{"nativeSrc":"2273:398:87","nodeType":"YulBlock","src":"2273:398:87","statements":[{"expression":{"arguments":[{"kind":"number","nativeSrc":"2294:1:87","nodeType":"YulLiteral","src":"2294:1:87","type":"","value":"0"},{"name":"array","nativeSrc":"2297:5:87","nodeType":"YulIdentifier","src":"2297:5:87"}],"functionName":{"name":"mstore","nativeSrc":"2287:6:87","nodeType":"YulIdentifier","src":"2287:6:87"},"nativeSrc":"2287:16:87","nodeType":"YulFunctionCall","src":"2287:16:87"},"nativeSrc":"2287:16:87","nodeType":"YulExpressionStatement","src":"2287:16:87"},{"nativeSrc":"2316:30:87","nodeType":"YulVariableDeclaration","src":"2316:30:87","value":{"arguments":[{"kind":"number","nativeSrc":"2338:1:87","nodeType":"YulLiteral","src":"2338:1:87","type":"","value":"0"},{"kind":"number","nativeSrc":"2341:4:87","nodeType":"YulLiteral","src":"2341:4:87","type":"","value":"0x20"}],"functionName":{"name":"keccak256","nativeSrc":"2328:9:87","nodeType":"YulIdentifier","src":"2328:9:87"},"nativeSrc":"2328:18:87","nodeType":"YulFunctionCall","src":"2328:18:87"},"variables":[{"name":"data","nativeSrc":"2320:4:87","nodeType":"YulTypedName","src":"2320:4:87","type":""}]},{"nativeSrc":"2359:57:87","nodeType":"YulVariableDeclaration","src":"2359:57:87","value":{"arguments":[{"name":"data","nativeSrc":"2382:4:87","nodeType":"YulIdentifier","src":"2382:4:87"},{"arguments":[{"kind":"number","nativeSrc":"2392:1:87","nodeType":"YulLiteral","src":"2392:1:87","type":"","value":"5"},{"arguments":[{"name":"startIndex","nativeSrc":"2399:10:87","nodeType":"YulIdentifier","src":"2399:10:87"},{"kind":"number","nativeSrc":"2411:2:87","nodeType":"YulLiteral","src":"2411:2:87","type":"","value":"31"}],"functionName":{"name":"add","nativeSrc":"2395:3:87","nodeType":"YulIdentifier","src":"2395:3:87"},"nativeSrc":"2395:19:87","nodeType":"YulFunctionCall","src":"2395:19:87"}],"functionName":{"name":"shr","nativeSrc":"2388:3:87","nodeType":"YulIdentifier","src":"2388:3:87"},"nativeSrc":"2388:27:87","nodeType":"YulFunctionCall","src":"2388:27:87"}],"functionName":{"name":"add","nativeSrc":"2378:3:87","nodeType":"YulIdentifier","src":"2378:3:87"},"nativeSrc":"2378:38:87","nodeType":"YulFunctionCall","src":"2378:38:87"},"variables":[{"name":"deleteStart","nativeSrc":"2363:11:87","nodeType":"YulTypedName","src":"2363:11:87","type":""}]},{"body":{"nativeSrc":"2453:23:87","nodeType":"YulBlock","src":"2453:23:87","statements":[{"nativeSrc":"2455:19:87","nodeType":"YulAssignment","src":"2455:19:87","value":{"name":"data","nativeSrc":"2470:4:87","nodeType":"YulIdentifier","src":"2470:4:87"},"variableNames":[{"name":"deleteStart","nativeSrc":"2455:11:87","nodeType":"YulIdentifier","src":"2455:11:87"}]}]},"condition":{"arguments":[{"name":"startIndex","nativeSrc":"2435:10:87","nodeType":"YulIdentifier","src":"2435:10:87"},{"kind":"number","nativeSrc":"2447:4:87","nodeType":"YulLiteral","src":"2447:4:87","type":"","value":"0x20"}],"functionName":{"name":"lt","nativeSrc":"2432:2:87","nodeType":"YulIdentifier","src":"2432:2:87"},"nativeSrc":"2432:20:87","nodeType":"YulFunctionCall","src":"2432:20:87"},"nativeSrc":"2429:47:87","nodeType":"YulIf","src":"2429:47:87"},{"nativeSrc":"2489:41:87","nodeType":"YulVariableDeclaration","src":"2489:41:87","value":{"arguments":[{"name":"data","nativeSrc":"2503:4:87","nodeType":"YulIdentifier","src":"2503:4:87"},{"arguments":[{"kind":"number","nativeSrc":"2513:1:87","nodeType":"YulLiteral","src":"2513:1:87","type":"","value":"5"},{"arguments":[{"name":"len","nativeSrc":"2520:3:87","nodeType":"YulIdentifier","src":"2520:3:87"},{"kind":"number","nativeSrc":"2525:2:87","nodeType":"YulLiteral","src":"2525:2:87","type":"","value":"31"}],"functionName":{"name":"add","nativeSrc":"2516:3:87","nodeType":"YulIdentifier","src":"2516:3:87"},"nativeSrc":"2516:12:87","nodeType":"YulFunctionCall","src":"2516:12:87"}],"functionName":{"name":"shr","nativeSrc":"2509:3:87","nodeType":"YulIdentifier","src":"2509:3:87"},"nativeSrc":"2509:20:87","nodeType":"YulFunctionCall","src":"2509:20:87"}],"functionName":{"name":"add","nativeSrc":"2499:3:87","nodeType":"YulIdentifier","src":"2499:3:87"},"nativeSrc":"2499:31:87","nodeType":"YulFunctionCall","src":"2499:31:87"},"variables":[{"name":"_1","nativeSrc":"2493:2:87","nodeType":"YulTypedName","src":"2493:2:87","type":""}]},{"nativeSrc":"2543:24:87","nodeType":"YulVariableDeclaration","src":"2543:24:87","value":{"name":"deleteStart","nativeSrc":"2556:11:87","nodeType":"YulIdentifier","src":"2556:11:87"},"variables":[{"name":"start","nativeSrc":"2547:5:87","nodeType":"YulTypedName","src":"2547:5:87","type":""}]},{"body":{"nativeSrc":"2641:20:87","nodeType":"YulBlock","src":"2641:20:87","statements":[{"expression":{"arguments":[{"name":"start","nativeSrc":"2650:5:87","nodeType":"YulIdentifier","src":"2650:5:87"},{"kind":"number","nativeSrc":"2657:1:87","nodeType":"YulLiteral","src":"2657:1:87","type":"","value":"0"}],"functionName":{"name":"sstore","nativeSrc":"2643:6:87","nodeType":"YulIdentifier","src":"2643:6:87"},"nativeSrc":"2643:16:87","nodeType":"YulFunctionCall","src":"2643:16:87"},"nativeSrc":"2643:16:87","nodeType":"YulExpressionStatement","src":"2643:16:87"}]},"condition":{"arguments":[{"name":"start","nativeSrc":"2591:5:87","nodeType":"YulIdentifier","src":"2591:5:87"},{"name":"_1","nativeSrc":"2598:2:87","nodeType":"YulIdentifier","src":"2598:2:87"}],"functionName":{"name":"lt","nativeSrc":"2588:2:87","nodeType":"YulIdentifier","src":"2588:2:87"},"nativeSrc":"2588:13:87","nodeType":"YulFunctionCall","src":"2588:13:87"},"nativeSrc":"2580:81:87","nodeType":"YulForLoop","post":{"nativeSrc":"2602:26:87","nodeType":"YulBlock","src":"2602:26:87","statements":[{"nativeSrc":"2604:22:87","nodeType":"YulAssignment","src":"2604:22:87","value":{"arguments":[{"name":"start","nativeSrc":"2617:5:87","nodeType":"YulIdentifier","src":"2617:5:87"},{"kind":"number","nativeSrc":"2624:1:87","nodeType":"YulLiteral","src":"2624:1:87","type":"","value":"1"}],"functionName":{"name":"add","nativeSrc":"2613:3:87","nodeType":"YulIdentifier","src":"2613:3:87"},"nativeSrc":"2613:13:87","nodeType":"YulFunctionCall","src":"2613:13:87"},"variableNames":[{"name":"start","nativeSrc":"2604:5:87","nodeType":"YulIdentifier","src":"2604:5:87"}]}]},"pre":{"nativeSrc":"2584:3:87","nodeType":"YulBlock","src":"2584:3:87","statements":[]},"src":"2580:81:87"}]},"condition":{"arguments":[{"name":"len","nativeSrc":"2256:3:87","nodeType":"YulIdentifier","src":"2256:3:87"},{"kind":"number","nativeSrc":"2261:2:87","nodeType":"YulLiteral","src":"2261:2:87","type":"","value":"31"}],"functionName":{"name":"gt","nativeSrc":"2253:2:87","nodeType":"YulIdentifier","src":"2253:2:87"},"nativeSrc":"2253:11:87","nodeType":"YulFunctionCall","src":"2253:11:87"},"nativeSrc":"2250:421:87","nodeType":"YulIf","src":"2250:421:87"}]},"name":"clean_up_bytearray_end_slots_string_storage","nativeSrc":"2159:518:87","nodeType":"YulFunctionDefinition","parameters":[{"name":"array","nativeSrc":"2212:5:87","nodeType":"YulTypedName","src":"2212:5:87","type":""},{"name":"len","nativeSrc":"2219:3:87","nodeType":"YulTypedName","src":"2219:3:87","type":""},{"name":"startIndex","nativeSrc":"2224:10:87","nodeType":"YulTypedName","src":"2224:10:87","type":""}],"src":"2159:518:87"},{"body":{"nativeSrc":"2767:81:87","nodeType":"YulBlock","src":"2767:81:87","statements":[{"nativeSrc":"2777:65:87","nodeType":"YulAssignment","src":"2777:65:87","value":{"arguments":[{"arguments":[{"name":"data","nativeSrc":"2792:4:87","nodeType":"YulIdentifier","src":"2792:4:87"},{"arguments":[{"arguments":[{"arguments":[{"kind":"number","nativeSrc":"2810:1:87","nodeType":"YulLiteral","src":"2810:1:87","type":"","value":"3"},{"name":"len","nativeSrc":"2813:3:87","nodeType":"YulIdentifier","src":"2813:3:87"}],"functionName":{"name":"shl","nativeSrc":"2806:3:87","nodeType":"YulIdentifier","src":"2806:3:87"},"nativeSrc":"2806:11:87","nodeType":"YulFunctionCall","src":"2806:11:87"},{"arguments":[{"kind":"number","nativeSrc":"2823:1:87","nodeType":"YulLiteral","src":"2823:1:87","type":"","value":"0"}],"functionName":{"name":"not","nativeSrc":"2819:3:87","nodeType":"YulIdentifier","src":"2819:3:87"},"nativeSrc":"2819:6:87","nodeType":"YulFunctionCall","src":"2819:6:87"}],"functionName":{"name":"shr","nativeSrc":"2802:3:87","nodeType":"YulIdentifier","src":"2802:3:87"},"nativeSrc":"2802:24:87","nodeType":"YulFunctionCall","src":"2802:24:87"}],"functionName":{"name":"not","nativeSrc":"2798:3:87","nodeType":"YulIdentifier","src":"2798:3:87"},"nativeSrc":"2798:29:87","nodeType":"YulFunctionCall","src":"2798:29:87"}],"functionName":{"name":"and","nativeSrc":"2788:3:87","nodeType":"YulIdentifier","src":"2788:3:87"},"nativeSrc":"2788:40:87","nodeType":"YulFunctionCall","src":"2788:40:87"},{"arguments":[{"kind":"number","nativeSrc":"2834:1:87","nodeType":"YulLiteral","src":"2834:1:87","type":"","value":"1"},{"name":"len","nativeSrc":"2837:3:87","nodeType":"YulIdentifier","src":"2837:3:87"}],"functionName":{"name":"shl","nativeSrc":"2830:3:87","nodeType":"YulIdentifier","src":"2830:3:87"},"nativeSrc":"2830:11:87","nodeType":"YulFunctionCall","src":"2830:11:87"}],"functionName":{"name":"or","nativeSrc":"2785:2:87","nodeType":"YulIdentifier","src":"2785:2:87"},"nativeSrc":"2785:57:87","nodeType":"YulFunctionCall","src":"2785:57:87"},"variableNames":[{"name":"used","nativeSrc":"2777:4:87","nodeType":"YulIdentifier","src":"2777:4:87"}]}]},"name":"extract_used_part_and_set_length_of_short_byte_array","nativeSrc":"2682:166:87","nodeType":"YulFunctionDefinition","parameters":[{"name":"data","nativeSrc":"2744:4:87","nodeType":"YulTypedName","src":"2744:4:87","type":""},{"name":"len","nativeSrc":"2750:3:87","nodeType":"YulTypedName","src":"2750:3:87","type":""}],"returnVariables":[{"name":"used","nativeSrc":"2758:4:87","nodeType":"YulTypedName","src":"2758:4:87","type":""}],"src":"2682:166:87"},{"body":{"nativeSrc":"2949:1203:87","nodeType":"YulBlock","src":"2949:1203:87","statements":[{"nativeSrc":"2959:24:87","nodeType":"YulVariableDeclaration","src":"2959:24:87","value":{"arguments":[{"name":"src","nativeSrc":"2979:3:87","nodeType":"YulIdentifier","src":"2979:3:87"}],"functionName":{"name":"mload","nativeSrc":"2973:5:87","nodeType":"YulIdentifier","src":"2973:5:87"},"nativeSrc":"2973:10:87","nodeType":"YulFunctionCall","src":"2973:10:87"},"variables":[{"name":"newLen","nativeSrc":"2963:6:87","nodeType":"YulTypedName","src":"2963:6:87","type":""}]},{"body":{"nativeSrc":"3026:22:87","nodeType":"YulBlock","src":"3026:22:87","statements":[{"expression":{"arguments":[],"functionName":{"name":"panic_error_0x41","nativeSrc":"3028:16:87","nodeType":"YulIdentifier","src":"3028:16:87"},"nativeSrc":"3028:18:87","nodeType":"YulFunctionCall","src":"3028:18:87"},"nativeSrc":"3028:18:87","nodeType":"YulExpressionStatement","src":"3028:18:87"}]},"condition":{"arguments":[{"name":"newLen","nativeSrc":"2998:6:87","nodeType":"YulIdentifier","src":"2998:6:87"},{"arguments":[{"arguments":[{"kind":"number","nativeSrc":"3014:2:87","nodeType":"YulLiteral","src":"3014:2:87","type":"","value":"64"},{"kind":"number","nativeSrc":"3018:1:87","nodeType":"YulLiteral","src":"3018:1:87","type":"","value":"1"}],"functionName":{"name":"shl","nativeSrc":"3010:3:87","nodeType":"YulIdentifier","src":"3010:3:87"},"nativeSrc":"3010:10:87","nodeType":"YulFunctionCall","src":"3010:10:87"},{"kind":"number","nativeSrc":"3022:1:87","nodeType":"YulLiteral","src":"3022:1:87","type":"","value":"1"}],"functionName":{"name":"sub","nativeSrc":"3006:3:87","nodeType":"YulIdentifier","src":"3006:3:87"},"nativeSrc":"3006:18:87","nodeType":"YulFunctionCall","src":"3006:18:87"}],"functionName":{"name":"gt","nativeSrc":"2995:2:87","nodeType":"YulIdentifier","src":"2995:2:87"},"nativeSrc":"2995:30:87","nodeType":"YulFunctionCall","src":"2995:30:87"},"nativeSrc":"2992:56:87","nodeType":"YulIf","src":"2992:56:87"},{"expression":{"arguments":[{"name":"slot","nativeSrc":"3101:4:87","nodeType":"YulIdentifier","src":"3101:4:87"},{"arguments":[{"arguments":[{"name":"slot","nativeSrc":"3139:4:87","nodeType":"YulIdentifier","src":"3139:4:87"}],"functionName":{"name":"sload","nativeSrc":"3133:5:87","nodeType":"YulIdentifier","src":"3133:5:87"},"nativeSrc":"3133:11:87","nodeType":"YulFunctionCall","src":"3133:11:87"}],"functionName":{"name":"extract_byte_array_length","nativeSrc":"3107:25:87","nodeType":"YulIdentifier","src":"3107:25:87"},"nativeSrc":"3107:38:87","nodeType":"YulFunctionCall","src":"3107:38:87"},{"name":"newLen","nativeSrc":"3147:6:87","nodeType":"YulIdentifier","src":"3147:6:87"}],"functionName":{"name":"clean_up_bytearray_end_slots_string_storage","nativeSrc":"3057:43:87","nodeType":"YulIdentifier","src":"3057:43:87"},"nativeSrc":"3057:97:87","nodeType":"YulFunctionCall","src":"3057:97:87"},"nativeSrc":"3057:97:87","nodeType":"YulExpressionStatement","src":"3057:97:87"},{"nativeSrc":"3163:18:87","nodeType":"YulVariableDeclaration","src":"3163:18:87","value":{"kind":"number","nativeSrc":"3180:1:87","nodeType":"YulLiteral","src":"3180:1:87","type":"","value":"0"},"variables":[{"name":"srcOffset","nativeSrc":"3167:9:87","nodeType":"YulTypedName","src":"3167:9:87","type":""}]},{"nativeSrc":"3190:17:87","nodeType":"YulAssignment","src":"3190:17:87","value":{"kind":"number","nativeSrc":"3203:4:87","nodeType":"YulLiteral","src":"3203:4:87","type":"","value":"0x20"},"variableNames":[{"name":"srcOffset","nativeSrc":"3190:9:87","nodeType":"YulIdentifier","src":"3190:9:87"}]},{"cases":[{"body":{"nativeSrc":"3253:642:87","nodeType":"YulBlock","src":"3253:642:87","statements":[{"nativeSrc":"3267:35:87","nodeType":"YulVariableDeclaration","src":"3267:35:87","value":{"arguments":[{"name":"newLen","nativeSrc":"3286:6:87","nodeType":"YulIdentifier","src":"3286:6:87"},{"arguments":[{"kind":"number","nativeSrc":"3298:2:87","nodeType":"YulLiteral","src":"3298:2:87","type":"","value":"31"}],"functionName":{"name":"not","nativeSrc":"3294:3:87","nodeType":"YulIdentifier","src":"3294:3:87"},"nativeSrc":"3294:7:87","nodeType":"YulFunctionCall","src":"3294:7:87"}],"functionName":{"name":"and","nativeSrc":"3282:3:87","nodeType":"YulIdentifier","src":"3282:3:87"},"nativeSrc":"3282:20:87","nodeType":"YulFunctionCall","src":"3282:20:87"},"variables":[{"name":"loopEnd","nativeSrc":"3271:7:87","nodeType":"YulTypedName","src":"3271:7:87","type":""}]},{"nativeSrc":"3315:49:87","nodeType":"YulVariableDeclaration","src":"3315:49:87","value":{"arguments":[{"name":"slot","nativeSrc":"3359:4:87","nodeType":"YulIdentifier","src":"3359:4:87"}],"functionName":{"name":"array_dataslot_string_storage","nativeSrc":"3329:29:87","nodeType":"YulIdentifier","src":"3329:29:87"},"nativeSrc":"3329:35:87","nodeType":"YulFunctionCall","src":"3329:35:87"},"variables":[{"name":"dstPtr","nativeSrc":"3319:6:87","nodeType":"YulTypedName","src":"3319:6:87","type":""}]},{"nativeSrc":"3377:10:87","nodeType":"YulVariableDeclaration","src":"3377:10:87","value":{"kind":"number","nativeSrc":"3386:1:87","nodeType":"YulLiteral","src":"3386:1:87","type":"","value":"0"},"variables":[{"name":"i","nativeSrc":"3381:1:87","nodeType":"YulTypedName","src":"3381:1:87","type":""}]},{"body":{"nativeSrc":"3457:165:87","nodeType":"YulBlock","src":"3457:165:87","statements":[{"expression":{"arguments":[{"name":"dstPtr","nativeSrc":"3482:6:87","nodeType":"YulIdentifier","src":"3482:6:87"},{"arguments":[{"arguments":[{"name":"src","nativeSrc":"3500:3:87","nodeType":"YulIdentifier","src":"3500:3:87"},{"name":"srcOffset","nativeSrc":"3505:9:87","nodeType":"YulIdentifier","src":"3505:9:87"}],"functionName":{"name":"add","nativeSrc":"3496:3:87","nodeType":"YulIdentifier","src":"3496:3:87"},"nativeSrc":"3496:19:87","nodeType":"YulFunctionCall","src":"3496:19:87"}],"functionName":{"name":"mload","nativeSrc":"3490:5:87","nodeType":"YulIdentifier","src":"3490:5:87"},"nativeSrc":"3490:26:87","nodeType":"YulFunctionCall","src":"3490:26:87"}],"functionName":{"name":"sstore","nativeSrc":"3475:6:87","nodeType":"YulIdentifier","src":"3475:6:87"},"nativeSrc":"3475:42:87","nodeType":"YulFunctionCall","src":"3475:42:87"},"nativeSrc":"3475:42:87","nodeType":"YulExpressionStatement","src":"3475:42:87"},{"nativeSrc":"3534:24:87","nodeType":"YulAssignment","src":"3534:24:87","value":{"arguments":[{"name":"dstPtr","nativeSrc":"3548:6:87","nodeType":"YulIdentifier","src":"3548:6:87"},{"kind":"number","nativeSrc":"3556:1:87","nodeType":"YulLiteral","src":"3556:1:87","type":"","value":"1"}],"functionName":{"name":"add","nativeSrc":"3544:3:87","nodeType":"YulIdentifier","src":"3544:3:87"},"nativeSrc":"3544:14:87","nodeType":"YulFunctionCall","src":"3544:14:87"},"variableNames":[{"name":"dstPtr","nativeSrc":"3534:6:87","nodeType":"YulIdentifier","src":"3534:6:87"}]},{"nativeSrc":"3575:33:87","nodeType":"YulAssignment","src":"3575:33:87","value":{"arguments":[{"name":"srcOffset","nativeSrc":"3592:9:87","nodeType":"YulIdentifier","src":"3592:9:87"},{"kind":"number","nativeSrc":"3603:4:87","nodeType":"YulLiteral","src":"3603:4:87","type":"","value":"0x20"}],"functionName":{"name":"add","nativeSrc":"3588:3:87","nodeType":"YulIdentifier","src":"3588:3:87"},"nativeSrc":"3588:20:87","nodeType":"YulFunctionCall","src":"3588:20:87"},"variableNames":[{"name":"srcOffset","nativeSrc":"3575:9:87","nodeType":"YulIdentifier","src":"3575:9:87"}]}]},"condition":{"arguments":[{"name":"i","nativeSrc":"3411:1:87","nodeType":"YulIdentifier","src":"3411:1:87"},{"name":"loopEnd","nativeSrc":"3414:7:87","nodeType":"YulIdentifier","src":"3414:7:87"}],"functionName":{"name":"lt","nativeSrc":"3408:2:87","nodeType":"YulIdentifier","src":"3408:2:87"},"nativeSrc":"3408:14:87","nodeType":"YulFunctionCall","src":"3408:14:87"},"nativeSrc":"3400:222:87","nodeType":"YulForLoop","post":{"nativeSrc":"3423:21:87","nodeType":"YulBlock","src":"3423:21:87","statements":[{"nativeSrc":"3425:17:87","nodeType":"YulAssignment","src":"3425:17:87","value":{"arguments":[{"name":"i","nativeSrc":"3434:1:87","nodeType":"YulIdentifier","src":"3434:1:87"},{"kind":"number","nativeSrc":"3437:4:87","nodeType":"YulLiteral","src":"3437:4:87","type":"","value":"0x20"}],"functionName":{"name":"add","nativeSrc":"3430:3:87","nodeType":"YulIdentifier","src":"3430:3:87"},"nativeSrc":"3430:12:87","nodeType":"YulFunctionCall","src":"3430:12:87"},"variableNames":[{"name":"i","nativeSrc":"3425:1:87","nodeType":"YulIdentifier","src":"3425:1:87"}]}]},"pre":{"nativeSrc":"3404:3:87","nodeType":"YulBlock","src":"3404:3:87","statements":[]},"src":"3400:222:87"},{"body":{"nativeSrc":"3670:166:87","nodeType":"YulBlock","src":"3670:166:87","statements":[{"nativeSrc":"3688:43:87","nodeType":"YulVariableDeclaration","src":"3688:43:87","value":{"arguments":[{"arguments":[{"name":"src","nativeSrc":"3715:3:87","nodeType":"YulIdentifier","src":"3715:3:87"},{"name":"srcOffset","nativeSrc":"3720:9:87","nodeType":"YulIdentifier","src":"3720:9:87"}],"functionName":{"name":"add","nativeSrc":"3711:3:87","nodeType":"YulIdentifier","src":"3711:3:87"},"nativeSrc":"3711:19:87","nodeType":"YulFunctionCall","src":"3711:19:87"}],"functionName":{"name":"mload","nativeSrc":"3705:5:87","nodeType":"YulIdentifier","src":"3705:5:87"},"nativeSrc":"3705:26:87","nodeType":"YulFunctionCall","src":"3705:26:87"},"variables":[{"name":"lastValue","nativeSrc":"3692:9:87","nodeType":"YulTypedName","src":"3692:9:87","type":""}]},{"expression":{"arguments":[{"name":"dstPtr","nativeSrc":"3755:6:87","nodeType":"YulIdentifier","src":"3755:6:87"},{"arguments":[{"name":"lastValue","nativeSrc":"3767:9:87","nodeType":"YulIdentifier","src":"3767:9:87"},{"arguments":[{"arguments":[{"arguments":[{"arguments":[{"kind":"number","nativeSrc":"3794:1:87","nodeType":"YulLiteral","src":"3794:1:87","type":"","value":"3"},{"name":"newLen","nativeSrc":"3797:6:87","nodeType":"YulIdentifier","src":"3797:6:87"}],"functionName":{"name":"shl","nativeSrc":"3790:3:87","nodeType":"YulIdentifier","src":"3790:3:87"},"nativeSrc":"3790:14:87","nodeType":"YulFunctionCall","src":"3790:14:87"},{"kind":"number","nativeSrc":"3806:3:87","nodeType":"YulLiteral","src":"3806:3:87","type":"","value":"248"}],"functionName":{"name":"and","nativeSrc":"3786:3:87","nodeType":"YulIdentifier","src":"3786:3:87"},"nativeSrc":"3786:24:87","nodeType":"YulFunctionCall","src":"3786:24:87"},{"arguments":[{"kind":"number","nativeSrc":"3816:1:87","nodeType":"YulLiteral","src":"3816:1:87","type":"","value":"0"}],"functionName":{"name":"not","nativeSrc":"3812:3:87","nodeType":"YulIdentifier","src":"3812:3:87"},"nativeSrc":"3812:6:87","nodeType":"YulFunctionCall","src":"3812:6:87"}],"functionName":{"name":"shr","nativeSrc":"3782:3:87","nodeType":"YulIdentifier","src":"3782:3:87"},"nativeSrc":"3782:37:87","nodeType":"YulFunctionCall","src":"3782:37:87"}],"functionName":{"name":"not","nativeSrc":"3778:3:87","nodeType":"YulIdentifier","src":"3778:3:87"},"nativeSrc":"3778:42:87","nodeType":"YulFunctionCall","src":"3778:42:87"}],"functionName":{"name":"and","nativeSrc":"3763:3:87","nodeType":"YulIdentifier","src":"3763:3:87"},"nativeSrc":"3763:58:87","nodeType":"YulFunctionCall","src":"3763:58:87"}],"functionName":{"name":"sstore","nativeSrc":"3748:6:87","nodeType":"YulIdentifier","src":"3748:6:87"},"nativeSrc":"3748:74:87","nodeType":"YulFunctionCall","src":"3748:74:87"},"nativeSrc":"3748:74:87","nodeType":"YulExpressionStatement","src":"3748:74:87"}]},"condition":{"arguments":[{"name":"loopEnd","nativeSrc":"3641:7:87","nodeType":"YulIdentifier","src":"3641:7:87"},{"name":"newLen","nativeSrc":"3650:6:87","nodeType":"YulIdentifier","src":"3650:6:87"}],"functionName":{"name":"lt","nativeSrc":"3638:2:87","nodeType":"YulIdentifier","src":"3638:2:87"},"nativeSrc":"3638:19:87","nodeType":"YulFunctionCall","src":"3638:19:87"},"nativeSrc":"3635:201:87","nodeType":"YulIf","src":"3635:201:87"},{"expression":{"arguments":[{"name":"slot","nativeSrc":"3856:4:87","nodeType":"YulIdentifier","src":"3856:4:87"},{"arguments":[{"arguments":[{"kind":"number","nativeSrc":"3870:1:87","nodeType":"YulLiteral","src":"3870:1:87","type":"","value":"1"},{"name":"newLen","nativeSrc":"3873:6:87","nodeType":"YulIdentifier","src":"3873:6:87"}],"functionName":{"name":"shl","nativeSrc":"3866:3:87","nodeType":"YulIdentifier","src":"3866:3:87"},"nativeSrc":"3866:14:87","nodeType":"YulFunctionCall","src":"3866:14:87"},{"kind":"number","nativeSrc":"3882:1:87","nodeType":"YulLiteral","src":"3882:1:87","type":"","value":"1"}],"functionName":{"name":"add","nativeSrc":"3862:3:87","nodeType":"YulIdentifier","src":"3862:3:87"},"nativeSrc":"3862:22:87","nodeType":"YulFunctionCall","src":"3862:22:87"}],"functionName":{"name":"sstore","nativeSrc":"3849:6:87","nodeType":"YulIdentifier","src":"3849:6:87"},"nativeSrc":"3849:36:87","nodeType":"YulFunctionCall","src":"3849:36:87"},"nativeSrc":"3849:36:87","nodeType":"YulExpressionStatement","src":"3849:36:87"}]},"nativeSrc":"3246:649:87","nodeType":"YulCase","src":"3246:649:87","value":{"kind":"number","nativeSrc":"3251:1:87","nodeType":"YulLiteral","src":"3251:1:87","type":"","value":"1"}},{"body":{"nativeSrc":"3912:234:87","nodeType":"YulBlock","src":"3912:234:87","statements":[{"nativeSrc":"3926:14:87","nodeType":"YulVariableDeclaration","src":"3926:14:87","value":{"kind":"number","nativeSrc":"3939:1:87","nodeType":"YulLiteral","src":"3939:1:87","type":"","value":"0"},"variables":[{"name":"value","nativeSrc":"3930:5:87","nodeType":"YulTypedName","src":"3930:5:87","type":""}]},{"body":{"nativeSrc":"3975:67:87","nodeType":"YulBlock","src":"3975:67:87","statements":[{"nativeSrc":"3993:35:87","nodeType":"YulAssignment","src":"3993:35:87","value":{"arguments":[{"arguments":[{"name":"src","nativeSrc":"4012:3:87","nodeType":"YulIdentifier","src":"4012:3:87"},{"name":"srcOffset","nativeSrc":"4017:9:87","nodeType":"YulIdentifier","src":"4017:9:87"}],"functionName":{"name":"add","nativeSrc":"4008:3:87","nodeType":"YulIdentifier","src":"4008:3:87"},"nativeSrc":"4008:19:87","nodeType":"YulFunctionCall","src":"4008:19:87"}],"functionName":{"name":"mload","nativeSrc":"4002:5:87","nodeType":"YulIdentifier","src":"4002:5:87"},"nativeSrc":"4002:26:87","nodeType":"YulFunctionCall","src":"4002:26:87"},"variableNames":[{"name":"value","nativeSrc":"3993:5:87","nodeType":"YulIdentifier","src":"3993:5:87"}]}]},"condition":{"name":"newLen","nativeSrc":"3956:6:87","nodeType":"YulIdentifier","src":"3956:6:87"},"nativeSrc":"3953:89:87","nodeType":"YulIf","src":"3953:89:87"},{"expression":{"arguments":[{"name":"slot","nativeSrc":"4062:4:87","nodeType":"YulIdentifier","src":"4062:4:87"},{"arguments":[{"name":"value","nativeSrc":"4121:5:87","nodeType":"YulIdentifier","src":"4121:5:87"},{"name":"newLen","nativeSrc":"4128:6:87","nodeType":"YulIdentifier","src":"4128:6:87"}],"functionName":{"name":"extract_used_part_and_set_length_of_short_byte_array","nativeSrc":"4068:52:87","nodeType":"YulIdentifier","src":"4068:52:87"},"nativeSrc":"4068:67:87","nodeType":"YulFunctionCall","src":"4068:67:87"}],"functionName":{"name":"sstore","nativeSrc":"4055:6:87","nodeType":"YulIdentifier","src":"4055:6:87"},"nativeSrc":"4055:81:87","nodeType":"YulFunctionCall","src":"4055:81:87"},"nativeSrc":"4055:81:87","nodeType":"YulExpressionStatement","src":"4055:81:87"}]},"nativeSrc":"3904:242:87","nodeType":"YulCase","src":"3904:242:87","value":"default"}],"expression":{"arguments":[{"name":"newLen","nativeSrc":"3226:6:87","nodeType":"YulIdentifier","src":"3226:6:87"},{"kind":"number","nativeSrc":"3234:2:87","nodeType":"YulLiteral","src":"3234:2:87","type":"","value":"31"}],"functionName":{"name":"gt","nativeSrc":"3223:2:87","nodeType":"YulIdentifier","src":"3223:2:87"},"nativeSrc":"3223:14:87","nodeType":"YulFunctionCall","src":"3223:14:87"},"nativeSrc":"3216:930:87","nodeType":"YulSwitch","src":"3216:930:87"}]},"name":"copy_byte_array_to_storage_from_t_string_memory_ptr_to_t_string_storage","nativeSrc":"2853:1299:87","nodeType":"YulFunctionDefinition","parameters":[{"name":"slot","nativeSrc":"2934:4:87","nodeType":"YulTypedName","src":"2934:4:87","type":""},{"name":"src","nativeSrc":"2940:3:87","nodeType":"YulTypedName","src":"2940:3:87","type":""}],"src":"2853:1299:87"},{"body":{"nativeSrc":"4258:102:87","nodeType":"YulBlock","src":"4258:102:87","statements":[{"nativeSrc":"4268:26:87","nodeType":"YulAssignment","src":"4268:26:87","value":{"arguments":[{"name":"headStart","nativeSrc":"4280:9:87","nodeType":"YulIdentifier","src":"4280:9:87"},{"kind":"number","nativeSrc":"4291:2:87","nodeType":"YulLiteral","src":"4291:2:87","type":"","value":"32"}],"functionName":{"name":"add","nativeSrc":"4276:3:87","nodeType":"YulIdentifier","src":"4276:3:87"},"nativeSrc":"4276:18:87","nodeType":"YulFunctionCall","src":"4276:18:87"},"variableNames":[{"name":"tail","nativeSrc":"4268:4:87","nodeType":"YulIdentifier","src":"4268:4:87"}]},{"expression":{"arguments":[{"name":"headStart","nativeSrc":"4310:9:87","nodeType":"YulIdentifier","src":"4310:9:87"},{"arguments":[{"name":"value0","nativeSrc":"4325:6:87","nodeType":"YulIdentifier","src":"4325:6:87"},{"arguments":[{"arguments":[{"kind":"number","nativeSrc":"4341:3:87","nodeType":"YulLiteral","src":"4341:3:87","type":"","value":"160"},{"kind":"number","nativeSrc":"4346:1:87","nodeType":"YulLiteral","src":"4346:1:87","type":"","value":"1"}],"functionName":{"name":"shl","nativeSrc":"4337:3:87","nodeType":"YulIdentifier","src":"4337:3:87"},"nativeSrc":"4337:11:87","nodeType":"YulFunctionCall","src":"4337:11:87"},{"kind":"number","nativeSrc":"4350:1:87","nodeType":"YulLiteral","src":"4350:1:87","type":"","value":"1"}],"functionName":{"name":"sub","nativeSrc":"4333:3:87","nodeType":"YulIdentifier","src":"4333:3:87"},"nativeSrc":"4333:19:87","nodeType":"YulFunctionCall","src":"4333:19:87"}],"functionName":{"name":"and","nativeSrc":"4321:3:87","nodeType":"YulIdentifier","src":"4321:3:87"},"nativeSrc":"4321:32:87","nodeType":"YulFunctionCall","src":"4321:32:87"}],"functionName":{"name":"mstore","nativeSrc":"4303:6:87","nodeType":"YulIdentifier","src":"4303:6:87"},"nativeSrc":"4303:51:87","nodeType":"YulFunctionCall","src":"4303:51:87"},"nativeSrc":"4303:51:87","nodeType":"YulExpressionStatement","src":"4303:51:87"}]},"name":"abi_encode_tuple_t_address__to_t_address__fromStack_reversed","nativeSrc":"4157:203:87","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nativeSrc":"4227:9:87","nodeType":"YulTypedName","src":"4227:9:87","type":""},{"name":"value0","nativeSrc":"4238:6:87","nodeType":"YulTypedName","src":"4238:6:87","type":""}],"returnVariables":[{"name":"tail","nativeSrc":"4249:4:87","nodeType":"YulTypedName","src":"4249:4:87","type":""}],"src":"4157:203:87"},{"body":{"nativeSrc":"4413:174:87","nodeType":"YulBlock","src":"4413:174:87","statements":[{"nativeSrc":"4423:16:87","nodeType":"YulAssignment","src":"4423:16:87","value":{"arguments":[{"name":"x","nativeSrc":"4434:1:87","nodeType":"YulIdentifier","src":"4434:1:87"},{"name":"y","nativeSrc":"4437:1:87","nodeType":"YulIdentifier","src":"4437:1:87"}],"functionName":{"name":"add","nativeSrc":"4430:3:87","nodeType":"YulIdentifier","src":"4430:3:87"},"nativeSrc":"4430:9:87","nodeType":"YulFunctionCall","src":"4430:9:87"},"variableNames":[{"name":"sum","nativeSrc":"4423:3:87","nodeType":"YulIdentifier","src":"4423:3:87"}]},{"body":{"nativeSrc":"4470:111:87","nodeType":"YulBlock","src":"4470:111:87","statements":[{"expression":{"arguments":[{"kind":"number","nativeSrc":"4491:1:87","nodeType":"YulLiteral","src":"4491:1:87","type":"","value":"0"},{"arguments":[{"kind":"number","nativeSrc":"4498:3:87","nodeType":"YulLiteral","src":"4498:3:87","type":"","value":"224"},{"kind":"number","nativeSrc":"4503:10:87","nodeType":"YulLiteral","src":"4503:10:87","type":"","value":"0x4e487b71"}],"functionName":{"name":"shl","nativeSrc":"4494:3:87","nodeType":"YulIdentifier","src":"4494:3:87"},"nativeSrc":"4494:20:87","nodeType":"YulFunctionCall","src":"4494:20:87"}],"functionName":{"name":"mstore","nativeSrc":"4484:6:87","nodeType":"YulIdentifier","src":"4484:6:87"},"nativeSrc":"4484:31:87","nodeType":"YulFunctionCall","src":"4484:31:87"},"nativeSrc":"4484:31:87","nodeType":"YulExpressionStatement","src":"4484:31:87"},{"expression":{"arguments":[{"kind":"number","nativeSrc":"4535:1:87","nodeType":"YulLiteral","src":"4535:1:87","type":"","value":"4"},{"kind":"number","nativeSrc":"4538:4:87","nodeType":"YulLiteral","src":"4538:4:87","type":"","value":"0x11"}],"functionName":{"name":"mstore","nativeSrc":"4528:6:87","nodeType":"YulIdentifier","src":"4528:6:87"},"nativeSrc":"4528:15:87","nodeType":"YulFunctionCall","src":"4528:15:87"},"nativeSrc":"4528:15:87","nodeType":"YulExpressionStatement","src":"4528:15:87"},{"expression":{"arguments":[{"kind":"number","nativeSrc":"4563:1:87","nodeType":"YulLiteral","src":"4563:1:87","type":"","value":"0"},{"kind":"number","nativeSrc":"4566:4:87","nodeType":"YulLiteral","src":"4566:4:87","type":"","value":"0x24"}],"functionName":{"name":"revert","nativeSrc":"4556:6:87","nodeType":"YulIdentifier","src":"4556:6:87"},"nativeSrc":"4556:15:87","nodeType":"YulFunctionCall","src":"4556:15:87"},"nativeSrc":"4556:15:87","nodeType":"YulExpressionStatement","src":"4556:15:87"}]},"condition":{"arguments":[{"name":"x","nativeSrc":"4454:1:87","nodeType":"YulIdentifier","src":"4454:1:87"},{"name":"sum","nativeSrc":"4457:3:87","nodeType":"YulIdentifier","src":"4457:3:87"}],"functionName":{"name":"gt","nativeSrc":"4451:2:87","nodeType":"YulIdentifier","src":"4451:2:87"},"nativeSrc":"4451:10:87","nodeType":"YulFunctionCall","src":"4451:10:87"},"nativeSrc":"4448:133:87","nodeType":"YulIf","src":"4448:133:87"}]},"name":"checked_add_t_uint256","nativeSrc":"4365:222:87","nodeType":"YulFunctionDefinition","parameters":[{"name":"x","nativeSrc":"4396:1:87","nodeType":"YulTypedName","src":"4396:1:87","type":""},{"name":"y","nativeSrc":"4399:1:87","nodeType":"YulTypedName","src":"4399:1:87","type":""}],"returnVariables":[{"name":"sum","nativeSrc":"4405:3:87","nodeType":"YulTypedName","src":"4405:3:87","type":""}],"src":"4365:222:87"},{"body":{"nativeSrc":"4749:188:87","nodeType":"YulBlock","src":"4749:188:87","statements":[{"nativeSrc":"4759:26:87","nodeType":"YulAssignment","src":"4759:26:87","value":{"arguments":[{"name":"headStart","nativeSrc":"4771:9:87","nodeType":"YulIdentifier","src":"4771:9:87"},{"kind":"number","nativeSrc":"4782:2:87","nodeType":"YulLiteral","src":"4782:2:87","type":"","value":"96"}],"functionName":{"name":"add","nativeSrc":"4767:3:87","nodeType":"YulIdentifier","src":"4767:3:87"},"nativeSrc":"4767:18:87","nodeType":"YulFunctionCall","src":"4767:18:87"},"variableNames":[{"name":"tail","nativeSrc":"4759:4:87","nodeType":"YulIdentifier","src":"4759:4:87"}]},{"expression":{"arguments":[{"name":"headStart","nativeSrc":"4801:9:87","nodeType":"YulIdentifier","src":"4801:9:87"},{"arguments":[{"name":"value0","nativeSrc":"4816:6:87","nodeType":"YulIdentifier","src":"4816:6:87"},{"arguments":[{"arguments":[{"kind":"number","nativeSrc":"4832:3:87","nodeType":"YulLiteral","src":"4832:3:87","type":"","value":"160"},{"kind":"number","nativeSrc":"4837:1:87","nodeType":"YulLiteral","src":"4837:1:87","type":"","value":"1"}],"functionName":{"name":"shl","nativeSrc":"4828:3:87","nodeType":"YulIdentifier","src":"4828:3:87"},"nativeSrc":"4828:11:87","nodeType":"YulFunctionCall","src":"4828:11:87"},{"kind":"number","nativeSrc":"4841:1:87","nodeType":"YulLiteral","src":"4841:1:87","type":"","value":"1"}],"functionName":{"name":"sub","nativeSrc":"4824:3:87","nodeType":"YulIdentifier","src":"4824:3:87"},"nativeSrc":"4824:19:87","nodeType":"YulFunctionCall","src":"4824:19:87"}],"functionName":{"name":"and","nativeSrc":"4812:3:87","nodeType":"YulIdentifier","src":"4812:3:87"},"nativeSrc":"4812:32:87","nodeType":"YulFunctionCall","src":"4812:32:87"}],"functionName":{"name":"mstore","nativeSrc":"4794:6:87","nodeType":"YulIdentifier","src":"4794:6:87"},"nativeSrc":"4794:51:87","nodeType":"YulFunctionCall","src":"4794:51:87"},"nativeSrc":"4794:51:87","nodeType":"YulExpressionStatement","src":"4794:51:87"},{"expression":{"arguments":[{"arguments":[{"name":"headStart","nativeSrc":"4865:9:87","nodeType":"YulIdentifier","src":"4865:9:87"},{"kind":"number","nativeSrc":"4876:2:87","nodeType":"YulLiteral","src":"4876:2:87","type":"","value":"32"}],"functionName":{"name":"add","nativeSrc":"4861:3:87","nodeType":"YulIdentifier","src":"4861:3:87"},"nativeSrc":"4861:18:87","nodeType":"YulFunctionCall","src":"4861:18:87"},{"name":"value1","nativeSrc":"4881:6:87","nodeType":"YulIdentifier","src":"4881:6:87"}],"functionName":{"name":"mstore","nativeSrc":"4854:6:87","nodeType":"YulIdentifier","src":"4854:6:87"},"nativeSrc":"4854:34:87","nodeType":"YulFunctionCall","src":"4854:34:87"},"nativeSrc":"4854:34:87","nodeType":"YulExpressionStatement","src":"4854:34:87"},{"expression":{"arguments":[{"arguments":[{"name":"headStart","nativeSrc":"4908:9:87","nodeType":"YulIdentifier","src":"4908:9:87"},{"kind":"number","nativeSrc":"4919:2:87","nodeType":"YulLiteral","src":"4919:2:87","type":"","value":"64"}],"functionName":{"name":"add","nativeSrc":"4904:3:87","nodeType":"YulIdentifier","src":"4904:3:87"},"nativeSrc":"4904:18:87","nodeType":"YulFunctionCall","src":"4904:18:87"},{"name":"value2","nativeSrc":"4924:6:87","nodeType":"YulIdentifier","src":"4924:6:87"}],"functionName":{"name":"mstore","nativeSrc":"4897:6:87","nodeType":"YulIdentifier","src":"4897:6:87"},"nativeSrc":"4897:34:87","nodeType":"YulFunctionCall","src":"4897:34:87"},"nativeSrc":"4897:34:87","nodeType":"YulExpressionStatement","src":"4897:34:87"}]},"name":"abi_encode_tuple_t_address_t_uint256_t_uint256__to_t_address_t_uint256_t_uint256__fromStack_reversed","nativeSrc":"4592:345:87","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nativeSrc":"4702:9:87","nodeType":"YulTypedName","src":"4702:9:87","type":""},{"name":"value2","nativeSrc":"4713:6:87","nodeType":"YulTypedName","src":"4713:6:87","type":""},{"name":"value1","nativeSrc":"4721:6:87","nodeType":"YulTypedName","src":"4721:6:87","type":""},{"name":"value0","nativeSrc":"4729:6:87","nodeType":"YulTypedName","src":"4729:6:87","type":""}],"returnVariables":[{"name":"tail","nativeSrc":"4740:4:87","nodeType":"YulTypedName","src":"4740:4:87","type":""}],"src":"4592:345:87"},{"body":{"nativeSrc":"5043:76:87","nodeType":"YulBlock","src":"5043:76:87","statements":[{"nativeSrc":"5053:26:87","nodeType":"YulAssignment","src":"5053:26:87","value":{"arguments":[{"name":"headStart","nativeSrc":"5065:9:87","nodeType":"YulIdentifier","src":"5065:9:87"},{"kind":"number","nativeSrc":"5076:2:87","nodeType":"YulLiteral","src":"5076:2:87","type":"","value":"32"}],"functionName":{"name":"add","nativeSrc":"5061:3:87","nodeType":"YulIdentifier","src":"5061:3:87"},"nativeSrc":"5061:18:87","nodeType":"YulFunctionCall","src":"5061:18:87"},"variableNames":[{"name":"tail","nativeSrc":"5053:4:87","nodeType":"YulIdentifier","src":"5053:4:87"}]},{"expression":{"arguments":[{"name":"headStart","nativeSrc":"5095:9:87","nodeType":"YulIdentifier","src":"5095:9:87"},{"name":"value0","nativeSrc":"5106:6:87","nodeType":"YulIdentifier","src":"5106:6:87"}],"functionName":{"name":"mstore","nativeSrc":"5088:6:87","nodeType":"YulIdentifier","src":"5088:6:87"},"nativeSrc":"5088:25:87","nodeType":"YulFunctionCall","src":"5088:25:87"},"nativeSrc":"5088:25:87","nodeType":"YulExpressionStatement","src":"5088:25:87"}]},"name":"abi_encode_tuple_t_uint256__to_t_uint256__fromStack_reversed","nativeSrc":"4942:177:87","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nativeSrc":"5012:9:87","nodeType":"YulTypedName","src":"5012:9:87","type":""},{"name":"value0","nativeSrc":"5023:6:87","nodeType":"YulTypedName","src":"5023:6:87","type":""}],"returnVariables":[{"name":"tail","nativeSrc":"5034:4:87","nodeType":"YulTypedName","src":"5034:4:87","type":""}],"src":"4942:177:87"}]},"contents":"{\n    { }\n    function panic_error_0x41()\n    {\n        mstore(0, shl(224, 0x4e487b71))\n        mstore(4, 0x41)\n        revert(0, 0x24)\n    }\n    function abi_decode_string_fromMemory(offset, end) -> array\n    {\n        if iszero(slt(add(offset, 0x1f), end)) { revert(0, 0) }\n        let length := mload(offset)\n        if gt(length, sub(shl(64, 1), 1)) { panic_error_0x41() }\n        let memPtr := mload(64)\n        let newFreePtr := add(memPtr, and(add(and(add(length, 0x1f), not(31)), 63), not(31)))\n        if or(gt(newFreePtr, sub(shl(64, 1), 1)), lt(newFreePtr, memPtr)) { panic_error_0x41() }\n        mstore(64, newFreePtr)\n        mstore(memPtr, length)\n        if gt(add(add(offset, length), 0x20), end) { revert(0, 0) }\n        mcopy(add(memPtr, 0x20), add(offset, 0x20), length)\n        mstore(add(add(memPtr, length), 0x20), 0)\n        array := memPtr\n    }\n    function abi_decode_tuple_t_string_memory_ptrt_string_memory_ptrt_uint256t_uint8_fromMemory(headStart, dataEnd) -> value0, value1, value2, value3\n    {\n        if slt(sub(dataEnd, headStart), 128) { revert(0, 0) }\n        let offset := mload(headStart)\n        if gt(offset, sub(shl(64, 1), 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, sub(shl(64, 1), 1)) { revert(0, 0) }\n        value1 := abi_decode_string_fromMemory(add(headStart, offset_1), dataEnd)\n        value2 := mload(add(headStart, 64))\n        let value := mload(add(headStart, 96))\n        if iszero(eq(value, and(value, 0xff))) { revert(0, 0) }\n        value3 := value\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 array_dataslot_string_storage(ptr) -> data\n    {\n        mstore(0, ptr)\n        data := keccak256(0, 0x20)\n    }\n    function clean_up_bytearray_end_slots_string_storage(array, len, startIndex)\n    {\n        if gt(len, 31)\n        {\n            mstore(0, array)\n            let data := keccak256(0, 0x20)\n            let deleteStart := add(data, shr(5, add(startIndex, 31)))\n            if lt(startIndex, 0x20) { deleteStart := data }\n            let _1 := add(data, shr(5, add(len, 31)))\n            let start := deleteStart\n            for { } lt(start, _1) { start := add(start, 1) }\n            { sstore(start, 0) }\n        }\n    }\n    function extract_used_part_and_set_length_of_short_byte_array(data, len) -> used\n    {\n        used := or(and(data, not(shr(shl(3, len), not(0)))), shl(1, len))\n    }\n    function copy_byte_array_to_storage_from_t_string_memory_ptr_to_t_string_storage(slot, src)\n    {\n        let newLen := mload(src)\n        if gt(newLen, sub(shl(64, 1), 1)) { panic_error_0x41() }\n        clean_up_bytearray_end_slots_string_storage(slot, extract_byte_array_length(sload(slot)), newLen)\n        let srcOffset := 0\n        srcOffset := 0x20\n        switch gt(newLen, 31)\n        case 1 {\n            let loopEnd := and(newLen, not(31))\n            let dstPtr := array_dataslot_string_storage(slot)\n            let i := 0\n            for { } lt(i, loopEnd) { i := add(i, 0x20) }\n            {\n                sstore(dstPtr, mload(add(src, srcOffset)))\n                dstPtr := add(dstPtr, 1)\n                srcOffset := add(srcOffset, 0x20)\n            }\n            if lt(loopEnd, newLen)\n            {\n                let lastValue := mload(add(src, srcOffset))\n                sstore(dstPtr, and(lastValue, not(shr(and(shl(3, newLen), 248), not(0)))))\n            }\n            sstore(slot, add(shl(1, newLen), 1))\n        }\n        default {\n            let value := 0\n            if newLen\n            {\n                value := mload(add(src, srcOffset))\n            }\n            sstore(slot, extract_used_part_and_set_length_of_short_byte_array(value, newLen))\n        }\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, sub(shl(160, 1), 1)))\n    }\n    function checked_add_t_uint256(x, y) -> sum\n    {\n        sum := add(x, y)\n        if gt(x, sum)\n        {\n            mstore(0, shl(224, 0x4e487b71))\n            mstore(4, 0x11)\n            revert(0, 0x24)\n        }\n    }\n    function abi_encode_tuple_t_address_t_uint256_t_uint256__to_t_address_t_uint256_t_uint256__fromStack_reversed(headStart, value2, value1, value0) -> tail\n    {\n        tail := add(headStart, 96)\n        mstore(headStart, and(value0, sub(shl(160, 1), 1)))\n        mstore(add(headStart, 32), value1)\n        mstore(add(headStart, 64), value2)\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":87,"language":"Yul","name":"#utility.yul"}],"linkReferences":{},"object":"60a060405234801561000f575f5ffd5b50604051610c2a380380610c2a83398101604081905261002e91610266565b8383600361003c838261036f565b506004610049828261036f565b50505060ff811660805261005d3383610066565b5050505061044e565b6001600160a01b0382166100945760405163ec442f0560e01b81525f60048201526024015b60405180910390fd5b61009f5f83836100a3565b5050565b6001600160a01b0383166100cd578060025f8282546100c29190610429565b9091555061013d9050565b6001600160a01b0383165f908152602081905260409020548181101561011f5760405163391434e360e21b81526001600160a01b0385166004820152602481018290526044810183905260640161008b565b6001600160a01b0384165f9081526020819052604090209082900390555b6001600160a01b03821661015957600280548290039055610177565b6001600160a01b0382165f9081526020819052604090208054820190555b816001600160a01b0316836001600160a01b03167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef836040516101bc91815260200190565b60405180910390a3505050565b634e487b7160e01b5f52604160045260245ffd5b5f82601f8301126101ec575f5ffd5b81516001600160401b03811115610205576102056101c9565b604051601f8201601f19908116603f011681016001600160401b0381118282101715610233576102336101c9565b60405281815283820160200185101561024a575f5ffd5b8160208501602083015e5f918101602001919091529392505050565b5f5f5f5f60808587031215610279575f5ffd5b84516001600160401b0381111561028e575f5ffd5b61029a878288016101dd565b602087015190955090506001600160401b038111156102b7575f5ffd5b6102c3878288016101dd565b93505060408501519150606085015160ff811681146102e0575f5ffd5b939692955090935050565b600181811c908216806102ff57607f821691505b60208210810361031d57634e487b7160e01b5f52602260045260245ffd5b50919050565b601f82111561036a57805f5260205f20601f840160051c810160208510156103485750805b601f840160051c820191505b81811015610367575f8155600101610354565b50505b505050565b81516001600160401b03811115610388576103886101c9565b61039c8161039684546102eb565b84610323565b6020601f8211600181146103ce575f83156103b75750848201515b5f19600385901b1c1916600184901b178455610367565b5f84815260208120601f198516915b828110156103fd57878501518255602094850194600190920191016103dd565b508482101561041a57868401515f19600387901b60f8161c191681555b50505050600190811b01905550565b8082018082111561044857634e487b7160e01b5f52601160045260245ffd5b92915050565b6080516107c46104665f395f61011701526107c45ff3fe608060405234801561000f575f5ffd5b50600436106100a6575f3560e01c806340c10f191161006e57806340c10f191461014157806370a082311461015657806395d89b411461017e5780639dc29fac14610186578063a9059cbb14610199578063dd62ed3e146101ac575f5ffd5b806306fdde03146100aa578063095ea7b3146100c857806318160ddd146100eb57806323b872dd146100fd578063313ce56714610110575b5f5ffd5b6100b26101e4565b6040516100bf9190610634565b60405180910390f35b6100db6100d6366004610684565b610274565b60405190151581526020016100bf565b6002545b6040519081526020016100bf565b6100db61010b3660046106ac565b61028d565b60405160ff7f00000000000000000000000000000000000000000000000000000000000000001681526020016100bf565b61015461014f366004610684565b6102b0565b005b6100ef6101643660046106e6565b6001600160a01b03165f9081526020819052604090205490565b6100b26102be565b610154610194366004610684565b6102cd565b6100db6101a7366004610684565b6102d7565b6100ef6101ba366004610706565b6001600160a01b039182165f90815260016020908152604080832093909416825291909152205490565b6060600380546101f390610737565b80601f016020809104026020016040519081016040528092919081815260200182805461021f90610737565b801561026a5780601f106102415761010080835404028352916020019161026a565b820191905f5260205f20905b81548152906001019060200180831161024d57829003601f168201915b5050505050905090565b5f336102818185856102e4565b60019150505b92915050565b5f3361029a8582856102f6565b6102a5858585610377565b506001949350505050565b6102ba82826103d4565b5050565b6060600480546101f390610737565b6102ba8282610408565b5f33610281818585610377565b6102f1838383600161043c565b505050565b6001600160a01b038381165f908152600160209081526040808320938616835292905220545f19811015610371578181101561036357604051637dc7a0d960e11b81526001600160a01b038416600482015260248101829052604481018390526064015b60405180910390fd5b61037184848484035f61043c565b50505050565b6001600160a01b0383166103a057604051634b637e8f60e11b81525f600482015260240161035a565b6001600160a01b0382166103c95760405163ec442f0560e01b81525f600482015260240161035a565b6102f183838361050e565b6001600160a01b0382166103fd5760405163ec442f0560e01b81525f600482015260240161035a565b6102ba5f838361050e565b6001600160a01b03821661043157604051634b637e8f60e11b81525f600482015260240161035a565b6102ba825f8361050e565b6001600160a01b0384166104655760405163e602df0560e01b81525f600482015260240161035a565b6001600160a01b03831661048e57604051634a1406b160e11b81525f600482015260240161035a565b6001600160a01b038085165f908152600160209081526040808320938716835292905220829055801561037157826001600160a01b0316846001600160a01b03167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b9258460405161050091815260200190565b60405180910390a350505050565b6001600160a01b038316610538578060025f82825461052d919061076f565b909155506105a89050565b6001600160a01b0383165f908152602081905260409020548181101561058a5760405163391434e360e21b81526001600160a01b0385166004820152602481018290526044810183905260640161035a565b6001600160a01b0384165f9081526020819052604090209082900390555b6001600160a01b0382166105c4576002805482900390556105e2565b6001600160a01b0382165f9081526020819052604090208054820190555b816001600160a01b0316836001600160a01b03167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef8360405161062791815260200190565b60405180910390a3505050565b602081525f82518060208401528060208501604085015e5f604082850101526040601f19601f83011684010191505092915050565b80356001600160a01b038116811461067f575f5ffd5b919050565b5f5f60408385031215610695575f5ffd5b61069e83610669565b946020939093013593505050565b5f5f5f606084860312156106be575f5ffd5b6106c784610669565b92506106d560208501610669565b929592945050506040919091013590565b5f602082840312156106f6575f5ffd5b6106ff82610669565b9392505050565b5f5f60408385031215610717575f5ffd5b61072083610669565b915061072e60208401610669565b90509250929050565b600181811c9082168061074b57607f821691505b60208210810361076957634e487b7160e01b5f52602260045260245ffd5b50919050565b8082018082111561028757634e487b7160e01b5f52601160045260245ffdfea26469706673582212202ae8dd9ab4ee7abaa60bb9c3c6bccc689154f1f33065a301d737974cef5c28f864736f6c634300081e0033","opcodes":"PUSH1 0xA0 PUSH1 0x40 MSTORE CALLVALUE DUP1 ISZERO PUSH2 0xF JUMPI PUSH0 PUSH0 REVERT JUMPDEST POP PUSH1 0x40 MLOAD PUSH2 0xC2A CODESIZE SUB DUP1 PUSH2 0xC2A DUP4 CODECOPY DUP2 ADD PUSH1 0x40 DUP2 SWAP1 MSTORE PUSH2 0x2E SWAP2 PUSH2 0x266 JUMP JUMPDEST DUP4 DUP4 PUSH1 0x3 PUSH2 0x3C DUP4 DUP3 PUSH2 0x36F JUMP JUMPDEST POP PUSH1 0x4 PUSH2 0x49 DUP3 DUP3 PUSH2 0x36F JUMP JUMPDEST POP POP POP PUSH1 0xFF DUP2 AND PUSH1 0x80 MSTORE PUSH2 0x5D CALLER DUP4 PUSH2 0x66 JUMP JUMPDEST POP POP POP POP PUSH2 0x44E JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP3 AND PUSH2 0x94 JUMPI PUSH1 0x40 MLOAD PUSH4 0xEC442F05 PUSH1 0xE0 SHL DUP2 MSTORE PUSH0 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x24 ADD JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH2 0x9F PUSH0 DUP4 DUP4 PUSH2 0xA3 JUMP JUMPDEST POP POP JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP4 AND PUSH2 0xCD JUMPI DUP1 PUSH1 0x2 PUSH0 DUP3 DUP3 SLOAD PUSH2 0xC2 SWAP2 SWAP1 PUSH2 0x429 JUMP JUMPDEST SWAP1 SWAP2 SSTORE POP PUSH2 0x13D SWAP1 POP JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP4 AND PUSH0 SWAP1 DUP2 MSTORE PUSH1 0x20 DUP2 SWAP1 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD DUP2 DUP2 LT ISZERO PUSH2 0x11F JUMPI PUSH1 0x40 MLOAD PUSH4 0x391434E3 PUSH1 0xE2 SHL DUP2 MSTORE PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP6 AND PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x24 DUP2 ADD DUP3 SWAP1 MSTORE PUSH1 0x44 DUP2 ADD DUP4 SWAP1 MSTORE PUSH1 0x64 ADD PUSH2 0x8B JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP5 AND PUSH0 SWAP1 DUP2 MSTORE PUSH1 0x20 DUP2 SWAP1 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SWAP1 DUP3 SWAP1 SUB SWAP1 SSTORE JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP3 AND PUSH2 0x159 JUMPI PUSH1 0x2 DUP1 SLOAD DUP3 SWAP1 SUB SWAP1 SSTORE PUSH2 0x177 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP3 AND PUSH0 SWAP1 DUP2 MSTORE PUSH1 0x20 DUP2 SWAP1 MSTORE PUSH1 0x40 SWAP1 KECCAK256 DUP1 SLOAD DUP3 ADD SWAP1 SSTORE JUMPDEST DUP2 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP4 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH32 0xDDF252AD1BE2C89B69C2B068FC378DAA952BA7F163C4A11628F55A4DF523B3EF DUP4 PUSH1 0x40 MLOAD PUSH2 0x1BC SWAP2 DUP2 MSTORE PUSH1 0x20 ADD SWAP1 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 LOG3 POP POP POP JUMP JUMPDEST PUSH4 0x4E487B71 PUSH1 0xE0 SHL PUSH0 MSTORE PUSH1 0x41 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH0 REVERT JUMPDEST PUSH0 DUP3 PUSH1 0x1F DUP4 ADD SLT PUSH2 0x1EC JUMPI PUSH0 PUSH0 REVERT JUMPDEST DUP2 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0x40 SHL SUB DUP2 GT ISZERO PUSH2 0x205 JUMPI PUSH2 0x205 PUSH2 0x1C9 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH1 0x1F DUP3 ADD PUSH1 0x1F NOT SWAP1 DUP2 AND PUSH1 0x3F ADD AND DUP2 ADD PUSH1 0x1 PUSH1 0x1 PUSH1 0x40 SHL SUB DUP2 GT DUP3 DUP3 LT OR ISZERO PUSH2 0x233 JUMPI PUSH2 0x233 PUSH2 0x1C9 JUMP JUMPDEST PUSH1 0x40 MSTORE DUP2 DUP2 MSTORE DUP4 DUP3 ADD PUSH1 0x20 ADD DUP6 LT ISZERO PUSH2 0x24A JUMPI PUSH0 PUSH0 REVERT JUMPDEST DUP2 PUSH1 0x20 DUP6 ADD PUSH1 0x20 DUP4 ADD MCOPY PUSH0 SWAP2 DUP2 ADD PUSH1 0x20 ADD SWAP2 SWAP1 SWAP2 MSTORE SWAP4 SWAP3 POP POP POP JUMP JUMPDEST PUSH0 PUSH0 PUSH0 PUSH0 PUSH1 0x80 DUP6 DUP8 SUB SLT ISZERO PUSH2 0x279 JUMPI PUSH0 PUSH0 REVERT JUMPDEST DUP5 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0x40 SHL SUB DUP2 GT ISZERO PUSH2 0x28E JUMPI PUSH0 PUSH0 REVERT JUMPDEST PUSH2 0x29A DUP8 DUP3 DUP9 ADD PUSH2 0x1DD JUMP JUMPDEST PUSH1 0x20 DUP8 ADD MLOAD SWAP1 SWAP6 POP SWAP1 POP PUSH1 0x1 PUSH1 0x1 PUSH1 0x40 SHL SUB DUP2 GT ISZERO PUSH2 0x2B7 JUMPI PUSH0 PUSH0 REVERT JUMPDEST PUSH2 0x2C3 DUP8 DUP3 DUP9 ADD PUSH2 0x1DD JUMP JUMPDEST SWAP4 POP POP PUSH1 0x40 DUP6 ADD MLOAD SWAP2 POP PUSH1 0x60 DUP6 ADD MLOAD PUSH1 0xFF DUP2 AND DUP2 EQ PUSH2 0x2E0 JUMPI PUSH0 PUSH0 REVERT JUMPDEST SWAP4 SWAP7 SWAP3 SWAP6 POP SWAP1 SWAP4 POP POP JUMP JUMPDEST PUSH1 0x1 DUP2 DUP2 SHR SWAP1 DUP3 AND DUP1 PUSH2 0x2FF JUMPI PUSH1 0x7F DUP3 AND SWAP2 POP JUMPDEST PUSH1 0x20 DUP3 LT DUP2 SUB PUSH2 0x31D JUMPI PUSH4 0x4E487B71 PUSH1 0xE0 SHL PUSH0 MSTORE PUSH1 0x22 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH0 REVERT JUMPDEST POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x1F DUP3 GT ISZERO PUSH2 0x36A JUMPI DUP1 PUSH0 MSTORE PUSH1 0x20 PUSH0 KECCAK256 PUSH1 0x1F DUP5 ADD PUSH1 0x5 SHR DUP2 ADD PUSH1 0x20 DUP6 LT ISZERO PUSH2 0x348 JUMPI POP DUP1 JUMPDEST PUSH1 0x1F DUP5 ADD PUSH1 0x5 SHR DUP3 ADD SWAP2 POP JUMPDEST DUP2 DUP2 LT ISZERO PUSH2 0x367 JUMPI PUSH0 DUP2 SSTORE PUSH1 0x1 ADD PUSH2 0x354 JUMP JUMPDEST POP POP JUMPDEST POP POP POP JUMP JUMPDEST DUP2 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0x40 SHL SUB DUP2 GT ISZERO PUSH2 0x388 JUMPI PUSH2 0x388 PUSH2 0x1C9 JUMP JUMPDEST PUSH2 0x39C DUP2 PUSH2 0x396 DUP5 SLOAD PUSH2 0x2EB JUMP JUMPDEST DUP5 PUSH2 0x323 JUMP JUMPDEST PUSH1 0x20 PUSH1 0x1F DUP3 GT PUSH1 0x1 DUP2 EQ PUSH2 0x3CE JUMPI PUSH0 DUP4 ISZERO PUSH2 0x3B7 JUMPI POP DUP5 DUP3 ADD MLOAD JUMPDEST PUSH0 NOT PUSH1 0x3 DUP6 SWAP1 SHL SHR NOT AND PUSH1 0x1 DUP5 SWAP1 SHL OR DUP5 SSTORE PUSH2 0x367 JUMP JUMPDEST PUSH0 DUP5 DUP2 MSTORE PUSH1 0x20 DUP2 KECCAK256 PUSH1 0x1F NOT DUP6 AND SWAP2 JUMPDEST DUP3 DUP2 LT ISZERO PUSH2 0x3FD JUMPI DUP8 DUP6 ADD MLOAD DUP3 SSTORE PUSH1 0x20 SWAP5 DUP6 ADD SWAP5 PUSH1 0x1 SWAP1 SWAP3 ADD SWAP2 ADD PUSH2 0x3DD JUMP JUMPDEST POP DUP5 DUP3 LT ISZERO PUSH2 0x41A JUMPI DUP7 DUP5 ADD MLOAD PUSH0 NOT PUSH1 0x3 DUP8 SWAP1 SHL PUSH1 0xF8 AND SHR NOT AND DUP2 SSTORE JUMPDEST POP POP POP POP PUSH1 0x1 SWAP1 DUP2 SHL ADD SWAP1 SSTORE POP JUMP JUMPDEST DUP1 DUP3 ADD DUP1 DUP3 GT ISZERO PUSH2 0x448 JUMPI PUSH4 0x4E487B71 PUSH1 0xE0 SHL PUSH0 MSTORE PUSH1 0x11 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH0 REVERT JUMPDEST SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x80 MLOAD PUSH2 0x7C4 PUSH2 0x466 PUSH0 CODECOPY PUSH0 PUSH2 0x117 ADD MSTORE PUSH2 0x7C4 PUSH0 RETURN INVALID PUSH1 0x80 PUSH1 0x40 MSTORE CALLVALUE DUP1 ISZERO PUSH2 0xF JUMPI PUSH0 PUSH0 REVERT JUMPDEST POP PUSH1 0x4 CALLDATASIZE LT PUSH2 0xA6 JUMPI PUSH0 CALLDATALOAD PUSH1 0xE0 SHR DUP1 PUSH4 0x40C10F19 GT PUSH2 0x6E JUMPI DUP1 PUSH4 0x40C10F19 EQ PUSH2 0x141 JUMPI DUP1 PUSH4 0x70A08231 EQ PUSH2 0x156 JUMPI DUP1 PUSH4 0x95D89B41 EQ PUSH2 0x17E JUMPI DUP1 PUSH4 0x9DC29FAC EQ PUSH2 0x186 JUMPI DUP1 PUSH4 0xA9059CBB EQ PUSH2 0x199 JUMPI DUP1 PUSH4 0xDD62ED3E EQ PUSH2 0x1AC JUMPI PUSH0 PUSH0 REVERT JUMPDEST DUP1 PUSH4 0x6FDDE03 EQ PUSH2 0xAA JUMPI DUP1 PUSH4 0x95EA7B3 EQ PUSH2 0xC8 JUMPI DUP1 PUSH4 0x18160DDD EQ PUSH2 0xEB JUMPI DUP1 PUSH4 0x23B872DD EQ PUSH2 0xFD JUMPI DUP1 PUSH4 0x313CE567 EQ PUSH2 0x110 JUMPI JUMPDEST PUSH0 PUSH0 REVERT JUMPDEST PUSH2 0xB2 PUSH2 0x1E4 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0xBF SWAP2 SWAP1 PUSH2 0x634 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST PUSH2 0xDB PUSH2 0xD6 CALLDATASIZE PUSH1 0x4 PUSH2 0x684 JUMP JUMPDEST PUSH2 0x274 JUMP JUMPDEST PUSH1 0x40 MLOAD SWAP1 ISZERO ISZERO DUP2 MSTORE PUSH1 0x20 ADD PUSH2 0xBF JUMP JUMPDEST PUSH1 0x2 SLOAD JUMPDEST PUSH1 0x40 MLOAD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH2 0xBF JUMP JUMPDEST PUSH2 0xDB PUSH2 0x10B CALLDATASIZE PUSH1 0x4 PUSH2 0x6AC JUMP JUMPDEST PUSH2 0x28D JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH1 0xFF PUSH32 0x0 AND DUP2 MSTORE PUSH1 0x20 ADD PUSH2 0xBF JUMP JUMPDEST PUSH2 0x154 PUSH2 0x14F CALLDATASIZE PUSH1 0x4 PUSH2 0x684 JUMP JUMPDEST PUSH2 0x2B0 JUMP JUMPDEST STOP JUMPDEST PUSH2 0xEF PUSH2 0x164 CALLDATASIZE PUSH1 0x4 PUSH2 0x6E6 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH0 SWAP1 DUP2 MSTORE PUSH1 0x20 DUP2 SWAP1 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD SWAP1 JUMP JUMPDEST PUSH2 0xB2 PUSH2 0x2BE JUMP JUMPDEST PUSH2 0x154 PUSH2 0x194 CALLDATASIZE PUSH1 0x4 PUSH2 0x684 JUMP JUMPDEST PUSH2 0x2CD JUMP JUMPDEST PUSH2 0xDB PUSH2 0x1A7 CALLDATASIZE PUSH1 0x4 PUSH2 0x684 JUMP JUMPDEST PUSH2 0x2D7 JUMP JUMPDEST PUSH2 0xEF PUSH2 0x1BA CALLDATASIZE PUSH1 0x4 PUSH2 0x706 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP2 DUP3 AND PUSH0 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 0x1F3 SWAP1 PUSH2 0x737 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 0x21F SWAP1 PUSH2 0x737 JUMP JUMPDEST DUP1 ISZERO PUSH2 0x26A JUMPI DUP1 PUSH1 0x1F LT PUSH2 0x241 JUMPI PUSH2 0x100 DUP1 DUP4 SLOAD DIV MUL DUP4 MSTORE SWAP2 PUSH1 0x20 ADD SWAP2 PUSH2 0x26A JUMP JUMPDEST DUP3 ADD SWAP2 SWAP1 PUSH0 MSTORE PUSH1 0x20 PUSH0 KECCAK256 SWAP1 JUMPDEST DUP2 SLOAD DUP2 MSTORE SWAP1 PUSH1 0x1 ADD SWAP1 PUSH1 0x20 ADD DUP1 DUP4 GT PUSH2 0x24D JUMPI DUP3 SWAP1 SUB PUSH1 0x1F AND DUP3 ADD SWAP2 JUMPDEST POP POP POP POP POP SWAP1 POP SWAP1 JUMP JUMPDEST PUSH0 CALLER PUSH2 0x281 DUP2 DUP6 DUP6 PUSH2 0x2E4 JUMP JUMPDEST PUSH1 0x1 SWAP2 POP POP JUMPDEST SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH0 CALLER PUSH2 0x29A DUP6 DUP3 DUP6 PUSH2 0x2F6 JUMP JUMPDEST PUSH2 0x2A5 DUP6 DUP6 DUP6 PUSH2 0x377 JUMP JUMPDEST POP PUSH1 0x1 SWAP5 SWAP4 POP POP POP POP JUMP JUMPDEST PUSH2 0x2BA DUP3 DUP3 PUSH2 0x3D4 JUMP JUMPDEST POP POP JUMP JUMPDEST PUSH1 0x60 PUSH1 0x4 DUP1 SLOAD PUSH2 0x1F3 SWAP1 PUSH2 0x737 JUMP JUMPDEST PUSH2 0x2BA DUP3 DUP3 PUSH2 0x408 JUMP JUMPDEST PUSH0 CALLER PUSH2 0x281 DUP2 DUP6 DUP6 PUSH2 0x377 JUMP JUMPDEST PUSH2 0x2F1 DUP4 DUP4 DUP4 PUSH1 0x1 PUSH2 0x43C JUMP JUMPDEST POP POP POP JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP4 DUP2 AND PUSH0 SWAP1 DUP2 MSTORE PUSH1 0x1 PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x40 DUP1 DUP4 KECCAK256 SWAP4 DUP7 AND DUP4 MSTORE SWAP3 SWAP1 MSTORE KECCAK256 SLOAD PUSH0 NOT DUP2 LT ISZERO PUSH2 0x371 JUMPI DUP2 DUP2 LT ISZERO PUSH2 0x363 JUMPI PUSH1 0x40 MLOAD PUSH4 0x7DC7A0D9 PUSH1 0xE1 SHL DUP2 MSTORE PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP5 AND PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x24 DUP2 ADD DUP3 SWAP1 MSTORE PUSH1 0x44 DUP2 ADD DUP4 SWAP1 MSTORE PUSH1 0x64 ADD JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH2 0x371 DUP5 DUP5 DUP5 DUP5 SUB PUSH0 PUSH2 0x43C JUMP JUMPDEST POP POP POP POP JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP4 AND PUSH2 0x3A0 JUMPI PUSH1 0x40 MLOAD PUSH4 0x4B637E8F PUSH1 0xE1 SHL DUP2 MSTORE PUSH0 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x24 ADD PUSH2 0x35A JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP3 AND PUSH2 0x3C9 JUMPI PUSH1 0x40 MLOAD PUSH4 0xEC442F05 PUSH1 0xE0 SHL DUP2 MSTORE PUSH0 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x24 ADD PUSH2 0x35A JUMP JUMPDEST PUSH2 0x2F1 DUP4 DUP4 DUP4 PUSH2 0x50E JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP3 AND PUSH2 0x3FD JUMPI PUSH1 0x40 MLOAD PUSH4 0xEC442F05 PUSH1 0xE0 SHL DUP2 MSTORE PUSH0 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x24 ADD PUSH2 0x35A JUMP JUMPDEST PUSH2 0x2BA PUSH0 DUP4 DUP4 PUSH2 0x50E JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP3 AND PUSH2 0x431 JUMPI PUSH1 0x40 MLOAD PUSH4 0x4B637E8F PUSH1 0xE1 SHL DUP2 MSTORE PUSH0 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x24 ADD PUSH2 0x35A JUMP JUMPDEST PUSH2 0x2BA DUP3 PUSH0 DUP4 PUSH2 0x50E JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP5 AND PUSH2 0x465 JUMPI PUSH1 0x40 MLOAD PUSH4 0xE602DF05 PUSH1 0xE0 SHL DUP2 MSTORE PUSH0 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x24 ADD PUSH2 0x35A JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP4 AND PUSH2 0x48E JUMPI PUSH1 0x40 MLOAD PUSH4 0x4A1406B1 PUSH1 0xE1 SHL DUP2 MSTORE PUSH0 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x24 ADD PUSH2 0x35A JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP1 DUP6 AND PUSH0 SWAP1 DUP2 MSTORE PUSH1 0x1 PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x40 DUP1 DUP4 KECCAK256 SWAP4 DUP8 AND DUP4 MSTORE SWAP3 SWAP1 MSTORE KECCAK256 DUP3 SWAP1 SSTORE DUP1 ISZERO PUSH2 0x371 JUMPI DUP3 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP5 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH32 0x8C5BE1E5EBEC7D5BD14F71427D1E84F3DD0314C0F7B2291E5B200AC8C7C3B925 DUP5 PUSH1 0x40 MLOAD PUSH2 0x500 SWAP2 DUP2 MSTORE PUSH1 0x20 ADD SWAP1 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 LOG3 POP POP POP POP JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP4 AND PUSH2 0x538 JUMPI DUP1 PUSH1 0x2 PUSH0 DUP3 DUP3 SLOAD PUSH2 0x52D SWAP2 SWAP1 PUSH2 0x76F JUMP JUMPDEST SWAP1 SWAP2 SSTORE POP PUSH2 0x5A8 SWAP1 POP JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP4 AND PUSH0 SWAP1 DUP2 MSTORE PUSH1 0x20 DUP2 SWAP1 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD DUP2 DUP2 LT ISZERO PUSH2 0x58A JUMPI PUSH1 0x40 MLOAD PUSH4 0x391434E3 PUSH1 0xE2 SHL DUP2 MSTORE PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP6 AND PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x24 DUP2 ADD DUP3 SWAP1 MSTORE PUSH1 0x44 DUP2 ADD DUP4 SWAP1 MSTORE PUSH1 0x64 ADD PUSH2 0x35A JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP5 AND PUSH0 SWAP1 DUP2 MSTORE PUSH1 0x20 DUP2 SWAP1 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SWAP1 DUP3 SWAP1 SUB SWAP1 SSTORE JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP3 AND PUSH2 0x5C4 JUMPI PUSH1 0x2 DUP1 SLOAD DUP3 SWAP1 SUB SWAP1 SSTORE PUSH2 0x5E2 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP3 AND PUSH0 SWAP1 DUP2 MSTORE PUSH1 0x20 DUP2 SWAP1 MSTORE PUSH1 0x40 SWAP1 KECCAK256 DUP1 SLOAD DUP3 ADD SWAP1 SSTORE JUMPDEST DUP2 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP4 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH32 0xDDF252AD1BE2C89B69C2B068FC378DAA952BA7F163C4A11628F55A4DF523B3EF DUP4 PUSH1 0x40 MLOAD PUSH2 0x627 SWAP2 DUP2 MSTORE PUSH1 0x20 ADD SWAP1 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 LOG3 POP POP POP JUMP JUMPDEST PUSH1 0x20 DUP2 MSTORE PUSH0 DUP3 MLOAD DUP1 PUSH1 0x20 DUP5 ADD MSTORE DUP1 PUSH1 0x20 DUP6 ADD PUSH1 0x40 DUP6 ADD MCOPY PUSH0 PUSH1 0x40 DUP3 DUP6 ADD ADD MSTORE PUSH1 0x40 PUSH1 0x1F NOT PUSH1 0x1F DUP4 ADD AND DUP5 ADD ADD SWAP2 POP POP SWAP3 SWAP2 POP POP JUMP JUMPDEST DUP1 CALLDATALOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 AND DUP2 EQ PUSH2 0x67F JUMPI PUSH0 PUSH0 REVERT JUMPDEST SWAP2 SWAP1 POP JUMP JUMPDEST PUSH0 PUSH0 PUSH1 0x40 DUP4 DUP6 SUB SLT ISZERO PUSH2 0x695 JUMPI PUSH0 PUSH0 REVERT JUMPDEST PUSH2 0x69E DUP4 PUSH2 0x669 JUMP JUMPDEST SWAP5 PUSH1 0x20 SWAP4 SWAP1 SWAP4 ADD CALLDATALOAD SWAP4 POP POP POP JUMP JUMPDEST PUSH0 PUSH0 PUSH0 PUSH1 0x60 DUP5 DUP7 SUB SLT ISZERO PUSH2 0x6BE JUMPI PUSH0 PUSH0 REVERT JUMPDEST PUSH2 0x6C7 DUP5 PUSH2 0x669 JUMP JUMPDEST SWAP3 POP PUSH2 0x6D5 PUSH1 0x20 DUP6 ADD PUSH2 0x669 JUMP JUMPDEST SWAP3 SWAP6 SWAP3 SWAP5 POP POP POP PUSH1 0x40 SWAP2 SWAP1 SWAP2 ADD CALLDATALOAD SWAP1 JUMP JUMPDEST PUSH0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x6F6 JUMPI PUSH0 PUSH0 REVERT JUMPDEST PUSH2 0x6FF DUP3 PUSH2 0x669 JUMP JUMPDEST SWAP4 SWAP3 POP POP POP JUMP JUMPDEST PUSH0 PUSH0 PUSH1 0x40 DUP4 DUP6 SUB SLT ISZERO PUSH2 0x717 JUMPI PUSH0 PUSH0 REVERT JUMPDEST PUSH2 0x720 DUP4 PUSH2 0x669 JUMP JUMPDEST SWAP2 POP PUSH2 0x72E PUSH1 0x20 DUP5 ADD PUSH2 0x669 JUMP JUMPDEST SWAP1 POP SWAP3 POP SWAP3 SWAP1 POP JUMP JUMPDEST PUSH1 0x1 DUP2 DUP2 SHR SWAP1 DUP3 AND DUP1 PUSH2 0x74B JUMPI PUSH1 0x7F DUP3 AND SWAP2 POP JUMPDEST PUSH1 0x20 DUP3 LT DUP2 SUB PUSH2 0x769 JUMPI PUSH4 0x4E487B71 PUSH1 0xE0 SHL PUSH0 MSTORE PUSH1 0x22 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH0 REVERT JUMPDEST POP SWAP2 SWAP1 POP JUMP JUMPDEST DUP1 DUP3 ADD DUP1 DUP3 GT ISZERO PUSH2 0x287 JUMPI PUSH4 0x4E487B71 PUSH1 0xE0 SHL PUSH0 MSTORE PUSH1 0x11 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH0 REVERT INVALID LOG2 PUSH5 0x6970667358 0x22 SLT KECCAK256 0x2A 0xE8 0xDD SWAP11 0xB4 RETURNCONTRACT 0x7A 0xBA 0xA6 SIGNEXTEND 0xB9 0xC3 0xC6 0xBC 0xCC PUSH9 0x9154F1F33065A301D7 CALLDATACOPY SWAP8 0x4C 0xEF TLOAD 0x28 EXTCALL PUSH5 0x736F6C6343 STOP ADDMOD 0x1E STOP CALLER ","sourceMap":"133:600:9:-:0;;;207:208;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;329:5;336:7;1648:5:32;:13;329:5:9;1648::32;:13;:::i;:::-;-1:-1:-1;1671:7:32;:17;1681:7;1671;:17;:::i;:::-;-1:-1:-1;;;351:21:9::1;::::0;::::1;;::::0;378:32:::1;384:10;396:13:::0;378:5:::1;:32::i;:::-;207:208:::0;;;;133:600;;7362:208:32;-1:-1:-1;;;;;7432:21:32;;7428:91;;7476:32;;-1:-1:-1;;;7476:32:32;;7505:1;7476:32;;;4303:51:87;4276:18;;7476:32:32;;;;;;;;7428:91;7528:35;7544:1;7548:7;7557:5;7528:7;:35::i;:::-;7362:208;;:::o;5912:1107::-;-1:-1:-1;;;;;6001:18:32;;5997:540;;6153:5;6137:12;;:21;;;;;;;:::i;:::-;;;;-1:-1:-1;5997:540:32;;-1:-1:-1;5997:540:32;;-1:-1:-1;;;;;6211:15:32;;6189:19;6211:15;;;;;;;;;;;6244:19;;;6240:115;;;6290:50;;-1:-1:-1;;;6290:50:32;;-1:-1:-1;;;;;4812:32:87;;6290:50:32;;;4794:51:87;4861:18;;;4854:34;;;4904:18;;;4897:34;;;4767:18;;6290:50:32;4592:345:87;6240:115:32;-1:-1:-1;;;;;6475:15:32;;:9;:15;;;;;;;;;;6493:19;;;;6475:37;;5997:540;-1:-1:-1;;;;;6551:16:32;;6547:425;;6714:12;:21;;;;;;;6547:425;;;-1:-1:-1;;;;;6925:13:32;;:9;:13;;;;;;;;;;:22;;;;;;6547:425;7002:2;-1:-1:-1;;;;;6987:25:32;6996:4;-1:-1:-1;;;;;6987:25:32;;7006:5;6987:25;;;;5088::87;;5076:2;5061:18;;4942:177;6987:25:32;;;;;;;;5912:1107;;;:::o;14:127:87:-;75:10;70:3;66:20;63:1;56:31;106:4;103:1;96:15;130:4;127:1;120:15;146:723;200:5;253:3;246:4;238:6;234:17;230:27;220:55;;271:1;268;261:12;220:55;298:13;;-1:-1:-1;;;;;323:30:87;;320:56;;;356:18;;:::i;:::-;405:2;399:9;497:2;459:17;;-1:-1:-1;;455:31:87;;;488:2;451:40;447:54;435:67;;-1:-1:-1;;;;;517:34:87;;553:22;;;514:62;511:88;;;579:18;;:::i;:::-;615:2;608:22;639;;;680:19;;;701:4;676:30;673:39;-1:-1:-1;670:59:87;;;725:1;722;715:12;670:59;782:6;775:4;767:6;763:17;756:4;748:6;744:17;738:51;837:1;809:19;;;830:4;805:30;798:41;;;;813:6;146:723;-1:-1:-1;;;146:723:87:o;874:769::-;989:6;997;1005;1013;1066:3;1054:9;1045:7;1041:23;1037:33;1034:53;;;1083:1;1080;1073:12;1034:53;1110:16;;-1:-1:-1;;;;;1138:30:87;;1135:50;;;1181:1;1178;1171:12;1135:50;1204:61;1257:7;1248:6;1237:9;1233:22;1204:61;:::i;:::-;1311:2;1296:18;;1290:25;1194:71;;-1:-1:-1;1290:25:87;-1:-1:-1;;;;;;1327:32:87;;1324:52;;;1372:1;1369;1362:12;1324:52;1395:63;1450:7;1439:8;1428:9;1424:24;1395:63;:::i;:::-;1385:73;;;1498:2;1487:9;1483:18;1477:25;1467:35;;1545:2;1534:9;1530:18;1524:25;1589:4;1582:5;1578:16;1571:5;1568:27;1558:55;;1609:1;1606;1599:12;1558:55;874:769;;;;-1:-1:-1;874:769:87;;-1:-1:-1;;874:769:87:o;1648:380::-;1727:1;1723:12;;;;1770;;;1791:61;;1845:4;1837:6;1833:17;1823:27;;1791:61;1898:2;1890:6;1887:14;1867:18;1864:38;1861:161;;1944:10;1939:3;1935:20;1932:1;1925:31;1979:4;1976:1;1969:15;2007:4;2004:1;1997:15;1861:161;;1648:380;;;:::o;2159:518::-;2261:2;2256:3;2253:11;2250:421;;;2297:5;2294:1;2287:16;2341:4;2338:1;2328:18;2411:2;2399:10;2395:19;2392:1;2388:27;2382:4;2378:38;2447:4;2435:10;2432:20;2429:47;;;-1:-1:-1;2470:4:87;2429:47;2525:2;2520:3;2516:12;2513:1;2509:20;2503:4;2499:31;2489:41;;2580:81;2598:2;2591:5;2588:13;2580:81;;;2657:1;2643:16;;2624:1;2613:13;2580:81;;;2584:3;;2250:421;2159:518;;;:::o;2853:1299::-;2973:10;;-1:-1:-1;;;;;2995:30:87;;2992:56;;;3028:18;;:::i;:::-;3057:97;3147:6;3107:38;3139:4;3133:11;3107:38;:::i;:::-;3101:4;3057:97;:::i;:::-;3203:4;3234:2;3223:14;;3251:1;3246:649;;;;3939:1;3956:6;3953:89;;;-1:-1:-1;4008:19:87;;;4002:26;3953:89;-1:-1:-1;;2810:1:87;2806:11;;;2802:24;2798:29;2788:40;2834:1;2830:11;;;2785:57;4055:81;;3216:930;;3246:649;2106:1;2099:14;;;2143:4;2130:18;;-1:-1:-1;;3282:20:87;;;3400:222;3414:7;3411:1;3408:14;3400:222;;;3496:19;;;3490:26;3475:42;;3603:4;3588:20;;;;3556:1;3544:14;;;;3430:12;3400:222;;;3404:3;3650:6;3641:7;3638:19;3635:201;;;3711:19;;;3705:26;-1:-1:-1;;3794:1:87;3790:14;;;3806:3;3786:24;3782:37;3778:42;3763:58;3748:74;;3635:201;-1:-1:-1;;;;3882:1:87;3866:14;;;3862:22;3849:36;;-1:-1:-1;2853:1299:87:o;4365:222::-;4430:9;;;4451:10;;;4448:133;;;4503:10;4498:3;4494:20;4491:1;4484:31;4538:4;4535:1;4528:15;4566:4;4563:1;4556:15;4448:133;4365:222;;;;:::o;4942:177::-;133:600:9;;;;;;;;;;;;"},"deployedBytecode":{"functionDebugData":{"@_approve_8492":{"entryPoint":740,"id":8492,"parameterSlots":3,"returnSlots":0},"@_approve_8552":{"entryPoint":1084,"id":8552,"parameterSlots":4,"returnSlots":0},"@_burn_8474":{"entryPoint":1032,"id":8474,"parameterSlots":2,"returnSlots":0},"@_mint_8441":{"entryPoint":980,"id":8441,"parameterSlots":2,"returnSlots":0},"@_msgSender_10268":{"entryPoint":null,"id":10268,"parameterSlots":0,"returnSlots":1},"@_spendAllowance_8600":{"entryPoint":758,"id":8600,"parameterSlots":3,"returnSlots":0},"@_transfer_8331":{"entryPoint":887,"id":8331,"parameterSlots":3,"returnSlots":0},"@_update_8408":{"entryPoint":1294,"id":8408,"parameterSlots":3,"returnSlots":0},"@allowance_8228":{"entryPoint":null,"id":8228,"parameterSlots":2,"returnSlots":1},"@approve_8252":{"entryPoint":628,"id":8252,"parameterSlots":2,"returnSlots":1},"@balanceOf_8187":{"entryPoint":null,"id":8187,"parameterSlots":1,"returnSlots":1},"@burn_2708":{"entryPoint":717,"id":2708,"parameterSlots":2,"returnSlots":0},"@decimals_2682":{"entryPoint":null,"id":2682,"parameterSlots":0,"returnSlots":1},"@mint_2695":{"entryPoint":688,"id":2695,"parameterSlots":2,"returnSlots":0},"@name_8147":{"entryPoint":484,"id":8147,"parameterSlots":0,"returnSlots":1},"@symbol_8156":{"entryPoint":702,"id":8156,"parameterSlots":0,"returnSlots":1},"@totalSupply_8174":{"entryPoint":null,"id":8174,"parameterSlots":0,"returnSlots":1},"@transferFrom_8284":{"entryPoint":653,"id":8284,"parameterSlots":3,"returnSlots":1},"@transfer_8211":{"entryPoint":727,"id":8211,"parameterSlots":2,"returnSlots":1},"abi_decode_address":{"entryPoint":1641,"id":null,"parameterSlots":1,"returnSlots":1},"abi_decode_tuple_t_address":{"entryPoint":1766,"id":null,"parameterSlots":2,"returnSlots":1},"abi_decode_tuple_t_addresst_address":{"entryPoint":1798,"id":null,"parameterSlots":2,"returnSlots":2},"abi_decode_tuple_t_addresst_addresst_uint256":{"entryPoint":1708,"id":null,"parameterSlots":2,"returnSlots":3},"abi_decode_tuple_t_addresst_uint256":{"entryPoint":1668,"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_address_t_uint256_t_uint256__to_t_address_t_uint256_t_uint256__fromStack_reversed":{"entryPoint":null,"id":null,"parameterSlots":4,"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":1588,"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_uint8__to_t_uint8__fromStack_reversed":{"entryPoint":null,"id":null,"parameterSlots":2,"returnSlots":1},"checked_add_t_uint256":{"entryPoint":1903,"id":null,"parameterSlots":2,"returnSlots":1},"extract_byte_array_length":{"entryPoint":1847,"id":null,"parameterSlots":1,"returnSlots":1}},"generatedSources":[{"ast":{"nativeSrc":"0:3485:87","nodeType":"YulBlock","src":"0:3485:87","statements":[{"nativeSrc":"6:3:87","nodeType":"YulBlock","src":"6:3:87","statements":[]},{"body":{"nativeSrc":"135:297:87","nodeType":"YulBlock","src":"135:297:87","statements":[{"expression":{"arguments":[{"name":"headStart","nativeSrc":"152:9:87","nodeType":"YulIdentifier","src":"152:9:87"},{"kind":"number","nativeSrc":"163:2:87","nodeType":"YulLiteral","src":"163:2:87","type":"","value":"32"}],"functionName":{"name":"mstore","nativeSrc":"145:6:87","nodeType":"YulIdentifier","src":"145:6:87"},"nativeSrc":"145:21:87","nodeType":"YulFunctionCall","src":"145:21:87"},"nativeSrc":"145:21:87","nodeType":"YulExpressionStatement","src":"145:21:87"},{"nativeSrc":"175:27:87","nodeType":"YulVariableDeclaration","src":"175:27:87","value":{"arguments":[{"name":"value0","nativeSrc":"195:6:87","nodeType":"YulIdentifier","src":"195:6:87"}],"functionName":{"name":"mload","nativeSrc":"189:5:87","nodeType":"YulIdentifier","src":"189:5:87"},"nativeSrc":"189:13:87","nodeType":"YulFunctionCall","src":"189:13:87"},"variables":[{"name":"length","nativeSrc":"179:6:87","nodeType":"YulTypedName","src":"179:6:87","type":""}]},{"expression":{"arguments":[{"arguments":[{"name":"headStart","nativeSrc":"222:9:87","nodeType":"YulIdentifier","src":"222:9:87"},{"kind":"number","nativeSrc":"233:2:87","nodeType":"YulLiteral","src":"233:2:87","type":"","value":"32"}],"functionName":{"name":"add","nativeSrc":"218:3:87","nodeType":"YulIdentifier","src":"218:3:87"},"nativeSrc":"218:18:87","nodeType":"YulFunctionCall","src":"218:18:87"},{"name":"length","nativeSrc":"238:6:87","nodeType":"YulIdentifier","src":"238:6:87"}],"functionName":{"name":"mstore","nativeSrc":"211:6:87","nodeType":"YulIdentifier","src":"211:6:87"},"nativeSrc":"211:34:87","nodeType":"YulFunctionCall","src":"211:34:87"},"nativeSrc":"211:34:87","nodeType":"YulExpressionStatement","src":"211:34:87"},{"expression":{"arguments":[{"arguments":[{"name":"headStart","nativeSrc":"264:9:87","nodeType":"YulIdentifier","src":"264:9:87"},{"kind":"number","nativeSrc":"275:2:87","nodeType":"YulLiteral","src":"275:2:87","type":"","value":"64"}],"functionName":{"name":"add","nativeSrc":"260:3:87","nodeType":"YulIdentifier","src":"260:3:87"},"nativeSrc":"260:18:87","nodeType":"YulFunctionCall","src":"260:18:87"},{"arguments":[{"name":"value0","nativeSrc":"284:6:87","nodeType":"YulIdentifier","src":"284:6:87"},{"kind":"number","nativeSrc":"292:2:87","nodeType":"YulLiteral","src":"292:2:87","type":"","value":"32"}],"functionName":{"name":"add","nativeSrc":"280:3:87","nodeType":"YulIdentifier","src":"280:3:87"},"nativeSrc":"280:15:87","nodeType":"YulFunctionCall","src":"280:15:87"},{"name":"length","nativeSrc":"297:6:87","nodeType":"YulIdentifier","src":"297:6:87"}],"functionName":{"name":"mcopy","nativeSrc":"254:5:87","nodeType":"YulIdentifier","src":"254:5:87"},"nativeSrc":"254:50:87","nodeType":"YulFunctionCall","src":"254:50:87"},"nativeSrc":"254:50:87","nodeType":"YulExpressionStatement","src":"254:50:87"},{"expression":{"arguments":[{"arguments":[{"arguments":[{"name":"headStart","nativeSrc":"328:9:87","nodeType":"YulIdentifier","src":"328:9:87"},{"name":"length","nativeSrc":"339:6:87","nodeType":"YulIdentifier","src":"339:6:87"}],"functionName":{"name":"add","nativeSrc":"324:3:87","nodeType":"YulIdentifier","src":"324:3:87"},"nativeSrc":"324:22:87","nodeType":"YulFunctionCall","src":"324:22:87"},{"kind":"number","nativeSrc":"348:2:87","nodeType":"YulLiteral","src":"348:2:87","type":"","value":"64"}],"functionName":{"name":"add","nativeSrc":"320:3:87","nodeType":"YulIdentifier","src":"320:3:87"},"nativeSrc":"320:31:87","nodeType":"YulFunctionCall","src":"320:31:87"},{"kind":"number","nativeSrc":"353:1:87","nodeType":"YulLiteral","src":"353:1:87","type":"","value":"0"}],"functionName":{"name":"mstore","nativeSrc":"313:6:87","nodeType":"YulIdentifier","src":"313:6:87"},"nativeSrc":"313:42:87","nodeType":"YulFunctionCall","src":"313:42:87"},"nativeSrc":"313:42:87","nodeType":"YulExpressionStatement","src":"313:42:87"},{"nativeSrc":"364:62:87","nodeType":"YulAssignment","src":"364:62:87","value":{"arguments":[{"arguments":[{"name":"headStart","nativeSrc":"380:9:87","nodeType":"YulIdentifier","src":"380:9:87"},{"arguments":[{"arguments":[{"name":"length","nativeSrc":"399:6:87","nodeType":"YulIdentifier","src":"399:6:87"},{"kind":"number","nativeSrc":"407:2:87","nodeType":"YulLiteral","src":"407:2:87","type":"","value":"31"}],"functionName":{"name":"add","nativeSrc":"395:3:87","nodeType":"YulIdentifier","src":"395:3:87"},"nativeSrc":"395:15:87","nodeType":"YulFunctionCall","src":"395:15:87"},{"arguments":[{"kind":"number","nativeSrc":"416:2:87","nodeType":"YulLiteral","src":"416:2:87","type":"","value":"31"}],"functionName":{"name":"not","nativeSrc":"412:3:87","nodeType":"YulIdentifier","src":"412:3:87"},"nativeSrc":"412:7:87","nodeType":"YulFunctionCall","src":"412:7:87"}],"functionName":{"name":"and","nativeSrc":"391:3:87","nodeType":"YulIdentifier","src":"391:3:87"},"nativeSrc":"391:29:87","nodeType":"YulFunctionCall","src":"391:29:87"}],"functionName":{"name":"add","nativeSrc":"376:3:87","nodeType":"YulIdentifier","src":"376:3:87"},"nativeSrc":"376:45:87","nodeType":"YulFunctionCall","src":"376:45:87"},{"kind":"number","nativeSrc":"423:2:87","nodeType":"YulLiteral","src":"423:2:87","type":"","value":"64"}],"functionName":{"name":"add","nativeSrc":"372:3:87","nodeType":"YulIdentifier","src":"372:3:87"},"nativeSrc":"372:54:87","nodeType":"YulFunctionCall","src":"372:54:87"},"variableNames":[{"name":"tail","nativeSrc":"364:4:87","nodeType":"YulIdentifier","src":"364:4:87"}]}]},"name":"abi_encode_tuple_t_string_memory_ptr__to_t_string_memory_ptr__fromStack_reversed","nativeSrc":"14:418:87","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nativeSrc":"104:9:87","nodeType":"YulTypedName","src":"104:9:87","type":""},{"name":"value0","nativeSrc":"115:6:87","nodeType":"YulTypedName","src":"115:6:87","type":""}],"returnVariables":[{"name":"tail","nativeSrc":"126:4:87","nodeType":"YulTypedName","src":"126:4:87","type":""}],"src":"14:418:87"},{"body":{"nativeSrc":"486:124:87","nodeType":"YulBlock","src":"486:124:87","statements":[{"nativeSrc":"496:29:87","nodeType":"YulAssignment","src":"496:29:87","value":{"arguments":[{"name":"offset","nativeSrc":"518:6:87","nodeType":"YulIdentifier","src":"518:6:87"}],"functionName":{"name":"calldataload","nativeSrc":"505:12:87","nodeType":"YulIdentifier","src":"505:12:87"},"nativeSrc":"505:20:87","nodeType":"YulFunctionCall","src":"505:20:87"},"variableNames":[{"name":"value","nativeSrc":"496:5:87","nodeType":"YulIdentifier","src":"496:5:87"}]},{"body":{"nativeSrc":"588:16:87","nodeType":"YulBlock","src":"588:16:87","statements":[{"expression":{"arguments":[{"kind":"number","nativeSrc":"597:1:87","nodeType":"YulLiteral","src":"597:1:87","type":"","value":"0"},{"kind":"number","nativeSrc":"600:1:87","nodeType":"YulLiteral","src":"600:1:87","type":"","value":"0"}],"functionName":{"name":"revert","nativeSrc":"590:6:87","nodeType":"YulIdentifier","src":"590:6:87"},"nativeSrc":"590:12:87","nodeType":"YulFunctionCall","src":"590:12:87"},"nativeSrc":"590:12:87","nodeType":"YulExpressionStatement","src":"590:12:87"}]},"condition":{"arguments":[{"arguments":[{"name":"value","nativeSrc":"547:5:87","nodeType":"YulIdentifier","src":"547:5:87"},{"arguments":[{"name":"value","nativeSrc":"558:5:87","nodeType":"YulIdentifier","src":"558:5:87"},{"arguments":[{"arguments":[{"kind":"number","nativeSrc":"573:3:87","nodeType":"YulLiteral","src":"573:3:87","type":"","value":"160"},{"kind":"number","nativeSrc":"578:1:87","nodeType":"YulLiteral","src":"578:1:87","type":"","value":"1"}],"functionName":{"name":"shl","nativeSrc":"569:3:87","nodeType":"YulIdentifier","src":"569:3:87"},"nativeSrc":"569:11:87","nodeType":"YulFunctionCall","src":"569:11:87"},{"kind":"number","nativeSrc":"582:1:87","nodeType":"YulLiteral","src":"582:1:87","type":"","value":"1"}],"functionName":{"name":"sub","nativeSrc":"565:3:87","nodeType":"YulIdentifier","src":"565:3:87"},"nativeSrc":"565:19:87","nodeType":"YulFunctionCall","src":"565:19:87"}],"functionName":{"name":"and","nativeSrc":"554:3:87","nodeType":"YulIdentifier","src":"554:3:87"},"nativeSrc":"554:31:87","nodeType":"YulFunctionCall","src":"554:31:87"}],"functionName":{"name":"eq","nativeSrc":"544:2:87","nodeType":"YulIdentifier","src":"544:2:87"},"nativeSrc":"544:42:87","nodeType":"YulFunctionCall","src":"544:42:87"}],"functionName":{"name":"iszero","nativeSrc":"537:6:87","nodeType":"YulIdentifier","src":"537:6:87"},"nativeSrc":"537:50:87","nodeType":"YulFunctionCall","src":"537:50:87"},"nativeSrc":"534:70:87","nodeType":"YulIf","src":"534:70:87"}]},"name":"abi_decode_address","nativeSrc":"437:173:87","nodeType":"YulFunctionDefinition","parameters":[{"name":"offset","nativeSrc":"465:6:87","nodeType":"YulTypedName","src":"465:6:87","type":""}],"returnVariables":[{"name":"value","nativeSrc":"476:5:87","nodeType":"YulTypedName","src":"476:5:87","type":""}],"src":"437:173:87"},{"body":{"nativeSrc":"702:213:87","nodeType":"YulBlock","src":"702:213:87","statements":[{"body":{"nativeSrc":"748:16:87","nodeType":"YulBlock","src":"748:16:87","statements":[{"expression":{"arguments":[{"kind":"number","nativeSrc":"757:1:87","nodeType":"YulLiteral","src":"757:1:87","type":"","value":"0"},{"kind":"number","nativeSrc":"760:1:87","nodeType":"YulLiteral","src":"760:1:87","type":"","value":"0"}],"functionName":{"name":"revert","nativeSrc":"750:6:87","nodeType":"YulIdentifier","src":"750:6:87"},"nativeSrc":"750:12:87","nodeType":"YulFunctionCall","src":"750:12:87"},"nativeSrc":"750:12:87","nodeType":"YulExpressionStatement","src":"750:12:87"}]},"condition":{"arguments":[{"arguments":[{"name":"dataEnd","nativeSrc":"723:7:87","nodeType":"YulIdentifier","src":"723:7:87"},{"name":"headStart","nativeSrc":"732:9:87","nodeType":"YulIdentifier","src":"732:9:87"}],"functionName":{"name":"sub","nativeSrc":"719:3:87","nodeType":"YulIdentifier","src":"719:3:87"},"nativeSrc":"719:23:87","nodeType":"YulFunctionCall","src":"719:23:87"},{"kind":"number","nativeSrc":"744:2:87","nodeType":"YulLiteral","src":"744:2:87","type":"","value":"64"}],"functionName":{"name":"slt","nativeSrc":"715:3:87","nodeType":"YulIdentifier","src":"715:3:87"},"nativeSrc":"715:32:87","nodeType":"YulFunctionCall","src":"715:32:87"},"nativeSrc":"712:52:87","nodeType":"YulIf","src":"712:52:87"},{"nativeSrc":"773:39:87","nodeType":"YulAssignment","src":"773:39:87","value":{"arguments":[{"name":"headStart","nativeSrc":"802:9:87","nodeType":"YulIdentifier","src":"802:9:87"}],"functionName":{"name":"abi_decode_address","nativeSrc":"783:18:87","nodeType":"YulIdentifier","src":"783:18:87"},"nativeSrc":"783:29:87","nodeType":"YulFunctionCall","src":"783:29:87"},"variableNames":[{"name":"value0","nativeSrc":"773:6:87","nodeType":"YulIdentifier","src":"773:6:87"}]},{"nativeSrc":"821:14:87","nodeType":"YulVariableDeclaration","src":"821:14:87","value":{"kind":"number","nativeSrc":"834:1:87","nodeType":"YulLiteral","src":"834:1:87","type":"","value":"0"},"variables":[{"name":"value","nativeSrc":"825:5:87","nodeType":"YulTypedName","src":"825:5:87","type":""}]},{"nativeSrc":"844:41:87","nodeType":"YulAssignment","src":"844:41:87","value":{"arguments":[{"arguments":[{"name":"headStart","nativeSrc":"870:9:87","nodeType":"YulIdentifier","src":"870:9:87"},{"kind":"number","nativeSrc":"881:2:87","nodeType":"YulLiteral","src":"881:2:87","type":"","value":"32"}],"functionName":{"name":"add","nativeSrc":"866:3:87","nodeType":"YulIdentifier","src":"866:3:87"},"nativeSrc":"866:18:87","nodeType":"YulFunctionCall","src":"866:18:87"}],"functionName":{"name":"calldataload","nativeSrc":"853:12:87","nodeType":"YulIdentifier","src":"853:12:87"},"nativeSrc":"853:32:87","nodeType":"YulFunctionCall","src":"853:32:87"},"variableNames":[{"name":"value","nativeSrc":"844:5:87","nodeType":"YulIdentifier","src":"844:5:87"}]},{"nativeSrc":"894:15:87","nodeType":"YulAssignment","src":"894:15:87","value":{"name":"value","nativeSrc":"904:5:87","nodeType":"YulIdentifier","src":"904:5:87"},"variableNames":[{"name":"value1","nativeSrc":"894:6:87","nodeType":"YulIdentifier","src":"894:6:87"}]}]},"name":"abi_decode_tuple_t_addresst_uint256","nativeSrc":"615:300:87","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nativeSrc":"660:9:87","nodeType":"YulTypedName","src":"660:9:87","type":""},{"name":"dataEnd","nativeSrc":"671:7:87","nodeType":"YulTypedName","src":"671:7:87","type":""}],"returnVariables":[{"name":"value0","nativeSrc":"683:6:87","nodeType":"YulTypedName","src":"683:6:87","type":""},{"name":"value1","nativeSrc":"691:6:87","nodeType":"YulTypedName","src":"691:6:87","type":""}],"src":"615:300:87"},{"body":{"nativeSrc":"1015:92:87","nodeType":"YulBlock","src":"1015:92:87","statements":[{"nativeSrc":"1025:26:87","nodeType":"YulAssignment","src":"1025:26:87","value":{"arguments":[{"name":"headStart","nativeSrc":"1037:9:87","nodeType":"YulIdentifier","src":"1037:9:87"},{"kind":"number","nativeSrc":"1048:2:87","nodeType":"YulLiteral","src":"1048:2:87","type":"","value":"32"}],"functionName":{"name":"add","nativeSrc":"1033:3:87","nodeType":"YulIdentifier","src":"1033:3:87"},"nativeSrc":"1033:18:87","nodeType":"YulFunctionCall","src":"1033:18:87"},"variableNames":[{"name":"tail","nativeSrc":"1025:4:87","nodeType":"YulIdentifier","src":"1025:4:87"}]},{"expression":{"arguments":[{"name":"headStart","nativeSrc":"1067:9:87","nodeType":"YulIdentifier","src":"1067:9:87"},{"arguments":[{"arguments":[{"name":"value0","nativeSrc":"1092:6:87","nodeType":"YulIdentifier","src":"1092:6:87"}],"functionName":{"name":"iszero","nativeSrc":"1085:6:87","nodeType":"YulIdentifier","src":"1085:6:87"},"nativeSrc":"1085:14:87","nodeType":"YulFunctionCall","src":"1085:14:87"}],"functionName":{"name":"iszero","nativeSrc":"1078:6:87","nodeType":"YulIdentifier","src":"1078:6:87"},"nativeSrc":"1078:22:87","nodeType":"YulFunctionCall","src":"1078:22:87"}],"functionName":{"name":"mstore","nativeSrc":"1060:6:87","nodeType":"YulIdentifier","src":"1060:6:87"},"nativeSrc":"1060:41:87","nodeType":"YulFunctionCall","src":"1060:41:87"},"nativeSrc":"1060:41:87","nodeType":"YulExpressionStatement","src":"1060:41:87"}]},"name":"abi_encode_tuple_t_bool__to_t_bool__fromStack_reversed","nativeSrc":"920:187:87","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nativeSrc":"984:9:87","nodeType":"YulTypedName","src":"984:9:87","type":""},{"name":"value0","nativeSrc":"995:6:87","nodeType":"YulTypedName","src":"995:6:87","type":""}],"returnVariables":[{"name":"tail","nativeSrc":"1006:4:87","nodeType":"YulTypedName","src":"1006:4:87","type":""}],"src":"920:187:87"},{"body":{"nativeSrc":"1213:76:87","nodeType":"YulBlock","src":"1213:76:87","statements":[{"nativeSrc":"1223:26:87","nodeType":"YulAssignment","src":"1223:26:87","value":{"arguments":[{"name":"headStart","nativeSrc":"1235:9:87","nodeType":"YulIdentifier","src":"1235:9:87"},{"kind":"number","nativeSrc":"1246:2:87","nodeType":"YulLiteral","src":"1246:2:87","type":"","value":"32"}],"functionName":{"name":"add","nativeSrc":"1231:3:87","nodeType":"YulIdentifier","src":"1231:3:87"},"nativeSrc":"1231:18:87","nodeType":"YulFunctionCall","src":"1231:18:87"},"variableNames":[{"name":"tail","nativeSrc":"1223:4:87","nodeType":"YulIdentifier","src":"1223:4:87"}]},{"expression":{"arguments":[{"name":"headStart","nativeSrc":"1265:9:87","nodeType":"YulIdentifier","src":"1265:9:87"},{"name":"value0","nativeSrc":"1276:6:87","nodeType":"YulIdentifier","src":"1276:6:87"}],"functionName":{"name":"mstore","nativeSrc":"1258:6:87","nodeType":"YulIdentifier","src":"1258:6:87"},"nativeSrc":"1258:25:87","nodeType":"YulFunctionCall","src":"1258:25:87"},"nativeSrc":"1258:25:87","nodeType":"YulExpressionStatement","src":"1258:25:87"}]},"name":"abi_encode_tuple_t_uint256__to_t_uint256__fromStack_reversed","nativeSrc":"1112:177:87","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nativeSrc":"1182:9:87","nodeType":"YulTypedName","src":"1182:9:87","type":""},{"name":"value0","nativeSrc":"1193:6:87","nodeType":"YulTypedName","src":"1193:6:87","type":""}],"returnVariables":[{"name":"tail","nativeSrc":"1204:4:87","nodeType":"YulTypedName","src":"1204:4:87","type":""}],"src":"1112:177:87"},{"body":{"nativeSrc":"1398:270:87","nodeType":"YulBlock","src":"1398:270:87","statements":[{"body":{"nativeSrc":"1444:16:87","nodeType":"YulBlock","src":"1444:16:87","statements":[{"expression":{"arguments":[{"kind":"number","nativeSrc":"1453:1:87","nodeType":"YulLiteral","src":"1453:1:87","type":"","value":"0"},{"kind":"number","nativeSrc":"1456:1:87","nodeType":"YulLiteral","src":"1456:1:87","type":"","value":"0"}],"functionName":{"name":"revert","nativeSrc":"1446:6:87","nodeType":"YulIdentifier","src":"1446:6:87"},"nativeSrc":"1446:12:87","nodeType":"YulFunctionCall","src":"1446:12:87"},"nativeSrc":"1446:12:87","nodeType":"YulExpressionStatement","src":"1446:12:87"}]},"condition":{"arguments":[{"arguments":[{"name":"dataEnd","nativeSrc":"1419:7:87","nodeType":"YulIdentifier","src":"1419:7:87"},{"name":"headStart","nativeSrc":"1428:9:87","nodeType":"YulIdentifier","src":"1428:9:87"}],"functionName":{"name":"sub","nativeSrc":"1415:3:87","nodeType":"YulIdentifier","src":"1415:3:87"},"nativeSrc":"1415:23:87","nodeType":"YulFunctionCall","src":"1415:23:87"},{"kind":"number","nativeSrc":"1440:2:87","nodeType":"YulLiteral","src":"1440:2:87","type":"","value":"96"}],"functionName":{"name":"slt","nativeSrc":"1411:3:87","nodeType":"YulIdentifier","src":"1411:3:87"},"nativeSrc":"1411:32:87","nodeType":"YulFunctionCall","src":"1411:32:87"},"nativeSrc":"1408:52:87","nodeType":"YulIf","src":"1408:52:87"},{"nativeSrc":"1469:39:87","nodeType":"YulAssignment","src":"1469:39:87","value":{"arguments":[{"name":"headStart","nativeSrc":"1498:9:87","nodeType":"YulIdentifier","src":"1498:9:87"}],"functionName":{"name":"abi_decode_address","nativeSrc":"1479:18:87","nodeType":"YulIdentifier","src":"1479:18:87"},"nativeSrc":"1479:29:87","nodeType":"YulFunctionCall","src":"1479:29:87"},"variableNames":[{"name":"value0","nativeSrc":"1469:6:87","nodeType":"YulIdentifier","src":"1469:6:87"}]},{"nativeSrc":"1517:48:87","nodeType":"YulAssignment","src":"1517:48:87","value":{"arguments":[{"arguments":[{"name":"headStart","nativeSrc":"1550:9:87","nodeType":"YulIdentifier","src":"1550:9:87"},{"kind":"number","nativeSrc":"1561:2:87","nodeType":"YulLiteral","src":"1561:2:87","type":"","value":"32"}],"functionName":{"name":"add","nativeSrc":"1546:3:87","nodeType":"YulIdentifier","src":"1546:3:87"},"nativeSrc":"1546:18:87","nodeType":"YulFunctionCall","src":"1546:18:87"}],"functionName":{"name":"abi_decode_address","nativeSrc":"1527:18:87","nodeType":"YulIdentifier","src":"1527:18:87"},"nativeSrc":"1527:38:87","nodeType":"YulFunctionCall","src":"1527:38:87"},"variableNames":[{"name":"value1","nativeSrc":"1517:6:87","nodeType":"YulIdentifier","src":"1517:6:87"}]},{"nativeSrc":"1574:14:87","nodeType":"YulVariableDeclaration","src":"1574:14:87","value":{"kind":"number","nativeSrc":"1587:1:87","nodeType":"YulLiteral","src":"1587:1:87","type":"","value":"0"},"variables":[{"name":"value","nativeSrc":"1578:5:87","nodeType":"YulTypedName","src":"1578:5:87","type":""}]},{"nativeSrc":"1597:41:87","nodeType":"YulAssignment","src":"1597:41:87","value":{"arguments":[{"arguments":[{"name":"headStart","nativeSrc":"1623:9:87","nodeType":"YulIdentifier","src":"1623:9:87"},{"kind":"number","nativeSrc":"1634:2:87","nodeType":"YulLiteral","src":"1634:2:87","type":"","value":"64"}],"functionName":{"name":"add","nativeSrc":"1619:3:87","nodeType":"YulIdentifier","src":"1619:3:87"},"nativeSrc":"1619:18:87","nodeType":"YulFunctionCall","src":"1619:18:87"}],"functionName":{"name":"calldataload","nativeSrc":"1606:12:87","nodeType":"YulIdentifier","src":"1606:12:87"},"nativeSrc":"1606:32:87","nodeType":"YulFunctionCall","src":"1606:32:87"},"variableNames":[{"name":"value","nativeSrc":"1597:5:87","nodeType":"YulIdentifier","src":"1597:5:87"}]},{"nativeSrc":"1647:15:87","nodeType":"YulAssignment","src":"1647:15:87","value":{"name":"value","nativeSrc":"1657:5:87","nodeType":"YulIdentifier","src":"1657:5:87"},"variableNames":[{"name":"value2","nativeSrc":"1647:6:87","nodeType":"YulIdentifier","src":"1647:6:87"}]}]},"name":"abi_decode_tuple_t_addresst_addresst_uint256","nativeSrc":"1294:374:87","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nativeSrc":"1348:9:87","nodeType":"YulTypedName","src":"1348:9:87","type":""},{"name":"dataEnd","nativeSrc":"1359:7:87","nodeType":"YulTypedName","src":"1359:7:87","type":""}],"returnVariables":[{"name":"value0","nativeSrc":"1371:6:87","nodeType":"YulTypedName","src":"1371:6:87","type":""},{"name":"value1","nativeSrc":"1379:6:87","nodeType":"YulTypedName","src":"1379:6:87","type":""},{"name":"value2","nativeSrc":"1387:6:87","nodeType":"YulTypedName","src":"1387:6:87","type":""}],"src":"1294:374:87"},{"body":{"nativeSrc":"1770:87:87","nodeType":"YulBlock","src":"1770:87:87","statements":[{"nativeSrc":"1780:26:87","nodeType":"YulAssignment","src":"1780:26:87","value":{"arguments":[{"name":"headStart","nativeSrc":"1792:9:87","nodeType":"YulIdentifier","src":"1792:9:87"},{"kind":"number","nativeSrc":"1803:2:87","nodeType":"YulLiteral","src":"1803:2:87","type":"","value":"32"}],"functionName":{"name":"add","nativeSrc":"1788:3:87","nodeType":"YulIdentifier","src":"1788:3:87"},"nativeSrc":"1788:18:87","nodeType":"YulFunctionCall","src":"1788:18:87"},"variableNames":[{"name":"tail","nativeSrc":"1780:4:87","nodeType":"YulIdentifier","src":"1780:4:87"}]},{"expression":{"arguments":[{"name":"headStart","nativeSrc":"1822:9:87","nodeType":"YulIdentifier","src":"1822:9:87"},{"arguments":[{"name":"value0","nativeSrc":"1837:6:87","nodeType":"YulIdentifier","src":"1837:6:87"},{"kind":"number","nativeSrc":"1845:4:87","nodeType":"YulLiteral","src":"1845:4:87","type":"","value":"0xff"}],"functionName":{"name":"and","nativeSrc":"1833:3:87","nodeType":"YulIdentifier","src":"1833:3:87"},"nativeSrc":"1833:17:87","nodeType":"YulFunctionCall","src":"1833:17:87"}],"functionName":{"name":"mstore","nativeSrc":"1815:6:87","nodeType":"YulIdentifier","src":"1815:6:87"},"nativeSrc":"1815:36:87","nodeType":"YulFunctionCall","src":"1815:36:87"},"nativeSrc":"1815:36:87","nodeType":"YulExpressionStatement","src":"1815:36:87"}]},"name":"abi_encode_tuple_t_uint8__to_t_uint8__fromStack_reversed","nativeSrc":"1673:184:87","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nativeSrc":"1739:9:87","nodeType":"YulTypedName","src":"1739:9:87","type":""},{"name":"value0","nativeSrc":"1750:6:87","nodeType":"YulTypedName","src":"1750:6:87","type":""}],"returnVariables":[{"name":"tail","nativeSrc":"1761:4:87","nodeType":"YulTypedName","src":"1761:4:87","type":""}],"src":"1673:184:87"},{"body":{"nativeSrc":"1932:116:87","nodeType":"YulBlock","src":"1932:116:87","statements":[{"body":{"nativeSrc":"1978:16:87","nodeType":"YulBlock","src":"1978:16:87","statements":[{"expression":{"arguments":[{"kind":"number","nativeSrc":"1987:1:87","nodeType":"YulLiteral","src":"1987:1:87","type":"","value":"0"},{"kind":"number","nativeSrc":"1990:1:87","nodeType":"YulLiteral","src":"1990:1:87","type":"","value":"0"}],"functionName":{"name":"revert","nativeSrc":"1980:6:87","nodeType":"YulIdentifier","src":"1980:6:87"},"nativeSrc":"1980:12:87","nodeType":"YulFunctionCall","src":"1980:12:87"},"nativeSrc":"1980:12:87","nodeType":"YulExpressionStatement","src":"1980:12:87"}]},"condition":{"arguments":[{"arguments":[{"name":"dataEnd","nativeSrc":"1953:7:87","nodeType":"YulIdentifier","src":"1953:7:87"},{"name":"headStart","nativeSrc":"1962:9:87","nodeType":"YulIdentifier","src":"1962:9:87"}],"functionName":{"name":"sub","nativeSrc":"1949:3:87","nodeType":"YulIdentifier","src":"1949:3:87"},"nativeSrc":"1949:23:87","nodeType":"YulFunctionCall","src":"1949:23:87"},{"kind":"number","nativeSrc":"1974:2:87","nodeType":"YulLiteral","src":"1974:2:87","type":"","value":"32"}],"functionName":{"name":"slt","nativeSrc":"1945:3:87","nodeType":"YulIdentifier","src":"1945:3:87"},"nativeSrc":"1945:32:87","nodeType":"YulFunctionCall","src":"1945:32:87"},"nativeSrc":"1942:52:87","nodeType":"YulIf","src":"1942:52:87"},{"nativeSrc":"2003:39:87","nodeType":"YulAssignment","src":"2003:39:87","value":{"arguments":[{"name":"headStart","nativeSrc":"2032:9:87","nodeType":"YulIdentifier","src":"2032:9:87"}],"functionName":{"name":"abi_decode_address","nativeSrc":"2013:18:87","nodeType":"YulIdentifier","src":"2013:18:87"},"nativeSrc":"2013:29:87","nodeType":"YulFunctionCall","src":"2013:29:87"},"variableNames":[{"name":"value0","nativeSrc":"2003:6:87","nodeType":"YulIdentifier","src":"2003:6:87"}]}]},"name":"abi_decode_tuple_t_address","nativeSrc":"1862:186:87","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nativeSrc":"1898:9:87","nodeType":"YulTypedName","src":"1898:9:87","type":""},{"name":"dataEnd","nativeSrc":"1909:7:87","nodeType":"YulTypedName","src":"1909:7:87","type":""}],"returnVariables":[{"name":"value0","nativeSrc":"1921:6:87","nodeType":"YulTypedName","src":"1921:6:87","type":""}],"src":"1862:186:87"},{"body":{"nativeSrc":"2140:173:87","nodeType":"YulBlock","src":"2140:173:87","statements":[{"body":{"nativeSrc":"2186:16:87","nodeType":"YulBlock","src":"2186:16:87","statements":[{"expression":{"arguments":[{"kind":"number","nativeSrc":"2195:1:87","nodeType":"YulLiteral","src":"2195:1:87","type":"","value":"0"},{"kind":"number","nativeSrc":"2198:1:87","nodeType":"YulLiteral","src":"2198:1:87","type":"","value":"0"}],"functionName":{"name":"revert","nativeSrc":"2188:6:87","nodeType":"YulIdentifier","src":"2188:6:87"},"nativeSrc":"2188:12:87","nodeType":"YulFunctionCall","src":"2188:12:87"},"nativeSrc":"2188:12:87","nodeType":"YulExpressionStatement","src":"2188:12:87"}]},"condition":{"arguments":[{"arguments":[{"name":"dataEnd","nativeSrc":"2161:7:87","nodeType":"YulIdentifier","src":"2161:7:87"},{"name":"headStart","nativeSrc":"2170:9:87","nodeType":"YulIdentifier","src":"2170:9:87"}],"functionName":{"name":"sub","nativeSrc":"2157:3:87","nodeType":"YulIdentifier","src":"2157:3:87"},"nativeSrc":"2157:23:87","nodeType":"YulFunctionCall","src":"2157:23:87"},{"kind":"number","nativeSrc":"2182:2:87","nodeType":"YulLiteral","src":"2182:2:87","type":"","value":"64"}],"functionName":{"name":"slt","nativeSrc":"2153:3:87","nodeType":"YulIdentifier","src":"2153:3:87"},"nativeSrc":"2153:32:87","nodeType":"YulFunctionCall","src":"2153:32:87"},"nativeSrc":"2150:52:87","nodeType":"YulIf","src":"2150:52:87"},{"nativeSrc":"2211:39:87","nodeType":"YulAssignment","src":"2211:39:87","value":{"arguments":[{"name":"headStart","nativeSrc":"2240:9:87","nodeType":"YulIdentifier","src":"2240:9:87"}],"functionName":{"name":"abi_decode_address","nativeSrc":"2221:18:87","nodeType":"YulIdentifier","src":"2221:18:87"},"nativeSrc":"2221:29:87","nodeType":"YulFunctionCall","src":"2221:29:87"},"variableNames":[{"name":"value0","nativeSrc":"2211:6:87","nodeType":"YulIdentifier","src":"2211:6:87"}]},{"nativeSrc":"2259:48:87","nodeType":"YulAssignment","src":"2259:48:87","value":{"arguments":[{"arguments":[{"name":"headStart","nativeSrc":"2292:9:87","nodeType":"YulIdentifier","src":"2292:9:87"},{"kind":"number","nativeSrc":"2303:2:87","nodeType":"YulLiteral","src":"2303:2:87","type":"","value":"32"}],"functionName":{"name":"add","nativeSrc":"2288:3:87","nodeType":"YulIdentifier","src":"2288:3:87"},"nativeSrc":"2288:18:87","nodeType":"YulFunctionCall","src":"2288:18:87"}],"functionName":{"name":"abi_decode_address","nativeSrc":"2269:18:87","nodeType":"YulIdentifier","src":"2269:18:87"},"nativeSrc":"2269:38:87","nodeType":"YulFunctionCall","src":"2269:38:87"},"variableNames":[{"name":"value1","nativeSrc":"2259:6:87","nodeType":"YulIdentifier","src":"2259:6:87"}]}]},"name":"abi_decode_tuple_t_addresst_address","nativeSrc":"2053:260:87","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nativeSrc":"2098:9:87","nodeType":"YulTypedName","src":"2098:9:87","type":""},{"name":"dataEnd","nativeSrc":"2109:7:87","nodeType":"YulTypedName","src":"2109:7:87","type":""}],"returnVariables":[{"name":"value0","nativeSrc":"2121:6:87","nodeType":"YulTypedName","src":"2121:6:87","type":""},{"name":"value1","nativeSrc":"2129:6:87","nodeType":"YulTypedName","src":"2129:6:87","type":""}],"src":"2053:260:87"},{"body":{"nativeSrc":"2373:325:87","nodeType":"YulBlock","src":"2373:325:87","statements":[{"nativeSrc":"2383:22:87","nodeType":"YulAssignment","src":"2383:22:87","value":{"arguments":[{"kind":"number","nativeSrc":"2397:1:87","nodeType":"YulLiteral","src":"2397:1:87","type":"","value":"1"},{"name":"data","nativeSrc":"2400:4:87","nodeType":"YulIdentifier","src":"2400:4:87"}],"functionName":{"name":"shr","nativeSrc":"2393:3:87","nodeType":"YulIdentifier","src":"2393:3:87"},"nativeSrc":"2393:12:87","nodeType":"YulFunctionCall","src":"2393:12:87"},"variableNames":[{"name":"length","nativeSrc":"2383:6:87","nodeType":"YulIdentifier","src":"2383:6:87"}]},{"nativeSrc":"2414:38:87","nodeType":"YulVariableDeclaration","src":"2414:38:87","value":{"arguments":[{"name":"data","nativeSrc":"2444:4:87","nodeType":"YulIdentifier","src":"2444:4:87"},{"kind":"number","nativeSrc":"2450:1:87","nodeType":"YulLiteral","src":"2450:1:87","type":"","value":"1"}],"functionName":{"name":"and","nativeSrc":"2440:3:87","nodeType":"YulIdentifier","src":"2440:3:87"},"nativeSrc":"2440:12:87","nodeType":"YulFunctionCall","src":"2440:12:87"},"variables":[{"name":"outOfPlaceEncoding","nativeSrc":"2418:18:87","nodeType":"YulTypedName","src":"2418:18:87","type":""}]},{"body":{"nativeSrc":"2491:31:87","nodeType":"YulBlock","src":"2491:31:87","statements":[{"nativeSrc":"2493:27:87","nodeType":"YulAssignment","src":"2493:27:87","value":{"arguments":[{"name":"length","nativeSrc":"2507:6:87","nodeType":"YulIdentifier","src":"2507:6:87"},{"kind":"number","nativeSrc":"2515:4:87","nodeType":"YulLiteral","src":"2515:4:87","type":"","value":"0x7f"}],"functionName":{"name":"and","nativeSrc":"2503:3:87","nodeType":"YulIdentifier","src":"2503:3:87"},"nativeSrc":"2503:17:87","nodeType":"YulFunctionCall","src":"2503:17:87"},"variableNames":[{"name":"length","nativeSrc":"2493:6:87","nodeType":"YulIdentifier","src":"2493:6:87"}]}]},"condition":{"arguments":[{"name":"outOfPlaceEncoding","nativeSrc":"2471:18:87","nodeType":"YulIdentifier","src":"2471:18:87"}],"functionName":{"name":"iszero","nativeSrc":"2464:6:87","nodeType":"YulIdentifier","src":"2464:6:87"},"nativeSrc":"2464:26:87","nodeType":"YulFunctionCall","src":"2464:26:87"},"nativeSrc":"2461:61:87","nodeType":"YulIf","src":"2461:61:87"},{"body":{"nativeSrc":"2581:111:87","nodeType":"YulBlock","src":"2581:111:87","statements":[{"expression":{"arguments":[{"kind":"number","nativeSrc":"2602:1:87","nodeType":"YulLiteral","src":"2602:1:87","type":"","value":"0"},{"arguments":[{"kind":"number","nativeSrc":"2609:3:87","nodeType":"YulLiteral","src":"2609:3:87","type":"","value":"224"},{"kind":"number","nativeSrc":"2614:10:87","nodeType":"YulLiteral","src":"2614:10:87","type":"","value":"0x4e487b71"}],"functionName":{"name":"shl","nativeSrc":"2605:3:87","nodeType":"YulIdentifier","src":"2605:3:87"},"nativeSrc":"2605:20:87","nodeType":"YulFunctionCall","src":"2605:20:87"}],"functionName":{"name":"mstore","nativeSrc":"2595:6:87","nodeType":"YulIdentifier","src":"2595:6:87"},"nativeSrc":"2595:31:87","nodeType":"YulFunctionCall","src":"2595:31:87"},"nativeSrc":"2595:31:87","nodeType":"YulExpressionStatement","src":"2595:31:87"},{"expression":{"arguments":[{"kind":"number","nativeSrc":"2646:1:87","nodeType":"YulLiteral","src":"2646:1:87","type":"","value":"4"},{"kind":"number","nativeSrc":"2649:4:87","nodeType":"YulLiteral","src":"2649:4:87","type":"","value":"0x22"}],"functionName":{"name":"mstore","nativeSrc":"2639:6:87","nodeType":"YulIdentifier","src":"2639:6:87"},"nativeSrc":"2639:15:87","nodeType":"YulFunctionCall","src":"2639:15:87"},"nativeSrc":"2639:15:87","nodeType":"YulExpressionStatement","src":"2639:15:87"},{"expression":{"arguments":[{"kind":"number","nativeSrc":"2674:1:87","nodeType":"YulLiteral","src":"2674:1:87","type":"","value":"0"},{"kind":"number","nativeSrc":"2677:4:87","nodeType":"YulLiteral","src":"2677:4:87","type":"","value":"0x24"}],"functionName":{"name":"revert","nativeSrc":"2667:6:87","nodeType":"YulIdentifier","src":"2667:6:87"},"nativeSrc":"2667:15:87","nodeType":"YulFunctionCall","src":"2667:15:87"},"nativeSrc":"2667:15:87","nodeType":"YulExpressionStatement","src":"2667:15:87"}]},"condition":{"arguments":[{"name":"outOfPlaceEncoding","nativeSrc":"2537:18:87","nodeType":"YulIdentifier","src":"2537:18:87"},{"arguments":[{"name":"length","nativeSrc":"2560:6:87","nodeType":"YulIdentifier","src":"2560:6:87"},{"kind":"number","nativeSrc":"2568:2:87","nodeType":"YulLiteral","src":"2568:2:87","type":"","value":"32"}],"functionName":{"name":"lt","nativeSrc":"2557:2:87","nodeType":"YulIdentifier","src":"2557:2:87"},"nativeSrc":"2557:14:87","nodeType":"YulFunctionCall","src":"2557:14:87"}],"functionName":{"name":"eq","nativeSrc":"2534:2:87","nodeType":"YulIdentifier","src":"2534:2:87"},"nativeSrc":"2534:38:87","nodeType":"YulFunctionCall","src":"2534:38:87"},"nativeSrc":"2531:161:87","nodeType":"YulIf","src":"2531:161:87"}]},"name":"extract_byte_array_length","nativeSrc":"2318:380:87","nodeType":"YulFunctionDefinition","parameters":[{"name":"data","nativeSrc":"2353:4:87","nodeType":"YulTypedName","src":"2353:4:87","type":""}],"returnVariables":[{"name":"length","nativeSrc":"2362:6:87","nodeType":"YulTypedName","src":"2362:6:87","type":""}],"src":"2318:380:87"},{"body":{"nativeSrc":"2860:188:87","nodeType":"YulBlock","src":"2860:188:87","statements":[{"nativeSrc":"2870:26:87","nodeType":"YulAssignment","src":"2870:26:87","value":{"arguments":[{"name":"headStart","nativeSrc":"2882:9:87","nodeType":"YulIdentifier","src":"2882:9:87"},{"kind":"number","nativeSrc":"2893:2:87","nodeType":"YulLiteral","src":"2893:2:87","type":"","value":"96"}],"functionName":{"name":"add","nativeSrc":"2878:3:87","nodeType":"YulIdentifier","src":"2878:3:87"},"nativeSrc":"2878:18:87","nodeType":"YulFunctionCall","src":"2878:18:87"},"variableNames":[{"name":"tail","nativeSrc":"2870:4:87","nodeType":"YulIdentifier","src":"2870:4:87"}]},{"expression":{"arguments":[{"name":"headStart","nativeSrc":"2912:9:87","nodeType":"YulIdentifier","src":"2912:9:87"},{"arguments":[{"name":"value0","nativeSrc":"2927:6:87","nodeType":"YulIdentifier","src":"2927:6:87"},{"arguments":[{"arguments":[{"kind":"number","nativeSrc":"2943:3:87","nodeType":"YulLiteral","src":"2943:3:87","type":"","value":"160"},{"kind":"number","nativeSrc":"2948:1:87","nodeType":"YulLiteral","src":"2948:1:87","type":"","value":"1"}],"functionName":{"name":"shl","nativeSrc":"2939:3:87","nodeType":"YulIdentifier","src":"2939:3:87"},"nativeSrc":"2939:11:87","nodeType":"YulFunctionCall","src":"2939:11:87"},{"kind":"number","nativeSrc":"2952:1:87","nodeType":"YulLiteral","src":"2952:1:87","type":"","value":"1"}],"functionName":{"name":"sub","nativeSrc":"2935:3:87","nodeType":"YulIdentifier","src":"2935:3:87"},"nativeSrc":"2935:19:87","nodeType":"YulFunctionCall","src":"2935:19:87"}],"functionName":{"name":"and","nativeSrc":"2923:3:87","nodeType":"YulIdentifier","src":"2923:3:87"},"nativeSrc":"2923:32:87","nodeType":"YulFunctionCall","src":"2923:32:87"}],"functionName":{"name":"mstore","nativeSrc":"2905:6:87","nodeType":"YulIdentifier","src":"2905:6:87"},"nativeSrc":"2905:51:87","nodeType":"YulFunctionCall","src":"2905:51:87"},"nativeSrc":"2905:51:87","nodeType":"YulExpressionStatement","src":"2905:51:87"},{"expression":{"arguments":[{"arguments":[{"name":"headStart","nativeSrc":"2976:9:87","nodeType":"YulIdentifier","src":"2976:9:87"},{"kind":"number","nativeSrc":"2987:2:87","nodeType":"YulLiteral","src":"2987:2:87","type":"","value":"32"}],"functionName":{"name":"add","nativeSrc":"2972:3:87","nodeType":"YulIdentifier","src":"2972:3:87"},"nativeSrc":"2972:18:87","nodeType":"YulFunctionCall","src":"2972:18:87"},{"name":"value1","nativeSrc":"2992:6:87","nodeType":"YulIdentifier","src":"2992:6:87"}],"functionName":{"name":"mstore","nativeSrc":"2965:6:87","nodeType":"YulIdentifier","src":"2965:6:87"},"nativeSrc":"2965:34:87","nodeType":"YulFunctionCall","src":"2965:34:87"},"nativeSrc":"2965:34:87","nodeType":"YulExpressionStatement","src":"2965:34:87"},{"expression":{"arguments":[{"arguments":[{"name":"headStart","nativeSrc":"3019:9:87","nodeType":"YulIdentifier","src":"3019:9:87"},{"kind":"number","nativeSrc":"3030:2:87","nodeType":"YulLiteral","src":"3030:2:87","type":"","value":"64"}],"functionName":{"name":"add","nativeSrc":"3015:3:87","nodeType":"YulIdentifier","src":"3015:3:87"},"nativeSrc":"3015:18:87","nodeType":"YulFunctionCall","src":"3015:18:87"},{"name":"value2","nativeSrc":"3035:6:87","nodeType":"YulIdentifier","src":"3035:6:87"}],"functionName":{"name":"mstore","nativeSrc":"3008:6:87","nodeType":"YulIdentifier","src":"3008:6:87"},"nativeSrc":"3008:34:87","nodeType":"YulFunctionCall","src":"3008:34:87"},"nativeSrc":"3008:34:87","nodeType":"YulExpressionStatement","src":"3008:34:87"}]},"name":"abi_encode_tuple_t_address_t_uint256_t_uint256__to_t_address_t_uint256_t_uint256__fromStack_reversed","nativeSrc":"2703:345:87","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nativeSrc":"2813:9:87","nodeType":"YulTypedName","src":"2813:9:87","type":""},{"name":"value2","nativeSrc":"2824:6:87","nodeType":"YulTypedName","src":"2824:6:87","type":""},{"name":"value1","nativeSrc":"2832:6:87","nodeType":"YulTypedName","src":"2832:6:87","type":""},{"name":"value0","nativeSrc":"2840:6:87","nodeType":"YulTypedName","src":"2840:6:87","type":""}],"returnVariables":[{"name":"tail","nativeSrc":"2851:4:87","nodeType":"YulTypedName","src":"2851:4:87","type":""}],"src":"2703:345:87"},{"body":{"nativeSrc":"3154:102:87","nodeType":"YulBlock","src":"3154:102:87","statements":[{"nativeSrc":"3164:26:87","nodeType":"YulAssignment","src":"3164:26:87","value":{"arguments":[{"name":"headStart","nativeSrc":"3176:9:87","nodeType":"YulIdentifier","src":"3176:9:87"},{"kind":"number","nativeSrc":"3187:2:87","nodeType":"YulLiteral","src":"3187:2:87","type":"","value":"32"}],"functionName":{"name":"add","nativeSrc":"3172:3:87","nodeType":"YulIdentifier","src":"3172:3:87"},"nativeSrc":"3172:18:87","nodeType":"YulFunctionCall","src":"3172:18:87"},"variableNames":[{"name":"tail","nativeSrc":"3164:4:87","nodeType":"YulIdentifier","src":"3164:4:87"}]},{"expression":{"arguments":[{"name":"headStart","nativeSrc":"3206:9:87","nodeType":"YulIdentifier","src":"3206:9:87"},{"arguments":[{"name":"value0","nativeSrc":"3221:6:87","nodeType":"YulIdentifier","src":"3221:6:87"},{"arguments":[{"arguments":[{"kind":"number","nativeSrc":"3237:3:87","nodeType":"YulLiteral","src":"3237:3:87","type":"","value":"160"},{"kind":"number","nativeSrc":"3242:1:87","nodeType":"YulLiteral","src":"3242:1:87","type":"","value":"1"}],"functionName":{"name":"shl","nativeSrc":"3233:3:87","nodeType":"YulIdentifier","src":"3233:3:87"},"nativeSrc":"3233:11:87","nodeType":"YulFunctionCall","src":"3233:11:87"},{"kind":"number","nativeSrc":"3246:1:87","nodeType":"YulLiteral","src":"3246:1:87","type":"","value":"1"}],"functionName":{"name":"sub","nativeSrc":"3229:3:87","nodeType":"YulIdentifier","src":"3229:3:87"},"nativeSrc":"3229:19:87","nodeType":"YulFunctionCall","src":"3229:19:87"}],"functionName":{"name":"and","nativeSrc":"3217:3:87","nodeType":"YulIdentifier","src":"3217:3:87"},"nativeSrc":"3217:32:87","nodeType":"YulFunctionCall","src":"3217:32:87"}],"functionName":{"name":"mstore","nativeSrc":"3199:6:87","nodeType":"YulIdentifier","src":"3199:6:87"},"nativeSrc":"3199:51:87","nodeType":"YulFunctionCall","src":"3199:51:87"},"nativeSrc":"3199:51:87","nodeType":"YulExpressionStatement","src":"3199:51:87"}]},"name":"abi_encode_tuple_t_address__to_t_address__fromStack_reversed","nativeSrc":"3053:203:87","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nativeSrc":"3123:9:87","nodeType":"YulTypedName","src":"3123:9:87","type":""},{"name":"value0","nativeSrc":"3134:6:87","nodeType":"YulTypedName","src":"3134:6:87","type":""}],"returnVariables":[{"name":"tail","nativeSrc":"3145:4:87","nodeType":"YulTypedName","src":"3145:4:87","type":""}],"src":"3053:203:87"},{"body":{"nativeSrc":"3309:174:87","nodeType":"YulBlock","src":"3309:174:87","statements":[{"nativeSrc":"3319:16:87","nodeType":"YulAssignment","src":"3319:16:87","value":{"arguments":[{"name":"x","nativeSrc":"3330:1:87","nodeType":"YulIdentifier","src":"3330:1:87"},{"name":"y","nativeSrc":"3333:1:87","nodeType":"YulIdentifier","src":"3333:1:87"}],"functionName":{"name":"add","nativeSrc":"3326:3:87","nodeType":"YulIdentifier","src":"3326:3:87"},"nativeSrc":"3326:9:87","nodeType":"YulFunctionCall","src":"3326:9:87"},"variableNames":[{"name":"sum","nativeSrc":"3319:3:87","nodeType":"YulIdentifier","src":"3319:3:87"}]},{"body":{"nativeSrc":"3366:111:87","nodeType":"YulBlock","src":"3366:111:87","statements":[{"expression":{"arguments":[{"kind":"number","nativeSrc":"3387:1:87","nodeType":"YulLiteral","src":"3387:1:87","type":"","value":"0"},{"arguments":[{"kind":"number","nativeSrc":"3394:3:87","nodeType":"YulLiteral","src":"3394:3:87","type":"","value":"224"},{"kind":"number","nativeSrc":"3399:10:87","nodeType":"YulLiteral","src":"3399:10:87","type":"","value":"0x4e487b71"}],"functionName":{"name":"shl","nativeSrc":"3390:3:87","nodeType":"YulIdentifier","src":"3390:3:87"},"nativeSrc":"3390:20:87","nodeType":"YulFunctionCall","src":"3390:20:87"}],"functionName":{"name":"mstore","nativeSrc":"3380:6:87","nodeType":"YulIdentifier","src":"3380:6:87"},"nativeSrc":"3380:31:87","nodeType":"YulFunctionCall","src":"3380:31:87"},"nativeSrc":"3380:31:87","nodeType":"YulExpressionStatement","src":"3380:31:87"},{"expression":{"arguments":[{"kind":"number","nativeSrc":"3431:1:87","nodeType":"YulLiteral","src":"3431:1:87","type":"","value":"4"},{"kind":"number","nativeSrc":"3434:4:87","nodeType":"YulLiteral","src":"3434:4:87","type":"","value":"0x11"}],"functionName":{"name":"mstore","nativeSrc":"3424:6:87","nodeType":"YulIdentifier","src":"3424:6:87"},"nativeSrc":"3424:15:87","nodeType":"YulFunctionCall","src":"3424:15:87"},"nativeSrc":"3424:15:87","nodeType":"YulExpressionStatement","src":"3424:15:87"},{"expression":{"arguments":[{"kind":"number","nativeSrc":"3459:1:87","nodeType":"YulLiteral","src":"3459:1:87","type":"","value":"0"},{"kind":"number","nativeSrc":"3462:4:87","nodeType":"YulLiteral","src":"3462:4:87","type":"","value":"0x24"}],"functionName":{"name":"revert","nativeSrc":"3452:6:87","nodeType":"YulIdentifier","src":"3452:6:87"},"nativeSrc":"3452:15:87","nodeType":"YulFunctionCall","src":"3452:15:87"},"nativeSrc":"3452:15:87","nodeType":"YulExpressionStatement","src":"3452:15:87"}]},"condition":{"arguments":[{"name":"x","nativeSrc":"3350:1:87","nodeType":"YulIdentifier","src":"3350:1:87"},{"name":"sum","nativeSrc":"3353:3:87","nodeType":"YulIdentifier","src":"3353:3:87"}],"functionName":{"name":"gt","nativeSrc":"3347:2:87","nodeType":"YulIdentifier","src":"3347:2:87"},"nativeSrc":"3347:10:87","nodeType":"YulFunctionCall","src":"3347:10:87"},"nativeSrc":"3344:133:87","nodeType":"YulIf","src":"3344:133:87"}]},"name":"checked_add_t_uint256","nativeSrc":"3261:222:87","nodeType":"YulFunctionDefinition","parameters":[{"name":"x","nativeSrc":"3292:1:87","nodeType":"YulTypedName","src":"3292:1:87","type":""},{"name":"y","nativeSrc":"3295:1:87","nodeType":"YulTypedName","src":"3295:1:87","type":""}],"returnVariables":[{"name":"sum","nativeSrc":"3301:3:87","nodeType":"YulTypedName","src":"3301:3:87","type":""}],"src":"3261:222:87"}]},"contents":"{\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        let length := mload(value0)\n        mstore(add(headStart, 32), length)\n        mcopy(add(headStart, 64), add(value0, 32), length)\n        mstore(add(add(headStart, length), 64), 0)\n        tail := add(add(headStart, and(add(length, 31), not(31))), 64)\n    }\n    function abi_decode_address(offset) -> value\n    {\n        value := calldataload(offset)\n        if iszero(eq(value, and(value, sub(shl(160, 1), 1)))) { revert(0, 0) }\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        let value := 0\n        value := calldataload(add(headStart, 32))\n        value1 := value\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_uint256__to_t_uint256__fromStack_reversed(headStart, value0) -> tail\n    {\n        tail := add(headStart, 32)\n        mstore(headStart, value0)\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        let value := 0\n        value := calldataload(add(headStart, 64))\n        value2 := value\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 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 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 abi_encode_tuple_t_address_t_uint256_t_uint256__to_t_address_t_uint256_t_uint256__fromStack_reversed(headStart, value2, value1, value0) -> tail\n    {\n        tail := add(headStart, 96)\n        mstore(headStart, and(value0, sub(shl(160, 1), 1)))\n        mstore(add(headStart, 32), value1)\n        mstore(add(headStart, 64), value2)\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, sub(shl(160, 1), 1)))\n    }\n    function checked_add_t_uint256(x, y) -> sum\n    {\n        sum := add(x, y)\n        if gt(x, sum)\n        {\n            mstore(0, shl(224, 0x4e487b71))\n            mstore(4, 0x11)\n            revert(0, 0x24)\n        }\n    }\n}","id":87,"language":"Yul","name":"#utility.yul"}],"immutableReferences":{"2647":[{"length":32,"start":279}]},"linkReferences":{},"object":"608060405234801561000f575f5ffd5b50600436106100a6575f3560e01c806340c10f191161006e57806340c10f191461014157806370a082311461015657806395d89b411461017e5780639dc29fac14610186578063a9059cbb14610199578063dd62ed3e146101ac575f5ffd5b806306fdde03146100aa578063095ea7b3146100c857806318160ddd146100eb57806323b872dd146100fd578063313ce56714610110575b5f5ffd5b6100b26101e4565b6040516100bf9190610634565b60405180910390f35b6100db6100d6366004610684565b610274565b60405190151581526020016100bf565b6002545b6040519081526020016100bf565b6100db61010b3660046106ac565b61028d565b60405160ff7f00000000000000000000000000000000000000000000000000000000000000001681526020016100bf565b61015461014f366004610684565b6102b0565b005b6100ef6101643660046106e6565b6001600160a01b03165f9081526020819052604090205490565b6100b26102be565b610154610194366004610684565b6102cd565b6100db6101a7366004610684565b6102d7565b6100ef6101ba366004610706565b6001600160a01b039182165f90815260016020908152604080832093909416825291909152205490565b6060600380546101f390610737565b80601f016020809104026020016040519081016040528092919081815260200182805461021f90610737565b801561026a5780601f106102415761010080835404028352916020019161026a565b820191905f5260205f20905b81548152906001019060200180831161024d57829003601f168201915b5050505050905090565b5f336102818185856102e4565b60019150505b92915050565b5f3361029a8582856102f6565b6102a5858585610377565b506001949350505050565b6102ba82826103d4565b5050565b6060600480546101f390610737565b6102ba8282610408565b5f33610281818585610377565b6102f1838383600161043c565b505050565b6001600160a01b038381165f908152600160209081526040808320938616835292905220545f19811015610371578181101561036357604051637dc7a0d960e11b81526001600160a01b038416600482015260248101829052604481018390526064015b60405180910390fd5b61037184848484035f61043c565b50505050565b6001600160a01b0383166103a057604051634b637e8f60e11b81525f600482015260240161035a565b6001600160a01b0382166103c95760405163ec442f0560e01b81525f600482015260240161035a565b6102f183838361050e565b6001600160a01b0382166103fd5760405163ec442f0560e01b81525f600482015260240161035a565b6102ba5f838361050e565b6001600160a01b03821661043157604051634b637e8f60e11b81525f600482015260240161035a565b6102ba825f8361050e565b6001600160a01b0384166104655760405163e602df0560e01b81525f600482015260240161035a565b6001600160a01b03831661048e57604051634a1406b160e11b81525f600482015260240161035a565b6001600160a01b038085165f908152600160209081526040808320938716835292905220829055801561037157826001600160a01b0316846001600160a01b03167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b9258460405161050091815260200190565b60405180910390a350505050565b6001600160a01b038316610538578060025f82825461052d919061076f565b909155506105a89050565b6001600160a01b0383165f908152602081905260409020548181101561058a5760405163391434e360e21b81526001600160a01b0385166004820152602481018290526044810183905260640161035a565b6001600160a01b0384165f9081526020819052604090209082900390555b6001600160a01b0382166105c4576002805482900390556105e2565b6001600160a01b0382165f9081526020819052604090208054820190555b816001600160a01b0316836001600160a01b03167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef8360405161062791815260200190565b60405180910390a3505050565b602081525f82518060208401528060208501604085015e5f604082850101526040601f19601f83011684010191505092915050565b80356001600160a01b038116811461067f575f5ffd5b919050565b5f5f60408385031215610695575f5ffd5b61069e83610669565b946020939093013593505050565b5f5f5f606084860312156106be575f5ffd5b6106c784610669565b92506106d560208501610669565b929592945050506040919091013590565b5f602082840312156106f6575f5ffd5b6106ff82610669565b9392505050565b5f5f60408385031215610717575f5ffd5b61072083610669565b915061072e60208401610669565b90509250929050565b600181811c9082168061074b57607f821691505b60208210810361076957634e487b7160e01b5f52602260045260245ffd5b50919050565b8082018082111561028757634e487b7160e01b5f52601160045260245ffdfea26469706673582212202ae8dd9ab4ee7abaa60bb9c3c6bccc689154f1f33065a301d737974cef5c28f864736f6c634300081e0033","opcodes":"PUSH1 0x80 PUSH1 0x40 MSTORE CALLVALUE DUP1 ISZERO PUSH2 0xF JUMPI PUSH0 PUSH0 REVERT JUMPDEST POP PUSH1 0x4 CALLDATASIZE LT PUSH2 0xA6 JUMPI PUSH0 CALLDATALOAD PUSH1 0xE0 SHR DUP1 PUSH4 0x40C10F19 GT PUSH2 0x6E JUMPI DUP1 PUSH4 0x40C10F19 EQ PUSH2 0x141 JUMPI DUP1 PUSH4 0x70A08231 EQ PUSH2 0x156 JUMPI DUP1 PUSH4 0x95D89B41 EQ PUSH2 0x17E JUMPI DUP1 PUSH4 0x9DC29FAC EQ PUSH2 0x186 JUMPI DUP1 PUSH4 0xA9059CBB EQ PUSH2 0x199 JUMPI DUP1 PUSH4 0xDD62ED3E EQ PUSH2 0x1AC JUMPI PUSH0 PUSH0 REVERT JUMPDEST DUP1 PUSH4 0x6FDDE03 EQ PUSH2 0xAA JUMPI DUP1 PUSH4 0x95EA7B3 EQ PUSH2 0xC8 JUMPI DUP1 PUSH4 0x18160DDD EQ PUSH2 0xEB JUMPI DUP1 PUSH4 0x23B872DD EQ PUSH2 0xFD JUMPI DUP1 PUSH4 0x313CE567 EQ PUSH2 0x110 JUMPI JUMPDEST PUSH0 PUSH0 REVERT JUMPDEST PUSH2 0xB2 PUSH2 0x1E4 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0xBF SWAP2 SWAP1 PUSH2 0x634 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST PUSH2 0xDB PUSH2 0xD6 CALLDATASIZE PUSH1 0x4 PUSH2 0x684 JUMP JUMPDEST PUSH2 0x274 JUMP JUMPDEST PUSH1 0x40 MLOAD SWAP1 ISZERO ISZERO DUP2 MSTORE PUSH1 0x20 ADD PUSH2 0xBF JUMP JUMPDEST PUSH1 0x2 SLOAD JUMPDEST PUSH1 0x40 MLOAD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH2 0xBF JUMP JUMPDEST PUSH2 0xDB PUSH2 0x10B CALLDATASIZE PUSH1 0x4 PUSH2 0x6AC JUMP JUMPDEST PUSH2 0x28D JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH1 0xFF PUSH32 0x0 AND DUP2 MSTORE PUSH1 0x20 ADD PUSH2 0xBF JUMP JUMPDEST PUSH2 0x154 PUSH2 0x14F CALLDATASIZE PUSH1 0x4 PUSH2 0x684 JUMP JUMPDEST PUSH2 0x2B0 JUMP JUMPDEST STOP JUMPDEST PUSH2 0xEF PUSH2 0x164 CALLDATASIZE PUSH1 0x4 PUSH2 0x6E6 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH0 SWAP1 DUP2 MSTORE PUSH1 0x20 DUP2 SWAP1 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD SWAP1 JUMP JUMPDEST PUSH2 0xB2 PUSH2 0x2BE JUMP JUMPDEST PUSH2 0x154 PUSH2 0x194 CALLDATASIZE PUSH1 0x4 PUSH2 0x684 JUMP JUMPDEST PUSH2 0x2CD JUMP JUMPDEST PUSH2 0xDB PUSH2 0x1A7 CALLDATASIZE PUSH1 0x4 PUSH2 0x684 JUMP JUMPDEST PUSH2 0x2D7 JUMP JUMPDEST PUSH2 0xEF PUSH2 0x1BA CALLDATASIZE PUSH1 0x4 PUSH2 0x706 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP2 DUP3 AND PUSH0 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 0x1F3 SWAP1 PUSH2 0x737 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 0x21F SWAP1 PUSH2 0x737 JUMP JUMPDEST DUP1 ISZERO PUSH2 0x26A JUMPI DUP1 PUSH1 0x1F LT PUSH2 0x241 JUMPI PUSH2 0x100 DUP1 DUP4 SLOAD DIV MUL DUP4 MSTORE SWAP2 PUSH1 0x20 ADD SWAP2 PUSH2 0x26A JUMP JUMPDEST DUP3 ADD SWAP2 SWAP1 PUSH0 MSTORE PUSH1 0x20 PUSH0 KECCAK256 SWAP1 JUMPDEST DUP2 SLOAD DUP2 MSTORE SWAP1 PUSH1 0x1 ADD SWAP1 PUSH1 0x20 ADD DUP1 DUP4 GT PUSH2 0x24D JUMPI DUP3 SWAP1 SUB PUSH1 0x1F AND DUP3 ADD SWAP2 JUMPDEST POP POP POP POP POP SWAP1 POP SWAP1 JUMP JUMPDEST PUSH0 CALLER PUSH2 0x281 DUP2 DUP6 DUP6 PUSH2 0x2E4 JUMP JUMPDEST PUSH1 0x1 SWAP2 POP POP JUMPDEST SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH0 CALLER PUSH2 0x29A DUP6 DUP3 DUP6 PUSH2 0x2F6 JUMP JUMPDEST PUSH2 0x2A5 DUP6 DUP6 DUP6 PUSH2 0x377 JUMP JUMPDEST POP PUSH1 0x1 SWAP5 SWAP4 POP POP POP POP JUMP JUMPDEST PUSH2 0x2BA DUP3 DUP3 PUSH2 0x3D4 JUMP JUMPDEST POP POP JUMP JUMPDEST PUSH1 0x60 PUSH1 0x4 DUP1 SLOAD PUSH2 0x1F3 SWAP1 PUSH2 0x737 JUMP JUMPDEST PUSH2 0x2BA DUP3 DUP3 PUSH2 0x408 JUMP JUMPDEST PUSH0 CALLER PUSH2 0x281 DUP2 DUP6 DUP6 PUSH2 0x377 JUMP JUMPDEST PUSH2 0x2F1 DUP4 DUP4 DUP4 PUSH1 0x1 PUSH2 0x43C JUMP JUMPDEST POP POP POP JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP4 DUP2 AND PUSH0 SWAP1 DUP2 MSTORE PUSH1 0x1 PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x40 DUP1 DUP4 KECCAK256 SWAP4 DUP7 AND DUP4 MSTORE SWAP3 SWAP1 MSTORE KECCAK256 SLOAD PUSH0 NOT DUP2 LT ISZERO PUSH2 0x371 JUMPI DUP2 DUP2 LT ISZERO PUSH2 0x363 JUMPI PUSH1 0x40 MLOAD PUSH4 0x7DC7A0D9 PUSH1 0xE1 SHL DUP2 MSTORE PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP5 AND PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x24 DUP2 ADD DUP3 SWAP1 MSTORE PUSH1 0x44 DUP2 ADD DUP4 SWAP1 MSTORE PUSH1 0x64 ADD JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH2 0x371 DUP5 DUP5 DUP5 DUP5 SUB PUSH0 PUSH2 0x43C JUMP JUMPDEST POP POP POP POP JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP4 AND PUSH2 0x3A0 JUMPI PUSH1 0x40 MLOAD PUSH4 0x4B637E8F PUSH1 0xE1 SHL DUP2 MSTORE PUSH0 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x24 ADD PUSH2 0x35A JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP3 AND PUSH2 0x3C9 JUMPI PUSH1 0x40 MLOAD PUSH4 0xEC442F05 PUSH1 0xE0 SHL DUP2 MSTORE PUSH0 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x24 ADD PUSH2 0x35A JUMP JUMPDEST PUSH2 0x2F1 DUP4 DUP4 DUP4 PUSH2 0x50E JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP3 AND PUSH2 0x3FD JUMPI PUSH1 0x40 MLOAD PUSH4 0xEC442F05 PUSH1 0xE0 SHL DUP2 MSTORE PUSH0 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x24 ADD PUSH2 0x35A JUMP JUMPDEST PUSH2 0x2BA PUSH0 DUP4 DUP4 PUSH2 0x50E JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP3 AND PUSH2 0x431 JUMPI PUSH1 0x40 MLOAD PUSH4 0x4B637E8F PUSH1 0xE1 SHL DUP2 MSTORE PUSH0 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x24 ADD PUSH2 0x35A JUMP JUMPDEST PUSH2 0x2BA DUP3 PUSH0 DUP4 PUSH2 0x50E JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP5 AND PUSH2 0x465 JUMPI PUSH1 0x40 MLOAD PUSH4 0xE602DF05 PUSH1 0xE0 SHL DUP2 MSTORE PUSH0 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x24 ADD PUSH2 0x35A JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP4 AND PUSH2 0x48E JUMPI PUSH1 0x40 MLOAD PUSH4 0x4A1406B1 PUSH1 0xE1 SHL DUP2 MSTORE PUSH0 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x24 ADD PUSH2 0x35A JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP1 DUP6 AND PUSH0 SWAP1 DUP2 MSTORE PUSH1 0x1 PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x40 DUP1 DUP4 KECCAK256 SWAP4 DUP8 AND DUP4 MSTORE SWAP3 SWAP1 MSTORE KECCAK256 DUP3 SWAP1 SSTORE DUP1 ISZERO PUSH2 0x371 JUMPI DUP3 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP5 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH32 0x8C5BE1E5EBEC7D5BD14F71427D1E84F3DD0314C0F7B2291E5B200AC8C7C3B925 DUP5 PUSH1 0x40 MLOAD PUSH2 0x500 SWAP2 DUP2 MSTORE PUSH1 0x20 ADD SWAP1 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 LOG3 POP POP POP POP JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP4 AND PUSH2 0x538 JUMPI DUP1 PUSH1 0x2 PUSH0 DUP3 DUP3 SLOAD PUSH2 0x52D SWAP2 SWAP1 PUSH2 0x76F JUMP JUMPDEST SWAP1 SWAP2 SSTORE POP PUSH2 0x5A8 SWAP1 POP JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP4 AND PUSH0 SWAP1 DUP2 MSTORE PUSH1 0x20 DUP2 SWAP1 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD DUP2 DUP2 LT ISZERO PUSH2 0x58A JUMPI PUSH1 0x40 MLOAD PUSH4 0x391434E3 PUSH1 0xE2 SHL DUP2 MSTORE PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP6 AND PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x24 DUP2 ADD DUP3 SWAP1 MSTORE PUSH1 0x44 DUP2 ADD DUP4 SWAP1 MSTORE PUSH1 0x64 ADD PUSH2 0x35A JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP5 AND PUSH0 SWAP1 DUP2 MSTORE PUSH1 0x20 DUP2 SWAP1 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SWAP1 DUP3 SWAP1 SUB SWAP1 SSTORE JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP3 AND PUSH2 0x5C4 JUMPI PUSH1 0x2 DUP1 SLOAD DUP3 SWAP1 SUB SWAP1 SSTORE PUSH2 0x5E2 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP3 AND PUSH0 SWAP1 DUP2 MSTORE PUSH1 0x20 DUP2 SWAP1 MSTORE PUSH1 0x40 SWAP1 KECCAK256 DUP1 SLOAD DUP3 ADD SWAP1 SSTORE JUMPDEST DUP2 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP4 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH32 0xDDF252AD1BE2C89B69C2B068FC378DAA952BA7F163C4A11628F55A4DF523B3EF DUP4 PUSH1 0x40 MLOAD PUSH2 0x627 SWAP2 DUP2 MSTORE PUSH1 0x20 ADD SWAP1 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 LOG3 POP POP POP JUMP JUMPDEST PUSH1 0x20 DUP2 MSTORE PUSH0 DUP3 MLOAD DUP1 PUSH1 0x20 DUP5 ADD MSTORE DUP1 PUSH1 0x20 DUP6 ADD PUSH1 0x40 DUP6 ADD MCOPY PUSH0 PUSH1 0x40 DUP3 DUP6 ADD ADD MSTORE PUSH1 0x40 PUSH1 0x1F NOT PUSH1 0x1F DUP4 ADD AND DUP5 ADD ADD SWAP2 POP POP SWAP3 SWAP2 POP POP JUMP JUMPDEST DUP1 CALLDATALOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 AND DUP2 EQ PUSH2 0x67F JUMPI PUSH0 PUSH0 REVERT JUMPDEST SWAP2 SWAP1 POP JUMP JUMPDEST PUSH0 PUSH0 PUSH1 0x40 DUP4 DUP6 SUB SLT ISZERO PUSH2 0x695 JUMPI PUSH0 PUSH0 REVERT JUMPDEST PUSH2 0x69E DUP4 PUSH2 0x669 JUMP JUMPDEST SWAP5 PUSH1 0x20 SWAP4 SWAP1 SWAP4 ADD CALLDATALOAD SWAP4 POP POP POP JUMP JUMPDEST PUSH0 PUSH0 PUSH0 PUSH1 0x60 DUP5 DUP7 SUB SLT ISZERO PUSH2 0x6BE JUMPI PUSH0 PUSH0 REVERT JUMPDEST PUSH2 0x6C7 DUP5 PUSH2 0x669 JUMP JUMPDEST SWAP3 POP PUSH2 0x6D5 PUSH1 0x20 DUP6 ADD PUSH2 0x669 JUMP JUMPDEST SWAP3 SWAP6 SWAP3 SWAP5 POP POP POP PUSH1 0x40 SWAP2 SWAP1 SWAP2 ADD CALLDATALOAD SWAP1 JUMP JUMPDEST PUSH0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x6F6 JUMPI PUSH0 PUSH0 REVERT JUMPDEST PUSH2 0x6FF DUP3 PUSH2 0x669 JUMP JUMPDEST SWAP4 SWAP3 POP POP POP JUMP JUMPDEST PUSH0 PUSH0 PUSH1 0x40 DUP4 DUP6 SUB SLT ISZERO PUSH2 0x717 JUMPI PUSH0 PUSH0 REVERT JUMPDEST PUSH2 0x720 DUP4 PUSH2 0x669 JUMP JUMPDEST SWAP2 POP PUSH2 0x72E PUSH1 0x20 DUP5 ADD PUSH2 0x669 JUMP JUMPDEST SWAP1 POP SWAP3 POP SWAP3 SWAP1 POP JUMP JUMPDEST PUSH1 0x1 DUP2 DUP2 SHR SWAP1 DUP3 AND DUP1 PUSH2 0x74B JUMPI PUSH1 0x7F DUP3 AND SWAP2 POP JUMPDEST PUSH1 0x20 DUP3 LT DUP2 SUB PUSH2 0x769 JUMPI PUSH4 0x4E487B71 PUSH1 0xE0 SHL PUSH0 MSTORE PUSH1 0x22 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH0 REVERT JUMPDEST POP SWAP2 SWAP1 POP JUMP JUMPDEST DUP1 DUP3 ADD DUP1 DUP3 GT ISZERO PUSH2 0x287 JUMPI PUSH4 0x4E487B71 PUSH1 0xE0 SHL PUSH0 MSTORE PUSH1 0x11 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH0 REVERT INVALID LOG2 PUSH5 0x6970667358 0x22 SLT KECCAK256 0x2A 0xE8 0xDD SWAP11 0xB4 RETURNCONTRACT 0x7A 0xBA 0xA6 SIGNEXTEND 0xB9 0xC3 0xC6 0xBC 0xCC PUSH9 0x9154F1F33065A301D7 CALLDATACOPY SWAP8 0x4C 0xEF TLOAD 0x28 EXTCALL PUSH5 0x736F6C6343 STOP ADDMOD 0x1E STOP CALLER ","sourceMap":"133:600:9:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1760:89:32;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;3902:186;;;;;;:::i;:::-;;:::i;:::-;;;1085:14:87;;1078:22;1060:41;;1048:2;1033:18;3902:186:32;920:187:87;2803:97:32;2881:12;;2803:97;;;1258:25:87;;;1246:2;1231:18;2803:97:32;1112:177:87;4680:244:32;;;;;;:::i;:::-;;:::i;419:92:9:-;;;1845:4:87;497:9:9;1833:17:87;1815:36;;1803:2;1788:18;419:92:9;1673:184:87;515:106:9;;;;;;:::i;:::-;;:::i;:::-;;2933:116:32;;;;;;:::i;:::-;-1:-1:-1;;;;;3024:18:32;2998:7;3024:18;;;;;;;;;;;;2933:116;1962:93;;;:::i;625:106:9:-;;;;;;:::i;:::-;;:::i;3244:178:32:-;;;;;;:::i;:::-;;:::i;3455:140::-;;;;;;:::i;:::-;-1:-1:-1;;;;;3561:18:32;;;3535:7;3561:18;;;:11;:18;;;;;;;;:27;;;;;;;;;;;;;3455:140;1760:89;1805:13;1837:5;1830:12;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1760:89;:::o;3902:186::-;3975:4;735:10:38;4029:31:32;735:10:38;4045:7:32;4054:5;4029:8;:31::i;:::-;4077:4;4070:11;;;3902:186;;;;;:::o;4680:244::-;4767:4;735:10:38;4823:37:32;4839:4;735:10:38;4854:5:32;4823:15;:37::i;:::-;4870:26;4880:4;4886:2;4890:5;4870:9;:26::i;:::-;-1:-1:-1;4913:4:32;;4680:244;-1:-1:-1;;;;4680:244:32:o;515:106:9:-;592:24;598:9;609:6;592:5;:24::i;:::-;515:106;;:::o;1962:93:32:-;2009:13;2041:7;2034:14;;;;;:::i;625:106:9:-;702:24;708:9;719:6;702:5;:24::i;3244:178:32:-;3313:4;735:10:38;3367:27:32;735:10:38;3384:2:32;3388:5;3367:9;:27::i;8630:128::-;8714:37;8723:5;8730:7;8739:5;8746:4;8714:8;:37::i;:::-;8630:128;;;:::o;10321:476::-;-1:-1:-1;;;;;3561:18:32;;;10420:24;3561:18;;;:11;:18;;;;;;;;:27;;;;;;;;;;-1:-1:-1;;10486:36:32;;10482:309;;;10561:5;10542:16;:24;10538:130;;;10593:60;;-1:-1:-1;;;10593:60:32;;-1:-1:-1;;;;;2923:32:87;;10593:60:32;;;2905:51:87;2972:18;;;2965:34;;;3015:18;;;3008:34;;;2878:18;;10593:60:32;;;;;;;;10538:130;10709:57;10718:5;10725:7;10753:5;10734:16;:24;10760:5;10709:8;:57::i;:::-;10410:387;10321:476;;;:::o;5297:300::-;-1:-1:-1;;;;;5380:18:32;;5376:86;;5421:30;;-1:-1:-1;;;5421:30:32;;5448:1;5421:30;;;3199:51:87;3172:18;;5421:30:32;3053:203:87;5376:86:32;-1:-1:-1;;;;;5475:16:32;;5471:86;;5514:32;;-1:-1:-1;;;5514:32:32;;5543:1;5514:32;;;3199:51:87;3172:18;;5514:32:32;3053:203:87;5471:86:32;5566:24;5574:4;5580:2;5584:5;5566:7;:24::i;7362:208::-;-1:-1:-1;;;;;7432:21:32;;7428:91;;7476:32;;-1:-1:-1;;;7476:32:32;;7505:1;7476:32;;;3199:51:87;3172:18;;7476:32:32;3053:203:87;7428:91:32;7528:35;7544:1;7548:7;7557:5;7528:7;:35::i;7888:206::-;-1:-1:-1;;;;;7958:21:32;;7954:89;;8002:30;;-1:-1:-1;;;8002:30:32;;8029:1;8002:30;;;3199:51:87;3172:18;;8002:30:32;3053:203:87;7954:89:32;8052:35;8060:7;8077:1;8081:5;8052:7;:35::i;9607:432::-;-1:-1:-1;;;;;9719:19:32;;9715:89;;9761:32;;-1:-1:-1;;;9761:32:32;;9790:1;9761:32;;;3199:51:87;3172:18;;9761:32:32;3053:203:87;9715:89:32;-1:-1:-1;;;;;9817:21:32;;9813:90;;9861:31;;-1:-1:-1;;;9861:31:32;;9889:1;9861:31;;;3199:51:87;3172:18;;9861:31:32;3053:203:87;9813:90:32;-1:-1:-1;;;;;9912:18:32;;;;;;;:11;:18;;;;;;;;:27;;;;;;;;;:35;;;9957:76;;;;10007:7;-1:-1:-1;;;;;9991:31:32;10000:5;-1:-1:-1;;;;;9991:31:32;;10016:5;9991:31;;;;1258:25:87;;1246:2;1231:18;;1112:177;9991:31:32;;;;;;;;9607:432;;;;:::o;5912:1107::-;-1:-1:-1;;;;;6001:18:32;;5997:540;;6153:5;6137:12;;:21;;;;;;;:::i;:::-;;;;-1:-1:-1;5997:540:32;;-1:-1:-1;5997:540:32;;-1:-1:-1;;;;;6211:15:32;;6189:19;6211:15;;;;;;;;;;;6244:19;;;6240:115;;;6290:50;;-1:-1:-1;;;6290:50:32;;-1:-1:-1;;;;;2923:32:87;;6290:50:32;;;2905:51:87;2972:18;;;2965:34;;;3015:18;;;3008:34;;;2878:18;;6290:50:32;2703:345:87;6240:115:32;-1:-1:-1;;;;;6475:15:32;;:9;:15;;;;;;;;;;6493:19;;;;6475:37;;5997:540;-1:-1:-1;;;;;6551:16:32;;6547:425;;6714:12;:21;;;;;;;6547:425;;;-1:-1:-1;;;;;6925:13:32;;:9;:13;;;;;;;;;;:22;;;;;;6547:425;7002:2;-1:-1:-1;;;;;6987:25:32;6996:4;-1:-1:-1;;;;;6987:25:32;;7006:5;6987:25;;;;1258::87;;1246:2;1231:18;;1112:177;6987:25:32;;;;;;;;5912:1107;;;:::o;14:418:87:-;163:2;152:9;145:21;126:4;195:6;189:13;238:6;233:2;222:9;218:18;211:34;297:6;292:2;284:6;280:15;275:2;264:9;260:18;254:50;353:1;348:2;339:6;328:9;324:22;320:31;313:42;423:2;416;412:7;407:2;399:6;395:15;391:29;380:9;376:45;372:54;364:62;;;14:418;;;;:::o;437:173::-;505:20;;-1:-1:-1;;;;;554:31:87;;544:42;;534:70;;600:1;597;590:12;534:70;437:173;;;:::o;615:300::-;683:6;691;744:2;732:9;723:7;719:23;715:32;712:52;;;760:1;757;750:12;712:52;783:29;802:9;783:29;:::i;:::-;773:39;881:2;866:18;;;;853:32;;-1:-1:-1;;;615:300:87:o;1294:374::-;1371:6;1379;1387;1440:2;1428:9;1419:7;1415:23;1411:32;1408:52;;;1456:1;1453;1446:12;1408:52;1479:29;1498:9;1479:29;:::i;:::-;1469:39;;1527:38;1561:2;1550:9;1546:18;1527:38;:::i;:::-;1294:374;;1517:48;;-1:-1:-1;;;1634:2:87;1619:18;;;;1606:32;;1294:374::o;1862:186::-;1921:6;1974:2;1962:9;1953:7;1949:23;1945:32;1942:52;;;1990:1;1987;1980:12;1942:52;2013:29;2032:9;2013:29;:::i;:::-;2003:39;1862:186;-1:-1:-1;;;1862:186:87:o;2053:260::-;2121:6;2129;2182:2;2170:9;2161:7;2157:23;2153:32;2150:52;;;2198:1;2195;2188:12;2150:52;2221:29;2240:9;2221:29;:::i;:::-;2211:39;;2269:38;2303:2;2292:9;2288:18;2269:38;:::i;:::-;2259:48;;2053:260;;;;;:::o;2318:380::-;2397:1;2393:12;;;;2440;;;2461:61;;2515:4;2507:6;2503:17;2493:27;;2461:61;2568:2;2560:6;2557:14;2537:18;2534:38;2531:161;;2614:10;2609:3;2605:20;2602:1;2595:31;2649:4;2646:1;2639:15;2677:4;2674:1;2667:15;2531:161;;2318:380;;;:::o;3261:222::-;3326:9;;;3347:10;;;3344:133;;;3399:10;3394:3;3390:20;3387:1;3380:31;3434:4;3431:1;3424:15;3462:4;3459:1;3452:15"},"methodIdentifiers":{"allowance(address,address)":"dd62ed3e","approve(address,uint256)":"095ea7b3","balanceOf(address)":"70a08231","burn(address,uint256)":"9dc29fac","decimals()":"313ce567","mint(address,uint256)":"40c10f19","name()":"06fdde03","symbol()":"95d89b41","totalSupply()":"18160ddd","transfer(address,uint256)":"a9059cbb","transferFrom(address,address,uint256)":"23b872dd"}},"metadata":"{\"compiler\":{\"version\":\"0.8.30+commit.73712a01\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"inputs\":[{\"internalType\":\"string\",\"name\":\"name_\",\"type\":\"string\"},{\"internalType\":\"string\",\"name\":\"symbol_\",\"type\":\"string\"},{\"internalType\":\"uint256\",\"name\":\"initialSupply\",\"type\":\"uint256\"},{\"internalType\":\"uint8\",\"name\":\"decimals_\",\"type\":\"uint8\"}],\"stateMutability\":\"nonpayable\",\"type\":\"constructor\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"spender\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"allowance\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"needed\",\"type\":\"uint256\"}],\"name\":\"ERC20InsufficientAllowance\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"sender\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"balance\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"needed\",\"type\":\"uint256\"}],\"name\":\"ERC20InsufficientBalance\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"approver\",\"type\":\"address\"}],\"name\":\"ERC20InvalidApprover\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"receiver\",\"type\":\"address\"}],\"name\":\"ERC20InvalidReceiver\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"sender\",\"type\":\"address\"}],\"name\":\"ERC20InvalidSender\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"spender\",\"type\":\"address\"}],\"name\":\"ERC20InvalidSpender\",\"type\":\"error\"},{\"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\":\"value\",\"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\":\"recipient\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"}],\"name\":\"burn\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"decimals\",\"outputs\":[{\"internalType\":\"uint8\",\"name\":\"\",\"type\":\"uint8\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"recipient\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"}],\"name\":\"mint\",\"outputs\":[],\"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\":\"to\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"value\",\"type\":\"uint256\"}],\"name\":\"transfer\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"from\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"value\",\"type\":\"uint256\"}],\"name\":\"transferFrom\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"}],\"devdoc\":{\"errors\":{\"ERC20InsufficientAllowance(address,uint256,uint256)\":[{\"details\":\"Indicates a failure with the `spender`\\u2019s `allowance`. Used in transfers.\",\"params\":{\"allowance\":\"Amount of tokens a `spender` is allowed to operate with.\",\"needed\":\"Minimum amount required to perform a transfer.\",\"spender\":\"Address that may be allowed to operate on tokens without being their owner.\"}}],\"ERC20InsufficientBalance(address,uint256,uint256)\":[{\"details\":\"Indicates an error related to the current `balance` of a `sender`. Used in transfers.\",\"params\":{\"balance\":\"Current balance for the interacting account.\",\"needed\":\"Minimum amount required to perform a transfer.\",\"sender\":\"Address whose tokens are being transferred.\"}}],\"ERC20InvalidApprover(address)\":[{\"details\":\"Indicates a failure with the `approver` of a token to be approved. Used in approvals.\",\"params\":{\"approver\":\"Address initiating an approval operation.\"}}],\"ERC20InvalidReceiver(address)\":[{\"details\":\"Indicates a failure with the token `receiver`. Used in transfers.\",\"params\":{\"receiver\":\"Address to which tokens are being transferred.\"}}],\"ERC20InvalidSender(address)\":[{\"details\":\"Indicates a failure with the token `sender`. Used in transfers.\",\"params\":{\"sender\":\"Address whose tokens are being transferred.\"}}],\"ERC20InvalidSpender(address)\":[{\"details\":\"Indicates a failure with the `spender` to be approved. Used in approvals.\",\"params\":{\"spender\":\"Address that may be allowed to operate on tokens without being their owner.\"}}]},\"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\":\"See {IERC20-approve}. NOTE: If `value` is the maximum `uint256`, the allowance is not updated on `transferFrom`. This is semantically equivalent to an infinite approval. Requirements: - `spender` cannot be the zero address.\"},\"balanceOf(address)\":{\"details\":\"Returns the value of tokens owned by `account`.\"},\"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 default value returned by this function, unless it's 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}.\"},\"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\":\"Returns the value of tokens in existence.\"},\"transfer(address,uint256)\":{\"details\":\"See {IERC20-transfer}. Requirements: - `to` cannot be the zero address. - the caller must have a balance of at least `value`.\"},\"transferFrom(address,address,uint256)\":{\"details\":\"See {IERC20-transferFrom}. Skips emitting an {Approval} event indicating an allowance update. This is not required by the ERC. See {xref-ERC20-_approve-address-address-uint256-bool-}[_approve]. NOTE: Does not update the allowance if the current allowance is the maximum `uint256`. Requirements: - `from` and `to` cannot be the zero address. - `from` must have a balance of at least `value`. - the caller must have allowance for ``from``'s tokens of at least `value`.\"}},\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{},\"version\":1}},\"settings\":{\"compilationTarget\":{\"@ensuro/utils/contracts/TestCurrency.sol\":\"TestCurrency\"},\"evmVersion\":\"prague\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"enabled\":true,\"runs\":200},\"remappings\":[]},\"sources\":{\"@ensuro/utils/contracts/TestCurrency.sol\":{\"keccak256\":\"0x83da2209baf46f2ea6907aa5ebacfa2c3b0064cd52eb5a180363805cf34cacb9\",\"license\":\"Apache-2.0\",\"urls\":[\"bzz-raw://009d1abdd87bbe885a242d23c7e66368712e754cdc0b4bfe55f1c901b6fd0248\",\"dweb:/ipfs/QmeeqBi1FFT6W9XNFg8mTFdBT3DH8PiZ2SSixsdkQMfzFP\"]},\"@openzeppelin/contracts/interfaces/draft-IERC6093.sol\":{\"keccak256\":\"0x1b88b3fb3d85ba5496d7d5f396f83ee1fddcdd6762059ff65992655b67920998\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://89393bb3212da1c0889601b9706a07b39419ddc4d2faab9eaf6e7f9152cf6a1c\",\"dweb:/ipfs/QmcCfzzxv1Bkdz1c1yF4gQCeYb6Us5BJANnzTFqawfd1HL\"]},\"@openzeppelin/contracts/token/ERC20/ERC20.sol\":{\"keccak256\":\"0x669464167428061ee0f8618b73b3ee90aff8405683e7ddde8cd77dadaa1afe29\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://0dda78587a7358b4fdf6b9fca0fde5a5e34930f36d5268a16028627fc0170195\",\"dweb:/ipfs/QmQ1b6cCceDRWNxti9HifsTCzmVP25Haxs1bWugm52vTqH\"]},\"@openzeppelin/contracts/token/ERC20/IERC20.sol\":{\"keccak256\":\"0x74ed01eb66b923d0d0cfe3be84604ac04b76482a55f9dd655e1ef4d367f95bc2\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://5282825a626cfe924e504274b864a652b0023591fa66f06a067b25b51ba9b303\",\"dweb:/ipfs/QmeCfPykghhMc81VJTrHTC7sF6CRvaA1FXVq2pJhwYp1dV\"]},\"@openzeppelin/contracts/token/ERC20/extensions/IERC20Metadata.sol\":{\"keccak256\":\"0xd6fa4088198f04eef10c5bce8a2f4d60554b7ec4b987f684393c01bf79b94d9f\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://f95ee0bbd4dd3ac730d066ba3e785ded4565e890dbec2fa7d3b9fe3bad9d0d6e\",\"dweb:/ipfs/QmSLr6bHkPFWT7ntj34jmwfyskpwo97T9jZUrk5sz3sdtR\"]},\"@openzeppelin/contracts/utils/Context.sol\":{\"keccak256\":\"0x493033a8d1b176a037b2cc6a04dad01a5c157722049bbecf632ca876224dd4b2\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://6a708e8a5bdb1011c2c381c9a5cfd8a9a956d7d0a9dc1bd8bcdaf52f76ef2f12\",\"dweb:/ipfs/Qmax9WHBnVsZP46ZxEMNRQpLQnrdE4dK8LehML1Py8FowF\"]}},\"version\":1}","storageLayout":{"storage":[{"astId":8109,"contract":"@ensuro/utils/contracts/TestCurrency.sol:TestCurrency","label":"_balances","offset":0,"slot":"0","type":"t_mapping(t_address,t_uint256)"},{"astId":8115,"contract":"@ensuro/utils/contracts/TestCurrency.sol:TestCurrency","label":"_allowances","offset":0,"slot":"1","type":"t_mapping(t_address,t_mapping(t_address,t_uint256))"},{"astId":8117,"contract":"@ensuro/utils/contracts/TestCurrency.sol:TestCurrency","label":"_totalSupply","offset":0,"slot":"2","type":"t_uint256"},{"astId":8119,"contract":"@ensuro/utils/contracts/TestCurrency.sol:TestCurrency","label":"_name","offset":0,"slot":"3","type":"t_string_storage"},{"astId":8121,"contract":"@ensuro/utils/contracts/TestCurrency.sol:TestCurrency","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"}}}}},"@ensuro/utils/contracts/TestERC4626.sol":{"IMintable":{"abi":[{"inputs":[{"internalType":"address","name":"recipient","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"burn","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"recipient","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"mint","outputs":[],"stateMutability":"nonpayable","type":"function"}],"evm":{"bytecode":{"functionDebugData":{},"generatedSources":[],"linkReferences":{},"object":"","opcodes":"","sourceMap":""},"deployedBytecode":{"functionDebugData":{},"generatedSources":[],"immutableReferences":{},"linkReferences":{},"object":"","opcodes":"","sourceMap":""},"methodIdentifiers":{"burn(address,uint256)":"9dc29fac","mint(address,uint256)":"40c10f19"}},"metadata":"{\"compiler\":{\"version\":\"0.8.30+commit.73712a01\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"inputs\":[{\"internalType\":\"address\",\"name\":\"recipient\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"}],\"name\":\"burn\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"recipient\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"}],\"name\":\"mint\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"}],\"devdoc\":{\"kind\":\"dev\",\"methods\":{},\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{},\"version\":1}},\"settings\":{\"compilationTarget\":{\"@ensuro/utils/contracts/TestERC4626.sol\":\"IMintable\"},\"evmVersion\":\"prague\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"enabled\":true,\"runs\":200},\"remappings\":[]},\"sources\":{\"@ensuro/utils/contracts/TestERC4626.sol\":{\"keccak256\":\"0x688032ec63b79e352f3eb8ceb1a358d9b61ff630a346807b1e9a017de0200150\",\"license\":\"Apache-2.0\",\"urls\":[\"bzz-raw://6d40c7e350166b37b8f5301916939a752ffe296c30f7413b45b9c6b2c4c8e4ce\",\"dweb:/ipfs/QmWRG5CZsU1jeuoryJZP3Sg1cQU8Mu9C5bB7TwhF2M1ZaQ\"]},\"@openzeppelin/contracts/interfaces/IERC1363.sol\":{\"keccak256\":\"0xd5ea07362ab630a6a3dee4285a74cf2377044ca2e4be472755ad64d7c5d4b69d\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://da5e832b40fc5c3145d3781e2e5fa60ac2052c9d08af7e300dc8ab80c4343100\",\"dweb:/ipfs/QmTzf7N5ZUdh5raqtzbM11yexiUoLC9z3Ws632MCuycq1d\"]},\"@openzeppelin/contracts/interfaces/IERC165.sol\":{\"keccak256\":\"0x0afcb7e740d1537b252cb2676f600465ce6938398569f09ba1b9ca240dde2dfc\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://1c299900ac4ec268d4570ecef0d697a3013cd11a6eb74e295ee3fbc945056037\",\"dweb:/ipfs/Qmab9owJoxcA7vJT5XNayCMaUR1qxqj1NDzzisduwaJMcZ\"]},\"@openzeppelin/contracts/interfaces/IERC20.sol\":{\"keccak256\":\"0x1a6221315ce0307746c2c4827c125d821ee796c74a676787762f4778671d4f44\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://1bb2332a7ee26dd0b0de9b7fe266749f54820c99ab6a3bcb6f7e6b751d47ee2d\",\"dweb:/ipfs/QmcRWpaBeCYkhy68PR3B4AgD7asuQk7PwkWxrvJbZcikLF\"]},\"@openzeppelin/contracts/interfaces/IERC4626.sol\":{\"keccak256\":\"0xece5cbf726293ae6be1fbfade2936f052e1b399ed395ba1e221540ab82b62628\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://a9b97e58e90799e681dccbd4a8e469c6ebc2baf11312ad08f14332646123dd4b\",\"dweb:/ipfs/QmdamCQfxcuYinSNd3Et7VNo3oY98XSv4XCUQyq9xfMNUy\"]},\"@openzeppelin/contracts/interfaces/draft-IERC6093.sol\":{\"keccak256\":\"0x1b88b3fb3d85ba5496d7d5f396f83ee1fddcdd6762059ff65992655b67920998\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://89393bb3212da1c0889601b9706a07b39419ddc4d2faab9eaf6e7f9152cf6a1c\",\"dweb:/ipfs/QmcCfzzxv1Bkdz1c1yF4gQCeYb6Us5BJANnzTFqawfd1HL\"]},\"@openzeppelin/contracts/token/ERC20/ERC20.sol\":{\"keccak256\":\"0x669464167428061ee0f8618b73b3ee90aff8405683e7ddde8cd77dadaa1afe29\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://0dda78587a7358b4fdf6b9fca0fde5a5e34930f36d5268a16028627fc0170195\",\"dweb:/ipfs/QmQ1b6cCceDRWNxti9HifsTCzmVP25Haxs1bWugm52vTqH\"]},\"@openzeppelin/contracts/token/ERC20/IERC20.sol\":{\"keccak256\":\"0x74ed01eb66b923d0d0cfe3be84604ac04b76482a55f9dd655e1ef4d367f95bc2\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://5282825a626cfe924e504274b864a652b0023591fa66f06a067b25b51ba9b303\",\"dweb:/ipfs/QmeCfPykghhMc81VJTrHTC7sF6CRvaA1FXVq2pJhwYp1dV\"]},\"@openzeppelin/contracts/token/ERC20/extensions/ERC4626.sol\":{\"keccak256\":\"0x8a6a0045f0bb52251a9a5d8bb5f4156f4eb3ba8521b1fca6a304befaab3e7d23\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://ebd5125436dbb18ba3646cbdb4a8385a9e2bf28abc9d8178a9e7f31cca65f8b8\",\"dweb:/ipfs/QmPioMpycRKdAetJNYYfWCw36rQuyxNqhgHDFGRVLaPKnT\"]},\"@openzeppelin/contracts/token/ERC20/extensions/IERC20Metadata.sol\":{\"keccak256\":\"0xd6fa4088198f04eef10c5bce8a2f4d60554b7ec4b987f684393c01bf79b94d9f\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://f95ee0bbd4dd3ac730d066ba3e785ded4565e890dbec2fa7d3b9fe3bad9d0d6e\",\"dweb:/ipfs/QmSLr6bHkPFWT7ntj34jmwfyskpwo97T9jZUrk5sz3sdtR\"]},\"@openzeppelin/contracts/token/ERC20/utils/SafeERC20.sol\":{\"keccak256\":\"0x304d732678032a9781ae85c8f204c8fba3d3a5e31c02616964e75cfdc5049098\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://299ced486011781dc98f638059678323c03079fefae1482abaa2135b22fa92d0\",\"dweb:/ipfs/QmbZNbcPTBxNvwChavN2kkZZs7xHhYL7mv51KrxMhsMs3j\"]},\"@openzeppelin/contracts/utils/Context.sol\":{\"keccak256\":\"0x493033a8d1b176a037b2cc6a04dad01a5c157722049bbecf632ca876224dd4b2\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://6a708e8a5bdb1011c2c381c9a5cfd8a9a956d7d0a9dc1bd8bcdaf52f76ef2f12\",\"dweb:/ipfs/Qmax9WHBnVsZP46ZxEMNRQpLQnrdE4dK8LehML1Py8FowF\"]},\"@openzeppelin/contracts/utils/LowLevelCall.sol\":{\"keccak256\":\"0x5b4802a4352474792df3107e961d1cc593e47b820c14f69d3505cb28f5a6a583\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://a6f86fd01f829499fe0545ff5dda07d4521988e88bfe0bf801fc15650921ed56\",\"dweb:/ipfs/QmUUKu4ZDffHAmfkf3asuQfmLTyfpuy2Amdncc3SqfzKPG\"]},\"@openzeppelin/contracts/utils/Memory.sol\":{\"keccak256\":\"0x35feec480590c0ed9c1623df077ba9af406ad57cd9d149ff278c7316d6fe8fe0\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://839967d079db4cd624c3f735a6e911953c0e2347418c016f6a0cc18ed1aa9603\",\"dweb:/ipfs/QmaWxNL8Ymkwerfvq1LNzpbq2PMzTGsnXzqsYExNyvKWka\"]},\"@openzeppelin/contracts/utils/Panic.sol\":{\"keccak256\":\"0xf7fe324703a64fc51702311dc51562d5cb1497734f074e4f483bfb6717572d7a\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://c6a5ff4f9fd8649b7ee20800b7fa387d3465bd77cf20c2d1068cd5c98e1ed57a\",\"dweb:/ipfs/QmVSaVJf9FXFhdYEYeCEfjMVHrxDh5qL4CGkxdMWpQCrqG\"]},\"@openzeppelin/contracts/utils/introspection/IERC165.sol\":{\"keccak256\":\"0x8891738ffe910f0cf2da09566928589bf5d63f4524dd734fd9cedbac3274dd5c\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://971f954442df5c2ef5b5ebf1eb245d7105d9fbacc7386ee5c796df1d45b21617\",\"dweb:/ipfs/QmadRjHbkicwqwwh61raUEapaVEtaLMcYbQZWs9gUkgj3u\"]},\"@openzeppelin/contracts/utils/math/Math.sol\":{\"keccak256\":\"0x09e3f1c72d4c5cbe8e2644ab7313f8f7177533ae2f4c24cdcbbeaf520a73734c\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://93208401215d539fa2d81626b207c1f611def7883d0e447b3b5969ebaa7b3c2c\",\"dweb:/ipfs/QmXPxDnQPx8LAweX5ZJqEcwkvs59kP4c64VVDG1Jjq1mef\"]},\"@openzeppelin/contracts/utils/math/SafeCast.sol\":{\"keccak256\":\"0x195533c86d0ef72bcc06456a4f66a9b941f38eb403739b00f21fd7c1abd1ae54\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://b1d578337048cad08c1c03041cca5978eff5428aa130c781b271ad9e5566e1f8\",\"dweb:/ipfs/QmPFKL2r9CBsMwmUqqdcFPfHZB2qcs9g1HDrPxzWSxomvy\"]}},\"version\":1}","storageLayout":{"storage":[],"types":null}},"TestERC4626":{"abi":[{"inputs":[{"internalType":"string","name":"name_","type":"string"},{"internalType":"string","name":"symbol_","type":"string"},{"internalType":"contract IERC20Metadata","name":"asset_","type":"address"}],"stateMutability":"nonpayable","type":"constructor"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"allowance","type":"uint256"},{"internalType":"uint256","name":"needed","type":"uint256"}],"name":"ERC20InsufficientAllowance","type":"error"},{"inputs":[{"internalType":"address","name":"sender","type":"address"},{"internalType":"uint256","name":"balance","type":"uint256"},{"internalType":"uint256","name":"needed","type":"uint256"}],"name":"ERC20InsufficientBalance","type":"error"},{"inputs":[{"internalType":"address","name":"approver","type":"address"}],"name":"ERC20InvalidApprover","type":"error"},{"inputs":[{"internalType":"address","name":"receiver","type":"address"}],"name":"ERC20InvalidReceiver","type":"error"},{"inputs":[{"internalType":"address","name":"sender","type":"address"}],"name":"ERC20InvalidSender","type":"error"},{"inputs":[{"internalType":"address","name":"spender","type":"address"}],"name":"ERC20InvalidSpender","type":"error"},{"inputs":[{"internalType":"address","name":"receiver","type":"address"},{"internalType":"uint256","name":"assets","type":"uint256"},{"internalType":"uint256","name":"max","type":"uint256"}],"name":"ERC4626ExceededMaxDeposit","type":"error"},{"inputs":[{"internalType":"address","name":"receiver","type":"address"},{"internalType":"uint256","name":"shares","type":"uint256"},{"internalType":"uint256","name":"max","type":"uint256"}],"name":"ERC4626ExceededMaxMint","type":"error"},{"inputs":[{"internalType":"address","name":"owner","type":"address"},{"internalType":"uint256","name":"shares","type":"uint256"},{"internalType":"uint256","name":"max","type":"uint256"}],"name":"ERC4626ExceededMaxRedeem","type":"error"},{"inputs":[{"internalType":"address","name":"owner","type":"address"},{"internalType":"uint256","name":"assets","type":"uint256"},{"internalType":"uint256","name":"max","type":"uint256"}],"name":"ERC4626ExceededMaxWithdraw","type":"error"},{"inputs":[{"internalType":"address","name":"token","type":"address"}],"name":"SafeERC20FailedOperation","type":"error"},{"inputs":[{"internalType":"bytes4","name":"selector","type":"bytes4"}],"name":"VaultIsBroken","type":"error"},{"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":"sender","type":"address"},{"indexed":true,"internalType":"address","name":"owner","type":"address"},{"indexed":false,"internalType":"uint256","name":"assets","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"shares","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":"sender","type":"address"},{"indexed":true,"internalType":"address","name":"receiver","type":"address"},{"indexed":true,"internalType":"address","name":"owner","type":"address"},{"indexed":false,"internalType":"uint256","name":"assets","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"shares","type":"uint256"}],"name":"Withdraw","type":"event"},{"inputs":[],"name":"OVERRIDE_UNSET","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"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":"value","type":"uint256"}],"name":"approve","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"asset","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"balanceOf","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"broken","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"shares","type":"uint256"}],"name":"convertToAssets","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"assets","type":"uint256"}],"name":"convertToShares","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":"assets","type":"uint256"},{"internalType":"address","name":"receiver","type":"address"}],"name":"deposit","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"int256","name":"assets","type":"int256"}],"name":"discreteEarning","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"owner","type":"address"}],"name":"maxDeposit","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"owner","type":"address"}],"name":"maxMint","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"owner","type":"address"}],"name":"maxRedeem","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"owner","type":"address"}],"name":"maxWithdraw","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"shares","type":"uint256"},{"internalType":"address","name":"receiver","type":"address"}],"name":"mint","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"name","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"overrideMaxDeposit","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"overrideMaxMint","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"overrideMaxRedeem","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"overrideMaxWithdraw","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"assets","type":"uint256"}],"name":"previewDeposit","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"shares","type":"uint256"}],"name":"previewMint","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"shares","type":"uint256"}],"name":"previewRedeem","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"assets","type":"uint256"}],"name":"previewWithdraw","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"shares","type":"uint256"},{"internalType":"address","name":"receiver","type":"address"},{"internalType":"address","name":"owner","type":"address"}],"name":"redeem","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bool","name":"broken_","type":"bool"}],"name":"setBroken","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"enum TestERC4626.OverrideOption","name":"option","type":"uint8"},{"internalType":"uint256","name":"newValue","type":"uint256"}],"name":"setOverride","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"symbol","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"totalAssets","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":"to","type":"address"},{"internalType":"uint256","name":"value","type":"uint256"}],"name":"transfer","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"from","type":"address"},{"internalType":"address","name":"to","type":"address"},{"internalType":"uint256","name":"value","type":"uint256"}],"name":"transferFrom","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"assets","type":"uint256"},{"internalType":"address","name":"receiver","type":"address"},{"internalType":"address","name":"owner","type":"address"}],"name":"withdraw","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"nonpayable","type":"function"}],"evm":{"bytecode":{"functionDebugData":{"@_2809":{"entryPoint":null,"id":2809,"parameterSlots":3,"returnSlots":0},"@_8138":{"entryPoint":null,"id":8138,"parameterSlots":2,"returnSlots":0},"@_8771":{"entryPoint":null,"id":8771,"parameterSlots":1,"returnSlots":0},"@_tryGetAssetDecimals_8849":{"entryPoint":171,"id":8849,"parameterSlots":1,"returnSlots":2},"@getFreeMemoryPointer_10485":{"entryPoint":null,"id":10485,"parameterSlots":0,"returnSlots":1},"@returnDataSize_10445":{"entryPoint":null,"id":10445,"parameterSlots":0,"returnSlots":1},"@setFreeMemoryPointer_10494":{"entryPoint":null,"id":10494,"parameterSlots":1,"returnSlots":0},"@staticcallReturn64Bytes_10409":{"entryPoint":316,"id":10409,"parameterSlots":2,"returnSlots":3},"abi_decode_string_fromMemory":{"entryPoint":369,"id":null,"parameterSlots":2,"returnSlots":1},"abi_decode_tuple_t_string_memory_ptrt_string_memory_ptrt_contract$_IERC20Metadata_$9411_fromMemory":{"entryPoint":506,"id":null,"parameterSlots":2,"returnSlots":3},"array_dataslot_string_storage":{"entryPoint":null,"id":null,"parameterSlots":1,"returnSlots":1},"checked_sub_t_uint256":{"entryPoint":957,"id":null,"parameterSlots":2,"returnSlots":1},"clean_up_bytearray_end_slots_string_storage":{"entryPoint":695,"id":null,"parameterSlots":3,"returnSlots":0},"copy_byte_array_to_storage_from_t_string_memory_ptr_to_t_string_storage":{"entryPoint":771,"id":null,"parameterSlots":2,"returnSlots":0},"extract_byte_array_length":{"entryPoint":639,"id":null,"parameterSlots":1,"returnSlots":1},"extract_used_part_and_set_length_of_short_byte_array":{"entryPoint":null,"id":null,"parameterSlots":2,"returnSlots":1},"panic_error_0x41":{"entryPoint":349,"id":null,"parameterSlots":0,"returnSlots":0}},"generatedSources":[{"ast":{"nativeSrc":"0:4362:87","nodeType":"YulBlock","src":"0:4362:87","statements":[{"nativeSrc":"6:3:87","nodeType":"YulBlock","src":"6:3:87","statements":[]},{"body":{"nativeSrc":"46:95:87","nodeType":"YulBlock","src":"46:95:87","statements":[{"expression":{"arguments":[{"kind":"number","nativeSrc":"63:1:87","nodeType":"YulLiteral","src":"63:1:87","type":"","value":"0"},{"arguments":[{"kind":"number","nativeSrc":"70:3:87","nodeType":"YulLiteral","src":"70:3:87","type":"","value":"224"},{"kind":"number","nativeSrc":"75:10:87","nodeType":"YulLiteral","src":"75:10:87","type":"","value":"0x4e487b71"}],"functionName":{"name":"shl","nativeSrc":"66:3:87","nodeType":"YulIdentifier","src":"66:3:87"},"nativeSrc":"66:20:87","nodeType":"YulFunctionCall","src":"66:20:87"}],"functionName":{"name":"mstore","nativeSrc":"56:6:87","nodeType":"YulIdentifier","src":"56:6:87"},"nativeSrc":"56:31:87","nodeType":"YulFunctionCall","src":"56:31:87"},"nativeSrc":"56:31:87","nodeType":"YulExpressionStatement","src":"56:31:87"},{"expression":{"arguments":[{"kind":"number","nativeSrc":"103:1:87","nodeType":"YulLiteral","src":"103:1:87","type":"","value":"4"},{"kind":"number","nativeSrc":"106:4:87","nodeType":"YulLiteral","src":"106:4:87","type":"","value":"0x41"}],"functionName":{"name":"mstore","nativeSrc":"96:6:87","nodeType":"YulIdentifier","src":"96:6:87"},"nativeSrc":"96:15:87","nodeType":"YulFunctionCall","src":"96:15:87"},"nativeSrc":"96:15:87","nodeType":"YulExpressionStatement","src":"96:15:87"},{"expression":{"arguments":[{"kind":"number","nativeSrc":"127:1:87","nodeType":"YulLiteral","src":"127:1:87","type":"","value":"0"},{"kind":"number","nativeSrc":"130:4:87","nodeType":"YulLiteral","src":"130:4:87","type":"","value":"0x24"}],"functionName":{"name":"revert","nativeSrc":"120:6:87","nodeType":"YulIdentifier","src":"120:6:87"},"nativeSrc":"120:15:87","nodeType":"YulFunctionCall","src":"120:15:87"},"nativeSrc":"120:15:87","nodeType":"YulExpressionStatement","src":"120:15:87"}]},"name":"panic_error_0x41","nativeSrc":"14:127:87","nodeType":"YulFunctionDefinition","src":"14:127:87"},{"body":{"nativeSrc":"210:659:87","nodeType":"YulBlock","src":"210:659:87","statements":[{"body":{"nativeSrc":"259:16:87","nodeType":"YulBlock","src":"259:16:87","statements":[{"expression":{"arguments":[{"kind":"number","nativeSrc":"268:1:87","nodeType":"YulLiteral","src":"268:1:87","type":"","value":"0"},{"kind":"number","nativeSrc":"271:1:87","nodeType":"YulLiteral","src":"271:1:87","type":"","value":"0"}],"functionName":{"name":"revert","nativeSrc":"261:6:87","nodeType":"YulIdentifier","src":"261:6:87"},"nativeSrc":"261:12:87","nodeType":"YulFunctionCall","src":"261:12:87"},"nativeSrc":"261:12:87","nodeType":"YulExpressionStatement","src":"261:12:87"}]},"condition":{"arguments":[{"arguments":[{"arguments":[{"name":"offset","nativeSrc":"238:6:87","nodeType":"YulIdentifier","src":"238:6:87"},{"kind":"number","nativeSrc":"246:4:87","nodeType":"YulLiteral","src":"246:4:87","type":"","value":"0x1f"}],"functionName":{"name":"add","nativeSrc":"234:3:87","nodeType":"YulIdentifier","src":"234:3:87"},"nativeSrc":"234:17:87","nodeType":"YulFunctionCall","src":"234:17:87"},{"name":"end","nativeSrc":"253:3:87","nodeType":"YulIdentifier","src":"253:3:87"}],"functionName":{"name":"slt","nativeSrc":"230:3:87","nodeType":"YulIdentifier","src":"230:3:87"},"nativeSrc":"230:27:87","nodeType":"YulFunctionCall","src":"230:27:87"}],"functionName":{"name":"iszero","nativeSrc":"223:6:87","nodeType":"YulIdentifier","src":"223:6:87"},"nativeSrc":"223:35:87","nodeType":"YulFunctionCall","src":"223:35:87"},"nativeSrc":"220:55:87","nodeType":"YulIf","src":"220:55:87"},{"nativeSrc":"284:27:87","nodeType":"YulVariableDeclaration","src":"284:27:87","value":{"arguments":[{"name":"offset","nativeSrc":"304:6:87","nodeType":"YulIdentifier","src":"304:6:87"}],"functionName":{"name":"mload","nativeSrc":"298:5:87","nodeType":"YulIdentifier","src":"298:5:87"},"nativeSrc":"298:13:87","nodeType":"YulFunctionCall","src":"298:13:87"},"variables":[{"name":"length","nativeSrc":"288:6:87","nodeType":"YulTypedName","src":"288:6:87","type":""}]},{"body":{"nativeSrc":"354:22:87","nodeType":"YulBlock","src":"354:22:87","statements":[{"expression":{"arguments":[],"functionName":{"name":"panic_error_0x41","nativeSrc":"356:16:87","nodeType":"YulIdentifier","src":"356:16:87"},"nativeSrc":"356:18:87","nodeType":"YulFunctionCall","src":"356:18:87"},"nativeSrc":"356:18:87","nodeType":"YulExpressionStatement","src":"356:18:87"}]},"condition":{"arguments":[{"name":"length","nativeSrc":"326:6:87","nodeType":"YulIdentifier","src":"326:6:87"},{"arguments":[{"arguments":[{"kind":"number","nativeSrc":"342:2:87","nodeType":"YulLiteral","src":"342:2:87","type":"","value":"64"},{"kind":"number","nativeSrc":"346:1:87","nodeType":"YulLiteral","src":"346:1:87","type":"","value":"1"}],"functionName":{"name":"shl","nativeSrc":"338:3:87","nodeType":"YulIdentifier","src":"338:3:87"},"nativeSrc":"338:10:87","nodeType":"YulFunctionCall","src":"338:10:87"},{"kind":"number","nativeSrc":"350:1:87","nodeType":"YulLiteral","src":"350:1:87","type":"","value":"1"}],"functionName":{"name":"sub","nativeSrc":"334:3:87","nodeType":"YulIdentifier","src":"334:3:87"},"nativeSrc":"334:18:87","nodeType":"YulFunctionCall","src":"334:18:87"}],"functionName":{"name":"gt","nativeSrc":"323:2:87","nodeType":"YulIdentifier","src":"323:2:87"},"nativeSrc":"323:30:87","nodeType":"YulFunctionCall","src":"323:30:87"},"nativeSrc":"320:56:87","nodeType":"YulIf","src":"320:56:87"},{"nativeSrc":"385:23:87","nodeType":"YulVariableDeclaration","src":"385:23:87","value":{"arguments":[{"kind":"number","nativeSrc":"405:2:87","nodeType":"YulLiteral","src":"405:2:87","type":"","value":"64"}],"functionName":{"name":"mload","nativeSrc":"399:5:87","nodeType":"YulIdentifier","src":"399:5:87"},"nativeSrc":"399:9:87","nodeType":"YulFunctionCall","src":"399:9:87"},"variables":[{"name":"memPtr","nativeSrc":"389:6:87","nodeType":"YulTypedName","src":"389:6:87","type":""}]},{"nativeSrc":"417:85:87","nodeType":"YulVariableDeclaration","src":"417:85:87","value":{"arguments":[{"name":"memPtr","nativeSrc":"439:6:87","nodeType":"YulIdentifier","src":"439:6:87"},{"arguments":[{"arguments":[{"arguments":[{"arguments":[{"name":"length","nativeSrc":"463:6:87","nodeType":"YulIdentifier","src":"463:6:87"},{"kind":"number","nativeSrc":"471:4:87","nodeType":"YulLiteral","src":"471:4:87","type":"","value":"0x1f"}],"functionName":{"name":"add","nativeSrc":"459:3:87","nodeType":"YulIdentifier","src":"459:3:87"},"nativeSrc":"459:17:87","nodeType":"YulFunctionCall","src":"459:17:87"},{"arguments":[{"kind":"number","nativeSrc":"482:2:87","nodeType":"YulLiteral","src":"482:2:87","type":"","value":"31"}],"functionName":{"name":"not","nativeSrc":"478:3:87","nodeType":"YulIdentifier","src":"478:3:87"},"nativeSrc":"478:7:87","nodeType":"YulFunctionCall","src":"478:7:87"}],"functionName":{"name":"and","nativeSrc":"455:3:87","nodeType":"YulIdentifier","src":"455:3:87"},"nativeSrc":"455:31:87","nodeType":"YulFunctionCall","src":"455:31:87"},{"kind":"number","nativeSrc":"488:2:87","nodeType":"YulLiteral","src":"488:2:87","type":"","value":"63"}],"functionName":{"name":"add","nativeSrc":"451:3:87","nodeType":"YulIdentifier","src":"451:3:87"},"nativeSrc":"451:40:87","nodeType":"YulFunctionCall","src":"451:40:87"},{"arguments":[{"kind":"number","nativeSrc":"497:2:87","nodeType":"YulLiteral","src":"497:2:87","type":"","value":"31"}],"functionName":{"name":"not","nativeSrc":"493:3:87","nodeType":"YulIdentifier","src":"493:3:87"},"nativeSrc":"493:7:87","nodeType":"YulFunctionCall","src":"493:7:87"}],"functionName":{"name":"and","nativeSrc":"447:3:87","nodeType":"YulIdentifier","src":"447:3:87"},"nativeSrc":"447:54:87","nodeType":"YulFunctionCall","src":"447:54:87"}],"functionName":{"name":"add","nativeSrc":"435:3:87","nodeType":"YulIdentifier","src":"435:3:87"},"nativeSrc":"435:67:87","nodeType":"YulFunctionCall","src":"435:67:87"},"variables":[{"name":"newFreePtr","nativeSrc":"421:10:87","nodeType":"YulTypedName","src":"421:10:87","type":""}]},{"body":{"nativeSrc":"577:22:87","nodeType":"YulBlock","src":"577:22:87","statements":[{"expression":{"arguments":[],"functionName":{"name":"panic_error_0x41","nativeSrc":"579:16:87","nodeType":"YulIdentifier","src":"579:16:87"},"nativeSrc":"579:18:87","nodeType":"YulFunctionCall","src":"579:18:87"},"nativeSrc":"579:18:87","nodeType":"YulExpressionStatement","src":"579:18:87"}]},"condition":{"arguments":[{"arguments":[{"name":"newFreePtr","nativeSrc":"520:10:87","nodeType":"YulIdentifier","src":"520:10:87"},{"arguments":[{"arguments":[{"kind":"number","nativeSrc":"540:2:87","nodeType":"YulLiteral","src":"540:2:87","type":"","value":"64"},{"kind":"number","nativeSrc":"544:1:87","nodeType":"YulLiteral","src":"544:1:87","type":"","value":"1"}],"functionName":{"name":"shl","nativeSrc":"536:3:87","nodeType":"YulIdentifier","src":"536:3:87"},"nativeSrc":"536:10:87","nodeType":"YulFunctionCall","src":"536:10:87"},{"kind":"number","nativeSrc":"548:1:87","nodeType":"YulLiteral","src":"548:1:87","type":"","value":"1"}],"functionName":{"name":"sub","nativeSrc":"532:3:87","nodeType":"YulIdentifier","src":"532:3:87"},"nativeSrc":"532:18:87","nodeType":"YulFunctionCall","src":"532:18:87"}],"functionName":{"name":"gt","nativeSrc":"517:2:87","nodeType":"YulIdentifier","src":"517:2:87"},"nativeSrc":"517:34:87","nodeType":"YulFunctionCall","src":"517:34:87"},{"arguments":[{"name":"newFreePtr","nativeSrc":"556:10:87","nodeType":"YulIdentifier","src":"556:10:87"},{"name":"memPtr","nativeSrc":"568:6:87","nodeType":"YulIdentifier","src":"568:6:87"}],"functionName":{"name":"lt","nativeSrc":"553:2:87","nodeType":"YulIdentifier","src":"553:2:87"},"nativeSrc":"553:22:87","nodeType":"YulFunctionCall","src":"553:22:87"}],"functionName":{"name":"or","nativeSrc":"514:2:87","nodeType":"YulIdentifier","src":"514:2:87"},"nativeSrc":"514:62:87","nodeType":"YulFunctionCall","src":"514:62:87"},"nativeSrc":"511:88:87","nodeType":"YulIf","src":"511:88:87"},{"expression":{"arguments":[{"kind":"number","nativeSrc":"615:2:87","nodeType":"YulLiteral","src":"615:2:87","type":"","value":"64"},{"name":"newFreePtr","nativeSrc":"619:10:87","nodeType":"YulIdentifier","src":"619:10:87"}],"functionName":{"name":"mstore","nativeSrc":"608:6:87","nodeType":"YulIdentifier","src":"608:6:87"},"nativeSrc":"608:22:87","nodeType":"YulFunctionCall","src":"608:22:87"},"nativeSrc":"608:22:87","nodeType":"YulExpressionStatement","src":"608:22:87"},{"expression":{"arguments":[{"name":"memPtr","nativeSrc":"646:6:87","nodeType":"YulIdentifier","src":"646:6:87"},{"name":"length","nativeSrc":"654:6:87","nodeType":"YulIdentifier","src":"654:6:87"}],"functionName":{"name":"mstore","nativeSrc":"639:6:87","nodeType":"YulIdentifier","src":"639:6:87"},"nativeSrc":"639:22:87","nodeType":"YulFunctionCall","src":"639:22:87"},"nativeSrc":"639:22:87","nodeType":"YulExpressionStatement","src":"639:22:87"},{"body":{"nativeSrc":"713:16:87","nodeType":"YulBlock","src":"713:16:87","statements":[{"expression":{"arguments":[{"kind":"number","nativeSrc":"722:1:87","nodeType":"YulLiteral","src":"722:1:87","type":"","value":"0"},{"kind":"number","nativeSrc":"725:1:87","nodeType":"YulLiteral","src":"725:1:87","type":"","value":"0"}],"functionName":{"name":"revert","nativeSrc":"715:6:87","nodeType":"YulIdentifier","src":"715:6:87"},"nativeSrc":"715:12:87","nodeType":"YulFunctionCall","src":"715:12:87"},"nativeSrc":"715:12:87","nodeType":"YulExpressionStatement","src":"715:12:87"}]},"condition":{"arguments":[{"arguments":[{"arguments":[{"name":"offset","nativeSrc":"684:6:87","nodeType":"YulIdentifier","src":"684:6:87"},{"name":"length","nativeSrc":"692:6:87","nodeType":"YulIdentifier","src":"692:6:87"}],"functionName":{"name":"add","nativeSrc":"680:3:87","nodeType":"YulIdentifier","src":"680:3:87"},"nativeSrc":"680:19:87","nodeType":"YulFunctionCall","src":"680:19:87"},{"kind":"number","nativeSrc":"701:4:87","nodeType":"YulLiteral","src":"701:4:87","type":"","value":"0x20"}],"functionName":{"name":"add","nativeSrc":"676:3:87","nodeType":"YulIdentifier","src":"676:3:87"},"nativeSrc":"676:30:87","nodeType":"YulFunctionCall","src":"676:30:87"},{"name":"end","nativeSrc":"708:3:87","nodeType":"YulIdentifier","src":"708:3:87"}],"functionName":{"name":"gt","nativeSrc":"673:2:87","nodeType":"YulIdentifier","src":"673:2:87"},"nativeSrc":"673:39:87","nodeType":"YulFunctionCall","src":"673:39:87"},"nativeSrc":"670:59:87","nodeType":"YulIf","src":"670:59:87"},{"expression":{"arguments":[{"arguments":[{"name":"memPtr","nativeSrc":"748:6:87","nodeType":"YulIdentifier","src":"748:6:87"},{"kind":"number","nativeSrc":"756:4:87","nodeType":"YulLiteral","src":"756:4:87","type":"","value":"0x20"}],"functionName":{"name":"add","nativeSrc":"744:3:87","nodeType":"YulIdentifier","src":"744:3:87"},"nativeSrc":"744:17:87","nodeType":"YulFunctionCall","src":"744:17:87"},{"arguments":[{"name":"offset","nativeSrc":"767:6:87","nodeType":"YulIdentifier","src":"767:6:87"},{"kind":"number","nativeSrc":"775:4:87","nodeType":"YulLiteral","src":"775:4:87","type":"","value":"0x20"}],"functionName":{"name":"add","nativeSrc":"763:3:87","nodeType":"YulIdentifier","src":"763:3:87"},"nativeSrc":"763:17:87","nodeType":"YulFunctionCall","src":"763:17:87"},{"name":"length","nativeSrc":"782:6:87","nodeType":"YulIdentifier","src":"782:6:87"}],"functionName":{"name":"mcopy","nativeSrc":"738:5:87","nodeType":"YulIdentifier","src":"738:5:87"},"nativeSrc":"738:51:87","nodeType":"YulFunctionCall","src":"738:51:87"},"nativeSrc":"738:51:87","nodeType":"YulExpressionStatement","src":"738:51:87"},{"expression":{"arguments":[{"arguments":[{"arguments":[{"name":"memPtr","nativeSrc":"813:6:87","nodeType":"YulIdentifier","src":"813:6:87"},{"name":"length","nativeSrc":"821:6:87","nodeType":"YulIdentifier","src":"821:6:87"}],"functionName":{"name":"add","nativeSrc":"809:3:87","nodeType":"YulIdentifier","src":"809:3:87"},"nativeSrc":"809:19:87","nodeType":"YulFunctionCall","src":"809:19:87"},{"kind":"number","nativeSrc":"830:4:87","nodeType":"YulLiteral","src":"830:4:87","type":"","value":"0x20"}],"functionName":{"name":"add","nativeSrc":"805:3:87","nodeType":"YulIdentifier","src":"805:3:87"},"nativeSrc":"805:30:87","nodeType":"YulFunctionCall","src":"805:30:87"},{"kind":"number","nativeSrc":"837:1:87","nodeType":"YulLiteral","src":"837:1:87","type":"","value":"0"}],"functionName":{"name":"mstore","nativeSrc":"798:6:87","nodeType":"YulIdentifier","src":"798:6:87"},"nativeSrc":"798:41:87","nodeType":"YulFunctionCall","src":"798:41:87"},"nativeSrc":"798:41:87","nodeType":"YulExpressionStatement","src":"798:41:87"},{"nativeSrc":"848:15:87","nodeType":"YulAssignment","src":"848:15:87","value":{"name":"memPtr","nativeSrc":"857:6:87","nodeType":"YulIdentifier","src":"857:6:87"},"variableNames":[{"name":"array","nativeSrc":"848:5:87","nodeType":"YulIdentifier","src":"848:5:87"}]}]},"name":"abi_decode_string_fromMemory","nativeSrc":"146:723:87","nodeType":"YulFunctionDefinition","parameters":[{"name":"offset","nativeSrc":"184:6:87","nodeType":"YulTypedName","src":"184:6:87","type":""},{"name":"end","nativeSrc":"192:3:87","nodeType":"YulTypedName","src":"192:3:87","type":""}],"returnVariables":[{"name":"array","nativeSrc":"200:5:87","nodeType":"YulTypedName","src":"200:5:87","type":""}],"src":"146:723:87"},{"body":{"nativeSrc":"1032:589:87","nodeType":"YulBlock","src":"1032:589:87","statements":[{"body":{"nativeSrc":"1078:16:87","nodeType":"YulBlock","src":"1078:16:87","statements":[{"expression":{"arguments":[{"kind":"number","nativeSrc":"1087:1:87","nodeType":"YulLiteral","src":"1087:1:87","type":"","value":"0"},{"kind":"number","nativeSrc":"1090:1:87","nodeType":"YulLiteral","src":"1090:1:87","type":"","value":"0"}],"functionName":{"name":"revert","nativeSrc":"1080:6:87","nodeType":"YulIdentifier","src":"1080:6:87"},"nativeSrc":"1080:12:87","nodeType":"YulFunctionCall","src":"1080:12:87"},"nativeSrc":"1080:12:87","nodeType":"YulExpressionStatement","src":"1080:12:87"}]},"condition":{"arguments":[{"arguments":[{"name":"dataEnd","nativeSrc":"1053:7:87","nodeType":"YulIdentifier","src":"1053:7:87"},{"name":"headStart","nativeSrc":"1062:9:87","nodeType":"YulIdentifier","src":"1062:9:87"}],"functionName":{"name":"sub","nativeSrc":"1049:3:87","nodeType":"YulIdentifier","src":"1049:3:87"},"nativeSrc":"1049:23:87","nodeType":"YulFunctionCall","src":"1049:23:87"},{"kind":"number","nativeSrc":"1074:2:87","nodeType":"YulLiteral","src":"1074:2:87","type":"","value":"96"}],"functionName":{"name":"slt","nativeSrc":"1045:3:87","nodeType":"YulIdentifier","src":"1045:3:87"},"nativeSrc":"1045:32:87","nodeType":"YulFunctionCall","src":"1045:32:87"},"nativeSrc":"1042:52:87","nodeType":"YulIf","src":"1042:52:87"},{"nativeSrc":"1103:30:87","nodeType":"YulVariableDeclaration","src":"1103:30:87","value":{"arguments":[{"name":"headStart","nativeSrc":"1123:9:87","nodeType":"YulIdentifier","src":"1123:9:87"}],"functionName":{"name":"mload","nativeSrc":"1117:5:87","nodeType":"YulIdentifier","src":"1117:5:87"},"nativeSrc":"1117:16:87","nodeType":"YulFunctionCall","src":"1117:16:87"},"variables":[{"name":"offset","nativeSrc":"1107:6:87","nodeType":"YulTypedName","src":"1107:6:87","type":""}]},{"body":{"nativeSrc":"1176:16:87","nodeType":"YulBlock","src":"1176:16:87","statements":[{"expression":{"arguments":[{"kind":"number","nativeSrc":"1185:1:87","nodeType":"YulLiteral","src":"1185:1:87","type":"","value":"0"},{"kind":"number","nativeSrc":"1188:1:87","nodeType":"YulLiteral","src":"1188:1:87","type":"","value":"0"}],"functionName":{"name":"revert","nativeSrc":"1178:6:87","nodeType":"YulIdentifier","src":"1178:6:87"},"nativeSrc":"1178:12:87","nodeType":"YulFunctionCall","src":"1178:12:87"},"nativeSrc":"1178:12:87","nodeType":"YulExpressionStatement","src":"1178:12:87"}]},"condition":{"arguments":[{"name":"offset","nativeSrc":"1148:6:87","nodeType":"YulIdentifier","src":"1148:6:87"},{"arguments":[{"arguments":[{"kind":"number","nativeSrc":"1164:2:87","nodeType":"YulLiteral","src":"1164:2:87","type":"","value":"64"},{"kind":"number","nativeSrc":"1168:1:87","nodeType":"YulLiteral","src":"1168:1:87","type":"","value":"1"}],"functionName":{"name":"shl","nativeSrc":"1160:3:87","nodeType":"YulIdentifier","src":"1160:3:87"},"nativeSrc":"1160:10:87","nodeType":"YulFunctionCall","src":"1160:10:87"},{"kind":"number","nativeSrc":"1172:1:87","nodeType":"YulLiteral","src":"1172:1:87","type":"","value":"1"}],"functionName":{"name":"sub","nativeSrc":"1156:3:87","nodeType":"YulIdentifier","src":"1156:3:87"},"nativeSrc":"1156:18:87","nodeType":"YulFunctionCall","src":"1156:18:87"}],"functionName":{"name":"gt","nativeSrc":"1145:2:87","nodeType":"YulIdentifier","src":"1145:2:87"},"nativeSrc":"1145:30:87","nodeType":"YulFunctionCall","src":"1145:30:87"},"nativeSrc":"1142:50:87","nodeType":"YulIf","src":"1142:50:87"},{"nativeSrc":"1201:71:87","nodeType":"YulAssignment","src":"1201:71:87","value":{"arguments":[{"arguments":[{"name":"headStart","nativeSrc":"1244:9:87","nodeType":"YulIdentifier","src":"1244:9:87"},{"name":"offset","nativeSrc":"1255:6:87","nodeType":"YulIdentifier","src":"1255:6:87"}],"functionName":{"name":"add","nativeSrc":"1240:3:87","nodeType":"YulIdentifier","src":"1240:3:87"},"nativeSrc":"1240:22:87","nodeType":"YulFunctionCall","src":"1240:22:87"},{"name":"dataEnd","nativeSrc":"1264:7:87","nodeType":"YulIdentifier","src":"1264:7:87"}],"functionName":{"name":"abi_decode_string_fromMemory","nativeSrc":"1211:28:87","nodeType":"YulIdentifier","src":"1211:28:87"},"nativeSrc":"1211:61:87","nodeType":"YulFunctionCall","src":"1211:61:87"},"variableNames":[{"name":"value0","nativeSrc":"1201:6:87","nodeType":"YulIdentifier","src":"1201:6:87"}]},{"nativeSrc":"1281:41:87","nodeType":"YulVariableDeclaration","src":"1281:41:87","value":{"arguments":[{"arguments":[{"name":"headStart","nativeSrc":"1307:9:87","nodeType":"YulIdentifier","src":"1307:9:87"},{"kind":"number","nativeSrc":"1318:2:87","nodeType":"YulLiteral","src":"1318:2:87","type":"","value":"32"}],"functionName":{"name":"add","nativeSrc":"1303:3:87","nodeType":"YulIdentifier","src":"1303:3:87"},"nativeSrc":"1303:18:87","nodeType":"YulFunctionCall","src":"1303:18:87"}],"functionName":{"name":"mload","nativeSrc":"1297:5:87","nodeType":"YulIdentifier","src":"1297:5:87"},"nativeSrc":"1297:25:87","nodeType":"YulFunctionCall","src":"1297:25:87"},"variables":[{"name":"offset_1","nativeSrc":"1285:8:87","nodeType":"YulTypedName","src":"1285:8:87","type":""}]},{"body":{"nativeSrc":"1367:16:87","nodeType":"YulBlock","src":"1367:16:87","statements":[{"expression":{"arguments":[{"kind":"number","nativeSrc":"1376:1:87","nodeType":"YulLiteral","src":"1376:1:87","type":"","value":"0"},{"kind":"number","nativeSrc":"1379:1:87","nodeType":"YulLiteral","src":"1379:1:87","type":"","value":"0"}],"functionName":{"name":"revert","nativeSrc":"1369:6:87","nodeType":"YulIdentifier","src":"1369:6:87"},"nativeSrc":"1369:12:87","nodeType":"YulFunctionCall","src":"1369:12:87"},"nativeSrc":"1369:12:87","nodeType":"YulExpressionStatement","src":"1369:12:87"}]},"condition":{"arguments":[{"name":"offset_1","nativeSrc":"1337:8:87","nodeType":"YulIdentifier","src":"1337:8:87"},{"arguments":[{"arguments":[{"kind":"number","nativeSrc":"1355:2:87","nodeType":"YulLiteral","src":"1355:2:87","type":"","value":"64"},{"kind":"number","nativeSrc":"1359:1:87","nodeType":"YulLiteral","src":"1359:1:87","type":"","value":"1"}],"functionName":{"name":"shl","nativeSrc":"1351:3:87","nodeType":"YulIdentifier","src":"1351:3:87"},"nativeSrc":"1351:10:87","nodeType":"YulFunctionCall","src":"1351:10:87"},{"kind":"number","nativeSrc":"1363:1:87","nodeType":"YulLiteral","src":"1363:1:87","type":"","value":"1"}],"functionName":{"name":"sub","nativeSrc":"1347:3:87","nodeType":"YulIdentifier","src":"1347:3:87"},"nativeSrc":"1347:18:87","nodeType":"YulFunctionCall","src":"1347:18:87"}],"functionName":{"name":"gt","nativeSrc":"1334:2:87","nodeType":"YulIdentifier","src":"1334:2:87"},"nativeSrc":"1334:32:87","nodeType":"YulFunctionCall","src":"1334:32:87"},"nativeSrc":"1331:52:87","nodeType":"YulIf","src":"1331:52:87"},{"nativeSrc":"1392:73:87","nodeType":"YulAssignment","src":"1392:73:87","value":{"arguments":[{"arguments":[{"name":"headStart","nativeSrc":"1435:9:87","nodeType":"YulIdentifier","src":"1435:9:87"},{"name":"offset_1","nativeSrc":"1446:8:87","nodeType":"YulIdentifier","src":"1446:8:87"}],"functionName":{"name":"add","nativeSrc":"1431:3:87","nodeType":"YulIdentifier","src":"1431:3:87"},"nativeSrc":"1431:24:87","nodeType":"YulFunctionCall","src":"1431:24:87"},{"name":"dataEnd","nativeSrc":"1457:7:87","nodeType":"YulIdentifier","src":"1457:7:87"}],"functionName":{"name":"abi_decode_string_fromMemory","nativeSrc":"1402:28:87","nodeType":"YulIdentifier","src":"1402:28:87"},"nativeSrc":"1402:63:87","nodeType":"YulFunctionCall","src":"1402:63:87"},"variableNames":[{"name":"value1","nativeSrc":"1392:6:87","nodeType":"YulIdentifier","src":"1392:6:87"}]},{"nativeSrc":"1474:38:87","nodeType":"YulVariableDeclaration","src":"1474:38:87","value":{"arguments":[{"arguments":[{"name":"headStart","nativeSrc":"1497:9:87","nodeType":"YulIdentifier","src":"1497:9:87"},{"kind":"number","nativeSrc":"1508:2:87","nodeType":"YulLiteral","src":"1508:2:87","type":"","value":"64"}],"functionName":{"name":"add","nativeSrc":"1493:3:87","nodeType":"YulIdentifier","src":"1493:3:87"},"nativeSrc":"1493:18:87","nodeType":"YulFunctionCall","src":"1493:18:87"}],"functionName":{"name":"mload","nativeSrc":"1487:5:87","nodeType":"YulIdentifier","src":"1487:5:87"},"nativeSrc":"1487:25:87","nodeType":"YulFunctionCall","src":"1487:25:87"},"variables":[{"name":"value","nativeSrc":"1478:5:87","nodeType":"YulTypedName","src":"1478:5:87","type":""}]},{"body":{"nativeSrc":"1575:16:87","nodeType":"YulBlock","src":"1575:16:87","statements":[{"expression":{"arguments":[{"kind":"number","nativeSrc":"1584:1:87","nodeType":"YulLiteral","src":"1584:1:87","type":"","value":"0"},{"kind":"number","nativeSrc":"1587:1:87","nodeType":"YulLiteral","src":"1587:1:87","type":"","value":"0"}],"functionName":{"name":"revert","nativeSrc":"1577:6:87","nodeType":"YulIdentifier","src":"1577:6:87"},"nativeSrc":"1577:12:87","nodeType":"YulFunctionCall","src":"1577:12:87"},"nativeSrc":"1577:12:87","nodeType":"YulExpressionStatement","src":"1577:12:87"}]},"condition":{"arguments":[{"arguments":[{"name":"value","nativeSrc":"1534:5:87","nodeType":"YulIdentifier","src":"1534:5:87"},{"arguments":[{"name":"value","nativeSrc":"1545:5:87","nodeType":"YulIdentifier","src":"1545:5:87"},{"arguments":[{"arguments":[{"kind":"number","nativeSrc":"1560:3:87","nodeType":"YulLiteral","src":"1560:3:87","type":"","value":"160"},{"kind":"number","nativeSrc":"1565:1:87","nodeType":"YulLiteral","src":"1565:1:87","type":"","value":"1"}],"functionName":{"name":"shl","nativeSrc":"1556:3:87","nodeType":"YulIdentifier","src":"1556:3:87"},"nativeSrc":"1556:11:87","nodeType":"YulFunctionCall","src":"1556:11:87"},{"kind":"number","nativeSrc":"1569:1:87","nodeType":"YulLiteral","src":"1569:1:87","type":"","value":"1"}],"functionName":{"name":"sub","nativeSrc":"1552:3:87","nodeType":"YulIdentifier","src":"1552:3:87"},"nativeSrc":"1552:19:87","nodeType":"YulFunctionCall","src":"1552:19:87"}],"functionName":{"name":"and","nativeSrc":"1541:3:87","nodeType":"YulIdentifier","src":"1541:3:87"},"nativeSrc":"1541:31:87","nodeType":"YulFunctionCall","src":"1541:31:87"}],"functionName":{"name":"eq","nativeSrc":"1531:2:87","nodeType":"YulIdentifier","src":"1531:2:87"},"nativeSrc":"1531:42:87","nodeType":"YulFunctionCall","src":"1531:42:87"}],"functionName":{"name":"iszero","nativeSrc":"1524:6:87","nodeType":"YulIdentifier","src":"1524:6:87"},"nativeSrc":"1524:50:87","nodeType":"YulFunctionCall","src":"1524:50:87"},"nativeSrc":"1521:70:87","nodeType":"YulIf","src":"1521:70:87"},{"nativeSrc":"1600:15:87","nodeType":"YulAssignment","src":"1600:15:87","value":{"name":"value","nativeSrc":"1610:5:87","nodeType":"YulIdentifier","src":"1610:5:87"},"variableNames":[{"name":"value2","nativeSrc":"1600:6:87","nodeType":"YulIdentifier","src":"1600:6:87"}]}]},"name":"abi_decode_tuple_t_string_memory_ptrt_string_memory_ptrt_contract$_IERC20Metadata_$9411_fromMemory","nativeSrc":"874:747:87","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nativeSrc":"982:9:87","nodeType":"YulTypedName","src":"982:9:87","type":""},{"name":"dataEnd","nativeSrc":"993:7:87","nodeType":"YulTypedName","src":"993:7:87","type":""}],"returnVariables":[{"name":"value0","nativeSrc":"1005:6:87","nodeType":"YulTypedName","src":"1005:6:87","type":""},{"name":"value1","nativeSrc":"1013:6:87","nodeType":"YulTypedName","src":"1013:6:87","type":""},{"name":"value2","nativeSrc":"1021:6:87","nodeType":"YulTypedName","src":"1021:6:87","type":""}],"src":"874:747:87"},{"body":{"nativeSrc":"1681:325:87","nodeType":"YulBlock","src":"1681:325:87","statements":[{"nativeSrc":"1691:22:87","nodeType":"YulAssignment","src":"1691:22:87","value":{"arguments":[{"kind":"number","nativeSrc":"1705:1:87","nodeType":"YulLiteral","src":"1705:1:87","type":"","value":"1"},{"name":"data","nativeSrc":"1708:4:87","nodeType":"YulIdentifier","src":"1708:4:87"}],"functionName":{"name":"shr","nativeSrc":"1701:3:87","nodeType":"YulIdentifier","src":"1701:3:87"},"nativeSrc":"1701:12:87","nodeType":"YulFunctionCall","src":"1701:12:87"},"variableNames":[{"name":"length","nativeSrc":"1691:6:87","nodeType":"YulIdentifier","src":"1691:6:87"}]},{"nativeSrc":"1722:38:87","nodeType":"YulVariableDeclaration","src":"1722:38:87","value":{"arguments":[{"name":"data","nativeSrc":"1752:4:87","nodeType":"YulIdentifier","src":"1752:4:87"},{"kind":"number","nativeSrc":"1758:1:87","nodeType":"YulLiteral","src":"1758:1:87","type":"","value":"1"}],"functionName":{"name":"and","nativeSrc":"1748:3:87","nodeType":"YulIdentifier","src":"1748:3:87"},"nativeSrc":"1748:12:87","nodeType":"YulFunctionCall","src":"1748:12:87"},"variables":[{"name":"outOfPlaceEncoding","nativeSrc":"1726:18:87","nodeType":"YulTypedName","src":"1726:18:87","type":""}]},{"body":{"nativeSrc":"1799:31:87","nodeType":"YulBlock","src":"1799:31:87","statements":[{"nativeSrc":"1801:27:87","nodeType":"YulAssignment","src":"1801:27:87","value":{"arguments":[{"name":"length","nativeSrc":"1815:6:87","nodeType":"YulIdentifier","src":"1815:6:87"},{"kind":"number","nativeSrc":"1823:4:87","nodeType":"YulLiteral","src":"1823:4:87","type":"","value":"0x7f"}],"functionName":{"name":"and","nativeSrc":"1811:3:87","nodeType":"YulIdentifier","src":"1811:3:87"},"nativeSrc":"1811:17:87","nodeType":"YulFunctionCall","src":"1811:17:87"},"variableNames":[{"name":"length","nativeSrc":"1801:6:87","nodeType":"YulIdentifier","src":"1801:6:87"}]}]},"condition":{"arguments":[{"name":"outOfPlaceEncoding","nativeSrc":"1779:18:87","nodeType":"YulIdentifier","src":"1779:18:87"}],"functionName":{"name":"iszero","nativeSrc":"1772:6:87","nodeType":"YulIdentifier","src":"1772:6:87"},"nativeSrc":"1772:26:87","nodeType":"YulFunctionCall","src":"1772:26:87"},"nativeSrc":"1769:61:87","nodeType":"YulIf","src":"1769:61:87"},{"body":{"nativeSrc":"1889:111:87","nodeType":"YulBlock","src":"1889:111:87","statements":[{"expression":{"arguments":[{"kind":"number","nativeSrc":"1910:1:87","nodeType":"YulLiteral","src":"1910:1:87","type":"","value":"0"},{"arguments":[{"kind":"number","nativeSrc":"1917:3:87","nodeType":"YulLiteral","src":"1917:3:87","type":"","value":"224"},{"kind":"number","nativeSrc":"1922:10:87","nodeType":"YulLiteral","src":"1922:10:87","type":"","value":"0x4e487b71"}],"functionName":{"name":"shl","nativeSrc":"1913:3:87","nodeType":"YulIdentifier","src":"1913:3:87"},"nativeSrc":"1913:20:87","nodeType":"YulFunctionCall","src":"1913:20:87"}],"functionName":{"name":"mstore","nativeSrc":"1903:6:87","nodeType":"YulIdentifier","src":"1903:6:87"},"nativeSrc":"1903:31:87","nodeType":"YulFunctionCall","src":"1903:31:87"},"nativeSrc":"1903:31:87","nodeType":"YulExpressionStatement","src":"1903:31:87"},{"expression":{"arguments":[{"kind":"number","nativeSrc":"1954:1:87","nodeType":"YulLiteral","src":"1954:1:87","type":"","value":"4"},{"kind":"number","nativeSrc":"1957:4:87","nodeType":"YulLiteral","src":"1957:4:87","type":"","value":"0x22"}],"functionName":{"name":"mstore","nativeSrc":"1947:6:87","nodeType":"YulIdentifier","src":"1947:6:87"},"nativeSrc":"1947:15:87","nodeType":"YulFunctionCall","src":"1947:15:87"},"nativeSrc":"1947:15:87","nodeType":"YulExpressionStatement","src":"1947:15:87"},{"expression":{"arguments":[{"kind":"number","nativeSrc":"1982:1:87","nodeType":"YulLiteral","src":"1982:1:87","type":"","value":"0"},{"kind":"number","nativeSrc":"1985:4:87","nodeType":"YulLiteral","src":"1985:4:87","type":"","value":"0x24"}],"functionName":{"name":"revert","nativeSrc":"1975:6:87","nodeType":"YulIdentifier","src":"1975:6:87"},"nativeSrc":"1975:15:87","nodeType":"YulFunctionCall","src":"1975:15:87"},"nativeSrc":"1975:15:87","nodeType":"YulExpressionStatement","src":"1975:15:87"}]},"condition":{"arguments":[{"name":"outOfPlaceEncoding","nativeSrc":"1845:18:87","nodeType":"YulIdentifier","src":"1845:18:87"},{"arguments":[{"name":"length","nativeSrc":"1868:6:87","nodeType":"YulIdentifier","src":"1868:6:87"},{"kind":"number","nativeSrc":"1876:2:87","nodeType":"YulLiteral","src":"1876:2:87","type":"","value":"32"}],"functionName":{"name":"lt","nativeSrc":"1865:2:87","nodeType":"YulIdentifier","src":"1865:2:87"},"nativeSrc":"1865:14:87","nodeType":"YulFunctionCall","src":"1865:14:87"}],"functionName":{"name":"eq","nativeSrc":"1842:2:87","nodeType":"YulIdentifier","src":"1842:2:87"},"nativeSrc":"1842:38:87","nodeType":"YulFunctionCall","src":"1842:38:87"},"nativeSrc":"1839:161:87","nodeType":"YulIf","src":"1839:161:87"}]},"name":"extract_byte_array_length","nativeSrc":"1626:380:87","nodeType":"YulFunctionDefinition","parameters":[{"name":"data","nativeSrc":"1661:4:87","nodeType":"YulTypedName","src":"1661:4:87","type":""}],"returnVariables":[{"name":"length","nativeSrc":"1670:6:87","nodeType":"YulTypedName","src":"1670:6:87","type":""}],"src":"1626:380:87"},{"body":{"nativeSrc":"2067:65:87","nodeType":"YulBlock","src":"2067:65:87","statements":[{"expression":{"arguments":[{"kind":"number","nativeSrc":"2084:1:87","nodeType":"YulLiteral","src":"2084:1:87","type":"","value":"0"},{"name":"ptr","nativeSrc":"2087:3:87","nodeType":"YulIdentifier","src":"2087:3:87"}],"functionName":{"name":"mstore","nativeSrc":"2077:6:87","nodeType":"YulIdentifier","src":"2077:6:87"},"nativeSrc":"2077:14:87","nodeType":"YulFunctionCall","src":"2077:14:87"},"nativeSrc":"2077:14:87","nodeType":"YulExpressionStatement","src":"2077:14:87"},{"nativeSrc":"2100:26:87","nodeType":"YulAssignment","src":"2100:26:87","value":{"arguments":[{"kind":"number","nativeSrc":"2118:1:87","nodeType":"YulLiteral","src":"2118:1:87","type":"","value":"0"},{"kind":"number","nativeSrc":"2121:4:87","nodeType":"YulLiteral","src":"2121:4:87","type":"","value":"0x20"}],"functionName":{"name":"keccak256","nativeSrc":"2108:9:87","nodeType":"YulIdentifier","src":"2108:9:87"},"nativeSrc":"2108:18:87","nodeType":"YulFunctionCall","src":"2108:18:87"},"variableNames":[{"name":"data","nativeSrc":"2100:4:87","nodeType":"YulIdentifier","src":"2100:4:87"}]}]},"name":"array_dataslot_string_storage","nativeSrc":"2011:121:87","nodeType":"YulFunctionDefinition","parameters":[{"name":"ptr","nativeSrc":"2050:3:87","nodeType":"YulTypedName","src":"2050:3:87","type":""}],"returnVariables":[{"name":"data","nativeSrc":"2058:4:87","nodeType":"YulTypedName","src":"2058:4:87","type":""}],"src":"2011:121:87"},{"body":{"nativeSrc":"2218:437:87","nodeType":"YulBlock","src":"2218:437:87","statements":[{"body":{"nativeSrc":"2251:398:87","nodeType":"YulBlock","src":"2251:398:87","statements":[{"expression":{"arguments":[{"kind":"number","nativeSrc":"2272:1:87","nodeType":"YulLiteral","src":"2272:1:87","type":"","value":"0"},{"name":"array","nativeSrc":"2275:5:87","nodeType":"YulIdentifier","src":"2275:5:87"}],"functionName":{"name":"mstore","nativeSrc":"2265:6:87","nodeType":"YulIdentifier","src":"2265:6:87"},"nativeSrc":"2265:16:87","nodeType":"YulFunctionCall","src":"2265:16:87"},"nativeSrc":"2265:16:87","nodeType":"YulExpressionStatement","src":"2265:16:87"},{"nativeSrc":"2294:30:87","nodeType":"YulVariableDeclaration","src":"2294:30:87","value":{"arguments":[{"kind":"number","nativeSrc":"2316:1:87","nodeType":"YulLiteral","src":"2316:1:87","type":"","value":"0"},{"kind":"number","nativeSrc":"2319:4:87","nodeType":"YulLiteral","src":"2319:4:87","type":"","value":"0x20"}],"functionName":{"name":"keccak256","nativeSrc":"2306:9:87","nodeType":"YulIdentifier","src":"2306:9:87"},"nativeSrc":"2306:18:87","nodeType":"YulFunctionCall","src":"2306:18:87"},"variables":[{"name":"data","nativeSrc":"2298:4:87","nodeType":"YulTypedName","src":"2298:4:87","type":""}]},{"nativeSrc":"2337:57:87","nodeType":"YulVariableDeclaration","src":"2337:57:87","value":{"arguments":[{"name":"data","nativeSrc":"2360:4:87","nodeType":"YulIdentifier","src":"2360:4:87"},{"arguments":[{"kind":"number","nativeSrc":"2370:1:87","nodeType":"YulLiteral","src":"2370:1:87","type":"","value":"5"},{"arguments":[{"name":"startIndex","nativeSrc":"2377:10:87","nodeType":"YulIdentifier","src":"2377:10:87"},{"kind":"number","nativeSrc":"2389:2:87","nodeType":"YulLiteral","src":"2389:2:87","type":"","value":"31"}],"functionName":{"name":"add","nativeSrc":"2373:3:87","nodeType":"YulIdentifier","src":"2373:3:87"},"nativeSrc":"2373:19:87","nodeType":"YulFunctionCall","src":"2373:19:87"}],"functionName":{"name":"shr","nativeSrc":"2366:3:87","nodeType":"YulIdentifier","src":"2366:3:87"},"nativeSrc":"2366:27:87","nodeType":"YulFunctionCall","src":"2366:27:87"}],"functionName":{"name":"add","nativeSrc":"2356:3:87","nodeType":"YulIdentifier","src":"2356:3:87"},"nativeSrc":"2356:38:87","nodeType":"YulFunctionCall","src":"2356:38:87"},"variables":[{"name":"deleteStart","nativeSrc":"2341:11:87","nodeType":"YulTypedName","src":"2341:11:87","type":""}]},{"body":{"nativeSrc":"2431:23:87","nodeType":"YulBlock","src":"2431:23:87","statements":[{"nativeSrc":"2433:19:87","nodeType":"YulAssignment","src":"2433:19:87","value":{"name":"data","nativeSrc":"2448:4:87","nodeType":"YulIdentifier","src":"2448:4:87"},"variableNames":[{"name":"deleteStart","nativeSrc":"2433:11:87","nodeType":"YulIdentifier","src":"2433:11:87"}]}]},"condition":{"arguments":[{"name":"startIndex","nativeSrc":"2413:10:87","nodeType":"YulIdentifier","src":"2413:10:87"},{"kind":"number","nativeSrc":"2425:4:87","nodeType":"YulLiteral","src":"2425:4:87","type":"","value":"0x20"}],"functionName":{"name":"lt","nativeSrc":"2410:2:87","nodeType":"YulIdentifier","src":"2410:2:87"},"nativeSrc":"2410:20:87","nodeType":"YulFunctionCall","src":"2410:20:87"},"nativeSrc":"2407:47:87","nodeType":"YulIf","src":"2407:47:87"},{"nativeSrc":"2467:41:87","nodeType":"YulVariableDeclaration","src":"2467:41:87","value":{"arguments":[{"name":"data","nativeSrc":"2481:4:87","nodeType":"YulIdentifier","src":"2481:4:87"},{"arguments":[{"kind":"number","nativeSrc":"2491:1:87","nodeType":"YulLiteral","src":"2491:1:87","type":"","value":"5"},{"arguments":[{"name":"len","nativeSrc":"2498:3:87","nodeType":"YulIdentifier","src":"2498:3:87"},{"kind":"number","nativeSrc":"2503:2:87","nodeType":"YulLiteral","src":"2503:2:87","type":"","value":"31"}],"functionName":{"name":"add","nativeSrc":"2494:3:87","nodeType":"YulIdentifier","src":"2494:3:87"},"nativeSrc":"2494:12:87","nodeType":"YulFunctionCall","src":"2494:12:87"}],"functionName":{"name":"shr","nativeSrc":"2487:3:87","nodeType":"YulIdentifier","src":"2487:3:87"},"nativeSrc":"2487:20:87","nodeType":"YulFunctionCall","src":"2487:20:87"}],"functionName":{"name":"add","nativeSrc":"2477:3:87","nodeType":"YulIdentifier","src":"2477:3:87"},"nativeSrc":"2477:31:87","nodeType":"YulFunctionCall","src":"2477:31:87"},"variables":[{"name":"_1","nativeSrc":"2471:2:87","nodeType":"YulTypedName","src":"2471:2:87","type":""}]},{"nativeSrc":"2521:24:87","nodeType":"YulVariableDeclaration","src":"2521:24:87","value":{"name":"deleteStart","nativeSrc":"2534:11:87","nodeType":"YulIdentifier","src":"2534:11:87"},"variables":[{"name":"start","nativeSrc":"2525:5:87","nodeType":"YulTypedName","src":"2525:5:87","type":""}]},{"body":{"nativeSrc":"2619:20:87","nodeType":"YulBlock","src":"2619:20:87","statements":[{"expression":{"arguments":[{"name":"start","nativeSrc":"2628:5:87","nodeType":"YulIdentifier","src":"2628:5:87"},{"kind":"number","nativeSrc":"2635:1:87","nodeType":"YulLiteral","src":"2635:1:87","type":"","value":"0"}],"functionName":{"name":"sstore","nativeSrc":"2621:6:87","nodeType":"YulIdentifier","src":"2621:6:87"},"nativeSrc":"2621:16:87","nodeType":"YulFunctionCall","src":"2621:16:87"},"nativeSrc":"2621:16:87","nodeType":"YulExpressionStatement","src":"2621:16:87"}]},"condition":{"arguments":[{"name":"start","nativeSrc":"2569:5:87","nodeType":"YulIdentifier","src":"2569:5:87"},{"name":"_1","nativeSrc":"2576:2:87","nodeType":"YulIdentifier","src":"2576:2:87"}],"functionName":{"name":"lt","nativeSrc":"2566:2:87","nodeType":"YulIdentifier","src":"2566:2:87"},"nativeSrc":"2566:13:87","nodeType":"YulFunctionCall","src":"2566:13:87"},"nativeSrc":"2558:81:87","nodeType":"YulForLoop","post":{"nativeSrc":"2580:26:87","nodeType":"YulBlock","src":"2580:26:87","statements":[{"nativeSrc":"2582:22:87","nodeType":"YulAssignment","src":"2582:22:87","value":{"arguments":[{"name":"start","nativeSrc":"2595:5:87","nodeType":"YulIdentifier","src":"2595:5:87"},{"kind":"number","nativeSrc":"2602:1:87","nodeType":"YulLiteral","src":"2602:1:87","type":"","value":"1"}],"functionName":{"name":"add","nativeSrc":"2591:3:87","nodeType":"YulIdentifier","src":"2591:3:87"},"nativeSrc":"2591:13:87","nodeType":"YulFunctionCall","src":"2591:13:87"},"variableNames":[{"name":"start","nativeSrc":"2582:5:87","nodeType":"YulIdentifier","src":"2582:5:87"}]}]},"pre":{"nativeSrc":"2562:3:87","nodeType":"YulBlock","src":"2562:3:87","statements":[]},"src":"2558:81:87"}]},"condition":{"arguments":[{"name":"len","nativeSrc":"2234:3:87","nodeType":"YulIdentifier","src":"2234:3:87"},{"kind":"number","nativeSrc":"2239:2:87","nodeType":"YulLiteral","src":"2239:2:87","type":"","value":"31"}],"functionName":{"name":"gt","nativeSrc":"2231:2:87","nodeType":"YulIdentifier","src":"2231:2:87"},"nativeSrc":"2231:11:87","nodeType":"YulFunctionCall","src":"2231:11:87"},"nativeSrc":"2228:421:87","nodeType":"YulIf","src":"2228:421:87"}]},"name":"clean_up_bytearray_end_slots_string_storage","nativeSrc":"2137:518:87","nodeType":"YulFunctionDefinition","parameters":[{"name":"array","nativeSrc":"2190:5:87","nodeType":"YulTypedName","src":"2190:5:87","type":""},{"name":"len","nativeSrc":"2197:3:87","nodeType":"YulTypedName","src":"2197:3:87","type":""},{"name":"startIndex","nativeSrc":"2202:10:87","nodeType":"YulTypedName","src":"2202:10:87","type":""}],"src":"2137:518:87"},{"body":{"nativeSrc":"2745:81:87","nodeType":"YulBlock","src":"2745:81:87","statements":[{"nativeSrc":"2755:65:87","nodeType":"YulAssignment","src":"2755:65:87","value":{"arguments":[{"arguments":[{"name":"data","nativeSrc":"2770:4:87","nodeType":"YulIdentifier","src":"2770:4:87"},{"arguments":[{"arguments":[{"arguments":[{"kind":"number","nativeSrc":"2788:1:87","nodeType":"YulLiteral","src":"2788:1:87","type":"","value":"3"},{"name":"len","nativeSrc":"2791:3:87","nodeType":"YulIdentifier","src":"2791:3:87"}],"functionName":{"name":"shl","nativeSrc":"2784:3:87","nodeType":"YulIdentifier","src":"2784:3:87"},"nativeSrc":"2784:11:87","nodeType":"YulFunctionCall","src":"2784:11:87"},{"arguments":[{"kind":"number","nativeSrc":"2801:1:87","nodeType":"YulLiteral","src":"2801:1:87","type":"","value":"0"}],"functionName":{"name":"not","nativeSrc":"2797:3:87","nodeType":"YulIdentifier","src":"2797:3:87"},"nativeSrc":"2797:6:87","nodeType":"YulFunctionCall","src":"2797:6:87"}],"functionName":{"name":"shr","nativeSrc":"2780:3:87","nodeType":"YulIdentifier","src":"2780:3:87"},"nativeSrc":"2780:24:87","nodeType":"YulFunctionCall","src":"2780:24:87"}],"functionName":{"name":"not","nativeSrc":"2776:3:87","nodeType":"YulIdentifier","src":"2776:3:87"},"nativeSrc":"2776:29:87","nodeType":"YulFunctionCall","src":"2776:29:87"}],"functionName":{"name":"and","nativeSrc":"2766:3:87","nodeType":"YulIdentifier","src":"2766:3:87"},"nativeSrc":"2766:40:87","nodeType":"YulFunctionCall","src":"2766:40:87"},{"arguments":[{"kind":"number","nativeSrc":"2812:1:87","nodeType":"YulLiteral","src":"2812:1:87","type":"","value":"1"},{"name":"len","nativeSrc":"2815:3:87","nodeType":"YulIdentifier","src":"2815:3:87"}],"functionName":{"name":"shl","nativeSrc":"2808:3:87","nodeType":"YulIdentifier","src":"2808:3:87"},"nativeSrc":"2808:11:87","nodeType":"YulFunctionCall","src":"2808:11:87"}],"functionName":{"name":"or","nativeSrc":"2763:2:87","nodeType":"YulIdentifier","src":"2763:2:87"},"nativeSrc":"2763:57:87","nodeType":"YulFunctionCall","src":"2763:57:87"},"variableNames":[{"name":"used","nativeSrc":"2755:4:87","nodeType":"YulIdentifier","src":"2755:4:87"}]}]},"name":"extract_used_part_and_set_length_of_short_byte_array","nativeSrc":"2660:166:87","nodeType":"YulFunctionDefinition","parameters":[{"name":"data","nativeSrc":"2722:4:87","nodeType":"YulTypedName","src":"2722:4:87","type":""},{"name":"len","nativeSrc":"2728:3:87","nodeType":"YulTypedName","src":"2728:3:87","type":""}],"returnVariables":[{"name":"used","nativeSrc":"2736:4:87","nodeType":"YulTypedName","src":"2736:4:87","type":""}],"src":"2660:166:87"},{"body":{"nativeSrc":"2927:1203:87","nodeType":"YulBlock","src":"2927:1203:87","statements":[{"nativeSrc":"2937:24:87","nodeType":"YulVariableDeclaration","src":"2937:24:87","value":{"arguments":[{"name":"src","nativeSrc":"2957:3:87","nodeType":"YulIdentifier","src":"2957:3:87"}],"functionName":{"name":"mload","nativeSrc":"2951:5:87","nodeType":"YulIdentifier","src":"2951:5:87"},"nativeSrc":"2951:10:87","nodeType":"YulFunctionCall","src":"2951:10:87"},"variables":[{"name":"newLen","nativeSrc":"2941:6:87","nodeType":"YulTypedName","src":"2941:6:87","type":""}]},{"body":{"nativeSrc":"3004:22:87","nodeType":"YulBlock","src":"3004:22:87","statements":[{"expression":{"arguments":[],"functionName":{"name":"panic_error_0x41","nativeSrc":"3006:16:87","nodeType":"YulIdentifier","src":"3006:16:87"},"nativeSrc":"3006:18:87","nodeType":"YulFunctionCall","src":"3006:18:87"},"nativeSrc":"3006:18:87","nodeType":"YulExpressionStatement","src":"3006:18:87"}]},"condition":{"arguments":[{"name":"newLen","nativeSrc":"2976:6:87","nodeType":"YulIdentifier","src":"2976:6:87"},{"arguments":[{"arguments":[{"kind":"number","nativeSrc":"2992:2:87","nodeType":"YulLiteral","src":"2992:2:87","type":"","value":"64"},{"kind":"number","nativeSrc":"2996:1:87","nodeType":"YulLiteral","src":"2996:1:87","type":"","value":"1"}],"functionName":{"name":"shl","nativeSrc":"2988:3:87","nodeType":"YulIdentifier","src":"2988:3:87"},"nativeSrc":"2988:10:87","nodeType":"YulFunctionCall","src":"2988:10:87"},{"kind":"number","nativeSrc":"3000:1:87","nodeType":"YulLiteral","src":"3000:1:87","type":"","value":"1"}],"functionName":{"name":"sub","nativeSrc":"2984:3:87","nodeType":"YulIdentifier","src":"2984:3:87"},"nativeSrc":"2984:18:87","nodeType":"YulFunctionCall","src":"2984:18:87"}],"functionName":{"name":"gt","nativeSrc":"2973:2:87","nodeType":"YulIdentifier","src":"2973:2:87"},"nativeSrc":"2973:30:87","nodeType":"YulFunctionCall","src":"2973:30:87"},"nativeSrc":"2970:56:87","nodeType":"YulIf","src":"2970:56:87"},{"expression":{"arguments":[{"name":"slot","nativeSrc":"3079:4:87","nodeType":"YulIdentifier","src":"3079:4:87"},{"arguments":[{"arguments":[{"name":"slot","nativeSrc":"3117:4:87","nodeType":"YulIdentifier","src":"3117:4:87"}],"functionName":{"name":"sload","nativeSrc":"3111:5:87","nodeType":"YulIdentifier","src":"3111:5:87"},"nativeSrc":"3111:11:87","nodeType":"YulFunctionCall","src":"3111:11:87"}],"functionName":{"name":"extract_byte_array_length","nativeSrc":"3085:25:87","nodeType":"YulIdentifier","src":"3085:25:87"},"nativeSrc":"3085:38:87","nodeType":"YulFunctionCall","src":"3085:38:87"},{"name":"newLen","nativeSrc":"3125:6:87","nodeType":"YulIdentifier","src":"3125:6:87"}],"functionName":{"name":"clean_up_bytearray_end_slots_string_storage","nativeSrc":"3035:43:87","nodeType":"YulIdentifier","src":"3035:43:87"},"nativeSrc":"3035:97:87","nodeType":"YulFunctionCall","src":"3035:97:87"},"nativeSrc":"3035:97:87","nodeType":"YulExpressionStatement","src":"3035:97:87"},{"nativeSrc":"3141:18:87","nodeType":"YulVariableDeclaration","src":"3141:18:87","value":{"kind":"number","nativeSrc":"3158:1:87","nodeType":"YulLiteral","src":"3158:1:87","type":"","value":"0"},"variables":[{"name":"srcOffset","nativeSrc":"3145:9:87","nodeType":"YulTypedName","src":"3145:9:87","type":""}]},{"nativeSrc":"3168:17:87","nodeType":"YulAssignment","src":"3168:17:87","value":{"kind":"number","nativeSrc":"3181:4:87","nodeType":"YulLiteral","src":"3181:4:87","type":"","value":"0x20"},"variableNames":[{"name":"srcOffset","nativeSrc":"3168:9:87","nodeType":"YulIdentifier","src":"3168:9:87"}]},{"cases":[{"body":{"nativeSrc":"3231:642:87","nodeType":"YulBlock","src":"3231:642:87","statements":[{"nativeSrc":"3245:35:87","nodeType":"YulVariableDeclaration","src":"3245:35:87","value":{"arguments":[{"name":"newLen","nativeSrc":"3264:6:87","nodeType":"YulIdentifier","src":"3264:6:87"},{"arguments":[{"kind":"number","nativeSrc":"3276:2:87","nodeType":"YulLiteral","src":"3276:2:87","type":"","value":"31"}],"functionName":{"name":"not","nativeSrc":"3272:3:87","nodeType":"YulIdentifier","src":"3272:3:87"},"nativeSrc":"3272:7:87","nodeType":"YulFunctionCall","src":"3272:7:87"}],"functionName":{"name":"and","nativeSrc":"3260:3:87","nodeType":"YulIdentifier","src":"3260:3:87"},"nativeSrc":"3260:20:87","nodeType":"YulFunctionCall","src":"3260:20:87"},"variables":[{"name":"loopEnd","nativeSrc":"3249:7:87","nodeType":"YulTypedName","src":"3249:7:87","type":""}]},{"nativeSrc":"3293:49:87","nodeType":"YulVariableDeclaration","src":"3293:49:87","value":{"arguments":[{"name":"slot","nativeSrc":"3337:4:87","nodeType":"YulIdentifier","src":"3337:4:87"}],"functionName":{"name":"array_dataslot_string_storage","nativeSrc":"3307:29:87","nodeType":"YulIdentifier","src":"3307:29:87"},"nativeSrc":"3307:35:87","nodeType":"YulFunctionCall","src":"3307:35:87"},"variables":[{"name":"dstPtr","nativeSrc":"3297:6:87","nodeType":"YulTypedName","src":"3297:6:87","type":""}]},{"nativeSrc":"3355:10:87","nodeType":"YulVariableDeclaration","src":"3355:10:87","value":{"kind":"number","nativeSrc":"3364:1:87","nodeType":"YulLiteral","src":"3364:1:87","type":"","value":"0"},"variables":[{"name":"i","nativeSrc":"3359:1:87","nodeType":"YulTypedName","src":"3359:1:87","type":""}]},{"body":{"nativeSrc":"3435:165:87","nodeType":"YulBlock","src":"3435:165:87","statements":[{"expression":{"arguments":[{"name":"dstPtr","nativeSrc":"3460:6:87","nodeType":"YulIdentifier","src":"3460:6:87"},{"arguments":[{"arguments":[{"name":"src","nativeSrc":"3478:3:87","nodeType":"YulIdentifier","src":"3478:3:87"},{"name":"srcOffset","nativeSrc":"3483:9:87","nodeType":"YulIdentifier","src":"3483:9:87"}],"functionName":{"name":"add","nativeSrc":"3474:3:87","nodeType":"YulIdentifier","src":"3474:3:87"},"nativeSrc":"3474:19:87","nodeType":"YulFunctionCall","src":"3474:19:87"}],"functionName":{"name":"mload","nativeSrc":"3468:5:87","nodeType":"YulIdentifier","src":"3468:5:87"},"nativeSrc":"3468:26:87","nodeType":"YulFunctionCall","src":"3468:26:87"}],"functionName":{"name":"sstore","nativeSrc":"3453:6:87","nodeType":"YulIdentifier","src":"3453:6:87"},"nativeSrc":"3453:42:87","nodeType":"YulFunctionCall","src":"3453:42:87"},"nativeSrc":"3453:42:87","nodeType":"YulExpressionStatement","src":"3453:42:87"},{"nativeSrc":"3512:24:87","nodeType":"YulAssignment","src":"3512:24:87","value":{"arguments":[{"name":"dstPtr","nativeSrc":"3526:6:87","nodeType":"YulIdentifier","src":"3526:6:87"},{"kind":"number","nativeSrc":"3534:1:87","nodeType":"YulLiteral","src":"3534:1:87","type":"","value":"1"}],"functionName":{"name":"add","nativeSrc":"3522:3:87","nodeType":"YulIdentifier","src":"3522:3:87"},"nativeSrc":"3522:14:87","nodeType":"YulFunctionCall","src":"3522:14:87"},"variableNames":[{"name":"dstPtr","nativeSrc":"3512:6:87","nodeType":"YulIdentifier","src":"3512:6:87"}]},{"nativeSrc":"3553:33:87","nodeType":"YulAssignment","src":"3553:33:87","value":{"arguments":[{"name":"srcOffset","nativeSrc":"3570:9:87","nodeType":"YulIdentifier","src":"3570:9:87"},{"kind":"number","nativeSrc":"3581:4:87","nodeType":"YulLiteral","src":"3581:4:87","type":"","value":"0x20"}],"functionName":{"name":"add","nativeSrc":"3566:3:87","nodeType":"YulIdentifier","src":"3566:3:87"},"nativeSrc":"3566:20:87","nodeType":"YulFunctionCall","src":"3566:20:87"},"variableNames":[{"name":"srcOffset","nativeSrc":"3553:9:87","nodeType":"YulIdentifier","src":"3553:9:87"}]}]},"condition":{"arguments":[{"name":"i","nativeSrc":"3389:1:87","nodeType":"YulIdentifier","src":"3389:1:87"},{"name":"loopEnd","nativeSrc":"3392:7:87","nodeType":"YulIdentifier","src":"3392:7:87"}],"functionName":{"name":"lt","nativeSrc":"3386:2:87","nodeType":"YulIdentifier","src":"3386:2:87"},"nativeSrc":"3386:14:87","nodeType":"YulFunctionCall","src":"3386:14:87"},"nativeSrc":"3378:222:87","nodeType":"YulForLoop","post":{"nativeSrc":"3401:21:87","nodeType":"YulBlock","src":"3401:21:87","statements":[{"nativeSrc":"3403:17:87","nodeType":"YulAssignment","src":"3403:17:87","value":{"arguments":[{"name":"i","nativeSrc":"3412:1:87","nodeType":"YulIdentifier","src":"3412:1:87"},{"kind":"number","nativeSrc":"3415:4:87","nodeType":"YulLiteral","src":"3415:4:87","type":"","value":"0x20"}],"functionName":{"name":"add","nativeSrc":"3408:3:87","nodeType":"YulIdentifier","src":"3408:3:87"},"nativeSrc":"3408:12:87","nodeType":"YulFunctionCall","src":"3408:12:87"},"variableNames":[{"name":"i","nativeSrc":"3403:1:87","nodeType":"YulIdentifier","src":"3403:1:87"}]}]},"pre":{"nativeSrc":"3382:3:87","nodeType":"YulBlock","src":"3382:3:87","statements":[]},"src":"3378:222:87"},{"body":{"nativeSrc":"3648:166:87","nodeType":"YulBlock","src":"3648:166:87","statements":[{"nativeSrc":"3666:43:87","nodeType":"YulVariableDeclaration","src":"3666:43:87","value":{"arguments":[{"arguments":[{"name":"src","nativeSrc":"3693:3:87","nodeType":"YulIdentifier","src":"3693:3:87"},{"name":"srcOffset","nativeSrc":"3698:9:87","nodeType":"YulIdentifier","src":"3698:9:87"}],"functionName":{"name":"add","nativeSrc":"3689:3:87","nodeType":"YulIdentifier","src":"3689:3:87"},"nativeSrc":"3689:19:87","nodeType":"YulFunctionCall","src":"3689:19:87"}],"functionName":{"name":"mload","nativeSrc":"3683:5:87","nodeType":"YulIdentifier","src":"3683:5:87"},"nativeSrc":"3683:26:87","nodeType":"YulFunctionCall","src":"3683:26:87"},"variables":[{"name":"lastValue","nativeSrc":"3670:9:87","nodeType":"YulTypedName","src":"3670:9:87","type":""}]},{"expression":{"arguments":[{"name":"dstPtr","nativeSrc":"3733:6:87","nodeType":"YulIdentifier","src":"3733:6:87"},{"arguments":[{"name":"lastValue","nativeSrc":"3745:9:87","nodeType":"YulIdentifier","src":"3745:9:87"},{"arguments":[{"arguments":[{"arguments":[{"arguments":[{"kind":"number","nativeSrc":"3772:1:87","nodeType":"YulLiteral","src":"3772:1:87","type":"","value":"3"},{"name":"newLen","nativeSrc":"3775:6:87","nodeType":"YulIdentifier","src":"3775:6:87"}],"functionName":{"name":"shl","nativeSrc":"3768:3:87","nodeType":"YulIdentifier","src":"3768:3:87"},"nativeSrc":"3768:14:87","nodeType":"YulFunctionCall","src":"3768:14:87"},{"kind":"number","nativeSrc":"3784:3:87","nodeType":"YulLiteral","src":"3784:3:87","type":"","value":"248"}],"functionName":{"name":"and","nativeSrc":"3764:3:87","nodeType":"YulIdentifier","src":"3764:3:87"},"nativeSrc":"3764:24:87","nodeType":"YulFunctionCall","src":"3764:24:87"},{"arguments":[{"kind":"number","nativeSrc":"3794:1:87","nodeType":"YulLiteral","src":"3794:1:87","type":"","value":"0"}],"functionName":{"name":"not","nativeSrc":"3790:3:87","nodeType":"YulIdentifier","src":"3790:3:87"},"nativeSrc":"3790:6:87","nodeType":"YulFunctionCall","src":"3790:6:87"}],"functionName":{"name":"shr","nativeSrc":"3760:3:87","nodeType":"YulIdentifier","src":"3760:3:87"},"nativeSrc":"3760:37:87","nodeType":"YulFunctionCall","src":"3760:37:87"}],"functionName":{"name":"not","nativeSrc":"3756:3:87","nodeType":"YulIdentifier","src":"3756:3:87"},"nativeSrc":"3756:42:87","nodeType":"YulFunctionCall","src":"3756:42:87"}],"functionName":{"name":"and","nativeSrc":"3741:3:87","nodeType":"YulIdentifier","src":"3741:3:87"},"nativeSrc":"3741:58:87","nodeType":"YulFunctionCall","src":"3741:58:87"}],"functionName":{"name":"sstore","nativeSrc":"3726:6:87","nodeType":"YulIdentifier","src":"3726:6:87"},"nativeSrc":"3726:74:87","nodeType":"YulFunctionCall","src":"3726:74:87"},"nativeSrc":"3726:74:87","nodeType":"YulExpressionStatement","src":"3726:74:87"}]},"condition":{"arguments":[{"name":"loopEnd","nativeSrc":"3619:7:87","nodeType":"YulIdentifier","src":"3619:7:87"},{"name":"newLen","nativeSrc":"3628:6:87","nodeType":"YulIdentifier","src":"3628:6:87"}],"functionName":{"name":"lt","nativeSrc":"3616:2:87","nodeType":"YulIdentifier","src":"3616:2:87"},"nativeSrc":"3616:19:87","nodeType":"YulFunctionCall","src":"3616:19:87"},"nativeSrc":"3613:201:87","nodeType":"YulIf","src":"3613:201:87"},{"expression":{"arguments":[{"name":"slot","nativeSrc":"3834:4:87","nodeType":"YulIdentifier","src":"3834:4:87"},{"arguments":[{"arguments":[{"kind":"number","nativeSrc":"3848:1:87","nodeType":"YulLiteral","src":"3848:1:87","type":"","value":"1"},{"name":"newLen","nativeSrc":"3851:6:87","nodeType":"YulIdentifier","src":"3851:6:87"}],"functionName":{"name":"shl","nativeSrc":"3844:3:87","nodeType":"YulIdentifier","src":"3844:3:87"},"nativeSrc":"3844:14:87","nodeType":"YulFunctionCall","src":"3844:14:87"},{"kind":"number","nativeSrc":"3860:1:87","nodeType":"YulLiteral","src":"3860:1:87","type":"","value":"1"}],"functionName":{"name":"add","nativeSrc":"3840:3:87","nodeType":"YulIdentifier","src":"3840:3:87"},"nativeSrc":"3840:22:87","nodeType":"YulFunctionCall","src":"3840:22:87"}],"functionName":{"name":"sstore","nativeSrc":"3827:6:87","nodeType":"YulIdentifier","src":"3827:6:87"},"nativeSrc":"3827:36:87","nodeType":"YulFunctionCall","src":"3827:36:87"},"nativeSrc":"3827:36:87","nodeType":"YulExpressionStatement","src":"3827:36:87"}]},"nativeSrc":"3224:649:87","nodeType":"YulCase","src":"3224:649:87","value":{"kind":"number","nativeSrc":"3229:1:87","nodeType":"YulLiteral","src":"3229:1:87","type":"","value":"1"}},{"body":{"nativeSrc":"3890:234:87","nodeType":"YulBlock","src":"3890:234:87","statements":[{"nativeSrc":"3904:14:87","nodeType":"YulVariableDeclaration","src":"3904:14:87","value":{"kind":"number","nativeSrc":"3917:1:87","nodeType":"YulLiteral","src":"3917:1:87","type":"","value":"0"},"variables":[{"name":"value","nativeSrc":"3908:5:87","nodeType":"YulTypedName","src":"3908:5:87","type":""}]},{"body":{"nativeSrc":"3953:67:87","nodeType":"YulBlock","src":"3953:67:87","statements":[{"nativeSrc":"3971:35:87","nodeType":"YulAssignment","src":"3971:35:87","value":{"arguments":[{"arguments":[{"name":"src","nativeSrc":"3990:3:87","nodeType":"YulIdentifier","src":"3990:3:87"},{"name":"srcOffset","nativeSrc":"3995:9:87","nodeType":"YulIdentifier","src":"3995:9:87"}],"functionName":{"name":"add","nativeSrc":"3986:3:87","nodeType":"YulIdentifier","src":"3986:3:87"},"nativeSrc":"3986:19:87","nodeType":"YulFunctionCall","src":"3986:19:87"}],"functionName":{"name":"mload","nativeSrc":"3980:5:87","nodeType":"YulIdentifier","src":"3980:5:87"},"nativeSrc":"3980:26:87","nodeType":"YulFunctionCall","src":"3980:26:87"},"variableNames":[{"name":"value","nativeSrc":"3971:5:87","nodeType":"YulIdentifier","src":"3971:5:87"}]}]},"condition":{"name":"newLen","nativeSrc":"3934:6:87","nodeType":"YulIdentifier","src":"3934:6:87"},"nativeSrc":"3931:89:87","nodeType":"YulIf","src":"3931:89:87"},{"expression":{"arguments":[{"name":"slot","nativeSrc":"4040:4:87","nodeType":"YulIdentifier","src":"4040:4:87"},{"arguments":[{"name":"value","nativeSrc":"4099:5:87","nodeType":"YulIdentifier","src":"4099:5:87"},{"name":"newLen","nativeSrc":"4106:6:87","nodeType":"YulIdentifier","src":"4106:6:87"}],"functionName":{"name":"extract_used_part_and_set_length_of_short_byte_array","nativeSrc":"4046:52:87","nodeType":"YulIdentifier","src":"4046:52:87"},"nativeSrc":"4046:67:87","nodeType":"YulFunctionCall","src":"4046:67:87"}],"functionName":{"name":"sstore","nativeSrc":"4033:6:87","nodeType":"YulIdentifier","src":"4033:6:87"},"nativeSrc":"4033:81:87","nodeType":"YulFunctionCall","src":"4033:81:87"},"nativeSrc":"4033:81:87","nodeType":"YulExpressionStatement","src":"4033:81:87"}]},"nativeSrc":"3882:242:87","nodeType":"YulCase","src":"3882:242:87","value":"default"}],"expression":{"arguments":[{"name":"newLen","nativeSrc":"3204:6:87","nodeType":"YulIdentifier","src":"3204:6:87"},{"kind":"number","nativeSrc":"3212:2:87","nodeType":"YulLiteral","src":"3212:2:87","type":"","value":"31"}],"functionName":{"name":"gt","nativeSrc":"3201:2:87","nodeType":"YulIdentifier","src":"3201:2:87"},"nativeSrc":"3201:14:87","nodeType":"YulFunctionCall","src":"3201:14:87"},"nativeSrc":"3194:930:87","nodeType":"YulSwitch","src":"3194:930:87"}]},"name":"copy_byte_array_to_storage_from_t_string_memory_ptr_to_t_string_storage","nativeSrc":"2831:1299:87","nodeType":"YulFunctionDefinition","parameters":[{"name":"slot","nativeSrc":"2912:4:87","nodeType":"YulTypedName","src":"2912:4:87","type":""},{"name":"src","nativeSrc":"2918:3:87","nodeType":"YulTypedName","src":"2918:3:87","type":""}],"src":"2831:1299:87"},{"body":{"nativeSrc":"4184:176:87","nodeType":"YulBlock","src":"4184:176:87","statements":[{"nativeSrc":"4194:17:87","nodeType":"YulAssignment","src":"4194:17:87","value":{"arguments":[{"name":"x","nativeSrc":"4206:1:87","nodeType":"YulIdentifier","src":"4206:1:87"},{"name":"y","nativeSrc":"4209:1:87","nodeType":"YulIdentifier","src":"4209:1:87"}],"functionName":{"name":"sub","nativeSrc":"4202:3:87","nodeType":"YulIdentifier","src":"4202:3:87"},"nativeSrc":"4202:9:87","nodeType":"YulFunctionCall","src":"4202:9:87"},"variableNames":[{"name":"diff","nativeSrc":"4194:4:87","nodeType":"YulIdentifier","src":"4194:4:87"}]},{"body":{"nativeSrc":"4243:111:87","nodeType":"YulBlock","src":"4243:111:87","statements":[{"expression":{"arguments":[{"kind":"number","nativeSrc":"4264:1:87","nodeType":"YulLiteral","src":"4264:1:87","type":"","value":"0"},{"arguments":[{"kind":"number","nativeSrc":"4271:3:87","nodeType":"YulLiteral","src":"4271:3:87","type":"","value":"224"},{"kind":"number","nativeSrc":"4276:10:87","nodeType":"YulLiteral","src":"4276:10:87","type":"","value":"0x4e487b71"}],"functionName":{"name":"shl","nativeSrc":"4267:3:87","nodeType":"YulIdentifier","src":"4267:3:87"},"nativeSrc":"4267:20:87","nodeType":"YulFunctionCall","src":"4267:20:87"}],"functionName":{"name":"mstore","nativeSrc":"4257:6:87","nodeType":"YulIdentifier","src":"4257:6:87"},"nativeSrc":"4257:31:87","nodeType":"YulFunctionCall","src":"4257:31:87"},"nativeSrc":"4257:31:87","nodeType":"YulExpressionStatement","src":"4257:31:87"},{"expression":{"arguments":[{"kind":"number","nativeSrc":"4308:1:87","nodeType":"YulLiteral","src":"4308:1:87","type":"","value":"4"},{"kind":"number","nativeSrc":"4311:4:87","nodeType":"YulLiteral","src":"4311:4:87","type":"","value":"0x11"}],"functionName":{"name":"mstore","nativeSrc":"4301:6:87","nodeType":"YulIdentifier","src":"4301:6:87"},"nativeSrc":"4301:15:87","nodeType":"YulFunctionCall","src":"4301:15:87"},"nativeSrc":"4301:15:87","nodeType":"YulExpressionStatement","src":"4301:15:87"},{"expression":{"arguments":[{"kind":"number","nativeSrc":"4336:1:87","nodeType":"YulLiteral","src":"4336:1:87","type":"","value":"0"},{"kind":"number","nativeSrc":"4339:4:87","nodeType":"YulLiteral","src":"4339:4:87","type":"","value":"0x24"}],"functionName":{"name":"revert","nativeSrc":"4329:6:87","nodeType":"YulIdentifier","src":"4329:6:87"},"nativeSrc":"4329:15:87","nodeType":"YulFunctionCall","src":"4329:15:87"},"nativeSrc":"4329:15:87","nodeType":"YulExpressionStatement","src":"4329:15:87"}]},"condition":{"arguments":[{"name":"diff","nativeSrc":"4226:4:87","nodeType":"YulIdentifier","src":"4226:4:87"},{"name":"x","nativeSrc":"4232:1:87","nodeType":"YulIdentifier","src":"4232:1:87"}],"functionName":{"name":"gt","nativeSrc":"4223:2:87","nodeType":"YulIdentifier","src":"4223:2:87"},"nativeSrc":"4223:11:87","nodeType":"YulFunctionCall","src":"4223:11:87"},"nativeSrc":"4220:134:87","nodeType":"YulIf","src":"4220:134:87"}]},"name":"checked_sub_t_uint256","nativeSrc":"4135:225:87","nodeType":"YulFunctionDefinition","parameters":[{"name":"x","nativeSrc":"4166:1:87","nodeType":"YulTypedName","src":"4166:1:87","type":""},{"name":"y","nativeSrc":"4169:1:87","nodeType":"YulTypedName","src":"4169:1:87","type":""}],"returnVariables":[{"name":"diff","nativeSrc":"4175:4:87","nodeType":"YulTypedName","src":"4175:4:87","type":""}],"src":"4135:225:87"}]},"contents":"{\n    { }\n    function panic_error_0x41()\n    {\n        mstore(0, shl(224, 0x4e487b71))\n        mstore(4, 0x41)\n        revert(0, 0x24)\n    }\n    function abi_decode_string_fromMemory(offset, end) -> array\n    {\n        if iszero(slt(add(offset, 0x1f), end)) { revert(0, 0) }\n        let length := mload(offset)\n        if gt(length, sub(shl(64, 1), 1)) { panic_error_0x41() }\n        let memPtr := mload(64)\n        let newFreePtr := add(memPtr, and(add(and(add(length, 0x1f), not(31)), 63), not(31)))\n        if or(gt(newFreePtr, sub(shl(64, 1), 1)), lt(newFreePtr, memPtr)) { panic_error_0x41() }\n        mstore(64, newFreePtr)\n        mstore(memPtr, length)\n        if gt(add(add(offset, length), 0x20), end) { revert(0, 0) }\n        mcopy(add(memPtr, 0x20), add(offset, 0x20), length)\n        mstore(add(add(memPtr, length), 0x20), 0)\n        array := memPtr\n    }\n    function abi_decode_tuple_t_string_memory_ptrt_string_memory_ptrt_contract$_IERC20Metadata_$9411_fromMemory(headStart, dataEnd) -> value0, value1, value2\n    {\n        if slt(sub(dataEnd, headStart), 96) { revert(0, 0) }\n        let offset := mload(headStart)\n        if gt(offset, sub(shl(64, 1), 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, sub(shl(64, 1), 1)) { revert(0, 0) }\n        value1 := abi_decode_string_fromMemory(add(headStart, offset_1), dataEnd)\n        let value := mload(add(headStart, 64))\n        if iszero(eq(value, and(value, sub(shl(160, 1), 1)))) { revert(0, 0) }\n        value2 := value\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 array_dataslot_string_storage(ptr) -> data\n    {\n        mstore(0, ptr)\n        data := keccak256(0, 0x20)\n    }\n    function clean_up_bytearray_end_slots_string_storage(array, len, startIndex)\n    {\n        if gt(len, 31)\n        {\n            mstore(0, array)\n            let data := keccak256(0, 0x20)\n            let deleteStart := add(data, shr(5, add(startIndex, 31)))\n            if lt(startIndex, 0x20) { deleteStart := data }\n            let _1 := add(data, shr(5, add(len, 31)))\n            let start := deleteStart\n            for { } lt(start, _1) { start := add(start, 1) }\n            { sstore(start, 0) }\n        }\n    }\n    function extract_used_part_and_set_length_of_short_byte_array(data, len) -> used\n    {\n        used := or(and(data, not(shr(shl(3, len), not(0)))), shl(1, len))\n    }\n    function copy_byte_array_to_storage_from_t_string_memory_ptr_to_t_string_storage(slot, src)\n    {\n        let newLen := mload(src)\n        if gt(newLen, sub(shl(64, 1), 1)) { panic_error_0x41() }\n        clean_up_bytearray_end_slots_string_storage(slot, extract_byte_array_length(sload(slot)), newLen)\n        let srcOffset := 0\n        srcOffset := 0x20\n        switch gt(newLen, 31)\n        case 1 {\n            let loopEnd := and(newLen, not(31))\n            let dstPtr := array_dataslot_string_storage(slot)\n            let i := 0\n            for { } lt(i, loopEnd) { i := add(i, 0x20) }\n            {\n                sstore(dstPtr, mload(add(src, srcOffset)))\n                dstPtr := add(dstPtr, 1)\n                srcOffset := add(srcOffset, 0x20)\n            }\n            if lt(loopEnd, newLen)\n            {\n                let lastValue := mload(add(src, srcOffset))\n                sstore(dstPtr, and(lastValue, not(shr(and(shl(3, newLen), 248), not(0)))))\n            }\n            sstore(slot, add(shl(1, newLen), 1))\n        }\n        default {\n            let value := 0\n            if newLen\n            {\n                value := mload(add(src, srcOffset))\n            }\n            sstore(slot, extract_used_part_and_set_length_of_short_byte_array(value, newLen))\n        }\n    }\n    function checked_sub_t_uint256(x, y) -> diff\n    {\n        diff := sub(x, y)\n        if gt(diff, x)\n        {\n            mstore(0, shl(224, 0x4e487b71))\n            mstore(4, 0x11)\n            revert(0, 0x24)\n        }\n    }\n}","id":87,"language":"Yul","name":"#utility.yul"}],"linkReferences":{},"object":"60c060405234801561000f575f5ffd5b50604051611a80380380611a8083398101604081905261002e916101fa565b808383600361003d8382610303565b50600461004a8282610303565b5050505f5f61005e836100ab60201b60201c565b915091508161006e576012610070565b805b60ff1660a05250506001600160a01b031660805261009060635f196103bd565b600681905560078190556008819055600955506103e2915050565b5f80806100b760405190565b6040805160048152602481019091526020810180516001600160e01b0390811663313ce56760e01b179091529192505f9182916100f79188919061013c16565b50909250905061010683604052565b818015610114575060203d10155b8015610121575060ff8111155b61012c575f5f610130565b6001815b94509450505050915091565b5f5f5f60405f855160208701885afa92505f51915060205190509250925092565b634e487b7160e01b5f52604160045260245ffd5b5f82601f830112610180575f5ffd5b81516001600160401b038111156101995761019961015d565b604051601f8201601f19908116603f011681016001600160401b03811182821017156101c7576101c761015d565b6040528181528382016020018510156101de575f5ffd5b8160208501602083015e5f918101602001919091529392505050565b5f5f5f6060848603121561020c575f5ffd5b83516001600160401b03811115610221575f5ffd5b61022d86828701610171565b602086015190945090506001600160401b0381111561024a575f5ffd5b61025686828701610171565b604086015190935090506001600160a01b0381168114610274575f5ffd5b809150509250925092565b600181811c9082168061029357607f821691505b6020821081036102b157634e487b7160e01b5f52602260045260245ffd5b50919050565b601f8211156102fe57805f5260205f20601f840160051c810160208510156102dc5750805b601f840160051c820191505b818110156102fb575f81556001016102e8565b50505b505050565b81516001600160401b0381111561031c5761031c61015d565b6103308161032a845461027f565b846102b7565b6020601f821160018114610362575f831561034b5750848201515b5f19600385901b1c1916600184901b1784556102fb565b5f84815260208120601f198516915b828110156103915787850151825560209485019460019092019101610371565b50848210156103ae57868401515f19600387901b60f8161c191681555b50505050600190811b01905550565b818103818111156103dc57634e487b7160e01b5f52601160045260245ffd5b92915050565b60805160a05161165a6104265f395f61061e01525f81816102ce015281816104a20152818161082e0152818161088b01528181610e0d0152610ebf015261165a5ff3fe608060405234801561000f575f5ffd5b50600436106101fd575f3560e01c806386de9e4f11610114578063c6e6f592116100a9578063d6dd023411610079578063d6dd023414610439578063d905777e1461044c578063dd62ed3e1461045f578063ef8b30f7146103f7578063f3c0b89214610497575f5ffd5b8063c6e6f592146103f7578063c7361ed21461040a578063cc7fcc601461041d578063ce96cb7714610426575f5ffd5b8063b3d7f6b9116100e4578063b3d7f6b9146103ab578063b460af94146103be578063ba087652146103d1578063c63d75b6146103e4575f5ffd5b806386de9e4f1461035a57806394bf804d1461037d57806395d89b4114610390578063a9059cbb14610398575f5ffd5b8063313ce56711610195578063402d267d11610165578063402d267d146103015780634cdad5061461023a5780636e553f651461031457806370a08231146103275780637fb1ad621461034f575f5ffd5b8063313ce5671461029e57806338359018146102b857806338d52e0f146102c157806339d88aff146102f8575f5ffd5b8063095ea7b3116101d0578063095ea7b31461024d5780630a28a4771461027057806318160ddd1461028357806323b872dd1461028b575f5ffd5b806301e1d11414610201578063034548cd1461021c57806306fdde031461022557806307a2d13a1461023a575b5f5ffd5b61020961049f565b6040519081526020015b60405180910390f35b61020960075481565b61022d61052e565b60405161021391906111f7565b61020961024836600461122c565b6105be565b61026061025b36600461125e565b6105cf565b6040519015158152602001610213565b61020961027e36600461122c565b6105e6565b600254610209565b610260610299366004611286565b6105f2565b6102a6610617565b60405160ff9091168152602001610213565b61020960085481565b6040516001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000168152602001610213565b61020960065481565b61020961030f3660046112c0565b610642565b6102096103223660046112d9565b610666565b6102096103353660046112c0565b6001600160a01b03165f9081526020819052604090205490565b60055460ff16610260565b61037b610368366004611303565b6005805460ff1916911515919091179055565b005b61020961038b3660046112d9565b6106c3565b61022d61070f565b6102606103a636600461125e565b61071e565b6102096103b936600461122c565b61072b565b6102096103cc366004611322565b610737565b6102096103df366004611322565b61078d565b6102096103f23660046112c0565b6107da565b61020961040536600461122c565b6107f7565b61037b61041836600461122c565b610802565b61020960095481565b6102096104343660046112c0565b6108f3565b61037b61044736600461135b565b610919565b61020961045a3660046112c0565b610998565b61020961046d36600461137a565b6001600160a01b039182165f90815260016020908152604080832093909416825291909152205490565b6102096109be565b5f7f00000000000000000000000000000000000000000000000000000000000000006040516370a0823160e01b81523060048201526001600160a01b0391909116906370a0823190602401602060405180830381865afa158015610505573d5f5f3e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061052991906113a2565b905090565b60606003805461053d906113b9565b80601f0160208091040260200160405190810160405280929190818152602001828054610569906113b9565b80156105b45780601f1061058b576101008083540402835291602001916105b4565b820191905f5260205f20905b81548152906001019060200180831161059757829003601f168201915b5050505050905090565b5f6105c9825f6109cd565b92915050565b5f336105dc818585610a05565b5060019392505050565b5f6105c9826001610a17565b5f336105ff858285610a46565b61060a858585610aaf565b60019150505b9392505050565b5f610529817f0000000000000000000000000000000000000000000000000000000000000000611405565b5f61064f60635f1961141e565b6006541461065f576006546105c9565b5f196105c9565b5f5f61067183610642565b9050808411156106a357828482604051633c8097d960e11b815260040161069a93929190611431565b60405180910390fd5b5f6106ad856107f7565b90506106bb33858784610b0c565b949350505050565b5f5f6106ce836107da565b9050808411156106f75782848260405163284ff66760e01b815260040161069a93929190611431565b5f6107018561072b565b90506106bb33858388610b0c565b60606004805461053d906113b9565b5f336105dc818585610aaf565b5f6105c98260016109cd565b5f5f610742836108f3565b90508085111561076b57828582604051633fa733bb60e21b815260040161069a93929190611431565b5f610775866105e6565b90506107843386868985610b61565b95945050505050565b5f5f61079883610998565b9050808511156107c157828582604051632e52afbb60e21b815260040161069a93929190611431565b5f6107cb866105be565b9050610784338686848a610b61565b5f6107e760635f1961141e565b6007541461065f576007546105c9565b5f6105c9825f610a17565b5f811315610889576040516340c10f1960e01b8152306004820152602481018290526001600160a01b037f000000000000000000000000000000000000000000000000000000000000000016906340c10f19906044015b5f604051808303815f87803b158015610870575f5ffd5b505af1158015610882573d5f5f3e3d5ffd5b5050505050565b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316639dc29fac306108c284611452565b6040516001600160e01b031960e085901b1681526001600160a01b0390921660048301526024820152604401610859565b5f61090060635f1961141e565b60085414610910576008546105c9565b6105c982610bb7565b5f82600381111561092c5761092c61146c565b036109375760068190555b600182600381111561094b5761094b61146c565b036109565760078190555b600282600381111561096a5761096a61146c565b036109755760088190555b60038260038111156109895761098961146c565b036109945760098190555b5050565b5f6109a560635f1961141e565b600954146109b5576009546105c9565b6105c982610bc4565b6109ca60635f1961141e565b81565b5f6106106109d961049f565b6109e4906001611480565b6109ef5f600a611576565b6002546109fc9190611480565b85919085610be1565b610a128383836001610c23565b505050565b5f610610610a2682600a611576565b600254610a339190611480565b610a3b61049f565b6109fc906001611480565b6001600160a01b038381165f908152600160209081526040808320938616835292905220545f19811015610aa95781811015610a9b57828183604051637dc7a0d960e11b815260040161069a93929190611431565b610aa984848484035f610c23565b50505050565b6001600160a01b038316610ad857604051634b637e8f60e11b81525f600482015260240161069a565b6001600160a01b038216610b015760405163ec442f0560e01b81525f600482015260240161069a565b610a12838383610cf5565b60055460ff1615610b2060045f3681611584565b610b29916115ab565b90610b54576040516340c2fd5360e11b81526001600160e01b0319909116600482015260240161069a565b50610aa984848484610e08565b60055460ff1615610b7560045f3681611584565b610b7e916115ab565b90610ba9576040516340c2fd5360e11b81526001600160e01b0319909116600482015260240161069a565b506108828585858585610e8c565b5f6105c961024883610998565b6001600160a01b0381165f908152602081905260408120546105c9565b5f610c0e610bee83610f4c565b8015610c0957505f8480610c0457610c046115e3565b868809115b151590565b610c19868686610f78565b6107849190611480565b6001600160a01b038416610c4c5760405163e602df0560e01b81525f600482015260240161069a565b6001600160a01b038316610c7557604051634a1406b160e11b81525f600482015260240161069a565b6001600160a01b038085165f9081526001602090815260408083209387168352929052208290558015610aa957826001600160a01b0316846001600160a01b03167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92584604051610ce791815260200190565b60405180910390a350505050565b6001600160a01b038316610d1f578060025f828254610d149190611480565b90915550610d7c9050565b6001600160a01b0383165f9081526020819052604090205481811015610d5e5783818360405163391434e360e21b815260040161069a93929190611431565b6001600160a01b0384165f9081526020819052604090209082900390555b6001600160a01b038216610d9857600280548290039055610db6565b6001600160a01b0382165f9081526020819052604090208054820190555b816001600160a01b0316836001600160a01b03167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef83604051610dfb91815260200190565b60405180910390a3505050565b610e347f0000000000000000000000000000000000000000000000000000000000000000853085611028565b610e3e838261105e565b826001600160a01b0316846001600160a01b03167fdcbc1c05240f31ff3ad067ef1ee35ce4997762752e3a095284754544f4c709d78484604051610ce7929190918252602082015260400190565b826001600160a01b0316856001600160a01b031614610eb057610eb0838683610a46565b610eba8382611092565b610ee57f000000000000000000000000000000000000000000000000000000000000000085846110c6565b826001600160a01b0316846001600160a01b0316866001600160a01b03167ffbde797d201c681b91056529119e0b02407c7bb96a4a2c75c01fc9667232c8db8585604051610f3d929190918252602082015260400190565b60405180910390a45050505050565b5f6002826003811115610f6157610f6161146c565b610f6b91906115f7565b60ff166001149050919050565b5f5f5f610f8586866110fb565b91509150815f03610fa957838181610f9f57610f9f6115e3565b0492505050610610565b818411610fc057610fc06003851502601118611117565b5f848688095f868103871696879004966002600389028118808a02820302808a02820302808a02820302808a02820302808a02820302808a02909103029181900381900460010185841190960395909502919093039390930492909217029150509392505050565b611036848484846001611128565b610aa957604051635274afe760e01b81526001600160a01b038516600482015260240161069a565b6001600160a01b0382166110875760405163ec442f0560e01b81525f600482015260240161069a565b6109945f8383610cf5565b6001600160a01b0382166110bb57604051634b637e8f60e11b81525f600482015260240161069a565b610994825f83610cf5565b6110d38383836001611195565b610a1257604051635274afe760e01b81526001600160a01b038416600482015260240161069a565b5f805f1983850993909202808410938190039390930393915050565b634e487b715f52806020526024601cfd5b6040516323b872dd60e01b5f8181526001600160a01b038781166004528616602452604485905291602083606481808c5af1925060015f51148316611184578383151615611178573d5f823e3d81fd5b5f883b113d1516831692505b604052505f60605295945050505050565b60405163a9059cbb60e01b5f8181526001600160a01b038616600452602485905291602083604481808b5af1925060015f511483166111eb5783831516156111df573d5f823e3d81fd5b5f873b113d1516831692505b60405250949350505050565b602081525f82518060208401528060208501604085015e5f604082850101526040601f19601f83011684010191505092915050565b5f6020828403121561123c575f5ffd5b5035919050565b80356001600160a01b0381168114611259575f5ffd5b919050565b5f5f6040838503121561126f575f5ffd5b61127883611243565b946020939093013593505050565b5f5f5f60608486031215611298575f5ffd5b6112a184611243565b92506112af60208501611243565b929592945050506040919091013590565b5f602082840312156112d0575f5ffd5b61061082611243565b5f5f604083850312156112ea575f5ffd5b823591506112fa60208401611243565b90509250929050565b5f60208284031215611313575f5ffd5b81358015158114610610575f5ffd5b5f5f5f60608486031215611334575f5ffd5b8335925061134460208501611243565b915061135260408501611243565b90509250925092565b5f5f6040838503121561136c575f5ffd5b823560048110611278575f5ffd5b5f5f6040838503121561138b575f5ffd5b61139483611243565b91506112fa60208401611243565b5f602082840312156113b2575f5ffd5b5051919050565b600181811c908216806113cd57607f821691505b6020821081036113eb57634e487b7160e01b5f52602260045260245ffd5b50919050565b634e487b7160e01b5f52601160045260245ffd5b60ff81811683821601908111156105c9576105c96113f1565b818103818111156105c9576105c96113f1565b6001600160a01b039390931683526020830191909152604082015260600190565b5f600160ff1b8201611466576114666113f1565b505f0390565b634e487b7160e01b5f52602160045260245ffd5b808201808211156105c9576105c96113f1565b6001815b60018411156114ce578085048111156114b2576114b26113f1565b60018416156114c057908102905b60019390931c928002611497565b935093915050565b5f826114e4575060016105c9565b816114f057505f6105c9565b816001811461150657600281146115105761152c565b60019150506105c9565b60ff841115611521576115216113f1565b50506001821b6105c9565b5060208310610133831016604e8410600b841016171561154f575081810a6105c9565b61155b5f198484611493565b805f190482111561156e5761156e6113f1565b029392505050565b5f61061060ff8416836114d6565b5f5f85851115611592575f5ffd5b8386111561159e575f5ffd5b5050820193919092039150565b80356001600160e01b031981169060048410156115dc576001600160e01b0319600485900360031b81901b82161691505b5092915050565b634e487b7160e01b5f52601260045260245ffd5b5f60ff83168061161557634e487b7160e01b5f52601260045260245ffd5b8060ff8416069150509291505056fea264697066735822122041a239773b0c4f47712d5277cd163f3256eb28220d6a600a22cf02fd0bf1a59064736f6c634300081e0033","opcodes":"PUSH1 0xC0 PUSH1 0x40 MSTORE CALLVALUE DUP1 ISZERO PUSH2 0xF JUMPI PUSH0 PUSH0 REVERT JUMPDEST POP PUSH1 0x40 MLOAD PUSH2 0x1A80 CODESIZE SUB DUP1 PUSH2 0x1A80 DUP4 CODECOPY DUP2 ADD PUSH1 0x40 DUP2 SWAP1 MSTORE PUSH2 0x2E SWAP2 PUSH2 0x1FA JUMP JUMPDEST DUP1 DUP4 DUP4 PUSH1 0x3 PUSH2 0x3D DUP4 DUP3 PUSH2 0x303 JUMP JUMPDEST POP PUSH1 0x4 PUSH2 0x4A DUP3 DUP3 PUSH2 0x303 JUMP JUMPDEST POP POP POP PUSH0 PUSH0 PUSH2 0x5E DUP4 PUSH2 0xAB PUSH1 0x20 SHL PUSH1 0x20 SHR JUMP JUMPDEST SWAP2 POP SWAP2 POP DUP2 PUSH2 0x6E JUMPI PUSH1 0x12 PUSH2 0x70 JUMP JUMPDEST DUP1 JUMPDEST PUSH1 0xFF AND PUSH1 0xA0 MSTORE POP POP PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH1 0x80 MSTORE PUSH2 0x90 PUSH1 0x63 PUSH0 NOT PUSH2 0x3BD JUMP JUMPDEST PUSH1 0x6 DUP2 SWAP1 SSTORE PUSH1 0x7 DUP2 SWAP1 SSTORE PUSH1 0x8 DUP2 SWAP1 SSTORE PUSH1 0x9 SSTORE POP PUSH2 0x3E2 SWAP2 POP POP JUMP JUMPDEST PUSH0 DUP1 DUP1 PUSH2 0xB7 PUSH1 0x40 MLOAD SWAP1 JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH1 0x4 DUP2 MSTORE PUSH1 0x24 DUP2 ADD SWAP1 SWAP2 MSTORE PUSH1 0x20 DUP2 ADD DUP1 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xE0 SHL SUB SWAP1 DUP2 AND PUSH4 0x313CE567 PUSH1 0xE0 SHL OR SWAP1 SWAP2 MSTORE SWAP2 SWAP3 POP PUSH0 SWAP2 DUP3 SWAP2 PUSH2 0xF7 SWAP2 DUP9 SWAP2 SWAP1 PUSH2 0x13C AND JUMP JUMPDEST POP SWAP1 SWAP3 POP SWAP1 POP PUSH2 0x106 DUP4 PUSH1 0x40 MSTORE JUMP JUMPDEST DUP2 DUP1 ISZERO PUSH2 0x114 JUMPI POP PUSH1 0x20 RETURNDATASIZE LT ISZERO JUMPDEST DUP1 ISZERO PUSH2 0x121 JUMPI POP PUSH1 0xFF DUP2 GT ISZERO JUMPDEST PUSH2 0x12C JUMPI PUSH0 PUSH0 PUSH2 0x130 JUMP JUMPDEST PUSH1 0x1 DUP2 JUMPDEST SWAP5 POP SWAP5 POP POP POP POP SWAP2 POP SWAP2 JUMP JUMPDEST PUSH0 PUSH0 PUSH0 PUSH1 0x40 PUSH0 DUP6 MLOAD PUSH1 0x20 DUP8 ADD DUP9 GAS STATICCALL SWAP3 POP PUSH0 MLOAD SWAP2 POP PUSH1 0x20 MLOAD SWAP1 POP SWAP3 POP SWAP3 POP SWAP3 JUMP JUMPDEST PUSH4 0x4E487B71 PUSH1 0xE0 SHL PUSH0 MSTORE PUSH1 0x41 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH0 REVERT JUMPDEST PUSH0 DUP3 PUSH1 0x1F DUP4 ADD SLT PUSH2 0x180 JUMPI PUSH0 PUSH0 REVERT JUMPDEST DUP2 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0x40 SHL SUB DUP2 GT ISZERO PUSH2 0x199 JUMPI PUSH2 0x199 PUSH2 0x15D JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH1 0x1F DUP3 ADD PUSH1 0x1F NOT SWAP1 DUP2 AND PUSH1 0x3F ADD AND DUP2 ADD PUSH1 0x1 PUSH1 0x1 PUSH1 0x40 SHL SUB DUP2 GT DUP3 DUP3 LT OR ISZERO PUSH2 0x1C7 JUMPI PUSH2 0x1C7 PUSH2 0x15D JUMP JUMPDEST PUSH1 0x40 MSTORE DUP2 DUP2 MSTORE DUP4 DUP3 ADD PUSH1 0x20 ADD DUP6 LT ISZERO PUSH2 0x1DE JUMPI PUSH0 PUSH0 REVERT JUMPDEST DUP2 PUSH1 0x20 DUP6 ADD PUSH1 0x20 DUP4 ADD MCOPY PUSH0 SWAP2 DUP2 ADD PUSH1 0x20 ADD SWAP2 SWAP1 SWAP2 MSTORE SWAP4 SWAP3 POP POP POP JUMP JUMPDEST PUSH0 PUSH0 PUSH0 PUSH1 0x60 DUP5 DUP7 SUB SLT ISZERO PUSH2 0x20C JUMPI PUSH0 PUSH0 REVERT JUMPDEST DUP4 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0x40 SHL SUB DUP2 GT ISZERO PUSH2 0x221 JUMPI PUSH0 PUSH0 REVERT JUMPDEST PUSH2 0x22D DUP7 DUP3 DUP8 ADD PUSH2 0x171 JUMP JUMPDEST PUSH1 0x20 DUP7 ADD MLOAD SWAP1 SWAP5 POP SWAP1 POP PUSH1 0x1 PUSH1 0x1 PUSH1 0x40 SHL SUB DUP2 GT ISZERO PUSH2 0x24A JUMPI PUSH0 PUSH0 REVERT JUMPDEST PUSH2 0x256 DUP7 DUP3 DUP8 ADD PUSH2 0x171 JUMP JUMPDEST PUSH1 0x40 DUP7 ADD MLOAD SWAP1 SWAP4 POP SWAP1 POP PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 AND DUP2 EQ PUSH2 0x274 JUMPI PUSH0 PUSH0 REVERT JUMPDEST DUP1 SWAP2 POP POP SWAP3 POP SWAP3 POP SWAP3 JUMP JUMPDEST PUSH1 0x1 DUP2 DUP2 SHR SWAP1 DUP3 AND DUP1 PUSH2 0x293 JUMPI PUSH1 0x7F DUP3 AND SWAP2 POP JUMPDEST PUSH1 0x20 DUP3 LT DUP2 SUB PUSH2 0x2B1 JUMPI PUSH4 0x4E487B71 PUSH1 0xE0 SHL PUSH0 MSTORE PUSH1 0x22 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH0 REVERT JUMPDEST POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x1F DUP3 GT ISZERO PUSH2 0x2FE JUMPI DUP1 PUSH0 MSTORE PUSH1 0x20 PUSH0 KECCAK256 PUSH1 0x1F DUP5 ADD PUSH1 0x5 SHR DUP2 ADD PUSH1 0x20 DUP6 LT ISZERO PUSH2 0x2DC JUMPI POP DUP1 JUMPDEST PUSH1 0x1F DUP5 ADD PUSH1 0x5 SHR DUP3 ADD SWAP2 POP JUMPDEST DUP2 DUP2 LT ISZERO PUSH2 0x2FB JUMPI PUSH0 DUP2 SSTORE PUSH1 0x1 ADD PUSH2 0x2E8 JUMP JUMPDEST POP POP JUMPDEST POP POP POP JUMP JUMPDEST DUP2 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0x40 SHL SUB DUP2 GT ISZERO PUSH2 0x31C JUMPI PUSH2 0x31C PUSH2 0x15D JUMP JUMPDEST PUSH2 0x330 DUP2 PUSH2 0x32A DUP5 SLOAD PUSH2 0x27F JUMP JUMPDEST DUP5 PUSH2 0x2B7 JUMP JUMPDEST PUSH1 0x20 PUSH1 0x1F DUP3 GT PUSH1 0x1 DUP2 EQ PUSH2 0x362 JUMPI PUSH0 DUP4 ISZERO PUSH2 0x34B JUMPI POP DUP5 DUP3 ADD MLOAD JUMPDEST PUSH0 NOT PUSH1 0x3 DUP6 SWAP1 SHL SHR NOT AND PUSH1 0x1 DUP5 SWAP1 SHL OR DUP5 SSTORE PUSH2 0x2FB JUMP JUMPDEST PUSH0 DUP5 DUP2 MSTORE PUSH1 0x20 DUP2 KECCAK256 PUSH1 0x1F NOT DUP6 AND SWAP2 JUMPDEST DUP3 DUP2 LT ISZERO PUSH2 0x391 JUMPI DUP8 DUP6 ADD MLOAD DUP3 SSTORE PUSH1 0x20 SWAP5 DUP6 ADD SWAP5 PUSH1 0x1 SWAP1 SWAP3 ADD SWAP2 ADD PUSH2 0x371 JUMP JUMPDEST POP DUP5 DUP3 LT ISZERO PUSH2 0x3AE JUMPI DUP7 DUP5 ADD MLOAD PUSH0 NOT PUSH1 0x3 DUP8 SWAP1 SHL PUSH1 0xF8 AND SHR NOT AND DUP2 SSTORE JUMPDEST POP POP POP POP PUSH1 0x1 SWAP1 DUP2 SHL ADD SWAP1 SSTORE POP JUMP JUMPDEST DUP2 DUP2 SUB DUP2 DUP2 GT ISZERO PUSH2 0x3DC JUMPI PUSH4 0x4E487B71 PUSH1 0xE0 SHL PUSH0 MSTORE PUSH1 0x11 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH0 REVERT JUMPDEST SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x80 MLOAD PUSH1 0xA0 MLOAD PUSH2 0x165A PUSH2 0x426 PUSH0 CODECOPY PUSH0 PUSH2 0x61E ADD MSTORE PUSH0 DUP2 DUP2 PUSH2 0x2CE ADD MSTORE DUP2 DUP2 PUSH2 0x4A2 ADD MSTORE DUP2 DUP2 PUSH2 0x82E ADD MSTORE DUP2 DUP2 PUSH2 0x88B ADD MSTORE DUP2 DUP2 PUSH2 0xE0D ADD MSTORE PUSH2 0xEBF ADD MSTORE PUSH2 0x165A PUSH0 RETURN INVALID PUSH1 0x80 PUSH1 0x40 MSTORE CALLVALUE DUP1 ISZERO PUSH2 0xF JUMPI PUSH0 PUSH0 REVERT JUMPDEST POP PUSH1 0x4 CALLDATASIZE LT PUSH2 0x1FD JUMPI PUSH0 CALLDATALOAD PUSH1 0xE0 SHR DUP1 PUSH4 0x86DE9E4F GT PUSH2 0x114 JUMPI DUP1 PUSH4 0xC6E6F592 GT PUSH2 0xA9 JUMPI DUP1 PUSH4 0xD6DD0234 GT PUSH2 0x79 JUMPI DUP1 PUSH4 0xD6DD0234 EQ PUSH2 0x439 JUMPI DUP1 PUSH4 0xD905777E EQ PUSH2 0x44C JUMPI DUP1 PUSH4 0xDD62ED3E EQ PUSH2 0x45F JUMPI DUP1 PUSH4 0xEF8B30F7 EQ PUSH2 0x3F7 JUMPI DUP1 PUSH4 0xF3C0B892 EQ PUSH2 0x497 JUMPI PUSH0 PUSH0 REVERT JUMPDEST DUP1 PUSH4 0xC6E6F592 EQ PUSH2 0x3F7 JUMPI DUP1 PUSH4 0xC7361ED2 EQ PUSH2 0x40A JUMPI DUP1 PUSH4 0xCC7FCC60 EQ PUSH2 0x41D JUMPI DUP1 PUSH4 0xCE96CB77 EQ PUSH2 0x426 JUMPI PUSH0 PUSH0 REVERT JUMPDEST DUP1 PUSH4 0xB3D7F6B9 GT PUSH2 0xE4 JUMPI DUP1 PUSH4 0xB3D7F6B9 EQ PUSH2 0x3AB JUMPI DUP1 PUSH4 0xB460AF94 EQ PUSH2 0x3BE JUMPI DUP1 PUSH4 0xBA087652 EQ PUSH2 0x3D1 JUMPI DUP1 PUSH4 0xC63D75B6 EQ PUSH2 0x3E4 JUMPI PUSH0 PUSH0 REVERT JUMPDEST DUP1 PUSH4 0x86DE9E4F EQ PUSH2 0x35A JUMPI DUP1 PUSH4 0x94BF804D EQ PUSH2 0x37D JUMPI DUP1 PUSH4 0x95D89B41 EQ PUSH2 0x390 JUMPI DUP1 PUSH4 0xA9059CBB EQ PUSH2 0x398 JUMPI PUSH0 PUSH0 REVERT JUMPDEST DUP1 PUSH4 0x313CE567 GT PUSH2 0x195 JUMPI DUP1 PUSH4 0x402D267D GT PUSH2 0x165 JUMPI DUP1 PUSH4 0x402D267D EQ PUSH2 0x301 JUMPI DUP1 PUSH4 0x4CDAD506 EQ PUSH2 0x23A JUMPI DUP1 PUSH4 0x6E553F65 EQ PUSH2 0x314 JUMPI DUP1 PUSH4 0x70A08231 EQ PUSH2 0x327 JUMPI DUP1 PUSH4 0x7FB1AD62 EQ PUSH2 0x34F JUMPI PUSH0 PUSH0 REVERT JUMPDEST DUP1 PUSH4 0x313CE567 EQ PUSH2 0x29E JUMPI DUP1 PUSH4 0x38359018 EQ PUSH2 0x2B8 JUMPI DUP1 PUSH4 0x38D52E0F EQ PUSH2 0x2C1 JUMPI DUP1 PUSH4 0x39D88AFF EQ PUSH2 0x2F8 JUMPI PUSH0 PUSH0 REVERT JUMPDEST DUP1 PUSH4 0x95EA7B3 GT PUSH2 0x1D0 JUMPI DUP1 PUSH4 0x95EA7B3 EQ PUSH2 0x24D JUMPI DUP1 PUSH4 0xA28A477 EQ PUSH2 0x270 JUMPI DUP1 PUSH4 0x18160DDD EQ PUSH2 0x283 JUMPI DUP1 PUSH4 0x23B872DD EQ PUSH2 0x28B JUMPI PUSH0 PUSH0 REVERT JUMPDEST DUP1 PUSH4 0x1E1D114 EQ PUSH2 0x201 JUMPI DUP1 PUSH4 0x34548CD EQ PUSH2 0x21C JUMPI DUP1 PUSH4 0x6FDDE03 EQ PUSH2 0x225 JUMPI DUP1 PUSH4 0x7A2D13A EQ PUSH2 0x23A JUMPI JUMPDEST PUSH0 PUSH0 REVERT JUMPDEST PUSH2 0x209 PUSH2 0x49F JUMP JUMPDEST PUSH1 0x40 MLOAD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST PUSH2 0x209 PUSH1 0x7 SLOAD DUP2 JUMP JUMPDEST PUSH2 0x22D PUSH2 0x52E JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0x213 SWAP2 SWAP1 PUSH2 0x11F7 JUMP JUMPDEST PUSH2 0x209 PUSH2 0x248 CALLDATASIZE PUSH1 0x4 PUSH2 0x122C JUMP JUMPDEST PUSH2 0x5BE JUMP JUMPDEST PUSH2 0x260 PUSH2 0x25B CALLDATASIZE PUSH1 0x4 PUSH2 0x125E JUMP JUMPDEST PUSH2 0x5CF JUMP JUMPDEST PUSH1 0x40 MLOAD SWAP1 ISZERO ISZERO DUP2 MSTORE PUSH1 0x20 ADD PUSH2 0x213 JUMP JUMPDEST PUSH2 0x209 PUSH2 0x27E CALLDATASIZE PUSH1 0x4 PUSH2 0x122C JUMP JUMPDEST PUSH2 0x5E6 JUMP JUMPDEST PUSH1 0x2 SLOAD PUSH2 0x209 JUMP JUMPDEST PUSH2 0x260 PUSH2 0x299 CALLDATASIZE PUSH1 0x4 PUSH2 0x1286 JUMP JUMPDEST PUSH2 0x5F2 JUMP JUMPDEST PUSH2 0x2A6 PUSH2 0x617 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH1 0xFF SWAP1 SWAP2 AND DUP2 MSTORE PUSH1 0x20 ADD PUSH2 0x213 JUMP JUMPDEST PUSH2 0x209 PUSH1 0x8 SLOAD DUP2 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB PUSH32 0x0 AND DUP2 MSTORE PUSH1 0x20 ADD PUSH2 0x213 JUMP JUMPDEST PUSH2 0x209 PUSH1 0x6 SLOAD DUP2 JUMP JUMPDEST PUSH2 0x209 PUSH2 0x30F CALLDATASIZE PUSH1 0x4 PUSH2 0x12C0 JUMP JUMPDEST PUSH2 0x642 JUMP JUMPDEST PUSH2 0x209 PUSH2 0x322 CALLDATASIZE PUSH1 0x4 PUSH2 0x12D9 JUMP JUMPDEST PUSH2 0x666 JUMP JUMPDEST PUSH2 0x209 PUSH2 0x335 CALLDATASIZE PUSH1 0x4 PUSH2 0x12C0 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH0 SWAP1 DUP2 MSTORE PUSH1 0x20 DUP2 SWAP1 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD SWAP1 JUMP JUMPDEST PUSH1 0x5 SLOAD PUSH1 0xFF AND PUSH2 0x260 JUMP JUMPDEST PUSH2 0x37B PUSH2 0x368 CALLDATASIZE PUSH1 0x4 PUSH2 0x1303 JUMP JUMPDEST PUSH1 0x5 DUP1 SLOAD PUSH1 0xFF NOT AND SWAP2 ISZERO ISZERO SWAP2 SWAP1 SWAP2 OR SWAP1 SSTORE JUMP JUMPDEST STOP JUMPDEST PUSH2 0x209 PUSH2 0x38B CALLDATASIZE PUSH1 0x4 PUSH2 0x12D9 JUMP JUMPDEST PUSH2 0x6C3 JUMP JUMPDEST PUSH2 0x22D PUSH2 0x70F JUMP JUMPDEST PUSH2 0x260 PUSH2 0x3A6 CALLDATASIZE PUSH1 0x4 PUSH2 0x125E JUMP JUMPDEST PUSH2 0x71E JUMP JUMPDEST PUSH2 0x209 PUSH2 0x3B9 CALLDATASIZE PUSH1 0x4 PUSH2 0x122C JUMP JUMPDEST PUSH2 0x72B JUMP JUMPDEST PUSH2 0x209 PUSH2 0x3CC CALLDATASIZE PUSH1 0x4 PUSH2 0x1322 JUMP JUMPDEST PUSH2 0x737 JUMP JUMPDEST PUSH2 0x209 PUSH2 0x3DF CALLDATASIZE PUSH1 0x4 PUSH2 0x1322 JUMP JUMPDEST PUSH2 0x78D JUMP JUMPDEST PUSH2 0x209 PUSH2 0x3F2 CALLDATASIZE PUSH1 0x4 PUSH2 0x12C0 JUMP JUMPDEST PUSH2 0x7DA JUMP JUMPDEST PUSH2 0x209 PUSH2 0x405 CALLDATASIZE PUSH1 0x4 PUSH2 0x122C JUMP JUMPDEST PUSH2 0x7F7 JUMP JUMPDEST PUSH2 0x37B PUSH2 0x418 CALLDATASIZE PUSH1 0x4 PUSH2 0x122C JUMP JUMPDEST PUSH2 0x802 JUMP JUMPDEST PUSH2 0x209 PUSH1 0x9 SLOAD DUP2 JUMP JUMPDEST PUSH2 0x209 PUSH2 0x434 CALLDATASIZE PUSH1 0x4 PUSH2 0x12C0 JUMP JUMPDEST PUSH2 0x8F3 JUMP JUMPDEST PUSH2 0x37B PUSH2 0x447 CALLDATASIZE PUSH1 0x4 PUSH2 0x135B JUMP JUMPDEST PUSH2 0x919 JUMP JUMPDEST PUSH2 0x209 PUSH2 0x45A CALLDATASIZE PUSH1 0x4 PUSH2 0x12C0 JUMP JUMPDEST PUSH2 0x998 JUMP JUMPDEST PUSH2 0x209 PUSH2 0x46D CALLDATASIZE PUSH1 0x4 PUSH2 0x137A JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP2 DUP3 AND PUSH0 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 0x209 PUSH2 0x9BE JUMP JUMPDEST PUSH0 PUSH32 0x0 PUSH1 0x40 MLOAD PUSH4 0x70A08231 PUSH1 0xE0 SHL DUP2 MSTORE ADDRESS PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP2 SWAP1 SWAP2 AND SWAP1 PUSH4 0x70A08231 SWAP1 PUSH1 0x24 ADD PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x505 JUMPI RETURNDATASIZE PUSH0 PUSH0 RETURNDATACOPY RETURNDATASIZE PUSH0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP3 ADD DUP1 PUSH1 0x40 MSTORE POP DUP2 ADD SWAP1 PUSH2 0x529 SWAP2 SWAP1 PUSH2 0x13A2 JUMP JUMPDEST SWAP1 POP SWAP1 JUMP JUMPDEST PUSH1 0x60 PUSH1 0x3 DUP1 SLOAD PUSH2 0x53D SWAP1 PUSH2 0x13B9 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 0x569 SWAP1 PUSH2 0x13B9 JUMP JUMPDEST DUP1 ISZERO PUSH2 0x5B4 JUMPI DUP1 PUSH1 0x1F LT PUSH2 0x58B JUMPI PUSH2 0x100 DUP1 DUP4 SLOAD DIV MUL DUP4 MSTORE SWAP2 PUSH1 0x20 ADD SWAP2 PUSH2 0x5B4 JUMP JUMPDEST DUP3 ADD SWAP2 SWAP1 PUSH0 MSTORE PUSH1 0x20 PUSH0 KECCAK256 SWAP1 JUMPDEST DUP2 SLOAD DUP2 MSTORE SWAP1 PUSH1 0x1 ADD SWAP1 PUSH1 0x20 ADD DUP1 DUP4 GT PUSH2 0x597 JUMPI DUP3 SWAP1 SUB PUSH1 0x1F AND DUP3 ADD SWAP2 JUMPDEST POP POP POP POP POP SWAP1 POP SWAP1 JUMP JUMPDEST PUSH0 PUSH2 0x5C9 DUP3 PUSH0 PUSH2 0x9CD JUMP JUMPDEST SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH0 CALLER PUSH2 0x5DC DUP2 DUP6 DUP6 PUSH2 0xA05 JUMP JUMPDEST POP PUSH1 0x1 SWAP4 SWAP3 POP POP POP JUMP JUMPDEST PUSH0 PUSH2 0x5C9 DUP3 PUSH1 0x1 PUSH2 0xA17 JUMP JUMPDEST PUSH0 CALLER PUSH2 0x5FF DUP6 DUP3 DUP6 PUSH2 0xA46 JUMP JUMPDEST PUSH2 0x60A DUP6 DUP6 DUP6 PUSH2 0xAAF JUMP JUMPDEST PUSH1 0x1 SWAP2 POP POP JUMPDEST SWAP4 SWAP3 POP POP POP JUMP JUMPDEST PUSH0 PUSH2 0x529 DUP2 PUSH32 0x0 PUSH2 0x1405 JUMP JUMPDEST PUSH0 PUSH2 0x64F PUSH1 0x63 PUSH0 NOT PUSH2 0x141E JUMP JUMPDEST PUSH1 0x6 SLOAD EQ PUSH2 0x65F JUMPI PUSH1 0x6 SLOAD PUSH2 0x5C9 JUMP JUMPDEST PUSH0 NOT PUSH2 0x5C9 JUMP JUMPDEST PUSH0 PUSH0 PUSH2 0x671 DUP4 PUSH2 0x642 JUMP JUMPDEST SWAP1 POP DUP1 DUP5 GT ISZERO PUSH2 0x6A3 JUMPI DUP3 DUP5 DUP3 PUSH1 0x40 MLOAD PUSH4 0x3C8097D9 PUSH1 0xE1 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x69A SWAP4 SWAP3 SWAP2 SWAP1 PUSH2 0x1431 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH0 PUSH2 0x6AD DUP6 PUSH2 0x7F7 JUMP JUMPDEST SWAP1 POP PUSH2 0x6BB CALLER DUP6 DUP8 DUP5 PUSH2 0xB0C JUMP JUMPDEST SWAP5 SWAP4 POP POP POP POP JUMP JUMPDEST PUSH0 PUSH0 PUSH2 0x6CE DUP4 PUSH2 0x7DA JUMP JUMPDEST SWAP1 POP DUP1 DUP5 GT ISZERO PUSH2 0x6F7 JUMPI DUP3 DUP5 DUP3 PUSH1 0x40 MLOAD PUSH4 0x284FF667 PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x69A SWAP4 SWAP3 SWAP2 SWAP1 PUSH2 0x1431 JUMP JUMPDEST PUSH0 PUSH2 0x701 DUP6 PUSH2 0x72B JUMP JUMPDEST SWAP1 POP PUSH2 0x6BB CALLER DUP6 DUP4 DUP9 PUSH2 0xB0C JUMP JUMPDEST PUSH1 0x60 PUSH1 0x4 DUP1 SLOAD PUSH2 0x53D SWAP1 PUSH2 0x13B9 JUMP JUMPDEST PUSH0 CALLER PUSH2 0x5DC DUP2 DUP6 DUP6 PUSH2 0xAAF JUMP JUMPDEST PUSH0 PUSH2 0x5C9 DUP3 PUSH1 0x1 PUSH2 0x9CD JUMP JUMPDEST PUSH0 PUSH0 PUSH2 0x742 DUP4 PUSH2 0x8F3 JUMP JUMPDEST SWAP1 POP DUP1 DUP6 GT ISZERO PUSH2 0x76B JUMPI DUP3 DUP6 DUP3 PUSH1 0x40 MLOAD PUSH4 0x3FA733BB PUSH1 0xE2 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x69A SWAP4 SWAP3 SWAP2 SWAP1 PUSH2 0x1431 JUMP JUMPDEST PUSH0 PUSH2 0x775 DUP7 PUSH2 0x5E6 JUMP JUMPDEST SWAP1 POP PUSH2 0x784 CALLER DUP7 DUP7 DUP10 DUP6 PUSH2 0xB61 JUMP JUMPDEST SWAP6 SWAP5 POP POP POP POP POP JUMP JUMPDEST PUSH0 PUSH0 PUSH2 0x798 DUP4 PUSH2 0x998 JUMP JUMPDEST SWAP1 POP DUP1 DUP6 GT ISZERO PUSH2 0x7C1 JUMPI DUP3 DUP6 DUP3 PUSH1 0x40 MLOAD PUSH4 0x2E52AFBB PUSH1 0xE2 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x69A SWAP4 SWAP3 SWAP2 SWAP1 PUSH2 0x1431 JUMP JUMPDEST PUSH0 PUSH2 0x7CB DUP7 PUSH2 0x5BE JUMP JUMPDEST SWAP1 POP PUSH2 0x784 CALLER DUP7 DUP7 DUP5 DUP11 PUSH2 0xB61 JUMP JUMPDEST PUSH0 PUSH2 0x7E7 PUSH1 0x63 PUSH0 NOT PUSH2 0x141E JUMP JUMPDEST PUSH1 0x7 SLOAD EQ PUSH2 0x65F JUMPI PUSH1 0x7 SLOAD PUSH2 0x5C9 JUMP JUMPDEST PUSH0 PUSH2 0x5C9 DUP3 PUSH0 PUSH2 0xA17 JUMP JUMPDEST PUSH0 DUP2 SGT ISZERO PUSH2 0x889 JUMPI PUSH1 0x40 MLOAD PUSH4 0x40C10F19 PUSH1 0xE0 SHL DUP2 MSTORE ADDRESS PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x24 DUP2 ADD DUP3 SWAP1 MSTORE PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB PUSH32 0x0 AND SWAP1 PUSH4 0x40C10F19 SWAP1 PUSH1 0x44 ADD JUMPDEST PUSH0 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 PUSH0 DUP8 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x870 JUMPI PUSH0 PUSH0 REVERT JUMPDEST POP GAS CALL ISZERO DUP1 ISZERO PUSH2 0x882 JUMPI RETURNDATASIZE PUSH0 PUSH0 RETURNDATACOPY RETURNDATASIZE PUSH0 REVERT JUMPDEST POP POP POP POP POP JUMP JUMPDEST PUSH32 0x0 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH4 0x9DC29FAC ADDRESS PUSH2 0x8C2 DUP5 PUSH2 0x1452 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xE0 SHL SUB NOT PUSH1 0xE0 DUP6 SWAP1 SHL AND DUP2 MSTORE PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP1 SWAP3 AND PUSH1 0x4 DUP4 ADD MSTORE PUSH1 0x24 DUP3 ADD MSTORE PUSH1 0x44 ADD PUSH2 0x859 JUMP JUMPDEST PUSH0 PUSH2 0x900 PUSH1 0x63 PUSH0 NOT PUSH2 0x141E JUMP JUMPDEST PUSH1 0x8 SLOAD EQ PUSH2 0x910 JUMPI PUSH1 0x8 SLOAD PUSH2 0x5C9 JUMP JUMPDEST PUSH2 0x5C9 DUP3 PUSH2 0xBB7 JUMP JUMPDEST PUSH0 DUP3 PUSH1 0x3 DUP2 GT ISZERO PUSH2 0x92C JUMPI PUSH2 0x92C PUSH2 0x146C JUMP JUMPDEST SUB PUSH2 0x937 JUMPI PUSH1 0x6 DUP2 SWAP1 SSTORE JUMPDEST PUSH1 0x1 DUP3 PUSH1 0x3 DUP2 GT ISZERO PUSH2 0x94B JUMPI PUSH2 0x94B PUSH2 0x146C JUMP JUMPDEST SUB PUSH2 0x956 JUMPI PUSH1 0x7 DUP2 SWAP1 SSTORE JUMPDEST PUSH1 0x2 DUP3 PUSH1 0x3 DUP2 GT ISZERO PUSH2 0x96A JUMPI PUSH2 0x96A PUSH2 0x146C JUMP JUMPDEST SUB PUSH2 0x975 JUMPI PUSH1 0x8 DUP2 SWAP1 SSTORE JUMPDEST PUSH1 0x3 DUP3 PUSH1 0x3 DUP2 GT ISZERO PUSH2 0x989 JUMPI PUSH2 0x989 PUSH2 0x146C JUMP JUMPDEST SUB PUSH2 0x994 JUMPI PUSH1 0x9 DUP2 SWAP1 SSTORE JUMPDEST POP POP JUMP JUMPDEST PUSH0 PUSH2 0x9A5 PUSH1 0x63 PUSH0 NOT PUSH2 0x141E JUMP JUMPDEST PUSH1 0x9 SLOAD EQ PUSH2 0x9B5 JUMPI PUSH1 0x9 SLOAD PUSH2 0x5C9 JUMP JUMPDEST PUSH2 0x5C9 DUP3 PUSH2 0xBC4 JUMP JUMPDEST PUSH2 0x9CA PUSH1 0x63 PUSH0 NOT PUSH2 0x141E JUMP JUMPDEST DUP2 JUMP JUMPDEST PUSH0 PUSH2 0x610 PUSH2 0x9D9 PUSH2 0x49F JUMP JUMPDEST PUSH2 0x9E4 SWAP1 PUSH1 0x1 PUSH2 0x1480 JUMP JUMPDEST PUSH2 0x9EF PUSH0 PUSH1 0xA PUSH2 0x1576 JUMP JUMPDEST PUSH1 0x2 SLOAD PUSH2 0x9FC SWAP2 SWAP1 PUSH2 0x1480 JUMP JUMPDEST DUP6 SWAP2 SWAP1 DUP6 PUSH2 0xBE1 JUMP JUMPDEST PUSH2 0xA12 DUP4 DUP4 DUP4 PUSH1 0x1 PUSH2 0xC23 JUMP JUMPDEST POP POP POP JUMP JUMPDEST PUSH0 PUSH2 0x610 PUSH2 0xA26 DUP3 PUSH1 0xA PUSH2 0x1576 JUMP JUMPDEST PUSH1 0x2 SLOAD PUSH2 0xA33 SWAP2 SWAP1 PUSH2 0x1480 JUMP JUMPDEST PUSH2 0xA3B PUSH2 0x49F JUMP JUMPDEST PUSH2 0x9FC SWAP1 PUSH1 0x1 PUSH2 0x1480 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP4 DUP2 AND PUSH0 SWAP1 DUP2 MSTORE PUSH1 0x1 PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x40 DUP1 DUP4 KECCAK256 SWAP4 DUP7 AND DUP4 MSTORE SWAP3 SWAP1 MSTORE KECCAK256 SLOAD PUSH0 NOT DUP2 LT ISZERO PUSH2 0xAA9 JUMPI DUP2 DUP2 LT ISZERO PUSH2 0xA9B JUMPI DUP3 DUP2 DUP4 PUSH1 0x40 MLOAD PUSH4 0x7DC7A0D9 PUSH1 0xE1 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x69A SWAP4 SWAP3 SWAP2 SWAP1 PUSH2 0x1431 JUMP JUMPDEST PUSH2 0xAA9 DUP5 DUP5 DUP5 DUP5 SUB PUSH0 PUSH2 0xC23 JUMP JUMPDEST POP POP POP POP JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP4 AND PUSH2 0xAD8 JUMPI PUSH1 0x40 MLOAD PUSH4 0x4B637E8F PUSH1 0xE1 SHL DUP2 MSTORE PUSH0 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x24 ADD PUSH2 0x69A JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP3 AND PUSH2 0xB01 JUMPI PUSH1 0x40 MLOAD PUSH4 0xEC442F05 PUSH1 0xE0 SHL DUP2 MSTORE PUSH0 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x24 ADD PUSH2 0x69A JUMP JUMPDEST PUSH2 0xA12 DUP4 DUP4 DUP4 PUSH2 0xCF5 JUMP JUMPDEST PUSH1 0x5 SLOAD PUSH1 0xFF AND ISZERO PUSH2 0xB20 PUSH1 0x4 PUSH0 CALLDATASIZE DUP2 PUSH2 0x1584 JUMP JUMPDEST PUSH2 0xB29 SWAP2 PUSH2 0x15AB JUMP JUMPDEST SWAP1 PUSH2 0xB54 JUMPI PUSH1 0x40 MLOAD PUSH4 0x40C2FD53 PUSH1 0xE1 SHL DUP2 MSTORE PUSH1 0x1 PUSH1 0x1 PUSH1 0xE0 SHL SUB NOT SWAP1 SWAP2 AND PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x24 ADD PUSH2 0x69A JUMP JUMPDEST POP PUSH2 0xAA9 DUP5 DUP5 DUP5 DUP5 PUSH2 0xE08 JUMP JUMPDEST PUSH1 0x5 SLOAD PUSH1 0xFF AND ISZERO PUSH2 0xB75 PUSH1 0x4 PUSH0 CALLDATASIZE DUP2 PUSH2 0x1584 JUMP JUMPDEST PUSH2 0xB7E SWAP2 PUSH2 0x15AB JUMP JUMPDEST SWAP1 PUSH2 0xBA9 JUMPI PUSH1 0x40 MLOAD PUSH4 0x40C2FD53 PUSH1 0xE1 SHL DUP2 MSTORE PUSH1 0x1 PUSH1 0x1 PUSH1 0xE0 SHL SUB NOT SWAP1 SWAP2 AND PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x24 ADD PUSH2 0x69A JUMP JUMPDEST POP PUSH2 0x882 DUP6 DUP6 DUP6 DUP6 DUP6 PUSH2 0xE8C JUMP JUMPDEST PUSH0 PUSH2 0x5C9 PUSH2 0x248 DUP4 PUSH2 0x998 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 AND PUSH0 SWAP1 DUP2 MSTORE PUSH1 0x20 DUP2 SWAP1 MSTORE PUSH1 0x40 DUP2 KECCAK256 SLOAD PUSH2 0x5C9 JUMP JUMPDEST PUSH0 PUSH2 0xC0E PUSH2 0xBEE DUP4 PUSH2 0xF4C JUMP JUMPDEST DUP1 ISZERO PUSH2 0xC09 JUMPI POP PUSH0 DUP5 DUP1 PUSH2 0xC04 JUMPI PUSH2 0xC04 PUSH2 0x15E3 JUMP JUMPDEST DUP7 DUP9 MULMOD GT JUMPDEST ISZERO ISZERO SWAP1 JUMP JUMPDEST PUSH2 0xC19 DUP7 DUP7 DUP7 PUSH2 0xF78 JUMP JUMPDEST PUSH2 0x784 SWAP2 SWAP1 PUSH2 0x1480 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP5 AND PUSH2 0xC4C JUMPI PUSH1 0x40 MLOAD PUSH4 0xE602DF05 PUSH1 0xE0 SHL DUP2 MSTORE PUSH0 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x24 ADD PUSH2 0x69A JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP4 AND PUSH2 0xC75 JUMPI PUSH1 0x40 MLOAD PUSH4 0x4A1406B1 PUSH1 0xE1 SHL DUP2 MSTORE PUSH0 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x24 ADD PUSH2 0x69A JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP1 DUP6 AND PUSH0 SWAP1 DUP2 MSTORE PUSH1 0x1 PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x40 DUP1 DUP4 KECCAK256 SWAP4 DUP8 AND DUP4 MSTORE SWAP3 SWAP1 MSTORE KECCAK256 DUP3 SWAP1 SSTORE DUP1 ISZERO PUSH2 0xAA9 JUMPI DUP3 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP5 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH32 0x8C5BE1E5EBEC7D5BD14F71427D1E84F3DD0314C0F7B2291E5B200AC8C7C3B925 DUP5 PUSH1 0x40 MLOAD PUSH2 0xCE7 SWAP2 DUP2 MSTORE PUSH1 0x20 ADD SWAP1 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 LOG3 POP POP POP POP JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP4 AND PUSH2 0xD1F JUMPI DUP1 PUSH1 0x2 PUSH0 DUP3 DUP3 SLOAD PUSH2 0xD14 SWAP2 SWAP1 PUSH2 0x1480 JUMP JUMPDEST SWAP1 SWAP2 SSTORE POP PUSH2 0xD7C SWAP1 POP JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP4 AND PUSH0 SWAP1 DUP2 MSTORE PUSH1 0x20 DUP2 SWAP1 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD DUP2 DUP2 LT ISZERO PUSH2 0xD5E JUMPI DUP4 DUP2 DUP4 PUSH1 0x40 MLOAD PUSH4 0x391434E3 PUSH1 0xE2 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x69A SWAP4 SWAP3 SWAP2 SWAP1 PUSH2 0x1431 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP5 AND PUSH0 SWAP1 DUP2 MSTORE PUSH1 0x20 DUP2 SWAP1 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SWAP1 DUP3 SWAP1 SUB SWAP1 SSTORE JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP3 AND PUSH2 0xD98 JUMPI PUSH1 0x2 DUP1 SLOAD DUP3 SWAP1 SUB SWAP1 SSTORE PUSH2 0xDB6 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP3 AND PUSH0 SWAP1 DUP2 MSTORE PUSH1 0x20 DUP2 SWAP1 MSTORE PUSH1 0x40 SWAP1 KECCAK256 DUP1 SLOAD DUP3 ADD SWAP1 SSTORE JUMPDEST DUP2 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP4 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH32 0xDDF252AD1BE2C89B69C2B068FC378DAA952BA7F163C4A11628F55A4DF523B3EF DUP4 PUSH1 0x40 MLOAD PUSH2 0xDFB SWAP2 DUP2 MSTORE PUSH1 0x20 ADD SWAP1 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 LOG3 POP POP POP JUMP JUMPDEST PUSH2 0xE34 PUSH32 0x0 DUP6 ADDRESS DUP6 PUSH2 0x1028 JUMP JUMPDEST PUSH2 0xE3E DUP4 DUP3 PUSH2 0x105E JUMP JUMPDEST DUP3 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP5 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH32 0xDCBC1C05240F31FF3AD067EF1EE35CE4997762752E3A095284754544F4C709D7 DUP5 DUP5 PUSH1 0x40 MLOAD PUSH2 0xCE7 SWAP3 SWAP2 SWAP1 SWAP2 DUP3 MSTORE PUSH1 0x20 DUP3 ADD MSTORE PUSH1 0x40 ADD SWAP1 JUMP JUMPDEST DUP3 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP6 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND EQ PUSH2 0xEB0 JUMPI PUSH2 0xEB0 DUP4 DUP7 DUP4 PUSH2 0xA46 JUMP JUMPDEST PUSH2 0xEBA DUP4 DUP3 PUSH2 0x1092 JUMP JUMPDEST PUSH2 0xEE5 PUSH32 0x0 DUP6 DUP5 PUSH2 0x10C6 JUMP JUMPDEST DUP3 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP5 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP7 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH32 0xFBDE797D201C681B91056529119E0B02407C7BB96A4A2C75C01FC9667232C8DB DUP6 DUP6 PUSH1 0x40 MLOAD PUSH2 0xF3D 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 POP POP POP JUMP JUMPDEST PUSH0 PUSH1 0x2 DUP3 PUSH1 0x3 DUP2 GT ISZERO PUSH2 0xF61 JUMPI PUSH2 0xF61 PUSH2 0x146C JUMP JUMPDEST PUSH2 0xF6B SWAP2 SWAP1 PUSH2 0x15F7 JUMP JUMPDEST PUSH1 0xFF AND PUSH1 0x1 EQ SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH0 PUSH0 PUSH0 PUSH2 0xF85 DUP7 DUP7 PUSH2 0x10FB JUMP JUMPDEST SWAP2 POP SWAP2 POP DUP2 PUSH0 SUB PUSH2 0xFA9 JUMPI DUP4 DUP2 DUP2 PUSH2 0xF9F JUMPI PUSH2 0xF9F PUSH2 0x15E3 JUMP JUMPDEST DIV SWAP3 POP POP POP PUSH2 0x610 JUMP JUMPDEST DUP2 DUP5 GT PUSH2 0xFC0 JUMPI PUSH2 0xFC0 PUSH1 0x3 DUP6 ISZERO MUL PUSH1 0x11 XOR PUSH2 0x1117 JUMP JUMPDEST PUSH0 DUP5 DUP7 DUP9 MULMOD PUSH0 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 DUP6 DUP5 GT SWAP1 SWAP7 SUB SWAP6 SWAP1 SWAP6 MUL SWAP2 SWAP1 SWAP4 SUB SWAP4 SWAP1 SWAP4 DIV SWAP3 SWAP1 SWAP3 OR MUL SWAP2 POP POP SWAP4 SWAP3 POP POP POP JUMP JUMPDEST PUSH2 0x1036 DUP5 DUP5 DUP5 DUP5 PUSH1 0x1 PUSH2 0x1128 JUMP JUMPDEST PUSH2 0xAA9 JUMPI PUSH1 0x40 MLOAD PUSH4 0x5274AFE7 PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP6 AND PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x24 ADD PUSH2 0x69A JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP3 AND PUSH2 0x1087 JUMPI PUSH1 0x40 MLOAD PUSH4 0xEC442F05 PUSH1 0xE0 SHL DUP2 MSTORE PUSH0 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x24 ADD PUSH2 0x69A JUMP JUMPDEST PUSH2 0x994 PUSH0 DUP4 DUP4 PUSH2 0xCF5 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP3 AND PUSH2 0x10BB JUMPI PUSH1 0x40 MLOAD PUSH4 0x4B637E8F PUSH1 0xE1 SHL DUP2 MSTORE PUSH0 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x24 ADD PUSH2 0x69A JUMP JUMPDEST PUSH2 0x994 DUP3 PUSH0 DUP4 PUSH2 0xCF5 JUMP JUMPDEST PUSH2 0x10D3 DUP4 DUP4 DUP4 PUSH1 0x1 PUSH2 0x1195 JUMP JUMPDEST PUSH2 0xA12 JUMPI PUSH1 0x40 MLOAD PUSH4 0x5274AFE7 PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP5 AND PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x24 ADD PUSH2 0x69A JUMP JUMPDEST PUSH0 DUP1 PUSH0 NOT DUP4 DUP6 MULMOD SWAP4 SWAP1 SWAP3 MUL DUP1 DUP5 LT SWAP4 DUP2 SWAP1 SUB SWAP4 SWAP1 SWAP4 SUB SWAP4 SWAP2 POP POP JUMP JUMPDEST PUSH4 0x4E487B71 PUSH0 MSTORE DUP1 PUSH1 0x20 MSTORE PUSH1 0x24 PUSH1 0x1C REVERT JUMPDEST PUSH1 0x40 MLOAD PUSH4 0x23B872DD PUSH1 0xE0 SHL PUSH0 DUP2 DUP2 MSTORE PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP8 DUP2 AND PUSH1 0x4 MSTORE DUP7 AND PUSH1 0x24 MSTORE PUSH1 0x44 DUP6 SWAP1 MSTORE SWAP2 PUSH1 0x20 DUP4 PUSH1 0x64 DUP2 DUP1 DUP13 GAS CALL SWAP3 POP PUSH1 0x1 PUSH0 MLOAD EQ DUP4 AND PUSH2 0x1184 JUMPI DUP4 DUP4 ISZERO AND ISZERO PUSH2 0x1178 JUMPI RETURNDATASIZE PUSH0 DUP3 RETURNDATACOPY RETURNDATASIZE DUP2 REVERT JUMPDEST PUSH0 DUP9 EXTCODESIZE GT RETURNDATASIZE ISZERO AND DUP4 AND SWAP3 POP JUMPDEST PUSH1 0x40 MSTORE POP PUSH0 PUSH1 0x60 MSTORE SWAP6 SWAP5 POP POP POP POP POP JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH4 0xA9059CBB PUSH1 0xE0 SHL PUSH0 DUP2 DUP2 MSTORE PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP7 AND PUSH1 0x4 MSTORE PUSH1 0x24 DUP6 SWAP1 MSTORE SWAP2 PUSH1 0x20 DUP4 PUSH1 0x44 DUP2 DUP1 DUP12 GAS CALL SWAP3 POP PUSH1 0x1 PUSH0 MLOAD EQ DUP4 AND PUSH2 0x11EB JUMPI DUP4 DUP4 ISZERO AND ISZERO PUSH2 0x11DF JUMPI RETURNDATASIZE PUSH0 DUP3 RETURNDATACOPY RETURNDATASIZE DUP2 REVERT JUMPDEST PUSH0 DUP8 EXTCODESIZE GT RETURNDATASIZE ISZERO AND DUP4 AND SWAP3 POP JUMPDEST PUSH1 0x40 MSTORE POP SWAP5 SWAP4 POP POP POP POP JUMP JUMPDEST PUSH1 0x20 DUP2 MSTORE PUSH0 DUP3 MLOAD DUP1 PUSH1 0x20 DUP5 ADD MSTORE DUP1 PUSH1 0x20 DUP6 ADD PUSH1 0x40 DUP6 ADD MCOPY PUSH0 PUSH1 0x40 DUP3 DUP6 ADD ADD MSTORE PUSH1 0x40 PUSH1 0x1F NOT PUSH1 0x1F DUP4 ADD AND DUP5 ADD ADD SWAP2 POP POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x123C JUMPI PUSH0 PUSH0 REVERT JUMPDEST POP CALLDATALOAD SWAP2 SWAP1 POP JUMP JUMPDEST DUP1 CALLDATALOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 AND DUP2 EQ PUSH2 0x1259 JUMPI PUSH0 PUSH0 REVERT JUMPDEST SWAP2 SWAP1 POP JUMP JUMPDEST PUSH0 PUSH0 PUSH1 0x40 DUP4 DUP6 SUB SLT ISZERO PUSH2 0x126F JUMPI PUSH0 PUSH0 REVERT JUMPDEST PUSH2 0x1278 DUP4 PUSH2 0x1243 JUMP JUMPDEST SWAP5 PUSH1 0x20 SWAP4 SWAP1 SWAP4 ADD CALLDATALOAD SWAP4 POP POP POP JUMP JUMPDEST PUSH0 PUSH0 PUSH0 PUSH1 0x60 DUP5 DUP7 SUB SLT ISZERO PUSH2 0x1298 JUMPI PUSH0 PUSH0 REVERT JUMPDEST PUSH2 0x12A1 DUP5 PUSH2 0x1243 JUMP JUMPDEST SWAP3 POP PUSH2 0x12AF PUSH1 0x20 DUP6 ADD PUSH2 0x1243 JUMP JUMPDEST SWAP3 SWAP6 SWAP3 SWAP5 POP POP POP PUSH1 0x40 SWAP2 SWAP1 SWAP2 ADD CALLDATALOAD SWAP1 JUMP JUMPDEST PUSH0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x12D0 JUMPI PUSH0 PUSH0 REVERT JUMPDEST PUSH2 0x610 DUP3 PUSH2 0x1243 JUMP JUMPDEST PUSH0 PUSH0 PUSH1 0x40 DUP4 DUP6 SUB SLT ISZERO PUSH2 0x12EA JUMPI PUSH0 PUSH0 REVERT JUMPDEST DUP3 CALLDATALOAD SWAP2 POP PUSH2 0x12FA PUSH1 0x20 DUP5 ADD PUSH2 0x1243 JUMP JUMPDEST SWAP1 POP SWAP3 POP SWAP3 SWAP1 POP JUMP JUMPDEST PUSH0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x1313 JUMPI PUSH0 PUSH0 REVERT JUMPDEST DUP2 CALLDATALOAD DUP1 ISZERO ISZERO DUP2 EQ PUSH2 0x610 JUMPI PUSH0 PUSH0 REVERT JUMPDEST PUSH0 PUSH0 PUSH0 PUSH1 0x60 DUP5 DUP7 SUB SLT ISZERO PUSH2 0x1334 JUMPI PUSH0 PUSH0 REVERT JUMPDEST DUP4 CALLDATALOAD SWAP3 POP PUSH2 0x1344 PUSH1 0x20 DUP6 ADD PUSH2 0x1243 JUMP JUMPDEST SWAP2 POP PUSH2 0x1352 PUSH1 0x40 DUP6 ADD PUSH2 0x1243 JUMP JUMPDEST SWAP1 POP SWAP3 POP SWAP3 POP SWAP3 JUMP JUMPDEST PUSH0 PUSH0 PUSH1 0x40 DUP4 DUP6 SUB SLT ISZERO PUSH2 0x136C JUMPI PUSH0 PUSH0 REVERT JUMPDEST DUP3 CALLDATALOAD PUSH1 0x4 DUP2 LT PUSH2 0x1278 JUMPI PUSH0 PUSH0 REVERT JUMPDEST PUSH0 PUSH0 PUSH1 0x40 DUP4 DUP6 SUB SLT ISZERO PUSH2 0x138B JUMPI PUSH0 PUSH0 REVERT JUMPDEST PUSH2 0x1394 DUP4 PUSH2 0x1243 JUMP JUMPDEST SWAP2 POP PUSH2 0x12FA PUSH1 0x20 DUP5 ADD PUSH2 0x1243 JUMP JUMPDEST PUSH0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x13B2 JUMPI PUSH0 PUSH0 REVERT JUMPDEST POP MLOAD SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x1 DUP2 DUP2 SHR SWAP1 DUP3 AND DUP1 PUSH2 0x13CD JUMPI PUSH1 0x7F DUP3 AND SWAP2 POP JUMPDEST PUSH1 0x20 DUP3 LT DUP2 SUB PUSH2 0x13EB JUMPI PUSH4 0x4E487B71 PUSH1 0xE0 SHL PUSH0 MSTORE PUSH1 0x22 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH0 REVERT JUMPDEST POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH4 0x4E487B71 PUSH1 0xE0 SHL PUSH0 MSTORE PUSH1 0x11 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH0 REVERT JUMPDEST PUSH1 0xFF DUP2 DUP2 AND DUP4 DUP3 AND ADD SWAP1 DUP2 GT ISZERO PUSH2 0x5C9 JUMPI PUSH2 0x5C9 PUSH2 0x13F1 JUMP JUMPDEST DUP2 DUP2 SUB DUP2 DUP2 GT ISZERO PUSH2 0x5C9 JUMPI PUSH2 0x5C9 PUSH2 0x13F1 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP4 SWAP1 SWAP4 AND DUP4 MSTORE PUSH1 0x20 DUP4 ADD SWAP2 SWAP1 SWAP2 MSTORE PUSH1 0x40 DUP3 ADD MSTORE PUSH1 0x60 ADD SWAP1 JUMP JUMPDEST PUSH0 PUSH1 0x1 PUSH1 0xFF SHL DUP3 ADD PUSH2 0x1466 JUMPI PUSH2 0x1466 PUSH2 0x13F1 JUMP JUMPDEST POP PUSH0 SUB SWAP1 JUMP JUMPDEST PUSH4 0x4E487B71 PUSH1 0xE0 SHL PUSH0 MSTORE PUSH1 0x21 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH0 REVERT JUMPDEST DUP1 DUP3 ADD DUP1 DUP3 GT ISZERO PUSH2 0x5C9 JUMPI PUSH2 0x5C9 PUSH2 0x13F1 JUMP JUMPDEST PUSH1 0x1 DUP2 JUMPDEST PUSH1 0x1 DUP5 GT ISZERO PUSH2 0x14CE JUMPI DUP1 DUP6 DIV DUP2 GT ISZERO PUSH2 0x14B2 JUMPI PUSH2 0x14B2 PUSH2 0x13F1 JUMP JUMPDEST PUSH1 0x1 DUP5 AND ISZERO PUSH2 0x14C0 JUMPI SWAP1 DUP2 MUL SWAP1 JUMPDEST PUSH1 0x1 SWAP4 SWAP1 SWAP4 SHR SWAP3 DUP1 MUL PUSH2 0x1497 JUMP JUMPDEST SWAP4 POP SWAP4 SWAP2 POP POP JUMP JUMPDEST PUSH0 DUP3 PUSH2 0x14E4 JUMPI POP PUSH1 0x1 PUSH2 0x5C9 JUMP JUMPDEST DUP2 PUSH2 0x14F0 JUMPI POP PUSH0 PUSH2 0x5C9 JUMP JUMPDEST DUP2 PUSH1 0x1 DUP2 EQ PUSH2 0x1506 JUMPI PUSH1 0x2 DUP2 EQ PUSH2 0x1510 JUMPI PUSH2 0x152C JUMP JUMPDEST PUSH1 0x1 SWAP2 POP POP PUSH2 0x5C9 JUMP JUMPDEST PUSH1 0xFF DUP5 GT ISZERO PUSH2 0x1521 JUMPI PUSH2 0x1521 PUSH2 0x13F1 JUMP JUMPDEST POP POP PUSH1 0x1 DUP3 SHL PUSH2 0x5C9 JUMP JUMPDEST POP PUSH1 0x20 DUP4 LT PUSH2 0x133 DUP4 LT AND PUSH1 0x4E DUP5 LT PUSH1 0xB DUP5 LT AND OR ISZERO PUSH2 0x154F JUMPI POP DUP2 DUP2 EXP PUSH2 0x5C9 JUMP JUMPDEST PUSH2 0x155B PUSH0 NOT DUP5 DUP5 PUSH2 0x1493 JUMP JUMPDEST DUP1 PUSH0 NOT DIV DUP3 GT ISZERO PUSH2 0x156E JUMPI PUSH2 0x156E PUSH2 0x13F1 JUMP JUMPDEST MUL SWAP4 SWAP3 POP POP POP JUMP JUMPDEST PUSH0 PUSH2 0x610 PUSH1 0xFF DUP5 AND DUP4 PUSH2 0x14D6 JUMP JUMPDEST PUSH0 PUSH0 DUP6 DUP6 GT ISZERO PUSH2 0x1592 JUMPI PUSH0 PUSH0 REVERT JUMPDEST DUP4 DUP7 GT ISZERO PUSH2 0x159E JUMPI PUSH0 PUSH0 REVERT JUMPDEST POP POP DUP3 ADD SWAP4 SWAP2 SWAP1 SWAP3 SUB SWAP2 POP JUMP JUMPDEST DUP1 CALLDATALOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xE0 SHL SUB NOT DUP2 AND SWAP1 PUSH1 0x4 DUP5 LT ISZERO PUSH2 0x15DC JUMPI PUSH1 0x1 PUSH1 0x1 PUSH1 0xE0 SHL SUB NOT PUSH1 0x4 DUP6 SWAP1 SUB PUSH1 0x3 SHL DUP2 SWAP1 SHL DUP3 AND AND SWAP2 POP JUMPDEST POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH4 0x4E487B71 PUSH1 0xE0 SHL PUSH0 MSTORE PUSH1 0x12 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH0 REVERT JUMPDEST PUSH0 PUSH1 0xFF DUP4 AND DUP1 PUSH2 0x1615 JUMPI PUSH4 0x4E487B71 PUSH1 0xE0 SHL PUSH0 MSTORE PUSH1 0x12 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH0 REVERT JUMPDEST DUP1 PUSH1 0xFF DUP5 AND MOD SWAP2 POP POP SWAP3 SWAP2 POP POP JUMP INVALID LOG2 PUSH5 0x6970667358 0x22 SLT KECCAK256 COINBASE LOG2 CODECOPY PUSH24 0x3B0C4F47712D5277CD163F3256EB28220D6A600A22CF02FD SIGNEXTEND CALL 0xA5 SWAP1 PUSH5 0x736F6C6343 STOP ADDMOD 0x1E STOP CALLER ","sourceMap":"462:2711:10:-:0;;;953:223;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;1062:6;1038:5;1045:7;1648:5:32;:13;1038:5:10;1648::32;:13;:::i;:::-;-1:-1:-1;1671:7:32;:17;1681:7;1671;:17;:::i;:::-;;1582:113;;5565:12:34;5579:19;5602:28;5623:6;5602:20;;;:28;;:::i;:::-;5564:66;;;;5662:7;:28;;5688:2;5662:28;;;5672:13;5662:28;5640:50;;;;-1:-1:-1;;;;;;;5700:15:34;;;711:22:10::2;731:2;-1:-1:-1::0;;711:22:10::2;:::i;:::-;1136:18;:35:::0;;;1118:15:::2;:53:::0;;;1096:19:::2;:75:::0;;;1076:17:::2;:95:::0;-1:-1:-1;462:2711:10;;-1:-1:-1;;462:2711:10;5865:607:34;5932:7;;;5993:29;1025:4:41;1019:11;;895:151;5993:29:34;6156:43;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;6156:43:34;;;-1:-1:-1;;;6156:43:34;;;;5972:50;;-1:-1:-1;6033:12:34;;;;6077:132;;6135:6;;6156:43;6077:36;:132;:::i;:::-;-1:-1:-1;6032:177:34;;-1:-1:-1;6032:177:34;-1:-1:-1;6219:32:34;6247:3;1311:4:41;1304:17;1198:139;6219:32:34;6282:7;:46;;;;-1:-1:-1;6326:2:34;4583:16:40;6293:35:34;;6282:46;:94;;;;-1:-1:-1;6361:15:34;6332:44;;;6282:94;6281:184;;6456:5;6463:1;6281:184;;;6397:4;6417:16;6281:184;6262:203;;;;;;;5865:607;;;:::o;2893:374:40:-;3006:12;3020:15;3037;3176:4;3170;3163;3157:11;3150:4;3144;3140:15;3132:6;3125:5;3114:67;3103:78;;3211:4;3205:11;3194:22;;3246:4;3240:11;3229:22;;2893:374;;;;;:::o;14:127:87:-;75:10;70:3;66:20;63:1;56:31;106:4;103:1;96:15;130:4;127:1;120:15;146:723;200:5;253:3;246:4;238:6;234:17;230:27;220:55;;271:1;268;261:12;220:55;298:13;;-1:-1:-1;;;;;323:30:87;;320:56;;;356:18;;:::i;:::-;405:2;399:9;497:2;459:17;;-1:-1:-1;;455:31:87;;;488:2;451:40;447:54;435:67;;-1:-1:-1;;;;;517:34:87;;553:22;;;514:62;511:88;;;579:18;;:::i;:::-;615:2;608:22;639;;;680:19;;;701:4;676:30;673:39;-1:-1:-1;670:59:87;;;725:1;722;715:12;670:59;782:6;775:4;767:6;763:17;756:4;748:6;744:17;738:51;837:1;809:19;;;830:4;805:30;798:41;;;;813:6;146:723;-1:-1:-1;;;146:723:87:o;874:747::-;1005:6;1013;1021;1074:2;1062:9;1053:7;1049:23;1045:32;1042:52;;;1090:1;1087;1080:12;1042:52;1117:16;;-1:-1:-1;;;;;1145:30:87;;1142:50;;;1188:1;1185;1178:12;1142:50;1211:61;1264:7;1255:6;1244:9;1240:22;1211:61;:::i;:::-;1318:2;1303:18;;1297:25;1201:71;;-1:-1:-1;1297:25:87;-1:-1:-1;;;;;;1334:32:87;;1331:52;;;1379:1;1376;1369:12;1331:52;1402:63;1457:7;1446:8;1435:9;1431:24;1402:63;:::i;:::-;1508:2;1493:18;;1487:25;1392:73;;-1:-1:-1;1487:25:87;-1:-1:-1;;;;;;1541:31:87;;1531:42;;1521:70;;1587:1;1584;1577:12;1521:70;1610:5;1600:15;;;874:747;;;;;:::o;1626:380::-;1705:1;1701:12;;;;1748;;;1769:61;;1823:4;1815:6;1811:17;1801:27;;1769:61;1876:2;1868:6;1865:14;1845:18;1842:38;1839:161;;1922:10;1917:3;1913:20;1910:1;1903:31;1957:4;1954:1;1947:15;1985:4;1982:1;1975:15;1839:161;;1626:380;;;:::o;2137:518::-;2239:2;2234:3;2231:11;2228:421;;;2275:5;2272:1;2265:16;2319:4;2316:1;2306:18;2389:2;2377:10;2373:19;2370:1;2366:27;2360:4;2356:38;2425:4;2413:10;2410:20;2407:47;;;-1:-1:-1;2448:4:87;2407:47;2503:2;2498:3;2494:12;2491:1;2487:20;2481:4;2477:31;2467:41;;2558:81;2576:2;2569:5;2566:13;2558:81;;;2635:1;2621:16;;2602:1;2591:13;2558:81;;;2562:3;;2228:421;2137:518;;;:::o;2831:1299::-;2951:10;;-1:-1:-1;;;;;2973:30:87;;2970:56;;;3006:18;;:::i;:::-;3035:97;3125:6;3085:38;3117:4;3111:11;3085:38;:::i;:::-;3079:4;3035:97;:::i;:::-;3181:4;3212:2;3201:14;;3229:1;3224:649;;;;3917:1;3934:6;3931:89;;;-1:-1:-1;3986:19:87;;;3980:26;3931:89;-1:-1:-1;;2788:1:87;2784:11;;;2780:24;2776:29;2766:40;2812:1;2808:11;;;2763:57;4033:81;;3194:930;;3224:649;2084:1;2077:14;;;2121:4;2108:18;;-1:-1:-1;;3260:20:87;;;3378:222;3392:7;3389:1;3386:14;3378:222;;;3474:19;;;3468:26;3453:42;;3581:4;3566:20;;;;3534:1;3522:14;;;;3408:12;3378:222;;;3382:3;3628:6;3619:7;3616:19;3613:201;;;3689:19;;;3683:26;-1:-1:-1;;3772:1:87;3768:14;;;3784:3;3764:24;3760:37;3756:42;3741:58;3726:74;;3613:201;-1:-1:-1;;;;3860:1:87;3844:14;;;3840:22;3827:36;;-1:-1:-1;2831:1299:87:o;4135:225::-;4202:9;;;4223:11;;;4220:134;;;4276:10;4271:3;4267:20;4264:1;4257:31;4311:4;4308:1;4301:15;4339:4;4336:1;4329:15;4220:134;4135:225;;;;:::o;:::-;462:2711:10;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;"},"deployedBytecode":{"functionDebugData":{"@OVERRIDE_UNSET_2753":{"entryPoint":2494,"id":2753,"parameterSlots":0,"returnSlots":0},"@_approve_8492":{"entryPoint":2565,"id":8492,"parameterSlots":3,"returnSlots":0},"@_approve_8552":{"entryPoint":3107,"id":8552,"parameterSlots":4,"returnSlots":0},"@_burn_8474":{"entryPoint":4242,"id":8474,"parameterSlots":2,"returnSlots":0},"@_convertToAssets_9286":{"entryPoint":2509,"id":9286,"parameterSlots":2,"returnSlots":1},"@_convertToShares_9258":{"entryPoint":2583,"id":9258,"parameterSlots":2,"returnSlots":1},"@_decimalsOffset_9384":{"entryPoint":null,"id":9384,"parameterSlots":0,"returnSlots":1},"@_deposit_2833":{"entryPoint":2828,"id":2833,"parameterSlots":4,"returnSlots":0},"@_deposit_9326":{"entryPoint":3592,"id":9326,"parameterSlots":4,"returnSlots":0},"@_mint_8441":{"entryPoint":4190,"id":8441,"parameterSlots":2,"returnSlots":0},"@_msgSender_10268":{"entryPoint":null,"id":10268,"parameterSlots":0,"returnSlots":1},"@_safeTransferFrom_9842":{"entryPoint":4392,"id":9842,"parameterSlots":5,"returnSlots":1},"@_safeTransfer_9817":{"entryPoint":4501,"id":9817,"parameterSlots":4,"returnSlots":1},"@_spendAllowance_8600":{"entryPoint":2630,"id":8600,"parameterSlots":3,"returnSlots":0},"@_transfer_8331":{"entryPoint":2735,"id":8331,"parameterSlots":3,"returnSlots":0},"@_update_8408":{"entryPoint":3317,"id":8408,"parameterSlots":3,"returnSlots":0},"@_withdraw_2860":{"entryPoint":2913,"id":2860,"parameterSlots":5,"returnSlots":0},"@_withdraw_9376":{"entryPoint":3724,"id":9376,"parameterSlots":5,"returnSlots":0},"@allowance_8228":{"entryPoint":null,"id":8228,"parameterSlots":2,"returnSlots":1},"@approve_8252":{"entryPoint":1487,"id":8252,"parameterSlots":2,"returnSlots":1},"@asset_8876":{"entryPoint":null,"id":8876,"parameterSlots":0,"returnSlots":1},"@balanceOf_8187":{"entryPoint":null,"id":8187,"parameterSlots":1,"returnSlots":1},"@broken_2921":{"entryPoint":null,"id":2921,"parameterSlots":0,"returnSlots":1},"@convertToAssets_8926":{"entryPoint":1470,"id":8926,"parameterSlots":1,"returnSlots":1},"@convertToShares_8910":{"entryPoint":2039,"id":8910,"parameterSlots":1,"returnSlots":1},"@decimals_8864":{"entryPoint":1559,"id":8864,"parameterSlots":0,"returnSlots":1},"@deposit_9092":{"entryPoint":1638,"id":9092,"parameterSlots":2,"returnSlots":1},"@discreteEarning_2903":{"entryPoint":2050,"id":2903,"parameterSlots":1,"returnSlots":0},"@maxDeposit_2940":{"entryPoint":1602,"id":2940,"parameterSlots":1,"returnSlots":1},"@maxDeposit_8941":{"entryPoint":null,"id":8941,"parameterSlots":1,"returnSlots":1},"@maxMint_2959":{"entryPoint":2010,"id":2959,"parameterSlots":1,"returnSlots":1},"@maxMint_8956":{"entryPoint":null,"id":8956,"parameterSlots":1,"returnSlots":1},"@maxRedeem_2997":{"entryPoint":2456,"id":2997,"parameterSlots":1,"returnSlots":1},"@maxRedeem_8984":{"entryPoint":3012,"id":8984,"parameterSlots":1,"returnSlots":1},"@maxWithdraw_2978":{"entryPoint":2291,"id":2978,"parameterSlots":1,"returnSlots":1},"@maxWithdraw_8971":{"entryPoint":2999,"id":8971,"parameterSlots":1,"returnSlots":1},"@mint_9136":{"entryPoint":1731,"id":9136,"parameterSlots":2,"returnSlots":1},"@mul512_11124":{"entryPoint":4347,"id":11124,"parameterSlots":2,"returnSlots":2},"@mulDiv_11611":{"entryPoint":3960,"id":11611,"parameterSlots":3,"returnSlots":1},"@mulDiv_11648":{"entryPoint":3041,"id":11648,"parameterSlots":4,"returnSlots":1},"@name_8147":{"entryPoint":1326,"id":8147,"parameterSlots":0,"returnSlots":1},"@overrideMaxDeposit_2738":{"entryPoint":null,"id":2738,"parameterSlots":0,"returnSlots":0},"@overrideMaxMint_2740":{"entryPoint":null,"id":2740,"parameterSlots":0,"returnSlots":0},"@overrideMaxRedeem_2744":{"entryPoint":null,"id":2744,"parameterSlots":0,"returnSlots":0},"@overrideMaxWithdraw_2742":{"entryPoint":null,"id":2742,"parameterSlots":0,"returnSlots":0},"@panic_10907":{"entryPoint":4375,"id":10907,"parameterSlots":1,"returnSlots":0},"@previewDeposit_9000":{"entryPoint":null,"id":9000,"parameterSlots":1,"returnSlots":1},"@previewMint_9016":{"entryPoint":1835,"id":9016,"parameterSlots":1,"returnSlots":1},"@previewRedeem_9048":{"entryPoint":null,"id":9048,"parameterSlots":1,"returnSlots":1},"@previewWithdraw_9032":{"entryPoint":1510,"id":9032,"parameterSlots":1,"returnSlots":1},"@redeem_9230":{"entryPoint":1933,"id":9230,"parameterSlots":3,"returnSlots":1},"@safeTransferFrom_9491":{"entryPoint":4136,"id":9491,"parameterSlots":4,"returnSlots":0},"@safeTransfer_9460":{"entryPoint":4294,"id":9460,"parameterSlots":3,"returnSlots":0},"@setBroken_2913":{"entryPoint":null,"id":2913,"parameterSlots":1,"returnSlots":0},"@setOverride_3042":{"entryPoint":2329,"id":3042,"parameterSlots":2,"returnSlots":0},"@symbol_8156":{"entryPoint":1807,"id":8156,"parameterSlots":0,"returnSlots":1},"@ternary_11373":{"entryPoint":null,"id":11373,"parameterSlots":3,"returnSlots":1},"@toUint_14490":{"entryPoint":null,"id":14490,"parameterSlots":1,"returnSlots":1},"@totalAssets_8894":{"entryPoint":1183,"id":8894,"parameterSlots":0,"returnSlots":1},"@totalSupply_8174":{"entryPoint":null,"id":8174,"parameterSlots":0,"returnSlots":1},"@transferFrom_8284":{"entryPoint":1522,"id":8284,"parameterSlots":3,"returnSlots":1},"@transfer_8211":{"entryPoint":1822,"id":8211,"parameterSlots":2,"returnSlots":1},"@unsignedRoundsUp_12704":{"entryPoint":3916,"id":12704,"parameterSlots":1,"returnSlots":1},"@withdraw_9183":{"entryPoint":1847,"id":9183,"parameterSlots":3,"returnSlots":1},"abi_decode_address":{"entryPoint":4675,"id":null,"parameterSlots":1,"returnSlots":1},"abi_decode_tuple_t_address":{"entryPoint":4800,"id":null,"parameterSlots":2,"returnSlots":1},"abi_decode_tuple_t_addresst_address":{"entryPoint":4986,"id":null,"parameterSlots":2,"returnSlots":2},"abi_decode_tuple_t_addresst_addresst_uint256":{"entryPoint":4742,"id":null,"parameterSlots":2,"returnSlots":3},"abi_decode_tuple_t_addresst_uint256":{"entryPoint":4702,"id":null,"parameterSlots":2,"returnSlots":2},"abi_decode_tuple_t_bool":{"entryPoint":4867,"id":null,"parameterSlots":2,"returnSlots":1},"abi_decode_tuple_t_enum$_OverrideOption_$2758t_uint256":{"entryPoint":4955,"id":null,"parameterSlots":2,"returnSlots":2},"abi_decode_tuple_t_int256":{"entryPoint":null,"id":null,"parameterSlots":2,"returnSlots":1},"abi_decode_tuple_t_uint256":{"entryPoint":4652,"id":null,"parameterSlots":2,"returnSlots":1},"abi_decode_tuple_t_uint256_fromMemory":{"entryPoint":5026,"id":null,"parameterSlots":2,"returnSlots":1},"abi_decode_tuple_t_uint256t_address":{"entryPoint":4825,"id":null,"parameterSlots":2,"returnSlots":2},"abi_decode_tuple_t_uint256t_addresst_address":{"entryPoint":4898,"id":null,"parameterSlots":2,"returnSlots":3},"abi_encode_tuple_t_address__to_t_address__fromStack_reversed":{"entryPoint":null,"id":null,"parameterSlots":2,"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_address_t_uint256_t_uint256__to_t_address_t_uint256_t_uint256__fromStack_reversed":{"entryPoint":5169,"id":null,"parameterSlots":4,"returnSlots":1},"abi_encode_tuple_t_bool__to_t_bool__fromStack_reversed":{"entryPoint":null,"id":null,"parameterSlots":2,"returnSlots":1},"abi_encode_tuple_t_bytes4__to_t_bytes4__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":4599,"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_uint8__to_t_uint8__fromStack_reversed":{"entryPoint":null,"id":null,"parameterSlots":2,"returnSlots":1},"calldata_array_index_range_access_t_bytes_calldata_ptr":{"entryPoint":5508,"id":null,"parameterSlots":4,"returnSlots":2},"checked_add_t_uint256":{"entryPoint":5248,"id":null,"parameterSlots":2,"returnSlots":1},"checked_add_t_uint8":{"entryPoint":5125,"id":null,"parameterSlots":2,"returnSlots":1},"checked_exp_helper":{"entryPoint":5267,"id":null,"parameterSlots":3,"returnSlots":2},"checked_exp_t_uint256_t_uint8":{"entryPoint":5494,"id":null,"parameterSlots":2,"returnSlots":1},"checked_exp_unsigned":{"entryPoint":5334,"id":null,"parameterSlots":2,"returnSlots":1},"checked_sub_t_uint256":{"entryPoint":5150,"id":null,"parameterSlots":2,"returnSlots":1},"convert_bytes_to_fixedbytes_from_t_bytes_calldata_ptr_to_t_bytes4":{"entryPoint":5547,"id":null,"parameterSlots":2,"returnSlots":1},"extract_byte_array_length":{"entryPoint":5049,"id":null,"parameterSlots":1,"returnSlots":1},"mod_t_uint8":{"entryPoint":5623,"id":null,"parameterSlots":2,"returnSlots":1},"negate_t_int256":{"entryPoint":5202,"id":null,"parameterSlots":1,"returnSlots":1},"panic_error_0x11":{"entryPoint":5105,"id":null,"parameterSlots":0,"returnSlots":0},"panic_error_0x12":{"entryPoint":5603,"id":null,"parameterSlots":0,"returnSlots":0},"panic_error_0x21":{"entryPoint":5228,"id":null,"parameterSlots":0,"returnSlots":0}},"generatedSources":[{"ast":{"nativeSrc":"0:9286:87","nodeType":"YulBlock","src":"0:9286:87","statements":[{"nativeSrc":"6:3:87","nodeType":"YulBlock","src":"6:3:87","statements":[]},{"body":{"nativeSrc":"115:76:87","nodeType":"YulBlock","src":"115:76:87","statements":[{"nativeSrc":"125:26:87","nodeType":"YulAssignment","src":"125:26:87","value":{"arguments":[{"name":"headStart","nativeSrc":"137:9:87","nodeType":"YulIdentifier","src":"137:9:87"},{"kind":"number","nativeSrc":"148:2:87","nodeType":"YulLiteral","src":"148:2:87","type":"","value":"32"}],"functionName":{"name":"add","nativeSrc":"133:3:87","nodeType":"YulIdentifier","src":"133:3:87"},"nativeSrc":"133:18:87","nodeType":"YulFunctionCall","src":"133:18:87"},"variableNames":[{"name":"tail","nativeSrc":"125:4:87","nodeType":"YulIdentifier","src":"125:4:87"}]},{"expression":{"arguments":[{"name":"headStart","nativeSrc":"167:9:87","nodeType":"YulIdentifier","src":"167:9:87"},{"name":"value0","nativeSrc":"178:6:87","nodeType":"YulIdentifier","src":"178:6:87"}],"functionName":{"name":"mstore","nativeSrc":"160:6:87","nodeType":"YulIdentifier","src":"160:6:87"},"nativeSrc":"160:25:87","nodeType":"YulFunctionCall","src":"160:25:87"},"nativeSrc":"160:25:87","nodeType":"YulExpressionStatement","src":"160:25:87"}]},"name":"abi_encode_tuple_t_uint256__to_t_uint256__fromStack_reversed","nativeSrc":"14:177:87","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nativeSrc":"84:9:87","nodeType":"YulTypedName","src":"84:9:87","type":""},{"name":"value0","nativeSrc":"95:6:87","nodeType":"YulTypedName","src":"95:6:87","type":""}],"returnVariables":[{"name":"tail","nativeSrc":"106:4:87","nodeType":"YulTypedName","src":"106:4:87","type":""}],"src":"14:177:87"},{"body":{"nativeSrc":"317:297:87","nodeType":"YulBlock","src":"317:297:87","statements":[{"expression":{"arguments":[{"name":"headStart","nativeSrc":"334:9:87","nodeType":"YulIdentifier","src":"334:9:87"},{"kind":"number","nativeSrc":"345:2:87","nodeType":"YulLiteral","src":"345:2:87","type":"","value":"32"}],"functionName":{"name":"mstore","nativeSrc":"327:6:87","nodeType":"YulIdentifier","src":"327:6:87"},"nativeSrc":"327:21:87","nodeType":"YulFunctionCall","src":"327:21:87"},"nativeSrc":"327:21:87","nodeType":"YulExpressionStatement","src":"327:21:87"},{"nativeSrc":"357:27:87","nodeType":"YulVariableDeclaration","src":"357:27:87","value":{"arguments":[{"name":"value0","nativeSrc":"377:6:87","nodeType":"YulIdentifier","src":"377:6:87"}],"functionName":{"name":"mload","nativeSrc":"371:5:87","nodeType":"YulIdentifier","src":"371:5:87"},"nativeSrc":"371:13:87","nodeType":"YulFunctionCall","src":"371:13:87"},"variables":[{"name":"length","nativeSrc":"361:6:87","nodeType":"YulTypedName","src":"361:6:87","type":""}]},{"expression":{"arguments":[{"arguments":[{"name":"headStart","nativeSrc":"404:9:87","nodeType":"YulIdentifier","src":"404:9:87"},{"kind":"number","nativeSrc":"415:2:87","nodeType":"YulLiteral","src":"415:2:87","type":"","value":"32"}],"functionName":{"name":"add","nativeSrc":"400:3:87","nodeType":"YulIdentifier","src":"400:3:87"},"nativeSrc":"400:18:87","nodeType":"YulFunctionCall","src":"400:18:87"},{"name":"length","nativeSrc":"420:6:87","nodeType":"YulIdentifier","src":"420:6:87"}],"functionName":{"name":"mstore","nativeSrc":"393:6:87","nodeType":"YulIdentifier","src":"393:6:87"},"nativeSrc":"393:34:87","nodeType":"YulFunctionCall","src":"393:34:87"},"nativeSrc":"393:34:87","nodeType":"YulExpressionStatement","src":"393:34:87"},{"expression":{"arguments":[{"arguments":[{"name":"headStart","nativeSrc":"446:9:87","nodeType":"YulIdentifier","src":"446:9:87"},{"kind":"number","nativeSrc":"457:2:87","nodeType":"YulLiteral","src":"457:2:87","type":"","value":"64"}],"functionName":{"name":"add","nativeSrc":"442:3:87","nodeType":"YulIdentifier","src":"442:3:87"},"nativeSrc":"442:18:87","nodeType":"YulFunctionCall","src":"442:18:87"},{"arguments":[{"name":"value0","nativeSrc":"466:6:87","nodeType":"YulIdentifier","src":"466:6:87"},{"kind":"number","nativeSrc":"474:2:87","nodeType":"YulLiteral","src":"474:2:87","type":"","value":"32"}],"functionName":{"name":"add","nativeSrc":"462:3:87","nodeType":"YulIdentifier","src":"462:3:87"},"nativeSrc":"462:15:87","nodeType":"YulFunctionCall","src":"462:15:87"},{"name":"length","nativeSrc":"479:6:87","nodeType":"YulIdentifier","src":"479:6:87"}],"functionName":{"name":"mcopy","nativeSrc":"436:5:87","nodeType":"YulIdentifier","src":"436:5:87"},"nativeSrc":"436:50:87","nodeType":"YulFunctionCall","src":"436:50:87"},"nativeSrc":"436:50:87","nodeType":"YulExpressionStatement","src":"436:50:87"},{"expression":{"arguments":[{"arguments":[{"arguments":[{"name":"headStart","nativeSrc":"510:9:87","nodeType":"YulIdentifier","src":"510:9:87"},{"name":"length","nativeSrc":"521:6:87","nodeType":"YulIdentifier","src":"521:6:87"}],"functionName":{"name":"add","nativeSrc":"506:3:87","nodeType":"YulIdentifier","src":"506:3:87"},"nativeSrc":"506:22:87","nodeType":"YulFunctionCall","src":"506:22:87"},{"kind":"number","nativeSrc":"530:2:87","nodeType":"YulLiteral","src":"530:2:87","type":"","value":"64"}],"functionName":{"name":"add","nativeSrc":"502:3:87","nodeType":"YulIdentifier","src":"502:3:87"},"nativeSrc":"502:31:87","nodeType":"YulFunctionCall","src":"502:31:87"},{"kind":"number","nativeSrc":"535:1:87","nodeType":"YulLiteral","src":"535:1:87","type":"","value":"0"}],"functionName":{"name":"mstore","nativeSrc":"495:6:87","nodeType":"YulIdentifier","src":"495:6:87"},"nativeSrc":"495:42:87","nodeType":"YulFunctionCall","src":"495:42:87"},"nativeSrc":"495:42:87","nodeType":"YulExpressionStatement","src":"495:42:87"},{"nativeSrc":"546:62:87","nodeType":"YulAssignment","src":"546:62:87","value":{"arguments":[{"arguments":[{"name":"headStart","nativeSrc":"562:9:87","nodeType":"YulIdentifier","src":"562:9:87"},{"arguments":[{"arguments":[{"name":"length","nativeSrc":"581:6:87","nodeType":"YulIdentifier","src":"581:6:87"},{"kind":"number","nativeSrc":"589:2:87","nodeType":"YulLiteral","src":"589:2:87","type":"","value":"31"}],"functionName":{"name":"add","nativeSrc":"577:3:87","nodeType":"YulIdentifier","src":"577:3:87"},"nativeSrc":"577:15:87","nodeType":"YulFunctionCall","src":"577:15:87"},{"arguments":[{"kind":"number","nativeSrc":"598:2:87","nodeType":"YulLiteral","src":"598:2:87","type":"","value":"31"}],"functionName":{"name":"not","nativeSrc":"594:3:87","nodeType":"YulIdentifier","src":"594:3:87"},"nativeSrc":"594:7:87","nodeType":"YulFunctionCall","src":"594:7:87"}],"functionName":{"name":"and","nativeSrc":"573:3:87","nodeType":"YulIdentifier","src":"573:3:87"},"nativeSrc":"573:29:87","nodeType":"YulFunctionCall","src":"573:29:87"}],"functionName":{"name":"add","nativeSrc":"558:3:87","nodeType":"YulIdentifier","src":"558:3:87"},"nativeSrc":"558:45:87","nodeType":"YulFunctionCall","src":"558:45:87"},{"kind":"number","nativeSrc":"605:2:87","nodeType":"YulLiteral","src":"605:2:87","type":"","value":"64"}],"functionName":{"name":"add","nativeSrc":"554:3:87","nodeType":"YulIdentifier","src":"554:3:87"},"nativeSrc":"554:54:87","nodeType":"YulFunctionCall","src":"554:54:87"},"variableNames":[{"name":"tail","nativeSrc":"546:4:87","nodeType":"YulIdentifier","src":"546:4:87"}]}]},"name":"abi_encode_tuple_t_string_memory_ptr__to_t_string_memory_ptr__fromStack_reversed","nativeSrc":"196:418:87","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nativeSrc":"286:9:87","nodeType":"YulTypedName","src":"286:9:87","type":""},{"name":"value0","nativeSrc":"297:6:87","nodeType":"YulTypedName","src":"297:6:87","type":""}],"returnVariables":[{"name":"tail","nativeSrc":"308:4:87","nodeType":"YulTypedName","src":"308:4:87","type":""}],"src":"196:418:87"},{"body":{"nativeSrc":"689:156:87","nodeType":"YulBlock","src":"689:156:87","statements":[{"body":{"nativeSrc":"735:16:87","nodeType":"YulBlock","src":"735:16:87","statements":[{"expression":{"arguments":[{"kind":"number","nativeSrc":"744:1:87","nodeType":"YulLiteral","src":"744:1:87","type":"","value":"0"},{"kind":"number","nativeSrc":"747:1:87","nodeType":"YulLiteral","src":"747:1:87","type":"","value":"0"}],"functionName":{"name":"revert","nativeSrc":"737:6:87","nodeType":"YulIdentifier","src":"737:6:87"},"nativeSrc":"737:12:87","nodeType":"YulFunctionCall","src":"737:12:87"},"nativeSrc":"737:12:87","nodeType":"YulExpressionStatement","src":"737:12:87"}]},"condition":{"arguments":[{"arguments":[{"name":"dataEnd","nativeSrc":"710:7:87","nodeType":"YulIdentifier","src":"710:7:87"},{"name":"headStart","nativeSrc":"719:9:87","nodeType":"YulIdentifier","src":"719:9:87"}],"functionName":{"name":"sub","nativeSrc":"706:3:87","nodeType":"YulIdentifier","src":"706:3:87"},"nativeSrc":"706:23:87","nodeType":"YulFunctionCall","src":"706:23:87"},{"kind":"number","nativeSrc":"731:2:87","nodeType":"YulLiteral","src":"731:2:87","type":"","value":"32"}],"functionName":{"name":"slt","nativeSrc":"702:3:87","nodeType":"YulIdentifier","src":"702:3:87"},"nativeSrc":"702:32:87","nodeType":"YulFunctionCall","src":"702:32:87"},"nativeSrc":"699:52:87","nodeType":"YulIf","src":"699:52:87"},{"nativeSrc":"760:14:87","nodeType":"YulVariableDeclaration","src":"760:14:87","value":{"kind":"number","nativeSrc":"773:1:87","nodeType":"YulLiteral","src":"773:1:87","type":"","value":"0"},"variables":[{"name":"value","nativeSrc":"764:5:87","nodeType":"YulTypedName","src":"764:5:87","type":""}]},{"nativeSrc":"783:32:87","nodeType":"YulAssignment","src":"783:32:87","value":{"arguments":[{"name":"headStart","nativeSrc":"805:9:87","nodeType":"YulIdentifier","src":"805:9:87"}],"functionName":{"name":"calldataload","nativeSrc":"792:12:87","nodeType":"YulIdentifier","src":"792:12:87"},"nativeSrc":"792:23:87","nodeType":"YulFunctionCall","src":"792:23:87"},"variableNames":[{"name":"value","nativeSrc":"783:5:87","nodeType":"YulIdentifier","src":"783:5:87"}]},{"nativeSrc":"824:15:87","nodeType":"YulAssignment","src":"824:15:87","value":{"name":"value","nativeSrc":"834:5:87","nodeType":"YulIdentifier","src":"834:5:87"},"variableNames":[{"name":"value0","nativeSrc":"824:6:87","nodeType":"YulIdentifier","src":"824:6:87"}]}]},"name":"abi_decode_tuple_t_uint256","nativeSrc":"619:226:87","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nativeSrc":"655:9:87","nodeType":"YulTypedName","src":"655:9:87","type":""},{"name":"dataEnd","nativeSrc":"666:7:87","nodeType":"YulTypedName","src":"666:7:87","type":""}],"returnVariables":[{"name":"value0","nativeSrc":"678:6:87","nodeType":"YulTypedName","src":"678:6:87","type":""}],"src":"619:226:87"},{"body":{"nativeSrc":"899:124:87","nodeType":"YulBlock","src":"899:124:87","statements":[{"nativeSrc":"909:29:87","nodeType":"YulAssignment","src":"909:29:87","value":{"arguments":[{"name":"offset","nativeSrc":"931:6:87","nodeType":"YulIdentifier","src":"931:6:87"}],"functionName":{"name":"calldataload","nativeSrc":"918:12:87","nodeType":"YulIdentifier","src":"918:12:87"},"nativeSrc":"918:20:87","nodeType":"YulFunctionCall","src":"918:20:87"},"variableNames":[{"name":"value","nativeSrc":"909:5:87","nodeType":"YulIdentifier","src":"909:5:87"}]},{"body":{"nativeSrc":"1001:16:87","nodeType":"YulBlock","src":"1001:16:87","statements":[{"expression":{"arguments":[{"kind":"number","nativeSrc":"1010:1:87","nodeType":"YulLiteral","src":"1010:1:87","type":"","value":"0"},{"kind":"number","nativeSrc":"1013:1:87","nodeType":"YulLiteral","src":"1013:1:87","type":"","value":"0"}],"functionName":{"name":"revert","nativeSrc":"1003:6:87","nodeType":"YulIdentifier","src":"1003:6:87"},"nativeSrc":"1003:12:87","nodeType":"YulFunctionCall","src":"1003:12:87"},"nativeSrc":"1003:12:87","nodeType":"YulExpressionStatement","src":"1003:12:87"}]},"condition":{"arguments":[{"arguments":[{"name":"value","nativeSrc":"960:5:87","nodeType":"YulIdentifier","src":"960:5:87"},{"arguments":[{"name":"value","nativeSrc":"971:5:87","nodeType":"YulIdentifier","src":"971:5:87"},{"arguments":[{"arguments":[{"kind":"number","nativeSrc":"986:3:87","nodeType":"YulLiteral","src":"986:3:87","type":"","value":"160"},{"kind":"number","nativeSrc":"991:1:87","nodeType":"YulLiteral","src":"991:1:87","type":"","value":"1"}],"functionName":{"name":"shl","nativeSrc":"982:3:87","nodeType":"YulIdentifier","src":"982:3:87"},"nativeSrc":"982:11:87","nodeType":"YulFunctionCall","src":"982:11:87"},{"kind":"number","nativeSrc":"995:1:87","nodeType":"YulLiteral","src":"995:1:87","type":"","value":"1"}],"functionName":{"name":"sub","nativeSrc":"978:3:87","nodeType":"YulIdentifier","src":"978:3:87"},"nativeSrc":"978:19:87","nodeType":"YulFunctionCall","src":"978:19:87"}],"functionName":{"name":"and","nativeSrc":"967:3:87","nodeType":"YulIdentifier","src":"967:3:87"},"nativeSrc":"967:31:87","nodeType":"YulFunctionCall","src":"967:31:87"}],"functionName":{"name":"eq","nativeSrc":"957:2:87","nodeType":"YulIdentifier","src":"957:2:87"},"nativeSrc":"957:42:87","nodeType":"YulFunctionCall","src":"957:42:87"}],"functionName":{"name":"iszero","nativeSrc":"950:6:87","nodeType":"YulIdentifier","src":"950:6:87"},"nativeSrc":"950:50:87","nodeType":"YulFunctionCall","src":"950:50:87"},"nativeSrc":"947:70:87","nodeType":"YulIf","src":"947:70:87"}]},"name":"abi_decode_address","nativeSrc":"850:173:87","nodeType":"YulFunctionDefinition","parameters":[{"name":"offset","nativeSrc":"878:6:87","nodeType":"YulTypedName","src":"878:6:87","type":""}],"returnVariables":[{"name":"value","nativeSrc":"889:5:87","nodeType":"YulTypedName","src":"889:5:87","type":""}],"src":"850:173:87"},{"body":{"nativeSrc":"1115:213:87","nodeType":"YulBlock","src":"1115:213:87","statements":[{"body":{"nativeSrc":"1161:16:87","nodeType":"YulBlock","src":"1161:16:87","statements":[{"expression":{"arguments":[{"kind":"number","nativeSrc":"1170:1:87","nodeType":"YulLiteral","src":"1170:1:87","type":"","value":"0"},{"kind":"number","nativeSrc":"1173:1:87","nodeType":"YulLiteral","src":"1173:1:87","type":"","value":"0"}],"functionName":{"name":"revert","nativeSrc":"1163:6:87","nodeType":"YulIdentifier","src":"1163:6:87"},"nativeSrc":"1163:12:87","nodeType":"YulFunctionCall","src":"1163:12:87"},"nativeSrc":"1163:12:87","nodeType":"YulExpressionStatement","src":"1163:12:87"}]},"condition":{"arguments":[{"arguments":[{"name":"dataEnd","nativeSrc":"1136:7:87","nodeType":"YulIdentifier","src":"1136:7:87"},{"name":"headStart","nativeSrc":"1145:9:87","nodeType":"YulIdentifier","src":"1145:9:87"}],"functionName":{"name":"sub","nativeSrc":"1132:3:87","nodeType":"YulIdentifier","src":"1132:3:87"},"nativeSrc":"1132:23:87","nodeType":"YulFunctionCall","src":"1132:23:87"},{"kind":"number","nativeSrc":"1157:2:87","nodeType":"YulLiteral","src":"1157:2:87","type":"","value":"64"}],"functionName":{"name":"slt","nativeSrc":"1128:3:87","nodeType":"YulIdentifier","src":"1128:3:87"},"nativeSrc":"1128:32:87","nodeType":"YulFunctionCall","src":"1128:32:87"},"nativeSrc":"1125:52:87","nodeType":"YulIf","src":"1125:52:87"},{"nativeSrc":"1186:39:87","nodeType":"YulAssignment","src":"1186:39:87","value":{"arguments":[{"name":"headStart","nativeSrc":"1215:9:87","nodeType":"YulIdentifier","src":"1215:9:87"}],"functionName":{"name":"abi_decode_address","nativeSrc":"1196:18:87","nodeType":"YulIdentifier","src":"1196:18:87"},"nativeSrc":"1196:29:87","nodeType":"YulFunctionCall","src":"1196:29:87"},"variableNames":[{"name":"value0","nativeSrc":"1186:6:87","nodeType":"YulIdentifier","src":"1186:6:87"}]},{"nativeSrc":"1234:14:87","nodeType":"YulVariableDeclaration","src":"1234:14:87","value":{"kind":"number","nativeSrc":"1247:1:87","nodeType":"YulLiteral","src":"1247:1:87","type":"","value":"0"},"variables":[{"name":"value","nativeSrc":"1238:5:87","nodeType":"YulTypedName","src":"1238:5:87","type":""}]},{"nativeSrc":"1257:41:87","nodeType":"YulAssignment","src":"1257:41:87","value":{"arguments":[{"arguments":[{"name":"headStart","nativeSrc":"1283:9:87","nodeType":"YulIdentifier","src":"1283:9:87"},{"kind":"number","nativeSrc":"1294:2:87","nodeType":"YulLiteral","src":"1294:2:87","type":"","value":"32"}],"functionName":{"name":"add","nativeSrc":"1279:3:87","nodeType":"YulIdentifier","src":"1279:3:87"},"nativeSrc":"1279:18:87","nodeType":"YulFunctionCall","src":"1279:18:87"}],"functionName":{"name":"calldataload","nativeSrc":"1266:12:87","nodeType":"YulIdentifier","src":"1266:12:87"},"nativeSrc":"1266:32:87","nodeType":"YulFunctionCall","src":"1266:32:87"},"variableNames":[{"name":"value","nativeSrc":"1257:5:87","nodeType":"YulIdentifier","src":"1257:5:87"}]},{"nativeSrc":"1307:15:87","nodeType":"YulAssignment","src":"1307:15:87","value":{"name":"value","nativeSrc":"1317:5:87","nodeType":"YulIdentifier","src":"1317:5:87"},"variableNames":[{"name":"value1","nativeSrc":"1307:6:87","nodeType":"YulIdentifier","src":"1307:6:87"}]}]},"name":"abi_decode_tuple_t_addresst_uint256","nativeSrc":"1028:300:87","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nativeSrc":"1073:9:87","nodeType":"YulTypedName","src":"1073:9:87","type":""},{"name":"dataEnd","nativeSrc":"1084:7:87","nodeType":"YulTypedName","src":"1084:7:87","type":""}],"returnVariables":[{"name":"value0","nativeSrc":"1096:6:87","nodeType":"YulTypedName","src":"1096:6:87","type":""},{"name":"value1","nativeSrc":"1104:6:87","nodeType":"YulTypedName","src":"1104:6:87","type":""}],"src":"1028:300:87"},{"body":{"nativeSrc":"1428:92:87","nodeType":"YulBlock","src":"1428:92:87","statements":[{"nativeSrc":"1438:26:87","nodeType":"YulAssignment","src":"1438:26:87","value":{"arguments":[{"name":"headStart","nativeSrc":"1450:9:87","nodeType":"YulIdentifier","src":"1450:9:87"},{"kind":"number","nativeSrc":"1461:2:87","nodeType":"YulLiteral","src":"1461:2:87","type":"","value":"32"}],"functionName":{"name":"add","nativeSrc":"1446:3:87","nodeType":"YulIdentifier","src":"1446:3:87"},"nativeSrc":"1446:18:87","nodeType":"YulFunctionCall","src":"1446:18:87"},"variableNames":[{"name":"tail","nativeSrc":"1438:4:87","nodeType":"YulIdentifier","src":"1438:4:87"}]},{"expression":{"arguments":[{"name":"headStart","nativeSrc":"1480:9:87","nodeType":"YulIdentifier","src":"1480:9:87"},{"arguments":[{"arguments":[{"name":"value0","nativeSrc":"1505:6:87","nodeType":"YulIdentifier","src":"1505:6:87"}],"functionName":{"name":"iszero","nativeSrc":"1498:6:87","nodeType":"YulIdentifier","src":"1498:6:87"},"nativeSrc":"1498:14:87","nodeType":"YulFunctionCall","src":"1498:14:87"}],"functionName":{"name":"iszero","nativeSrc":"1491:6:87","nodeType":"YulIdentifier","src":"1491:6:87"},"nativeSrc":"1491:22:87","nodeType":"YulFunctionCall","src":"1491:22:87"}],"functionName":{"name":"mstore","nativeSrc":"1473:6:87","nodeType":"YulIdentifier","src":"1473:6:87"},"nativeSrc":"1473:41:87","nodeType":"YulFunctionCall","src":"1473:41:87"},"nativeSrc":"1473:41:87","nodeType":"YulExpressionStatement","src":"1473:41:87"}]},"name":"abi_encode_tuple_t_bool__to_t_bool__fromStack_reversed","nativeSrc":"1333:187:87","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nativeSrc":"1397:9:87","nodeType":"YulTypedName","src":"1397:9:87","type":""},{"name":"value0","nativeSrc":"1408:6:87","nodeType":"YulTypedName","src":"1408:6:87","type":""}],"returnVariables":[{"name":"tail","nativeSrc":"1419:4:87","nodeType":"YulTypedName","src":"1419:4:87","type":""}],"src":"1333:187:87"},{"body":{"nativeSrc":"1629:270:87","nodeType":"YulBlock","src":"1629:270:87","statements":[{"body":{"nativeSrc":"1675:16:87","nodeType":"YulBlock","src":"1675:16:87","statements":[{"expression":{"arguments":[{"kind":"number","nativeSrc":"1684:1:87","nodeType":"YulLiteral","src":"1684:1:87","type":"","value":"0"},{"kind":"number","nativeSrc":"1687:1:87","nodeType":"YulLiteral","src":"1687:1:87","type":"","value":"0"}],"functionName":{"name":"revert","nativeSrc":"1677:6:87","nodeType":"YulIdentifier","src":"1677:6:87"},"nativeSrc":"1677:12:87","nodeType":"YulFunctionCall","src":"1677:12:87"},"nativeSrc":"1677:12:87","nodeType":"YulExpressionStatement","src":"1677:12:87"}]},"condition":{"arguments":[{"arguments":[{"name":"dataEnd","nativeSrc":"1650:7:87","nodeType":"YulIdentifier","src":"1650:7:87"},{"name":"headStart","nativeSrc":"1659:9:87","nodeType":"YulIdentifier","src":"1659:9:87"}],"functionName":{"name":"sub","nativeSrc":"1646:3:87","nodeType":"YulIdentifier","src":"1646:3:87"},"nativeSrc":"1646:23:87","nodeType":"YulFunctionCall","src":"1646:23:87"},{"kind":"number","nativeSrc":"1671:2:87","nodeType":"YulLiteral","src":"1671:2:87","type":"","value":"96"}],"functionName":{"name":"slt","nativeSrc":"1642:3:87","nodeType":"YulIdentifier","src":"1642:3:87"},"nativeSrc":"1642:32:87","nodeType":"YulFunctionCall","src":"1642:32:87"},"nativeSrc":"1639:52:87","nodeType":"YulIf","src":"1639:52:87"},{"nativeSrc":"1700:39:87","nodeType":"YulAssignment","src":"1700:39:87","value":{"arguments":[{"name":"headStart","nativeSrc":"1729:9:87","nodeType":"YulIdentifier","src":"1729:9:87"}],"functionName":{"name":"abi_decode_address","nativeSrc":"1710:18:87","nodeType":"YulIdentifier","src":"1710:18:87"},"nativeSrc":"1710:29:87","nodeType":"YulFunctionCall","src":"1710:29:87"},"variableNames":[{"name":"value0","nativeSrc":"1700:6:87","nodeType":"YulIdentifier","src":"1700:6:87"}]},{"nativeSrc":"1748:48:87","nodeType":"YulAssignment","src":"1748:48:87","value":{"arguments":[{"arguments":[{"name":"headStart","nativeSrc":"1781:9:87","nodeType":"YulIdentifier","src":"1781:9:87"},{"kind":"number","nativeSrc":"1792:2:87","nodeType":"YulLiteral","src":"1792:2:87","type":"","value":"32"}],"functionName":{"name":"add","nativeSrc":"1777:3:87","nodeType":"YulIdentifier","src":"1777:3:87"},"nativeSrc":"1777:18:87","nodeType":"YulFunctionCall","src":"1777:18:87"}],"functionName":{"name":"abi_decode_address","nativeSrc":"1758:18:87","nodeType":"YulIdentifier","src":"1758:18:87"},"nativeSrc":"1758:38:87","nodeType":"YulFunctionCall","src":"1758:38:87"},"variableNames":[{"name":"value1","nativeSrc":"1748:6:87","nodeType":"YulIdentifier","src":"1748:6:87"}]},{"nativeSrc":"1805:14:87","nodeType":"YulVariableDeclaration","src":"1805:14:87","value":{"kind":"number","nativeSrc":"1818:1:87","nodeType":"YulLiteral","src":"1818:1:87","type":"","value":"0"},"variables":[{"name":"value","nativeSrc":"1809:5:87","nodeType":"YulTypedName","src":"1809:5:87","type":""}]},{"nativeSrc":"1828:41:87","nodeType":"YulAssignment","src":"1828:41:87","value":{"arguments":[{"arguments":[{"name":"headStart","nativeSrc":"1854:9:87","nodeType":"YulIdentifier","src":"1854:9:87"},{"kind":"number","nativeSrc":"1865:2:87","nodeType":"YulLiteral","src":"1865:2:87","type":"","value":"64"}],"functionName":{"name":"add","nativeSrc":"1850:3:87","nodeType":"YulIdentifier","src":"1850:3:87"},"nativeSrc":"1850:18:87","nodeType":"YulFunctionCall","src":"1850:18:87"}],"functionName":{"name":"calldataload","nativeSrc":"1837:12:87","nodeType":"YulIdentifier","src":"1837:12:87"},"nativeSrc":"1837:32:87","nodeType":"YulFunctionCall","src":"1837:32:87"},"variableNames":[{"name":"value","nativeSrc":"1828:5:87","nodeType":"YulIdentifier","src":"1828:5:87"}]},{"nativeSrc":"1878:15:87","nodeType":"YulAssignment","src":"1878:15:87","value":{"name":"value","nativeSrc":"1888:5:87","nodeType":"YulIdentifier","src":"1888:5:87"},"variableNames":[{"name":"value2","nativeSrc":"1878:6:87","nodeType":"YulIdentifier","src":"1878:6:87"}]}]},"name":"abi_decode_tuple_t_addresst_addresst_uint256","nativeSrc":"1525:374:87","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nativeSrc":"1579:9:87","nodeType":"YulTypedName","src":"1579:9:87","type":""},{"name":"dataEnd","nativeSrc":"1590:7:87","nodeType":"YulTypedName","src":"1590:7:87","type":""}],"returnVariables":[{"name":"value0","nativeSrc":"1602:6:87","nodeType":"YulTypedName","src":"1602:6:87","type":""},{"name":"value1","nativeSrc":"1610:6:87","nodeType":"YulTypedName","src":"1610:6:87","type":""},{"name":"value2","nativeSrc":"1618:6:87","nodeType":"YulTypedName","src":"1618:6:87","type":""}],"src":"1525:374:87"},{"body":{"nativeSrc":"2001:87:87","nodeType":"YulBlock","src":"2001:87:87","statements":[{"nativeSrc":"2011:26:87","nodeType":"YulAssignment","src":"2011:26:87","value":{"arguments":[{"name":"headStart","nativeSrc":"2023:9:87","nodeType":"YulIdentifier","src":"2023:9:87"},{"kind":"number","nativeSrc":"2034:2:87","nodeType":"YulLiteral","src":"2034:2:87","type":"","value":"32"}],"functionName":{"name":"add","nativeSrc":"2019:3:87","nodeType":"YulIdentifier","src":"2019:3:87"},"nativeSrc":"2019:18:87","nodeType":"YulFunctionCall","src":"2019:18:87"},"variableNames":[{"name":"tail","nativeSrc":"2011:4:87","nodeType":"YulIdentifier","src":"2011:4:87"}]},{"expression":{"arguments":[{"name":"headStart","nativeSrc":"2053:9:87","nodeType":"YulIdentifier","src":"2053:9:87"},{"arguments":[{"name":"value0","nativeSrc":"2068:6:87","nodeType":"YulIdentifier","src":"2068:6:87"},{"kind":"number","nativeSrc":"2076:4:87","nodeType":"YulLiteral","src":"2076:4:87","type":"","value":"0xff"}],"functionName":{"name":"and","nativeSrc":"2064:3:87","nodeType":"YulIdentifier","src":"2064:3:87"},"nativeSrc":"2064:17:87","nodeType":"YulFunctionCall","src":"2064:17:87"}],"functionName":{"name":"mstore","nativeSrc":"2046:6:87","nodeType":"YulIdentifier","src":"2046:6:87"},"nativeSrc":"2046:36:87","nodeType":"YulFunctionCall","src":"2046:36:87"},"nativeSrc":"2046:36:87","nodeType":"YulExpressionStatement","src":"2046:36:87"}]},"name":"abi_encode_tuple_t_uint8__to_t_uint8__fromStack_reversed","nativeSrc":"1904:184:87","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nativeSrc":"1970:9:87","nodeType":"YulTypedName","src":"1970:9:87","type":""},{"name":"value0","nativeSrc":"1981:6:87","nodeType":"YulTypedName","src":"1981:6:87","type":""}],"returnVariables":[{"name":"tail","nativeSrc":"1992:4:87","nodeType":"YulTypedName","src":"1992:4:87","type":""}],"src":"1904:184:87"},{"body":{"nativeSrc":"2194:102:87","nodeType":"YulBlock","src":"2194:102:87","statements":[{"nativeSrc":"2204:26:87","nodeType":"YulAssignment","src":"2204:26:87","value":{"arguments":[{"name":"headStart","nativeSrc":"2216:9:87","nodeType":"YulIdentifier","src":"2216:9:87"},{"kind":"number","nativeSrc":"2227:2:87","nodeType":"YulLiteral","src":"2227:2:87","type":"","value":"32"}],"functionName":{"name":"add","nativeSrc":"2212:3:87","nodeType":"YulIdentifier","src":"2212:3:87"},"nativeSrc":"2212:18:87","nodeType":"YulFunctionCall","src":"2212:18:87"},"variableNames":[{"name":"tail","nativeSrc":"2204:4:87","nodeType":"YulIdentifier","src":"2204:4:87"}]},{"expression":{"arguments":[{"name":"headStart","nativeSrc":"2246:9:87","nodeType":"YulIdentifier","src":"2246:9:87"},{"arguments":[{"name":"value0","nativeSrc":"2261:6:87","nodeType":"YulIdentifier","src":"2261:6:87"},{"arguments":[{"arguments":[{"kind":"number","nativeSrc":"2277:3:87","nodeType":"YulLiteral","src":"2277:3:87","type":"","value":"160"},{"kind":"number","nativeSrc":"2282:1:87","nodeType":"YulLiteral","src":"2282:1:87","type":"","value":"1"}],"functionName":{"name":"shl","nativeSrc":"2273:3:87","nodeType":"YulIdentifier","src":"2273:3:87"},"nativeSrc":"2273:11:87","nodeType":"YulFunctionCall","src":"2273:11:87"},{"kind":"number","nativeSrc":"2286:1:87","nodeType":"YulLiteral","src":"2286:1:87","type":"","value":"1"}],"functionName":{"name":"sub","nativeSrc":"2269:3:87","nodeType":"YulIdentifier","src":"2269:3:87"},"nativeSrc":"2269:19:87","nodeType":"YulFunctionCall","src":"2269:19:87"}],"functionName":{"name":"and","nativeSrc":"2257:3:87","nodeType":"YulIdentifier","src":"2257:3:87"},"nativeSrc":"2257:32:87","nodeType":"YulFunctionCall","src":"2257:32:87"}],"functionName":{"name":"mstore","nativeSrc":"2239:6:87","nodeType":"YulIdentifier","src":"2239:6:87"},"nativeSrc":"2239:51:87","nodeType":"YulFunctionCall","src":"2239:51:87"},"nativeSrc":"2239:51:87","nodeType":"YulExpressionStatement","src":"2239:51:87"}]},"name":"abi_encode_tuple_t_address__to_t_address__fromStack_reversed","nativeSrc":"2093:203:87","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nativeSrc":"2163:9:87","nodeType":"YulTypedName","src":"2163:9:87","type":""},{"name":"value0","nativeSrc":"2174:6:87","nodeType":"YulTypedName","src":"2174:6:87","type":""}],"returnVariables":[{"name":"tail","nativeSrc":"2185:4:87","nodeType":"YulTypedName","src":"2185:4:87","type":""}],"src":"2093:203:87"},{"body":{"nativeSrc":"2371:116:87","nodeType":"YulBlock","src":"2371:116:87","statements":[{"body":{"nativeSrc":"2417:16:87","nodeType":"YulBlock","src":"2417:16:87","statements":[{"expression":{"arguments":[{"kind":"number","nativeSrc":"2426:1:87","nodeType":"YulLiteral","src":"2426:1:87","type":"","value":"0"},{"kind":"number","nativeSrc":"2429:1:87","nodeType":"YulLiteral","src":"2429:1:87","type":"","value":"0"}],"functionName":{"name":"revert","nativeSrc":"2419:6:87","nodeType":"YulIdentifier","src":"2419:6:87"},"nativeSrc":"2419:12:87","nodeType":"YulFunctionCall","src":"2419:12:87"},"nativeSrc":"2419:12:87","nodeType":"YulExpressionStatement","src":"2419:12:87"}]},"condition":{"arguments":[{"arguments":[{"name":"dataEnd","nativeSrc":"2392:7:87","nodeType":"YulIdentifier","src":"2392:7:87"},{"name":"headStart","nativeSrc":"2401:9:87","nodeType":"YulIdentifier","src":"2401:9:87"}],"functionName":{"name":"sub","nativeSrc":"2388:3:87","nodeType":"YulIdentifier","src":"2388:3:87"},"nativeSrc":"2388:23:87","nodeType":"YulFunctionCall","src":"2388:23:87"},{"kind":"number","nativeSrc":"2413:2:87","nodeType":"YulLiteral","src":"2413:2:87","type":"","value":"32"}],"functionName":{"name":"slt","nativeSrc":"2384:3:87","nodeType":"YulIdentifier","src":"2384:3:87"},"nativeSrc":"2384:32:87","nodeType":"YulFunctionCall","src":"2384:32:87"},"nativeSrc":"2381:52:87","nodeType":"YulIf","src":"2381:52:87"},{"nativeSrc":"2442:39:87","nodeType":"YulAssignment","src":"2442:39:87","value":{"arguments":[{"name":"headStart","nativeSrc":"2471:9:87","nodeType":"YulIdentifier","src":"2471:9:87"}],"functionName":{"name":"abi_decode_address","nativeSrc":"2452:18:87","nodeType":"YulIdentifier","src":"2452:18:87"},"nativeSrc":"2452:29:87","nodeType":"YulFunctionCall","src":"2452:29:87"},"variableNames":[{"name":"value0","nativeSrc":"2442:6:87","nodeType":"YulIdentifier","src":"2442:6:87"}]}]},"name":"abi_decode_tuple_t_address","nativeSrc":"2301:186:87","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nativeSrc":"2337:9:87","nodeType":"YulTypedName","src":"2337:9:87","type":""},{"name":"dataEnd","nativeSrc":"2348:7:87","nodeType":"YulTypedName","src":"2348:7:87","type":""}],"returnVariables":[{"name":"value0","nativeSrc":"2360:6:87","nodeType":"YulTypedName","src":"2360:6:87","type":""}],"src":"2301:186:87"},{"body":{"nativeSrc":"2579:213:87","nodeType":"YulBlock","src":"2579:213:87","statements":[{"body":{"nativeSrc":"2625:16:87","nodeType":"YulBlock","src":"2625:16:87","statements":[{"expression":{"arguments":[{"kind":"number","nativeSrc":"2634:1:87","nodeType":"YulLiteral","src":"2634:1:87","type":"","value":"0"},{"kind":"number","nativeSrc":"2637:1:87","nodeType":"YulLiteral","src":"2637:1:87","type":"","value":"0"}],"functionName":{"name":"revert","nativeSrc":"2627:6:87","nodeType":"YulIdentifier","src":"2627:6:87"},"nativeSrc":"2627:12:87","nodeType":"YulFunctionCall","src":"2627:12:87"},"nativeSrc":"2627:12:87","nodeType":"YulExpressionStatement","src":"2627:12:87"}]},"condition":{"arguments":[{"arguments":[{"name":"dataEnd","nativeSrc":"2600:7:87","nodeType":"YulIdentifier","src":"2600:7:87"},{"name":"headStart","nativeSrc":"2609:9:87","nodeType":"YulIdentifier","src":"2609:9:87"}],"functionName":{"name":"sub","nativeSrc":"2596:3:87","nodeType":"YulIdentifier","src":"2596:3:87"},"nativeSrc":"2596:23:87","nodeType":"YulFunctionCall","src":"2596:23:87"},{"kind":"number","nativeSrc":"2621:2:87","nodeType":"YulLiteral","src":"2621:2:87","type":"","value":"64"}],"functionName":{"name":"slt","nativeSrc":"2592:3:87","nodeType":"YulIdentifier","src":"2592:3:87"},"nativeSrc":"2592:32:87","nodeType":"YulFunctionCall","src":"2592:32:87"},"nativeSrc":"2589:52:87","nodeType":"YulIf","src":"2589:52:87"},{"nativeSrc":"2650:14:87","nodeType":"YulVariableDeclaration","src":"2650:14:87","value":{"kind":"number","nativeSrc":"2663:1:87","nodeType":"YulLiteral","src":"2663:1:87","type":"","value":"0"},"variables":[{"name":"value","nativeSrc":"2654:5:87","nodeType":"YulTypedName","src":"2654:5:87","type":""}]},{"nativeSrc":"2673:32:87","nodeType":"YulAssignment","src":"2673:32:87","value":{"arguments":[{"name":"headStart","nativeSrc":"2695:9:87","nodeType":"YulIdentifier","src":"2695:9:87"}],"functionName":{"name":"calldataload","nativeSrc":"2682:12:87","nodeType":"YulIdentifier","src":"2682:12:87"},"nativeSrc":"2682:23:87","nodeType":"YulFunctionCall","src":"2682:23:87"},"variableNames":[{"name":"value","nativeSrc":"2673:5:87","nodeType":"YulIdentifier","src":"2673:5:87"}]},{"nativeSrc":"2714:15:87","nodeType":"YulAssignment","src":"2714:15:87","value":{"name":"value","nativeSrc":"2724:5:87","nodeType":"YulIdentifier","src":"2724:5:87"},"variableNames":[{"name":"value0","nativeSrc":"2714:6:87","nodeType":"YulIdentifier","src":"2714:6:87"}]},{"nativeSrc":"2738:48:87","nodeType":"YulAssignment","src":"2738:48:87","value":{"arguments":[{"arguments":[{"name":"headStart","nativeSrc":"2771:9:87","nodeType":"YulIdentifier","src":"2771:9:87"},{"kind":"number","nativeSrc":"2782:2:87","nodeType":"YulLiteral","src":"2782:2:87","type":"","value":"32"}],"functionName":{"name":"add","nativeSrc":"2767:3:87","nodeType":"YulIdentifier","src":"2767:3:87"},"nativeSrc":"2767:18:87","nodeType":"YulFunctionCall","src":"2767:18:87"}],"functionName":{"name":"abi_decode_address","nativeSrc":"2748:18:87","nodeType":"YulIdentifier","src":"2748:18:87"},"nativeSrc":"2748:38:87","nodeType":"YulFunctionCall","src":"2748:38:87"},"variableNames":[{"name":"value1","nativeSrc":"2738:6:87","nodeType":"YulIdentifier","src":"2738:6:87"}]}]},"name":"abi_decode_tuple_t_uint256t_address","nativeSrc":"2492:300:87","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nativeSrc":"2537:9:87","nodeType":"YulTypedName","src":"2537:9:87","type":""},{"name":"dataEnd","nativeSrc":"2548:7:87","nodeType":"YulTypedName","src":"2548:7:87","type":""}],"returnVariables":[{"name":"value0","nativeSrc":"2560:6:87","nodeType":"YulTypedName","src":"2560:6:87","type":""},{"name":"value1","nativeSrc":"2568:6:87","nodeType":"YulTypedName","src":"2568:6:87","type":""}],"src":"2492:300:87"},{"body":{"nativeSrc":"2864:206:87","nodeType":"YulBlock","src":"2864:206:87","statements":[{"body":{"nativeSrc":"2910:16:87","nodeType":"YulBlock","src":"2910:16:87","statements":[{"expression":{"arguments":[{"kind":"number","nativeSrc":"2919:1:87","nodeType":"YulLiteral","src":"2919:1:87","type":"","value":"0"},{"kind":"number","nativeSrc":"2922:1:87","nodeType":"YulLiteral","src":"2922:1:87","type":"","value":"0"}],"functionName":{"name":"revert","nativeSrc":"2912:6:87","nodeType":"YulIdentifier","src":"2912:6:87"},"nativeSrc":"2912:12:87","nodeType":"YulFunctionCall","src":"2912:12:87"},"nativeSrc":"2912:12:87","nodeType":"YulExpressionStatement","src":"2912:12:87"}]},"condition":{"arguments":[{"arguments":[{"name":"dataEnd","nativeSrc":"2885:7:87","nodeType":"YulIdentifier","src":"2885:7:87"},{"name":"headStart","nativeSrc":"2894:9:87","nodeType":"YulIdentifier","src":"2894:9:87"}],"functionName":{"name":"sub","nativeSrc":"2881:3:87","nodeType":"YulIdentifier","src":"2881:3:87"},"nativeSrc":"2881:23:87","nodeType":"YulFunctionCall","src":"2881:23:87"},{"kind":"number","nativeSrc":"2906:2:87","nodeType":"YulLiteral","src":"2906:2:87","type":"","value":"32"}],"functionName":{"name":"slt","nativeSrc":"2877:3:87","nodeType":"YulIdentifier","src":"2877:3:87"},"nativeSrc":"2877:32:87","nodeType":"YulFunctionCall","src":"2877:32:87"},"nativeSrc":"2874:52:87","nodeType":"YulIf","src":"2874:52:87"},{"nativeSrc":"2935:36:87","nodeType":"YulVariableDeclaration","src":"2935:36:87","value":{"arguments":[{"name":"headStart","nativeSrc":"2961:9:87","nodeType":"YulIdentifier","src":"2961:9:87"}],"functionName":{"name":"calldataload","nativeSrc":"2948:12:87","nodeType":"YulIdentifier","src":"2948:12:87"},"nativeSrc":"2948:23:87","nodeType":"YulFunctionCall","src":"2948:23:87"},"variables":[{"name":"value","nativeSrc":"2939:5:87","nodeType":"YulTypedName","src":"2939:5:87","type":""}]},{"body":{"nativeSrc":"3024:16:87","nodeType":"YulBlock","src":"3024:16:87","statements":[{"expression":{"arguments":[{"kind":"number","nativeSrc":"3033:1:87","nodeType":"YulLiteral","src":"3033:1:87","type":"","value":"0"},{"kind":"number","nativeSrc":"3036:1:87","nodeType":"YulLiteral","src":"3036:1:87","type":"","value":"0"}],"functionName":{"name":"revert","nativeSrc":"3026:6:87","nodeType":"YulIdentifier","src":"3026:6:87"},"nativeSrc":"3026:12:87","nodeType":"YulFunctionCall","src":"3026:12:87"},"nativeSrc":"3026:12:87","nodeType":"YulExpressionStatement","src":"3026:12:87"}]},"condition":{"arguments":[{"arguments":[{"name":"value","nativeSrc":"2993:5:87","nodeType":"YulIdentifier","src":"2993:5:87"},{"arguments":[{"arguments":[{"name":"value","nativeSrc":"3014:5:87","nodeType":"YulIdentifier","src":"3014:5:87"}],"functionName":{"name":"iszero","nativeSrc":"3007:6:87","nodeType":"YulIdentifier","src":"3007:6:87"},"nativeSrc":"3007:13:87","nodeType":"YulFunctionCall","src":"3007:13:87"}],"functionName":{"name":"iszero","nativeSrc":"3000:6:87","nodeType":"YulIdentifier","src":"3000:6:87"},"nativeSrc":"3000:21:87","nodeType":"YulFunctionCall","src":"3000:21:87"}],"functionName":{"name":"eq","nativeSrc":"2990:2:87","nodeType":"YulIdentifier","src":"2990:2:87"},"nativeSrc":"2990:32:87","nodeType":"YulFunctionCall","src":"2990:32:87"}],"functionName":{"name":"iszero","nativeSrc":"2983:6:87","nodeType":"YulIdentifier","src":"2983:6:87"},"nativeSrc":"2983:40:87","nodeType":"YulFunctionCall","src":"2983:40:87"},"nativeSrc":"2980:60:87","nodeType":"YulIf","src":"2980:60:87"},{"nativeSrc":"3049:15:87","nodeType":"YulAssignment","src":"3049:15:87","value":{"name":"value","nativeSrc":"3059:5:87","nodeType":"YulIdentifier","src":"3059:5:87"},"variableNames":[{"name":"value0","nativeSrc":"3049:6:87","nodeType":"YulIdentifier","src":"3049:6:87"}]}]},"name":"abi_decode_tuple_t_bool","nativeSrc":"2797:273:87","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nativeSrc":"2830:9:87","nodeType":"YulTypedName","src":"2830:9:87","type":""},{"name":"dataEnd","nativeSrc":"2841:7:87","nodeType":"YulTypedName","src":"2841:7:87","type":""}],"returnVariables":[{"name":"value0","nativeSrc":"2853:6:87","nodeType":"YulTypedName","src":"2853:6:87","type":""}],"src":"2797:273:87"},{"body":{"nativeSrc":"3179:270:87","nodeType":"YulBlock","src":"3179:270:87","statements":[{"body":{"nativeSrc":"3225:16:87","nodeType":"YulBlock","src":"3225:16:87","statements":[{"expression":{"arguments":[{"kind":"number","nativeSrc":"3234:1:87","nodeType":"YulLiteral","src":"3234:1:87","type":"","value":"0"},{"kind":"number","nativeSrc":"3237:1:87","nodeType":"YulLiteral","src":"3237:1:87","type":"","value":"0"}],"functionName":{"name":"revert","nativeSrc":"3227:6:87","nodeType":"YulIdentifier","src":"3227:6:87"},"nativeSrc":"3227:12:87","nodeType":"YulFunctionCall","src":"3227:12:87"},"nativeSrc":"3227:12:87","nodeType":"YulExpressionStatement","src":"3227:12:87"}]},"condition":{"arguments":[{"arguments":[{"name":"dataEnd","nativeSrc":"3200:7:87","nodeType":"YulIdentifier","src":"3200:7:87"},{"name":"headStart","nativeSrc":"3209:9:87","nodeType":"YulIdentifier","src":"3209:9:87"}],"functionName":{"name":"sub","nativeSrc":"3196:3:87","nodeType":"YulIdentifier","src":"3196:3:87"},"nativeSrc":"3196:23:87","nodeType":"YulFunctionCall","src":"3196:23:87"},{"kind":"number","nativeSrc":"3221:2:87","nodeType":"YulLiteral","src":"3221:2:87","type":"","value":"96"}],"functionName":{"name":"slt","nativeSrc":"3192:3:87","nodeType":"YulIdentifier","src":"3192:3:87"},"nativeSrc":"3192:32:87","nodeType":"YulFunctionCall","src":"3192:32:87"},"nativeSrc":"3189:52:87","nodeType":"YulIf","src":"3189:52:87"},{"nativeSrc":"3250:14:87","nodeType":"YulVariableDeclaration","src":"3250:14:87","value":{"kind":"number","nativeSrc":"3263:1:87","nodeType":"YulLiteral","src":"3263:1:87","type":"","value":"0"},"variables":[{"name":"value","nativeSrc":"3254:5:87","nodeType":"YulTypedName","src":"3254:5:87","type":""}]},{"nativeSrc":"3273:32:87","nodeType":"YulAssignment","src":"3273:32:87","value":{"arguments":[{"name":"headStart","nativeSrc":"3295:9:87","nodeType":"YulIdentifier","src":"3295:9:87"}],"functionName":{"name":"calldataload","nativeSrc":"3282:12:87","nodeType":"YulIdentifier","src":"3282:12:87"},"nativeSrc":"3282:23:87","nodeType":"YulFunctionCall","src":"3282:23:87"},"variableNames":[{"name":"value","nativeSrc":"3273:5:87","nodeType":"YulIdentifier","src":"3273:5:87"}]},{"nativeSrc":"3314:15:87","nodeType":"YulAssignment","src":"3314:15:87","value":{"name":"value","nativeSrc":"3324:5:87","nodeType":"YulIdentifier","src":"3324:5:87"},"variableNames":[{"name":"value0","nativeSrc":"3314:6:87","nodeType":"YulIdentifier","src":"3314:6:87"}]},{"nativeSrc":"3338:48:87","nodeType":"YulAssignment","src":"3338:48:87","value":{"arguments":[{"arguments":[{"name":"headStart","nativeSrc":"3371:9:87","nodeType":"YulIdentifier","src":"3371:9:87"},{"kind":"number","nativeSrc":"3382:2:87","nodeType":"YulLiteral","src":"3382:2:87","type":"","value":"32"}],"functionName":{"name":"add","nativeSrc":"3367:3:87","nodeType":"YulIdentifier","src":"3367:3:87"},"nativeSrc":"3367:18:87","nodeType":"YulFunctionCall","src":"3367:18:87"}],"functionName":{"name":"abi_decode_address","nativeSrc":"3348:18:87","nodeType":"YulIdentifier","src":"3348:18:87"},"nativeSrc":"3348:38:87","nodeType":"YulFunctionCall","src":"3348:38:87"},"variableNames":[{"name":"value1","nativeSrc":"3338:6:87","nodeType":"YulIdentifier","src":"3338:6:87"}]},{"nativeSrc":"3395:48:87","nodeType":"YulAssignment","src":"3395:48:87","value":{"arguments":[{"arguments":[{"name":"headStart","nativeSrc":"3428:9:87","nodeType":"YulIdentifier","src":"3428:9:87"},{"kind":"number","nativeSrc":"3439:2:87","nodeType":"YulLiteral","src":"3439:2:87","type":"","value":"64"}],"functionName":{"name":"add","nativeSrc":"3424:3:87","nodeType":"YulIdentifier","src":"3424:3:87"},"nativeSrc":"3424:18:87","nodeType":"YulFunctionCall","src":"3424:18:87"}],"functionName":{"name":"abi_decode_address","nativeSrc":"3405:18:87","nodeType":"YulIdentifier","src":"3405:18:87"},"nativeSrc":"3405:38:87","nodeType":"YulFunctionCall","src":"3405:38:87"},"variableNames":[{"name":"value2","nativeSrc":"3395:6:87","nodeType":"YulIdentifier","src":"3395:6:87"}]}]},"name":"abi_decode_tuple_t_uint256t_addresst_address","nativeSrc":"3075:374:87","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nativeSrc":"3129:9:87","nodeType":"YulTypedName","src":"3129:9:87","type":""},{"name":"dataEnd","nativeSrc":"3140:7:87","nodeType":"YulTypedName","src":"3140:7:87","type":""}],"returnVariables":[{"name":"value0","nativeSrc":"3152:6:87","nodeType":"YulTypedName","src":"3152:6:87","type":""},{"name":"value1","nativeSrc":"3160:6:87","nodeType":"YulTypedName","src":"3160:6:87","type":""},{"name":"value2","nativeSrc":"3168:6:87","nodeType":"YulTypedName","src":"3168:6:87","type":""}],"src":"3075:374:87"},{"body":{"nativeSrc":"3523:110:87","nodeType":"YulBlock","src":"3523:110:87","statements":[{"body":{"nativeSrc":"3569:16:87","nodeType":"YulBlock","src":"3569:16:87","statements":[{"expression":{"arguments":[{"kind":"number","nativeSrc":"3578:1:87","nodeType":"YulLiteral","src":"3578:1:87","type":"","value":"0"},{"kind":"number","nativeSrc":"3581:1:87","nodeType":"YulLiteral","src":"3581:1:87","type":"","value":"0"}],"functionName":{"name":"revert","nativeSrc":"3571:6:87","nodeType":"YulIdentifier","src":"3571:6:87"},"nativeSrc":"3571:12:87","nodeType":"YulFunctionCall","src":"3571:12:87"},"nativeSrc":"3571:12:87","nodeType":"YulExpressionStatement","src":"3571:12:87"}]},"condition":{"arguments":[{"arguments":[{"name":"dataEnd","nativeSrc":"3544:7:87","nodeType":"YulIdentifier","src":"3544:7:87"},{"name":"headStart","nativeSrc":"3553:9:87","nodeType":"YulIdentifier","src":"3553:9:87"}],"functionName":{"name":"sub","nativeSrc":"3540:3:87","nodeType":"YulIdentifier","src":"3540:3:87"},"nativeSrc":"3540:23:87","nodeType":"YulFunctionCall","src":"3540:23:87"},{"kind":"number","nativeSrc":"3565:2:87","nodeType":"YulLiteral","src":"3565:2:87","type":"","value":"32"}],"functionName":{"name":"slt","nativeSrc":"3536:3:87","nodeType":"YulIdentifier","src":"3536:3:87"},"nativeSrc":"3536:32:87","nodeType":"YulFunctionCall","src":"3536:32:87"},"nativeSrc":"3533:52:87","nodeType":"YulIf","src":"3533:52:87"},{"nativeSrc":"3594:33:87","nodeType":"YulAssignment","src":"3594:33:87","value":{"arguments":[{"name":"headStart","nativeSrc":"3617:9:87","nodeType":"YulIdentifier","src":"3617:9:87"}],"functionName":{"name":"calldataload","nativeSrc":"3604:12:87","nodeType":"YulIdentifier","src":"3604:12:87"},"nativeSrc":"3604:23:87","nodeType":"YulFunctionCall","src":"3604:23:87"},"variableNames":[{"name":"value0","nativeSrc":"3594:6:87","nodeType":"YulIdentifier","src":"3594:6:87"}]}]},"name":"abi_decode_tuple_t_int256","nativeSrc":"3454:179:87","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nativeSrc":"3489:9:87","nodeType":"YulTypedName","src":"3489:9:87","type":""},{"name":"dataEnd","nativeSrc":"3500:7:87","nodeType":"YulTypedName","src":"3500:7:87","type":""}],"returnVariables":[{"name":"value0","nativeSrc":"3512:6:87","nodeType":"YulTypedName","src":"3512:6:87","type":""}],"src":"3454:179:87"},{"body":{"nativeSrc":"3744:289:87","nodeType":"YulBlock","src":"3744:289:87","statements":[{"body":{"nativeSrc":"3790:16:87","nodeType":"YulBlock","src":"3790:16:87","statements":[{"expression":{"arguments":[{"kind":"number","nativeSrc":"3799:1:87","nodeType":"YulLiteral","src":"3799:1:87","type":"","value":"0"},{"kind":"number","nativeSrc":"3802:1:87","nodeType":"YulLiteral","src":"3802:1:87","type":"","value":"0"}],"functionName":{"name":"revert","nativeSrc":"3792:6:87","nodeType":"YulIdentifier","src":"3792:6:87"},"nativeSrc":"3792:12:87","nodeType":"YulFunctionCall","src":"3792:12:87"},"nativeSrc":"3792:12:87","nodeType":"YulExpressionStatement","src":"3792:12:87"}]},"condition":{"arguments":[{"arguments":[{"name":"dataEnd","nativeSrc":"3765:7:87","nodeType":"YulIdentifier","src":"3765:7:87"},{"name":"headStart","nativeSrc":"3774:9:87","nodeType":"YulIdentifier","src":"3774:9:87"}],"functionName":{"name":"sub","nativeSrc":"3761:3:87","nodeType":"YulIdentifier","src":"3761:3:87"},"nativeSrc":"3761:23:87","nodeType":"YulFunctionCall","src":"3761:23:87"},{"kind":"number","nativeSrc":"3786:2:87","nodeType":"YulLiteral","src":"3786:2:87","type":"","value":"64"}],"functionName":{"name":"slt","nativeSrc":"3757:3:87","nodeType":"YulIdentifier","src":"3757:3:87"},"nativeSrc":"3757:32:87","nodeType":"YulFunctionCall","src":"3757:32:87"},"nativeSrc":"3754:52:87","nodeType":"YulIf","src":"3754:52:87"},{"nativeSrc":"3815:36:87","nodeType":"YulVariableDeclaration","src":"3815:36:87","value":{"arguments":[{"name":"headStart","nativeSrc":"3841:9:87","nodeType":"YulIdentifier","src":"3841:9:87"}],"functionName":{"name":"calldataload","nativeSrc":"3828:12:87","nodeType":"YulIdentifier","src":"3828:12:87"},"nativeSrc":"3828:23:87","nodeType":"YulFunctionCall","src":"3828:23:87"},"variables":[{"name":"value","nativeSrc":"3819:5:87","nodeType":"YulTypedName","src":"3819:5:87","type":""}]},{"body":{"nativeSrc":"3884:16:87","nodeType":"YulBlock","src":"3884:16:87","statements":[{"expression":{"arguments":[{"kind":"number","nativeSrc":"3893:1:87","nodeType":"YulLiteral","src":"3893:1:87","type":"","value":"0"},{"kind":"number","nativeSrc":"3896:1:87","nodeType":"YulLiteral","src":"3896:1:87","type":"","value":"0"}],"functionName":{"name":"revert","nativeSrc":"3886:6:87","nodeType":"YulIdentifier","src":"3886:6:87"},"nativeSrc":"3886:12:87","nodeType":"YulFunctionCall","src":"3886:12:87"},"nativeSrc":"3886:12:87","nodeType":"YulExpressionStatement","src":"3886:12:87"}]},"condition":{"arguments":[{"arguments":[{"name":"value","nativeSrc":"3873:5:87","nodeType":"YulIdentifier","src":"3873:5:87"},{"kind":"number","nativeSrc":"3880:1:87","nodeType":"YulLiteral","src":"3880:1:87","type":"","value":"4"}],"functionName":{"name":"lt","nativeSrc":"3870:2:87","nodeType":"YulIdentifier","src":"3870:2:87"},"nativeSrc":"3870:12:87","nodeType":"YulFunctionCall","src":"3870:12:87"}],"functionName":{"name":"iszero","nativeSrc":"3863:6:87","nodeType":"YulIdentifier","src":"3863:6:87"},"nativeSrc":"3863:20:87","nodeType":"YulFunctionCall","src":"3863:20:87"},"nativeSrc":"3860:40:87","nodeType":"YulIf","src":"3860:40:87"},{"nativeSrc":"3909:15:87","nodeType":"YulAssignment","src":"3909:15:87","value":{"name":"value","nativeSrc":"3919:5:87","nodeType":"YulIdentifier","src":"3919:5:87"},"variableNames":[{"name":"value0","nativeSrc":"3909:6:87","nodeType":"YulIdentifier","src":"3909:6:87"}]},{"nativeSrc":"3933:16:87","nodeType":"YulVariableDeclaration","src":"3933:16:87","value":{"kind":"number","nativeSrc":"3948:1:87","nodeType":"YulLiteral","src":"3948:1:87","type":"","value":"0"},"variables":[{"name":"value_1","nativeSrc":"3937:7:87","nodeType":"YulTypedName","src":"3937:7:87","type":""}]},{"nativeSrc":"3958:43:87","nodeType":"YulAssignment","src":"3958:43:87","value":{"arguments":[{"arguments":[{"name":"headStart","nativeSrc":"3986:9:87","nodeType":"YulIdentifier","src":"3986:9:87"},{"kind":"number","nativeSrc":"3997:2:87","nodeType":"YulLiteral","src":"3997:2:87","type":"","value":"32"}],"functionName":{"name":"add","nativeSrc":"3982:3:87","nodeType":"YulIdentifier","src":"3982:3:87"},"nativeSrc":"3982:18:87","nodeType":"YulFunctionCall","src":"3982:18:87"}],"functionName":{"name":"calldataload","nativeSrc":"3969:12:87","nodeType":"YulIdentifier","src":"3969:12:87"},"nativeSrc":"3969:32:87","nodeType":"YulFunctionCall","src":"3969:32:87"},"variableNames":[{"name":"value_1","nativeSrc":"3958:7:87","nodeType":"YulIdentifier","src":"3958:7:87"}]},{"nativeSrc":"4010:17:87","nodeType":"YulAssignment","src":"4010:17:87","value":{"name":"value_1","nativeSrc":"4020:7:87","nodeType":"YulIdentifier","src":"4020:7:87"},"variableNames":[{"name":"value1","nativeSrc":"4010:6:87","nodeType":"YulIdentifier","src":"4010:6:87"}]}]},"name":"abi_decode_tuple_t_enum$_OverrideOption_$2758t_uint256","nativeSrc":"3638:395:87","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nativeSrc":"3702:9:87","nodeType":"YulTypedName","src":"3702:9:87","type":""},{"name":"dataEnd","nativeSrc":"3713:7:87","nodeType":"YulTypedName","src":"3713:7:87","type":""}],"returnVariables":[{"name":"value0","nativeSrc":"3725:6:87","nodeType":"YulTypedName","src":"3725:6:87","type":""},{"name":"value1","nativeSrc":"3733:6:87","nodeType":"YulTypedName","src":"3733:6:87","type":""}],"src":"3638:395:87"},{"body":{"nativeSrc":"4125:173:87","nodeType":"YulBlock","src":"4125:173:87","statements":[{"body":{"nativeSrc":"4171:16:87","nodeType":"YulBlock","src":"4171:16:87","statements":[{"expression":{"arguments":[{"kind":"number","nativeSrc":"4180:1:87","nodeType":"YulLiteral","src":"4180:1:87","type":"","value":"0"},{"kind":"number","nativeSrc":"4183:1:87","nodeType":"YulLiteral","src":"4183:1:87","type":"","value":"0"}],"functionName":{"name":"revert","nativeSrc":"4173:6:87","nodeType":"YulIdentifier","src":"4173:6:87"},"nativeSrc":"4173:12:87","nodeType":"YulFunctionCall","src":"4173:12:87"},"nativeSrc":"4173:12:87","nodeType":"YulExpressionStatement","src":"4173:12:87"}]},"condition":{"arguments":[{"arguments":[{"name":"dataEnd","nativeSrc":"4146:7:87","nodeType":"YulIdentifier","src":"4146:7:87"},{"name":"headStart","nativeSrc":"4155:9:87","nodeType":"YulIdentifier","src":"4155:9:87"}],"functionName":{"name":"sub","nativeSrc":"4142:3:87","nodeType":"YulIdentifier","src":"4142:3:87"},"nativeSrc":"4142:23:87","nodeType":"YulFunctionCall","src":"4142:23:87"},{"kind":"number","nativeSrc":"4167:2:87","nodeType":"YulLiteral","src":"4167:2:87","type":"","value":"64"}],"functionName":{"name":"slt","nativeSrc":"4138:3:87","nodeType":"YulIdentifier","src":"4138:3:87"},"nativeSrc":"4138:32:87","nodeType":"YulFunctionCall","src":"4138:32:87"},"nativeSrc":"4135:52:87","nodeType":"YulIf","src":"4135:52:87"},{"nativeSrc":"4196:39:87","nodeType":"YulAssignment","src":"4196:39:87","value":{"arguments":[{"name":"headStart","nativeSrc":"4225:9:87","nodeType":"YulIdentifier","src":"4225:9:87"}],"functionName":{"name":"abi_decode_address","nativeSrc":"4206:18:87","nodeType":"YulIdentifier","src":"4206:18:87"},"nativeSrc":"4206:29:87","nodeType":"YulFunctionCall","src":"4206:29:87"},"variableNames":[{"name":"value0","nativeSrc":"4196:6:87","nodeType":"YulIdentifier","src":"4196:6:87"}]},{"nativeSrc":"4244:48:87","nodeType":"YulAssignment","src":"4244:48:87","value":{"arguments":[{"arguments":[{"name":"headStart","nativeSrc":"4277:9:87","nodeType":"YulIdentifier","src":"4277:9:87"},{"kind":"number","nativeSrc":"4288:2:87","nodeType":"YulLiteral","src":"4288:2:87","type":"","value":"32"}],"functionName":{"name":"add","nativeSrc":"4273:3:87","nodeType":"YulIdentifier","src":"4273:3:87"},"nativeSrc":"4273:18:87","nodeType":"YulFunctionCall","src":"4273:18:87"}],"functionName":{"name":"abi_decode_address","nativeSrc":"4254:18:87","nodeType":"YulIdentifier","src":"4254:18:87"},"nativeSrc":"4254:38:87","nodeType":"YulFunctionCall","src":"4254:38:87"},"variableNames":[{"name":"value1","nativeSrc":"4244:6:87","nodeType":"YulIdentifier","src":"4244:6:87"}]}]},"name":"abi_decode_tuple_t_addresst_address","nativeSrc":"4038:260:87","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nativeSrc":"4083:9:87","nodeType":"YulTypedName","src":"4083:9:87","type":""},{"name":"dataEnd","nativeSrc":"4094:7:87","nodeType":"YulTypedName","src":"4094:7:87","type":""}],"returnVariables":[{"name":"value0","nativeSrc":"4106:6:87","nodeType":"YulTypedName","src":"4106:6:87","type":""},{"name":"value1","nativeSrc":"4114:6:87","nodeType":"YulTypedName","src":"4114:6:87","type":""}],"src":"4038:260:87"},{"body":{"nativeSrc":"4384:103:87","nodeType":"YulBlock","src":"4384:103:87","statements":[{"body":{"nativeSrc":"4430:16:87","nodeType":"YulBlock","src":"4430:16:87","statements":[{"expression":{"arguments":[{"kind":"number","nativeSrc":"4439:1:87","nodeType":"YulLiteral","src":"4439:1:87","type":"","value":"0"},{"kind":"number","nativeSrc":"4442:1:87","nodeType":"YulLiteral","src":"4442:1:87","type":"","value":"0"}],"functionName":{"name":"revert","nativeSrc":"4432:6:87","nodeType":"YulIdentifier","src":"4432:6:87"},"nativeSrc":"4432:12:87","nodeType":"YulFunctionCall","src":"4432:12:87"},"nativeSrc":"4432:12:87","nodeType":"YulExpressionStatement","src":"4432:12:87"}]},"condition":{"arguments":[{"arguments":[{"name":"dataEnd","nativeSrc":"4405:7:87","nodeType":"YulIdentifier","src":"4405:7:87"},{"name":"headStart","nativeSrc":"4414:9:87","nodeType":"YulIdentifier","src":"4414:9:87"}],"functionName":{"name":"sub","nativeSrc":"4401:3:87","nodeType":"YulIdentifier","src":"4401:3:87"},"nativeSrc":"4401:23:87","nodeType":"YulFunctionCall","src":"4401:23:87"},{"kind":"number","nativeSrc":"4426:2:87","nodeType":"YulLiteral","src":"4426:2:87","type":"","value":"32"}],"functionName":{"name":"slt","nativeSrc":"4397:3:87","nodeType":"YulIdentifier","src":"4397:3:87"},"nativeSrc":"4397:32:87","nodeType":"YulFunctionCall","src":"4397:32:87"},"nativeSrc":"4394:52:87","nodeType":"YulIf","src":"4394:52:87"},{"nativeSrc":"4455:26:87","nodeType":"YulAssignment","src":"4455:26:87","value":{"arguments":[{"name":"headStart","nativeSrc":"4471:9:87","nodeType":"YulIdentifier","src":"4471:9:87"}],"functionName":{"name":"mload","nativeSrc":"4465:5:87","nodeType":"YulIdentifier","src":"4465:5:87"},"nativeSrc":"4465:16:87","nodeType":"YulFunctionCall","src":"4465:16:87"},"variableNames":[{"name":"value0","nativeSrc":"4455:6:87","nodeType":"YulIdentifier","src":"4455:6:87"}]}]},"name":"abi_decode_tuple_t_uint256_fromMemory","nativeSrc":"4303:184:87","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nativeSrc":"4350:9:87","nodeType":"YulTypedName","src":"4350:9:87","type":""},{"name":"dataEnd","nativeSrc":"4361:7:87","nodeType":"YulTypedName","src":"4361:7:87","type":""}],"returnVariables":[{"name":"value0","nativeSrc":"4373:6:87","nodeType":"YulTypedName","src":"4373:6:87","type":""}],"src":"4303:184:87"},{"body":{"nativeSrc":"4547:325:87","nodeType":"YulBlock","src":"4547:325:87","statements":[{"nativeSrc":"4557:22:87","nodeType":"YulAssignment","src":"4557:22:87","value":{"arguments":[{"kind":"number","nativeSrc":"4571:1:87","nodeType":"YulLiteral","src":"4571:1:87","type":"","value":"1"},{"name":"data","nativeSrc":"4574:4:87","nodeType":"YulIdentifier","src":"4574:4:87"}],"functionName":{"name":"shr","nativeSrc":"4567:3:87","nodeType":"YulIdentifier","src":"4567:3:87"},"nativeSrc":"4567:12:87","nodeType":"YulFunctionCall","src":"4567:12:87"},"variableNames":[{"name":"length","nativeSrc":"4557:6:87","nodeType":"YulIdentifier","src":"4557:6:87"}]},{"nativeSrc":"4588:38:87","nodeType":"YulVariableDeclaration","src":"4588:38:87","value":{"arguments":[{"name":"data","nativeSrc":"4618:4:87","nodeType":"YulIdentifier","src":"4618:4:87"},{"kind":"number","nativeSrc":"4624:1:87","nodeType":"YulLiteral","src":"4624:1:87","type":"","value":"1"}],"functionName":{"name":"and","nativeSrc":"4614:3:87","nodeType":"YulIdentifier","src":"4614:3:87"},"nativeSrc":"4614:12:87","nodeType":"YulFunctionCall","src":"4614:12:87"},"variables":[{"name":"outOfPlaceEncoding","nativeSrc":"4592:18:87","nodeType":"YulTypedName","src":"4592:18:87","type":""}]},{"body":{"nativeSrc":"4665:31:87","nodeType":"YulBlock","src":"4665:31:87","statements":[{"nativeSrc":"4667:27:87","nodeType":"YulAssignment","src":"4667:27:87","value":{"arguments":[{"name":"length","nativeSrc":"4681:6:87","nodeType":"YulIdentifier","src":"4681:6:87"},{"kind":"number","nativeSrc":"4689:4:87","nodeType":"YulLiteral","src":"4689:4:87","type":"","value":"0x7f"}],"functionName":{"name":"and","nativeSrc":"4677:3:87","nodeType":"YulIdentifier","src":"4677:3:87"},"nativeSrc":"4677:17:87","nodeType":"YulFunctionCall","src":"4677:17:87"},"variableNames":[{"name":"length","nativeSrc":"4667:6:87","nodeType":"YulIdentifier","src":"4667:6:87"}]}]},"condition":{"arguments":[{"name":"outOfPlaceEncoding","nativeSrc":"4645:18:87","nodeType":"YulIdentifier","src":"4645:18:87"}],"functionName":{"name":"iszero","nativeSrc":"4638:6:87","nodeType":"YulIdentifier","src":"4638:6:87"},"nativeSrc":"4638:26:87","nodeType":"YulFunctionCall","src":"4638:26:87"},"nativeSrc":"4635:61:87","nodeType":"YulIf","src":"4635:61:87"},{"body":{"nativeSrc":"4755:111:87","nodeType":"YulBlock","src":"4755:111:87","statements":[{"expression":{"arguments":[{"kind":"number","nativeSrc":"4776:1:87","nodeType":"YulLiteral","src":"4776:1:87","type":"","value":"0"},{"arguments":[{"kind":"number","nativeSrc":"4783:3:87","nodeType":"YulLiteral","src":"4783:3:87","type":"","value":"224"},{"kind":"number","nativeSrc":"4788:10:87","nodeType":"YulLiteral","src":"4788:10:87","type":"","value":"0x4e487b71"}],"functionName":{"name":"shl","nativeSrc":"4779:3:87","nodeType":"YulIdentifier","src":"4779:3:87"},"nativeSrc":"4779:20:87","nodeType":"YulFunctionCall","src":"4779:20:87"}],"functionName":{"name":"mstore","nativeSrc":"4769:6:87","nodeType":"YulIdentifier","src":"4769:6:87"},"nativeSrc":"4769:31:87","nodeType":"YulFunctionCall","src":"4769:31:87"},"nativeSrc":"4769:31:87","nodeType":"YulExpressionStatement","src":"4769:31:87"},{"expression":{"arguments":[{"kind":"number","nativeSrc":"4820:1:87","nodeType":"YulLiteral","src":"4820:1:87","type":"","value":"4"},{"kind":"number","nativeSrc":"4823:4:87","nodeType":"YulLiteral","src":"4823:4:87","type":"","value":"0x22"}],"functionName":{"name":"mstore","nativeSrc":"4813:6:87","nodeType":"YulIdentifier","src":"4813:6:87"},"nativeSrc":"4813:15:87","nodeType":"YulFunctionCall","src":"4813:15:87"},"nativeSrc":"4813:15:87","nodeType":"YulExpressionStatement","src":"4813:15:87"},{"expression":{"arguments":[{"kind":"number","nativeSrc":"4848:1:87","nodeType":"YulLiteral","src":"4848:1:87","type":"","value":"0"},{"kind":"number","nativeSrc":"4851:4:87","nodeType":"YulLiteral","src":"4851:4:87","type":"","value":"0x24"}],"functionName":{"name":"revert","nativeSrc":"4841:6:87","nodeType":"YulIdentifier","src":"4841:6:87"},"nativeSrc":"4841:15:87","nodeType":"YulFunctionCall","src":"4841:15:87"},"nativeSrc":"4841:15:87","nodeType":"YulExpressionStatement","src":"4841:15:87"}]},"condition":{"arguments":[{"name":"outOfPlaceEncoding","nativeSrc":"4711:18:87","nodeType":"YulIdentifier","src":"4711:18:87"},{"arguments":[{"name":"length","nativeSrc":"4734:6:87","nodeType":"YulIdentifier","src":"4734:6:87"},{"kind":"number","nativeSrc":"4742:2:87","nodeType":"YulLiteral","src":"4742:2:87","type":"","value":"32"}],"functionName":{"name":"lt","nativeSrc":"4731:2:87","nodeType":"YulIdentifier","src":"4731:2:87"},"nativeSrc":"4731:14:87","nodeType":"YulFunctionCall","src":"4731:14:87"}],"functionName":{"name":"eq","nativeSrc":"4708:2:87","nodeType":"YulIdentifier","src":"4708:2:87"},"nativeSrc":"4708:38:87","nodeType":"YulFunctionCall","src":"4708:38:87"},"nativeSrc":"4705:161:87","nodeType":"YulIf","src":"4705:161:87"}]},"name":"extract_byte_array_length","nativeSrc":"4492:380:87","nodeType":"YulFunctionDefinition","parameters":[{"name":"data","nativeSrc":"4527:4:87","nodeType":"YulTypedName","src":"4527:4:87","type":""}],"returnVariables":[{"name":"length","nativeSrc":"4536:6:87","nodeType":"YulTypedName","src":"4536:6:87","type":""}],"src":"4492:380:87"},{"body":{"nativeSrc":"4909:95:87","nodeType":"YulBlock","src":"4909:95:87","statements":[{"expression":{"arguments":[{"kind":"number","nativeSrc":"4926:1:87","nodeType":"YulLiteral","src":"4926:1:87","type":"","value":"0"},{"arguments":[{"kind":"number","nativeSrc":"4933:3:87","nodeType":"YulLiteral","src":"4933:3:87","type":"","value":"224"},{"kind":"number","nativeSrc":"4938:10:87","nodeType":"YulLiteral","src":"4938:10:87","type":"","value":"0x4e487b71"}],"functionName":{"name":"shl","nativeSrc":"4929:3:87","nodeType":"YulIdentifier","src":"4929:3:87"},"nativeSrc":"4929:20:87","nodeType":"YulFunctionCall","src":"4929:20:87"}],"functionName":{"name":"mstore","nativeSrc":"4919:6:87","nodeType":"YulIdentifier","src":"4919:6:87"},"nativeSrc":"4919:31:87","nodeType":"YulFunctionCall","src":"4919:31:87"},"nativeSrc":"4919:31:87","nodeType":"YulExpressionStatement","src":"4919:31:87"},{"expression":{"arguments":[{"kind":"number","nativeSrc":"4966:1:87","nodeType":"YulLiteral","src":"4966:1:87","type":"","value":"4"},{"kind":"number","nativeSrc":"4969:4:87","nodeType":"YulLiteral","src":"4969:4:87","type":"","value":"0x11"}],"functionName":{"name":"mstore","nativeSrc":"4959:6:87","nodeType":"YulIdentifier","src":"4959:6:87"},"nativeSrc":"4959:15:87","nodeType":"YulFunctionCall","src":"4959:15:87"},"nativeSrc":"4959:15:87","nodeType":"YulExpressionStatement","src":"4959:15:87"},{"expression":{"arguments":[{"kind":"number","nativeSrc":"4990:1:87","nodeType":"YulLiteral","src":"4990:1:87","type":"","value":"0"},{"kind":"number","nativeSrc":"4993:4:87","nodeType":"YulLiteral","src":"4993:4:87","type":"","value":"0x24"}],"functionName":{"name":"revert","nativeSrc":"4983:6:87","nodeType":"YulIdentifier","src":"4983:6:87"},"nativeSrc":"4983:15:87","nodeType":"YulFunctionCall","src":"4983:15:87"},"nativeSrc":"4983:15:87","nodeType":"YulExpressionStatement","src":"4983:15:87"}]},"name":"panic_error_0x11","nativeSrc":"4877:127:87","nodeType":"YulFunctionDefinition","src":"4877:127:87"},{"body":{"nativeSrc":"5055:102:87","nodeType":"YulBlock","src":"5055:102:87","statements":[{"nativeSrc":"5065:38:87","nodeType":"YulAssignment","src":"5065:38:87","value":{"arguments":[{"arguments":[{"name":"x","nativeSrc":"5080:1:87","nodeType":"YulIdentifier","src":"5080:1:87"},{"kind":"number","nativeSrc":"5083:4:87","nodeType":"YulLiteral","src":"5083:4:87","type":"","value":"0xff"}],"functionName":{"name":"and","nativeSrc":"5076:3:87","nodeType":"YulIdentifier","src":"5076:3:87"},"nativeSrc":"5076:12:87","nodeType":"YulFunctionCall","src":"5076:12:87"},{"arguments":[{"name":"y","nativeSrc":"5094:1:87","nodeType":"YulIdentifier","src":"5094:1:87"},{"kind":"number","nativeSrc":"5097:4:87","nodeType":"YulLiteral","src":"5097:4:87","type":"","value":"0xff"}],"functionName":{"name":"and","nativeSrc":"5090:3:87","nodeType":"YulIdentifier","src":"5090:3:87"},"nativeSrc":"5090:12:87","nodeType":"YulFunctionCall","src":"5090:12:87"}],"functionName":{"name":"add","nativeSrc":"5072:3:87","nodeType":"YulIdentifier","src":"5072:3:87"},"nativeSrc":"5072:31:87","nodeType":"YulFunctionCall","src":"5072:31:87"},"variableNames":[{"name":"sum","nativeSrc":"5065:3:87","nodeType":"YulIdentifier","src":"5065:3:87"}]},{"body":{"nativeSrc":"5129:22:87","nodeType":"YulBlock","src":"5129:22:87","statements":[{"expression":{"arguments":[],"functionName":{"name":"panic_error_0x11","nativeSrc":"5131:16:87","nodeType":"YulIdentifier","src":"5131:16:87"},"nativeSrc":"5131:18:87","nodeType":"YulFunctionCall","src":"5131:18:87"},"nativeSrc":"5131:18:87","nodeType":"YulExpressionStatement","src":"5131:18:87"}]},"condition":{"arguments":[{"name":"sum","nativeSrc":"5118:3:87","nodeType":"YulIdentifier","src":"5118:3:87"},{"kind":"number","nativeSrc":"5123:4:87","nodeType":"YulLiteral","src":"5123:4:87","type":"","value":"0xff"}],"functionName":{"name":"gt","nativeSrc":"5115:2:87","nodeType":"YulIdentifier","src":"5115:2:87"},"nativeSrc":"5115:13:87","nodeType":"YulFunctionCall","src":"5115:13:87"},"nativeSrc":"5112:39:87","nodeType":"YulIf","src":"5112:39:87"}]},"name":"checked_add_t_uint8","nativeSrc":"5009:148:87","nodeType":"YulFunctionDefinition","parameters":[{"name":"x","nativeSrc":"5038:1:87","nodeType":"YulTypedName","src":"5038:1:87","type":""},{"name":"y","nativeSrc":"5041:1:87","nodeType":"YulTypedName","src":"5041:1:87","type":""}],"returnVariables":[{"name":"sum","nativeSrc":"5047:3:87","nodeType":"YulTypedName","src":"5047:3:87","type":""}],"src":"5009:148:87"},{"body":{"nativeSrc":"5211:79:87","nodeType":"YulBlock","src":"5211:79:87","statements":[{"nativeSrc":"5221:17:87","nodeType":"YulAssignment","src":"5221:17:87","value":{"arguments":[{"name":"x","nativeSrc":"5233:1:87","nodeType":"YulIdentifier","src":"5233:1:87"},{"name":"y","nativeSrc":"5236:1:87","nodeType":"YulIdentifier","src":"5236:1:87"}],"functionName":{"name":"sub","nativeSrc":"5229:3:87","nodeType":"YulIdentifier","src":"5229:3:87"},"nativeSrc":"5229:9:87","nodeType":"YulFunctionCall","src":"5229:9:87"},"variableNames":[{"name":"diff","nativeSrc":"5221:4:87","nodeType":"YulIdentifier","src":"5221:4:87"}]},{"body":{"nativeSrc":"5262:22:87","nodeType":"YulBlock","src":"5262:22:87","statements":[{"expression":{"arguments":[],"functionName":{"name":"panic_error_0x11","nativeSrc":"5264:16:87","nodeType":"YulIdentifier","src":"5264:16:87"},"nativeSrc":"5264:18:87","nodeType":"YulFunctionCall","src":"5264:18:87"},"nativeSrc":"5264:18:87","nodeType":"YulExpressionStatement","src":"5264:18:87"}]},"condition":{"arguments":[{"name":"diff","nativeSrc":"5253:4:87","nodeType":"YulIdentifier","src":"5253:4:87"},{"name":"x","nativeSrc":"5259:1:87","nodeType":"YulIdentifier","src":"5259:1:87"}],"functionName":{"name":"gt","nativeSrc":"5250:2:87","nodeType":"YulIdentifier","src":"5250:2:87"},"nativeSrc":"5250:11:87","nodeType":"YulFunctionCall","src":"5250:11:87"},"nativeSrc":"5247:37:87","nodeType":"YulIf","src":"5247:37:87"}]},"name":"checked_sub_t_uint256","nativeSrc":"5162:128:87","nodeType":"YulFunctionDefinition","parameters":[{"name":"x","nativeSrc":"5193:1:87","nodeType":"YulTypedName","src":"5193:1:87","type":""},{"name":"y","nativeSrc":"5196:1:87","nodeType":"YulTypedName","src":"5196:1:87","type":""}],"returnVariables":[{"name":"diff","nativeSrc":"5202:4:87","nodeType":"YulTypedName","src":"5202:4:87","type":""}],"src":"5162:128:87"},{"body":{"nativeSrc":"5452:188:87","nodeType":"YulBlock","src":"5452:188:87","statements":[{"nativeSrc":"5462:26:87","nodeType":"YulAssignment","src":"5462:26:87","value":{"arguments":[{"name":"headStart","nativeSrc":"5474:9:87","nodeType":"YulIdentifier","src":"5474:9:87"},{"kind":"number","nativeSrc":"5485:2:87","nodeType":"YulLiteral","src":"5485:2:87","type":"","value":"96"}],"functionName":{"name":"add","nativeSrc":"5470:3:87","nodeType":"YulIdentifier","src":"5470:3:87"},"nativeSrc":"5470:18:87","nodeType":"YulFunctionCall","src":"5470:18:87"},"variableNames":[{"name":"tail","nativeSrc":"5462:4:87","nodeType":"YulIdentifier","src":"5462:4:87"}]},{"expression":{"arguments":[{"name":"headStart","nativeSrc":"5504:9:87","nodeType":"YulIdentifier","src":"5504:9:87"},{"arguments":[{"name":"value0","nativeSrc":"5519:6:87","nodeType":"YulIdentifier","src":"5519:6:87"},{"arguments":[{"arguments":[{"kind":"number","nativeSrc":"5535:3:87","nodeType":"YulLiteral","src":"5535:3:87","type":"","value":"160"},{"kind":"number","nativeSrc":"5540:1:87","nodeType":"YulLiteral","src":"5540:1:87","type":"","value":"1"}],"functionName":{"name":"shl","nativeSrc":"5531:3:87","nodeType":"YulIdentifier","src":"5531:3:87"},"nativeSrc":"5531:11:87","nodeType":"YulFunctionCall","src":"5531:11:87"},{"kind":"number","nativeSrc":"5544:1:87","nodeType":"YulLiteral","src":"5544:1:87","type":"","value":"1"}],"functionName":{"name":"sub","nativeSrc":"5527:3:87","nodeType":"YulIdentifier","src":"5527:3:87"},"nativeSrc":"5527:19:87","nodeType":"YulFunctionCall","src":"5527:19:87"}],"functionName":{"name":"and","nativeSrc":"5515:3:87","nodeType":"YulIdentifier","src":"5515:3:87"},"nativeSrc":"5515:32:87","nodeType":"YulFunctionCall","src":"5515:32:87"}],"functionName":{"name":"mstore","nativeSrc":"5497:6:87","nodeType":"YulIdentifier","src":"5497:6:87"},"nativeSrc":"5497:51:87","nodeType":"YulFunctionCall","src":"5497:51:87"},"nativeSrc":"5497:51:87","nodeType":"YulExpressionStatement","src":"5497:51:87"},{"expression":{"arguments":[{"arguments":[{"name":"headStart","nativeSrc":"5568:9:87","nodeType":"YulIdentifier","src":"5568:9:87"},{"kind":"number","nativeSrc":"5579:2:87","nodeType":"YulLiteral","src":"5579:2:87","type":"","value":"32"}],"functionName":{"name":"add","nativeSrc":"5564:3:87","nodeType":"YulIdentifier","src":"5564:3:87"},"nativeSrc":"5564:18:87","nodeType":"YulFunctionCall","src":"5564:18:87"},{"name":"value1","nativeSrc":"5584:6:87","nodeType":"YulIdentifier","src":"5584:6:87"}],"functionName":{"name":"mstore","nativeSrc":"5557:6:87","nodeType":"YulIdentifier","src":"5557:6:87"},"nativeSrc":"5557:34:87","nodeType":"YulFunctionCall","src":"5557:34:87"},"nativeSrc":"5557:34:87","nodeType":"YulExpressionStatement","src":"5557:34:87"},{"expression":{"arguments":[{"arguments":[{"name":"headStart","nativeSrc":"5611:9:87","nodeType":"YulIdentifier","src":"5611:9:87"},{"kind":"number","nativeSrc":"5622:2:87","nodeType":"YulLiteral","src":"5622:2:87","type":"","value":"64"}],"functionName":{"name":"add","nativeSrc":"5607:3:87","nodeType":"YulIdentifier","src":"5607:3:87"},"nativeSrc":"5607:18:87","nodeType":"YulFunctionCall","src":"5607:18:87"},{"name":"value2","nativeSrc":"5627:6:87","nodeType":"YulIdentifier","src":"5627:6:87"}],"functionName":{"name":"mstore","nativeSrc":"5600:6:87","nodeType":"YulIdentifier","src":"5600:6:87"},"nativeSrc":"5600:34:87","nodeType":"YulFunctionCall","src":"5600:34:87"},"nativeSrc":"5600:34:87","nodeType":"YulExpressionStatement","src":"5600:34:87"}]},"name":"abi_encode_tuple_t_address_t_uint256_t_uint256__to_t_address_t_uint256_t_uint256__fromStack_reversed","nativeSrc":"5295:345:87","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nativeSrc":"5405:9:87","nodeType":"YulTypedName","src":"5405:9:87","type":""},{"name":"value2","nativeSrc":"5416:6:87","nodeType":"YulTypedName","src":"5416:6:87","type":""},{"name":"value1","nativeSrc":"5424:6:87","nodeType":"YulTypedName","src":"5424:6:87","type":""},{"name":"value0","nativeSrc":"5432:6:87","nodeType":"YulTypedName","src":"5432:6:87","type":""}],"returnVariables":[{"name":"tail","nativeSrc":"5443:4:87","nodeType":"YulTypedName","src":"5443:4:87","type":""}],"src":"5295:345:87"},{"body":{"nativeSrc":"5774:145:87","nodeType":"YulBlock","src":"5774:145:87","statements":[{"nativeSrc":"5784:26:87","nodeType":"YulAssignment","src":"5784:26:87","value":{"arguments":[{"name":"headStart","nativeSrc":"5796:9:87","nodeType":"YulIdentifier","src":"5796:9:87"},{"kind":"number","nativeSrc":"5807:2:87","nodeType":"YulLiteral","src":"5807:2:87","type":"","value":"64"}],"functionName":{"name":"add","nativeSrc":"5792:3:87","nodeType":"YulIdentifier","src":"5792:3:87"},"nativeSrc":"5792:18:87","nodeType":"YulFunctionCall","src":"5792:18:87"},"variableNames":[{"name":"tail","nativeSrc":"5784:4:87","nodeType":"YulIdentifier","src":"5784:4:87"}]},{"expression":{"arguments":[{"name":"headStart","nativeSrc":"5826:9:87","nodeType":"YulIdentifier","src":"5826:9:87"},{"arguments":[{"name":"value0","nativeSrc":"5841:6:87","nodeType":"YulIdentifier","src":"5841:6:87"},{"arguments":[{"arguments":[{"kind":"number","nativeSrc":"5857:3:87","nodeType":"YulLiteral","src":"5857:3:87","type":"","value":"160"},{"kind":"number","nativeSrc":"5862:1:87","nodeType":"YulLiteral","src":"5862:1:87","type":"","value":"1"}],"functionName":{"name":"shl","nativeSrc":"5853:3:87","nodeType":"YulIdentifier","src":"5853:3:87"},"nativeSrc":"5853:11:87","nodeType":"YulFunctionCall","src":"5853:11:87"},{"kind":"number","nativeSrc":"5866:1:87","nodeType":"YulLiteral","src":"5866:1:87","type":"","value":"1"}],"functionName":{"name":"sub","nativeSrc":"5849:3:87","nodeType":"YulIdentifier","src":"5849:3:87"},"nativeSrc":"5849:19:87","nodeType":"YulFunctionCall","src":"5849:19:87"}],"functionName":{"name":"and","nativeSrc":"5837:3:87","nodeType":"YulIdentifier","src":"5837:3:87"},"nativeSrc":"5837:32:87","nodeType":"YulFunctionCall","src":"5837:32:87"}],"functionName":{"name":"mstore","nativeSrc":"5819:6:87","nodeType":"YulIdentifier","src":"5819:6:87"},"nativeSrc":"5819:51:87","nodeType":"YulFunctionCall","src":"5819:51:87"},"nativeSrc":"5819:51:87","nodeType":"YulExpressionStatement","src":"5819:51:87"},{"expression":{"arguments":[{"arguments":[{"name":"headStart","nativeSrc":"5890:9:87","nodeType":"YulIdentifier","src":"5890:9:87"},{"kind":"number","nativeSrc":"5901:2:87","nodeType":"YulLiteral","src":"5901:2:87","type":"","value":"32"}],"functionName":{"name":"add","nativeSrc":"5886:3:87","nodeType":"YulIdentifier","src":"5886:3:87"},"nativeSrc":"5886:18:87","nodeType":"YulFunctionCall","src":"5886:18:87"},{"name":"value1","nativeSrc":"5906:6:87","nodeType":"YulIdentifier","src":"5906:6:87"}],"functionName":{"name":"mstore","nativeSrc":"5879:6:87","nodeType":"YulIdentifier","src":"5879:6:87"},"nativeSrc":"5879:34:87","nodeType":"YulFunctionCall","src":"5879:34:87"},"nativeSrc":"5879:34:87","nodeType":"YulExpressionStatement","src":"5879:34:87"}]},"name":"abi_encode_tuple_t_address_t_uint256__to_t_address_t_uint256__fromStack_reversed","nativeSrc":"5645:274:87","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nativeSrc":"5735:9:87","nodeType":"YulTypedName","src":"5735:9:87","type":""},{"name":"value1","nativeSrc":"5746:6:87","nodeType":"YulTypedName","src":"5746:6:87","type":""},{"name":"value0","nativeSrc":"5754:6:87","nodeType":"YulTypedName","src":"5754:6:87","type":""}],"returnVariables":[{"name":"tail","nativeSrc":"5765:4:87","nodeType":"YulTypedName","src":"5765:4:87","type":""}],"src":"5645:274:87"},{"body":{"nativeSrc":"5967:93:87","nodeType":"YulBlock","src":"5967:93:87","statements":[{"body":{"nativeSrc":"6003:22:87","nodeType":"YulBlock","src":"6003:22:87","statements":[{"expression":{"arguments":[],"functionName":{"name":"panic_error_0x11","nativeSrc":"6005:16:87","nodeType":"YulIdentifier","src":"6005:16:87"},"nativeSrc":"6005:18:87","nodeType":"YulFunctionCall","src":"6005:18:87"},"nativeSrc":"6005:18:87","nodeType":"YulExpressionStatement","src":"6005:18:87"}]},"condition":{"arguments":[{"name":"value","nativeSrc":"5983:5:87","nodeType":"YulIdentifier","src":"5983:5:87"},{"arguments":[{"kind":"number","nativeSrc":"5994:3:87","nodeType":"YulLiteral","src":"5994:3:87","type":"","value":"255"},{"kind":"number","nativeSrc":"5999:1:87","nodeType":"YulLiteral","src":"5999:1:87","type":"","value":"1"}],"functionName":{"name":"shl","nativeSrc":"5990:3:87","nodeType":"YulIdentifier","src":"5990:3:87"},"nativeSrc":"5990:11:87","nodeType":"YulFunctionCall","src":"5990:11:87"}],"functionName":{"name":"eq","nativeSrc":"5980:2:87","nodeType":"YulIdentifier","src":"5980:2:87"},"nativeSrc":"5980:22:87","nodeType":"YulFunctionCall","src":"5980:22:87"},"nativeSrc":"5977:48:87","nodeType":"YulIf","src":"5977:48:87"},{"nativeSrc":"6034:20:87","nodeType":"YulAssignment","src":"6034:20:87","value":{"arguments":[{"kind":"number","nativeSrc":"6045:1:87","nodeType":"YulLiteral","src":"6045:1:87","type":"","value":"0"},{"name":"value","nativeSrc":"6048:5:87","nodeType":"YulIdentifier","src":"6048:5:87"}],"functionName":{"name":"sub","nativeSrc":"6041:3:87","nodeType":"YulIdentifier","src":"6041:3:87"},"nativeSrc":"6041:13:87","nodeType":"YulFunctionCall","src":"6041:13:87"},"variableNames":[{"name":"ret","nativeSrc":"6034:3:87","nodeType":"YulIdentifier","src":"6034:3:87"}]}]},"name":"negate_t_int256","nativeSrc":"5924:136:87","nodeType":"YulFunctionDefinition","parameters":[{"name":"value","nativeSrc":"5949:5:87","nodeType":"YulTypedName","src":"5949:5:87","type":""}],"returnVariables":[{"name":"ret","nativeSrc":"5959:3:87","nodeType":"YulTypedName","src":"5959:3:87","type":""}],"src":"5924:136:87"},{"body":{"nativeSrc":"6097:95:87","nodeType":"YulBlock","src":"6097:95:87","statements":[{"expression":{"arguments":[{"kind":"number","nativeSrc":"6114:1:87","nodeType":"YulLiteral","src":"6114:1:87","type":"","value":"0"},{"arguments":[{"kind":"number","nativeSrc":"6121:3:87","nodeType":"YulLiteral","src":"6121:3:87","type":"","value":"224"},{"kind":"number","nativeSrc":"6126:10:87","nodeType":"YulLiteral","src":"6126:10:87","type":"","value":"0x4e487b71"}],"functionName":{"name":"shl","nativeSrc":"6117:3:87","nodeType":"YulIdentifier","src":"6117:3:87"},"nativeSrc":"6117:20:87","nodeType":"YulFunctionCall","src":"6117:20:87"}],"functionName":{"name":"mstore","nativeSrc":"6107:6:87","nodeType":"YulIdentifier","src":"6107:6:87"},"nativeSrc":"6107:31:87","nodeType":"YulFunctionCall","src":"6107:31:87"},"nativeSrc":"6107:31:87","nodeType":"YulExpressionStatement","src":"6107:31:87"},{"expression":{"arguments":[{"kind":"number","nativeSrc":"6154:1:87","nodeType":"YulLiteral","src":"6154:1:87","type":"","value":"4"},{"kind":"number","nativeSrc":"6157:4:87","nodeType":"YulLiteral","src":"6157:4:87","type":"","value":"0x21"}],"functionName":{"name":"mstore","nativeSrc":"6147:6:87","nodeType":"YulIdentifier","src":"6147:6:87"},"nativeSrc":"6147:15:87","nodeType":"YulFunctionCall","src":"6147:15:87"},"nativeSrc":"6147:15:87","nodeType":"YulExpressionStatement","src":"6147:15:87"},{"expression":{"arguments":[{"kind":"number","nativeSrc":"6178:1:87","nodeType":"YulLiteral","src":"6178:1:87","type":"","value":"0"},{"kind":"number","nativeSrc":"6181:4:87","nodeType":"YulLiteral","src":"6181:4:87","type":"","value":"0x24"}],"functionName":{"name":"revert","nativeSrc":"6171:6:87","nodeType":"YulIdentifier","src":"6171:6:87"},"nativeSrc":"6171:15:87","nodeType":"YulFunctionCall","src":"6171:15:87"},"nativeSrc":"6171:15:87","nodeType":"YulExpressionStatement","src":"6171:15:87"}]},"name":"panic_error_0x21","nativeSrc":"6065:127:87","nodeType":"YulFunctionDefinition","src":"6065:127:87"},{"body":{"nativeSrc":"6245:77:87","nodeType":"YulBlock","src":"6245:77:87","statements":[{"nativeSrc":"6255:16:87","nodeType":"YulAssignment","src":"6255:16:87","value":{"arguments":[{"name":"x","nativeSrc":"6266:1:87","nodeType":"YulIdentifier","src":"6266:1:87"},{"name":"y","nativeSrc":"6269:1:87","nodeType":"YulIdentifier","src":"6269:1:87"}],"functionName":{"name":"add","nativeSrc":"6262:3:87","nodeType":"YulIdentifier","src":"6262:3:87"},"nativeSrc":"6262:9:87","nodeType":"YulFunctionCall","src":"6262:9:87"},"variableNames":[{"name":"sum","nativeSrc":"6255:3:87","nodeType":"YulIdentifier","src":"6255:3:87"}]},{"body":{"nativeSrc":"6294:22:87","nodeType":"YulBlock","src":"6294:22:87","statements":[{"expression":{"arguments":[],"functionName":{"name":"panic_error_0x11","nativeSrc":"6296:16:87","nodeType":"YulIdentifier","src":"6296:16:87"},"nativeSrc":"6296:18:87","nodeType":"YulFunctionCall","src":"6296:18:87"},"nativeSrc":"6296:18:87","nodeType":"YulExpressionStatement","src":"6296:18:87"}]},"condition":{"arguments":[{"name":"x","nativeSrc":"6286:1:87","nodeType":"YulIdentifier","src":"6286:1:87"},{"name":"sum","nativeSrc":"6289:3:87","nodeType":"YulIdentifier","src":"6289:3:87"}],"functionName":{"name":"gt","nativeSrc":"6283:2:87","nodeType":"YulIdentifier","src":"6283:2:87"},"nativeSrc":"6283:10:87","nodeType":"YulFunctionCall","src":"6283:10:87"},"nativeSrc":"6280:36:87","nodeType":"YulIf","src":"6280:36:87"}]},"name":"checked_add_t_uint256","nativeSrc":"6197:125:87","nodeType":"YulFunctionDefinition","parameters":[{"name":"x","nativeSrc":"6228:1:87","nodeType":"YulTypedName","src":"6228:1:87","type":""},{"name":"y","nativeSrc":"6231:1:87","nodeType":"YulTypedName","src":"6231:1:87","type":""}],"returnVariables":[{"name":"sum","nativeSrc":"6237:3:87","nodeType":"YulTypedName","src":"6237:3:87","type":""}],"src":"6197:125:87"},{"body":{"nativeSrc":"6396:306:87","nodeType":"YulBlock","src":"6396:306:87","statements":[{"nativeSrc":"6406:10:87","nodeType":"YulAssignment","src":"6406:10:87","value":{"kind":"number","nativeSrc":"6415:1:87","nodeType":"YulLiteral","src":"6415:1:87","type":"","value":"1"},"variableNames":[{"name":"power","nativeSrc":"6406:5:87","nodeType":"YulIdentifier","src":"6406:5:87"}]},{"nativeSrc":"6425:13:87","nodeType":"YulAssignment","src":"6425:13:87","value":{"name":"_base","nativeSrc":"6433:5:87","nodeType":"YulIdentifier","src":"6433:5:87"},"variableNames":[{"name":"base","nativeSrc":"6425:4:87","nodeType":"YulIdentifier","src":"6425:4:87"}]},{"body":{"nativeSrc":"6483:213:87","nodeType":"YulBlock","src":"6483:213:87","statements":[{"body":{"nativeSrc":"6525:22:87","nodeType":"YulBlock","src":"6525:22:87","statements":[{"expression":{"arguments":[],"functionName":{"name":"panic_error_0x11","nativeSrc":"6527:16:87","nodeType":"YulIdentifier","src":"6527:16:87"},"nativeSrc":"6527:18:87","nodeType":"YulFunctionCall","src":"6527:18:87"},"nativeSrc":"6527:18:87","nodeType":"YulExpressionStatement","src":"6527:18:87"}]},"condition":{"arguments":[{"name":"base","nativeSrc":"6503:4:87","nodeType":"YulIdentifier","src":"6503:4:87"},{"arguments":[{"name":"max","nativeSrc":"6513:3:87","nodeType":"YulIdentifier","src":"6513:3:87"},{"name":"base","nativeSrc":"6518:4:87","nodeType":"YulIdentifier","src":"6518:4:87"}],"functionName":{"name":"div","nativeSrc":"6509:3:87","nodeType":"YulIdentifier","src":"6509:3:87"},"nativeSrc":"6509:14:87","nodeType":"YulFunctionCall","src":"6509:14:87"}],"functionName":{"name":"gt","nativeSrc":"6500:2:87","nodeType":"YulIdentifier","src":"6500:2:87"},"nativeSrc":"6500:24:87","nodeType":"YulFunctionCall","src":"6500:24:87"},"nativeSrc":"6497:50:87","nodeType":"YulIf","src":"6497:50:87"},{"body":{"nativeSrc":"6580:29:87","nodeType":"YulBlock","src":"6580:29:87","statements":[{"nativeSrc":"6582:25:87","nodeType":"YulAssignment","src":"6582:25:87","value":{"arguments":[{"name":"power","nativeSrc":"6595:5:87","nodeType":"YulIdentifier","src":"6595:5:87"},{"name":"base","nativeSrc":"6602:4:87","nodeType":"YulIdentifier","src":"6602:4:87"}],"functionName":{"name":"mul","nativeSrc":"6591:3:87","nodeType":"YulIdentifier","src":"6591:3:87"},"nativeSrc":"6591:16:87","nodeType":"YulFunctionCall","src":"6591:16:87"},"variableNames":[{"name":"power","nativeSrc":"6582:5:87","nodeType":"YulIdentifier","src":"6582:5:87"}]}]},"condition":{"arguments":[{"name":"exponent","nativeSrc":"6567:8:87","nodeType":"YulIdentifier","src":"6567:8:87"},{"kind":"number","nativeSrc":"6577:1:87","nodeType":"YulLiteral","src":"6577:1:87","type":"","value":"1"}],"functionName":{"name":"and","nativeSrc":"6563:3:87","nodeType":"YulIdentifier","src":"6563:3:87"},"nativeSrc":"6563:16:87","nodeType":"YulFunctionCall","src":"6563:16:87"},"nativeSrc":"6560:49:87","nodeType":"YulIf","src":"6560:49:87"},{"nativeSrc":"6622:23:87","nodeType":"YulAssignment","src":"6622:23:87","value":{"arguments":[{"name":"base","nativeSrc":"6634:4:87","nodeType":"YulIdentifier","src":"6634:4:87"},{"name":"base","nativeSrc":"6640:4:87","nodeType":"YulIdentifier","src":"6640:4:87"}],"functionName":{"name":"mul","nativeSrc":"6630:3:87","nodeType":"YulIdentifier","src":"6630:3:87"},"nativeSrc":"6630:15:87","nodeType":"YulFunctionCall","src":"6630:15:87"},"variableNames":[{"name":"base","nativeSrc":"6622:4:87","nodeType":"YulIdentifier","src":"6622:4:87"}]},{"nativeSrc":"6658:28:87","nodeType":"YulAssignment","src":"6658:28:87","value":{"arguments":[{"kind":"number","nativeSrc":"6674:1:87","nodeType":"YulLiteral","src":"6674:1:87","type":"","value":"1"},{"name":"exponent","nativeSrc":"6677:8:87","nodeType":"YulIdentifier","src":"6677:8:87"}],"functionName":{"name":"shr","nativeSrc":"6670:3:87","nodeType":"YulIdentifier","src":"6670:3:87"},"nativeSrc":"6670:16:87","nodeType":"YulFunctionCall","src":"6670:16:87"},"variableNames":[{"name":"exponent","nativeSrc":"6658:8:87","nodeType":"YulIdentifier","src":"6658:8:87"}]}]},"condition":{"arguments":[{"name":"exponent","nativeSrc":"6458:8:87","nodeType":"YulIdentifier","src":"6458:8:87"},{"kind":"number","nativeSrc":"6468:1:87","nodeType":"YulLiteral","src":"6468:1:87","type":"","value":"1"}],"functionName":{"name":"gt","nativeSrc":"6455:2:87","nodeType":"YulIdentifier","src":"6455:2:87"},"nativeSrc":"6455:15:87","nodeType":"YulFunctionCall","src":"6455:15:87"},"nativeSrc":"6447:249:87","nodeType":"YulForLoop","post":{"nativeSrc":"6471:3:87","nodeType":"YulBlock","src":"6471:3:87","statements":[]},"pre":{"nativeSrc":"6451:3:87","nodeType":"YulBlock","src":"6451:3:87","statements":[]},"src":"6447:249:87"}]},"name":"checked_exp_helper","nativeSrc":"6327:375:87","nodeType":"YulFunctionDefinition","parameters":[{"name":"_base","nativeSrc":"6355:5:87","nodeType":"YulTypedName","src":"6355:5:87","type":""},{"name":"exponent","nativeSrc":"6362:8:87","nodeType":"YulTypedName","src":"6362:8:87","type":""},{"name":"max","nativeSrc":"6372:3:87","nodeType":"YulTypedName","src":"6372:3:87","type":""}],"returnVariables":[{"name":"power","nativeSrc":"6380:5:87","nodeType":"YulTypedName","src":"6380:5:87","type":""},{"name":"base","nativeSrc":"6387:4:87","nodeType":"YulTypedName","src":"6387:4:87","type":""}],"src":"6327:375:87"},{"body":{"nativeSrc":"6766:843:87","nodeType":"YulBlock","src":"6766:843:87","statements":[{"body":{"nativeSrc":"6804:52:87","nodeType":"YulBlock","src":"6804:52:87","statements":[{"nativeSrc":"6818:10:87","nodeType":"YulAssignment","src":"6818:10:87","value":{"kind":"number","nativeSrc":"6827:1:87","nodeType":"YulLiteral","src":"6827:1:87","type":"","value":"1"},"variableNames":[{"name":"power","nativeSrc":"6818:5:87","nodeType":"YulIdentifier","src":"6818:5:87"}]},{"nativeSrc":"6841:5:87","nodeType":"YulLeave","src":"6841:5:87"}]},"condition":{"arguments":[{"name":"exponent","nativeSrc":"6786:8:87","nodeType":"YulIdentifier","src":"6786:8:87"}],"functionName":{"name":"iszero","nativeSrc":"6779:6:87","nodeType":"YulIdentifier","src":"6779:6:87"},"nativeSrc":"6779:16:87","nodeType":"YulFunctionCall","src":"6779:16:87"},"nativeSrc":"6776:80:87","nodeType":"YulIf","src":"6776:80:87"},{"body":{"nativeSrc":"6889:52:87","nodeType":"YulBlock","src":"6889:52:87","statements":[{"nativeSrc":"6903:10:87","nodeType":"YulAssignment","src":"6903:10:87","value":{"kind":"number","nativeSrc":"6912:1:87","nodeType":"YulLiteral","src":"6912:1:87","type":"","value":"0"},"variableNames":[{"name":"power","nativeSrc":"6903:5:87","nodeType":"YulIdentifier","src":"6903:5:87"}]},{"nativeSrc":"6926:5:87","nodeType":"YulLeave","src":"6926:5:87"}]},"condition":{"arguments":[{"name":"base","nativeSrc":"6875:4:87","nodeType":"YulIdentifier","src":"6875:4:87"}],"functionName":{"name":"iszero","nativeSrc":"6868:6:87","nodeType":"YulIdentifier","src":"6868:6:87"},"nativeSrc":"6868:12:87","nodeType":"YulFunctionCall","src":"6868:12:87"},"nativeSrc":"6865:76:87","nodeType":"YulIf","src":"6865:76:87"},{"cases":[{"body":{"nativeSrc":"6977:52:87","nodeType":"YulBlock","src":"6977:52:87","statements":[{"nativeSrc":"6991:10:87","nodeType":"YulAssignment","src":"6991:10:87","value":{"kind":"number","nativeSrc":"7000:1:87","nodeType":"YulLiteral","src":"7000:1:87","type":"","value":"1"},"variableNames":[{"name":"power","nativeSrc":"6991:5:87","nodeType":"YulIdentifier","src":"6991:5:87"}]},{"nativeSrc":"7014:5:87","nodeType":"YulLeave","src":"7014:5:87"}]},"nativeSrc":"6970:59:87","nodeType":"YulCase","src":"6970:59:87","value":{"kind":"number","nativeSrc":"6975:1:87","nodeType":"YulLiteral","src":"6975:1:87","type":"","value":"1"}},{"body":{"nativeSrc":"7045:167:87","nodeType":"YulBlock","src":"7045:167:87","statements":[{"body":{"nativeSrc":"7080:22:87","nodeType":"YulBlock","src":"7080:22:87","statements":[{"expression":{"arguments":[],"functionName":{"name":"panic_error_0x11","nativeSrc":"7082:16:87","nodeType":"YulIdentifier","src":"7082:16:87"},"nativeSrc":"7082:18:87","nodeType":"YulFunctionCall","src":"7082:18:87"},"nativeSrc":"7082:18:87","nodeType":"YulExpressionStatement","src":"7082:18:87"}]},"condition":{"arguments":[{"name":"exponent","nativeSrc":"7065:8:87","nodeType":"YulIdentifier","src":"7065:8:87"},{"kind":"number","nativeSrc":"7075:3:87","nodeType":"YulLiteral","src":"7075:3:87","type":"","value":"255"}],"functionName":{"name":"gt","nativeSrc":"7062:2:87","nodeType":"YulIdentifier","src":"7062:2:87"},"nativeSrc":"7062:17:87","nodeType":"YulFunctionCall","src":"7062:17:87"},"nativeSrc":"7059:43:87","nodeType":"YulIf","src":"7059:43:87"},{"nativeSrc":"7115:25:87","nodeType":"YulAssignment","src":"7115:25:87","value":{"arguments":[{"name":"exponent","nativeSrc":"7128:8:87","nodeType":"YulIdentifier","src":"7128:8:87"},{"kind":"number","nativeSrc":"7138:1:87","nodeType":"YulLiteral","src":"7138:1:87","type":"","value":"1"}],"functionName":{"name":"shl","nativeSrc":"7124:3:87","nodeType":"YulIdentifier","src":"7124:3:87"},"nativeSrc":"7124:16:87","nodeType":"YulFunctionCall","src":"7124:16:87"},"variableNames":[{"name":"power","nativeSrc":"7115:5:87","nodeType":"YulIdentifier","src":"7115:5:87"}]},{"nativeSrc":"7153:11:87","nodeType":"YulVariableDeclaration","src":"7153:11:87","value":{"kind":"number","nativeSrc":"7163:1:87","nodeType":"YulLiteral","src":"7163:1:87","type":"","value":"0"},"variables":[{"name":"_1","nativeSrc":"7157:2:87","nodeType":"YulTypedName","src":"7157:2:87","type":""}]},{"nativeSrc":"7177:7:87","nodeType":"YulAssignment","src":"7177:7:87","value":{"kind":"number","nativeSrc":"7183:1:87","nodeType":"YulLiteral","src":"7183:1:87","type":"","value":"0"},"variableNames":[{"name":"_1","nativeSrc":"7177:2:87","nodeType":"YulIdentifier","src":"7177:2:87"}]},{"nativeSrc":"7197:5:87","nodeType":"YulLeave","src":"7197:5:87"}]},"nativeSrc":"7038:174:87","nodeType":"YulCase","src":"7038:174:87","value":{"kind":"number","nativeSrc":"7043:1:87","nodeType":"YulLiteral","src":"7043:1:87","type":"","value":"2"}}],"expression":{"name":"base","nativeSrc":"6957:4:87","nodeType":"YulIdentifier","src":"6957:4:87"},"nativeSrc":"6950:262:87","nodeType":"YulSwitch","src":"6950:262:87"},{"body":{"nativeSrc":"7310:114:87","nodeType":"YulBlock","src":"7310:114:87","statements":[{"nativeSrc":"7324:28:87","nodeType":"YulAssignment","src":"7324:28:87","value":{"arguments":[{"name":"base","nativeSrc":"7337:4:87","nodeType":"YulIdentifier","src":"7337:4:87"},{"name":"exponent","nativeSrc":"7343:8:87","nodeType":"YulIdentifier","src":"7343:8:87"}],"functionName":{"name":"exp","nativeSrc":"7333:3:87","nodeType":"YulIdentifier","src":"7333:3:87"},"nativeSrc":"7333:19:87","nodeType":"YulFunctionCall","src":"7333:19:87"},"variableNames":[{"name":"power","nativeSrc":"7324:5:87","nodeType":"YulIdentifier","src":"7324:5:87"}]},{"nativeSrc":"7365:11:87","nodeType":"YulVariableDeclaration","src":"7365:11:87","value":{"kind":"number","nativeSrc":"7375:1:87","nodeType":"YulLiteral","src":"7375:1:87","type":"","value":"0"},"variables":[{"name":"_2","nativeSrc":"7369:2:87","nodeType":"YulTypedName","src":"7369:2:87","type":""}]},{"nativeSrc":"7389:7:87","nodeType":"YulAssignment","src":"7389:7:87","value":{"kind":"number","nativeSrc":"7395:1:87","nodeType":"YulLiteral","src":"7395:1:87","type":"","value":"0"},"variableNames":[{"name":"_2","nativeSrc":"7389:2:87","nodeType":"YulIdentifier","src":"7389:2:87"}]},{"nativeSrc":"7409:5:87","nodeType":"YulLeave","src":"7409:5:87"}]},"condition":{"arguments":[{"arguments":[{"arguments":[{"name":"base","nativeSrc":"7234:4:87","nodeType":"YulIdentifier","src":"7234:4:87"},{"kind":"number","nativeSrc":"7240:2:87","nodeType":"YulLiteral","src":"7240:2:87","type":"","value":"11"}],"functionName":{"name":"lt","nativeSrc":"7231:2:87","nodeType":"YulIdentifier","src":"7231:2:87"},"nativeSrc":"7231:12:87","nodeType":"YulFunctionCall","src":"7231:12:87"},{"arguments":[{"name":"exponent","nativeSrc":"7248:8:87","nodeType":"YulIdentifier","src":"7248:8:87"},{"kind":"number","nativeSrc":"7258:2:87","nodeType":"YulLiteral","src":"7258:2:87","type":"","value":"78"}],"functionName":{"name":"lt","nativeSrc":"7245:2:87","nodeType":"YulIdentifier","src":"7245:2:87"},"nativeSrc":"7245:16:87","nodeType":"YulFunctionCall","src":"7245:16:87"}],"functionName":{"name":"and","nativeSrc":"7227:3:87","nodeType":"YulIdentifier","src":"7227:3:87"},"nativeSrc":"7227:35:87","nodeType":"YulFunctionCall","src":"7227:35:87"},{"arguments":[{"arguments":[{"name":"base","nativeSrc":"7271:4:87","nodeType":"YulIdentifier","src":"7271:4:87"},{"kind":"number","nativeSrc":"7277:3:87","nodeType":"YulLiteral","src":"7277:3:87","type":"","value":"307"}],"functionName":{"name":"lt","nativeSrc":"7268:2:87","nodeType":"YulIdentifier","src":"7268:2:87"},"nativeSrc":"7268:13:87","nodeType":"YulFunctionCall","src":"7268:13:87"},{"arguments":[{"name":"exponent","nativeSrc":"7286:8:87","nodeType":"YulIdentifier","src":"7286:8:87"},{"kind":"number","nativeSrc":"7296:2:87","nodeType":"YulLiteral","src":"7296:2:87","type":"","value":"32"}],"functionName":{"name":"lt","nativeSrc":"7283:2:87","nodeType":"YulIdentifier","src":"7283:2:87"},"nativeSrc":"7283:16:87","nodeType":"YulFunctionCall","src":"7283:16:87"}],"functionName":{"name":"and","nativeSrc":"7264:3:87","nodeType":"YulIdentifier","src":"7264:3:87"},"nativeSrc":"7264:36:87","nodeType":"YulFunctionCall","src":"7264:36:87"}],"functionName":{"name":"or","nativeSrc":"7224:2:87","nodeType":"YulIdentifier","src":"7224:2:87"},"nativeSrc":"7224:77:87","nodeType":"YulFunctionCall","src":"7224:77:87"},"nativeSrc":"7221:203:87","nodeType":"YulIf","src":"7221:203:87"},{"nativeSrc":"7433:65:87","nodeType":"YulVariableDeclaration","src":"7433:65:87","value":{"arguments":[{"name":"base","nativeSrc":"7475:4:87","nodeType":"YulIdentifier","src":"7475:4:87"},{"name":"exponent","nativeSrc":"7481:8:87","nodeType":"YulIdentifier","src":"7481:8:87"},{"arguments":[{"kind":"number","nativeSrc":"7495:1:87","nodeType":"YulLiteral","src":"7495:1:87","type":"","value":"0"}],"functionName":{"name":"not","nativeSrc":"7491:3:87","nodeType":"YulIdentifier","src":"7491:3:87"},"nativeSrc":"7491:6:87","nodeType":"YulFunctionCall","src":"7491:6:87"}],"functionName":{"name":"checked_exp_helper","nativeSrc":"7456:18:87","nodeType":"YulIdentifier","src":"7456:18:87"},"nativeSrc":"7456:42:87","nodeType":"YulFunctionCall","src":"7456:42:87"},"variables":[{"name":"power_1","nativeSrc":"7437:7:87","nodeType":"YulTypedName","src":"7437:7:87","type":""},{"name":"base_1","nativeSrc":"7446:6:87","nodeType":"YulTypedName","src":"7446:6:87","type":""}]},{"body":{"nativeSrc":"7543:22:87","nodeType":"YulBlock","src":"7543:22:87","statements":[{"expression":{"arguments":[],"functionName":{"name":"panic_error_0x11","nativeSrc":"7545:16:87","nodeType":"YulIdentifier","src":"7545:16:87"},"nativeSrc":"7545:18:87","nodeType":"YulFunctionCall","src":"7545:18:87"},"nativeSrc":"7545:18:87","nodeType":"YulExpressionStatement","src":"7545:18:87"}]},"condition":{"arguments":[{"name":"power_1","nativeSrc":"7513:7:87","nodeType":"YulIdentifier","src":"7513:7:87"},{"arguments":[{"arguments":[{"kind":"number","nativeSrc":"7530:1:87","nodeType":"YulLiteral","src":"7530:1:87","type":"","value":"0"}],"functionName":{"name":"not","nativeSrc":"7526:3:87","nodeType":"YulIdentifier","src":"7526:3:87"},"nativeSrc":"7526:6:87","nodeType":"YulFunctionCall","src":"7526:6:87"},{"name":"base_1","nativeSrc":"7534:6:87","nodeType":"YulIdentifier","src":"7534:6:87"}],"functionName":{"name":"div","nativeSrc":"7522:3:87","nodeType":"YulIdentifier","src":"7522:3:87"},"nativeSrc":"7522:19:87","nodeType":"YulFunctionCall","src":"7522:19:87"}],"functionName":{"name":"gt","nativeSrc":"7510:2:87","nodeType":"YulIdentifier","src":"7510:2:87"},"nativeSrc":"7510:32:87","nodeType":"YulFunctionCall","src":"7510:32:87"},"nativeSrc":"7507:58:87","nodeType":"YulIf","src":"7507:58:87"},{"nativeSrc":"7574:29:87","nodeType":"YulAssignment","src":"7574:29:87","value":{"arguments":[{"name":"power_1","nativeSrc":"7587:7:87","nodeType":"YulIdentifier","src":"7587:7:87"},{"name":"base_1","nativeSrc":"7596:6:87","nodeType":"YulIdentifier","src":"7596:6:87"}],"functionName":{"name":"mul","nativeSrc":"7583:3:87","nodeType":"YulIdentifier","src":"7583:3:87"},"nativeSrc":"7583:20:87","nodeType":"YulFunctionCall","src":"7583:20:87"},"variableNames":[{"name":"power","nativeSrc":"7574:5:87","nodeType":"YulIdentifier","src":"7574:5:87"}]}]},"name":"checked_exp_unsigned","nativeSrc":"6707:902:87","nodeType":"YulFunctionDefinition","parameters":[{"name":"base","nativeSrc":"6737:4:87","nodeType":"YulTypedName","src":"6737:4:87","type":""},{"name":"exponent","nativeSrc":"6743:8:87","nodeType":"YulTypedName","src":"6743:8:87","type":""}],"returnVariables":[{"name":"power","nativeSrc":"6756:5:87","nodeType":"YulTypedName","src":"6756:5:87","type":""}],"src":"6707:902:87"},{"body":{"nativeSrc":"7682:72:87","nodeType":"YulBlock","src":"7682:72:87","statements":[{"nativeSrc":"7692:56:87","nodeType":"YulAssignment","src":"7692:56:87","value":{"arguments":[{"name":"base","nativeSrc":"7722:4:87","nodeType":"YulIdentifier","src":"7722:4:87"},{"arguments":[{"name":"exponent","nativeSrc":"7732:8:87","nodeType":"YulIdentifier","src":"7732:8:87"},{"kind":"number","nativeSrc":"7742:4:87","nodeType":"YulLiteral","src":"7742:4:87","type":"","value":"0xff"}],"functionName":{"name":"and","nativeSrc":"7728:3:87","nodeType":"YulIdentifier","src":"7728:3:87"},"nativeSrc":"7728:19:87","nodeType":"YulFunctionCall","src":"7728:19:87"}],"functionName":{"name":"checked_exp_unsigned","nativeSrc":"7701:20:87","nodeType":"YulIdentifier","src":"7701:20:87"},"nativeSrc":"7701:47:87","nodeType":"YulFunctionCall","src":"7701:47:87"},"variableNames":[{"name":"power","nativeSrc":"7692:5:87","nodeType":"YulIdentifier","src":"7692:5:87"}]}]},"name":"checked_exp_t_uint256_t_uint8","nativeSrc":"7614:140:87","nodeType":"YulFunctionDefinition","parameters":[{"name":"base","nativeSrc":"7653:4:87","nodeType":"YulTypedName","src":"7653:4:87","type":""},{"name":"exponent","nativeSrc":"7659:8:87","nodeType":"YulTypedName","src":"7659:8:87","type":""}],"returnVariables":[{"name":"power","nativeSrc":"7672:5:87","nodeType":"YulTypedName","src":"7672:5:87","type":""}],"src":"7614:140:87"},{"body":{"nativeSrc":"7889:201:87","nodeType":"YulBlock","src":"7889:201:87","statements":[{"body":{"nativeSrc":"7927:16:87","nodeType":"YulBlock","src":"7927:16:87","statements":[{"expression":{"arguments":[{"kind":"number","nativeSrc":"7936:1:87","nodeType":"YulLiteral","src":"7936:1:87","type":"","value":"0"},{"kind":"number","nativeSrc":"7939:1:87","nodeType":"YulLiteral","src":"7939:1:87","type":"","value":"0"}],"functionName":{"name":"revert","nativeSrc":"7929:6:87","nodeType":"YulIdentifier","src":"7929:6:87"},"nativeSrc":"7929:12:87","nodeType":"YulFunctionCall","src":"7929:12:87"},"nativeSrc":"7929:12:87","nodeType":"YulExpressionStatement","src":"7929:12:87"}]},"condition":{"arguments":[{"name":"startIndex","nativeSrc":"7905:10:87","nodeType":"YulIdentifier","src":"7905:10:87"},{"name":"endIndex","nativeSrc":"7917:8:87","nodeType":"YulIdentifier","src":"7917:8:87"}],"functionName":{"name":"gt","nativeSrc":"7902:2:87","nodeType":"YulIdentifier","src":"7902:2:87"},"nativeSrc":"7902:24:87","nodeType":"YulFunctionCall","src":"7902:24:87"},"nativeSrc":"7899:44:87","nodeType":"YulIf","src":"7899:44:87"},{"body":{"nativeSrc":"7976:16:87","nodeType":"YulBlock","src":"7976:16:87","statements":[{"expression":{"arguments":[{"kind":"number","nativeSrc":"7985:1:87","nodeType":"YulLiteral","src":"7985:1:87","type":"","value":"0"},{"kind":"number","nativeSrc":"7988:1:87","nodeType":"YulLiteral","src":"7988:1:87","type":"","value":"0"}],"functionName":{"name":"revert","nativeSrc":"7978:6:87","nodeType":"YulIdentifier","src":"7978:6:87"},"nativeSrc":"7978:12:87","nodeType":"YulFunctionCall","src":"7978:12:87"},"nativeSrc":"7978:12:87","nodeType":"YulExpressionStatement","src":"7978:12:87"}]},"condition":{"arguments":[{"name":"endIndex","nativeSrc":"7958:8:87","nodeType":"YulIdentifier","src":"7958:8:87"},{"name":"length","nativeSrc":"7968:6:87","nodeType":"YulIdentifier","src":"7968:6:87"}],"functionName":{"name":"gt","nativeSrc":"7955:2:87","nodeType":"YulIdentifier","src":"7955:2:87"},"nativeSrc":"7955:20:87","nodeType":"YulFunctionCall","src":"7955:20:87"},"nativeSrc":"7952:40:87","nodeType":"YulIf","src":"7952:40:87"},{"nativeSrc":"8001:36:87","nodeType":"YulAssignment","src":"8001:36:87","value":{"arguments":[{"name":"offset","nativeSrc":"8018:6:87","nodeType":"YulIdentifier","src":"8018:6:87"},{"name":"startIndex","nativeSrc":"8026:10:87","nodeType":"YulIdentifier","src":"8026:10:87"}],"functionName":{"name":"add","nativeSrc":"8014:3:87","nodeType":"YulIdentifier","src":"8014:3:87"},"nativeSrc":"8014:23:87","nodeType":"YulFunctionCall","src":"8014:23:87"},"variableNames":[{"name":"offsetOut","nativeSrc":"8001:9:87","nodeType":"YulIdentifier","src":"8001:9:87"}]},{"nativeSrc":"8046:38:87","nodeType":"YulAssignment","src":"8046:38:87","value":{"arguments":[{"name":"endIndex","nativeSrc":"8063:8:87","nodeType":"YulIdentifier","src":"8063:8:87"},{"name":"startIndex","nativeSrc":"8073:10:87","nodeType":"YulIdentifier","src":"8073:10:87"}],"functionName":{"name":"sub","nativeSrc":"8059:3:87","nodeType":"YulIdentifier","src":"8059:3:87"},"nativeSrc":"8059:25:87","nodeType":"YulFunctionCall","src":"8059:25:87"},"variableNames":[{"name":"lengthOut","nativeSrc":"8046:9:87","nodeType":"YulIdentifier","src":"8046:9:87"}]}]},"name":"calldata_array_index_range_access_t_bytes_calldata_ptr","nativeSrc":"7759:331:87","nodeType":"YulFunctionDefinition","parameters":[{"name":"offset","nativeSrc":"7823:6:87","nodeType":"YulTypedName","src":"7823:6:87","type":""},{"name":"length","nativeSrc":"7831:6:87","nodeType":"YulTypedName","src":"7831:6:87","type":""},{"name":"startIndex","nativeSrc":"7839:10:87","nodeType":"YulTypedName","src":"7839:10:87","type":""},{"name":"endIndex","nativeSrc":"7851:8:87","nodeType":"YulTypedName","src":"7851:8:87","type":""}],"returnVariables":[{"name":"offsetOut","nativeSrc":"7864:9:87","nodeType":"YulTypedName","src":"7864:9:87","type":""},{"name":"lengthOut","nativeSrc":"7875:9:87","nodeType":"YulTypedName","src":"7875:9:87","type":""}],"src":"7759:331:87"},{"body":{"nativeSrc":"8195:238:87","nodeType":"YulBlock","src":"8195:238:87","statements":[{"nativeSrc":"8205:29:87","nodeType":"YulVariableDeclaration","src":"8205:29:87","value":{"arguments":[{"name":"array","nativeSrc":"8228:5:87","nodeType":"YulIdentifier","src":"8228:5:87"}],"functionName":{"name":"calldataload","nativeSrc":"8215:12:87","nodeType":"YulIdentifier","src":"8215:12:87"},"nativeSrc":"8215:19:87","nodeType":"YulFunctionCall","src":"8215:19:87"},"variables":[{"name":"_1","nativeSrc":"8209:2:87","nodeType":"YulTypedName","src":"8209:2:87","type":""}]},{"nativeSrc":"8243:38:87","nodeType":"YulAssignment","src":"8243:38:87","value":{"arguments":[{"name":"_1","nativeSrc":"8256:2:87","nodeType":"YulIdentifier","src":"8256:2:87"},{"arguments":[{"kind":"number","nativeSrc":"8264:3:87","nodeType":"YulLiteral","src":"8264:3:87","type":"","value":"224"},{"kind":"number","nativeSrc":"8269:10:87","nodeType":"YulLiteral","src":"8269:10:87","type":"","value":"0xffffffff"}],"functionName":{"name":"shl","nativeSrc":"8260:3:87","nodeType":"YulIdentifier","src":"8260:3:87"},"nativeSrc":"8260:20:87","nodeType":"YulFunctionCall","src":"8260:20:87"}],"functionName":{"name":"and","nativeSrc":"8252:3:87","nodeType":"YulIdentifier","src":"8252:3:87"},"nativeSrc":"8252:29:87","nodeType":"YulFunctionCall","src":"8252:29:87"},"variableNames":[{"name":"value","nativeSrc":"8243:5:87","nodeType":"YulIdentifier","src":"8243:5:87"}]},{"body":{"nativeSrc":"8312:115:87","nodeType":"YulBlock","src":"8312:115:87","statements":[{"nativeSrc":"8326:91:87","nodeType":"YulAssignment","src":"8326:91:87","value":{"arguments":[{"arguments":[{"name":"_1","nativeSrc":"8343:2:87","nodeType":"YulIdentifier","src":"8343:2:87"},{"arguments":[{"arguments":[{"kind":"number","nativeSrc":"8355:1:87","nodeType":"YulLiteral","src":"8355:1:87","type":"","value":"3"},{"arguments":[{"kind":"number","nativeSrc":"8362:1:87","nodeType":"YulLiteral","src":"8362:1:87","type":"","value":"4"},{"name":"len","nativeSrc":"8365:3:87","nodeType":"YulIdentifier","src":"8365:3:87"}],"functionName":{"name":"sub","nativeSrc":"8358:3:87","nodeType":"YulIdentifier","src":"8358:3:87"},"nativeSrc":"8358:11:87","nodeType":"YulFunctionCall","src":"8358:11:87"}],"functionName":{"name":"shl","nativeSrc":"8351:3:87","nodeType":"YulIdentifier","src":"8351:3:87"},"nativeSrc":"8351:19:87","nodeType":"YulFunctionCall","src":"8351:19:87"},{"arguments":[{"kind":"number","nativeSrc":"8376:3:87","nodeType":"YulLiteral","src":"8376:3:87","type":"","value":"224"},{"kind":"number","nativeSrc":"8381:10:87","nodeType":"YulLiteral","src":"8381:10:87","type":"","value":"0xffffffff"}],"functionName":{"name":"shl","nativeSrc":"8372:3:87","nodeType":"YulIdentifier","src":"8372:3:87"},"nativeSrc":"8372:20:87","nodeType":"YulFunctionCall","src":"8372:20:87"}],"functionName":{"name":"shl","nativeSrc":"8347:3:87","nodeType":"YulIdentifier","src":"8347:3:87"},"nativeSrc":"8347:46:87","nodeType":"YulFunctionCall","src":"8347:46:87"}],"functionName":{"name":"and","nativeSrc":"8339:3:87","nodeType":"YulIdentifier","src":"8339:3:87"},"nativeSrc":"8339:55:87","nodeType":"YulFunctionCall","src":"8339:55:87"},{"arguments":[{"kind":"number","nativeSrc":"8400:3:87","nodeType":"YulLiteral","src":"8400:3:87","type":"","value":"224"},{"kind":"number","nativeSrc":"8405:10:87","nodeType":"YulLiteral","src":"8405:10:87","type":"","value":"0xffffffff"}],"functionName":{"name":"shl","nativeSrc":"8396:3:87","nodeType":"YulIdentifier","src":"8396:3:87"},"nativeSrc":"8396:20:87","nodeType":"YulFunctionCall","src":"8396:20:87"}],"functionName":{"name":"and","nativeSrc":"8335:3:87","nodeType":"YulIdentifier","src":"8335:3:87"},"nativeSrc":"8335:82:87","nodeType":"YulFunctionCall","src":"8335:82:87"},"variableNames":[{"name":"value","nativeSrc":"8326:5:87","nodeType":"YulIdentifier","src":"8326:5:87"}]}]},"condition":{"arguments":[{"name":"len","nativeSrc":"8296:3:87","nodeType":"YulIdentifier","src":"8296:3:87"},{"kind":"number","nativeSrc":"8301:1:87","nodeType":"YulLiteral","src":"8301:1:87","type":"","value":"4"}],"functionName":{"name":"lt","nativeSrc":"8293:2:87","nodeType":"YulIdentifier","src":"8293:2:87"},"nativeSrc":"8293:10:87","nodeType":"YulFunctionCall","src":"8293:10:87"},"nativeSrc":"8290:137:87","nodeType":"YulIf","src":"8290:137:87"}]},"name":"convert_bytes_to_fixedbytes_from_t_bytes_calldata_ptr_to_t_bytes4","nativeSrc":"8095:338:87","nodeType":"YulFunctionDefinition","parameters":[{"name":"array","nativeSrc":"8170:5:87","nodeType":"YulTypedName","src":"8170:5:87","type":""},{"name":"len","nativeSrc":"8177:3:87","nodeType":"YulTypedName","src":"8177:3:87","type":""}],"returnVariables":[{"name":"value","nativeSrc":"8185:5:87","nodeType":"YulTypedName","src":"8185:5:87","type":""}],"src":"8095:338:87"},{"body":{"nativeSrc":"8537:103:87","nodeType":"YulBlock","src":"8537:103:87","statements":[{"nativeSrc":"8547:26:87","nodeType":"YulAssignment","src":"8547:26:87","value":{"arguments":[{"name":"headStart","nativeSrc":"8559:9:87","nodeType":"YulIdentifier","src":"8559:9:87"},{"kind":"number","nativeSrc":"8570:2:87","nodeType":"YulLiteral","src":"8570:2:87","type":"","value":"32"}],"functionName":{"name":"add","nativeSrc":"8555:3:87","nodeType":"YulIdentifier","src":"8555:3:87"},"nativeSrc":"8555:18:87","nodeType":"YulFunctionCall","src":"8555:18:87"},"variableNames":[{"name":"tail","nativeSrc":"8547:4:87","nodeType":"YulIdentifier","src":"8547:4:87"}]},{"expression":{"arguments":[{"name":"headStart","nativeSrc":"8589:9:87","nodeType":"YulIdentifier","src":"8589:9:87"},{"arguments":[{"name":"value0","nativeSrc":"8604:6:87","nodeType":"YulIdentifier","src":"8604:6:87"},{"arguments":[{"kind":"number","nativeSrc":"8616:3:87","nodeType":"YulLiteral","src":"8616:3:87","type":"","value":"224"},{"kind":"number","nativeSrc":"8621:10:87","nodeType":"YulLiteral","src":"8621:10:87","type":"","value":"0xffffffff"}],"functionName":{"name":"shl","nativeSrc":"8612:3:87","nodeType":"YulIdentifier","src":"8612:3:87"},"nativeSrc":"8612:20:87","nodeType":"YulFunctionCall","src":"8612:20:87"}],"functionName":{"name":"and","nativeSrc":"8600:3:87","nodeType":"YulIdentifier","src":"8600:3:87"},"nativeSrc":"8600:33:87","nodeType":"YulFunctionCall","src":"8600:33:87"}],"functionName":{"name":"mstore","nativeSrc":"8582:6:87","nodeType":"YulIdentifier","src":"8582:6:87"},"nativeSrc":"8582:52:87","nodeType":"YulFunctionCall","src":"8582:52:87"},"nativeSrc":"8582:52:87","nodeType":"YulExpressionStatement","src":"8582:52:87"}]},"name":"abi_encode_tuple_t_bytes4__to_t_bytes4__fromStack_reversed","nativeSrc":"8438:202:87","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nativeSrc":"8506:9:87","nodeType":"YulTypedName","src":"8506:9:87","type":""},{"name":"value0","nativeSrc":"8517:6:87","nodeType":"YulTypedName","src":"8517:6:87","type":""}],"returnVariables":[{"name":"tail","nativeSrc":"8528:4:87","nodeType":"YulTypedName","src":"8528:4:87","type":""}],"src":"8438:202:87"},{"body":{"nativeSrc":"8677:95:87","nodeType":"YulBlock","src":"8677:95:87","statements":[{"expression":{"arguments":[{"kind":"number","nativeSrc":"8694:1:87","nodeType":"YulLiteral","src":"8694:1:87","type":"","value":"0"},{"arguments":[{"kind":"number","nativeSrc":"8701:3:87","nodeType":"YulLiteral","src":"8701:3:87","type":"","value":"224"},{"kind":"number","nativeSrc":"8706:10:87","nodeType":"YulLiteral","src":"8706:10:87","type":"","value":"0x4e487b71"}],"functionName":{"name":"shl","nativeSrc":"8697:3:87","nodeType":"YulIdentifier","src":"8697:3:87"},"nativeSrc":"8697:20:87","nodeType":"YulFunctionCall","src":"8697:20:87"}],"functionName":{"name":"mstore","nativeSrc":"8687:6:87","nodeType":"YulIdentifier","src":"8687:6:87"},"nativeSrc":"8687:31:87","nodeType":"YulFunctionCall","src":"8687:31:87"},"nativeSrc":"8687:31:87","nodeType":"YulExpressionStatement","src":"8687:31:87"},{"expression":{"arguments":[{"kind":"number","nativeSrc":"8734:1:87","nodeType":"YulLiteral","src":"8734:1:87","type":"","value":"4"},{"kind":"number","nativeSrc":"8737:4:87","nodeType":"YulLiteral","src":"8737:4:87","type":"","value":"0x12"}],"functionName":{"name":"mstore","nativeSrc":"8727:6:87","nodeType":"YulIdentifier","src":"8727:6:87"},"nativeSrc":"8727:15:87","nodeType":"YulFunctionCall","src":"8727:15:87"},"nativeSrc":"8727:15:87","nodeType":"YulExpressionStatement","src":"8727:15:87"},{"expression":{"arguments":[{"kind":"number","nativeSrc":"8758:1:87","nodeType":"YulLiteral","src":"8758:1:87","type":"","value":"0"},{"kind":"number","nativeSrc":"8761:4:87","nodeType":"YulLiteral","src":"8761:4:87","type":"","value":"0x24"}],"functionName":{"name":"revert","nativeSrc":"8751:6:87","nodeType":"YulIdentifier","src":"8751:6:87"},"nativeSrc":"8751:15:87","nodeType":"YulFunctionCall","src":"8751:15:87"},"nativeSrc":"8751:15:87","nodeType":"YulExpressionStatement","src":"8751:15:87"}]},"name":"panic_error_0x12","nativeSrc":"8645:127:87","nodeType":"YulFunctionDefinition","src":"8645:127:87"},{"body":{"nativeSrc":"8906:119:87","nodeType":"YulBlock","src":"8906:119:87","statements":[{"nativeSrc":"8916:26:87","nodeType":"YulAssignment","src":"8916:26:87","value":{"arguments":[{"name":"headStart","nativeSrc":"8928:9:87","nodeType":"YulIdentifier","src":"8928:9:87"},{"kind":"number","nativeSrc":"8939:2:87","nodeType":"YulLiteral","src":"8939:2:87","type":"","value":"64"}],"functionName":{"name":"add","nativeSrc":"8924:3:87","nodeType":"YulIdentifier","src":"8924:3:87"},"nativeSrc":"8924:18:87","nodeType":"YulFunctionCall","src":"8924:18:87"},"variableNames":[{"name":"tail","nativeSrc":"8916:4:87","nodeType":"YulIdentifier","src":"8916:4:87"}]},{"expression":{"arguments":[{"name":"headStart","nativeSrc":"8958:9:87","nodeType":"YulIdentifier","src":"8958:9:87"},{"name":"value0","nativeSrc":"8969:6:87","nodeType":"YulIdentifier","src":"8969:6:87"}],"functionName":{"name":"mstore","nativeSrc":"8951:6:87","nodeType":"YulIdentifier","src":"8951:6:87"},"nativeSrc":"8951:25:87","nodeType":"YulFunctionCall","src":"8951:25:87"},"nativeSrc":"8951:25:87","nodeType":"YulExpressionStatement","src":"8951:25:87"},{"expression":{"arguments":[{"arguments":[{"name":"headStart","nativeSrc":"8996:9:87","nodeType":"YulIdentifier","src":"8996:9:87"},{"kind":"number","nativeSrc":"9007:2:87","nodeType":"YulLiteral","src":"9007:2:87","type":"","value":"32"}],"functionName":{"name":"add","nativeSrc":"8992:3:87","nodeType":"YulIdentifier","src":"8992:3:87"},"nativeSrc":"8992:18:87","nodeType":"YulFunctionCall","src":"8992:18:87"},{"name":"value1","nativeSrc":"9012:6:87","nodeType":"YulIdentifier","src":"9012:6:87"}],"functionName":{"name":"mstore","nativeSrc":"8985:6:87","nodeType":"YulIdentifier","src":"8985:6:87"},"nativeSrc":"8985:34:87","nodeType":"YulFunctionCall","src":"8985:34:87"},"nativeSrc":"8985:34:87","nodeType":"YulExpressionStatement","src":"8985:34:87"}]},"name":"abi_encode_tuple_t_uint256_t_uint256__to_t_uint256_t_uint256__fromStack_reversed","nativeSrc":"8777:248:87","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nativeSrc":"8867:9:87","nodeType":"YulTypedName","src":"8867:9:87","type":""},{"name":"value1","nativeSrc":"8878:6:87","nodeType":"YulTypedName","src":"8878:6:87","type":""},{"name":"value0","nativeSrc":"8886:6:87","nodeType":"YulTypedName","src":"8886:6:87","type":""}],"returnVariables":[{"name":"tail","nativeSrc":"8897:4:87","nodeType":"YulTypedName","src":"8897:4:87","type":""}],"src":"8777:248:87"},{"body":{"nativeSrc":"9066:218:87","nodeType":"YulBlock","src":"9066:218:87","statements":[{"nativeSrc":"9076:23:87","nodeType":"YulVariableDeclaration","src":"9076:23:87","value":{"arguments":[{"name":"y","nativeSrc":"9091:1:87","nodeType":"YulIdentifier","src":"9091:1:87"},{"kind":"number","nativeSrc":"9094:4:87","nodeType":"YulLiteral","src":"9094:4:87","type":"","value":"0xff"}],"functionName":{"name":"and","nativeSrc":"9087:3:87","nodeType":"YulIdentifier","src":"9087:3:87"},"nativeSrc":"9087:12:87","nodeType":"YulFunctionCall","src":"9087:12:87"},"variables":[{"name":"y_1","nativeSrc":"9080:3:87","nodeType":"YulTypedName","src":"9080:3:87","type":""}]},{"body":{"nativeSrc":"9131:111:87","nodeType":"YulBlock","src":"9131:111:87","statements":[{"expression":{"arguments":[{"kind":"number","nativeSrc":"9152:1:87","nodeType":"YulLiteral","src":"9152:1:87","type":"","value":"0"},{"arguments":[{"kind":"number","nativeSrc":"9159:3:87","nodeType":"YulLiteral","src":"9159:3:87","type":"","value":"224"},{"kind":"number","nativeSrc":"9164:10:87","nodeType":"YulLiteral","src":"9164:10:87","type":"","value":"0x4e487b71"}],"functionName":{"name":"shl","nativeSrc":"9155:3:87","nodeType":"YulIdentifier","src":"9155:3:87"},"nativeSrc":"9155:20:87","nodeType":"YulFunctionCall","src":"9155:20:87"}],"functionName":{"name":"mstore","nativeSrc":"9145:6:87","nodeType":"YulIdentifier","src":"9145:6:87"},"nativeSrc":"9145:31:87","nodeType":"YulFunctionCall","src":"9145:31:87"},"nativeSrc":"9145:31:87","nodeType":"YulExpressionStatement","src":"9145:31:87"},{"expression":{"arguments":[{"kind":"number","nativeSrc":"9196:1:87","nodeType":"YulLiteral","src":"9196:1:87","type":"","value":"4"},{"kind":"number","nativeSrc":"9199:4:87","nodeType":"YulLiteral","src":"9199:4:87","type":"","value":"0x12"}],"functionName":{"name":"mstore","nativeSrc":"9189:6:87","nodeType":"YulIdentifier","src":"9189:6:87"},"nativeSrc":"9189:15:87","nodeType":"YulFunctionCall","src":"9189:15:87"},"nativeSrc":"9189:15:87","nodeType":"YulExpressionStatement","src":"9189:15:87"},{"expression":{"arguments":[{"kind":"number","nativeSrc":"9224:1:87","nodeType":"YulLiteral","src":"9224:1:87","type":"","value":"0"},{"kind":"number","nativeSrc":"9227:4:87","nodeType":"YulLiteral","src":"9227:4:87","type":"","value":"0x24"}],"functionName":{"name":"revert","nativeSrc":"9217:6:87","nodeType":"YulIdentifier","src":"9217:6:87"},"nativeSrc":"9217:15:87","nodeType":"YulFunctionCall","src":"9217:15:87"},"nativeSrc":"9217:15:87","nodeType":"YulExpressionStatement","src":"9217:15:87"}]},"condition":{"arguments":[{"name":"y_1","nativeSrc":"9118:3:87","nodeType":"YulIdentifier","src":"9118:3:87"}],"functionName":{"name":"iszero","nativeSrc":"9111:6:87","nodeType":"YulIdentifier","src":"9111:6:87"},"nativeSrc":"9111:11:87","nodeType":"YulFunctionCall","src":"9111:11:87"},"nativeSrc":"9108:134:87","nodeType":"YulIf","src":"9108:134:87"},{"nativeSrc":"9251:27:87","nodeType":"YulAssignment","src":"9251:27:87","value":{"arguments":[{"arguments":[{"name":"x","nativeSrc":"9264:1:87","nodeType":"YulIdentifier","src":"9264:1:87"},{"kind":"number","nativeSrc":"9267:4:87","nodeType":"YulLiteral","src":"9267:4:87","type":"","value":"0xff"}],"functionName":{"name":"and","nativeSrc":"9260:3:87","nodeType":"YulIdentifier","src":"9260:3:87"},"nativeSrc":"9260:12:87","nodeType":"YulFunctionCall","src":"9260:12:87"},{"name":"y_1","nativeSrc":"9274:3:87","nodeType":"YulIdentifier","src":"9274:3:87"}],"functionName":{"name":"mod","nativeSrc":"9256:3:87","nodeType":"YulIdentifier","src":"9256:3:87"},"nativeSrc":"9256:22:87","nodeType":"YulFunctionCall","src":"9256:22:87"},"variableNames":[{"name":"r","nativeSrc":"9251:1:87","nodeType":"YulIdentifier","src":"9251:1:87"}]}]},"name":"mod_t_uint8","nativeSrc":"9030:254:87","nodeType":"YulFunctionDefinition","parameters":[{"name":"x","nativeSrc":"9051:1:87","nodeType":"YulTypedName","src":"9051:1:87","type":""},{"name":"y","nativeSrc":"9054:1:87","nodeType":"YulTypedName","src":"9054:1:87","type":""}],"returnVariables":[{"name":"r","nativeSrc":"9060:1:87","nodeType":"YulTypedName","src":"9060:1:87","type":""}],"src":"9030:254:87"}]},"contents":"{\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_string_memory_ptr__to_t_string_memory_ptr__fromStack_reversed(headStart, value0) -> tail\n    {\n        mstore(headStart, 32)\n        let length := mload(value0)\n        mstore(add(headStart, 32), length)\n        mcopy(add(headStart, 64), add(value0, 32), length)\n        mstore(add(add(headStart, length), 64), 0)\n        tail := add(add(headStart, and(add(length, 31), not(31))), 64)\n    }\n    function abi_decode_tuple_t_uint256(headStart, dataEnd) -> value0\n    {\n        if slt(sub(dataEnd, headStart), 32) { revert(0, 0) }\n        let value := 0\n        value := calldataload(headStart)\n        value0 := value\n    }\n    function abi_decode_address(offset) -> value\n    {\n        value := calldataload(offset)\n        if iszero(eq(value, and(value, sub(shl(160, 1), 1)))) { revert(0, 0) }\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        let value := 0\n        value := calldataload(add(headStart, 32))\n        value1 := value\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_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        let value := 0\n        value := calldataload(add(headStart, 64))\n        value2 := value\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 abi_encode_tuple_t_address__to_t_address__fromStack_reversed(headStart, value0) -> tail\n    {\n        tail := add(headStart, 32)\n        mstore(headStart, and(value0, sub(shl(160, 1), 1)))\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_uint256t_address(headStart, dataEnd) -> value0, value1\n    {\n        if slt(sub(dataEnd, headStart), 64) { revert(0, 0) }\n        let value := 0\n        value := calldataload(headStart)\n        value0 := value\n        value1 := abi_decode_address(add(headStart, 32))\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        if iszero(eq(value, iszero(iszero(value)))) { revert(0, 0) }\n        value0 := value\n    }\n    function abi_decode_tuple_t_uint256t_addresst_address(headStart, dataEnd) -> value0, value1, value2\n    {\n        if slt(sub(dataEnd, headStart), 96) { revert(0, 0) }\n        let value := 0\n        value := calldataload(headStart)\n        value0 := value\n        value1 := abi_decode_address(add(headStart, 32))\n        value2 := abi_decode_address(add(headStart, 64))\n    }\n    function abi_decode_tuple_t_int256(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_enum$_OverrideOption_$2758t_uint256(headStart, dataEnd) -> value0, value1\n    {\n        if slt(sub(dataEnd, headStart), 64) { revert(0, 0) }\n        let value := calldataload(headStart)\n        if iszero(lt(value, 4)) { revert(0, 0) }\n        value0 := value\n        let value_1 := 0\n        value_1 := calldataload(add(headStart, 32))\n        value1 := value_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        value0 := abi_decode_address(headStart)\n        value1 := abi_decode_address(add(headStart, 32))\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 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_0x11()\n    {\n        mstore(0, shl(224, 0x4e487b71))\n        mstore(4, 0x11)\n        revert(0, 0x24)\n    }\n    function checked_add_t_uint8(x, y) -> sum\n    {\n        sum := add(and(x, 0xff), and(y, 0xff))\n        if gt(sum, 0xff) { panic_error_0x11() }\n    }\n    function checked_sub_t_uint256(x, y) -> diff\n    {\n        diff := sub(x, y)\n        if gt(diff, x) { panic_error_0x11() }\n    }\n    function abi_encode_tuple_t_address_t_uint256_t_uint256__to_t_address_t_uint256_t_uint256__fromStack_reversed(headStart, value2, value1, value0) -> tail\n    {\n        tail := add(headStart, 96)\n        mstore(headStart, and(value0, sub(shl(160, 1), 1)))\n        mstore(add(headStart, 32), value1)\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, sub(shl(160, 1), 1)))\n        mstore(add(headStart, 32), value1)\n    }\n    function negate_t_int256(value) -> ret\n    {\n        if eq(value, shl(255, 1)) { panic_error_0x11() }\n        ret := sub(0, value)\n    }\n    function panic_error_0x21()\n    {\n        mstore(0, shl(224, 0x4e487b71))\n        mstore(4, 0x21)\n        revert(0, 0x24)\n    }\n    function checked_add_t_uint256(x, y) -> sum\n    {\n        sum := add(x, y)\n        if gt(x, sum) { panic_error_0x11() }\n    }\n    function checked_exp_helper(_base, exponent, max) -> power, base\n    {\n        power := 1\n        base := _base\n        for { } gt(exponent, 1) { }\n        {\n            if gt(base, div(max, base)) { panic_error_0x11() }\n            if and(exponent, 1) { power := mul(power, base) }\n            base := mul(base, base)\n            exponent := shr(1, exponent)\n        }\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            let _1 := 0\n            _1 := 0\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            let _2 := 0\n            _2 := 0\n            leave\n        }\n        let power_1, base_1 := checked_exp_helper(base, exponent, not(0))\n        if gt(power_1, div(not(0), base_1)) { panic_error_0x11() }\n        power := mul(power_1, base_1)\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 calldata_array_index_range_access_t_bytes_calldata_ptr(offset, length, startIndex, endIndex) -> offsetOut, lengthOut\n    {\n        if gt(startIndex, endIndex) { revert(0, 0) }\n        if gt(endIndex, length) { revert(0, 0) }\n        offsetOut := add(offset, startIndex)\n        lengthOut := sub(endIndex, startIndex)\n    }\n    function convert_bytes_to_fixedbytes_from_t_bytes_calldata_ptr_to_t_bytes4(array, len) -> value\n    {\n        let _1 := calldataload(array)\n        value := and(_1, shl(224, 0xffffffff))\n        if lt(len, 4)\n        {\n            value := and(and(_1, shl(shl(3, sub(4, len)), shl(224, 0xffffffff))), shl(224, 0xffffffff))\n        }\n    }\n    function abi_encode_tuple_t_bytes4__to_t_bytes4__fromStack_reversed(headStart, value0) -> tail\n    {\n        tail := add(headStart, 32)\n        mstore(headStart, and(value0, shl(224, 0xffffffff)))\n    }\n    function panic_error_0x12()\n    {\n        mstore(0, shl(224, 0x4e487b71))\n        mstore(4, 0x12)\n        revert(0, 0x24)\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 mod_t_uint8(x, y) -> r\n    {\n        let y_1 := and(y, 0xff)\n        if iszero(y_1)\n        {\n            mstore(0, shl(224, 0x4e487b71))\n            mstore(4, 0x12)\n            revert(0, 0x24)\n        }\n        r := mod(and(x, 0xff), y_1)\n    }\n}","id":87,"language":"Yul","name":"#utility.yul"}],"immutableReferences":{"8706":[{"length":32,"start":718},{"length":32,"start":1186},{"length":32,"start":2094},{"length":32,"start":2187},{"length":32,"start":3597},{"length":32,"start":3775}],"8708":[{"length":32,"start":1566}]},"linkReferences":{},"object":"608060405234801561000f575f5ffd5b50600436106101fd575f3560e01c806386de9e4f11610114578063c6e6f592116100a9578063d6dd023411610079578063d6dd023414610439578063d905777e1461044c578063dd62ed3e1461045f578063ef8b30f7146103f7578063f3c0b89214610497575f5ffd5b8063c6e6f592146103f7578063c7361ed21461040a578063cc7fcc601461041d578063ce96cb7714610426575f5ffd5b8063b3d7f6b9116100e4578063b3d7f6b9146103ab578063b460af94146103be578063ba087652146103d1578063c63d75b6146103e4575f5ffd5b806386de9e4f1461035a57806394bf804d1461037d57806395d89b4114610390578063a9059cbb14610398575f5ffd5b8063313ce56711610195578063402d267d11610165578063402d267d146103015780634cdad5061461023a5780636e553f651461031457806370a08231146103275780637fb1ad621461034f575f5ffd5b8063313ce5671461029e57806338359018146102b857806338d52e0f146102c157806339d88aff146102f8575f5ffd5b8063095ea7b3116101d0578063095ea7b31461024d5780630a28a4771461027057806318160ddd1461028357806323b872dd1461028b575f5ffd5b806301e1d11414610201578063034548cd1461021c57806306fdde031461022557806307a2d13a1461023a575b5f5ffd5b61020961049f565b6040519081526020015b60405180910390f35b61020960075481565b61022d61052e565b60405161021391906111f7565b61020961024836600461122c565b6105be565b61026061025b36600461125e565b6105cf565b6040519015158152602001610213565b61020961027e36600461122c565b6105e6565b600254610209565b610260610299366004611286565b6105f2565b6102a6610617565b60405160ff9091168152602001610213565b61020960085481565b6040516001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000168152602001610213565b61020960065481565b61020961030f3660046112c0565b610642565b6102096103223660046112d9565b610666565b6102096103353660046112c0565b6001600160a01b03165f9081526020819052604090205490565b60055460ff16610260565b61037b610368366004611303565b6005805460ff1916911515919091179055565b005b61020961038b3660046112d9565b6106c3565b61022d61070f565b6102606103a636600461125e565b61071e565b6102096103b936600461122c565b61072b565b6102096103cc366004611322565b610737565b6102096103df366004611322565b61078d565b6102096103f23660046112c0565b6107da565b61020961040536600461122c565b6107f7565b61037b61041836600461122c565b610802565b61020960095481565b6102096104343660046112c0565b6108f3565b61037b61044736600461135b565b610919565b61020961045a3660046112c0565b610998565b61020961046d36600461137a565b6001600160a01b039182165f90815260016020908152604080832093909416825291909152205490565b6102096109be565b5f7f00000000000000000000000000000000000000000000000000000000000000006040516370a0823160e01b81523060048201526001600160a01b0391909116906370a0823190602401602060405180830381865afa158015610505573d5f5f3e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061052991906113a2565b905090565b60606003805461053d906113b9565b80601f0160208091040260200160405190810160405280929190818152602001828054610569906113b9565b80156105b45780601f1061058b576101008083540402835291602001916105b4565b820191905f5260205f20905b81548152906001019060200180831161059757829003601f168201915b5050505050905090565b5f6105c9825f6109cd565b92915050565b5f336105dc818585610a05565b5060019392505050565b5f6105c9826001610a17565b5f336105ff858285610a46565b61060a858585610aaf565b60019150505b9392505050565b5f610529817f0000000000000000000000000000000000000000000000000000000000000000611405565b5f61064f60635f1961141e565b6006541461065f576006546105c9565b5f196105c9565b5f5f61067183610642565b9050808411156106a357828482604051633c8097d960e11b815260040161069a93929190611431565b60405180910390fd5b5f6106ad856107f7565b90506106bb33858784610b0c565b949350505050565b5f5f6106ce836107da565b9050808411156106f75782848260405163284ff66760e01b815260040161069a93929190611431565b5f6107018561072b565b90506106bb33858388610b0c565b60606004805461053d906113b9565b5f336105dc818585610aaf565b5f6105c98260016109cd565b5f5f610742836108f3565b90508085111561076b57828582604051633fa733bb60e21b815260040161069a93929190611431565b5f610775866105e6565b90506107843386868985610b61565b95945050505050565b5f5f61079883610998565b9050808511156107c157828582604051632e52afbb60e21b815260040161069a93929190611431565b5f6107cb866105be565b9050610784338686848a610b61565b5f6107e760635f1961141e565b6007541461065f576007546105c9565b5f6105c9825f610a17565b5f811315610889576040516340c10f1960e01b8152306004820152602481018290526001600160a01b037f000000000000000000000000000000000000000000000000000000000000000016906340c10f19906044015b5f604051808303815f87803b158015610870575f5ffd5b505af1158015610882573d5f5f3e3d5ffd5b5050505050565b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316639dc29fac306108c284611452565b6040516001600160e01b031960e085901b1681526001600160a01b0390921660048301526024820152604401610859565b5f61090060635f1961141e565b60085414610910576008546105c9565b6105c982610bb7565b5f82600381111561092c5761092c61146c565b036109375760068190555b600182600381111561094b5761094b61146c565b036109565760078190555b600282600381111561096a5761096a61146c565b036109755760088190555b60038260038111156109895761098961146c565b036109945760098190555b5050565b5f6109a560635f1961141e565b600954146109b5576009546105c9565b6105c982610bc4565b6109ca60635f1961141e565b81565b5f6106106109d961049f565b6109e4906001611480565b6109ef5f600a611576565b6002546109fc9190611480565b85919085610be1565b610a128383836001610c23565b505050565b5f610610610a2682600a611576565b600254610a339190611480565b610a3b61049f565b6109fc906001611480565b6001600160a01b038381165f908152600160209081526040808320938616835292905220545f19811015610aa95781811015610a9b57828183604051637dc7a0d960e11b815260040161069a93929190611431565b610aa984848484035f610c23565b50505050565b6001600160a01b038316610ad857604051634b637e8f60e11b81525f600482015260240161069a565b6001600160a01b038216610b015760405163ec442f0560e01b81525f600482015260240161069a565b610a12838383610cf5565b60055460ff1615610b2060045f3681611584565b610b29916115ab565b90610b54576040516340c2fd5360e11b81526001600160e01b0319909116600482015260240161069a565b50610aa984848484610e08565b60055460ff1615610b7560045f3681611584565b610b7e916115ab565b90610ba9576040516340c2fd5360e11b81526001600160e01b0319909116600482015260240161069a565b506108828585858585610e8c565b5f6105c961024883610998565b6001600160a01b0381165f908152602081905260408120546105c9565b5f610c0e610bee83610f4c565b8015610c0957505f8480610c0457610c046115e3565b868809115b151590565b610c19868686610f78565b6107849190611480565b6001600160a01b038416610c4c5760405163e602df0560e01b81525f600482015260240161069a565b6001600160a01b038316610c7557604051634a1406b160e11b81525f600482015260240161069a565b6001600160a01b038085165f9081526001602090815260408083209387168352929052208290558015610aa957826001600160a01b0316846001600160a01b03167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92584604051610ce791815260200190565b60405180910390a350505050565b6001600160a01b038316610d1f578060025f828254610d149190611480565b90915550610d7c9050565b6001600160a01b0383165f9081526020819052604090205481811015610d5e5783818360405163391434e360e21b815260040161069a93929190611431565b6001600160a01b0384165f9081526020819052604090209082900390555b6001600160a01b038216610d9857600280548290039055610db6565b6001600160a01b0382165f9081526020819052604090208054820190555b816001600160a01b0316836001600160a01b03167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef83604051610dfb91815260200190565b60405180910390a3505050565b610e347f0000000000000000000000000000000000000000000000000000000000000000853085611028565b610e3e838261105e565b826001600160a01b0316846001600160a01b03167fdcbc1c05240f31ff3ad067ef1ee35ce4997762752e3a095284754544f4c709d78484604051610ce7929190918252602082015260400190565b826001600160a01b0316856001600160a01b031614610eb057610eb0838683610a46565b610eba8382611092565b610ee57f000000000000000000000000000000000000000000000000000000000000000085846110c6565b826001600160a01b0316846001600160a01b0316866001600160a01b03167ffbde797d201c681b91056529119e0b02407c7bb96a4a2c75c01fc9667232c8db8585604051610f3d929190918252602082015260400190565b60405180910390a45050505050565b5f6002826003811115610f6157610f6161146c565b610f6b91906115f7565b60ff166001149050919050565b5f5f5f610f8586866110fb565b91509150815f03610fa957838181610f9f57610f9f6115e3565b0492505050610610565b818411610fc057610fc06003851502601118611117565b5f848688095f868103871696879004966002600389028118808a02820302808a02820302808a02820302808a02820302808a02820302808a02909103029181900381900460010185841190960395909502919093039390930492909217029150509392505050565b611036848484846001611128565b610aa957604051635274afe760e01b81526001600160a01b038516600482015260240161069a565b6001600160a01b0382166110875760405163ec442f0560e01b81525f600482015260240161069a565b6109945f8383610cf5565b6001600160a01b0382166110bb57604051634b637e8f60e11b81525f600482015260240161069a565b610994825f83610cf5565b6110d38383836001611195565b610a1257604051635274afe760e01b81526001600160a01b038416600482015260240161069a565b5f805f1983850993909202808410938190039390930393915050565b634e487b715f52806020526024601cfd5b6040516323b872dd60e01b5f8181526001600160a01b038781166004528616602452604485905291602083606481808c5af1925060015f51148316611184578383151615611178573d5f823e3d81fd5b5f883b113d1516831692505b604052505f60605295945050505050565b60405163a9059cbb60e01b5f8181526001600160a01b038616600452602485905291602083604481808b5af1925060015f511483166111eb5783831516156111df573d5f823e3d81fd5b5f873b113d1516831692505b60405250949350505050565b602081525f82518060208401528060208501604085015e5f604082850101526040601f19601f83011684010191505092915050565b5f6020828403121561123c575f5ffd5b5035919050565b80356001600160a01b0381168114611259575f5ffd5b919050565b5f5f6040838503121561126f575f5ffd5b61127883611243565b946020939093013593505050565b5f5f5f60608486031215611298575f5ffd5b6112a184611243565b92506112af60208501611243565b929592945050506040919091013590565b5f602082840312156112d0575f5ffd5b61061082611243565b5f5f604083850312156112ea575f5ffd5b823591506112fa60208401611243565b90509250929050565b5f60208284031215611313575f5ffd5b81358015158114610610575f5ffd5b5f5f5f60608486031215611334575f5ffd5b8335925061134460208501611243565b915061135260408501611243565b90509250925092565b5f5f6040838503121561136c575f5ffd5b823560048110611278575f5ffd5b5f5f6040838503121561138b575f5ffd5b61139483611243565b91506112fa60208401611243565b5f602082840312156113b2575f5ffd5b5051919050565b600181811c908216806113cd57607f821691505b6020821081036113eb57634e487b7160e01b5f52602260045260245ffd5b50919050565b634e487b7160e01b5f52601160045260245ffd5b60ff81811683821601908111156105c9576105c96113f1565b818103818111156105c9576105c96113f1565b6001600160a01b039390931683526020830191909152604082015260600190565b5f600160ff1b8201611466576114666113f1565b505f0390565b634e487b7160e01b5f52602160045260245ffd5b808201808211156105c9576105c96113f1565b6001815b60018411156114ce578085048111156114b2576114b26113f1565b60018416156114c057908102905b60019390931c928002611497565b935093915050565b5f826114e4575060016105c9565b816114f057505f6105c9565b816001811461150657600281146115105761152c565b60019150506105c9565b60ff841115611521576115216113f1565b50506001821b6105c9565b5060208310610133831016604e8410600b841016171561154f575081810a6105c9565b61155b5f198484611493565b805f190482111561156e5761156e6113f1565b029392505050565b5f61061060ff8416836114d6565b5f5f85851115611592575f5ffd5b8386111561159e575f5ffd5b5050820193919092039150565b80356001600160e01b031981169060048410156115dc576001600160e01b0319600485900360031b81901b82161691505b5092915050565b634e487b7160e01b5f52601260045260245ffd5b5f60ff83168061161557634e487b7160e01b5f52601260045260245ffd5b8060ff8416069150509291505056fea264697066735822122041a239773b0c4f47712d5277cd163f3256eb28220d6a600a22cf02fd0bf1a59064736f6c634300081e0033","opcodes":"PUSH1 0x80 PUSH1 0x40 MSTORE CALLVALUE DUP1 ISZERO PUSH2 0xF JUMPI PUSH0 PUSH0 REVERT JUMPDEST POP PUSH1 0x4 CALLDATASIZE LT PUSH2 0x1FD JUMPI PUSH0 CALLDATALOAD PUSH1 0xE0 SHR DUP1 PUSH4 0x86DE9E4F GT PUSH2 0x114 JUMPI DUP1 PUSH4 0xC6E6F592 GT PUSH2 0xA9 JUMPI DUP1 PUSH4 0xD6DD0234 GT PUSH2 0x79 JUMPI DUP1 PUSH4 0xD6DD0234 EQ PUSH2 0x439 JUMPI DUP1 PUSH4 0xD905777E EQ PUSH2 0x44C JUMPI DUP1 PUSH4 0xDD62ED3E EQ PUSH2 0x45F JUMPI DUP1 PUSH4 0xEF8B30F7 EQ PUSH2 0x3F7 JUMPI DUP1 PUSH4 0xF3C0B892 EQ PUSH2 0x497 JUMPI PUSH0 PUSH0 REVERT JUMPDEST DUP1 PUSH4 0xC6E6F592 EQ PUSH2 0x3F7 JUMPI DUP1 PUSH4 0xC7361ED2 EQ PUSH2 0x40A JUMPI DUP1 PUSH4 0xCC7FCC60 EQ PUSH2 0x41D JUMPI DUP1 PUSH4 0xCE96CB77 EQ PUSH2 0x426 JUMPI PUSH0 PUSH0 REVERT JUMPDEST DUP1 PUSH4 0xB3D7F6B9 GT PUSH2 0xE4 JUMPI DUP1 PUSH4 0xB3D7F6B9 EQ PUSH2 0x3AB JUMPI DUP1 PUSH4 0xB460AF94 EQ PUSH2 0x3BE JUMPI DUP1 PUSH4 0xBA087652 EQ PUSH2 0x3D1 JUMPI DUP1 PUSH4 0xC63D75B6 EQ PUSH2 0x3E4 JUMPI PUSH0 PUSH0 REVERT JUMPDEST DUP1 PUSH4 0x86DE9E4F EQ PUSH2 0x35A JUMPI DUP1 PUSH4 0x94BF804D EQ PUSH2 0x37D JUMPI DUP1 PUSH4 0x95D89B41 EQ PUSH2 0x390 JUMPI DUP1 PUSH4 0xA9059CBB EQ PUSH2 0x398 JUMPI PUSH0 PUSH0 REVERT JUMPDEST DUP1 PUSH4 0x313CE567 GT PUSH2 0x195 JUMPI DUP1 PUSH4 0x402D267D GT PUSH2 0x165 JUMPI DUP1 PUSH4 0x402D267D EQ PUSH2 0x301 JUMPI DUP1 PUSH4 0x4CDAD506 EQ PUSH2 0x23A JUMPI DUP1 PUSH4 0x6E553F65 EQ PUSH2 0x314 JUMPI DUP1 PUSH4 0x70A08231 EQ PUSH2 0x327 JUMPI DUP1 PUSH4 0x7FB1AD62 EQ PUSH2 0x34F JUMPI PUSH0 PUSH0 REVERT JUMPDEST DUP1 PUSH4 0x313CE567 EQ PUSH2 0x29E JUMPI DUP1 PUSH4 0x38359018 EQ PUSH2 0x2B8 JUMPI DUP1 PUSH4 0x38D52E0F EQ PUSH2 0x2C1 JUMPI DUP1 PUSH4 0x39D88AFF EQ PUSH2 0x2F8 JUMPI PUSH0 PUSH0 REVERT JUMPDEST DUP1 PUSH4 0x95EA7B3 GT PUSH2 0x1D0 JUMPI DUP1 PUSH4 0x95EA7B3 EQ PUSH2 0x24D JUMPI DUP1 PUSH4 0xA28A477 EQ PUSH2 0x270 JUMPI DUP1 PUSH4 0x18160DDD EQ PUSH2 0x283 JUMPI DUP1 PUSH4 0x23B872DD EQ PUSH2 0x28B JUMPI PUSH0 PUSH0 REVERT JUMPDEST DUP1 PUSH4 0x1E1D114 EQ PUSH2 0x201 JUMPI DUP1 PUSH4 0x34548CD EQ PUSH2 0x21C JUMPI DUP1 PUSH4 0x6FDDE03 EQ PUSH2 0x225 JUMPI DUP1 PUSH4 0x7A2D13A EQ PUSH2 0x23A JUMPI JUMPDEST PUSH0 PUSH0 REVERT JUMPDEST PUSH2 0x209 PUSH2 0x49F JUMP JUMPDEST PUSH1 0x40 MLOAD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST PUSH2 0x209 PUSH1 0x7 SLOAD DUP2 JUMP JUMPDEST PUSH2 0x22D PUSH2 0x52E JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0x213 SWAP2 SWAP1 PUSH2 0x11F7 JUMP JUMPDEST PUSH2 0x209 PUSH2 0x248 CALLDATASIZE PUSH1 0x4 PUSH2 0x122C JUMP JUMPDEST PUSH2 0x5BE JUMP JUMPDEST PUSH2 0x260 PUSH2 0x25B CALLDATASIZE PUSH1 0x4 PUSH2 0x125E JUMP JUMPDEST PUSH2 0x5CF JUMP JUMPDEST PUSH1 0x40 MLOAD SWAP1 ISZERO ISZERO DUP2 MSTORE PUSH1 0x20 ADD PUSH2 0x213 JUMP JUMPDEST PUSH2 0x209 PUSH2 0x27E CALLDATASIZE PUSH1 0x4 PUSH2 0x122C JUMP JUMPDEST PUSH2 0x5E6 JUMP JUMPDEST PUSH1 0x2 SLOAD PUSH2 0x209 JUMP JUMPDEST PUSH2 0x260 PUSH2 0x299 CALLDATASIZE PUSH1 0x4 PUSH2 0x1286 JUMP JUMPDEST PUSH2 0x5F2 JUMP JUMPDEST PUSH2 0x2A6 PUSH2 0x617 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH1 0xFF SWAP1 SWAP2 AND DUP2 MSTORE PUSH1 0x20 ADD PUSH2 0x213 JUMP JUMPDEST PUSH2 0x209 PUSH1 0x8 SLOAD DUP2 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB PUSH32 0x0 AND DUP2 MSTORE PUSH1 0x20 ADD PUSH2 0x213 JUMP JUMPDEST PUSH2 0x209 PUSH1 0x6 SLOAD DUP2 JUMP JUMPDEST PUSH2 0x209 PUSH2 0x30F CALLDATASIZE PUSH1 0x4 PUSH2 0x12C0 JUMP JUMPDEST PUSH2 0x642 JUMP JUMPDEST PUSH2 0x209 PUSH2 0x322 CALLDATASIZE PUSH1 0x4 PUSH2 0x12D9 JUMP JUMPDEST PUSH2 0x666 JUMP JUMPDEST PUSH2 0x209 PUSH2 0x335 CALLDATASIZE PUSH1 0x4 PUSH2 0x12C0 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH0 SWAP1 DUP2 MSTORE PUSH1 0x20 DUP2 SWAP1 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD SWAP1 JUMP JUMPDEST PUSH1 0x5 SLOAD PUSH1 0xFF AND PUSH2 0x260 JUMP JUMPDEST PUSH2 0x37B PUSH2 0x368 CALLDATASIZE PUSH1 0x4 PUSH2 0x1303 JUMP JUMPDEST PUSH1 0x5 DUP1 SLOAD PUSH1 0xFF NOT AND SWAP2 ISZERO ISZERO SWAP2 SWAP1 SWAP2 OR SWAP1 SSTORE JUMP JUMPDEST STOP JUMPDEST PUSH2 0x209 PUSH2 0x38B CALLDATASIZE PUSH1 0x4 PUSH2 0x12D9 JUMP JUMPDEST PUSH2 0x6C3 JUMP JUMPDEST PUSH2 0x22D PUSH2 0x70F JUMP JUMPDEST PUSH2 0x260 PUSH2 0x3A6 CALLDATASIZE PUSH1 0x4 PUSH2 0x125E JUMP JUMPDEST PUSH2 0x71E JUMP JUMPDEST PUSH2 0x209 PUSH2 0x3B9 CALLDATASIZE PUSH1 0x4 PUSH2 0x122C JUMP JUMPDEST PUSH2 0x72B JUMP JUMPDEST PUSH2 0x209 PUSH2 0x3CC CALLDATASIZE PUSH1 0x4 PUSH2 0x1322 JUMP JUMPDEST PUSH2 0x737 JUMP JUMPDEST PUSH2 0x209 PUSH2 0x3DF CALLDATASIZE PUSH1 0x4 PUSH2 0x1322 JUMP JUMPDEST PUSH2 0x78D JUMP JUMPDEST PUSH2 0x209 PUSH2 0x3F2 CALLDATASIZE PUSH1 0x4 PUSH2 0x12C0 JUMP JUMPDEST PUSH2 0x7DA JUMP JUMPDEST PUSH2 0x209 PUSH2 0x405 CALLDATASIZE PUSH1 0x4 PUSH2 0x122C JUMP JUMPDEST PUSH2 0x7F7 JUMP JUMPDEST PUSH2 0x37B PUSH2 0x418 CALLDATASIZE PUSH1 0x4 PUSH2 0x122C JUMP JUMPDEST PUSH2 0x802 JUMP JUMPDEST PUSH2 0x209 PUSH1 0x9 SLOAD DUP2 JUMP JUMPDEST PUSH2 0x209 PUSH2 0x434 CALLDATASIZE PUSH1 0x4 PUSH2 0x12C0 JUMP JUMPDEST PUSH2 0x8F3 JUMP JUMPDEST PUSH2 0x37B PUSH2 0x447 CALLDATASIZE PUSH1 0x4 PUSH2 0x135B JUMP JUMPDEST PUSH2 0x919 JUMP JUMPDEST PUSH2 0x209 PUSH2 0x45A CALLDATASIZE PUSH1 0x4 PUSH2 0x12C0 JUMP JUMPDEST PUSH2 0x998 JUMP JUMPDEST PUSH2 0x209 PUSH2 0x46D CALLDATASIZE PUSH1 0x4 PUSH2 0x137A JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP2 DUP3 AND PUSH0 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 0x209 PUSH2 0x9BE JUMP JUMPDEST PUSH0 PUSH32 0x0 PUSH1 0x40 MLOAD PUSH4 0x70A08231 PUSH1 0xE0 SHL DUP2 MSTORE ADDRESS PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP2 SWAP1 SWAP2 AND SWAP1 PUSH4 0x70A08231 SWAP1 PUSH1 0x24 ADD PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x505 JUMPI RETURNDATASIZE PUSH0 PUSH0 RETURNDATACOPY RETURNDATASIZE PUSH0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP3 ADD DUP1 PUSH1 0x40 MSTORE POP DUP2 ADD SWAP1 PUSH2 0x529 SWAP2 SWAP1 PUSH2 0x13A2 JUMP JUMPDEST SWAP1 POP SWAP1 JUMP JUMPDEST PUSH1 0x60 PUSH1 0x3 DUP1 SLOAD PUSH2 0x53D SWAP1 PUSH2 0x13B9 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 0x569 SWAP1 PUSH2 0x13B9 JUMP JUMPDEST DUP1 ISZERO PUSH2 0x5B4 JUMPI DUP1 PUSH1 0x1F LT PUSH2 0x58B JUMPI PUSH2 0x100 DUP1 DUP4 SLOAD DIV MUL DUP4 MSTORE SWAP2 PUSH1 0x20 ADD SWAP2 PUSH2 0x5B4 JUMP JUMPDEST DUP3 ADD SWAP2 SWAP1 PUSH0 MSTORE PUSH1 0x20 PUSH0 KECCAK256 SWAP1 JUMPDEST DUP2 SLOAD DUP2 MSTORE SWAP1 PUSH1 0x1 ADD SWAP1 PUSH1 0x20 ADD DUP1 DUP4 GT PUSH2 0x597 JUMPI DUP3 SWAP1 SUB PUSH1 0x1F AND DUP3 ADD SWAP2 JUMPDEST POP POP POP POP POP SWAP1 POP SWAP1 JUMP JUMPDEST PUSH0 PUSH2 0x5C9 DUP3 PUSH0 PUSH2 0x9CD JUMP JUMPDEST SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH0 CALLER PUSH2 0x5DC DUP2 DUP6 DUP6 PUSH2 0xA05 JUMP JUMPDEST POP PUSH1 0x1 SWAP4 SWAP3 POP POP POP JUMP JUMPDEST PUSH0 PUSH2 0x5C9 DUP3 PUSH1 0x1 PUSH2 0xA17 JUMP JUMPDEST PUSH0 CALLER PUSH2 0x5FF DUP6 DUP3 DUP6 PUSH2 0xA46 JUMP JUMPDEST PUSH2 0x60A DUP6 DUP6 DUP6 PUSH2 0xAAF JUMP JUMPDEST PUSH1 0x1 SWAP2 POP POP JUMPDEST SWAP4 SWAP3 POP POP POP JUMP JUMPDEST PUSH0 PUSH2 0x529 DUP2 PUSH32 0x0 PUSH2 0x1405 JUMP JUMPDEST PUSH0 PUSH2 0x64F PUSH1 0x63 PUSH0 NOT PUSH2 0x141E JUMP JUMPDEST PUSH1 0x6 SLOAD EQ PUSH2 0x65F JUMPI PUSH1 0x6 SLOAD PUSH2 0x5C9 JUMP JUMPDEST PUSH0 NOT PUSH2 0x5C9 JUMP JUMPDEST PUSH0 PUSH0 PUSH2 0x671 DUP4 PUSH2 0x642 JUMP JUMPDEST SWAP1 POP DUP1 DUP5 GT ISZERO PUSH2 0x6A3 JUMPI DUP3 DUP5 DUP3 PUSH1 0x40 MLOAD PUSH4 0x3C8097D9 PUSH1 0xE1 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x69A SWAP4 SWAP3 SWAP2 SWAP1 PUSH2 0x1431 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH0 PUSH2 0x6AD DUP6 PUSH2 0x7F7 JUMP JUMPDEST SWAP1 POP PUSH2 0x6BB CALLER DUP6 DUP8 DUP5 PUSH2 0xB0C JUMP JUMPDEST SWAP5 SWAP4 POP POP POP POP JUMP JUMPDEST PUSH0 PUSH0 PUSH2 0x6CE DUP4 PUSH2 0x7DA JUMP JUMPDEST SWAP1 POP DUP1 DUP5 GT ISZERO PUSH2 0x6F7 JUMPI DUP3 DUP5 DUP3 PUSH1 0x40 MLOAD PUSH4 0x284FF667 PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x69A SWAP4 SWAP3 SWAP2 SWAP1 PUSH2 0x1431 JUMP JUMPDEST PUSH0 PUSH2 0x701 DUP6 PUSH2 0x72B JUMP JUMPDEST SWAP1 POP PUSH2 0x6BB CALLER DUP6 DUP4 DUP9 PUSH2 0xB0C JUMP JUMPDEST PUSH1 0x60 PUSH1 0x4 DUP1 SLOAD PUSH2 0x53D SWAP1 PUSH2 0x13B9 JUMP JUMPDEST PUSH0 CALLER PUSH2 0x5DC DUP2 DUP6 DUP6 PUSH2 0xAAF JUMP JUMPDEST PUSH0 PUSH2 0x5C9 DUP3 PUSH1 0x1 PUSH2 0x9CD JUMP JUMPDEST PUSH0 PUSH0 PUSH2 0x742 DUP4 PUSH2 0x8F3 JUMP JUMPDEST SWAP1 POP DUP1 DUP6 GT ISZERO PUSH2 0x76B JUMPI DUP3 DUP6 DUP3 PUSH1 0x40 MLOAD PUSH4 0x3FA733BB PUSH1 0xE2 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x69A SWAP4 SWAP3 SWAP2 SWAP1 PUSH2 0x1431 JUMP JUMPDEST PUSH0 PUSH2 0x775 DUP7 PUSH2 0x5E6 JUMP JUMPDEST SWAP1 POP PUSH2 0x784 CALLER DUP7 DUP7 DUP10 DUP6 PUSH2 0xB61 JUMP JUMPDEST SWAP6 SWAP5 POP POP POP POP POP JUMP JUMPDEST PUSH0 PUSH0 PUSH2 0x798 DUP4 PUSH2 0x998 JUMP JUMPDEST SWAP1 POP DUP1 DUP6 GT ISZERO PUSH2 0x7C1 JUMPI DUP3 DUP6 DUP3 PUSH1 0x40 MLOAD PUSH4 0x2E52AFBB PUSH1 0xE2 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x69A SWAP4 SWAP3 SWAP2 SWAP1 PUSH2 0x1431 JUMP JUMPDEST PUSH0 PUSH2 0x7CB DUP7 PUSH2 0x5BE JUMP JUMPDEST SWAP1 POP PUSH2 0x784 CALLER DUP7 DUP7 DUP5 DUP11 PUSH2 0xB61 JUMP JUMPDEST PUSH0 PUSH2 0x7E7 PUSH1 0x63 PUSH0 NOT PUSH2 0x141E JUMP JUMPDEST PUSH1 0x7 SLOAD EQ PUSH2 0x65F JUMPI PUSH1 0x7 SLOAD PUSH2 0x5C9 JUMP JUMPDEST PUSH0 PUSH2 0x5C9 DUP3 PUSH0 PUSH2 0xA17 JUMP JUMPDEST PUSH0 DUP2 SGT ISZERO PUSH2 0x889 JUMPI PUSH1 0x40 MLOAD PUSH4 0x40C10F19 PUSH1 0xE0 SHL DUP2 MSTORE ADDRESS PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x24 DUP2 ADD DUP3 SWAP1 MSTORE PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB PUSH32 0x0 AND SWAP1 PUSH4 0x40C10F19 SWAP1 PUSH1 0x44 ADD JUMPDEST PUSH0 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 PUSH0 DUP8 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x870 JUMPI PUSH0 PUSH0 REVERT JUMPDEST POP GAS CALL ISZERO DUP1 ISZERO PUSH2 0x882 JUMPI RETURNDATASIZE PUSH0 PUSH0 RETURNDATACOPY RETURNDATASIZE PUSH0 REVERT JUMPDEST POP POP POP POP POP JUMP JUMPDEST PUSH32 0x0 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH4 0x9DC29FAC ADDRESS PUSH2 0x8C2 DUP5 PUSH2 0x1452 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xE0 SHL SUB NOT PUSH1 0xE0 DUP6 SWAP1 SHL AND DUP2 MSTORE PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP1 SWAP3 AND PUSH1 0x4 DUP4 ADD MSTORE PUSH1 0x24 DUP3 ADD MSTORE PUSH1 0x44 ADD PUSH2 0x859 JUMP JUMPDEST PUSH0 PUSH2 0x900 PUSH1 0x63 PUSH0 NOT PUSH2 0x141E JUMP JUMPDEST PUSH1 0x8 SLOAD EQ PUSH2 0x910 JUMPI PUSH1 0x8 SLOAD PUSH2 0x5C9 JUMP JUMPDEST PUSH2 0x5C9 DUP3 PUSH2 0xBB7 JUMP JUMPDEST PUSH0 DUP3 PUSH1 0x3 DUP2 GT ISZERO PUSH2 0x92C JUMPI PUSH2 0x92C PUSH2 0x146C JUMP JUMPDEST SUB PUSH2 0x937 JUMPI PUSH1 0x6 DUP2 SWAP1 SSTORE JUMPDEST PUSH1 0x1 DUP3 PUSH1 0x3 DUP2 GT ISZERO PUSH2 0x94B JUMPI PUSH2 0x94B PUSH2 0x146C JUMP JUMPDEST SUB PUSH2 0x956 JUMPI PUSH1 0x7 DUP2 SWAP1 SSTORE JUMPDEST PUSH1 0x2 DUP3 PUSH1 0x3 DUP2 GT ISZERO PUSH2 0x96A JUMPI PUSH2 0x96A PUSH2 0x146C JUMP JUMPDEST SUB PUSH2 0x975 JUMPI PUSH1 0x8 DUP2 SWAP1 SSTORE JUMPDEST PUSH1 0x3 DUP3 PUSH1 0x3 DUP2 GT ISZERO PUSH2 0x989 JUMPI PUSH2 0x989 PUSH2 0x146C JUMP JUMPDEST SUB PUSH2 0x994 JUMPI PUSH1 0x9 DUP2 SWAP1 SSTORE JUMPDEST POP POP JUMP JUMPDEST PUSH0 PUSH2 0x9A5 PUSH1 0x63 PUSH0 NOT PUSH2 0x141E JUMP JUMPDEST PUSH1 0x9 SLOAD EQ PUSH2 0x9B5 JUMPI PUSH1 0x9 SLOAD PUSH2 0x5C9 JUMP JUMPDEST PUSH2 0x5C9 DUP3 PUSH2 0xBC4 JUMP JUMPDEST PUSH2 0x9CA PUSH1 0x63 PUSH0 NOT PUSH2 0x141E JUMP JUMPDEST DUP2 JUMP JUMPDEST PUSH0 PUSH2 0x610 PUSH2 0x9D9 PUSH2 0x49F JUMP JUMPDEST PUSH2 0x9E4 SWAP1 PUSH1 0x1 PUSH2 0x1480 JUMP JUMPDEST PUSH2 0x9EF PUSH0 PUSH1 0xA PUSH2 0x1576 JUMP JUMPDEST PUSH1 0x2 SLOAD PUSH2 0x9FC SWAP2 SWAP1 PUSH2 0x1480 JUMP JUMPDEST DUP6 SWAP2 SWAP1 DUP6 PUSH2 0xBE1 JUMP JUMPDEST PUSH2 0xA12 DUP4 DUP4 DUP4 PUSH1 0x1 PUSH2 0xC23 JUMP JUMPDEST POP POP POP JUMP JUMPDEST PUSH0 PUSH2 0x610 PUSH2 0xA26 DUP3 PUSH1 0xA PUSH2 0x1576 JUMP JUMPDEST PUSH1 0x2 SLOAD PUSH2 0xA33 SWAP2 SWAP1 PUSH2 0x1480 JUMP JUMPDEST PUSH2 0xA3B PUSH2 0x49F JUMP JUMPDEST PUSH2 0x9FC SWAP1 PUSH1 0x1 PUSH2 0x1480 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP4 DUP2 AND PUSH0 SWAP1 DUP2 MSTORE PUSH1 0x1 PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x40 DUP1 DUP4 KECCAK256 SWAP4 DUP7 AND DUP4 MSTORE SWAP3 SWAP1 MSTORE KECCAK256 SLOAD PUSH0 NOT DUP2 LT ISZERO PUSH2 0xAA9 JUMPI DUP2 DUP2 LT ISZERO PUSH2 0xA9B JUMPI DUP3 DUP2 DUP4 PUSH1 0x40 MLOAD PUSH4 0x7DC7A0D9 PUSH1 0xE1 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x69A SWAP4 SWAP3 SWAP2 SWAP1 PUSH2 0x1431 JUMP JUMPDEST PUSH2 0xAA9 DUP5 DUP5 DUP5 DUP5 SUB PUSH0 PUSH2 0xC23 JUMP JUMPDEST POP POP POP POP JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP4 AND PUSH2 0xAD8 JUMPI PUSH1 0x40 MLOAD PUSH4 0x4B637E8F PUSH1 0xE1 SHL DUP2 MSTORE PUSH0 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x24 ADD PUSH2 0x69A JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP3 AND PUSH2 0xB01 JUMPI PUSH1 0x40 MLOAD PUSH4 0xEC442F05 PUSH1 0xE0 SHL DUP2 MSTORE PUSH0 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x24 ADD PUSH2 0x69A JUMP JUMPDEST PUSH2 0xA12 DUP4 DUP4 DUP4 PUSH2 0xCF5 JUMP JUMPDEST PUSH1 0x5 SLOAD PUSH1 0xFF AND ISZERO PUSH2 0xB20 PUSH1 0x4 PUSH0 CALLDATASIZE DUP2 PUSH2 0x1584 JUMP JUMPDEST PUSH2 0xB29 SWAP2 PUSH2 0x15AB JUMP JUMPDEST SWAP1 PUSH2 0xB54 JUMPI PUSH1 0x40 MLOAD PUSH4 0x40C2FD53 PUSH1 0xE1 SHL DUP2 MSTORE PUSH1 0x1 PUSH1 0x1 PUSH1 0xE0 SHL SUB NOT SWAP1 SWAP2 AND PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x24 ADD PUSH2 0x69A JUMP JUMPDEST POP PUSH2 0xAA9 DUP5 DUP5 DUP5 DUP5 PUSH2 0xE08 JUMP JUMPDEST PUSH1 0x5 SLOAD PUSH1 0xFF AND ISZERO PUSH2 0xB75 PUSH1 0x4 PUSH0 CALLDATASIZE DUP2 PUSH2 0x1584 JUMP JUMPDEST PUSH2 0xB7E SWAP2 PUSH2 0x15AB JUMP JUMPDEST SWAP1 PUSH2 0xBA9 JUMPI PUSH1 0x40 MLOAD PUSH4 0x40C2FD53 PUSH1 0xE1 SHL DUP2 MSTORE PUSH1 0x1 PUSH1 0x1 PUSH1 0xE0 SHL SUB NOT SWAP1 SWAP2 AND PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x24 ADD PUSH2 0x69A JUMP JUMPDEST POP PUSH2 0x882 DUP6 DUP6 DUP6 DUP6 DUP6 PUSH2 0xE8C JUMP JUMPDEST PUSH0 PUSH2 0x5C9 PUSH2 0x248 DUP4 PUSH2 0x998 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 AND PUSH0 SWAP1 DUP2 MSTORE PUSH1 0x20 DUP2 SWAP1 MSTORE PUSH1 0x40 DUP2 KECCAK256 SLOAD PUSH2 0x5C9 JUMP JUMPDEST PUSH0 PUSH2 0xC0E PUSH2 0xBEE DUP4 PUSH2 0xF4C JUMP JUMPDEST DUP1 ISZERO PUSH2 0xC09 JUMPI POP PUSH0 DUP5 DUP1 PUSH2 0xC04 JUMPI PUSH2 0xC04 PUSH2 0x15E3 JUMP JUMPDEST DUP7 DUP9 MULMOD GT JUMPDEST ISZERO ISZERO SWAP1 JUMP JUMPDEST PUSH2 0xC19 DUP7 DUP7 DUP7 PUSH2 0xF78 JUMP JUMPDEST PUSH2 0x784 SWAP2 SWAP1 PUSH2 0x1480 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP5 AND PUSH2 0xC4C JUMPI PUSH1 0x40 MLOAD PUSH4 0xE602DF05 PUSH1 0xE0 SHL DUP2 MSTORE PUSH0 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x24 ADD PUSH2 0x69A JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP4 AND PUSH2 0xC75 JUMPI PUSH1 0x40 MLOAD PUSH4 0x4A1406B1 PUSH1 0xE1 SHL DUP2 MSTORE PUSH0 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x24 ADD PUSH2 0x69A JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP1 DUP6 AND PUSH0 SWAP1 DUP2 MSTORE PUSH1 0x1 PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x40 DUP1 DUP4 KECCAK256 SWAP4 DUP8 AND DUP4 MSTORE SWAP3 SWAP1 MSTORE KECCAK256 DUP3 SWAP1 SSTORE DUP1 ISZERO PUSH2 0xAA9 JUMPI DUP3 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP5 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH32 0x8C5BE1E5EBEC7D5BD14F71427D1E84F3DD0314C0F7B2291E5B200AC8C7C3B925 DUP5 PUSH1 0x40 MLOAD PUSH2 0xCE7 SWAP2 DUP2 MSTORE PUSH1 0x20 ADD SWAP1 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 LOG3 POP POP POP POP JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP4 AND PUSH2 0xD1F JUMPI DUP1 PUSH1 0x2 PUSH0 DUP3 DUP3 SLOAD PUSH2 0xD14 SWAP2 SWAP1 PUSH2 0x1480 JUMP JUMPDEST SWAP1 SWAP2 SSTORE POP PUSH2 0xD7C SWAP1 POP JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP4 AND PUSH0 SWAP1 DUP2 MSTORE PUSH1 0x20 DUP2 SWAP1 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD DUP2 DUP2 LT ISZERO PUSH2 0xD5E JUMPI DUP4 DUP2 DUP4 PUSH1 0x40 MLOAD PUSH4 0x391434E3 PUSH1 0xE2 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x69A SWAP4 SWAP3 SWAP2 SWAP1 PUSH2 0x1431 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP5 AND PUSH0 SWAP1 DUP2 MSTORE PUSH1 0x20 DUP2 SWAP1 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SWAP1 DUP3 SWAP1 SUB SWAP1 SSTORE JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP3 AND PUSH2 0xD98 JUMPI PUSH1 0x2 DUP1 SLOAD DUP3 SWAP1 SUB SWAP1 SSTORE PUSH2 0xDB6 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP3 AND PUSH0 SWAP1 DUP2 MSTORE PUSH1 0x20 DUP2 SWAP1 MSTORE PUSH1 0x40 SWAP1 KECCAK256 DUP1 SLOAD DUP3 ADD SWAP1 SSTORE JUMPDEST DUP2 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP4 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH32 0xDDF252AD1BE2C89B69C2B068FC378DAA952BA7F163C4A11628F55A4DF523B3EF DUP4 PUSH1 0x40 MLOAD PUSH2 0xDFB SWAP2 DUP2 MSTORE PUSH1 0x20 ADD SWAP1 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 LOG3 POP POP POP JUMP JUMPDEST PUSH2 0xE34 PUSH32 0x0 DUP6 ADDRESS DUP6 PUSH2 0x1028 JUMP JUMPDEST PUSH2 0xE3E DUP4 DUP3 PUSH2 0x105E JUMP JUMPDEST DUP3 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP5 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH32 0xDCBC1C05240F31FF3AD067EF1EE35CE4997762752E3A095284754544F4C709D7 DUP5 DUP5 PUSH1 0x40 MLOAD PUSH2 0xCE7 SWAP3 SWAP2 SWAP1 SWAP2 DUP3 MSTORE PUSH1 0x20 DUP3 ADD MSTORE PUSH1 0x40 ADD SWAP1 JUMP JUMPDEST DUP3 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP6 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND EQ PUSH2 0xEB0 JUMPI PUSH2 0xEB0 DUP4 DUP7 DUP4 PUSH2 0xA46 JUMP JUMPDEST PUSH2 0xEBA DUP4 DUP3 PUSH2 0x1092 JUMP JUMPDEST PUSH2 0xEE5 PUSH32 0x0 DUP6 DUP5 PUSH2 0x10C6 JUMP JUMPDEST DUP3 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP5 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP7 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH32 0xFBDE797D201C681B91056529119E0B02407C7BB96A4A2C75C01FC9667232C8DB DUP6 DUP6 PUSH1 0x40 MLOAD PUSH2 0xF3D 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 POP POP POP JUMP JUMPDEST PUSH0 PUSH1 0x2 DUP3 PUSH1 0x3 DUP2 GT ISZERO PUSH2 0xF61 JUMPI PUSH2 0xF61 PUSH2 0x146C JUMP JUMPDEST PUSH2 0xF6B SWAP2 SWAP1 PUSH2 0x15F7 JUMP JUMPDEST PUSH1 0xFF AND PUSH1 0x1 EQ SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH0 PUSH0 PUSH0 PUSH2 0xF85 DUP7 DUP7 PUSH2 0x10FB JUMP JUMPDEST SWAP2 POP SWAP2 POP DUP2 PUSH0 SUB PUSH2 0xFA9 JUMPI DUP4 DUP2 DUP2 PUSH2 0xF9F JUMPI PUSH2 0xF9F PUSH2 0x15E3 JUMP JUMPDEST DIV SWAP3 POP POP POP PUSH2 0x610 JUMP JUMPDEST DUP2 DUP5 GT PUSH2 0xFC0 JUMPI PUSH2 0xFC0 PUSH1 0x3 DUP6 ISZERO MUL PUSH1 0x11 XOR PUSH2 0x1117 JUMP JUMPDEST PUSH0 DUP5 DUP7 DUP9 MULMOD PUSH0 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 DUP6 DUP5 GT SWAP1 SWAP7 SUB SWAP6 SWAP1 SWAP6 MUL SWAP2 SWAP1 SWAP4 SUB SWAP4 SWAP1 SWAP4 DIV SWAP3 SWAP1 SWAP3 OR MUL SWAP2 POP POP SWAP4 SWAP3 POP POP POP JUMP JUMPDEST PUSH2 0x1036 DUP5 DUP5 DUP5 DUP5 PUSH1 0x1 PUSH2 0x1128 JUMP JUMPDEST PUSH2 0xAA9 JUMPI PUSH1 0x40 MLOAD PUSH4 0x5274AFE7 PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP6 AND PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x24 ADD PUSH2 0x69A JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP3 AND PUSH2 0x1087 JUMPI PUSH1 0x40 MLOAD PUSH4 0xEC442F05 PUSH1 0xE0 SHL DUP2 MSTORE PUSH0 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x24 ADD PUSH2 0x69A JUMP JUMPDEST PUSH2 0x994 PUSH0 DUP4 DUP4 PUSH2 0xCF5 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP3 AND PUSH2 0x10BB JUMPI PUSH1 0x40 MLOAD PUSH4 0x4B637E8F PUSH1 0xE1 SHL DUP2 MSTORE PUSH0 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x24 ADD PUSH2 0x69A JUMP JUMPDEST PUSH2 0x994 DUP3 PUSH0 DUP4 PUSH2 0xCF5 JUMP JUMPDEST PUSH2 0x10D3 DUP4 DUP4 DUP4 PUSH1 0x1 PUSH2 0x1195 JUMP JUMPDEST PUSH2 0xA12 JUMPI PUSH1 0x40 MLOAD PUSH4 0x5274AFE7 PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP5 AND PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x24 ADD PUSH2 0x69A JUMP JUMPDEST PUSH0 DUP1 PUSH0 NOT DUP4 DUP6 MULMOD SWAP4 SWAP1 SWAP3 MUL DUP1 DUP5 LT SWAP4 DUP2 SWAP1 SUB SWAP4 SWAP1 SWAP4 SUB SWAP4 SWAP2 POP POP JUMP JUMPDEST PUSH4 0x4E487B71 PUSH0 MSTORE DUP1 PUSH1 0x20 MSTORE PUSH1 0x24 PUSH1 0x1C REVERT JUMPDEST PUSH1 0x40 MLOAD PUSH4 0x23B872DD PUSH1 0xE0 SHL PUSH0 DUP2 DUP2 MSTORE PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP8 DUP2 AND PUSH1 0x4 MSTORE DUP7 AND PUSH1 0x24 MSTORE PUSH1 0x44 DUP6 SWAP1 MSTORE SWAP2 PUSH1 0x20 DUP4 PUSH1 0x64 DUP2 DUP1 DUP13 GAS CALL SWAP3 POP PUSH1 0x1 PUSH0 MLOAD EQ DUP4 AND PUSH2 0x1184 JUMPI DUP4 DUP4 ISZERO AND ISZERO PUSH2 0x1178 JUMPI RETURNDATASIZE PUSH0 DUP3 RETURNDATACOPY RETURNDATASIZE DUP2 REVERT JUMPDEST PUSH0 DUP9 EXTCODESIZE GT RETURNDATASIZE ISZERO AND DUP4 AND SWAP3 POP JUMPDEST PUSH1 0x40 MSTORE POP PUSH0 PUSH1 0x60 MSTORE SWAP6 SWAP5 POP POP POP POP POP JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH4 0xA9059CBB PUSH1 0xE0 SHL PUSH0 DUP2 DUP2 MSTORE PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP7 AND PUSH1 0x4 MSTORE PUSH1 0x24 DUP6 SWAP1 MSTORE SWAP2 PUSH1 0x20 DUP4 PUSH1 0x44 DUP2 DUP1 DUP12 GAS CALL SWAP3 POP PUSH1 0x1 PUSH0 MLOAD EQ DUP4 AND PUSH2 0x11EB JUMPI DUP4 DUP4 ISZERO AND ISZERO PUSH2 0x11DF JUMPI RETURNDATASIZE PUSH0 DUP3 RETURNDATACOPY RETURNDATASIZE DUP2 REVERT JUMPDEST PUSH0 DUP8 EXTCODESIZE GT RETURNDATASIZE ISZERO AND DUP4 AND SWAP3 POP JUMPDEST PUSH1 0x40 MSTORE POP SWAP5 SWAP4 POP POP POP POP JUMP JUMPDEST PUSH1 0x20 DUP2 MSTORE PUSH0 DUP3 MLOAD DUP1 PUSH1 0x20 DUP5 ADD MSTORE DUP1 PUSH1 0x20 DUP6 ADD PUSH1 0x40 DUP6 ADD MCOPY PUSH0 PUSH1 0x40 DUP3 DUP6 ADD ADD MSTORE PUSH1 0x40 PUSH1 0x1F NOT PUSH1 0x1F DUP4 ADD AND DUP5 ADD ADD SWAP2 POP POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x123C JUMPI PUSH0 PUSH0 REVERT JUMPDEST POP CALLDATALOAD SWAP2 SWAP1 POP JUMP JUMPDEST DUP1 CALLDATALOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 AND DUP2 EQ PUSH2 0x1259 JUMPI PUSH0 PUSH0 REVERT JUMPDEST SWAP2 SWAP1 POP JUMP JUMPDEST PUSH0 PUSH0 PUSH1 0x40 DUP4 DUP6 SUB SLT ISZERO PUSH2 0x126F JUMPI PUSH0 PUSH0 REVERT JUMPDEST PUSH2 0x1278 DUP4 PUSH2 0x1243 JUMP JUMPDEST SWAP5 PUSH1 0x20 SWAP4 SWAP1 SWAP4 ADD CALLDATALOAD SWAP4 POP POP POP JUMP JUMPDEST PUSH0 PUSH0 PUSH0 PUSH1 0x60 DUP5 DUP7 SUB SLT ISZERO PUSH2 0x1298 JUMPI PUSH0 PUSH0 REVERT JUMPDEST PUSH2 0x12A1 DUP5 PUSH2 0x1243 JUMP JUMPDEST SWAP3 POP PUSH2 0x12AF PUSH1 0x20 DUP6 ADD PUSH2 0x1243 JUMP JUMPDEST SWAP3 SWAP6 SWAP3 SWAP5 POP POP POP PUSH1 0x40 SWAP2 SWAP1 SWAP2 ADD CALLDATALOAD SWAP1 JUMP JUMPDEST PUSH0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x12D0 JUMPI PUSH0 PUSH0 REVERT JUMPDEST PUSH2 0x610 DUP3 PUSH2 0x1243 JUMP JUMPDEST PUSH0 PUSH0 PUSH1 0x40 DUP4 DUP6 SUB SLT ISZERO PUSH2 0x12EA JUMPI PUSH0 PUSH0 REVERT JUMPDEST DUP3 CALLDATALOAD SWAP2 POP PUSH2 0x12FA PUSH1 0x20 DUP5 ADD PUSH2 0x1243 JUMP JUMPDEST SWAP1 POP SWAP3 POP SWAP3 SWAP1 POP JUMP JUMPDEST PUSH0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x1313 JUMPI PUSH0 PUSH0 REVERT JUMPDEST DUP2 CALLDATALOAD DUP1 ISZERO ISZERO DUP2 EQ PUSH2 0x610 JUMPI PUSH0 PUSH0 REVERT JUMPDEST PUSH0 PUSH0 PUSH0 PUSH1 0x60 DUP5 DUP7 SUB SLT ISZERO PUSH2 0x1334 JUMPI PUSH0 PUSH0 REVERT JUMPDEST DUP4 CALLDATALOAD SWAP3 POP PUSH2 0x1344 PUSH1 0x20 DUP6 ADD PUSH2 0x1243 JUMP JUMPDEST SWAP2 POP PUSH2 0x1352 PUSH1 0x40 DUP6 ADD PUSH2 0x1243 JUMP JUMPDEST SWAP1 POP SWAP3 POP SWAP3 POP SWAP3 JUMP JUMPDEST PUSH0 PUSH0 PUSH1 0x40 DUP4 DUP6 SUB SLT ISZERO PUSH2 0x136C JUMPI PUSH0 PUSH0 REVERT JUMPDEST DUP3 CALLDATALOAD PUSH1 0x4 DUP2 LT PUSH2 0x1278 JUMPI PUSH0 PUSH0 REVERT JUMPDEST PUSH0 PUSH0 PUSH1 0x40 DUP4 DUP6 SUB SLT ISZERO PUSH2 0x138B JUMPI PUSH0 PUSH0 REVERT JUMPDEST PUSH2 0x1394 DUP4 PUSH2 0x1243 JUMP JUMPDEST SWAP2 POP PUSH2 0x12FA PUSH1 0x20 DUP5 ADD PUSH2 0x1243 JUMP JUMPDEST PUSH0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x13B2 JUMPI PUSH0 PUSH0 REVERT JUMPDEST POP MLOAD SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x1 DUP2 DUP2 SHR SWAP1 DUP3 AND DUP1 PUSH2 0x13CD JUMPI PUSH1 0x7F DUP3 AND SWAP2 POP JUMPDEST PUSH1 0x20 DUP3 LT DUP2 SUB PUSH2 0x13EB JUMPI PUSH4 0x4E487B71 PUSH1 0xE0 SHL PUSH0 MSTORE PUSH1 0x22 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH0 REVERT JUMPDEST POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH4 0x4E487B71 PUSH1 0xE0 SHL PUSH0 MSTORE PUSH1 0x11 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH0 REVERT JUMPDEST PUSH1 0xFF DUP2 DUP2 AND DUP4 DUP3 AND ADD SWAP1 DUP2 GT ISZERO PUSH2 0x5C9 JUMPI PUSH2 0x5C9 PUSH2 0x13F1 JUMP JUMPDEST DUP2 DUP2 SUB DUP2 DUP2 GT ISZERO PUSH2 0x5C9 JUMPI PUSH2 0x5C9 PUSH2 0x13F1 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP4 SWAP1 SWAP4 AND DUP4 MSTORE PUSH1 0x20 DUP4 ADD SWAP2 SWAP1 SWAP2 MSTORE PUSH1 0x40 DUP3 ADD MSTORE PUSH1 0x60 ADD SWAP1 JUMP JUMPDEST PUSH0 PUSH1 0x1 PUSH1 0xFF SHL DUP3 ADD PUSH2 0x1466 JUMPI PUSH2 0x1466 PUSH2 0x13F1 JUMP JUMPDEST POP PUSH0 SUB SWAP1 JUMP JUMPDEST PUSH4 0x4E487B71 PUSH1 0xE0 SHL PUSH0 MSTORE PUSH1 0x21 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH0 REVERT JUMPDEST DUP1 DUP3 ADD DUP1 DUP3 GT ISZERO PUSH2 0x5C9 JUMPI PUSH2 0x5C9 PUSH2 0x13F1 JUMP JUMPDEST PUSH1 0x1 DUP2 JUMPDEST PUSH1 0x1 DUP5 GT ISZERO PUSH2 0x14CE JUMPI DUP1 DUP6 DIV DUP2 GT ISZERO PUSH2 0x14B2 JUMPI PUSH2 0x14B2 PUSH2 0x13F1 JUMP JUMPDEST PUSH1 0x1 DUP5 AND ISZERO PUSH2 0x14C0 JUMPI SWAP1 DUP2 MUL SWAP1 JUMPDEST PUSH1 0x1 SWAP4 SWAP1 SWAP4 SHR SWAP3 DUP1 MUL PUSH2 0x1497 JUMP JUMPDEST SWAP4 POP SWAP4 SWAP2 POP POP JUMP JUMPDEST PUSH0 DUP3 PUSH2 0x14E4 JUMPI POP PUSH1 0x1 PUSH2 0x5C9 JUMP JUMPDEST DUP2 PUSH2 0x14F0 JUMPI POP PUSH0 PUSH2 0x5C9 JUMP JUMPDEST DUP2 PUSH1 0x1 DUP2 EQ PUSH2 0x1506 JUMPI PUSH1 0x2 DUP2 EQ PUSH2 0x1510 JUMPI PUSH2 0x152C JUMP JUMPDEST PUSH1 0x1 SWAP2 POP POP PUSH2 0x5C9 JUMP JUMPDEST PUSH1 0xFF DUP5 GT ISZERO PUSH2 0x1521 JUMPI PUSH2 0x1521 PUSH2 0x13F1 JUMP JUMPDEST POP POP PUSH1 0x1 DUP3 SHL PUSH2 0x5C9 JUMP JUMPDEST POP PUSH1 0x20 DUP4 LT PUSH2 0x133 DUP4 LT AND PUSH1 0x4E DUP5 LT PUSH1 0xB DUP5 LT AND OR ISZERO PUSH2 0x154F JUMPI POP DUP2 DUP2 EXP PUSH2 0x5C9 JUMP JUMPDEST PUSH2 0x155B PUSH0 NOT DUP5 DUP5 PUSH2 0x1493 JUMP JUMPDEST DUP1 PUSH0 NOT DIV DUP3 GT ISZERO PUSH2 0x156E JUMPI PUSH2 0x156E PUSH2 0x13F1 JUMP JUMPDEST MUL SWAP4 SWAP3 POP POP POP JUMP JUMPDEST PUSH0 PUSH2 0x610 PUSH1 0xFF DUP5 AND DUP4 PUSH2 0x14D6 JUMP JUMPDEST PUSH0 PUSH0 DUP6 DUP6 GT ISZERO PUSH2 0x1592 JUMPI PUSH0 PUSH0 REVERT JUMPDEST DUP4 DUP7 GT ISZERO PUSH2 0x159E JUMPI PUSH0 PUSH0 REVERT JUMPDEST POP POP DUP3 ADD SWAP4 SWAP2 SWAP1 SWAP3 SUB SWAP2 POP JUMP JUMPDEST DUP1 CALLDATALOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xE0 SHL SUB NOT DUP2 AND SWAP1 PUSH1 0x4 DUP5 LT ISZERO PUSH2 0x15DC JUMPI PUSH1 0x1 PUSH1 0x1 PUSH1 0xE0 SHL SUB NOT PUSH1 0x4 DUP6 SWAP1 SUB PUSH1 0x3 SHL DUP2 SWAP1 SHL DUP3 AND AND SWAP2 POP JUMPDEST POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH4 0x4E487B71 PUSH1 0xE0 SHL PUSH0 MSTORE PUSH1 0x12 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH0 REVERT JUMPDEST PUSH0 PUSH1 0xFF DUP4 AND DUP1 PUSH2 0x1615 JUMPI PUSH4 0x4E487B71 PUSH1 0xE0 SHL PUSH0 MSTORE PUSH1 0x12 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH0 REVERT JUMPDEST DUP1 PUSH1 0xFF DUP5 AND MOD SWAP2 POP POP SWAP3 SWAP2 POP POP JUMP INVALID LOG2 PUSH5 0x6970667358 0x22 SLT KECCAK256 COINBASE LOG2 CODECOPY PUSH24 0x3B0C4F47712D5277CD163F3256EB28220D6A600A22CF02FD SIGNEXTEND CALL 0xA5 SWAP1 PUSH5 0x736F6C6343 STOP ADDMOD 0x1E STOP CALLER ","sourceMap":"462:2711:10:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;7192:125:34;;;:::i;:::-;;;160:25:87;;;148:2;133:18;7192:125:34;;;;;;;;561:30:10;;;;;;1760:89:32;;;:::i;:::-;;;;;;;:::i;7535:148:34:-;;;;;;:::i;:::-;;:::i;3902:186:32:-;;;;;;:::i;:::-;;:::i;:::-;;;1498:14:87;;1491:22;1473:41;;1461:2;1446:18;3902:186:32;1333:187:87;8672:147:34;;;;;;:::i;:::-;;:::i;2803:97:32:-;2881:12;;2803:97;;4680:244;;;;;;:::i;:::-;;:::i;6877:151:34:-;;;:::i;:::-;;;2076:4:87;2064:17;;;2046:36;;2034:2;2019:18;6877:151:34;1904:184:87;595:34:10;;;;;;7063:94:34;;;-1:-1:-1;;;;;7143:6:34;2257:32:87;2239:51;;2227:2;2212:18;7063:94:34;2093:203:87;524:33:10;;;;;;2105:175;;;;;;:::i;:::-;;:::i;9035:392:34:-;;;;;;:::i;:::-;;:::i;2933:116:32:-;;;;;;:::i;:::-;-1:-1:-1;;;;;3024:18:32;2998:7;3024:18;;;;;;;;;;;;2933:116;2029:72:10;2089:7;;;;2029:72;;1955:70;;;;;;:::i;:::-;2003:7;:17;;-1:-1:-1;;2003:17:10;;;;;;;;;;1955:70;;;9462:380:34;;;;;;:::i;:::-;;:::i;1962:93:32:-;;;:::i;3244:178::-;;;;;;:::i;:::-;;:::i;8494:143:34:-;;;;;;:::i;:::-;;:::i;9877:413::-;;;;;;:::i;:::-;;:::i;10325:405::-;;;;;;:::i;:::-;;:::i;2284:163:10:-;;;;;;:::i;:::-;;:::i;7352:148:34:-;;;;;;:::i;:::-;;:::i;1729:222:10:-;;;;;;:::i;:::-;;:::i;633:32::-;;;;;;2451:179;;;;;;:::i;:::-;;:::i;2809:362::-;;;;;;:::i;:::-;;:::i;2634:171::-;;;;;;:::i;:::-;;:::i;3455:140:32:-;;;;;;:::i;:::-;-1:-1:-1;;;;;3561:18:32;;;3535:7;3561:18;;;:11;:18;;;;;;;;:27;;;;;;;;;;;;;3455:140;670:63:10;;;:::i;7192:125:34:-;7244:7;7143:6;7270:40;;-1:-1:-1;;;7270:40:34;;7304:4;7270:40;;;2239:51:87;-1:-1:-1;;;;;7270:25:34;;;;;;;2212:18:87;;7270:40:34;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;7263:47;;7192:125;:::o;1760:89:32:-;1805:13;1837:5;1830:12;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1760:89;:::o;7535:148:34:-;7605:7;7631:45;7648:6;7656:19;7631:16;:45::i;:::-;7624:52;7535:148;-1:-1:-1;;7535:148:34:o;3902:186:32:-;3975:4;735:10:38;4029:31:32;735:10:38;4045:7:32;4054:5;4029:8;:31::i;:::-;-1:-1:-1;4077:4:32;;3902:186;-1:-1:-1;;;3902:186:32:o;8672:147:34:-;8742:7;8768:44;8785:6;8793:18;8768:16;:44::i;4680:244:32:-;4767:4;735:10:38;4823:37:32;4839:4;735:10:38;4854:5:32;4823:15;:37::i;:::-;4870:26;4880:4;4886:2;4890:5;4870:9;:26::i;:::-;4913:4;4906:11;;;4680:244;;;;;;:::o;6877:151:34:-;6958:5;6982:39;6958:5;6982:19;:39;:::i;2105:175:10:-;2170:7;711:22;731:2;-1:-1:-1;;711:22:10;:::i;:::-;2192:18;;:36;:83;;2257:18;;2192:83;;;-1:-1:-1;;2231:23:10;7718:108:34;9035:392;9110:7;9129:17;9149:20;9160:8;9149:10;:20::i;:::-;9129:40;;9192:9;9183:6;:18;9179:110;;;9250:8;9260:6;9268:9;9224:54;;-1:-1:-1;;;9224:54:34;;;;;;;;;;:::i;:::-;;;;;;;;9179:110;9299:14;9316:22;9331:6;9316:14;:22::i;:::-;9299:39;-1:-1:-1;9348:48:34;735:10:38;9371:8:34;9381:6;9389;9348:8;:48::i;:::-;9414:6;9035:392;-1:-1:-1;;;;9035:392:34:o;9462:380::-;9534:7;9553:17;9573;9581:8;9573:7;:17::i;:::-;9553:37;;9613:9;9604:6;:18;9600:107;;;9668:8;9678:6;9686:9;9645:51;;-1:-1:-1;;;9645:51:34;;;;;;;;;;:::i;9600:107::-;9717:14;9734:19;9746:6;9734:11;:19::i;:::-;9717:36;-1:-1:-1;9763:48:34;735:10:38;9786:8:34;9796:6;9804;9763:8;:48::i;1962:93:32:-;2009:13;2041:7;2034:14;;;;;:::i;3244:178::-;3313:4;735:10:38;3367:27:32;735:10:38;3384:2:32;3388:5;3367:9;:27::i;8494:143:34:-;8560:7;8586:44;8603:6;8611:18;8586:16;:44::i;9877:413::-;9968:7;9987:17;10007:18;10019:5;10007:11;:18::i;:::-;9987:38;;10048:9;10039:6;:18;10035:108;;;10107:5;10114:6;10122:9;10080:52;;-1:-1:-1;;;10080:52:34;;;;;;;;;;:::i;10035:108::-;10153:14;10170:23;10186:6;10170:15;:23::i;:::-;10153:40;-1:-1:-1;10203:56:34;735:10:38;10227:8:34;10237:5;10244:6;10252;10203:9;:56::i;:::-;10277:6;9877:413;-1:-1:-1;;;;;9877:413:34:o;10325:405::-;10414:7;10433:17;10453:16;10463:5;10453:9;:16::i;:::-;10433:36;;10492:9;10483:6;:18;10479:106;;;10549:5;10556:6;10564:9;10524:50;;-1:-1:-1;;;10524:50:34;;;;;;;;;;:::i;10479:106::-;10595:14;10612:21;10626:6;10612:13;:21::i;:::-;10595:38;-1:-1:-1;10643:56:34;735:10:38;10667:8:34;10677:5;10684:6;10692;10643:9;:56::i;2284:163:10:-;2346:7;711:22;731:2;-1:-1:-1;;711:22:10;:::i;:::-;2368:15;;:33;:74;;2427:15;;2368:74;;7352:148:34;7422:7;7448:45;7465:6;7473:19;7448:16;:45::i;1729:222:10:-;1797:1;1788:6;:10;1784:163;;;1808:55;;-1:-1:-1;;;1808:55:10;;1840:4;1808:55;;;5819:51:87;5886:18;;;5879:34;;;-1:-1:-1;;;;;7143:6:34;1808:23:10;;;;5792:18:87;;1808:55:10;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1729:222;:::o;1784:163::-;7143:6:34;-1:-1:-1;;;;;1884:23:10;;1916:4;1931:7;1932:6;1931:7;:::i;:::-;1884:56;;-1:-1:-1;;;;;;1884:56:10;;;;;;;-1:-1:-1;;;;;5837:32:87;;;1884:56:10;;;5819:51:87;5886:18;;;5879:34;5792:18;;1884:56:10;5645:274:87;2451:179:10;2517:7;711:22;731:2;-1:-1:-1;;711:22:10;:::i;:::-;2539:19;;:37;:86;;2606:19;;2539:86;;;2579:24;2597:5;2579:17;:24::i;2809:362::-;2900:22;2890:6;:32;;;;;;;;:::i;:::-;;2886:67;;2924:18;:29;;;2886:67;2973:19;2963:6;:29;;;;;;;;:::i;:::-;;2959:61;;2994:15;:26;;;2959:61;3040:23;3030:6;:33;;;;;;;;:::i;:::-;;3026:69;;3065:19;:30;;;3026:69;3115:21;3105:6;:31;;;;;;;;:::i;:::-;;3101:65;;3138:17;:28;;;3101:65;2809:362;;:::o;2634:171::-;2698:7;711:22;731:2;-1:-1:-1;;711:22:10;:::i;:::-;2720:17;;:35;:80;;2783:17;;2720:80;;;2758:22;2774:5;2758:15;:22::i;670:63::-;711:22;731:2;-1:-1:-1;;711:22:10;:::i;:::-;670:63;:::o;11191:213:34:-;11288:7;11314:83;11328:13;:11;:13::i;:::-;:17;;11344:1;11328:17;:::i;:::-;11363:23;13365:5;11363:2;:23;:::i;:::-;2881:12:32;;11347:39:34;;;;:::i;:::-;11314:6;;:83;11388:8;11314:13;:83::i;8630:128:32:-;8714:37;8723:5;8730:7;8739:5;8746:4;8714:8;:37::i;:::-;8630:128;;;:::o;10854:213:34:-;10951:7;10977:83;11007:23;10951:7;11007:2;:23;:::i;:::-;2881:12:32;;10991:39:34;;;;:::i;:::-;11032:13;:11;:13::i;:::-;:17;;11048:1;11032:17;:::i;10321:476:32:-;-1:-1:-1;;;;;3561:18:32;;;10420:24;3561:18;;;:11;:18;;;;;;;;:27;;;;;;;;;;-1:-1:-1;;10486:36:32;;10482:309;;;10561:5;10542:16;:24;10538:130;;;10620:7;10629:16;10647:5;10593:60;;-1:-1:-1;;;10593:60:32;;;;;;;;;;:::i;10538:130::-;10709:57;10718:5;10725:7;10753:5;10734:16;:24;10760:5;10709:8;:57::i;:::-;10410:387;10321:476;;;:::o;5297:300::-;-1:-1:-1;;;;;5380:18:32;;5376:86;;5421:30;;-1:-1:-1;;;5421:30:32;;5448:1;5421:30;;;2239:51:87;2212:18;;5421:30:32;2093:203:87;5376:86:32;-1:-1:-1;;;;;5475:16:32;;5471:86;;5514:32;;-1:-1:-1;;;5514:32:32;;5543:1;5514:32;;;2239:51:87;2212:18;;5514:32:32;2093:203:87;5471:86:32;5566:24;5574:4;5580:2;5584:5;5566:7;:24::i;1180:198:10:-;891:7;;;;890:8;921:13;932:1;891:7;921:8;891:7;921:13;:::i;:::-;914:21;;;:::i;:::-;882:55;;;;;-1:-1:-1;;;882:55:10;;-1:-1:-1;;;;;;8600:33:87;;;882:55:10;;;8582:52:87;8555:18;;882:55:10;8438:202:87;882:55:10;;1325:48:::1;1340:6;1348:8;1358:6;1366;1325:14;:48::i;1382:226::-:0;891:7;;;;890:8;921:13;932:1;891:7;921:8;891:7;921:13;:::i;:::-;914:21;;;:::i;:::-;882:55;;;;;-1:-1:-1;;;882:55:10;;-1:-1:-1;;;;;;8600:33:87;;;882:55:10;;;8582:52:87;8555:18;;882:55:10;8438:202:87;882:55:10;;1547:56:::1;1563:6;1571:8;1581:5;1588:6;1596;1547:15;:56::i;8001:129:34:-:0;8066:7;8092:31;8106:16;8116:5;8106:9;:16::i;8165:112::-;-1:-1:-1;;;;;3024:18:32;;8228:7:34;3024:18:32;;;;;;;;;;;8254:16:34;2933:116:32;11070:238:47;11171:7;11225:76;11241:26;11258:8;11241:16;:26::i;:::-;:59;;;;;11299:1;11284:11;11271:25;;;;;:::i;:::-;11281:1;11278;11271:25;:29;11241:59;34914:9:48;34907:17;;34795:145;11225:76:47;11197:25;11204:1;11207;11210:11;11197:6;:25::i;:::-;:104;;;;:::i;9607:432:32:-;-1:-1:-1;;;;;9719:19:32;;9715:89;;9761:32;;-1:-1:-1;;;9761:32:32;;9790:1;9761:32;;;2239:51:87;2212:18;;9761:32:32;2093:203:87;9715:89:32;-1:-1:-1;;;;;9817:21:32;;9813:90;;9861:31;;-1:-1:-1;;;9861:31:32;;9889:1;9861:31;;;2239:51:87;2212:18;;9861:31:32;2093:203:87;9813:90:32;-1:-1:-1;;;;;9912:18:32;;;;;;;:11;:18;;;;;;;;:27;;;;;;;;;:35;;;9957:76;;;;10007:7;-1:-1:-1;;;;;9991:31:32;10000:5;-1:-1:-1;;;;;9991:31:32;;10016:5;9991:31;;;;160:25:87;;148:2;133:18;;14:177;9991:31:32;;;;;;;;9607:432;;;;:::o;5912:1107::-;-1:-1:-1;;;;;6001:18:32;;5997:540;;6153:5;6137:12;;:21;;;;;;;:::i;:::-;;;;-1:-1:-1;5997:540:32;;-1:-1:-1;5997:540:32;;-1:-1:-1;;;;;6211:15:32;;6189:19;6211:15;;;;;;;;;;;6244:19;;;6240:115;;;6315:4;6321:11;6334:5;6290:50;;-1:-1:-1;;;6290:50:32;;;;;;;;;;:::i;6240:115::-;-1:-1:-1;;;;;6475:15:32;;:9;:15;;;;;;;;;;6493:19;;;;6475:37;;5997:540;-1:-1:-1;;;;;6551:16:32;;6547:425;;6714:12;:21;;;;;;;6547:425;;;-1:-1:-1;;;;;6925:13:32;;:9;:13;;;;;;;;;;:22;;;;;;6547:425;7002:2;-1:-1:-1;;;;;6987:25:32;6996:4;-1:-1:-1;;;;;6987:25:32;;7006:5;6987:25;;;;160::87;;148:2;133:18;;14:177;6987:25:32;;;;;;;;5912:1107;;;:::o;11468:841:34:-;12138:74;7143:6;12182;12198:4;12205:6;12138:26;:74::i;:::-;12222:23;12228:8;12238:6;12222:5;:23::i;:::-;12277:8;-1:-1:-1;;;;;12261:41:34;12269:6;-1:-1:-1;;;;;12261:41:34;;12287:6;12295;12261:41;;;;;;8951:25:87;;;9007:2;8992:18;;8985:34;8939:2;8924:18;;8777:248;12376:925:34;12563:5;-1:-1:-1;;;;;12553:15:34;:6;-1:-1:-1;;;;;12553:15:34;;12549:84;;12584:38;12600:5;12607:6;12615;12584:15;:38::i;:::-;13142:20;13148:5;13155:6;13142:5;:20::i;:::-;13172:57;7143:6;13212:8;13222:6;13172:22;:57::i;:::-;13272:5;-1:-1:-1;;;;;13245:49:34;13262:8;-1:-1:-1;;;;;13245:49:34;13254:6;-1:-1:-1;;;;;13245:49:34;;13279:6;13287;13245:49;;;;;;8951:25:87;;;9007:2;8992:18;;8985:34;8939:2;8924:18;;8777:248;13245:49:34;;;;;;;;12376:925;;;;;:::o;32036:122:47:-;32104:4;32145:1;32133:8;32127:15;;;;;;;;:::i;:::-;:19;;;;:::i;:::-;:24;;32150:1;32127:24;32120:31;;32036:122;;;:::o;7258:3683::-;7340:14;7391:12;7405:11;7420:12;7427:1;7430;7420:6;:12::i;:::-;7390:42;;;;7514:4;7522:1;7514:9;7510:365;;7849:11;7843:3;:17;;;;;:::i;:::-;;7836:24;;;;;;7510:365;8000:4;7985:11;:19;7981:142;;8024:84;5328:5;8044:16;;5327:36;940:4:43;5322:42:47;8024:11;:84::i;:::-;8375:17;8526:11;8523:1;8520;8513:25;8918:12;8948:15;;;8933:31;;9083:22;;;;;9816:1;9797;:15;;9796:21;;10049;;;10045:25;;10034:36;10119:21;;;10115:25;;10104:36;10191:21;;;10187:25;;10176:36;10262:21;;;10258:25;;10247:36;10335:21;;;10331:25;;10320:36;10409:21;;;10405:25;;;10394:36;9325:12;;;;9321:23;;;9346:1;9317:31;8638:18;;;8628:29;;;9432:11;;;;8681:19;;;;9176:14;;;;9425:18;;;;10884:13;;-1:-1:-1;;7258:3683:47;;;;;:::o;1662:232:36:-;1767:47;1785:5;1792:4;1798:2;1802:5;1809:4;1767:17;:47::i;:::-;1762:126;;1837:40;;-1:-1:-1;;;1837:40:36;;-1:-1:-1;;;;;2257:32:87;;1837:40:36;;;2239:51:87;2212:18;;1837:40:36;2093:203:87;7362:208:32;-1:-1:-1;;;;;7432:21:32;;7428:91;;7476:32;;-1:-1:-1;;;7476:32:32;;7505:1;7476:32;;;2239:51:87;2212:18;;7476:32:32;2093:203:87;7428:91:32;7528:35;7544:1;7548:7;7557:5;7528:7;:35::i;7888:206::-;-1:-1:-1;;;;;7958:21:32;;7954:89;;8002:30;;-1:-1:-1;;;8002:30:32;;8029:1;8002:30;;;2239:51:87;2212:18;;8002:30:32;2093:203:87;7954:89:32;8052:35;8060:7;8077:1;8081:5;8052:7;:35::i;1219:204:36:-;1306:37;1320:5;1327:2;1331:5;1338:4;1306:13;:37::i;:::-;1301:116;;1366:40;;-1:-1:-1;;;1366:40:36;;-1:-1:-1;;;;;2257:32:87;;1366:40:36;;;2239:51:87;2212:18;;1366:40:36;2093:203:87;1027:550:47;1088:12;;-1:-1:-1;;1471:1:47;1468;1461:20;1501:9;;;;1549:11;;;1535:12;;;;1531:30;;;;;1027:550;-1:-1:-1;;1027:550:47:o;1776:194:43:-;1881:10;1875:4;1868:24;1918:4;1912;1905:18;1949:4;1943;1936:18;10165:1393:36;10460:4;10454:11;-1:-1:-1;;;10323:12:36;10478:22;;;-1:-1:-1;;;;;10526:26:36;;;10520:4;10513:40;10579:24;;10573:4;10566:38;10624:4;10617:19;;;10323:12;10700:4;10323:12;10688:4;10323:12;;10672:5;10665;10660:45;10649:56;;10917:1;10910:4;10904:11;10901:18;10892:7;10888:32;10878:606;;11049:6;11039:7;11032:15;11028:28;11025:165;;;11105:16;11099:4;11094:3;11079:43;11155:16;11150:3;11143:29;11025:165;11466:1;11458:5;11446:18;11443:25;11424:16;11417:24;11413:56;11404:7;11400:70;11389:81;;10878:606;11504:4;11497:17;-1:-1:-1;11540:1:36;11534:4;11527:15;10165:1393;;-1:-1:-1;;;;;10165:1393:36:o;8373:1244::-;8600:4;8594:11;-1:-1:-1;;;8467:12:36;8618:22;;;-1:-1:-1;;;;;8666:24:36;;8660:4;8653:38;8711:4;8704:19;;;8467:12;8787:4;8467:12;8775:4;8467:12;;8759:5;8752;8747:45;8736:56;;9004:1;8997:4;8991:11;8988:18;8979:7;8975:32;8965:606;;9136:6;9126:7;9119:15;9115:28;9112:165;;;9192:16;9186:4;9181:3;9166:43;9242:16;9237:3;9230:29;9112:165;9553:1;9545:5;9533:18;9530:25;9511:16;9504:24;9500:56;9491:7;9487:70;9476:81;;8965:606;9591:4;9584:17;-1:-1:-1;8373:1244:36;;-1:-1:-1;;;;8373:1244:36:o;196:418:87:-;345:2;334:9;327:21;308:4;377:6;371:13;420:6;415:2;404:9;400:18;393:34;479:6;474:2;466:6;462:15;457:2;446:9;442:18;436:50;535:1;530:2;521:6;510:9;506:22;502:31;495:42;605:2;598;594:7;589:2;581:6;577:15;573:29;562:9;558:45;554:54;546:62;;;196:418;;;;:::o;619:226::-;678:6;731:2;719:9;710:7;706:23;702:32;699:52;;;747:1;744;737:12;699:52;-1:-1:-1;792:23:87;;619:226;-1:-1:-1;619:226:87:o;850:173::-;918:20;;-1:-1:-1;;;;;967:31:87;;957:42;;947:70;;1013:1;1010;1003:12;947:70;850:173;;;:::o;1028:300::-;1096:6;1104;1157:2;1145:9;1136:7;1132:23;1128:32;1125:52;;;1173:1;1170;1163:12;1125:52;1196:29;1215:9;1196:29;:::i;:::-;1186:39;1294:2;1279:18;;;;1266:32;;-1:-1:-1;;;1028:300:87:o;1525:374::-;1602:6;1610;1618;1671:2;1659:9;1650:7;1646:23;1642:32;1639:52;;;1687:1;1684;1677:12;1639:52;1710:29;1729:9;1710:29;:::i;:::-;1700:39;;1758:38;1792:2;1781:9;1777:18;1758:38;:::i;:::-;1525:374;;1748:48;;-1:-1:-1;;;1865:2:87;1850:18;;;;1837:32;;1525:374::o;2301:186::-;2360:6;2413:2;2401:9;2392:7;2388:23;2384:32;2381:52;;;2429:1;2426;2419:12;2381:52;2452:29;2471:9;2452:29;:::i;2492:300::-;2560:6;2568;2621:2;2609:9;2600:7;2596:23;2592:32;2589:52;;;2637:1;2634;2627:12;2589:52;2682:23;;;-1:-1:-1;2748:38:87;2782:2;2767:18;;2748:38;:::i;:::-;2738:48;;2492:300;;;;;:::o;2797:273::-;2853:6;2906:2;2894:9;2885:7;2881:23;2877:32;2874:52;;;2922:1;2919;2912:12;2874:52;2961:9;2948:23;3014:5;3007:13;3000:21;2993:5;2990:32;2980:60;;3036:1;3033;3026:12;3075:374;3152:6;3160;3168;3221:2;3209:9;3200:7;3196:23;3192:32;3189:52;;;3237:1;3234;3227:12;3189:52;3282:23;;;-1:-1:-1;3348:38:87;3382:2;3367:18;;3348:38;:::i;:::-;3338:48;;3405:38;3439:2;3428:9;3424:18;3405:38;:::i;:::-;3395:48;;3075:374;;;;;:::o;3638:395::-;3725:6;3733;3786:2;3774:9;3765:7;3761:23;3757:32;3754:52;;;3802:1;3799;3792:12;3754:52;3841:9;3828:23;3880:1;3873:5;3870:12;3860:40;;3896:1;3893;3886:12;4038:260;4106:6;4114;4167:2;4155:9;4146:7;4142:23;4138:32;4135:52;;;4183:1;4180;4173:12;4135:52;4206:29;4225:9;4206:29;:::i;:::-;4196:39;;4254:38;4288:2;4277:9;4273:18;4254:38;:::i;4303:184::-;4373:6;4426:2;4414:9;4405:7;4401:23;4397:32;4394:52;;;4442:1;4439;4432:12;4394:52;-1:-1:-1;4465:16:87;;4303:184;-1:-1:-1;4303:184:87:o;4492:380::-;4571:1;4567:12;;;;4614;;;4635:61;;4689:4;4681:6;4677:17;4667:27;;4635:61;4742:2;4734:6;4731:14;4711:18;4708:38;4705:161;;4788:10;4783:3;4779:20;4776:1;4769:31;4823:4;4820:1;4813:15;4851:4;4848:1;4841:15;4705:161;;4492:380;;;:::o;4877:127::-;4938:10;4933:3;4929:20;4926:1;4919:31;4969:4;4966:1;4959:15;4993:4;4990:1;4983:15;5009:148;5097:4;5076:12;;;5090;;;5072:31;;5115:13;;5112:39;;;5131:18;;:::i;5162:128::-;5229:9;;;5250:11;;;5247:37;;;5264:18;;:::i;5295:345::-;-1:-1:-1;;;;;5515:32:87;;;;5497:51;;5579:2;5564:18;;5557:34;;;;5622:2;5607:18;;5600:34;5485:2;5470:18;;5295:345::o;5924:136::-;5959:3;-1:-1:-1;;;5980:22:87;;5977:48;;6005:18;;:::i;:::-;-1:-1:-1;6045:1:87;6041:13;;5924:136::o;6065:127::-;6126:10;6121:3;6117:20;6114:1;6107:31;6157:4;6154:1;6147:15;6181:4;6178:1;6171:15;6197:125;6262:9;;;6283:10;;;6280:36;;;6296:18;;:::i;6327:375::-;6415:1;6433:5;6447:249;6468:1;6458:8;6455:15;6447:249;;;6518:4;6513:3;6509:14;6503:4;6500:24;6497:50;;;6527:18;;:::i;:::-;6577:1;6567:8;6563:16;6560:49;;;6591:16;;;;6560:49;6674:1;6670:16;;;;;6630:15;;6447:249;;;6327:375;;;;;;:::o;6707:902::-;6756:5;6786:8;6776:80;;-1:-1:-1;6827:1:87;6841:5;;6776:80;6875:4;6865:76;;-1:-1:-1;6912:1:87;6926:5;;6865:76;6957:4;6975:1;6970:59;;;;7043:1;7038:174;;;;6950:262;;6970:59;7000:1;6991:10;;7014:5;;;7038:174;7075:3;7065:8;7062:17;7059:43;;;7082:18;;:::i;:::-;-1:-1:-1;;7138:1:87;7124:16;;7197:5;;6950:262;;7296:2;7286:8;7283:16;7277:3;7271:4;7268:13;7264:36;7258:2;7248:8;7245:16;7240:2;7234:4;7231:12;7227:35;7224:77;7221:203;;;-1:-1:-1;7333:19:87;;;7409:5;;7221:203;7456:42;-1:-1:-1;;7481:8:87;7475:4;7456:42;:::i;:::-;7534:6;7530:1;7526:6;7522:19;7513:7;7510:32;7507:58;;;7545:18;;:::i;:::-;7583:20;;6707:902;-1:-1:-1;;;6707:902:87:o;7614:140::-;7672:5;7701:47;7742:4;7732:8;7728:19;7722:4;7701:47;:::i;7759:331::-;7864:9;7875;7917:8;7905:10;7902:24;7899:44;;;7939:1;7936;7929:12;7899:44;7968:6;7958:8;7955:20;7952:40;;;7988:1;7985;7978:12;7952:40;-1:-1:-1;;8014:23:87;;;8059:25;;;;;-1:-1:-1;7759:331:87:o;8095:338::-;8215:19;;-1:-1:-1;;;;;;8252:29:87;;;8301:1;8293:10;;8290:137;;;-1:-1:-1;;;;;;8362:1:87;8358:11;;;8355:1;8351:19;8347:46;;;8339:55;;8335:82;;-1:-1:-1;8290:137:87;;8095:338;;;;:::o;8645:127::-;8706:10;8701:3;8697:20;8694:1;8687:31;8737:4;8734:1;8727:15;8761:4;8758:1;8751:15;9030:254;9060:1;9094:4;9091:1;9087:12;9118:3;9108:134;;9164:10;9159:3;9155:20;9152:1;9145:31;9199:4;9196:1;9189:15;9227:4;9224:1;9217:15;9108:134;9274:3;9267:4;9264:1;9260:12;9256:22;9251:27;;;9030:254;;;;:::o"},"methodIdentifiers":{"OVERRIDE_UNSET()":"f3c0b892","allowance(address,address)":"dd62ed3e","approve(address,uint256)":"095ea7b3","asset()":"38d52e0f","balanceOf(address)":"70a08231","broken()":"7fb1ad62","convertToAssets(uint256)":"07a2d13a","convertToShares(uint256)":"c6e6f592","decimals()":"313ce567","deposit(uint256,address)":"6e553f65","discreteEarning(int256)":"c7361ed2","maxDeposit(address)":"402d267d","maxMint(address)":"c63d75b6","maxRedeem(address)":"d905777e","maxWithdraw(address)":"ce96cb77","mint(uint256,address)":"94bf804d","name()":"06fdde03","overrideMaxDeposit()":"39d88aff","overrideMaxMint()":"034548cd","overrideMaxRedeem()":"cc7fcc60","overrideMaxWithdraw()":"38359018","previewDeposit(uint256)":"ef8b30f7","previewMint(uint256)":"b3d7f6b9","previewRedeem(uint256)":"4cdad506","previewWithdraw(uint256)":"0a28a477","redeem(uint256,address,address)":"ba087652","setBroken(bool)":"86de9e4f","setOverride(uint8,uint256)":"d6dd0234","symbol()":"95d89b41","totalAssets()":"01e1d114","totalSupply()":"18160ddd","transfer(address,uint256)":"a9059cbb","transferFrom(address,address,uint256)":"23b872dd","withdraw(uint256,address,address)":"b460af94"}},"metadata":"{\"compiler\":{\"version\":\"0.8.30+commit.73712a01\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"inputs\":[{\"internalType\":\"string\",\"name\":\"name_\",\"type\":\"string\"},{\"internalType\":\"string\",\"name\":\"symbol_\",\"type\":\"string\"},{\"internalType\":\"contract IERC20Metadata\",\"name\":\"asset_\",\"type\":\"address\"}],\"stateMutability\":\"nonpayable\",\"type\":\"constructor\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"spender\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"allowance\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"needed\",\"type\":\"uint256\"}],\"name\":\"ERC20InsufficientAllowance\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"sender\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"balance\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"needed\",\"type\":\"uint256\"}],\"name\":\"ERC20InsufficientBalance\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"approver\",\"type\":\"address\"}],\"name\":\"ERC20InvalidApprover\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"receiver\",\"type\":\"address\"}],\"name\":\"ERC20InvalidReceiver\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"sender\",\"type\":\"address\"}],\"name\":\"ERC20InvalidSender\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"spender\",\"type\":\"address\"}],\"name\":\"ERC20InvalidSpender\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"receiver\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"assets\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"max\",\"type\":\"uint256\"}],\"name\":\"ERC4626ExceededMaxDeposit\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"receiver\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"shares\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"max\",\"type\":\"uint256\"}],\"name\":\"ERC4626ExceededMaxMint\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"shares\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"max\",\"type\":\"uint256\"}],\"name\":\"ERC4626ExceededMaxRedeem\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"assets\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"max\",\"type\":\"uint256\"}],\"name\":\"ERC4626ExceededMaxWithdraw\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"token\",\"type\":\"address\"}],\"name\":\"SafeERC20FailedOperation\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"bytes4\",\"name\":\"selector\",\"type\":\"bytes4\"}],\"name\":\"VaultIsBroken\",\"type\":\"error\"},{\"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\":\"sender\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"assets\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"shares\",\"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\":\"sender\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"receiver\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"assets\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"shares\",\"type\":\"uint256\"}],\"name\":\"Withdraw\",\"type\":\"event\"},{\"inputs\":[],\"name\":\"OVERRIDE_UNSET\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"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\":\"value\",\"type\":\"uint256\"}],\"name\":\"approve\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"asset\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"}],\"name\":\"balanceOf\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"broken\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"shares\",\"type\":\"uint256\"}],\"name\":\"convertToAssets\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"assets\",\"type\":\"uint256\"}],\"name\":\"convertToShares\",\"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\":\"assets\",\"type\":\"uint256\"},{\"internalType\":\"address\",\"name\":\"receiver\",\"type\":\"address\"}],\"name\":\"deposit\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"int256\",\"name\":\"assets\",\"type\":\"int256\"}],\"name\":\"discreteEarning\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"}],\"name\":\"maxDeposit\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"}],\"name\":\"maxMint\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"}],\"name\":\"maxRedeem\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"}],\"name\":\"maxWithdraw\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"shares\",\"type\":\"uint256\"},{\"internalType\":\"address\",\"name\":\"receiver\",\"type\":\"address\"}],\"name\":\"mint\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"name\",\"outputs\":[{\"internalType\":\"string\",\"name\":\"\",\"type\":\"string\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"overrideMaxDeposit\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"overrideMaxMint\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"overrideMaxRedeem\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"overrideMaxWithdraw\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"assets\",\"type\":\"uint256\"}],\"name\":\"previewDeposit\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"shares\",\"type\":\"uint256\"}],\"name\":\"previewMint\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"shares\",\"type\":\"uint256\"}],\"name\":\"previewRedeem\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"assets\",\"type\":\"uint256\"}],\"name\":\"previewWithdraw\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"shares\",\"type\":\"uint256\"},{\"internalType\":\"address\",\"name\":\"receiver\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"}],\"name\":\"redeem\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bool\",\"name\":\"broken_\",\"type\":\"bool\"}],\"name\":\"setBroken\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"enum TestERC4626.OverrideOption\",\"name\":\"option\",\"type\":\"uint8\"},{\"internalType\":\"uint256\",\"name\":\"newValue\",\"type\":\"uint256\"}],\"name\":\"setOverride\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"symbol\",\"outputs\":[{\"internalType\":\"string\",\"name\":\"\",\"type\":\"string\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"totalAssets\",\"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\":\"to\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"value\",\"type\":\"uint256\"}],\"name\":\"transfer\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"from\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"value\",\"type\":\"uint256\"}],\"name\":\"transferFrom\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"assets\",\"type\":\"uint256\"},{\"internalType\":\"address\",\"name\":\"receiver\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"}],\"name\":\"withdraw\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"}],\"devdoc\":{\"errors\":{\"ERC20InsufficientAllowance(address,uint256,uint256)\":[{\"details\":\"Indicates a failure with the `spender`\\u2019s `allowance`. Used in transfers.\",\"params\":{\"allowance\":\"Amount of tokens a `spender` is allowed to operate with.\",\"needed\":\"Minimum amount required to perform a transfer.\",\"spender\":\"Address that may be allowed to operate on tokens without being their owner.\"}}],\"ERC20InsufficientBalance(address,uint256,uint256)\":[{\"details\":\"Indicates an error related to the current `balance` of a `sender`. Used in transfers.\",\"params\":{\"balance\":\"Current balance for the interacting account.\",\"needed\":\"Minimum amount required to perform a transfer.\",\"sender\":\"Address whose tokens are being transferred.\"}}],\"ERC20InvalidApprover(address)\":[{\"details\":\"Indicates a failure with the `approver` of a token to be approved. Used in approvals.\",\"params\":{\"approver\":\"Address initiating an approval operation.\"}}],\"ERC20InvalidReceiver(address)\":[{\"details\":\"Indicates a failure with the token `receiver`. Used in transfers.\",\"params\":{\"receiver\":\"Address to which tokens are being transferred.\"}}],\"ERC20InvalidSender(address)\":[{\"details\":\"Indicates a failure with the token `sender`. Used in transfers.\",\"params\":{\"sender\":\"Address whose tokens are being transferred.\"}}],\"ERC20InvalidSpender(address)\":[{\"details\":\"Indicates a failure with the `spender` to be approved. Used in approvals.\",\"params\":{\"spender\":\"Address that may be allowed to operate on tokens without being their owner.\"}}],\"ERC4626ExceededMaxDeposit(address,uint256,uint256)\":[{\"details\":\"Attempted to deposit more assets than the max amount for `receiver`.\"}],\"ERC4626ExceededMaxMint(address,uint256,uint256)\":[{\"details\":\"Attempted to mint more shares than the max amount for `receiver`.\"}],\"ERC4626ExceededMaxRedeem(address,uint256,uint256)\":[{\"details\":\"Attempted to redeem more shares than the max amount for `receiver`.\"}],\"ERC4626ExceededMaxWithdraw(address,uint256,uint256)\":[{\"details\":\"Attempted to withdraw more assets than the max amount for `receiver`.\"}],\"SafeERC20FailedOperation(address)\":[{\"details\":\"An operation with an ERC-20 token failed.\"}]},\"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\":\"See {IERC20-approve}. NOTE: If `value` is the maximum `uint256`, the allowance is not updated on `transferFrom`. This is semantically equivalent to an infinite approval. Requirements: - `spender` cannot be the zero address.\"},\"asset()\":{\"details\":\"Returns the address of the underlying token used for the Vault for accounting, depositing, and withdrawing. - MUST be an ERC-20 token contract. - MUST NOT revert.\"},\"balanceOf(address)\":{\"details\":\"Returns the value of tokens owned by `account`.\"},\"convertToAssets(uint256)\":{\"details\":\"Returns the amount of assets that the Vault would exchange for the amount of shares provided, in an ideal scenario where all the conditions are met. - MUST NOT be inclusive of any fees that are charged against assets in the Vault. - MUST NOT show any variations depending on the caller. - MUST NOT reflect slippage or other on-chain conditions, when performing the actual exchange. - MUST NOT revert. NOTE: This calculation MAY NOT reflect the \\u201cper-user\\u201d price-per-share, and instead should reflect the \\u201caverage-user\\u2019s\\u201d price-per-share, meaning what the average user should expect to see when exchanging to and from.\"},\"convertToShares(uint256)\":{\"details\":\"Returns the amount of shares that the Vault would exchange for the amount of assets provided, in an ideal scenario where all the conditions are met. - MUST NOT be inclusive of any fees that are charged against assets in the Vault. - MUST NOT show any variations depending on the caller. - MUST NOT reflect slippage or other on-chain conditions, when performing the actual exchange. - MUST NOT revert. NOTE: This calculation MAY NOT reflect the \\u201cper-user\\u201d price-per-share, and instead should reflect the \\u201caverage-user\\u2019s\\u201d price-per-share, meaning what the average user should expect to see when exchanging to and from.\"},\"decimals()\":{\"details\":\"Decimals are computed by adding the decimal offset on top of the underlying asset's decimals. This \\\"original\\\" value is cached during construction of the vault contract. If this read operation fails (e.g., the asset has not been created yet), a default of 18 is used to represent the underlying asset's decimals. See {IERC20Metadata-decimals}.\"},\"deposit(uint256,address)\":{\"details\":\"Deposit `assets` underlying tokens and send the corresponding number of vault shares (`shares`) to `receiver`. - MUST emit the Deposit event. - MAY support an additional flow in which the underlying tokens are owned by the Vault contract before the   deposit execution, and are accounted for during deposit. - MUST revert if all of assets cannot be deposited (due to deposit limit being reached, slippage, the user not   approving enough underlying tokens to the Vault contract, etc). NOTE: most implementations will require pre-approval of the Vault with the Vault\\u2019s underlying asset token.\"},\"maxRedeem(address)\":{\"details\":\"Returns the maximum amount of Vault shares that can be redeemed from the owner balance in the Vault, through a redeem call. - MUST return a limited value if owner is subject to some withdrawal limit or timelock. - MUST return balanceOf(owner) if owner is not subject to any withdrawal limit or timelock. - MUST NOT revert.\"},\"maxWithdraw(address)\":{\"details\":\"Returns the maximum amount of the underlying asset that can be withdrawn from the owner balance in the Vault, through a withdraw call. - MUST return a limited value if owner is subject to some withdrawal limit or timelock. - MUST NOT revert.\"},\"mint(uint256,address)\":{\"details\":\"Mints exactly `shares` vault shares to `receiver` in exchange for `assets` underlying tokens. - MUST emit the Deposit event. - MAY support an additional flow in which the underlying tokens are owned by the Vault contract before the mint   execution, and are accounted for during mint. - MUST revert if all of shares cannot be minted (due to deposit limit being reached, slippage, the user not   approving enough underlying tokens to the Vault contract, etc). NOTE: most implementations will require pre-approval of the Vault with the Vault\\u2019s underlying asset token.\"},\"name()\":{\"details\":\"Returns the name of the token.\"},\"previewDeposit(uint256)\":{\"details\":\"Allows an on-chain or off-chain user to simulate the effects of their deposit at the current block, given current on-chain conditions. - MUST return as close to and no more than the exact amount of Vault shares that would be minted in a deposit   call in the same transaction. I.e. deposit should return the same or more shares as previewDeposit if called   in the same transaction. - MUST NOT account for deposit limits like those returned from maxDeposit and should always act as though the   deposit would be accepted, regardless if the user has enough tokens approved, etc. - MUST be inclusive of deposit fees. Integrators should be aware of the existence of deposit fees. - MUST NOT revert. NOTE: any unfavorable discrepancy between convertToShares and previewDeposit SHOULD be considered slippage in share price or some other type of condition, meaning the depositor will lose assets by depositing.\"},\"previewMint(uint256)\":{\"details\":\"Allows an on-chain or off-chain user to simulate the effects of their mint at the current block, given current on-chain conditions. - MUST return as close to and no fewer than the exact amount of assets that would be deposited in a mint call   in the same transaction. I.e. mint should return the same or fewer assets as previewMint if called in the   same transaction. - MUST NOT account for mint limits like those returned from maxMint and should always act as though the mint   would be accepted, regardless if the user has enough tokens approved, etc. - MUST be inclusive of deposit fees. Integrators should be aware of the existence of deposit fees. - MUST NOT revert. NOTE: any unfavorable discrepancy between convertToAssets and previewMint SHOULD be considered slippage in share price or some other type of condition, meaning the depositor will lose assets by minting.\"},\"previewRedeem(uint256)\":{\"details\":\"Allows an on-chain or off-chain user to simulate the effects of their redemption at the current block, given current on-chain conditions. - MUST return as close to and no more than the exact amount of assets that would be withdrawn in a redeem call   in the same transaction. I.e. redeem should return the same or more assets as previewRedeem if called in the   same transaction. - MUST NOT account for redemption limits like those returned from maxRedeem and should always act as though the   redemption would be accepted, regardless if the user has enough shares, etc. - MUST be inclusive of withdrawal fees. Integrators should be aware of the existence of withdrawal fees. - MUST NOT revert. NOTE: any unfavorable discrepancy between convertToAssets and previewRedeem SHOULD be considered slippage in share price or some other type of condition, meaning the depositor will lose assets by redeeming.\"},\"previewWithdraw(uint256)\":{\"details\":\"Allows an on-chain or off-chain user to simulate the effects of their withdrawal at the current block, given current on-chain conditions. - MUST return as close to and no fewer than the exact amount of Vault shares that would be burned in a withdraw   call in the same transaction. I.e. withdraw should return the same or fewer shares as previewWithdraw if   called   in the same transaction. - MUST NOT account for withdrawal limits like those returned from maxWithdraw and should always act as though   the withdrawal would be accepted, regardless if the user has enough shares, etc. - MUST be inclusive of withdrawal fees. Integrators should be aware of the existence of withdrawal fees. - MUST NOT revert. NOTE: any unfavorable discrepancy between convertToShares and previewWithdraw SHOULD be considered slippage in share price or some other type of condition, meaning the depositor will lose assets by depositing.\"},\"redeem(uint256,address,address)\":{\"details\":\"Burns exactly shares from owner and sends assets of underlying tokens to receiver. - MUST emit the Withdraw event. - MAY support an additional flow in which the underlying tokens are owned by the Vault contract before the   redeem execution, and are accounted for during redeem. - MUST revert if all of shares cannot be redeemed (due to withdrawal limit being reached, slippage, the owner   not having enough shares, etc). NOTE: some implementations will require pre-requesting to the Vault before a withdrawal may be performed. Those methods should be performed separately.\"},\"symbol()\":{\"details\":\"Returns the symbol of the token, usually a shorter version of the name.\"},\"totalAssets()\":{\"details\":\"Returns the total amount of the underlying asset that is \\u201cmanaged\\u201d by Vault. - SHOULD include any compounding that occurs from yield. - MUST be inclusive of any fees that are charged against assets in the Vault. - MUST NOT revert.\"},\"totalSupply()\":{\"details\":\"Returns the value of tokens in existence.\"},\"transfer(address,uint256)\":{\"details\":\"See {IERC20-transfer}. Requirements: - `to` cannot be the zero address. - the caller must have a balance of at least `value`.\"},\"transferFrom(address,address,uint256)\":{\"details\":\"See {IERC20-transferFrom}. Skips emitting an {Approval} event indicating an allowance update. This is not required by the ERC. See {xref-ERC20-_approve-address-address-uint256-bool-}[_approve]. NOTE: Does not update the allowance if the current allowance is the maximum `uint256`. Requirements: - `from` and `to` cannot be the zero address. - `from` must have a balance of at least `value`. - the caller must have allowance for ``from``'s tokens of at least `value`.\"},\"withdraw(uint256,address,address)\":{\"details\":\"Burns shares from owner and sends exactly assets of underlying tokens to receiver. - MUST emit the Withdraw event. - MAY support an additional flow in which the underlying tokens are owned by the Vault contract before the   withdraw execution, and are accounted for during withdraw. - MUST revert if all of assets cannot be withdrawn (due to withdrawal limit being reached, slippage, the owner   not having enough shares, etc). Note that some implementations will require pre-requesting to the Vault before a withdrawal may be performed. Those methods should be performed separately.\"}},\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{},\"version\":1}},\"settings\":{\"compilationTarget\":{\"@ensuro/utils/contracts/TestERC4626.sol\":\"TestERC4626\"},\"evmVersion\":\"prague\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"enabled\":true,\"runs\":200},\"remappings\":[]},\"sources\":{\"@ensuro/utils/contracts/TestERC4626.sol\":{\"keccak256\":\"0x688032ec63b79e352f3eb8ceb1a358d9b61ff630a346807b1e9a017de0200150\",\"license\":\"Apache-2.0\",\"urls\":[\"bzz-raw://6d40c7e350166b37b8f5301916939a752ffe296c30f7413b45b9c6b2c4c8e4ce\",\"dweb:/ipfs/QmWRG5CZsU1jeuoryJZP3Sg1cQU8Mu9C5bB7TwhF2M1ZaQ\"]},\"@openzeppelin/contracts/interfaces/IERC1363.sol\":{\"keccak256\":\"0xd5ea07362ab630a6a3dee4285a74cf2377044ca2e4be472755ad64d7c5d4b69d\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://da5e832b40fc5c3145d3781e2e5fa60ac2052c9d08af7e300dc8ab80c4343100\",\"dweb:/ipfs/QmTzf7N5ZUdh5raqtzbM11yexiUoLC9z3Ws632MCuycq1d\"]},\"@openzeppelin/contracts/interfaces/IERC165.sol\":{\"keccak256\":\"0x0afcb7e740d1537b252cb2676f600465ce6938398569f09ba1b9ca240dde2dfc\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://1c299900ac4ec268d4570ecef0d697a3013cd11a6eb74e295ee3fbc945056037\",\"dweb:/ipfs/Qmab9owJoxcA7vJT5XNayCMaUR1qxqj1NDzzisduwaJMcZ\"]},\"@openzeppelin/contracts/interfaces/IERC20.sol\":{\"keccak256\":\"0x1a6221315ce0307746c2c4827c125d821ee796c74a676787762f4778671d4f44\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://1bb2332a7ee26dd0b0de9b7fe266749f54820c99ab6a3bcb6f7e6b751d47ee2d\",\"dweb:/ipfs/QmcRWpaBeCYkhy68PR3B4AgD7asuQk7PwkWxrvJbZcikLF\"]},\"@openzeppelin/contracts/interfaces/IERC4626.sol\":{\"keccak256\":\"0xece5cbf726293ae6be1fbfade2936f052e1b399ed395ba1e221540ab82b62628\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://a9b97e58e90799e681dccbd4a8e469c6ebc2baf11312ad08f14332646123dd4b\",\"dweb:/ipfs/QmdamCQfxcuYinSNd3Et7VNo3oY98XSv4XCUQyq9xfMNUy\"]},\"@openzeppelin/contracts/interfaces/draft-IERC6093.sol\":{\"keccak256\":\"0x1b88b3fb3d85ba5496d7d5f396f83ee1fddcdd6762059ff65992655b67920998\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://89393bb3212da1c0889601b9706a07b39419ddc4d2faab9eaf6e7f9152cf6a1c\",\"dweb:/ipfs/QmcCfzzxv1Bkdz1c1yF4gQCeYb6Us5BJANnzTFqawfd1HL\"]},\"@openzeppelin/contracts/token/ERC20/ERC20.sol\":{\"keccak256\":\"0x669464167428061ee0f8618b73b3ee90aff8405683e7ddde8cd77dadaa1afe29\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://0dda78587a7358b4fdf6b9fca0fde5a5e34930f36d5268a16028627fc0170195\",\"dweb:/ipfs/QmQ1b6cCceDRWNxti9HifsTCzmVP25Haxs1bWugm52vTqH\"]},\"@openzeppelin/contracts/token/ERC20/IERC20.sol\":{\"keccak256\":\"0x74ed01eb66b923d0d0cfe3be84604ac04b76482a55f9dd655e1ef4d367f95bc2\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://5282825a626cfe924e504274b864a652b0023591fa66f06a067b25b51ba9b303\",\"dweb:/ipfs/QmeCfPykghhMc81VJTrHTC7sF6CRvaA1FXVq2pJhwYp1dV\"]},\"@openzeppelin/contracts/token/ERC20/extensions/ERC4626.sol\":{\"keccak256\":\"0x8a6a0045f0bb52251a9a5d8bb5f4156f4eb3ba8521b1fca6a304befaab3e7d23\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://ebd5125436dbb18ba3646cbdb4a8385a9e2bf28abc9d8178a9e7f31cca65f8b8\",\"dweb:/ipfs/QmPioMpycRKdAetJNYYfWCw36rQuyxNqhgHDFGRVLaPKnT\"]},\"@openzeppelin/contracts/token/ERC20/extensions/IERC20Metadata.sol\":{\"keccak256\":\"0xd6fa4088198f04eef10c5bce8a2f4d60554b7ec4b987f684393c01bf79b94d9f\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://f95ee0bbd4dd3ac730d066ba3e785ded4565e890dbec2fa7d3b9fe3bad9d0d6e\",\"dweb:/ipfs/QmSLr6bHkPFWT7ntj34jmwfyskpwo97T9jZUrk5sz3sdtR\"]},\"@openzeppelin/contracts/token/ERC20/utils/SafeERC20.sol\":{\"keccak256\":\"0x304d732678032a9781ae85c8f204c8fba3d3a5e31c02616964e75cfdc5049098\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://299ced486011781dc98f638059678323c03079fefae1482abaa2135b22fa92d0\",\"dweb:/ipfs/QmbZNbcPTBxNvwChavN2kkZZs7xHhYL7mv51KrxMhsMs3j\"]},\"@openzeppelin/contracts/utils/Context.sol\":{\"keccak256\":\"0x493033a8d1b176a037b2cc6a04dad01a5c157722049bbecf632ca876224dd4b2\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://6a708e8a5bdb1011c2c381c9a5cfd8a9a956d7d0a9dc1bd8bcdaf52f76ef2f12\",\"dweb:/ipfs/Qmax9WHBnVsZP46ZxEMNRQpLQnrdE4dK8LehML1Py8FowF\"]},\"@openzeppelin/contracts/utils/LowLevelCall.sol\":{\"keccak256\":\"0x5b4802a4352474792df3107e961d1cc593e47b820c14f69d3505cb28f5a6a583\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://a6f86fd01f829499fe0545ff5dda07d4521988e88bfe0bf801fc15650921ed56\",\"dweb:/ipfs/QmUUKu4ZDffHAmfkf3asuQfmLTyfpuy2Amdncc3SqfzKPG\"]},\"@openzeppelin/contracts/utils/Memory.sol\":{\"keccak256\":\"0x35feec480590c0ed9c1623df077ba9af406ad57cd9d149ff278c7316d6fe8fe0\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://839967d079db4cd624c3f735a6e911953c0e2347418c016f6a0cc18ed1aa9603\",\"dweb:/ipfs/QmaWxNL8Ymkwerfvq1LNzpbq2PMzTGsnXzqsYExNyvKWka\"]},\"@openzeppelin/contracts/utils/Panic.sol\":{\"keccak256\":\"0xf7fe324703a64fc51702311dc51562d5cb1497734f074e4f483bfb6717572d7a\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://c6a5ff4f9fd8649b7ee20800b7fa387d3465bd77cf20c2d1068cd5c98e1ed57a\",\"dweb:/ipfs/QmVSaVJf9FXFhdYEYeCEfjMVHrxDh5qL4CGkxdMWpQCrqG\"]},\"@openzeppelin/contracts/utils/introspection/IERC165.sol\":{\"keccak256\":\"0x8891738ffe910f0cf2da09566928589bf5d63f4524dd734fd9cedbac3274dd5c\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://971f954442df5c2ef5b5ebf1eb245d7105d9fbacc7386ee5c796df1d45b21617\",\"dweb:/ipfs/QmadRjHbkicwqwwh61raUEapaVEtaLMcYbQZWs9gUkgj3u\"]},\"@openzeppelin/contracts/utils/math/Math.sol\":{\"keccak256\":\"0x09e3f1c72d4c5cbe8e2644ab7313f8f7177533ae2f4c24cdcbbeaf520a73734c\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://93208401215d539fa2d81626b207c1f611def7883d0e447b3b5969ebaa7b3c2c\",\"dweb:/ipfs/QmXPxDnQPx8LAweX5ZJqEcwkvs59kP4c64VVDG1Jjq1mef\"]},\"@openzeppelin/contracts/utils/math/SafeCast.sol\":{\"keccak256\":\"0x195533c86d0ef72bcc06456a4f66a9b941f38eb403739b00f21fd7c1abd1ae54\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://b1d578337048cad08c1c03041cca5978eff5428aa130c781b271ad9e5566e1f8\",\"dweb:/ipfs/QmPFKL2r9CBsMwmUqqdcFPfHZB2qcs9g1HDrPxzWSxomvy\"]}},\"version\":1}","storageLayout":{"storage":[{"astId":8109,"contract":"@ensuro/utils/contracts/TestERC4626.sol:TestERC4626","label":"_balances","offset":0,"slot":"0","type":"t_mapping(t_address,t_uint256)"},{"astId":8115,"contract":"@ensuro/utils/contracts/TestERC4626.sol:TestERC4626","label":"_allowances","offset":0,"slot":"1","type":"t_mapping(t_address,t_mapping(t_address,t_uint256))"},{"astId":8117,"contract":"@ensuro/utils/contracts/TestERC4626.sol:TestERC4626","label":"_totalSupply","offset":0,"slot":"2","type":"t_uint256"},{"astId":8119,"contract":"@ensuro/utils/contracts/TestERC4626.sol:TestERC4626","label":"_name","offset":0,"slot":"3","type":"t_string_storage"},{"astId":8121,"contract":"@ensuro/utils/contracts/TestERC4626.sol:TestERC4626","label":"_symbol","offset":0,"slot":"4","type":"t_string_storage"},{"astId":2736,"contract":"@ensuro/utils/contracts/TestERC4626.sol:TestERC4626","label":"_broken","offset":0,"slot":"5","type":"t_bool"},{"astId":2738,"contract":"@ensuro/utils/contracts/TestERC4626.sol:TestERC4626","label":"overrideMaxDeposit","offset":0,"slot":"6","type":"t_uint256"},{"astId":2740,"contract":"@ensuro/utils/contracts/TestERC4626.sol:TestERC4626","label":"overrideMaxMint","offset":0,"slot":"7","type":"t_uint256"},{"astId":2742,"contract":"@ensuro/utils/contracts/TestERC4626.sol:TestERC4626","label":"overrideMaxWithdraw","offset":0,"slot":"8","type":"t_uint256"},{"astId":2744,"contract":"@ensuro/utils/contracts/TestERC4626.sol:TestERC4626","label":"overrideMaxRedeem","offset":0,"slot":"9","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_string_storage":{"encoding":"bytes","label":"string","numberOfBytes":"32"},"t_uint256":{"encoding":"inplace","label":"uint256","numberOfBytes":"32"}}}}},"@openzeppelin/contracts-upgradeable/token/ERC20/ERC20Upgradeable.sol":{"ERC20Upgradeable":{"abi":[{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"allowance","type":"uint256"},{"internalType":"uint256","name":"needed","type":"uint256"}],"name":"ERC20InsufficientAllowance","type":"error"},{"inputs":[{"internalType":"address","name":"sender","type":"address"},{"internalType":"uint256","name":"balance","type":"uint256"},{"internalType":"uint256","name":"needed","type":"uint256"}],"name":"ERC20InsufficientBalance","type":"error"},{"inputs":[{"internalType":"address","name":"approver","type":"address"}],"name":"ERC20InvalidApprover","type":"error"},{"inputs":[{"internalType":"address","name":"receiver","type":"address"}],"name":"ERC20InvalidReceiver","type":"error"},{"inputs":[{"internalType":"address","name":"sender","type":"address"}],"name":"ERC20InvalidSender","type":"error"},{"inputs":[{"internalType":"address","name":"spender","type":"address"}],"name":"ERC20InvalidSpender","type":"error"},{"inputs":[],"name":"InvalidInitialization","type":"error"},{"inputs":[],"name":"NotInitializing","type":"error"},{"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":false,"internalType":"uint64","name":"version","type":"uint64"}],"name":"Initialized","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":"value","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":"to","type":"address"},{"internalType":"uint256","name":"value","type":"uint256"}],"name":"transfer","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"from","type":"address"},{"internalType":"address","name":"to","type":"address"},{"internalType":"uint256","name":"value","type":"uint256"}],"name":"transferFrom","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"}],"evm":{"bytecode":{"functionDebugData":{},"generatedSources":[],"linkReferences":{},"object":"","opcodes":"","sourceMap":""},"deployedBytecode":{"functionDebugData":{},"generatedSources":[],"immutableReferences":{},"linkReferences":{},"object":"","opcodes":"","sourceMap":""},"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.30+commit.73712a01\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"inputs\":[{\"internalType\":\"address\",\"name\":\"spender\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"allowance\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"needed\",\"type\":\"uint256\"}],\"name\":\"ERC20InsufficientAllowance\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"sender\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"balance\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"needed\",\"type\":\"uint256\"}],\"name\":\"ERC20InsufficientBalance\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"approver\",\"type\":\"address\"}],\"name\":\"ERC20InvalidApprover\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"receiver\",\"type\":\"address\"}],\"name\":\"ERC20InvalidReceiver\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"sender\",\"type\":\"address\"}],\"name\":\"ERC20InvalidSender\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"spender\",\"type\":\"address\"}],\"name\":\"ERC20InvalidSpender\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"InvalidInitialization\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"NotInitializing\",\"type\":\"error\"},{\"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\":false,\"internalType\":\"uint64\",\"name\":\"version\",\"type\":\"uint64\"}],\"name\":\"Initialized\",\"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\":\"value\",\"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\":\"to\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"value\",\"type\":\"uint256\"}],\"name\":\"transfer\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"from\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"value\",\"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}. TIP: For a detailed writeup see our guide https://forum.openzeppelin.com/t/how-to-implement-erc20-supply-mechanisms/226[How to implement supply mechanisms]. The default value of {decimals} is 18. To change this, you should override this function so it returns a different value. 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 ERC-20 applications.\",\"errors\":{\"ERC20InsufficientAllowance(address,uint256,uint256)\":[{\"details\":\"Indicates a failure with the `spender`\\u2019s `allowance`. Used in transfers.\",\"params\":{\"allowance\":\"Amount of tokens a `spender` is allowed to operate with.\",\"needed\":\"Minimum amount required to perform a transfer.\",\"spender\":\"Address that may be allowed to operate on tokens without being their owner.\"}}],\"ERC20InsufficientBalance(address,uint256,uint256)\":[{\"details\":\"Indicates an error related to the current `balance` of a `sender`. Used in transfers.\",\"params\":{\"balance\":\"Current balance for the interacting account.\",\"needed\":\"Minimum amount required to perform a transfer.\",\"sender\":\"Address whose tokens are being transferred.\"}}],\"ERC20InvalidApprover(address)\":[{\"details\":\"Indicates a failure with the `approver` of a token to be approved. Used in approvals.\",\"params\":{\"approver\":\"Address initiating an approval operation.\"}}],\"ERC20InvalidReceiver(address)\":[{\"details\":\"Indicates a failure with the token `receiver`. Used in transfers.\",\"params\":{\"receiver\":\"Address to which tokens are being transferred.\"}}],\"ERC20InvalidSender(address)\":[{\"details\":\"Indicates a failure with the token `sender`. Used in transfers.\",\"params\":{\"sender\":\"Address whose tokens are being transferred.\"}}],\"ERC20InvalidSpender(address)\":[{\"details\":\"Indicates a failure with the `spender` to be approved. Used in approvals.\",\"params\":{\"spender\":\"Address that may be allowed to operate on tokens without being their owner.\"}}],\"InvalidInitialization()\":[{\"details\":\"The contract is already initialized.\"}],\"NotInitializing()\":[{\"details\":\"The contract is not initializing.\"}]},\"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.\"},\"Initialized(uint64)\":{\"details\":\"Triggered when the contract has been initialized or reinitialized.\"},\"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\":\"See {IERC20-approve}. NOTE: If `value` is the maximum `uint256`, the allowance is not updated on `transferFrom`. This is semantically equivalent to an infinite approval. Requirements: - `spender` cannot be the zero address.\"},\"balanceOf(address)\":{\"details\":\"Returns the value of tokens owned by `account`.\"},\"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 default value returned by this function, unless it's 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}.\"},\"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\":\"Returns the value of tokens in existence.\"},\"transfer(address,uint256)\":{\"details\":\"See {IERC20-transfer}. Requirements: - `to` cannot be the zero address. - the caller must have a balance of at least `value`.\"},\"transferFrom(address,address,uint256)\":{\"details\":\"See {IERC20-transferFrom}. Skips emitting an {Approval} event indicating an allowance update. This is not required by the ERC. See {xref-ERC20-_approve-address-address-uint256-bool-}[_approve]. NOTE: Does not update the allowance if the current allowance is the maximum `uint256`. Requirements: - `from` and `to` cannot be the zero address. - `from` must have a balance of at least `value`. - the caller must have allowance for ``from``'s tokens of at least `value`.\"}},\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{},\"version\":1}},\"settings\":{\"compilationTarget\":{\"@openzeppelin/contracts-upgradeable/token/ERC20/ERC20Upgradeable.sol\":\"ERC20Upgradeable\"},\"evmVersion\":\"prague\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"enabled\":true,\"runs\":200},\"remappings\":[]},\"sources\":{\"@openzeppelin/contracts-upgradeable/token/ERC20/ERC20Upgradeable.sol\":{\"keccak256\":\"0xd518def45c722a6e803e1e26e625db25e01497f672ca566cca585d234ec903b0\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://6e7de3fccd96783244790cde282435ce0fd3a44ab4ccb10f17005c743202882f\",\"dweb:/ipfs/QmYSepstTqs5UPJvjeJXkWU5R659yReqrSgSGGh65hkbdK\"]},\"@openzeppelin/contracts-upgradeable/utils/ContextUpgradeable.sol\":{\"keccak256\":\"0xad316bdc3ee64a0e29773256245045dc57b92660799ff14f668f7c0da9456a9d\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://66463434d266816fca2a3a2734ceee88544e61b7cc3899c50333b46e8e771455\",\"dweb:/ipfs/QmPYCzHjki1HQLvBub3uUqoUKGrwdgR3xP9Zpya14YTdXS\"]},\"@openzeppelin/contracts/interfaces/draft-IERC6093.sol\":{\"keccak256\":\"0x1b88b3fb3d85ba5496d7d5f396f83ee1fddcdd6762059ff65992655b67920998\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://89393bb3212da1c0889601b9706a07b39419ddc4d2faab9eaf6e7f9152cf6a1c\",\"dweb:/ipfs/QmcCfzzxv1Bkdz1c1yF4gQCeYb6Us5BJANnzTFqawfd1HL\"]},\"@openzeppelin/contracts/proxy/utils/Initializable.sol\":{\"keccak256\":\"0xdb4d24ee2c087c391d587cd17adfe5b3f9d93b3110b1388c2ab6c7c0ad1dcd05\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://ab7b6d5b9e2b88176312967fe0f0e78f3d9a1422fa5e4b64e2440c35869b5d08\",\"dweb:/ipfs/QmXKYWWyzcLg1B2k7Sb1qkEXgLCYfXecR9wYW5obRzWP1Q\"]},\"@openzeppelin/contracts/token/ERC20/IERC20.sol\":{\"keccak256\":\"0x74ed01eb66b923d0d0cfe3be84604ac04b76482a55f9dd655e1ef4d367f95bc2\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://5282825a626cfe924e504274b864a652b0023591fa66f06a067b25b51ba9b303\",\"dweb:/ipfs/QmeCfPykghhMc81VJTrHTC7sF6CRvaA1FXVq2pJhwYp1dV\"]},\"@openzeppelin/contracts/token/ERC20/extensions/IERC20Metadata.sol\":{\"keccak256\":\"0xd6fa4088198f04eef10c5bce8a2f4d60554b7ec4b987f684393c01bf79b94d9f\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://f95ee0bbd4dd3ac730d066ba3e785ded4565e890dbec2fa7d3b9fe3bad9d0d6e\",\"dweb:/ipfs/QmSLr6bHkPFWT7ntj34jmwfyskpwo97T9jZUrk5sz3sdtR\"]}},\"version\":1}","storageLayout":{"storage":[],"types":null}}},"@openzeppelin/contracts-upgradeable/token/ERC20/extensions/ERC4626Upgradeable.sol":{"ERC4626Upgradeable":{"abi":[{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"allowance","type":"uint256"},{"internalType":"uint256","name":"needed","type":"uint256"}],"name":"ERC20InsufficientAllowance","type":"error"},{"inputs":[{"internalType":"address","name":"sender","type":"address"},{"internalType":"uint256","name":"balance","type":"uint256"},{"internalType":"uint256","name":"needed","type":"uint256"}],"name":"ERC20InsufficientBalance","type":"error"},{"inputs":[{"internalType":"address","name":"approver","type":"address"}],"name":"ERC20InvalidApprover","type":"error"},{"inputs":[{"internalType":"address","name":"receiver","type":"address"}],"name":"ERC20InvalidReceiver","type":"error"},{"inputs":[{"internalType":"address","name":"sender","type":"address"}],"name":"ERC20InvalidSender","type":"error"},{"inputs":[{"internalType":"address","name":"spender","type":"address"}],"name":"ERC20InvalidSpender","type":"error"},{"inputs":[{"internalType":"address","name":"receiver","type":"address"},{"internalType":"uint256","name":"assets","type":"uint256"},{"internalType":"uint256","name":"max","type":"uint256"}],"name":"ERC4626ExceededMaxDeposit","type":"error"},{"inputs":[{"internalType":"address","name":"receiver","type":"address"},{"internalType":"uint256","name":"shares","type":"uint256"},{"internalType":"uint256","name":"max","type":"uint256"}],"name":"ERC4626ExceededMaxMint","type":"error"},{"inputs":[{"internalType":"address","name":"owner","type":"address"},{"internalType":"uint256","name":"shares","type":"uint256"},{"internalType":"uint256","name":"max","type":"uint256"}],"name":"ERC4626ExceededMaxRedeem","type":"error"},{"inputs":[{"internalType":"address","name":"owner","type":"address"},{"internalType":"uint256","name":"assets","type":"uint256"},{"internalType":"uint256","name":"max","type":"uint256"}],"name":"ERC4626ExceededMaxWithdraw","type":"error"},{"inputs":[],"name":"InvalidInitialization","type":"error"},{"inputs":[],"name":"NotInitializing","type":"error"},{"inputs":[{"internalType":"address","name":"token","type":"address"}],"name":"SafeERC20FailedOperation","type":"error"},{"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":"sender","type":"address"},{"indexed":true,"internalType":"address","name":"owner","type":"address"},{"indexed":false,"internalType":"uint256","name":"assets","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"shares","type":"uint256"}],"name":"Deposit","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint64","name":"version","type":"uint64"}],"name":"Initialized","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":"sender","type":"address"},{"indexed":true,"internalType":"address","name":"receiver","type":"address"},{"indexed":true,"internalType":"address","name":"owner","type":"address"},{"indexed":false,"internalType":"uint256","name":"assets","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"shares","type":"uint256"}],"name":"Withdraw","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":"value","type":"uint256"}],"name":"approve","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"asset","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"balanceOf","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"shares","type":"uint256"}],"name":"convertToAssets","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"assets","type":"uint256"}],"name":"convertToShares","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":"assets","type":"uint256"},{"internalType":"address","name":"receiver","type":"address"}],"name":"deposit","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"maxDeposit","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"maxMint","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"owner","type":"address"}],"name":"maxRedeem","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"owner","type":"address"}],"name":"maxWithdraw","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"shares","type":"uint256"},{"internalType":"address","name":"receiver","type":"address"}],"name":"mint","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"name","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"assets","type":"uint256"}],"name":"previewDeposit","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"shares","type":"uint256"}],"name":"previewMint","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"shares","type":"uint256"}],"name":"previewRedeem","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"assets","type":"uint256"}],"name":"previewWithdraw","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"shares","type":"uint256"},{"internalType":"address","name":"receiver","type":"address"},{"internalType":"address","name":"owner","type":"address"}],"name":"redeem","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"symbol","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"totalAssets","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":"to","type":"address"},{"internalType":"uint256","name":"value","type":"uint256"}],"name":"transfer","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"from","type":"address"},{"internalType":"address","name":"to","type":"address"},{"internalType":"uint256","name":"value","type":"uint256"}],"name":"transferFrom","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"assets","type":"uint256"},{"internalType":"address","name":"receiver","type":"address"},{"internalType":"address","name":"owner","type":"address"}],"name":"withdraw","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"nonpayable","type":"function"}],"evm":{"bytecode":{"functionDebugData":{},"generatedSources":[],"linkReferences":{},"object":"","opcodes":"","sourceMap":""},"deployedBytecode":{"functionDebugData":{},"generatedSources":[],"immutableReferences":{},"linkReferences":{},"object":"","opcodes":"","sourceMap":""},"methodIdentifiers":{"allowance(address,address)":"dd62ed3e","approve(address,uint256)":"095ea7b3","asset()":"38d52e0f","balanceOf(address)":"70a08231","convertToAssets(uint256)":"07a2d13a","convertToShares(uint256)":"c6e6f592","decimals()":"313ce567","deposit(uint256,address)":"6e553f65","maxDeposit(address)":"402d267d","maxMint(address)":"c63d75b6","maxRedeem(address)":"d905777e","maxWithdraw(address)":"ce96cb77","mint(uint256,address)":"94bf804d","name()":"06fdde03","previewDeposit(uint256)":"ef8b30f7","previewMint(uint256)":"b3d7f6b9","previewRedeem(uint256)":"4cdad506","previewWithdraw(uint256)":"0a28a477","redeem(uint256,address,address)":"ba087652","symbol()":"95d89b41","totalAssets()":"01e1d114","totalSupply()":"18160ddd","transfer(address,uint256)":"a9059cbb","transferFrom(address,address,uint256)":"23b872dd","withdraw(uint256,address,address)":"b460af94"}},"metadata":"{\"compiler\":{\"version\":\"0.8.30+commit.73712a01\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"inputs\":[{\"internalType\":\"address\",\"name\":\"spender\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"allowance\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"needed\",\"type\":\"uint256\"}],\"name\":\"ERC20InsufficientAllowance\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"sender\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"balance\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"needed\",\"type\":\"uint256\"}],\"name\":\"ERC20InsufficientBalance\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"approver\",\"type\":\"address\"}],\"name\":\"ERC20InvalidApprover\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"receiver\",\"type\":\"address\"}],\"name\":\"ERC20InvalidReceiver\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"sender\",\"type\":\"address\"}],\"name\":\"ERC20InvalidSender\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"spender\",\"type\":\"address\"}],\"name\":\"ERC20InvalidSpender\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"receiver\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"assets\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"max\",\"type\":\"uint256\"}],\"name\":\"ERC4626ExceededMaxDeposit\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"receiver\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"shares\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"max\",\"type\":\"uint256\"}],\"name\":\"ERC4626ExceededMaxMint\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"shares\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"max\",\"type\":\"uint256\"}],\"name\":\"ERC4626ExceededMaxRedeem\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"assets\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"max\",\"type\":\"uint256\"}],\"name\":\"ERC4626ExceededMaxWithdraw\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"InvalidInitialization\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"NotInitializing\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"token\",\"type\":\"address\"}],\"name\":\"SafeERC20FailedOperation\",\"type\":\"error\"},{\"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\":\"sender\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"assets\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"shares\",\"type\":\"uint256\"}],\"name\":\"Deposit\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"uint64\",\"name\":\"version\",\"type\":\"uint64\"}],\"name\":\"Initialized\",\"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\":\"sender\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"receiver\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"assets\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"shares\",\"type\":\"uint256\"}],\"name\":\"Withdraw\",\"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\":\"value\",\"type\":\"uint256\"}],\"name\":\"approve\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"asset\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"}],\"name\":\"balanceOf\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"shares\",\"type\":\"uint256\"}],\"name\":\"convertToAssets\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"assets\",\"type\":\"uint256\"}],\"name\":\"convertToShares\",\"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\":\"assets\",\"type\":\"uint256\"},{\"internalType\":\"address\",\"name\":\"receiver\",\"type\":\"address\"}],\"name\":\"deposit\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"name\":\"maxDeposit\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"name\":\"maxMint\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"}],\"name\":\"maxRedeem\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"}],\"name\":\"maxWithdraw\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"shares\",\"type\":\"uint256\"},{\"internalType\":\"address\",\"name\":\"receiver\",\"type\":\"address\"}],\"name\":\"mint\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"name\",\"outputs\":[{\"internalType\":\"string\",\"name\":\"\",\"type\":\"string\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"assets\",\"type\":\"uint256\"}],\"name\":\"previewDeposit\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"shares\",\"type\":\"uint256\"}],\"name\":\"previewMint\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"shares\",\"type\":\"uint256\"}],\"name\":\"previewRedeem\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"assets\",\"type\":\"uint256\"}],\"name\":\"previewWithdraw\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"shares\",\"type\":\"uint256\"},{\"internalType\":\"address\",\"name\":\"receiver\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"}],\"name\":\"redeem\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"symbol\",\"outputs\":[{\"internalType\":\"string\",\"name\":\"\",\"type\":\"string\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"totalAssets\",\"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\":\"to\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"value\",\"type\":\"uint256\"}],\"name\":\"transfer\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"from\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"value\",\"type\":\"uint256\"}],\"name\":\"transferFrom\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"assets\",\"type\":\"uint256\"},{\"internalType\":\"address\",\"name\":\"receiver\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"}],\"name\":\"withdraw\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"}],\"devdoc\":{\"details\":\"Implementation of the ERC-4626 \\\"Tokenized Vault Standard\\\" as defined in https://eips.ethereum.org/EIPS/eip-4626[ERC-4626]. This extension allows the minting and burning of \\\"shares\\\" (represented using the ERC-20 inheritance) in exchange for underlying \\\"assets\\\" through standardized {deposit}, {mint}, {redeem} and {burn} workflows. This contract extends the ERC-20 standard. Any additional extensions included along it would affect the \\\"shares\\\" token represented by this contract and not the \\\"assets\\\" token which is an independent contract. [CAUTION] ==== In empty (or nearly empty) ERC-4626 vaults, deposits are at high risk of being stolen through frontrunning with a \\\"donation\\\" to the vault that inflates the price of a share. This is variously known as a donation or inflation attack and is essentially a problem of slippage. Vault deployers can protect against this attack by making an initial deposit of a non-trivial amount of the asset, such that price manipulation becomes infeasible. Withdrawals may similarly be affected by slippage. Users can protect against this attack as well as unexpected slippage in general by verifying the amount received is as expected, using a wrapper that performs these checks such as https://github.com/fei-protocol/ERC4626#erc4626router-and-base[ERC4626Router]. Since v4.9, this implementation introduces configurable virtual assets and shares to help developers mitigate that risk. The `_decimalsOffset()` corresponds to an offset in the decimal representation between the underlying asset's decimals and the vault decimals. This offset also determines the rate of virtual shares to virtual assets in the vault, which itself determines the initial exchange rate. While not fully preventing the attack, analysis shows that the default offset (0) makes it non-profitable even if an attacker is able to capture value from multiple user deposits, as a result of the value being captured by the virtual shares (out of the attacker's donation) matching the attacker's expected gains. With a larger offset, the attack becomes orders of magnitude more expensive than it is profitable. More details about the underlying math can be found xref:ROOT:erc4626.adoc#inflation-attack[here]. The drawback of this approach is that the virtual shares do capture (a very small) part of the value being accrued to the vault. Also, if the vault experiences losses, the users try to exit the vault, the virtual shares and assets will cause the first user to exit to experience reduced losses in detriment to the last users that will experience bigger losses. Developers willing to revert back to the pre-v4.9 behavior just need to override the `_convertToShares` and `_convertToAssets` functions. To learn more, check out our xref:ROOT:erc4626.adoc[ERC-4626 guide]. ==== [NOTE] ==== When overriding this contract, some elements must be considered: * When overriding the behavior of the deposit or withdraw mechanisms, it is recommended to override the internal functions. Overriding {_deposit} automatically affects both {deposit} and {mint}. Similarly, overriding {_withdraw} automatically affects both {withdraw} and {redeem}. Overall it is not recommended to override the public facing functions since that could lead to inconsistent behaviors between the {deposit} and {mint} or between {withdraw} and {redeem}, which is documented to have lead to loss of funds. * Overrides to the deposit or withdraw mechanism must be reflected in the preview functions as well. * {maxWithdraw} depends on {maxRedeem}. Therefore, overriding {maxRedeem} only is enough. On the other hand, overriding {maxWithdraw} only would have no effect on {maxRedeem}, and could create an inconsistency between the two functions. * If {previewRedeem} is overridden to revert, {maxWithdraw} must be overridden as necessary to ensure it always return successfully. ====\",\"errors\":{\"ERC20InsufficientAllowance(address,uint256,uint256)\":[{\"details\":\"Indicates a failure with the `spender`\\u2019s `allowance`. Used in transfers.\",\"params\":{\"allowance\":\"Amount of tokens a `spender` is allowed to operate with.\",\"needed\":\"Minimum amount required to perform a transfer.\",\"spender\":\"Address that may be allowed to operate on tokens without being their owner.\"}}],\"ERC20InsufficientBalance(address,uint256,uint256)\":[{\"details\":\"Indicates an error related to the current `balance` of a `sender`. Used in transfers.\",\"params\":{\"balance\":\"Current balance for the interacting account.\",\"needed\":\"Minimum amount required to perform a transfer.\",\"sender\":\"Address whose tokens are being transferred.\"}}],\"ERC20InvalidApprover(address)\":[{\"details\":\"Indicates a failure with the `approver` of a token to be approved. Used in approvals.\",\"params\":{\"approver\":\"Address initiating an approval operation.\"}}],\"ERC20InvalidReceiver(address)\":[{\"details\":\"Indicates a failure with the token `receiver`. Used in transfers.\",\"params\":{\"receiver\":\"Address to which tokens are being transferred.\"}}],\"ERC20InvalidSender(address)\":[{\"details\":\"Indicates a failure with the token `sender`. Used in transfers.\",\"params\":{\"sender\":\"Address whose tokens are being transferred.\"}}],\"ERC20InvalidSpender(address)\":[{\"details\":\"Indicates a failure with the `spender` to be approved. Used in approvals.\",\"params\":{\"spender\":\"Address that may be allowed to operate on tokens without being their owner.\"}}],\"ERC4626ExceededMaxDeposit(address,uint256,uint256)\":[{\"details\":\"Attempted to deposit more assets than the max amount for `receiver`.\"}],\"ERC4626ExceededMaxMint(address,uint256,uint256)\":[{\"details\":\"Attempted to mint more shares than the max amount for `receiver`.\"}],\"ERC4626ExceededMaxRedeem(address,uint256,uint256)\":[{\"details\":\"Attempted to redeem more shares than the max amount for `receiver`.\"}],\"ERC4626ExceededMaxWithdraw(address,uint256,uint256)\":[{\"details\":\"Attempted to withdraw more assets than the max amount for `receiver`.\"}],\"InvalidInitialization()\":[{\"details\":\"The contract is already initialized.\"}],\"NotInitializing()\":[{\"details\":\"The contract is not initializing.\"}],\"SafeERC20FailedOperation(address)\":[{\"details\":\"An operation with an ERC-20 token failed.\"}]},\"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.\"},\"Initialized(uint64)\":{\"details\":\"Triggered when the contract has been initialized or reinitialized.\"},\"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\":\"See {IERC20-approve}. NOTE: If `value` is the maximum `uint256`, the allowance is not updated on `transferFrom`. This is semantically equivalent to an infinite approval. Requirements: - `spender` cannot be the zero address.\"},\"asset()\":{\"details\":\"Returns the address of the underlying token used for the Vault for accounting, depositing, and withdrawing. - MUST be an ERC-20 token contract. - MUST NOT revert.\"},\"balanceOf(address)\":{\"details\":\"Returns the value of tokens owned by `account`.\"},\"convertToAssets(uint256)\":{\"details\":\"Returns the amount of assets that the Vault would exchange for the amount of shares provided, in an ideal scenario where all the conditions are met. - MUST NOT be inclusive of any fees that are charged against assets in the Vault. - MUST NOT show any variations depending on the caller. - MUST NOT reflect slippage or other on-chain conditions, when performing the actual exchange. - MUST NOT revert. NOTE: This calculation MAY NOT reflect the \\u201cper-user\\u201d price-per-share, and instead should reflect the \\u201caverage-user\\u2019s\\u201d price-per-share, meaning what the average user should expect to see when exchanging to and from.\"},\"convertToShares(uint256)\":{\"details\":\"Returns the amount of shares that the Vault would exchange for the amount of assets provided, in an ideal scenario where all the conditions are met. - MUST NOT be inclusive of any fees that are charged against assets in the Vault. - MUST NOT show any variations depending on the caller. - MUST NOT reflect slippage or other on-chain conditions, when performing the actual exchange. - MUST NOT revert. NOTE: This calculation MAY NOT reflect the \\u201cper-user\\u201d price-per-share, and instead should reflect the \\u201caverage-user\\u2019s\\u201d price-per-share, meaning what the average user should expect to see when exchanging to and from.\"},\"decimals()\":{\"details\":\"Decimals are computed by adding the decimal offset on top of the underlying asset's decimals. This \\\"original\\\" value is cached during construction of the vault contract. If this read operation fails (e.g., the asset has not been created yet), a default of 18 is used to represent the underlying asset's decimals. See {IERC20Metadata-decimals}.\"},\"deposit(uint256,address)\":{\"details\":\"Deposit `assets` underlying tokens and send the corresponding number of vault shares (`shares`) to `receiver`. - MUST emit the Deposit event. - MAY support an additional flow in which the underlying tokens are owned by the Vault contract before the   deposit execution, and are accounted for during deposit. - MUST revert if all of assets cannot be deposited (due to deposit limit being reached, slippage, the user not   approving enough underlying tokens to the Vault contract, etc). NOTE: most implementations will require pre-approval of the Vault with the Vault\\u2019s underlying asset token.\"},\"maxDeposit(address)\":{\"details\":\"Returns the maximum amount of the underlying asset that can be deposited into the Vault for the receiver, through a deposit call. - MUST return a limited value if receiver is subject to some deposit limit. - MUST return 2 ** 256 - 1 if there is no limit on the maximum amount of assets that may be deposited. - MUST NOT revert.\"},\"maxMint(address)\":{\"details\":\"Returns the maximum amount of the Vault shares that can be minted for the receiver, through a mint call. - MUST return a limited value if receiver is subject to some mint limit. - MUST return 2 ** 256 - 1 if there is no limit on the maximum amount of shares that may be minted. - MUST NOT revert.\"},\"maxRedeem(address)\":{\"details\":\"Returns the maximum amount of Vault shares that can be redeemed from the owner balance in the Vault, through a redeem call. - MUST return a limited value if owner is subject to some withdrawal limit or timelock. - MUST return balanceOf(owner) if owner is not subject to any withdrawal limit or timelock. - MUST NOT revert.\"},\"maxWithdraw(address)\":{\"details\":\"Returns the maximum amount of the underlying asset that can be withdrawn from the owner balance in the Vault, through a withdraw call. - MUST return a limited value if owner is subject to some withdrawal limit or timelock. - MUST NOT revert.\"},\"mint(uint256,address)\":{\"details\":\"Mints exactly `shares` vault shares to `receiver` in exchange for `assets` underlying tokens. - MUST emit the Deposit event. - MAY support an additional flow in which the underlying tokens are owned by the Vault contract before the mint   execution, and are accounted for during mint. - MUST revert if all of shares cannot be minted (due to deposit limit being reached, slippage, the user not   approving enough underlying tokens to the Vault contract, etc). NOTE: most implementations will require pre-approval of the Vault with the Vault\\u2019s underlying asset token.\"},\"name()\":{\"details\":\"Returns the name of the token.\"},\"previewDeposit(uint256)\":{\"details\":\"Allows an on-chain or off-chain user to simulate the effects of their deposit at the current block, given current on-chain conditions. - MUST return as close to and no more than the exact amount of Vault shares that would be minted in a deposit   call in the same transaction. I.e. deposit should return the same or more shares as previewDeposit if called   in the same transaction. - MUST NOT account for deposit limits like those returned from maxDeposit and should always act as though the   deposit would be accepted, regardless if the user has enough tokens approved, etc. - MUST be inclusive of deposit fees. Integrators should be aware of the existence of deposit fees. - MUST NOT revert. NOTE: any unfavorable discrepancy between convertToShares and previewDeposit SHOULD be considered slippage in share price or some other type of condition, meaning the depositor will lose assets by depositing.\"},\"previewMint(uint256)\":{\"details\":\"Allows an on-chain or off-chain user to simulate the effects of their mint at the current block, given current on-chain conditions. - MUST return as close to and no fewer than the exact amount of assets that would be deposited in a mint call   in the same transaction. I.e. mint should return the same or fewer assets as previewMint if called in the   same transaction. - MUST NOT account for mint limits like those returned from maxMint and should always act as though the mint   would be accepted, regardless if the user has enough tokens approved, etc. - MUST be inclusive of deposit fees. Integrators should be aware of the existence of deposit fees. - MUST NOT revert. NOTE: any unfavorable discrepancy between convertToAssets and previewMint SHOULD be considered slippage in share price or some other type of condition, meaning the depositor will lose assets by minting.\"},\"previewRedeem(uint256)\":{\"details\":\"Allows an on-chain or off-chain user to simulate the effects of their redemption at the current block, given current on-chain conditions. - MUST return as close to and no more than the exact amount of assets that would be withdrawn in a redeem call   in the same transaction. I.e. redeem should return the same or more assets as previewRedeem if called in the   same transaction. - MUST NOT account for redemption limits like those returned from maxRedeem and should always act as though the   redemption would be accepted, regardless if the user has enough shares, etc. - MUST be inclusive of withdrawal fees. Integrators should be aware of the existence of withdrawal fees. - MUST NOT revert. NOTE: any unfavorable discrepancy between convertToAssets and previewRedeem SHOULD be considered slippage in share price or some other type of condition, meaning the depositor will lose assets by redeeming.\"},\"previewWithdraw(uint256)\":{\"details\":\"Allows an on-chain or off-chain user to simulate the effects of their withdrawal at the current block, given current on-chain conditions. - MUST return as close to and no fewer than the exact amount of Vault shares that would be burned in a withdraw   call in the same transaction. I.e. withdraw should return the same or fewer shares as previewWithdraw if   called   in the same transaction. - MUST NOT account for withdrawal limits like those returned from maxWithdraw and should always act as though   the withdrawal would be accepted, regardless if the user has enough shares, etc. - MUST be inclusive of withdrawal fees. Integrators should be aware of the existence of withdrawal fees. - MUST NOT revert. NOTE: any unfavorable discrepancy between convertToShares and previewWithdraw SHOULD be considered slippage in share price or some other type of condition, meaning the depositor will lose assets by depositing.\"},\"redeem(uint256,address,address)\":{\"details\":\"Burns exactly shares from owner and sends assets of underlying tokens to receiver. - MUST emit the Withdraw event. - MAY support an additional flow in which the underlying tokens are owned by the Vault contract before the   redeem execution, and are accounted for during redeem. - MUST revert if all of shares cannot be redeemed (due to withdrawal limit being reached, slippage, the owner   not having enough shares, etc). NOTE: some implementations will require pre-requesting to the Vault before a withdrawal may be performed. Those methods should be performed separately.\"},\"symbol()\":{\"details\":\"Returns the symbol of the token, usually a shorter version of the name.\"},\"totalAssets()\":{\"details\":\"Returns the total amount of the underlying asset that is \\u201cmanaged\\u201d by Vault. - SHOULD include any compounding that occurs from yield. - MUST be inclusive of any fees that are charged against assets in the Vault. - MUST NOT revert.\"},\"totalSupply()\":{\"details\":\"Returns the value of tokens in existence.\"},\"transfer(address,uint256)\":{\"details\":\"See {IERC20-transfer}. Requirements: - `to` cannot be the zero address. - the caller must have a balance of at least `value`.\"},\"transferFrom(address,address,uint256)\":{\"details\":\"See {IERC20-transferFrom}. Skips emitting an {Approval} event indicating an allowance update. This is not required by the ERC. See {xref-ERC20-_approve-address-address-uint256-bool-}[_approve]. NOTE: Does not update the allowance if the current allowance is the maximum `uint256`. Requirements: - `from` and `to` cannot be the zero address. - `from` must have a balance of at least `value`. - the caller must have allowance for ``from``'s tokens of at least `value`.\"},\"withdraw(uint256,address,address)\":{\"details\":\"Burns shares from owner and sends exactly assets of underlying tokens to receiver. - MUST emit the Withdraw event. - MAY support an additional flow in which the underlying tokens are owned by the Vault contract before the   withdraw execution, and are accounted for during withdraw. - MUST revert if all of assets cannot be withdrawn (due to withdrawal limit being reached, slippage, the owner   not having enough shares, etc). Note that some implementations will require pre-requesting to the Vault before a withdrawal may be performed. Those methods should be performed separately.\"}},\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{},\"version\":1}},\"settings\":{\"compilationTarget\":{\"@openzeppelin/contracts-upgradeable/token/ERC20/extensions/ERC4626Upgradeable.sol\":\"ERC4626Upgradeable\"},\"evmVersion\":\"prague\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"enabled\":true,\"runs\":200},\"remappings\":[]},\"sources\":{\"@openzeppelin/contracts-upgradeable/token/ERC20/ERC20Upgradeable.sol\":{\"keccak256\":\"0xd518def45c722a6e803e1e26e625db25e01497f672ca566cca585d234ec903b0\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://6e7de3fccd96783244790cde282435ce0fd3a44ab4ccb10f17005c743202882f\",\"dweb:/ipfs/QmYSepstTqs5UPJvjeJXkWU5R659yReqrSgSGGh65hkbdK\"]},\"@openzeppelin/contracts-upgradeable/token/ERC20/extensions/ERC4626Upgradeable.sol\":{\"keccak256\":\"0x9a451617fef51e7faef5f46de537f9aaca837d470750cfbd7b8a733341dc3951\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://1cdebfebb9bbfe1558d15eab9cf8bd1bd5ad8bb934f6a3d9ea8ef022603c1d59\",\"dweb:/ipfs/QmT83ko5MwSdEJsHz8cQbQGBDyM1q9PvzGm9RFmXfWXMgA\"]},\"@openzeppelin/contracts-upgradeable/utils/ContextUpgradeable.sol\":{\"keccak256\":\"0xad316bdc3ee64a0e29773256245045dc57b92660799ff14f668f7c0da9456a9d\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://66463434d266816fca2a3a2734ceee88544e61b7cc3899c50333b46e8e771455\",\"dweb:/ipfs/QmPYCzHjki1HQLvBub3uUqoUKGrwdgR3xP9Zpya14YTdXS\"]},\"@openzeppelin/contracts/interfaces/IERC1363.sol\":{\"keccak256\":\"0xd5ea07362ab630a6a3dee4285a74cf2377044ca2e4be472755ad64d7c5d4b69d\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://da5e832b40fc5c3145d3781e2e5fa60ac2052c9d08af7e300dc8ab80c4343100\",\"dweb:/ipfs/QmTzf7N5ZUdh5raqtzbM11yexiUoLC9z3Ws632MCuycq1d\"]},\"@openzeppelin/contracts/interfaces/IERC165.sol\":{\"keccak256\":\"0x0afcb7e740d1537b252cb2676f600465ce6938398569f09ba1b9ca240dde2dfc\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://1c299900ac4ec268d4570ecef0d697a3013cd11a6eb74e295ee3fbc945056037\",\"dweb:/ipfs/Qmab9owJoxcA7vJT5XNayCMaUR1qxqj1NDzzisduwaJMcZ\"]},\"@openzeppelin/contracts/interfaces/IERC20.sol\":{\"keccak256\":\"0x1a6221315ce0307746c2c4827c125d821ee796c74a676787762f4778671d4f44\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://1bb2332a7ee26dd0b0de9b7fe266749f54820c99ab6a3bcb6f7e6b751d47ee2d\",\"dweb:/ipfs/QmcRWpaBeCYkhy68PR3B4AgD7asuQk7PwkWxrvJbZcikLF\"]},\"@openzeppelin/contracts/interfaces/IERC4626.sol\":{\"keccak256\":\"0xece5cbf726293ae6be1fbfade2936f052e1b399ed395ba1e221540ab82b62628\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://a9b97e58e90799e681dccbd4a8e469c6ebc2baf11312ad08f14332646123dd4b\",\"dweb:/ipfs/QmdamCQfxcuYinSNd3Et7VNo3oY98XSv4XCUQyq9xfMNUy\"]},\"@openzeppelin/contracts/interfaces/draft-IERC6093.sol\":{\"keccak256\":\"0x1b88b3fb3d85ba5496d7d5f396f83ee1fddcdd6762059ff65992655b67920998\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://89393bb3212da1c0889601b9706a07b39419ddc4d2faab9eaf6e7f9152cf6a1c\",\"dweb:/ipfs/QmcCfzzxv1Bkdz1c1yF4gQCeYb6Us5BJANnzTFqawfd1HL\"]},\"@openzeppelin/contracts/proxy/utils/Initializable.sol\":{\"keccak256\":\"0xdb4d24ee2c087c391d587cd17adfe5b3f9d93b3110b1388c2ab6c7c0ad1dcd05\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://ab7b6d5b9e2b88176312967fe0f0e78f3d9a1422fa5e4b64e2440c35869b5d08\",\"dweb:/ipfs/QmXKYWWyzcLg1B2k7Sb1qkEXgLCYfXecR9wYW5obRzWP1Q\"]},\"@openzeppelin/contracts/token/ERC20/IERC20.sol\":{\"keccak256\":\"0x74ed01eb66b923d0d0cfe3be84604ac04b76482a55f9dd655e1ef4d367f95bc2\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://5282825a626cfe924e504274b864a652b0023591fa66f06a067b25b51ba9b303\",\"dweb:/ipfs/QmeCfPykghhMc81VJTrHTC7sF6CRvaA1FXVq2pJhwYp1dV\"]},\"@openzeppelin/contracts/token/ERC20/extensions/IERC20Metadata.sol\":{\"keccak256\":\"0xd6fa4088198f04eef10c5bce8a2f4d60554b7ec4b987f684393c01bf79b94d9f\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://f95ee0bbd4dd3ac730d066ba3e785ded4565e890dbec2fa7d3b9fe3bad9d0d6e\",\"dweb:/ipfs/QmSLr6bHkPFWT7ntj34jmwfyskpwo97T9jZUrk5sz3sdtR\"]},\"@openzeppelin/contracts/token/ERC20/utils/SafeERC20.sol\":{\"keccak256\":\"0x304d732678032a9781ae85c8f204c8fba3d3a5e31c02616964e75cfdc5049098\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://299ced486011781dc98f638059678323c03079fefae1482abaa2135b22fa92d0\",\"dweb:/ipfs/QmbZNbcPTBxNvwChavN2kkZZs7xHhYL7mv51KrxMhsMs3j\"]},\"@openzeppelin/contracts/utils/LowLevelCall.sol\":{\"keccak256\":\"0x5b4802a4352474792df3107e961d1cc593e47b820c14f69d3505cb28f5a6a583\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://a6f86fd01f829499fe0545ff5dda07d4521988e88bfe0bf801fc15650921ed56\",\"dweb:/ipfs/QmUUKu4ZDffHAmfkf3asuQfmLTyfpuy2Amdncc3SqfzKPG\"]},\"@openzeppelin/contracts/utils/Memory.sol\":{\"keccak256\":\"0x35feec480590c0ed9c1623df077ba9af406ad57cd9d149ff278c7316d6fe8fe0\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://839967d079db4cd624c3f735a6e911953c0e2347418c016f6a0cc18ed1aa9603\",\"dweb:/ipfs/QmaWxNL8Ymkwerfvq1LNzpbq2PMzTGsnXzqsYExNyvKWka\"]},\"@openzeppelin/contracts/utils/Panic.sol\":{\"keccak256\":\"0xf7fe324703a64fc51702311dc51562d5cb1497734f074e4f483bfb6717572d7a\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://c6a5ff4f9fd8649b7ee20800b7fa387d3465bd77cf20c2d1068cd5c98e1ed57a\",\"dweb:/ipfs/QmVSaVJf9FXFhdYEYeCEfjMVHrxDh5qL4CGkxdMWpQCrqG\"]},\"@openzeppelin/contracts/utils/introspection/IERC165.sol\":{\"keccak256\":\"0x8891738ffe910f0cf2da09566928589bf5d63f4524dd734fd9cedbac3274dd5c\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://971f954442df5c2ef5b5ebf1eb245d7105d9fbacc7386ee5c796df1d45b21617\",\"dweb:/ipfs/QmadRjHbkicwqwwh61raUEapaVEtaLMcYbQZWs9gUkgj3u\"]},\"@openzeppelin/contracts/utils/math/Math.sol\":{\"keccak256\":\"0x09e3f1c72d4c5cbe8e2644ab7313f8f7177533ae2f4c24cdcbbeaf520a73734c\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://93208401215d539fa2d81626b207c1f611def7883d0e447b3b5969ebaa7b3c2c\",\"dweb:/ipfs/QmXPxDnQPx8LAweX5ZJqEcwkvs59kP4c64VVDG1Jjq1mef\"]},\"@openzeppelin/contracts/utils/math/SafeCast.sol\":{\"keccak256\":\"0x195533c86d0ef72bcc06456a4f66a9b941f38eb403739b00f21fd7c1abd1ae54\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://b1d578337048cad08c1c03041cca5978eff5428aa130c781b271ad9e5566e1f8\",\"dweb:/ipfs/QmPFKL2r9CBsMwmUqqdcFPfHZB2qcs9g1HDrPxzWSxomvy\"]}},\"version\":1}","storageLayout":{"storage":[],"types":null}}},"@openzeppelin/contracts-upgradeable/utils/ContextUpgradeable.sol":{"ContextUpgradeable":{"abi":[{"inputs":[],"name":"InvalidInitialization","type":"error"},{"inputs":[],"name":"NotInitializing","type":"error"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint64","name":"version","type":"uint64"}],"name":"Initialized","type":"event"}],"evm":{"bytecode":{"functionDebugData":{},"generatedSources":[],"linkReferences":{},"object":"","opcodes":"","sourceMap":""},"deployedBytecode":{"functionDebugData":{},"generatedSources":[],"immutableReferences":{},"linkReferences":{},"object":"","opcodes":"","sourceMap":""},"methodIdentifiers":{}},"metadata":"{\"compiler\":{\"version\":\"0.8.30+commit.73712a01\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"inputs\":[],\"name\":\"InvalidInitialization\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"NotInitializing\",\"type\":\"error\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"uint64\",\"name\":\"version\",\"type\":\"uint64\"}],\"name\":\"Initialized\",\"type\":\"event\"}],\"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.\",\"errors\":{\"InvalidInitialization()\":[{\"details\":\"The contract is already initialized.\"}],\"NotInitializing()\":[{\"details\":\"The contract is not initializing.\"}]},\"events\":{\"Initialized(uint64)\":{\"details\":\"Triggered when the contract has been initialized or reinitialized.\"}},\"kind\":\"dev\",\"methods\":{},\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{},\"version\":1}},\"settings\":{\"compilationTarget\":{\"@openzeppelin/contracts-upgradeable/utils/ContextUpgradeable.sol\":\"ContextUpgradeable\"},\"evmVersion\":\"prague\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"enabled\":true,\"runs\":200},\"remappings\":[]},\"sources\":{\"@openzeppelin/contracts-upgradeable/utils/ContextUpgradeable.sol\":{\"keccak256\":\"0xad316bdc3ee64a0e29773256245045dc57b92660799ff14f668f7c0da9456a9d\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://66463434d266816fca2a3a2734ceee88544e61b7cc3899c50333b46e8e771455\",\"dweb:/ipfs/QmPYCzHjki1HQLvBub3uUqoUKGrwdgR3xP9Zpya14YTdXS\"]},\"@openzeppelin/contracts/proxy/utils/Initializable.sol\":{\"keccak256\":\"0xdb4d24ee2c087c391d587cd17adfe5b3f9d93b3110b1388c2ab6c7c0ad1dcd05\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://ab7b6d5b9e2b88176312967fe0f0e78f3d9a1422fa5e4b64e2440c35869b5d08\",\"dweb:/ipfs/QmXKYWWyzcLg1B2k7Sb1qkEXgLCYfXecR9wYW5obRzWP1Q\"]}},\"version\":1}","storageLayout":{"storage":[],"types":null}}},"@openzeppelin/contracts/access/manager/AccessManager.sol":{"AccessManager":{"abi":[{"inputs":[{"internalType":"address","name":"initialAdmin","type":"address"}],"stateMutability":"nonpayable","type":"constructor"},{"inputs":[{"internalType":"bytes32","name":"operationId","type":"bytes32"}],"name":"AccessManagerAlreadyScheduled","type":"error"},{"inputs":[],"name":"AccessManagerBadConfirmation","type":"error"},{"inputs":[{"internalType":"bytes32","name":"operationId","type":"bytes32"}],"name":"AccessManagerExpired","type":"error"},{"inputs":[{"internalType":"address","name":"initialAdmin","type":"address"}],"name":"AccessManagerInvalidInitialAdmin","type":"error"},{"inputs":[{"internalType":"uint64","name":"roleId","type":"uint64"}],"name":"AccessManagerLockedRole","type":"error"},{"inputs":[{"internalType":"bytes32","name":"operationId","type":"bytes32"}],"name":"AccessManagerNotReady","type":"error"},{"inputs":[{"internalType":"bytes32","name":"operationId","type":"bytes32"}],"name":"AccessManagerNotScheduled","type":"error"},{"inputs":[{"internalType":"address","name":"msgsender","type":"address"},{"internalType":"uint64","name":"roleId","type":"uint64"}],"name":"AccessManagerUnauthorizedAccount","type":"error"},{"inputs":[{"internalType":"address","name":"caller","type":"address"},{"internalType":"address","name":"target","type":"address"},{"internalType":"bytes4","name":"selector","type":"bytes4"}],"name":"AccessManagerUnauthorizedCall","type":"error"},{"inputs":[{"internalType":"address","name":"msgsender","type":"address"},{"internalType":"address","name":"caller","type":"address"},{"internalType":"address","name":"target","type":"address"},{"internalType":"bytes4","name":"selector","type":"bytes4"}],"name":"AccessManagerUnauthorizedCancel","type":"error"},{"inputs":[{"internalType":"address","name":"target","type":"address"}],"name":"AccessManagerUnauthorizedConsume","type":"error"},{"inputs":[{"internalType":"address","name":"target","type":"address"}],"name":"AddressEmptyCode","type":"error"},{"inputs":[],"name":"FailedCall","type":"error"},{"inputs":[{"internalType":"uint256","name":"balance","type":"uint256"},{"internalType":"uint256","name":"needed","type":"uint256"}],"name":"InsufficientBalance","type":"error"},{"inputs":[{"internalType":"uint8","name":"bits","type":"uint8"},{"internalType":"uint256","name":"value","type":"uint256"}],"name":"SafeCastOverflowedUintDowncast","type":"error"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"bytes32","name":"operationId","type":"bytes32"},{"indexed":true,"internalType":"uint32","name":"nonce","type":"uint32"}],"name":"OperationCanceled","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"bytes32","name":"operationId","type":"bytes32"},{"indexed":true,"internalType":"uint32","name":"nonce","type":"uint32"}],"name":"OperationExecuted","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"bytes32","name":"operationId","type":"bytes32"},{"indexed":true,"internalType":"uint32","name":"nonce","type":"uint32"},{"indexed":false,"internalType":"uint48","name":"schedule","type":"uint48"},{"indexed":false,"internalType":"address","name":"caller","type":"address"},{"indexed":false,"internalType":"address","name":"target","type":"address"},{"indexed":false,"internalType":"bytes","name":"data","type":"bytes"}],"name":"OperationScheduled","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"uint64","name":"roleId","type":"uint64"},{"indexed":true,"internalType":"uint64","name":"admin","type":"uint64"}],"name":"RoleAdminChanged","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"uint64","name":"roleId","type":"uint64"},{"indexed":false,"internalType":"uint32","name":"delay","type":"uint32"},{"indexed":false,"internalType":"uint48","name":"since","type":"uint48"}],"name":"RoleGrantDelayChanged","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"uint64","name":"roleId","type":"uint64"},{"indexed":true,"internalType":"address","name":"account","type":"address"},{"indexed":false,"internalType":"uint32","name":"delay","type":"uint32"},{"indexed":false,"internalType":"uint48","name":"since","type":"uint48"},{"indexed":false,"internalType":"bool","name":"newMember","type":"bool"}],"name":"RoleGranted","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"uint64","name":"roleId","type":"uint64"},{"indexed":true,"internalType":"uint64","name":"guardian","type":"uint64"}],"name":"RoleGuardianChanged","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"uint64","name":"roleId","type":"uint64"},{"indexed":false,"internalType":"string","name":"label","type":"string"}],"name":"RoleLabel","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"uint64","name":"roleId","type":"uint64"},{"indexed":true,"internalType":"address","name":"account","type":"address"}],"name":"RoleRevoked","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"target","type":"address"},{"indexed":false,"internalType":"uint32","name":"delay","type":"uint32"},{"indexed":false,"internalType":"uint48","name":"since","type":"uint48"}],"name":"TargetAdminDelayUpdated","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"target","type":"address"},{"indexed":false,"internalType":"bool","name":"closed","type":"bool"}],"name":"TargetClosed","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"target","type":"address"},{"indexed":false,"internalType":"bytes4","name":"selector","type":"bytes4"},{"indexed":true,"internalType":"uint64","name":"roleId","type":"uint64"}],"name":"TargetFunctionRoleUpdated","type":"event"},{"inputs":[],"name":"ADMIN_ROLE","outputs":[{"internalType":"uint64","name":"","type":"uint64"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"PUBLIC_ROLE","outputs":[{"internalType":"uint64","name":"","type":"uint64"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"caller","type":"address"},{"internalType":"address","name":"target","type":"address"},{"internalType":"bytes4","name":"selector","type":"bytes4"}],"name":"canCall","outputs":[{"internalType":"bool","name":"immediate","type":"bool"},{"internalType":"uint32","name":"delay","type":"uint32"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"caller","type":"address"},{"internalType":"address","name":"target","type":"address"},{"internalType":"bytes","name":"data","type":"bytes"}],"name":"cancel","outputs":[{"internalType":"uint32","name":"","type":"uint32"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"caller","type":"address"},{"internalType":"bytes","name":"data","type":"bytes"}],"name":"consumeScheduledOp","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"target","type":"address"},{"internalType":"bytes","name":"data","type":"bytes"}],"name":"execute","outputs":[{"internalType":"uint32","name":"","type":"uint32"}],"stateMutability":"payable","type":"function"},{"inputs":[],"name":"expiration","outputs":[{"internalType":"uint32","name":"","type":"uint32"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint64","name":"roleId","type":"uint64"},{"internalType":"address","name":"account","type":"address"}],"name":"getAccess","outputs":[{"internalType":"uint48","name":"since","type":"uint48"},{"internalType":"uint32","name":"currentDelay","type":"uint32"},{"internalType":"uint32","name":"pendingDelay","type":"uint32"},{"internalType":"uint48","name":"effect","type":"uint48"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"bytes32","name":"id","type":"bytes32"}],"name":"getNonce","outputs":[{"internalType":"uint32","name":"","type":"uint32"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint64","name":"roleId","type":"uint64"}],"name":"getRoleAdmin","outputs":[{"internalType":"uint64","name":"","type":"uint64"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint64","name":"roleId","type":"uint64"}],"name":"getRoleGrantDelay","outputs":[{"internalType":"uint32","name":"","type":"uint32"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint64","name":"roleId","type":"uint64"}],"name":"getRoleGuardian","outputs":[{"internalType":"uint64","name":"","type":"uint64"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"bytes32","name":"id","type":"bytes32"}],"name":"getSchedule","outputs":[{"internalType":"uint48","name":"","type":"uint48"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"target","type":"address"}],"name":"getTargetAdminDelay","outputs":[{"internalType":"uint32","name":"","type":"uint32"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"target","type":"address"},{"internalType":"bytes4","name":"selector","type":"bytes4"}],"name":"getTargetFunctionRole","outputs":[{"internalType":"uint64","name":"","type":"uint64"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint64","name":"roleId","type":"uint64"},{"internalType":"address","name":"account","type":"address"},{"internalType":"uint32","name":"executionDelay","type":"uint32"}],"name":"grantRole","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint64","name":"roleId","type":"uint64"},{"internalType":"address","name":"account","type":"address"}],"name":"hasRole","outputs":[{"internalType":"bool","name":"isMember","type":"bool"},{"internalType":"uint32","name":"executionDelay","type":"uint32"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"caller","type":"address"},{"internalType":"address","name":"target","type":"address"},{"internalType":"bytes","name":"data","type":"bytes"}],"name":"hashOperation","outputs":[{"internalType":"bytes32","name":"","type":"bytes32"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"target","type":"address"}],"name":"isTargetClosed","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint64","name":"roleId","type":"uint64"},{"internalType":"string","name":"label","type":"string"}],"name":"labelRole","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"minSetback","outputs":[{"internalType":"uint32","name":"","type":"uint32"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"bytes[]","name":"data","type":"bytes[]"}],"name":"multicall","outputs":[{"internalType":"bytes[]","name":"results","type":"bytes[]"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint64","name":"roleId","type":"uint64"},{"internalType":"address","name":"callerConfirmation","type":"address"}],"name":"renounceRole","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint64","name":"roleId","type":"uint64"},{"internalType":"address","name":"account","type":"address"}],"name":"revokeRole","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"target","type":"address"},{"internalType":"bytes","name":"data","type":"bytes"},{"internalType":"uint48","name":"when","type":"uint48"}],"name":"schedule","outputs":[{"internalType":"bytes32","name":"operationId","type":"bytes32"},{"internalType":"uint32","name":"nonce","type":"uint32"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint64","name":"roleId","type":"uint64"},{"internalType":"uint32","name":"newDelay","type":"uint32"}],"name":"setGrantDelay","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint64","name":"roleId","type":"uint64"},{"internalType":"uint64","name":"admin","type":"uint64"}],"name":"setRoleAdmin","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint64","name":"roleId","type":"uint64"},{"internalType":"uint64","name":"guardian","type":"uint64"}],"name":"setRoleGuardian","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"target","type":"address"},{"internalType":"uint32","name":"newDelay","type":"uint32"}],"name":"setTargetAdminDelay","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"target","type":"address"},{"internalType":"bool","name":"closed","type":"bool"}],"name":"setTargetClosed","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"target","type":"address"},{"internalType":"bytes4[]","name":"selectors","type":"bytes4[]"},{"internalType":"uint64","name":"roleId","type":"uint64"}],"name":"setTargetFunctionRole","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"target","type":"address"},{"internalType":"address","name":"newAuthority","type":"address"}],"name":"updateAuthority","outputs":[],"stateMutability":"nonpayable","type":"function"}],"evm":{"bytecode":{"functionDebugData":{"@_4604":{"entryPoint":null,"id":4604,"parameterSlots":1,"returnSlots":0},"@_getFullAt_14581":{"entryPoint":1016,"id":14581,"parameterSlots":2,"returnSlots":3},"@_grantRole_5108":{"entryPoint":111,"id":5108,"parameterSlots":4,"returnSlots":1},"@getFull_14601":{"entryPoint":983,"id":14601,"parameterSlots":1,"returnSlots":3},"@get_14619":{"entryPoint":937,"id":14619,"parameterSlots":1,"returnSlots":1},"@max_11392":{"entryPoint":967,"id":11392,"parameterSlots":2,"returnSlots":1},"@pack_14764":{"entryPoint":null,"id":14764,"parameterSlots":3,"returnSlots":1},"@ternary_11373":{"entryPoint":null,"id":11373,"parameterSlots":3,"returnSlots":1},"@timestamp_14513":{"entryPoint":693,"id":14513,"parameterSlots":0,"returnSlots":1},"@toDelay_14543":{"entryPoint":708,"id":14543,"parameterSlots":1,"returnSlots":1},"@toUint48_13481":{"entryPoint":883,"id":13481,"parameterSlots":1,"returnSlots":1},"@toUint_14490":{"entryPoint":null,"id":14490,"parameterSlots":1,"returnSlots":1},"@unpack_14726":{"entryPoint":null,"id":14726,"parameterSlots":1,"returnSlots":3},"@withUpdate_14675":{"entryPoint":717,"id":14675,"parameterSlots":3,"returnSlots":2},"abi_decode_tuple_t_address_fromMemory":{"entryPoint":1089,"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_rational_48_by_1_t_uint256__to_t_uint8_t_uint256__fromStack_reversed":{"entryPoint":null,"id":null,"parameterSlots":3,"returnSlots":1},"abi_encode_tuple_t_uint32_t_uint48_t_bool__to_t_uint32_t_uint48_t_bool__fromStack_reversed":{"entryPoint":null,"id":null,"parameterSlots":4,"returnSlots":1},"abi_encode_tuple_t_uint64__to_t_uint64__fromStack_reversed":{"entryPoint":null,"id":null,"parameterSlots":2,"returnSlots":1},"checked_add_t_uint48":{"entryPoint":1154,"id":null,"parameterSlots":2,"returnSlots":1},"checked_sub_t_uint32":{"entryPoint":1184,"id":null,"parameterSlots":2,"returnSlots":1},"panic_error_0x11":{"entryPoint":1134,"id":null,"parameterSlots":0,"returnSlots":0}},"generatedSources":[{"ast":{"nativeSrc":"0:1849:87","nodeType":"YulBlock","src":"0:1849:87","statements":[{"nativeSrc":"6:3:87","nodeType":"YulBlock","src":"6:3:87","statements":[]},{"body":{"nativeSrc":"95:209:87","nodeType":"YulBlock","src":"95:209:87","statements":[{"body":{"nativeSrc":"141:16:87","nodeType":"YulBlock","src":"141:16:87","statements":[{"expression":{"arguments":[{"kind":"number","nativeSrc":"150:1:87","nodeType":"YulLiteral","src":"150:1:87","type":"","value":"0"},{"kind":"number","nativeSrc":"153:1:87","nodeType":"YulLiteral","src":"153:1:87","type":"","value":"0"}],"functionName":{"name":"revert","nativeSrc":"143:6:87","nodeType":"YulIdentifier","src":"143:6:87"},"nativeSrc":"143:12:87","nodeType":"YulFunctionCall","src":"143:12:87"},"nativeSrc":"143:12:87","nodeType":"YulExpressionStatement","src":"143:12:87"}]},"condition":{"arguments":[{"arguments":[{"name":"dataEnd","nativeSrc":"116:7:87","nodeType":"YulIdentifier","src":"116:7:87"},{"name":"headStart","nativeSrc":"125:9:87","nodeType":"YulIdentifier","src":"125:9:87"}],"functionName":{"name":"sub","nativeSrc":"112:3:87","nodeType":"YulIdentifier","src":"112:3:87"},"nativeSrc":"112:23:87","nodeType":"YulFunctionCall","src":"112:23:87"},{"kind":"number","nativeSrc":"137:2:87","nodeType":"YulLiteral","src":"137:2:87","type":"","value":"32"}],"functionName":{"name":"slt","nativeSrc":"108:3:87","nodeType":"YulIdentifier","src":"108:3:87"},"nativeSrc":"108:32:87","nodeType":"YulFunctionCall","src":"108:32:87"},"nativeSrc":"105:52:87","nodeType":"YulIf","src":"105:52:87"},{"nativeSrc":"166:29:87","nodeType":"YulVariableDeclaration","src":"166:29:87","value":{"arguments":[{"name":"headStart","nativeSrc":"185:9:87","nodeType":"YulIdentifier","src":"185:9:87"}],"functionName":{"name":"mload","nativeSrc":"179:5:87","nodeType":"YulIdentifier","src":"179:5:87"},"nativeSrc":"179:16:87","nodeType":"YulFunctionCall","src":"179:16:87"},"variables":[{"name":"value","nativeSrc":"170:5:87","nodeType":"YulTypedName","src":"170:5:87","type":""}]},{"body":{"nativeSrc":"258:16:87","nodeType":"YulBlock","src":"258:16:87","statements":[{"expression":{"arguments":[{"kind":"number","nativeSrc":"267:1:87","nodeType":"YulLiteral","src":"267:1:87","type":"","value":"0"},{"kind":"number","nativeSrc":"270:1:87","nodeType":"YulLiteral","src":"270:1:87","type":"","value":"0"}],"functionName":{"name":"revert","nativeSrc":"260:6:87","nodeType":"YulIdentifier","src":"260:6:87"},"nativeSrc":"260:12:87","nodeType":"YulFunctionCall","src":"260:12:87"},"nativeSrc":"260:12:87","nodeType":"YulExpressionStatement","src":"260:12:87"}]},"condition":{"arguments":[{"arguments":[{"name":"value","nativeSrc":"217:5:87","nodeType":"YulIdentifier","src":"217:5:87"},{"arguments":[{"name":"value","nativeSrc":"228:5:87","nodeType":"YulIdentifier","src":"228:5:87"},{"arguments":[{"arguments":[{"kind":"number","nativeSrc":"243:3:87","nodeType":"YulLiteral","src":"243:3:87","type":"","value":"160"},{"kind":"number","nativeSrc":"248:1:87","nodeType":"YulLiteral","src":"248:1:87","type":"","value":"1"}],"functionName":{"name":"shl","nativeSrc":"239:3:87","nodeType":"YulIdentifier","src":"239:3:87"},"nativeSrc":"239:11:87","nodeType":"YulFunctionCall","src":"239:11:87"},{"kind":"number","nativeSrc":"252:1:87","nodeType":"YulLiteral","src":"252:1:87","type":"","value":"1"}],"functionName":{"name":"sub","nativeSrc":"235:3:87","nodeType":"YulIdentifier","src":"235:3:87"},"nativeSrc":"235:19:87","nodeType":"YulFunctionCall","src":"235:19:87"}],"functionName":{"name":"and","nativeSrc":"224:3:87","nodeType":"YulIdentifier","src":"224:3:87"},"nativeSrc":"224:31:87","nodeType":"YulFunctionCall","src":"224:31:87"}],"functionName":{"name":"eq","nativeSrc":"214:2:87","nodeType":"YulIdentifier","src":"214:2:87"},"nativeSrc":"214:42:87","nodeType":"YulFunctionCall","src":"214:42:87"}],"functionName":{"name":"iszero","nativeSrc":"207:6:87","nodeType":"YulIdentifier","src":"207:6:87"},"nativeSrc":"207:50:87","nodeType":"YulFunctionCall","src":"207:50:87"},"nativeSrc":"204:70:87","nodeType":"YulIf","src":"204:70:87"},{"nativeSrc":"283:15:87","nodeType":"YulAssignment","src":"283:15:87","value":{"name":"value","nativeSrc":"293:5:87","nodeType":"YulIdentifier","src":"293:5:87"},"variableNames":[{"name":"value0","nativeSrc":"283:6:87","nodeType":"YulIdentifier","src":"283:6:87"}]}]},"name":"abi_decode_tuple_t_address_fromMemory","nativeSrc":"14:290:87","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nativeSrc":"61:9:87","nodeType":"YulTypedName","src":"61:9:87","type":""},{"name":"dataEnd","nativeSrc":"72:7:87","nodeType":"YulTypedName","src":"72:7:87","type":""}],"returnVariables":[{"name":"value0","nativeSrc":"84:6:87","nodeType":"YulTypedName","src":"84:6:87","type":""}],"src":"14:290:87"},{"body":{"nativeSrc":"410:102:87","nodeType":"YulBlock","src":"410:102:87","statements":[{"nativeSrc":"420:26:87","nodeType":"YulAssignment","src":"420:26:87","value":{"arguments":[{"name":"headStart","nativeSrc":"432:9:87","nodeType":"YulIdentifier","src":"432:9:87"},{"kind":"number","nativeSrc":"443:2:87","nodeType":"YulLiteral","src":"443:2:87","type":"","value":"32"}],"functionName":{"name":"add","nativeSrc":"428:3:87","nodeType":"YulIdentifier","src":"428:3:87"},"nativeSrc":"428:18:87","nodeType":"YulFunctionCall","src":"428:18:87"},"variableNames":[{"name":"tail","nativeSrc":"420:4:87","nodeType":"YulIdentifier","src":"420:4:87"}]},{"expression":{"arguments":[{"name":"headStart","nativeSrc":"462:9:87","nodeType":"YulIdentifier","src":"462:9:87"},{"arguments":[{"name":"value0","nativeSrc":"477:6:87","nodeType":"YulIdentifier","src":"477:6:87"},{"arguments":[{"arguments":[{"kind":"number","nativeSrc":"493:3:87","nodeType":"YulLiteral","src":"493:3:87","type":"","value":"160"},{"kind":"number","nativeSrc":"498:1:87","nodeType":"YulLiteral","src":"498:1:87","type":"","value":"1"}],"functionName":{"name":"shl","nativeSrc":"489:3:87","nodeType":"YulIdentifier","src":"489:3:87"},"nativeSrc":"489:11:87","nodeType":"YulFunctionCall","src":"489:11:87"},{"kind":"number","nativeSrc":"502:1:87","nodeType":"YulLiteral","src":"502:1:87","type":"","value":"1"}],"functionName":{"name":"sub","nativeSrc":"485:3:87","nodeType":"YulIdentifier","src":"485:3:87"},"nativeSrc":"485:19:87","nodeType":"YulFunctionCall","src":"485:19:87"}],"functionName":{"name":"and","nativeSrc":"473:3:87","nodeType":"YulIdentifier","src":"473:3:87"},"nativeSrc":"473:32:87","nodeType":"YulFunctionCall","src":"473:32:87"}],"functionName":{"name":"mstore","nativeSrc":"455:6:87","nodeType":"YulIdentifier","src":"455:6:87"},"nativeSrc":"455:51:87","nodeType":"YulFunctionCall","src":"455:51:87"},"nativeSrc":"455:51:87","nodeType":"YulExpressionStatement","src":"455:51:87"}]},"name":"abi_encode_tuple_t_address__to_t_address__fromStack_reversed","nativeSrc":"309:203:87","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nativeSrc":"379:9:87","nodeType":"YulTypedName","src":"379:9:87","type":""},{"name":"value0","nativeSrc":"390:6:87","nodeType":"YulTypedName","src":"390:6:87","type":""}],"returnVariables":[{"name":"tail","nativeSrc":"401:4:87","nodeType":"YulTypedName","src":"401:4:87","type":""}],"src":"309:203:87"},{"body":{"nativeSrc":"616:101:87","nodeType":"YulBlock","src":"616:101:87","statements":[{"nativeSrc":"626:26:87","nodeType":"YulAssignment","src":"626:26:87","value":{"arguments":[{"name":"headStart","nativeSrc":"638:9:87","nodeType":"YulIdentifier","src":"638:9:87"},{"kind":"number","nativeSrc":"649:2:87","nodeType":"YulLiteral","src":"649:2:87","type":"","value":"32"}],"functionName":{"name":"add","nativeSrc":"634:3:87","nodeType":"YulIdentifier","src":"634:3:87"},"nativeSrc":"634:18:87","nodeType":"YulFunctionCall","src":"634:18:87"},"variableNames":[{"name":"tail","nativeSrc":"626:4:87","nodeType":"YulIdentifier","src":"626:4:87"}]},{"expression":{"arguments":[{"name":"headStart","nativeSrc":"668:9:87","nodeType":"YulIdentifier","src":"668:9:87"},{"arguments":[{"name":"value0","nativeSrc":"683:6:87","nodeType":"YulIdentifier","src":"683:6:87"},{"arguments":[{"arguments":[{"kind":"number","nativeSrc":"699:2:87","nodeType":"YulLiteral","src":"699:2:87","type":"","value":"64"},{"kind":"number","nativeSrc":"703:1:87","nodeType":"YulLiteral","src":"703:1:87","type":"","value":"1"}],"functionName":{"name":"shl","nativeSrc":"695:3:87","nodeType":"YulIdentifier","src":"695:3:87"},"nativeSrc":"695:10:87","nodeType":"YulFunctionCall","src":"695:10:87"},{"kind":"number","nativeSrc":"707:1:87","nodeType":"YulLiteral","src":"707:1:87","type":"","value":"1"}],"functionName":{"name":"sub","nativeSrc":"691:3:87","nodeType":"YulIdentifier","src":"691:3:87"},"nativeSrc":"691:18:87","nodeType":"YulFunctionCall","src":"691:18:87"}],"functionName":{"name":"and","nativeSrc":"679:3:87","nodeType":"YulIdentifier","src":"679:3:87"},"nativeSrc":"679:31:87","nodeType":"YulFunctionCall","src":"679:31:87"}],"functionName":{"name":"mstore","nativeSrc":"661:6:87","nodeType":"YulIdentifier","src":"661:6:87"},"nativeSrc":"661:50:87","nodeType":"YulFunctionCall","src":"661:50:87"},"nativeSrc":"661:50:87","nodeType":"YulExpressionStatement","src":"661:50:87"}]},"name":"abi_encode_tuple_t_uint64__to_t_uint64__fromStack_reversed","nativeSrc":"517:200:87","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nativeSrc":"585:9:87","nodeType":"YulTypedName","src":"585:9:87","type":""},{"name":"value0","nativeSrc":"596:6:87","nodeType":"YulTypedName","src":"596:6:87","type":""}],"returnVariables":[{"name":"tail","nativeSrc":"607:4:87","nodeType":"YulTypedName","src":"607:4:87","type":""}],"src":"517:200:87"},{"body":{"nativeSrc":"754:95:87","nodeType":"YulBlock","src":"754:95:87","statements":[{"expression":{"arguments":[{"kind":"number","nativeSrc":"771:1:87","nodeType":"YulLiteral","src":"771:1:87","type":"","value":"0"},{"arguments":[{"kind":"number","nativeSrc":"778:3:87","nodeType":"YulLiteral","src":"778:3:87","type":"","value":"224"},{"kind":"number","nativeSrc":"783:10:87","nodeType":"YulLiteral","src":"783:10:87","type":"","value":"0x4e487b71"}],"functionName":{"name":"shl","nativeSrc":"774:3:87","nodeType":"YulIdentifier","src":"774:3:87"},"nativeSrc":"774:20:87","nodeType":"YulFunctionCall","src":"774:20:87"}],"functionName":{"name":"mstore","nativeSrc":"764:6:87","nodeType":"YulIdentifier","src":"764:6:87"},"nativeSrc":"764:31:87","nodeType":"YulFunctionCall","src":"764:31:87"},"nativeSrc":"764:31:87","nodeType":"YulExpressionStatement","src":"764:31:87"},{"expression":{"arguments":[{"kind":"number","nativeSrc":"811:1:87","nodeType":"YulLiteral","src":"811:1:87","type":"","value":"4"},{"kind":"number","nativeSrc":"814:4:87","nodeType":"YulLiteral","src":"814:4:87","type":"","value":"0x11"}],"functionName":{"name":"mstore","nativeSrc":"804:6:87","nodeType":"YulIdentifier","src":"804:6:87"},"nativeSrc":"804:15:87","nodeType":"YulFunctionCall","src":"804:15:87"},"nativeSrc":"804:15:87","nodeType":"YulExpressionStatement","src":"804:15:87"},{"expression":{"arguments":[{"kind":"number","nativeSrc":"835:1:87","nodeType":"YulLiteral","src":"835:1:87","type":"","value":"0"},{"kind":"number","nativeSrc":"838:4:87","nodeType":"YulLiteral","src":"838:4:87","type":"","value":"0x24"}],"functionName":{"name":"revert","nativeSrc":"828:6:87","nodeType":"YulIdentifier","src":"828:6:87"},"nativeSrc":"828:15:87","nodeType":"YulFunctionCall","src":"828:15:87"},"nativeSrc":"828:15:87","nodeType":"YulExpressionStatement","src":"828:15:87"}]},"name":"panic_error_0x11","nativeSrc":"722:127:87","nodeType":"YulFunctionDefinition","src":"722:127:87"},{"body":{"nativeSrc":"901:132:87","nodeType":"YulBlock","src":"901:132:87","statements":[{"nativeSrc":"911:58:87","nodeType":"YulAssignment","src":"911:58:87","value":{"arguments":[{"arguments":[{"name":"x","nativeSrc":"926:1:87","nodeType":"YulIdentifier","src":"926:1:87"},{"kind":"number","nativeSrc":"929:14:87","nodeType":"YulLiteral","src":"929:14:87","type":"","value":"0xffffffffffff"}],"functionName":{"name":"and","nativeSrc":"922:3:87","nodeType":"YulIdentifier","src":"922:3:87"},"nativeSrc":"922:22:87","nodeType":"YulFunctionCall","src":"922:22:87"},{"arguments":[{"name":"y","nativeSrc":"950:1:87","nodeType":"YulIdentifier","src":"950:1:87"},{"kind":"number","nativeSrc":"953:14:87","nodeType":"YulLiteral","src":"953:14:87","type":"","value":"0xffffffffffff"}],"functionName":{"name":"and","nativeSrc":"946:3:87","nodeType":"YulIdentifier","src":"946:3:87"},"nativeSrc":"946:22:87","nodeType":"YulFunctionCall","src":"946:22:87"}],"functionName":{"name":"add","nativeSrc":"918:3:87","nodeType":"YulIdentifier","src":"918:3:87"},"nativeSrc":"918:51:87","nodeType":"YulFunctionCall","src":"918:51:87"},"variableNames":[{"name":"sum","nativeSrc":"911:3:87","nodeType":"YulIdentifier","src":"911:3:87"}]},{"body":{"nativeSrc":"1005:22:87","nodeType":"YulBlock","src":"1005:22:87","statements":[{"expression":{"arguments":[],"functionName":{"name":"panic_error_0x11","nativeSrc":"1007:16:87","nodeType":"YulIdentifier","src":"1007:16:87"},"nativeSrc":"1007:18:87","nodeType":"YulFunctionCall","src":"1007:18:87"},"nativeSrc":"1007:18:87","nodeType":"YulExpressionStatement","src":"1007:18:87"}]},"condition":{"arguments":[{"name":"sum","nativeSrc":"984:3:87","nodeType":"YulIdentifier","src":"984:3:87"},{"kind":"number","nativeSrc":"989:14:87","nodeType":"YulLiteral","src":"989:14:87","type":"","value":"0xffffffffffff"}],"functionName":{"name":"gt","nativeSrc":"981:2:87","nodeType":"YulIdentifier","src":"981:2:87"},"nativeSrc":"981:23:87","nodeType":"YulFunctionCall","src":"981:23:87"},"nativeSrc":"978:49:87","nodeType":"YulIf","src":"978:49:87"}]},"name":"checked_add_t_uint48","nativeSrc":"854:179:87","nodeType":"YulFunctionDefinition","parameters":[{"name":"x","nativeSrc":"884:1:87","nodeType":"YulTypedName","src":"884:1:87","type":""},{"name":"y","nativeSrc":"887:1:87","nodeType":"YulTypedName","src":"887:1:87","type":""}],"returnVariables":[{"name":"sum","nativeSrc":"893:3:87","nodeType":"YulTypedName","src":"893:3:87","type":""}],"src":"854:179:87"},{"body":{"nativeSrc":"1185:216:87","nodeType":"YulBlock","src":"1185:216:87","statements":[{"nativeSrc":"1195:26:87","nodeType":"YulAssignment","src":"1195:26:87","value":{"arguments":[{"name":"headStart","nativeSrc":"1207:9:87","nodeType":"YulIdentifier","src":"1207:9:87"},{"kind":"number","nativeSrc":"1218:2:87","nodeType":"YulLiteral","src":"1218:2:87","type":"","value":"96"}],"functionName":{"name":"add","nativeSrc":"1203:3:87","nodeType":"YulIdentifier","src":"1203:3:87"},"nativeSrc":"1203:18:87","nodeType":"YulFunctionCall","src":"1203:18:87"},"variableNames":[{"name":"tail","nativeSrc":"1195:4:87","nodeType":"YulIdentifier","src":"1195:4:87"}]},{"expression":{"arguments":[{"name":"headStart","nativeSrc":"1237:9:87","nodeType":"YulIdentifier","src":"1237:9:87"},{"arguments":[{"name":"value0","nativeSrc":"1252:6:87","nodeType":"YulIdentifier","src":"1252:6:87"},{"kind":"number","nativeSrc":"1260:10:87","nodeType":"YulLiteral","src":"1260:10:87","type":"","value":"0xffffffff"}],"functionName":{"name":"and","nativeSrc":"1248:3:87","nodeType":"YulIdentifier","src":"1248:3:87"},"nativeSrc":"1248:23:87","nodeType":"YulFunctionCall","src":"1248:23:87"}],"functionName":{"name":"mstore","nativeSrc":"1230:6:87","nodeType":"YulIdentifier","src":"1230:6:87"},"nativeSrc":"1230:42:87","nodeType":"YulFunctionCall","src":"1230:42:87"},"nativeSrc":"1230:42:87","nodeType":"YulExpressionStatement","src":"1230:42:87"},{"expression":{"arguments":[{"arguments":[{"name":"headStart","nativeSrc":"1292:9:87","nodeType":"YulIdentifier","src":"1292:9:87"},{"kind":"number","nativeSrc":"1303:2:87","nodeType":"YulLiteral","src":"1303:2:87","type":"","value":"32"}],"functionName":{"name":"add","nativeSrc":"1288:3:87","nodeType":"YulIdentifier","src":"1288:3:87"},"nativeSrc":"1288:18:87","nodeType":"YulFunctionCall","src":"1288:18:87"},{"arguments":[{"name":"value1","nativeSrc":"1312:6:87","nodeType":"YulIdentifier","src":"1312:6:87"},{"kind":"number","nativeSrc":"1320:14:87","nodeType":"YulLiteral","src":"1320:14:87","type":"","value":"0xffffffffffff"}],"functionName":{"name":"and","nativeSrc":"1308:3:87","nodeType":"YulIdentifier","src":"1308:3:87"},"nativeSrc":"1308:27:87","nodeType":"YulFunctionCall","src":"1308:27:87"}],"functionName":{"name":"mstore","nativeSrc":"1281:6:87","nodeType":"YulIdentifier","src":"1281:6:87"},"nativeSrc":"1281:55:87","nodeType":"YulFunctionCall","src":"1281:55:87"},"nativeSrc":"1281:55:87","nodeType":"YulExpressionStatement","src":"1281:55:87"},{"expression":{"arguments":[{"arguments":[{"name":"headStart","nativeSrc":"1356:9:87","nodeType":"YulIdentifier","src":"1356:9:87"},{"kind":"number","nativeSrc":"1367:2:87","nodeType":"YulLiteral","src":"1367:2:87","type":"","value":"64"}],"functionName":{"name":"add","nativeSrc":"1352:3:87","nodeType":"YulIdentifier","src":"1352:3:87"},"nativeSrc":"1352:18:87","nodeType":"YulFunctionCall","src":"1352:18:87"},{"arguments":[{"arguments":[{"name":"value2","nativeSrc":"1386:6:87","nodeType":"YulIdentifier","src":"1386:6:87"}],"functionName":{"name":"iszero","nativeSrc":"1379:6:87","nodeType":"YulIdentifier","src":"1379:6:87"},"nativeSrc":"1379:14:87","nodeType":"YulFunctionCall","src":"1379:14:87"}],"functionName":{"name":"iszero","nativeSrc":"1372:6:87","nodeType":"YulIdentifier","src":"1372:6:87"},"nativeSrc":"1372:22:87","nodeType":"YulFunctionCall","src":"1372:22:87"}],"functionName":{"name":"mstore","nativeSrc":"1345:6:87","nodeType":"YulIdentifier","src":"1345:6:87"},"nativeSrc":"1345:50:87","nodeType":"YulFunctionCall","src":"1345:50:87"},"nativeSrc":"1345:50:87","nodeType":"YulExpressionStatement","src":"1345:50:87"}]},"name":"abi_encode_tuple_t_uint32_t_uint48_t_bool__to_t_uint32_t_uint48_t_bool__fromStack_reversed","nativeSrc":"1038:363:87","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nativeSrc":"1138:9:87","nodeType":"YulTypedName","src":"1138:9:87","type":""},{"name":"value2","nativeSrc":"1149:6:87","nodeType":"YulTypedName","src":"1149:6:87","type":""},{"name":"value1","nativeSrc":"1157:6:87","nodeType":"YulTypedName","src":"1157:6:87","type":""},{"name":"value0","nativeSrc":"1165:6:87","nodeType":"YulTypedName","src":"1165:6:87","type":""}],"returnVariables":[{"name":"tail","nativeSrc":"1176:4:87","nodeType":"YulTypedName","src":"1176:4:87","type":""}],"src":"1038:363:87"},{"body":{"nativeSrc":"1454:122:87","nodeType":"YulBlock","src":"1454:122:87","statements":[{"nativeSrc":"1464:51:87","nodeType":"YulAssignment","src":"1464:51:87","value":{"arguments":[{"arguments":[{"name":"x","nativeSrc":"1480:1:87","nodeType":"YulIdentifier","src":"1480:1:87"},{"kind":"number","nativeSrc":"1483:10:87","nodeType":"YulLiteral","src":"1483:10:87","type":"","value":"0xffffffff"}],"functionName":{"name":"and","nativeSrc":"1476:3:87","nodeType":"YulIdentifier","src":"1476:3:87"},"nativeSrc":"1476:18:87","nodeType":"YulFunctionCall","src":"1476:18:87"},{"arguments":[{"name":"y","nativeSrc":"1500:1:87","nodeType":"YulIdentifier","src":"1500:1:87"},{"kind":"number","nativeSrc":"1503:10:87","nodeType":"YulLiteral","src":"1503:10:87","type":"","value":"0xffffffff"}],"functionName":{"name":"and","nativeSrc":"1496:3:87","nodeType":"YulIdentifier","src":"1496:3:87"},"nativeSrc":"1496:18:87","nodeType":"YulFunctionCall","src":"1496:18:87"}],"functionName":{"name":"sub","nativeSrc":"1472:3:87","nodeType":"YulIdentifier","src":"1472:3:87"},"nativeSrc":"1472:43:87","nodeType":"YulFunctionCall","src":"1472:43:87"},"variableNames":[{"name":"diff","nativeSrc":"1464:4:87","nodeType":"YulIdentifier","src":"1464:4:87"}]},{"body":{"nativeSrc":"1548:22:87","nodeType":"YulBlock","src":"1548:22:87","statements":[{"expression":{"arguments":[],"functionName":{"name":"panic_error_0x11","nativeSrc":"1550:16:87","nodeType":"YulIdentifier","src":"1550:16:87"},"nativeSrc":"1550:18:87","nodeType":"YulFunctionCall","src":"1550:18:87"},"nativeSrc":"1550:18:87","nodeType":"YulExpressionStatement","src":"1550:18:87"}]},"condition":{"arguments":[{"name":"diff","nativeSrc":"1530:4:87","nodeType":"YulIdentifier","src":"1530:4:87"},{"kind":"number","nativeSrc":"1536:10:87","nodeType":"YulLiteral","src":"1536:10:87","type":"","value":"0xffffffff"}],"functionName":{"name":"gt","nativeSrc":"1527:2:87","nodeType":"YulIdentifier","src":"1527:2:87"},"nativeSrc":"1527:20:87","nodeType":"YulFunctionCall","src":"1527:20:87"},"nativeSrc":"1524:46:87","nodeType":"YulIf","src":"1524:46:87"}]},"name":"checked_sub_t_uint32","nativeSrc":"1406:170:87","nodeType":"YulFunctionDefinition","parameters":[{"name":"x","nativeSrc":"1436:1:87","nodeType":"YulTypedName","src":"1436:1:87","type":""},{"name":"y","nativeSrc":"1439:1:87","nodeType":"YulTypedName","src":"1439:1:87","type":""}],"returnVariables":[{"name":"diff","nativeSrc":"1445:4:87","nodeType":"YulTypedName","src":"1445:4:87","type":""}],"src":"1406:170:87"},{"body":{"nativeSrc":"1717:130:87","nodeType":"YulBlock","src":"1717:130:87","statements":[{"nativeSrc":"1727:26:87","nodeType":"YulAssignment","src":"1727:26:87","value":{"arguments":[{"name":"headStart","nativeSrc":"1739:9:87","nodeType":"YulIdentifier","src":"1739:9:87"},{"kind":"number","nativeSrc":"1750:2:87","nodeType":"YulLiteral","src":"1750:2:87","type":"","value":"64"}],"functionName":{"name":"add","nativeSrc":"1735:3:87","nodeType":"YulIdentifier","src":"1735:3:87"},"nativeSrc":"1735:18:87","nodeType":"YulFunctionCall","src":"1735:18:87"},"variableNames":[{"name":"tail","nativeSrc":"1727:4:87","nodeType":"YulIdentifier","src":"1727:4:87"}]},{"expression":{"arguments":[{"name":"headStart","nativeSrc":"1769:9:87","nodeType":"YulIdentifier","src":"1769:9:87"},{"arguments":[{"name":"value0","nativeSrc":"1784:6:87","nodeType":"YulIdentifier","src":"1784:6:87"},{"kind":"number","nativeSrc":"1792:4:87","nodeType":"YulLiteral","src":"1792:4:87","type":"","value":"0xff"}],"functionName":{"name":"and","nativeSrc":"1780:3:87","nodeType":"YulIdentifier","src":"1780:3:87"},"nativeSrc":"1780:17:87","nodeType":"YulFunctionCall","src":"1780:17:87"}],"functionName":{"name":"mstore","nativeSrc":"1762:6:87","nodeType":"YulIdentifier","src":"1762:6:87"},"nativeSrc":"1762:36:87","nodeType":"YulFunctionCall","src":"1762:36:87"},"nativeSrc":"1762:36:87","nodeType":"YulExpressionStatement","src":"1762:36:87"},{"expression":{"arguments":[{"arguments":[{"name":"headStart","nativeSrc":"1818:9:87","nodeType":"YulIdentifier","src":"1818:9:87"},{"kind":"number","nativeSrc":"1829:2:87","nodeType":"YulLiteral","src":"1829:2:87","type":"","value":"32"}],"functionName":{"name":"add","nativeSrc":"1814:3:87","nodeType":"YulIdentifier","src":"1814:3:87"},"nativeSrc":"1814:18:87","nodeType":"YulFunctionCall","src":"1814:18:87"},{"name":"value1","nativeSrc":"1834:6:87","nodeType":"YulIdentifier","src":"1834:6:87"}],"functionName":{"name":"mstore","nativeSrc":"1807:6:87","nodeType":"YulIdentifier","src":"1807:6:87"},"nativeSrc":"1807:34:87","nodeType":"YulFunctionCall","src":"1807:34:87"},"nativeSrc":"1807:34:87","nodeType":"YulExpressionStatement","src":"1807:34:87"}]},"name":"abi_encode_tuple_t_rational_48_by_1_t_uint256__to_t_uint8_t_uint256__fromStack_reversed","nativeSrc":"1581:266:87","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nativeSrc":"1678:9:87","nodeType":"YulTypedName","src":"1678:9:87","type":""},{"name":"value1","nativeSrc":"1689:6:87","nodeType":"YulTypedName","src":"1689:6:87","type":""},{"name":"value0","nativeSrc":"1697:6:87","nodeType":"YulTypedName","src":"1697:6:87","type":""}],"returnVariables":[{"name":"tail","nativeSrc":"1708:4:87","nodeType":"YulTypedName","src":"1708:4:87","type":""}],"src":"1581:266:87"}]},"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_address__to_t_address__fromStack_reversed(headStart, value0) -> tail\n    {\n        tail := add(headStart, 32)\n        mstore(headStart, and(value0, sub(shl(160, 1), 1)))\n    }\n    function abi_encode_tuple_t_uint64__to_t_uint64__fromStack_reversed(headStart, value0) -> tail\n    {\n        tail := add(headStart, 32)\n        mstore(headStart, and(value0, sub(shl(64, 1), 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 checked_add_t_uint48(x, y) -> sum\n    {\n        sum := add(and(x, 0xffffffffffff), and(y, 0xffffffffffff))\n        if gt(sum, 0xffffffffffff) { panic_error_0x11() }\n    }\n    function abi_encode_tuple_t_uint32_t_uint48_t_bool__to_t_uint32_t_uint48_t_bool__fromStack_reversed(headStart, value2, value1, value0) -> tail\n    {\n        tail := add(headStart, 96)\n        mstore(headStart, and(value0, 0xffffffff))\n        mstore(add(headStart, 32), and(value1, 0xffffffffffff))\n        mstore(add(headStart, 64), iszero(iszero(value2)))\n    }\n    function checked_sub_t_uint32(x, y) -> diff\n    {\n        diff := sub(and(x, 0xffffffff), and(y, 0xffffffff))\n        if gt(diff, 0xffffffff) { panic_error_0x11() }\n    }\n    function abi_encode_tuple_t_rational_48_by_1_t_uint256__to_t_uint8_t_uint256__fromStack_reversed(headStart, value1, value0) -> tail\n    {\n        tail := add(headStart, 64)\n        mstore(headStart, and(value0, 0xff))\n        mstore(add(headStart, 32), value1)\n    }\n}","id":87,"language":"Yul","name":"#utility.yul"}],"linkReferences":{},"object":"608060405234801561000f575f5ffd5b50604051612ca3380380612ca383398101604081905261002e91610441565b6001600160a01b03811661005c57604051630409d6d160e11b81525f60048201526024015b60405180910390fd5b6100685f82818061006f565b50506104bc565b5f6002600160401b03196001600160401b038616016100ac5760405163061c6a4360e21b81526001600160401b0386166004820152602401610053565b6001600160401b0385165f9081526001602090815260408083206001600160a01b038816845290915281205465ffffffffffff16159081156101a15763ffffffff85166100f76102b5565b6101019190610482565b905060405180604001604052808265ffffffffffff1681526020016101318663ffffffff166102c460201b60201c565b6001600160701b039081169091526001600160401b0389165f9081526001602090815260408083206001600160a01b038c16845282529091208351815494909201519092166601000000000000026001600160a01b031990931665ffffffffffff90911617919091179055610247565b6001600160401b0387165f9081526001602090815260408083206001600160a01b038a1684529091528120546101ed9166010000000000009091046001600160701b03169086906102cd565b6001600160401b0389165f9081526001602090815260408083206001600160a01b038c168452909152902080546001600160701b03909316660100000000000002600160301b600160a01b03199093169290921790915590505b6040805163ffffffff8616815265ffffffffffff831660208201528315158183015290516001600160a01b038816916001600160401b038a16917ff98448b987f1428e0e230e1f3c6e2ce15b5693eaf31827fbd0b1ec4b424ae7cf9181900360600190a35095945050505050565b5f6102bf42610373565b905090565b63ffffffff1690565b5f80806102e26001600160701b0387166103a9565b90505f61031d8563ffffffff168763ffffffff168463ffffffff1611610308575f610312565b61031288856104a0565b63ffffffff166103c7565b905063ffffffff811661032e6102b5565b6103389190610482565b925063ffffffff8616602083901b67ffffffff0000000016604085901b6dffffffffffff000000000000000016171793505050935093915050565b5f65ffffffffffff8211156103a5576040516306dfcc6560e41b81526030600482015260248101839052604401610053565b5090565b5f806103bd6001600160701b0384166103d7565b5090949350505050565b8082118183180281185b92915050565b5f80806103eb846103e66102b5565b6103f8565b9250925092509193909250565b6001600160501b03602083901c166001600160701b03831665ffffffffffff604085901c811690841681111561043057828282610434565b815f5f5b9250925092509250925092565b5f60208284031215610451575f5ffd5b81516001600160a01b0381168114610467575f5ffd5b9392505050565b634e487b7160e01b5f52601160045260245ffd5b65ffffffffffff81811683821601908111156103d1576103d161046e565b63ffffffff82811682821603908111156103d1576103d161046e565b6127da806104c95f395ff3fe6080604052600436106101db575f3560e01c80636d5115bd116100fd578063b700961311610092578063d22b598911610062578063d22b598914610636578063d6bb62c614610655578063f801a69814610674578063fe0776f5146106ad575f5ffd5b8063b7009613146105a8578063b7d2b162146105e3578063cc1b6c8114610602578063d1f856ee14610617575f5ffd5b8063a166aa89116100cd578063a166aa8914610501578063a64d95ce14610530578063abd9bd2a1461054f578063ac9650d81461057c575f5ffd5b80636d5115bd1461049157806375b238fc146104b0578063853551b8146104c357806394c7d7ee146104e2575f5ffd5b806330cae187116101735780634665096d116101435780634665096d146104035780634c1da1e2146104185780635296295214610437578063530dd45614610456575f5ffd5b806330cae1871461035c5780633adc277a1461037b5780633ca7c02a146103b15780634136a33c146103cb575f5ffd5b806318ff183c116101ae57806318ff183c146102b25780631cff79cd146102d157806325c471a0146102e45780633078f11414610303575f5ffd5b806308d6122d146101df5780630b0a93ba1461020057806312be87271461025f578063167bd39514610293575b5f5ffd5b3480156101ea575f5ffd5b506101fe6101f93660046120c0565b6106cc565b005b34801561020b575f5ffd5b5061024261021a366004612122565b6001600160401b039081165f9081526001602081905260409091200154600160401b90041690565b6040516001600160401b0390911681526020015b60405180910390f35b34801561026a575f5ffd5b5061027e610279366004612122565b61071e565b60405163ffffffff9091168152602001610256565b34801561029e575f5ffd5b506101fe6102ad36600461213b565b610758565b3480156102bd575f5ffd5b506101fe6102cc366004612176565b61076e565b61027e6102df3660046121df565b6107d0565b3480156102ef575f5ffd5b506101fe6102fe366004612242565b6108fc565b34801561030e575f5ffd5b5061032261031d366004612284565b61091e565b604051610256949392919065ffffffffffff948516815263ffffffff93841660208201529190921660408201529116606082015260800190565b348015610367575f5ffd5b506101fe61037636600461229e565b610982565b348015610386575f5ffd5b5061039a6103953660046122cf565b610994565b60405165ffffffffffff9091168152602001610256565b3480156103bc575f5ffd5b506102426001600160401b0381565b3480156103d6575f5ffd5b5061027e6103e53660046122cf565b5f90815260026020526040902054600160301b900463ffffffff1690565b34801561040e575f5ffd5b5062093a8061027e565b348015610423575f5ffd5b5061027e6104323660046122e6565b6109c5565b348015610442575f5ffd5b506101fe61045136600461229e565b6109f2565b348015610461575f5ffd5b50610242610470366004612122565b6001600160401b039081165f90815260016020819052604090912001541690565b34801561049c575f5ffd5b506102426104ab366004612316565b610a04565b3480156104bb575f5ffd5b506102425f81565b3480156104ce575f5ffd5b506101fe6104dd366004612342565b610a3e565b3480156104ed575f5ffd5b506101fe6104fc3660046121df565b610ad5565b34801561050c575f5ffd5b5061052061051b3660046122e6565b610b7f565b6040519015158152602001610256565b34801561053b575f5ffd5b506101fe61054a36600461235d565b610ba6565b34801561055a575f5ffd5b5061056e610569366004612385565b610bb8565b604051908152602001610256565b348015610587575f5ffd5b5061059b6105963660046123e5565b610bf0565b6040516102569190612423565b3480156105b3575f5ffd5b506105c76105c23660046124a7565b610cd5565b60408051921515835263ffffffff909116602083015201610256565b3480156105ee575f5ffd5b506101fe6105fd366004612284565b610d56565b34801561060d575f5ffd5b506206978061027e565b348015610622575f5ffd5b506105c7610631366004612284565b610d6d565b348015610641575f5ffd5b506101fe6106503660046124ef565b610de6565b348015610660575f5ffd5b5061027e61066f366004612385565b610df8565b34801561067f575f5ffd5b5061069361068e36600461250b565b610f4b565b6040805192835263ffffffff909116602083015201610256565b3480156106b8575f5ffd5b506101fe6106c7366004612284565b61108c565b6106d46110b5565b5f5b828110156107175761070f858585848181106106f4576106f4612578565b9050602002016020810190610709919061258c565b8461112c565b6001016106d6565b5050505050565b6001600160401b0381165f9081526001602081905260408220015461075290600160801b90046001600160701b03166111ad565b92915050565b6107606110b5565b61076a82826111cb565b5050565b6107766110b5565b604051637a9e5e4b60e01b81526001600160a01b038281166004830152831690637a9e5e4b906024015f604051808303815f87803b1580156107b6575f5ffd5b505af11580156107c8573d5f5f3e3d5ffd5b505050505050565b5f3381806107e08388888861123c565b91509150811580156107f6575063ffffffff8116155b15610849578287610807888861128d565b6040516381c6f24b60e01b81526001600160a01b0393841660048201529290911660248301526001600160e01b03191660448201526064015b60405180910390fd5b5f61085684898989610bb8565b90505f63ffffffff831615158061087c575061087182610994565b65ffffffffffff1615155b1561088d5761088a826112a4565b90505b6003546108a38a61089e8b8b61128d565b6113a2565b6003819055506108ea8a8a8a8080601f0160208091040260200160405190810160405280939291908181526020018383808284375f920191909152503492506113c7915050565b506003559450505050505b9392505050565b6109046110b5565b61091883836109128661071e565b84611493565b50505050565b6001600160401b0382165f9081526001602090815260408083206001600160a01b03851684529091528120805465ffffffffffff81169291829182919061097490600160301b90046001600160701b03166116d9565b969991985096509350505050565b61098a6110b5565b61076a82826116fa565b5f8181526002602052604081205465ffffffffffff166109b38161179d565b6109bd57806108f5565b5f9392505050565b6001600160a01b0381165f90815260208190526040812060010154610752906001600160701b03166111ad565b6109fa6110b5565b61076a82826117cb565b6001600160a01b0382165f908152602081815260408083206001600160e01b0319851684529091529020546001600160401b031692915050565b610a466110b5565b6001600160401b0383161580610a6457506001600160401b03838116145b15610a8d5760405163061c6a4360e21b81526001600160401b0384166004820152602401610840565b826001600160401b03167f1256f5b5ecb89caec12db449738f2fbcd1ba5806cf38f35413f4e5c15bf6a4508383604051610ac89291906125cf565b60405180910390a2505050565b60408051638fb3603760e01b80825291513392918391638fb36037916004808201926020929091908290030181865afa158015610b14573d5f5f3e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610b3891906125ea565b6001600160e01b03191614610b6b57604051630641fee960e31b81526001600160a01b0382166004820152602401610840565b610717610b7a85838686610bb8565b6112a4565b6001600160a01b03165f90815260208190526040902060010154600160701b900460ff1690565b610bae6110b5565b61076a828261187c565b5f84848484604051602001610bd09493929190612605565b604051602081830303815290604052805190602001209050949350505050565b604080515f815260208101909152606090826001600160401b03811115610c1957610c19612676565b604051908082528060200260200182016040528015610c4c57816020015b6060815260200190600190039081610c375790505b5091505f5b83811015610ccd57610ca830868684818110610c6f57610c6f612578565b9050602002810190610c81919061268a565b85604051602001610c94939291906126cc565b60405160208183030381529060405261198b565b838281518110610cba57610cba612578565b6020908102919091010152600101610c51565b505092915050565b5f5f610ce084610b7f565b15610cef57505f905080610d4e565b306001600160a01b03861603610d1357610d098484611a0d565b5f91509150610d4e565b5f610d1e8585610a04565b90505f5f610d2c8389610d6d565b9150915081610d3c575f5f610d46565b63ffffffff811615815b945094505050505b935093915050565b610d5e6110b5565b610d688282611a23565b505050565b5f8067fffffffffffffffe196001600160401b03851601610d935750600190505f610ddf565b5f5f610d9f868661091e565b5050915091508165ffffffffffff165f14158015610dd45750610dc0611b0c565b65ffffffffffff168265ffffffffffff1611155b93509150610ddf9050565b9250929050565b610dee6110b5565b61076a8282611b1b565b5f3381610e05858561128d565b90505f610e1488888888610bb8565b5f8181526002602052604081205491925065ffffffffffff9091169003610e515760405163060a299b60e41b815260048101829052602401610840565b826001600160a01b0316886001600160a01b031614610eea575f610e755f85610d6d565b5090505f610e8f610e8961021a8b87610a04565b86610d6d565b50905081158015610e9e575080155b15610ee757604051630ff89d4760e21b81526001600160a01b038087166004830152808c1660248301528a1660448201526001600160e01b031985166064820152608401610840565b50505b5f81815260026020526040808220805465ffffffffffff1916908190559051600160301b90910463ffffffff1691829184917fbd9ac67a6e2f6463b80927326310338bcbb4bdb7936ce1365ea3e01067e7b9f791a398975050505050505050565b5f803381610f5b8289898961123c565b9150505f8163ffffffff16610f6e611b0c565b610f7891906126ef565b905063ffffffff82161580610fae57505f8665ffffffffffff16118015610fae57508065ffffffffffff168665ffffffffffff16105b15610fbf5782896108078a8a61128d565b610fd98665ffffffffffff168265ffffffffffff16611bd6565b9550610fe7838a8a8a610bb8565b9450610ff285611be5565b5f8581526002602052604090819020805465ffffffffffff891669ffffffffffffffffffff19821617600160301b9182900463ffffffff90811660010190811692830291909117909255915190955086907f82a2da5dee54ea8021c6545b4444620291e07ee83be6dd57edb175062715f3b490611078908a9088908f908f908f9061270d565b60405180910390a350505094509492505050565b6001600160a01b0381163314610d5e57604051635f159e6360e01b815260040160405180910390fd5b335f806110c3838236611c31565b9150915081610d68578063ffffffff165f0361111d575f6110e48136611cf4565b5060405163f07e038f60e01b81526001600160a01b03871660048201526001600160401b03821660248201529092506044019050610840565b610918610b7a84305f36610bb8565b6001600160a01b0383165f818152602081815260408083206001600160e01b0319871680855290835292819020805467ffffffffffffffff19166001600160401b038716908117909155905192835292917f9ea6790c7dadfd01c9f8b9762b3682607af2c7e79e05a9f9fdf5580dde949151910160405180910390a3505050565b5f5f6111c1836001600160701b03166116d9565b5090949350505050565b6001600160a01b0382165f81815260208190526040908190206001018054841515600160701b0260ff60701b19909116179055517f90d4e7bb7e5d933792b3562e1741306f8be94837e1348dacef9b6f1df56eb1389061123090841515815260200190565b60405180910390a25050565b5f80306001600160a01b0386160361126257611259868585611c31565b91509150611284565b6004831061127e5761127986866105c2878761128d565b611259565b505f9050805b94509492505050565b5f61129b600482848661264f565b6108f591612752565b5f8181526002602052604081205465ffffffffffff811690600160301b900463ffffffff168183036112ec5760405163060a299b60e41b815260048101859052602401610840565b6112f4611b0c565b65ffffffffffff168265ffffffffffff16111561132757604051630c65b5bd60e11b815260048101859052602401610840565b6113308261179d565b1561135157604051631e2975b960e21b815260048101859052602401610840565b5f84815260026020526040808220805465ffffffffffff191690555163ffffffff83169186917f76a2a46953689d4861a5d3f6ed883ad7e6af674a21f8e162707159fc9dde614d9190a39392505050565b6001600160a01b0382165f9081526001600160e01b03198216602052604081206108f5565b6060814710156113f35760405163cf47918160e01b815247600482015260248101839052604401610840565b5f6113ff858486611eda565b905080801561142057505f3d118061142057505f856001600160a01b03163b115b156114355761142d611eef565b9150506108f5565b801561145f57604051639996b31560e01b81526001600160a01b0386166004820152602401610840565b3d156114725761146d611f08565b61148b565b60405163d6bda27560e01b815260040160405180910390fd5b509392505050565b5f67fffffffffffffffe196001600160401b038616016114d15760405163061c6a4360e21b81526001600160401b0386166004820152602401610840565b6001600160401b0385165f9081526001602090815260408083206001600160a01b038816845290915281205465ffffffffffff16159081156115c1578463ffffffff1661151c611b0c565b61152691906126ef565b905060405180604001604052808265ffffffffffff1681526020016115548663ffffffff1663ffffffff1690565b6001600160701b039081169091526001600160401b0389165f9081526001602090815260408083206001600160a01b038c1684528252909120835181549490920151909216600160301b026001600160a01b031990931665ffffffffffff9091161791909117905561166b565b6001600160401b0387165f9081526001602090815260408083206001600160a01b038a16845290915281205461160a91600160301b9091046001600160701b0316908690611f13565b6001600160401b0389165f9081526001602090815260408083206001600160a01b038c168452909152902080546001600160701b03909316600160301b0273ffffffffffffffffffffffffffff000000000000199093169290921790915590505b6040805163ffffffff8616815265ffffffffffff831660208201528315158183015290516001600160a01b038816916001600160401b038a16917ff98448b987f1428e0e230e1f3c6e2ce15b5693eaf31827fbd0b1ec4b424ae7cf9181900360600190a35095945050505050565b5f5f5f6116ed846116e8611b0c565b611fb9565b9250925092509193909250565b6001600160401b038216158061171857506001600160401b03828116145b156117415760405163061c6a4360e21b81526001600160401b0383166004820152602401610840565b6001600160401b038281165f818152600160208190526040808320909101805467ffffffffffffffff19169486169485179055517f1fd6dd7631312dfac2205b52913f99de03b4d7e381d5d27d3dbfe0713e6e63409190a35050565b5f6117a6611b0c565b65ffffffffffff166117bb62093a80846126ef565b65ffffffffffff16111592915050565b6001600160401b03821615806117e957506001600160401b03828116145b156118125760405163061c6a4360e21b81526001600160401b0383166004820152602401610840565b6001600160401b038281165f81815260016020819052604080832090910180546fffffffffffffffff00000000000000001916600160401b958716958602179055517f7a8059630b897b5de4c08ade69f8b90c3ead1f8596d62d10b6c4d14a0afb4ae29190a35050565b67fffffffffffffffe196001600160401b038316016118b95760405163061c6a4360e21b81526001600160401b0383166004820152602401610840565b6001600160401b0382165f908152600160208190526040822001546118f290600160801b90046001600160701b03168362069780611f13565b6001600160401b0385165f818152600160208190526040918290200180546001600160701b03909516600160801b026dffffffffffffffffffffffffffff60801b199095169490941790935591519092507ffeb69018ee8b8fd50ea86348f1267d07673379f72cffdeccec63853ee8ce8b4890610ac8908590859063ffffffff92909216825265ffffffffffff16602082015260400190565b60605f6119988484612005565b90508080156119b957505f3d11806119b957505f846001600160a01b03163b115b156119ce576119c6611eef565b915050610752565b80156119f857604051639996b31560e01b81526001600160a01b0385166004820152602401610840565b3d1561147257611a06611f08565b5092915050565b5f611a1883836113a2565b600354149392505050565b5f67fffffffffffffffe196001600160401b03841601611a615760405163061c6a4360e21b81526001600160401b0384166004820152602401610840565b6001600160401b0383165f9081526001602090815260408083206001600160a01b038616845290915281205465ffffffffffff169003611aa257505f610752565b6001600160401b0383165f8181526001602090815260408083206001600160a01b038716808552925280832080546001600160a01b0319169055519092917ff229baa593af28c41b1d16b748cd7688f0c83aaf92d4be41c44005defe84c16691a350600192915050565b5f611b1642612018565b905090565b6001600160a01b0382165f90815260208190526040812060010154611b4d906001600160701b03168362069780611f13565b6001600160a01b0385165f818152602081815260409182902060010180546dffffffffffffffffffffffffffff19166001600160701b039690961695909517909455805163ffffffff8716815265ffffffffffff841694810194909452919350917fa56b76017453f399ec2327ba00375dbfb1fd070ff854341ad6191e6a2e2de19c9101610ac8565b5f8282188284110282186108f5565b5f8181526002602052604090205465ffffffffffff168015801590611c105750611c0e8161179d565b155b1561076a5760405163813e945960e01b815260048101839052602401610840565b5f806004831015611c4657505f905080610d4e565b306001600160a01b03861603611c6957610d0930611c64868661128d565b611a0d565b5f5f5f611c768787611cf4565b92509250925082158015611c8e5750611c8e30610b7f565b15611ca1575f5f94509450505050610d4e565b5f5f611cad848b610d6d565b9150915081611cc6575f5f965096505050505050610d4e565b611cdc8363ffffffff168263ffffffff16611bd6565b63ffffffff8116159b909a5098505050505050505050565b5f80806004841015611d0d57505f915081905080611ed3565b5f611d18868661128d565b90506001600160e01b031981166310a6aa3760e31b1480611d4957506001600160e01b031981166330cae18760e01b145b80611d6457506001600160e01b0319811663294b14a960e11b145b80611d7f57506001600160e01b03198116635326cae760e11b145b80611d9a57506001600160e01b0319811663d22b598960e01b145b15611daf5760015f5f93509350935050611ed3565b6001600160e01b0319811663063fc60f60e21b1480611dde57506001600160e01b0319811663167bd39560e01b145b80611df957506001600160e01b031981166308d6122d60e01b145b15611e38575f611e0d60246004888a61264f565b810190611e1a91906122e6565b90505f611e26826109c5565b600196505f95509350611ed392505050565b6001600160e01b0319811663012e238d60e51b1480611e6757506001600160e01b03198116635be958b160e11b145b15611ebf575f611e7b60246004888a61264f565b810190611e889190612122565b90506001611eb1826001600160401b039081165f90815260016020819052604090912001541690565b5f9450945094505050611ed3565b5f611eca3083610a04565b5f935093509350505b9250925092565b5f5f5f83516020850186885af1949350505050565b6040513d81523d5f602083013e3d602001810160405290565b6040513d5f823e3d81fd5b5f5f5f611f28866001600160701b03166111ad565b90505f611f638563ffffffff168763ffffffff168463ffffffff1611611f4e575f611f58565b611f588885612788565b63ffffffff16611bd6565b90508063ffffffff16611f74611b0c565b611f7e91906126ef565b925063ffffffff8616602083901b67ffffffff0000000016604085901b6dffffffffffff000000000000000016171793505050935093915050565b69ffffffffffffffffffff602083901c166001600160701b03831665ffffffffffff604085901c8116908416811115611ff457828282611ff8565b815f5f5b9250925092509250925092565b5f5f5f835160208501865af49392505050565b5f65ffffffffffff82111561204a576040516306dfcc6560e41b81526030600482015260248101839052604401610840565b5090565b6001600160a01b0381168114612062575f5ffd5b50565b5f5f83601f840112612075575f5ffd5b5081356001600160401b0381111561208b575f5ffd5b6020830191508360208260051b8501011115610ddf575f5ffd5b80356001600160401b03811681146120bb575f5ffd5b919050565b5f5f5f5f606085870312156120d3575f5ffd5b84356120de8161204e565b935060208501356001600160401b038111156120f8575f5ffd5b61210487828801612065565b90945092506121179050604086016120a5565b905092959194509250565b5f60208284031215612132575f5ffd5b6108f5826120a5565b5f5f6040838503121561214c575f5ffd5b82356121578161204e565b91506020830135801515811461216b575f5ffd5b809150509250929050565b5f5f60408385031215612187575f5ffd5b82356121928161204e565b9150602083013561216b8161204e565b5f5f83601f8401126121b2575f5ffd5b5081356001600160401b038111156121c8575f5ffd5b602083019150836020828501011115610ddf575f5ffd5b5f5f5f604084860312156121f1575f5ffd5b83356121fc8161204e565b925060208401356001600160401b03811115612216575f5ffd5b612222868287016121a2565b9497909650939450505050565b803563ffffffff811681146120bb575f5ffd5b5f5f5f60608486031215612254575f5ffd5b61225d846120a5565b9250602084013561226d8161204e565b915061227b6040850161222f565b90509250925092565b5f5f60408385031215612295575f5ffd5b612192836120a5565b5f5f604083850312156122af575f5ffd5b6122b8836120a5565b91506122c6602084016120a5565b90509250929050565b5f602082840312156122df575f5ffd5b5035919050565b5f602082840312156122f6575f5ffd5b81356108f58161204e565b6001600160e01b031981168114612062575f5ffd5b5f5f60408385031215612327575f5ffd5b82356123328161204e565b9150602083013561216b81612301565b5f5f5f60408486031215612354575f5ffd5b6121fc846120a5565b5f5f6040838503121561236e575f5ffd5b612377836120a5565b91506122c66020840161222f565b5f5f5f5f60608587031215612398575f5ffd5b84356123a38161204e565b935060208501356123b38161204e565b925060408501356001600160401b038111156123cd575f5ffd5b6123d9878288016121a2565b95989497509550505050565b5f5f602083850312156123f6575f5ffd5b82356001600160401b0381111561240b575f5ffd5b61241785828601612065565b90969095509350505050565b5f602082016020835280845180835260408501915060408160051b8601019250602086015f5b8281101561249b57603f19878603018452815180518087528060208301602089015e5f602082890101526020601f19601f83011688010196505050602082019150602084019350600181019050612449565b50929695505050505050565b5f5f5f606084860312156124b9575f5ffd5b83356124c48161204e565b925060208401356124d48161204e565b915060408401356124e481612301565b809150509250925092565b5f5f60408385031215612500575f5ffd5b82356123778161204e565b5f5f5f5f6060858703121561251e575f5ffd5b84356125298161204e565b935060208501356001600160401b03811115612543575f5ffd5b61254f878288016121a2565b909450925050604085013565ffffffffffff8116811461256d575f5ffd5b939692955090935050565b634e487b7160e01b5f52603260045260245ffd5b5f6020828403121561259c575f5ffd5b81356108f581612301565b81835281816020850137505f828201602090810191909152601f909101601f19169091010190565b602081525f6125e26020830184866125a7565b949350505050565b5f602082840312156125fa575f5ffd5b81516108f581612301565b6001600160a01b038581168252841660208201526060604082018190525f9061263190830184866125a7565b9695505050505050565b634e487b7160e01b5f52601160045260245ffd5b5f5f8585111561265d575f5ffd5b83861115612669575f5ffd5b5050820193919092039150565b634e487b7160e01b5f52604160045260245ffd5b5f5f8335601e1984360301811261269f575f5ffd5b8301803591506001600160401b038211156126b8575f5ffd5b602001915036819003821315610ddf575f5ffd5b828482375f8382015f815283518060208601835e5f910190815295945050505050565b65ffffffffffff81811683821601908111156107525761075261263b565b65ffffffffffff861681526001600160a01b038581166020830152841660408201526080606082018190525f9061274790830184866125a7565b979650505050505050565b80356001600160e01b03198116906004841015611a06576001600160e01b031960049490940360031b84901b1690921692915050565b63ffffffff82811682821603908111156107525761075261263b56fea26469706673582212209b3164b8cdeac6faaf8c03b8a27b787dcccb72987c31447c36cedc0e6df90b7364736f6c634300081e0033","opcodes":"PUSH1 0x80 PUSH1 0x40 MSTORE CALLVALUE DUP1 ISZERO PUSH2 0xF JUMPI PUSH0 PUSH0 REVERT JUMPDEST POP PUSH1 0x40 MLOAD PUSH2 0x2CA3 CODESIZE SUB DUP1 PUSH2 0x2CA3 DUP4 CODECOPY DUP2 ADD PUSH1 0x40 DUP2 SWAP1 MSTORE PUSH2 0x2E SWAP2 PUSH2 0x441 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 AND PUSH2 0x5C JUMPI PUSH1 0x40 MLOAD PUSH4 0x409D6D1 PUSH1 0xE1 SHL DUP2 MSTORE PUSH0 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x24 ADD JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH2 0x68 PUSH0 DUP3 DUP2 DUP1 PUSH2 0x6F JUMP JUMPDEST POP POP PUSH2 0x4BC JUMP JUMPDEST PUSH0 PUSH1 0x2 PUSH1 0x1 PUSH1 0x40 SHL SUB NOT PUSH1 0x1 PUSH1 0x1 PUSH1 0x40 SHL SUB DUP7 AND ADD PUSH2 0xAC JUMPI PUSH1 0x40 MLOAD PUSH4 0x61C6A43 PUSH1 0xE2 SHL DUP2 MSTORE PUSH1 0x1 PUSH1 0x1 PUSH1 0x40 SHL SUB DUP7 AND PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x24 ADD PUSH2 0x53 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0x40 SHL SUB DUP6 AND PUSH0 SWAP1 DUP2 MSTORE PUSH1 0x1 PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x40 DUP1 DUP4 KECCAK256 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP9 AND DUP5 MSTORE SWAP1 SWAP2 MSTORE DUP2 KECCAK256 SLOAD PUSH6 0xFFFFFFFFFFFF AND ISZERO SWAP1 DUP2 ISZERO PUSH2 0x1A1 JUMPI PUSH4 0xFFFFFFFF DUP6 AND PUSH2 0xF7 PUSH2 0x2B5 JUMP JUMPDEST PUSH2 0x101 SWAP2 SWAP1 PUSH2 0x482 JUMP JUMPDEST SWAP1 POP PUSH1 0x40 MLOAD DUP1 PUSH1 0x40 ADD PUSH1 0x40 MSTORE DUP1 DUP3 PUSH6 0xFFFFFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD PUSH2 0x131 DUP7 PUSH4 0xFFFFFFFF AND PUSH2 0x2C4 PUSH1 0x20 SHL PUSH1 0x20 SHR JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0x70 SHL SUB SWAP1 DUP2 AND SWAP1 SWAP2 MSTORE PUSH1 0x1 PUSH1 0x1 PUSH1 0x40 SHL SUB DUP10 AND PUSH0 SWAP1 DUP2 MSTORE PUSH1 0x1 PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x40 DUP1 DUP4 KECCAK256 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP13 AND DUP5 MSTORE DUP3 MSTORE SWAP1 SWAP2 KECCAK256 DUP4 MLOAD DUP2 SLOAD SWAP5 SWAP1 SWAP3 ADD MLOAD SWAP1 SWAP3 AND PUSH7 0x1000000000000 MUL PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB NOT SWAP1 SWAP4 AND PUSH6 0xFFFFFFFFFFFF SWAP1 SWAP2 AND OR SWAP2 SWAP1 SWAP2 OR SWAP1 SSTORE PUSH2 0x247 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0x40 SHL SUB DUP8 AND PUSH0 SWAP1 DUP2 MSTORE PUSH1 0x1 PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x40 DUP1 DUP4 KECCAK256 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP11 AND DUP5 MSTORE SWAP1 SWAP2 MSTORE DUP2 KECCAK256 SLOAD PUSH2 0x1ED SWAP2 PUSH7 0x1000000000000 SWAP1 SWAP2 DIV PUSH1 0x1 PUSH1 0x1 PUSH1 0x70 SHL SUB AND SWAP1 DUP7 SWAP1 PUSH2 0x2CD JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0x40 SHL SUB DUP10 AND PUSH0 SWAP1 DUP2 MSTORE PUSH1 0x1 PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x40 DUP1 DUP4 KECCAK256 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP13 AND DUP5 MSTORE SWAP1 SWAP2 MSTORE SWAP1 KECCAK256 DUP1 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0x70 SHL SUB SWAP1 SWAP4 AND PUSH7 0x1000000000000 MUL PUSH1 0x1 PUSH1 0x30 SHL PUSH1 0x1 PUSH1 0xA0 SHL SUB NOT SWAP1 SWAP4 AND SWAP3 SWAP1 SWAP3 OR SWAP1 SWAP2 SSTORE SWAP1 POP JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH4 0xFFFFFFFF DUP7 AND DUP2 MSTORE PUSH6 0xFFFFFFFFFFFF DUP4 AND PUSH1 0x20 DUP3 ADD MSTORE DUP4 ISZERO ISZERO DUP2 DUP4 ADD MSTORE SWAP1 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP9 AND SWAP2 PUSH1 0x1 PUSH1 0x1 PUSH1 0x40 SHL SUB DUP11 AND SWAP2 PUSH32 0xF98448B987F1428E0E230E1F3C6E2CE15B5693EAF31827FBD0B1EC4B424AE7CF SWAP2 DUP2 SWAP1 SUB PUSH1 0x60 ADD SWAP1 LOG3 POP SWAP6 SWAP5 POP POP POP POP POP JUMP JUMPDEST PUSH0 PUSH2 0x2BF TIMESTAMP PUSH2 0x373 JUMP JUMPDEST SWAP1 POP SWAP1 JUMP JUMPDEST PUSH4 0xFFFFFFFF AND SWAP1 JUMP JUMPDEST PUSH0 DUP1 DUP1 PUSH2 0x2E2 PUSH1 0x1 PUSH1 0x1 PUSH1 0x70 SHL SUB DUP8 AND PUSH2 0x3A9 JUMP JUMPDEST SWAP1 POP PUSH0 PUSH2 0x31D DUP6 PUSH4 0xFFFFFFFF AND DUP8 PUSH4 0xFFFFFFFF AND DUP5 PUSH4 0xFFFFFFFF AND GT PUSH2 0x308 JUMPI PUSH0 PUSH2 0x312 JUMP JUMPDEST PUSH2 0x312 DUP9 DUP6 PUSH2 0x4A0 JUMP JUMPDEST PUSH4 0xFFFFFFFF AND PUSH2 0x3C7 JUMP JUMPDEST SWAP1 POP PUSH4 0xFFFFFFFF DUP2 AND PUSH2 0x32E PUSH2 0x2B5 JUMP JUMPDEST PUSH2 0x338 SWAP2 SWAP1 PUSH2 0x482 JUMP JUMPDEST SWAP3 POP PUSH4 0xFFFFFFFF DUP7 AND PUSH1 0x20 DUP4 SWAP1 SHL PUSH8 0xFFFFFFFF00000000 AND PUSH1 0x40 DUP6 SWAP1 SHL PUSH14 0xFFFFFFFFFFFF0000000000000000 AND OR OR SWAP4 POP POP POP SWAP4 POP SWAP4 SWAP2 POP POP JUMP JUMPDEST PUSH0 PUSH6 0xFFFFFFFFFFFF DUP3 GT ISZERO PUSH2 0x3A5 JUMPI PUSH1 0x40 MLOAD PUSH4 0x6DFCC65 PUSH1 0xE4 SHL DUP2 MSTORE PUSH1 0x30 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x24 DUP2 ADD DUP4 SWAP1 MSTORE PUSH1 0x44 ADD PUSH2 0x53 JUMP JUMPDEST POP SWAP1 JUMP JUMPDEST PUSH0 DUP1 PUSH2 0x3BD PUSH1 0x1 PUSH1 0x1 PUSH1 0x70 SHL SUB DUP5 AND PUSH2 0x3D7 JUMP JUMPDEST POP SWAP1 SWAP5 SWAP4 POP POP POP POP JUMP JUMPDEST DUP1 DUP3 GT DUP2 DUP4 XOR MUL DUP2 XOR JUMPDEST SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH0 DUP1 DUP1 PUSH2 0x3EB DUP5 PUSH2 0x3E6 PUSH2 0x2B5 JUMP JUMPDEST PUSH2 0x3F8 JUMP JUMPDEST SWAP3 POP SWAP3 POP SWAP3 POP SWAP2 SWAP4 SWAP1 SWAP3 POP JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0x50 SHL SUB PUSH1 0x20 DUP4 SWAP1 SHR AND PUSH1 0x1 PUSH1 0x1 PUSH1 0x70 SHL SUB DUP4 AND PUSH6 0xFFFFFFFFFFFF PUSH1 0x40 DUP6 SWAP1 SHR DUP2 AND SWAP1 DUP5 AND DUP2 GT ISZERO PUSH2 0x430 JUMPI DUP3 DUP3 DUP3 PUSH2 0x434 JUMP JUMPDEST DUP2 PUSH0 PUSH0 JUMPDEST SWAP3 POP SWAP3 POP SWAP3 POP SWAP3 POP SWAP3 POP SWAP3 JUMP JUMPDEST PUSH0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x451 JUMPI PUSH0 PUSH0 REVERT JUMPDEST DUP2 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 AND DUP2 EQ PUSH2 0x467 JUMPI PUSH0 PUSH0 REVERT JUMPDEST SWAP4 SWAP3 POP POP POP JUMP JUMPDEST PUSH4 0x4E487B71 PUSH1 0xE0 SHL PUSH0 MSTORE PUSH1 0x11 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH0 REVERT JUMPDEST PUSH6 0xFFFFFFFFFFFF DUP2 DUP2 AND DUP4 DUP3 AND ADD SWAP1 DUP2 GT ISZERO PUSH2 0x3D1 JUMPI PUSH2 0x3D1 PUSH2 0x46E JUMP JUMPDEST PUSH4 0xFFFFFFFF DUP3 DUP2 AND DUP3 DUP3 AND SUB SWAP1 DUP2 GT ISZERO PUSH2 0x3D1 JUMPI PUSH2 0x3D1 PUSH2 0x46E JUMP JUMPDEST PUSH2 0x27DA DUP1 PUSH2 0x4C9 PUSH0 CODECOPY PUSH0 RETURN INVALID PUSH1 0x80 PUSH1 0x40 MSTORE PUSH1 0x4 CALLDATASIZE LT PUSH2 0x1DB JUMPI PUSH0 CALLDATALOAD PUSH1 0xE0 SHR DUP1 PUSH4 0x6D5115BD GT PUSH2 0xFD JUMPI DUP1 PUSH4 0xB7009613 GT PUSH2 0x92 JUMPI DUP1 PUSH4 0xD22B5989 GT PUSH2 0x62 JUMPI DUP1 PUSH4 0xD22B5989 EQ PUSH2 0x636 JUMPI DUP1 PUSH4 0xD6BB62C6 EQ PUSH2 0x655 JUMPI DUP1 PUSH4 0xF801A698 EQ PUSH2 0x674 JUMPI DUP1 PUSH4 0xFE0776F5 EQ PUSH2 0x6AD JUMPI PUSH0 PUSH0 REVERT JUMPDEST DUP1 PUSH4 0xB7009613 EQ PUSH2 0x5A8 JUMPI DUP1 PUSH4 0xB7D2B162 EQ PUSH2 0x5E3 JUMPI DUP1 PUSH4 0xCC1B6C81 EQ PUSH2 0x602 JUMPI DUP1 PUSH4 0xD1F856EE EQ PUSH2 0x617 JUMPI PUSH0 PUSH0 REVERT JUMPDEST DUP1 PUSH4 0xA166AA89 GT PUSH2 0xCD JUMPI DUP1 PUSH4 0xA166AA89 EQ PUSH2 0x501 JUMPI DUP1 PUSH4 0xA64D95CE EQ PUSH2 0x530 JUMPI DUP1 PUSH4 0xABD9BD2A EQ PUSH2 0x54F JUMPI DUP1 PUSH4 0xAC9650D8 EQ PUSH2 0x57C JUMPI PUSH0 PUSH0 REVERT JUMPDEST DUP1 PUSH4 0x6D5115BD EQ PUSH2 0x491 JUMPI DUP1 PUSH4 0x75B238FC EQ PUSH2 0x4B0 JUMPI DUP1 PUSH4 0x853551B8 EQ PUSH2 0x4C3 JUMPI DUP1 PUSH4 0x94C7D7EE EQ PUSH2 0x4E2 JUMPI PUSH0 PUSH0 REVERT JUMPDEST DUP1 PUSH4 0x30CAE187 GT PUSH2 0x173 JUMPI DUP1 PUSH4 0x4665096D GT PUSH2 0x143 JUMPI DUP1 PUSH4 0x4665096D EQ PUSH2 0x403 JUMPI DUP1 PUSH4 0x4C1DA1E2 EQ PUSH2 0x418 JUMPI DUP1 PUSH4 0x52962952 EQ PUSH2 0x437 JUMPI DUP1 PUSH4 0x530DD456 EQ PUSH2 0x456 JUMPI PUSH0 PUSH0 REVERT JUMPDEST DUP1 PUSH4 0x30CAE187 EQ PUSH2 0x35C JUMPI DUP1 PUSH4 0x3ADC277A EQ PUSH2 0x37B JUMPI DUP1 PUSH4 0x3CA7C02A EQ PUSH2 0x3B1 JUMPI DUP1 PUSH4 0x4136A33C EQ PUSH2 0x3CB JUMPI PUSH0 PUSH0 REVERT JUMPDEST DUP1 PUSH4 0x18FF183C GT PUSH2 0x1AE JUMPI DUP1 PUSH4 0x18FF183C EQ PUSH2 0x2B2 JUMPI DUP1 PUSH4 0x1CFF79CD EQ PUSH2 0x2D1 JUMPI DUP1 PUSH4 0x25C471A0 EQ PUSH2 0x2E4 JUMPI DUP1 PUSH4 0x3078F114 EQ PUSH2 0x303 JUMPI PUSH0 PUSH0 REVERT JUMPDEST DUP1 PUSH4 0x8D6122D EQ PUSH2 0x1DF JUMPI DUP1 PUSH4 0xB0A93BA EQ PUSH2 0x200 JUMPI DUP1 PUSH4 0x12BE8727 EQ PUSH2 0x25F JUMPI DUP1 PUSH4 0x167BD395 EQ PUSH2 0x293 JUMPI JUMPDEST PUSH0 PUSH0 REVERT JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x1EA JUMPI PUSH0 PUSH0 REVERT JUMPDEST POP PUSH2 0x1FE PUSH2 0x1F9 CALLDATASIZE PUSH1 0x4 PUSH2 0x20C0 JUMP JUMPDEST PUSH2 0x6CC JUMP JUMPDEST STOP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x20B JUMPI PUSH0 PUSH0 REVERT JUMPDEST POP PUSH2 0x242 PUSH2 0x21A CALLDATASIZE PUSH1 0x4 PUSH2 0x2122 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0x40 SHL SUB SWAP1 DUP2 AND PUSH0 SWAP1 DUP2 MSTORE PUSH1 0x1 PUSH1 0x20 DUP2 SWAP1 MSTORE PUSH1 0x40 SWAP1 SWAP2 KECCAK256 ADD SLOAD PUSH1 0x1 PUSH1 0x40 SHL SWAP1 DIV AND SWAP1 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0x40 SHL SUB SWAP1 SWAP2 AND DUP2 MSTORE PUSH1 0x20 ADD JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x26A JUMPI PUSH0 PUSH0 REVERT JUMPDEST POP PUSH2 0x27E PUSH2 0x279 CALLDATASIZE PUSH1 0x4 PUSH2 0x2122 JUMP JUMPDEST PUSH2 0x71E JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH4 0xFFFFFFFF SWAP1 SWAP2 AND DUP2 MSTORE PUSH1 0x20 ADD PUSH2 0x256 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x29E JUMPI PUSH0 PUSH0 REVERT JUMPDEST POP PUSH2 0x1FE PUSH2 0x2AD CALLDATASIZE PUSH1 0x4 PUSH2 0x213B JUMP JUMPDEST PUSH2 0x758 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x2BD JUMPI PUSH0 PUSH0 REVERT JUMPDEST POP PUSH2 0x1FE PUSH2 0x2CC CALLDATASIZE PUSH1 0x4 PUSH2 0x2176 JUMP JUMPDEST PUSH2 0x76E JUMP JUMPDEST PUSH2 0x27E PUSH2 0x2DF CALLDATASIZE PUSH1 0x4 PUSH2 0x21DF JUMP JUMPDEST PUSH2 0x7D0 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x2EF JUMPI PUSH0 PUSH0 REVERT JUMPDEST POP PUSH2 0x1FE PUSH2 0x2FE CALLDATASIZE PUSH1 0x4 PUSH2 0x2242 JUMP JUMPDEST PUSH2 0x8FC JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x30E JUMPI PUSH0 PUSH0 REVERT JUMPDEST POP PUSH2 0x322 PUSH2 0x31D CALLDATASIZE PUSH1 0x4 PUSH2 0x2284 JUMP JUMPDEST PUSH2 0x91E JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0x256 SWAP5 SWAP4 SWAP3 SWAP2 SWAP1 PUSH6 0xFFFFFFFFFFFF SWAP5 DUP6 AND DUP2 MSTORE PUSH4 0xFFFFFFFF SWAP4 DUP5 AND PUSH1 0x20 DUP3 ADD MSTORE SWAP2 SWAP1 SWAP3 AND PUSH1 0x40 DUP3 ADD MSTORE SWAP2 AND PUSH1 0x60 DUP3 ADD MSTORE PUSH1 0x80 ADD SWAP1 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x367 JUMPI PUSH0 PUSH0 REVERT JUMPDEST POP PUSH2 0x1FE PUSH2 0x376 CALLDATASIZE PUSH1 0x4 PUSH2 0x229E JUMP JUMPDEST PUSH2 0x982 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x386 JUMPI PUSH0 PUSH0 REVERT JUMPDEST POP PUSH2 0x39A PUSH2 0x395 CALLDATASIZE PUSH1 0x4 PUSH2 0x22CF JUMP JUMPDEST PUSH2 0x994 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH6 0xFFFFFFFFFFFF SWAP1 SWAP2 AND DUP2 MSTORE PUSH1 0x20 ADD PUSH2 0x256 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x3BC JUMPI PUSH0 PUSH0 REVERT JUMPDEST POP PUSH2 0x242 PUSH1 0x1 PUSH1 0x1 PUSH1 0x40 SHL SUB DUP2 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x3D6 JUMPI PUSH0 PUSH0 REVERT JUMPDEST POP PUSH2 0x27E PUSH2 0x3E5 CALLDATASIZE PUSH1 0x4 PUSH2 0x22CF JUMP JUMPDEST PUSH0 SWAP1 DUP2 MSTORE PUSH1 0x2 PUSH1 0x20 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD PUSH1 0x1 PUSH1 0x30 SHL SWAP1 DIV PUSH4 0xFFFFFFFF AND SWAP1 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x40E JUMPI PUSH0 PUSH0 REVERT JUMPDEST POP PUSH3 0x93A80 PUSH2 0x27E JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x423 JUMPI PUSH0 PUSH0 REVERT JUMPDEST POP PUSH2 0x27E PUSH2 0x432 CALLDATASIZE PUSH1 0x4 PUSH2 0x22E6 JUMP JUMPDEST PUSH2 0x9C5 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x442 JUMPI PUSH0 PUSH0 REVERT JUMPDEST POP PUSH2 0x1FE PUSH2 0x451 CALLDATASIZE PUSH1 0x4 PUSH2 0x229E JUMP JUMPDEST PUSH2 0x9F2 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x461 JUMPI PUSH0 PUSH0 REVERT JUMPDEST POP PUSH2 0x242 PUSH2 0x470 CALLDATASIZE PUSH1 0x4 PUSH2 0x2122 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0x40 SHL SUB SWAP1 DUP2 AND PUSH0 SWAP1 DUP2 MSTORE PUSH1 0x1 PUSH1 0x20 DUP2 SWAP1 MSTORE PUSH1 0x40 SWAP1 SWAP2 KECCAK256 ADD SLOAD AND SWAP1 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x49C JUMPI PUSH0 PUSH0 REVERT JUMPDEST POP PUSH2 0x242 PUSH2 0x4AB CALLDATASIZE PUSH1 0x4 PUSH2 0x2316 JUMP JUMPDEST PUSH2 0xA04 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x4BB JUMPI PUSH0 PUSH0 REVERT JUMPDEST POP PUSH2 0x242 PUSH0 DUP2 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x4CE JUMPI PUSH0 PUSH0 REVERT JUMPDEST POP PUSH2 0x1FE PUSH2 0x4DD CALLDATASIZE PUSH1 0x4 PUSH2 0x2342 JUMP JUMPDEST PUSH2 0xA3E JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x4ED JUMPI PUSH0 PUSH0 REVERT JUMPDEST POP PUSH2 0x1FE PUSH2 0x4FC CALLDATASIZE PUSH1 0x4 PUSH2 0x21DF JUMP JUMPDEST PUSH2 0xAD5 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x50C JUMPI PUSH0 PUSH0 REVERT JUMPDEST POP PUSH2 0x520 PUSH2 0x51B CALLDATASIZE PUSH1 0x4 PUSH2 0x22E6 JUMP JUMPDEST PUSH2 0xB7F JUMP JUMPDEST PUSH1 0x40 MLOAD SWAP1 ISZERO ISZERO DUP2 MSTORE PUSH1 0x20 ADD PUSH2 0x256 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x53B JUMPI PUSH0 PUSH0 REVERT JUMPDEST POP PUSH2 0x1FE PUSH2 0x54A CALLDATASIZE PUSH1 0x4 PUSH2 0x235D JUMP JUMPDEST PUSH2 0xBA6 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x55A JUMPI PUSH0 PUSH0 REVERT JUMPDEST POP PUSH2 0x56E PUSH2 0x569 CALLDATASIZE PUSH1 0x4 PUSH2 0x2385 JUMP JUMPDEST PUSH2 0xBB8 JUMP JUMPDEST PUSH1 0x40 MLOAD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH2 0x256 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x587 JUMPI PUSH0 PUSH0 REVERT JUMPDEST POP PUSH2 0x59B PUSH2 0x596 CALLDATASIZE PUSH1 0x4 PUSH2 0x23E5 JUMP JUMPDEST PUSH2 0xBF0 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0x256 SWAP2 SWAP1 PUSH2 0x2423 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x5B3 JUMPI PUSH0 PUSH0 REVERT JUMPDEST POP PUSH2 0x5C7 PUSH2 0x5C2 CALLDATASIZE PUSH1 0x4 PUSH2 0x24A7 JUMP JUMPDEST PUSH2 0xCD5 JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD SWAP3 ISZERO ISZERO DUP4 MSTORE PUSH4 0xFFFFFFFF SWAP1 SWAP2 AND PUSH1 0x20 DUP4 ADD MSTORE ADD PUSH2 0x256 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x5EE JUMPI PUSH0 PUSH0 REVERT JUMPDEST POP PUSH2 0x1FE PUSH2 0x5FD CALLDATASIZE PUSH1 0x4 PUSH2 0x2284 JUMP JUMPDEST PUSH2 0xD56 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x60D JUMPI PUSH0 PUSH0 REVERT JUMPDEST POP PUSH3 0x69780 PUSH2 0x27E JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x622 JUMPI PUSH0 PUSH0 REVERT JUMPDEST POP PUSH2 0x5C7 PUSH2 0x631 CALLDATASIZE PUSH1 0x4 PUSH2 0x2284 JUMP JUMPDEST PUSH2 0xD6D JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x641 JUMPI PUSH0 PUSH0 REVERT JUMPDEST POP PUSH2 0x1FE PUSH2 0x650 CALLDATASIZE PUSH1 0x4 PUSH2 0x24EF JUMP JUMPDEST PUSH2 0xDE6 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x660 JUMPI PUSH0 PUSH0 REVERT JUMPDEST POP PUSH2 0x27E PUSH2 0x66F CALLDATASIZE PUSH1 0x4 PUSH2 0x2385 JUMP JUMPDEST PUSH2 0xDF8 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x67F JUMPI PUSH0 PUSH0 REVERT JUMPDEST POP PUSH2 0x693 PUSH2 0x68E CALLDATASIZE PUSH1 0x4 PUSH2 0x250B JUMP JUMPDEST PUSH2 0xF4B JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD SWAP3 DUP4 MSTORE PUSH4 0xFFFFFFFF SWAP1 SWAP2 AND PUSH1 0x20 DUP4 ADD MSTORE ADD PUSH2 0x256 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x6B8 JUMPI PUSH0 PUSH0 REVERT JUMPDEST POP PUSH2 0x1FE PUSH2 0x6C7 CALLDATASIZE PUSH1 0x4 PUSH2 0x2284 JUMP JUMPDEST PUSH2 0x108C JUMP JUMPDEST PUSH2 0x6D4 PUSH2 0x10B5 JUMP JUMPDEST PUSH0 JUMPDEST DUP3 DUP2 LT ISZERO PUSH2 0x717 JUMPI PUSH2 0x70F DUP6 DUP6 DUP6 DUP5 DUP2 DUP2 LT PUSH2 0x6F4 JUMPI PUSH2 0x6F4 PUSH2 0x2578 JUMP JUMPDEST SWAP1 POP PUSH1 0x20 MUL ADD PUSH1 0x20 DUP2 ADD SWAP1 PUSH2 0x709 SWAP2 SWAP1 PUSH2 0x258C JUMP JUMPDEST DUP5 PUSH2 0x112C JUMP JUMPDEST PUSH1 0x1 ADD PUSH2 0x6D6 JUMP JUMPDEST POP POP POP POP POP JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0x40 SHL SUB DUP2 AND PUSH0 SWAP1 DUP2 MSTORE PUSH1 0x1 PUSH1 0x20 DUP2 SWAP1 MSTORE PUSH1 0x40 DUP3 KECCAK256 ADD SLOAD PUSH2 0x752 SWAP1 PUSH1 0x1 PUSH1 0x80 SHL SWAP1 DIV PUSH1 0x1 PUSH1 0x1 PUSH1 0x70 SHL SUB AND PUSH2 0x11AD JUMP JUMPDEST SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH2 0x760 PUSH2 0x10B5 JUMP JUMPDEST PUSH2 0x76A DUP3 DUP3 PUSH2 0x11CB JUMP JUMPDEST POP POP JUMP JUMPDEST PUSH2 0x776 PUSH2 0x10B5 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH4 0x7A9E5E4B PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP3 DUP2 AND PUSH1 0x4 DUP4 ADD MSTORE DUP4 AND SWAP1 PUSH4 0x7A9E5E4B SWAP1 PUSH1 0x24 ADD PUSH0 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 PUSH0 DUP8 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x7B6 JUMPI PUSH0 PUSH0 REVERT JUMPDEST POP GAS CALL ISZERO DUP1 ISZERO PUSH2 0x7C8 JUMPI RETURNDATASIZE PUSH0 PUSH0 RETURNDATACOPY RETURNDATASIZE PUSH0 REVERT JUMPDEST POP POP POP POP POP POP JUMP JUMPDEST PUSH0 CALLER DUP2 DUP1 PUSH2 0x7E0 DUP4 DUP9 DUP9 DUP9 PUSH2 0x123C JUMP JUMPDEST SWAP2 POP SWAP2 POP DUP2 ISZERO DUP1 ISZERO PUSH2 0x7F6 JUMPI POP PUSH4 0xFFFFFFFF DUP2 AND ISZERO JUMPDEST ISZERO PUSH2 0x849 JUMPI DUP3 DUP8 PUSH2 0x807 DUP9 DUP9 PUSH2 0x128D JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH4 0x81C6F24B PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP4 DUP5 AND PUSH1 0x4 DUP3 ADD MSTORE SWAP3 SWAP1 SWAP2 AND PUSH1 0x24 DUP4 ADD MSTORE PUSH1 0x1 PUSH1 0x1 PUSH1 0xE0 SHL SUB NOT AND PUSH1 0x44 DUP3 ADD MSTORE PUSH1 0x64 ADD JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH0 PUSH2 0x856 DUP5 DUP10 DUP10 DUP10 PUSH2 0xBB8 JUMP JUMPDEST SWAP1 POP PUSH0 PUSH4 0xFFFFFFFF DUP4 AND ISZERO ISZERO DUP1 PUSH2 0x87C JUMPI POP PUSH2 0x871 DUP3 PUSH2 0x994 JUMP JUMPDEST PUSH6 0xFFFFFFFFFFFF AND ISZERO ISZERO JUMPDEST ISZERO PUSH2 0x88D JUMPI PUSH2 0x88A DUP3 PUSH2 0x12A4 JUMP JUMPDEST SWAP1 POP JUMPDEST PUSH1 0x3 SLOAD PUSH2 0x8A3 DUP11 PUSH2 0x89E DUP12 DUP12 PUSH2 0x128D JUMP JUMPDEST PUSH2 0x13A2 JUMP JUMPDEST PUSH1 0x3 DUP2 SWAP1 SSTORE POP PUSH2 0x8EA DUP11 DUP11 DUP11 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 PUSH0 SWAP3 ADD SWAP2 SWAP1 SWAP2 MSTORE POP CALLVALUE SWAP3 POP PUSH2 0x13C7 SWAP2 POP POP JUMP JUMPDEST POP PUSH1 0x3 SSTORE SWAP5 POP POP POP POP POP JUMPDEST SWAP4 SWAP3 POP POP POP JUMP JUMPDEST PUSH2 0x904 PUSH2 0x10B5 JUMP JUMPDEST PUSH2 0x918 DUP4 DUP4 PUSH2 0x912 DUP7 PUSH2 0x71E JUMP JUMPDEST DUP5 PUSH2 0x1493 JUMP JUMPDEST POP POP POP POP JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0x40 SHL SUB DUP3 AND PUSH0 SWAP1 DUP2 MSTORE PUSH1 0x1 PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x40 DUP1 DUP4 KECCAK256 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP6 AND DUP5 MSTORE SWAP1 SWAP2 MSTORE DUP2 KECCAK256 DUP1 SLOAD PUSH6 0xFFFFFFFFFFFF DUP2 AND SWAP3 SWAP2 DUP3 SWAP2 DUP3 SWAP2 SWAP1 PUSH2 0x974 SWAP1 PUSH1 0x1 PUSH1 0x30 SHL SWAP1 DIV PUSH1 0x1 PUSH1 0x1 PUSH1 0x70 SHL SUB AND PUSH2 0x16D9 JUMP JUMPDEST SWAP7 SWAP10 SWAP2 SWAP9 POP SWAP7 POP SWAP4 POP POP POP POP JUMP JUMPDEST PUSH2 0x98A PUSH2 0x10B5 JUMP JUMPDEST PUSH2 0x76A DUP3 DUP3 PUSH2 0x16FA JUMP JUMPDEST PUSH0 DUP2 DUP2 MSTORE PUSH1 0x2 PUSH1 0x20 MSTORE PUSH1 0x40 DUP2 KECCAK256 SLOAD PUSH6 0xFFFFFFFFFFFF AND PUSH2 0x9B3 DUP2 PUSH2 0x179D JUMP JUMPDEST PUSH2 0x9BD JUMPI DUP1 PUSH2 0x8F5 JUMP JUMPDEST PUSH0 SWAP4 SWAP3 POP POP POP JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 AND PUSH0 SWAP1 DUP2 MSTORE PUSH1 0x20 DUP2 SWAP1 MSTORE PUSH1 0x40 DUP2 KECCAK256 PUSH1 0x1 ADD SLOAD PUSH2 0x752 SWAP1 PUSH1 0x1 PUSH1 0x1 PUSH1 0x70 SHL SUB AND PUSH2 0x11AD JUMP JUMPDEST PUSH2 0x9FA PUSH2 0x10B5 JUMP JUMPDEST PUSH2 0x76A DUP3 DUP3 PUSH2 0x17CB JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP3 AND PUSH0 SWAP1 DUP2 MSTORE PUSH1 0x20 DUP2 DUP2 MSTORE PUSH1 0x40 DUP1 DUP4 KECCAK256 PUSH1 0x1 PUSH1 0x1 PUSH1 0xE0 SHL SUB NOT DUP6 AND DUP5 MSTORE SWAP1 SWAP2 MSTORE SWAP1 KECCAK256 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0x40 SHL SUB AND SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH2 0xA46 PUSH2 0x10B5 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0x40 SHL SUB DUP4 AND ISZERO DUP1 PUSH2 0xA64 JUMPI POP PUSH1 0x1 PUSH1 0x1 PUSH1 0x40 SHL SUB DUP4 DUP2 AND EQ JUMPDEST ISZERO PUSH2 0xA8D JUMPI PUSH1 0x40 MLOAD PUSH4 0x61C6A43 PUSH1 0xE2 SHL DUP2 MSTORE PUSH1 0x1 PUSH1 0x1 PUSH1 0x40 SHL SUB DUP5 AND PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x24 ADD PUSH2 0x840 JUMP JUMPDEST DUP3 PUSH1 0x1 PUSH1 0x1 PUSH1 0x40 SHL SUB AND PUSH32 0x1256F5B5ECB89CAEC12DB449738F2FBCD1BA5806CF38F35413F4E5C15BF6A450 DUP4 DUP4 PUSH1 0x40 MLOAD PUSH2 0xAC8 SWAP3 SWAP2 SWAP1 PUSH2 0x25CF JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 LOG2 POP POP POP JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH4 0x8FB36037 PUSH1 0xE0 SHL DUP1 DUP3 MSTORE SWAP2 MLOAD CALLER SWAP3 SWAP2 DUP4 SWAP2 PUSH4 0x8FB36037 SWAP2 PUSH1 0x4 DUP1 DUP3 ADD SWAP3 PUSH1 0x20 SWAP3 SWAP1 SWAP2 SWAP1 DUP3 SWAP1 SUB ADD DUP2 DUP7 GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0xB14 JUMPI RETURNDATASIZE PUSH0 PUSH0 RETURNDATACOPY RETURNDATASIZE PUSH0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP3 ADD DUP1 PUSH1 0x40 MSTORE POP DUP2 ADD SWAP1 PUSH2 0xB38 SWAP2 SWAP1 PUSH2 0x25EA JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xE0 SHL SUB NOT AND EQ PUSH2 0xB6B JUMPI PUSH1 0x40 MLOAD PUSH4 0x641FEE9 PUSH1 0xE3 SHL DUP2 MSTORE PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP3 AND PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x24 ADD PUSH2 0x840 JUMP JUMPDEST PUSH2 0x717 PUSH2 0xB7A DUP6 DUP4 DUP7 DUP7 PUSH2 0xBB8 JUMP JUMPDEST PUSH2 0x12A4 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH0 SWAP1 DUP2 MSTORE PUSH1 0x20 DUP2 SWAP1 MSTORE PUSH1 0x40 SWAP1 KECCAK256 PUSH1 0x1 ADD SLOAD PUSH1 0x1 PUSH1 0x70 SHL SWAP1 DIV PUSH1 0xFF AND SWAP1 JUMP JUMPDEST PUSH2 0xBAE PUSH2 0x10B5 JUMP JUMPDEST PUSH2 0x76A DUP3 DUP3 PUSH2 0x187C JUMP JUMPDEST PUSH0 DUP5 DUP5 DUP5 DUP5 PUSH1 0x40 MLOAD PUSH1 0x20 ADD PUSH2 0xBD0 SWAP5 SWAP4 SWAP3 SWAP2 SWAP1 PUSH2 0x2605 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH1 0x20 DUP2 DUP4 SUB SUB DUP2 MSTORE SWAP1 PUSH1 0x40 MSTORE DUP1 MLOAD SWAP1 PUSH1 0x20 ADD KECCAK256 SWAP1 POP SWAP5 SWAP4 POP POP POP POP JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH0 DUP2 MSTORE PUSH1 0x20 DUP2 ADD SWAP1 SWAP2 MSTORE PUSH1 0x60 SWAP1 DUP3 PUSH1 0x1 PUSH1 0x1 PUSH1 0x40 SHL SUB DUP2 GT ISZERO PUSH2 0xC19 JUMPI PUSH2 0xC19 PUSH2 0x2676 JUMP JUMPDEST PUSH1 0x40 MLOAD SWAP1 DUP1 DUP3 MSTORE DUP1 PUSH1 0x20 MUL PUSH1 0x20 ADD DUP3 ADD PUSH1 0x40 MSTORE DUP1 ISZERO PUSH2 0xC4C JUMPI DUP2 PUSH1 0x20 ADD JUMPDEST PUSH1 0x60 DUP2 MSTORE PUSH1 0x20 ADD SWAP1 PUSH1 0x1 SWAP1 SUB SWAP1 DUP2 PUSH2 0xC37 JUMPI SWAP1 POP JUMPDEST POP SWAP2 POP PUSH0 JUMPDEST DUP4 DUP2 LT ISZERO PUSH2 0xCCD JUMPI PUSH2 0xCA8 ADDRESS DUP7 DUP7 DUP5 DUP2 DUP2 LT PUSH2 0xC6F JUMPI PUSH2 0xC6F PUSH2 0x2578 JUMP JUMPDEST SWAP1 POP PUSH1 0x20 MUL DUP2 ADD SWAP1 PUSH2 0xC81 SWAP2 SWAP1 PUSH2 0x268A JUMP JUMPDEST DUP6 PUSH1 0x40 MLOAD PUSH1 0x20 ADD PUSH2 0xC94 SWAP4 SWAP3 SWAP2 SWAP1 PUSH2 0x26CC JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH1 0x20 DUP2 DUP4 SUB SUB DUP2 MSTORE SWAP1 PUSH1 0x40 MSTORE PUSH2 0x198B JUMP JUMPDEST DUP4 DUP3 DUP2 MLOAD DUP2 LT PUSH2 0xCBA JUMPI PUSH2 0xCBA PUSH2 0x2578 JUMP JUMPDEST PUSH1 0x20 SWAP1 DUP2 MUL SWAP2 SWAP1 SWAP2 ADD ADD MSTORE PUSH1 0x1 ADD PUSH2 0xC51 JUMP JUMPDEST POP POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH0 PUSH0 PUSH2 0xCE0 DUP5 PUSH2 0xB7F JUMP JUMPDEST ISZERO PUSH2 0xCEF JUMPI POP PUSH0 SWAP1 POP DUP1 PUSH2 0xD4E JUMP JUMPDEST ADDRESS PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP7 AND SUB PUSH2 0xD13 JUMPI PUSH2 0xD09 DUP5 DUP5 PUSH2 0x1A0D JUMP JUMPDEST PUSH0 SWAP2 POP SWAP2 POP PUSH2 0xD4E JUMP JUMPDEST PUSH0 PUSH2 0xD1E DUP6 DUP6 PUSH2 0xA04 JUMP JUMPDEST SWAP1 POP PUSH0 PUSH0 PUSH2 0xD2C DUP4 DUP10 PUSH2 0xD6D JUMP JUMPDEST SWAP2 POP SWAP2 POP DUP2 PUSH2 0xD3C JUMPI PUSH0 PUSH0 PUSH2 0xD46 JUMP JUMPDEST PUSH4 0xFFFFFFFF DUP2 AND ISZERO DUP2 JUMPDEST SWAP5 POP SWAP5 POP POP POP POP JUMPDEST SWAP4 POP SWAP4 SWAP2 POP POP JUMP JUMPDEST PUSH2 0xD5E PUSH2 0x10B5 JUMP JUMPDEST PUSH2 0xD68 DUP3 DUP3 PUSH2 0x1A23 JUMP JUMPDEST POP POP POP JUMP JUMPDEST PUSH0 DUP1 PUSH8 0xFFFFFFFFFFFFFFFE NOT PUSH1 0x1 PUSH1 0x1 PUSH1 0x40 SHL SUB DUP6 AND ADD PUSH2 0xD93 JUMPI POP PUSH1 0x1 SWAP1 POP PUSH0 PUSH2 0xDDF JUMP JUMPDEST PUSH0 PUSH0 PUSH2 0xD9F DUP7 DUP7 PUSH2 0x91E JUMP JUMPDEST POP POP SWAP2 POP SWAP2 POP DUP2 PUSH6 0xFFFFFFFFFFFF AND PUSH0 EQ ISZERO DUP1 ISZERO PUSH2 0xDD4 JUMPI POP PUSH2 0xDC0 PUSH2 0x1B0C JUMP JUMPDEST PUSH6 0xFFFFFFFFFFFF AND DUP3 PUSH6 0xFFFFFFFFFFFF AND GT ISZERO JUMPDEST SWAP4 POP SWAP2 POP PUSH2 0xDDF SWAP1 POP JUMP JUMPDEST SWAP3 POP SWAP3 SWAP1 POP JUMP JUMPDEST PUSH2 0xDEE PUSH2 0x10B5 JUMP JUMPDEST PUSH2 0x76A DUP3 DUP3 PUSH2 0x1B1B JUMP JUMPDEST PUSH0 CALLER DUP2 PUSH2 0xE05 DUP6 DUP6 PUSH2 0x128D JUMP JUMPDEST SWAP1 POP PUSH0 PUSH2 0xE14 DUP9 DUP9 DUP9 DUP9 PUSH2 0xBB8 JUMP JUMPDEST PUSH0 DUP2 DUP2 MSTORE PUSH1 0x2 PUSH1 0x20 MSTORE PUSH1 0x40 DUP2 KECCAK256 SLOAD SWAP2 SWAP3 POP PUSH6 0xFFFFFFFFFFFF SWAP1 SWAP2 AND SWAP1 SUB PUSH2 0xE51 JUMPI PUSH1 0x40 MLOAD PUSH4 0x60A299B PUSH1 0xE4 SHL DUP2 MSTORE PUSH1 0x4 DUP2 ADD DUP3 SWAP1 MSTORE PUSH1 0x24 ADD PUSH2 0x840 JUMP JUMPDEST DUP3 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP9 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND EQ PUSH2 0xEEA JUMPI PUSH0 PUSH2 0xE75 PUSH0 DUP6 PUSH2 0xD6D JUMP JUMPDEST POP SWAP1 POP PUSH0 PUSH2 0xE8F PUSH2 0xE89 PUSH2 0x21A DUP12 DUP8 PUSH2 0xA04 JUMP JUMPDEST DUP7 PUSH2 0xD6D JUMP JUMPDEST POP SWAP1 POP DUP2 ISZERO DUP1 ISZERO PUSH2 0xE9E JUMPI POP DUP1 ISZERO JUMPDEST ISZERO PUSH2 0xEE7 JUMPI PUSH1 0x40 MLOAD PUSH4 0xFF89D47 PUSH1 0xE2 SHL DUP2 MSTORE PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP1 DUP8 AND PUSH1 0x4 DUP4 ADD MSTORE DUP1 DUP13 AND PUSH1 0x24 DUP4 ADD MSTORE DUP11 AND PUSH1 0x44 DUP3 ADD MSTORE PUSH1 0x1 PUSH1 0x1 PUSH1 0xE0 SHL SUB NOT DUP6 AND PUSH1 0x64 DUP3 ADD MSTORE PUSH1 0x84 ADD PUSH2 0x840 JUMP JUMPDEST POP POP JUMPDEST PUSH0 DUP2 DUP2 MSTORE PUSH1 0x2 PUSH1 0x20 MSTORE PUSH1 0x40 DUP1 DUP3 KECCAK256 DUP1 SLOAD PUSH6 0xFFFFFFFFFFFF NOT AND SWAP1 DUP2 SWAP1 SSTORE SWAP1 MLOAD PUSH1 0x1 PUSH1 0x30 SHL SWAP1 SWAP2 DIV PUSH4 0xFFFFFFFF AND SWAP2 DUP3 SWAP2 DUP5 SWAP2 PUSH32 0xBD9AC67A6E2F6463B80927326310338BCBB4BDB7936CE1365EA3E01067E7B9F7 SWAP2 LOG3 SWAP9 SWAP8 POP POP POP POP POP POP POP POP JUMP JUMPDEST PUSH0 DUP1 CALLER DUP2 PUSH2 0xF5B DUP3 DUP10 DUP10 DUP10 PUSH2 0x123C JUMP JUMPDEST SWAP2 POP POP PUSH0 DUP2 PUSH4 0xFFFFFFFF AND PUSH2 0xF6E PUSH2 0x1B0C JUMP JUMPDEST PUSH2 0xF78 SWAP2 SWAP1 PUSH2 0x26EF JUMP JUMPDEST SWAP1 POP PUSH4 0xFFFFFFFF DUP3 AND ISZERO DUP1 PUSH2 0xFAE JUMPI POP PUSH0 DUP7 PUSH6 0xFFFFFFFFFFFF AND GT DUP1 ISZERO PUSH2 0xFAE JUMPI POP DUP1 PUSH6 0xFFFFFFFFFFFF AND DUP7 PUSH6 0xFFFFFFFFFFFF AND LT JUMPDEST ISZERO PUSH2 0xFBF JUMPI DUP3 DUP10 PUSH2 0x807 DUP11 DUP11 PUSH2 0x128D JUMP JUMPDEST PUSH2 0xFD9 DUP7 PUSH6 0xFFFFFFFFFFFF AND DUP3 PUSH6 0xFFFFFFFFFFFF AND PUSH2 0x1BD6 JUMP JUMPDEST SWAP6 POP PUSH2 0xFE7 DUP4 DUP11 DUP11 DUP11 PUSH2 0xBB8 JUMP JUMPDEST SWAP5 POP PUSH2 0xFF2 DUP6 PUSH2 0x1BE5 JUMP JUMPDEST PUSH0 DUP6 DUP2 MSTORE PUSH1 0x2 PUSH1 0x20 MSTORE PUSH1 0x40 SWAP1 DUP2 SWAP1 KECCAK256 DUP1 SLOAD PUSH6 0xFFFFFFFFFFFF DUP10 AND PUSH10 0xFFFFFFFFFFFFFFFFFFFF NOT DUP3 AND OR PUSH1 0x1 PUSH1 0x30 SHL SWAP2 DUP3 SWAP1 DIV PUSH4 0xFFFFFFFF SWAP1 DUP2 AND PUSH1 0x1 ADD SWAP1 DUP2 AND SWAP3 DUP4 MUL SWAP2 SWAP1 SWAP2 OR SWAP1 SWAP3 SSTORE SWAP2 MLOAD SWAP1 SWAP6 POP DUP7 SWAP1 PUSH32 0x82A2DA5DEE54EA8021C6545B4444620291E07EE83BE6DD57EDB175062715F3B4 SWAP1 PUSH2 0x1078 SWAP1 DUP11 SWAP1 DUP9 SWAP1 DUP16 SWAP1 DUP16 SWAP1 DUP16 SWAP1 PUSH2 0x270D JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 LOG3 POP POP POP SWAP5 POP SWAP5 SWAP3 POP POP POP JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 AND CALLER EQ PUSH2 0xD5E JUMPI PUSH1 0x40 MLOAD PUSH4 0x5F159E63 PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST CALLER PUSH0 DUP1 PUSH2 0x10C3 DUP4 DUP3 CALLDATASIZE PUSH2 0x1C31 JUMP JUMPDEST SWAP2 POP SWAP2 POP DUP2 PUSH2 0xD68 JUMPI DUP1 PUSH4 0xFFFFFFFF AND PUSH0 SUB PUSH2 0x111D JUMPI PUSH0 PUSH2 0x10E4 DUP2 CALLDATASIZE PUSH2 0x1CF4 JUMP JUMPDEST POP PUSH1 0x40 MLOAD PUSH4 0xF07E038F PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP8 AND PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x1 PUSH1 0x1 PUSH1 0x40 SHL SUB DUP3 AND PUSH1 0x24 DUP3 ADD MSTORE SWAP1 SWAP3 POP PUSH1 0x44 ADD SWAP1 POP PUSH2 0x840 JUMP JUMPDEST PUSH2 0x918 PUSH2 0xB7A DUP5 ADDRESS PUSH0 CALLDATASIZE PUSH2 0xBB8 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP4 AND PUSH0 DUP2 DUP2 MSTORE PUSH1 0x20 DUP2 DUP2 MSTORE PUSH1 0x40 DUP1 DUP4 KECCAK256 PUSH1 0x1 PUSH1 0x1 PUSH1 0xE0 SHL SUB NOT DUP8 AND DUP1 DUP6 MSTORE SWAP1 DUP4 MSTORE SWAP3 DUP2 SWAP1 KECCAK256 DUP1 SLOAD PUSH8 0xFFFFFFFFFFFFFFFF NOT AND PUSH1 0x1 PUSH1 0x1 PUSH1 0x40 SHL SUB DUP8 AND SWAP1 DUP2 OR SWAP1 SWAP2 SSTORE SWAP1 MLOAD SWAP3 DUP4 MSTORE SWAP3 SWAP2 PUSH32 0x9EA6790C7DADFD01C9F8B9762B3682607AF2C7E79E05A9F9FDF5580DDE949151 SWAP2 ADD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 LOG3 POP POP POP JUMP JUMPDEST PUSH0 PUSH0 PUSH2 0x11C1 DUP4 PUSH1 0x1 PUSH1 0x1 PUSH1 0x70 SHL SUB AND PUSH2 0x16D9 JUMP JUMPDEST POP SWAP1 SWAP5 SWAP4 POP POP POP POP JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP3 AND PUSH0 DUP2 DUP2 MSTORE PUSH1 0x20 DUP2 SWAP1 MSTORE PUSH1 0x40 SWAP1 DUP2 SWAP1 KECCAK256 PUSH1 0x1 ADD DUP1 SLOAD DUP5 ISZERO ISZERO PUSH1 0x1 PUSH1 0x70 SHL MUL PUSH1 0xFF PUSH1 0x70 SHL NOT SWAP1 SWAP2 AND OR SWAP1 SSTORE MLOAD PUSH32 0x90D4E7BB7E5D933792B3562E1741306F8BE94837E1348DACEF9B6F1DF56EB138 SWAP1 PUSH2 0x1230 SWAP1 DUP5 ISZERO ISZERO DUP2 MSTORE PUSH1 0x20 ADD SWAP1 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 LOG2 POP POP JUMP JUMPDEST PUSH0 DUP1 ADDRESS PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP7 AND SUB PUSH2 0x1262 JUMPI PUSH2 0x1259 DUP7 DUP6 DUP6 PUSH2 0x1C31 JUMP JUMPDEST SWAP2 POP SWAP2 POP PUSH2 0x1284 JUMP JUMPDEST PUSH1 0x4 DUP4 LT PUSH2 0x127E JUMPI PUSH2 0x1279 DUP7 DUP7 PUSH2 0x5C2 DUP8 DUP8 PUSH2 0x128D JUMP JUMPDEST PUSH2 0x1259 JUMP JUMPDEST POP PUSH0 SWAP1 POP DUP1 JUMPDEST SWAP5 POP SWAP5 SWAP3 POP POP POP JUMP JUMPDEST PUSH0 PUSH2 0x129B PUSH1 0x4 DUP3 DUP5 DUP7 PUSH2 0x264F JUMP JUMPDEST PUSH2 0x8F5 SWAP2 PUSH2 0x2752 JUMP JUMPDEST PUSH0 DUP2 DUP2 MSTORE PUSH1 0x2 PUSH1 0x20 MSTORE PUSH1 0x40 DUP2 KECCAK256 SLOAD PUSH6 0xFFFFFFFFFFFF DUP2 AND SWAP1 PUSH1 0x1 PUSH1 0x30 SHL SWAP1 DIV PUSH4 0xFFFFFFFF AND DUP2 DUP4 SUB PUSH2 0x12EC JUMPI PUSH1 0x40 MLOAD PUSH4 0x60A299B PUSH1 0xE4 SHL DUP2 MSTORE PUSH1 0x4 DUP2 ADD DUP6 SWAP1 MSTORE PUSH1 0x24 ADD PUSH2 0x840 JUMP JUMPDEST PUSH2 0x12F4 PUSH2 0x1B0C JUMP JUMPDEST PUSH6 0xFFFFFFFFFFFF AND DUP3 PUSH6 0xFFFFFFFFFFFF AND GT ISZERO PUSH2 0x1327 JUMPI PUSH1 0x40 MLOAD PUSH4 0xC65B5BD PUSH1 0xE1 SHL DUP2 MSTORE PUSH1 0x4 DUP2 ADD DUP6 SWAP1 MSTORE PUSH1 0x24 ADD PUSH2 0x840 JUMP JUMPDEST PUSH2 0x1330 DUP3 PUSH2 0x179D JUMP JUMPDEST ISZERO PUSH2 0x1351 JUMPI PUSH1 0x40 MLOAD PUSH4 0x1E2975B9 PUSH1 0xE2 SHL DUP2 MSTORE PUSH1 0x4 DUP2 ADD DUP6 SWAP1 MSTORE PUSH1 0x24 ADD PUSH2 0x840 JUMP JUMPDEST PUSH0 DUP5 DUP2 MSTORE PUSH1 0x2 PUSH1 0x20 MSTORE PUSH1 0x40 DUP1 DUP3 KECCAK256 DUP1 SLOAD PUSH6 0xFFFFFFFFFFFF NOT AND SWAP1 SSTORE MLOAD PUSH4 0xFFFFFFFF DUP4 AND SWAP2 DUP7 SWAP2 PUSH32 0x76A2A46953689D4861A5D3F6ED883AD7E6AF674A21F8E162707159FC9DDE614D SWAP2 SWAP1 LOG3 SWAP4 SWAP3 POP POP POP JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP3 AND PUSH0 SWAP1 DUP2 MSTORE PUSH1 0x1 PUSH1 0x1 PUSH1 0xE0 SHL SUB NOT DUP3 AND PUSH1 0x20 MSTORE PUSH1 0x40 DUP2 KECCAK256 PUSH2 0x8F5 JUMP JUMPDEST PUSH1 0x60 DUP2 SELFBALANCE LT ISZERO PUSH2 0x13F3 JUMPI PUSH1 0x40 MLOAD PUSH4 0xCF479181 PUSH1 0xE0 SHL DUP2 MSTORE SELFBALANCE PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x24 DUP2 ADD DUP4 SWAP1 MSTORE PUSH1 0x44 ADD PUSH2 0x840 JUMP JUMPDEST PUSH0 PUSH2 0x13FF DUP6 DUP5 DUP7 PUSH2 0x1EDA JUMP JUMPDEST SWAP1 POP DUP1 DUP1 ISZERO PUSH2 0x1420 JUMPI POP PUSH0 RETURNDATASIZE GT DUP1 PUSH2 0x1420 JUMPI POP PUSH0 DUP6 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND EXTCODESIZE GT JUMPDEST ISZERO PUSH2 0x1435 JUMPI PUSH2 0x142D PUSH2 0x1EEF JUMP JUMPDEST SWAP2 POP POP PUSH2 0x8F5 JUMP JUMPDEST DUP1 ISZERO PUSH2 0x145F JUMPI PUSH1 0x40 MLOAD PUSH4 0x9996B315 PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP7 AND PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x24 ADD PUSH2 0x840 JUMP JUMPDEST RETURNDATASIZE ISZERO PUSH2 0x1472 JUMPI PUSH2 0x146D PUSH2 0x1F08 JUMP JUMPDEST PUSH2 0x148B JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH4 0xD6BDA275 PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST POP SWAP4 SWAP3 POP POP POP JUMP JUMPDEST PUSH0 PUSH8 0xFFFFFFFFFFFFFFFE NOT PUSH1 0x1 PUSH1 0x1 PUSH1 0x40 SHL SUB DUP7 AND ADD PUSH2 0x14D1 JUMPI PUSH1 0x40 MLOAD PUSH4 0x61C6A43 PUSH1 0xE2 SHL DUP2 MSTORE PUSH1 0x1 PUSH1 0x1 PUSH1 0x40 SHL SUB DUP7 AND PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x24 ADD PUSH2 0x840 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0x40 SHL SUB DUP6 AND PUSH0 SWAP1 DUP2 MSTORE PUSH1 0x1 PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x40 DUP1 DUP4 KECCAK256 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP9 AND DUP5 MSTORE SWAP1 SWAP2 MSTORE DUP2 KECCAK256 SLOAD PUSH6 0xFFFFFFFFFFFF AND ISZERO SWAP1 DUP2 ISZERO PUSH2 0x15C1 JUMPI DUP5 PUSH4 0xFFFFFFFF AND PUSH2 0x151C PUSH2 0x1B0C JUMP JUMPDEST PUSH2 0x1526 SWAP2 SWAP1 PUSH2 0x26EF JUMP JUMPDEST SWAP1 POP PUSH1 0x40 MLOAD DUP1 PUSH1 0x40 ADD PUSH1 0x40 MSTORE DUP1 DUP3 PUSH6 0xFFFFFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD PUSH2 0x1554 DUP7 PUSH4 0xFFFFFFFF AND PUSH4 0xFFFFFFFF AND SWAP1 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0x70 SHL SUB SWAP1 DUP2 AND SWAP1 SWAP2 MSTORE PUSH1 0x1 PUSH1 0x1 PUSH1 0x40 SHL SUB DUP10 AND PUSH0 SWAP1 DUP2 MSTORE PUSH1 0x1 PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x40 DUP1 DUP4 KECCAK256 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP13 AND DUP5 MSTORE DUP3 MSTORE SWAP1 SWAP2 KECCAK256 DUP4 MLOAD DUP2 SLOAD SWAP5 SWAP1 SWAP3 ADD MLOAD SWAP1 SWAP3 AND PUSH1 0x1 PUSH1 0x30 SHL MUL PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB NOT SWAP1 SWAP4 AND PUSH6 0xFFFFFFFFFFFF SWAP1 SWAP2 AND OR SWAP2 SWAP1 SWAP2 OR SWAP1 SSTORE PUSH2 0x166B JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0x40 SHL SUB DUP8 AND PUSH0 SWAP1 DUP2 MSTORE PUSH1 0x1 PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x40 DUP1 DUP4 KECCAK256 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP11 AND DUP5 MSTORE SWAP1 SWAP2 MSTORE DUP2 KECCAK256 SLOAD PUSH2 0x160A SWAP2 PUSH1 0x1 PUSH1 0x30 SHL SWAP1 SWAP2 DIV PUSH1 0x1 PUSH1 0x1 PUSH1 0x70 SHL SUB AND SWAP1 DUP7 SWAP1 PUSH2 0x1F13 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0x40 SHL SUB DUP10 AND PUSH0 SWAP1 DUP2 MSTORE PUSH1 0x1 PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x40 DUP1 DUP4 KECCAK256 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP13 AND DUP5 MSTORE SWAP1 SWAP2 MSTORE SWAP1 KECCAK256 DUP1 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0x70 SHL SUB SWAP1 SWAP4 AND PUSH1 0x1 PUSH1 0x30 SHL MUL PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFF000000000000 NOT SWAP1 SWAP4 AND SWAP3 SWAP1 SWAP3 OR SWAP1 SWAP2 SSTORE SWAP1 POP JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH4 0xFFFFFFFF DUP7 AND DUP2 MSTORE PUSH6 0xFFFFFFFFFFFF DUP4 AND PUSH1 0x20 DUP3 ADD MSTORE DUP4 ISZERO ISZERO DUP2 DUP4 ADD MSTORE SWAP1 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP9 AND SWAP2 PUSH1 0x1 PUSH1 0x1 PUSH1 0x40 SHL SUB DUP11 AND SWAP2 PUSH32 0xF98448B987F1428E0E230E1F3C6E2CE15B5693EAF31827FBD0B1EC4B424AE7CF SWAP2 DUP2 SWAP1 SUB PUSH1 0x60 ADD SWAP1 LOG3 POP SWAP6 SWAP5 POP POP POP POP POP JUMP JUMPDEST PUSH0 PUSH0 PUSH0 PUSH2 0x16ED DUP5 PUSH2 0x16E8 PUSH2 0x1B0C JUMP JUMPDEST PUSH2 0x1FB9 JUMP JUMPDEST SWAP3 POP SWAP3 POP SWAP3 POP SWAP2 SWAP4 SWAP1 SWAP3 POP JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0x40 SHL SUB DUP3 AND ISZERO DUP1 PUSH2 0x1718 JUMPI POP PUSH1 0x1 PUSH1 0x1 PUSH1 0x40 SHL SUB DUP3 DUP2 AND EQ JUMPDEST ISZERO PUSH2 0x1741 JUMPI PUSH1 0x40 MLOAD PUSH4 0x61C6A43 PUSH1 0xE2 SHL DUP2 MSTORE PUSH1 0x1 PUSH1 0x1 PUSH1 0x40 SHL SUB DUP4 AND PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x24 ADD PUSH2 0x840 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0x40 SHL SUB DUP3 DUP2 AND PUSH0 DUP2 DUP2 MSTORE PUSH1 0x1 PUSH1 0x20 DUP2 SWAP1 MSTORE PUSH1 0x40 DUP1 DUP4 KECCAK256 SWAP1 SWAP2 ADD DUP1 SLOAD PUSH8 0xFFFFFFFFFFFFFFFF NOT AND SWAP5 DUP7 AND SWAP5 DUP6 OR SWAP1 SSTORE MLOAD PUSH32 0x1FD6DD7631312DFAC2205B52913F99DE03B4D7E381D5D27D3DBFE0713E6E6340 SWAP2 SWAP1 LOG3 POP POP JUMP JUMPDEST PUSH0 PUSH2 0x17A6 PUSH2 0x1B0C JUMP JUMPDEST PUSH6 0xFFFFFFFFFFFF AND PUSH2 0x17BB PUSH3 0x93A80 DUP5 PUSH2 0x26EF JUMP JUMPDEST PUSH6 0xFFFFFFFFFFFF AND GT ISZERO SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0x40 SHL SUB DUP3 AND ISZERO DUP1 PUSH2 0x17E9 JUMPI POP PUSH1 0x1 PUSH1 0x1 PUSH1 0x40 SHL SUB DUP3 DUP2 AND EQ JUMPDEST ISZERO PUSH2 0x1812 JUMPI PUSH1 0x40 MLOAD PUSH4 0x61C6A43 PUSH1 0xE2 SHL DUP2 MSTORE PUSH1 0x1 PUSH1 0x1 PUSH1 0x40 SHL SUB DUP4 AND PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x24 ADD PUSH2 0x840 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0x40 SHL SUB DUP3 DUP2 AND PUSH0 DUP2 DUP2 MSTORE PUSH1 0x1 PUSH1 0x20 DUP2 SWAP1 MSTORE PUSH1 0x40 DUP1 DUP4 KECCAK256 SWAP1 SWAP2 ADD DUP1 SLOAD PUSH16 0xFFFFFFFFFFFFFFFF0000000000000000 NOT AND PUSH1 0x1 PUSH1 0x40 SHL SWAP6 DUP8 AND SWAP6 DUP7 MUL OR SWAP1 SSTORE MLOAD PUSH32 0x7A8059630B897B5DE4C08ADE69F8B90C3EAD1F8596D62D10B6C4D14A0AFB4AE2 SWAP2 SWAP1 LOG3 POP POP JUMP JUMPDEST PUSH8 0xFFFFFFFFFFFFFFFE NOT PUSH1 0x1 PUSH1 0x1 PUSH1 0x40 SHL SUB DUP4 AND ADD PUSH2 0x18B9 JUMPI PUSH1 0x40 MLOAD PUSH4 0x61C6A43 PUSH1 0xE2 SHL DUP2 MSTORE PUSH1 0x1 PUSH1 0x1 PUSH1 0x40 SHL SUB DUP4 AND PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x24 ADD PUSH2 0x840 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0x40 SHL SUB DUP3 AND PUSH0 SWAP1 DUP2 MSTORE PUSH1 0x1 PUSH1 0x20 DUP2 SWAP1 MSTORE PUSH1 0x40 DUP3 KECCAK256 ADD SLOAD PUSH2 0x18F2 SWAP1 PUSH1 0x1 PUSH1 0x80 SHL SWAP1 DIV PUSH1 0x1 PUSH1 0x1 PUSH1 0x70 SHL SUB AND DUP4 PUSH3 0x69780 PUSH2 0x1F13 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0x40 SHL SUB DUP6 AND PUSH0 DUP2 DUP2 MSTORE PUSH1 0x1 PUSH1 0x20 DUP2 SWAP1 MSTORE PUSH1 0x40 SWAP2 DUP3 SWAP1 KECCAK256 ADD DUP1 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0x70 SHL SUB SWAP1 SWAP6 AND PUSH1 0x1 PUSH1 0x80 SHL MUL PUSH14 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFF PUSH1 0x80 SHL NOT SWAP1 SWAP6 AND SWAP5 SWAP1 SWAP5 OR SWAP1 SWAP4 SSTORE SWAP2 MLOAD SWAP1 SWAP3 POP PUSH32 0xFEB69018EE8B8FD50EA86348F1267D07673379F72CFFDECCEC63853EE8CE8B48 SWAP1 PUSH2 0xAC8 SWAP1 DUP6 SWAP1 DUP6 SWAP1 PUSH4 0xFFFFFFFF SWAP3 SWAP1 SWAP3 AND DUP3 MSTORE PUSH6 0xFFFFFFFFFFFF AND PUSH1 0x20 DUP3 ADD MSTORE PUSH1 0x40 ADD SWAP1 JUMP JUMPDEST PUSH1 0x60 PUSH0 PUSH2 0x1998 DUP5 DUP5 PUSH2 0x2005 JUMP JUMPDEST SWAP1 POP DUP1 DUP1 ISZERO PUSH2 0x19B9 JUMPI POP PUSH0 RETURNDATASIZE GT DUP1 PUSH2 0x19B9 JUMPI POP PUSH0 DUP5 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND EXTCODESIZE GT JUMPDEST ISZERO PUSH2 0x19CE JUMPI PUSH2 0x19C6 PUSH2 0x1EEF JUMP JUMPDEST SWAP2 POP POP PUSH2 0x752 JUMP JUMPDEST DUP1 ISZERO PUSH2 0x19F8 JUMPI PUSH1 0x40 MLOAD PUSH4 0x9996B315 PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP6 AND PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x24 ADD PUSH2 0x840 JUMP JUMPDEST RETURNDATASIZE ISZERO PUSH2 0x1472 JUMPI PUSH2 0x1A06 PUSH2 0x1F08 JUMP JUMPDEST POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH0 PUSH2 0x1A18 DUP4 DUP4 PUSH2 0x13A2 JUMP JUMPDEST PUSH1 0x3 SLOAD EQ SWAP4 SWAP3 POP POP POP JUMP JUMPDEST PUSH0 PUSH8 0xFFFFFFFFFFFFFFFE NOT PUSH1 0x1 PUSH1 0x1 PUSH1 0x40 SHL SUB DUP5 AND ADD PUSH2 0x1A61 JUMPI PUSH1 0x40 MLOAD PUSH4 0x61C6A43 PUSH1 0xE2 SHL DUP2 MSTORE PUSH1 0x1 PUSH1 0x1 PUSH1 0x40 SHL SUB DUP5 AND PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x24 ADD PUSH2 0x840 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0x40 SHL SUB DUP4 AND PUSH0 SWAP1 DUP2 MSTORE PUSH1 0x1 PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x40 DUP1 DUP4 KECCAK256 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP7 AND DUP5 MSTORE SWAP1 SWAP2 MSTORE DUP2 KECCAK256 SLOAD PUSH6 0xFFFFFFFFFFFF AND SWAP1 SUB PUSH2 0x1AA2 JUMPI POP PUSH0 PUSH2 0x752 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0x40 SHL SUB DUP4 AND PUSH0 DUP2 DUP2 MSTORE PUSH1 0x1 PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x40 DUP1 DUP4 KECCAK256 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP8 AND DUP1 DUP6 MSTORE SWAP3 MSTORE DUP1 DUP4 KECCAK256 DUP1 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB NOT AND SWAP1 SSTORE MLOAD SWAP1 SWAP3 SWAP2 PUSH32 0xF229BAA593AF28C41B1D16B748CD7688F0C83AAF92D4BE41C44005DEFE84C166 SWAP2 LOG3 POP PUSH1 0x1 SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH0 PUSH2 0x1B16 TIMESTAMP PUSH2 0x2018 JUMP JUMPDEST SWAP1 POP SWAP1 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP3 AND PUSH0 SWAP1 DUP2 MSTORE PUSH1 0x20 DUP2 SWAP1 MSTORE PUSH1 0x40 DUP2 KECCAK256 PUSH1 0x1 ADD SLOAD PUSH2 0x1B4D SWAP1 PUSH1 0x1 PUSH1 0x1 PUSH1 0x70 SHL SUB AND DUP4 PUSH3 0x69780 PUSH2 0x1F13 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP6 AND PUSH0 DUP2 DUP2 MSTORE PUSH1 0x20 DUP2 DUP2 MSTORE PUSH1 0x40 SWAP2 DUP3 SWAP1 KECCAK256 PUSH1 0x1 ADD DUP1 SLOAD PUSH14 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFF NOT AND PUSH1 0x1 PUSH1 0x1 PUSH1 0x70 SHL SUB SWAP7 SWAP1 SWAP7 AND SWAP6 SWAP1 SWAP6 OR SWAP1 SWAP5 SSTORE DUP1 MLOAD PUSH4 0xFFFFFFFF DUP8 AND DUP2 MSTORE PUSH6 0xFFFFFFFFFFFF DUP5 AND SWAP5 DUP2 ADD SWAP5 SWAP1 SWAP5 MSTORE SWAP2 SWAP4 POP SWAP2 PUSH32 0xA56B76017453F399EC2327BA00375DBFB1FD070FF854341AD6191E6A2E2DE19C SWAP2 ADD PUSH2 0xAC8 JUMP JUMPDEST PUSH0 DUP3 DUP3 XOR DUP3 DUP5 GT MUL DUP3 XOR PUSH2 0x8F5 JUMP JUMPDEST PUSH0 DUP2 DUP2 MSTORE PUSH1 0x2 PUSH1 0x20 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD PUSH6 0xFFFFFFFFFFFF AND DUP1 ISZERO DUP1 ISZERO SWAP1 PUSH2 0x1C10 JUMPI POP PUSH2 0x1C0E DUP2 PUSH2 0x179D JUMP JUMPDEST ISZERO JUMPDEST ISZERO PUSH2 0x76A JUMPI PUSH1 0x40 MLOAD PUSH4 0x813E9459 PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 DUP2 ADD DUP4 SWAP1 MSTORE PUSH1 0x24 ADD PUSH2 0x840 JUMP JUMPDEST PUSH0 DUP1 PUSH1 0x4 DUP4 LT ISZERO PUSH2 0x1C46 JUMPI POP PUSH0 SWAP1 POP DUP1 PUSH2 0xD4E JUMP JUMPDEST ADDRESS PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP7 AND SUB PUSH2 0x1C69 JUMPI PUSH2 0xD09 ADDRESS PUSH2 0x1C64 DUP7 DUP7 PUSH2 0x128D JUMP JUMPDEST PUSH2 0x1A0D JUMP JUMPDEST PUSH0 PUSH0 PUSH0 PUSH2 0x1C76 DUP8 DUP8 PUSH2 0x1CF4 JUMP JUMPDEST SWAP3 POP SWAP3 POP SWAP3 POP DUP3 ISZERO DUP1 ISZERO PUSH2 0x1C8E JUMPI POP PUSH2 0x1C8E ADDRESS PUSH2 0xB7F JUMP JUMPDEST ISZERO PUSH2 0x1CA1 JUMPI PUSH0 PUSH0 SWAP5 POP SWAP5 POP POP POP POP PUSH2 0xD4E JUMP JUMPDEST PUSH0 PUSH0 PUSH2 0x1CAD DUP5 DUP12 PUSH2 0xD6D JUMP JUMPDEST SWAP2 POP SWAP2 POP DUP2 PUSH2 0x1CC6 JUMPI PUSH0 PUSH0 SWAP7 POP SWAP7 POP POP POP POP POP POP PUSH2 0xD4E JUMP JUMPDEST PUSH2 0x1CDC DUP4 PUSH4 0xFFFFFFFF AND DUP3 PUSH4 0xFFFFFFFF AND PUSH2 0x1BD6 JUMP JUMPDEST PUSH4 0xFFFFFFFF DUP2 AND ISZERO SWAP12 SWAP1 SWAP11 POP SWAP9 POP POP POP POP POP POP POP POP POP JUMP JUMPDEST PUSH0 DUP1 DUP1 PUSH1 0x4 DUP5 LT ISZERO PUSH2 0x1D0D JUMPI POP PUSH0 SWAP2 POP DUP2 SWAP1 POP DUP1 PUSH2 0x1ED3 JUMP JUMPDEST PUSH0 PUSH2 0x1D18 DUP7 DUP7 PUSH2 0x128D JUMP JUMPDEST SWAP1 POP PUSH1 0x1 PUSH1 0x1 PUSH1 0xE0 SHL SUB NOT DUP2 AND PUSH4 0x10A6AA37 PUSH1 0xE3 SHL EQ DUP1 PUSH2 0x1D49 JUMPI POP PUSH1 0x1 PUSH1 0x1 PUSH1 0xE0 SHL SUB NOT DUP2 AND PUSH4 0x30CAE187 PUSH1 0xE0 SHL EQ JUMPDEST DUP1 PUSH2 0x1D64 JUMPI POP PUSH1 0x1 PUSH1 0x1 PUSH1 0xE0 SHL SUB NOT DUP2 AND PUSH4 0x294B14A9 PUSH1 0xE1 SHL EQ JUMPDEST DUP1 PUSH2 0x1D7F JUMPI POP PUSH1 0x1 PUSH1 0x1 PUSH1 0xE0 SHL SUB NOT DUP2 AND PUSH4 0x5326CAE7 PUSH1 0xE1 SHL EQ JUMPDEST DUP1 PUSH2 0x1D9A JUMPI POP PUSH1 0x1 PUSH1 0x1 PUSH1 0xE0 SHL SUB NOT DUP2 AND PUSH4 0xD22B5989 PUSH1 0xE0 SHL EQ JUMPDEST ISZERO PUSH2 0x1DAF JUMPI PUSH1 0x1 PUSH0 PUSH0 SWAP4 POP SWAP4 POP SWAP4 POP POP PUSH2 0x1ED3 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xE0 SHL SUB NOT DUP2 AND PUSH4 0x63FC60F PUSH1 0xE2 SHL EQ DUP1 PUSH2 0x1DDE JUMPI POP PUSH1 0x1 PUSH1 0x1 PUSH1 0xE0 SHL SUB NOT DUP2 AND PUSH4 0x167BD395 PUSH1 0xE0 SHL EQ JUMPDEST DUP1 PUSH2 0x1DF9 JUMPI POP PUSH1 0x1 PUSH1 0x1 PUSH1 0xE0 SHL SUB NOT DUP2 AND PUSH4 0x8D6122D PUSH1 0xE0 SHL EQ JUMPDEST ISZERO PUSH2 0x1E38 JUMPI PUSH0 PUSH2 0x1E0D PUSH1 0x24 PUSH1 0x4 DUP9 DUP11 PUSH2 0x264F JUMP JUMPDEST DUP2 ADD SWAP1 PUSH2 0x1E1A SWAP2 SWAP1 PUSH2 0x22E6 JUMP JUMPDEST SWAP1 POP PUSH0 PUSH2 0x1E26 DUP3 PUSH2 0x9C5 JUMP JUMPDEST PUSH1 0x1 SWAP7 POP PUSH0 SWAP6 POP SWAP4 POP PUSH2 0x1ED3 SWAP3 POP POP POP JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xE0 SHL SUB NOT DUP2 AND PUSH4 0x12E238D PUSH1 0xE5 SHL EQ DUP1 PUSH2 0x1E67 JUMPI POP PUSH1 0x1 PUSH1 0x1 PUSH1 0xE0 SHL SUB NOT DUP2 AND PUSH4 0x5BE958B1 PUSH1 0xE1 SHL EQ JUMPDEST ISZERO PUSH2 0x1EBF JUMPI PUSH0 PUSH2 0x1E7B PUSH1 0x24 PUSH1 0x4 DUP9 DUP11 PUSH2 0x264F JUMP JUMPDEST DUP2 ADD SWAP1 PUSH2 0x1E88 SWAP2 SWAP1 PUSH2 0x2122 JUMP JUMPDEST SWAP1 POP PUSH1 0x1 PUSH2 0x1EB1 DUP3 PUSH1 0x1 PUSH1 0x1 PUSH1 0x40 SHL SUB SWAP1 DUP2 AND PUSH0 SWAP1 DUP2 MSTORE PUSH1 0x1 PUSH1 0x20 DUP2 SWAP1 MSTORE PUSH1 0x40 SWAP1 SWAP2 KECCAK256 ADD SLOAD AND SWAP1 JUMP JUMPDEST PUSH0 SWAP5 POP SWAP5 POP SWAP5 POP POP POP PUSH2 0x1ED3 JUMP JUMPDEST PUSH0 PUSH2 0x1ECA ADDRESS DUP4 PUSH2 0xA04 JUMP JUMPDEST PUSH0 SWAP4 POP SWAP4 POP SWAP4 POP POP JUMPDEST SWAP3 POP SWAP3 POP SWAP3 JUMP JUMPDEST PUSH0 PUSH0 PUSH0 DUP4 MLOAD PUSH1 0x20 DUP6 ADD DUP7 DUP9 GAS CALL SWAP5 SWAP4 POP POP POP POP JUMP JUMPDEST PUSH1 0x40 MLOAD RETURNDATASIZE DUP2 MSTORE RETURNDATASIZE PUSH0 PUSH1 0x20 DUP4 ADD RETURNDATACOPY RETURNDATASIZE PUSH1 0x20 ADD DUP2 ADD PUSH1 0x40 MSTORE SWAP1 JUMP JUMPDEST PUSH1 0x40 MLOAD RETURNDATASIZE PUSH0 DUP3 RETURNDATACOPY RETURNDATASIZE DUP2 REVERT JUMPDEST PUSH0 PUSH0 PUSH0 PUSH2 0x1F28 DUP7 PUSH1 0x1 PUSH1 0x1 PUSH1 0x70 SHL SUB AND PUSH2 0x11AD JUMP JUMPDEST SWAP1 POP PUSH0 PUSH2 0x1F63 DUP6 PUSH4 0xFFFFFFFF AND DUP8 PUSH4 0xFFFFFFFF AND DUP5 PUSH4 0xFFFFFFFF AND GT PUSH2 0x1F4E JUMPI PUSH0 PUSH2 0x1F58 JUMP JUMPDEST PUSH2 0x1F58 DUP9 DUP6 PUSH2 0x2788 JUMP JUMPDEST PUSH4 0xFFFFFFFF AND PUSH2 0x1BD6 JUMP JUMPDEST SWAP1 POP DUP1 PUSH4 0xFFFFFFFF AND PUSH2 0x1F74 PUSH2 0x1B0C JUMP JUMPDEST PUSH2 0x1F7E SWAP2 SWAP1 PUSH2 0x26EF JUMP JUMPDEST SWAP3 POP PUSH4 0xFFFFFFFF DUP7 AND PUSH1 0x20 DUP4 SWAP1 SHL PUSH8 0xFFFFFFFF00000000 AND PUSH1 0x40 DUP6 SWAP1 SHL PUSH14 0xFFFFFFFFFFFF0000000000000000 AND OR OR SWAP4 POP POP POP SWAP4 POP SWAP4 SWAP2 POP POP JUMP JUMPDEST PUSH10 0xFFFFFFFFFFFFFFFFFFFF PUSH1 0x20 DUP4 SWAP1 SHR AND PUSH1 0x1 PUSH1 0x1 PUSH1 0x70 SHL SUB DUP4 AND PUSH6 0xFFFFFFFFFFFF PUSH1 0x40 DUP6 SWAP1 SHR DUP2 AND SWAP1 DUP5 AND DUP2 GT ISZERO PUSH2 0x1FF4 JUMPI DUP3 DUP3 DUP3 PUSH2 0x1FF8 JUMP JUMPDEST DUP2 PUSH0 PUSH0 JUMPDEST SWAP3 POP SWAP3 POP SWAP3 POP SWAP3 POP SWAP3 POP SWAP3 JUMP JUMPDEST PUSH0 PUSH0 PUSH0 DUP4 MLOAD PUSH1 0x20 DUP6 ADD DUP7 GAS DELEGATECALL SWAP4 SWAP3 POP POP POP JUMP JUMPDEST PUSH0 PUSH6 0xFFFFFFFFFFFF DUP3 GT ISZERO PUSH2 0x204A JUMPI PUSH1 0x40 MLOAD PUSH4 0x6DFCC65 PUSH1 0xE4 SHL DUP2 MSTORE PUSH1 0x30 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x24 DUP2 ADD DUP4 SWAP1 MSTORE PUSH1 0x44 ADD PUSH2 0x840 JUMP JUMPDEST POP SWAP1 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 AND DUP2 EQ PUSH2 0x2062 JUMPI PUSH0 PUSH0 REVERT JUMPDEST POP JUMP JUMPDEST PUSH0 PUSH0 DUP4 PUSH1 0x1F DUP5 ADD SLT PUSH2 0x2075 JUMPI PUSH0 PUSH0 REVERT JUMPDEST POP DUP2 CALLDATALOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0x40 SHL SUB DUP2 GT ISZERO PUSH2 0x208B JUMPI PUSH0 PUSH0 REVERT JUMPDEST PUSH1 0x20 DUP4 ADD SWAP2 POP DUP4 PUSH1 0x20 DUP3 PUSH1 0x5 SHL DUP6 ADD ADD GT ISZERO PUSH2 0xDDF JUMPI PUSH0 PUSH0 REVERT JUMPDEST DUP1 CALLDATALOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0x40 SHL SUB DUP2 AND DUP2 EQ PUSH2 0x20BB JUMPI PUSH0 PUSH0 REVERT JUMPDEST SWAP2 SWAP1 POP JUMP JUMPDEST PUSH0 PUSH0 PUSH0 PUSH0 PUSH1 0x60 DUP6 DUP8 SUB SLT ISZERO PUSH2 0x20D3 JUMPI PUSH0 PUSH0 REVERT JUMPDEST DUP5 CALLDATALOAD PUSH2 0x20DE DUP2 PUSH2 0x204E JUMP JUMPDEST SWAP4 POP PUSH1 0x20 DUP6 ADD CALLDATALOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0x40 SHL SUB DUP2 GT ISZERO PUSH2 0x20F8 JUMPI PUSH0 PUSH0 REVERT JUMPDEST PUSH2 0x2104 DUP8 DUP3 DUP9 ADD PUSH2 0x2065 JUMP JUMPDEST SWAP1 SWAP5 POP SWAP3 POP PUSH2 0x2117 SWAP1 POP PUSH1 0x40 DUP7 ADD PUSH2 0x20A5 JUMP JUMPDEST SWAP1 POP SWAP3 SWAP6 SWAP2 SWAP5 POP SWAP3 POP JUMP JUMPDEST PUSH0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x2132 JUMPI PUSH0 PUSH0 REVERT JUMPDEST PUSH2 0x8F5 DUP3 PUSH2 0x20A5 JUMP JUMPDEST PUSH0 PUSH0 PUSH1 0x40 DUP4 DUP6 SUB SLT ISZERO PUSH2 0x214C JUMPI PUSH0 PUSH0 REVERT JUMPDEST DUP3 CALLDATALOAD PUSH2 0x2157 DUP2 PUSH2 0x204E JUMP JUMPDEST SWAP2 POP PUSH1 0x20 DUP4 ADD CALLDATALOAD DUP1 ISZERO ISZERO DUP2 EQ PUSH2 0x216B JUMPI PUSH0 PUSH0 REVERT JUMPDEST DUP1 SWAP2 POP POP SWAP3 POP SWAP3 SWAP1 POP JUMP JUMPDEST PUSH0 PUSH0 PUSH1 0x40 DUP4 DUP6 SUB SLT ISZERO PUSH2 0x2187 JUMPI PUSH0 PUSH0 REVERT JUMPDEST DUP3 CALLDATALOAD PUSH2 0x2192 DUP2 PUSH2 0x204E JUMP JUMPDEST SWAP2 POP PUSH1 0x20 DUP4 ADD CALLDATALOAD PUSH2 0x216B DUP2 PUSH2 0x204E JUMP JUMPDEST PUSH0 PUSH0 DUP4 PUSH1 0x1F DUP5 ADD SLT PUSH2 0x21B2 JUMPI PUSH0 PUSH0 REVERT JUMPDEST POP DUP2 CALLDATALOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0x40 SHL SUB DUP2 GT ISZERO PUSH2 0x21C8 JUMPI PUSH0 PUSH0 REVERT JUMPDEST PUSH1 0x20 DUP4 ADD SWAP2 POP DUP4 PUSH1 0x20 DUP3 DUP6 ADD ADD GT ISZERO PUSH2 0xDDF JUMPI PUSH0 PUSH0 REVERT JUMPDEST PUSH0 PUSH0 PUSH0 PUSH1 0x40 DUP5 DUP7 SUB SLT ISZERO PUSH2 0x21F1 JUMPI PUSH0 PUSH0 REVERT JUMPDEST DUP4 CALLDATALOAD PUSH2 0x21FC DUP2 PUSH2 0x204E JUMP JUMPDEST SWAP3 POP PUSH1 0x20 DUP5 ADD CALLDATALOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0x40 SHL SUB DUP2 GT ISZERO PUSH2 0x2216 JUMPI PUSH0 PUSH0 REVERT JUMPDEST PUSH2 0x2222 DUP7 DUP3 DUP8 ADD PUSH2 0x21A2 JUMP JUMPDEST SWAP5 SWAP8 SWAP1 SWAP7 POP SWAP4 SWAP5 POP POP POP POP JUMP JUMPDEST DUP1 CALLDATALOAD PUSH4 0xFFFFFFFF DUP2 AND DUP2 EQ PUSH2 0x20BB JUMPI PUSH0 PUSH0 REVERT JUMPDEST PUSH0 PUSH0 PUSH0 PUSH1 0x60 DUP5 DUP7 SUB SLT ISZERO PUSH2 0x2254 JUMPI PUSH0 PUSH0 REVERT JUMPDEST PUSH2 0x225D DUP5 PUSH2 0x20A5 JUMP JUMPDEST SWAP3 POP PUSH1 0x20 DUP5 ADD CALLDATALOAD PUSH2 0x226D DUP2 PUSH2 0x204E JUMP JUMPDEST SWAP2 POP PUSH2 0x227B PUSH1 0x40 DUP6 ADD PUSH2 0x222F JUMP JUMPDEST SWAP1 POP SWAP3 POP SWAP3 POP SWAP3 JUMP JUMPDEST PUSH0 PUSH0 PUSH1 0x40 DUP4 DUP6 SUB SLT ISZERO PUSH2 0x2295 JUMPI PUSH0 PUSH0 REVERT JUMPDEST PUSH2 0x2192 DUP4 PUSH2 0x20A5 JUMP JUMPDEST PUSH0 PUSH0 PUSH1 0x40 DUP4 DUP6 SUB SLT ISZERO PUSH2 0x22AF JUMPI PUSH0 PUSH0 REVERT JUMPDEST PUSH2 0x22B8 DUP4 PUSH2 0x20A5 JUMP JUMPDEST SWAP2 POP PUSH2 0x22C6 PUSH1 0x20 DUP5 ADD PUSH2 0x20A5 JUMP JUMPDEST SWAP1 POP SWAP3 POP SWAP3 SWAP1 POP JUMP JUMPDEST PUSH0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x22DF JUMPI PUSH0 PUSH0 REVERT JUMPDEST POP CALLDATALOAD SWAP2 SWAP1 POP JUMP JUMPDEST PUSH0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x22F6 JUMPI PUSH0 PUSH0 REVERT JUMPDEST DUP2 CALLDATALOAD PUSH2 0x8F5 DUP2 PUSH2 0x204E JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xE0 SHL SUB NOT DUP2 AND DUP2 EQ PUSH2 0x2062 JUMPI PUSH0 PUSH0 REVERT JUMPDEST PUSH0 PUSH0 PUSH1 0x40 DUP4 DUP6 SUB SLT ISZERO PUSH2 0x2327 JUMPI PUSH0 PUSH0 REVERT JUMPDEST DUP3 CALLDATALOAD PUSH2 0x2332 DUP2 PUSH2 0x204E JUMP JUMPDEST SWAP2 POP PUSH1 0x20 DUP4 ADD CALLDATALOAD PUSH2 0x216B DUP2 PUSH2 0x2301 JUMP JUMPDEST PUSH0 PUSH0 PUSH0 PUSH1 0x40 DUP5 DUP7 SUB SLT ISZERO PUSH2 0x2354 JUMPI PUSH0 PUSH0 REVERT JUMPDEST PUSH2 0x21FC DUP5 PUSH2 0x20A5 JUMP JUMPDEST PUSH0 PUSH0 PUSH1 0x40 DUP4 DUP6 SUB SLT ISZERO PUSH2 0x236E JUMPI PUSH0 PUSH0 REVERT JUMPDEST PUSH2 0x2377 DUP4 PUSH2 0x20A5 JUMP JUMPDEST SWAP2 POP PUSH2 0x22C6 PUSH1 0x20 DUP5 ADD PUSH2 0x222F JUMP JUMPDEST PUSH0 PUSH0 PUSH0 PUSH0 PUSH1 0x60 DUP6 DUP8 SUB SLT ISZERO PUSH2 0x2398 JUMPI PUSH0 PUSH0 REVERT JUMPDEST DUP5 CALLDATALOAD PUSH2 0x23A3 DUP2 PUSH2 0x204E JUMP JUMPDEST SWAP4 POP PUSH1 0x20 DUP6 ADD CALLDATALOAD PUSH2 0x23B3 DUP2 PUSH2 0x204E JUMP JUMPDEST SWAP3 POP PUSH1 0x40 DUP6 ADD CALLDATALOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0x40 SHL SUB DUP2 GT ISZERO PUSH2 0x23CD JUMPI PUSH0 PUSH0 REVERT JUMPDEST PUSH2 0x23D9 DUP8 DUP3 DUP9 ADD PUSH2 0x21A2 JUMP JUMPDEST SWAP6 SWAP9 SWAP5 SWAP8 POP SWAP6 POP POP POP POP JUMP JUMPDEST PUSH0 PUSH0 PUSH1 0x20 DUP4 DUP6 SUB SLT ISZERO PUSH2 0x23F6 JUMPI PUSH0 PUSH0 REVERT JUMPDEST DUP3 CALLDATALOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0x40 SHL SUB DUP2 GT ISZERO PUSH2 0x240B JUMPI PUSH0 PUSH0 REVERT JUMPDEST PUSH2 0x2417 DUP6 DUP3 DUP7 ADD PUSH2 0x2065 JUMP JUMPDEST SWAP1 SWAP7 SWAP1 SWAP6 POP SWAP4 POP POP POP POP JUMP JUMPDEST PUSH0 PUSH1 0x20 DUP3 ADD PUSH1 0x20 DUP4 MSTORE DUP1 DUP5 MLOAD DUP1 DUP4 MSTORE PUSH1 0x40 DUP6 ADD SWAP2 POP PUSH1 0x40 DUP2 PUSH1 0x5 SHL DUP7 ADD ADD SWAP3 POP PUSH1 0x20 DUP7 ADD PUSH0 JUMPDEST DUP3 DUP2 LT ISZERO PUSH2 0x249B JUMPI PUSH1 0x3F NOT DUP8 DUP7 SUB ADD DUP5 MSTORE DUP2 MLOAD DUP1 MLOAD DUP1 DUP8 MSTORE DUP1 PUSH1 0x20 DUP4 ADD PUSH1 0x20 DUP10 ADD MCOPY PUSH0 PUSH1 0x20 DUP3 DUP10 ADD ADD MSTORE PUSH1 0x20 PUSH1 0x1F NOT PUSH1 0x1F DUP4 ADD AND DUP9 ADD ADD SWAP7 POP POP POP PUSH1 0x20 DUP3 ADD SWAP2 POP PUSH1 0x20 DUP5 ADD SWAP4 POP PUSH1 0x1 DUP2 ADD SWAP1 POP PUSH2 0x2449 JUMP JUMPDEST POP SWAP3 SWAP7 SWAP6 POP POP POP POP POP POP JUMP JUMPDEST PUSH0 PUSH0 PUSH0 PUSH1 0x60 DUP5 DUP7 SUB SLT ISZERO PUSH2 0x24B9 JUMPI PUSH0 PUSH0 REVERT JUMPDEST DUP4 CALLDATALOAD PUSH2 0x24C4 DUP2 PUSH2 0x204E JUMP JUMPDEST SWAP3 POP PUSH1 0x20 DUP5 ADD CALLDATALOAD PUSH2 0x24D4 DUP2 PUSH2 0x204E JUMP JUMPDEST SWAP2 POP PUSH1 0x40 DUP5 ADD CALLDATALOAD PUSH2 0x24E4 DUP2 PUSH2 0x2301 JUMP JUMPDEST DUP1 SWAP2 POP POP SWAP3 POP SWAP3 POP SWAP3 JUMP JUMPDEST PUSH0 PUSH0 PUSH1 0x40 DUP4 DUP6 SUB SLT ISZERO PUSH2 0x2500 JUMPI PUSH0 PUSH0 REVERT JUMPDEST DUP3 CALLDATALOAD PUSH2 0x2377 DUP2 PUSH2 0x204E JUMP JUMPDEST PUSH0 PUSH0 PUSH0 PUSH0 PUSH1 0x60 DUP6 DUP8 SUB SLT ISZERO PUSH2 0x251E JUMPI PUSH0 PUSH0 REVERT JUMPDEST DUP5 CALLDATALOAD PUSH2 0x2529 DUP2 PUSH2 0x204E JUMP JUMPDEST SWAP4 POP PUSH1 0x20 DUP6 ADD CALLDATALOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0x40 SHL SUB DUP2 GT ISZERO PUSH2 0x2543 JUMPI PUSH0 PUSH0 REVERT JUMPDEST PUSH2 0x254F DUP8 DUP3 DUP9 ADD PUSH2 0x21A2 JUMP JUMPDEST SWAP1 SWAP5 POP SWAP3 POP POP PUSH1 0x40 DUP6 ADD CALLDATALOAD PUSH6 0xFFFFFFFFFFFF DUP2 AND DUP2 EQ PUSH2 0x256D JUMPI PUSH0 PUSH0 REVERT JUMPDEST SWAP4 SWAP7 SWAP3 SWAP6 POP SWAP1 SWAP4 POP POP JUMP JUMPDEST PUSH4 0x4E487B71 PUSH1 0xE0 SHL PUSH0 MSTORE PUSH1 0x32 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH0 REVERT JUMPDEST PUSH0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x259C JUMPI PUSH0 PUSH0 REVERT JUMPDEST DUP2 CALLDATALOAD PUSH2 0x8F5 DUP2 PUSH2 0x2301 JUMP JUMPDEST DUP2 DUP4 MSTORE DUP2 DUP2 PUSH1 0x20 DUP6 ADD CALLDATACOPY POP PUSH0 DUP3 DUP3 ADD PUSH1 0x20 SWAP1 DUP2 ADD SWAP2 SWAP1 SWAP2 MSTORE PUSH1 0x1F SWAP1 SWAP2 ADD PUSH1 0x1F NOT AND SWAP1 SWAP2 ADD ADD SWAP1 JUMP JUMPDEST PUSH1 0x20 DUP2 MSTORE PUSH0 PUSH2 0x25E2 PUSH1 0x20 DUP4 ADD DUP5 DUP7 PUSH2 0x25A7 JUMP JUMPDEST SWAP5 SWAP4 POP POP POP POP JUMP JUMPDEST PUSH0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x25FA JUMPI PUSH0 PUSH0 REVERT JUMPDEST DUP2 MLOAD PUSH2 0x8F5 DUP2 PUSH2 0x2301 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP6 DUP2 AND DUP3 MSTORE DUP5 AND PUSH1 0x20 DUP3 ADD MSTORE PUSH1 0x60 PUSH1 0x40 DUP3 ADD DUP2 SWAP1 MSTORE PUSH0 SWAP1 PUSH2 0x2631 SWAP1 DUP4 ADD DUP5 DUP7 PUSH2 0x25A7 JUMP JUMPDEST SWAP7 SWAP6 POP POP POP POP POP POP JUMP JUMPDEST PUSH4 0x4E487B71 PUSH1 0xE0 SHL PUSH0 MSTORE PUSH1 0x11 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH0 REVERT JUMPDEST PUSH0 PUSH0 DUP6 DUP6 GT ISZERO PUSH2 0x265D JUMPI PUSH0 PUSH0 REVERT JUMPDEST DUP4 DUP7 GT ISZERO PUSH2 0x2669 JUMPI PUSH0 PUSH0 REVERT JUMPDEST POP POP DUP3 ADD SWAP4 SWAP2 SWAP1 SWAP3 SUB SWAP2 POP JUMP JUMPDEST PUSH4 0x4E487B71 PUSH1 0xE0 SHL PUSH0 MSTORE PUSH1 0x41 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH0 REVERT JUMPDEST PUSH0 PUSH0 DUP4 CALLDATALOAD PUSH1 0x1E NOT DUP5 CALLDATASIZE SUB ADD DUP2 SLT PUSH2 0x269F JUMPI PUSH0 PUSH0 REVERT JUMPDEST DUP4 ADD DUP1 CALLDATALOAD SWAP2 POP PUSH1 0x1 PUSH1 0x1 PUSH1 0x40 SHL SUB DUP3 GT ISZERO PUSH2 0x26B8 JUMPI PUSH0 PUSH0 REVERT JUMPDEST PUSH1 0x20 ADD SWAP2 POP CALLDATASIZE DUP2 SWAP1 SUB DUP3 SGT ISZERO PUSH2 0xDDF JUMPI PUSH0 PUSH0 REVERT JUMPDEST DUP3 DUP5 DUP3 CALLDATACOPY PUSH0 DUP4 DUP3 ADD PUSH0 DUP2 MSTORE DUP4 MLOAD DUP1 PUSH1 0x20 DUP7 ADD DUP4 MCOPY PUSH0 SWAP2 ADD SWAP1 DUP2 MSTORE SWAP6 SWAP5 POP POP POP POP POP JUMP JUMPDEST PUSH6 0xFFFFFFFFFFFF DUP2 DUP2 AND DUP4 DUP3 AND ADD SWAP1 DUP2 GT ISZERO PUSH2 0x752 JUMPI PUSH2 0x752 PUSH2 0x263B JUMP JUMPDEST PUSH6 0xFFFFFFFFFFFF DUP7 AND DUP2 MSTORE PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP6 DUP2 AND PUSH1 0x20 DUP4 ADD MSTORE DUP5 AND PUSH1 0x40 DUP3 ADD MSTORE PUSH1 0x80 PUSH1 0x60 DUP3 ADD DUP2 SWAP1 MSTORE PUSH0 SWAP1 PUSH2 0x2747 SWAP1 DUP4 ADD DUP5 DUP7 PUSH2 0x25A7 JUMP JUMPDEST SWAP8 SWAP7 POP POP POP POP POP POP POP JUMP JUMPDEST DUP1 CALLDATALOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xE0 SHL SUB NOT DUP2 AND SWAP1 PUSH1 0x4 DUP5 LT ISZERO PUSH2 0x1A06 JUMPI PUSH1 0x1 PUSH1 0x1 PUSH1 0xE0 SHL SUB NOT PUSH1 0x4 SWAP5 SWAP1 SWAP5 SUB PUSH1 0x3 SHL DUP5 SWAP1 SHL AND SWAP1 SWAP3 AND SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH4 0xFFFFFFFF DUP3 DUP2 AND DUP3 DUP3 AND SUB SWAP1 DUP2 GT ISZERO PUSH2 0x752 JUMPI PUSH2 0x752 PUSH2 0x263B JUMP INVALID LOG2 PUSH5 0x6970667358 0x22 SLT KECCAK256 SWAP12 BALANCE PUSH5 0xB8CDEAC6FA 0xAF DUP13 SUB 0xB8 LOG2 PUSH28 0x787DCCCB72987C31447C36CEDC0E6DF90B7364736F6C634300081E00 CALLER ","sourceMap":"3782:26184:15:-:0;;;6339:283;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;-1:-1:-1;;;;;6387:26:15;;6383:108;;6436:44;;-1:-1:-1;;;6436:44:15;;6477:1;6436:44;;;455:51:87;428:18;;6436:44:15;;;;;;;;6383:108;6573:42;5493:16;6596:12;5493:16;;6573:10;:42::i;:::-;;6339:283;3782:26184;;11603:1061;11761:4;-1:-1:-1;;;;;;;;;;;11781:21:15;;;11777:90;;11825:31;;-1:-1:-1;;;11825:31:15;;-1:-1:-1;;;;;679:31:87;;11825::15;;;661:50:87;634:18;;11825:31:15;517:200:87;11777:90:15;-1:-1:-1;;;;;11894:14:15;;11877;11894;;;:6;:14;;;;;;;;-1:-1:-1;;;;;11894:31:15;;;;;;;;;:37;;;:42;;11969:585;;;;12006:29;;;:16;:14;:16::i;:::-;:29;;;;:::i;:::-;11998:37;;12083:55;;;;;;;;12098:5;12083:55;;;;;;12112:24;:14;:22;;;;;:24;;:::i;:::-;-1:-1:-1;;;;;12083:55:15;;;;;;-1:-1:-1;;;;;12049:14:15;;;;;;:6;:14;;;;;;;;-1:-1:-1;;;;;12049:31:15;;;;;;;;;:89;;;;;;;;;;;;;;-1:-1:-1;;;;;;12049:89:15;;;;;;;;;;;;;;11969:585;;;-1:-1:-1;;;;;12430:14:15;;12528:1;12430:14;;;:6;:14;;;;;;;;-1:-1:-1;;;;;12430:31:15;;;;;;;;;:37;:113;;:37;;;;-1:-1:-1;;;;;12430:37:15;;12496:14;;12430:48;:113::i;:::-;-1:-1:-1;;;;;12382:14:15;;;;;;:6;:14;;;;;;;;-1:-1:-1;;;;;12382:31:15;;;;;;;;;12381:162;;-1:-1:-1;;;;;12381:162:15;;;;;-1:-1:-1;;;;;;;;12381:162:15;;;;;;;;;;;-1:-1:-1;11969:585:15;12569:62;;;1260:10:87;1248:23;;1230:42;;1320:14;1308:27;;1303:2;1288:18;;1281:55;1379:14;;1372:22;1352:18;;;1345:50;12569:62:15;;-1:-1:-1;;;;;12569:62:15;;;-1:-1:-1;;;;;12569:62:15;;;;;;;;1218:2:87;12569:62:15;;;-1:-1:-1;12648:9:15;11603:1061;-1:-1:-1;;;;;11603:1061:15:o;750:110:49:-;794:6;819:34;837:15;819:17;:34::i;:::-;812:41;;750:110;:::o;2507:108::-;2588:20;;;2507:108::o;4032:390::-;4153:18;;;4213:10;-1:-1:-1;;;;;4213:8:49;;;:10::i;:::-;4198:25;;4233:14;4257:61;4266:10;4257:61;;4286:8;4278:16;;:5;:16;;;:39;;4316:1;4278:39;;;4297:16;4305:8;4297:5;:16;:::i;:::-;4257:61;;:8;:61::i;:::-;4233:86;-1:-1:-1;4338:21:49;;;:11;:9;:11::i;:::-;:21;;;;:::i;:::-;4329:30;-1:-1:-1;5125:19:49;;;5119:2;5095:26;;;;;5088:2;5069:21;;;;;5068:54;:76;4369:46;;;;4032:390;;;;;;:::o;14296:213:48:-;14352:6;14382:16;14374:24;;14370:103;;;14421:41;;-1:-1:-1;;;14421:41:48;;14452:2;14421:41;;;1762:36:87;1814:18;;;1807:34;;;1735:18;;14421:41:48;1581:266:87;14370:103:48;-1:-1:-1;14496:5:48;14296:213::o;3608:130:49:-;3656:6;;3695:14;-1:-1:-1;;;;;3695:12:49;;;:14::i;:::-;-1:-1:-1;3674:35:49;;3608:130;-1:-1:-1;;;;3608:130:49:o;5451:111:47:-;5543:5;;;5328;;;5327:36;5322:42;;5451:111;;;;;:::o;3392:159:49:-;3444:18;;;3515:29;3526:4;3532:11;:9;:11::i;:::-;3515:10;:29::i;:::-;3508:36;;;;;;3392:159;;;;;:::o;2867:307::-;-1:-1:-1;;;;;4770:2:49;4763:9;;;;-1:-1:-1;;;;;3061:11:49;;4799:9;4806:2;4799:9;;;;;;3091:19;;;;;:76;;3135:11;3148:10;3160:6;3091:76;;;3114:10;3126:1;3129;3091:76;3084:83;;;;;;2867:307;;;;;:::o;14:290:87:-;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:87;;214:42;;204:70;;270:1;267;260:12;204:70;293:5;14:290;-1:-1:-1;;;14:290:87:o;722:127::-;783:10;778:3;774:20;771:1;764:31;814:4;811:1;804:15;838:4;835:1;828:15;854:179;953:14;922:22;;;946;;;918:51;;981:23;;978:49;;;1007:18;;:::i;1406:170::-;1503:10;1496:18;;;1476;;;1472:43;;1527:20;;1524:46;;;1550:18;;:::i;1581:266::-;3782:26184:15;;;;;;"},"deployedBytecode":{"functionDebugData":{"@ADMIN_ROLE_4543":{"entryPoint":null,"id":4543,"parameterSlots":0,"returnSlots":0},"@PUBLIC_ROLE_4551":{"entryPoint":null,"id":4551,"parameterSlots":0,"returnSlots":0},"@_canCallExtended_6190":{"entryPoint":4668,"id":6190,"parameterSlots":4,"returnSlots":2},"@_canCallSelf_6292":{"entryPoint":7217,"id":6292,"parameterSlots":3,"returnSlots":2},"@_checkAuthorized_5992":{"entryPoint":4277,"id":5992,"parameterSlots":0,"returnSlots":0},"@_checkNotScheduled_5596":{"entryPoint":7141,"id":5596,"parameterSlots":1,"returnSlots":0},"@_checkSelector_6345":{"entryPoint":4749,"id":6345,"parameterSlots":2,"returnSlots":1},"@_consumeScheduledOp_5898":{"entryPoint":4772,"id":5898,"parameterSlots":1,"returnSlots":1},"@_contextSuffixLength_10285":{"entryPoint":null,"id":10285,"parameterSlots":0,"returnSlots":1},"@_getAdminRestrictions_6145":{"entryPoint":7412,"id":6145,"parameterSlots":2,"returnSlots":3},"@_getFullAt_14581":{"entryPoint":8121,"id":14581,"parameterSlots":2,"returnSlots":3},"@_grantRole_5108":{"entryPoint":5267,"id":5108,"parameterSlots":4,"returnSlots":1},"@_hashExecutionId_6371":{"entryPoint":5026,"id":6371,"parameterSlots":2,"returnSlots":1},"@_isExecuting_6310":{"entryPoint":6669,"id":6310,"parameterSlots":2,"returnSlots":1},"@_isExpired_6328":{"entryPoint":6045,"id":6328,"parameterSlots":1,"returnSlots":1},"@_msgData_10277":{"entryPoint":null,"id":10277,"parameterSlots":0,"returnSlots":2},"@_msgSender_10268":{"entryPoint":null,"id":10268,"parameterSlots":0,"returnSlots":1},"@_revokeRole_5156":{"entryPoint":6691,"id":5156,"parameterSlots":2,"returnSlots":1},"@_setGrantDelay_5268":{"entryPoint":6268,"id":5268,"parameterSlots":2,"returnSlots":0},"@_setRoleAdmin_5190":{"entryPoint":5882,"id":5190,"parameterSlots":2,"returnSlots":0},"@_setRoleGuardian_5224":{"entryPoint":6091,"id":5224,"parameterSlots":2,"returnSlots":0},"@_setTargetAdminDelay_5380":{"entryPoint":6939,"id":5380,"parameterSlots":2,"returnSlots":0},"@_setTargetClosed_5417":{"entryPoint":4555,"id":5417,"parameterSlots":2,"returnSlots":0},"@_setTargetFunctionRole_5329":{"entryPoint":4396,"id":5329,"parameterSlots":3,"returnSlots":0},"@bubbleRevert_10459":{"entryPoint":7944,"id":10459,"parameterSlots":0,"returnSlots":0},"@callNoReturn_10342":{"entryPoint":7898,"id":10342,"parameterSlots":3,"returnSlots":1},"@canCall_4671":{"entryPoint":3285,"id":4671,"parameterSlots":3,"returnSlots":2},"@cancel_5796":{"entryPoint":3576,"id":5796,"parameterSlots":4,"returnSlots":1},"@consumeScheduledOp_5833":{"entryPoint":2773,"id":5833,"parameterSlots":3,"returnSlots":0},"@delegatecallNoReturn_10421":{"entryPoint":8197,"id":10421,"parameterSlots":2,"returnSlots":1},"@efficientKeccak256_11071":{"entryPoint":null,"id":11071,"parameterSlots":2,"returnSlots":1},"@execute_5694":{"entryPoint":2000,"id":5694,"parameterSlots":3,"returnSlots":1},"@expiration_4680":{"entryPoint":null,"id":4680,"parameterSlots":0,"returnSlots":1},"@functionCallWithValue_10038":{"entryPoint":5063,"id":10038,"parameterSlots":3,"returnSlots":1},"@functionDelegateCall_10166":{"entryPoint":6539,"id":10166,"parameterSlots":2,"returnSlots":1},"@getAccess_4829":{"entryPoint":2334,"id":4829,"parameterSlots":2,"returnSlots":4},"@getFull_14601":{"entryPoint":5849,"id":14601,"parameterSlots":1,"returnSlots":3},"@getNonce_5454":{"entryPoint":null,"id":5454,"parameterSlots":1,"returnSlots":1},"@getRoleAdmin_4751":{"entryPoint":null,"id":4751,"parameterSlots":1,"returnSlots":1},"@getRoleGrantDelay_4781":{"entryPoint":1822,"id":4781,"parameterSlots":1,"returnSlots":1},"@getRoleGuardian_4765":{"entryPoint":null,"id":4765,"parameterSlots":1,"returnSlots":1},"@getSchedule_5440":{"entryPoint":2452,"id":5440,"parameterSlots":1,"returnSlots":1},"@getTargetAdminDelay_4737":{"entryPoint":2501,"id":4737,"parameterSlots":1,"returnSlots":1},"@getTargetFunctionRole_4721":{"entryPoint":2564,"id":4721,"parameterSlots":2,"returnSlots":1},"@get_14619":{"entryPoint":4525,"id":14619,"parameterSlots":1,"returnSlots":1},"@grantRole_4924":{"entryPoint":2300,"id":4924,"parameterSlots":3,"returnSlots":0},"@hasRole_4873":{"entryPoint":3437,"id":4873,"parameterSlots":2,"returnSlots":2},"@hashOperation_5920":{"entryPoint":3000,"id":5920,"parameterSlots":4,"returnSlots":1},"@isTargetClosed_4703":{"entryPoint":2943,"id":4703,"parameterSlots":1,"returnSlots":1},"@labelRole_4902":{"entryPoint":2622,"id":4902,"parameterSlots":3,"returnSlots":0},"@max_11392":{"entryPoint":7126,"id":11392,"parameterSlots":2,"returnSlots":1},"@minSetback_4689":{"entryPoint":null,"id":4689,"parameterSlots":0,"returnSlots":1},"@multicall_10855":{"entryPoint":3056,"id":10855,"parameterSlots":2,"returnSlots":1},"@pack_14764":{"entryPoint":null,"id":14764,"parameterSlots":3,"returnSlots":1},"@renounceRole_4963":{"entryPoint":4236,"id":4963,"parameterSlots":2,"returnSlots":0},"@returnDataSize_10445":{"entryPoint":null,"id":10445,"parameterSlots":0,"returnSlots":1},"@returnData_10453":{"entryPoint":7919,"id":10453,"parameterSlots":0,"returnSlots":1},"@revokeRole_4940":{"entryPoint":3414,"id":4940,"parameterSlots":2,"returnSlots":0},"@schedule_5568":{"entryPoint":3915,"id":5568,"parameterSlots":4,"returnSlots":2},"@setGrantDelay_5011":{"entryPoint":2982,"id":5011,"parameterSlots":2,"returnSlots":0},"@setRoleAdmin_4979":{"entryPoint":2434,"id":4979,"parameterSlots":2,"returnSlots":0},"@setRoleGuardian_4995":{"entryPoint":2546,"id":4995,"parameterSlots":2,"returnSlots":0},"@setTargetAdminDelay_5345":{"entryPoint":3558,"id":5345,"parameterSlots":2,"returnSlots":0},"@setTargetClosed_5396":{"entryPoint":1880,"id":5396,"parameterSlots":2,"returnSlots":0},"@setTargetFunctionRole_5303":{"entryPoint":1740,"id":5303,"parameterSlots":4,"returnSlots":0},"@ternary_11373":{"entryPoint":null,"id":11373,"parameterSlots":3,"returnSlots":1},"@timestamp_14513":{"entryPoint":6924,"id":14513,"parameterSlots":0,"returnSlots":1},"@toDelay_14543":{"entryPoint":null,"id":14543,"parameterSlots":1,"returnSlots":1},"@toUint48_13481":{"entryPoint":8216,"id":13481,"parameterSlots":1,"returnSlots":1},"@toUint_14490":{"entryPoint":null,"id":14490,"parameterSlots":1,"returnSlots":1},"@unpack_14726":{"entryPoint":null,"id":14726,"parameterSlots":1,"returnSlots":3},"@updateAuthority_5938":{"entryPoint":1902,"id":5938,"parameterSlots":2,"returnSlots":0},"@withUpdate_14675":{"entryPoint":7955,"id":14675,"parameterSlots":3,"returnSlots":2},"abi_decode_array_bytes4_dyn_calldata":{"entryPoint":8293,"id":null,"parameterSlots":2,"returnSlots":2},"abi_decode_bytes_calldata":{"entryPoint":8610,"id":null,"parameterSlots":2,"returnSlots":2},"abi_decode_tuple_t_address":{"entryPoint":8934,"id":null,"parameterSlots":2,"returnSlots":1},"abi_decode_tuple_t_address_payable":{"entryPoint":null,"id":null,"parameterSlots":2,"returnSlots":1},"abi_decode_tuple_t_addresst_address":{"entryPoint":8566,"id":null,"parameterSlots":2,"returnSlots":2},"abi_decode_tuple_t_addresst_addresst_bytes4":{"entryPoint":9383,"id":null,"parameterSlots":2,"returnSlots":3},"abi_decode_tuple_t_addresst_addresst_bytes_calldata_ptr":{"entryPoint":9093,"id":null,"parameterSlots":2,"returnSlots":4},"abi_decode_tuple_t_addresst_array$_t_bytes4_$dyn_calldata_ptrt_uint64":{"entryPoint":8384,"id":null,"parameterSlots":2,"returnSlots":4},"abi_decode_tuple_t_addresst_bool":{"entryPoint":8507,"id":null,"parameterSlots":2,"returnSlots":2},"abi_decode_tuple_t_addresst_bytes4":{"entryPoint":8982,"id":null,"parameterSlots":2,"returnSlots":2},"abi_decode_tuple_t_addresst_bytes_calldata_ptr":{"entryPoint":8671,"id":null,"parameterSlots":2,"returnSlots":3},"abi_decode_tuple_t_addresst_bytes_calldata_ptrt_uint48":{"entryPoint":9483,"id":null,"parameterSlots":2,"returnSlots":4},"abi_decode_tuple_t_addresst_uint32":{"entryPoint":9455,"id":null,"parameterSlots":2,"returnSlots":2},"abi_decode_tuple_t_array$_t_bytes_calldata_ptr_$dyn_calldata_ptr":{"entryPoint":9189,"id":null,"parameterSlots":2,"returnSlots":2},"abi_decode_tuple_t_bytes32":{"entryPoint":8911,"id":null,"parameterSlots":2,"returnSlots":1},"abi_decode_tuple_t_bytes4":{"entryPoint":9612,"id":null,"parameterSlots":2,"returnSlots":1},"abi_decode_tuple_t_bytes4_fromMemory":{"entryPoint":9706,"id":null,"parameterSlots":2,"returnSlots":1},"abi_decode_tuple_t_uint64":{"entryPoint":8482,"id":null,"parameterSlots":2,"returnSlots":1},"abi_decode_tuple_t_uint64t_address":{"entryPoint":8836,"id":null,"parameterSlots":2,"returnSlots":2},"abi_decode_tuple_t_uint64t_addresst_uint32":{"entryPoint":8770,"id":null,"parameterSlots":2,"returnSlots":3},"abi_decode_tuple_t_uint64t_string_calldata_ptr":{"entryPoint":9026,"id":null,"parameterSlots":2,"returnSlots":3},"abi_decode_tuple_t_uint64t_uint32":{"entryPoint":9053,"id":null,"parameterSlots":2,"returnSlots":2},"abi_decode_tuple_t_uint64t_uint64":{"entryPoint":8862,"id":null,"parameterSlots":2,"returnSlots":2},"abi_decode_uint32":{"entryPoint":8751,"id":null,"parameterSlots":1,"returnSlots":1},"abi_decode_uint64":{"entryPoint":8357,"id":null,"parameterSlots":1,"returnSlots":1},"abi_encode_string_calldata":{"entryPoint":9639,"id":null,"parameterSlots":3,"returnSlots":1},"abi_encode_tuple_packed_t_bytes_calldata_ptr_t_bytes_memory_ptr__to_t_bytes_memory_ptr_t_bytes_memory_ptr__nonPadded_inplace_fromStack_reversed":{"entryPoint":9932,"id":null,"parameterSlots":4,"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_bytes4__to_t_address_t_address_t_address_t_bytes4__fromStack_reversed":{"entryPoint":null,"id":null,"parameterSlots":5,"returnSlots":1},"abi_encode_tuple_t_address_t_address_t_bytes4__to_t_address_t_address_t_bytes4__fromStack_reversed":{"entryPoint":null,"id":null,"parameterSlots":4,"returnSlots":1},"abi_encode_tuple_t_address_t_address_t_bytes_calldata_ptr__to_t_address_t_address_t_bytes_memory_ptr__fromStack_reversed":{"entryPoint":9733,"id":null,"parameterSlots":5,"returnSlots":1},"abi_encode_tuple_t_address_t_uint64__to_t_address_t_uint64__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":9251,"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_bool_t_uint32__to_t_bool_t_uint32__fromStack_reversed":{"entryPoint":null,"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_bytes32_t_uint32__to_t_bytes32_t_uint32__fromStack_reversed":{"entryPoint":null,"id":null,"parameterSlots":3,"returnSlots":1},"abi_encode_tuple_t_bytes4__to_t_bytes4__fromStack_reversed":{"entryPoint":null,"id":null,"parameterSlots":2,"returnSlots":1},"abi_encode_tuple_t_rational_48_by_1_t_uint256__to_t_uint8_t_uint256__fromStack_reversed":{"entryPoint":null,"id":null,"parameterSlots":3,"returnSlots":1},"abi_encode_tuple_t_string_calldata_ptr__to_t_string_memory_ptr__fromStack_reversed":{"entryPoint":9679,"id":null,"parameterSlots":3,"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_uint32__to_t_uint32__fromStack_reversed":{"entryPoint":null,"id":null,"parameterSlots":2,"returnSlots":1},"abi_encode_tuple_t_uint32_t_uint48__to_t_uint32_t_uint48__fromStack_reversed":{"entryPoint":null,"id":null,"parameterSlots":3,"returnSlots":1},"abi_encode_tuple_t_uint32_t_uint48_t_bool__to_t_uint32_t_uint48_t_bool__fromStack_reversed":{"entryPoint":null,"id":null,"parameterSlots":4,"returnSlots":1},"abi_encode_tuple_t_uint48__to_t_uint48__fromStack_reversed":{"entryPoint":null,"id":null,"parameterSlots":2,"returnSlots":1},"abi_encode_tuple_t_uint48_t_address_t_address_t_bytes_calldata_ptr__to_t_uint48_t_address_t_address_t_bytes_memory_ptr__fromStack_reversed":{"entryPoint":9997,"id":null,"parameterSlots":6,"returnSlots":1},"abi_encode_tuple_t_uint48_t_uint32_t_uint32_t_uint48__to_t_uint48_t_uint32_t_uint32_t_uint48__fromStack_reversed":{"entryPoint":null,"id":null,"parameterSlots":5,"returnSlots":1},"abi_encode_tuple_t_uint64__to_t_uint64__fromStack_reversed":{"entryPoint":null,"id":null,"parameterSlots":2,"returnSlots":1},"access_calldata_tail_t_bytes_calldata_ptr":{"entryPoint":9866,"id":null,"parameterSlots":2,"returnSlots":2},"calldata_array_index_range_access_t_bytes_calldata_ptr":{"entryPoint":9807,"id":null,"parameterSlots":4,"returnSlots":2},"checked_add_t_uint48":{"entryPoint":9967,"id":null,"parameterSlots":2,"returnSlots":1},"checked_sub_t_uint256":{"entryPoint":null,"id":null,"parameterSlots":2,"returnSlots":1},"checked_sub_t_uint32":{"entryPoint":10120,"id":null,"parameterSlots":2,"returnSlots":1},"convert_bytes_to_fixedbytes_from_t_bytes_calldata_ptr_to_t_bytes4":{"entryPoint":10066,"id":null,"parameterSlots":2,"returnSlots":1},"panic_error_0x11":{"entryPoint":9787,"id":null,"parameterSlots":0,"returnSlots":0},"panic_error_0x32":{"entryPoint":9592,"id":null,"parameterSlots":0,"returnSlots":0},"panic_error_0x41":{"entryPoint":9846,"id":null,"parameterSlots":0,"returnSlots":0},"validator_revert_address":{"entryPoint":8270,"id":null,"parameterSlots":1,"returnSlots":0},"validator_revert_bytes4":{"entryPoint":8961,"id":null,"parameterSlots":1,"returnSlots":0}},"generatedSources":[{"ast":{"nativeSrc":"0:19453:87","nodeType":"YulBlock","src":"0:19453:87","statements":[{"nativeSrc":"6:3:87","nodeType":"YulBlock","src":"6:3:87","statements":[]},{"body":{"nativeSrc":"59:86:87","nodeType":"YulBlock","src":"59:86:87","statements":[{"body":{"nativeSrc":"123:16:87","nodeType":"YulBlock","src":"123:16:87","statements":[{"expression":{"arguments":[{"kind":"number","nativeSrc":"132:1:87","nodeType":"YulLiteral","src":"132:1:87","type":"","value":"0"},{"kind":"number","nativeSrc":"135:1:87","nodeType":"YulLiteral","src":"135:1:87","type":"","value":"0"}],"functionName":{"name":"revert","nativeSrc":"125:6:87","nodeType":"YulIdentifier","src":"125:6:87"},"nativeSrc":"125:12:87","nodeType":"YulFunctionCall","src":"125:12:87"},"nativeSrc":"125:12:87","nodeType":"YulExpressionStatement","src":"125:12:87"}]},"condition":{"arguments":[{"arguments":[{"name":"value","nativeSrc":"82:5:87","nodeType":"YulIdentifier","src":"82:5:87"},{"arguments":[{"name":"value","nativeSrc":"93:5:87","nodeType":"YulIdentifier","src":"93:5:87"},{"arguments":[{"arguments":[{"kind":"number","nativeSrc":"108:3:87","nodeType":"YulLiteral","src":"108:3:87","type":"","value":"160"},{"kind":"number","nativeSrc":"113:1:87","nodeType":"YulLiteral","src":"113:1:87","type":"","value":"1"}],"functionName":{"name":"shl","nativeSrc":"104:3:87","nodeType":"YulIdentifier","src":"104:3:87"},"nativeSrc":"104:11:87","nodeType":"YulFunctionCall","src":"104:11:87"},{"kind":"number","nativeSrc":"117:1:87","nodeType":"YulLiteral","src":"117:1:87","type":"","value":"1"}],"functionName":{"name":"sub","nativeSrc":"100:3:87","nodeType":"YulIdentifier","src":"100:3:87"},"nativeSrc":"100:19:87","nodeType":"YulFunctionCall","src":"100:19:87"}],"functionName":{"name":"and","nativeSrc":"89:3:87","nodeType":"YulIdentifier","src":"89:3:87"},"nativeSrc":"89:31:87","nodeType":"YulFunctionCall","src":"89:31:87"}],"functionName":{"name":"eq","nativeSrc":"79:2:87","nodeType":"YulIdentifier","src":"79:2:87"},"nativeSrc":"79:42:87","nodeType":"YulFunctionCall","src":"79:42:87"}],"functionName":{"name":"iszero","nativeSrc":"72:6:87","nodeType":"YulIdentifier","src":"72:6:87"},"nativeSrc":"72:50:87","nodeType":"YulFunctionCall","src":"72:50:87"},"nativeSrc":"69:70:87","nodeType":"YulIf","src":"69:70:87"}]},"name":"validator_revert_address","nativeSrc":"14:131:87","nodeType":"YulFunctionDefinition","parameters":[{"name":"value","nativeSrc":"48:5:87","nodeType":"YulTypedName","src":"48:5:87","type":""}],"src":"14:131:87"},{"body":{"nativeSrc":"233:283:87","nodeType":"YulBlock","src":"233:283:87","statements":[{"body":{"nativeSrc":"282:16:87","nodeType":"YulBlock","src":"282:16:87","statements":[{"expression":{"arguments":[{"kind":"number","nativeSrc":"291:1:87","nodeType":"YulLiteral","src":"291:1:87","type":"","value":"0"},{"kind":"number","nativeSrc":"294:1:87","nodeType":"YulLiteral","src":"294:1:87","type":"","value":"0"}],"functionName":{"name":"revert","nativeSrc":"284:6:87","nodeType":"YulIdentifier","src":"284:6:87"},"nativeSrc":"284:12:87","nodeType":"YulFunctionCall","src":"284:12:87"},"nativeSrc":"284:12:87","nodeType":"YulExpressionStatement","src":"284:12:87"}]},"condition":{"arguments":[{"arguments":[{"arguments":[{"name":"offset","nativeSrc":"261:6:87","nodeType":"YulIdentifier","src":"261:6:87"},{"kind":"number","nativeSrc":"269:4:87","nodeType":"YulLiteral","src":"269:4:87","type":"","value":"0x1f"}],"functionName":{"name":"add","nativeSrc":"257:3:87","nodeType":"YulIdentifier","src":"257:3:87"},"nativeSrc":"257:17:87","nodeType":"YulFunctionCall","src":"257:17:87"},{"name":"end","nativeSrc":"276:3:87","nodeType":"YulIdentifier","src":"276:3:87"}],"functionName":{"name":"slt","nativeSrc":"253:3:87","nodeType":"YulIdentifier","src":"253:3:87"},"nativeSrc":"253:27:87","nodeType":"YulFunctionCall","src":"253:27:87"}],"functionName":{"name":"iszero","nativeSrc":"246:6:87","nodeType":"YulIdentifier","src":"246:6:87"},"nativeSrc":"246:35:87","nodeType":"YulFunctionCall","src":"246:35:87"},"nativeSrc":"243:55:87","nodeType":"YulIf","src":"243:55:87"},{"nativeSrc":"307:30:87","nodeType":"YulAssignment","src":"307:30:87","value":{"arguments":[{"name":"offset","nativeSrc":"330:6:87","nodeType":"YulIdentifier","src":"330:6:87"}],"functionName":{"name":"calldataload","nativeSrc":"317:12:87","nodeType":"YulIdentifier","src":"317:12:87"},"nativeSrc":"317:20:87","nodeType":"YulFunctionCall","src":"317:20:87"},"variableNames":[{"name":"length","nativeSrc":"307:6:87","nodeType":"YulIdentifier","src":"307:6:87"}]},{"body":{"nativeSrc":"380:16:87","nodeType":"YulBlock","src":"380:16:87","statements":[{"expression":{"arguments":[{"kind":"number","nativeSrc":"389:1:87","nodeType":"YulLiteral","src":"389:1:87","type":"","value":"0"},{"kind":"number","nativeSrc":"392:1:87","nodeType":"YulLiteral","src":"392:1:87","type":"","value":"0"}],"functionName":{"name":"revert","nativeSrc":"382:6:87","nodeType":"YulIdentifier","src":"382:6:87"},"nativeSrc":"382:12:87","nodeType":"YulFunctionCall","src":"382:12:87"},"nativeSrc":"382:12:87","nodeType":"YulExpressionStatement","src":"382:12:87"}]},"condition":{"arguments":[{"name":"length","nativeSrc":"352:6:87","nodeType":"YulIdentifier","src":"352:6:87"},{"kind":"number","nativeSrc":"360:18:87","nodeType":"YulLiteral","src":"360:18:87","type":"","value":"0xffffffffffffffff"}],"functionName":{"name":"gt","nativeSrc":"349:2:87","nodeType":"YulIdentifier","src":"349:2:87"},"nativeSrc":"349:30:87","nodeType":"YulFunctionCall","src":"349:30:87"},"nativeSrc":"346:50:87","nodeType":"YulIf","src":"346:50:87"},{"nativeSrc":"405:29:87","nodeType":"YulAssignment","src":"405:29:87","value":{"arguments":[{"name":"offset","nativeSrc":"421:6:87","nodeType":"YulIdentifier","src":"421:6:87"},{"kind":"number","nativeSrc":"429:4:87","nodeType":"YulLiteral","src":"429:4:87","type":"","value":"0x20"}],"functionName":{"name":"add","nativeSrc":"417:3:87","nodeType":"YulIdentifier","src":"417:3:87"},"nativeSrc":"417:17:87","nodeType":"YulFunctionCall","src":"417:17:87"},"variableNames":[{"name":"arrayPos","nativeSrc":"405:8:87","nodeType":"YulIdentifier","src":"405:8:87"}]},{"body":{"nativeSrc":"494:16:87","nodeType":"YulBlock","src":"494:16:87","statements":[{"expression":{"arguments":[{"kind":"number","nativeSrc":"503:1:87","nodeType":"YulLiteral","src":"503:1:87","type":"","value":"0"},{"kind":"number","nativeSrc":"506:1:87","nodeType":"YulLiteral","src":"506:1:87","type":"","value":"0"}],"functionName":{"name":"revert","nativeSrc":"496:6:87","nodeType":"YulIdentifier","src":"496:6:87"},"nativeSrc":"496:12:87","nodeType":"YulFunctionCall","src":"496:12:87"},"nativeSrc":"496:12:87","nodeType":"YulExpressionStatement","src":"496:12:87"}]},"condition":{"arguments":[{"arguments":[{"arguments":[{"name":"offset","nativeSrc":"457:6:87","nodeType":"YulIdentifier","src":"457:6:87"},{"arguments":[{"kind":"number","nativeSrc":"469:1:87","nodeType":"YulLiteral","src":"469:1:87","type":"","value":"5"},{"name":"length","nativeSrc":"472:6:87","nodeType":"YulIdentifier","src":"472:6:87"}],"functionName":{"name":"shl","nativeSrc":"465:3:87","nodeType":"YulIdentifier","src":"465:3:87"},"nativeSrc":"465:14:87","nodeType":"YulFunctionCall","src":"465:14:87"}],"functionName":{"name":"add","nativeSrc":"453:3:87","nodeType":"YulIdentifier","src":"453:3:87"},"nativeSrc":"453:27:87","nodeType":"YulFunctionCall","src":"453:27:87"},{"kind":"number","nativeSrc":"482:4:87","nodeType":"YulLiteral","src":"482:4:87","type":"","value":"0x20"}],"functionName":{"name":"add","nativeSrc":"449:3:87","nodeType":"YulIdentifier","src":"449:3:87"},"nativeSrc":"449:38:87","nodeType":"YulFunctionCall","src":"449:38:87"},{"name":"end","nativeSrc":"489:3:87","nodeType":"YulIdentifier","src":"489:3:87"}],"functionName":{"name":"gt","nativeSrc":"446:2:87","nodeType":"YulIdentifier","src":"446:2:87"},"nativeSrc":"446:47:87","nodeType":"YulFunctionCall","src":"446:47:87"},"nativeSrc":"443:67:87","nodeType":"YulIf","src":"443:67:87"}]},"name":"abi_decode_array_bytes4_dyn_calldata","nativeSrc":"150:366:87","nodeType":"YulFunctionDefinition","parameters":[{"name":"offset","nativeSrc":"196:6:87","nodeType":"YulTypedName","src":"196:6:87","type":""},{"name":"end","nativeSrc":"204:3:87","nodeType":"YulTypedName","src":"204:3:87","type":""}],"returnVariables":[{"name":"arrayPos","nativeSrc":"212:8:87","nodeType":"YulTypedName","src":"212:8:87","type":""},{"name":"length","nativeSrc":"222:6:87","nodeType":"YulTypedName","src":"222:6:87","type":""}],"src":"150:366:87"},{"body":{"nativeSrc":"569:123:87","nodeType":"YulBlock","src":"569:123:87","statements":[{"nativeSrc":"579:29:87","nodeType":"YulAssignment","src":"579:29:87","value":{"arguments":[{"name":"offset","nativeSrc":"601:6:87","nodeType":"YulIdentifier","src":"601:6:87"}],"functionName":{"name":"calldataload","nativeSrc":"588:12:87","nodeType":"YulIdentifier","src":"588:12:87"},"nativeSrc":"588:20:87","nodeType":"YulFunctionCall","src":"588:20:87"},"variableNames":[{"name":"value","nativeSrc":"579:5:87","nodeType":"YulIdentifier","src":"579:5:87"}]},{"body":{"nativeSrc":"670:16:87","nodeType":"YulBlock","src":"670:16:87","statements":[{"expression":{"arguments":[{"kind":"number","nativeSrc":"679:1:87","nodeType":"YulLiteral","src":"679:1:87","type":"","value":"0"},{"kind":"number","nativeSrc":"682:1:87","nodeType":"YulLiteral","src":"682:1:87","type":"","value":"0"}],"functionName":{"name":"revert","nativeSrc":"672:6:87","nodeType":"YulIdentifier","src":"672:6:87"},"nativeSrc":"672:12:87","nodeType":"YulFunctionCall","src":"672:12:87"},"nativeSrc":"672:12:87","nodeType":"YulExpressionStatement","src":"672:12:87"}]},"condition":{"arguments":[{"arguments":[{"name":"value","nativeSrc":"630:5:87","nodeType":"YulIdentifier","src":"630:5:87"},{"arguments":[{"name":"value","nativeSrc":"641:5:87","nodeType":"YulIdentifier","src":"641:5:87"},{"kind":"number","nativeSrc":"648:18:87","nodeType":"YulLiteral","src":"648:18:87","type":"","value":"0xffffffffffffffff"}],"functionName":{"name":"and","nativeSrc":"637:3:87","nodeType":"YulIdentifier","src":"637:3:87"},"nativeSrc":"637:30:87","nodeType":"YulFunctionCall","src":"637:30:87"}],"functionName":{"name":"eq","nativeSrc":"627:2:87","nodeType":"YulIdentifier","src":"627:2:87"},"nativeSrc":"627:41:87","nodeType":"YulFunctionCall","src":"627:41:87"}],"functionName":{"name":"iszero","nativeSrc":"620:6:87","nodeType":"YulIdentifier","src":"620:6:87"},"nativeSrc":"620:49:87","nodeType":"YulFunctionCall","src":"620:49:87"},"nativeSrc":"617:69:87","nodeType":"YulIf","src":"617:69:87"}]},"name":"abi_decode_uint64","nativeSrc":"521:171:87","nodeType":"YulFunctionDefinition","parameters":[{"name":"offset","nativeSrc":"548:6:87","nodeType":"YulTypedName","src":"548:6:87","type":""}],"returnVariables":[{"name":"value","nativeSrc":"559:5:87","nodeType":"YulTypedName","src":"559:5:87","type":""}],"src":"521:171:87"},{"body":{"nativeSrc":"834:505:87","nodeType":"YulBlock","src":"834:505:87","statements":[{"body":{"nativeSrc":"880:16:87","nodeType":"YulBlock","src":"880:16:87","statements":[{"expression":{"arguments":[{"kind":"number","nativeSrc":"889:1:87","nodeType":"YulLiteral","src":"889:1:87","type":"","value":"0"},{"kind":"number","nativeSrc":"892:1:87","nodeType":"YulLiteral","src":"892:1:87","type":"","value":"0"}],"functionName":{"name":"revert","nativeSrc":"882:6:87","nodeType":"YulIdentifier","src":"882:6:87"},"nativeSrc":"882:12:87","nodeType":"YulFunctionCall","src":"882:12:87"},"nativeSrc":"882:12:87","nodeType":"YulExpressionStatement","src":"882:12:87"}]},"condition":{"arguments":[{"arguments":[{"name":"dataEnd","nativeSrc":"855:7:87","nodeType":"YulIdentifier","src":"855:7:87"},{"name":"headStart","nativeSrc":"864:9:87","nodeType":"YulIdentifier","src":"864:9:87"}],"functionName":{"name":"sub","nativeSrc":"851:3:87","nodeType":"YulIdentifier","src":"851:3:87"},"nativeSrc":"851:23:87","nodeType":"YulFunctionCall","src":"851:23:87"},{"kind":"number","nativeSrc":"876:2:87","nodeType":"YulLiteral","src":"876:2:87","type":"","value":"96"}],"functionName":{"name":"slt","nativeSrc":"847:3:87","nodeType":"YulIdentifier","src":"847:3:87"},"nativeSrc":"847:32:87","nodeType":"YulFunctionCall","src":"847:32:87"},"nativeSrc":"844:52:87","nodeType":"YulIf","src":"844:52:87"},{"nativeSrc":"905:36:87","nodeType":"YulVariableDeclaration","src":"905:36:87","value":{"arguments":[{"name":"headStart","nativeSrc":"931:9:87","nodeType":"YulIdentifier","src":"931:9:87"}],"functionName":{"name":"calldataload","nativeSrc":"918:12:87","nodeType":"YulIdentifier","src":"918:12:87"},"nativeSrc":"918:23:87","nodeType":"YulFunctionCall","src":"918:23:87"},"variables":[{"name":"value","nativeSrc":"909:5:87","nodeType":"YulTypedName","src":"909:5:87","type":""}]},{"expression":{"arguments":[{"name":"value","nativeSrc":"975:5:87","nodeType":"YulIdentifier","src":"975:5:87"}],"functionName":{"name":"validator_revert_address","nativeSrc":"950:24:87","nodeType":"YulIdentifier","src":"950:24:87"},"nativeSrc":"950:31:87","nodeType":"YulFunctionCall","src":"950:31:87"},"nativeSrc":"950:31:87","nodeType":"YulExpressionStatement","src":"950:31:87"},{"nativeSrc":"990:15:87","nodeType":"YulAssignment","src":"990:15:87","value":{"name":"value","nativeSrc":"1000:5:87","nodeType":"YulIdentifier","src":"1000:5:87"},"variableNames":[{"name":"value0","nativeSrc":"990:6:87","nodeType":"YulIdentifier","src":"990:6:87"}]},{"nativeSrc":"1014:46:87","nodeType":"YulVariableDeclaration","src":"1014:46:87","value":{"arguments":[{"arguments":[{"name":"headStart","nativeSrc":"1045:9:87","nodeType":"YulIdentifier","src":"1045:9:87"},{"kind":"number","nativeSrc":"1056:2:87","nodeType":"YulLiteral","src":"1056:2:87","type":"","value":"32"}],"functionName":{"name":"add","nativeSrc":"1041:3:87","nodeType":"YulIdentifier","src":"1041:3:87"},"nativeSrc":"1041:18:87","nodeType":"YulFunctionCall","src":"1041:18:87"}],"functionName":{"name":"calldataload","nativeSrc":"1028:12:87","nodeType":"YulIdentifier","src":"1028:12:87"},"nativeSrc":"1028:32:87","nodeType":"YulFunctionCall","src":"1028:32:87"},"variables":[{"name":"offset","nativeSrc":"1018:6:87","nodeType":"YulTypedName","src":"1018:6:87","type":""}]},{"body":{"nativeSrc":"1103:16:87","nodeType":"YulBlock","src":"1103:16:87","statements":[{"expression":{"arguments":[{"kind":"number","nativeSrc":"1112:1:87","nodeType":"YulLiteral","src":"1112:1:87","type":"","value":"0"},{"kind":"number","nativeSrc":"1115:1:87","nodeType":"YulLiteral","src":"1115:1:87","type":"","value":"0"}],"functionName":{"name":"revert","nativeSrc":"1105:6:87","nodeType":"YulIdentifier","src":"1105:6:87"},"nativeSrc":"1105:12:87","nodeType":"YulFunctionCall","src":"1105:12:87"},"nativeSrc":"1105:12:87","nodeType":"YulExpressionStatement","src":"1105:12:87"}]},"condition":{"arguments":[{"name":"offset","nativeSrc":"1075:6:87","nodeType":"YulIdentifier","src":"1075:6:87"},{"kind":"number","nativeSrc":"1083:18:87","nodeType":"YulLiteral","src":"1083:18:87","type":"","value":"0xffffffffffffffff"}],"functionName":{"name":"gt","nativeSrc":"1072:2:87","nodeType":"YulIdentifier","src":"1072:2:87"},"nativeSrc":"1072:30:87","nodeType":"YulFunctionCall","src":"1072:30:87"},"nativeSrc":"1069:50:87","nodeType":"YulIf","src":"1069:50:87"},{"nativeSrc":"1128:95:87","nodeType":"YulVariableDeclaration","src":"1128:95:87","value":{"arguments":[{"arguments":[{"name":"headStart","nativeSrc":"1195:9:87","nodeType":"YulIdentifier","src":"1195:9:87"},{"name":"offset","nativeSrc":"1206:6:87","nodeType":"YulIdentifier","src":"1206:6:87"}],"functionName":{"name":"add","nativeSrc":"1191:3:87","nodeType":"YulIdentifier","src":"1191:3:87"},"nativeSrc":"1191:22:87","nodeType":"YulFunctionCall","src":"1191:22:87"},{"name":"dataEnd","nativeSrc":"1215:7:87","nodeType":"YulIdentifier","src":"1215:7:87"}],"functionName":{"name":"abi_decode_array_bytes4_dyn_calldata","nativeSrc":"1154:36:87","nodeType":"YulIdentifier","src":"1154:36:87"},"nativeSrc":"1154:69:87","nodeType":"YulFunctionCall","src":"1154:69:87"},"variables":[{"name":"value1_1","nativeSrc":"1132:8:87","nodeType":"YulTypedName","src":"1132:8:87","type":""},{"name":"value2_1","nativeSrc":"1142:8:87","nodeType":"YulTypedName","src":"1142:8:87","type":""}]},{"nativeSrc":"1232:18:87","nodeType":"YulAssignment","src":"1232:18:87","value":{"name":"value1_1","nativeSrc":"1242:8:87","nodeType":"YulIdentifier","src":"1242:8:87"},"variableNames":[{"name":"value1","nativeSrc":"1232:6:87","nodeType":"YulIdentifier","src":"1232:6:87"}]},{"nativeSrc":"1259:18:87","nodeType":"YulAssignment","src":"1259:18:87","value":{"name":"value2_1","nativeSrc":"1269:8:87","nodeType":"YulIdentifier","src":"1269:8:87"},"variableNames":[{"name":"value2","nativeSrc":"1259:6:87","nodeType":"YulIdentifier","src":"1259:6:87"}]},{"nativeSrc":"1286:47:87","nodeType":"YulAssignment","src":"1286:47:87","value":{"arguments":[{"arguments":[{"name":"headStart","nativeSrc":"1318:9:87","nodeType":"YulIdentifier","src":"1318:9:87"},{"kind":"number","nativeSrc":"1329:2:87","nodeType":"YulLiteral","src":"1329:2:87","type":"","value":"64"}],"functionName":{"name":"add","nativeSrc":"1314:3:87","nodeType":"YulIdentifier","src":"1314:3:87"},"nativeSrc":"1314:18:87","nodeType":"YulFunctionCall","src":"1314:18:87"}],"functionName":{"name":"abi_decode_uint64","nativeSrc":"1296:17:87","nodeType":"YulIdentifier","src":"1296:17:87"},"nativeSrc":"1296:37:87","nodeType":"YulFunctionCall","src":"1296:37:87"},"variableNames":[{"name":"value3","nativeSrc":"1286:6:87","nodeType":"YulIdentifier","src":"1286:6:87"}]}]},"name":"abi_decode_tuple_t_addresst_array$_t_bytes4_$dyn_calldata_ptrt_uint64","nativeSrc":"697:642:87","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nativeSrc":"776:9:87","nodeType":"YulTypedName","src":"776:9:87","type":""},{"name":"dataEnd","nativeSrc":"787:7:87","nodeType":"YulTypedName","src":"787:7:87","type":""}],"returnVariables":[{"name":"value0","nativeSrc":"799:6:87","nodeType":"YulTypedName","src":"799:6:87","type":""},{"name":"value1","nativeSrc":"807:6:87","nodeType":"YulTypedName","src":"807:6:87","type":""},{"name":"value2","nativeSrc":"815:6:87","nodeType":"YulTypedName","src":"815:6:87","type":""},{"name":"value3","nativeSrc":"823:6:87","nodeType":"YulTypedName","src":"823:6:87","type":""}],"src":"697:642:87"},{"body":{"nativeSrc":"1413:115:87","nodeType":"YulBlock","src":"1413:115:87","statements":[{"body":{"nativeSrc":"1459:16:87","nodeType":"YulBlock","src":"1459:16:87","statements":[{"expression":{"arguments":[{"kind":"number","nativeSrc":"1468:1:87","nodeType":"YulLiteral","src":"1468:1:87","type":"","value":"0"},{"kind":"number","nativeSrc":"1471:1:87","nodeType":"YulLiteral","src":"1471:1:87","type":"","value":"0"}],"functionName":{"name":"revert","nativeSrc":"1461:6:87","nodeType":"YulIdentifier","src":"1461:6:87"},"nativeSrc":"1461:12:87","nodeType":"YulFunctionCall","src":"1461:12:87"},"nativeSrc":"1461:12:87","nodeType":"YulExpressionStatement","src":"1461:12:87"}]},"condition":{"arguments":[{"arguments":[{"name":"dataEnd","nativeSrc":"1434:7:87","nodeType":"YulIdentifier","src":"1434:7:87"},{"name":"headStart","nativeSrc":"1443:9:87","nodeType":"YulIdentifier","src":"1443:9:87"}],"functionName":{"name":"sub","nativeSrc":"1430:3:87","nodeType":"YulIdentifier","src":"1430:3:87"},"nativeSrc":"1430:23:87","nodeType":"YulFunctionCall","src":"1430:23:87"},{"kind":"number","nativeSrc":"1455:2:87","nodeType":"YulLiteral","src":"1455:2:87","type":"","value":"32"}],"functionName":{"name":"slt","nativeSrc":"1426:3:87","nodeType":"YulIdentifier","src":"1426:3:87"},"nativeSrc":"1426:32:87","nodeType":"YulFunctionCall","src":"1426:32:87"},"nativeSrc":"1423:52:87","nodeType":"YulIf","src":"1423:52:87"},{"nativeSrc":"1484:38:87","nodeType":"YulAssignment","src":"1484:38:87","value":{"arguments":[{"name":"headStart","nativeSrc":"1512:9:87","nodeType":"YulIdentifier","src":"1512:9:87"}],"functionName":{"name":"abi_decode_uint64","nativeSrc":"1494:17:87","nodeType":"YulIdentifier","src":"1494:17:87"},"nativeSrc":"1494:28:87","nodeType":"YulFunctionCall","src":"1494:28:87"},"variableNames":[{"name":"value0","nativeSrc":"1484:6:87","nodeType":"YulIdentifier","src":"1484:6:87"}]}]},"name":"abi_decode_tuple_t_uint64","nativeSrc":"1344:184:87","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nativeSrc":"1379:9:87","nodeType":"YulTypedName","src":"1379:9:87","type":""},{"name":"dataEnd","nativeSrc":"1390:7:87","nodeType":"YulTypedName","src":"1390:7:87","type":""}],"returnVariables":[{"name":"value0","nativeSrc":"1402:6:87","nodeType":"YulTypedName","src":"1402:6:87","type":""}],"src":"1344:184:87"},{"body":{"nativeSrc":"1632:101:87","nodeType":"YulBlock","src":"1632:101:87","statements":[{"nativeSrc":"1642:26:87","nodeType":"YulAssignment","src":"1642:26:87","value":{"arguments":[{"name":"headStart","nativeSrc":"1654:9:87","nodeType":"YulIdentifier","src":"1654:9:87"},{"kind":"number","nativeSrc":"1665:2:87","nodeType":"YulLiteral","src":"1665:2:87","type":"","value":"32"}],"functionName":{"name":"add","nativeSrc":"1650:3:87","nodeType":"YulIdentifier","src":"1650:3:87"},"nativeSrc":"1650:18:87","nodeType":"YulFunctionCall","src":"1650:18:87"},"variableNames":[{"name":"tail","nativeSrc":"1642:4:87","nodeType":"YulIdentifier","src":"1642:4:87"}]},{"expression":{"arguments":[{"name":"headStart","nativeSrc":"1684:9:87","nodeType":"YulIdentifier","src":"1684:9:87"},{"arguments":[{"name":"value0","nativeSrc":"1699:6:87","nodeType":"YulIdentifier","src":"1699:6:87"},{"kind":"number","nativeSrc":"1707:18:87","nodeType":"YulLiteral","src":"1707:18:87","type":"","value":"0xffffffffffffffff"}],"functionName":{"name":"and","nativeSrc":"1695:3:87","nodeType":"YulIdentifier","src":"1695:3:87"},"nativeSrc":"1695:31:87","nodeType":"YulFunctionCall","src":"1695:31:87"}],"functionName":{"name":"mstore","nativeSrc":"1677:6:87","nodeType":"YulIdentifier","src":"1677:6:87"},"nativeSrc":"1677:50:87","nodeType":"YulFunctionCall","src":"1677:50:87"},"nativeSrc":"1677:50:87","nodeType":"YulExpressionStatement","src":"1677:50:87"}]},"name":"abi_encode_tuple_t_uint64__to_t_uint64__fromStack_reversed","nativeSrc":"1533:200:87","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nativeSrc":"1601:9:87","nodeType":"YulTypedName","src":"1601:9:87","type":""},{"name":"value0","nativeSrc":"1612:6:87","nodeType":"YulTypedName","src":"1612:6:87","type":""}],"returnVariables":[{"name":"tail","nativeSrc":"1623:4:87","nodeType":"YulTypedName","src":"1623:4:87","type":""}],"src":"1533:200:87"},{"body":{"nativeSrc":"1837:93:87","nodeType":"YulBlock","src":"1837:93:87","statements":[{"nativeSrc":"1847:26:87","nodeType":"YulAssignment","src":"1847:26:87","value":{"arguments":[{"name":"headStart","nativeSrc":"1859:9:87","nodeType":"YulIdentifier","src":"1859:9:87"},{"kind":"number","nativeSrc":"1870:2:87","nodeType":"YulLiteral","src":"1870:2:87","type":"","value":"32"}],"functionName":{"name":"add","nativeSrc":"1855:3:87","nodeType":"YulIdentifier","src":"1855:3:87"},"nativeSrc":"1855:18:87","nodeType":"YulFunctionCall","src":"1855:18:87"},"variableNames":[{"name":"tail","nativeSrc":"1847:4:87","nodeType":"YulIdentifier","src":"1847:4:87"}]},{"expression":{"arguments":[{"name":"headStart","nativeSrc":"1889:9:87","nodeType":"YulIdentifier","src":"1889:9:87"},{"arguments":[{"name":"value0","nativeSrc":"1904:6:87","nodeType":"YulIdentifier","src":"1904:6:87"},{"kind":"number","nativeSrc":"1912:10:87","nodeType":"YulLiteral","src":"1912:10:87","type":"","value":"0xffffffff"}],"functionName":{"name":"and","nativeSrc":"1900:3:87","nodeType":"YulIdentifier","src":"1900:3:87"},"nativeSrc":"1900:23:87","nodeType":"YulFunctionCall","src":"1900:23:87"}],"functionName":{"name":"mstore","nativeSrc":"1882:6:87","nodeType":"YulIdentifier","src":"1882:6:87"},"nativeSrc":"1882:42:87","nodeType":"YulFunctionCall","src":"1882:42:87"},"nativeSrc":"1882:42:87","nodeType":"YulExpressionStatement","src":"1882:42:87"}]},"name":"abi_encode_tuple_t_uint32__to_t_uint32__fromStack_reversed","nativeSrc":"1738:192:87","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nativeSrc":"1806:9:87","nodeType":"YulTypedName","src":"1806:9:87","type":""},{"name":"value0","nativeSrc":"1817:6:87","nodeType":"YulTypedName","src":"1817:6:87","type":""}],"returnVariables":[{"name":"tail","nativeSrc":"1828:4:87","nodeType":"YulTypedName","src":"1828:4:87","type":""}],"src":"1738:192:87"},{"body":{"nativeSrc":"2019:332:87","nodeType":"YulBlock","src":"2019:332:87","statements":[{"body":{"nativeSrc":"2065:16:87","nodeType":"YulBlock","src":"2065:16:87","statements":[{"expression":{"arguments":[{"kind":"number","nativeSrc":"2074:1:87","nodeType":"YulLiteral","src":"2074:1:87","type":"","value":"0"},{"kind":"number","nativeSrc":"2077:1:87","nodeType":"YulLiteral","src":"2077:1:87","type":"","value":"0"}],"functionName":{"name":"revert","nativeSrc":"2067:6:87","nodeType":"YulIdentifier","src":"2067:6:87"},"nativeSrc":"2067:12:87","nodeType":"YulFunctionCall","src":"2067:12:87"},"nativeSrc":"2067:12:87","nodeType":"YulExpressionStatement","src":"2067:12:87"}]},"condition":{"arguments":[{"arguments":[{"name":"dataEnd","nativeSrc":"2040:7:87","nodeType":"YulIdentifier","src":"2040:7:87"},{"name":"headStart","nativeSrc":"2049:9:87","nodeType":"YulIdentifier","src":"2049:9:87"}],"functionName":{"name":"sub","nativeSrc":"2036:3:87","nodeType":"YulIdentifier","src":"2036:3:87"},"nativeSrc":"2036:23:87","nodeType":"YulFunctionCall","src":"2036:23:87"},{"kind":"number","nativeSrc":"2061:2:87","nodeType":"YulLiteral","src":"2061:2:87","type":"","value":"64"}],"functionName":{"name":"slt","nativeSrc":"2032:3:87","nodeType":"YulIdentifier","src":"2032:3:87"},"nativeSrc":"2032:32:87","nodeType":"YulFunctionCall","src":"2032:32:87"},"nativeSrc":"2029:52:87","nodeType":"YulIf","src":"2029:52:87"},{"nativeSrc":"2090:36:87","nodeType":"YulVariableDeclaration","src":"2090:36:87","value":{"arguments":[{"name":"headStart","nativeSrc":"2116:9:87","nodeType":"YulIdentifier","src":"2116:9:87"}],"functionName":{"name":"calldataload","nativeSrc":"2103:12:87","nodeType":"YulIdentifier","src":"2103:12:87"},"nativeSrc":"2103:23:87","nodeType":"YulFunctionCall","src":"2103:23:87"},"variables":[{"name":"value","nativeSrc":"2094:5:87","nodeType":"YulTypedName","src":"2094:5:87","type":""}]},{"expression":{"arguments":[{"name":"value","nativeSrc":"2160:5:87","nodeType":"YulIdentifier","src":"2160:5:87"}],"functionName":{"name":"validator_revert_address","nativeSrc":"2135:24:87","nodeType":"YulIdentifier","src":"2135:24:87"},"nativeSrc":"2135:31:87","nodeType":"YulFunctionCall","src":"2135:31:87"},"nativeSrc":"2135:31:87","nodeType":"YulExpressionStatement","src":"2135:31:87"},{"nativeSrc":"2175:15:87","nodeType":"YulAssignment","src":"2175:15:87","value":{"name":"value","nativeSrc":"2185:5:87","nodeType":"YulIdentifier","src":"2185:5:87"},"variableNames":[{"name":"value0","nativeSrc":"2175:6:87","nodeType":"YulIdentifier","src":"2175:6:87"}]},{"nativeSrc":"2199:47:87","nodeType":"YulVariableDeclaration","src":"2199:47:87","value":{"arguments":[{"arguments":[{"name":"headStart","nativeSrc":"2231:9:87","nodeType":"YulIdentifier","src":"2231:9:87"},{"kind":"number","nativeSrc":"2242:2:87","nodeType":"YulLiteral","src":"2242:2:87","type":"","value":"32"}],"functionName":{"name":"add","nativeSrc":"2227:3:87","nodeType":"YulIdentifier","src":"2227:3:87"},"nativeSrc":"2227:18:87","nodeType":"YulFunctionCall","src":"2227:18:87"}],"functionName":{"name":"calldataload","nativeSrc":"2214:12:87","nodeType":"YulIdentifier","src":"2214:12:87"},"nativeSrc":"2214:32:87","nodeType":"YulFunctionCall","src":"2214:32:87"},"variables":[{"name":"value_1","nativeSrc":"2203:7:87","nodeType":"YulTypedName","src":"2203:7:87","type":""}]},{"body":{"nativeSrc":"2303:16:87","nodeType":"YulBlock","src":"2303:16:87","statements":[{"expression":{"arguments":[{"kind":"number","nativeSrc":"2312:1:87","nodeType":"YulLiteral","src":"2312:1:87","type":"","value":"0"},{"kind":"number","nativeSrc":"2315:1:87","nodeType":"YulLiteral","src":"2315:1:87","type":"","value":"0"}],"functionName":{"name":"revert","nativeSrc":"2305:6:87","nodeType":"YulIdentifier","src":"2305:6:87"},"nativeSrc":"2305:12:87","nodeType":"YulFunctionCall","src":"2305:12:87"},"nativeSrc":"2305:12:87","nodeType":"YulExpressionStatement","src":"2305:12:87"}]},"condition":{"arguments":[{"arguments":[{"name":"value_1","nativeSrc":"2268:7:87","nodeType":"YulIdentifier","src":"2268:7:87"},{"arguments":[{"arguments":[{"name":"value_1","nativeSrc":"2291:7:87","nodeType":"YulIdentifier","src":"2291:7:87"}],"functionName":{"name":"iszero","nativeSrc":"2284:6:87","nodeType":"YulIdentifier","src":"2284:6:87"},"nativeSrc":"2284:15:87","nodeType":"YulFunctionCall","src":"2284:15:87"}],"functionName":{"name":"iszero","nativeSrc":"2277:6:87","nodeType":"YulIdentifier","src":"2277:6:87"},"nativeSrc":"2277:23:87","nodeType":"YulFunctionCall","src":"2277:23:87"}],"functionName":{"name":"eq","nativeSrc":"2265:2:87","nodeType":"YulIdentifier","src":"2265:2:87"},"nativeSrc":"2265:36:87","nodeType":"YulFunctionCall","src":"2265:36:87"}],"functionName":{"name":"iszero","nativeSrc":"2258:6:87","nodeType":"YulIdentifier","src":"2258:6:87"},"nativeSrc":"2258:44:87","nodeType":"YulFunctionCall","src":"2258:44:87"},"nativeSrc":"2255:64:87","nodeType":"YulIf","src":"2255:64:87"},{"nativeSrc":"2328:17:87","nodeType":"YulAssignment","src":"2328:17:87","value":{"name":"value_1","nativeSrc":"2338:7:87","nodeType":"YulIdentifier","src":"2338:7:87"},"variableNames":[{"name":"value1","nativeSrc":"2328:6:87","nodeType":"YulIdentifier","src":"2328:6:87"}]}]},"name":"abi_decode_tuple_t_addresst_bool","nativeSrc":"1935:416:87","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nativeSrc":"1977:9:87","nodeType":"YulTypedName","src":"1977:9:87","type":""},{"name":"dataEnd","nativeSrc":"1988:7:87","nodeType":"YulTypedName","src":"1988:7:87","type":""}],"returnVariables":[{"name":"value0","nativeSrc":"2000:6:87","nodeType":"YulTypedName","src":"2000:6:87","type":""},{"name":"value1","nativeSrc":"2008:6:87","nodeType":"YulTypedName","src":"2008:6:87","type":""}],"src":"1935:416:87"},{"body":{"nativeSrc":"2443:301:87","nodeType":"YulBlock","src":"2443:301:87","statements":[{"body":{"nativeSrc":"2489:16:87","nodeType":"YulBlock","src":"2489:16:87","statements":[{"expression":{"arguments":[{"kind":"number","nativeSrc":"2498:1:87","nodeType":"YulLiteral","src":"2498:1:87","type":"","value":"0"},{"kind":"number","nativeSrc":"2501:1:87","nodeType":"YulLiteral","src":"2501:1:87","type":"","value":"0"}],"functionName":{"name":"revert","nativeSrc":"2491:6:87","nodeType":"YulIdentifier","src":"2491:6:87"},"nativeSrc":"2491:12:87","nodeType":"YulFunctionCall","src":"2491:12:87"},"nativeSrc":"2491:12:87","nodeType":"YulExpressionStatement","src":"2491:12:87"}]},"condition":{"arguments":[{"arguments":[{"name":"dataEnd","nativeSrc":"2464:7:87","nodeType":"YulIdentifier","src":"2464:7:87"},{"name":"headStart","nativeSrc":"2473:9:87","nodeType":"YulIdentifier","src":"2473:9:87"}],"functionName":{"name":"sub","nativeSrc":"2460:3:87","nodeType":"YulIdentifier","src":"2460:3:87"},"nativeSrc":"2460:23:87","nodeType":"YulFunctionCall","src":"2460:23:87"},{"kind":"number","nativeSrc":"2485:2:87","nodeType":"YulLiteral","src":"2485:2:87","type":"","value":"64"}],"functionName":{"name":"slt","nativeSrc":"2456:3:87","nodeType":"YulIdentifier","src":"2456:3:87"},"nativeSrc":"2456:32:87","nodeType":"YulFunctionCall","src":"2456:32:87"},"nativeSrc":"2453:52:87","nodeType":"YulIf","src":"2453:52:87"},{"nativeSrc":"2514:36:87","nodeType":"YulVariableDeclaration","src":"2514:36:87","value":{"arguments":[{"name":"headStart","nativeSrc":"2540:9:87","nodeType":"YulIdentifier","src":"2540:9:87"}],"functionName":{"name":"calldataload","nativeSrc":"2527:12:87","nodeType":"YulIdentifier","src":"2527:12:87"},"nativeSrc":"2527:23:87","nodeType":"YulFunctionCall","src":"2527:23:87"},"variables":[{"name":"value","nativeSrc":"2518:5:87","nodeType":"YulTypedName","src":"2518:5:87","type":""}]},{"expression":{"arguments":[{"name":"value","nativeSrc":"2584:5:87","nodeType":"YulIdentifier","src":"2584:5:87"}],"functionName":{"name":"validator_revert_address","nativeSrc":"2559:24:87","nodeType":"YulIdentifier","src":"2559:24:87"},"nativeSrc":"2559:31:87","nodeType":"YulFunctionCall","src":"2559:31:87"},"nativeSrc":"2559:31:87","nodeType":"YulExpressionStatement","src":"2559:31:87"},{"nativeSrc":"2599:15:87","nodeType":"YulAssignment","src":"2599:15:87","value":{"name":"value","nativeSrc":"2609:5:87","nodeType":"YulIdentifier","src":"2609:5:87"},"variableNames":[{"name":"value0","nativeSrc":"2599:6:87","nodeType":"YulIdentifier","src":"2599:6:87"}]},{"nativeSrc":"2623:47:87","nodeType":"YulVariableDeclaration","src":"2623:47:87","value":{"arguments":[{"arguments":[{"name":"headStart","nativeSrc":"2655:9:87","nodeType":"YulIdentifier","src":"2655:9:87"},{"kind":"number","nativeSrc":"2666:2:87","nodeType":"YulLiteral","src":"2666:2:87","type":"","value":"32"}],"functionName":{"name":"add","nativeSrc":"2651:3:87","nodeType":"YulIdentifier","src":"2651:3:87"},"nativeSrc":"2651:18:87","nodeType":"YulFunctionCall","src":"2651:18:87"}],"functionName":{"name":"calldataload","nativeSrc":"2638:12:87","nodeType":"YulIdentifier","src":"2638:12:87"},"nativeSrc":"2638:32:87","nodeType":"YulFunctionCall","src":"2638:32:87"},"variables":[{"name":"value_1","nativeSrc":"2627:7:87","nodeType":"YulTypedName","src":"2627:7:87","type":""}]},{"expression":{"arguments":[{"name":"value_1","nativeSrc":"2704:7:87","nodeType":"YulIdentifier","src":"2704:7:87"}],"functionName":{"name":"validator_revert_address","nativeSrc":"2679:24:87","nodeType":"YulIdentifier","src":"2679:24:87"},"nativeSrc":"2679:33:87","nodeType":"YulFunctionCall","src":"2679:33:87"},"nativeSrc":"2679:33:87","nodeType":"YulExpressionStatement","src":"2679:33:87"},{"nativeSrc":"2721:17:87","nodeType":"YulAssignment","src":"2721:17:87","value":{"name":"value_1","nativeSrc":"2731:7:87","nodeType":"YulIdentifier","src":"2731:7:87"},"variableNames":[{"name":"value1","nativeSrc":"2721:6:87","nodeType":"YulIdentifier","src":"2721:6:87"}]}]},"name":"abi_decode_tuple_t_addresst_address","nativeSrc":"2356:388:87","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nativeSrc":"2401:9:87","nodeType":"YulTypedName","src":"2401:9:87","type":""},{"name":"dataEnd","nativeSrc":"2412:7:87","nodeType":"YulTypedName","src":"2412:7:87","type":""}],"returnVariables":[{"name":"value0","nativeSrc":"2424:6:87","nodeType":"YulTypedName","src":"2424:6:87","type":""},{"name":"value1","nativeSrc":"2432:6:87","nodeType":"YulTypedName","src":"2432:6:87","type":""}],"src":"2356:388:87"},{"body":{"nativeSrc":"2821:275:87","nodeType":"YulBlock","src":"2821:275:87","statements":[{"body":{"nativeSrc":"2870:16:87","nodeType":"YulBlock","src":"2870:16:87","statements":[{"expression":{"arguments":[{"kind":"number","nativeSrc":"2879:1:87","nodeType":"YulLiteral","src":"2879:1:87","type":"","value":"0"},{"kind":"number","nativeSrc":"2882:1:87","nodeType":"YulLiteral","src":"2882:1:87","type":"","value":"0"}],"functionName":{"name":"revert","nativeSrc":"2872:6:87","nodeType":"YulIdentifier","src":"2872:6:87"},"nativeSrc":"2872:12:87","nodeType":"YulFunctionCall","src":"2872:12:87"},"nativeSrc":"2872:12:87","nodeType":"YulExpressionStatement","src":"2872:12:87"}]},"condition":{"arguments":[{"arguments":[{"arguments":[{"name":"offset","nativeSrc":"2849:6:87","nodeType":"YulIdentifier","src":"2849:6:87"},{"kind":"number","nativeSrc":"2857:4:87","nodeType":"YulLiteral","src":"2857:4:87","type":"","value":"0x1f"}],"functionName":{"name":"add","nativeSrc":"2845:3:87","nodeType":"YulIdentifier","src":"2845:3:87"},"nativeSrc":"2845:17:87","nodeType":"YulFunctionCall","src":"2845:17:87"},{"name":"end","nativeSrc":"2864:3:87","nodeType":"YulIdentifier","src":"2864:3:87"}],"functionName":{"name":"slt","nativeSrc":"2841:3:87","nodeType":"YulIdentifier","src":"2841:3:87"},"nativeSrc":"2841:27:87","nodeType":"YulFunctionCall","src":"2841:27:87"}],"functionName":{"name":"iszero","nativeSrc":"2834:6:87","nodeType":"YulIdentifier","src":"2834:6:87"},"nativeSrc":"2834:35:87","nodeType":"YulFunctionCall","src":"2834:35:87"},"nativeSrc":"2831:55:87","nodeType":"YulIf","src":"2831:55:87"},{"nativeSrc":"2895:30:87","nodeType":"YulAssignment","src":"2895:30:87","value":{"arguments":[{"name":"offset","nativeSrc":"2918:6:87","nodeType":"YulIdentifier","src":"2918:6:87"}],"functionName":{"name":"calldataload","nativeSrc":"2905:12:87","nodeType":"YulIdentifier","src":"2905:12:87"},"nativeSrc":"2905:20:87","nodeType":"YulFunctionCall","src":"2905:20:87"},"variableNames":[{"name":"length","nativeSrc":"2895:6:87","nodeType":"YulIdentifier","src":"2895:6:87"}]},{"body":{"nativeSrc":"2968:16:87","nodeType":"YulBlock","src":"2968:16:87","statements":[{"expression":{"arguments":[{"kind":"number","nativeSrc":"2977:1:87","nodeType":"YulLiteral","src":"2977:1:87","type":"","value":"0"},{"kind":"number","nativeSrc":"2980:1:87","nodeType":"YulLiteral","src":"2980:1:87","type":"","value":"0"}],"functionName":{"name":"revert","nativeSrc":"2970:6:87","nodeType":"YulIdentifier","src":"2970:6:87"},"nativeSrc":"2970:12:87","nodeType":"YulFunctionCall","src":"2970:12:87"},"nativeSrc":"2970:12:87","nodeType":"YulExpressionStatement","src":"2970:12:87"}]},"condition":{"arguments":[{"name":"length","nativeSrc":"2940:6:87","nodeType":"YulIdentifier","src":"2940:6:87"},{"kind":"number","nativeSrc":"2948:18:87","nodeType":"YulLiteral","src":"2948:18:87","type":"","value":"0xffffffffffffffff"}],"functionName":{"name":"gt","nativeSrc":"2937:2:87","nodeType":"YulIdentifier","src":"2937:2:87"},"nativeSrc":"2937:30:87","nodeType":"YulFunctionCall","src":"2937:30:87"},"nativeSrc":"2934:50:87","nodeType":"YulIf","src":"2934:50:87"},{"nativeSrc":"2993:29:87","nodeType":"YulAssignment","src":"2993:29:87","value":{"arguments":[{"name":"offset","nativeSrc":"3009:6:87","nodeType":"YulIdentifier","src":"3009:6:87"},{"kind":"number","nativeSrc":"3017:4:87","nodeType":"YulLiteral","src":"3017:4:87","type":"","value":"0x20"}],"functionName":{"name":"add","nativeSrc":"3005:3:87","nodeType":"YulIdentifier","src":"3005:3:87"},"nativeSrc":"3005:17:87","nodeType":"YulFunctionCall","src":"3005:17:87"},"variableNames":[{"name":"arrayPos","nativeSrc":"2993:8:87","nodeType":"YulIdentifier","src":"2993:8:87"}]},{"body":{"nativeSrc":"3074:16:87","nodeType":"YulBlock","src":"3074:16:87","statements":[{"expression":{"arguments":[{"kind":"number","nativeSrc":"3083:1:87","nodeType":"YulLiteral","src":"3083:1:87","type":"","value":"0"},{"kind":"number","nativeSrc":"3086:1:87","nodeType":"YulLiteral","src":"3086:1:87","type":"","value":"0"}],"functionName":{"name":"revert","nativeSrc":"3076:6:87","nodeType":"YulIdentifier","src":"3076:6:87"},"nativeSrc":"3076:12:87","nodeType":"YulFunctionCall","src":"3076:12:87"},"nativeSrc":"3076:12:87","nodeType":"YulExpressionStatement","src":"3076:12:87"}]},"condition":{"arguments":[{"arguments":[{"arguments":[{"name":"offset","nativeSrc":"3045:6:87","nodeType":"YulIdentifier","src":"3045:6:87"},{"name":"length","nativeSrc":"3053:6:87","nodeType":"YulIdentifier","src":"3053:6:87"}],"functionName":{"name":"add","nativeSrc":"3041:3:87","nodeType":"YulIdentifier","src":"3041:3:87"},"nativeSrc":"3041:19:87","nodeType":"YulFunctionCall","src":"3041:19:87"},{"kind":"number","nativeSrc":"3062:4:87","nodeType":"YulLiteral","src":"3062:4:87","type":"","value":"0x20"}],"functionName":{"name":"add","nativeSrc":"3037:3:87","nodeType":"YulIdentifier","src":"3037:3:87"},"nativeSrc":"3037:30:87","nodeType":"YulFunctionCall","src":"3037:30:87"},{"name":"end","nativeSrc":"3069:3:87","nodeType":"YulIdentifier","src":"3069:3:87"}],"functionName":{"name":"gt","nativeSrc":"3034:2:87","nodeType":"YulIdentifier","src":"3034:2:87"},"nativeSrc":"3034:39:87","nodeType":"YulFunctionCall","src":"3034:39:87"},"nativeSrc":"3031:59:87","nodeType":"YulIf","src":"3031:59:87"}]},"name":"abi_decode_bytes_calldata","nativeSrc":"2749:347:87","nodeType":"YulFunctionDefinition","parameters":[{"name":"offset","nativeSrc":"2784:6:87","nodeType":"YulTypedName","src":"2784:6:87","type":""},{"name":"end","nativeSrc":"2792:3:87","nodeType":"YulTypedName","src":"2792:3:87","type":""}],"returnVariables":[{"name":"arrayPos","nativeSrc":"2800:8:87","nodeType":"YulTypedName","src":"2800:8:87","type":""},{"name":"length","nativeSrc":"2810:6:87","nodeType":"YulTypedName","src":"2810:6:87","type":""}],"src":"2749:347:87"},{"body":{"nativeSrc":"3207:438:87","nodeType":"YulBlock","src":"3207:438:87","statements":[{"body":{"nativeSrc":"3253:16:87","nodeType":"YulBlock","src":"3253:16:87","statements":[{"expression":{"arguments":[{"kind":"number","nativeSrc":"3262:1:87","nodeType":"YulLiteral","src":"3262:1:87","type":"","value":"0"},{"kind":"number","nativeSrc":"3265:1:87","nodeType":"YulLiteral","src":"3265:1:87","type":"","value":"0"}],"functionName":{"name":"revert","nativeSrc":"3255:6:87","nodeType":"YulIdentifier","src":"3255:6:87"},"nativeSrc":"3255:12:87","nodeType":"YulFunctionCall","src":"3255:12:87"},"nativeSrc":"3255:12:87","nodeType":"YulExpressionStatement","src":"3255:12:87"}]},"condition":{"arguments":[{"arguments":[{"name":"dataEnd","nativeSrc":"3228:7:87","nodeType":"YulIdentifier","src":"3228:7:87"},{"name":"headStart","nativeSrc":"3237:9:87","nodeType":"YulIdentifier","src":"3237:9:87"}],"functionName":{"name":"sub","nativeSrc":"3224:3:87","nodeType":"YulIdentifier","src":"3224:3:87"},"nativeSrc":"3224:23:87","nodeType":"YulFunctionCall","src":"3224:23:87"},{"kind":"number","nativeSrc":"3249:2:87","nodeType":"YulLiteral","src":"3249:2:87","type":"","value":"64"}],"functionName":{"name":"slt","nativeSrc":"3220:3:87","nodeType":"YulIdentifier","src":"3220:3:87"},"nativeSrc":"3220:32:87","nodeType":"YulFunctionCall","src":"3220:32:87"},"nativeSrc":"3217:52:87","nodeType":"YulIf","src":"3217:52:87"},{"nativeSrc":"3278:36:87","nodeType":"YulVariableDeclaration","src":"3278:36:87","value":{"arguments":[{"name":"headStart","nativeSrc":"3304:9:87","nodeType":"YulIdentifier","src":"3304:9:87"}],"functionName":{"name":"calldataload","nativeSrc":"3291:12:87","nodeType":"YulIdentifier","src":"3291:12:87"},"nativeSrc":"3291:23:87","nodeType":"YulFunctionCall","src":"3291:23:87"},"variables":[{"name":"value","nativeSrc":"3282:5:87","nodeType":"YulTypedName","src":"3282:5:87","type":""}]},{"expression":{"arguments":[{"name":"value","nativeSrc":"3348:5:87","nodeType":"YulIdentifier","src":"3348:5:87"}],"functionName":{"name":"validator_revert_address","nativeSrc":"3323:24:87","nodeType":"YulIdentifier","src":"3323:24:87"},"nativeSrc":"3323:31:87","nodeType":"YulFunctionCall","src":"3323:31:87"},"nativeSrc":"3323:31:87","nodeType":"YulExpressionStatement","src":"3323:31:87"},{"nativeSrc":"3363:15:87","nodeType":"YulAssignment","src":"3363:15:87","value":{"name":"value","nativeSrc":"3373:5:87","nodeType":"YulIdentifier","src":"3373:5:87"},"variableNames":[{"name":"value0","nativeSrc":"3363:6:87","nodeType":"YulIdentifier","src":"3363:6:87"}]},{"nativeSrc":"3387:46:87","nodeType":"YulVariableDeclaration","src":"3387:46:87","value":{"arguments":[{"arguments":[{"name":"headStart","nativeSrc":"3418:9:87","nodeType":"YulIdentifier","src":"3418:9:87"},{"kind":"number","nativeSrc":"3429:2:87","nodeType":"YulLiteral","src":"3429:2:87","type":"","value":"32"}],"functionName":{"name":"add","nativeSrc":"3414:3:87","nodeType":"YulIdentifier","src":"3414:3:87"},"nativeSrc":"3414:18:87","nodeType":"YulFunctionCall","src":"3414:18:87"}],"functionName":{"name":"calldataload","nativeSrc":"3401:12:87","nodeType":"YulIdentifier","src":"3401:12:87"},"nativeSrc":"3401:32:87","nodeType":"YulFunctionCall","src":"3401:32:87"},"variables":[{"name":"offset","nativeSrc":"3391:6:87","nodeType":"YulTypedName","src":"3391:6:87","type":""}]},{"body":{"nativeSrc":"3476:16:87","nodeType":"YulBlock","src":"3476:16:87","statements":[{"expression":{"arguments":[{"kind":"number","nativeSrc":"3485:1:87","nodeType":"YulLiteral","src":"3485:1:87","type":"","value":"0"},{"kind":"number","nativeSrc":"3488:1:87","nodeType":"YulLiteral","src":"3488:1:87","type":"","value":"0"}],"functionName":{"name":"revert","nativeSrc":"3478:6:87","nodeType":"YulIdentifier","src":"3478:6:87"},"nativeSrc":"3478:12:87","nodeType":"YulFunctionCall","src":"3478:12:87"},"nativeSrc":"3478:12:87","nodeType":"YulExpressionStatement","src":"3478:12:87"}]},"condition":{"arguments":[{"name":"offset","nativeSrc":"3448:6:87","nodeType":"YulIdentifier","src":"3448:6:87"},{"kind":"number","nativeSrc":"3456:18:87","nodeType":"YulLiteral","src":"3456:18:87","type":"","value":"0xffffffffffffffff"}],"functionName":{"name":"gt","nativeSrc":"3445:2:87","nodeType":"YulIdentifier","src":"3445:2:87"},"nativeSrc":"3445:30:87","nodeType":"YulFunctionCall","src":"3445:30:87"},"nativeSrc":"3442:50:87","nodeType":"YulIf","src":"3442:50:87"},{"nativeSrc":"3501:84:87","nodeType":"YulVariableDeclaration","src":"3501:84:87","value":{"arguments":[{"arguments":[{"name":"headStart","nativeSrc":"3557:9:87","nodeType":"YulIdentifier","src":"3557:9:87"},{"name":"offset","nativeSrc":"3568:6:87","nodeType":"YulIdentifier","src":"3568:6:87"}],"functionName":{"name":"add","nativeSrc":"3553:3:87","nodeType":"YulIdentifier","src":"3553:3:87"},"nativeSrc":"3553:22:87","nodeType":"YulFunctionCall","src":"3553:22:87"},{"name":"dataEnd","nativeSrc":"3577:7:87","nodeType":"YulIdentifier","src":"3577:7:87"}],"functionName":{"name":"abi_decode_bytes_calldata","nativeSrc":"3527:25:87","nodeType":"YulIdentifier","src":"3527:25:87"},"nativeSrc":"3527:58:87","nodeType":"YulFunctionCall","src":"3527:58:87"},"variables":[{"name":"value1_1","nativeSrc":"3505:8:87","nodeType":"YulTypedName","src":"3505:8:87","type":""},{"name":"value2_1","nativeSrc":"3515:8:87","nodeType":"YulTypedName","src":"3515:8:87","type":""}]},{"nativeSrc":"3594:18:87","nodeType":"YulAssignment","src":"3594:18:87","value":{"name":"value1_1","nativeSrc":"3604:8:87","nodeType":"YulIdentifier","src":"3604:8:87"},"variableNames":[{"name":"value1","nativeSrc":"3594:6:87","nodeType":"YulIdentifier","src":"3594:6:87"}]},{"nativeSrc":"3621:18:87","nodeType":"YulAssignment","src":"3621:18:87","value":{"name":"value2_1","nativeSrc":"3631:8:87","nodeType":"YulIdentifier","src":"3631:8:87"},"variableNames":[{"name":"value2","nativeSrc":"3621:6:87","nodeType":"YulIdentifier","src":"3621:6:87"}]}]},"name":"abi_decode_tuple_t_addresst_bytes_calldata_ptr","nativeSrc":"3101:544:87","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nativeSrc":"3157:9:87","nodeType":"YulTypedName","src":"3157:9:87","type":""},{"name":"dataEnd","nativeSrc":"3168:7:87","nodeType":"YulTypedName","src":"3168:7:87","type":""}],"returnVariables":[{"name":"value0","nativeSrc":"3180:6:87","nodeType":"YulTypedName","src":"3180:6:87","type":""},{"name":"value1","nativeSrc":"3188:6:87","nodeType":"YulTypedName","src":"3188:6:87","type":""},{"name":"value2","nativeSrc":"3196:6:87","nodeType":"YulTypedName","src":"3196:6:87","type":""}],"src":"3101:544:87"},{"body":{"nativeSrc":"3698:115:87","nodeType":"YulBlock","src":"3698:115:87","statements":[{"nativeSrc":"3708:29:87","nodeType":"YulAssignment","src":"3708:29:87","value":{"arguments":[{"name":"offset","nativeSrc":"3730:6:87","nodeType":"YulIdentifier","src":"3730:6:87"}],"functionName":{"name":"calldataload","nativeSrc":"3717:12:87","nodeType":"YulIdentifier","src":"3717:12:87"},"nativeSrc":"3717:20:87","nodeType":"YulFunctionCall","src":"3717:20:87"},"variableNames":[{"name":"value","nativeSrc":"3708:5:87","nodeType":"YulIdentifier","src":"3708:5:87"}]},{"body":{"nativeSrc":"3791:16:87","nodeType":"YulBlock","src":"3791:16:87","statements":[{"expression":{"arguments":[{"kind":"number","nativeSrc":"3800:1:87","nodeType":"YulLiteral","src":"3800:1:87","type":"","value":"0"},{"kind":"number","nativeSrc":"3803:1:87","nodeType":"YulLiteral","src":"3803:1:87","type":"","value":"0"}],"functionName":{"name":"revert","nativeSrc":"3793:6:87","nodeType":"YulIdentifier","src":"3793:6:87"},"nativeSrc":"3793:12:87","nodeType":"YulFunctionCall","src":"3793:12:87"},"nativeSrc":"3793:12:87","nodeType":"YulExpressionStatement","src":"3793:12:87"}]},"condition":{"arguments":[{"arguments":[{"name":"value","nativeSrc":"3759:5:87","nodeType":"YulIdentifier","src":"3759:5:87"},{"arguments":[{"name":"value","nativeSrc":"3770:5:87","nodeType":"YulIdentifier","src":"3770:5:87"},{"kind":"number","nativeSrc":"3777:10:87","nodeType":"YulLiteral","src":"3777:10:87","type":"","value":"0xffffffff"}],"functionName":{"name":"and","nativeSrc":"3766:3:87","nodeType":"YulIdentifier","src":"3766:3:87"},"nativeSrc":"3766:22:87","nodeType":"YulFunctionCall","src":"3766:22:87"}],"functionName":{"name":"eq","nativeSrc":"3756:2:87","nodeType":"YulIdentifier","src":"3756:2:87"},"nativeSrc":"3756:33:87","nodeType":"YulFunctionCall","src":"3756:33:87"}],"functionName":{"name":"iszero","nativeSrc":"3749:6:87","nodeType":"YulIdentifier","src":"3749:6:87"},"nativeSrc":"3749:41:87","nodeType":"YulFunctionCall","src":"3749:41:87"},"nativeSrc":"3746:61:87","nodeType":"YulIf","src":"3746:61:87"}]},"name":"abi_decode_uint32","nativeSrc":"3650:163:87","nodeType":"YulFunctionDefinition","parameters":[{"name":"offset","nativeSrc":"3677:6:87","nodeType":"YulTypedName","src":"3677:6:87","type":""}],"returnVariables":[{"name":"value","nativeSrc":"3688:5:87","nodeType":"YulTypedName","src":"3688:5:87","type":""}],"src":"3650:163:87"},{"body":{"nativeSrc":"3920:289:87","nodeType":"YulBlock","src":"3920:289:87","statements":[{"body":{"nativeSrc":"3966:16:87","nodeType":"YulBlock","src":"3966:16:87","statements":[{"expression":{"arguments":[{"kind":"number","nativeSrc":"3975:1:87","nodeType":"YulLiteral","src":"3975:1:87","type":"","value":"0"},{"kind":"number","nativeSrc":"3978:1:87","nodeType":"YulLiteral","src":"3978:1:87","type":"","value":"0"}],"functionName":{"name":"revert","nativeSrc":"3968:6:87","nodeType":"YulIdentifier","src":"3968:6:87"},"nativeSrc":"3968:12:87","nodeType":"YulFunctionCall","src":"3968:12:87"},"nativeSrc":"3968:12:87","nodeType":"YulExpressionStatement","src":"3968:12:87"}]},"condition":{"arguments":[{"arguments":[{"name":"dataEnd","nativeSrc":"3941:7:87","nodeType":"YulIdentifier","src":"3941:7:87"},{"name":"headStart","nativeSrc":"3950:9:87","nodeType":"YulIdentifier","src":"3950:9:87"}],"functionName":{"name":"sub","nativeSrc":"3937:3:87","nodeType":"YulIdentifier","src":"3937:3:87"},"nativeSrc":"3937:23:87","nodeType":"YulFunctionCall","src":"3937:23:87"},{"kind":"number","nativeSrc":"3962:2:87","nodeType":"YulLiteral","src":"3962:2:87","type":"","value":"96"}],"functionName":{"name":"slt","nativeSrc":"3933:3:87","nodeType":"YulIdentifier","src":"3933:3:87"},"nativeSrc":"3933:32:87","nodeType":"YulFunctionCall","src":"3933:32:87"},"nativeSrc":"3930:52:87","nodeType":"YulIf","src":"3930:52:87"},{"nativeSrc":"3991:38:87","nodeType":"YulAssignment","src":"3991:38:87","value":{"arguments":[{"name":"headStart","nativeSrc":"4019:9:87","nodeType":"YulIdentifier","src":"4019:9:87"}],"functionName":{"name":"abi_decode_uint64","nativeSrc":"4001:17:87","nodeType":"YulIdentifier","src":"4001:17:87"},"nativeSrc":"4001:28:87","nodeType":"YulFunctionCall","src":"4001:28:87"},"variableNames":[{"name":"value0","nativeSrc":"3991:6:87","nodeType":"YulIdentifier","src":"3991:6:87"}]},{"nativeSrc":"4038:45:87","nodeType":"YulVariableDeclaration","src":"4038:45:87","value":{"arguments":[{"arguments":[{"name":"headStart","nativeSrc":"4068:9:87","nodeType":"YulIdentifier","src":"4068:9:87"},{"kind":"number","nativeSrc":"4079:2:87","nodeType":"YulLiteral","src":"4079:2:87","type":"","value":"32"}],"functionName":{"name":"add","nativeSrc":"4064:3:87","nodeType":"YulIdentifier","src":"4064:3:87"},"nativeSrc":"4064:18:87","nodeType":"YulFunctionCall","src":"4064:18:87"}],"functionName":{"name":"calldataload","nativeSrc":"4051:12:87","nodeType":"YulIdentifier","src":"4051:12:87"},"nativeSrc":"4051:32:87","nodeType":"YulFunctionCall","src":"4051:32:87"},"variables":[{"name":"value","nativeSrc":"4042:5:87","nodeType":"YulTypedName","src":"4042:5:87","type":""}]},{"expression":{"arguments":[{"name":"value","nativeSrc":"4117:5:87","nodeType":"YulIdentifier","src":"4117:5:87"}],"functionName":{"name":"validator_revert_address","nativeSrc":"4092:24:87","nodeType":"YulIdentifier","src":"4092:24:87"},"nativeSrc":"4092:31:87","nodeType":"YulFunctionCall","src":"4092:31:87"},"nativeSrc":"4092:31:87","nodeType":"YulExpressionStatement","src":"4092:31:87"},{"nativeSrc":"4132:15:87","nodeType":"YulAssignment","src":"4132:15:87","value":{"name":"value","nativeSrc":"4142:5:87","nodeType":"YulIdentifier","src":"4142:5:87"},"variableNames":[{"name":"value1","nativeSrc":"4132:6:87","nodeType":"YulIdentifier","src":"4132:6:87"}]},{"nativeSrc":"4156:47:87","nodeType":"YulAssignment","src":"4156:47:87","value":{"arguments":[{"arguments":[{"name":"headStart","nativeSrc":"4188:9:87","nodeType":"YulIdentifier","src":"4188:9:87"},{"kind":"number","nativeSrc":"4199:2:87","nodeType":"YulLiteral","src":"4199:2:87","type":"","value":"64"}],"functionName":{"name":"add","nativeSrc":"4184:3:87","nodeType":"YulIdentifier","src":"4184:3:87"},"nativeSrc":"4184:18:87","nodeType":"YulFunctionCall","src":"4184:18:87"}],"functionName":{"name":"abi_decode_uint32","nativeSrc":"4166:17:87","nodeType":"YulIdentifier","src":"4166:17:87"},"nativeSrc":"4166:37:87","nodeType":"YulFunctionCall","src":"4166:37:87"},"variableNames":[{"name":"value2","nativeSrc":"4156:6:87","nodeType":"YulIdentifier","src":"4156:6:87"}]}]},"name":"abi_decode_tuple_t_uint64t_addresst_uint32","nativeSrc":"3818:391:87","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nativeSrc":"3870:9:87","nodeType":"YulTypedName","src":"3870:9:87","type":""},{"name":"dataEnd","nativeSrc":"3881:7:87","nodeType":"YulTypedName","src":"3881:7:87","type":""}],"returnVariables":[{"name":"value0","nativeSrc":"3893:6:87","nodeType":"YulTypedName","src":"3893:6:87","type":""},{"name":"value1","nativeSrc":"3901:6:87","nodeType":"YulTypedName","src":"3901:6:87","type":""},{"name":"value2","nativeSrc":"3909:6:87","nodeType":"YulTypedName","src":"3909:6:87","type":""}],"src":"3818:391:87"},{"body":{"nativeSrc":"4300:233:87","nodeType":"YulBlock","src":"4300:233:87","statements":[{"body":{"nativeSrc":"4346:16:87","nodeType":"YulBlock","src":"4346:16:87","statements":[{"expression":{"arguments":[{"kind":"number","nativeSrc":"4355:1:87","nodeType":"YulLiteral","src":"4355:1:87","type":"","value":"0"},{"kind":"number","nativeSrc":"4358:1:87","nodeType":"YulLiteral","src":"4358:1:87","type":"","value":"0"}],"functionName":{"name":"revert","nativeSrc":"4348:6:87","nodeType":"YulIdentifier","src":"4348:6:87"},"nativeSrc":"4348:12:87","nodeType":"YulFunctionCall","src":"4348:12:87"},"nativeSrc":"4348:12:87","nodeType":"YulExpressionStatement","src":"4348:12:87"}]},"condition":{"arguments":[{"arguments":[{"name":"dataEnd","nativeSrc":"4321:7:87","nodeType":"YulIdentifier","src":"4321:7:87"},{"name":"headStart","nativeSrc":"4330:9:87","nodeType":"YulIdentifier","src":"4330:9:87"}],"functionName":{"name":"sub","nativeSrc":"4317:3:87","nodeType":"YulIdentifier","src":"4317:3:87"},"nativeSrc":"4317:23:87","nodeType":"YulFunctionCall","src":"4317:23:87"},{"kind":"number","nativeSrc":"4342:2:87","nodeType":"YulLiteral","src":"4342:2:87","type":"","value":"64"}],"functionName":{"name":"slt","nativeSrc":"4313:3:87","nodeType":"YulIdentifier","src":"4313:3:87"},"nativeSrc":"4313:32:87","nodeType":"YulFunctionCall","src":"4313:32:87"},"nativeSrc":"4310:52:87","nodeType":"YulIf","src":"4310:52:87"},{"nativeSrc":"4371:38:87","nodeType":"YulAssignment","src":"4371:38:87","value":{"arguments":[{"name":"headStart","nativeSrc":"4399:9:87","nodeType":"YulIdentifier","src":"4399:9:87"}],"functionName":{"name":"abi_decode_uint64","nativeSrc":"4381:17:87","nodeType":"YulIdentifier","src":"4381:17:87"},"nativeSrc":"4381:28:87","nodeType":"YulFunctionCall","src":"4381:28:87"},"variableNames":[{"name":"value0","nativeSrc":"4371:6:87","nodeType":"YulIdentifier","src":"4371:6:87"}]},{"nativeSrc":"4418:45:87","nodeType":"YulVariableDeclaration","src":"4418:45:87","value":{"arguments":[{"arguments":[{"name":"headStart","nativeSrc":"4448:9:87","nodeType":"YulIdentifier","src":"4448:9:87"},{"kind":"number","nativeSrc":"4459:2:87","nodeType":"YulLiteral","src":"4459:2:87","type":"","value":"32"}],"functionName":{"name":"add","nativeSrc":"4444:3:87","nodeType":"YulIdentifier","src":"4444:3:87"},"nativeSrc":"4444:18:87","nodeType":"YulFunctionCall","src":"4444:18:87"}],"functionName":{"name":"calldataload","nativeSrc":"4431:12:87","nodeType":"YulIdentifier","src":"4431:12:87"},"nativeSrc":"4431:32:87","nodeType":"YulFunctionCall","src":"4431:32:87"},"variables":[{"name":"value","nativeSrc":"4422:5:87","nodeType":"YulTypedName","src":"4422:5:87","type":""}]},{"expression":{"arguments":[{"name":"value","nativeSrc":"4497:5:87","nodeType":"YulIdentifier","src":"4497:5:87"}],"functionName":{"name":"validator_revert_address","nativeSrc":"4472:24:87","nodeType":"YulIdentifier","src":"4472:24:87"},"nativeSrc":"4472:31:87","nodeType":"YulFunctionCall","src":"4472:31:87"},"nativeSrc":"4472:31:87","nodeType":"YulExpressionStatement","src":"4472:31:87"},{"nativeSrc":"4512:15:87","nodeType":"YulAssignment","src":"4512:15:87","value":{"name":"value","nativeSrc":"4522:5:87","nodeType":"YulIdentifier","src":"4522:5:87"},"variableNames":[{"name":"value1","nativeSrc":"4512:6:87","nodeType":"YulIdentifier","src":"4512:6:87"}]}]},"name":"abi_decode_tuple_t_uint64t_address","nativeSrc":"4214:319:87","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nativeSrc":"4258:9:87","nodeType":"YulTypedName","src":"4258:9:87","type":""},{"name":"dataEnd","nativeSrc":"4269:7:87","nodeType":"YulTypedName","src":"4269:7:87","type":""}],"returnVariables":[{"name":"value0","nativeSrc":"4281:6:87","nodeType":"YulTypedName","src":"4281:6:87","type":""},{"name":"value1","nativeSrc":"4289:6:87","nodeType":"YulTypedName","src":"4289:6:87","type":""}],"src":"4214:319:87"},{"body":{"nativeSrc":"4715:282:87","nodeType":"YulBlock","src":"4715:282:87","statements":[{"nativeSrc":"4725:27:87","nodeType":"YulAssignment","src":"4725:27:87","value":{"arguments":[{"name":"headStart","nativeSrc":"4737:9:87","nodeType":"YulIdentifier","src":"4737:9:87"},{"kind":"number","nativeSrc":"4748:3:87","nodeType":"YulLiteral","src":"4748:3:87","type":"","value":"128"}],"functionName":{"name":"add","nativeSrc":"4733:3:87","nodeType":"YulIdentifier","src":"4733:3:87"},"nativeSrc":"4733:19:87","nodeType":"YulFunctionCall","src":"4733:19:87"},"variableNames":[{"name":"tail","nativeSrc":"4725:4:87","nodeType":"YulIdentifier","src":"4725:4:87"}]},{"expression":{"arguments":[{"name":"headStart","nativeSrc":"4768:9:87","nodeType":"YulIdentifier","src":"4768:9:87"},{"arguments":[{"name":"value0","nativeSrc":"4783:6:87","nodeType":"YulIdentifier","src":"4783:6:87"},{"kind":"number","nativeSrc":"4791:14:87","nodeType":"YulLiteral","src":"4791:14:87","type":"","value":"0xffffffffffff"}],"functionName":{"name":"and","nativeSrc":"4779:3:87","nodeType":"YulIdentifier","src":"4779:3:87"},"nativeSrc":"4779:27:87","nodeType":"YulFunctionCall","src":"4779:27:87"}],"functionName":{"name":"mstore","nativeSrc":"4761:6:87","nodeType":"YulIdentifier","src":"4761:6:87"},"nativeSrc":"4761:46:87","nodeType":"YulFunctionCall","src":"4761:46:87"},"nativeSrc":"4761:46:87","nodeType":"YulExpressionStatement","src":"4761:46:87"},{"expression":{"arguments":[{"arguments":[{"name":"headStart","nativeSrc":"4827:9:87","nodeType":"YulIdentifier","src":"4827:9:87"},{"kind":"number","nativeSrc":"4838:2:87","nodeType":"YulLiteral","src":"4838:2:87","type":"","value":"32"}],"functionName":{"name":"add","nativeSrc":"4823:3:87","nodeType":"YulIdentifier","src":"4823:3:87"},"nativeSrc":"4823:18:87","nodeType":"YulFunctionCall","src":"4823:18:87"},{"arguments":[{"name":"value1","nativeSrc":"4847:6:87","nodeType":"YulIdentifier","src":"4847:6:87"},{"kind":"number","nativeSrc":"4855:10:87","nodeType":"YulLiteral","src":"4855:10:87","type":"","value":"0xffffffff"}],"functionName":{"name":"and","nativeSrc":"4843:3:87","nodeType":"YulIdentifier","src":"4843:3:87"},"nativeSrc":"4843:23:87","nodeType":"YulFunctionCall","src":"4843:23:87"}],"functionName":{"name":"mstore","nativeSrc":"4816:6:87","nodeType":"YulIdentifier","src":"4816:6:87"},"nativeSrc":"4816:51:87","nodeType":"YulFunctionCall","src":"4816:51:87"},"nativeSrc":"4816:51:87","nodeType":"YulExpressionStatement","src":"4816:51:87"},{"expression":{"arguments":[{"arguments":[{"name":"headStart","nativeSrc":"4887:9:87","nodeType":"YulIdentifier","src":"4887:9:87"},{"kind":"number","nativeSrc":"4898:2:87","nodeType":"YulLiteral","src":"4898:2:87","type":"","value":"64"}],"functionName":{"name":"add","nativeSrc":"4883:3:87","nodeType":"YulIdentifier","src":"4883:3:87"},"nativeSrc":"4883:18:87","nodeType":"YulFunctionCall","src":"4883:18:87"},{"arguments":[{"name":"value2","nativeSrc":"4907:6:87","nodeType":"YulIdentifier","src":"4907:6:87"},{"kind":"number","nativeSrc":"4915:10:87","nodeType":"YulLiteral","src":"4915:10:87","type":"","value":"0xffffffff"}],"functionName":{"name":"and","nativeSrc":"4903:3:87","nodeType":"YulIdentifier","src":"4903:3:87"},"nativeSrc":"4903:23:87","nodeType":"YulFunctionCall","src":"4903:23:87"}],"functionName":{"name":"mstore","nativeSrc":"4876:6:87","nodeType":"YulIdentifier","src":"4876:6:87"},"nativeSrc":"4876:51:87","nodeType":"YulFunctionCall","src":"4876:51:87"},"nativeSrc":"4876:51:87","nodeType":"YulExpressionStatement","src":"4876:51:87"},{"expression":{"arguments":[{"arguments":[{"name":"headStart","nativeSrc":"4947:9:87","nodeType":"YulIdentifier","src":"4947:9:87"},{"kind":"number","nativeSrc":"4958:2:87","nodeType":"YulLiteral","src":"4958:2:87","type":"","value":"96"}],"functionName":{"name":"add","nativeSrc":"4943:3:87","nodeType":"YulIdentifier","src":"4943:3:87"},"nativeSrc":"4943:18:87","nodeType":"YulFunctionCall","src":"4943:18:87"},{"arguments":[{"name":"value3","nativeSrc":"4967:6:87","nodeType":"YulIdentifier","src":"4967:6:87"},{"kind":"number","nativeSrc":"4975:14:87","nodeType":"YulLiteral","src":"4975:14:87","type":"","value":"0xffffffffffff"}],"functionName":{"name":"and","nativeSrc":"4963:3:87","nodeType":"YulIdentifier","src":"4963:3:87"},"nativeSrc":"4963:27:87","nodeType":"YulFunctionCall","src":"4963:27:87"}],"functionName":{"name":"mstore","nativeSrc":"4936:6:87","nodeType":"YulIdentifier","src":"4936:6:87"},"nativeSrc":"4936:55:87","nodeType":"YulFunctionCall","src":"4936:55:87"},"nativeSrc":"4936:55:87","nodeType":"YulExpressionStatement","src":"4936:55:87"}]},"name":"abi_encode_tuple_t_uint48_t_uint32_t_uint32_t_uint48__to_t_uint48_t_uint32_t_uint32_t_uint48__fromStack_reversed","nativeSrc":"4538:459:87","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nativeSrc":"4660:9:87","nodeType":"YulTypedName","src":"4660:9:87","type":""},{"name":"value3","nativeSrc":"4671:6:87","nodeType":"YulTypedName","src":"4671:6:87","type":""},{"name":"value2","nativeSrc":"4679:6:87","nodeType":"YulTypedName","src":"4679:6:87","type":""},{"name":"value1","nativeSrc":"4687:6:87","nodeType":"YulTypedName","src":"4687:6:87","type":""},{"name":"value0","nativeSrc":"4695:6:87","nodeType":"YulTypedName","src":"4695:6:87","type":""}],"returnVariables":[{"name":"tail","nativeSrc":"4706:4:87","nodeType":"YulTypedName","src":"4706:4:87","type":""}],"src":"4538:459:87"},{"body":{"nativeSrc":"5087:171:87","nodeType":"YulBlock","src":"5087:171:87","statements":[{"body":{"nativeSrc":"5133:16:87","nodeType":"YulBlock","src":"5133:16:87","statements":[{"expression":{"arguments":[{"kind":"number","nativeSrc":"5142:1:87","nodeType":"YulLiteral","src":"5142:1:87","type":"","value":"0"},{"kind":"number","nativeSrc":"5145:1:87","nodeType":"YulLiteral","src":"5145:1:87","type":"","value":"0"}],"functionName":{"name":"revert","nativeSrc":"5135:6:87","nodeType":"YulIdentifier","src":"5135:6:87"},"nativeSrc":"5135:12:87","nodeType":"YulFunctionCall","src":"5135:12:87"},"nativeSrc":"5135:12:87","nodeType":"YulExpressionStatement","src":"5135:12:87"}]},"condition":{"arguments":[{"arguments":[{"name":"dataEnd","nativeSrc":"5108:7:87","nodeType":"YulIdentifier","src":"5108:7:87"},{"name":"headStart","nativeSrc":"5117:9:87","nodeType":"YulIdentifier","src":"5117:9:87"}],"functionName":{"name":"sub","nativeSrc":"5104:3:87","nodeType":"YulIdentifier","src":"5104:3:87"},"nativeSrc":"5104:23:87","nodeType":"YulFunctionCall","src":"5104:23:87"},{"kind":"number","nativeSrc":"5129:2:87","nodeType":"YulLiteral","src":"5129:2:87","type":"","value":"64"}],"functionName":{"name":"slt","nativeSrc":"5100:3:87","nodeType":"YulIdentifier","src":"5100:3:87"},"nativeSrc":"5100:32:87","nodeType":"YulFunctionCall","src":"5100:32:87"},"nativeSrc":"5097:52:87","nodeType":"YulIf","src":"5097:52:87"},{"nativeSrc":"5158:38:87","nodeType":"YulAssignment","src":"5158:38:87","value":{"arguments":[{"name":"headStart","nativeSrc":"5186:9:87","nodeType":"YulIdentifier","src":"5186:9:87"}],"functionName":{"name":"abi_decode_uint64","nativeSrc":"5168:17:87","nodeType":"YulIdentifier","src":"5168:17:87"},"nativeSrc":"5168:28:87","nodeType":"YulFunctionCall","src":"5168:28:87"},"variableNames":[{"name":"value0","nativeSrc":"5158:6:87","nodeType":"YulIdentifier","src":"5158:6:87"}]},{"nativeSrc":"5205:47:87","nodeType":"YulAssignment","src":"5205:47:87","value":{"arguments":[{"arguments":[{"name":"headStart","nativeSrc":"5237:9:87","nodeType":"YulIdentifier","src":"5237:9:87"},{"kind":"number","nativeSrc":"5248:2:87","nodeType":"YulLiteral","src":"5248:2:87","type":"","value":"32"}],"functionName":{"name":"add","nativeSrc":"5233:3:87","nodeType":"YulIdentifier","src":"5233:3:87"},"nativeSrc":"5233:18:87","nodeType":"YulFunctionCall","src":"5233:18:87"}],"functionName":{"name":"abi_decode_uint64","nativeSrc":"5215:17:87","nodeType":"YulIdentifier","src":"5215:17:87"},"nativeSrc":"5215:37:87","nodeType":"YulFunctionCall","src":"5215:37:87"},"variableNames":[{"name":"value1","nativeSrc":"5205:6:87","nodeType":"YulIdentifier","src":"5205:6:87"}]}]},"name":"abi_decode_tuple_t_uint64t_uint64","nativeSrc":"5002:256:87","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nativeSrc":"5045:9:87","nodeType":"YulTypedName","src":"5045:9:87","type":""},{"name":"dataEnd","nativeSrc":"5056:7:87","nodeType":"YulTypedName","src":"5056:7:87","type":""}],"returnVariables":[{"name":"value0","nativeSrc":"5068:6:87","nodeType":"YulTypedName","src":"5068:6:87","type":""},{"name":"value1","nativeSrc":"5076:6:87","nodeType":"YulTypedName","src":"5076:6:87","type":""}],"src":"5002:256:87"},{"body":{"nativeSrc":"5333:110:87","nodeType":"YulBlock","src":"5333:110:87","statements":[{"body":{"nativeSrc":"5379:16:87","nodeType":"YulBlock","src":"5379:16:87","statements":[{"expression":{"arguments":[{"kind":"number","nativeSrc":"5388:1:87","nodeType":"YulLiteral","src":"5388:1:87","type":"","value":"0"},{"kind":"number","nativeSrc":"5391:1:87","nodeType":"YulLiteral","src":"5391:1:87","type":"","value":"0"}],"functionName":{"name":"revert","nativeSrc":"5381:6:87","nodeType":"YulIdentifier","src":"5381:6:87"},"nativeSrc":"5381:12:87","nodeType":"YulFunctionCall","src":"5381:12:87"},"nativeSrc":"5381:12:87","nodeType":"YulExpressionStatement","src":"5381:12:87"}]},"condition":{"arguments":[{"arguments":[{"name":"dataEnd","nativeSrc":"5354:7:87","nodeType":"YulIdentifier","src":"5354:7:87"},{"name":"headStart","nativeSrc":"5363:9:87","nodeType":"YulIdentifier","src":"5363:9:87"}],"functionName":{"name":"sub","nativeSrc":"5350:3:87","nodeType":"YulIdentifier","src":"5350:3:87"},"nativeSrc":"5350:23:87","nodeType":"YulFunctionCall","src":"5350:23:87"},{"kind":"number","nativeSrc":"5375:2:87","nodeType":"YulLiteral","src":"5375:2:87","type":"","value":"32"}],"functionName":{"name":"slt","nativeSrc":"5346:3:87","nodeType":"YulIdentifier","src":"5346:3:87"},"nativeSrc":"5346:32:87","nodeType":"YulFunctionCall","src":"5346:32:87"},"nativeSrc":"5343:52:87","nodeType":"YulIf","src":"5343:52:87"},{"nativeSrc":"5404:33:87","nodeType":"YulAssignment","src":"5404:33:87","value":{"arguments":[{"name":"headStart","nativeSrc":"5427:9:87","nodeType":"YulIdentifier","src":"5427:9:87"}],"functionName":{"name":"calldataload","nativeSrc":"5414:12:87","nodeType":"YulIdentifier","src":"5414:12:87"},"nativeSrc":"5414:23:87","nodeType":"YulFunctionCall","src":"5414:23:87"},"variableNames":[{"name":"value0","nativeSrc":"5404:6:87","nodeType":"YulIdentifier","src":"5404:6:87"}]}]},"name":"abi_decode_tuple_t_bytes32","nativeSrc":"5263:180:87","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nativeSrc":"5299:9:87","nodeType":"YulTypedName","src":"5299:9:87","type":""},{"name":"dataEnd","nativeSrc":"5310:7:87","nodeType":"YulTypedName","src":"5310:7:87","type":""}],"returnVariables":[{"name":"value0","nativeSrc":"5322:6:87","nodeType":"YulTypedName","src":"5322:6:87","type":""}],"src":"5263:180:87"},{"body":{"nativeSrc":"5547:97:87","nodeType":"YulBlock","src":"5547:97:87","statements":[{"nativeSrc":"5557:26:87","nodeType":"YulAssignment","src":"5557:26:87","value":{"arguments":[{"name":"headStart","nativeSrc":"5569:9:87","nodeType":"YulIdentifier","src":"5569:9:87"},{"kind":"number","nativeSrc":"5580:2:87","nodeType":"YulLiteral","src":"5580:2:87","type":"","value":"32"}],"functionName":{"name":"add","nativeSrc":"5565:3:87","nodeType":"YulIdentifier","src":"5565:3:87"},"nativeSrc":"5565:18:87","nodeType":"YulFunctionCall","src":"5565:18:87"},"variableNames":[{"name":"tail","nativeSrc":"5557:4:87","nodeType":"YulIdentifier","src":"5557:4:87"}]},{"expression":{"arguments":[{"name":"headStart","nativeSrc":"5599:9:87","nodeType":"YulIdentifier","src":"5599:9:87"},{"arguments":[{"name":"value0","nativeSrc":"5614:6:87","nodeType":"YulIdentifier","src":"5614:6:87"},{"kind":"number","nativeSrc":"5622:14:87","nodeType":"YulLiteral","src":"5622:14:87","type":"","value":"0xffffffffffff"}],"functionName":{"name":"and","nativeSrc":"5610:3:87","nodeType":"YulIdentifier","src":"5610:3:87"},"nativeSrc":"5610:27:87","nodeType":"YulFunctionCall","src":"5610:27:87"}],"functionName":{"name":"mstore","nativeSrc":"5592:6:87","nodeType":"YulIdentifier","src":"5592:6:87"},"nativeSrc":"5592:46:87","nodeType":"YulFunctionCall","src":"5592:46:87"},"nativeSrc":"5592:46:87","nodeType":"YulExpressionStatement","src":"5592:46:87"}]},"name":"abi_encode_tuple_t_uint48__to_t_uint48__fromStack_reversed","nativeSrc":"5448:196:87","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nativeSrc":"5516:9:87","nodeType":"YulTypedName","src":"5516:9:87","type":""},{"name":"value0","nativeSrc":"5527:6:87","nodeType":"YulTypedName","src":"5527:6:87","type":""}],"returnVariables":[{"name":"tail","nativeSrc":"5538:4:87","nodeType":"YulTypedName","src":"5538:4:87","type":""}],"src":"5448:196:87"},{"body":{"nativeSrc":"5719:177:87","nodeType":"YulBlock","src":"5719:177:87","statements":[{"body":{"nativeSrc":"5765:16:87","nodeType":"YulBlock","src":"5765:16:87","statements":[{"expression":{"arguments":[{"kind":"number","nativeSrc":"5774:1:87","nodeType":"YulLiteral","src":"5774:1:87","type":"","value":"0"},{"kind":"number","nativeSrc":"5777:1:87","nodeType":"YulLiteral","src":"5777:1:87","type":"","value":"0"}],"functionName":{"name":"revert","nativeSrc":"5767:6:87","nodeType":"YulIdentifier","src":"5767:6:87"},"nativeSrc":"5767:12:87","nodeType":"YulFunctionCall","src":"5767:12:87"},"nativeSrc":"5767:12:87","nodeType":"YulExpressionStatement","src":"5767:12:87"}]},"condition":{"arguments":[{"arguments":[{"name":"dataEnd","nativeSrc":"5740:7:87","nodeType":"YulIdentifier","src":"5740:7:87"},{"name":"headStart","nativeSrc":"5749:9:87","nodeType":"YulIdentifier","src":"5749:9:87"}],"functionName":{"name":"sub","nativeSrc":"5736:3:87","nodeType":"YulIdentifier","src":"5736:3:87"},"nativeSrc":"5736:23:87","nodeType":"YulFunctionCall","src":"5736:23:87"},{"kind":"number","nativeSrc":"5761:2:87","nodeType":"YulLiteral","src":"5761:2:87","type":"","value":"32"}],"functionName":{"name":"slt","nativeSrc":"5732:3:87","nodeType":"YulIdentifier","src":"5732:3:87"},"nativeSrc":"5732:32:87","nodeType":"YulFunctionCall","src":"5732:32:87"},"nativeSrc":"5729:52:87","nodeType":"YulIf","src":"5729:52:87"},{"nativeSrc":"5790:36:87","nodeType":"YulVariableDeclaration","src":"5790:36:87","value":{"arguments":[{"name":"headStart","nativeSrc":"5816:9:87","nodeType":"YulIdentifier","src":"5816:9:87"}],"functionName":{"name":"calldataload","nativeSrc":"5803:12:87","nodeType":"YulIdentifier","src":"5803:12:87"},"nativeSrc":"5803:23:87","nodeType":"YulFunctionCall","src":"5803:23:87"},"variables":[{"name":"value","nativeSrc":"5794:5:87","nodeType":"YulTypedName","src":"5794:5:87","type":""}]},{"expression":{"arguments":[{"name":"value","nativeSrc":"5860:5:87","nodeType":"YulIdentifier","src":"5860:5:87"}],"functionName":{"name":"validator_revert_address","nativeSrc":"5835:24:87","nodeType":"YulIdentifier","src":"5835:24:87"},"nativeSrc":"5835:31:87","nodeType":"YulFunctionCall","src":"5835:31:87"},"nativeSrc":"5835:31:87","nodeType":"YulExpressionStatement","src":"5835:31:87"},{"nativeSrc":"5875:15:87","nodeType":"YulAssignment","src":"5875:15:87","value":{"name":"value","nativeSrc":"5885:5:87","nodeType":"YulIdentifier","src":"5885:5:87"},"variableNames":[{"name":"value0","nativeSrc":"5875:6:87","nodeType":"YulIdentifier","src":"5875:6:87"}]}]},"name":"abi_decode_tuple_t_address","nativeSrc":"5649:247:87","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nativeSrc":"5685:9:87","nodeType":"YulTypedName","src":"5685:9:87","type":""},{"name":"dataEnd","nativeSrc":"5696:7:87","nodeType":"YulTypedName","src":"5696:7:87","type":""}],"returnVariables":[{"name":"value0","nativeSrc":"5708:6:87","nodeType":"YulTypedName","src":"5708:6:87","type":""}],"src":"5649:247:87"},{"body":{"nativeSrc":"5945:87:87","nodeType":"YulBlock","src":"5945:87:87","statements":[{"body":{"nativeSrc":"6010:16:87","nodeType":"YulBlock","src":"6010:16:87","statements":[{"expression":{"arguments":[{"kind":"number","nativeSrc":"6019:1:87","nodeType":"YulLiteral","src":"6019:1:87","type":"","value":"0"},{"kind":"number","nativeSrc":"6022:1:87","nodeType":"YulLiteral","src":"6022:1:87","type":"","value":"0"}],"functionName":{"name":"revert","nativeSrc":"6012:6:87","nodeType":"YulIdentifier","src":"6012:6:87"},"nativeSrc":"6012:12:87","nodeType":"YulFunctionCall","src":"6012:12:87"},"nativeSrc":"6012:12:87","nodeType":"YulExpressionStatement","src":"6012:12:87"}]},"condition":{"arguments":[{"arguments":[{"name":"value","nativeSrc":"5968:5:87","nodeType":"YulIdentifier","src":"5968:5:87"},{"arguments":[{"name":"value","nativeSrc":"5979:5:87","nodeType":"YulIdentifier","src":"5979:5:87"},{"arguments":[{"kind":"number","nativeSrc":"5990:3:87","nodeType":"YulLiteral","src":"5990:3:87","type":"","value":"224"},{"kind":"number","nativeSrc":"5995:10:87","nodeType":"YulLiteral","src":"5995:10:87","type":"","value":"0xffffffff"}],"functionName":{"name":"shl","nativeSrc":"5986:3:87","nodeType":"YulIdentifier","src":"5986:3:87"},"nativeSrc":"5986:20:87","nodeType":"YulFunctionCall","src":"5986:20:87"}],"functionName":{"name":"and","nativeSrc":"5975:3:87","nodeType":"YulIdentifier","src":"5975:3:87"},"nativeSrc":"5975:32:87","nodeType":"YulFunctionCall","src":"5975:32:87"}],"functionName":{"name":"eq","nativeSrc":"5965:2:87","nodeType":"YulIdentifier","src":"5965:2:87"},"nativeSrc":"5965:43:87","nodeType":"YulFunctionCall","src":"5965:43:87"}],"functionName":{"name":"iszero","nativeSrc":"5958:6:87","nodeType":"YulIdentifier","src":"5958:6:87"},"nativeSrc":"5958:51:87","nodeType":"YulFunctionCall","src":"5958:51:87"},"nativeSrc":"5955:71:87","nodeType":"YulIf","src":"5955:71:87"}]},"name":"validator_revert_bytes4","nativeSrc":"5901:131:87","nodeType":"YulFunctionDefinition","parameters":[{"name":"value","nativeSrc":"5934:5:87","nodeType":"YulTypedName","src":"5934:5:87","type":""}],"src":"5901:131:87"},{"body":{"nativeSrc":"6123:300:87","nodeType":"YulBlock","src":"6123:300:87","statements":[{"body":{"nativeSrc":"6169:16:87","nodeType":"YulBlock","src":"6169:16:87","statements":[{"expression":{"arguments":[{"kind":"number","nativeSrc":"6178:1:87","nodeType":"YulLiteral","src":"6178:1:87","type":"","value":"0"},{"kind":"number","nativeSrc":"6181:1:87","nodeType":"YulLiteral","src":"6181:1:87","type":"","value":"0"}],"functionName":{"name":"revert","nativeSrc":"6171:6:87","nodeType":"YulIdentifier","src":"6171:6:87"},"nativeSrc":"6171:12:87","nodeType":"YulFunctionCall","src":"6171:12:87"},"nativeSrc":"6171:12:87","nodeType":"YulExpressionStatement","src":"6171:12:87"}]},"condition":{"arguments":[{"arguments":[{"name":"dataEnd","nativeSrc":"6144:7:87","nodeType":"YulIdentifier","src":"6144:7:87"},{"name":"headStart","nativeSrc":"6153:9:87","nodeType":"YulIdentifier","src":"6153:9:87"}],"functionName":{"name":"sub","nativeSrc":"6140:3:87","nodeType":"YulIdentifier","src":"6140:3:87"},"nativeSrc":"6140:23:87","nodeType":"YulFunctionCall","src":"6140:23:87"},{"kind":"number","nativeSrc":"6165:2:87","nodeType":"YulLiteral","src":"6165:2:87","type":"","value":"64"}],"functionName":{"name":"slt","nativeSrc":"6136:3:87","nodeType":"YulIdentifier","src":"6136:3:87"},"nativeSrc":"6136:32:87","nodeType":"YulFunctionCall","src":"6136:32:87"},"nativeSrc":"6133:52:87","nodeType":"YulIf","src":"6133:52:87"},{"nativeSrc":"6194:36:87","nodeType":"YulVariableDeclaration","src":"6194:36:87","value":{"arguments":[{"name":"headStart","nativeSrc":"6220:9:87","nodeType":"YulIdentifier","src":"6220:9:87"}],"functionName":{"name":"calldataload","nativeSrc":"6207:12:87","nodeType":"YulIdentifier","src":"6207:12:87"},"nativeSrc":"6207:23:87","nodeType":"YulFunctionCall","src":"6207:23:87"},"variables":[{"name":"value","nativeSrc":"6198:5:87","nodeType":"YulTypedName","src":"6198:5:87","type":""}]},{"expression":{"arguments":[{"name":"value","nativeSrc":"6264:5:87","nodeType":"YulIdentifier","src":"6264:5:87"}],"functionName":{"name":"validator_revert_address","nativeSrc":"6239:24:87","nodeType":"YulIdentifier","src":"6239:24:87"},"nativeSrc":"6239:31:87","nodeType":"YulFunctionCall","src":"6239:31:87"},"nativeSrc":"6239:31:87","nodeType":"YulExpressionStatement","src":"6239:31:87"},{"nativeSrc":"6279:15:87","nodeType":"YulAssignment","src":"6279:15:87","value":{"name":"value","nativeSrc":"6289:5:87","nodeType":"YulIdentifier","src":"6289:5:87"},"variableNames":[{"name":"value0","nativeSrc":"6279:6:87","nodeType":"YulIdentifier","src":"6279:6:87"}]},{"nativeSrc":"6303:47:87","nodeType":"YulVariableDeclaration","src":"6303:47:87","value":{"arguments":[{"arguments":[{"name":"headStart","nativeSrc":"6335:9:87","nodeType":"YulIdentifier","src":"6335:9:87"},{"kind":"number","nativeSrc":"6346:2:87","nodeType":"YulLiteral","src":"6346:2:87","type":"","value":"32"}],"functionName":{"name":"add","nativeSrc":"6331:3:87","nodeType":"YulIdentifier","src":"6331:3:87"},"nativeSrc":"6331:18:87","nodeType":"YulFunctionCall","src":"6331:18:87"}],"functionName":{"name":"calldataload","nativeSrc":"6318:12:87","nodeType":"YulIdentifier","src":"6318:12:87"},"nativeSrc":"6318:32:87","nodeType":"YulFunctionCall","src":"6318:32:87"},"variables":[{"name":"value_1","nativeSrc":"6307:7:87","nodeType":"YulTypedName","src":"6307:7:87","type":""}]},{"expression":{"arguments":[{"name":"value_1","nativeSrc":"6383:7:87","nodeType":"YulIdentifier","src":"6383:7:87"}],"functionName":{"name":"validator_revert_bytes4","nativeSrc":"6359:23:87","nodeType":"YulIdentifier","src":"6359:23:87"},"nativeSrc":"6359:32:87","nodeType":"YulFunctionCall","src":"6359:32:87"},"nativeSrc":"6359:32:87","nodeType":"YulExpressionStatement","src":"6359:32:87"},{"nativeSrc":"6400:17:87","nodeType":"YulAssignment","src":"6400:17:87","value":{"name":"value_1","nativeSrc":"6410:7:87","nodeType":"YulIdentifier","src":"6410:7:87"},"variableNames":[{"name":"value1","nativeSrc":"6400:6:87","nodeType":"YulIdentifier","src":"6400:6:87"}]}]},"name":"abi_decode_tuple_t_addresst_bytes4","nativeSrc":"6037:386:87","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nativeSrc":"6081:9:87","nodeType":"YulTypedName","src":"6081:9:87","type":""},{"name":"dataEnd","nativeSrc":"6092:7:87","nodeType":"YulTypedName","src":"6092:7:87","type":""}],"returnVariables":[{"name":"value0","nativeSrc":"6104:6:87","nodeType":"YulTypedName","src":"6104:6:87","type":""},{"name":"value1","nativeSrc":"6112:6:87","nodeType":"YulTypedName","src":"6112:6:87","type":""}],"src":"6037:386:87"},{"body":{"nativeSrc":"6534:376:87","nodeType":"YulBlock","src":"6534:376:87","statements":[{"body":{"nativeSrc":"6580:16:87","nodeType":"YulBlock","src":"6580:16:87","statements":[{"expression":{"arguments":[{"kind":"number","nativeSrc":"6589:1:87","nodeType":"YulLiteral","src":"6589:1:87","type":"","value":"0"},{"kind":"number","nativeSrc":"6592:1:87","nodeType":"YulLiteral","src":"6592:1:87","type":"","value":"0"}],"functionName":{"name":"revert","nativeSrc":"6582:6:87","nodeType":"YulIdentifier","src":"6582:6:87"},"nativeSrc":"6582:12:87","nodeType":"YulFunctionCall","src":"6582:12:87"},"nativeSrc":"6582:12:87","nodeType":"YulExpressionStatement","src":"6582:12:87"}]},"condition":{"arguments":[{"arguments":[{"name":"dataEnd","nativeSrc":"6555:7:87","nodeType":"YulIdentifier","src":"6555:7:87"},{"name":"headStart","nativeSrc":"6564:9:87","nodeType":"YulIdentifier","src":"6564:9:87"}],"functionName":{"name":"sub","nativeSrc":"6551:3:87","nodeType":"YulIdentifier","src":"6551:3:87"},"nativeSrc":"6551:23:87","nodeType":"YulFunctionCall","src":"6551:23:87"},{"kind":"number","nativeSrc":"6576:2:87","nodeType":"YulLiteral","src":"6576:2:87","type":"","value":"64"}],"functionName":{"name":"slt","nativeSrc":"6547:3:87","nodeType":"YulIdentifier","src":"6547:3:87"},"nativeSrc":"6547:32:87","nodeType":"YulFunctionCall","src":"6547:32:87"},"nativeSrc":"6544:52:87","nodeType":"YulIf","src":"6544:52:87"},{"nativeSrc":"6605:38:87","nodeType":"YulAssignment","src":"6605:38:87","value":{"arguments":[{"name":"headStart","nativeSrc":"6633:9:87","nodeType":"YulIdentifier","src":"6633:9:87"}],"functionName":{"name":"abi_decode_uint64","nativeSrc":"6615:17:87","nodeType":"YulIdentifier","src":"6615:17:87"},"nativeSrc":"6615:28:87","nodeType":"YulFunctionCall","src":"6615:28:87"},"variableNames":[{"name":"value0","nativeSrc":"6605:6:87","nodeType":"YulIdentifier","src":"6605:6:87"}]},{"nativeSrc":"6652:46:87","nodeType":"YulVariableDeclaration","src":"6652:46:87","value":{"arguments":[{"arguments":[{"name":"headStart","nativeSrc":"6683:9:87","nodeType":"YulIdentifier","src":"6683:9:87"},{"kind":"number","nativeSrc":"6694:2:87","nodeType":"YulLiteral","src":"6694:2:87","type":"","value":"32"}],"functionName":{"name":"add","nativeSrc":"6679:3:87","nodeType":"YulIdentifier","src":"6679:3:87"},"nativeSrc":"6679:18:87","nodeType":"YulFunctionCall","src":"6679:18:87"}],"functionName":{"name":"calldataload","nativeSrc":"6666:12:87","nodeType":"YulIdentifier","src":"6666:12:87"},"nativeSrc":"6666:32:87","nodeType":"YulFunctionCall","src":"6666:32:87"},"variables":[{"name":"offset","nativeSrc":"6656:6:87","nodeType":"YulTypedName","src":"6656:6:87","type":""}]},{"body":{"nativeSrc":"6741:16:87","nodeType":"YulBlock","src":"6741:16:87","statements":[{"expression":{"arguments":[{"kind":"number","nativeSrc":"6750:1:87","nodeType":"YulLiteral","src":"6750:1:87","type":"","value":"0"},{"kind":"number","nativeSrc":"6753:1:87","nodeType":"YulLiteral","src":"6753:1:87","type":"","value":"0"}],"functionName":{"name":"revert","nativeSrc":"6743:6:87","nodeType":"YulIdentifier","src":"6743:6:87"},"nativeSrc":"6743:12:87","nodeType":"YulFunctionCall","src":"6743:12:87"},"nativeSrc":"6743:12:87","nodeType":"YulExpressionStatement","src":"6743:12:87"}]},"condition":{"arguments":[{"name":"offset","nativeSrc":"6713:6:87","nodeType":"YulIdentifier","src":"6713:6:87"},{"kind":"number","nativeSrc":"6721:18:87","nodeType":"YulLiteral","src":"6721:18:87","type":"","value":"0xffffffffffffffff"}],"functionName":{"name":"gt","nativeSrc":"6710:2:87","nodeType":"YulIdentifier","src":"6710:2:87"},"nativeSrc":"6710:30:87","nodeType":"YulFunctionCall","src":"6710:30:87"},"nativeSrc":"6707:50:87","nodeType":"YulIf","src":"6707:50:87"},{"nativeSrc":"6766:84:87","nodeType":"YulVariableDeclaration","src":"6766:84:87","value":{"arguments":[{"arguments":[{"name":"headStart","nativeSrc":"6822:9:87","nodeType":"YulIdentifier","src":"6822:9:87"},{"name":"offset","nativeSrc":"6833:6:87","nodeType":"YulIdentifier","src":"6833:6:87"}],"functionName":{"name":"add","nativeSrc":"6818:3:87","nodeType":"YulIdentifier","src":"6818:3:87"},"nativeSrc":"6818:22:87","nodeType":"YulFunctionCall","src":"6818:22:87"},{"name":"dataEnd","nativeSrc":"6842:7:87","nodeType":"YulIdentifier","src":"6842:7:87"}],"functionName":{"name":"abi_decode_bytes_calldata","nativeSrc":"6792:25:87","nodeType":"YulIdentifier","src":"6792:25:87"},"nativeSrc":"6792:58:87","nodeType":"YulFunctionCall","src":"6792:58:87"},"variables":[{"name":"value1_1","nativeSrc":"6770:8:87","nodeType":"YulTypedName","src":"6770:8:87","type":""},{"name":"value2_1","nativeSrc":"6780:8:87","nodeType":"YulTypedName","src":"6780:8:87","type":""}]},{"nativeSrc":"6859:18:87","nodeType":"YulAssignment","src":"6859:18:87","value":{"name":"value1_1","nativeSrc":"6869:8:87","nodeType":"YulIdentifier","src":"6869:8:87"},"variableNames":[{"name":"value1","nativeSrc":"6859:6:87","nodeType":"YulIdentifier","src":"6859:6:87"}]},{"nativeSrc":"6886:18:87","nodeType":"YulAssignment","src":"6886:18:87","value":{"name":"value2_1","nativeSrc":"6896:8:87","nodeType":"YulIdentifier","src":"6896:8:87"},"variableNames":[{"name":"value2","nativeSrc":"6886:6:87","nodeType":"YulIdentifier","src":"6886:6:87"}]}]},"name":"abi_decode_tuple_t_uint64t_string_calldata_ptr","nativeSrc":"6428:482:87","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nativeSrc":"6484:9:87","nodeType":"YulTypedName","src":"6484:9:87","type":""},{"name":"dataEnd","nativeSrc":"6495:7:87","nodeType":"YulTypedName","src":"6495:7:87","type":""}],"returnVariables":[{"name":"value0","nativeSrc":"6507:6:87","nodeType":"YulTypedName","src":"6507:6:87","type":""},{"name":"value1","nativeSrc":"6515:6:87","nodeType":"YulTypedName","src":"6515:6:87","type":""},{"name":"value2","nativeSrc":"6523:6:87","nodeType":"YulTypedName","src":"6523:6:87","type":""}],"src":"6428:482:87"},{"body":{"nativeSrc":"7010:92:87","nodeType":"YulBlock","src":"7010:92:87","statements":[{"nativeSrc":"7020:26:87","nodeType":"YulAssignment","src":"7020:26:87","value":{"arguments":[{"name":"headStart","nativeSrc":"7032:9:87","nodeType":"YulIdentifier","src":"7032:9:87"},{"kind":"number","nativeSrc":"7043:2:87","nodeType":"YulLiteral","src":"7043:2:87","type":"","value":"32"}],"functionName":{"name":"add","nativeSrc":"7028:3:87","nodeType":"YulIdentifier","src":"7028:3:87"},"nativeSrc":"7028:18:87","nodeType":"YulFunctionCall","src":"7028:18:87"},"variableNames":[{"name":"tail","nativeSrc":"7020:4:87","nodeType":"YulIdentifier","src":"7020:4:87"}]},{"expression":{"arguments":[{"name":"headStart","nativeSrc":"7062:9:87","nodeType":"YulIdentifier","src":"7062:9:87"},{"arguments":[{"arguments":[{"name":"value0","nativeSrc":"7087:6:87","nodeType":"YulIdentifier","src":"7087:6:87"}],"functionName":{"name":"iszero","nativeSrc":"7080:6:87","nodeType":"YulIdentifier","src":"7080:6:87"},"nativeSrc":"7080:14:87","nodeType":"YulFunctionCall","src":"7080:14:87"}],"functionName":{"name":"iszero","nativeSrc":"7073:6:87","nodeType":"YulIdentifier","src":"7073:6:87"},"nativeSrc":"7073:22:87","nodeType":"YulFunctionCall","src":"7073:22:87"}],"functionName":{"name":"mstore","nativeSrc":"7055:6:87","nodeType":"YulIdentifier","src":"7055:6:87"},"nativeSrc":"7055:41:87","nodeType":"YulFunctionCall","src":"7055:41:87"},"nativeSrc":"7055:41:87","nodeType":"YulExpressionStatement","src":"7055:41:87"}]},"name":"abi_encode_tuple_t_bool__to_t_bool__fromStack_reversed","nativeSrc":"6915:187:87","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nativeSrc":"6979:9:87","nodeType":"YulTypedName","src":"6979:9:87","type":""},{"name":"value0","nativeSrc":"6990:6:87","nodeType":"YulTypedName","src":"6990:6:87","type":""}],"returnVariables":[{"name":"tail","nativeSrc":"7001:4:87","nodeType":"YulTypedName","src":"7001:4:87","type":""}],"src":"6915:187:87"},{"body":{"nativeSrc":"7192:171:87","nodeType":"YulBlock","src":"7192:171:87","statements":[{"body":{"nativeSrc":"7238:16:87","nodeType":"YulBlock","src":"7238:16:87","statements":[{"expression":{"arguments":[{"kind":"number","nativeSrc":"7247:1:87","nodeType":"YulLiteral","src":"7247:1:87","type":"","value":"0"},{"kind":"number","nativeSrc":"7250:1:87","nodeType":"YulLiteral","src":"7250:1:87","type":"","value":"0"}],"functionName":{"name":"revert","nativeSrc":"7240:6:87","nodeType":"YulIdentifier","src":"7240:6:87"},"nativeSrc":"7240:12:87","nodeType":"YulFunctionCall","src":"7240:12:87"},"nativeSrc":"7240:12:87","nodeType":"YulExpressionStatement","src":"7240:12:87"}]},"condition":{"arguments":[{"arguments":[{"name":"dataEnd","nativeSrc":"7213:7:87","nodeType":"YulIdentifier","src":"7213:7:87"},{"name":"headStart","nativeSrc":"7222:9:87","nodeType":"YulIdentifier","src":"7222:9:87"}],"functionName":{"name":"sub","nativeSrc":"7209:3:87","nodeType":"YulIdentifier","src":"7209:3:87"},"nativeSrc":"7209:23:87","nodeType":"YulFunctionCall","src":"7209:23:87"},{"kind":"number","nativeSrc":"7234:2:87","nodeType":"YulLiteral","src":"7234:2:87","type":"","value":"64"}],"functionName":{"name":"slt","nativeSrc":"7205:3:87","nodeType":"YulIdentifier","src":"7205:3:87"},"nativeSrc":"7205:32:87","nodeType":"YulFunctionCall","src":"7205:32:87"},"nativeSrc":"7202:52:87","nodeType":"YulIf","src":"7202:52:87"},{"nativeSrc":"7263:38:87","nodeType":"YulAssignment","src":"7263:38:87","value":{"arguments":[{"name":"headStart","nativeSrc":"7291:9:87","nodeType":"YulIdentifier","src":"7291:9:87"}],"functionName":{"name":"abi_decode_uint64","nativeSrc":"7273:17:87","nodeType":"YulIdentifier","src":"7273:17:87"},"nativeSrc":"7273:28:87","nodeType":"YulFunctionCall","src":"7273:28:87"},"variableNames":[{"name":"value0","nativeSrc":"7263:6:87","nodeType":"YulIdentifier","src":"7263:6:87"}]},{"nativeSrc":"7310:47:87","nodeType":"YulAssignment","src":"7310:47:87","value":{"arguments":[{"arguments":[{"name":"headStart","nativeSrc":"7342:9:87","nodeType":"YulIdentifier","src":"7342:9:87"},{"kind":"number","nativeSrc":"7353:2:87","nodeType":"YulLiteral","src":"7353:2:87","type":"","value":"32"}],"functionName":{"name":"add","nativeSrc":"7338:3:87","nodeType":"YulIdentifier","src":"7338:3:87"},"nativeSrc":"7338:18:87","nodeType":"YulFunctionCall","src":"7338:18:87"}],"functionName":{"name":"abi_decode_uint32","nativeSrc":"7320:17:87","nodeType":"YulIdentifier","src":"7320:17:87"},"nativeSrc":"7320:37:87","nodeType":"YulFunctionCall","src":"7320:37:87"},"variableNames":[{"name":"value1","nativeSrc":"7310:6:87","nodeType":"YulIdentifier","src":"7310:6:87"}]}]},"name":"abi_decode_tuple_t_uint64t_uint32","nativeSrc":"7107:256:87","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nativeSrc":"7150:9:87","nodeType":"YulTypedName","src":"7150:9:87","type":""},{"name":"dataEnd","nativeSrc":"7161:7:87","nodeType":"YulTypedName","src":"7161:7:87","type":""}],"returnVariables":[{"name":"value0","nativeSrc":"7173:6:87","nodeType":"YulTypedName","src":"7173:6:87","type":""},{"name":"value1","nativeSrc":"7181:6:87","nodeType":"YulTypedName","src":"7181:6:87","type":""}],"src":"7107:256:87"},{"body":{"nativeSrc":"7491:562:87","nodeType":"YulBlock","src":"7491:562:87","statements":[{"body":{"nativeSrc":"7537:16:87","nodeType":"YulBlock","src":"7537:16:87","statements":[{"expression":{"arguments":[{"kind":"number","nativeSrc":"7546:1:87","nodeType":"YulLiteral","src":"7546:1:87","type":"","value":"0"},{"kind":"number","nativeSrc":"7549:1:87","nodeType":"YulLiteral","src":"7549:1:87","type":"","value":"0"}],"functionName":{"name":"revert","nativeSrc":"7539:6:87","nodeType":"YulIdentifier","src":"7539:6:87"},"nativeSrc":"7539:12:87","nodeType":"YulFunctionCall","src":"7539:12:87"},"nativeSrc":"7539:12:87","nodeType":"YulExpressionStatement","src":"7539:12:87"}]},"condition":{"arguments":[{"arguments":[{"name":"dataEnd","nativeSrc":"7512:7:87","nodeType":"YulIdentifier","src":"7512:7:87"},{"name":"headStart","nativeSrc":"7521:9:87","nodeType":"YulIdentifier","src":"7521:9:87"}],"functionName":{"name":"sub","nativeSrc":"7508:3:87","nodeType":"YulIdentifier","src":"7508:3:87"},"nativeSrc":"7508:23:87","nodeType":"YulFunctionCall","src":"7508:23:87"},{"kind":"number","nativeSrc":"7533:2:87","nodeType":"YulLiteral","src":"7533:2:87","type":"","value":"96"}],"functionName":{"name":"slt","nativeSrc":"7504:3:87","nodeType":"YulIdentifier","src":"7504:3:87"},"nativeSrc":"7504:32:87","nodeType":"YulFunctionCall","src":"7504:32:87"},"nativeSrc":"7501:52:87","nodeType":"YulIf","src":"7501:52:87"},{"nativeSrc":"7562:36:87","nodeType":"YulVariableDeclaration","src":"7562:36:87","value":{"arguments":[{"name":"headStart","nativeSrc":"7588:9:87","nodeType":"YulIdentifier","src":"7588:9:87"}],"functionName":{"name":"calldataload","nativeSrc":"7575:12:87","nodeType":"YulIdentifier","src":"7575:12:87"},"nativeSrc":"7575:23:87","nodeType":"YulFunctionCall","src":"7575:23:87"},"variables":[{"name":"value","nativeSrc":"7566:5:87","nodeType":"YulTypedName","src":"7566:5:87","type":""}]},{"expression":{"arguments":[{"name":"value","nativeSrc":"7632:5:87","nodeType":"YulIdentifier","src":"7632:5:87"}],"functionName":{"name":"validator_revert_address","nativeSrc":"7607:24:87","nodeType":"YulIdentifier","src":"7607:24:87"},"nativeSrc":"7607:31:87","nodeType":"YulFunctionCall","src":"7607:31:87"},"nativeSrc":"7607:31:87","nodeType":"YulExpressionStatement","src":"7607:31:87"},{"nativeSrc":"7647:15:87","nodeType":"YulAssignment","src":"7647:15:87","value":{"name":"value","nativeSrc":"7657:5:87","nodeType":"YulIdentifier","src":"7657:5:87"},"variableNames":[{"name":"value0","nativeSrc":"7647:6:87","nodeType":"YulIdentifier","src":"7647:6:87"}]},{"nativeSrc":"7671:47:87","nodeType":"YulVariableDeclaration","src":"7671:47:87","value":{"arguments":[{"arguments":[{"name":"headStart","nativeSrc":"7703:9:87","nodeType":"YulIdentifier","src":"7703:9:87"},{"kind":"number","nativeSrc":"7714:2:87","nodeType":"YulLiteral","src":"7714:2:87","type":"","value":"32"}],"functionName":{"name":"add","nativeSrc":"7699:3:87","nodeType":"YulIdentifier","src":"7699:3:87"},"nativeSrc":"7699:18:87","nodeType":"YulFunctionCall","src":"7699:18:87"}],"functionName":{"name":"calldataload","nativeSrc":"7686:12:87","nodeType":"YulIdentifier","src":"7686:12:87"},"nativeSrc":"7686:32:87","nodeType":"YulFunctionCall","src":"7686:32:87"},"variables":[{"name":"value_1","nativeSrc":"7675:7:87","nodeType":"YulTypedName","src":"7675:7:87","type":""}]},{"expression":{"arguments":[{"name":"value_1","nativeSrc":"7752:7:87","nodeType":"YulIdentifier","src":"7752:7:87"}],"functionName":{"name":"validator_revert_address","nativeSrc":"7727:24:87","nodeType":"YulIdentifier","src":"7727:24:87"},"nativeSrc":"7727:33:87","nodeType":"YulFunctionCall","src":"7727:33:87"},"nativeSrc":"7727:33:87","nodeType":"YulExpressionStatement","src":"7727:33:87"},{"nativeSrc":"7769:17:87","nodeType":"YulAssignment","src":"7769:17:87","value":{"name":"value_1","nativeSrc":"7779:7:87","nodeType":"YulIdentifier","src":"7779:7:87"},"variableNames":[{"name":"value1","nativeSrc":"7769:6:87","nodeType":"YulIdentifier","src":"7769:6:87"}]},{"nativeSrc":"7795:46:87","nodeType":"YulVariableDeclaration","src":"7795:46:87","value":{"arguments":[{"arguments":[{"name":"headStart","nativeSrc":"7826:9:87","nodeType":"YulIdentifier","src":"7826:9:87"},{"kind":"number","nativeSrc":"7837:2:87","nodeType":"YulLiteral","src":"7837:2:87","type":"","value":"64"}],"functionName":{"name":"add","nativeSrc":"7822:3:87","nodeType":"YulIdentifier","src":"7822:3:87"},"nativeSrc":"7822:18:87","nodeType":"YulFunctionCall","src":"7822:18:87"}],"functionName":{"name":"calldataload","nativeSrc":"7809:12:87","nodeType":"YulIdentifier","src":"7809:12:87"},"nativeSrc":"7809:32:87","nodeType":"YulFunctionCall","src":"7809:32:87"},"variables":[{"name":"offset","nativeSrc":"7799:6:87","nodeType":"YulTypedName","src":"7799:6:87","type":""}]},{"body":{"nativeSrc":"7884:16:87","nodeType":"YulBlock","src":"7884:16:87","statements":[{"expression":{"arguments":[{"kind":"number","nativeSrc":"7893:1:87","nodeType":"YulLiteral","src":"7893:1:87","type":"","value":"0"},{"kind":"number","nativeSrc":"7896:1:87","nodeType":"YulLiteral","src":"7896:1:87","type":"","value":"0"}],"functionName":{"name":"revert","nativeSrc":"7886:6:87","nodeType":"YulIdentifier","src":"7886:6:87"},"nativeSrc":"7886:12:87","nodeType":"YulFunctionCall","src":"7886:12:87"},"nativeSrc":"7886:12:87","nodeType":"YulExpressionStatement","src":"7886:12:87"}]},"condition":{"arguments":[{"name":"offset","nativeSrc":"7856:6:87","nodeType":"YulIdentifier","src":"7856:6:87"},{"kind":"number","nativeSrc":"7864:18:87","nodeType":"YulLiteral","src":"7864:18:87","type":"","value":"0xffffffffffffffff"}],"functionName":{"name":"gt","nativeSrc":"7853:2:87","nodeType":"YulIdentifier","src":"7853:2:87"},"nativeSrc":"7853:30:87","nodeType":"YulFunctionCall","src":"7853:30:87"},"nativeSrc":"7850:50:87","nodeType":"YulIf","src":"7850:50:87"},{"nativeSrc":"7909:84:87","nodeType":"YulVariableDeclaration","src":"7909:84:87","value":{"arguments":[{"arguments":[{"name":"headStart","nativeSrc":"7965:9:87","nodeType":"YulIdentifier","src":"7965:9:87"},{"name":"offset","nativeSrc":"7976:6:87","nodeType":"YulIdentifier","src":"7976:6:87"}],"functionName":{"name":"add","nativeSrc":"7961:3:87","nodeType":"YulIdentifier","src":"7961:3:87"},"nativeSrc":"7961:22:87","nodeType":"YulFunctionCall","src":"7961:22:87"},{"name":"dataEnd","nativeSrc":"7985:7:87","nodeType":"YulIdentifier","src":"7985:7:87"}],"functionName":{"name":"abi_decode_bytes_calldata","nativeSrc":"7935:25:87","nodeType":"YulIdentifier","src":"7935:25:87"},"nativeSrc":"7935:58:87","nodeType":"YulFunctionCall","src":"7935:58:87"},"variables":[{"name":"value2_1","nativeSrc":"7913:8:87","nodeType":"YulTypedName","src":"7913:8:87","type":""},{"name":"value3_1","nativeSrc":"7923:8:87","nodeType":"YulTypedName","src":"7923:8:87","type":""}]},{"nativeSrc":"8002:18:87","nodeType":"YulAssignment","src":"8002:18:87","value":{"name":"value2_1","nativeSrc":"8012:8:87","nodeType":"YulIdentifier","src":"8012:8:87"},"variableNames":[{"name":"value2","nativeSrc":"8002:6:87","nodeType":"YulIdentifier","src":"8002:6:87"}]},{"nativeSrc":"8029:18:87","nodeType":"YulAssignment","src":"8029:18:87","value":{"name":"value3_1","nativeSrc":"8039:8:87","nodeType":"YulIdentifier","src":"8039:8:87"},"variableNames":[{"name":"value3","nativeSrc":"8029:6:87","nodeType":"YulIdentifier","src":"8029:6:87"}]}]},"name":"abi_decode_tuple_t_addresst_addresst_bytes_calldata_ptr","nativeSrc":"7368:685:87","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nativeSrc":"7433:9:87","nodeType":"YulTypedName","src":"7433:9:87","type":""},{"name":"dataEnd","nativeSrc":"7444:7:87","nodeType":"YulTypedName","src":"7444:7:87","type":""}],"returnVariables":[{"name":"value0","nativeSrc":"7456:6:87","nodeType":"YulTypedName","src":"7456:6:87","type":""},{"name":"value1","nativeSrc":"7464:6:87","nodeType":"YulTypedName","src":"7464:6:87","type":""},{"name":"value2","nativeSrc":"7472:6:87","nodeType":"YulTypedName","src":"7472:6:87","type":""},{"name":"value3","nativeSrc":"7480:6:87","nodeType":"YulTypedName","src":"7480:6:87","type":""}],"src":"7368:685:87"},{"body":{"nativeSrc":"8159:76:87","nodeType":"YulBlock","src":"8159:76:87","statements":[{"nativeSrc":"8169:26:87","nodeType":"YulAssignment","src":"8169:26:87","value":{"arguments":[{"name":"headStart","nativeSrc":"8181:9:87","nodeType":"YulIdentifier","src":"8181:9:87"},{"kind":"number","nativeSrc":"8192:2:87","nodeType":"YulLiteral","src":"8192:2:87","type":"","value":"32"}],"functionName":{"name":"add","nativeSrc":"8177:3:87","nodeType":"YulIdentifier","src":"8177:3:87"},"nativeSrc":"8177:18:87","nodeType":"YulFunctionCall","src":"8177:18:87"},"variableNames":[{"name":"tail","nativeSrc":"8169:4:87","nodeType":"YulIdentifier","src":"8169:4:87"}]},{"expression":{"arguments":[{"name":"headStart","nativeSrc":"8211:9:87","nodeType":"YulIdentifier","src":"8211:9:87"},{"name":"value0","nativeSrc":"8222:6:87","nodeType":"YulIdentifier","src":"8222:6:87"}],"functionName":{"name":"mstore","nativeSrc":"8204:6:87","nodeType":"YulIdentifier","src":"8204:6:87"},"nativeSrc":"8204:25:87","nodeType":"YulFunctionCall","src":"8204:25:87"},"nativeSrc":"8204:25:87","nodeType":"YulExpressionStatement","src":"8204:25:87"}]},"name":"abi_encode_tuple_t_bytes32__to_t_bytes32__fromStack_reversed","nativeSrc":"8058:177:87","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nativeSrc":"8128:9:87","nodeType":"YulTypedName","src":"8128:9:87","type":""},{"name":"value0","nativeSrc":"8139:6:87","nodeType":"YulTypedName","src":"8139:6:87","type":""}],"returnVariables":[{"name":"tail","nativeSrc":"8150:4:87","nodeType":"YulTypedName","src":"8150:4:87","type":""}],"src":"8058:177:87"},{"body":{"nativeSrc":"8356:331:87","nodeType":"YulBlock","src":"8356:331:87","statements":[{"body":{"nativeSrc":"8402:16:87","nodeType":"YulBlock","src":"8402:16:87","statements":[{"expression":{"arguments":[{"kind":"number","nativeSrc":"8411:1:87","nodeType":"YulLiteral","src":"8411:1:87","type":"","value":"0"},{"kind":"number","nativeSrc":"8414:1:87","nodeType":"YulLiteral","src":"8414:1:87","type":"","value":"0"}],"functionName":{"name":"revert","nativeSrc":"8404:6:87","nodeType":"YulIdentifier","src":"8404:6:87"},"nativeSrc":"8404:12:87","nodeType":"YulFunctionCall","src":"8404:12:87"},"nativeSrc":"8404:12:87","nodeType":"YulExpressionStatement","src":"8404:12:87"}]},"condition":{"arguments":[{"arguments":[{"name":"dataEnd","nativeSrc":"8377:7:87","nodeType":"YulIdentifier","src":"8377:7:87"},{"name":"headStart","nativeSrc":"8386:9:87","nodeType":"YulIdentifier","src":"8386:9:87"}],"functionName":{"name":"sub","nativeSrc":"8373:3:87","nodeType":"YulIdentifier","src":"8373:3:87"},"nativeSrc":"8373:23:87","nodeType":"YulFunctionCall","src":"8373:23:87"},{"kind":"number","nativeSrc":"8398:2:87","nodeType":"YulLiteral","src":"8398:2:87","type":"","value":"32"}],"functionName":{"name":"slt","nativeSrc":"8369:3:87","nodeType":"YulIdentifier","src":"8369:3:87"},"nativeSrc":"8369:32:87","nodeType":"YulFunctionCall","src":"8369:32:87"},"nativeSrc":"8366:52:87","nodeType":"YulIf","src":"8366:52:87"},{"nativeSrc":"8427:37:87","nodeType":"YulVariableDeclaration","src":"8427:37:87","value":{"arguments":[{"name":"headStart","nativeSrc":"8454:9:87","nodeType":"YulIdentifier","src":"8454:9:87"}],"functionName":{"name":"calldataload","nativeSrc":"8441:12:87","nodeType":"YulIdentifier","src":"8441:12:87"},"nativeSrc":"8441:23:87","nodeType":"YulFunctionCall","src":"8441:23:87"},"variables":[{"name":"offset","nativeSrc":"8431:6:87","nodeType":"YulTypedName","src":"8431:6:87","type":""}]},{"body":{"nativeSrc":"8507:16:87","nodeType":"YulBlock","src":"8507:16:87","statements":[{"expression":{"arguments":[{"kind":"number","nativeSrc":"8516:1:87","nodeType":"YulLiteral","src":"8516:1:87","type":"","value":"0"},{"kind":"number","nativeSrc":"8519:1:87","nodeType":"YulLiteral","src":"8519:1:87","type":"","value":"0"}],"functionName":{"name":"revert","nativeSrc":"8509:6:87","nodeType":"YulIdentifier","src":"8509:6:87"},"nativeSrc":"8509:12:87","nodeType":"YulFunctionCall","src":"8509:12:87"},"nativeSrc":"8509:12:87","nodeType":"YulExpressionStatement","src":"8509:12:87"}]},"condition":{"arguments":[{"name":"offset","nativeSrc":"8479:6:87","nodeType":"YulIdentifier","src":"8479:6:87"},{"kind":"number","nativeSrc":"8487:18:87","nodeType":"YulLiteral","src":"8487:18:87","type":"","value":"0xffffffffffffffff"}],"functionName":{"name":"gt","nativeSrc":"8476:2:87","nodeType":"YulIdentifier","src":"8476:2:87"},"nativeSrc":"8476:30:87","nodeType":"YulFunctionCall","src":"8476:30:87"},"nativeSrc":"8473:50:87","nodeType":"YulIf","src":"8473:50:87"},{"nativeSrc":"8532:95:87","nodeType":"YulVariableDeclaration","src":"8532:95:87","value":{"arguments":[{"arguments":[{"name":"headStart","nativeSrc":"8599:9:87","nodeType":"YulIdentifier","src":"8599:9:87"},{"name":"offset","nativeSrc":"8610:6:87","nodeType":"YulIdentifier","src":"8610:6:87"}],"functionName":{"name":"add","nativeSrc":"8595:3:87","nodeType":"YulIdentifier","src":"8595:3:87"},"nativeSrc":"8595:22:87","nodeType":"YulFunctionCall","src":"8595:22:87"},{"name":"dataEnd","nativeSrc":"8619:7:87","nodeType":"YulIdentifier","src":"8619:7:87"}],"functionName":{"name":"abi_decode_array_bytes4_dyn_calldata","nativeSrc":"8558:36:87","nodeType":"YulIdentifier","src":"8558:36:87"},"nativeSrc":"8558:69:87","nodeType":"YulFunctionCall","src":"8558:69:87"},"variables":[{"name":"value0_1","nativeSrc":"8536:8:87","nodeType":"YulTypedName","src":"8536:8:87","type":""},{"name":"value1_1","nativeSrc":"8546:8:87","nodeType":"YulTypedName","src":"8546:8:87","type":""}]},{"nativeSrc":"8636:18:87","nodeType":"YulAssignment","src":"8636:18:87","value":{"name":"value0_1","nativeSrc":"8646:8:87","nodeType":"YulIdentifier","src":"8646:8:87"},"variableNames":[{"name":"value0","nativeSrc":"8636:6:87","nodeType":"YulIdentifier","src":"8636:6:87"}]},{"nativeSrc":"8663:18:87","nodeType":"YulAssignment","src":"8663:18:87","value":{"name":"value1_1","nativeSrc":"8673:8:87","nodeType":"YulIdentifier","src":"8673:8:87"},"variableNames":[{"name":"value1","nativeSrc":"8663:6:87","nodeType":"YulIdentifier","src":"8663:6:87"}]}]},"name":"abi_decode_tuple_t_array$_t_bytes_calldata_ptr_$dyn_calldata_ptr","nativeSrc":"8240:447:87","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nativeSrc":"8314:9:87","nodeType":"YulTypedName","src":"8314:9:87","type":""},{"name":"dataEnd","nativeSrc":"8325:7:87","nodeType":"YulTypedName","src":"8325:7:87","type":""}],"returnVariables":[{"name":"value0","nativeSrc":"8337:6:87","nodeType":"YulTypedName","src":"8337:6:87","type":""},{"name":"value1","nativeSrc":"8345:6:87","nodeType":"YulTypedName","src":"8345:6:87","type":""}],"src":"8240:447:87"},{"body":{"nativeSrc":"8861:847:87","nodeType":"YulBlock","src":"8861:847:87","statements":[{"nativeSrc":"8871:32:87","nodeType":"YulVariableDeclaration","src":"8871:32:87","value":{"arguments":[{"name":"headStart","nativeSrc":"8889:9:87","nodeType":"YulIdentifier","src":"8889:9:87"},{"kind":"number","nativeSrc":"8900:2:87","nodeType":"YulLiteral","src":"8900:2:87","type":"","value":"32"}],"functionName":{"name":"add","nativeSrc":"8885:3:87","nodeType":"YulIdentifier","src":"8885:3:87"},"nativeSrc":"8885:18:87","nodeType":"YulFunctionCall","src":"8885:18:87"},"variables":[{"name":"tail_1","nativeSrc":"8875:6:87","nodeType":"YulTypedName","src":"8875:6:87","type":""}]},{"expression":{"arguments":[{"name":"headStart","nativeSrc":"8919:9:87","nodeType":"YulIdentifier","src":"8919:9:87"},{"kind":"number","nativeSrc":"8930:2:87","nodeType":"YulLiteral","src":"8930:2:87","type":"","value":"32"}],"functionName":{"name":"mstore","nativeSrc":"8912:6:87","nodeType":"YulIdentifier","src":"8912:6:87"},"nativeSrc":"8912:21:87","nodeType":"YulFunctionCall","src":"8912:21:87"},"nativeSrc":"8912:21:87","nodeType":"YulExpressionStatement","src":"8912:21:87"},{"nativeSrc":"8942:17:87","nodeType":"YulVariableDeclaration","src":"8942:17:87","value":{"name":"tail_1","nativeSrc":"8953:6:87","nodeType":"YulIdentifier","src":"8953:6:87"},"variables":[{"name":"pos","nativeSrc":"8946:3:87","nodeType":"YulTypedName","src":"8946:3:87","type":""}]},{"nativeSrc":"8968:27:87","nodeType":"YulVariableDeclaration","src":"8968:27:87","value":{"arguments":[{"name":"value0","nativeSrc":"8988:6:87","nodeType":"YulIdentifier","src":"8988:6:87"}],"functionName":{"name":"mload","nativeSrc":"8982:5:87","nodeType":"YulIdentifier","src":"8982:5:87"},"nativeSrc":"8982:13:87","nodeType":"YulFunctionCall","src":"8982:13:87"},"variables":[{"name":"length","nativeSrc":"8972:6:87","nodeType":"YulTypedName","src":"8972:6:87","type":""}]},{"expression":{"arguments":[{"name":"tail_1","nativeSrc":"9011:6:87","nodeType":"YulIdentifier","src":"9011:6:87"},{"name":"length","nativeSrc":"9019:6:87","nodeType":"YulIdentifier","src":"9019:6:87"}],"functionName":{"name":"mstore","nativeSrc":"9004:6:87","nodeType":"YulIdentifier","src":"9004:6:87"},"nativeSrc":"9004:22:87","nodeType":"YulFunctionCall","src":"9004:22:87"},"nativeSrc":"9004:22:87","nodeType":"YulExpressionStatement","src":"9004:22:87"},{"nativeSrc":"9035:25:87","nodeType":"YulAssignment","src":"9035:25:87","value":{"arguments":[{"name":"headStart","nativeSrc":"9046:9:87","nodeType":"YulIdentifier","src":"9046:9:87"},{"kind":"number","nativeSrc":"9057:2:87","nodeType":"YulLiteral","src":"9057:2:87","type":"","value":"64"}],"functionName":{"name":"add","nativeSrc":"9042:3:87","nodeType":"YulIdentifier","src":"9042:3:87"},"nativeSrc":"9042:18:87","nodeType":"YulFunctionCall","src":"9042:18:87"},"variableNames":[{"name":"pos","nativeSrc":"9035:3:87","nodeType":"YulIdentifier","src":"9035:3:87"}]},{"nativeSrc":"9069:53:87","nodeType":"YulVariableDeclaration","src":"9069:53:87","value":{"arguments":[{"arguments":[{"name":"headStart","nativeSrc":"9091:9:87","nodeType":"YulIdentifier","src":"9091:9:87"},{"arguments":[{"kind":"number","nativeSrc":"9106:1:87","nodeType":"YulLiteral","src":"9106:1:87","type":"","value":"5"},{"name":"length","nativeSrc":"9109:6:87","nodeType":"YulIdentifier","src":"9109:6:87"}],"functionName":{"name":"shl","nativeSrc":"9102:3:87","nodeType":"YulIdentifier","src":"9102:3:87"},"nativeSrc":"9102:14:87","nodeType":"YulFunctionCall","src":"9102:14:87"}],"functionName":{"name":"add","nativeSrc":"9087:3:87","nodeType":"YulIdentifier","src":"9087:3:87"},"nativeSrc":"9087:30:87","nodeType":"YulFunctionCall","src":"9087:30:87"},{"kind":"number","nativeSrc":"9119:2:87","nodeType":"YulLiteral","src":"9119:2:87","type":"","value":"64"}],"functionName":{"name":"add","nativeSrc":"9083:3:87","nodeType":"YulIdentifier","src":"9083:3:87"},"nativeSrc":"9083:39:87","nodeType":"YulFunctionCall","src":"9083:39:87"},"variables":[{"name":"tail_2","nativeSrc":"9073:6:87","nodeType":"YulTypedName","src":"9073:6:87","type":""}]},{"nativeSrc":"9131:29:87","nodeType":"YulVariableDeclaration","src":"9131:29:87","value":{"arguments":[{"name":"value0","nativeSrc":"9149:6:87","nodeType":"YulIdentifier","src":"9149:6:87"},{"kind":"number","nativeSrc":"9157:2:87","nodeType":"YulLiteral","src":"9157:2:87","type":"","value":"32"}],"functionName":{"name":"add","nativeSrc":"9145:3:87","nodeType":"YulIdentifier","src":"9145:3:87"},"nativeSrc":"9145:15:87","nodeType":"YulFunctionCall","src":"9145:15:87"},"variables":[{"name":"srcPtr","nativeSrc":"9135:6:87","nodeType":"YulTypedName","src":"9135:6:87","type":""}]},{"nativeSrc":"9169:10:87","nodeType":"YulVariableDeclaration","src":"9169:10:87","value":{"kind":"number","nativeSrc":"9178:1:87","nodeType":"YulLiteral","src":"9178:1:87","type":"","value":"0"},"variables":[{"name":"i","nativeSrc":"9173:1:87","nodeType":"YulTypedName","src":"9173:1:87","type":""}]},{"body":{"nativeSrc":"9237:442:87","nodeType":"YulBlock","src":"9237:442:87","statements":[{"expression":{"arguments":[{"name":"pos","nativeSrc":"9258:3:87","nodeType":"YulIdentifier","src":"9258:3:87"},{"arguments":[{"arguments":[{"name":"tail_2","nativeSrc":"9271:6:87","nodeType":"YulIdentifier","src":"9271:6:87"},{"name":"headStart","nativeSrc":"9279:9:87","nodeType":"YulIdentifier","src":"9279:9:87"}],"functionName":{"name":"sub","nativeSrc":"9267:3:87","nodeType":"YulIdentifier","src":"9267:3:87"},"nativeSrc":"9267:22:87","nodeType":"YulFunctionCall","src":"9267:22:87"},{"arguments":[{"kind":"number","nativeSrc":"9295:2:87","nodeType":"YulLiteral","src":"9295:2:87","type":"","value":"63"}],"functionName":{"name":"not","nativeSrc":"9291:3:87","nodeType":"YulIdentifier","src":"9291:3:87"},"nativeSrc":"9291:7:87","nodeType":"YulFunctionCall","src":"9291:7:87"}],"functionName":{"name":"add","nativeSrc":"9263:3:87","nodeType":"YulIdentifier","src":"9263:3:87"},"nativeSrc":"9263:36:87","nodeType":"YulFunctionCall","src":"9263:36:87"}],"functionName":{"name":"mstore","nativeSrc":"9251:6:87","nodeType":"YulIdentifier","src":"9251:6:87"},"nativeSrc":"9251:49:87","nodeType":"YulFunctionCall","src":"9251:49:87"},"nativeSrc":"9251:49:87","nodeType":"YulExpressionStatement","src":"9251:49:87"},{"nativeSrc":"9313:23:87","nodeType":"YulVariableDeclaration","src":"9313:23:87","value":{"arguments":[{"name":"srcPtr","nativeSrc":"9329:6:87","nodeType":"YulIdentifier","src":"9329:6:87"}],"functionName":{"name":"mload","nativeSrc":"9323:5:87","nodeType":"YulIdentifier","src":"9323:5:87"},"nativeSrc":"9323:13:87","nodeType":"YulFunctionCall","src":"9323:13:87"},"variables":[{"name":"_1","nativeSrc":"9317:2:87","nodeType":"YulTypedName","src":"9317:2:87","type":""}]},{"nativeSrc":"9349:25:87","nodeType":"YulVariableDeclaration","src":"9349:25:87","value":{"arguments":[{"name":"_1","nativeSrc":"9371:2:87","nodeType":"YulIdentifier","src":"9371:2:87"}],"functionName":{"name":"mload","nativeSrc":"9365:5:87","nodeType":"YulIdentifier","src":"9365:5:87"},"nativeSrc":"9365:9:87","nodeType":"YulFunctionCall","src":"9365:9:87"},"variables":[{"name":"length_1","nativeSrc":"9353:8:87","nodeType":"YulTypedName","src":"9353:8:87","type":""}]},{"expression":{"arguments":[{"name":"tail_2","nativeSrc":"9394:6:87","nodeType":"YulIdentifier","src":"9394:6:87"},{"name":"length_1","nativeSrc":"9402:8:87","nodeType":"YulIdentifier","src":"9402:8:87"}],"functionName":{"name":"mstore","nativeSrc":"9387:6:87","nodeType":"YulIdentifier","src":"9387:6:87"},"nativeSrc":"9387:24:87","nodeType":"YulFunctionCall","src":"9387:24:87"},"nativeSrc":"9387:24:87","nodeType":"YulExpressionStatement","src":"9387:24:87"},{"expression":{"arguments":[{"arguments":[{"name":"tail_2","nativeSrc":"9434:6:87","nodeType":"YulIdentifier","src":"9434:6:87"},{"kind":"number","nativeSrc":"9442:2:87","nodeType":"YulLiteral","src":"9442:2:87","type":"","value":"32"}],"functionName":{"name":"add","nativeSrc":"9430:3:87","nodeType":"YulIdentifier","src":"9430:3:87"},"nativeSrc":"9430:15:87","nodeType":"YulFunctionCall","src":"9430:15:87"},{"arguments":[{"name":"_1","nativeSrc":"9451:2:87","nodeType":"YulIdentifier","src":"9451:2:87"},{"kind":"number","nativeSrc":"9455:2:87","nodeType":"YulLiteral","src":"9455:2:87","type":"","value":"32"}],"functionName":{"name":"add","nativeSrc":"9447:3:87","nodeType":"YulIdentifier","src":"9447:3:87"},"nativeSrc":"9447:11:87","nodeType":"YulFunctionCall","src":"9447:11:87"},{"name":"length_1","nativeSrc":"9460:8:87","nodeType":"YulIdentifier","src":"9460:8:87"}],"functionName":{"name":"mcopy","nativeSrc":"9424:5:87","nodeType":"YulIdentifier","src":"9424:5:87"},"nativeSrc":"9424:45:87","nodeType":"YulFunctionCall","src":"9424:45:87"},"nativeSrc":"9424:45:87","nodeType":"YulExpressionStatement","src":"9424:45:87"},{"expression":{"arguments":[{"arguments":[{"arguments":[{"name":"tail_2","nativeSrc":"9497:6:87","nodeType":"YulIdentifier","src":"9497:6:87"},{"name":"length_1","nativeSrc":"9505:8:87","nodeType":"YulIdentifier","src":"9505:8:87"}],"functionName":{"name":"add","nativeSrc":"9493:3:87","nodeType":"YulIdentifier","src":"9493:3:87"},"nativeSrc":"9493:21:87","nodeType":"YulFunctionCall","src":"9493:21:87"},{"kind":"number","nativeSrc":"9516:2:87","nodeType":"YulLiteral","src":"9516:2:87","type":"","value":"32"}],"functionName":{"name":"add","nativeSrc":"9489:3:87","nodeType":"YulIdentifier","src":"9489:3:87"},"nativeSrc":"9489:30:87","nodeType":"YulFunctionCall","src":"9489:30:87"},{"kind":"number","nativeSrc":"9521:1:87","nodeType":"YulLiteral","src":"9521:1:87","type":"","value":"0"}],"functionName":{"name":"mstore","nativeSrc":"9482:6:87","nodeType":"YulIdentifier","src":"9482:6:87"},"nativeSrc":"9482:41:87","nodeType":"YulFunctionCall","src":"9482:41:87"},"nativeSrc":"9482:41:87","nodeType":"YulExpressionStatement","src":"9482:41:87"},{"nativeSrc":"9536:63:87","nodeType":"YulAssignment","src":"9536:63:87","value":{"arguments":[{"arguments":[{"name":"tail_2","nativeSrc":"9554:6:87","nodeType":"YulIdentifier","src":"9554:6:87"},{"arguments":[{"arguments":[{"name":"length_1","nativeSrc":"9570:8:87","nodeType":"YulIdentifier","src":"9570:8:87"},{"kind":"number","nativeSrc":"9580:2:87","nodeType":"YulLiteral","src":"9580:2:87","type":"","value":"31"}],"functionName":{"name":"add","nativeSrc":"9566:3:87","nodeType":"YulIdentifier","src":"9566:3:87"},"nativeSrc":"9566:17:87","nodeType":"YulFunctionCall","src":"9566:17:87"},{"arguments":[{"kind":"number","nativeSrc":"9589:2:87","nodeType":"YulLiteral","src":"9589:2:87","type":"","value":"31"}],"functionName":{"name":"not","nativeSrc":"9585:3:87","nodeType":"YulIdentifier","src":"9585:3:87"},"nativeSrc":"9585:7:87","nodeType":"YulFunctionCall","src":"9585:7:87"}],"functionName":{"name":"and","nativeSrc":"9562:3:87","nodeType":"YulIdentifier","src":"9562:3:87"},"nativeSrc":"9562:31:87","nodeType":"YulFunctionCall","src":"9562:31:87"}],"functionName":{"name":"add","nativeSrc":"9550:3:87","nodeType":"YulIdentifier","src":"9550:3:87"},"nativeSrc":"9550:44:87","nodeType":"YulFunctionCall","src":"9550:44:87"},{"kind":"number","nativeSrc":"9596:2:87","nodeType":"YulLiteral","src":"9596:2:87","type":"","value":"32"}],"functionName":{"name":"add","nativeSrc":"9546:3:87","nodeType":"YulIdentifier","src":"9546:3:87"},"nativeSrc":"9546:53:87","nodeType":"YulFunctionCall","src":"9546:53:87"},"variableNames":[{"name":"tail_2","nativeSrc":"9536:6:87","nodeType":"YulIdentifier","src":"9536:6:87"}]},{"nativeSrc":"9612:25:87","nodeType":"YulAssignment","src":"9612:25:87","value":{"arguments":[{"name":"srcPtr","nativeSrc":"9626:6:87","nodeType":"YulIdentifier","src":"9626:6:87"},{"kind":"number","nativeSrc":"9634:2:87","nodeType":"YulLiteral","src":"9634:2:87","type":"","value":"32"}],"functionName":{"name":"add","nativeSrc":"9622:3:87","nodeType":"YulIdentifier","src":"9622:3:87"},"nativeSrc":"9622:15:87","nodeType":"YulFunctionCall","src":"9622:15:87"},"variableNames":[{"name":"srcPtr","nativeSrc":"9612:6:87","nodeType":"YulIdentifier","src":"9612:6:87"}]},{"nativeSrc":"9650:19:87","nodeType":"YulAssignment","src":"9650:19:87","value":{"arguments":[{"name":"pos","nativeSrc":"9661:3:87","nodeType":"YulIdentifier","src":"9661:3:87"},{"kind":"number","nativeSrc":"9666:2:87","nodeType":"YulLiteral","src":"9666:2:87","type":"","value":"32"}],"functionName":{"name":"add","nativeSrc":"9657:3:87","nodeType":"YulIdentifier","src":"9657:3:87"},"nativeSrc":"9657:12:87","nodeType":"YulFunctionCall","src":"9657:12:87"},"variableNames":[{"name":"pos","nativeSrc":"9650:3:87","nodeType":"YulIdentifier","src":"9650:3:87"}]}]},"condition":{"arguments":[{"name":"i","nativeSrc":"9199:1:87","nodeType":"YulIdentifier","src":"9199:1:87"},{"name":"length","nativeSrc":"9202:6:87","nodeType":"YulIdentifier","src":"9202:6:87"}],"functionName":{"name":"lt","nativeSrc":"9196:2:87","nodeType":"YulIdentifier","src":"9196:2:87"},"nativeSrc":"9196:13:87","nodeType":"YulFunctionCall","src":"9196:13:87"},"nativeSrc":"9188:491:87","nodeType":"YulForLoop","post":{"nativeSrc":"9210:18:87","nodeType":"YulBlock","src":"9210:18:87","statements":[{"nativeSrc":"9212:14:87","nodeType":"YulAssignment","src":"9212:14:87","value":{"arguments":[{"name":"i","nativeSrc":"9221:1:87","nodeType":"YulIdentifier","src":"9221:1:87"},{"kind":"number","nativeSrc":"9224:1:87","nodeType":"YulLiteral","src":"9224:1:87","type":"","value":"1"}],"functionName":{"name":"add","nativeSrc":"9217:3:87","nodeType":"YulIdentifier","src":"9217:3:87"},"nativeSrc":"9217:9:87","nodeType":"YulFunctionCall","src":"9217:9:87"},"variableNames":[{"name":"i","nativeSrc":"9212:1:87","nodeType":"YulIdentifier","src":"9212:1:87"}]}]},"pre":{"nativeSrc":"9192:3:87","nodeType":"YulBlock","src":"9192:3:87","statements":[]},"src":"9188:491:87"},{"nativeSrc":"9688:14:87","nodeType":"YulAssignment","src":"9688:14:87","value":{"name":"tail_2","nativeSrc":"9696:6:87","nodeType":"YulIdentifier","src":"9696:6:87"},"variableNames":[{"name":"tail","nativeSrc":"9688:4:87","nodeType":"YulIdentifier","src":"9688:4:87"}]}]},"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","nativeSrc":"8692:1016:87","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nativeSrc":"8830:9:87","nodeType":"YulTypedName","src":"8830:9:87","type":""},{"name":"value0","nativeSrc":"8841:6:87","nodeType":"YulTypedName","src":"8841:6:87","type":""}],"returnVariables":[{"name":"tail","nativeSrc":"8852:4:87","nodeType":"YulTypedName","src":"8852:4:87","type":""}],"src":"8692:1016:87"},{"body":{"nativeSrc":"9816:424:87","nodeType":"YulBlock","src":"9816:424:87","statements":[{"body":{"nativeSrc":"9862:16:87","nodeType":"YulBlock","src":"9862:16:87","statements":[{"expression":{"arguments":[{"kind":"number","nativeSrc":"9871:1:87","nodeType":"YulLiteral","src":"9871:1:87","type":"","value":"0"},{"kind":"number","nativeSrc":"9874:1:87","nodeType":"YulLiteral","src":"9874:1:87","type":"","value":"0"}],"functionName":{"name":"revert","nativeSrc":"9864:6:87","nodeType":"YulIdentifier","src":"9864:6:87"},"nativeSrc":"9864:12:87","nodeType":"YulFunctionCall","src":"9864:12:87"},"nativeSrc":"9864:12:87","nodeType":"YulExpressionStatement","src":"9864:12:87"}]},"condition":{"arguments":[{"arguments":[{"name":"dataEnd","nativeSrc":"9837:7:87","nodeType":"YulIdentifier","src":"9837:7:87"},{"name":"headStart","nativeSrc":"9846:9:87","nodeType":"YulIdentifier","src":"9846:9:87"}],"functionName":{"name":"sub","nativeSrc":"9833:3:87","nodeType":"YulIdentifier","src":"9833:3:87"},"nativeSrc":"9833:23:87","nodeType":"YulFunctionCall","src":"9833:23:87"},{"kind":"number","nativeSrc":"9858:2:87","nodeType":"YulLiteral","src":"9858:2:87","type":"","value":"96"}],"functionName":{"name":"slt","nativeSrc":"9829:3:87","nodeType":"YulIdentifier","src":"9829:3:87"},"nativeSrc":"9829:32:87","nodeType":"YulFunctionCall","src":"9829:32:87"},"nativeSrc":"9826:52:87","nodeType":"YulIf","src":"9826:52:87"},{"nativeSrc":"9887:36:87","nodeType":"YulVariableDeclaration","src":"9887:36:87","value":{"arguments":[{"name":"headStart","nativeSrc":"9913:9:87","nodeType":"YulIdentifier","src":"9913:9:87"}],"functionName":{"name":"calldataload","nativeSrc":"9900:12:87","nodeType":"YulIdentifier","src":"9900:12:87"},"nativeSrc":"9900:23:87","nodeType":"YulFunctionCall","src":"9900:23:87"},"variables":[{"name":"value","nativeSrc":"9891:5:87","nodeType":"YulTypedName","src":"9891:5:87","type":""}]},{"expression":{"arguments":[{"name":"value","nativeSrc":"9957:5:87","nodeType":"YulIdentifier","src":"9957:5:87"}],"functionName":{"name":"validator_revert_address","nativeSrc":"9932:24:87","nodeType":"YulIdentifier","src":"9932:24:87"},"nativeSrc":"9932:31:87","nodeType":"YulFunctionCall","src":"9932:31:87"},"nativeSrc":"9932:31:87","nodeType":"YulExpressionStatement","src":"9932:31:87"},{"nativeSrc":"9972:15:87","nodeType":"YulAssignment","src":"9972:15:87","value":{"name":"value","nativeSrc":"9982:5:87","nodeType":"YulIdentifier","src":"9982:5:87"},"variableNames":[{"name":"value0","nativeSrc":"9972:6:87","nodeType":"YulIdentifier","src":"9972:6:87"}]},{"nativeSrc":"9996:47:87","nodeType":"YulVariableDeclaration","src":"9996:47:87","value":{"arguments":[{"arguments":[{"name":"headStart","nativeSrc":"10028:9:87","nodeType":"YulIdentifier","src":"10028:9:87"},{"kind":"number","nativeSrc":"10039:2:87","nodeType":"YulLiteral","src":"10039:2:87","type":"","value":"32"}],"functionName":{"name":"add","nativeSrc":"10024:3:87","nodeType":"YulIdentifier","src":"10024:3:87"},"nativeSrc":"10024:18:87","nodeType":"YulFunctionCall","src":"10024:18:87"}],"functionName":{"name":"calldataload","nativeSrc":"10011:12:87","nodeType":"YulIdentifier","src":"10011:12:87"},"nativeSrc":"10011:32:87","nodeType":"YulFunctionCall","src":"10011:32:87"},"variables":[{"name":"value_1","nativeSrc":"10000:7:87","nodeType":"YulTypedName","src":"10000:7:87","type":""}]},{"expression":{"arguments":[{"name":"value_1","nativeSrc":"10077:7:87","nodeType":"YulIdentifier","src":"10077:7:87"}],"functionName":{"name":"validator_revert_address","nativeSrc":"10052:24:87","nodeType":"YulIdentifier","src":"10052:24:87"},"nativeSrc":"10052:33:87","nodeType":"YulFunctionCall","src":"10052:33:87"},"nativeSrc":"10052:33:87","nodeType":"YulExpressionStatement","src":"10052:33:87"},{"nativeSrc":"10094:17:87","nodeType":"YulAssignment","src":"10094:17:87","value":{"name":"value_1","nativeSrc":"10104:7:87","nodeType":"YulIdentifier","src":"10104:7:87"},"variableNames":[{"name":"value1","nativeSrc":"10094:6:87","nodeType":"YulIdentifier","src":"10094:6:87"}]},{"nativeSrc":"10120:47:87","nodeType":"YulVariableDeclaration","src":"10120:47:87","value":{"arguments":[{"arguments":[{"name":"headStart","nativeSrc":"10152:9:87","nodeType":"YulIdentifier","src":"10152:9:87"},{"kind":"number","nativeSrc":"10163:2:87","nodeType":"YulLiteral","src":"10163:2:87","type":"","value":"64"}],"functionName":{"name":"add","nativeSrc":"10148:3:87","nodeType":"YulIdentifier","src":"10148:3:87"},"nativeSrc":"10148:18:87","nodeType":"YulFunctionCall","src":"10148:18:87"}],"functionName":{"name":"calldataload","nativeSrc":"10135:12:87","nodeType":"YulIdentifier","src":"10135:12:87"},"nativeSrc":"10135:32:87","nodeType":"YulFunctionCall","src":"10135:32:87"},"variables":[{"name":"value_2","nativeSrc":"10124:7:87","nodeType":"YulTypedName","src":"10124:7:87","type":""}]},{"expression":{"arguments":[{"name":"value_2","nativeSrc":"10200:7:87","nodeType":"YulIdentifier","src":"10200:7:87"}],"functionName":{"name":"validator_revert_bytes4","nativeSrc":"10176:23:87","nodeType":"YulIdentifier","src":"10176:23:87"},"nativeSrc":"10176:32:87","nodeType":"YulFunctionCall","src":"10176:32:87"},"nativeSrc":"10176:32:87","nodeType":"YulExpressionStatement","src":"10176:32:87"},{"nativeSrc":"10217:17:87","nodeType":"YulAssignment","src":"10217:17:87","value":{"name":"value_2","nativeSrc":"10227:7:87","nodeType":"YulIdentifier","src":"10227:7:87"},"variableNames":[{"name":"value2","nativeSrc":"10217:6:87","nodeType":"YulIdentifier","src":"10217:6:87"}]}]},"name":"abi_decode_tuple_t_addresst_addresst_bytes4","nativeSrc":"9713:527:87","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nativeSrc":"9766:9:87","nodeType":"YulTypedName","src":"9766:9:87","type":""},{"name":"dataEnd","nativeSrc":"9777:7:87","nodeType":"YulTypedName","src":"9777:7:87","type":""}],"returnVariables":[{"name":"value0","nativeSrc":"9789:6:87","nodeType":"YulTypedName","src":"9789:6:87","type":""},{"name":"value1","nativeSrc":"9797:6:87","nodeType":"YulTypedName","src":"9797:6:87","type":""},{"name":"value2","nativeSrc":"9805:6:87","nodeType":"YulTypedName","src":"9805:6:87","type":""}],"src":"9713:527:87"},{"body":{"nativeSrc":"10366:152:87","nodeType":"YulBlock","src":"10366:152:87","statements":[{"nativeSrc":"10376:26:87","nodeType":"YulAssignment","src":"10376:26:87","value":{"arguments":[{"name":"headStart","nativeSrc":"10388:9:87","nodeType":"YulIdentifier","src":"10388:9:87"},{"kind":"number","nativeSrc":"10399:2:87","nodeType":"YulLiteral","src":"10399:2:87","type":"","value":"64"}],"functionName":{"name":"add","nativeSrc":"10384:3:87","nodeType":"YulIdentifier","src":"10384:3:87"},"nativeSrc":"10384:18:87","nodeType":"YulFunctionCall","src":"10384:18:87"},"variableNames":[{"name":"tail","nativeSrc":"10376:4:87","nodeType":"YulIdentifier","src":"10376:4:87"}]},{"expression":{"arguments":[{"name":"headStart","nativeSrc":"10418:9:87","nodeType":"YulIdentifier","src":"10418:9:87"},{"arguments":[{"arguments":[{"name":"value0","nativeSrc":"10443:6:87","nodeType":"YulIdentifier","src":"10443:6:87"}],"functionName":{"name":"iszero","nativeSrc":"10436:6:87","nodeType":"YulIdentifier","src":"10436:6:87"},"nativeSrc":"10436:14:87","nodeType":"YulFunctionCall","src":"10436:14:87"}],"functionName":{"name":"iszero","nativeSrc":"10429:6:87","nodeType":"YulIdentifier","src":"10429:6:87"},"nativeSrc":"10429:22:87","nodeType":"YulFunctionCall","src":"10429:22:87"}],"functionName":{"name":"mstore","nativeSrc":"10411:6:87","nodeType":"YulIdentifier","src":"10411:6:87"},"nativeSrc":"10411:41:87","nodeType":"YulFunctionCall","src":"10411:41:87"},"nativeSrc":"10411:41:87","nodeType":"YulExpressionStatement","src":"10411:41:87"},{"expression":{"arguments":[{"arguments":[{"name":"headStart","nativeSrc":"10472:9:87","nodeType":"YulIdentifier","src":"10472:9:87"},{"kind":"number","nativeSrc":"10483:2:87","nodeType":"YulLiteral","src":"10483:2:87","type":"","value":"32"}],"functionName":{"name":"add","nativeSrc":"10468:3:87","nodeType":"YulIdentifier","src":"10468:3:87"},"nativeSrc":"10468:18:87","nodeType":"YulFunctionCall","src":"10468:18:87"},{"arguments":[{"name":"value1","nativeSrc":"10492:6:87","nodeType":"YulIdentifier","src":"10492:6:87"},{"kind":"number","nativeSrc":"10500:10:87","nodeType":"YulLiteral","src":"10500:10:87","type":"","value":"0xffffffff"}],"functionName":{"name":"and","nativeSrc":"10488:3:87","nodeType":"YulIdentifier","src":"10488:3:87"},"nativeSrc":"10488:23:87","nodeType":"YulFunctionCall","src":"10488:23:87"}],"functionName":{"name":"mstore","nativeSrc":"10461:6:87","nodeType":"YulIdentifier","src":"10461:6:87"},"nativeSrc":"10461:51:87","nodeType":"YulFunctionCall","src":"10461:51:87"},"nativeSrc":"10461:51:87","nodeType":"YulExpressionStatement","src":"10461:51:87"}]},"name":"abi_encode_tuple_t_bool_t_uint32__to_t_bool_t_uint32__fromStack_reversed","nativeSrc":"10245:273:87","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nativeSrc":"10327:9:87","nodeType":"YulTypedName","src":"10327:9:87","type":""},{"name":"value1","nativeSrc":"10338:6:87","nodeType":"YulTypedName","src":"10338:6:87","type":""},{"name":"value0","nativeSrc":"10346:6:87","nodeType":"YulTypedName","src":"10346:6:87","type":""}],"returnVariables":[{"name":"tail","nativeSrc":"10357:4:87","nodeType":"YulTypedName","src":"10357:4:87","type":""}],"src":"10245:273:87"},{"body":{"nativeSrc":"10609:233:87","nodeType":"YulBlock","src":"10609:233:87","statements":[{"body":{"nativeSrc":"10655:16:87","nodeType":"YulBlock","src":"10655:16:87","statements":[{"expression":{"arguments":[{"kind":"number","nativeSrc":"10664:1:87","nodeType":"YulLiteral","src":"10664:1:87","type":"","value":"0"},{"kind":"number","nativeSrc":"10667:1:87","nodeType":"YulLiteral","src":"10667:1:87","type":"","value":"0"}],"functionName":{"name":"revert","nativeSrc":"10657:6:87","nodeType":"YulIdentifier","src":"10657:6:87"},"nativeSrc":"10657:12:87","nodeType":"YulFunctionCall","src":"10657:12:87"},"nativeSrc":"10657:12:87","nodeType":"YulExpressionStatement","src":"10657:12:87"}]},"condition":{"arguments":[{"arguments":[{"name":"dataEnd","nativeSrc":"10630:7:87","nodeType":"YulIdentifier","src":"10630:7:87"},{"name":"headStart","nativeSrc":"10639:9:87","nodeType":"YulIdentifier","src":"10639:9:87"}],"functionName":{"name":"sub","nativeSrc":"10626:3:87","nodeType":"YulIdentifier","src":"10626:3:87"},"nativeSrc":"10626:23:87","nodeType":"YulFunctionCall","src":"10626:23:87"},{"kind":"number","nativeSrc":"10651:2:87","nodeType":"YulLiteral","src":"10651:2:87","type":"","value":"64"}],"functionName":{"name":"slt","nativeSrc":"10622:3:87","nodeType":"YulIdentifier","src":"10622:3:87"},"nativeSrc":"10622:32:87","nodeType":"YulFunctionCall","src":"10622:32:87"},"nativeSrc":"10619:52:87","nodeType":"YulIf","src":"10619:52:87"},{"nativeSrc":"10680:36:87","nodeType":"YulVariableDeclaration","src":"10680:36:87","value":{"arguments":[{"name":"headStart","nativeSrc":"10706:9:87","nodeType":"YulIdentifier","src":"10706:9:87"}],"functionName":{"name":"calldataload","nativeSrc":"10693:12:87","nodeType":"YulIdentifier","src":"10693:12:87"},"nativeSrc":"10693:23:87","nodeType":"YulFunctionCall","src":"10693:23:87"},"variables":[{"name":"value","nativeSrc":"10684:5:87","nodeType":"YulTypedName","src":"10684:5:87","type":""}]},{"expression":{"arguments":[{"name":"value","nativeSrc":"10750:5:87","nodeType":"YulIdentifier","src":"10750:5:87"}],"functionName":{"name":"validator_revert_address","nativeSrc":"10725:24:87","nodeType":"YulIdentifier","src":"10725:24:87"},"nativeSrc":"10725:31:87","nodeType":"YulFunctionCall","src":"10725:31:87"},"nativeSrc":"10725:31:87","nodeType":"YulExpressionStatement","src":"10725:31:87"},{"nativeSrc":"10765:15:87","nodeType":"YulAssignment","src":"10765:15:87","value":{"name":"value","nativeSrc":"10775:5:87","nodeType":"YulIdentifier","src":"10775:5:87"},"variableNames":[{"name":"value0","nativeSrc":"10765:6:87","nodeType":"YulIdentifier","src":"10765:6:87"}]},{"nativeSrc":"10789:47:87","nodeType":"YulAssignment","src":"10789:47:87","value":{"arguments":[{"arguments":[{"name":"headStart","nativeSrc":"10821:9:87","nodeType":"YulIdentifier","src":"10821:9:87"},{"kind":"number","nativeSrc":"10832:2:87","nodeType":"YulLiteral","src":"10832:2:87","type":"","value":"32"}],"functionName":{"name":"add","nativeSrc":"10817:3:87","nodeType":"YulIdentifier","src":"10817:3:87"},"nativeSrc":"10817:18:87","nodeType":"YulFunctionCall","src":"10817:18:87"}],"functionName":{"name":"abi_decode_uint32","nativeSrc":"10799:17:87","nodeType":"YulIdentifier","src":"10799:17:87"},"nativeSrc":"10799:37:87","nodeType":"YulFunctionCall","src":"10799:37:87"},"variableNames":[{"name":"value1","nativeSrc":"10789:6:87","nodeType":"YulIdentifier","src":"10789:6:87"}]}]},"name":"abi_decode_tuple_t_addresst_uint32","nativeSrc":"10523:319:87","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nativeSrc":"10567:9:87","nodeType":"YulTypedName","src":"10567:9:87","type":""},{"name":"dataEnd","nativeSrc":"10578:7:87","nodeType":"YulTypedName","src":"10578:7:87","type":""}],"returnVariables":[{"name":"value0","nativeSrc":"10590:6:87","nodeType":"YulTypedName","src":"10590:6:87","type":""},{"name":"value1","nativeSrc":"10598:6:87","nodeType":"YulTypedName","src":"10598:6:87","type":""}],"src":"10523:319:87"},{"body":{"nativeSrc":"10969:598:87","nodeType":"YulBlock","src":"10969:598:87","statements":[{"body":{"nativeSrc":"11015:16:87","nodeType":"YulBlock","src":"11015:16:87","statements":[{"expression":{"arguments":[{"kind":"number","nativeSrc":"11024:1:87","nodeType":"YulLiteral","src":"11024:1:87","type":"","value":"0"},{"kind":"number","nativeSrc":"11027:1:87","nodeType":"YulLiteral","src":"11027:1:87","type":"","value":"0"}],"functionName":{"name":"revert","nativeSrc":"11017:6:87","nodeType":"YulIdentifier","src":"11017:6:87"},"nativeSrc":"11017:12:87","nodeType":"YulFunctionCall","src":"11017:12:87"},"nativeSrc":"11017:12:87","nodeType":"YulExpressionStatement","src":"11017:12:87"}]},"condition":{"arguments":[{"arguments":[{"name":"dataEnd","nativeSrc":"10990:7:87","nodeType":"YulIdentifier","src":"10990:7:87"},{"name":"headStart","nativeSrc":"10999:9:87","nodeType":"YulIdentifier","src":"10999:9:87"}],"functionName":{"name":"sub","nativeSrc":"10986:3:87","nodeType":"YulIdentifier","src":"10986:3:87"},"nativeSrc":"10986:23:87","nodeType":"YulFunctionCall","src":"10986:23:87"},{"kind":"number","nativeSrc":"11011:2:87","nodeType":"YulLiteral","src":"11011:2:87","type":"","value":"96"}],"functionName":{"name":"slt","nativeSrc":"10982:3:87","nodeType":"YulIdentifier","src":"10982:3:87"},"nativeSrc":"10982:32:87","nodeType":"YulFunctionCall","src":"10982:32:87"},"nativeSrc":"10979:52:87","nodeType":"YulIf","src":"10979:52:87"},{"nativeSrc":"11040:36:87","nodeType":"YulVariableDeclaration","src":"11040:36:87","value":{"arguments":[{"name":"headStart","nativeSrc":"11066:9:87","nodeType":"YulIdentifier","src":"11066:9:87"}],"functionName":{"name":"calldataload","nativeSrc":"11053:12:87","nodeType":"YulIdentifier","src":"11053:12:87"},"nativeSrc":"11053:23:87","nodeType":"YulFunctionCall","src":"11053:23:87"},"variables":[{"name":"value","nativeSrc":"11044:5:87","nodeType":"YulTypedName","src":"11044:5:87","type":""}]},{"expression":{"arguments":[{"name":"value","nativeSrc":"11110:5:87","nodeType":"YulIdentifier","src":"11110:5:87"}],"functionName":{"name":"validator_revert_address","nativeSrc":"11085:24:87","nodeType":"YulIdentifier","src":"11085:24:87"},"nativeSrc":"11085:31:87","nodeType":"YulFunctionCall","src":"11085:31:87"},"nativeSrc":"11085:31:87","nodeType":"YulExpressionStatement","src":"11085:31:87"},{"nativeSrc":"11125:15:87","nodeType":"YulAssignment","src":"11125:15:87","value":{"name":"value","nativeSrc":"11135:5:87","nodeType":"YulIdentifier","src":"11135:5:87"},"variableNames":[{"name":"value0","nativeSrc":"11125:6:87","nodeType":"YulIdentifier","src":"11125:6:87"}]},{"nativeSrc":"11149:46:87","nodeType":"YulVariableDeclaration","src":"11149:46:87","value":{"arguments":[{"arguments":[{"name":"headStart","nativeSrc":"11180:9:87","nodeType":"YulIdentifier","src":"11180:9:87"},{"kind":"number","nativeSrc":"11191:2:87","nodeType":"YulLiteral","src":"11191:2:87","type":"","value":"32"}],"functionName":{"name":"add","nativeSrc":"11176:3:87","nodeType":"YulIdentifier","src":"11176:3:87"},"nativeSrc":"11176:18:87","nodeType":"YulFunctionCall","src":"11176:18:87"}],"functionName":{"name":"calldataload","nativeSrc":"11163:12:87","nodeType":"YulIdentifier","src":"11163:12:87"},"nativeSrc":"11163:32:87","nodeType":"YulFunctionCall","src":"11163:32:87"},"variables":[{"name":"offset","nativeSrc":"11153:6:87","nodeType":"YulTypedName","src":"11153:6:87","type":""}]},{"body":{"nativeSrc":"11238:16:87","nodeType":"YulBlock","src":"11238:16:87","statements":[{"expression":{"arguments":[{"kind":"number","nativeSrc":"11247:1:87","nodeType":"YulLiteral","src":"11247:1:87","type":"","value":"0"},{"kind":"number","nativeSrc":"11250:1:87","nodeType":"YulLiteral","src":"11250:1:87","type":"","value":"0"}],"functionName":{"name":"revert","nativeSrc":"11240:6:87","nodeType":"YulIdentifier","src":"11240:6:87"},"nativeSrc":"11240:12:87","nodeType":"YulFunctionCall","src":"11240:12:87"},"nativeSrc":"11240:12:87","nodeType":"YulExpressionStatement","src":"11240:12:87"}]},"condition":{"arguments":[{"name":"offset","nativeSrc":"11210:6:87","nodeType":"YulIdentifier","src":"11210:6:87"},{"kind":"number","nativeSrc":"11218:18:87","nodeType":"YulLiteral","src":"11218:18:87","type":"","value":"0xffffffffffffffff"}],"functionName":{"name":"gt","nativeSrc":"11207:2:87","nodeType":"YulIdentifier","src":"11207:2:87"},"nativeSrc":"11207:30:87","nodeType":"YulFunctionCall","src":"11207:30:87"},"nativeSrc":"11204:50:87","nodeType":"YulIf","src":"11204:50:87"},{"nativeSrc":"11263:84:87","nodeType":"YulVariableDeclaration","src":"11263:84:87","value":{"arguments":[{"arguments":[{"name":"headStart","nativeSrc":"11319:9:87","nodeType":"YulIdentifier","src":"11319:9:87"},{"name":"offset","nativeSrc":"11330:6:87","nodeType":"YulIdentifier","src":"11330:6:87"}],"functionName":{"name":"add","nativeSrc":"11315:3:87","nodeType":"YulIdentifier","src":"11315:3:87"},"nativeSrc":"11315:22:87","nodeType":"YulFunctionCall","src":"11315:22:87"},{"name":"dataEnd","nativeSrc":"11339:7:87","nodeType":"YulIdentifier","src":"11339:7:87"}],"functionName":{"name":"abi_decode_bytes_calldata","nativeSrc":"11289:25:87","nodeType":"YulIdentifier","src":"11289:25:87"},"nativeSrc":"11289:58:87","nodeType":"YulFunctionCall","src":"11289:58:87"},"variables":[{"name":"value1_1","nativeSrc":"11267:8:87","nodeType":"YulTypedName","src":"11267:8:87","type":""},{"name":"value2_1","nativeSrc":"11277:8:87","nodeType":"YulTypedName","src":"11277:8:87","type":""}]},{"nativeSrc":"11356:18:87","nodeType":"YulAssignment","src":"11356:18:87","value":{"name":"value1_1","nativeSrc":"11366:8:87","nodeType":"YulIdentifier","src":"11366:8:87"},"variableNames":[{"name":"value1","nativeSrc":"11356:6:87","nodeType":"YulIdentifier","src":"11356:6:87"}]},{"nativeSrc":"11383:18:87","nodeType":"YulAssignment","src":"11383:18:87","value":{"name":"value2_1","nativeSrc":"11393:8:87","nodeType":"YulIdentifier","src":"11393:8:87"},"variableNames":[{"name":"value2","nativeSrc":"11383:6:87","nodeType":"YulIdentifier","src":"11383:6:87"}]},{"nativeSrc":"11410:47:87","nodeType":"YulVariableDeclaration","src":"11410:47:87","value":{"arguments":[{"arguments":[{"name":"headStart","nativeSrc":"11442:9:87","nodeType":"YulIdentifier","src":"11442:9:87"},{"kind":"number","nativeSrc":"11453:2:87","nodeType":"YulLiteral","src":"11453:2:87","type":"","value":"64"}],"functionName":{"name":"add","nativeSrc":"11438:3:87","nodeType":"YulIdentifier","src":"11438:3:87"},"nativeSrc":"11438:18:87","nodeType":"YulFunctionCall","src":"11438:18:87"}],"functionName":{"name":"calldataload","nativeSrc":"11425:12:87","nodeType":"YulIdentifier","src":"11425:12:87"},"nativeSrc":"11425:32:87","nodeType":"YulFunctionCall","src":"11425:32:87"},"variables":[{"name":"value_1","nativeSrc":"11414:7:87","nodeType":"YulTypedName","src":"11414:7:87","type":""}]},{"body":{"nativeSrc":"11519:16:87","nodeType":"YulBlock","src":"11519:16:87","statements":[{"expression":{"arguments":[{"kind":"number","nativeSrc":"11528:1:87","nodeType":"YulLiteral","src":"11528:1:87","type":"","value":"0"},{"kind":"number","nativeSrc":"11531:1:87","nodeType":"YulLiteral","src":"11531:1:87","type":"","value":"0"}],"functionName":{"name":"revert","nativeSrc":"11521:6:87","nodeType":"YulIdentifier","src":"11521:6:87"},"nativeSrc":"11521:12:87","nodeType":"YulFunctionCall","src":"11521:12:87"},"nativeSrc":"11521:12:87","nodeType":"YulExpressionStatement","src":"11521:12:87"}]},"condition":{"arguments":[{"arguments":[{"name":"value_1","nativeSrc":"11479:7:87","nodeType":"YulIdentifier","src":"11479:7:87"},{"arguments":[{"name":"value_1","nativeSrc":"11492:7:87","nodeType":"YulIdentifier","src":"11492:7:87"},{"kind":"number","nativeSrc":"11501:14:87","nodeType":"YulLiteral","src":"11501:14:87","type":"","value":"0xffffffffffff"}],"functionName":{"name":"and","nativeSrc":"11488:3:87","nodeType":"YulIdentifier","src":"11488:3:87"},"nativeSrc":"11488:28:87","nodeType":"YulFunctionCall","src":"11488:28:87"}],"functionName":{"name":"eq","nativeSrc":"11476:2:87","nodeType":"YulIdentifier","src":"11476:2:87"},"nativeSrc":"11476:41:87","nodeType":"YulFunctionCall","src":"11476:41:87"}],"functionName":{"name":"iszero","nativeSrc":"11469:6:87","nodeType":"YulIdentifier","src":"11469:6:87"},"nativeSrc":"11469:49:87","nodeType":"YulFunctionCall","src":"11469:49:87"},"nativeSrc":"11466:69:87","nodeType":"YulIf","src":"11466:69:87"},{"nativeSrc":"11544:17:87","nodeType":"YulAssignment","src":"11544:17:87","value":{"name":"value_1","nativeSrc":"11554:7:87","nodeType":"YulIdentifier","src":"11554:7:87"},"variableNames":[{"name":"value3","nativeSrc":"11544:6:87","nodeType":"YulIdentifier","src":"11544:6:87"}]}]},"name":"abi_decode_tuple_t_addresst_bytes_calldata_ptrt_uint48","nativeSrc":"10847:720:87","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nativeSrc":"10911:9:87","nodeType":"YulTypedName","src":"10911:9:87","type":""},{"name":"dataEnd","nativeSrc":"10922:7:87","nodeType":"YulTypedName","src":"10922:7:87","type":""}],"returnVariables":[{"name":"value0","nativeSrc":"10934:6:87","nodeType":"YulTypedName","src":"10934:6:87","type":""},{"name":"value1","nativeSrc":"10942:6:87","nodeType":"YulTypedName","src":"10942:6:87","type":""},{"name":"value2","nativeSrc":"10950:6:87","nodeType":"YulTypedName","src":"10950:6:87","type":""},{"name":"value3","nativeSrc":"10958:6:87","nodeType":"YulTypedName","src":"10958:6:87","type":""}],"src":"10847:720:87"},{"body":{"nativeSrc":"11699:136:87","nodeType":"YulBlock","src":"11699:136:87","statements":[{"nativeSrc":"11709:26:87","nodeType":"YulAssignment","src":"11709:26:87","value":{"arguments":[{"name":"headStart","nativeSrc":"11721:9:87","nodeType":"YulIdentifier","src":"11721:9:87"},{"kind":"number","nativeSrc":"11732:2:87","nodeType":"YulLiteral","src":"11732:2:87","type":"","value":"64"}],"functionName":{"name":"add","nativeSrc":"11717:3:87","nodeType":"YulIdentifier","src":"11717:3:87"},"nativeSrc":"11717:18:87","nodeType":"YulFunctionCall","src":"11717:18:87"},"variableNames":[{"name":"tail","nativeSrc":"11709:4:87","nodeType":"YulIdentifier","src":"11709:4:87"}]},{"expression":{"arguments":[{"name":"headStart","nativeSrc":"11751:9:87","nodeType":"YulIdentifier","src":"11751:9:87"},{"name":"value0","nativeSrc":"11762:6:87","nodeType":"YulIdentifier","src":"11762:6:87"}],"functionName":{"name":"mstore","nativeSrc":"11744:6:87","nodeType":"YulIdentifier","src":"11744:6:87"},"nativeSrc":"11744:25:87","nodeType":"YulFunctionCall","src":"11744:25:87"},"nativeSrc":"11744:25:87","nodeType":"YulExpressionStatement","src":"11744:25:87"},{"expression":{"arguments":[{"arguments":[{"name":"headStart","nativeSrc":"11789:9:87","nodeType":"YulIdentifier","src":"11789:9:87"},{"kind":"number","nativeSrc":"11800:2:87","nodeType":"YulLiteral","src":"11800:2:87","type":"","value":"32"}],"functionName":{"name":"add","nativeSrc":"11785:3:87","nodeType":"YulIdentifier","src":"11785:3:87"},"nativeSrc":"11785:18:87","nodeType":"YulFunctionCall","src":"11785:18:87"},{"arguments":[{"name":"value1","nativeSrc":"11809:6:87","nodeType":"YulIdentifier","src":"11809:6:87"},{"kind":"number","nativeSrc":"11817:10:87","nodeType":"YulLiteral","src":"11817:10:87","type":"","value":"0xffffffff"}],"functionName":{"name":"and","nativeSrc":"11805:3:87","nodeType":"YulIdentifier","src":"11805:3:87"},"nativeSrc":"11805:23:87","nodeType":"YulFunctionCall","src":"11805:23:87"}],"functionName":{"name":"mstore","nativeSrc":"11778:6:87","nodeType":"YulIdentifier","src":"11778:6:87"},"nativeSrc":"11778:51:87","nodeType":"YulFunctionCall","src":"11778:51:87"},"nativeSrc":"11778:51:87","nodeType":"YulExpressionStatement","src":"11778:51:87"}]},"name":"abi_encode_tuple_t_bytes32_t_uint32__to_t_bytes32_t_uint32__fromStack_reversed","nativeSrc":"11572:263:87","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nativeSrc":"11660:9:87","nodeType":"YulTypedName","src":"11660:9:87","type":""},{"name":"value1","nativeSrc":"11671:6:87","nodeType":"YulTypedName","src":"11671:6:87","type":""},{"name":"value0","nativeSrc":"11679:6:87","nodeType":"YulTypedName","src":"11679:6:87","type":""}],"returnVariables":[{"name":"tail","nativeSrc":"11690:4:87","nodeType":"YulTypedName","src":"11690:4:87","type":""}],"src":"11572:263:87"},{"body":{"nativeSrc":"11872:95:87","nodeType":"YulBlock","src":"11872:95:87","statements":[{"expression":{"arguments":[{"kind":"number","nativeSrc":"11889:1:87","nodeType":"YulLiteral","src":"11889:1:87","type":"","value":"0"},{"arguments":[{"kind":"number","nativeSrc":"11896:3:87","nodeType":"YulLiteral","src":"11896:3:87","type":"","value":"224"},{"kind":"number","nativeSrc":"11901:10:87","nodeType":"YulLiteral","src":"11901:10:87","type":"","value":"0x4e487b71"}],"functionName":{"name":"shl","nativeSrc":"11892:3:87","nodeType":"YulIdentifier","src":"11892:3:87"},"nativeSrc":"11892:20:87","nodeType":"YulFunctionCall","src":"11892:20:87"}],"functionName":{"name":"mstore","nativeSrc":"11882:6:87","nodeType":"YulIdentifier","src":"11882:6:87"},"nativeSrc":"11882:31:87","nodeType":"YulFunctionCall","src":"11882:31:87"},"nativeSrc":"11882:31:87","nodeType":"YulExpressionStatement","src":"11882:31:87"},{"expression":{"arguments":[{"kind":"number","nativeSrc":"11929:1:87","nodeType":"YulLiteral","src":"11929:1:87","type":"","value":"4"},{"kind":"number","nativeSrc":"11932:4:87","nodeType":"YulLiteral","src":"11932:4:87","type":"","value":"0x32"}],"functionName":{"name":"mstore","nativeSrc":"11922:6:87","nodeType":"YulIdentifier","src":"11922:6:87"},"nativeSrc":"11922:15:87","nodeType":"YulFunctionCall","src":"11922:15:87"},"nativeSrc":"11922:15:87","nodeType":"YulExpressionStatement","src":"11922:15:87"},{"expression":{"arguments":[{"kind":"number","nativeSrc":"11953:1:87","nodeType":"YulLiteral","src":"11953:1:87","type":"","value":"0"},{"kind":"number","nativeSrc":"11956:4:87","nodeType":"YulLiteral","src":"11956:4:87","type":"","value":"0x24"}],"functionName":{"name":"revert","nativeSrc":"11946:6:87","nodeType":"YulIdentifier","src":"11946:6:87"},"nativeSrc":"11946:15:87","nodeType":"YulFunctionCall","src":"11946:15:87"},"nativeSrc":"11946:15:87","nodeType":"YulExpressionStatement","src":"11946:15:87"}]},"name":"panic_error_0x32","nativeSrc":"11840:127:87","nodeType":"YulFunctionDefinition","src":"11840:127:87"},{"body":{"nativeSrc":"12041:176:87","nodeType":"YulBlock","src":"12041:176:87","statements":[{"body":{"nativeSrc":"12087:16:87","nodeType":"YulBlock","src":"12087:16:87","statements":[{"expression":{"arguments":[{"kind":"number","nativeSrc":"12096:1:87","nodeType":"YulLiteral","src":"12096:1:87","type":"","value":"0"},{"kind":"number","nativeSrc":"12099:1:87","nodeType":"YulLiteral","src":"12099:1:87","type":"","value":"0"}],"functionName":{"name":"revert","nativeSrc":"12089:6:87","nodeType":"YulIdentifier","src":"12089:6:87"},"nativeSrc":"12089:12:87","nodeType":"YulFunctionCall","src":"12089:12:87"},"nativeSrc":"12089:12:87","nodeType":"YulExpressionStatement","src":"12089:12:87"}]},"condition":{"arguments":[{"arguments":[{"name":"dataEnd","nativeSrc":"12062:7:87","nodeType":"YulIdentifier","src":"12062:7:87"},{"name":"headStart","nativeSrc":"12071:9:87","nodeType":"YulIdentifier","src":"12071:9:87"}],"functionName":{"name":"sub","nativeSrc":"12058:3:87","nodeType":"YulIdentifier","src":"12058:3:87"},"nativeSrc":"12058:23:87","nodeType":"YulFunctionCall","src":"12058:23:87"},{"kind":"number","nativeSrc":"12083:2:87","nodeType":"YulLiteral","src":"12083:2:87","type":"","value":"32"}],"functionName":{"name":"slt","nativeSrc":"12054:3:87","nodeType":"YulIdentifier","src":"12054:3:87"},"nativeSrc":"12054:32:87","nodeType":"YulFunctionCall","src":"12054:32:87"},"nativeSrc":"12051:52:87","nodeType":"YulIf","src":"12051:52:87"},{"nativeSrc":"12112:36:87","nodeType":"YulVariableDeclaration","src":"12112:36:87","value":{"arguments":[{"name":"headStart","nativeSrc":"12138:9:87","nodeType":"YulIdentifier","src":"12138:9:87"}],"functionName":{"name":"calldataload","nativeSrc":"12125:12:87","nodeType":"YulIdentifier","src":"12125:12:87"},"nativeSrc":"12125:23:87","nodeType":"YulFunctionCall","src":"12125:23:87"},"variables":[{"name":"value","nativeSrc":"12116:5:87","nodeType":"YulTypedName","src":"12116:5:87","type":""}]},{"expression":{"arguments":[{"name":"value","nativeSrc":"12181:5:87","nodeType":"YulIdentifier","src":"12181:5:87"}],"functionName":{"name":"validator_revert_bytes4","nativeSrc":"12157:23:87","nodeType":"YulIdentifier","src":"12157:23:87"},"nativeSrc":"12157:30:87","nodeType":"YulFunctionCall","src":"12157:30:87"},"nativeSrc":"12157:30:87","nodeType":"YulExpressionStatement","src":"12157:30:87"},{"nativeSrc":"12196:15:87","nodeType":"YulAssignment","src":"12196:15:87","value":{"name":"value","nativeSrc":"12206:5:87","nodeType":"YulIdentifier","src":"12206:5:87"},"variableNames":[{"name":"value0","nativeSrc":"12196:6:87","nodeType":"YulIdentifier","src":"12196:6:87"}]}]},"name":"abi_decode_tuple_t_bytes4","nativeSrc":"11972:245:87","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nativeSrc":"12007:9:87","nodeType":"YulTypedName","src":"12007:9:87","type":""},{"name":"dataEnd","nativeSrc":"12018:7:87","nodeType":"YulTypedName","src":"12018:7:87","type":""}],"returnVariables":[{"name":"value0","nativeSrc":"12030:6:87","nodeType":"YulTypedName","src":"12030:6:87","type":""}],"src":"11972:245:87"},{"body":{"nativeSrc":"12323:102:87","nodeType":"YulBlock","src":"12323:102:87","statements":[{"nativeSrc":"12333:26:87","nodeType":"YulAssignment","src":"12333:26:87","value":{"arguments":[{"name":"headStart","nativeSrc":"12345:9:87","nodeType":"YulIdentifier","src":"12345:9:87"},{"kind":"number","nativeSrc":"12356:2:87","nodeType":"YulLiteral","src":"12356:2:87","type":"","value":"32"}],"functionName":{"name":"add","nativeSrc":"12341:3:87","nodeType":"YulIdentifier","src":"12341:3:87"},"nativeSrc":"12341:18:87","nodeType":"YulFunctionCall","src":"12341:18:87"},"variableNames":[{"name":"tail","nativeSrc":"12333:4:87","nodeType":"YulIdentifier","src":"12333:4:87"}]},{"expression":{"arguments":[{"name":"headStart","nativeSrc":"12375:9:87","nodeType":"YulIdentifier","src":"12375:9:87"},{"arguments":[{"name":"value0","nativeSrc":"12390:6:87","nodeType":"YulIdentifier","src":"12390:6:87"},{"arguments":[{"arguments":[{"kind":"number","nativeSrc":"12406:3:87","nodeType":"YulLiteral","src":"12406:3:87","type":"","value":"160"},{"kind":"number","nativeSrc":"12411:1:87","nodeType":"YulLiteral","src":"12411:1:87","type":"","value":"1"}],"functionName":{"name":"shl","nativeSrc":"12402:3:87","nodeType":"YulIdentifier","src":"12402:3:87"},"nativeSrc":"12402:11:87","nodeType":"YulFunctionCall","src":"12402:11:87"},{"kind":"number","nativeSrc":"12415:1:87","nodeType":"YulLiteral","src":"12415:1:87","type":"","value":"1"}],"functionName":{"name":"sub","nativeSrc":"12398:3:87","nodeType":"YulIdentifier","src":"12398:3:87"},"nativeSrc":"12398:19:87","nodeType":"YulFunctionCall","src":"12398:19:87"}],"functionName":{"name":"and","nativeSrc":"12386:3:87","nodeType":"YulIdentifier","src":"12386:3:87"},"nativeSrc":"12386:32:87","nodeType":"YulFunctionCall","src":"12386:32:87"}],"functionName":{"name":"mstore","nativeSrc":"12368:6:87","nodeType":"YulIdentifier","src":"12368:6:87"},"nativeSrc":"12368:51:87","nodeType":"YulFunctionCall","src":"12368:51:87"},"nativeSrc":"12368:51:87","nodeType":"YulExpressionStatement","src":"12368:51:87"}]},"name":"abi_encode_tuple_t_address__to_t_address__fromStack_reversed","nativeSrc":"12222:203:87","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nativeSrc":"12292:9:87","nodeType":"YulTypedName","src":"12292:9:87","type":""},{"name":"value0","nativeSrc":"12303:6:87","nodeType":"YulTypedName","src":"12303:6:87","type":""}],"returnVariables":[{"name":"tail","nativeSrc":"12314:4:87","nodeType":"YulTypedName","src":"12314:4:87","type":""}],"src":"12222:203:87"},{"body":{"nativeSrc":"12585:241:87","nodeType":"YulBlock","src":"12585:241:87","statements":[{"nativeSrc":"12595:26:87","nodeType":"YulAssignment","src":"12595:26:87","value":{"arguments":[{"name":"headStart","nativeSrc":"12607:9:87","nodeType":"YulIdentifier","src":"12607:9:87"},{"kind":"number","nativeSrc":"12618:2:87","nodeType":"YulLiteral","src":"12618:2:87","type":"","value":"96"}],"functionName":{"name":"add","nativeSrc":"12603:3:87","nodeType":"YulIdentifier","src":"12603:3:87"},"nativeSrc":"12603:18:87","nodeType":"YulFunctionCall","src":"12603:18:87"},"variableNames":[{"name":"tail","nativeSrc":"12595:4:87","nodeType":"YulIdentifier","src":"12595:4:87"}]},{"expression":{"arguments":[{"name":"headStart","nativeSrc":"12637:9:87","nodeType":"YulIdentifier","src":"12637:9:87"},{"arguments":[{"name":"value0","nativeSrc":"12652:6:87","nodeType":"YulIdentifier","src":"12652:6:87"},{"arguments":[{"arguments":[{"kind":"number","nativeSrc":"12668:3:87","nodeType":"YulLiteral","src":"12668:3:87","type":"","value":"160"},{"kind":"number","nativeSrc":"12673:1:87","nodeType":"YulLiteral","src":"12673:1:87","type":"","value":"1"}],"functionName":{"name":"shl","nativeSrc":"12664:3:87","nodeType":"YulIdentifier","src":"12664:3:87"},"nativeSrc":"12664:11:87","nodeType":"YulFunctionCall","src":"12664:11:87"},{"kind":"number","nativeSrc":"12677:1:87","nodeType":"YulLiteral","src":"12677:1:87","type":"","value":"1"}],"functionName":{"name":"sub","nativeSrc":"12660:3:87","nodeType":"YulIdentifier","src":"12660:3:87"},"nativeSrc":"12660:19:87","nodeType":"YulFunctionCall","src":"12660:19:87"}],"functionName":{"name":"and","nativeSrc":"12648:3:87","nodeType":"YulIdentifier","src":"12648:3:87"},"nativeSrc":"12648:32:87","nodeType":"YulFunctionCall","src":"12648:32:87"}],"functionName":{"name":"mstore","nativeSrc":"12630:6:87","nodeType":"YulIdentifier","src":"12630:6:87"},"nativeSrc":"12630:51:87","nodeType":"YulFunctionCall","src":"12630:51:87"},"nativeSrc":"12630:51:87","nodeType":"YulExpressionStatement","src":"12630:51:87"},{"expression":{"arguments":[{"arguments":[{"name":"headStart","nativeSrc":"12701:9:87","nodeType":"YulIdentifier","src":"12701:9:87"},{"kind":"number","nativeSrc":"12712:2:87","nodeType":"YulLiteral","src":"12712:2:87","type":"","value":"32"}],"functionName":{"name":"add","nativeSrc":"12697:3:87","nodeType":"YulIdentifier","src":"12697:3:87"},"nativeSrc":"12697:18:87","nodeType":"YulFunctionCall","src":"12697:18:87"},{"arguments":[{"name":"value1","nativeSrc":"12721:6:87","nodeType":"YulIdentifier","src":"12721:6:87"},{"arguments":[{"arguments":[{"kind":"number","nativeSrc":"12737:3:87","nodeType":"YulLiteral","src":"12737:3:87","type":"","value":"160"},{"kind":"number","nativeSrc":"12742:1:87","nodeType":"YulLiteral","src":"12742:1:87","type":"","value":"1"}],"functionName":{"name":"shl","nativeSrc":"12733:3:87","nodeType":"YulIdentifier","src":"12733:3:87"},"nativeSrc":"12733:11:87","nodeType":"YulFunctionCall","src":"12733:11:87"},{"kind":"number","nativeSrc":"12746:1:87","nodeType":"YulLiteral","src":"12746:1:87","type":"","value":"1"}],"functionName":{"name":"sub","nativeSrc":"12729:3:87","nodeType":"YulIdentifier","src":"12729:3:87"},"nativeSrc":"12729:19:87","nodeType":"YulFunctionCall","src":"12729:19:87"}],"functionName":{"name":"and","nativeSrc":"12717:3:87","nodeType":"YulIdentifier","src":"12717:3:87"},"nativeSrc":"12717:32:87","nodeType":"YulFunctionCall","src":"12717:32:87"}],"functionName":{"name":"mstore","nativeSrc":"12690:6:87","nodeType":"YulIdentifier","src":"12690:6:87"},"nativeSrc":"12690:60:87","nodeType":"YulFunctionCall","src":"12690:60:87"},"nativeSrc":"12690:60:87","nodeType":"YulExpressionStatement","src":"12690:60:87"},{"expression":{"arguments":[{"arguments":[{"name":"headStart","nativeSrc":"12770:9:87","nodeType":"YulIdentifier","src":"12770:9:87"},{"kind":"number","nativeSrc":"12781:2:87","nodeType":"YulLiteral","src":"12781:2:87","type":"","value":"64"}],"functionName":{"name":"add","nativeSrc":"12766:3:87","nodeType":"YulIdentifier","src":"12766:3:87"},"nativeSrc":"12766:18:87","nodeType":"YulFunctionCall","src":"12766:18:87"},{"arguments":[{"name":"value2","nativeSrc":"12790:6:87","nodeType":"YulIdentifier","src":"12790:6:87"},{"arguments":[{"kind":"number","nativeSrc":"12802:3:87","nodeType":"YulLiteral","src":"12802:3:87","type":"","value":"224"},{"kind":"number","nativeSrc":"12807:10:87","nodeType":"YulLiteral","src":"12807:10:87","type":"","value":"0xffffffff"}],"functionName":{"name":"shl","nativeSrc":"12798:3:87","nodeType":"YulIdentifier","src":"12798:3:87"},"nativeSrc":"12798:20:87","nodeType":"YulFunctionCall","src":"12798:20:87"}],"functionName":{"name":"and","nativeSrc":"12786:3:87","nodeType":"YulIdentifier","src":"12786:3:87"},"nativeSrc":"12786:33:87","nodeType":"YulFunctionCall","src":"12786:33:87"}],"functionName":{"name":"mstore","nativeSrc":"12759:6:87","nodeType":"YulIdentifier","src":"12759:6:87"},"nativeSrc":"12759:61:87","nodeType":"YulFunctionCall","src":"12759:61:87"},"nativeSrc":"12759:61:87","nodeType":"YulExpressionStatement","src":"12759:61:87"}]},"name":"abi_encode_tuple_t_address_t_address_t_bytes4__to_t_address_t_address_t_bytes4__fromStack_reversed","nativeSrc":"12430:396:87","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nativeSrc":"12538:9:87","nodeType":"YulTypedName","src":"12538:9:87","type":""},{"name":"value2","nativeSrc":"12549:6:87","nodeType":"YulTypedName","src":"12549:6:87","type":""},{"name":"value1","nativeSrc":"12557:6:87","nodeType":"YulTypedName","src":"12557:6:87","type":""},{"name":"value0","nativeSrc":"12565:6:87","nodeType":"YulTypedName","src":"12565:6:87","type":""}],"returnVariables":[{"name":"tail","nativeSrc":"12576:4:87","nodeType":"YulTypedName","src":"12576:4:87","type":""}],"src":"12430:396:87"},{"body":{"nativeSrc":"12898:200:87","nodeType":"YulBlock","src":"12898:200:87","statements":[{"expression":{"arguments":[{"name":"pos","nativeSrc":"12915:3:87","nodeType":"YulIdentifier","src":"12915:3:87"},{"name":"length","nativeSrc":"12920:6:87","nodeType":"YulIdentifier","src":"12920:6:87"}],"functionName":{"name":"mstore","nativeSrc":"12908:6:87","nodeType":"YulIdentifier","src":"12908:6:87"},"nativeSrc":"12908:19:87","nodeType":"YulFunctionCall","src":"12908:19:87"},"nativeSrc":"12908:19:87","nodeType":"YulExpressionStatement","src":"12908:19:87"},{"expression":{"arguments":[{"arguments":[{"name":"pos","nativeSrc":"12953:3:87","nodeType":"YulIdentifier","src":"12953:3:87"},{"kind":"number","nativeSrc":"12958:4:87","nodeType":"YulLiteral","src":"12958:4:87","type":"","value":"0x20"}],"functionName":{"name":"add","nativeSrc":"12949:3:87","nodeType":"YulIdentifier","src":"12949:3:87"},"nativeSrc":"12949:14:87","nodeType":"YulFunctionCall","src":"12949:14:87"},{"name":"start","nativeSrc":"12965:5:87","nodeType":"YulIdentifier","src":"12965:5:87"},{"name":"length","nativeSrc":"12972:6:87","nodeType":"YulIdentifier","src":"12972:6:87"}],"functionName":{"name":"calldatacopy","nativeSrc":"12936:12:87","nodeType":"YulIdentifier","src":"12936:12:87"},"nativeSrc":"12936:43:87","nodeType":"YulFunctionCall","src":"12936:43:87"},"nativeSrc":"12936:43:87","nodeType":"YulExpressionStatement","src":"12936:43:87"},{"expression":{"arguments":[{"arguments":[{"arguments":[{"name":"pos","nativeSrc":"13003:3:87","nodeType":"YulIdentifier","src":"13003:3:87"},{"name":"length","nativeSrc":"13008:6:87","nodeType":"YulIdentifier","src":"13008:6:87"}],"functionName":{"name":"add","nativeSrc":"12999:3:87","nodeType":"YulIdentifier","src":"12999:3:87"},"nativeSrc":"12999:16:87","nodeType":"YulFunctionCall","src":"12999:16:87"},{"kind":"number","nativeSrc":"13017:4:87","nodeType":"YulLiteral","src":"13017:4:87","type":"","value":"0x20"}],"functionName":{"name":"add","nativeSrc":"12995:3:87","nodeType":"YulIdentifier","src":"12995:3:87"},"nativeSrc":"12995:27:87","nodeType":"YulFunctionCall","src":"12995:27:87"},{"kind":"number","nativeSrc":"13024:1:87","nodeType":"YulLiteral","src":"13024:1:87","type":"","value":"0"}],"functionName":{"name":"mstore","nativeSrc":"12988:6:87","nodeType":"YulIdentifier","src":"12988:6:87"},"nativeSrc":"12988:38:87","nodeType":"YulFunctionCall","src":"12988:38:87"},"nativeSrc":"12988:38:87","nodeType":"YulExpressionStatement","src":"12988:38:87"},{"nativeSrc":"13035:57:87","nodeType":"YulAssignment","src":"13035:57:87","value":{"arguments":[{"arguments":[{"name":"pos","nativeSrc":"13050:3:87","nodeType":"YulIdentifier","src":"13050:3:87"},{"arguments":[{"arguments":[{"name":"length","nativeSrc":"13063:6:87","nodeType":"YulIdentifier","src":"13063:6:87"},{"kind":"number","nativeSrc":"13071:2:87","nodeType":"YulLiteral","src":"13071:2:87","type":"","value":"31"}],"functionName":{"name":"add","nativeSrc":"13059:3:87","nodeType":"YulIdentifier","src":"13059:3:87"},"nativeSrc":"13059:15:87","nodeType":"YulFunctionCall","src":"13059:15:87"},{"arguments":[{"kind":"number","nativeSrc":"13080:2:87","nodeType":"YulLiteral","src":"13080:2:87","type":"","value":"31"}],"functionName":{"name":"not","nativeSrc":"13076:3:87","nodeType":"YulIdentifier","src":"13076:3:87"},"nativeSrc":"13076:7:87","nodeType":"YulFunctionCall","src":"13076:7:87"}],"functionName":{"name":"and","nativeSrc":"13055:3:87","nodeType":"YulIdentifier","src":"13055:3:87"},"nativeSrc":"13055:29:87","nodeType":"YulFunctionCall","src":"13055:29:87"}],"functionName":{"name":"add","nativeSrc":"13046:3:87","nodeType":"YulIdentifier","src":"13046:3:87"},"nativeSrc":"13046:39:87","nodeType":"YulFunctionCall","src":"13046:39:87"},{"kind":"number","nativeSrc":"13087:4:87","nodeType":"YulLiteral","src":"13087:4:87","type":"","value":"0x20"}],"functionName":{"name":"add","nativeSrc":"13042:3:87","nodeType":"YulIdentifier","src":"13042:3:87"},"nativeSrc":"13042:50:87","nodeType":"YulFunctionCall","src":"13042:50:87"},"variableNames":[{"name":"end","nativeSrc":"13035:3:87","nodeType":"YulIdentifier","src":"13035:3:87"}]}]},"name":"abi_encode_string_calldata","nativeSrc":"12831:267:87","nodeType":"YulFunctionDefinition","parameters":[{"name":"start","nativeSrc":"12867:5:87","nodeType":"YulTypedName","src":"12867:5:87","type":""},{"name":"length","nativeSrc":"12874:6:87","nodeType":"YulTypedName","src":"12874:6:87","type":""},{"name":"pos","nativeSrc":"12882:3:87","nodeType":"YulTypedName","src":"12882:3:87","type":""}],"returnVariables":[{"name":"end","nativeSrc":"12890:3:87","nodeType":"YulTypedName","src":"12890:3:87","type":""}],"src":"12831:267:87"},{"body":{"nativeSrc":"13234:116:87","nodeType":"YulBlock","src":"13234:116:87","statements":[{"expression":{"arguments":[{"name":"headStart","nativeSrc":"13251:9:87","nodeType":"YulIdentifier","src":"13251:9:87"},{"kind":"number","nativeSrc":"13262:2:87","nodeType":"YulLiteral","src":"13262:2:87","type":"","value":"32"}],"functionName":{"name":"mstore","nativeSrc":"13244:6:87","nodeType":"YulIdentifier","src":"13244:6:87"},"nativeSrc":"13244:21:87","nodeType":"YulFunctionCall","src":"13244:21:87"},"nativeSrc":"13244:21:87","nodeType":"YulExpressionStatement","src":"13244:21:87"},{"nativeSrc":"13274:70:87","nodeType":"YulAssignment","src":"13274:70:87","value":{"arguments":[{"name":"value0","nativeSrc":"13309:6:87","nodeType":"YulIdentifier","src":"13309:6:87"},{"name":"value1","nativeSrc":"13317:6:87","nodeType":"YulIdentifier","src":"13317:6:87"},{"arguments":[{"name":"headStart","nativeSrc":"13329:9:87","nodeType":"YulIdentifier","src":"13329:9:87"},{"kind":"number","nativeSrc":"13340:2:87","nodeType":"YulLiteral","src":"13340:2:87","type":"","value":"32"}],"functionName":{"name":"add","nativeSrc":"13325:3:87","nodeType":"YulIdentifier","src":"13325:3:87"},"nativeSrc":"13325:18:87","nodeType":"YulFunctionCall","src":"13325:18:87"}],"functionName":{"name":"abi_encode_string_calldata","nativeSrc":"13282:26:87","nodeType":"YulIdentifier","src":"13282:26:87"},"nativeSrc":"13282:62:87","nodeType":"YulFunctionCall","src":"13282:62:87"},"variableNames":[{"name":"tail","nativeSrc":"13274:4:87","nodeType":"YulIdentifier","src":"13274:4:87"}]}]},"name":"abi_encode_tuple_t_string_calldata_ptr__to_t_string_memory_ptr__fromStack_reversed","nativeSrc":"13103:247:87","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nativeSrc":"13195:9:87","nodeType":"YulTypedName","src":"13195:9:87","type":""},{"name":"value1","nativeSrc":"13206:6:87","nodeType":"YulTypedName","src":"13206:6:87","type":""},{"name":"value0","nativeSrc":"13214:6:87","nodeType":"YulTypedName","src":"13214:6:87","type":""}],"returnVariables":[{"name":"tail","nativeSrc":"13225:4:87","nodeType":"YulTypedName","src":"13225:4:87","type":""}],"src":"13103:247:87"},{"body":{"nativeSrc":"13435:169:87","nodeType":"YulBlock","src":"13435:169:87","statements":[{"body":{"nativeSrc":"13481:16:87","nodeType":"YulBlock","src":"13481:16:87","statements":[{"expression":{"arguments":[{"kind":"number","nativeSrc":"13490:1:87","nodeType":"YulLiteral","src":"13490:1:87","type":"","value":"0"},{"kind":"number","nativeSrc":"13493:1:87","nodeType":"YulLiteral","src":"13493:1:87","type":"","value":"0"}],"functionName":{"name":"revert","nativeSrc":"13483:6:87","nodeType":"YulIdentifier","src":"13483:6:87"},"nativeSrc":"13483:12:87","nodeType":"YulFunctionCall","src":"13483:12:87"},"nativeSrc":"13483:12:87","nodeType":"YulExpressionStatement","src":"13483:12:87"}]},"condition":{"arguments":[{"arguments":[{"name":"dataEnd","nativeSrc":"13456:7:87","nodeType":"YulIdentifier","src":"13456:7:87"},{"name":"headStart","nativeSrc":"13465:9:87","nodeType":"YulIdentifier","src":"13465:9:87"}],"functionName":{"name":"sub","nativeSrc":"13452:3:87","nodeType":"YulIdentifier","src":"13452:3:87"},"nativeSrc":"13452:23:87","nodeType":"YulFunctionCall","src":"13452:23:87"},{"kind":"number","nativeSrc":"13477:2:87","nodeType":"YulLiteral","src":"13477:2:87","type":"","value":"32"}],"functionName":{"name":"slt","nativeSrc":"13448:3:87","nodeType":"YulIdentifier","src":"13448:3:87"},"nativeSrc":"13448:32:87","nodeType":"YulFunctionCall","src":"13448:32:87"},"nativeSrc":"13445:52:87","nodeType":"YulIf","src":"13445:52:87"},{"nativeSrc":"13506:29:87","nodeType":"YulVariableDeclaration","src":"13506:29:87","value":{"arguments":[{"name":"headStart","nativeSrc":"13525:9:87","nodeType":"YulIdentifier","src":"13525:9:87"}],"functionName":{"name":"mload","nativeSrc":"13519:5:87","nodeType":"YulIdentifier","src":"13519:5:87"},"nativeSrc":"13519:16:87","nodeType":"YulFunctionCall","src":"13519:16:87"},"variables":[{"name":"value","nativeSrc":"13510:5:87","nodeType":"YulTypedName","src":"13510:5:87","type":""}]},{"expression":{"arguments":[{"name":"value","nativeSrc":"13568:5:87","nodeType":"YulIdentifier","src":"13568:5:87"}],"functionName":{"name":"validator_revert_bytes4","nativeSrc":"13544:23:87","nodeType":"YulIdentifier","src":"13544:23:87"},"nativeSrc":"13544:30:87","nodeType":"YulFunctionCall","src":"13544:30:87"},"nativeSrc":"13544:30:87","nodeType":"YulExpressionStatement","src":"13544:30:87"},{"nativeSrc":"13583:15:87","nodeType":"YulAssignment","src":"13583:15:87","value":{"name":"value","nativeSrc":"13593:5:87","nodeType":"YulIdentifier","src":"13593:5:87"},"variableNames":[{"name":"value0","nativeSrc":"13583:6:87","nodeType":"YulIdentifier","src":"13583:6:87"}]}]},"name":"abi_decode_tuple_t_bytes4_fromMemory","nativeSrc":"13355:249:87","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nativeSrc":"13401:9:87","nodeType":"YulTypedName","src":"13401:9:87","type":""},{"name":"dataEnd","nativeSrc":"13412:7:87","nodeType":"YulTypedName","src":"13412:7:87","type":""}],"returnVariables":[{"name":"value0","nativeSrc":"13424:6:87","nodeType":"YulTypedName","src":"13424:6:87","type":""}],"src":"13355:249:87"},{"body":{"nativeSrc":"13794:254:87","nodeType":"YulBlock","src":"13794:254:87","statements":[{"expression":{"arguments":[{"name":"headStart","nativeSrc":"13811:9:87","nodeType":"YulIdentifier","src":"13811:9:87"},{"arguments":[{"name":"value0","nativeSrc":"13826:6:87","nodeType":"YulIdentifier","src":"13826:6:87"},{"arguments":[{"arguments":[{"kind":"number","nativeSrc":"13842:3:87","nodeType":"YulLiteral","src":"13842:3:87","type":"","value":"160"},{"kind":"number","nativeSrc":"13847:1:87","nodeType":"YulLiteral","src":"13847:1:87","type":"","value":"1"}],"functionName":{"name":"shl","nativeSrc":"13838:3:87","nodeType":"YulIdentifier","src":"13838:3:87"},"nativeSrc":"13838:11:87","nodeType":"YulFunctionCall","src":"13838:11:87"},{"kind":"number","nativeSrc":"13851:1:87","nodeType":"YulLiteral","src":"13851:1:87","type":"","value":"1"}],"functionName":{"name":"sub","nativeSrc":"13834:3:87","nodeType":"YulIdentifier","src":"13834:3:87"},"nativeSrc":"13834:19:87","nodeType":"YulFunctionCall","src":"13834:19:87"}],"functionName":{"name":"and","nativeSrc":"13822:3:87","nodeType":"YulIdentifier","src":"13822:3:87"},"nativeSrc":"13822:32:87","nodeType":"YulFunctionCall","src":"13822:32:87"}],"functionName":{"name":"mstore","nativeSrc":"13804:6:87","nodeType":"YulIdentifier","src":"13804:6:87"},"nativeSrc":"13804:51:87","nodeType":"YulFunctionCall","src":"13804:51:87"},"nativeSrc":"13804:51:87","nodeType":"YulExpressionStatement","src":"13804:51:87"},{"expression":{"arguments":[{"arguments":[{"name":"headStart","nativeSrc":"13875:9:87","nodeType":"YulIdentifier","src":"13875:9:87"},{"kind":"number","nativeSrc":"13886:2:87","nodeType":"YulLiteral","src":"13886:2:87","type":"","value":"32"}],"functionName":{"name":"add","nativeSrc":"13871:3:87","nodeType":"YulIdentifier","src":"13871:3:87"},"nativeSrc":"13871:18:87","nodeType":"YulFunctionCall","src":"13871:18:87"},{"arguments":[{"name":"value1","nativeSrc":"13895:6:87","nodeType":"YulIdentifier","src":"13895:6:87"},{"arguments":[{"arguments":[{"kind":"number","nativeSrc":"13911:3:87","nodeType":"YulLiteral","src":"13911:3:87","type":"","value":"160"},{"kind":"number","nativeSrc":"13916:1:87","nodeType":"YulLiteral","src":"13916:1:87","type":"","value":"1"}],"functionName":{"name":"shl","nativeSrc":"13907:3:87","nodeType":"YulIdentifier","src":"13907:3:87"},"nativeSrc":"13907:11:87","nodeType":"YulFunctionCall","src":"13907:11:87"},{"kind":"number","nativeSrc":"13920:1:87","nodeType":"YulLiteral","src":"13920:1:87","type":"","value":"1"}],"functionName":{"name":"sub","nativeSrc":"13903:3:87","nodeType":"YulIdentifier","src":"13903:3:87"},"nativeSrc":"13903:19:87","nodeType":"YulFunctionCall","src":"13903:19:87"}],"functionName":{"name":"and","nativeSrc":"13891:3:87","nodeType":"YulIdentifier","src":"13891:3:87"},"nativeSrc":"13891:32:87","nodeType":"YulFunctionCall","src":"13891:32:87"}],"functionName":{"name":"mstore","nativeSrc":"13864:6:87","nodeType":"YulIdentifier","src":"13864:6:87"},"nativeSrc":"13864:60:87","nodeType":"YulFunctionCall","src":"13864:60:87"},"nativeSrc":"13864:60:87","nodeType":"YulExpressionStatement","src":"13864:60:87"},{"expression":{"arguments":[{"arguments":[{"name":"headStart","nativeSrc":"13944:9:87","nodeType":"YulIdentifier","src":"13944:9:87"},{"kind":"number","nativeSrc":"13955:2:87","nodeType":"YulLiteral","src":"13955:2:87","type":"","value":"64"}],"functionName":{"name":"add","nativeSrc":"13940:3:87","nodeType":"YulIdentifier","src":"13940:3:87"},"nativeSrc":"13940:18:87","nodeType":"YulFunctionCall","src":"13940:18:87"},{"kind":"number","nativeSrc":"13960:2:87","nodeType":"YulLiteral","src":"13960:2:87","type":"","value":"96"}],"functionName":{"name":"mstore","nativeSrc":"13933:6:87","nodeType":"YulIdentifier","src":"13933:6:87"},"nativeSrc":"13933:30:87","nodeType":"YulFunctionCall","src":"13933:30:87"},"nativeSrc":"13933:30:87","nodeType":"YulExpressionStatement","src":"13933:30:87"},{"nativeSrc":"13972:70:87","nodeType":"YulAssignment","src":"13972:70:87","value":{"arguments":[{"name":"value2","nativeSrc":"14007:6:87","nodeType":"YulIdentifier","src":"14007:6:87"},{"name":"value3","nativeSrc":"14015:6:87","nodeType":"YulIdentifier","src":"14015:6:87"},{"arguments":[{"name":"headStart","nativeSrc":"14027:9:87","nodeType":"YulIdentifier","src":"14027:9:87"},{"kind":"number","nativeSrc":"14038:2:87","nodeType":"YulLiteral","src":"14038:2:87","type":"","value":"96"}],"functionName":{"name":"add","nativeSrc":"14023:3:87","nodeType":"YulIdentifier","src":"14023:3:87"},"nativeSrc":"14023:18:87","nodeType":"YulFunctionCall","src":"14023:18:87"}],"functionName":{"name":"abi_encode_string_calldata","nativeSrc":"13980:26:87","nodeType":"YulIdentifier","src":"13980:26:87"},"nativeSrc":"13980:62:87","nodeType":"YulFunctionCall","src":"13980:62:87"},"variableNames":[{"name":"tail","nativeSrc":"13972:4:87","nodeType":"YulIdentifier","src":"13972:4:87"}]}]},"name":"abi_encode_tuple_t_address_t_address_t_bytes_calldata_ptr__to_t_address_t_address_t_bytes_memory_ptr__fromStack_reversed","nativeSrc":"13609:439:87","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nativeSrc":"13739:9:87","nodeType":"YulTypedName","src":"13739:9:87","type":""},{"name":"value3","nativeSrc":"13750:6:87","nodeType":"YulTypedName","src":"13750:6:87","type":""},{"name":"value2","nativeSrc":"13758:6:87","nodeType":"YulTypedName","src":"13758:6:87","type":""},{"name":"value1","nativeSrc":"13766:6:87","nodeType":"YulTypedName","src":"13766:6:87","type":""},{"name":"value0","nativeSrc":"13774:6:87","nodeType":"YulTypedName","src":"13774:6:87","type":""}],"returnVariables":[{"name":"tail","nativeSrc":"13785:4:87","nodeType":"YulTypedName","src":"13785:4:87","type":""}],"src":"13609:439:87"},{"body":{"nativeSrc":"14085:95:87","nodeType":"YulBlock","src":"14085:95:87","statements":[{"expression":{"arguments":[{"kind":"number","nativeSrc":"14102:1:87","nodeType":"YulLiteral","src":"14102:1:87","type":"","value":"0"},{"arguments":[{"kind":"number","nativeSrc":"14109:3:87","nodeType":"YulLiteral","src":"14109:3:87","type":"","value":"224"},{"kind":"number","nativeSrc":"14114:10:87","nodeType":"YulLiteral","src":"14114:10:87","type":"","value":"0x4e487b71"}],"functionName":{"name":"shl","nativeSrc":"14105:3:87","nodeType":"YulIdentifier","src":"14105:3:87"},"nativeSrc":"14105:20:87","nodeType":"YulFunctionCall","src":"14105:20:87"}],"functionName":{"name":"mstore","nativeSrc":"14095:6:87","nodeType":"YulIdentifier","src":"14095:6:87"},"nativeSrc":"14095:31:87","nodeType":"YulFunctionCall","src":"14095:31:87"},"nativeSrc":"14095:31:87","nodeType":"YulExpressionStatement","src":"14095:31:87"},{"expression":{"arguments":[{"kind":"number","nativeSrc":"14142:1:87","nodeType":"YulLiteral","src":"14142:1:87","type":"","value":"4"},{"kind":"number","nativeSrc":"14145:4:87","nodeType":"YulLiteral","src":"14145:4:87","type":"","value":"0x11"}],"functionName":{"name":"mstore","nativeSrc":"14135:6:87","nodeType":"YulIdentifier","src":"14135:6:87"},"nativeSrc":"14135:15:87","nodeType":"YulFunctionCall","src":"14135:15:87"},"nativeSrc":"14135:15:87","nodeType":"YulExpressionStatement","src":"14135:15:87"},{"expression":{"arguments":[{"kind":"number","nativeSrc":"14166:1:87","nodeType":"YulLiteral","src":"14166:1:87","type":"","value":"0"},{"kind":"number","nativeSrc":"14169:4:87","nodeType":"YulLiteral","src":"14169:4:87","type":"","value":"0x24"}],"functionName":{"name":"revert","nativeSrc":"14159:6:87","nodeType":"YulIdentifier","src":"14159:6:87"},"nativeSrc":"14159:15:87","nodeType":"YulFunctionCall","src":"14159:15:87"},"nativeSrc":"14159:15:87","nodeType":"YulExpressionStatement","src":"14159:15:87"}]},"name":"panic_error_0x11","nativeSrc":"14053:127:87","nodeType":"YulFunctionDefinition","src":"14053:127:87"},{"body":{"nativeSrc":"14234:79:87","nodeType":"YulBlock","src":"14234:79:87","statements":[{"nativeSrc":"14244:17:87","nodeType":"YulAssignment","src":"14244:17:87","value":{"arguments":[{"name":"x","nativeSrc":"14256:1:87","nodeType":"YulIdentifier","src":"14256:1:87"},{"name":"y","nativeSrc":"14259:1:87","nodeType":"YulIdentifier","src":"14259:1:87"}],"functionName":{"name":"sub","nativeSrc":"14252:3:87","nodeType":"YulIdentifier","src":"14252:3:87"},"nativeSrc":"14252:9:87","nodeType":"YulFunctionCall","src":"14252:9:87"},"variableNames":[{"name":"diff","nativeSrc":"14244:4:87","nodeType":"YulIdentifier","src":"14244:4:87"}]},{"body":{"nativeSrc":"14285:22:87","nodeType":"YulBlock","src":"14285:22:87","statements":[{"expression":{"arguments":[],"functionName":{"name":"panic_error_0x11","nativeSrc":"14287:16:87","nodeType":"YulIdentifier","src":"14287:16:87"},"nativeSrc":"14287:18:87","nodeType":"YulFunctionCall","src":"14287:18:87"},"nativeSrc":"14287:18:87","nodeType":"YulExpressionStatement","src":"14287:18:87"}]},"condition":{"arguments":[{"name":"diff","nativeSrc":"14276:4:87","nodeType":"YulIdentifier","src":"14276:4:87"},{"name":"x","nativeSrc":"14282:1:87","nodeType":"YulIdentifier","src":"14282:1:87"}],"functionName":{"name":"gt","nativeSrc":"14273:2:87","nodeType":"YulIdentifier","src":"14273:2:87"},"nativeSrc":"14273:11:87","nodeType":"YulFunctionCall","src":"14273:11:87"},"nativeSrc":"14270:37:87","nodeType":"YulIf","src":"14270:37:87"}]},"name":"checked_sub_t_uint256","nativeSrc":"14185:128:87","nodeType":"YulFunctionDefinition","parameters":[{"name":"x","nativeSrc":"14216:1:87","nodeType":"YulTypedName","src":"14216:1:87","type":""},{"name":"y","nativeSrc":"14219:1:87","nodeType":"YulTypedName","src":"14219:1:87","type":""}],"returnVariables":[{"name":"diff","nativeSrc":"14225:4:87","nodeType":"YulTypedName","src":"14225:4:87","type":""}],"src":"14185:128:87"},{"body":{"nativeSrc":"14448:201:87","nodeType":"YulBlock","src":"14448:201:87","statements":[{"body":{"nativeSrc":"14486:16:87","nodeType":"YulBlock","src":"14486:16:87","statements":[{"expression":{"arguments":[{"kind":"number","nativeSrc":"14495:1:87","nodeType":"YulLiteral","src":"14495:1:87","type":"","value":"0"},{"kind":"number","nativeSrc":"14498:1:87","nodeType":"YulLiteral","src":"14498:1:87","type":"","value":"0"}],"functionName":{"name":"revert","nativeSrc":"14488:6:87","nodeType":"YulIdentifier","src":"14488:6:87"},"nativeSrc":"14488:12:87","nodeType":"YulFunctionCall","src":"14488:12:87"},"nativeSrc":"14488:12:87","nodeType":"YulExpressionStatement","src":"14488:12:87"}]},"condition":{"arguments":[{"name":"startIndex","nativeSrc":"14464:10:87","nodeType":"YulIdentifier","src":"14464:10:87"},{"name":"endIndex","nativeSrc":"14476:8:87","nodeType":"YulIdentifier","src":"14476:8:87"}],"functionName":{"name":"gt","nativeSrc":"14461:2:87","nodeType":"YulIdentifier","src":"14461:2:87"},"nativeSrc":"14461:24:87","nodeType":"YulFunctionCall","src":"14461:24:87"},"nativeSrc":"14458:44:87","nodeType":"YulIf","src":"14458:44:87"},{"body":{"nativeSrc":"14535:16:87","nodeType":"YulBlock","src":"14535:16:87","statements":[{"expression":{"arguments":[{"kind":"number","nativeSrc":"14544:1:87","nodeType":"YulLiteral","src":"14544:1:87","type":"","value":"0"},{"kind":"number","nativeSrc":"14547:1:87","nodeType":"YulLiteral","src":"14547:1:87","type":"","value":"0"}],"functionName":{"name":"revert","nativeSrc":"14537:6:87","nodeType":"YulIdentifier","src":"14537:6:87"},"nativeSrc":"14537:12:87","nodeType":"YulFunctionCall","src":"14537:12:87"},"nativeSrc":"14537:12:87","nodeType":"YulExpressionStatement","src":"14537:12:87"}]},"condition":{"arguments":[{"name":"endIndex","nativeSrc":"14517:8:87","nodeType":"YulIdentifier","src":"14517:8:87"},{"name":"length","nativeSrc":"14527:6:87","nodeType":"YulIdentifier","src":"14527:6:87"}],"functionName":{"name":"gt","nativeSrc":"14514:2:87","nodeType":"YulIdentifier","src":"14514:2:87"},"nativeSrc":"14514:20:87","nodeType":"YulFunctionCall","src":"14514:20:87"},"nativeSrc":"14511:40:87","nodeType":"YulIf","src":"14511:40:87"},{"nativeSrc":"14560:36:87","nodeType":"YulAssignment","src":"14560:36:87","value":{"arguments":[{"name":"offset","nativeSrc":"14577:6:87","nodeType":"YulIdentifier","src":"14577:6:87"},{"name":"startIndex","nativeSrc":"14585:10:87","nodeType":"YulIdentifier","src":"14585:10:87"}],"functionName":{"name":"add","nativeSrc":"14573:3:87","nodeType":"YulIdentifier","src":"14573:3:87"},"nativeSrc":"14573:23:87","nodeType":"YulFunctionCall","src":"14573:23:87"},"variableNames":[{"name":"offsetOut","nativeSrc":"14560:9:87","nodeType":"YulIdentifier","src":"14560:9:87"}]},{"nativeSrc":"14605:38:87","nodeType":"YulAssignment","src":"14605:38:87","value":{"arguments":[{"name":"endIndex","nativeSrc":"14622:8:87","nodeType":"YulIdentifier","src":"14622:8:87"},{"name":"startIndex","nativeSrc":"14632:10:87","nodeType":"YulIdentifier","src":"14632:10:87"}],"functionName":{"name":"sub","nativeSrc":"14618:3:87","nodeType":"YulIdentifier","src":"14618:3:87"},"nativeSrc":"14618:25:87","nodeType":"YulFunctionCall","src":"14618:25:87"},"variableNames":[{"name":"lengthOut","nativeSrc":"14605:9:87","nodeType":"YulIdentifier","src":"14605:9:87"}]}]},"name":"calldata_array_index_range_access_t_bytes_calldata_ptr","nativeSrc":"14318:331:87","nodeType":"YulFunctionDefinition","parameters":[{"name":"offset","nativeSrc":"14382:6:87","nodeType":"YulTypedName","src":"14382:6:87","type":""},{"name":"length","nativeSrc":"14390:6:87","nodeType":"YulTypedName","src":"14390:6:87","type":""},{"name":"startIndex","nativeSrc":"14398:10:87","nodeType":"YulTypedName","src":"14398:10:87","type":""},{"name":"endIndex","nativeSrc":"14410:8:87","nodeType":"YulTypedName","src":"14410:8:87","type":""}],"returnVariables":[{"name":"offsetOut","nativeSrc":"14423:9:87","nodeType":"YulTypedName","src":"14423:9:87","type":""},{"name":"lengthOut","nativeSrc":"14434:9:87","nodeType":"YulTypedName","src":"14434:9:87","type":""}],"src":"14318:331:87"},{"body":{"nativeSrc":"14686:95:87","nodeType":"YulBlock","src":"14686:95:87","statements":[{"expression":{"arguments":[{"kind":"number","nativeSrc":"14703:1:87","nodeType":"YulLiteral","src":"14703:1:87","type":"","value":"0"},{"arguments":[{"kind":"number","nativeSrc":"14710:3:87","nodeType":"YulLiteral","src":"14710:3:87","type":"","value":"224"},{"kind":"number","nativeSrc":"14715:10:87","nodeType":"YulLiteral","src":"14715:10:87","type":"","value":"0x4e487b71"}],"functionName":{"name":"shl","nativeSrc":"14706:3:87","nodeType":"YulIdentifier","src":"14706:3:87"},"nativeSrc":"14706:20:87","nodeType":"YulFunctionCall","src":"14706:20:87"}],"functionName":{"name":"mstore","nativeSrc":"14696:6:87","nodeType":"YulIdentifier","src":"14696:6:87"},"nativeSrc":"14696:31:87","nodeType":"YulFunctionCall","src":"14696:31:87"},"nativeSrc":"14696:31:87","nodeType":"YulExpressionStatement","src":"14696:31:87"},{"expression":{"arguments":[{"kind":"number","nativeSrc":"14743:1:87","nodeType":"YulLiteral","src":"14743:1:87","type":"","value":"4"},{"kind":"number","nativeSrc":"14746:4:87","nodeType":"YulLiteral","src":"14746:4:87","type":"","value":"0x41"}],"functionName":{"name":"mstore","nativeSrc":"14736:6:87","nodeType":"YulIdentifier","src":"14736:6:87"},"nativeSrc":"14736:15:87","nodeType":"YulFunctionCall","src":"14736:15:87"},"nativeSrc":"14736:15:87","nodeType":"YulExpressionStatement","src":"14736:15:87"},{"expression":{"arguments":[{"kind":"number","nativeSrc":"14767:1:87","nodeType":"YulLiteral","src":"14767:1:87","type":"","value":"0"},{"kind":"number","nativeSrc":"14770:4:87","nodeType":"YulLiteral","src":"14770:4:87","type":"","value":"0x24"}],"functionName":{"name":"revert","nativeSrc":"14760:6:87","nodeType":"YulIdentifier","src":"14760:6:87"},"nativeSrc":"14760:15:87","nodeType":"YulFunctionCall","src":"14760:15:87"},"nativeSrc":"14760:15:87","nodeType":"YulExpressionStatement","src":"14760:15:87"}]},"name":"panic_error_0x41","nativeSrc":"14654:127:87","nodeType":"YulFunctionDefinition","src":"14654:127:87"},{"body":{"nativeSrc":"14880:427:87","nodeType":"YulBlock","src":"14880:427:87","statements":[{"nativeSrc":"14890:51:87","nodeType":"YulVariableDeclaration","src":"14890:51:87","value":{"arguments":[{"name":"ptr_to_tail","nativeSrc":"14929:11:87","nodeType":"YulIdentifier","src":"14929:11:87"}],"functionName":{"name":"calldataload","nativeSrc":"14916:12:87","nodeType":"YulIdentifier","src":"14916:12:87"},"nativeSrc":"14916:25:87","nodeType":"YulFunctionCall","src":"14916:25:87"},"variables":[{"name":"rel_offset_of_tail","nativeSrc":"14894:18:87","nodeType":"YulTypedName","src":"14894:18:87","type":""}]},{"body":{"nativeSrc":"15030:16:87","nodeType":"YulBlock","src":"15030:16:87","statements":[{"expression":{"arguments":[{"kind":"number","nativeSrc":"15039:1:87","nodeType":"YulLiteral","src":"15039:1:87","type":"","value":"0"},{"kind":"number","nativeSrc":"15042:1:87","nodeType":"YulLiteral","src":"15042:1:87","type":"","value":"0"}],"functionName":{"name":"revert","nativeSrc":"15032:6:87","nodeType":"YulIdentifier","src":"15032:6:87"},"nativeSrc":"15032:12:87","nodeType":"YulFunctionCall","src":"15032:12:87"},"nativeSrc":"15032:12:87","nodeType":"YulExpressionStatement","src":"15032:12:87"}]},"condition":{"arguments":[{"arguments":[{"name":"rel_offset_of_tail","nativeSrc":"14964:18:87","nodeType":"YulIdentifier","src":"14964:18:87"},{"arguments":[{"arguments":[{"arguments":[],"functionName":{"name":"calldatasize","nativeSrc":"14992:12:87","nodeType":"YulIdentifier","src":"14992:12:87"},"nativeSrc":"14992:14:87","nodeType":"YulFunctionCall","src":"14992:14:87"},{"name":"base_ref","nativeSrc":"15008:8:87","nodeType":"YulIdentifier","src":"15008:8:87"}],"functionName":{"name":"sub","nativeSrc":"14988:3:87","nodeType":"YulIdentifier","src":"14988:3:87"},"nativeSrc":"14988:29:87","nodeType":"YulFunctionCall","src":"14988:29:87"},{"arguments":[{"kind":"number","nativeSrc":"15023:2:87","nodeType":"YulLiteral","src":"15023:2:87","type":"","value":"30"}],"functionName":{"name":"not","nativeSrc":"15019:3:87","nodeType":"YulIdentifier","src":"15019:3:87"},"nativeSrc":"15019:7:87","nodeType":"YulFunctionCall","src":"15019:7:87"}],"functionName":{"name":"add","nativeSrc":"14984:3:87","nodeType":"YulIdentifier","src":"14984:3:87"},"nativeSrc":"14984:43:87","nodeType":"YulFunctionCall","src":"14984:43:87"}],"functionName":{"name":"slt","nativeSrc":"14960:3:87","nodeType":"YulIdentifier","src":"14960:3:87"},"nativeSrc":"14960:68:87","nodeType":"YulFunctionCall","src":"14960:68:87"}],"functionName":{"name":"iszero","nativeSrc":"14953:6:87","nodeType":"YulIdentifier","src":"14953:6:87"},"nativeSrc":"14953:76:87","nodeType":"YulFunctionCall","src":"14953:76:87"},"nativeSrc":"14950:96:87","nodeType":"YulIf","src":"14950:96:87"},{"nativeSrc":"15055:47:87","nodeType":"YulVariableDeclaration","src":"15055:47:87","value":{"arguments":[{"name":"base_ref","nativeSrc":"15073:8:87","nodeType":"YulIdentifier","src":"15073:8:87"},{"name":"rel_offset_of_tail","nativeSrc":"15083:18:87","nodeType":"YulIdentifier","src":"15083:18:87"}],"functionName":{"name":"add","nativeSrc":"15069:3:87","nodeType":"YulIdentifier","src":"15069:3:87"},"nativeSrc":"15069:33:87","nodeType":"YulFunctionCall","src":"15069:33:87"},"variables":[{"name":"addr_1","nativeSrc":"15059:6:87","nodeType":"YulTypedName","src":"15059:6:87","type":""}]},{"nativeSrc":"15111:30:87","nodeType":"YulAssignment","src":"15111:30:87","value":{"arguments":[{"name":"addr_1","nativeSrc":"15134:6:87","nodeType":"YulIdentifier","src":"15134:6:87"}],"functionName":{"name":"calldataload","nativeSrc":"15121:12:87","nodeType":"YulIdentifier","src":"15121:12:87"},"nativeSrc":"15121:20:87","nodeType":"YulFunctionCall","src":"15121:20:87"},"variableNames":[{"name":"length","nativeSrc":"15111:6:87","nodeType":"YulIdentifier","src":"15111:6:87"}]},{"body":{"nativeSrc":"15184:16:87","nodeType":"YulBlock","src":"15184:16:87","statements":[{"expression":{"arguments":[{"kind":"number","nativeSrc":"15193:1:87","nodeType":"YulLiteral","src":"15193:1:87","type":"","value":"0"},{"kind":"number","nativeSrc":"15196:1:87","nodeType":"YulLiteral","src":"15196:1:87","type":"","value":"0"}],"functionName":{"name":"revert","nativeSrc":"15186:6:87","nodeType":"YulIdentifier","src":"15186:6:87"},"nativeSrc":"15186:12:87","nodeType":"YulFunctionCall","src":"15186:12:87"},"nativeSrc":"15186:12:87","nodeType":"YulExpressionStatement","src":"15186:12:87"}]},"condition":{"arguments":[{"name":"length","nativeSrc":"15156:6:87","nodeType":"YulIdentifier","src":"15156:6:87"},{"kind":"number","nativeSrc":"15164:18:87","nodeType":"YulLiteral","src":"15164:18:87","type":"","value":"0xffffffffffffffff"}],"functionName":{"name":"gt","nativeSrc":"15153:2:87","nodeType":"YulIdentifier","src":"15153:2:87"},"nativeSrc":"15153:30:87","nodeType":"YulFunctionCall","src":"15153:30:87"},"nativeSrc":"15150:50:87","nodeType":"YulIf","src":"15150:50:87"},{"nativeSrc":"15209:25:87","nodeType":"YulAssignment","src":"15209:25:87","value":{"arguments":[{"name":"addr_1","nativeSrc":"15221:6:87","nodeType":"YulIdentifier","src":"15221:6:87"},{"kind":"number","nativeSrc":"15229:4:87","nodeType":"YulLiteral","src":"15229:4:87","type":"","value":"0x20"}],"functionName":{"name":"add","nativeSrc":"15217:3:87","nodeType":"YulIdentifier","src":"15217:3:87"},"nativeSrc":"15217:17:87","nodeType":"YulFunctionCall","src":"15217:17:87"},"variableNames":[{"name":"addr","nativeSrc":"15209:4:87","nodeType":"YulIdentifier","src":"15209:4:87"}]},{"body":{"nativeSrc":"15285:16:87","nodeType":"YulBlock","src":"15285:16:87","statements":[{"expression":{"arguments":[{"kind":"number","nativeSrc":"15294:1:87","nodeType":"YulLiteral","src":"15294:1:87","type":"","value":"0"},{"kind":"number","nativeSrc":"15297:1:87","nodeType":"YulLiteral","src":"15297:1:87","type":"","value":"0"}],"functionName":{"name":"revert","nativeSrc":"15287:6:87","nodeType":"YulIdentifier","src":"15287:6:87"},"nativeSrc":"15287:12:87","nodeType":"YulFunctionCall","src":"15287:12:87"},"nativeSrc":"15287:12:87","nodeType":"YulExpressionStatement","src":"15287:12:87"}]},"condition":{"arguments":[{"name":"addr","nativeSrc":"15250:4:87","nodeType":"YulIdentifier","src":"15250:4:87"},{"arguments":[{"arguments":[],"functionName":{"name":"calldatasize","nativeSrc":"15260:12:87","nodeType":"YulIdentifier","src":"15260:12:87"},"nativeSrc":"15260:14:87","nodeType":"YulFunctionCall","src":"15260:14:87"},{"name":"length","nativeSrc":"15276:6:87","nodeType":"YulIdentifier","src":"15276:6:87"}],"functionName":{"name":"sub","nativeSrc":"15256:3:87","nodeType":"YulIdentifier","src":"15256:3:87"},"nativeSrc":"15256:27:87","nodeType":"YulFunctionCall","src":"15256:27:87"}],"functionName":{"name":"sgt","nativeSrc":"15246:3:87","nodeType":"YulIdentifier","src":"15246:3:87"},"nativeSrc":"15246:38:87","nodeType":"YulFunctionCall","src":"15246:38:87"},"nativeSrc":"15243:58:87","nodeType":"YulIf","src":"15243:58:87"}]},"name":"access_calldata_tail_t_bytes_calldata_ptr","nativeSrc":"14786:521:87","nodeType":"YulFunctionDefinition","parameters":[{"name":"base_ref","nativeSrc":"14837:8:87","nodeType":"YulTypedName","src":"14837:8:87","type":""},{"name":"ptr_to_tail","nativeSrc":"14847:11:87","nodeType":"YulTypedName","src":"14847:11:87","type":""}],"returnVariables":[{"name":"addr","nativeSrc":"14863:4:87","nodeType":"YulTypedName","src":"14863:4:87","type":""},{"name":"length","nativeSrc":"14869:6:87","nodeType":"YulTypedName","src":"14869:6:87","type":""}],"src":"14786:521:87"},{"body":{"nativeSrc":"15505:261:87","nodeType":"YulBlock","src":"15505:261:87","statements":[{"expression":{"arguments":[{"name":"pos","nativeSrc":"15528:3:87","nodeType":"YulIdentifier","src":"15528:3:87"},{"name":"value0","nativeSrc":"15533:6:87","nodeType":"YulIdentifier","src":"15533:6:87"},{"name":"value1","nativeSrc":"15541:6:87","nodeType":"YulIdentifier","src":"15541:6:87"}],"functionName":{"name":"calldatacopy","nativeSrc":"15515:12:87","nodeType":"YulIdentifier","src":"15515:12:87"},"nativeSrc":"15515:33:87","nodeType":"YulFunctionCall","src":"15515:33:87"},"nativeSrc":"15515:33:87","nodeType":"YulExpressionStatement","src":"15515:33:87"},{"nativeSrc":"15557:26:87","nodeType":"YulVariableDeclaration","src":"15557:26:87","value":{"arguments":[{"name":"pos","nativeSrc":"15571:3:87","nodeType":"YulIdentifier","src":"15571:3:87"},{"name":"value1","nativeSrc":"15576:6:87","nodeType":"YulIdentifier","src":"15576:6:87"}],"functionName":{"name":"add","nativeSrc":"15567:3:87","nodeType":"YulIdentifier","src":"15567:3:87"},"nativeSrc":"15567:16:87","nodeType":"YulFunctionCall","src":"15567:16:87"},"variables":[{"name":"_1","nativeSrc":"15561:2:87","nodeType":"YulTypedName","src":"15561:2:87","type":""}]},{"expression":{"arguments":[{"name":"_1","nativeSrc":"15599:2:87","nodeType":"YulIdentifier","src":"15599:2:87"},{"kind":"number","nativeSrc":"15603:1:87","nodeType":"YulLiteral","src":"15603:1:87","type":"","value":"0"}],"functionName":{"name":"mstore","nativeSrc":"15592:6:87","nodeType":"YulIdentifier","src":"15592:6:87"},"nativeSrc":"15592:13:87","nodeType":"YulFunctionCall","src":"15592:13:87"},"nativeSrc":"15592:13:87","nodeType":"YulExpressionStatement","src":"15592:13:87"},{"nativeSrc":"15614:27:87","nodeType":"YulVariableDeclaration","src":"15614:27:87","value":{"arguments":[{"name":"value2","nativeSrc":"15634:6:87","nodeType":"YulIdentifier","src":"15634:6:87"}],"functionName":{"name":"mload","nativeSrc":"15628:5:87","nodeType":"YulIdentifier","src":"15628:5:87"},"nativeSrc":"15628:13:87","nodeType":"YulFunctionCall","src":"15628:13:87"},"variables":[{"name":"length","nativeSrc":"15618:6:87","nodeType":"YulTypedName","src":"15618:6:87","type":""}]},{"expression":{"arguments":[{"name":"_1","nativeSrc":"15656:2:87","nodeType":"YulIdentifier","src":"15656:2:87"},{"arguments":[{"name":"value2","nativeSrc":"15664:6:87","nodeType":"YulIdentifier","src":"15664:6:87"},{"kind":"number","nativeSrc":"15672:4:87","nodeType":"YulLiteral","src":"15672:4:87","type":"","value":"0x20"}],"functionName":{"name":"add","nativeSrc":"15660:3:87","nodeType":"YulIdentifier","src":"15660:3:87"},"nativeSrc":"15660:17:87","nodeType":"YulFunctionCall","src":"15660:17:87"},{"name":"length","nativeSrc":"15679:6:87","nodeType":"YulIdentifier","src":"15679:6:87"}],"functionName":{"name":"mcopy","nativeSrc":"15650:5:87","nodeType":"YulIdentifier","src":"15650:5:87"},"nativeSrc":"15650:36:87","nodeType":"YulFunctionCall","src":"15650:36:87"},"nativeSrc":"15650:36:87","nodeType":"YulExpressionStatement","src":"15650:36:87"},{"nativeSrc":"15695:25:87","nodeType":"YulVariableDeclaration","src":"15695:25:87","value":{"arguments":[{"name":"_1","nativeSrc":"15709:2:87","nodeType":"YulIdentifier","src":"15709:2:87"},{"name":"length","nativeSrc":"15713:6:87","nodeType":"YulIdentifier","src":"15713:6:87"}],"functionName":{"name":"add","nativeSrc":"15705:3:87","nodeType":"YulIdentifier","src":"15705:3:87"},"nativeSrc":"15705:15:87","nodeType":"YulFunctionCall","src":"15705:15:87"},"variables":[{"name":"_2","nativeSrc":"15699:2:87","nodeType":"YulTypedName","src":"15699:2:87","type":""}]},{"expression":{"arguments":[{"name":"_2","nativeSrc":"15736:2:87","nodeType":"YulIdentifier","src":"15736:2:87"},{"kind":"number","nativeSrc":"15740:1:87","nodeType":"YulLiteral","src":"15740:1:87","type":"","value":"0"}],"functionName":{"name":"mstore","nativeSrc":"15729:6:87","nodeType":"YulIdentifier","src":"15729:6:87"},"nativeSrc":"15729:13:87","nodeType":"YulFunctionCall","src":"15729:13:87"},"nativeSrc":"15729:13:87","nodeType":"YulExpressionStatement","src":"15729:13:87"},{"nativeSrc":"15751:9:87","nodeType":"YulAssignment","src":"15751:9:87","value":{"name":"_2","nativeSrc":"15758:2:87","nodeType":"YulIdentifier","src":"15758:2:87"},"variableNames":[{"name":"end","nativeSrc":"15751:3:87","nodeType":"YulIdentifier","src":"15751:3:87"}]}]},"name":"abi_encode_tuple_packed_t_bytes_calldata_ptr_t_bytes_memory_ptr__to_t_bytes_memory_ptr_t_bytes_memory_ptr__nonPadded_inplace_fromStack_reversed","nativeSrc":"15312:454:87","nodeType":"YulFunctionDefinition","parameters":[{"name":"pos","nativeSrc":"15465:3:87","nodeType":"YulTypedName","src":"15465:3:87","type":""},{"name":"value2","nativeSrc":"15470:6:87","nodeType":"YulTypedName","src":"15470:6:87","type":""},{"name":"value1","nativeSrc":"15478:6:87","nodeType":"YulTypedName","src":"15478:6:87","type":""},{"name":"value0","nativeSrc":"15486:6:87","nodeType":"YulTypedName","src":"15486:6:87","type":""}],"returnVariables":[{"name":"end","nativeSrc":"15497:3:87","nodeType":"YulTypedName","src":"15497:3:87","type":""}],"src":"15312:454:87"},{"body":{"nativeSrc":"15954:311:87","nodeType":"YulBlock","src":"15954:311:87","statements":[{"nativeSrc":"15964:27:87","nodeType":"YulAssignment","src":"15964:27:87","value":{"arguments":[{"name":"headStart","nativeSrc":"15976:9:87","nodeType":"YulIdentifier","src":"15976:9:87"},{"kind":"number","nativeSrc":"15987:3:87","nodeType":"YulLiteral","src":"15987:3:87","type":"","value":"128"}],"functionName":{"name":"add","nativeSrc":"15972:3:87","nodeType":"YulIdentifier","src":"15972:3:87"},"nativeSrc":"15972:19:87","nodeType":"YulFunctionCall","src":"15972:19:87"},"variableNames":[{"name":"tail","nativeSrc":"15964:4:87","nodeType":"YulIdentifier","src":"15964:4:87"}]},{"expression":{"arguments":[{"name":"headStart","nativeSrc":"16007:9:87","nodeType":"YulIdentifier","src":"16007:9:87"},{"arguments":[{"name":"value0","nativeSrc":"16022:6:87","nodeType":"YulIdentifier","src":"16022:6:87"},{"arguments":[{"arguments":[{"kind":"number","nativeSrc":"16038:3:87","nodeType":"YulLiteral","src":"16038:3:87","type":"","value":"160"},{"kind":"number","nativeSrc":"16043:1:87","nodeType":"YulLiteral","src":"16043:1:87","type":"","value":"1"}],"functionName":{"name":"shl","nativeSrc":"16034:3:87","nodeType":"YulIdentifier","src":"16034:3:87"},"nativeSrc":"16034:11:87","nodeType":"YulFunctionCall","src":"16034:11:87"},{"kind":"number","nativeSrc":"16047:1:87","nodeType":"YulLiteral","src":"16047:1:87","type":"","value":"1"}],"functionName":{"name":"sub","nativeSrc":"16030:3:87","nodeType":"YulIdentifier","src":"16030:3:87"},"nativeSrc":"16030:19:87","nodeType":"YulFunctionCall","src":"16030:19:87"}],"functionName":{"name":"and","nativeSrc":"16018:3:87","nodeType":"YulIdentifier","src":"16018:3:87"},"nativeSrc":"16018:32:87","nodeType":"YulFunctionCall","src":"16018:32:87"}],"functionName":{"name":"mstore","nativeSrc":"16000:6:87","nodeType":"YulIdentifier","src":"16000:6:87"},"nativeSrc":"16000:51:87","nodeType":"YulFunctionCall","src":"16000:51:87"},"nativeSrc":"16000:51:87","nodeType":"YulExpressionStatement","src":"16000:51:87"},{"expression":{"arguments":[{"arguments":[{"name":"headStart","nativeSrc":"16071:9:87","nodeType":"YulIdentifier","src":"16071:9:87"},{"kind":"number","nativeSrc":"16082:2:87","nodeType":"YulLiteral","src":"16082:2:87","type":"","value":"32"}],"functionName":{"name":"add","nativeSrc":"16067:3:87","nodeType":"YulIdentifier","src":"16067:3:87"},"nativeSrc":"16067:18:87","nodeType":"YulFunctionCall","src":"16067:18:87"},{"arguments":[{"name":"value1","nativeSrc":"16091:6:87","nodeType":"YulIdentifier","src":"16091:6:87"},{"arguments":[{"arguments":[{"kind":"number","nativeSrc":"16107:3:87","nodeType":"YulLiteral","src":"16107:3:87","type":"","value":"160"},{"kind":"number","nativeSrc":"16112:1:87","nodeType":"YulLiteral","src":"16112:1:87","type":"","value":"1"}],"functionName":{"name":"shl","nativeSrc":"16103:3:87","nodeType":"YulIdentifier","src":"16103:3:87"},"nativeSrc":"16103:11:87","nodeType":"YulFunctionCall","src":"16103:11:87"},{"kind":"number","nativeSrc":"16116:1:87","nodeType":"YulLiteral","src":"16116:1:87","type":"","value":"1"}],"functionName":{"name":"sub","nativeSrc":"16099:3:87","nodeType":"YulIdentifier","src":"16099:3:87"},"nativeSrc":"16099:19:87","nodeType":"YulFunctionCall","src":"16099:19:87"}],"functionName":{"name":"and","nativeSrc":"16087:3:87","nodeType":"YulIdentifier","src":"16087:3:87"},"nativeSrc":"16087:32:87","nodeType":"YulFunctionCall","src":"16087:32:87"}],"functionName":{"name":"mstore","nativeSrc":"16060:6:87","nodeType":"YulIdentifier","src":"16060:6:87"},"nativeSrc":"16060:60:87","nodeType":"YulFunctionCall","src":"16060:60:87"},"nativeSrc":"16060:60:87","nodeType":"YulExpressionStatement","src":"16060:60:87"},{"expression":{"arguments":[{"arguments":[{"name":"headStart","nativeSrc":"16140:9:87","nodeType":"YulIdentifier","src":"16140:9:87"},{"kind":"number","nativeSrc":"16151:2:87","nodeType":"YulLiteral","src":"16151:2:87","type":"","value":"64"}],"functionName":{"name":"add","nativeSrc":"16136:3:87","nodeType":"YulIdentifier","src":"16136:3:87"},"nativeSrc":"16136:18:87","nodeType":"YulFunctionCall","src":"16136:18:87"},{"arguments":[{"name":"value2","nativeSrc":"16160:6:87","nodeType":"YulIdentifier","src":"16160:6:87"},{"arguments":[{"arguments":[{"kind":"number","nativeSrc":"16176:3:87","nodeType":"YulLiteral","src":"16176:3:87","type":"","value":"160"},{"kind":"number","nativeSrc":"16181:1:87","nodeType":"YulLiteral","src":"16181:1:87","type":"","value":"1"}],"functionName":{"name":"shl","nativeSrc":"16172:3:87","nodeType":"YulIdentifier","src":"16172:3:87"},"nativeSrc":"16172:11:87","nodeType":"YulFunctionCall","src":"16172:11:87"},{"kind":"number","nativeSrc":"16185:1:87","nodeType":"YulLiteral","src":"16185:1:87","type":"","value":"1"}],"functionName":{"name":"sub","nativeSrc":"16168:3:87","nodeType":"YulIdentifier","src":"16168:3:87"},"nativeSrc":"16168:19:87","nodeType":"YulFunctionCall","src":"16168:19:87"}],"functionName":{"name":"and","nativeSrc":"16156:3:87","nodeType":"YulIdentifier","src":"16156:3:87"},"nativeSrc":"16156:32:87","nodeType":"YulFunctionCall","src":"16156:32:87"}],"functionName":{"name":"mstore","nativeSrc":"16129:6:87","nodeType":"YulIdentifier","src":"16129:6:87"},"nativeSrc":"16129:60:87","nodeType":"YulFunctionCall","src":"16129:60:87"},"nativeSrc":"16129:60:87","nodeType":"YulExpressionStatement","src":"16129:60:87"},{"expression":{"arguments":[{"arguments":[{"name":"headStart","nativeSrc":"16209:9:87","nodeType":"YulIdentifier","src":"16209:9:87"},{"kind":"number","nativeSrc":"16220:2:87","nodeType":"YulLiteral","src":"16220:2:87","type":"","value":"96"}],"functionName":{"name":"add","nativeSrc":"16205:3:87","nodeType":"YulIdentifier","src":"16205:3:87"},"nativeSrc":"16205:18:87","nodeType":"YulFunctionCall","src":"16205:18:87"},{"arguments":[{"name":"value3","nativeSrc":"16229:6:87","nodeType":"YulIdentifier","src":"16229:6:87"},{"arguments":[{"kind":"number","nativeSrc":"16241:3:87","nodeType":"YulLiteral","src":"16241:3:87","type":"","value":"224"},{"kind":"number","nativeSrc":"16246:10:87","nodeType":"YulLiteral","src":"16246:10:87","type":"","value":"0xffffffff"}],"functionName":{"name":"shl","nativeSrc":"16237:3:87","nodeType":"YulIdentifier","src":"16237:3:87"},"nativeSrc":"16237:20:87","nodeType":"YulFunctionCall","src":"16237:20:87"}],"functionName":{"name":"and","nativeSrc":"16225:3:87","nodeType":"YulIdentifier","src":"16225:3:87"},"nativeSrc":"16225:33:87","nodeType":"YulFunctionCall","src":"16225:33:87"}],"functionName":{"name":"mstore","nativeSrc":"16198:6:87","nodeType":"YulIdentifier","src":"16198:6:87"},"nativeSrc":"16198:61:87","nodeType":"YulFunctionCall","src":"16198:61:87"},"nativeSrc":"16198:61:87","nodeType":"YulExpressionStatement","src":"16198:61:87"}]},"name":"abi_encode_tuple_t_address_t_address_t_address_t_bytes4__to_t_address_t_address_t_address_t_bytes4__fromStack_reversed","nativeSrc":"15771:494:87","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nativeSrc":"15899:9:87","nodeType":"YulTypedName","src":"15899:9:87","type":""},{"name":"value3","nativeSrc":"15910:6:87","nodeType":"YulTypedName","src":"15910:6:87","type":""},{"name":"value2","nativeSrc":"15918:6:87","nodeType":"YulTypedName","src":"15918:6:87","type":""},{"name":"value1","nativeSrc":"15926:6:87","nodeType":"YulTypedName","src":"15926:6:87","type":""},{"name":"value0","nativeSrc":"15934:6:87","nodeType":"YulTypedName","src":"15934:6:87","type":""}],"returnVariables":[{"name":"tail","nativeSrc":"15945:4:87","nodeType":"YulTypedName","src":"15945:4:87","type":""}],"src":"15771:494:87"},{"body":{"nativeSrc":"16317:132:87","nodeType":"YulBlock","src":"16317:132:87","statements":[{"nativeSrc":"16327:58:87","nodeType":"YulAssignment","src":"16327:58:87","value":{"arguments":[{"arguments":[{"name":"x","nativeSrc":"16342:1:87","nodeType":"YulIdentifier","src":"16342:1:87"},{"kind":"number","nativeSrc":"16345:14:87","nodeType":"YulLiteral","src":"16345:14:87","type":"","value":"0xffffffffffff"}],"functionName":{"name":"and","nativeSrc":"16338:3:87","nodeType":"YulIdentifier","src":"16338:3:87"},"nativeSrc":"16338:22:87","nodeType":"YulFunctionCall","src":"16338:22:87"},{"arguments":[{"name":"y","nativeSrc":"16366:1:87","nodeType":"YulIdentifier","src":"16366:1:87"},{"kind":"number","nativeSrc":"16369:14:87","nodeType":"YulLiteral","src":"16369:14:87","type":"","value":"0xffffffffffff"}],"functionName":{"name":"and","nativeSrc":"16362:3:87","nodeType":"YulIdentifier","src":"16362:3:87"},"nativeSrc":"16362:22:87","nodeType":"YulFunctionCall","src":"16362:22:87"}],"functionName":{"name":"add","nativeSrc":"16334:3:87","nodeType":"YulIdentifier","src":"16334:3:87"},"nativeSrc":"16334:51:87","nodeType":"YulFunctionCall","src":"16334:51:87"},"variableNames":[{"name":"sum","nativeSrc":"16327:3:87","nodeType":"YulIdentifier","src":"16327:3:87"}]},{"body":{"nativeSrc":"16421:22:87","nodeType":"YulBlock","src":"16421:22:87","statements":[{"expression":{"arguments":[],"functionName":{"name":"panic_error_0x11","nativeSrc":"16423:16:87","nodeType":"YulIdentifier","src":"16423:16:87"},"nativeSrc":"16423:18:87","nodeType":"YulFunctionCall","src":"16423:18:87"},"nativeSrc":"16423:18:87","nodeType":"YulExpressionStatement","src":"16423:18:87"}]},"condition":{"arguments":[{"name":"sum","nativeSrc":"16400:3:87","nodeType":"YulIdentifier","src":"16400:3:87"},{"kind":"number","nativeSrc":"16405:14:87","nodeType":"YulLiteral","src":"16405:14:87","type":"","value":"0xffffffffffff"}],"functionName":{"name":"gt","nativeSrc":"16397:2:87","nodeType":"YulIdentifier","src":"16397:2:87"},"nativeSrc":"16397:23:87","nodeType":"YulFunctionCall","src":"16397:23:87"},"nativeSrc":"16394:49:87","nodeType":"YulIf","src":"16394:49:87"}]},"name":"checked_add_t_uint48","nativeSrc":"16270:179:87","nodeType":"YulFunctionDefinition","parameters":[{"name":"x","nativeSrc":"16300:1:87","nodeType":"YulTypedName","src":"16300:1:87","type":""},{"name":"y","nativeSrc":"16303:1:87","nodeType":"YulTypedName","src":"16303:1:87","type":""}],"returnVariables":[{"name":"sum","nativeSrc":"16309:3:87","nodeType":"YulTypedName","src":"16309:3:87","type":""}],"src":"16270:179:87"},{"body":{"nativeSrc":"16665:320:87","nodeType":"YulBlock","src":"16665:320:87","statements":[{"expression":{"arguments":[{"name":"headStart","nativeSrc":"16682:9:87","nodeType":"YulIdentifier","src":"16682:9:87"},{"arguments":[{"name":"value0","nativeSrc":"16697:6:87","nodeType":"YulIdentifier","src":"16697:6:87"},{"kind":"number","nativeSrc":"16705:14:87","nodeType":"YulLiteral","src":"16705:14:87","type":"","value":"0xffffffffffff"}],"functionName":{"name":"and","nativeSrc":"16693:3:87","nodeType":"YulIdentifier","src":"16693:3:87"},"nativeSrc":"16693:27:87","nodeType":"YulFunctionCall","src":"16693:27:87"}],"functionName":{"name":"mstore","nativeSrc":"16675:6:87","nodeType":"YulIdentifier","src":"16675:6:87"},"nativeSrc":"16675:46:87","nodeType":"YulFunctionCall","src":"16675:46:87"},"nativeSrc":"16675:46:87","nodeType":"YulExpressionStatement","src":"16675:46:87"},{"expression":{"arguments":[{"arguments":[{"name":"headStart","nativeSrc":"16741:9:87","nodeType":"YulIdentifier","src":"16741:9:87"},{"kind":"number","nativeSrc":"16752:2:87","nodeType":"YulLiteral","src":"16752:2:87","type":"","value":"32"}],"functionName":{"name":"add","nativeSrc":"16737:3:87","nodeType":"YulIdentifier","src":"16737:3:87"},"nativeSrc":"16737:18:87","nodeType":"YulFunctionCall","src":"16737:18:87"},{"arguments":[{"name":"value1","nativeSrc":"16761:6:87","nodeType":"YulIdentifier","src":"16761:6:87"},{"arguments":[{"arguments":[{"kind":"number","nativeSrc":"16777:3:87","nodeType":"YulLiteral","src":"16777:3:87","type":"","value":"160"},{"kind":"number","nativeSrc":"16782:1:87","nodeType":"YulLiteral","src":"16782:1:87","type":"","value":"1"}],"functionName":{"name":"shl","nativeSrc":"16773:3:87","nodeType":"YulIdentifier","src":"16773:3:87"},"nativeSrc":"16773:11:87","nodeType":"YulFunctionCall","src":"16773:11:87"},{"kind":"number","nativeSrc":"16786:1:87","nodeType":"YulLiteral","src":"16786:1:87","type":"","value":"1"}],"functionName":{"name":"sub","nativeSrc":"16769:3:87","nodeType":"YulIdentifier","src":"16769:3:87"},"nativeSrc":"16769:19:87","nodeType":"YulFunctionCall","src":"16769:19:87"}],"functionName":{"name":"and","nativeSrc":"16757:3:87","nodeType":"YulIdentifier","src":"16757:3:87"},"nativeSrc":"16757:32:87","nodeType":"YulFunctionCall","src":"16757:32:87"}],"functionName":{"name":"mstore","nativeSrc":"16730:6:87","nodeType":"YulIdentifier","src":"16730:6:87"},"nativeSrc":"16730:60:87","nodeType":"YulFunctionCall","src":"16730:60:87"},"nativeSrc":"16730:60:87","nodeType":"YulExpressionStatement","src":"16730:60:87"},{"expression":{"arguments":[{"arguments":[{"name":"headStart","nativeSrc":"16810:9:87","nodeType":"YulIdentifier","src":"16810:9:87"},{"kind":"number","nativeSrc":"16821:2:87","nodeType":"YulLiteral","src":"16821:2:87","type":"","value":"64"}],"functionName":{"name":"add","nativeSrc":"16806:3:87","nodeType":"YulIdentifier","src":"16806:3:87"},"nativeSrc":"16806:18:87","nodeType":"YulFunctionCall","src":"16806:18:87"},{"arguments":[{"name":"value2","nativeSrc":"16830:6:87","nodeType":"YulIdentifier","src":"16830:6:87"},{"arguments":[{"arguments":[{"kind":"number","nativeSrc":"16846:3:87","nodeType":"YulLiteral","src":"16846:3:87","type":"","value":"160"},{"kind":"number","nativeSrc":"16851:1:87","nodeType":"YulLiteral","src":"16851:1:87","type":"","value":"1"}],"functionName":{"name":"shl","nativeSrc":"16842:3:87","nodeType":"YulIdentifier","src":"16842:3:87"},"nativeSrc":"16842:11:87","nodeType":"YulFunctionCall","src":"16842:11:87"},{"kind":"number","nativeSrc":"16855:1:87","nodeType":"YulLiteral","src":"16855:1:87","type":"","value":"1"}],"functionName":{"name":"sub","nativeSrc":"16838:3:87","nodeType":"YulIdentifier","src":"16838:3:87"},"nativeSrc":"16838:19:87","nodeType":"YulFunctionCall","src":"16838:19:87"}],"functionName":{"name":"and","nativeSrc":"16826:3:87","nodeType":"YulIdentifier","src":"16826:3:87"},"nativeSrc":"16826:32:87","nodeType":"YulFunctionCall","src":"16826:32:87"}],"functionName":{"name":"mstore","nativeSrc":"16799:6:87","nodeType":"YulIdentifier","src":"16799:6:87"},"nativeSrc":"16799:60:87","nodeType":"YulFunctionCall","src":"16799:60:87"},"nativeSrc":"16799:60:87","nodeType":"YulExpressionStatement","src":"16799:60:87"},{"expression":{"arguments":[{"arguments":[{"name":"headStart","nativeSrc":"16879:9:87","nodeType":"YulIdentifier","src":"16879:9:87"},{"kind":"number","nativeSrc":"16890:2:87","nodeType":"YulLiteral","src":"16890:2:87","type":"","value":"96"}],"functionName":{"name":"add","nativeSrc":"16875:3:87","nodeType":"YulIdentifier","src":"16875:3:87"},"nativeSrc":"16875:18:87","nodeType":"YulFunctionCall","src":"16875:18:87"},{"kind":"number","nativeSrc":"16895:3:87","nodeType":"YulLiteral","src":"16895:3:87","type":"","value":"128"}],"functionName":{"name":"mstore","nativeSrc":"16868:6:87","nodeType":"YulIdentifier","src":"16868:6:87"},"nativeSrc":"16868:31:87","nodeType":"YulFunctionCall","src":"16868:31:87"},"nativeSrc":"16868:31:87","nodeType":"YulExpressionStatement","src":"16868:31:87"},{"nativeSrc":"16908:71:87","nodeType":"YulAssignment","src":"16908:71:87","value":{"arguments":[{"name":"value3","nativeSrc":"16943:6:87","nodeType":"YulIdentifier","src":"16943:6:87"},{"name":"value4","nativeSrc":"16951:6:87","nodeType":"YulIdentifier","src":"16951:6:87"},{"arguments":[{"name":"headStart","nativeSrc":"16963:9:87","nodeType":"YulIdentifier","src":"16963:9:87"},{"kind":"number","nativeSrc":"16974:3:87","nodeType":"YulLiteral","src":"16974:3:87","type":"","value":"128"}],"functionName":{"name":"add","nativeSrc":"16959:3:87","nodeType":"YulIdentifier","src":"16959:3:87"},"nativeSrc":"16959:19:87","nodeType":"YulFunctionCall","src":"16959:19:87"}],"functionName":{"name":"abi_encode_string_calldata","nativeSrc":"16916:26:87","nodeType":"YulIdentifier","src":"16916:26:87"},"nativeSrc":"16916:63:87","nodeType":"YulFunctionCall","src":"16916:63:87"},"variableNames":[{"name":"tail","nativeSrc":"16908:4:87","nodeType":"YulIdentifier","src":"16908:4:87"}]}]},"name":"abi_encode_tuple_t_uint48_t_address_t_address_t_bytes_calldata_ptr__to_t_uint48_t_address_t_address_t_bytes_memory_ptr__fromStack_reversed","nativeSrc":"16454:531:87","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nativeSrc":"16602:9:87","nodeType":"YulTypedName","src":"16602:9:87","type":""},{"name":"value4","nativeSrc":"16613:6:87","nodeType":"YulTypedName","src":"16613:6:87","type":""},{"name":"value3","nativeSrc":"16621:6:87","nodeType":"YulTypedName","src":"16621:6:87","type":""},{"name":"value2","nativeSrc":"16629:6:87","nodeType":"YulTypedName","src":"16629:6:87","type":""},{"name":"value1","nativeSrc":"16637:6:87","nodeType":"YulTypedName","src":"16637:6:87","type":""},{"name":"value0","nativeSrc":"16645:6:87","nodeType":"YulTypedName","src":"16645:6:87","type":""}],"returnVariables":[{"name":"tail","nativeSrc":"16656:4:87","nodeType":"YulTypedName","src":"16656:4:87","type":""}],"src":"16454:531:87"},{"body":{"nativeSrc":"17117:170:87","nodeType":"YulBlock","src":"17117:170:87","statements":[{"nativeSrc":"17127:26:87","nodeType":"YulAssignment","src":"17127:26:87","value":{"arguments":[{"name":"headStart","nativeSrc":"17139:9:87","nodeType":"YulIdentifier","src":"17139:9:87"},{"kind":"number","nativeSrc":"17150:2:87","nodeType":"YulLiteral","src":"17150:2:87","type":"","value":"64"}],"functionName":{"name":"add","nativeSrc":"17135:3:87","nodeType":"YulIdentifier","src":"17135:3:87"},"nativeSrc":"17135:18:87","nodeType":"YulFunctionCall","src":"17135:18:87"},"variableNames":[{"name":"tail","nativeSrc":"17127:4:87","nodeType":"YulIdentifier","src":"17127:4:87"}]},{"expression":{"arguments":[{"name":"headStart","nativeSrc":"17169:9:87","nodeType":"YulIdentifier","src":"17169:9:87"},{"arguments":[{"name":"value0","nativeSrc":"17184:6:87","nodeType":"YulIdentifier","src":"17184:6:87"},{"arguments":[{"arguments":[{"kind":"number","nativeSrc":"17200:3:87","nodeType":"YulLiteral","src":"17200:3:87","type":"","value":"160"},{"kind":"number","nativeSrc":"17205:1:87","nodeType":"YulLiteral","src":"17205:1:87","type":"","value":"1"}],"functionName":{"name":"shl","nativeSrc":"17196:3:87","nodeType":"YulIdentifier","src":"17196:3:87"},"nativeSrc":"17196:11:87","nodeType":"YulFunctionCall","src":"17196:11:87"},{"kind":"number","nativeSrc":"17209:1:87","nodeType":"YulLiteral","src":"17209:1:87","type":"","value":"1"}],"functionName":{"name":"sub","nativeSrc":"17192:3:87","nodeType":"YulIdentifier","src":"17192:3:87"},"nativeSrc":"17192:19:87","nodeType":"YulFunctionCall","src":"17192:19:87"}],"functionName":{"name":"and","nativeSrc":"17180:3:87","nodeType":"YulIdentifier","src":"17180:3:87"},"nativeSrc":"17180:32:87","nodeType":"YulFunctionCall","src":"17180:32:87"}],"functionName":{"name":"mstore","nativeSrc":"17162:6:87","nodeType":"YulIdentifier","src":"17162:6:87"},"nativeSrc":"17162:51:87","nodeType":"YulFunctionCall","src":"17162:51:87"},"nativeSrc":"17162:51:87","nodeType":"YulExpressionStatement","src":"17162:51:87"},{"expression":{"arguments":[{"arguments":[{"name":"headStart","nativeSrc":"17233:9:87","nodeType":"YulIdentifier","src":"17233:9:87"},{"kind":"number","nativeSrc":"17244:2:87","nodeType":"YulLiteral","src":"17244:2:87","type":"","value":"32"}],"functionName":{"name":"add","nativeSrc":"17229:3:87","nodeType":"YulIdentifier","src":"17229:3:87"},"nativeSrc":"17229:18:87","nodeType":"YulFunctionCall","src":"17229:18:87"},{"arguments":[{"name":"value1","nativeSrc":"17253:6:87","nodeType":"YulIdentifier","src":"17253:6:87"},{"kind":"number","nativeSrc":"17261:18:87","nodeType":"YulLiteral","src":"17261:18:87","type":"","value":"0xffffffffffffffff"}],"functionName":{"name":"and","nativeSrc":"17249:3:87","nodeType":"YulIdentifier","src":"17249:3:87"},"nativeSrc":"17249:31:87","nodeType":"YulFunctionCall","src":"17249:31:87"}],"functionName":{"name":"mstore","nativeSrc":"17222:6:87","nodeType":"YulIdentifier","src":"17222:6:87"},"nativeSrc":"17222:59:87","nodeType":"YulFunctionCall","src":"17222:59:87"},"nativeSrc":"17222:59:87","nodeType":"YulExpressionStatement","src":"17222:59:87"}]},"name":"abi_encode_tuple_t_address_t_uint64__to_t_address_t_uint64__fromStack_reversed","nativeSrc":"16990:297:87","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nativeSrc":"17078:9:87","nodeType":"YulTypedName","src":"17078:9:87","type":""},{"name":"value1","nativeSrc":"17089:6:87","nodeType":"YulTypedName","src":"17089:6:87","type":""},{"name":"value0","nativeSrc":"17097:6:87","nodeType":"YulTypedName","src":"17097:6:87","type":""}],"returnVariables":[{"name":"tail","nativeSrc":"17108:4:87","nodeType":"YulTypedName","src":"17108:4:87","type":""}],"src":"16990:297:87"},{"body":{"nativeSrc":"17391:103:87","nodeType":"YulBlock","src":"17391:103:87","statements":[{"nativeSrc":"17401:26:87","nodeType":"YulAssignment","src":"17401:26:87","value":{"arguments":[{"name":"headStart","nativeSrc":"17413:9:87","nodeType":"YulIdentifier","src":"17413:9:87"},{"kind":"number","nativeSrc":"17424:2:87","nodeType":"YulLiteral","src":"17424:2:87","type":"","value":"32"}],"functionName":{"name":"add","nativeSrc":"17409:3:87","nodeType":"YulIdentifier","src":"17409:3:87"},"nativeSrc":"17409:18:87","nodeType":"YulFunctionCall","src":"17409:18:87"},"variableNames":[{"name":"tail","nativeSrc":"17401:4:87","nodeType":"YulIdentifier","src":"17401:4:87"}]},{"expression":{"arguments":[{"name":"headStart","nativeSrc":"17443:9:87","nodeType":"YulIdentifier","src":"17443:9:87"},{"arguments":[{"name":"value0","nativeSrc":"17458:6:87","nodeType":"YulIdentifier","src":"17458:6:87"},{"arguments":[{"kind":"number","nativeSrc":"17470:3:87","nodeType":"YulLiteral","src":"17470:3:87","type":"","value":"224"},{"kind":"number","nativeSrc":"17475:10:87","nodeType":"YulLiteral","src":"17475:10:87","type":"","value":"0xffffffff"}],"functionName":{"name":"shl","nativeSrc":"17466:3:87","nodeType":"YulIdentifier","src":"17466:3:87"},"nativeSrc":"17466:20:87","nodeType":"YulFunctionCall","src":"17466:20:87"}],"functionName":{"name":"and","nativeSrc":"17454:3:87","nodeType":"YulIdentifier","src":"17454:3:87"},"nativeSrc":"17454:33:87","nodeType":"YulFunctionCall","src":"17454:33:87"}],"functionName":{"name":"mstore","nativeSrc":"17436:6:87","nodeType":"YulIdentifier","src":"17436:6:87"},"nativeSrc":"17436:52:87","nodeType":"YulFunctionCall","src":"17436:52:87"},"nativeSrc":"17436:52:87","nodeType":"YulExpressionStatement","src":"17436:52:87"}]},"name":"abi_encode_tuple_t_bytes4__to_t_bytes4__fromStack_reversed","nativeSrc":"17292:202:87","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nativeSrc":"17360:9:87","nodeType":"YulTypedName","src":"17360:9:87","type":""},{"name":"value0","nativeSrc":"17371:6:87","nodeType":"YulTypedName","src":"17371:6:87","type":""}],"returnVariables":[{"name":"tail","nativeSrc":"17382:4:87","nodeType":"YulTypedName","src":"17382:4:87","type":""}],"src":"17292:202:87"},{"body":{"nativeSrc":"17599:238:87","nodeType":"YulBlock","src":"17599:238:87","statements":[{"nativeSrc":"17609:29:87","nodeType":"YulVariableDeclaration","src":"17609:29:87","value":{"arguments":[{"name":"array","nativeSrc":"17632:5:87","nodeType":"YulIdentifier","src":"17632:5:87"}],"functionName":{"name":"calldataload","nativeSrc":"17619:12:87","nodeType":"YulIdentifier","src":"17619:12:87"},"nativeSrc":"17619:19:87","nodeType":"YulFunctionCall","src":"17619:19:87"},"variables":[{"name":"_1","nativeSrc":"17613:2:87","nodeType":"YulTypedName","src":"17613:2:87","type":""}]},{"nativeSrc":"17647:38:87","nodeType":"YulAssignment","src":"17647:38:87","value":{"arguments":[{"name":"_1","nativeSrc":"17660:2:87","nodeType":"YulIdentifier","src":"17660:2:87"},{"arguments":[{"kind":"number","nativeSrc":"17668:3:87","nodeType":"YulLiteral","src":"17668:3:87","type":"","value":"224"},{"kind":"number","nativeSrc":"17673:10:87","nodeType":"YulLiteral","src":"17673:10:87","type":"","value":"0xffffffff"}],"functionName":{"name":"shl","nativeSrc":"17664:3:87","nodeType":"YulIdentifier","src":"17664:3:87"},"nativeSrc":"17664:20:87","nodeType":"YulFunctionCall","src":"17664:20:87"}],"functionName":{"name":"and","nativeSrc":"17656:3:87","nodeType":"YulIdentifier","src":"17656:3:87"},"nativeSrc":"17656:29:87","nodeType":"YulFunctionCall","src":"17656:29:87"},"variableNames":[{"name":"value","nativeSrc":"17647:5:87","nodeType":"YulIdentifier","src":"17647:5:87"}]},{"body":{"nativeSrc":"17716:115:87","nodeType":"YulBlock","src":"17716:115:87","statements":[{"nativeSrc":"17730:91:87","nodeType":"YulAssignment","src":"17730:91:87","value":{"arguments":[{"arguments":[{"name":"_1","nativeSrc":"17747:2:87","nodeType":"YulIdentifier","src":"17747:2:87"},{"arguments":[{"arguments":[{"kind":"number","nativeSrc":"17759:1:87","nodeType":"YulLiteral","src":"17759:1:87","type":"","value":"3"},{"arguments":[{"kind":"number","nativeSrc":"17766:1:87","nodeType":"YulLiteral","src":"17766:1:87","type":"","value":"4"},{"name":"len","nativeSrc":"17769:3:87","nodeType":"YulIdentifier","src":"17769:3:87"}],"functionName":{"name":"sub","nativeSrc":"17762:3:87","nodeType":"YulIdentifier","src":"17762:3:87"},"nativeSrc":"17762:11:87","nodeType":"YulFunctionCall","src":"17762:11:87"}],"functionName":{"name":"shl","nativeSrc":"17755:3:87","nodeType":"YulIdentifier","src":"17755:3:87"},"nativeSrc":"17755:19:87","nodeType":"YulFunctionCall","src":"17755:19:87"},{"arguments":[{"kind":"number","nativeSrc":"17780:3:87","nodeType":"YulLiteral","src":"17780:3:87","type":"","value":"224"},{"kind":"number","nativeSrc":"17785:10:87","nodeType":"YulLiteral","src":"17785:10:87","type":"","value":"0xffffffff"}],"functionName":{"name":"shl","nativeSrc":"17776:3:87","nodeType":"YulIdentifier","src":"17776:3:87"},"nativeSrc":"17776:20:87","nodeType":"YulFunctionCall","src":"17776:20:87"}],"functionName":{"name":"shl","nativeSrc":"17751:3:87","nodeType":"YulIdentifier","src":"17751:3:87"},"nativeSrc":"17751:46:87","nodeType":"YulFunctionCall","src":"17751:46:87"}],"functionName":{"name":"and","nativeSrc":"17743:3:87","nodeType":"YulIdentifier","src":"17743:3:87"},"nativeSrc":"17743:55:87","nodeType":"YulFunctionCall","src":"17743:55:87"},{"arguments":[{"kind":"number","nativeSrc":"17804:3:87","nodeType":"YulLiteral","src":"17804:3:87","type":"","value":"224"},{"kind":"number","nativeSrc":"17809:10:87","nodeType":"YulLiteral","src":"17809:10:87","type":"","value":"0xffffffff"}],"functionName":{"name":"shl","nativeSrc":"17800:3:87","nodeType":"YulIdentifier","src":"17800:3:87"},"nativeSrc":"17800:20:87","nodeType":"YulFunctionCall","src":"17800:20:87"}],"functionName":{"name":"and","nativeSrc":"17739:3:87","nodeType":"YulIdentifier","src":"17739:3:87"},"nativeSrc":"17739:82:87","nodeType":"YulFunctionCall","src":"17739:82:87"},"variableNames":[{"name":"value","nativeSrc":"17730:5:87","nodeType":"YulIdentifier","src":"17730:5:87"}]}]},"condition":{"arguments":[{"name":"len","nativeSrc":"17700:3:87","nodeType":"YulIdentifier","src":"17700:3:87"},{"kind":"number","nativeSrc":"17705:1:87","nodeType":"YulLiteral","src":"17705:1:87","type":"","value":"4"}],"functionName":{"name":"lt","nativeSrc":"17697:2:87","nodeType":"YulIdentifier","src":"17697:2:87"},"nativeSrc":"17697:10:87","nodeType":"YulFunctionCall","src":"17697:10:87"},"nativeSrc":"17694:137:87","nodeType":"YulIf","src":"17694:137:87"}]},"name":"convert_bytes_to_fixedbytes_from_t_bytes_calldata_ptr_to_t_bytes4","nativeSrc":"17499:338:87","nodeType":"YulFunctionDefinition","parameters":[{"name":"array","nativeSrc":"17574:5:87","nodeType":"YulTypedName","src":"17574:5:87","type":""},{"name":"len","nativeSrc":"17581:3:87","nodeType":"YulTypedName","src":"17581:3:87","type":""}],"returnVariables":[{"name":"value","nativeSrc":"17589:5:87","nodeType":"YulTypedName","src":"17589:5:87","type":""}],"src":"17499:338:87"},{"body":{"nativeSrc":"17971:119:87","nodeType":"YulBlock","src":"17971:119:87","statements":[{"nativeSrc":"17981:26:87","nodeType":"YulAssignment","src":"17981:26:87","value":{"arguments":[{"name":"headStart","nativeSrc":"17993:9:87","nodeType":"YulIdentifier","src":"17993:9:87"},{"kind":"number","nativeSrc":"18004:2:87","nodeType":"YulLiteral","src":"18004:2:87","type":"","value":"64"}],"functionName":{"name":"add","nativeSrc":"17989:3:87","nodeType":"YulIdentifier","src":"17989:3:87"},"nativeSrc":"17989:18:87","nodeType":"YulFunctionCall","src":"17989:18:87"},"variableNames":[{"name":"tail","nativeSrc":"17981:4:87","nodeType":"YulIdentifier","src":"17981:4:87"}]},{"expression":{"arguments":[{"name":"headStart","nativeSrc":"18023:9:87","nodeType":"YulIdentifier","src":"18023:9:87"},{"name":"value0","nativeSrc":"18034:6:87","nodeType":"YulIdentifier","src":"18034:6:87"}],"functionName":{"name":"mstore","nativeSrc":"18016:6:87","nodeType":"YulIdentifier","src":"18016:6:87"},"nativeSrc":"18016:25:87","nodeType":"YulFunctionCall","src":"18016:25:87"},"nativeSrc":"18016:25:87","nodeType":"YulExpressionStatement","src":"18016:25:87"},{"expression":{"arguments":[{"arguments":[{"name":"headStart","nativeSrc":"18061:9:87","nodeType":"YulIdentifier","src":"18061:9:87"},{"kind":"number","nativeSrc":"18072:2:87","nodeType":"YulLiteral","src":"18072:2:87","type":"","value":"32"}],"functionName":{"name":"add","nativeSrc":"18057:3:87","nodeType":"YulIdentifier","src":"18057:3:87"},"nativeSrc":"18057:18:87","nodeType":"YulFunctionCall","src":"18057:18:87"},{"name":"value1","nativeSrc":"18077:6:87","nodeType":"YulIdentifier","src":"18077:6:87"}],"functionName":{"name":"mstore","nativeSrc":"18050:6:87","nodeType":"YulIdentifier","src":"18050:6:87"},"nativeSrc":"18050:34:87","nodeType":"YulFunctionCall","src":"18050:34:87"},"nativeSrc":"18050:34:87","nodeType":"YulExpressionStatement","src":"18050:34:87"}]},"name":"abi_encode_tuple_t_uint256_t_uint256__to_t_uint256_t_uint256__fromStack_reversed","nativeSrc":"17842:248:87","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nativeSrc":"17932:9:87","nodeType":"YulTypedName","src":"17932:9:87","type":""},{"name":"value1","nativeSrc":"17943:6:87","nodeType":"YulTypedName","src":"17943:6:87","type":""},{"name":"value0","nativeSrc":"17951:6:87","nodeType":"YulTypedName","src":"17951:6:87","type":""}],"returnVariables":[{"name":"tail","nativeSrc":"17962:4:87","nodeType":"YulTypedName","src":"17962:4:87","type":""}],"src":"17842:248:87"},{"body":{"nativeSrc":"18242:216:87","nodeType":"YulBlock","src":"18242:216:87","statements":[{"nativeSrc":"18252:26:87","nodeType":"YulAssignment","src":"18252:26:87","value":{"arguments":[{"name":"headStart","nativeSrc":"18264:9:87","nodeType":"YulIdentifier","src":"18264:9:87"},{"kind":"number","nativeSrc":"18275:2:87","nodeType":"YulLiteral","src":"18275:2:87","type":"","value":"96"}],"functionName":{"name":"add","nativeSrc":"18260:3:87","nodeType":"YulIdentifier","src":"18260:3:87"},"nativeSrc":"18260:18:87","nodeType":"YulFunctionCall","src":"18260:18:87"},"variableNames":[{"name":"tail","nativeSrc":"18252:4:87","nodeType":"YulIdentifier","src":"18252:4:87"}]},{"expression":{"arguments":[{"name":"headStart","nativeSrc":"18294:9:87","nodeType":"YulIdentifier","src":"18294:9:87"},{"arguments":[{"name":"value0","nativeSrc":"18309:6:87","nodeType":"YulIdentifier","src":"18309:6:87"},{"kind":"number","nativeSrc":"18317:10:87","nodeType":"YulLiteral","src":"18317:10:87","type":"","value":"0xffffffff"}],"functionName":{"name":"and","nativeSrc":"18305:3:87","nodeType":"YulIdentifier","src":"18305:3:87"},"nativeSrc":"18305:23:87","nodeType":"YulFunctionCall","src":"18305:23:87"}],"functionName":{"name":"mstore","nativeSrc":"18287:6:87","nodeType":"YulIdentifier","src":"18287:6:87"},"nativeSrc":"18287:42:87","nodeType":"YulFunctionCall","src":"18287:42:87"},"nativeSrc":"18287:42:87","nodeType":"YulExpressionStatement","src":"18287:42:87"},{"expression":{"arguments":[{"arguments":[{"name":"headStart","nativeSrc":"18349:9:87","nodeType":"YulIdentifier","src":"18349:9:87"},{"kind":"number","nativeSrc":"18360:2:87","nodeType":"YulLiteral","src":"18360:2:87","type":"","value":"32"}],"functionName":{"name":"add","nativeSrc":"18345:3:87","nodeType":"YulIdentifier","src":"18345:3:87"},"nativeSrc":"18345:18:87","nodeType":"YulFunctionCall","src":"18345:18:87"},{"arguments":[{"name":"value1","nativeSrc":"18369:6:87","nodeType":"YulIdentifier","src":"18369:6:87"},{"kind":"number","nativeSrc":"18377:14:87","nodeType":"YulLiteral","src":"18377:14:87","type":"","value":"0xffffffffffff"}],"functionName":{"name":"and","nativeSrc":"18365:3:87","nodeType":"YulIdentifier","src":"18365:3:87"},"nativeSrc":"18365:27:87","nodeType":"YulFunctionCall","src":"18365:27:87"}],"functionName":{"name":"mstore","nativeSrc":"18338:6:87","nodeType":"YulIdentifier","src":"18338:6:87"},"nativeSrc":"18338:55:87","nodeType":"YulFunctionCall","src":"18338:55:87"},"nativeSrc":"18338:55:87","nodeType":"YulExpressionStatement","src":"18338:55:87"},{"expression":{"arguments":[{"arguments":[{"name":"headStart","nativeSrc":"18413:9:87","nodeType":"YulIdentifier","src":"18413:9:87"},{"kind":"number","nativeSrc":"18424:2:87","nodeType":"YulLiteral","src":"18424:2:87","type":"","value":"64"}],"functionName":{"name":"add","nativeSrc":"18409:3:87","nodeType":"YulIdentifier","src":"18409:3:87"},"nativeSrc":"18409:18:87","nodeType":"YulFunctionCall","src":"18409:18:87"},{"arguments":[{"arguments":[{"name":"value2","nativeSrc":"18443:6:87","nodeType":"YulIdentifier","src":"18443:6:87"}],"functionName":{"name":"iszero","nativeSrc":"18436:6:87","nodeType":"YulIdentifier","src":"18436:6:87"},"nativeSrc":"18436:14:87","nodeType":"YulFunctionCall","src":"18436:14:87"}],"functionName":{"name":"iszero","nativeSrc":"18429:6:87","nodeType":"YulIdentifier","src":"18429:6:87"},"nativeSrc":"18429:22:87","nodeType":"YulFunctionCall","src":"18429:22:87"}],"functionName":{"name":"mstore","nativeSrc":"18402:6:87","nodeType":"YulIdentifier","src":"18402:6:87"},"nativeSrc":"18402:50:87","nodeType":"YulFunctionCall","src":"18402:50:87"},"nativeSrc":"18402:50:87","nodeType":"YulExpressionStatement","src":"18402:50:87"}]},"name":"abi_encode_tuple_t_uint32_t_uint48_t_bool__to_t_uint32_t_uint48_t_bool__fromStack_reversed","nativeSrc":"18095:363:87","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nativeSrc":"18195:9:87","nodeType":"YulTypedName","src":"18195:9:87","type":""},{"name":"value2","nativeSrc":"18206:6:87","nodeType":"YulTypedName","src":"18206:6:87","type":""},{"name":"value1","nativeSrc":"18214:6:87","nodeType":"YulTypedName","src":"18214:6:87","type":""},{"name":"value0","nativeSrc":"18222:6:87","nodeType":"YulTypedName","src":"18222:6:87","type":""}],"returnVariables":[{"name":"tail","nativeSrc":"18233:4:87","nodeType":"YulTypedName","src":"18233:4:87","type":""}],"src":"18095:363:87"},{"body":{"nativeSrc":"18588:157:87","nodeType":"YulBlock","src":"18588:157:87","statements":[{"nativeSrc":"18598:26:87","nodeType":"YulAssignment","src":"18598:26:87","value":{"arguments":[{"name":"headStart","nativeSrc":"18610:9:87","nodeType":"YulIdentifier","src":"18610:9:87"},{"kind":"number","nativeSrc":"18621:2:87","nodeType":"YulLiteral","src":"18621:2:87","type":"","value":"64"}],"functionName":{"name":"add","nativeSrc":"18606:3:87","nodeType":"YulIdentifier","src":"18606:3:87"},"nativeSrc":"18606:18:87","nodeType":"YulFunctionCall","src":"18606:18:87"},"variableNames":[{"name":"tail","nativeSrc":"18598:4:87","nodeType":"YulIdentifier","src":"18598:4:87"}]},{"expression":{"arguments":[{"name":"headStart","nativeSrc":"18640:9:87","nodeType":"YulIdentifier","src":"18640:9:87"},{"arguments":[{"name":"value0","nativeSrc":"18655:6:87","nodeType":"YulIdentifier","src":"18655:6:87"},{"kind":"number","nativeSrc":"18663:10:87","nodeType":"YulLiteral","src":"18663:10:87","type":"","value":"0xffffffff"}],"functionName":{"name":"and","nativeSrc":"18651:3:87","nodeType":"YulIdentifier","src":"18651:3:87"},"nativeSrc":"18651:23:87","nodeType":"YulFunctionCall","src":"18651:23:87"}],"functionName":{"name":"mstore","nativeSrc":"18633:6:87","nodeType":"YulIdentifier","src":"18633:6:87"},"nativeSrc":"18633:42:87","nodeType":"YulFunctionCall","src":"18633:42:87"},"nativeSrc":"18633:42:87","nodeType":"YulExpressionStatement","src":"18633:42:87"},{"expression":{"arguments":[{"arguments":[{"name":"headStart","nativeSrc":"18695:9:87","nodeType":"YulIdentifier","src":"18695:9:87"},{"kind":"number","nativeSrc":"18706:2:87","nodeType":"YulLiteral","src":"18706:2:87","type":"","value":"32"}],"functionName":{"name":"add","nativeSrc":"18691:3:87","nodeType":"YulIdentifier","src":"18691:3:87"},"nativeSrc":"18691:18:87","nodeType":"YulFunctionCall","src":"18691:18:87"},{"arguments":[{"name":"value1","nativeSrc":"18715:6:87","nodeType":"YulIdentifier","src":"18715:6:87"},{"kind":"number","nativeSrc":"18723:14:87","nodeType":"YulLiteral","src":"18723:14:87","type":"","value":"0xffffffffffff"}],"functionName":{"name":"and","nativeSrc":"18711:3:87","nodeType":"YulIdentifier","src":"18711:3:87"},"nativeSrc":"18711:27:87","nodeType":"YulFunctionCall","src":"18711:27:87"}],"functionName":{"name":"mstore","nativeSrc":"18684:6:87","nodeType":"YulIdentifier","src":"18684:6:87"},"nativeSrc":"18684:55:87","nodeType":"YulFunctionCall","src":"18684:55:87"},"nativeSrc":"18684:55:87","nodeType":"YulExpressionStatement","src":"18684:55:87"}]},"name":"abi_encode_tuple_t_uint32_t_uint48__to_t_uint32_t_uint48__fromStack_reversed","nativeSrc":"18463:282:87","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nativeSrc":"18549:9:87","nodeType":"YulTypedName","src":"18549:9:87","type":""},{"name":"value1","nativeSrc":"18560:6:87","nodeType":"YulTypedName","src":"18560:6:87","type":""},{"name":"value0","nativeSrc":"18568:6:87","nodeType":"YulTypedName","src":"18568:6:87","type":""}],"returnVariables":[{"name":"tail","nativeSrc":"18579:4:87","nodeType":"YulTypedName","src":"18579:4:87","type":""}],"src":"18463:282:87"},{"body":{"nativeSrc":"18828:177:87","nodeType":"YulBlock","src":"18828:177:87","statements":[{"body":{"nativeSrc":"18874:16:87","nodeType":"YulBlock","src":"18874:16:87","statements":[{"expression":{"arguments":[{"kind":"number","nativeSrc":"18883:1:87","nodeType":"YulLiteral","src":"18883:1:87","type":"","value":"0"},{"kind":"number","nativeSrc":"18886:1:87","nodeType":"YulLiteral","src":"18886:1:87","type":"","value":"0"}],"functionName":{"name":"revert","nativeSrc":"18876:6:87","nodeType":"YulIdentifier","src":"18876:6:87"},"nativeSrc":"18876:12:87","nodeType":"YulFunctionCall","src":"18876:12:87"},"nativeSrc":"18876:12:87","nodeType":"YulExpressionStatement","src":"18876:12:87"}]},"condition":{"arguments":[{"arguments":[{"name":"dataEnd","nativeSrc":"18849:7:87","nodeType":"YulIdentifier","src":"18849:7:87"},{"name":"headStart","nativeSrc":"18858:9:87","nodeType":"YulIdentifier","src":"18858:9:87"}],"functionName":{"name":"sub","nativeSrc":"18845:3:87","nodeType":"YulIdentifier","src":"18845:3:87"},"nativeSrc":"18845:23:87","nodeType":"YulFunctionCall","src":"18845:23:87"},{"kind":"number","nativeSrc":"18870:2:87","nodeType":"YulLiteral","src":"18870:2:87","type":"","value":"32"}],"functionName":{"name":"slt","nativeSrc":"18841:3:87","nodeType":"YulIdentifier","src":"18841:3:87"},"nativeSrc":"18841:32:87","nodeType":"YulFunctionCall","src":"18841:32:87"},"nativeSrc":"18838:52:87","nodeType":"YulIf","src":"18838:52:87"},{"nativeSrc":"18899:36:87","nodeType":"YulVariableDeclaration","src":"18899:36:87","value":{"arguments":[{"name":"headStart","nativeSrc":"18925:9:87","nodeType":"YulIdentifier","src":"18925:9:87"}],"functionName":{"name":"calldataload","nativeSrc":"18912:12:87","nodeType":"YulIdentifier","src":"18912:12:87"},"nativeSrc":"18912:23:87","nodeType":"YulFunctionCall","src":"18912:23:87"},"variables":[{"name":"value","nativeSrc":"18903:5:87","nodeType":"YulTypedName","src":"18903:5:87","type":""}]},{"expression":{"arguments":[{"name":"value","nativeSrc":"18969:5:87","nodeType":"YulIdentifier","src":"18969:5:87"}],"functionName":{"name":"validator_revert_address","nativeSrc":"18944:24:87","nodeType":"YulIdentifier","src":"18944:24:87"},"nativeSrc":"18944:31:87","nodeType":"YulFunctionCall","src":"18944:31:87"},"nativeSrc":"18944:31:87","nodeType":"YulExpressionStatement","src":"18944:31:87"},{"nativeSrc":"18984:15:87","nodeType":"YulAssignment","src":"18984:15:87","value":{"name":"value","nativeSrc":"18994:5:87","nodeType":"YulIdentifier","src":"18994:5:87"},"variableNames":[{"name":"value0","nativeSrc":"18984:6:87","nodeType":"YulIdentifier","src":"18984:6:87"}]}]},"name":"abi_decode_tuple_t_address_payable","nativeSrc":"18750:255:87","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nativeSrc":"18794:9:87","nodeType":"YulTypedName","src":"18794:9:87","type":""},{"name":"dataEnd","nativeSrc":"18805:7:87","nodeType":"YulTypedName","src":"18805:7:87","type":""}],"returnVariables":[{"name":"value0","nativeSrc":"18817:6:87","nodeType":"YulTypedName","src":"18817:6:87","type":""}],"src":"18750:255:87"},{"body":{"nativeSrc":"19058:122:87","nodeType":"YulBlock","src":"19058:122:87","statements":[{"nativeSrc":"19068:51:87","nodeType":"YulAssignment","src":"19068:51:87","value":{"arguments":[{"arguments":[{"name":"x","nativeSrc":"19084:1:87","nodeType":"YulIdentifier","src":"19084:1:87"},{"kind":"number","nativeSrc":"19087:10:87","nodeType":"YulLiteral","src":"19087:10:87","type":"","value":"0xffffffff"}],"functionName":{"name":"and","nativeSrc":"19080:3:87","nodeType":"YulIdentifier","src":"19080:3:87"},"nativeSrc":"19080:18:87","nodeType":"YulFunctionCall","src":"19080:18:87"},{"arguments":[{"name":"y","nativeSrc":"19104:1:87","nodeType":"YulIdentifier","src":"19104:1:87"},{"kind":"number","nativeSrc":"19107:10:87","nodeType":"YulLiteral","src":"19107:10:87","type":"","value":"0xffffffff"}],"functionName":{"name":"and","nativeSrc":"19100:3:87","nodeType":"YulIdentifier","src":"19100:3:87"},"nativeSrc":"19100:18:87","nodeType":"YulFunctionCall","src":"19100:18:87"}],"functionName":{"name":"sub","nativeSrc":"19076:3:87","nodeType":"YulIdentifier","src":"19076:3:87"},"nativeSrc":"19076:43:87","nodeType":"YulFunctionCall","src":"19076:43:87"},"variableNames":[{"name":"diff","nativeSrc":"19068:4:87","nodeType":"YulIdentifier","src":"19068:4:87"}]},{"body":{"nativeSrc":"19152:22:87","nodeType":"YulBlock","src":"19152:22:87","statements":[{"expression":{"arguments":[],"functionName":{"name":"panic_error_0x11","nativeSrc":"19154:16:87","nodeType":"YulIdentifier","src":"19154:16:87"},"nativeSrc":"19154:18:87","nodeType":"YulFunctionCall","src":"19154:18:87"},"nativeSrc":"19154:18:87","nodeType":"YulExpressionStatement","src":"19154:18:87"}]},"condition":{"arguments":[{"name":"diff","nativeSrc":"19134:4:87","nodeType":"YulIdentifier","src":"19134:4:87"},{"kind":"number","nativeSrc":"19140:10:87","nodeType":"YulLiteral","src":"19140:10:87","type":"","value":"0xffffffff"}],"functionName":{"name":"gt","nativeSrc":"19131:2:87","nodeType":"YulIdentifier","src":"19131:2:87"},"nativeSrc":"19131:20:87","nodeType":"YulFunctionCall","src":"19131:20:87"},"nativeSrc":"19128:46:87","nodeType":"YulIf","src":"19128:46:87"}]},"name":"checked_sub_t_uint32","nativeSrc":"19010:170:87","nodeType":"YulFunctionDefinition","parameters":[{"name":"x","nativeSrc":"19040:1:87","nodeType":"YulTypedName","src":"19040:1:87","type":""},{"name":"y","nativeSrc":"19043:1:87","nodeType":"YulTypedName","src":"19043:1:87","type":""}],"returnVariables":[{"name":"diff","nativeSrc":"19049:4:87","nodeType":"YulTypedName","src":"19049:4:87","type":""}],"src":"19010:170:87"},{"body":{"nativeSrc":"19321:130:87","nodeType":"YulBlock","src":"19321:130:87","statements":[{"nativeSrc":"19331:26:87","nodeType":"YulAssignment","src":"19331:26:87","value":{"arguments":[{"name":"headStart","nativeSrc":"19343:9:87","nodeType":"YulIdentifier","src":"19343:9:87"},{"kind":"number","nativeSrc":"19354:2:87","nodeType":"YulLiteral","src":"19354:2:87","type":"","value":"64"}],"functionName":{"name":"add","nativeSrc":"19339:3:87","nodeType":"YulIdentifier","src":"19339:3:87"},"nativeSrc":"19339:18:87","nodeType":"YulFunctionCall","src":"19339:18:87"},"variableNames":[{"name":"tail","nativeSrc":"19331:4:87","nodeType":"YulIdentifier","src":"19331:4:87"}]},{"expression":{"arguments":[{"name":"headStart","nativeSrc":"19373:9:87","nodeType":"YulIdentifier","src":"19373:9:87"},{"arguments":[{"name":"value0","nativeSrc":"19388:6:87","nodeType":"YulIdentifier","src":"19388:6:87"},{"kind":"number","nativeSrc":"19396:4:87","nodeType":"YulLiteral","src":"19396:4:87","type":"","value":"0xff"}],"functionName":{"name":"and","nativeSrc":"19384:3:87","nodeType":"YulIdentifier","src":"19384:3:87"},"nativeSrc":"19384:17:87","nodeType":"YulFunctionCall","src":"19384:17:87"}],"functionName":{"name":"mstore","nativeSrc":"19366:6:87","nodeType":"YulIdentifier","src":"19366:6:87"},"nativeSrc":"19366:36:87","nodeType":"YulFunctionCall","src":"19366:36:87"},"nativeSrc":"19366:36:87","nodeType":"YulExpressionStatement","src":"19366:36:87"},{"expression":{"arguments":[{"arguments":[{"name":"headStart","nativeSrc":"19422:9:87","nodeType":"YulIdentifier","src":"19422:9:87"},{"kind":"number","nativeSrc":"19433:2:87","nodeType":"YulLiteral","src":"19433:2:87","type":"","value":"32"}],"functionName":{"name":"add","nativeSrc":"19418:3:87","nodeType":"YulIdentifier","src":"19418:3:87"},"nativeSrc":"19418:18:87","nodeType":"YulFunctionCall","src":"19418:18:87"},{"name":"value1","nativeSrc":"19438:6:87","nodeType":"YulIdentifier","src":"19438:6:87"}],"functionName":{"name":"mstore","nativeSrc":"19411:6:87","nodeType":"YulIdentifier","src":"19411:6:87"},"nativeSrc":"19411:34:87","nodeType":"YulFunctionCall","src":"19411:34:87"},"nativeSrc":"19411:34:87","nodeType":"YulExpressionStatement","src":"19411:34:87"}]},"name":"abi_encode_tuple_t_rational_48_by_1_t_uint256__to_t_uint8_t_uint256__fromStack_reversed","nativeSrc":"19185:266:87","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nativeSrc":"19282:9:87","nodeType":"YulTypedName","src":"19282:9:87","type":""},{"name":"value1","nativeSrc":"19293:6:87","nodeType":"YulTypedName","src":"19293:6:87","type":""},{"name":"value0","nativeSrc":"19301:6:87","nodeType":"YulTypedName","src":"19301:6:87","type":""}],"returnVariables":[{"name":"tail","nativeSrc":"19312:4:87","nodeType":"YulTypedName","src":"19312:4:87","type":""}],"src":"19185:266:87"}]},"contents":"{\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    function abi_decode_array_bytes4_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_uint64(offset) -> value\n    {\n        value := calldataload(offset)\n        if iszero(eq(value, and(value, 0xffffffffffffffff))) { revert(0, 0) }\n    }\n    function abi_decode_tuple_t_addresst_array$_t_bytes4_$dyn_calldata_ptrt_uint64(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        let offset := calldataload(add(headStart, 32))\n        if gt(offset, 0xffffffffffffffff) { revert(0, 0) }\n        let value1_1, value2_1 := abi_decode_array_bytes4_dyn_calldata(add(headStart, offset), dataEnd)\n        value1 := value1_1\n        value2 := value2_1\n        value3 := abi_decode_uint64(add(headStart, 64))\n    }\n    function abi_decode_tuple_t_uint64(headStart, dataEnd) -> value0\n    {\n        if slt(sub(dataEnd, headStart), 32) { revert(0, 0) }\n        value0 := abi_decode_uint64(headStart)\n    }\n    function abi_encode_tuple_t_uint64__to_t_uint64__fromStack_reversed(headStart, value0) -> tail\n    {\n        tail := add(headStart, 32)\n        mstore(headStart, and(value0, 0xffffffffffffffff))\n    }\n    function abi_encode_tuple_t_uint32__to_t_uint32__fromStack_reversed(headStart, value0) -> tail\n    {\n        tail := add(headStart, 32)\n        mstore(headStart, and(value0, 0xffffffff))\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_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_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_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_uint32(offset) -> value\n    {\n        value := calldataload(offset)\n        if iszero(eq(value, and(value, 0xffffffff))) { revert(0, 0) }\n    }\n    function abi_decode_tuple_t_uint64t_addresst_uint32(headStart, dataEnd) -> value0, value1, value2\n    {\n        if slt(sub(dataEnd, headStart), 96) { revert(0, 0) }\n        value0 := abi_decode_uint64(headStart)\n        let value := calldataload(add(headStart, 32))\n        validator_revert_address(value)\n        value1 := value\n        value2 := abi_decode_uint32(add(headStart, 64))\n    }\n    function abi_decode_tuple_t_uint64t_address(headStart, dataEnd) -> value0, value1\n    {\n        if slt(sub(dataEnd, headStart), 64) { revert(0, 0) }\n        value0 := abi_decode_uint64(headStart)\n        let value := calldataload(add(headStart, 32))\n        validator_revert_address(value)\n        value1 := value\n    }\n    function abi_encode_tuple_t_uint48_t_uint32_t_uint32_t_uint48__to_t_uint48_t_uint32_t_uint32_t_uint48__fromStack_reversed(headStart, value3, value2, value1, value0) -> tail\n    {\n        tail := add(headStart, 128)\n        mstore(headStart, and(value0, 0xffffffffffff))\n        mstore(add(headStart, 32), and(value1, 0xffffffff))\n        mstore(add(headStart, 64), and(value2, 0xffffffff))\n        mstore(add(headStart, 96), and(value3, 0xffffffffffff))\n    }\n    function abi_decode_tuple_t_uint64t_uint64(headStart, dataEnd) -> value0, value1\n    {\n        if slt(sub(dataEnd, headStart), 64) { revert(0, 0) }\n        value0 := abi_decode_uint64(headStart)\n        value1 := abi_decode_uint64(add(headStart, 32))\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_encode_tuple_t_uint48__to_t_uint48__fromStack_reversed(headStart, value0) -> tail\n    {\n        tail := add(headStart, 32)\n        mstore(headStart, and(value0, 0xffffffffffff))\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 validator_revert_bytes4(value)\n    {\n        if iszero(eq(value, and(value, shl(224, 0xffffffff)))) { revert(0, 0) }\n    }\n    function abi_decode_tuple_t_addresst_bytes4(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_bytes4(value_1)\n        value1 := value_1\n    }\n    function abi_decode_tuple_t_uint64t_string_calldata_ptr(headStart, dataEnd) -> value0, value1, value2\n    {\n        if slt(sub(dataEnd, headStart), 64) { revert(0, 0) }\n        value0 := abi_decode_uint64(headStart)\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_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_decode_tuple_t_uint64t_uint32(headStart, dataEnd) -> value0, value1\n    {\n        if slt(sub(dataEnd, headStart), 64) { revert(0, 0) }\n        value0 := abi_decode_uint64(headStart)\n        value1 := abi_decode_uint32(add(headStart, 32))\n    }\n    function abi_decode_tuple_t_addresst_addresst_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        let value_1 := calldataload(add(headStart, 32))\n        validator_revert_address(value_1)\n        value1 := value_1\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_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_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_bytes4_dyn_calldata(add(headStart, offset), dataEnd)\n        value0 := value0_1\n        value1 := value1_1\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 tail_1 := add(headStart, 32)\n        mstore(headStart, 32)\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, 32)\n        let i := 0\n        for { } lt(i, length) { i := add(i, 1) }\n        {\n            mstore(pos, add(sub(tail_2, headStart), not(63)))\n            let _1 := mload(srcPtr)\n            let length_1 := mload(_1)\n            mstore(tail_2, length_1)\n            mcopy(add(tail_2, 32), add(_1, 32), length_1)\n            mstore(add(add(tail_2, length_1), 32), 0)\n            tail_2 := add(add(tail_2, and(add(length_1, 31), not(31))), 32)\n            srcPtr := add(srcPtr, 32)\n            pos := add(pos, 32)\n        }\n        tail := tail_2\n    }\n    function abi_decode_tuple_t_addresst_addresst_bytes4(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_bytes4(value_2)\n        value2 := value_2\n    }\n    function abi_encode_tuple_t_bool_t_uint32__to_t_bool_t_uint32__fromStack_reversed(headStart, value1, value0) -> tail\n    {\n        tail := add(headStart, 64)\n        mstore(headStart, iszero(iszero(value0)))\n        mstore(add(headStart, 32), and(value1, 0xffffffff))\n    }\n    function abi_decode_tuple_t_addresst_uint32(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_uint32(add(headStart, 32))\n    }\n    function abi_decode_tuple_t_addresst_bytes_calldata_ptrt_uint48(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        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        let value_1 := calldataload(add(headStart, 64))\n        if iszero(eq(value_1, and(value_1, 0xffffffffffff))) { revert(0, 0) }\n        value3 := value_1\n    }\n    function abi_encode_tuple_t_bytes32_t_uint32__to_t_bytes32_t_uint32__fromStack_reversed(headStart, value1, value0) -> tail\n    {\n        tail := add(headStart, 64)\n        mstore(headStart, value0)\n        mstore(add(headStart, 32), and(value1, 0xffffffff))\n    }\n    function panic_error_0x32()\n    {\n        mstore(0, shl(224, 0x4e487b71))\n        mstore(4, 0x32)\n        revert(0, 0x24)\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_encode_tuple_t_address__to_t_address__fromStack_reversed(headStart, value0) -> tail\n    {\n        tail := add(headStart, 32)\n        mstore(headStart, and(value0, sub(shl(160, 1), 1)))\n    }\n    function abi_encode_tuple_t_address_t_address_t_bytes4__to_t_address_t_address_t_bytes4__fromStack_reversed(headStart, value2, value1, value0) -> tail\n    {\n        tail := add(headStart, 96)\n        mstore(headStart, and(value0, sub(shl(160, 1), 1)))\n        mstore(add(headStart, 32), and(value1, sub(shl(160, 1), 1)))\n        mstore(add(headStart, 64), and(value2, shl(224, 0xffffffff)))\n    }\n    function abi_encode_string_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), not(31))), 0x20)\n    }\n    function abi_encode_tuple_t_string_calldata_ptr__to_t_string_memory_ptr__fromStack_reversed(headStart, value1, value0) -> tail\n    {\n        mstore(headStart, 32)\n        tail := abi_encode_string_calldata(value0, value1, add(headStart, 32))\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_encode_tuple_t_address_t_address_t_bytes_calldata_ptr__to_t_address_t_address_t_bytes_memory_ptr__fromStack_reversed(headStart, value3, value2, value1, value0) -> tail\n    {\n        mstore(headStart, and(value0, sub(shl(160, 1), 1)))\n        mstore(add(headStart, 32), and(value1, sub(shl(160, 1), 1)))\n        mstore(add(headStart, 64), 96)\n        tail := abi_encode_string_calldata(value2, value3, add(headStart, 96))\n    }\n    function panic_error_0x11()\n    {\n        mstore(0, shl(224, 0x4e487b71))\n        mstore(4, 0x11)\n        revert(0, 0x24)\n    }\n    function checked_sub_t_uint256(x, y) -> diff\n    {\n        diff := sub(x, y)\n        if gt(diff, x) { panic_error_0x11() }\n    }\n    function calldata_array_index_range_access_t_bytes_calldata_ptr(offset, length, startIndex, endIndex) -> offsetOut, lengthOut\n    {\n        if gt(startIndex, endIndex) { revert(0, 0) }\n        if gt(endIndex, length) { revert(0, 0) }\n        offsetOut := add(offset, startIndex)\n        lengthOut := sub(endIndex, startIndex)\n    }\n    function panic_error_0x41()\n    {\n        mstore(0, shl(224, 0x4e487b71))\n        mstore(4, 0x41)\n        revert(0, 0x24)\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), not(30)))) { 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 abi_encode_tuple_packed_t_bytes_calldata_ptr_t_bytes_memory_ptr__to_t_bytes_memory_ptr_t_bytes_memory_ptr__nonPadded_inplace_fromStack_reversed(pos, value2, value1, value0) -> end\n    {\n        calldatacopy(pos, value0, value1)\n        let _1 := add(pos, value1)\n        mstore(_1, 0)\n        let length := mload(value2)\n        mcopy(_1, add(value2, 0x20), length)\n        let _2 := add(_1, length)\n        mstore(_2, 0)\n        end := _2\n    }\n    function abi_encode_tuple_t_address_t_address_t_address_t_bytes4__to_t_address_t_address_t_address_t_bytes4__fromStack_reversed(headStart, value3, value2, value1, value0) -> tail\n    {\n        tail := add(headStart, 128)\n        mstore(headStart, and(value0, sub(shl(160, 1), 1)))\n        mstore(add(headStart, 32), and(value1, sub(shl(160, 1), 1)))\n        mstore(add(headStart, 64), and(value2, sub(shl(160, 1), 1)))\n        mstore(add(headStart, 96), and(value3, shl(224, 0xffffffff)))\n    }\n    function checked_add_t_uint48(x, y) -> sum\n    {\n        sum := add(and(x, 0xffffffffffff), and(y, 0xffffffffffff))\n        if gt(sum, 0xffffffffffff) { panic_error_0x11() }\n    }\n    function abi_encode_tuple_t_uint48_t_address_t_address_t_bytes_calldata_ptr__to_t_uint48_t_address_t_address_t_bytes_memory_ptr__fromStack_reversed(headStart, value4, value3, value2, value1, value0) -> tail\n    {\n        mstore(headStart, and(value0, 0xffffffffffff))\n        mstore(add(headStart, 32), and(value1, sub(shl(160, 1), 1)))\n        mstore(add(headStart, 64), and(value2, sub(shl(160, 1), 1)))\n        mstore(add(headStart, 96), 128)\n        tail := abi_encode_string_calldata(value3, value4, add(headStart, 128))\n    }\n    function abi_encode_tuple_t_address_t_uint64__to_t_address_t_uint64__fromStack_reversed(headStart, value1, value0) -> tail\n    {\n        tail := add(headStart, 64)\n        mstore(headStart, and(value0, sub(shl(160, 1), 1)))\n        mstore(add(headStart, 32), and(value1, 0xffffffffffffffff))\n    }\n    function abi_encode_tuple_t_bytes4__to_t_bytes4__fromStack_reversed(headStart, value0) -> tail\n    {\n        tail := add(headStart, 32)\n        mstore(headStart, and(value0, shl(224, 0xffffffff)))\n    }\n    function convert_bytes_to_fixedbytes_from_t_bytes_calldata_ptr_to_t_bytes4(array, len) -> value\n    {\n        let _1 := calldataload(array)\n        value := and(_1, shl(224, 0xffffffff))\n        if lt(len, 4)\n        {\n            value := and(and(_1, shl(shl(3, sub(4, len)), shl(224, 0xffffffff))), shl(224, 0xffffffff))\n        }\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_uint32_t_uint48_t_bool__to_t_uint32_t_uint48_t_bool__fromStack_reversed(headStart, value2, value1, value0) -> tail\n    {\n        tail := add(headStart, 96)\n        mstore(headStart, and(value0, 0xffffffff))\n        mstore(add(headStart, 32), and(value1, 0xffffffffffff))\n        mstore(add(headStart, 64), iszero(iszero(value2)))\n    }\n    function abi_encode_tuple_t_uint32_t_uint48__to_t_uint32_t_uint48__fromStack_reversed(headStart, value1, value0) -> tail\n    {\n        tail := add(headStart, 64)\n        mstore(headStart, and(value0, 0xffffffff))\n        mstore(add(headStart, 32), and(value1, 0xffffffffffff))\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 checked_sub_t_uint32(x, y) -> diff\n    {\n        diff := sub(and(x, 0xffffffff), and(y, 0xffffffff))\n        if gt(diff, 0xffffffff) { panic_error_0x11() }\n    }\n    function abi_encode_tuple_t_rational_48_by_1_t_uint256__to_t_uint8_t_uint256__fromStack_reversed(headStart, value1, value0) -> tail\n    {\n        tail := add(headStart, 64)\n        mstore(headStart, and(value0, 0xff))\n        mstore(add(headStart, 32), value1)\n    }\n}","id":87,"language":"Yul","name":"#utility.yul"}],"immutableReferences":{},"linkReferences":{},"object":"6080604052600436106101db575f3560e01c80636d5115bd116100fd578063b700961311610092578063d22b598911610062578063d22b598914610636578063d6bb62c614610655578063f801a69814610674578063fe0776f5146106ad575f5ffd5b8063b7009613146105a8578063b7d2b162146105e3578063cc1b6c8114610602578063d1f856ee14610617575f5ffd5b8063a166aa89116100cd578063a166aa8914610501578063a64d95ce14610530578063abd9bd2a1461054f578063ac9650d81461057c575f5ffd5b80636d5115bd1461049157806375b238fc146104b0578063853551b8146104c357806394c7d7ee146104e2575f5ffd5b806330cae187116101735780634665096d116101435780634665096d146104035780634c1da1e2146104185780635296295214610437578063530dd45614610456575f5ffd5b806330cae1871461035c5780633adc277a1461037b5780633ca7c02a146103b15780634136a33c146103cb575f5ffd5b806318ff183c116101ae57806318ff183c146102b25780631cff79cd146102d157806325c471a0146102e45780633078f11414610303575f5ffd5b806308d6122d146101df5780630b0a93ba1461020057806312be87271461025f578063167bd39514610293575b5f5ffd5b3480156101ea575f5ffd5b506101fe6101f93660046120c0565b6106cc565b005b34801561020b575f5ffd5b5061024261021a366004612122565b6001600160401b039081165f9081526001602081905260409091200154600160401b90041690565b6040516001600160401b0390911681526020015b60405180910390f35b34801561026a575f5ffd5b5061027e610279366004612122565b61071e565b60405163ffffffff9091168152602001610256565b34801561029e575f5ffd5b506101fe6102ad36600461213b565b610758565b3480156102bd575f5ffd5b506101fe6102cc366004612176565b61076e565b61027e6102df3660046121df565b6107d0565b3480156102ef575f5ffd5b506101fe6102fe366004612242565b6108fc565b34801561030e575f5ffd5b5061032261031d366004612284565b61091e565b604051610256949392919065ffffffffffff948516815263ffffffff93841660208201529190921660408201529116606082015260800190565b348015610367575f5ffd5b506101fe61037636600461229e565b610982565b348015610386575f5ffd5b5061039a6103953660046122cf565b610994565b60405165ffffffffffff9091168152602001610256565b3480156103bc575f5ffd5b506102426001600160401b0381565b3480156103d6575f5ffd5b5061027e6103e53660046122cf565b5f90815260026020526040902054600160301b900463ffffffff1690565b34801561040e575f5ffd5b5062093a8061027e565b348015610423575f5ffd5b5061027e6104323660046122e6565b6109c5565b348015610442575f5ffd5b506101fe61045136600461229e565b6109f2565b348015610461575f5ffd5b50610242610470366004612122565b6001600160401b039081165f90815260016020819052604090912001541690565b34801561049c575f5ffd5b506102426104ab366004612316565b610a04565b3480156104bb575f5ffd5b506102425f81565b3480156104ce575f5ffd5b506101fe6104dd366004612342565b610a3e565b3480156104ed575f5ffd5b506101fe6104fc3660046121df565b610ad5565b34801561050c575f5ffd5b5061052061051b3660046122e6565b610b7f565b6040519015158152602001610256565b34801561053b575f5ffd5b506101fe61054a36600461235d565b610ba6565b34801561055a575f5ffd5b5061056e610569366004612385565b610bb8565b604051908152602001610256565b348015610587575f5ffd5b5061059b6105963660046123e5565b610bf0565b6040516102569190612423565b3480156105b3575f5ffd5b506105c76105c23660046124a7565b610cd5565b60408051921515835263ffffffff909116602083015201610256565b3480156105ee575f5ffd5b506101fe6105fd366004612284565b610d56565b34801561060d575f5ffd5b506206978061027e565b348015610622575f5ffd5b506105c7610631366004612284565b610d6d565b348015610641575f5ffd5b506101fe6106503660046124ef565b610de6565b348015610660575f5ffd5b5061027e61066f366004612385565b610df8565b34801561067f575f5ffd5b5061069361068e36600461250b565b610f4b565b6040805192835263ffffffff909116602083015201610256565b3480156106b8575f5ffd5b506101fe6106c7366004612284565b61108c565b6106d46110b5565b5f5b828110156107175761070f858585848181106106f4576106f4612578565b9050602002016020810190610709919061258c565b8461112c565b6001016106d6565b5050505050565b6001600160401b0381165f9081526001602081905260408220015461075290600160801b90046001600160701b03166111ad565b92915050565b6107606110b5565b61076a82826111cb565b5050565b6107766110b5565b604051637a9e5e4b60e01b81526001600160a01b038281166004830152831690637a9e5e4b906024015f604051808303815f87803b1580156107b6575f5ffd5b505af11580156107c8573d5f5f3e3d5ffd5b505050505050565b5f3381806107e08388888861123c565b91509150811580156107f6575063ffffffff8116155b15610849578287610807888861128d565b6040516381c6f24b60e01b81526001600160a01b0393841660048201529290911660248301526001600160e01b03191660448201526064015b60405180910390fd5b5f61085684898989610bb8565b90505f63ffffffff831615158061087c575061087182610994565b65ffffffffffff1615155b1561088d5761088a826112a4565b90505b6003546108a38a61089e8b8b61128d565b6113a2565b6003819055506108ea8a8a8a8080601f0160208091040260200160405190810160405280939291908181526020018383808284375f920191909152503492506113c7915050565b506003559450505050505b9392505050565b6109046110b5565b61091883836109128661071e565b84611493565b50505050565b6001600160401b0382165f9081526001602090815260408083206001600160a01b03851684529091528120805465ffffffffffff81169291829182919061097490600160301b90046001600160701b03166116d9565b969991985096509350505050565b61098a6110b5565b61076a82826116fa565b5f8181526002602052604081205465ffffffffffff166109b38161179d565b6109bd57806108f5565b5f9392505050565b6001600160a01b0381165f90815260208190526040812060010154610752906001600160701b03166111ad565b6109fa6110b5565b61076a82826117cb565b6001600160a01b0382165f908152602081815260408083206001600160e01b0319851684529091529020546001600160401b031692915050565b610a466110b5565b6001600160401b0383161580610a6457506001600160401b03838116145b15610a8d5760405163061c6a4360e21b81526001600160401b0384166004820152602401610840565b826001600160401b03167f1256f5b5ecb89caec12db449738f2fbcd1ba5806cf38f35413f4e5c15bf6a4508383604051610ac89291906125cf565b60405180910390a2505050565b60408051638fb3603760e01b80825291513392918391638fb36037916004808201926020929091908290030181865afa158015610b14573d5f5f3e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610b3891906125ea565b6001600160e01b03191614610b6b57604051630641fee960e31b81526001600160a01b0382166004820152602401610840565b610717610b7a85838686610bb8565b6112a4565b6001600160a01b03165f90815260208190526040902060010154600160701b900460ff1690565b610bae6110b5565b61076a828261187c565b5f84848484604051602001610bd09493929190612605565b604051602081830303815290604052805190602001209050949350505050565b604080515f815260208101909152606090826001600160401b03811115610c1957610c19612676565b604051908082528060200260200182016040528015610c4c57816020015b6060815260200190600190039081610c375790505b5091505f5b83811015610ccd57610ca830868684818110610c6f57610c6f612578565b9050602002810190610c81919061268a565b85604051602001610c94939291906126cc565b60405160208183030381529060405261198b565b838281518110610cba57610cba612578565b6020908102919091010152600101610c51565b505092915050565b5f5f610ce084610b7f565b15610cef57505f905080610d4e565b306001600160a01b03861603610d1357610d098484611a0d565b5f91509150610d4e565b5f610d1e8585610a04565b90505f5f610d2c8389610d6d565b9150915081610d3c575f5f610d46565b63ffffffff811615815b945094505050505b935093915050565b610d5e6110b5565b610d688282611a23565b505050565b5f8067fffffffffffffffe196001600160401b03851601610d935750600190505f610ddf565b5f5f610d9f868661091e565b5050915091508165ffffffffffff165f14158015610dd45750610dc0611b0c565b65ffffffffffff168265ffffffffffff1611155b93509150610ddf9050565b9250929050565b610dee6110b5565b61076a8282611b1b565b5f3381610e05858561128d565b90505f610e1488888888610bb8565b5f8181526002602052604081205491925065ffffffffffff9091169003610e515760405163060a299b60e41b815260048101829052602401610840565b826001600160a01b0316886001600160a01b031614610eea575f610e755f85610d6d565b5090505f610e8f610e8961021a8b87610a04565b86610d6d565b50905081158015610e9e575080155b15610ee757604051630ff89d4760e21b81526001600160a01b038087166004830152808c1660248301528a1660448201526001600160e01b031985166064820152608401610840565b50505b5f81815260026020526040808220805465ffffffffffff1916908190559051600160301b90910463ffffffff1691829184917fbd9ac67a6e2f6463b80927326310338bcbb4bdb7936ce1365ea3e01067e7b9f791a398975050505050505050565b5f803381610f5b8289898961123c565b9150505f8163ffffffff16610f6e611b0c565b610f7891906126ef565b905063ffffffff82161580610fae57505f8665ffffffffffff16118015610fae57508065ffffffffffff168665ffffffffffff16105b15610fbf5782896108078a8a61128d565b610fd98665ffffffffffff168265ffffffffffff16611bd6565b9550610fe7838a8a8a610bb8565b9450610ff285611be5565b5f8581526002602052604090819020805465ffffffffffff891669ffffffffffffffffffff19821617600160301b9182900463ffffffff90811660010190811692830291909117909255915190955086907f82a2da5dee54ea8021c6545b4444620291e07ee83be6dd57edb175062715f3b490611078908a9088908f908f908f9061270d565b60405180910390a350505094509492505050565b6001600160a01b0381163314610d5e57604051635f159e6360e01b815260040160405180910390fd5b335f806110c3838236611c31565b9150915081610d68578063ffffffff165f0361111d575f6110e48136611cf4565b5060405163f07e038f60e01b81526001600160a01b03871660048201526001600160401b03821660248201529092506044019050610840565b610918610b7a84305f36610bb8565b6001600160a01b0383165f818152602081815260408083206001600160e01b0319871680855290835292819020805467ffffffffffffffff19166001600160401b038716908117909155905192835292917f9ea6790c7dadfd01c9f8b9762b3682607af2c7e79e05a9f9fdf5580dde949151910160405180910390a3505050565b5f5f6111c1836001600160701b03166116d9565b5090949350505050565b6001600160a01b0382165f81815260208190526040908190206001018054841515600160701b0260ff60701b19909116179055517f90d4e7bb7e5d933792b3562e1741306f8be94837e1348dacef9b6f1df56eb1389061123090841515815260200190565b60405180910390a25050565b5f80306001600160a01b0386160361126257611259868585611c31565b91509150611284565b6004831061127e5761127986866105c2878761128d565b611259565b505f9050805b94509492505050565b5f61129b600482848661264f565b6108f591612752565b5f8181526002602052604081205465ffffffffffff811690600160301b900463ffffffff168183036112ec5760405163060a299b60e41b815260048101859052602401610840565b6112f4611b0c565b65ffffffffffff168265ffffffffffff16111561132757604051630c65b5bd60e11b815260048101859052602401610840565b6113308261179d565b1561135157604051631e2975b960e21b815260048101859052602401610840565b5f84815260026020526040808220805465ffffffffffff191690555163ffffffff83169186917f76a2a46953689d4861a5d3f6ed883ad7e6af674a21f8e162707159fc9dde614d9190a39392505050565b6001600160a01b0382165f9081526001600160e01b03198216602052604081206108f5565b6060814710156113f35760405163cf47918160e01b815247600482015260248101839052604401610840565b5f6113ff858486611eda565b905080801561142057505f3d118061142057505f856001600160a01b03163b115b156114355761142d611eef565b9150506108f5565b801561145f57604051639996b31560e01b81526001600160a01b0386166004820152602401610840565b3d156114725761146d611f08565b61148b565b60405163d6bda27560e01b815260040160405180910390fd5b509392505050565b5f67fffffffffffffffe196001600160401b038616016114d15760405163061c6a4360e21b81526001600160401b0386166004820152602401610840565b6001600160401b0385165f9081526001602090815260408083206001600160a01b038816845290915281205465ffffffffffff16159081156115c1578463ffffffff1661151c611b0c565b61152691906126ef565b905060405180604001604052808265ffffffffffff1681526020016115548663ffffffff1663ffffffff1690565b6001600160701b039081169091526001600160401b0389165f9081526001602090815260408083206001600160a01b038c1684528252909120835181549490920151909216600160301b026001600160a01b031990931665ffffffffffff9091161791909117905561166b565b6001600160401b0387165f9081526001602090815260408083206001600160a01b038a16845290915281205461160a91600160301b9091046001600160701b0316908690611f13565b6001600160401b0389165f9081526001602090815260408083206001600160a01b038c168452909152902080546001600160701b03909316600160301b0273ffffffffffffffffffffffffffff000000000000199093169290921790915590505b6040805163ffffffff8616815265ffffffffffff831660208201528315158183015290516001600160a01b038816916001600160401b038a16917ff98448b987f1428e0e230e1f3c6e2ce15b5693eaf31827fbd0b1ec4b424ae7cf9181900360600190a35095945050505050565b5f5f5f6116ed846116e8611b0c565b611fb9565b9250925092509193909250565b6001600160401b038216158061171857506001600160401b03828116145b156117415760405163061c6a4360e21b81526001600160401b0383166004820152602401610840565b6001600160401b038281165f818152600160208190526040808320909101805467ffffffffffffffff19169486169485179055517f1fd6dd7631312dfac2205b52913f99de03b4d7e381d5d27d3dbfe0713e6e63409190a35050565b5f6117a6611b0c565b65ffffffffffff166117bb62093a80846126ef565b65ffffffffffff16111592915050565b6001600160401b03821615806117e957506001600160401b03828116145b156118125760405163061c6a4360e21b81526001600160401b0383166004820152602401610840565b6001600160401b038281165f81815260016020819052604080832090910180546fffffffffffffffff00000000000000001916600160401b958716958602179055517f7a8059630b897b5de4c08ade69f8b90c3ead1f8596d62d10b6c4d14a0afb4ae29190a35050565b67fffffffffffffffe196001600160401b038316016118b95760405163061c6a4360e21b81526001600160401b0383166004820152602401610840565b6001600160401b0382165f908152600160208190526040822001546118f290600160801b90046001600160701b03168362069780611f13565b6001600160401b0385165f818152600160208190526040918290200180546001600160701b03909516600160801b026dffffffffffffffffffffffffffff60801b199095169490941790935591519092507ffeb69018ee8b8fd50ea86348f1267d07673379f72cffdeccec63853ee8ce8b4890610ac8908590859063ffffffff92909216825265ffffffffffff16602082015260400190565b60605f6119988484612005565b90508080156119b957505f3d11806119b957505f846001600160a01b03163b115b156119ce576119c6611eef565b915050610752565b80156119f857604051639996b31560e01b81526001600160a01b0385166004820152602401610840565b3d1561147257611a06611f08565b5092915050565b5f611a1883836113a2565b600354149392505050565b5f67fffffffffffffffe196001600160401b03841601611a615760405163061c6a4360e21b81526001600160401b0384166004820152602401610840565b6001600160401b0383165f9081526001602090815260408083206001600160a01b038616845290915281205465ffffffffffff169003611aa257505f610752565b6001600160401b0383165f8181526001602090815260408083206001600160a01b038716808552925280832080546001600160a01b0319169055519092917ff229baa593af28c41b1d16b748cd7688f0c83aaf92d4be41c44005defe84c16691a350600192915050565b5f611b1642612018565b905090565b6001600160a01b0382165f90815260208190526040812060010154611b4d906001600160701b03168362069780611f13565b6001600160a01b0385165f818152602081815260409182902060010180546dffffffffffffffffffffffffffff19166001600160701b039690961695909517909455805163ffffffff8716815265ffffffffffff841694810194909452919350917fa56b76017453f399ec2327ba00375dbfb1fd070ff854341ad6191e6a2e2de19c9101610ac8565b5f8282188284110282186108f5565b5f8181526002602052604090205465ffffffffffff168015801590611c105750611c0e8161179d565b155b1561076a5760405163813e945960e01b815260048101839052602401610840565b5f806004831015611c4657505f905080610d4e565b306001600160a01b03861603611c6957610d0930611c64868661128d565b611a0d565b5f5f5f611c768787611cf4565b92509250925082158015611c8e5750611c8e30610b7f565b15611ca1575f5f94509450505050610d4e565b5f5f611cad848b610d6d565b9150915081611cc6575f5f965096505050505050610d4e565b611cdc8363ffffffff168263ffffffff16611bd6565b63ffffffff8116159b909a5098505050505050505050565b5f80806004841015611d0d57505f915081905080611ed3565b5f611d18868661128d565b90506001600160e01b031981166310a6aa3760e31b1480611d4957506001600160e01b031981166330cae18760e01b145b80611d6457506001600160e01b0319811663294b14a960e11b145b80611d7f57506001600160e01b03198116635326cae760e11b145b80611d9a57506001600160e01b0319811663d22b598960e01b145b15611daf5760015f5f93509350935050611ed3565b6001600160e01b0319811663063fc60f60e21b1480611dde57506001600160e01b0319811663167bd39560e01b145b80611df957506001600160e01b031981166308d6122d60e01b145b15611e38575f611e0d60246004888a61264f565b810190611e1a91906122e6565b90505f611e26826109c5565b600196505f95509350611ed392505050565b6001600160e01b0319811663012e238d60e51b1480611e6757506001600160e01b03198116635be958b160e11b145b15611ebf575f611e7b60246004888a61264f565b810190611e889190612122565b90506001611eb1826001600160401b039081165f90815260016020819052604090912001541690565b5f9450945094505050611ed3565b5f611eca3083610a04565b5f935093509350505b9250925092565b5f5f5f83516020850186885af1949350505050565b6040513d81523d5f602083013e3d602001810160405290565b6040513d5f823e3d81fd5b5f5f5f611f28866001600160701b03166111ad565b90505f611f638563ffffffff168763ffffffff168463ffffffff1611611f4e575f611f58565b611f588885612788565b63ffffffff16611bd6565b90508063ffffffff16611f74611b0c565b611f7e91906126ef565b925063ffffffff8616602083901b67ffffffff0000000016604085901b6dffffffffffff000000000000000016171793505050935093915050565b69ffffffffffffffffffff602083901c166001600160701b03831665ffffffffffff604085901c8116908416811115611ff457828282611ff8565b815f5f5b9250925092509250925092565b5f5f5f835160208501865af49392505050565b5f65ffffffffffff82111561204a576040516306dfcc6560e41b81526030600482015260248101839052604401610840565b5090565b6001600160a01b0381168114612062575f5ffd5b50565b5f5f83601f840112612075575f5ffd5b5081356001600160401b0381111561208b575f5ffd5b6020830191508360208260051b8501011115610ddf575f5ffd5b80356001600160401b03811681146120bb575f5ffd5b919050565b5f5f5f5f606085870312156120d3575f5ffd5b84356120de8161204e565b935060208501356001600160401b038111156120f8575f5ffd5b61210487828801612065565b90945092506121179050604086016120a5565b905092959194509250565b5f60208284031215612132575f5ffd5b6108f5826120a5565b5f5f6040838503121561214c575f5ffd5b82356121578161204e565b91506020830135801515811461216b575f5ffd5b809150509250929050565b5f5f60408385031215612187575f5ffd5b82356121928161204e565b9150602083013561216b8161204e565b5f5f83601f8401126121b2575f5ffd5b5081356001600160401b038111156121c8575f5ffd5b602083019150836020828501011115610ddf575f5ffd5b5f5f5f604084860312156121f1575f5ffd5b83356121fc8161204e565b925060208401356001600160401b03811115612216575f5ffd5b612222868287016121a2565b9497909650939450505050565b803563ffffffff811681146120bb575f5ffd5b5f5f5f60608486031215612254575f5ffd5b61225d846120a5565b9250602084013561226d8161204e565b915061227b6040850161222f565b90509250925092565b5f5f60408385031215612295575f5ffd5b612192836120a5565b5f5f604083850312156122af575f5ffd5b6122b8836120a5565b91506122c6602084016120a5565b90509250929050565b5f602082840312156122df575f5ffd5b5035919050565b5f602082840312156122f6575f5ffd5b81356108f58161204e565b6001600160e01b031981168114612062575f5ffd5b5f5f60408385031215612327575f5ffd5b82356123328161204e565b9150602083013561216b81612301565b5f5f5f60408486031215612354575f5ffd5b6121fc846120a5565b5f5f6040838503121561236e575f5ffd5b612377836120a5565b91506122c66020840161222f565b5f5f5f5f60608587031215612398575f5ffd5b84356123a38161204e565b935060208501356123b38161204e565b925060408501356001600160401b038111156123cd575f5ffd5b6123d9878288016121a2565b95989497509550505050565b5f5f602083850312156123f6575f5ffd5b82356001600160401b0381111561240b575f5ffd5b61241785828601612065565b90969095509350505050565b5f602082016020835280845180835260408501915060408160051b8601019250602086015f5b8281101561249b57603f19878603018452815180518087528060208301602089015e5f602082890101526020601f19601f83011688010196505050602082019150602084019350600181019050612449565b50929695505050505050565b5f5f5f606084860312156124b9575f5ffd5b83356124c48161204e565b925060208401356124d48161204e565b915060408401356124e481612301565b809150509250925092565b5f5f60408385031215612500575f5ffd5b82356123778161204e565b5f5f5f5f6060858703121561251e575f5ffd5b84356125298161204e565b935060208501356001600160401b03811115612543575f5ffd5b61254f878288016121a2565b909450925050604085013565ffffffffffff8116811461256d575f5ffd5b939692955090935050565b634e487b7160e01b5f52603260045260245ffd5b5f6020828403121561259c575f5ffd5b81356108f581612301565b81835281816020850137505f828201602090810191909152601f909101601f19169091010190565b602081525f6125e26020830184866125a7565b949350505050565b5f602082840312156125fa575f5ffd5b81516108f581612301565b6001600160a01b038581168252841660208201526060604082018190525f9061263190830184866125a7565b9695505050505050565b634e487b7160e01b5f52601160045260245ffd5b5f5f8585111561265d575f5ffd5b83861115612669575f5ffd5b5050820193919092039150565b634e487b7160e01b5f52604160045260245ffd5b5f5f8335601e1984360301811261269f575f5ffd5b8301803591506001600160401b038211156126b8575f5ffd5b602001915036819003821315610ddf575f5ffd5b828482375f8382015f815283518060208601835e5f910190815295945050505050565b65ffffffffffff81811683821601908111156107525761075261263b565b65ffffffffffff861681526001600160a01b038581166020830152841660408201526080606082018190525f9061274790830184866125a7565b979650505050505050565b80356001600160e01b03198116906004841015611a06576001600160e01b031960049490940360031b84901b1690921692915050565b63ffffffff82811682821603908111156107525761075261263b56fea26469706673582212209b3164b8cdeac6faaf8c03b8a27b787dcccb72987c31447c36cedc0e6df90b7364736f6c634300081e0033","opcodes":"PUSH1 0x80 PUSH1 0x40 MSTORE PUSH1 0x4 CALLDATASIZE LT PUSH2 0x1DB JUMPI PUSH0 CALLDATALOAD PUSH1 0xE0 SHR DUP1 PUSH4 0x6D5115BD GT PUSH2 0xFD JUMPI DUP1 PUSH4 0xB7009613 GT PUSH2 0x92 JUMPI DUP1 PUSH4 0xD22B5989 GT PUSH2 0x62 JUMPI DUP1 PUSH4 0xD22B5989 EQ PUSH2 0x636 JUMPI DUP1 PUSH4 0xD6BB62C6 EQ PUSH2 0x655 JUMPI DUP1 PUSH4 0xF801A698 EQ PUSH2 0x674 JUMPI DUP1 PUSH4 0xFE0776F5 EQ PUSH2 0x6AD JUMPI PUSH0 PUSH0 REVERT JUMPDEST DUP1 PUSH4 0xB7009613 EQ PUSH2 0x5A8 JUMPI DUP1 PUSH4 0xB7D2B162 EQ PUSH2 0x5E3 JUMPI DUP1 PUSH4 0xCC1B6C81 EQ PUSH2 0x602 JUMPI DUP1 PUSH4 0xD1F856EE EQ PUSH2 0x617 JUMPI PUSH0 PUSH0 REVERT JUMPDEST DUP1 PUSH4 0xA166AA89 GT PUSH2 0xCD JUMPI DUP1 PUSH4 0xA166AA89 EQ PUSH2 0x501 JUMPI DUP1 PUSH4 0xA64D95CE EQ PUSH2 0x530 JUMPI DUP1 PUSH4 0xABD9BD2A EQ PUSH2 0x54F JUMPI DUP1 PUSH4 0xAC9650D8 EQ PUSH2 0x57C JUMPI PUSH0 PUSH0 REVERT JUMPDEST DUP1 PUSH4 0x6D5115BD EQ PUSH2 0x491 JUMPI DUP1 PUSH4 0x75B238FC EQ PUSH2 0x4B0 JUMPI DUP1 PUSH4 0x853551B8 EQ PUSH2 0x4C3 JUMPI DUP1 PUSH4 0x94C7D7EE EQ PUSH2 0x4E2 JUMPI PUSH0 PUSH0 REVERT JUMPDEST DUP1 PUSH4 0x30CAE187 GT PUSH2 0x173 JUMPI DUP1 PUSH4 0x4665096D GT PUSH2 0x143 JUMPI DUP1 PUSH4 0x4665096D EQ PUSH2 0x403 JUMPI DUP1 PUSH4 0x4C1DA1E2 EQ PUSH2 0x418 JUMPI DUP1 PUSH4 0x52962952 EQ PUSH2 0x437 JUMPI DUP1 PUSH4 0x530DD456 EQ PUSH2 0x456 JUMPI PUSH0 PUSH0 REVERT JUMPDEST DUP1 PUSH4 0x30CAE187 EQ PUSH2 0x35C JUMPI DUP1 PUSH4 0x3ADC277A EQ PUSH2 0x37B JUMPI DUP1 PUSH4 0x3CA7C02A EQ PUSH2 0x3B1 JUMPI DUP1 PUSH4 0x4136A33C EQ PUSH2 0x3CB JUMPI PUSH0 PUSH0 REVERT JUMPDEST DUP1 PUSH4 0x18FF183C GT PUSH2 0x1AE JUMPI DUP1 PUSH4 0x18FF183C EQ PUSH2 0x2B2 JUMPI DUP1 PUSH4 0x1CFF79CD EQ PUSH2 0x2D1 JUMPI DUP1 PUSH4 0x25C471A0 EQ PUSH2 0x2E4 JUMPI DUP1 PUSH4 0x3078F114 EQ PUSH2 0x303 JUMPI PUSH0 PUSH0 REVERT JUMPDEST DUP1 PUSH4 0x8D6122D EQ PUSH2 0x1DF JUMPI DUP1 PUSH4 0xB0A93BA EQ PUSH2 0x200 JUMPI DUP1 PUSH4 0x12BE8727 EQ PUSH2 0x25F JUMPI DUP1 PUSH4 0x167BD395 EQ PUSH2 0x293 JUMPI JUMPDEST PUSH0 PUSH0 REVERT JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x1EA JUMPI PUSH0 PUSH0 REVERT JUMPDEST POP PUSH2 0x1FE PUSH2 0x1F9 CALLDATASIZE PUSH1 0x4 PUSH2 0x20C0 JUMP JUMPDEST PUSH2 0x6CC JUMP JUMPDEST STOP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x20B JUMPI PUSH0 PUSH0 REVERT JUMPDEST POP PUSH2 0x242 PUSH2 0x21A CALLDATASIZE PUSH1 0x4 PUSH2 0x2122 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0x40 SHL SUB SWAP1 DUP2 AND PUSH0 SWAP1 DUP2 MSTORE PUSH1 0x1 PUSH1 0x20 DUP2 SWAP1 MSTORE PUSH1 0x40 SWAP1 SWAP2 KECCAK256 ADD SLOAD PUSH1 0x1 PUSH1 0x40 SHL SWAP1 DIV AND SWAP1 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0x40 SHL SUB SWAP1 SWAP2 AND DUP2 MSTORE PUSH1 0x20 ADD JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x26A JUMPI PUSH0 PUSH0 REVERT JUMPDEST POP PUSH2 0x27E PUSH2 0x279 CALLDATASIZE PUSH1 0x4 PUSH2 0x2122 JUMP JUMPDEST PUSH2 0x71E JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH4 0xFFFFFFFF SWAP1 SWAP2 AND DUP2 MSTORE PUSH1 0x20 ADD PUSH2 0x256 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x29E JUMPI PUSH0 PUSH0 REVERT JUMPDEST POP PUSH2 0x1FE PUSH2 0x2AD CALLDATASIZE PUSH1 0x4 PUSH2 0x213B JUMP JUMPDEST PUSH2 0x758 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x2BD JUMPI PUSH0 PUSH0 REVERT JUMPDEST POP PUSH2 0x1FE PUSH2 0x2CC CALLDATASIZE PUSH1 0x4 PUSH2 0x2176 JUMP JUMPDEST PUSH2 0x76E JUMP JUMPDEST PUSH2 0x27E PUSH2 0x2DF CALLDATASIZE PUSH1 0x4 PUSH2 0x21DF JUMP JUMPDEST PUSH2 0x7D0 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x2EF JUMPI PUSH0 PUSH0 REVERT JUMPDEST POP PUSH2 0x1FE PUSH2 0x2FE CALLDATASIZE PUSH1 0x4 PUSH2 0x2242 JUMP JUMPDEST PUSH2 0x8FC JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x30E JUMPI PUSH0 PUSH0 REVERT JUMPDEST POP PUSH2 0x322 PUSH2 0x31D CALLDATASIZE PUSH1 0x4 PUSH2 0x2284 JUMP JUMPDEST PUSH2 0x91E JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0x256 SWAP5 SWAP4 SWAP3 SWAP2 SWAP1 PUSH6 0xFFFFFFFFFFFF SWAP5 DUP6 AND DUP2 MSTORE PUSH4 0xFFFFFFFF SWAP4 DUP5 AND PUSH1 0x20 DUP3 ADD MSTORE SWAP2 SWAP1 SWAP3 AND PUSH1 0x40 DUP3 ADD MSTORE SWAP2 AND PUSH1 0x60 DUP3 ADD MSTORE PUSH1 0x80 ADD SWAP1 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x367 JUMPI PUSH0 PUSH0 REVERT JUMPDEST POP PUSH2 0x1FE PUSH2 0x376 CALLDATASIZE PUSH1 0x4 PUSH2 0x229E JUMP JUMPDEST PUSH2 0x982 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x386 JUMPI PUSH0 PUSH0 REVERT JUMPDEST POP PUSH2 0x39A PUSH2 0x395 CALLDATASIZE PUSH1 0x4 PUSH2 0x22CF JUMP JUMPDEST PUSH2 0x994 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH6 0xFFFFFFFFFFFF SWAP1 SWAP2 AND DUP2 MSTORE PUSH1 0x20 ADD PUSH2 0x256 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x3BC JUMPI PUSH0 PUSH0 REVERT JUMPDEST POP PUSH2 0x242 PUSH1 0x1 PUSH1 0x1 PUSH1 0x40 SHL SUB DUP2 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x3D6 JUMPI PUSH0 PUSH0 REVERT JUMPDEST POP PUSH2 0x27E PUSH2 0x3E5 CALLDATASIZE PUSH1 0x4 PUSH2 0x22CF JUMP JUMPDEST PUSH0 SWAP1 DUP2 MSTORE PUSH1 0x2 PUSH1 0x20 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD PUSH1 0x1 PUSH1 0x30 SHL SWAP1 DIV PUSH4 0xFFFFFFFF AND SWAP1 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x40E JUMPI PUSH0 PUSH0 REVERT JUMPDEST POP PUSH3 0x93A80 PUSH2 0x27E JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x423 JUMPI PUSH0 PUSH0 REVERT JUMPDEST POP PUSH2 0x27E PUSH2 0x432 CALLDATASIZE PUSH1 0x4 PUSH2 0x22E6 JUMP JUMPDEST PUSH2 0x9C5 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x442 JUMPI PUSH0 PUSH0 REVERT JUMPDEST POP PUSH2 0x1FE PUSH2 0x451 CALLDATASIZE PUSH1 0x4 PUSH2 0x229E JUMP JUMPDEST PUSH2 0x9F2 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x461 JUMPI PUSH0 PUSH0 REVERT JUMPDEST POP PUSH2 0x242 PUSH2 0x470 CALLDATASIZE PUSH1 0x4 PUSH2 0x2122 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0x40 SHL SUB SWAP1 DUP2 AND PUSH0 SWAP1 DUP2 MSTORE PUSH1 0x1 PUSH1 0x20 DUP2 SWAP1 MSTORE PUSH1 0x40 SWAP1 SWAP2 KECCAK256 ADD SLOAD AND SWAP1 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x49C JUMPI PUSH0 PUSH0 REVERT JUMPDEST POP PUSH2 0x242 PUSH2 0x4AB CALLDATASIZE PUSH1 0x4 PUSH2 0x2316 JUMP JUMPDEST PUSH2 0xA04 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x4BB JUMPI PUSH0 PUSH0 REVERT JUMPDEST POP PUSH2 0x242 PUSH0 DUP2 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x4CE JUMPI PUSH0 PUSH0 REVERT JUMPDEST POP PUSH2 0x1FE PUSH2 0x4DD CALLDATASIZE PUSH1 0x4 PUSH2 0x2342 JUMP JUMPDEST PUSH2 0xA3E JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x4ED JUMPI PUSH0 PUSH0 REVERT JUMPDEST POP PUSH2 0x1FE PUSH2 0x4FC CALLDATASIZE PUSH1 0x4 PUSH2 0x21DF JUMP JUMPDEST PUSH2 0xAD5 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x50C JUMPI PUSH0 PUSH0 REVERT JUMPDEST POP PUSH2 0x520 PUSH2 0x51B CALLDATASIZE PUSH1 0x4 PUSH2 0x22E6 JUMP JUMPDEST PUSH2 0xB7F JUMP JUMPDEST PUSH1 0x40 MLOAD SWAP1 ISZERO ISZERO DUP2 MSTORE PUSH1 0x20 ADD PUSH2 0x256 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x53B JUMPI PUSH0 PUSH0 REVERT JUMPDEST POP PUSH2 0x1FE PUSH2 0x54A CALLDATASIZE PUSH1 0x4 PUSH2 0x235D JUMP JUMPDEST PUSH2 0xBA6 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x55A JUMPI PUSH0 PUSH0 REVERT JUMPDEST POP PUSH2 0x56E PUSH2 0x569 CALLDATASIZE PUSH1 0x4 PUSH2 0x2385 JUMP JUMPDEST PUSH2 0xBB8 JUMP JUMPDEST PUSH1 0x40 MLOAD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH2 0x256 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x587 JUMPI PUSH0 PUSH0 REVERT JUMPDEST POP PUSH2 0x59B PUSH2 0x596 CALLDATASIZE PUSH1 0x4 PUSH2 0x23E5 JUMP JUMPDEST PUSH2 0xBF0 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0x256 SWAP2 SWAP1 PUSH2 0x2423 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x5B3 JUMPI PUSH0 PUSH0 REVERT JUMPDEST POP PUSH2 0x5C7 PUSH2 0x5C2 CALLDATASIZE PUSH1 0x4 PUSH2 0x24A7 JUMP JUMPDEST PUSH2 0xCD5 JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD SWAP3 ISZERO ISZERO DUP4 MSTORE PUSH4 0xFFFFFFFF SWAP1 SWAP2 AND PUSH1 0x20 DUP4 ADD MSTORE ADD PUSH2 0x256 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x5EE JUMPI PUSH0 PUSH0 REVERT JUMPDEST POP PUSH2 0x1FE PUSH2 0x5FD CALLDATASIZE PUSH1 0x4 PUSH2 0x2284 JUMP JUMPDEST PUSH2 0xD56 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x60D JUMPI PUSH0 PUSH0 REVERT JUMPDEST POP PUSH3 0x69780 PUSH2 0x27E JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x622 JUMPI PUSH0 PUSH0 REVERT JUMPDEST POP PUSH2 0x5C7 PUSH2 0x631 CALLDATASIZE PUSH1 0x4 PUSH2 0x2284 JUMP JUMPDEST PUSH2 0xD6D JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x641 JUMPI PUSH0 PUSH0 REVERT JUMPDEST POP PUSH2 0x1FE PUSH2 0x650 CALLDATASIZE PUSH1 0x4 PUSH2 0x24EF JUMP JUMPDEST PUSH2 0xDE6 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x660 JUMPI PUSH0 PUSH0 REVERT JUMPDEST POP PUSH2 0x27E PUSH2 0x66F CALLDATASIZE PUSH1 0x4 PUSH2 0x2385 JUMP JUMPDEST PUSH2 0xDF8 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x67F JUMPI PUSH0 PUSH0 REVERT JUMPDEST POP PUSH2 0x693 PUSH2 0x68E CALLDATASIZE PUSH1 0x4 PUSH2 0x250B JUMP JUMPDEST PUSH2 0xF4B JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD SWAP3 DUP4 MSTORE PUSH4 0xFFFFFFFF SWAP1 SWAP2 AND PUSH1 0x20 DUP4 ADD MSTORE ADD PUSH2 0x256 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x6B8 JUMPI PUSH0 PUSH0 REVERT JUMPDEST POP PUSH2 0x1FE PUSH2 0x6C7 CALLDATASIZE PUSH1 0x4 PUSH2 0x2284 JUMP JUMPDEST PUSH2 0x108C JUMP JUMPDEST PUSH2 0x6D4 PUSH2 0x10B5 JUMP JUMPDEST PUSH0 JUMPDEST DUP3 DUP2 LT ISZERO PUSH2 0x717 JUMPI PUSH2 0x70F DUP6 DUP6 DUP6 DUP5 DUP2 DUP2 LT PUSH2 0x6F4 JUMPI PUSH2 0x6F4 PUSH2 0x2578 JUMP JUMPDEST SWAP1 POP PUSH1 0x20 MUL ADD PUSH1 0x20 DUP2 ADD SWAP1 PUSH2 0x709 SWAP2 SWAP1 PUSH2 0x258C JUMP JUMPDEST DUP5 PUSH2 0x112C JUMP JUMPDEST PUSH1 0x1 ADD PUSH2 0x6D6 JUMP JUMPDEST POP POP POP POP POP JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0x40 SHL SUB DUP2 AND PUSH0 SWAP1 DUP2 MSTORE PUSH1 0x1 PUSH1 0x20 DUP2 SWAP1 MSTORE PUSH1 0x40 DUP3 KECCAK256 ADD SLOAD PUSH2 0x752 SWAP1 PUSH1 0x1 PUSH1 0x80 SHL SWAP1 DIV PUSH1 0x1 PUSH1 0x1 PUSH1 0x70 SHL SUB AND PUSH2 0x11AD JUMP JUMPDEST SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH2 0x760 PUSH2 0x10B5 JUMP JUMPDEST PUSH2 0x76A DUP3 DUP3 PUSH2 0x11CB JUMP JUMPDEST POP POP JUMP JUMPDEST PUSH2 0x776 PUSH2 0x10B5 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH4 0x7A9E5E4B PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP3 DUP2 AND PUSH1 0x4 DUP4 ADD MSTORE DUP4 AND SWAP1 PUSH4 0x7A9E5E4B SWAP1 PUSH1 0x24 ADD PUSH0 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 PUSH0 DUP8 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x7B6 JUMPI PUSH0 PUSH0 REVERT JUMPDEST POP GAS CALL ISZERO DUP1 ISZERO PUSH2 0x7C8 JUMPI RETURNDATASIZE PUSH0 PUSH0 RETURNDATACOPY RETURNDATASIZE PUSH0 REVERT JUMPDEST POP POP POP POP POP POP JUMP JUMPDEST PUSH0 CALLER DUP2 DUP1 PUSH2 0x7E0 DUP4 DUP9 DUP9 DUP9 PUSH2 0x123C JUMP JUMPDEST SWAP2 POP SWAP2 POP DUP2 ISZERO DUP1 ISZERO PUSH2 0x7F6 JUMPI POP PUSH4 0xFFFFFFFF DUP2 AND ISZERO JUMPDEST ISZERO PUSH2 0x849 JUMPI DUP3 DUP8 PUSH2 0x807 DUP9 DUP9 PUSH2 0x128D JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH4 0x81C6F24B PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP4 DUP5 AND PUSH1 0x4 DUP3 ADD MSTORE SWAP3 SWAP1 SWAP2 AND PUSH1 0x24 DUP4 ADD MSTORE PUSH1 0x1 PUSH1 0x1 PUSH1 0xE0 SHL SUB NOT AND PUSH1 0x44 DUP3 ADD MSTORE PUSH1 0x64 ADD JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH0 PUSH2 0x856 DUP5 DUP10 DUP10 DUP10 PUSH2 0xBB8 JUMP JUMPDEST SWAP1 POP PUSH0 PUSH4 0xFFFFFFFF DUP4 AND ISZERO ISZERO DUP1 PUSH2 0x87C JUMPI POP PUSH2 0x871 DUP3 PUSH2 0x994 JUMP JUMPDEST PUSH6 0xFFFFFFFFFFFF AND ISZERO ISZERO JUMPDEST ISZERO PUSH2 0x88D JUMPI PUSH2 0x88A DUP3 PUSH2 0x12A4 JUMP JUMPDEST SWAP1 POP JUMPDEST PUSH1 0x3 SLOAD PUSH2 0x8A3 DUP11 PUSH2 0x89E DUP12 DUP12 PUSH2 0x128D JUMP JUMPDEST PUSH2 0x13A2 JUMP JUMPDEST PUSH1 0x3 DUP2 SWAP1 SSTORE POP PUSH2 0x8EA DUP11 DUP11 DUP11 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 PUSH0 SWAP3 ADD SWAP2 SWAP1 SWAP2 MSTORE POP CALLVALUE SWAP3 POP PUSH2 0x13C7 SWAP2 POP POP JUMP JUMPDEST POP PUSH1 0x3 SSTORE SWAP5 POP POP POP POP POP JUMPDEST SWAP4 SWAP3 POP POP POP JUMP JUMPDEST PUSH2 0x904 PUSH2 0x10B5 JUMP JUMPDEST PUSH2 0x918 DUP4 DUP4 PUSH2 0x912 DUP7 PUSH2 0x71E JUMP JUMPDEST DUP5 PUSH2 0x1493 JUMP JUMPDEST POP POP POP POP JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0x40 SHL SUB DUP3 AND PUSH0 SWAP1 DUP2 MSTORE PUSH1 0x1 PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x40 DUP1 DUP4 KECCAK256 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP6 AND DUP5 MSTORE SWAP1 SWAP2 MSTORE DUP2 KECCAK256 DUP1 SLOAD PUSH6 0xFFFFFFFFFFFF DUP2 AND SWAP3 SWAP2 DUP3 SWAP2 DUP3 SWAP2 SWAP1 PUSH2 0x974 SWAP1 PUSH1 0x1 PUSH1 0x30 SHL SWAP1 DIV PUSH1 0x1 PUSH1 0x1 PUSH1 0x70 SHL SUB AND PUSH2 0x16D9 JUMP JUMPDEST SWAP7 SWAP10 SWAP2 SWAP9 POP SWAP7 POP SWAP4 POP POP POP POP JUMP JUMPDEST PUSH2 0x98A PUSH2 0x10B5 JUMP JUMPDEST PUSH2 0x76A DUP3 DUP3 PUSH2 0x16FA JUMP JUMPDEST PUSH0 DUP2 DUP2 MSTORE PUSH1 0x2 PUSH1 0x20 MSTORE PUSH1 0x40 DUP2 KECCAK256 SLOAD PUSH6 0xFFFFFFFFFFFF AND PUSH2 0x9B3 DUP2 PUSH2 0x179D JUMP JUMPDEST PUSH2 0x9BD JUMPI DUP1 PUSH2 0x8F5 JUMP JUMPDEST PUSH0 SWAP4 SWAP3 POP POP POP JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 AND PUSH0 SWAP1 DUP2 MSTORE PUSH1 0x20 DUP2 SWAP1 MSTORE PUSH1 0x40 DUP2 KECCAK256 PUSH1 0x1 ADD SLOAD PUSH2 0x752 SWAP1 PUSH1 0x1 PUSH1 0x1 PUSH1 0x70 SHL SUB AND PUSH2 0x11AD JUMP JUMPDEST PUSH2 0x9FA PUSH2 0x10B5 JUMP JUMPDEST PUSH2 0x76A DUP3 DUP3 PUSH2 0x17CB JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP3 AND PUSH0 SWAP1 DUP2 MSTORE PUSH1 0x20 DUP2 DUP2 MSTORE PUSH1 0x40 DUP1 DUP4 KECCAK256 PUSH1 0x1 PUSH1 0x1 PUSH1 0xE0 SHL SUB NOT DUP6 AND DUP5 MSTORE SWAP1 SWAP2 MSTORE SWAP1 KECCAK256 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0x40 SHL SUB AND SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH2 0xA46 PUSH2 0x10B5 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0x40 SHL SUB DUP4 AND ISZERO DUP1 PUSH2 0xA64 JUMPI POP PUSH1 0x1 PUSH1 0x1 PUSH1 0x40 SHL SUB DUP4 DUP2 AND EQ JUMPDEST ISZERO PUSH2 0xA8D JUMPI PUSH1 0x40 MLOAD PUSH4 0x61C6A43 PUSH1 0xE2 SHL DUP2 MSTORE PUSH1 0x1 PUSH1 0x1 PUSH1 0x40 SHL SUB DUP5 AND PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x24 ADD PUSH2 0x840 JUMP JUMPDEST DUP3 PUSH1 0x1 PUSH1 0x1 PUSH1 0x40 SHL SUB AND PUSH32 0x1256F5B5ECB89CAEC12DB449738F2FBCD1BA5806CF38F35413F4E5C15BF6A450 DUP4 DUP4 PUSH1 0x40 MLOAD PUSH2 0xAC8 SWAP3 SWAP2 SWAP1 PUSH2 0x25CF JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 LOG2 POP POP POP JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH4 0x8FB36037 PUSH1 0xE0 SHL DUP1 DUP3 MSTORE SWAP2 MLOAD CALLER SWAP3 SWAP2 DUP4 SWAP2 PUSH4 0x8FB36037 SWAP2 PUSH1 0x4 DUP1 DUP3 ADD SWAP3 PUSH1 0x20 SWAP3 SWAP1 SWAP2 SWAP1 DUP3 SWAP1 SUB ADD DUP2 DUP7 GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0xB14 JUMPI RETURNDATASIZE PUSH0 PUSH0 RETURNDATACOPY RETURNDATASIZE PUSH0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP3 ADD DUP1 PUSH1 0x40 MSTORE POP DUP2 ADD SWAP1 PUSH2 0xB38 SWAP2 SWAP1 PUSH2 0x25EA JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xE0 SHL SUB NOT AND EQ PUSH2 0xB6B JUMPI PUSH1 0x40 MLOAD PUSH4 0x641FEE9 PUSH1 0xE3 SHL DUP2 MSTORE PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP3 AND PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x24 ADD PUSH2 0x840 JUMP JUMPDEST PUSH2 0x717 PUSH2 0xB7A DUP6 DUP4 DUP7 DUP7 PUSH2 0xBB8 JUMP JUMPDEST PUSH2 0x12A4 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH0 SWAP1 DUP2 MSTORE PUSH1 0x20 DUP2 SWAP1 MSTORE PUSH1 0x40 SWAP1 KECCAK256 PUSH1 0x1 ADD SLOAD PUSH1 0x1 PUSH1 0x70 SHL SWAP1 DIV PUSH1 0xFF AND SWAP1 JUMP JUMPDEST PUSH2 0xBAE PUSH2 0x10B5 JUMP JUMPDEST PUSH2 0x76A DUP3 DUP3 PUSH2 0x187C JUMP JUMPDEST PUSH0 DUP5 DUP5 DUP5 DUP5 PUSH1 0x40 MLOAD PUSH1 0x20 ADD PUSH2 0xBD0 SWAP5 SWAP4 SWAP3 SWAP2 SWAP1 PUSH2 0x2605 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH1 0x20 DUP2 DUP4 SUB SUB DUP2 MSTORE SWAP1 PUSH1 0x40 MSTORE DUP1 MLOAD SWAP1 PUSH1 0x20 ADD KECCAK256 SWAP1 POP SWAP5 SWAP4 POP POP POP POP JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH0 DUP2 MSTORE PUSH1 0x20 DUP2 ADD SWAP1 SWAP2 MSTORE PUSH1 0x60 SWAP1 DUP3 PUSH1 0x1 PUSH1 0x1 PUSH1 0x40 SHL SUB DUP2 GT ISZERO PUSH2 0xC19 JUMPI PUSH2 0xC19 PUSH2 0x2676 JUMP JUMPDEST PUSH1 0x40 MLOAD SWAP1 DUP1 DUP3 MSTORE DUP1 PUSH1 0x20 MUL PUSH1 0x20 ADD DUP3 ADD PUSH1 0x40 MSTORE DUP1 ISZERO PUSH2 0xC4C JUMPI DUP2 PUSH1 0x20 ADD JUMPDEST PUSH1 0x60 DUP2 MSTORE PUSH1 0x20 ADD SWAP1 PUSH1 0x1 SWAP1 SUB SWAP1 DUP2 PUSH2 0xC37 JUMPI SWAP1 POP JUMPDEST POP SWAP2 POP PUSH0 JUMPDEST DUP4 DUP2 LT ISZERO PUSH2 0xCCD JUMPI PUSH2 0xCA8 ADDRESS DUP7 DUP7 DUP5 DUP2 DUP2 LT PUSH2 0xC6F JUMPI PUSH2 0xC6F PUSH2 0x2578 JUMP JUMPDEST SWAP1 POP PUSH1 0x20 MUL DUP2 ADD SWAP1 PUSH2 0xC81 SWAP2 SWAP1 PUSH2 0x268A JUMP JUMPDEST DUP6 PUSH1 0x40 MLOAD PUSH1 0x20 ADD PUSH2 0xC94 SWAP4 SWAP3 SWAP2 SWAP1 PUSH2 0x26CC JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH1 0x20 DUP2 DUP4 SUB SUB DUP2 MSTORE SWAP1 PUSH1 0x40 MSTORE PUSH2 0x198B JUMP JUMPDEST DUP4 DUP3 DUP2 MLOAD DUP2 LT PUSH2 0xCBA JUMPI PUSH2 0xCBA PUSH2 0x2578 JUMP JUMPDEST PUSH1 0x20 SWAP1 DUP2 MUL SWAP2 SWAP1 SWAP2 ADD ADD MSTORE PUSH1 0x1 ADD PUSH2 0xC51 JUMP JUMPDEST POP POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH0 PUSH0 PUSH2 0xCE0 DUP5 PUSH2 0xB7F JUMP JUMPDEST ISZERO PUSH2 0xCEF JUMPI POP PUSH0 SWAP1 POP DUP1 PUSH2 0xD4E JUMP JUMPDEST ADDRESS PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP7 AND SUB PUSH2 0xD13 JUMPI PUSH2 0xD09 DUP5 DUP5 PUSH2 0x1A0D JUMP JUMPDEST PUSH0 SWAP2 POP SWAP2 POP PUSH2 0xD4E JUMP JUMPDEST PUSH0 PUSH2 0xD1E DUP6 DUP6 PUSH2 0xA04 JUMP JUMPDEST SWAP1 POP PUSH0 PUSH0 PUSH2 0xD2C DUP4 DUP10 PUSH2 0xD6D JUMP JUMPDEST SWAP2 POP SWAP2 POP DUP2 PUSH2 0xD3C JUMPI PUSH0 PUSH0 PUSH2 0xD46 JUMP JUMPDEST PUSH4 0xFFFFFFFF DUP2 AND ISZERO DUP2 JUMPDEST SWAP5 POP SWAP5 POP POP POP POP JUMPDEST SWAP4 POP SWAP4 SWAP2 POP POP JUMP JUMPDEST PUSH2 0xD5E PUSH2 0x10B5 JUMP JUMPDEST PUSH2 0xD68 DUP3 DUP3 PUSH2 0x1A23 JUMP JUMPDEST POP POP POP JUMP JUMPDEST PUSH0 DUP1 PUSH8 0xFFFFFFFFFFFFFFFE NOT PUSH1 0x1 PUSH1 0x1 PUSH1 0x40 SHL SUB DUP6 AND ADD PUSH2 0xD93 JUMPI POP PUSH1 0x1 SWAP1 POP PUSH0 PUSH2 0xDDF JUMP JUMPDEST PUSH0 PUSH0 PUSH2 0xD9F DUP7 DUP7 PUSH2 0x91E JUMP JUMPDEST POP POP SWAP2 POP SWAP2 POP DUP2 PUSH6 0xFFFFFFFFFFFF AND PUSH0 EQ ISZERO DUP1 ISZERO PUSH2 0xDD4 JUMPI POP PUSH2 0xDC0 PUSH2 0x1B0C JUMP JUMPDEST PUSH6 0xFFFFFFFFFFFF AND DUP3 PUSH6 0xFFFFFFFFFFFF AND GT ISZERO JUMPDEST SWAP4 POP SWAP2 POP PUSH2 0xDDF SWAP1 POP JUMP JUMPDEST SWAP3 POP SWAP3 SWAP1 POP JUMP JUMPDEST PUSH2 0xDEE PUSH2 0x10B5 JUMP JUMPDEST PUSH2 0x76A DUP3 DUP3 PUSH2 0x1B1B JUMP JUMPDEST PUSH0 CALLER DUP2 PUSH2 0xE05 DUP6 DUP6 PUSH2 0x128D JUMP JUMPDEST SWAP1 POP PUSH0 PUSH2 0xE14 DUP9 DUP9 DUP9 DUP9 PUSH2 0xBB8 JUMP JUMPDEST PUSH0 DUP2 DUP2 MSTORE PUSH1 0x2 PUSH1 0x20 MSTORE PUSH1 0x40 DUP2 KECCAK256 SLOAD SWAP2 SWAP3 POP PUSH6 0xFFFFFFFFFFFF SWAP1 SWAP2 AND SWAP1 SUB PUSH2 0xE51 JUMPI PUSH1 0x40 MLOAD PUSH4 0x60A299B PUSH1 0xE4 SHL DUP2 MSTORE PUSH1 0x4 DUP2 ADD DUP3 SWAP1 MSTORE PUSH1 0x24 ADD PUSH2 0x840 JUMP JUMPDEST DUP3 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP9 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND EQ PUSH2 0xEEA JUMPI PUSH0 PUSH2 0xE75 PUSH0 DUP6 PUSH2 0xD6D JUMP JUMPDEST POP SWAP1 POP PUSH0 PUSH2 0xE8F PUSH2 0xE89 PUSH2 0x21A DUP12 DUP8 PUSH2 0xA04 JUMP JUMPDEST DUP7 PUSH2 0xD6D JUMP JUMPDEST POP SWAP1 POP DUP2 ISZERO DUP1 ISZERO PUSH2 0xE9E JUMPI POP DUP1 ISZERO JUMPDEST ISZERO PUSH2 0xEE7 JUMPI PUSH1 0x40 MLOAD PUSH4 0xFF89D47 PUSH1 0xE2 SHL DUP2 MSTORE PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP1 DUP8 AND PUSH1 0x4 DUP4 ADD MSTORE DUP1 DUP13 AND PUSH1 0x24 DUP4 ADD MSTORE DUP11 AND PUSH1 0x44 DUP3 ADD MSTORE PUSH1 0x1 PUSH1 0x1 PUSH1 0xE0 SHL SUB NOT DUP6 AND PUSH1 0x64 DUP3 ADD MSTORE PUSH1 0x84 ADD PUSH2 0x840 JUMP JUMPDEST POP POP JUMPDEST PUSH0 DUP2 DUP2 MSTORE PUSH1 0x2 PUSH1 0x20 MSTORE PUSH1 0x40 DUP1 DUP3 KECCAK256 DUP1 SLOAD PUSH6 0xFFFFFFFFFFFF NOT AND SWAP1 DUP2 SWAP1 SSTORE SWAP1 MLOAD PUSH1 0x1 PUSH1 0x30 SHL SWAP1 SWAP2 DIV PUSH4 0xFFFFFFFF AND SWAP2 DUP3 SWAP2 DUP5 SWAP2 PUSH32 0xBD9AC67A6E2F6463B80927326310338BCBB4BDB7936CE1365EA3E01067E7B9F7 SWAP2 LOG3 SWAP9 SWAP8 POP POP POP POP POP POP POP POP JUMP JUMPDEST PUSH0 DUP1 CALLER DUP2 PUSH2 0xF5B DUP3 DUP10 DUP10 DUP10 PUSH2 0x123C JUMP JUMPDEST SWAP2 POP POP PUSH0 DUP2 PUSH4 0xFFFFFFFF AND PUSH2 0xF6E PUSH2 0x1B0C JUMP JUMPDEST PUSH2 0xF78 SWAP2 SWAP1 PUSH2 0x26EF JUMP JUMPDEST SWAP1 POP PUSH4 0xFFFFFFFF DUP3 AND ISZERO DUP1 PUSH2 0xFAE JUMPI POP PUSH0 DUP7 PUSH6 0xFFFFFFFFFFFF AND GT DUP1 ISZERO PUSH2 0xFAE JUMPI POP DUP1 PUSH6 0xFFFFFFFFFFFF AND DUP7 PUSH6 0xFFFFFFFFFFFF AND LT JUMPDEST ISZERO PUSH2 0xFBF JUMPI DUP3 DUP10 PUSH2 0x807 DUP11 DUP11 PUSH2 0x128D JUMP JUMPDEST PUSH2 0xFD9 DUP7 PUSH6 0xFFFFFFFFFFFF AND DUP3 PUSH6 0xFFFFFFFFFFFF AND PUSH2 0x1BD6 JUMP JUMPDEST SWAP6 POP PUSH2 0xFE7 DUP4 DUP11 DUP11 DUP11 PUSH2 0xBB8 JUMP JUMPDEST SWAP5 POP PUSH2 0xFF2 DUP6 PUSH2 0x1BE5 JUMP JUMPDEST PUSH0 DUP6 DUP2 MSTORE PUSH1 0x2 PUSH1 0x20 MSTORE PUSH1 0x40 SWAP1 DUP2 SWAP1 KECCAK256 DUP1 SLOAD PUSH6 0xFFFFFFFFFFFF DUP10 AND PUSH10 0xFFFFFFFFFFFFFFFFFFFF NOT DUP3 AND OR PUSH1 0x1 PUSH1 0x30 SHL SWAP2 DUP3 SWAP1 DIV PUSH4 0xFFFFFFFF SWAP1 DUP2 AND PUSH1 0x1 ADD SWAP1 DUP2 AND SWAP3 DUP4 MUL SWAP2 SWAP1 SWAP2 OR SWAP1 SWAP3 SSTORE SWAP2 MLOAD SWAP1 SWAP6 POP DUP7 SWAP1 PUSH32 0x82A2DA5DEE54EA8021C6545B4444620291E07EE83BE6DD57EDB175062715F3B4 SWAP1 PUSH2 0x1078 SWAP1 DUP11 SWAP1 DUP9 SWAP1 DUP16 SWAP1 DUP16 SWAP1 DUP16 SWAP1 PUSH2 0x270D JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 LOG3 POP POP POP SWAP5 POP SWAP5 SWAP3 POP POP POP JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 AND CALLER EQ PUSH2 0xD5E JUMPI PUSH1 0x40 MLOAD PUSH4 0x5F159E63 PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST CALLER PUSH0 DUP1 PUSH2 0x10C3 DUP4 DUP3 CALLDATASIZE PUSH2 0x1C31 JUMP JUMPDEST SWAP2 POP SWAP2 POP DUP2 PUSH2 0xD68 JUMPI DUP1 PUSH4 0xFFFFFFFF AND PUSH0 SUB PUSH2 0x111D JUMPI PUSH0 PUSH2 0x10E4 DUP2 CALLDATASIZE PUSH2 0x1CF4 JUMP JUMPDEST POP PUSH1 0x40 MLOAD PUSH4 0xF07E038F PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP8 AND PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x1 PUSH1 0x1 PUSH1 0x40 SHL SUB DUP3 AND PUSH1 0x24 DUP3 ADD MSTORE SWAP1 SWAP3 POP PUSH1 0x44 ADD SWAP1 POP PUSH2 0x840 JUMP JUMPDEST PUSH2 0x918 PUSH2 0xB7A DUP5 ADDRESS PUSH0 CALLDATASIZE PUSH2 0xBB8 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP4 AND PUSH0 DUP2 DUP2 MSTORE PUSH1 0x20 DUP2 DUP2 MSTORE PUSH1 0x40 DUP1 DUP4 KECCAK256 PUSH1 0x1 PUSH1 0x1 PUSH1 0xE0 SHL SUB NOT DUP8 AND DUP1 DUP6 MSTORE SWAP1 DUP4 MSTORE SWAP3 DUP2 SWAP1 KECCAK256 DUP1 SLOAD PUSH8 0xFFFFFFFFFFFFFFFF NOT AND PUSH1 0x1 PUSH1 0x1 PUSH1 0x40 SHL SUB DUP8 AND SWAP1 DUP2 OR SWAP1 SWAP2 SSTORE SWAP1 MLOAD SWAP3 DUP4 MSTORE SWAP3 SWAP2 PUSH32 0x9EA6790C7DADFD01C9F8B9762B3682607AF2C7E79E05A9F9FDF5580DDE949151 SWAP2 ADD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 LOG3 POP POP POP JUMP JUMPDEST PUSH0 PUSH0 PUSH2 0x11C1 DUP4 PUSH1 0x1 PUSH1 0x1 PUSH1 0x70 SHL SUB AND PUSH2 0x16D9 JUMP JUMPDEST POP SWAP1 SWAP5 SWAP4 POP POP POP POP JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP3 AND PUSH0 DUP2 DUP2 MSTORE PUSH1 0x20 DUP2 SWAP1 MSTORE PUSH1 0x40 SWAP1 DUP2 SWAP1 KECCAK256 PUSH1 0x1 ADD DUP1 SLOAD DUP5 ISZERO ISZERO PUSH1 0x1 PUSH1 0x70 SHL MUL PUSH1 0xFF PUSH1 0x70 SHL NOT SWAP1 SWAP2 AND OR SWAP1 SSTORE MLOAD PUSH32 0x90D4E7BB7E5D933792B3562E1741306F8BE94837E1348DACEF9B6F1DF56EB138 SWAP1 PUSH2 0x1230 SWAP1 DUP5 ISZERO ISZERO DUP2 MSTORE PUSH1 0x20 ADD SWAP1 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 LOG2 POP POP JUMP JUMPDEST PUSH0 DUP1 ADDRESS PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP7 AND SUB PUSH2 0x1262 JUMPI PUSH2 0x1259 DUP7 DUP6 DUP6 PUSH2 0x1C31 JUMP JUMPDEST SWAP2 POP SWAP2 POP PUSH2 0x1284 JUMP JUMPDEST PUSH1 0x4 DUP4 LT PUSH2 0x127E JUMPI PUSH2 0x1279 DUP7 DUP7 PUSH2 0x5C2 DUP8 DUP8 PUSH2 0x128D JUMP JUMPDEST PUSH2 0x1259 JUMP JUMPDEST POP PUSH0 SWAP1 POP DUP1 JUMPDEST SWAP5 POP SWAP5 SWAP3 POP POP POP JUMP JUMPDEST PUSH0 PUSH2 0x129B PUSH1 0x4 DUP3 DUP5 DUP7 PUSH2 0x264F JUMP JUMPDEST PUSH2 0x8F5 SWAP2 PUSH2 0x2752 JUMP JUMPDEST PUSH0 DUP2 DUP2 MSTORE PUSH1 0x2 PUSH1 0x20 MSTORE PUSH1 0x40 DUP2 KECCAK256 SLOAD PUSH6 0xFFFFFFFFFFFF DUP2 AND SWAP1 PUSH1 0x1 PUSH1 0x30 SHL SWAP1 DIV PUSH4 0xFFFFFFFF AND DUP2 DUP4 SUB PUSH2 0x12EC JUMPI PUSH1 0x40 MLOAD PUSH4 0x60A299B PUSH1 0xE4 SHL DUP2 MSTORE PUSH1 0x4 DUP2 ADD DUP6 SWAP1 MSTORE PUSH1 0x24 ADD PUSH2 0x840 JUMP JUMPDEST PUSH2 0x12F4 PUSH2 0x1B0C JUMP JUMPDEST PUSH6 0xFFFFFFFFFFFF AND DUP3 PUSH6 0xFFFFFFFFFFFF AND GT ISZERO PUSH2 0x1327 JUMPI PUSH1 0x40 MLOAD PUSH4 0xC65B5BD PUSH1 0xE1 SHL DUP2 MSTORE PUSH1 0x4 DUP2 ADD DUP6 SWAP1 MSTORE PUSH1 0x24 ADD PUSH2 0x840 JUMP JUMPDEST PUSH2 0x1330 DUP3 PUSH2 0x179D JUMP JUMPDEST ISZERO PUSH2 0x1351 JUMPI PUSH1 0x40 MLOAD PUSH4 0x1E2975B9 PUSH1 0xE2 SHL DUP2 MSTORE PUSH1 0x4 DUP2 ADD DUP6 SWAP1 MSTORE PUSH1 0x24 ADD PUSH2 0x840 JUMP JUMPDEST PUSH0 DUP5 DUP2 MSTORE PUSH1 0x2 PUSH1 0x20 MSTORE PUSH1 0x40 DUP1 DUP3 KECCAK256 DUP1 SLOAD PUSH6 0xFFFFFFFFFFFF NOT AND SWAP1 SSTORE MLOAD PUSH4 0xFFFFFFFF DUP4 AND SWAP2 DUP7 SWAP2 PUSH32 0x76A2A46953689D4861A5D3F6ED883AD7E6AF674A21F8E162707159FC9DDE614D SWAP2 SWAP1 LOG3 SWAP4 SWAP3 POP POP POP JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP3 AND PUSH0 SWAP1 DUP2 MSTORE PUSH1 0x1 PUSH1 0x1 PUSH1 0xE0 SHL SUB NOT DUP3 AND PUSH1 0x20 MSTORE PUSH1 0x40 DUP2 KECCAK256 PUSH2 0x8F5 JUMP JUMPDEST PUSH1 0x60 DUP2 SELFBALANCE LT ISZERO PUSH2 0x13F3 JUMPI PUSH1 0x40 MLOAD PUSH4 0xCF479181 PUSH1 0xE0 SHL DUP2 MSTORE SELFBALANCE PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x24 DUP2 ADD DUP4 SWAP1 MSTORE PUSH1 0x44 ADD PUSH2 0x840 JUMP JUMPDEST PUSH0 PUSH2 0x13FF DUP6 DUP5 DUP7 PUSH2 0x1EDA JUMP JUMPDEST SWAP1 POP DUP1 DUP1 ISZERO PUSH2 0x1420 JUMPI POP PUSH0 RETURNDATASIZE GT DUP1 PUSH2 0x1420 JUMPI POP PUSH0 DUP6 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND EXTCODESIZE GT JUMPDEST ISZERO PUSH2 0x1435 JUMPI PUSH2 0x142D PUSH2 0x1EEF JUMP JUMPDEST SWAP2 POP POP PUSH2 0x8F5 JUMP JUMPDEST DUP1 ISZERO PUSH2 0x145F JUMPI PUSH1 0x40 MLOAD PUSH4 0x9996B315 PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP7 AND PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x24 ADD PUSH2 0x840 JUMP JUMPDEST RETURNDATASIZE ISZERO PUSH2 0x1472 JUMPI PUSH2 0x146D PUSH2 0x1F08 JUMP JUMPDEST PUSH2 0x148B JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH4 0xD6BDA275 PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST POP SWAP4 SWAP3 POP POP POP JUMP JUMPDEST PUSH0 PUSH8 0xFFFFFFFFFFFFFFFE NOT PUSH1 0x1 PUSH1 0x1 PUSH1 0x40 SHL SUB DUP7 AND ADD PUSH2 0x14D1 JUMPI PUSH1 0x40 MLOAD PUSH4 0x61C6A43 PUSH1 0xE2 SHL DUP2 MSTORE PUSH1 0x1 PUSH1 0x1 PUSH1 0x40 SHL SUB DUP7 AND PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x24 ADD PUSH2 0x840 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0x40 SHL SUB DUP6 AND PUSH0 SWAP1 DUP2 MSTORE PUSH1 0x1 PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x40 DUP1 DUP4 KECCAK256 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP9 AND DUP5 MSTORE SWAP1 SWAP2 MSTORE DUP2 KECCAK256 SLOAD PUSH6 0xFFFFFFFFFFFF AND ISZERO SWAP1 DUP2 ISZERO PUSH2 0x15C1 JUMPI DUP5 PUSH4 0xFFFFFFFF AND PUSH2 0x151C PUSH2 0x1B0C JUMP JUMPDEST PUSH2 0x1526 SWAP2 SWAP1 PUSH2 0x26EF JUMP JUMPDEST SWAP1 POP PUSH1 0x40 MLOAD DUP1 PUSH1 0x40 ADD PUSH1 0x40 MSTORE DUP1 DUP3 PUSH6 0xFFFFFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD PUSH2 0x1554 DUP7 PUSH4 0xFFFFFFFF AND PUSH4 0xFFFFFFFF AND SWAP1 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0x70 SHL SUB SWAP1 DUP2 AND SWAP1 SWAP2 MSTORE PUSH1 0x1 PUSH1 0x1 PUSH1 0x40 SHL SUB DUP10 AND PUSH0 SWAP1 DUP2 MSTORE PUSH1 0x1 PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x40 DUP1 DUP4 KECCAK256 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP13 AND DUP5 MSTORE DUP3 MSTORE SWAP1 SWAP2 KECCAK256 DUP4 MLOAD DUP2 SLOAD SWAP5 SWAP1 SWAP3 ADD MLOAD SWAP1 SWAP3 AND PUSH1 0x1 PUSH1 0x30 SHL MUL PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB NOT SWAP1 SWAP4 AND PUSH6 0xFFFFFFFFFFFF SWAP1 SWAP2 AND OR SWAP2 SWAP1 SWAP2 OR SWAP1 SSTORE PUSH2 0x166B JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0x40 SHL SUB DUP8 AND PUSH0 SWAP1 DUP2 MSTORE PUSH1 0x1 PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x40 DUP1 DUP4 KECCAK256 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP11 AND DUP5 MSTORE SWAP1 SWAP2 MSTORE DUP2 KECCAK256 SLOAD PUSH2 0x160A SWAP2 PUSH1 0x1 PUSH1 0x30 SHL SWAP1 SWAP2 DIV PUSH1 0x1 PUSH1 0x1 PUSH1 0x70 SHL SUB AND SWAP1 DUP7 SWAP1 PUSH2 0x1F13 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0x40 SHL SUB DUP10 AND PUSH0 SWAP1 DUP2 MSTORE PUSH1 0x1 PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x40 DUP1 DUP4 KECCAK256 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP13 AND DUP5 MSTORE SWAP1 SWAP2 MSTORE SWAP1 KECCAK256 DUP1 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0x70 SHL SUB SWAP1 SWAP4 AND PUSH1 0x1 PUSH1 0x30 SHL MUL PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFF000000000000 NOT SWAP1 SWAP4 AND SWAP3 SWAP1 SWAP3 OR SWAP1 SWAP2 SSTORE SWAP1 POP JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH4 0xFFFFFFFF DUP7 AND DUP2 MSTORE PUSH6 0xFFFFFFFFFFFF DUP4 AND PUSH1 0x20 DUP3 ADD MSTORE DUP4 ISZERO ISZERO DUP2 DUP4 ADD MSTORE SWAP1 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP9 AND SWAP2 PUSH1 0x1 PUSH1 0x1 PUSH1 0x40 SHL SUB DUP11 AND SWAP2 PUSH32 0xF98448B987F1428E0E230E1F3C6E2CE15B5693EAF31827FBD0B1EC4B424AE7CF SWAP2 DUP2 SWAP1 SUB PUSH1 0x60 ADD SWAP1 LOG3 POP SWAP6 SWAP5 POP POP POP POP POP JUMP JUMPDEST PUSH0 PUSH0 PUSH0 PUSH2 0x16ED DUP5 PUSH2 0x16E8 PUSH2 0x1B0C JUMP JUMPDEST PUSH2 0x1FB9 JUMP JUMPDEST SWAP3 POP SWAP3 POP SWAP3 POP SWAP2 SWAP4 SWAP1 SWAP3 POP JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0x40 SHL SUB DUP3 AND ISZERO DUP1 PUSH2 0x1718 JUMPI POP PUSH1 0x1 PUSH1 0x1 PUSH1 0x40 SHL SUB DUP3 DUP2 AND EQ JUMPDEST ISZERO PUSH2 0x1741 JUMPI PUSH1 0x40 MLOAD PUSH4 0x61C6A43 PUSH1 0xE2 SHL DUP2 MSTORE PUSH1 0x1 PUSH1 0x1 PUSH1 0x40 SHL SUB DUP4 AND PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x24 ADD PUSH2 0x840 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0x40 SHL SUB DUP3 DUP2 AND PUSH0 DUP2 DUP2 MSTORE PUSH1 0x1 PUSH1 0x20 DUP2 SWAP1 MSTORE PUSH1 0x40 DUP1 DUP4 KECCAK256 SWAP1 SWAP2 ADD DUP1 SLOAD PUSH8 0xFFFFFFFFFFFFFFFF NOT AND SWAP5 DUP7 AND SWAP5 DUP6 OR SWAP1 SSTORE MLOAD PUSH32 0x1FD6DD7631312DFAC2205B52913F99DE03B4D7E381D5D27D3DBFE0713E6E6340 SWAP2 SWAP1 LOG3 POP POP JUMP JUMPDEST PUSH0 PUSH2 0x17A6 PUSH2 0x1B0C JUMP JUMPDEST PUSH6 0xFFFFFFFFFFFF AND PUSH2 0x17BB PUSH3 0x93A80 DUP5 PUSH2 0x26EF JUMP JUMPDEST PUSH6 0xFFFFFFFFFFFF AND GT ISZERO SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0x40 SHL SUB DUP3 AND ISZERO DUP1 PUSH2 0x17E9 JUMPI POP PUSH1 0x1 PUSH1 0x1 PUSH1 0x40 SHL SUB DUP3 DUP2 AND EQ JUMPDEST ISZERO PUSH2 0x1812 JUMPI PUSH1 0x40 MLOAD PUSH4 0x61C6A43 PUSH1 0xE2 SHL DUP2 MSTORE PUSH1 0x1 PUSH1 0x1 PUSH1 0x40 SHL SUB DUP4 AND PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x24 ADD PUSH2 0x840 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0x40 SHL SUB DUP3 DUP2 AND PUSH0 DUP2 DUP2 MSTORE PUSH1 0x1 PUSH1 0x20 DUP2 SWAP1 MSTORE PUSH1 0x40 DUP1 DUP4 KECCAK256 SWAP1 SWAP2 ADD DUP1 SLOAD PUSH16 0xFFFFFFFFFFFFFFFF0000000000000000 NOT AND PUSH1 0x1 PUSH1 0x40 SHL SWAP6 DUP8 AND SWAP6 DUP7 MUL OR SWAP1 SSTORE MLOAD PUSH32 0x7A8059630B897B5DE4C08ADE69F8B90C3EAD1F8596D62D10B6C4D14A0AFB4AE2 SWAP2 SWAP1 LOG3 POP POP JUMP JUMPDEST PUSH8 0xFFFFFFFFFFFFFFFE NOT PUSH1 0x1 PUSH1 0x1 PUSH1 0x40 SHL SUB DUP4 AND ADD PUSH2 0x18B9 JUMPI PUSH1 0x40 MLOAD PUSH4 0x61C6A43 PUSH1 0xE2 SHL DUP2 MSTORE PUSH1 0x1 PUSH1 0x1 PUSH1 0x40 SHL SUB DUP4 AND PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x24 ADD PUSH2 0x840 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0x40 SHL SUB DUP3 AND PUSH0 SWAP1 DUP2 MSTORE PUSH1 0x1 PUSH1 0x20 DUP2 SWAP1 MSTORE PUSH1 0x40 DUP3 KECCAK256 ADD SLOAD PUSH2 0x18F2 SWAP1 PUSH1 0x1 PUSH1 0x80 SHL SWAP1 DIV PUSH1 0x1 PUSH1 0x1 PUSH1 0x70 SHL SUB AND DUP4 PUSH3 0x69780 PUSH2 0x1F13 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0x40 SHL SUB DUP6 AND PUSH0 DUP2 DUP2 MSTORE PUSH1 0x1 PUSH1 0x20 DUP2 SWAP1 MSTORE PUSH1 0x40 SWAP2 DUP3 SWAP1 KECCAK256 ADD DUP1 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0x70 SHL SUB SWAP1 SWAP6 AND PUSH1 0x1 PUSH1 0x80 SHL MUL PUSH14 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFF PUSH1 0x80 SHL NOT SWAP1 SWAP6 AND SWAP5 SWAP1 SWAP5 OR SWAP1 SWAP4 SSTORE SWAP2 MLOAD SWAP1 SWAP3 POP PUSH32 0xFEB69018EE8B8FD50EA86348F1267D07673379F72CFFDECCEC63853EE8CE8B48 SWAP1 PUSH2 0xAC8 SWAP1 DUP6 SWAP1 DUP6 SWAP1 PUSH4 0xFFFFFFFF SWAP3 SWAP1 SWAP3 AND DUP3 MSTORE PUSH6 0xFFFFFFFFFFFF AND PUSH1 0x20 DUP3 ADD MSTORE PUSH1 0x40 ADD SWAP1 JUMP JUMPDEST PUSH1 0x60 PUSH0 PUSH2 0x1998 DUP5 DUP5 PUSH2 0x2005 JUMP JUMPDEST SWAP1 POP DUP1 DUP1 ISZERO PUSH2 0x19B9 JUMPI POP PUSH0 RETURNDATASIZE GT DUP1 PUSH2 0x19B9 JUMPI POP PUSH0 DUP5 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND EXTCODESIZE GT JUMPDEST ISZERO PUSH2 0x19CE JUMPI PUSH2 0x19C6 PUSH2 0x1EEF JUMP JUMPDEST SWAP2 POP POP PUSH2 0x752 JUMP JUMPDEST DUP1 ISZERO PUSH2 0x19F8 JUMPI PUSH1 0x40 MLOAD PUSH4 0x9996B315 PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP6 AND PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x24 ADD PUSH2 0x840 JUMP JUMPDEST RETURNDATASIZE ISZERO PUSH2 0x1472 JUMPI PUSH2 0x1A06 PUSH2 0x1F08 JUMP JUMPDEST POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH0 PUSH2 0x1A18 DUP4 DUP4 PUSH2 0x13A2 JUMP JUMPDEST PUSH1 0x3 SLOAD EQ SWAP4 SWAP3 POP POP POP JUMP JUMPDEST PUSH0 PUSH8 0xFFFFFFFFFFFFFFFE NOT PUSH1 0x1 PUSH1 0x1 PUSH1 0x40 SHL SUB DUP5 AND ADD PUSH2 0x1A61 JUMPI PUSH1 0x40 MLOAD PUSH4 0x61C6A43 PUSH1 0xE2 SHL DUP2 MSTORE PUSH1 0x1 PUSH1 0x1 PUSH1 0x40 SHL SUB DUP5 AND PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x24 ADD PUSH2 0x840 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0x40 SHL SUB DUP4 AND PUSH0 SWAP1 DUP2 MSTORE PUSH1 0x1 PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x40 DUP1 DUP4 KECCAK256 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP7 AND DUP5 MSTORE SWAP1 SWAP2 MSTORE DUP2 KECCAK256 SLOAD PUSH6 0xFFFFFFFFFFFF AND SWAP1 SUB PUSH2 0x1AA2 JUMPI POP PUSH0 PUSH2 0x752 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0x40 SHL SUB DUP4 AND PUSH0 DUP2 DUP2 MSTORE PUSH1 0x1 PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x40 DUP1 DUP4 KECCAK256 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP8 AND DUP1 DUP6 MSTORE SWAP3 MSTORE DUP1 DUP4 KECCAK256 DUP1 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB NOT AND SWAP1 SSTORE MLOAD SWAP1 SWAP3 SWAP2 PUSH32 0xF229BAA593AF28C41B1D16B748CD7688F0C83AAF92D4BE41C44005DEFE84C166 SWAP2 LOG3 POP PUSH1 0x1 SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH0 PUSH2 0x1B16 TIMESTAMP PUSH2 0x2018 JUMP JUMPDEST SWAP1 POP SWAP1 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP3 AND PUSH0 SWAP1 DUP2 MSTORE PUSH1 0x20 DUP2 SWAP1 MSTORE PUSH1 0x40 DUP2 KECCAK256 PUSH1 0x1 ADD SLOAD PUSH2 0x1B4D SWAP1 PUSH1 0x1 PUSH1 0x1 PUSH1 0x70 SHL SUB AND DUP4 PUSH3 0x69780 PUSH2 0x1F13 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP6 AND PUSH0 DUP2 DUP2 MSTORE PUSH1 0x20 DUP2 DUP2 MSTORE PUSH1 0x40 SWAP2 DUP3 SWAP1 KECCAK256 PUSH1 0x1 ADD DUP1 SLOAD PUSH14 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFF NOT AND PUSH1 0x1 PUSH1 0x1 PUSH1 0x70 SHL SUB SWAP7 SWAP1 SWAP7 AND SWAP6 SWAP1 SWAP6 OR SWAP1 SWAP5 SSTORE DUP1 MLOAD PUSH4 0xFFFFFFFF DUP8 AND DUP2 MSTORE PUSH6 0xFFFFFFFFFFFF DUP5 AND SWAP5 DUP2 ADD SWAP5 SWAP1 SWAP5 MSTORE SWAP2 SWAP4 POP SWAP2 PUSH32 0xA56B76017453F399EC2327BA00375DBFB1FD070FF854341AD6191E6A2E2DE19C SWAP2 ADD PUSH2 0xAC8 JUMP JUMPDEST PUSH0 DUP3 DUP3 XOR DUP3 DUP5 GT MUL DUP3 XOR PUSH2 0x8F5 JUMP JUMPDEST PUSH0 DUP2 DUP2 MSTORE PUSH1 0x2 PUSH1 0x20 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD PUSH6 0xFFFFFFFFFFFF AND DUP1 ISZERO DUP1 ISZERO SWAP1 PUSH2 0x1C10 JUMPI POP PUSH2 0x1C0E DUP2 PUSH2 0x179D JUMP JUMPDEST ISZERO JUMPDEST ISZERO PUSH2 0x76A JUMPI PUSH1 0x40 MLOAD PUSH4 0x813E9459 PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 DUP2 ADD DUP4 SWAP1 MSTORE PUSH1 0x24 ADD PUSH2 0x840 JUMP JUMPDEST PUSH0 DUP1 PUSH1 0x4 DUP4 LT ISZERO PUSH2 0x1C46 JUMPI POP PUSH0 SWAP1 POP DUP1 PUSH2 0xD4E JUMP JUMPDEST ADDRESS PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP7 AND SUB PUSH2 0x1C69 JUMPI PUSH2 0xD09 ADDRESS PUSH2 0x1C64 DUP7 DUP7 PUSH2 0x128D JUMP JUMPDEST PUSH2 0x1A0D JUMP JUMPDEST PUSH0 PUSH0 PUSH0 PUSH2 0x1C76 DUP8 DUP8 PUSH2 0x1CF4 JUMP JUMPDEST SWAP3 POP SWAP3 POP SWAP3 POP DUP3 ISZERO DUP1 ISZERO PUSH2 0x1C8E JUMPI POP PUSH2 0x1C8E ADDRESS PUSH2 0xB7F JUMP JUMPDEST ISZERO PUSH2 0x1CA1 JUMPI PUSH0 PUSH0 SWAP5 POP SWAP5 POP POP POP POP PUSH2 0xD4E JUMP JUMPDEST PUSH0 PUSH0 PUSH2 0x1CAD DUP5 DUP12 PUSH2 0xD6D JUMP JUMPDEST SWAP2 POP SWAP2 POP DUP2 PUSH2 0x1CC6 JUMPI PUSH0 PUSH0 SWAP7 POP SWAP7 POP POP POP POP POP POP PUSH2 0xD4E JUMP JUMPDEST PUSH2 0x1CDC DUP4 PUSH4 0xFFFFFFFF AND DUP3 PUSH4 0xFFFFFFFF AND PUSH2 0x1BD6 JUMP JUMPDEST PUSH4 0xFFFFFFFF DUP2 AND ISZERO SWAP12 SWAP1 SWAP11 POP SWAP9 POP POP POP POP POP POP POP POP POP JUMP JUMPDEST PUSH0 DUP1 DUP1 PUSH1 0x4 DUP5 LT ISZERO PUSH2 0x1D0D JUMPI POP PUSH0 SWAP2 POP DUP2 SWAP1 POP DUP1 PUSH2 0x1ED3 JUMP JUMPDEST PUSH0 PUSH2 0x1D18 DUP7 DUP7 PUSH2 0x128D JUMP JUMPDEST SWAP1 POP PUSH1 0x1 PUSH1 0x1 PUSH1 0xE0 SHL SUB NOT DUP2 AND PUSH4 0x10A6AA37 PUSH1 0xE3 SHL EQ DUP1 PUSH2 0x1D49 JUMPI POP PUSH1 0x1 PUSH1 0x1 PUSH1 0xE0 SHL SUB NOT DUP2 AND PUSH4 0x30CAE187 PUSH1 0xE0 SHL EQ JUMPDEST DUP1 PUSH2 0x1D64 JUMPI POP PUSH1 0x1 PUSH1 0x1 PUSH1 0xE0 SHL SUB NOT DUP2 AND PUSH4 0x294B14A9 PUSH1 0xE1 SHL EQ JUMPDEST DUP1 PUSH2 0x1D7F JUMPI POP PUSH1 0x1 PUSH1 0x1 PUSH1 0xE0 SHL SUB NOT DUP2 AND PUSH4 0x5326CAE7 PUSH1 0xE1 SHL EQ JUMPDEST DUP1 PUSH2 0x1D9A JUMPI POP PUSH1 0x1 PUSH1 0x1 PUSH1 0xE0 SHL SUB NOT DUP2 AND PUSH4 0xD22B5989 PUSH1 0xE0 SHL EQ JUMPDEST ISZERO PUSH2 0x1DAF JUMPI PUSH1 0x1 PUSH0 PUSH0 SWAP4 POP SWAP4 POP SWAP4 POP POP PUSH2 0x1ED3 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xE0 SHL SUB NOT DUP2 AND PUSH4 0x63FC60F PUSH1 0xE2 SHL EQ DUP1 PUSH2 0x1DDE JUMPI POP PUSH1 0x1 PUSH1 0x1 PUSH1 0xE0 SHL SUB NOT DUP2 AND PUSH4 0x167BD395 PUSH1 0xE0 SHL EQ JUMPDEST DUP1 PUSH2 0x1DF9 JUMPI POP PUSH1 0x1 PUSH1 0x1 PUSH1 0xE0 SHL SUB NOT DUP2 AND PUSH4 0x8D6122D PUSH1 0xE0 SHL EQ JUMPDEST ISZERO PUSH2 0x1E38 JUMPI PUSH0 PUSH2 0x1E0D PUSH1 0x24 PUSH1 0x4 DUP9 DUP11 PUSH2 0x264F JUMP JUMPDEST DUP2 ADD SWAP1 PUSH2 0x1E1A SWAP2 SWAP1 PUSH2 0x22E6 JUMP JUMPDEST SWAP1 POP PUSH0 PUSH2 0x1E26 DUP3 PUSH2 0x9C5 JUMP JUMPDEST PUSH1 0x1 SWAP7 POP PUSH0 SWAP6 POP SWAP4 POP PUSH2 0x1ED3 SWAP3 POP POP POP JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xE0 SHL SUB NOT DUP2 AND PUSH4 0x12E238D PUSH1 0xE5 SHL EQ DUP1 PUSH2 0x1E67 JUMPI POP PUSH1 0x1 PUSH1 0x1 PUSH1 0xE0 SHL SUB NOT DUP2 AND PUSH4 0x5BE958B1 PUSH1 0xE1 SHL EQ JUMPDEST ISZERO PUSH2 0x1EBF JUMPI PUSH0 PUSH2 0x1E7B PUSH1 0x24 PUSH1 0x4 DUP9 DUP11 PUSH2 0x264F JUMP JUMPDEST DUP2 ADD SWAP1 PUSH2 0x1E88 SWAP2 SWAP1 PUSH2 0x2122 JUMP JUMPDEST SWAP1 POP PUSH1 0x1 PUSH2 0x1EB1 DUP3 PUSH1 0x1 PUSH1 0x1 PUSH1 0x40 SHL SUB SWAP1 DUP2 AND PUSH0 SWAP1 DUP2 MSTORE PUSH1 0x1 PUSH1 0x20 DUP2 SWAP1 MSTORE PUSH1 0x40 SWAP1 SWAP2 KECCAK256 ADD SLOAD AND SWAP1 JUMP JUMPDEST PUSH0 SWAP5 POP SWAP5 POP SWAP5 POP POP POP PUSH2 0x1ED3 JUMP JUMPDEST PUSH0 PUSH2 0x1ECA ADDRESS DUP4 PUSH2 0xA04 JUMP JUMPDEST PUSH0 SWAP4 POP SWAP4 POP SWAP4 POP POP JUMPDEST SWAP3 POP SWAP3 POP SWAP3 JUMP JUMPDEST PUSH0 PUSH0 PUSH0 DUP4 MLOAD PUSH1 0x20 DUP6 ADD DUP7 DUP9 GAS CALL SWAP5 SWAP4 POP POP POP POP JUMP JUMPDEST PUSH1 0x40 MLOAD RETURNDATASIZE DUP2 MSTORE RETURNDATASIZE PUSH0 PUSH1 0x20 DUP4 ADD RETURNDATACOPY RETURNDATASIZE PUSH1 0x20 ADD DUP2 ADD PUSH1 0x40 MSTORE SWAP1 JUMP JUMPDEST PUSH1 0x40 MLOAD RETURNDATASIZE PUSH0 DUP3 RETURNDATACOPY RETURNDATASIZE DUP2 REVERT JUMPDEST PUSH0 PUSH0 PUSH0 PUSH2 0x1F28 DUP7 PUSH1 0x1 PUSH1 0x1 PUSH1 0x70 SHL SUB AND PUSH2 0x11AD JUMP JUMPDEST SWAP1 POP PUSH0 PUSH2 0x1F63 DUP6 PUSH4 0xFFFFFFFF AND DUP8 PUSH4 0xFFFFFFFF AND DUP5 PUSH4 0xFFFFFFFF AND GT PUSH2 0x1F4E JUMPI PUSH0 PUSH2 0x1F58 JUMP JUMPDEST PUSH2 0x1F58 DUP9 DUP6 PUSH2 0x2788 JUMP JUMPDEST PUSH4 0xFFFFFFFF AND PUSH2 0x1BD6 JUMP JUMPDEST SWAP1 POP DUP1 PUSH4 0xFFFFFFFF AND PUSH2 0x1F74 PUSH2 0x1B0C JUMP JUMPDEST PUSH2 0x1F7E SWAP2 SWAP1 PUSH2 0x26EF JUMP JUMPDEST SWAP3 POP PUSH4 0xFFFFFFFF DUP7 AND PUSH1 0x20 DUP4 SWAP1 SHL PUSH8 0xFFFFFFFF00000000 AND PUSH1 0x40 DUP6 SWAP1 SHL PUSH14 0xFFFFFFFFFFFF0000000000000000 AND OR OR SWAP4 POP POP POP SWAP4 POP SWAP4 SWAP2 POP POP JUMP JUMPDEST PUSH10 0xFFFFFFFFFFFFFFFFFFFF PUSH1 0x20 DUP4 SWAP1 SHR AND PUSH1 0x1 PUSH1 0x1 PUSH1 0x70 SHL SUB DUP4 AND PUSH6 0xFFFFFFFFFFFF PUSH1 0x40 DUP6 SWAP1 SHR DUP2 AND SWAP1 DUP5 AND DUP2 GT ISZERO PUSH2 0x1FF4 JUMPI DUP3 DUP3 DUP3 PUSH2 0x1FF8 JUMP JUMPDEST DUP2 PUSH0 PUSH0 JUMPDEST SWAP3 POP SWAP3 POP SWAP3 POP SWAP3 POP SWAP3 POP SWAP3 JUMP JUMPDEST PUSH0 PUSH0 PUSH0 DUP4 MLOAD PUSH1 0x20 DUP6 ADD DUP7 GAS DELEGATECALL SWAP4 SWAP3 POP POP POP JUMP JUMPDEST PUSH0 PUSH6 0xFFFFFFFFFFFF DUP3 GT ISZERO PUSH2 0x204A JUMPI PUSH1 0x40 MLOAD PUSH4 0x6DFCC65 PUSH1 0xE4 SHL DUP2 MSTORE PUSH1 0x30 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x24 DUP2 ADD DUP4 SWAP1 MSTORE PUSH1 0x44 ADD PUSH2 0x840 JUMP JUMPDEST POP SWAP1 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 AND DUP2 EQ PUSH2 0x2062 JUMPI PUSH0 PUSH0 REVERT JUMPDEST POP JUMP JUMPDEST PUSH0 PUSH0 DUP4 PUSH1 0x1F DUP5 ADD SLT PUSH2 0x2075 JUMPI PUSH0 PUSH0 REVERT JUMPDEST POP DUP2 CALLDATALOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0x40 SHL SUB DUP2 GT ISZERO PUSH2 0x208B JUMPI PUSH0 PUSH0 REVERT JUMPDEST PUSH1 0x20 DUP4 ADD SWAP2 POP DUP4 PUSH1 0x20 DUP3 PUSH1 0x5 SHL DUP6 ADD ADD GT ISZERO PUSH2 0xDDF JUMPI PUSH0 PUSH0 REVERT JUMPDEST DUP1 CALLDATALOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0x40 SHL SUB DUP2 AND DUP2 EQ PUSH2 0x20BB JUMPI PUSH0 PUSH0 REVERT JUMPDEST SWAP2 SWAP1 POP JUMP JUMPDEST PUSH0 PUSH0 PUSH0 PUSH0 PUSH1 0x60 DUP6 DUP8 SUB SLT ISZERO PUSH2 0x20D3 JUMPI PUSH0 PUSH0 REVERT JUMPDEST DUP5 CALLDATALOAD PUSH2 0x20DE DUP2 PUSH2 0x204E JUMP JUMPDEST SWAP4 POP PUSH1 0x20 DUP6 ADD CALLDATALOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0x40 SHL SUB DUP2 GT ISZERO PUSH2 0x20F8 JUMPI PUSH0 PUSH0 REVERT JUMPDEST PUSH2 0x2104 DUP8 DUP3 DUP9 ADD PUSH2 0x2065 JUMP JUMPDEST SWAP1 SWAP5 POP SWAP3 POP PUSH2 0x2117 SWAP1 POP PUSH1 0x40 DUP7 ADD PUSH2 0x20A5 JUMP JUMPDEST SWAP1 POP SWAP3 SWAP6 SWAP2 SWAP5 POP SWAP3 POP JUMP JUMPDEST PUSH0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x2132 JUMPI PUSH0 PUSH0 REVERT JUMPDEST PUSH2 0x8F5 DUP3 PUSH2 0x20A5 JUMP JUMPDEST PUSH0 PUSH0 PUSH1 0x40 DUP4 DUP6 SUB SLT ISZERO PUSH2 0x214C JUMPI PUSH0 PUSH0 REVERT JUMPDEST DUP3 CALLDATALOAD PUSH2 0x2157 DUP2 PUSH2 0x204E JUMP JUMPDEST SWAP2 POP PUSH1 0x20 DUP4 ADD CALLDATALOAD DUP1 ISZERO ISZERO DUP2 EQ PUSH2 0x216B JUMPI PUSH0 PUSH0 REVERT JUMPDEST DUP1 SWAP2 POP POP SWAP3 POP SWAP3 SWAP1 POP JUMP JUMPDEST PUSH0 PUSH0 PUSH1 0x40 DUP4 DUP6 SUB SLT ISZERO PUSH2 0x2187 JUMPI PUSH0 PUSH0 REVERT JUMPDEST DUP3 CALLDATALOAD PUSH2 0x2192 DUP2 PUSH2 0x204E JUMP JUMPDEST SWAP2 POP PUSH1 0x20 DUP4 ADD CALLDATALOAD PUSH2 0x216B DUP2 PUSH2 0x204E JUMP JUMPDEST PUSH0 PUSH0 DUP4 PUSH1 0x1F DUP5 ADD SLT PUSH2 0x21B2 JUMPI PUSH0 PUSH0 REVERT JUMPDEST POP DUP2 CALLDATALOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0x40 SHL SUB DUP2 GT ISZERO PUSH2 0x21C8 JUMPI PUSH0 PUSH0 REVERT JUMPDEST PUSH1 0x20 DUP4 ADD SWAP2 POP DUP4 PUSH1 0x20 DUP3 DUP6 ADD ADD GT ISZERO PUSH2 0xDDF JUMPI PUSH0 PUSH0 REVERT JUMPDEST PUSH0 PUSH0 PUSH0 PUSH1 0x40 DUP5 DUP7 SUB SLT ISZERO PUSH2 0x21F1 JUMPI PUSH0 PUSH0 REVERT JUMPDEST DUP4 CALLDATALOAD PUSH2 0x21FC DUP2 PUSH2 0x204E JUMP JUMPDEST SWAP3 POP PUSH1 0x20 DUP5 ADD CALLDATALOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0x40 SHL SUB DUP2 GT ISZERO PUSH2 0x2216 JUMPI PUSH0 PUSH0 REVERT JUMPDEST PUSH2 0x2222 DUP7 DUP3 DUP8 ADD PUSH2 0x21A2 JUMP JUMPDEST SWAP5 SWAP8 SWAP1 SWAP7 POP SWAP4 SWAP5 POP POP POP POP JUMP JUMPDEST DUP1 CALLDATALOAD PUSH4 0xFFFFFFFF DUP2 AND DUP2 EQ PUSH2 0x20BB JUMPI PUSH0 PUSH0 REVERT JUMPDEST PUSH0 PUSH0 PUSH0 PUSH1 0x60 DUP5 DUP7 SUB SLT ISZERO PUSH2 0x2254 JUMPI PUSH0 PUSH0 REVERT JUMPDEST PUSH2 0x225D DUP5 PUSH2 0x20A5 JUMP JUMPDEST SWAP3 POP PUSH1 0x20 DUP5 ADD CALLDATALOAD PUSH2 0x226D DUP2 PUSH2 0x204E JUMP JUMPDEST SWAP2 POP PUSH2 0x227B PUSH1 0x40 DUP6 ADD PUSH2 0x222F JUMP JUMPDEST SWAP1 POP SWAP3 POP SWAP3 POP SWAP3 JUMP JUMPDEST PUSH0 PUSH0 PUSH1 0x40 DUP4 DUP6 SUB SLT ISZERO PUSH2 0x2295 JUMPI PUSH0 PUSH0 REVERT JUMPDEST PUSH2 0x2192 DUP4 PUSH2 0x20A5 JUMP JUMPDEST PUSH0 PUSH0 PUSH1 0x40 DUP4 DUP6 SUB SLT ISZERO PUSH2 0x22AF JUMPI PUSH0 PUSH0 REVERT JUMPDEST PUSH2 0x22B8 DUP4 PUSH2 0x20A5 JUMP JUMPDEST SWAP2 POP PUSH2 0x22C6 PUSH1 0x20 DUP5 ADD PUSH2 0x20A5 JUMP JUMPDEST SWAP1 POP SWAP3 POP SWAP3 SWAP1 POP JUMP JUMPDEST PUSH0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x22DF JUMPI PUSH0 PUSH0 REVERT JUMPDEST POP CALLDATALOAD SWAP2 SWAP1 POP JUMP JUMPDEST PUSH0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x22F6 JUMPI PUSH0 PUSH0 REVERT JUMPDEST DUP2 CALLDATALOAD PUSH2 0x8F5 DUP2 PUSH2 0x204E JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xE0 SHL SUB NOT DUP2 AND DUP2 EQ PUSH2 0x2062 JUMPI PUSH0 PUSH0 REVERT JUMPDEST PUSH0 PUSH0 PUSH1 0x40 DUP4 DUP6 SUB SLT ISZERO PUSH2 0x2327 JUMPI PUSH0 PUSH0 REVERT JUMPDEST DUP3 CALLDATALOAD PUSH2 0x2332 DUP2 PUSH2 0x204E JUMP JUMPDEST SWAP2 POP PUSH1 0x20 DUP4 ADD CALLDATALOAD PUSH2 0x216B DUP2 PUSH2 0x2301 JUMP JUMPDEST PUSH0 PUSH0 PUSH0 PUSH1 0x40 DUP5 DUP7 SUB SLT ISZERO PUSH2 0x2354 JUMPI PUSH0 PUSH0 REVERT JUMPDEST PUSH2 0x21FC DUP5 PUSH2 0x20A5 JUMP JUMPDEST PUSH0 PUSH0 PUSH1 0x40 DUP4 DUP6 SUB SLT ISZERO PUSH2 0x236E JUMPI PUSH0 PUSH0 REVERT JUMPDEST PUSH2 0x2377 DUP4 PUSH2 0x20A5 JUMP JUMPDEST SWAP2 POP PUSH2 0x22C6 PUSH1 0x20 DUP5 ADD PUSH2 0x222F JUMP JUMPDEST PUSH0 PUSH0 PUSH0 PUSH0 PUSH1 0x60 DUP6 DUP8 SUB SLT ISZERO PUSH2 0x2398 JUMPI PUSH0 PUSH0 REVERT JUMPDEST DUP5 CALLDATALOAD PUSH2 0x23A3 DUP2 PUSH2 0x204E JUMP JUMPDEST SWAP4 POP PUSH1 0x20 DUP6 ADD CALLDATALOAD PUSH2 0x23B3 DUP2 PUSH2 0x204E JUMP JUMPDEST SWAP3 POP PUSH1 0x40 DUP6 ADD CALLDATALOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0x40 SHL SUB DUP2 GT ISZERO PUSH2 0x23CD JUMPI PUSH0 PUSH0 REVERT JUMPDEST PUSH2 0x23D9 DUP8 DUP3 DUP9 ADD PUSH2 0x21A2 JUMP JUMPDEST SWAP6 SWAP9 SWAP5 SWAP8 POP SWAP6 POP POP POP POP JUMP JUMPDEST PUSH0 PUSH0 PUSH1 0x20 DUP4 DUP6 SUB SLT ISZERO PUSH2 0x23F6 JUMPI PUSH0 PUSH0 REVERT JUMPDEST DUP3 CALLDATALOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0x40 SHL SUB DUP2 GT ISZERO PUSH2 0x240B JUMPI PUSH0 PUSH0 REVERT JUMPDEST PUSH2 0x2417 DUP6 DUP3 DUP7 ADD PUSH2 0x2065 JUMP JUMPDEST SWAP1 SWAP7 SWAP1 SWAP6 POP SWAP4 POP POP POP POP JUMP JUMPDEST PUSH0 PUSH1 0x20 DUP3 ADD PUSH1 0x20 DUP4 MSTORE DUP1 DUP5 MLOAD DUP1 DUP4 MSTORE PUSH1 0x40 DUP6 ADD SWAP2 POP PUSH1 0x40 DUP2 PUSH1 0x5 SHL DUP7 ADD ADD SWAP3 POP PUSH1 0x20 DUP7 ADD PUSH0 JUMPDEST DUP3 DUP2 LT ISZERO PUSH2 0x249B JUMPI PUSH1 0x3F NOT DUP8 DUP7 SUB ADD DUP5 MSTORE DUP2 MLOAD DUP1 MLOAD DUP1 DUP8 MSTORE DUP1 PUSH1 0x20 DUP4 ADD PUSH1 0x20 DUP10 ADD MCOPY PUSH0 PUSH1 0x20 DUP3 DUP10 ADD ADD MSTORE PUSH1 0x20 PUSH1 0x1F NOT PUSH1 0x1F DUP4 ADD AND DUP9 ADD ADD SWAP7 POP POP POP PUSH1 0x20 DUP3 ADD SWAP2 POP PUSH1 0x20 DUP5 ADD SWAP4 POP PUSH1 0x1 DUP2 ADD SWAP1 POP PUSH2 0x2449 JUMP JUMPDEST POP SWAP3 SWAP7 SWAP6 POP POP POP POP POP POP JUMP JUMPDEST PUSH0 PUSH0 PUSH0 PUSH1 0x60 DUP5 DUP7 SUB SLT ISZERO PUSH2 0x24B9 JUMPI PUSH0 PUSH0 REVERT JUMPDEST DUP4 CALLDATALOAD PUSH2 0x24C4 DUP2 PUSH2 0x204E JUMP JUMPDEST SWAP3 POP PUSH1 0x20 DUP5 ADD CALLDATALOAD PUSH2 0x24D4 DUP2 PUSH2 0x204E JUMP JUMPDEST SWAP2 POP PUSH1 0x40 DUP5 ADD CALLDATALOAD PUSH2 0x24E4 DUP2 PUSH2 0x2301 JUMP JUMPDEST DUP1 SWAP2 POP POP SWAP3 POP SWAP3 POP SWAP3 JUMP JUMPDEST PUSH0 PUSH0 PUSH1 0x40 DUP4 DUP6 SUB SLT ISZERO PUSH2 0x2500 JUMPI PUSH0 PUSH0 REVERT JUMPDEST DUP3 CALLDATALOAD PUSH2 0x2377 DUP2 PUSH2 0x204E JUMP JUMPDEST PUSH0 PUSH0 PUSH0 PUSH0 PUSH1 0x60 DUP6 DUP8 SUB SLT ISZERO PUSH2 0x251E JUMPI PUSH0 PUSH0 REVERT JUMPDEST DUP5 CALLDATALOAD PUSH2 0x2529 DUP2 PUSH2 0x204E JUMP JUMPDEST SWAP4 POP PUSH1 0x20 DUP6 ADD CALLDATALOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0x40 SHL SUB DUP2 GT ISZERO PUSH2 0x2543 JUMPI PUSH0 PUSH0 REVERT JUMPDEST PUSH2 0x254F DUP8 DUP3 DUP9 ADD PUSH2 0x21A2 JUMP JUMPDEST SWAP1 SWAP5 POP SWAP3 POP POP PUSH1 0x40 DUP6 ADD CALLDATALOAD PUSH6 0xFFFFFFFFFFFF DUP2 AND DUP2 EQ PUSH2 0x256D JUMPI PUSH0 PUSH0 REVERT JUMPDEST SWAP4 SWAP7 SWAP3 SWAP6 POP SWAP1 SWAP4 POP POP JUMP JUMPDEST PUSH4 0x4E487B71 PUSH1 0xE0 SHL PUSH0 MSTORE PUSH1 0x32 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH0 REVERT JUMPDEST PUSH0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x259C JUMPI PUSH0 PUSH0 REVERT JUMPDEST DUP2 CALLDATALOAD PUSH2 0x8F5 DUP2 PUSH2 0x2301 JUMP JUMPDEST DUP2 DUP4 MSTORE DUP2 DUP2 PUSH1 0x20 DUP6 ADD CALLDATACOPY POP PUSH0 DUP3 DUP3 ADD PUSH1 0x20 SWAP1 DUP2 ADD SWAP2 SWAP1 SWAP2 MSTORE PUSH1 0x1F SWAP1 SWAP2 ADD PUSH1 0x1F NOT AND SWAP1 SWAP2 ADD ADD SWAP1 JUMP JUMPDEST PUSH1 0x20 DUP2 MSTORE PUSH0 PUSH2 0x25E2 PUSH1 0x20 DUP4 ADD DUP5 DUP7 PUSH2 0x25A7 JUMP JUMPDEST SWAP5 SWAP4 POP POP POP POP JUMP JUMPDEST PUSH0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x25FA JUMPI PUSH0 PUSH0 REVERT JUMPDEST DUP2 MLOAD PUSH2 0x8F5 DUP2 PUSH2 0x2301 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP6 DUP2 AND DUP3 MSTORE DUP5 AND PUSH1 0x20 DUP3 ADD MSTORE PUSH1 0x60 PUSH1 0x40 DUP3 ADD DUP2 SWAP1 MSTORE PUSH0 SWAP1 PUSH2 0x2631 SWAP1 DUP4 ADD DUP5 DUP7 PUSH2 0x25A7 JUMP JUMPDEST SWAP7 SWAP6 POP POP POP POP POP POP JUMP JUMPDEST PUSH4 0x4E487B71 PUSH1 0xE0 SHL PUSH0 MSTORE PUSH1 0x11 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH0 REVERT JUMPDEST PUSH0 PUSH0 DUP6 DUP6 GT ISZERO PUSH2 0x265D JUMPI PUSH0 PUSH0 REVERT JUMPDEST DUP4 DUP7 GT ISZERO PUSH2 0x2669 JUMPI PUSH0 PUSH0 REVERT JUMPDEST POP POP DUP3 ADD SWAP4 SWAP2 SWAP1 SWAP3 SUB SWAP2 POP JUMP JUMPDEST PUSH4 0x4E487B71 PUSH1 0xE0 SHL PUSH0 MSTORE PUSH1 0x41 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH0 REVERT JUMPDEST PUSH0 PUSH0 DUP4 CALLDATALOAD PUSH1 0x1E NOT DUP5 CALLDATASIZE SUB ADD DUP2 SLT PUSH2 0x269F JUMPI PUSH0 PUSH0 REVERT JUMPDEST DUP4 ADD DUP1 CALLDATALOAD SWAP2 POP PUSH1 0x1 PUSH1 0x1 PUSH1 0x40 SHL SUB DUP3 GT ISZERO PUSH2 0x26B8 JUMPI PUSH0 PUSH0 REVERT JUMPDEST PUSH1 0x20 ADD SWAP2 POP CALLDATASIZE DUP2 SWAP1 SUB DUP3 SGT ISZERO PUSH2 0xDDF JUMPI PUSH0 PUSH0 REVERT JUMPDEST DUP3 DUP5 DUP3 CALLDATACOPY PUSH0 DUP4 DUP3 ADD PUSH0 DUP2 MSTORE DUP4 MLOAD DUP1 PUSH1 0x20 DUP7 ADD DUP4 MCOPY PUSH0 SWAP2 ADD SWAP1 DUP2 MSTORE SWAP6 SWAP5 POP POP POP POP POP JUMP JUMPDEST PUSH6 0xFFFFFFFFFFFF DUP2 DUP2 AND DUP4 DUP3 AND ADD SWAP1 DUP2 GT ISZERO PUSH2 0x752 JUMPI PUSH2 0x752 PUSH2 0x263B JUMP JUMPDEST PUSH6 0xFFFFFFFFFFFF DUP7 AND DUP2 MSTORE PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP6 DUP2 AND PUSH1 0x20 DUP4 ADD MSTORE DUP5 AND PUSH1 0x40 DUP3 ADD MSTORE PUSH1 0x80 PUSH1 0x60 DUP3 ADD DUP2 SWAP1 MSTORE PUSH0 SWAP1 PUSH2 0x2747 SWAP1 DUP4 ADD DUP5 DUP7 PUSH2 0x25A7 JUMP JUMPDEST SWAP8 SWAP7 POP POP POP POP POP POP POP JUMP JUMPDEST DUP1 CALLDATALOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xE0 SHL SUB NOT DUP2 AND SWAP1 PUSH1 0x4 DUP5 LT ISZERO PUSH2 0x1A06 JUMPI PUSH1 0x1 PUSH1 0x1 PUSH1 0xE0 SHL SUB NOT PUSH1 0x4 SWAP5 SWAP1 SWAP5 SUB PUSH1 0x3 SHL DUP5 SWAP1 SHL AND SWAP1 SWAP3 AND SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH4 0xFFFFFFFF DUP3 DUP2 AND DUP3 DUP3 AND SUB SWAP1 DUP2 GT ISZERO PUSH2 0x752 JUMPI PUSH2 0x752 PUSH2 0x263B JUMP INVALID LOG2 PUSH5 0x6970667358 0x22 SLT KECCAK256 SWAP12 BALANCE PUSH5 0xB8CDEAC6FA 0xAF DUP13 SUB 0xB8 LOG2 PUSH28 0x787DCCCB72987C31447C36CEDC0E6DF90B7364736F6C634300081E00 CALLER ","sourceMap":"3782:26184:15:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;15209:291;;;;;;;;;;-1:-1:-1;15209:291:15;;;;;:::i;:::-;;:::i;:::-;;8594:124;;;;;;;;;;-1:-1:-1;8594:124:15;;;;;:::i;:::-;-1:-1:-1;;;;;8688:14:15;;;8663:6;8688:14;;;:6;:14;;;;;;;;:23;;-1:-1:-1;;;8688:23:15;;;;8594:124;;;;-1:-1:-1;;;;;1695:31:87;;;1677:50;;1665:2;1650:18;8594:124:15;;;;;;;;8759:134;;;;;;;;;;-1:-1:-1;8759:134:15;;;;;:::i;:::-;;:::i;:::-;;;1912:10:87;1900:23;;;1882:42;;1870:2;1855:18;8759:134:15;1738:192:87;16678:133:15;;;;;;;;;;-1:-1:-1;16678:133:15;;;;;:::i;:::-;;:::i;23845:159::-;;;;;;;;;;-1:-1:-1;23845:159:15;;;;;:::i;:::-;;:::i;19792:1238::-;;;;;;:::i;:::-;;:::i;10258:191::-;;;;;;;;;;-1:-1:-1;10258:191:15;;;;;:::i;:::-;;:::i;8934:408::-;;;;;;;;;;-1:-1:-1;8934:408:15;;;;;:::i;:::-;;:::i;:::-;;;;;;;;;4791:14:87;4779:27;;;4761:46;;4855:10;4843:23;;;4838:2;4823:18;;4816:51;4903:23;;;;4898:2;4883:18;;4876:51;4963:27;;4958:2;4943:18;;4936:55;4748:3;4733:19;;4538:459;10946:126:15;;;;;;;;;;-1:-1:-1;10946:126:15;;;;;:::i;:::-;;:::i;17306:184::-;;;;;;;;;;-1:-1:-1;17306:184:15;;;;;:::i;:::-;;:::i;:::-;;;5622:14:87;5610:27;;;5592:46;;5580:2;5565:18;17306:184:15;5448:196:87;5638:53:15;;;;;;;;;;;;-1:-1:-1;;;;;5638:53:15;;17531:111;;;;;;;;;;-1:-1:-1;17531:111:15;;;;;:::i;:::-;17590:6;17615:14;;;:10;:14;;;;;:20;-1:-1:-1;;;17615:20:15;;;;;17531:111;7626:90;;;;;;;;;;-1:-1:-1;7702:7:15;7626:90;;8255:139;;;;;;;;;;-1:-1:-1;8255:139:15;;;;;:::i;:::-;;:::i;11113:138::-;;;;;;;;;;-1:-1:-1;11113:138:15;;;;;:::i;:::-;;:::i;8435:118::-;;;;;;;;;;-1:-1:-1;8435:118:15;;;;;:::i;:::-;-1:-1:-1;;;;;8526:14:15;;;8501:6;8526:14;;;:6;:14;;;;;;;;:20;;;;8435:118;8050:164;;;;;;;;;;-1:-1:-1;8050:164:15;;;;;:::i;:::-;;:::i;5457:52::-;;;;;;;;;;;;5493:16;5457:52;;9961:256;;;;;;;;;;-1:-1:-1;9961:256:15;;;;;:::i;:::-;;:::i;22220:376::-;;;;;;;;;;-1:-1:-1;22220:376:15;;;;;:::i;:::-;;:::i;7887:122::-;;;;;;;;;;-1:-1:-1;7887:122:15;;;;;:::i;:::-;;:::i;:::-;;;7080:14:87;;7073:22;7055:41;;7043:2;7028:18;7887:122:15;6915:187:87;11292:134:15;;;;;;;;;;-1:-1:-1;11292:134:15;;;;;:::i;:::-;;:::i;23503:181::-;;;;;;;;;;-1:-1:-1;23503:181:15;;;;;:::i;:::-;;:::i;:::-;;;8204:25:87;;;8192:2;8177:18;23503:181:15;8058:177:87;1224:482:42;;;;;;;;;;-1:-1:-1;1224:482:42;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;6783:802:15:-;;;;;;;;;;-1:-1:-1;6783:802:15;;;;;:::i;:::-;;:::i;:::-;;;;10436:14:87;;10429:22;10411:41;;10500:10;10488:23;;;10483:2;10468:18;;10461:51;10384:18;6783:802:15;10245:273:87;10490:127:15;;;;;;;;;;-1:-1:-1;10490:127:15;;;;;:::i;:::-;;:::i;7757:89::-;;;;;;;;;;-1:-1:-1;7833:6:15;7757:89;;9383:418;;;;;;;;;;-1:-1:-1;9383:418:15;;;;;:::i;:::-;;:::i;15928:147::-;;;;;;;;;;-1:-1:-1;15928:147:15;;;;;:::i;:::-;;:::i;21071:1108::-;;;;;;;;;;-1:-1:-1;21071:1108:15;;;;;:::i;:::-;;:::i;17683:1373::-;;;;;;;;;;-1:-1:-1;17683:1373:15;;;;;:::i;:::-;;:::i;:::-;;;;11744:25:87;;;11817:10;11805:23;;;11800:2;11785:18;;11778:51;11717:18;17683:1373:15;11572:263:87;10658:247:15;;;;;;;;;;-1:-1:-1;10658:247:15;;;;;:::i;:::-;;:::i;15209:291::-;6297:18;:16;:18::i;:::-;15375:9:::1;15370:124;15390:20:::0;;::::1;15370:124;;;15431:52;15454:6;15462:9;;15472:1;15462:12;;;;;;;:::i;:::-;;;;;;;;;;;;;;:::i;:::-;15476:6;15431:22;:52::i;:::-;15412:3;;15370:124;;;;15209:291:::0;;;;:::o;8759:134::-;-1:-1:-1;;;;;8855:14:15;;8830:6;8855:14;;;:6;:14;;;;;;;:25;;:31;;-1:-1:-1;;;8855:25:15;;-1:-1:-1;;;;;8855:25:15;:29;:31::i;:::-;8848:38;8759:134;-1:-1:-1;;8759:134:15:o;16678:133::-;6297:18;:16;:18::i;:::-;16772:32:::1;16789:6;16797;16772:16;:32::i;:::-;16678:133:::0;;:::o;23845:159::-;6297:18;:16;:18::i;:::-;23948:49:::1;::::0;-1:-1:-1;;;23948:49:15;;-1:-1:-1;;;;;12386:32:87;;;23948:49:15::1;::::0;::::1;12368:51:87::0;23948:35:15;::::1;::::0;::::1;::::0;12341:18:87;;23948:49:15::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;23845:159:::0;;:::o;19792:1238::-;19878:6;735:10:38;19878:6:15;;20051:38;735:10:38;20076:6:15;20084:4;;20051:16;:38::i;:::-;20016:73;;;;20150:9;20149:10;:26;;;;-1:-1:-1;20163:12:15;;;;20149:26;20145:131;;;20228:6;20236;20244:20;20259:4;;20244:14;:20::i;:::-;20198:67;;-1:-1:-1;;;20198:67:15;;-1:-1:-1;;;;;12648:32:87;;;20198:67:15;;;12630:51:87;12717:32;;;;12697:18;;;12690:60;-1:-1:-1;;;;;;12786:33:87;12766:18;;;12759:61;12603:18;;20198:67:15;;;;;;;;20145:131;20286:19;20308:35;20322:6;20330;20338:4;;20308:13;:35::i;:::-;20286:57;-1:-1:-1;20353:12:15;20545;;;;;;:45;;;20561:24;20573:11;20561;:24::i;:::-;:29;;;;20545:45;20541:116;;;20614:32;20634:11;20614:19;:32::i;:::-;20606:40;;20541:116;20749:12;;20786:46;20803:6;20811:20;20826:4;;20811:14;:20::i;:::-;20786:16;:46::i;:::-;20771:12;:61;;;;20867:54;20897:6;20905:4;;20867:54;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;20911:9:15;;-1:-1:-1;20867:29:15;;-1:-1:-1;;20867:54:15:i;:::-;-1:-1:-1;20968:12:15;:32;21018:5;-1:-1:-1;;;;;19792:1238:15;;;;;;:::o;10258:191::-;6297:18;:16;:18::i;:::-;10372:70:::1;10383:6;10391:7;10400:25;10418:6;10400:17;:25::i;:::-;10427:14;10372:10;:70::i;:::-;;10258:191:::0;;;:::o;8934:408::-;-1:-1:-1;;;;;9141:14:15;;9036:12;9141:14;;;:6;:14;;;;;;;;-1:-1:-1;;;;;9141:31:15;;;;;;;;;9191:12;;;;;;9036;;;;;9141:31;9252:22;;-1:-1:-1;;;9252:12:15;;-1:-1:-1;;;;;9252:12:15;:20;:22::i;:::-;8934:408;;9213:61;;-1:-1:-1;9213:61:15;-1:-1:-1;8934:408:15;-1:-1:-1;;;;8934:408:15:o;10946:126::-;6297:18;:16;:18::i;:::-;11037:28:::1;11051:6;11059:5;11037:13;:28::i;17306:184::-:0;17368:6;17405:14;;;:10;:14;;;;;:24;;;17446:21;17405:24;17446:10;:21::i;:::-;:37;;17474:9;17446:37;;;17470:1;17439:44;17306:184;-1:-1:-1;;;17306:184:15:o;8255:139::-;-1:-1:-1;;;;;8354:16:15;;8329:6;8354:16;;;;;;;;;;:27;;;:33;;-1:-1:-1;;;;;8354:27:15;:31;:33::i;11113:138::-;6297:18;:16;:18::i;:::-;11210:34:::1;11227:6;11235:8;11210:16;:34::i;8050:164::-:0;-1:-1:-1;;;;;8168:16:15;;8143:6;8168:16;;;;;;;;;;;-1:-1:-1;;;;;;8168:39:15;;;;;;;;;;-1:-1:-1;;;;;8168:39:15;8050:164;;;;:::o;9961:256::-;6297:18;:16;:18::i;:::-;-1:-1:-1;;;;;10062:20:15;::::1;::::0;;:45:::1;;-1:-1:-1::0;;;;;;10086:21:15;;::::1;;10062:45;10058:114;;;10130:31;::::0;-1:-1:-1;;;10130:31:15;;-1:-1:-1;;;;;1695:31:87;;10130::15::1;::::0;::::1;1677:50:87::0;1650:18;;10130:31:15::1;1533:200:87::0;10058:114:15::1;10196:6;-1:-1:-1::0;;;;;10186:24:15::1;;10204:5;;10186:24;;;;;;;:::i;:::-;;;;;;;;9961:256:::0;;;:::o;22220:376::-;22353:47;;;-1:-1:-1;;;22353:47:15;;;;;735:10:38;;22404:46:15;735:10:38;;22404:46:15;;22353:47;;;;;;;;;;;;;;;735:10:38;22353:47:15;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;-1:-1:-1;;;;;;22353:97:15;;22349:175;;22473:40;;-1:-1:-1;;;22473:40:15;;-1:-1:-1;;;;;12386:32:87;;22473:40:15;;;12368:51:87;12341:18;;22473:40:15;12222:203:87;22349:175:15;22533:56;22553:35;22567:6;22575;22583:4;;22553:13;:35::i;:::-;22533:19;:56::i;7887:122::-;-1:-1:-1;;;;;7979:16:15;7956:4;7979:16;;;;;;;;;;:23;;;-1:-1:-1;;;7979:23:15;;;;;7887:122::o;11292:134::-;6297:18;:16;:18::i;:::-;11387:32:::1;11402:6;11410:8;11387:14;:32::i;23503:181::-:0;23608:7;23655:6;23663;23671:4;;23644:32;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;23634:43;;;;;;23627:50;;23503:181;;;;;;:::o;1224:482:42:-;1388:12;;;1324:20;1388:12;;;;;;;;1290:22;;1499:4;-1:-1:-1;;;;;1487:24:42;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;1477:34:42;-1:-1:-1;1526:9:42;1521:155;1541:15;;;1521:155;;;1590:75;1627:4;1647;;1652:1;1647:7;;;;;;;:::i;:::-;;;;;;;;;;;;:::i;:::-;1656;1634:30;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;1590:28;:75::i;:::-;1577:7;1585:1;1577:10;;;;;;;;:::i;:::-;;;;;;;;;;:88;1558:3;;1521:155;;;;1685:14;1224:482;;;;:::o;6783:802:15:-;6908:14;6924:12;6952:22;6967:6;6952:14;:22::i;:::-;6948:631;;;-1:-1:-1;6998:5:15;;-1:-1:-1;6998:5:15;6990:17;;6948:631;7046:4;-1:-1:-1;;;;;7028:23:15;;;7024:555;;7294:30;7307:6;7315:8;7294:12;:30::i;:::-;7326:1;7286:42;;;;;;7024:555;7359:13;7375:39;7397:6;7405:8;7375:21;:39::i;:::-;7359:55;;7429:13;7444:19;7467:23;7475:6;7483;7467:7;:23::i;:::-;7428:62;;;;7511:8;:57;;7559:5;7566:1;7511:57;;;7523:17;;;;:12;7511:57;7504:64;;;;;;;7024:555;6783:802;;;;;;:::o;10490:127::-;6297:18;:16;:18::i;:::-;10582:28:::1;10594:6;10602:7;10582:11;:28::i;:::-;;10490:127:::0;;:::o;9383:418::-;9483:13;;-1:-1:-1;;;;;;;9535:21:15;;;9531:264;;-1:-1:-1;9580:4:15;;-1:-1:-1;9586:1:15;9572:16;;9531:264;9620:19;9641;9668:26;9678:6;9686:7;9668:9;:26::i;:::-;9619:75;;;;;;9716:12;:17;;9732:1;9716:17;;:53;;;;;9753:16;:14;:16::i;:::-;9737:32;;:12;:32;;;;9716:53;9708:76;-1:-1:-1;9771:12:15;-1:-1:-1;9708:76:15;;-1:-1:-1;9708:76:15;9531:264;9383:418;;;;;:::o;15928:147::-;6297:18;:16;:18::i;:::-;16030:38:::1;16051:6;16059:8;16030:20;:38::i;21071:1108::-:0;21164:6;735:10:38;21164:6:15;21242:20;21257:4;;21242:14;:20::i;:::-;21224:38;;21273:19;21295:35;21309:6;21317;21325:4;;21295:13;:35::i;:::-;21344:23;;;;:10;:23;;;;;:33;21273:57;;-1:-1:-1;21344:33:15;;;;:38;;21340:614;;21405:38;;-1:-1:-1;;;21405:38:15;;;;;8204:25:87;;;8177:18;;21405:38:15;8058:177:87;21340:614:15;21474:9;-1:-1:-1;;;;;21464:19:15;:6;-1:-1:-1;;;;;21464:19:15;;21460:494;;21633:12;21651:30;5493:16;21671:9;21651:7;:30::i;:::-;21632:49;;;21696:15;21717:76;21725:56;21741:39;21763:6;21771:8;21741:21;:39::i;21725:56::-;21783:9;21717:7;:76::i;:::-;21695:98;;;21812:7;21811:8;:23;;;;;21824:10;21823:11;21811:23;21807:137;;;21861:68;;-1:-1:-1;;;21861:68:15;;-1:-1:-1;;;;;16018:32:87;;;21861:68:15;;;16000:51:87;16087:32;;;16067:18;;;16060:60;16156:32;;16136:18;;;16129:60;-1:-1:-1;;;;;;16225:33:87;;16205:18;;;16198:61;15972:19;;21861:68:15;15771:494:87;21807:137:15;21485:469;;21460:494;21971:23;;;;:10;:23;;;;;;21964:40;;-1:-1:-1;;21964:40:15;;;;;22112:37;;-1:-1:-1;;;22068:29:15;;;;;;;;21971:23;;22112:37;;;22167:5;21071:1108;-1:-1:-1;;;;;;;;21071:1108:15:o;17683:1373::-;17805:19;;735:10:38;17805:19:15;17991:38;735:10:38;18016:6:15;18024:4;;17991:16;:38::i;:::-;17970:59;;;18040:14;18076:7;18057:26;;:16;:14;:16::i;:::-;:26;;;;:::i;:::-;18040:43;-1:-1:-1;18190:12:15;;;;;:44;;;18214:1;18207:4;:8;;;:26;;;;;18226:7;18219:14;;:4;:14;;;18207:26;18186:149;;;18287:6;18295;18303:20;18318:4;;18303:14;:20::i;18186:149::-;18407:23;18416:4;18407:23;;18422:7;18407:23;;:8;:23::i;:::-;18393:38;;18551:35;18565:6;18573;18581:4;;18551:13;:35::i;:::-;18537:49;;18597:31;18616:11;18597:18;:31::i;:::-;18750:23;;;;:10;:23;;;;;;;:29;;18803:40;;;-1:-1:-1;;18853:37:15;;;-1:-1:-1;;;18750:29:15;;;;;;;;18782:1;18750:33;18853:37;;;;;;;;;;;;;18905:66;;18750:33;;-1:-1:-1;18750:23:15;;18905:66;;;;18803:40;;18950:6;;18958;;18966:4;;;;18905:66;:::i;:::-;;;;;;;;17840:1216;;;17683:1373;;;;;;;:::o;10658:247::-;-1:-1:-1;;;;;10752:34:15;;735:10:38;10752:34:15;10748:102;;10809:30;;-1:-1:-1;;;10809:30:15;;;;;;;;;;;24358:503;735:10:38;24404:14:15;;24476:32;735:10:38;24404:14:15;809::38;24476:12:15;:32::i;:::-;24443:65;;;;24523:9;24518:337;;24552:5;:10;;24561:1;24552:10;24548:297;;24585:19;24610:33;24585:19;809:14:38;24610:21:15;:33::i;:::-;-1:-1:-1;24668:54:15;;-1:-1:-1;;;24668:54:15;;-1:-1:-1;;;;;17180:32:87;;24668:54:15;;;17162:51:87;-1:-1:-1;;;;;17249:31:87;;17229:18;;;17222:59;24582:61:15;;-1:-1:-1;17135:18:87;;;-1:-1:-1;24668:54:15;16990:297:87;24548::15;24761:69;24781:48;24795:6;24811:4;809:14:38;;23503:181:15;:::i;15659:228::-;-1:-1:-1;;;;;15766:16:15;;:8;:16;;;;;;;;;;;-1:-1:-1;;;;;;15766:39:15;;;;;;;;;;;;:48;;-1:-1:-1;;15766:48:15;-1:-1:-1;;;;;15766:48:15;;;;;;;;15829:51;;17436:52:87;;;15766:48:15;:16;15829:51;;17409:18:87;15829:51:15;;;;;;;15659:228;;;:::o;3608:130:49:-;3656:6;3675:12;3695:14;:4;-1:-1:-1;;;;;3695:12:49;;:14::i;:::-;-1:-1:-1;3674:35:49;;3608:130;-1:-1:-1;;;;3608:130:49:o;16981:164:15:-;-1:-1:-1;;;;;17063:16:15;;:8;:16;;;;;;;;;;;;:23;;:32;;;;;-1:-1:-1;;;17063:32:15;-1:-1:-1;;;;17063:32:15;;;;;;17110:28;;;;;17089:6;7080:14:87;7073:22;7055:41;;7043:2;7028:18;;6915:187;17110:28:15;;;;;;;;16981:164;;:::o;27376:378::-;27507:14;;27569:4;-1:-1:-1;;;;;27551:23:15;;;27547:201;;27597:26;27610:6;27618:4;;27597:12;:26::i;:::-;27590:33;;;;;;27547:201;27675:1;27661:15;;:76;;27692:45;27700:6;27708;27716:20;27731:4;;27716:14;:20::i;27692:45::-;27661:76;;;-1:-1:-1;27680:5:15;;-1:-1:-1;27680:5:15;27547:201;27376:378;;;;;;;:::o;29590:116::-;29657:6;29689:9;29696:1;29657:6;29689:4;;:9;:::i;:::-;29682:17;;;:::i;22786:676::-;22862:6;22899:23;;;:10;:23;;;;;:33;;;;;-1:-1:-1;;;22957:29:15;;;;23001:14;;;22997:294;;23038:38;;-1:-1:-1;;;23038:38:15;;;;;8204:25:87;;;8177:18;;23038:38:15;8058:177:87;22997:294:15;23109:16;:14;:16::i;:::-;23097:28;;:9;:28;;;23093:198;;;23148:34;;-1:-1:-1;;;23148:34:15;;;;;8204:25:87;;;8177:18;;23148:34:15;8058:177:87;23093:198:15;23203:21;23214:9;23203:10;:21::i;:::-;23199:92;;;23247:33;;-1:-1:-1;;;23247:33:15;;;;;8204:25:87;;;8177:18;;23247:33:15;8058:177:87;23199:92:15;23308:23;;;;:10;:23;;;;;;23301:40;;-1:-1:-1;;23301:40:15;;;23395:37;;;;;23319:11;;23395:37;;23308:23;23395:37;23450:5;22786:676;-1:-1:-1;;;22786:676:15:o;29780:184::-;-1:-1:-1;;;;;29921:24:15;;29861:7;928:15:45;;;-1:-1:-1;;;;;;29887:70:15;;963:4:45;956:15;1009:4;993:21;;29887:70:15;791:239:45;3165:696:37;3264:12;3316:5;3292:21;:29;3288:123;;;3344:56;;-1:-1:-1;;;3344:56:37;;3371:21;3344:56;;;18016:25:87;18057:18;;;18050:34;;;17989:18;;3344:56:37;17842:248:87;3288:123:37;3420:12;3435:46;3461:6;3469:5;3476:4;3435:25;:46::i;:::-;3420:61;;3495:7;:72;;;;-1:-1:-1;3539:1:37;4583:16:40;3507:33:37;:59;;;;3565:1;3544:6;-1:-1:-1;;;;;3544:18:37;;:22;3507:59;3491:364;;;3590:25;:23;:25::i;:::-;3583:32;;;;;3491:364;3636:7;3632:223;;;3666:24;;-1:-1:-1;;;3666:24:37;;-1:-1:-1;;;;;12386:32:87;;3666:24:37;;;12368:51:87;12341:18;;3666:24:37;12222:203:87;3632:223:37;4583:16:40;3711:33:37;3707:148;;3760:27;:25;:27::i;:::-;3707:148;;;3825:19;;-1:-1:-1;;;3825:19:37;;;;;;;;;;;3707:148;3278:583;3165:696;;;;;:::o;11603:1061:15:-;11761:4;-1:-1:-1;;;;;;;11781:21:15;;;11777:90;;11825:31;;-1:-1:-1;;;11825:31:15;;-1:-1:-1;;;;;1695:31:87;;11825::15;;;1677:50:87;1650:18;;11825:31:15;1533:200:87;11777:90:15;-1:-1:-1;;;;;11894:14:15;;11877;11894;;;:6;:14;;;;;;;;-1:-1:-1;;;;;11894:31:15;;;;;;;;;:37;;;:42;;11969:585;;;;12025:10;12006:29;;:16;:14;:16::i;:::-;:29;;;;:::i;:::-;11998:37;;12083:55;;;;;;;;12098:5;12083:55;;;;;;12112:24;:14;:22;;2588:20:49;;;2507:108;12112:24:15;-1:-1:-1;;;;;12083:55:15;;;;;;-1:-1:-1;;;;;12049:14:15;;;;;;:6;:14;;;;;;;;-1:-1:-1;;;;;12049:31:15;;;;;;;;;:89;;;;;;;;;;;;-1:-1:-1;;;12049:89:15;-1:-1:-1;;;;;;12049:89:15;;;;;;;;;;;;;;11969:585;;;-1:-1:-1;;;;;12430:14:15;;12528:1;12430:14;;;:6;:14;;;;;;;;-1:-1:-1;;;;;12430:31:15;;;;;;;;;:37;:113;;-1:-1:-1;;;12430:37:15;;;-1:-1:-1;;;;;12430:37:15;;12496:14;;12430:48;:113::i;:::-;-1:-1:-1;;;;;12382:14:15;;;;;;:6;:14;;;;;;;;-1:-1:-1;;;;;12382:31:15;;;;;;;;;12381:162;;-1:-1:-1;;;;;12381:162:15;;;-1:-1:-1;;;12381:162:15;-1:-1:-1;;12381:162:15;;;;;;;;;;;-1:-1:-1;11969:585:15;12569:62;;;18317:10:87;18305:23;;18287:42;;18377:14;18365:27;;18360:2;18345:18;;18338:55;18436:14;;18429:22;18409:18;;;18402:50;12569:62:15;;-1:-1:-1;;;;;12569:62:15;;;-1:-1:-1;;;;;12569:62:15;;;;;;;;18275:2:87;12569:62:15;;;-1:-1:-1;12648:9:15;11603:1061;-1:-1:-1;;;;;11603:1061:15:o;3392:159:49:-;3444:18;3464:17;3483:13;3515:29;3526:4;3532:11;:9;:11::i;:::-;3515:10;:29::i;:::-;3508:36;;;;;;3392:159;;;;;:::o;13620:285:15:-;-1:-1:-1;;;;;13703:20:15;;;;:45;;-1:-1:-1;;;;;;13727:21:15;;;;13703:45;13699:114;;;13771:31;;-1:-1:-1;;;13771:31:15;;-1:-1:-1;;;;;1695:31:87;;13771::15;;;1677:50:87;1650:18;;13771:31:15;1533:200:87;13699:114:15;-1:-1:-1;;;;;13823:14:15;;;;;;;:6;:14;;;;;;;;:20;;;:28;;-1:-1:-1;;13823:28:15;;;;;;;;;13867:31;;;13823:14;13867:31;13620:285;;:::o;29346:134::-;29406:4;29457:16;:14;:16::i;:::-;29429:44;;:24;7702:7;29429:9;:24;:::i;:::-;:44;;;;;29346:134;-1:-1:-1;;29346:134:15:o;14224:303::-;-1:-1:-1;;;;;14313:20:15;;;;:45;;-1:-1:-1;;;;;;14337:21:15;;;;14313:45;14309:114;;;14381:31;;-1:-1:-1;;;14381:31:15;;-1:-1:-1;;;;;1695:31:87;;14381::15;;;1677:50:87;1650:18;;14381:31:15;1533:200:87;14309:114:15;-1:-1:-1;;;;;14433:14:15;;;;;;;:6;:14;;;;;;;;:23;;;:34;;-1:-1:-1;;14433:34:15;-1:-1:-1;;;14433:34:15;;;;;;;;;14483:37;;;14433:14;14483:37;14224:303;;:::o;14674:374::-;-1:-1:-1;;;;;;;14761:21:15;;;14757:90;;14805:31;;-1:-1:-1;;;14805:31:15;;-1:-1:-1;;;;;1695:31:87;;14805::15;;;1677:50:87;1650:18;;14805:31:15;1533:200:87;14757:90:15;-1:-1:-1;;;;;14918:14:15;;14857:13;14918:14;;;:6;:14;;;;;;;:25;;:60;;-1:-1:-1;;;14918:25:15;;-1:-1:-1;;;;;14918:25:15;14955:8;7833:6;14918:36;:60::i;:::-;-1:-1:-1;;;;;14881:14:15;;;;;;:6;:14;;;;;;;;;:25;14880:98;;-1:-1:-1;;;;;14880:98:15;;;-1:-1:-1;;;14880:98:15;-1:-1:-1;;;;14880:98:15;;;;;;;;;;14994:47;;14880:98;;-1:-1:-1;14994:47:15;;;;15024:8;;14880:98;;18663:10:87;18651:23;;;;18633:42;;18723:14;18711:27;18706:2;18691:18;;18684:55;18621:2;18606:18;;18463:282;4691:549:37;4774:12;4798;4813:47;4847:6;4855:4;4813:33;:47::i;:::-;4798:62;;4874:7;:72;;;;-1:-1:-1;4918:1:37;4583:16:40;4886:33:37;:59;;;;4944:1;4923:6;-1:-1:-1;;;;;4923:18:37;;:22;4886:59;4870:364;;;4969:25;:23;:25::i;:::-;4962:32;;;;;4870:364;5015:7;5011:223;;;5045:24;;-1:-1:-1;;;5045:24:37;;-1:-1:-1;;;;;12386:32:87;;5045:24:37;;;12368:51:87;12341:18;;5045:24:37;12222:203:87;5011:223:37;4583:16:40;5090:33:37;5086:148;;5139:27;:25;:27::i;:::-;4788:452;4691:549;;;;:::o;29085:157:15:-;29162:4;29201:34;29218:6;29226:8;29201:16;:34::i;:::-;29185:12;;:50;;29085:157;-1:-1:-1;;;29085:157:15:o;12925:400::-;13004:4;-1:-1:-1;;;;;;;13024:21:15;;;13020:90;;13068:31;;-1:-1:-1;;;13068:31:15;;-1:-1:-1;;;;;1695:31:87;;13068::15;;;1677:50:87;1650:18;;13068:31:15;1533:200:87;13020:90:15;-1:-1:-1;;;;;13124:14:15;;;;;;:6;:14;;;;;;;;-1:-1:-1;;;;;13124:31:15;;;;;;;;;:37;;;:42;;13120:85;;-1:-1:-1;13189:5:15;13182:12;;13120:85;-1:-1:-1;;;;;13222:14:15;;;;;;:6;:14;;;;;;;;-1:-1:-1;;;;;13222:31:15;;;;;;;;;;13215:38;;-1:-1:-1;;;;;;13215:38:15;;;13269:28;13222:31;;:14;13269:28;;;-1:-1:-1;13314:4:15;12925:400;;;;:::o;750:110:49:-;794:6;819:34;837:15;819:17;:34::i;:::-;812:41;;750:110;:::o;16230:287:15:-;-1:-1:-1;;;;;16383:16:15;;16320:13;16383:16;;;;;;;;;;:27;;;:62;;-1:-1:-1;;;;;16383:27:15;16422:8;7833:6;16383:38;:62::i;:::-;-1:-1:-1;;;;;16344:16:15;;:8;:16;;;;;;;;;;;;:27;;16343:102;;-1:-1:-1;;16343:102:15;-1:-1:-1;;;;;16343:102:15;;;;;;;;;;;16461:49;;18663:10:87;18651:23;;18633:42;;18723:14;18711:27;;18691:18;;;18684:55;;;;16343:102:15;;-1:-1:-1;16344:16:15;16461:49;;18606:18:87;16461:49:15;18463:282:87;5451:111:47;5509:7;5328:5;;;5543;;;5327:36;5322:42;;5535:20;5087:294;19250:272:15;19322:20;19345:23;;;:10;:23;;;;;:33;;;19392:18;;;;;:48;;;19415:25;19426:13;19415:10;:25::i;:::-;19414:26;19392:48;19388:128;;;19463:42;;-1:-1:-1;;;19463:42:15;;;;;8204:25:87;;;8177:18;;19463:42:15;8058:177:87;27858:1107:15;27939:14;;27997:1;27983:15;;27979:63;;;-1:-1:-1;28022:5:15;;-1:-1:-1;28022:5:15;28014:17;;27979:63;28074:4;-1:-1:-1;;;;;28056:23:15;;;28052:334;;28322:49;28343:4;28350:20;28365:4;;28350:14;:20::i;:::-;28322:12;:49::i;28052:334::-;28397:20;28419:13;28434:21;28459:27;28481:4;;28459:21;:27::i;:::-;28396:90;;;;;;28567:15;28566:16;:49;;;;;28586:29;28609:4;28586:14;:29::i;:::-;28562:97;;;28639:5;28646:1;28631:17;;;;;;;;;28562:97;28670:11;28683:21;28708:23;28716:6;28724;28708:7;:23::i;:::-;28669:62;;;;28746:6;28741:55;;28776:5;28783:1;28768:17;;;;;;;;;;;28741:55;28881:40;28890:14;28881:40;;28906:14;28881:40;;:8;:40::i;:::-;28940:10;;;;;;;-1:-1:-1;27858:1107:15;-1:-1:-1;;;;;;;;;27858:1107:15:o;25267:1678::-;25355:20;;;25448:1;25434:15;;25430:66;;;-1:-1:-1;25473:5:15;;-1:-1:-1;25473:5:15;;-1:-1:-1;25473:5:15;25465:20;;25430:66;25506:15;25524:20;25539:4;;25524:14;:20::i;:::-;25506:38;-1:-1:-1;;;;;;;25664:35:15;;-1:-1:-1;;;25664:35:15;;:89;;-1:-1:-1;;;;;;;25715:38:15;;-1:-1:-1;;;25715:38:15;25664:89;:146;;;-1:-1:-1;;;;;;;25769:41:15;;-1:-1:-1;;;25769:41:15;25664:146;:201;;;-1:-1:-1;;;;;;;25826:39:15;;-1:-1:-1;;;25826:39:15;25664:201;:262;;;-1:-1:-1;;;;;;;25881:45:15;;-1:-1:-1;;;25881:45:15;25664:262;25647:343;;;25959:4;5493:16;25977:1;25951:28;;;;;;;;;25647:343;-1:-1:-1;;;;;;26097:41:15;;-1:-1:-1;;;26097:41:15;;:98;;-1:-1:-1;;;;;;;26154:41:15;;-1:-1:-1;;;26154:41:15;26097:98;:161;;;-1:-1:-1;;;;;;;26211:47:15;;-1:-1:-1;;;26211:47:15;26097:161;26080:414;;;26326:14;26354:15;26364:4;26359;26354;;:15;:::i;:::-;26343:38;;;;;;;:::i;:::-;26326:55;;26395:12;26410:27;26430:6;26410:19;:27::i;:::-;26459:4;;-1:-1:-1;5493:16:15;;-1:-1:-1;26395:42:15;-1:-1:-1;26451:32:15;;-1:-1:-1;;;26451:32:15;26080:414;-1:-1:-1;;;;;;26613:35:15;;-1:-1:-1;;;26613:35:15;;:75;;-1:-1:-1;;;;;;;26652:36:15;;-1:-1:-1;;;26652:36:15;26613:75;26609:254;;;26747:13;26774:15;26784:4;26779;26774;;:15;:::i;:::-;26763:37;;;;;;;:::i;:::-;26747:53;;26822:4;26828:20;26841:6;-1:-1:-1;;;;;8526:14:15;;;8501:6;8526:14;;;:6;:14;;;;;;;;:20;;;;8435:118;26828:20;26850:1;26814:38;;;;;;;;;;26609:254;26881:5;26888:46;26918:4;26925:8;26888:21;:46::i;:::-;26936:1;26873:65;;;;;;;25267:1678;;;;;;:::o;791:248:40:-;881:12;1018:4;1012;1005;999:11;992:4;986;982:15;975:5;967:6;960:5;955:68;944:79;791:248;-1:-1:-1;;;;791:248:40:o;4698:334::-;4829:4;4823:11;4862:16;4847:32;;4932:16;4926:4;4919;4907:17;;4892:57;4997:16;4991:4;4987:27;4979:6;4975:40;4969:4;4962:54;4698:334;:::o;5099:223::-;5203:4;5197:11;5247:16;5241:4;5236:3;5221:43;5289:16;5284:3;5277:29;4032:390:49;4153:18;4173:13;4198:12;4213:10;:4;-1:-1:-1;;;;;4213:8:49;;:10::i;:::-;4198:25;;4233:14;4257:61;4266:10;4257:61;;4286:8;4278:16;;:5;:16;;;:39;;4316:1;4278:39;;;4297:16;4305:8;4297:5;:16;:::i;:::-;4257:61;;:8;:61::i;:::-;4233:86;;4352:7;4338:21;;:11;:9;:11::i;:::-;:21;;;;:::i;:::-;4329:30;-1:-1:-1;5125:19:49;;;5119:2;5095:26;;;;;5088:2;5069:21;;;;;5068:54;:76;4369:46;;;;4032:390;;;;;;:::o;2867:307::-;4763:9;4770:2;4763:9;;;;-1:-1:-1;;;;;3061:11:49;;4799:9;4806:2;4799:9;;;;;;3091:19;;;;;:76;;3135:11;3148:10;3160:6;3091:76;;;3114:10;3126:1;3129;3091:76;3084:83;;;;;;2867:307;;;;;:::o;3383:242:40:-;3466:12;3604:4;3598;3591;3585:11;3578:4;3572;3568:15;3560:6;3553:5;3540:69;3529:80;3383:242;-1:-1:-1;;;3383:242:40:o;14296:213:48:-;14352:6;14382:16;14374:24;;14370:103;;;14421:41;;-1:-1:-1;;;14421:41:48;;14452:2;14421:41;;;19366:36:87;19418:18;;;19411:34;;;19339:18;;14421:41:48;19185:266:87;14370:103:48;-1:-1:-1;14496:5:48;14296:213::o;14:131:87:-;-1:-1:-1;;;;;89:31:87;;79:42;;69:70;;135:1;132;125:12;69:70;14:131;:::o;150:366::-;212:8;222:6;276:3;269:4;261:6;257:17;253:27;243:55;;294:1;291;284:12;243:55;-1:-1:-1;317:20:87;;-1:-1:-1;;;;;349:30:87;;346:50;;;392:1;389;382:12;346:50;429:4;421:6;417:17;405:29;;489:3;482:4;472:6;469:1;465:14;457:6;453:27;449:38;446:47;443:67;;;506:1;503;496:12;521:171;588:20;;-1:-1:-1;;;;;637:30:87;;627:41;;617:69;;682:1;679;672:12;617:69;521:171;;;:::o;697:642::-;799:6;807;815;823;876:2;864:9;855:7;851:23;847:32;844:52;;;892:1;889;882:12;844:52;931:9;918:23;950:31;975:5;950:31;:::i;:::-;1000:5;-1:-1:-1;1056:2:87;1041:18;;1028:32;-1:-1:-1;;;;;1072:30:87;;1069:50;;;1115:1;1112;1105:12;1069:50;1154:69;1215:7;1206:6;1195:9;1191:22;1154:69;:::i;:::-;1242:8;;-1:-1:-1;1128:95:87;-1:-1:-1;1296:37:87;;-1:-1:-1;1329:2:87;1314:18;;1296:37;:::i;:::-;1286:47;;697:642;;;;;;;:::o;1344:184::-;1402:6;1455:2;1443:9;1434:7;1430:23;1426:32;1423:52;;;1471:1;1468;1461:12;1423:52;1494:28;1512:9;1494:28;:::i;1935:416::-;2000:6;2008;2061:2;2049:9;2040:7;2036:23;2032:32;2029:52;;;2077:1;2074;2067:12;2029:52;2116:9;2103:23;2135:31;2160:5;2135:31;:::i;:::-;2185:5;-1:-1:-1;2242:2:87;2227:18;;2214:32;2284:15;;2277:23;2265:36;;2255:64;;2315:1;2312;2305:12;2255:64;2338:7;2328:17;;;1935:416;;;;;:::o;2356:388::-;2424:6;2432;2485:2;2473:9;2464:7;2460:23;2456:32;2453:52;;;2501:1;2498;2491:12;2453:52;2540:9;2527:23;2559:31;2584:5;2559:31;:::i;:::-;2609:5;-1:-1:-1;2666:2:87;2651:18;;2638:32;2679:33;2638:32;2679:33;:::i;2749:347::-;2800:8;2810:6;2864:3;2857:4;2849:6;2845:17;2841:27;2831:55;;2882:1;2879;2872:12;2831:55;-1:-1:-1;2905:20:87;;-1:-1:-1;;;;;2937:30:87;;2934:50;;;2980:1;2977;2970:12;2934:50;3017:4;3009:6;3005:17;2993:29;;3069:3;3062:4;3053:6;3045;3041:19;3037:30;3034:39;3031:59;;;3086:1;3083;3076:12;3101:544;3180:6;3188;3196;3249:2;3237:9;3228:7;3224:23;3220:32;3217:52;;;3265:1;3262;3255:12;3217:52;3304:9;3291:23;3323:31;3348:5;3323:31;:::i;:::-;3373:5;-1:-1:-1;3429:2:87;3414:18;;3401:32;-1:-1:-1;;;;;3445:30:87;;3442:50;;;3488:1;3485;3478:12;3442:50;3527:58;3577:7;3568:6;3557:9;3553:22;3527:58;:::i;:::-;3101:544;;3604:8;;-1:-1:-1;3501:84:87;;-1:-1:-1;;;;3101:544:87:o;3650:163::-;3717:20;;3777:10;3766:22;;3756:33;;3746:61;;3803:1;3800;3793:12;3818:391;3893:6;3901;3909;3962:2;3950:9;3941:7;3937:23;3933:32;3930:52;;;3978:1;3975;3968:12;3930:52;4001:28;4019:9;4001:28;:::i;:::-;3991:38;;4079:2;4068:9;4064:18;4051:32;4092:31;4117:5;4092:31;:::i;:::-;4142:5;-1:-1:-1;4166:37:87;4199:2;4184:18;;4166:37;:::i;:::-;4156:47;;3818:391;;;;;:::o;4214:319::-;4281:6;4289;4342:2;4330:9;4321:7;4317:23;4313:32;4310:52;;;4358:1;4355;4348:12;4310:52;4381:28;4399:9;4381:28;:::i;5002:256::-;5068:6;5076;5129:2;5117:9;5108:7;5104:23;5100:32;5097:52;;;5145:1;5142;5135:12;5097:52;5168:28;5186:9;5168:28;:::i;:::-;5158:38;;5215:37;5248:2;5237:9;5233:18;5215:37;:::i;:::-;5205:47;;5002:256;;;;;:::o;5263:180::-;5322:6;5375:2;5363:9;5354:7;5350:23;5346:32;5343:52;;;5391:1;5388;5381:12;5343:52;-1:-1:-1;5414:23:87;;5263:180;-1:-1:-1;5263:180:87:o;5649:247::-;5708:6;5761:2;5749:9;5740:7;5736:23;5732:32;5729:52;;;5777:1;5774;5767:12;5729:52;5816:9;5803:23;5835:31;5860:5;5835:31;:::i;5901:131::-;-1:-1:-1;;;;;;5975:32:87;;5965:43;;5955:71;;6022:1;6019;6012:12;6037:386;6104:6;6112;6165:2;6153:9;6144:7;6140:23;6136:32;6133:52;;;6181:1;6178;6171:12;6133:52;6220:9;6207:23;6239:31;6264:5;6239:31;:::i;:::-;6289:5;-1:-1:-1;6346:2:87;6331:18;;6318:32;6359;6318;6359;:::i;6428:482::-;6507:6;6515;6523;6576:2;6564:9;6555:7;6551:23;6547:32;6544:52;;;6592:1;6589;6582:12;6544:52;6615:28;6633:9;6615:28;:::i;7107:256::-;7173:6;7181;7234:2;7222:9;7213:7;7209:23;7205:32;7202:52;;;7250:1;7247;7240:12;7202:52;7273:28;7291:9;7273:28;:::i;:::-;7263:38;;7320:37;7353:2;7342:9;7338:18;7320:37;:::i;7368:685::-;7456:6;7464;7472;7480;7533:2;7521:9;7512:7;7508:23;7504:32;7501:52;;;7549:1;7546;7539:12;7501:52;7588:9;7575:23;7607:31;7632:5;7607:31;:::i;:::-;7657:5;-1:-1:-1;7714:2:87;7699:18;;7686:32;7727:33;7686:32;7727:33;:::i;:::-;7779:7;-1:-1:-1;7837:2:87;7822:18;;7809:32;-1:-1:-1;;;;;7853:30:87;;7850:50;;;7896:1;7893;7886:12;7850:50;7935:58;7985:7;7976:6;7965:9;7961:22;7935:58;:::i;:::-;7368:685;;;;-1:-1:-1;8012:8:87;-1:-1:-1;;;;7368:685:87:o;8240:447::-;8337:6;8345;8398:2;8386:9;8377:7;8373:23;8369:32;8366:52;;;8414:1;8411;8404:12;8366:52;8454:9;8441:23;-1:-1:-1;;;;;8479:6:87;8476:30;8473:50;;;8519:1;8516;8509:12;8473:50;8558:69;8619:7;8610:6;8599:9;8595:22;8558:69;:::i;:::-;8646:8;;8532:95;;-1:-1:-1;8240:447:87;-1:-1:-1;;;;8240:447:87:o;8692:1016::-;8852:4;8900:2;8889:9;8885:18;8930:2;8919:9;8912:21;8953:6;8988;8982:13;9019:6;9011;9004:22;9057:2;9046:9;9042:18;9035:25;;9119:2;9109:6;9106:1;9102:14;9091:9;9087:30;9083:39;9069:53;;9157:2;9149:6;9145:15;9178:1;9188:491;9202:6;9199:1;9196:13;9188:491;;;9295:2;9291:7;9279:9;9271:6;9267:22;9263:36;9258:3;9251:49;9329:6;9323:13;9371:2;9365:9;9402:8;9394:6;9387:24;9460:8;9455:2;9451;9447:11;9442:2;9434:6;9430:15;9424:45;9521:1;9516:2;9505:8;9497:6;9493:21;9489:30;9482:41;9596:2;9589;9585:7;9580:2;9570:8;9566:17;9562:31;9554:6;9550:44;9546:53;9536:63;;;;9634:2;9626:6;9622:15;9612:25;;9666:2;9661:3;9657:12;9650:19;;9224:1;9221;9217:9;9212:14;;9188:491;;;-1:-1:-1;9696:6:87;;8692:1016;-1:-1:-1;;;;;;8692:1016:87:o;9713:527::-;9789:6;9797;9805;9858:2;9846:9;9837:7;9833:23;9829:32;9826:52;;;9874:1;9871;9864:12;9826:52;9913:9;9900:23;9932:31;9957:5;9932:31;:::i;:::-;9982:5;-1:-1:-1;10039:2:87;10024:18;;10011:32;10052:33;10011:32;10052:33;:::i;:::-;10104:7;-1:-1:-1;10163:2:87;10148:18;;10135:32;10176;10135;10176;:::i;:::-;10227:7;10217:17;;;9713:527;;;;;:::o;10523:319::-;10590:6;10598;10651:2;10639:9;10630:7;10626:23;10622:32;10619:52;;;10667:1;10664;10657:12;10619:52;10706:9;10693:23;10725:31;10750:5;10725:31;:::i;10847:720::-;10934:6;10942;10950;10958;11011:2;10999:9;10990:7;10986:23;10982:32;10979:52;;;11027:1;11024;11017:12;10979:52;11066:9;11053:23;11085:31;11110:5;11085:31;:::i;:::-;11135:5;-1:-1:-1;11191:2:87;11176:18;;11163:32;-1:-1:-1;;;;;11207:30:87;;11204:50;;;11250:1;11247;11240:12;11204:50;11289:58;11339:7;11330:6;11319:9;11315:22;11289:58;:::i;:::-;11366:8;;-1:-1:-1;11263:84:87;-1:-1:-1;;11453:2:87;11438:18;;11425:32;11501:14;11488:28;;11476:41;;11466:69;;11531:1;11528;11521:12;11466:69;10847:720;;;;-1:-1:-1;10847:720:87;;-1:-1:-1;;10847:720:87:o;11840:127::-;11901:10;11896:3;11892:20;11889:1;11882:31;11932:4;11929:1;11922:15;11956:4;11953:1;11946:15;11972:245;12030:6;12083:2;12071:9;12062:7;12058:23;12054:32;12051:52;;;12099:1;12096;12089:12;12051:52;12138:9;12125:23;12157:30;12181:5;12157:30;:::i;12831:267::-;12920:6;12915:3;12908:19;12972:6;12965:5;12958:4;12953:3;12949:14;12936:43;-1:-1:-1;13024:1:87;12999:16;;;13017:4;12995:27;;;12988:38;;;;13080:2;13059:15;;;-1:-1:-1;;13055:29:87;13046:39;;;13042:50;;12831:267::o;13103:247::-;13262:2;13251:9;13244:21;13225:4;13282:62;13340:2;13329:9;13325:18;13317:6;13309;13282:62;:::i;:::-;13274:70;13103:247;-1:-1:-1;;;;13103:247:87:o;13355:249::-;13424:6;13477:2;13465:9;13456:7;13452:23;13448:32;13445:52;;;13493:1;13490;13483:12;13445:52;13525:9;13519:16;13544:30;13568:5;13544:30;:::i;13609:439::-;-1:-1:-1;;;;;13822:32:87;;;13804:51;;13891:32;;13886:2;13871:18;;13864:60;13960:2;13955;13940:18;;13933:30;;;-1:-1:-1;;13980:62:87;;14023:18;;14015:6;14007;13980:62;:::i;:::-;13972:70;13609:439;-1:-1:-1;;;;;;13609:439:87:o;14053:127::-;14114:10;14109:3;14105:20;14102:1;14095:31;14145:4;14142:1;14135:15;14169:4;14166:1;14159:15;14318:331;14423:9;14434;14476:8;14464:10;14461:24;14458:44;;;14498:1;14495;14488:12;14458:44;14527:6;14517:8;14514:20;14511:40;;;14547:1;14544;14537:12;14511:40;-1:-1:-1;;14573:23:87;;;14618:25;;;;;-1:-1:-1;14318:331:87:o;14654:127::-;14715:10;14710:3;14706:20;14703:1;14696:31;14746:4;14743:1;14736:15;14770:4;14767:1;14760:15;14786:521;14863:4;14869:6;14929:11;14916:25;15023:2;15019:7;15008:8;14992:14;14988:29;14984:43;14964:18;14960:68;14950:96;;15042:1;15039;15032:12;14950:96;15069:33;;15121:20;;;-1:-1:-1;;;;;;15153:30:87;;15150:50;;;15196:1;15193;15186:12;15150:50;15229:4;15217:17;;-1:-1:-1;15260:14:87;15256:27;;;15246:38;;15243:58;;;15297:1;15294;15287:12;15312:454;15541:6;15533;15528:3;15515:33;15497:3;15576:6;15571:3;15567:16;15603:1;15599:2;15592:13;15634:6;15628:13;15679:6;15672:4;15664:6;15660:17;15656:2;15650:36;15740:1;15705:15;;15729:13;;;15705:15;15312:454;-1:-1:-1;;;;;15312:454:87:o;16270:179::-;16369:14;16338:22;;;16362;;;16334:51;;16397:23;;16394:49;;;16423:18;;:::i;16454:531::-;16705:14;16693:27;;16675:46;;-1:-1:-1;;;;;16757:32:87;;;16752:2;16737:18;;16730:60;16826:32;;16821:2;16806:18;;16799:60;16895:3;16890:2;16875:18;;16868:31;;;-1:-1:-1;;16916:63:87;;16959:19;;16951:6;16943;16916:63;:::i;:::-;16908:71;16454:531;-1:-1:-1;;;;;;;16454:531:87:o;17499:338::-;17619:19;;-1:-1:-1;;;;;;17656:29:87;;;17705:1;17697:10;;17694:137;;;-1:-1:-1;;;;;;17766:1:87;17762:11;;;;17759:1;17755:19;17751:46;;;17743:55;17739:82;;;;17499:338;-1:-1:-1;;17499:338:87:o;19010:170::-;19107:10;19100:18;;;19080;;;19076:43;;19131:20;;19128:46;;;19154:18;;:::i"},"methodIdentifiers":{"ADMIN_ROLE()":"75b238fc","PUBLIC_ROLE()":"3ca7c02a","canCall(address,address,bytes4)":"b7009613","cancel(address,address,bytes)":"d6bb62c6","consumeScheduledOp(address,bytes)":"94c7d7ee","execute(address,bytes)":"1cff79cd","expiration()":"4665096d","getAccess(uint64,address)":"3078f114","getNonce(bytes32)":"4136a33c","getRoleAdmin(uint64)":"530dd456","getRoleGrantDelay(uint64)":"12be8727","getRoleGuardian(uint64)":"0b0a93ba","getSchedule(bytes32)":"3adc277a","getTargetAdminDelay(address)":"4c1da1e2","getTargetFunctionRole(address,bytes4)":"6d5115bd","grantRole(uint64,address,uint32)":"25c471a0","hasRole(uint64,address)":"d1f856ee","hashOperation(address,address,bytes)":"abd9bd2a","isTargetClosed(address)":"a166aa89","labelRole(uint64,string)":"853551b8","minSetback()":"cc1b6c81","multicall(bytes[])":"ac9650d8","renounceRole(uint64,address)":"fe0776f5","revokeRole(uint64,address)":"b7d2b162","schedule(address,bytes,uint48)":"f801a698","setGrantDelay(uint64,uint32)":"a64d95ce","setRoleAdmin(uint64,uint64)":"30cae187","setRoleGuardian(uint64,uint64)":"52962952","setTargetAdminDelay(address,uint32)":"d22b5989","setTargetClosed(address,bool)":"167bd395","setTargetFunctionRole(address,bytes4[],uint64)":"08d6122d","updateAuthority(address,address)":"18ff183c"}},"metadata":"{\"compiler\":{\"version\":\"0.8.30+commit.73712a01\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"inputs\":[{\"internalType\":\"address\",\"name\":\"initialAdmin\",\"type\":\"address\"}],\"stateMutability\":\"nonpayable\",\"type\":\"constructor\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"operationId\",\"type\":\"bytes32\"}],\"name\":\"AccessManagerAlreadyScheduled\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"AccessManagerBadConfirmation\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"operationId\",\"type\":\"bytes32\"}],\"name\":\"AccessManagerExpired\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"initialAdmin\",\"type\":\"address\"}],\"name\":\"AccessManagerInvalidInitialAdmin\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"uint64\",\"name\":\"roleId\",\"type\":\"uint64\"}],\"name\":\"AccessManagerLockedRole\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"operationId\",\"type\":\"bytes32\"}],\"name\":\"AccessManagerNotReady\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"operationId\",\"type\":\"bytes32\"}],\"name\":\"AccessManagerNotScheduled\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"msgsender\",\"type\":\"address\"},{\"internalType\":\"uint64\",\"name\":\"roleId\",\"type\":\"uint64\"}],\"name\":\"AccessManagerUnauthorizedAccount\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"caller\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"target\",\"type\":\"address\"},{\"internalType\":\"bytes4\",\"name\":\"selector\",\"type\":\"bytes4\"}],\"name\":\"AccessManagerUnauthorizedCall\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"msgsender\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"caller\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"target\",\"type\":\"address\"},{\"internalType\":\"bytes4\",\"name\":\"selector\",\"type\":\"bytes4\"}],\"name\":\"AccessManagerUnauthorizedCancel\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"target\",\"type\":\"address\"}],\"name\":\"AccessManagerUnauthorizedConsume\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"target\",\"type\":\"address\"}],\"name\":\"AddressEmptyCode\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"FailedCall\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"balance\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"needed\",\"type\":\"uint256\"}],\"name\":\"InsufficientBalance\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"uint8\",\"name\":\"bits\",\"type\":\"uint8\"},{\"internalType\":\"uint256\",\"name\":\"value\",\"type\":\"uint256\"}],\"name\":\"SafeCastOverflowedUintDowncast\",\"type\":\"error\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"bytes32\",\"name\":\"operationId\",\"type\":\"bytes32\"},{\"indexed\":true,\"internalType\":\"uint32\",\"name\":\"nonce\",\"type\":\"uint32\"}],\"name\":\"OperationCanceled\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"bytes32\",\"name\":\"operationId\",\"type\":\"bytes32\"},{\"indexed\":true,\"internalType\":\"uint32\",\"name\":\"nonce\",\"type\":\"uint32\"}],\"name\":\"OperationExecuted\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"bytes32\",\"name\":\"operationId\",\"type\":\"bytes32\"},{\"indexed\":true,\"internalType\":\"uint32\",\"name\":\"nonce\",\"type\":\"uint32\"},{\"indexed\":false,\"internalType\":\"uint48\",\"name\":\"schedule\",\"type\":\"uint48\"},{\"indexed\":false,\"internalType\":\"address\",\"name\":\"caller\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"address\",\"name\":\"target\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"bytes\",\"name\":\"data\",\"type\":\"bytes\"}],\"name\":\"OperationScheduled\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"uint64\",\"name\":\"roleId\",\"type\":\"uint64\"},{\"indexed\":true,\"internalType\":\"uint64\",\"name\":\"admin\",\"type\":\"uint64\"}],\"name\":\"RoleAdminChanged\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"uint64\",\"name\":\"roleId\",\"type\":\"uint64\"},{\"indexed\":false,\"internalType\":\"uint32\",\"name\":\"delay\",\"type\":\"uint32\"},{\"indexed\":false,\"internalType\":\"uint48\",\"name\":\"since\",\"type\":\"uint48\"}],\"name\":\"RoleGrantDelayChanged\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"uint64\",\"name\":\"roleId\",\"type\":\"uint64\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint32\",\"name\":\"delay\",\"type\":\"uint32\"},{\"indexed\":false,\"internalType\":\"uint48\",\"name\":\"since\",\"type\":\"uint48\"},{\"indexed\":false,\"internalType\":\"bool\",\"name\":\"newMember\",\"type\":\"bool\"}],\"name\":\"RoleGranted\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"uint64\",\"name\":\"roleId\",\"type\":\"uint64\"},{\"indexed\":true,\"internalType\":\"uint64\",\"name\":\"guardian\",\"type\":\"uint64\"}],\"name\":\"RoleGuardianChanged\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"uint64\",\"name\":\"roleId\",\"type\":\"uint64\"},{\"indexed\":false,\"internalType\":\"string\",\"name\":\"label\",\"type\":\"string\"}],\"name\":\"RoleLabel\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"uint64\",\"name\":\"roleId\",\"type\":\"uint64\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"}],\"name\":\"RoleRevoked\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"target\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint32\",\"name\":\"delay\",\"type\":\"uint32\"},{\"indexed\":false,\"internalType\":\"uint48\",\"name\":\"since\",\"type\":\"uint48\"}],\"name\":\"TargetAdminDelayUpdated\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"target\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"bool\",\"name\":\"closed\",\"type\":\"bool\"}],\"name\":\"TargetClosed\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"target\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"bytes4\",\"name\":\"selector\",\"type\":\"bytes4\"},{\"indexed\":true,\"internalType\":\"uint64\",\"name\":\"roleId\",\"type\":\"uint64\"}],\"name\":\"TargetFunctionRoleUpdated\",\"type\":\"event\"},{\"inputs\":[],\"name\":\"ADMIN_ROLE\",\"outputs\":[{\"internalType\":\"uint64\",\"name\":\"\",\"type\":\"uint64\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"PUBLIC_ROLE\",\"outputs\":[{\"internalType\":\"uint64\",\"name\":\"\",\"type\":\"uint64\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"caller\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"target\",\"type\":\"address\"},{\"internalType\":\"bytes4\",\"name\":\"selector\",\"type\":\"bytes4\"}],\"name\":\"canCall\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"immediate\",\"type\":\"bool\"},{\"internalType\":\"uint32\",\"name\":\"delay\",\"type\":\"uint32\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"caller\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"target\",\"type\":\"address\"},{\"internalType\":\"bytes\",\"name\":\"data\",\"type\":\"bytes\"}],\"name\":\"cancel\",\"outputs\":[{\"internalType\":\"uint32\",\"name\":\"\",\"type\":\"uint32\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"caller\",\"type\":\"address\"},{\"internalType\":\"bytes\",\"name\":\"data\",\"type\":\"bytes\"}],\"name\":\"consumeScheduledOp\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"target\",\"type\":\"address\"},{\"internalType\":\"bytes\",\"name\":\"data\",\"type\":\"bytes\"}],\"name\":\"execute\",\"outputs\":[{\"internalType\":\"uint32\",\"name\":\"\",\"type\":\"uint32\"}],\"stateMutability\":\"payable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"expiration\",\"outputs\":[{\"internalType\":\"uint32\",\"name\":\"\",\"type\":\"uint32\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint64\",\"name\":\"roleId\",\"type\":\"uint64\"},{\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"}],\"name\":\"getAccess\",\"outputs\":[{\"internalType\":\"uint48\",\"name\":\"since\",\"type\":\"uint48\"},{\"internalType\":\"uint32\",\"name\":\"currentDelay\",\"type\":\"uint32\"},{\"internalType\":\"uint32\",\"name\":\"pendingDelay\",\"type\":\"uint32\"},{\"internalType\":\"uint48\",\"name\":\"effect\",\"type\":\"uint48\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"id\",\"type\":\"bytes32\"}],\"name\":\"getNonce\",\"outputs\":[{\"internalType\":\"uint32\",\"name\":\"\",\"type\":\"uint32\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint64\",\"name\":\"roleId\",\"type\":\"uint64\"}],\"name\":\"getRoleAdmin\",\"outputs\":[{\"internalType\":\"uint64\",\"name\":\"\",\"type\":\"uint64\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint64\",\"name\":\"roleId\",\"type\":\"uint64\"}],\"name\":\"getRoleGrantDelay\",\"outputs\":[{\"internalType\":\"uint32\",\"name\":\"\",\"type\":\"uint32\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint64\",\"name\":\"roleId\",\"type\":\"uint64\"}],\"name\":\"getRoleGuardian\",\"outputs\":[{\"internalType\":\"uint64\",\"name\":\"\",\"type\":\"uint64\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"id\",\"type\":\"bytes32\"}],\"name\":\"getSchedule\",\"outputs\":[{\"internalType\":\"uint48\",\"name\":\"\",\"type\":\"uint48\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"target\",\"type\":\"address\"}],\"name\":\"getTargetAdminDelay\",\"outputs\":[{\"internalType\":\"uint32\",\"name\":\"\",\"type\":\"uint32\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"target\",\"type\":\"address\"},{\"internalType\":\"bytes4\",\"name\":\"selector\",\"type\":\"bytes4\"}],\"name\":\"getTargetFunctionRole\",\"outputs\":[{\"internalType\":\"uint64\",\"name\":\"\",\"type\":\"uint64\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint64\",\"name\":\"roleId\",\"type\":\"uint64\"},{\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"},{\"internalType\":\"uint32\",\"name\":\"executionDelay\",\"type\":\"uint32\"}],\"name\":\"grantRole\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint64\",\"name\":\"roleId\",\"type\":\"uint64\"},{\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"}],\"name\":\"hasRole\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"isMember\",\"type\":\"bool\"},{\"internalType\":\"uint32\",\"name\":\"executionDelay\",\"type\":\"uint32\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"caller\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"target\",\"type\":\"address\"},{\"internalType\":\"bytes\",\"name\":\"data\",\"type\":\"bytes\"}],\"name\":\"hashOperation\",\"outputs\":[{\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"target\",\"type\":\"address\"}],\"name\":\"isTargetClosed\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint64\",\"name\":\"roleId\",\"type\":\"uint64\"},{\"internalType\":\"string\",\"name\":\"label\",\"type\":\"string\"}],\"name\":\"labelRole\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"minSetback\",\"outputs\":[{\"internalType\":\"uint32\",\"name\":\"\",\"type\":\"uint32\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes[]\",\"name\":\"data\",\"type\":\"bytes[]\"}],\"name\":\"multicall\",\"outputs\":[{\"internalType\":\"bytes[]\",\"name\":\"results\",\"type\":\"bytes[]\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint64\",\"name\":\"roleId\",\"type\":\"uint64\"},{\"internalType\":\"address\",\"name\":\"callerConfirmation\",\"type\":\"address\"}],\"name\":\"renounceRole\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint64\",\"name\":\"roleId\",\"type\":\"uint64\"},{\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"}],\"name\":\"revokeRole\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"target\",\"type\":\"address\"},{\"internalType\":\"bytes\",\"name\":\"data\",\"type\":\"bytes\"},{\"internalType\":\"uint48\",\"name\":\"when\",\"type\":\"uint48\"}],\"name\":\"schedule\",\"outputs\":[{\"internalType\":\"bytes32\",\"name\":\"operationId\",\"type\":\"bytes32\"},{\"internalType\":\"uint32\",\"name\":\"nonce\",\"type\":\"uint32\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint64\",\"name\":\"roleId\",\"type\":\"uint64\"},{\"internalType\":\"uint32\",\"name\":\"newDelay\",\"type\":\"uint32\"}],\"name\":\"setGrantDelay\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint64\",\"name\":\"roleId\",\"type\":\"uint64\"},{\"internalType\":\"uint64\",\"name\":\"admin\",\"type\":\"uint64\"}],\"name\":\"setRoleAdmin\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint64\",\"name\":\"roleId\",\"type\":\"uint64\"},{\"internalType\":\"uint64\",\"name\":\"guardian\",\"type\":\"uint64\"}],\"name\":\"setRoleGuardian\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"target\",\"type\":\"address\"},{\"internalType\":\"uint32\",\"name\":\"newDelay\",\"type\":\"uint32\"}],\"name\":\"setTargetAdminDelay\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"target\",\"type\":\"address\"},{\"internalType\":\"bool\",\"name\":\"closed\",\"type\":\"bool\"}],\"name\":\"setTargetClosed\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"target\",\"type\":\"address\"},{\"internalType\":\"bytes4[]\",\"name\":\"selectors\",\"type\":\"bytes4[]\"},{\"internalType\":\"uint64\",\"name\":\"roleId\",\"type\":\"uint64\"}],\"name\":\"setTargetFunctionRole\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"target\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"newAuthority\",\"type\":\"address\"}],\"name\":\"updateAuthority\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"}],\"devdoc\":{\"details\":\"AccessManager is a central contract to store the permissions of a system. A smart contract under the control of an AccessManager instance is known as a target, and will inherit from the {AccessManaged} contract, be connected to this contract as its manager and implement the {AccessManaged-restricted} modifier on a set of functions selected to be permissioned. Note that any function without this setup won't be effectively restricted. The restriction rules for such functions are defined in terms of \\\"roles\\\" identified by an `uint64` and scoped by target (`address`) and function selectors (`bytes4`). These roles are stored in this contract and can be configured by admins (`ADMIN_ROLE` members) after a delay (see {getTargetAdminDelay}). For each target contract, admins can configure the following without any delay: * The target's {AccessManaged-authority} via {updateAuthority}. * Close or open a target via {setTargetClosed} keeping the permissions intact. * The roles that are allowed (or disallowed) to call a given function (identified by its selector) through {setTargetFunctionRole}. By default every address is member of the `PUBLIC_ROLE` and every target function is restricted to the `ADMIN_ROLE` until configured otherwise. Additionally, each role has the following configuration options restricted to this manager's admins: * A role's admin role via {setRoleAdmin} who can grant or revoke roles. * A role's guardian role via {setRoleGuardian} who's allowed to cancel operations. * A delay in which a role takes effect after being granted through {setGrantDelay}. * A delay of any target's admin action via {setTargetAdminDelay}. * A role label for discoverability purposes with {labelRole}. Any account can be added and removed into any number of these roles by using the {grantRole} and {revokeRole} functions restricted to each role's admin (see {getRoleAdmin}). Since all the permissions of the managed system can be modified by the admins of this instance, it is expected that they will be highly secured (e.g., a multisig or a well-configured DAO). NOTE: This contract implements a form of the {IAuthority} interface, but {canCall} has additional return data so it doesn't inherit `IAuthority`. It is however compatible with the `IAuthority` interface since the first 32 bytes of the return data are a boolean as expected by that interface. NOTE: Systems that implement other access control mechanisms (for example using {Ownable}) can be paired with an {AccessManager} by transferring permissions (ownership in the case of {Ownable}) directly to the {AccessManager}. Users will be able to interact with these contracts through the {execute} function, following the access rules registered in the {AccessManager}. Keep in mind that in that context, the msg.sender seen by restricted functions will be {AccessManager} itself. WARNING: When granting permissions over an {Ownable} or {AccessControl} contract to an {AccessManager}, be very mindful of the danger associated with functions such as {Ownable-renounceOwnership} or {AccessControl-renounceRole}.\",\"errors\":{\"AddressEmptyCode(address)\":[{\"details\":\"There's no code at `target` (it is not a contract).\"}],\"FailedCall()\":[{\"details\":\"A call to an address target failed. The target may have reverted.\"}],\"InsufficientBalance(uint256,uint256)\":[{\"details\":\"The ETH balance of the account is not enough to perform the operation.\"}],\"SafeCastOverflowedUintDowncast(uint8,uint256)\":[{\"details\":\"Value doesn't fit in an uint of `bits` size.\"}]},\"events\":{\"OperationCanceled(bytes32,uint32)\":{\"details\":\"A scheduled operation was canceled.\"},\"OperationExecuted(bytes32,uint32)\":{\"details\":\"A scheduled operation was executed.\"},\"OperationScheduled(bytes32,uint32,uint48,address,address,bytes)\":{\"details\":\"A delayed operation was scheduled.\"},\"RoleAdminChanged(uint64,uint64)\":{\"details\":\"Role acting as admin over a given `roleId` is updated.\"},\"RoleGrantDelayChanged(uint64,uint32,uint48)\":{\"details\":\"Grant delay for a given `roleId` will be updated to `delay` when `since` is reached.\"},\"RoleGranted(uint64,address,uint32,uint48,bool)\":{\"details\":\"Emitted when `account` is granted `roleId`. NOTE: The meaning of the `since` argument depends on the `newMember` argument. If the role is granted to a new member, the `since` argument indicates when the account becomes a member of the role, otherwise it indicates the execution delay for this account and roleId is updated.\"},\"RoleGuardianChanged(uint64,uint64)\":{\"details\":\"Role acting as guardian over a given `roleId` is updated.\"},\"RoleLabel(uint64,string)\":{\"details\":\"Informational labelling for a roleId.\"},\"RoleRevoked(uint64,address)\":{\"details\":\"Emitted when `account` membership or `roleId` is revoked. Unlike granting, revoking is instantaneous.\"},\"TargetAdminDelayUpdated(address,uint32,uint48)\":{\"details\":\"Admin delay for a given `target` will be updated to `delay` when `since` is reached.\"},\"TargetClosed(address,bool)\":{\"details\":\"Target mode is updated (true = closed, false = open).\"},\"TargetFunctionRoleUpdated(address,bytes4,uint64)\":{\"details\":\"Role required to invoke `selector` on `target` is updated to `roleId`.\"}},\"kind\":\"dev\",\"methods\":{\"canCall(address,address,bytes4)\":{\"details\":\"Check if an address (`caller`) is authorised to call a given function on a given contract directly (with no restriction). Additionally, it returns the delay needed to perform the call indirectly through the {schedule} & {execute} workflow. This function is usually called by the targeted contract to control immediate execution of restricted functions. Therefore we only return true if the call can be performed without any delay. If the call is subject to a previously set delay (not zero), then the function should return false and the caller should schedule the operation for future execution. If `allowed` is true, the delay can be disregarded and the operation can be immediately executed, otherwise the operation can be executed if and only if delay is greater than 0. NOTE: The IAuthority interface does not include the `uint32` delay. This is an extension of that interface that is backward compatible. Some contracts may thus ignore the second return argument. In that case they will fail to identify the indirect workflow, and will consider calls that require a delay to be forbidden. NOTE: This function does not report the permissions of the admin functions in the manager itself. These are defined by the {AccessManager} documentation.\"},\"cancel(address,address,bytes)\":{\"details\":\"Cancel a scheduled (delayed) operation. Returns the nonce that identifies the previously scheduled operation that is cancelled. Requirements: - the caller must be the proposer, a guardian of the targeted function, or a global admin Emits a {OperationCanceled} event.\"},\"consumeScheduledOp(address,bytes)\":{\"details\":\"Consume a scheduled operation targeting the caller. If such an operation exists, mark it as consumed (emit an {OperationExecuted} event and clean the state). Otherwise, throw an error. This is useful for contracts that want to enforce that calls targeting them were scheduled on the manager, with all the verifications that it implies. Emit a {OperationExecuted} event.\"},\"execute(address,bytes)\":{\"details\":\"Execute a function that is delay restricted, provided it was properly scheduled beforehand, or the execution delay is 0. Returns the nonce that identifies the previously scheduled operation that is executed, or 0 if the operation wasn't previously scheduled (if the caller doesn't have an execution delay). Emits an {OperationExecuted} event only if the call was scheduled and delayed.\"},\"expiration()\":{\"details\":\"Expiration delay for scheduled proposals. Defaults to 1 week. IMPORTANT: Avoid overriding the expiration with 0. Otherwise every contract proposal will be expired immediately, disabling any scheduling usage.\"},\"getAccess(uint64,address)\":{\"details\":\"Get the access details for a given account for a given role. These details include the timepoint at which membership becomes active, and the delay applied to all operations by this user that requires this permission level. Returns: [0] Timestamp at which the account membership becomes valid. 0 means role is not granted. [1] Current execution delay for the account. [2] Pending execution delay for the account. [3] Timestamp at which the pending execution delay will become active. 0 means no delay update is scheduled.\"},\"getNonce(bytes32)\":{\"details\":\"Return the nonce for the latest scheduled operation with a given id. Returns 0 if the operation has never been scheduled.\"},\"getRoleAdmin(uint64)\":{\"details\":\"Get the id of the role that acts as an admin for the given role. The admin permission is required to grant the role, revoke the role and update the execution delay to execute an operation that is restricted to this role.\"},\"getRoleGrantDelay(uint64)\":{\"details\":\"Get the role current grant delay. Its value may change at any point without an event emitted following a call to {setGrantDelay}. Changes to this value, including effect timepoint are notified in advance by the {RoleGrantDelayChanged} event.\"},\"getRoleGuardian(uint64)\":{\"details\":\"Get the role that acts as a guardian for a given role. The guardian permission allows canceling operations that have been scheduled under the role.\"},\"getSchedule(bytes32)\":{\"details\":\"Return the timepoint at which a scheduled operation will be ready for execution. This returns 0 if the operation is not yet scheduled, has expired, was executed, or was canceled.\"},\"getTargetAdminDelay(address)\":{\"details\":\"Get the admin delay for a target contract. Changes to contract configuration are subject to this delay.\"},\"getTargetFunctionRole(address,bytes4)\":{\"details\":\"Get the role required to call a function.\"},\"grantRole(uint64,address,uint32)\":{\"details\":\"Add `account` to `roleId`, or change its execution delay. This gives the account the authorization to call any function that is restricted to this role. An optional execution delay (in seconds) can be set. If that delay is non 0, the user is required to schedule any operation that is restricted to members of this role. The user will only be able to execute the operation after the delay has passed, before it has expired. During this period, admin and guardians can cancel the operation (see {cancel}). If the account has already been granted this role, the execution delay will be updated. This update is not immediate and follows the delay rules. For example, if a user currently has a delay of 3 hours, and this is called to reduce that delay to 1 hour, the new delay will take some time to take effect, enforcing that any operation executed in the 3 hours that follows this update was indeed scheduled before this update. Requirements: - the caller must be an admin for the role (see {getRoleAdmin}) - granted role must not be the `PUBLIC_ROLE` Emits a {RoleGranted} event.\"},\"hasRole(uint64,address)\":{\"details\":\"Check if a given account currently has the permission level corresponding to a given role. Note that this permission might be associated with an execution delay. {getAccess} can provide more details.\"},\"hashOperation(address,address,bytes)\":{\"details\":\"Hashing function for delayed operations.\"},\"isTargetClosed(address)\":{\"details\":\"Get whether the contract is closed disabling any access. Otherwise role permissions are applied. NOTE: When the manager itself is closed, admin functions are still accessible to avoid locking the contract.\"},\"labelRole(uint64,string)\":{\"details\":\"Give a label to a role, for improved role discoverability by UIs. Requirements: - the caller must be a global admin Emits a {RoleLabel} event.\"},\"minSetback()\":{\"details\":\"Minimum setback for all delay updates, with the exception of execution delays. It can be increased without setback (and reset via {revokeRole} in the event of an accidental increase). Defaults to 5 days.\"},\"multicall(bytes[])\":{\"custom:oz-upgrades-unsafe-allow-reachable\":\"delegatecall\",\"details\":\"Receives and executes a batch of function calls on this contract.\"},\"renounceRole(uint64,address)\":{\"details\":\"Renounce role permissions for the calling account with immediate effect. If the sender is not in the role this call has no effect. Requirements: - the caller must be `callerConfirmation`. Emits a {RoleRevoked} event if the account had the role.\"},\"revokeRole(uint64,address)\":{\"details\":\"Remove an account from a role, with immediate effect. If the account does not have the role, this call has no effect. Requirements: - the caller must be an admin for the role (see {getRoleAdmin}) - revoked role must not be the `PUBLIC_ROLE` Emits a {RoleRevoked} event if the account had the role.\"},\"schedule(address,bytes,uint48)\":{\"details\":\"Schedule a delayed operation for future execution, and return the operation identifier. It is possible to choose the timestamp at which the operation becomes executable as long as it satisfies the execution delays required for the caller. The special value zero will automatically set the earliest possible time. Returns the `operationId` that was scheduled. Since this value is a hash of the parameters, it can reoccur when the same parameters are used; if this is relevant, the returned `nonce` can be used to uniquely identify this scheduled operation from other occurrences of the same `operationId` in invocations of {execute} and {cancel}. Emits a {OperationScheduled} event. NOTE: It is not possible to concurrently schedule more than one operation with the same `target` and `data`. If this is necessary, a random byte can be appended to `data` to act as a salt that will be ignored by the target contract if it is using standard Solidity ABI encoding.\"},\"setGrantDelay(uint64,uint32)\":{\"details\":\"Update the delay for granting a `roleId`. Requirements: - the caller must be a global admin Emits a {RoleGrantDelayChanged} event.\"},\"setRoleAdmin(uint64,uint64)\":{\"details\":\"Change admin role for a given role. Requirements: - the caller must be a global admin Emits a {RoleAdminChanged} event\"},\"setRoleGuardian(uint64,uint64)\":{\"details\":\"Change guardian role for a given role. Requirements: - the caller must be a global admin Emits a {RoleGuardianChanged} event\"},\"setTargetAdminDelay(address,uint32)\":{\"details\":\"Set the delay for changing the configuration of a given target contract. Requirements: - the caller must be a global admin Emits a {TargetAdminDelayUpdated} event.\"},\"setTargetClosed(address,bool)\":{\"details\":\"Set the closed flag for a contract. Closing the manager itself won't disable access to admin methods to avoid locking the contract. Requirements: - the caller must be a global admin Emits a {TargetClosed} event.\"},\"setTargetFunctionRole(address,bytes4[],uint64)\":{\"details\":\"Set the role required to call functions identified by the `selectors` in the `target` contract. Requirements: - the caller must be a global admin Emits a {TargetFunctionRoleUpdated} event per selector.\"},\"updateAuthority(address,address)\":{\"details\":\"Changes the authority of a target managed by this manager instance. Requirements: - the caller must be a global admin\"}},\"stateVariables\":{\"ADMIN_ROLE\":{\"details\":\"The identifier of the admin role. Required to perform most configuration operations including other roles' management and target restrictions.\"},\"PUBLIC_ROLE\":{\"details\":\"The identifier of the public role. Automatically granted to all addresses with no delay.\"}},\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{},\"version\":1}},\"settings\":{\"compilationTarget\":{\"@openzeppelin/contracts/access/manager/AccessManager.sol\":\"AccessManager\"},\"evmVersion\":\"prague\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"enabled\":true,\"runs\":200},\"remappings\":[]},\"sources\":{\"@openzeppelin/contracts/access/manager/AccessManager.sol\":{\"keccak256\":\"0xb3c26f8cf9921ba0e73cbe23346d5cf3b765ff3933f89e0684e03667aeb54523\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://335bbeb612a6db2f2b41d9f8b282fef5711540dbdc68920ee500a75796397f2c\",\"dweb:/ipfs/QmZSAzYsCu3HTQikU6tvMAurvdkQV2rDvpJoskSegwmNEE\"]},\"@openzeppelin/contracts/access/manager/IAccessManaged.sol\":{\"keccak256\":\"0x1121e070554cffc6d536f658332a1a3d65fb2ea5573cd774f4ecbd02a2fcf4b7\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://6913b339d10018d60322c56faa6d6455e707b3c46a15261b639389a710a42ff3\",\"dweb:/ipfs/QmXrKvfnS5hnXACEzu1Kd4DBBW2gJm2Tg2tFpLynhvuTUM\"]},\"@openzeppelin/contracts/access/manager/IAccessManager.sol\":{\"keccak256\":\"0x71e3e350e83af0018a1683cc2ce4c13893cc01f78e5c9c305f6828608ffcfa18\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://0a7b521c9999007715c9bdedffaad2ef7d2ccfa07bca2a39ba9e0c2e8a944a63\",\"dweb:/ipfs/QmamPG6Y1p7iZh4cF8Hfp3oufowSRyB3S3DisTKkmVWSai\"]},\"@openzeppelin/contracts/utils/Address.sol\":{\"keccak256\":\"0x0fa9e0d3a859900b5a46f70a03c73adf259603d5e05027a37fe0b45529d85346\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://c2add4da0240c9f2ce47649c8bb6b11b40e98cf6f88b8bdc76b2704e89391710\",\"dweb:/ipfs/QmNQTwF2uVzu4CRtNxr8bxyP9XuW6VsZuo2Nr4KR2bZr3d\"]},\"@openzeppelin/contracts/utils/Context.sol\":{\"keccak256\":\"0x493033a8d1b176a037b2cc6a04dad01a5c157722049bbecf632ca876224dd4b2\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://6a708e8a5bdb1011c2c381c9a5cfd8a9a956d7d0a9dc1bd8bcdaf52f76ef2f12\",\"dweb:/ipfs/Qmax9WHBnVsZP46ZxEMNRQpLQnrdE4dK8LehML1Py8FowF\"]},\"@openzeppelin/contracts/utils/Errors.sol\":{\"keccak256\":\"0x6afa713bfd42cf0f7656efa91201007ac465e42049d7de1d50753a373648c123\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://ba1d02f4847670a1b83dec9f7d37f0b0418d6043447b69f3a29a5f9efc547fcf\",\"dweb:/ipfs/QmQ7iH2keLNUKgq2xSWcRmuBE5eZ3F5whYAkAGzCNNoEWB\"]},\"@openzeppelin/contracts/utils/LowLevelCall.sol\":{\"keccak256\":\"0x5b4802a4352474792df3107e961d1cc593e47b820c14f69d3505cb28f5a6a583\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://a6f86fd01f829499fe0545ff5dda07d4521988e88bfe0bf801fc15650921ed56\",\"dweb:/ipfs/QmUUKu4ZDffHAmfkf3asuQfmLTyfpuy2Amdncc3SqfzKPG\"]},\"@openzeppelin/contracts/utils/Multicall.sol\":{\"keccak256\":\"0x72a5499dfae7676e4298a7299bccd3b27438ba1a4c72df5cd69c1c343c7ea20d\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://de0fb51ccae3a0ff377ed185d187440fc612a71bf8e42fdb0e032ce747fa3eef\",\"dweb:/ipfs/QmPNBaiVsAiUhz8qfXcSy27S7CqBbtSd8rPqmaykKBhw7Q\"]},\"@openzeppelin/contracts/utils/Panic.sol\":{\"keccak256\":\"0xf7fe324703a64fc51702311dc51562d5cb1497734f074e4f483bfb6717572d7a\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://c6a5ff4f9fd8649b7ee20800b7fa387d3465bd77cf20c2d1068cd5c98e1ed57a\",\"dweb:/ipfs/QmVSaVJf9FXFhdYEYeCEfjMVHrxDh5qL4CGkxdMWpQCrqG\"]},\"@openzeppelin/contracts/utils/cryptography/Hashes.sol\":{\"keccak256\":\"0x8cbd338f083224b4b6f0ff42cbda641a0a6c31ffcdca197452b97fe4d0918269\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://f517dec5ba0c6491395acbf7f1d621f4e89e8f218bf5303c867b1c5ad70c6b11\",\"dweb:/ipfs/QmWmXHRLEw8W6ckth7NyYTU88YfvuS7xSsfae5ksL8qNUe\"]},\"@openzeppelin/contracts/utils/math/Math.sol\":{\"keccak256\":\"0x09e3f1c72d4c5cbe8e2644ab7313f8f7177533ae2f4c24cdcbbeaf520a73734c\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://93208401215d539fa2d81626b207c1f611def7883d0e447b3b5969ebaa7b3c2c\",\"dweb:/ipfs/QmXPxDnQPx8LAweX5ZJqEcwkvs59kP4c64VVDG1Jjq1mef\"]},\"@openzeppelin/contracts/utils/math/SafeCast.sol\":{\"keccak256\":\"0x195533c86d0ef72bcc06456a4f66a9b941f38eb403739b00f21fd7c1abd1ae54\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://b1d578337048cad08c1c03041cca5978eff5428aa130c781b271ad9e5566e1f8\",\"dweb:/ipfs/QmPFKL2r9CBsMwmUqqdcFPfHZB2qcs9g1HDrPxzWSxomvy\"]},\"@openzeppelin/contracts/utils/types/Time.sol\":{\"keccak256\":\"0x3765cc1833212456000f02d5de0478c2055b5f318e27032537c6d47c91e68b05\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://3e77d9fd11b604fb3820ba6794f1e2516deb1093dada1c7225da6c46def95256\",\"dweb:/ipfs/QmcqQo9mmD5kekxFtJcvZTyCPaEgxQsSVfp7wLiE91fdAc\"]}},\"version\":1}","storageLayout":{"storage":[{"astId":4556,"contract":"@openzeppelin/contracts/access/manager/AccessManager.sol:AccessManager","label":"_targets","offset":0,"slot":"0","type":"t_mapping(t_address,t_struct(TargetConfig)4511_storage)"},{"astId":4561,"contract":"@openzeppelin/contracts/access/manager/AccessManager.sol:AccessManager","label":"_roles","offset":0,"slot":"1","type":"t_mapping(t_uint64,t_struct(Role)4530_storage)"},{"astId":4566,"contract":"@openzeppelin/contracts/access/manager/AccessManager.sol:AccessManager","label":"_schedules","offset":0,"slot":"2","type":"t_mapping(t_bytes32,t_struct(Schedule)4535_storage)"},{"astId":4568,"contract":"@openzeppelin/contracts/access/manager/AccessManager.sol:AccessManager","label":"_executionId","offset":0,"slot":"3","type":"t_bytes32"}],"types":{"t_address":{"encoding":"inplace","label":"address","numberOfBytes":"20"},"t_bool":{"encoding":"inplace","label":"bool","numberOfBytes":"1"},"t_bytes32":{"encoding":"inplace","label":"bytes32","numberOfBytes":"32"},"t_bytes4":{"encoding":"inplace","label":"bytes4","numberOfBytes":"4"},"t_mapping(t_address,t_struct(Access)4517_storage)":{"encoding":"mapping","key":"t_address","label":"mapping(address => struct AccessManager.Access)","numberOfBytes":"32","value":"t_struct(Access)4517_storage"},"t_mapping(t_address,t_struct(TargetConfig)4511_storage)":{"encoding":"mapping","key":"t_address","label":"mapping(address => struct AccessManager.TargetConfig)","numberOfBytes":"32","value":"t_struct(TargetConfig)4511_storage"},"t_mapping(t_bytes32,t_struct(Schedule)4535_storage)":{"encoding":"mapping","key":"t_bytes32","label":"mapping(bytes32 => struct AccessManager.Schedule)","numberOfBytes":"32","value":"t_struct(Schedule)4535_storage"},"t_mapping(t_bytes4,t_uint64)":{"encoding":"mapping","key":"t_bytes4","label":"mapping(bytes4 => uint64)","numberOfBytes":"32","value":"t_uint64"},"t_mapping(t_uint64,t_struct(Role)4530_storage)":{"encoding":"mapping","key":"t_uint64","label":"mapping(uint64 => struct AccessManager.Role)","numberOfBytes":"32","value":"t_struct(Role)4530_storage"},"t_struct(Access)4517_storage":{"encoding":"inplace","label":"struct AccessManager.Access","members":[{"astId":4513,"contract":"@openzeppelin/contracts/access/manager/AccessManager.sol:AccessManager","label":"since","offset":0,"slot":"0","type":"t_uint48"},{"astId":4516,"contract":"@openzeppelin/contracts/access/manager/AccessManager.sol:AccessManager","label":"delay","offset":6,"slot":"0","type":"t_userDefinedValueType(Delay)14528"}],"numberOfBytes":"32"},"t_struct(Role)4530_storage":{"encoding":"inplace","label":"struct AccessManager.Role","members":[{"astId":4522,"contract":"@openzeppelin/contracts/access/manager/AccessManager.sol:AccessManager","label":"members","offset":0,"slot":"0","type":"t_mapping(t_address,t_struct(Access)4517_storage)"},{"astId":4524,"contract":"@openzeppelin/contracts/access/manager/AccessManager.sol:AccessManager","label":"admin","offset":0,"slot":"1","type":"t_uint64"},{"astId":4526,"contract":"@openzeppelin/contracts/access/manager/AccessManager.sol:AccessManager","label":"guardian","offset":8,"slot":"1","type":"t_uint64"},{"astId":4529,"contract":"@openzeppelin/contracts/access/manager/AccessManager.sol:AccessManager","label":"grantDelay","offset":16,"slot":"1","type":"t_userDefinedValueType(Delay)14528"}],"numberOfBytes":"64"},"t_struct(Schedule)4535_storage":{"encoding":"inplace","label":"struct AccessManager.Schedule","members":[{"astId":4532,"contract":"@openzeppelin/contracts/access/manager/AccessManager.sol:AccessManager","label":"timepoint","offset":0,"slot":"0","type":"t_uint48"},{"astId":4534,"contract":"@openzeppelin/contracts/access/manager/AccessManager.sol:AccessManager","label":"nonce","offset":6,"slot":"0","type":"t_uint32"}],"numberOfBytes":"32"},"t_struct(TargetConfig)4511_storage":{"encoding":"inplace","label":"struct AccessManager.TargetConfig","members":[{"astId":4505,"contract":"@openzeppelin/contracts/access/manager/AccessManager.sol:AccessManager","label":"allowedRoles","offset":0,"slot":"0","type":"t_mapping(t_bytes4,t_uint64)"},{"astId":4508,"contract":"@openzeppelin/contracts/access/manager/AccessManager.sol:AccessManager","label":"adminDelay","offset":0,"slot":"1","type":"t_userDefinedValueType(Delay)14528"},{"astId":4510,"contract":"@openzeppelin/contracts/access/manager/AccessManager.sol:AccessManager","label":"closed","offset":14,"slot":"1","type":"t_bool"}],"numberOfBytes":"64"},"t_uint32":{"encoding":"inplace","label":"uint32","numberOfBytes":"4"},"t_uint48":{"encoding":"inplace","label":"uint48","numberOfBytes":"6"},"t_uint64":{"encoding":"inplace","label":"uint64","numberOfBytes":"8"},"t_userDefinedValueType(Delay)14528":{"encoding":"inplace","label":"Time.Delay","numberOfBytes":"14"}}}}},"@openzeppelin/contracts/access/manager/IAccessManaged.sol":{"IAccessManaged":{"abi":[{"inputs":[{"internalType":"address","name":"authority","type":"address"}],"name":"AccessManagedInvalidAuthority","type":"error"},{"inputs":[{"internalType":"address","name":"caller","type":"address"},{"internalType":"uint32","name":"delay","type":"uint32"}],"name":"AccessManagedRequiredDelay","type":"error"},{"inputs":[{"internalType":"address","name":"caller","type":"address"}],"name":"AccessManagedUnauthorized","type":"error"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"address","name":"authority","type":"address"}],"name":"AuthorityUpdated","type":"event"},{"inputs":[],"name":"authority","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"isConsumingScheduledOp","outputs":[{"internalType":"bytes4","name":"","type":"bytes4"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"setAuthority","outputs":[],"stateMutability":"nonpayable","type":"function"}],"evm":{"bytecode":{"functionDebugData":{},"generatedSources":[],"linkReferences":{},"object":"","opcodes":"","sourceMap":""},"deployedBytecode":{"functionDebugData":{},"generatedSources":[],"immutableReferences":{},"linkReferences":{},"object":"","opcodes":"","sourceMap":""},"methodIdentifiers":{"authority()":"bf7e214f","isConsumingScheduledOp()":"8fb36037","setAuthority(address)":"7a9e5e4b"}},"metadata":"{\"compiler\":{\"version\":\"0.8.30+commit.73712a01\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"inputs\":[{\"internalType\":\"address\",\"name\":\"authority\",\"type\":\"address\"}],\"name\":\"AccessManagedInvalidAuthority\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"caller\",\"type\":\"address\"},{\"internalType\":\"uint32\",\"name\":\"delay\",\"type\":\"uint32\"}],\"name\":\"AccessManagedRequiredDelay\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"caller\",\"type\":\"address\"}],\"name\":\"AccessManagedUnauthorized\",\"type\":\"error\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"address\",\"name\":\"authority\",\"type\":\"address\"}],\"name\":\"AuthorityUpdated\",\"type\":\"event\"},{\"inputs\":[],\"name\":\"authority\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"isConsumingScheduledOp\",\"outputs\":[{\"internalType\":\"bytes4\",\"name\":\"\",\"type\":\"bytes4\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"name\":\"setAuthority\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"}],\"devdoc\":{\"events\":{\"AuthorityUpdated(address)\":{\"details\":\"Authority that manages this contract was updated.\"}},\"kind\":\"dev\",\"methods\":{\"authority()\":{\"details\":\"Returns the current authority.\"},\"isConsumingScheduledOp()\":{\"details\":\"Returns true only in the context of a delayed restricted call, at the moment that the scheduled operation is being consumed. Prevents denial of service for delayed restricted calls in the case that the contract performs attacker controlled calls.\"},\"setAuthority(address)\":{\"details\":\"Transfers control to a new authority. The caller must be the current authority.\"}},\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{},\"version\":1}},\"settings\":{\"compilationTarget\":{\"@openzeppelin/contracts/access/manager/IAccessManaged.sol\":\"IAccessManaged\"},\"evmVersion\":\"prague\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"enabled\":true,\"runs\":200},\"remappings\":[]},\"sources\":{\"@openzeppelin/contracts/access/manager/IAccessManaged.sol\":{\"keccak256\":\"0x1121e070554cffc6d536f658332a1a3d65fb2ea5573cd774f4ecbd02a2fcf4b7\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://6913b339d10018d60322c56faa6d6455e707b3c46a15261b639389a710a42ff3\",\"dweb:/ipfs/QmXrKvfnS5hnXACEzu1Kd4DBBW2gJm2Tg2tFpLynhvuTUM\"]}},\"version\":1}","storageLayout":{"storage":[],"types":null}}},"@openzeppelin/contracts/access/manager/IAccessManager.sol":{"IAccessManager":{"abi":[{"inputs":[{"internalType":"bytes32","name":"operationId","type":"bytes32"}],"name":"AccessManagerAlreadyScheduled","type":"error"},{"inputs":[],"name":"AccessManagerBadConfirmation","type":"error"},{"inputs":[{"internalType":"bytes32","name":"operationId","type":"bytes32"}],"name":"AccessManagerExpired","type":"error"},{"inputs":[{"internalType":"address","name":"initialAdmin","type":"address"}],"name":"AccessManagerInvalidInitialAdmin","type":"error"},{"inputs":[{"internalType":"uint64","name":"roleId","type":"uint64"}],"name":"AccessManagerLockedRole","type":"error"},{"inputs":[{"internalType":"bytes32","name":"operationId","type":"bytes32"}],"name":"AccessManagerNotReady","type":"error"},{"inputs":[{"internalType":"bytes32","name":"operationId","type":"bytes32"}],"name":"AccessManagerNotScheduled","type":"error"},{"inputs":[{"internalType":"address","name":"msgsender","type":"address"},{"internalType":"uint64","name":"roleId","type":"uint64"}],"name":"AccessManagerUnauthorizedAccount","type":"error"},{"inputs":[{"internalType":"address","name":"caller","type":"address"},{"internalType":"address","name":"target","type":"address"},{"internalType":"bytes4","name":"selector","type":"bytes4"}],"name":"AccessManagerUnauthorizedCall","type":"error"},{"inputs":[{"internalType":"address","name":"msgsender","type":"address"},{"internalType":"address","name":"caller","type":"address"},{"internalType":"address","name":"target","type":"address"},{"internalType":"bytes4","name":"selector","type":"bytes4"}],"name":"AccessManagerUnauthorizedCancel","type":"error"},{"inputs":[{"internalType":"address","name":"target","type":"address"}],"name":"AccessManagerUnauthorizedConsume","type":"error"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"bytes32","name":"operationId","type":"bytes32"},{"indexed":true,"internalType":"uint32","name":"nonce","type":"uint32"}],"name":"OperationCanceled","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"bytes32","name":"operationId","type":"bytes32"},{"indexed":true,"internalType":"uint32","name":"nonce","type":"uint32"}],"name":"OperationExecuted","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"bytes32","name":"operationId","type":"bytes32"},{"indexed":true,"internalType":"uint32","name":"nonce","type":"uint32"},{"indexed":false,"internalType":"uint48","name":"schedule","type":"uint48"},{"indexed":false,"internalType":"address","name":"caller","type":"address"},{"indexed":false,"internalType":"address","name":"target","type":"address"},{"indexed":false,"internalType":"bytes","name":"data","type":"bytes"}],"name":"OperationScheduled","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"uint64","name":"roleId","type":"uint64"},{"indexed":true,"internalType":"uint64","name":"admin","type":"uint64"}],"name":"RoleAdminChanged","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"uint64","name":"roleId","type":"uint64"},{"indexed":false,"internalType":"uint32","name":"delay","type":"uint32"},{"indexed":false,"internalType":"uint48","name":"since","type":"uint48"}],"name":"RoleGrantDelayChanged","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"uint64","name":"roleId","type":"uint64"},{"indexed":true,"internalType":"address","name":"account","type":"address"},{"indexed":false,"internalType":"uint32","name":"delay","type":"uint32"},{"indexed":false,"internalType":"uint48","name":"since","type":"uint48"},{"indexed":false,"internalType":"bool","name":"newMember","type":"bool"}],"name":"RoleGranted","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"uint64","name":"roleId","type":"uint64"},{"indexed":true,"internalType":"uint64","name":"guardian","type":"uint64"}],"name":"RoleGuardianChanged","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"uint64","name":"roleId","type":"uint64"},{"indexed":false,"internalType":"string","name":"label","type":"string"}],"name":"RoleLabel","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"uint64","name":"roleId","type":"uint64"},{"indexed":true,"internalType":"address","name":"account","type":"address"}],"name":"RoleRevoked","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"target","type":"address"},{"indexed":false,"internalType":"uint32","name":"delay","type":"uint32"},{"indexed":false,"internalType":"uint48","name":"since","type":"uint48"}],"name":"TargetAdminDelayUpdated","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"target","type":"address"},{"indexed":false,"internalType":"bool","name":"closed","type":"bool"}],"name":"TargetClosed","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"target","type":"address"},{"indexed":false,"internalType":"bytes4","name":"selector","type":"bytes4"},{"indexed":true,"internalType":"uint64","name":"roleId","type":"uint64"}],"name":"TargetFunctionRoleUpdated","type":"event"},{"inputs":[{"internalType":"address","name":"caller","type":"address"},{"internalType":"address","name":"target","type":"address"},{"internalType":"bytes4","name":"selector","type":"bytes4"}],"name":"canCall","outputs":[{"internalType":"bool","name":"allowed","type":"bool"},{"internalType":"uint32","name":"delay","type":"uint32"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"caller","type":"address"},{"internalType":"address","name":"target","type":"address"},{"internalType":"bytes","name":"data","type":"bytes"}],"name":"cancel","outputs":[{"internalType":"uint32","name":"","type":"uint32"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"caller","type":"address"},{"internalType":"bytes","name":"data","type":"bytes"}],"name":"consumeScheduledOp","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"target","type":"address"},{"internalType":"bytes","name":"data","type":"bytes"}],"name":"execute","outputs":[{"internalType":"uint32","name":"","type":"uint32"}],"stateMutability":"payable","type":"function"},{"inputs":[],"name":"expiration","outputs":[{"internalType":"uint32","name":"","type":"uint32"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint64","name":"roleId","type":"uint64"},{"internalType":"address","name":"account","type":"address"}],"name":"getAccess","outputs":[{"internalType":"uint48","name":"since","type":"uint48"},{"internalType":"uint32","name":"currentDelay","type":"uint32"},{"internalType":"uint32","name":"pendingDelay","type":"uint32"},{"internalType":"uint48","name":"effect","type":"uint48"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"bytes32","name":"id","type":"bytes32"}],"name":"getNonce","outputs":[{"internalType":"uint32","name":"","type":"uint32"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint64","name":"roleId","type":"uint64"}],"name":"getRoleAdmin","outputs":[{"internalType":"uint64","name":"","type":"uint64"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint64","name":"roleId","type":"uint64"}],"name":"getRoleGrantDelay","outputs":[{"internalType":"uint32","name":"","type":"uint32"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint64","name":"roleId","type":"uint64"}],"name":"getRoleGuardian","outputs":[{"internalType":"uint64","name":"","type":"uint64"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"bytes32","name":"id","type":"bytes32"}],"name":"getSchedule","outputs":[{"internalType":"uint48","name":"","type":"uint48"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"target","type":"address"}],"name":"getTargetAdminDelay","outputs":[{"internalType":"uint32","name":"","type":"uint32"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"target","type":"address"},{"internalType":"bytes4","name":"selector","type":"bytes4"}],"name":"getTargetFunctionRole","outputs":[{"internalType":"uint64","name":"","type":"uint64"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint64","name":"roleId","type":"uint64"},{"internalType":"address","name":"account","type":"address"},{"internalType":"uint32","name":"executionDelay","type":"uint32"}],"name":"grantRole","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint64","name":"roleId","type":"uint64"},{"internalType":"address","name":"account","type":"address"}],"name":"hasRole","outputs":[{"internalType":"bool","name":"isMember","type":"bool"},{"internalType":"uint32","name":"executionDelay","type":"uint32"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"caller","type":"address"},{"internalType":"address","name":"target","type":"address"},{"internalType":"bytes","name":"data","type":"bytes"}],"name":"hashOperation","outputs":[{"internalType":"bytes32","name":"","type":"bytes32"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"target","type":"address"}],"name":"isTargetClosed","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint64","name":"roleId","type":"uint64"},{"internalType":"string","name":"label","type":"string"}],"name":"labelRole","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"minSetback","outputs":[{"internalType":"uint32","name":"","type":"uint32"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint64","name":"roleId","type":"uint64"},{"internalType":"address","name":"callerConfirmation","type":"address"}],"name":"renounceRole","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint64","name":"roleId","type":"uint64"},{"internalType":"address","name":"account","type":"address"}],"name":"revokeRole","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"target","type":"address"},{"internalType":"bytes","name":"data","type":"bytes"},{"internalType":"uint48","name":"when","type":"uint48"}],"name":"schedule","outputs":[{"internalType":"bytes32","name":"operationId","type":"bytes32"},{"internalType":"uint32","name":"nonce","type":"uint32"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint64","name":"roleId","type":"uint64"},{"internalType":"uint32","name":"newDelay","type":"uint32"}],"name":"setGrantDelay","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint64","name":"roleId","type":"uint64"},{"internalType":"uint64","name":"admin","type":"uint64"}],"name":"setRoleAdmin","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint64","name":"roleId","type":"uint64"},{"internalType":"uint64","name":"guardian","type":"uint64"}],"name":"setRoleGuardian","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"target","type":"address"},{"internalType":"uint32","name":"newDelay","type":"uint32"}],"name":"setTargetAdminDelay","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"target","type":"address"},{"internalType":"bool","name":"closed","type":"bool"}],"name":"setTargetClosed","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"target","type":"address"},{"internalType":"bytes4[]","name":"selectors","type":"bytes4[]"},{"internalType":"uint64","name":"roleId","type":"uint64"}],"name":"setTargetFunctionRole","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"target","type":"address"},{"internalType":"address","name":"newAuthority","type":"address"}],"name":"updateAuthority","outputs":[],"stateMutability":"nonpayable","type":"function"}],"evm":{"bytecode":{"functionDebugData":{},"generatedSources":[],"linkReferences":{},"object":"","opcodes":"","sourceMap":""},"deployedBytecode":{"functionDebugData":{},"generatedSources":[],"immutableReferences":{},"linkReferences":{},"object":"","opcodes":"","sourceMap":""},"methodIdentifiers":{"canCall(address,address,bytes4)":"b7009613","cancel(address,address,bytes)":"d6bb62c6","consumeScheduledOp(address,bytes)":"94c7d7ee","execute(address,bytes)":"1cff79cd","expiration()":"4665096d","getAccess(uint64,address)":"3078f114","getNonce(bytes32)":"4136a33c","getRoleAdmin(uint64)":"530dd456","getRoleGrantDelay(uint64)":"12be8727","getRoleGuardian(uint64)":"0b0a93ba","getSchedule(bytes32)":"3adc277a","getTargetAdminDelay(address)":"4c1da1e2","getTargetFunctionRole(address,bytes4)":"6d5115bd","grantRole(uint64,address,uint32)":"25c471a0","hasRole(uint64,address)":"d1f856ee","hashOperation(address,address,bytes)":"abd9bd2a","isTargetClosed(address)":"a166aa89","labelRole(uint64,string)":"853551b8","minSetback()":"cc1b6c81","renounceRole(uint64,address)":"fe0776f5","revokeRole(uint64,address)":"b7d2b162","schedule(address,bytes,uint48)":"f801a698","setGrantDelay(uint64,uint32)":"a64d95ce","setRoleAdmin(uint64,uint64)":"30cae187","setRoleGuardian(uint64,uint64)":"52962952","setTargetAdminDelay(address,uint32)":"d22b5989","setTargetClosed(address,bool)":"167bd395","setTargetFunctionRole(address,bytes4[],uint64)":"08d6122d","updateAuthority(address,address)":"18ff183c"}},"metadata":"{\"compiler\":{\"version\":\"0.8.30+commit.73712a01\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"operationId\",\"type\":\"bytes32\"}],\"name\":\"AccessManagerAlreadyScheduled\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"AccessManagerBadConfirmation\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"operationId\",\"type\":\"bytes32\"}],\"name\":\"AccessManagerExpired\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"initialAdmin\",\"type\":\"address\"}],\"name\":\"AccessManagerInvalidInitialAdmin\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"uint64\",\"name\":\"roleId\",\"type\":\"uint64\"}],\"name\":\"AccessManagerLockedRole\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"operationId\",\"type\":\"bytes32\"}],\"name\":\"AccessManagerNotReady\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"operationId\",\"type\":\"bytes32\"}],\"name\":\"AccessManagerNotScheduled\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"msgsender\",\"type\":\"address\"},{\"internalType\":\"uint64\",\"name\":\"roleId\",\"type\":\"uint64\"}],\"name\":\"AccessManagerUnauthorizedAccount\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"caller\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"target\",\"type\":\"address\"},{\"internalType\":\"bytes4\",\"name\":\"selector\",\"type\":\"bytes4\"}],\"name\":\"AccessManagerUnauthorizedCall\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"msgsender\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"caller\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"target\",\"type\":\"address\"},{\"internalType\":\"bytes4\",\"name\":\"selector\",\"type\":\"bytes4\"}],\"name\":\"AccessManagerUnauthorizedCancel\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"target\",\"type\":\"address\"}],\"name\":\"AccessManagerUnauthorizedConsume\",\"type\":\"error\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"bytes32\",\"name\":\"operationId\",\"type\":\"bytes32\"},{\"indexed\":true,\"internalType\":\"uint32\",\"name\":\"nonce\",\"type\":\"uint32\"}],\"name\":\"OperationCanceled\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"bytes32\",\"name\":\"operationId\",\"type\":\"bytes32\"},{\"indexed\":true,\"internalType\":\"uint32\",\"name\":\"nonce\",\"type\":\"uint32\"}],\"name\":\"OperationExecuted\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"bytes32\",\"name\":\"operationId\",\"type\":\"bytes32\"},{\"indexed\":true,\"internalType\":\"uint32\",\"name\":\"nonce\",\"type\":\"uint32\"},{\"indexed\":false,\"internalType\":\"uint48\",\"name\":\"schedule\",\"type\":\"uint48\"},{\"indexed\":false,\"internalType\":\"address\",\"name\":\"caller\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"address\",\"name\":\"target\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"bytes\",\"name\":\"data\",\"type\":\"bytes\"}],\"name\":\"OperationScheduled\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"uint64\",\"name\":\"roleId\",\"type\":\"uint64\"},{\"indexed\":true,\"internalType\":\"uint64\",\"name\":\"admin\",\"type\":\"uint64\"}],\"name\":\"RoleAdminChanged\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"uint64\",\"name\":\"roleId\",\"type\":\"uint64\"},{\"indexed\":false,\"internalType\":\"uint32\",\"name\":\"delay\",\"type\":\"uint32\"},{\"indexed\":false,\"internalType\":\"uint48\",\"name\":\"since\",\"type\":\"uint48\"}],\"name\":\"RoleGrantDelayChanged\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"uint64\",\"name\":\"roleId\",\"type\":\"uint64\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint32\",\"name\":\"delay\",\"type\":\"uint32\"},{\"indexed\":false,\"internalType\":\"uint48\",\"name\":\"since\",\"type\":\"uint48\"},{\"indexed\":false,\"internalType\":\"bool\",\"name\":\"newMember\",\"type\":\"bool\"}],\"name\":\"RoleGranted\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"uint64\",\"name\":\"roleId\",\"type\":\"uint64\"},{\"indexed\":true,\"internalType\":\"uint64\",\"name\":\"guardian\",\"type\":\"uint64\"}],\"name\":\"RoleGuardianChanged\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"uint64\",\"name\":\"roleId\",\"type\":\"uint64\"},{\"indexed\":false,\"internalType\":\"string\",\"name\":\"label\",\"type\":\"string\"}],\"name\":\"RoleLabel\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"uint64\",\"name\":\"roleId\",\"type\":\"uint64\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"}],\"name\":\"RoleRevoked\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"target\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint32\",\"name\":\"delay\",\"type\":\"uint32\"},{\"indexed\":false,\"internalType\":\"uint48\",\"name\":\"since\",\"type\":\"uint48\"}],\"name\":\"TargetAdminDelayUpdated\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"target\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"bool\",\"name\":\"closed\",\"type\":\"bool\"}],\"name\":\"TargetClosed\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"target\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"bytes4\",\"name\":\"selector\",\"type\":\"bytes4\"},{\"indexed\":true,\"internalType\":\"uint64\",\"name\":\"roleId\",\"type\":\"uint64\"}],\"name\":\"TargetFunctionRoleUpdated\",\"type\":\"event\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"caller\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"target\",\"type\":\"address\"},{\"internalType\":\"bytes4\",\"name\":\"selector\",\"type\":\"bytes4\"}],\"name\":\"canCall\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"allowed\",\"type\":\"bool\"},{\"internalType\":\"uint32\",\"name\":\"delay\",\"type\":\"uint32\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"caller\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"target\",\"type\":\"address\"},{\"internalType\":\"bytes\",\"name\":\"data\",\"type\":\"bytes\"}],\"name\":\"cancel\",\"outputs\":[{\"internalType\":\"uint32\",\"name\":\"\",\"type\":\"uint32\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"caller\",\"type\":\"address\"},{\"internalType\":\"bytes\",\"name\":\"data\",\"type\":\"bytes\"}],\"name\":\"consumeScheduledOp\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"target\",\"type\":\"address\"},{\"internalType\":\"bytes\",\"name\":\"data\",\"type\":\"bytes\"}],\"name\":\"execute\",\"outputs\":[{\"internalType\":\"uint32\",\"name\":\"\",\"type\":\"uint32\"}],\"stateMutability\":\"payable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"expiration\",\"outputs\":[{\"internalType\":\"uint32\",\"name\":\"\",\"type\":\"uint32\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint64\",\"name\":\"roleId\",\"type\":\"uint64\"},{\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"}],\"name\":\"getAccess\",\"outputs\":[{\"internalType\":\"uint48\",\"name\":\"since\",\"type\":\"uint48\"},{\"internalType\":\"uint32\",\"name\":\"currentDelay\",\"type\":\"uint32\"},{\"internalType\":\"uint32\",\"name\":\"pendingDelay\",\"type\":\"uint32\"},{\"internalType\":\"uint48\",\"name\":\"effect\",\"type\":\"uint48\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"id\",\"type\":\"bytes32\"}],\"name\":\"getNonce\",\"outputs\":[{\"internalType\":\"uint32\",\"name\":\"\",\"type\":\"uint32\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint64\",\"name\":\"roleId\",\"type\":\"uint64\"}],\"name\":\"getRoleAdmin\",\"outputs\":[{\"internalType\":\"uint64\",\"name\":\"\",\"type\":\"uint64\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint64\",\"name\":\"roleId\",\"type\":\"uint64\"}],\"name\":\"getRoleGrantDelay\",\"outputs\":[{\"internalType\":\"uint32\",\"name\":\"\",\"type\":\"uint32\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint64\",\"name\":\"roleId\",\"type\":\"uint64\"}],\"name\":\"getRoleGuardian\",\"outputs\":[{\"internalType\":\"uint64\",\"name\":\"\",\"type\":\"uint64\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"id\",\"type\":\"bytes32\"}],\"name\":\"getSchedule\",\"outputs\":[{\"internalType\":\"uint48\",\"name\":\"\",\"type\":\"uint48\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"target\",\"type\":\"address\"}],\"name\":\"getTargetAdminDelay\",\"outputs\":[{\"internalType\":\"uint32\",\"name\":\"\",\"type\":\"uint32\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"target\",\"type\":\"address\"},{\"internalType\":\"bytes4\",\"name\":\"selector\",\"type\":\"bytes4\"}],\"name\":\"getTargetFunctionRole\",\"outputs\":[{\"internalType\":\"uint64\",\"name\":\"\",\"type\":\"uint64\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint64\",\"name\":\"roleId\",\"type\":\"uint64\"},{\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"},{\"internalType\":\"uint32\",\"name\":\"executionDelay\",\"type\":\"uint32\"}],\"name\":\"grantRole\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint64\",\"name\":\"roleId\",\"type\":\"uint64\"},{\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"}],\"name\":\"hasRole\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"isMember\",\"type\":\"bool\"},{\"internalType\":\"uint32\",\"name\":\"executionDelay\",\"type\":\"uint32\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"caller\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"target\",\"type\":\"address\"},{\"internalType\":\"bytes\",\"name\":\"data\",\"type\":\"bytes\"}],\"name\":\"hashOperation\",\"outputs\":[{\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"target\",\"type\":\"address\"}],\"name\":\"isTargetClosed\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint64\",\"name\":\"roleId\",\"type\":\"uint64\"},{\"internalType\":\"string\",\"name\":\"label\",\"type\":\"string\"}],\"name\":\"labelRole\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"minSetback\",\"outputs\":[{\"internalType\":\"uint32\",\"name\":\"\",\"type\":\"uint32\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint64\",\"name\":\"roleId\",\"type\":\"uint64\"},{\"internalType\":\"address\",\"name\":\"callerConfirmation\",\"type\":\"address\"}],\"name\":\"renounceRole\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint64\",\"name\":\"roleId\",\"type\":\"uint64\"},{\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"}],\"name\":\"revokeRole\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"target\",\"type\":\"address\"},{\"internalType\":\"bytes\",\"name\":\"data\",\"type\":\"bytes\"},{\"internalType\":\"uint48\",\"name\":\"when\",\"type\":\"uint48\"}],\"name\":\"schedule\",\"outputs\":[{\"internalType\":\"bytes32\",\"name\":\"operationId\",\"type\":\"bytes32\"},{\"internalType\":\"uint32\",\"name\":\"nonce\",\"type\":\"uint32\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint64\",\"name\":\"roleId\",\"type\":\"uint64\"},{\"internalType\":\"uint32\",\"name\":\"newDelay\",\"type\":\"uint32\"}],\"name\":\"setGrantDelay\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint64\",\"name\":\"roleId\",\"type\":\"uint64\"},{\"internalType\":\"uint64\",\"name\":\"admin\",\"type\":\"uint64\"}],\"name\":\"setRoleAdmin\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint64\",\"name\":\"roleId\",\"type\":\"uint64\"},{\"internalType\":\"uint64\",\"name\":\"guardian\",\"type\":\"uint64\"}],\"name\":\"setRoleGuardian\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"target\",\"type\":\"address\"},{\"internalType\":\"uint32\",\"name\":\"newDelay\",\"type\":\"uint32\"}],\"name\":\"setTargetAdminDelay\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"target\",\"type\":\"address\"},{\"internalType\":\"bool\",\"name\":\"closed\",\"type\":\"bool\"}],\"name\":\"setTargetClosed\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"target\",\"type\":\"address\"},{\"internalType\":\"bytes4[]\",\"name\":\"selectors\",\"type\":\"bytes4[]\"},{\"internalType\":\"uint64\",\"name\":\"roleId\",\"type\":\"uint64\"}],\"name\":\"setTargetFunctionRole\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"target\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"newAuthority\",\"type\":\"address\"}],\"name\":\"updateAuthority\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"}],\"devdoc\":{\"events\":{\"OperationCanceled(bytes32,uint32)\":{\"details\":\"A scheduled operation was canceled.\"},\"OperationExecuted(bytes32,uint32)\":{\"details\":\"A scheduled operation was executed.\"},\"OperationScheduled(bytes32,uint32,uint48,address,address,bytes)\":{\"details\":\"A delayed operation was scheduled.\"},\"RoleAdminChanged(uint64,uint64)\":{\"details\":\"Role acting as admin over a given `roleId` is updated.\"},\"RoleGrantDelayChanged(uint64,uint32,uint48)\":{\"details\":\"Grant delay for a given `roleId` will be updated to `delay` when `since` is reached.\"},\"RoleGranted(uint64,address,uint32,uint48,bool)\":{\"details\":\"Emitted when `account` is granted `roleId`. NOTE: The meaning of the `since` argument depends on the `newMember` argument. If the role is granted to a new member, the `since` argument indicates when the account becomes a member of the role, otherwise it indicates the execution delay for this account and roleId is updated.\"},\"RoleGuardianChanged(uint64,uint64)\":{\"details\":\"Role acting as guardian over a given `roleId` is updated.\"},\"RoleLabel(uint64,string)\":{\"details\":\"Informational labelling for a roleId.\"},\"RoleRevoked(uint64,address)\":{\"details\":\"Emitted when `account` membership or `roleId` is revoked. Unlike granting, revoking is instantaneous.\"},\"TargetAdminDelayUpdated(address,uint32,uint48)\":{\"details\":\"Admin delay for a given `target` will be updated to `delay` when `since` is reached.\"},\"TargetClosed(address,bool)\":{\"details\":\"Target mode is updated (true = closed, false = open).\"},\"TargetFunctionRoleUpdated(address,bytes4,uint64)\":{\"details\":\"Role required to invoke `selector` on `target` is updated to `roleId`.\"}},\"kind\":\"dev\",\"methods\":{\"canCall(address,address,bytes4)\":{\"details\":\"Check if an address (`caller`) is authorised to call a given function on a given contract directly (with no restriction). Additionally, it returns the delay needed to perform the call indirectly through the {schedule} & {execute} workflow. This function is usually called by the targeted contract to control immediate execution of restricted functions. Therefore we only return true if the call can be performed without any delay. If the call is subject to a previously set delay (not zero), then the function should return false and the caller should schedule the operation for future execution. If `allowed` is true, the delay can be disregarded and the operation can be immediately executed, otherwise the operation can be executed if and only if delay is greater than 0. NOTE: The IAuthority interface does not include the `uint32` delay. This is an extension of that interface that is backward compatible. Some contracts may thus ignore the second return argument. In that case they will fail to identify the indirect workflow, and will consider calls that require a delay to be forbidden. NOTE: This function does not report the permissions of the admin functions in the manager itself. These are defined by the {AccessManager} documentation.\"},\"cancel(address,address,bytes)\":{\"details\":\"Cancel a scheduled (delayed) operation. Returns the nonce that identifies the previously scheduled operation that is cancelled. Requirements: - the caller must be the proposer, a guardian of the targeted function, or a global admin Emits a {OperationCanceled} event.\"},\"consumeScheduledOp(address,bytes)\":{\"details\":\"Consume a scheduled operation targeting the caller. If such an operation exists, mark it as consumed (emit an {OperationExecuted} event and clean the state). Otherwise, throw an error. This is useful for contracts that want to enforce that calls targeting them were scheduled on the manager, with all the verifications that it implies. Emit a {OperationExecuted} event.\"},\"execute(address,bytes)\":{\"details\":\"Execute a function that is delay restricted, provided it was properly scheduled beforehand, or the execution delay is 0. Returns the nonce that identifies the previously scheduled operation that is executed, or 0 if the operation wasn't previously scheduled (if the caller doesn't have an execution delay). Emits an {OperationExecuted} event only if the call was scheduled and delayed.\"},\"expiration()\":{\"details\":\"Expiration delay for scheduled proposals. Defaults to 1 week. IMPORTANT: Avoid overriding the expiration with 0. Otherwise every contract proposal will be expired immediately, disabling any scheduling usage.\"},\"getAccess(uint64,address)\":{\"details\":\"Get the access details for a given account for a given role. These details include the timepoint at which membership becomes active, and the delay applied to all operations by this user that requires this permission level. Returns: [0] Timestamp at which the account membership becomes valid. 0 means role is not granted. [1] Current execution delay for the account. [2] Pending execution delay for the account. [3] Timestamp at which the pending execution delay will become active. 0 means no delay update is scheduled.\"},\"getNonce(bytes32)\":{\"details\":\"Return the nonce for the latest scheduled operation with a given id. Returns 0 if the operation has never been scheduled.\"},\"getRoleAdmin(uint64)\":{\"details\":\"Get the id of the role that acts as an admin for the given role. The admin permission is required to grant the role, revoke the role and update the execution delay to execute an operation that is restricted to this role.\"},\"getRoleGrantDelay(uint64)\":{\"details\":\"Get the role current grant delay. Its value may change at any point without an event emitted following a call to {setGrantDelay}. Changes to this value, including effect timepoint are notified in advance by the {RoleGrantDelayChanged} event.\"},\"getRoleGuardian(uint64)\":{\"details\":\"Get the role that acts as a guardian for a given role. The guardian permission allows canceling operations that have been scheduled under the role.\"},\"getSchedule(bytes32)\":{\"details\":\"Return the timepoint at which a scheduled operation will be ready for execution. This returns 0 if the operation is not yet scheduled, has expired, was executed, or was canceled.\"},\"getTargetAdminDelay(address)\":{\"details\":\"Get the admin delay for a target contract. Changes to contract configuration are subject to this delay.\"},\"getTargetFunctionRole(address,bytes4)\":{\"details\":\"Get the role required to call a function.\"},\"grantRole(uint64,address,uint32)\":{\"details\":\"Add `account` to `roleId`, or change its execution delay. This gives the account the authorization to call any function that is restricted to this role. An optional execution delay (in seconds) can be set. If that delay is non 0, the user is required to schedule any operation that is restricted to members of this role. The user will only be able to execute the operation after the delay has passed, before it has expired. During this period, admin and guardians can cancel the operation (see {cancel}). If the account has already been granted this role, the execution delay will be updated. This update is not immediate and follows the delay rules. For example, if a user currently has a delay of 3 hours, and this is called to reduce that delay to 1 hour, the new delay will take some time to take effect, enforcing that any operation executed in the 3 hours that follows this update was indeed scheduled before this update. Requirements: - the caller must be an admin for the role (see {getRoleAdmin}) - granted role must not be the `PUBLIC_ROLE` Emits a {RoleGranted} event.\"},\"hasRole(uint64,address)\":{\"details\":\"Check if a given account currently has the permission level corresponding to a given role. Note that this permission might be associated with an execution delay. {getAccess} can provide more details.\"},\"hashOperation(address,address,bytes)\":{\"details\":\"Hashing function for delayed operations.\"},\"isTargetClosed(address)\":{\"details\":\"Get whether the contract is closed disabling any access. Otherwise role permissions are applied. NOTE: When the manager itself is closed, admin functions are still accessible to avoid locking the contract.\"},\"labelRole(uint64,string)\":{\"details\":\"Give a label to a role, for improved role discoverability by UIs. Requirements: - the caller must be a global admin Emits a {RoleLabel} event.\"},\"minSetback()\":{\"details\":\"Minimum setback for all delay updates, with the exception of execution delays. It can be increased without setback (and reset via {revokeRole} in the event of an accidental increase). Defaults to 5 days.\"},\"renounceRole(uint64,address)\":{\"details\":\"Renounce role permissions for the calling account with immediate effect. If the sender is not in the role this call has no effect. Requirements: - the caller must be `callerConfirmation`. Emits a {RoleRevoked} event if the account had the role.\"},\"revokeRole(uint64,address)\":{\"details\":\"Remove an account from a role, with immediate effect. If the account does not have the role, this call has no effect. Requirements: - the caller must be an admin for the role (see {getRoleAdmin}) - revoked role must not be the `PUBLIC_ROLE` Emits a {RoleRevoked} event if the account had the role.\"},\"schedule(address,bytes,uint48)\":{\"details\":\"Schedule a delayed operation for future execution, and return the operation identifier. It is possible to choose the timestamp at which the operation becomes executable as long as it satisfies the execution delays required for the caller. The special value zero will automatically set the earliest possible time. Returns the `operationId` that was scheduled. Since this value is a hash of the parameters, it can reoccur when the same parameters are used; if this is relevant, the returned `nonce` can be used to uniquely identify this scheduled operation from other occurrences of the same `operationId` in invocations of {execute} and {cancel}. Emits a {OperationScheduled} event. NOTE: It is not possible to concurrently schedule more than one operation with the same `target` and `data`. If this is necessary, a random byte can be appended to `data` to act as a salt that will be ignored by the target contract if it is using standard Solidity ABI encoding.\"},\"setGrantDelay(uint64,uint32)\":{\"details\":\"Update the delay for granting a `roleId`. Requirements: - the caller must be a global admin Emits a {RoleGrantDelayChanged} event.\"},\"setRoleAdmin(uint64,uint64)\":{\"details\":\"Change admin role for a given role. Requirements: - the caller must be a global admin Emits a {RoleAdminChanged} event\"},\"setRoleGuardian(uint64,uint64)\":{\"details\":\"Change guardian role for a given role. Requirements: - the caller must be a global admin Emits a {RoleGuardianChanged} event\"},\"setTargetAdminDelay(address,uint32)\":{\"details\":\"Set the delay for changing the configuration of a given target contract. Requirements: - the caller must be a global admin Emits a {TargetAdminDelayUpdated} event.\"},\"setTargetClosed(address,bool)\":{\"details\":\"Set the closed flag for a contract. Closing the manager itself won't disable access to admin methods to avoid locking the contract. Requirements: - the caller must be a global admin Emits a {TargetClosed} event.\"},\"setTargetFunctionRole(address,bytes4[],uint64)\":{\"details\":\"Set the role required to call functions identified by the `selectors` in the `target` contract. Requirements: - the caller must be a global admin Emits a {TargetFunctionRoleUpdated} event per selector.\"},\"updateAuthority(address,address)\":{\"details\":\"Changes the authority of a target managed by this manager instance. Requirements: - the caller must be a global admin\"}},\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{},\"version\":1}},\"settings\":{\"compilationTarget\":{\"@openzeppelin/contracts/access/manager/IAccessManager.sol\":\"IAccessManager\"},\"evmVersion\":\"prague\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"enabled\":true,\"runs\":200},\"remappings\":[]},\"sources\":{\"@openzeppelin/contracts/access/manager/IAccessManager.sol\":{\"keccak256\":\"0x71e3e350e83af0018a1683cc2ce4c13893cc01f78e5c9c305f6828608ffcfa18\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://0a7b521c9999007715c9bdedffaad2ef7d2ccfa07bca2a39ba9e0c2e8a944a63\",\"dweb:/ipfs/QmamPG6Y1p7iZh4cF8Hfp3oufowSRyB3S3DisTKkmVWSai\"]}},\"version\":1}","storageLayout":{"storage":[],"types":null}}},"@openzeppelin/contracts/interfaces/IERC1363.sol":{"IERC1363":{"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":"value","type":"uint256"}],"name":"approve","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"value","type":"uint256"}],"name":"approveAndCall","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"value","type":"uint256"},{"internalType":"bytes","name":"data","type":"bytes"}],"name":"approveAndCall","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":"bytes4","name":"interfaceId","type":"bytes4"}],"name":"supportsInterface","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"totalSupply","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"to","type":"address"},{"internalType":"uint256","name":"value","type":"uint256"}],"name":"transfer","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"to","type":"address"},{"internalType":"uint256","name":"value","type":"uint256"}],"name":"transferAndCall","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"to","type":"address"},{"internalType":"uint256","name":"value","type":"uint256"},{"internalType":"bytes","name":"data","type":"bytes"}],"name":"transferAndCall","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"from","type":"address"},{"internalType":"address","name":"to","type":"address"},{"internalType":"uint256","name":"value","type":"uint256"}],"name":"transferFrom","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"from","type":"address"},{"internalType":"address","name":"to","type":"address"},{"internalType":"uint256","name":"value","type":"uint256"},{"internalType":"bytes","name":"data","type":"bytes"}],"name":"transferFromAndCall","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"from","type":"address"},{"internalType":"address","name":"to","type":"address"},{"internalType":"uint256","name":"value","type":"uint256"}],"name":"transferFromAndCall","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"}],"evm":{"bytecode":{"functionDebugData":{},"generatedSources":[],"linkReferences":{},"object":"","opcodes":"","sourceMap":""},"deployedBytecode":{"functionDebugData":{},"generatedSources":[],"immutableReferences":{},"linkReferences":{},"object":"","opcodes":"","sourceMap":""},"methodIdentifiers":{"allowance(address,address)":"dd62ed3e","approve(address,uint256)":"095ea7b3","approveAndCall(address,uint256)":"3177029f","approveAndCall(address,uint256,bytes)":"cae9ca51","balanceOf(address)":"70a08231","supportsInterface(bytes4)":"01ffc9a7","totalSupply()":"18160ddd","transfer(address,uint256)":"a9059cbb","transferAndCall(address,uint256)":"1296ee62","transferAndCall(address,uint256,bytes)":"4000aea0","transferFrom(address,address,uint256)":"23b872dd","transferFromAndCall(address,address,uint256)":"d8fbe994","transferFromAndCall(address,address,uint256,bytes)":"c1d34b89"}},"metadata":"{\"compiler\":{\"version\":\"0.8.30+commit.73712a01\"},\"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\":\"value\",\"type\":\"uint256\"}],\"name\":\"approve\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"spender\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"value\",\"type\":\"uint256\"}],\"name\":\"approveAndCall\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"spender\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"value\",\"type\":\"uint256\"},{\"internalType\":\"bytes\",\"name\":\"data\",\"type\":\"bytes\"}],\"name\":\"approveAndCall\",\"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\":\"bytes4\",\"name\":\"interfaceId\",\"type\":\"bytes4\"}],\"name\":\"supportsInterface\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"totalSupply\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"value\",\"type\":\"uint256\"}],\"name\":\"transfer\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"value\",\"type\":\"uint256\"}],\"name\":\"transferAndCall\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"value\",\"type\":\"uint256\"},{\"internalType\":\"bytes\",\"name\":\"data\",\"type\":\"bytes\"}],\"name\":\"transferAndCall\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"from\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"value\",\"type\":\"uint256\"}],\"name\":\"transferFrom\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"from\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"value\",\"type\":\"uint256\"},{\"internalType\":\"bytes\",\"name\":\"data\",\"type\":\"bytes\"}],\"name\":\"transferFromAndCall\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"from\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"value\",\"type\":\"uint256\"}],\"name\":\"transferFromAndCall\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"}],\"devdoc\":{\"details\":\"Interface of the ERC-1363 standard as defined in the https://eips.ethereum.org/EIPS/eip-1363[ERC-1363]. Defines an extension interface for ERC-20 tokens that supports executing code on a recipient contract after `transfer` or `transferFrom`, or code on a spender contract after `approve`, in a single transaction.\",\"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 a `value` amount of tokens 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.\"},\"approveAndCall(address,uint256)\":{\"details\":\"Sets a `value` amount of tokens as the allowance of `spender` over the caller's tokens and then calls {IERC1363Spender-onApprovalReceived} on `spender`.\",\"params\":{\"spender\":\"The address which will spend the funds.\",\"value\":\"The amount of tokens to be spent.\"},\"returns\":{\"_0\":\"A boolean value indicating whether the operation succeeded unless throwing.\"}},\"approveAndCall(address,uint256,bytes)\":{\"details\":\"Sets a `value` amount of tokens as the allowance of `spender` over the caller's tokens and then calls {IERC1363Spender-onApprovalReceived} on `spender`.\",\"params\":{\"data\":\"Additional data with no specified format, sent in call to `spender`.\",\"spender\":\"The address which will spend the funds.\",\"value\":\"The amount of tokens to be spent.\"},\"returns\":{\"_0\":\"A boolean value indicating whether the operation succeeded unless throwing.\"}},\"balanceOf(address)\":{\"details\":\"Returns the value of tokens owned by `account`.\"},\"supportsInterface(bytes4)\":{\"details\":\"Returns true if this contract implements the interface defined by `interfaceId`. See the corresponding https://eips.ethereum.org/EIPS/eip-165#how-interfaces-are-identified[ERC section] to learn more about how these ids are created. This function call must use less than 30 000 gas.\"},\"totalSupply()\":{\"details\":\"Returns the value of tokens in existence.\"},\"transfer(address,uint256)\":{\"details\":\"Moves a `value` amount of tokens from the caller's account to `to`. Returns a boolean value indicating whether the operation succeeded. Emits a {Transfer} event.\"},\"transferAndCall(address,uint256)\":{\"details\":\"Moves a `value` amount of tokens from the caller's account to `to` and then calls {IERC1363Receiver-onTransferReceived} on `to`.\",\"params\":{\"to\":\"The address which you want to transfer to.\",\"value\":\"The amount of tokens to be transferred.\"},\"returns\":{\"_0\":\"A boolean value indicating whether the operation succeeded unless throwing.\"}},\"transferAndCall(address,uint256,bytes)\":{\"details\":\"Moves a `value` amount of tokens from the caller's account to `to` and then calls {IERC1363Receiver-onTransferReceived} on `to`.\",\"params\":{\"data\":\"Additional data with no specified format, sent in call to `to`.\",\"to\":\"The address which you want to transfer to.\",\"value\":\"The amount of tokens to be transferred.\"},\"returns\":{\"_0\":\"A boolean value indicating whether the operation succeeded unless throwing.\"}},\"transferFrom(address,address,uint256)\":{\"details\":\"Moves a `value` amount of tokens from `from` to `to` using the allowance mechanism. `value` is then deducted from the caller's allowance. Returns a boolean value indicating whether the operation succeeded. Emits a {Transfer} event.\"},\"transferFromAndCall(address,address,uint256)\":{\"details\":\"Moves a `value` amount of tokens from `from` to `to` using the allowance mechanism and then calls {IERC1363Receiver-onTransferReceived} on `to`.\",\"params\":{\"from\":\"The address which you want to send tokens from.\",\"to\":\"The address which you want to transfer to.\",\"value\":\"The amount of tokens to be transferred.\"},\"returns\":{\"_0\":\"A boolean value indicating whether the operation succeeded unless throwing.\"}},\"transferFromAndCall(address,address,uint256,bytes)\":{\"details\":\"Moves a `value` amount of tokens from `from` to `to` using the allowance mechanism and then calls {IERC1363Receiver-onTransferReceived} on `to`.\",\"params\":{\"data\":\"Additional data with no specified format, sent in call to `to`.\",\"from\":\"The address which you want to send tokens from.\",\"to\":\"The address which you want to transfer to.\",\"value\":\"The amount of tokens to be transferred.\"},\"returns\":{\"_0\":\"A boolean value indicating whether the operation succeeded unless throwing.\"}}},\"title\":\"IERC1363\",\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{},\"version\":1}},\"settings\":{\"compilationTarget\":{\"@openzeppelin/contracts/interfaces/IERC1363.sol\":\"IERC1363\"},\"evmVersion\":\"prague\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"enabled\":true,\"runs\":200},\"remappings\":[]},\"sources\":{\"@openzeppelin/contracts/interfaces/IERC1363.sol\":{\"keccak256\":\"0xd5ea07362ab630a6a3dee4285a74cf2377044ca2e4be472755ad64d7c5d4b69d\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://da5e832b40fc5c3145d3781e2e5fa60ac2052c9d08af7e300dc8ab80c4343100\",\"dweb:/ipfs/QmTzf7N5ZUdh5raqtzbM11yexiUoLC9z3Ws632MCuycq1d\"]},\"@openzeppelin/contracts/interfaces/IERC165.sol\":{\"keccak256\":\"0x0afcb7e740d1537b252cb2676f600465ce6938398569f09ba1b9ca240dde2dfc\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://1c299900ac4ec268d4570ecef0d697a3013cd11a6eb74e295ee3fbc945056037\",\"dweb:/ipfs/Qmab9owJoxcA7vJT5XNayCMaUR1qxqj1NDzzisduwaJMcZ\"]},\"@openzeppelin/contracts/interfaces/IERC20.sol\":{\"keccak256\":\"0x1a6221315ce0307746c2c4827c125d821ee796c74a676787762f4778671d4f44\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://1bb2332a7ee26dd0b0de9b7fe266749f54820c99ab6a3bcb6f7e6b751d47ee2d\",\"dweb:/ipfs/QmcRWpaBeCYkhy68PR3B4AgD7asuQk7PwkWxrvJbZcikLF\"]},\"@openzeppelin/contracts/token/ERC20/IERC20.sol\":{\"keccak256\":\"0x74ed01eb66b923d0d0cfe3be84604ac04b76482a55f9dd655e1ef4d367f95bc2\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://5282825a626cfe924e504274b864a652b0023591fa66f06a067b25b51ba9b303\",\"dweb:/ipfs/QmeCfPykghhMc81VJTrHTC7sF6CRvaA1FXVq2pJhwYp1dV\"]},\"@openzeppelin/contracts/utils/introspection/IERC165.sol\":{\"keccak256\":\"0x8891738ffe910f0cf2da09566928589bf5d63f4524dd734fd9cedbac3274dd5c\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://971f954442df5c2ef5b5ebf1eb245d7105d9fbacc7386ee5c796df1d45b21617\",\"dweb:/ipfs/QmadRjHbkicwqwwh61raUEapaVEtaLMcYbQZWs9gUkgj3u\"]}},\"version\":1}","storageLayout":{"storage":[],"types":null}}},"@openzeppelin/contracts/interfaces/IERC1967.sol":{"IERC1967":{"abi":[{"anonymous":false,"inputs":[{"indexed":false,"internalType":"address","name":"previousAdmin","type":"address"},{"indexed":false,"internalType":"address","name":"newAdmin","type":"address"}],"name":"AdminChanged","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"beacon","type":"address"}],"name":"BeaconUpgraded","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"implementation","type":"address"}],"name":"Upgraded","type":"event"}],"evm":{"bytecode":{"functionDebugData":{},"generatedSources":[],"linkReferences":{},"object":"","opcodes":"","sourceMap":""},"deployedBytecode":{"functionDebugData":{},"generatedSources":[],"immutableReferences":{},"linkReferences":{},"object":"","opcodes":"","sourceMap":""},"methodIdentifiers":{}},"metadata":"{\"compiler\":{\"version\":\"0.8.30+commit.73712a01\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"address\",\"name\":\"previousAdmin\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"address\",\"name\":\"newAdmin\",\"type\":\"address\"}],\"name\":\"AdminChanged\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"beacon\",\"type\":\"address\"}],\"name\":\"BeaconUpgraded\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"implementation\",\"type\":\"address\"}],\"name\":\"Upgraded\",\"type\":\"event\"}],\"devdoc\":{\"details\":\"ERC-1967: Proxy Storage Slots. This interface contains the events defined in the ERC.\",\"events\":{\"AdminChanged(address,address)\":{\"details\":\"Emitted when the admin account has changed.\"},\"BeaconUpgraded(address)\":{\"details\":\"Emitted when the beacon is changed.\"},\"Upgraded(address)\":{\"details\":\"Emitted when the implementation is upgraded.\"}},\"kind\":\"dev\",\"methods\":{},\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{},\"version\":1}},\"settings\":{\"compilationTarget\":{\"@openzeppelin/contracts/interfaces/IERC1967.sol\":\"IERC1967\"},\"evmVersion\":\"prague\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"enabled\":true,\"runs\":200},\"remappings\":[]},\"sources\":{\"@openzeppelin/contracts/interfaces/IERC1967.sol\":{\"keccak256\":\"0xbf2aefe54b76d7f7bcd4f6da1080b7b1662611937d870b880db584d09cea56b5\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://f5e7e2f12e0feec75296e57f51f82fdaa8bd1551f4b8cc6560442c0bf60f818c\",\"dweb:/ipfs/QmcW9wDMaQ8RbQibMarfp17a3bABzY5KraWe2YDwuUrUoz\"]}},\"version\":1}","storageLayout":{"storage":[],"types":null}}},"@openzeppelin/contracts/interfaces/IERC4626.sol":{"IERC4626":{"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":"sender","type":"address"},{"indexed":true,"internalType":"address","name":"owner","type":"address"},{"indexed":false,"internalType":"uint256","name":"assets","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"shares","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":"sender","type":"address"},{"indexed":true,"internalType":"address","name":"receiver","type":"address"},{"indexed":true,"internalType":"address","name":"owner","type":"address"},{"indexed":false,"internalType":"uint256","name":"assets","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"shares","type":"uint256"}],"name":"Withdraw","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":"value","type":"uint256"}],"name":"approve","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"asset","outputs":[{"internalType":"address","name":"assetTokenAddress","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"balanceOf","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"shares","type":"uint256"}],"name":"convertToAssets","outputs":[{"internalType":"uint256","name":"assets","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"assets","type":"uint256"}],"name":"convertToShares","outputs":[{"internalType":"uint256","name":"shares","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"decimals","outputs":[{"internalType":"uint8","name":"","type":"uint8"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"assets","type":"uint256"},{"internalType":"address","name":"receiver","type":"address"}],"name":"deposit","outputs":[{"internalType":"uint256","name":"shares","type":"uint256"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"receiver","type":"address"}],"name":"maxDeposit","outputs":[{"internalType":"uint256","name":"maxAssets","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"receiver","type":"address"}],"name":"maxMint","outputs":[{"internalType":"uint256","name":"maxShares","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"owner","type":"address"}],"name":"maxRedeem","outputs":[{"internalType":"uint256","name":"maxShares","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"owner","type":"address"}],"name":"maxWithdraw","outputs":[{"internalType":"uint256","name":"maxAssets","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"shares","type":"uint256"},{"internalType":"address","name":"receiver","type":"address"}],"name":"mint","outputs":[{"internalType":"uint256","name":"assets","type":"uint256"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"name","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"assets","type":"uint256"}],"name":"previewDeposit","outputs":[{"internalType":"uint256","name":"shares","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"shares","type":"uint256"}],"name":"previewMint","outputs":[{"internalType":"uint256","name":"assets","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"shares","type":"uint256"}],"name":"previewRedeem","outputs":[{"internalType":"uint256","name":"assets","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"assets","type":"uint256"}],"name":"previewWithdraw","outputs":[{"internalType":"uint256","name":"shares","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"shares","type":"uint256"},{"internalType":"address","name":"receiver","type":"address"},{"internalType":"address","name":"owner","type":"address"}],"name":"redeem","outputs":[{"internalType":"uint256","name":"assets","type":"uint256"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"symbol","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"totalAssets","outputs":[{"internalType":"uint256","name":"totalManagedAssets","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"totalSupply","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"to","type":"address"},{"internalType":"uint256","name":"value","type":"uint256"}],"name":"transfer","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"from","type":"address"},{"internalType":"address","name":"to","type":"address"},{"internalType":"uint256","name":"value","type":"uint256"}],"name":"transferFrom","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"assets","type":"uint256"},{"internalType":"address","name":"receiver","type":"address"},{"internalType":"address","name":"owner","type":"address"}],"name":"withdraw","outputs":[{"internalType":"uint256","name":"shares","type":"uint256"}],"stateMutability":"nonpayable","type":"function"}],"evm":{"bytecode":{"functionDebugData":{},"generatedSources":[],"linkReferences":{},"object":"","opcodes":"","sourceMap":""},"deployedBytecode":{"functionDebugData":{},"generatedSources":[],"immutableReferences":{},"linkReferences":{},"object":"","opcodes":"","sourceMap":""},"methodIdentifiers":{"allowance(address,address)":"dd62ed3e","approve(address,uint256)":"095ea7b3","asset()":"38d52e0f","balanceOf(address)":"70a08231","convertToAssets(uint256)":"07a2d13a","convertToShares(uint256)":"c6e6f592","decimals()":"313ce567","deposit(uint256,address)":"6e553f65","maxDeposit(address)":"402d267d","maxMint(address)":"c63d75b6","maxRedeem(address)":"d905777e","maxWithdraw(address)":"ce96cb77","mint(uint256,address)":"94bf804d","name()":"06fdde03","previewDeposit(uint256)":"ef8b30f7","previewMint(uint256)":"b3d7f6b9","previewRedeem(uint256)":"4cdad506","previewWithdraw(uint256)":"0a28a477","redeem(uint256,address,address)":"ba087652","symbol()":"95d89b41","totalAssets()":"01e1d114","totalSupply()":"18160ddd","transfer(address,uint256)":"a9059cbb","transferFrom(address,address,uint256)":"23b872dd","withdraw(uint256,address,address)":"b460af94"}},"metadata":"{\"compiler\":{\"version\":\"0.8.30+commit.73712a01\"},\"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\":\"sender\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"assets\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"shares\",\"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\":\"sender\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"receiver\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"assets\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"shares\",\"type\":\"uint256\"}],\"name\":\"Withdraw\",\"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\":\"value\",\"type\":\"uint256\"}],\"name\":\"approve\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"asset\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"assetTokenAddress\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"}],\"name\":\"balanceOf\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"shares\",\"type\":\"uint256\"}],\"name\":\"convertToAssets\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"assets\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"assets\",\"type\":\"uint256\"}],\"name\":\"convertToShares\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"shares\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"decimals\",\"outputs\":[{\"internalType\":\"uint8\",\"name\":\"\",\"type\":\"uint8\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"assets\",\"type\":\"uint256\"},{\"internalType\":\"address\",\"name\":\"receiver\",\"type\":\"address\"}],\"name\":\"deposit\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"shares\",\"type\":\"uint256\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"receiver\",\"type\":\"address\"}],\"name\":\"maxDeposit\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"maxAssets\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"receiver\",\"type\":\"address\"}],\"name\":\"maxMint\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"maxShares\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"}],\"name\":\"maxRedeem\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"maxShares\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"}],\"name\":\"maxWithdraw\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"maxAssets\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"shares\",\"type\":\"uint256\"},{\"internalType\":\"address\",\"name\":\"receiver\",\"type\":\"address\"}],\"name\":\"mint\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"assets\",\"type\":\"uint256\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"name\",\"outputs\":[{\"internalType\":\"string\",\"name\":\"\",\"type\":\"string\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"assets\",\"type\":\"uint256\"}],\"name\":\"previewDeposit\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"shares\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"shares\",\"type\":\"uint256\"}],\"name\":\"previewMint\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"assets\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"shares\",\"type\":\"uint256\"}],\"name\":\"previewRedeem\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"assets\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"assets\",\"type\":\"uint256\"}],\"name\":\"previewWithdraw\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"shares\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"shares\",\"type\":\"uint256\"},{\"internalType\":\"address\",\"name\":\"receiver\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"}],\"name\":\"redeem\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"assets\",\"type\":\"uint256\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"symbol\",\"outputs\":[{\"internalType\":\"string\",\"name\":\"\",\"type\":\"string\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"totalAssets\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"totalManagedAssets\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"totalSupply\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"value\",\"type\":\"uint256\"}],\"name\":\"transfer\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"from\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"value\",\"type\":\"uint256\"}],\"name\":\"transferFrom\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"assets\",\"type\":\"uint256\"},{\"internalType\":\"address\",\"name\":\"receiver\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"}],\"name\":\"withdraw\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"shares\",\"type\":\"uint256\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"}],\"devdoc\":{\"details\":\"Interface of the ERC-4626 \\\"Tokenized Vault Standard\\\", as defined in https://eips.ethereum.org/EIPS/eip-4626[ERC-4626].\",\"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 a `value` amount of tokens 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.\"},\"asset()\":{\"details\":\"Returns the address of the underlying token used for the Vault for accounting, depositing, and withdrawing. - MUST be an ERC-20 token contract. - MUST NOT revert.\"},\"balanceOf(address)\":{\"details\":\"Returns the value of tokens owned by `account`.\"},\"convertToAssets(uint256)\":{\"details\":\"Returns the amount of assets that the Vault would exchange for the amount of shares provided, in an ideal scenario where all the conditions are met. - MUST NOT be inclusive of any fees that are charged against assets in the Vault. - MUST NOT show any variations depending on the caller. - MUST NOT reflect slippage or other on-chain conditions, when performing the actual exchange. - MUST NOT revert. NOTE: This calculation MAY NOT reflect the \\u201cper-user\\u201d price-per-share, and instead should reflect the \\u201caverage-user\\u2019s\\u201d price-per-share, meaning what the average user should expect to see when exchanging to and from.\"},\"convertToShares(uint256)\":{\"details\":\"Returns the amount of shares that the Vault would exchange for the amount of assets provided, in an ideal scenario where all the conditions are met. - MUST NOT be inclusive of any fees that are charged against assets in the Vault. - MUST NOT show any variations depending on the caller. - MUST NOT reflect slippage or other on-chain conditions, when performing the actual exchange. - MUST NOT revert. NOTE: This calculation MAY NOT reflect the \\u201cper-user\\u201d price-per-share, and instead should reflect the \\u201caverage-user\\u2019s\\u201d price-per-share, meaning what the average user should expect to see when exchanging to and from.\"},\"decimals()\":{\"details\":\"Returns the decimals places of the token.\"},\"deposit(uint256,address)\":{\"details\":\"Deposit `assets` underlying tokens and send the corresponding number of vault shares (`shares`) to `receiver`. - MUST emit the Deposit event. - MAY support an additional flow in which the underlying tokens are owned by the Vault contract before the   deposit execution, and are accounted for during deposit. - MUST revert if all of assets cannot be deposited (due to deposit limit being reached, slippage, the user not   approving enough underlying tokens to the Vault contract, etc). NOTE: most implementations will require pre-approval of the Vault with the Vault\\u2019s underlying asset token.\"},\"maxDeposit(address)\":{\"details\":\"Returns the maximum amount of the underlying asset that can be deposited into the Vault for the receiver, through a deposit call. - MUST return a limited value if receiver is subject to some deposit limit. - MUST return 2 ** 256 - 1 if there is no limit on the maximum amount of assets that may be deposited. - MUST NOT revert.\"},\"maxMint(address)\":{\"details\":\"Returns the maximum amount of the Vault shares that can be minted for the receiver, through a mint call. - MUST return a limited value if receiver is subject to some mint limit. - MUST return 2 ** 256 - 1 if there is no limit on the maximum amount of shares that may be minted. - MUST NOT revert.\"},\"maxRedeem(address)\":{\"details\":\"Returns the maximum amount of Vault shares that can be redeemed from the owner balance in the Vault, through a redeem call. - MUST return a limited value if owner is subject to some withdrawal limit or timelock. - MUST return balanceOf(owner) if owner is not subject to any withdrawal limit or timelock. - MUST NOT revert.\"},\"maxWithdraw(address)\":{\"details\":\"Returns the maximum amount of the underlying asset that can be withdrawn from the owner balance in the Vault, through a withdraw call. - MUST return a limited value if owner is subject to some withdrawal limit or timelock. - MUST NOT revert.\"},\"mint(uint256,address)\":{\"details\":\"Mints exactly `shares` vault shares to `receiver` in exchange for `assets` underlying tokens. - MUST emit the Deposit event. - MAY support an additional flow in which the underlying tokens are owned by the Vault contract before the mint   execution, and are accounted for during mint. - MUST revert if all of shares cannot be minted (due to deposit limit being reached, slippage, the user not   approving enough underlying tokens to the Vault contract, etc). NOTE: most implementations will require pre-approval of the Vault with the Vault\\u2019s underlying asset token.\"},\"name()\":{\"details\":\"Returns the name of the token.\"},\"previewDeposit(uint256)\":{\"details\":\"Allows an on-chain or off-chain user to simulate the effects of their deposit at the current block, given current on-chain conditions. - MUST return as close to and no more than the exact amount of Vault shares that would be minted in a deposit   call in the same transaction. I.e. deposit should return the same or more shares as previewDeposit if called   in the same transaction. - MUST NOT account for deposit limits like those returned from maxDeposit and should always act as though the   deposit would be accepted, regardless if the user has enough tokens approved, etc. - MUST be inclusive of deposit fees. Integrators should be aware of the existence of deposit fees. - MUST NOT revert. NOTE: any unfavorable discrepancy between convertToShares and previewDeposit SHOULD be considered slippage in share price or some other type of condition, meaning the depositor will lose assets by depositing.\"},\"previewMint(uint256)\":{\"details\":\"Allows an on-chain or off-chain user to simulate the effects of their mint at the current block, given current on-chain conditions. - MUST return as close to and no fewer than the exact amount of assets that would be deposited in a mint call   in the same transaction. I.e. mint should return the same or fewer assets as previewMint if called in the   same transaction. - MUST NOT account for mint limits like those returned from maxMint and should always act as though the mint   would be accepted, regardless if the user has enough tokens approved, etc. - MUST be inclusive of deposit fees. Integrators should be aware of the existence of deposit fees. - MUST NOT revert. NOTE: any unfavorable discrepancy between convertToAssets and previewMint SHOULD be considered slippage in share price or some other type of condition, meaning the depositor will lose assets by minting.\"},\"previewRedeem(uint256)\":{\"details\":\"Allows an on-chain or off-chain user to simulate the effects of their redemption at the current block, given current on-chain conditions. - MUST return as close to and no more than the exact amount of assets that would be withdrawn in a redeem call   in the same transaction. I.e. redeem should return the same or more assets as previewRedeem if called in the   same transaction. - MUST NOT account for redemption limits like those returned from maxRedeem and should always act as though the   redemption would be accepted, regardless if the user has enough shares, etc. - MUST be inclusive of withdrawal fees. Integrators should be aware of the existence of withdrawal fees. - MUST NOT revert. NOTE: any unfavorable discrepancy between convertToAssets and previewRedeem SHOULD be considered slippage in share price or some other type of condition, meaning the depositor will lose assets by redeeming.\"},\"previewWithdraw(uint256)\":{\"details\":\"Allows an on-chain or off-chain user to simulate the effects of their withdrawal at the current block, given current on-chain conditions. - MUST return as close to and no fewer than the exact amount of Vault shares that would be burned in a withdraw   call in the same transaction. I.e. withdraw should return the same or fewer shares as previewWithdraw if   called   in the same transaction. - MUST NOT account for withdrawal limits like those returned from maxWithdraw and should always act as though   the withdrawal would be accepted, regardless if the user has enough shares, etc. - MUST be inclusive of withdrawal fees. Integrators should be aware of the existence of withdrawal fees. - MUST NOT revert. NOTE: any unfavorable discrepancy between convertToShares and previewWithdraw SHOULD be considered slippage in share price or some other type of condition, meaning the depositor will lose assets by depositing.\"},\"redeem(uint256,address,address)\":{\"details\":\"Burns exactly shares from owner and sends assets of underlying tokens to receiver. - MUST emit the Withdraw event. - MAY support an additional flow in which the underlying tokens are owned by the Vault contract before the   redeem execution, and are accounted for during redeem. - MUST revert if all of shares cannot be redeemed (due to withdrawal limit being reached, slippage, the owner   not having enough shares, etc). NOTE: some implementations will require pre-requesting to the Vault before a withdrawal may be performed. Those methods should be performed separately.\"},\"symbol()\":{\"details\":\"Returns the symbol of the token.\"},\"totalAssets()\":{\"details\":\"Returns the total amount of the underlying asset that is \\u201cmanaged\\u201d by Vault. - SHOULD include any compounding that occurs from yield. - MUST be inclusive of any fees that are charged against assets in the Vault. - MUST NOT revert.\"},\"totalSupply()\":{\"details\":\"Returns the value of tokens in existence.\"},\"transfer(address,uint256)\":{\"details\":\"Moves a `value` amount of tokens from the caller's account to `to`. Returns a boolean value indicating whether the operation succeeded. Emits a {Transfer} event.\"},\"transferFrom(address,address,uint256)\":{\"details\":\"Moves a `value` amount of tokens from `from` to `to` using the allowance mechanism. `value` is then deducted from the caller's allowance. Returns a boolean value indicating whether the operation succeeded. Emits a {Transfer} event.\"},\"withdraw(uint256,address,address)\":{\"details\":\"Burns shares from owner and sends exactly assets of underlying tokens to receiver. - MUST emit the Withdraw event. - MAY support an additional flow in which the underlying tokens are owned by the Vault contract before the   withdraw execution, and are accounted for during withdraw. - MUST revert if all of assets cannot be withdrawn (due to withdrawal limit being reached, slippage, the owner   not having enough shares, etc). Note that some implementations will require pre-requesting to the Vault before a withdrawal may be performed. Those methods should be performed separately.\"}},\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{},\"version\":1}},\"settings\":{\"compilationTarget\":{\"@openzeppelin/contracts/interfaces/IERC4626.sol\":\"IERC4626\"},\"evmVersion\":\"prague\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"enabled\":true,\"runs\":200},\"remappings\":[]},\"sources\":{\"@openzeppelin/contracts/interfaces/IERC4626.sol\":{\"keccak256\":\"0xece5cbf726293ae6be1fbfade2936f052e1b399ed395ba1e221540ab82b62628\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://a9b97e58e90799e681dccbd4a8e469c6ebc2baf11312ad08f14332646123dd4b\",\"dweb:/ipfs/QmdamCQfxcuYinSNd3Et7VNo3oY98XSv4XCUQyq9xfMNUy\"]},\"@openzeppelin/contracts/token/ERC20/IERC20.sol\":{\"keccak256\":\"0x74ed01eb66b923d0d0cfe3be84604ac04b76482a55f9dd655e1ef4d367f95bc2\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://5282825a626cfe924e504274b864a652b0023591fa66f06a067b25b51ba9b303\",\"dweb:/ipfs/QmeCfPykghhMc81VJTrHTC7sF6CRvaA1FXVq2pJhwYp1dV\"]},\"@openzeppelin/contracts/token/ERC20/extensions/IERC20Metadata.sol\":{\"keccak256\":\"0xd6fa4088198f04eef10c5bce8a2f4d60554b7ec4b987f684393c01bf79b94d9f\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://f95ee0bbd4dd3ac730d066ba3e785ded4565e890dbec2fa7d3b9fe3bad9d0d6e\",\"dweb:/ipfs/QmSLr6bHkPFWT7ntj34jmwfyskpwo97T9jZUrk5sz3sdtR\"]}},\"version\":1}","storageLayout":{"storage":[],"types":null}}},"@openzeppelin/contracts/interfaces/draft-IERC1822.sol":{"IERC1822Proxiable":{"abi":[{"inputs":[],"name":"proxiableUUID","outputs":[{"internalType":"bytes32","name":"","type":"bytes32"}],"stateMutability":"view","type":"function"}],"evm":{"bytecode":{"functionDebugData":{},"generatedSources":[],"linkReferences":{},"object":"","opcodes":"","sourceMap":""},"deployedBytecode":{"functionDebugData":{},"generatedSources":[],"immutableReferences":{},"linkReferences":{},"object":"","opcodes":"","sourceMap":""},"methodIdentifiers":{"proxiableUUID()":"52d1902d"}},"metadata":"{\"compiler\":{\"version\":\"0.8.30+commit.73712a01\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"inputs\":[],\"name\":\"proxiableUUID\",\"outputs\":[{\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"}],\"stateMutability\":\"view\",\"type\":\"function\"}],\"devdoc\":{\"details\":\"ERC-1822: Universal Upgradeable Proxy Standard (UUPS) documents a method for upgradeability through a simplified proxy whose upgrades are fully controlled by the current implementation.\",\"kind\":\"dev\",\"methods\":{\"proxiableUUID()\":{\"details\":\"Returns the storage slot that the proxiable contract assumes is being used to store the implementation address. IMPORTANT: A proxy pointing at a proxiable contract should not be considered proxiable itself, because this risks bricking a proxy that upgrades to it, by delegating to itself until out of gas. Thus it is critical that this function revert if invoked through a proxy.\"}},\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{},\"version\":1}},\"settings\":{\"compilationTarget\":{\"@openzeppelin/contracts/interfaces/draft-IERC1822.sol\":\"IERC1822Proxiable\"},\"evmVersion\":\"prague\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"enabled\":true,\"runs\":200},\"remappings\":[]},\"sources\":{\"@openzeppelin/contracts/interfaces/draft-IERC1822.sol\":{\"keccak256\":\"0x82f757819bf2429a0d4db141b99a4bbe5039e4ef86dfb94e2e6d40577ed5b28b\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://37c30ed931e19fb71fdb806bb504cfdb9913b7127545001b64d4487783374422\",\"dweb:/ipfs/QmUBHpv4hm3ZmwJ4GH8BeVzK4mv41Q6vBbWXxn8HExPXza\"]}},\"version\":1}","storageLayout":{"storage":[],"types":null}}},"@openzeppelin/contracts/interfaces/draft-IERC6093.sol":{"IERC1155Errors":{"abi":[{"inputs":[{"internalType":"address","name":"sender","type":"address"},{"internalType":"uint256","name":"balance","type":"uint256"},{"internalType":"uint256","name":"needed","type":"uint256"},{"internalType":"uint256","name":"tokenId","type":"uint256"}],"name":"ERC1155InsufficientBalance","type":"error"},{"inputs":[{"internalType":"address","name":"approver","type":"address"}],"name":"ERC1155InvalidApprover","type":"error"},{"inputs":[{"internalType":"uint256","name":"idsLength","type":"uint256"},{"internalType":"uint256","name":"valuesLength","type":"uint256"}],"name":"ERC1155InvalidArrayLength","type":"error"},{"inputs":[{"internalType":"address","name":"operator","type":"address"}],"name":"ERC1155InvalidOperator","type":"error"},{"inputs":[{"internalType":"address","name":"receiver","type":"address"}],"name":"ERC1155InvalidReceiver","type":"error"},{"inputs":[{"internalType":"address","name":"sender","type":"address"}],"name":"ERC1155InvalidSender","type":"error"},{"inputs":[{"internalType":"address","name":"operator","type":"address"},{"internalType":"address","name":"owner","type":"address"}],"name":"ERC1155MissingApprovalForAll","type":"error"}],"evm":{"bytecode":{"functionDebugData":{},"generatedSources":[],"linkReferences":{},"object":"","opcodes":"","sourceMap":""},"deployedBytecode":{"functionDebugData":{},"generatedSources":[],"immutableReferences":{},"linkReferences":{},"object":"","opcodes":"","sourceMap":""},"methodIdentifiers":{}},"metadata":"{\"compiler\":{\"version\":\"0.8.30+commit.73712a01\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"inputs\":[{\"internalType\":\"address\",\"name\":\"sender\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"balance\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"needed\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"tokenId\",\"type\":\"uint256\"}],\"name\":\"ERC1155InsufficientBalance\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"approver\",\"type\":\"address\"}],\"name\":\"ERC1155InvalidApprover\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"idsLength\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"valuesLength\",\"type\":\"uint256\"}],\"name\":\"ERC1155InvalidArrayLength\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"operator\",\"type\":\"address\"}],\"name\":\"ERC1155InvalidOperator\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"receiver\",\"type\":\"address\"}],\"name\":\"ERC1155InvalidReceiver\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"sender\",\"type\":\"address\"}],\"name\":\"ERC1155InvalidSender\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"operator\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"}],\"name\":\"ERC1155MissingApprovalForAll\",\"type\":\"error\"}],\"devdoc\":{\"details\":\"Standard ERC-1155 Errors Interface of the https://eips.ethereum.org/EIPS/eip-6093[ERC-6093] custom errors for ERC-1155 tokens.\",\"errors\":{\"ERC1155InsufficientBalance(address,uint256,uint256,uint256)\":[{\"details\":\"Indicates an error related to the current `balance` of a `sender`. Used in transfers.\",\"params\":{\"balance\":\"Current balance for the interacting account.\",\"needed\":\"Minimum amount required to perform a transfer.\",\"sender\":\"Address whose tokens are being transferred.\",\"tokenId\":\"Identifier number of a token.\"}}],\"ERC1155InvalidApprover(address)\":[{\"details\":\"Indicates a failure with the `approver` of a token to be approved. Used in approvals.\",\"params\":{\"approver\":\"Address initiating an approval operation.\"}}],\"ERC1155InvalidArrayLength(uint256,uint256)\":[{\"details\":\"Indicates an array length mismatch between ids and values in a safeBatchTransferFrom operation. Used in batch transfers.\",\"params\":{\"idsLength\":\"Length of the array of token identifiers\",\"valuesLength\":\"Length of the array of token amounts\"}}],\"ERC1155InvalidOperator(address)\":[{\"details\":\"Indicates a failure with the `operator` to be approved. Used in approvals.\",\"params\":{\"operator\":\"Address that may be allowed to operate on tokens without being their owner.\"}}],\"ERC1155InvalidReceiver(address)\":[{\"details\":\"Indicates a failure with the token `receiver`. Used in transfers.\",\"params\":{\"receiver\":\"Address to which tokens are being transferred.\"}}],\"ERC1155InvalidSender(address)\":[{\"details\":\"Indicates a failure with the token `sender`. Used in transfers.\",\"params\":{\"sender\":\"Address whose tokens are being transferred.\"}}],\"ERC1155MissingApprovalForAll(address,address)\":[{\"details\":\"Indicates a failure with the `operator`\\u2019s approval. Used in transfers.\",\"params\":{\"operator\":\"Address that may be allowed to operate on tokens without being their owner.\",\"owner\":\"Address of the current owner of a token.\"}}]},\"kind\":\"dev\",\"methods\":{},\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{},\"version\":1}},\"settings\":{\"compilationTarget\":{\"@openzeppelin/contracts/interfaces/draft-IERC6093.sol\":\"IERC1155Errors\"},\"evmVersion\":\"prague\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"enabled\":true,\"runs\":200},\"remappings\":[]},\"sources\":{\"@openzeppelin/contracts/interfaces/draft-IERC6093.sol\":{\"keccak256\":\"0x1b88b3fb3d85ba5496d7d5f396f83ee1fddcdd6762059ff65992655b67920998\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://89393bb3212da1c0889601b9706a07b39419ddc4d2faab9eaf6e7f9152cf6a1c\",\"dweb:/ipfs/QmcCfzzxv1Bkdz1c1yF4gQCeYb6Us5BJANnzTFqawfd1HL\"]}},\"version\":1}","storageLayout":{"storage":[],"types":null}},"IERC20Errors":{"abi":[{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"allowance","type":"uint256"},{"internalType":"uint256","name":"needed","type":"uint256"}],"name":"ERC20InsufficientAllowance","type":"error"},{"inputs":[{"internalType":"address","name":"sender","type":"address"},{"internalType":"uint256","name":"balance","type":"uint256"},{"internalType":"uint256","name":"needed","type":"uint256"}],"name":"ERC20InsufficientBalance","type":"error"},{"inputs":[{"internalType":"address","name":"approver","type":"address"}],"name":"ERC20InvalidApprover","type":"error"},{"inputs":[{"internalType":"address","name":"receiver","type":"address"}],"name":"ERC20InvalidReceiver","type":"error"},{"inputs":[{"internalType":"address","name":"sender","type":"address"}],"name":"ERC20InvalidSender","type":"error"},{"inputs":[{"internalType":"address","name":"spender","type":"address"}],"name":"ERC20InvalidSpender","type":"error"}],"evm":{"bytecode":{"functionDebugData":{},"generatedSources":[],"linkReferences":{},"object":"","opcodes":"","sourceMap":""},"deployedBytecode":{"functionDebugData":{},"generatedSources":[],"immutableReferences":{},"linkReferences":{},"object":"","opcodes":"","sourceMap":""},"methodIdentifiers":{}},"metadata":"{\"compiler\":{\"version\":\"0.8.30+commit.73712a01\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"inputs\":[{\"internalType\":\"address\",\"name\":\"spender\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"allowance\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"needed\",\"type\":\"uint256\"}],\"name\":\"ERC20InsufficientAllowance\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"sender\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"balance\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"needed\",\"type\":\"uint256\"}],\"name\":\"ERC20InsufficientBalance\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"approver\",\"type\":\"address\"}],\"name\":\"ERC20InvalidApprover\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"receiver\",\"type\":\"address\"}],\"name\":\"ERC20InvalidReceiver\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"sender\",\"type\":\"address\"}],\"name\":\"ERC20InvalidSender\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"spender\",\"type\":\"address\"}],\"name\":\"ERC20InvalidSpender\",\"type\":\"error\"}],\"devdoc\":{\"details\":\"Standard ERC-20 Errors Interface of the https://eips.ethereum.org/EIPS/eip-6093[ERC-6093] custom errors for ERC-20 tokens.\",\"errors\":{\"ERC20InsufficientAllowance(address,uint256,uint256)\":[{\"details\":\"Indicates a failure with the `spender`\\u2019s `allowance`. Used in transfers.\",\"params\":{\"allowance\":\"Amount of tokens a `spender` is allowed to operate with.\",\"needed\":\"Minimum amount required to perform a transfer.\",\"spender\":\"Address that may be allowed to operate on tokens without being their owner.\"}}],\"ERC20InsufficientBalance(address,uint256,uint256)\":[{\"details\":\"Indicates an error related to the current `balance` of a `sender`. Used in transfers.\",\"params\":{\"balance\":\"Current balance for the interacting account.\",\"needed\":\"Minimum amount required to perform a transfer.\",\"sender\":\"Address whose tokens are being transferred.\"}}],\"ERC20InvalidApprover(address)\":[{\"details\":\"Indicates a failure with the `approver` of a token to be approved. Used in approvals.\",\"params\":{\"approver\":\"Address initiating an approval operation.\"}}],\"ERC20InvalidReceiver(address)\":[{\"details\":\"Indicates a failure with the token `receiver`. Used in transfers.\",\"params\":{\"receiver\":\"Address to which tokens are being transferred.\"}}],\"ERC20InvalidSender(address)\":[{\"details\":\"Indicates a failure with the token `sender`. Used in transfers.\",\"params\":{\"sender\":\"Address whose tokens are being transferred.\"}}],\"ERC20InvalidSpender(address)\":[{\"details\":\"Indicates a failure with the `spender` to be approved. Used in approvals.\",\"params\":{\"spender\":\"Address that may be allowed to operate on tokens without being their owner.\"}}]},\"kind\":\"dev\",\"methods\":{},\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{},\"version\":1}},\"settings\":{\"compilationTarget\":{\"@openzeppelin/contracts/interfaces/draft-IERC6093.sol\":\"IERC20Errors\"},\"evmVersion\":\"prague\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"enabled\":true,\"runs\":200},\"remappings\":[]},\"sources\":{\"@openzeppelin/contracts/interfaces/draft-IERC6093.sol\":{\"keccak256\":\"0x1b88b3fb3d85ba5496d7d5f396f83ee1fddcdd6762059ff65992655b67920998\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://89393bb3212da1c0889601b9706a07b39419ddc4d2faab9eaf6e7f9152cf6a1c\",\"dweb:/ipfs/QmcCfzzxv1Bkdz1c1yF4gQCeYb6Us5BJANnzTFqawfd1HL\"]}},\"version\":1}","storageLayout":{"storage":[],"types":null}},"IERC721Errors":{"abi":[{"inputs":[{"internalType":"address","name":"sender","type":"address"},{"internalType":"uint256","name":"tokenId","type":"uint256"},{"internalType":"address","name":"owner","type":"address"}],"name":"ERC721IncorrectOwner","type":"error"},{"inputs":[{"internalType":"address","name":"operator","type":"address"},{"internalType":"uint256","name":"tokenId","type":"uint256"}],"name":"ERC721InsufficientApproval","type":"error"},{"inputs":[{"internalType":"address","name":"approver","type":"address"}],"name":"ERC721InvalidApprover","type":"error"},{"inputs":[{"internalType":"address","name":"operator","type":"address"}],"name":"ERC721InvalidOperator","type":"error"},{"inputs":[{"internalType":"address","name":"owner","type":"address"}],"name":"ERC721InvalidOwner","type":"error"},{"inputs":[{"internalType":"address","name":"receiver","type":"address"}],"name":"ERC721InvalidReceiver","type":"error"},{"inputs":[{"internalType":"address","name":"sender","type":"address"}],"name":"ERC721InvalidSender","type":"error"},{"inputs":[{"internalType":"uint256","name":"tokenId","type":"uint256"}],"name":"ERC721NonexistentToken","type":"error"}],"evm":{"bytecode":{"functionDebugData":{},"generatedSources":[],"linkReferences":{},"object":"","opcodes":"","sourceMap":""},"deployedBytecode":{"functionDebugData":{},"generatedSources":[],"immutableReferences":{},"linkReferences":{},"object":"","opcodes":"","sourceMap":""},"methodIdentifiers":{}},"metadata":"{\"compiler\":{\"version\":\"0.8.30+commit.73712a01\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"inputs\":[{\"internalType\":\"address\",\"name\":\"sender\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"tokenId\",\"type\":\"uint256\"},{\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"}],\"name\":\"ERC721IncorrectOwner\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"operator\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"tokenId\",\"type\":\"uint256\"}],\"name\":\"ERC721InsufficientApproval\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"approver\",\"type\":\"address\"}],\"name\":\"ERC721InvalidApprover\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"operator\",\"type\":\"address\"}],\"name\":\"ERC721InvalidOperator\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"}],\"name\":\"ERC721InvalidOwner\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"receiver\",\"type\":\"address\"}],\"name\":\"ERC721InvalidReceiver\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"sender\",\"type\":\"address\"}],\"name\":\"ERC721InvalidSender\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"tokenId\",\"type\":\"uint256\"}],\"name\":\"ERC721NonexistentToken\",\"type\":\"error\"}],\"devdoc\":{\"details\":\"Standard ERC-721 Errors Interface of the https://eips.ethereum.org/EIPS/eip-6093[ERC-6093] custom errors for ERC-721 tokens.\",\"errors\":{\"ERC721IncorrectOwner(address,uint256,address)\":[{\"details\":\"Indicates an error related to the ownership over a particular token. Used in transfers.\",\"params\":{\"owner\":\"Address of the current owner of a token.\",\"sender\":\"Address whose tokens are being transferred.\",\"tokenId\":\"Identifier number of a token.\"}}],\"ERC721InsufficientApproval(address,uint256)\":[{\"details\":\"Indicates a failure with the `operator`\\u2019s approval. Used in transfers.\",\"params\":{\"operator\":\"Address that may be allowed to operate on tokens without being their owner.\",\"tokenId\":\"Identifier number of a token.\"}}],\"ERC721InvalidApprover(address)\":[{\"details\":\"Indicates a failure with the `approver` of a token to be approved. Used in approvals.\",\"params\":{\"approver\":\"Address initiating an approval operation.\"}}],\"ERC721InvalidOperator(address)\":[{\"details\":\"Indicates a failure with the `operator` to be approved. Used in approvals.\",\"params\":{\"operator\":\"Address that may be allowed to operate on tokens without being their owner.\"}}],\"ERC721InvalidOwner(address)\":[{\"details\":\"Indicates that an address can't be an owner. For example, `address(0)` is a forbidden owner in ERC-721. Used in balance queries.\",\"params\":{\"owner\":\"Address of the current owner of a token.\"}}],\"ERC721InvalidReceiver(address)\":[{\"details\":\"Indicates a failure with the token `receiver`. Used in transfers.\",\"params\":{\"receiver\":\"Address to which tokens are being transferred.\"}}],\"ERC721InvalidSender(address)\":[{\"details\":\"Indicates a failure with the token `sender`. Used in transfers.\",\"params\":{\"sender\":\"Address whose tokens are being transferred.\"}}],\"ERC721NonexistentToken(uint256)\":[{\"details\":\"Indicates a `tokenId` whose `owner` is the zero address.\",\"params\":{\"tokenId\":\"Identifier number of a token.\"}}]},\"kind\":\"dev\",\"methods\":{},\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{},\"version\":1}},\"settings\":{\"compilationTarget\":{\"@openzeppelin/contracts/interfaces/draft-IERC6093.sol\":\"IERC721Errors\"},\"evmVersion\":\"prague\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"enabled\":true,\"runs\":200},\"remappings\":[]},\"sources\":{\"@openzeppelin/contracts/interfaces/draft-IERC6093.sol\":{\"keccak256\":\"0x1b88b3fb3d85ba5496d7d5f396f83ee1fddcdd6762059ff65992655b67920998\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://89393bb3212da1c0889601b9706a07b39419ddc4d2faab9eaf6e7f9152cf6a1c\",\"dweb:/ipfs/QmcCfzzxv1Bkdz1c1yF4gQCeYb6Us5BJANnzTFqawfd1HL\"]}},\"version\":1}","storageLayout":{"storage":[],"types":null}}},"@openzeppelin/contracts/proxy/ERC1967/ERC1967Proxy.sol":{"ERC1967Proxy":{"abi":[{"inputs":[{"internalType":"address","name":"implementation","type":"address"},{"internalType":"bytes","name":"_data","type":"bytes"}],"stateMutability":"payable","type":"constructor"},{"inputs":[{"internalType":"address","name":"target","type":"address"}],"name":"AddressEmptyCode","type":"error"},{"inputs":[{"internalType":"address","name":"implementation","type":"address"}],"name":"ERC1967InvalidImplementation","type":"error"},{"inputs":[],"name":"ERC1967NonPayable","type":"error"},{"inputs":[],"name":"FailedCall","type":"error"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"implementation","type":"address"}],"name":"Upgraded","type":"event"},{"stateMutability":"payable","type":"fallback"}],"evm":{"bytecode":{"functionDebugData":{"@_7299":{"entryPoint":null,"id":7299,"parameterSlots":2,"returnSlots":0},"@_checkNonPayable_7605":{"entryPoint":429,"id":7605,"parameterSlots":0,"returnSlots":0},"@_setImplementation_7385":{"entryPoint":145,"id":7385,"parameterSlots":1,"returnSlots":0},"@bubbleRevert_10459":{"entryPoint":506,"id":10459,"parameterSlots":0,"returnSlots":0},"@delegatecallNoReturn_10421":{"entryPoint":462,"id":10421,"parameterSlots":2,"returnSlots":1},"@functionDelegateCall_10166":{"entryPoint":268,"id":10166,"parameterSlots":2,"returnSlots":1},"@getAddressSlot_10943":{"entryPoint":null,"id":10943,"parameterSlots":1,"returnSlots":1},"@returnDataSize_10445":{"entryPoint":null,"id":10445,"parameterSlots":0,"returnSlots":1},"@returnData_10453":{"entryPoint":481,"id":10453,"parameterSlots":0,"returnSlots":1},"@upgradeToAndCall_7421":{"entryPoint":51,"id":7421,"parameterSlots":2,"returnSlots":0},"abi_decode_tuple_t_addresst_bytes_memory_ptr_fromMemory":{"entryPoint":537,"id":null,"parameterSlots":2,"returnSlots":2},"abi_encode_tuple_t_address__to_t_address__fromStack_reversed":{"entryPoint":null,"id":null,"parameterSlots":2,"returnSlots":1},"panic_error_0x41":{"entryPoint":517,"id":null,"parameterSlots":0,"returnSlots":0}},"generatedSources":[{"ast":{"nativeSrc":"0:1457:87","nodeType":"YulBlock","src":"0:1457:87","statements":[{"nativeSrc":"6:3:87","nodeType":"YulBlock","src":"6:3:87","statements":[]},{"body":{"nativeSrc":"46:95:87","nodeType":"YulBlock","src":"46:95:87","statements":[{"expression":{"arguments":[{"kind":"number","nativeSrc":"63:1:87","nodeType":"YulLiteral","src":"63:1:87","type":"","value":"0"},{"arguments":[{"kind":"number","nativeSrc":"70:3:87","nodeType":"YulLiteral","src":"70:3:87","type":"","value":"224"},{"kind":"number","nativeSrc":"75:10:87","nodeType":"YulLiteral","src":"75:10:87","type":"","value":"0x4e487b71"}],"functionName":{"name":"shl","nativeSrc":"66:3:87","nodeType":"YulIdentifier","src":"66:3:87"},"nativeSrc":"66:20:87","nodeType":"YulFunctionCall","src":"66:20:87"}],"functionName":{"name":"mstore","nativeSrc":"56:6:87","nodeType":"YulIdentifier","src":"56:6:87"},"nativeSrc":"56:31:87","nodeType":"YulFunctionCall","src":"56:31:87"},"nativeSrc":"56:31:87","nodeType":"YulExpressionStatement","src":"56:31:87"},{"expression":{"arguments":[{"kind":"number","nativeSrc":"103:1:87","nodeType":"YulLiteral","src":"103:1:87","type":"","value":"4"},{"kind":"number","nativeSrc":"106:4:87","nodeType":"YulLiteral","src":"106:4:87","type":"","value":"0x41"}],"functionName":{"name":"mstore","nativeSrc":"96:6:87","nodeType":"YulIdentifier","src":"96:6:87"},"nativeSrc":"96:15:87","nodeType":"YulFunctionCall","src":"96:15:87"},"nativeSrc":"96:15:87","nodeType":"YulExpressionStatement","src":"96:15:87"},{"expression":{"arguments":[{"kind":"number","nativeSrc":"127:1:87","nodeType":"YulLiteral","src":"127:1:87","type":"","value":"0"},{"kind":"number","nativeSrc":"130:4:87","nodeType":"YulLiteral","src":"130:4:87","type":"","value":"0x24"}],"functionName":{"name":"revert","nativeSrc":"120:6:87","nodeType":"YulIdentifier","src":"120:6:87"},"nativeSrc":"120:15:87","nodeType":"YulFunctionCall","src":"120:15:87"},"nativeSrc":"120:15:87","nodeType":"YulExpressionStatement","src":"120:15:87"}]},"name":"panic_error_0x41","nativeSrc":"14:127:87","nodeType":"YulFunctionDefinition","src":"14:127:87"},{"body":{"nativeSrc":"253:994:87","nodeType":"YulBlock","src":"253:994:87","statements":[{"body":{"nativeSrc":"299:16:87","nodeType":"YulBlock","src":"299:16:87","statements":[{"expression":{"arguments":[{"kind":"number","nativeSrc":"308:1:87","nodeType":"YulLiteral","src":"308:1:87","type":"","value":"0"},{"kind":"number","nativeSrc":"311:1:87","nodeType":"YulLiteral","src":"311:1:87","type":"","value":"0"}],"functionName":{"name":"revert","nativeSrc":"301:6:87","nodeType":"YulIdentifier","src":"301:6:87"},"nativeSrc":"301:12:87","nodeType":"YulFunctionCall","src":"301:12:87"},"nativeSrc":"301:12:87","nodeType":"YulExpressionStatement","src":"301:12:87"}]},"condition":{"arguments":[{"arguments":[{"name":"dataEnd","nativeSrc":"274:7:87","nodeType":"YulIdentifier","src":"274:7:87"},{"name":"headStart","nativeSrc":"283:9:87","nodeType":"YulIdentifier","src":"283:9:87"}],"functionName":{"name":"sub","nativeSrc":"270:3:87","nodeType":"YulIdentifier","src":"270:3:87"},"nativeSrc":"270:23:87","nodeType":"YulFunctionCall","src":"270:23:87"},{"kind":"number","nativeSrc":"295:2:87","nodeType":"YulLiteral","src":"295:2:87","type":"","value":"64"}],"functionName":{"name":"slt","nativeSrc":"266:3:87","nodeType":"YulIdentifier","src":"266:3:87"},"nativeSrc":"266:32:87","nodeType":"YulFunctionCall","src":"266:32:87"},"nativeSrc":"263:52:87","nodeType":"YulIf","src":"263:52:87"},{"nativeSrc":"324:29:87","nodeType":"YulVariableDeclaration","src":"324:29:87","value":{"arguments":[{"name":"headStart","nativeSrc":"343:9:87","nodeType":"YulIdentifier","src":"343:9:87"}],"functionName":{"name":"mload","nativeSrc":"337:5:87","nodeType":"YulIdentifier","src":"337:5:87"},"nativeSrc":"337:16:87","nodeType":"YulFunctionCall","src":"337:16:87"},"variables":[{"name":"value","nativeSrc":"328:5:87","nodeType":"YulTypedName","src":"328:5:87","type":""}]},{"body":{"nativeSrc":"416:16:87","nodeType":"YulBlock","src":"416:16:87","statements":[{"expression":{"arguments":[{"kind":"number","nativeSrc":"425:1:87","nodeType":"YulLiteral","src":"425:1:87","type":"","value":"0"},{"kind":"number","nativeSrc":"428:1:87","nodeType":"YulLiteral","src":"428:1:87","type":"","value":"0"}],"functionName":{"name":"revert","nativeSrc":"418:6:87","nodeType":"YulIdentifier","src":"418:6:87"},"nativeSrc":"418:12:87","nodeType":"YulFunctionCall","src":"418:12:87"},"nativeSrc":"418:12:87","nodeType":"YulExpressionStatement","src":"418:12:87"}]},"condition":{"arguments":[{"arguments":[{"name":"value","nativeSrc":"375:5:87","nodeType":"YulIdentifier","src":"375:5:87"},{"arguments":[{"name":"value","nativeSrc":"386:5:87","nodeType":"YulIdentifier","src":"386:5:87"},{"arguments":[{"arguments":[{"kind":"number","nativeSrc":"401:3:87","nodeType":"YulLiteral","src":"401:3:87","type":"","value":"160"},{"kind":"number","nativeSrc":"406:1:87","nodeType":"YulLiteral","src":"406:1:87","type":"","value":"1"}],"functionName":{"name":"shl","nativeSrc":"397:3:87","nodeType":"YulIdentifier","src":"397:3:87"},"nativeSrc":"397:11:87","nodeType":"YulFunctionCall","src":"397:11:87"},{"kind":"number","nativeSrc":"410:1:87","nodeType":"YulLiteral","src":"410:1:87","type":"","value":"1"}],"functionName":{"name":"sub","nativeSrc":"393:3:87","nodeType":"YulIdentifier","src":"393:3:87"},"nativeSrc":"393:19:87","nodeType":"YulFunctionCall","src":"393:19:87"}],"functionName":{"name":"and","nativeSrc":"382:3:87","nodeType":"YulIdentifier","src":"382:3:87"},"nativeSrc":"382:31:87","nodeType":"YulFunctionCall","src":"382:31:87"}],"functionName":{"name":"eq","nativeSrc":"372:2:87","nodeType":"YulIdentifier","src":"372:2:87"},"nativeSrc":"372:42:87","nodeType":"YulFunctionCall","src":"372:42:87"}],"functionName":{"name":"iszero","nativeSrc":"365:6:87","nodeType":"YulIdentifier","src":"365:6:87"},"nativeSrc":"365:50:87","nodeType":"YulFunctionCall","src":"365:50:87"},"nativeSrc":"362:70:87","nodeType":"YulIf","src":"362:70:87"},{"nativeSrc":"441:15:87","nodeType":"YulAssignment","src":"441:15:87","value":{"name":"value","nativeSrc":"451:5:87","nodeType":"YulIdentifier","src":"451:5:87"},"variableNames":[{"name":"value0","nativeSrc":"441:6:87","nodeType":"YulIdentifier","src":"441:6:87"}]},{"nativeSrc":"465:39:87","nodeType":"YulVariableDeclaration","src":"465:39:87","value":{"arguments":[{"arguments":[{"name":"headStart","nativeSrc":"489:9:87","nodeType":"YulIdentifier","src":"489:9:87"},{"kind":"number","nativeSrc":"500:2:87","nodeType":"YulLiteral","src":"500:2:87","type":"","value":"32"}],"functionName":{"name":"add","nativeSrc":"485:3:87","nodeType":"YulIdentifier","src":"485:3:87"},"nativeSrc":"485:18:87","nodeType":"YulFunctionCall","src":"485:18:87"}],"functionName":{"name":"mload","nativeSrc":"479:5:87","nodeType":"YulIdentifier","src":"479:5:87"},"nativeSrc":"479:25:87","nodeType":"YulFunctionCall","src":"479:25:87"},"variables":[{"name":"offset","nativeSrc":"469:6:87","nodeType":"YulTypedName","src":"469:6:87","type":""}]},{"body":{"nativeSrc":"547:16:87","nodeType":"YulBlock","src":"547:16:87","statements":[{"expression":{"arguments":[{"kind":"number","nativeSrc":"556:1:87","nodeType":"YulLiteral","src":"556:1:87","type":"","value":"0"},{"kind":"number","nativeSrc":"559:1:87","nodeType":"YulLiteral","src":"559:1:87","type":"","value":"0"}],"functionName":{"name":"revert","nativeSrc":"549:6:87","nodeType":"YulIdentifier","src":"549:6:87"},"nativeSrc":"549:12:87","nodeType":"YulFunctionCall","src":"549:12:87"},"nativeSrc":"549:12:87","nodeType":"YulExpressionStatement","src":"549:12:87"}]},"condition":{"arguments":[{"name":"offset","nativeSrc":"519:6:87","nodeType":"YulIdentifier","src":"519:6:87"},{"arguments":[{"arguments":[{"kind":"number","nativeSrc":"535:2:87","nodeType":"YulLiteral","src":"535:2:87","type":"","value":"64"},{"kind":"number","nativeSrc":"539:1:87","nodeType":"YulLiteral","src":"539:1:87","type":"","value":"1"}],"functionName":{"name":"shl","nativeSrc":"531:3:87","nodeType":"YulIdentifier","src":"531:3:87"},"nativeSrc":"531:10:87","nodeType":"YulFunctionCall","src":"531:10:87"},{"kind":"number","nativeSrc":"543:1:87","nodeType":"YulLiteral","src":"543:1:87","type":"","value":"1"}],"functionName":{"name":"sub","nativeSrc":"527:3:87","nodeType":"YulIdentifier","src":"527:3:87"},"nativeSrc":"527:18:87","nodeType":"YulFunctionCall","src":"527:18:87"}],"functionName":{"name":"gt","nativeSrc":"516:2:87","nodeType":"YulIdentifier","src":"516:2:87"},"nativeSrc":"516:30:87","nodeType":"YulFunctionCall","src":"516:30:87"},"nativeSrc":"513:50:87","nodeType":"YulIf","src":"513:50:87"},{"nativeSrc":"572:32:87","nodeType":"YulVariableDeclaration","src":"572:32:87","value":{"arguments":[{"name":"headStart","nativeSrc":"586:9:87","nodeType":"YulIdentifier","src":"586:9:87"},{"name":"offset","nativeSrc":"597:6:87","nodeType":"YulIdentifier","src":"597:6:87"}],"functionName":{"name":"add","nativeSrc":"582:3:87","nodeType":"YulIdentifier","src":"582:3:87"},"nativeSrc":"582:22:87","nodeType":"YulFunctionCall","src":"582:22:87"},"variables":[{"name":"_1","nativeSrc":"576:2:87","nodeType":"YulTypedName","src":"576:2:87","type":""}]},{"body":{"nativeSrc":"652:16:87","nodeType":"YulBlock","src":"652:16:87","statements":[{"expression":{"arguments":[{"kind":"number","nativeSrc":"661:1:87","nodeType":"YulLiteral","src":"661:1:87","type":"","value":"0"},{"kind":"number","nativeSrc":"664:1:87","nodeType":"YulLiteral","src":"664:1:87","type":"","value":"0"}],"functionName":{"name":"revert","nativeSrc":"654:6:87","nodeType":"YulIdentifier","src":"654:6:87"},"nativeSrc":"654:12:87","nodeType":"YulFunctionCall","src":"654:12:87"},"nativeSrc":"654:12:87","nodeType":"YulExpressionStatement","src":"654:12:87"}]},"condition":{"arguments":[{"arguments":[{"arguments":[{"name":"_1","nativeSrc":"631:2:87","nodeType":"YulIdentifier","src":"631:2:87"},{"kind":"number","nativeSrc":"635:4:87","nodeType":"YulLiteral","src":"635:4:87","type":"","value":"0x1f"}],"functionName":{"name":"add","nativeSrc":"627:3:87","nodeType":"YulIdentifier","src":"627:3:87"},"nativeSrc":"627:13:87","nodeType":"YulFunctionCall","src":"627:13:87"},{"name":"dataEnd","nativeSrc":"642:7:87","nodeType":"YulIdentifier","src":"642:7:87"}],"functionName":{"name":"slt","nativeSrc":"623:3:87","nodeType":"YulIdentifier","src":"623:3:87"},"nativeSrc":"623:27:87","nodeType":"YulFunctionCall","src":"623:27:87"}],"functionName":{"name":"iszero","nativeSrc":"616:6:87","nodeType":"YulIdentifier","src":"616:6:87"},"nativeSrc":"616:35:87","nodeType":"YulFunctionCall","src":"616:35:87"},"nativeSrc":"613:55:87","nodeType":"YulIf","src":"613:55:87"},{"nativeSrc":"677:23:87","nodeType":"YulVariableDeclaration","src":"677:23:87","value":{"arguments":[{"name":"_1","nativeSrc":"697:2:87","nodeType":"YulIdentifier","src":"697:2:87"}],"functionName":{"name":"mload","nativeSrc":"691:5:87","nodeType":"YulIdentifier","src":"691:5:87"},"nativeSrc":"691:9:87","nodeType":"YulFunctionCall","src":"691:9:87"},"variables":[{"name":"length","nativeSrc":"681:6:87","nodeType":"YulTypedName","src":"681:6:87","type":""}]},{"body":{"nativeSrc":"743:22:87","nodeType":"YulBlock","src":"743:22:87","statements":[{"expression":{"arguments":[],"functionName":{"name":"panic_error_0x41","nativeSrc":"745:16:87","nodeType":"YulIdentifier","src":"745:16:87"},"nativeSrc":"745:18:87","nodeType":"YulFunctionCall","src":"745:18:87"},"nativeSrc":"745:18:87","nodeType":"YulExpressionStatement","src":"745:18:87"}]},"condition":{"arguments":[{"name":"length","nativeSrc":"715:6:87","nodeType":"YulIdentifier","src":"715:6:87"},{"arguments":[{"arguments":[{"kind":"number","nativeSrc":"731:2:87","nodeType":"YulLiteral","src":"731:2:87","type":"","value":"64"},{"kind":"number","nativeSrc":"735:1:87","nodeType":"YulLiteral","src":"735:1:87","type":"","value":"1"}],"functionName":{"name":"shl","nativeSrc":"727:3:87","nodeType":"YulIdentifier","src":"727:3:87"},"nativeSrc":"727:10:87","nodeType":"YulFunctionCall","src":"727:10:87"},{"kind":"number","nativeSrc":"739:1:87","nodeType":"YulLiteral","src":"739:1:87","type":"","value":"1"}],"functionName":{"name":"sub","nativeSrc":"723:3:87","nodeType":"YulIdentifier","src":"723:3:87"},"nativeSrc":"723:18:87","nodeType":"YulFunctionCall","src":"723:18:87"}],"functionName":{"name":"gt","nativeSrc":"712:2:87","nodeType":"YulIdentifier","src":"712:2:87"},"nativeSrc":"712:30:87","nodeType":"YulFunctionCall","src":"712:30:87"},"nativeSrc":"709:56:87","nodeType":"YulIf","src":"709:56:87"},{"nativeSrc":"774:23:87","nodeType":"YulVariableDeclaration","src":"774:23:87","value":{"arguments":[{"kind":"number","nativeSrc":"794:2:87","nodeType":"YulLiteral","src":"794:2:87","type":"","value":"64"}],"functionName":{"name":"mload","nativeSrc":"788:5:87","nodeType":"YulIdentifier","src":"788:5:87"},"nativeSrc":"788:9:87","nodeType":"YulFunctionCall","src":"788:9:87"},"variables":[{"name":"memPtr","nativeSrc":"778:6:87","nodeType":"YulTypedName","src":"778:6:87","type":""}]},{"nativeSrc":"806:85:87","nodeType":"YulVariableDeclaration","src":"806:85:87","value":{"arguments":[{"name":"memPtr","nativeSrc":"828:6:87","nodeType":"YulIdentifier","src":"828:6:87"},{"arguments":[{"arguments":[{"arguments":[{"arguments":[{"name":"length","nativeSrc":"852:6:87","nodeType":"YulIdentifier","src":"852:6:87"},{"kind":"number","nativeSrc":"860:4:87","nodeType":"YulLiteral","src":"860:4:87","type":"","value":"0x1f"}],"functionName":{"name":"add","nativeSrc":"848:3:87","nodeType":"YulIdentifier","src":"848:3:87"},"nativeSrc":"848:17:87","nodeType":"YulFunctionCall","src":"848:17:87"},{"arguments":[{"kind":"number","nativeSrc":"871:2:87","nodeType":"YulLiteral","src":"871:2:87","type":"","value":"31"}],"functionName":{"name":"not","nativeSrc":"867:3:87","nodeType":"YulIdentifier","src":"867:3:87"},"nativeSrc":"867:7:87","nodeType":"YulFunctionCall","src":"867:7:87"}],"functionName":{"name":"and","nativeSrc":"844:3:87","nodeType":"YulIdentifier","src":"844:3:87"},"nativeSrc":"844:31:87","nodeType":"YulFunctionCall","src":"844:31:87"},{"kind":"number","nativeSrc":"877:2:87","nodeType":"YulLiteral","src":"877:2:87","type":"","value":"63"}],"functionName":{"name":"add","nativeSrc":"840:3:87","nodeType":"YulIdentifier","src":"840:3:87"},"nativeSrc":"840:40:87","nodeType":"YulFunctionCall","src":"840:40:87"},{"arguments":[{"kind":"number","nativeSrc":"886:2:87","nodeType":"YulLiteral","src":"886:2:87","type":"","value":"31"}],"functionName":{"name":"not","nativeSrc":"882:3:87","nodeType":"YulIdentifier","src":"882:3:87"},"nativeSrc":"882:7:87","nodeType":"YulFunctionCall","src":"882:7:87"}],"functionName":{"name":"and","nativeSrc":"836:3:87","nodeType":"YulIdentifier","src":"836:3:87"},"nativeSrc":"836:54:87","nodeType":"YulFunctionCall","src":"836:54:87"}],"functionName":{"name":"add","nativeSrc":"824:3:87","nodeType":"YulIdentifier","src":"824:3:87"},"nativeSrc":"824:67:87","nodeType":"YulFunctionCall","src":"824:67:87"},"variables":[{"name":"newFreePtr","nativeSrc":"810:10:87","nodeType":"YulTypedName","src":"810:10:87","type":""}]},{"body":{"nativeSrc":"966:22:87","nodeType":"YulBlock","src":"966:22:87","statements":[{"expression":{"arguments":[],"functionName":{"name":"panic_error_0x41","nativeSrc":"968:16:87","nodeType":"YulIdentifier","src":"968:16:87"},"nativeSrc":"968:18:87","nodeType":"YulFunctionCall","src":"968:18:87"},"nativeSrc":"968:18:87","nodeType":"YulExpressionStatement","src":"968:18:87"}]},"condition":{"arguments":[{"arguments":[{"name":"newFreePtr","nativeSrc":"909:10:87","nodeType":"YulIdentifier","src":"909:10:87"},{"arguments":[{"arguments":[{"kind":"number","nativeSrc":"929:2:87","nodeType":"YulLiteral","src":"929:2:87","type":"","value":"64"},{"kind":"number","nativeSrc":"933:1:87","nodeType":"YulLiteral","src":"933:1:87","type":"","value":"1"}],"functionName":{"name":"shl","nativeSrc":"925:3:87","nodeType":"YulIdentifier","src":"925:3:87"},"nativeSrc":"925:10:87","nodeType":"YulFunctionCall","src":"925:10:87"},{"kind":"number","nativeSrc":"937:1:87","nodeType":"YulLiteral","src":"937:1:87","type":"","value":"1"}],"functionName":{"name":"sub","nativeSrc":"921:3:87","nodeType":"YulIdentifier","src":"921:3:87"},"nativeSrc":"921:18:87","nodeType":"YulFunctionCall","src":"921:18:87"}],"functionName":{"name":"gt","nativeSrc":"906:2:87","nodeType":"YulIdentifier","src":"906:2:87"},"nativeSrc":"906:34:87","nodeType":"YulFunctionCall","src":"906:34:87"},{"arguments":[{"name":"newFreePtr","nativeSrc":"945:10:87","nodeType":"YulIdentifier","src":"945:10:87"},{"name":"memPtr","nativeSrc":"957:6:87","nodeType":"YulIdentifier","src":"957:6:87"}],"functionName":{"name":"lt","nativeSrc":"942:2:87","nodeType":"YulIdentifier","src":"942:2:87"},"nativeSrc":"942:22:87","nodeType":"YulFunctionCall","src":"942:22:87"}],"functionName":{"name":"or","nativeSrc":"903:2:87","nodeType":"YulIdentifier","src":"903:2:87"},"nativeSrc":"903:62:87","nodeType":"YulFunctionCall","src":"903:62:87"},"nativeSrc":"900:88:87","nodeType":"YulIf","src":"900:88:87"},{"expression":{"arguments":[{"kind":"number","nativeSrc":"1004:2:87","nodeType":"YulLiteral","src":"1004:2:87","type":"","value":"64"},{"name":"newFreePtr","nativeSrc":"1008:10:87","nodeType":"YulIdentifier","src":"1008:10:87"}],"functionName":{"name":"mstore","nativeSrc":"997:6:87","nodeType":"YulIdentifier","src":"997:6:87"},"nativeSrc":"997:22:87","nodeType":"YulFunctionCall","src":"997:22:87"},"nativeSrc":"997:22:87","nodeType":"YulExpressionStatement","src":"997:22:87"},{"expression":{"arguments":[{"name":"memPtr","nativeSrc":"1035:6:87","nodeType":"YulIdentifier","src":"1035:6:87"},{"name":"length","nativeSrc":"1043:6:87","nodeType":"YulIdentifier","src":"1043:6:87"}],"functionName":{"name":"mstore","nativeSrc":"1028:6:87","nodeType":"YulIdentifier","src":"1028:6:87"},"nativeSrc":"1028:22:87","nodeType":"YulFunctionCall","src":"1028:22:87"},"nativeSrc":"1028:22:87","nodeType":"YulExpressionStatement","src":"1028:22:87"},{"body":{"nativeSrc":"1100:16:87","nodeType":"YulBlock","src":"1100:16:87","statements":[{"expression":{"arguments":[{"kind":"number","nativeSrc":"1109:1:87","nodeType":"YulLiteral","src":"1109:1:87","type":"","value":"0"},{"kind":"number","nativeSrc":"1112:1:87","nodeType":"YulLiteral","src":"1112:1:87","type":"","value":"0"}],"functionName":{"name":"revert","nativeSrc":"1102:6:87","nodeType":"YulIdentifier","src":"1102:6:87"},"nativeSrc":"1102:12:87","nodeType":"YulFunctionCall","src":"1102:12:87"},"nativeSrc":"1102:12:87","nodeType":"YulExpressionStatement","src":"1102:12:87"}]},"condition":{"arguments":[{"arguments":[{"arguments":[{"name":"_1","nativeSrc":"1073:2:87","nodeType":"YulIdentifier","src":"1073:2:87"},{"name":"length","nativeSrc":"1077:6:87","nodeType":"YulIdentifier","src":"1077:6:87"}],"functionName":{"name":"add","nativeSrc":"1069:3:87","nodeType":"YulIdentifier","src":"1069:3:87"},"nativeSrc":"1069:15:87","nodeType":"YulFunctionCall","src":"1069:15:87"},{"kind":"number","nativeSrc":"1086:2:87","nodeType":"YulLiteral","src":"1086:2:87","type":"","value":"32"}],"functionName":{"name":"add","nativeSrc":"1065:3:87","nodeType":"YulIdentifier","src":"1065:3:87"},"nativeSrc":"1065:24:87","nodeType":"YulFunctionCall","src":"1065:24:87"},{"name":"dataEnd","nativeSrc":"1091:7:87","nodeType":"YulIdentifier","src":"1091:7:87"}],"functionName":{"name":"gt","nativeSrc":"1062:2:87","nodeType":"YulIdentifier","src":"1062:2:87"},"nativeSrc":"1062:37:87","nodeType":"YulFunctionCall","src":"1062:37:87"},"nativeSrc":"1059:57:87","nodeType":"YulIf","src":"1059:57:87"},{"expression":{"arguments":[{"arguments":[{"name":"memPtr","nativeSrc":"1135:6:87","nodeType":"YulIdentifier","src":"1135:6:87"},{"kind":"number","nativeSrc":"1143:2:87","nodeType":"YulLiteral","src":"1143:2:87","type":"","value":"32"}],"functionName":{"name":"add","nativeSrc":"1131:3:87","nodeType":"YulIdentifier","src":"1131:3:87"},"nativeSrc":"1131:15:87","nodeType":"YulFunctionCall","src":"1131:15:87"},{"arguments":[{"name":"_1","nativeSrc":"1152:2:87","nodeType":"YulIdentifier","src":"1152:2:87"},{"kind":"number","nativeSrc":"1156:2:87","nodeType":"YulLiteral","src":"1156:2:87","type":"","value":"32"}],"functionName":{"name":"add","nativeSrc":"1148:3:87","nodeType":"YulIdentifier","src":"1148:3:87"},"nativeSrc":"1148:11:87","nodeType":"YulFunctionCall","src":"1148:11:87"},{"name":"length","nativeSrc":"1161:6:87","nodeType":"YulIdentifier","src":"1161:6:87"}],"functionName":{"name":"mcopy","nativeSrc":"1125:5:87","nodeType":"YulIdentifier","src":"1125:5:87"},"nativeSrc":"1125:43:87","nodeType":"YulFunctionCall","src":"1125:43:87"},"nativeSrc":"1125:43:87","nodeType":"YulExpressionStatement","src":"1125:43:87"},{"expression":{"arguments":[{"arguments":[{"arguments":[{"name":"memPtr","nativeSrc":"1192:6:87","nodeType":"YulIdentifier","src":"1192:6:87"},{"name":"length","nativeSrc":"1200:6:87","nodeType":"YulIdentifier","src":"1200:6:87"}],"functionName":{"name":"add","nativeSrc":"1188:3:87","nodeType":"YulIdentifier","src":"1188:3:87"},"nativeSrc":"1188:19:87","nodeType":"YulFunctionCall","src":"1188:19:87"},{"kind":"number","nativeSrc":"1209:2:87","nodeType":"YulLiteral","src":"1209:2:87","type":"","value":"32"}],"functionName":{"name":"add","nativeSrc":"1184:3:87","nodeType":"YulIdentifier","src":"1184:3:87"},"nativeSrc":"1184:28:87","nodeType":"YulFunctionCall","src":"1184:28:87"},{"kind":"number","nativeSrc":"1214:1:87","nodeType":"YulLiteral","src":"1214:1:87","type":"","value":"0"}],"functionName":{"name":"mstore","nativeSrc":"1177:6:87","nodeType":"YulIdentifier","src":"1177:6:87"},"nativeSrc":"1177:39:87","nodeType":"YulFunctionCall","src":"1177:39:87"},"nativeSrc":"1177:39:87","nodeType":"YulExpressionStatement","src":"1177:39:87"},{"nativeSrc":"1225:16:87","nodeType":"YulAssignment","src":"1225:16:87","value":{"name":"memPtr","nativeSrc":"1235:6:87","nodeType":"YulIdentifier","src":"1235:6:87"},"variableNames":[{"name":"value1","nativeSrc":"1225:6:87","nodeType":"YulIdentifier","src":"1225:6:87"}]}]},"name":"abi_decode_tuple_t_addresst_bytes_memory_ptr_fromMemory","nativeSrc":"146:1101:87","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nativeSrc":"211:9:87","nodeType":"YulTypedName","src":"211:9:87","type":""},{"name":"dataEnd","nativeSrc":"222:7:87","nodeType":"YulTypedName","src":"222:7:87","type":""}],"returnVariables":[{"name":"value0","nativeSrc":"234:6:87","nodeType":"YulTypedName","src":"234:6:87","type":""},{"name":"value1","nativeSrc":"242:6:87","nodeType":"YulTypedName","src":"242:6:87","type":""}],"src":"146:1101:87"},{"body":{"nativeSrc":"1353:102:87","nodeType":"YulBlock","src":"1353:102:87","statements":[{"nativeSrc":"1363:26:87","nodeType":"YulAssignment","src":"1363:26:87","value":{"arguments":[{"name":"headStart","nativeSrc":"1375:9:87","nodeType":"YulIdentifier","src":"1375:9:87"},{"kind":"number","nativeSrc":"1386:2:87","nodeType":"YulLiteral","src":"1386:2:87","type":"","value":"32"}],"functionName":{"name":"add","nativeSrc":"1371:3:87","nodeType":"YulIdentifier","src":"1371:3:87"},"nativeSrc":"1371:18:87","nodeType":"YulFunctionCall","src":"1371:18:87"},"variableNames":[{"name":"tail","nativeSrc":"1363:4:87","nodeType":"YulIdentifier","src":"1363:4:87"}]},{"expression":{"arguments":[{"name":"headStart","nativeSrc":"1405:9:87","nodeType":"YulIdentifier","src":"1405:9:87"},{"arguments":[{"name":"value0","nativeSrc":"1420:6:87","nodeType":"YulIdentifier","src":"1420:6:87"},{"arguments":[{"arguments":[{"kind":"number","nativeSrc":"1436:3:87","nodeType":"YulLiteral","src":"1436:3:87","type":"","value":"160"},{"kind":"number","nativeSrc":"1441:1:87","nodeType":"YulLiteral","src":"1441:1:87","type":"","value":"1"}],"functionName":{"name":"shl","nativeSrc":"1432:3:87","nodeType":"YulIdentifier","src":"1432:3:87"},"nativeSrc":"1432:11:87","nodeType":"YulFunctionCall","src":"1432:11:87"},{"kind":"number","nativeSrc":"1445:1:87","nodeType":"YulLiteral","src":"1445:1:87","type":"","value":"1"}],"functionName":{"name":"sub","nativeSrc":"1428:3:87","nodeType":"YulIdentifier","src":"1428:3:87"},"nativeSrc":"1428:19:87","nodeType":"YulFunctionCall","src":"1428:19:87"}],"functionName":{"name":"and","nativeSrc":"1416:3:87","nodeType":"YulIdentifier","src":"1416:3:87"},"nativeSrc":"1416:32:87","nodeType":"YulFunctionCall","src":"1416:32:87"}],"functionName":{"name":"mstore","nativeSrc":"1398:6:87","nodeType":"YulIdentifier","src":"1398:6:87"},"nativeSrc":"1398:51:87","nodeType":"YulFunctionCall","src":"1398:51:87"},"nativeSrc":"1398:51:87","nodeType":"YulExpressionStatement","src":"1398:51:87"}]},"name":"abi_encode_tuple_t_address__to_t_address__fromStack_reversed","nativeSrc":"1252:203:87","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nativeSrc":"1322:9:87","nodeType":"YulTypedName","src":"1322:9:87","type":""},{"name":"value0","nativeSrc":"1333:6:87","nodeType":"YulTypedName","src":"1333:6:87","type":""}],"returnVariables":[{"name":"tail","nativeSrc":"1344:4:87","nodeType":"YulTypedName","src":"1344:4:87","type":""}],"src":"1252:203:87"}]},"contents":"{\n    { }\n    function panic_error_0x41()\n    {\n        mstore(0, shl(224, 0x4e487b71))\n        mstore(4, 0x41)\n        revert(0, 0x24)\n    }\n    function abi_decode_tuple_t_addresst_bytes_memory_ptr_fromMemory(headStart, dataEnd) -> value0, value1\n    {\n        if slt(sub(dataEnd, headStart), 64) { 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        let offset := mload(add(headStart, 32))\n        if gt(offset, sub(shl(64, 1), 1)) { revert(0, 0) }\n        let _1 := add(headStart, offset)\n        if iszero(slt(add(_1, 0x1f), dataEnd)) { revert(0, 0) }\n        let length := mload(_1)\n        if gt(length, sub(shl(64, 1), 1)) { panic_error_0x41() }\n        let memPtr := mload(64)\n        let newFreePtr := add(memPtr, and(add(and(add(length, 0x1f), not(31)), 63), not(31)))\n        if or(gt(newFreePtr, sub(shl(64, 1), 1)), lt(newFreePtr, memPtr)) { panic_error_0x41() }\n        mstore(64, newFreePtr)\n        mstore(memPtr, length)\n        if gt(add(add(_1, length), 32), dataEnd) { revert(0, 0) }\n        mcopy(add(memPtr, 32), add(_1, 32), length)\n        mstore(add(add(memPtr, length), 32), 0)\n        value1 := 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, sub(shl(160, 1), 1)))\n    }\n}","id":87,"language":"Yul","name":"#utility.yul"}],"linkReferences":{},"object":"608060405260405161039738038061039783398101604081905261002291610219565b61002c8282610033565b50506102e8565b61003c82610091565b6040516001600160a01b038316907fbc7cd75a20ee27fd9adebab32041f755214dbc6bffa90cc0225b39da2e5c2d3b905f90a280511561008557610080828261010c565b505050565b61008d6101ad565b5050565b806001600160a01b03163b5f036100cb57604051634c9c8ce360e01b81526001600160a01b03821660048201526024015b60405180910390fd5b7f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc80546001600160a01b0319166001600160a01b0392909216919091179055565b60605f61011984846101ce565b905080801561013a57505f3d118061013a57505f846001600160a01b03163b115b1561014f576101476101e1565b9150506101a7565b801561017957604051639996b31560e01b81526001600160a01b03851660048201526024016100c2565b3d1561018c576101876101fa565b6101a5565b60405163d6bda27560e01b815260040160405180910390fd5b505b92915050565b34156101cc5760405163b398979f60e01b815260040160405180910390fd5b565b5f5f5f835160208501865af49392505050565b6040513d81523d5f602083013e3d602001810160405290565b6040513d5f823e3d81fd5b634e487b7160e01b5f52604160045260245ffd5b5f5f6040838503121561022a575f5ffd5b82516001600160a01b0381168114610240575f5ffd5b60208401519092506001600160401b0381111561025b575f5ffd5b8301601f8101851361026b575f5ffd5b80516001600160401b0381111561028457610284610205565b604051601f8201601f19908116603f011681016001600160401b03811182821017156102b2576102b2610205565b6040528181528282016020018710156102c9575f5ffd5b8160208401602083015e5f602083830101528093505050509250929050565b60a3806102f45f395ff3fe6080604052600a600c565b005b60186014601a565b6050565b565b5f604b7f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc546001600160a01b031690565b905090565b365f5f375f5f365f845af43d5f5f3e8080156069573d5ff35b3d5ffdfea264697066735822122032820715615b6af5eebbd7375e360eb7f78faaa705e7b7a0dba4041b79e7a22564736f6c634300081e0033","opcodes":"PUSH1 0x80 PUSH1 0x40 MSTORE PUSH1 0x40 MLOAD PUSH2 0x397 CODESIZE SUB DUP1 PUSH2 0x397 DUP4 CODECOPY DUP2 ADD PUSH1 0x40 DUP2 SWAP1 MSTORE PUSH2 0x22 SWAP2 PUSH2 0x219 JUMP JUMPDEST PUSH2 0x2C DUP3 DUP3 PUSH2 0x33 JUMP JUMPDEST POP POP PUSH2 0x2E8 JUMP JUMPDEST PUSH2 0x3C DUP3 PUSH2 0x91 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP4 AND SWAP1 PUSH32 0xBC7CD75A20EE27FD9ADEBAB32041F755214DBC6BFFA90CC0225B39DA2E5C2D3B SWAP1 PUSH0 SWAP1 LOG2 DUP1 MLOAD ISZERO PUSH2 0x85 JUMPI PUSH2 0x80 DUP3 DUP3 PUSH2 0x10C JUMP JUMPDEST POP POP POP JUMP JUMPDEST PUSH2 0x8D PUSH2 0x1AD JUMP JUMPDEST POP POP JUMP JUMPDEST DUP1 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND EXTCODESIZE PUSH0 SUB PUSH2 0xCB JUMPI PUSH1 0x40 MLOAD PUSH4 0x4C9C8CE3 PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP3 AND PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x24 ADD JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH32 0x360894A13BA1A3210667C828492DB98DCA3E2076CC3735A920A3CA505D382BBC DUP1 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB NOT AND PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP3 SWAP1 SWAP3 AND SWAP2 SWAP1 SWAP2 OR SWAP1 SSTORE JUMP JUMPDEST PUSH1 0x60 PUSH0 PUSH2 0x119 DUP5 DUP5 PUSH2 0x1CE JUMP JUMPDEST SWAP1 POP DUP1 DUP1 ISZERO PUSH2 0x13A JUMPI POP PUSH0 RETURNDATASIZE GT DUP1 PUSH2 0x13A JUMPI POP PUSH0 DUP5 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND EXTCODESIZE GT JUMPDEST ISZERO PUSH2 0x14F JUMPI PUSH2 0x147 PUSH2 0x1E1 JUMP JUMPDEST SWAP2 POP POP PUSH2 0x1A7 JUMP JUMPDEST DUP1 ISZERO PUSH2 0x179 JUMPI PUSH1 0x40 MLOAD PUSH4 0x9996B315 PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP6 AND PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x24 ADD PUSH2 0xC2 JUMP JUMPDEST RETURNDATASIZE ISZERO PUSH2 0x18C JUMPI PUSH2 0x187 PUSH2 0x1FA JUMP JUMPDEST PUSH2 0x1A5 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH4 0xD6BDA275 PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST POP JUMPDEST SWAP3 SWAP2 POP POP JUMP JUMPDEST CALLVALUE ISZERO PUSH2 0x1CC JUMPI PUSH1 0x40 MLOAD PUSH4 0xB398979F PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST JUMP JUMPDEST PUSH0 PUSH0 PUSH0 DUP4 MLOAD PUSH1 0x20 DUP6 ADD DUP7 GAS DELEGATECALL SWAP4 SWAP3 POP POP POP JUMP JUMPDEST PUSH1 0x40 MLOAD RETURNDATASIZE DUP2 MSTORE RETURNDATASIZE PUSH0 PUSH1 0x20 DUP4 ADD RETURNDATACOPY RETURNDATASIZE PUSH1 0x20 ADD DUP2 ADD PUSH1 0x40 MSTORE SWAP1 JUMP JUMPDEST PUSH1 0x40 MLOAD RETURNDATASIZE PUSH0 DUP3 RETURNDATACOPY RETURNDATASIZE DUP2 REVERT JUMPDEST PUSH4 0x4E487B71 PUSH1 0xE0 SHL PUSH0 MSTORE PUSH1 0x41 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH0 REVERT JUMPDEST PUSH0 PUSH0 PUSH1 0x40 DUP4 DUP6 SUB SLT ISZERO PUSH2 0x22A JUMPI PUSH0 PUSH0 REVERT JUMPDEST DUP3 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 AND DUP2 EQ PUSH2 0x240 JUMPI PUSH0 PUSH0 REVERT JUMPDEST PUSH1 0x20 DUP5 ADD MLOAD SWAP1 SWAP3 POP PUSH1 0x1 PUSH1 0x1 PUSH1 0x40 SHL SUB DUP2 GT ISZERO PUSH2 0x25B JUMPI PUSH0 PUSH0 REVERT JUMPDEST DUP4 ADD PUSH1 0x1F DUP2 ADD DUP6 SGT PUSH2 0x26B JUMPI PUSH0 PUSH0 REVERT JUMPDEST DUP1 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0x40 SHL SUB DUP2 GT ISZERO PUSH2 0x284 JUMPI PUSH2 0x284 PUSH2 0x205 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH1 0x1F DUP3 ADD PUSH1 0x1F NOT SWAP1 DUP2 AND PUSH1 0x3F ADD AND DUP2 ADD PUSH1 0x1 PUSH1 0x1 PUSH1 0x40 SHL SUB DUP2 GT DUP3 DUP3 LT OR ISZERO PUSH2 0x2B2 JUMPI PUSH2 0x2B2 PUSH2 0x205 JUMP JUMPDEST PUSH1 0x40 MSTORE DUP2 DUP2 MSTORE DUP3 DUP3 ADD PUSH1 0x20 ADD DUP8 LT ISZERO PUSH2 0x2C9 JUMPI PUSH0 PUSH0 REVERT JUMPDEST DUP2 PUSH1 0x20 DUP5 ADD PUSH1 0x20 DUP4 ADD MCOPY PUSH0 PUSH1 0x20 DUP4 DUP4 ADD ADD MSTORE DUP1 SWAP4 POP POP POP POP SWAP3 POP SWAP3 SWAP1 POP JUMP JUMPDEST PUSH1 0xA3 DUP1 PUSH2 0x2F4 PUSH0 CODECOPY PUSH0 RETURN INVALID PUSH1 0x80 PUSH1 0x40 MSTORE PUSH1 0xA PUSH1 0xC JUMP JUMPDEST STOP JUMPDEST PUSH1 0x18 PUSH1 0x14 PUSH1 0x1A JUMP JUMPDEST PUSH1 0x50 JUMP JUMPDEST JUMP JUMPDEST PUSH0 PUSH1 0x4B PUSH32 0x360894A13BA1A3210667C828492DB98DCA3E2076CC3735A920A3CA505D382BBC SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND SWAP1 JUMP JUMPDEST SWAP1 POP SWAP1 JUMP JUMPDEST CALLDATASIZE PUSH0 PUSH0 CALLDATACOPY PUSH0 PUSH0 CALLDATASIZE PUSH0 DUP5 GAS DELEGATECALL RETURNDATASIZE PUSH0 PUSH0 RETURNDATACOPY DUP1 DUP1 ISZERO PUSH1 0x69 JUMPI RETURNDATASIZE PUSH0 RETURN JUMPDEST RETURNDATASIZE PUSH0 REVERT INVALID LOG2 PUSH5 0x6970667358 0x22 SLT KECCAK256 ORIGIN DUP3 SMOD ISZERO PUSH2 0x5B6A CREATE2 RETURNCONTRACT 0xBB 0xD7 CALLDATACOPY MCOPY CALLDATASIZE 0xE 0xB7 0xF7 DUP16 0xAA 0xA7 SDIV SWAPN 0xB7 LOG0 0xDB LOG4 DIV SHL PUSH26 0xE7A22564736F6C634300081E0033000000000000000000000000 ","sourceMap":"600:1117:26:-:0;;;1081:133;;;;;;;;;;;;;;;;;;:::i;:::-;1155:52;1185:14;1201:5;1155:29;:52::i;:::-;1081:133;;600:1117;;2264:344:27;2355:37;2374:17;2355:18;:37::i;:::-;2407:36;;-1:-1:-1;;;;;2407:36:27;;;;;;;;2458:11;;:15;2454:148;;2489:53;2518:17;2537:4;2489:28;:53::i;:::-;;2264:344;;:::o;2454:148::-;2573:18;:16;:18::i;:::-;2264:344;;:::o;1671:281::-;1748:17;-1:-1:-1;;;;;1748:29:27;;1781:1;1748:34;1744:119;;1805:47;;-1:-1:-1;;;1805:47:27;;-1:-1:-1;;;;;1416:32:87;;1805:47:27;;;1398:51:87;1371:18;;1805:47:27;;;;;;;;1744:119;811:66;1872:73;;-1:-1:-1;;;;;;1872:73:27;-1:-1:-1;;;;;1872:73:27;;;;;;;;;;1671:281::o;4691:549:37:-;4774:12;4798;4813:47;4847:6;4855:4;4813:33;:47::i;:::-;4798:62;;4874:7;:72;;;;-1:-1:-1;4918:1:37;4583:16:40;4886:33:37;:59;;;;4944:1;4923:6;-1:-1:-1;;;;;4923:18:37;;:22;4886:59;4870:364;;;4969:25;:23;:25::i;:::-;4962:32;;;;;4870:364;5015:7;5011:223;;;5045:24;;-1:-1:-1;;;5045:24:37;;-1:-1:-1;;;;;1416:32:87;;5045:24:37;;;1398:51:87;1371:18;;5045:24:37;1252:203:87;5011:223:37;4583:16:40;5090:33:37;5086:148;;5139:27;:25;:27::i;:::-;5086:148;;;5204:19;;-1:-1:-1;;;5204:19:37;;;;;;;;;;;5086:148;4788:452;4691:549;;;;;:::o;6113:122:27:-;6163:9;:13;6159:70;;6199:19;;-1:-1:-1;;;6199:19:27;;;;;;;;;;;6159:70;6113:122::o;3383:242:40:-;3466:12;3604:4;3598;3591;3585:11;3578:4;3572;3568:15;3560:6;3553:5;3540:69;3529:80;3383:242;-1:-1:-1;;;3383:242:40:o;4698:334::-;4829:4;4823:11;4862:16;4847:32;;4932:16;4926:4;4919;4907:17;;4892:57;4997:16;4991:4;4987:27;4979:6;4975:40;4969:4;4962:54;4698:334;:::o;5099:223::-;5203:4;5197:11;5247:16;5241:4;5236:3;5221:43;5289:16;5284:3;5277:29;14:127:87;75:10;70:3;66:20;63:1;56:31;106:4;103:1;96:15;130:4;127:1;120:15;146:1101;234:6;242;295:2;283:9;274:7;270:23;266:32;263:52;;;311:1;308;301:12;263:52;337:16;;-1:-1:-1;;;;;382:31:87;;372:42;;362:70;;428:1;425;418:12;362:70;500:2;485:18;;479:25;451:5;;-1:-1:-1;;;;;;516:30:87;;513:50;;;559:1;556;549:12;513:50;582:22;;635:4;627:13;;623:27;-1:-1:-1;613:55:87;;664:1;661;654:12;613:55;691:9;;-1:-1:-1;;;;;712:30:87;;709:56;;;745:18;;:::i;:::-;794:2;788:9;886:2;848:17;;-1:-1:-1;;844:31:87;;;877:2;840:40;836:54;824:67;;-1:-1:-1;;;;;906:34:87;;942:22;;;903:62;900:88;;;968:18;;:::i;:::-;1004:2;997:22;1028;;;1069:15;;;1086:2;1065:24;1062:37;-1:-1:-1;1059:57:87;;;1112:1;1109;1102:12;1059:57;1161:6;1156:2;1152;1148:11;1143:2;1135:6;1131:15;1125:43;1214:1;1209:2;1200:6;1192;1188:19;1184:28;1177:39;1235:6;1225:16;;;;;146:1101;;;;;:::o;1252:203::-;600:1117:26;;;;;;"},"deployedBytecode":{"functionDebugData":{"@_7641":{"entryPoint":null,"id":7641,"parameterSlots":0,"returnSlots":0},"@_delegate_7617":{"entryPoint":80,"id":7617,"parameterSlots":1,"returnSlots":0},"@_fallback_7633":{"entryPoint":12,"id":7633,"parameterSlots":0,"returnSlots":0},"@_implementation_7311":{"entryPoint":26,"id":7311,"parameterSlots":0,"returnSlots":1},"@getAddressSlot_10943":{"entryPoint":null,"id":10943,"parameterSlots":1,"returnSlots":1},"@getImplementation_7358":{"entryPoint":null,"id":7358,"parameterSlots":0,"returnSlots":1}},"generatedSources":[],"immutableReferences":{},"linkReferences":{},"object":"6080604052600a600c565b005b60186014601a565b6050565b565b5f604b7f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc546001600160a01b031690565b905090565b365f5f375f5f365f845af43d5f5f3e8080156069573d5ff35b3d5ffdfea264697066735822122032820715615b6af5eebbd7375e360eb7f78faaa705e7b7a0dba4041b79e7a22564736f6c634300081e0033","opcodes":"PUSH1 0x80 PUSH1 0x40 MSTORE PUSH1 0xA PUSH1 0xC JUMP JUMPDEST STOP JUMPDEST PUSH1 0x18 PUSH1 0x14 PUSH1 0x1A JUMP JUMPDEST PUSH1 0x50 JUMP JUMPDEST JUMP JUMPDEST PUSH0 PUSH1 0x4B PUSH32 0x360894A13BA1A3210667C828492DB98DCA3E2076CC3735A920A3CA505D382BBC SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND SWAP1 JUMP JUMPDEST SWAP1 POP SWAP1 JUMP JUMPDEST CALLDATASIZE PUSH0 PUSH0 CALLDATACOPY PUSH0 PUSH0 CALLDATASIZE PUSH0 DUP5 GAS DELEGATECALL RETURNDATASIZE PUSH0 PUSH0 RETURNDATACOPY DUP1 DUP1 ISZERO PUSH1 0x69 JUMPI RETURNDATASIZE PUSH0 RETURN JUMPDEST RETURNDATASIZE PUSH0 REVERT INVALID LOG2 PUSH5 0x6970667358 0x22 SLT KECCAK256 ORIGIN DUP3 SMOD ISZERO PUSH2 0x5B6A CREATE2 RETURNCONTRACT 0xBB 0xD7 CALLDATACOPY MCOPY CALLDATASIZE 0xE 0xB7 0xF7 DUP16 0xAA 0xA7 SDIV SWAPN 0xB7 LOG0 0xDB LOG4 DIV SHL PUSH26 0xE7A22564736F6C634300081E0033000000000000000000000000 ","sourceMap":"600:1117:26:-:0;;;2676:11:28;:9;:11::i;:::-;600:1117:26;2350:83:28;2398:28;2408:17;:15;:17::i;:::-;2398:9;:28::i;:::-;2350:83::o;1583:132:26:-;1650:7;1676:32;811:66:27;1519:53;-1:-1:-1;;;;;1519:53:27;;1441:138;1676:32:26;1669:39;;1583:132;:::o;949:922:28:-;1293:14;1287:4;1281;1268:40;1513:4;1507;1491:14;1485:4;1469:14;1462:5;1449:69;1598:16;1592:4;1586;1571:44;1636:6;1703:69;;;;1824:16;1818:4;1811:30;1703:69;1741:16;1735:4;1728:30"},"methodIdentifiers":{}},"metadata":"{\"compiler\":{\"version\":\"0.8.30+commit.73712a01\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"inputs\":[{\"internalType\":\"address\",\"name\":\"implementation\",\"type\":\"address\"},{\"internalType\":\"bytes\",\"name\":\"_data\",\"type\":\"bytes\"}],\"stateMutability\":\"payable\",\"type\":\"constructor\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"target\",\"type\":\"address\"}],\"name\":\"AddressEmptyCode\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"implementation\",\"type\":\"address\"}],\"name\":\"ERC1967InvalidImplementation\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"ERC1967NonPayable\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"FailedCall\",\"type\":\"error\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"implementation\",\"type\":\"address\"}],\"name\":\"Upgraded\",\"type\":\"event\"},{\"stateMutability\":\"payable\",\"type\":\"fallback\"}],\"devdoc\":{\"details\":\"This contract implements an upgradeable proxy. It is upgradeable because calls are delegated to an implementation address that can be changed. This address is stored in storage in the location specified by https://eips.ethereum.org/EIPS/eip-1967[ERC-1967], so that it doesn't conflict with the storage layout of the implementation behind the proxy.\",\"errors\":{\"AddressEmptyCode(address)\":[{\"details\":\"There's no code at `target` (it is not a contract).\"}],\"ERC1967InvalidImplementation(address)\":[{\"details\":\"The `implementation` of the proxy is invalid.\"}],\"ERC1967NonPayable()\":[{\"details\":\"An upgrade function sees `msg.value > 0` that may be lost.\"}],\"FailedCall()\":[{\"details\":\"A call to an address target failed. The target may have reverted.\"}]},\"events\":{\"Upgraded(address)\":{\"details\":\"Emitted when the implementation is upgraded.\"}},\"kind\":\"dev\",\"methods\":{\"constructor\":{\"details\":\"Initializes the upgradeable proxy with an initial implementation specified by `implementation`. If `_data` is nonempty, it's used as data in a delegate call to `implementation`. This will typically be an encoded function call, and allows initializing the storage of the proxy like a Solidity constructor. Requirements: - If `data` is empty, `msg.value` must be zero.\"}},\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{},\"version\":1}},\"settings\":{\"compilationTarget\":{\"@openzeppelin/contracts/proxy/ERC1967/ERC1967Proxy.sol\":\"ERC1967Proxy\"},\"evmVersion\":\"prague\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"enabled\":true,\"runs\":200},\"remappings\":[]},\"sources\":{\"@openzeppelin/contracts/interfaces/IERC1967.sol\":{\"keccak256\":\"0xbf2aefe54b76d7f7bcd4f6da1080b7b1662611937d870b880db584d09cea56b5\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://f5e7e2f12e0feec75296e57f51f82fdaa8bd1551f4b8cc6560442c0bf60f818c\",\"dweb:/ipfs/QmcW9wDMaQ8RbQibMarfp17a3bABzY5KraWe2YDwuUrUoz\"]},\"@openzeppelin/contracts/proxy/ERC1967/ERC1967Proxy.sol\":{\"keccak256\":\"0xa3066ff86b94128a9d3956a63a0511fa1aae41bd455772ab587b32ff322acb2e\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://bf7b192fd82acf6187970c80548f624b1b9c80425b62fa49e7fdb538a52de049\",\"dweb:/ipfs/QmWXG1YCde1tqDYTbNwjkZDWVgPEjzaQGSDqWkyKLzaNua\"]},\"@openzeppelin/contracts/proxy/ERC1967/ERC1967Utils.sol\":{\"keccak256\":\"0xa1ad192cd45317c788618bef5cb1fb3ca4ce8b230f6433ac68cc1d850fb81618\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://b43447bb85a53679d269a403c693b9d88d6c74177dfb35eddca63abaf7cf110a\",\"dweb:/ipfs/QmXSDmpd4bNZj1PDgegr6C4w1jDaWHXCconC3rYiw9TSkQ\"]},\"@openzeppelin/contracts/proxy/Proxy.sol\":{\"keccak256\":\"0x80935e4fae2c414f4e7789e13a820d06901182a5733ab006f8d68b5b09db993f\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://752d991d6ca1087587b48103bc623f74888054f58581ff29166d90889c4765c5\",\"dweb:/ipfs/QmRBsa6K2ChKxVWYY54YiyYhDBPbmY5HyKCtij5LoWh56o\"]},\"@openzeppelin/contracts/proxy/beacon/IBeacon.sol\":{\"keccak256\":\"0x20462ddb2665e9521372c76b001d0ce196e59dbbd989de9af5576cad0bd5628b\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://f417fd12aeec8fbfaceaa30e3a08a0724c0bc39de363e2acf6773c897abbaf6d\",\"dweb:/ipfs/QmU4Hko6sApdweVM92CsiuLKkCk8HfyBeutF89PCTz5Tye\"]},\"@openzeppelin/contracts/utils/Address.sol\":{\"keccak256\":\"0x0fa9e0d3a859900b5a46f70a03c73adf259603d5e05027a37fe0b45529d85346\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://c2add4da0240c9f2ce47649c8bb6b11b40e98cf6f88b8bdc76b2704e89391710\",\"dweb:/ipfs/QmNQTwF2uVzu4CRtNxr8bxyP9XuW6VsZuo2Nr4KR2bZr3d\"]},\"@openzeppelin/contracts/utils/Errors.sol\":{\"keccak256\":\"0x6afa713bfd42cf0f7656efa91201007ac465e42049d7de1d50753a373648c123\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://ba1d02f4847670a1b83dec9f7d37f0b0418d6043447b69f3a29a5f9efc547fcf\",\"dweb:/ipfs/QmQ7iH2keLNUKgq2xSWcRmuBE5eZ3F5whYAkAGzCNNoEWB\"]},\"@openzeppelin/contracts/utils/LowLevelCall.sol\":{\"keccak256\":\"0x5b4802a4352474792df3107e961d1cc593e47b820c14f69d3505cb28f5a6a583\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://a6f86fd01f829499fe0545ff5dda07d4521988e88bfe0bf801fc15650921ed56\",\"dweb:/ipfs/QmUUKu4ZDffHAmfkf3asuQfmLTyfpuy2Amdncc3SqfzKPG\"]},\"@openzeppelin/contracts/utils/StorageSlot.sol\":{\"keccak256\":\"0xcf74f855663ce2ae00ed8352666b7935f6cddea2932fdf2c3ecd30a9b1cd0e97\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://9f660b1f351b757dfe01438e59888f31f33ded3afcf5cb5b0d9bf9aa6f320a8b\",\"dweb:/ipfs/QmarDJ5hZEgBtCmmrVzEZWjub9769eD686jmzb2XpSU1cM\"]}},\"version\":1}","storageLayout":{"storage":[],"types":null}}},"@openzeppelin/contracts/proxy/ERC1967/ERC1967Utils.sol":{"ERC1967Utils":{"abi":[{"inputs":[{"internalType":"address","name":"admin","type":"address"}],"name":"ERC1967InvalidAdmin","type":"error"},{"inputs":[{"internalType":"address","name":"beacon","type":"address"}],"name":"ERC1967InvalidBeacon","type":"error"},{"inputs":[{"internalType":"address","name":"implementation","type":"address"}],"name":"ERC1967InvalidImplementation","type":"error"},{"inputs":[],"name":"ERC1967NonPayable","type":"error"}],"evm":{"bytecode":{"functionDebugData":{},"generatedSources":[],"linkReferences":{},"object":"60556032600b8282823980515f1a607314602657634e487b7160e01b5f525f60045260245ffd5b305f52607381538281f3fe730000000000000000000000000000000000000000301460806040525f5ffdfea2646970667358221220099b886f4a3f10aa1f29dbd42fb99a9fa5e789379cddc4e070792f24212ad86164736f6c634300081e0033","opcodes":"PUSH1 0x55 PUSH1 0x32 PUSH1 0xB DUP3 DUP3 DUP3 CODECOPY DUP1 MLOAD PUSH0 BYTE PUSH1 0x73 EQ PUSH1 0x26 JUMPI PUSH4 0x4E487B71 PUSH1 0xE0 SHL PUSH0 MSTORE PUSH0 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH0 REVERT JUMPDEST ADDRESS PUSH0 MSTORE PUSH1 0x73 DUP2 MSTORE8 DUP3 DUP2 RETURN INVALID PUSH20 0x0 ADDRESS EQ PUSH1 0x80 PUSH1 0x40 MSTORE PUSH0 PUSH0 REVERT INVALID LOG2 PUSH5 0x6970667358 0x22 SLT KECCAK256 MULMOD SWAP12 DUP9 PUSH16 0x4A3F10AA1F29DBD42FB99A9FA5E78937 SWAP13 0xDD 0xC4 RJUMP 0x7079 0x2F 0x24 0x21 0x2A 0xD8 PUSH2 0x6473 PUSH16 0x6C634300081E00330000000000000000 ","sourceMap":"496:5741:27:-:0;;;;;;;;;;;;;;;-1:-1:-1;;;496:5741:27;;;;;;;;;;;;;;;;;"},"deployedBytecode":{"functionDebugData":{},"generatedSources":[],"immutableReferences":{},"linkReferences":{},"object":"730000000000000000000000000000000000000000301460806040525f5ffdfea2646970667358221220099b886f4a3f10aa1f29dbd42fb99a9fa5e789379cddc4e070792f24212ad86164736f6c634300081e0033","opcodes":"PUSH20 0x0 ADDRESS EQ PUSH1 0x80 PUSH1 0x40 MSTORE PUSH0 PUSH0 REVERT INVALID LOG2 PUSH5 0x6970667358 0x22 SLT KECCAK256 MULMOD SWAP12 DUP9 PUSH16 0x4A3F10AA1F29DBD42FB99A9FA5E78937 SWAP13 0xDD 0xC4 RJUMP 0x7079 0x2F 0x24 0x21 0x2A 0xD8 PUSH2 0x6473 PUSH16 0x6C634300081E00330000000000000000 ","sourceMap":"496:5741:27:-:0;;;;;;;;"},"methodIdentifiers":{}},"metadata":"{\"compiler\":{\"version\":\"0.8.30+commit.73712a01\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"inputs\":[{\"internalType\":\"address\",\"name\":\"admin\",\"type\":\"address\"}],\"name\":\"ERC1967InvalidAdmin\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"beacon\",\"type\":\"address\"}],\"name\":\"ERC1967InvalidBeacon\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"implementation\",\"type\":\"address\"}],\"name\":\"ERC1967InvalidImplementation\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"ERC1967NonPayable\",\"type\":\"error\"}],\"devdoc\":{\"details\":\"This library provides getters and event emitting update functions for https://eips.ethereum.org/EIPS/eip-1967[ERC-1967] slots.\",\"errors\":{\"ERC1967InvalidAdmin(address)\":[{\"details\":\"The `admin` of the proxy is invalid.\"}],\"ERC1967InvalidBeacon(address)\":[{\"details\":\"The `beacon` of the proxy is invalid.\"}],\"ERC1967InvalidImplementation(address)\":[{\"details\":\"The `implementation` of the proxy is invalid.\"}],\"ERC1967NonPayable()\":[{\"details\":\"An upgrade function sees `msg.value > 0` that may be lost.\"}]},\"kind\":\"dev\",\"methods\":{},\"stateVariables\":{\"ADMIN_SLOT\":{\"details\":\"Storage slot with the admin of the contract. This is the keccak-256 hash of \\\"eip1967.proxy.admin\\\" subtracted by 1.\"},\"BEACON_SLOT\":{\"details\":\"The storage slot of the UpgradeableBeacon contract which defines the implementation for this proxy. This is the keccak-256 hash of \\\"eip1967.proxy.beacon\\\" subtracted by 1.\"},\"IMPLEMENTATION_SLOT\":{\"details\":\"Storage slot with the address of the current implementation. This is the keccak-256 hash of \\\"eip1967.proxy.implementation\\\" subtracted by 1.\"}},\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{},\"version\":1}},\"settings\":{\"compilationTarget\":{\"@openzeppelin/contracts/proxy/ERC1967/ERC1967Utils.sol\":\"ERC1967Utils\"},\"evmVersion\":\"prague\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"enabled\":true,\"runs\":200},\"remappings\":[]},\"sources\":{\"@openzeppelin/contracts/interfaces/IERC1967.sol\":{\"keccak256\":\"0xbf2aefe54b76d7f7bcd4f6da1080b7b1662611937d870b880db584d09cea56b5\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://f5e7e2f12e0feec75296e57f51f82fdaa8bd1551f4b8cc6560442c0bf60f818c\",\"dweb:/ipfs/QmcW9wDMaQ8RbQibMarfp17a3bABzY5KraWe2YDwuUrUoz\"]},\"@openzeppelin/contracts/proxy/ERC1967/ERC1967Utils.sol\":{\"keccak256\":\"0xa1ad192cd45317c788618bef5cb1fb3ca4ce8b230f6433ac68cc1d850fb81618\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://b43447bb85a53679d269a403c693b9d88d6c74177dfb35eddca63abaf7cf110a\",\"dweb:/ipfs/QmXSDmpd4bNZj1PDgegr6C4w1jDaWHXCconC3rYiw9TSkQ\"]},\"@openzeppelin/contracts/proxy/beacon/IBeacon.sol\":{\"keccak256\":\"0x20462ddb2665e9521372c76b001d0ce196e59dbbd989de9af5576cad0bd5628b\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://f417fd12aeec8fbfaceaa30e3a08a0724c0bc39de363e2acf6773c897abbaf6d\",\"dweb:/ipfs/QmU4Hko6sApdweVM92CsiuLKkCk8HfyBeutF89PCTz5Tye\"]},\"@openzeppelin/contracts/utils/Address.sol\":{\"keccak256\":\"0x0fa9e0d3a859900b5a46f70a03c73adf259603d5e05027a37fe0b45529d85346\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://c2add4da0240c9f2ce47649c8bb6b11b40e98cf6f88b8bdc76b2704e89391710\",\"dweb:/ipfs/QmNQTwF2uVzu4CRtNxr8bxyP9XuW6VsZuo2Nr4KR2bZr3d\"]},\"@openzeppelin/contracts/utils/Errors.sol\":{\"keccak256\":\"0x6afa713bfd42cf0f7656efa91201007ac465e42049d7de1d50753a373648c123\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://ba1d02f4847670a1b83dec9f7d37f0b0418d6043447b69f3a29a5f9efc547fcf\",\"dweb:/ipfs/QmQ7iH2keLNUKgq2xSWcRmuBE5eZ3F5whYAkAGzCNNoEWB\"]},\"@openzeppelin/contracts/utils/LowLevelCall.sol\":{\"keccak256\":\"0x5b4802a4352474792df3107e961d1cc593e47b820c14f69d3505cb28f5a6a583\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://a6f86fd01f829499fe0545ff5dda07d4521988e88bfe0bf801fc15650921ed56\",\"dweb:/ipfs/QmUUKu4ZDffHAmfkf3asuQfmLTyfpuy2Amdncc3SqfzKPG\"]},\"@openzeppelin/contracts/utils/StorageSlot.sol\":{\"keccak256\":\"0xcf74f855663ce2ae00ed8352666b7935f6cddea2932fdf2c3ecd30a9b1cd0e97\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://9f660b1f351b757dfe01438e59888f31f33ded3afcf5cb5b0d9bf9aa6f320a8b\",\"dweb:/ipfs/QmarDJ5hZEgBtCmmrVzEZWjub9769eD686jmzb2XpSU1cM\"]}},\"version\":1}","storageLayout":{"storage":[],"types":null}}},"@openzeppelin/contracts/proxy/Proxy.sol":{"Proxy":{"abi":[{"stateMutability":"payable","type":"fallback"}],"evm":{"bytecode":{"functionDebugData":{},"generatedSources":[],"linkReferences":{},"object":"","opcodes":"","sourceMap":""},"deployedBytecode":{"functionDebugData":{},"generatedSources":[],"immutableReferences":{},"linkReferences":{},"object":"","opcodes":"","sourceMap":""},"methodIdentifiers":{}},"metadata":"{\"compiler\":{\"version\":\"0.8.30+commit.73712a01\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"stateMutability\":\"payable\",\"type\":\"fallback\"}],\"devdoc\":{\"details\":\"This abstract contract provides a fallback function that delegates all calls to another contract using the EVM instruction `delegatecall`. We refer to the second contract as the _implementation_ behind the proxy, and it has to be specified by overriding the virtual {_implementation} function. Additionally, delegation to the implementation can be triggered manually through the {_fallback} function, or to a different contract through the {_delegate} function. The success and return data of the delegated call will be returned back to the caller of the proxy.\",\"kind\":\"dev\",\"methods\":{},\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{},\"version\":1}},\"settings\":{\"compilationTarget\":{\"@openzeppelin/contracts/proxy/Proxy.sol\":\"Proxy\"},\"evmVersion\":\"prague\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"enabled\":true,\"runs\":200},\"remappings\":[]},\"sources\":{\"@openzeppelin/contracts/proxy/Proxy.sol\":{\"keccak256\":\"0x80935e4fae2c414f4e7789e13a820d06901182a5733ab006f8d68b5b09db993f\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://752d991d6ca1087587b48103bc623f74888054f58581ff29166d90889c4765c5\",\"dweb:/ipfs/QmRBsa6K2ChKxVWYY54YiyYhDBPbmY5HyKCtij5LoWh56o\"]}},\"version\":1}","storageLayout":{"storage":[],"types":null}}},"@openzeppelin/contracts/proxy/beacon/IBeacon.sol":{"IBeacon":{"abi":[{"inputs":[],"name":"implementation","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"}],"evm":{"bytecode":{"functionDebugData":{},"generatedSources":[],"linkReferences":{},"object":"","opcodes":"","sourceMap":""},"deployedBytecode":{"functionDebugData":{},"generatedSources":[],"immutableReferences":{},"linkReferences":{},"object":"","opcodes":"","sourceMap":""},"methodIdentifiers":{"implementation()":"5c60da1b"}},"metadata":"{\"compiler\":{\"version\":\"0.8.30+commit.73712a01\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"inputs\":[],\"name\":\"implementation\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"}],\"devdoc\":{\"details\":\"This is the interface that {BeaconProxy} expects of its beacon.\",\"kind\":\"dev\",\"methods\":{\"implementation()\":{\"details\":\"Must return an address that can be used as a delegate call target. {UpgradeableBeacon} will check that this address is a contract.\"}},\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{},\"version\":1}},\"settings\":{\"compilationTarget\":{\"@openzeppelin/contracts/proxy/beacon/IBeacon.sol\":\"IBeacon\"},\"evmVersion\":\"prague\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"enabled\":true,\"runs\":200},\"remappings\":[]},\"sources\":{\"@openzeppelin/contracts/proxy/beacon/IBeacon.sol\":{\"keccak256\":\"0x20462ddb2665e9521372c76b001d0ce196e59dbbd989de9af5576cad0bd5628b\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://f417fd12aeec8fbfaceaa30e3a08a0724c0bc39de363e2acf6773c897abbaf6d\",\"dweb:/ipfs/QmU4Hko6sApdweVM92CsiuLKkCk8HfyBeutF89PCTz5Tye\"]}},\"version\":1}","storageLayout":{"storage":[],"types":null}}},"@openzeppelin/contracts/proxy/utils/Initializable.sol":{"Initializable":{"abi":[{"inputs":[],"name":"InvalidInitialization","type":"error"},{"inputs":[],"name":"NotInitializing","type":"error"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint64","name":"version","type":"uint64"}],"name":"Initialized","type":"event"}],"evm":{"bytecode":{"functionDebugData":{},"generatedSources":[],"linkReferences":{},"object":"","opcodes":"","sourceMap":""},"deployedBytecode":{"functionDebugData":{},"generatedSources":[],"immutableReferences":{},"linkReferences":{},"object":"","opcodes":"","sourceMap":""},"methodIdentifiers":{}},"metadata":"{\"compiler\":{\"version\":\"0.8.30+commit.73712a01\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"inputs\":[],\"name\":\"InvalidInitialization\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"NotInitializing\",\"type\":\"error\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"uint64\",\"name\":\"version\",\"type\":\"uint64\"}],\"name\":\"Initialized\",\"type\":\"event\"}],\"devdoc\":{\"custom:oz-upgrades-unsafe-allow\":\"constructor constructor() {     _disableInitializers(); } ``` ====\",\"details\":\"This is a base contract to aid in writing upgradeable contracts, or any kind of contract that will be deployed behind a proxy. Since proxied contracts do not make use of a constructor, it's common to move constructor logic to an external initializer function, usually called `initialize`. It then becomes necessary to protect this initializer function so it can only be called once. The {initializer} modifier provided by this contract will have this effect. The initialization functions use a version number. Once a version number is used, it is consumed and cannot be reused. This mechanism prevents re-execution of each \\\"step\\\" but allows the creation of new initialization steps in case an upgrade adds a module that needs to be initialized. For example: [.hljs-theme-light.nopadding] ```solidity contract MyToken is ERC20Upgradeable {     function initialize() initializer public {         __ERC20_init(\\\"MyToken\\\", \\\"MTK\\\");     } } contract MyTokenV2 is MyToken, ERC20PermitUpgradeable {     function initializeV2() reinitializer(2) public {         __ERC20Permit_init(\\\"MyToken\\\");     } } ``` TIP: To avoid leaving the proxy in an uninitialized state, the initializer function should be called as early as possible by providing the encoded function call as the `_data` argument to {ERC1967Proxy-constructor}. CAUTION: When used with inheritance, manual care must be taken to not invoke a parent initializer twice, or to ensure that all initializers are idempotent. This is not verified automatically as constructors are by Solidity. [CAUTION] ==== Avoid leaving a contract uninitialized. An uninitialized contract can be taken over by an attacker. This applies to both a proxy and its implementation contract, which may impact the proxy. To prevent the implementation contract from being used, you should invoke the {_disableInitializers} function in the constructor to automatically lock it when it is deployed: [.hljs-theme-light.nopadding] ```\",\"errors\":{\"InvalidInitialization()\":[{\"details\":\"The contract is already initialized.\"}],\"NotInitializing()\":[{\"details\":\"The contract is not initializing.\"}]},\"events\":{\"Initialized(uint64)\":{\"details\":\"Triggered when the contract has been initialized or reinitialized.\"}},\"kind\":\"dev\",\"methods\":{},\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{},\"version\":1}},\"settings\":{\"compilationTarget\":{\"@openzeppelin/contracts/proxy/utils/Initializable.sol\":\"Initializable\"},\"evmVersion\":\"prague\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"enabled\":true,\"runs\":200},\"remappings\":[]},\"sources\":{\"@openzeppelin/contracts/proxy/utils/Initializable.sol\":{\"keccak256\":\"0xdb4d24ee2c087c391d587cd17adfe5b3f9d93b3110b1388c2ab6c7c0ad1dcd05\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://ab7b6d5b9e2b88176312967fe0f0e78f3d9a1422fa5e4b64e2440c35869b5d08\",\"dweb:/ipfs/QmXKYWWyzcLg1B2k7Sb1qkEXgLCYfXecR9wYW5obRzWP1Q\"]}},\"version\":1}","storageLayout":{"storage":[],"types":null}}},"@openzeppelin/contracts/proxy/utils/UUPSUpgradeable.sol":{"UUPSUpgradeable":{"abi":[{"inputs":[{"internalType":"address","name":"target","type":"address"}],"name":"AddressEmptyCode","type":"error"},{"inputs":[{"internalType":"address","name":"implementation","type":"address"}],"name":"ERC1967InvalidImplementation","type":"error"},{"inputs":[],"name":"ERC1967NonPayable","type":"error"},{"inputs":[],"name":"FailedCall","type":"error"},{"inputs":[],"name":"UUPSUnauthorizedCallContext","type":"error"},{"inputs":[{"internalType":"bytes32","name":"slot","type":"bytes32"}],"name":"UUPSUnsupportedProxiableUUID","type":"error"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"implementation","type":"address"}],"name":"Upgraded","type":"event"},{"inputs":[],"name":"UPGRADE_INTERFACE_VERSION","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"proxiableUUID","outputs":[{"internalType":"bytes32","name":"","type":"bytes32"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"newImplementation","type":"address"},{"internalType":"bytes","name":"data","type":"bytes"}],"name":"upgradeToAndCall","outputs":[],"stateMutability":"payable","type":"function"}],"evm":{"bytecode":{"functionDebugData":{},"generatedSources":[],"linkReferences":{},"object":"","opcodes":"","sourceMap":""},"deployedBytecode":{"functionDebugData":{},"generatedSources":[],"immutableReferences":{},"linkReferences":{},"object":"","opcodes":"","sourceMap":""},"methodIdentifiers":{"UPGRADE_INTERFACE_VERSION()":"ad3cb1cc","proxiableUUID()":"52d1902d","upgradeToAndCall(address,bytes)":"4f1ef286"}},"metadata":"{\"compiler\":{\"version\":\"0.8.30+commit.73712a01\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"inputs\":[{\"internalType\":\"address\",\"name\":\"target\",\"type\":\"address\"}],\"name\":\"AddressEmptyCode\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"implementation\",\"type\":\"address\"}],\"name\":\"ERC1967InvalidImplementation\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"ERC1967NonPayable\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"FailedCall\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"UUPSUnauthorizedCallContext\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"slot\",\"type\":\"bytes32\"}],\"name\":\"UUPSUnsupportedProxiableUUID\",\"type\":\"error\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"implementation\",\"type\":\"address\"}],\"name\":\"Upgraded\",\"type\":\"event\"},{\"inputs\":[],\"name\":\"UPGRADE_INTERFACE_VERSION\",\"outputs\":[{\"internalType\":\"string\",\"name\":\"\",\"type\":\"string\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"proxiableUUID\",\"outputs\":[{\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"newImplementation\",\"type\":\"address\"},{\"internalType\":\"bytes\",\"name\":\"data\",\"type\":\"bytes\"}],\"name\":\"upgradeToAndCall\",\"outputs\":[],\"stateMutability\":\"payable\",\"type\":\"function\"}],\"devdoc\":{\"custom:stateless\":\"\",\"details\":\"An upgradeability mechanism designed for UUPS proxies. The functions included here can perform an upgrade of an {ERC1967Proxy}, when this contract is set as the implementation behind such a proxy. A security mechanism ensures that an upgrade does not turn off upgradeability accidentally, although this risk is reinstated if the upgrade retains upgradeability but removes the security mechanism, e.g. by replacing `UUPSUpgradeable` with a custom implementation of upgrades. The {_authorizeUpgrade} function must be overridden to include access restriction to the upgrade mechanism.\",\"errors\":{\"AddressEmptyCode(address)\":[{\"details\":\"There's no code at `target` (it is not a contract).\"}],\"ERC1967InvalidImplementation(address)\":[{\"details\":\"The `implementation` of the proxy is invalid.\"}],\"ERC1967NonPayable()\":[{\"details\":\"An upgrade function sees `msg.value > 0` that may be lost.\"}],\"FailedCall()\":[{\"details\":\"A call to an address target failed. The target may have reverted.\"}],\"UUPSUnauthorizedCallContext()\":[{\"details\":\"The call is from an unauthorized context.\"}],\"UUPSUnsupportedProxiableUUID(bytes32)\":[{\"details\":\"The storage `slot` is unsupported as a UUID.\"}]},\"events\":{\"Upgraded(address)\":{\"details\":\"Emitted when the implementation is upgraded.\"}},\"kind\":\"dev\",\"methods\":{\"proxiableUUID()\":{\"details\":\"Implementation of the ERC-1822 {proxiableUUID} function. This returns the storage slot used by the implementation. It is used to validate the implementation's compatibility when performing an upgrade. IMPORTANT: A proxy pointing at a proxiable contract should not be considered proxiable itself, because this risks bricking a proxy that upgrades to it, by delegating to itself until out of gas. Thus it is critical that this function revert if invoked through a proxy. This is guaranteed by the `notDelegated` modifier.\"},\"upgradeToAndCall(address,bytes)\":{\"custom:oz-upgrades-unsafe-allow-reachable\":\"delegatecall\",\"details\":\"Upgrade the implementation of the proxy to `newImplementation`, and subsequently execute the function call encoded in `data`. Calls {_authorizeUpgrade}. Emits an {Upgraded} event.\"}},\"stateVariables\":{\"UPGRADE_INTERFACE_VERSION\":{\"details\":\"The version of the upgrade interface of the contract. If this getter is missing, both `upgradeTo(address)` and `upgradeToAndCall(address,bytes)` are present, and `upgradeTo` must be used if no function should be called, while `upgradeToAndCall` will invoke the `receive` function if the second argument is the empty byte string. If the getter returns `\\\"5.0.0\\\"`, only `upgradeToAndCall(address,bytes)` is present, and the second argument must be the empty byte string if no function should be called, making it impossible to invoke the `receive` function during an upgrade.\"},\"__self\":{\"custom:oz-upgrades-unsafe-allow\":\"state-variable-immutable\"}},\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{},\"version\":1}},\"settings\":{\"compilationTarget\":{\"@openzeppelin/contracts/proxy/utils/UUPSUpgradeable.sol\":\"UUPSUpgradeable\"},\"evmVersion\":\"prague\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"enabled\":true,\"runs\":200},\"remappings\":[]},\"sources\":{\"@openzeppelin/contracts/interfaces/IERC1967.sol\":{\"keccak256\":\"0xbf2aefe54b76d7f7bcd4f6da1080b7b1662611937d870b880db584d09cea56b5\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://f5e7e2f12e0feec75296e57f51f82fdaa8bd1551f4b8cc6560442c0bf60f818c\",\"dweb:/ipfs/QmcW9wDMaQ8RbQibMarfp17a3bABzY5KraWe2YDwuUrUoz\"]},\"@openzeppelin/contracts/interfaces/draft-IERC1822.sol\":{\"keccak256\":\"0x82f757819bf2429a0d4db141b99a4bbe5039e4ef86dfb94e2e6d40577ed5b28b\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://37c30ed931e19fb71fdb806bb504cfdb9913b7127545001b64d4487783374422\",\"dweb:/ipfs/QmUBHpv4hm3ZmwJ4GH8BeVzK4mv41Q6vBbWXxn8HExPXza\"]},\"@openzeppelin/contracts/proxy/ERC1967/ERC1967Utils.sol\":{\"keccak256\":\"0xa1ad192cd45317c788618bef5cb1fb3ca4ce8b230f6433ac68cc1d850fb81618\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://b43447bb85a53679d269a403c693b9d88d6c74177dfb35eddca63abaf7cf110a\",\"dweb:/ipfs/QmXSDmpd4bNZj1PDgegr6C4w1jDaWHXCconC3rYiw9TSkQ\"]},\"@openzeppelin/contracts/proxy/beacon/IBeacon.sol\":{\"keccak256\":\"0x20462ddb2665e9521372c76b001d0ce196e59dbbd989de9af5576cad0bd5628b\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://f417fd12aeec8fbfaceaa30e3a08a0724c0bc39de363e2acf6773c897abbaf6d\",\"dweb:/ipfs/QmU4Hko6sApdweVM92CsiuLKkCk8HfyBeutF89PCTz5Tye\"]},\"@openzeppelin/contracts/proxy/utils/UUPSUpgradeable.sol\":{\"keccak256\":\"0x1a26353563a2c63b4120ea0b94727253eeff84fe2241d42c1452308b9080e66a\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://49a95e36d267828b4357186a79917002d616d8634e25d1f9818e2354cd2e7d34\",\"dweb:/ipfs/QmWDkqE4KkyLAS2UkLsRgXE1FGB1qfEgBC3zMXBVsVWfdk\"]},\"@openzeppelin/contracts/utils/Address.sol\":{\"keccak256\":\"0x0fa9e0d3a859900b5a46f70a03c73adf259603d5e05027a37fe0b45529d85346\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://c2add4da0240c9f2ce47649c8bb6b11b40e98cf6f88b8bdc76b2704e89391710\",\"dweb:/ipfs/QmNQTwF2uVzu4CRtNxr8bxyP9XuW6VsZuo2Nr4KR2bZr3d\"]},\"@openzeppelin/contracts/utils/Errors.sol\":{\"keccak256\":\"0x6afa713bfd42cf0f7656efa91201007ac465e42049d7de1d50753a373648c123\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://ba1d02f4847670a1b83dec9f7d37f0b0418d6043447b69f3a29a5f9efc547fcf\",\"dweb:/ipfs/QmQ7iH2keLNUKgq2xSWcRmuBE5eZ3F5whYAkAGzCNNoEWB\"]},\"@openzeppelin/contracts/utils/LowLevelCall.sol\":{\"keccak256\":\"0x5b4802a4352474792df3107e961d1cc593e47b820c14f69d3505cb28f5a6a583\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://a6f86fd01f829499fe0545ff5dda07d4521988e88bfe0bf801fc15650921ed56\",\"dweb:/ipfs/QmUUKu4ZDffHAmfkf3asuQfmLTyfpuy2Amdncc3SqfzKPG\"]},\"@openzeppelin/contracts/utils/StorageSlot.sol\":{\"keccak256\":\"0xcf74f855663ce2ae00ed8352666b7935f6cddea2932fdf2c3ecd30a9b1cd0e97\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://9f660b1f351b757dfe01438e59888f31f33ded3afcf5cb5b0d9bf9aa6f320a8b\",\"dweb:/ipfs/QmarDJ5hZEgBtCmmrVzEZWjub9769eD686jmzb2XpSU1cM\"]}},\"version\":1}","storageLayout":{"storage":[],"types":null}}},"@openzeppelin/contracts/token/ERC20/ERC20.sol":{"ERC20":{"abi":[{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"allowance","type":"uint256"},{"internalType":"uint256","name":"needed","type":"uint256"}],"name":"ERC20InsufficientAllowance","type":"error"},{"inputs":[{"internalType":"address","name":"sender","type":"address"},{"internalType":"uint256","name":"balance","type":"uint256"},{"internalType":"uint256","name":"needed","type":"uint256"}],"name":"ERC20InsufficientBalance","type":"error"},{"inputs":[{"internalType":"address","name":"approver","type":"address"}],"name":"ERC20InvalidApprover","type":"error"},{"inputs":[{"internalType":"address","name":"receiver","type":"address"}],"name":"ERC20InvalidReceiver","type":"error"},{"inputs":[{"internalType":"address","name":"sender","type":"address"}],"name":"ERC20InvalidSender","type":"error"},{"inputs":[{"internalType":"address","name":"spender","type":"address"}],"name":"ERC20InvalidSpender","type":"error"},{"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":"value","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":"to","type":"address"},{"internalType":"uint256","name":"value","type":"uint256"}],"name":"transfer","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"from","type":"address"},{"internalType":"address","name":"to","type":"address"},{"internalType":"uint256","name":"value","type":"uint256"}],"name":"transferFrom","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"}],"evm":{"bytecode":{"functionDebugData":{},"generatedSources":[],"linkReferences":{},"object":"","opcodes":"","sourceMap":""},"deployedBytecode":{"functionDebugData":{},"generatedSources":[],"immutableReferences":{},"linkReferences":{},"object":"","opcodes":"","sourceMap":""},"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.30+commit.73712a01\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"inputs\":[{\"internalType\":\"address\",\"name\":\"spender\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"allowance\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"needed\",\"type\":\"uint256\"}],\"name\":\"ERC20InsufficientAllowance\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"sender\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"balance\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"needed\",\"type\":\"uint256\"}],\"name\":\"ERC20InsufficientBalance\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"approver\",\"type\":\"address\"}],\"name\":\"ERC20InvalidApprover\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"receiver\",\"type\":\"address\"}],\"name\":\"ERC20InvalidReceiver\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"sender\",\"type\":\"address\"}],\"name\":\"ERC20InvalidSender\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"spender\",\"type\":\"address\"}],\"name\":\"ERC20InvalidSpender\",\"type\":\"error\"},{\"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\":\"value\",\"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\":\"to\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"value\",\"type\":\"uint256\"}],\"name\":\"transfer\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"from\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"value\",\"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}. TIP: For a detailed writeup see our guide https://forum.openzeppelin.com/t/how-to-implement-erc20-supply-mechanisms/226[How to implement supply mechanisms]. The default value of {decimals} is 18. To change this, you should override this function so it returns a different value. 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 ERC-20 applications.\",\"errors\":{\"ERC20InsufficientAllowance(address,uint256,uint256)\":[{\"details\":\"Indicates a failure with the `spender`\\u2019s `allowance`. Used in transfers.\",\"params\":{\"allowance\":\"Amount of tokens a `spender` is allowed to operate with.\",\"needed\":\"Minimum amount required to perform a transfer.\",\"spender\":\"Address that may be allowed to operate on tokens without being their owner.\"}}],\"ERC20InsufficientBalance(address,uint256,uint256)\":[{\"details\":\"Indicates an error related to the current `balance` of a `sender`. Used in transfers.\",\"params\":{\"balance\":\"Current balance for the interacting account.\",\"needed\":\"Minimum amount required to perform a transfer.\",\"sender\":\"Address whose tokens are being transferred.\"}}],\"ERC20InvalidApprover(address)\":[{\"details\":\"Indicates a failure with the `approver` of a token to be approved. Used in approvals.\",\"params\":{\"approver\":\"Address initiating an approval operation.\"}}],\"ERC20InvalidReceiver(address)\":[{\"details\":\"Indicates a failure with the token `receiver`. Used in transfers.\",\"params\":{\"receiver\":\"Address to which tokens are being transferred.\"}}],\"ERC20InvalidSender(address)\":[{\"details\":\"Indicates a failure with the token `sender`. Used in transfers.\",\"params\":{\"sender\":\"Address whose tokens are being transferred.\"}}],\"ERC20InvalidSpender(address)\":[{\"details\":\"Indicates a failure with the `spender` to be approved. Used in approvals.\",\"params\":{\"spender\":\"Address that may be allowed to operate on tokens without being their owner.\"}}]},\"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\":\"See {IERC20-approve}. NOTE: If `value` is the maximum `uint256`, the allowance is not updated on `transferFrom`. This is semantically equivalent to an infinite approval. Requirements: - `spender` cannot be the zero address.\"},\"balanceOf(address)\":{\"details\":\"Returns the value of tokens owned by `account`.\"},\"constructor\":{\"details\":\"Sets the values for {name} and {symbol}. Both 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 default value returned by this function, unless it's 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}.\"},\"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\":\"Returns the value of tokens in existence.\"},\"transfer(address,uint256)\":{\"details\":\"See {IERC20-transfer}. Requirements: - `to` cannot be the zero address. - the caller must have a balance of at least `value`.\"},\"transferFrom(address,address,uint256)\":{\"details\":\"See {IERC20-transferFrom}. Skips emitting an {Approval} event indicating an allowance update. This is not required by the ERC. See {xref-ERC20-_approve-address-address-uint256-bool-}[_approve]. NOTE: Does not update the allowance if the current allowance is the maximum `uint256`. Requirements: - `from` and `to` cannot be the zero address. - `from` must have a balance of at least `value`. - the caller must have allowance for ``from``'s tokens of at least `value`.\"}},\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{},\"version\":1}},\"settings\":{\"compilationTarget\":{\"@openzeppelin/contracts/token/ERC20/ERC20.sol\":\"ERC20\"},\"evmVersion\":\"prague\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"enabled\":true,\"runs\":200},\"remappings\":[]},\"sources\":{\"@openzeppelin/contracts/interfaces/draft-IERC6093.sol\":{\"keccak256\":\"0x1b88b3fb3d85ba5496d7d5f396f83ee1fddcdd6762059ff65992655b67920998\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://89393bb3212da1c0889601b9706a07b39419ddc4d2faab9eaf6e7f9152cf6a1c\",\"dweb:/ipfs/QmcCfzzxv1Bkdz1c1yF4gQCeYb6Us5BJANnzTFqawfd1HL\"]},\"@openzeppelin/contracts/token/ERC20/ERC20.sol\":{\"keccak256\":\"0x669464167428061ee0f8618b73b3ee90aff8405683e7ddde8cd77dadaa1afe29\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://0dda78587a7358b4fdf6b9fca0fde5a5e34930f36d5268a16028627fc0170195\",\"dweb:/ipfs/QmQ1b6cCceDRWNxti9HifsTCzmVP25Haxs1bWugm52vTqH\"]},\"@openzeppelin/contracts/token/ERC20/IERC20.sol\":{\"keccak256\":\"0x74ed01eb66b923d0d0cfe3be84604ac04b76482a55f9dd655e1ef4d367f95bc2\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://5282825a626cfe924e504274b864a652b0023591fa66f06a067b25b51ba9b303\",\"dweb:/ipfs/QmeCfPykghhMc81VJTrHTC7sF6CRvaA1FXVq2pJhwYp1dV\"]},\"@openzeppelin/contracts/token/ERC20/extensions/IERC20Metadata.sol\":{\"keccak256\":\"0xd6fa4088198f04eef10c5bce8a2f4d60554b7ec4b987f684393c01bf79b94d9f\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://f95ee0bbd4dd3ac730d066ba3e785ded4565e890dbec2fa7d3b9fe3bad9d0d6e\",\"dweb:/ipfs/QmSLr6bHkPFWT7ntj34jmwfyskpwo97T9jZUrk5sz3sdtR\"]},\"@openzeppelin/contracts/utils/Context.sol\":{\"keccak256\":\"0x493033a8d1b176a037b2cc6a04dad01a5c157722049bbecf632ca876224dd4b2\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://6a708e8a5bdb1011c2c381c9a5cfd8a9a956d7d0a9dc1bd8bcdaf52f76ef2f12\",\"dweb:/ipfs/Qmax9WHBnVsZP46ZxEMNRQpLQnrdE4dK8LehML1Py8FowF\"]}},\"version\":1}","storageLayout":{"storage":[{"astId":8109,"contract":"@openzeppelin/contracts/token/ERC20/ERC20.sol:ERC20","label":"_balances","offset":0,"slot":"0","type":"t_mapping(t_address,t_uint256)"},{"astId":8115,"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":8117,"contract":"@openzeppelin/contracts/token/ERC20/ERC20.sol:ERC20","label":"_totalSupply","offset":0,"slot":"2","type":"t_uint256"},{"astId":8119,"contract":"@openzeppelin/contracts/token/ERC20/ERC20.sol:ERC20","label":"_name","offset":0,"slot":"3","type":"t_string_storage"},{"astId":8121,"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"}}}}},"@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":"value","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":"to","type":"address"},{"internalType":"uint256","name":"value","type":"uint256"}],"name":"transfer","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"from","type":"address"},{"internalType":"address","name":"to","type":"address"},{"internalType":"uint256","name":"value","type":"uint256"}],"name":"transferFrom","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"}],"evm":{"bytecode":{"functionDebugData":{},"generatedSources":[],"linkReferences":{},"object":"","opcodes":"","sourceMap":""},"deployedBytecode":{"functionDebugData":{},"generatedSources":[],"immutableReferences":{},"linkReferences":{},"object":"","opcodes":"","sourceMap":""},"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.30+commit.73712a01\"},\"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\":\"value\",\"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\":\"to\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"value\",\"type\":\"uint256\"}],\"name\":\"transfer\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"from\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"value\",\"type\":\"uint256\"}],\"name\":\"transferFrom\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"}],\"devdoc\":{\"details\":\"Interface of the ERC-20 standard as defined in the ERC.\",\"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 a `value` amount of tokens 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 value of tokens owned by `account`.\"},\"totalSupply()\":{\"details\":\"Returns the value of tokens in existence.\"},\"transfer(address,uint256)\":{\"details\":\"Moves a `value` amount of tokens from the caller's account to `to`. Returns a boolean value indicating whether the operation succeeded. Emits a {Transfer} event.\"},\"transferFrom(address,address,uint256)\":{\"details\":\"Moves a `value` amount of tokens from `from` to `to` using the allowance mechanism. `value` 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\":\"prague\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"enabled\":true,\"runs\":200},\"remappings\":[]},\"sources\":{\"@openzeppelin/contracts/token/ERC20/IERC20.sol\":{\"keccak256\":\"0x74ed01eb66b923d0d0cfe3be84604ac04b76482a55f9dd655e1ef4d367f95bc2\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://5282825a626cfe924e504274b864a652b0023591fa66f06a067b25b51ba9b303\",\"dweb:/ipfs/QmeCfPykghhMc81VJTrHTC7sF6CRvaA1FXVq2pJhwYp1dV\"]}},\"version\":1}","storageLayout":{"storage":[],"types":null}}},"@openzeppelin/contracts/token/ERC20/extensions/ERC4626.sol":{"ERC4626":{"abi":[{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"allowance","type":"uint256"},{"internalType":"uint256","name":"needed","type":"uint256"}],"name":"ERC20InsufficientAllowance","type":"error"},{"inputs":[{"internalType":"address","name":"sender","type":"address"},{"internalType":"uint256","name":"balance","type":"uint256"},{"internalType":"uint256","name":"needed","type":"uint256"}],"name":"ERC20InsufficientBalance","type":"error"},{"inputs":[{"internalType":"address","name":"approver","type":"address"}],"name":"ERC20InvalidApprover","type":"error"},{"inputs":[{"internalType":"address","name":"receiver","type":"address"}],"name":"ERC20InvalidReceiver","type":"error"},{"inputs":[{"internalType":"address","name":"sender","type":"address"}],"name":"ERC20InvalidSender","type":"error"},{"inputs":[{"internalType":"address","name":"spender","type":"address"}],"name":"ERC20InvalidSpender","type":"error"},{"inputs":[{"internalType":"address","name":"receiver","type":"address"},{"internalType":"uint256","name":"assets","type":"uint256"},{"internalType":"uint256","name":"max","type":"uint256"}],"name":"ERC4626ExceededMaxDeposit","type":"error"},{"inputs":[{"internalType":"address","name":"receiver","type":"address"},{"internalType":"uint256","name":"shares","type":"uint256"},{"internalType":"uint256","name":"max","type":"uint256"}],"name":"ERC4626ExceededMaxMint","type":"error"},{"inputs":[{"internalType":"address","name":"owner","type":"address"},{"internalType":"uint256","name":"shares","type":"uint256"},{"internalType":"uint256","name":"max","type":"uint256"}],"name":"ERC4626ExceededMaxRedeem","type":"error"},{"inputs":[{"internalType":"address","name":"owner","type":"address"},{"internalType":"uint256","name":"assets","type":"uint256"},{"internalType":"uint256","name":"max","type":"uint256"}],"name":"ERC4626ExceededMaxWithdraw","type":"error"},{"inputs":[{"internalType":"address","name":"token","type":"address"}],"name":"SafeERC20FailedOperation","type":"error"},{"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":"sender","type":"address"},{"indexed":true,"internalType":"address","name":"owner","type":"address"},{"indexed":false,"internalType":"uint256","name":"assets","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"shares","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":"sender","type":"address"},{"indexed":true,"internalType":"address","name":"receiver","type":"address"},{"indexed":true,"internalType":"address","name":"owner","type":"address"},{"indexed":false,"internalType":"uint256","name":"assets","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"shares","type":"uint256"}],"name":"Withdraw","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":"value","type":"uint256"}],"name":"approve","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"asset","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"balanceOf","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"shares","type":"uint256"}],"name":"convertToAssets","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"assets","type":"uint256"}],"name":"convertToShares","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":"assets","type":"uint256"},{"internalType":"address","name":"receiver","type":"address"}],"name":"deposit","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"maxDeposit","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"maxMint","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"owner","type":"address"}],"name":"maxRedeem","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"owner","type":"address"}],"name":"maxWithdraw","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"shares","type":"uint256"},{"internalType":"address","name":"receiver","type":"address"}],"name":"mint","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"name","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"assets","type":"uint256"}],"name":"previewDeposit","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"shares","type":"uint256"}],"name":"previewMint","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"shares","type":"uint256"}],"name":"previewRedeem","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"assets","type":"uint256"}],"name":"previewWithdraw","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"shares","type":"uint256"},{"internalType":"address","name":"receiver","type":"address"},{"internalType":"address","name":"owner","type":"address"}],"name":"redeem","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"symbol","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"totalAssets","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":"to","type":"address"},{"internalType":"uint256","name":"value","type":"uint256"}],"name":"transfer","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"from","type":"address"},{"internalType":"address","name":"to","type":"address"},{"internalType":"uint256","name":"value","type":"uint256"}],"name":"transferFrom","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"assets","type":"uint256"},{"internalType":"address","name":"receiver","type":"address"},{"internalType":"address","name":"owner","type":"address"}],"name":"withdraw","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"nonpayable","type":"function"}],"evm":{"bytecode":{"functionDebugData":{},"generatedSources":[],"linkReferences":{},"object":"","opcodes":"","sourceMap":""},"deployedBytecode":{"functionDebugData":{},"generatedSources":[],"immutableReferences":{},"linkReferences":{},"object":"","opcodes":"","sourceMap":""},"methodIdentifiers":{"allowance(address,address)":"dd62ed3e","approve(address,uint256)":"095ea7b3","asset()":"38d52e0f","balanceOf(address)":"70a08231","convertToAssets(uint256)":"07a2d13a","convertToShares(uint256)":"c6e6f592","decimals()":"313ce567","deposit(uint256,address)":"6e553f65","maxDeposit(address)":"402d267d","maxMint(address)":"c63d75b6","maxRedeem(address)":"d905777e","maxWithdraw(address)":"ce96cb77","mint(uint256,address)":"94bf804d","name()":"06fdde03","previewDeposit(uint256)":"ef8b30f7","previewMint(uint256)":"b3d7f6b9","previewRedeem(uint256)":"4cdad506","previewWithdraw(uint256)":"0a28a477","redeem(uint256,address,address)":"ba087652","symbol()":"95d89b41","totalAssets()":"01e1d114","totalSupply()":"18160ddd","transfer(address,uint256)":"a9059cbb","transferFrom(address,address,uint256)":"23b872dd","withdraw(uint256,address,address)":"b460af94"}},"metadata":"{\"compiler\":{\"version\":\"0.8.30+commit.73712a01\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"inputs\":[{\"internalType\":\"address\",\"name\":\"spender\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"allowance\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"needed\",\"type\":\"uint256\"}],\"name\":\"ERC20InsufficientAllowance\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"sender\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"balance\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"needed\",\"type\":\"uint256\"}],\"name\":\"ERC20InsufficientBalance\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"approver\",\"type\":\"address\"}],\"name\":\"ERC20InvalidApprover\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"receiver\",\"type\":\"address\"}],\"name\":\"ERC20InvalidReceiver\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"sender\",\"type\":\"address\"}],\"name\":\"ERC20InvalidSender\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"spender\",\"type\":\"address\"}],\"name\":\"ERC20InvalidSpender\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"receiver\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"assets\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"max\",\"type\":\"uint256\"}],\"name\":\"ERC4626ExceededMaxDeposit\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"receiver\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"shares\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"max\",\"type\":\"uint256\"}],\"name\":\"ERC4626ExceededMaxMint\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"shares\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"max\",\"type\":\"uint256\"}],\"name\":\"ERC4626ExceededMaxRedeem\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"assets\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"max\",\"type\":\"uint256\"}],\"name\":\"ERC4626ExceededMaxWithdraw\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"token\",\"type\":\"address\"}],\"name\":\"SafeERC20FailedOperation\",\"type\":\"error\"},{\"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\":\"sender\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"assets\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"shares\",\"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\":\"sender\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"receiver\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"assets\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"shares\",\"type\":\"uint256\"}],\"name\":\"Withdraw\",\"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\":\"value\",\"type\":\"uint256\"}],\"name\":\"approve\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"asset\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"}],\"name\":\"balanceOf\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"shares\",\"type\":\"uint256\"}],\"name\":\"convertToAssets\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"assets\",\"type\":\"uint256\"}],\"name\":\"convertToShares\",\"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\":\"assets\",\"type\":\"uint256\"},{\"internalType\":\"address\",\"name\":\"receiver\",\"type\":\"address\"}],\"name\":\"deposit\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"name\":\"maxDeposit\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"name\":\"maxMint\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"}],\"name\":\"maxRedeem\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"}],\"name\":\"maxWithdraw\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"shares\",\"type\":\"uint256\"},{\"internalType\":\"address\",\"name\":\"receiver\",\"type\":\"address\"}],\"name\":\"mint\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"name\",\"outputs\":[{\"internalType\":\"string\",\"name\":\"\",\"type\":\"string\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"assets\",\"type\":\"uint256\"}],\"name\":\"previewDeposit\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"shares\",\"type\":\"uint256\"}],\"name\":\"previewMint\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"shares\",\"type\":\"uint256\"}],\"name\":\"previewRedeem\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"assets\",\"type\":\"uint256\"}],\"name\":\"previewWithdraw\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"shares\",\"type\":\"uint256\"},{\"internalType\":\"address\",\"name\":\"receiver\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"}],\"name\":\"redeem\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"symbol\",\"outputs\":[{\"internalType\":\"string\",\"name\":\"\",\"type\":\"string\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"totalAssets\",\"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\":\"to\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"value\",\"type\":\"uint256\"}],\"name\":\"transfer\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"from\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"value\",\"type\":\"uint256\"}],\"name\":\"transferFrom\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"assets\",\"type\":\"uint256\"},{\"internalType\":\"address\",\"name\":\"receiver\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"}],\"name\":\"withdraw\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"}],\"devdoc\":{\"details\":\"Implementation of the ERC-4626 \\\"Tokenized Vault Standard\\\" as defined in https://eips.ethereum.org/EIPS/eip-4626[ERC-4626]. This extension allows the minting and burning of \\\"shares\\\" (represented using the ERC-20 inheritance) in exchange for underlying \\\"assets\\\" through standardized {deposit}, {mint}, {redeem} and {burn} workflows. This contract extends the ERC-20 standard. Any additional extensions included along it would affect the \\\"shares\\\" token represented by this contract and not the \\\"assets\\\" token which is an independent contract. [CAUTION] ==== In empty (or nearly empty) ERC-4626 vaults, deposits are at high risk of being stolen through frontrunning with a \\\"donation\\\" to the vault that inflates the price of a share. This is variously known as a donation or inflation attack and is essentially a problem of slippage. Vault deployers can protect against this attack by making an initial deposit of a non-trivial amount of the asset, such that price manipulation becomes infeasible. Withdrawals may similarly be affected by slippage. Users can protect against this attack as well as unexpected slippage in general by verifying the amount received is as expected, using a wrapper that performs these checks such as https://github.com/fei-protocol/ERC4626#erc4626router-and-base[ERC4626Router]. Since v4.9, this implementation introduces configurable virtual assets and shares to help developers mitigate that risk. The `_decimalsOffset()` corresponds to an offset in the decimal representation between the underlying asset's decimals and the vault decimals. This offset also determines the rate of virtual shares to virtual assets in the vault, which itself determines the initial exchange rate. While not fully preventing the attack, analysis shows that the default offset (0) makes it non-profitable even if an attacker is able to capture value from multiple user deposits, as a result of the value being captured by the virtual shares (out of the attacker's donation) matching the attacker's expected gains. With a larger offset, the attack becomes orders of magnitude more expensive than it is profitable. More details about the underlying math can be found xref:ROOT:erc4626.adoc#inflation-attack[here]. The drawback of this approach is that the virtual shares do capture (a very small) part of the value being accrued to the vault. Also, if the vault experiences losses, the users try to exit the vault, the virtual shares and assets will cause the first user to exit to experience reduced losses in detriment to the last users that will experience bigger losses. Developers willing to revert back to the pre-v4.9 behavior just need to override the `_convertToShares` and `_convertToAssets` functions. To learn more, check out our xref:ROOT:erc4626.adoc[ERC-4626 guide]. ==== [NOTE] ==== When overriding this contract, some elements must be considered: * When overriding the behavior of the deposit or withdraw mechanisms, it is recommended to override the internal functions. Overriding {_deposit} automatically affects both {deposit} and {mint}. Similarly, overriding {_withdraw} automatically affects both {withdraw} and {redeem}. Overall it is not recommended to override the public facing functions since that could lead to inconsistent behaviors between the {deposit} and {mint} or between {withdraw} and {redeem}, which is documented to have lead to loss of funds. * Overrides to the deposit or withdraw mechanism must be reflected in the preview functions as well. * {maxWithdraw} depends on {maxRedeem}. Therefore, overriding {maxRedeem} only is enough. On the other hand, overriding {maxWithdraw} only would have no effect on {maxRedeem}, and could create an inconsistency between the two functions. * If {previewRedeem} is overridden to revert, {maxWithdraw} must be overridden as necessary to ensure it always return successfully. ====\",\"errors\":{\"ERC20InsufficientAllowance(address,uint256,uint256)\":[{\"details\":\"Indicates a failure with the `spender`\\u2019s `allowance`. Used in transfers.\",\"params\":{\"allowance\":\"Amount of tokens a `spender` is allowed to operate with.\",\"needed\":\"Minimum amount required to perform a transfer.\",\"spender\":\"Address that may be allowed to operate on tokens without being their owner.\"}}],\"ERC20InsufficientBalance(address,uint256,uint256)\":[{\"details\":\"Indicates an error related to the current `balance` of a `sender`. Used in transfers.\",\"params\":{\"balance\":\"Current balance for the interacting account.\",\"needed\":\"Minimum amount required to perform a transfer.\",\"sender\":\"Address whose tokens are being transferred.\"}}],\"ERC20InvalidApprover(address)\":[{\"details\":\"Indicates a failure with the `approver` of a token to be approved. Used in approvals.\",\"params\":{\"approver\":\"Address initiating an approval operation.\"}}],\"ERC20InvalidReceiver(address)\":[{\"details\":\"Indicates a failure with the token `receiver`. Used in transfers.\",\"params\":{\"receiver\":\"Address to which tokens are being transferred.\"}}],\"ERC20InvalidSender(address)\":[{\"details\":\"Indicates a failure with the token `sender`. Used in transfers.\",\"params\":{\"sender\":\"Address whose tokens are being transferred.\"}}],\"ERC20InvalidSpender(address)\":[{\"details\":\"Indicates a failure with the `spender` to be approved. Used in approvals.\",\"params\":{\"spender\":\"Address that may be allowed to operate on tokens without being their owner.\"}}],\"ERC4626ExceededMaxDeposit(address,uint256,uint256)\":[{\"details\":\"Attempted to deposit more assets than the max amount for `receiver`.\"}],\"ERC4626ExceededMaxMint(address,uint256,uint256)\":[{\"details\":\"Attempted to mint more shares than the max amount for `receiver`.\"}],\"ERC4626ExceededMaxRedeem(address,uint256,uint256)\":[{\"details\":\"Attempted to redeem more shares than the max amount for `receiver`.\"}],\"ERC4626ExceededMaxWithdraw(address,uint256,uint256)\":[{\"details\":\"Attempted to withdraw more assets than the max amount for `receiver`.\"}],\"SafeERC20FailedOperation(address)\":[{\"details\":\"An operation with an ERC-20 token failed.\"}]},\"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\":\"See {IERC20-approve}. NOTE: If `value` is the maximum `uint256`, the allowance is not updated on `transferFrom`. This is semantically equivalent to an infinite approval. Requirements: - `spender` cannot be the zero address.\"},\"asset()\":{\"details\":\"Returns the address of the underlying token used for the Vault for accounting, depositing, and withdrawing. - MUST be an ERC-20 token contract. - MUST NOT revert.\"},\"balanceOf(address)\":{\"details\":\"Returns the value of tokens owned by `account`.\"},\"constructor\":{\"details\":\"Set the underlying asset contract. This must be an ERC20-compatible contract (ERC-20 or ERC-777).\"},\"convertToAssets(uint256)\":{\"details\":\"Returns the amount of assets that the Vault would exchange for the amount of shares provided, in an ideal scenario where all the conditions are met. - MUST NOT be inclusive of any fees that are charged against assets in the Vault. - MUST NOT show any variations depending on the caller. - MUST NOT reflect slippage or other on-chain conditions, when performing the actual exchange. - MUST NOT revert. NOTE: This calculation MAY NOT reflect the \\u201cper-user\\u201d price-per-share, and instead should reflect the \\u201caverage-user\\u2019s\\u201d price-per-share, meaning what the average user should expect to see when exchanging to and from.\"},\"convertToShares(uint256)\":{\"details\":\"Returns the amount of shares that the Vault would exchange for the amount of assets provided, in an ideal scenario where all the conditions are met. - MUST NOT be inclusive of any fees that are charged against assets in the Vault. - MUST NOT show any variations depending on the caller. - MUST NOT reflect slippage or other on-chain conditions, when performing the actual exchange. - MUST NOT revert. NOTE: This calculation MAY NOT reflect the \\u201cper-user\\u201d price-per-share, and instead should reflect the \\u201caverage-user\\u2019s\\u201d price-per-share, meaning what the average user should expect to see when exchanging to and from.\"},\"decimals()\":{\"details\":\"Decimals are computed by adding the decimal offset on top of the underlying asset's decimals. This \\\"original\\\" value is cached during construction of the vault contract. If this read operation fails (e.g., the asset has not been created yet), a default of 18 is used to represent the underlying asset's decimals. See {IERC20Metadata-decimals}.\"},\"deposit(uint256,address)\":{\"details\":\"Deposit `assets` underlying tokens and send the corresponding number of vault shares (`shares`) to `receiver`. - MUST emit the Deposit event. - MAY support an additional flow in which the underlying tokens are owned by the Vault contract before the   deposit execution, and are accounted for during deposit. - MUST revert if all of assets cannot be deposited (due to deposit limit being reached, slippage, the user not   approving enough underlying tokens to the Vault contract, etc). NOTE: most implementations will require pre-approval of the Vault with the Vault\\u2019s underlying asset token.\"},\"maxDeposit(address)\":{\"details\":\"Returns the maximum amount of the underlying asset that can be deposited into the Vault for the receiver, through a deposit call. - MUST return a limited value if receiver is subject to some deposit limit. - MUST return 2 ** 256 - 1 if there is no limit on the maximum amount of assets that may be deposited. - MUST NOT revert.\"},\"maxMint(address)\":{\"details\":\"Returns the maximum amount of the Vault shares that can be minted for the receiver, through a mint call. - MUST return a limited value if receiver is subject to some mint limit. - MUST return 2 ** 256 - 1 if there is no limit on the maximum amount of shares that may be minted. - MUST NOT revert.\"},\"maxRedeem(address)\":{\"details\":\"Returns the maximum amount of Vault shares that can be redeemed from the owner balance in the Vault, through a redeem call. - MUST return a limited value if owner is subject to some withdrawal limit or timelock. - MUST return balanceOf(owner) if owner is not subject to any withdrawal limit or timelock. - MUST NOT revert.\"},\"maxWithdraw(address)\":{\"details\":\"Returns the maximum amount of the underlying asset that can be withdrawn from the owner balance in the Vault, through a withdraw call. - MUST return a limited value if owner is subject to some withdrawal limit or timelock. - MUST NOT revert.\"},\"mint(uint256,address)\":{\"details\":\"Mints exactly `shares` vault shares to `receiver` in exchange for `assets` underlying tokens. - MUST emit the Deposit event. - MAY support an additional flow in which the underlying tokens are owned by the Vault contract before the mint   execution, and are accounted for during mint. - MUST revert if all of shares cannot be minted (due to deposit limit being reached, slippage, the user not   approving enough underlying tokens to the Vault contract, etc). NOTE: most implementations will require pre-approval of the Vault with the Vault\\u2019s underlying asset token.\"},\"name()\":{\"details\":\"Returns the name of the token.\"},\"previewDeposit(uint256)\":{\"details\":\"Allows an on-chain or off-chain user to simulate the effects of their deposit at the current block, given current on-chain conditions. - MUST return as close to and no more than the exact amount of Vault shares that would be minted in a deposit   call in the same transaction. I.e. deposit should return the same or more shares as previewDeposit if called   in the same transaction. - MUST NOT account for deposit limits like those returned from maxDeposit and should always act as though the   deposit would be accepted, regardless if the user has enough tokens approved, etc. - MUST be inclusive of deposit fees. Integrators should be aware of the existence of deposit fees. - MUST NOT revert. NOTE: any unfavorable discrepancy between convertToShares and previewDeposit SHOULD be considered slippage in share price or some other type of condition, meaning the depositor will lose assets by depositing.\"},\"previewMint(uint256)\":{\"details\":\"Allows an on-chain or off-chain user to simulate the effects of their mint at the current block, given current on-chain conditions. - MUST return as close to and no fewer than the exact amount of assets that would be deposited in a mint call   in the same transaction. I.e. mint should return the same or fewer assets as previewMint if called in the   same transaction. - MUST NOT account for mint limits like those returned from maxMint and should always act as though the mint   would be accepted, regardless if the user has enough tokens approved, etc. - MUST be inclusive of deposit fees. Integrators should be aware of the existence of deposit fees. - MUST NOT revert. NOTE: any unfavorable discrepancy between convertToAssets and previewMint SHOULD be considered slippage in share price or some other type of condition, meaning the depositor will lose assets by minting.\"},\"previewRedeem(uint256)\":{\"details\":\"Allows an on-chain or off-chain user to simulate the effects of their redemption at the current block, given current on-chain conditions. - MUST return as close to and no more than the exact amount of assets that would be withdrawn in a redeem call   in the same transaction. I.e. redeem should return the same or more assets as previewRedeem if called in the   same transaction. - MUST NOT account for redemption limits like those returned from maxRedeem and should always act as though the   redemption would be accepted, regardless if the user has enough shares, etc. - MUST be inclusive of withdrawal fees. Integrators should be aware of the existence of withdrawal fees. - MUST NOT revert. NOTE: any unfavorable discrepancy between convertToAssets and previewRedeem SHOULD be considered slippage in share price or some other type of condition, meaning the depositor will lose assets by redeeming.\"},\"previewWithdraw(uint256)\":{\"details\":\"Allows an on-chain or off-chain user to simulate the effects of their withdrawal at the current block, given current on-chain conditions. - MUST return as close to and no fewer than the exact amount of Vault shares that would be burned in a withdraw   call in the same transaction. I.e. withdraw should return the same or fewer shares as previewWithdraw if   called   in the same transaction. - MUST NOT account for withdrawal limits like those returned from maxWithdraw and should always act as though   the withdrawal would be accepted, regardless if the user has enough shares, etc. - MUST be inclusive of withdrawal fees. Integrators should be aware of the existence of withdrawal fees. - MUST NOT revert. NOTE: any unfavorable discrepancy between convertToShares and previewWithdraw SHOULD be considered slippage in share price or some other type of condition, meaning the depositor will lose assets by depositing.\"},\"redeem(uint256,address,address)\":{\"details\":\"Burns exactly shares from owner and sends assets of underlying tokens to receiver. - MUST emit the Withdraw event. - MAY support an additional flow in which the underlying tokens are owned by the Vault contract before the   redeem execution, and are accounted for during redeem. - MUST revert if all of shares cannot be redeemed (due to withdrawal limit being reached, slippage, the owner   not having enough shares, etc). NOTE: some implementations will require pre-requesting to the Vault before a withdrawal may be performed. Those methods should be performed separately.\"},\"symbol()\":{\"details\":\"Returns the symbol of the token, usually a shorter version of the name.\"},\"totalAssets()\":{\"details\":\"Returns the total amount of the underlying asset that is \\u201cmanaged\\u201d by Vault. - SHOULD include any compounding that occurs from yield. - MUST be inclusive of any fees that are charged against assets in the Vault. - MUST NOT revert.\"},\"totalSupply()\":{\"details\":\"Returns the value of tokens in existence.\"},\"transfer(address,uint256)\":{\"details\":\"See {IERC20-transfer}. Requirements: - `to` cannot be the zero address. - the caller must have a balance of at least `value`.\"},\"transferFrom(address,address,uint256)\":{\"details\":\"See {IERC20-transferFrom}. Skips emitting an {Approval} event indicating an allowance update. This is not required by the ERC. See {xref-ERC20-_approve-address-address-uint256-bool-}[_approve]. NOTE: Does not update the allowance if the current allowance is the maximum `uint256`. Requirements: - `from` and `to` cannot be the zero address. - `from` must have a balance of at least `value`. - the caller must have allowance for ``from``'s tokens of at least `value`.\"},\"withdraw(uint256,address,address)\":{\"details\":\"Burns shares from owner and sends exactly assets of underlying tokens to receiver. - MUST emit the Withdraw event. - MAY support an additional flow in which the underlying tokens are owned by the Vault contract before the   withdraw execution, and are accounted for during withdraw. - MUST revert if all of assets cannot be withdrawn (due to withdrawal limit being reached, slippage, the owner   not having enough shares, etc). Note that some implementations will require pre-requesting to the Vault before a withdrawal may be performed. Those methods should be performed separately.\"}},\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{},\"version\":1}},\"settings\":{\"compilationTarget\":{\"@openzeppelin/contracts/token/ERC20/extensions/ERC4626.sol\":\"ERC4626\"},\"evmVersion\":\"prague\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"enabled\":true,\"runs\":200},\"remappings\":[]},\"sources\":{\"@openzeppelin/contracts/interfaces/IERC1363.sol\":{\"keccak256\":\"0xd5ea07362ab630a6a3dee4285a74cf2377044ca2e4be472755ad64d7c5d4b69d\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://da5e832b40fc5c3145d3781e2e5fa60ac2052c9d08af7e300dc8ab80c4343100\",\"dweb:/ipfs/QmTzf7N5ZUdh5raqtzbM11yexiUoLC9z3Ws632MCuycq1d\"]},\"@openzeppelin/contracts/interfaces/IERC165.sol\":{\"keccak256\":\"0x0afcb7e740d1537b252cb2676f600465ce6938398569f09ba1b9ca240dde2dfc\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://1c299900ac4ec268d4570ecef0d697a3013cd11a6eb74e295ee3fbc945056037\",\"dweb:/ipfs/Qmab9owJoxcA7vJT5XNayCMaUR1qxqj1NDzzisduwaJMcZ\"]},\"@openzeppelin/contracts/interfaces/IERC20.sol\":{\"keccak256\":\"0x1a6221315ce0307746c2c4827c125d821ee796c74a676787762f4778671d4f44\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://1bb2332a7ee26dd0b0de9b7fe266749f54820c99ab6a3bcb6f7e6b751d47ee2d\",\"dweb:/ipfs/QmcRWpaBeCYkhy68PR3B4AgD7asuQk7PwkWxrvJbZcikLF\"]},\"@openzeppelin/contracts/interfaces/IERC4626.sol\":{\"keccak256\":\"0xece5cbf726293ae6be1fbfade2936f052e1b399ed395ba1e221540ab82b62628\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://a9b97e58e90799e681dccbd4a8e469c6ebc2baf11312ad08f14332646123dd4b\",\"dweb:/ipfs/QmdamCQfxcuYinSNd3Et7VNo3oY98XSv4XCUQyq9xfMNUy\"]},\"@openzeppelin/contracts/interfaces/draft-IERC6093.sol\":{\"keccak256\":\"0x1b88b3fb3d85ba5496d7d5f396f83ee1fddcdd6762059ff65992655b67920998\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://89393bb3212da1c0889601b9706a07b39419ddc4d2faab9eaf6e7f9152cf6a1c\",\"dweb:/ipfs/QmcCfzzxv1Bkdz1c1yF4gQCeYb6Us5BJANnzTFqawfd1HL\"]},\"@openzeppelin/contracts/token/ERC20/ERC20.sol\":{\"keccak256\":\"0x669464167428061ee0f8618b73b3ee90aff8405683e7ddde8cd77dadaa1afe29\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://0dda78587a7358b4fdf6b9fca0fde5a5e34930f36d5268a16028627fc0170195\",\"dweb:/ipfs/QmQ1b6cCceDRWNxti9HifsTCzmVP25Haxs1bWugm52vTqH\"]},\"@openzeppelin/contracts/token/ERC20/IERC20.sol\":{\"keccak256\":\"0x74ed01eb66b923d0d0cfe3be84604ac04b76482a55f9dd655e1ef4d367f95bc2\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://5282825a626cfe924e504274b864a652b0023591fa66f06a067b25b51ba9b303\",\"dweb:/ipfs/QmeCfPykghhMc81VJTrHTC7sF6CRvaA1FXVq2pJhwYp1dV\"]},\"@openzeppelin/contracts/token/ERC20/extensions/ERC4626.sol\":{\"keccak256\":\"0x8a6a0045f0bb52251a9a5d8bb5f4156f4eb3ba8521b1fca6a304befaab3e7d23\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://ebd5125436dbb18ba3646cbdb4a8385a9e2bf28abc9d8178a9e7f31cca65f8b8\",\"dweb:/ipfs/QmPioMpycRKdAetJNYYfWCw36rQuyxNqhgHDFGRVLaPKnT\"]},\"@openzeppelin/contracts/token/ERC20/extensions/IERC20Metadata.sol\":{\"keccak256\":\"0xd6fa4088198f04eef10c5bce8a2f4d60554b7ec4b987f684393c01bf79b94d9f\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://f95ee0bbd4dd3ac730d066ba3e785ded4565e890dbec2fa7d3b9fe3bad9d0d6e\",\"dweb:/ipfs/QmSLr6bHkPFWT7ntj34jmwfyskpwo97T9jZUrk5sz3sdtR\"]},\"@openzeppelin/contracts/token/ERC20/utils/SafeERC20.sol\":{\"keccak256\":\"0x304d732678032a9781ae85c8f204c8fba3d3a5e31c02616964e75cfdc5049098\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://299ced486011781dc98f638059678323c03079fefae1482abaa2135b22fa92d0\",\"dweb:/ipfs/QmbZNbcPTBxNvwChavN2kkZZs7xHhYL7mv51KrxMhsMs3j\"]},\"@openzeppelin/contracts/utils/Context.sol\":{\"keccak256\":\"0x493033a8d1b176a037b2cc6a04dad01a5c157722049bbecf632ca876224dd4b2\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://6a708e8a5bdb1011c2c381c9a5cfd8a9a956d7d0a9dc1bd8bcdaf52f76ef2f12\",\"dweb:/ipfs/Qmax9WHBnVsZP46ZxEMNRQpLQnrdE4dK8LehML1Py8FowF\"]},\"@openzeppelin/contracts/utils/LowLevelCall.sol\":{\"keccak256\":\"0x5b4802a4352474792df3107e961d1cc593e47b820c14f69d3505cb28f5a6a583\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://a6f86fd01f829499fe0545ff5dda07d4521988e88bfe0bf801fc15650921ed56\",\"dweb:/ipfs/QmUUKu4ZDffHAmfkf3asuQfmLTyfpuy2Amdncc3SqfzKPG\"]},\"@openzeppelin/contracts/utils/Memory.sol\":{\"keccak256\":\"0x35feec480590c0ed9c1623df077ba9af406ad57cd9d149ff278c7316d6fe8fe0\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://839967d079db4cd624c3f735a6e911953c0e2347418c016f6a0cc18ed1aa9603\",\"dweb:/ipfs/QmaWxNL8Ymkwerfvq1LNzpbq2PMzTGsnXzqsYExNyvKWka\"]},\"@openzeppelin/contracts/utils/Panic.sol\":{\"keccak256\":\"0xf7fe324703a64fc51702311dc51562d5cb1497734f074e4f483bfb6717572d7a\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://c6a5ff4f9fd8649b7ee20800b7fa387d3465bd77cf20c2d1068cd5c98e1ed57a\",\"dweb:/ipfs/QmVSaVJf9FXFhdYEYeCEfjMVHrxDh5qL4CGkxdMWpQCrqG\"]},\"@openzeppelin/contracts/utils/introspection/IERC165.sol\":{\"keccak256\":\"0x8891738ffe910f0cf2da09566928589bf5d63f4524dd734fd9cedbac3274dd5c\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://971f954442df5c2ef5b5ebf1eb245d7105d9fbacc7386ee5c796df1d45b21617\",\"dweb:/ipfs/QmadRjHbkicwqwwh61raUEapaVEtaLMcYbQZWs9gUkgj3u\"]},\"@openzeppelin/contracts/utils/math/Math.sol\":{\"keccak256\":\"0x09e3f1c72d4c5cbe8e2644ab7313f8f7177533ae2f4c24cdcbbeaf520a73734c\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://93208401215d539fa2d81626b207c1f611def7883d0e447b3b5969ebaa7b3c2c\",\"dweb:/ipfs/QmXPxDnQPx8LAweX5ZJqEcwkvs59kP4c64VVDG1Jjq1mef\"]},\"@openzeppelin/contracts/utils/math/SafeCast.sol\":{\"keccak256\":\"0x195533c86d0ef72bcc06456a4f66a9b941f38eb403739b00f21fd7c1abd1ae54\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://b1d578337048cad08c1c03041cca5978eff5428aa130c781b271ad9e5566e1f8\",\"dweb:/ipfs/QmPFKL2r9CBsMwmUqqdcFPfHZB2qcs9g1HDrPxzWSxomvy\"]}},\"version\":1}","storageLayout":{"storage":[{"astId":8109,"contract":"@openzeppelin/contracts/token/ERC20/extensions/ERC4626.sol:ERC4626","label":"_balances","offset":0,"slot":"0","type":"t_mapping(t_address,t_uint256)"},{"astId":8115,"contract":"@openzeppelin/contracts/token/ERC20/extensions/ERC4626.sol:ERC4626","label":"_allowances","offset":0,"slot":"1","type":"t_mapping(t_address,t_mapping(t_address,t_uint256))"},{"astId":8117,"contract":"@openzeppelin/contracts/token/ERC20/extensions/ERC4626.sol:ERC4626","label":"_totalSupply","offset":0,"slot":"2","type":"t_uint256"},{"astId":8119,"contract":"@openzeppelin/contracts/token/ERC20/extensions/ERC4626.sol:ERC4626","label":"_name","offset":0,"slot":"3","type":"t_string_storage"},{"astId":8121,"contract":"@openzeppelin/contracts/token/ERC20/extensions/ERC4626.sol:ERC4626","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"}}}}},"@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":"value","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":"to","type":"address"},{"internalType":"uint256","name":"value","type":"uint256"}],"name":"transfer","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"from","type":"address"},{"internalType":"address","name":"to","type":"address"},{"internalType":"uint256","name":"value","type":"uint256"}],"name":"transferFrom","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"}],"evm":{"bytecode":{"functionDebugData":{},"generatedSources":[],"linkReferences":{},"object":"","opcodes":"","sourceMap":""},"deployedBytecode":{"functionDebugData":{},"generatedSources":[],"immutableReferences":{},"linkReferences":{},"object":"","opcodes":"","sourceMap":""},"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.30+commit.73712a01\"},\"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\":\"value\",\"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\":\"to\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"value\",\"type\":\"uint256\"}],\"name\":\"transfer\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"from\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"value\",\"type\":\"uint256\"}],\"name\":\"transferFrom\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"}],\"devdoc\":{\"details\":\"Interface for the optional metadata functions from the ERC-20 standard.\",\"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 a `value` amount of tokens 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 value 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 value of tokens in existence.\"},\"transfer(address,uint256)\":{\"details\":\"Moves a `value` amount of tokens from the caller's account to `to`. Returns a boolean value indicating whether the operation succeeded. Emits a {Transfer} event.\"},\"transferFrom(address,address,uint256)\":{\"details\":\"Moves a `value` amount of tokens from `from` to `to` using the allowance mechanism. `value` 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\":\"prague\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"enabled\":true,\"runs\":200},\"remappings\":[]},\"sources\":{\"@openzeppelin/contracts/token/ERC20/IERC20.sol\":{\"keccak256\":\"0x74ed01eb66b923d0d0cfe3be84604ac04b76482a55f9dd655e1ef4d367f95bc2\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://5282825a626cfe924e504274b864a652b0023591fa66f06a067b25b51ba9b303\",\"dweb:/ipfs/QmeCfPykghhMc81VJTrHTC7sF6CRvaA1FXVq2pJhwYp1dV\"]},\"@openzeppelin/contracts/token/ERC20/extensions/IERC20Metadata.sol\":{\"keccak256\":\"0xd6fa4088198f04eef10c5bce8a2f4d60554b7ec4b987f684393c01bf79b94d9f\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://f95ee0bbd4dd3ac730d066ba3e785ded4565e890dbec2fa7d3b9fe3bad9d0d6e\",\"dweb:/ipfs/QmSLr6bHkPFWT7ntj34jmwfyskpwo97T9jZUrk5sz3sdtR\"]}},\"version\":1}","storageLayout":{"storage":[],"types":null}}},"@openzeppelin/contracts/token/ERC20/utils/SafeERC20.sol":{"SafeERC20":{"abi":[{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"currentAllowance","type":"uint256"},{"internalType":"uint256","name":"requestedDecrease","type":"uint256"}],"name":"SafeERC20FailedDecreaseAllowance","type":"error"},{"inputs":[{"internalType":"address","name":"token","type":"address"}],"name":"SafeERC20FailedOperation","type":"error"}],"evm":{"bytecode":{"functionDebugData":{},"generatedSources":[],"linkReferences":{},"object":"60556032600b8282823980515f1a607314602657634e487b7160e01b5f525f60045260245ffd5b305f52607381538281f3fe730000000000000000000000000000000000000000301460806040525f5ffdfea2646970667358221220e99680b39fae04dde6f92a5e69ffb12d93cbdb1c92a80af8b102e502387f140364736f6c634300081e0033","opcodes":"PUSH1 0x55 PUSH1 0x32 PUSH1 0xB DUP3 DUP3 DUP3 CODECOPY DUP1 MLOAD PUSH0 BYTE PUSH1 0x73 EQ PUSH1 0x26 JUMPI PUSH4 0x4E487B71 PUSH1 0xE0 SHL PUSH0 MSTORE PUSH0 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH0 REVERT JUMPDEST ADDRESS PUSH0 MSTORE PUSH1 0x73 DUP2 MSTORE8 DUP3 DUP2 RETURN INVALID PUSH20 0x0 ADDRESS EQ PUSH1 0x80 PUSH1 0x40 MSTORE PUSH0 PUSH0 REVERT INVALID LOG2 PUSH5 0x6970667358 0x22 SLT KECCAK256 0xE9 SWAP7 DUP1 0xB3 SWAP16 0xAE DIV 0xDD DUPN 0xF9 0x2A MCOPY PUSH10 0xFFB12D93CBDB1C92A80A EXTCALL 0xB1 MUL JUMPF 0x238 PUSH32 0x140364736F6C634300081E003300000000000000000000000000000000000000 ","sourceMap":"698:12615:36:-:0;;;;;;;;;;;;;;;-1:-1:-1;;;698:12615:36;;;;;;;;;;;;;;;;;"},"deployedBytecode":{"functionDebugData":{},"generatedSources":[],"immutableReferences":{},"linkReferences":{},"object":"730000000000000000000000000000000000000000301460806040525f5ffdfea2646970667358221220e99680b39fae04dde6f92a5e69ffb12d93cbdb1c92a80af8b102e502387f140364736f6c634300081e0033","opcodes":"PUSH20 0x0 ADDRESS EQ PUSH1 0x80 PUSH1 0x40 MSTORE PUSH0 PUSH0 REVERT INVALID LOG2 PUSH5 0x6970667358 0x22 SLT KECCAK256 0xE9 SWAP7 DUP1 0xB3 SWAP16 0xAE DIV 0xDD DUPN 0xF9 0x2A MCOPY PUSH10 0xFFB12D93CBDB1C92A80A EXTCALL 0xB1 MUL JUMPF 0x238 PUSH32 0x140364736F6C634300081E003300000000000000000000000000000000000000 ","sourceMap":"698:12615:36:-:0;;;;;;;;"},"methodIdentifiers":{}},"metadata":"{\"compiler\":{\"version\":\"0.8.30+commit.73712a01\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"inputs\":[{\"internalType\":\"address\",\"name\":\"spender\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"currentAllowance\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"requestedDecrease\",\"type\":\"uint256\"}],\"name\":\"SafeERC20FailedDecreaseAllowance\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"token\",\"type\":\"address\"}],\"name\":\"SafeERC20FailedOperation\",\"type\":\"error\"}],\"devdoc\":{\"details\":\"Wrappers around ERC-20 operations that throw on failure (when the token contract returns false). Tokens that return no value (and instead revert or throw on failure) are also supported, non-reverting calls are assumed to be successful. To use this library you can add a `using SafeERC20 for IERC20;` statement to your contract, which allows you to call the safe operations as `token.safeTransfer(...)`, etc.\",\"errors\":{\"SafeERC20FailedDecreaseAllowance(address,uint256,uint256)\":[{\"details\":\"Indicates a failed `decreaseAllowance` request.\"}],\"SafeERC20FailedOperation(address)\":[{\"details\":\"An operation with an ERC-20 token failed.\"}]},\"kind\":\"dev\",\"methods\":{},\"title\":\"SafeERC20\",\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{},\"version\":1}},\"settings\":{\"compilationTarget\":{\"@openzeppelin/contracts/token/ERC20/utils/SafeERC20.sol\":\"SafeERC20\"},\"evmVersion\":\"prague\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"enabled\":true,\"runs\":200},\"remappings\":[]},\"sources\":{\"@openzeppelin/contracts/interfaces/IERC1363.sol\":{\"keccak256\":\"0xd5ea07362ab630a6a3dee4285a74cf2377044ca2e4be472755ad64d7c5d4b69d\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://da5e832b40fc5c3145d3781e2e5fa60ac2052c9d08af7e300dc8ab80c4343100\",\"dweb:/ipfs/QmTzf7N5ZUdh5raqtzbM11yexiUoLC9z3Ws632MCuycq1d\"]},\"@openzeppelin/contracts/interfaces/IERC165.sol\":{\"keccak256\":\"0x0afcb7e740d1537b252cb2676f600465ce6938398569f09ba1b9ca240dde2dfc\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://1c299900ac4ec268d4570ecef0d697a3013cd11a6eb74e295ee3fbc945056037\",\"dweb:/ipfs/Qmab9owJoxcA7vJT5XNayCMaUR1qxqj1NDzzisduwaJMcZ\"]},\"@openzeppelin/contracts/interfaces/IERC20.sol\":{\"keccak256\":\"0x1a6221315ce0307746c2c4827c125d821ee796c74a676787762f4778671d4f44\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://1bb2332a7ee26dd0b0de9b7fe266749f54820c99ab6a3bcb6f7e6b751d47ee2d\",\"dweb:/ipfs/QmcRWpaBeCYkhy68PR3B4AgD7asuQk7PwkWxrvJbZcikLF\"]},\"@openzeppelin/contracts/token/ERC20/IERC20.sol\":{\"keccak256\":\"0x74ed01eb66b923d0d0cfe3be84604ac04b76482a55f9dd655e1ef4d367f95bc2\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://5282825a626cfe924e504274b864a652b0023591fa66f06a067b25b51ba9b303\",\"dweb:/ipfs/QmeCfPykghhMc81VJTrHTC7sF6CRvaA1FXVq2pJhwYp1dV\"]},\"@openzeppelin/contracts/token/ERC20/utils/SafeERC20.sol\":{\"keccak256\":\"0x304d732678032a9781ae85c8f204c8fba3d3a5e31c02616964e75cfdc5049098\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://299ced486011781dc98f638059678323c03079fefae1482abaa2135b22fa92d0\",\"dweb:/ipfs/QmbZNbcPTBxNvwChavN2kkZZs7xHhYL7mv51KrxMhsMs3j\"]},\"@openzeppelin/contracts/utils/introspection/IERC165.sol\":{\"keccak256\":\"0x8891738ffe910f0cf2da09566928589bf5d63f4524dd734fd9cedbac3274dd5c\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://971f954442df5c2ef5b5ebf1eb245d7105d9fbacc7386ee5c796df1d45b21617\",\"dweb:/ipfs/QmadRjHbkicwqwwh61raUEapaVEtaLMcYbQZWs9gUkgj3u\"]}},\"version\":1}","storageLayout":{"storage":[],"types":null}}},"@openzeppelin/contracts/utils/Address.sol":{"Address":{"abi":[{"inputs":[{"internalType":"address","name":"target","type":"address"}],"name":"AddressEmptyCode","type":"error"}],"evm":{"bytecode":{"functionDebugData":{},"generatedSources":[],"linkReferences":{},"object":"60556032600b8282823980515f1a607314602657634e487b7160e01b5f525f60045260245ffd5b305f52607381538281f3fe730000000000000000000000000000000000000000301460806040525f5ffdfea2646970667358221220e655924432b9f921c67aeb5e2b82e42dfea967d21b6cb314bbeb99c9b7b8c9c364736f6c634300081e0033","opcodes":"PUSH1 0x55 PUSH1 0x32 PUSH1 0xB DUP3 DUP3 DUP3 CODECOPY DUP1 MLOAD PUSH0 BYTE PUSH1 0x73 EQ PUSH1 0x26 JUMPI PUSH4 0x4E487B71 PUSH1 0xE0 SHL PUSH0 MSTORE PUSH0 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH0 REVERT JUMPDEST ADDRESS PUSH0 MSTORE PUSH1 0x73 DUP2 MSTORE8 DUP3 DUP2 RETURN INVALID PUSH20 0x0 ADDRESS EQ PUSH1 0x80 PUSH1 0x40 MSTORE PUSH0 PUSH0 REVERT INVALID LOG2 PUSH5 0x6970667358 0x22 SLT KECCAK256 DUPN 0x55 SWAP3 PREVRANDAO ORIGIN 0xB9 EXTDELEGATECALL 0x21 0xC6 PUSH27 0xEB5E2B82E42DFEA967D21B6CB314BBEB99C9B7B8C9C364736F6C63 NUMBER STOP ADDMOD 0x1E STOP CALLER ","sourceMap":"282:6520:37:-:0;;;;;;;;;;;;;;;-1:-1:-1;;;282:6520:37;;;;;;;;;;;;;;;;;"},"deployedBytecode":{"functionDebugData":{},"generatedSources":[],"immutableReferences":{},"linkReferences":{},"object":"730000000000000000000000000000000000000000301460806040525f5ffdfea2646970667358221220e655924432b9f921c67aeb5e2b82e42dfea967d21b6cb314bbeb99c9b7b8c9c364736f6c634300081e0033","opcodes":"PUSH20 0x0 ADDRESS EQ PUSH1 0x80 PUSH1 0x40 MSTORE PUSH0 PUSH0 REVERT INVALID LOG2 PUSH5 0x6970667358 0x22 SLT KECCAK256 DUPN 0x55 SWAP3 PREVRANDAO ORIGIN 0xB9 EXTDELEGATECALL 0x21 0xC6 PUSH27 0xEB5E2B82E42DFEA967D21B6CB314BBEB99C9B7B8C9C364736F6C63 NUMBER STOP ADDMOD 0x1E STOP CALLER ","sourceMap":"282:6520:37:-:0;;;;;;;;"},"methodIdentifiers":{}},"metadata":"{\"compiler\":{\"version\":\"0.8.30+commit.73712a01\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"inputs\":[{\"internalType\":\"address\",\"name\":\"target\",\"type\":\"address\"}],\"name\":\"AddressEmptyCode\",\"type\":\"error\"}],\"devdoc\":{\"details\":\"Collection of functions related to the address type\",\"errors\":{\"AddressEmptyCode(address)\":[{\"details\":\"There's no code at `target` (it is not a contract).\"}]},\"kind\":\"dev\",\"methods\":{},\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{},\"version\":1}},\"settings\":{\"compilationTarget\":{\"@openzeppelin/contracts/utils/Address.sol\":\"Address\"},\"evmVersion\":\"prague\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"enabled\":true,\"runs\":200},\"remappings\":[]},\"sources\":{\"@openzeppelin/contracts/utils/Address.sol\":{\"keccak256\":\"0x0fa9e0d3a859900b5a46f70a03c73adf259603d5e05027a37fe0b45529d85346\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://c2add4da0240c9f2ce47649c8bb6b11b40e98cf6f88b8bdc76b2704e89391710\",\"dweb:/ipfs/QmNQTwF2uVzu4CRtNxr8bxyP9XuW6VsZuo2Nr4KR2bZr3d\"]},\"@openzeppelin/contracts/utils/Errors.sol\":{\"keccak256\":\"0x6afa713bfd42cf0f7656efa91201007ac465e42049d7de1d50753a373648c123\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://ba1d02f4847670a1b83dec9f7d37f0b0418d6043447b69f3a29a5f9efc547fcf\",\"dweb:/ipfs/QmQ7iH2keLNUKgq2xSWcRmuBE5eZ3F5whYAkAGzCNNoEWB\"]},\"@openzeppelin/contracts/utils/LowLevelCall.sol\":{\"keccak256\":\"0x5b4802a4352474792df3107e961d1cc593e47b820c14f69d3505cb28f5a6a583\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://a6f86fd01f829499fe0545ff5dda07d4521988e88bfe0bf801fc15650921ed56\",\"dweb:/ipfs/QmUUKu4ZDffHAmfkf3asuQfmLTyfpuy2Amdncc3SqfzKPG\"]}},\"version\":1}","storageLayout":{"storage":[],"types":null}}},"@openzeppelin/contracts/utils/Context.sol":{"Context":{"abi":[],"evm":{"bytecode":{"functionDebugData":{},"generatedSources":[],"linkReferences":{},"object":"","opcodes":"","sourceMap":""},"deployedBytecode":{"functionDebugData":{},"generatedSources":[],"immutableReferences":{},"linkReferences":{},"object":"","opcodes":"","sourceMap":""},"methodIdentifiers":{}},"metadata":"{\"compiler\":{\"version\":\"0.8.30+commit.73712a01\"},\"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\":\"prague\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"enabled\":true,\"runs\":200},\"remappings\":[]},\"sources\":{\"@openzeppelin/contracts/utils/Context.sol\":{\"keccak256\":\"0x493033a8d1b176a037b2cc6a04dad01a5c157722049bbecf632ca876224dd4b2\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://6a708e8a5bdb1011c2c381c9a5cfd8a9a956d7d0a9dc1bd8bcdaf52f76ef2f12\",\"dweb:/ipfs/Qmax9WHBnVsZP46ZxEMNRQpLQnrdE4dK8LehML1Py8FowF\"]}},\"version\":1}","storageLayout":{"storage":[],"types":null}}},"@openzeppelin/contracts/utils/Errors.sol":{"Errors":{"abi":[{"inputs":[],"name":"FailedCall","type":"error"},{"inputs":[],"name":"FailedDeployment","type":"error"},{"inputs":[{"internalType":"uint256","name":"balance","type":"uint256"},{"internalType":"uint256","name":"needed","type":"uint256"}],"name":"InsufficientBalance","type":"error"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"MissingPrecompile","type":"error"}],"evm":{"bytecode":{"functionDebugData":{},"generatedSources":[],"linkReferences":{},"object":"60556032600b8282823980515f1a607314602657634e487b7160e01b5f525f60045260245ffd5b305f52607381538281f3fe730000000000000000000000000000000000000000301460806040525f5ffdfea26469706673582212201e832bc7389b9b61623663bf55ec6dfd56cbf5e8534cdc6bec8916c83a4e082d64736f6c634300081e0033","opcodes":"PUSH1 0x55 PUSH1 0x32 PUSH1 0xB DUP3 DUP3 DUP3 CODECOPY DUP1 MLOAD PUSH0 BYTE PUSH1 0x73 EQ PUSH1 0x26 JUMPI PUSH4 0x4E487B71 PUSH1 0xE0 SHL PUSH0 MSTORE PUSH0 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH0 REVERT JUMPDEST ADDRESS PUSH0 MSTORE PUSH1 0x73 DUP2 MSTORE8 DUP3 DUP2 RETURN INVALID PUSH20 0x0 ADDRESS EQ PUSH1 0x80 PUSH1 0x40 MSTORE PUSH0 PUSH0 REVERT INVALID LOG2 PUSH5 0x6970667358 0x22 SLT KECCAK256 0x1E DUP4 0x2B 0xC7 CODESIZE SWAP12 SWAP12 PUSH2 0x6236 PUSH4 0xBF55EC6D REVERT JUMP 0xCB CREATE2 0xE8 MSTORE8 0x4C 0xDC PUSH12 0xEC8916C83A4E082D64736F6C PUSH4 0x4300081E STOP CALLER ","sourceMap":"411:484:39:-:0;;;;;;;;;;;;;;;-1:-1:-1;;;411:484:39;;;;;;;;;;;;;;;;;"},"deployedBytecode":{"functionDebugData":{},"generatedSources":[],"immutableReferences":{},"linkReferences":{},"object":"730000000000000000000000000000000000000000301460806040525f5ffdfea26469706673582212201e832bc7389b9b61623663bf55ec6dfd56cbf5e8534cdc6bec8916c83a4e082d64736f6c634300081e0033","opcodes":"PUSH20 0x0 ADDRESS EQ PUSH1 0x80 PUSH1 0x40 MSTORE PUSH0 PUSH0 REVERT INVALID LOG2 PUSH5 0x6970667358 0x22 SLT KECCAK256 0x1E DUP4 0x2B 0xC7 CODESIZE SWAP12 SWAP12 PUSH2 0x6236 PUSH4 0xBF55EC6D REVERT JUMP 0xCB CREATE2 0xE8 MSTORE8 0x4C 0xDC PUSH12 0xEC8916C83A4E082D64736F6C PUSH4 0x4300081E STOP CALLER ","sourceMap":"411:484:39:-:0;;;;;;;;"},"methodIdentifiers":{}},"metadata":"{\"compiler\":{\"version\":\"0.8.30+commit.73712a01\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"inputs\":[],\"name\":\"FailedCall\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"FailedDeployment\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"balance\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"needed\",\"type\":\"uint256\"}],\"name\":\"InsufficientBalance\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"name\":\"MissingPrecompile\",\"type\":\"error\"}],\"devdoc\":{\"details\":\"Collection of common custom errors used in multiple contracts IMPORTANT: Backwards compatibility is not guaranteed in future versions of the library. It is recommended to avoid relying on the error API for critical functionality. _Available since v5.1._\",\"errors\":{\"FailedCall()\":[{\"details\":\"A call to an address target failed. The target may have reverted.\"}],\"FailedDeployment()\":[{\"details\":\"The deployment failed.\"}],\"InsufficientBalance(uint256,uint256)\":[{\"details\":\"The ETH balance of the account is not enough to perform the operation.\"}],\"MissingPrecompile(address)\":[{\"details\":\"A necessary precompile is missing.\"}]},\"kind\":\"dev\",\"methods\":{},\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{},\"version\":1}},\"settings\":{\"compilationTarget\":{\"@openzeppelin/contracts/utils/Errors.sol\":\"Errors\"},\"evmVersion\":\"prague\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"enabled\":true,\"runs\":200},\"remappings\":[]},\"sources\":{\"@openzeppelin/contracts/utils/Errors.sol\":{\"keccak256\":\"0x6afa713bfd42cf0f7656efa91201007ac465e42049d7de1d50753a373648c123\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://ba1d02f4847670a1b83dec9f7d37f0b0418d6043447b69f3a29a5f9efc547fcf\",\"dweb:/ipfs/QmQ7iH2keLNUKgq2xSWcRmuBE5eZ3F5whYAkAGzCNNoEWB\"]}},\"version\":1}","storageLayout":{"storage":[],"types":null}}},"@openzeppelin/contracts/utils/LowLevelCall.sol":{"LowLevelCall":{"abi":[],"evm":{"bytecode":{"functionDebugData":{},"generatedSources":[],"linkReferences":{},"object":"60556032600b8282823980515f1a607314602657634e487b7160e01b5f525f60045260245ffd5b305f52607381538281f3fe730000000000000000000000000000000000000000301460806040525f5ffdfea26469706673582212208ed074db20ff99bdc7bf3b87f9f0e089be8ae4f28acd31da148f2e1d8c090d0f64736f6c634300081e0033","opcodes":"PUSH1 0x55 PUSH1 0x32 PUSH1 0xB DUP3 DUP3 DUP3 CODECOPY DUP1 MLOAD PUSH0 BYTE PUSH1 0x73 EQ PUSH1 0x26 JUMPI PUSH4 0x4E487B71 PUSH1 0xE0 SHL PUSH0 MSTORE PUSH0 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH0 REVERT JUMPDEST ADDRESS PUSH0 MSTORE PUSH1 0x73 DUP2 MSTORE8 DUP3 DUP2 RETURN INVALID PUSH20 0x0 ADDRESS EQ PUSH1 0x80 PUSH1 0x40 MSTORE PUSH0 PUSH0 REVERT INVALID LOG2 PUSH5 0x6970667358 0x22 SLT KECCAK256 DUP15 0xD0 PUSH21 0xDB20FF99BDC7BF3B87F9F0E089BE8AE4F28ACD31DA EQ DUP16 0x2E SAR DUP13 MULMOD 0xD 0xF PUSH5 0x736F6C6343 STOP ADDMOD 0x1E STOP CALLER ","sourceMap":"421:5083:40:-:0;;;;;;;;;;;;;;;-1:-1:-1;;;421:5083:40;;;;;;;;;;;;;;;;;"},"deployedBytecode":{"functionDebugData":{},"generatedSources":[],"immutableReferences":{},"linkReferences":{},"object":"730000000000000000000000000000000000000000301460806040525f5ffdfea26469706673582212208ed074db20ff99bdc7bf3b87f9f0e089be8ae4f28acd31da148f2e1d8c090d0f64736f6c634300081e0033","opcodes":"PUSH20 0x0 ADDRESS EQ PUSH1 0x80 PUSH1 0x40 MSTORE PUSH0 PUSH0 REVERT INVALID LOG2 PUSH5 0x6970667358 0x22 SLT KECCAK256 DUP15 0xD0 PUSH21 0xDB20FF99BDC7BF3B87F9F0E089BE8AE4F28ACD31DA EQ DUP16 0x2E SAR DUP13 MULMOD 0xD 0xF PUSH5 0x736F6C6343 STOP ADDMOD 0x1E STOP CALLER ","sourceMap":"421:5083:40:-:0;;;;;;;;"},"methodIdentifiers":{}},"metadata":"{\"compiler\":{\"version\":\"0.8.30+commit.73712a01\"},\"language\":\"Solidity\",\"output\":{\"abi\":[],\"devdoc\":{\"details\":\"Library of low level call functions that implement different calling strategies to deal with the return data. WARNING: Using this library requires an advanced understanding of Solidity and how the EVM works. It is recommended to use the {Address} library instead.\",\"kind\":\"dev\",\"methods\":{},\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{},\"version\":1}},\"settings\":{\"compilationTarget\":{\"@openzeppelin/contracts/utils/LowLevelCall.sol\":\"LowLevelCall\"},\"evmVersion\":\"prague\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"enabled\":true,\"runs\":200},\"remappings\":[]},\"sources\":{\"@openzeppelin/contracts/utils/LowLevelCall.sol\":{\"keccak256\":\"0x5b4802a4352474792df3107e961d1cc593e47b820c14f69d3505cb28f5a6a583\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://a6f86fd01f829499fe0545ff5dda07d4521988e88bfe0bf801fc15650921ed56\",\"dweb:/ipfs/QmUUKu4ZDffHAmfkf3asuQfmLTyfpuy2Amdncc3SqfzKPG\"]}},\"version\":1}","storageLayout":{"storage":[],"types":null}}},"@openzeppelin/contracts/utils/Memory.sol":{"Memory":{"abi":[],"evm":{"bytecode":{"functionDebugData":{},"generatedSources":[],"linkReferences":{},"object":"60556032600b8282823980515f1a607314602657634e487b7160e01b5f525f60045260245ffd5b305f52607381538281f3fe730000000000000000000000000000000000000000301460806040525f5ffdfea26469706673582212206cc09b2f6dca6b44547511bc21f983d38eb6384904d58edb0222bb14f9fd14e564736f6c634300081e0033","opcodes":"PUSH1 0x55 PUSH1 0x32 PUSH1 0xB DUP3 DUP3 DUP3 CODECOPY DUP1 MLOAD PUSH0 BYTE PUSH1 0x73 EQ PUSH1 0x26 JUMPI PUSH4 0x4E487B71 PUSH1 0xE0 SHL PUSH0 MSTORE PUSH0 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH0 REVERT JUMPDEST ADDRESS PUSH0 MSTORE PUSH1 0x73 DUP2 MSTORE8 DUP3 DUP2 RETURN INVALID PUSH20 0x0 ADDRESS EQ PUSH1 0x80 PUSH1 0x40 MSTORE PUSH0 PUSH0 REVERT INVALID LOG2 PUSH5 0x6970667358 0x22 SLT KECCAK256 PUSH13 0xC09B2F6DCA6B44547511BC21F9 DUP4 0xD3 DUP15 0xB6 CODESIZE BLOBHASH DIV 0xD5 DUP15 0xDB MUL 0x22 0xBB EQ EXTDELEGATECALL REVERT EQ JUMPF 0x6473 PUSH16 0x6C634300081E00330000000000000000 ","sourceMap":"780:4634:41:-:0;;;;;;;;;;;;;;;-1:-1:-1;;;780:4634:41;;;;;;;;;;;;;;;;;"},"deployedBytecode":{"functionDebugData":{},"generatedSources":[],"immutableReferences":{},"linkReferences":{},"object":"730000000000000000000000000000000000000000301460806040525f5ffdfea26469706673582212206cc09b2f6dca6b44547511bc21f983d38eb6384904d58edb0222bb14f9fd14e564736f6c634300081e0033","opcodes":"PUSH20 0x0 ADDRESS EQ PUSH1 0x80 PUSH1 0x40 MSTORE PUSH0 PUSH0 REVERT INVALID LOG2 PUSH5 0x6970667358 0x22 SLT KECCAK256 PUSH13 0xC09B2F6DCA6B44547511BC21F9 DUP4 0xD3 DUP15 0xB6 CODESIZE BLOBHASH DIV 0xD5 DUP15 0xDB MUL 0x22 0xBB EQ EXTDELEGATECALL REVERT EQ JUMPF 0x6473 PUSH16 0x6C634300081E00330000000000000000 ","sourceMap":"780:4634:41:-:0;;;;;;;;"},"methodIdentifiers":{}},"metadata":"{\"compiler\":{\"version\":\"0.8.30+commit.73712a01\"},\"language\":\"Solidity\",\"output\":{\"abi\":[],\"devdoc\":{\"details\":\"Utilities to manipulate memory. Memory is a contiguous and dynamic byte array in which Solidity stores non-primitive types. This library provides functions to manipulate pointers to this dynamic array and work with slices of it. Slices provide a view into a portion of memory without copying data, enabling efficient substring operations. WARNING: When manipulating memory pointers or slices, make sure to follow the Solidity documentation guidelines for https://docs.soliditylang.org/en/v0.8.20/assembly.html#memory-safety[Memory Safety].\",\"kind\":\"dev\",\"methods\":{},\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{},\"version\":1}},\"settings\":{\"compilationTarget\":{\"@openzeppelin/contracts/utils/Memory.sol\":\"Memory\"},\"evmVersion\":\"prague\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"enabled\":true,\"runs\":200},\"remappings\":[]},\"sources\":{\"@openzeppelin/contracts/utils/Memory.sol\":{\"keccak256\":\"0x35feec480590c0ed9c1623df077ba9af406ad57cd9d149ff278c7316d6fe8fe0\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://839967d079db4cd624c3f735a6e911953c0e2347418c016f6a0cc18ed1aa9603\",\"dweb:/ipfs/QmaWxNL8Ymkwerfvq1LNzpbq2PMzTGsnXzqsYExNyvKWka\"]},\"@openzeppelin/contracts/utils/Panic.sol\":{\"keccak256\":\"0xf7fe324703a64fc51702311dc51562d5cb1497734f074e4f483bfb6717572d7a\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://c6a5ff4f9fd8649b7ee20800b7fa387d3465bd77cf20c2d1068cd5c98e1ed57a\",\"dweb:/ipfs/QmVSaVJf9FXFhdYEYeCEfjMVHrxDh5qL4CGkxdMWpQCrqG\"]},\"@openzeppelin/contracts/utils/math/Math.sol\":{\"keccak256\":\"0x09e3f1c72d4c5cbe8e2644ab7313f8f7177533ae2f4c24cdcbbeaf520a73734c\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://93208401215d539fa2d81626b207c1f611def7883d0e447b3b5969ebaa7b3c2c\",\"dweb:/ipfs/QmXPxDnQPx8LAweX5ZJqEcwkvs59kP4c64VVDG1Jjq1mef\"]},\"@openzeppelin/contracts/utils/math/SafeCast.sol\":{\"keccak256\":\"0x195533c86d0ef72bcc06456a4f66a9b941f38eb403739b00f21fd7c1abd1ae54\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://b1d578337048cad08c1c03041cca5978eff5428aa130c781b271ad9e5566e1f8\",\"dweb:/ipfs/QmPFKL2r9CBsMwmUqqdcFPfHZB2qcs9g1HDrPxzWSxomvy\"]}},\"version\":1}","storageLayout":{"storage":[],"types":null}}},"@openzeppelin/contracts/utils/Multicall.sol":{"Multicall":{"abi":[{"inputs":[{"internalType":"address","name":"target","type":"address"}],"name":"AddressEmptyCode","type":"error"},{"inputs":[],"name":"FailedCall","type":"error"},{"inputs":[{"internalType":"bytes[]","name":"data","type":"bytes[]"}],"name":"multicall","outputs":[{"internalType":"bytes[]","name":"results","type":"bytes[]"}],"stateMutability":"nonpayable","type":"function"}],"evm":{"bytecode":{"functionDebugData":{},"generatedSources":[],"linkReferences":{},"object":"","opcodes":"","sourceMap":""},"deployedBytecode":{"functionDebugData":{},"generatedSources":[],"immutableReferences":{},"linkReferences":{},"object":"","opcodes":"","sourceMap":""},"methodIdentifiers":{"multicall(bytes[])":"ac9650d8"}},"metadata":"{\"compiler\":{\"version\":\"0.8.30+commit.73712a01\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"inputs\":[{\"internalType\":\"address\",\"name\":\"target\",\"type\":\"address\"}],\"name\":\"AddressEmptyCode\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"FailedCall\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"bytes[]\",\"name\":\"data\",\"type\":\"bytes[]\"}],\"name\":\"multicall\",\"outputs\":[{\"internalType\":\"bytes[]\",\"name\":\"results\",\"type\":\"bytes[]\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"}],\"devdoc\":{\"details\":\"Provides a function to batch together multiple calls in a single external call. Consider any assumption about calldata validation performed by the sender may be violated if it's not especially careful about sending transactions invoking {multicall}. For example, a relay address that filters function selectors won't filter calls nested within a {multicall} operation. NOTE: Since 5.0.1 and 4.9.4, this contract identifies non-canonical contexts (i.e. `msg.sender` is not {Context-_msgSender}). If a non-canonical context is identified, the following self `delegatecall` appends the last bytes of `msg.data` to the subcall. This makes it safe to use with {ERC2771Context}. Contexts that don't affect the resolution of {Context-_msgSender} are not propagated to subcalls.\",\"errors\":{\"AddressEmptyCode(address)\":[{\"details\":\"There's no code at `target` (it is not a contract).\"}],\"FailedCall()\":[{\"details\":\"A call to an address target failed. The target may have reverted.\"}]},\"kind\":\"dev\",\"methods\":{\"multicall(bytes[])\":{\"custom:oz-upgrades-unsafe-allow-reachable\":\"delegatecall\",\"details\":\"Receives and executes a batch of function calls on this contract.\"}},\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{},\"version\":1}},\"settings\":{\"compilationTarget\":{\"@openzeppelin/contracts/utils/Multicall.sol\":\"Multicall\"},\"evmVersion\":\"prague\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"enabled\":true,\"runs\":200},\"remappings\":[]},\"sources\":{\"@openzeppelin/contracts/utils/Address.sol\":{\"keccak256\":\"0x0fa9e0d3a859900b5a46f70a03c73adf259603d5e05027a37fe0b45529d85346\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://c2add4da0240c9f2ce47649c8bb6b11b40e98cf6f88b8bdc76b2704e89391710\",\"dweb:/ipfs/QmNQTwF2uVzu4CRtNxr8bxyP9XuW6VsZuo2Nr4KR2bZr3d\"]},\"@openzeppelin/contracts/utils/Context.sol\":{\"keccak256\":\"0x493033a8d1b176a037b2cc6a04dad01a5c157722049bbecf632ca876224dd4b2\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://6a708e8a5bdb1011c2c381c9a5cfd8a9a956d7d0a9dc1bd8bcdaf52f76ef2f12\",\"dweb:/ipfs/Qmax9WHBnVsZP46ZxEMNRQpLQnrdE4dK8LehML1Py8FowF\"]},\"@openzeppelin/contracts/utils/Errors.sol\":{\"keccak256\":\"0x6afa713bfd42cf0f7656efa91201007ac465e42049d7de1d50753a373648c123\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://ba1d02f4847670a1b83dec9f7d37f0b0418d6043447b69f3a29a5f9efc547fcf\",\"dweb:/ipfs/QmQ7iH2keLNUKgq2xSWcRmuBE5eZ3F5whYAkAGzCNNoEWB\"]},\"@openzeppelin/contracts/utils/LowLevelCall.sol\":{\"keccak256\":\"0x5b4802a4352474792df3107e961d1cc593e47b820c14f69d3505cb28f5a6a583\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://a6f86fd01f829499fe0545ff5dda07d4521988e88bfe0bf801fc15650921ed56\",\"dweb:/ipfs/QmUUKu4ZDffHAmfkf3asuQfmLTyfpuy2Amdncc3SqfzKPG\"]},\"@openzeppelin/contracts/utils/Multicall.sol\":{\"keccak256\":\"0x72a5499dfae7676e4298a7299bccd3b27438ba1a4c72df5cd69c1c343c7ea20d\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://de0fb51ccae3a0ff377ed185d187440fc612a71bf8e42fdb0e032ce747fa3eef\",\"dweb:/ipfs/QmPNBaiVsAiUhz8qfXcSy27S7CqBbtSd8rPqmaykKBhw7Q\"]}},\"version\":1}","storageLayout":{"storage":[],"types":null}}},"@openzeppelin/contracts/utils/Panic.sol":{"Panic":{"abi":[],"evm":{"bytecode":{"functionDebugData":{},"generatedSources":[],"linkReferences":{},"object":"60556032600b8282823980515f1a607314602657634e487b7160e01b5f525f60045260245ffd5b305f52607381538281f3fe730000000000000000000000000000000000000000301460806040525f5ffdfea264697066735822122061b36661da90b87345825985ba821999b58f7def490800742b0e993e53299a3064736f6c634300081e0033","opcodes":"PUSH1 0x55 PUSH1 0x32 PUSH1 0xB DUP3 DUP3 DUP3 CODECOPY DUP1 MLOAD PUSH0 BYTE PUSH1 0x73 EQ PUSH1 0x26 JUMPI PUSH4 0x4E487B71 PUSH1 0xE0 SHL PUSH0 MSTORE PUSH0 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH0 REVERT JUMPDEST ADDRESS PUSH0 MSTORE PUSH1 0x73 DUP2 MSTORE8 DUP3 DUP2 RETURN INVALID PUSH20 0x0 ADDRESS EQ PUSH1 0x80 PUSH1 0x40 MSTORE PUSH0 PUSH0 REVERT INVALID LOG2 PUSH5 0x6970667358 0x22 SLT KECCAK256 PUSH2 0xB366 PUSH2 0xDA90 0xB8 PUSH20 0x45825985BA821999B58F7DEF490800742B0E993E MSTORE8 0x29 SWAP11 ADDRESS PUSH5 0x736F6C6343 STOP ADDMOD 0x1E STOP CALLER ","sourceMap":"657:1315:43:-:0;;;;;;;;;;;;;;;-1:-1:-1;;;657:1315:43;;;;;;;;;;;;;;;;;"},"deployedBytecode":{"functionDebugData":{},"generatedSources":[],"immutableReferences":{},"linkReferences":{},"object":"730000000000000000000000000000000000000000301460806040525f5ffdfea264697066735822122061b36661da90b87345825985ba821999b58f7def490800742b0e993e53299a3064736f6c634300081e0033","opcodes":"PUSH20 0x0 ADDRESS EQ PUSH1 0x80 PUSH1 0x40 MSTORE PUSH0 PUSH0 REVERT INVALID LOG2 PUSH5 0x6970667358 0x22 SLT KECCAK256 PUSH2 0xB366 PUSH2 0xDA90 0xB8 PUSH20 0x45825985BA821999B58F7DEF490800742B0E993E MSTORE8 0x29 SWAP11 ADDRESS PUSH5 0x736F6C6343 STOP ADDMOD 0x1E STOP CALLER ","sourceMap":"657:1315:43:-:0;;;;;;;;"},"methodIdentifiers":{}},"metadata":"{\"compiler\":{\"version\":\"0.8.30+commit.73712a01\"},\"language\":\"Solidity\",\"output\":{\"abi\":[],\"devdoc\":{\"details\":\"Helper library for emitting standardized panic codes. ```solidity contract Example {      using Panic for uint256;      // Use any of the declared internal constants      function foo() { Panic.GENERIC.panic(); }      // Alternatively      function foo() { Panic.panic(Panic.GENERIC); } } ``` Follows the list from https://github.com/ethereum/solidity/blob/v0.8.24/libsolutil/ErrorCodes.h[libsolutil]. _Available since v5.1._\",\"kind\":\"dev\",\"methods\":{},\"stateVariables\":{\"ARRAY_OUT_OF_BOUNDS\":{\"details\":\"array out of bounds access\"},\"ASSERT\":{\"details\":\"used by the assert() builtin\"},\"DIVISION_BY_ZERO\":{\"details\":\"division or modulo by zero\"},\"EMPTY_ARRAY_POP\":{\"details\":\"empty array pop\"},\"ENUM_CONVERSION_ERROR\":{\"details\":\"enum conversion error\"},\"GENERIC\":{\"details\":\"generic / unspecified error\"},\"INVALID_INTERNAL_FUNCTION\":{\"details\":\"calling invalid internal function\"},\"RESOURCE_ERROR\":{\"details\":\"resource error (too large allocation or too large array)\"},\"STORAGE_ENCODING_ERROR\":{\"details\":\"invalid encoding in storage\"},\"UNDER_OVERFLOW\":{\"details\":\"arithmetic underflow or overflow\"}},\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{},\"version\":1}},\"settings\":{\"compilationTarget\":{\"@openzeppelin/contracts/utils/Panic.sol\":\"Panic\"},\"evmVersion\":\"prague\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"enabled\":true,\"runs\":200},\"remappings\":[]},\"sources\":{\"@openzeppelin/contracts/utils/Panic.sol\":{\"keccak256\":\"0xf7fe324703a64fc51702311dc51562d5cb1497734f074e4f483bfb6717572d7a\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://c6a5ff4f9fd8649b7ee20800b7fa387d3465bd77cf20c2d1068cd5c98e1ed57a\",\"dweb:/ipfs/QmVSaVJf9FXFhdYEYeCEfjMVHrxDh5qL4CGkxdMWpQCrqG\"]}},\"version\":1}","storageLayout":{"storage":[],"types":null}}},"@openzeppelin/contracts/utils/StorageSlot.sol":{"StorageSlot":{"abi":[],"evm":{"bytecode":{"functionDebugData":{},"generatedSources":[],"linkReferences":{},"object":"60556032600b8282823980515f1a607314602657634e487b7160e01b5f525f60045260245ffd5b305f52607381538281f3fe730000000000000000000000000000000000000000301460806040525f5ffdfea2646970667358221220c5b25bc7e25b3a72f2d49562c0f1867acb24cd8f54fcb3e7733989e54e66433764736f6c634300081e0033","opcodes":"PUSH1 0x55 PUSH1 0x32 PUSH1 0xB DUP3 DUP3 DUP3 CODECOPY DUP1 MLOAD PUSH0 BYTE PUSH1 0x73 EQ PUSH1 0x26 JUMPI PUSH4 0x4E487B71 PUSH1 0xE0 SHL PUSH0 MSTORE PUSH0 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH0 REVERT JUMPDEST ADDRESS PUSH0 MSTORE PUSH1 0x73 DUP2 MSTORE8 DUP3 DUP2 RETURN INVALID PUSH20 0x0 ADDRESS EQ PUSH1 0x80 PUSH1 0x40 MSTORE PUSH0 PUSH0 REVERT INVALID LOG2 PUSH5 0x6970667358 0x22 SLT KECCAK256 0xC5 0xB2 JUMPDEST 0xC7 0xE2 JUMPDEST GASPRICE PUSH19 0xF2D49562C0F1867ACB24CD8F54FCB3E7733989 JUMPF 0x4E66 NUMBER CALLDATACOPY PUSH5 0x736F6C6343 STOP ADDMOD 0x1E STOP CALLER ","sourceMap":"1407:2774:44:-:0;;;;;;;;;;;;;;;-1:-1:-1;;;1407:2774:44;;;;;;;;;;;;;;;;;"},"deployedBytecode":{"functionDebugData":{},"generatedSources":[],"immutableReferences":{},"linkReferences":{},"object":"730000000000000000000000000000000000000000301460806040525f5ffdfea2646970667358221220c5b25bc7e25b3a72f2d49562c0f1867acb24cd8f54fcb3e7733989e54e66433764736f6c634300081e0033","opcodes":"PUSH20 0x0 ADDRESS EQ PUSH1 0x80 PUSH1 0x40 MSTORE PUSH0 PUSH0 REVERT INVALID LOG2 PUSH5 0x6970667358 0x22 SLT KECCAK256 0xC5 0xB2 JUMPDEST 0xC7 0xE2 JUMPDEST GASPRICE PUSH19 0xF2D49562C0F1867ACB24CD8F54FCB3E7733989 JUMPF 0x4E66 NUMBER CALLDATACOPY PUSH5 0x736F6C6343 STOP ADDMOD 0x1E STOP CALLER ","sourceMap":"1407:2774:44:-:0;;;;;;;;"},"methodIdentifiers":{}},"metadata":"{\"compiler\":{\"version\":\"0.8.30+commit.73712a01\"},\"language\":\"Solidity\",\"output\":{\"abi\":[],\"devdoc\":{\"details\":\"Library for reading and writing primitive types to specific storage slots. Storage slots are often used to avoid storage conflict when dealing with upgradeable contracts. This library helps with reading and writing to such slots without the need for inline assembly. The functions in this library return Slot structs that contain a `value` member that can be used to read or write. Example usage to set ERC-1967 implementation slot: ```solidity contract ERC1967 {     // Define the slot. Alternatively, use the SlotDerivation library to derive the slot.     bytes32 internal constant _IMPLEMENTATION_SLOT = 0x360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc;     function _getImplementation() internal view returns (address) {         return StorageSlot.getAddressSlot(_IMPLEMENTATION_SLOT).value;     }     function _setImplementation(address newImplementation) internal {         require(newImplementation.code.length > 0);         StorageSlot.getAddressSlot(_IMPLEMENTATION_SLOT).value = newImplementation;     } } ``` TIP: Consider using this library along with {SlotDerivation}.\",\"kind\":\"dev\",\"methods\":{},\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{},\"version\":1}},\"settings\":{\"compilationTarget\":{\"@openzeppelin/contracts/utils/StorageSlot.sol\":\"StorageSlot\"},\"evmVersion\":\"prague\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"enabled\":true,\"runs\":200},\"remappings\":[]},\"sources\":{\"@openzeppelin/contracts/utils/StorageSlot.sol\":{\"keccak256\":\"0xcf74f855663ce2ae00ed8352666b7935f6cddea2932fdf2c3ecd30a9b1cd0e97\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://9f660b1f351b757dfe01438e59888f31f33ded3afcf5cb5b0d9bf9aa6f320a8b\",\"dweb:/ipfs/QmarDJ5hZEgBtCmmrVzEZWjub9769eD686jmzb2XpSU1cM\"]}},\"version\":1}","storageLayout":{"storage":[],"types":null}}},"@openzeppelin/contracts/utils/cryptography/Hashes.sol":{"Hashes":{"abi":[],"evm":{"bytecode":{"functionDebugData":{},"generatedSources":[],"linkReferences":{},"object":"60556032600b8282823980515f1a607314602657634e487b7160e01b5f525f60045260245ffd5b305f52607381538281f3fe730000000000000000000000000000000000000000301460806040525f5ffdfea264697066735822122017ca67139330a008d50bd086b01f0cac66bacbb843fc40b6072091ab3efa731a64736f6c634300081e0033","opcodes":"PUSH1 0x55 PUSH1 0x32 PUSH1 0xB DUP3 DUP3 DUP3 CODECOPY DUP1 MLOAD PUSH0 BYTE PUSH1 0x73 EQ PUSH1 0x26 JUMPI PUSH4 0x4E487B71 PUSH1 0xE0 SHL PUSH0 MSTORE PUSH0 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH0 REVERT JUMPDEST ADDRESS PUSH0 MSTORE PUSH1 0x73 DUP2 MSTORE8 DUP3 DUP2 RETURN INVALID PUSH20 0x0 ADDRESS EQ PUSH1 0x80 PUSH1 0x40 MSTORE PUSH0 PUSH0 REVERT INVALID LOG2 PUSH5 0x6970667358 0x22 SLT KECCAK256 OR 0xCA PUSH8 0x139330A008D50BD0 DUP7 0xB0 0x1F 0xC 0xAC PUSH7 0xBACBB843FC40B6 SMOD KECCAK256 SWAP2 0xAB RETURNDATACOPY STATICCALL PUSH20 0x1A64736F6C634300081E00330000000000000000 ","sourceMap":"221:811:45:-:0;;;;;;;;;;;;;;;-1:-1:-1;;;221:811:45;;;;;;;;;;;;;;;;;"},"deployedBytecode":{"functionDebugData":{},"generatedSources":[],"immutableReferences":{},"linkReferences":{},"object":"730000000000000000000000000000000000000000301460806040525f5ffdfea264697066735822122017ca67139330a008d50bd086b01f0cac66bacbb843fc40b6072091ab3efa731a64736f6c634300081e0033","opcodes":"PUSH20 0x0 ADDRESS EQ PUSH1 0x80 PUSH1 0x40 MSTORE PUSH0 PUSH0 REVERT INVALID LOG2 PUSH5 0x6970667358 0x22 SLT KECCAK256 OR 0xCA PUSH8 0x139330A008D50BD0 DUP7 0xB0 0x1F 0xC 0xAC PUSH7 0xBACBB843FC40B6 SMOD KECCAK256 SWAP2 0xAB RETURNDATACOPY STATICCALL PUSH20 0x1A64736F6C634300081E00330000000000000000 ","sourceMap":"221:811:45:-:0;;;;;;;;"},"methodIdentifiers":{}},"metadata":"{\"compiler\":{\"version\":\"0.8.30+commit.73712a01\"},\"language\":\"Solidity\",\"output\":{\"abi\":[],\"devdoc\":{\"details\":\"Library of standard hash functions. _Available since v5.1._\",\"kind\":\"dev\",\"methods\":{},\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{},\"version\":1}},\"settings\":{\"compilationTarget\":{\"@openzeppelin/contracts/utils/cryptography/Hashes.sol\":\"Hashes\"},\"evmVersion\":\"prague\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"enabled\":true,\"runs\":200},\"remappings\":[]},\"sources\":{\"@openzeppelin/contracts/utils/cryptography/Hashes.sol\":{\"keccak256\":\"0x8cbd338f083224b4b6f0ff42cbda641a0a6c31ffcdca197452b97fe4d0918269\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://f517dec5ba0c6491395acbf7f1d621f4e89e8f218bf5303c867b1c5ad70c6b11\",\"dweb:/ipfs/QmWmXHRLEw8W6ckth7NyYTU88YfvuS7xSsfae5ksL8qNUe\"]}},\"version\":1}","storageLayout":{"storage":[],"types":null}}},"@openzeppelin/contracts/utils/introspection/IERC165.sol":{"IERC165":{"abi":[{"inputs":[{"internalType":"bytes4","name":"interfaceId","type":"bytes4"}],"name":"supportsInterface","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"}],"evm":{"bytecode":{"functionDebugData":{},"generatedSources":[],"linkReferences":{},"object":"","opcodes":"","sourceMap":""},"deployedBytecode":{"functionDebugData":{},"generatedSources":[],"immutableReferences":{},"linkReferences":{},"object":"","opcodes":"","sourceMap":""},"methodIdentifiers":{"supportsInterface(bytes4)":"01ffc9a7"}},"metadata":"{\"compiler\":{\"version\":\"0.8.30+commit.73712a01\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"inputs\":[{\"internalType\":\"bytes4\",\"name\":\"interfaceId\",\"type\":\"bytes4\"}],\"name\":\"supportsInterface\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"}],\"devdoc\":{\"details\":\"Interface of the ERC-165 standard, as defined in the https://eips.ethereum.org/EIPS/eip-165[ERC]. Implementers can declare support of contract interfaces, which can then be queried by others ({ERC165Checker}). For an implementation, see {ERC165}.\",\"kind\":\"dev\",\"methods\":{\"supportsInterface(bytes4)\":{\"details\":\"Returns true if this contract implements the interface defined by `interfaceId`. See the corresponding https://eips.ethereum.org/EIPS/eip-165#how-interfaces-are-identified[ERC section] to learn more about how these ids are created. This function call must use less than 30 000 gas.\"}},\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{},\"version\":1}},\"settings\":{\"compilationTarget\":{\"@openzeppelin/contracts/utils/introspection/IERC165.sol\":\"IERC165\"},\"evmVersion\":\"prague\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"enabled\":true,\"runs\":200},\"remappings\":[]},\"sources\":{\"@openzeppelin/contracts/utils/introspection/IERC165.sol\":{\"keccak256\":\"0x8891738ffe910f0cf2da09566928589bf5d63f4524dd734fd9cedbac3274dd5c\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://971f954442df5c2ef5b5ebf1eb245d7105d9fbacc7386ee5c796df1d45b21617\",\"dweb:/ipfs/QmadRjHbkicwqwwh61raUEapaVEtaLMcYbQZWs9gUkgj3u\"]}},\"version\":1}","storageLayout":{"storage":[],"types":null}}},"@openzeppelin/contracts/utils/math/Math.sol":{"Math":{"abi":[],"evm":{"bytecode":{"functionDebugData":{},"generatedSources":[],"linkReferences":{},"object":"60556032600b8282823980515f1a607314602657634e487b7160e01b5f525f60045260245ffd5b305f52607381538281f3fe730000000000000000000000000000000000000000301460806040525f5ffdfea2646970667358221220d603671a8850d836e0100ea6939de2b91d82a3097ea692a1d2348f2ba075be3864736f6c634300081e0033","opcodes":"PUSH1 0x55 PUSH1 0x32 PUSH1 0xB DUP3 DUP3 DUP3 CODECOPY DUP1 MLOAD PUSH0 BYTE PUSH1 0x73 EQ PUSH1 0x26 JUMPI PUSH4 0x4E487B71 PUSH1 0xE0 SHL PUSH0 MSTORE PUSH0 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH0 REVERT JUMPDEST ADDRESS PUSH0 MSTORE PUSH1 0x73 DUP2 MSTORE8 DUP3 DUP2 RETURN INVALID PUSH20 0x0 ADDRESS EQ PUSH1 0x80 PUSH1 0x40 MSTORE PUSH0 PUSH0 REVERT INVALID LOG2 PUSH5 0x6970667358 0x22 SLT KECCAK256 0xD6 SUB PUSH8 0x1A8850D836E0100E 0xA6 SWAP4 SWAP14 0xE2 0xB9 SAR DUP3 LOG3 MULMOD PUSH31 0xA692A1D2348F2BA075BE3864736F6C634300081E0033000000000000000000 ","sourceMap":"281:32081:47:-:0;;;;;;;;;;;;;;;-1:-1:-1;;;281:32081:47;;;;;;;;;;;;;;;;;"},"deployedBytecode":{"functionDebugData":{},"generatedSources":[],"immutableReferences":{},"linkReferences":{},"object":"730000000000000000000000000000000000000000301460806040525f5ffdfea2646970667358221220d603671a8850d836e0100ea6939de2b91d82a3097ea692a1d2348f2ba075be3864736f6c634300081e0033","opcodes":"PUSH20 0x0 ADDRESS EQ PUSH1 0x80 PUSH1 0x40 MSTORE PUSH0 PUSH0 REVERT INVALID LOG2 PUSH5 0x6970667358 0x22 SLT KECCAK256 0xD6 SUB PUSH8 0x1A8850D836E0100E 0xA6 SWAP4 SWAP14 0xE2 0xB9 SAR DUP3 LOG3 MULMOD PUSH31 0xA692A1D2348F2BA075BE3864736F6C634300081E0033000000000000000000 ","sourceMap":"281:32081:47:-:0;;;;;;;;"},"methodIdentifiers":{}},"metadata":"{\"compiler\":{\"version\":\"0.8.30+commit.73712a01\"},\"language\":\"Solidity\",\"output\":{\"abi\":[],\"devdoc\":{\"details\":\"Standard math utilities missing in the Solidity language.\",\"kind\":\"dev\",\"methods\":{},\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{},\"version\":1}},\"settings\":{\"compilationTarget\":{\"@openzeppelin/contracts/utils/math/Math.sol\":\"Math\"},\"evmVersion\":\"prague\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"enabled\":true,\"runs\":200},\"remappings\":[]},\"sources\":{\"@openzeppelin/contracts/utils/Panic.sol\":{\"keccak256\":\"0xf7fe324703a64fc51702311dc51562d5cb1497734f074e4f483bfb6717572d7a\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://c6a5ff4f9fd8649b7ee20800b7fa387d3465bd77cf20c2d1068cd5c98e1ed57a\",\"dweb:/ipfs/QmVSaVJf9FXFhdYEYeCEfjMVHrxDh5qL4CGkxdMWpQCrqG\"]},\"@openzeppelin/contracts/utils/math/Math.sol\":{\"keccak256\":\"0x09e3f1c72d4c5cbe8e2644ab7313f8f7177533ae2f4c24cdcbbeaf520a73734c\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://93208401215d539fa2d81626b207c1f611def7883d0e447b3b5969ebaa7b3c2c\",\"dweb:/ipfs/QmXPxDnQPx8LAweX5ZJqEcwkvs59kP4c64VVDG1Jjq1mef\"]},\"@openzeppelin/contracts/utils/math/SafeCast.sol\":{\"keccak256\":\"0x195533c86d0ef72bcc06456a4f66a9b941f38eb403739b00f21fd7c1abd1ae54\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://b1d578337048cad08c1c03041cca5978eff5428aa130c781b271ad9e5566e1f8\",\"dweb:/ipfs/QmPFKL2r9CBsMwmUqqdcFPfHZB2qcs9g1HDrPxzWSxomvy\"]}},\"version\":1}","storageLayout":{"storage":[],"types":null}}},"@openzeppelin/contracts/utils/math/SafeCast.sol":{"SafeCast":{"abi":[{"inputs":[{"internalType":"uint8","name":"bits","type":"uint8"},{"internalType":"int256","name":"value","type":"int256"}],"name":"SafeCastOverflowedIntDowncast","type":"error"},{"inputs":[{"internalType":"int256","name":"value","type":"int256"}],"name":"SafeCastOverflowedIntToUint","type":"error"},{"inputs":[{"internalType":"uint8","name":"bits","type":"uint8"},{"internalType":"uint256","name":"value","type":"uint256"}],"name":"SafeCastOverflowedUintDowncast","type":"error"},{"inputs":[{"internalType":"uint256","name":"value","type":"uint256"}],"name":"SafeCastOverflowedUintToInt","type":"error"}],"evm":{"bytecode":{"functionDebugData":{},"generatedSources":[],"linkReferences":{},"object":"60556032600b8282823980515f1a607314602657634e487b7160e01b5f525f60045260245ffd5b305f52607381538281f3fe730000000000000000000000000000000000000000301460806040525f5ffdfea2646970667358221220fa9d6728c7f1dba733ed459f5d1d52f48b15c4d0bc788df1878a8baa4b26db1a64736f6c634300081e0033","opcodes":"PUSH1 0x55 PUSH1 0x32 PUSH1 0xB DUP3 DUP3 DUP3 CODECOPY DUP1 MLOAD PUSH0 BYTE PUSH1 0x73 EQ PUSH1 0x26 JUMPI PUSH4 0x4E487B71 PUSH1 0xE0 SHL PUSH0 MSTORE PUSH0 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH0 REVERT JUMPDEST ADDRESS PUSH0 MSTORE PUSH1 0x73 DUP2 MSTORE8 DUP3 DUP2 RETURN INVALID PUSH20 0x0 ADDRESS EQ PUSH1 0x80 PUSH1 0x40 MSTORE PUSH0 PUSH0 REVERT INVALID LOG2 PUSH5 0x6970667358 0x22 SLT KECCAK256 STATICCALL SWAP14 PUSH8 0x28C7F1DBA733ED45 SWAP16 TSTORE SAR MSTORE DELEGATECALL DUP12 ISZERO 0xC4 0xD0 0xBC PUSH25 0x8DF1878A8BAA4B26DB1A64736F6C634300081E003300000000 ","sourceMap":"769:34173:48:-:0;;;;;;;;;;;;;;;-1:-1:-1;;;769:34173:48;;;;;;;;;;;;;;;;;"},"deployedBytecode":{"functionDebugData":{},"generatedSources":[],"immutableReferences":{},"linkReferences":{},"object":"730000000000000000000000000000000000000000301460806040525f5ffdfea2646970667358221220fa9d6728c7f1dba733ed459f5d1d52f48b15c4d0bc788df1878a8baa4b26db1a64736f6c634300081e0033","opcodes":"PUSH20 0x0 ADDRESS EQ PUSH1 0x80 PUSH1 0x40 MSTORE PUSH0 PUSH0 REVERT INVALID LOG2 PUSH5 0x6970667358 0x22 SLT KECCAK256 STATICCALL SWAP14 PUSH8 0x28C7F1DBA733ED45 SWAP16 TSTORE SAR MSTORE DELEGATECALL DUP12 ISZERO 0xC4 0xD0 0xBC PUSH25 0x8DF1878A8BAA4B26DB1A64736F6C634300081E003300000000 ","sourceMap":"769:34173:48:-:0;;;;;;;;"},"methodIdentifiers":{}},"metadata":"{\"compiler\":{\"version\":\"0.8.30+commit.73712a01\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"inputs\":[{\"internalType\":\"uint8\",\"name\":\"bits\",\"type\":\"uint8\"},{\"internalType\":\"int256\",\"name\":\"value\",\"type\":\"int256\"}],\"name\":\"SafeCastOverflowedIntDowncast\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"int256\",\"name\":\"value\",\"type\":\"int256\"}],\"name\":\"SafeCastOverflowedIntToUint\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"uint8\",\"name\":\"bits\",\"type\":\"uint8\"},{\"internalType\":\"uint256\",\"name\":\"value\",\"type\":\"uint256\"}],\"name\":\"SafeCastOverflowedUintDowncast\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"value\",\"type\":\"uint256\"}],\"name\":\"SafeCastOverflowedUintToInt\",\"type\":\"error\"}],\"devdoc\":{\"details\":\"Wrappers over Solidity's uintXX/intXX/bool casting operators with added overflow checks. Downcasting from uint256/int256 in Solidity does not revert on overflow. This can easily result in undesired exploitation or bugs, since developers usually assume that overflows raise errors. `SafeCast` restores this intuition by reverting the transaction when such an operation overflows. Using this library instead of the unchecked operations eliminates an entire class of bugs, so it's recommended to use it always.\",\"errors\":{\"SafeCastOverflowedIntDowncast(uint8,int256)\":[{\"details\":\"Value doesn't fit in an int of `bits` size.\"}],\"SafeCastOverflowedIntToUint(int256)\":[{\"details\":\"An int value doesn't fit in an uint of `bits` size.\"}],\"SafeCastOverflowedUintDowncast(uint8,uint256)\":[{\"details\":\"Value doesn't fit in an uint of `bits` size.\"}],\"SafeCastOverflowedUintToInt(uint256)\":[{\"details\":\"An uint value doesn't fit in an int of `bits` size.\"}]},\"kind\":\"dev\",\"methods\":{},\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{},\"version\":1}},\"settings\":{\"compilationTarget\":{\"@openzeppelin/contracts/utils/math/SafeCast.sol\":\"SafeCast\"},\"evmVersion\":\"prague\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"enabled\":true,\"runs\":200},\"remappings\":[]},\"sources\":{\"@openzeppelin/contracts/utils/math/SafeCast.sol\":{\"keccak256\":\"0x195533c86d0ef72bcc06456a4f66a9b941f38eb403739b00f21fd7c1abd1ae54\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://b1d578337048cad08c1c03041cca5978eff5428aa130c781b271ad9e5566e1f8\",\"dweb:/ipfs/QmPFKL2r9CBsMwmUqqdcFPfHZB2qcs9g1HDrPxzWSxomvy\"]}},\"version\":1}","storageLayout":{"storage":[],"types":null}}},"@openzeppelin/contracts/utils/types/Time.sol":{"Time":{"abi":[],"evm":{"bytecode":{"functionDebugData":{},"generatedSources":[],"linkReferences":{},"object":"60556032600b8282823980515f1a607314602657634e487b7160e01b5f525f60045260245ffd5b305f52607381538281f3fe730000000000000000000000000000000000000000301460806040525f5ffdfea26469706673582212204b9b3776ade6d5f34ab3b2c043b7a8c5acf4f4d42551803eec69aa9248daef1364736f6c634300081e0033","opcodes":"PUSH1 0x55 PUSH1 0x32 PUSH1 0xB DUP3 DUP3 DUP3 CODECOPY DUP1 MLOAD PUSH0 BYTE PUSH1 0x73 EQ PUSH1 0x26 JUMPI PUSH4 0x4E487B71 PUSH1 0xE0 SHL PUSH0 MSTORE PUSH0 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH0 REVERT JUMPDEST ADDRESS PUSH0 MSTORE PUSH1 0x73 DUP2 MSTORE8 DUP3 DUP2 RETURN INVALID PUSH20 0x0 ADDRESS EQ PUSH1 0x80 PUSH1 0x40 MSTORE PUSH0 PUSH0 REVERT INVALID LOG2 PUSH5 0x6970667358 0x22 SLT KECCAK256 0x4B SWAP12 CALLDATACOPY PUSH23 0xADE6D5F34AB3B2C043B7A8C5ACF4F4D42551803EEC69AA SWAP3 BASEFEE 0xDA 0xEF SGT PUSH5 0x736F6C6343 STOP ADDMOD 0x1E STOP CALLER ","sourceMap":"640:4514:49:-:0;;;;;;;;;;;;;;;-1:-1:-1;;;640:4514:49;;;;;;;;;;;;;;;;;"},"deployedBytecode":{"functionDebugData":{},"generatedSources":[],"immutableReferences":{},"linkReferences":{},"object":"730000000000000000000000000000000000000000301460806040525f5ffdfea26469706673582212204b9b3776ade6d5f34ab3b2c043b7a8c5acf4f4d42551803eec69aa9248daef1364736f6c634300081e0033","opcodes":"PUSH20 0x0 ADDRESS EQ PUSH1 0x80 PUSH1 0x40 MSTORE PUSH0 PUSH0 REVERT INVALID LOG2 PUSH5 0x6970667358 0x22 SLT KECCAK256 0x4B SWAP12 CALLDATACOPY PUSH23 0xADE6D5F34AB3B2C043B7A8C5ACF4F4D42551803EEC69AA SWAP3 BASEFEE 0xDA 0xEF SGT PUSH5 0x736F6C6343 STOP ADDMOD 0x1E STOP CALLER ","sourceMap":"640:4514:49:-:0;;;;;;;;"},"methodIdentifiers":{}},"metadata":"{\"compiler\":{\"version\":\"0.8.30+commit.73712a01\"},\"language\":\"Solidity\",\"output\":{\"abi\":[],\"devdoc\":{\"details\":\"This library provides helpers for manipulating time-related objects. It uses the following types: - `uint48` for timepoints - `uint32` for durations While the library doesn't provide specific types for timepoints and duration, it does provide: - a `Delay` type to represent duration that can be programmed to change value automatically at a given point - additional helper functions\",\"kind\":\"dev\",\"methods\":{},\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{},\"version\":1}},\"settings\":{\"compilationTarget\":{\"@openzeppelin/contracts/utils/types/Time.sol\":\"Time\"},\"evmVersion\":\"prague\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"enabled\":true,\"runs\":200},\"remappings\":[]},\"sources\":{\"@openzeppelin/contracts/utils/Panic.sol\":{\"keccak256\":\"0xf7fe324703a64fc51702311dc51562d5cb1497734f074e4f483bfb6717572d7a\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://c6a5ff4f9fd8649b7ee20800b7fa387d3465bd77cf20c2d1068cd5c98e1ed57a\",\"dweb:/ipfs/QmVSaVJf9FXFhdYEYeCEfjMVHrxDh5qL4CGkxdMWpQCrqG\"]},\"@openzeppelin/contracts/utils/math/Math.sol\":{\"keccak256\":\"0x09e3f1c72d4c5cbe8e2644ab7313f8f7177533ae2f4c24cdcbbeaf520a73734c\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://93208401215d539fa2d81626b207c1f611def7883d0e447b3b5969ebaa7b3c2c\",\"dweb:/ipfs/QmXPxDnQPx8LAweX5ZJqEcwkvs59kP4c64VVDG1Jjq1mef\"]},\"@openzeppelin/contracts/utils/math/SafeCast.sol\":{\"keccak256\":\"0x195533c86d0ef72bcc06456a4f66a9b941f38eb403739b00f21fd7c1abd1ae54\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://b1d578337048cad08c1c03041cca5978eff5428aa130c781b271ad9e5566e1f8\",\"dweb:/ipfs/QmPFKL2r9CBsMwmUqqdcFPfHZB2qcs9g1HDrPxzWSxomvy\"]},\"@openzeppelin/contracts/utils/types/Time.sol\":{\"keccak256\":\"0x3765cc1833212456000f02d5de0478c2055b5f318e27032537c6d47c91e68b05\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://3e77d9fd11b604fb3820ba6794f1e2516deb1093dada1c7225da6c46def95256\",\"dweb:/ipfs/QmcqQo9mmD5kekxFtJcvZTyCPaEgxQsSVfp7wLiE91fdAc\"]}},\"version\":1}","storageLayout":{"storage":[],"types":null}}},"@uniswap/v3-core/contracts/interfaces/callback/IUniswapV3SwapCallback.sol":{"IUniswapV3SwapCallback":{"abi":[{"inputs":[{"internalType":"int256","name":"amount0Delta","type":"int256"},{"internalType":"int256","name":"amount1Delta","type":"int256"},{"internalType":"bytes","name":"data","type":"bytes"}],"name":"uniswapV3SwapCallback","outputs":[],"stateMutability":"nonpayable","type":"function"}],"evm":{"bytecode":{"functionDebugData":{},"generatedSources":[],"linkReferences":{},"object":"","opcodes":"","sourceMap":""},"deployedBytecode":{"functionDebugData":{},"generatedSources":[],"immutableReferences":{},"linkReferences":{},"object":"","opcodes":"","sourceMap":""},"methodIdentifiers":{"uniswapV3SwapCallback(int256,int256,bytes)":"fa461e33"}},"metadata":"{\"compiler\":{\"version\":\"0.8.30+commit.73712a01\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"inputs\":[{\"internalType\":\"int256\",\"name\":\"amount0Delta\",\"type\":\"int256\"},{\"internalType\":\"int256\",\"name\":\"amount1Delta\",\"type\":\"int256\"},{\"internalType\":\"bytes\",\"name\":\"data\",\"type\":\"bytes\"}],\"name\":\"uniswapV3SwapCallback\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"}],\"devdoc\":{\"kind\":\"dev\",\"methods\":{\"uniswapV3SwapCallback(int256,int256,bytes)\":{\"details\":\"In the implementation you must pay the pool tokens owed for the swap. The caller of this method must be checked to be a UniswapV3Pool deployed by the canonical UniswapV3Factory. amount0Delta and amount1Delta can both be 0 if no tokens were swapped.\",\"params\":{\"amount0Delta\":\"The amount of token0 that was sent (negative) or must be received (positive) by the pool by the end of the swap. If positive, the callback must send that amount of token0 to the pool.\",\"amount1Delta\":\"The amount of token1 that was sent (negative) or must be received (positive) by the pool by the end of the swap. If positive, the callback must send that amount of token1 to the pool.\",\"data\":\"Any data passed through by the caller via the IUniswapV3PoolActions#swap call\"}}},\"title\":\"Callback for IUniswapV3PoolActions#swap\",\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{\"uniswapV3SwapCallback(int256,int256,bytes)\":{\"notice\":\"Called to `msg.sender` after executing a swap via IUniswapV3Pool#swap.\"}},\"notice\":\"Any contract that calls IUniswapV3PoolActions#swap must implement this interface\",\"version\":1}},\"settings\":{\"compilationTarget\":{\"@uniswap/v3-core/contracts/interfaces/callback/IUniswapV3SwapCallback.sol\":\"IUniswapV3SwapCallback\"},\"evmVersion\":\"prague\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"enabled\":true,\"runs\":200},\"remappings\":[]},\"sources\":{\"@uniswap/v3-core/contracts/interfaces/callback/IUniswapV3SwapCallback.sol\":{\"keccak256\":\"0x3f485fb1a44e8fbeadefb5da07d66edab3cfe809f0ac4074b1e54e3eb3c4cf69\",\"license\":\"GPL-2.0-or-later\",\"urls\":[\"bzz-raw://095ce0626b41318c772b3ebf19d548282607f6a8f3d6c41c13edfbd5370c8652\",\"dweb:/ipfs/QmVDZfJJ89UUCE1hMyzqpkZAtQ8jUsBgZNE5AMRG7RzRFS\"]}},\"version\":1}","storageLayout":{"storage":[],"types":null}}},"@uniswap/v3-periphery/contracts/interfaces/ISwapRouter.sol":{"ISwapRouter":{"abi":[{"inputs":[{"components":[{"internalType":"bytes","name":"path","type":"bytes"},{"internalType":"address","name":"recipient","type":"address"},{"internalType":"uint256","name":"deadline","type":"uint256"},{"internalType":"uint256","name":"amountIn","type":"uint256"},{"internalType":"uint256","name":"amountOutMinimum","type":"uint256"}],"internalType":"struct ISwapRouter.ExactInputParams","name":"params","type":"tuple"}],"name":"exactInput","outputs":[{"internalType":"uint256","name":"amountOut","type":"uint256"}],"stateMutability":"payable","type":"function"},{"inputs":[{"components":[{"internalType":"address","name":"tokenIn","type":"address"},{"internalType":"address","name":"tokenOut","type":"address"},{"internalType":"uint24","name":"fee","type":"uint24"},{"internalType":"address","name":"recipient","type":"address"},{"internalType":"uint256","name":"deadline","type":"uint256"},{"internalType":"uint256","name":"amountIn","type":"uint256"},{"internalType":"uint256","name":"amountOutMinimum","type":"uint256"},{"internalType":"uint160","name":"sqrtPriceLimitX96","type":"uint160"}],"internalType":"struct ISwapRouter.ExactInputSingleParams","name":"params","type":"tuple"}],"name":"exactInputSingle","outputs":[{"internalType":"uint256","name":"amountOut","type":"uint256"}],"stateMutability":"payable","type":"function"},{"inputs":[{"components":[{"internalType":"bytes","name":"path","type":"bytes"},{"internalType":"address","name":"recipient","type":"address"},{"internalType":"uint256","name":"deadline","type":"uint256"},{"internalType":"uint256","name":"amountOut","type":"uint256"},{"internalType":"uint256","name":"amountInMaximum","type":"uint256"}],"internalType":"struct ISwapRouter.ExactOutputParams","name":"params","type":"tuple"}],"name":"exactOutput","outputs":[{"internalType":"uint256","name":"amountIn","type":"uint256"}],"stateMutability":"payable","type":"function"},{"inputs":[{"components":[{"internalType":"address","name":"tokenIn","type":"address"},{"internalType":"address","name":"tokenOut","type":"address"},{"internalType":"uint24","name":"fee","type":"uint24"},{"internalType":"address","name":"recipient","type":"address"},{"internalType":"uint256","name":"deadline","type":"uint256"},{"internalType":"uint256","name":"amountOut","type":"uint256"},{"internalType":"uint256","name":"amountInMaximum","type":"uint256"},{"internalType":"uint160","name":"sqrtPriceLimitX96","type":"uint160"}],"internalType":"struct ISwapRouter.ExactOutputSingleParams","name":"params","type":"tuple"}],"name":"exactOutputSingle","outputs":[{"internalType":"uint256","name":"amountIn","type":"uint256"}],"stateMutability":"payable","type":"function"},{"inputs":[{"internalType":"int256","name":"amount0Delta","type":"int256"},{"internalType":"int256","name":"amount1Delta","type":"int256"},{"internalType":"bytes","name":"data","type":"bytes"}],"name":"uniswapV3SwapCallback","outputs":[],"stateMutability":"nonpayable","type":"function"}],"evm":{"bytecode":{"functionDebugData":{},"generatedSources":[],"linkReferences":{},"object":"","opcodes":"","sourceMap":""},"deployedBytecode":{"functionDebugData":{},"generatedSources":[],"immutableReferences":{},"linkReferences":{},"object":"","opcodes":"","sourceMap":""},"methodIdentifiers":{"exactInput((bytes,address,uint256,uint256,uint256))":"c04b8d59","exactInputSingle((address,address,uint24,address,uint256,uint256,uint256,uint160))":"414bf389","exactOutput((bytes,address,uint256,uint256,uint256))":"f28c0498","exactOutputSingle((address,address,uint24,address,uint256,uint256,uint256,uint160))":"db3e2198","uniswapV3SwapCallback(int256,int256,bytes)":"fa461e33"}},"metadata":"{\"compiler\":{\"version\":\"0.8.30+commit.73712a01\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"inputs\":[{\"components\":[{\"internalType\":\"bytes\",\"name\":\"path\",\"type\":\"bytes\"},{\"internalType\":\"address\",\"name\":\"recipient\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"deadline\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"amountIn\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"amountOutMinimum\",\"type\":\"uint256\"}],\"internalType\":\"struct ISwapRouter.ExactInputParams\",\"name\":\"params\",\"type\":\"tuple\"}],\"name\":\"exactInput\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"amountOut\",\"type\":\"uint256\"}],\"stateMutability\":\"payable\",\"type\":\"function\"},{\"inputs\":[{\"components\":[{\"internalType\":\"address\",\"name\":\"tokenIn\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"tokenOut\",\"type\":\"address\"},{\"internalType\":\"uint24\",\"name\":\"fee\",\"type\":\"uint24\"},{\"internalType\":\"address\",\"name\":\"recipient\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"deadline\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"amountIn\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"amountOutMinimum\",\"type\":\"uint256\"},{\"internalType\":\"uint160\",\"name\":\"sqrtPriceLimitX96\",\"type\":\"uint160\"}],\"internalType\":\"struct ISwapRouter.ExactInputSingleParams\",\"name\":\"params\",\"type\":\"tuple\"}],\"name\":\"exactInputSingle\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"amountOut\",\"type\":\"uint256\"}],\"stateMutability\":\"payable\",\"type\":\"function\"},{\"inputs\":[{\"components\":[{\"internalType\":\"bytes\",\"name\":\"path\",\"type\":\"bytes\"},{\"internalType\":\"address\",\"name\":\"recipient\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"deadline\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"amountOut\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"amountInMaximum\",\"type\":\"uint256\"}],\"internalType\":\"struct ISwapRouter.ExactOutputParams\",\"name\":\"params\",\"type\":\"tuple\"}],\"name\":\"exactOutput\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"amountIn\",\"type\":\"uint256\"}],\"stateMutability\":\"payable\",\"type\":\"function\"},{\"inputs\":[{\"components\":[{\"internalType\":\"address\",\"name\":\"tokenIn\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"tokenOut\",\"type\":\"address\"},{\"internalType\":\"uint24\",\"name\":\"fee\",\"type\":\"uint24\"},{\"internalType\":\"address\",\"name\":\"recipient\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"deadline\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"amountOut\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"amountInMaximum\",\"type\":\"uint256\"},{\"internalType\":\"uint160\",\"name\":\"sqrtPriceLimitX96\",\"type\":\"uint160\"}],\"internalType\":\"struct ISwapRouter.ExactOutputSingleParams\",\"name\":\"params\",\"type\":\"tuple\"}],\"name\":\"exactOutputSingle\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"amountIn\",\"type\":\"uint256\"}],\"stateMutability\":\"payable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"int256\",\"name\":\"amount0Delta\",\"type\":\"int256\"},{\"internalType\":\"int256\",\"name\":\"amount1Delta\",\"type\":\"int256\"},{\"internalType\":\"bytes\",\"name\":\"data\",\"type\":\"bytes\"}],\"name\":\"uniswapV3SwapCallback\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"}],\"devdoc\":{\"kind\":\"dev\",\"methods\":{\"exactInput((bytes,address,uint256,uint256,uint256))\":{\"params\":{\"params\":\"The parameters necessary for the multi-hop swap, encoded as `ExactInputParams` in calldata\"},\"returns\":{\"amountOut\":\"The amount of the received token\"}},\"exactInputSingle((address,address,uint24,address,uint256,uint256,uint256,uint160))\":{\"params\":{\"params\":\"The parameters necessary for the swap, encoded as `ExactInputSingleParams` in calldata\"},\"returns\":{\"amountOut\":\"The amount of the received token\"}},\"exactOutput((bytes,address,uint256,uint256,uint256))\":{\"params\":{\"params\":\"The parameters necessary for the multi-hop swap, encoded as `ExactOutputParams` in calldata\"},\"returns\":{\"amountIn\":\"The amount of the input token\"}},\"exactOutputSingle((address,address,uint24,address,uint256,uint256,uint256,uint160))\":{\"params\":{\"params\":\"The parameters necessary for the swap, encoded as `ExactOutputSingleParams` in calldata\"},\"returns\":{\"amountIn\":\"The amount of the input token\"}},\"uniswapV3SwapCallback(int256,int256,bytes)\":{\"details\":\"In the implementation you must pay the pool tokens owed for the swap. The caller of this method must be checked to be a UniswapV3Pool deployed by the canonical UniswapV3Factory. amount0Delta and amount1Delta can both be 0 if no tokens were swapped.\",\"params\":{\"amount0Delta\":\"The amount of token0 that was sent (negative) or must be received (positive) by the pool by the end of the swap. If positive, the callback must send that amount of token0 to the pool.\",\"amount1Delta\":\"The amount of token1 that was sent (negative) or must be received (positive) by the pool by the end of the swap. If positive, the callback must send that amount of token1 to the pool.\",\"data\":\"Any data passed through by the caller via the IUniswapV3PoolActions#swap call\"}}},\"title\":\"Router token swapping functionality\",\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{\"exactInput((bytes,address,uint256,uint256,uint256))\":{\"notice\":\"Swaps `amountIn` of one token for as much as possible of another along the specified path\"},\"exactInputSingle((address,address,uint24,address,uint256,uint256,uint256,uint160))\":{\"notice\":\"Swaps `amountIn` of one token for as much as possible of another token\"},\"exactOutput((bytes,address,uint256,uint256,uint256))\":{\"notice\":\"Swaps as little as possible of one token for `amountOut` of another along the specified path (reversed)\"},\"exactOutputSingle((address,address,uint24,address,uint256,uint256,uint256,uint160))\":{\"notice\":\"Swaps as little as possible of one token for `amountOut` of another token\"},\"uniswapV3SwapCallback(int256,int256,bytes)\":{\"notice\":\"Called to `msg.sender` after executing a swap via IUniswapV3Pool#swap.\"}},\"notice\":\"Functions for swapping tokens via Uniswap V3\",\"version\":1}},\"settings\":{\"compilationTarget\":{\"@uniswap/v3-periphery/contracts/interfaces/ISwapRouter.sol\":\"ISwapRouter\"},\"evmVersion\":\"prague\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"enabled\":true,\"runs\":200},\"remappings\":[]},\"sources\":{\"@uniswap/v3-core/contracts/interfaces/callback/IUniswapV3SwapCallback.sol\":{\"keccak256\":\"0x3f485fb1a44e8fbeadefb5da07d66edab3cfe809f0ac4074b1e54e3eb3c4cf69\",\"license\":\"GPL-2.0-or-later\",\"urls\":[\"bzz-raw://095ce0626b41318c772b3ebf19d548282607f6a8f3d6c41c13edfbd5370c8652\",\"dweb:/ipfs/QmVDZfJJ89UUCE1hMyzqpkZAtQ8jUsBgZNE5AMRG7RzRFS\"]},\"@uniswap/v3-periphery/contracts/interfaces/ISwapRouter.sol\":{\"keccak256\":\"0x9bfaf1feb32814623e627ab70f2409760b15d95f1f9b058e2b3399a8bb732975\",\"license\":\"GPL-2.0-or-later\",\"urls\":[\"bzz-raw://a8a2c3e55965b61bcd91993d8e1d5d34b8b8a63e0fdfce87a85f6af92526fd53\",\"dweb:/ipfs/QmQj2CSCSwqDSU4KMNWxGsN2336Cy64WgpV1X1EHXNZWxM\"]}},\"version\":1}","storageLayout":{"storage":[],"types":null}}},"contracts/AccessManagedMSV.sol":{"AccessManagedMSV":{"abi":[{"inputs":[],"stateMutability":"nonpayable","type":"constructor"},{"inputs":[{"internalType":"address","name":"caller","type":"address"}],"name":"AccessManagedUnauthorized","type":"error"},{"inputs":[{"internalType":"address","name":"target","type":"address"}],"name":"AddressEmptyCode","type":"error"},{"inputs":[],"name":"CannotRemoveStrategyWithAssets","type":"error"},{"inputs":[],"name":"DepositError","type":"error"},{"inputs":[{"internalType":"contract IInvestStrategy","name":"strategy","type":"address"}],"name":"DuplicatedStrategy","type":"error"},{"inputs":[{"internalType":"address","name":"implementation","type":"address"}],"name":"ERC1967InvalidImplementation","type":"error"},{"inputs":[],"name":"ERC1967NonPayable","type":"error"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"allowance","type":"uint256"},{"internalType":"uint256","name":"needed","type":"uint256"}],"name":"ERC20InsufficientAllowance","type":"error"},{"inputs":[{"internalType":"address","name":"sender","type":"address"},{"internalType":"uint256","name":"balance","type":"uint256"},{"internalType":"uint256","name":"needed","type":"uint256"}],"name":"ERC20InsufficientBalance","type":"error"},{"inputs":[{"internalType":"address","name":"approver","type":"address"}],"name":"ERC20InvalidApprover","type":"error"},{"inputs":[{"internalType":"address","name":"receiver","type":"address"}],"name":"ERC20InvalidReceiver","type":"error"},{"inputs":[{"internalType":"address","name":"sender","type":"address"}],"name":"ERC20InvalidSender","type":"error"},{"inputs":[{"internalType":"address","name":"spender","type":"address"}],"name":"ERC20InvalidSpender","type":"error"},{"inputs":[{"internalType":"address","name":"receiver","type":"address"},{"internalType":"uint256","name":"assets","type":"uint256"},{"internalType":"uint256","name":"max","type":"uint256"}],"name":"ERC4626ExceededMaxDeposit","type":"error"},{"inputs":[{"internalType":"address","name":"receiver","type":"address"},{"internalType":"uint256","name":"shares","type":"uint256"},{"internalType":"uint256","name":"max","type":"uint256"}],"name":"ERC4626ExceededMaxMint","type":"error"},{"inputs":[{"internalType":"address","name":"owner","type":"address"},{"internalType":"uint256","name":"shares","type":"uint256"},{"internalType":"uint256","name":"max","type":"uint256"}],"name":"ERC4626ExceededMaxRedeem","type":"error"},{"inputs":[{"internalType":"address","name":"owner","type":"address"},{"internalType":"uint256","name":"assets","type":"uint256"},{"internalType":"uint256","name":"max","type":"uint256"}],"name":"ERC4626ExceededMaxWithdraw","type":"error"},{"inputs":[],"name":"FailedCall","type":"error"},{"inputs":[],"name":"InvalidInitialization","type":"error"},{"inputs":[],"name":"InvalidQueue","type":"error"},{"inputs":[{"internalType":"uint8","name":"index","type":"uint8"}],"name":"InvalidQueueIndexDuplicated","type":"error"},{"inputs":[],"name":"InvalidQueueLength","type":"error"},{"inputs":[],"name":"InvalidStrategiesLength","type":"error"},{"inputs":[],"name":"InvalidStrategy","type":"error"},{"inputs":[],"name":"InvalidStrategyAsset","type":"error"},{"inputs":[{"internalType":"uint8","name":"index","type":"uint8"}],"name":"InvalidStrategyInDepositQueue","type":"error"},{"inputs":[{"internalType":"uint8","name":"index","type":"uint8"}],"name":"InvalidStrategyInWithdrawQueue","type":"error"},{"inputs":[],"name":"NotInitializing","type":"error"},{"inputs":[],"name":"OnlyStrategyStorageExposed","type":"error"},{"inputs":[{"internalType":"uint256","name":"max","type":"uint256"}],"name":"RebalanceAmountExceedsMaxDeposit","type":"error"},{"inputs":[{"internalType":"uint256","name":"max","type":"uint256"}],"name":"RebalanceAmountExceedsMaxWithdraw","type":"error"},{"inputs":[{"internalType":"address","name":"token","type":"address"}],"name":"SafeERC20FailedOperation","type":"error"},{"inputs":[],"name":"UUPSUnauthorizedCallContext","type":"error"},{"inputs":[{"internalType":"bytes32","name":"slot","type":"bytes32"}],"name":"UUPSUnsupportedProxiableUUID","type":"error"},{"inputs":[],"name":"WithdrawError","type":"error"},{"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":"sender","type":"address"},{"indexed":true,"internalType":"address","name":"owner","type":"address"},{"indexed":false,"internalType":"uint256","name":"assets","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"shares","type":"uint256"}],"name":"Deposit","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"bytes","name":"reason","type":"bytes"}],"name":"DepositFailed","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"bytes","name":"reason","type":"bytes"}],"name":"DepositFailed","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint8[]","name":"queue","type":"uint8[]"}],"name":"DepositQueueChanged","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"bytes","name":"reason","type":"bytes"}],"name":"DisconnectFailed","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"bytes","name":"reason","type":"bytes"}],"name":"DisconnectFailed","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint64","name":"version","type":"uint64"}],"name":"Initialized","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"contract IInvestStrategy","name":"strategyFrom","type":"address"},{"indexed":true,"internalType":"contract IInvestStrategy","name":"strategyTo","type":"address"},{"indexed":false,"internalType":"uint256","name":"amount","type":"uint256"}],"name":"Rebalance","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"contract IInvestStrategy","name":"strategy","type":"address"},{"indexed":false,"internalType":"uint8","name":"index","type":"uint8"}],"name":"StrategyAdded","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"contract IInvestStrategy","name":"oldStrategy","type":"address"},{"indexed":false,"internalType":"contract IInvestStrategy","name":"newStrategy","type":"address"}],"name":"StrategyChanged","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"contract IInvestStrategy","name":"oldStrategy","type":"address"},{"indexed":false,"internalType":"contract IInvestStrategy","name":"newStrategy","type":"address"}],"name":"StrategyChanged","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"contract IInvestStrategy","name":"strategy","type":"address"},{"indexed":false,"internalType":"uint8","name":"index","type":"uint8"}],"name":"StrategyRemoved","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":"implementation","type":"address"}],"name":"Upgraded","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"sender","type":"address"},{"indexed":true,"internalType":"address","name":"receiver","type":"address"},{"indexed":true,"internalType":"address","name":"owner","type":"address"},{"indexed":false,"internalType":"uint256","name":"assets","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"shares","type":"uint256"}],"name":"Withdraw","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"bytes","name":"reason","type":"bytes"}],"name":"WithdrawFailed","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"bytes","name":"reason","type":"bytes"}],"name":"WithdrawFailed","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint8[]","name":"queue","type":"uint8[]"}],"name":"WithdrawQueueChanged","type":"event"},{"inputs":[],"name":"MAX_STRATEGIES","outputs":[{"internalType":"uint8","name":"","type":"uint8"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"UPGRADE_INTERFACE_VERSION","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"contract IInvestStrategy","name":"newStrategy","type":"address"},{"internalType":"bytes","name":"initStrategyData","type":"bytes"}],"name":"addStrategy","outputs":[],"stateMutability":"nonpayable","type":"function"},{"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":"value","type":"uint256"}],"name":"approve","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"asset","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"balanceOf","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint8[]","name":"newDepositQueue_","type":"uint8[]"}],"name":"changeDepositQueue","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint8[]","name":"newWithdrawQueue_","type":"uint8[]"}],"name":"changeWithdrawQueue","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"shares","type":"uint256"}],"name":"convertToAssets","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"assets","type":"uint256"}],"name":"convertToShares","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":"assets","type":"uint256"},{"internalType":"address","name":"receiver","type":"address"}],"name":"deposit","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"depositQueue","outputs":[{"internalType":"uint8[32]","name":"","type":"uint8[32]"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"assets","type":"uint256"}],"name":"depositToStrategies","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint8","name":"strategyIndex","type":"uint8"},{"internalType":"uint8","name":"method","type":"uint8"},{"internalType":"bytes","name":"extraData","type":"bytes"}],"name":"forwardToStrategy","outputs":[{"internalType":"bytes","name":"","type":"bytes"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bytes32","name":"slot","type":"bytes32"}],"name":"getBytesSlot","outputs":[{"internalType":"bytes","name":"","type":"bytes"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint8","name":"strategyIndex","type":"uint8"},{"internalType":"uint8","name":"method","type":"uint8"}],"name":"getForwardToStrategySelector","outputs":[{"internalType":"bytes4","name":"selector","type":"bytes4"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"string","name":"name_","type":"string"},{"internalType":"string","name":"symbol_","type":"string"},{"internalType":"contract IERC20","name":"asset_","type":"address"},{"internalType":"contract IInvestStrategy[]","name":"strategies_","type":"address[]"},{"internalType":"bytes[]","name":"initStrategyDatas","type":"bytes[]"},{"internalType":"uint8[]","name":"depositQueue_","type":"uint8[]"},{"internalType":"uint8[]","name":"withdrawQueue_","type":"uint8[]"}],"name":"initialize","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"maxDeposit","outputs":[{"internalType":"uint256","name":"ret","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"maxMint","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"owner","type":"address"}],"name":"maxRedeem","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"owner","type":"address"}],"name":"maxWithdraw","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"shares","type":"uint256"},{"internalType":"address","name":"receiver","type":"address"}],"name":"mint","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"name","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"assets","type":"uint256"}],"name":"previewDeposit","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"shares","type":"uint256"}],"name":"previewMint","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"shares","type":"uint256"}],"name":"previewRedeem","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"assets","type":"uint256"}],"name":"previewWithdraw","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"proxiableUUID","outputs":[{"internalType":"bytes32","name":"","type":"bytes32"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint8","name":"strategyFromIdx","type":"uint8"},{"internalType":"uint8","name":"strategyToIdx","type":"uint8"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"rebalance","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"shares","type":"uint256"},{"internalType":"address","name":"receiver","type":"address"},{"internalType":"address","name":"owner","type":"address"}],"name":"redeem","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint8","name":"strategyIndex","type":"uint8"},{"internalType":"bool","name":"force","type":"bool"}],"name":"removeStrategy","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint8","name":"strategyIndex","type":"uint8"},{"internalType":"contract IInvestStrategy","name":"newStrategy","type":"address"},{"internalType":"bytes","name":"initStrategyData","type":"bytes"},{"internalType":"bool","name":"force","type":"bool"}],"name":"replaceStrategy","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"strategies","outputs":[{"internalType":"contract IInvestStrategy[32]","name":"","type":"address[32]"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"symbol","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"totalAssets","outputs":[{"internalType":"uint256","name":"assets","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"totalSupply","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"to","type":"address"},{"internalType":"uint256","name":"value","type":"uint256"}],"name":"transfer","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"from","type":"address"},{"internalType":"address","name":"to","type":"address"},{"internalType":"uint256","name":"value","type":"uint256"}],"name":"transferFrom","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"newImplementation","type":"address"},{"internalType":"bytes","name":"data","type":"bytes"}],"name":"upgradeToAndCall","outputs":[],"stateMutability":"payable","type":"function"},{"inputs":[{"internalType":"uint256","name":"assets","type":"uint256"},{"internalType":"address","name":"receiver","type":"address"},{"internalType":"address","name":"owner","type":"address"}],"name":"withdraw","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"withdrawQueue","outputs":[{"internalType":"uint8[32]","name":"","type":"uint8[32]"}],"stateMutability":"view","type":"function"}],"evm":{"bytecode":{"functionDebugData":{"@_14916":{"entryPoint":null,"id":14916,"parameterSlots":0,"returnSlots":0},"@_disableInitializers_7874":{"entryPoint":33,"id":7874,"parameterSlots":0,"returnSlots":0},"@_getInitializableStorage_7919":{"entryPoint":null,"id":7919,"parameterSlots":0,"returnSlots":1},"@_initializableStorageSlot_7905":{"entryPoint":null,"id":7905,"parameterSlots":0,"returnSlots":1},"abi_encode_tuple_t_uint64__to_t_uint64__fromStack_reversed":{"entryPoint":null,"id":null,"parameterSlots":2,"returnSlots":1}},"generatedSources":[{"ast":{"nativeSrc":"0:216:87","nodeType":"YulBlock","src":"0:216:87","statements":[{"nativeSrc":"6:3:87","nodeType":"YulBlock","src":"6:3:87","statements":[]},{"body":{"nativeSrc":"113:101:87","nodeType":"YulBlock","src":"113:101:87","statements":[{"nativeSrc":"123:26:87","nodeType":"YulAssignment","src":"123:26:87","value":{"arguments":[{"name":"headStart","nativeSrc":"135:9:87","nodeType":"YulIdentifier","src":"135:9:87"},{"kind":"number","nativeSrc":"146:2:87","nodeType":"YulLiteral","src":"146:2:87","type":"","value":"32"}],"functionName":{"name":"add","nativeSrc":"131:3:87","nodeType":"YulIdentifier","src":"131:3:87"},"nativeSrc":"131:18:87","nodeType":"YulFunctionCall","src":"131:18:87"},"variableNames":[{"name":"tail","nativeSrc":"123:4:87","nodeType":"YulIdentifier","src":"123:4:87"}]},{"expression":{"arguments":[{"name":"headStart","nativeSrc":"165:9:87","nodeType":"YulIdentifier","src":"165:9:87"},{"arguments":[{"name":"value0","nativeSrc":"180:6:87","nodeType":"YulIdentifier","src":"180:6:87"},{"arguments":[{"arguments":[{"kind":"number","nativeSrc":"196:2:87","nodeType":"YulLiteral","src":"196:2:87","type":"","value":"64"},{"kind":"number","nativeSrc":"200:1:87","nodeType":"YulLiteral","src":"200:1:87","type":"","value":"1"}],"functionName":{"name":"shl","nativeSrc":"192:3:87","nodeType":"YulIdentifier","src":"192:3:87"},"nativeSrc":"192:10:87","nodeType":"YulFunctionCall","src":"192:10:87"},{"kind":"number","nativeSrc":"204:1:87","nodeType":"YulLiteral","src":"204:1:87","type":"","value":"1"}],"functionName":{"name":"sub","nativeSrc":"188:3:87","nodeType":"YulIdentifier","src":"188:3:87"},"nativeSrc":"188:18:87","nodeType":"YulFunctionCall","src":"188:18:87"}],"functionName":{"name":"and","nativeSrc":"176:3:87","nodeType":"YulIdentifier","src":"176:3:87"},"nativeSrc":"176:31:87","nodeType":"YulFunctionCall","src":"176:31:87"}],"functionName":{"name":"mstore","nativeSrc":"158:6:87","nodeType":"YulIdentifier","src":"158:6:87"},"nativeSrc":"158:50:87","nodeType":"YulFunctionCall","src":"158:50:87"},"nativeSrc":"158:50:87","nodeType":"YulExpressionStatement","src":"158:50:87"}]},"name":"abi_encode_tuple_t_uint64__to_t_uint64__fromStack_reversed","nativeSrc":"14:200:87","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nativeSrc":"82:9:87","nodeType":"YulTypedName","src":"82:9:87","type":""},{"name":"value0","nativeSrc":"93:6:87","nodeType":"YulTypedName","src":"93:6:87","type":""}],"returnVariables":[{"name":"tail","nativeSrc":"104:4:87","nodeType":"YulTypedName","src":"104:4:87","type":""}],"src":"14:200:87"}]},"contents":"{\n    { }\n    function abi_encode_tuple_t_uint64__to_t_uint64__fromStack_reversed(headStart, value0) -> tail\n    {\n        tail := add(headStart, 32)\n        mstore(headStart, and(value0, sub(shl(64, 1), 1)))\n    }\n}","id":87,"language":"Yul","name":"#utility.yul"}],"linkReferences":{},"object":"60a060405230608052348015610013575f5ffd5b5061001c610021565b6100d3565b7ff0c57e16840df040f15088dc2f81fe391c3923bec73e23a9662efc9c229c6a00805468010000000000000000900460ff16156100715760405163f92ee8a960e01b815260040160405180910390fd5b80546001600160401b03908116146100d05780546001600160401b0319166001600160401b0390811782556040519081527fc7f505b2f371ae2175ee4913f4499e1f2633a7b5936321eed1cdaeb6115181d29060200160405180910390a15b50565b608051614aa36100f95f395f81816125360152818161255f01526126980152614aa35ff3fe608060405260043610610254575f3560e01c80637aeedf2a1161013f578063ba087652116100b3578063d905777e11610078578063d905777e146106f7578063d9f9027f14610716578063dd62ed3e14610737578063e682324d14610756578063ef8b30f7146106b9578063f617eecc14610775575f5ffd5b8063ba0876521461065c578063bd577eb61461067b578063c63d75b61461069a578063c6e6f592146106b9578063ce96cb77146106d8575f5ffd5b806396da35da1161010457806396da35da14610591578063a7ded2ea146105b0578063a9059cbb146105cf578063ad3cb1cc146105ee578063b3d7f6b91461061e578063b460af941461063d575f5ffd5b80637aeedf2a146104e85780638cdf48a814610507578063914abf4f1461053f57806394bf804d1461055e57806395d89b411461057d575f5ffd5b8063402d267d116101d657806351a2d6d11161019b57806351a2d6d11461044257806352d1902d146104635780636e553f651461047757806370a0823114610496578063767f06ae146104b55780637ac445a7146104c9575f5ffd5b8063402d267d146103d05780634614b896146103ef57806347e57533146104105780634cdad506146102a05780634f1ef2861461042f575f5ffd5b806318160ddd1161021c57806318160ddd1461030d57806323b872dd14610340578063313ce5671461035f57806338d52e0f146103855780633aaf9048146103b1575f5ffd5b806301e1d1141461025857806306fdde031461027f57806307a2d13a146102a0578063095ea7b3146102bf5780630a28a477146102ee575b5f5ffd5b348015610263575f5ffd5b5061026c610789565b6040519081526020015b60405180910390f35b34801561028a575f5ffd5b50610293610797565b6040516102769190613f09565b3480156102ab575f5ffd5b5061026c6102ba366004613f1b565b610857565b3480156102ca575f5ffd5b506102de6102d9366004613f46565b610868565b6040519015158152602001610276565b3480156102f9575f5ffd5b5061026c610308366004613f1b565b61087f565b348015610318575f5ffd5b507f52c63247e1f47db19d5ce0460030c497f067ca4cebf71ba98eeadabe20bace025461026c565b34801561034b575f5ffd5b506102de61035a366004613f70565b61088b565b34801561036a575f5ffd5b506103736108b0565b60405160ff9091168152602001610276565b348015610390575f5ffd5b506103996108f2565b6040516001600160a01b039091168152602001610276565b3480156103bc575f5ffd5b506102936103cb366004614078565b610920565b3480156103db575f5ffd5b5061026c6103ea3660046140d1565b6109a5565b3480156103fa575f5ffd5b5061040e610409366004613f1b565b6109ae565b005b34801561041b575f5ffd5b5061029361042a366004613f1b565b6109ba565b61040e61043d3660046140ec565b610b3a565b34801561044d575f5ffd5b50610456610b50565b6040516102769190614138565b34801561046e575f5ffd5b5061026c610ba8565b348015610482575f5ffd5b5061026c61049136600461416c565b610bc3565b3480156104a1575f5ffd5b5061026c6104b03660046140d1565b610c20565b3480156104c0575f5ffd5b50610373602081565b3480156104d4575f5ffd5b5061040e6104e33660046141a7565b610c46565b3480156104f3575f5ffd5b5061040e6105023660046140ec565b610d7f565b348015610512575f5ffd5b50610526610521366004614215565b610f84565b6040516001600160e01b03199091168152602001610276565b34801561054a575f5ffd5b5061040e6105593660046142d9565b610fe2565b348015610569575f5ffd5b5061026c61057836600461416c565b611241565b348015610588575f5ffd5b5061029361128d565b34801561059c575f5ffd5b5061040e6105ab36600461430a565b6112cb565b3480156105bb575f5ffd5b5061040e6105ca366004614421565b6118e2565b3480156105da575f5ffd5b506102de6105e9366004613f46565b6119e5565b3480156105f9575f5ffd5b50610293604051806040016040528060058152602001640352e302e360dc1b81525081565b348015610629575f5ffd5b5061026c610638366004613f1b565b6119f2565b348015610648575f5ffd5b5061026c610657366004614538565b6119fe565b348015610667575f5ffd5b5061026c610676366004614538565b611a4b565b348015610686575f5ffd5b5061040e6106953660046142d9565b611a98565b3480156106a5575f5ffd5b5061026c6106b43660046140d1565b611ce4565b3480156106c4575f5ffd5b5061026c6106d3366004613f1b565b611d10565b3480156106e3575f5ffd5b5061026c6106f23660046140d1565b611d1b565b348015610702575f5ffd5b5061026c6107113660046140d1565b611d31565b348015610721575f5ffd5b5061072a611d76565b6040516102769190614577565b348015610742575f5ffd5b5061026c6107513660046145a8565b611dbc565b348015610761575f5ffd5b5061026c6107703660046145d4565b611e05565b348015610780575f5ffd5b50610456611ff5565b5f610792612030565b905090565b7f52c63247e1f47db19d5ce0460030c497f067ca4cebf71ba98eeadabe20bace0380546060915f516020614a2e5f395f51905f52916107d5906145fd565b80601f0160208091040260200160405190810160405280929190818152602001828054610801906145fd565b801561084c5780601f106108235761010080835404028352916020019161084c565b820191905f5260205f20905b81548152906001019060200180831161082f57829003601f168201915b505050505091505090565b5f610862825f6120ab565b92915050565b5f33610875818585612102565b5060019392505050565b5f610862826001612114565b5f33610898858285612162565b6108a38585856121b3565b60019150505b9392505050565b5f807f0773e532dfede91f04b12a73d3d2acd361424f41f76b4fb79f090161e36b4e0090505f81546108ec9190600160a01b900460ff16614649565b91505090565b7f0773e532dfede91f04b12a73d3d2acd361424f41f76b4fb79f090161e36b4e00546001600160a01b031690565b606061092d848484612210565b5f60028560ff166020811061094457610944614662565b01546001600160a01b031690508061096f57604051632711b74d60e11b815260040160405180910390fd5b61099c848460028860ff166020811061098a5761098a614662565b01546001600160a01b0316919061232e565b95945050505050565b5f610862612380565b6109b781612414565b50565b60605f5b5f600282602081106109d2576109d2614662565b01546001600160a01b0316148015906109eb5750602081105b15610b205760028160208110610a0357610a03614662565b015f9054906101000a90046001600160a01b03166001600160a01b0316635b9a4c356040518163ffffffff1660e01b8152600401602060405180830381865afa158015610a52573d5f5f3e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610a769190614676565b8303610b1057825483908190610a8b906145fd565b80601f0160208091040260200160405190810160405280929190818152602001828054610ab7906145fd565b8015610b025780601f10610ad957610100808354040283529160200191610b02565b820191905f5260205f20905b815481529060010190602001808311610ae557829003601f168201915b505050505092505050919050565b610b198161468d565b90506109be565b5060405163213109dd60e11b815260040160405180910390fd5b610b4261252b565b610b4c82826125d1565b5050565b610b58613ebc565b6040805161040081019182905290600190602090825f855b825461010083900a900460ff16815260206001928301818104948501949093039092029101808411610b705790505050505050905090565b5f610bb161268d565b505f516020614a4e5f395f51905f5290565b5f5f610bce836109a5565b905080841115610c0057828482604051633c8097d960e11b8152600401610bf7939291906146a5565b60405180910390fd5b5f610c0a85611d10565b9050610c18338587846126d6565b949350505050565b6001600160a01b03165f9081525f516020614a2e5f395f51905f52602052604090205490565b5f60028560ff1660208110610c5d57610c5d614662565b01546001600160a01b0316905080610c8857604051632711b74d60e11b815260040160405180910390fd5b5f5b602081108015610cb757505f60028260208110610ca957610ca9614662565b01546001600160a01b031614155b15610d2d57846001600160a01b031660028260208110610cd957610cd9614662565b01546001600160a01b0316148015610cf457508560ff168114155b15610d1d5760405163b5a9314f60e01b81526001600160a01b0386166004820152602401610bf7565b610d268161468d565b9050610c8a565b50610d42818585610d3c6126eb565b866126f4565b8360028660ff1660208110610d5957610d59614662565b0180546001600160a01b0319166001600160a01b03929092169190911790555050505050565b6001600160a01b038216610da657604051632711b74d60e11b815260040160405180910390fd5b5f5b602081108015610dd557505f60028260208110610dc757610dc7614662565b01546001600160a01b031614155b15610e3b57826001600160a01b031660028260208110610df757610df7614662565b01546001600160a01b031603610e2b5760405163b5a9314f60e01b81526001600160a01b0384166004820152602401610bf7565b610e348161468d565b9050610da8565b601f198101610e6057604051600162ad1fab60e01b0319815260040160405180910390fd5b8260028260208110610e7457610e74614662565b0180546001600160a01b0319166001600160a01b0392909216919091179055610e9e8160016146c6565b5f8260208110610eb057610eb0614662565b602091828204019190066101000a81548160ff021916908360ff160217905550806001610edd91906146c6565b60018260208110610ef057610ef0614662565b602091828204019190066101000a81548160ff021916908360ff160217905550610f2b610f1b6126eb565b6001600160a01b03851690612842565b610f3e6001600160a01b038416836128d4565b60405160ff821681526001600160a01b038416907f4973f7978f2b1810531aed51dc15a8e446cb3191afcca470f8ce464af7494f589060200160405180910390a2505050565b5f5f60028460ff1660208110610f9c57610f9c614662565b0154604080516001600160a01b039092166020830181905260ff8616918301919091529150610c1890606001604051602081830303815290604052805160209091012090565b610fea613ebc565b81515f906020101561100f5760405163a29b1f1160e01b815260040160405180910390fd5b82518110156111ba57602060ff1683828151811061102f5761102f614662565b602002602001015160ff1610158061108857505f6001600160a01b0316600284838151811061106057611060614662565b602002602001015160ff166020811061107b5761107b614662565b01546001600160a01b0316145b156110a65760405163a29b1f1160e01b815260040160405180910390fd5b818382815181106110b9576110b9614662565b602002602001015160ff16602081106110d4576110d4614662565b60200201511561111b578281815181106110f0576110f0614662565b602002602001015160405163c41fdbb960e01b8152600401610bf7919060ff91909116815260200190565b60018284838151811061113057611130614662565b602002602001015160ff166020811061114b5761114b614662565b91151560209092020152825183908290811061116957611169614662565b6020026020010151600161117d9190614649565b5f826020811061118f5761118f614662565b602091828204019190066101000a81548160ff021916908360ff16021790555080600101905061100f565b6020811080156111e757505f600282602081106111d9576111d9614662565b01546001600160a01b031614155b1561120557604051636712b27b60e01b815260040160405180910390fd5b7f193fc4e628c27ae3ca098952dfc16a40425b44e7b0a97f4cc59d0f267f47caec8360405161123491906146d9565b60405180910390a1505050565b5f5f61124c83611ce4565b9050808411156112755782848260405163284ff66760e01b8152600401610bf7939291906146a5565b5f61127f856119f2565b9050610c18338583886126d6565b7f52c63247e1f47db19d5ce0460030c497f067ca4cebf71ba98eeadabe20bace0480546060915f516020614a2e5f395f51905f52916107d5906145fd565b602060ff8316106112ef57604051632711b74d60e11b815260040160405180910390fd5b5f60028360ff166020811061130657611306614662565b01546001600160a01b031690508061133157604051632711b74d60e11b815260040160405180910390fd5b8115801561134f575061134c816001600160a01b0316612922565b15155b1561136d576040516343c2dfef60e01b815260040160405180910390fd5b60ff831615801561138757506003546001600160a01b0316155b156113a857604051600162ad1fab60e01b0319815260040160405180910390fd5b5f6113b4846001614649565b60ff1690505b6020811080156113e757505f600282602081106113d9576113d9614662565b01546001600160a01b031614155b1561145657600281602081106113ff576113ff614662565b01546001600160a01b0316600261141760018461471e565b6020811061142757611427614662565b0180546001600160a01b0319166001600160a01b039290921691909117905561144f8161468d565b90506113ba565b5f600261146460018461471e565b6020811061147457611474614662565b0180546001600160a01b0319166001600160a01b0392909216919091179055505f80805b600183602081106114ab576114ab614662565b602081049091015460ff601f9092166101000a900416158015906114cf5750602083105b15611801578015611593576114e5866001614649565b60ff16600184602081106114fb576114fb614662565b602081049091015460ff601f9092166101000a9004161161151c575f61151f565b60015b6001846020811061153257611532614662565b602091828204019190069054906101000a900460ff166115529190614731565b600161155e818661471e565b6020811061156e5761156e614662565b602091828204019190066101000a81548160ff021916908360ff160217905550611664565b61159e866001614649565b60ff16600184602081106115b4576115b4614662565b602081049091015460ff601f9092166101000a900416036115d757506001611664565b6115e2866001614649565b60ff16600184602081106115f8576115f8614662565b602081049091015460ff601f9092166101000a900416111561166457600180846020811061162857611628614662565b602091828204019190068282829054906101000a900460ff1661164b9190614731565b92506101000a81548160ff021916908360ff1602179055505b811561172157611675866001614649565b60ff165f846020811061168a5761168a614662565b602081049091015460ff601f9092166101000a900416116116ab575f6116ae565b60015b5f84602081106116c0576116c0614662565b602091828204019190069054906101000a900460ff166116e09190614731565b5f6116ec60018661471e565b602081106116fc576116fc614662565b602091828204019190066101000a81548160ff021916908360ff1602179055506117f1565b61172c866001614649565b60ff165f846020811061174157611741614662565b602081049091015460ff601f9092166101000a9004160361176557600191506117f1565b611770866001614649565b60ff165f846020811061178557611785614662565b602081049091015460ff601f9092166101000a90041611156117f15760015f84602081106117b5576117b5614662565b602091828204019190068282829054906101000a900460ff166117d89190614731565b92506101000a81548160ff021916908360ff1602179055505b6117fa8361468d565b9250611498565b5f8061180e60018661471e565b6020811061181e5761181e614662565b602091828204019190066101000a81548160ff021916908360ff1602179055505f6001808561184d919061471e565b6020811061185d5761185d614662565b602091828204019190066101000a81548160ff021916908360ff16021790555061189985856001600160a01b031661298b90919063ffffffff16565b60405160ff871681526001600160a01b038516907f978014566e371fef52158b004e150b6e1fd723f5aa3d8c9aa2a7c98ddb0e65b89060200160405180910390a2505050505050565b5f6118eb612ab0565b805490915060ff600160401b82041615906001600160401b03165f811580156119115750825b90505f826001600160401b0316600114801561192c5750303b155b90508115801561193a575080155b156119585760405163f92ee8a960e01b815260040160405180910390fd5b845467ffffffffffffffff19166001178555831561198257845460ff60401b1916600160401b1785555b6119918c8c8c8c8c8c8c612ad8565b83156119d757845460ff60401b19168555604051600181527fc7f505b2f371ae2175ee4913f4499e1f2633a7b5936321eed1cdaeb6115181d29060200160405180910390a15b505050505050505050505050565b5f336108758185856121b3565b5f6108628260016120ab565b5f5f611a0983611d1b565b905080851115611a3257828582604051633fa733bb60e21b8152600401610bf7939291906146a5565b5f611a3c8661087f565b905061099c3386868985612b08565b5f5f611a5683611d31565b905080851115611a7f57828582604051632e52afbb60e21b8152600401610bf7939291906146a5565b5f611a8986610857565b905061099c338686848a612b08565b611aa0613ebc565b81515f9060201015611ac55760405163a29b1f1160e01b815260040160405180910390fd5b82518160ff161015611c6457602060ff16838260ff1681518110611aeb57611aeb614662565b602002602001015160ff16101580611b4757505f6001600160a01b03166002848360ff1681518110611b1f57611b1f614662565b602002602001015160ff1660208110611b3a57611b3a614662565b01546001600160a01b0316145b15611b655760405163a29b1f1160e01b815260040160405180910390fd5b81838260ff1681518110611b7b57611b7b614662565b602002602001015160ff1660208110611b9657611b96614662565b602002015115611bb557828160ff16815181106110f0576110f0614662565b600182848360ff1681518110611bcd57611bcd614662565b602002602001015160ff1660208110611be857611be8614662565b911515602090920201528251839060ff8316908110611c0957611c09614662565b60200260200101516001611c1d9190614649565b60018260ff1660208110611c3357611c33614662565b602091828204019190066101000a81548160ff021916908360ff16021790555080611c5d9061474a565b9050611ac5565b602060ff8216108015611c9757505f600260ff831660208110611c8957611c89614662565b01546001600160a01b031614155b15611cb557604051636712b27b60e01b815260040160405180910390fd5b7f3c56b6bca0d55eda581f8f2819d1f85d3b91cfcc24914a8fa39d301796d8964c8360405161123491906146d9565b5f5f611cee612380565b90505f198114611d0757611d02815f612114565b6108a9565b5f199392505050565b5f610862825f612114565b5f5f611d2683612b1e565b90506108a981612b2b565b5f5f611d3c83612bc0565b90505f611d49825f6120ab565b90505f611d5582612b2b565b9050818114611d6d57611d68815f612114565b61099c565b50909392505050565b611d7e613ebc565b604080516104008101918290529060029060209082845b81546001600160a01b03168152600190910190602001808311611d95575050505050905090565b6001600160a01b039182165f9081527f52c63247e1f47db19d5ce0460030c497f067ca4cebf71ba98eeadabe20bace016020908152604080832093909416825291909152205490565b5f602060ff8516101580611e1d5750602060ff841610155b15611e3b57604051632711b74d60e11b815260040160405180910390fd5b5f60028560ff1660208110611e5257611e52614662565b01546001600160a01b031690505f600260ff861660208110611e7657611e76614662565b01546001600160a01b03908116915082161580611e9a57506001600160a01b038116155b15611eb857604051632711b74d60e11b815260040160405180910390fd5b5f198403611ed557611ed2826001600160a01b0316612922565b93505b835f03611ee6575f925050506108a9565b611ef8826001600160a01b0316612bca565b841115611f2d57611f11826001600160a01b0316612bca565b604051633ce011d560e01b8152600401610bf791815260200190565b611f3f816001600160a01b0316612bf8565b841115611f7457611f58816001600160a01b0316612bf8565b6040516350a3e37560e11b8152600401610bf791815260200190565b611f886001600160a01b038316855f612c26565b50611f9d6001600160a01b038216855f612d62565b50806001600160a01b0316826001600160a01b03167fb0850b8e0f9e8315dde3c9f9f31138283e6bbe16cd29e8552eb1dcdf9fac9e3b86604051611fe391815260200190565b60405180910390a35091949350505050565b611ffd613ebc565b604080516104008101918290525f805460ff1682529091602090826001838601808411610b705790505050505050905090565b5f5f5b5f6002826020811061204757612047614662565b01546001600160a01b0316148015906120605750602081105b156120a75761208b6002826020811061207b5761207b614662565b01546001600160a01b0316612922565b61209590836146c6565b91506120a08161468d565b9050612033565b5090565b5f6108a96120b7610789565b6120c29060016146c6565b6120cd5f600a61484b565b7f52c63247e1f47db19d5ce0460030c497f067ca4cebf71ba98eeadabe20bace02546120f991906146c6565b85919085612e83565b61210f8383836001612ec5565b505050565b5f6108a961212382600a61484b565b7f52c63247e1f47db19d5ce0460030c497f067ca4cebf71ba98eeadabe20bace025461214f91906146c6565b612157610789565b6120f99060016146c6565b5f61216d8484611dbc565b90505f198110156121ad578181101561219f57828183604051637dc7a0d960e11b8152600401610bf7939291906146a5565b6121ad84848484035f612ec5565b50505050565b6001600160a01b0383166121dc57604051634b637e8f60e11b81525f6004820152602401610bf7565b6001600160a01b0382166122055760405163ec442f0560e01b81525f6004820152602401610bf7565b61210f838383612fa8565b5f306001600160a01b0316633a7b7a396040518163ffffffff1660e01b8152600401602060405180830381865afa15801561224d573d5f5f3e3d5ffd5b505050506040513d601f19601f820116820180604052508101906122719190614859565b90505f816001600160a01b031663b7009613333061228f8989610f84565b60405160e085901b6001600160e01b031990811682526001600160a01b0394851660048301529290931660248401521660448201526064016040805180830381865afa1580156122e1573d5f5f3e3d5ffd5b505050506040513d601f19601f820116820180604052508101906123059190614874565b509050806123275760405162d1953b60e31b8152336004820152602401610bf7565b5050505050565b6060610c1883836040516024016123469291906148a9565b60408051601f198184030181529190526020810180516001600160e01b03166304c0d8e160e11b1790526001600160a01b038616906130ce565b5f5f5f5b5f6002826020811061239857612398614662565b01546001600160a01b0316148015906123b15750602081105b1561240f576123ed836123e0600284602081106123d0576123d0614662565b01546001600160a01b0316612bf8565b8101908110159190820290565b93509150816123ff575f199250505090565b6124088161468d565b9050612384565b505090565b805f5b811580159061244c57505f816020811061243357612433614662565b602081049091015460ff601f9092166101000a90041615155b80156124585750602081105b1561250b575f600260015f846020811061247457612474614662565b602091828204019190069054906101000a900460ff166124949190614731565b60ff16602081106124a7576124a7614662565b01546001600160a01b031690505f6124c7846124c284612bf8565b61316e565b9050805f036124d75750506124fb565b6124eb6001600160a01b038316825f612d62565b506124f6818561471e565b935050505b6125048161468d565b9050612417565b508015610b4c5760405163285a546d60e01b815260040160405180910390fd5b306001600160a01b037f00000000000000000000000000000000000000000000000000000000000000001614806125b157507f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03166125a55f516020614a4e5f395f51905f52546001600160a01b031690565b6001600160a01b031614155b156125cf5760405163703e46dd60e11b815260040160405180910390fd5b565b816001600160a01b03166352d1902d6040518163ffffffff1660e01b8152600401602060405180830381865afa92505050801561262b575060408051601f3d908101601f1916820190925261262891810190614676565b60015b61265357604051634c9c8ce360e01b81526001600160a01b0383166004820152602401610bf7565b5f516020614a4e5f395f51905f52811461268357604051632a87526960e21b815260048101829052602401610bf7565b61210f838361317d565b306001600160a01b037f000000000000000000000000000000000000000000000000000000000000000016146125cf5760405163703e46dd60e11b815260040160405180910390fd5b6126e2848484846131d2565b6121ad82612414565b5f6107926108f2565b6126fe8483612842565b60405163f3e0ffbf60e01b81523060048201526127709086906001600160a01b0382169063f3e0ffbf90602401602060405180830381865afa158015612746573d5f5f3e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061276a9190614676565b83612c26565b5061277b858261298b565b61278584846128d4565b6040516370a0823160e01b81523060048201526127f79085906001600160a01b038516906370a0823190602401602060405180830381865afa1580156127cd573d5f5f3e3d5ffd5b505050506040513d601f19601f820116820180604052508101906127f19190614676565b83612d62565b50604080516001600160a01b038088168252861660208201527f254c88e7a2ea123aeeb89b7cc413fb949188fefcdb7584c4f3d493294daf65c5910160405180910390a15050505050565b604051634e2333d160e11b81523060048201526001600160a01b038083169190841690639c4667a290602401602060405180830381865afa158015612889573d5f5f3e3d5ffd5b505050506040513d601f19601f820116820180604052508101906128ad9190614859565b6001600160a01b031614610b4c5760405163e76673ef60e01b815260040160405180910390fd5b61210f816040516024016128e89190613f09565b60408051601f198184030181529190526020810180516001600160e01b031663139a8e2560e31b1790526001600160a01b038416906130ce565b60405163f3e0ffbf60e01b81523060048201525f906001600160a01b0383169063f3e0ffbf906024015b602060405180830381865afa158015612967573d5f5f3e3d5ffd5b505050506040513d601f19601f820116820180604052508101906108629190614676565b8015612a6657604051600160248201525f9081906001600160a01b0385169060440160408051601f198184030181529181526020820180516001600160e01b0316632d08ba2b60e11b179052516129e291906148c4565b5f60405180830381855af49150503d805f8114612a1a576040519150601f19603f3d011682016040523d82523d5f602084013e612a1f565b606091505b5091509150816121ad577f9f864ace9f45c2734f9444cb9a0c1ade6f1b15a8c202c17175b759728a4a0bf881604051612a589190613f09565b60405180910390a150505050565b6040515f602482015261210f9060440160408051601f198184030181529190526020810180516001600160e01b0316632d08ba2b60e11b1790526001600160a01b038416906130ce565b5f807ff0c57e16840df040f15088dc2f81fe391c3923bec73e23a9662efc9c229c6a00610862565b612ae061323d565b612ae985613262565b612af38787613273565b612aff84848484613285565b50505050505050565b612b1182613806565b6123278585858585613919565b5f6108626102ba83611d31565b5f5f5f5b5f60028260208110612b4357612b43614662565b01546001600160a01b031614801590612b5c5750602081105b15612bb957612b8b836123e060028460208110612b7b57612b7b614662565b01546001600160a01b0316612bca565b93509150811580612b9c5750838310155b15612ba957509192915050565b612bb28161468d565b9050612b2f565b5050919050565b5f61086282610c20565b60405163ce96cb7760e01b81523060048201525f906001600160a01b0383169063ce96cb779060240161294c565b60405163402d267d60e01b81523060048201525f906001600160a01b0383169063402d267d9060240161294c565b5f8115612d08575f5f856001600160a01b031685604051602401612c4c91815260200190565b60408051601f198184030181529181526020820180516001600160e01b0316632e1a7d4d60e01b17905251612c8191906148c4565b5f60405180830381855af49150503d805f8114612cb9576040519150601f19603f3d011682016040523d82523d5f602084013e612cbe565b606091505b509150915081612d00577fad0ad28a12a6ed800f1a7b398454913afe6826c175e6cc28f2e8e2c175b0d72881604051612cf79190613f09565b60405180910390a15b5090506108a9565b612d5883604051602401612d1e91815260200190565b60408051601f198184030181529190526020810180516001600160e01b0316632e1a7d4d60e01b1790526001600160a01b038616906130ce565b50600190506108a9565b5f8115612e33575f5f856001600160a01b031685604051602401612d8891815260200190565b60408051601f198184030181529181526020820180516001600160e01b031663b6b55f2560e01b17905251612dbd91906148c4565b5f60405180830381855af49150503d805f8114612df5576040519150601f19603f3d011682016040523d82523d5f602084013e612dfa565b606091505b509150915081612d00577ff8e68f23d3b33772e986cc9861e94e8fd6b9461d62bc1fb21cd754bbaf726bd381604051612cf79190613f09565b612d5883604051602401612e4991815260200190565b60408051601f198184030181529190526020810180516001600160e01b031663b6b55f2560e01b1790526001600160a01b038616906130ce565b5f612eb0612e90836139c0565b8015612eab57505f8480612ea657612ea66148da565b868809115b151590565b612ebb8686866139ec565b61099c91906146c6565b5f516020614a2e5f395f51905f526001600160a01b038516612efc5760405163e602df0560e01b81525f6004820152602401610bf7565b6001600160a01b038416612f2557604051634a1406b160e11b81525f6004820152602401610bf7565b6001600160a01b038086165f9081526001830160209081526040808320938816835292905220839055811561232757836001600160a01b0316856001600160a01b03167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92585604051612f9991815260200190565b60405180910390a35050505050565b5f516020614a2e5f395f51905f526001600160a01b038416612fe25781816002015f828254612fd791906146c6565b9091555061303f9050565b6001600160a01b0384165f90815260208290526040902054828110156130215784818460405163391434e360e21b8152600401610bf7939291906146a5565b6001600160a01b0385165f9081526020839052604090209083900390555b6001600160a01b03831661305d57600281018054839003905561307b565b6001600160a01b0383165f9081526020829052604090208054830190555b826001600160a01b0316846001600160a01b03167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef846040516130c091815260200190565b60405180910390a350505050565b60605f6130db8484613a9c565b90508080156130fc57505f3d11806130fc57505f846001600160a01b03163b115b1561311157613109613aaf565b915050610862565b801561313b57604051639996b31560e01b81526001600160a01b0385166004820152602401610bf7565b3d1561314e57613149613ac8565b613167565b60405163d6bda27560e01b815260040160405180910390fd5b5092915050565b5f8282188284100282186108a9565b61318682613ad3565b6040516001600160a01b038316907fbc7cd75a20ee27fd9adebab32041f755214dbc6bffa90cc0225b39da2e5c2d3b905f90a28051156131ca5761210f82826130ce565b610b4c613b36565b6131e56131dd6108f2565b853085613b55565b6131ef8382613b8b565b826001600160a01b0316846001600160a01b03167fdcbc1c05240f31ff3ad067ef1ee35ce4997762752e3a095284754544f4c709d784846040516130c0929190918252602082015260400190565b613245613bbf565b6125cf57604051631afcd79f60e31b815260040160405180910390fd5b61326a61323d565b6109b781613bd8565b61327b61323d565b610b4c8282613c5b565b83511580613294575083516020105b806132a157508251845114155b806132ae57508151845114155b806132bb57508051845114155b156132dc57604051600162ad1fab60e01b0319815260040160405180910390fd5b6132e4613ebc565b6132ec613ebc565b5f5b865181101561378f575f6001600160a01b031687828151811061331357613313614662565b60200260200101516001600160a01b03160361334257604051632711b74d60e11b815260040160405180910390fd5b61337e61334d6126eb565b88838151811061335f5761335f614662565b60200260200101516001600160a01b031661284290919063ffffffff16565b5f5b8181101561341e5787818151811061339a5761339a614662565b60200260200101516001600160a01b03168883815181106133bd576133bd614662565b60200260200101516001600160a01b031603613416578782815181106133e5576133e5614662565b602002602001015160405163b5a9314f60e01b8152600401610bf791906001600160a01b0391909116815260200190565b600101613380565b50865185828151811061343357613433614662565b602002602001015160ff1610158061347a57508285828151811061345957613459614662565b602002602001015160ff166020811061347457613474614662565b60200201515b156134bc5784818151811061349157613491614662565b602002602001015160405163306ccd5d60e11b8152600401610bf7919060ff91909116815260200190565b86518482815181106134d0576134d0614662565b602002602001015160ff161015806135175750818482815181106134f6576134f6614662565b602002602001015160ff166020811061351157613511614662565b60200201515b156135595783818151811061352e5761352e614662565b6020026020010151604051632776924160e11b8152600401610bf7919060ff91909116815260200190565b60018386838151811061356e5761356e614662565b602002602001015160ff166020811061358957613589614662565b6020020190151590811515815250506001828583815181106135ad576135ad614662565b602002602001015160ff16602081106135c8576135c8614662565b9115156020909202015286518790829081106135e6576135e6614662565b60200260200101516002826020811061360157613601614662565b015f6101000a8154816001600160a01b0302191690836001600160a01b0316021790555084818151811061363757613637614662565b6020026020010151600161364b9190614649565b5f826020811061365d5761365d614662565b602091828204019190066101000a81548160ff021916908360ff16021790555083818151811061368f5761368f614662565b602002602001015160016136a39190614649565b600182602081106136b6576136b6614662565b602091828204019190066101000a81548160ff021916908360ff1602179055506137248682815181106136eb576136eb614662565b602002602001015188838151811061370557613705614662565b60200260200101516001600160a01b03166128d490919063ffffffff16565b86818151811061373657613736614662565b60200260200101516001600160a01b03167f4973f7978f2b1810531aed51dc15a8e446cb3191afcca470f8ce464af7494f588260405161377f919060ff91909116815260200190565b60405180910390a26001016132ee565b507f193fc4e628c27ae3ca098952dfc16a40425b44e7b0a97f4cc59d0f267f47caec846040516137bf91906146d9565b60405180910390a17f3c56b6bca0d55eda581f8f2819d1f85d3b91cfcc24914a8fa39d301796d8964c836040516137f691906146d9565b60405180910390a1505050505050565b805f5b811580159061383f57506001816020811061382657613826614662565b602081049091015460ff601f9092166101000a90041615155b801561384b5750602081105b156138f9575f6002600180846020811061386757613867614662565b602091828204019190069054906101000a900460ff166138879190614731565b60ff166020811061389a5761389a614662565b01546001600160a01b031690505f6138b5846124c284612bca565b9050805f036138c55750506138e9565b6138d96001600160a01b038316825f612c26565b506138e4818561471e565b935050505b6138f28161468d565b9050613809565b508015610b4c5760405163351dc55d60e21b815260040160405180910390fd5b826001600160a01b0316856001600160a01b03161461393d5761393d838683612162565b6139478382613cab565b6139596139526108f2565b8584613cdf565b826001600160a01b0316846001600160a01b0316866001600160a01b03167ffbde797d201c681b91056529119e0b02407c7bb96a4a2c75c01fc9667232c8db85856040516139b1929190918252602082015260400190565b60405180910390a45050505050565b5f60028260038111156139d5576139d56148ee565b6139df9190614902565b60ff166001149050919050565b5f5f5f6139f98686613d14565b91509150815f03613a1d57838181613a1357613a136148da565b04925050506108a9565b818411613a3457613a346003851502601118613d30565b5f848688095f868103871696879004966002600389028118808a02820302808a02820302808a02820302808a02820302808a02820302808a02909103029181900381900460010185841190960395909502919093039390930492909217029150509392505050565b5f5f5f835160208501865af49392505050565b6040513d81523d5f602083013e3d602001810160405290565b6040513d5f823e3d81fd5b806001600160a01b03163b5f03613b0857604051634c9c8ce360e01b81526001600160a01b0382166004820152602401610bf7565b5f516020614a4e5f395f51905f5280546001600160a01b0319166001600160a01b0392909216919091179055565b34156125cf5760405163b398979f60e01b815260040160405180910390fd5b613b63848484846001613d41565b6121ad57604051635274afe760e01b81526001600160a01b0385166004820152602401610bf7565b6001600160a01b038216613bb45760405163ec442f0560e01b81525f6004820152602401610bf7565b610b4c5f8383612fa8565b5f613bc8612ab0565b54600160401b900460ff16919050565b613be061323d565b7f0773e532dfede91f04b12a73d3d2acd361424f41f76b4fb79f090161e36b4e005f80613c0c84613dae565b9150915081613c1c576012613c1e565b805b83546001600160a81b031916600160a01b60ff92909216919091026001600160a01b031916176001600160a01b0394909416939093179091555050565b613c6361323d565b5f516020614a2e5f395f51905f527f52c63247e1f47db19d5ce0460030c497f067ca4cebf71ba98eeadabe20bace03613c9c8482614973565b50600481016121ad8382614973565b6001600160a01b038216613cd457604051634b637e8f60e11b81525f6004820152602401610bf7565b610b4c825f83612fa8565b613cec8383836001613e39565b61210f57604051635274afe760e01b81526001600160a01b0384166004820152602401610bf7565b5f805f1983850993909202808410938190039390930393915050565b634e487b715f52806020526024601cfd5b6040516323b872dd60e01b5f8181526001600160a01b038781166004528616602452604485905291602083606481808c5af1925060015f51148316613d9d578383151615613d91573d5f823e3d81fd5b5f883b113d1516831692505b604052505f60605295945050505050565b5f5f5f613dba60405190565b6040805160048152602481019091526020810180516001600160e01b031663313ce56760e01b1790529091505f908190613df5908790613e9b565b5091509150613e0383604052565b818015613e11575060203d10155b8015613e1e575060ff8111155b613e29575f5f613e2d565b6001815b94509450505050915091565b60405163a9059cbb60e01b5f8181526001600160a01b038616600452602485905291602083604481808b5af1925060015f51148316613e8f578383151615613e83573d5f823e3d81fd5b5f873b113d1516831692505b60405250949350505050565b5f5f5f60405f855160208701885afa92505f51915060205190509250925092565b6040518061040001604052806020906020820280368337509192915050565b5f81518084528060208401602086015e5f602082860101526020601f19601f83011685010191505092915050565b602081525f6108a96020830184613edb565b5f60208284031215613f2b575f5ffd5b5035919050565b6001600160a01b03811681146109b7575f5ffd5b5f5f60408385031215613f57575f5ffd5b8235613f6281613f32565b946020939093013593505050565b5f5f5f60608486031215613f82575f5ffd5b8335613f8d81613f32565b92506020840135613f9d81613f32565b929592945050506040919091013590565b803560ff81168114613fbe575f5ffd5b919050565b634e487b7160e01b5f52604160045260245ffd5b604051601f8201601f191681016001600160401b0381118282101715613fff57613fff613fc3565b604052919050565b5f82601f830112614016575f5ffd5b8135602083015f5f6001600160401b0384111561403557614035613fc3565b50601f8301601f191660200161404a81613fd7565b91505082815285838301111561405e575f5ffd5b828260208301375f92810160200192909252509392505050565b5f5f5f6060848603121561408a575f5ffd5b61409384613fae565b92506140a160208501613fae565b915060408401356001600160401b038111156140bb575f5ffd5b6140c786828701614007565b9150509250925092565b5f602082840312156140e1575f5ffd5b81356108a981613f32565b5f5f604083850312156140fd575f5ffd5b823561410881613f32565b915060208301356001600160401b03811115614122575f5ffd5b61412e85828601614007565b9150509250929050565b610400810181835f5b602081101561416357815160ff16835260209283019290910190600101614141565b50505092915050565b5f5f6040838503121561417d575f5ffd5b82359150602083013561418f81613f32565b809150509250929050565b80151581146109b7575f5ffd5b5f5f5f5f608085870312156141ba575f5ffd5b6141c385613fae565b935060208501356141d381613f32565b925060408501356001600160401b038111156141ed575f5ffd5b6141f987828801614007565b925050606085013561420a8161419a565b939692955090935050565b5f5f60408385031215614226575f5ffd5b61422f83613fae565b915061423d60208401613fae565b90509250929050565b5f6001600160401b0382111561425e5761425e613fc3565b5060051b60200190565b5f82601f830112614277575f5ffd5b813561428a61428582614246565b613fd7565b8082825260208201915060208360051b8601019250858311156142ab575f5ffd5b602085015b838110156142cf576142c181613fae565b8352602092830192016142b0565b5095945050505050565b5f602082840312156142e9575f5ffd5b81356001600160401b038111156142fe575f5ffd5b610c1884828501614268565b5f5f6040838503121561431b575f5ffd5b61432483613fae565b9150602083013561418f8161419a565b8035613fbe81613f32565b5f82601f83011261434e575f5ffd5b813561435c61428582614246565b8082825260208201915060208360051b86010192508583111561437d575f5ffd5b602085015b838110156142cf57803561439581613f32565b835260209283019201614382565b5f82601f8301126143b2575f5ffd5b81356143c061428582614246565b8082825260208201915060208360051b8601019250858311156143e1575f5ffd5b602085015b838110156142cf5780356001600160401b03811115614403575f5ffd5b614412886020838a0101614007565b845250602092830192016143e6565b5f5f5f5f5f5f5f60e0888a031215614437575f5ffd5b87356001600160401b0381111561444c575f5ffd5b6144588a828b01614007565b97505060208801356001600160401b03811115614473575f5ffd5b61447f8a828b01614007565b96505061448e60408901614334565b945060608801356001600160401b038111156144a8575f5ffd5b6144b48a828b0161433f565b94505060808801356001600160401b038111156144cf575f5ffd5b6144db8a828b016143a3565b93505060a08801356001600160401b038111156144f6575f5ffd5b6145028a828b01614268565b92505060c08801356001600160401b0381111561451d575f5ffd5b6145298a828b01614268565b91505092959891949750929550565b5f5f5f6060848603121561454a575f5ffd5b83359250602084013561455c81613f32565b9150604084013561456c81613f32565b809150509250925092565b610400810181835f5b60208110156141635781516001600160a01b0316835260209283019290910190600101614580565b5f5f604083850312156145b9575f5ffd5b82356145c481613f32565b9150602083013561418f81613f32565b5f5f5f606084860312156145e6575f5ffd5b6145ef84613fae565b9250613f9d60208501613fae565b600181811c9082168061461157607f821691505b60208210810361462f57634e487b7160e01b5f52602260045260245ffd5b50919050565b634e487b7160e01b5f52601160045260245ffd5b60ff818116838216019081111561086257610862614635565b634e487b7160e01b5f52603260045260245ffd5b5f60208284031215614686575f5ffd5b5051919050565b5f6001820161469e5761469e614635565b5060010190565b6001600160a01b039390931683526020830191909152604082015260600190565b8082018082111561086257610862614635565b602080825282518282018190525f918401906040840190835b8181101561471357835160ff168352602093840193909201916001016146f2565b509095945050505050565b8181038181111561086257610862614635565b60ff828116828216039081111561086257610862614635565b5f60ff821660ff810361475f5761475f614635565b60010192915050565b6001815b60018411156147a35780850481111561478757614787614635565b600184161561479557908102905b60019390931c92800261476c565b935093915050565b5f826147b957506001610862565b816147c557505f610862565b81600181146147db57600281146147e557614801565b6001915050610862565b60ff8411156147f6576147f6614635565b50506001821b610862565b5060208310610133831016604e8410600b8410161715614824575081810a610862565b6148305f198484614768565b805f190482111561484357614843614635565b029392505050565b5f6108a960ff8416836147ab565b5f60208284031215614869575f5ffd5b81516108a981613f32565b5f5f60408385031215614885575f5ffd5b82516148908161419a565b602084015190925063ffffffff8116811461418f575f5ffd5b60ff83168152604060208201525f610c186040830184613edb565b5f82518060208501845e5f920191825250919050565b634e487b7160e01b5f52601260045260245ffd5b634e487b7160e01b5f52602160045260245ffd5b5f60ff83168061492057634e487b7160e01b5f52601260045260245ffd5b8060ff84160691505092915050565b601f82111561210f57805f5260205f20601f840160051c810160208510156149545750805b601f840160051c820191505b81811015612327575f8155600101614960565b81516001600160401b0381111561498c5761498c613fc3565b6149a08161499a84546145fd565b8461492f565b6020601f8211600181146149d2575f83156149bb5750848201515b5f19600385901b1c1916600184901b178455612327565b5f84815260208120601f198516915b82811015614a0157878501518255602094850194600190920191016149e1565b5084821015614a1e57868401515f19600387901b60f8161c191681555b50505050600190811b0190555056fe52c63247e1f47db19d5ce0460030c497f067ca4cebf71ba98eeadabe20bace00360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbca2646970667358221220c794b6ddbd4cfb3941fee0d7f43479cb8b47ac102f550f916026e193879f834464736f6c634300081e0033","opcodes":"PUSH1 0xA0 PUSH1 0x40 MSTORE ADDRESS PUSH1 0x80 MSTORE CALLVALUE DUP1 ISZERO PUSH2 0x13 JUMPI PUSH0 PUSH0 REVERT JUMPDEST POP PUSH2 0x1C PUSH2 0x21 JUMP JUMPDEST PUSH2 0xD3 JUMP JUMPDEST PUSH32 0xF0C57E16840DF040F15088DC2F81FE391C3923BEC73E23A9662EFC9C229C6A00 DUP1 SLOAD PUSH9 0x10000000000000000 SWAP1 DIV PUSH1 0xFF AND ISZERO PUSH2 0x71 JUMPI PUSH1 0x40 MLOAD PUSH4 0xF92EE8A9 PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST DUP1 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0x40 SHL SUB SWAP1 DUP2 AND EQ PUSH2 0xD0 JUMPI DUP1 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0x40 SHL SUB NOT AND PUSH1 0x1 PUSH1 0x1 PUSH1 0x40 SHL SUB SWAP1 DUP2 OR DUP3 SSTORE PUSH1 0x40 MLOAD SWAP1 DUP2 MSTORE PUSH32 0xC7F505B2F371AE2175EE4913F4499E1F2633A7B5936321EED1CDAEB6115181D2 SWAP1 PUSH1 0x20 ADD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 LOG1 JUMPDEST POP JUMP JUMPDEST PUSH1 0x80 MLOAD PUSH2 0x4AA3 PUSH2 0xF9 PUSH0 CODECOPY PUSH0 DUP2 DUP2 PUSH2 0x2536 ADD MSTORE DUP2 DUP2 PUSH2 0x255F ADD MSTORE PUSH2 0x2698 ADD MSTORE PUSH2 0x4AA3 PUSH0 RETURN INVALID PUSH1 0x80 PUSH1 0x40 MSTORE PUSH1 0x4 CALLDATASIZE LT PUSH2 0x254 JUMPI PUSH0 CALLDATALOAD PUSH1 0xE0 SHR DUP1 PUSH4 0x7AEEDF2A GT PUSH2 0x13F JUMPI DUP1 PUSH4 0xBA087652 GT PUSH2 0xB3 JUMPI DUP1 PUSH4 0xD905777E GT PUSH2 0x78 JUMPI DUP1 PUSH4 0xD905777E EQ PUSH2 0x6F7 JUMPI DUP1 PUSH4 0xD9F9027F EQ PUSH2 0x716 JUMPI DUP1 PUSH4 0xDD62ED3E EQ PUSH2 0x737 JUMPI DUP1 PUSH4 0xE682324D EQ PUSH2 0x756 JUMPI DUP1 PUSH4 0xEF8B30F7 EQ PUSH2 0x6B9 JUMPI DUP1 PUSH4 0xF617EECC EQ PUSH2 0x775 JUMPI PUSH0 PUSH0 REVERT JUMPDEST DUP1 PUSH4 0xBA087652 EQ PUSH2 0x65C JUMPI DUP1 PUSH4 0xBD577EB6 EQ PUSH2 0x67B JUMPI DUP1 PUSH4 0xC63D75B6 EQ PUSH2 0x69A JUMPI DUP1 PUSH4 0xC6E6F592 EQ PUSH2 0x6B9 JUMPI DUP1 PUSH4 0xCE96CB77 EQ PUSH2 0x6D8 JUMPI PUSH0 PUSH0 REVERT JUMPDEST DUP1 PUSH4 0x96DA35DA GT PUSH2 0x104 JUMPI DUP1 PUSH4 0x96DA35DA EQ PUSH2 0x591 JUMPI DUP1 PUSH4 0xA7DED2EA EQ PUSH2 0x5B0 JUMPI DUP1 PUSH4 0xA9059CBB EQ PUSH2 0x5CF JUMPI DUP1 PUSH4 0xAD3CB1CC EQ PUSH2 0x5EE JUMPI DUP1 PUSH4 0xB3D7F6B9 EQ PUSH2 0x61E JUMPI DUP1 PUSH4 0xB460AF94 EQ PUSH2 0x63D JUMPI PUSH0 PUSH0 REVERT JUMPDEST DUP1 PUSH4 0x7AEEDF2A EQ PUSH2 0x4E8 JUMPI DUP1 PUSH4 0x8CDF48A8 EQ PUSH2 0x507 JUMPI DUP1 PUSH4 0x914ABF4F EQ PUSH2 0x53F JUMPI DUP1 PUSH4 0x94BF804D EQ PUSH2 0x55E JUMPI DUP1 PUSH4 0x95D89B41 EQ PUSH2 0x57D JUMPI PUSH0 PUSH0 REVERT JUMPDEST DUP1 PUSH4 0x402D267D GT PUSH2 0x1D6 JUMPI DUP1 PUSH4 0x51A2D6D1 GT PUSH2 0x19B JUMPI DUP1 PUSH4 0x51A2D6D1 EQ PUSH2 0x442 JUMPI DUP1 PUSH4 0x52D1902D EQ PUSH2 0x463 JUMPI DUP1 PUSH4 0x6E553F65 EQ PUSH2 0x477 JUMPI DUP1 PUSH4 0x70A08231 EQ PUSH2 0x496 JUMPI DUP1 PUSH4 0x767F06AE EQ PUSH2 0x4B5 JUMPI DUP1 PUSH4 0x7AC445A7 EQ PUSH2 0x4C9 JUMPI PUSH0 PUSH0 REVERT JUMPDEST DUP1 PUSH4 0x402D267D EQ PUSH2 0x3D0 JUMPI DUP1 PUSH4 0x4614B896 EQ PUSH2 0x3EF JUMPI DUP1 PUSH4 0x47E57533 EQ PUSH2 0x410 JUMPI DUP1 PUSH4 0x4CDAD506 EQ PUSH2 0x2A0 JUMPI DUP1 PUSH4 0x4F1EF286 EQ PUSH2 0x42F JUMPI PUSH0 PUSH0 REVERT JUMPDEST DUP1 PUSH4 0x18160DDD GT PUSH2 0x21C JUMPI DUP1 PUSH4 0x18160DDD EQ PUSH2 0x30D JUMPI DUP1 PUSH4 0x23B872DD EQ PUSH2 0x340 JUMPI DUP1 PUSH4 0x313CE567 EQ PUSH2 0x35F JUMPI DUP1 PUSH4 0x38D52E0F EQ PUSH2 0x385 JUMPI DUP1 PUSH4 0x3AAF9048 EQ PUSH2 0x3B1 JUMPI PUSH0 PUSH0 REVERT JUMPDEST DUP1 PUSH4 0x1E1D114 EQ PUSH2 0x258 JUMPI DUP1 PUSH4 0x6FDDE03 EQ PUSH2 0x27F JUMPI DUP1 PUSH4 0x7A2D13A EQ PUSH2 0x2A0 JUMPI DUP1 PUSH4 0x95EA7B3 EQ PUSH2 0x2BF JUMPI DUP1 PUSH4 0xA28A477 EQ PUSH2 0x2EE JUMPI JUMPDEST PUSH0 PUSH0 REVERT JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x263 JUMPI PUSH0 PUSH0 REVERT JUMPDEST POP PUSH2 0x26C PUSH2 0x789 JUMP JUMPDEST PUSH1 0x40 MLOAD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x28A JUMPI PUSH0 PUSH0 REVERT JUMPDEST POP PUSH2 0x293 PUSH2 0x797 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0x276 SWAP2 SWAP1 PUSH2 0x3F09 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x2AB JUMPI PUSH0 PUSH0 REVERT JUMPDEST POP PUSH2 0x26C PUSH2 0x2BA CALLDATASIZE PUSH1 0x4 PUSH2 0x3F1B JUMP JUMPDEST PUSH2 0x857 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x2CA JUMPI PUSH0 PUSH0 REVERT JUMPDEST POP PUSH2 0x2DE PUSH2 0x2D9 CALLDATASIZE PUSH1 0x4 PUSH2 0x3F46 JUMP JUMPDEST PUSH2 0x868 JUMP JUMPDEST PUSH1 0x40 MLOAD SWAP1 ISZERO ISZERO DUP2 MSTORE PUSH1 0x20 ADD PUSH2 0x276 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x2F9 JUMPI PUSH0 PUSH0 REVERT JUMPDEST POP PUSH2 0x26C PUSH2 0x308 CALLDATASIZE PUSH1 0x4 PUSH2 0x3F1B JUMP JUMPDEST PUSH2 0x87F JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x318 JUMPI PUSH0 PUSH0 REVERT JUMPDEST POP PUSH32 0x52C63247E1F47DB19D5CE0460030C497F067CA4CEBF71BA98EEADABE20BACE02 SLOAD PUSH2 0x26C JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x34B JUMPI PUSH0 PUSH0 REVERT JUMPDEST POP PUSH2 0x2DE PUSH2 0x35A CALLDATASIZE PUSH1 0x4 PUSH2 0x3F70 JUMP JUMPDEST PUSH2 0x88B JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x36A JUMPI PUSH0 PUSH0 REVERT JUMPDEST POP PUSH2 0x373 PUSH2 0x8B0 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH1 0xFF SWAP1 SWAP2 AND DUP2 MSTORE PUSH1 0x20 ADD PUSH2 0x276 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x390 JUMPI PUSH0 PUSH0 REVERT JUMPDEST POP PUSH2 0x399 PUSH2 0x8F2 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP1 SWAP2 AND DUP2 MSTORE PUSH1 0x20 ADD PUSH2 0x276 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x3BC JUMPI PUSH0 PUSH0 REVERT JUMPDEST POP PUSH2 0x293 PUSH2 0x3CB CALLDATASIZE PUSH1 0x4 PUSH2 0x4078 JUMP JUMPDEST PUSH2 0x920 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x3DB JUMPI PUSH0 PUSH0 REVERT JUMPDEST POP PUSH2 0x26C PUSH2 0x3EA CALLDATASIZE PUSH1 0x4 PUSH2 0x40D1 JUMP JUMPDEST PUSH2 0x9A5 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x3FA JUMPI PUSH0 PUSH0 REVERT JUMPDEST POP PUSH2 0x40E PUSH2 0x409 CALLDATASIZE PUSH1 0x4 PUSH2 0x3F1B JUMP JUMPDEST PUSH2 0x9AE JUMP JUMPDEST STOP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x41B JUMPI PUSH0 PUSH0 REVERT JUMPDEST POP PUSH2 0x293 PUSH2 0x42A CALLDATASIZE PUSH1 0x4 PUSH2 0x3F1B JUMP JUMPDEST PUSH2 0x9BA JUMP JUMPDEST PUSH2 0x40E PUSH2 0x43D CALLDATASIZE PUSH1 0x4 PUSH2 0x40EC JUMP JUMPDEST PUSH2 0xB3A JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x44D JUMPI PUSH0 PUSH0 REVERT JUMPDEST POP PUSH2 0x456 PUSH2 0xB50 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0x276 SWAP2 SWAP1 PUSH2 0x4138 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x46E JUMPI PUSH0 PUSH0 REVERT JUMPDEST POP PUSH2 0x26C PUSH2 0xBA8 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x482 JUMPI PUSH0 PUSH0 REVERT JUMPDEST POP PUSH2 0x26C PUSH2 0x491 CALLDATASIZE PUSH1 0x4 PUSH2 0x416C JUMP JUMPDEST PUSH2 0xBC3 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x4A1 JUMPI PUSH0 PUSH0 REVERT JUMPDEST POP PUSH2 0x26C PUSH2 0x4B0 CALLDATASIZE PUSH1 0x4 PUSH2 0x40D1 JUMP JUMPDEST PUSH2 0xC20 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x4C0 JUMPI PUSH0 PUSH0 REVERT JUMPDEST POP PUSH2 0x373 PUSH1 0x20 DUP2 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x4D4 JUMPI PUSH0 PUSH0 REVERT JUMPDEST POP PUSH2 0x40E PUSH2 0x4E3 CALLDATASIZE PUSH1 0x4 PUSH2 0x41A7 JUMP JUMPDEST PUSH2 0xC46 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x4F3 JUMPI PUSH0 PUSH0 REVERT JUMPDEST POP PUSH2 0x40E PUSH2 0x502 CALLDATASIZE PUSH1 0x4 PUSH2 0x40EC JUMP JUMPDEST PUSH2 0xD7F JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x512 JUMPI PUSH0 PUSH0 REVERT JUMPDEST POP PUSH2 0x526 PUSH2 0x521 CALLDATASIZE PUSH1 0x4 PUSH2 0x4215 JUMP JUMPDEST PUSH2 0xF84 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xE0 SHL SUB NOT SWAP1 SWAP2 AND DUP2 MSTORE PUSH1 0x20 ADD PUSH2 0x276 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x54A JUMPI PUSH0 PUSH0 REVERT JUMPDEST POP PUSH2 0x40E PUSH2 0x559 CALLDATASIZE PUSH1 0x4 PUSH2 0x42D9 JUMP JUMPDEST PUSH2 0xFE2 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x569 JUMPI PUSH0 PUSH0 REVERT JUMPDEST POP PUSH2 0x26C PUSH2 0x578 CALLDATASIZE PUSH1 0x4 PUSH2 0x416C JUMP JUMPDEST PUSH2 0x1241 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x588 JUMPI PUSH0 PUSH0 REVERT JUMPDEST POP PUSH2 0x293 PUSH2 0x128D JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x59C JUMPI PUSH0 PUSH0 REVERT JUMPDEST POP PUSH2 0x40E PUSH2 0x5AB CALLDATASIZE PUSH1 0x4 PUSH2 0x430A JUMP JUMPDEST PUSH2 0x12CB JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x5BB JUMPI PUSH0 PUSH0 REVERT JUMPDEST POP PUSH2 0x40E PUSH2 0x5CA CALLDATASIZE PUSH1 0x4 PUSH2 0x4421 JUMP JUMPDEST PUSH2 0x18E2 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x5DA JUMPI PUSH0 PUSH0 REVERT JUMPDEST POP PUSH2 0x2DE PUSH2 0x5E9 CALLDATASIZE PUSH1 0x4 PUSH2 0x3F46 JUMP JUMPDEST PUSH2 0x19E5 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x5F9 JUMPI PUSH0 PUSH0 REVERT JUMPDEST POP PUSH2 0x293 PUSH1 0x40 MLOAD DUP1 PUSH1 0x40 ADD PUSH1 0x40 MSTORE DUP1 PUSH1 0x5 DUP2 MSTORE PUSH1 0x20 ADD PUSH5 0x352E302E3 PUSH1 0xDC SHL DUP2 MSTORE POP DUP2 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x629 JUMPI PUSH0 PUSH0 REVERT JUMPDEST POP PUSH2 0x26C PUSH2 0x638 CALLDATASIZE PUSH1 0x4 PUSH2 0x3F1B JUMP JUMPDEST PUSH2 0x19F2 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x648 JUMPI PUSH0 PUSH0 REVERT JUMPDEST POP PUSH2 0x26C PUSH2 0x657 CALLDATASIZE PUSH1 0x4 PUSH2 0x4538 JUMP JUMPDEST PUSH2 0x19FE JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x667 JUMPI PUSH0 PUSH0 REVERT JUMPDEST POP PUSH2 0x26C PUSH2 0x676 CALLDATASIZE PUSH1 0x4 PUSH2 0x4538 JUMP JUMPDEST PUSH2 0x1A4B JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x686 JUMPI PUSH0 PUSH0 REVERT JUMPDEST POP PUSH2 0x40E PUSH2 0x695 CALLDATASIZE PUSH1 0x4 PUSH2 0x42D9 JUMP JUMPDEST PUSH2 0x1A98 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x6A5 JUMPI PUSH0 PUSH0 REVERT JUMPDEST POP PUSH2 0x26C PUSH2 0x6B4 CALLDATASIZE PUSH1 0x4 PUSH2 0x40D1 JUMP JUMPDEST PUSH2 0x1CE4 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x6C4 JUMPI PUSH0 PUSH0 REVERT JUMPDEST POP PUSH2 0x26C PUSH2 0x6D3 CALLDATASIZE PUSH1 0x4 PUSH2 0x3F1B JUMP JUMPDEST PUSH2 0x1D10 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x6E3 JUMPI PUSH0 PUSH0 REVERT JUMPDEST POP PUSH2 0x26C PUSH2 0x6F2 CALLDATASIZE PUSH1 0x4 PUSH2 0x40D1 JUMP JUMPDEST PUSH2 0x1D1B JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x702 JUMPI PUSH0 PUSH0 REVERT JUMPDEST POP PUSH2 0x26C PUSH2 0x711 CALLDATASIZE PUSH1 0x4 PUSH2 0x40D1 JUMP JUMPDEST PUSH2 0x1D31 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x721 JUMPI PUSH0 PUSH0 REVERT JUMPDEST POP PUSH2 0x72A PUSH2 0x1D76 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0x276 SWAP2 SWAP1 PUSH2 0x4577 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x742 JUMPI PUSH0 PUSH0 REVERT JUMPDEST POP PUSH2 0x26C PUSH2 0x751 CALLDATASIZE PUSH1 0x4 PUSH2 0x45A8 JUMP JUMPDEST PUSH2 0x1DBC JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x761 JUMPI PUSH0 PUSH0 REVERT JUMPDEST POP PUSH2 0x26C PUSH2 0x770 CALLDATASIZE PUSH1 0x4 PUSH2 0x45D4 JUMP JUMPDEST PUSH2 0x1E05 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x780 JUMPI PUSH0 PUSH0 REVERT JUMPDEST POP PUSH2 0x456 PUSH2 0x1FF5 JUMP JUMPDEST PUSH0 PUSH2 0x792 PUSH2 0x2030 JUMP JUMPDEST SWAP1 POP SWAP1 JUMP JUMPDEST PUSH32 0x52C63247E1F47DB19D5CE0460030C497F067CA4CEBF71BA98EEADABE20BACE03 DUP1 SLOAD PUSH1 0x60 SWAP2 PUSH0 MLOAD PUSH1 0x20 PUSH2 0x4A2E PUSH0 CODECOPY PUSH0 MLOAD SWAP1 PUSH0 MSTORE SWAP2 PUSH2 0x7D5 SWAP1 PUSH2 0x45FD 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 0x801 SWAP1 PUSH2 0x45FD JUMP JUMPDEST DUP1 ISZERO PUSH2 0x84C JUMPI DUP1 PUSH1 0x1F LT PUSH2 0x823 JUMPI PUSH2 0x100 DUP1 DUP4 SLOAD DIV MUL DUP4 MSTORE SWAP2 PUSH1 0x20 ADD SWAP2 PUSH2 0x84C JUMP JUMPDEST DUP3 ADD SWAP2 SWAP1 PUSH0 MSTORE PUSH1 0x20 PUSH0 KECCAK256 SWAP1 JUMPDEST DUP2 SLOAD DUP2 MSTORE SWAP1 PUSH1 0x1 ADD SWAP1 PUSH1 0x20 ADD DUP1 DUP4 GT PUSH2 0x82F JUMPI DUP3 SWAP1 SUB PUSH1 0x1F AND DUP3 ADD SWAP2 JUMPDEST POP POP POP POP POP SWAP2 POP POP SWAP1 JUMP JUMPDEST PUSH0 PUSH2 0x862 DUP3 PUSH0 PUSH2 0x20AB JUMP JUMPDEST SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH0 CALLER PUSH2 0x875 DUP2 DUP6 DUP6 PUSH2 0x2102 JUMP JUMPDEST POP PUSH1 0x1 SWAP4 SWAP3 POP POP POP JUMP JUMPDEST PUSH0 PUSH2 0x862 DUP3 PUSH1 0x1 PUSH2 0x2114 JUMP JUMPDEST PUSH0 CALLER PUSH2 0x898 DUP6 DUP3 DUP6 PUSH2 0x2162 JUMP JUMPDEST PUSH2 0x8A3 DUP6 DUP6 DUP6 PUSH2 0x21B3 JUMP JUMPDEST PUSH1 0x1 SWAP2 POP POP JUMPDEST SWAP4 SWAP3 POP POP POP JUMP JUMPDEST PUSH0 DUP1 PUSH32 0x773E532DFEDE91F04B12A73D3D2ACD361424F41F76B4FB79F090161E36B4E00 SWAP1 POP PUSH0 DUP2 SLOAD PUSH2 0x8EC SWAP2 SWAP1 PUSH1 0x1 PUSH1 0xA0 SHL SWAP1 DIV PUSH1 0xFF AND PUSH2 0x4649 JUMP JUMPDEST SWAP2 POP POP SWAP1 JUMP JUMPDEST PUSH32 0x773E532DFEDE91F04B12A73D3D2ACD361424F41F76B4FB79F090161E36B4E00 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND SWAP1 JUMP JUMPDEST PUSH1 0x60 PUSH2 0x92D DUP5 DUP5 DUP5 PUSH2 0x2210 JUMP JUMPDEST PUSH0 PUSH1 0x2 DUP6 PUSH1 0xFF AND PUSH1 0x20 DUP2 LT PUSH2 0x944 JUMPI PUSH2 0x944 PUSH2 0x4662 JUMP JUMPDEST ADD SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND SWAP1 POP DUP1 PUSH2 0x96F JUMPI PUSH1 0x40 MLOAD PUSH4 0x2711B74D PUSH1 0xE1 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH2 0x99C DUP5 DUP5 PUSH1 0x2 DUP9 PUSH1 0xFF AND PUSH1 0x20 DUP2 LT PUSH2 0x98A JUMPI PUSH2 0x98A PUSH2 0x4662 JUMP JUMPDEST ADD SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND SWAP2 SWAP1 PUSH2 0x232E JUMP JUMPDEST SWAP6 SWAP5 POP POP POP POP POP JUMP JUMPDEST PUSH0 PUSH2 0x862 PUSH2 0x2380 JUMP JUMPDEST PUSH2 0x9B7 DUP2 PUSH2 0x2414 JUMP JUMPDEST POP JUMP JUMPDEST PUSH1 0x60 PUSH0 JUMPDEST PUSH0 PUSH1 0x2 DUP3 PUSH1 0x20 DUP2 LT PUSH2 0x9D2 JUMPI PUSH2 0x9D2 PUSH2 0x4662 JUMP JUMPDEST ADD SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND EQ DUP1 ISZERO SWAP1 PUSH2 0x9EB JUMPI POP PUSH1 0x20 DUP2 LT JUMPDEST ISZERO PUSH2 0xB20 JUMPI PUSH1 0x2 DUP2 PUSH1 0x20 DUP2 LT PUSH2 0xA03 JUMPI PUSH2 0xA03 PUSH2 0x4662 JUMP JUMPDEST ADD PUSH0 SWAP1 SLOAD SWAP1 PUSH2 0x100 EXP SWAP1 DIV PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH4 0x5B9A4C35 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 GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0xA52 JUMPI RETURNDATASIZE PUSH0 PUSH0 RETURNDATACOPY RETURNDATASIZE PUSH0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP3 ADD DUP1 PUSH1 0x40 MSTORE POP DUP2 ADD SWAP1 PUSH2 0xA76 SWAP2 SWAP1 PUSH2 0x4676 JUMP JUMPDEST DUP4 SUB PUSH2 0xB10 JUMPI DUP3 SLOAD DUP4 SWAP1 DUP2 SWAP1 PUSH2 0xA8B SWAP1 PUSH2 0x45FD 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 0xAB7 SWAP1 PUSH2 0x45FD JUMP JUMPDEST DUP1 ISZERO PUSH2 0xB02 JUMPI DUP1 PUSH1 0x1F LT PUSH2 0xAD9 JUMPI PUSH2 0x100 DUP1 DUP4 SLOAD DIV MUL DUP4 MSTORE SWAP2 PUSH1 0x20 ADD SWAP2 PUSH2 0xB02 JUMP JUMPDEST DUP3 ADD SWAP2 SWAP1 PUSH0 MSTORE PUSH1 0x20 PUSH0 KECCAK256 SWAP1 JUMPDEST DUP2 SLOAD DUP2 MSTORE SWAP1 PUSH1 0x1 ADD SWAP1 PUSH1 0x20 ADD DUP1 DUP4 GT PUSH2 0xAE5 JUMPI DUP3 SWAP1 SUB PUSH1 0x1F AND DUP3 ADD SWAP2 JUMPDEST POP POP POP POP POP SWAP3 POP POP POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH2 0xB19 DUP2 PUSH2 0x468D JUMP JUMPDEST SWAP1 POP PUSH2 0x9BE JUMP JUMPDEST POP PUSH1 0x40 MLOAD PUSH4 0x213109DD PUSH1 0xE1 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH2 0xB42 PUSH2 0x252B JUMP JUMPDEST PUSH2 0xB4C DUP3 DUP3 PUSH2 0x25D1 JUMP JUMPDEST POP POP JUMP JUMPDEST PUSH2 0xB58 PUSH2 0x3EBC JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH2 0x400 DUP2 ADD SWAP2 DUP3 SWAP1 MSTORE SWAP1 PUSH1 0x1 SWAP1 PUSH1 0x20 SWAP1 DUP3 PUSH0 DUP6 JUMPDEST DUP3 SLOAD PUSH2 0x100 DUP4 SWAP1 EXP SWAP1 DIV PUSH1 0xFF AND DUP2 MSTORE PUSH1 0x20 PUSH1 0x1 SWAP3 DUP4 ADD DUP2 DUP2 DIV SWAP5 DUP6 ADD SWAP5 SWAP1 SWAP4 SUB SWAP1 SWAP3 MUL SWAP2 ADD DUP1 DUP5 GT PUSH2 0xB70 JUMPI SWAP1 POP POP POP POP POP POP SWAP1 POP SWAP1 JUMP JUMPDEST PUSH0 PUSH2 0xBB1 PUSH2 0x268D JUMP JUMPDEST POP PUSH0 MLOAD PUSH1 0x20 PUSH2 0x4A4E PUSH0 CODECOPY PUSH0 MLOAD SWAP1 PUSH0 MSTORE SWAP1 JUMP JUMPDEST PUSH0 PUSH0 PUSH2 0xBCE DUP4 PUSH2 0x9A5 JUMP JUMPDEST SWAP1 POP DUP1 DUP5 GT ISZERO PUSH2 0xC00 JUMPI DUP3 DUP5 DUP3 PUSH1 0x40 MLOAD PUSH4 0x3C8097D9 PUSH1 0xE1 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0xBF7 SWAP4 SWAP3 SWAP2 SWAP1 PUSH2 0x46A5 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH0 PUSH2 0xC0A DUP6 PUSH2 0x1D10 JUMP JUMPDEST SWAP1 POP PUSH2 0xC18 CALLER DUP6 DUP8 DUP5 PUSH2 0x26D6 JUMP JUMPDEST SWAP5 SWAP4 POP POP POP POP JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH0 SWAP1 DUP2 MSTORE PUSH0 MLOAD PUSH1 0x20 PUSH2 0x4A2E PUSH0 CODECOPY PUSH0 MLOAD SWAP1 PUSH0 MSTORE PUSH1 0x20 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD SWAP1 JUMP JUMPDEST PUSH0 PUSH1 0x2 DUP6 PUSH1 0xFF AND PUSH1 0x20 DUP2 LT PUSH2 0xC5D JUMPI PUSH2 0xC5D PUSH2 0x4662 JUMP JUMPDEST ADD SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND SWAP1 POP DUP1 PUSH2 0xC88 JUMPI PUSH1 0x40 MLOAD PUSH4 0x2711B74D PUSH1 0xE1 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH0 JUMPDEST PUSH1 0x20 DUP2 LT DUP1 ISZERO PUSH2 0xCB7 JUMPI POP PUSH0 PUSH1 0x2 DUP3 PUSH1 0x20 DUP2 LT PUSH2 0xCA9 JUMPI PUSH2 0xCA9 PUSH2 0x4662 JUMP JUMPDEST ADD SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND EQ ISZERO JUMPDEST ISZERO PUSH2 0xD2D JUMPI DUP5 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH1 0x2 DUP3 PUSH1 0x20 DUP2 LT PUSH2 0xCD9 JUMPI PUSH2 0xCD9 PUSH2 0x4662 JUMP JUMPDEST ADD SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND EQ DUP1 ISZERO PUSH2 0xCF4 JUMPI POP DUP6 PUSH1 0xFF AND DUP2 EQ ISZERO JUMPDEST ISZERO PUSH2 0xD1D JUMPI PUSH1 0x40 MLOAD PUSH4 0xB5A9314F PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP7 AND PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x24 ADD PUSH2 0xBF7 JUMP JUMPDEST PUSH2 0xD26 DUP2 PUSH2 0x468D JUMP JUMPDEST SWAP1 POP PUSH2 0xC8A JUMP JUMPDEST POP PUSH2 0xD42 DUP2 DUP6 DUP6 PUSH2 0xD3C PUSH2 0x26EB JUMP JUMPDEST DUP7 PUSH2 0x26F4 JUMP JUMPDEST DUP4 PUSH1 0x2 DUP7 PUSH1 0xFF AND PUSH1 0x20 DUP2 LT PUSH2 0xD59 JUMPI PUSH2 0xD59 PUSH2 0x4662 JUMP JUMPDEST ADD DUP1 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB NOT AND PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP3 SWAP1 SWAP3 AND SWAP2 SWAP1 SWAP2 OR SWAP1 SSTORE POP POP POP POP POP JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP3 AND PUSH2 0xDA6 JUMPI PUSH1 0x40 MLOAD PUSH4 0x2711B74D PUSH1 0xE1 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH0 JUMPDEST PUSH1 0x20 DUP2 LT DUP1 ISZERO PUSH2 0xDD5 JUMPI POP PUSH0 PUSH1 0x2 DUP3 PUSH1 0x20 DUP2 LT PUSH2 0xDC7 JUMPI PUSH2 0xDC7 PUSH2 0x4662 JUMP JUMPDEST ADD SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND EQ ISZERO JUMPDEST ISZERO PUSH2 0xE3B JUMPI DUP3 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH1 0x2 DUP3 PUSH1 0x20 DUP2 LT PUSH2 0xDF7 JUMPI PUSH2 0xDF7 PUSH2 0x4662 JUMP JUMPDEST ADD SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND SUB PUSH2 0xE2B JUMPI PUSH1 0x40 MLOAD PUSH4 0xB5A9314F PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP5 AND PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x24 ADD PUSH2 0xBF7 JUMP JUMPDEST PUSH2 0xE34 DUP2 PUSH2 0x468D JUMP JUMPDEST SWAP1 POP PUSH2 0xDA8 JUMP JUMPDEST PUSH1 0x1F NOT DUP2 ADD PUSH2 0xE60 JUMPI PUSH1 0x40 MLOAD PUSH1 0x1 PUSH3 0xAD1FAB PUSH1 0xE0 SHL SUB NOT DUP2 MSTORE PUSH1 0x4 ADD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST DUP3 PUSH1 0x2 DUP3 PUSH1 0x20 DUP2 LT PUSH2 0xE74 JUMPI PUSH2 0xE74 PUSH2 0x4662 JUMP JUMPDEST ADD DUP1 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB NOT AND PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP3 SWAP1 SWAP3 AND SWAP2 SWAP1 SWAP2 OR SWAP1 SSTORE PUSH2 0xE9E DUP2 PUSH1 0x1 PUSH2 0x46C6 JUMP JUMPDEST PUSH0 DUP3 PUSH1 0x20 DUP2 LT PUSH2 0xEB0 JUMPI PUSH2 0xEB0 PUSH2 0x4662 JUMP JUMPDEST PUSH1 0x20 SWAP2 DUP3 DUP3 DIV ADD SWAP2 SWAP1 MOD PUSH2 0x100 EXP DUP2 SLOAD DUP2 PUSH1 0xFF MUL NOT AND SWAP1 DUP4 PUSH1 0xFF AND MUL OR SWAP1 SSTORE POP DUP1 PUSH1 0x1 PUSH2 0xEDD SWAP2 SWAP1 PUSH2 0x46C6 JUMP JUMPDEST PUSH1 0x1 DUP3 PUSH1 0x20 DUP2 LT PUSH2 0xEF0 JUMPI PUSH2 0xEF0 PUSH2 0x4662 JUMP JUMPDEST PUSH1 0x20 SWAP2 DUP3 DUP3 DIV ADD SWAP2 SWAP1 MOD PUSH2 0x100 EXP DUP2 SLOAD DUP2 PUSH1 0xFF MUL NOT AND SWAP1 DUP4 PUSH1 0xFF AND MUL OR SWAP1 SSTORE POP PUSH2 0xF2B PUSH2 0xF1B PUSH2 0x26EB JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP6 AND SWAP1 PUSH2 0x2842 JUMP JUMPDEST PUSH2 0xF3E PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP5 AND DUP4 PUSH2 0x28D4 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH1 0xFF DUP3 AND DUP2 MSTORE PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP5 AND SWAP1 PUSH32 0x4973F7978F2B1810531AED51DC15A8E446CB3191AFCCA470F8CE464AF7494F58 SWAP1 PUSH1 0x20 ADD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 LOG2 POP POP POP JUMP JUMPDEST PUSH0 PUSH0 PUSH1 0x2 DUP5 PUSH1 0xFF AND PUSH1 0x20 DUP2 LT PUSH2 0xF9C JUMPI PUSH2 0xF9C PUSH2 0x4662 JUMP JUMPDEST ADD SLOAD PUSH1 0x40 DUP1 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP1 SWAP3 AND PUSH1 0x20 DUP4 ADD DUP2 SWAP1 MSTORE PUSH1 0xFF DUP7 AND SWAP2 DUP4 ADD SWAP2 SWAP1 SWAP2 MSTORE SWAP2 POP PUSH2 0xC18 SWAP1 PUSH1 0x60 ADD PUSH1 0x40 MLOAD PUSH1 0x20 DUP2 DUP4 SUB SUB DUP2 MSTORE SWAP1 PUSH1 0x40 MSTORE DUP1 MLOAD PUSH1 0x20 SWAP1 SWAP2 ADD KECCAK256 SWAP1 JUMP JUMPDEST PUSH2 0xFEA PUSH2 0x3EBC JUMP JUMPDEST DUP2 MLOAD PUSH0 SWAP1 PUSH1 0x20 LT ISZERO PUSH2 0x100F JUMPI PUSH1 0x40 MLOAD PUSH4 0xA29B1F11 PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST DUP3 MLOAD DUP2 LT ISZERO PUSH2 0x11BA JUMPI PUSH1 0x20 PUSH1 0xFF AND DUP4 DUP3 DUP2 MLOAD DUP2 LT PUSH2 0x102F JUMPI PUSH2 0x102F PUSH2 0x4662 JUMP JUMPDEST PUSH1 0x20 MUL PUSH1 0x20 ADD ADD MLOAD PUSH1 0xFF AND LT ISZERO DUP1 PUSH2 0x1088 JUMPI POP PUSH0 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH1 0x2 DUP5 DUP4 DUP2 MLOAD DUP2 LT PUSH2 0x1060 JUMPI PUSH2 0x1060 PUSH2 0x4662 JUMP JUMPDEST PUSH1 0x20 MUL PUSH1 0x20 ADD ADD MLOAD PUSH1 0xFF AND PUSH1 0x20 DUP2 LT PUSH2 0x107B JUMPI PUSH2 0x107B PUSH2 0x4662 JUMP JUMPDEST ADD SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND EQ JUMPDEST ISZERO PUSH2 0x10A6 JUMPI PUSH1 0x40 MLOAD PUSH4 0xA29B1F11 PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST DUP2 DUP4 DUP3 DUP2 MLOAD DUP2 LT PUSH2 0x10B9 JUMPI PUSH2 0x10B9 PUSH2 0x4662 JUMP JUMPDEST PUSH1 0x20 MUL PUSH1 0x20 ADD ADD MLOAD PUSH1 0xFF AND PUSH1 0x20 DUP2 LT PUSH2 0x10D4 JUMPI PUSH2 0x10D4 PUSH2 0x4662 JUMP JUMPDEST PUSH1 0x20 MUL ADD MLOAD ISZERO PUSH2 0x111B JUMPI DUP3 DUP2 DUP2 MLOAD DUP2 LT PUSH2 0x10F0 JUMPI PUSH2 0x10F0 PUSH2 0x4662 JUMP JUMPDEST PUSH1 0x20 MUL PUSH1 0x20 ADD ADD MLOAD PUSH1 0x40 MLOAD PUSH4 0xC41FDBB9 PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0xBF7 SWAP2 SWAP1 PUSH1 0xFF SWAP2 SWAP1 SWAP2 AND DUP2 MSTORE PUSH1 0x20 ADD SWAP1 JUMP JUMPDEST PUSH1 0x1 DUP3 DUP5 DUP4 DUP2 MLOAD DUP2 LT PUSH2 0x1130 JUMPI PUSH2 0x1130 PUSH2 0x4662 JUMP JUMPDEST PUSH1 0x20 MUL PUSH1 0x20 ADD ADD MLOAD PUSH1 0xFF AND PUSH1 0x20 DUP2 LT PUSH2 0x114B JUMPI PUSH2 0x114B PUSH2 0x4662 JUMP JUMPDEST SWAP2 ISZERO ISZERO PUSH1 0x20 SWAP1 SWAP3 MUL ADD MSTORE DUP3 MLOAD DUP4 SWAP1 DUP3 SWAP1 DUP2 LT PUSH2 0x1169 JUMPI PUSH2 0x1169 PUSH2 0x4662 JUMP JUMPDEST PUSH1 0x20 MUL PUSH1 0x20 ADD ADD MLOAD PUSH1 0x1 PUSH2 0x117D SWAP2 SWAP1 PUSH2 0x4649 JUMP JUMPDEST PUSH0 DUP3 PUSH1 0x20 DUP2 LT PUSH2 0x118F JUMPI PUSH2 0x118F PUSH2 0x4662 JUMP JUMPDEST PUSH1 0x20 SWAP2 DUP3 DUP3 DIV ADD SWAP2 SWAP1 MOD PUSH2 0x100 EXP DUP2 SLOAD DUP2 PUSH1 0xFF MUL NOT AND SWAP1 DUP4 PUSH1 0xFF AND MUL OR SWAP1 SSTORE POP DUP1 PUSH1 0x1 ADD SWAP1 POP PUSH2 0x100F JUMP JUMPDEST PUSH1 0x20 DUP2 LT DUP1 ISZERO PUSH2 0x11E7 JUMPI POP PUSH0 PUSH1 0x2 DUP3 PUSH1 0x20 DUP2 LT PUSH2 0x11D9 JUMPI PUSH2 0x11D9 PUSH2 0x4662 JUMP JUMPDEST ADD SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND EQ ISZERO JUMPDEST ISZERO PUSH2 0x1205 JUMPI PUSH1 0x40 MLOAD PUSH4 0x6712B27B PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH32 0x193FC4E628C27AE3CA098952DFC16A40425B44E7B0A97F4CC59D0F267F47CAEC DUP4 PUSH1 0x40 MLOAD PUSH2 0x1234 SWAP2 SWAP1 PUSH2 0x46D9 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 LOG1 POP POP POP JUMP JUMPDEST PUSH0 PUSH0 PUSH2 0x124C DUP4 PUSH2 0x1CE4 JUMP JUMPDEST SWAP1 POP DUP1 DUP5 GT ISZERO PUSH2 0x1275 JUMPI DUP3 DUP5 DUP3 PUSH1 0x40 MLOAD PUSH4 0x284FF667 PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0xBF7 SWAP4 SWAP3 SWAP2 SWAP1 PUSH2 0x46A5 JUMP JUMPDEST PUSH0 PUSH2 0x127F DUP6 PUSH2 0x19F2 JUMP JUMPDEST SWAP1 POP PUSH2 0xC18 CALLER DUP6 DUP4 DUP9 PUSH2 0x26D6 JUMP JUMPDEST PUSH32 0x52C63247E1F47DB19D5CE0460030C497F067CA4CEBF71BA98EEADABE20BACE04 DUP1 SLOAD PUSH1 0x60 SWAP2 PUSH0 MLOAD PUSH1 0x20 PUSH2 0x4A2E PUSH0 CODECOPY PUSH0 MLOAD SWAP1 PUSH0 MSTORE SWAP2 PUSH2 0x7D5 SWAP1 PUSH2 0x45FD JUMP JUMPDEST PUSH1 0x20 PUSH1 0xFF DUP4 AND LT PUSH2 0x12EF JUMPI PUSH1 0x40 MLOAD PUSH4 0x2711B74D PUSH1 0xE1 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH0 PUSH1 0x2 DUP4 PUSH1 0xFF AND PUSH1 0x20 DUP2 LT PUSH2 0x1306 JUMPI PUSH2 0x1306 PUSH2 0x4662 JUMP JUMPDEST ADD SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND SWAP1 POP DUP1 PUSH2 0x1331 JUMPI PUSH1 0x40 MLOAD PUSH4 0x2711B74D PUSH1 0xE1 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST DUP2 ISZERO DUP1 ISZERO PUSH2 0x134F JUMPI POP PUSH2 0x134C DUP2 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH2 0x2922 JUMP JUMPDEST ISZERO ISZERO JUMPDEST ISZERO PUSH2 0x136D JUMPI PUSH1 0x40 MLOAD PUSH4 0x43C2DFEF PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH1 0xFF DUP4 AND ISZERO DUP1 ISZERO PUSH2 0x1387 JUMPI POP PUSH1 0x3 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND ISZERO JUMPDEST ISZERO PUSH2 0x13A8 JUMPI PUSH1 0x40 MLOAD PUSH1 0x1 PUSH3 0xAD1FAB PUSH1 0xE0 SHL SUB NOT DUP2 MSTORE PUSH1 0x4 ADD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH0 PUSH2 0x13B4 DUP5 PUSH1 0x1 PUSH2 0x4649 JUMP JUMPDEST PUSH1 0xFF AND SWAP1 POP JUMPDEST PUSH1 0x20 DUP2 LT DUP1 ISZERO PUSH2 0x13E7 JUMPI POP PUSH0 PUSH1 0x2 DUP3 PUSH1 0x20 DUP2 LT PUSH2 0x13D9 JUMPI PUSH2 0x13D9 PUSH2 0x4662 JUMP JUMPDEST ADD SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND EQ ISZERO JUMPDEST ISZERO PUSH2 0x1456 JUMPI PUSH1 0x2 DUP2 PUSH1 0x20 DUP2 LT PUSH2 0x13FF JUMPI PUSH2 0x13FF PUSH2 0x4662 JUMP JUMPDEST ADD SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH1 0x2 PUSH2 0x1417 PUSH1 0x1 DUP5 PUSH2 0x471E JUMP JUMPDEST PUSH1 0x20 DUP2 LT PUSH2 0x1427 JUMPI PUSH2 0x1427 PUSH2 0x4662 JUMP JUMPDEST ADD DUP1 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB NOT AND PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP3 SWAP1 SWAP3 AND SWAP2 SWAP1 SWAP2 OR SWAP1 SSTORE PUSH2 0x144F DUP2 PUSH2 0x468D JUMP JUMPDEST SWAP1 POP PUSH2 0x13BA JUMP JUMPDEST PUSH0 PUSH1 0x2 PUSH2 0x1464 PUSH1 0x1 DUP5 PUSH2 0x471E JUMP JUMPDEST PUSH1 0x20 DUP2 LT PUSH2 0x1474 JUMPI PUSH2 0x1474 PUSH2 0x4662 JUMP JUMPDEST ADD DUP1 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB NOT AND PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP3 SWAP1 SWAP3 AND SWAP2 SWAP1 SWAP2 OR SWAP1 SSTORE POP PUSH0 DUP1 DUP1 JUMPDEST PUSH1 0x1 DUP4 PUSH1 0x20 DUP2 LT PUSH2 0x14AB JUMPI PUSH2 0x14AB PUSH2 0x4662 JUMP JUMPDEST PUSH1 0x20 DUP2 DIV SWAP1 SWAP2 ADD SLOAD PUSH1 0xFF PUSH1 0x1F SWAP1 SWAP3 AND PUSH2 0x100 EXP SWAP1 DIV AND ISZERO DUP1 ISZERO SWAP1 PUSH2 0x14CF JUMPI POP PUSH1 0x20 DUP4 LT JUMPDEST ISZERO PUSH2 0x1801 JUMPI DUP1 ISZERO PUSH2 0x1593 JUMPI PUSH2 0x14E5 DUP7 PUSH1 0x1 PUSH2 0x4649 JUMP JUMPDEST PUSH1 0xFF AND PUSH1 0x1 DUP5 PUSH1 0x20 DUP2 LT PUSH2 0x14FB JUMPI PUSH2 0x14FB PUSH2 0x4662 JUMP JUMPDEST PUSH1 0x20 DUP2 DIV SWAP1 SWAP2 ADD SLOAD PUSH1 0xFF PUSH1 0x1F SWAP1 SWAP3 AND PUSH2 0x100 EXP SWAP1 DIV AND GT PUSH2 0x151C JUMPI PUSH0 PUSH2 0x151F JUMP JUMPDEST PUSH1 0x1 JUMPDEST PUSH1 0x1 DUP5 PUSH1 0x20 DUP2 LT PUSH2 0x1532 JUMPI PUSH2 0x1532 PUSH2 0x4662 JUMP JUMPDEST PUSH1 0x20 SWAP2 DUP3 DUP3 DIV ADD SWAP2 SWAP1 MOD SWAP1 SLOAD SWAP1 PUSH2 0x100 EXP SWAP1 DIV PUSH1 0xFF AND PUSH2 0x1552 SWAP2 SWAP1 PUSH2 0x4731 JUMP JUMPDEST PUSH1 0x1 PUSH2 0x155E DUP2 DUP7 PUSH2 0x471E JUMP JUMPDEST PUSH1 0x20 DUP2 LT PUSH2 0x156E JUMPI PUSH2 0x156E PUSH2 0x4662 JUMP JUMPDEST PUSH1 0x20 SWAP2 DUP3 DUP3 DIV ADD SWAP2 SWAP1 MOD PUSH2 0x100 EXP DUP2 SLOAD DUP2 PUSH1 0xFF MUL NOT AND SWAP1 DUP4 PUSH1 0xFF AND MUL OR SWAP1 SSTORE POP PUSH2 0x1664 JUMP JUMPDEST PUSH2 0x159E DUP7 PUSH1 0x1 PUSH2 0x4649 JUMP JUMPDEST PUSH1 0xFF AND PUSH1 0x1 DUP5 PUSH1 0x20 DUP2 LT PUSH2 0x15B4 JUMPI PUSH2 0x15B4 PUSH2 0x4662 JUMP JUMPDEST PUSH1 0x20 DUP2 DIV SWAP1 SWAP2 ADD SLOAD PUSH1 0xFF PUSH1 0x1F SWAP1 SWAP3 AND PUSH2 0x100 EXP SWAP1 DIV AND SUB PUSH2 0x15D7 JUMPI POP PUSH1 0x1 PUSH2 0x1664 JUMP JUMPDEST PUSH2 0x15E2 DUP7 PUSH1 0x1 PUSH2 0x4649 JUMP JUMPDEST PUSH1 0xFF AND PUSH1 0x1 DUP5 PUSH1 0x20 DUP2 LT PUSH2 0x15F8 JUMPI PUSH2 0x15F8 PUSH2 0x4662 JUMP JUMPDEST PUSH1 0x20 DUP2 DIV SWAP1 SWAP2 ADD SLOAD PUSH1 0xFF PUSH1 0x1F SWAP1 SWAP3 AND PUSH2 0x100 EXP SWAP1 DIV AND GT ISZERO PUSH2 0x1664 JUMPI PUSH1 0x1 DUP1 DUP5 PUSH1 0x20 DUP2 LT PUSH2 0x1628 JUMPI PUSH2 0x1628 PUSH2 0x4662 JUMP JUMPDEST PUSH1 0x20 SWAP2 DUP3 DUP3 DIV ADD SWAP2 SWAP1 MOD DUP3 DUP3 DUP3 SWAP1 SLOAD SWAP1 PUSH2 0x100 EXP SWAP1 DIV PUSH1 0xFF AND PUSH2 0x164B SWAP2 SWAP1 PUSH2 0x4731 JUMP JUMPDEST SWAP3 POP PUSH2 0x100 EXP DUP2 SLOAD DUP2 PUSH1 0xFF MUL NOT AND SWAP1 DUP4 PUSH1 0xFF AND MUL OR SWAP1 SSTORE POP JUMPDEST DUP2 ISZERO PUSH2 0x1721 JUMPI PUSH2 0x1675 DUP7 PUSH1 0x1 PUSH2 0x4649 JUMP JUMPDEST PUSH1 0xFF AND PUSH0 DUP5 PUSH1 0x20 DUP2 LT PUSH2 0x168A JUMPI PUSH2 0x168A PUSH2 0x4662 JUMP JUMPDEST PUSH1 0x20 DUP2 DIV SWAP1 SWAP2 ADD SLOAD PUSH1 0xFF PUSH1 0x1F SWAP1 SWAP3 AND PUSH2 0x100 EXP SWAP1 DIV AND GT PUSH2 0x16AB JUMPI PUSH0 PUSH2 0x16AE JUMP JUMPDEST PUSH1 0x1 JUMPDEST PUSH0 DUP5 PUSH1 0x20 DUP2 LT PUSH2 0x16C0 JUMPI PUSH2 0x16C0 PUSH2 0x4662 JUMP JUMPDEST PUSH1 0x20 SWAP2 DUP3 DUP3 DIV ADD SWAP2 SWAP1 MOD SWAP1 SLOAD SWAP1 PUSH2 0x100 EXP SWAP1 DIV PUSH1 0xFF AND PUSH2 0x16E0 SWAP2 SWAP1 PUSH2 0x4731 JUMP JUMPDEST PUSH0 PUSH2 0x16EC PUSH1 0x1 DUP7 PUSH2 0x471E JUMP JUMPDEST PUSH1 0x20 DUP2 LT PUSH2 0x16FC JUMPI PUSH2 0x16FC PUSH2 0x4662 JUMP JUMPDEST PUSH1 0x20 SWAP2 DUP3 DUP3 DIV ADD SWAP2 SWAP1 MOD PUSH2 0x100 EXP DUP2 SLOAD DUP2 PUSH1 0xFF MUL NOT AND SWAP1 DUP4 PUSH1 0xFF AND MUL OR SWAP1 SSTORE POP PUSH2 0x17F1 JUMP JUMPDEST PUSH2 0x172C DUP7 PUSH1 0x1 PUSH2 0x4649 JUMP JUMPDEST PUSH1 0xFF AND PUSH0 DUP5 PUSH1 0x20 DUP2 LT PUSH2 0x1741 JUMPI PUSH2 0x1741 PUSH2 0x4662 JUMP JUMPDEST PUSH1 0x20 DUP2 DIV SWAP1 SWAP2 ADD SLOAD PUSH1 0xFF PUSH1 0x1F SWAP1 SWAP3 AND PUSH2 0x100 EXP SWAP1 DIV AND SUB PUSH2 0x1765 JUMPI PUSH1 0x1 SWAP2 POP PUSH2 0x17F1 JUMP JUMPDEST PUSH2 0x1770 DUP7 PUSH1 0x1 PUSH2 0x4649 JUMP JUMPDEST PUSH1 0xFF AND PUSH0 DUP5 PUSH1 0x20 DUP2 LT PUSH2 0x1785 JUMPI PUSH2 0x1785 PUSH2 0x4662 JUMP JUMPDEST PUSH1 0x20 DUP2 DIV SWAP1 SWAP2 ADD SLOAD PUSH1 0xFF PUSH1 0x1F SWAP1 SWAP3 AND PUSH2 0x100 EXP SWAP1 DIV AND GT ISZERO PUSH2 0x17F1 JUMPI PUSH1 0x1 PUSH0 DUP5 PUSH1 0x20 DUP2 LT PUSH2 0x17B5 JUMPI PUSH2 0x17B5 PUSH2 0x4662 JUMP JUMPDEST PUSH1 0x20 SWAP2 DUP3 DUP3 DIV ADD SWAP2 SWAP1 MOD DUP3 DUP3 DUP3 SWAP1 SLOAD SWAP1 PUSH2 0x100 EXP SWAP1 DIV PUSH1 0xFF AND PUSH2 0x17D8 SWAP2 SWAP1 PUSH2 0x4731 JUMP JUMPDEST SWAP3 POP PUSH2 0x100 EXP DUP2 SLOAD DUP2 PUSH1 0xFF MUL NOT AND SWAP1 DUP4 PUSH1 0xFF AND MUL OR SWAP1 SSTORE POP JUMPDEST PUSH2 0x17FA DUP4 PUSH2 0x468D JUMP JUMPDEST SWAP3 POP PUSH2 0x1498 JUMP JUMPDEST PUSH0 DUP1 PUSH2 0x180E PUSH1 0x1 DUP7 PUSH2 0x471E JUMP JUMPDEST PUSH1 0x20 DUP2 LT PUSH2 0x181E JUMPI PUSH2 0x181E PUSH2 0x4662 JUMP JUMPDEST PUSH1 0x20 SWAP2 DUP3 DUP3 DIV ADD SWAP2 SWAP1 MOD PUSH2 0x100 EXP DUP2 SLOAD DUP2 PUSH1 0xFF MUL NOT AND SWAP1 DUP4 PUSH1 0xFF AND MUL OR SWAP1 SSTORE POP PUSH0 PUSH1 0x1 DUP1 DUP6 PUSH2 0x184D SWAP2 SWAP1 PUSH2 0x471E JUMP JUMPDEST PUSH1 0x20 DUP2 LT PUSH2 0x185D JUMPI PUSH2 0x185D PUSH2 0x4662 JUMP JUMPDEST PUSH1 0x20 SWAP2 DUP3 DUP3 DIV ADD SWAP2 SWAP1 MOD PUSH2 0x100 EXP DUP2 SLOAD DUP2 PUSH1 0xFF MUL NOT AND SWAP1 DUP4 PUSH1 0xFF AND MUL OR SWAP1 SSTORE POP PUSH2 0x1899 DUP6 DUP6 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH2 0x298B SWAP1 SWAP2 SWAP1 PUSH4 0xFFFFFFFF AND JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH1 0xFF DUP8 AND DUP2 MSTORE PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP6 AND SWAP1 PUSH32 0x978014566E371FEF52158B004E150B6E1FD723F5AA3D8C9AA2A7C98DDB0E65B8 SWAP1 PUSH1 0x20 ADD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 LOG2 POP POP POP POP POP POP JUMP JUMPDEST PUSH0 PUSH2 0x18EB PUSH2 0x2AB0 JUMP JUMPDEST DUP1 SLOAD SWAP1 SWAP2 POP PUSH1 0xFF PUSH1 0x1 PUSH1 0x40 SHL DUP3 DIV AND ISZERO SWAP1 PUSH1 0x1 PUSH1 0x1 PUSH1 0x40 SHL SUB AND PUSH0 DUP2 ISZERO DUP1 ISZERO PUSH2 0x1911 JUMPI POP DUP3 JUMPDEST SWAP1 POP PUSH0 DUP3 PUSH1 0x1 PUSH1 0x1 PUSH1 0x40 SHL SUB AND PUSH1 0x1 EQ DUP1 ISZERO PUSH2 0x192C JUMPI POP ADDRESS EXTCODESIZE ISZERO JUMPDEST SWAP1 POP DUP2 ISZERO DUP1 ISZERO PUSH2 0x193A JUMPI POP DUP1 ISZERO JUMPDEST ISZERO PUSH2 0x1958 JUMPI PUSH1 0x40 MLOAD PUSH4 0xF92EE8A9 PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST DUP5 SLOAD PUSH8 0xFFFFFFFFFFFFFFFF NOT AND PUSH1 0x1 OR DUP6 SSTORE DUP4 ISZERO PUSH2 0x1982 JUMPI DUP5 SLOAD PUSH1 0xFF PUSH1 0x40 SHL NOT AND PUSH1 0x1 PUSH1 0x40 SHL OR DUP6 SSTORE JUMPDEST PUSH2 0x1991 DUP13 DUP13 DUP13 DUP13 DUP13 DUP13 DUP13 PUSH2 0x2AD8 JUMP JUMPDEST DUP4 ISZERO PUSH2 0x19D7 JUMPI DUP5 SLOAD PUSH1 0xFF PUSH1 0x40 SHL NOT AND DUP6 SSTORE PUSH1 0x40 MLOAD PUSH1 0x1 DUP2 MSTORE PUSH32 0xC7F505B2F371AE2175EE4913F4499E1F2633A7B5936321EED1CDAEB6115181D2 SWAP1 PUSH1 0x20 ADD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 LOG1 JUMPDEST POP POP POP POP POP POP POP POP POP POP POP POP JUMP JUMPDEST PUSH0 CALLER PUSH2 0x875 DUP2 DUP6 DUP6 PUSH2 0x21B3 JUMP JUMPDEST PUSH0 PUSH2 0x862 DUP3 PUSH1 0x1 PUSH2 0x20AB JUMP JUMPDEST PUSH0 PUSH0 PUSH2 0x1A09 DUP4 PUSH2 0x1D1B JUMP JUMPDEST SWAP1 POP DUP1 DUP6 GT ISZERO PUSH2 0x1A32 JUMPI DUP3 DUP6 DUP3 PUSH1 0x40 MLOAD PUSH4 0x3FA733BB PUSH1 0xE2 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0xBF7 SWAP4 SWAP3 SWAP2 SWAP1 PUSH2 0x46A5 JUMP JUMPDEST PUSH0 PUSH2 0x1A3C DUP7 PUSH2 0x87F JUMP JUMPDEST SWAP1 POP PUSH2 0x99C CALLER DUP7 DUP7 DUP10 DUP6 PUSH2 0x2B08 JUMP JUMPDEST PUSH0 PUSH0 PUSH2 0x1A56 DUP4 PUSH2 0x1D31 JUMP JUMPDEST SWAP1 POP DUP1 DUP6 GT ISZERO PUSH2 0x1A7F JUMPI DUP3 DUP6 DUP3 PUSH1 0x40 MLOAD PUSH4 0x2E52AFBB PUSH1 0xE2 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0xBF7 SWAP4 SWAP3 SWAP2 SWAP1 PUSH2 0x46A5 JUMP JUMPDEST PUSH0 PUSH2 0x1A89 DUP7 PUSH2 0x857 JUMP JUMPDEST SWAP1 POP PUSH2 0x99C CALLER DUP7 DUP7 DUP5 DUP11 PUSH2 0x2B08 JUMP JUMPDEST PUSH2 0x1AA0 PUSH2 0x3EBC JUMP JUMPDEST DUP2 MLOAD PUSH0 SWAP1 PUSH1 0x20 LT ISZERO PUSH2 0x1AC5 JUMPI PUSH1 0x40 MLOAD PUSH4 0xA29B1F11 PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST DUP3 MLOAD DUP2 PUSH1 0xFF AND LT ISZERO PUSH2 0x1C64 JUMPI PUSH1 0x20 PUSH1 0xFF AND DUP4 DUP3 PUSH1 0xFF AND DUP2 MLOAD DUP2 LT PUSH2 0x1AEB JUMPI PUSH2 0x1AEB PUSH2 0x4662 JUMP JUMPDEST PUSH1 0x20 MUL PUSH1 0x20 ADD ADD MLOAD PUSH1 0xFF AND LT ISZERO DUP1 PUSH2 0x1B47 JUMPI POP PUSH0 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH1 0x2 DUP5 DUP4 PUSH1 0xFF AND DUP2 MLOAD DUP2 LT PUSH2 0x1B1F JUMPI PUSH2 0x1B1F PUSH2 0x4662 JUMP JUMPDEST PUSH1 0x20 MUL PUSH1 0x20 ADD ADD MLOAD PUSH1 0xFF AND PUSH1 0x20 DUP2 LT PUSH2 0x1B3A JUMPI PUSH2 0x1B3A PUSH2 0x4662 JUMP JUMPDEST ADD SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND EQ JUMPDEST ISZERO PUSH2 0x1B65 JUMPI PUSH1 0x40 MLOAD PUSH4 0xA29B1F11 PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST DUP2 DUP4 DUP3 PUSH1 0xFF AND DUP2 MLOAD DUP2 LT PUSH2 0x1B7B JUMPI PUSH2 0x1B7B PUSH2 0x4662 JUMP JUMPDEST PUSH1 0x20 MUL PUSH1 0x20 ADD ADD MLOAD PUSH1 0xFF AND PUSH1 0x20 DUP2 LT PUSH2 0x1B96 JUMPI PUSH2 0x1B96 PUSH2 0x4662 JUMP JUMPDEST PUSH1 0x20 MUL ADD MLOAD ISZERO PUSH2 0x1BB5 JUMPI DUP3 DUP2 PUSH1 0xFF AND DUP2 MLOAD DUP2 LT PUSH2 0x10F0 JUMPI PUSH2 0x10F0 PUSH2 0x4662 JUMP JUMPDEST PUSH1 0x1 DUP3 DUP5 DUP4 PUSH1 0xFF AND DUP2 MLOAD DUP2 LT PUSH2 0x1BCD JUMPI PUSH2 0x1BCD PUSH2 0x4662 JUMP JUMPDEST PUSH1 0x20 MUL PUSH1 0x20 ADD ADD MLOAD PUSH1 0xFF AND PUSH1 0x20 DUP2 LT PUSH2 0x1BE8 JUMPI PUSH2 0x1BE8 PUSH2 0x4662 JUMP JUMPDEST SWAP2 ISZERO ISZERO PUSH1 0x20 SWAP1 SWAP3 MUL ADD MSTORE DUP3 MLOAD DUP4 SWAP1 PUSH1 0xFF DUP4 AND SWAP1 DUP2 LT PUSH2 0x1C09 JUMPI PUSH2 0x1C09 PUSH2 0x4662 JUMP JUMPDEST PUSH1 0x20 MUL PUSH1 0x20 ADD ADD MLOAD PUSH1 0x1 PUSH2 0x1C1D SWAP2 SWAP1 PUSH2 0x4649 JUMP JUMPDEST PUSH1 0x1 DUP3 PUSH1 0xFF AND PUSH1 0x20 DUP2 LT PUSH2 0x1C33 JUMPI PUSH2 0x1C33 PUSH2 0x4662 JUMP JUMPDEST PUSH1 0x20 SWAP2 DUP3 DUP3 DIV ADD SWAP2 SWAP1 MOD PUSH2 0x100 EXP DUP2 SLOAD DUP2 PUSH1 0xFF MUL NOT AND SWAP1 DUP4 PUSH1 0xFF AND MUL OR SWAP1 SSTORE POP DUP1 PUSH2 0x1C5D SWAP1 PUSH2 0x474A JUMP JUMPDEST SWAP1 POP PUSH2 0x1AC5 JUMP JUMPDEST PUSH1 0x20 PUSH1 0xFF DUP3 AND LT DUP1 ISZERO PUSH2 0x1C97 JUMPI POP PUSH0 PUSH1 0x2 PUSH1 0xFF DUP4 AND PUSH1 0x20 DUP2 LT PUSH2 0x1C89 JUMPI PUSH2 0x1C89 PUSH2 0x4662 JUMP JUMPDEST ADD SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND EQ ISZERO JUMPDEST ISZERO PUSH2 0x1CB5 JUMPI PUSH1 0x40 MLOAD PUSH4 0x6712B27B PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH32 0x3C56B6BCA0D55EDA581F8F2819D1F85D3B91CFCC24914A8FA39D301796D8964C DUP4 PUSH1 0x40 MLOAD PUSH2 0x1234 SWAP2 SWAP1 PUSH2 0x46D9 JUMP JUMPDEST PUSH0 PUSH0 PUSH2 0x1CEE PUSH2 0x2380 JUMP JUMPDEST SWAP1 POP PUSH0 NOT DUP2 EQ PUSH2 0x1D07 JUMPI PUSH2 0x1D02 DUP2 PUSH0 PUSH2 0x2114 JUMP JUMPDEST PUSH2 0x8A9 JUMP JUMPDEST PUSH0 NOT SWAP4 SWAP3 POP POP POP JUMP JUMPDEST PUSH0 PUSH2 0x862 DUP3 PUSH0 PUSH2 0x2114 JUMP JUMPDEST PUSH0 PUSH0 PUSH2 0x1D26 DUP4 PUSH2 0x2B1E JUMP JUMPDEST SWAP1 POP PUSH2 0x8A9 DUP2 PUSH2 0x2B2B JUMP JUMPDEST PUSH0 PUSH0 PUSH2 0x1D3C DUP4 PUSH2 0x2BC0 JUMP JUMPDEST SWAP1 POP PUSH0 PUSH2 0x1D49 DUP3 PUSH0 PUSH2 0x20AB JUMP JUMPDEST SWAP1 POP PUSH0 PUSH2 0x1D55 DUP3 PUSH2 0x2B2B JUMP JUMPDEST SWAP1 POP DUP2 DUP2 EQ PUSH2 0x1D6D JUMPI PUSH2 0x1D68 DUP2 PUSH0 PUSH2 0x2114 JUMP JUMPDEST PUSH2 0x99C JUMP JUMPDEST POP SWAP1 SWAP4 SWAP3 POP POP POP JUMP JUMPDEST PUSH2 0x1D7E PUSH2 0x3EBC JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH2 0x400 DUP2 ADD SWAP2 DUP3 SWAP1 MSTORE SWAP1 PUSH1 0x2 SWAP1 PUSH1 0x20 SWAP1 DUP3 DUP5 JUMPDEST DUP2 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP2 MSTORE PUSH1 0x1 SWAP1 SWAP2 ADD SWAP1 PUSH1 0x20 ADD DUP1 DUP4 GT PUSH2 0x1D95 JUMPI POP POP POP POP POP SWAP1 POP SWAP1 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP2 DUP3 AND PUSH0 SWAP1 DUP2 MSTORE PUSH32 0x52C63247E1F47DB19D5CE0460030C497F067CA4CEBF71BA98EEADABE20BACE01 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 PUSH0 PUSH1 0x20 PUSH1 0xFF DUP6 AND LT ISZERO DUP1 PUSH2 0x1E1D JUMPI POP PUSH1 0x20 PUSH1 0xFF DUP5 AND LT ISZERO JUMPDEST ISZERO PUSH2 0x1E3B JUMPI PUSH1 0x40 MLOAD PUSH4 0x2711B74D PUSH1 0xE1 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH0 PUSH1 0x2 DUP6 PUSH1 0xFF AND PUSH1 0x20 DUP2 LT PUSH2 0x1E52 JUMPI PUSH2 0x1E52 PUSH2 0x4662 JUMP JUMPDEST ADD SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND SWAP1 POP PUSH0 PUSH1 0x2 PUSH1 0xFF DUP7 AND PUSH1 0x20 DUP2 LT PUSH2 0x1E76 JUMPI PUSH2 0x1E76 PUSH2 0x4662 JUMP JUMPDEST ADD SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP1 DUP2 AND SWAP2 POP DUP3 AND ISZERO DUP1 PUSH2 0x1E9A JUMPI POP PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 AND ISZERO JUMPDEST ISZERO PUSH2 0x1EB8 JUMPI PUSH1 0x40 MLOAD PUSH4 0x2711B74D PUSH1 0xE1 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH0 NOT DUP5 SUB PUSH2 0x1ED5 JUMPI PUSH2 0x1ED2 DUP3 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH2 0x2922 JUMP JUMPDEST SWAP4 POP JUMPDEST DUP4 PUSH0 SUB PUSH2 0x1EE6 JUMPI PUSH0 SWAP3 POP POP POP PUSH2 0x8A9 JUMP JUMPDEST PUSH2 0x1EF8 DUP3 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH2 0x2BCA JUMP JUMPDEST DUP5 GT ISZERO PUSH2 0x1F2D JUMPI PUSH2 0x1F11 DUP3 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH2 0x2BCA JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH4 0x3CE011D5 PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0xBF7 SWAP2 DUP2 MSTORE PUSH1 0x20 ADD SWAP1 JUMP JUMPDEST PUSH2 0x1F3F DUP2 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH2 0x2BF8 JUMP JUMPDEST DUP5 GT ISZERO PUSH2 0x1F74 JUMPI PUSH2 0x1F58 DUP2 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH2 0x2BF8 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH4 0x50A3E375 PUSH1 0xE1 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0xBF7 SWAP2 DUP2 MSTORE PUSH1 0x20 ADD SWAP1 JUMP JUMPDEST PUSH2 0x1F88 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP4 AND DUP6 PUSH0 PUSH2 0x2C26 JUMP JUMPDEST POP PUSH2 0x1F9D PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP3 AND DUP6 PUSH0 PUSH2 0x2D62 JUMP JUMPDEST POP DUP1 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP3 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH32 0xB0850B8E0F9E8315DDE3C9F9F31138283E6BBE16CD29E8552EB1DCDF9FAC9E3B DUP7 PUSH1 0x40 MLOAD PUSH2 0x1FE3 SWAP2 DUP2 MSTORE PUSH1 0x20 ADD SWAP1 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 LOG3 POP SWAP2 SWAP5 SWAP4 POP POP POP POP JUMP JUMPDEST PUSH2 0x1FFD PUSH2 0x3EBC JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH2 0x400 DUP2 ADD SWAP2 DUP3 SWAP1 MSTORE PUSH0 DUP1 SLOAD PUSH1 0xFF AND DUP3 MSTORE SWAP1 SWAP2 PUSH1 0x20 SWAP1 DUP3 PUSH1 0x1 DUP4 DUP7 ADD DUP1 DUP5 GT PUSH2 0xB70 JUMPI SWAP1 POP POP POP POP POP POP SWAP1 POP SWAP1 JUMP JUMPDEST PUSH0 PUSH0 JUMPDEST PUSH0 PUSH1 0x2 DUP3 PUSH1 0x20 DUP2 LT PUSH2 0x2047 JUMPI PUSH2 0x2047 PUSH2 0x4662 JUMP JUMPDEST ADD SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND EQ DUP1 ISZERO SWAP1 PUSH2 0x2060 JUMPI POP PUSH1 0x20 DUP2 LT JUMPDEST ISZERO PUSH2 0x20A7 JUMPI PUSH2 0x208B PUSH1 0x2 DUP3 PUSH1 0x20 DUP2 LT PUSH2 0x207B JUMPI PUSH2 0x207B PUSH2 0x4662 JUMP JUMPDEST ADD SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH2 0x2922 JUMP JUMPDEST PUSH2 0x2095 SWAP1 DUP4 PUSH2 0x46C6 JUMP JUMPDEST SWAP2 POP PUSH2 0x20A0 DUP2 PUSH2 0x468D JUMP JUMPDEST SWAP1 POP PUSH2 0x2033 JUMP JUMPDEST POP SWAP1 JUMP JUMPDEST PUSH0 PUSH2 0x8A9 PUSH2 0x20B7 PUSH2 0x789 JUMP JUMPDEST PUSH2 0x20C2 SWAP1 PUSH1 0x1 PUSH2 0x46C6 JUMP JUMPDEST PUSH2 0x20CD PUSH0 PUSH1 0xA PUSH2 0x484B JUMP JUMPDEST PUSH32 0x52C63247E1F47DB19D5CE0460030C497F067CA4CEBF71BA98EEADABE20BACE02 SLOAD PUSH2 0x20F9 SWAP2 SWAP1 PUSH2 0x46C6 JUMP JUMPDEST DUP6 SWAP2 SWAP1 DUP6 PUSH2 0x2E83 JUMP JUMPDEST PUSH2 0x210F DUP4 DUP4 DUP4 PUSH1 0x1 PUSH2 0x2EC5 JUMP JUMPDEST POP POP POP JUMP JUMPDEST PUSH0 PUSH2 0x8A9 PUSH2 0x2123 DUP3 PUSH1 0xA PUSH2 0x484B JUMP JUMPDEST PUSH32 0x52C63247E1F47DB19D5CE0460030C497F067CA4CEBF71BA98EEADABE20BACE02 SLOAD PUSH2 0x214F SWAP2 SWAP1 PUSH2 0x46C6 JUMP JUMPDEST PUSH2 0x2157 PUSH2 0x789 JUMP JUMPDEST PUSH2 0x20F9 SWAP1 PUSH1 0x1 PUSH2 0x46C6 JUMP JUMPDEST PUSH0 PUSH2 0x216D DUP5 DUP5 PUSH2 0x1DBC JUMP JUMPDEST SWAP1 POP PUSH0 NOT DUP2 LT ISZERO PUSH2 0x21AD JUMPI DUP2 DUP2 LT ISZERO PUSH2 0x219F JUMPI DUP3 DUP2 DUP4 PUSH1 0x40 MLOAD PUSH4 0x7DC7A0D9 PUSH1 0xE1 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0xBF7 SWAP4 SWAP3 SWAP2 SWAP1 PUSH2 0x46A5 JUMP JUMPDEST PUSH2 0x21AD DUP5 DUP5 DUP5 DUP5 SUB PUSH0 PUSH2 0x2EC5 JUMP JUMPDEST POP POP POP POP JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP4 AND PUSH2 0x21DC JUMPI PUSH1 0x40 MLOAD PUSH4 0x4B637E8F PUSH1 0xE1 SHL DUP2 MSTORE PUSH0 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x24 ADD PUSH2 0xBF7 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP3 AND PUSH2 0x2205 JUMPI PUSH1 0x40 MLOAD PUSH4 0xEC442F05 PUSH1 0xE0 SHL DUP2 MSTORE PUSH0 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x24 ADD PUSH2 0xBF7 JUMP JUMPDEST PUSH2 0x210F DUP4 DUP4 DUP4 PUSH2 0x2FA8 JUMP JUMPDEST PUSH0 ADDRESS PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH4 0x3A7B7A39 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 GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x224D JUMPI RETURNDATASIZE PUSH0 PUSH0 RETURNDATACOPY RETURNDATASIZE PUSH0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP3 ADD DUP1 PUSH1 0x40 MSTORE POP DUP2 ADD SWAP1 PUSH2 0x2271 SWAP2 SWAP1 PUSH2 0x4859 JUMP JUMPDEST SWAP1 POP PUSH0 DUP2 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH4 0xB7009613 CALLER ADDRESS PUSH2 0x228F DUP10 DUP10 PUSH2 0xF84 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH1 0xE0 DUP6 SWAP1 SHL PUSH1 0x1 PUSH1 0x1 PUSH1 0xE0 SHL SUB NOT SWAP1 DUP2 AND DUP3 MSTORE PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP5 DUP6 AND PUSH1 0x4 DUP4 ADD MSTORE SWAP3 SWAP1 SWAP4 AND PUSH1 0x24 DUP5 ADD MSTORE AND PUSH1 0x44 DUP3 ADD MSTORE PUSH1 0x64 ADD PUSH1 0x40 DUP1 MLOAD DUP1 DUP4 SUB DUP2 DUP7 GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x22E1 JUMPI RETURNDATASIZE PUSH0 PUSH0 RETURNDATACOPY RETURNDATASIZE PUSH0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP3 ADD DUP1 PUSH1 0x40 MSTORE POP DUP2 ADD SWAP1 PUSH2 0x2305 SWAP2 SWAP1 PUSH2 0x4874 JUMP JUMPDEST POP SWAP1 POP DUP1 PUSH2 0x2327 JUMPI PUSH1 0x40 MLOAD PUSH3 0xD1953B PUSH1 0xE3 SHL DUP2 MSTORE CALLER PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x24 ADD PUSH2 0xBF7 JUMP JUMPDEST POP POP POP POP POP JUMP JUMPDEST PUSH1 0x60 PUSH2 0xC18 DUP4 DUP4 PUSH1 0x40 MLOAD PUSH1 0x24 ADD PUSH2 0x2346 SWAP3 SWAP2 SWAP1 PUSH2 0x48A9 JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH1 0x1F NOT DUP2 DUP5 SUB ADD DUP2 MSTORE SWAP2 SWAP1 MSTORE PUSH1 0x20 DUP2 ADD DUP1 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xE0 SHL SUB AND PUSH4 0x4C0D8E1 PUSH1 0xE1 SHL OR SWAP1 MSTORE PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP7 AND SWAP1 PUSH2 0x30CE JUMP JUMPDEST PUSH0 PUSH0 PUSH0 JUMPDEST PUSH0 PUSH1 0x2 DUP3 PUSH1 0x20 DUP2 LT PUSH2 0x2398 JUMPI PUSH2 0x2398 PUSH2 0x4662 JUMP JUMPDEST ADD SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND EQ DUP1 ISZERO SWAP1 PUSH2 0x23B1 JUMPI POP PUSH1 0x20 DUP2 LT JUMPDEST ISZERO PUSH2 0x240F JUMPI PUSH2 0x23ED DUP4 PUSH2 0x23E0 PUSH1 0x2 DUP5 PUSH1 0x20 DUP2 LT PUSH2 0x23D0 JUMPI PUSH2 0x23D0 PUSH2 0x4662 JUMP JUMPDEST ADD SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH2 0x2BF8 JUMP JUMPDEST DUP2 ADD SWAP1 DUP2 LT ISZERO SWAP2 SWAP1 DUP3 MUL SWAP1 JUMP JUMPDEST SWAP4 POP SWAP2 POP DUP2 PUSH2 0x23FF JUMPI PUSH0 NOT SWAP3 POP POP POP SWAP1 JUMP JUMPDEST PUSH2 0x2408 DUP2 PUSH2 0x468D JUMP JUMPDEST SWAP1 POP PUSH2 0x2384 JUMP JUMPDEST POP POP SWAP1 JUMP JUMPDEST DUP1 PUSH0 JUMPDEST DUP2 ISZERO DUP1 ISZERO SWAP1 PUSH2 0x244C JUMPI POP PUSH0 DUP2 PUSH1 0x20 DUP2 LT PUSH2 0x2433 JUMPI PUSH2 0x2433 PUSH2 0x4662 JUMP JUMPDEST PUSH1 0x20 DUP2 DIV SWAP1 SWAP2 ADD SLOAD PUSH1 0xFF PUSH1 0x1F SWAP1 SWAP3 AND PUSH2 0x100 EXP SWAP1 DIV AND ISZERO ISZERO JUMPDEST DUP1 ISZERO PUSH2 0x2458 JUMPI POP PUSH1 0x20 DUP2 LT JUMPDEST ISZERO PUSH2 0x250B JUMPI PUSH0 PUSH1 0x2 PUSH1 0x1 PUSH0 DUP5 PUSH1 0x20 DUP2 LT PUSH2 0x2474 JUMPI PUSH2 0x2474 PUSH2 0x4662 JUMP JUMPDEST PUSH1 0x20 SWAP2 DUP3 DUP3 DIV ADD SWAP2 SWAP1 MOD SWAP1 SLOAD SWAP1 PUSH2 0x100 EXP SWAP1 DIV PUSH1 0xFF AND PUSH2 0x2494 SWAP2 SWAP1 PUSH2 0x4731 JUMP JUMPDEST PUSH1 0xFF AND PUSH1 0x20 DUP2 LT PUSH2 0x24A7 JUMPI PUSH2 0x24A7 PUSH2 0x4662 JUMP JUMPDEST ADD SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND SWAP1 POP PUSH0 PUSH2 0x24C7 DUP5 PUSH2 0x24C2 DUP5 PUSH2 0x2BF8 JUMP JUMPDEST PUSH2 0x316E JUMP JUMPDEST SWAP1 POP DUP1 PUSH0 SUB PUSH2 0x24D7 JUMPI POP POP PUSH2 0x24FB JUMP JUMPDEST PUSH2 0x24EB PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP4 AND DUP3 PUSH0 PUSH2 0x2D62 JUMP JUMPDEST POP PUSH2 0x24F6 DUP2 DUP6 PUSH2 0x471E JUMP JUMPDEST SWAP4 POP POP POP JUMPDEST PUSH2 0x2504 DUP2 PUSH2 0x468D JUMP JUMPDEST SWAP1 POP PUSH2 0x2417 JUMP JUMPDEST POP DUP1 ISZERO PUSH2 0xB4C JUMPI PUSH1 0x40 MLOAD PUSH4 0x285A546D PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST ADDRESS PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB PUSH32 0x0 AND EQ DUP1 PUSH2 0x25B1 JUMPI POP PUSH32 0x0 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH2 0x25A5 PUSH0 MLOAD PUSH1 0x20 PUSH2 0x4A4E PUSH0 CODECOPY PUSH0 MLOAD SWAP1 PUSH0 MSTORE SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND SWAP1 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND EQ ISZERO JUMPDEST ISZERO PUSH2 0x25CF JUMPI PUSH1 0x40 MLOAD PUSH4 0x703E46DD PUSH1 0xE1 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST JUMP JUMPDEST DUP2 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH4 0x52D1902D 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 GAS STATICCALL SWAP3 POP POP POP DUP1 ISZERO PUSH2 0x262B JUMPI POP PUSH1 0x40 DUP1 MLOAD PUSH1 0x1F RETURNDATASIZE SWAP1 DUP2 ADD PUSH1 0x1F NOT AND DUP3 ADD SWAP1 SWAP3 MSTORE PUSH2 0x2628 SWAP2 DUP2 ADD SWAP1 PUSH2 0x4676 JUMP JUMPDEST PUSH1 0x1 JUMPDEST PUSH2 0x2653 JUMPI PUSH1 0x40 MLOAD PUSH4 0x4C9C8CE3 PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP4 AND PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x24 ADD PUSH2 0xBF7 JUMP JUMPDEST PUSH0 MLOAD PUSH1 0x20 PUSH2 0x4A4E PUSH0 CODECOPY PUSH0 MLOAD SWAP1 PUSH0 MSTORE DUP2 EQ PUSH2 0x2683 JUMPI PUSH1 0x40 MLOAD PUSH4 0x2A875269 PUSH1 0xE2 SHL DUP2 MSTORE PUSH1 0x4 DUP2 ADD DUP3 SWAP1 MSTORE PUSH1 0x24 ADD PUSH2 0xBF7 JUMP JUMPDEST PUSH2 0x210F DUP4 DUP4 PUSH2 0x317D JUMP JUMPDEST ADDRESS PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB PUSH32 0x0 AND EQ PUSH2 0x25CF JUMPI PUSH1 0x40 MLOAD PUSH4 0x703E46DD PUSH1 0xE1 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH2 0x26E2 DUP5 DUP5 DUP5 DUP5 PUSH2 0x31D2 JUMP JUMPDEST PUSH2 0x21AD DUP3 PUSH2 0x2414 JUMP JUMPDEST PUSH0 PUSH2 0x792 PUSH2 0x8F2 JUMP JUMPDEST PUSH2 0x26FE DUP5 DUP4 PUSH2 0x2842 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH4 0xF3E0FFBF PUSH1 0xE0 SHL DUP2 MSTORE ADDRESS PUSH1 0x4 DUP3 ADD MSTORE PUSH2 0x2770 SWAP1 DUP7 SWAP1 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP3 AND SWAP1 PUSH4 0xF3E0FFBF SWAP1 PUSH1 0x24 ADD PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x2746 JUMPI RETURNDATASIZE PUSH0 PUSH0 RETURNDATACOPY RETURNDATASIZE PUSH0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP3 ADD DUP1 PUSH1 0x40 MSTORE POP DUP2 ADD SWAP1 PUSH2 0x276A SWAP2 SWAP1 PUSH2 0x4676 JUMP JUMPDEST DUP4 PUSH2 0x2C26 JUMP JUMPDEST POP PUSH2 0x277B DUP6 DUP3 PUSH2 0x298B JUMP JUMPDEST PUSH2 0x2785 DUP5 DUP5 PUSH2 0x28D4 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH4 0x70A08231 PUSH1 0xE0 SHL DUP2 MSTORE ADDRESS PUSH1 0x4 DUP3 ADD MSTORE PUSH2 0x27F7 SWAP1 DUP6 SWAP1 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP6 AND SWAP1 PUSH4 0x70A08231 SWAP1 PUSH1 0x24 ADD PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x27CD JUMPI RETURNDATASIZE PUSH0 PUSH0 RETURNDATACOPY RETURNDATASIZE PUSH0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP3 ADD DUP1 PUSH1 0x40 MSTORE POP DUP2 ADD SWAP1 PUSH2 0x27F1 SWAP2 SWAP1 PUSH2 0x4676 JUMP JUMPDEST DUP4 PUSH2 0x2D62 JUMP JUMPDEST POP PUSH1 0x40 DUP1 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP1 DUP9 AND DUP3 MSTORE DUP7 AND PUSH1 0x20 DUP3 ADD MSTORE PUSH32 0x254C88E7A2EA123AEEB89B7CC413FB949188FEFCDB7584C4F3D493294DAF65C5 SWAP2 ADD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 LOG1 POP POP POP POP POP JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH4 0x4E2333D1 PUSH1 0xE1 SHL DUP2 MSTORE ADDRESS PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP1 DUP4 AND SWAP2 SWAP1 DUP5 AND SWAP1 PUSH4 0x9C4667A2 SWAP1 PUSH1 0x24 ADD PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x2889 JUMPI RETURNDATASIZE PUSH0 PUSH0 RETURNDATACOPY RETURNDATASIZE PUSH0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP3 ADD DUP1 PUSH1 0x40 MSTORE POP DUP2 ADD SWAP1 PUSH2 0x28AD SWAP2 SWAP1 PUSH2 0x4859 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND EQ PUSH2 0xB4C JUMPI PUSH1 0x40 MLOAD PUSH4 0xE76673EF PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH2 0x210F DUP2 PUSH1 0x40 MLOAD PUSH1 0x24 ADD PUSH2 0x28E8 SWAP2 SWAP1 PUSH2 0x3F09 JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH1 0x1F NOT DUP2 DUP5 SUB ADD DUP2 MSTORE SWAP2 SWAP1 MSTORE PUSH1 0x20 DUP2 ADD DUP1 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xE0 SHL SUB AND PUSH4 0x139A8E25 PUSH1 0xE3 SHL OR SWAP1 MSTORE PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP5 AND SWAP1 PUSH2 0x30CE JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH4 0xF3E0FFBF PUSH1 0xE0 SHL DUP2 MSTORE ADDRESS PUSH1 0x4 DUP3 ADD MSTORE PUSH0 SWAP1 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP4 AND SWAP1 PUSH4 0xF3E0FFBF SWAP1 PUSH1 0x24 ADD JUMPDEST PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x2967 JUMPI RETURNDATASIZE PUSH0 PUSH0 RETURNDATACOPY RETURNDATASIZE PUSH0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP3 ADD DUP1 PUSH1 0x40 MSTORE POP DUP2 ADD SWAP1 PUSH2 0x862 SWAP2 SWAP1 PUSH2 0x4676 JUMP JUMPDEST DUP1 ISZERO PUSH2 0x2A66 JUMPI PUSH1 0x40 MLOAD PUSH1 0x1 PUSH1 0x24 DUP3 ADD MSTORE PUSH0 SWAP1 DUP2 SWAP1 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP6 AND SWAP1 PUSH1 0x44 ADD PUSH1 0x40 DUP1 MLOAD PUSH1 0x1F NOT DUP2 DUP5 SUB ADD DUP2 MSTORE SWAP2 DUP2 MSTORE PUSH1 0x20 DUP3 ADD DUP1 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xE0 SHL SUB AND PUSH4 0x2D08BA2B PUSH1 0xE1 SHL OR SWAP1 MSTORE MLOAD PUSH2 0x29E2 SWAP2 SWAP1 PUSH2 0x48C4 JUMP JUMPDEST PUSH0 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP6 GAS DELEGATECALL SWAP2 POP POP RETURNDATASIZE DUP1 PUSH0 DUP2 EQ PUSH2 0x2A1A JUMPI PUSH1 0x40 MLOAD SWAP2 POP PUSH1 0x1F NOT PUSH1 0x3F RETURNDATASIZE ADD AND DUP3 ADD PUSH1 0x40 MSTORE RETURNDATASIZE DUP3 MSTORE RETURNDATASIZE PUSH0 PUSH1 0x20 DUP5 ADD RETURNDATACOPY PUSH2 0x2A1F JUMP JUMPDEST PUSH1 0x60 SWAP2 POP JUMPDEST POP SWAP2 POP SWAP2 POP DUP2 PUSH2 0x21AD JUMPI PUSH32 0x9F864ACE9F45C2734F9444CB9A0C1ADE6F1B15A8C202C17175B759728A4A0BF8 DUP2 PUSH1 0x40 MLOAD PUSH2 0x2A58 SWAP2 SWAP1 PUSH2 0x3F09 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 LOG1 POP POP POP POP JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH0 PUSH1 0x24 DUP3 ADD MSTORE PUSH2 0x210F SWAP1 PUSH1 0x44 ADD PUSH1 0x40 DUP1 MLOAD PUSH1 0x1F NOT DUP2 DUP5 SUB ADD DUP2 MSTORE SWAP2 SWAP1 MSTORE PUSH1 0x20 DUP2 ADD DUP1 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xE0 SHL SUB AND PUSH4 0x2D08BA2B PUSH1 0xE1 SHL OR SWAP1 MSTORE PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP5 AND SWAP1 PUSH2 0x30CE JUMP JUMPDEST PUSH0 DUP1 PUSH32 0xF0C57E16840DF040F15088DC2F81FE391C3923BEC73E23A9662EFC9C229C6A00 PUSH2 0x862 JUMP JUMPDEST PUSH2 0x2AE0 PUSH2 0x323D JUMP JUMPDEST PUSH2 0x2AE9 DUP6 PUSH2 0x3262 JUMP JUMPDEST PUSH2 0x2AF3 DUP8 DUP8 PUSH2 0x3273 JUMP JUMPDEST PUSH2 0x2AFF DUP5 DUP5 DUP5 DUP5 PUSH2 0x3285 JUMP JUMPDEST POP POP POP POP POP POP POP JUMP JUMPDEST PUSH2 0x2B11 DUP3 PUSH2 0x3806 JUMP JUMPDEST PUSH2 0x2327 DUP6 DUP6 DUP6 DUP6 DUP6 PUSH2 0x3919 JUMP JUMPDEST PUSH0 PUSH2 0x862 PUSH2 0x2BA DUP4 PUSH2 0x1D31 JUMP JUMPDEST PUSH0 PUSH0 PUSH0 JUMPDEST PUSH0 PUSH1 0x2 DUP3 PUSH1 0x20 DUP2 LT PUSH2 0x2B43 JUMPI PUSH2 0x2B43 PUSH2 0x4662 JUMP JUMPDEST ADD SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND EQ DUP1 ISZERO SWAP1 PUSH2 0x2B5C JUMPI POP PUSH1 0x20 DUP2 LT JUMPDEST ISZERO PUSH2 0x2BB9 JUMPI PUSH2 0x2B8B DUP4 PUSH2 0x23E0 PUSH1 0x2 DUP5 PUSH1 0x20 DUP2 LT PUSH2 0x2B7B JUMPI PUSH2 0x2B7B PUSH2 0x4662 JUMP JUMPDEST ADD SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH2 0x2BCA JUMP JUMPDEST SWAP4 POP SWAP2 POP DUP2 ISZERO DUP1 PUSH2 0x2B9C JUMPI POP DUP4 DUP4 LT ISZERO JUMPDEST ISZERO PUSH2 0x2BA9 JUMPI POP SWAP2 SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH2 0x2BB2 DUP2 PUSH2 0x468D JUMP JUMPDEST SWAP1 POP PUSH2 0x2B2F JUMP JUMPDEST POP POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH0 PUSH2 0x862 DUP3 PUSH2 0xC20 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH4 0xCE96CB77 PUSH1 0xE0 SHL DUP2 MSTORE ADDRESS PUSH1 0x4 DUP3 ADD MSTORE PUSH0 SWAP1 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP4 AND SWAP1 PUSH4 0xCE96CB77 SWAP1 PUSH1 0x24 ADD PUSH2 0x294C JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH4 0x402D267D PUSH1 0xE0 SHL DUP2 MSTORE ADDRESS PUSH1 0x4 DUP3 ADD MSTORE PUSH0 SWAP1 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP4 AND SWAP1 PUSH4 0x402D267D SWAP1 PUSH1 0x24 ADD PUSH2 0x294C JUMP JUMPDEST PUSH0 DUP2 ISZERO PUSH2 0x2D08 JUMPI PUSH0 PUSH0 DUP6 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP6 PUSH1 0x40 MLOAD PUSH1 0x24 ADD PUSH2 0x2C4C SWAP2 DUP2 MSTORE PUSH1 0x20 ADD SWAP1 JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH1 0x1F NOT DUP2 DUP5 SUB ADD DUP2 MSTORE SWAP2 DUP2 MSTORE PUSH1 0x20 DUP3 ADD DUP1 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xE0 SHL SUB AND PUSH4 0x2E1A7D4D PUSH1 0xE0 SHL OR SWAP1 MSTORE MLOAD PUSH2 0x2C81 SWAP2 SWAP1 PUSH2 0x48C4 JUMP JUMPDEST PUSH0 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP6 GAS DELEGATECALL SWAP2 POP POP RETURNDATASIZE DUP1 PUSH0 DUP2 EQ PUSH2 0x2CB9 JUMPI PUSH1 0x40 MLOAD SWAP2 POP PUSH1 0x1F NOT PUSH1 0x3F RETURNDATASIZE ADD AND DUP3 ADD PUSH1 0x40 MSTORE RETURNDATASIZE DUP3 MSTORE RETURNDATASIZE PUSH0 PUSH1 0x20 DUP5 ADD RETURNDATACOPY PUSH2 0x2CBE JUMP JUMPDEST PUSH1 0x60 SWAP2 POP JUMPDEST POP SWAP2 POP SWAP2 POP DUP2 PUSH2 0x2D00 JUMPI PUSH32 0xAD0AD28A12A6ED800F1A7B398454913AFE6826C175E6CC28F2E8E2C175B0D728 DUP2 PUSH1 0x40 MLOAD PUSH2 0x2CF7 SWAP2 SWAP1 PUSH2 0x3F09 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 LOG1 JUMPDEST POP SWAP1 POP PUSH2 0x8A9 JUMP JUMPDEST PUSH2 0x2D58 DUP4 PUSH1 0x40 MLOAD PUSH1 0x24 ADD PUSH2 0x2D1E SWAP2 DUP2 MSTORE PUSH1 0x20 ADD SWAP1 JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH1 0x1F NOT DUP2 DUP5 SUB ADD DUP2 MSTORE SWAP2 SWAP1 MSTORE PUSH1 0x20 DUP2 ADD DUP1 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xE0 SHL SUB AND PUSH4 0x2E1A7D4D PUSH1 0xE0 SHL OR SWAP1 MSTORE PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP7 AND SWAP1 PUSH2 0x30CE JUMP JUMPDEST POP PUSH1 0x1 SWAP1 POP PUSH2 0x8A9 JUMP JUMPDEST PUSH0 DUP2 ISZERO PUSH2 0x2E33 JUMPI PUSH0 PUSH0 DUP6 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP6 PUSH1 0x40 MLOAD PUSH1 0x24 ADD PUSH2 0x2D88 SWAP2 DUP2 MSTORE PUSH1 0x20 ADD SWAP1 JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH1 0x1F NOT DUP2 DUP5 SUB ADD DUP2 MSTORE SWAP2 DUP2 MSTORE PUSH1 0x20 DUP3 ADD DUP1 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xE0 SHL SUB AND PUSH4 0xB6B55F25 PUSH1 0xE0 SHL OR SWAP1 MSTORE MLOAD PUSH2 0x2DBD SWAP2 SWAP1 PUSH2 0x48C4 JUMP JUMPDEST PUSH0 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP6 GAS DELEGATECALL SWAP2 POP POP RETURNDATASIZE DUP1 PUSH0 DUP2 EQ PUSH2 0x2DF5 JUMPI PUSH1 0x40 MLOAD SWAP2 POP PUSH1 0x1F NOT PUSH1 0x3F RETURNDATASIZE ADD AND DUP3 ADD PUSH1 0x40 MSTORE RETURNDATASIZE DUP3 MSTORE RETURNDATASIZE PUSH0 PUSH1 0x20 DUP5 ADD RETURNDATACOPY PUSH2 0x2DFA JUMP JUMPDEST PUSH1 0x60 SWAP2 POP JUMPDEST POP SWAP2 POP SWAP2 POP DUP2 PUSH2 0x2D00 JUMPI PUSH32 0xF8E68F23D3B33772E986CC9861E94E8FD6B9461D62BC1FB21CD754BBAF726BD3 DUP2 PUSH1 0x40 MLOAD PUSH2 0x2CF7 SWAP2 SWAP1 PUSH2 0x3F09 JUMP JUMPDEST PUSH2 0x2D58 DUP4 PUSH1 0x40 MLOAD PUSH1 0x24 ADD PUSH2 0x2E49 SWAP2 DUP2 MSTORE PUSH1 0x20 ADD SWAP1 JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH1 0x1F NOT DUP2 DUP5 SUB ADD DUP2 MSTORE SWAP2 SWAP1 MSTORE PUSH1 0x20 DUP2 ADD DUP1 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xE0 SHL SUB AND PUSH4 0xB6B55F25 PUSH1 0xE0 SHL OR SWAP1 MSTORE PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP7 AND SWAP1 PUSH2 0x30CE JUMP JUMPDEST PUSH0 PUSH2 0x2EB0 PUSH2 0x2E90 DUP4 PUSH2 0x39C0 JUMP JUMPDEST DUP1 ISZERO PUSH2 0x2EAB JUMPI POP PUSH0 DUP5 DUP1 PUSH2 0x2EA6 JUMPI PUSH2 0x2EA6 PUSH2 0x48DA JUMP JUMPDEST DUP7 DUP9 MULMOD GT JUMPDEST ISZERO ISZERO SWAP1 JUMP JUMPDEST PUSH2 0x2EBB DUP7 DUP7 DUP7 PUSH2 0x39EC JUMP JUMPDEST PUSH2 0x99C SWAP2 SWAP1 PUSH2 0x46C6 JUMP JUMPDEST PUSH0 MLOAD PUSH1 0x20 PUSH2 0x4A2E PUSH0 CODECOPY PUSH0 MLOAD SWAP1 PUSH0 MSTORE PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP6 AND PUSH2 0x2EFC JUMPI PUSH1 0x40 MLOAD PUSH4 0xE602DF05 PUSH1 0xE0 SHL DUP2 MSTORE PUSH0 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x24 ADD PUSH2 0xBF7 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP5 AND PUSH2 0x2F25 JUMPI PUSH1 0x40 MLOAD PUSH4 0x4A1406B1 PUSH1 0xE1 SHL DUP2 MSTORE PUSH0 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x24 ADD PUSH2 0xBF7 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP1 DUP7 AND PUSH0 SWAP1 DUP2 MSTORE PUSH1 0x1 DUP4 ADD PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x40 DUP1 DUP4 KECCAK256 SWAP4 DUP9 AND DUP4 MSTORE SWAP3 SWAP1 MSTORE KECCAK256 DUP4 SWAP1 SSTORE DUP2 ISZERO PUSH2 0x2327 JUMPI DUP4 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP6 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH32 0x8C5BE1E5EBEC7D5BD14F71427D1E84F3DD0314C0F7B2291E5B200AC8C7C3B925 DUP6 PUSH1 0x40 MLOAD PUSH2 0x2F99 SWAP2 DUP2 MSTORE PUSH1 0x20 ADD SWAP1 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 LOG3 POP POP POP POP POP JUMP JUMPDEST PUSH0 MLOAD PUSH1 0x20 PUSH2 0x4A2E PUSH0 CODECOPY PUSH0 MLOAD SWAP1 PUSH0 MSTORE PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP5 AND PUSH2 0x2FE2 JUMPI DUP2 DUP2 PUSH1 0x2 ADD PUSH0 DUP3 DUP3 SLOAD PUSH2 0x2FD7 SWAP2 SWAP1 PUSH2 0x46C6 JUMP JUMPDEST SWAP1 SWAP2 SSTORE POP PUSH2 0x303F SWAP1 POP JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP5 AND PUSH0 SWAP1 DUP2 MSTORE PUSH1 0x20 DUP3 SWAP1 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD DUP3 DUP2 LT ISZERO PUSH2 0x3021 JUMPI DUP5 DUP2 DUP5 PUSH1 0x40 MLOAD PUSH4 0x391434E3 PUSH1 0xE2 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0xBF7 SWAP4 SWAP3 SWAP2 SWAP1 PUSH2 0x46A5 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP6 AND PUSH0 SWAP1 DUP2 MSTORE PUSH1 0x20 DUP4 SWAP1 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SWAP1 DUP4 SWAP1 SUB SWAP1 SSTORE JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP4 AND PUSH2 0x305D JUMPI PUSH1 0x2 DUP2 ADD DUP1 SLOAD DUP4 SWAP1 SUB SWAP1 SSTORE PUSH2 0x307B JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP4 AND PUSH0 SWAP1 DUP2 MSTORE PUSH1 0x20 DUP3 SWAP1 MSTORE PUSH1 0x40 SWAP1 KECCAK256 DUP1 SLOAD DUP4 ADD SWAP1 SSTORE JUMPDEST DUP3 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP5 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH32 0xDDF252AD1BE2C89B69C2B068FC378DAA952BA7F163C4A11628F55A4DF523B3EF DUP5 PUSH1 0x40 MLOAD PUSH2 0x30C0 SWAP2 DUP2 MSTORE PUSH1 0x20 ADD SWAP1 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 LOG3 POP POP POP POP JUMP JUMPDEST PUSH1 0x60 PUSH0 PUSH2 0x30DB DUP5 DUP5 PUSH2 0x3A9C JUMP JUMPDEST SWAP1 POP DUP1 DUP1 ISZERO PUSH2 0x30FC JUMPI POP PUSH0 RETURNDATASIZE GT DUP1 PUSH2 0x30FC JUMPI POP PUSH0 DUP5 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND EXTCODESIZE GT JUMPDEST ISZERO PUSH2 0x3111 JUMPI PUSH2 0x3109 PUSH2 0x3AAF JUMP JUMPDEST SWAP2 POP POP PUSH2 0x862 JUMP JUMPDEST DUP1 ISZERO PUSH2 0x313B JUMPI PUSH1 0x40 MLOAD PUSH4 0x9996B315 PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP6 AND PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x24 ADD PUSH2 0xBF7 JUMP JUMPDEST RETURNDATASIZE ISZERO PUSH2 0x314E JUMPI PUSH2 0x3149 PUSH2 0x3AC8 JUMP JUMPDEST PUSH2 0x3167 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH4 0xD6BDA275 PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH0 DUP3 DUP3 XOR DUP3 DUP5 LT MUL DUP3 XOR PUSH2 0x8A9 JUMP JUMPDEST PUSH2 0x3186 DUP3 PUSH2 0x3AD3 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP4 AND SWAP1 PUSH32 0xBC7CD75A20EE27FD9ADEBAB32041F755214DBC6BFFA90CC0225B39DA2E5C2D3B SWAP1 PUSH0 SWAP1 LOG2 DUP1 MLOAD ISZERO PUSH2 0x31CA JUMPI PUSH2 0x210F DUP3 DUP3 PUSH2 0x30CE JUMP JUMPDEST PUSH2 0xB4C PUSH2 0x3B36 JUMP JUMPDEST PUSH2 0x31E5 PUSH2 0x31DD PUSH2 0x8F2 JUMP JUMPDEST DUP6 ADDRESS DUP6 PUSH2 0x3B55 JUMP JUMPDEST PUSH2 0x31EF DUP4 DUP3 PUSH2 0x3B8B JUMP JUMPDEST DUP3 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP5 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH32 0xDCBC1C05240F31FF3AD067EF1EE35CE4997762752E3A095284754544F4C709D7 DUP5 DUP5 PUSH1 0x40 MLOAD PUSH2 0x30C0 SWAP3 SWAP2 SWAP1 SWAP2 DUP3 MSTORE PUSH1 0x20 DUP3 ADD MSTORE PUSH1 0x40 ADD SWAP1 JUMP JUMPDEST PUSH2 0x3245 PUSH2 0x3BBF JUMP JUMPDEST PUSH2 0x25CF JUMPI PUSH1 0x40 MLOAD PUSH4 0x1AFCD79F PUSH1 0xE3 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH2 0x326A PUSH2 0x323D JUMP JUMPDEST PUSH2 0x9B7 DUP2 PUSH2 0x3BD8 JUMP JUMPDEST PUSH2 0x327B PUSH2 0x323D JUMP JUMPDEST PUSH2 0xB4C DUP3 DUP3 PUSH2 0x3C5B JUMP JUMPDEST DUP4 MLOAD ISZERO DUP1 PUSH2 0x3294 JUMPI POP DUP4 MLOAD PUSH1 0x20 LT JUMPDEST DUP1 PUSH2 0x32A1 JUMPI POP DUP3 MLOAD DUP5 MLOAD EQ ISZERO JUMPDEST DUP1 PUSH2 0x32AE JUMPI POP DUP2 MLOAD DUP5 MLOAD EQ ISZERO JUMPDEST DUP1 PUSH2 0x32BB JUMPI POP DUP1 MLOAD DUP5 MLOAD EQ ISZERO JUMPDEST ISZERO PUSH2 0x32DC JUMPI PUSH1 0x40 MLOAD PUSH1 0x1 PUSH3 0xAD1FAB PUSH1 0xE0 SHL SUB NOT DUP2 MSTORE PUSH1 0x4 ADD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH2 0x32E4 PUSH2 0x3EBC JUMP JUMPDEST PUSH2 0x32EC PUSH2 0x3EBC JUMP JUMPDEST PUSH0 JUMPDEST DUP7 MLOAD DUP2 LT ISZERO PUSH2 0x378F JUMPI PUSH0 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP8 DUP3 DUP2 MLOAD DUP2 LT PUSH2 0x3313 JUMPI PUSH2 0x3313 PUSH2 0x4662 JUMP JUMPDEST PUSH1 0x20 MUL PUSH1 0x20 ADD ADD MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND SUB PUSH2 0x3342 JUMPI PUSH1 0x40 MLOAD PUSH4 0x2711B74D PUSH1 0xE1 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH2 0x337E PUSH2 0x334D PUSH2 0x26EB JUMP JUMPDEST DUP9 DUP4 DUP2 MLOAD DUP2 LT PUSH2 0x335F JUMPI PUSH2 0x335F PUSH2 0x4662 JUMP JUMPDEST PUSH1 0x20 MUL PUSH1 0x20 ADD ADD MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH2 0x2842 SWAP1 SWAP2 SWAP1 PUSH4 0xFFFFFFFF AND JUMP JUMPDEST PUSH0 JUMPDEST DUP2 DUP2 LT ISZERO PUSH2 0x341E JUMPI DUP8 DUP2 DUP2 MLOAD DUP2 LT PUSH2 0x339A JUMPI PUSH2 0x339A PUSH2 0x4662 JUMP JUMPDEST PUSH1 0x20 MUL PUSH1 0x20 ADD ADD MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP9 DUP4 DUP2 MLOAD DUP2 LT PUSH2 0x33BD JUMPI PUSH2 0x33BD PUSH2 0x4662 JUMP JUMPDEST PUSH1 0x20 MUL PUSH1 0x20 ADD ADD MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND SUB PUSH2 0x3416 JUMPI DUP8 DUP3 DUP2 MLOAD DUP2 LT PUSH2 0x33E5 JUMPI PUSH2 0x33E5 PUSH2 0x4662 JUMP JUMPDEST PUSH1 0x20 MUL PUSH1 0x20 ADD ADD MLOAD PUSH1 0x40 MLOAD PUSH4 0xB5A9314F PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0xBF7 SWAP2 SWAP1 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP2 SWAP1 SWAP2 AND DUP2 MSTORE PUSH1 0x20 ADD SWAP1 JUMP JUMPDEST PUSH1 0x1 ADD PUSH2 0x3380 JUMP JUMPDEST POP DUP7 MLOAD DUP6 DUP3 DUP2 MLOAD DUP2 LT PUSH2 0x3433 JUMPI PUSH2 0x3433 PUSH2 0x4662 JUMP JUMPDEST PUSH1 0x20 MUL PUSH1 0x20 ADD ADD MLOAD PUSH1 0xFF AND LT ISZERO DUP1 PUSH2 0x347A JUMPI POP DUP3 DUP6 DUP3 DUP2 MLOAD DUP2 LT PUSH2 0x3459 JUMPI PUSH2 0x3459 PUSH2 0x4662 JUMP JUMPDEST PUSH1 0x20 MUL PUSH1 0x20 ADD ADD MLOAD PUSH1 0xFF AND PUSH1 0x20 DUP2 LT PUSH2 0x3474 JUMPI PUSH2 0x3474 PUSH2 0x4662 JUMP JUMPDEST PUSH1 0x20 MUL ADD MLOAD JUMPDEST ISZERO PUSH2 0x34BC JUMPI DUP5 DUP2 DUP2 MLOAD DUP2 LT PUSH2 0x3491 JUMPI PUSH2 0x3491 PUSH2 0x4662 JUMP JUMPDEST PUSH1 0x20 MUL PUSH1 0x20 ADD ADD MLOAD PUSH1 0x40 MLOAD PUSH4 0x306CCD5D PUSH1 0xE1 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0xBF7 SWAP2 SWAP1 PUSH1 0xFF SWAP2 SWAP1 SWAP2 AND DUP2 MSTORE PUSH1 0x20 ADD SWAP1 JUMP JUMPDEST DUP7 MLOAD DUP5 DUP3 DUP2 MLOAD DUP2 LT PUSH2 0x34D0 JUMPI PUSH2 0x34D0 PUSH2 0x4662 JUMP JUMPDEST PUSH1 0x20 MUL PUSH1 0x20 ADD ADD MLOAD PUSH1 0xFF AND LT ISZERO DUP1 PUSH2 0x3517 JUMPI POP DUP2 DUP5 DUP3 DUP2 MLOAD DUP2 LT PUSH2 0x34F6 JUMPI PUSH2 0x34F6 PUSH2 0x4662 JUMP JUMPDEST PUSH1 0x20 MUL PUSH1 0x20 ADD ADD MLOAD PUSH1 0xFF AND PUSH1 0x20 DUP2 LT PUSH2 0x3511 JUMPI PUSH2 0x3511 PUSH2 0x4662 JUMP JUMPDEST PUSH1 0x20 MUL ADD MLOAD JUMPDEST ISZERO PUSH2 0x3559 JUMPI DUP4 DUP2 DUP2 MLOAD DUP2 LT PUSH2 0x352E JUMPI PUSH2 0x352E PUSH2 0x4662 JUMP JUMPDEST PUSH1 0x20 MUL PUSH1 0x20 ADD ADD MLOAD PUSH1 0x40 MLOAD PUSH4 0x27769241 PUSH1 0xE1 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0xBF7 SWAP2 SWAP1 PUSH1 0xFF SWAP2 SWAP1 SWAP2 AND DUP2 MSTORE PUSH1 0x20 ADD SWAP1 JUMP JUMPDEST PUSH1 0x1 DUP4 DUP7 DUP4 DUP2 MLOAD DUP2 LT PUSH2 0x356E JUMPI PUSH2 0x356E PUSH2 0x4662 JUMP JUMPDEST PUSH1 0x20 MUL PUSH1 0x20 ADD ADD MLOAD PUSH1 0xFF AND PUSH1 0x20 DUP2 LT PUSH2 0x3589 JUMPI PUSH2 0x3589 PUSH2 0x4662 JUMP JUMPDEST PUSH1 0x20 MUL ADD SWAP1 ISZERO ISZERO SWAP1 DUP2 ISZERO ISZERO DUP2 MSTORE POP POP PUSH1 0x1 DUP3 DUP6 DUP4 DUP2 MLOAD DUP2 LT PUSH2 0x35AD JUMPI PUSH2 0x35AD PUSH2 0x4662 JUMP JUMPDEST PUSH1 0x20 MUL PUSH1 0x20 ADD ADD MLOAD PUSH1 0xFF AND PUSH1 0x20 DUP2 LT PUSH2 0x35C8 JUMPI PUSH2 0x35C8 PUSH2 0x4662 JUMP JUMPDEST SWAP2 ISZERO ISZERO PUSH1 0x20 SWAP1 SWAP3 MUL ADD MSTORE DUP7 MLOAD DUP8 SWAP1 DUP3 SWAP1 DUP2 LT PUSH2 0x35E6 JUMPI PUSH2 0x35E6 PUSH2 0x4662 JUMP JUMPDEST PUSH1 0x20 MUL PUSH1 0x20 ADD ADD MLOAD PUSH1 0x2 DUP3 PUSH1 0x20 DUP2 LT PUSH2 0x3601 JUMPI PUSH2 0x3601 PUSH2 0x4662 JUMP JUMPDEST ADD PUSH0 PUSH2 0x100 EXP DUP2 SLOAD DUP2 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB MUL NOT AND SWAP1 DUP4 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND MUL OR SWAP1 SSTORE POP DUP5 DUP2 DUP2 MLOAD DUP2 LT PUSH2 0x3637 JUMPI PUSH2 0x3637 PUSH2 0x4662 JUMP JUMPDEST PUSH1 0x20 MUL PUSH1 0x20 ADD ADD MLOAD PUSH1 0x1 PUSH2 0x364B SWAP2 SWAP1 PUSH2 0x4649 JUMP JUMPDEST PUSH0 DUP3 PUSH1 0x20 DUP2 LT PUSH2 0x365D JUMPI PUSH2 0x365D PUSH2 0x4662 JUMP JUMPDEST PUSH1 0x20 SWAP2 DUP3 DUP3 DIV ADD SWAP2 SWAP1 MOD PUSH2 0x100 EXP DUP2 SLOAD DUP2 PUSH1 0xFF MUL NOT AND SWAP1 DUP4 PUSH1 0xFF AND MUL OR SWAP1 SSTORE POP DUP4 DUP2 DUP2 MLOAD DUP2 LT PUSH2 0x368F JUMPI PUSH2 0x368F PUSH2 0x4662 JUMP JUMPDEST PUSH1 0x20 MUL PUSH1 0x20 ADD ADD MLOAD PUSH1 0x1 PUSH2 0x36A3 SWAP2 SWAP1 PUSH2 0x4649 JUMP JUMPDEST PUSH1 0x1 DUP3 PUSH1 0x20 DUP2 LT PUSH2 0x36B6 JUMPI PUSH2 0x36B6 PUSH2 0x4662 JUMP JUMPDEST PUSH1 0x20 SWAP2 DUP3 DUP3 DIV ADD SWAP2 SWAP1 MOD PUSH2 0x100 EXP DUP2 SLOAD DUP2 PUSH1 0xFF MUL NOT AND SWAP1 DUP4 PUSH1 0xFF AND MUL OR SWAP1 SSTORE POP PUSH2 0x3724 DUP7 DUP3 DUP2 MLOAD DUP2 LT PUSH2 0x36EB JUMPI PUSH2 0x36EB PUSH2 0x4662 JUMP JUMPDEST PUSH1 0x20 MUL PUSH1 0x20 ADD ADD MLOAD DUP9 DUP4 DUP2 MLOAD DUP2 LT PUSH2 0x3705 JUMPI PUSH2 0x3705 PUSH2 0x4662 JUMP JUMPDEST PUSH1 0x20 MUL PUSH1 0x20 ADD ADD MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH2 0x28D4 SWAP1 SWAP2 SWAP1 PUSH4 0xFFFFFFFF AND JUMP JUMPDEST DUP7 DUP2 DUP2 MLOAD DUP2 LT PUSH2 0x3736 JUMPI PUSH2 0x3736 PUSH2 0x4662 JUMP JUMPDEST PUSH1 0x20 MUL PUSH1 0x20 ADD ADD MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH32 0x4973F7978F2B1810531AED51DC15A8E446CB3191AFCCA470F8CE464AF7494F58 DUP3 PUSH1 0x40 MLOAD PUSH2 0x377F SWAP2 SWAP1 PUSH1 0xFF SWAP2 SWAP1 SWAP2 AND DUP2 MSTORE PUSH1 0x20 ADD SWAP1 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 LOG2 PUSH1 0x1 ADD PUSH2 0x32EE JUMP JUMPDEST POP PUSH32 0x193FC4E628C27AE3CA098952DFC16A40425B44E7B0A97F4CC59D0F267F47CAEC DUP5 PUSH1 0x40 MLOAD PUSH2 0x37BF SWAP2 SWAP1 PUSH2 0x46D9 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 LOG1 PUSH32 0x3C56B6BCA0D55EDA581F8F2819D1F85D3B91CFCC24914A8FA39D301796D8964C DUP4 PUSH1 0x40 MLOAD PUSH2 0x37F6 SWAP2 SWAP1 PUSH2 0x46D9 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 LOG1 POP POP POP POP POP POP JUMP JUMPDEST DUP1 PUSH0 JUMPDEST DUP2 ISZERO DUP1 ISZERO SWAP1 PUSH2 0x383F JUMPI POP PUSH1 0x1 DUP2 PUSH1 0x20 DUP2 LT PUSH2 0x3826 JUMPI PUSH2 0x3826 PUSH2 0x4662 JUMP JUMPDEST PUSH1 0x20 DUP2 DIV SWAP1 SWAP2 ADD SLOAD PUSH1 0xFF PUSH1 0x1F SWAP1 SWAP3 AND PUSH2 0x100 EXP SWAP1 DIV AND ISZERO ISZERO JUMPDEST DUP1 ISZERO PUSH2 0x384B JUMPI POP PUSH1 0x20 DUP2 LT JUMPDEST ISZERO PUSH2 0x38F9 JUMPI PUSH0 PUSH1 0x2 PUSH1 0x1 DUP1 DUP5 PUSH1 0x20 DUP2 LT PUSH2 0x3867 JUMPI PUSH2 0x3867 PUSH2 0x4662 JUMP JUMPDEST PUSH1 0x20 SWAP2 DUP3 DUP3 DIV ADD SWAP2 SWAP1 MOD SWAP1 SLOAD SWAP1 PUSH2 0x100 EXP SWAP1 DIV PUSH1 0xFF AND PUSH2 0x3887 SWAP2 SWAP1 PUSH2 0x4731 JUMP JUMPDEST PUSH1 0xFF AND PUSH1 0x20 DUP2 LT PUSH2 0x389A JUMPI PUSH2 0x389A PUSH2 0x4662 JUMP JUMPDEST ADD SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND SWAP1 POP PUSH0 PUSH2 0x38B5 DUP5 PUSH2 0x24C2 DUP5 PUSH2 0x2BCA JUMP JUMPDEST SWAP1 POP DUP1 PUSH0 SUB PUSH2 0x38C5 JUMPI POP POP PUSH2 0x38E9 JUMP JUMPDEST PUSH2 0x38D9 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP4 AND DUP3 PUSH0 PUSH2 0x2C26 JUMP JUMPDEST POP PUSH2 0x38E4 DUP2 DUP6 PUSH2 0x471E JUMP JUMPDEST SWAP4 POP POP POP JUMPDEST PUSH2 0x38F2 DUP2 PUSH2 0x468D JUMP JUMPDEST SWAP1 POP PUSH2 0x3809 JUMP JUMPDEST POP DUP1 ISZERO PUSH2 0xB4C JUMPI PUSH1 0x40 MLOAD PUSH4 0x351DC55D PUSH1 0xE2 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST DUP3 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP6 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND EQ PUSH2 0x393D JUMPI PUSH2 0x393D DUP4 DUP7 DUP4 PUSH2 0x2162 JUMP JUMPDEST PUSH2 0x3947 DUP4 DUP3 PUSH2 0x3CAB JUMP JUMPDEST PUSH2 0x3959 PUSH2 0x3952 PUSH2 0x8F2 JUMP JUMPDEST DUP6 DUP5 PUSH2 0x3CDF JUMP JUMPDEST DUP3 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP5 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP7 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH32 0xFBDE797D201C681B91056529119E0B02407C7BB96A4A2C75C01FC9667232C8DB DUP6 DUP6 PUSH1 0x40 MLOAD PUSH2 0x39B1 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 POP POP POP JUMP JUMPDEST PUSH0 PUSH1 0x2 DUP3 PUSH1 0x3 DUP2 GT ISZERO PUSH2 0x39D5 JUMPI PUSH2 0x39D5 PUSH2 0x48EE JUMP JUMPDEST PUSH2 0x39DF SWAP2 SWAP1 PUSH2 0x4902 JUMP JUMPDEST PUSH1 0xFF AND PUSH1 0x1 EQ SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH0 PUSH0 PUSH0 PUSH2 0x39F9 DUP7 DUP7 PUSH2 0x3D14 JUMP JUMPDEST SWAP2 POP SWAP2 POP DUP2 PUSH0 SUB PUSH2 0x3A1D JUMPI DUP4 DUP2 DUP2 PUSH2 0x3A13 JUMPI PUSH2 0x3A13 PUSH2 0x48DA JUMP JUMPDEST DIV SWAP3 POP POP POP PUSH2 0x8A9 JUMP JUMPDEST DUP2 DUP5 GT PUSH2 0x3A34 JUMPI PUSH2 0x3A34 PUSH1 0x3 DUP6 ISZERO MUL PUSH1 0x11 XOR PUSH2 0x3D30 JUMP JUMPDEST PUSH0 DUP5 DUP7 DUP9 MULMOD PUSH0 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 DUP6 DUP5 GT SWAP1 SWAP7 SUB SWAP6 SWAP1 SWAP6 MUL SWAP2 SWAP1 SWAP4 SUB SWAP4 SWAP1 SWAP4 DIV SWAP3 SWAP1 SWAP3 OR MUL SWAP2 POP POP SWAP4 SWAP3 POP POP POP JUMP JUMPDEST PUSH0 PUSH0 PUSH0 DUP4 MLOAD PUSH1 0x20 DUP6 ADD DUP7 GAS DELEGATECALL SWAP4 SWAP3 POP POP POP JUMP JUMPDEST PUSH1 0x40 MLOAD RETURNDATASIZE DUP2 MSTORE RETURNDATASIZE PUSH0 PUSH1 0x20 DUP4 ADD RETURNDATACOPY RETURNDATASIZE PUSH1 0x20 ADD DUP2 ADD PUSH1 0x40 MSTORE SWAP1 JUMP JUMPDEST PUSH1 0x40 MLOAD RETURNDATASIZE PUSH0 DUP3 RETURNDATACOPY RETURNDATASIZE DUP2 REVERT JUMPDEST DUP1 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND EXTCODESIZE PUSH0 SUB PUSH2 0x3B08 JUMPI PUSH1 0x40 MLOAD PUSH4 0x4C9C8CE3 PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP3 AND PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x24 ADD PUSH2 0xBF7 JUMP JUMPDEST PUSH0 MLOAD PUSH1 0x20 PUSH2 0x4A4E PUSH0 CODECOPY PUSH0 MLOAD SWAP1 PUSH0 MSTORE DUP1 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB NOT AND PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP3 SWAP1 SWAP3 AND SWAP2 SWAP1 SWAP2 OR SWAP1 SSTORE JUMP JUMPDEST CALLVALUE ISZERO PUSH2 0x25CF JUMPI PUSH1 0x40 MLOAD PUSH4 0xB398979F PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH2 0x3B63 DUP5 DUP5 DUP5 DUP5 PUSH1 0x1 PUSH2 0x3D41 JUMP JUMPDEST PUSH2 0x21AD JUMPI PUSH1 0x40 MLOAD PUSH4 0x5274AFE7 PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP6 AND PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x24 ADD PUSH2 0xBF7 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP3 AND PUSH2 0x3BB4 JUMPI PUSH1 0x40 MLOAD PUSH4 0xEC442F05 PUSH1 0xE0 SHL DUP2 MSTORE PUSH0 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x24 ADD PUSH2 0xBF7 JUMP JUMPDEST PUSH2 0xB4C PUSH0 DUP4 DUP4 PUSH2 0x2FA8 JUMP JUMPDEST PUSH0 PUSH2 0x3BC8 PUSH2 0x2AB0 JUMP JUMPDEST SLOAD PUSH1 0x1 PUSH1 0x40 SHL SWAP1 DIV PUSH1 0xFF AND SWAP2 SWAP1 POP JUMP JUMPDEST PUSH2 0x3BE0 PUSH2 0x323D JUMP JUMPDEST PUSH32 0x773E532DFEDE91F04B12A73D3D2ACD361424F41F76B4FB79F090161E36B4E00 PUSH0 DUP1 PUSH2 0x3C0C DUP5 PUSH2 0x3DAE JUMP JUMPDEST SWAP2 POP SWAP2 POP DUP2 PUSH2 0x3C1C JUMPI PUSH1 0x12 PUSH2 0x3C1E JUMP JUMPDEST DUP1 JUMPDEST DUP4 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA8 SHL SUB NOT AND PUSH1 0x1 PUSH1 0xA0 SHL PUSH1 0xFF SWAP3 SWAP1 SWAP3 AND SWAP2 SWAP1 SWAP2 MUL PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB NOT AND OR PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP5 SWAP1 SWAP5 AND SWAP4 SWAP1 SWAP4 OR SWAP1 SWAP2 SSTORE POP POP JUMP JUMPDEST PUSH2 0x3C63 PUSH2 0x323D JUMP JUMPDEST PUSH0 MLOAD PUSH1 0x20 PUSH2 0x4A2E PUSH0 CODECOPY PUSH0 MLOAD SWAP1 PUSH0 MSTORE PUSH32 0x52C63247E1F47DB19D5CE0460030C497F067CA4CEBF71BA98EEADABE20BACE03 PUSH2 0x3C9C DUP5 DUP3 PUSH2 0x4973 JUMP JUMPDEST POP PUSH1 0x4 DUP2 ADD PUSH2 0x21AD DUP4 DUP3 PUSH2 0x4973 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP3 AND PUSH2 0x3CD4 JUMPI PUSH1 0x40 MLOAD PUSH4 0x4B637E8F PUSH1 0xE1 SHL DUP2 MSTORE PUSH0 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x24 ADD PUSH2 0xBF7 JUMP JUMPDEST PUSH2 0xB4C DUP3 PUSH0 DUP4 PUSH2 0x2FA8 JUMP JUMPDEST PUSH2 0x3CEC DUP4 DUP4 DUP4 PUSH1 0x1 PUSH2 0x3E39 JUMP JUMPDEST PUSH2 0x210F JUMPI PUSH1 0x40 MLOAD PUSH4 0x5274AFE7 PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP5 AND PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x24 ADD PUSH2 0xBF7 JUMP JUMPDEST PUSH0 DUP1 PUSH0 NOT DUP4 DUP6 MULMOD SWAP4 SWAP1 SWAP3 MUL DUP1 DUP5 LT SWAP4 DUP2 SWAP1 SUB SWAP4 SWAP1 SWAP4 SUB SWAP4 SWAP2 POP POP JUMP JUMPDEST PUSH4 0x4E487B71 PUSH0 MSTORE DUP1 PUSH1 0x20 MSTORE PUSH1 0x24 PUSH1 0x1C REVERT JUMPDEST PUSH1 0x40 MLOAD PUSH4 0x23B872DD PUSH1 0xE0 SHL PUSH0 DUP2 DUP2 MSTORE PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP8 DUP2 AND PUSH1 0x4 MSTORE DUP7 AND PUSH1 0x24 MSTORE PUSH1 0x44 DUP6 SWAP1 MSTORE SWAP2 PUSH1 0x20 DUP4 PUSH1 0x64 DUP2 DUP1 DUP13 GAS CALL SWAP3 POP PUSH1 0x1 PUSH0 MLOAD EQ DUP4 AND PUSH2 0x3D9D JUMPI DUP4 DUP4 ISZERO AND ISZERO PUSH2 0x3D91 JUMPI RETURNDATASIZE PUSH0 DUP3 RETURNDATACOPY RETURNDATASIZE DUP2 REVERT JUMPDEST PUSH0 DUP9 EXTCODESIZE GT RETURNDATASIZE ISZERO AND DUP4 AND SWAP3 POP JUMPDEST PUSH1 0x40 MSTORE POP PUSH0 PUSH1 0x60 MSTORE SWAP6 SWAP5 POP POP POP POP POP JUMP JUMPDEST PUSH0 PUSH0 PUSH0 PUSH2 0x3DBA PUSH1 0x40 MLOAD SWAP1 JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH1 0x4 DUP2 MSTORE PUSH1 0x24 DUP2 ADD SWAP1 SWAP2 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 SWAP2 POP PUSH0 SWAP1 DUP2 SWAP1 PUSH2 0x3DF5 SWAP1 DUP8 SWAP1 PUSH2 0x3E9B JUMP JUMPDEST POP SWAP2 POP SWAP2 POP PUSH2 0x3E03 DUP4 PUSH1 0x40 MSTORE JUMP JUMPDEST DUP2 DUP1 ISZERO PUSH2 0x3E11 JUMPI POP PUSH1 0x20 RETURNDATASIZE LT ISZERO JUMPDEST DUP1 ISZERO PUSH2 0x3E1E JUMPI POP PUSH1 0xFF DUP2 GT ISZERO JUMPDEST PUSH2 0x3E29 JUMPI PUSH0 PUSH0 PUSH2 0x3E2D JUMP JUMPDEST PUSH1 0x1 DUP2 JUMPDEST SWAP5 POP SWAP5 POP POP POP POP SWAP2 POP SWAP2 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH4 0xA9059CBB PUSH1 0xE0 SHL PUSH0 DUP2 DUP2 MSTORE PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP7 AND PUSH1 0x4 MSTORE PUSH1 0x24 DUP6 SWAP1 MSTORE SWAP2 PUSH1 0x20 DUP4 PUSH1 0x44 DUP2 DUP1 DUP12 GAS CALL SWAP3 POP PUSH1 0x1 PUSH0 MLOAD EQ DUP4 AND PUSH2 0x3E8F JUMPI DUP4 DUP4 ISZERO AND ISZERO PUSH2 0x3E83 JUMPI RETURNDATASIZE PUSH0 DUP3 RETURNDATACOPY RETURNDATASIZE DUP2 REVERT JUMPDEST PUSH0 DUP8 EXTCODESIZE GT RETURNDATASIZE ISZERO AND DUP4 AND SWAP3 POP JUMPDEST PUSH1 0x40 MSTORE POP SWAP5 SWAP4 POP POP POP POP JUMP JUMPDEST PUSH0 PUSH0 PUSH0 PUSH1 0x40 PUSH0 DUP6 MLOAD PUSH1 0x20 DUP8 ADD DUP9 GAS STATICCALL SWAP3 POP PUSH0 MLOAD SWAP2 POP PUSH1 0x20 MLOAD SWAP1 POP SWAP3 POP SWAP3 POP SWAP3 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 PUSH2 0x400 ADD PUSH1 0x40 MSTORE DUP1 PUSH1 0x20 SWAP1 PUSH1 0x20 DUP3 MUL DUP1 CALLDATASIZE DUP4 CALLDATACOPY POP SWAP2 SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH0 DUP2 MLOAD DUP1 DUP5 MSTORE DUP1 PUSH1 0x20 DUP5 ADD PUSH1 0x20 DUP7 ADD MCOPY PUSH0 PUSH1 0x20 DUP3 DUP7 ADD ADD MSTORE PUSH1 0x20 PUSH1 0x1F NOT PUSH1 0x1F DUP4 ADD AND DUP6 ADD ADD SWAP2 POP POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x20 DUP2 MSTORE PUSH0 PUSH2 0x8A9 PUSH1 0x20 DUP4 ADD DUP5 PUSH2 0x3EDB JUMP JUMPDEST PUSH0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x3F2B JUMPI PUSH0 PUSH0 REVERT JUMPDEST POP CALLDATALOAD SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 AND DUP2 EQ PUSH2 0x9B7 JUMPI PUSH0 PUSH0 REVERT JUMPDEST PUSH0 PUSH0 PUSH1 0x40 DUP4 DUP6 SUB SLT ISZERO PUSH2 0x3F57 JUMPI PUSH0 PUSH0 REVERT JUMPDEST DUP3 CALLDATALOAD PUSH2 0x3F62 DUP2 PUSH2 0x3F32 JUMP JUMPDEST SWAP5 PUSH1 0x20 SWAP4 SWAP1 SWAP4 ADD CALLDATALOAD SWAP4 POP POP POP JUMP JUMPDEST PUSH0 PUSH0 PUSH0 PUSH1 0x60 DUP5 DUP7 SUB SLT ISZERO PUSH2 0x3F82 JUMPI PUSH0 PUSH0 REVERT JUMPDEST DUP4 CALLDATALOAD PUSH2 0x3F8D DUP2 PUSH2 0x3F32 JUMP JUMPDEST SWAP3 POP PUSH1 0x20 DUP5 ADD CALLDATALOAD PUSH2 0x3F9D DUP2 PUSH2 0x3F32 JUMP JUMPDEST SWAP3 SWAP6 SWAP3 SWAP5 POP POP POP PUSH1 0x40 SWAP2 SWAP1 SWAP2 ADD CALLDATALOAD SWAP1 JUMP JUMPDEST DUP1 CALLDATALOAD PUSH1 0xFF DUP2 AND DUP2 EQ PUSH2 0x3FBE JUMPI PUSH0 PUSH0 REVERT JUMPDEST SWAP2 SWAP1 POP JUMP JUMPDEST PUSH4 0x4E487B71 PUSH1 0xE0 SHL PUSH0 MSTORE PUSH1 0x41 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH0 REVERT 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 PUSH2 0x3FFF JUMPI PUSH2 0x3FFF PUSH2 0x3FC3 JUMP JUMPDEST PUSH1 0x40 MSTORE SWAP2 SWAP1 POP JUMP JUMPDEST PUSH0 DUP3 PUSH1 0x1F DUP4 ADD SLT PUSH2 0x4016 JUMPI PUSH0 PUSH0 REVERT JUMPDEST DUP2 CALLDATALOAD PUSH1 0x20 DUP4 ADD PUSH0 PUSH0 PUSH1 0x1 PUSH1 0x1 PUSH1 0x40 SHL SUB DUP5 GT ISZERO PUSH2 0x4035 JUMPI PUSH2 0x4035 PUSH2 0x3FC3 JUMP JUMPDEST POP PUSH1 0x1F DUP4 ADD PUSH1 0x1F NOT AND PUSH1 0x20 ADD PUSH2 0x404A DUP2 PUSH2 0x3FD7 JUMP JUMPDEST SWAP2 POP POP DUP3 DUP2 MSTORE DUP6 DUP4 DUP4 ADD GT ISZERO PUSH2 0x405E JUMPI PUSH0 PUSH0 REVERT JUMPDEST DUP3 DUP3 PUSH1 0x20 DUP4 ADD CALLDATACOPY PUSH0 SWAP3 DUP2 ADD PUSH1 0x20 ADD SWAP3 SWAP1 SWAP3 MSTORE POP SWAP4 SWAP3 POP POP POP JUMP JUMPDEST PUSH0 PUSH0 PUSH0 PUSH1 0x60 DUP5 DUP7 SUB SLT ISZERO PUSH2 0x408A JUMPI PUSH0 PUSH0 REVERT JUMPDEST PUSH2 0x4093 DUP5 PUSH2 0x3FAE JUMP JUMPDEST SWAP3 POP PUSH2 0x40A1 PUSH1 0x20 DUP6 ADD PUSH2 0x3FAE JUMP JUMPDEST SWAP2 POP PUSH1 0x40 DUP5 ADD CALLDATALOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0x40 SHL SUB DUP2 GT ISZERO PUSH2 0x40BB JUMPI PUSH0 PUSH0 REVERT JUMPDEST PUSH2 0x40C7 DUP7 DUP3 DUP8 ADD PUSH2 0x4007 JUMP JUMPDEST SWAP2 POP POP SWAP3 POP SWAP3 POP SWAP3 JUMP JUMPDEST PUSH0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x40E1 JUMPI PUSH0 PUSH0 REVERT JUMPDEST DUP2 CALLDATALOAD PUSH2 0x8A9 DUP2 PUSH2 0x3F32 JUMP JUMPDEST PUSH0 PUSH0 PUSH1 0x40 DUP4 DUP6 SUB SLT ISZERO PUSH2 0x40FD JUMPI PUSH0 PUSH0 REVERT JUMPDEST DUP3 CALLDATALOAD PUSH2 0x4108 DUP2 PUSH2 0x3F32 JUMP JUMPDEST SWAP2 POP PUSH1 0x20 DUP4 ADD CALLDATALOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0x40 SHL SUB DUP2 GT ISZERO PUSH2 0x4122 JUMPI PUSH0 PUSH0 REVERT JUMPDEST PUSH2 0x412E DUP6 DUP3 DUP7 ADD PUSH2 0x4007 JUMP JUMPDEST SWAP2 POP POP SWAP3 POP SWAP3 SWAP1 POP JUMP JUMPDEST PUSH2 0x400 DUP2 ADD DUP2 DUP4 PUSH0 JUMPDEST PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x4163 JUMPI DUP2 MLOAD PUSH1 0xFF AND DUP4 MSTORE PUSH1 0x20 SWAP3 DUP4 ADD SWAP3 SWAP1 SWAP2 ADD SWAP1 PUSH1 0x1 ADD PUSH2 0x4141 JUMP JUMPDEST POP POP POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH0 PUSH0 PUSH1 0x40 DUP4 DUP6 SUB SLT ISZERO PUSH2 0x417D JUMPI PUSH0 PUSH0 REVERT JUMPDEST DUP3 CALLDATALOAD SWAP2 POP PUSH1 0x20 DUP4 ADD CALLDATALOAD PUSH2 0x418F DUP2 PUSH2 0x3F32 JUMP JUMPDEST DUP1 SWAP2 POP POP SWAP3 POP SWAP3 SWAP1 POP JUMP JUMPDEST DUP1 ISZERO ISZERO DUP2 EQ PUSH2 0x9B7 JUMPI PUSH0 PUSH0 REVERT JUMPDEST PUSH0 PUSH0 PUSH0 PUSH0 PUSH1 0x80 DUP6 DUP8 SUB SLT ISZERO PUSH2 0x41BA JUMPI PUSH0 PUSH0 REVERT JUMPDEST PUSH2 0x41C3 DUP6 PUSH2 0x3FAE JUMP JUMPDEST SWAP4 POP PUSH1 0x20 DUP6 ADD CALLDATALOAD PUSH2 0x41D3 DUP2 PUSH2 0x3F32 JUMP JUMPDEST SWAP3 POP PUSH1 0x40 DUP6 ADD CALLDATALOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0x40 SHL SUB DUP2 GT ISZERO PUSH2 0x41ED JUMPI PUSH0 PUSH0 REVERT JUMPDEST PUSH2 0x41F9 DUP8 DUP3 DUP9 ADD PUSH2 0x4007 JUMP JUMPDEST SWAP3 POP POP PUSH1 0x60 DUP6 ADD CALLDATALOAD PUSH2 0x420A DUP2 PUSH2 0x419A JUMP JUMPDEST SWAP4 SWAP7 SWAP3 SWAP6 POP SWAP1 SWAP4 POP POP JUMP JUMPDEST PUSH0 PUSH0 PUSH1 0x40 DUP4 DUP6 SUB SLT ISZERO PUSH2 0x4226 JUMPI PUSH0 PUSH0 REVERT JUMPDEST PUSH2 0x422F DUP4 PUSH2 0x3FAE JUMP JUMPDEST SWAP2 POP PUSH2 0x423D PUSH1 0x20 DUP5 ADD PUSH2 0x3FAE JUMP JUMPDEST SWAP1 POP SWAP3 POP SWAP3 SWAP1 POP JUMP JUMPDEST PUSH0 PUSH1 0x1 PUSH1 0x1 PUSH1 0x40 SHL SUB DUP3 GT ISZERO PUSH2 0x425E JUMPI PUSH2 0x425E PUSH2 0x3FC3 JUMP JUMPDEST POP PUSH1 0x5 SHL PUSH1 0x20 ADD SWAP1 JUMP JUMPDEST PUSH0 DUP3 PUSH1 0x1F DUP4 ADD SLT PUSH2 0x4277 JUMPI PUSH0 PUSH0 REVERT JUMPDEST DUP2 CALLDATALOAD PUSH2 0x428A PUSH2 0x4285 DUP3 PUSH2 0x4246 JUMP JUMPDEST PUSH2 0x3FD7 JUMP JUMPDEST DUP1 DUP3 DUP3 MSTORE PUSH1 0x20 DUP3 ADD SWAP2 POP PUSH1 0x20 DUP4 PUSH1 0x5 SHL DUP7 ADD ADD SWAP3 POP DUP6 DUP4 GT ISZERO PUSH2 0x42AB JUMPI PUSH0 PUSH0 REVERT JUMPDEST PUSH1 0x20 DUP6 ADD JUMPDEST DUP4 DUP2 LT ISZERO PUSH2 0x42CF JUMPI PUSH2 0x42C1 DUP2 PUSH2 0x3FAE JUMP JUMPDEST DUP4 MSTORE PUSH1 0x20 SWAP3 DUP4 ADD SWAP3 ADD PUSH2 0x42B0 JUMP JUMPDEST POP SWAP6 SWAP5 POP POP POP POP POP JUMP JUMPDEST PUSH0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x42E9 JUMPI PUSH0 PUSH0 REVERT JUMPDEST DUP2 CALLDATALOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0x40 SHL SUB DUP2 GT ISZERO PUSH2 0x42FE JUMPI PUSH0 PUSH0 REVERT JUMPDEST PUSH2 0xC18 DUP5 DUP3 DUP6 ADD PUSH2 0x4268 JUMP JUMPDEST PUSH0 PUSH0 PUSH1 0x40 DUP4 DUP6 SUB SLT ISZERO PUSH2 0x431B JUMPI PUSH0 PUSH0 REVERT JUMPDEST PUSH2 0x4324 DUP4 PUSH2 0x3FAE JUMP JUMPDEST SWAP2 POP PUSH1 0x20 DUP4 ADD CALLDATALOAD PUSH2 0x418F DUP2 PUSH2 0x419A JUMP JUMPDEST DUP1 CALLDATALOAD PUSH2 0x3FBE DUP2 PUSH2 0x3F32 JUMP JUMPDEST PUSH0 DUP3 PUSH1 0x1F DUP4 ADD SLT PUSH2 0x434E JUMPI PUSH0 PUSH0 REVERT JUMPDEST DUP2 CALLDATALOAD PUSH2 0x435C PUSH2 0x4285 DUP3 PUSH2 0x4246 JUMP JUMPDEST DUP1 DUP3 DUP3 MSTORE PUSH1 0x20 DUP3 ADD SWAP2 POP PUSH1 0x20 DUP4 PUSH1 0x5 SHL DUP7 ADD ADD SWAP3 POP DUP6 DUP4 GT ISZERO PUSH2 0x437D JUMPI PUSH0 PUSH0 REVERT JUMPDEST PUSH1 0x20 DUP6 ADD JUMPDEST DUP4 DUP2 LT ISZERO PUSH2 0x42CF JUMPI DUP1 CALLDATALOAD PUSH2 0x4395 DUP2 PUSH2 0x3F32 JUMP JUMPDEST DUP4 MSTORE PUSH1 0x20 SWAP3 DUP4 ADD SWAP3 ADD PUSH2 0x4382 JUMP JUMPDEST PUSH0 DUP3 PUSH1 0x1F DUP4 ADD SLT PUSH2 0x43B2 JUMPI PUSH0 PUSH0 REVERT JUMPDEST DUP2 CALLDATALOAD PUSH2 0x43C0 PUSH2 0x4285 DUP3 PUSH2 0x4246 JUMP JUMPDEST DUP1 DUP3 DUP3 MSTORE PUSH1 0x20 DUP3 ADD SWAP2 POP PUSH1 0x20 DUP4 PUSH1 0x5 SHL DUP7 ADD ADD SWAP3 POP DUP6 DUP4 GT ISZERO PUSH2 0x43E1 JUMPI PUSH0 PUSH0 REVERT JUMPDEST PUSH1 0x20 DUP6 ADD JUMPDEST DUP4 DUP2 LT ISZERO PUSH2 0x42CF JUMPI DUP1 CALLDATALOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0x40 SHL SUB DUP2 GT ISZERO PUSH2 0x4403 JUMPI PUSH0 PUSH0 REVERT JUMPDEST PUSH2 0x4412 DUP9 PUSH1 0x20 DUP4 DUP11 ADD ADD PUSH2 0x4007 JUMP JUMPDEST DUP5 MSTORE POP PUSH1 0x20 SWAP3 DUP4 ADD SWAP3 ADD PUSH2 0x43E6 JUMP JUMPDEST PUSH0 PUSH0 PUSH0 PUSH0 PUSH0 PUSH0 PUSH0 PUSH1 0xE0 DUP9 DUP11 SUB SLT ISZERO PUSH2 0x4437 JUMPI PUSH0 PUSH0 REVERT JUMPDEST DUP8 CALLDATALOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0x40 SHL SUB DUP2 GT ISZERO PUSH2 0x444C JUMPI PUSH0 PUSH0 REVERT JUMPDEST PUSH2 0x4458 DUP11 DUP3 DUP12 ADD PUSH2 0x4007 JUMP JUMPDEST SWAP8 POP POP PUSH1 0x20 DUP9 ADD CALLDATALOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0x40 SHL SUB DUP2 GT ISZERO PUSH2 0x4473 JUMPI PUSH0 PUSH0 REVERT JUMPDEST PUSH2 0x447F DUP11 DUP3 DUP12 ADD PUSH2 0x4007 JUMP JUMPDEST SWAP7 POP POP PUSH2 0x448E PUSH1 0x40 DUP10 ADD PUSH2 0x4334 JUMP JUMPDEST SWAP5 POP PUSH1 0x60 DUP9 ADD CALLDATALOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0x40 SHL SUB DUP2 GT ISZERO PUSH2 0x44A8 JUMPI PUSH0 PUSH0 REVERT JUMPDEST PUSH2 0x44B4 DUP11 DUP3 DUP12 ADD PUSH2 0x433F JUMP JUMPDEST SWAP5 POP POP PUSH1 0x80 DUP9 ADD CALLDATALOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0x40 SHL SUB DUP2 GT ISZERO PUSH2 0x44CF JUMPI PUSH0 PUSH0 REVERT JUMPDEST PUSH2 0x44DB DUP11 DUP3 DUP12 ADD PUSH2 0x43A3 JUMP JUMPDEST SWAP4 POP POP PUSH1 0xA0 DUP9 ADD CALLDATALOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0x40 SHL SUB DUP2 GT ISZERO PUSH2 0x44F6 JUMPI PUSH0 PUSH0 REVERT JUMPDEST PUSH2 0x4502 DUP11 DUP3 DUP12 ADD PUSH2 0x4268 JUMP JUMPDEST SWAP3 POP POP PUSH1 0xC0 DUP9 ADD CALLDATALOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0x40 SHL SUB DUP2 GT ISZERO PUSH2 0x451D JUMPI PUSH0 PUSH0 REVERT JUMPDEST PUSH2 0x4529 DUP11 DUP3 DUP12 ADD PUSH2 0x4268 JUMP JUMPDEST SWAP2 POP POP SWAP3 SWAP6 SWAP9 SWAP2 SWAP5 SWAP8 POP SWAP3 SWAP6 POP JUMP JUMPDEST PUSH0 PUSH0 PUSH0 PUSH1 0x60 DUP5 DUP7 SUB SLT ISZERO PUSH2 0x454A JUMPI PUSH0 PUSH0 REVERT JUMPDEST DUP4 CALLDATALOAD SWAP3 POP PUSH1 0x20 DUP5 ADD CALLDATALOAD PUSH2 0x455C DUP2 PUSH2 0x3F32 JUMP JUMPDEST SWAP2 POP PUSH1 0x40 DUP5 ADD CALLDATALOAD PUSH2 0x456C DUP2 PUSH2 0x3F32 JUMP JUMPDEST DUP1 SWAP2 POP POP SWAP3 POP SWAP3 POP SWAP3 JUMP JUMPDEST PUSH2 0x400 DUP2 ADD DUP2 DUP4 PUSH0 JUMPDEST PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x4163 JUMPI DUP2 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP4 MSTORE PUSH1 0x20 SWAP3 DUP4 ADD SWAP3 SWAP1 SWAP2 ADD SWAP1 PUSH1 0x1 ADD PUSH2 0x4580 JUMP JUMPDEST PUSH0 PUSH0 PUSH1 0x40 DUP4 DUP6 SUB SLT ISZERO PUSH2 0x45B9 JUMPI PUSH0 PUSH0 REVERT JUMPDEST DUP3 CALLDATALOAD PUSH2 0x45C4 DUP2 PUSH2 0x3F32 JUMP JUMPDEST SWAP2 POP PUSH1 0x20 DUP4 ADD CALLDATALOAD PUSH2 0x418F DUP2 PUSH2 0x3F32 JUMP JUMPDEST PUSH0 PUSH0 PUSH0 PUSH1 0x60 DUP5 DUP7 SUB SLT ISZERO PUSH2 0x45E6 JUMPI PUSH0 PUSH0 REVERT JUMPDEST PUSH2 0x45EF DUP5 PUSH2 0x3FAE JUMP JUMPDEST SWAP3 POP PUSH2 0x3F9D PUSH1 0x20 DUP6 ADD PUSH2 0x3FAE JUMP JUMPDEST PUSH1 0x1 DUP2 DUP2 SHR SWAP1 DUP3 AND DUP1 PUSH2 0x4611 JUMPI PUSH1 0x7F DUP3 AND SWAP2 POP JUMPDEST PUSH1 0x20 DUP3 LT DUP2 SUB PUSH2 0x462F JUMPI PUSH4 0x4E487B71 PUSH1 0xE0 SHL PUSH0 MSTORE PUSH1 0x22 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH0 REVERT JUMPDEST POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH4 0x4E487B71 PUSH1 0xE0 SHL PUSH0 MSTORE PUSH1 0x11 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH0 REVERT JUMPDEST PUSH1 0xFF DUP2 DUP2 AND DUP4 DUP3 AND ADD SWAP1 DUP2 GT ISZERO PUSH2 0x862 JUMPI PUSH2 0x862 PUSH2 0x4635 JUMP JUMPDEST PUSH4 0x4E487B71 PUSH1 0xE0 SHL PUSH0 MSTORE PUSH1 0x32 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH0 REVERT JUMPDEST PUSH0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x4686 JUMPI PUSH0 PUSH0 REVERT JUMPDEST POP MLOAD SWAP2 SWAP1 POP JUMP JUMPDEST PUSH0 PUSH1 0x1 DUP3 ADD PUSH2 0x469E JUMPI PUSH2 0x469E PUSH2 0x4635 JUMP JUMPDEST POP PUSH1 0x1 ADD SWAP1 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP4 SWAP1 SWAP4 AND DUP4 MSTORE PUSH1 0x20 DUP4 ADD SWAP2 SWAP1 SWAP2 MSTORE PUSH1 0x40 DUP3 ADD MSTORE PUSH1 0x60 ADD SWAP1 JUMP JUMPDEST DUP1 DUP3 ADD DUP1 DUP3 GT ISZERO PUSH2 0x862 JUMPI PUSH2 0x862 PUSH2 0x4635 JUMP JUMPDEST PUSH1 0x20 DUP1 DUP3 MSTORE DUP3 MLOAD DUP3 DUP3 ADD DUP2 SWAP1 MSTORE PUSH0 SWAP2 DUP5 ADD SWAP1 PUSH1 0x40 DUP5 ADD SWAP1 DUP4 JUMPDEST DUP2 DUP2 LT ISZERO PUSH2 0x4713 JUMPI DUP4 MLOAD PUSH1 0xFF AND DUP4 MSTORE PUSH1 0x20 SWAP4 DUP5 ADD SWAP4 SWAP1 SWAP3 ADD SWAP2 PUSH1 0x1 ADD PUSH2 0x46F2 JUMP JUMPDEST POP SWAP1 SWAP6 SWAP5 POP POP POP POP POP JUMP JUMPDEST DUP2 DUP2 SUB DUP2 DUP2 GT ISZERO PUSH2 0x862 JUMPI PUSH2 0x862 PUSH2 0x4635 JUMP JUMPDEST PUSH1 0xFF DUP3 DUP2 AND DUP3 DUP3 AND SUB SWAP1 DUP2 GT ISZERO PUSH2 0x862 JUMPI PUSH2 0x862 PUSH2 0x4635 JUMP JUMPDEST PUSH0 PUSH1 0xFF DUP3 AND PUSH1 0xFF DUP2 SUB PUSH2 0x475F JUMPI PUSH2 0x475F PUSH2 0x4635 JUMP JUMPDEST PUSH1 0x1 ADD SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x1 DUP2 JUMPDEST PUSH1 0x1 DUP5 GT ISZERO PUSH2 0x47A3 JUMPI DUP1 DUP6 DIV DUP2 GT ISZERO PUSH2 0x4787 JUMPI PUSH2 0x4787 PUSH2 0x4635 JUMP JUMPDEST PUSH1 0x1 DUP5 AND ISZERO PUSH2 0x4795 JUMPI SWAP1 DUP2 MUL SWAP1 JUMPDEST PUSH1 0x1 SWAP4 SWAP1 SWAP4 SHR SWAP3 DUP1 MUL PUSH2 0x476C JUMP JUMPDEST SWAP4 POP SWAP4 SWAP2 POP POP JUMP JUMPDEST PUSH0 DUP3 PUSH2 0x47B9 JUMPI POP PUSH1 0x1 PUSH2 0x862 JUMP JUMPDEST DUP2 PUSH2 0x47C5 JUMPI POP PUSH0 PUSH2 0x862 JUMP JUMPDEST DUP2 PUSH1 0x1 DUP2 EQ PUSH2 0x47DB JUMPI PUSH1 0x2 DUP2 EQ PUSH2 0x47E5 JUMPI PUSH2 0x4801 JUMP JUMPDEST PUSH1 0x1 SWAP2 POP POP PUSH2 0x862 JUMP JUMPDEST PUSH1 0xFF DUP5 GT ISZERO PUSH2 0x47F6 JUMPI PUSH2 0x47F6 PUSH2 0x4635 JUMP JUMPDEST POP POP PUSH1 0x1 DUP3 SHL PUSH2 0x862 JUMP JUMPDEST POP PUSH1 0x20 DUP4 LT PUSH2 0x133 DUP4 LT AND PUSH1 0x4E DUP5 LT PUSH1 0xB DUP5 LT AND OR ISZERO PUSH2 0x4824 JUMPI POP DUP2 DUP2 EXP PUSH2 0x862 JUMP JUMPDEST PUSH2 0x4830 PUSH0 NOT DUP5 DUP5 PUSH2 0x4768 JUMP JUMPDEST DUP1 PUSH0 NOT DIV DUP3 GT ISZERO PUSH2 0x4843 JUMPI PUSH2 0x4843 PUSH2 0x4635 JUMP JUMPDEST MUL SWAP4 SWAP3 POP POP POP JUMP JUMPDEST PUSH0 PUSH2 0x8A9 PUSH1 0xFF DUP5 AND DUP4 PUSH2 0x47AB JUMP JUMPDEST PUSH0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x4869 JUMPI PUSH0 PUSH0 REVERT JUMPDEST DUP2 MLOAD PUSH2 0x8A9 DUP2 PUSH2 0x3F32 JUMP JUMPDEST PUSH0 PUSH0 PUSH1 0x40 DUP4 DUP6 SUB SLT ISZERO PUSH2 0x4885 JUMPI PUSH0 PUSH0 REVERT JUMPDEST DUP3 MLOAD PUSH2 0x4890 DUP2 PUSH2 0x419A JUMP JUMPDEST PUSH1 0x20 DUP5 ADD MLOAD SWAP1 SWAP3 POP PUSH4 0xFFFFFFFF DUP2 AND DUP2 EQ PUSH2 0x418F JUMPI PUSH0 PUSH0 REVERT JUMPDEST PUSH1 0xFF DUP4 AND DUP2 MSTORE PUSH1 0x40 PUSH1 0x20 DUP3 ADD MSTORE PUSH0 PUSH2 0xC18 PUSH1 0x40 DUP4 ADD DUP5 PUSH2 0x3EDB JUMP JUMPDEST PUSH0 DUP3 MLOAD DUP1 PUSH1 0x20 DUP6 ADD DUP5 MCOPY PUSH0 SWAP3 ADD SWAP2 DUP3 MSTORE POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH4 0x4E487B71 PUSH1 0xE0 SHL PUSH0 MSTORE PUSH1 0x12 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH0 REVERT JUMPDEST PUSH4 0x4E487B71 PUSH1 0xE0 SHL PUSH0 MSTORE PUSH1 0x21 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH0 REVERT JUMPDEST PUSH0 PUSH1 0xFF DUP4 AND DUP1 PUSH2 0x4920 JUMPI PUSH4 0x4E487B71 PUSH1 0xE0 SHL PUSH0 MSTORE PUSH1 0x12 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH0 REVERT JUMPDEST DUP1 PUSH1 0xFF DUP5 AND MOD SWAP2 POP POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x1F DUP3 GT ISZERO PUSH2 0x210F JUMPI DUP1 PUSH0 MSTORE PUSH1 0x20 PUSH0 KECCAK256 PUSH1 0x1F DUP5 ADD PUSH1 0x5 SHR DUP2 ADD PUSH1 0x20 DUP6 LT ISZERO PUSH2 0x4954 JUMPI POP DUP1 JUMPDEST PUSH1 0x1F DUP5 ADD PUSH1 0x5 SHR DUP3 ADD SWAP2 POP JUMPDEST DUP2 DUP2 LT ISZERO PUSH2 0x2327 JUMPI PUSH0 DUP2 SSTORE PUSH1 0x1 ADD PUSH2 0x4960 JUMP JUMPDEST DUP2 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0x40 SHL SUB DUP2 GT ISZERO PUSH2 0x498C JUMPI PUSH2 0x498C PUSH2 0x3FC3 JUMP JUMPDEST PUSH2 0x49A0 DUP2 PUSH2 0x499A DUP5 SLOAD PUSH2 0x45FD JUMP JUMPDEST DUP5 PUSH2 0x492F JUMP JUMPDEST PUSH1 0x20 PUSH1 0x1F DUP3 GT PUSH1 0x1 DUP2 EQ PUSH2 0x49D2 JUMPI PUSH0 DUP4 ISZERO PUSH2 0x49BB JUMPI POP DUP5 DUP3 ADD MLOAD JUMPDEST PUSH0 NOT PUSH1 0x3 DUP6 SWAP1 SHL SHR NOT AND PUSH1 0x1 DUP5 SWAP1 SHL OR DUP5 SSTORE PUSH2 0x2327 JUMP JUMPDEST PUSH0 DUP5 DUP2 MSTORE PUSH1 0x20 DUP2 KECCAK256 PUSH1 0x1F NOT DUP6 AND SWAP2 JUMPDEST DUP3 DUP2 LT ISZERO PUSH2 0x4A01 JUMPI DUP8 DUP6 ADD MLOAD DUP3 SSTORE PUSH1 0x20 SWAP5 DUP6 ADD SWAP5 PUSH1 0x1 SWAP1 SWAP3 ADD SWAP2 ADD PUSH2 0x49E1 JUMP JUMPDEST POP DUP5 DUP3 LT ISZERO PUSH2 0x4A1E JUMPI DUP7 DUP5 ADD MLOAD PUSH0 NOT PUSH1 0x3 DUP8 SWAP1 SHL PUSH1 0xF8 AND SHR NOT AND DUP2 SSTORE JUMPDEST POP POP POP POP PUSH1 0x1 SWAP1 DUP2 SHL ADD SWAP1 SSTORE POP JUMP INVALID MSTORE 0xC6 ORIGIN SELFBALANCE RJUMPI 0xF47D 0xB1 SWAP14 TLOAD RJUMP 0x4600 ADDRESS 0xC4 SWAP8 CREATE PUSH8 0xCA4CEBF71BA98EEA 0xDA 0xBE KECCAK256 0xBA 0xCE STOP CALLDATASIZE ADDMOD SWAP5 LOG1 EXTCODESIZE LOG1 LOG3 0x21 MOD PUSH8 0xC828492DB98DCA3E KECCAK256 PUSH23 0xCC3735A920A3CA505D382BBCA2646970667358221220C7 SWAP5 0xB6 0xDD 0xBD 0x4C EXTSTATICCALL CODECOPY COINBASE INVALID RJUMP 0xD7F4 CALLVALUE PUSH26 0xCB8B47AC102F550F916026E193879F834464736F6C634300081E STOP CALLER ","sourceMap":"1470:5461:52:-:0;;;1084:4:31;1041:48;;1599:47:52;;;;;;;;;-1:-1:-1;1619:22:52;:20;:22::i;:::-;1470:5461;;7709:422:30;3147:66;7898:15;;;;;;;7894:76;;;7936:23;;-1:-1:-1;;;7936:23:30;;;;;;;;;;;7894:76;7983:14;;-1:-1:-1;;;;;7983:14:30;;;:34;7979:146;;8033:33;;-1:-1:-1;;;;;;8033:33:30;-1:-1:-1;;;;;8033:33:30;;;;;8085:29;;158:50:87;;;8085:29:30;;146:2:87;131:18;8085:29:30;;;;;;;7979:146;7758:373;7709:422::o;14:200:87:-;1470:5461:52;;;;;;;;;;;;;;;;;;;;;;"},"deployedBytecode":{"functionDebugData":{"@MAX_STRATEGIES_15717":{"entryPoint":null,"id":15717,"parameterSlots":0,"returnSlots":0},"@UPGRADE_INTERFACE_VERSION_7940":{"entryPoint":null,"id":7940,"parameterSlots":0,"returnSlots":0},"@__AccessManagedMSV_init_14995":{"entryPoint":10968,"id":14995,"parameterSlots":7,"returnSlots":0},"@__ERC20_init_3115":{"entryPoint":12915,"id":3115,"parameterSlots":2,"returnSlots":0},"@__ERC20_init_unchained_3143":{"entryPoint":15451,"id":3143,"parameterSlots":2,"returnSlots":0},"@__ERC4626_init_3762":{"entryPoint":12898,"id":3762,"parameterSlots":1,"returnSlots":0},"@__ERC4626_init_unchained_3800":{"entryPoint":15320,"id":3800,"parameterSlots":1,"returnSlots":0},"@__MSVBase_init_unchained_16061":{"entryPoint":12933,"id":16061,"parameterSlots":4,"returnSlots":0},"@_approve_3547":{"entryPoint":8450,"id":3547,"parameterSlots":3,"returnSlots":0},"@_approve_3615":{"entryPoint":11973,"id":3615,"parameterSlots":4,"returnSlots":0},"@_asset_15012":{"entryPoint":9963,"id":15012,"parameterSlots":0,"returnSlots":1},"@_authorizeUpgrade_15002":{"entryPoint":null,"id":15002,"parameterSlots":1,"returnSlots":0},"@_burn_3529":{"entryPoint":15531,"id":3529,"parameterSlots":2,"returnSlots":0},"@_checkForwardToStrategy_15276":{"entryPoint":8720,"id":15276,"parameterSlots":3,"returnSlots":0},"@_checkInitializing_7828":{"entryPoint":12861,"id":7828,"parameterSlots":0,"returnSlots":0},"@_checkNonPayable_7605":{"entryPoint":15158,"id":7605,"parameterSlots":0,"returnSlots":0},"@_checkNotDelegated_8034":{"entryPoint":9869,"id":8034,"parameterSlots":0,"returnSlots":0},"@_checkProxy_8018":{"entryPoint":9515,"id":8018,"parameterSlots":0,"returnSlots":0},"@_convertToAssets_4329":{"entryPoint":8363,"id":4329,"parameterSlots":2,"returnSlots":1},"@_convertToShares_4301":{"entryPoint":8468,"id":4301,"parameterSlots":2,"returnSlots":1},"@_decimalsOffset_4427":{"entryPoint":null,"id":4427,"parameterSlots":0,"returnSlots":1},"@_depositToStrategies_16368":{"entryPoint":9236,"id":16368,"parameterSlots":1,"returnSlots":0},"@_deposit_15194":{"entryPoint":9942,"id":15194,"parameterSlots":4,"returnSlots":0},"@_deposit_4369":{"entryPoint":12754,"id":4369,"parameterSlots":4,"returnSlots":0},"@_getERC20Storage_3099":{"entryPoint":null,"id":3099,"parameterSlots":0,"returnSlots":1},"@_getERC4626Storage_3712":{"entryPoint":null,"id":3712,"parameterSlots":0,"returnSlots":1},"@_getInitializableStorage_7919":{"entryPoint":10928,"id":7919,"parameterSlots":0,"returnSlots":1},"@_initializableStorageSlot_7905":{"entryPoint":null,"id":7905,"parameterSlots":0,"returnSlots":1},"@_isInitializing_7896":{"entryPoint":15295,"id":7896,"parameterSlots":0,"returnSlots":1},"@_maxDepositable_16178":{"entryPoint":9088,"id":16178,"parameterSlots":0,"returnSlots":1},"@_maxWithdrawable_16120":{"entryPoint":11051,"id":16120,"parameterSlots":1,"returnSlots":1},"@_mint_3496":{"entryPoint":15243,"id":3496,"parameterSlots":2,"returnSlots":0},"@_msgSender_4456":{"entryPoint":null,"id":4456,"parameterSlots":0,"returnSlots":1},"@_safeTransferFrom_9842":{"entryPoint":15681,"id":9842,"parameterSlots":5,"returnSlots":1},"@_safeTransfer_9817":{"entryPoint":15929,"id":9817,"parameterSlots":4,"returnSlots":1},"@_setImplementation_7385":{"entryPoint":15059,"id":7385,"parameterSlots":1,"returnSlots":0},"@_spendAllowance_3663":{"entryPoint":8546,"id":3663,"parameterSlots":3,"returnSlots":0},"@_totalAssets_16216":{"entryPoint":8240,"id":16216,"parameterSlots":0,"returnSlots":1},"@_transfer_3371":{"entryPoint":8627,"id":3371,"parameterSlots":3,"returnSlots":0},"@_tryGetAssetDecimals_3878":{"entryPoint":15790,"id":3878,"parameterSlots":1,"returnSlots":2},"@_update_3463":{"entryPoint":12200,"id":3463,"parameterSlots":3,"returnSlots":0},"@_upgradeToAndCallUUPS_8085":{"entryPoint":9681,"id":8085,"parameterSlots":2,"returnSlots":0},"@_withdrawFromStrategies_16292":{"entryPoint":14342,"id":16292,"parameterSlots":1,"returnSlots":0},"@_withdraw_15167":{"entryPoint":11016,"id":15167,"parameterSlots":5,"returnSlots":0},"@_withdraw_4419":{"entryPoint":14617,"id":4419,"parameterSlots":5,"returnSlots":0},"@addStrategy_16693":{"entryPoint":3455,"id":16693,"parameterSlots":2,"returnSlots":0},"@allowance_3268":{"entryPoint":7612,"id":3268,"parameterSlots":2,"returnSlots":1},"@approve_3292":{"entryPoint":2152,"id":3292,"parameterSlots":2,"returnSlots":1},"@asset_3919":{"entryPoint":2290,"id":3919,"parameterSlots":0,"returnSlots":1},"@balanceOf_3220":{"entryPoint":3104,"id":3220,"parameterSlots":1,"returnSlots":1},"@bubbleRevert_10459":{"entryPoint":15048,"id":10459,"parameterSlots":0,"returnSlots":0},"@changeDepositQueue_17087":{"entryPoint":4066,"id":17087,"parameterSlots":1,"returnSlots":0},"@changeWithdrawQueue_17199":{"entryPoint":6808,"id":17199,"parameterSlots":1,"returnSlots":0},"@checkAsset_15555":{"entryPoint":10306,"id":15555,"parameterSlots":2,"returnSlots":0},"@convertToAssets_3969":{"entryPoint":2135,"id":3969,"parameterSlots":1,"returnSlots":1},"@convertToShares_3953":{"entryPoint":7440,"id":3953,"parameterSlots":1,"returnSlots":1},"@dcConnect_15334":{"entryPoint":10452,"id":15334,"parameterSlots":2,"returnSlots":0},"@dcDeposit_15503":{"entryPoint":11618,"id":15503,"parameterSlots":3,"returnSlots":1},"@dcDisconnect_15385":{"entryPoint":10635,"id":15385,"parameterSlots":2,"returnSlots":0},"@dcForward_15532":{"entryPoint":9006,"id":15532,"parameterSlots":3,"returnSlots":1},"@dcWithdraw_15444":{"entryPoint":11302,"id":15444,"parameterSlots":3,"returnSlots":1},"@decimals_3900":{"entryPoint":2224,"id":3900,"parameterSlots":0,"returnSlots":1},"@delegatecallNoReturn_10421":{"entryPoint":15004,"id":10421,"parameterSlots":2,"returnSlots":1},"@depositQueue_17349":{"entryPoint":8181,"id":17349,"parameterSlots":0,"returnSlots":1},"@depositToStrategies_16379":{"entryPoint":2478,"id":16379,"parameterSlots":1,"returnSlots":0},"@deposit_4135":{"entryPoint":3011,"id":4135,"parameterSlots":2,"returnSlots":1},"@forwardToStrategy_16493":{"entryPoint":2336,"id":16493,"parameterSlots":3,"returnSlots":1},"@functionDelegateCall_10166":{"entryPoint":12494,"id":10166,"parameterSlots":2,"returnSlots":1},"@getAddressSlot_10943":{"entryPoint":null,"id":10943,"parameterSlots":1,"returnSlots":1},"@getBytesSlot_11020":{"entryPoint":null,"id":11020,"parameterSlots":1,"returnSlots":1},"@getBytesSlot_16436":{"entryPoint":2490,"id":16436,"parameterSlots":1,"returnSlots":1},"@getForwardToStrategySelector_15223":{"entryPoint":3972,"id":15223,"parameterSlots":2,"returnSlots":1},"@getFreeMemoryPointer_10485":{"entryPoint":null,"id":10485,"parameterSlots":0,"returnSlots":1},"@getImplementation_7358":{"entryPoint":null,"id":7358,"parameterSlots":0,"returnSlots":1},"@initialize_14953":{"entryPoint":6370,"id":14953,"parameterSlots":7,"returnSlots":0},"@makeSelector_239":{"entryPoint":null,"id":239,"parameterSlots":1,"returnSlots":1},"@maxDeposit_15091":{"entryPoint":2469,"id":15091,"parameterSlots":1,"returnSlots":1},"@maxDeposit_15674":{"entryPoint":11256,"id":15674,"parameterSlots":1,"returnSlots":1},"@maxMint_15126":{"entryPoint":7396,"id":15126,"parameterSlots":1,"returnSlots":1},"@maxRedeem_15078":{"entryPoint":7473,"id":15078,"parameterSlots":1,"returnSlots":1},"@maxRedeem_4027":{"entryPoint":11200,"id":4027,"parameterSlots":1,"returnSlots":1},"@maxWithdraw_15033":{"entryPoint":7451,"id":15033,"parameterSlots":1,"returnSlots":1},"@maxWithdraw_15692":{"entryPoint":11210,"id":15692,"parameterSlots":1,"returnSlots":1},"@maxWithdraw_4014":{"entryPoint":11038,"id":4014,"parameterSlots":1,"returnSlots":1},"@min_11411":{"entryPoint":12654,"id":11411,"parameterSlots":2,"returnSlots":1},"@mint_4179":{"entryPoint":4673,"id":4179,"parameterSlots":2,"returnSlots":1},"@mul512_11124":{"entryPoint":15636,"id":11124,"parameterSlots":2,"returnSlots":2},"@mulDiv_11611":{"entryPoint":14828,"id":11611,"parameterSlots":3,"returnSlots":1},"@mulDiv_11648":{"entryPoint":11907,"id":11648,"parameterSlots":4,"returnSlots":1},"@name_3159":{"entryPoint":1943,"id":3159,"parameterSlots":0,"returnSlots":1},"@panic_10907":{"entryPoint":15664,"id":10907,"parameterSlots":1,"returnSlots":0},"@previewDeposit_4043":{"entryPoint":null,"id":4043,"parameterSlots":1,"returnSlots":1},"@previewMint_4059":{"entryPoint":6642,"id":4059,"parameterSlots":1,"returnSlots":1},"@previewRedeem_4091":{"entryPoint":null,"id":4091,"parameterSlots":1,"returnSlots":1},"@previewWithdraw_4075":{"entryPoint":2175,"id":4075,"parameterSlots":1,"returnSlots":1},"@proxiableUUID_7976":{"entryPoint":2984,"id":7976,"parameterSlots":0,"returnSlots":1},"@rebalance_17326":{"entryPoint":7685,"id":17326,"parameterSlots":3,"returnSlots":1},"@redeem_4273":{"entryPoint":6731,"id":4273,"parameterSlots":3,"returnSlots":1},"@removeStrategy_16975":{"entryPoint":4811,"id":16975,"parameterSlots":2,"returnSlots":0},"@replaceStrategy_16582":{"entryPoint":3142,"id":16582,"parameterSlots":4,"returnSlots":0},"@returnDataSize_10445":{"entryPoint":null,"id":10445,"parameterSlots":0,"returnSlots":1},"@returnData_10453":{"entryPoint":15023,"id":10453,"parameterSlots":0,"returnSlots":1},"@safeTransferFrom_9491":{"entryPoint":15189,"id":9491,"parameterSlots":4,"returnSlots":0},"@safeTransfer_9460":{"entryPoint":15583,"id":9460,"parameterSlots":3,"returnSlots":0},"@setFreeMemoryPointer_10494":{"entryPoint":null,"id":10494,"parameterSlots":1,"returnSlots":0},"@staticcallReturn64Bytes_10409":{"entryPoint":16027,"id":10409,"parameterSlots":2,"returnSlots":3},"@strategies_17338":{"entryPoint":7542,"id":17338,"parameterSlots":0,"returnSlots":1},"@strategyChange_15620":{"entryPoint":9972,"id":15620,"parameterSlots":5,"returnSlots":0},"@symbol_3175":{"entryPoint":4749,"id":3175,"parameterSlots":0,"returnSlots":1},"@ternary_11373":{"entryPoint":null,"id":11373,"parameterSlots":3,"returnSlots":1},"@toUint_14490":{"entryPoint":null,"id":14490,"parameterSlots":1,"returnSlots":1},"@totalAssets_15137":{"entryPoint":1929,"id":15137,"parameterSlots":0,"returnSlots":1},"@totalAssets_15656":{"entryPoint":10530,"id":15656,"parameterSlots":1,"returnSlots":1},"@totalSupply_3200":{"entryPoint":null,"id":3200,"parameterSlots":0,"returnSlots":1},"@transferFrom_3324":{"entryPoint":2187,"id":3324,"parameterSlots":3,"returnSlots":1},"@transfer_3244":{"entryPoint":6629,"id":3244,"parameterSlots":2,"returnSlots":1},"@tryAdd_11159":{"entryPoint":null,"id":11159,"parameterSlots":2,"returnSlots":2},"@unsignedRoundsUp_12704":{"entryPoint":14784,"id":12704,"parameterSlots":1,"returnSlots":1},"@upgradeToAndCall_7421":{"entryPoint":12669,"id":7421,"parameterSlots":2,"returnSlots":0},"@upgradeToAndCall_7996":{"entryPoint":2874,"id":7996,"parameterSlots":2,"returnSlots":0},"@withdrawQueue_17360":{"entryPoint":2896,"id":17360,"parameterSlots":0,"returnSlots":1},"@withdraw_4226":{"entryPoint":6654,"id":4226,"parameterSlots":3,"returnSlots":1},"abi_decode_array_bytes_dyn":{"entryPoint":17315,"id":null,"parameterSlots":2,"returnSlots":1},"abi_decode_array_contract_IInvestStrategy_dyn":{"entryPoint":17215,"id":null,"parameterSlots":2,"returnSlots":1},"abi_decode_array_uint8_dyn":{"entryPoint":17000,"id":null,"parameterSlots":2,"returnSlots":1},"abi_decode_bytes":{"entryPoint":16391,"id":null,"parameterSlots":2,"returnSlots":1},"abi_decode_contract_IERC20":{"entryPoint":17204,"id":null,"parameterSlots":1,"returnSlots":1},"abi_decode_tuple_t_address":{"entryPoint":16593,"id":null,"parameterSlots":2,"returnSlots":1},"abi_decode_tuple_t_address_fromMemory":{"entryPoint":null,"id":null,"parameterSlots":2,"returnSlots":1},"abi_decode_tuple_t_addresst_address":{"entryPoint":17832,"id":null,"parameterSlots":2,"returnSlots":2},"abi_decode_tuple_t_addresst_addresst_uint256":{"entryPoint":16240,"id":null,"parameterSlots":2,"returnSlots":3},"abi_decode_tuple_t_addresst_bytes_memory_ptr":{"entryPoint":16620,"id":null,"parameterSlots":2,"returnSlots":2},"abi_decode_tuple_t_addresst_uint256":{"entryPoint":16198,"id":null,"parameterSlots":2,"returnSlots":2},"abi_decode_tuple_t_array$_t_uint8_$dyn_memory_ptr":{"entryPoint":17113,"id":null,"parameterSlots":2,"returnSlots":1},"abi_decode_tuple_t_boolt_uint32_fromMemory":{"entryPoint":18548,"id":null,"parameterSlots":2,"returnSlots":2},"abi_decode_tuple_t_bytes32":{"entryPoint":null,"id":null,"parameterSlots":2,"returnSlots":1},"abi_decode_tuple_t_bytes32_fromMemory":{"entryPoint":18038,"id":null,"parameterSlots":2,"returnSlots":1},"abi_decode_tuple_t_contract$_IAccessManager_$6842_fromMemory":{"entryPoint":18521,"id":null,"parameterSlots":2,"returnSlots":1},"abi_decode_tuple_t_contract$_IInvestStrategy_$20725t_bytes_memory_ptr":{"entryPoint":null,"id":null,"parameterSlots":2,"returnSlots":2},"abi_decode_tuple_t_string_memory_ptrt_string_memory_ptrt_contract$_IERC20_$8679t_array$_t_contract$_IInvestStrategy_$20725_$dyn_memory_ptrt_array$_t_bytes_memory_ptr_$dyn_memory_ptrt_array$_t_uint8_$dyn_memory_ptrt_array$_t_uint8_$dyn_memory_ptr":{"entryPoint":17441,"id":null,"parameterSlots":2,"returnSlots":7},"abi_decode_tuple_t_uint256":{"entryPoint":16155,"id":null,"parameterSlots":2,"returnSlots":1},"abi_decode_tuple_t_uint256_fromMemory":{"entryPoint":null,"id":null,"parameterSlots":2,"returnSlots":1},"abi_decode_tuple_t_uint256t_address":{"entryPoint":16748,"id":null,"parameterSlots":2,"returnSlots":2},"abi_decode_tuple_t_uint256t_addresst_address":{"entryPoint":17720,"id":null,"parameterSlots":2,"returnSlots":3},"abi_decode_tuple_t_uint8t_bool":{"entryPoint":17162,"id":null,"parameterSlots":2,"returnSlots":2},"abi_decode_tuple_t_uint8t_contract$_IInvestStrategy_$20725t_bytes_memory_ptrt_bool":{"entryPoint":16807,"id":null,"parameterSlots":2,"returnSlots":4},"abi_decode_tuple_t_uint8t_uint8":{"entryPoint":16917,"id":null,"parameterSlots":2,"returnSlots":2},"abi_decode_tuple_t_uint8t_uint8t_bytes_memory_ptr":{"entryPoint":16504,"id":null,"parameterSlots":2,"returnSlots":3},"abi_decode_tuple_t_uint8t_uint8t_uint256":{"entryPoint":17876,"id":null,"parameterSlots":2,"returnSlots":3},"abi_decode_uint8":{"entryPoint":16302,"id":null,"parameterSlots":1,"returnSlots":1},"abi_encode_string":{"entryPoint":16091,"id":null,"parameterSlots":2,"returnSlots":1},"abi_encode_tuple_packed_t_bytes_memory_ptr__to_t_bytes_memory_ptr__nonPadded_inplace_fromStack_reversed":{"entryPoint":18628,"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_bytes4__to_t_address_t_address_t_bytes4__fromStack_reversed":{"entryPoint":null,"id":null,"parameterSlots":4,"returnSlots":1},"abi_encode_tuple_t_address_t_uint256_t_uint256__to_t_address_t_uint256_t_uint256__fromStack_reversed":{"entryPoint":18085,"id":null,"parameterSlots":4,"returnSlots":1},"abi_encode_tuple_t_address_t_uint8__to_t_address_t_uint8__fromStack_reversed":{"entryPoint":null,"id":null,"parameterSlots":3,"returnSlots":1},"abi_encode_tuple_t_array$_t_contract$_IInvestStrategy_$20725_$32_memory_ptr__to_t_array$_t_address_$32_memory_ptr__fromStack_reversed":{"entryPoint":17783,"id":null,"parameterSlots":2,"returnSlots":1},"abi_encode_tuple_t_array$_t_uint8_$32_memory_ptr__to_t_array$_t_uint8_$32_memory_ptr__fromStack_reversed":{"entryPoint":16696,"id":null,"parameterSlots":2,"returnSlots":1},"abi_encode_tuple_t_array$_t_uint8_$dyn_memory_ptr__to_t_array$_t_uint8_$dyn_memory_ptr__fromStack_reversed":{"entryPoint":18137,"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_bytes4__to_t_bytes4__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":null,"id":null,"parameterSlots":2,"returnSlots":1},"abi_encode_tuple_t_contract$_IInvestStrategy_$20725__to_t_address__fromStack_reversed":{"entryPoint":null,"id":null,"parameterSlots":2,"returnSlots":1},"abi_encode_tuple_t_contract$_IInvestStrategy_$20725_t_contract$_IInvestStrategy_$20725__to_t_address_t_address__fromStack_reversed":{"entryPoint":null,"id":null,"parameterSlots":3,"returnSlots":1},"abi_encode_tuple_t_rational_1_by_1__to_t_uint64__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":16137,"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_uint8__to_t_uint8__fromStack_reversed":{"entryPoint":null,"id":null,"parameterSlots":2,"returnSlots":1},"abi_encode_tuple_t_uint8_t_bytes_memory_ptr__to_t_uint8_t_bytes_memory_ptr__fromStack_reversed":{"entryPoint":18601,"id":null,"parameterSlots":3,"returnSlots":1},"allocate_memory":{"entryPoint":16343,"id":null,"parameterSlots":1,"returnSlots":1},"array_allocation_size_array_uint8_dyn":{"entryPoint":16966,"id":null,"parameterSlots":1,"returnSlots":1},"array_dataslot_string_storage":{"entryPoint":null,"id":null,"parameterSlots":1,"returnSlots":1},"checked_add_t_uint256":{"entryPoint":18118,"id":null,"parameterSlots":2,"returnSlots":1},"checked_add_t_uint8":{"entryPoint":17993,"id":null,"parameterSlots":2,"returnSlots":1},"checked_exp_helper":{"entryPoint":18280,"id":null,"parameterSlots":3,"returnSlots":2},"checked_exp_t_uint256_t_uint8":{"entryPoint":18507,"id":null,"parameterSlots":2,"returnSlots":1},"checked_exp_unsigned":{"entryPoint":18347,"id":null,"parameterSlots":2,"returnSlots":1},"checked_sub_t_uint256":{"entryPoint":18206,"id":null,"parameterSlots":2,"returnSlots":1},"checked_sub_t_uint8":{"entryPoint":18225,"id":null,"parameterSlots":2,"returnSlots":1},"clean_up_bytearray_end_slots_string_storage":{"entryPoint":18735,"id":null,"parameterSlots":3,"returnSlots":0},"copy_byte_array_to_storage_from_t_string_memory_ptr_to_t_string_storage":{"entryPoint":18803,"id":null,"parameterSlots":2,"returnSlots":0},"extract_byte_array_length":{"entryPoint":17917,"id":null,"parameterSlots":1,"returnSlots":1},"extract_used_part_and_set_length_of_short_byte_array":{"entryPoint":null,"id":null,"parameterSlots":2,"returnSlots":1},"increment_t_uint256":{"entryPoint":18061,"id":null,"parameterSlots":1,"returnSlots":1},"increment_t_uint8":{"entryPoint":18250,"id":null,"parameterSlots":1,"returnSlots":1},"mod_t_uint8":{"entryPoint":18690,"id":null,"parameterSlots":2,"returnSlots":1},"panic_error_0x11":{"entryPoint":17973,"id":null,"parameterSlots":0,"returnSlots":0},"panic_error_0x12":{"entryPoint":18650,"id":null,"parameterSlots":0,"returnSlots":0},"panic_error_0x21":{"entryPoint":18670,"id":null,"parameterSlots":0,"returnSlots":0},"panic_error_0x32":{"entryPoint":18018,"id":null,"parameterSlots":0,"returnSlots":0},"panic_error_0x41":{"entryPoint":16323,"id":null,"parameterSlots":0,"returnSlots":0},"validator_revert_address":{"entryPoint":16178,"id":null,"parameterSlots":1,"returnSlots":0},"validator_revert_bool":{"entryPoint":16794,"id":null,"parameterSlots":1,"returnSlots":0}},"generatedSources":[{"ast":{"nativeSrc":"0:25142:87","nodeType":"YulBlock","src":"0:25142:87","statements":[{"nativeSrc":"6:3:87","nodeType":"YulBlock","src":"6:3:87","statements":[]},{"body":{"nativeSrc":"115:76:87","nodeType":"YulBlock","src":"115:76:87","statements":[{"nativeSrc":"125:26:87","nodeType":"YulAssignment","src":"125:26:87","value":{"arguments":[{"name":"headStart","nativeSrc":"137:9:87","nodeType":"YulIdentifier","src":"137:9:87"},{"kind":"number","nativeSrc":"148:2:87","nodeType":"YulLiteral","src":"148:2:87","type":"","value":"32"}],"functionName":{"name":"add","nativeSrc":"133:3:87","nodeType":"YulIdentifier","src":"133:3:87"},"nativeSrc":"133:18:87","nodeType":"YulFunctionCall","src":"133:18:87"},"variableNames":[{"name":"tail","nativeSrc":"125:4:87","nodeType":"YulIdentifier","src":"125:4:87"}]},{"expression":{"arguments":[{"name":"headStart","nativeSrc":"167:9:87","nodeType":"YulIdentifier","src":"167:9:87"},{"name":"value0","nativeSrc":"178:6:87","nodeType":"YulIdentifier","src":"178:6:87"}],"functionName":{"name":"mstore","nativeSrc":"160:6:87","nodeType":"YulIdentifier","src":"160:6:87"},"nativeSrc":"160:25:87","nodeType":"YulFunctionCall","src":"160:25:87"},"nativeSrc":"160:25:87","nodeType":"YulExpressionStatement","src":"160:25:87"}]},"name":"abi_encode_tuple_t_uint256__to_t_uint256__fromStack_reversed","nativeSrc":"14:177:87","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nativeSrc":"84:9:87","nodeType":"YulTypedName","src":"84:9:87","type":""},{"name":"value0","nativeSrc":"95:6:87","nodeType":"YulTypedName","src":"95:6:87","type":""}],"returnVariables":[{"name":"tail","nativeSrc":"106:4:87","nodeType":"YulTypedName","src":"106:4:87","type":""}],"src":"14:177:87"},{"body":{"nativeSrc":"246:239:87","nodeType":"YulBlock","src":"246:239:87","statements":[{"nativeSrc":"256:26:87","nodeType":"YulVariableDeclaration","src":"256:26:87","value":{"arguments":[{"name":"value","nativeSrc":"276:5:87","nodeType":"YulIdentifier","src":"276:5:87"}],"functionName":{"name":"mload","nativeSrc":"270:5:87","nodeType":"YulIdentifier","src":"270:5:87"},"nativeSrc":"270:12:87","nodeType":"YulFunctionCall","src":"270:12:87"},"variables":[{"name":"length","nativeSrc":"260:6:87","nodeType":"YulTypedName","src":"260:6:87","type":""}]},{"expression":{"arguments":[{"name":"pos","nativeSrc":"298:3:87","nodeType":"YulIdentifier","src":"298:3:87"},{"name":"length","nativeSrc":"303:6:87","nodeType":"YulIdentifier","src":"303:6:87"}],"functionName":{"name":"mstore","nativeSrc":"291:6:87","nodeType":"YulIdentifier","src":"291:6:87"},"nativeSrc":"291:19:87","nodeType":"YulFunctionCall","src":"291:19:87"},"nativeSrc":"291:19:87","nodeType":"YulExpressionStatement","src":"291:19:87"},{"expression":{"arguments":[{"arguments":[{"name":"pos","nativeSrc":"329:3:87","nodeType":"YulIdentifier","src":"329:3:87"},{"kind":"number","nativeSrc":"334:4:87","nodeType":"YulLiteral","src":"334:4:87","type":"","value":"0x20"}],"functionName":{"name":"add","nativeSrc":"325:3:87","nodeType":"YulIdentifier","src":"325:3:87"},"nativeSrc":"325:14:87","nodeType":"YulFunctionCall","src":"325:14:87"},{"arguments":[{"name":"value","nativeSrc":"345:5:87","nodeType":"YulIdentifier","src":"345:5:87"},{"kind":"number","nativeSrc":"352:4:87","nodeType":"YulLiteral","src":"352:4:87","type":"","value":"0x20"}],"functionName":{"name":"add","nativeSrc":"341:3:87","nodeType":"YulIdentifier","src":"341:3:87"},"nativeSrc":"341:16:87","nodeType":"YulFunctionCall","src":"341:16:87"},{"name":"length","nativeSrc":"359:6:87","nodeType":"YulIdentifier","src":"359:6:87"}],"functionName":{"name":"mcopy","nativeSrc":"319:5:87","nodeType":"YulIdentifier","src":"319:5:87"},"nativeSrc":"319:47:87","nodeType":"YulFunctionCall","src":"319:47:87"},"nativeSrc":"319:47:87","nodeType":"YulExpressionStatement","src":"319:47:87"},{"expression":{"arguments":[{"arguments":[{"arguments":[{"name":"pos","nativeSrc":"390:3:87","nodeType":"YulIdentifier","src":"390:3:87"},{"name":"length","nativeSrc":"395:6:87","nodeType":"YulIdentifier","src":"395:6:87"}],"functionName":{"name":"add","nativeSrc":"386:3:87","nodeType":"YulIdentifier","src":"386:3:87"},"nativeSrc":"386:16:87","nodeType":"YulFunctionCall","src":"386:16:87"},{"kind":"number","nativeSrc":"404:4:87","nodeType":"YulLiteral","src":"404:4:87","type":"","value":"0x20"}],"functionName":{"name":"add","nativeSrc":"382:3:87","nodeType":"YulIdentifier","src":"382:3:87"},"nativeSrc":"382:27:87","nodeType":"YulFunctionCall","src":"382:27:87"},{"kind":"number","nativeSrc":"411:1:87","nodeType":"YulLiteral","src":"411:1:87","type":"","value":"0"}],"functionName":{"name":"mstore","nativeSrc":"375:6:87","nodeType":"YulIdentifier","src":"375:6:87"},"nativeSrc":"375:38:87","nodeType":"YulFunctionCall","src":"375:38:87"},"nativeSrc":"375:38:87","nodeType":"YulExpressionStatement","src":"375:38:87"},{"nativeSrc":"422:57:87","nodeType":"YulAssignment","src":"422:57:87","value":{"arguments":[{"arguments":[{"name":"pos","nativeSrc":"437:3:87","nodeType":"YulIdentifier","src":"437:3:87"},{"arguments":[{"arguments":[{"name":"length","nativeSrc":"450:6:87","nodeType":"YulIdentifier","src":"450:6:87"},{"kind":"number","nativeSrc":"458:2:87","nodeType":"YulLiteral","src":"458:2:87","type":"","value":"31"}],"functionName":{"name":"add","nativeSrc":"446:3:87","nodeType":"YulIdentifier","src":"446:3:87"},"nativeSrc":"446:15:87","nodeType":"YulFunctionCall","src":"446:15:87"},{"arguments":[{"kind":"number","nativeSrc":"467:2:87","nodeType":"YulLiteral","src":"467:2:87","type":"","value":"31"}],"functionName":{"name":"not","nativeSrc":"463:3:87","nodeType":"YulIdentifier","src":"463:3:87"},"nativeSrc":"463:7:87","nodeType":"YulFunctionCall","src":"463:7:87"}],"functionName":{"name":"and","nativeSrc":"442:3:87","nodeType":"YulIdentifier","src":"442:3:87"},"nativeSrc":"442:29:87","nodeType":"YulFunctionCall","src":"442:29:87"}],"functionName":{"name":"add","nativeSrc":"433:3:87","nodeType":"YulIdentifier","src":"433:3:87"},"nativeSrc":"433:39:87","nodeType":"YulFunctionCall","src":"433:39:87"},{"kind":"number","nativeSrc":"474:4:87","nodeType":"YulLiteral","src":"474:4:87","type":"","value":"0x20"}],"functionName":{"name":"add","nativeSrc":"429:3:87","nodeType":"YulIdentifier","src":"429:3:87"},"nativeSrc":"429:50:87","nodeType":"YulFunctionCall","src":"429:50:87"},"variableNames":[{"name":"end","nativeSrc":"422:3:87","nodeType":"YulIdentifier","src":"422:3:87"}]}]},"name":"abi_encode_string","nativeSrc":"196:289:87","nodeType":"YulFunctionDefinition","parameters":[{"name":"value","nativeSrc":"223:5:87","nodeType":"YulTypedName","src":"223:5:87","type":""},{"name":"pos","nativeSrc":"230:3:87","nodeType":"YulTypedName","src":"230:3:87","type":""}],"returnVariables":[{"name":"end","nativeSrc":"238:3:87","nodeType":"YulTypedName","src":"238:3:87","type":""}],"src":"196:289:87"},{"body":{"nativeSrc":"611:99:87","nodeType":"YulBlock","src":"611:99:87","statements":[{"expression":{"arguments":[{"name":"headStart","nativeSrc":"628:9:87","nodeType":"YulIdentifier","src":"628:9:87"},{"kind":"number","nativeSrc":"639:2:87","nodeType":"YulLiteral","src":"639:2:87","type":"","value":"32"}],"functionName":{"name":"mstore","nativeSrc":"621:6:87","nodeType":"YulIdentifier","src":"621:6:87"},"nativeSrc":"621:21:87","nodeType":"YulFunctionCall","src":"621:21:87"},"nativeSrc":"621:21:87","nodeType":"YulExpressionStatement","src":"621:21:87"},{"nativeSrc":"651:53:87","nodeType":"YulAssignment","src":"651:53:87","value":{"arguments":[{"name":"value0","nativeSrc":"677:6:87","nodeType":"YulIdentifier","src":"677:6:87"},{"arguments":[{"name":"headStart","nativeSrc":"689:9:87","nodeType":"YulIdentifier","src":"689:9:87"},{"kind":"number","nativeSrc":"700:2:87","nodeType":"YulLiteral","src":"700:2:87","type":"","value":"32"}],"functionName":{"name":"add","nativeSrc":"685:3:87","nodeType":"YulIdentifier","src":"685:3:87"},"nativeSrc":"685:18:87","nodeType":"YulFunctionCall","src":"685:18:87"}],"functionName":{"name":"abi_encode_string","nativeSrc":"659:17:87","nodeType":"YulIdentifier","src":"659:17:87"},"nativeSrc":"659:45:87","nodeType":"YulFunctionCall","src":"659:45:87"},"variableNames":[{"name":"tail","nativeSrc":"651:4:87","nodeType":"YulIdentifier","src":"651:4:87"}]}]},"name":"abi_encode_tuple_t_string_memory_ptr__to_t_string_memory_ptr__fromStack_reversed","nativeSrc":"490:220:87","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nativeSrc":"580:9:87","nodeType":"YulTypedName","src":"580:9:87","type":""},{"name":"value0","nativeSrc":"591:6:87","nodeType":"YulTypedName","src":"591:6:87","type":""}],"returnVariables":[{"name":"tail","nativeSrc":"602:4:87","nodeType":"YulTypedName","src":"602:4:87","type":""}],"src":"490:220:87"},{"body":{"nativeSrc":"785:156:87","nodeType":"YulBlock","src":"785:156:87","statements":[{"body":{"nativeSrc":"831:16:87","nodeType":"YulBlock","src":"831:16:87","statements":[{"expression":{"arguments":[{"kind":"number","nativeSrc":"840:1:87","nodeType":"YulLiteral","src":"840:1:87","type":"","value":"0"},{"kind":"number","nativeSrc":"843:1:87","nodeType":"YulLiteral","src":"843:1:87","type":"","value":"0"}],"functionName":{"name":"revert","nativeSrc":"833:6:87","nodeType":"YulIdentifier","src":"833:6:87"},"nativeSrc":"833:12:87","nodeType":"YulFunctionCall","src":"833:12:87"},"nativeSrc":"833:12:87","nodeType":"YulExpressionStatement","src":"833:12:87"}]},"condition":{"arguments":[{"arguments":[{"name":"dataEnd","nativeSrc":"806:7:87","nodeType":"YulIdentifier","src":"806:7:87"},{"name":"headStart","nativeSrc":"815:9:87","nodeType":"YulIdentifier","src":"815:9:87"}],"functionName":{"name":"sub","nativeSrc":"802:3:87","nodeType":"YulIdentifier","src":"802:3:87"},"nativeSrc":"802:23:87","nodeType":"YulFunctionCall","src":"802:23:87"},{"kind":"number","nativeSrc":"827:2:87","nodeType":"YulLiteral","src":"827:2:87","type":"","value":"32"}],"functionName":{"name":"slt","nativeSrc":"798:3:87","nodeType":"YulIdentifier","src":"798:3:87"},"nativeSrc":"798:32:87","nodeType":"YulFunctionCall","src":"798:32:87"},"nativeSrc":"795:52:87","nodeType":"YulIf","src":"795:52:87"},{"nativeSrc":"856:14:87","nodeType":"YulVariableDeclaration","src":"856:14:87","value":{"kind":"number","nativeSrc":"869:1:87","nodeType":"YulLiteral","src":"869:1:87","type":"","value":"0"},"variables":[{"name":"value","nativeSrc":"860:5:87","nodeType":"YulTypedName","src":"860:5:87","type":""}]},{"nativeSrc":"879:32:87","nodeType":"YulAssignment","src":"879:32:87","value":{"arguments":[{"name":"headStart","nativeSrc":"901:9:87","nodeType":"YulIdentifier","src":"901:9:87"}],"functionName":{"name":"calldataload","nativeSrc":"888:12:87","nodeType":"YulIdentifier","src":"888:12:87"},"nativeSrc":"888:23:87","nodeType":"YulFunctionCall","src":"888:23:87"},"variableNames":[{"name":"value","nativeSrc":"879:5:87","nodeType":"YulIdentifier","src":"879:5:87"}]},{"nativeSrc":"920:15:87","nodeType":"YulAssignment","src":"920:15:87","value":{"name":"value","nativeSrc":"930:5:87","nodeType":"YulIdentifier","src":"930:5:87"},"variableNames":[{"name":"value0","nativeSrc":"920:6:87","nodeType":"YulIdentifier","src":"920:6:87"}]}]},"name":"abi_decode_tuple_t_uint256","nativeSrc":"715:226:87","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nativeSrc":"751:9:87","nodeType":"YulTypedName","src":"751:9:87","type":""},{"name":"dataEnd","nativeSrc":"762:7:87","nodeType":"YulTypedName","src":"762:7:87","type":""}],"returnVariables":[{"name":"value0","nativeSrc":"774:6:87","nodeType":"YulTypedName","src":"774:6:87","type":""}],"src":"715:226:87"},{"body":{"nativeSrc":"991:86:87","nodeType":"YulBlock","src":"991:86:87","statements":[{"body":{"nativeSrc":"1055:16:87","nodeType":"YulBlock","src":"1055:16:87","statements":[{"expression":{"arguments":[{"kind":"number","nativeSrc":"1064:1:87","nodeType":"YulLiteral","src":"1064:1:87","type":"","value":"0"},{"kind":"number","nativeSrc":"1067:1:87","nodeType":"YulLiteral","src":"1067:1:87","type":"","value":"0"}],"functionName":{"name":"revert","nativeSrc":"1057:6:87","nodeType":"YulIdentifier","src":"1057:6:87"},"nativeSrc":"1057:12:87","nodeType":"YulFunctionCall","src":"1057:12:87"},"nativeSrc":"1057:12:87","nodeType":"YulExpressionStatement","src":"1057:12:87"}]},"condition":{"arguments":[{"arguments":[{"name":"value","nativeSrc":"1014:5:87","nodeType":"YulIdentifier","src":"1014:5:87"},{"arguments":[{"name":"value","nativeSrc":"1025:5:87","nodeType":"YulIdentifier","src":"1025:5:87"},{"arguments":[{"arguments":[{"kind":"number","nativeSrc":"1040:3:87","nodeType":"YulLiteral","src":"1040:3:87","type":"","value":"160"},{"kind":"number","nativeSrc":"1045:1:87","nodeType":"YulLiteral","src":"1045:1:87","type":"","value":"1"}],"functionName":{"name":"shl","nativeSrc":"1036:3:87","nodeType":"YulIdentifier","src":"1036:3:87"},"nativeSrc":"1036:11:87","nodeType":"YulFunctionCall","src":"1036:11:87"},{"kind":"number","nativeSrc":"1049:1:87","nodeType":"YulLiteral","src":"1049:1:87","type":"","value":"1"}],"functionName":{"name":"sub","nativeSrc":"1032:3:87","nodeType":"YulIdentifier","src":"1032:3:87"},"nativeSrc":"1032:19:87","nodeType":"YulFunctionCall","src":"1032:19:87"}],"functionName":{"name":"and","nativeSrc":"1021:3:87","nodeType":"YulIdentifier","src":"1021:3:87"},"nativeSrc":"1021:31:87","nodeType":"YulFunctionCall","src":"1021:31:87"}],"functionName":{"name":"eq","nativeSrc":"1011:2:87","nodeType":"YulIdentifier","src":"1011:2:87"},"nativeSrc":"1011:42:87","nodeType":"YulFunctionCall","src":"1011:42:87"}],"functionName":{"name":"iszero","nativeSrc":"1004:6:87","nodeType":"YulIdentifier","src":"1004:6:87"},"nativeSrc":"1004:50:87","nodeType":"YulFunctionCall","src":"1004:50:87"},"nativeSrc":"1001:70:87","nodeType":"YulIf","src":"1001:70:87"}]},"name":"validator_revert_address","nativeSrc":"946:131:87","nodeType":"YulFunctionDefinition","parameters":[{"name":"value","nativeSrc":"980:5:87","nodeType":"YulTypedName","src":"980:5:87","type":""}],"src":"946:131:87"},{"body":{"nativeSrc":"1169:280:87","nodeType":"YulBlock","src":"1169:280:87","statements":[{"body":{"nativeSrc":"1215:16:87","nodeType":"YulBlock","src":"1215:16:87","statements":[{"expression":{"arguments":[{"kind":"number","nativeSrc":"1224:1:87","nodeType":"YulLiteral","src":"1224:1:87","type":"","value":"0"},{"kind":"number","nativeSrc":"1227:1:87","nodeType":"YulLiteral","src":"1227:1:87","type":"","value":"0"}],"functionName":{"name":"revert","nativeSrc":"1217:6:87","nodeType":"YulIdentifier","src":"1217:6:87"},"nativeSrc":"1217:12:87","nodeType":"YulFunctionCall","src":"1217:12:87"},"nativeSrc":"1217:12:87","nodeType":"YulExpressionStatement","src":"1217:12:87"}]},"condition":{"arguments":[{"arguments":[{"name":"dataEnd","nativeSrc":"1190:7:87","nodeType":"YulIdentifier","src":"1190:7:87"},{"name":"headStart","nativeSrc":"1199:9:87","nodeType":"YulIdentifier","src":"1199:9:87"}],"functionName":{"name":"sub","nativeSrc":"1186:3:87","nodeType":"YulIdentifier","src":"1186:3:87"},"nativeSrc":"1186:23:87","nodeType":"YulFunctionCall","src":"1186:23:87"},{"kind":"number","nativeSrc":"1211:2:87","nodeType":"YulLiteral","src":"1211:2:87","type":"","value":"64"}],"functionName":{"name":"slt","nativeSrc":"1182:3:87","nodeType":"YulIdentifier","src":"1182:3:87"},"nativeSrc":"1182:32:87","nodeType":"YulFunctionCall","src":"1182:32:87"},"nativeSrc":"1179:52:87","nodeType":"YulIf","src":"1179:52:87"},{"nativeSrc":"1240:36:87","nodeType":"YulVariableDeclaration","src":"1240:36:87","value":{"arguments":[{"name":"headStart","nativeSrc":"1266:9:87","nodeType":"YulIdentifier","src":"1266:9:87"}],"functionName":{"name":"calldataload","nativeSrc":"1253:12:87","nodeType":"YulIdentifier","src":"1253:12:87"},"nativeSrc":"1253:23:87","nodeType":"YulFunctionCall","src":"1253:23:87"},"variables":[{"name":"value","nativeSrc":"1244:5:87","nodeType":"YulTypedName","src":"1244:5:87","type":""}]},{"expression":{"arguments":[{"name":"value","nativeSrc":"1310:5:87","nodeType":"YulIdentifier","src":"1310:5:87"}],"functionName":{"name":"validator_revert_address","nativeSrc":"1285:24:87","nodeType":"YulIdentifier","src":"1285:24:87"},"nativeSrc":"1285:31:87","nodeType":"YulFunctionCall","src":"1285:31:87"},"nativeSrc":"1285:31:87","nodeType":"YulExpressionStatement","src":"1285:31:87"},{"nativeSrc":"1325:15:87","nodeType":"YulAssignment","src":"1325:15:87","value":{"name":"value","nativeSrc":"1335:5:87","nodeType":"YulIdentifier","src":"1335:5:87"},"variableNames":[{"name":"value0","nativeSrc":"1325:6:87","nodeType":"YulIdentifier","src":"1325:6:87"}]},{"nativeSrc":"1349:16:87","nodeType":"YulVariableDeclaration","src":"1349:16:87","value":{"kind":"number","nativeSrc":"1364:1:87","nodeType":"YulLiteral","src":"1364:1:87","type":"","value":"0"},"variables":[{"name":"value_1","nativeSrc":"1353:7:87","nodeType":"YulTypedName","src":"1353:7:87","type":""}]},{"nativeSrc":"1374:43:87","nodeType":"YulAssignment","src":"1374:43:87","value":{"arguments":[{"arguments":[{"name":"headStart","nativeSrc":"1402:9:87","nodeType":"YulIdentifier","src":"1402:9:87"},{"kind":"number","nativeSrc":"1413:2:87","nodeType":"YulLiteral","src":"1413:2:87","type":"","value":"32"}],"functionName":{"name":"add","nativeSrc":"1398:3:87","nodeType":"YulIdentifier","src":"1398:3:87"},"nativeSrc":"1398:18:87","nodeType":"YulFunctionCall","src":"1398:18:87"}],"functionName":{"name":"calldataload","nativeSrc":"1385:12:87","nodeType":"YulIdentifier","src":"1385:12:87"},"nativeSrc":"1385:32:87","nodeType":"YulFunctionCall","src":"1385:32:87"},"variableNames":[{"name":"value_1","nativeSrc":"1374:7:87","nodeType":"YulIdentifier","src":"1374:7:87"}]},{"nativeSrc":"1426:17:87","nodeType":"YulAssignment","src":"1426:17:87","value":{"name":"value_1","nativeSrc":"1436:7:87","nodeType":"YulIdentifier","src":"1436:7:87"},"variableNames":[{"name":"value1","nativeSrc":"1426:6:87","nodeType":"YulIdentifier","src":"1426:6:87"}]}]},"name":"abi_decode_tuple_t_addresst_uint256","nativeSrc":"1082:367:87","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nativeSrc":"1127:9:87","nodeType":"YulTypedName","src":"1127:9:87","type":""},{"name":"dataEnd","nativeSrc":"1138:7:87","nodeType":"YulTypedName","src":"1138:7:87","type":""}],"returnVariables":[{"name":"value0","nativeSrc":"1150:6:87","nodeType":"YulTypedName","src":"1150:6:87","type":""},{"name":"value1","nativeSrc":"1158:6:87","nodeType":"YulTypedName","src":"1158:6:87","type":""}],"src":"1082:367:87"},{"body":{"nativeSrc":"1549:92:87","nodeType":"YulBlock","src":"1549:92:87","statements":[{"nativeSrc":"1559:26:87","nodeType":"YulAssignment","src":"1559:26:87","value":{"arguments":[{"name":"headStart","nativeSrc":"1571:9:87","nodeType":"YulIdentifier","src":"1571:9:87"},{"kind":"number","nativeSrc":"1582:2:87","nodeType":"YulLiteral","src":"1582:2:87","type":"","value":"32"}],"functionName":{"name":"add","nativeSrc":"1567:3:87","nodeType":"YulIdentifier","src":"1567:3:87"},"nativeSrc":"1567:18:87","nodeType":"YulFunctionCall","src":"1567:18:87"},"variableNames":[{"name":"tail","nativeSrc":"1559:4:87","nodeType":"YulIdentifier","src":"1559:4:87"}]},{"expression":{"arguments":[{"name":"headStart","nativeSrc":"1601:9:87","nodeType":"YulIdentifier","src":"1601:9:87"},{"arguments":[{"arguments":[{"name":"value0","nativeSrc":"1626:6:87","nodeType":"YulIdentifier","src":"1626:6:87"}],"functionName":{"name":"iszero","nativeSrc":"1619:6:87","nodeType":"YulIdentifier","src":"1619:6:87"},"nativeSrc":"1619:14:87","nodeType":"YulFunctionCall","src":"1619:14:87"}],"functionName":{"name":"iszero","nativeSrc":"1612:6:87","nodeType":"YulIdentifier","src":"1612:6:87"},"nativeSrc":"1612:22:87","nodeType":"YulFunctionCall","src":"1612:22:87"}],"functionName":{"name":"mstore","nativeSrc":"1594:6:87","nodeType":"YulIdentifier","src":"1594:6:87"},"nativeSrc":"1594:41:87","nodeType":"YulFunctionCall","src":"1594:41:87"},"nativeSrc":"1594:41:87","nodeType":"YulExpressionStatement","src":"1594:41:87"}]},"name":"abi_encode_tuple_t_bool__to_t_bool__fromStack_reversed","nativeSrc":"1454:187:87","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nativeSrc":"1518:9:87","nodeType":"YulTypedName","src":"1518:9:87","type":""},{"name":"value0","nativeSrc":"1529:6:87","nodeType":"YulTypedName","src":"1529:6:87","type":""}],"returnVariables":[{"name":"tail","nativeSrc":"1540:4:87","nodeType":"YulTypedName","src":"1540:4:87","type":""}],"src":"1454:187:87"},{"body":{"nativeSrc":"1750:404:87","nodeType":"YulBlock","src":"1750:404:87","statements":[{"body":{"nativeSrc":"1796:16:87","nodeType":"YulBlock","src":"1796:16:87","statements":[{"expression":{"arguments":[{"kind":"number","nativeSrc":"1805:1:87","nodeType":"YulLiteral","src":"1805:1:87","type":"","value":"0"},{"kind":"number","nativeSrc":"1808:1:87","nodeType":"YulLiteral","src":"1808:1:87","type":"","value":"0"}],"functionName":{"name":"revert","nativeSrc":"1798:6:87","nodeType":"YulIdentifier","src":"1798:6:87"},"nativeSrc":"1798:12:87","nodeType":"YulFunctionCall","src":"1798:12:87"},"nativeSrc":"1798:12:87","nodeType":"YulExpressionStatement","src":"1798:12:87"}]},"condition":{"arguments":[{"arguments":[{"name":"dataEnd","nativeSrc":"1771:7:87","nodeType":"YulIdentifier","src":"1771:7:87"},{"name":"headStart","nativeSrc":"1780:9:87","nodeType":"YulIdentifier","src":"1780:9:87"}],"functionName":{"name":"sub","nativeSrc":"1767:3:87","nodeType":"YulIdentifier","src":"1767:3:87"},"nativeSrc":"1767:23:87","nodeType":"YulFunctionCall","src":"1767:23:87"},{"kind":"number","nativeSrc":"1792:2:87","nodeType":"YulLiteral","src":"1792:2:87","type":"","value":"96"}],"functionName":{"name":"slt","nativeSrc":"1763:3:87","nodeType":"YulIdentifier","src":"1763:3:87"},"nativeSrc":"1763:32:87","nodeType":"YulFunctionCall","src":"1763:32:87"},"nativeSrc":"1760:52:87","nodeType":"YulIf","src":"1760:52:87"},{"nativeSrc":"1821:36:87","nodeType":"YulVariableDeclaration","src":"1821:36:87","value":{"arguments":[{"name":"headStart","nativeSrc":"1847:9:87","nodeType":"YulIdentifier","src":"1847:9:87"}],"functionName":{"name":"calldataload","nativeSrc":"1834:12:87","nodeType":"YulIdentifier","src":"1834:12:87"},"nativeSrc":"1834:23:87","nodeType":"YulFunctionCall","src":"1834:23:87"},"variables":[{"name":"value","nativeSrc":"1825:5:87","nodeType":"YulTypedName","src":"1825:5:87","type":""}]},{"expression":{"arguments":[{"name":"value","nativeSrc":"1891:5:87","nodeType":"YulIdentifier","src":"1891:5:87"}],"functionName":{"name":"validator_revert_address","nativeSrc":"1866:24:87","nodeType":"YulIdentifier","src":"1866:24:87"},"nativeSrc":"1866:31:87","nodeType":"YulFunctionCall","src":"1866:31:87"},"nativeSrc":"1866:31:87","nodeType":"YulExpressionStatement","src":"1866:31:87"},{"nativeSrc":"1906:15:87","nodeType":"YulAssignment","src":"1906:15:87","value":{"name":"value","nativeSrc":"1916:5:87","nodeType":"YulIdentifier","src":"1916:5:87"},"variableNames":[{"name":"value0","nativeSrc":"1906:6:87","nodeType":"YulIdentifier","src":"1906:6:87"}]},{"nativeSrc":"1930:47:87","nodeType":"YulVariableDeclaration","src":"1930:47:87","value":{"arguments":[{"arguments":[{"name":"headStart","nativeSrc":"1962:9:87","nodeType":"YulIdentifier","src":"1962:9:87"},{"kind":"number","nativeSrc":"1973:2:87","nodeType":"YulLiteral","src":"1973:2:87","type":"","value":"32"}],"functionName":{"name":"add","nativeSrc":"1958:3:87","nodeType":"YulIdentifier","src":"1958:3:87"},"nativeSrc":"1958:18:87","nodeType":"YulFunctionCall","src":"1958:18:87"}],"functionName":{"name":"calldataload","nativeSrc":"1945:12:87","nodeType":"YulIdentifier","src":"1945:12:87"},"nativeSrc":"1945:32:87","nodeType":"YulFunctionCall","src":"1945:32:87"},"variables":[{"name":"value_1","nativeSrc":"1934:7:87","nodeType":"YulTypedName","src":"1934:7:87","type":""}]},{"expression":{"arguments":[{"name":"value_1","nativeSrc":"2011:7:87","nodeType":"YulIdentifier","src":"2011:7:87"}],"functionName":{"name":"validator_revert_address","nativeSrc":"1986:24:87","nodeType":"YulIdentifier","src":"1986:24:87"},"nativeSrc":"1986:33:87","nodeType":"YulFunctionCall","src":"1986:33:87"},"nativeSrc":"1986:33:87","nodeType":"YulExpressionStatement","src":"1986:33:87"},{"nativeSrc":"2028:17:87","nodeType":"YulAssignment","src":"2028:17:87","value":{"name":"value_1","nativeSrc":"2038:7:87","nodeType":"YulIdentifier","src":"2038:7:87"},"variableNames":[{"name":"value1","nativeSrc":"2028:6:87","nodeType":"YulIdentifier","src":"2028:6:87"}]},{"nativeSrc":"2054:16:87","nodeType":"YulVariableDeclaration","src":"2054:16:87","value":{"kind":"number","nativeSrc":"2069:1:87","nodeType":"YulLiteral","src":"2069:1:87","type":"","value":"0"},"variables":[{"name":"value_2","nativeSrc":"2058:7:87","nodeType":"YulTypedName","src":"2058:7:87","type":""}]},{"nativeSrc":"2079:43:87","nodeType":"YulAssignment","src":"2079:43:87","value":{"arguments":[{"arguments":[{"name":"headStart","nativeSrc":"2107:9:87","nodeType":"YulIdentifier","src":"2107:9:87"},{"kind":"number","nativeSrc":"2118:2:87","nodeType":"YulLiteral","src":"2118:2:87","type":"","value":"64"}],"functionName":{"name":"add","nativeSrc":"2103:3:87","nodeType":"YulIdentifier","src":"2103:3:87"},"nativeSrc":"2103:18:87","nodeType":"YulFunctionCall","src":"2103:18:87"}],"functionName":{"name":"calldataload","nativeSrc":"2090:12:87","nodeType":"YulIdentifier","src":"2090:12:87"},"nativeSrc":"2090:32:87","nodeType":"YulFunctionCall","src":"2090:32:87"},"variableNames":[{"name":"value_2","nativeSrc":"2079:7:87","nodeType":"YulIdentifier","src":"2079:7:87"}]},{"nativeSrc":"2131:17:87","nodeType":"YulAssignment","src":"2131:17:87","value":{"name":"value_2","nativeSrc":"2141:7:87","nodeType":"YulIdentifier","src":"2141:7:87"},"variableNames":[{"name":"value2","nativeSrc":"2131:6:87","nodeType":"YulIdentifier","src":"2131:6:87"}]}]},"name":"abi_decode_tuple_t_addresst_addresst_uint256","nativeSrc":"1646:508:87","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nativeSrc":"1700:9:87","nodeType":"YulTypedName","src":"1700:9:87","type":""},{"name":"dataEnd","nativeSrc":"1711:7:87","nodeType":"YulTypedName","src":"1711:7:87","type":""}],"returnVariables":[{"name":"value0","nativeSrc":"1723:6:87","nodeType":"YulTypedName","src":"1723:6:87","type":""},{"name":"value1","nativeSrc":"1731:6:87","nodeType":"YulTypedName","src":"1731:6:87","type":""},{"name":"value2","nativeSrc":"1739:6:87","nodeType":"YulTypedName","src":"1739:6:87","type":""}],"src":"1646:508:87"},{"body":{"nativeSrc":"2256:87:87","nodeType":"YulBlock","src":"2256:87:87","statements":[{"nativeSrc":"2266:26:87","nodeType":"YulAssignment","src":"2266:26:87","value":{"arguments":[{"name":"headStart","nativeSrc":"2278:9:87","nodeType":"YulIdentifier","src":"2278:9:87"},{"kind":"number","nativeSrc":"2289:2:87","nodeType":"YulLiteral","src":"2289:2:87","type":"","value":"32"}],"functionName":{"name":"add","nativeSrc":"2274:3:87","nodeType":"YulIdentifier","src":"2274:3:87"},"nativeSrc":"2274:18:87","nodeType":"YulFunctionCall","src":"2274:18:87"},"variableNames":[{"name":"tail","nativeSrc":"2266:4:87","nodeType":"YulIdentifier","src":"2266:4:87"}]},{"expression":{"arguments":[{"name":"headStart","nativeSrc":"2308:9:87","nodeType":"YulIdentifier","src":"2308:9:87"},{"arguments":[{"name":"value0","nativeSrc":"2323:6:87","nodeType":"YulIdentifier","src":"2323:6:87"},{"kind":"number","nativeSrc":"2331:4:87","nodeType":"YulLiteral","src":"2331:4:87","type":"","value":"0xff"}],"functionName":{"name":"and","nativeSrc":"2319:3:87","nodeType":"YulIdentifier","src":"2319:3:87"},"nativeSrc":"2319:17:87","nodeType":"YulFunctionCall","src":"2319:17:87"}],"functionName":{"name":"mstore","nativeSrc":"2301:6:87","nodeType":"YulIdentifier","src":"2301:6:87"},"nativeSrc":"2301:36:87","nodeType":"YulFunctionCall","src":"2301:36:87"},"nativeSrc":"2301:36:87","nodeType":"YulExpressionStatement","src":"2301:36:87"}]},"name":"abi_encode_tuple_t_uint8__to_t_uint8__fromStack_reversed","nativeSrc":"2159:184:87","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nativeSrc":"2225:9:87","nodeType":"YulTypedName","src":"2225:9:87","type":""},{"name":"value0","nativeSrc":"2236:6:87","nodeType":"YulTypedName","src":"2236:6:87","type":""}],"returnVariables":[{"name":"tail","nativeSrc":"2247:4:87","nodeType":"YulTypedName","src":"2247:4:87","type":""}],"src":"2159:184:87"},{"body":{"nativeSrc":"2449:102:87","nodeType":"YulBlock","src":"2449:102:87","statements":[{"nativeSrc":"2459:26:87","nodeType":"YulAssignment","src":"2459:26:87","value":{"arguments":[{"name":"headStart","nativeSrc":"2471:9:87","nodeType":"YulIdentifier","src":"2471:9:87"},{"kind":"number","nativeSrc":"2482:2:87","nodeType":"YulLiteral","src":"2482:2:87","type":"","value":"32"}],"functionName":{"name":"add","nativeSrc":"2467:3:87","nodeType":"YulIdentifier","src":"2467:3:87"},"nativeSrc":"2467:18:87","nodeType":"YulFunctionCall","src":"2467:18:87"},"variableNames":[{"name":"tail","nativeSrc":"2459:4:87","nodeType":"YulIdentifier","src":"2459:4:87"}]},{"expression":{"arguments":[{"name":"headStart","nativeSrc":"2501:9:87","nodeType":"YulIdentifier","src":"2501:9:87"},{"arguments":[{"name":"value0","nativeSrc":"2516:6:87","nodeType":"YulIdentifier","src":"2516:6:87"},{"arguments":[{"arguments":[{"kind":"number","nativeSrc":"2532:3:87","nodeType":"YulLiteral","src":"2532:3:87","type":"","value":"160"},{"kind":"number","nativeSrc":"2537:1:87","nodeType":"YulLiteral","src":"2537:1:87","type":"","value":"1"}],"functionName":{"name":"shl","nativeSrc":"2528:3:87","nodeType":"YulIdentifier","src":"2528:3:87"},"nativeSrc":"2528:11:87","nodeType":"YulFunctionCall","src":"2528:11:87"},{"kind":"number","nativeSrc":"2541:1:87","nodeType":"YulLiteral","src":"2541:1:87","type":"","value":"1"}],"functionName":{"name":"sub","nativeSrc":"2524:3:87","nodeType":"YulIdentifier","src":"2524:3:87"},"nativeSrc":"2524:19:87","nodeType":"YulFunctionCall","src":"2524:19:87"}],"functionName":{"name":"and","nativeSrc":"2512:3:87","nodeType":"YulIdentifier","src":"2512:3:87"},"nativeSrc":"2512:32:87","nodeType":"YulFunctionCall","src":"2512:32:87"}],"functionName":{"name":"mstore","nativeSrc":"2494:6:87","nodeType":"YulIdentifier","src":"2494:6:87"},"nativeSrc":"2494:51:87","nodeType":"YulFunctionCall","src":"2494:51:87"},"nativeSrc":"2494:51:87","nodeType":"YulExpressionStatement","src":"2494:51:87"}]},"name":"abi_encode_tuple_t_address__to_t_address__fromStack_reversed","nativeSrc":"2348:203:87","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nativeSrc":"2418:9:87","nodeType":"YulTypedName","src":"2418:9:87","type":""},{"name":"value0","nativeSrc":"2429:6:87","nodeType":"YulTypedName","src":"2429:6:87","type":""}],"returnVariables":[{"name":"tail","nativeSrc":"2440:4:87","nodeType":"YulTypedName","src":"2440:4:87","type":""}],"src":"2348:203:87"},{"body":{"nativeSrc":"2603:109:87","nodeType":"YulBlock","src":"2603:109:87","statements":[{"nativeSrc":"2613:29:87","nodeType":"YulAssignment","src":"2613:29:87","value":{"arguments":[{"name":"offset","nativeSrc":"2635:6:87","nodeType":"YulIdentifier","src":"2635:6:87"}],"functionName":{"name":"calldataload","nativeSrc":"2622:12:87","nodeType":"YulIdentifier","src":"2622:12:87"},"nativeSrc":"2622:20:87","nodeType":"YulFunctionCall","src":"2622:20:87"},"variableNames":[{"name":"value","nativeSrc":"2613:5:87","nodeType":"YulIdentifier","src":"2613:5:87"}]},{"body":{"nativeSrc":"2690:16:87","nodeType":"YulBlock","src":"2690:16:87","statements":[{"expression":{"arguments":[{"kind":"number","nativeSrc":"2699:1:87","nodeType":"YulLiteral","src":"2699:1:87","type":"","value":"0"},{"kind":"number","nativeSrc":"2702:1:87","nodeType":"YulLiteral","src":"2702:1:87","type":"","value":"0"}],"functionName":{"name":"revert","nativeSrc":"2692:6:87","nodeType":"YulIdentifier","src":"2692:6:87"},"nativeSrc":"2692:12:87","nodeType":"YulFunctionCall","src":"2692:12:87"},"nativeSrc":"2692:12:87","nodeType":"YulExpressionStatement","src":"2692:12:87"}]},"condition":{"arguments":[{"arguments":[{"name":"value","nativeSrc":"2664:5:87","nodeType":"YulIdentifier","src":"2664:5:87"},{"arguments":[{"name":"value","nativeSrc":"2675:5:87","nodeType":"YulIdentifier","src":"2675:5:87"},{"kind":"number","nativeSrc":"2682:4:87","nodeType":"YulLiteral","src":"2682:4:87","type":"","value":"0xff"}],"functionName":{"name":"and","nativeSrc":"2671:3:87","nodeType":"YulIdentifier","src":"2671:3:87"},"nativeSrc":"2671:16:87","nodeType":"YulFunctionCall","src":"2671:16:87"}],"functionName":{"name":"eq","nativeSrc":"2661:2:87","nodeType":"YulIdentifier","src":"2661:2:87"},"nativeSrc":"2661:27:87","nodeType":"YulFunctionCall","src":"2661:27:87"}],"functionName":{"name":"iszero","nativeSrc":"2654:6:87","nodeType":"YulIdentifier","src":"2654:6:87"},"nativeSrc":"2654:35:87","nodeType":"YulFunctionCall","src":"2654:35:87"},"nativeSrc":"2651:55:87","nodeType":"YulIf","src":"2651:55:87"}]},"name":"abi_decode_uint8","nativeSrc":"2556:156:87","nodeType":"YulFunctionDefinition","parameters":[{"name":"offset","nativeSrc":"2582:6:87","nodeType":"YulTypedName","src":"2582:6:87","type":""}],"returnVariables":[{"name":"value","nativeSrc":"2593:5:87","nodeType":"YulTypedName","src":"2593:5:87","type":""}],"src":"2556:156:87"},{"body":{"nativeSrc":"2749:95:87","nodeType":"YulBlock","src":"2749:95:87","statements":[{"expression":{"arguments":[{"kind":"number","nativeSrc":"2766:1:87","nodeType":"YulLiteral","src":"2766:1:87","type":"","value":"0"},{"arguments":[{"kind":"number","nativeSrc":"2773:3:87","nodeType":"YulLiteral","src":"2773:3:87","type":"","value":"224"},{"kind":"number","nativeSrc":"2778:10:87","nodeType":"YulLiteral","src":"2778:10:87","type":"","value":"0x4e487b71"}],"functionName":{"name":"shl","nativeSrc":"2769:3:87","nodeType":"YulIdentifier","src":"2769:3:87"},"nativeSrc":"2769:20:87","nodeType":"YulFunctionCall","src":"2769:20:87"}],"functionName":{"name":"mstore","nativeSrc":"2759:6:87","nodeType":"YulIdentifier","src":"2759:6:87"},"nativeSrc":"2759:31:87","nodeType":"YulFunctionCall","src":"2759:31:87"},"nativeSrc":"2759:31:87","nodeType":"YulExpressionStatement","src":"2759:31:87"},{"expression":{"arguments":[{"kind":"number","nativeSrc":"2806:1:87","nodeType":"YulLiteral","src":"2806:1:87","type":"","value":"4"},{"kind":"number","nativeSrc":"2809:4:87","nodeType":"YulLiteral","src":"2809:4:87","type":"","value":"0x41"}],"functionName":{"name":"mstore","nativeSrc":"2799:6:87","nodeType":"YulIdentifier","src":"2799:6:87"},"nativeSrc":"2799:15:87","nodeType":"YulFunctionCall","src":"2799:15:87"},"nativeSrc":"2799:15:87","nodeType":"YulExpressionStatement","src":"2799:15:87"},{"expression":{"arguments":[{"kind":"number","nativeSrc":"2830:1:87","nodeType":"YulLiteral","src":"2830:1:87","type":"","value":"0"},{"kind":"number","nativeSrc":"2833:4:87","nodeType":"YulLiteral","src":"2833:4:87","type":"","value":"0x24"}],"functionName":{"name":"revert","nativeSrc":"2823:6:87","nodeType":"YulIdentifier","src":"2823:6:87"},"nativeSrc":"2823:15:87","nodeType":"YulFunctionCall","src":"2823:15:87"},"nativeSrc":"2823:15:87","nodeType":"YulExpressionStatement","src":"2823:15:87"}]},"name":"panic_error_0x41","nativeSrc":"2717:127:87","nodeType":"YulFunctionDefinition","src":"2717:127:87"},{"body":{"nativeSrc":"2894:230:87","nodeType":"YulBlock","src":"2894:230:87","statements":[{"nativeSrc":"2904:19:87","nodeType":"YulAssignment","src":"2904:19:87","value":{"arguments":[{"kind":"number","nativeSrc":"2920:2:87","nodeType":"YulLiteral","src":"2920:2:87","type":"","value":"64"}],"functionName":{"name":"mload","nativeSrc":"2914:5:87","nodeType":"YulIdentifier","src":"2914:5:87"},"nativeSrc":"2914:9:87","nodeType":"YulFunctionCall","src":"2914:9:87"},"variableNames":[{"name":"memPtr","nativeSrc":"2904:6:87","nodeType":"YulIdentifier","src":"2904:6:87"}]},{"nativeSrc":"2932:58:87","nodeType":"YulVariableDeclaration","src":"2932:58:87","value":{"arguments":[{"name":"memPtr","nativeSrc":"2954:6:87","nodeType":"YulIdentifier","src":"2954:6:87"},{"arguments":[{"arguments":[{"name":"size","nativeSrc":"2970:4:87","nodeType":"YulIdentifier","src":"2970:4:87"},{"kind":"number","nativeSrc":"2976:2:87","nodeType":"YulLiteral","src":"2976:2:87","type":"","value":"31"}],"functionName":{"name":"add","nativeSrc":"2966:3:87","nodeType":"YulIdentifier","src":"2966:3:87"},"nativeSrc":"2966:13:87","nodeType":"YulFunctionCall","src":"2966:13:87"},{"arguments":[{"kind":"number","nativeSrc":"2985:2:87","nodeType":"YulLiteral","src":"2985:2:87","type":"","value":"31"}],"functionName":{"name":"not","nativeSrc":"2981:3:87","nodeType":"YulIdentifier","src":"2981:3:87"},"nativeSrc":"2981:7:87","nodeType":"YulFunctionCall","src":"2981:7:87"}],"functionName":{"name":"and","nativeSrc":"2962:3:87","nodeType":"YulIdentifier","src":"2962:3:87"},"nativeSrc":"2962:27:87","nodeType":"YulFunctionCall","src":"2962:27:87"}],"functionName":{"name":"add","nativeSrc":"2950:3:87","nodeType":"YulIdentifier","src":"2950:3:87"},"nativeSrc":"2950:40:87","nodeType":"YulFunctionCall","src":"2950:40:87"},"variables":[{"name":"newFreePtr","nativeSrc":"2936:10:87","nodeType":"YulTypedName","src":"2936:10:87","type":""}]},{"body":{"nativeSrc":"3065:22:87","nodeType":"YulBlock","src":"3065:22:87","statements":[{"expression":{"arguments":[],"functionName":{"name":"panic_error_0x41","nativeSrc":"3067:16:87","nodeType":"YulIdentifier","src":"3067:16:87"},"nativeSrc":"3067:18:87","nodeType":"YulFunctionCall","src":"3067:18:87"},"nativeSrc":"3067:18:87","nodeType":"YulExpressionStatement","src":"3067:18:87"}]},"condition":{"arguments":[{"arguments":[{"name":"newFreePtr","nativeSrc":"3008:10:87","nodeType":"YulIdentifier","src":"3008:10:87"},{"kind":"number","nativeSrc":"3020:18:87","nodeType":"YulLiteral","src":"3020:18:87","type":"","value":"0xffffffffffffffff"}],"functionName":{"name":"gt","nativeSrc":"3005:2:87","nodeType":"YulIdentifier","src":"3005:2:87"},"nativeSrc":"3005:34:87","nodeType":"YulFunctionCall","src":"3005:34:87"},{"arguments":[{"name":"newFreePtr","nativeSrc":"3044:10:87","nodeType":"YulIdentifier","src":"3044:10:87"},{"name":"memPtr","nativeSrc":"3056:6:87","nodeType":"YulIdentifier","src":"3056:6:87"}],"functionName":{"name":"lt","nativeSrc":"3041:2:87","nodeType":"YulIdentifier","src":"3041:2:87"},"nativeSrc":"3041:22:87","nodeType":"YulFunctionCall","src":"3041:22:87"}],"functionName":{"name":"or","nativeSrc":"3002:2:87","nodeType":"YulIdentifier","src":"3002:2:87"},"nativeSrc":"3002:62:87","nodeType":"YulFunctionCall","src":"3002:62:87"},"nativeSrc":"2999:88:87","nodeType":"YulIf","src":"2999:88:87"},{"expression":{"arguments":[{"kind":"number","nativeSrc":"3103:2:87","nodeType":"YulLiteral","src":"3103:2:87","type":"","value":"64"},{"name":"newFreePtr","nativeSrc":"3107:10:87","nodeType":"YulIdentifier","src":"3107:10:87"}],"functionName":{"name":"mstore","nativeSrc":"3096:6:87","nodeType":"YulIdentifier","src":"3096:6:87"},"nativeSrc":"3096:22:87","nodeType":"YulFunctionCall","src":"3096:22:87"},"nativeSrc":"3096:22:87","nodeType":"YulExpressionStatement","src":"3096:22:87"}]},"name":"allocate_memory","nativeSrc":"2849:275:87","nodeType":"YulFunctionDefinition","parameters":[{"name":"size","nativeSrc":"2874:4:87","nodeType":"YulTypedName","src":"2874:4:87","type":""}],"returnVariables":[{"name":"memPtr","nativeSrc":"2883:6:87","nodeType":"YulTypedName","src":"2883:6:87","type":""}],"src":"2849:275:87"},{"body":{"nativeSrc":"3181:577:87","nodeType":"YulBlock","src":"3181:577:87","statements":[{"body":{"nativeSrc":"3230:16:87","nodeType":"YulBlock","src":"3230:16:87","statements":[{"expression":{"arguments":[{"kind":"number","nativeSrc":"3239:1:87","nodeType":"YulLiteral","src":"3239:1:87","type":"","value":"0"},{"kind":"number","nativeSrc":"3242:1:87","nodeType":"YulLiteral","src":"3242:1:87","type":"","value":"0"}],"functionName":{"name":"revert","nativeSrc":"3232:6:87","nodeType":"YulIdentifier","src":"3232:6:87"},"nativeSrc":"3232:12:87","nodeType":"YulFunctionCall","src":"3232:12:87"},"nativeSrc":"3232:12:87","nodeType":"YulExpressionStatement","src":"3232:12:87"}]},"condition":{"arguments":[{"arguments":[{"arguments":[{"name":"offset","nativeSrc":"3209:6:87","nodeType":"YulIdentifier","src":"3209:6:87"},{"kind":"number","nativeSrc":"3217:4:87","nodeType":"YulLiteral","src":"3217:4:87","type":"","value":"0x1f"}],"functionName":{"name":"add","nativeSrc":"3205:3:87","nodeType":"YulIdentifier","src":"3205:3:87"},"nativeSrc":"3205:17:87","nodeType":"YulFunctionCall","src":"3205:17:87"},{"name":"end","nativeSrc":"3224:3:87","nodeType":"YulIdentifier","src":"3224:3:87"}],"functionName":{"name":"slt","nativeSrc":"3201:3:87","nodeType":"YulIdentifier","src":"3201:3:87"},"nativeSrc":"3201:27:87","nodeType":"YulFunctionCall","src":"3201:27:87"}],"functionName":{"name":"iszero","nativeSrc":"3194:6:87","nodeType":"YulIdentifier","src":"3194:6:87"},"nativeSrc":"3194:35:87","nodeType":"YulFunctionCall","src":"3194:35:87"},"nativeSrc":"3191:55:87","nodeType":"YulIf","src":"3191:55:87"},{"nativeSrc":"3255:34:87","nodeType":"YulVariableDeclaration","src":"3255:34:87","value":{"arguments":[{"name":"offset","nativeSrc":"3282:6:87","nodeType":"YulIdentifier","src":"3282:6:87"}],"functionName":{"name":"calldataload","nativeSrc":"3269:12:87","nodeType":"YulIdentifier","src":"3269:12:87"},"nativeSrc":"3269:20:87","nodeType":"YulFunctionCall","src":"3269:20:87"},"variables":[{"name":"length","nativeSrc":"3259:6:87","nodeType":"YulTypedName","src":"3259:6:87","type":""}]},{"nativeSrc":"3298:28:87","nodeType":"YulVariableDeclaration","src":"3298:28:87","value":{"arguments":[{"name":"offset","nativeSrc":"3313:6:87","nodeType":"YulIdentifier","src":"3313:6:87"},{"kind":"number","nativeSrc":"3321:4:87","nodeType":"YulLiteral","src":"3321:4:87","type":"","value":"0x20"}],"functionName":{"name":"add","nativeSrc":"3309:3:87","nodeType":"YulIdentifier","src":"3309:3:87"},"nativeSrc":"3309:17:87","nodeType":"YulFunctionCall","src":"3309:17:87"},"variables":[{"name":"src","nativeSrc":"3302:3:87","nodeType":"YulTypedName","src":"3302:3:87","type":""}]},{"nativeSrc":"3335:16:87","nodeType":"YulVariableDeclaration","src":"3335:16:87","value":{"kind":"number","nativeSrc":"3350:1:87","nodeType":"YulLiteral","src":"3350:1:87","type":"","value":"0"},"variables":[{"name":"array_1","nativeSrc":"3339:7:87","nodeType":"YulTypedName","src":"3339:7:87","type":""}]},{"nativeSrc":"3360:13:87","nodeType":"YulVariableDeclaration","src":"3360:13:87","value":{"kind":"number","nativeSrc":"3372:1:87","nodeType":"YulLiteral","src":"3372:1:87","type":"","value":"0"},"variables":[{"name":"size","nativeSrc":"3364:4:87","nodeType":"YulTypedName","src":"3364:4:87","type":""}]},{"body":{"nativeSrc":"3416:22:87","nodeType":"YulBlock","src":"3416:22:87","statements":[{"expression":{"arguments":[],"functionName":{"name":"panic_error_0x41","nativeSrc":"3418:16:87","nodeType":"YulIdentifier","src":"3418:16:87"},"nativeSrc":"3418:18:87","nodeType":"YulFunctionCall","src":"3418:18:87"},"nativeSrc":"3418:18:87","nodeType":"YulExpressionStatement","src":"3418:18:87"}]},"condition":{"arguments":[{"name":"length","nativeSrc":"3388:6:87","nodeType":"YulIdentifier","src":"3388:6:87"},{"kind":"number","nativeSrc":"3396:18:87","nodeType":"YulLiteral","src":"3396:18:87","type":"","value":"0xffffffffffffffff"}],"functionName":{"name":"gt","nativeSrc":"3385:2:87","nodeType":"YulIdentifier","src":"3385:2:87"},"nativeSrc":"3385:30:87","nodeType":"YulFunctionCall","src":"3385:30:87"},"nativeSrc":"3382:56:87","nodeType":"YulIf","src":"3382:56:87"},{"nativeSrc":"3447:48:87","nodeType":"YulAssignment","src":"3447:48:87","value":{"arguments":[{"arguments":[{"arguments":[{"name":"length","nativeSrc":"3467:6:87","nodeType":"YulIdentifier","src":"3467:6:87"},{"kind":"number","nativeSrc":"3475:2:87","nodeType":"YulLiteral","src":"3475:2:87","type":"","value":"31"}],"functionName":{"name":"add","nativeSrc":"3463:3:87","nodeType":"YulIdentifier","src":"3463:3:87"},"nativeSrc":"3463:15:87","nodeType":"YulFunctionCall","src":"3463:15:87"},{"arguments":[{"kind":"number","nativeSrc":"3484:2:87","nodeType":"YulLiteral","src":"3484:2:87","type":"","value":"31"}],"functionName":{"name":"not","nativeSrc":"3480:3:87","nodeType":"YulIdentifier","src":"3480:3:87"},"nativeSrc":"3480:7:87","nodeType":"YulFunctionCall","src":"3480:7:87"}],"functionName":{"name":"and","nativeSrc":"3459:3:87","nodeType":"YulIdentifier","src":"3459:3:87"},"nativeSrc":"3459:29:87","nodeType":"YulFunctionCall","src":"3459:29:87"},{"kind":"number","nativeSrc":"3490:4:87","nodeType":"YulLiteral","src":"3490:4:87","type":"","value":"0x20"}],"functionName":{"name":"add","nativeSrc":"3455:3:87","nodeType":"YulIdentifier","src":"3455:3:87"},"nativeSrc":"3455:40:87","nodeType":"YulFunctionCall","src":"3455:40:87"},"variableNames":[{"name":"size","nativeSrc":"3447:4:87","nodeType":"YulIdentifier","src":"3447:4:87"}]},{"nativeSrc":"3504:32:87","nodeType":"YulAssignment","src":"3504:32:87","value":{"arguments":[{"name":"size","nativeSrc":"3531:4:87","nodeType":"YulIdentifier","src":"3531:4:87"}],"functionName":{"name":"allocate_memory","nativeSrc":"3515:15:87","nodeType":"YulIdentifier","src":"3515:15:87"},"nativeSrc":"3515:21:87","nodeType":"YulFunctionCall","src":"3515:21:87"},"variableNames":[{"name":"array_1","nativeSrc":"3504:7:87","nodeType":"YulIdentifier","src":"3504:7:87"}]},{"expression":{"arguments":[{"name":"array_1","nativeSrc":"3552:7:87","nodeType":"YulIdentifier","src":"3552:7:87"},{"name":"length","nativeSrc":"3561:6:87","nodeType":"YulIdentifier","src":"3561:6:87"}],"functionName":{"name":"mstore","nativeSrc":"3545:6:87","nodeType":"YulIdentifier","src":"3545:6:87"},"nativeSrc":"3545:23:87","nodeType":"YulFunctionCall","src":"3545:23:87"},"nativeSrc":"3545:23:87","nodeType":"YulExpressionStatement","src":"3545:23:87"},{"body":{"nativeSrc":"3606:16:87","nodeType":"YulBlock","src":"3606:16:87","statements":[{"expression":{"arguments":[{"kind":"number","nativeSrc":"3615:1:87","nodeType":"YulLiteral","src":"3615:1:87","type":"","value":"0"},{"kind":"number","nativeSrc":"3618:1:87","nodeType":"YulLiteral","src":"3618:1:87","type":"","value":"0"}],"functionName":{"name":"revert","nativeSrc":"3608:6:87","nodeType":"YulIdentifier","src":"3608:6:87"},"nativeSrc":"3608:12:87","nodeType":"YulFunctionCall","src":"3608:12:87"},"nativeSrc":"3608:12:87","nodeType":"YulExpressionStatement","src":"3608:12:87"}]},"condition":{"arguments":[{"arguments":[{"name":"src","nativeSrc":"3587:3:87","nodeType":"YulIdentifier","src":"3587:3:87"},{"name":"length","nativeSrc":"3592:6:87","nodeType":"YulIdentifier","src":"3592:6:87"}],"functionName":{"name":"add","nativeSrc":"3583:3:87","nodeType":"YulIdentifier","src":"3583:3:87"},"nativeSrc":"3583:16:87","nodeType":"YulFunctionCall","src":"3583:16:87"},{"name":"end","nativeSrc":"3601:3:87","nodeType":"YulIdentifier","src":"3601:3:87"}],"functionName":{"name":"gt","nativeSrc":"3580:2:87","nodeType":"YulIdentifier","src":"3580:2:87"},"nativeSrc":"3580:25:87","nodeType":"YulFunctionCall","src":"3580:25:87"},"nativeSrc":"3577:45:87","nodeType":"YulIf","src":"3577:45:87"},{"expression":{"arguments":[{"arguments":[{"name":"array_1","nativeSrc":"3648:7:87","nodeType":"YulIdentifier","src":"3648:7:87"},{"kind":"number","nativeSrc":"3657:4:87","nodeType":"YulLiteral","src":"3657:4:87","type":"","value":"0x20"}],"functionName":{"name":"add","nativeSrc":"3644:3:87","nodeType":"YulIdentifier","src":"3644:3:87"},"nativeSrc":"3644:18:87","nodeType":"YulFunctionCall","src":"3644:18:87"},{"name":"src","nativeSrc":"3664:3:87","nodeType":"YulIdentifier","src":"3664:3:87"},{"name":"length","nativeSrc":"3669:6:87","nodeType":"YulIdentifier","src":"3669:6:87"}],"functionName":{"name":"calldatacopy","nativeSrc":"3631:12:87","nodeType":"YulIdentifier","src":"3631:12:87"},"nativeSrc":"3631:45:87","nodeType":"YulFunctionCall","src":"3631:45:87"},"nativeSrc":"3631:45:87","nodeType":"YulExpressionStatement","src":"3631:45:87"},{"expression":{"arguments":[{"arguments":[{"arguments":[{"name":"array_1","nativeSrc":"3700:7:87","nodeType":"YulIdentifier","src":"3700:7:87"},{"name":"length","nativeSrc":"3709:6:87","nodeType":"YulIdentifier","src":"3709:6:87"}],"functionName":{"name":"add","nativeSrc":"3696:3:87","nodeType":"YulIdentifier","src":"3696:3:87"},"nativeSrc":"3696:20:87","nodeType":"YulFunctionCall","src":"3696:20:87"},{"kind":"number","nativeSrc":"3718:4:87","nodeType":"YulLiteral","src":"3718:4:87","type":"","value":"0x20"}],"functionName":{"name":"add","nativeSrc":"3692:3:87","nodeType":"YulIdentifier","src":"3692:3:87"},"nativeSrc":"3692:31:87","nodeType":"YulFunctionCall","src":"3692:31:87"},{"kind":"number","nativeSrc":"3725:1:87","nodeType":"YulLiteral","src":"3725:1:87","type":"","value":"0"}],"functionName":{"name":"mstore","nativeSrc":"3685:6:87","nodeType":"YulIdentifier","src":"3685:6:87"},"nativeSrc":"3685:42:87","nodeType":"YulFunctionCall","src":"3685:42:87"},"nativeSrc":"3685:42:87","nodeType":"YulExpressionStatement","src":"3685:42:87"},{"nativeSrc":"3736:16:87","nodeType":"YulAssignment","src":"3736:16:87","value":{"name":"array_1","nativeSrc":"3745:7:87","nodeType":"YulIdentifier","src":"3745:7:87"},"variableNames":[{"name":"array","nativeSrc":"3736:5:87","nodeType":"YulIdentifier","src":"3736:5:87"}]}]},"name":"abi_decode_bytes","nativeSrc":"3129:629:87","nodeType":"YulFunctionDefinition","parameters":[{"name":"offset","nativeSrc":"3155:6:87","nodeType":"YulTypedName","src":"3155:6:87","type":""},{"name":"end","nativeSrc":"3163:3:87","nodeType":"YulTypedName","src":"3163:3:87","type":""}],"returnVariables":[{"name":"array","nativeSrc":"3171:5:87","nodeType":"YulTypedName","src":"3171:5:87","type":""}],"src":"3129:629:87"},{"body":{"nativeSrc":"3872:351:87","nodeType":"YulBlock","src":"3872:351:87","statements":[{"body":{"nativeSrc":"3918:16:87","nodeType":"YulBlock","src":"3918:16:87","statements":[{"expression":{"arguments":[{"kind":"number","nativeSrc":"3927:1:87","nodeType":"YulLiteral","src":"3927:1:87","type":"","value":"0"},{"kind":"number","nativeSrc":"3930:1:87","nodeType":"YulLiteral","src":"3930:1:87","type":"","value":"0"}],"functionName":{"name":"revert","nativeSrc":"3920:6:87","nodeType":"YulIdentifier","src":"3920:6:87"},"nativeSrc":"3920:12:87","nodeType":"YulFunctionCall","src":"3920:12:87"},"nativeSrc":"3920:12:87","nodeType":"YulExpressionStatement","src":"3920:12:87"}]},"condition":{"arguments":[{"arguments":[{"name":"dataEnd","nativeSrc":"3893:7:87","nodeType":"YulIdentifier","src":"3893:7:87"},{"name":"headStart","nativeSrc":"3902:9:87","nodeType":"YulIdentifier","src":"3902:9:87"}],"functionName":{"name":"sub","nativeSrc":"3889:3:87","nodeType":"YulIdentifier","src":"3889:3:87"},"nativeSrc":"3889:23:87","nodeType":"YulFunctionCall","src":"3889:23:87"},{"kind":"number","nativeSrc":"3914:2:87","nodeType":"YulLiteral","src":"3914:2:87","type":"","value":"96"}],"functionName":{"name":"slt","nativeSrc":"3885:3:87","nodeType":"YulIdentifier","src":"3885:3:87"},"nativeSrc":"3885:32:87","nodeType":"YulFunctionCall","src":"3885:32:87"},"nativeSrc":"3882:52:87","nodeType":"YulIf","src":"3882:52:87"},{"nativeSrc":"3943:37:87","nodeType":"YulAssignment","src":"3943:37:87","value":{"arguments":[{"name":"headStart","nativeSrc":"3970:9:87","nodeType":"YulIdentifier","src":"3970:9:87"}],"functionName":{"name":"abi_decode_uint8","nativeSrc":"3953:16:87","nodeType":"YulIdentifier","src":"3953:16:87"},"nativeSrc":"3953:27:87","nodeType":"YulFunctionCall","src":"3953:27:87"},"variableNames":[{"name":"value0","nativeSrc":"3943:6:87","nodeType":"YulIdentifier","src":"3943:6:87"}]},{"nativeSrc":"3989:46:87","nodeType":"YulAssignment","src":"3989:46:87","value":{"arguments":[{"arguments":[{"name":"headStart","nativeSrc":"4020:9:87","nodeType":"YulIdentifier","src":"4020:9:87"},{"kind":"number","nativeSrc":"4031:2:87","nodeType":"YulLiteral","src":"4031:2:87","type":"","value":"32"}],"functionName":{"name":"add","nativeSrc":"4016:3:87","nodeType":"YulIdentifier","src":"4016:3:87"},"nativeSrc":"4016:18:87","nodeType":"YulFunctionCall","src":"4016:18:87"}],"functionName":{"name":"abi_decode_uint8","nativeSrc":"3999:16:87","nodeType":"YulIdentifier","src":"3999:16:87"},"nativeSrc":"3999:36:87","nodeType":"YulFunctionCall","src":"3999:36:87"},"variableNames":[{"name":"value1","nativeSrc":"3989:6:87","nodeType":"YulIdentifier","src":"3989:6:87"}]},{"nativeSrc":"4044:46:87","nodeType":"YulVariableDeclaration","src":"4044:46:87","value":{"arguments":[{"arguments":[{"name":"headStart","nativeSrc":"4075:9:87","nodeType":"YulIdentifier","src":"4075:9:87"},{"kind":"number","nativeSrc":"4086:2:87","nodeType":"YulLiteral","src":"4086:2:87","type":"","value":"64"}],"functionName":{"name":"add","nativeSrc":"4071:3:87","nodeType":"YulIdentifier","src":"4071:3:87"},"nativeSrc":"4071:18:87","nodeType":"YulFunctionCall","src":"4071:18:87"}],"functionName":{"name":"calldataload","nativeSrc":"4058:12:87","nodeType":"YulIdentifier","src":"4058:12:87"},"nativeSrc":"4058:32:87","nodeType":"YulFunctionCall","src":"4058:32:87"},"variables":[{"name":"offset","nativeSrc":"4048:6:87","nodeType":"YulTypedName","src":"4048:6:87","type":""}]},{"body":{"nativeSrc":"4133:16:87","nodeType":"YulBlock","src":"4133:16:87","statements":[{"expression":{"arguments":[{"kind":"number","nativeSrc":"4142:1:87","nodeType":"YulLiteral","src":"4142:1:87","type":"","value":"0"},{"kind":"number","nativeSrc":"4145:1:87","nodeType":"YulLiteral","src":"4145:1:87","type":"","value":"0"}],"functionName":{"name":"revert","nativeSrc":"4135:6:87","nodeType":"YulIdentifier","src":"4135:6:87"},"nativeSrc":"4135:12:87","nodeType":"YulFunctionCall","src":"4135:12:87"},"nativeSrc":"4135:12:87","nodeType":"YulExpressionStatement","src":"4135:12:87"}]},"condition":{"arguments":[{"name":"offset","nativeSrc":"4105:6:87","nodeType":"YulIdentifier","src":"4105:6:87"},{"kind":"number","nativeSrc":"4113:18:87","nodeType":"YulLiteral","src":"4113:18:87","type":"","value":"0xffffffffffffffff"}],"functionName":{"name":"gt","nativeSrc":"4102:2:87","nodeType":"YulIdentifier","src":"4102:2:87"},"nativeSrc":"4102:30:87","nodeType":"YulFunctionCall","src":"4102:30:87"},"nativeSrc":"4099:50:87","nodeType":"YulIf","src":"4099:50:87"},{"nativeSrc":"4158:59:87","nodeType":"YulAssignment","src":"4158:59:87","value":{"arguments":[{"arguments":[{"name":"headStart","nativeSrc":"4189:9:87","nodeType":"YulIdentifier","src":"4189:9:87"},{"name":"offset","nativeSrc":"4200:6:87","nodeType":"YulIdentifier","src":"4200:6:87"}],"functionName":{"name":"add","nativeSrc":"4185:3:87","nodeType":"YulIdentifier","src":"4185:3:87"},"nativeSrc":"4185:22:87","nodeType":"YulFunctionCall","src":"4185:22:87"},{"name":"dataEnd","nativeSrc":"4209:7:87","nodeType":"YulIdentifier","src":"4209:7:87"}],"functionName":{"name":"abi_decode_bytes","nativeSrc":"4168:16:87","nodeType":"YulIdentifier","src":"4168:16:87"},"nativeSrc":"4168:49:87","nodeType":"YulFunctionCall","src":"4168:49:87"},"variableNames":[{"name":"value2","nativeSrc":"4158:6:87","nodeType":"YulIdentifier","src":"4158:6:87"}]}]},"name":"abi_decode_tuple_t_uint8t_uint8t_bytes_memory_ptr","nativeSrc":"3763:460:87","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nativeSrc":"3822:9:87","nodeType":"YulTypedName","src":"3822:9:87","type":""},{"name":"dataEnd","nativeSrc":"3833:7:87","nodeType":"YulTypedName","src":"3833:7:87","type":""}],"returnVariables":[{"name":"value0","nativeSrc":"3845:6:87","nodeType":"YulTypedName","src":"3845:6:87","type":""},{"name":"value1","nativeSrc":"3853:6:87","nodeType":"YulTypedName","src":"3853:6:87","type":""},{"name":"value2","nativeSrc":"3861:6:87","nodeType":"YulTypedName","src":"3861:6:87","type":""}],"src":"3763:460:87"},{"body":{"nativeSrc":"4347:99:87","nodeType":"YulBlock","src":"4347:99:87","statements":[{"expression":{"arguments":[{"name":"headStart","nativeSrc":"4364:9:87","nodeType":"YulIdentifier","src":"4364:9:87"},{"kind":"number","nativeSrc":"4375:2:87","nodeType":"YulLiteral","src":"4375:2:87","type":"","value":"32"}],"functionName":{"name":"mstore","nativeSrc":"4357:6:87","nodeType":"YulIdentifier","src":"4357:6:87"},"nativeSrc":"4357:21:87","nodeType":"YulFunctionCall","src":"4357:21:87"},"nativeSrc":"4357:21:87","nodeType":"YulExpressionStatement","src":"4357:21:87"},{"nativeSrc":"4387:53:87","nodeType":"YulAssignment","src":"4387:53:87","value":{"arguments":[{"name":"value0","nativeSrc":"4413:6:87","nodeType":"YulIdentifier","src":"4413:6:87"},{"arguments":[{"name":"headStart","nativeSrc":"4425:9:87","nodeType":"YulIdentifier","src":"4425:9:87"},{"kind":"number","nativeSrc":"4436:2:87","nodeType":"YulLiteral","src":"4436:2:87","type":"","value":"32"}],"functionName":{"name":"add","nativeSrc":"4421:3:87","nodeType":"YulIdentifier","src":"4421:3:87"},"nativeSrc":"4421:18:87","nodeType":"YulFunctionCall","src":"4421:18:87"}],"functionName":{"name":"abi_encode_string","nativeSrc":"4395:17:87","nodeType":"YulIdentifier","src":"4395:17:87"},"nativeSrc":"4395:45:87","nodeType":"YulFunctionCall","src":"4395:45:87"},"variableNames":[{"name":"tail","nativeSrc":"4387:4:87","nodeType":"YulIdentifier","src":"4387:4:87"}]}]},"name":"abi_encode_tuple_t_bytes_memory_ptr__to_t_bytes_memory_ptr__fromStack_reversed","nativeSrc":"4228:218:87","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nativeSrc":"4316:9:87","nodeType":"YulTypedName","src":"4316:9:87","type":""},{"name":"value0","nativeSrc":"4327:6:87","nodeType":"YulTypedName","src":"4327:6:87","type":""}],"returnVariables":[{"name":"tail","nativeSrc":"4338:4:87","nodeType":"YulTypedName","src":"4338:4:87","type":""}],"src":"4228:218:87"},{"body":{"nativeSrc":"4521:177:87","nodeType":"YulBlock","src":"4521:177:87","statements":[{"body":{"nativeSrc":"4567:16:87","nodeType":"YulBlock","src":"4567:16:87","statements":[{"expression":{"arguments":[{"kind":"number","nativeSrc":"4576:1:87","nodeType":"YulLiteral","src":"4576:1:87","type":"","value":"0"},{"kind":"number","nativeSrc":"4579:1:87","nodeType":"YulLiteral","src":"4579:1:87","type":"","value":"0"}],"functionName":{"name":"revert","nativeSrc":"4569:6:87","nodeType":"YulIdentifier","src":"4569:6:87"},"nativeSrc":"4569:12:87","nodeType":"YulFunctionCall","src":"4569:12:87"},"nativeSrc":"4569:12:87","nodeType":"YulExpressionStatement","src":"4569:12:87"}]},"condition":{"arguments":[{"arguments":[{"name":"dataEnd","nativeSrc":"4542:7:87","nodeType":"YulIdentifier","src":"4542:7:87"},{"name":"headStart","nativeSrc":"4551:9:87","nodeType":"YulIdentifier","src":"4551:9:87"}],"functionName":{"name":"sub","nativeSrc":"4538:3:87","nodeType":"YulIdentifier","src":"4538:3:87"},"nativeSrc":"4538:23:87","nodeType":"YulFunctionCall","src":"4538:23:87"},{"kind":"number","nativeSrc":"4563:2:87","nodeType":"YulLiteral","src":"4563:2:87","type":"","value":"32"}],"functionName":{"name":"slt","nativeSrc":"4534:3:87","nodeType":"YulIdentifier","src":"4534:3:87"},"nativeSrc":"4534:32:87","nodeType":"YulFunctionCall","src":"4534:32:87"},"nativeSrc":"4531:52:87","nodeType":"YulIf","src":"4531:52:87"},{"nativeSrc":"4592:36:87","nodeType":"YulVariableDeclaration","src":"4592:36:87","value":{"arguments":[{"name":"headStart","nativeSrc":"4618:9:87","nodeType":"YulIdentifier","src":"4618:9:87"}],"functionName":{"name":"calldataload","nativeSrc":"4605:12:87","nodeType":"YulIdentifier","src":"4605:12:87"},"nativeSrc":"4605:23:87","nodeType":"YulFunctionCall","src":"4605:23:87"},"variables":[{"name":"value","nativeSrc":"4596:5:87","nodeType":"YulTypedName","src":"4596:5:87","type":""}]},{"expression":{"arguments":[{"name":"value","nativeSrc":"4662:5:87","nodeType":"YulIdentifier","src":"4662:5:87"}],"functionName":{"name":"validator_revert_address","nativeSrc":"4637:24:87","nodeType":"YulIdentifier","src":"4637:24:87"},"nativeSrc":"4637:31:87","nodeType":"YulFunctionCall","src":"4637:31:87"},"nativeSrc":"4637:31:87","nodeType":"YulExpressionStatement","src":"4637:31:87"},{"nativeSrc":"4677:15:87","nodeType":"YulAssignment","src":"4677:15:87","value":{"name":"value","nativeSrc":"4687:5:87","nodeType":"YulIdentifier","src":"4687:5:87"},"variableNames":[{"name":"value0","nativeSrc":"4677:6:87","nodeType":"YulIdentifier","src":"4677:6:87"}]}]},"name":"abi_decode_tuple_t_address","nativeSrc":"4451:247:87","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nativeSrc":"4487:9:87","nodeType":"YulTypedName","src":"4487:9:87","type":""},{"name":"dataEnd","nativeSrc":"4498:7:87","nodeType":"YulTypedName","src":"4498:7:87","type":""}],"returnVariables":[{"name":"value0","nativeSrc":"4510:6:87","nodeType":"YulTypedName","src":"4510:6:87","type":""}],"src":"4451:247:87"},{"body":{"nativeSrc":"4773:110:87","nodeType":"YulBlock","src":"4773:110:87","statements":[{"body":{"nativeSrc":"4819:16:87","nodeType":"YulBlock","src":"4819:16:87","statements":[{"expression":{"arguments":[{"kind":"number","nativeSrc":"4828:1:87","nodeType":"YulLiteral","src":"4828:1:87","type":"","value":"0"},{"kind":"number","nativeSrc":"4831:1:87","nodeType":"YulLiteral","src":"4831:1:87","type":"","value":"0"}],"functionName":{"name":"revert","nativeSrc":"4821:6:87","nodeType":"YulIdentifier","src":"4821:6:87"},"nativeSrc":"4821:12:87","nodeType":"YulFunctionCall","src":"4821:12:87"},"nativeSrc":"4821:12:87","nodeType":"YulExpressionStatement","src":"4821:12:87"}]},"condition":{"arguments":[{"arguments":[{"name":"dataEnd","nativeSrc":"4794:7:87","nodeType":"YulIdentifier","src":"4794:7:87"},{"name":"headStart","nativeSrc":"4803:9:87","nodeType":"YulIdentifier","src":"4803:9:87"}],"functionName":{"name":"sub","nativeSrc":"4790:3:87","nodeType":"YulIdentifier","src":"4790:3:87"},"nativeSrc":"4790:23:87","nodeType":"YulFunctionCall","src":"4790:23:87"},{"kind":"number","nativeSrc":"4815:2:87","nodeType":"YulLiteral","src":"4815:2:87","type":"","value":"32"}],"functionName":{"name":"slt","nativeSrc":"4786:3:87","nodeType":"YulIdentifier","src":"4786:3:87"},"nativeSrc":"4786:32:87","nodeType":"YulFunctionCall","src":"4786:32:87"},"nativeSrc":"4783:52:87","nodeType":"YulIf","src":"4783:52:87"},{"nativeSrc":"4844:33:87","nodeType":"YulAssignment","src":"4844:33:87","value":{"arguments":[{"name":"headStart","nativeSrc":"4867:9:87","nodeType":"YulIdentifier","src":"4867:9:87"}],"functionName":{"name":"calldataload","nativeSrc":"4854:12:87","nodeType":"YulIdentifier","src":"4854:12:87"},"nativeSrc":"4854:23:87","nodeType":"YulFunctionCall","src":"4854:23:87"},"variableNames":[{"name":"value0","nativeSrc":"4844:6:87","nodeType":"YulIdentifier","src":"4844:6:87"}]}]},"name":"abi_decode_tuple_t_bytes32","nativeSrc":"4703:180:87","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nativeSrc":"4739:9:87","nodeType":"YulTypedName","src":"4739:9:87","type":""},{"name":"dataEnd","nativeSrc":"4750:7:87","nodeType":"YulTypedName","src":"4750:7:87","type":""}],"returnVariables":[{"name":"value0","nativeSrc":"4762:6:87","nodeType":"YulTypedName","src":"4762:6:87","type":""}],"src":"4703:180:87"},{"body":{"nativeSrc":"4984:359:87","nodeType":"YulBlock","src":"4984:359:87","statements":[{"body":{"nativeSrc":"5030:16:87","nodeType":"YulBlock","src":"5030:16:87","statements":[{"expression":{"arguments":[{"kind":"number","nativeSrc":"5039:1:87","nodeType":"YulLiteral","src":"5039:1:87","type":"","value":"0"},{"kind":"number","nativeSrc":"5042:1:87","nodeType":"YulLiteral","src":"5042:1:87","type":"","value":"0"}],"functionName":{"name":"revert","nativeSrc":"5032:6:87","nodeType":"YulIdentifier","src":"5032:6:87"},"nativeSrc":"5032:12:87","nodeType":"YulFunctionCall","src":"5032:12:87"},"nativeSrc":"5032:12:87","nodeType":"YulExpressionStatement","src":"5032:12:87"}]},"condition":{"arguments":[{"arguments":[{"name":"dataEnd","nativeSrc":"5005:7:87","nodeType":"YulIdentifier","src":"5005:7:87"},{"name":"headStart","nativeSrc":"5014:9:87","nodeType":"YulIdentifier","src":"5014:9:87"}],"functionName":{"name":"sub","nativeSrc":"5001:3:87","nodeType":"YulIdentifier","src":"5001:3:87"},"nativeSrc":"5001:23:87","nodeType":"YulFunctionCall","src":"5001:23:87"},{"kind":"number","nativeSrc":"5026:2:87","nodeType":"YulLiteral","src":"5026:2:87","type":"","value":"64"}],"functionName":{"name":"slt","nativeSrc":"4997:3:87","nodeType":"YulIdentifier","src":"4997:3:87"},"nativeSrc":"4997:32:87","nodeType":"YulFunctionCall","src":"4997:32:87"},"nativeSrc":"4994:52:87","nodeType":"YulIf","src":"4994:52:87"},{"nativeSrc":"5055:36:87","nodeType":"YulVariableDeclaration","src":"5055:36:87","value":{"arguments":[{"name":"headStart","nativeSrc":"5081:9:87","nodeType":"YulIdentifier","src":"5081:9:87"}],"functionName":{"name":"calldataload","nativeSrc":"5068:12:87","nodeType":"YulIdentifier","src":"5068:12:87"},"nativeSrc":"5068:23:87","nodeType":"YulFunctionCall","src":"5068:23:87"},"variables":[{"name":"value","nativeSrc":"5059:5:87","nodeType":"YulTypedName","src":"5059:5:87","type":""}]},{"expression":{"arguments":[{"name":"value","nativeSrc":"5125:5:87","nodeType":"YulIdentifier","src":"5125:5:87"}],"functionName":{"name":"validator_revert_address","nativeSrc":"5100:24:87","nodeType":"YulIdentifier","src":"5100:24:87"},"nativeSrc":"5100:31:87","nodeType":"YulFunctionCall","src":"5100:31:87"},"nativeSrc":"5100:31:87","nodeType":"YulExpressionStatement","src":"5100:31:87"},{"nativeSrc":"5140:15:87","nodeType":"YulAssignment","src":"5140:15:87","value":{"name":"value","nativeSrc":"5150:5:87","nodeType":"YulIdentifier","src":"5150:5:87"},"variableNames":[{"name":"value0","nativeSrc":"5140:6:87","nodeType":"YulIdentifier","src":"5140:6:87"}]},{"nativeSrc":"5164:46:87","nodeType":"YulVariableDeclaration","src":"5164:46:87","value":{"arguments":[{"arguments":[{"name":"headStart","nativeSrc":"5195:9:87","nodeType":"YulIdentifier","src":"5195:9:87"},{"kind":"number","nativeSrc":"5206:2:87","nodeType":"YulLiteral","src":"5206:2:87","type":"","value":"32"}],"functionName":{"name":"add","nativeSrc":"5191:3:87","nodeType":"YulIdentifier","src":"5191:3:87"},"nativeSrc":"5191:18:87","nodeType":"YulFunctionCall","src":"5191:18:87"}],"functionName":{"name":"calldataload","nativeSrc":"5178:12:87","nodeType":"YulIdentifier","src":"5178:12:87"},"nativeSrc":"5178:32:87","nodeType":"YulFunctionCall","src":"5178:32:87"},"variables":[{"name":"offset","nativeSrc":"5168:6:87","nodeType":"YulTypedName","src":"5168:6:87","type":""}]},{"body":{"nativeSrc":"5253:16:87","nodeType":"YulBlock","src":"5253:16:87","statements":[{"expression":{"arguments":[{"kind":"number","nativeSrc":"5262:1:87","nodeType":"YulLiteral","src":"5262:1:87","type":"","value":"0"},{"kind":"number","nativeSrc":"5265:1:87","nodeType":"YulLiteral","src":"5265:1:87","type":"","value":"0"}],"functionName":{"name":"revert","nativeSrc":"5255:6:87","nodeType":"YulIdentifier","src":"5255:6:87"},"nativeSrc":"5255:12:87","nodeType":"YulFunctionCall","src":"5255:12:87"},"nativeSrc":"5255:12:87","nodeType":"YulExpressionStatement","src":"5255:12:87"}]},"condition":{"arguments":[{"name":"offset","nativeSrc":"5225:6:87","nodeType":"YulIdentifier","src":"5225:6:87"},{"kind":"number","nativeSrc":"5233:18:87","nodeType":"YulLiteral","src":"5233:18:87","type":"","value":"0xffffffffffffffff"}],"functionName":{"name":"gt","nativeSrc":"5222:2:87","nodeType":"YulIdentifier","src":"5222:2:87"},"nativeSrc":"5222:30:87","nodeType":"YulFunctionCall","src":"5222:30:87"},"nativeSrc":"5219:50:87","nodeType":"YulIf","src":"5219:50:87"},{"nativeSrc":"5278:59:87","nodeType":"YulAssignment","src":"5278:59:87","value":{"arguments":[{"arguments":[{"name":"headStart","nativeSrc":"5309:9:87","nodeType":"YulIdentifier","src":"5309:9:87"},{"name":"offset","nativeSrc":"5320:6:87","nodeType":"YulIdentifier","src":"5320:6:87"}],"functionName":{"name":"add","nativeSrc":"5305:3:87","nodeType":"YulIdentifier","src":"5305:3:87"},"nativeSrc":"5305:22:87","nodeType":"YulFunctionCall","src":"5305:22:87"},{"name":"dataEnd","nativeSrc":"5329:7:87","nodeType":"YulIdentifier","src":"5329:7:87"}],"functionName":{"name":"abi_decode_bytes","nativeSrc":"5288:16:87","nodeType":"YulIdentifier","src":"5288:16:87"},"nativeSrc":"5288:49:87","nodeType":"YulFunctionCall","src":"5288:49:87"},"variableNames":[{"name":"value1","nativeSrc":"5278:6:87","nodeType":"YulIdentifier","src":"5278:6:87"}]}]},"name":"abi_decode_tuple_t_addresst_bytes_memory_ptr","nativeSrc":"4888:455:87","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nativeSrc":"4942:9:87","nodeType":"YulTypedName","src":"4942:9:87","type":""},{"name":"dataEnd","nativeSrc":"4953:7:87","nodeType":"YulTypedName","src":"4953:7:87","type":""}],"returnVariables":[{"name":"value0","nativeSrc":"4965:6:87","nodeType":"YulTypedName","src":"4965:6:87","type":""},{"name":"value1","nativeSrc":"4973:6:87","nodeType":"YulTypedName","src":"4973:6:87","type":""}],"src":"4888:455:87"},{"body":{"nativeSrc":"5493:337:87","nodeType":"YulBlock","src":"5493:337:87","statements":[{"nativeSrc":"5503:28:87","nodeType":"YulAssignment","src":"5503:28:87","value":{"arguments":[{"name":"headStart","nativeSrc":"5515:9:87","nodeType":"YulIdentifier","src":"5515:9:87"},{"kind":"number","nativeSrc":"5526:4:87","nodeType":"YulLiteral","src":"5526:4:87","type":"","value":"1024"}],"functionName":{"name":"add","nativeSrc":"5511:3:87","nodeType":"YulIdentifier","src":"5511:3:87"},"nativeSrc":"5511:20:87","nodeType":"YulFunctionCall","src":"5511:20:87"},"variableNames":[{"name":"tail","nativeSrc":"5503:4:87","nodeType":"YulIdentifier","src":"5503:4:87"}]},{"nativeSrc":"5540:20:87","nodeType":"YulVariableDeclaration","src":"5540:20:87","value":{"name":"headStart","nativeSrc":"5551:9:87","nodeType":"YulIdentifier","src":"5551:9:87"},"variables":[{"name":"pos","nativeSrc":"5544:3:87","nodeType":"YulTypedName","src":"5544:3:87","type":""}]},{"nativeSrc":"5569:16:87","nodeType":"YulAssignment","src":"5569:16:87","value":{"name":"headStart","nativeSrc":"5576:9:87","nodeType":"YulIdentifier","src":"5576:9:87"},"variableNames":[{"name":"pos","nativeSrc":"5569:3:87","nodeType":"YulIdentifier","src":"5569:3:87"}]},{"nativeSrc":"5594:20:87","nodeType":"YulVariableDeclaration","src":"5594:20:87","value":{"name":"value0","nativeSrc":"5608:6:87","nodeType":"YulIdentifier","src":"5608:6:87"},"variables":[{"name":"srcPtr","nativeSrc":"5598:6:87","nodeType":"YulTypedName","src":"5598:6:87","type":""}]},{"nativeSrc":"5623:10:87","nodeType":"YulVariableDeclaration","src":"5623:10:87","value":{"kind":"number","nativeSrc":"5632:1:87","nodeType":"YulLiteral","src":"5632:1:87","type":"","value":"0"},"variables":[{"name":"i","nativeSrc":"5627:1:87","nodeType":"YulTypedName","src":"5627:1:87","type":""}]},{"body":{"nativeSrc":"5689:135:87","nodeType":"YulBlock","src":"5689:135:87","statements":[{"expression":{"arguments":[{"name":"pos","nativeSrc":"5710:3:87","nodeType":"YulIdentifier","src":"5710:3:87"},{"arguments":[{"arguments":[{"name":"srcPtr","nativeSrc":"5725:6:87","nodeType":"YulIdentifier","src":"5725:6:87"}],"functionName":{"name":"mload","nativeSrc":"5719:5:87","nodeType":"YulIdentifier","src":"5719:5:87"},"nativeSrc":"5719:13:87","nodeType":"YulFunctionCall","src":"5719:13:87"},{"kind":"number","nativeSrc":"5734:4:87","nodeType":"YulLiteral","src":"5734:4:87","type":"","value":"0xff"}],"functionName":{"name":"and","nativeSrc":"5715:3:87","nodeType":"YulIdentifier","src":"5715:3:87"},"nativeSrc":"5715:24:87","nodeType":"YulFunctionCall","src":"5715:24:87"}],"functionName":{"name":"mstore","nativeSrc":"5703:6:87","nodeType":"YulIdentifier","src":"5703:6:87"},"nativeSrc":"5703:37:87","nodeType":"YulFunctionCall","src":"5703:37:87"},"nativeSrc":"5703:37:87","nodeType":"YulExpressionStatement","src":"5703:37:87"},{"nativeSrc":"5753:21:87","nodeType":"YulAssignment","src":"5753:21:87","value":{"arguments":[{"name":"pos","nativeSrc":"5764:3:87","nodeType":"YulIdentifier","src":"5764:3:87"},{"kind":"number","nativeSrc":"5769:4:87","nodeType":"YulLiteral","src":"5769:4:87","type":"","value":"0x20"}],"functionName":{"name":"add","nativeSrc":"5760:3:87","nodeType":"YulIdentifier","src":"5760:3:87"},"nativeSrc":"5760:14:87","nodeType":"YulFunctionCall","src":"5760:14:87"},"variableNames":[{"name":"pos","nativeSrc":"5753:3:87","nodeType":"YulIdentifier","src":"5753:3:87"}]},{"nativeSrc":"5787:27:87","nodeType":"YulAssignment","src":"5787:27:87","value":{"arguments":[{"name":"srcPtr","nativeSrc":"5801:6:87","nodeType":"YulIdentifier","src":"5801:6:87"},{"kind":"number","nativeSrc":"5809:4:87","nodeType":"YulLiteral","src":"5809:4:87","type":"","value":"0x20"}],"functionName":{"name":"add","nativeSrc":"5797:3:87","nodeType":"YulIdentifier","src":"5797:3:87"},"nativeSrc":"5797:17:87","nodeType":"YulFunctionCall","src":"5797:17:87"},"variableNames":[{"name":"srcPtr","nativeSrc":"5787:6:87","nodeType":"YulIdentifier","src":"5787:6:87"}]}]},"condition":{"arguments":[{"name":"i","nativeSrc":"5653:1:87","nodeType":"YulIdentifier","src":"5653:1:87"},{"kind":"number","nativeSrc":"5656:4:87","nodeType":"YulLiteral","src":"5656:4:87","type":"","value":"0x20"}],"functionName":{"name":"lt","nativeSrc":"5650:2:87","nodeType":"YulIdentifier","src":"5650:2:87"},"nativeSrc":"5650:11:87","nodeType":"YulFunctionCall","src":"5650:11:87"},"nativeSrc":"5642:182:87","nodeType":"YulForLoop","post":{"nativeSrc":"5662:18:87","nodeType":"YulBlock","src":"5662:18:87","statements":[{"nativeSrc":"5664:14:87","nodeType":"YulAssignment","src":"5664:14:87","value":{"arguments":[{"name":"i","nativeSrc":"5673:1:87","nodeType":"YulIdentifier","src":"5673:1:87"},{"kind":"number","nativeSrc":"5676:1:87","nodeType":"YulLiteral","src":"5676:1:87","type":"","value":"1"}],"functionName":{"name":"add","nativeSrc":"5669:3:87","nodeType":"YulIdentifier","src":"5669:3:87"},"nativeSrc":"5669:9:87","nodeType":"YulFunctionCall","src":"5669:9:87"},"variableNames":[{"name":"i","nativeSrc":"5664:1:87","nodeType":"YulIdentifier","src":"5664:1:87"}]}]},"pre":{"nativeSrc":"5646:3:87","nodeType":"YulBlock","src":"5646:3:87","statements":[]},"src":"5642:182:87"}]},"name":"abi_encode_tuple_t_array$_t_uint8_$32_memory_ptr__to_t_array$_t_uint8_$32_memory_ptr__fromStack_reversed","nativeSrc":"5348:482:87","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nativeSrc":"5462:9:87","nodeType":"YulTypedName","src":"5462:9:87","type":""},{"name":"value0","nativeSrc":"5473:6:87","nodeType":"YulTypedName","src":"5473:6:87","type":""}],"returnVariables":[{"name":"tail","nativeSrc":"5484:4:87","nodeType":"YulTypedName","src":"5484:4:87","type":""}],"src":"5348:482:87"},{"body":{"nativeSrc":"5936:76:87","nodeType":"YulBlock","src":"5936:76:87","statements":[{"nativeSrc":"5946:26:87","nodeType":"YulAssignment","src":"5946:26:87","value":{"arguments":[{"name":"headStart","nativeSrc":"5958:9:87","nodeType":"YulIdentifier","src":"5958:9:87"},{"kind":"number","nativeSrc":"5969:2:87","nodeType":"YulLiteral","src":"5969:2:87","type":"","value":"32"}],"functionName":{"name":"add","nativeSrc":"5954:3:87","nodeType":"YulIdentifier","src":"5954:3:87"},"nativeSrc":"5954:18:87","nodeType":"YulFunctionCall","src":"5954:18:87"},"variableNames":[{"name":"tail","nativeSrc":"5946:4:87","nodeType":"YulIdentifier","src":"5946:4:87"}]},{"expression":{"arguments":[{"name":"headStart","nativeSrc":"5988:9:87","nodeType":"YulIdentifier","src":"5988:9:87"},{"name":"value0","nativeSrc":"5999:6:87","nodeType":"YulIdentifier","src":"5999:6:87"}],"functionName":{"name":"mstore","nativeSrc":"5981:6:87","nodeType":"YulIdentifier","src":"5981:6:87"},"nativeSrc":"5981:25:87","nodeType":"YulFunctionCall","src":"5981:25:87"},"nativeSrc":"5981:25:87","nodeType":"YulExpressionStatement","src":"5981:25:87"}]},"name":"abi_encode_tuple_t_bytes32__to_t_bytes32__fromStack_reversed","nativeSrc":"5835:177:87","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nativeSrc":"5905:9:87","nodeType":"YulTypedName","src":"5905:9:87","type":""},{"name":"value0","nativeSrc":"5916:6:87","nodeType":"YulTypedName","src":"5916:6:87","type":""}],"returnVariables":[{"name":"tail","nativeSrc":"5927:4:87","nodeType":"YulTypedName","src":"5927:4:87","type":""}],"src":"5835:177:87"},{"body":{"nativeSrc":"6104:280:87","nodeType":"YulBlock","src":"6104:280:87","statements":[{"body":{"nativeSrc":"6150:16:87","nodeType":"YulBlock","src":"6150:16:87","statements":[{"expression":{"arguments":[{"kind":"number","nativeSrc":"6159:1:87","nodeType":"YulLiteral","src":"6159:1:87","type":"","value":"0"},{"kind":"number","nativeSrc":"6162:1:87","nodeType":"YulLiteral","src":"6162:1:87","type":"","value":"0"}],"functionName":{"name":"revert","nativeSrc":"6152:6:87","nodeType":"YulIdentifier","src":"6152:6:87"},"nativeSrc":"6152:12:87","nodeType":"YulFunctionCall","src":"6152:12:87"},"nativeSrc":"6152:12:87","nodeType":"YulExpressionStatement","src":"6152:12:87"}]},"condition":{"arguments":[{"arguments":[{"name":"dataEnd","nativeSrc":"6125:7:87","nodeType":"YulIdentifier","src":"6125:7:87"},{"name":"headStart","nativeSrc":"6134:9:87","nodeType":"YulIdentifier","src":"6134:9:87"}],"functionName":{"name":"sub","nativeSrc":"6121:3:87","nodeType":"YulIdentifier","src":"6121:3:87"},"nativeSrc":"6121:23:87","nodeType":"YulFunctionCall","src":"6121:23:87"},{"kind":"number","nativeSrc":"6146:2:87","nodeType":"YulLiteral","src":"6146:2:87","type":"","value":"64"}],"functionName":{"name":"slt","nativeSrc":"6117:3:87","nodeType":"YulIdentifier","src":"6117:3:87"},"nativeSrc":"6117:32:87","nodeType":"YulFunctionCall","src":"6117:32:87"},"nativeSrc":"6114:52:87","nodeType":"YulIf","src":"6114:52:87"},{"nativeSrc":"6175:14:87","nodeType":"YulVariableDeclaration","src":"6175:14:87","value":{"kind":"number","nativeSrc":"6188:1:87","nodeType":"YulLiteral","src":"6188:1:87","type":"","value":"0"},"variables":[{"name":"value","nativeSrc":"6179:5:87","nodeType":"YulTypedName","src":"6179:5:87","type":""}]},{"nativeSrc":"6198:32:87","nodeType":"YulAssignment","src":"6198:32:87","value":{"arguments":[{"name":"headStart","nativeSrc":"6220:9:87","nodeType":"YulIdentifier","src":"6220:9:87"}],"functionName":{"name":"calldataload","nativeSrc":"6207:12:87","nodeType":"YulIdentifier","src":"6207:12:87"},"nativeSrc":"6207:23:87","nodeType":"YulFunctionCall","src":"6207:23:87"},"variableNames":[{"name":"value","nativeSrc":"6198:5:87","nodeType":"YulIdentifier","src":"6198:5:87"}]},{"nativeSrc":"6239:15:87","nodeType":"YulAssignment","src":"6239:15:87","value":{"name":"value","nativeSrc":"6249:5:87","nodeType":"YulIdentifier","src":"6249:5:87"},"variableNames":[{"name":"value0","nativeSrc":"6239:6:87","nodeType":"YulIdentifier","src":"6239:6:87"}]},{"nativeSrc":"6263:47:87","nodeType":"YulVariableDeclaration","src":"6263:47:87","value":{"arguments":[{"arguments":[{"name":"headStart","nativeSrc":"6295:9:87","nodeType":"YulIdentifier","src":"6295:9:87"},{"kind":"number","nativeSrc":"6306:2:87","nodeType":"YulLiteral","src":"6306:2:87","type":"","value":"32"}],"functionName":{"name":"add","nativeSrc":"6291:3:87","nodeType":"YulIdentifier","src":"6291:3:87"},"nativeSrc":"6291:18:87","nodeType":"YulFunctionCall","src":"6291:18:87"}],"functionName":{"name":"calldataload","nativeSrc":"6278:12:87","nodeType":"YulIdentifier","src":"6278:12:87"},"nativeSrc":"6278:32:87","nodeType":"YulFunctionCall","src":"6278:32:87"},"variables":[{"name":"value_1","nativeSrc":"6267:7:87","nodeType":"YulTypedName","src":"6267:7:87","type":""}]},{"expression":{"arguments":[{"name":"value_1","nativeSrc":"6344:7:87","nodeType":"YulIdentifier","src":"6344:7:87"}],"functionName":{"name":"validator_revert_address","nativeSrc":"6319:24:87","nodeType":"YulIdentifier","src":"6319:24:87"},"nativeSrc":"6319:33:87","nodeType":"YulFunctionCall","src":"6319:33:87"},"nativeSrc":"6319:33:87","nodeType":"YulExpressionStatement","src":"6319:33:87"},{"nativeSrc":"6361:17:87","nodeType":"YulAssignment","src":"6361:17:87","value":{"name":"value_1","nativeSrc":"6371:7:87","nodeType":"YulIdentifier","src":"6371:7:87"},"variableNames":[{"name":"value1","nativeSrc":"6361:6:87","nodeType":"YulIdentifier","src":"6361:6:87"}]}]},"name":"abi_decode_tuple_t_uint256t_address","nativeSrc":"6017:367:87","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nativeSrc":"6062:9:87","nodeType":"YulTypedName","src":"6062:9:87","type":""},{"name":"dataEnd","nativeSrc":"6073:7:87","nodeType":"YulTypedName","src":"6073:7:87","type":""}],"returnVariables":[{"name":"value0","nativeSrc":"6085:6:87","nodeType":"YulTypedName","src":"6085:6:87","type":""},{"name":"value1","nativeSrc":"6093:6:87","nodeType":"YulTypedName","src":"6093:6:87","type":""}],"src":"6017:367:87"},{"body":{"nativeSrc":"6431:76:87","nodeType":"YulBlock","src":"6431:76:87","statements":[{"body":{"nativeSrc":"6485:16:87","nodeType":"YulBlock","src":"6485:16:87","statements":[{"expression":{"arguments":[{"kind":"number","nativeSrc":"6494:1:87","nodeType":"YulLiteral","src":"6494:1:87","type":"","value":"0"},{"kind":"number","nativeSrc":"6497:1:87","nodeType":"YulLiteral","src":"6497:1:87","type":"","value":"0"}],"functionName":{"name":"revert","nativeSrc":"6487:6:87","nodeType":"YulIdentifier","src":"6487:6:87"},"nativeSrc":"6487:12:87","nodeType":"YulFunctionCall","src":"6487:12:87"},"nativeSrc":"6487:12:87","nodeType":"YulExpressionStatement","src":"6487:12:87"}]},"condition":{"arguments":[{"arguments":[{"name":"value","nativeSrc":"6454:5:87","nodeType":"YulIdentifier","src":"6454:5:87"},{"arguments":[{"arguments":[{"name":"value","nativeSrc":"6475:5:87","nodeType":"YulIdentifier","src":"6475:5:87"}],"functionName":{"name":"iszero","nativeSrc":"6468:6:87","nodeType":"YulIdentifier","src":"6468:6:87"},"nativeSrc":"6468:13:87","nodeType":"YulFunctionCall","src":"6468:13:87"}],"functionName":{"name":"iszero","nativeSrc":"6461:6:87","nodeType":"YulIdentifier","src":"6461:6:87"},"nativeSrc":"6461:21:87","nodeType":"YulFunctionCall","src":"6461:21:87"}],"functionName":{"name":"eq","nativeSrc":"6451:2:87","nodeType":"YulIdentifier","src":"6451:2:87"},"nativeSrc":"6451:32:87","nodeType":"YulFunctionCall","src":"6451:32:87"}],"functionName":{"name":"iszero","nativeSrc":"6444:6:87","nodeType":"YulIdentifier","src":"6444:6:87"},"nativeSrc":"6444:40:87","nodeType":"YulFunctionCall","src":"6444:40:87"},"nativeSrc":"6441:60:87","nodeType":"YulIf","src":"6441:60:87"}]},"name":"validator_revert_bool","nativeSrc":"6389:118:87","nodeType":"YulFunctionDefinition","parameters":[{"name":"value","nativeSrc":"6420:5:87","nodeType":"YulTypedName","src":"6420:5:87","type":""}],"src":"6389:118:87"},{"body":{"nativeSrc":"6662:536:87","nodeType":"YulBlock","src":"6662:536:87","statements":[{"body":{"nativeSrc":"6709:16:87","nodeType":"YulBlock","src":"6709:16:87","statements":[{"expression":{"arguments":[{"kind":"number","nativeSrc":"6718:1:87","nodeType":"YulLiteral","src":"6718:1:87","type":"","value":"0"},{"kind":"number","nativeSrc":"6721:1:87","nodeType":"YulLiteral","src":"6721:1:87","type":"","value":"0"}],"functionName":{"name":"revert","nativeSrc":"6711:6:87","nodeType":"YulIdentifier","src":"6711:6:87"},"nativeSrc":"6711:12:87","nodeType":"YulFunctionCall","src":"6711:12:87"},"nativeSrc":"6711:12:87","nodeType":"YulExpressionStatement","src":"6711:12:87"}]},"condition":{"arguments":[{"arguments":[{"name":"dataEnd","nativeSrc":"6683:7:87","nodeType":"YulIdentifier","src":"6683:7:87"},{"name":"headStart","nativeSrc":"6692:9:87","nodeType":"YulIdentifier","src":"6692:9:87"}],"functionName":{"name":"sub","nativeSrc":"6679:3:87","nodeType":"YulIdentifier","src":"6679:3:87"},"nativeSrc":"6679:23:87","nodeType":"YulFunctionCall","src":"6679:23:87"},{"kind":"number","nativeSrc":"6704:3:87","nodeType":"YulLiteral","src":"6704:3:87","type":"","value":"128"}],"functionName":{"name":"slt","nativeSrc":"6675:3:87","nodeType":"YulIdentifier","src":"6675:3:87"},"nativeSrc":"6675:33:87","nodeType":"YulFunctionCall","src":"6675:33:87"},"nativeSrc":"6672:53:87","nodeType":"YulIf","src":"6672:53:87"},{"nativeSrc":"6734:37:87","nodeType":"YulAssignment","src":"6734:37:87","value":{"arguments":[{"name":"headStart","nativeSrc":"6761:9:87","nodeType":"YulIdentifier","src":"6761:9:87"}],"functionName":{"name":"abi_decode_uint8","nativeSrc":"6744:16:87","nodeType":"YulIdentifier","src":"6744:16:87"},"nativeSrc":"6744:27:87","nodeType":"YulFunctionCall","src":"6744:27:87"},"variableNames":[{"name":"value0","nativeSrc":"6734:6:87","nodeType":"YulIdentifier","src":"6734:6:87"}]},{"nativeSrc":"6780:45:87","nodeType":"YulVariableDeclaration","src":"6780:45:87","value":{"arguments":[{"arguments":[{"name":"headStart","nativeSrc":"6810:9:87","nodeType":"YulIdentifier","src":"6810:9:87"},{"kind":"number","nativeSrc":"6821:2:87","nodeType":"YulLiteral","src":"6821:2:87","type":"","value":"32"}],"functionName":{"name":"add","nativeSrc":"6806:3:87","nodeType":"YulIdentifier","src":"6806:3:87"},"nativeSrc":"6806:18:87","nodeType":"YulFunctionCall","src":"6806:18:87"}],"functionName":{"name":"calldataload","nativeSrc":"6793:12:87","nodeType":"YulIdentifier","src":"6793:12:87"},"nativeSrc":"6793:32:87","nodeType":"YulFunctionCall","src":"6793:32:87"},"variables":[{"name":"value","nativeSrc":"6784:5:87","nodeType":"YulTypedName","src":"6784:5:87","type":""}]},{"expression":{"arguments":[{"name":"value","nativeSrc":"6859:5:87","nodeType":"YulIdentifier","src":"6859:5:87"}],"functionName":{"name":"validator_revert_address","nativeSrc":"6834:24:87","nodeType":"YulIdentifier","src":"6834:24:87"},"nativeSrc":"6834:31:87","nodeType":"YulFunctionCall","src":"6834:31:87"},"nativeSrc":"6834:31:87","nodeType":"YulExpressionStatement","src":"6834:31:87"},{"nativeSrc":"6874:15:87","nodeType":"YulAssignment","src":"6874:15:87","value":{"name":"value","nativeSrc":"6884:5:87","nodeType":"YulIdentifier","src":"6884:5:87"},"variableNames":[{"name":"value1","nativeSrc":"6874:6:87","nodeType":"YulIdentifier","src":"6874:6:87"}]},{"nativeSrc":"6898:46:87","nodeType":"YulVariableDeclaration","src":"6898:46:87","value":{"arguments":[{"arguments":[{"name":"headStart","nativeSrc":"6929:9:87","nodeType":"YulIdentifier","src":"6929:9:87"},{"kind":"number","nativeSrc":"6940:2:87","nodeType":"YulLiteral","src":"6940:2:87","type":"","value":"64"}],"functionName":{"name":"add","nativeSrc":"6925:3:87","nodeType":"YulIdentifier","src":"6925:3:87"},"nativeSrc":"6925:18:87","nodeType":"YulFunctionCall","src":"6925:18:87"}],"functionName":{"name":"calldataload","nativeSrc":"6912:12:87","nodeType":"YulIdentifier","src":"6912:12:87"},"nativeSrc":"6912:32:87","nodeType":"YulFunctionCall","src":"6912:32:87"},"variables":[{"name":"offset","nativeSrc":"6902:6:87","nodeType":"YulTypedName","src":"6902:6:87","type":""}]},{"body":{"nativeSrc":"6987:16:87","nodeType":"YulBlock","src":"6987:16:87","statements":[{"expression":{"arguments":[{"kind":"number","nativeSrc":"6996:1:87","nodeType":"YulLiteral","src":"6996:1:87","type":"","value":"0"},{"kind":"number","nativeSrc":"6999:1:87","nodeType":"YulLiteral","src":"6999:1:87","type":"","value":"0"}],"functionName":{"name":"revert","nativeSrc":"6989:6:87","nodeType":"YulIdentifier","src":"6989:6:87"},"nativeSrc":"6989:12:87","nodeType":"YulFunctionCall","src":"6989:12:87"},"nativeSrc":"6989:12:87","nodeType":"YulExpressionStatement","src":"6989:12:87"}]},"condition":{"arguments":[{"name":"offset","nativeSrc":"6959:6:87","nodeType":"YulIdentifier","src":"6959:6:87"},{"kind":"number","nativeSrc":"6967:18:87","nodeType":"YulLiteral","src":"6967:18:87","type":"","value":"0xffffffffffffffff"}],"functionName":{"name":"gt","nativeSrc":"6956:2:87","nodeType":"YulIdentifier","src":"6956:2:87"},"nativeSrc":"6956:30:87","nodeType":"YulFunctionCall","src":"6956:30:87"},"nativeSrc":"6953:50:87","nodeType":"YulIf","src":"6953:50:87"},{"nativeSrc":"7012:59:87","nodeType":"YulAssignment","src":"7012:59:87","value":{"arguments":[{"arguments":[{"name":"headStart","nativeSrc":"7043:9:87","nodeType":"YulIdentifier","src":"7043:9:87"},{"name":"offset","nativeSrc":"7054:6:87","nodeType":"YulIdentifier","src":"7054:6:87"}],"functionName":{"name":"add","nativeSrc":"7039:3:87","nodeType":"YulIdentifier","src":"7039:3:87"},"nativeSrc":"7039:22:87","nodeType":"YulFunctionCall","src":"7039:22:87"},{"name":"dataEnd","nativeSrc":"7063:7:87","nodeType":"YulIdentifier","src":"7063:7:87"}],"functionName":{"name":"abi_decode_bytes","nativeSrc":"7022:16:87","nodeType":"YulIdentifier","src":"7022:16:87"},"nativeSrc":"7022:49:87","nodeType":"YulFunctionCall","src":"7022:49:87"},"variableNames":[{"name":"value2","nativeSrc":"7012:6:87","nodeType":"YulIdentifier","src":"7012:6:87"}]},{"nativeSrc":"7080:47:87","nodeType":"YulVariableDeclaration","src":"7080:47:87","value":{"arguments":[{"arguments":[{"name":"headStart","nativeSrc":"7112:9:87","nodeType":"YulIdentifier","src":"7112:9:87"},{"kind":"number","nativeSrc":"7123:2:87","nodeType":"YulLiteral","src":"7123:2:87","type":"","value":"96"}],"functionName":{"name":"add","nativeSrc":"7108:3:87","nodeType":"YulIdentifier","src":"7108:3:87"},"nativeSrc":"7108:18:87","nodeType":"YulFunctionCall","src":"7108:18:87"}],"functionName":{"name":"calldataload","nativeSrc":"7095:12:87","nodeType":"YulIdentifier","src":"7095:12:87"},"nativeSrc":"7095:32:87","nodeType":"YulFunctionCall","src":"7095:32:87"},"variables":[{"name":"value_1","nativeSrc":"7084:7:87","nodeType":"YulTypedName","src":"7084:7:87","type":""}]},{"expression":{"arguments":[{"name":"value_1","nativeSrc":"7158:7:87","nodeType":"YulIdentifier","src":"7158:7:87"}],"functionName":{"name":"validator_revert_bool","nativeSrc":"7136:21:87","nodeType":"YulIdentifier","src":"7136:21:87"},"nativeSrc":"7136:30:87","nodeType":"YulFunctionCall","src":"7136:30:87"},"nativeSrc":"7136:30:87","nodeType":"YulExpressionStatement","src":"7136:30:87"},{"nativeSrc":"7175:17:87","nodeType":"YulAssignment","src":"7175:17:87","value":{"name":"value_1","nativeSrc":"7185:7:87","nodeType":"YulIdentifier","src":"7185:7:87"},"variableNames":[{"name":"value3","nativeSrc":"7175:6:87","nodeType":"YulIdentifier","src":"7175:6:87"}]}]},"name":"abi_decode_tuple_t_uint8t_contract$_IInvestStrategy_$20725t_bytes_memory_ptrt_bool","nativeSrc":"6512:686:87","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nativeSrc":"6604:9:87","nodeType":"YulTypedName","src":"6604:9:87","type":""},{"name":"dataEnd","nativeSrc":"6615:7:87","nodeType":"YulTypedName","src":"6615:7:87","type":""}],"returnVariables":[{"name":"value0","nativeSrc":"6627:6:87","nodeType":"YulTypedName","src":"6627:6:87","type":""},{"name":"value1","nativeSrc":"6635:6:87","nodeType":"YulTypedName","src":"6635:6:87","type":""},{"name":"value2","nativeSrc":"6643:6:87","nodeType":"YulTypedName","src":"6643:6:87","type":""},{"name":"value3","nativeSrc":"6651:6:87","nodeType":"YulTypedName","src":"6651:6:87","type":""}],"src":"6512:686:87"},{"body":{"nativeSrc":"7324:359:87","nodeType":"YulBlock","src":"7324:359:87","statements":[{"body":{"nativeSrc":"7370:16:87","nodeType":"YulBlock","src":"7370:16:87","statements":[{"expression":{"arguments":[{"kind":"number","nativeSrc":"7379:1:87","nodeType":"YulLiteral","src":"7379:1:87","type":"","value":"0"},{"kind":"number","nativeSrc":"7382:1:87","nodeType":"YulLiteral","src":"7382:1:87","type":"","value":"0"}],"functionName":{"name":"revert","nativeSrc":"7372:6:87","nodeType":"YulIdentifier","src":"7372:6:87"},"nativeSrc":"7372:12:87","nodeType":"YulFunctionCall","src":"7372:12:87"},"nativeSrc":"7372:12:87","nodeType":"YulExpressionStatement","src":"7372:12:87"}]},"condition":{"arguments":[{"arguments":[{"name":"dataEnd","nativeSrc":"7345:7:87","nodeType":"YulIdentifier","src":"7345:7:87"},{"name":"headStart","nativeSrc":"7354:9:87","nodeType":"YulIdentifier","src":"7354:9:87"}],"functionName":{"name":"sub","nativeSrc":"7341:3:87","nodeType":"YulIdentifier","src":"7341:3:87"},"nativeSrc":"7341:23:87","nodeType":"YulFunctionCall","src":"7341:23:87"},{"kind":"number","nativeSrc":"7366:2:87","nodeType":"YulLiteral","src":"7366:2:87","type":"","value":"64"}],"functionName":{"name":"slt","nativeSrc":"7337:3:87","nodeType":"YulIdentifier","src":"7337:3:87"},"nativeSrc":"7337:32:87","nodeType":"YulFunctionCall","src":"7337:32:87"},"nativeSrc":"7334:52:87","nodeType":"YulIf","src":"7334:52:87"},{"nativeSrc":"7395:36:87","nodeType":"YulVariableDeclaration","src":"7395:36:87","value":{"arguments":[{"name":"headStart","nativeSrc":"7421:9:87","nodeType":"YulIdentifier","src":"7421:9:87"}],"functionName":{"name":"calldataload","nativeSrc":"7408:12:87","nodeType":"YulIdentifier","src":"7408:12:87"},"nativeSrc":"7408:23:87","nodeType":"YulFunctionCall","src":"7408:23:87"},"variables":[{"name":"value","nativeSrc":"7399:5:87","nodeType":"YulTypedName","src":"7399:5:87","type":""}]},{"expression":{"arguments":[{"name":"value","nativeSrc":"7465:5:87","nodeType":"YulIdentifier","src":"7465:5:87"}],"functionName":{"name":"validator_revert_address","nativeSrc":"7440:24:87","nodeType":"YulIdentifier","src":"7440:24:87"},"nativeSrc":"7440:31:87","nodeType":"YulFunctionCall","src":"7440:31:87"},"nativeSrc":"7440:31:87","nodeType":"YulExpressionStatement","src":"7440:31:87"},{"nativeSrc":"7480:15:87","nodeType":"YulAssignment","src":"7480:15:87","value":{"name":"value","nativeSrc":"7490:5:87","nodeType":"YulIdentifier","src":"7490:5:87"},"variableNames":[{"name":"value0","nativeSrc":"7480:6:87","nodeType":"YulIdentifier","src":"7480:6:87"}]},{"nativeSrc":"7504:46:87","nodeType":"YulVariableDeclaration","src":"7504:46:87","value":{"arguments":[{"arguments":[{"name":"headStart","nativeSrc":"7535:9:87","nodeType":"YulIdentifier","src":"7535:9:87"},{"kind":"number","nativeSrc":"7546:2:87","nodeType":"YulLiteral","src":"7546:2:87","type":"","value":"32"}],"functionName":{"name":"add","nativeSrc":"7531:3:87","nodeType":"YulIdentifier","src":"7531:3:87"},"nativeSrc":"7531:18:87","nodeType":"YulFunctionCall","src":"7531:18:87"}],"functionName":{"name":"calldataload","nativeSrc":"7518:12:87","nodeType":"YulIdentifier","src":"7518:12:87"},"nativeSrc":"7518:32:87","nodeType":"YulFunctionCall","src":"7518:32:87"},"variables":[{"name":"offset","nativeSrc":"7508:6:87","nodeType":"YulTypedName","src":"7508:6:87","type":""}]},{"body":{"nativeSrc":"7593:16:87","nodeType":"YulBlock","src":"7593:16:87","statements":[{"expression":{"arguments":[{"kind":"number","nativeSrc":"7602:1:87","nodeType":"YulLiteral","src":"7602:1:87","type":"","value":"0"},{"kind":"number","nativeSrc":"7605:1:87","nodeType":"YulLiteral","src":"7605:1:87","type":"","value":"0"}],"functionName":{"name":"revert","nativeSrc":"7595:6:87","nodeType":"YulIdentifier","src":"7595:6:87"},"nativeSrc":"7595:12:87","nodeType":"YulFunctionCall","src":"7595:12:87"},"nativeSrc":"7595:12:87","nodeType":"YulExpressionStatement","src":"7595:12:87"}]},"condition":{"arguments":[{"name":"offset","nativeSrc":"7565:6:87","nodeType":"YulIdentifier","src":"7565:6:87"},{"kind":"number","nativeSrc":"7573:18:87","nodeType":"YulLiteral","src":"7573:18:87","type":"","value":"0xffffffffffffffff"}],"functionName":{"name":"gt","nativeSrc":"7562:2:87","nodeType":"YulIdentifier","src":"7562:2:87"},"nativeSrc":"7562:30:87","nodeType":"YulFunctionCall","src":"7562:30:87"},"nativeSrc":"7559:50:87","nodeType":"YulIf","src":"7559:50:87"},{"nativeSrc":"7618:59:87","nodeType":"YulAssignment","src":"7618:59:87","value":{"arguments":[{"arguments":[{"name":"headStart","nativeSrc":"7649:9:87","nodeType":"YulIdentifier","src":"7649:9:87"},{"name":"offset","nativeSrc":"7660:6:87","nodeType":"YulIdentifier","src":"7660:6:87"}],"functionName":{"name":"add","nativeSrc":"7645:3:87","nodeType":"YulIdentifier","src":"7645:3:87"},"nativeSrc":"7645:22:87","nodeType":"YulFunctionCall","src":"7645:22:87"},{"name":"dataEnd","nativeSrc":"7669:7:87","nodeType":"YulIdentifier","src":"7669:7:87"}],"functionName":{"name":"abi_decode_bytes","nativeSrc":"7628:16:87","nodeType":"YulIdentifier","src":"7628:16:87"},"nativeSrc":"7628:49:87","nodeType":"YulFunctionCall","src":"7628:49:87"},"variableNames":[{"name":"value1","nativeSrc":"7618:6:87","nodeType":"YulIdentifier","src":"7618:6:87"}]}]},"name":"abi_decode_tuple_t_contract$_IInvestStrategy_$20725t_bytes_memory_ptr","nativeSrc":"7203:480:87","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nativeSrc":"7282:9:87","nodeType":"YulTypedName","src":"7282:9:87","type":""},{"name":"dataEnd","nativeSrc":"7293:7:87","nodeType":"YulTypedName","src":"7293:7:87","type":""}],"returnVariables":[{"name":"value0","nativeSrc":"7305:6:87","nodeType":"YulTypedName","src":"7305:6:87","type":""},{"name":"value1","nativeSrc":"7313:6:87","nodeType":"YulTypedName","src":"7313:6:87","type":""}],"src":"7203:480:87"},{"body":{"nativeSrc":"7771:169:87","nodeType":"YulBlock","src":"7771:169:87","statements":[{"body":{"nativeSrc":"7817:16:87","nodeType":"YulBlock","src":"7817:16:87","statements":[{"expression":{"arguments":[{"kind":"number","nativeSrc":"7826:1:87","nodeType":"YulLiteral","src":"7826:1:87","type":"","value":"0"},{"kind":"number","nativeSrc":"7829:1:87","nodeType":"YulLiteral","src":"7829:1:87","type":"","value":"0"}],"functionName":{"name":"revert","nativeSrc":"7819:6:87","nodeType":"YulIdentifier","src":"7819:6:87"},"nativeSrc":"7819:12:87","nodeType":"YulFunctionCall","src":"7819:12:87"},"nativeSrc":"7819:12:87","nodeType":"YulExpressionStatement","src":"7819:12:87"}]},"condition":{"arguments":[{"arguments":[{"name":"dataEnd","nativeSrc":"7792:7:87","nodeType":"YulIdentifier","src":"7792:7:87"},{"name":"headStart","nativeSrc":"7801:9:87","nodeType":"YulIdentifier","src":"7801:9:87"}],"functionName":{"name":"sub","nativeSrc":"7788:3:87","nodeType":"YulIdentifier","src":"7788:3:87"},"nativeSrc":"7788:23:87","nodeType":"YulFunctionCall","src":"7788:23:87"},{"kind":"number","nativeSrc":"7813:2:87","nodeType":"YulLiteral","src":"7813:2:87","type":"","value":"64"}],"functionName":{"name":"slt","nativeSrc":"7784:3:87","nodeType":"YulIdentifier","src":"7784:3:87"},"nativeSrc":"7784:32:87","nodeType":"YulFunctionCall","src":"7784:32:87"},"nativeSrc":"7781:52:87","nodeType":"YulIf","src":"7781:52:87"},{"nativeSrc":"7842:37:87","nodeType":"YulAssignment","src":"7842:37:87","value":{"arguments":[{"name":"headStart","nativeSrc":"7869:9:87","nodeType":"YulIdentifier","src":"7869:9:87"}],"functionName":{"name":"abi_decode_uint8","nativeSrc":"7852:16:87","nodeType":"YulIdentifier","src":"7852:16:87"},"nativeSrc":"7852:27:87","nodeType":"YulFunctionCall","src":"7852:27:87"},"variableNames":[{"name":"value0","nativeSrc":"7842:6:87","nodeType":"YulIdentifier","src":"7842:6:87"}]},{"nativeSrc":"7888:46:87","nodeType":"YulAssignment","src":"7888:46:87","value":{"arguments":[{"arguments":[{"name":"headStart","nativeSrc":"7919:9:87","nodeType":"YulIdentifier","src":"7919:9:87"},{"kind":"number","nativeSrc":"7930:2:87","nodeType":"YulLiteral","src":"7930:2:87","type":"","value":"32"}],"functionName":{"name":"add","nativeSrc":"7915:3:87","nodeType":"YulIdentifier","src":"7915:3:87"},"nativeSrc":"7915:18:87","nodeType":"YulFunctionCall","src":"7915:18:87"}],"functionName":{"name":"abi_decode_uint8","nativeSrc":"7898:16:87","nodeType":"YulIdentifier","src":"7898:16:87"},"nativeSrc":"7898:36:87","nodeType":"YulFunctionCall","src":"7898:36:87"},"variableNames":[{"name":"value1","nativeSrc":"7888:6:87","nodeType":"YulIdentifier","src":"7888:6:87"}]}]},"name":"abi_decode_tuple_t_uint8t_uint8","nativeSrc":"7688:252:87","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nativeSrc":"7729:9:87","nodeType":"YulTypedName","src":"7729:9:87","type":""},{"name":"dataEnd","nativeSrc":"7740:7:87","nodeType":"YulTypedName","src":"7740:7:87","type":""}],"returnVariables":[{"name":"value0","nativeSrc":"7752:6:87","nodeType":"YulTypedName","src":"7752:6:87","type":""},{"name":"value1","nativeSrc":"7760:6:87","nodeType":"YulTypedName","src":"7760:6:87","type":""}],"src":"7688:252:87"},{"body":{"nativeSrc":"8044:103:87","nodeType":"YulBlock","src":"8044:103:87","statements":[{"nativeSrc":"8054:26:87","nodeType":"YulAssignment","src":"8054:26:87","value":{"arguments":[{"name":"headStart","nativeSrc":"8066:9:87","nodeType":"YulIdentifier","src":"8066:9:87"},{"kind":"number","nativeSrc":"8077:2:87","nodeType":"YulLiteral","src":"8077:2:87","type":"","value":"32"}],"functionName":{"name":"add","nativeSrc":"8062:3:87","nodeType":"YulIdentifier","src":"8062:3:87"},"nativeSrc":"8062:18:87","nodeType":"YulFunctionCall","src":"8062:18:87"},"variableNames":[{"name":"tail","nativeSrc":"8054:4:87","nodeType":"YulIdentifier","src":"8054:4:87"}]},{"expression":{"arguments":[{"name":"headStart","nativeSrc":"8096:9:87","nodeType":"YulIdentifier","src":"8096:9:87"},{"arguments":[{"name":"value0","nativeSrc":"8111:6:87","nodeType":"YulIdentifier","src":"8111:6:87"},{"arguments":[{"kind":"number","nativeSrc":"8123:3:87","nodeType":"YulLiteral","src":"8123:3:87","type":"","value":"224"},{"kind":"number","nativeSrc":"8128:10:87","nodeType":"YulLiteral","src":"8128:10:87","type":"","value":"0xffffffff"}],"functionName":{"name":"shl","nativeSrc":"8119:3:87","nodeType":"YulIdentifier","src":"8119:3:87"},"nativeSrc":"8119:20:87","nodeType":"YulFunctionCall","src":"8119:20:87"}],"functionName":{"name":"and","nativeSrc":"8107:3:87","nodeType":"YulIdentifier","src":"8107:3:87"},"nativeSrc":"8107:33:87","nodeType":"YulFunctionCall","src":"8107:33:87"}],"functionName":{"name":"mstore","nativeSrc":"8089:6:87","nodeType":"YulIdentifier","src":"8089:6:87"},"nativeSrc":"8089:52:87","nodeType":"YulFunctionCall","src":"8089:52:87"},"nativeSrc":"8089:52:87","nodeType":"YulExpressionStatement","src":"8089:52:87"}]},"name":"abi_encode_tuple_t_bytes4__to_t_bytes4__fromStack_reversed","nativeSrc":"7945:202:87","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nativeSrc":"8013:9:87","nodeType":"YulTypedName","src":"8013:9:87","type":""},{"name":"value0","nativeSrc":"8024:6:87","nodeType":"YulTypedName","src":"8024:6:87","type":""}],"returnVariables":[{"name":"tail","nativeSrc":"8035:4:87","nodeType":"YulTypedName","src":"8035:4:87","type":""}],"src":"7945:202:87"},{"body":{"nativeSrc":"8219:114:87","nodeType":"YulBlock","src":"8219:114:87","statements":[{"body":{"nativeSrc":"8263:22:87","nodeType":"YulBlock","src":"8263:22:87","statements":[{"expression":{"arguments":[],"functionName":{"name":"panic_error_0x41","nativeSrc":"8265:16:87","nodeType":"YulIdentifier","src":"8265:16:87"},"nativeSrc":"8265:18:87","nodeType":"YulFunctionCall","src":"8265:18:87"},"nativeSrc":"8265:18:87","nodeType":"YulExpressionStatement","src":"8265:18:87"}]},"condition":{"arguments":[{"name":"length","nativeSrc":"8235:6:87","nodeType":"YulIdentifier","src":"8235:6:87"},{"kind":"number","nativeSrc":"8243:18:87","nodeType":"YulLiteral","src":"8243:18:87","type":"","value":"0xffffffffffffffff"}],"functionName":{"name":"gt","nativeSrc":"8232:2:87","nodeType":"YulIdentifier","src":"8232:2:87"},"nativeSrc":"8232:30:87","nodeType":"YulFunctionCall","src":"8232:30:87"},"nativeSrc":"8229:56:87","nodeType":"YulIf","src":"8229:56:87"},{"nativeSrc":"8294:33:87","nodeType":"YulAssignment","src":"8294:33:87","value":{"arguments":[{"arguments":[{"kind":"number","nativeSrc":"8310:1:87","nodeType":"YulLiteral","src":"8310:1:87","type":"","value":"5"},{"name":"length","nativeSrc":"8313:6:87","nodeType":"YulIdentifier","src":"8313:6:87"}],"functionName":{"name":"shl","nativeSrc":"8306:3:87","nodeType":"YulIdentifier","src":"8306:3:87"},"nativeSrc":"8306:14:87","nodeType":"YulFunctionCall","src":"8306:14:87"},{"kind":"number","nativeSrc":"8322:4:87","nodeType":"YulLiteral","src":"8322:4:87","type":"","value":"0x20"}],"functionName":{"name":"add","nativeSrc":"8302:3:87","nodeType":"YulIdentifier","src":"8302:3:87"},"nativeSrc":"8302:25:87","nodeType":"YulFunctionCall","src":"8302:25:87"},"variableNames":[{"name":"size","nativeSrc":"8294:4:87","nodeType":"YulIdentifier","src":"8294:4:87"}]}]},"name":"array_allocation_size_array_uint8_dyn","nativeSrc":"8152:181:87","nodeType":"YulFunctionDefinition","parameters":[{"name":"length","nativeSrc":"8199:6:87","nodeType":"YulTypedName","src":"8199:6:87","type":""}],"returnVariables":[{"name":"size","nativeSrc":"8210:4:87","nodeType":"YulTypedName","src":"8210:4:87","type":""}],"src":"8152:181:87"},{"body":{"nativeSrc":"8400:607:87","nodeType":"YulBlock","src":"8400:607:87","statements":[{"body":{"nativeSrc":"8449:16:87","nodeType":"YulBlock","src":"8449:16:87","statements":[{"expression":{"arguments":[{"kind":"number","nativeSrc":"8458:1:87","nodeType":"YulLiteral","src":"8458:1:87","type":"","value":"0"},{"kind":"number","nativeSrc":"8461:1:87","nodeType":"YulLiteral","src":"8461:1:87","type":"","value":"0"}],"functionName":{"name":"revert","nativeSrc":"8451:6:87","nodeType":"YulIdentifier","src":"8451:6:87"},"nativeSrc":"8451:12:87","nodeType":"YulFunctionCall","src":"8451:12:87"},"nativeSrc":"8451:12:87","nodeType":"YulExpressionStatement","src":"8451:12:87"}]},"condition":{"arguments":[{"arguments":[{"arguments":[{"name":"offset","nativeSrc":"8428:6:87","nodeType":"YulIdentifier","src":"8428:6:87"},{"kind":"number","nativeSrc":"8436:4:87","nodeType":"YulLiteral","src":"8436:4:87","type":"","value":"0x1f"}],"functionName":{"name":"add","nativeSrc":"8424:3:87","nodeType":"YulIdentifier","src":"8424:3:87"},"nativeSrc":"8424:17:87","nodeType":"YulFunctionCall","src":"8424:17:87"},{"name":"end","nativeSrc":"8443:3:87","nodeType":"YulIdentifier","src":"8443:3:87"}],"functionName":{"name":"slt","nativeSrc":"8420:3:87","nodeType":"YulIdentifier","src":"8420:3:87"},"nativeSrc":"8420:27:87","nodeType":"YulFunctionCall","src":"8420:27:87"}],"functionName":{"name":"iszero","nativeSrc":"8413:6:87","nodeType":"YulIdentifier","src":"8413:6:87"},"nativeSrc":"8413:35:87","nodeType":"YulFunctionCall","src":"8413:35:87"},"nativeSrc":"8410:55:87","nodeType":"YulIf","src":"8410:55:87"},{"nativeSrc":"8474:34:87","nodeType":"YulVariableDeclaration","src":"8474:34:87","value":{"arguments":[{"name":"offset","nativeSrc":"8501:6:87","nodeType":"YulIdentifier","src":"8501:6:87"}],"functionName":{"name":"calldataload","nativeSrc":"8488:12:87","nodeType":"YulIdentifier","src":"8488:12:87"},"nativeSrc":"8488:20:87","nodeType":"YulFunctionCall","src":"8488:20:87"},"variables":[{"name":"length","nativeSrc":"8478:6:87","nodeType":"YulTypedName","src":"8478:6:87","type":""}]},{"nativeSrc":"8517:73:87","nodeType":"YulVariableDeclaration","src":"8517:73:87","value":{"arguments":[{"arguments":[{"name":"length","nativeSrc":"8582:6:87","nodeType":"YulIdentifier","src":"8582:6:87"}],"functionName":{"name":"array_allocation_size_array_uint8_dyn","nativeSrc":"8544:37:87","nodeType":"YulIdentifier","src":"8544:37:87"},"nativeSrc":"8544:45:87","nodeType":"YulFunctionCall","src":"8544:45:87"}],"functionName":{"name":"allocate_memory","nativeSrc":"8528:15:87","nodeType":"YulIdentifier","src":"8528:15:87"},"nativeSrc":"8528:62:87","nodeType":"YulFunctionCall","src":"8528:62:87"},"variables":[{"name":"dst","nativeSrc":"8521:3:87","nodeType":"YulTypedName","src":"8521:3:87","type":""}]},{"nativeSrc":"8599:18:87","nodeType":"YulVariableDeclaration","src":"8599:18:87","value":{"name":"dst","nativeSrc":"8614:3:87","nodeType":"YulIdentifier","src":"8614:3:87"},"variables":[{"name":"array_1","nativeSrc":"8603:7:87","nodeType":"YulTypedName","src":"8603:7:87","type":""}]},{"expression":{"arguments":[{"name":"dst","nativeSrc":"8633:3:87","nodeType":"YulIdentifier","src":"8633:3:87"},{"name":"length","nativeSrc":"8638:6:87","nodeType":"YulIdentifier","src":"8638:6:87"}],"functionName":{"name":"mstore","nativeSrc":"8626:6:87","nodeType":"YulIdentifier","src":"8626:6:87"},"nativeSrc":"8626:19:87","nodeType":"YulFunctionCall","src":"8626:19:87"},"nativeSrc":"8626:19:87","nodeType":"YulExpressionStatement","src":"8626:19:87"},{"nativeSrc":"8654:21:87","nodeType":"YulAssignment","src":"8654:21:87","value":{"arguments":[{"name":"dst","nativeSrc":"8665:3:87","nodeType":"YulIdentifier","src":"8665:3:87"},{"kind":"number","nativeSrc":"8670:4:87","nodeType":"YulLiteral","src":"8670:4:87","type":"","value":"0x20"}],"functionName":{"name":"add","nativeSrc":"8661:3:87","nodeType":"YulIdentifier","src":"8661:3:87"},"nativeSrc":"8661:14:87","nodeType":"YulFunctionCall","src":"8661:14:87"},"variableNames":[{"name":"dst","nativeSrc":"8654:3:87","nodeType":"YulIdentifier","src":"8654:3:87"}]},{"nativeSrc":"8684:52:87","nodeType":"YulVariableDeclaration","src":"8684:52:87","value":{"arguments":[{"arguments":[{"name":"offset","nativeSrc":"8706:6:87","nodeType":"YulIdentifier","src":"8706:6:87"},{"arguments":[{"kind":"number","nativeSrc":"8718:1:87","nodeType":"YulLiteral","src":"8718:1:87","type":"","value":"5"},{"name":"length","nativeSrc":"8721:6:87","nodeType":"YulIdentifier","src":"8721:6:87"}],"functionName":{"name":"shl","nativeSrc":"8714:3:87","nodeType":"YulIdentifier","src":"8714:3:87"},"nativeSrc":"8714:14:87","nodeType":"YulFunctionCall","src":"8714:14:87"}],"functionName":{"name":"add","nativeSrc":"8702:3:87","nodeType":"YulIdentifier","src":"8702:3:87"},"nativeSrc":"8702:27:87","nodeType":"YulFunctionCall","src":"8702:27:87"},{"kind":"number","nativeSrc":"8731:4:87","nodeType":"YulLiteral","src":"8731:4:87","type":"","value":"0x20"}],"functionName":{"name":"add","nativeSrc":"8698:3:87","nodeType":"YulIdentifier","src":"8698:3:87"},"nativeSrc":"8698:38:87","nodeType":"YulFunctionCall","src":"8698:38:87"},"variables":[{"name":"srcEnd","nativeSrc":"8688:6:87","nodeType":"YulTypedName","src":"8688:6:87","type":""}]},{"body":{"nativeSrc":"8764:16:87","nodeType":"YulBlock","src":"8764:16:87","statements":[{"expression":{"arguments":[{"kind":"number","nativeSrc":"8773:1:87","nodeType":"YulLiteral","src":"8773:1:87","type":"","value":"0"},{"kind":"number","nativeSrc":"8776:1:87","nodeType":"YulLiteral","src":"8776:1:87","type":"","value":"0"}],"functionName":{"name":"revert","nativeSrc":"8766:6:87","nodeType":"YulIdentifier","src":"8766:6:87"},"nativeSrc":"8766:12:87","nodeType":"YulFunctionCall","src":"8766:12:87"},"nativeSrc":"8766:12:87","nodeType":"YulExpressionStatement","src":"8766:12:87"}]},"condition":{"arguments":[{"name":"srcEnd","nativeSrc":"8751:6:87","nodeType":"YulIdentifier","src":"8751:6:87"},{"name":"end","nativeSrc":"8759:3:87","nodeType":"YulIdentifier","src":"8759:3:87"}],"functionName":{"name":"gt","nativeSrc":"8748:2:87","nodeType":"YulIdentifier","src":"8748:2:87"},"nativeSrc":"8748:15:87","nodeType":"YulFunctionCall","src":"8748:15:87"},"nativeSrc":"8745:35:87","nodeType":"YulIf","src":"8745:35:87"},{"nativeSrc":"8789:28:87","nodeType":"YulVariableDeclaration","src":"8789:28:87","value":{"arguments":[{"name":"offset","nativeSrc":"8804:6:87","nodeType":"YulIdentifier","src":"8804:6:87"},{"kind":"number","nativeSrc":"8812:4:87","nodeType":"YulLiteral","src":"8812:4:87","type":"","value":"0x20"}],"functionName":{"name":"add","nativeSrc":"8800:3:87","nodeType":"YulIdentifier","src":"8800:3:87"},"nativeSrc":"8800:17:87","nodeType":"YulFunctionCall","src":"8800:17:87"},"variables":[{"name":"src","nativeSrc":"8793:3:87","nodeType":"YulTypedName","src":"8793:3:87","type":""}]},{"body":{"nativeSrc":"8884:92:87","nodeType":"YulBlock","src":"8884:92:87","statements":[{"expression":{"arguments":[{"name":"dst","nativeSrc":"8905:3:87","nodeType":"YulIdentifier","src":"8905:3:87"},{"arguments":[{"name":"src","nativeSrc":"8927:3:87","nodeType":"YulIdentifier","src":"8927:3:87"}],"functionName":{"name":"abi_decode_uint8","nativeSrc":"8910:16:87","nodeType":"YulIdentifier","src":"8910:16:87"},"nativeSrc":"8910:21:87","nodeType":"YulFunctionCall","src":"8910:21:87"}],"functionName":{"name":"mstore","nativeSrc":"8898:6:87","nodeType":"YulIdentifier","src":"8898:6:87"},"nativeSrc":"8898:34:87","nodeType":"YulFunctionCall","src":"8898:34:87"},"nativeSrc":"8898:34:87","nodeType":"YulExpressionStatement","src":"8898:34:87"},{"nativeSrc":"8945:21:87","nodeType":"YulAssignment","src":"8945:21:87","value":{"arguments":[{"name":"dst","nativeSrc":"8956:3:87","nodeType":"YulIdentifier","src":"8956:3:87"},{"kind":"number","nativeSrc":"8961:4:87","nodeType":"YulLiteral","src":"8961:4:87","type":"","value":"0x20"}],"functionName":{"name":"add","nativeSrc":"8952:3:87","nodeType":"YulIdentifier","src":"8952:3:87"},"nativeSrc":"8952:14:87","nodeType":"YulFunctionCall","src":"8952:14:87"},"variableNames":[{"name":"dst","nativeSrc":"8945:3:87","nodeType":"YulIdentifier","src":"8945:3:87"}]}]},"condition":{"arguments":[{"name":"src","nativeSrc":"8837:3:87","nodeType":"YulIdentifier","src":"8837:3:87"},{"name":"srcEnd","nativeSrc":"8842:6:87","nodeType":"YulIdentifier","src":"8842:6:87"}],"functionName":{"name":"lt","nativeSrc":"8834:2:87","nodeType":"YulIdentifier","src":"8834:2:87"},"nativeSrc":"8834:15:87","nodeType":"YulFunctionCall","src":"8834:15:87"},"nativeSrc":"8826:150:87","nodeType":"YulForLoop","post":{"nativeSrc":"8850:25:87","nodeType":"YulBlock","src":"8850:25:87","statements":[{"nativeSrc":"8852:21:87","nodeType":"YulAssignment","src":"8852:21:87","value":{"arguments":[{"name":"src","nativeSrc":"8863:3:87","nodeType":"YulIdentifier","src":"8863:3:87"},{"kind":"number","nativeSrc":"8868:4:87","nodeType":"YulLiteral","src":"8868:4:87","type":"","value":"0x20"}],"functionName":{"name":"add","nativeSrc":"8859:3:87","nodeType":"YulIdentifier","src":"8859:3:87"},"nativeSrc":"8859:14:87","nodeType":"YulFunctionCall","src":"8859:14:87"},"variableNames":[{"name":"src","nativeSrc":"8852:3:87","nodeType":"YulIdentifier","src":"8852:3:87"}]}]},"pre":{"nativeSrc":"8830:3:87","nodeType":"YulBlock","src":"8830:3:87","statements":[]},"src":"8826:150:87"},{"nativeSrc":"8985:16:87","nodeType":"YulAssignment","src":"8985:16:87","value":{"name":"array_1","nativeSrc":"8994:7:87","nodeType":"YulIdentifier","src":"8994:7:87"},"variableNames":[{"name":"array","nativeSrc":"8985:5:87","nodeType":"YulIdentifier","src":"8985:5:87"}]}]},"name":"abi_decode_array_uint8_dyn","nativeSrc":"8338:669:87","nodeType":"YulFunctionDefinition","parameters":[{"name":"offset","nativeSrc":"8374:6:87","nodeType":"YulTypedName","src":"8374:6:87","type":""},{"name":"end","nativeSrc":"8382:3:87","nodeType":"YulTypedName","src":"8382:3:87","type":""}],"returnVariables":[{"name":"array","nativeSrc":"8390:5:87","nodeType":"YulTypedName","src":"8390:5:87","type":""}],"src":"8338:669:87"},{"body":{"nativeSrc":"9105:251:87","nodeType":"YulBlock","src":"9105:251:87","statements":[{"body":{"nativeSrc":"9151:16:87","nodeType":"YulBlock","src":"9151:16:87","statements":[{"expression":{"arguments":[{"kind":"number","nativeSrc":"9160:1:87","nodeType":"YulLiteral","src":"9160:1:87","type":"","value":"0"},{"kind":"number","nativeSrc":"9163:1:87","nodeType":"YulLiteral","src":"9163:1:87","type":"","value":"0"}],"functionName":{"name":"revert","nativeSrc":"9153:6:87","nodeType":"YulIdentifier","src":"9153:6:87"},"nativeSrc":"9153:12:87","nodeType":"YulFunctionCall","src":"9153:12:87"},"nativeSrc":"9153:12:87","nodeType":"YulExpressionStatement","src":"9153:12:87"}]},"condition":{"arguments":[{"arguments":[{"name":"dataEnd","nativeSrc":"9126:7:87","nodeType":"YulIdentifier","src":"9126:7:87"},{"name":"headStart","nativeSrc":"9135:9:87","nodeType":"YulIdentifier","src":"9135:9:87"}],"functionName":{"name":"sub","nativeSrc":"9122:3:87","nodeType":"YulIdentifier","src":"9122:3:87"},"nativeSrc":"9122:23:87","nodeType":"YulFunctionCall","src":"9122:23:87"},{"kind":"number","nativeSrc":"9147:2:87","nodeType":"YulLiteral","src":"9147:2:87","type":"","value":"32"}],"functionName":{"name":"slt","nativeSrc":"9118:3:87","nodeType":"YulIdentifier","src":"9118:3:87"},"nativeSrc":"9118:32:87","nodeType":"YulFunctionCall","src":"9118:32:87"},"nativeSrc":"9115:52:87","nodeType":"YulIf","src":"9115:52:87"},{"nativeSrc":"9176:37:87","nodeType":"YulVariableDeclaration","src":"9176:37:87","value":{"arguments":[{"name":"headStart","nativeSrc":"9203:9:87","nodeType":"YulIdentifier","src":"9203:9:87"}],"functionName":{"name":"calldataload","nativeSrc":"9190:12:87","nodeType":"YulIdentifier","src":"9190:12:87"},"nativeSrc":"9190:23:87","nodeType":"YulFunctionCall","src":"9190:23:87"},"variables":[{"name":"offset","nativeSrc":"9180:6:87","nodeType":"YulTypedName","src":"9180:6:87","type":""}]},{"body":{"nativeSrc":"9256:16:87","nodeType":"YulBlock","src":"9256:16:87","statements":[{"expression":{"arguments":[{"kind":"number","nativeSrc":"9265:1:87","nodeType":"YulLiteral","src":"9265:1:87","type":"","value":"0"},{"kind":"number","nativeSrc":"9268:1:87","nodeType":"YulLiteral","src":"9268:1:87","type":"","value":"0"}],"functionName":{"name":"revert","nativeSrc":"9258:6:87","nodeType":"YulIdentifier","src":"9258:6:87"},"nativeSrc":"9258:12:87","nodeType":"YulFunctionCall","src":"9258:12:87"},"nativeSrc":"9258:12:87","nodeType":"YulExpressionStatement","src":"9258:12:87"}]},"condition":{"arguments":[{"name":"offset","nativeSrc":"9228:6:87","nodeType":"YulIdentifier","src":"9228:6:87"},{"kind":"number","nativeSrc":"9236:18:87","nodeType":"YulLiteral","src":"9236:18:87","type":"","value":"0xffffffffffffffff"}],"functionName":{"name":"gt","nativeSrc":"9225:2:87","nodeType":"YulIdentifier","src":"9225:2:87"},"nativeSrc":"9225:30:87","nodeType":"YulFunctionCall","src":"9225:30:87"},"nativeSrc":"9222:50:87","nodeType":"YulIf","src":"9222:50:87"},{"nativeSrc":"9281:69:87","nodeType":"YulAssignment","src":"9281:69:87","value":{"arguments":[{"arguments":[{"name":"headStart","nativeSrc":"9322:9:87","nodeType":"YulIdentifier","src":"9322:9:87"},{"name":"offset","nativeSrc":"9333:6:87","nodeType":"YulIdentifier","src":"9333:6:87"}],"functionName":{"name":"add","nativeSrc":"9318:3:87","nodeType":"YulIdentifier","src":"9318:3:87"},"nativeSrc":"9318:22:87","nodeType":"YulFunctionCall","src":"9318:22:87"},{"name":"dataEnd","nativeSrc":"9342:7:87","nodeType":"YulIdentifier","src":"9342:7:87"}],"functionName":{"name":"abi_decode_array_uint8_dyn","nativeSrc":"9291:26:87","nodeType":"YulIdentifier","src":"9291:26:87"},"nativeSrc":"9291:59:87","nodeType":"YulFunctionCall","src":"9291:59:87"},"variableNames":[{"name":"value0","nativeSrc":"9281:6:87","nodeType":"YulIdentifier","src":"9281:6:87"}]}]},"name":"abi_decode_tuple_t_array$_t_uint8_$dyn_memory_ptr","nativeSrc":"9012:344:87","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nativeSrc":"9071:9:87","nodeType":"YulTypedName","src":"9071:9:87","type":""},{"name":"dataEnd","nativeSrc":"9082:7:87","nodeType":"YulTypedName","src":"9082:7:87","type":""}],"returnVariables":[{"name":"value0","nativeSrc":"9094:6:87","nodeType":"YulTypedName","src":"9094:6:87","type":""}],"src":"9012:344:87"},{"body":{"nativeSrc":"9443:229:87","nodeType":"YulBlock","src":"9443:229:87","statements":[{"body":{"nativeSrc":"9489:16:87","nodeType":"YulBlock","src":"9489:16:87","statements":[{"expression":{"arguments":[{"kind":"number","nativeSrc":"9498:1:87","nodeType":"YulLiteral","src":"9498:1:87","type":"","value":"0"},{"kind":"number","nativeSrc":"9501:1:87","nodeType":"YulLiteral","src":"9501:1:87","type":"","value":"0"}],"functionName":{"name":"revert","nativeSrc":"9491:6:87","nodeType":"YulIdentifier","src":"9491:6:87"},"nativeSrc":"9491:12:87","nodeType":"YulFunctionCall","src":"9491:12:87"},"nativeSrc":"9491:12:87","nodeType":"YulExpressionStatement","src":"9491:12:87"}]},"condition":{"arguments":[{"arguments":[{"name":"dataEnd","nativeSrc":"9464:7:87","nodeType":"YulIdentifier","src":"9464:7:87"},{"name":"headStart","nativeSrc":"9473:9:87","nodeType":"YulIdentifier","src":"9473:9:87"}],"functionName":{"name":"sub","nativeSrc":"9460:3:87","nodeType":"YulIdentifier","src":"9460:3:87"},"nativeSrc":"9460:23:87","nodeType":"YulFunctionCall","src":"9460:23:87"},{"kind":"number","nativeSrc":"9485:2:87","nodeType":"YulLiteral","src":"9485:2:87","type":"","value":"64"}],"functionName":{"name":"slt","nativeSrc":"9456:3:87","nodeType":"YulIdentifier","src":"9456:3:87"},"nativeSrc":"9456:32:87","nodeType":"YulFunctionCall","src":"9456:32:87"},"nativeSrc":"9453:52:87","nodeType":"YulIf","src":"9453:52:87"},{"nativeSrc":"9514:37:87","nodeType":"YulAssignment","src":"9514:37:87","value":{"arguments":[{"name":"headStart","nativeSrc":"9541:9:87","nodeType":"YulIdentifier","src":"9541:9:87"}],"functionName":{"name":"abi_decode_uint8","nativeSrc":"9524:16:87","nodeType":"YulIdentifier","src":"9524:16:87"},"nativeSrc":"9524:27:87","nodeType":"YulFunctionCall","src":"9524:27:87"},"variableNames":[{"name":"value0","nativeSrc":"9514:6:87","nodeType":"YulIdentifier","src":"9514:6:87"}]},{"nativeSrc":"9560:45:87","nodeType":"YulVariableDeclaration","src":"9560:45:87","value":{"arguments":[{"arguments":[{"name":"headStart","nativeSrc":"9590:9:87","nodeType":"YulIdentifier","src":"9590:9:87"},{"kind":"number","nativeSrc":"9601:2:87","nodeType":"YulLiteral","src":"9601:2:87","type":"","value":"32"}],"functionName":{"name":"add","nativeSrc":"9586:3:87","nodeType":"YulIdentifier","src":"9586:3:87"},"nativeSrc":"9586:18:87","nodeType":"YulFunctionCall","src":"9586:18:87"}],"functionName":{"name":"calldataload","nativeSrc":"9573:12:87","nodeType":"YulIdentifier","src":"9573:12:87"},"nativeSrc":"9573:32:87","nodeType":"YulFunctionCall","src":"9573:32:87"},"variables":[{"name":"value","nativeSrc":"9564:5:87","nodeType":"YulTypedName","src":"9564:5:87","type":""}]},{"expression":{"arguments":[{"name":"value","nativeSrc":"9636:5:87","nodeType":"YulIdentifier","src":"9636:5:87"}],"functionName":{"name":"validator_revert_bool","nativeSrc":"9614:21:87","nodeType":"YulIdentifier","src":"9614:21:87"},"nativeSrc":"9614:28:87","nodeType":"YulFunctionCall","src":"9614:28:87"},"nativeSrc":"9614:28:87","nodeType":"YulExpressionStatement","src":"9614:28:87"},{"nativeSrc":"9651:15:87","nodeType":"YulAssignment","src":"9651:15:87","value":{"name":"value","nativeSrc":"9661:5:87","nodeType":"YulIdentifier","src":"9661:5:87"},"variableNames":[{"name":"value1","nativeSrc":"9651:6:87","nodeType":"YulIdentifier","src":"9651:6:87"}]}]},"name":"abi_decode_tuple_t_uint8t_bool","nativeSrc":"9361:311:87","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nativeSrc":"9401:9:87","nodeType":"YulTypedName","src":"9401:9:87","type":""},{"name":"dataEnd","nativeSrc":"9412:7:87","nodeType":"YulTypedName","src":"9412:7:87","type":""}],"returnVariables":[{"name":"value0","nativeSrc":"9424:6:87","nodeType":"YulTypedName","src":"9424:6:87","type":""},{"name":"value1","nativeSrc":"9432:6:87","nodeType":"YulTypedName","src":"9432:6:87","type":""}],"src":"9361:311:87"},{"body":{"nativeSrc":"9734:85:87","nodeType":"YulBlock","src":"9734:85:87","statements":[{"nativeSrc":"9744:29:87","nodeType":"YulAssignment","src":"9744:29:87","value":{"arguments":[{"name":"offset","nativeSrc":"9766:6:87","nodeType":"YulIdentifier","src":"9766:6:87"}],"functionName":{"name":"calldataload","nativeSrc":"9753:12:87","nodeType":"YulIdentifier","src":"9753:12:87"},"nativeSrc":"9753:20:87","nodeType":"YulFunctionCall","src":"9753:20:87"},"variableNames":[{"name":"value","nativeSrc":"9744:5:87","nodeType":"YulIdentifier","src":"9744:5:87"}]},{"expression":{"arguments":[{"name":"value","nativeSrc":"9807:5:87","nodeType":"YulIdentifier","src":"9807:5:87"}],"functionName":{"name":"validator_revert_address","nativeSrc":"9782:24:87","nodeType":"YulIdentifier","src":"9782:24:87"},"nativeSrc":"9782:31:87","nodeType":"YulFunctionCall","src":"9782:31:87"},"nativeSrc":"9782:31:87","nodeType":"YulExpressionStatement","src":"9782:31:87"}]},"name":"abi_decode_contract_IERC20","nativeSrc":"9677:142:87","nodeType":"YulFunctionDefinition","parameters":[{"name":"offset","nativeSrc":"9713:6:87","nodeType":"YulTypedName","src":"9713:6:87","type":""}],"returnVariables":[{"name":"value","nativeSrc":"9724:5:87","nodeType":"YulTypedName","src":"9724:5:87","type":""}],"src":"9677:142:87"},{"body":{"nativeSrc":"9905:678:87","nodeType":"YulBlock","src":"9905:678:87","statements":[{"body":{"nativeSrc":"9954:16:87","nodeType":"YulBlock","src":"9954:16:87","statements":[{"expression":{"arguments":[{"kind":"number","nativeSrc":"9963:1:87","nodeType":"YulLiteral","src":"9963:1:87","type":"","value":"0"},{"kind":"number","nativeSrc":"9966:1:87","nodeType":"YulLiteral","src":"9966:1:87","type":"","value":"0"}],"functionName":{"name":"revert","nativeSrc":"9956:6:87","nodeType":"YulIdentifier","src":"9956:6:87"},"nativeSrc":"9956:12:87","nodeType":"YulFunctionCall","src":"9956:12:87"},"nativeSrc":"9956:12:87","nodeType":"YulExpressionStatement","src":"9956:12:87"}]},"condition":{"arguments":[{"arguments":[{"arguments":[{"name":"offset","nativeSrc":"9933:6:87","nodeType":"YulIdentifier","src":"9933:6:87"},{"kind":"number","nativeSrc":"9941:4:87","nodeType":"YulLiteral","src":"9941:4:87","type":"","value":"0x1f"}],"functionName":{"name":"add","nativeSrc":"9929:3:87","nodeType":"YulIdentifier","src":"9929:3:87"},"nativeSrc":"9929:17:87","nodeType":"YulFunctionCall","src":"9929:17:87"},{"name":"end","nativeSrc":"9948:3:87","nodeType":"YulIdentifier","src":"9948:3:87"}],"functionName":{"name":"slt","nativeSrc":"9925:3:87","nodeType":"YulIdentifier","src":"9925:3:87"},"nativeSrc":"9925:27:87","nodeType":"YulFunctionCall","src":"9925:27:87"}],"functionName":{"name":"iszero","nativeSrc":"9918:6:87","nodeType":"YulIdentifier","src":"9918:6:87"},"nativeSrc":"9918:35:87","nodeType":"YulFunctionCall","src":"9918:35:87"},"nativeSrc":"9915:55:87","nodeType":"YulIf","src":"9915:55:87"},{"nativeSrc":"9979:34:87","nodeType":"YulVariableDeclaration","src":"9979:34:87","value":{"arguments":[{"name":"offset","nativeSrc":"10006:6:87","nodeType":"YulIdentifier","src":"10006:6:87"}],"functionName":{"name":"calldataload","nativeSrc":"9993:12:87","nodeType":"YulIdentifier","src":"9993:12:87"},"nativeSrc":"9993:20:87","nodeType":"YulFunctionCall","src":"9993:20:87"},"variables":[{"name":"length","nativeSrc":"9983:6:87","nodeType":"YulTypedName","src":"9983:6:87","type":""}]},{"nativeSrc":"10022:73:87","nodeType":"YulVariableDeclaration","src":"10022:73:87","value":{"arguments":[{"arguments":[{"name":"length","nativeSrc":"10087:6:87","nodeType":"YulIdentifier","src":"10087:6:87"}],"functionName":{"name":"array_allocation_size_array_uint8_dyn","nativeSrc":"10049:37:87","nodeType":"YulIdentifier","src":"10049:37:87"},"nativeSrc":"10049:45:87","nodeType":"YulFunctionCall","src":"10049:45:87"}],"functionName":{"name":"allocate_memory","nativeSrc":"10033:15:87","nodeType":"YulIdentifier","src":"10033:15:87"},"nativeSrc":"10033:62:87","nodeType":"YulFunctionCall","src":"10033:62:87"},"variables":[{"name":"dst","nativeSrc":"10026:3:87","nodeType":"YulTypedName","src":"10026:3:87","type":""}]},{"nativeSrc":"10104:18:87","nodeType":"YulVariableDeclaration","src":"10104:18:87","value":{"name":"dst","nativeSrc":"10119:3:87","nodeType":"YulIdentifier","src":"10119:3:87"},"variables":[{"name":"array_1","nativeSrc":"10108:7:87","nodeType":"YulTypedName","src":"10108:7:87","type":""}]},{"expression":{"arguments":[{"name":"dst","nativeSrc":"10138:3:87","nodeType":"YulIdentifier","src":"10138:3:87"},{"name":"length","nativeSrc":"10143:6:87","nodeType":"YulIdentifier","src":"10143:6:87"}],"functionName":{"name":"mstore","nativeSrc":"10131:6:87","nodeType":"YulIdentifier","src":"10131:6:87"},"nativeSrc":"10131:19:87","nodeType":"YulFunctionCall","src":"10131:19:87"},"nativeSrc":"10131:19:87","nodeType":"YulExpressionStatement","src":"10131:19:87"},{"nativeSrc":"10159:21:87","nodeType":"YulAssignment","src":"10159:21:87","value":{"arguments":[{"name":"dst","nativeSrc":"10170:3:87","nodeType":"YulIdentifier","src":"10170:3:87"},{"kind":"number","nativeSrc":"10175:4:87","nodeType":"YulLiteral","src":"10175:4:87","type":"","value":"0x20"}],"functionName":{"name":"add","nativeSrc":"10166:3:87","nodeType":"YulIdentifier","src":"10166:3:87"},"nativeSrc":"10166:14:87","nodeType":"YulFunctionCall","src":"10166:14:87"},"variableNames":[{"name":"dst","nativeSrc":"10159:3:87","nodeType":"YulIdentifier","src":"10159:3:87"}]},{"nativeSrc":"10189:52:87","nodeType":"YulVariableDeclaration","src":"10189:52:87","value":{"arguments":[{"arguments":[{"name":"offset","nativeSrc":"10211:6:87","nodeType":"YulIdentifier","src":"10211:6:87"},{"arguments":[{"kind":"number","nativeSrc":"10223:1:87","nodeType":"YulLiteral","src":"10223:1:87","type":"","value":"5"},{"name":"length","nativeSrc":"10226:6:87","nodeType":"YulIdentifier","src":"10226:6:87"}],"functionName":{"name":"shl","nativeSrc":"10219:3:87","nodeType":"YulIdentifier","src":"10219:3:87"},"nativeSrc":"10219:14:87","nodeType":"YulFunctionCall","src":"10219:14:87"}],"functionName":{"name":"add","nativeSrc":"10207:3:87","nodeType":"YulIdentifier","src":"10207:3:87"},"nativeSrc":"10207:27:87","nodeType":"YulFunctionCall","src":"10207:27:87"},{"kind":"number","nativeSrc":"10236:4:87","nodeType":"YulLiteral","src":"10236:4:87","type":"","value":"0x20"}],"functionName":{"name":"add","nativeSrc":"10203:3:87","nodeType":"YulIdentifier","src":"10203:3:87"},"nativeSrc":"10203:38:87","nodeType":"YulFunctionCall","src":"10203:38:87"},"variables":[{"name":"srcEnd","nativeSrc":"10193:6:87","nodeType":"YulTypedName","src":"10193:6:87","type":""}]},{"body":{"nativeSrc":"10269:16:87","nodeType":"YulBlock","src":"10269:16:87","statements":[{"expression":{"arguments":[{"kind":"number","nativeSrc":"10278:1:87","nodeType":"YulLiteral","src":"10278:1:87","type":"","value":"0"},{"kind":"number","nativeSrc":"10281:1:87","nodeType":"YulLiteral","src":"10281:1:87","type":"","value":"0"}],"functionName":{"name":"revert","nativeSrc":"10271:6:87","nodeType":"YulIdentifier","src":"10271:6:87"},"nativeSrc":"10271:12:87","nodeType":"YulFunctionCall","src":"10271:12:87"},"nativeSrc":"10271:12:87","nodeType":"YulExpressionStatement","src":"10271:12:87"}]},"condition":{"arguments":[{"name":"srcEnd","nativeSrc":"10256:6:87","nodeType":"YulIdentifier","src":"10256:6:87"},{"name":"end","nativeSrc":"10264:3:87","nodeType":"YulIdentifier","src":"10264:3:87"}],"functionName":{"name":"gt","nativeSrc":"10253:2:87","nodeType":"YulIdentifier","src":"10253:2:87"},"nativeSrc":"10253:15:87","nodeType":"YulFunctionCall","src":"10253:15:87"},"nativeSrc":"10250:35:87","nodeType":"YulIf","src":"10250:35:87"},{"nativeSrc":"10294:28:87","nodeType":"YulVariableDeclaration","src":"10294:28:87","value":{"arguments":[{"name":"offset","nativeSrc":"10309:6:87","nodeType":"YulIdentifier","src":"10309:6:87"},{"kind":"number","nativeSrc":"10317:4:87","nodeType":"YulLiteral","src":"10317:4:87","type":"","value":"0x20"}],"functionName":{"name":"add","nativeSrc":"10305:3:87","nodeType":"YulIdentifier","src":"10305:3:87"},"nativeSrc":"10305:17:87","nodeType":"YulFunctionCall","src":"10305:17:87"},"variables":[{"name":"src","nativeSrc":"10298:3:87","nodeType":"YulTypedName","src":"10298:3:87","type":""}]},{"body":{"nativeSrc":"10389:163:87","nodeType":"YulBlock","src":"10389:163:87","statements":[{"nativeSrc":"10403:30:87","nodeType":"YulVariableDeclaration","src":"10403:30:87","value":{"arguments":[{"name":"src","nativeSrc":"10429:3:87","nodeType":"YulIdentifier","src":"10429:3:87"}],"functionName":{"name":"calldataload","nativeSrc":"10416:12:87","nodeType":"YulIdentifier","src":"10416:12:87"},"nativeSrc":"10416:17:87","nodeType":"YulFunctionCall","src":"10416:17:87"},"variables":[{"name":"value","nativeSrc":"10407:5:87","nodeType":"YulTypedName","src":"10407:5:87","type":""}]},{"expression":{"arguments":[{"name":"value","nativeSrc":"10471:5:87","nodeType":"YulIdentifier","src":"10471:5:87"}],"functionName":{"name":"validator_revert_address","nativeSrc":"10446:24:87","nodeType":"YulIdentifier","src":"10446:24:87"},"nativeSrc":"10446:31:87","nodeType":"YulFunctionCall","src":"10446:31:87"},"nativeSrc":"10446:31:87","nodeType":"YulExpressionStatement","src":"10446:31:87"},{"expression":{"arguments":[{"name":"dst","nativeSrc":"10497:3:87","nodeType":"YulIdentifier","src":"10497:3:87"},{"name":"value","nativeSrc":"10502:5:87","nodeType":"YulIdentifier","src":"10502:5:87"}],"functionName":{"name":"mstore","nativeSrc":"10490:6:87","nodeType":"YulIdentifier","src":"10490:6:87"},"nativeSrc":"10490:18:87","nodeType":"YulFunctionCall","src":"10490:18:87"},"nativeSrc":"10490:18:87","nodeType":"YulExpressionStatement","src":"10490:18:87"},{"nativeSrc":"10521:21:87","nodeType":"YulAssignment","src":"10521:21:87","value":{"arguments":[{"name":"dst","nativeSrc":"10532:3:87","nodeType":"YulIdentifier","src":"10532:3:87"},{"kind":"number","nativeSrc":"10537:4:87","nodeType":"YulLiteral","src":"10537:4:87","type":"","value":"0x20"}],"functionName":{"name":"add","nativeSrc":"10528:3:87","nodeType":"YulIdentifier","src":"10528:3:87"},"nativeSrc":"10528:14:87","nodeType":"YulFunctionCall","src":"10528:14:87"},"variableNames":[{"name":"dst","nativeSrc":"10521:3:87","nodeType":"YulIdentifier","src":"10521:3:87"}]}]},"condition":{"arguments":[{"name":"src","nativeSrc":"10342:3:87","nodeType":"YulIdentifier","src":"10342:3:87"},{"name":"srcEnd","nativeSrc":"10347:6:87","nodeType":"YulIdentifier","src":"10347:6:87"}],"functionName":{"name":"lt","nativeSrc":"10339:2:87","nodeType":"YulIdentifier","src":"10339:2:87"},"nativeSrc":"10339:15:87","nodeType":"YulFunctionCall","src":"10339:15:87"},"nativeSrc":"10331:221:87","nodeType":"YulForLoop","post":{"nativeSrc":"10355:25:87","nodeType":"YulBlock","src":"10355:25:87","statements":[{"nativeSrc":"10357:21:87","nodeType":"YulAssignment","src":"10357:21:87","value":{"arguments":[{"name":"src","nativeSrc":"10368:3:87","nodeType":"YulIdentifier","src":"10368:3:87"},{"kind":"number","nativeSrc":"10373:4:87","nodeType":"YulLiteral","src":"10373:4:87","type":"","value":"0x20"}],"functionName":{"name":"add","nativeSrc":"10364:3:87","nodeType":"YulIdentifier","src":"10364:3:87"},"nativeSrc":"10364:14:87","nodeType":"YulFunctionCall","src":"10364:14:87"},"variableNames":[{"name":"src","nativeSrc":"10357:3:87","nodeType":"YulIdentifier","src":"10357:3:87"}]}]},"pre":{"nativeSrc":"10335:3:87","nodeType":"YulBlock","src":"10335:3:87","statements":[]},"src":"10331:221:87"},{"nativeSrc":"10561:16:87","nodeType":"YulAssignment","src":"10561:16:87","value":{"name":"array_1","nativeSrc":"10570:7:87","nodeType":"YulIdentifier","src":"10570:7:87"},"variableNames":[{"name":"array","nativeSrc":"10561:5:87","nodeType":"YulIdentifier","src":"10561:5:87"}]}]},"name":"abi_decode_array_contract_IInvestStrategy_dyn","nativeSrc":"9824:759:87","nodeType":"YulFunctionDefinition","parameters":[{"name":"offset","nativeSrc":"9879:6:87","nodeType":"YulTypedName","src":"9879:6:87","type":""},{"name":"end","nativeSrc":"9887:3:87","nodeType":"YulTypedName","src":"9887:3:87","type":""}],"returnVariables":[{"name":"array","nativeSrc":"9895:5:87","nodeType":"YulTypedName","src":"9895:5:87","type":""}],"src":"9824:759:87"},{"body":{"nativeSrc":"10650:761:87","nodeType":"YulBlock","src":"10650:761:87","statements":[{"body":{"nativeSrc":"10699:16:87","nodeType":"YulBlock","src":"10699:16:87","statements":[{"expression":{"arguments":[{"kind":"number","nativeSrc":"10708:1:87","nodeType":"YulLiteral","src":"10708:1:87","type":"","value":"0"},{"kind":"number","nativeSrc":"10711:1:87","nodeType":"YulLiteral","src":"10711:1:87","type":"","value":"0"}],"functionName":{"name":"revert","nativeSrc":"10701:6:87","nodeType":"YulIdentifier","src":"10701:6:87"},"nativeSrc":"10701:12:87","nodeType":"YulFunctionCall","src":"10701:12:87"},"nativeSrc":"10701:12:87","nodeType":"YulExpressionStatement","src":"10701:12:87"}]},"condition":{"arguments":[{"arguments":[{"arguments":[{"name":"offset","nativeSrc":"10678:6:87","nodeType":"YulIdentifier","src":"10678:6:87"},{"kind":"number","nativeSrc":"10686:4:87","nodeType":"YulLiteral","src":"10686:4:87","type":"","value":"0x1f"}],"functionName":{"name":"add","nativeSrc":"10674:3:87","nodeType":"YulIdentifier","src":"10674:3:87"},"nativeSrc":"10674:17:87","nodeType":"YulFunctionCall","src":"10674:17:87"},{"name":"end","nativeSrc":"10693:3:87","nodeType":"YulIdentifier","src":"10693:3:87"}],"functionName":{"name":"slt","nativeSrc":"10670:3:87","nodeType":"YulIdentifier","src":"10670:3:87"},"nativeSrc":"10670:27:87","nodeType":"YulFunctionCall","src":"10670:27:87"}],"functionName":{"name":"iszero","nativeSrc":"10663:6:87","nodeType":"YulIdentifier","src":"10663:6:87"},"nativeSrc":"10663:35:87","nodeType":"YulFunctionCall","src":"10663:35:87"},"nativeSrc":"10660:55:87","nodeType":"YulIf","src":"10660:55:87"},{"nativeSrc":"10724:34:87","nodeType":"YulVariableDeclaration","src":"10724:34:87","value":{"arguments":[{"name":"offset","nativeSrc":"10751:6:87","nodeType":"YulIdentifier","src":"10751:6:87"}],"functionName":{"name":"calldataload","nativeSrc":"10738:12:87","nodeType":"YulIdentifier","src":"10738:12:87"},"nativeSrc":"10738:20:87","nodeType":"YulFunctionCall","src":"10738:20:87"},"variables":[{"name":"length","nativeSrc":"10728:6:87","nodeType":"YulTypedName","src":"10728:6:87","type":""}]},{"nativeSrc":"10767:73:87","nodeType":"YulVariableDeclaration","src":"10767:73:87","value":{"arguments":[{"arguments":[{"name":"length","nativeSrc":"10832:6:87","nodeType":"YulIdentifier","src":"10832:6:87"}],"functionName":{"name":"array_allocation_size_array_uint8_dyn","nativeSrc":"10794:37:87","nodeType":"YulIdentifier","src":"10794:37:87"},"nativeSrc":"10794:45:87","nodeType":"YulFunctionCall","src":"10794:45:87"}],"functionName":{"name":"allocate_memory","nativeSrc":"10778:15:87","nodeType":"YulIdentifier","src":"10778:15:87"},"nativeSrc":"10778:62:87","nodeType":"YulFunctionCall","src":"10778:62:87"},"variables":[{"name":"dst","nativeSrc":"10771:3:87","nodeType":"YulTypedName","src":"10771:3:87","type":""}]},{"nativeSrc":"10849:18:87","nodeType":"YulVariableDeclaration","src":"10849:18:87","value":{"name":"dst","nativeSrc":"10864:3:87","nodeType":"YulIdentifier","src":"10864:3:87"},"variables":[{"name":"array_1","nativeSrc":"10853:7:87","nodeType":"YulTypedName","src":"10853:7:87","type":""}]},{"expression":{"arguments":[{"name":"dst","nativeSrc":"10883:3:87","nodeType":"YulIdentifier","src":"10883:3:87"},{"name":"length","nativeSrc":"10888:6:87","nodeType":"YulIdentifier","src":"10888:6:87"}],"functionName":{"name":"mstore","nativeSrc":"10876:6:87","nodeType":"YulIdentifier","src":"10876:6:87"},"nativeSrc":"10876:19:87","nodeType":"YulFunctionCall","src":"10876:19:87"},"nativeSrc":"10876:19:87","nodeType":"YulExpressionStatement","src":"10876:19:87"},{"nativeSrc":"10904:21:87","nodeType":"YulAssignment","src":"10904:21:87","value":{"arguments":[{"name":"dst","nativeSrc":"10915:3:87","nodeType":"YulIdentifier","src":"10915:3:87"},{"kind":"number","nativeSrc":"10920:4:87","nodeType":"YulLiteral","src":"10920:4:87","type":"","value":"0x20"}],"functionName":{"name":"add","nativeSrc":"10911:3:87","nodeType":"YulIdentifier","src":"10911:3:87"},"nativeSrc":"10911:14:87","nodeType":"YulFunctionCall","src":"10911:14:87"},"variableNames":[{"name":"dst","nativeSrc":"10904:3:87","nodeType":"YulIdentifier","src":"10904:3:87"}]},{"nativeSrc":"10934:52:87","nodeType":"YulVariableDeclaration","src":"10934:52:87","value":{"arguments":[{"arguments":[{"name":"offset","nativeSrc":"10956:6:87","nodeType":"YulIdentifier","src":"10956:6:87"},{"arguments":[{"kind":"number","nativeSrc":"10968:1:87","nodeType":"YulLiteral","src":"10968:1:87","type":"","value":"5"},{"name":"length","nativeSrc":"10971:6:87","nodeType":"YulIdentifier","src":"10971:6:87"}],"functionName":{"name":"shl","nativeSrc":"10964:3:87","nodeType":"YulIdentifier","src":"10964:3:87"},"nativeSrc":"10964:14:87","nodeType":"YulFunctionCall","src":"10964:14:87"}],"functionName":{"name":"add","nativeSrc":"10952:3:87","nodeType":"YulIdentifier","src":"10952:3:87"},"nativeSrc":"10952:27:87","nodeType":"YulFunctionCall","src":"10952:27:87"},{"kind":"number","nativeSrc":"10981:4:87","nodeType":"YulLiteral","src":"10981:4:87","type":"","value":"0x20"}],"functionName":{"name":"add","nativeSrc":"10948:3:87","nodeType":"YulIdentifier","src":"10948:3:87"},"nativeSrc":"10948:38:87","nodeType":"YulFunctionCall","src":"10948:38:87"},"variables":[{"name":"srcEnd","nativeSrc":"10938:6:87","nodeType":"YulTypedName","src":"10938:6:87","type":""}]},{"body":{"nativeSrc":"11014:16:87","nodeType":"YulBlock","src":"11014:16:87","statements":[{"expression":{"arguments":[{"kind":"number","nativeSrc":"11023:1:87","nodeType":"YulLiteral","src":"11023:1:87","type":"","value":"0"},{"kind":"number","nativeSrc":"11026:1:87","nodeType":"YulLiteral","src":"11026:1:87","type":"","value":"0"}],"functionName":{"name":"revert","nativeSrc":"11016:6:87","nodeType":"YulIdentifier","src":"11016:6:87"},"nativeSrc":"11016:12:87","nodeType":"YulFunctionCall","src":"11016:12:87"},"nativeSrc":"11016:12:87","nodeType":"YulExpressionStatement","src":"11016:12:87"}]},"condition":{"arguments":[{"name":"srcEnd","nativeSrc":"11001:6:87","nodeType":"YulIdentifier","src":"11001:6:87"},{"name":"end","nativeSrc":"11009:3:87","nodeType":"YulIdentifier","src":"11009:3:87"}],"functionName":{"name":"gt","nativeSrc":"10998:2:87","nodeType":"YulIdentifier","src":"10998:2:87"},"nativeSrc":"10998:15:87","nodeType":"YulFunctionCall","src":"10998:15:87"},"nativeSrc":"10995:35:87","nodeType":"YulIf","src":"10995:35:87"},{"nativeSrc":"11039:28:87","nodeType":"YulVariableDeclaration","src":"11039:28:87","value":{"arguments":[{"name":"offset","nativeSrc":"11054:6:87","nodeType":"YulIdentifier","src":"11054:6:87"},{"kind":"number","nativeSrc":"11062:4:87","nodeType":"YulLiteral","src":"11062:4:87","type":"","value":"0x20"}],"functionName":{"name":"add","nativeSrc":"11050:3:87","nodeType":"YulIdentifier","src":"11050:3:87"},"nativeSrc":"11050:17:87","nodeType":"YulFunctionCall","src":"11050:17:87"},"variables":[{"name":"src","nativeSrc":"11043:3:87","nodeType":"YulTypedName","src":"11043:3:87","type":""}]},{"body":{"nativeSrc":"11134:246:87","nodeType":"YulBlock","src":"11134:246:87","statements":[{"nativeSrc":"11148:36:87","nodeType":"YulVariableDeclaration","src":"11148:36:87","value":{"arguments":[{"name":"src","nativeSrc":"11180:3:87","nodeType":"YulIdentifier","src":"11180:3:87"}],"functionName":{"name":"calldataload","nativeSrc":"11167:12:87","nodeType":"YulIdentifier","src":"11167:12:87"},"nativeSrc":"11167:17:87","nodeType":"YulFunctionCall","src":"11167:17:87"},"variables":[{"name":"innerOffset","nativeSrc":"11152:11:87","nodeType":"YulTypedName","src":"11152:11:87","type":""}]},{"body":{"nativeSrc":"11236:16:87","nodeType":"YulBlock","src":"11236:16:87","statements":[{"expression":{"arguments":[{"kind":"number","nativeSrc":"11245:1:87","nodeType":"YulLiteral","src":"11245:1:87","type":"","value":"0"},{"kind":"number","nativeSrc":"11248:1:87","nodeType":"YulLiteral","src":"11248:1:87","type":"","value":"0"}],"functionName":{"name":"revert","nativeSrc":"11238:6:87","nodeType":"YulIdentifier","src":"11238:6:87"},"nativeSrc":"11238:12:87","nodeType":"YulFunctionCall","src":"11238:12:87"},"nativeSrc":"11238:12:87","nodeType":"YulExpressionStatement","src":"11238:12:87"}]},"condition":{"arguments":[{"name":"innerOffset","nativeSrc":"11203:11:87","nodeType":"YulIdentifier","src":"11203:11:87"},{"kind":"number","nativeSrc":"11216:18:87","nodeType":"YulLiteral","src":"11216:18:87","type":"","value":"0xffffffffffffffff"}],"functionName":{"name":"gt","nativeSrc":"11200:2:87","nodeType":"YulIdentifier","src":"11200:2:87"},"nativeSrc":"11200:35:87","nodeType":"YulFunctionCall","src":"11200:35:87"},"nativeSrc":"11197:55:87","nodeType":"YulIf","src":"11197:55:87"},{"expression":{"arguments":[{"name":"dst","nativeSrc":"11272:3:87","nodeType":"YulIdentifier","src":"11272:3:87"},{"arguments":[{"arguments":[{"arguments":[{"name":"offset","nativeSrc":"11302:6:87","nodeType":"YulIdentifier","src":"11302:6:87"},{"name":"innerOffset","nativeSrc":"11310:11:87","nodeType":"YulIdentifier","src":"11310:11:87"}],"functionName":{"name":"add","nativeSrc":"11298:3:87","nodeType":"YulIdentifier","src":"11298:3:87"},"nativeSrc":"11298:24:87","nodeType":"YulFunctionCall","src":"11298:24:87"},{"kind":"number","nativeSrc":"11324:4:87","nodeType":"YulLiteral","src":"11324:4:87","type":"","value":"0x20"}],"functionName":{"name":"add","nativeSrc":"11294:3:87","nodeType":"YulIdentifier","src":"11294:3:87"},"nativeSrc":"11294:35:87","nodeType":"YulFunctionCall","src":"11294:35:87"},{"name":"end","nativeSrc":"11331:3:87","nodeType":"YulIdentifier","src":"11331:3:87"}],"functionName":{"name":"abi_decode_bytes","nativeSrc":"11277:16:87","nodeType":"YulIdentifier","src":"11277:16:87"},"nativeSrc":"11277:58:87","nodeType":"YulFunctionCall","src":"11277:58:87"}],"functionName":{"name":"mstore","nativeSrc":"11265:6:87","nodeType":"YulIdentifier","src":"11265:6:87"},"nativeSrc":"11265:71:87","nodeType":"YulFunctionCall","src":"11265:71:87"},"nativeSrc":"11265:71:87","nodeType":"YulExpressionStatement","src":"11265:71:87"},{"nativeSrc":"11349:21:87","nodeType":"YulAssignment","src":"11349:21:87","value":{"arguments":[{"name":"dst","nativeSrc":"11360:3:87","nodeType":"YulIdentifier","src":"11360:3:87"},{"kind":"number","nativeSrc":"11365:4:87","nodeType":"YulLiteral","src":"11365:4:87","type":"","value":"0x20"}],"functionName":{"name":"add","nativeSrc":"11356:3:87","nodeType":"YulIdentifier","src":"11356:3:87"},"nativeSrc":"11356:14:87","nodeType":"YulFunctionCall","src":"11356:14:87"},"variableNames":[{"name":"dst","nativeSrc":"11349:3:87","nodeType":"YulIdentifier","src":"11349:3:87"}]}]},"condition":{"arguments":[{"name":"src","nativeSrc":"11087:3:87","nodeType":"YulIdentifier","src":"11087:3:87"},{"name":"srcEnd","nativeSrc":"11092:6:87","nodeType":"YulIdentifier","src":"11092:6:87"}],"functionName":{"name":"lt","nativeSrc":"11084:2:87","nodeType":"YulIdentifier","src":"11084:2:87"},"nativeSrc":"11084:15:87","nodeType":"YulFunctionCall","src":"11084:15:87"},"nativeSrc":"11076:304:87","nodeType":"YulForLoop","post":{"nativeSrc":"11100:25:87","nodeType":"YulBlock","src":"11100:25:87","statements":[{"nativeSrc":"11102:21:87","nodeType":"YulAssignment","src":"11102:21:87","value":{"arguments":[{"name":"src","nativeSrc":"11113:3:87","nodeType":"YulIdentifier","src":"11113:3:87"},{"kind":"number","nativeSrc":"11118:4:87","nodeType":"YulLiteral","src":"11118:4:87","type":"","value":"0x20"}],"functionName":{"name":"add","nativeSrc":"11109:3:87","nodeType":"YulIdentifier","src":"11109:3:87"},"nativeSrc":"11109:14:87","nodeType":"YulFunctionCall","src":"11109:14:87"},"variableNames":[{"name":"src","nativeSrc":"11102:3:87","nodeType":"YulIdentifier","src":"11102:3:87"}]}]},"pre":{"nativeSrc":"11080:3:87","nodeType":"YulBlock","src":"11080:3:87","statements":[]},"src":"11076:304:87"},{"nativeSrc":"11389:16:87","nodeType":"YulAssignment","src":"11389:16:87","value":{"name":"array_1","nativeSrc":"11398:7:87","nodeType":"YulIdentifier","src":"11398:7:87"},"variableNames":[{"name":"array","nativeSrc":"11389:5:87","nodeType":"YulIdentifier","src":"11389:5:87"}]}]},"name":"abi_decode_array_bytes_dyn","nativeSrc":"10588:823:87","nodeType":"YulFunctionDefinition","parameters":[{"name":"offset","nativeSrc":"10624:6:87","nodeType":"YulTypedName","src":"10624:6:87","type":""},{"name":"end","nativeSrc":"10632:3:87","nodeType":"YulTypedName","src":"10632:3:87","type":""}],"returnVariables":[{"name":"array","nativeSrc":"10640:5:87","nodeType":"YulTypedName","src":"10640:5:87","type":""}],"src":"10588:823:87"},{"body":{"nativeSrc":"11753:1309:87","nodeType":"YulBlock","src":"11753:1309:87","statements":[{"body":{"nativeSrc":"11800:16:87","nodeType":"YulBlock","src":"11800:16:87","statements":[{"expression":{"arguments":[{"kind":"number","nativeSrc":"11809:1:87","nodeType":"YulLiteral","src":"11809:1:87","type":"","value":"0"},{"kind":"number","nativeSrc":"11812:1:87","nodeType":"YulLiteral","src":"11812:1:87","type":"","value":"0"}],"functionName":{"name":"revert","nativeSrc":"11802:6:87","nodeType":"YulIdentifier","src":"11802:6:87"},"nativeSrc":"11802:12:87","nodeType":"YulFunctionCall","src":"11802:12:87"},"nativeSrc":"11802:12:87","nodeType":"YulExpressionStatement","src":"11802:12:87"}]},"condition":{"arguments":[{"arguments":[{"name":"dataEnd","nativeSrc":"11774:7:87","nodeType":"YulIdentifier","src":"11774:7:87"},{"name":"headStart","nativeSrc":"11783:9:87","nodeType":"YulIdentifier","src":"11783:9:87"}],"functionName":{"name":"sub","nativeSrc":"11770:3:87","nodeType":"YulIdentifier","src":"11770:3:87"},"nativeSrc":"11770:23:87","nodeType":"YulFunctionCall","src":"11770:23:87"},{"kind":"number","nativeSrc":"11795:3:87","nodeType":"YulLiteral","src":"11795:3:87","type":"","value":"224"}],"functionName":{"name":"slt","nativeSrc":"11766:3:87","nodeType":"YulIdentifier","src":"11766:3:87"},"nativeSrc":"11766:33:87","nodeType":"YulFunctionCall","src":"11766:33:87"},"nativeSrc":"11763:53:87","nodeType":"YulIf","src":"11763:53:87"},{"nativeSrc":"11825:37:87","nodeType":"YulVariableDeclaration","src":"11825:37:87","value":{"arguments":[{"name":"headStart","nativeSrc":"11852:9:87","nodeType":"YulIdentifier","src":"11852:9:87"}],"functionName":{"name":"calldataload","nativeSrc":"11839:12:87","nodeType":"YulIdentifier","src":"11839:12:87"},"nativeSrc":"11839:23:87","nodeType":"YulFunctionCall","src":"11839:23:87"},"variables":[{"name":"offset","nativeSrc":"11829:6:87","nodeType":"YulTypedName","src":"11829:6:87","type":""}]},{"body":{"nativeSrc":"11905:16:87","nodeType":"YulBlock","src":"11905:16:87","statements":[{"expression":{"arguments":[{"kind":"number","nativeSrc":"11914:1:87","nodeType":"YulLiteral","src":"11914:1:87","type":"","value":"0"},{"kind":"number","nativeSrc":"11917:1:87","nodeType":"YulLiteral","src":"11917:1:87","type":"","value":"0"}],"functionName":{"name":"revert","nativeSrc":"11907:6:87","nodeType":"YulIdentifier","src":"11907:6:87"},"nativeSrc":"11907:12:87","nodeType":"YulFunctionCall","src":"11907:12:87"},"nativeSrc":"11907:12:87","nodeType":"YulExpressionStatement","src":"11907:12:87"}]},"condition":{"arguments":[{"name":"offset","nativeSrc":"11877:6:87","nodeType":"YulIdentifier","src":"11877:6:87"},{"kind":"number","nativeSrc":"11885:18:87","nodeType":"YulLiteral","src":"11885:18:87","type":"","value":"0xffffffffffffffff"}],"functionName":{"name":"gt","nativeSrc":"11874:2:87","nodeType":"YulIdentifier","src":"11874:2:87"},"nativeSrc":"11874:30:87","nodeType":"YulFunctionCall","src":"11874:30:87"},"nativeSrc":"11871:50:87","nodeType":"YulIf","src":"11871:50:87"},{"nativeSrc":"11930:59:87","nodeType":"YulAssignment","src":"11930:59:87","value":{"arguments":[{"arguments":[{"name":"headStart","nativeSrc":"11961:9:87","nodeType":"YulIdentifier","src":"11961:9:87"},{"name":"offset","nativeSrc":"11972:6:87","nodeType":"YulIdentifier","src":"11972:6:87"}],"functionName":{"name":"add","nativeSrc":"11957:3:87","nodeType":"YulIdentifier","src":"11957:3:87"},"nativeSrc":"11957:22:87","nodeType":"YulFunctionCall","src":"11957:22:87"},{"name":"dataEnd","nativeSrc":"11981:7:87","nodeType":"YulIdentifier","src":"11981:7:87"}],"functionName":{"name":"abi_decode_bytes","nativeSrc":"11940:16:87","nodeType":"YulIdentifier","src":"11940:16:87"},"nativeSrc":"11940:49:87","nodeType":"YulFunctionCall","src":"11940:49:87"},"variableNames":[{"name":"value0","nativeSrc":"11930:6:87","nodeType":"YulIdentifier","src":"11930:6:87"}]},{"nativeSrc":"11998:48:87","nodeType":"YulVariableDeclaration","src":"11998:48:87","value":{"arguments":[{"arguments":[{"name":"headStart","nativeSrc":"12031:9:87","nodeType":"YulIdentifier","src":"12031:9:87"},{"kind":"number","nativeSrc":"12042:2:87","nodeType":"YulLiteral","src":"12042:2:87","type":"","value":"32"}],"functionName":{"name":"add","nativeSrc":"12027:3:87","nodeType":"YulIdentifier","src":"12027:3:87"},"nativeSrc":"12027:18:87","nodeType":"YulFunctionCall","src":"12027:18:87"}],"functionName":{"name":"calldataload","nativeSrc":"12014:12:87","nodeType":"YulIdentifier","src":"12014:12:87"},"nativeSrc":"12014:32:87","nodeType":"YulFunctionCall","src":"12014:32:87"},"variables":[{"name":"offset_1","nativeSrc":"12002:8:87","nodeType":"YulTypedName","src":"12002:8:87","type":""}]},{"body":{"nativeSrc":"12091:16:87","nodeType":"YulBlock","src":"12091:16:87","statements":[{"expression":{"arguments":[{"kind":"number","nativeSrc":"12100:1:87","nodeType":"YulLiteral","src":"12100:1:87","type":"","value":"0"},{"kind":"number","nativeSrc":"12103:1:87","nodeType":"YulLiteral","src":"12103:1:87","type":"","value":"0"}],"functionName":{"name":"revert","nativeSrc":"12093:6:87","nodeType":"YulIdentifier","src":"12093:6:87"},"nativeSrc":"12093:12:87","nodeType":"YulFunctionCall","src":"12093:12:87"},"nativeSrc":"12093:12:87","nodeType":"YulExpressionStatement","src":"12093:12:87"}]},"condition":{"arguments":[{"name":"offset_1","nativeSrc":"12061:8:87","nodeType":"YulIdentifier","src":"12061:8:87"},{"kind":"number","nativeSrc":"12071:18:87","nodeType":"YulLiteral","src":"12071:18:87","type":"","value":"0xffffffffffffffff"}],"functionName":{"name":"gt","nativeSrc":"12058:2:87","nodeType":"YulIdentifier","src":"12058:2:87"},"nativeSrc":"12058:32:87","nodeType":"YulFunctionCall","src":"12058:32:87"},"nativeSrc":"12055:52:87","nodeType":"YulIf","src":"12055:52:87"},{"nativeSrc":"12116:61:87","nodeType":"YulAssignment","src":"12116:61:87","value":{"arguments":[{"arguments":[{"name":"headStart","nativeSrc":"12147:9:87","nodeType":"YulIdentifier","src":"12147:9:87"},{"name":"offset_1","nativeSrc":"12158:8:87","nodeType":"YulIdentifier","src":"12158:8:87"}],"functionName":{"name":"add","nativeSrc":"12143:3:87","nodeType":"YulIdentifier","src":"12143:3:87"},"nativeSrc":"12143:24:87","nodeType":"YulFunctionCall","src":"12143:24:87"},{"name":"dataEnd","nativeSrc":"12169:7:87","nodeType":"YulIdentifier","src":"12169:7:87"}],"functionName":{"name":"abi_decode_bytes","nativeSrc":"12126:16:87","nodeType":"YulIdentifier","src":"12126:16:87"},"nativeSrc":"12126:51:87","nodeType":"YulFunctionCall","src":"12126:51:87"},"variableNames":[{"name":"value1","nativeSrc":"12116:6:87","nodeType":"YulIdentifier","src":"12116:6:87"}]},{"nativeSrc":"12186:56:87","nodeType":"YulAssignment","src":"12186:56:87","value":{"arguments":[{"arguments":[{"name":"headStart","nativeSrc":"12227:9:87","nodeType":"YulIdentifier","src":"12227:9:87"},{"kind":"number","nativeSrc":"12238:2:87","nodeType":"YulLiteral","src":"12238:2:87","type":"","value":"64"}],"functionName":{"name":"add","nativeSrc":"12223:3:87","nodeType":"YulIdentifier","src":"12223:3:87"},"nativeSrc":"12223:18:87","nodeType":"YulFunctionCall","src":"12223:18:87"}],"functionName":{"name":"abi_decode_contract_IERC20","nativeSrc":"12196:26:87","nodeType":"YulIdentifier","src":"12196:26:87"},"nativeSrc":"12196:46:87","nodeType":"YulFunctionCall","src":"12196:46:87"},"variableNames":[{"name":"value2","nativeSrc":"12186:6:87","nodeType":"YulIdentifier","src":"12186:6:87"}]},{"nativeSrc":"12251:48:87","nodeType":"YulVariableDeclaration","src":"12251:48:87","value":{"arguments":[{"arguments":[{"name":"headStart","nativeSrc":"12284:9:87","nodeType":"YulIdentifier","src":"12284:9:87"},{"kind":"number","nativeSrc":"12295:2:87","nodeType":"YulLiteral","src":"12295:2:87","type":"","value":"96"}],"functionName":{"name":"add","nativeSrc":"12280:3:87","nodeType":"YulIdentifier","src":"12280:3:87"},"nativeSrc":"12280:18:87","nodeType":"YulFunctionCall","src":"12280:18:87"}],"functionName":{"name":"calldataload","nativeSrc":"12267:12:87","nodeType":"YulIdentifier","src":"12267:12:87"},"nativeSrc":"12267:32:87","nodeType":"YulFunctionCall","src":"12267:32:87"},"variables":[{"name":"offset_2","nativeSrc":"12255:8:87","nodeType":"YulTypedName","src":"12255:8:87","type":""}]},{"body":{"nativeSrc":"12344:16:87","nodeType":"YulBlock","src":"12344:16:87","statements":[{"expression":{"arguments":[{"kind":"number","nativeSrc":"12353:1:87","nodeType":"YulLiteral","src":"12353:1:87","type":"","value":"0"},{"kind":"number","nativeSrc":"12356:1:87","nodeType":"YulLiteral","src":"12356:1:87","type":"","value":"0"}],"functionName":{"name":"revert","nativeSrc":"12346:6:87","nodeType":"YulIdentifier","src":"12346:6:87"},"nativeSrc":"12346:12:87","nodeType":"YulFunctionCall","src":"12346:12:87"},"nativeSrc":"12346:12:87","nodeType":"YulExpressionStatement","src":"12346:12:87"}]},"condition":{"arguments":[{"name":"offset_2","nativeSrc":"12314:8:87","nodeType":"YulIdentifier","src":"12314:8:87"},{"kind":"number","nativeSrc":"12324:18:87","nodeType":"YulLiteral","src":"12324:18:87","type":"","value":"0xffffffffffffffff"}],"functionName":{"name":"gt","nativeSrc":"12311:2:87","nodeType":"YulIdentifier","src":"12311:2:87"},"nativeSrc":"12311:32:87","nodeType":"YulFunctionCall","src":"12311:32:87"},"nativeSrc":"12308:52:87","nodeType":"YulIf","src":"12308:52:87"},{"nativeSrc":"12369:90:87","nodeType":"YulAssignment","src":"12369:90:87","value":{"arguments":[{"arguments":[{"name":"headStart","nativeSrc":"12429:9:87","nodeType":"YulIdentifier","src":"12429:9:87"},{"name":"offset_2","nativeSrc":"12440:8:87","nodeType":"YulIdentifier","src":"12440:8:87"}],"functionName":{"name":"add","nativeSrc":"12425:3:87","nodeType":"YulIdentifier","src":"12425:3:87"},"nativeSrc":"12425:24:87","nodeType":"YulFunctionCall","src":"12425:24:87"},{"name":"dataEnd","nativeSrc":"12451:7:87","nodeType":"YulIdentifier","src":"12451:7:87"}],"functionName":{"name":"abi_decode_array_contract_IInvestStrategy_dyn","nativeSrc":"12379:45:87","nodeType":"YulIdentifier","src":"12379:45:87"},"nativeSrc":"12379:80:87","nodeType":"YulFunctionCall","src":"12379:80:87"},"variableNames":[{"name":"value3","nativeSrc":"12369:6:87","nodeType":"YulIdentifier","src":"12369:6:87"}]},{"nativeSrc":"12468:49:87","nodeType":"YulVariableDeclaration","src":"12468:49:87","value":{"arguments":[{"arguments":[{"name":"headStart","nativeSrc":"12501:9:87","nodeType":"YulIdentifier","src":"12501:9:87"},{"kind":"number","nativeSrc":"12512:3:87","nodeType":"YulLiteral","src":"12512:3:87","type":"","value":"128"}],"functionName":{"name":"add","nativeSrc":"12497:3:87","nodeType":"YulIdentifier","src":"12497:3:87"},"nativeSrc":"12497:19:87","nodeType":"YulFunctionCall","src":"12497:19:87"}],"functionName":{"name":"calldataload","nativeSrc":"12484:12:87","nodeType":"YulIdentifier","src":"12484:12:87"},"nativeSrc":"12484:33:87","nodeType":"YulFunctionCall","src":"12484:33:87"},"variables":[{"name":"offset_3","nativeSrc":"12472:8:87","nodeType":"YulTypedName","src":"12472:8:87","type":""}]},{"body":{"nativeSrc":"12562:16:87","nodeType":"YulBlock","src":"12562:16:87","statements":[{"expression":{"arguments":[{"kind":"number","nativeSrc":"12571:1:87","nodeType":"YulLiteral","src":"12571:1:87","type":"","value":"0"},{"kind":"number","nativeSrc":"12574:1:87","nodeType":"YulLiteral","src":"12574:1:87","type":"","value":"0"}],"functionName":{"name":"revert","nativeSrc":"12564:6:87","nodeType":"YulIdentifier","src":"12564:6:87"},"nativeSrc":"12564:12:87","nodeType":"YulFunctionCall","src":"12564:12:87"},"nativeSrc":"12564:12:87","nodeType":"YulExpressionStatement","src":"12564:12:87"}]},"condition":{"arguments":[{"name":"offset_3","nativeSrc":"12532:8:87","nodeType":"YulIdentifier","src":"12532:8:87"},{"kind":"number","nativeSrc":"12542:18:87","nodeType":"YulLiteral","src":"12542:18:87","type":"","value":"0xffffffffffffffff"}],"functionName":{"name":"gt","nativeSrc":"12529:2:87","nodeType":"YulIdentifier","src":"12529:2:87"},"nativeSrc":"12529:32:87","nodeType":"YulFunctionCall","src":"12529:32:87"},"nativeSrc":"12526:52:87","nodeType":"YulIf","src":"12526:52:87"},{"nativeSrc":"12587:71:87","nodeType":"YulAssignment","src":"12587:71:87","value":{"arguments":[{"arguments":[{"name":"headStart","nativeSrc":"12628:9:87","nodeType":"YulIdentifier","src":"12628:9:87"},{"name":"offset_3","nativeSrc":"12639:8:87","nodeType":"YulIdentifier","src":"12639:8:87"}],"functionName":{"name":"add","nativeSrc":"12624:3:87","nodeType":"YulIdentifier","src":"12624:3:87"},"nativeSrc":"12624:24:87","nodeType":"YulFunctionCall","src":"12624:24:87"},{"name":"dataEnd","nativeSrc":"12650:7:87","nodeType":"YulIdentifier","src":"12650:7:87"}],"functionName":{"name":"abi_decode_array_bytes_dyn","nativeSrc":"12597:26:87","nodeType":"YulIdentifier","src":"12597:26:87"},"nativeSrc":"12597:61:87","nodeType":"YulFunctionCall","src":"12597:61:87"},"variableNames":[{"name":"value4","nativeSrc":"12587:6:87","nodeType":"YulIdentifier","src":"12587:6:87"}]},{"nativeSrc":"12667:49:87","nodeType":"YulVariableDeclaration","src":"12667:49:87","value":{"arguments":[{"arguments":[{"name":"headStart","nativeSrc":"12700:9:87","nodeType":"YulIdentifier","src":"12700:9:87"},{"kind":"number","nativeSrc":"12711:3:87","nodeType":"YulLiteral","src":"12711:3:87","type":"","value":"160"}],"functionName":{"name":"add","nativeSrc":"12696:3:87","nodeType":"YulIdentifier","src":"12696:3:87"},"nativeSrc":"12696:19:87","nodeType":"YulFunctionCall","src":"12696:19:87"}],"functionName":{"name":"calldataload","nativeSrc":"12683:12:87","nodeType":"YulIdentifier","src":"12683:12:87"},"nativeSrc":"12683:33:87","nodeType":"YulFunctionCall","src":"12683:33:87"},"variables":[{"name":"offset_4","nativeSrc":"12671:8:87","nodeType":"YulTypedName","src":"12671:8:87","type":""}]},{"body":{"nativeSrc":"12761:16:87","nodeType":"YulBlock","src":"12761:16:87","statements":[{"expression":{"arguments":[{"kind":"number","nativeSrc":"12770:1:87","nodeType":"YulLiteral","src":"12770:1:87","type":"","value":"0"},{"kind":"number","nativeSrc":"12773:1:87","nodeType":"YulLiteral","src":"12773:1:87","type":"","value":"0"}],"functionName":{"name":"revert","nativeSrc":"12763:6:87","nodeType":"YulIdentifier","src":"12763:6:87"},"nativeSrc":"12763:12:87","nodeType":"YulFunctionCall","src":"12763:12:87"},"nativeSrc":"12763:12:87","nodeType":"YulExpressionStatement","src":"12763:12:87"}]},"condition":{"arguments":[{"name":"offset_4","nativeSrc":"12731:8:87","nodeType":"YulIdentifier","src":"12731:8:87"},{"kind":"number","nativeSrc":"12741:18:87","nodeType":"YulLiteral","src":"12741:18:87","type":"","value":"0xffffffffffffffff"}],"functionName":{"name":"gt","nativeSrc":"12728:2:87","nodeType":"YulIdentifier","src":"12728:2:87"},"nativeSrc":"12728:32:87","nodeType":"YulFunctionCall","src":"12728:32:87"},"nativeSrc":"12725:52:87","nodeType":"YulIf","src":"12725:52:87"},{"nativeSrc":"12786:71:87","nodeType":"YulAssignment","src":"12786:71:87","value":{"arguments":[{"arguments":[{"name":"headStart","nativeSrc":"12827:9:87","nodeType":"YulIdentifier","src":"12827:9:87"},{"name":"offset_4","nativeSrc":"12838:8:87","nodeType":"YulIdentifier","src":"12838:8:87"}],"functionName":{"name":"add","nativeSrc":"12823:3:87","nodeType":"YulIdentifier","src":"12823:3:87"},"nativeSrc":"12823:24:87","nodeType":"YulFunctionCall","src":"12823:24:87"},{"name":"dataEnd","nativeSrc":"12849:7:87","nodeType":"YulIdentifier","src":"12849:7:87"}],"functionName":{"name":"abi_decode_array_uint8_dyn","nativeSrc":"12796:26:87","nodeType":"YulIdentifier","src":"12796:26:87"},"nativeSrc":"12796:61:87","nodeType":"YulFunctionCall","src":"12796:61:87"},"variableNames":[{"name":"value5","nativeSrc":"12786:6:87","nodeType":"YulIdentifier","src":"12786:6:87"}]},{"nativeSrc":"12866:49:87","nodeType":"YulVariableDeclaration","src":"12866:49:87","value":{"arguments":[{"arguments":[{"name":"headStart","nativeSrc":"12899:9:87","nodeType":"YulIdentifier","src":"12899:9:87"},{"kind":"number","nativeSrc":"12910:3:87","nodeType":"YulLiteral","src":"12910:3:87","type":"","value":"192"}],"functionName":{"name":"add","nativeSrc":"12895:3:87","nodeType":"YulIdentifier","src":"12895:3:87"},"nativeSrc":"12895:19:87","nodeType":"YulFunctionCall","src":"12895:19:87"}],"functionName":{"name":"calldataload","nativeSrc":"12882:12:87","nodeType":"YulIdentifier","src":"12882:12:87"},"nativeSrc":"12882:33:87","nodeType":"YulFunctionCall","src":"12882:33:87"},"variables":[{"name":"offset_5","nativeSrc":"12870:8:87","nodeType":"YulTypedName","src":"12870:8:87","type":""}]},{"body":{"nativeSrc":"12960:16:87","nodeType":"YulBlock","src":"12960:16:87","statements":[{"expression":{"arguments":[{"kind":"number","nativeSrc":"12969:1:87","nodeType":"YulLiteral","src":"12969:1:87","type":"","value":"0"},{"kind":"number","nativeSrc":"12972:1:87","nodeType":"YulLiteral","src":"12972:1:87","type":"","value":"0"}],"functionName":{"name":"revert","nativeSrc":"12962:6:87","nodeType":"YulIdentifier","src":"12962:6:87"},"nativeSrc":"12962:12:87","nodeType":"YulFunctionCall","src":"12962:12:87"},"nativeSrc":"12962:12:87","nodeType":"YulExpressionStatement","src":"12962:12:87"}]},"condition":{"arguments":[{"name":"offset_5","nativeSrc":"12930:8:87","nodeType":"YulIdentifier","src":"12930:8:87"},{"kind":"number","nativeSrc":"12940:18:87","nodeType":"YulLiteral","src":"12940:18:87","type":"","value":"0xffffffffffffffff"}],"functionName":{"name":"gt","nativeSrc":"12927:2:87","nodeType":"YulIdentifier","src":"12927:2:87"},"nativeSrc":"12927:32:87","nodeType":"YulFunctionCall","src":"12927:32:87"},"nativeSrc":"12924:52:87","nodeType":"YulIf","src":"12924:52:87"},{"nativeSrc":"12985:71:87","nodeType":"YulAssignment","src":"12985:71:87","value":{"arguments":[{"arguments":[{"name":"headStart","nativeSrc":"13026:9:87","nodeType":"YulIdentifier","src":"13026:9:87"},{"name":"offset_5","nativeSrc":"13037:8:87","nodeType":"YulIdentifier","src":"13037:8:87"}],"functionName":{"name":"add","nativeSrc":"13022:3:87","nodeType":"YulIdentifier","src":"13022:3:87"},"nativeSrc":"13022:24:87","nodeType":"YulFunctionCall","src":"13022:24:87"},{"name":"dataEnd","nativeSrc":"13048:7:87","nodeType":"YulIdentifier","src":"13048:7:87"}],"functionName":{"name":"abi_decode_array_uint8_dyn","nativeSrc":"12995:26:87","nodeType":"YulIdentifier","src":"12995:26:87"},"nativeSrc":"12995:61:87","nodeType":"YulFunctionCall","src":"12995:61:87"},"variableNames":[{"name":"value6","nativeSrc":"12985:6:87","nodeType":"YulIdentifier","src":"12985:6:87"}]}]},"name":"abi_decode_tuple_t_string_memory_ptrt_string_memory_ptrt_contract$_IERC20_$8679t_array$_t_contract$_IInvestStrategy_$20725_$dyn_memory_ptrt_array$_t_bytes_memory_ptr_$dyn_memory_ptrt_array$_t_uint8_$dyn_memory_ptrt_array$_t_uint8_$dyn_memory_ptr","nativeSrc":"11416:1646:87","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nativeSrc":"11671:9:87","nodeType":"YulTypedName","src":"11671:9:87","type":""},{"name":"dataEnd","nativeSrc":"11682:7:87","nodeType":"YulTypedName","src":"11682:7:87","type":""}],"returnVariables":[{"name":"value0","nativeSrc":"11694:6:87","nodeType":"YulTypedName","src":"11694:6:87","type":""},{"name":"value1","nativeSrc":"11702:6:87","nodeType":"YulTypedName","src":"11702:6:87","type":""},{"name":"value2","nativeSrc":"11710:6:87","nodeType":"YulTypedName","src":"11710:6:87","type":""},{"name":"value3","nativeSrc":"11718:6:87","nodeType":"YulTypedName","src":"11718:6:87","type":""},{"name":"value4","nativeSrc":"11726:6:87","nodeType":"YulTypedName","src":"11726:6:87","type":""},{"name":"value5","nativeSrc":"11734:6:87","nodeType":"YulTypedName","src":"11734:6:87","type":""},{"name":"value6","nativeSrc":"11742:6:87","nodeType":"YulTypedName","src":"11742:6:87","type":""}],"src":"11416:1646:87"},{"body":{"nativeSrc":"13171:404:87","nodeType":"YulBlock","src":"13171:404:87","statements":[{"body":{"nativeSrc":"13217:16:87","nodeType":"YulBlock","src":"13217:16:87","statements":[{"expression":{"arguments":[{"kind":"number","nativeSrc":"13226:1:87","nodeType":"YulLiteral","src":"13226:1:87","type":"","value":"0"},{"kind":"number","nativeSrc":"13229:1:87","nodeType":"YulLiteral","src":"13229:1:87","type":"","value":"0"}],"functionName":{"name":"revert","nativeSrc":"13219:6:87","nodeType":"YulIdentifier","src":"13219:6:87"},"nativeSrc":"13219:12:87","nodeType":"YulFunctionCall","src":"13219:12:87"},"nativeSrc":"13219:12:87","nodeType":"YulExpressionStatement","src":"13219:12:87"}]},"condition":{"arguments":[{"arguments":[{"name":"dataEnd","nativeSrc":"13192:7:87","nodeType":"YulIdentifier","src":"13192:7:87"},{"name":"headStart","nativeSrc":"13201:9:87","nodeType":"YulIdentifier","src":"13201:9:87"}],"functionName":{"name":"sub","nativeSrc":"13188:3:87","nodeType":"YulIdentifier","src":"13188:3:87"},"nativeSrc":"13188:23:87","nodeType":"YulFunctionCall","src":"13188:23:87"},{"kind":"number","nativeSrc":"13213:2:87","nodeType":"YulLiteral","src":"13213:2:87","type":"","value":"96"}],"functionName":{"name":"slt","nativeSrc":"13184:3:87","nodeType":"YulIdentifier","src":"13184:3:87"},"nativeSrc":"13184:32:87","nodeType":"YulFunctionCall","src":"13184:32:87"},"nativeSrc":"13181:52:87","nodeType":"YulIf","src":"13181:52:87"},{"nativeSrc":"13242:14:87","nodeType":"YulVariableDeclaration","src":"13242:14:87","value":{"kind":"number","nativeSrc":"13255:1:87","nodeType":"YulLiteral","src":"13255:1:87","type":"","value":"0"},"variables":[{"name":"value","nativeSrc":"13246:5:87","nodeType":"YulTypedName","src":"13246:5:87","type":""}]},{"nativeSrc":"13265:32:87","nodeType":"YulAssignment","src":"13265:32:87","value":{"arguments":[{"name":"headStart","nativeSrc":"13287:9:87","nodeType":"YulIdentifier","src":"13287:9:87"}],"functionName":{"name":"calldataload","nativeSrc":"13274:12:87","nodeType":"YulIdentifier","src":"13274:12:87"},"nativeSrc":"13274:23:87","nodeType":"YulFunctionCall","src":"13274:23:87"},"variableNames":[{"name":"value","nativeSrc":"13265:5:87","nodeType":"YulIdentifier","src":"13265:5:87"}]},{"nativeSrc":"13306:15:87","nodeType":"YulAssignment","src":"13306:15:87","value":{"name":"value","nativeSrc":"13316:5:87","nodeType":"YulIdentifier","src":"13316:5:87"},"variableNames":[{"name":"value0","nativeSrc":"13306:6:87","nodeType":"YulIdentifier","src":"13306:6:87"}]},{"nativeSrc":"13330:47:87","nodeType":"YulVariableDeclaration","src":"13330:47:87","value":{"arguments":[{"arguments":[{"name":"headStart","nativeSrc":"13362:9:87","nodeType":"YulIdentifier","src":"13362:9:87"},{"kind":"number","nativeSrc":"13373:2:87","nodeType":"YulLiteral","src":"13373:2:87","type":"","value":"32"}],"functionName":{"name":"add","nativeSrc":"13358:3:87","nodeType":"YulIdentifier","src":"13358:3:87"},"nativeSrc":"13358:18:87","nodeType":"YulFunctionCall","src":"13358:18:87"}],"functionName":{"name":"calldataload","nativeSrc":"13345:12:87","nodeType":"YulIdentifier","src":"13345:12:87"},"nativeSrc":"13345:32:87","nodeType":"YulFunctionCall","src":"13345:32:87"},"variables":[{"name":"value_1","nativeSrc":"13334:7:87","nodeType":"YulTypedName","src":"13334:7:87","type":""}]},{"expression":{"arguments":[{"name":"value_1","nativeSrc":"13411:7:87","nodeType":"YulIdentifier","src":"13411:7:87"}],"functionName":{"name":"validator_revert_address","nativeSrc":"13386:24:87","nodeType":"YulIdentifier","src":"13386:24:87"},"nativeSrc":"13386:33:87","nodeType":"YulFunctionCall","src":"13386:33:87"},"nativeSrc":"13386:33:87","nodeType":"YulExpressionStatement","src":"13386:33:87"},{"nativeSrc":"13428:17:87","nodeType":"YulAssignment","src":"13428:17:87","value":{"name":"value_1","nativeSrc":"13438:7:87","nodeType":"YulIdentifier","src":"13438:7:87"},"variableNames":[{"name":"value1","nativeSrc":"13428:6:87","nodeType":"YulIdentifier","src":"13428:6:87"}]},{"nativeSrc":"13454:47:87","nodeType":"YulVariableDeclaration","src":"13454:47:87","value":{"arguments":[{"arguments":[{"name":"headStart","nativeSrc":"13486:9:87","nodeType":"YulIdentifier","src":"13486:9:87"},{"kind":"number","nativeSrc":"13497:2:87","nodeType":"YulLiteral","src":"13497:2:87","type":"","value":"64"}],"functionName":{"name":"add","nativeSrc":"13482:3:87","nodeType":"YulIdentifier","src":"13482:3:87"},"nativeSrc":"13482:18:87","nodeType":"YulFunctionCall","src":"13482:18:87"}],"functionName":{"name":"calldataload","nativeSrc":"13469:12:87","nodeType":"YulIdentifier","src":"13469:12:87"},"nativeSrc":"13469:32:87","nodeType":"YulFunctionCall","src":"13469:32:87"},"variables":[{"name":"value_2","nativeSrc":"13458:7:87","nodeType":"YulTypedName","src":"13458:7:87","type":""}]},{"expression":{"arguments":[{"name":"value_2","nativeSrc":"13535:7:87","nodeType":"YulIdentifier","src":"13535:7:87"}],"functionName":{"name":"validator_revert_address","nativeSrc":"13510:24:87","nodeType":"YulIdentifier","src":"13510:24:87"},"nativeSrc":"13510:33:87","nodeType":"YulFunctionCall","src":"13510:33:87"},"nativeSrc":"13510:33:87","nodeType":"YulExpressionStatement","src":"13510:33:87"},{"nativeSrc":"13552:17:87","nodeType":"YulAssignment","src":"13552:17:87","value":{"name":"value_2","nativeSrc":"13562:7:87","nodeType":"YulIdentifier","src":"13562:7:87"},"variableNames":[{"name":"value2","nativeSrc":"13552:6:87","nodeType":"YulIdentifier","src":"13552:6:87"}]}]},"name":"abi_decode_tuple_t_uint256t_addresst_address","nativeSrc":"13067:508:87","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nativeSrc":"13121:9:87","nodeType":"YulTypedName","src":"13121:9:87","type":""},{"name":"dataEnd","nativeSrc":"13132:7:87","nodeType":"YulTypedName","src":"13132:7:87","type":""}],"returnVariables":[{"name":"value0","nativeSrc":"13144:6:87","nodeType":"YulTypedName","src":"13144:6:87","type":""},{"name":"value1","nativeSrc":"13152:6:87","nodeType":"YulTypedName","src":"13152:6:87","type":""},{"name":"value2","nativeSrc":"13160:6:87","nodeType":"YulTypedName","src":"13160:6:87","type":""}],"src":"13067:508:87"},{"body":{"nativeSrc":"13754:352:87","nodeType":"YulBlock","src":"13754:352:87","statements":[{"nativeSrc":"13764:28:87","nodeType":"YulAssignment","src":"13764:28:87","value":{"arguments":[{"name":"headStart","nativeSrc":"13776:9:87","nodeType":"YulIdentifier","src":"13776:9:87"},{"kind":"number","nativeSrc":"13787:4:87","nodeType":"YulLiteral","src":"13787:4:87","type":"","value":"1024"}],"functionName":{"name":"add","nativeSrc":"13772:3:87","nodeType":"YulIdentifier","src":"13772:3:87"},"nativeSrc":"13772:20:87","nodeType":"YulFunctionCall","src":"13772:20:87"},"variableNames":[{"name":"tail","nativeSrc":"13764:4:87","nodeType":"YulIdentifier","src":"13764:4:87"}]},{"nativeSrc":"13801:20:87","nodeType":"YulVariableDeclaration","src":"13801:20:87","value":{"name":"headStart","nativeSrc":"13812:9:87","nodeType":"YulIdentifier","src":"13812:9:87"},"variables":[{"name":"pos","nativeSrc":"13805:3:87","nodeType":"YulTypedName","src":"13805:3:87","type":""}]},{"nativeSrc":"13830:16:87","nodeType":"YulAssignment","src":"13830:16:87","value":{"name":"headStart","nativeSrc":"13837:9:87","nodeType":"YulIdentifier","src":"13837:9:87"},"variableNames":[{"name":"pos","nativeSrc":"13830:3:87","nodeType":"YulIdentifier","src":"13830:3:87"}]},{"nativeSrc":"13855:20:87","nodeType":"YulVariableDeclaration","src":"13855:20:87","value":{"name":"value0","nativeSrc":"13869:6:87","nodeType":"YulIdentifier","src":"13869:6:87"},"variables":[{"name":"srcPtr","nativeSrc":"13859:6:87","nodeType":"YulTypedName","src":"13859:6:87","type":""}]},{"nativeSrc":"13884:10:87","nodeType":"YulVariableDeclaration","src":"13884:10:87","value":{"kind":"number","nativeSrc":"13893:1:87","nodeType":"YulLiteral","src":"13893:1:87","type":"","value":"0"},"variables":[{"name":"i","nativeSrc":"13888:1:87","nodeType":"YulTypedName","src":"13888:1:87","type":""}]},{"body":{"nativeSrc":"13950:150:87","nodeType":"YulBlock","src":"13950:150:87","statements":[{"expression":{"arguments":[{"name":"pos","nativeSrc":"13971:3:87","nodeType":"YulIdentifier","src":"13971:3:87"},{"arguments":[{"arguments":[{"name":"srcPtr","nativeSrc":"13986:6:87","nodeType":"YulIdentifier","src":"13986:6:87"}],"functionName":{"name":"mload","nativeSrc":"13980:5:87","nodeType":"YulIdentifier","src":"13980:5:87"},"nativeSrc":"13980:13:87","nodeType":"YulFunctionCall","src":"13980:13:87"},{"arguments":[{"arguments":[{"kind":"number","nativeSrc":"14003:3:87","nodeType":"YulLiteral","src":"14003:3:87","type":"","value":"160"},{"kind":"number","nativeSrc":"14008:1:87","nodeType":"YulLiteral","src":"14008:1:87","type":"","value":"1"}],"functionName":{"name":"shl","nativeSrc":"13999:3:87","nodeType":"YulIdentifier","src":"13999:3:87"},"nativeSrc":"13999:11:87","nodeType":"YulFunctionCall","src":"13999:11:87"},{"kind":"number","nativeSrc":"14012:1:87","nodeType":"YulLiteral","src":"14012:1:87","type":"","value":"1"}],"functionName":{"name":"sub","nativeSrc":"13995:3:87","nodeType":"YulIdentifier","src":"13995:3:87"},"nativeSrc":"13995:19:87","nodeType":"YulFunctionCall","src":"13995:19:87"}],"functionName":{"name":"and","nativeSrc":"13976:3:87","nodeType":"YulIdentifier","src":"13976:3:87"},"nativeSrc":"13976:39:87","nodeType":"YulFunctionCall","src":"13976:39:87"}],"functionName":{"name":"mstore","nativeSrc":"13964:6:87","nodeType":"YulIdentifier","src":"13964:6:87"},"nativeSrc":"13964:52:87","nodeType":"YulFunctionCall","src":"13964:52:87"},"nativeSrc":"13964:52:87","nodeType":"YulExpressionStatement","src":"13964:52:87"},{"nativeSrc":"14029:21:87","nodeType":"YulAssignment","src":"14029:21:87","value":{"arguments":[{"name":"pos","nativeSrc":"14040:3:87","nodeType":"YulIdentifier","src":"14040:3:87"},{"kind":"number","nativeSrc":"14045:4:87","nodeType":"YulLiteral","src":"14045:4:87","type":"","value":"0x20"}],"functionName":{"name":"add","nativeSrc":"14036:3:87","nodeType":"YulIdentifier","src":"14036:3:87"},"nativeSrc":"14036:14:87","nodeType":"YulFunctionCall","src":"14036:14:87"},"variableNames":[{"name":"pos","nativeSrc":"14029:3:87","nodeType":"YulIdentifier","src":"14029:3:87"}]},{"nativeSrc":"14063:27:87","nodeType":"YulAssignment","src":"14063:27:87","value":{"arguments":[{"name":"srcPtr","nativeSrc":"14077:6:87","nodeType":"YulIdentifier","src":"14077:6:87"},{"kind":"number","nativeSrc":"14085:4:87","nodeType":"YulLiteral","src":"14085:4:87","type":"","value":"0x20"}],"functionName":{"name":"add","nativeSrc":"14073:3:87","nodeType":"YulIdentifier","src":"14073:3:87"},"nativeSrc":"14073:17:87","nodeType":"YulFunctionCall","src":"14073:17:87"},"variableNames":[{"name":"srcPtr","nativeSrc":"14063:6:87","nodeType":"YulIdentifier","src":"14063:6:87"}]}]},"condition":{"arguments":[{"name":"i","nativeSrc":"13914:1:87","nodeType":"YulIdentifier","src":"13914:1:87"},{"kind":"number","nativeSrc":"13917:4:87","nodeType":"YulLiteral","src":"13917:4:87","type":"","value":"0x20"}],"functionName":{"name":"lt","nativeSrc":"13911:2:87","nodeType":"YulIdentifier","src":"13911:2:87"},"nativeSrc":"13911:11:87","nodeType":"YulFunctionCall","src":"13911:11:87"},"nativeSrc":"13903:197:87","nodeType":"YulForLoop","post":{"nativeSrc":"13923:18:87","nodeType":"YulBlock","src":"13923:18:87","statements":[{"nativeSrc":"13925:14:87","nodeType":"YulAssignment","src":"13925:14:87","value":{"arguments":[{"name":"i","nativeSrc":"13934:1:87","nodeType":"YulIdentifier","src":"13934:1:87"},{"kind":"number","nativeSrc":"13937:1:87","nodeType":"YulLiteral","src":"13937:1:87","type":"","value":"1"}],"functionName":{"name":"add","nativeSrc":"13930:3:87","nodeType":"YulIdentifier","src":"13930:3:87"},"nativeSrc":"13930:9:87","nodeType":"YulFunctionCall","src":"13930:9:87"},"variableNames":[{"name":"i","nativeSrc":"13925:1:87","nodeType":"YulIdentifier","src":"13925:1:87"}]}]},"pre":{"nativeSrc":"13907:3:87","nodeType":"YulBlock","src":"13907:3:87","statements":[]},"src":"13903:197:87"}]},"name":"abi_encode_tuple_t_array$_t_contract$_IInvestStrategy_$20725_$32_memory_ptr__to_t_array$_t_address_$32_memory_ptr__fromStack_reversed","nativeSrc":"13580:526:87","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nativeSrc":"13723:9:87","nodeType":"YulTypedName","src":"13723:9:87","type":""},{"name":"value0","nativeSrc":"13734:6:87","nodeType":"YulTypedName","src":"13734:6:87","type":""}],"returnVariables":[{"name":"tail","nativeSrc":"13745:4:87","nodeType":"YulTypedName","src":"13745:4:87","type":""}],"src":"13580:526:87"},{"body":{"nativeSrc":"14198:301:87","nodeType":"YulBlock","src":"14198:301:87","statements":[{"body":{"nativeSrc":"14244:16:87","nodeType":"YulBlock","src":"14244:16:87","statements":[{"expression":{"arguments":[{"kind":"number","nativeSrc":"14253:1:87","nodeType":"YulLiteral","src":"14253:1:87","type":"","value":"0"},{"kind":"number","nativeSrc":"14256:1:87","nodeType":"YulLiteral","src":"14256:1:87","type":"","value":"0"}],"functionName":{"name":"revert","nativeSrc":"14246:6:87","nodeType":"YulIdentifier","src":"14246:6:87"},"nativeSrc":"14246:12:87","nodeType":"YulFunctionCall","src":"14246:12:87"},"nativeSrc":"14246:12:87","nodeType":"YulExpressionStatement","src":"14246:12:87"}]},"condition":{"arguments":[{"arguments":[{"name":"dataEnd","nativeSrc":"14219:7:87","nodeType":"YulIdentifier","src":"14219:7:87"},{"name":"headStart","nativeSrc":"14228:9:87","nodeType":"YulIdentifier","src":"14228:9:87"}],"functionName":{"name":"sub","nativeSrc":"14215:3:87","nodeType":"YulIdentifier","src":"14215:3:87"},"nativeSrc":"14215:23:87","nodeType":"YulFunctionCall","src":"14215:23:87"},{"kind":"number","nativeSrc":"14240:2:87","nodeType":"YulLiteral","src":"14240:2:87","type":"","value":"64"}],"functionName":{"name":"slt","nativeSrc":"14211:3:87","nodeType":"YulIdentifier","src":"14211:3:87"},"nativeSrc":"14211:32:87","nodeType":"YulFunctionCall","src":"14211:32:87"},"nativeSrc":"14208:52:87","nodeType":"YulIf","src":"14208:52:87"},{"nativeSrc":"14269:36:87","nodeType":"YulVariableDeclaration","src":"14269:36:87","value":{"arguments":[{"name":"headStart","nativeSrc":"14295:9:87","nodeType":"YulIdentifier","src":"14295:9:87"}],"functionName":{"name":"calldataload","nativeSrc":"14282:12:87","nodeType":"YulIdentifier","src":"14282:12:87"},"nativeSrc":"14282:23:87","nodeType":"YulFunctionCall","src":"14282:23:87"},"variables":[{"name":"value","nativeSrc":"14273:5:87","nodeType":"YulTypedName","src":"14273:5:87","type":""}]},{"expression":{"arguments":[{"name":"value","nativeSrc":"14339:5:87","nodeType":"YulIdentifier","src":"14339:5:87"}],"functionName":{"name":"validator_revert_address","nativeSrc":"14314:24:87","nodeType":"YulIdentifier","src":"14314:24:87"},"nativeSrc":"14314:31:87","nodeType":"YulFunctionCall","src":"14314:31:87"},"nativeSrc":"14314:31:87","nodeType":"YulExpressionStatement","src":"14314:31:87"},{"nativeSrc":"14354:15:87","nodeType":"YulAssignment","src":"14354:15:87","value":{"name":"value","nativeSrc":"14364:5:87","nodeType":"YulIdentifier","src":"14364:5:87"},"variableNames":[{"name":"value0","nativeSrc":"14354:6:87","nodeType":"YulIdentifier","src":"14354:6:87"}]},{"nativeSrc":"14378:47:87","nodeType":"YulVariableDeclaration","src":"14378:47:87","value":{"arguments":[{"arguments":[{"name":"headStart","nativeSrc":"14410:9:87","nodeType":"YulIdentifier","src":"14410:9:87"},{"kind":"number","nativeSrc":"14421:2:87","nodeType":"YulLiteral","src":"14421:2:87","type":"","value":"32"}],"functionName":{"name":"add","nativeSrc":"14406:3:87","nodeType":"YulIdentifier","src":"14406:3:87"},"nativeSrc":"14406:18:87","nodeType":"YulFunctionCall","src":"14406:18:87"}],"functionName":{"name":"calldataload","nativeSrc":"14393:12:87","nodeType":"YulIdentifier","src":"14393:12:87"},"nativeSrc":"14393:32:87","nodeType":"YulFunctionCall","src":"14393:32:87"},"variables":[{"name":"value_1","nativeSrc":"14382:7:87","nodeType":"YulTypedName","src":"14382:7:87","type":""}]},{"expression":{"arguments":[{"name":"value_1","nativeSrc":"14459:7:87","nodeType":"YulIdentifier","src":"14459:7:87"}],"functionName":{"name":"validator_revert_address","nativeSrc":"14434:24:87","nodeType":"YulIdentifier","src":"14434:24:87"},"nativeSrc":"14434:33:87","nodeType":"YulFunctionCall","src":"14434:33:87"},"nativeSrc":"14434:33:87","nodeType":"YulExpressionStatement","src":"14434:33:87"},{"nativeSrc":"14476:17:87","nodeType":"YulAssignment","src":"14476:17:87","value":{"name":"value_1","nativeSrc":"14486:7:87","nodeType":"YulIdentifier","src":"14486:7:87"},"variableNames":[{"name":"value1","nativeSrc":"14476:6:87","nodeType":"YulIdentifier","src":"14476:6:87"}]}]},"name":"abi_decode_tuple_t_addresst_address","nativeSrc":"14111:388:87","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nativeSrc":"14156:9:87","nodeType":"YulTypedName","src":"14156:9:87","type":""},{"name":"dataEnd","nativeSrc":"14167:7:87","nodeType":"YulTypedName","src":"14167:7:87","type":""}],"returnVariables":[{"name":"value0","nativeSrc":"14179:6:87","nodeType":"YulTypedName","src":"14179:6:87","type":""},{"name":"value1","nativeSrc":"14187:6:87","nodeType":"YulTypedName","src":"14187:6:87","type":""}],"src":"14111:388:87"},{"body":{"nativeSrc":"14604:266:87","nodeType":"YulBlock","src":"14604:266:87","statements":[{"body":{"nativeSrc":"14650:16:87","nodeType":"YulBlock","src":"14650:16:87","statements":[{"expression":{"arguments":[{"kind":"number","nativeSrc":"14659:1:87","nodeType":"YulLiteral","src":"14659:1:87","type":"","value":"0"},{"kind":"number","nativeSrc":"14662:1:87","nodeType":"YulLiteral","src":"14662:1:87","type":"","value":"0"}],"functionName":{"name":"revert","nativeSrc":"14652:6:87","nodeType":"YulIdentifier","src":"14652:6:87"},"nativeSrc":"14652:12:87","nodeType":"YulFunctionCall","src":"14652:12:87"},"nativeSrc":"14652:12:87","nodeType":"YulExpressionStatement","src":"14652:12:87"}]},"condition":{"arguments":[{"arguments":[{"name":"dataEnd","nativeSrc":"14625:7:87","nodeType":"YulIdentifier","src":"14625:7:87"},{"name":"headStart","nativeSrc":"14634:9:87","nodeType":"YulIdentifier","src":"14634:9:87"}],"functionName":{"name":"sub","nativeSrc":"14621:3:87","nodeType":"YulIdentifier","src":"14621:3:87"},"nativeSrc":"14621:23:87","nodeType":"YulFunctionCall","src":"14621:23:87"},{"kind":"number","nativeSrc":"14646:2:87","nodeType":"YulLiteral","src":"14646:2:87","type":"","value":"96"}],"functionName":{"name":"slt","nativeSrc":"14617:3:87","nodeType":"YulIdentifier","src":"14617:3:87"},"nativeSrc":"14617:32:87","nodeType":"YulFunctionCall","src":"14617:32:87"},"nativeSrc":"14614:52:87","nodeType":"YulIf","src":"14614:52:87"},{"nativeSrc":"14675:37:87","nodeType":"YulAssignment","src":"14675:37:87","value":{"arguments":[{"name":"headStart","nativeSrc":"14702:9:87","nodeType":"YulIdentifier","src":"14702:9:87"}],"functionName":{"name":"abi_decode_uint8","nativeSrc":"14685:16:87","nodeType":"YulIdentifier","src":"14685:16:87"},"nativeSrc":"14685:27:87","nodeType":"YulFunctionCall","src":"14685:27:87"},"variableNames":[{"name":"value0","nativeSrc":"14675:6:87","nodeType":"YulIdentifier","src":"14675:6:87"}]},{"nativeSrc":"14721:46:87","nodeType":"YulAssignment","src":"14721:46:87","value":{"arguments":[{"arguments":[{"name":"headStart","nativeSrc":"14752:9:87","nodeType":"YulIdentifier","src":"14752:9:87"},{"kind":"number","nativeSrc":"14763:2:87","nodeType":"YulLiteral","src":"14763:2:87","type":"","value":"32"}],"functionName":{"name":"add","nativeSrc":"14748:3:87","nodeType":"YulIdentifier","src":"14748:3:87"},"nativeSrc":"14748:18:87","nodeType":"YulFunctionCall","src":"14748:18:87"}],"functionName":{"name":"abi_decode_uint8","nativeSrc":"14731:16:87","nodeType":"YulIdentifier","src":"14731:16:87"},"nativeSrc":"14731:36:87","nodeType":"YulFunctionCall","src":"14731:36:87"},"variableNames":[{"name":"value1","nativeSrc":"14721:6:87","nodeType":"YulIdentifier","src":"14721:6:87"}]},{"nativeSrc":"14776:14:87","nodeType":"YulVariableDeclaration","src":"14776:14:87","value":{"kind":"number","nativeSrc":"14789:1:87","nodeType":"YulLiteral","src":"14789:1:87","type":"","value":"0"},"variables":[{"name":"value","nativeSrc":"14780:5:87","nodeType":"YulTypedName","src":"14780:5:87","type":""}]},{"nativeSrc":"14799:41:87","nodeType":"YulAssignment","src":"14799:41:87","value":{"arguments":[{"arguments":[{"name":"headStart","nativeSrc":"14825:9:87","nodeType":"YulIdentifier","src":"14825:9:87"},{"kind":"number","nativeSrc":"14836:2:87","nodeType":"YulLiteral","src":"14836:2:87","type":"","value":"64"}],"functionName":{"name":"add","nativeSrc":"14821:3:87","nodeType":"YulIdentifier","src":"14821:3:87"},"nativeSrc":"14821:18:87","nodeType":"YulFunctionCall","src":"14821:18:87"}],"functionName":{"name":"calldataload","nativeSrc":"14808:12:87","nodeType":"YulIdentifier","src":"14808:12:87"},"nativeSrc":"14808:32:87","nodeType":"YulFunctionCall","src":"14808:32:87"},"variableNames":[{"name":"value","nativeSrc":"14799:5:87","nodeType":"YulIdentifier","src":"14799:5:87"}]},{"nativeSrc":"14849:15:87","nodeType":"YulAssignment","src":"14849:15:87","value":{"name":"value","nativeSrc":"14859:5:87","nodeType":"YulIdentifier","src":"14859:5:87"},"variableNames":[{"name":"value2","nativeSrc":"14849:6:87","nodeType":"YulIdentifier","src":"14849:6:87"}]}]},"name":"abi_decode_tuple_t_uint8t_uint8t_uint256","nativeSrc":"14504:366:87","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nativeSrc":"14554:9:87","nodeType":"YulTypedName","src":"14554:9:87","type":""},{"name":"dataEnd","nativeSrc":"14565:7:87","nodeType":"YulTypedName","src":"14565:7:87","type":""}],"returnVariables":[{"name":"value0","nativeSrc":"14577:6:87","nodeType":"YulTypedName","src":"14577:6:87","type":""},{"name":"value1","nativeSrc":"14585:6:87","nodeType":"YulTypedName","src":"14585:6:87","type":""},{"name":"value2","nativeSrc":"14593:6:87","nodeType":"YulTypedName","src":"14593:6:87","type":""}],"src":"14504:366:87"},{"body":{"nativeSrc":"14930:325:87","nodeType":"YulBlock","src":"14930:325:87","statements":[{"nativeSrc":"14940:22:87","nodeType":"YulAssignment","src":"14940:22:87","value":{"arguments":[{"kind":"number","nativeSrc":"14954:1:87","nodeType":"YulLiteral","src":"14954:1:87","type":"","value":"1"},{"name":"data","nativeSrc":"14957:4:87","nodeType":"YulIdentifier","src":"14957:4:87"}],"functionName":{"name":"shr","nativeSrc":"14950:3:87","nodeType":"YulIdentifier","src":"14950:3:87"},"nativeSrc":"14950:12:87","nodeType":"YulFunctionCall","src":"14950:12:87"},"variableNames":[{"name":"length","nativeSrc":"14940:6:87","nodeType":"YulIdentifier","src":"14940:6:87"}]},{"nativeSrc":"14971:38:87","nodeType":"YulVariableDeclaration","src":"14971:38:87","value":{"arguments":[{"name":"data","nativeSrc":"15001:4:87","nodeType":"YulIdentifier","src":"15001:4:87"},{"kind":"number","nativeSrc":"15007:1:87","nodeType":"YulLiteral","src":"15007:1:87","type":"","value":"1"}],"functionName":{"name":"and","nativeSrc":"14997:3:87","nodeType":"YulIdentifier","src":"14997:3:87"},"nativeSrc":"14997:12:87","nodeType":"YulFunctionCall","src":"14997:12:87"},"variables":[{"name":"outOfPlaceEncoding","nativeSrc":"14975:18:87","nodeType":"YulTypedName","src":"14975:18:87","type":""}]},{"body":{"nativeSrc":"15048:31:87","nodeType":"YulBlock","src":"15048:31:87","statements":[{"nativeSrc":"15050:27:87","nodeType":"YulAssignment","src":"15050:27:87","value":{"arguments":[{"name":"length","nativeSrc":"15064:6:87","nodeType":"YulIdentifier","src":"15064:6:87"},{"kind":"number","nativeSrc":"15072:4:87","nodeType":"YulLiteral","src":"15072:4:87","type":"","value":"0x7f"}],"functionName":{"name":"and","nativeSrc":"15060:3:87","nodeType":"YulIdentifier","src":"15060:3:87"},"nativeSrc":"15060:17:87","nodeType":"YulFunctionCall","src":"15060:17:87"},"variableNames":[{"name":"length","nativeSrc":"15050:6:87","nodeType":"YulIdentifier","src":"15050:6:87"}]}]},"condition":{"arguments":[{"name":"outOfPlaceEncoding","nativeSrc":"15028:18:87","nodeType":"YulIdentifier","src":"15028:18:87"}],"functionName":{"name":"iszero","nativeSrc":"15021:6:87","nodeType":"YulIdentifier","src":"15021:6:87"},"nativeSrc":"15021:26:87","nodeType":"YulFunctionCall","src":"15021:26:87"},"nativeSrc":"15018:61:87","nodeType":"YulIf","src":"15018:61:87"},{"body":{"nativeSrc":"15138:111:87","nodeType":"YulBlock","src":"15138:111:87","statements":[{"expression":{"arguments":[{"kind":"number","nativeSrc":"15159:1:87","nodeType":"YulLiteral","src":"15159:1:87","type":"","value":"0"},{"arguments":[{"kind":"number","nativeSrc":"15166:3:87","nodeType":"YulLiteral","src":"15166:3:87","type":"","value":"224"},{"kind":"number","nativeSrc":"15171:10:87","nodeType":"YulLiteral","src":"15171:10:87","type":"","value":"0x4e487b71"}],"functionName":{"name":"shl","nativeSrc":"15162:3:87","nodeType":"YulIdentifier","src":"15162:3:87"},"nativeSrc":"15162:20:87","nodeType":"YulFunctionCall","src":"15162:20:87"}],"functionName":{"name":"mstore","nativeSrc":"15152:6:87","nodeType":"YulIdentifier","src":"15152:6:87"},"nativeSrc":"15152:31:87","nodeType":"YulFunctionCall","src":"15152:31:87"},"nativeSrc":"15152:31:87","nodeType":"YulExpressionStatement","src":"15152:31:87"},{"expression":{"arguments":[{"kind":"number","nativeSrc":"15203:1:87","nodeType":"YulLiteral","src":"15203:1:87","type":"","value":"4"},{"kind":"number","nativeSrc":"15206:4:87","nodeType":"YulLiteral","src":"15206:4:87","type":"","value":"0x22"}],"functionName":{"name":"mstore","nativeSrc":"15196:6:87","nodeType":"YulIdentifier","src":"15196:6:87"},"nativeSrc":"15196:15:87","nodeType":"YulFunctionCall","src":"15196:15:87"},"nativeSrc":"15196:15:87","nodeType":"YulExpressionStatement","src":"15196:15:87"},{"expression":{"arguments":[{"kind":"number","nativeSrc":"15231:1:87","nodeType":"YulLiteral","src":"15231:1:87","type":"","value":"0"},{"kind":"number","nativeSrc":"15234:4:87","nodeType":"YulLiteral","src":"15234:4:87","type":"","value":"0x24"}],"functionName":{"name":"revert","nativeSrc":"15224:6:87","nodeType":"YulIdentifier","src":"15224:6:87"},"nativeSrc":"15224:15:87","nodeType":"YulFunctionCall","src":"15224:15:87"},"nativeSrc":"15224:15:87","nodeType":"YulExpressionStatement","src":"15224:15:87"}]},"condition":{"arguments":[{"name":"outOfPlaceEncoding","nativeSrc":"15094:18:87","nodeType":"YulIdentifier","src":"15094:18:87"},{"arguments":[{"name":"length","nativeSrc":"15117:6:87","nodeType":"YulIdentifier","src":"15117:6:87"},{"kind":"number","nativeSrc":"15125:2:87","nodeType":"YulLiteral","src":"15125:2:87","type":"","value":"32"}],"functionName":{"name":"lt","nativeSrc":"15114:2:87","nodeType":"YulIdentifier","src":"15114:2:87"},"nativeSrc":"15114:14:87","nodeType":"YulFunctionCall","src":"15114:14:87"}],"functionName":{"name":"eq","nativeSrc":"15091:2:87","nodeType":"YulIdentifier","src":"15091:2:87"},"nativeSrc":"15091:38:87","nodeType":"YulFunctionCall","src":"15091:38:87"},"nativeSrc":"15088:161:87","nodeType":"YulIf","src":"15088:161:87"}]},"name":"extract_byte_array_length","nativeSrc":"14875:380:87","nodeType":"YulFunctionDefinition","parameters":[{"name":"data","nativeSrc":"14910:4:87","nodeType":"YulTypedName","src":"14910:4:87","type":""}],"returnVariables":[{"name":"length","nativeSrc":"14919:6:87","nodeType":"YulTypedName","src":"14919:6:87","type":""}],"src":"14875:380:87"},{"body":{"nativeSrc":"15292:95:87","nodeType":"YulBlock","src":"15292:95:87","statements":[{"expression":{"arguments":[{"kind":"number","nativeSrc":"15309:1:87","nodeType":"YulLiteral","src":"15309:1:87","type":"","value":"0"},{"arguments":[{"kind":"number","nativeSrc":"15316:3:87","nodeType":"YulLiteral","src":"15316:3:87","type":"","value":"224"},{"kind":"number","nativeSrc":"15321:10:87","nodeType":"YulLiteral","src":"15321:10:87","type":"","value":"0x4e487b71"}],"functionName":{"name":"shl","nativeSrc":"15312:3:87","nodeType":"YulIdentifier","src":"15312:3:87"},"nativeSrc":"15312:20:87","nodeType":"YulFunctionCall","src":"15312:20:87"}],"functionName":{"name":"mstore","nativeSrc":"15302:6:87","nodeType":"YulIdentifier","src":"15302:6:87"},"nativeSrc":"15302:31:87","nodeType":"YulFunctionCall","src":"15302:31:87"},"nativeSrc":"15302:31:87","nodeType":"YulExpressionStatement","src":"15302:31:87"},{"expression":{"arguments":[{"kind":"number","nativeSrc":"15349:1:87","nodeType":"YulLiteral","src":"15349:1:87","type":"","value":"4"},{"kind":"number","nativeSrc":"15352:4:87","nodeType":"YulLiteral","src":"15352:4:87","type":"","value":"0x11"}],"functionName":{"name":"mstore","nativeSrc":"15342:6:87","nodeType":"YulIdentifier","src":"15342:6:87"},"nativeSrc":"15342:15:87","nodeType":"YulFunctionCall","src":"15342:15:87"},"nativeSrc":"15342:15:87","nodeType":"YulExpressionStatement","src":"15342:15:87"},{"expression":{"arguments":[{"kind":"number","nativeSrc":"15373:1:87","nodeType":"YulLiteral","src":"15373:1:87","type":"","value":"0"},{"kind":"number","nativeSrc":"15376:4:87","nodeType":"YulLiteral","src":"15376:4:87","type":"","value":"0x24"}],"functionName":{"name":"revert","nativeSrc":"15366:6:87","nodeType":"YulIdentifier","src":"15366:6:87"},"nativeSrc":"15366:15:87","nodeType":"YulFunctionCall","src":"15366:15:87"},"nativeSrc":"15366:15:87","nodeType":"YulExpressionStatement","src":"15366:15:87"}]},"name":"panic_error_0x11","nativeSrc":"15260:127:87","nodeType":"YulFunctionDefinition","src":"15260:127:87"},{"body":{"nativeSrc":"15438:102:87","nodeType":"YulBlock","src":"15438:102:87","statements":[{"nativeSrc":"15448:38:87","nodeType":"YulAssignment","src":"15448:38:87","value":{"arguments":[{"arguments":[{"name":"x","nativeSrc":"15463:1:87","nodeType":"YulIdentifier","src":"15463:1:87"},{"kind":"number","nativeSrc":"15466:4:87","nodeType":"YulLiteral","src":"15466:4:87","type":"","value":"0xff"}],"functionName":{"name":"and","nativeSrc":"15459:3:87","nodeType":"YulIdentifier","src":"15459:3:87"},"nativeSrc":"15459:12:87","nodeType":"YulFunctionCall","src":"15459:12:87"},{"arguments":[{"name":"y","nativeSrc":"15477:1:87","nodeType":"YulIdentifier","src":"15477:1:87"},{"kind":"number","nativeSrc":"15480:4:87","nodeType":"YulLiteral","src":"15480:4:87","type":"","value":"0xff"}],"functionName":{"name":"and","nativeSrc":"15473:3:87","nodeType":"YulIdentifier","src":"15473:3:87"},"nativeSrc":"15473:12:87","nodeType":"YulFunctionCall","src":"15473:12:87"}],"functionName":{"name":"add","nativeSrc":"15455:3:87","nodeType":"YulIdentifier","src":"15455:3:87"},"nativeSrc":"15455:31:87","nodeType":"YulFunctionCall","src":"15455:31:87"},"variableNames":[{"name":"sum","nativeSrc":"15448:3:87","nodeType":"YulIdentifier","src":"15448:3:87"}]},{"body":{"nativeSrc":"15512:22:87","nodeType":"YulBlock","src":"15512:22:87","statements":[{"expression":{"arguments":[],"functionName":{"name":"panic_error_0x11","nativeSrc":"15514:16:87","nodeType":"YulIdentifier","src":"15514:16:87"},"nativeSrc":"15514:18:87","nodeType":"YulFunctionCall","src":"15514:18:87"},"nativeSrc":"15514:18:87","nodeType":"YulExpressionStatement","src":"15514:18:87"}]},"condition":{"arguments":[{"name":"sum","nativeSrc":"15501:3:87","nodeType":"YulIdentifier","src":"15501:3:87"},{"kind":"number","nativeSrc":"15506:4:87","nodeType":"YulLiteral","src":"15506:4:87","type":"","value":"0xff"}],"functionName":{"name":"gt","nativeSrc":"15498:2:87","nodeType":"YulIdentifier","src":"15498:2:87"},"nativeSrc":"15498:13:87","nodeType":"YulFunctionCall","src":"15498:13:87"},"nativeSrc":"15495:39:87","nodeType":"YulIf","src":"15495:39:87"}]},"name":"checked_add_t_uint8","nativeSrc":"15392:148:87","nodeType":"YulFunctionDefinition","parameters":[{"name":"x","nativeSrc":"15421:1:87","nodeType":"YulTypedName","src":"15421:1:87","type":""},{"name":"y","nativeSrc":"15424:1:87","nodeType":"YulTypedName","src":"15424:1:87","type":""}],"returnVariables":[{"name":"sum","nativeSrc":"15430:3:87","nodeType":"YulTypedName","src":"15430:3:87","type":""}],"src":"15392:148:87"},{"body":{"nativeSrc":"15577:95:87","nodeType":"YulBlock","src":"15577:95:87","statements":[{"expression":{"arguments":[{"kind":"number","nativeSrc":"15594:1:87","nodeType":"YulLiteral","src":"15594:1:87","type":"","value":"0"},{"arguments":[{"kind":"number","nativeSrc":"15601:3:87","nodeType":"YulLiteral","src":"15601:3:87","type":"","value":"224"},{"kind":"number","nativeSrc":"15606:10:87","nodeType":"YulLiteral","src":"15606:10:87","type":"","value":"0x4e487b71"}],"functionName":{"name":"shl","nativeSrc":"15597:3:87","nodeType":"YulIdentifier","src":"15597:3:87"},"nativeSrc":"15597:20:87","nodeType":"YulFunctionCall","src":"15597:20:87"}],"functionName":{"name":"mstore","nativeSrc":"15587:6:87","nodeType":"YulIdentifier","src":"15587:6:87"},"nativeSrc":"15587:31:87","nodeType":"YulFunctionCall","src":"15587:31:87"},"nativeSrc":"15587:31:87","nodeType":"YulExpressionStatement","src":"15587:31:87"},{"expression":{"arguments":[{"kind":"number","nativeSrc":"15634:1:87","nodeType":"YulLiteral","src":"15634:1:87","type":"","value":"4"},{"kind":"number","nativeSrc":"15637:4:87","nodeType":"YulLiteral","src":"15637:4:87","type":"","value":"0x32"}],"functionName":{"name":"mstore","nativeSrc":"15627:6:87","nodeType":"YulIdentifier","src":"15627:6:87"},"nativeSrc":"15627:15:87","nodeType":"YulFunctionCall","src":"15627:15:87"},"nativeSrc":"15627:15:87","nodeType":"YulExpressionStatement","src":"15627:15:87"},{"expression":{"arguments":[{"kind":"number","nativeSrc":"15658:1:87","nodeType":"YulLiteral","src":"15658:1:87","type":"","value":"0"},{"kind":"number","nativeSrc":"15661:4:87","nodeType":"YulLiteral","src":"15661:4:87","type":"","value":"0x24"}],"functionName":{"name":"revert","nativeSrc":"15651:6:87","nodeType":"YulIdentifier","src":"15651:6:87"},"nativeSrc":"15651:15:87","nodeType":"YulFunctionCall","src":"15651:15:87"},"nativeSrc":"15651:15:87","nodeType":"YulExpressionStatement","src":"15651:15:87"}]},"name":"panic_error_0x32","nativeSrc":"15545:127:87","nodeType":"YulFunctionDefinition","src":"15545:127:87"},{"body":{"nativeSrc":"15758:103:87","nodeType":"YulBlock","src":"15758:103:87","statements":[{"body":{"nativeSrc":"15804:16:87","nodeType":"YulBlock","src":"15804:16:87","statements":[{"expression":{"arguments":[{"kind":"number","nativeSrc":"15813:1:87","nodeType":"YulLiteral","src":"15813:1:87","type":"","value":"0"},{"kind":"number","nativeSrc":"15816:1:87","nodeType":"YulLiteral","src":"15816:1:87","type":"","value":"0"}],"functionName":{"name":"revert","nativeSrc":"15806:6:87","nodeType":"YulIdentifier","src":"15806:6:87"},"nativeSrc":"15806:12:87","nodeType":"YulFunctionCall","src":"15806:12:87"},"nativeSrc":"15806:12:87","nodeType":"YulExpressionStatement","src":"15806:12:87"}]},"condition":{"arguments":[{"arguments":[{"name":"dataEnd","nativeSrc":"15779:7:87","nodeType":"YulIdentifier","src":"15779:7:87"},{"name":"headStart","nativeSrc":"15788:9:87","nodeType":"YulIdentifier","src":"15788:9:87"}],"functionName":{"name":"sub","nativeSrc":"15775:3:87","nodeType":"YulIdentifier","src":"15775:3:87"},"nativeSrc":"15775:23:87","nodeType":"YulFunctionCall","src":"15775:23:87"},{"kind":"number","nativeSrc":"15800:2:87","nodeType":"YulLiteral","src":"15800:2:87","type":"","value":"32"}],"functionName":{"name":"slt","nativeSrc":"15771:3:87","nodeType":"YulIdentifier","src":"15771:3:87"},"nativeSrc":"15771:32:87","nodeType":"YulFunctionCall","src":"15771:32:87"},"nativeSrc":"15768:52:87","nodeType":"YulIf","src":"15768:52:87"},{"nativeSrc":"15829:26:87","nodeType":"YulAssignment","src":"15829:26:87","value":{"arguments":[{"name":"headStart","nativeSrc":"15845:9:87","nodeType":"YulIdentifier","src":"15845:9:87"}],"functionName":{"name":"mload","nativeSrc":"15839:5:87","nodeType":"YulIdentifier","src":"15839:5:87"},"nativeSrc":"15839:16:87","nodeType":"YulFunctionCall","src":"15839:16:87"},"variableNames":[{"name":"value0","nativeSrc":"15829:6:87","nodeType":"YulIdentifier","src":"15829:6:87"}]}]},"name":"abi_decode_tuple_t_bytes32_fromMemory","nativeSrc":"15677:184:87","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nativeSrc":"15724:9:87","nodeType":"YulTypedName","src":"15724:9:87","type":""},{"name":"dataEnd","nativeSrc":"15735:7:87","nodeType":"YulTypedName","src":"15735:7:87","type":""}],"returnVariables":[{"name":"value0","nativeSrc":"15747:6:87","nodeType":"YulTypedName","src":"15747:6:87","type":""}],"src":"15677:184:87"},{"body":{"nativeSrc":"15913:88:87","nodeType":"YulBlock","src":"15913:88:87","statements":[{"body":{"nativeSrc":"15944:22:87","nodeType":"YulBlock","src":"15944:22:87","statements":[{"expression":{"arguments":[],"functionName":{"name":"panic_error_0x11","nativeSrc":"15946:16:87","nodeType":"YulIdentifier","src":"15946:16:87"},"nativeSrc":"15946:18:87","nodeType":"YulFunctionCall","src":"15946:18:87"},"nativeSrc":"15946:18:87","nodeType":"YulExpressionStatement","src":"15946:18:87"}]},"condition":{"arguments":[{"name":"value","nativeSrc":"15929:5:87","nodeType":"YulIdentifier","src":"15929:5:87"},{"arguments":[{"kind":"number","nativeSrc":"15940:1:87","nodeType":"YulLiteral","src":"15940:1:87","type":"","value":"0"}],"functionName":{"name":"not","nativeSrc":"15936:3:87","nodeType":"YulIdentifier","src":"15936:3:87"},"nativeSrc":"15936:6:87","nodeType":"YulFunctionCall","src":"15936:6:87"}],"functionName":{"name":"eq","nativeSrc":"15926:2:87","nodeType":"YulIdentifier","src":"15926:2:87"},"nativeSrc":"15926:17:87","nodeType":"YulFunctionCall","src":"15926:17:87"},"nativeSrc":"15923:43:87","nodeType":"YulIf","src":"15923:43:87"},{"nativeSrc":"15975:20:87","nodeType":"YulAssignment","src":"15975:20:87","value":{"arguments":[{"name":"value","nativeSrc":"15986:5:87","nodeType":"YulIdentifier","src":"15986:5:87"},{"kind":"number","nativeSrc":"15993:1:87","nodeType":"YulLiteral","src":"15993:1:87","type":"","value":"1"}],"functionName":{"name":"add","nativeSrc":"15982:3:87","nodeType":"YulIdentifier","src":"15982:3:87"},"nativeSrc":"15982:13:87","nodeType":"YulFunctionCall","src":"15982:13:87"},"variableNames":[{"name":"ret","nativeSrc":"15975:3:87","nodeType":"YulIdentifier","src":"15975:3:87"}]}]},"name":"increment_t_uint256","nativeSrc":"15866:135:87","nodeType":"YulFunctionDefinition","parameters":[{"name":"value","nativeSrc":"15895:5:87","nodeType":"YulTypedName","src":"15895:5:87","type":""}],"returnVariables":[{"name":"ret","nativeSrc":"15905:3:87","nodeType":"YulTypedName","src":"15905:3:87","type":""}],"src":"15866:135:87"},{"body":{"nativeSrc":"16163:188:87","nodeType":"YulBlock","src":"16163:188:87","statements":[{"nativeSrc":"16173:26:87","nodeType":"YulAssignment","src":"16173:26:87","value":{"arguments":[{"name":"headStart","nativeSrc":"16185:9:87","nodeType":"YulIdentifier","src":"16185:9:87"},{"kind":"number","nativeSrc":"16196:2:87","nodeType":"YulLiteral","src":"16196:2:87","type":"","value":"96"}],"functionName":{"name":"add","nativeSrc":"16181:3:87","nodeType":"YulIdentifier","src":"16181:3:87"},"nativeSrc":"16181:18:87","nodeType":"YulFunctionCall","src":"16181:18:87"},"variableNames":[{"name":"tail","nativeSrc":"16173:4:87","nodeType":"YulIdentifier","src":"16173:4:87"}]},{"expression":{"arguments":[{"name":"headStart","nativeSrc":"16215:9:87","nodeType":"YulIdentifier","src":"16215:9:87"},{"arguments":[{"name":"value0","nativeSrc":"16230:6:87","nodeType":"YulIdentifier","src":"16230:6:87"},{"arguments":[{"arguments":[{"kind":"number","nativeSrc":"16246:3:87","nodeType":"YulLiteral","src":"16246:3:87","type":"","value":"160"},{"kind":"number","nativeSrc":"16251:1:87","nodeType":"YulLiteral","src":"16251:1:87","type":"","value":"1"}],"functionName":{"name":"shl","nativeSrc":"16242:3:87","nodeType":"YulIdentifier","src":"16242:3:87"},"nativeSrc":"16242:11:87","nodeType":"YulFunctionCall","src":"16242:11:87"},{"kind":"number","nativeSrc":"16255:1:87","nodeType":"YulLiteral","src":"16255:1:87","type":"","value":"1"}],"functionName":{"name":"sub","nativeSrc":"16238:3:87","nodeType":"YulIdentifier","src":"16238:3:87"},"nativeSrc":"16238:19:87","nodeType":"YulFunctionCall","src":"16238:19:87"}],"functionName":{"name":"and","nativeSrc":"16226:3:87","nodeType":"YulIdentifier","src":"16226:3:87"},"nativeSrc":"16226:32:87","nodeType":"YulFunctionCall","src":"16226:32:87"}],"functionName":{"name":"mstore","nativeSrc":"16208:6:87","nodeType":"YulIdentifier","src":"16208:6:87"},"nativeSrc":"16208:51:87","nodeType":"YulFunctionCall","src":"16208:51:87"},"nativeSrc":"16208:51:87","nodeType":"YulExpressionStatement","src":"16208:51:87"},{"expression":{"arguments":[{"arguments":[{"name":"headStart","nativeSrc":"16279:9:87","nodeType":"YulIdentifier","src":"16279:9:87"},{"kind":"number","nativeSrc":"16290:2:87","nodeType":"YulLiteral","src":"16290:2:87","type":"","value":"32"}],"functionName":{"name":"add","nativeSrc":"16275:3:87","nodeType":"YulIdentifier","src":"16275:3:87"},"nativeSrc":"16275:18:87","nodeType":"YulFunctionCall","src":"16275:18:87"},{"name":"value1","nativeSrc":"16295:6:87","nodeType":"YulIdentifier","src":"16295:6:87"}],"functionName":{"name":"mstore","nativeSrc":"16268:6:87","nodeType":"YulIdentifier","src":"16268:6:87"},"nativeSrc":"16268:34:87","nodeType":"YulFunctionCall","src":"16268:34:87"},"nativeSrc":"16268:34:87","nodeType":"YulExpressionStatement","src":"16268:34:87"},{"expression":{"arguments":[{"arguments":[{"name":"headStart","nativeSrc":"16322:9:87","nodeType":"YulIdentifier","src":"16322:9:87"},{"kind":"number","nativeSrc":"16333:2:87","nodeType":"YulLiteral","src":"16333:2:87","type":"","value":"64"}],"functionName":{"name":"add","nativeSrc":"16318:3:87","nodeType":"YulIdentifier","src":"16318:3:87"},"nativeSrc":"16318:18:87","nodeType":"YulFunctionCall","src":"16318:18:87"},{"name":"value2","nativeSrc":"16338:6:87","nodeType":"YulIdentifier","src":"16338:6:87"}],"functionName":{"name":"mstore","nativeSrc":"16311:6:87","nodeType":"YulIdentifier","src":"16311:6:87"},"nativeSrc":"16311:34:87","nodeType":"YulFunctionCall","src":"16311:34:87"},"nativeSrc":"16311:34:87","nodeType":"YulExpressionStatement","src":"16311:34:87"}]},"name":"abi_encode_tuple_t_address_t_uint256_t_uint256__to_t_address_t_uint256_t_uint256__fromStack_reversed","nativeSrc":"16006:345:87","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nativeSrc":"16116:9:87","nodeType":"YulTypedName","src":"16116:9:87","type":""},{"name":"value2","nativeSrc":"16127:6:87","nodeType":"YulTypedName","src":"16127:6:87","type":""},{"name":"value1","nativeSrc":"16135:6:87","nodeType":"YulTypedName","src":"16135:6:87","type":""},{"name":"value0","nativeSrc":"16143:6:87","nodeType":"YulTypedName","src":"16143:6:87","type":""}],"returnVariables":[{"name":"tail","nativeSrc":"16154:4:87","nodeType":"YulTypedName","src":"16154:4:87","type":""}],"src":"16006:345:87"},{"body":{"nativeSrc":"16482:102:87","nodeType":"YulBlock","src":"16482:102:87","statements":[{"nativeSrc":"16492:26:87","nodeType":"YulAssignment","src":"16492:26:87","value":{"arguments":[{"name":"headStart","nativeSrc":"16504:9:87","nodeType":"YulIdentifier","src":"16504:9:87"},{"kind":"number","nativeSrc":"16515:2:87","nodeType":"YulLiteral","src":"16515:2:87","type":"","value":"32"}],"functionName":{"name":"add","nativeSrc":"16500:3:87","nodeType":"YulIdentifier","src":"16500:3:87"},"nativeSrc":"16500:18:87","nodeType":"YulFunctionCall","src":"16500:18:87"},"variableNames":[{"name":"tail","nativeSrc":"16492:4:87","nodeType":"YulIdentifier","src":"16492:4:87"}]},{"expression":{"arguments":[{"name":"headStart","nativeSrc":"16534:9:87","nodeType":"YulIdentifier","src":"16534:9:87"},{"arguments":[{"name":"value0","nativeSrc":"16549:6:87","nodeType":"YulIdentifier","src":"16549:6:87"},{"arguments":[{"arguments":[{"kind":"number","nativeSrc":"16565:3:87","nodeType":"YulLiteral","src":"16565:3:87","type":"","value":"160"},{"kind":"number","nativeSrc":"16570:1:87","nodeType":"YulLiteral","src":"16570:1:87","type":"","value":"1"}],"functionName":{"name":"shl","nativeSrc":"16561:3:87","nodeType":"YulIdentifier","src":"16561:3:87"},"nativeSrc":"16561:11:87","nodeType":"YulFunctionCall","src":"16561:11:87"},{"kind":"number","nativeSrc":"16574:1:87","nodeType":"YulLiteral","src":"16574:1:87","type":"","value":"1"}],"functionName":{"name":"sub","nativeSrc":"16557:3:87","nodeType":"YulIdentifier","src":"16557:3:87"},"nativeSrc":"16557:19:87","nodeType":"YulFunctionCall","src":"16557:19:87"}],"functionName":{"name":"and","nativeSrc":"16545:3:87","nodeType":"YulIdentifier","src":"16545:3:87"},"nativeSrc":"16545:32:87","nodeType":"YulFunctionCall","src":"16545:32:87"}],"functionName":{"name":"mstore","nativeSrc":"16527:6:87","nodeType":"YulIdentifier","src":"16527:6:87"},"nativeSrc":"16527:51:87","nodeType":"YulFunctionCall","src":"16527:51:87"},"nativeSrc":"16527:51:87","nodeType":"YulExpressionStatement","src":"16527:51:87"}]},"name":"abi_encode_tuple_t_contract$_IInvestStrategy_$20725__to_t_address__fromStack_reversed","nativeSrc":"16356:228:87","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nativeSrc":"16451:9:87","nodeType":"YulTypedName","src":"16451:9:87","type":""},{"name":"value0","nativeSrc":"16462:6:87","nodeType":"YulTypedName","src":"16462:6:87","type":""}],"returnVariables":[{"name":"tail","nativeSrc":"16473:4:87","nodeType":"YulTypedName","src":"16473:4:87","type":""}],"src":"16356:228:87"},{"body":{"nativeSrc":"16637:77:87","nodeType":"YulBlock","src":"16637:77:87","statements":[{"nativeSrc":"16647:16:87","nodeType":"YulAssignment","src":"16647:16:87","value":{"arguments":[{"name":"x","nativeSrc":"16658:1:87","nodeType":"YulIdentifier","src":"16658:1:87"},{"name":"y","nativeSrc":"16661:1:87","nodeType":"YulIdentifier","src":"16661:1:87"}],"functionName":{"name":"add","nativeSrc":"16654:3:87","nodeType":"YulIdentifier","src":"16654:3:87"},"nativeSrc":"16654:9:87","nodeType":"YulFunctionCall","src":"16654:9:87"},"variableNames":[{"name":"sum","nativeSrc":"16647:3:87","nodeType":"YulIdentifier","src":"16647:3:87"}]},{"body":{"nativeSrc":"16686:22:87","nodeType":"YulBlock","src":"16686:22:87","statements":[{"expression":{"arguments":[],"functionName":{"name":"panic_error_0x11","nativeSrc":"16688:16:87","nodeType":"YulIdentifier","src":"16688:16:87"},"nativeSrc":"16688:18:87","nodeType":"YulFunctionCall","src":"16688:18:87"},"nativeSrc":"16688:18:87","nodeType":"YulExpressionStatement","src":"16688:18:87"}]},"condition":{"arguments":[{"name":"x","nativeSrc":"16678:1:87","nodeType":"YulIdentifier","src":"16678:1:87"},{"name":"sum","nativeSrc":"16681:3:87","nodeType":"YulIdentifier","src":"16681:3:87"}],"functionName":{"name":"gt","nativeSrc":"16675:2:87","nodeType":"YulIdentifier","src":"16675:2:87"},"nativeSrc":"16675:10:87","nodeType":"YulFunctionCall","src":"16675:10:87"},"nativeSrc":"16672:36:87","nodeType":"YulIf","src":"16672:36:87"}]},"name":"checked_add_t_uint256","nativeSrc":"16589:125:87","nodeType":"YulFunctionDefinition","parameters":[{"name":"x","nativeSrc":"16620:1:87","nodeType":"YulTypedName","src":"16620:1:87","type":""},{"name":"y","nativeSrc":"16623:1:87","nodeType":"YulTypedName","src":"16623:1:87","type":""}],"returnVariables":[{"name":"sum","nativeSrc":"16629:3:87","nodeType":"YulTypedName","src":"16629:3:87","type":""}],"src":"16589:125:87"},{"body":{"nativeSrc":"16844:156:87","nodeType":"YulBlock","src":"16844:156:87","statements":[{"nativeSrc":"16854:26:87","nodeType":"YulAssignment","src":"16854:26:87","value":{"arguments":[{"name":"headStart","nativeSrc":"16866:9:87","nodeType":"YulIdentifier","src":"16866:9:87"},{"kind":"number","nativeSrc":"16877:2:87","nodeType":"YulLiteral","src":"16877:2:87","type":"","value":"64"}],"functionName":{"name":"add","nativeSrc":"16862:3:87","nodeType":"YulIdentifier","src":"16862:3:87"},"nativeSrc":"16862:18:87","nodeType":"YulFunctionCall","src":"16862:18:87"},"variableNames":[{"name":"tail","nativeSrc":"16854:4:87","nodeType":"YulIdentifier","src":"16854:4:87"}]},{"expression":{"arguments":[{"name":"headStart","nativeSrc":"16896:9:87","nodeType":"YulIdentifier","src":"16896:9:87"},{"arguments":[{"name":"value0","nativeSrc":"16911:6:87","nodeType":"YulIdentifier","src":"16911:6:87"},{"arguments":[{"arguments":[{"kind":"number","nativeSrc":"16927:3:87","nodeType":"YulLiteral","src":"16927:3:87","type":"","value":"160"},{"kind":"number","nativeSrc":"16932:1:87","nodeType":"YulLiteral","src":"16932:1:87","type":"","value":"1"}],"functionName":{"name":"shl","nativeSrc":"16923:3:87","nodeType":"YulIdentifier","src":"16923:3:87"},"nativeSrc":"16923:11:87","nodeType":"YulFunctionCall","src":"16923:11:87"},{"kind":"number","nativeSrc":"16936:1:87","nodeType":"YulLiteral","src":"16936:1:87","type":"","value":"1"}],"functionName":{"name":"sub","nativeSrc":"16919:3:87","nodeType":"YulIdentifier","src":"16919:3:87"},"nativeSrc":"16919:19:87","nodeType":"YulFunctionCall","src":"16919:19:87"}],"functionName":{"name":"and","nativeSrc":"16907:3:87","nodeType":"YulIdentifier","src":"16907:3:87"},"nativeSrc":"16907:32:87","nodeType":"YulFunctionCall","src":"16907:32:87"}],"functionName":{"name":"mstore","nativeSrc":"16889:6:87","nodeType":"YulIdentifier","src":"16889:6:87"},"nativeSrc":"16889:51:87","nodeType":"YulFunctionCall","src":"16889:51:87"},"nativeSrc":"16889:51:87","nodeType":"YulExpressionStatement","src":"16889:51:87"},{"expression":{"arguments":[{"arguments":[{"name":"headStart","nativeSrc":"16960:9:87","nodeType":"YulIdentifier","src":"16960:9:87"},{"kind":"number","nativeSrc":"16971:2:87","nodeType":"YulLiteral","src":"16971:2:87","type":"","value":"32"}],"functionName":{"name":"add","nativeSrc":"16956:3:87","nodeType":"YulIdentifier","src":"16956:3:87"},"nativeSrc":"16956:18:87","nodeType":"YulFunctionCall","src":"16956:18:87"},{"arguments":[{"name":"value1","nativeSrc":"16980:6:87","nodeType":"YulIdentifier","src":"16980:6:87"},{"kind":"number","nativeSrc":"16988:4:87","nodeType":"YulLiteral","src":"16988:4:87","type":"","value":"0xff"}],"functionName":{"name":"and","nativeSrc":"16976:3:87","nodeType":"YulIdentifier","src":"16976:3:87"},"nativeSrc":"16976:17:87","nodeType":"YulFunctionCall","src":"16976:17:87"}],"functionName":{"name":"mstore","nativeSrc":"16949:6:87","nodeType":"YulIdentifier","src":"16949:6:87"},"nativeSrc":"16949:45:87","nodeType":"YulFunctionCall","src":"16949:45:87"},"nativeSrc":"16949:45:87","nodeType":"YulExpressionStatement","src":"16949:45:87"}]},"name":"abi_encode_tuple_t_address_t_uint8__to_t_address_t_uint8__fromStack_reversed","nativeSrc":"16719:281:87","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nativeSrc":"16805:9:87","nodeType":"YulTypedName","src":"16805:9:87","type":""},{"name":"value1","nativeSrc":"16816:6:87","nodeType":"YulTypedName","src":"16816:6:87","type":""},{"name":"value0","nativeSrc":"16824:6:87","nodeType":"YulTypedName","src":"16824:6:87","type":""}],"returnVariables":[{"name":"tail","nativeSrc":"16835:4:87","nodeType":"YulTypedName","src":"16835:4:87","type":""}],"src":"16719:281:87"},{"body":{"nativeSrc":"17152:471:87","nodeType":"YulBlock","src":"17152:471:87","statements":[{"nativeSrc":"17162:32:87","nodeType":"YulVariableDeclaration","src":"17162:32:87","value":{"arguments":[{"name":"headStart","nativeSrc":"17180:9:87","nodeType":"YulIdentifier","src":"17180:9:87"},{"kind":"number","nativeSrc":"17191:2:87","nodeType":"YulLiteral","src":"17191:2:87","type":"","value":"32"}],"functionName":{"name":"add","nativeSrc":"17176:3:87","nodeType":"YulIdentifier","src":"17176:3:87"},"nativeSrc":"17176:18:87","nodeType":"YulFunctionCall","src":"17176:18:87"},"variables":[{"name":"tail_1","nativeSrc":"17166:6:87","nodeType":"YulTypedName","src":"17166:6:87","type":""}]},{"expression":{"arguments":[{"name":"headStart","nativeSrc":"17210:9:87","nodeType":"YulIdentifier","src":"17210:9:87"},{"kind":"number","nativeSrc":"17221:2:87","nodeType":"YulLiteral","src":"17221:2:87","type":"","value":"32"}],"functionName":{"name":"mstore","nativeSrc":"17203:6:87","nodeType":"YulIdentifier","src":"17203:6:87"},"nativeSrc":"17203:21:87","nodeType":"YulFunctionCall","src":"17203:21:87"},"nativeSrc":"17203:21:87","nodeType":"YulExpressionStatement","src":"17203:21:87"},{"nativeSrc":"17233:17:87","nodeType":"YulVariableDeclaration","src":"17233:17:87","value":{"name":"tail_1","nativeSrc":"17244:6:87","nodeType":"YulIdentifier","src":"17244:6:87"},"variables":[{"name":"pos","nativeSrc":"17237:3:87","nodeType":"YulTypedName","src":"17237:3:87","type":""}]},{"nativeSrc":"17259:27:87","nodeType":"YulVariableDeclaration","src":"17259:27:87","value":{"arguments":[{"name":"value0","nativeSrc":"17279:6:87","nodeType":"YulIdentifier","src":"17279:6:87"}],"functionName":{"name":"mload","nativeSrc":"17273:5:87","nodeType":"YulIdentifier","src":"17273:5:87"},"nativeSrc":"17273:13:87","nodeType":"YulFunctionCall","src":"17273:13:87"},"variables":[{"name":"length","nativeSrc":"17263:6:87","nodeType":"YulTypedName","src":"17263:6:87","type":""}]},{"expression":{"arguments":[{"name":"tail_1","nativeSrc":"17302:6:87","nodeType":"YulIdentifier","src":"17302:6:87"},{"name":"length","nativeSrc":"17310:6:87","nodeType":"YulIdentifier","src":"17310:6:87"}],"functionName":{"name":"mstore","nativeSrc":"17295:6:87","nodeType":"YulIdentifier","src":"17295:6:87"},"nativeSrc":"17295:22:87","nodeType":"YulFunctionCall","src":"17295:22:87"},"nativeSrc":"17295:22:87","nodeType":"YulExpressionStatement","src":"17295:22:87"},{"nativeSrc":"17326:25:87","nodeType":"YulAssignment","src":"17326:25:87","value":{"arguments":[{"name":"headStart","nativeSrc":"17337:9:87","nodeType":"YulIdentifier","src":"17337:9:87"},{"kind":"number","nativeSrc":"17348:2:87","nodeType":"YulLiteral","src":"17348:2:87","type":"","value":"64"}],"functionName":{"name":"add","nativeSrc":"17333:3:87","nodeType":"YulIdentifier","src":"17333:3:87"},"nativeSrc":"17333:18:87","nodeType":"YulFunctionCall","src":"17333:18:87"},"variableNames":[{"name":"pos","nativeSrc":"17326:3:87","nodeType":"YulIdentifier","src":"17326:3:87"}]},{"nativeSrc":"17360:29:87","nodeType":"YulVariableDeclaration","src":"17360:29:87","value":{"arguments":[{"name":"value0","nativeSrc":"17378:6:87","nodeType":"YulIdentifier","src":"17378:6:87"},{"kind":"number","nativeSrc":"17386:2:87","nodeType":"YulLiteral","src":"17386:2:87","type":"","value":"32"}],"functionName":{"name":"add","nativeSrc":"17374:3:87","nodeType":"YulIdentifier","src":"17374:3:87"},"nativeSrc":"17374:15:87","nodeType":"YulFunctionCall","src":"17374:15:87"},"variables":[{"name":"srcPtr","nativeSrc":"17364:6:87","nodeType":"YulTypedName","src":"17364:6:87","type":""}]},{"nativeSrc":"17398:10:87","nodeType":"YulVariableDeclaration","src":"17398:10:87","value":{"kind":"number","nativeSrc":"17407:1:87","nodeType":"YulLiteral","src":"17407:1:87","type":"","value":"0"},"variables":[{"name":"i","nativeSrc":"17402:1:87","nodeType":"YulTypedName","src":"17402:1:87","type":""}]},{"body":{"nativeSrc":"17466:131:87","nodeType":"YulBlock","src":"17466:131:87","statements":[{"expression":{"arguments":[{"name":"pos","nativeSrc":"17487:3:87","nodeType":"YulIdentifier","src":"17487:3:87"},{"arguments":[{"arguments":[{"name":"srcPtr","nativeSrc":"17502:6:87","nodeType":"YulIdentifier","src":"17502:6:87"}],"functionName":{"name":"mload","nativeSrc":"17496:5:87","nodeType":"YulIdentifier","src":"17496:5:87"},"nativeSrc":"17496:13:87","nodeType":"YulFunctionCall","src":"17496:13:87"},{"kind":"number","nativeSrc":"17511:4:87","nodeType":"YulLiteral","src":"17511:4:87","type":"","value":"0xff"}],"functionName":{"name":"and","nativeSrc":"17492:3:87","nodeType":"YulIdentifier","src":"17492:3:87"},"nativeSrc":"17492:24:87","nodeType":"YulFunctionCall","src":"17492:24:87"}],"functionName":{"name":"mstore","nativeSrc":"17480:6:87","nodeType":"YulIdentifier","src":"17480:6:87"},"nativeSrc":"17480:37:87","nodeType":"YulFunctionCall","src":"17480:37:87"},"nativeSrc":"17480:37:87","nodeType":"YulExpressionStatement","src":"17480:37:87"},{"nativeSrc":"17530:19:87","nodeType":"YulAssignment","src":"17530:19:87","value":{"arguments":[{"name":"pos","nativeSrc":"17541:3:87","nodeType":"YulIdentifier","src":"17541:3:87"},{"kind":"number","nativeSrc":"17546:2:87","nodeType":"YulLiteral","src":"17546:2:87","type":"","value":"32"}],"functionName":{"name":"add","nativeSrc":"17537:3:87","nodeType":"YulIdentifier","src":"17537:3:87"},"nativeSrc":"17537:12:87","nodeType":"YulFunctionCall","src":"17537:12:87"},"variableNames":[{"name":"pos","nativeSrc":"17530:3:87","nodeType":"YulIdentifier","src":"17530:3:87"}]},{"nativeSrc":"17562:25:87","nodeType":"YulAssignment","src":"17562:25:87","value":{"arguments":[{"name":"srcPtr","nativeSrc":"17576:6:87","nodeType":"YulIdentifier","src":"17576:6:87"},{"kind":"number","nativeSrc":"17584:2:87","nodeType":"YulLiteral","src":"17584:2:87","type":"","value":"32"}],"functionName":{"name":"add","nativeSrc":"17572:3:87","nodeType":"YulIdentifier","src":"17572:3:87"},"nativeSrc":"17572:15:87","nodeType":"YulFunctionCall","src":"17572:15:87"},"variableNames":[{"name":"srcPtr","nativeSrc":"17562:6:87","nodeType":"YulIdentifier","src":"17562:6:87"}]}]},"condition":{"arguments":[{"name":"i","nativeSrc":"17428:1:87","nodeType":"YulIdentifier","src":"17428:1:87"},{"name":"length","nativeSrc":"17431:6:87","nodeType":"YulIdentifier","src":"17431:6:87"}],"functionName":{"name":"lt","nativeSrc":"17425:2:87","nodeType":"YulIdentifier","src":"17425:2:87"},"nativeSrc":"17425:13:87","nodeType":"YulFunctionCall","src":"17425:13:87"},"nativeSrc":"17417:180:87","nodeType":"YulForLoop","post":{"nativeSrc":"17439:18:87","nodeType":"YulBlock","src":"17439:18:87","statements":[{"nativeSrc":"17441:14:87","nodeType":"YulAssignment","src":"17441:14:87","value":{"arguments":[{"name":"i","nativeSrc":"17450:1:87","nodeType":"YulIdentifier","src":"17450:1:87"},{"kind":"number","nativeSrc":"17453:1:87","nodeType":"YulLiteral","src":"17453:1:87","type":"","value":"1"}],"functionName":{"name":"add","nativeSrc":"17446:3:87","nodeType":"YulIdentifier","src":"17446:3:87"},"nativeSrc":"17446:9:87","nodeType":"YulFunctionCall","src":"17446:9:87"},"variableNames":[{"name":"i","nativeSrc":"17441:1:87","nodeType":"YulIdentifier","src":"17441:1:87"}]}]},"pre":{"nativeSrc":"17421:3:87","nodeType":"YulBlock","src":"17421:3:87","statements":[]},"src":"17417:180:87"},{"nativeSrc":"17606:11:87","nodeType":"YulAssignment","src":"17606:11:87","value":{"name":"pos","nativeSrc":"17614:3:87","nodeType":"YulIdentifier","src":"17614:3:87"},"variableNames":[{"name":"tail","nativeSrc":"17606:4:87","nodeType":"YulIdentifier","src":"17606:4:87"}]}]},"name":"abi_encode_tuple_t_array$_t_uint8_$dyn_memory_ptr__to_t_array$_t_uint8_$dyn_memory_ptr__fromStack_reversed","nativeSrc":"17005:618:87","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nativeSrc":"17121:9:87","nodeType":"YulTypedName","src":"17121:9:87","type":""},{"name":"value0","nativeSrc":"17132:6:87","nodeType":"YulTypedName","src":"17132:6:87","type":""}],"returnVariables":[{"name":"tail","nativeSrc":"17143:4:87","nodeType":"YulTypedName","src":"17143:4:87","type":""}],"src":"17005:618:87"},{"body":{"nativeSrc":"17677:79:87","nodeType":"YulBlock","src":"17677:79:87","statements":[{"nativeSrc":"17687:17:87","nodeType":"YulAssignment","src":"17687:17:87","value":{"arguments":[{"name":"x","nativeSrc":"17699:1:87","nodeType":"YulIdentifier","src":"17699:1:87"},{"name":"y","nativeSrc":"17702:1:87","nodeType":"YulIdentifier","src":"17702:1:87"}],"functionName":{"name":"sub","nativeSrc":"17695:3:87","nodeType":"YulIdentifier","src":"17695:3:87"},"nativeSrc":"17695:9:87","nodeType":"YulFunctionCall","src":"17695:9:87"},"variableNames":[{"name":"diff","nativeSrc":"17687:4:87","nodeType":"YulIdentifier","src":"17687:4:87"}]},{"body":{"nativeSrc":"17728:22:87","nodeType":"YulBlock","src":"17728:22:87","statements":[{"expression":{"arguments":[],"functionName":{"name":"panic_error_0x11","nativeSrc":"17730:16:87","nodeType":"YulIdentifier","src":"17730:16:87"},"nativeSrc":"17730:18:87","nodeType":"YulFunctionCall","src":"17730:18:87"},"nativeSrc":"17730:18:87","nodeType":"YulExpressionStatement","src":"17730:18:87"}]},"condition":{"arguments":[{"name":"diff","nativeSrc":"17719:4:87","nodeType":"YulIdentifier","src":"17719:4:87"},{"name":"x","nativeSrc":"17725:1:87","nodeType":"YulIdentifier","src":"17725:1:87"}],"functionName":{"name":"gt","nativeSrc":"17716:2:87","nodeType":"YulIdentifier","src":"17716:2:87"},"nativeSrc":"17716:11:87","nodeType":"YulFunctionCall","src":"17716:11:87"},"nativeSrc":"17713:37:87","nodeType":"YulIf","src":"17713:37:87"}]},"name":"checked_sub_t_uint256","nativeSrc":"17628:128:87","nodeType":"YulFunctionDefinition","parameters":[{"name":"x","nativeSrc":"17659:1:87","nodeType":"YulTypedName","src":"17659:1:87","type":""},{"name":"y","nativeSrc":"17662:1:87","nodeType":"YulTypedName","src":"17662:1:87","type":""}],"returnVariables":[{"name":"diff","nativeSrc":"17668:4:87","nodeType":"YulTypedName","src":"17668:4:87","type":""}],"src":"17628:128:87"},{"body":{"nativeSrc":"17808:104:87","nodeType":"YulBlock","src":"17808:104:87","statements":[{"nativeSrc":"17818:39:87","nodeType":"YulAssignment","src":"17818:39:87","value":{"arguments":[{"arguments":[{"name":"x","nativeSrc":"17834:1:87","nodeType":"YulIdentifier","src":"17834:1:87"},{"kind":"number","nativeSrc":"17837:4:87","nodeType":"YulLiteral","src":"17837:4:87","type":"","value":"0xff"}],"functionName":{"name":"and","nativeSrc":"17830:3:87","nodeType":"YulIdentifier","src":"17830:3:87"},"nativeSrc":"17830:12:87","nodeType":"YulFunctionCall","src":"17830:12:87"},{"arguments":[{"name":"y","nativeSrc":"17848:1:87","nodeType":"YulIdentifier","src":"17848:1:87"},{"kind":"number","nativeSrc":"17851:4:87","nodeType":"YulLiteral","src":"17851:4:87","type":"","value":"0xff"}],"functionName":{"name":"and","nativeSrc":"17844:3:87","nodeType":"YulIdentifier","src":"17844:3:87"},"nativeSrc":"17844:12:87","nodeType":"YulFunctionCall","src":"17844:12:87"}],"functionName":{"name":"sub","nativeSrc":"17826:3:87","nodeType":"YulIdentifier","src":"17826:3:87"},"nativeSrc":"17826:31:87","nodeType":"YulFunctionCall","src":"17826:31:87"},"variableNames":[{"name":"diff","nativeSrc":"17818:4:87","nodeType":"YulIdentifier","src":"17818:4:87"}]},{"body":{"nativeSrc":"17884:22:87","nodeType":"YulBlock","src":"17884:22:87","statements":[{"expression":{"arguments":[],"functionName":{"name":"panic_error_0x11","nativeSrc":"17886:16:87","nodeType":"YulIdentifier","src":"17886:16:87"},"nativeSrc":"17886:18:87","nodeType":"YulFunctionCall","src":"17886:18:87"},"nativeSrc":"17886:18:87","nodeType":"YulExpressionStatement","src":"17886:18:87"}]},"condition":{"arguments":[{"name":"diff","nativeSrc":"17872:4:87","nodeType":"YulIdentifier","src":"17872:4:87"},{"kind":"number","nativeSrc":"17878:4:87","nodeType":"YulLiteral","src":"17878:4:87","type":"","value":"0xff"}],"functionName":{"name":"gt","nativeSrc":"17869:2:87","nodeType":"YulIdentifier","src":"17869:2:87"},"nativeSrc":"17869:14:87","nodeType":"YulFunctionCall","src":"17869:14:87"},"nativeSrc":"17866:40:87","nodeType":"YulIf","src":"17866:40:87"}]},"name":"checked_sub_t_uint8","nativeSrc":"17761:151:87","nodeType":"YulFunctionDefinition","parameters":[{"name":"x","nativeSrc":"17790:1:87","nodeType":"YulTypedName","src":"17790:1:87","type":""},{"name":"y","nativeSrc":"17793:1:87","nodeType":"YulTypedName","src":"17793:1:87","type":""}],"returnVariables":[{"name":"diff","nativeSrc":"17799:4:87","nodeType":"YulTypedName","src":"17799:4:87","type":""}],"src":"17761:151:87"},{"body":{"nativeSrc":"18025:101:87","nodeType":"YulBlock","src":"18025:101:87","statements":[{"nativeSrc":"18035:26:87","nodeType":"YulAssignment","src":"18035:26:87","value":{"arguments":[{"name":"headStart","nativeSrc":"18047:9:87","nodeType":"YulIdentifier","src":"18047:9:87"},{"kind":"number","nativeSrc":"18058:2:87","nodeType":"YulLiteral","src":"18058:2:87","type":"","value":"32"}],"functionName":{"name":"add","nativeSrc":"18043:3:87","nodeType":"YulIdentifier","src":"18043:3:87"},"nativeSrc":"18043:18:87","nodeType":"YulFunctionCall","src":"18043:18:87"},"variableNames":[{"name":"tail","nativeSrc":"18035:4:87","nodeType":"YulIdentifier","src":"18035:4:87"}]},{"expression":{"arguments":[{"name":"headStart","nativeSrc":"18077:9:87","nodeType":"YulIdentifier","src":"18077:9:87"},{"arguments":[{"name":"value0","nativeSrc":"18092:6:87","nodeType":"YulIdentifier","src":"18092:6:87"},{"kind":"number","nativeSrc":"18100:18:87","nodeType":"YulLiteral","src":"18100:18:87","type":"","value":"0xffffffffffffffff"}],"functionName":{"name":"and","nativeSrc":"18088:3:87","nodeType":"YulIdentifier","src":"18088:3:87"},"nativeSrc":"18088:31:87","nodeType":"YulFunctionCall","src":"18088:31:87"}],"functionName":{"name":"mstore","nativeSrc":"18070:6:87","nodeType":"YulIdentifier","src":"18070:6:87"},"nativeSrc":"18070:50:87","nodeType":"YulFunctionCall","src":"18070:50:87"},"nativeSrc":"18070:50:87","nodeType":"YulExpressionStatement","src":"18070:50:87"}]},"name":"abi_encode_tuple_t_rational_1_by_1__to_t_uint64__fromStack_reversed","nativeSrc":"17917:209:87","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nativeSrc":"17994:9:87","nodeType":"YulTypedName","src":"17994:9:87","type":""},{"name":"value0","nativeSrc":"18005:6:87","nodeType":"YulTypedName","src":"18005:6:87","type":""}],"returnVariables":[{"name":"tail","nativeSrc":"18016:4:87","nodeType":"YulTypedName","src":"18016:4:87","type":""}],"src":"17917:209:87"},{"body":{"nativeSrc":"18176:130:87","nodeType":"YulBlock","src":"18176:130:87","statements":[{"nativeSrc":"18186:31:87","nodeType":"YulVariableDeclaration","src":"18186:31:87","value":{"arguments":[{"name":"value","nativeSrc":"18205:5:87","nodeType":"YulIdentifier","src":"18205:5:87"},{"kind":"number","nativeSrc":"18212:4:87","nodeType":"YulLiteral","src":"18212:4:87","type":"","value":"0xff"}],"functionName":{"name":"and","nativeSrc":"18201:3:87","nodeType":"YulIdentifier","src":"18201:3:87"},"nativeSrc":"18201:16:87","nodeType":"YulFunctionCall","src":"18201:16:87"},"variables":[{"name":"value_1","nativeSrc":"18190:7:87","nodeType":"YulTypedName","src":"18190:7:87","type":""}]},{"body":{"nativeSrc":"18247:22:87","nodeType":"YulBlock","src":"18247:22:87","statements":[{"expression":{"arguments":[],"functionName":{"name":"panic_error_0x11","nativeSrc":"18249:16:87","nodeType":"YulIdentifier","src":"18249:16:87"},"nativeSrc":"18249:18:87","nodeType":"YulFunctionCall","src":"18249:18:87"},"nativeSrc":"18249:18:87","nodeType":"YulExpressionStatement","src":"18249:18:87"}]},"condition":{"arguments":[{"name":"value_1","nativeSrc":"18232:7:87","nodeType":"YulIdentifier","src":"18232:7:87"},{"kind":"number","nativeSrc":"18241:4:87","nodeType":"YulLiteral","src":"18241:4:87","type":"","value":"0xff"}],"functionName":{"name":"eq","nativeSrc":"18229:2:87","nodeType":"YulIdentifier","src":"18229:2:87"},"nativeSrc":"18229:17:87","nodeType":"YulFunctionCall","src":"18229:17:87"},"nativeSrc":"18226:43:87","nodeType":"YulIf","src":"18226:43:87"},{"nativeSrc":"18278:22:87","nodeType":"YulAssignment","src":"18278:22:87","value":{"arguments":[{"name":"value_1","nativeSrc":"18289:7:87","nodeType":"YulIdentifier","src":"18289:7:87"},{"kind":"number","nativeSrc":"18298:1:87","nodeType":"YulLiteral","src":"18298:1:87","type":"","value":"1"}],"functionName":{"name":"add","nativeSrc":"18285:3:87","nodeType":"YulIdentifier","src":"18285:3:87"},"nativeSrc":"18285:15:87","nodeType":"YulFunctionCall","src":"18285:15:87"},"variableNames":[{"name":"ret","nativeSrc":"18278:3:87","nodeType":"YulIdentifier","src":"18278:3:87"}]}]},"name":"increment_t_uint8","nativeSrc":"18131:175:87","nodeType":"YulFunctionDefinition","parameters":[{"name":"value","nativeSrc":"18158:5:87","nodeType":"YulTypedName","src":"18158:5:87","type":""}],"returnVariables":[{"name":"ret","nativeSrc":"18168:3:87","nodeType":"YulTypedName","src":"18168:3:87","type":""}],"src":"18131:175:87"},{"body":{"nativeSrc":"18380:306:87","nodeType":"YulBlock","src":"18380:306:87","statements":[{"nativeSrc":"18390:10:87","nodeType":"YulAssignment","src":"18390:10:87","value":{"kind":"number","nativeSrc":"18399:1:87","nodeType":"YulLiteral","src":"18399:1:87","type":"","value":"1"},"variableNames":[{"name":"power","nativeSrc":"18390:5:87","nodeType":"YulIdentifier","src":"18390:5:87"}]},{"nativeSrc":"18409:13:87","nodeType":"YulAssignment","src":"18409:13:87","value":{"name":"_base","nativeSrc":"18417:5:87","nodeType":"YulIdentifier","src":"18417:5:87"},"variableNames":[{"name":"base","nativeSrc":"18409:4:87","nodeType":"YulIdentifier","src":"18409:4:87"}]},{"body":{"nativeSrc":"18467:213:87","nodeType":"YulBlock","src":"18467:213:87","statements":[{"body":{"nativeSrc":"18509:22:87","nodeType":"YulBlock","src":"18509:22:87","statements":[{"expression":{"arguments":[],"functionName":{"name":"panic_error_0x11","nativeSrc":"18511:16:87","nodeType":"YulIdentifier","src":"18511:16:87"},"nativeSrc":"18511:18:87","nodeType":"YulFunctionCall","src":"18511:18:87"},"nativeSrc":"18511:18:87","nodeType":"YulExpressionStatement","src":"18511:18:87"}]},"condition":{"arguments":[{"name":"base","nativeSrc":"18487:4:87","nodeType":"YulIdentifier","src":"18487:4:87"},{"arguments":[{"name":"max","nativeSrc":"18497:3:87","nodeType":"YulIdentifier","src":"18497:3:87"},{"name":"base","nativeSrc":"18502:4:87","nodeType":"YulIdentifier","src":"18502:4:87"}],"functionName":{"name":"div","nativeSrc":"18493:3:87","nodeType":"YulIdentifier","src":"18493:3:87"},"nativeSrc":"18493:14:87","nodeType":"YulFunctionCall","src":"18493:14:87"}],"functionName":{"name":"gt","nativeSrc":"18484:2:87","nodeType":"YulIdentifier","src":"18484:2:87"},"nativeSrc":"18484:24:87","nodeType":"YulFunctionCall","src":"18484:24:87"},"nativeSrc":"18481:50:87","nodeType":"YulIf","src":"18481:50:87"},{"body":{"nativeSrc":"18564:29:87","nodeType":"YulBlock","src":"18564:29:87","statements":[{"nativeSrc":"18566:25:87","nodeType":"YulAssignment","src":"18566:25:87","value":{"arguments":[{"name":"power","nativeSrc":"18579:5:87","nodeType":"YulIdentifier","src":"18579:5:87"},{"name":"base","nativeSrc":"18586:4:87","nodeType":"YulIdentifier","src":"18586:4:87"}],"functionName":{"name":"mul","nativeSrc":"18575:3:87","nodeType":"YulIdentifier","src":"18575:3:87"},"nativeSrc":"18575:16:87","nodeType":"YulFunctionCall","src":"18575:16:87"},"variableNames":[{"name":"power","nativeSrc":"18566:5:87","nodeType":"YulIdentifier","src":"18566:5:87"}]}]},"condition":{"arguments":[{"name":"exponent","nativeSrc":"18551:8:87","nodeType":"YulIdentifier","src":"18551:8:87"},{"kind":"number","nativeSrc":"18561:1:87","nodeType":"YulLiteral","src":"18561:1:87","type":"","value":"1"}],"functionName":{"name":"and","nativeSrc":"18547:3:87","nodeType":"YulIdentifier","src":"18547:3:87"},"nativeSrc":"18547:16:87","nodeType":"YulFunctionCall","src":"18547:16:87"},"nativeSrc":"18544:49:87","nodeType":"YulIf","src":"18544:49:87"},{"nativeSrc":"18606:23:87","nodeType":"YulAssignment","src":"18606:23:87","value":{"arguments":[{"name":"base","nativeSrc":"18618:4:87","nodeType":"YulIdentifier","src":"18618:4:87"},{"name":"base","nativeSrc":"18624:4:87","nodeType":"YulIdentifier","src":"18624:4:87"}],"functionName":{"name":"mul","nativeSrc":"18614:3:87","nodeType":"YulIdentifier","src":"18614:3:87"},"nativeSrc":"18614:15:87","nodeType":"YulFunctionCall","src":"18614:15:87"},"variableNames":[{"name":"base","nativeSrc":"18606:4:87","nodeType":"YulIdentifier","src":"18606:4:87"}]},{"nativeSrc":"18642:28:87","nodeType":"YulAssignment","src":"18642:28:87","value":{"arguments":[{"kind":"number","nativeSrc":"18658:1:87","nodeType":"YulLiteral","src":"18658:1:87","type":"","value":"1"},{"name":"exponent","nativeSrc":"18661:8:87","nodeType":"YulIdentifier","src":"18661:8:87"}],"functionName":{"name":"shr","nativeSrc":"18654:3:87","nodeType":"YulIdentifier","src":"18654:3:87"},"nativeSrc":"18654:16:87","nodeType":"YulFunctionCall","src":"18654:16:87"},"variableNames":[{"name":"exponent","nativeSrc":"18642:8:87","nodeType":"YulIdentifier","src":"18642:8:87"}]}]},"condition":{"arguments":[{"name":"exponent","nativeSrc":"18442:8:87","nodeType":"YulIdentifier","src":"18442:8:87"},{"kind":"number","nativeSrc":"18452:1:87","nodeType":"YulLiteral","src":"18452:1:87","type":"","value":"1"}],"functionName":{"name":"gt","nativeSrc":"18439:2:87","nodeType":"YulIdentifier","src":"18439:2:87"},"nativeSrc":"18439:15:87","nodeType":"YulFunctionCall","src":"18439:15:87"},"nativeSrc":"18431:249:87","nodeType":"YulForLoop","post":{"nativeSrc":"18455:3:87","nodeType":"YulBlock","src":"18455:3:87","statements":[]},"pre":{"nativeSrc":"18435:3:87","nodeType":"YulBlock","src":"18435:3:87","statements":[]},"src":"18431:249:87"}]},"name":"checked_exp_helper","nativeSrc":"18311:375:87","nodeType":"YulFunctionDefinition","parameters":[{"name":"_base","nativeSrc":"18339:5:87","nodeType":"YulTypedName","src":"18339:5:87","type":""},{"name":"exponent","nativeSrc":"18346:8:87","nodeType":"YulTypedName","src":"18346:8:87","type":""},{"name":"max","nativeSrc":"18356:3:87","nodeType":"YulTypedName","src":"18356:3:87","type":""}],"returnVariables":[{"name":"power","nativeSrc":"18364:5:87","nodeType":"YulTypedName","src":"18364:5:87","type":""},{"name":"base","nativeSrc":"18371:4:87","nodeType":"YulTypedName","src":"18371:4:87","type":""}],"src":"18311:375:87"},{"body":{"nativeSrc":"18750:843:87","nodeType":"YulBlock","src":"18750:843:87","statements":[{"body":{"nativeSrc":"18788:52:87","nodeType":"YulBlock","src":"18788:52:87","statements":[{"nativeSrc":"18802:10:87","nodeType":"YulAssignment","src":"18802:10:87","value":{"kind":"number","nativeSrc":"18811:1:87","nodeType":"YulLiteral","src":"18811:1:87","type":"","value":"1"},"variableNames":[{"name":"power","nativeSrc":"18802:5:87","nodeType":"YulIdentifier","src":"18802:5:87"}]},{"nativeSrc":"18825:5:87","nodeType":"YulLeave","src":"18825:5:87"}]},"condition":{"arguments":[{"name":"exponent","nativeSrc":"18770:8:87","nodeType":"YulIdentifier","src":"18770:8:87"}],"functionName":{"name":"iszero","nativeSrc":"18763:6:87","nodeType":"YulIdentifier","src":"18763:6:87"},"nativeSrc":"18763:16:87","nodeType":"YulFunctionCall","src":"18763:16:87"},"nativeSrc":"18760:80:87","nodeType":"YulIf","src":"18760:80:87"},{"body":{"nativeSrc":"18873:52:87","nodeType":"YulBlock","src":"18873:52:87","statements":[{"nativeSrc":"18887:10:87","nodeType":"YulAssignment","src":"18887:10:87","value":{"kind":"number","nativeSrc":"18896:1:87","nodeType":"YulLiteral","src":"18896:1:87","type":"","value":"0"},"variableNames":[{"name":"power","nativeSrc":"18887:5:87","nodeType":"YulIdentifier","src":"18887:5:87"}]},{"nativeSrc":"18910:5:87","nodeType":"YulLeave","src":"18910:5:87"}]},"condition":{"arguments":[{"name":"base","nativeSrc":"18859:4:87","nodeType":"YulIdentifier","src":"18859:4:87"}],"functionName":{"name":"iszero","nativeSrc":"18852:6:87","nodeType":"YulIdentifier","src":"18852:6:87"},"nativeSrc":"18852:12:87","nodeType":"YulFunctionCall","src":"18852:12:87"},"nativeSrc":"18849:76:87","nodeType":"YulIf","src":"18849:76:87"},{"cases":[{"body":{"nativeSrc":"18961:52:87","nodeType":"YulBlock","src":"18961:52:87","statements":[{"nativeSrc":"18975:10:87","nodeType":"YulAssignment","src":"18975:10:87","value":{"kind":"number","nativeSrc":"18984:1:87","nodeType":"YulLiteral","src":"18984:1:87","type":"","value":"1"},"variableNames":[{"name":"power","nativeSrc":"18975:5:87","nodeType":"YulIdentifier","src":"18975:5:87"}]},{"nativeSrc":"18998:5:87","nodeType":"YulLeave","src":"18998:5:87"}]},"nativeSrc":"18954:59:87","nodeType":"YulCase","src":"18954:59:87","value":{"kind":"number","nativeSrc":"18959:1:87","nodeType":"YulLiteral","src":"18959:1:87","type":"","value":"1"}},{"body":{"nativeSrc":"19029:167:87","nodeType":"YulBlock","src":"19029:167:87","statements":[{"body":{"nativeSrc":"19064:22:87","nodeType":"YulBlock","src":"19064:22:87","statements":[{"expression":{"arguments":[],"functionName":{"name":"panic_error_0x11","nativeSrc":"19066:16:87","nodeType":"YulIdentifier","src":"19066:16:87"},"nativeSrc":"19066:18:87","nodeType":"YulFunctionCall","src":"19066:18:87"},"nativeSrc":"19066:18:87","nodeType":"YulExpressionStatement","src":"19066:18:87"}]},"condition":{"arguments":[{"name":"exponent","nativeSrc":"19049:8:87","nodeType":"YulIdentifier","src":"19049:8:87"},{"kind":"number","nativeSrc":"19059:3:87","nodeType":"YulLiteral","src":"19059:3:87","type":"","value":"255"}],"functionName":{"name":"gt","nativeSrc":"19046:2:87","nodeType":"YulIdentifier","src":"19046:2:87"},"nativeSrc":"19046:17:87","nodeType":"YulFunctionCall","src":"19046:17:87"},"nativeSrc":"19043:43:87","nodeType":"YulIf","src":"19043:43:87"},{"nativeSrc":"19099:25:87","nodeType":"YulAssignment","src":"19099:25:87","value":{"arguments":[{"name":"exponent","nativeSrc":"19112:8:87","nodeType":"YulIdentifier","src":"19112:8:87"},{"kind":"number","nativeSrc":"19122:1:87","nodeType":"YulLiteral","src":"19122:1:87","type":"","value":"1"}],"functionName":{"name":"shl","nativeSrc":"19108:3:87","nodeType":"YulIdentifier","src":"19108:3:87"},"nativeSrc":"19108:16:87","nodeType":"YulFunctionCall","src":"19108:16:87"},"variableNames":[{"name":"power","nativeSrc":"19099:5:87","nodeType":"YulIdentifier","src":"19099:5:87"}]},{"nativeSrc":"19137:11:87","nodeType":"YulVariableDeclaration","src":"19137:11:87","value":{"kind":"number","nativeSrc":"19147:1:87","nodeType":"YulLiteral","src":"19147:1:87","type":"","value":"0"},"variables":[{"name":"_1","nativeSrc":"19141:2:87","nodeType":"YulTypedName","src":"19141:2:87","type":""}]},{"nativeSrc":"19161:7:87","nodeType":"YulAssignment","src":"19161:7:87","value":{"kind":"number","nativeSrc":"19167:1:87","nodeType":"YulLiteral","src":"19167:1:87","type":"","value":"0"},"variableNames":[{"name":"_1","nativeSrc":"19161:2:87","nodeType":"YulIdentifier","src":"19161:2:87"}]},{"nativeSrc":"19181:5:87","nodeType":"YulLeave","src":"19181:5:87"}]},"nativeSrc":"19022:174:87","nodeType":"YulCase","src":"19022:174:87","value":{"kind":"number","nativeSrc":"19027:1:87","nodeType":"YulLiteral","src":"19027:1:87","type":"","value":"2"}}],"expression":{"name":"base","nativeSrc":"18941:4:87","nodeType":"YulIdentifier","src":"18941:4:87"},"nativeSrc":"18934:262:87","nodeType":"YulSwitch","src":"18934:262:87"},{"body":{"nativeSrc":"19294:114:87","nodeType":"YulBlock","src":"19294:114:87","statements":[{"nativeSrc":"19308:28:87","nodeType":"YulAssignment","src":"19308:28:87","value":{"arguments":[{"name":"base","nativeSrc":"19321:4:87","nodeType":"YulIdentifier","src":"19321:4:87"},{"name":"exponent","nativeSrc":"19327:8:87","nodeType":"YulIdentifier","src":"19327:8:87"}],"functionName":{"name":"exp","nativeSrc":"19317:3:87","nodeType":"YulIdentifier","src":"19317:3:87"},"nativeSrc":"19317:19:87","nodeType":"YulFunctionCall","src":"19317:19:87"},"variableNames":[{"name":"power","nativeSrc":"19308:5:87","nodeType":"YulIdentifier","src":"19308:5:87"}]},{"nativeSrc":"19349:11:87","nodeType":"YulVariableDeclaration","src":"19349:11:87","value":{"kind":"number","nativeSrc":"19359:1:87","nodeType":"YulLiteral","src":"19359:1:87","type":"","value":"0"},"variables":[{"name":"_2","nativeSrc":"19353:2:87","nodeType":"YulTypedName","src":"19353:2:87","type":""}]},{"nativeSrc":"19373:7:87","nodeType":"YulAssignment","src":"19373:7:87","value":{"kind":"number","nativeSrc":"19379:1:87","nodeType":"YulLiteral","src":"19379:1:87","type":"","value":"0"},"variableNames":[{"name":"_2","nativeSrc":"19373:2:87","nodeType":"YulIdentifier","src":"19373:2:87"}]},{"nativeSrc":"19393:5:87","nodeType":"YulLeave","src":"19393:5:87"}]},"condition":{"arguments":[{"arguments":[{"arguments":[{"name":"base","nativeSrc":"19218:4:87","nodeType":"YulIdentifier","src":"19218:4:87"},{"kind":"number","nativeSrc":"19224:2:87","nodeType":"YulLiteral","src":"19224:2:87","type":"","value":"11"}],"functionName":{"name":"lt","nativeSrc":"19215:2:87","nodeType":"YulIdentifier","src":"19215:2:87"},"nativeSrc":"19215:12:87","nodeType":"YulFunctionCall","src":"19215:12:87"},{"arguments":[{"name":"exponent","nativeSrc":"19232:8:87","nodeType":"YulIdentifier","src":"19232:8:87"},{"kind":"number","nativeSrc":"19242:2:87","nodeType":"YulLiteral","src":"19242:2:87","type":"","value":"78"}],"functionName":{"name":"lt","nativeSrc":"19229:2:87","nodeType":"YulIdentifier","src":"19229:2:87"},"nativeSrc":"19229:16:87","nodeType":"YulFunctionCall","src":"19229:16:87"}],"functionName":{"name":"and","nativeSrc":"19211:3:87","nodeType":"YulIdentifier","src":"19211:3:87"},"nativeSrc":"19211:35:87","nodeType":"YulFunctionCall","src":"19211:35:87"},{"arguments":[{"arguments":[{"name":"base","nativeSrc":"19255:4:87","nodeType":"YulIdentifier","src":"19255:4:87"},{"kind":"number","nativeSrc":"19261:3:87","nodeType":"YulLiteral","src":"19261:3:87","type":"","value":"307"}],"functionName":{"name":"lt","nativeSrc":"19252:2:87","nodeType":"YulIdentifier","src":"19252:2:87"},"nativeSrc":"19252:13:87","nodeType":"YulFunctionCall","src":"19252:13:87"},{"arguments":[{"name":"exponent","nativeSrc":"19270:8:87","nodeType":"YulIdentifier","src":"19270:8:87"},{"kind":"number","nativeSrc":"19280:2:87","nodeType":"YulLiteral","src":"19280:2:87","type":"","value":"32"}],"functionName":{"name":"lt","nativeSrc":"19267:2:87","nodeType":"YulIdentifier","src":"19267:2:87"},"nativeSrc":"19267:16:87","nodeType":"YulFunctionCall","src":"19267:16:87"}],"functionName":{"name":"and","nativeSrc":"19248:3:87","nodeType":"YulIdentifier","src":"19248:3:87"},"nativeSrc":"19248:36:87","nodeType":"YulFunctionCall","src":"19248:36:87"}],"functionName":{"name":"or","nativeSrc":"19208:2:87","nodeType":"YulIdentifier","src":"19208:2:87"},"nativeSrc":"19208:77:87","nodeType":"YulFunctionCall","src":"19208:77:87"},"nativeSrc":"19205:203:87","nodeType":"YulIf","src":"19205:203:87"},{"nativeSrc":"19417:65:87","nodeType":"YulVariableDeclaration","src":"19417:65:87","value":{"arguments":[{"name":"base","nativeSrc":"19459:4:87","nodeType":"YulIdentifier","src":"19459:4:87"},{"name":"exponent","nativeSrc":"19465:8:87","nodeType":"YulIdentifier","src":"19465:8:87"},{"arguments":[{"kind":"number","nativeSrc":"19479:1:87","nodeType":"YulLiteral","src":"19479:1:87","type":"","value":"0"}],"functionName":{"name":"not","nativeSrc":"19475:3:87","nodeType":"YulIdentifier","src":"19475:3:87"},"nativeSrc":"19475:6:87","nodeType":"YulFunctionCall","src":"19475:6:87"}],"functionName":{"name":"checked_exp_helper","nativeSrc":"19440:18:87","nodeType":"YulIdentifier","src":"19440:18:87"},"nativeSrc":"19440:42:87","nodeType":"YulFunctionCall","src":"19440:42:87"},"variables":[{"name":"power_1","nativeSrc":"19421:7:87","nodeType":"YulTypedName","src":"19421:7:87","type":""},{"name":"base_1","nativeSrc":"19430:6:87","nodeType":"YulTypedName","src":"19430:6:87","type":""}]},{"body":{"nativeSrc":"19527:22:87","nodeType":"YulBlock","src":"19527:22:87","statements":[{"expression":{"arguments":[],"functionName":{"name":"panic_error_0x11","nativeSrc":"19529:16:87","nodeType":"YulIdentifier","src":"19529:16:87"},"nativeSrc":"19529:18:87","nodeType":"YulFunctionCall","src":"19529:18:87"},"nativeSrc":"19529:18:87","nodeType":"YulExpressionStatement","src":"19529:18:87"}]},"condition":{"arguments":[{"name":"power_1","nativeSrc":"19497:7:87","nodeType":"YulIdentifier","src":"19497:7:87"},{"arguments":[{"arguments":[{"kind":"number","nativeSrc":"19514:1:87","nodeType":"YulLiteral","src":"19514:1:87","type":"","value":"0"}],"functionName":{"name":"not","nativeSrc":"19510:3:87","nodeType":"YulIdentifier","src":"19510:3:87"},"nativeSrc":"19510:6:87","nodeType":"YulFunctionCall","src":"19510:6:87"},{"name":"base_1","nativeSrc":"19518:6:87","nodeType":"YulIdentifier","src":"19518:6:87"}],"functionName":{"name":"div","nativeSrc":"19506:3:87","nodeType":"YulIdentifier","src":"19506:3:87"},"nativeSrc":"19506:19:87","nodeType":"YulFunctionCall","src":"19506:19:87"}],"functionName":{"name":"gt","nativeSrc":"19494:2:87","nodeType":"YulIdentifier","src":"19494:2:87"},"nativeSrc":"19494:32:87","nodeType":"YulFunctionCall","src":"19494:32:87"},"nativeSrc":"19491:58:87","nodeType":"YulIf","src":"19491:58:87"},{"nativeSrc":"19558:29:87","nodeType":"YulAssignment","src":"19558:29:87","value":{"arguments":[{"name":"power_1","nativeSrc":"19571:7:87","nodeType":"YulIdentifier","src":"19571:7:87"},{"name":"base_1","nativeSrc":"19580:6:87","nodeType":"YulIdentifier","src":"19580:6:87"}],"functionName":{"name":"mul","nativeSrc":"19567:3:87","nodeType":"YulIdentifier","src":"19567:3:87"},"nativeSrc":"19567:20:87","nodeType":"YulFunctionCall","src":"19567:20:87"},"variableNames":[{"name":"power","nativeSrc":"19558:5:87","nodeType":"YulIdentifier","src":"19558:5:87"}]}]},"name":"checked_exp_unsigned","nativeSrc":"18691:902:87","nodeType":"YulFunctionDefinition","parameters":[{"name":"base","nativeSrc":"18721:4:87","nodeType":"YulTypedName","src":"18721:4:87","type":""},{"name":"exponent","nativeSrc":"18727:8:87","nodeType":"YulTypedName","src":"18727:8:87","type":""}],"returnVariables":[{"name":"power","nativeSrc":"18740:5:87","nodeType":"YulTypedName","src":"18740:5:87","type":""}],"src":"18691:902:87"},{"body":{"nativeSrc":"19666:72:87","nodeType":"YulBlock","src":"19666:72:87","statements":[{"nativeSrc":"19676:56:87","nodeType":"YulAssignment","src":"19676:56:87","value":{"arguments":[{"name":"base","nativeSrc":"19706:4:87","nodeType":"YulIdentifier","src":"19706:4:87"},{"arguments":[{"name":"exponent","nativeSrc":"19716:8:87","nodeType":"YulIdentifier","src":"19716:8:87"},{"kind":"number","nativeSrc":"19726:4:87","nodeType":"YulLiteral","src":"19726:4:87","type":"","value":"0xff"}],"functionName":{"name":"and","nativeSrc":"19712:3:87","nodeType":"YulIdentifier","src":"19712:3:87"},"nativeSrc":"19712:19:87","nodeType":"YulFunctionCall","src":"19712:19:87"}],"functionName":{"name":"checked_exp_unsigned","nativeSrc":"19685:20:87","nodeType":"YulIdentifier","src":"19685:20:87"},"nativeSrc":"19685:47:87","nodeType":"YulFunctionCall","src":"19685:47:87"},"variableNames":[{"name":"power","nativeSrc":"19676:5:87","nodeType":"YulIdentifier","src":"19676:5:87"}]}]},"name":"checked_exp_t_uint256_t_uint8","nativeSrc":"19598:140:87","nodeType":"YulFunctionDefinition","parameters":[{"name":"base","nativeSrc":"19637:4:87","nodeType":"YulTypedName","src":"19637:4:87","type":""},{"name":"exponent","nativeSrc":"19643:8:87","nodeType":"YulTypedName","src":"19643:8:87","type":""}],"returnVariables":[{"name":"power","nativeSrc":"19656:5:87","nodeType":"YulTypedName","src":"19656:5:87","type":""}],"src":"19598:140:87"},{"body":{"nativeSrc":"19847:170:87","nodeType":"YulBlock","src":"19847:170:87","statements":[{"body":{"nativeSrc":"19893:16:87","nodeType":"YulBlock","src":"19893:16:87","statements":[{"expression":{"arguments":[{"kind":"number","nativeSrc":"19902:1:87","nodeType":"YulLiteral","src":"19902:1:87","type":"","value":"0"},{"kind":"number","nativeSrc":"19905:1:87","nodeType":"YulLiteral","src":"19905:1:87","type":"","value":"0"}],"functionName":{"name":"revert","nativeSrc":"19895:6:87","nodeType":"YulIdentifier","src":"19895:6:87"},"nativeSrc":"19895:12:87","nodeType":"YulFunctionCall","src":"19895:12:87"},"nativeSrc":"19895:12:87","nodeType":"YulExpressionStatement","src":"19895:12:87"}]},"condition":{"arguments":[{"arguments":[{"name":"dataEnd","nativeSrc":"19868:7:87","nodeType":"YulIdentifier","src":"19868:7:87"},{"name":"headStart","nativeSrc":"19877:9:87","nodeType":"YulIdentifier","src":"19877:9:87"}],"functionName":{"name":"sub","nativeSrc":"19864:3:87","nodeType":"YulIdentifier","src":"19864:3:87"},"nativeSrc":"19864:23:87","nodeType":"YulFunctionCall","src":"19864:23:87"},{"kind":"number","nativeSrc":"19889:2:87","nodeType":"YulLiteral","src":"19889:2:87","type":"","value":"32"}],"functionName":{"name":"slt","nativeSrc":"19860:3:87","nodeType":"YulIdentifier","src":"19860:3:87"},"nativeSrc":"19860:32:87","nodeType":"YulFunctionCall","src":"19860:32:87"},"nativeSrc":"19857:52:87","nodeType":"YulIf","src":"19857:52:87"},{"nativeSrc":"19918:29:87","nodeType":"YulVariableDeclaration","src":"19918:29:87","value":{"arguments":[{"name":"headStart","nativeSrc":"19937:9:87","nodeType":"YulIdentifier","src":"19937:9:87"}],"functionName":{"name":"mload","nativeSrc":"19931:5:87","nodeType":"YulIdentifier","src":"19931:5:87"},"nativeSrc":"19931:16:87","nodeType":"YulFunctionCall","src":"19931:16:87"},"variables":[{"name":"value","nativeSrc":"19922:5:87","nodeType":"YulTypedName","src":"19922:5:87","type":""}]},{"expression":{"arguments":[{"name":"value","nativeSrc":"19981:5:87","nodeType":"YulIdentifier","src":"19981:5:87"}],"functionName":{"name":"validator_revert_address","nativeSrc":"19956:24:87","nodeType":"YulIdentifier","src":"19956:24:87"},"nativeSrc":"19956:31:87","nodeType":"YulFunctionCall","src":"19956:31:87"},"nativeSrc":"19956:31:87","nodeType":"YulExpressionStatement","src":"19956:31:87"},{"nativeSrc":"19996:15:87","nodeType":"YulAssignment","src":"19996:15:87","value":{"name":"value","nativeSrc":"20006:5:87","nodeType":"YulIdentifier","src":"20006:5:87"},"variableNames":[{"name":"value0","nativeSrc":"19996:6:87","nodeType":"YulIdentifier","src":"19996:6:87"}]}]},"name":"abi_decode_tuple_t_contract$_IAccessManager_$6842_fromMemory","nativeSrc":"19743:274:87","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nativeSrc":"19813:9:87","nodeType":"YulTypedName","src":"19813:9:87","type":""},{"name":"dataEnd","nativeSrc":"19824:7:87","nodeType":"YulTypedName","src":"19824:7:87","type":""}],"returnVariables":[{"name":"value0","nativeSrc":"19836:6:87","nodeType":"YulTypedName","src":"19836:6:87","type":""}],"src":"19743:274:87"},{"body":{"nativeSrc":"20177:241:87","nodeType":"YulBlock","src":"20177:241:87","statements":[{"nativeSrc":"20187:26:87","nodeType":"YulAssignment","src":"20187:26:87","value":{"arguments":[{"name":"headStart","nativeSrc":"20199:9:87","nodeType":"YulIdentifier","src":"20199:9:87"},{"kind":"number","nativeSrc":"20210:2:87","nodeType":"YulLiteral","src":"20210:2:87","type":"","value":"96"}],"functionName":{"name":"add","nativeSrc":"20195:3:87","nodeType":"YulIdentifier","src":"20195:3:87"},"nativeSrc":"20195:18:87","nodeType":"YulFunctionCall","src":"20195:18:87"},"variableNames":[{"name":"tail","nativeSrc":"20187:4:87","nodeType":"YulIdentifier","src":"20187:4:87"}]},{"expression":{"arguments":[{"name":"headStart","nativeSrc":"20229:9:87","nodeType":"YulIdentifier","src":"20229:9:87"},{"arguments":[{"name":"value0","nativeSrc":"20244:6:87","nodeType":"YulIdentifier","src":"20244:6:87"},{"arguments":[{"arguments":[{"kind":"number","nativeSrc":"20260:3:87","nodeType":"YulLiteral","src":"20260:3:87","type":"","value":"160"},{"kind":"number","nativeSrc":"20265:1:87","nodeType":"YulLiteral","src":"20265:1:87","type":"","value":"1"}],"functionName":{"name":"shl","nativeSrc":"20256:3:87","nodeType":"YulIdentifier","src":"20256:3:87"},"nativeSrc":"20256:11:87","nodeType":"YulFunctionCall","src":"20256:11:87"},{"kind":"number","nativeSrc":"20269:1:87","nodeType":"YulLiteral","src":"20269:1:87","type":"","value":"1"}],"functionName":{"name":"sub","nativeSrc":"20252:3:87","nodeType":"YulIdentifier","src":"20252:3:87"},"nativeSrc":"20252:19:87","nodeType":"YulFunctionCall","src":"20252:19:87"}],"functionName":{"name":"and","nativeSrc":"20240:3:87","nodeType":"YulIdentifier","src":"20240:3:87"},"nativeSrc":"20240:32:87","nodeType":"YulFunctionCall","src":"20240:32:87"}],"functionName":{"name":"mstore","nativeSrc":"20222:6:87","nodeType":"YulIdentifier","src":"20222:6:87"},"nativeSrc":"20222:51:87","nodeType":"YulFunctionCall","src":"20222:51:87"},"nativeSrc":"20222:51:87","nodeType":"YulExpressionStatement","src":"20222:51:87"},{"expression":{"arguments":[{"arguments":[{"name":"headStart","nativeSrc":"20293:9:87","nodeType":"YulIdentifier","src":"20293:9:87"},{"kind":"number","nativeSrc":"20304:2:87","nodeType":"YulLiteral","src":"20304:2:87","type":"","value":"32"}],"functionName":{"name":"add","nativeSrc":"20289:3:87","nodeType":"YulIdentifier","src":"20289:3:87"},"nativeSrc":"20289:18:87","nodeType":"YulFunctionCall","src":"20289:18:87"},{"arguments":[{"name":"value1","nativeSrc":"20313:6:87","nodeType":"YulIdentifier","src":"20313:6:87"},{"arguments":[{"arguments":[{"kind":"number","nativeSrc":"20329:3:87","nodeType":"YulLiteral","src":"20329:3:87","type":"","value":"160"},{"kind":"number","nativeSrc":"20334:1:87","nodeType":"YulLiteral","src":"20334:1:87","type":"","value":"1"}],"functionName":{"name":"shl","nativeSrc":"20325:3:87","nodeType":"YulIdentifier","src":"20325:3:87"},"nativeSrc":"20325:11:87","nodeType":"YulFunctionCall","src":"20325:11:87"},{"kind":"number","nativeSrc":"20338:1:87","nodeType":"YulLiteral","src":"20338:1:87","type":"","value":"1"}],"functionName":{"name":"sub","nativeSrc":"20321:3:87","nodeType":"YulIdentifier","src":"20321:3:87"},"nativeSrc":"20321:19:87","nodeType":"YulFunctionCall","src":"20321:19:87"}],"functionName":{"name":"and","nativeSrc":"20309:3:87","nodeType":"YulIdentifier","src":"20309:3:87"},"nativeSrc":"20309:32:87","nodeType":"YulFunctionCall","src":"20309:32:87"}],"functionName":{"name":"mstore","nativeSrc":"20282:6:87","nodeType":"YulIdentifier","src":"20282:6:87"},"nativeSrc":"20282:60:87","nodeType":"YulFunctionCall","src":"20282:60:87"},"nativeSrc":"20282:60:87","nodeType":"YulExpressionStatement","src":"20282:60:87"},{"expression":{"arguments":[{"arguments":[{"name":"headStart","nativeSrc":"20362:9:87","nodeType":"YulIdentifier","src":"20362:9:87"},{"kind":"number","nativeSrc":"20373:2:87","nodeType":"YulLiteral","src":"20373:2:87","type":"","value":"64"}],"functionName":{"name":"add","nativeSrc":"20358:3:87","nodeType":"YulIdentifier","src":"20358:3:87"},"nativeSrc":"20358:18:87","nodeType":"YulFunctionCall","src":"20358:18:87"},{"arguments":[{"name":"value2","nativeSrc":"20382:6:87","nodeType":"YulIdentifier","src":"20382:6:87"},{"arguments":[{"kind":"number","nativeSrc":"20394:3:87","nodeType":"YulLiteral","src":"20394:3:87","type":"","value":"224"},{"kind":"number","nativeSrc":"20399:10:87","nodeType":"YulLiteral","src":"20399:10:87","type":"","value":"0xffffffff"}],"functionName":{"name":"shl","nativeSrc":"20390:3:87","nodeType":"YulIdentifier","src":"20390:3:87"},"nativeSrc":"20390:20:87","nodeType":"YulFunctionCall","src":"20390:20:87"}],"functionName":{"name":"and","nativeSrc":"20378:3:87","nodeType":"YulIdentifier","src":"20378:3:87"},"nativeSrc":"20378:33:87","nodeType":"YulFunctionCall","src":"20378:33:87"}],"functionName":{"name":"mstore","nativeSrc":"20351:6:87","nodeType":"YulIdentifier","src":"20351:6:87"},"nativeSrc":"20351:61:87","nodeType":"YulFunctionCall","src":"20351:61:87"},"nativeSrc":"20351:61:87","nodeType":"YulExpressionStatement","src":"20351:61:87"}]},"name":"abi_encode_tuple_t_address_t_address_t_bytes4__to_t_address_t_address_t_bytes4__fromStack_reversed","nativeSrc":"20022:396:87","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nativeSrc":"20130:9:87","nodeType":"YulTypedName","src":"20130:9:87","type":""},{"name":"value2","nativeSrc":"20141:6:87","nodeType":"YulTypedName","src":"20141:6:87","type":""},{"name":"value1","nativeSrc":"20149:6:87","nodeType":"YulTypedName","src":"20149:6:87","type":""},{"name":"value0","nativeSrc":"20157:6:87","nodeType":"YulTypedName","src":"20157:6:87","type":""}],"returnVariables":[{"name":"tail","nativeSrc":"20168:4:87","nodeType":"YulTypedName","src":"20168:4:87","type":""}],"src":"20022:396:87"},{"body":{"nativeSrc":"20517:316:87","nodeType":"YulBlock","src":"20517:316:87","statements":[{"body":{"nativeSrc":"20563:16:87","nodeType":"YulBlock","src":"20563:16:87","statements":[{"expression":{"arguments":[{"kind":"number","nativeSrc":"20572:1:87","nodeType":"YulLiteral","src":"20572:1:87","type":"","value":"0"},{"kind":"number","nativeSrc":"20575:1:87","nodeType":"YulLiteral","src":"20575:1:87","type":"","value":"0"}],"functionName":{"name":"revert","nativeSrc":"20565:6:87","nodeType":"YulIdentifier","src":"20565:6:87"},"nativeSrc":"20565:12:87","nodeType":"YulFunctionCall","src":"20565:12:87"},"nativeSrc":"20565:12:87","nodeType":"YulExpressionStatement","src":"20565:12:87"}]},"condition":{"arguments":[{"arguments":[{"name":"dataEnd","nativeSrc":"20538:7:87","nodeType":"YulIdentifier","src":"20538:7:87"},{"name":"headStart","nativeSrc":"20547:9:87","nodeType":"YulIdentifier","src":"20547:9:87"}],"functionName":{"name":"sub","nativeSrc":"20534:3:87","nodeType":"YulIdentifier","src":"20534:3:87"},"nativeSrc":"20534:23:87","nodeType":"YulFunctionCall","src":"20534:23:87"},{"kind":"number","nativeSrc":"20559:2:87","nodeType":"YulLiteral","src":"20559:2:87","type":"","value":"64"}],"functionName":{"name":"slt","nativeSrc":"20530:3:87","nodeType":"YulIdentifier","src":"20530:3:87"},"nativeSrc":"20530:32:87","nodeType":"YulFunctionCall","src":"20530:32:87"},"nativeSrc":"20527:52:87","nodeType":"YulIf","src":"20527:52:87"},{"nativeSrc":"20588:29:87","nodeType":"YulVariableDeclaration","src":"20588:29:87","value":{"arguments":[{"name":"headStart","nativeSrc":"20607:9:87","nodeType":"YulIdentifier","src":"20607:9:87"}],"functionName":{"name":"mload","nativeSrc":"20601:5:87","nodeType":"YulIdentifier","src":"20601:5:87"},"nativeSrc":"20601:16:87","nodeType":"YulFunctionCall","src":"20601:16:87"},"variables":[{"name":"value","nativeSrc":"20592:5:87","nodeType":"YulTypedName","src":"20592:5:87","type":""}]},{"expression":{"arguments":[{"name":"value","nativeSrc":"20648:5:87","nodeType":"YulIdentifier","src":"20648:5:87"}],"functionName":{"name":"validator_revert_bool","nativeSrc":"20626:21:87","nodeType":"YulIdentifier","src":"20626:21:87"},"nativeSrc":"20626:28:87","nodeType":"YulFunctionCall","src":"20626:28:87"},"nativeSrc":"20626:28:87","nodeType":"YulExpressionStatement","src":"20626:28:87"},{"nativeSrc":"20663:15:87","nodeType":"YulAssignment","src":"20663:15:87","value":{"name":"value","nativeSrc":"20673:5:87","nodeType":"YulIdentifier","src":"20673:5:87"},"variableNames":[{"name":"value0","nativeSrc":"20663:6:87","nodeType":"YulIdentifier","src":"20663:6:87"}]},{"nativeSrc":"20687:40:87","nodeType":"YulVariableDeclaration","src":"20687:40:87","value":{"arguments":[{"arguments":[{"name":"headStart","nativeSrc":"20712:9:87","nodeType":"YulIdentifier","src":"20712:9:87"},{"kind":"number","nativeSrc":"20723:2:87","nodeType":"YulLiteral","src":"20723:2:87","type":"","value":"32"}],"functionName":{"name":"add","nativeSrc":"20708:3:87","nodeType":"YulIdentifier","src":"20708:3:87"},"nativeSrc":"20708:18:87","nodeType":"YulFunctionCall","src":"20708:18:87"}],"functionName":{"name":"mload","nativeSrc":"20702:5:87","nodeType":"YulIdentifier","src":"20702:5:87"},"nativeSrc":"20702:25:87","nodeType":"YulFunctionCall","src":"20702:25:87"},"variables":[{"name":"value_1","nativeSrc":"20691:7:87","nodeType":"YulTypedName","src":"20691:7:87","type":""}]},{"body":{"nativeSrc":"20785:16:87","nodeType":"YulBlock","src":"20785:16:87","statements":[{"expression":{"arguments":[{"kind":"number","nativeSrc":"20794:1:87","nodeType":"YulLiteral","src":"20794:1:87","type":"","value":"0"},{"kind":"number","nativeSrc":"20797:1:87","nodeType":"YulLiteral","src":"20797:1:87","type":"","value":"0"}],"functionName":{"name":"revert","nativeSrc":"20787:6:87","nodeType":"YulIdentifier","src":"20787:6:87"},"nativeSrc":"20787:12:87","nodeType":"YulFunctionCall","src":"20787:12:87"},"nativeSrc":"20787:12:87","nodeType":"YulExpressionStatement","src":"20787:12:87"}]},"condition":{"arguments":[{"arguments":[{"name":"value_1","nativeSrc":"20749:7:87","nodeType":"YulIdentifier","src":"20749:7:87"},{"arguments":[{"name":"value_1","nativeSrc":"20762:7:87","nodeType":"YulIdentifier","src":"20762:7:87"},{"kind":"number","nativeSrc":"20771:10:87","nodeType":"YulLiteral","src":"20771:10:87","type":"","value":"0xffffffff"}],"functionName":{"name":"and","nativeSrc":"20758:3:87","nodeType":"YulIdentifier","src":"20758:3:87"},"nativeSrc":"20758:24:87","nodeType":"YulFunctionCall","src":"20758:24:87"}],"functionName":{"name":"eq","nativeSrc":"20746:2:87","nodeType":"YulIdentifier","src":"20746:2:87"},"nativeSrc":"20746:37:87","nodeType":"YulFunctionCall","src":"20746:37:87"}],"functionName":{"name":"iszero","nativeSrc":"20739:6:87","nodeType":"YulIdentifier","src":"20739:6:87"},"nativeSrc":"20739:45:87","nodeType":"YulFunctionCall","src":"20739:45:87"},"nativeSrc":"20736:65:87","nodeType":"YulIf","src":"20736:65:87"},{"nativeSrc":"20810:17:87","nodeType":"YulAssignment","src":"20810:17:87","value":{"name":"value_1","nativeSrc":"20820:7:87","nodeType":"YulIdentifier","src":"20820:7:87"},"variableNames":[{"name":"value1","nativeSrc":"20810:6:87","nodeType":"YulIdentifier","src":"20810:6:87"}]}]},"name":"abi_decode_tuple_t_boolt_uint32_fromMemory","nativeSrc":"20423:410:87","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nativeSrc":"20475:9:87","nodeType":"YulTypedName","src":"20475:9:87","type":""},{"name":"dataEnd","nativeSrc":"20486:7:87","nodeType":"YulTypedName","src":"20486:7:87","type":""}],"returnVariables":[{"name":"value0","nativeSrc":"20498:6:87","nodeType":"YulTypedName","src":"20498:6:87","type":""},{"name":"value1","nativeSrc":"20506:6:87","nodeType":"YulTypedName","src":"20506:6:87","type":""}],"src":"20423:410:87"},{"body":{"nativeSrc":"20981:153:87","nodeType":"YulBlock","src":"20981:153:87","statements":[{"expression":{"arguments":[{"name":"headStart","nativeSrc":"20998:9:87","nodeType":"YulIdentifier","src":"20998:9:87"},{"arguments":[{"name":"value0","nativeSrc":"21013:6:87","nodeType":"YulIdentifier","src":"21013:6:87"},{"kind":"number","nativeSrc":"21021:4:87","nodeType":"YulLiteral","src":"21021:4:87","type":"","value":"0xff"}],"functionName":{"name":"and","nativeSrc":"21009:3:87","nodeType":"YulIdentifier","src":"21009:3:87"},"nativeSrc":"21009:17:87","nodeType":"YulFunctionCall","src":"21009:17:87"}],"functionName":{"name":"mstore","nativeSrc":"20991:6:87","nodeType":"YulIdentifier","src":"20991:6:87"},"nativeSrc":"20991:36:87","nodeType":"YulFunctionCall","src":"20991:36:87"},"nativeSrc":"20991:36:87","nodeType":"YulExpressionStatement","src":"20991:36:87"},{"expression":{"arguments":[{"arguments":[{"name":"headStart","nativeSrc":"21047:9:87","nodeType":"YulIdentifier","src":"21047:9:87"},{"kind":"number","nativeSrc":"21058:2:87","nodeType":"YulLiteral","src":"21058:2:87","type":"","value":"32"}],"functionName":{"name":"add","nativeSrc":"21043:3:87","nodeType":"YulIdentifier","src":"21043:3:87"},"nativeSrc":"21043:18:87","nodeType":"YulFunctionCall","src":"21043:18:87"},{"kind":"number","nativeSrc":"21063:2:87","nodeType":"YulLiteral","src":"21063:2:87","type":"","value":"64"}],"functionName":{"name":"mstore","nativeSrc":"21036:6:87","nodeType":"YulIdentifier","src":"21036:6:87"},"nativeSrc":"21036:30:87","nodeType":"YulFunctionCall","src":"21036:30:87"},"nativeSrc":"21036:30:87","nodeType":"YulExpressionStatement","src":"21036:30:87"},{"nativeSrc":"21075:53:87","nodeType":"YulAssignment","src":"21075:53:87","value":{"arguments":[{"name":"value1","nativeSrc":"21101:6:87","nodeType":"YulIdentifier","src":"21101:6:87"},{"arguments":[{"name":"headStart","nativeSrc":"21113:9:87","nodeType":"YulIdentifier","src":"21113:9:87"},{"kind":"number","nativeSrc":"21124:2:87","nodeType":"YulLiteral","src":"21124:2:87","type":"","value":"64"}],"functionName":{"name":"add","nativeSrc":"21109:3:87","nodeType":"YulIdentifier","src":"21109:3:87"},"nativeSrc":"21109:18:87","nodeType":"YulFunctionCall","src":"21109:18:87"}],"functionName":{"name":"abi_encode_string","nativeSrc":"21083:17:87","nodeType":"YulIdentifier","src":"21083:17:87"},"nativeSrc":"21083:45:87","nodeType":"YulFunctionCall","src":"21083:45:87"},"variableNames":[{"name":"tail","nativeSrc":"21075:4:87","nodeType":"YulIdentifier","src":"21075:4:87"}]}]},"name":"abi_encode_tuple_t_uint8_t_bytes_memory_ptr__to_t_uint8_t_bytes_memory_ptr__fromStack_reversed","nativeSrc":"20838:296:87","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nativeSrc":"20942:9:87","nodeType":"YulTypedName","src":"20942:9:87","type":""},{"name":"value1","nativeSrc":"20953:6:87","nodeType":"YulTypedName","src":"20953:6:87","type":""},{"name":"value0","nativeSrc":"20961:6:87","nodeType":"YulTypedName","src":"20961:6:87","type":""}],"returnVariables":[{"name":"tail","nativeSrc":"20972:4:87","nodeType":"YulTypedName","src":"20972:4:87","type":""}],"src":"20838:296:87"},{"body":{"nativeSrc":"21220:103:87","nodeType":"YulBlock","src":"21220:103:87","statements":[{"body":{"nativeSrc":"21266:16:87","nodeType":"YulBlock","src":"21266:16:87","statements":[{"expression":{"arguments":[{"kind":"number","nativeSrc":"21275:1:87","nodeType":"YulLiteral","src":"21275:1:87","type":"","value":"0"},{"kind":"number","nativeSrc":"21278:1:87","nodeType":"YulLiteral","src":"21278:1:87","type":"","value":"0"}],"functionName":{"name":"revert","nativeSrc":"21268:6:87","nodeType":"YulIdentifier","src":"21268:6:87"},"nativeSrc":"21268:12:87","nodeType":"YulFunctionCall","src":"21268:12:87"},"nativeSrc":"21268:12:87","nodeType":"YulExpressionStatement","src":"21268:12:87"}]},"condition":{"arguments":[{"arguments":[{"name":"dataEnd","nativeSrc":"21241:7:87","nodeType":"YulIdentifier","src":"21241:7:87"},{"name":"headStart","nativeSrc":"21250:9:87","nodeType":"YulIdentifier","src":"21250:9:87"}],"functionName":{"name":"sub","nativeSrc":"21237:3:87","nodeType":"YulIdentifier","src":"21237:3:87"},"nativeSrc":"21237:23:87","nodeType":"YulFunctionCall","src":"21237:23:87"},{"kind":"number","nativeSrc":"21262:2:87","nodeType":"YulLiteral","src":"21262:2:87","type":"","value":"32"}],"functionName":{"name":"slt","nativeSrc":"21233:3:87","nodeType":"YulIdentifier","src":"21233:3:87"},"nativeSrc":"21233:32:87","nodeType":"YulFunctionCall","src":"21233:32:87"},"nativeSrc":"21230:52:87","nodeType":"YulIf","src":"21230:52:87"},{"nativeSrc":"21291:26:87","nodeType":"YulAssignment","src":"21291:26:87","value":{"arguments":[{"name":"headStart","nativeSrc":"21307:9:87","nodeType":"YulIdentifier","src":"21307:9:87"}],"functionName":{"name":"mload","nativeSrc":"21301:5:87","nodeType":"YulIdentifier","src":"21301:5:87"},"nativeSrc":"21301:16:87","nodeType":"YulFunctionCall","src":"21301:16:87"},"variableNames":[{"name":"value0","nativeSrc":"21291:6:87","nodeType":"YulIdentifier","src":"21291:6:87"}]}]},"name":"abi_decode_tuple_t_uint256_fromMemory","nativeSrc":"21139:184:87","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nativeSrc":"21186:9:87","nodeType":"YulTypedName","src":"21186:9:87","type":""},{"name":"dataEnd","nativeSrc":"21197:7:87","nodeType":"YulTypedName","src":"21197:7:87","type":""}],"returnVariables":[{"name":"value0","nativeSrc":"21209:6:87","nodeType":"YulTypedName","src":"21209:6:87","type":""}],"src":"21139:184:87"},{"body":{"nativeSrc":"21507:171:87","nodeType":"YulBlock","src":"21507:171:87","statements":[{"nativeSrc":"21517:26:87","nodeType":"YulAssignment","src":"21517:26:87","value":{"arguments":[{"name":"headStart","nativeSrc":"21529:9:87","nodeType":"YulIdentifier","src":"21529:9:87"},{"kind":"number","nativeSrc":"21540:2:87","nodeType":"YulLiteral","src":"21540:2:87","type":"","value":"64"}],"functionName":{"name":"add","nativeSrc":"21525:3:87","nodeType":"YulIdentifier","src":"21525:3:87"},"nativeSrc":"21525:18:87","nodeType":"YulFunctionCall","src":"21525:18:87"},"variableNames":[{"name":"tail","nativeSrc":"21517:4:87","nodeType":"YulIdentifier","src":"21517:4:87"}]},{"expression":{"arguments":[{"name":"headStart","nativeSrc":"21559:9:87","nodeType":"YulIdentifier","src":"21559:9:87"},{"arguments":[{"name":"value0","nativeSrc":"21574:6:87","nodeType":"YulIdentifier","src":"21574:6:87"},{"arguments":[{"arguments":[{"kind":"number","nativeSrc":"21590:3:87","nodeType":"YulLiteral","src":"21590:3:87","type":"","value":"160"},{"kind":"number","nativeSrc":"21595:1:87","nodeType":"YulLiteral","src":"21595:1:87","type":"","value":"1"}],"functionName":{"name":"shl","nativeSrc":"21586:3:87","nodeType":"YulIdentifier","src":"21586:3:87"},"nativeSrc":"21586:11:87","nodeType":"YulFunctionCall","src":"21586:11:87"},{"kind":"number","nativeSrc":"21599:1:87","nodeType":"YulLiteral","src":"21599:1:87","type":"","value":"1"}],"functionName":{"name":"sub","nativeSrc":"21582:3:87","nodeType":"YulIdentifier","src":"21582:3:87"},"nativeSrc":"21582:19:87","nodeType":"YulFunctionCall","src":"21582:19:87"}],"functionName":{"name":"and","nativeSrc":"21570:3:87","nodeType":"YulIdentifier","src":"21570:3:87"},"nativeSrc":"21570:32:87","nodeType":"YulFunctionCall","src":"21570:32:87"}],"functionName":{"name":"mstore","nativeSrc":"21552:6:87","nodeType":"YulIdentifier","src":"21552:6:87"},"nativeSrc":"21552:51:87","nodeType":"YulFunctionCall","src":"21552:51:87"},"nativeSrc":"21552:51:87","nodeType":"YulExpressionStatement","src":"21552:51:87"},{"expression":{"arguments":[{"arguments":[{"name":"headStart","nativeSrc":"21623:9:87","nodeType":"YulIdentifier","src":"21623:9:87"},{"kind":"number","nativeSrc":"21634:2:87","nodeType":"YulLiteral","src":"21634:2:87","type":"","value":"32"}],"functionName":{"name":"add","nativeSrc":"21619:3:87","nodeType":"YulIdentifier","src":"21619:3:87"},"nativeSrc":"21619:18:87","nodeType":"YulFunctionCall","src":"21619:18:87"},{"arguments":[{"name":"value1","nativeSrc":"21643:6:87","nodeType":"YulIdentifier","src":"21643:6:87"},{"arguments":[{"arguments":[{"kind":"number","nativeSrc":"21659:3:87","nodeType":"YulLiteral","src":"21659:3:87","type":"","value":"160"},{"kind":"number","nativeSrc":"21664:1:87","nodeType":"YulLiteral","src":"21664:1:87","type":"","value":"1"}],"functionName":{"name":"shl","nativeSrc":"21655:3:87","nodeType":"YulIdentifier","src":"21655:3:87"},"nativeSrc":"21655:11:87","nodeType":"YulFunctionCall","src":"21655:11:87"},{"kind":"number","nativeSrc":"21668:1:87","nodeType":"YulLiteral","src":"21668:1:87","type":"","value":"1"}],"functionName":{"name":"sub","nativeSrc":"21651:3:87","nodeType":"YulIdentifier","src":"21651:3:87"},"nativeSrc":"21651:19:87","nodeType":"YulFunctionCall","src":"21651:19:87"}],"functionName":{"name":"and","nativeSrc":"21639:3:87","nodeType":"YulIdentifier","src":"21639:3:87"},"nativeSrc":"21639:32:87","nodeType":"YulFunctionCall","src":"21639:32:87"}],"functionName":{"name":"mstore","nativeSrc":"21612:6:87","nodeType":"YulIdentifier","src":"21612:6:87"},"nativeSrc":"21612:60:87","nodeType":"YulFunctionCall","src":"21612:60:87"},"nativeSrc":"21612:60:87","nodeType":"YulExpressionStatement","src":"21612:60:87"}]},"name":"abi_encode_tuple_t_contract$_IInvestStrategy_$20725_t_contract$_IInvestStrategy_$20725__to_t_address_t_address__fromStack_reversed","nativeSrc":"21328:350:87","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nativeSrc":"21468:9:87","nodeType":"YulTypedName","src":"21468:9:87","type":""},{"name":"value1","nativeSrc":"21479:6:87","nodeType":"YulTypedName","src":"21479:6:87","type":""},{"name":"value0","nativeSrc":"21487:6:87","nodeType":"YulTypedName","src":"21487:6:87","type":""}],"returnVariables":[{"name":"tail","nativeSrc":"21498:4:87","nodeType":"YulTypedName","src":"21498:4:87","type":""}],"src":"21328:350:87"},{"body":{"nativeSrc":"21764:170:87","nodeType":"YulBlock","src":"21764:170:87","statements":[{"body":{"nativeSrc":"21810:16:87","nodeType":"YulBlock","src":"21810:16:87","statements":[{"expression":{"arguments":[{"kind":"number","nativeSrc":"21819:1:87","nodeType":"YulLiteral","src":"21819:1:87","type":"","value":"0"},{"kind":"number","nativeSrc":"21822:1:87","nodeType":"YulLiteral","src":"21822:1:87","type":"","value":"0"}],"functionName":{"name":"revert","nativeSrc":"21812:6:87","nodeType":"YulIdentifier","src":"21812:6:87"},"nativeSrc":"21812:12:87","nodeType":"YulFunctionCall","src":"21812:12:87"},"nativeSrc":"21812:12:87","nodeType":"YulExpressionStatement","src":"21812:12:87"}]},"condition":{"arguments":[{"arguments":[{"name":"dataEnd","nativeSrc":"21785:7:87","nodeType":"YulIdentifier","src":"21785:7:87"},{"name":"headStart","nativeSrc":"21794:9:87","nodeType":"YulIdentifier","src":"21794:9:87"}],"functionName":{"name":"sub","nativeSrc":"21781:3:87","nodeType":"YulIdentifier","src":"21781:3:87"},"nativeSrc":"21781:23:87","nodeType":"YulFunctionCall","src":"21781:23:87"},{"kind":"number","nativeSrc":"21806:2:87","nodeType":"YulLiteral","src":"21806:2:87","type":"","value":"32"}],"functionName":{"name":"slt","nativeSrc":"21777:3:87","nodeType":"YulIdentifier","src":"21777:3:87"},"nativeSrc":"21777:32:87","nodeType":"YulFunctionCall","src":"21777:32:87"},"nativeSrc":"21774:52:87","nodeType":"YulIf","src":"21774:52:87"},{"nativeSrc":"21835:29:87","nodeType":"YulVariableDeclaration","src":"21835:29:87","value":{"arguments":[{"name":"headStart","nativeSrc":"21854:9:87","nodeType":"YulIdentifier","src":"21854:9:87"}],"functionName":{"name":"mload","nativeSrc":"21848:5:87","nodeType":"YulIdentifier","src":"21848:5:87"},"nativeSrc":"21848:16:87","nodeType":"YulFunctionCall","src":"21848:16:87"},"variables":[{"name":"value","nativeSrc":"21839:5:87","nodeType":"YulTypedName","src":"21839:5:87","type":""}]},{"expression":{"arguments":[{"name":"value","nativeSrc":"21898:5:87","nodeType":"YulIdentifier","src":"21898:5:87"}],"functionName":{"name":"validator_revert_address","nativeSrc":"21873:24:87","nodeType":"YulIdentifier","src":"21873:24:87"},"nativeSrc":"21873:31:87","nodeType":"YulFunctionCall","src":"21873:31:87"},"nativeSrc":"21873:31:87","nodeType":"YulExpressionStatement","src":"21873:31:87"},{"nativeSrc":"21913:15:87","nodeType":"YulAssignment","src":"21913:15:87","value":{"name":"value","nativeSrc":"21923:5:87","nodeType":"YulIdentifier","src":"21923:5:87"},"variableNames":[{"name":"value0","nativeSrc":"21913:6:87","nodeType":"YulIdentifier","src":"21913:6:87"}]}]},"name":"abi_decode_tuple_t_address_fromMemory","nativeSrc":"21683:251:87","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nativeSrc":"21730:9:87","nodeType":"YulTypedName","src":"21730:9:87","type":""},{"name":"dataEnd","nativeSrc":"21741:7:87","nodeType":"YulTypedName","src":"21741:7:87","type":""}],"returnVariables":[{"name":"value0","nativeSrc":"21753:6:87","nodeType":"YulTypedName","src":"21753:6:87","type":""}],"src":"21683:251:87"},{"body":{"nativeSrc":"22076:164:87","nodeType":"YulBlock","src":"22076:164:87","statements":[{"nativeSrc":"22086:27:87","nodeType":"YulVariableDeclaration","src":"22086:27:87","value":{"arguments":[{"name":"value0","nativeSrc":"22106:6:87","nodeType":"YulIdentifier","src":"22106:6:87"}],"functionName":{"name":"mload","nativeSrc":"22100:5:87","nodeType":"YulIdentifier","src":"22100:5:87"},"nativeSrc":"22100:13:87","nodeType":"YulFunctionCall","src":"22100:13:87"},"variables":[{"name":"length","nativeSrc":"22090:6:87","nodeType":"YulTypedName","src":"22090:6:87","type":""}]},{"expression":{"arguments":[{"name":"pos","nativeSrc":"22128:3:87","nodeType":"YulIdentifier","src":"22128:3:87"},{"arguments":[{"name":"value0","nativeSrc":"22137:6:87","nodeType":"YulIdentifier","src":"22137:6:87"},{"kind":"number","nativeSrc":"22145:4:87","nodeType":"YulLiteral","src":"22145:4:87","type":"","value":"0x20"}],"functionName":{"name":"add","nativeSrc":"22133:3:87","nodeType":"YulIdentifier","src":"22133:3:87"},"nativeSrc":"22133:17:87","nodeType":"YulFunctionCall","src":"22133:17:87"},{"name":"length","nativeSrc":"22152:6:87","nodeType":"YulIdentifier","src":"22152:6:87"}],"functionName":{"name":"mcopy","nativeSrc":"22122:5:87","nodeType":"YulIdentifier","src":"22122:5:87"},"nativeSrc":"22122:37:87","nodeType":"YulFunctionCall","src":"22122:37:87"},"nativeSrc":"22122:37:87","nodeType":"YulExpressionStatement","src":"22122:37:87"},{"nativeSrc":"22168:26:87","nodeType":"YulVariableDeclaration","src":"22168:26:87","value":{"arguments":[{"name":"pos","nativeSrc":"22182:3:87","nodeType":"YulIdentifier","src":"22182:3:87"},{"name":"length","nativeSrc":"22187:6:87","nodeType":"YulIdentifier","src":"22187:6:87"}],"functionName":{"name":"add","nativeSrc":"22178:3:87","nodeType":"YulIdentifier","src":"22178:3:87"},"nativeSrc":"22178:16:87","nodeType":"YulFunctionCall","src":"22178:16:87"},"variables":[{"name":"_1","nativeSrc":"22172:2:87","nodeType":"YulTypedName","src":"22172:2:87","type":""}]},{"expression":{"arguments":[{"name":"_1","nativeSrc":"22210:2:87","nodeType":"YulIdentifier","src":"22210:2:87"},{"kind":"number","nativeSrc":"22214:1:87","nodeType":"YulLiteral","src":"22214:1:87","type":"","value":"0"}],"functionName":{"name":"mstore","nativeSrc":"22203:6:87","nodeType":"YulIdentifier","src":"22203:6:87"},"nativeSrc":"22203:13:87","nodeType":"YulFunctionCall","src":"22203:13:87"},"nativeSrc":"22203:13:87","nodeType":"YulExpressionStatement","src":"22203:13:87"},{"nativeSrc":"22225:9:87","nodeType":"YulAssignment","src":"22225:9:87","value":{"name":"_1","nativeSrc":"22232:2:87","nodeType":"YulIdentifier","src":"22232:2:87"},"variableNames":[{"name":"end","nativeSrc":"22225:3:87","nodeType":"YulIdentifier","src":"22225:3:87"}]}]},"name":"abi_encode_tuple_packed_t_bytes_memory_ptr__to_t_bytes_memory_ptr__nonPadded_inplace_fromStack_reversed","nativeSrc":"21939:301:87","nodeType":"YulFunctionDefinition","parameters":[{"name":"pos","nativeSrc":"22052:3:87","nodeType":"YulTypedName","src":"22052:3:87","type":""},{"name":"value0","nativeSrc":"22057:6:87","nodeType":"YulTypedName","src":"22057:6:87","type":""}],"returnVariables":[{"name":"end","nativeSrc":"22068:3:87","nodeType":"YulTypedName","src":"22068:3:87","type":""}],"src":"21939:301:87"},{"body":{"nativeSrc":"22277:95:87","nodeType":"YulBlock","src":"22277:95:87","statements":[{"expression":{"arguments":[{"kind":"number","nativeSrc":"22294:1:87","nodeType":"YulLiteral","src":"22294:1:87","type":"","value":"0"},{"arguments":[{"kind":"number","nativeSrc":"22301:3:87","nodeType":"YulLiteral","src":"22301:3:87","type":"","value":"224"},{"kind":"number","nativeSrc":"22306:10:87","nodeType":"YulLiteral","src":"22306:10:87","type":"","value":"0x4e487b71"}],"functionName":{"name":"shl","nativeSrc":"22297:3:87","nodeType":"YulIdentifier","src":"22297:3:87"},"nativeSrc":"22297:20:87","nodeType":"YulFunctionCall","src":"22297:20:87"}],"functionName":{"name":"mstore","nativeSrc":"22287:6:87","nodeType":"YulIdentifier","src":"22287:6:87"},"nativeSrc":"22287:31:87","nodeType":"YulFunctionCall","src":"22287:31:87"},"nativeSrc":"22287:31:87","nodeType":"YulExpressionStatement","src":"22287:31:87"},{"expression":{"arguments":[{"kind":"number","nativeSrc":"22334:1:87","nodeType":"YulLiteral","src":"22334:1:87","type":"","value":"4"},{"kind":"number","nativeSrc":"22337:4:87","nodeType":"YulLiteral","src":"22337:4:87","type":"","value":"0x12"}],"functionName":{"name":"mstore","nativeSrc":"22327:6:87","nodeType":"YulIdentifier","src":"22327:6:87"},"nativeSrc":"22327:15:87","nodeType":"YulFunctionCall","src":"22327:15:87"},"nativeSrc":"22327:15:87","nodeType":"YulExpressionStatement","src":"22327:15:87"},{"expression":{"arguments":[{"kind":"number","nativeSrc":"22358:1:87","nodeType":"YulLiteral","src":"22358:1:87","type":"","value":"0"},{"kind":"number","nativeSrc":"22361:4:87","nodeType":"YulLiteral","src":"22361:4:87","type":"","value":"0x24"}],"functionName":{"name":"revert","nativeSrc":"22351:6:87","nodeType":"YulIdentifier","src":"22351:6:87"},"nativeSrc":"22351:15:87","nodeType":"YulFunctionCall","src":"22351:15:87"},"nativeSrc":"22351:15:87","nodeType":"YulExpressionStatement","src":"22351:15:87"}]},"name":"panic_error_0x12","nativeSrc":"22245:127:87","nodeType":"YulFunctionDefinition","src":"22245:127:87"},{"body":{"nativeSrc":"22506:119:87","nodeType":"YulBlock","src":"22506:119:87","statements":[{"nativeSrc":"22516:26:87","nodeType":"YulAssignment","src":"22516:26:87","value":{"arguments":[{"name":"headStart","nativeSrc":"22528:9:87","nodeType":"YulIdentifier","src":"22528:9:87"},{"kind":"number","nativeSrc":"22539:2:87","nodeType":"YulLiteral","src":"22539:2:87","type":"","value":"64"}],"functionName":{"name":"add","nativeSrc":"22524:3:87","nodeType":"YulIdentifier","src":"22524:3:87"},"nativeSrc":"22524:18:87","nodeType":"YulFunctionCall","src":"22524:18:87"},"variableNames":[{"name":"tail","nativeSrc":"22516:4:87","nodeType":"YulIdentifier","src":"22516:4:87"}]},{"expression":{"arguments":[{"name":"headStart","nativeSrc":"22558:9:87","nodeType":"YulIdentifier","src":"22558:9:87"},{"name":"value0","nativeSrc":"22569:6:87","nodeType":"YulIdentifier","src":"22569:6:87"}],"functionName":{"name":"mstore","nativeSrc":"22551:6:87","nodeType":"YulIdentifier","src":"22551:6:87"},"nativeSrc":"22551:25:87","nodeType":"YulFunctionCall","src":"22551:25:87"},"nativeSrc":"22551:25:87","nodeType":"YulExpressionStatement","src":"22551:25:87"},{"expression":{"arguments":[{"arguments":[{"name":"headStart","nativeSrc":"22596:9:87","nodeType":"YulIdentifier","src":"22596:9:87"},{"kind":"number","nativeSrc":"22607:2:87","nodeType":"YulLiteral","src":"22607:2:87","type":"","value":"32"}],"functionName":{"name":"add","nativeSrc":"22592:3:87","nodeType":"YulIdentifier","src":"22592:3:87"},"nativeSrc":"22592:18:87","nodeType":"YulFunctionCall","src":"22592:18:87"},{"name":"value1","nativeSrc":"22612:6:87","nodeType":"YulIdentifier","src":"22612:6:87"}],"functionName":{"name":"mstore","nativeSrc":"22585:6:87","nodeType":"YulIdentifier","src":"22585:6:87"},"nativeSrc":"22585:34:87","nodeType":"YulFunctionCall","src":"22585:34:87"},"nativeSrc":"22585:34:87","nodeType":"YulExpressionStatement","src":"22585:34:87"}]},"name":"abi_encode_tuple_t_uint256_t_uint256__to_t_uint256_t_uint256__fromStack_reversed","nativeSrc":"22377:248:87","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nativeSrc":"22467:9:87","nodeType":"YulTypedName","src":"22467:9:87","type":""},{"name":"value1","nativeSrc":"22478:6:87","nodeType":"YulTypedName","src":"22478:6:87","type":""},{"name":"value0","nativeSrc":"22486:6:87","nodeType":"YulTypedName","src":"22486:6:87","type":""}],"returnVariables":[{"name":"tail","nativeSrc":"22497:4:87","nodeType":"YulTypedName","src":"22497:4:87","type":""}],"src":"22377:248:87"},{"body":{"nativeSrc":"22662:95:87","nodeType":"YulBlock","src":"22662:95:87","statements":[{"expression":{"arguments":[{"kind":"number","nativeSrc":"22679:1:87","nodeType":"YulLiteral","src":"22679:1:87","type":"","value":"0"},{"arguments":[{"kind":"number","nativeSrc":"22686:3:87","nodeType":"YulLiteral","src":"22686:3:87","type":"","value":"224"},{"kind":"number","nativeSrc":"22691:10:87","nodeType":"YulLiteral","src":"22691:10:87","type":"","value":"0x4e487b71"}],"functionName":{"name":"shl","nativeSrc":"22682:3:87","nodeType":"YulIdentifier","src":"22682:3:87"},"nativeSrc":"22682:20:87","nodeType":"YulFunctionCall","src":"22682:20:87"}],"functionName":{"name":"mstore","nativeSrc":"22672:6:87","nodeType":"YulIdentifier","src":"22672:6:87"},"nativeSrc":"22672:31:87","nodeType":"YulFunctionCall","src":"22672:31:87"},"nativeSrc":"22672:31:87","nodeType":"YulExpressionStatement","src":"22672:31:87"},{"expression":{"arguments":[{"kind":"number","nativeSrc":"22719:1:87","nodeType":"YulLiteral","src":"22719:1:87","type":"","value":"4"},{"kind":"number","nativeSrc":"22722:4:87","nodeType":"YulLiteral","src":"22722:4:87","type":"","value":"0x21"}],"functionName":{"name":"mstore","nativeSrc":"22712:6:87","nodeType":"YulIdentifier","src":"22712:6:87"},"nativeSrc":"22712:15:87","nodeType":"YulFunctionCall","src":"22712:15:87"},"nativeSrc":"22712:15:87","nodeType":"YulExpressionStatement","src":"22712:15:87"},{"expression":{"arguments":[{"kind":"number","nativeSrc":"22743:1:87","nodeType":"YulLiteral","src":"22743:1:87","type":"","value":"0"},{"kind":"number","nativeSrc":"22746:4:87","nodeType":"YulLiteral","src":"22746:4:87","type":"","value":"0x24"}],"functionName":{"name":"revert","nativeSrc":"22736:6:87","nodeType":"YulIdentifier","src":"22736:6:87"},"nativeSrc":"22736:15:87","nodeType":"YulFunctionCall","src":"22736:15:87"},"nativeSrc":"22736:15:87","nodeType":"YulExpressionStatement","src":"22736:15:87"}]},"name":"panic_error_0x21","nativeSrc":"22630:127:87","nodeType":"YulFunctionDefinition","src":"22630:127:87"},{"body":{"nativeSrc":"22798:218:87","nodeType":"YulBlock","src":"22798:218:87","statements":[{"nativeSrc":"22808:23:87","nodeType":"YulVariableDeclaration","src":"22808:23:87","value":{"arguments":[{"name":"y","nativeSrc":"22823:1:87","nodeType":"YulIdentifier","src":"22823:1:87"},{"kind":"number","nativeSrc":"22826:4:87","nodeType":"YulLiteral","src":"22826:4:87","type":"","value":"0xff"}],"functionName":{"name":"and","nativeSrc":"22819:3:87","nodeType":"YulIdentifier","src":"22819:3:87"},"nativeSrc":"22819:12:87","nodeType":"YulFunctionCall","src":"22819:12:87"},"variables":[{"name":"y_1","nativeSrc":"22812:3:87","nodeType":"YulTypedName","src":"22812:3:87","type":""}]},{"body":{"nativeSrc":"22863:111:87","nodeType":"YulBlock","src":"22863:111:87","statements":[{"expression":{"arguments":[{"kind":"number","nativeSrc":"22884:1:87","nodeType":"YulLiteral","src":"22884:1:87","type":"","value":"0"},{"arguments":[{"kind":"number","nativeSrc":"22891:3:87","nodeType":"YulLiteral","src":"22891:3:87","type":"","value":"224"},{"kind":"number","nativeSrc":"22896:10:87","nodeType":"YulLiteral","src":"22896:10:87","type":"","value":"0x4e487b71"}],"functionName":{"name":"shl","nativeSrc":"22887:3:87","nodeType":"YulIdentifier","src":"22887:3:87"},"nativeSrc":"22887:20:87","nodeType":"YulFunctionCall","src":"22887:20:87"}],"functionName":{"name":"mstore","nativeSrc":"22877:6:87","nodeType":"YulIdentifier","src":"22877:6:87"},"nativeSrc":"22877:31:87","nodeType":"YulFunctionCall","src":"22877:31:87"},"nativeSrc":"22877:31:87","nodeType":"YulExpressionStatement","src":"22877:31:87"},{"expression":{"arguments":[{"kind":"number","nativeSrc":"22928:1:87","nodeType":"YulLiteral","src":"22928:1:87","type":"","value":"4"},{"kind":"number","nativeSrc":"22931:4:87","nodeType":"YulLiteral","src":"22931:4:87","type":"","value":"0x12"}],"functionName":{"name":"mstore","nativeSrc":"22921:6:87","nodeType":"YulIdentifier","src":"22921:6:87"},"nativeSrc":"22921:15:87","nodeType":"YulFunctionCall","src":"22921:15:87"},"nativeSrc":"22921:15:87","nodeType":"YulExpressionStatement","src":"22921:15:87"},{"expression":{"arguments":[{"kind":"number","nativeSrc":"22956:1:87","nodeType":"YulLiteral","src":"22956:1:87","type":"","value":"0"},{"kind":"number","nativeSrc":"22959:4:87","nodeType":"YulLiteral","src":"22959:4:87","type":"","value":"0x24"}],"functionName":{"name":"revert","nativeSrc":"22949:6:87","nodeType":"YulIdentifier","src":"22949:6:87"},"nativeSrc":"22949:15:87","nodeType":"YulFunctionCall","src":"22949:15:87"},"nativeSrc":"22949:15:87","nodeType":"YulExpressionStatement","src":"22949:15:87"}]},"condition":{"arguments":[{"name":"y_1","nativeSrc":"22850:3:87","nodeType":"YulIdentifier","src":"22850:3:87"}],"functionName":{"name":"iszero","nativeSrc":"22843:6:87","nodeType":"YulIdentifier","src":"22843:6:87"},"nativeSrc":"22843:11:87","nodeType":"YulFunctionCall","src":"22843:11:87"},"nativeSrc":"22840:134:87","nodeType":"YulIf","src":"22840:134:87"},{"nativeSrc":"22983:27:87","nodeType":"YulAssignment","src":"22983:27:87","value":{"arguments":[{"arguments":[{"name":"x","nativeSrc":"22996:1:87","nodeType":"YulIdentifier","src":"22996:1:87"},{"kind":"number","nativeSrc":"22999:4:87","nodeType":"YulLiteral","src":"22999:4:87","type":"","value":"0xff"}],"functionName":{"name":"and","nativeSrc":"22992:3:87","nodeType":"YulIdentifier","src":"22992:3:87"},"nativeSrc":"22992:12:87","nodeType":"YulFunctionCall","src":"22992:12:87"},{"name":"y_1","nativeSrc":"23006:3:87","nodeType":"YulIdentifier","src":"23006:3:87"}],"functionName":{"name":"mod","nativeSrc":"22988:3:87","nodeType":"YulIdentifier","src":"22988:3:87"},"nativeSrc":"22988:22:87","nodeType":"YulFunctionCall","src":"22988:22:87"},"variableNames":[{"name":"r","nativeSrc":"22983:1:87","nodeType":"YulIdentifier","src":"22983:1:87"}]}]},"name":"mod_t_uint8","nativeSrc":"22762:254:87","nodeType":"YulFunctionDefinition","parameters":[{"name":"x","nativeSrc":"22783:1:87","nodeType":"YulTypedName","src":"22783:1:87","type":""},{"name":"y","nativeSrc":"22786:1:87","nodeType":"YulTypedName","src":"22786:1:87","type":""}],"returnVariables":[{"name":"r","nativeSrc":"22792:1:87","nodeType":"YulTypedName","src":"22792:1:87","type":""}],"src":"22762:254:87"},{"body":{"nativeSrc":"23077:65:87","nodeType":"YulBlock","src":"23077:65:87","statements":[{"expression":{"arguments":[{"kind":"number","nativeSrc":"23094:1:87","nodeType":"YulLiteral","src":"23094:1:87","type":"","value":"0"},{"name":"ptr","nativeSrc":"23097:3:87","nodeType":"YulIdentifier","src":"23097:3:87"}],"functionName":{"name":"mstore","nativeSrc":"23087:6:87","nodeType":"YulIdentifier","src":"23087:6:87"},"nativeSrc":"23087:14:87","nodeType":"YulFunctionCall","src":"23087:14:87"},"nativeSrc":"23087:14:87","nodeType":"YulExpressionStatement","src":"23087:14:87"},{"nativeSrc":"23110:26:87","nodeType":"YulAssignment","src":"23110:26:87","value":{"arguments":[{"kind":"number","nativeSrc":"23128:1:87","nodeType":"YulLiteral","src":"23128:1:87","type":"","value":"0"},{"kind":"number","nativeSrc":"23131:4:87","nodeType":"YulLiteral","src":"23131:4:87","type":"","value":"0x20"}],"functionName":{"name":"keccak256","nativeSrc":"23118:9:87","nodeType":"YulIdentifier","src":"23118:9:87"},"nativeSrc":"23118:18:87","nodeType":"YulFunctionCall","src":"23118:18:87"},"variableNames":[{"name":"data","nativeSrc":"23110:4:87","nodeType":"YulIdentifier","src":"23110:4:87"}]}]},"name":"array_dataslot_string_storage","nativeSrc":"23021:121:87","nodeType":"YulFunctionDefinition","parameters":[{"name":"ptr","nativeSrc":"23060:3:87","nodeType":"YulTypedName","src":"23060:3:87","type":""}],"returnVariables":[{"name":"data","nativeSrc":"23068:4:87","nodeType":"YulTypedName","src":"23068:4:87","type":""}],"src":"23021:121:87"},{"body":{"nativeSrc":"23228:437:87","nodeType":"YulBlock","src":"23228:437:87","statements":[{"body":{"nativeSrc":"23261:398:87","nodeType":"YulBlock","src":"23261:398:87","statements":[{"expression":{"arguments":[{"kind":"number","nativeSrc":"23282:1:87","nodeType":"YulLiteral","src":"23282:1:87","type":"","value":"0"},{"name":"array","nativeSrc":"23285:5:87","nodeType":"YulIdentifier","src":"23285:5:87"}],"functionName":{"name":"mstore","nativeSrc":"23275:6:87","nodeType":"YulIdentifier","src":"23275:6:87"},"nativeSrc":"23275:16:87","nodeType":"YulFunctionCall","src":"23275:16:87"},"nativeSrc":"23275:16:87","nodeType":"YulExpressionStatement","src":"23275:16:87"},{"nativeSrc":"23304:30:87","nodeType":"YulVariableDeclaration","src":"23304:30:87","value":{"arguments":[{"kind":"number","nativeSrc":"23326:1:87","nodeType":"YulLiteral","src":"23326:1:87","type":"","value":"0"},{"kind":"number","nativeSrc":"23329:4:87","nodeType":"YulLiteral","src":"23329:4:87","type":"","value":"0x20"}],"functionName":{"name":"keccak256","nativeSrc":"23316:9:87","nodeType":"YulIdentifier","src":"23316:9:87"},"nativeSrc":"23316:18:87","nodeType":"YulFunctionCall","src":"23316:18:87"},"variables":[{"name":"data","nativeSrc":"23308:4:87","nodeType":"YulTypedName","src":"23308:4:87","type":""}]},{"nativeSrc":"23347:57:87","nodeType":"YulVariableDeclaration","src":"23347:57:87","value":{"arguments":[{"name":"data","nativeSrc":"23370:4:87","nodeType":"YulIdentifier","src":"23370:4:87"},{"arguments":[{"kind":"number","nativeSrc":"23380:1:87","nodeType":"YulLiteral","src":"23380:1:87","type":"","value":"5"},{"arguments":[{"name":"startIndex","nativeSrc":"23387:10:87","nodeType":"YulIdentifier","src":"23387:10:87"},{"kind":"number","nativeSrc":"23399:2:87","nodeType":"YulLiteral","src":"23399:2:87","type":"","value":"31"}],"functionName":{"name":"add","nativeSrc":"23383:3:87","nodeType":"YulIdentifier","src":"23383:3:87"},"nativeSrc":"23383:19:87","nodeType":"YulFunctionCall","src":"23383:19:87"}],"functionName":{"name":"shr","nativeSrc":"23376:3:87","nodeType":"YulIdentifier","src":"23376:3:87"},"nativeSrc":"23376:27:87","nodeType":"YulFunctionCall","src":"23376:27:87"}],"functionName":{"name":"add","nativeSrc":"23366:3:87","nodeType":"YulIdentifier","src":"23366:3:87"},"nativeSrc":"23366:38:87","nodeType":"YulFunctionCall","src":"23366:38:87"},"variables":[{"name":"deleteStart","nativeSrc":"23351:11:87","nodeType":"YulTypedName","src":"23351:11:87","type":""}]},{"body":{"nativeSrc":"23441:23:87","nodeType":"YulBlock","src":"23441:23:87","statements":[{"nativeSrc":"23443:19:87","nodeType":"YulAssignment","src":"23443:19:87","value":{"name":"data","nativeSrc":"23458:4:87","nodeType":"YulIdentifier","src":"23458:4:87"},"variableNames":[{"name":"deleteStart","nativeSrc":"23443:11:87","nodeType":"YulIdentifier","src":"23443:11:87"}]}]},"condition":{"arguments":[{"name":"startIndex","nativeSrc":"23423:10:87","nodeType":"YulIdentifier","src":"23423:10:87"},{"kind":"number","nativeSrc":"23435:4:87","nodeType":"YulLiteral","src":"23435:4:87","type":"","value":"0x20"}],"functionName":{"name":"lt","nativeSrc":"23420:2:87","nodeType":"YulIdentifier","src":"23420:2:87"},"nativeSrc":"23420:20:87","nodeType":"YulFunctionCall","src":"23420:20:87"},"nativeSrc":"23417:47:87","nodeType":"YulIf","src":"23417:47:87"},{"nativeSrc":"23477:41:87","nodeType":"YulVariableDeclaration","src":"23477:41:87","value":{"arguments":[{"name":"data","nativeSrc":"23491:4:87","nodeType":"YulIdentifier","src":"23491:4:87"},{"arguments":[{"kind":"number","nativeSrc":"23501:1:87","nodeType":"YulLiteral","src":"23501:1:87","type":"","value":"5"},{"arguments":[{"name":"len","nativeSrc":"23508:3:87","nodeType":"YulIdentifier","src":"23508:3:87"},{"kind":"number","nativeSrc":"23513:2:87","nodeType":"YulLiteral","src":"23513:2:87","type":"","value":"31"}],"functionName":{"name":"add","nativeSrc":"23504:3:87","nodeType":"YulIdentifier","src":"23504:3:87"},"nativeSrc":"23504:12:87","nodeType":"YulFunctionCall","src":"23504:12:87"}],"functionName":{"name":"shr","nativeSrc":"23497:3:87","nodeType":"YulIdentifier","src":"23497:3:87"},"nativeSrc":"23497:20:87","nodeType":"YulFunctionCall","src":"23497:20:87"}],"functionName":{"name":"add","nativeSrc":"23487:3:87","nodeType":"YulIdentifier","src":"23487:3:87"},"nativeSrc":"23487:31:87","nodeType":"YulFunctionCall","src":"23487:31:87"},"variables":[{"name":"_1","nativeSrc":"23481:2:87","nodeType":"YulTypedName","src":"23481:2:87","type":""}]},{"nativeSrc":"23531:24:87","nodeType":"YulVariableDeclaration","src":"23531:24:87","value":{"name":"deleteStart","nativeSrc":"23544:11:87","nodeType":"YulIdentifier","src":"23544:11:87"},"variables":[{"name":"start","nativeSrc":"23535:5:87","nodeType":"YulTypedName","src":"23535:5:87","type":""}]},{"body":{"nativeSrc":"23629:20:87","nodeType":"YulBlock","src":"23629:20:87","statements":[{"expression":{"arguments":[{"name":"start","nativeSrc":"23638:5:87","nodeType":"YulIdentifier","src":"23638:5:87"},{"kind":"number","nativeSrc":"23645:1:87","nodeType":"YulLiteral","src":"23645:1:87","type":"","value":"0"}],"functionName":{"name":"sstore","nativeSrc":"23631:6:87","nodeType":"YulIdentifier","src":"23631:6:87"},"nativeSrc":"23631:16:87","nodeType":"YulFunctionCall","src":"23631:16:87"},"nativeSrc":"23631:16:87","nodeType":"YulExpressionStatement","src":"23631:16:87"}]},"condition":{"arguments":[{"name":"start","nativeSrc":"23579:5:87","nodeType":"YulIdentifier","src":"23579:5:87"},{"name":"_1","nativeSrc":"23586:2:87","nodeType":"YulIdentifier","src":"23586:2:87"}],"functionName":{"name":"lt","nativeSrc":"23576:2:87","nodeType":"YulIdentifier","src":"23576:2:87"},"nativeSrc":"23576:13:87","nodeType":"YulFunctionCall","src":"23576:13:87"},"nativeSrc":"23568:81:87","nodeType":"YulForLoop","post":{"nativeSrc":"23590:26:87","nodeType":"YulBlock","src":"23590:26:87","statements":[{"nativeSrc":"23592:22:87","nodeType":"YulAssignment","src":"23592:22:87","value":{"arguments":[{"name":"start","nativeSrc":"23605:5:87","nodeType":"YulIdentifier","src":"23605:5:87"},{"kind":"number","nativeSrc":"23612:1:87","nodeType":"YulLiteral","src":"23612:1:87","type":"","value":"1"}],"functionName":{"name":"add","nativeSrc":"23601:3:87","nodeType":"YulIdentifier","src":"23601:3:87"},"nativeSrc":"23601:13:87","nodeType":"YulFunctionCall","src":"23601:13:87"},"variableNames":[{"name":"start","nativeSrc":"23592:5:87","nodeType":"YulIdentifier","src":"23592:5:87"}]}]},"pre":{"nativeSrc":"23572:3:87","nodeType":"YulBlock","src":"23572:3:87","statements":[]},"src":"23568:81:87"}]},"condition":{"arguments":[{"name":"len","nativeSrc":"23244:3:87","nodeType":"YulIdentifier","src":"23244:3:87"},{"kind":"number","nativeSrc":"23249:2:87","nodeType":"YulLiteral","src":"23249:2:87","type":"","value":"31"}],"functionName":{"name":"gt","nativeSrc":"23241:2:87","nodeType":"YulIdentifier","src":"23241:2:87"},"nativeSrc":"23241:11:87","nodeType":"YulFunctionCall","src":"23241:11:87"},"nativeSrc":"23238:421:87","nodeType":"YulIf","src":"23238:421:87"}]},"name":"clean_up_bytearray_end_slots_string_storage","nativeSrc":"23147:518:87","nodeType":"YulFunctionDefinition","parameters":[{"name":"array","nativeSrc":"23200:5:87","nodeType":"YulTypedName","src":"23200:5:87","type":""},{"name":"len","nativeSrc":"23207:3:87","nodeType":"YulTypedName","src":"23207:3:87","type":""},{"name":"startIndex","nativeSrc":"23212:10:87","nodeType":"YulTypedName","src":"23212:10:87","type":""}],"src":"23147:518:87"},{"body":{"nativeSrc":"23755:81:87","nodeType":"YulBlock","src":"23755:81:87","statements":[{"nativeSrc":"23765:65:87","nodeType":"YulAssignment","src":"23765:65:87","value":{"arguments":[{"arguments":[{"name":"data","nativeSrc":"23780:4:87","nodeType":"YulIdentifier","src":"23780:4:87"},{"arguments":[{"arguments":[{"arguments":[{"kind":"number","nativeSrc":"23798:1:87","nodeType":"YulLiteral","src":"23798:1:87","type":"","value":"3"},{"name":"len","nativeSrc":"23801:3:87","nodeType":"YulIdentifier","src":"23801:3:87"}],"functionName":{"name":"shl","nativeSrc":"23794:3:87","nodeType":"YulIdentifier","src":"23794:3:87"},"nativeSrc":"23794:11:87","nodeType":"YulFunctionCall","src":"23794:11:87"},{"arguments":[{"kind":"number","nativeSrc":"23811:1:87","nodeType":"YulLiteral","src":"23811:1:87","type":"","value":"0"}],"functionName":{"name":"not","nativeSrc":"23807:3:87","nodeType":"YulIdentifier","src":"23807:3:87"},"nativeSrc":"23807:6:87","nodeType":"YulFunctionCall","src":"23807:6:87"}],"functionName":{"name":"shr","nativeSrc":"23790:3:87","nodeType":"YulIdentifier","src":"23790:3:87"},"nativeSrc":"23790:24:87","nodeType":"YulFunctionCall","src":"23790:24:87"}],"functionName":{"name":"not","nativeSrc":"23786:3:87","nodeType":"YulIdentifier","src":"23786:3:87"},"nativeSrc":"23786:29:87","nodeType":"YulFunctionCall","src":"23786:29:87"}],"functionName":{"name":"and","nativeSrc":"23776:3:87","nodeType":"YulIdentifier","src":"23776:3:87"},"nativeSrc":"23776:40:87","nodeType":"YulFunctionCall","src":"23776:40:87"},{"arguments":[{"kind":"number","nativeSrc":"23822:1:87","nodeType":"YulLiteral","src":"23822:1:87","type":"","value":"1"},{"name":"len","nativeSrc":"23825:3:87","nodeType":"YulIdentifier","src":"23825:3:87"}],"functionName":{"name":"shl","nativeSrc":"23818:3:87","nodeType":"YulIdentifier","src":"23818:3:87"},"nativeSrc":"23818:11:87","nodeType":"YulFunctionCall","src":"23818:11:87"}],"functionName":{"name":"or","nativeSrc":"23773:2:87","nodeType":"YulIdentifier","src":"23773:2:87"},"nativeSrc":"23773:57:87","nodeType":"YulFunctionCall","src":"23773:57:87"},"variableNames":[{"name":"used","nativeSrc":"23765:4:87","nodeType":"YulIdentifier","src":"23765:4:87"}]}]},"name":"extract_used_part_and_set_length_of_short_byte_array","nativeSrc":"23670:166:87","nodeType":"YulFunctionDefinition","parameters":[{"name":"data","nativeSrc":"23732:4:87","nodeType":"YulTypedName","src":"23732:4:87","type":""},{"name":"len","nativeSrc":"23738:3:87","nodeType":"YulTypedName","src":"23738:3:87","type":""}],"returnVariables":[{"name":"used","nativeSrc":"23746:4:87","nodeType":"YulTypedName","src":"23746:4:87","type":""}],"src":"23670:166:87"},{"body":{"nativeSrc":"23937:1203:87","nodeType":"YulBlock","src":"23937:1203:87","statements":[{"nativeSrc":"23947:24:87","nodeType":"YulVariableDeclaration","src":"23947:24:87","value":{"arguments":[{"name":"src","nativeSrc":"23967:3:87","nodeType":"YulIdentifier","src":"23967:3:87"}],"functionName":{"name":"mload","nativeSrc":"23961:5:87","nodeType":"YulIdentifier","src":"23961:5:87"},"nativeSrc":"23961:10:87","nodeType":"YulFunctionCall","src":"23961:10:87"},"variables":[{"name":"newLen","nativeSrc":"23951:6:87","nodeType":"YulTypedName","src":"23951:6:87","type":""}]},{"body":{"nativeSrc":"24014:22:87","nodeType":"YulBlock","src":"24014:22:87","statements":[{"expression":{"arguments":[],"functionName":{"name":"panic_error_0x41","nativeSrc":"24016:16:87","nodeType":"YulIdentifier","src":"24016:16:87"},"nativeSrc":"24016:18:87","nodeType":"YulFunctionCall","src":"24016:18:87"},"nativeSrc":"24016:18:87","nodeType":"YulExpressionStatement","src":"24016:18:87"}]},"condition":{"arguments":[{"name":"newLen","nativeSrc":"23986:6:87","nodeType":"YulIdentifier","src":"23986:6:87"},{"kind":"number","nativeSrc":"23994:18:87","nodeType":"YulLiteral","src":"23994:18:87","type":"","value":"0xffffffffffffffff"}],"functionName":{"name":"gt","nativeSrc":"23983:2:87","nodeType":"YulIdentifier","src":"23983:2:87"},"nativeSrc":"23983:30:87","nodeType":"YulFunctionCall","src":"23983:30:87"},"nativeSrc":"23980:56:87","nodeType":"YulIf","src":"23980:56:87"},{"expression":{"arguments":[{"name":"slot","nativeSrc":"24089:4:87","nodeType":"YulIdentifier","src":"24089:4:87"},{"arguments":[{"arguments":[{"name":"slot","nativeSrc":"24127:4:87","nodeType":"YulIdentifier","src":"24127:4:87"}],"functionName":{"name":"sload","nativeSrc":"24121:5:87","nodeType":"YulIdentifier","src":"24121:5:87"},"nativeSrc":"24121:11:87","nodeType":"YulFunctionCall","src":"24121:11:87"}],"functionName":{"name":"extract_byte_array_length","nativeSrc":"24095:25:87","nodeType":"YulIdentifier","src":"24095:25:87"},"nativeSrc":"24095:38:87","nodeType":"YulFunctionCall","src":"24095:38:87"},{"name":"newLen","nativeSrc":"24135:6:87","nodeType":"YulIdentifier","src":"24135:6:87"}],"functionName":{"name":"clean_up_bytearray_end_slots_string_storage","nativeSrc":"24045:43:87","nodeType":"YulIdentifier","src":"24045:43:87"},"nativeSrc":"24045:97:87","nodeType":"YulFunctionCall","src":"24045:97:87"},"nativeSrc":"24045:97:87","nodeType":"YulExpressionStatement","src":"24045:97:87"},{"nativeSrc":"24151:18:87","nodeType":"YulVariableDeclaration","src":"24151:18:87","value":{"kind":"number","nativeSrc":"24168:1:87","nodeType":"YulLiteral","src":"24168:1:87","type":"","value":"0"},"variables":[{"name":"srcOffset","nativeSrc":"24155:9:87","nodeType":"YulTypedName","src":"24155:9:87","type":""}]},{"nativeSrc":"24178:17:87","nodeType":"YulAssignment","src":"24178:17:87","value":{"kind":"number","nativeSrc":"24191:4:87","nodeType":"YulLiteral","src":"24191:4:87","type":"","value":"0x20"},"variableNames":[{"name":"srcOffset","nativeSrc":"24178:9:87","nodeType":"YulIdentifier","src":"24178:9:87"}]},{"cases":[{"body":{"nativeSrc":"24241:642:87","nodeType":"YulBlock","src":"24241:642:87","statements":[{"nativeSrc":"24255:35:87","nodeType":"YulVariableDeclaration","src":"24255:35:87","value":{"arguments":[{"name":"newLen","nativeSrc":"24274:6:87","nodeType":"YulIdentifier","src":"24274:6:87"},{"arguments":[{"kind":"number","nativeSrc":"24286:2:87","nodeType":"YulLiteral","src":"24286:2:87","type":"","value":"31"}],"functionName":{"name":"not","nativeSrc":"24282:3:87","nodeType":"YulIdentifier","src":"24282:3:87"},"nativeSrc":"24282:7:87","nodeType":"YulFunctionCall","src":"24282:7:87"}],"functionName":{"name":"and","nativeSrc":"24270:3:87","nodeType":"YulIdentifier","src":"24270:3:87"},"nativeSrc":"24270:20:87","nodeType":"YulFunctionCall","src":"24270:20:87"},"variables":[{"name":"loopEnd","nativeSrc":"24259:7:87","nodeType":"YulTypedName","src":"24259:7:87","type":""}]},{"nativeSrc":"24303:49:87","nodeType":"YulVariableDeclaration","src":"24303:49:87","value":{"arguments":[{"name":"slot","nativeSrc":"24347:4:87","nodeType":"YulIdentifier","src":"24347:4:87"}],"functionName":{"name":"array_dataslot_string_storage","nativeSrc":"24317:29:87","nodeType":"YulIdentifier","src":"24317:29:87"},"nativeSrc":"24317:35:87","nodeType":"YulFunctionCall","src":"24317:35:87"},"variables":[{"name":"dstPtr","nativeSrc":"24307:6:87","nodeType":"YulTypedName","src":"24307:6:87","type":""}]},{"nativeSrc":"24365:10:87","nodeType":"YulVariableDeclaration","src":"24365:10:87","value":{"kind":"number","nativeSrc":"24374:1:87","nodeType":"YulLiteral","src":"24374:1:87","type":"","value":"0"},"variables":[{"name":"i","nativeSrc":"24369:1:87","nodeType":"YulTypedName","src":"24369:1:87","type":""}]},{"body":{"nativeSrc":"24445:165:87","nodeType":"YulBlock","src":"24445:165:87","statements":[{"expression":{"arguments":[{"name":"dstPtr","nativeSrc":"24470:6:87","nodeType":"YulIdentifier","src":"24470:6:87"},{"arguments":[{"arguments":[{"name":"src","nativeSrc":"24488:3:87","nodeType":"YulIdentifier","src":"24488:3:87"},{"name":"srcOffset","nativeSrc":"24493:9:87","nodeType":"YulIdentifier","src":"24493:9:87"}],"functionName":{"name":"add","nativeSrc":"24484:3:87","nodeType":"YulIdentifier","src":"24484:3:87"},"nativeSrc":"24484:19:87","nodeType":"YulFunctionCall","src":"24484:19:87"}],"functionName":{"name":"mload","nativeSrc":"24478:5:87","nodeType":"YulIdentifier","src":"24478:5:87"},"nativeSrc":"24478:26:87","nodeType":"YulFunctionCall","src":"24478:26:87"}],"functionName":{"name":"sstore","nativeSrc":"24463:6:87","nodeType":"YulIdentifier","src":"24463:6:87"},"nativeSrc":"24463:42:87","nodeType":"YulFunctionCall","src":"24463:42:87"},"nativeSrc":"24463:42:87","nodeType":"YulExpressionStatement","src":"24463:42:87"},{"nativeSrc":"24522:24:87","nodeType":"YulAssignment","src":"24522:24:87","value":{"arguments":[{"name":"dstPtr","nativeSrc":"24536:6:87","nodeType":"YulIdentifier","src":"24536:6:87"},{"kind":"number","nativeSrc":"24544:1:87","nodeType":"YulLiteral","src":"24544:1:87","type":"","value":"1"}],"functionName":{"name":"add","nativeSrc":"24532:3:87","nodeType":"YulIdentifier","src":"24532:3:87"},"nativeSrc":"24532:14:87","nodeType":"YulFunctionCall","src":"24532:14:87"},"variableNames":[{"name":"dstPtr","nativeSrc":"24522:6:87","nodeType":"YulIdentifier","src":"24522:6:87"}]},{"nativeSrc":"24563:33:87","nodeType":"YulAssignment","src":"24563:33:87","value":{"arguments":[{"name":"srcOffset","nativeSrc":"24580:9:87","nodeType":"YulIdentifier","src":"24580:9:87"},{"kind":"number","nativeSrc":"24591:4:87","nodeType":"YulLiteral","src":"24591:4:87","type":"","value":"0x20"}],"functionName":{"name":"add","nativeSrc":"24576:3:87","nodeType":"YulIdentifier","src":"24576:3:87"},"nativeSrc":"24576:20:87","nodeType":"YulFunctionCall","src":"24576:20:87"},"variableNames":[{"name":"srcOffset","nativeSrc":"24563:9:87","nodeType":"YulIdentifier","src":"24563:9:87"}]}]},"condition":{"arguments":[{"name":"i","nativeSrc":"24399:1:87","nodeType":"YulIdentifier","src":"24399:1:87"},{"name":"loopEnd","nativeSrc":"24402:7:87","nodeType":"YulIdentifier","src":"24402:7:87"}],"functionName":{"name":"lt","nativeSrc":"24396:2:87","nodeType":"YulIdentifier","src":"24396:2:87"},"nativeSrc":"24396:14:87","nodeType":"YulFunctionCall","src":"24396:14:87"},"nativeSrc":"24388:222:87","nodeType":"YulForLoop","post":{"nativeSrc":"24411:21:87","nodeType":"YulBlock","src":"24411:21:87","statements":[{"nativeSrc":"24413:17:87","nodeType":"YulAssignment","src":"24413:17:87","value":{"arguments":[{"name":"i","nativeSrc":"24422:1:87","nodeType":"YulIdentifier","src":"24422:1:87"},{"kind":"number","nativeSrc":"24425:4:87","nodeType":"YulLiteral","src":"24425:4:87","type":"","value":"0x20"}],"functionName":{"name":"add","nativeSrc":"24418:3:87","nodeType":"YulIdentifier","src":"24418:3:87"},"nativeSrc":"24418:12:87","nodeType":"YulFunctionCall","src":"24418:12:87"},"variableNames":[{"name":"i","nativeSrc":"24413:1:87","nodeType":"YulIdentifier","src":"24413:1:87"}]}]},"pre":{"nativeSrc":"24392:3:87","nodeType":"YulBlock","src":"24392:3:87","statements":[]},"src":"24388:222:87"},{"body":{"nativeSrc":"24658:166:87","nodeType":"YulBlock","src":"24658:166:87","statements":[{"nativeSrc":"24676:43:87","nodeType":"YulVariableDeclaration","src":"24676:43:87","value":{"arguments":[{"arguments":[{"name":"src","nativeSrc":"24703:3:87","nodeType":"YulIdentifier","src":"24703:3:87"},{"name":"srcOffset","nativeSrc":"24708:9:87","nodeType":"YulIdentifier","src":"24708:9:87"}],"functionName":{"name":"add","nativeSrc":"24699:3:87","nodeType":"YulIdentifier","src":"24699:3:87"},"nativeSrc":"24699:19:87","nodeType":"YulFunctionCall","src":"24699:19:87"}],"functionName":{"name":"mload","nativeSrc":"24693:5:87","nodeType":"YulIdentifier","src":"24693:5:87"},"nativeSrc":"24693:26:87","nodeType":"YulFunctionCall","src":"24693:26:87"},"variables":[{"name":"lastValue","nativeSrc":"24680:9:87","nodeType":"YulTypedName","src":"24680:9:87","type":""}]},{"expression":{"arguments":[{"name":"dstPtr","nativeSrc":"24743:6:87","nodeType":"YulIdentifier","src":"24743:6:87"},{"arguments":[{"name":"lastValue","nativeSrc":"24755:9:87","nodeType":"YulIdentifier","src":"24755:9:87"},{"arguments":[{"arguments":[{"arguments":[{"arguments":[{"kind":"number","nativeSrc":"24782:1:87","nodeType":"YulLiteral","src":"24782:1:87","type":"","value":"3"},{"name":"newLen","nativeSrc":"24785:6:87","nodeType":"YulIdentifier","src":"24785:6:87"}],"functionName":{"name":"shl","nativeSrc":"24778:3:87","nodeType":"YulIdentifier","src":"24778:3:87"},"nativeSrc":"24778:14:87","nodeType":"YulFunctionCall","src":"24778:14:87"},{"kind":"number","nativeSrc":"24794:3:87","nodeType":"YulLiteral","src":"24794:3:87","type":"","value":"248"}],"functionName":{"name":"and","nativeSrc":"24774:3:87","nodeType":"YulIdentifier","src":"24774:3:87"},"nativeSrc":"24774:24:87","nodeType":"YulFunctionCall","src":"24774:24:87"},{"arguments":[{"kind":"number","nativeSrc":"24804:1:87","nodeType":"YulLiteral","src":"24804:1:87","type":"","value":"0"}],"functionName":{"name":"not","nativeSrc":"24800:3:87","nodeType":"YulIdentifier","src":"24800:3:87"},"nativeSrc":"24800:6:87","nodeType":"YulFunctionCall","src":"24800:6:87"}],"functionName":{"name":"shr","nativeSrc":"24770:3:87","nodeType":"YulIdentifier","src":"24770:3:87"},"nativeSrc":"24770:37:87","nodeType":"YulFunctionCall","src":"24770:37:87"}],"functionName":{"name":"not","nativeSrc":"24766:3:87","nodeType":"YulIdentifier","src":"24766:3:87"},"nativeSrc":"24766:42:87","nodeType":"YulFunctionCall","src":"24766:42:87"}],"functionName":{"name":"and","nativeSrc":"24751:3:87","nodeType":"YulIdentifier","src":"24751:3:87"},"nativeSrc":"24751:58:87","nodeType":"YulFunctionCall","src":"24751:58:87"}],"functionName":{"name":"sstore","nativeSrc":"24736:6:87","nodeType":"YulIdentifier","src":"24736:6:87"},"nativeSrc":"24736:74:87","nodeType":"YulFunctionCall","src":"24736:74:87"},"nativeSrc":"24736:74:87","nodeType":"YulExpressionStatement","src":"24736:74:87"}]},"condition":{"arguments":[{"name":"loopEnd","nativeSrc":"24629:7:87","nodeType":"YulIdentifier","src":"24629:7:87"},{"name":"newLen","nativeSrc":"24638:6:87","nodeType":"YulIdentifier","src":"24638:6:87"}],"functionName":{"name":"lt","nativeSrc":"24626:2:87","nodeType":"YulIdentifier","src":"24626:2:87"},"nativeSrc":"24626:19:87","nodeType":"YulFunctionCall","src":"24626:19:87"},"nativeSrc":"24623:201:87","nodeType":"YulIf","src":"24623:201:87"},{"expression":{"arguments":[{"name":"slot","nativeSrc":"24844:4:87","nodeType":"YulIdentifier","src":"24844:4:87"},{"arguments":[{"arguments":[{"kind":"number","nativeSrc":"24858:1:87","nodeType":"YulLiteral","src":"24858:1:87","type":"","value":"1"},{"name":"newLen","nativeSrc":"24861:6:87","nodeType":"YulIdentifier","src":"24861:6:87"}],"functionName":{"name":"shl","nativeSrc":"24854:3:87","nodeType":"YulIdentifier","src":"24854:3:87"},"nativeSrc":"24854:14:87","nodeType":"YulFunctionCall","src":"24854:14:87"},{"kind":"number","nativeSrc":"24870:1:87","nodeType":"YulLiteral","src":"24870:1:87","type":"","value":"1"}],"functionName":{"name":"add","nativeSrc":"24850:3:87","nodeType":"YulIdentifier","src":"24850:3:87"},"nativeSrc":"24850:22:87","nodeType":"YulFunctionCall","src":"24850:22:87"}],"functionName":{"name":"sstore","nativeSrc":"24837:6:87","nodeType":"YulIdentifier","src":"24837:6:87"},"nativeSrc":"24837:36:87","nodeType":"YulFunctionCall","src":"24837:36:87"},"nativeSrc":"24837:36:87","nodeType":"YulExpressionStatement","src":"24837:36:87"}]},"nativeSrc":"24234:649:87","nodeType":"YulCase","src":"24234:649:87","value":{"kind":"number","nativeSrc":"24239:1:87","nodeType":"YulLiteral","src":"24239:1:87","type":"","value":"1"}},{"body":{"nativeSrc":"24900:234:87","nodeType":"YulBlock","src":"24900:234:87","statements":[{"nativeSrc":"24914:14:87","nodeType":"YulVariableDeclaration","src":"24914:14:87","value":{"kind":"number","nativeSrc":"24927:1:87","nodeType":"YulLiteral","src":"24927:1:87","type":"","value":"0"},"variables":[{"name":"value","nativeSrc":"24918:5:87","nodeType":"YulTypedName","src":"24918:5:87","type":""}]},{"body":{"nativeSrc":"24963:67:87","nodeType":"YulBlock","src":"24963:67:87","statements":[{"nativeSrc":"24981:35:87","nodeType":"YulAssignment","src":"24981:35:87","value":{"arguments":[{"arguments":[{"name":"src","nativeSrc":"25000:3:87","nodeType":"YulIdentifier","src":"25000:3:87"},{"name":"srcOffset","nativeSrc":"25005:9:87","nodeType":"YulIdentifier","src":"25005:9:87"}],"functionName":{"name":"add","nativeSrc":"24996:3:87","nodeType":"YulIdentifier","src":"24996:3:87"},"nativeSrc":"24996:19:87","nodeType":"YulFunctionCall","src":"24996:19:87"}],"functionName":{"name":"mload","nativeSrc":"24990:5:87","nodeType":"YulIdentifier","src":"24990:5:87"},"nativeSrc":"24990:26:87","nodeType":"YulFunctionCall","src":"24990:26:87"},"variableNames":[{"name":"value","nativeSrc":"24981:5:87","nodeType":"YulIdentifier","src":"24981:5:87"}]}]},"condition":{"name":"newLen","nativeSrc":"24944:6:87","nodeType":"YulIdentifier","src":"24944:6:87"},"nativeSrc":"24941:89:87","nodeType":"YulIf","src":"24941:89:87"},{"expression":{"arguments":[{"name":"slot","nativeSrc":"25050:4:87","nodeType":"YulIdentifier","src":"25050:4:87"},{"arguments":[{"name":"value","nativeSrc":"25109:5:87","nodeType":"YulIdentifier","src":"25109:5:87"},{"name":"newLen","nativeSrc":"25116:6:87","nodeType":"YulIdentifier","src":"25116:6:87"}],"functionName":{"name":"extract_used_part_and_set_length_of_short_byte_array","nativeSrc":"25056:52:87","nodeType":"YulIdentifier","src":"25056:52:87"},"nativeSrc":"25056:67:87","nodeType":"YulFunctionCall","src":"25056:67:87"}],"functionName":{"name":"sstore","nativeSrc":"25043:6:87","nodeType":"YulIdentifier","src":"25043:6:87"},"nativeSrc":"25043:81:87","nodeType":"YulFunctionCall","src":"25043:81:87"},"nativeSrc":"25043:81:87","nodeType":"YulExpressionStatement","src":"25043:81:87"}]},"nativeSrc":"24892:242:87","nodeType":"YulCase","src":"24892:242:87","value":"default"}],"expression":{"arguments":[{"name":"newLen","nativeSrc":"24214:6:87","nodeType":"YulIdentifier","src":"24214:6:87"},{"kind":"number","nativeSrc":"24222:2:87","nodeType":"YulLiteral","src":"24222:2:87","type":"","value":"31"}],"functionName":{"name":"gt","nativeSrc":"24211:2:87","nodeType":"YulIdentifier","src":"24211:2:87"},"nativeSrc":"24211:14:87","nodeType":"YulFunctionCall","src":"24211:14:87"},"nativeSrc":"24204:930:87","nodeType":"YulSwitch","src":"24204:930:87"}]},"name":"copy_byte_array_to_storage_from_t_string_memory_ptr_to_t_string_storage","nativeSrc":"23841:1299:87","nodeType":"YulFunctionDefinition","parameters":[{"name":"slot","nativeSrc":"23922:4:87","nodeType":"YulTypedName","src":"23922:4:87","type":""},{"name":"src","nativeSrc":"23928:3:87","nodeType":"YulTypedName","src":"23928:3:87","type":""}],"src":"23841:1299:87"}]},"contents":"{\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_string(value, pos) -> end\n    {\n        let length := mload(value)\n        mstore(pos, length)\n        mcopy(add(pos, 0x20), add(value, 0x20), length)\n        mstore(add(add(pos, length), 0x20), 0)\n        end := add(add(pos, and(add(length, 31), not(31))), 0x20)\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_string(value0, 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        let value := 0\n        value := calldataload(headStart)\n        value0 := value\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    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        let value_1 := 0\n        value_1 := calldataload(add(headStart, 32))\n        value1 := value_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_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        let value_2 := 0\n        value_2 := calldataload(add(headStart, 64))\n        value2 := value_2\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 abi_encode_tuple_t_address__to_t_address__fromStack_reversed(headStart, value0) -> tail\n    {\n        tail := add(headStart, 32)\n        mstore(headStart, and(value0, sub(shl(160, 1), 1)))\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 panic_error_0x41()\n    {\n        mstore(0, shl(224, 0x4e487b71))\n        mstore(4, 0x41)\n        revert(0, 0x24)\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, 0xffffffffffffffff), lt(newFreePtr, memPtr)) { panic_error_0x41() }\n        mstore(64, newFreePtr)\n    }\n    function abi_decode_bytes(offset, end) -> array\n    {\n        if iszero(slt(add(offset, 0x1f), end)) { revert(0, 0) }\n        let length := calldataload(offset)\n        let src := add(offset, 0x20)\n        let array_1 := 0\n        let size := 0\n        if gt(length, 0xffffffffffffffff) { panic_error_0x41() }\n        size := add(and(add(length, 31), not(31)), 0x20)\n        array_1 := allocate_memory(size)\n        mstore(array_1, length)\n        if gt(add(src, length), end) { revert(0, 0) }\n        calldatacopy(add(array_1, 0x20), src, length)\n        mstore(add(add(array_1, length), 0x20), 0)\n        array := array_1\n    }\n    function abi_decode_tuple_t_uint8t_uint8t_bytes_memory_ptr(headStart, dataEnd) -> value0, value1, value2\n    {\n        if slt(sub(dataEnd, headStart), 96) { revert(0, 0) }\n        value0 := abi_decode_uint8(headStart)\n        value1 := abi_decode_uint8(add(headStart, 32))\n        let offset := calldataload(add(headStart, 64))\n        if gt(offset, 0xffffffffffffffff) { revert(0, 0) }\n        value2 := abi_decode_bytes(add(headStart, offset), dataEnd)\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_string(value0, add(headStart, 32))\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_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_addresst_bytes_memory_ptr(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 offset := calldataload(add(headStart, 32))\n        if gt(offset, 0xffffffffffffffff) { revert(0, 0) }\n        value1 := abi_decode_bytes(add(headStart, offset), dataEnd)\n    }\n    function abi_encode_tuple_t_array$_t_uint8_$32_memory_ptr__to_t_array$_t_uint8_$32_memory_ptr__fromStack_reversed(headStart, value0) -> tail\n    {\n        tail := add(headStart, 1024)\n        let pos := headStart\n        pos := headStart\n        let srcPtr := value0\n        let i := 0\n        for { } lt(i, 0x20) { i := add(i, 1) }\n        {\n            mstore(pos, and(mload(srcPtr), 0xff))\n            pos := add(pos, 0x20)\n            srcPtr := add(srcPtr, 0x20)\n        }\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_decode_tuple_t_uint256t_address(headStart, dataEnd) -> value0, value1\n    {\n        if slt(sub(dataEnd, headStart), 64) { revert(0, 0) }\n        let value := 0\n        value := calldataload(headStart)\n        value0 := value\n        let value_1 := calldataload(add(headStart, 32))\n        validator_revert_address(value_1)\n        value1 := value_1\n    }\n    function validator_revert_bool(value)\n    {\n        if iszero(eq(value, iszero(iszero(value)))) { revert(0, 0) }\n    }\n    function abi_decode_tuple_t_uint8t_contract$_IInvestStrategy_$20725t_bytes_memory_ptrt_bool(headStart, dataEnd) -> value0, value1, value2, value3\n    {\n        if slt(sub(dataEnd, headStart), 128) { revert(0, 0) }\n        value0 := abi_decode_uint8(headStart)\n        let value := calldataload(add(headStart, 32))\n        validator_revert_address(value)\n        value1 := value\n        let offset := calldataload(add(headStart, 64))\n        if gt(offset, 0xffffffffffffffff) { revert(0, 0) }\n        value2 := abi_decode_bytes(add(headStart, offset), dataEnd)\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_contract$_IInvestStrategy_$20725t_bytes_memory_ptr(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 offset := calldataload(add(headStart, 32))\n        if gt(offset, 0xffffffffffffffff) { revert(0, 0) }\n        value1 := abi_decode_bytes(add(headStart, offset), dataEnd)\n    }\n    function abi_decode_tuple_t_uint8t_uint8(headStart, dataEnd) -> value0, value1\n    {\n        if slt(sub(dataEnd, headStart), 64) { revert(0, 0) }\n        value0 := abi_decode_uint8(headStart)\n        value1 := abi_decode_uint8(add(headStart, 32))\n    }\n    function abi_encode_tuple_t_bytes4__to_t_bytes4__fromStack_reversed(headStart, value0) -> tail\n    {\n        tail := add(headStart, 32)\n        mstore(headStart, and(value0, shl(224, 0xffffffff)))\n    }\n    function array_allocation_size_array_uint8_dyn(length) -> size\n    {\n        if gt(length, 0xffffffffffffffff) { panic_error_0x41() }\n        size := add(shl(5, length), 0x20)\n    }\n    function abi_decode_array_uint8_dyn(offset, end) -> array\n    {\n        if iszero(slt(add(offset, 0x1f), end)) { revert(0, 0) }\n        let length := calldataload(offset)\n        let dst := allocate_memory(array_allocation_size_array_uint8_dyn(length))\n        let array_1 := dst\n        mstore(dst, length)\n        dst := add(dst, 0x20)\n        let srcEnd := add(add(offset, shl(5, length)), 0x20)\n        if gt(srcEnd, end) { revert(0, 0) }\n        let src := add(offset, 0x20)\n        for { } lt(src, srcEnd) { src := add(src, 0x20) }\n        {\n            mstore(dst, abi_decode_uint8(src))\n            dst := add(dst, 0x20)\n        }\n        array := array_1\n    }\n    function abi_decode_tuple_t_array$_t_uint8_$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_uint8_dyn(add(headStart, offset), dataEnd)\n    }\n    function abi_decode_tuple_t_uint8t_bool(headStart, dataEnd) -> value0, value1\n    {\n        if slt(sub(dataEnd, headStart), 64) { revert(0, 0) }\n        value0 := abi_decode_uint8(headStart)\n        let value := calldataload(add(headStart, 32))\n        validator_revert_bool(value)\n        value1 := value\n    }\n    function abi_decode_contract_IERC20(offset) -> value\n    {\n        value := calldataload(offset)\n        validator_revert_address(value)\n    }\n    function abi_decode_array_contract_IInvestStrategy_dyn(offset, end) -> array\n    {\n        if iszero(slt(add(offset, 0x1f), end)) { revert(0, 0) }\n        let length := calldataload(offset)\n        let dst := allocate_memory(array_allocation_size_array_uint8_dyn(length))\n        let array_1 := dst\n        mstore(dst, length)\n        dst := add(dst, 0x20)\n        let srcEnd := add(add(offset, shl(5, length)), 0x20)\n        if gt(srcEnd, end) { revert(0, 0) }\n        let src := add(offset, 0x20)\n        for { } lt(src, srcEnd) { src := add(src, 0x20) }\n        {\n            let value := calldataload(src)\n            validator_revert_address(value)\n            mstore(dst, value)\n            dst := add(dst, 0x20)\n        }\n        array := array_1\n    }\n    function abi_decode_array_bytes_dyn(offset, end) -> array\n    {\n        if iszero(slt(add(offset, 0x1f), end)) { revert(0, 0) }\n        let length := calldataload(offset)\n        let dst := allocate_memory(array_allocation_size_array_uint8_dyn(length))\n        let array_1 := dst\n        mstore(dst, length)\n        dst := add(dst, 0x20)\n        let srcEnd := add(add(offset, shl(5, length)), 0x20)\n        if gt(srcEnd, end) { revert(0, 0) }\n        let src := add(offset, 0x20)\n        for { } lt(src, srcEnd) { src := add(src, 0x20) }\n        {\n            let innerOffset := calldataload(src)\n            if gt(innerOffset, 0xffffffffffffffff) { revert(0, 0) }\n            mstore(dst, abi_decode_bytes(add(add(offset, innerOffset), 0x20), end))\n            dst := add(dst, 0x20)\n        }\n        array := array_1\n    }\n    function abi_decode_tuple_t_string_memory_ptrt_string_memory_ptrt_contract$_IERC20_$8679t_array$_t_contract$_IInvestStrategy_$20725_$dyn_memory_ptrt_array$_t_bytes_memory_ptr_$dyn_memory_ptrt_array$_t_uint8_$dyn_memory_ptrt_array$_t_uint8_$dyn_memory_ptr(headStart, dataEnd) -> value0, value1, value2, value3, value4, value5, value6\n    {\n        if slt(sub(dataEnd, headStart), 224) { revert(0, 0) }\n        let offset := calldataload(headStart)\n        if gt(offset, 0xffffffffffffffff) { revert(0, 0) }\n        value0 := abi_decode_bytes(add(headStart, offset), dataEnd)\n        let offset_1 := calldataload(add(headStart, 32))\n        if gt(offset_1, 0xffffffffffffffff) { revert(0, 0) }\n        value1 := abi_decode_bytes(add(headStart, offset_1), dataEnd)\n        value2 := abi_decode_contract_IERC20(add(headStart, 64))\n        let offset_2 := calldataload(add(headStart, 96))\n        if gt(offset_2, 0xffffffffffffffff) { revert(0, 0) }\n        value3 := abi_decode_array_contract_IInvestStrategy_dyn(add(headStart, offset_2), dataEnd)\n        let offset_3 := calldataload(add(headStart, 128))\n        if gt(offset_3, 0xffffffffffffffff) { revert(0, 0) }\n        value4 := abi_decode_array_bytes_dyn(add(headStart, offset_3), dataEnd)\n        let offset_4 := calldataload(add(headStart, 160))\n        if gt(offset_4, 0xffffffffffffffff) { revert(0, 0) }\n        value5 := abi_decode_array_uint8_dyn(add(headStart, offset_4), dataEnd)\n        let offset_5 := calldataload(add(headStart, 192))\n        if gt(offset_5, 0xffffffffffffffff) { revert(0, 0) }\n        value6 := abi_decode_array_uint8_dyn(add(headStart, offset_5), dataEnd)\n    }\n    function abi_decode_tuple_t_uint256t_addresst_address(headStart, dataEnd) -> value0, value1, value2\n    {\n        if slt(sub(dataEnd, headStart), 96) { revert(0, 0) }\n        let value := 0\n        value := calldataload(headStart)\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    }\n    function abi_encode_tuple_t_array$_t_contract$_IInvestStrategy_$20725_$32_memory_ptr__to_t_array$_t_address_$32_memory_ptr__fromStack_reversed(headStart, value0) -> tail\n    {\n        tail := add(headStart, 1024)\n        let pos := headStart\n        pos := headStart\n        let srcPtr := value0\n        let i := 0\n        for { } lt(i, 0x20) { i := add(i, 1) }\n        {\n            mstore(pos, and(mload(srcPtr), sub(shl(160, 1), 1)))\n            pos := add(pos, 0x20)\n            srcPtr := add(srcPtr, 0x20)\n        }\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_uint8t_uint8t_uint256(headStart, dataEnd) -> value0, value1, value2\n    {\n        if slt(sub(dataEnd, headStart), 96) { revert(0, 0) }\n        value0 := abi_decode_uint8(headStart)\n        value1 := abi_decode_uint8(add(headStart, 32))\n        let value := 0\n        value := calldataload(add(headStart, 64))\n        value2 := value\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_0x11()\n    {\n        mstore(0, shl(224, 0x4e487b71))\n        mstore(4, 0x11)\n        revert(0, 0x24)\n    }\n    function checked_add_t_uint8(x, y) -> sum\n    {\n        sum := add(and(x, 0xff), and(y, 0xff))\n        if gt(sum, 0xff) { panic_error_0x11() }\n    }\n    function panic_error_0x32()\n    {\n        mstore(0, shl(224, 0x4e487b71))\n        mstore(4, 0x32)\n        revert(0, 0x24)\n    }\n    function abi_decode_tuple_t_bytes32_fromMemory(headStart, dataEnd) -> value0\n    {\n        if slt(sub(dataEnd, headStart), 32) { revert(0, 0) }\n        value0 := mload(headStart)\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 abi_encode_tuple_t_address_t_uint256_t_uint256__to_t_address_t_uint256_t_uint256__fromStack_reversed(headStart, value2, value1, value0) -> tail\n    {\n        tail := add(headStart, 96)\n        mstore(headStart, and(value0, sub(shl(160, 1), 1)))\n        mstore(add(headStart, 32), value1)\n        mstore(add(headStart, 64), value2)\n    }\n    function abi_encode_tuple_t_contract$_IInvestStrategy_$20725__to_t_address__fromStack_reversed(headStart, value0) -> tail\n    {\n        tail := add(headStart, 32)\n        mstore(headStart, and(value0, sub(shl(160, 1), 1)))\n    }\n    function checked_add_t_uint256(x, y) -> sum\n    {\n        sum := add(x, y)\n        if gt(x, sum) { panic_error_0x11() }\n    }\n    function abi_encode_tuple_t_address_t_uint8__to_t_address_t_uint8__fromStack_reversed(headStart, value1, value0) -> tail\n    {\n        tail := add(headStart, 64)\n        mstore(headStart, and(value0, sub(shl(160, 1), 1)))\n        mstore(add(headStart, 32), and(value1, 0xff))\n    }\n    function abi_encode_tuple_t_array$_t_uint8_$dyn_memory_ptr__to_t_array$_t_uint8_$dyn_memory_ptr__fromStack_reversed(headStart, value0) -> tail\n    {\n        let tail_1 := add(headStart, 32)\n        mstore(headStart, 32)\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, 32)\n        let i := 0\n        for { } lt(i, length) { i := add(i, 1) }\n        {\n            mstore(pos, and(mload(srcPtr), 0xff))\n            pos := add(pos, 32)\n            srcPtr := add(srcPtr, 32)\n        }\n        tail := pos\n    }\n    function checked_sub_t_uint256(x, y) -> diff\n    {\n        diff := sub(x, y)\n        if gt(diff, x) { panic_error_0x11() }\n    }\n    function checked_sub_t_uint8(x, y) -> diff\n    {\n        diff := sub(and(x, 0xff), and(y, 0xff))\n        if gt(diff, 0xff) { panic_error_0x11() }\n    }\n    function abi_encode_tuple_t_rational_1_by_1__to_t_uint64__fromStack_reversed(headStart, value0) -> tail\n    {\n        tail := add(headStart, 32)\n        mstore(headStart, and(value0, 0xffffffffffffffff))\n    }\n    function increment_t_uint8(value) -> ret\n    {\n        let value_1 := and(value, 0xff)\n        if eq(value_1, 0xff) { panic_error_0x11() }\n        ret := add(value_1, 1)\n    }\n    function checked_exp_helper(_base, exponent, max) -> power, base\n    {\n        power := 1\n        base := _base\n        for { } gt(exponent, 1) { }\n        {\n            if gt(base, div(max, base)) { panic_error_0x11() }\n            if and(exponent, 1) { power := mul(power, base) }\n            base := mul(base, base)\n            exponent := shr(1, exponent)\n        }\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            let _1 := 0\n            _1 := 0\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            let _2 := 0\n            _2 := 0\n            leave\n        }\n        let power_1, base_1 := checked_exp_helper(base, exponent, not(0))\n        if gt(power_1, div(not(0), base_1)) { panic_error_0x11() }\n        power := mul(power_1, base_1)\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 abi_decode_tuple_t_contract$_IAccessManager_$6842_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_encode_tuple_t_address_t_address_t_bytes4__to_t_address_t_address_t_bytes4__fromStack_reversed(headStart, value2, value1, value0) -> tail\n    {\n        tail := add(headStart, 96)\n        mstore(headStart, and(value0, sub(shl(160, 1), 1)))\n        mstore(add(headStart, 32), and(value1, sub(shl(160, 1), 1)))\n        mstore(add(headStart, 64), and(value2, shl(224, 0xffffffff)))\n    }\n    function abi_decode_tuple_t_boolt_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_bool(value)\n        value0 := value\n        let value_1 := mload(add(headStart, 32))\n        if iszero(eq(value_1, and(value_1, 0xffffffff))) { revert(0, 0) }\n        value1 := value_1\n    }\n    function abi_encode_tuple_t_uint8_t_bytes_memory_ptr__to_t_uint8_t_bytes_memory_ptr__fromStack_reversed(headStart, value1, value0) -> tail\n    {\n        mstore(headStart, and(value0, 0xff))\n        mstore(add(headStart, 32), 64)\n        tail := abi_encode_string(value1, add(headStart, 64))\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_contract$_IInvestStrategy_$20725_t_contract$_IInvestStrategy_$20725__to_t_address_t_address__fromStack_reversed(headStart, value1, value0) -> tail\n    {\n        tail := add(headStart, 64)\n        mstore(headStart, and(value0, sub(shl(160, 1), 1)))\n        mstore(add(headStart, 32), and(value1, sub(shl(160, 1), 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        let value := mload(headStart)\n        validator_revert_address(value)\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        mcopy(pos, add(value0, 0x20), length)\n        let _1 := add(pos, length)\n        mstore(_1, 0)\n        end := _1\n    }\n    function panic_error_0x12()\n    {\n        mstore(0, shl(224, 0x4e487b71))\n        mstore(4, 0x12)\n        revert(0, 0x24)\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 panic_error_0x21()\n    {\n        mstore(0, shl(224, 0x4e487b71))\n        mstore(4, 0x21)\n        revert(0, 0x24)\n    }\n    function mod_t_uint8(x, y) -> r\n    {\n        let y_1 := and(y, 0xff)\n        if iszero(y_1)\n        {\n            mstore(0, shl(224, 0x4e487b71))\n            mstore(4, 0x12)\n            revert(0, 0x24)\n        }\n        r := mod(and(x, 0xff), y_1)\n    }\n    function array_dataslot_string_storage(ptr) -> data\n    {\n        mstore(0, ptr)\n        data := keccak256(0, 0x20)\n    }\n    function clean_up_bytearray_end_slots_string_storage(array, len, startIndex)\n    {\n        if gt(len, 31)\n        {\n            mstore(0, array)\n            let data := keccak256(0, 0x20)\n            let deleteStart := add(data, shr(5, add(startIndex, 31)))\n            if lt(startIndex, 0x20) { deleteStart := data }\n            let _1 := add(data, shr(5, add(len, 31)))\n            let start := deleteStart\n            for { } lt(start, _1) { start := add(start, 1) }\n            { sstore(start, 0) }\n        }\n    }\n    function extract_used_part_and_set_length_of_short_byte_array(data, len) -> used\n    {\n        used := or(and(data, not(shr(shl(3, len), not(0)))), shl(1, len))\n    }\n    function copy_byte_array_to_storage_from_t_string_memory_ptr_to_t_string_storage(slot, src)\n    {\n        let newLen := mload(src)\n        if gt(newLen, 0xffffffffffffffff) { panic_error_0x41() }\n        clean_up_bytearray_end_slots_string_storage(slot, extract_byte_array_length(sload(slot)), newLen)\n        let srcOffset := 0\n        srcOffset := 0x20\n        switch gt(newLen, 31)\n        case 1 {\n            let loopEnd := and(newLen, not(31))\n            let dstPtr := array_dataslot_string_storage(slot)\n            let i := 0\n            for { } lt(i, loopEnd) { i := add(i, 0x20) }\n            {\n                sstore(dstPtr, mload(add(src, srcOffset)))\n                dstPtr := add(dstPtr, 1)\n                srcOffset := add(srcOffset, 0x20)\n            }\n            if lt(loopEnd, newLen)\n            {\n                let lastValue := mload(add(src, srcOffset))\n                sstore(dstPtr, and(lastValue, not(shr(and(shl(3, newLen), 248), not(0)))))\n            }\n            sstore(slot, add(shl(1, newLen), 1))\n        }\n        default {\n            let value := 0\n            if newLen\n            {\n                value := mload(add(src, srcOffset))\n            }\n            sstore(slot, extract_used_part_and_set_length_of_short_byte_array(value, newLen))\n        }\n    }\n}","id":87,"language":"Yul","name":"#utility.yul"}],"immutableReferences":{"7936":[{"length":32,"start":9526},{"length":32,"start":9567},{"length":32,"start":9880}]},"linkReferences":{},"object":"608060405260043610610254575f3560e01c80637aeedf2a1161013f578063ba087652116100b3578063d905777e11610078578063d905777e146106f7578063d9f9027f14610716578063dd62ed3e14610737578063e682324d14610756578063ef8b30f7146106b9578063f617eecc14610775575f5ffd5b8063ba0876521461065c578063bd577eb61461067b578063c63d75b61461069a578063c6e6f592146106b9578063ce96cb77146106d8575f5ffd5b806396da35da1161010457806396da35da14610591578063a7ded2ea146105b0578063a9059cbb146105cf578063ad3cb1cc146105ee578063b3d7f6b91461061e578063b460af941461063d575f5ffd5b80637aeedf2a146104e85780638cdf48a814610507578063914abf4f1461053f57806394bf804d1461055e57806395d89b411461057d575f5ffd5b8063402d267d116101d657806351a2d6d11161019b57806351a2d6d11461044257806352d1902d146104635780636e553f651461047757806370a0823114610496578063767f06ae146104b55780637ac445a7146104c9575f5ffd5b8063402d267d146103d05780634614b896146103ef57806347e57533146104105780634cdad506146102a05780634f1ef2861461042f575f5ffd5b806318160ddd1161021c57806318160ddd1461030d57806323b872dd14610340578063313ce5671461035f57806338d52e0f146103855780633aaf9048146103b1575f5ffd5b806301e1d1141461025857806306fdde031461027f57806307a2d13a146102a0578063095ea7b3146102bf5780630a28a477146102ee575b5f5ffd5b348015610263575f5ffd5b5061026c610789565b6040519081526020015b60405180910390f35b34801561028a575f5ffd5b50610293610797565b6040516102769190613f09565b3480156102ab575f5ffd5b5061026c6102ba366004613f1b565b610857565b3480156102ca575f5ffd5b506102de6102d9366004613f46565b610868565b6040519015158152602001610276565b3480156102f9575f5ffd5b5061026c610308366004613f1b565b61087f565b348015610318575f5ffd5b507f52c63247e1f47db19d5ce0460030c497f067ca4cebf71ba98eeadabe20bace025461026c565b34801561034b575f5ffd5b506102de61035a366004613f70565b61088b565b34801561036a575f5ffd5b506103736108b0565b60405160ff9091168152602001610276565b348015610390575f5ffd5b506103996108f2565b6040516001600160a01b039091168152602001610276565b3480156103bc575f5ffd5b506102936103cb366004614078565b610920565b3480156103db575f5ffd5b5061026c6103ea3660046140d1565b6109a5565b3480156103fa575f5ffd5b5061040e610409366004613f1b565b6109ae565b005b34801561041b575f5ffd5b5061029361042a366004613f1b565b6109ba565b61040e61043d3660046140ec565b610b3a565b34801561044d575f5ffd5b50610456610b50565b6040516102769190614138565b34801561046e575f5ffd5b5061026c610ba8565b348015610482575f5ffd5b5061026c61049136600461416c565b610bc3565b3480156104a1575f5ffd5b5061026c6104b03660046140d1565b610c20565b3480156104c0575f5ffd5b50610373602081565b3480156104d4575f5ffd5b5061040e6104e33660046141a7565b610c46565b3480156104f3575f5ffd5b5061040e6105023660046140ec565b610d7f565b348015610512575f5ffd5b50610526610521366004614215565b610f84565b6040516001600160e01b03199091168152602001610276565b34801561054a575f5ffd5b5061040e6105593660046142d9565b610fe2565b348015610569575f5ffd5b5061026c61057836600461416c565b611241565b348015610588575f5ffd5b5061029361128d565b34801561059c575f5ffd5b5061040e6105ab36600461430a565b6112cb565b3480156105bb575f5ffd5b5061040e6105ca366004614421565b6118e2565b3480156105da575f5ffd5b506102de6105e9366004613f46565b6119e5565b3480156105f9575f5ffd5b50610293604051806040016040528060058152602001640352e302e360dc1b81525081565b348015610629575f5ffd5b5061026c610638366004613f1b565b6119f2565b348015610648575f5ffd5b5061026c610657366004614538565b6119fe565b348015610667575f5ffd5b5061026c610676366004614538565b611a4b565b348015610686575f5ffd5b5061040e6106953660046142d9565b611a98565b3480156106a5575f5ffd5b5061026c6106b43660046140d1565b611ce4565b3480156106c4575f5ffd5b5061026c6106d3366004613f1b565b611d10565b3480156106e3575f5ffd5b5061026c6106f23660046140d1565b611d1b565b348015610702575f5ffd5b5061026c6107113660046140d1565b611d31565b348015610721575f5ffd5b5061072a611d76565b6040516102769190614577565b348015610742575f5ffd5b5061026c6107513660046145a8565b611dbc565b348015610761575f5ffd5b5061026c6107703660046145d4565b611e05565b348015610780575f5ffd5b50610456611ff5565b5f610792612030565b905090565b7f52c63247e1f47db19d5ce0460030c497f067ca4cebf71ba98eeadabe20bace0380546060915f516020614a2e5f395f51905f52916107d5906145fd565b80601f0160208091040260200160405190810160405280929190818152602001828054610801906145fd565b801561084c5780601f106108235761010080835404028352916020019161084c565b820191905f5260205f20905b81548152906001019060200180831161082f57829003601f168201915b505050505091505090565b5f610862825f6120ab565b92915050565b5f33610875818585612102565b5060019392505050565b5f610862826001612114565b5f33610898858285612162565b6108a38585856121b3565b60019150505b9392505050565b5f807f0773e532dfede91f04b12a73d3d2acd361424f41f76b4fb79f090161e36b4e0090505f81546108ec9190600160a01b900460ff16614649565b91505090565b7f0773e532dfede91f04b12a73d3d2acd361424f41f76b4fb79f090161e36b4e00546001600160a01b031690565b606061092d848484612210565b5f60028560ff166020811061094457610944614662565b01546001600160a01b031690508061096f57604051632711b74d60e11b815260040160405180910390fd5b61099c848460028860ff166020811061098a5761098a614662565b01546001600160a01b0316919061232e565b95945050505050565b5f610862612380565b6109b781612414565b50565b60605f5b5f600282602081106109d2576109d2614662565b01546001600160a01b0316148015906109eb5750602081105b15610b205760028160208110610a0357610a03614662565b015f9054906101000a90046001600160a01b03166001600160a01b0316635b9a4c356040518163ffffffff1660e01b8152600401602060405180830381865afa158015610a52573d5f5f3e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610a769190614676565b8303610b1057825483908190610a8b906145fd565b80601f0160208091040260200160405190810160405280929190818152602001828054610ab7906145fd565b8015610b025780601f10610ad957610100808354040283529160200191610b02565b820191905f5260205f20905b815481529060010190602001808311610ae557829003601f168201915b505050505092505050919050565b610b198161468d565b90506109be565b5060405163213109dd60e11b815260040160405180910390fd5b610b4261252b565b610b4c82826125d1565b5050565b610b58613ebc565b6040805161040081019182905290600190602090825f855b825461010083900a900460ff16815260206001928301818104948501949093039092029101808411610b705790505050505050905090565b5f610bb161268d565b505f516020614a4e5f395f51905f5290565b5f5f610bce836109a5565b905080841115610c0057828482604051633c8097d960e11b8152600401610bf7939291906146a5565b60405180910390fd5b5f610c0a85611d10565b9050610c18338587846126d6565b949350505050565b6001600160a01b03165f9081525f516020614a2e5f395f51905f52602052604090205490565b5f60028560ff1660208110610c5d57610c5d614662565b01546001600160a01b0316905080610c8857604051632711b74d60e11b815260040160405180910390fd5b5f5b602081108015610cb757505f60028260208110610ca957610ca9614662565b01546001600160a01b031614155b15610d2d57846001600160a01b031660028260208110610cd957610cd9614662565b01546001600160a01b0316148015610cf457508560ff168114155b15610d1d5760405163b5a9314f60e01b81526001600160a01b0386166004820152602401610bf7565b610d268161468d565b9050610c8a565b50610d42818585610d3c6126eb565b866126f4565b8360028660ff1660208110610d5957610d59614662565b0180546001600160a01b0319166001600160a01b03929092169190911790555050505050565b6001600160a01b038216610da657604051632711b74d60e11b815260040160405180910390fd5b5f5b602081108015610dd557505f60028260208110610dc757610dc7614662565b01546001600160a01b031614155b15610e3b57826001600160a01b031660028260208110610df757610df7614662565b01546001600160a01b031603610e2b5760405163b5a9314f60e01b81526001600160a01b0384166004820152602401610bf7565b610e348161468d565b9050610da8565b601f198101610e6057604051600162ad1fab60e01b0319815260040160405180910390fd5b8260028260208110610e7457610e74614662565b0180546001600160a01b0319166001600160a01b0392909216919091179055610e9e8160016146c6565b5f8260208110610eb057610eb0614662565b602091828204019190066101000a81548160ff021916908360ff160217905550806001610edd91906146c6565b60018260208110610ef057610ef0614662565b602091828204019190066101000a81548160ff021916908360ff160217905550610f2b610f1b6126eb565b6001600160a01b03851690612842565b610f3e6001600160a01b038416836128d4565b60405160ff821681526001600160a01b038416907f4973f7978f2b1810531aed51dc15a8e446cb3191afcca470f8ce464af7494f589060200160405180910390a2505050565b5f5f60028460ff1660208110610f9c57610f9c614662565b0154604080516001600160a01b039092166020830181905260ff8616918301919091529150610c1890606001604051602081830303815290604052805160209091012090565b610fea613ebc565b81515f906020101561100f5760405163a29b1f1160e01b815260040160405180910390fd5b82518110156111ba57602060ff1683828151811061102f5761102f614662565b602002602001015160ff1610158061108857505f6001600160a01b0316600284838151811061106057611060614662565b602002602001015160ff166020811061107b5761107b614662565b01546001600160a01b0316145b156110a65760405163a29b1f1160e01b815260040160405180910390fd5b818382815181106110b9576110b9614662565b602002602001015160ff16602081106110d4576110d4614662565b60200201511561111b578281815181106110f0576110f0614662565b602002602001015160405163c41fdbb960e01b8152600401610bf7919060ff91909116815260200190565b60018284838151811061113057611130614662565b602002602001015160ff166020811061114b5761114b614662565b91151560209092020152825183908290811061116957611169614662565b6020026020010151600161117d9190614649565b5f826020811061118f5761118f614662565b602091828204019190066101000a81548160ff021916908360ff16021790555080600101905061100f565b6020811080156111e757505f600282602081106111d9576111d9614662565b01546001600160a01b031614155b1561120557604051636712b27b60e01b815260040160405180910390fd5b7f193fc4e628c27ae3ca098952dfc16a40425b44e7b0a97f4cc59d0f267f47caec8360405161123491906146d9565b60405180910390a1505050565b5f5f61124c83611ce4565b9050808411156112755782848260405163284ff66760e01b8152600401610bf7939291906146a5565b5f61127f856119f2565b9050610c18338583886126d6565b7f52c63247e1f47db19d5ce0460030c497f067ca4cebf71ba98eeadabe20bace0480546060915f516020614a2e5f395f51905f52916107d5906145fd565b602060ff8316106112ef57604051632711b74d60e11b815260040160405180910390fd5b5f60028360ff166020811061130657611306614662565b01546001600160a01b031690508061133157604051632711b74d60e11b815260040160405180910390fd5b8115801561134f575061134c816001600160a01b0316612922565b15155b1561136d576040516343c2dfef60e01b815260040160405180910390fd5b60ff831615801561138757506003546001600160a01b0316155b156113a857604051600162ad1fab60e01b0319815260040160405180910390fd5b5f6113b4846001614649565b60ff1690505b6020811080156113e757505f600282602081106113d9576113d9614662565b01546001600160a01b031614155b1561145657600281602081106113ff576113ff614662565b01546001600160a01b0316600261141760018461471e565b6020811061142757611427614662565b0180546001600160a01b0319166001600160a01b039290921691909117905561144f8161468d565b90506113ba565b5f600261146460018461471e565b6020811061147457611474614662565b0180546001600160a01b0319166001600160a01b0392909216919091179055505f80805b600183602081106114ab576114ab614662565b602081049091015460ff601f9092166101000a900416158015906114cf5750602083105b15611801578015611593576114e5866001614649565b60ff16600184602081106114fb576114fb614662565b602081049091015460ff601f9092166101000a9004161161151c575f61151f565b60015b6001846020811061153257611532614662565b602091828204019190069054906101000a900460ff166115529190614731565b600161155e818661471e565b6020811061156e5761156e614662565b602091828204019190066101000a81548160ff021916908360ff160217905550611664565b61159e866001614649565b60ff16600184602081106115b4576115b4614662565b602081049091015460ff601f9092166101000a900416036115d757506001611664565b6115e2866001614649565b60ff16600184602081106115f8576115f8614662565b602081049091015460ff601f9092166101000a900416111561166457600180846020811061162857611628614662565b602091828204019190068282829054906101000a900460ff1661164b9190614731565b92506101000a81548160ff021916908360ff1602179055505b811561172157611675866001614649565b60ff165f846020811061168a5761168a614662565b602081049091015460ff601f9092166101000a900416116116ab575f6116ae565b60015b5f84602081106116c0576116c0614662565b602091828204019190069054906101000a900460ff166116e09190614731565b5f6116ec60018661471e565b602081106116fc576116fc614662565b602091828204019190066101000a81548160ff021916908360ff1602179055506117f1565b61172c866001614649565b60ff165f846020811061174157611741614662565b602081049091015460ff601f9092166101000a9004160361176557600191506117f1565b611770866001614649565b60ff165f846020811061178557611785614662565b602081049091015460ff601f9092166101000a90041611156117f15760015f84602081106117b5576117b5614662565b602091828204019190068282829054906101000a900460ff166117d89190614731565b92506101000a81548160ff021916908360ff1602179055505b6117fa8361468d565b9250611498565b5f8061180e60018661471e565b6020811061181e5761181e614662565b602091828204019190066101000a81548160ff021916908360ff1602179055505f6001808561184d919061471e565b6020811061185d5761185d614662565b602091828204019190066101000a81548160ff021916908360ff16021790555061189985856001600160a01b031661298b90919063ffffffff16565b60405160ff871681526001600160a01b038516907f978014566e371fef52158b004e150b6e1fd723f5aa3d8c9aa2a7c98ddb0e65b89060200160405180910390a2505050505050565b5f6118eb612ab0565b805490915060ff600160401b82041615906001600160401b03165f811580156119115750825b90505f826001600160401b0316600114801561192c5750303b155b90508115801561193a575080155b156119585760405163f92ee8a960e01b815260040160405180910390fd5b845467ffffffffffffffff19166001178555831561198257845460ff60401b1916600160401b1785555b6119918c8c8c8c8c8c8c612ad8565b83156119d757845460ff60401b19168555604051600181527fc7f505b2f371ae2175ee4913f4499e1f2633a7b5936321eed1cdaeb6115181d29060200160405180910390a15b505050505050505050505050565b5f336108758185856121b3565b5f6108628260016120ab565b5f5f611a0983611d1b565b905080851115611a3257828582604051633fa733bb60e21b8152600401610bf7939291906146a5565b5f611a3c8661087f565b905061099c3386868985612b08565b5f5f611a5683611d31565b905080851115611a7f57828582604051632e52afbb60e21b8152600401610bf7939291906146a5565b5f611a8986610857565b905061099c338686848a612b08565b611aa0613ebc565b81515f9060201015611ac55760405163a29b1f1160e01b815260040160405180910390fd5b82518160ff161015611c6457602060ff16838260ff1681518110611aeb57611aeb614662565b602002602001015160ff16101580611b4757505f6001600160a01b03166002848360ff1681518110611b1f57611b1f614662565b602002602001015160ff1660208110611b3a57611b3a614662565b01546001600160a01b0316145b15611b655760405163a29b1f1160e01b815260040160405180910390fd5b81838260ff1681518110611b7b57611b7b614662565b602002602001015160ff1660208110611b9657611b96614662565b602002015115611bb557828160ff16815181106110f0576110f0614662565b600182848360ff1681518110611bcd57611bcd614662565b602002602001015160ff1660208110611be857611be8614662565b911515602090920201528251839060ff8316908110611c0957611c09614662565b60200260200101516001611c1d9190614649565b60018260ff1660208110611c3357611c33614662565b602091828204019190066101000a81548160ff021916908360ff16021790555080611c5d9061474a565b9050611ac5565b602060ff8216108015611c9757505f600260ff831660208110611c8957611c89614662565b01546001600160a01b031614155b15611cb557604051636712b27b60e01b815260040160405180910390fd5b7f3c56b6bca0d55eda581f8f2819d1f85d3b91cfcc24914a8fa39d301796d8964c8360405161123491906146d9565b5f5f611cee612380565b90505f198114611d0757611d02815f612114565b6108a9565b5f199392505050565b5f610862825f612114565b5f5f611d2683612b1e565b90506108a981612b2b565b5f5f611d3c83612bc0565b90505f611d49825f6120ab565b90505f611d5582612b2b565b9050818114611d6d57611d68815f612114565b61099c565b50909392505050565b611d7e613ebc565b604080516104008101918290529060029060209082845b81546001600160a01b03168152600190910190602001808311611d95575050505050905090565b6001600160a01b039182165f9081527f52c63247e1f47db19d5ce0460030c497f067ca4cebf71ba98eeadabe20bace016020908152604080832093909416825291909152205490565b5f602060ff8516101580611e1d5750602060ff841610155b15611e3b57604051632711b74d60e11b815260040160405180910390fd5b5f60028560ff1660208110611e5257611e52614662565b01546001600160a01b031690505f600260ff861660208110611e7657611e76614662565b01546001600160a01b03908116915082161580611e9a57506001600160a01b038116155b15611eb857604051632711b74d60e11b815260040160405180910390fd5b5f198403611ed557611ed2826001600160a01b0316612922565b93505b835f03611ee6575f925050506108a9565b611ef8826001600160a01b0316612bca565b841115611f2d57611f11826001600160a01b0316612bca565b604051633ce011d560e01b8152600401610bf791815260200190565b611f3f816001600160a01b0316612bf8565b841115611f7457611f58816001600160a01b0316612bf8565b6040516350a3e37560e11b8152600401610bf791815260200190565b611f886001600160a01b038316855f612c26565b50611f9d6001600160a01b038216855f612d62565b50806001600160a01b0316826001600160a01b03167fb0850b8e0f9e8315dde3c9f9f31138283e6bbe16cd29e8552eb1dcdf9fac9e3b86604051611fe391815260200190565b60405180910390a35091949350505050565b611ffd613ebc565b604080516104008101918290525f805460ff1682529091602090826001838601808411610b705790505050505050905090565b5f5f5b5f6002826020811061204757612047614662565b01546001600160a01b0316148015906120605750602081105b156120a75761208b6002826020811061207b5761207b614662565b01546001600160a01b0316612922565b61209590836146c6565b91506120a08161468d565b9050612033565b5090565b5f6108a96120b7610789565b6120c29060016146c6565b6120cd5f600a61484b565b7f52c63247e1f47db19d5ce0460030c497f067ca4cebf71ba98eeadabe20bace02546120f991906146c6565b85919085612e83565b61210f8383836001612ec5565b505050565b5f6108a961212382600a61484b565b7f52c63247e1f47db19d5ce0460030c497f067ca4cebf71ba98eeadabe20bace025461214f91906146c6565b612157610789565b6120f99060016146c6565b5f61216d8484611dbc565b90505f198110156121ad578181101561219f57828183604051637dc7a0d960e11b8152600401610bf7939291906146a5565b6121ad84848484035f612ec5565b50505050565b6001600160a01b0383166121dc57604051634b637e8f60e11b81525f6004820152602401610bf7565b6001600160a01b0382166122055760405163ec442f0560e01b81525f6004820152602401610bf7565b61210f838383612fa8565b5f306001600160a01b0316633a7b7a396040518163ffffffff1660e01b8152600401602060405180830381865afa15801561224d573d5f5f3e3d5ffd5b505050506040513d601f19601f820116820180604052508101906122719190614859565b90505f816001600160a01b031663b7009613333061228f8989610f84565b60405160e085901b6001600160e01b031990811682526001600160a01b0394851660048301529290931660248401521660448201526064016040805180830381865afa1580156122e1573d5f5f3e3d5ffd5b505050506040513d601f19601f820116820180604052508101906123059190614874565b509050806123275760405162d1953b60e31b8152336004820152602401610bf7565b5050505050565b6060610c1883836040516024016123469291906148a9565b60408051601f198184030181529190526020810180516001600160e01b03166304c0d8e160e11b1790526001600160a01b038616906130ce565b5f5f5f5b5f6002826020811061239857612398614662565b01546001600160a01b0316148015906123b15750602081105b1561240f576123ed836123e0600284602081106123d0576123d0614662565b01546001600160a01b0316612bf8565b8101908110159190820290565b93509150816123ff575f199250505090565b6124088161468d565b9050612384565b505090565b805f5b811580159061244c57505f816020811061243357612433614662565b602081049091015460ff601f9092166101000a90041615155b80156124585750602081105b1561250b575f600260015f846020811061247457612474614662565b602091828204019190069054906101000a900460ff166124949190614731565b60ff16602081106124a7576124a7614662565b01546001600160a01b031690505f6124c7846124c284612bf8565b61316e565b9050805f036124d75750506124fb565b6124eb6001600160a01b038316825f612d62565b506124f6818561471e565b935050505b6125048161468d565b9050612417565b508015610b4c5760405163285a546d60e01b815260040160405180910390fd5b306001600160a01b037f00000000000000000000000000000000000000000000000000000000000000001614806125b157507f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03166125a55f516020614a4e5f395f51905f52546001600160a01b031690565b6001600160a01b031614155b156125cf5760405163703e46dd60e11b815260040160405180910390fd5b565b816001600160a01b03166352d1902d6040518163ffffffff1660e01b8152600401602060405180830381865afa92505050801561262b575060408051601f3d908101601f1916820190925261262891810190614676565b60015b61265357604051634c9c8ce360e01b81526001600160a01b0383166004820152602401610bf7565b5f516020614a4e5f395f51905f52811461268357604051632a87526960e21b815260048101829052602401610bf7565b61210f838361317d565b306001600160a01b037f000000000000000000000000000000000000000000000000000000000000000016146125cf5760405163703e46dd60e11b815260040160405180910390fd5b6126e2848484846131d2565b6121ad82612414565b5f6107926108f2565b6126fe8483612842565b60405163f3e0ffbf60e01b81523060048201526127709086906001600160a01b0382169063f3e0ffbf90602401602060405180830381865afa158015612746573d5f5f3e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061276a9190614676565b83612c26565b5061277b858261298b565b61278584846128d4565b6040516370a0823160e01b81523060048201526127f79085906001600160a01b038516906370a0823190602401602060405180830381865afa1580156127cd573d5f5f3e3d5ffd5b505050506040513d601f19601f820116820180604052508101906127f19190614676565b83612d62565b50604080516001600160a01b038088168252861660208201527f254c88e7a2ea123aeeb89b7cc413fb949188fefcdb7584c4f3d493294daf65c5910160405180910390a15050505050565b604051634e2333d160e11b81523060048201526001600160a01b038083169190841690639c4667a290602401602060405180830381865afa158015612889573d5f5f3e3d5ffd5b505050506040513d601f19601f820116820180604052508101906128ad9190614859565b6001600160a01b031614610b4c5760405163e76673ef60e01b815260040160405180910390fd5b61210f816040516024016128e89190613f09565b60408051601f198184030181529190526020810180516001600160e01b031663139a8e2560e31b1790526001600160a01b038416906130ce565b60405163f3e0ffbf60e01b81523060048201525f906001600160a01b0383169063f3e0ffbf906024015b602060405180830381865afa158015612967573d5f5f3e3d5ffd5b505050506040513d601f19601f820116820180604052508101906108629190614676565b8015612a6657604051600160248201525f9081906001600160a01b0385169060440160408051601f198184030181529181526020820180516001600160e01b0316632d08ba2b60e11b179052516129e291906148c4565b5f60405180830381855af49150503d805f8114612a1a576040519150601f19603f3d011682016040523d82523d5f602084013e612a1f565b606091505b5091509150816121ad577f9f864ace9f45c2734f9444cb9a0c1ade6f1b15a8c202c17175b759728a4a0bf881604051612a589190613f09565b60405180910390a150505050565b6040515f602482015261210f9060440160408051601f198184030181529190526020810180516001600160e01b0316632d08ba2b60e11b1790526001600160a01b038416906130ce565b5f807ff0c57e16840df040f15088dc2f81fe391c3923bec73e23a9662efc9c229c6a00610862565b612ae061323d565b612ae985613262565b612af38787613273565b612aff84848484613285565b50505050505050565b612b1182613806565b6123278585858585613919565b5f6108626102ba83611d31565b5f5f5f5b5f60028260208110612b4357612b43614662565b01546001600160a01b031614801590612b5c5750602081105b15612bb957612b8b836123e060028460208110612b7b57612b7b614662565b01546001600160a01b0316612bca565b93509150811580612b9c5750838310155b15612ba957509192915050565b612bb28161468d565b9050612b2f565b5050919050565b5f61086282610c20565b60405163ce96cb7760e01b81523060048201525f906001600160a01b0383169063ce96cb779060240161294c565b60405163402d267d60e01b81523060048201525f906001600160a01b0383169063402d267d9060240161294c565b5f8115612d08575f5f856001600160a01b031685604051602401612c4c91815260200190565b60408051601f198184030181529181526020820180516001600160e01b0316632e1a7d4d60e01b17905251612c8191906148c4565b5f60405180830381855af49150503d805f8114612cb9576040519150601f19603f3d011682016040523d82523d5f602084013e612cbe565b606091505b509150915081612d00577fad0ad28a12a6ed800f1a7b398454913afe6826c175e6cc28f2e8e2c175b0d72881604051612cf79190613f09565b60405180910390a15b5090506108a9565b612d5883604051602401612d1e91815260200190565b60408051601f198184030181529190526020810180516001600160e01b0316632e1a7d4d60e01b1790526001600160a01b038616906130ce565b50600190506108a9565b5f8115612e33575f5f856001600160a01b031685604051602401612d8891815260200190565b60408051601f198184030181529181526020820180516001600160e01b031663b6b55f2560e01b17905251612dbd91906148c4565b5f60405180830381855af49150503d805f8114612df5576040519150601f19603f3d011682016040523d82523d5f602084013e612dfa565b606091505b509150915081612d00577ff8e68f23d3b33772e986cc9861e94e8fd6b9461d62bc1fb21cd754bbaf726bd381604051612cf79190613f09565b612d5883604051602401612e4991815260200190565b60408051601f198184030181529190526020810180516001600160e01b031663b6b55f2560e01b1790526001600160a01b038616906130ce565b5f612eb0612e90836139c0565b8015612eab57505f8480612ea657612ea66148da565b868809115b151590565b612ebb8686866139ec565b61099c91906146c6565b5f516020614a2e5f395f51905f526001600160a01b038516612efc5760405163e602df0560e01b81525f6004820152602401610bf7565b6001600160a01b038416612f2557604051634a1406b160e11b81525f6004820152602401610bf7565b6001600160a01b038086165f9081526001830160209081526040808320938816835292905220839055811561232757836001600160a01b0316856001600160a01b03167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92585604051612f9991815260200190565b60405180910390a35050505050565b5f516020614a2e5f395f51905f526001600160a01b038416612fe25781816002015f828254612fd791906146c6565b9091555061303f9050565b6001600160a01b0384165f90815260208290526040902054828110156130215784818460405163391434e360e21b8152600401610bf7939291906146a5565b6001600160a01b0385165f9081526020839052604090209083900390555b6001600160a01b03831661305d57600281018054839003905561307b565b6001600160a01b0383165f9081526020829052604090208054830190555b826001600160a01b0316846001600160a01b03167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef846040516130c091815260200190565b60405180910390a350505050565b60605f6130db8484613a9c565b90508080156130fc57505f3d11806130fc57505f846001600160a01b03163b115b1561311157613109613aaf565b915050610862565b801561313b57604051639996b31560e01b81526001600160a01b0385166004820152602401610bf7565b3d1561314e57613149613ac8565b613167565b60405163d6bda27560e01b815260040160405180910390fd5b5092915050565b5f8282188284100282186108a9565b61318682613ad3565b6040516001600160a01b038316907fbc7cd75a20ee27fd9adebab32041f755214dbc6bffa90cc0225b39da2e5c2d3b905f90a28051156131ca5761210f82826130ce565b610b4c613b36565b6131e56131dd6108f2565b853085613b55565b6131ef8382613b8b565b826001600160a01b0316846001600160a01b03167fdcbc1c05240f31ff3ad067ef1ee35ce4997762752e3a095284754544f4c709d784846040516130c0929190918252602082015260400190565b613245613bbf565b6125cf57604051631afcd79f60e31b815260040160405180910390fd5b61326a61323d565b6109b781613bd8565b61327b61323d565b610b4c8282613c5b565b83511580613294575083516020105b806132a157508251845114155b806132ae57508151845114155b806132bb57508051845114155b156132dc57604051600162ad1fab60e01b0319815260040160405180910390fd5b6132e4613ebc565b6132ec613ebc565b5f5b865181101561378f575f6001600160a01b031687828151811061331357613313614662565b60200260200101516001600160a01b03160361334257604051632711b74d60e11b815260040160405180910390fd5b61337e61334d6126eb565b88838151811061335f5761335f614662565b60200260200101516001600160a01b031661284290919063ffffffff16565b5f5b8181101561341e5787818151811061339a5761339a614662565b60200260200101516001600160a01b03168883815181106133bd576133bd614662565b60200260200101516001600160a01b031603613416578782815181106133e5576133e5614662565b602002602001015160405163b5a9314f60e01b8152600401610bf791906001600160a01b0391909116815260200190565b600101613380565b50865185828151811061343357613433614662565b602002602001015160ff1610158061347a57508285828151811061345957613459614662565b602002602001015160ff166020811061347457613474614662565b60200201515b156134bc5784818151811061349157613491614662565b602002602001015160405163306ccd5d60e11b8152600401610bf7919060ff91909116815260200190565b86518482815181106134d0576134d0614662565b602002602001015160ff161015806135175750818482815181106134f6576134f6614662565b602002602001015160ff166020811061351157613511614662565b60200201515b156135595783818151811061352e5761352e614662565b6020026020010151604051632776924160e11b8152600401610bf7919060ff91909116815260200190565b60018386838151811061356e5761356e614662565b602002602001015160ff166020811061358957613589614662565b6020020190151590811515815250506001828583815181106135ad576135ad614662565b602002602001015160ff16602081106135c8576135c8614662565b9115156020909202015286518790829081106135e6576135e6614662565b60200260200101516002826020811061360157613601614662565b015f6101000a8154816001600160a01b0302191690836001600160a01b0316021790555084818151811061363757613637614662565b6020026020010151600161364b9190614649565b5f826020811061365d5761365d614662565b602091828204019190066101000a81548160ff021916908360ff16021790555083818151811061368f5761368f614662565b602002602001015160016136a39190614649565b600182602081106136b6576136b6614662565b602091828204019190066101000a81548160ff021916908360ff1602179055506137248682815181106136eb576136eb614662565b602002602001015188838151811061370557613705614662565b60200260200101516001600160a01b03166128d490919063ffffffff16565b86818151811061373657613736614662565b60200260200101516001600160a01b03167f4973f7978f2b1810531aed51dc15a8e446cb3191afcca470f8ce464af7494f588260405161377f919060ff91909116815260200190565b60405180910390a26001016132ee565b507f193fc4e628c27ae3ca098952dfc16a40425b44e7b0a97f4cc59d0f267f47caec846040516137bf91906146d9565b60405180910390a17f3c56b6bca0d55eda581f8f2819d1f85d3b91cfcc24914a8fa39d301796d8964c836040516137f691906146d9565b60405180910390a1505050505050565b805f5b811580159061383f57506001816020811061382657613826614662565b602081049091015460ff601f9092166101000a90041615155b801561384b5750602081105b156138f9575f6002600180846020811061386757613867614662565b602091828204019190069054906101000a900460ff166138879190614731565b60ff166020811061389a5761389a614662565b01546001600160a01b031690505f6138b5846124c284612bca565b9050805f036138c55750506138e9565b6138d96001600160a01b038316825f612c26565b506138e4818561471e565b935050505b6138f28161468d565b9050613809565b508015610b4c5760405163351dc55d60e21b815260040160405180910390fd5b826001600160a01b0316856001600160a01b03161461393d5761393d838683612162565b6139478382613cab565b6139596139526108f2565b8584613cdf565b826001600160a01b0316846001600160a01b0316866001600160a01b03167ffbde797d201c681b91056529119e0b02407c7bb96a4a2c75c01fc9667232c8db85856040516139b1929190918252602082015260400190565b60405180910390a45050505050565b5f60028260038111156139d5576139d56148ee565b6139df9190614902565b60ff166001149050919050565b5f5f5f6139f98686613d14565b91509150815f03613a1d57838181613a1357613a136148da565b04925050506108a9565b818411613a3457613a346003851502601118613d30565b5f848688095f868103871696879004966002600389028118808a02820302808a02820302808a02820302808a02820302808a02820302808a02909103029181900381900460010185841190960395909502919093039390930492909217029150509392505050565b5f5f5f835160208501865af49392505050565b6040513d81523d5f602083013e3d602001810160405290565b6040513d5f823e3d81fd5b806001600160a01b03163b5f03613b0857604051634c9c8ce360e01b81526001600160a01b0382166004820152602401610bf7565b5f516020614a4e5f395f51905f5280546001600160a01b0319166001600160a01b0392909216919091179055565b34156125cf5760405163b398979f60e01b815260040160405180910390fd5b613b63848484846001613d41565b6121ad57604051635274afe760e01b81526001600160a01b0385166004820152602401610bf7565b6001600160a01b038216613bb45760405163ec442f0560e01b81525f6004820152602401610bf7565b610b4c5f8383612fa8565b5f613bc8612ab0565b54600160401b900460ff16919050565b613be061323d565b7f0773e532dfede91f04b12a73d3d2acd361424f41f76b4fb79f090161e36b4e005f80613c0c84613dae565b9150915081613c1c576012613c1e565b805b83546001600160a81b031916600160a01b60ff92909216919091026001600160a01b031916176001600160a01b0394909416939093179091555050565b613c6361323d565b5f516020614a2e5f395f51905f527f52c63247e1f47db19d5ce0460030c497f067ca4cebf71ba98eeadabe20bace03613c9c8482614973565b50600481016121ad8382614973565b6001600160a01b038216613cd457604051634b637e8f60e11b81525f6004820152602401610bf7565b610b4c825f83612fa8565b613cec8383836001613e39565b61210f57604051635274afe760e01b81526001600160a01b0384166004820152602401610bf7565b5f805f1983850993909202808410938190039390930393915050565b634e487b715f52806020526024601cfd5b6040516323b872dd60e01b5f8181526001600160a01b038781166004528616602452604485905291602083606481808c5af1925060015f51148316613d9d578383151615613d91573d5f823e3d81fd5b5f883b113d1516831692505b604052505f60605295945050505050565b5f5f5f613dba60405190565b6040805160048152602481019091526020810180516001600160e01b031663313ce56760e01b1790529091505f908190613df5908790613e9b565b5091509150613e0383604052565b818015613e11575060203d10155b8015613e1e575060ff8111155b613e29575f5f613e2d565b6001815b94509450505050915091565b60405163a9059cbb60e01b5f8181526001600160a01b038616600452602485905291602083604481808b5af1925060015f51148316613e8f578383151615613e83573d5f823e3d81fd5b5f873b113d1516831692505b60405250949350505050565b5f5f5f60405f855160208701885afa92505f51915060205190509250925092565b6040518061040001604052806020906020820280368337509192915050565b5f81518084528060208401602086015e5f602082860101526020601f19601f83011685010191505092915050565b602081525f6108a96020830184613edb565b5f60208284031215613f2b575f5ffd5b5035919050565b6001600160a01b03811681146109b7575f5ffd5b5f5f60408385031215613f57575f5ffd5b8235613f6281613f32565b946020939093013593505050565b5f5f5f60608486031215613f82575f5ffd5b8335613f8d81613f32565b92506020840135613f9d81613f32565b929592945050506040919091013590565b803560ff81168114613fbe575f5ffd5b919050565b634e487b7160e01b5f52604160045260245ffd5b604051601f8201601f191681016001600160401b0381118282101715613fff57613fff613fc3565b604052919050565b5f82601f830112614016575f5ffd5b8135602083015f5f6001600160401b0384111561403557614035613fc3565b50601f8301601f191660200161404a81613fd7565b91505082815285838301111561405e575f5ffd5b828260208301375f92810160200192909252509392505050565b5f5f5f6060848603121561408a575f5ffd5b61409384613fae565b92506140a160208501613fae565b915060408401356001600160401b038111156140bb575f5ffd5b6140c786828701614007565b9150509250925092565b5f602082840312156140e1575f5ffd5b81356108a981613f32565b5f5f604083850312156140fd575f5ffd5b823561410881613f32565b915060208301356001600160401b03811115614122575f5ffd5b61412e85828601614007565b9150509250929050565b610400810181835f5b602081101561416357815160ff16835260209283019290910190600101614141565b50505092915050565b5f5f6040838503121561417d575f5ffd5b82359150602083013561418f81613f32565b809150509250929050565b80151581146109b7575f5ffd5b5f5f5f5f608085870312156141ba575f5ffd5b6141c385613fae565b935060208501356141d381613f32565b925060408501356001600160401b038111156141ed575f5ffd5b6141f987828801614007565b925050606085013561420a8161419a565b939692955090935050565b5f5f60408385031215614226575f5ffd5b61422f83613fae565b915061423d60208401613fae565b90509250929050565b5f6001600160401b0382111561425e5761425e613fc3565b5060051b60200190565b5f82601f830112614277575f5ffd5b813561428a61428582614246565b613fd7565b8082825260208201915060208360051b8601019250858311156142ab575f5ffd5b602085015b838110156142cf576142c181613fae565b8352602092830192016142b0565b5095945050505050565b5f602082840312156142e9575f5ffd5b81356001600160401b038111156142fe575f5ffd5b610c1884828501614268565b5f5f6040838503121561431b575f5ffd5b61432483613fae565b9150602083013561418f8161419a565b8035613fbe81613f32565b5f82601f83011261434e575f5ffd5b813561435c61428582614246565b8082825260208201915060208360051b86010192508583111561437d575f5ffd5b602085015b838110156142cf57803561439581613f32565b835260209283019201614382565b5f82601f8301126143b2575f5ffd5b81356143c061428582614246565b8082825260208201915060208360051b8601019250858311156143e1575f5ffd5b602085015b838110156142cf5780356001600160401b03811115614403575f5ffd5b614412886020838a0101614007565b845250602092830192016143e6565b5f5f5f5f5f5f5f60e0888a031215614437575f5ffd5b87356001600160401b0381111561444c575f5ffd5b6144588a828b01614007565b97505060208801356001600160401b03811115614473575f5ffd5b61447f8a828b01614007565b96505061448e60408901614334565b945060608801356001600160401b038111156144a8575f5ffd5b6144b48a828b0161433f565b94505060808801356001600160401b038111156144cf575f5ffd5b6144db8a828b016143a3565b93505060a08801356001600160401b038111156144f6575f5ffd5b6145028a828b01614268565b92505060c08801356001600160401b0381111561451d575f5ffd5b6145298a828b01614268565b91505092959891949750929550565b5f5f5f6060848603121561454a575f5ffd5b83359250602084013561455c81613f32565b9150604084013561456c81613f32565b809150509250925092565b610400810181835f5b60208110156141635781516001600160a01b0316835260209283019290910190600101614580565b5f5f604083850312156145b9575f5ffd5b82356145c481613f32565b9150602083013561418f81613f32565b5f5f5f606084860312156145e6575f5ffd5b6145ef84613fae565b9250613f9d60208501613fae565b600181811c9082168061461157607f821691505b60208210810361462f57634e487b7160e01b5f52602260045260245ffd5b50919050565b634e487b7160e01b5f52601160045260245ffd5b60ff818116838216019081111561086257610862614635565b634e487b7160e01b5f52603260045260245ffd5b5f60208284031215614686575f5ffd5b5051919050565b5f6001820161469e5761469e614635565b5060010190565b6001600160a01b039390931683526020830191909152604082015260600190565b8082018082111561086257610862614635565b602080825282518282018190525f918401906040840190835b8181101561471357835160ff168352602093840193909201916001016146f2565b509095945050505050565b8181038181111561086257610862614635565b60ff828116828216039081111561086257610862614635565b5f60ff821660ff810361475f5761475f614635565b60010192915050565b6001815b60018411156147a35780850481111561478757614787614635565b600184161561479557908102905b60019390931c92800261476c565b935093915050565b5f826147b957506001610862565b816147c557505f610862565b81600181146147db57600281146147e557614801565b6001915050610862565b60ff8411156147f6576147f6614635565b50506001821b610862565b5060208310610133831016604e8410600b8410161715614824575081810a610862565b6148305f198484614768565b805f190482111561484357614843614635565b029392505050565b5f6108a960ff8416836147ab565b5f60208284031215614869575f5ffd5b81516108a981613f32565b5f5f60408385031215614885575f5ffd5b82516148908161419a565b602084015190925063ffffffff8116811461418f575f5ffd5b60ff83168152604060208201525f610c186040830184613edb565b5f82518060208501845e5f920191825250919050565b634e487b7160e01b5f52601260045260245ffd5b634e487b7160e01b5f52602160045260245ffd5b5f60ff83168061492057634e487b7160e01b5f52601260045260245ffd5b8060ff84160691505092915050565b601f82111561210f57805f5260205f20601f840160051c810160208510156149545750805b601f840160051c820191505b81811015612327575f8155600101614960565b81516001600160401b0381111561498c5761498c613fc3565b6149a08161499a84546145fd565b8461492f565b6020601f8211600181146149d2575f83156149bb5750848201515b5f19600385901b1c1916600184901b178455612327565b5f84815260208120601f198516915b82811015614a0157878501518255602094850194600190920191016149e1565b5084821015614a1e57868401515f19600387901b60f8161c191681555b50505050600190811b0190555056fe52c63247e1f47db19d5ce0460030c497f067ca4cebf71ba98eeadabe20bace00360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbca2646970667358221220c794b6ddbd4cfb3941fee0d7f43479cb8b47ac102f550f916026e193879f834464736f6c634300081e0033","opcodes":"PUSH1 0x80 PUSH1 0x40 MSTORE PUSH1 0x4 CALLDATASIZE LT PUSH2 0x254 JUMPI PUSH0 CALLDATALOAD PUSH1 0xE0 SHR DUP1 PUSH4 0x7AEEDF2A GT PUSH2 0x13F JUMPI DUP1 PUSH4 0xBA087652 GT PUSH2 0xB3 JUMPI DUP1 PUSH4 0xD905777E GT PUSH2 0x78 JUMPI DUP1 PUSH4 0xD905777E EQ PUSH2 0x6F7 JUMPI DUP1 PUSH4 0xD9F9027F EQ PUSH2 0x716 JUMPI DUP1 PUSH4 0xDD62ED3E EQ PUSH2 0x737 JUMPI DUP1 PUSH4 0xE682324D EQ PUSH2 0x756 JUMPI DUP1 PUSH4 0xEF8B30F7 EQ PUSH2 0x6B9 JUMPI DUP1 PUSH4 0xF617EECC EQ PUSH2 0x775 JUMPI PUSH0 PUSH0 REVERT JUMPDEST DUP1 PUSH4 0xBA087652 EQ PUSH2 0x65C JUMPI DUP1 PUSH4 0xBD577EB6 EQ PUSH2 0x67B JUMPI DUP1 PUSH4 0xC63D75B6 EQ PUSH2 0x69A JUMPI DUP1 PUSH4 0xC6E6F592 EQ PUSH2 0x6B9 JUMPI DUP1 PUSH4 0xCE96CB77 EQ PUSH2 0x6D8 JUMPI PUSH0 PUSH0 REVERT JUMPDEST DUP1 PUSH4 0x96DA35DA GT PUSH2 0x104 JUMPI DUP1 PUSH4 0x96DA35DA EQ PUSH2 0x591 JUMPI DUP1 PUSH4 0xA7DED2EA EQ PUSH2 0x5B0 JUMPI DUP1 PUSH4 0xA9059CBB EQ PUSH2 0x5CF JUMPI DUP1 PUSH4 0xAD3CB1CC EQ PUSH2 0x5EE JUMPI DUP1 PUSH4 0xB3D7F6B9 EQ PUSH2 0x61E JUMPI DUP1 PUSH4 0xB460AF94 EQ PUSH2 0x63D JUMPI PUSH0 PUSH0 REVERT JUMPDEST DUP1 PUSH4 0x7AEEDF2A EQ PUSH2 0x4E8 JUMPI DUP1 PUSH4 0x8CDF48A8 EQ PUSH2 0x507 JUMPI DUP1 PUSH4 0x914ABF4F EQ PUSH2 0x53F JUMPI DUP1 PUSH4 0x94BF804D EQ PUSH2 0x55E JUMPI DUP1 PUSH4 0x95D89B41 EQ PUSH2 0x57D JUMPI PUSH0 PUSH0 REVERT JUMPDEST DUP1 PUSH4 0x402D267D GT PUSH2 0x1D6 JUMPI DUP1 PUSH4 0x51A2D6D1 GT PUSH2 0x19B JUMPI DUP1 PUSH4 0x51A2D6D1 EQ PUSH2 0x442 JUMPI DUP1 PUSH4 0x52D1902D EQ PUSH2 0x463 JUMPI DUP1 PUSH4 0x6E553F65 EQ PUSH2 0x477 JUMPI DUP1 PUSH4 0x70A08231 EQ PUSH2 0x496 JUMPI DUP1 PUSH4 0x767F06AE EQ PUSH2 0x4B5 JUMPI DUP1 PUSH4 0x7AC445A7 EQ PUSH2 0x4C9 JUMPI PUSH0 PUSH0 REVERT JUMPDEST DUP1 PUSH4 0x402D267D EQ PUSH2 0x3D0 JUMPI DUP1 PUSH4 0x4614B896 EQ PUSH2 0x3EF JUMPI DUP1 PUSH4 0x47E57533 EQ PUSH2 0x410 JUMPI DUP1 PUSH4 0x4CDAD506 EQ PUSH2 0x2A0 JUMPI DUP1 PUSH4 0x4F1EF286 EQ PUSH2 0x42F JUMPI PUSH0 PUSH0 REVERT JUMPDEST DUP1 PUSH4 0x18160DDD GT PUSH2 0x21C JUMPI DUP1 PUSH4 0x18160DDD EQ PUSH2 0x30D JUMPI DUP1 PUSH4 0x23B872DD EQ PUSH2 0x340 JUMPI DUP1 PUSH4 0x313CE567 EQ PUSH2 0x35F JUMPI DUP1 PUSH4 0x38D52E0F EQ PUSH2 0x385 JUMPI DUP1 PUSH4 0x3AAF9048 EQ PUSH2 0x3B1 JUMPI PUSH0 PUSH0 REVERT JUMPDEST DUP1 PUSH4 0x1E1D114 EQ PUSH2 0x258 JUMPI DUP1 PUSH4 0x6FDDE03 EQ PUSH2 0x27F JUMPI DUP1 PUSH4 0x7A2D13A EQ PUSH2 0x2A0 JUMPI DUP1 PUSH4 0x95EA7B3 EQ PUSH2 0x2BF JUMPI DUP1 PUSH4 0xA28A477 EQ PUSH2 0x2EE JUMPI JUMPDEST PUSH0 PUSH0 REVERT JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x263 JUMPI PUSH0 PUSH0 REVERT JUMPDEST POP PUSH2 0x26C PUSH2 0x789 JUMP JUMPDEST PUSH1 0x40 MLOAD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x28A JUMPI PUSH0 PUSH0 REVERT JUMPDEST POP PUSH2 0x293 PUSH2 0x797 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0x276 SWAP2 SWAP1 PUSH2 0x3F09 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x2AB JUMPI PUSH0 PUSH0 REVERT JUMPDEST POP PUSH2 0x26C PUSH2 0x2BA CALLDATASIZE PUSH1 0x4 PUSH2 0x3F1B JUMP JUMPDEST PUSH2 0x857 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x2CA JUMPI PUSH0 PUSH0 REVERT JUMPDEST POP PUSH2 0x2DE PUSH2 0x2D9 CALLDATASIZE PUSH1 0x4 PUSH2 0x3F46 JUMP JUMPDEST PUSH2 0x868 JUMP JUMPDEST PUSH1 0x40 MLOAD SWAP1 ISZERO ISZERO DUP2 MSTORE PUSH1 0x20 ADD PUSH2 0x276 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x2F9 JUMPI PUSH0 PUSH0 REVERT JUMPDEST POP PUSH2 0x26C PUSH2 0x308 CALLDATASIZE PUSH1 0x4 PUSH2 0x3F1B JUMP JUMPDEST PUSH2 0x87F JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x318 JUMPI PUSH0 PUSH0 REVERT JUMPDEST POP PUSH32 0x52C63247E1F47DB19D5CE0460030C497F067CA4CEBF71BA98EEADABE20BACE02 SLOAD PUSH2 0x26C JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x34B JUMPI PUSH0 PUSH0 REVERT JUMPDEST POP PUSH2 0x2DE PUSH2 0x35A CALLDATASIZE PUSH1 0x4 PUSH2 0x3F70 JUMP JUMPDEST PUSH2 0x88B JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x36A JUMPI PUSH0 PUSH0 REVERT JUMPDEST POP PUSH2 0x373 PUSH2 0x8B0 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH1 0xFF SWAP1 SWAP2 AND DUP2 MSTORE PUSH1 0x20 ADD PUSH2 0x276 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x390 JUMPI PUSH0 PUSH0 REVERT JUMPDEST POP PUSH2 0x399 PUSH2 0x8F2 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP1 SWAP2 AND DUP2 MSTORE PUSH1 0x20 ADD PUSH2 0x276 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x3BC JUMPI PUSH0 PUSH0 REVERT JUMPDEST POP PUSH2 0x293 PUSH2 0x3CB CALLDATASIZE PUSH1 0x4 PUSH2 0x4078 JUMP JUMPDEST PUSH2 0x920 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x3DB JUMPI PUSH0 PUSH0 REVERT JUMPDEST POP PUSH2 0x26C PUSH2 0x3EA CALLDATASIZE PUSH1 0x4 PUSH2 0x40D1 JUMP JUMPDEST PUSH2 0x9A5 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x3FA JUMPI PUSH0 PUSH0 REVERT JUMPDEST POP PUSH2 0x40E PUSH2 0x409 CALLDATASIZE PUSH1 0x4 PUSH2 0x3F1B JUMP JUMPDEST PUSH2 0x9AE JUMP JUMPDEST STOP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x41B JUMPI PUSH0 PUSH0 REVERT JUMPDEST POP PUSH2 0x293 PUSH2 0x42A CALLDATASIZE PUSH1 0x4 PUSH2 0x3F1B JUMP JUMPDEST PUSH2 0x9BA JUMP JUMPDEST PUSH2 0x40E PUSH2 0x43D CALLDATASIZE PUSH1 0x4 PUSH2 0x40EC JUMP JUMPDEST PUSH2 0xB3A JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x44D JUMPI PUSH0 PUSH0 REVERT JUMPDEST POP PUSH2 0x456 PUSH2 0xB50 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0x276 SWAP2 SWAP1 PUSH2 0x4138 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x46E JUMPI PUSH0 PUSH0 REVERT JUMPDEST POP PUSH2 0x26C PUSH2 0xBA8 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x482 JUMPI PUSH0 PUSH0 REVERT JUMPDEST POP PUSH2 0x26C PUSH2 0x491 CALLDATASIZE PUSH1 0x4 PUSH2 0x416C JUMP JUMPDEST PUSH2 0xBC3 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x4A1 JUMPI PUSH0 PUSH0 REVERT JUMPDEST POP PUSH2 0x26C PUSH2 0x4B0 CALLDATASIZE PUSH1 0x4 PUSH2 0x40D1 JUMP JUMPDEST PUSH2 0xC20 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x4C0 JUMPI PUSH0 PUSH0 REVERT JUMPDEST POP PUSH2 0x373 PUSH1 0x20 DUP2 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x4D4 JUMPI PUSH0 PUSH0 REVERT JUMPDEST POP PUSH2 0x40E PUSH2 0x4E3 CALLDATASIZE PUSH1 0x4 PUSH2 0x41A7 JUMP JUMPDEST PUSH2 0xC46 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x4F3 JUMPI PUSH0 PUSH0 REVERT JUMPDEST POP PUSH2 0x40E PUSH2 0x502 CALLDATASIZE PUSH1 0x4 PUSH2 0x40EC JUMP JUMPDEST PUSH2 0xD7F JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x512 JUMPI PUSH0 PUSH0 REVERT JUMPDEST POP PUSH2 0x526 PUSH2 0x521 CALLDATASIZE PUSH1 0x4 PUSH2 0x4215 JUMP JUMPDEST PUSH2 0xF84 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xE0 SHL SUB NOT SWAP1 SWAP2 AND DUP2 MSTORE PUSH1 0x20 ADD PUSH2 0x276 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x54A JUMPI PUSH0 PUSH0 REVERT JUMPDEST POP PUSH2 0x40E PUSH2 0x559 CALLDATASIZE PUSH1 0x4 PUSH2 0x42D9 JUMP JUMPDEST PUSH2 0xFE2 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x569 JUMPI PUSH0 PUSH0 REVERT JUMPDEST POP PUSH2 0x26C PUSH2 0x578 CALLDATASIZE PUSH1 0x4 PUSH2 0x416C JUMP JUMPDEST PUSH2 0x1241 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x588 JUMPI PUSH0 PUSH0 REVERT JUMPDEST POP PUSH2 0x293 PUSH2 0x128D JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x59C JUMPI PUSH0 PUSH0 REVERT JUMPDEST POP PUSH2 0x40E PUSH2 0x5AB CALLDATASIZE PUSH1 0x4 PUSH2 0x430A JUMP JUMPDEST PUSH2 0x12CB JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x5BB JUMPI PUSH0 PUSH0 REVERT JUMPDEST POP PUSH2 0x40E PUSH2 0x5CA CALLDATASIZE PUSH1 0x4 PUSH2 0x4421 JUMP JUMPDEST PUSH2 0x18E2 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x5DA JUMPI PUSH0 PUSH0 REVERT JUMPDEST POP PUSH2 0x2DE PUSH2 0x5E9 CALLDATASIZE PUSH1 0x4 PUSH2 0x3F46 JUMP JUMPDEST PUSH2 0x19E5 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x5F9 JUMPI PUSH0 PUSH0 REVERT JUMPDEST POP PUSH2 0x293 PUSH1 0x40 MLOAD DUP1 PUSH1 0x40 ADD PUSH1 0x40 MSTORE DUP1 PUSH1 0x5 DUP2 MSTORE PUSH1 0x20 ADD PUSH5 0x352E302E3 PUSH1 0xDC SHL DUP2 MSTORE POP DUP2 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x629 JUMPI PUSH0 PUSH0 REVERT JUMPDEST POP PUSH2 0x26C PUSH2 0x638 CALLDATASIZE PUSH1 0x4 PUSH2 0x3F1B JUMP JUMPDEST PUSH2 0x19F2 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x648 JUMPI PUSH0 PUSH0 REVERT JUMPDEST POP PUSH2 0x26C PUSH2 0x657 CALLDATASIZE PUSH1 0x4 PUSH2 0x4538 JUMP JUMPDEST PUSH2 0x19FE JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x667 JUMPI PUSH0 PUSH0 REVERT JUMPDEST POP PUSH2 0x26C PUSH2 0x676 CALLDATASIZE PUSH1 0x4 PUSH2 0x4538 JUMP JUMPDEST PUSH2 0x1A4B JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x686 JUMPI PUSH0 PUSH0 REVERT JUMPDEST POP PUSH2 0x40E PUSH2 0x695 CALLDATASIZE PUSH1 0x4 PUSH2 0x42D9 JUMP JUMPDEST PUSH2 0x1A98 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x6A5 JUMPI PUSH0 PUSH0 REVERT JUMPDEST POP PUSH2 0x26C PUSH2 0x6B4 CALLDATASIZE PUSH1 0x4 PUSH2 0x40D1 JUMP JUMPDEST PUSH2 0x1CE4 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x6C4 JUMPI PUSH0 PUSH0 REVERT JUMPDEST POP PUSH2 0x26C PUSH2 0x6D3 CALLDATASIZE PUSH1 0x4 PUSH2 0x3F1B JUMP JUMPDEST PUSH2 0x1D10 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x6E3 JUMPI PUSH0 PUSH0 REVERT JUMPDEST POP PUSH2 0x26C PUSH2 0x6F2 CALLDATASIZE PUSH1 0x4 PUSH2 0x40D1 JUMP JUMPDEST PUSH2 0x1D1B JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x702 JUMPI PUSH0 PUSH0 REVERT JUMPDEST POP PUSH2 0x26C PUSH2 0x711 CALLDATASIZE PUSH1 0x4 PUSH2 0x40D1 JUMP JUMPDEST PUSH2 0x1D31 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x721 JUMPI PUSH0 PUSH0 REVERT JUMPDEST POP PUSH2 0x72A PUSH2 0x1D76 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0x276 SWAP2 SWAP1 PUSH2 0x4577 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x742 JUMPI PUSH0 PUSH0 REVERT JUMPDEST POP PUSH2 0x26C PUSH2 0x751 CALLDATASIZE PUSH1 0x4 PUSH2 0x45A8 JUMP JUMPDEST PUSH2 0x1DBC JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x761 JUMPI PUSH0 PUSH0 REVERT JUMPDEST POP PUSH2 0x26C PUSH2 0x770 CALLDATASIZE PUSH1 0x4 PUSH2 0x45D4 JUMP JUMPDEST PUSH2 0x1E05 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x780 JUMPI PUSH0 PUSH0 REVERT JUMPDEST POP PUSH2 0x456 PUSH2 0x1FF5 JUMP JUMPDEST PUSH0 PUSH2 0x792 PUSH2 0x2030 JUMP JUMPDEST SWAP1 POP SWAP1 JUMP JUMPDEST PUSH32 0x52C63247E1F47DB19D5CE0460030C497F067CA4CEBF71BA98EEADABE20BACE03 DUP1 SLOAD PUSH1 0x60 SWAP2 PUSH0 MLOAD PUSH1 0x20 PUSH2 0x4A2E PUSH0 CODECOPY PUSH0 MLOAD SWAP1 PUSH0 MSTORE SWAP2 PUSH2 0x7D5 SWAP1 PUSH2 0x45FD 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 0x801 SWAP1 PUSH2 0x45FD JUMP JUMPDEST DUP1 ISZERO PUSH2 0x84C JUMPI DUP1 PUSH1 0x1F LT PUSH2 0x823 JUMPI PUSH2 0x100 DUP1 DUP4 SLOAD DIV MUL DUP4 MSTORE SWAP2 PUSH1 0x20 ADD SWAP2 PUSH2 0x84C JUMP JUMPDEST DUP3 ADD SWAP2 SWAP1 PUSH0 MSTORE PUSH1 0x20 PUSH0 KECCAK256 SWAP1 JUMPDEST DUP2 SLOAD DUP2 MSTORE SWAP1 PUSH1 0x1 ADD SWAP1 PUSH1 0x20 ADD DUP1 DUP4 GT PUSH2 0x82F JUMPI DUP3 SWAP1 SUB PUSH1 0x1F AND DUP3 ADD SWAP2 JUMPDEST POP POP POP POP POP SWAP2 POP POP SWAP1 JUMP JUMPDEST PUSH0 PUSH2 0x862 DUP3 PUSH0 PUSH2 0x20AB JUMP JUMPDEST SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH0 CALLER PUSH2 0x875 DUP2 DUP6 DUP6 PUSH2 0x2102 JUMP JUMPDEST POP PUSH1 0x1 SWAP4 SWAP3 POP POP POP JUMP JUMPDEST PUSH0 PUSH2 0x862 DUP3 PUSH1 0x1 PUSH2 0x2114 JUMP JUMPDEST PUSH0 CALLER PUSH2 0x898 DUP6 DUP3 DUP6 PUSH2 0x2162 JUMP JUMPDEST PUSH2 0x8A3 DUP6 DUP6 DUP6 PUSH2 0x21B3 JUMP JUMPDEST PUSH1 0x1 SWAP2 POP POP JUMPDEST SWAP4 SWAP3 POP POP POP JUMP JUMPDEST PUSH0 DUP1 PUSH32 0x773E532DFEDE91F04B12A73D3D2ACD361424F41F76B4FB79F090161E36B4E00 SWAP1 POP PUSH0 DUP2 SLOAD PUSH2 0x8EC SWAP2 SWAP1 PUSH1 0x1 PUSH1 0xA0 SHL SWAP1 DIV PUSH1 0xFF AND PUSH2 0x4649 JUMP JUMPDEST SWAP2 POP POP SWAP1 JUMP JUMPDEST PUSH32 0x773E532DFEDE91F04B12A73D3D2ACD361424F41F76B4FB79F090161E36B4E00 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND SWAP1 JUMP JUMPDEST PUSH1 0x60 PUSH2 0x92D DUP5 DUP5 DUP5 PUSH2 0x2210 JUMP JUMPDEST PUSH0 PUSH1 0x2 DUP6 PUSH1 0xFF AND PUSH1 0x20 DUP2 LT PUSH2 0x944 JUMPI PUSH2 0x944 PUSH2 0x4662 JUMP JUMPDEST ADD SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND SWAP1 POP DUP1 PUSH2 0x96F JUMPI PUSH1 0x40 MLOAD PUSH4 0x2711B74D PUSH1 0xE1 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH2 0x99C DUP5 DUP5 PUSH1 0x2 DUP9 PUSH1 0xFF AND PUSH1 0x20 DUP2 LT PUSH2 0x98A JUMPI PUSH2 0x98A PUSH2 0x4662 JUMP JUMPDEST ADD SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND SWAP2 SWAP1 PUSH2 0x232E JUMP JUMPDEST SWAP6 SWAP5 POP POP POP POP POP JUMP JUMPDEST PUSH0 PUSH2 0x862 PUSH2 0x2380 JUMP JUMPDEST PUSH2 0x9B7 DUP2 PUSH2 0x2414 JUMP JUMPDEST POP JUMP JUMPDEST PUSH1 0x60 PUSH0 JUMPDEST PUSH0 PUSH1 0x2 DUP3 PUSH1 0x20 DUP2 LT PUSH2 0x9D2 JUMPI PUSH2 0x9D2 PUSH2 0x4662 JUMP JUMPDEST ADD SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND EQ DUP1 ISZERO SWAP1 PUSH2 0x9EB JUMPI POP PUSH1 0x20 DUP2 LT JUMPDEST ISZERO PUSH2 0xB20 JUMPI PUSH1 0x2 DUP2 PUSH1 0x20 DUP2 LT PUSH2 0xA03 JUMPI PUSH2 0xA03 PUSH2 0x4662 JUMP JUMPDEST ADD PUSH0 SWAP1 SLOAD SWAP1 PUSH2 0x100 EXP SWAP1 DIV PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH4 0x5B9A4C35 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 GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0xA52 JUMPI RETURNDATASIZE PUSH0 PUSH0 RETURNDATACOPY RETURNDATASIZE PUSH0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP3 ADD DUP1 PUSH1 0x40 MSTORE POP DUP2 ADD SWAP1 PUSH2 0xA76 SWAP2 SWAP1 PUSH2 0x4676 JUMP JUMPDEST DUP4 SUB PUSH2 0xB10 JUMPI DUP3 SLOAD DUP4 SWAP1 DUP2 SWAP1 PUSH2 0xA8B SWAP1 PUSH2 0x45FD 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 0xAB7 SWAP1 PUSH2 0x45FD JUMP JUMPDEST DUP1 ISZERO PUSH2 0xB02 JUMPI DUP1 PUSH1 0x1F LT PUSH2 0xAD9 JUMPI PUSH2 0x100 DUP1 DUP4 SLOAD DIV MUL DUP4 MSTORE SWAP2 PUSH1 0x20 ADD SWAP2 PUSH2 0xB02 JUMP JUMPDEST DUP3 ADD SWAP2 SWAP1 PUSH0 MSTORE PUSH1 0x20 PUSH0 KECCAK256 SWAP1 JUMPDEST DUP2 SLOAD DUP2 MSTORE SWAP1 PUSH1 0x1 ADD SWAP1 PUSH1 0x20 ADD DUP1 DUP4 GT PUSH2 0xAE5 JUMPI DUP3 SWAP1 SUB PUSH1 0x1F AND DUP3 ADD SWAP2 JUMPDEST POP POP POP POP POP SWAP3 POP POP POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH2 0xB19 DUP2 PUSH2 0x468D JUMP JUMPDEST SWAP1 POP PUSH2 0x9BE JUMP JUMPDEST POP PUSH1 0x40 MLOAD PUSH4 0x213109DD PUSH1 0xE1 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH2 0xB42 PUSH2 0x252B JUMP JUMPDEST PUSH2 0xB4C DUP3 DUP3 PUSH2 0x25D1 JUMP JUMPDEST POP POP JUMP JUMPDEST PUSH2 0xB58 PUSH2 0x3EBC JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH2 0x400 DUP2 ADD SWAP2 DUP3 SWAP1 MSTORE SWAP1 PUSH1 0x1 SWAP1 PUSH1 0x20 SWAP1 DUP3 PUSH0 DUP6 JUMPDEST DUP3 SLOAD PUSH2 0x100 DUP4 SWAP1 EXP SWAP1 DIV PUSH1 0xFF AND DUP2 MSTORE PUSH1 0x20 PUSH1 0x1 SWAP3 DUP4 ADD DUP2 DUP2 DIV SWAP5 DUP6 ADD SWAP5 SWAP1 SWAP4 SUB SWAP1 SWAP3 MUL SWAP2 ADD DUP1 DUP5 GT PUSH2 0xB70 JUMPI SWAP1 POP POP POP POP POP POP SWAP1 POP SWAP1 JUMP JUMPDEST PUSH0 PUSH2 0xBB1 PUSH2 0x268D JUMP JUMPDEST POP PUSH0 MLOAD PUSH1 0x20 PUSH2 0x4A4E PUSH0 CODECOPY PUSH0 MLOAD SWAP1 PUSH0 MSTORE SWAP1 JUMP JUMPDEST PUSH0 PUSH0 PUSH2 0xBCE DUP4 PUSH2 0x9A5 JUMP JUMPDEST SWAP1 POP DUP1 DUP5 GT ISZERO PUSH2 0xC00 JUMPI DUP3 DUP5 DUP3 PUSH1 0x40 MLOAD PUSH4 0x3C8097D9 PUSH1 0xE1 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0xBF7 SWAP4 SWAP3 SWAP2 SWAP1 PUSH2 0x46A5 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH0 PUSH2 0xC0A DUP6 PUSH2 0x1D10 JUMP JUMPDEST SWAP1 POP PUSH2 0xC18 CALLER DUP6 DUP8 DUP5 PUSH2 0x26D6 JUMP JUMPDEST SWAP5 SWAP4 POP POP POP POP JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH0 SWAP1 DUP2 MSTORE PUSH0 MLOAD PUSH1 0x20 PUSH2 0x4A2E PUSH0 CODECOPY PUSH0 MLOAD SWAP1 PUSH0 MSTORE PUSH1 0x20 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD SWAP1 JUMP JUMPDEST PUSH0 PUSH1 0x2 DUP6 PUSH1 0xFF AND PUSH1 0x20 DUP2 LT PUSH2 0xC5D JUMPI PUSH2 0xC5D PUSH2 0x4662 JUMP JUMPDEST ADD SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND SWAP1 POP DUP1 PUSH2 0xC88 JUMPI PUSH1 0x40 MLOAD PUSH4 0x2711B74D PUSH1 0xE1 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH0 JUMPDEST PUSH1 0x20 DUP2 LT DUP1 ISZERO PUSH2 0xCB7 JUMPI POP PUSH0 PUSH1 0x2 DUP3 PUSH1 0x20 DUP2 LT PUSH2 0xCA9 JUMPI PUSH2 0xCA9 PUSH2 0x4662 JUMP JUMPDEST ADD SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND EQ ISZERO JUMPDEST ISZERO PUSH2 0xD2D JUMPI DUP5 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH1 0x2 DUP3 PUSH1 0x20 DUP2 LT PUSH2 0xCD9 JUMPI PUSH2 0xCD9 PUSH2 0x4662 JUMP JUMPDEST ADD SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND EQ DUP1 ISZERO PUSH2 0xCF4 JUMPI POP DUP6 PUSH1 0xFF AND DUP2 EQ ISZERO JUMPDEST ISZERO PUSH2 0xD1D JUMPI PUSH1 0x40 MLOAD PUSH4 0xB5A9314F PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP7 AND PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x24 ADD PUSH2 0xBF7 JUMP JUMPDEST PUSH2 0xD26 DUP2 PUSH2 0x468D JUMP JUMPDEST SWAP1 POP PUSH2 0xC8A JUMP JUMPDEST POP PUSH2 0xD42 DUP2 DUP6 DUP6 PUSH2 0xD3C PUSH2 0x26EB JUMP JUMPDEST DUP7 PUSH2 0x26F4 JUMP JUMPDEST DUP4 PUSH1 0x2 DUP7 PUSH1 0xFF AND PUSH1 0x20 DUP2 LT PUSH2 0xD59 JUMPI PUSH2 0xD59 PUSH2 0x4662 JUMP JUMPDEST ADD DUP1 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB NOT AND PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP3 SWAP1 SWAP3 AND SWAP2 SWAP1 SWAP2 OR SWAP1 SSTORE POP POP POP POP POP JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP3 AND PUSH2 0xDA6 JUMPI PUSH1 0x40 MLOAD PUSH4 0x2711B74D PUSH1 0xE1 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH0 JUMPDEST PUSH1 0x20 DUP2 LT DUP1 ISZERO PUSH2 0xDD5 JUMPI POP PUSH0 PUSH1 0x2 DUP3 PUSH1 0x20 DUP2 LT PUSH2 0xDC7 JUMPI PUSH2 0xDC7 PUSH2 0x4662 JUMP JUMPDEST ADD SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND EQ ISZERO JUMPDEST ISZERO PUSH2 0xE3B JUMPI DUP3 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH1 0x2 DUP3 PUSH1 0x20 DUP2 LT PUSH2 0xDF7 JUMPI PUSH2 0xDF7 PUSH2 0x4662 JUMP JUMPDEST ADD SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND SUB PUSH2 0xE2B JUMPI PUSH1 0x40 MLOAD PUSH4 0xB5A9314F PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP5 AND PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x24 ADD PUSH2 0xBF7 JUMP JUMPDEST PUSH2 0xE34 DUP2 PUSH2 0x468D JUMP JUMPDEST SWAP1 POP PUSH2 0xDA8 JUMP JUMPDEST PUSH1 0x1F NOT DUP2 ADD PUSH2 0xE60 JUMPI PUSH1 0x40 MLOAD PUSH1 0x1 PUSH3 0xAD1FAB PUSH1 0xE0 SHL SUB NOT DUP2 MSTORE PUSH1 0x4 ADD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST DUP3 PUSH1 0x2 DUP3 PUSH1 0x20 DUP2 LT PUSH2 0xE74 JUMPI PUSH2 0xE74 PUSH2 0x4662 JUMP JUMPDEST ADD DUP1 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB NOT AND PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP3 SWAP1 SWAP3 AND SWAP2 SWAP1 SWAP2 OR SWAP1 SSTORE PUSH2 0xE9E DUP2 PUSH1 0x1 PUSH2 0x46C6 JUMP JUMPDEST PUSH0 DUP3 PUSH1 0x20 DUP2 LT PUSH2 0xEB0 JUMPI PUSH2 0xEB0 PUSH2 0x4662 JUMP JUMPDEST PUSH1 0x20 SWAP2 DUP3 DUP3 DIV ADD SWAP2 SWAP1 MOD PUSH2 0x100 EXP DUP2 SLOAD DUP2 PUSH1 0xFF MUL NOT AND SWAP1 DUP4 PUSH1 0xFF AND MUL OR SWAP1 SSTORE POP DUP1 PUSH1 0x1 PUSH2 0xEDD SWAP2 SWAP1 PUSH2 0x46C6 JUMP JUMPDEST PUSH1 0x1 DUP3 PUSH1 0x20 DUP2 LT PUSH2 0xEF0 JUMPI PUSH2 0xEF0 PUSH2 0x4662 JUMP JUMPDEST PUSH1 0x20 SWAP2 DUP3 DUP3 DIV ADD SWAP2 SWAP1 MOD PUSH2 0x100 EXP DUP2 SLOAD DUP2 PUSH1 0xFF MUL NOT AND SWAP1 DUP4 PUSH1 0xFF AND MUL OR SWAP1 SSTORE POP PUSH2 0xF2B PUSH2 0xF1B PUSH2 0x26EB JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP6 AND SWAP1 PUSH2 0x2842 JUMP JUMPDEST PUSH2 0xF3E PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP5 AND DUP4 PUSH2 0x28D4 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH1 0xFF DUP3 AND DUP2 MSTORE PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP5 AND SWAP1 PUSH32 0x4973F7978F2B1810531AED51DC15A8E446CB3191AFCCA470F8CE464AF7494F58 SWAP1 PUSH1 0x20 ADD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 LOG2 POP POP POP JUMP JUMPDEST PUSH0 PUSH0 PUSH1 0x2 DUP5 PUSH1 0xFF AND PUSH1 0x20 DUP2 LT PUSH2 0xF9C JUMPI PUSH2 0xF9C PUSH2 0x4662 JUMP JUMPDEST ADD SLOAD PUSH1 0x40 DUP1 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP1 SWAP3 AND PUSH1 0x20 DUP4 ADD DUP2 SWAP1 MSTORE PUSH1 0xFF DUP7 AND SWAP2 DUP4 ADD SWAP2 SWAP1 SWAP2 MSTORE SWAP2 POP PUSH2 0xC18 SWAP1 PUSH1 0x60 ADD PUSH1 0x40 MLOAD PUSH1 0x20 DUP2 DUP4 SUB SUB DUP2 MSTORE SWAP1 PUSH1 0x40 MSTORE DUP1 MLOAD PUSH1 0x20 SWAP1 SWAP2 ADD KECCAK256 SWAP1 JUMP JUMPDEST PUSH2 0xFEA PUSH2 0x3EBC JUMP JUMPDEST DUP2 MLOAD PUSH0 SWAP1 PUSH1 0x20 LT ISZERO PUSH2 0x100F JUMPI PUSH1 0x40 MLOAD PUSH4 0xA29B1F11 PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST DUP3 MLOAD DUP2 LT ISZERO PUSH2 0x11BA JUMPI PUSH1 0x20 PUSH1 0xFF AND DUP4 DUP3 DUP2 MLOAD DUP2 LT PUSH2 0x102F JUMPI PUSH2 0x102F PUSH2 0x4662 JUMP JUMPDEST PUSH1 0x20 MUL PUSH1 0x20 ADD ADD MLOAD PUSH1 0xFF AND LT ISZERO DUP1 PUSH2 0x1088 JUMPI POP PUSH0 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH1 0x2 DUP5 DUP4 DUP2 MLOAD DUP2 LT PUSH2 0x1060 JUMPI PUSH2 0x1060 PUSH2 0x4662 JUMP JUMPDEST PUSH1 0x20 MUL PUSH1 0x20 ADD ADD MLOAD PUSH1 0xFF AND PUSH1 0x20 DUP2 LT PUSH2 0x107B JUMPI PUSH2 0x107B PUSH2 0x4662 JUMP JUMPDEST ADD SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND EQ JUMPDEST ISZERO PUSH2 0x10A6 JUMPI PUSH1 0x40 MLOAD PUSH4 0xA29B1F11 PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST DUP2 DUP4 DUP3 DUP2 MLOAD DUP2 LT PUSH2 0x10B9 JUMPI PUSH2 0x10B9 PUSH2 0x4662 JUMP JUMPDEST PUSH1 0x20 MUL PUSH1 0x20 ADD ADD MLOAD PUSH1 0xFF AND PUSH1 0x20 DUP2 LT PUSH2 0x10D4 JUMPI PUSH2 0x10D4 PUSH2 0x4662 JUMP JUMPDEST PUSH1 0x20 MUL ADD MLOAD ISZERO PUSH2 0x111B JUMPI DUP3 DUP2 DUP2 MLOAD DUP2 LT PUSH2 0x10F0 JUMPI PUSH2 0x10F0 PUSH2 0x4662 JUMP JUMPDEST PUSH1 0x20 MUL PUSH1 0x20 ADD ADD MLOAD PUSH1 0x40 MLOAD PUSH4 0xC41FDBB9 PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0xBF7 SWAP2 SWAP1 PUSH1 0xFF SWAP2 SWAP1 SWAP2 AND DUP2 MSTORE PUSH1 0x20 ADD SWAP1 JUMP JUMPDEST PUSH1 0x1 DUP3 DUP5 DUP4 DUP2 MLOAD DUP2 LT PUSH2 0x1130 JUMPI PUSH2 0x1130 PUSH2 0x4662 JUMP JUMPDEST PUSH1 0x20 MUL PUSH1 0x20 ADD ADD MLOAD PUSH1 0xFF AND PUSH1 0x20 DUP2 LT PUSH2 0x114B JUMPI PUSH2 0x114B PUSH2 0x4662 JUMP JUMPDEST SWAP2 ISZERO ISZERO PUSH1 0x20 SWAP1 SWAP3 MUL ADD MSTORE DUP3 MLOAD DUP4 SWAP1 DUP3 SWAP1 DUP2 LT PUSH2 0x1169 JUMPI PUSH2 0x1169 PUSH2 0x4662 JUMP JUMPDEST PUSH1 0x20 MUL PUSH1 0x20 ADD ADD MLOAD PUSH1 0x1 PUSH2 0x117D SWAP2 SWAP1 PUSH2 0x4649 JUMP JUMPDEST PUSH0 DUP3 PUSH1 0x20 DUP2 LT PUSH2 0x118F JUMPI PUSH2 0x118F PUSH2 0x4662 JUMP JUMPDEST PUSH1 0x20 SWAP2 DUP3 DUP3 DIV ADD SWAP2 SWAP1 MOD PUSH2 0x100 EXP DUP2 SLOAD DUP2 PUSH1 0xFF MUL NOT AND SWAP1 DUP4 PUSH1 0xFF AND MUL OR SWAP1 SSTORE POP DUP1 PUSH1 0x1 ADD SWAP1 POP PUSH2 0x100F JUMP JUMPDEST PUSH1 0x20 DUP2 LT DUP1 ISZERO PUSH2 0x11E7 JUMPI POP PUSH0 PUSH1 0x2 DUP3 PUSH1 0x20 DUP2 LT PUSH2 0x11D9 JUMPI PUSH2 0x11D9 PUSH2 0x4662 JUMP JUMPDEST ADD SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND EQ ISZERO JUMPDEST ISZERO PUSH2 0x1205 JUMPI PUSH1 0x40 MLOAD PUSH4 0x6712B27B PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH32 0x193FC4E628C27AE3CA098952DFC16A40425B44E7B0A97F4CC59D0F267F47CAEC DUP4 PUSH1 0x40 MLOAD PUSH2 0x1234 SWAP2 SWAP1 PUSH2 0x46D9 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 LOG1 POP POP POP JUMP JUMPDEST PUSH0 PUSH0 PUSH2 0x124C DUP4 PUSH2 0x1CE4 JUMP JUMPDEST SWAP1 POP DUP1 DUP5 GT ISZERO PUSH2 0x1275 JUMPI DUP3 DUP5 DUP3 PUSH1 0x40 MLOAD PUSH4 0x284FF667 PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0xBF7 SWAP4 SWAP3 SWAP2 SWAP1 PUSH2 0x46A5 JUMP JUMPDEST PUSH0 PUSH2 0x127F DUP6 PUSH2 0x19F2 JUMP JUMPDEST SWAP1 POP PUSH2 0xC18 CALLER DUP6 DUP4 DUP9 PUSH2 0x26D6 JUMP JUMPDEST PUSH32 0x52C63247E1F47DB19D5CE0460030C497F067CA4CEBF71BA98EEADABE20BACE04 DUP1 SLOAD PUSH1 0x60 SWAP2 PUSH0 MLOAD PUSH1 0x20 PUSH2 0x4A2E PUSH0 CODECOPY PUSH0 MLOAD SWAP1 PUSH0 MSTORE SWAP2 PUSH2 0x7D5 SWAP1 PUSH2 0x45FD JUMP JUMPDEST PUSH1 0x20 PUSH1 0xFF DUP4 AND LT PUSH2 0x12EF JUMPI PUSH1 0x40 MLOAD PUSH4 0x2711B74D PUSH1 0xE1 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH0 PUSH1 0x2 DUP4 PUSH1 0xFF AND PUSH1 0x20 DUP2 LT PUSH2 0x1306 JUMPI PUSH2 0x1306 PUSH2 0x4662 JUMP JUMPDEST ADD SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND SWAP1 POP DUP1 PUSH2 0x1331 JUMPI PUSH1 0x40 MLOAD PUSH4 0x2711B74D PUSH1 0xE1 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST DUP2 ISZERO DUP1 ISZERO PUSH2 0x134F JUMPI POP PUSH2 0x134C DUP2 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH2 0x2922 JUMP JUMPDEST ISZERO ISZERO JUMPDEST ISZERO PUSH2 0x136D JUMPI PUSH1 0x40 MLOAD PUSH4 0x43C2DFEF PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH1 0xFF DUP4 AND ISZERO DUP1 ISZERO PUSH2 0x1387 JUMPI POP PUSH1 0x3 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND ISZERO JUMPDEST ISZERO PUSH2 0x13A8 JUMPI PUSH1 0x40 MLOAD PUSH1 0x1 PUSH3 0xAD1FAB PUSH1 0xE0 SHL SUB NOT DUP2 MSTORE PUSH1 0x4 ADD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH0 PUSH2 0x13B4 DUP5 PUSH1 0x1 PUSH2 0x4649 JUMP JUMPDEST PUSH1 0xFF AND SWAP1 POP JUMPDEST PUSH1 0x20 DUP2 LT DUP1 ISZERO PUSH2 0x13E7 JUMPI POP PUSH0 PUSH1 0x2 DUP3 PUSH1 0x20 DUP2 LT PUSH2 0x13D9 JUMPI PUSH2 0x13D9 PUSH2 0x4662 JUMP JUMPDEST ADD SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND EQ ISZERO JUMPDEST ISZERO PUSH2 0x1456 JUMPI PUSH1 0x2 DUP2 PUSH1 0x20 DUP2 LT PUSH2 0x13FF JUMPI PUSH2 0x13FF PUSH2 0x4662 JUMP JUMPDEST ADD SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH1 0x2 PUSH2 0x1417 PUSH1 0x1 DUP5 PUSH2 0x471E JUMP JUMPDEST PUSH1 0x20 DUP2 LT PUSH2 0x1427 JUMPI PUSH2 0x1427 PUSH2 0x4662 JUMP JUMPDEST ADD DUP1 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB NOT AND PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP3 SWAP1 SWAP3 AND SWAP2 SWAP1 SWAP2 OR SWAP1 SSTORE PUSH2 0x144F DUP2 PUSH2 0x468D JUMP JUMPDEST SWAP1 POP PUSH2 0x13BA JUMP JUMPDEST PUSH0 PUSH1 0x2 PUSH2 0x1464 PUSH1 0x1 DUP5 PUSH2 0x471E JUMP JUMPDEST PUSH1 0x20 DUP2 LT PUSH2 0x1474 JUMPI PUSH2 0x1474 PUSH2 0x4662 JUMP JUMPDEST ADD DUP1 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB NOT AND PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP3 SWAP1 SWAP3 AND SWAP2 SWAP1 SWAP2 OR SWAP1 SSTORE POP PUSH0 DUP1 DUP1 JUMPDEST PUSH1 0x1 DUP4 PUSH1 0x20 DUP2 LT PUSH2 0x14AB JUMPI PUSH2 0x14AB PUSH2 0x4662 JUMP JUMPDEST PUSH1 0x20 DUP2 DIV SWAP1 SWAP2 ADD SLOAD PUSH1 0xFF PUSH1 0x1F SWAP1 SWAP3 AND PUSH2 0x100 EXP SWAP1 DIV AND ISZERO DUP1 ISZERO SWAP1 PUSH2 0x14CF JUMPI POP PUSH1 0x20 DUP4 LT JUMPDEST ISZERO PUSH2 0x1801 JUMPI DUP1 ISZERO PUSH2 0x1593 JUMPI PUSH2 0x14E5 DUP7 PUSH1 0x1 PUSH2 0x4649 JUMP JUMPDEST PUSH1 0xFF AND PUSH1 0x1 DUP5 PUSH1 0x20 DUP2 LT PUSH2 0x14FB JUMPI PUSH2 0x14FB PUSH2 0x4662 JUMP JUMPDEST PUSH1 0x20 DUP2 DIV SWAP1 SWAP2 ADD SLOAD PUSH1 0xFF PUSH1 0x1F SWAP1 SWAP3 AND PUSH2 0x100 EXP SWAP1 DIV AND GT PUSH2 0x151C JUMPI PUSH0 PUSH2 0x151F JUMP JUMPDEST PUSH1 0x1 JUMPDEST PUSH1 0x1 DUP5 PUSH1 0x20 DUP2 LT PUSH2 0x1532 JUMPI PUSH2 0x1532 PUSH2 0x4662 JUMP JUMPDEST PUSH1 0x20 SWAP2 DUP3 DUP3 DIV ADD SWAP2 SWAP1 MOD SWAP1 SLOAD SWAP1 PUSH2 0x100 EXP SWAP1 DIV PUSH1 0xFF AND PUSH2 0x1552 SWAP2 SWAP1 PUSH2 0x4731 JUMP JUMPDEST PUSH1 0x1 PUSH2 0x155E DUP2 DUP7 PUSH2 0x471E JUMP JUMPDEST PUSH1 0x20 DUP2 LT PUSH2 0x156E JUMPI PUSH2 0x156E PUSH2 0x4662 JUMP JUMPDEST PUSH1 0x20 SWAP2 DUP3 DUP3 DIV ADD SWAP2 SWAP1 MOD PUSH2 0x100 EXP DUP2 SLOAD DUP2 PUSH1 0xFF MUL NOT AND SWAP1 DUP4 PUSH1 0xFF AND MUL OR SWAP1 SSTORE POP PUSH2 0x1664 JUMP JUMPDEST PUSH2 0x159E DUP7 PUSH1 0x1 PUSH2 0x4649 JUMP JUMPDEST PUSH1 0xFF AND PUSH1 0x1 DUP5 PUSH1 0x20 DUP2 LT PUSH2 0x15B4 JUMPI PUSH2 0x15B4 PUSH2 0x4662 JUMP JUMPDEST PUSH1 0x20 DUP2 DIV SWAP1 SWAP2 ADD SLOAD PUSH1 0xFF PUSH1 0x1F SWAP1 SWAP3 AND PUSH2 0x100 EXP SWAP1 DIV AND SUB PUSH2 0x15D7 JUMPI POP PUSH1 0x1 PUSH2 0x1664 JUMP JUMPDEST PUSH2 0x15E2 DUP7 PUSH1 0x1 PUSH2 0x4649 JUMP JUMPDEST PUSH1 0xFF AND PUSH1 0x1 DUP5 PUSH1 0x20 DUP2 LT PUSH2 0x15F8 JUMPI PUSH2 0x15F8 PUSH2 0x4662 JUMP JUMPDEST PUSH1 0x20 DUP2 DIV SWAP1 SWAP2 ADD SLOAD PUSH1 0xFF PUSH1 0x1F SWAP1 SWAP3 AND PUSH2 0x100 EXP SWAP1 DIV AND GT ISZERO PUSH2 0x1664 JUMPI PUSH1 0x1 DUP1 DUP5 PUSH1 0x20 DUP2 LT PUSH2 0x1628 JUMPI PUSH2 0x1628 PUSH2 0x4662 JUMP JUMPDEST PUSH1 0x20 SWAP2 DUP3 DUP3 DIV ADD SWAP2 SWAP1 MOD DUP3 DUP3 DUP3 SWAP1 SLOAD SWAP1 PUSH2 0x100 EXP SWAP1 DIV PUSH1 0xFF AND PUSH2 0x164B SWAP2 SWAP1 PUSH2 0x4731 JUMP JUMPDEST SWAP3 POP PUSH2 0x100 EXP DUP2 SLOAD DUP2 PUSH1 0xFF MUL NOT AND SWAP1 DUP4 PUSH1 0xFF AND MUL OR SWAP1 SSTORE POP JUMPDEST DUP2 ISZERO PUSH2 0x1721 JUMPI PUSH2 0x1675 DUP7 PUSH1 0x1 PUSH2 0x4649 JUMP JUMPDEST PUSH1 0xFF AND PUSH0 DUP5 PUSH1 0x20 DUP2 LT PUSH2 0x168A JUMPI PUSH2 0x168A PUSH2 0x4662 JUMP JUMPDEST PUSH1 0x20 DUP2 DIV SWAP1 SWAP2 ADD SLOAD PUSH1 0xFF PUSH1 0x1F SWAP1 SWAP3 AND PUSH2 0x100 EXP SWAP1 DIV AND GT PUSH2 0x16AB JUMPI PUSH0 PUSH2 0x16AE JUMP JUMPDEST PUSH1 0x1 JUMPDEST PUSH0 DUP5 PUSH1 0x20 DUP2 LT PUSH2 0x16C0 JUMPI PUSH2 0x16C0 PUSH2 0x4662 JUMP JUMPDEST PUSH1 0x20 SWAP2 DUP3 DUP3 DIV ADD SWAP2 SWAP1 MOD SWAP1 SLOAD SWAP1 PUSH2 0x100 EXP SWAP1 DIV PUSH1 0xFF AND PUSH2 0x16E0 SWAP2 SWAP1 PUSH2 0x4731 JUMP JUMPDEST PUSH0 PUSH2 0x16EC PUSH1 0x1 DUP7 PUSH2 0x471E JUMP JUMPDEST PUSH1 0x20 DUP2 LT PUSH2 0x16FC JUMPI PUSH2 0x16FC PUSH2 0x4662 JUMP JUMPDEST PUSH1 0x20 SWAP2 DUP3 DUP3 DIV ADD SWAP2 SWAP1 MOD PUSH2 0x100 EXP DUP2 SLOAD DUP2 PUSH1 0xFF MUL NOT AND SWAP1 DUP4 PUSH1 0xFF AND MUL OR SWAP1 SSTORE POP PUSH2 0x17F1 JUMP JUMPDEST PUSH2 0x172C DUP7 PUSH1 0x1 PUSH2 0x4649 JUMP JUMPDEST PUSH1 0xFF AND PUSH0 DUP5 PUSH1 0x20 DUP2 LT PUSH2 0x1741 JUMPI PUSH2 0x1741 PUSH2 0x4662 JUMP JUMPDEST PUSH1 0x20 DUP2 DIV SWAP1 SWAP2 ADD SLOAD PUSH1 0xFF PUSH1 0x1F SWAP1 SWAP3 AND PUSH2 0x100 EXP SWAP1 DIV AND SUB PUSH2 0x1765 JUMPI PUSH1 0x1 SWAP2 POP PUSH2 0x17F1 JUMP JUMPDEST PUSH2 0x1770 DUP7 PUSH1 0x1 PUSH2 0x4649 JUMP JUMPDEST PUSH1 0xFF AND PUSH0 DUP5 PUSH1 0x20 DUP2 LT PUSH2 0x1785 JUMPI PUSH2 0x1785 PUSH2 0x4662 JUMP JUMPDEST PUSH1 0x20 DUP2 DIV SWAP1 SWAP2 ADD SLOAD PUSH1 0xFF PUSH1 0x1F SWAP1 SWAP3 AND PUSH2 0x100 EXP SWAP1 DIV AND GT ISZERO PUSH2 0x17F1 JUMPI PUSH1 0x1 PUSH0 DUP5 PUSH1 0x20 DUP2 LT PUSH2 0x17B5 JUMPI PUSH2 0x17B5 PUSH2 0x4662 JUMP JUMPDEST PUSH1 0x20 SWAP2 DUP3 DUP3 DIV ADD SWAP2 SWAP1 MOD DUP3 DUP3 DUP3 SWAP1 SLOAD SWAP1 PUSH2 0x100 EXP SWAP1 DIV PUSH1 0xFF AND PUSH2 0x17D8 SWAP2 SWAP1 PUSH2 0x4731 JUMP JUMPDEST SWAP3 POP PUSH2 0x100 EXP DUP2 SLOAD DUP2 PUSH1 0xFF MUL NOT AND SWAP1 DUP4 PUSH1 0xFF AND MUL OR SWAP1 SSTORE POP JUMPDEST PUSH2 0x17FA DUP4 PUSH2 0x468D JUMP JUMPDEST SWAP3 POP PUSH2 0x1498 JUMP JUMPDEST PUSH0 DUP1 PUSH2 0x180E PUSH1 0x1 DUP7 PUSH2 0x471E JUMP JUMPDEST PUSH1 0x20 DUP2 LT PUSH2 0x181E JUMPI PUSH2 0x181E PUSH2 0x4662 JUMP JUMPDEST PUSH1 0x20 SWAP2 DUP3 DUP3 DIV ADD SWAP2 SWAP1 MOD PUSH2 0x100 EXP DUP2 SLOAD DUP2 PUSH1 0xFF MUL NOT AND SWAP1 DUP4 PUSH1 0xFF AND MUL OR SWAP1 SSTORE POP PUSH0 PUSH1 0x1 DUP1 DUP6 PUSH2 0x184D SWAP2 SWAP1 PUSH2 0x471E JUMP JUMPDEST PUSH1 0x20 DUP2 LT PUSH2 0x185D JUMPI PUSH2 0x185D PUSH2 0x4662 JUMP JUMPDEST PUSH1 0x20 SWAP2 DUP3 DUP3 DIV ADD SWAP2 SWAP1 MOD PUSH2 0x100 EXP DUP2 SLOAD DUP2 PUSH1 0xFF MUL NOT AND SWAP1 DUP4 PUSH1 0xFF AND MUL OR SWAP1 SSTORE POP PUSH2 0x1899 DUP6 DUP6 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH2 0x298B SWAP1 SWAP2 SWAP1 PUSH4 0xFFFFFFFF AND JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH1 0xFF DUP8 AND DUP2 MSTORE PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP6 AND SWAP1 PUSH32 0x978014566E371FEF52158B004E150B6E1FD723F5AA3D8C9AA2A7C98DDB0E65B8 SWAP1 PUSH1 0x20 ADD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 LOG2 POP POP POP POP POP POP JUMP JUMPDEST PUSH0 PUSH2 0x18EB PUSH2 0x2AB0 JUMP JUMPDEST DUP1 SLOAD SWAP1 SWAP2 POP PUSH1 0xFF PUSH1 0x1 PUSH1 0x40 SHL DUP3 DIV AND ISZERO SWAP1 PUSH1 0x1 PUSH1 0x1 PUSH1 0x40 SHL SUB AND PUSH0 DUP2 ISZERO DUP1 ISZERO PUSH2 0x1911 JUMPI POP DUP3 JUMPDEST SWAP1 POP PUSH0 DUP3 PUSH1 0x1 PUSH1 0x1 PUSH1 0x40 SHL SUB AND PUSH1 0x1 EQ DUP1 ISZERO PUSH2 0x192C JUMPI POP ADDRESS EXTCODESIZE ISZERO JUMPDEST SWAP1 POP DUP2 ISZERO DUP1 ISZERO PUSH2 0x193A JUMPI POP DUP1 ISZERO JUMPDEST ISZERO PUSH2 0x1958 JUMPI PUSH1 0x40 MLOAD PUSH4 0xF92EE8A9 PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST DUP5 SLOAD PUSH8 0xFFFFFFFFFFFFFFFF NOT AND PUSH1 0x1 OR DUP6 SSTORE DUP4 ISZERO PUSH2 0x1982 JUMPI DUP5 SLOAD PUSH1 0xFF PUSH1 0x40 SHL NOT AND PUSH1 0x1 PUSH1 0x40 SHL OR DUP6 SSTORE JUMPDEST PUSH2 0x1991 DUP13 DUP13 DUP13 DUP13 DUP13 DUP13 DUP13 PUSH2 0x2AD8 JUMP JUMPDEST DUP4 ISZERO PUSH2 0x19D7 JUMPI DUP5 SLOAD PUSH1 0xFF PUSH1 0x40 SHL NOT AND DUP6 SSTORE PUSH1 0x40 MLOAD PUSH1 0x1 DUP2 MSTORE PUSH32 0xC7F505B2F371AE2175EE4913F4499E1F2633A7B5936321EED1CDAEB6115181D2 SWAP1 PUSH1 0x20 ADD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 LOG1 JUMPDEST POP POP POP POP POP POP POP POP POP POP POP POP JUMP JUMPDEST PUSH0 CALLER PUSH2 0x875 DUP2 DUP6 DUP6 PUSH2 0x21B3 JUMP JUMPDEST PUSH0 PUSH2 0x862 DUP3 PUSH1 0x1 PUSH2 0x20AB JUMP JUMPDEST PUSH0 PUSH0 PUSH2 0x1A09 DUP4 PUSH2 0x1D1B JUMP JUMPDEST SWAP1 POP DUP1 DUP6 GT ISZERO PUSH2 0x1A32 JUMPI DUP3 DUP6 DUP3 PUSH1 0x40 MLOAD PUSH4 0x3FA733BB PUSH1 0xE2 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0xBF7 SWAP4 SWAP3 SWAP2 SWAP1 PUSH2 0x46A5 JUMP JUMPDEST PUSH0 PUSH2 0x1A3C DUP7 PUSH2 0x87F JUMP JUMPDEST SWAP1 POP PUSH2 0x99C CALLER DUP7 DUP7 DUP10 DUP6 PUSH2 0x2B08 JUMP JUMPDEST PUSH0 PUSH0 PUSH2 0x1A56 DUP4 PUSH2 0x1D31 JUMP JUMPDEST SWAP1 POP DUP1 DUP6 GT ISZERO PUSH2 0x1A7F JUMPI DUP3 DUP6 DUP3 PUSH1 0x40 MLOAD PUSH4 0x2E52AFBB PUSH1 0xE2 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0xBF7 SWAP4 SWAP3 SWAP2 SWAP1 PUSH2 0x46A5 JUMP JUMPDEST PUSH0 PUSH2 0x1A89 DUP7 PUSH2 0x857 JUMP JUMPDEST SWAP1 POP PUSH2 0x99C CALLER DUP7 DUP7 DUP5 DUP11 PUSH2 0x2B08 JUMP JUMPDEST PUSH2 0x1AA0 PUSH2 0x3EBC JUMP JUMPDEST DUP2 MLOAD PUSH0 SWAP1 PUSH1 0x20 LT ISZERO PUSH2 0x1AC5 JUMPI PUSH1 0x40 MLOAD PUSH4 0xA29B1F11 PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST DUP3 MLOAD DUP2 PUSH1 0xFF AND LT ISZERO PUSH2 0x1C64 JUMPI PUSH1 0x20 PUSH1 0xFF AND DUP4 DUP3 PUSH1 0xFF AND DUP2 MLOAD DUP2 LT PUSH2 0x1AEB JUMPI PUSH2 0x1AEB PUSH2 0x4662 JUMP JUMPDEST PUSH1 0x20 MUL PUSH1 0x20 ADD ADD MLOAD PUSH1 0xFF AND LT ISZERO DUP1 PUSH2 0x1B47 JUMPI POP PUSH0 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH1 0x2 DUP5 DUP4 PUSH1 0xFF AND DUP2 MLOAD DUP2 LT PUSH2 0x1B1F JUMPI PUSH2 0x1B1F PUSH2 0x4662 JUMP JUMPDEST PUSH1 0x20 MUL PUSH1 0x20 ADD ADD MLOAD PUSH1 0xFF AND PUSH1 0x20 DUP2 LT PUSH2 0x1B3A JUMPI PUSH2 0x1B3A PUSH2 0x4662 JUMP JUMPDEST ADD SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND EQ JUMPDEST ISZERO PUSH2 0x1B65 JUMPI PUSH1 0x40 MLOAD PUSH4 0xA29B1F11 PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST DUP2 DUP4 DUP3 PUSH1 0xFF AND DUP2 MLOAD DUP2 LT PUSH2 0x1B7B JUMPI PUSH2 0x1B7B PUSH2 0x4662 JUMP JUMPDEST PUSH1 0x20 MUL PUSH1 0x20 ADD ADD MLOAD PUSH1 0xFF AND PUSH1 0x20 DUP2 LT PUSH2 0x1B96 JUMPI PUSH2 0x1B96 PUSH2 0x4662 JUMP JUMPDEST PUSH1 0x20 MUL ADD MLOAD ISZERO PUSH2 0x1BB5 JUMPI DUP3 DUP2 PUSH1 0xFF AND DUP2 MLOAD DUP2 LT PUSH2 0x10F0 JUMPI PUSH2 0x10F0 PUSH2 0x4662 JUMP JUMPDEST PUSH1 0x1 DUP3 DUP5 DUP4 PUSH1 0xFF AND DUP2 MLOAD DUP2 LT PUSH2 0x1BCD JUMPI PUSH2 0x1BCD PUSH2 0x4662 JUMP JUMPDEST PUSH1 0x20 MUL PUSH1 0x20 ADD ADD MLOAD PUSH1 0xFF AND PUSH1 0x20 DUP2 LT PUSH2 0x1BE8 JUMPI PUSH2 0x1BE8 PUSH2 0x4662 JUMP JUMPDEST SWAP2 ISZERO ISZERO PUSH1 0x20 SWAP1 SWAP3 MUL ADD MSTORE DUP3 MLOAD DUP4 SWAP1 PUSH1 0xFF DUP4 AND SWAP1 DUP2 LT PUSH2 0x1C09 JUMPI PUSH2 0x1C09 PUSH2 0x4662 JUMP JUMPDEST PUSH1 0x20 MUL PUSH1 0x20 ADD ADD MLOAD PUSH1 0x1 PUSH2 0x1C1D SWAP2 SWAP1 PUSH2 0x4649 JUMP JUMPDEST PUSH1 0x1 DUP3 PUSH1 0xFF AND PUSH1 0x20 DUP2 LT PUSH2 0x1C33 JUMPI PUSH2 0x1C33 PUSH2 0x4662 JUMP JUMPDEST PUSH1 0x20 SWAP2 DUP3 DUP3 DIV ADD SWAP2 SWAP1 MOD PUSH2 0x100 EXP DUP2 SLOAD DUP2 PUSH1 0xFF MUL NOT AND SWAP1 DUP4 PUSH1 0xFF AND MUL OR SWAP1 SSTORE POP DUP1 PUSH2 0x1C5D SWAP1 PUSH2 0x474A JUMP JUMPDEST SWAP1 POP PUSH2 0x1AC5 JUMP JUMPDEST PUSH1 0x20 PUSH1 0xFF DUP3 AND LT DUP1 ISZERO PUSH2 0x1C97 JUMPI POP PUSH0 PUSH1 0x2 PUSH1 0xFF DUP4 AND PUSH1 0x20 DUP2 LT PUSH2 0x1C89 JUMPI PUSH2 0x1C89 PUSH2 0x4662 JUMP JUMPDEST ADD SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND EQ ISZERO JUMPDEST ISZERO PUSH2 0x1CB5 JUMPI PUSH1 0x40 MLOAD PUSH4 0x6712B27B PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH32 0x3C56B6BCA0D55EDA581F8F2819D1F85D3B91CFCC24914A8FA39D301796D8964C DUP4 PUSH1 0x40 MLOAD PUSH2 0x1234 SWAP2 SWAP1 PUSH2 0x46D9 JUMP JUMPDEST PUSH0 PUSH0 PUSH2 0x1CEE PUSH2 0x2380 JUMP JUMPDEST SWAP1 POP PUSH0 NOT DUP2 EQ PUSH2 0x1D07 JUMPI PUSH2 0x1D02 DUP2 PUSH0 PUSH2 0x2114 JUMP JUMPDEST PUSH2 0x8A9 JUMP JUMPDEST PUSH0 NOT SWAP4 SWAP3 POP POP POP JUMP JUMPDEST PUSH0 PUSH2 0x862 DUP3 PUSH0 PUSH2 0x2114 JUMP JUMPDEST PUSH0 PUSH0 PUSH2 0x1D26 DUP4 PUSH2 0x2B1E JUMP JUMPDEST SWAP1 POP PUSH2 0x8A9 DUP2 PUSH2 0x2B2B JUMP JUMPDEST PUSH0 PUSH0 PUSH2 0x1D3C DUP4 PUSH2 0x2BC0 JUMP JUMPDEST SWAP1 POP PUSH0 PUSH2 0x1D49 DUP3 PUSH0 PUSH2 0x20AB JUMP JUMPDEST SWAP1 POP PUSH0 PUSH2 0x1D55 DUP3 PUSH2 0x2B2B JUMP JUMPDEST SWAP1 POP DUP2 DUP2 EQ PUSH2 0x1D6D JUMPI PUSH2 0x1D68 DUP2 PUSH0 PUSH2 0x2114 JUMP JUMPDEST PUSH2 0x99C JUMP JUMPDEST POP SWAP1 SWAP4 SWAP3 POP POP POP JUMP JUMPDEST PUSH2 0x1D7E PUSH2 0x3EBC JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH2 0x400 DUP2 ADD SWAP2 DUP3 SWAP1 MSTORE SWAP1 PUSH1 0x2 SWAP1 PUSH1 0x20 SWAP1 DUP3 DUP5 JUMPDEST DUP2 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP2 MSTORE PUSH1 0x1 SWAP1 SWAP2 ADD SWAP1 PUSH1 0x20 ADD DUP1 DUP4 GT PUSH2 0x1D95 JUMPI POP POP POP POP POP SWAP1 POP SWAP1 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP2 DUP3 AND PUSH0 SWAP1 DUP2 MSTORE PUSH32 0x52C63247E1F47DB19D5CE0460030C497F067CA4CEBF71BA98EEADABE20BACE01 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 PUSH0 PUSH1 0x20 PUSH1 0xFF DUP6 AND LT ISZERO DUP1 PUSH2 0x1E1D JUMPI POP PUSH1 0x20 PUSH1 0xFF DUP5 AND LT ISZERO JUMPDEST ISZERO PUSH2 0x1E3B JUMPI PUSH1 0x40 MLOAD PUSH4 0x2711B74D PUSH1 0xE1 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH0 PUSH1 0x2 DUP6 PUSH1 0xFF AND PUSH1 0x20 DUP2 LT PUSH2 0x1E52 JUMPI PUSH2 0x1E52 PUSH2 0x4662 JUMP JUMPDEST ADD SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND SWAP1 POP PUSH0 PUSH1 0x2 PUSH1 0xFF DUP7 AND PUSH1 0x20 DUP2 LT PUSH2 0x1E76 JUMPI PUSH2 0x1E76 PUSH2 0x4662 JUMP JUMPDEST ADD SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP1 DUP2 AND SWAP2 POP DUP3 AND ISZERO DUP1 PUSH2 0x1E9A JUMPI POP PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 AND ISZERO JUMPDEST ISZERO PUSH2 0x1EB8 JUMPI PUSH1 0x40 MLOAD PUSH4 0x2711B74D PUSH1 0xE1 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH0 NOT DUP5 SUB PUSH2 0x1ED5 JUMPI PUSH2 0x1ED2 DUP3 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH2 0x2922 JUMP JUMPDEST SWAP4 POP JUMPDEST DUP4 PUSH0 SUB PUSH2 0x1EE6 JUMPI PUSH0 SWAP3 POP POP POP PUSH2 0x8A9 JUMP JUMPDEST PUSH2 0x1EF8 DUP3 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH2 0x2BCA JUMP JUMPDEST DUP5 GT ISZERO PUSH2 0x1F2D JUMPI PUSH2 0x1F11 DUP3 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH2 0x2BCA JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH4 0x3CE011D5 PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0xBF7 SWAP2 DUP2 MSTORE PUSH1 0x20 ADD SWAP1 JUMP JUMPDEST PUSH2 0x1F3F DUP2 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH2 0x2BF8 JUMP JUMPDEST DUP5 GT ISZERO PUSH2 0x1F74 JUMPI PUSH2 0x1F58 DUP2 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH2 0x2BF8 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH4 0x50A3E375 PUSH1 0xE1 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0xBF7 SWAP2 DUP2 MSTORE PUSH1 0x20 ADD SWAP1 JUMP JUMPDEST PUSH2 0x1F88 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP4 AND DUP6 PUSH0 PUSH2 0x2C26 JUMP JUMPDEST POP PUSH2 0x1F9D PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP3 AND DUP6 PUSH0 PUSH2 0x2D62 JUMP JUMPDEST POP DUP1 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP3 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH32 0xB0850B8E0F9E8315DDE3C9F9F31138283E6BBE16CD29E8552EB1DCDF9FAC9E3B DUP7 PUSH1 0x40 MLOAD PUSH2 0x1FE3 SWAP2 DUP2 MSTORE PUSH1 0x20 ADD SWAP1 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 LOG3 POP SWAP2 SWAP5 SWAP4 POP POP POP POP JUMP JUMPDEST PUSH2 0x1FFD PUSH2 0x3EBC JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH2 0x400 DUP2 ADD SWAP2 DUP3 SWAP1 MSTORE PUSH0 DUP1 SLOAD PUSH1 0xFF AND DUP3 MSTORE SWAP1 SWAP2 PUSH1 0x20 SWAP1 DUP3 PUSH1 0x1 DUP4 DUP7 ADD DUP1 DUP5 GT PUSH2 0xB70 JUMPI SWAP1 POP POP POP POP POP POP SWAP1 POP SWAP1 JUMP JUMPDEST PUSH0 PUSH0 JUMPDEST PUSH0 PUSH1 0x2 DUP3 PUSH1 0x20 DUP2 LT PUSH2 0x2047 JUMPI PUSH2 0x2047 PUSH2 0x4662 JUMP JUMPDEST ADD SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND EQ DUP1 ISZERO SWAP1 PUSH2 0x2060 JUMPI POP PUSH1 0x20 DUP2 LT JUMPDEST ISZERO PUSH2 0x20A7 JUMPI PUSH2 0x208B PUSH1 0x2 DUP3 PUSH1 0x20 DUP2 LT PUSH2 0x207B JUMPI PUSH2 0x207B PUSH2 0x4662 JUMP JUMPDEST ADD SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH2 0x2922 JUMP JUMPDEST PUSH2 0x2095 SWAP1 DUP4 PUSH2 0x46C6 JUMP JUMPDEST SWAP2 POP PUSH2 0x20A0 DUP2 PUSH2 0x468D JUMP JUMPDEST SWAP1 POP PUSH2 0x2033 JUMP JUMPDEST POP SWAP1 JUMP JUMPDEST PUSH0 PUSH2 0x8A9 PUSH2 0x20B7 PUSH2 0x789 JUMP JUMPDEST PUSH2 0x20C2 SWAP1 PUSH1 0x1 PUSH2 0x46C6 JUMP JUMPDEST PUSH2 0x20CD PUSH0 PUSH1 0xA PUSH2 0x484B JUMP JUMPDEST PUSH32 0x52C63247E1F47DB19D5CE0460030C497F067CA4CEBF71BA98EEADABE20BACE02 SLOAD PUSH2 0x20F9 SWAP2 SWAP1 PUSH2 0x46C6 JUMP JUMPDEST DUP6 SWAP2 SWAP1 DUP6 PUSH2 0x2E83 JUMP JUMPDEST PUSH2 0x210F DUP4 DUP4 DUP4 PUSH1 0x1 PUSH2 0x2EC5 JUMP JUMPDEST POP POP POP JUMP JUMPDEST PUSH0 PUSH2 0x8A9 PUSH2 0x2123 DUP3 PUSH1 0xA PUSH2 0x484B JUMP JUMPDEST PUSH32 0x52C63247E1F47DB19D5CE0460030C497F067CA4CEBF71BA98EEADABE20BACE02 SLOAD PUSH2 0x214F SWAP2 SWAP1 PUSH2 0x46C6 JUMP JUMPDEST PUSH2 0x2157 PUSH2 0x789 JUMP JUMPDEST PUSH2 0x20F9 SWAP1 PUSH1 0x1 PUSH2 0x46C6 JUMP JUMPDEST PUSH0 PUSH2 0x216D DUP5 DUP5 PUSH2 0x1DBC JUMP JUMPDEST SWAP1 POP PUSH0 NOT DUP2 LT ISZERO PUSH2 0x21AD JUMPI DUP2 DUP2 LT ISZERO PUSH2 0x219F JUMPI DUP3 DUP2 DUP4 PUSH1 0x40 MLOAD PUSH4 0x7DC7A0D9 PUSH1 0xE1 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0xBF7 SWAP4 SWAP3 SWAP2 SWAP1 PUSH2 0x46A5 JUMP JUMPDEST PUSH2 0x21AD DUP5 DUP5 DUP5 DUP5 SUB PUSH0 PUSH2 0x2EC5 JUMP JUMPDEST POP POP POP POP JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP4 AND PUSH2 0x21DC JUMPI PUSH1 0x40 MLOAD PUSH4 0x4B637E8F PUSH1 0xE1 SHL DUP2 MSTORE PUSH0 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x24 ADD PUSH2 0xBF7 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP3 AND PUSH2 0x2205 JUMPI PUSH1 0x40 MLOAD PUSH4 0xEC442F05 PUSH1 0xE0 SHL DUP2 MSTORE PUSH0 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x24 ADD PUSH2 0xBF7 JUMP JUMPDEST PUSH2 0x210F DUP4 DUP4 DUP4 PUSH2 0x2FA8 JUMP JUMPDEST PUSH0 ADDRESS PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH4 0x3A7B7A39 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 GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x224D JUMPI RETURNDATASIZE PUSH0 PUSH0 RETURNDATACOPY RETURNDATASIZE PUSH0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP3 ADD DUP1 PUSH1 0x40 MSTORE POP DUP2 ADD SWAP1 PUSH2 0x2271 SWAP2 SWAP1 PUSH2 0x4859 JUMP JUMPDEST SWAP1 POP PUSH0 DUP2 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH4 0xB7009613 CALLER ADDRESS PUSH2 0x228F DUP10 DUP10 PUSH2 0xF84 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH1 0xE0 DUP6 SWAP1 SHL PUSH1 0x1 PUSH1 0x1 PUSH1 0xE0 SHL SUB NOT SWAP1 DUP2 AND DUP3 MSTORE PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP5 DUP6 AND PUSH1 0x4 DUP4 ADD MSTORE SWAP3 SWAP1 SWAP4 AND PUSH1 0x24 DUP5 ADD MSTORE AND PUSH1 0x44 DUP3 ADD MSTORE PUSH1 0x64 ADD PUSH1 0x40 DUP1 MLOAD DUP1 DUP4 SUB DUP2 DUP7 GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x22E1 JUMPI RETURNDATASIZE PUSH0 PUSH0 RETURNDATACOPY RETURNDATASIZE PUSH0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP3 ADD DUP1 PUSH1 0x40 MSTORE POP DUP2 ADD SWAP1 PUSH2 0x2305 SWAP2 SWAP1 PUSH2 0x4874 JUMP JUMPDEST POP SWAP1 POP DUP1 PUSH2 0x2327 JUMPI PUSH1 0x40 MLOAD PUSH3 0xD1953B PUSH1 0xE3 SHL DUP2 MSTORE CALLER PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x24 ADD PUSH2 0xBF7 JUMP JUMPDEST POP POP POP POP POP JUMP JUMPDEST PUSH1 0x60 PUSH2 0xC18 DUP4 DUP4 PUSH1 0x40 MLOAD PUSH1 0x24 ADD PUSH2 0x2346 SWAP3 SWAP2 SWAP1 PUSH2 0x48A9 JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH1 0x1F NOT DUP2 DUP5 SUB ADD DUP2 MSTORE SWAP2 SWAP1 MSTORE PUSH1 0x20 DUP2 ADD DUP1 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xE0 SHL SUB AND PUSH4 0x4C0D8E1 PUSH1 0xE1 SHL OR SWAP1 MSTORE PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP7 AND SWAP1 PUSH2 0x30CE JUMP JUMPDEST PUSH0 PUSH0 PUSH0 JUMPDEST PUSH0 PUSH1 0x2 DUP3 PUSH1 0x20 DUP2 LT PUSH2 0x2398 JUMPI PUSH2 0x2398 PUSH2 0x4662 JUMP JUMPDEST ADD SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND EQ DUP1 ISZERO SWAP1 PUSH2 0x23B1 JUMPI POP PUSH1 0x20 DUP2 LT JUMPDEST ISZERO PUSH2 0x240F JUMPI PUSH2 0x23ED DUP4 PUSH2 0x23E0 PUSH1 0x2 DUP5 PUSH1 0x20 DUP2 LT PUSH2 0x23D0 JUMPI PUSH2 0x23D0 PUSH2 0x4662 JUMP JUMPDEST ADD SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH2 0x2BF8 JUMP JUMPDEST DUP2 ADD SWAP1 DUP2 LT ISZERO SWAP2 SWAP1 DUP3 MUL SWAP1 JUMP JUMPDEST SWAP4 POP SWAP2 POP DUP2 PUSH2 0x23FF JUMPI PUSH0 NOT SWAP3 POP POP POP SWAP1 JUMP JUMPDEST PUSH2 0x2408 DUP2 PUSH2 0x468D JUMP JUMPDEST SWAP1 POP PUSH2 0x2384 JUMP JUMPDEST POP POP SWAP1 JUMP JUMPDEST DUP1 PUSH0 JUMPDEST DUP2 ISZERO DUP1 ISZERO SWAP1 PUSH2 0x244C JUMPI POP PUSH0 DUP2 PUSH1 0x20 DUP2 LT PUSH2 0x2433 JUMPI PUSH2 0x2433 PUSH2 0x4662 JUMP JUMPDEST PUSH1 0x20 DUP2 DIV SWAP1 SWAP2 ADD SLOAD PUSH1 0xFF PUSH1 0x1F SWAP1 SWAP3 AND PUSH2 0x100 EXP SWAP1 DIV AND ISZERO ISZERO JUMPDEST DUP1 ISZERO PUSH2 0x2458 JUMPI POP PUSH1 0x20 DUP2 LT JUMPDEST ISZERO PUSH2 0x250B JUMPI PUSH0 PUSH1 0x2 PUSH1 0x1 PUSH0 DUP5 PUSH1 0x20 DUP2 LT PUSH2 0x2474 JUMPI PUSH2 0x2474 PUSH2 0x4662 JUMP JUMPDEST PUSH1 0x20 SWAP2 DUP3 DUP3 DIV ADD SWAP2 SWAP1 MOD SWAP1 SLOAD SWAP1 PUSH2 0x100 EXP SWAP1 DIV PUSH1 0xFF AND PUSH2 0x2494 SWAP2 SWAP1 PUSH2 0x4731 JUMP JUMPDEST PUSH1 0xFF AND PUSH1 0x20 DUP2 LT PUSH2 0x24A7 JUMPI PUSH2 0x24A7 PUSH2 0x4662 JUMP JUMPDEST ADD SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND SWAP1 POP PUSH0 PUSH2 0x24C7 DUP5 PUSH2 0x24C2 DUP5 PUSH2 0x2BF8 JUMP JUMPDEST PUSH2 0x316E JUMP JUMPDEST SWAP1 POP DUP1 PUSH0 SUB PUSH2 0x24D7 JUMPI POP POP PUSH2 0x24FB JUMP JUMPDEST PUSH2 0x24EB PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP4 AND DUP3 PUSH0 PUSH2 0x2D62 JUMP JUMPDEST POP PUSH2 0x24F6 DUP2 DUP6 PUSH2 0x471E JUMP JUMPDEST SWAP4 POP POP POP JUMPDEST PUSH2 0x2504 DUP2 PUSH2 0x468D JUMP JUMPDEST SWAP1 POP PUSH2 0x2417 JUMP JUMPDEST POP DUP1 ISZERO PUSH2 0xB4C JUMPI PUSH1 0x40 MLOAD PUSH4 0x285A546D PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST ADDRESS PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB PUSH32 0x0 AND EQ DUP1 PUSH2 0x25B1 JUMPI POP PUSH32 0x0 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH2 0x25A5 PUSH0 MLOAD PUSH1 0x20 PUSH2 0x4A4E PUSH0 CODECOPY PUSH0 MLOAD SWAP1 PUSH0 MSTORE SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND SWAP1 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND EQ ISZERO JUMPDEST ISZERO PUSH2 0x25CF JUMPI PUSH1 0x40 MLOAD PUSH4 0x703E46DD PUSH1 0xE1 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST JUMP JUMPDEST DUP2 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH4 0x52D1902D 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 GAS STATICCALL SWAP3 POP POP POP DUP1 ISZERO PUSH2 0x262B JUMPI POP PUSH1 0x40 DUP1 MLOAD PUSH1 0x1F RETURNDATASIZE SWAP1 DUP2 ADD PUSH1 0x1F NOT AND DUP3 ADD SWAP1 SWAP3 MSTORE PUSH2 0x2628 SWAP2 DUP2 ADD SWAP1 PUSH2 0x4676 JUMP JUMPDEST PUSH1 0x1 JUMPDEST PUSH2 0x2653 JUMPI PUSH1 0x40 MLOAD PUSH4 0x4C9C8CE3 PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP4 AND PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x24 ADD PUSH2 0xBF7 JUMP JUMPDEST PUSH0 MLOAD PUSH1 0x20 PUSH2 0x4A4E PUSH0 CODECOPY PUSH0 MLOAD SWAP1 PUSH0 MSTORE DUP2 EQ PUSH2 0x2683 JUMPI PUSH1 0x40 MLOAD PUSH4 0x2A875269 PUSH1 0xE2 SHL DUP2 MSTORE PUSH1 0x4 DUP2 ADD DUP3 SWAP1 MSTORE PUSH1 0x24 ADD PUSH2 0xBF7 JUMP JUMPDEST PUSH2 0x210F DUP4 DUP4 PUSH2 0x317D JUMP JUMPDEST ADDRESS PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB PUSH32 0x0 AND EQ PUSH2 0x25CF JUMPI PUSH1 0x40 MLOAD PUSH4 0x703E46DD PUSH1 0xE1 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH2 0x26E2 DUP5 DUP5 DUP5 DUP5 PUSH2 0x31D2 JUMP JUMPDEST PUSH2 0x21AD DUP3 PUSH2 0x2414 JUMP JUMPDEST PUSH0 PUSH2 0x792 PUSH2 0x8F2 JUMP JUMPDEST PUSH2 0x26FE DUP5 DUP4 PUSH2 0x2842 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH4 0xF3E0FFBF PUSH1 0xE0 SHL DUP2 MSTORE ADDRESS PUSH1 0x4 DUP3 ADD MSTORE PUSH2 0x2770 SWAP1 DUP7 SWAP1 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP3 AND SWAP1 PUSH4 0xF3E0FFBF SWAP1 PUSH1 0x24 ADD PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x2746 JUMPI RETURNDATASIZE PUSH0 PUSH0 RETURNDATACOPY RETURNDATASIZE PUSH0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP3 ADD DUP1 PUSH1 0x40 MSTORE POP DUP2 ADD SWAP1 PUSH2 0x276A SWAP2 SWAP1 PUSH2 0x4676 JUMP JUMPDEST DUP4 PUSH2 0x2C26 JUMP JUMPDEST POP PUSH2 0x277B DUP6 DUP3 PUSH2 0x298B JUMP JUMPDEST PUSH2 0x2785 DUP5 DUP5 PUSH2 0x28D4 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH4 0x70A08231 PUSH1 0xE0 SHL DUP2 MSTORE ADDRESS PUSH1 0x4 DUP3 ADD MSTORE PUSH2 0x27F7 SWAP1 DUP6 SWAP1 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP6 AND SWAP1 PUSH4 0x70A08231 SWAP1 PUSH1 0x24 ADD PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x27CD JUMPI RETURNDATASIZE PUSH0 PUSH0 RETURNDATACOPY RETURNDATASIZE PUSH0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP3 ADD DUP1 PUSH1 0x40 MSTORE POP DUP2 ADD SWAP1 PUSH2 0x27F1 SWAP2 SWAP1 PUSH2 0x4676 JUMP JUMPDEST DUP4 PUSH2 0x2D62 JUMP JUMPDEST POP PUSH1 0x40 DUP1 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP1 DUP9 AND DUP3 MSTORE DUP7 AND PUSH1 0x20 DUP3 ADD MSTORE PUSH32 0x254C88E7A2EA123AEEB89B7CC413FB949188FEFCDB7584C4F3D493294DAF65C5 SWAP2 ADD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 LOG1 POP POP POP POP POP JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH4 0x4E2333D1 PUSH1 0xE1 SHL DUP2 MSTORE ADDRESS PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP1 DUP4 AND SWAP2 SWAP1 DUP5 AND SWAP1 PUSH4 0x9C4667A2 SWAP1 PUSH1 0x24 ADD PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x2889 JUMPI RETURNDATASIZE PUSH0 PUSH0 RETURNDATACOPY RETURNDATASIZE PUSH0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP3 ADD DUP1 PUSH1 0x40 MSTORE POP DUP2 ADD SWAP1 PUSH2 0x28AD SWAP2 SWAP1 PUSH2 0x4859 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND EQ PUSH2 0xB4C JUMPI PUSH1 0x40 MLOAD PUSH4 0xE76673EF PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH2 0x210F DUP2 PUSH1 0x40 MLOAD PUSH1 0x24 ADD PUSH2 0x28E8 SWAP2 SWAP1 PUSH2 0x3F09 JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH1 0x1F NOT DUP2 DUP5 SUB ADD DUP2 MSTORE SWAP2 SWAP1 MSTORE PUSH1 0x20 DUP2 ADD DUP1 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xE0 SHL SUB AND PUSH4 0x139A8E25 PUSH1 0xE3 SHL OR SWAP1 MSTORE PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP5 AND SWAP1 PUSH2 0x30CE JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH4 0xF3E0FFBF PUSH1 0xE0 SHL DUP2 MSTORE ADDRESS PUSH1 0x4 DUP3 ADD MSTORE PUSH0 SWAP1 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP4 AND SWAP1 PUSH4 0xF3E0FFBF SWAP1 PUSH1 0x24 ADD JUMPDEST PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x2967 JUMPI RETURNDATASIZE PUSH0 PUSH0 RETURNDATACOPY RETURNDATASIZE PUSH0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP3 ADD DUP1 PUSH1 0x40 MSTORE POP DUP2 ADD SWAP1 PUSH2 0x862 SWAP2 SWAP1 PUSH2 0x4676 JUMP JUMPDEST DUP1 ISZERO PUSH2 0x2A66 JUMPI PUSH1 0x40 MLOAD PUSH1 0x1 PUSH1 0x24 DUP3 ADD MSTORE PUSH0 SWAP1 DUP2 SWAP1 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP6 AND SWAP1 PUSH1 0x44 ADD PUSH1 0x40 DUP1 MLOAD PUSH1 0x1F NOT DUP2 DUP5 SUB ADD DUP2 MSTORE SWAP2 DUP2 MSTORE PUSH1 0x20 DUP3 ADD DUP1 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xE0 SHL SUB AND PUSH4 0x2D08BA2B PUSH1 0xE1 SHL OR SWAP1 MSTORE MLOAD PUSH2 0x29E2 SWAP2 SWAP1 PUSH2 0x48C4 JUMP JUMPDEST PUSH0 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP6 GAS DELEGATECALL SWAP2 POP POP RETURNDATASIZE DUP1 PUSH0 DUP2 EQ PUSH2 0x2A1A JUMPI PUSH1 0x40 MLOAD SWAP2 POP PUSH1 0x1F NOT PUSH1 0x3F RETURNDATASIZE ADD AND DUP3 ADD PUSH1 0x40 MSTORE RETURNDATASIZE DUP3 MSTORE RETURNDATASIZE PUSH0 PUSH1 0x20 DUP5 ADD RETURNDATACOPY PUSH2 0x2A1F JUMP JUMPDEST PUSH1 0x60 SWAP2 POP JUMPDEST POP SWAP2 POP SWAP2 POP DUP2 PUSH2 0x21AD JUMPI PUSH32 0x9F864ACE9F45C2734F9444CB9A0C1ADE6F1B15A8C202C17175B759728A4A0BF8 DUP2 PUSH1 0x40 MLOAD PUSH2 0x2A58 SWAP2 SWAP1 PUSH2 0x3F09 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 LOG1 POP POP POP POP JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH0 PUSH1 0x24 DUP3 ADD MSTORE PUSH2 0x210F SWAP1 PUSH1 0x44 ADD PUSH1 0x40 DUP1 MLOAD PUSH1 0x1F NOT DUP2 DUP5 SUB ADD DUP2 MSTORE SWAP2 SWAP1 MSTORE PUSH1 0x20 DUP2 ADD DUP1 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xE0 SHL SUB AND PUSH4 0x2D08BA2B PUSH1 0xE1 SHL OR SWAP1 MSTORE PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP5 AND SWAP1 PUSH2 0x30CE JUMP JUMPDEST PUSH0 DUP1 PUSH32 0xF0C57E16840DF040F15088DC2F81FE391C3923BEC73E23A9662EFC9C229C6A00 PUSH2 0x862 JUMP JUMPDEST PUSH2 0x2AE0 PUSH2 0x323D JUMP JUMPDEST PUSH2 0x2AE9 DUP6 PUSH2 0x3262 JUMP JUMPDEST PUSH2 0x2AF3 DUP8 DUP8 PUSH2 0x3273 JUMP JUMPDEST PUSH2 0x2AFF DUP5 DUP5 DUP5 DUP5 PUSH2 0x3285 JUMP JUMPDEST POP POP POP POP POP POP POP JUMP JUMPDEST PUSH2 0x2B11 DUP3 PUSH2 0x3806 JUMP JUMPDEST PUSH2 0x2327 DUP6 DUP6 DUP6 DUP6 DUP6 PUSH2 0x3919 JUMP JUMPDEST PUSH0 PUSH2 0x862 PUSH2 0x2BA DUP4 PUSH2 0x1D31 JUMP JUMPDEST PUSH0 PUSH0 PUSH0 JUMPDEST PUSH0 PUSH1 0x2 DUP3 PUSH1 0x20 DUP2 LT PUSH2 0x2B43 JUMPI PUSH2 0x2B43 PUSH2 0x4662 JUMP JUMPDEST ADD SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND EQ DUP1 ISZERO SWAP1 PUSH2 0x2B5C JUMPI POP PUSH1 0x20 DUP2 LT JUMPDEST ISZERO PUSH2 0x2BB9 JUMPI PUSH2 0x2B8B DUP4 PUSH2 0x23E0 PUSH1 0x2 DUP5 PUSH1 0x20 DUP2 LT PUSH2 0x2B7B JUMPI PUSH2 0x2B7B PUSH2 0x4662 JUMP JUMPDEST ADD SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH2 0x2BCA JUMP JUMPDEST SWAP4 POP SWAP2 POP DUP2 ISZERO DUP1 PUSH2 0x2B9C JUMPI POP DUP4 DUP4 LT ISZERO JUMPDEST ISZERO PUSH2 0x2BA9 JUMPI POP SWAP2 SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH2 0x2BB2 DUP2 PUSH2 0x468D JUMP JUMPDEST SWAP1 POP PUSH2 0x2B2F JUMP JUMPDEST POP POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH0 PUSH2 0x862 DUP3 PUSH2 0xC20 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH4 0xCE96CB77 PUSH1 0xE0 SHL DUP2 MSTORE ADDRESS PUSH1 0x4 DUP3 ADD MSTORE PUSH0 SWAP1 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP4 AND SWAP1 PUSH4 0xCE96CB77 SWAP1 PUSH1 0x24 ADD PUSH2 0x294C JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH4 0x402D267D PUSH1 0xE0 SHL DUP2 MSTORE ADDRESS PUSH1 0x4 DUP3 ADD MSTORE PUSH0 SWAP1 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP4 AND SWAP1 PUSH4 0x402D267D SWAP1 PUSH1 0x24 ADD PUSH2 0x294C JUMP JUMPDEST PUSH0 DUP2 ISZERO PUSH2 0x2D08 JUMPI PUSH0 PUSH0 DUP6 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP6 PUSH1 0x40 MLOAD PUSH1 0x24 ADD PUSH2 0x2C4C SWAP2 DUP2 MSTORE PUSH1 0x20 ADD SWAP1 JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH1 0x1F NOT DUP2 DUP5 SUB ADD DUP2 MSTORE SWAP2 DUP2 MSTORE PUSH1 0x20 DUP3 ADD DUP1 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xE0 SHL SUB AND PUSH4 0x2E1A7D4D PUSH1 0xE0 SHL OR SWAP1 MSTORE MLOAD PUSH2 0x2C81 SWAP2 SWAP1 PUSH2 0x48C4 JUMP JUMPDEST PUSH0 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP6 GAS DELEGATECALL SWAP2 POP POP RETURNDATASIZE DUP1 PUSH0 DUP2 EQ PUSH2 0x2CB9 JUMPI PUSH1 0x40 MLOAD SWAP2 POP PUSH1 0x1F NOT PUSH1 0x3F RETURNDATASIZE ADD AND DUP3 ADD PUSH1 0x40 MSTORE RETURNDATASIZE DUP3 MSTORE RETURNDATASIZE PUSH0 PUSH1 0x20 DUP5 ADD RETURNDATACOPY PUSH2 0x2CBE JUMP JUMPDEST PUSH1 0x60 SWAP2 POP JUMPDEST POP SWAP2 POP SWAP2 POP DUP2 PUSH2 0x2D00 JUMPI PUSH32 0xAD0AD28A12A6ED800F1A7B398454913AFE6826C175E6CC28F2E8E2C175B0D728 DUP2 PUSH1 0x40 MLOAD PUSH2 0x2CF7 SWAP2 SWAP1 PUSH2 0x3F09 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 LOG1 JUMPDEST POP SWAP1 POP PUSH2 0x8A9 JUMP JUMPDEST PUSH2 0x2D58 DUP4 PUSH1 0x40 MLOAD PUSH1 0x24 ADD PUSH2 0x2D1E SWAP2 DUP2 MSTORE PUSH1 0x20 ADD SWAP1 JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH1 0x1F NOT DUP2 DUP5 SUB ADD DUP2 MSTORE SWAP2 SWAP1 MSTORE PUSH1 0x20 DUP2 ADD DUP1 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xE0 SHL SUB AND PUSH4 0x2E1A7D4D PUSH1 0xE0 SHL OR SWAP1 MSTORE PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP7 AND SWAP1 PUSH2 0x30CE JUMP JUMPDEST POP PUSH1 0x1 SWAP1 POP PUSH2 0x8A9 JUMP JUMPDEST PUSH0 DUP2 ISZERO PUSH2 0x2E33 JUMPI PUSH0 PUSH0 DUP6 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP6 PUSH1 0x40 MLOAD PUSH1 0x24 ADD PUSH2 0x2D88 SWAP2 DUP2 MSTORE PUSH1 0x20 ADD SWAP1 JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH1 0x1F NOT DUP2 DUP5 SUB ADD DUP2 MSTORE SWAP2 DUP2 MSTORE PUSH1 0x20 DUP3 ADD DUP1 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xE0 SHL SUB AND PUSH4 0xB6B55F25 PUSH1 0xE0 SHL OR SWAP1 MSTORE MLOAD PUSH2 0x2DBD SWAP2 SWAP1 PUSH2 0x48C4 JUMP JUMPDEST PUSH0 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP6 GAS DELEGATECALL SWAP2 POP POP RETURNDATASIZE DUP1 PUSH0 DUP2 EQ PUSH2 0x2DF5 JUMPI PUSH1 0x40 MLOAD SWAP2 POP PUSH1 0x1F NOT PUSH1 0x3F RETURNDATASIZE ADD AND DUP3 ADD PUSH1 0x40 MSTORE RETURNDATASIZE DUP3 MSTORE RETURNDATASIZE PUSH0 PUSH1 0x20 DUP5 ADD RETURNDATACOPY PUSH2 0x2DFA JUMP JUMPDEST PUSH1 0x60 SWAP2 POP JUMPDEST POP SWAP2 POP SWAP2 POP DUP2 PUSH2 0x2D00 JUMPI PUSH32 0xF8E68F23D3B33772E986CC9861E94E8FD6B9461D62BC1FB21CD754BBAF726BD3 DUP2 PUSH1 0x40 MLOAD PUSH2 0x2CF7 SWAP2 SWAP1 PUSH2 0x3F09 JUMP JUMPDEST PUSH2 0x2D58 DUP4 PUSH1 0x40 MLOAD PUSH1 0x24 ADD PUSH2 0x2E49 SWAP2 DUP2 MSTORE PUSH1 0x20 ADD SWAP1 JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH1 0x1F NOT DUP2 DUP5 SUB ADD DUP2 MSTORE SWAP2 SWAP1 MSTORE PUSH1 0x20 DUP2 ADD DUP1 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xE0 SHL SUB AND PUSH4 0xB6B55F25 PUSH1 0xE0 SHL OR SWAP1 MSTORE PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP7 AND SWAP1 PUSH2 0x30CE JUMP JUMPDEST PUSH0 PUSH2 0x2EB0 PUSH2 0x2E90 DUP4 PUSH2 0x39C0 JUMP JUMPDEST DUP1 ISZERO PUSH2 0x2EAB JUMPI POP PUSH0 DUP5 DUP1 PUSH2 0x2EA6 JUMPI PUSH2 0x2EA6 PUSH2 0x48DA JUMP JUMPDEST DUP7 DUP9 MULMOD GT JUMPDEST ISZERO ISZERO SWAP1 JUMP JUMPDEST PUSH2 0x2EBB DUP7 DUP7 DUP7 PUSH2 0x39EC JUMP JUMPDEST PUSH2 0x99C SWAP2 SWAP1 PUSH2 0x46C6 JUMP JUMPDEST PUSH0 MLOAD PUSH1 0x20 PUSH2 0x4A2E PUSH0 CODECOPY PUSH0 MLOAD SWAP1 PUSH0 MSTORE PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP6 AND PUSH2 0x2EFC JUMPI PUSH1 0x40 MLOAD PUSH4 0xE602DF05 PUSH1 0xE0 SHL DUP2 MSTORE PUSH0 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x24 ADD PUSH2 0xBF7 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP5 AND PUSH2 0x2F25 JUMPI PUSH1 0x40 MLOAD PUSH4 0x4A1406B1 PUSH1 0xE1 SHL DUP2 MSTORE PUSH0 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x24 ADD PUSH2 0xBF7 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP1 DUP7 AND PUSH0 SWAP1 DUP2 MSTORE PUSH1 0x1 DUP4 ADD PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x40 DUP1 DUP4 KECCAK256 SWAP4 DUP9 AND DUP4 MSTORE SWAP3 SWAP1 MSTORE KECCAK256 DUP4 SWAP1 SSTORE DUP2 ISZERO PUSH2 0x2327 JUMPI DUP4 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP6 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH32 0x8C5BE1E5EBEC7D5BD14F71427D1E84F3DD0314C0F7B2291E5B200AC8C7C3B925 DUP6 PUSH1 0x40 MLOAD PUSH2 0x2F99 SWAP2 DUP2 MSTORE PUSH1 0x20 ADD SWAP1 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 LOG3 POP POP POP POP POP JUMP JUMPDEST PUSH0 MLOAD PUSH1 0x20 PUSH2 0x4A2E PUSH0 CODECOPY PUSH0 MLOAD SWAP1 PUSH0 MSTORE PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP5 AND PUSH2 0x2FE2 JUMPI DUP2 DUP2 PUSH1 0x2 ADD PUSH0 DUP3 DUP3 SLOAD PUSH2 0x2FD7 SWAP2 SWAP1 PUSH2 0x46C6 JUMP JUMPDEST SWAP1 SWAP2 SSTORE POP PUSH2 0x303F SWAP1 POP JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP5 AND PUSH0 SWAP1 DUP2 MSTORE PUSH1 0x20 DUP3 SWAP1 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD DUP3 DUP2 LT ISZERO PUSH2 0x3021 JUMPI DUP5 DUP2 DUP5 PUSH1 0x40 MLOAD PUSH4 0x391434E3 PUSH1 0xE2 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0xBF7 SWAP4 SWAP3 SWAP2 SWAP1 PUSH2 0x46A5 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP6 AND PUSH0 SWAP1 DUP2 MSTORE PUSH1 0x20 DUP4 SWAP1 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SWAP1 DUP4 SWAP1 SUB SWAP1 SSTORE JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP4 AND PUSH2 0x305D JUMPI PUSH1 0x2 DUP2 ADD DUP1 SLOAD DUP4 SWAP1 SUB SWAP1 SSTORE PUSH2 0x307B JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP4 AND PUSH0 SWAP1 DUP2 MSTORE PUSH1 0x20 DUP3 SWAP1 MSTORE PUSH1 0x40 SWAP1 KECCAK256 DUP1 SLOAD DUP4 ADD SWAP1 SSTORE JUMPDEST DUP3 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP5 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH32 0xDDF252AD1BE2C89B69C2B068FC378DAA952BA7F163C4A11628F55A4DF523B3EF DUP5 PUSH1 0x40 MLOAD PUSH2 0x30C0 SWAP2 DUP2 MSTORE PUSH1 0x20 ADD SWAP1 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 LOG3 POP POP POP POP JUMP JUMPDEST PUSH1 0x60 PUSH0 PUSH2 0x30DB DUP5 DUP5 PUSH2 0x3A9C JUMP JUMPDEST SWAP1 POP DUP1 DUP1 ISZERO PUSH2 0x30FC JUMPI POP PUSH0 RETURNDATASIZE GT DUP1 PUSH2 0x30FC JUMPI POP PUSH0 DUP5 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND EXTCODESIZE GT JUMPDEST ISZERO PUSH2 0x3111 JUMPI PUSH2 0x3109 PUSH2 0x3AAF JUMP JUMPDEST SWAP2 POP POP PUSH2 0x862 JUMP JUMPDEST DUP1 ISZERO PUSH2 0x313B JUMPI PUSH1 0x40 MLOAD PUSH4 0x9996B315 PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP6 AND PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x24 ADD PUSH2 0xBF7 JUMP JUMPDEST RETURNDATASIZE ISZERO PUSH2 0x314E JUMPI PUSH2 0x3149 PUSH2 0x3AC8 JUMP JUMPDEST PUSH2 0x3167 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH4 0xD6BDA275 PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH0 DUP3 DUP3 XOR DUP3 DUP5 LT MUL DUP3 XOR PUSH2 0x8A9 JUMP JUMPDEST PUSH2 0x3186 DUP3 PUSH2 0x3AD3 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP4 AND SWAP1 PUSH32 0xBC7CD75A20EE27FD9ADEBAB32041F755214DBC6BFFA90CC0225B39DA2E5C2D3B SWAP1 PUSH0 SWAP1 LOG2 DUP1 MLOAD ISZERO PUSH2 0x31CA JUMPI PUSH2 0x210F DUP3 DUP3 PUSH2 0x30CE JUMP JUMPDEST PUSH2 0xB4C PUSH2 0x3B36 JUMP JUMPDEST PUSH2 0x31E5 PUSH2 0x31DD PUSH2 0x8F2 JUMP JUMPDEST DUP6 ADDRESS DUP6 PUSH2 0x3B55 JUMP JUMPDEST PUSH2 0x31EF DUP4 DUP3 PUSH2 0x3B8B JUMP JUMPDEST DUP3 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP5 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH32 0xDCBC1C05240F31FF3AD067EF1EE35CE4997762752E3A095284754544F4C709D7 DUP5 DUP5 PUSH1 0x40 MLOAD PUSH2 0x30C0 SWAP3 SWAP2 SWAP1 SWAP2 DUP3 MSTORE PUSH1 0x20 DUP3 ADD MSTORE PUSH1 0x40 ADD SWAP1 JUMP JUMPDEST PUSH2 0x3245 PUSH2 0x3BBF JUMP JUMPDEST PUSH2 0x25CF JUMPI PUSH1 0x40 MLOAD PUSH4 0x1AFCD79F PUSH1 0xE3 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH2 0x326A PUSH2 0x323D JUMP JUMPDEST PUSH2 0x9B7 DUP2 PUSH2 0x3BD8 JUMP JUMPDEST PUSH2 0x327B PUSH2 0x323D JUMP JUMPDEST PUSH2 0xB4C DUP3 DUP3 PUSH2 0x3C5B JUMP JUMPDEST DUP4 MLOAD ISZERO DUP1 PUSH2 0x3294 JUMPI POP DUP4 MLOAD PUSH1 0x20 LT JUMPDEST DUP1 PUSH2 0x32A1 JUMPI POP DUP3 MLOAD DUP5 MLOAD EQ ISZERO JUMPDEST DUP1 PUSH2 0x32AE JUMPI POP DUP2 MLOAD DUP5 MLOAD EQ ISZERO JUMPDEST DUP1 PUSH2 0x32BB JUMPI POP DUP1 MLOAD DUP5 MLOAD EQ ISZERO JUMPDEST ISZERO PUSH2 0x32DC JUMPI PUSH1 0x40 MLOAD PUSH1 0x1 PUSH3 0xAD1FAB PUSH1 0xE0 SHL SUB NOT DUP2 MSTORE PUSH1 0x4 ADD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH2 0x32E4 PUSH2 0x3EBC JUMP JUMPDEST PUSH2 0x32EC PUSH2 0x3EBC JUMP JUMPDEST PUSH0 JUMPDEST DUP7 MLOAD DUP2 LT ISZERO PUSH2 0x378F JUMPI PUSH0 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP8 DUP3 DUP2 MLOAD DUP2 LT PUSH2 0x3313 JUMPI PUSH2 0x3313 PUSH2 0x4662 JUMP JUMPDEST PUSH1 0x20 MUL PUSH1 0x20 ADD ADD MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND SUB PUSH2 0x3342 JUMPI PUSH1 0x40 MLOAD PUSH4 0x2711B74D PUSH1 0xE1 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH2 0x337E PUSH2 0x334D PUSH2 0x26EB JUMP JUMPDEST DUP9 DUP4 DUP2 MLOAD DUP2 LT PUSH2 0x335F JUMPI PUSH2 0x335F PUSH2 0x4662 JUMP JUMPDEST PUSH1 0x20 MUL PUSH1 0x20 ADD ADD MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH2 0x2842 SWAP1 SWAP2 SWAP1 PUSH4 0xFFFFFFFF AND JUMP JUMPDEST PUSH0 JUMPDEST DUP2 DUP2 LT ISZERO PUSH2 0x341E JUMPI DUP8 DUP2 DUP2 MLOAD DUP2 LT PUSH2 0x339A JUMPI PUSH2 0x339A PUSH2 0x4662 JUMP JUMPDEST PUSH1 0x20 MUL PUSH1 0x20 ADD ADD MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP9 DUP4 DUP2 MLOAD DUP2 LT PUSH2 0x33BD JUMPI PUSH2 0x33BD PUSH2 0x4662 JUMP JUMPDEST PUSH1 0x20 MUL PUSH1 0x20 ADD ADD MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND SUB PUSH2 0x3416 JUMPI DUP8 DUP3 DUP2 MLOAD DUP2 LT PUSH2 0x33E5 JUMPI PUSH2 0x33E5 PUSH2 0x4662 JUMP JUMPDEST PUSH1 0x20 MUL PUSH1 0x20 ADD ADD MLOAD PUSH1 0x40 MLOAD PUSH4 0xB5A9314F PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0xBF7 SWAP2 SWAP1 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP2 SWAP1 SWAP2 AND DUP2 MSTORE PUSH1 0x20 ADD SWAP1 JUMP JUMPDEST PUSH1 0x1 ADD PUSH2 0x3380 JUMP JUMPDEST POP DUP7 MLOAD DUP6 DUP3 DUP2 MLOAD DUP2 LT PUSH2 0x3433 JUMPI PUSH2 0x3433 PUSH2 0x4662 JUMP JUMPDEST PUSH1 0x20 MUL PUSH1 0x20 ADD ADD MLOAD PUSH1 0xFF AND LT ISZERO DUP1 PUSH2 0x347A JUMPI POP DUP3 DUP6 DUP3 DUP2 MLOAD DUP2 LT PUSH2 0x3459 JUMPI PUSH2 0x3459 PUSH2 0x4662 JUMP JUMPDEST PUSH1 0x20 MUL PUSH1 0x20 ADD ADD MLOAD PUSH1 0xFF AND PUSH1 0x20 DUP2 LT PUSH2 0x3474 JUMPI PUSH2 0x3474 PUSH2 0x4662 JUMP JUMPDEST PUSH1 0x20 MUL ADD MLOAD JUMPDEST ISZERO PUSH2 0x34BC JUMPI DUP5 DUP2 DUP2 MLOAD DUP2 LT PUSH2 0x3491 JUMPI PUSH2 0x3491 PUSH2 0x4662 JUMP JUMPDEST PUSH1 0x20 MUL PUSH1 0x20 ADD ADD MLOAD PUSH1 0x40 MLOAD PUSH4 0x306CCD5D PUSH1 0xE1 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0xBF7 SWAP2 SWAP1 PUSH1 0xFF SWAP2 SWAP1 SWAP2 AND DUP2 MSTORE PUSH1 0x20 ADD SWAP1 JUMP JUMPDEST DUP7 MLOAD DUP5 DUP3 DUP2 MLOAD DUP2 LT PUSH2 0x34D0 JUMPI PUSH2 0x34D0 PUSH2 0x4662 JUMP JUMPDEST PUSH1 0x20 MUL PUSH1 0x20 ADD ADD MLOAD PUSH1 0xFF AND LT ISZERO DUP1 PUSH2 0x3517 JUMPI POP DUP2 DUP5 DUP3 DUP2 MLOAD DUP2 LT PUSH2 0x34F6 JUMPI PUSH2 0x34F6 PUSH2 0x4662 JUMP JUMPDEST PUSH1 0x20 MUL PUSH1 0x20 ADD ADD MLOAD PUSH1 0xFF AND PUSH1 0x20 DUP2 LT PUSH2 0x3511 JUMPI PUSH2 0x3511 PUSH2 0x4662 JUMP JUMPDEST PUSH1 0x20 MUL ADD MLOAD JUMPDEST ISZERO PUSH2 0x3559 JUMPI DUP4 DUP2 DUP2 MLOAD DUP2 LT PUSH2 0x352E JUMPI PUSH2 0x352E PUSH2 0x4662 JUMP JUMPDEST PUSH1 0x20 MUL PUSH1 0x20 ADD ADD MLOAD PUSH1 0x40 MLOAD PUSH4 0x27769241 PUSH1 0xE1 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0xBF7 SWAP2 SWAP1 PUSH1 0xFF SWAP2 SWAP1 SWAP2 AND DUP2 MSTORE PUSH1 0x20 ADD SWAP1 JUMP JUMPDEST PUSH1 0x1 DUP4 DUP7 DUP4 DUP2 MLOAD DUP2 LT PUSH2 0x356E JUMPI PUSH2 0x356E PUSH2 0x4662 JUMP JUMPDEST PUSH1 0x20 MUL PUSH1 0x20 ADD ADD MLOAD PUSH1 0xFF AND PUSH1 0x20 DUP2 LT PUSH2 0x3589 JUMPI PUSH2 0x3589 PUSH2 0x4662 JUMP JUMPDEST PUSH1 0x20 MUL ADD SWAP1 ISZERO ISZERO SWAP1 DUP2 ISZERO ISZERO DUP2 MSTORE POP POP PUSH1 0x1 DUP3 DUP6 DUP4 DUP2 MLOAD DUP2 LT PUSH2 0x35AD JUMPI PUSH2 0x35AD PUSH2 0x4662 JUMP JUMPDEST PUSH1 0x20 MUL PUSH1 0x20 ADD ADD MLOAD PUSH1 0xFF AND PUSH1 0x20 DUP2 LT PUSH2 0x35C8 JUMPI PUSH2 0x35C8 PUSH2 0x4662 JUMP JUMPDEST SWAP2 ISZERO ISZERO PUSH1 0x20 SWAP1 SWAP3 MUL ADD MSTORE DUP7 MLOAD DUP8 SWAP1 DUP3 SWAP1 DUP2 LT PUSH2 0x35E6 JUMPI PUSH2 0x35E6 PUSH2 0x4662 JUMP JUMPDEST PUSH1 0x20 MUL PUSH1 0x20 ADD ADD MLOAD PUSH1 0x2 DUP3 PUSH1 0x20 DUP2 LT PUSH2 0x3601 JUMPI PUSH2 0x3601 PUSH2 0x4662 JUMP JUMPDEST ADD PUSH0 PUSH2 0x100 EXP DUP2 SLOAD DUP2 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB MUL NOT AND SWAP1 DUP4 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND MUL OR SWAP1 SSTORE POP DUP5 DUP2 DUP2 MLOAD DUP2 LT PUSH2 0x3637 JUMPI PUSH2 0x3637 PUSH2 0x4662 JUMP JUMPDEST PUSH1 0x20 MUL PUSH1 0x20 ADD ADD MLOAD PUSH1 0x1 PUSH2 0x364B SWAP2 SWAP1 PUSH2 0x4649 JUMP JUMPDEST PUSH0 DUP3 PUSH1 0x20 DUP2 LT PUSH2 0x365D JUMPI PUSH2 0x365D PUSH2 0x4662 JUMP JUMPDEST PUSH1 0x20 SWAP2 DUP3 DUP3 DIV ADD SWAP2 SWAP1 MOD PUSH2 0x100 EXP DUP2 SLOAD DUP2 PUSH1 0xFF MUL NOT AND SWAP1 DUP4 PUSH1 0xFF AND MUL OR SWAP1 SSTORE POP DUP4 DUP2 DUP2 MLOAD DUP2 LT PUSH2 0x368F JUMPI PUSH2 0x368F PUSH2 0x4662 JUMP JUMPDEST PUSH1 0x20 MUL PUSH1 0x20 ADD ADD MLOAD PUSH1 0x1 PUSH2 0x36A3 SWAP2 SWAP1 PUSH2 0x4649 JUMP JUMPDEST PUSH1 0x1 DUP3 PUSH1 0x20 DUP2 LT PUSH2 0x36B6 JUMPI PUSH2 0x36B6 PUSH2 0x4662 JUMP JUMPDEST PUSH1 0x20 SWAP2 DUP3 DUP3 DIV ADD SWAP2 SWAP1 MOD PUSH2 0x100 EXP DUP2 SLOAD DUP2 PUSH1 0xFF MUL NOT AND SWAP1 DUP4 PUSH1 0xFF AND MUL OR SWAP1 SSTORE POP PUSH2 0x3724 DUP7 DUP3 DUP2 MLOAD DUP2 LT PUSH2 0x36EB JUMPI PUSH2 0x36EB PUSH2 0x4662 JUMP JUMPDEST PUSH1 0x20 MUL PUSH1 0x20 ADD ADD MLOAD DUP9 DUP4 DUP2 MLOAD DUP2 LT PUSH2 0x3705 JUMPI PUSH2 0x3705 PUSH2 0x4662 JUMP JUMPDEST PUSH1 0x20 MUL PUSH1 0x20 ADD ADD MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH2 0x28D4 SWAP1 SWAP2 SWAP1 PUSH4 0xFFFFFFFF AND JUMP JUMPDEST DUP7 DUP2 DUP2 MLOAD DUP2 LT PUSH2 0x3736 JUMPI PUSH2 0x3736 PUSH2 0x4662 JUMP JUMPDEST PUSH1 0x20 MUL PUSH1 0x20 ADD ADD MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH32 0x4973F7978F2B1810531AED51DC15A8E446CB3191AFCCA470F8CE464AF7494F58 DUP3 PUSH1 0x40 MLOAD PUSH2 0x377F SWAP2 SWAP1 PUSH1 0xFF SWAP2 SWAP1 SWAP2 AND DUP2 MSTORE PUSH1 0x20 ADD SWAP1 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 LOG2 PUSH1 0x1 ADD PUSH2 0x32EE JUMP JUMPDEST POP PUSH32 0x193FC4E628C27AE3CA098952DFC16A40425B44E7B0A97F4CC59D0F267F47CAEC DUP5 PUSH1 0x40 MLOAD PUSH2 0x37BF SWAP2 SWAP1 PUSH2 0x46D9 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 LOG1 PUSH32 0x3C56B6BCA0D55EDA581F8F2819D1F85D3B91CFCC24914A8FA39D301796D8964C DUP4 PUSH1 0x40 MLOAD PUSH2 0x37F6 SWAP2 SWAP1 PUSH2 0x46D9 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 LOG1 POP POP POP POP POP POP JUMP JUMPDEST DUP1 PUSH0 JUMPDEST DUP2 ISZERO DUP1 ISZERO SWAP1 PUSH2 0x383F JUMPI POP PUSH1 0x1 DUP2 PUSH1 0x20 DUP2 LT PUSH2 0x3826 JUMPI PUSH2 0x3826 PUSH2 0x4662 JUMP JUMPDEST PUSH1 0x20 DUP2 DIV SWAP1 SWAP2 ADD SLOAD PUSH1 0xFF PUSH1 0x1F SWAP1 SWAP3 AND PUSH2 0x100 EXP SWAP1 DIV AND ISZERO ISZERO JUMPDEST DUP1 ISZERO PUSH2 0x384B JUMPI POP PUSH1 0x20 DUP2 LT JUMPDEST ISZERO PUSH2 0x38F9 JUMPI PUSH0 PUSH1 0x2 PUSH1 0x1 DUP1 DUP5 PUSH1 0x20 DUP2 LT PUSH2 0x3867 JUMPI PUSH2 0x3867 PUSH2 0x4662 JUMP JUMPDEST PUSH1 0x20 SWAP2 DUP3 DUP3 DIV ADD SWAP2 SWAP1 MOD SWAP1 SLOAD SWAP1 PUSH2 0x100 EXP SWAP1 DIV PUSH1 0xFF AND PUSH2 0x3887 SWAP2 SWAP1 PUSH2 0x4731 JUMP JUMPDEST PUSH1 0xFF AND PUSH1 0x20 DUP2 LT PUSH2 0x389A JUMPI PUSH2 0x389A PUSH2 0x4662 JUMP JUMPDEST ADD SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND SWAP1 POP PUSH0 PUSH2 0x38B5 DUP5 PUSH2 0x24C2 DUP5 PUSH2 0x2BCA JUMP JUMPDEST SWAP1 POP DUP1 PUSH0 SUB PUSH2 0x38C5 JUMPI POP POP PUSH2 0x38E9 JUMP JUMPDEST PUSH2 0x38D9 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP4 AND DUP3 PUSH0 PUSH2 0x2C26 JUMP JUMPDEST POP PUSH2 0x38E4 DUP2 DUP6 PUSH2 0x471E JUMP JUMPDEST SWAP4 POP POP POP JUMPDEST PUSH2 0x38F2 DUP2 PUSH2 0x468D JUMP JUMPDEST SWAP1 POP PUSH2 0x3809 JUMP JUMPDEST POP DUP1 ISZERO PUSH2 0xB4C JUMPI PUSH1 0x40 MLOAD PUSH4 0x351DC55D PUSH1 0xE2 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST DUP3 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP6 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND EQ PUSH2 0x393D JUMPI PUSH2 0x393D DUP4 DUP7 DUP4 PUSH2 0x2162 JUMP JUMPDEST PUSH2 0x3947 DUP4 DUP3 PUSH2 0x3CAB JUMP JUMPDEST PUSH2 0x3959 PUSH2 0x3952 PUSH2 0x8F2 JUMP JUMPDEST DUP6 DUP5 PUSH2 0x3CDF JUMP JUMPDEST DUP3 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP5 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP7 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH32 0xFBDE797D201C681B91056529119E0B02407C7BB96A4A2C75C01FC9667232C8DB DUP6 DUP6 PUSH1 0x40 MLOAD PUSH2 0x39B1 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 POP POP POP JUMP JUMPDEST PUSH0 PUSH1 0x2 DUP3 PUSH1 0x3 DUP2 GT ISZERO PUSH2 0x39D5 JUMPI PUSH2 0x39D5 PUSH2 0x48EE JUMP JUMPDEST PUSH2 0x39DF SWAP2 SWAP1 PUSH2 0x4902 JUMP JUMPDEST PUSH1 0xFF AND PUSH1 0x1 EQ SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH0 PUSH0 PUSH0 PUSH2 0x39F9 DUP7 DUP7 PUSH2 0x3D14 JUMP JUMPDEST SWAP2 POP SWAP2 POP DUP2 PUSH0 SUB PUSH2 0x3A1D JUMPI DUP4 DUP2 DUP2 PUSH2 0x3A13 JUMPI PUSH2 0x3A13 PUSH2 0x48DA JUMP JUMPDEST DIV SWAP3 POP POP POP PUSH2 0x8A9 JUMP JUMPDEST DUP2 DUP5 GT PUSH2 0x3A34 JUMPI PUSH2 0x3A34 PUSH1 0x3 DUP6 ISZERO MUL PUSH1 0x11 XOR PUSH2 0x3D30 JUMP JUMPDEST PUSH0 DUP5 DUP7 DUP9 MULMOD PUSH0 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 DUP6 DUP5 GT SWAP1 SWAP7 SUB SWAP6 SWAP1 SWAP6 MUL SWAP2 SWAP1 SWAP4 SUB SWAP4 SWAP1 SWAP4 DIV SWAP3 SWAP1 SWAP3 OR MUL SWAP2 POP POP SWAP4 SWAP3 POP POP POP JUMP JUMPDEST PUSH0 PUSH0 PUSH0 DUP4 MLOAD PUSH1 0x20 DUP6 ADD DUP7 GAS DELEGATECALL SWAP4 SWAP3 POP POP POP JUMP JUMPDEST PUSH1 0x40 MLOAD RETURNDATASIZE DUP2 MSTORE RETURNDATASIZE PUSH0 PUSH1 0x20 DUP4 ADD RETURNDATACOPY RETURNDATASIZE PUSH1 0x20 ADD DUP2 ADD PUSH1 0x40 MSTORE SWAP1 JUMP JUMPDEST PUSH1 0x40 MLOAD RETURNDATASIZE PUSH0 DUP3 RETURNDATACOPY RETURNDATASIZE DUP2 REVERT JUMPDEST DUP1 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND EXTCODESIZE PUSH0 SUB PUSH2 0x3B08 JUMPI PUSH1 0x40 MLOAD PUSH4 0x4C9C8CE3 PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP3 AND PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x24 ADD PUSH2 0xBF7 JUMP JUMPDEST PUSH0 MLOAD PUSH1 0x20 PUSH2 0x4A4E PUSH0 CODECOPY PUSH0 MLOAD SWAP1 PUSH0 MSTORE DUP1 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB NOT AND PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP3 SWAP1 SWAP3 AND SWAP2 SWAP1 SWAP2 OR SWAP1 SSTORE JUMP JUMPDEST CALLVALUE ISZERO PUSH2 0x25CF JUMPI PUSH1 0x40 MLOAD PUSH4 0xB398979F PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH2 0x3B63 DUP5 DUP5 DUP5 DUP5 PUSH1 0x1 PUSH2 0x3D41 JUMP JUMPDEST PUSH2 0x21AD JUMPI PUSH1 0x40 MLOAD PUSH4 0x5274AFE7 PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP6 AND PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x24 ADD PUSH2 0xBF7 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP3 AND PUSH2 0x3BB4 JUMPI PUSH1 0x40 MLOAD PUSH4 0xEC442F05 PUSH1 0xE0 SHL DUP2 MSTORE PUSH0 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x24 ADD PUSH2 0xBF7 JUMP JUMPDEST PUSH2 0xB4C PUSH0 DUP4 DUP4 PUSH2 0x2FA8 JUMP JUMPDEST PUSH0 PUSH2 0x3BC8 PUSH2 0x2AB0 JUMP JUMPDEST SLOAD PUSH1 0x1 PUSH1 0x40 SHL SWAP1 DIV PUSH1 0xFF AND SWAP2 SWAP1 POP JUMP JUMPDEST PUSH2 0x3BE0 PUSH2 0x323D JUMP JUMPDEST PUSH32 0x773E532DFEDE91F04B12A73D3D2ACD361424F41F76B4FB79F090161E36B4E00 PUSH0 DUP1 PUSH2 0x3C0C DUP5 PUSH2 0x3DAE JUMP JUMPDEST SWAP2 POP SWAP2 POP DUP2 PUSH2 0x3C1C JUMPI PUSH1 0x12 PUSH2 0x3C1E JUMP JUMPDEST DUP1 JUMPDEST DUP4 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA8 SHL SUB NOT AND PUSH1 0x1 PUSH1 0xA0 SHL PUSH1 0xFF SWAP3 SWAP1 SWAP3 AND SWAP2 SWAP1 SWAP2 MUL PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB NOT AND OR PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP5 SWAP1 SWAP5 AND SWAP4 SWAP1 SWAP4 OR SWAP1 SWAP2 SSTORE POP POP JUMP JUMPDEST PUSH2 0x3C63 PUSH2 0x323D JUMP JUMPDEST PUSH0 MLOAD PUSH1 0x20 PUSH2 0x4A2E PUSH0 CODECOPY PUSH0 MLOAD SWAP1 PUSH0 MSTORE PUSH32 0x52C63247E1F47DB19D5CE0460030C497F067CA4CEBF71BA98EEADABE20BACE03 PUSH2 0x3C9C DUP5 DUP3 PUSH2 0x4973 JUMP JUMPDEST POP PUSH1 0x4 DUP2 ADD PUSH2 0x21AD DUP4 DUP3 PUSH2 0x4973 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP3 AND PUSH2 0x3CD4 JUMPI PUSH1 0x40 MLOAD PUSH4 0x4B637E8F PUSH1 0xE1 SHL DUP2 MSTORE PUSH0 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x24 ADD PUSH2 0xBF7 JUMP JUMPDEST PUSH2 0xB4C DUP3 PUSH0 DUP4 PUSH2 0x2FA8 JUMP JUMPDEST PUSH2 0x3CEC DUP4 DUP4 DUP4 PUSH1 0x1 PUSH2 0x3E39 JUMP JUMPDEST PUSH2 0x210F JUMPI PUSH1 0x40 MLOAD PUSH4 0x5274AFE7 PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP5 AND PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x24 ADD PUSH2 0xBF7 JUMP JUMPDEST PUSH0 DUP1 PUSH0 NOT DUP4 DUP6 MULMOD SWAP4 SWAP1 SWAP3 MUL DUP1 DUP5 LT SWAP4 DUP2 SWAP1 SUB SWAP4 SWAP1 SWAP4 SUB SWAP4 SWAP2 POP POP JUMP JUMPDEST PUSH4 0x4E487B71 PUSH0 MSTORE DUP1 PUSH1 0x20 MSTORE PUSH1 0x24 PUSH1 0x1C REVERT JUMPDEST PUSH1 0x40 MLOAD PUSH4 0x23B872DD PUSH1 0xE0 SHL PUSH0 DUP2 DUP2 MSTORE PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP8 DUP2 AND PUSH1 0x4 MSTORE DUP7 AND PUSH1 0x24 MSTORE PUSH1 0x44 DUP6 SWAP1 MSTORE SWAP2 PUSH1 0x20 DUP4 PUSH1 0x64 DUP2 DUP1 DUP13 GAS CALL SWAP3 POP PUSH1 0x1 PUSH0 MLOAD EQ DUP4 AND PUSH2 0x3D9D JUMPI DUP4 DUP4 ISZERO AND ISZERO PUSH2 0x3D91 JUMPI RETURNDATASIZE PUSH0 DUP3 RETURNDATACOPY RETURNDATASIZE DUP2 REVERT JUMPDEST PUSH0 DUP9 EXTCODESIZE GT RETURNDATASIZE ISZERO AND DUP4 AND SWAP3 POP JUMPDEST PUSH1 0x40 MSTORE POP PUSH0 PUSH1 0x60 MSTORE SWAP6 SWAP5 POP POP POP POP POP JUMP JUMPDEST PUSH0 PUSH0 PUSH0 PUSH2 0x3DBA PUSH1 0x40 MLOAD SWAP1 JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH1 0x4 DUP2 MSTORE PUSH1 0x24 DUP2 ADD SWAP1 SWAP2 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 SWAP2 POP PUSH0 SWAP1 DUP2 SWAP1 PUSH2 0x3DF5 SWAP1 DUP8 SWAP1 PUSH2 0x3E9B JUMP JUMPDEST POP SWAP2 POP SWAP2 POP PUSH2 0x3E03 DUP4 PUSH1 0x40 MSTORE JUMP JUMPDEST DUP2 DUP1 ISZERO PUSH2 0x3E11 JUMPI POP PUSH1 0x20 RETURNDATASIZE LT ISZERO JUMPDEST DUP1 ISZERO PUSH2 0x3E1E JUMPI POP PUSH1 0xFF DUP2 GT ISZERO JUMPDEST PUSH2 0x3E29 JUMPI PUSH0 PUSH0 PUSH2 0x3E2D JUMP JUMPDEST PUSH1 0x1 DUP2 JUMPDEST SWAP5 POP SWAP5 POP POP POP POP SWAP2 POP SWAP2 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH4 0xA9059CBB PUSH1 0xE0 SHL PUSH0 DUP2 DUP2 MSTORE PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP7 AND PUSH1 0x4 MSTORE PUSH1 0x24 DUP6 SWAP1 MSTORE SWAP2 PUSH1 0x20 DUP4 PUSH1 0x44 DUP2 DUP1 DUP12 GAS CALL SWAP3 POP PUSH1 0x1 PUSH0 MLOAD EQ DUP4 AND PUSH2 0x3E8F JUMPI DUP4 DUP4 ISZERO AND ISZERO PUSH2 0x3E83 JUMPI RETURNDATASIZE PUSH0 DUP3 RETURNDATACOPY RETURNDATASIZE DUP2 REVERT JUMPDEST PUSH0 DUP8 EXTCODESIZE GT RETURNDATASIZE ISZERO AND DUP4 AND SWAP3 POP JUMPDEST PUSH1 0x40 MSTORE POP SWAP5 SWAP4 POP POP POP POP JUMP JUMPDEST PUSH0 PUSH0 PUSH0 PUSH1 0x40 PUSH0 DUP6 MLOAD PUSH1 0x20 DUP8 ADD DUP9 GAS STATICCALL SWAP3 POP PUSH0 MLOAD SWAP2 POP PUSH1 0x20 MLOAD SWAP1 POP SWAP3 POP SWAP3 POP SWAP3 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 PUSH2 0x400 ADD PUSH1 0x40 MSTORE DUP1 PUSH1 0x20 SWAP1 PUSH1 0x20 DUP3 MUL DUP1 CALLDATASIZE DUP4 CALLDATACOPY POP SWAP2 SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH0 DUP2 MLOAD DUP1 DUP5 MSTORE DUP1 PUSH1 0x20 DUP5 ADD PUSH1 0x20 DUP7 ADD MCOPY PUSH0 PUSH1 0x20 DUP3 DUP7 ADD ADD MSTORE PUSH1 0x20 PUSH1 0x1F NOT PUSH1 0x1F DUP4 ADD AND DUP6 ADD ADD SWAP2 POP POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x20 DUP2 MSTORE PUSH0 PUSH2 0x8A9 PUSH1 0x20 DUP4 ADD DUP5 PUSH2 0x3EDB JUMP JUMPDEST PUSH0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x3F2B JUMPI PUSH0 PUSH0 REVERT JUMPDEST POP CALLDATALOAD SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 AND DUP2 EQ PUSH2 0x9B7 JUMPI PUSH0 PUSH0 REVERT JUMPDEST PUSH0 PUSH0 PUSH1 0x40 DUP4 DUP6 SUB SLT ISZERO PUSH2 0x3F57 JUMPI PUSH0 PUSH0 REVERT JUMPDEST DUP3 CALLDATALOAD PUSH2 0x3F62 DUP2 PUSH2 0x3F32 JUMP JUMPDEST SWAP5 PUSH1 0x20 SWAP4 SWAP1 SWAP4 ADD CALLDATALOAD SWAP4 POP POP POP JUMP JUMPDEST PUSH0 PUSH0 PUSH0 PUSH1 0x60 DUP5 DUP7 SUB SLT ISZERO PUSH2 0x3F82 JUMPI PUSH0 PUSH0 REVERT JUMPDEST DUP4 CALLDATALOAD PUSH2 0x3F8D DUP2 PUSH2 0x3F32 JUMP JUMPDEST SWAP3 POP PUSH1 0x20 DUP5 ADD CALLDATALOAD PUSH2 0x3F9D DUP2 PUSH2 0x3F32 JUMP JUMPDEST SWAP3 SWAP6 SWAP3 SWAP5 POP POP POP PUSH1 0x40 SWAP2 SWAP1 SWAP2 ADD CALLDATALOAD SWAP1 JUMP JUMPDEST DUP1 CALLDATALOAD PUSH1 0xFF DUP2 AND DUP2 EQ PUSH2 0x3FBE JUMPI PUSH0 PUSH0 REVERT JUMPDEST SWAP2 SWAP1 POP JUMP JUMPDEST PUSH4 0x4E487B71 PUSH1 0xE0 SHL PUSH0 MSTORE PUSH1 0x41 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH0 REVERT 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 PUSH2 0x3FFF JUMPI PUSH2 0x3FFF PUSH2 0x3FC3 JUMP JUMPDEST PUSH1 0x40 MSTORE SWAP2 SWAP1 POP JUMP JUMPDEST PUSH0 DUP3 PUSH1 0x1F DUP4 ADD SLT PUSH2 0x4016 JUMPI PUSH0 PUSH0 REVERT JUMPDEST DUP2 CALLDATALOAD PUSH1 0x20 DUP4 ADD PUSH0 PUSH0 PUSH1 0x1 PUSH1 0x1 PUSH1 0x40 SHL SUB DUP5 GT ISZERO PUSH2 0x4035 JUMPI PUSH2 0x4035 PUSH2 0x3FC3 JUMP JUMPDEST POP PUSH1 0x1F DUP4 ADD PUSH1 0x1F NOT AND PUSH1 0x20 ADD PUSH2 0x404A DUP2 PUSH2 0x3FD7 JUMP JUMPDEST SWAP2 POP POP DUP3 DUP2 MSTORE DUP6 DUP4 DUP4 ADD GT ISZERO PUSH2 0x405E JUMPI PUSH0 PUSH0 REVERT JUMPDEST DUP3 DUP3 PUSH1 0x20 DUP4 ADD CALLDATACOPY PUSH0 SWAP3 DUP2 ADD PUSH1 0x20 ADD SWAP3 SWAP1 SWAP3 MSTORE POP SWAP4 SWAP3 POP POP POP JUMP JUMPDEST PUSH0 PUSH0 PUSH0 PUSH1 0x60 DUP5 DUP7 SUB SLT ISZERO PUSH2 0x408A JUMPI PUSH0 PUSH0 REVERT JUMPDEST PUSH2 0x4093 DUP5 PUSH2 0x3FAE JUMP JUMPDEST SWAP3 POP PUSH2 0x40A1 PUSH1 0x20 DUP6 ADD PUSH2 0x3FAE JUMP JUMPDEST SWAP2 POP PUSH1 0x40 DUP5 ADD CALLDATALOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0x40 SHL SUB DUP2 GT ISZERO PUSH2 0x40BB JUMPI PUSH0 PUSH0 REVERT JUMPDEST PUSH2 0x40C7 DUP7 DUP3 DUP8 ADD PUSH2 0x4007 JUMP JUMPDEST SWAP2 POP POP SWAP3 POP SWAP3 POP SWAP3 JUMP JUMPDEST PUSH0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x40E1 JUMPI PUSH0 PUSH0 REVERT JUMPDEST DUP2 CALLDATALOAD PUSH2 0x8A9 DUP2 PUSH2 0x3F32 JUMP JUMPDEST PUSH0 PUSH0 PUSH1 0x40 DUP4 DUP6 SUB SLT ISZERO PUSH2 0x40FD JUMPI PUSH0 PUSH0 REVERT JUMPDEST DUP3 CALLDATALOAD PUSH2 0x4108 DUP2 PUSH2 0x3F32 JUMP JUMPDEST SWAP2 POP PUSH1 0x20 DUP4 ADD CALLDATALOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0x40 SHL SUB DUP2 GT ISZERO PUSH2 0x4122 JUMPI PUSH0 PUSH0 REVERT JUMPDEST PUSH2 0x412E DUP6 DUP3 DUP7 ADD PUSH2 0x4007 JUMP JUMPDEST SWAP2 POP POP SWAP3 POP SWAP3 SWAP1 POP JUMP JUMPDEST PUSH2 0x400 DUP2 ADD DUP2 DUP4 PUSH0 JUMPDEST PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x4163 JUMPI DUP2 MLOAD PUSH1 0xFF AND DUP4 MSTORE PUSH1 0x20 SWAP3 DUP4 ADD SWAP3 SWAP1 SWAP2 ADD SWAP1 PUSH1 0x1 ADD PUSH2 0x4141 JUMP JUMPDEST POP POP POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH0 PUSH0 PUSH1 0x40 DUP4 DUP6 SUB SLT ISZERO PUSH2 0x417D JUMPI PUSH0 PUSH0 REVERT JUMPDEST DUP3 CALLDATALOAD SWAP2 POP PUSH1 0x20 DUP4 ADD CALLDATALOAD PUSH2 0x418F DUP2 PUSH2 0x3F32 JUMP JUMPDEST DUP1 SWAP2 POP POP SWAP3 POP SWAP3 SWAP1 POP JUMP JUMPDEST DUP1 ISZERO ISZERO DUP2 EQ PUSH2 0x9B7 JUMPI PUSH0 PUSH0 REVERT JUMPDEST PUSH0 PUSH0 PUSH0 PUSH0 PUSH1 0x80 DUP6 DUP8 SUB SLT ISZERO PUSH2 0x41BA JUMPI PUSH0 PUSH0 REVERT JUMPDEST PUSH2 0x41C3 DUP6 PUSH2 0x3FAE JUMP JUMPDEST SWAP4 POP PUSH1 0x20 DUP6 ADD CALLDATALOAD PUSH2 0x41D3 DUP2 PUSH2 0x3F32 JUMP JUMPDEST SWAP3 POP PUSH1 0x40 DUP6 ADD CALLDATALOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0x40 SHL SUB DUP2 GT ISZERO PUSH2 0x41ED JUMPI PUSH0 PUSH0 REVERT JUMPDEST PUSH2 0x41F9 DUP8 DUP3 DUP9 ADD PUSH2 0x4007 JUMP JUMPDEST SWAP3 POP POP PUSH1 0x60 DUP6 ADD CALLDATALOAD PUSH2 0x420A DUP2 PUSH2 0x419A JUMP JUMPDEST SWAP4 SWAP7 SWAP3 SWAP6 POP SWAP1 SWAP4 POP POP JUMP JUMPDEST PUSH0 PUSH0 PUSH1 0x40 DUP4 DUP6 SUB SLT ISZERO PUSH2 0x4226 JUMPI PUSH0 PUSH0 REVERT JUMPDEST PUSH2 0x422F DUP4 PUSH2 0x3FAE JUMP JUMPDEST SWAP2 POP PUSH2 0x423D PUSH1 0x20 DUP5 ADD PUSH2 0x3FAE JUMP JUMPDEST SWAP1 POP SWAP3 POP SWAP3 SWAP1 POP JUMP JUMPDEST PUSH0 PUSH1 0x1 PUSH1 0x1 PUSH1 0x40 SHL SUB DUP3 GT ISZERO PUSH2 0x425E JUMPI PUSH2 0x425E PUSH2 0x3FC3 JUMP JUMPDEST POP PUSH1 0x5 SHL PUSH1 0x20 ADD SWAP1 JUMP JUMPDEST PUSH0 DUP3 PUSH1 0x1F DUP4 ADD SLT PUSH2 0x4277 JUMPI PUSH0 PUSH0 REVERT JUMPDEST DUP2 CALLDATALOAD PUSH2 0x428A PUSH2 0x4285 DUP3 PUSH2 0x4246 JUMP JUMPDEST PUSH2 0x3FD7 JUMP JUMPDEST DUP1 DUP3 DUP3 MSTORE PUSH1 0x20 DUP3 ADD SWAP2 POP PUSH1 0x20 DUP4 PUSH1 0x5 SHL DUP7 ADD ADD SWAP3 POP DUP6 DUP4 GT ISZERO PUSH2 0x42AB JUMPI PUSH0 PUSH0 REVERT JUMPDEST PUSH1 0x20 DUP6 ADD JUMPDEST DUP4 DUP2 LT ISZERO PUSH2 0x42CF JUMPI PUSH2 0x42C1 DUP2 PUSH2 0x3FAE JUMP JUMPDEST DUP4 MSTORE PUSH1 0x20 SWAP3 DUP4 ADD SWAP3 ADD PUSH2 0x42B0 JUMP JUMPDEST POP SWAP6 SWAP5 POP POP POP POP POP JUMP JUMPDEST PUSH0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x42E9 JUMPI PUSH0 PUSH0 REVERT JUMPDEST DUP2 CALLDATALOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0x40 SHL SUB DUP2 GT ISZERO PUSH2 0x42FE JUMPI PUSH0 PUSH0 REVERT JUMPDEST PUSH2 0xC18 DUP5 DUP3 DUP6 ADD PUSH2 0x4268 JUMP JUMPDEST PUSH0 PUSH0 PUSH1 0x40 DUP4 DUP6 SUB SLT ISZERO PUSH2 0x431B JUMPI PUSH0 PUSH0 REVERT JUMPDEST PUSH2 0x4324 DUP4 PUSH2 0x3FAE JUMP JUMPDEST SWAP2 POP PUSH1 0x20 DUP4 ADD CALLDATALOAD PUSH2 0x418F DUP2 PUSH2 0x419A JUMP JUMPDEST DUP1 CALLDATALOAD PUSH2 0x3FBE DUP2 PUSH2 0x3F32 JUMP JUMPDEST PUSH0 DUP3 PUSH1 0x1F DUP4 ADD SLT PUSH2 0x434E JUMPI PUSH0 PUSH0 REVERT JUMPDEST DUP2 CALLDATALOAD PUSH2 0x435C PUSH2 0x4285 DUP3 PUSH2 0x4246 JUMP JUMPDEST DUP1 DUP3 DUP3 MSTORE PUSH1 0x20 DUP3 ADD SWAP2 POP PUSH1 0x20 DUP4 PUSH1 0x5 SHL DUP7 ADD ADD SWAP3 POP DUP6 DUP4 GT ISZERO PUSH2 0x437D JUMPI PUSH0 PUSH0 REVERT JUMPDEST PUSH1 0x20 DUP6 ADD JUMPDEST DUP4 DUP2 LT ISZERO PUSH2 0x42CF JUMPI DUP1 CALLDATALOAD PUSH2 0x4395 DUP2 PUSH2 0x3F32 JUMP JUMPDEST DUP4 MSTORE PUSH1 0x20 SWAP3 DUP4 ADD SWAP3 ADD PUSH2 0x4382 JUMP JUMPDEST PUSH0 DUP3 PUSH1 0x1F DUP4 ADD SLT PUSH2 0x43B2 JUMPI PUSH0 PUSH0 REVERT JUMPDEST DUP2 CALLDATALOAD PUSH2 0x43C0 PUSH2 0x4285 DUP3 PUSH2 0x4246 JUMP JUMPDEST DUP1 DUP3 DUP3 MSTORE PUSH1 0x20 DUP3 ADD SWAP2 POP PUSH1 0x20 DUP4 PUSH1 0x5 SHL DUP7 ADD ADD SWAP3 POP DUP6 DUP4 GT ISZERO PUSH2 0x43E1 JUMPI PUSH0 PUSH0 REVERT JUMPDEST PUSH1 0x20 DUP6 ADD JUMPDEST DUP4 DUP2 LT ISZERO PUSH2 0x42CF JUMPI DUP1 CALLDATALOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0x40 SHL SUB DUP2 GT ISZERO PUSH2 0x4403 JUMPI PUSH0 PUSH0 REVERT JUMPDEST PUSH2 0x4412 DUP9 PUSH1 0x20 DUP4 DUP11 ADD ADD PUSH2 0x4007 JUMP JUMPDEST DUP5 MSTORE POP PUSH1 0x20 SWAP3 DUP4 ADD SWAP3 ADD PUSH2 0x43E6 JUMP JUMPDEST PUSH0 PUSH0 PUSH0 PUSH0 PUSH0 PUSH0 PUSH0 PUSH1 0xE0 DUP9 DUP11 SUB SLT ISZERO PUSH2 0x4437 JUMPI PUSH0 PUSH0 REVERT JUMPDEST DUP8 CALLDATALOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0x40 SHL SUB DUP2 GT ISZERO PUSH2 0x444C JUMPI PUSH0 PUSH0 REVERT JUMPDEST PUSH2 0x4458 DUP11 DUP3 DUP12 ADD PUSH2 0x4007 JUMP JUMPDEST SWAP8 POP POP PUSH1 0x20 DUP9 ADD CALLDATALOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0x40 SHL SUB DUP2 GT ISZERO PUSH2 0x4473 JUMPI PUSH0 PUSH0 REVERT JUMPDEST PUSH2 0x447F DUP11 DUP3 DUP12 ADD PUSH2 0x4007 JUMP JUMPDEST SWAP7 POP POP PUSH2 0x448E PUSH1 0x40 DUP10 ADD PUSH2 0x4334 JUMP JUMPDEST SWAP5 POP PUSH1 0x60 DUP9 ADD CALLDATALOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0x40 SHL SUB DUP2 GT ISZERO PUSH2 0x44A8 JUMPI PUSH0 PUSH0 REVERT JUMPDEST PUSH2 0x44B4 DUP11 DUP3 DUP12 ADD PUSH2 0x433F JUMP JUMPDEST SWAP5 POP POP PUSH1 0x80 DUP9 ADD CALLDATALOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0x40 SHL SUB DUP2 GT ISZERO PUSH2 0x44CF JUMPI PUSH0 PUSH0 REVERT JUMPDEST PUSH2 0x44DB DUP11 DUP3 DUP12 ADD PUSH2 0x43A3 JUMP JUMPDEST SWAP4 POP POP PUSH1 0xA0 DUP9 ADD CALLDATALOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0x40 SHL SUB DUP2 GT ISZERO PUSH2 0x44F6 JUMPI PUSH0 PUSH0 REVERT JUMPDEST PUSH2 0x4502 DUP11 DUP3 DUP12 ADD PUSH2 0x4268 JUMP JUMPDEST SWAP3 POP POP PUSH1 0xC0 DUP9 ADD CALLDATALOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0x40 SHL SUB DUP2 GT ISZERO PUSH2 0x451D JUMPI PUSH0 PUSH0 REVERT JUMPDEST PUSH2 0x4529 DUP11 DUP3 DUP12 ADD PUSH2 0x4268 JUMP JUMPDEST SWAP2 POP POP SWAP3 SWAP6 SWAP9 SWAP2 SWAP5 SWAP8 POP SWAP3 SWAP6 POP JUMP JUMPDEST PUSH0 PUSH0 PUSH0 PUSH1 0x60 DUP5 DUP7 SUB SLT ISZERO PUSH2 0x454A JUMPI PUSH0 PUSH0 REVERT JUMPDEST DUP4 CALLDATALOAD SWAP3 POP PUSH1 0x20 DUP5 ADD CALLDATALOAD PUSH2 0x455C DUP2 PUSH2 0x3F32 JUMP JUMPDEST SWAP2 POP PUSH1 0x40 DUP5 ADD CALLDATALOAD PUSH2 0x456C DUP2 PUSH2 0x3F32 JUMP JUMPDEST DUP1 SWAP2 POP POP SWAP3 POP SWAP3 POP SWAP3 JUMP JUMPDEST PUSH2 0x400 DUP2 ADD DUP2 DUP4 PUSH0 JUMPDEST PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x4163 JUMPI DUP2 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP4 MSTORE PUSH1 0x20 SWAP3 DUP4 ADD SWAP3 SWAP1 SWAP2 ADD SWAP1 PUSH1 0x1 ADD PUSH2 0x4580 JUMP JUMPDEST PUSH0 PUSH0 PUSH1 0x40 DUP4 DUP6 SUB SLT ISZERO PUSH2 0x45B9 JUMPI PUSH0 PUSH0 REVERT JUMPDEST DUP3 CALLDATALOAD PUSH2 0x45C4 DUP2 PUSH2 0x3F32 JUMP JUMPDEST SWAP2 POP PUSH1 0x20 DUP4 ADD CALLDATALOAD PUSH2 0x418F DUP2 PUSH2 0x3F32 JUMP JUMPDEST PUSH0 PUSH0 PUSH0 PUSH1 0x60 DUP5 DUP7 SUB SLT ISZERO PUSH2 0x45E6 JUMPI PUSH0 PUSH0 REVERT JUMPDEST PUSH2 0x45EF DUP5 PUSH2 0x3FAE JUMP JUMPDEST SWAP3 POP PUSH2 0x3F9D PUSH1 0x20 DUP6 ADD PUSH2 0x3FAE JUMP JUMPDEST PUSH1 0x1 DUP2 DUP2 SHR SWAP1 DUP3 AND DUP1 PUSH2 0x4611 JUMPI PUSH1 0x7F DUP3 AND SWAP2 POP JUMPDEST PUSH1 0x20 DUP3 LT DUP2 SUB PUSH2 0x462F JUMPI PUSH4 0x4E487B71 PUSH1 0xE0 SHL PUSH0 MSTORE PUSH1 0x22 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH0 REVERT JUMPDEST POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH4 0x4E487B71 PUSH1 0xE0 SHL PUSH0 MSTORE PUSH1 0x11 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH0 REVERT JUMPDEST PUSH1 0xFF DUP2 DUP2 AND DUP4 DUP3 AND ADD SWAP1 DUP2 GT ISZERO PUSH2 0x862 JUMPI PUSH2 0x862 PUSH2 0x4635 JUMP JUMPDEST PUSH4 0x4E487B71 PUSH1 0xE0 SHL PUSH0 MSTORE PUSH1 0x32 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH0 REVERT JUMPDEST PUSH0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x4686 JUMPI PUSH0 PUSH0 REVERT JUMPDEST POP MLOAD SWAP2 SWAP1 POP JUMP JUMPDEST PUSH0 PUSH1 0x1 DUP3 ADD PUSH2 0x469E JUMPI PUSH2 0x469E PUSH2 0x4635 JUMP JUMPDEST POP PUSH1 0x1 ADD SWAP1 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP4 SWAP1 SWAP4 AND DUP4 MSTORE PUSH1 0x20 DUP4 ADD SWAP2 SWAP1 SWAP2 MSTORE PUSH1 0x40 DUP3 ADD MSTORE PUSH1 0x60 ADD SWAP1 JUMP JUMPDEST DUP1 DUP3 ADD DUP1 DUP3 GT ISZERO PUSH2 0x862 JUMPI PUSH2 0x862 PUSH2 0x4635 JUMP JUMPDEST PUSH1 0x20 DUP1 DUP3 MSTORE DUP3 MLOAD DUP3 DUP3 ADD DUP2 SWAP1 MSTORE PUSH0 SWAP2 DUP5 ADD SWAP1 PUSH1 0x40 DUP5 ADD SWAP1 DUP4 JUMPDEST DUP2 DUP2 LT ISZERO PUSH2 0x4713 JUMPI DUP4 MLOAD PUSH1 0xFF AND DUP4 MSTORE PUSH1 0x20 SWAP4 DUP5 ADD SWAP4 SWAP1 SWAP3 ADD SWAP2 PUSH1 0x1 ADD PUSH2 0x46F2 JUMP JUMPDEST POP SWAP1 SWAP6 SWAP5 POP POP POP POP POP JUMP JUMPDEST DUP2 DUP2 SUB DUP2 DUP2 GT ISZERO PUSH2 0x862 JUMPI PUSH2 0x862 PUSH2 0x4635 JUMP JUMPDEST PUSH1 0xFF DUP3 DUP2 AND DUP3 DUP3 AND SUB SWAP1 DUP2 GT ISZERO PUSH2 0x862 JUMPI PUSH2 0x862 PUSH2 0x4635 JUMP JUMPDEST PUSH0 PUSH1 0xFF DUP3 AND PUSH1 0xFF DUP2 SUB PUSH2 0x475F JUMPI PUSH2 0x475F PUSH2 0x4635 JUMP JUMPDEST PUSH1 0x1 ADD SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x1 DUP2 JUMPDEST PUSH1 0x1 DUP5 GT ISZERO PUSH2 0x47A3 JUMPI DUP1 DUP6 DIV DUP2 GT ISZERO PUSH2 0x4787 JUMPI PUSH2 0x4787 PUSH2 0x4635 JUMP JUMPDEST PUSH1 0x1 DUP5 AND ISZERO PUSH2 0x4795 JUMPI SWAP1 DUP2 MUL SWAP1 JUMPDEST PUSH1 0x1 SWAP4 SWAP1 SWAP4 SHR SWAP3 DUP1 MUL PUSH2 0x476C JUMP JUMPDEST SWAP4 POP SWAP4 SWAP2 POP POP JUMP JUMPDEST PUSH0 DUP3 PUSH2 0x47B9 JUMPI POP PUSH1 0x1 PUSH2 0x862 JUMP JUMPDEST DUP2 PUSH2 0x47C5 JUMPI POP PUSH0 PUSH2 0x862 JUMP JUMPDEST DUP2 PUSH1 0x1 DUP2 EQ PUSH2 0x47DB JUMPI PUSH1 0x2 DUP2 EQ PUSH2 0x47E5 JUMPI PUSH2 0x4801 JUMP JUMPDEST PUSH1 0x1 SWAP2 POP POP PUSH2 0x862 JUMP JUMPDEST PUSH1 0xFF DUP5 GT ISZERO PUSH2 0x47F6 JUMPI PUSH2 0x47F6 PUSH2 0x4635 JUMP JUMPDEST POP POP PUSH1 0x1 DUP3 SHL PUSH2 0x862 JUMP JUMPDEST POP PUSH1 0x20 DUP4 LT PUSH2 0x133 DUP4 LT AND PUSH1 0x4E DUP5 LT PUSH1 0xB DUP5 LT AND OR ISZERO PUSH2 0x4824 JUMPI POP DUP2 DUP2 EXP PUSH2 0x862 JUMP JUMPDEST PUSH2 0x4830 PUSH0 NOT DUP5 DUP5 PUSH2 0x4768 JUMP JUMPDEST DUP1 PUSH0 NOT DIV DUP3 GT ISZERO PUSH2 0x4843 JUMPI PUSH2 0x4843 PUSH2 0x4635 JUMP JUMPDEST MUL SWAP4 SWAP3 POP POP POP JUMP JUMPDEST PUSH0 PUSH2 0x8A9 PUSH1 0xFF DUP5 AND DUP4 PUSH2 0x47AB JUMP JUMPDEST PUSH0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x4869 JUMPI PUSH0 PUSH0 REVERT JUMPDEST DUP2 MLOAD PUSH2 0x8A9 DUP2 PUSH2 0x3F32 JUMP JUMPDEST PUSH0 PUSH0 PUSH1 0x40 DUP4 DUP6 SUB SLT ISZERO PUSH2 0x4885 JUMPI PUSH0 PUSH0 REVERT JUMPDEST DUP3 MLOAD PUSH2 0x4890 DUP2 PUSH2 0x419A JUMP JUMPDEST PUSH1 0x20 DUP5 ADD MLOAD SWAP1 SWAP3 POP PUSH4 0xFFFFFFFF DUP2 AND DUP2 EQ PUSH2 0x418F JUMPI PUSH0 PUSH0 REVERT JUMPDEST PUSH1 0xFF DUP4 AND DUP2 MSTORE PUSH1 0x40 PUSH1 0x20 DUP3 ADD MSTORE PUSH0 PUSH2 0xC18 PUSH1 0x40 DUP4 ADD DUP5 PUSH2 0x3EDB JUMP JUMPDEST PUSH0 DUP3 MLOAD DUP1 PUSH1 0x20 DUP6 ADD DUP5 MCOPY PUSH0 SWAP3 ADD SWAP2 DUP3 MSTORE POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH4 0x4E487B71 PUSH1 0xE0 SHL PUSH0 MSTORE PUSH1 0x12 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH0 REVERT JUMPDEST PUSH4 0x4E487B71 PUSH1 0xE0 SHL PUSH0 MSTORE PUSH1 0x21 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH0 REVERT JUMPDEST PUSH0 PUSH1 0xFF DUP4 AND DUP1 PUSH2 0x4920 JUMPI PUSH4 0x4E487B71 PUSH1 0xE0 SHL PUSH0 MSTORE PUSH1 0x12 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH0 REVERT JUMPDEST DUP1 PUSH1 0xFF DUP5 AND MOD SWAP2 POP POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x1F DUP3 GT ISZERO PUSH2 0x210F JUMPI DUP1 PUSH0 MSTORE PUSH1 0x20 PUSH0 KECCAK256 PUSH1 0x1F DUP5 ADD PUSH1 0x5 SHR DUP2 ADD PUSH1 0x20 DUP6 LT ISZERO PUSH2 0x4954 JUMPI POP DUP1 JUMPDEST PUSH1 0x1F DUP5 ADD PUSH1 0x5 SHR DUP3 ADD SWAP2 POP JUMPDEST DUP2 DUP2 LT ISZERO PUSH2 0x2327 JUMPI PUSH0 DUP2 SSTORE PUSH1 0x1 ADD PUSH2 0x4960 JUMP JUMPDEST DUP2 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0x40 SHL SUB DUP2 GT ISZERO PUSH2 0x498C JUMPI PUSH2 0x498C PUSH2 0x3FC3 JUMP JUMPDEST PUSH2 0x49A0 DUP2 PUSH2 0x499A DUP5 SLOAD PUSH2 0x45FD JUMP JUMPDEST DUP5 PUSH2 0x492F JUMP JUMPDEST PUSH1 0x20 PUSH1 0x1F DUP3 GT PUSH1 0x1 DUP2 EQ PUSH2 0x49D2 JUMPI PUSH0 DUP4 ISZERO PUSH2 0x49BB JUMPI POP DUP5 DUP3 ADD MLOAD JUMPDEST PUSH0 NOT PUSH1 0x3 DUP6 SWAP1 SHL SHR NOT AND PUSH1 0x1 DUP5 SWAP1 SHL OR DUP5 SSTORE PUSH2 0x2327 JUMP JUMPDEST PUSH0 DUP5 DUP2 MSTORE PUSH1 0x20 DUP2 KECCAK256 PUSH1 0x1F NOT DUP6 AND SWAP2 JUMPDEST DUP3 DUP2 LT ISZERO PUSH2 0x4A01 JUMPI DUP8 DUP6 ADD MLOAD DUP3 SSTORE PUSH1 0x20 SWAP5 DUP6 ADD SWAP5 PUSH1 0x1 SWAP1 SWAP3 ADD SWAP2 ADD PUSH2 0x49E1 JUMP JUMPDEST POP DUP5 DUP3 LT ISZERO PUSH2 0x4A1E JUMPI DUP7 DUP5 ADD MLOAD PUSH0 NOT PUSH1 0x3 DUP8 SWAP1 SHL PUSH1 0xF8 AND SHR NOT AND DUP2 SSTORE JUMPDEST POP POP POP POP PUSH1 0x1 SWAP1 DUP2 SHL ADD SWAP1 SSTORE POP JUMP INVALID MSTORE 0xC6 ORIGIN SELFBALANCE RJUMPI 0xF47D 0xB1 SWAP14 TLOAD RJUMP 0x4600 ADDRESS 0xC4 SWAP8 CREATE PUSH8 0xCA4CEBF71BA98EEA 0xDA 0xBE KECCAK256 0xBA 0xCE STOP CALLDATASIZE ADDMOD SWAP5 LOG1 EXTCODESIZE LOG1 LOG3 0x21 MOD PUSH8 0xC828492DB98DCA3E KECCAK256 PUSH23 0xCC3735A920A3CA505D382BBCA2646970667358221220C7 SWAP5 0xB6 0xDD 0xBD 0x4C EXTSTATICCALL CODECOPY COINBASE INVALID RJUMP 0xD7F4 CALLVALUE PUSH26 0xCB8B47AC102F550F916026E193879F834464736F6C634300081E STOP CALLER ","sourceMap":"1470:5461:52:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;4363:109;;;;;;;;;;;;;:::i;:::-;;;160:25:87;;;148:2;133:18;4363:109:52;;;;;;;;2715:144:12;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;8750:148:13:-;;;;;;;;;;-1:-1:-1;8750:148:13;;;;;:::i;:::-;;:::i;5132:186:12:-;;;;;;;;;;-1:-1:-1;5132:186:12;;;;;:::i;:::-;;:::i;:::-;;;1619:14:87;;1612:22;1594:41;;1582:2;1567:18;5132:186:12;1454:187:87;9887:147:13;;;;;;;;;;-1:-1:-1;9887:147:13;;;;;:::i;:::-;;:::i;3868:152:12:-;;;;;;;;;;-1:-1:-1;3999:14:12;;3868:152;;5910:244;;;;;;;;;;-1:-1:-1;5910:244:12;;;;;:::i;:::-;;:::i;7963:221:13:-;;;;;;;;;;;;;:::i;:::-;;;2331:4:87;2319:17;;;2301:36;;2289:2;2274:18;7963:221:13;2159:184:87;8219:153:13;;;;;;;;;;;;;:::i;:::-;;;-1:-1:-1;;;;;2512:32:87;;;2494:51;;2482:2;2467:18;8219:153:13;2348:203:87;10498:404:54;;;;;;;;;;-1:-1:-1;10498:404:54;;;;;:::i;:::-;;:::i;3960:115:52:-;;;;;;;;;;-1:-1:-1;3960:115:52;;;;;:::i;:::-;;:::i;8550:99:54:-;;;;;;;;;;-1:-1:-1;8550:99:54;;;;;:::i;:::-;;:::i;:::-;;8843:386;;;;;;;;;;-1:-1:-1;8843:386:54;;;;;:::i;:::-;;:::i;3911:214:31:-;;;;;;:::i;:::-;;:::i;20278:110:54:-;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;3466:126:31:-;;;;;;;;;;;;;:::i;10250:392:13:-;;;;;;;;;;-1:-1:-1;10250:392:13;;;;;:::i;:::-;;:::i;4053:171:12:-;;;;;;;;;;-1:-1:-1;4053:171:12;;;;;:::i;:::-;;:::i;1743:41:54:-;;;;;;;;;;;;1782:2;1743:41;;11762:650;;;;;;;;;;-1:-1:-1;11762:650:54;;;;;:::i;:::-;;:::i;12701:662::-;;;;;;;;;;-1:-1:-1;12701:662:54;;;;;:::i;:::-;;:::i;5651:346:52:-;;;;;;;;;;-1:-1:-1;5651:346:52;;;;;:::i;:::-;;:::i;:::-;;;-1:-1:-1;;;;;;8107:33:87;;;8089:52;;8077:2;8062:18;5651:346:52;7945:202:87;16272:733:54;;;;;;;;;;-1:-1:-1;16272:733:54;;;;;:::i;:::-;;:::i;10677:380:13:-;;;;;;;;;;-1:-1:-1;10677:380:13;;;;;:::i;:::-;;:::i;2972:148:12:-;;;;;;;;;;;;;:::i;13739:2217:54:-;;;;;;;;;;-1:-1:-1;13739:2217:54;;;;;:::i;:::-;;:::i;2229:392:52:-;;;;;;;;;;-1:-1:-1;2229:392:52;;;;;:::i;:::-;;:::i;4419:178:12:-;;;;;;;;;;-1:-1:-1;4419:178:12;;;;;:::i;:::-;;:::i;1732:58:31:-;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;1732:58:31;;;;;9709:143:13;;;;;;;;;;-1:-1:-1;9709:143:13;;;;;:::i;:::-;;:::i;11092:413::-;;;;;;;;;;-1:-1:-1;11092:413:13;;;;;:::i;:::-;;:::i;11540:405::-;;;;;;;;;;-1:-1:-1;11540:405:13;;;;;:::i;:::-;;:::i;17329:744:54:-;;;;;;;;;;-1:-1:-1;17329:744:54;;;;;:::i;:::-;;:::i;4106:226:52:-;;;;;;;;;;-1:-1:-1;4106:226:52;;;;;:::i;:::-;;:::i;8567:148:13:-;;;;;;;;;;-1:-1:-1;8567:148:13;;;;;:::i;:::-;;:::i;3358:182:52:-;;;;;;;;;;-1:-1:-1;3358:182:52;;;;;:::i;:::-;;:::i;3571:358::-;;;;;;;;;;-1:-1:-1;3571:358:52;;;;;:::i;:::-;;:::i;19723:114:54:-;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;4630:195:12:-;;;;;;;;;;-1:-1:-1;4630:195:12;;;;;:::i;:::-;;:::i;18544:1009:54:-;;;;;;;;;;-1:-1:-1;18544:1009:54;;;;;:::i;:::-;;:::i;20003:108::-;;;;;;;;;;;;;:::i;4363:109:52:-;4424:14;4453;:12;:14::i;:::-;4446:21;;4363:109;:::o;2715:144:12:-;2845:7;2838:14;;2760:13;;-1:-1:-1;;;;;;;;;;;2082:20:12;2838:14;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2715:144;:::o;8750:148:13:-;8820:7;8846:45;8863:6;8871:19;8846:16;:45::i;:::-;8839:52;8750:148;-1:-1:-1;;8750:148:13:o;5132:186:12:-;5205:4;987:10:14;5259:31:12;987:10:14;5275:7:12;5284:5;5259:8;:31::i;:::-;-1:-1:-1;5307:4:12;;5132:186;-1:-1:-1;;;5132:186:12:o;9887:147:13:-;9957:7;9983:44;10000:6;10008:18;9983:16;:44::i;5910:244:12:-;5997:4;987:10:14;6053:37:12;6069:4;987:10:14;6084:5:12;6053:15;:37::i;:::-;6100:26;6110:4;6116:2;6120:5;6100:9;:26::i;:::-;6143:4;6136:11;;;5910:244;;;;;;:::o;7963:221:13:-;8055:5;;5498:22;8072:47;-1:-1:-1;14580:5:13;8136:21;;:41;;;-1:-1:-1;;;8136:21:13;;;;:41;:::i;:::-;8129:48;;;7963:221;:::o;8219:153::-;5498:22;8356:8;-1:-1:-1;;;;;8356:8:13;;8219:153::o;10498:404:54:-;10626:12;10646:57;10670:13;10685:6;10693:9;10646:23;:57::i;:::-;10709:24;10736:11;10748:13;10736:26;;;;;;;;;:::i;:::-;;;-1:-1:-1;;;;;10736:26:54;;-1:-1:-1;10736:26:54;10768:61;;10812:17;;-1:-1:-1;;;10812:17:54;;;;;;;;;;;10768:61;10842:55;10879:6;10887:9;10842:11;10854:13;10842:26;;;;;;;;;:::i;:::-;;;-1:-1:-1;;;;;10842:26:54;;:55;:36;:55::i;:::-;10835:62;10498:404;-1:-1:-1;;;;;10498:404:54:o;3960:115:52:-;4027:11;4053:17;:15;:17::i;8550:99:54:-;8616:28;8637:6;8616:20;:28::i;:::-;8550:99;:::o;8843:386::-;8911:12;8936:9;8931:253;8989:1;8947:11;8959:1;8947:14;;;;;;;:::i;:::-;;;-1:-1:-1;;;;;8947:14:54;:45;;;;:67;;-1:-1:-1;1782:2:54;8996:18;;8947:67;8931:253;;;9041:11;9053:1;9041:14;;;;;;;:::i;:::-;;;;;;;;;;-1:-1:-1;;;;;9041:14:54;-1:-1:-1;;;;;9041:26:54;;:28;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;9033:4;:36;9029:149;;9155:14;;9140:4;;;;9155:14;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;8843:386;;;:::o;9029:149::-;9016:3;;;:::i;:::-;;;8931:253;;;;9196:28;;-1:-1:-1;;;9196:28:54;;;;;;;;;;;3911:214:31;2568:13;:11;:13::i;:::-;4072:46:::1;4094:17;4113:4;4072:21;:46::i;:::-;3911:214:::0;;:::o;20278:110:54:-;20326:28;;:::i;:::-;20362:21;;;;;;;;;;;20369:14;;20362:21;;20369:14;-1:-1:-1;20362:21:54;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;20278:110;:::o;3466:126:31:-;3527:7;2839:20;:18;:20::i;:::-;-1:-1:-1;;;;;;;;;;;;3466:126:31;:::o;10250:392:13:-;10325:7;10344:17;10364:20;10375:8;10364:10;:20::i;:::-;10344:40;;10407:9;10398:6;:18;10394:110;;;10465:8;10475:6;10483:9;10439:54;;-1:-1:-1;;;10439:54:13;;;;;;;;;;:::i;:::-;;;;;;;;10394:110;10514:14;10531:22;10546:6;10531:14;:22::i;:::-;10514:39;-1:-1:-1;10563:48:13;987:10:14;10586:8:13;10596:6;10604;10563:8;:48::i;:::-;10629:6;10250:392;-1:-1:-1;;;;10250:392:13:o;4053:171:12:-;-1:-1:-1;;;;;4197:20:12;4118:7;4197:20;;;-1:-1:-1;;;;;;;;;;;4197:20:12;;;;;;;4053:171::o;11762:650:54:-;11921:24;11948:11;11960:13;11948:26;;;;;;;;;:::i;:::-;;;-1:-1:-1;;;;;11948:26:54;;-1:-1:-1;11948:26:54;11980:61;;12024:17;;-1:-1:-1;;;12024:17:54;;;;;;;;;;;11980:61;12052:9;12047:200;1782:2;12063:18;;:67;;;;-1:-1:-1;12127:1:54;12085:11;12097:1;12085:14;;;;;;;:::i;:::-;;;-1:-1:-1;;;;;12085:14:54;:45;;12063:67;12047:200;;;12167:11;-1:-1:-1;;;;;12149:29:54;:11;12161:1;12149:14;;;;;;;:::i;:::-;;;-1:-1:-1;;;;;12149:14:54;:29;:51;;;;;12187:13;12182:18;;:1;:18;;12149:51;12145:95;;;12209:31;;-1:-1:-1;;;12209:31:54;;-1:-1:-1;;;;;2512:32:87;;12209:31:54;;;2494:51:87;2467:18;;12209:31:54;2348:203:87;12145:95:54;12132:3;;;:::i;:::-;;;12047:200;;;;12252:109;12288:8;12298:11;12311:16;12344:8;:6;:8::i;:::-;12355:5;12252:35;:109::i;:::-;12396:11;12367;12379:13;12367:26;;;;;;;;;:::i;:::-;;:40;;-1:-1:-1;;;;;;12367:40:54;-1:-1:-1;;;;;12367:40:54;;;;;;;;;;-1:-1:-1;;;;;11762:650:54:o;12701:662::-;-1:-1:-1;;;;;12807:34:54;;12803:64;;12850:17;;-1:-1:-1;;;12850:17:54;;;;;;;;;;;12803:64;12873:9;12888:169;1782:2;12895:18;;:67;;;;-1:-1:-1;12959:1:54;12917:11;12929:1;12917:14;;;;;;;:::i;:::-;;;-1:-1:-1;;;;;12917:14:54;:45;;12895:67;12888:169;;;12999:11;-1:-1:-1;;;;;12981:29:54;:11;12993:1;12981:14;;;;;;;:::i;:::-;;;-1:-1:-1;;;;;12981:14:54;:29;12977:73;;13019:31;;-1:-1:-1;;;13019:31:54;;-1:-1:-1;;;;;2512:32:87;;13019:31:54;;;2494:51:87;2467:18;;13019:31:54;2348:203:87;12977:73:54;12964:3;;;:::i;:::-;;;12888:169;;;-1:-1:-1;;13066:19:54;;13062:57;;13094:25;;-1:-1:-1;;;;;;13094:25:54;;;;;;;;;;;13062:57;13142:11;13125;13137:1;13125:14;;;;;;;:::i;:::-;;:28;;-1:-1:-1;;;;;;13125:28:54;-1:-1:-1;;;;;13125:28:54;;;;;;;;;;13184:5;:1;-1:-1:-1;13184:5:54;:::i;:::-;13159:13;13173:1;13159:16;;;;;;;:::i;:::-;;;;;;;;;;:31;;;;;;;;;;;;;;;;;;13222:1;13226;13222:5;;;;:::i;:::-;13196:14;13211:1;13196:17;;;;;;;:::i;:::-;;;;;;;;;;:32;;;;;;;;;;;;;;;;;;13234;13257:8;:6;:8::i;:::-;-1:-1:-1;;;;;13234:22:54;;;;:32::i;:::-;13272:39;-1:-1:-1;;;;;13272:21:54;;13294:16;13272:21;:39::i;:::-;13322:36;;2331:4:87;2319:17;;2301:36;;-1:-1:-1;;;;;13322:36:54;;;;;2289:2:87;2274:18;13322:36:54;;;;;;;12797:566;12701:662;;:::o;5651:346:52:-;5745:15;5874:16;5901:11;5913:13;5901:26;;;;;;;;;:::i;:::-;;;5963:28;;;-1:-1:-1;;;;;5901:26:52;;;5963:28;;;16889:51:87;;;16988:4;16976:17;;16956:18;;;16949:45;;;;5901:26:52;-1:-1:-1;5941:51:52;;16862:18:87;;5963:28:52;;;;;;;;;;;;3409:20:0;;;;;;;;3312:123;16272:733:54;16354:32;;:::i;:::-;16415:23;;16392:9;;1782:2;-1:-1:-1;16411:67:54;;;16464:14;;-1:-1:-1;;;16464:14:54;;;;;;;;;;;16411:67;16495:16;:23;16491:1;:27;16484:371;;;1782:2;16537:37;;:16;16554:1;16537:19;;;;;;;;:::i;:::-;;;;;;;:37;;;;:96;;;;16631:1;-1:-1:-1;;;;;16578:55:54;16586:11;16598:16;16615:1;16598:19;;;;;;;;:::i;:::-;;;;;;;16586:32;;;;;;;;;:::i;:::-;;;-1:-1:-1;;;;;16586:32:54;16578:55;16537:96;16533:131;;;16650:14;;-1:-1:-1;;;16650:14:54;;;;;;;;;;;16533:131;16676:4;16681:16;16698:1;16681:19;;;;;;;;:::i;:::-;;;;;;;16676:25;;;;;;;;;:::i;:::-;;;;;16672:86;;;16738:16;16755:1;16738:19;;;;;;;;:::i;:::-;;;;;;;16710:48;;-1:-1:-1;;;16710:48:54;;;;;;;2331:4:87;2319:17;;;;2301:36;;2289:2;2274:18;;2159:184;16672:86:54;16794:4;16766;16771:16;16788:1;16771:19;;;;;;;;:::i;:::-;;;;;;;16766:25;;;;;;;;;:::i;:::-;:32;;;:25;;;;;:32;16825:19;;;;16842:1;;16825:19;;;;;;:::i;:::-;;;;;;;16847:1;16825:23;;;;:::i;:::-;16806:13;16820:1;16806:16;;;;;;;:::i;:::-;;;;;;;;;;:42;;;;;;;;;;;;;;;;;;16520:3;;;;;16484:371;;;1782:2;16864:18;;:59;;;;-1:-1:-1;16921:1:54;16894:11;16906:1;16894:14;;;;;;;:::i;:::-;;;-1:-1:-1;;;;;16894:14:54;16886:37;;16864:59;16860:92;;;16932:20;;-1:-1:-1;;;16932:20:54;;;;;;;;;;;16860:92;16963:37;16983:16;16963:37;;;;;;:::i;:::-;;;;;;;;16348:657;;16272:733;:::o;10677:380:13:-;10749:7;10768:17;10788;10796:8;10788:7;:17::i;:::-;10768:37;;10828:9;10819:6;:18;10815:107;;;10883:8;10893:6;10901:9;10860:51;;-1:-1:-1;;;10860:51:13;;;;;;;;;;:::i;10815:107::-;10932:14;10949:19;10961:6;10949:11;:19::i;:::-;10932:36;-1:-1:-1;10978:48:13;987:10:14;11001:8:13;11011:6;11019;10978:8;:48::i;2972:148:12:-;3104:9;3097:16;;3019:13;;-1:-1:-1;;;;;;;;;;;2082:20:12;3097:16;;;:::i;13739:2217:54:-;1782:2;13821:31;;;;13817:61;;13861:17;;-1:-1:-1;;;13861:17:54;;;;;;;;;;;13817:61;13884:24;13911:11;13923:13;13911:26;;;;;;;;;:::i;:::-;;;-1:-1:-1;;;;;13911:26:54;;-1:-1:-1;13911:26:54;13943:61;;13987:17;;-1:-1:-1;;;13987:17:54;;;;;;;;;;;13943:61;14015:5;14014:6;:37;;;;;14024:22;:8;-1:-1:-1;;;;;14024:20:54;;:22::i;:::-;:27;;14014:37;14010:82;;;14060:32;;-1:-1:-1;;;14060:32:54;;;;;;;;;;;14010:82;14143:18;;;;:59;;;;-1:-1:-1;14173:14:54;;-1:-1:-1;;;;;14173:14:54;14165:37;14143:59;14139:97;;;14211:25;;-1:-1:-1;;;;;;14211:25:54;;;;;;;;;;;14139:97;14293:9;14305:17;:13;14321:1;14305:17;:::i;:::-;14293:29;;;;14328:131;1782:2;14335:18;;:67;;;;-1:-1:-1;14399:1:54;14357:11;14369:1;14357:14;;;;;;;:::i;:::-;;;-1:-1:-1;;;;;14357:14:54;:45;;14335:67;14328:131;;;14438:11;14450:1;14438:14;;;;;;;:::i;:::-;;;-1:-1:-1;;;;;14438:14:54;14417:11;14429:5;14438:14;14429:1;:5;:::i;:::-;14417:18;;;;;;;:::i;:::-;;:35;;-1:-1:-1;;;;;;14417:35:54;-1:-1:-1;;;;;14417:35:54;;;;;;;;;;14404:3;;;:::i;:::-;;;14328:131;;;14509:1;14464:11;14476:5;14480:1;14476;:5;:::i;:::-;14464:18;;;;;;;:::i;:::-;;:48;;-1:-1:-1;;;;;;14464:48:54;-1:-1:-1;;;;;14464:48:54;;;;;;;;;;-1:-1:-1;;;;14615:1191:54;14627:14;14642:1;14627:17;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;:22;;;;:44;;-1:-1:-1;1782:2:54;14653:18;;14627:44;14615:1191;;;14690:13;14686:544;;;14858:17;:13;14874:1;14858:17;:::i;:::-;14837:39;;:14;14852:1;14837:17;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;:39;14836:49;;14884:1;14836:49;;;14880:1;14836:49;14815:14;14830:1;14815:17;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;:71;;;;:::i;:::-;14791:14;14806:5;14791:14;14806:1;:5;:::i;:::-;14791:21;;;;;;;:::i;:::-;;;;;;;;;;:95;;;;;;;;;;;;;;;;;;14686:544;;;14937:17;:13;14953:1;14937:17;:::i;:::-;14915:40;;:14;14930:1;14915:17;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;:40;14911:311;;-1:-1:-1;15063:4:54;14911:311;;;15109:17;:13;15125:1;15109:17;:::i;:::-;15088:39;;:14;15103:1;15088:17;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;:39;15084:138;;;15210:1;15189:14;15204:1;15189:17;;;;;;;:::i;:::-;;;;;;;;;;:22;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;15084:138;15268:12;15264:536;;;15432:17;:13;15448:1;15432:17;:::i;:::-;15412:38;;:13;15426:1;15412:16;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;:38;15411:48;;15458:1;15411:48;;;15454:1;15411:48;15391:13;15405:1;15391:16;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;:69;;;;:::i;:::-;15368:13;15382:5;15386:1;15382;:5;:::i;:::-;15368:20;;;;;;;:::i;:::-;;;;;;;;;;:92;;;;;;;;;;;;;;;;;;15264:536;;;15510:17;:13;15526:1;15510:17;:::i;:::-;15489:39;;:13;15503:1;15489:16;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;:39;15485:307;;15635:4;15620:19;;15485:307;;;15680:17;:13;15696:1;15680:17;:::i;:::-;15660:38;;:13;15674:1;15660:16;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;:38;15656:136;;;15780:1;15760:13;15774:1;15760:16;;;;;;;:::i;:::-;;;;;;;;;;:21;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;15656:136;14673:3;;;:::i;:::-;;;14615:1191;;;15834:1;;15825:5;15829:1;15825;:5;:::i;:::-;15811:20;;;;;;;:::i;:::-;;;;;;;;;;:24;;;;;;;;;;;;;;;;;;15865:1;15841:14;15860:1;15856;:5;;;;:::i;:::-;15841:21;;;;;;;:::i;:::-;;;;;;;;;;:25;;;;;;;;;;;;;;;;;;15872:28;15894:5;15872:8;-1:-1:-1;;;;;15872:21:54;;;:28;;;;:::i;:::-;15911:40;;2331:4:87;2319:17;;2301:36;;-1:-1:-1;;;;;15911:40:54;;;;;2289:2:87;2274:18;15911:40:54;;;;;;;13811:2145;;;;13739:2217;;:::o;2229:392:52:-;4158:30:30;4191:26;:24;:26::i;:::-;4302:15;;4158:59;;-1:-1:-1;4302:15:30;-1:-1:-1;;;4302:15:30;;;4301:16;;-1:-1:-1;;;;;4348:14:30;4279:19;4724:16;;:34;;;;;4744:14;4724:34;4704:54;;4768:17;4788:11;-1:-1:-1;;;;;4788:16:30;4803:1;4788:16;:50;;;;-1:-1:-1;4816:4:30;4808:25;:30;4788:50;4768:70;;4854:12;4853:13;:30;;;;;4871:12;4870:13;4853:30;4849:91;;;4906:23;;-1:-1:-1;;;4906:23:30;;;;;;;;;;;4849:91;4949:18;;-1:-1:-1;;4949:18:30;4966:1;4949:18;;;4977:67;;;;5011:22;;-1:-1:-1;;;;5011:22:30;-1:-1:-1;;;5011:22:30;;;4977:67;2506:110:52::1;2530:5;2537:7;2546:6;2554:11;2567:17;2586:13;2601:14;2506:23;:110::i;:::-;5068:14:30::0;5064:101;;;5098:23;;-1:-1:-1;;;;5098:23:30;;;5140:14;;-1:-1:-1;18070:50:87;;5140:14:30;;18058:2:87;18043:18;5140:14:30;;;;;;;5064:101;4092:1079;;;;;2229:392:52;;;;;;;:::o;4419:178:12:-;4488:4;987:10:14;4542:27:12;987:10:14;4559:2:12;4563:5;4542:9;:27::i;9709:143:13:-;9775:7;9801:44;9818:6;9826:18;9801:16;:44::i;11092:413::-;11183:7;11202:17;11222:18;11234:5;11222:11;:18::i;:::-;11202:38;;11263:9;11254:6;:18;11250:108;;;11322:5;11329:6;11337:9;11295:52;;-1:-1:-1;;;11295:52:13;;;;;;;;;;:::i;11250:108::-;11368:14;11385:23;11401:6;11385:15;:23::i;:::-;11368:40;-1:-1:-1;11418:56:13;987:10:14;11442:8:13;11452:5;11459:6;11467;11418:9;:56::i;11540:405::-;11629:7;11648:17;11668:16;11678:5;11668:9;:16::i;:::-;11648:36;;11707:9;11698:6;:18;11694:106;;;11764:5;11771:6;11779:9;11739:50;;-1:-1:-1;;;11739:50:13;;;;;;;;;;:::i;11694:106::-;11810:14;11827:21;11841:6;11827:13;:21::i;:::-;11810:38;-1:-1:-1;11858:56:13;987:10:14;11882:8:13;11892:5;11899:6;11907;11858:9;:56::i;17329:744:54:-;17413:32;;:::i;:::-;17472:24;;17451:7;;1782:2;-1:-1:-1;17468:68:54;;;17522:14;;-1:-1:-1;;;17522:14:54;;;;;;;;;;;17468:68;17553:17;:24;17549:1;:28;;;17542:379;;;1782:2;17596:38;;:17;17614:1;17596:20;;;;;;;;;;:::i;:::-;;;;;;;:38;;;;:98;;;;17692:1;-1:-1:-1;;;;;17638:56:54;17646:11;17658:17;17676:1;17658:20;;;;;;;;;;:::i;:::-;;;;;;;17646:33;;;;;;;;;:::i;:::-;;;-1:-1:-1;;;;;17646:33:54;17638:56;17596:98;17592:133;;;17711:14;;-1:-1:-1;;;17711:14:54;;;;;;;;;;;17592:133;17737:4;17742:17;17760:1;17742:20;;;;;;;;;;:::i;:::-;;;;;;;17737:26;;;;;;;;;:::i;:::-;;;;;17733:88;;;17800:17;17818:1;17800:20;;;;;;;;;;:::i;17733:88::-;17858:4;17829;17834:17;17852:1;17834:20;;;;;;;;;;:::i;:::-;;;;;;;17829:26;;;;;;;;;:::i;:::-;:33;;;:26;;;;;:33;17890:20;;;;;;;;;;;;;;:::i;:::-;;;;;;;17913:1;17890:24;;;;:::i;:::-;17870:14;17885:1;17870:17;;;;;;;;;:::i;:::-;;;;;;;;;;:44;;;;;;;;;;;;;;;;;;17579:3;;;;:::i;:::-;;;17542:379;;;1782:2;17930:18;;;;:59;;;;-1:-1:-1;17987:1:54;17960:11;:14;;;;;;;;;;:::i;:::-;;;-1:-1:-1;;;;;17960:14:54;17952:37;;17930:59;17926:92;;;17998:20;;-1:-1:-1;;;17998:20:54;;;;;;;;;;;17926:92;18029:39;18050:17;18029:39;;;;;;:::i;4106:226:52:-;4170:7;4185:14;4202:17;:15;:17::i;:::-;4185:34;;-1:-1:-1;;4232:6:52;:27;:95;;4282:45;4299:6;4307:19;4282:16;:45::i;:::-;4232:95;;;-1:-1:-1;;4225:102:52;4106:226;-1:-1:-1;;;4106:226:52:o;8567:148:13:-;8637:7;8663:45;8680:6;8688:19;8663:16;:45::i;3358:182:52:-;3432:7;3447:19;3469:24;3487:5;3469:17;:24::i;:::-;3447:46;;3506:29;3523:11;3506:16;:29::i;3571:358::-;3643:7;3658:14;3675:22;3691:5;3675:15;:22::i;:::-;3658:39;;3703:19;3725:45;3742:6;3750:19;3725:16;:45::i;:::-;3703:67;;3776:17;3796:29;3813:11;3796:16;:29::i;:::-;3776:49;;3852:11;3839:9;:24;3838:86;;3876:48;3893:9;3904:19;3876:16;:48::i;:::-;3838:86;;;-1:-1:-1;3867:6:52;;3831:93;-1:-1:-1;;;3571:358:52:o;19723:114:54:-;19768:38;;:::i;:::-;19814:18;;;;;;;;;;;19821:11;;19814:18;;19821:11;19814:18;;;;-1:-1:-1;;;;;19814:18:54;;;;;;;;;;;;;;;;;;;;;;19723:114;:::o;4630:195:12:-;-1:-1:-1;;;;;4789:20:12;;;4710:7;4789:20;;;:13;:20;;;;;;;;:29;;;;;;;;;;;;;4630:195::o;18544:1009:54:-;18647:7;1782:2;18666:33;;;;;;:68;;-1:-1:-1;1782:2:54;18703:31;;;;;18666:68;18662:98;;;18743:17;;-1:-1:-1;;;18743:17:54;;;;;;;;;;;18662:98;18766:28;18797:11;18809:15;18797:28;;;;;;;;;:::i;:::-;;;-1:-1:-1;;;;;18797:28:54;;-1:-1:-1;18797:28:54;18860:11;:26;;;;;;;;;;:::i;:::-;;;-1:-1:-1;;;;;18860:26:54;;;;-1:-1:-1;18896:35:54;;;;:72;;-1:-1:-1;;;;;;18935:33:54;;;18896:72;18892:102;;;18977:17;;-1:-1:-1;;;18977:17:54;;;;;;;;;;;18892:102;-1:-1:-1;;19004:6:54;:27;19000:68;;19042:26;:12;-1:-1:-1;;;;;19042:24:54;;:26::i;:::-;19033:35;;19000:68;19078:6;19088:1;19078:11;19074:25;;19098:1;19091:8;;;;;;19074:25;19186:26;:12;-1:-1:-1;;;;;19186:24:54;;:26::i;:::-;19177:6;:35;19173:109;;;19255:26;:12;-1:-1:-1;;;;;19255:24:54;;:26::i;:::-;19221:61;;-1:-1:-1;;;19221:61:54;;;;;;160:25:87;;148:2;133:18;;14:177;19173:109:54;19301:23;:10;-1:-1:-1;;;;;19301:21:54;;:23::i;:::-;19292:6;:32;19288:102;;;19366:23;:10;-1:-1:-1;;;;;19366:21:54;;:23::i;:::-;19333:57;;-1:-1:-1;;;19333:57:54;;;;;;160:25:87;;148:2;133:18;;14:177;19288:102:54;19396:38;-1:-1:-1;;;;;19396:23:54;;19420:6;19428:5;19396:23;:38::i;:::-;-1:-1:-1;19440:35:54;-1:-1:-1;;;;;19440:20:54;;19461:6;19469:5;19440:20;:35::i;:::-;;19510:10;-1:-1:-1;;;;;19486:43:54;19496:12;-1:-1:-1;;;;;19486:43:54;;19522:6;19486:43;;;;160:25:87;;148:2;133:18;;14:177;19486:43:54;;;;;;;;-1:-1:-1;19542:6:54;;18544:1009;-1:-1:-1;;;;18544:1009:54:o;20003:108::-;20050:28;;:::i;:::-;20086:20;;;;;;;;;;-1:-1:-1;20086:20:54;;;;;;;;;;-1:-1:-1;20086:20:54;;;;;;;;;;;;;;;;;;20003:108;:::o;6108:208::-;6155:14;6182:9;6177:135;6228:1;6201:11;6213:1;6201:14;;;;;;;:::i;:::-;;;-1:-1:-1;;;;;6201:14:54;6193:37;;;;:59;;-1:-1:-1;1782:2:54;6234:18;;6193:59;6177:135;;;6277:28;:11;6289:1;6277:14;;;;;;;:::i;:::-;;;-1:-1:-1;;;;;6277:14:54;:26;:28::i;:::-;6267:38;;;;:::i;:::-;;-1:-1:-1;6254:3:54;;;:::i;:::-;;;6177:135;;;;6108:208;:::o;12406:213:13:-;12503:7;12529:83;12543:13;:11;:13::i;:::-;:17;;12559:1;12543:17;:::i;:::-;12578:23;14580:5;12578:2;:23;:::i;:::-;3999:14:12;;12562:39:13;;;;:::i;:::-;12529:6;;:83;12603:8;12529:13;:83::i;9923:128:12:-;10007:37;10016:5;10023:7;10032:5;10039:4;10007:8;:37::i;:::-;9923:128;;;:::o;12069:213:13:-;12166:7;12192:83;12222:23;12166:7;12222:2;:23;:::i;:::-;3999:14:12;;12206:39:13;;;;:::i;:::-;12247:13;:11;:13::i;:::-;:17;;12263:1;12247:17;:::i;11669:476:12:-;11768:24;11795:25;11805:5;11812:7;11795:9;:25::i;:::-;11768:52;;-1:-1:-1;;11834:16:12;:36;11830:309;;;11909:5;11890:16;:24;11886:130;;;11968:7;11977:16;11995:5;11941:60;;-1:-1:-1;;;11941:60:12;;;;;;;;;;:::i;11886:130::-;12057:57;12066:5;12073:7;12101:5;12082:16;:24;12108:5;12057:8;:57::i;:::-;11758:387;11669:476;;;:::o;6527:300::-;-1:-1:-1;;;;;6610:18:12;;6606:86;;6651:30;;-1:-1:-1;;;6651:30:12;;6678:1;6651:30;;;2494:51:87;2467:18;;6651:30:12;2348:203:87;6606:86:12;-1:-1:-1;;;;;6705:16:12;;6701:86;;6744:32;;-1:-1:-1;;;6744:32:12;;6773:1;6744:32;;;2494:51:87;2467:18;;6744:32:12;2348:203:87;6701:86:12;6796:24;6804:4;6810:2;6814:5;6796:7;:24::i;6027:902:52:-;6380:20;6438:4;-1:-1:-1;;;;;6403:57:52;;:59;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;6380:82;;6469:14;6489:5;-1:-1:-1;;;;;6489:13:52;;6503:10;6523:4;6530:51;6559:13;6574:6;6530:28;:51::i;:::-;6489:93;;;;;;-1:-1:-1;;;;;;6489:93:52;;;;;-1:-1:-1;;;;;20240:32:87;;;6489:93:52;;;20222:51:87;20309:32;;;;20289:18;;;20282:60;20378:33;20358:18;;;20351:61;20195:18;;6489:93:52;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;6468:114;;;6860:9;6855:69;;6878:46;;-1:-1:-1;;;6878:46:52;;6913:10;6878:46;;;2494:51:87;2467:18;;6878:46:52;2348:203:87;6855:69:52;6132:797;;6027:902;;;:::o;4743:249:53:-;4844:12;4877:110;4967:6;4975:9;4916:70;;;;;;;;;:::i;:::-;;;;-1:-1:-1;;4916:70:53;;;;;;;;;;;;;;-1:-1:-1;;;;;4916:70:53;-1:-1:-1;;;4916:70:53;;;-1:-1:-1;;;;;4877:38:53;;;;:110::i;5678:321:54:-;5728:11;5747:15;5773:9;5768:211;5819:1;5792:11;5804:1;5792:14;;;;;;;:::i;:::-;;;-1:-1:-1;;;;;5792:14:54;5784:37;;;;:59;;-1:-1:-1;1782:2:54;5825:18;;5784:59;5768:211;;;5878:45;5890:3;5895:27;:11;5907:1;5895:14;;;;;;;:::i;:::-;;;-1:-1:-1;;;;;5895:14:54;:25;:27::i;:::-;1830:5:47;;1859:6;;;;;1888:28;;;;1693:240;5878:45:54;5858:65;-1:-1:-1;5858:65:54;-1:-1:-1;5858:65:54;5931:41;;-1:-1:-1;;5948:24:54;;;;5678:321;:::o;5931:41::-;5845:3;;;:::i;:::-;;;5768:211;;;;5984:10;5678:321;:::o;7474:595::-;7619:6;7604:12;7631:324;7647:9;;;;;:34;;;7660:13;7674:1;7660:16;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;:21;;7647:34;:56;;;;-1:-1:-1;1782:2:54;7685:18;;7647:56;7631:324;;;7718:24;7745:11;7776:1;7757:13;7771:1;7757:16;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;:20;;;;:::i;:::-;7745:33;;;;;;;;;:::i;:::-;;;-1:-1:-1;;;;;7745:33:54;;-1:-1:-1;7745:33:54;7806:37;7815:4;7821:21;7745:33;7821:19;:21::i;:::-;7806:8;:37::i;:::-;7786:57;;7855:9;7868:1;7855:14;7851:28;;7871:8;;;;7851:28;7887:36;-1:-1:-1;;;;;7887:18:54;;7906:9;7917:5;7887:18;:36::i;:::-;-1:-1:-1;7931:17:54;7939:9;7931:17;;:::i;:::-;;;7710:245;;7631:324;7705:3;;;:::i;:::-;;;7631:324;;;-1:-1:-1;7964:9:54;;7960:36;;7982:14;;-1:-1:-1;;;7982:14:54;;;;;;;;;;;4328:312:31;4408:4;-1:-1:-1;;;;;4417:6:31;4400:23;;;:120;;;4514:6;-1:-1:-1;;;;;4478:42:31;:32;-1:-1:-1;;;;;;;;;;;1519:53:27;-1:-1:-1;;;;;1519:53:27;;1441:138;4478:32:31;-1:-1:-1;;;;;4478:42:31;;;4400:120;4383:251;;;4594:29;;-1:-1:-1;;;4594:29:31;;;;;;;;;;;4383:251;4328:312::o;5782:538::-;5899:17;-1:-1:-1;;;;;5881:50:31;;:52;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;5881:52:31;;;;;;;;-1:-1:-1;;5881:52:31;;;;;;;;;;;;:::i;:::-;;;5877:437;;6243:60;;-1:-1:-1;;;6243:60:31;;-1:-1:-1;;;;;2512:32:87;;6243:60:31;;;2494:51:87;2467:18;;6243:60:31;2348:203:87;5877:437:31;-1:-1:-1;;;;;;;;;;;5975:40:31;;5971:120;;6042:34;;-1:-1:-1;;;6042:34:31;;;;;160:25:87;;;133:18;;6042:34:31;14:177:87;5971:120:31;6104:54;6134:17;6153:4;6104:29;:54::i;4757:213::-;4831:4;-1:-1:-1;;;;;4840:6:31;4823:23;;4819:145;;4924:29;;-1:-1:-1;;;4924:29:31;;;;;;;;;;;4808:316:52;4995:48;5010:6;5018:8;5028:6;5036;4995:14;:48::i;:::-;5091:28;5112:6;5091:20;:28::i;3243:84::-;3293:7;3315;:5;:7::i;5914:843:53:-;6103:39;6114:11;6135:5;6103:10;:39::i;:::-;6312:38;;-1:-1:-1;;;6312:38:53;;6344:4;6312:38;;;2494:51:87;6288:70:53;;6299:11;;-1:-1:-1;;;;;6312:23:53;;;;;2467:18:87;;6312:38:53;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;6352:5;6288:10;:70::i;:::-;;6364:32;6377:11;6390:5;6364:12;:32::i;:::-;6516:43;6526:11;6539:19;6516:9;:43::i;:::-;6662:30;;-1:-1:-1;;;6662:30:53;;6686:4;6662:30;;;2494:51:87;6639:61:53;;6649:11;;-1:-1:-1;;;;;6662:15:53;;;;;2467:18:87;;6662:30:53;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;6694:5;6639:9;:61::i;:::-;-1:-1:-1;6711:41:53;;;-1:-1:-1;;;;;21570:32:87;;;21552:51;;21639:32;;21634:2;21619:18;;21612:60;6711:41:53;;21525:18:87;6711:41:53;;;;;;;5914:843;;;;;:::o;5181:159::-;5266:29;;-1:-1:-1;;;5266:29:53;;5289:4;5266:29;;;2494:51:87;-1:-1:-1;;;;;5266:38:53;;;;:14;;;;;;2467:18:87;;5266:29:53;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;-1:-1:-1;;;;;5266:38:53;;5262:73;;5313:22;;-1:-1:-1;;;5313:22:53;;;;;;;;;;;1120:193;1211:97;1290:16;1250:57;;;;;;;;:::i;:::-;;;;-1:-1:-1;;1250:57:53;;;;;;;;;;;;;;-1:-1:-1;;;;;1250:57:53;-1:-1:-1;;;1250:57:53;;;-1:-1:-1;;;;;1211:38:53;;;;:97::i;7489:132::-;7581:35;;-1:-1:-1;;;7581:35:53;;7610:4;7581:35;;;2494:51:87;7559:7:53;;-1:-1:-1;;;;;7581:20:53;;;;;2467:18:87;;7581:35:53;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;1729:465::-;1808:5;1804:386;;;1962:48;;2005:4;1962:48;;;1594:41:87;1881:12:53;;;;-1:-1:-1;;;;;1922:30:53;;;1567:18:87;;1962:48:53;;;-1:-1:-1;;1962:48:53;;;;;;;;;;;;;;-1:-1:-1;;;;;1962:48:53;-1:-1:-1;;;1962:48:53;;;1922:96;;;1962:48;1922:96;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1880:138;;;;2031:7;2026:47;;2045:28;2062:10;2045:28;;;;;;:::i;:::-;;;;;;;;1815:265;;3911:214:31;;:::o;1804:386:53:-;2133:49;;2176:5;2133:49;;;1594:41:87;2094:89:53;;1567:18:87;;2133:49:53;;;-1:-1:-1;;2133:49:53;;;;;;;;;;;;;;-1:-1:-1;;;;;2133:49:53;-1:-1:-1;;;2133:49:53;;;-1:-1:-1;;;;;2094:38:53;;;;:89::i;9071:205:30:-;9129:30;;3147:66;9186:27;8819:122;2676:443:52;6929:20:30;:18;:20::i;:::-;2965:22:52::1;2980:6;2965:14;:22::i;:::-;2993:28;3006:5;3013:7;2993:12;:28::i;:::-;3027:87;3052:11;3065:17;3084:13;3099:14;3027:24;:87::i;:::-;2676:443:::0;;;;;;;:::o;4513:254::-;4669:31;4693:6;4669:23;:31::i;:::-;4706:56;4722:6;4730:8;4740:5;4747:6;4755;4706:15;:56::i;9216:129:13:-;9281:7;9307:31;9321:16;9331:5;9321:9;:16::i;5166:340:54:-;5230:11;5249:15;5275:9;5270:216;5321:1;5294:11;5306:1;5294:14;;;;;;;:::i;:::-;;;-1:-1:-1;;;;;5294:14:54;5286:37;;;;:59;;-1:-1:-1;1782:2:54;5327:18;;5286:59;5270:216;;;5380:46;5392:3;5397:28;:11;5409:1;5397:14;;;;;;;:::i;:::-;;;-1:-1:-1;;;;;5397:14:54;:26;:28::i;5380:46::-;5360:66;-1:-1:-1;5360:66:54;-1:-1:-1;5438:11:54;;;:27;;;5460:5;5453:3;:12;;5438:27;5434:45;;;-1:-1:-1;5474:5:54;;5166:340;-1:-1:-1;;5166:340:54:o;5434:45::-;5347:3;;;:::i;:::-;;;5270:216;;;;5491:10;5166:340;;;:::o;9380:112:13:-;9443:7;9469:16;9479:5;9469:9;:16::i;8054:132:53:-;8146:35;;-1:-1:-1;;;8146:35:53;;8175:4;8146:35;;;2494:51:87;8124:7:53;;-1:-1:-1;;;;;8146:20:53;;;;;2467:18:87;;8146:35:53;2348:203:87;7771:130:53;7862:34;;-1:-1:-1;;;7862:34:53;;7890:4;7862:34;;;2494:51:87;7840:7:53;;-1:-1:-1;;;;;7862:19:53;;;;;2467:18:87;;7862:34:53;2348:203:87;2735:544:53;2833:4;2849:11;2845:430;;;2928:12;2942:23;2977:8;-1:-1:-1;;;;;2969:30:53;3050:6;3009:48;;;;;;160:25:87;;148:2;133:18;;14:177;3009:48:53;;;;-1:-1:-1;;3009:48:53;;;;;;;;;;;;;;-1:-1:-1;;;;;3009:48:53;-1:-1:-1;;;3009:48:53;;;2969:96;;;3009:48;2969:96;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2927:138;;;;3078:7;3073:45;;3092:26;3107:10;3092:26;;;;;;:::i;:::-;;;;;;;;3073:45;-1:-1:-1;3133:7:53;-1:-1:-1;3126:14:53;;2845:430;3161:88;3241:6;3200:48;;;;;;160:25:87;;148:2;133:18;;14:177;3200:48:53;;;;-1:-1:-1;;3200:48:53;;;;;;;;;;;;;;-1:-1:-1;;;;;3200:48:53;-1:-1:-1;;;3200:48:53;;;-1:-1:-1;;;;;3161:38:53;;;;:88::i;:::-;;3264:4;3257:11;;;;3816:540;3913:4;3929:11;3925:427;;;4008:12;4022:23;4057:8;-1:-1:-1;;;;;4049:30:53;4129:6;4089:47;;;;;;160:25:87;;148:2;133:18;;14:177;4089:47:53;;;;-1:-1:-1;;4089:47:53;;;;;;;;;;;;;;-1:-1:-1;;;;;4089:47:53;-1:-1:-1;;;4089:47:53;;;4049:95;;;4089:47;4049:95;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;4007:137;;;;4157:7;4152:44;;4171:25;4185:10;4171:25;;;;;;:::i;3925:427::-;4239:87;4318:6;4278:47;;;;;;160:25:87;;148:2;133:18;;14:177;4278:47:53;;;;-1:-1:-1;;4278:47:53;;;;;;;;;;;;;;-1:-1:-1;;;;;4278:47:53;-1:-1:-1;;;4278:47:53;;;-1:-1:-1;;;;;4239:38:53;;;;:87::i;11070:238:47:-;11171:7;11225:76;11241:26;11258:8;11241:16;:26::i;:::-;:59;;;;;11299:1;11284:11;11271:25;;;;;:::i;:::-;11281:1;11278;11271:25;:29;11241:59;34914:9:48;34907:17;;34795:145;11225:76:47;11197:25;11204:1;11207;11210:11;11197:6;:25::i;:::-;:104;;;;:::i;10900:487:12:-;-1:-1:-1;;;;;;;;;;;;;;;;11065:19:12;;11061:89;;11107:32;;-1:-1:-1;;;11107:32:12;;11136:1;11107:32;;;2494:51:87;2467:18;;11107:32:12;2348:203:87;11061:89:12;-1:-1:-1;;;;;11163:21:12;;11159:90;;11207:31;;-1:-1:-1;;;11207:31:12;;11235:1;11207:31;;;2494:51:87;2467:18;;11207:31:12;2348:203:87;11159:90:12;-1:-1:-1;;;;;11258:20:12;;;;;;;:13;;;:20;;;;;;;;:29;;;;;;;;;:37;;;11305:76;;;;11355:7;-1:-1:-1;;;;;11339:31:12;11348:5;-1:-1:-1;;;;;11339:31:12;;11364:5;11339:31;;;;160:25:87;;148:2;133:18;;14:177;11339:31:12;;;;;;;;10998:389;10900:487;;;;:::o;7142:1170::-;-1:-1:-1;;;;;;;;;;;;;;;;7284:18:12;;7280:546;;7438:5;7420:1;:14;;;:23;;;;;;;:::i;:::-;;;;-1:-1:-1;7280:546:12;;-1:-1:-1;7280:546:12;;-1:-1:-1;;;;;7496:17:12;;7474:19;7496:17;;;;;;;;;;;7531:19;;;7527:115;;;7602:4;7608:11;7621:5;7577:50;;-1:-1:-1;;;7577:50:12;;;;;;;;;;:::i;7527:115::-;-1:-1:-1;;;;;7762:17:12;;:11;:17;;;;;;;;;;7782:19;;;;7762:39;;7280:546;-1:-1:-1;;;;;7840:16:12;;7836:429;;8003:14;;;:23;;;;;;;7836:429;;;-1:-1:-1;;;;;8216:15:12;;:11;:15;;;;;;;;;;:24;;;;;;7836:429;8295:2;-1:-1:-1;;;;;8280:25:12;8289:4;-1:-1:-1;;;;;8280:25:12;;8299:5;8280:25;;;;160::87;;148:2;133:18;;14:177;8280:25:12;;;;;;;;7217:1095;7142:1170;;;:::o;4691:549:37:-;4774:12;4798;4813:47;4847:6;4855:4;4813:33;:47::i;:::-;4798:62;;4874:7;:72;;;;-1:-1:-1;4918:1:37;4583:16:40;4886:33:37;:59;;;;4944:1;4923:6;-1:-1:-1;;;;;4923:18:37;;:22;4886:59;4870:364;;;4969:25;:23;:25::i;:::-;4962:32;;;;;4870:364;5015:7;5011:223;;;5045:24;;-1:-1:-1;;;5045:24:37;;-1:-1:-1;;;;;2512:32:87;;5045:24:37;;;2494:51:87;2467:18;;5045:24:37;2348:203:87;5011:223:37;4583:16:40;5090:33:37;5086:148;;5139:27;:25;:27::i;:::-;5086:148;;;5204:19;;-1:-1:-1;;;5204:19:37;;;;;;;;;;;5086:148;4788:452;4691:549;;;;:::o;5633:111:47:-;5691:7;5328:5;;;5725;;;5327:36;5322:42;;5717:20;5087:294;2264:344:27;2355:37;2374:17;2355:18;:37::i;:::-;2407:36;;-1:-1:-1;;;;;2407:36:27;;;;;;;;2458:11;;:15;2454:148;;2489:53;2518:17;2537:4;2489:28;:53::i;2454:148::-;2573:18;:16;:18::i;12683:841:13:-;13353:74;13387:7;:5;:7::i;:::-;13397:6;13413:4;13420:6;13353:26;:74::i;:::-;13437:23;13443:8;13453:6;13437:5;:23::i;:::-;13492:8;-1:-1:-1;;;;;13476:41:13;13484:6;-1:-1:-1;;;;;13476:41:13;;13502:6;13510;13476:41;;;;;;22551:25:87;;;22607:2;22592:18;;22585:34;22539:2;22524:18;;22377:248;7082:141:30;7149:17;:15;:17::i;:::-;7144:73;;7189:17;;-1:-1:-1;;;7189:17:30;;;;;;;;;;;6384:114:13;6929:20:30;:18;:20::i;:::-;6459:32:13::1;6484:6;6459:24;:32::i;2281:147:12:-:0;6929:20:30;:18;:20::i;:::-;2383:38:12::1;2406:5;2413:7;2383:22;:38::i;3295:1867:54:-:0;3508:18;;:23;;:68;;-1:-1:-1;3541:18:54;;1782:2;-1:-1:-1;3508:68:54;:124;;;;3608:17;:24;3586:11;:18;:46;;3508:124;:176;;;;3664:13;:20;3642:11;:18;:42;;3508:176;:229;;;;3716:14;:21;3694:11;:18;:43;;3508:229;3497:279;;;3751:25;;-1:-1:-1;;;;;;3751:25:54;;;;;;;;;;;3497:279;3782:44;;:::i;:::-;3832:45;;:::i;:::-;3888:9;3883:1183;3903:11;:18;3899:1;:22;3883:1183;;;3975:1;-1:-1:-1;;;;;3940:37:54;3948:11;3960:1;3948:14;;;;;;;;:::i;:::-;;;;;;;-1:-1:-1;;;;;3940:37:54;;3936:67;;3986:17;;-1:-1:-1;;;3986:17:54;;;;;;;;;;;3936:67;4011:35;4037:8;:6;:8::i;:::-;4011:11;4023:1;4011:14;;;;;;;;:::i;:::-;;;;;;;-1:-1:-1;;;;;4011:25:54;;;:35;;;;:::i;:::-;4104:9;4099:126;4119:1;4115;:5;4099:126;;;4159:11;4171:1;4159:14;;;;;;;;:::i;:::-;;;;;;;-1:-1:-1;;;;;4141:32:54;:11;4153:1;4141:14;;;;;;;;:::i;:::-;;;;;;;-1:-1:-1;;;;;4141:32:54;;4137:79;;4201:11;4213:1;4201:14;;;;;;;;:::i;:::-;;;;;;;4182:34;;-1:-1:-1;;;4182:34:54;;;;;;;-1:-1:-1;;;;;2512:32:87;;;;2494:51;;2482:2;2467:18;;2348:203;4137:79:54;4122:3;;4099:126;;;;4343:11;:18;4323:13;4337:1;4323:16;;;;;;;;:::i;:::-;;;;;;;:38;;;;:76;;;;4365:16;4382:13;4396:1;4382:16;;;;;;;;:::i;:::-;;;;;;;4365:34;;;;;;;;;:::i;:::-;;;;;4323:76;4319:144;;;4446:13;4460:1;4446:16;;;;;;;;:::i;:::-;;;;;;;4416:47;;-1:-1:-1;;;4416:47:54;;;;;;;2331:4:87;2319:17;;;;2301:36;;2289:2;2274:18;;2159:184;4319:144:54;4496:11;:18;4475:14;4490:1;4475:17;;;;;;;;:::i;:::-;;;;;;;:39;;;;:79;;;;4518:17;4536:14;4551:1;4536:17;;;;;;;;:::i;:::-;;;;;;;4518:36;;;;;;;;;:::i;:::-;;;;;4475:79;4471:149;;;4602:14;4617:1;4602:17;;;;;;;;:::i;:::-;;;;;;;4571:49;;-1:-1:-1;;;4571:49:54;;;;;;;2331:4:87;2319:17;;;;2301:36;;2289:2;2274:18;;2159:184;4471:149:54;4665:4;4628:16;4645:13;4659:1;4645:16;;;;;;;;:::i;:::-;;;;;;;4628:34;;;;;;;;;:::i;:::-;;;;:41;;;;;;;;;;;4716:4;4677:17;4695:14;4710:1;4695:17;;;;;;;;:::i;:::-;;;;;;;4677:36;;;;;;;;;:::i;:::-;:43;;;:36;;;;;:43;4745:14;;;;4757:1;;4745:14;;;;;;:::i;:::-;;;;;;;4728:11;4740:1;4728:14;;;;;;;:::i;:::-;;;:31;;;;;-1:-1:-1;;;;;4728:31:54;;;;;-1:-1:-1;;;;;4728:31:54;;;;;;4786:13;4800:1;4786:16;;;;;;;;:::i;:::-;;;;;;;4805:1;4786:20;;;;:::i;:::-;4767:13;4781:1;4767:16;;;;;;;:::i;:::-;;;;;;;;;;:39;;;;;;;;;;;;;;;;;;4883:14;4898:1;4883:17;;;;;;;;:::i;:::-;;;;;;;4903:1;4883:21;;;;:::i;:::-;4863:14;4878:1;4863:17;;;;;;;:::i;:::-;;;;;;;;;;:41;;;;;;;;;;;;;;;;;;4961:46;4986:17;5004:1;4986:20;;;;;;;;:::i;:::-;;;;;;;4961:11;4973:1;4961:14;;;;;;;;:::i;:::-;;;;;;;-1:-1:-1;;;;;4961:24:54;;;:46;;;;:::i;:::-;5034:11;5046:1;5034:14;;;;;;;;:::i;:::-;;;;;;;-1:-1:-1;;;;;5020:39:54;;5056:1;5020:39;;;;;2331:4:87;2319:17;;;;2301:36;;2289:2;2274:18;;2159:184;5020:39:54;;;;;;;;3923:3;;3883:1183;;;;5076:34;5096:13;5076:34;;;;;;:::i;:::-;;;;;;;;5121:36;5142:14;5121:36;;;;;;:::i;:::-;;;;;;;;3491:1671;;3295:1867;;;;:::o;6629:539::-;6708:6;6693:12;6720:332;6736:9;;;;;:35;;;6749:14;6764:1;6749:17;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;:22;;6736:35;:57;;;;-1:-1:-1;1782:2:54;6775:18;;6736:57;6720:332;;;6808:24;6835:11;6867:1;6847:14;6862:1;6847:17;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;:21;;;;:::i;:::-;6835:34;;;;;;;;;:::i;:::-;;;-1:-1:-1;;;;;6835:34:54;;-1:-1:-1;6835:34:54;6898:38;6907:4;6913:22;6835:34;6913:20;:22::i;6898:38::-;6877:59;;6948:10;6962:1;6948:15;6944:29;;6965:8;;;;6944:29;6981:38;-1:-1:-1;;;;;6981:19:54;;7001:10;7013:5;6981:19;:38::i;:::-;-1:-1:-1;7027:18:54;7035:10;7027:18;;:::i;:::-;;;6800:252;;6720:332;6795:3;;;:::i;:::-;;;6720:332;;;-1:-1:-1;7061:9:54;;7057:37;;7079:15;;-1:-1:-1;;;7079:15:54;;;;;;;;;;;13591:925:13;13778:5;-1:-1:-1;;;;;13768:15:13;:6;-1:-1:-1;;;;;13768:15:13;;13764:84;;13799:38;13815:5;13822:6;13830;13799:15;:38::i;:::-;14357:20;14363:5;14370:6;14357:5;:20::i;:::-;14387:57;14417:7;:5;:7::i;:::-;14427:8;14437:6;14387:22;:57::i;:::-;14487:5;-1:-1:-1;;;;;14460:49:13;14477:8;-1:-1:-1;;;;;14460:49:13;14469:6;-1:-1:-1;;;;;14460:49:13;;14494:6;14502;14460:49;;;;;;22551:25:87;;;22607:2;22592:18;;22585:34;22539:2;22524:18;;22377:248;14460:49:13;;;;;;;;13591:925;;;;;:::o;32036:122:47:-;32104:4;32145:1;32133:8;32127:15;;;;;;;;:::i;:::-;:19;;;;:::i;:::-;:24;;32150:1;32127:24;32120:31;;32036:122;;;:::o;7258:3683::-;7340:14;7391:12;7405:11;7420:12;7427:1;7430;7420:6;:12::i;:::-;7390:42;;;;7514:4;7522:1;7514:9;7510:365;;7849:11;7843:3;:17;;;;;:::i;:::-;;7836:24;;;;;;7510:365;8000:4;7985:11;:19;7981:142;;8024:84;5328:5;8044:16;;5327:36;940:4:43;5322:42:47;8024:11;:84::i;:::-;8375:17;8526:11;8523:1;8520;8513:25;8918:12;8948:15;;;8933:31;;9083:22;;;;;9816:1;9797;:15;;9796:21;;10049;;;10045:25;;10034:36;10119:21;;;10115:25;;10104:36;10191:21;;;10187:25;;10176:36;10262:21;;;10258:25;;10247:36;10335:21;;;10331:25;;10320:36;10409:21;;;10405:25;;;10394:36;9325:12;;;;9321:23;;;9346:1;9317:31;8638:18;;;8628:29;;;9432:11;;;;8681:19;;;;9176:14;;;;9425:18;;;;10884:13;;-1:-1:-1;;7258:3683:47;;;;;:::o;3383:242:40:-;3466:12;3604:4;3598;3591;3585:11;3578:4;3572;3568:15;3560:6;3553:5;3540:69;3529:80;3383:242;-1:-1:-1;;;3383:242:40:o;4698:334::-;4829:4;4823:11;4862:16;4847:32;;4932:16;4926:4;4919;4907:17;;4892:57;4997:16;4991:4;4987:27;4979:6;4975:40;4969:4;4962:54;4698:334;:::o;5099:223::-;5203:4;5197:11;5247:16;5241:4;5236:3;5221:43;5289:16;5284:3;5277:29;1671:281:27;1748:17;-1:-1:-1;;;;;1748:29:27;;1781:1;1748:34;1744:119;;1805:47;;-1:-1:-1;;;1805:47:27;;-1:-1:-1;;;;;2512:32:87;;1805:47:27;;;2494:51:87;2467:18;;1805:47:27;2348:203:87;1744:119:27;-1:-1:-1;;;;;;;;;;;1872:73:27;;-1:-1:-1;;;;;;1872:73:27;-1:-1:-1;;;;;1872:73:27;;;;;;;;;;1671:281::o;6113:122::-;6163:9;:13;6159:70;;6199:19;;-1:-1:-1;;;6199:19:27;;;;;;;;;;;1662:232:36;1767:47;1785:5;1792:4;1798:2;1802:5;1809:4;1767:17;:47::i;:::-;1762:126;;1837:40;;-1:-1:-1;;;1837:40:36;;-1:-1:-1;;;;;2512:32:87;;1837:40:36;;;2494:51:87;2467:18;;1837:40:36;2348:203:87;8655:208:12;-1:-1:-1;;;;;8725:21:12;;8721:91;;8769:32;;-1:-1:-1;;;8769:32:12;;8798:1;8769:32;;;2494:51:87;2467:18;;8769:32:12;2348:203:87;8721:91:12;8821:35;8837:1;8841:7;8850:5;8821:7;:35::i;8485:120:30:-;8535:4;8558:26;:24;:26::i;:::-;:40;-1:-1:-1;;;8558:40:30;;;;;;-1:-1:-1;8485:120:30:o;6504:304:13:-;6929:20:30;:18;:20::i;:::-;5498:22:13;6589:24:::1;::::0;6684:28:::1;6705:6:::0;6684:20:::1;:28::i;:::-;6646:66;;;;6746:7;:28;;6772:2;6746:28;;;6756:13;6746:28;6722:52:::0;;-1:-1:-1;;;;;;6784:17:13;-1:-1:-1;;;6722:52:13::1;::::0;;;::::1;::::0;;;::::1;-1:-1:-1::0;;;;;;6784:17:13;;-1:-1:-1;;;;;6784:17:13;;;::::1;::::0;;;::::1;::::0;;;-1:-1:-1;;6504:304:13:o;2434:216:12:-;6929:20:30;:18;:20::i;:::-;-1:-1:-1;;;;;;;;;;;2599:7:12;:15:::1;2609:5:::0;2599:7;:15:::1;:::i;:::-;-1:-1:-1::0;2624:9:12::1;::::0;::::1;:19;2636:7:::0;2624:9;:19:::1;:::i;9181:206::-:0;-1:-1:-1;;;;;9251:21:12;;9247:89;;9295:30;;-1:-1:-1;;;9295:30:12;;9322:1;9295:30;;;2494:51:87;2467:18;;9295:30:12;2348:203:87;9247:89:12;9345:35;9353:7;9370:1;9374:5;9345:7;:35::i;1219:204:36:-;1306:37;1320:5;1327:2;1331:5;1338:4;1306:13;:37::i;:::-;1301:116;;1366:40;;-1:-1:-1;;;1366:40:36;;-1:-1:-1;;;;;2512:32:87;;1366:40:36;;;2494:51:87;2467:18;;1366:40:36;2348:203:87;1027:550:47;1088:12;;-1:-1:-1;;1471:1:47;1468;1461:20;1501:9;;;;1549:11;;;1535:12;;;;1531:30;;;;;1027:550;-1:-1:-1;;1027:550:47:o;1776:194:43:-;1881:10;1875:4;1868:24;1918:4;1912;1905:18;1949:4;1943;1936:18;10165:1393:36;10460:4;10454:11;-1:-1:-1;;;10323:12:36;10478:22;;;-1:-1:-1;;;;;10526:26:36;;;10520:4;10513:40;10579:24;;10573:4;10566:38;10624:4;10617:19;;;10323:12;10700:4;10323:12;10688:4;10323:12;;10672:5;10665;10660:45;10649:56;;10917:1;10910:4;10904:11;10901:18;10892:7;10888:32;10878:606;;11049:6;11039:7;11032:15;11028:28;11025:165;;;11105:16;11099:4;11094:3;11079:43;11155:16;11150:3;11143:29;11025:165;11466:1;11458:5;11446:18;11443:25;11424:16;11417:24;11413:56;11404:7;11400:70;11389:81;;10878:606;11504:4;11497:17;-1:-1:-1;11540:1:36;11534:4;11527:15;10165:1393;;-1:-1:-1;;;;;10165:1393:36:o;6951:607:13:-;7018:7;7027:19;7058:18;7079:29;1025:4:41;1019:11;;895:151;7079:29:13;7242:43;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;7242:43:13;-1:-1:-1;;;7242:43:13;;;7058:50;;-1:-1:-1;7119:12:13;;;;7163:132;;7221:6;;7163:36;:132::i;:::-;7118:177;;;;;7305:32;7333:3;1311:4:41;1304:17;1198:139;7305:32:13;7368:7;:46;;;;-1:-1:-1;7412:2:13;4583:16:40;7379:35:13;;7368:46;:94;;;;-1:-1:-1;7447:15:13;7418:44;;;7368:94;7367:184;;7542:5;7549:1;7367:184;;;7483:4;7503:16;7367:184;7348:203;;;;;;;6951:607;;;:::o;8373:1244:36:-;8600:4;8594:11;-1:-1:-1;;;8467:12:36;8618:22;;;-1:-1:-1;;;;;8666:24:36;;8660:4;8653:38;8711:4;8704:19;;;8467:12;8787:4;8467:12;8775:4;8467:12;;8759:5;8752;8747:45;8736:56;;9004:1;8997:4;8991:11;8988:18;8979:7;8975:32;8965:606;;9136:6;9126:7;9119:15;9115:28;9112:165;;;9192:16;9186:4;9181:3;9166:43;9242:16;9237:3;9230:29;9112:165;9553:1;9545:5;9533:18;9530:25;9511:16;9504:24;9500:56;9491:7;9487:70;9476:81;;8965:606;9591:4;9584:17;-1:-1:-1;8373:1244:36;;-1:-1:-1;;;;8373:1244:36:o;2893:374:40:-;3006:12;3020:15;3037;3176:4;3170;3163;3157:11;3150:4;3144;3140:15;3132:6;3125:5;3114:67;3103:78;;3211:4;3205:11;3194:22;;3246:4;3240:11;3229:22;;2893:374;;;;;:::o;-1:-1:-1:-;;;;;;;;;;;;;;;;;;;;;;;;:::o;196:289:87:-;238:3;276:5;270:12;303:6;298:3;291:19;359:6;352:4;345:5;341:16;334:4;329:3;325:14;319:47;411:1;404:4;395:6;390:3;386:16;382:27;375:38;474:4;467:2;463:7;458:2;450:6;446:15;442:29;437:3;433:39;429:50;422:57;;;196:289;;;;:::o;490:220::-;639:2;628:9;621:21;602:4;659:45;700:2;689:9;685:18;677:6;659:45;:::i;715:226::-;774:6;827:2;815:9;806:7;802:23;798:32;795:52;;;843:1;840;833:12;795:52;-1:-1:-1;888:23:87;;715:226;-1:-1:-1;715:226:87:o;946:131::-;-1:-1:-1;;;;;1021:31:87;;1011:42;;1001:70;;1067:1;1064;1057:12;1082:367;1150:6;1158;1211:2;1199:9;1190:7;1186:23;1182:32;1179:52;;;1227:1;1224;1217:12;1179:52;1266:9;1253:23;1285:31;1310:5;1285:31;:::i;:::-;1335:5;1413:2;1398:18;;;;1385:32;;-1:-1:-1;;;1082:367:87:o;1646:508::-;1723:6;1731;1739;1792:2;1780:9;1771:7;1767:23;1763:32;1760:52;;;1808:1;1805;1798:12;1760:52;1847:9;1834:23;1866:31;1891:5;1866:31;:::i;:::-;1916:5;-1:-1:-1;1973:2:87;1958:18;;1945:32;1986:33;1945:32;1986:33;:::i;:::-;1646:508;;2038:7;;-1:-1:-1;;;2118:2:87;2103:18;;;;2090:32;;1646:508::o;2556:156::-;2622:20;;2682:4;2671:16;;2661:27;;2651:55;;2702:1;2699;2692:12;2651:55;2556:156;;;:::o;2717:127::-;2778:10;2773:3;2769:20;2766:1;2759:31;2809:4;2806:1;2799:15;2833:4;2830:1;2823:15;2849:275;2920:2;2914:9;2985:2;2966:13;;-1:-1:-1;;2962:27:87;2950:40;;-1:-1:-1;;;;;3005:34:87;;3041:22;;;3002:62;2999:88;;;3067:18;;:::i;:::-;3103:2;3096:22;2849:275;;-1:-1:-1;2849:275:87:o;3129:629::-;3171:5;3224:3;3217:4;3209:6;3205:17;3201:27;3191:55;;3242:1;3239;3232:12;3191:55;3282:6;3269:20;3321:4;3313:6;3309:17;3350:1;3372;-1:-1:-1;;;;;3388:6:87;3385:30;3382:56;;;3418:18;;:::i;:::-;-1:-1:-1;3484:2:87;3463:15;;-1:-1:-1;;3459:29:87;3490:4;3455:40;3515:21;3455:40;3515:21;:::i;:::-;3504:32;;;3561:6;3552:7;3545:23;3601:3;3592:6;3587:3;3583:16;3580:25;3577:45;;;3618:1;3615;3608:12;3577:45;3669:6;3664:3;3657:4;3648:7;3644:18;3631:45;3725:1;3696:20;;;3718:4;3692:31;3685:42;;;;-1:-1:-1;3700:7:87;3129:629;-1:-1:-1;;;3129:629:87:o;3763:460::-;3845:6;3853;3861;3914:2;3902:9;3893:7;3889:23;3885:32;3882:52;;;3930:1;3927;3920:12;3882:52;3953:27;3970:9;3953:27;:::i;:::-;3943:37;;3999:36;4031:2;4020:9;4016:18;3999:36;:::i;:::-;3989:46;;4086:2;4075:9;4071:18;4058:32;-1:-1:-1;;;;;4105:6:87;4102:30;4099:50;;;4145:1;4142;4135:12;4099:50;4168:49;4209:7;4200:6;4189:9;4185:22;4168:49;:::i;:::-;4158:59;;;3763:460;;;;;:::o;4451:247::-;4510:6;4563:2;4551:9;4542:7;4538:23;4534:32;4531:52;;;4579:1;4576;4569:12;4531:52;4618:9;4605:23;4637:31;4662:5;4637:31;:::i;4888:455::-;4965:6;4973;5026:2;5014:9;5005:7;5001:23;4997:32;4994:52;;;5042:1;5039;5032:12;4994:52;5081:9;5068:23;5100:31;5125:5;5100:31;:::i;:::-;5150:5;-1:-1:-1;5206:2:87;5191:18;;5178:32;-1:-1:-1;;;;;5222:30:87;;5219:50;;;5265:1;5262;5255:12;5219:50;5288:49;5329:7;5320:6;5309:9;5305:22;5288:49;:::i;:::-;5278:59;;;4888:455;;;;;:::o;5348:482::-;5526:4;5511:20;;5515:9;5608:6;5484:4;5642:182;5656:4;5653:1;5650:11;5642:182;;;5719:13;;5734:4;5715:24;5703:37;;5769:4;5760:14;;;;5797:17;;;;5676:1;5669:9;5642:182;;;5646:3;;;5348:482;;;;:::o;6017:367::-;6085:6;6093;6146:2;6134:9;6125:7;6121:23;6117:32;6114:52;;;6162:1;6159;6152:12;6114:52;6207:23;;;-1:-1:-1;6306:2:87;6291:18;;6278:32;6319:33;6278:32;6319:33;:::i;:::-;6371:7;6361:17;;;6017:367;;;;;:::o;6389:118::-;6475:5;6468:13;6461:21;6454:5;6451:32;6441:60;;6497:1;6494;6487:12;6512:686;6627:6;6635;6643;6651;6704:3;6692:9;6683:7;6679:23;6675:33;6672:53;;;6721:1;6718;6711:12;6672:53;6744:27;6761:9;6744:27;:::i;:::-;6734:37;;6821:2;6810:9;6806:18;6793:32;6834:31;6859:5;6834:31;:::i;:::-;6884:5;-1:-1:-1;6940:2:87;6925:18;;6912:32;-1:-1:-1;;;;;6956:30:87;;6953:50;;;6999:1;6996;6989:12;6953:50;7022:49;7063:7;7054:6;7043:9;7039:22;7022:49;:::i;:::-;7012:59;;;7123:2;7112:9;7108:18;7095:32;7136:30;7158:7;7136:30;:::i;:::-;6512:686;;;;-1:-1:-1;6512:686:87;;-1:-1:-1;;6512:686:87:o;7688:252::-;7752:6;7760;7813:2;7801:9;7792:7;7788:23;7784:32;7781:52;;;7829:1;7826;7819:12;7781:52;7852:27;7869:9;7852:27;:::i;:::-;7842:37;;7898:36;7930:2;7919:9;7915:18;7898:36;:::i;:::-;7888:46;;7688:252;;;;;:::o;8152:181::-;8210:4;-1:-1:-1;;;;;8235:6:87;8232:30;8229:56;;;8265:18;;:::i;:::-;-1:-1:-1;8310:1:87;8306:14;8322:4;8302:25;;8152:181::o;8338:669::-;8390:5;8443:3;8436:4;8428:6;8424:17;8420:27;8410:55;;8461:1;8458;8451:12;8410:55;8501:6;8488:20;8528:62;8544:45;8582:6;8544:45;:::i;:::-;8528:62;:::i;:::-;8614:3;8638:6;8633:3;8626:19;8670:4;8665:3;8661:14;8654:21;;8731:4;8721:6;8718:1;8714:14;8706:6;8702:27;8698:38;8684:52;;8759:3;8751:6;8748:15;8745:35;;;8776:1;8773;8766:12;8745:35;8812:4;8804:6;8800:17;8826:150;8842:6;8837:3;8834:15;8826:150;;;8910:21;8927:3;8910:21;:::i;:::-;8898:34;;8961:4;8952:14;;;;8859;8826:150;;;-1:-1:-1;8994:7:87;8338:669;-1:-1:-1;;;;;8338:669:87:o;9012:344::-;9094:6;9147:2;9135:9;9126:7;9122:23;9118:32;9115:52;;;9163:1;9160;9153:12;9115:52;9203:9;9190:23;-1:-1:-1;;;;;9228:6:87;9225:30;9222:50;;;9268:1;9265;9258:12;9222:50;9291:59;9342:7;9333:6;9322:9;9318:22;9291:59;:::i;9361:311::-;9424:6;9432;9485:2;9473:9;9464:7;9460:23;9456:32;9453:52;;;9501:1;9498;9491:12;9453:52;9524:27;9541:9;9524:27;:::i;:::-;9514:37;;9601:2;9590:9;9586:18;9573:32;9614:28;9636:5;9614:28;:::i;9677:142::-;9753:20;;9782:31;9753:20;9782:31;:::i;9824:759::-;9895:5;9948:3;9941:4;9933:6;9929:17;9925:27;9915:55;;9966:1;9963;9956:12;9915:55;10006:6;9993:20;10033:62;10049:45;10087:6;10049:45;:::i;10033:62::-;10119:3;10143:6;10138:3;10131:19;10175:4;10170:3;10166:14;10159:21;;10236:4;10226:6;10223:1;10219:14;10211:6;10207:27;10203:38;10189:52;;10264:3;10256:6;10253:15;10250:35;;;10281:1;10278;10271:12;10250:35;10317:4;10309:6;10305:17;10331:221;10347:6;10342:3;10339:15;10331:221;;;10429:3;10416:17;10446:31;10471:5;10446:31;:::i;:::-;10490:18;;10537:4;10528:14;;;;10364;10331:221;;10588:823;10640:5;10693:3;10686:4;10678:6;10674:17;10670:27;10660:55;;10711:1;10708;10701:12;10660:55;10751:6;10738:20;10778:62;10794:45;10832:6;10794:45;:::i;10778:62::-;10864:3;10888:6;10883:3;10876:19;10920:4;10915:3;10911:14;10904:21;;10981:4;10971:6;10968:1;10964:14;10956:6;10952:27;10948:38;10934:52;;11009:3;11001:6;10998:15;10995:35;;;11026:1;11023;11016:12;10995:35;11062:4;11054:6;11050:17;11076:304;11092:6;11087:3;11084:15;11076:304;;;11180:3;11167:17;-1:-1:-1;;;;;11203:11:87;11200:35;11197:55;;;11248:1;11245;11238:12;11197:55;11277:58;11331:3;11324:4;11310:11;11302:6;11298:24;11294:35;11277:58;:::i;:::-;11265:71;;-1:-1:-1;11365:4:87;11356:14;;;;11109;11076:304;;11416:1646;11694:6;11702;11710;11718;11726;11734;11742;11795:3;11783:9;11774:7;11770:23;11766:33;11763:53;;;11812:1;11809;11802:12;11763:53;11852:9;11839:23;-1:-1:-1;;;;;11877:6:87;11874:30;11871:50;;;11917:1;11914;11907:12;11871:50;11940:49;11981:7;11972:6;11961:9;11957:22;11940:49;:::i;:::-;11930:59;;;12042:2;12031:9;12027:18;12014:32;-1:-1:-1;;;;;12061:8:87;12058:32;12055:52;;;12103:1;12100;12093:12;12055:52;12126:51;12169:7;12158:8;12147:9;12143:24;12126:51;:::i;:::-;12116:61;;;12196:46;12238:2;12227:9;12223:18;12196:46;:::i;:::-;12186:56;;12295:2;12284:9;12280:18;12267:32;-1:-1:-1;;;;;12314:8:87;12311:32;12308:52;;;12356:1;12353;12346:12;12308:52;12379:80;12451:7;12440:8;12429:9;12425:24;12379:80;:::i;:::-;12369:90;;;12512:3;12501:9;12497:19;12484:33;-1:-1:-1;;;;;12532:8:87;12529:32;12526:52;;;12574:1;12571;12564:12;12526:52;12597:61;12650:7;12639:8;12628:9;12624:24;12597:61;:::i;:::-;12587:71;;;12711:3;12700:9;12696:19;12683:33;-1:-1:-1;;;;;12731:8:87;12728:32;12725:52;;;12773:1;12770;12763:12;12725:52;12796:61;12849:7;12838:8;12827:9;12823:24;12796:61;:::i;:::-;12786:71;;;12910:3;12899:9;12895:19;12882:33;-1:-1:-1;;;;;12930:8:87;12927:32;12924:52;;;12972:1;12969;12962:12;12924:52;12995:61;13048:7;13037:8;13026:9;13022:24;12995:61;:::i;:::-;12985:71;;;11416:1646;;;;;;;;;;:::o;13067:508::-;13144:6;13152;13160;13213:2;13201:9;13192:7;13188:23;13184:32;13181:52;;;13229:1;13226;13219:12;13181:52;13274:23;;;-1:-1:-1;13373:2:87;13358:18;;13345:32;13386:33;13345:32;13386:33;:::i;:::-;13438:7;-1:-1:-1;13497:2:87;13482:18;;13469:32;13510:33;13469:32;13510:33;:::i;:::-;13562:7;13552:17;;;13067:508;;;;;:::o;13580:526::-;13787:4;13772:20;;13776:9;13869:6;13745:4;13903:197;13917:4;13914:1;13911:11;13903:197;;;13980:13;;-1:-1:-1;;;;;13976:39:87;13964:52;;14045:4;14036:14;;;;14073:17;;;;14012:1;13930:9;13903:197;;14111:388;14179:6;14187;14240:2;14228:9;14219:7;14215:23;14211:32;14208:52;;;14256:1;14253;14246:12;14208:52;14295:9;14282:23;14314:31;14339:5;14314:31;:::i;:::-;14364:5;-1:-1:-1;14421:2:87;14406:18;;14393:32;14434:33;14393:32;14434:33;:::i;14504:366::-;14577:6;14585;14593;14646:2;14634:9;14625:7;14621:23;14617:32;14614:52;;;14662:1;14659;14652:12;14614:52;14685:27;14702:9;14685:27;:::i;:::-;14675:37;;14731:36;14763:2;14752:9;14748:18;14731:36;:::i;14875:380::-;14954:1;14950:12;;;;14997;;;15018:61;;15072:4;15064:6;15060:17;15050:27;;15018:61;15125:2;15117:6;15114:14;15094:18;15091:38;15088:161;;15171:10;15166:3;15162:20;15159:1;15152:31;15206:4;15203:1;15196:15;15234:4;15231:1;15224:15;15088:161;;14875:380;;;:::o;15260:127::-;15321:10;15316:3;15312:20;15309:1;15302:31;15352:4;15349:1;15342:15;15376:4;15373:1;15366:15;15392:148;15480:4;15459:12;;;15473;;;15455:31;;15498:13;;15495:39;;;15514:18;;:::i;15545:127::-;15606:10;15601:3;15597:20;15594:1;15587:31;15637:4;15634:1;15627:15;15661:4;15658:1;15651:15;15677:184;15747:6;15800:2;15788:9;15779:7;15775:23;15771:32;15768:52;;;15816:1;15813;15806:12;15768:52;-1:-1:-1;15839:16:87;;15677:184;-1:-1:-1;15677:184:87:o;15866:135::-;15905:3;15926:17;;;15923:43;;15946:18;;:::i;:::-;-1:-1:-1;15993:1:87;15982:13;;15866:135::o;16006:345::-;-1:-1:-1;;;;;16226:32:87;;;;16208:51;;16290:2;16275:18;;16268:34;;;;16333:2;16318:18;;16311:34;16196:2;16181:18;;16006:345::o;16589:125::-;16654:9;;;16675:10;;;16672:36;;;16688:18;;:::i;17005:618::-;17191:2;17203:21;;;17273:13;;17176:18;;;17295:22;;;17143:4;;17374:15;;;17348:2;17333:18;;;17143:4;17417:180;17431:6;17428:1;17425:13;17417:180;;;17496:13;;17511:4;17492:24;17480:37;;17546:2;17572:15;;;;17537:12;;;;17453:1;17446:9;17417:180;;;-1:-1:-1;17614:3:87;;17005:618;-1:-1:-1;;;;;17005:618:87:o;17628:128::-;17695:9;;;17716:11;;;17713:37;;;17730:18;;:::i;17761:151::-;17851:4;17844:12;;;17830;;;17826:31;;17869:14;;17866:40;;;17886:18;;:::i;18131:175::-;18168:3;18212:4;18205:5;18201:16;18241:4;18232:7;18229:17;18226:43;;18249:18;;:::i;:::-;18298:1;18285:15;;18131:175;-1:-1:-1;;18131:175:87:o;18311:375::-;18399:1;18417:5;18431:249;18452:1;18442:8;18439:15;18431:249;;;18502:4;18497:3;18493:14;18487:4;18484:24;18481:50;;;18511:18;;:::i;:::-;18561:1;18551:8;18547:16;18544:49;;;18575:16;;;;18544:49;18658:1;18654:16;;;;;18614:15;;18431:249;;;18311:375;;;;;;:::o;18691:902::-;18740:5;18770:8;18760:80;;-1:-1:-1;18811:1:87;18825:5;;18760:80;18859:4;18849:76;;-1:-1:-1;18896:1:87;18910:5;;18849:76;18941:4;18959:1;18954:59;;;;19027:1;19022:174;;;;18934:262;;18954:59;18984:1;18975:10;;18998:5;;;19022:174;19059:3;19049:8;19046:17;19043:43;;;19066:18;;:::i;:::-;-1:-1:-1;;19122:1:87;19108:16;;19181:5;;18934:262;;19280:2;19270:8;19267:16;19261:3;19255:4;19252:13;19248:36;19242:2;19232:8;19229:16;19224:2;19218:4;19215:12;19211:35;19208:77;19205:203;;;-1:-1:-1;19317:19:87;;;19393:5;;19205:203;19440:42;-1:-1:-1;;19465:8:87;19459:4;19440:42;:::i;:::-;19518:6;19514:1;19510:6;19506:19;19497:7;19494:32;19491:58;;;19529:18;;:::i;:::-;19567:20;;18691:902;-1:-1:-1;;;18691:902:87:o;19598:140::-;19656:5;19685:47;19726:4;19716:8;19712:19;19706:4;19685:47;:::i;19743:274::-;19836:6;19889:2;19877:9;19868:7;19864:23;19860:32;19857:52;;;19905:1;19902;19895:12;19857:52;19937:9;19931:16;19956:31;19981:5;19956:31;:::i;20423:410::-;20498:6;20506;20559:2;20547:9;20538:7;20534:23;20530:32;20527:52;;;20575:1;20572;20565:12;20527:52;20607:9;20601:16;20626:28;20648:5;20626:28;:::i;:::-;20723:2;20708:18;;20702:25;20673:5;;-1:-1:-1;20771:10:87;20758:24;;20746:37;;20736:65;;20797:1;20794;20787:12;20838:296;21021:4;21013:6;21009:17;20998:9;20991:36;21063:2;21058;21047:9;21043:18;21036:30;20972:4;21083:45;21124:2;21113:9;21109:18;21101:6;21083:45;:::i;21939:301::-;22068:3;22106:6;22100:13;22152:6;22145:4;22137:6;22133:17;22128:3;22122:37;22214:1;22178:16;;22203:13;;;-1:-1:-1;22178:16:87;21939:301;-1:-1:-1;21939:301:87:o;22245:127::-;22306:10;22301:3;22297:20;22294:1;22287:31;22337:4;22334:1;22327:15;22361:4;22358:1;22351:15;22630:127;22691:10;22686:3;22682:20;22679:1;22672:31;22722:4;22719:1;22712:15;22746:4;22743:1;22736:15;22762:254;22792:1;22826:4;22823:1;22819:12;22850:3;22840:134;;22896:10;22891:3;22887:20;22884:1;22877:31;22931:4;22928:1;22921:15;22959:4;22956:1;22949:15;22840:134;23006:3;22999:4;22996:1;22992:12;22988:22;22983:27;;;22762:254;;;;:::o;23147:518::-;23249:2;23244:3;23241:11;23238:421;;;23285:5;23282:1;23275:16;23329:4;23326:1;23316:18;23399:2;23387:10;23383:19;23380:1;23376:27;23370:4;23366:38;23435:4;23423:10;23420:20;23417:47;;;-1:-1:-1;23458:4:87;23417:47;23513:2;23508:3;23504:12;23501:1;23497:20;23491:4;23487:31;23477:41;;23568:81;23586:2;23579:5;23576:13;23568:81;;;23645:1;23631:16;;23612:1;23601:13;23568:81;;23841:1299;23967:3;23961:10;-1:-1:-1;;;;;23986:6:87;23983:30;23980:56;;;24016:18;;:::i;:::-;24045:97;24135:6;24095:38;24127:4;24121:11;24095:38;:::i;:::-;24089:4;24045:97;:::i;:::-;24191:4;24222:2;24211:14;;24239:1;24234:649;;;;24927:1;24944:6;24941:89;;;-1:-1:-1;24996:19:87;;;24990:26;24941:89;-1:-1:-1;;23798:1:87;23794:11;;;23790:24;23786:29;23776:40;23822:1;23818:11;;;23773:57;25043:81;;24204:930;;24234:649;23094:1;23087:14;;;23131:4;23118:18;;-1:-1:-1;;24270:20:87;;;24388:222;24402:7;24399:1;24396:14;24388:222;;;24484:19;;;24478:26;24463:42;;24591:4;24576:20;;;;24544:1;24532:14;;;;24418:12;24388:222;;;24392:3;24638:6;24629:7;24626:19;24623:201;;;24699:19;;;24693:26;-1:-1:-1;;24782:1:87;24778:14;;;24794:3;24774:24;24770:37;24766:42;24751:58;24736:74;;24623:201;-1:-1:-1;;;;24870:1:87;24854:14;;;24850:22;24837:36;;-1:-1:-1;23841:1299:87:o"},"methodIdentifiers":{"MAX_STRATEGIES()":"767f06ae","UPGRADE_INTERFACE_VERSION()":"ad3cb1cc","addStrategy(address,bytes)":"7aeedf2a","allowance(address,address)":"dd62ed3e","approve(address,uint256)":"095ea7b3","asset()":"38d52e0f","balanceOf(address)":"70a08231","changeDepositQueue(uint8[])":"914abf4f","changeWithdrawQueue(uint8[])":"bd577eb6","convertToAssets(uint256)":"07a2d13a","convertToShares(uint256)":"c6e6f592","decimals()":"313ce567","deposit(uint256,address)":"6e553f65","depositQueue()":"f617eecc","depositToStrategies(uint256)":"4614b896","forwardToStrategy(uint8,uint8,bytes)":"3aaf9048","getBytesSlot(bytes32)":"47e57533","getForwardToStrategySelector(uint8,uint8)":"8cdf48a8","initialize(string,string,address,address[],bytes[],uint8[],uint8[])":"a7ded2ea","maxDeposit(address)":"402d267d","maxMint(address)":"c63d75b6","maxRedeem(address)":"d905777e","maxWithdraw(address)":"ce96cb77","mint(uint256,address)":"94bf804d","name()":"06fdde03","previewDeposit(uint256)":"ef8b30f7","previewMint(uint256)":"b3d7f6b9","previewRedeem(uint256)":"4cdad506","previewWithdraw(uint256)":"0a28a477","proxiableUUID()":"52d1902d","rebalance(uint8,uint8,uint256)":"e682324d","redeem(uint256,address,address)":"ba087652","removeStrategy(uint8,bool)":"96da35da","replaceStrategy(uint8,address,bytes,bool)":"7ac445a7","strategies()":"d9f9027f","symbol()":"95d89b41","totalAssets()":"01e1d114","totalSupply()":"18160ddd","transfer(address,uint256)":"a9059cbb","transferFrom(address,address,uint256)":"23b872dd","upgradeToAndCall(address,bytes)":"4f1ef286","withdraw(uint256,address,address)":"b460af94","withdrawQueue()":"51a2d6d1"}},"metadata":"{\"compiler\":{\"version\":\"0.8.30+commit.73712a01\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"inputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"constructor\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"caller\",\"type\":\"address\"}],\"name\":\"AccessManagedUnauthorized\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"target\",\"type\":\"address\"}],\"name\":\"AddressEmptyCode\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"CannotRemoveStrategyWithAssets\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"DepositError\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"contract IInvestStrategy\",\"name\":\"strategy\",\"type\":\"address\"}],\"name\":\"DuplicatedStrategy\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"implementation\",\"type\":\"address\"}],\"name\":\"ERC1967InvalidImplementation\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"ERC1967NonPayable\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"spender\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"allowance\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"needed\",\"type\":\"uint256\"}],\"name\":\"ERC20InsufficientAllowance\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"sender\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"balance\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"needed\",\"type\":\"uint256\"}],\"name\":\"ERC20InsufficientBalance\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"approver\",\"type\":\"address\"}],\"name\":\"ERC20InvalidApprover\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"receiver\",\"type\":\"address\"}],\"name\":\"ERC20InvalidReceiver\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"sender\",\"type\":\"address\"}],\"name\":\"ERC20InvalidSender\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"spender\",\"type\":\"address\"}],\"name\":\"ERC20InvalidSpender\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"receiver\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"assets\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"max\",\"type\":\"uint256\"}],\"name\":\"ERC4626ExceededMaxDeposit\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"receiver\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"shares\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"max\",\"type\":\"uint256\"}],\"name\":\"ERC4626ExceededMaxMint\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"shares\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"max\",\"type\":\"uint256\"}],\"name\":\"ERC4626ExceededMaxRedeem\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"assets\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"max\",\"type\":\"uint256\"}],\"name\":\"ERC4626ExceededMaxWithdraw\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"FailedCall\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"InvalidInitialization\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"InvalidQueue\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"uint8\",\"name\":\"index\",\"type\":\"uint8\"}],\"name\":\"InvalidQueueIndexDuplicated\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"InvalidQueueLength\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"InvalidStrategiesLength\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"InvalidStrategy\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"InvalidStrategyAsset\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"uint8\",\"name\":\"index\",\"type\":\"uint8\"}],\"name\":\"InvalidStrategyInDepositQueue\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"uint8\",\"name\":\"index\",\"type\":\"uint8\"}],\"name\":\"InvalidStrategyInWithdrawQueue\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"NotInitializing\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"OnlyStrategyStorageExposed\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"max\",\"type\":\"uint256\"}],\"name\":\"RebalanceAmountExceedsMaxDeposit\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"max\",\"type\":\"uint256\"}],\"name\":\"RebalanceAmountExceedsMaxWithdraw\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"token\",\"type\":\"address\"}],\"name\":\"SafeERC20FailedOperation\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"UUPSUnauthorizedCallContext\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"slot\",\"type\":\"bytes32\"}],\"name\":\"UUPSUnsupportedProxiableUUID\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"WithdrawError\",\"type\":\"error\"},{\"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\":\"sender\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"assets\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"shares\",\"type\":\"uint256\"}],\"name\":\"Deposit\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"bytes\",\"name\":\"reason\",\"type\":\"bytes\"}],\"name\":\"DepositFailed\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"bytes\",\"name\":\"reason\",\"type\":\"bytes\"}],\"name\":\"DepositFailed\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"uint8[]\",\"name\":\"queue\",\"type\":\"uint8[]\"}],\"name\":\"DepositQueueChanged\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"bytes\",\"name\":\"reason\",\"type\":\"bytes\"}],\"name\":\"DisconnectFailed\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"bytes\",\"name\":\"reason\",\"type\":\"bytes\"}],\"name\":\"DisconnectFailed\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"uint64\",\"name\":\"version\",\"type\":\"uint64\"}],\"name\":\"Initialized\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"contract IInvestStrategy\",\"name\":\"strategyFrom\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"contract IInvestStrategy\",\"name\":\"strategyTo\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"}],\"name\":\"Rebalance\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"contract IInvestStrategy\",\"name\":\"strategy\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint8\",\"name\":\"index\",\"type\":\"uint8\"}],\"name\":\"StrategyAdded\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"contract IInvestStrategy\",\"name\":\"oldStrategy\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"contract IInvestStrategy\",\"name\":\"newStrategy\",\"type\":\"address\"}],\"name\":\"StrategyChanged\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"contract IInvestStrategy\",\"name\":\"oldStrategy\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"contract IInvestStrategy\",\"name\":\"newStrategy\",\"type\":\"address\"}],\"name\":\"StrategyChanged\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"contract IInvestStrategy\",\"name\":\"strategy\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint8\",\"name\":\"index\",\"type\":\"uint8\"}],\"name\":\"StrategyRemoved\",\"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\":\"implementation\",\"type\":\"address\"}],\"name\":\"Upgraded\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"sender\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"receiver\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"assets\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"shares\",\"type\":\"uint256\"}],\"name\":\"Withdraw\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"bytes\",\"name\":\"reason\",\"type\":\"bytes\"}],\"name\":\"WithdrawFailed\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"bytes\",\"name\":\"reason\",\"type\":\"bytes\"}],\"name\":\"WithdrawFailed\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"uint8[]\",\"name\":\"queue\",\"type\":\"uint8[]\"}],\"name\":\"WithdrawQueueChanged\",\"type\":\"event\"},{\"inputs\":[],\"name\":\"MAX_STRATEGIES\",\"outputs\":[{\"internalType\":\"uint8\",\"name\":\"\",\"type\":\"uint8\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"UPGRADE_INTERFACE_VERSION\",\"outputs\":[{\"internalType\":\"string\",\"name\":\"\",\"type\":\"string\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"contract IInvestStrategy\",\"name\":\"newStrategy\",\"type\":\"address\"},{\"internalType\":\"bytes\",\"name\":\"initStrategyData\",\"type\":\"bytes\"}],\"name\":\"addStrategy\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"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\":\"value\",\"type\":\"uint256\"}],\"name\":\"approve\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"asset\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"}],\"name\":\"balanceOf\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint8[]\",\"name\":\"newDepositQueue_\",\"type\":\"uint8[]\"}],\"name\":\"changeDepositQueue\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint8[]\",\"name\":\"newWithdrawQueue_\",\"type\":\"uint8[]\"}],\"name\":\"changeWithdrawQueue\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"shares\",\"type\":\"uint256\"}],\"name\":\"convertToAssets\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"assets\",\"type\":\"uint256\"}],\"name\":\"convertToShares\",\"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\":\"assets\",\"type\":\"uint256\"},{\"internalType\":\"address\",\"name\":\"receiver\",\"type\":\"address\"}],\"name\":\"deposit\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"depositQueue\",\"outputs\":[{\"internalType\":\"uint8[32]\",\"name\":\"\",\"type\":\"uint8[32]\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"assets\",\"type\":\"uint256\"}],\"name\":\"depositToStrategies\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint8\",\"name\":\"strategyIndex\",\"type\":\"uint8\"},{\"internalType\":\"uint8\",\"name\":\"method\",\"type\":\"uint8\"},{\"internalType\":\"bytes\",\"name\":\"extraData\",\"type\":\"bytes\"}],\"name\":\"forwardToStrategy\",\"outputs\":[{\"internalType\":\"bytes\",\"name\":\"\",\"type\":\"bytes\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"slot\",\"type\":\"bytes32\"}],\"name\":\"getBytesSlot\",\"outputs\":[{\"internalType\":\"bytes\",\"name\":\"\",\"type\":\"bytes\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint8\",\"name\":\"strategyIndex\",\"type\":\"uint8\"},{\"internalType\":\"uint8\",\"name\":\"method\",\"type\":\"uint8\"}],\"name\":\"getForwardToStrategySelector\",\"outputs\":[{\"internalType\":\"bytes4\",\"name\":\"selector\",\"type\":\"bytes4\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"string\",\"name\":\"name_\",\"type\":\"string\"},{\"internalType\":\"string\",\"name\":\"symbol_\",\"type\":\"string\"},{\"internalType\":\"contract IERC20\",\"name\":\"asset_\",\"type\":\"address\"},{\"internalType\":\"contract IInvestStrategy[]\",\"name\":\"strategies_\",\"type\":\"address[]\"},{\"internalType\":\"bytes[]\",\"name\":\"initStrategyDatas\",\"type\":\"bytes[]\"},{\"internalType\":\"uint8[]\",\"name\":\"depositQueue_\",\"type\":\"uint8[]\"},{\"internalType\":\"uint8[]\",\"name\":\"withdrawQueue_\",\"type\":\"uint8[]\"}],\"name\":\"initialize\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"name\":\"maxDeposit\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"ret\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"name\":\"maxMint\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"}],\"name\":\"maxRedeem\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"}],\"name\":\"maxWithdraw\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"shares\",\"type\":\"uint256\"},{\"internalType\":\"address\",\"name\":\"receiver\",\"type\":\"address\"}],\"name\":\"mint\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"name\",\"outputs\":[{\"internalType\":\"string\",\"name\":\"\",\"type\":\"string\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"assets\",\"type\":\"uint256\"}],\"name\":\"previewDeposit\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"shares\",\"type\":\"uint256\"}],\"name\":\"previewMint\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"shares\",\"type\":\"uint256\"}],\"name\":\"previewRedeem\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"assets\",\"type\":\"uint256\"}],\"name\":\"previewWithdraw\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"proxiableUUID\",\"outputs\":[{\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint8\",\"name\":\"strategyFromIdx\",\"type\":\"uint8\"},{\"internalType\":\"uint8\",\"name\":\"strategyToIdx\",\"type\":\"uint8\"},{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"}],\"name\":\"rebalance\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"shares\",\"type\":\"uint256\"},{\"internalType\":\"address\",\"name\":\"receiver\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"}],\"name\":\"redeem\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint8\",\"name\":\"strategyIndex\",\"type\":\"uint8\"},{\"internalType\":\"bool\",\"name\":\"force\",\"type\":\"bool\"}],\"name\":\"removeStrategy\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint8\",\"name\":\"strategyIndex\",\"type\":\"uint8\"},{\"internalType\":\"contract IInvestStrategy\",\"name\":\"newStrategy\",\"type\":\"address\"},{\"internalType\":\"bytes\",\"name\":\"initStrategyData\",\"type\":\"bytes\"},{\"internalType\":\"bool\",\"name\":\"force\",\"type\":\"bool\"}],\"name\":\"replaceStrategy\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"strategies\",\"outputs\":[{\"internalType\":\"contract IInvestStrategy[32]\",\"name\":\"\",\"type\":\"address[32]\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"symbol\",\"outputs\":[{\"internalType\":\"string\",\"name\":\"\",\"type\":\"string\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"totalAssets\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"assets\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"totalSupply\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"value\",\"type\":\"uint256\"}],\"name\":\"transfer\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"from\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"value\",\"type\":\"uint256\"}],\"name\":\"transferFrom\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"newImplementation\",\"type\":\"address\"},{\"internalType\":\"bytes\",\"name\":\"data\",\"type\":\"bytes\"}],\"name\":\"upgradeToAndCall\",\"outputs\":[],\"stateMutability\":\"payable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"assets\",\"type\":\"uint256\"},{\"internalType\":\"address\",\"name\":\"receiver\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"}],\"name\":\"withdraw\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"withdrawQueue\",\"outputs\":[{\"internalType\":\"uint8[32]\",\"name\":\"\",\"type\":\"uint8[32]\"}],\"stateMutability\":\"view\",\"type\":\"function\"}],\"devdoc\":{\"author\":\"Ensuro\",\"custom:security-contact\":\"security@ensuro.co\",\"details\":\"Vault that invests/deinvests using pluggable IInvestStrategy contracts on each deposit/withdraw.      The vault MUST be deployed behind an AccessManagedProxy that controls the access to the critical methods      Since this contract DOESN'T DO ANY ACCESS CONTROL.      The code of the IInvestStrategy is called using delegatecall, so it has full control over the assets and      storage of this contract, so you must be very careful the kind of IInvestStrategy is plugged.\",\"errors\":{\"AddressEmptyCode(address)\":[{\"details\":\"There's no code at `target` (it is not a contract).\"}],\"ERC1967InvalidImplementation(address)\":[{\"details\":\"The `implementation` of the proxy is invalid.\"}],\"ERC1967NonPayable()\":[{\"details\":\"An upgrade function sees `msg.value > 0` that may be lost.\"}],\"ERC20InsufficientAllowance(address,uint256,uint256)\":[{\"details\":\"Indicates a failure with the `spender`\\u2019s `allowance`. Used in transfers.\",\"params\":{\"allowance\":\"Amount of tokens a `spender` is allowed to operate with.\",\"needed\":\"Minimum amount required to perform a transfer.\",\"spender\":\"Address that may be allowed to operate on tokens without being their owner.\"}}],\"ERC20InsufficientBalance(address,uint256,uint256)\":[{\"details\":\"Indicates an error related to the current `balance` of a `sender`. Used in transfers.\",\"params\":{\"balance\":\"Current balance for the interacting account.\",\"needed\":\"Minimum amount required to perform a transfer.\",\"sender\":\"Address whose tokens are being transferred.\"}}],\"ERC20InvalidApprover(address)\":[{\"details\":\"Indicates a failure with the `approver` of a token to be approved. Used in approvals.\",\"params\":{\"approver\":\"Address initiating an approval operation.\"}}],\"ERC20InvalidReceiver(address)\":[{\"details\":\"Indicates a failure with the token `receiver`. Used in transfers.\",\"params\":{\"receiver\":\"Address to which tokens are being transferred.\"}}],\"ERC20InvalidSender(address)\":[{\"details\":\"Indicates a failure with the token `sender`. Used in transfers.\",\"params\":{\"sender\":\"Address whose tokens are being transferred.\"}}],\"ERC20InvalidSpender(address)\":[{\"details\":\"Indicates a failure with the `spender` to be approved. Used in approvals.\",\"params\":{\"spender\":\"Address that may be allowed to operate on tokens without being their owner.\"}}],\"ERC4626ExceededMaxDeposit(address,uint256,uint256)\":[{\"details\":\"Attempted to deposit more assets than the max amount for `receiver`.\"}],\"ERC4626ExceededMaxMint(address,uint256,uint256)\":[{\"details\":\"Attempted to mint more shares than the max amount for `receiver`.\"}],\"ERC4626ExceededMaxRedeem(address,uint256,uint256)\":[{\"details\":\"Attempted to redeem more shares than the max amount for `receiver`.\"}],\"ERC4626ExceededMaxWithdraw(address,uint256,uint256)\":[{\"details\":\"Attempted to withdraw more assets than the max amount for `receiver`.\"}],\"FailedCall()\":[{\"details\":\"A call to an address target failed. The target may have reverted.\"}],\"InvalidInitialization()\":[{\"details\":\"The contract is already initialized.\"}],\"NotInitializing()\":[{\"details\":\"The contract is not initializing.\"}],\"SafeERC20FailedOperation(address)\":[{\"details\":\"An operation with an ERC-20 token failed.\"}],\"UUPSUnauthorizedCallContext()\":[{\"details\":\"The call is from an unauthorized context.\"}],\"UUPSUnsupportedProxiableUUID(bytes32)\":[{\"details\":\"The storage `slot` is unsupported as a UUID.\"}]},\"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.\"},\"Initialized(uint64)\":{\"details\":\"Triggered when the contract has been initialized or reinitialized.\"},\"Transfer(address,address,uint256)\":{\"details\":\"Emitted when `value` tokens are moved from one account (`from`) to another (`to`). Note that `value` may be zero.\"},\"Upgraded(address)\":{\"details\":\"Emitted when the implementation is upgraded.\"}},\"kind\":\"dev\",\"methods\":{\"addStrategy(address,bytes)\":{\"details\":\"Adds a new strategy to the vault. The new strategy will be added at the end of the deposit and withdraw      queues.\",\"params\":{\"initStrategyData\":\"Initialization parameters for this new strategy\",\"newStrategy\":\"The new strategy to plug into the vault\"}},\"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\":\"See {IERC20-approve}. NOTE: If `value` is the maximum `uint256`, the allowance is not updated on `transferFrom`. This is semantically equivalent to an infinite approval. Requirements: - `spender` cannot be the zero address.\"},\"asset()\":{\"details\":\"Returns the address of the underlying token used for the Vault for accounting, depositing, and withdrawing. - MUST be an ERC-20 token contract. - MUST NOT revert.\"},\"balanceOf(address)\":{\"details\":\"Returns the value of tokens owned by `account`.\"},\"changeDepositQueue(uint8[])\":{\"details\":\"Updates the deposit queue with a new one.\",\"params\":{\"newDepositQueue_\":\"New deposit queue, the lenght must be the same of the installed strategies without                         repeated indexes\"}},\"changeWithdrawQueue(uint8[])\":{\"details\":\"Updates the withdraw queue with a new one.\",\"params\":{\"newWithdrawQueue_\":\"New withdrawal queue, the lenght must be the same of the installed strategies without                          repeated indexes\"}},\"constructor\":{\"custom:oz-upgrades-unsafe-allow\":\"constructor\"},\"convertToAssets(uint256)\":{\"details\":\"Returns the amount of assets that the Vault would exchange for the amount of shares provided, in an ideal scenario where all the conditions are met. - MUST NOT be inclusive of any fees that are charged against assets in the Vault. - MUST NOT show any variations depending on the caller. - MUST NOT reflect slippage or other on-chain conditions, when performing the actual exchange. - MUST NOT revert. NOTE: This calculation MAY NOT reflect the \\u201cper-user\\u201d price-per-share, and instead should reflect the \\u201caverage-user\\u2019s\\u201d price-per-share, meaning what the average user should expect to see when exchanging to and from.\"},\"convertToShares(uint256)\":{\"details\":\"Returns the amount of shares that the Vault would exchange for the amount of assets provided, in an ideal scenario where all the conditions are met. - MUST NOT be inclusive of any fees that are charged against assets in the Vault. - MUST NOT show any variations depending on the caller. - MUST NOT reflect slippage or other on-chain conditions, when performing the actual exchange. - MUST NOT revert. NOTE: This calculation MAY NOT reflect the \\u201cper-user\\u201d price-per-share, and instead should reflect the \\u201caverage-user\\u2019s\\u201d price-per-share, meaning what the average user should expect to see when exchanging to and from.\"},\"decimals()\":{\"details\":\"Decimals are computed by adding the decimal offset on top of the underlying asset's decimals. This \\\"original\\\" value is cached during construction of the vault contract. If this read operation fails (e.g., the asset has not been created yet), a default of 18 is used to represent the underlying asset's decimals. See {IERC20Metadata-decimals}.\"},\"deposit(uint256,address)\":{\"details\":\"Deposit `assets` underlying tokens and send the corresponding number of vault shares (`shares`) to `receiver`. - MUST emit the Deposit event. - MAY support an additional flow in which the underlying tokens are owned by the Vault contract before the   deposit execution, and are accounted for during deposit. - MUST revert if all of assets cannot be deposited (due to deposit limit being reached, slippage, the user not   approving enough underlying tokens to the Vault contract, etc). NOTE: most implementations will require pre-approval of the Vault with the Vault\\u2019s underlying asset token.\"},\"depositQueue()\":{\"details\":\"Returns the order in which the deposits will be made, expressed as index+1 in the _strategies array,      filled with zeros at the end\"},\"depositToStrategies(uint256)\":{\"details\":\"Deposit assets to the strategies in the deposit queue order until zero assets remains to be deposited.      After finishing the deposit, left must be zero, otherwise reverts, and should never happen.      This method might be used by the some strategies to reinject rewards. Left as virtual so child classes      can implement somekind of access control.\",\"params\":{\"assets\":\"The amount of assets to be deposited to the strategies.\"}},\"forwardToStrategy(uint8,uint8,bytes)\":{\"details\":\"Used to call specific methods on the strategies. The specific vault implementation will define the access      control mechanism to validate who can execute these calls.\",\"params\":{\"extraData\":\"Additional parameters sent to the method.\",\"method\":\"Id of the method to call. Is recommended that the strategy defines an enum with the methods that               can be called externally and validates this value.\",\"strategyIndex\":\"The index of the strategy in the _strategies array\"},\"returns\":{\"_0\":\"Returns the output received from the IInvestStrategy.\"}},\"getBytesSlot(bytes32)\":{\"details\":\"Exposes a given slot as a bytes array. To be used by the IInvestStrategy views to access their storage.      Only the slot==strategyStorageSlot() can be accessed.\"},\"getForwardToStrategySelector(uint8,uint8)\":{\"details\":\"Returns the selector used to define the role required to call forwardToStrategy on a given strategy and      method\",\"params\":{\"method\":\"Id of the method to call. Is recommended that the strategy defines an enum with the methods that               can be called externally and validates this value.\",\"strategyIndex\":\"The index of the strategy in the _strategies array\"},\"returns\":{\"selector\":\"The bytes4 selector required to execute the call (will be used with target=address(this))\"}},\"initialize(string,string,address,address[],bytes[],uint8[],uint8[])\":{\"details\":\"Initializes the SingleStrategyERC4626\",\"params\":{\"asset_\":\"The asset() of the ERC4626\",\"depositQueue_\":\"The order in which the funds will be deposited in the strategies\",\"initStrategyDatas\":\"Initialization data that will be sent to the strategies\",\"name_\":\"Name of the ERC20/ERC4626 token\",\"strategies_\":\"The IInvestStrategys that will be used to manage the funds received.\",\"symbol_\":\"Symbol of the ERC20/ERC4626 token\",\"withdrawQueue_\":\"The order in which the funds will be withdrawn from the strategies\"}},\"maxDeposit(address)\":{\"details\":\"Returns the maximum amount of the underlying asset that can be deposited into the Vault for the receiver, through a deposit call. - MUST return a limited value if receiver is subject to some deposit limit. - MUST return 2 ** 256 - 1 if there is no limit on the maximum amount of assets that may be deposited. - MUST NOT revert.\"},\"maxMint(address)\":{\"details\":\"Returns the maximum amount of the Vault shares that can be minted for the receiver, through a mint call. - MUST return a limited value if receiver is subject to some mint limit. - MUST return 2 ** 256 - 1 if there is no limit on the maximum amount of shares that may be minted. - MUST NOT revert.\"},\"maxRedeem(address)\":{\"details\":\"Returns the maximum amount of Vault shares that can be redeemed from the owner balance in the Vault, through a redeem call. - MUST return a limited value if owner is subject to some withdrawal limit or timelock. - MUST return balanceOf(owner) if owner is not subject to any withdrawal limit or timelock. - MUST NOT revert.\"},\"maxWithdraw(address)\":{\"details\":\"Returns the maximum amount of the underlying asset that can be withdrawn from the owner balance in the Vault, through a withdraw call. - MUST return a limited value if owner is subject to some withdrawal limit or timelock. - MUST NOT revert.\"},\"mint(uint256,address)\":{\"details\":\"Mints exactly `shares` vault shares to `receiver` in exchange for `assets` underlying tokens. - MUST emit the Deposit event. - MAY support an additional flow in which the underlying tokens are owned by the Vault contract before the mint   execution, and are accounted for during mint. - MUST revert if all of shares cannot be minted (due to deposit limit being reached, slippage, the user not   approving enough underlying tokens to the Vault contract, etc). NOTE: most implementations will require pre-approval of the Vault with the Vault\\u2019s underlying asset token.\"},\"name()\":{\"details\":\"Returns the name of the token.\"},\"previewDeposit(uint256)\":{\"details\":\"Allows an on-chain or off-chain user to simulate the effects of their deposit at the current block, given current on-chain conditions. - MUST return as close to and no more than the exact amount of Vault shares that would be minted in a deposit   call in the same transaction. I.e. deposit should return the same or more shares as previewDeposit if called   in the same transaction. - MUST NOT account for deposit limits like those returned from maxDeposit and should always act as though the   deposit would be accepted, regardless if the user has enough tokens approved, etc. - MUST be inclusive of deposit fees. Integrators should be aware of the existence of deposit fees. - MUST NOT revert. NOTE: any unfavorable discrepancy between convertToShares and previewDeposit SHOULD be considered slippage in share price or some other type of condition, meaning the depositor will lose assets by depositing.\"},\"previewMint(uint256)\":{\"details\":\"Allows an on-chain or off-chain user to simulate the effects of their mint at the current block, given current on-chain conditions. - MUST return as close to and no fewer than the exact amount of assets that would be deposited in a mint call   in the same transaction. I.e. mint should return the same or fewer assets as previewMint if called in the   same transaction. - MUST NOT account for mint limits like those returned from maxMint and should always act as though the mint   would be accepted, regardless if the user has enough tokens approved, etc. - MUST be inclusive of deposit fees. Integrators should be aware of the existence of deposit fees. - MUST NOT revert. NOTE: any unfavorable discrepancy between convertToAssets and previewMint SHOULD be considered slippage in share price or some other type of condition, meaning the depositor will lose assets by minting.\"},\"previewRedeem(uint256)\":{\"details\":\"Allows an on-chain or off-chain user to simulate the effects of their redemption at the current block, given current on-chain conditions. - MUST return as close to and no more than the exact amount of assets that would be withdrawn in a redeem call   in the same transaction. I.e. redeem should return the same or more assets as previewRedeem if called in the   same transaction. - MUST NOT account for redemption limits like those returned from maxRedeem and should always act as though the   redemption would be accepted, regardless if the user has enough shares, etc. - MUST be inclusive of withdrawal fees. Integrators should be aware of the existence of withdrawal fees. - MUST NOT revert. NOTE: any unfavorable discrepancy between convertToAssets and previewRedeem SHOULD be considered slippage in share price or some other type of condition, meaning the depositor will lose assets by redeeming.\"},\"previewWithdraw(uint256)\":{\"details\":\"Allows an on-chain or off-chain user to simulate the effects of their withdrawal at the current block, given current on-chain conditions. - MUST return as close to and no fewer than the exact amount of Vault shares that would be burned in a withdraw   call in the same transaction. I.e. withdraw should return the same or fewer shares as previewWithdraw if   called   in the same transaction. - MUST NOT account for withdrawal limits like those returned from maxWithdraw and should always act as though   the withdrawal would be accepted, regardless if the user has enough shares, etc. - MUST be inclusive of withdrawal fees. Integrators should be aware of the existence of withdrawal fees. - MUST NOT revert. NOTE: any unfavorable discrepancy between convertToShares and previewWithdraw SHOULD be considered slippage in share price or some other type of condition, meaning the depositor will lose assets by depositing.\"},\"proxiableUUID()\":{\"details\":\"Implementation of the ERC-1822 {proxiableUUID} function. This returns the storage slot used by the implementation. It is used to validate the implementation's compatibility when performing an upgrade. IMPORTANT: A proxy pointing at a proxiable contract should not be considered proxiable itself, because this risks bricking a proxy that upgrades to it, by delegating to itself until out of gas. Thus it is critical that this function revert if invoked through a proxy. This is guaranteed by the `notDelegated` modifier.\"},\"rebalance(uint8,uint8,uint256)\":{\"details\":\"Moves funds from one strategy to another.\",\"params\":{\"amount\":\"The amount to transfer from one strategy to the other. type(uint256).max to move all the assets.\",\"strategyFromIdx\":\"The index of the strategy that will provide the funds in the _strategies array\",\"strategyToIdx\":\"The index of the strategy that will receive the funds in the _strategies array\"}},\"redeem(uint256,address,address)\":{\"details\":\"Burns exactly shares from owner and sends assets of underlying tokens to receiver. - MUST emit the Withdraw event. - MAY support an additional flow in which the underlying tokens are owned by the Vault contract before the   redeem execution, and are accounted for during redeem. - MUST revert if all of shares cannot be redeemed (due to withdrawal limit being reached, slippage, the owner   not having enough shares, etc). NOTE: some implementations will require pre-requesting to the Vault before a withdrawal may be performed. Those methods should be performed separately.\"},\"removeStrategy(uint8,bool)\":{\"details\":\"Remove an strategy from the vault. It's only possible if the strategy doesn't have assets.      The strategy is removed from deposit and withdraw queues\",\"params\":{\"force\":\"If strategy.disconnect fails, this parameter indicates whether the operation is reverted or not.\",\"strategyIndex\":\"The index of the strategy in the _strategies array\"}},\"replaceStrategy(uint8,address,bytes,bool)\":{\"details\":\"Changes one investment strategy to a new one, keeping the deposit and withdraw queues unaffected.      When this happens, all funds are withdrawn from the old strategy and deposited on the new one.      This reverts if any of this fails, unless the force parameter is true, in that case errors in withdrawal      or deposit are silented.\",\"params\":{\"force\":\"Boolean to indicate if errors on withdraw or deposit should be accepted. Normally you should send              this value in `false`. Only use `true` if you know what you are doing and trying to replace a faulty              strategy.\",\"initStrategyData\":\"Initialization parameters for this new strategy\",\"newStrategy\":\"The new strategy to plug into the vault\",\"strategyIndex\":\"The index of the strategy in the _strategies array\"}},\"strategies()\":{\"details\":\"Returns the list of strategies in the vault in order.      The array is filled with zero addresses after the first one that is address(0).\"},\"symbol()\":{\"details\":\"Returns the symbol of the token, usually a shorter version of the name.\"},\"totalAssets()\":{\"details\":\"Returns the total amount of the underlying asset that is \\u201cmanaged\\u201d by Vault. - SHOULD include any compounding that occurs from yield. - MUST be inclusive of any fees that are charged against assets in the Vault. - MUST NOT revert.\"},\"totalSupply()\":{\"details\":\"Returns the value of tokens in existence.\"},\"transfer(address,uint256)\":{\"details\":\"See {IERC20-transfer}. Requirements: - `to` cannot be the zero address. - the caller must have a balance of at least `value`.\"},\"transferFrom(address,address,uint256)\":{\"details\":\"See {IERC20-transferFrom}. Skips emitting an {Approval} event indicating an allowance update. This is not required by the ERC. See {xref-ERC20-_approve-address-address-uint256-bool-}[_approve]. NOTE: Does not update the allowance if the current allowance is the maximum `uint256`. Requirements: - `from` and `to` cannot be the zero address. - `from` must have a balance of at least `value`. - the caller must have allowance for ``from``'s tokens of at least `value`.\"},\"upgradeToAndCall(address,bytes)\":{\"custom:oz-upgrades-unsafe-allow-reachable\":\"delegatecall\",\"details\":\"Upgrade the implementation of the proxy to `newImplementation`, and subsequently execute the function call encoded in `data`. Calls {_authorizeUpgrade}. Emits an {Upgraded} event.\"},\"withdraw(uint256,address,address)\":{\"details\":\"Burns shares from owner and sends exactly assets of underlying tokens to receiver. - MUST emit the Withdraw event. - MAY support an additional flow in which the underlying tokens are owned by the Vault contract before the   withdraw execution, and are accounted for during withdraw. - MUST revert if all of assets cannot be withdrawn (due to withdrawal limit being reached, slippage, the owner   not having enough shares, etc). Note that some implementations will require pre-requesting to the Vault before a withdrawal may be performed. Those methods should be performed separately.\"},\"withdrawQueue()\":{\"details\":\"Returns the order in which the withdraws will be made, expressed as index+1 in the _strategies array,      filled with zeros at the end\"}},\"title\":\"AccessManagedMSV\",\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{\"changeDepositQueue(uint8[])\":{\"notice\":\"Emits DepositQueueChanged(uint8[]) when updating the deposit queue.\"},\"changeWithdrawQueue(uint8[])\":{\"notice\":\"Emits WithdrawQueueChanged(uint8[]) when updating the deposit queue.\"},\"rebalance(uint8,uint8,uint256)\":{\"notice\":\"Emits {Rebalance(strategyFrom, strategyTo, amount)}\"}},\"version\":1}},\"settings\":{\"compilationTarget\":{\"contracts/AccessManagedMSV.sol\":\"AccessManagedMSV\"},\"evmVersion\":\"prague\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"enabled\":true,\"runs\":200},\"remappings\":[]},\"sources\":{\"@ensuro/access-managed-proxy/contracts/AMPUtils.sol\":{\"keccak256\":\"0x3f25097d759aa89ce9a7a94f98b854a3dc23c51f7f895b95a8d489e74d5f1d98\",\"license\":\"Apache-2.0\",\"urls\":[\"bzz-raw://2912cf8c79b973d07fbb741e7d1048026f0a71489df2adf97552b83b23b427d7\",\"dweb:/ipfs/QmRTfFaqy72p4RfY99hKM1K9wH5kxaTnikH5VJjpL7K7sD\"]},\"@ensuro/access-managed-proxy/contracts/AccessManagedProxy.sol\":{\"keccak256\":\"0x0d3a66feed9000ccbc8a8e6c597b7fe4659f56b5a4dfa2ab1eea314171ae9745\",\"license\":\"Apache-2.0\",\"urls\":[\"bzz-raw://fa3f292954915546ce72159da1dbcd44b8cdc19ea0b5b3fc6dbb47070451583c\",\"dweb:/ipfs/QmeL7krtsKLpuS9hy5w6eRoRsXU874XtgNWutUavxRKzmA\"]},\"@ensuro/access-managed-proxy/contracts/AccessManagedProxyBase.sol\":{\"keccak256\":\"0xe84ff4706a5ae4c03f011343dfb73ce8b731e1eb2287d25018a449b3e802092e\",\"license\":\"Apache-2.0\",\"urls\":[\"bzz-raw://53202b0391daa08f69fda5c471f957f9811dba1d2033e5e3e3a7a78c1d05eb39\",\"dweb:/ipfs/QmabycaktcAsVJFEdf7F4Lk1WsAz9qesqQARLwjYvM722m\"]},\"@ensuro/access-managed-proxy/contracts/interfaces/IAccessManagedProxy.sol\":{\"keccak256\":\"0xdd762bad2f6ad362f5a38fb333d2a953f6c9d0beea122dbaef0e333a7b83a054\",\"license\":\"Apache-2.0\",\"urls\":[\"bzz-raw://a2bb86de08187cee5956393ca2cf096a09eb6ac694471e436ca12e377d97cb40\",\"dweb:/ipfs/Qmf6cNjug4swjsvTJYjbzhMMfAfSFdUuyJjkEf3b1cu2hn\"]},\"@openzeppelin/contracts-upgradeable/proxy/utils/UUPSUpgradeable.sol\":{\"keccak256\":\"0x4918e374e9ce84e9b196486bafbd46851d5e72ab315e31f0b1d7c443dcfea5bf\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://2ced247afc54a93a13922ebbd63add61130abe483ab5b5b78e7e991d564d150e\",\"dweb:/ipfs/QmTfxjcTgfekiguegjvYMyfqhyRNffui17f8xi86BCZNVt\"]},\"@openzeppelin/contracts-upgradeable/token/ERC20/ERC20Upgradeable.sol\":{\"keccak256\":\"0xd518def45c722a6e803e1e26e625db25e01497f672ca566cca585d234ec903b0\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://6e7de3fccd96783244790cde282435ce0fd3a44ab4ccb10f17005c743202882f\",\"dweb:/ipfs/QmYSepstTqs5UPJvjeJXkWU5R659yReqrSgSGGh65hkbdK\"]},\"@openzeppelin/contracts-upgradeable/token/ERC20/extensions/ERC4626Upgradeable.sol\":{\"keccak256\":\"0x9a451617fef51e7faef5f46de537f9aaca837d470750cfbd7b8a733341dc3951\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://1cdebfebb9bbfe1558d15eab9cf8bd1bd5ad8bb934f6a3d9ea8ef022603c1d59\",\"dweb:/ipfs/QmT83ko5MwSdEJsHz8cQbQGBDyM1q9PvzGm9RFmXfWXMgA\"]},\"@openzeppelin/contracts-upgradeable/utils/ContextUpgradeable.sol\":{\"keccak256\":\"0xad316bdc3ee64a0e29773256245045dc57b92660799ff14f668f7c0da9456a9d\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://66463434d266816fca2a3a2734ceee88544e61b7cc3899c50333b46e8e771455\",\"dweb:/ipfs/QmPYCzHjki1HQLvBub3uUqoUKGrwdgR3xP9Zpya14YTdXS\"]},\"@openzeppelin/contracts/access/manager/IAccessManager.sol\":{\"keccak256\":\"0x71e3e350e83af0018a1683cc2ce4c13893cc01f78e5c9c305f6828608ffcfa18\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://0a7b521c9999007715c9bdedffaad2ef7d2ccfa07bca2a39ba9e0c2e8a944a63\",\"dweb:/ipfs/QmamPG6Y1p7iZh4cF8Hfp3oufowSRyB3S3DisTKkmVWSai\"]},\"@openzeppelin/contracts/interfaces/IERC1363.sol\":{\"keccak256\":\"0xd5ea07362ab630a6a3dee4285a74cf2377044ca2e4be472755ad64d7c5d4b69d\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://da5e832b40fc5c3145d3781e2e5fa60ac2052c9d08af7e300dc8ab80c4343100\",\"dweb:/ipfs/QmTzf7N5ZUdh5raqtzbM11yexiUoLC9z3Ws632MCuycq1d\"]},\"@openzeppelin/contracts/interfaces/IERC165.sol\":{\"keccak256\":\"0x0afcb7e740d1537b252cb2676f600465ce6938398569f09ba1b9ca240dde2dfc\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://1c299900ac4ec268d4570ecef0d697a3013cd11a6eb74e295ee3fbc945056037\",\"dweb:/ipfs/Qmab9owJoxcA7vJT5XNayCMaUR1qxqj1NDzzisduwaJMcZ\"]},\"@openzeppelin/contracts/interfaces/IERC1967.sol\":{\"keccak256\":\"0xbf2aefe54b76d7f7bcd4f6da1080b7b1662611937d870b880db584d09cea56b5\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://f5e7e2f12e0feec75296e57f51f82fdaa8bd1551f4b8cc6560442c0bf60f818c\",\"dweb:/ipfs/QmcW9wDMaQ8RbQibMarfp17a3bABzY5KraWe2YDwuUrUoz\"]},\"@openzeppelin/contracts/interfaces/IERC20.sol\":{\"keccak256\":\"0x1a6221315ce0307746c2c4827c125d821ee796c74a676787762f4778671d4f44\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://1bb2332a7ee26dd0b0de9b7fe266749f54820c99ab6a3bcb6f7e6b751d47ee2d\",\"dweb:/ipfs/QmcRWpaBeCYkhy68PR3B4AgD7asuQk7PwkWxrvJbZcikLF\"]},\"@openzeppelin/contracts/interfaces/IERC4626.sol\":{\"keccak256\":\"0xece5cbf726293ae6be1fbfade2936f052e1b399ed395ba1e221540ab82b62628\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://a9b97e58e90799e681dccbd4a8e469c6ebc2baf11312ad08f14332646123dd4b\",\"dweb:/ipfs/QmdamCQfxcuYinSNd3Et7VNo3oY98XSv4XCUQyq9xfMNUy\"]},\"@openzeppelin/contracts/interfaces/draft-IERC1822.sol\":{\"keccak256\":\"0x82f757819bf2429a0d4db141b99a4bbe5039e4ef86dfb94e2e6d40577ed5b28b\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://37c30ed931e19fb71fdb806bb504cfdb9913b7127545001b64d4487783374422\",\"dweb:/ipfs/QmUBHpv4hm3ZmwJ4GH8BeVzK4mv41Q6vBbWXxn8HExPXza\"]},\"@openzeppelin/contracts/interfaces/draft-IERC6093.sol\":{\"keccak256\":\"0x1b88b3fb3d85ba5496d7d5f396f83ee1fddcdd6762059ff65992655b67920998\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://89393bb3212da1c0889601b9706a07b39419ddc4d2faab9eaf6e7f9152cf6a1c\",\"dweb:/ipfs/QmcCfzzxv1Bkdz1c1yF4gQCeYb6Us5BJANnzTFqawfd1HL\"]},\"@openzeppelin/contracts/proxy/ERC1967/ERC1967Proxy.sol\":{\"keccak256\":\"0xa3066ff86b94128a9d3956a63a0511fa1aae41bd455772ab587b32ff322acb2e\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://bf7b192fd82acf6187970c80548f624b1b9c80425b62fa49e7fdb538a52de049\",\"dweb:/ipfs/QmWXG1YCde1tqDYTbNwjkZDWVgPEjzaQGSDqWkyKLzaNua\"]},\"@openzeppelin/contracts/proxy/ERC1967/ERC1967Utils.sol\":{\"keccak256\":\"0xa1ad192cd45317c788618bef5cb1fb3ca4ce8b230f6433ac68cc1d850fb81618\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://b43447bb85a53679d269a403c693b9d88d6c74177dfb35eddca63abaf7cf110a\",\"dweb:/ipfs/QmXSDmpd4bNZj1PDgegr6C4w1jDaWHXCconC3rYiw9TSkQ\"]},\"@openzeppelin/contracts/proxy/Proxy.sol\":{\"keccak256\":\"0x80935e4fae2c414f4e7789e13a820d06901182a5733ab006f8d68b5b09db993f\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://752d991d6ca1087587b48103bc623f74888054f58581ff29166d90889c4765c5\",\"dweb:/ipfs/QmRBsa6K2ChKxVWYY54YiyYhDBPbmY5HyKCtij5LoWh56o\"]},\"@openzeppelin/contracts/proxy/beacon/IBeacon.sol\":{\"keccak256\":\"0x20462ddb2665e9521372c76b001d0ce196e59dbbd989de9af5576cad0bd5628b\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://f417fd12aeec8fbfaceaa30e3a08a0724c0bc39de363e2acf6773c897abbaf6d\",\"dweb:/ipfs/QmU4Hko6sApdweVM92CsiuLKkCk8HfyBeutF89PCTz5Tye\"]},\"@openzeppelin/contracts/proxy/utils/Initializable.sol\":{\"keccak256\":\"0xdb4d24ee2c087c391d587cd17adfe5b3f9d93b3110b1388c2ab6c7c0ad1dcd05\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://ab7b6d5b9e2b88176312967fe0f0e78f3d9a1422fa5e4b64e2440c35869b5d08\",\"dweb:/ipfs/QmXKYWWyzcLg1B2k7Sb1qkEXgLCYfXecR9wYW5obRzWP1Q\"]},\"@openzeppelin/contracts/proxy/utils/UUPSUpgradeable.sol\":{\"keccak256\":\"0x1a26353563a2c63b4120ea0b94727253eeff84fe2241d42c1452308b9080e66a\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://49a95e36d267828b4357186a79917002d616d8634e25d1f9818e2354cd2e7d34\",\"dweb:/ipfs/QmWDkqE4KkyLAS2UkLsRgXE1FGB1qfEgBC3zMXBVsVWfdk\"]},\"@openzeppelin/contracts/token/ERC20/IERC20.sol\":{\"keccak256\":\"0x74ed01eb66b923d0d0cfe3be84604ac04b76482a55f9dd655e1ef4d367f95bc2\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://5282825a626cfe924e504274b864a652b0023591fa66f06a067b25b51ba9b303\",\"dweb:/ipfs/QmeCfPykghhMc81VJTrHTC7sF6CRvaA1FXVq2pJhwYp1dV\"]},\"@openzeppelin/contracts/token/ERC20/extensions/IERC20Metadata.sol\":{\"keccak256\":\"0xd6fa4088198f04eef10c5bce8a2f4d60554b7ec4b987f684393c01bf79b94d9f\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://f95ee0bbd4dd3ac730d066ba3e785ded4565e890dbec2fa7d3b9fe3bad9d0d6e\",\"dweb:/ipfs/QmSLr6bHkPFWT7ntj34jmwfyskpwo97T9jZUrk5sz3sdtR\"]},\"@openzeppelin/contracts/token/ERC20/utils/SafeERC20.sol\":{\"keccak256\":\"0x304d732678032a9781ae85c8f204c8fba3d3a5e31c02616964e75cfdc5049098\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://299ced486011781dc98f638059678323c03079fefae1482abaa2135b22fa92d0\",\"dweb:/ipfs/QmbZNbcPTBxNvwChavN2kkZZs7xHhYL7mv51KrxMhsMs3j\"]},\"@openzeppelin/contracts/utils/Address.sol\":{\"keccak256\":\"0x0fa9e0d3a859900b5a46f70a03c73adf259603d5e05027a37fe0b45529d85346\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://c2add4da0240c9f2ce47649c8bb6b11b40e98cf6f88b8bdc76b2704e89391710\",\"dweb:/ipfs/QmNQTwF2uVzu4CRtNxr8bxyP9XuW6VsZuo2Nr4KR2bZr3d\"]},\"@openzeppelin/contracts/utils/Errors.sol\":{\"keccak256\":\"0x6afa713bfd42cf0f7656efa91201007ac465e42049d7de1d50753a373648c123\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://ba1d02f4847670a1b83dec9f7d37f0b0418d6043447b69f3a29a5f9efc547fcf\",\"dweb:/ipfs/QmQ7iH2keLNUKgq2xSWcRmuBE5eZ3F5whYAkAGzCNNoEWB\"]},\"@openzeppelin/contracts/utils/LowLevelCall.sol\":{\"keccak256\":\"0x5b4802a4352474792df3107e961d1cc593e47b820c14f69d3505cb28f5a6a583\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://a6f86fd01f829499fe0545ff5dda07d4521988e88bfe0bf801fc15650921ed56\",\"dweb:/ipfs/QmUUKu4ZDffHAmfkf3asuQfmLTyfpuy2Amdncc3SqfzKPG\"]},\"@openzeppelin/contracts/utils/Memory.sol\":{\"keccak256\":\"0x35feec480590c0ed9c1623df077ba9af406ad57cd9d149ff278c7316d6fe8fe0\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://839967d079db4cd624c3f735a6e911953c0e2347418c016f6a0cc18ed1aa9603\",\"dweb:/ipfs/QmaWxNL8Ymkwerfvq1LNzpbq2PMzTGsnXzqsYExNyvKWka\"]},\"@openzeppelin/contracts/utils/Panic.sol\":{\"keccak256\":\"0xf7fe324703a64fc51702311dc51562d5cb1497734f074e4f483bfb6717572d7a\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://c6a5ff4f9fd8649b7ee20800b7fa387d3465bd77cf20c2d1068cd5c98e1ed57a\",\"dweb:/ipfs/QmVSaVJf9FXFhdYEYeCEfjMVHrxDh5qL4CGkxdMWpQCrqG\"]},\"@openzeppelin/contracts/utils/StorageSlot.sol\":{\"keccak256\":\"0xcf74f855663ce2ae00ed8352666b7935f6cddea2932fdf2c3ecd30a9b1cd0e97\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://9f660b1f351b757dfe01438e59888f31f33ded3afcf5cb5b0d9bf9aa6f320a8b\",\"dweb:/ipfs/QmarDJ5hZEgBtCmmrVzEZWjub9769eD686jmzb2XpSU1cM\"]},\"@openzeppelin/contracts/utils/introspection/IERC165.sol\":{\"keccak256\":\"0x8891738ffe910f0cf2da09566928589bf5d63f4524dd734fd9cedbac3274dd5c\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://971f954442df5c2ef5b5ebf1eb245d7105d9fbacc7386ee5c796df1d45b21617\",\"dweb:/ipfs/QmadRjHbkicwqwwh61raUEapaVEtaLMcYbQZWs9gUkgj3u\"]},\"@openzeppelin/contracts/utils/math/Math.sol\":{\"keccak256\":\"0x09e3f1c72d4c5cbe8e2644ab7313f8f7177533ae2f4c24cdcbbeaf520a73734c\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://93208401215d539fa2d81626b207c1f611def7883d0e447b3b5969ebaa7b3c2c\",\"dweb:/ipfs/QmXPxDnQPx8LAweX5ZJqEcwkvs59kP4c64VVDG1Jjq1mef\"]},\"@openzeppelin/contracts/utils/math/SafeCast.sol\":{\"keccak256\":\"0x195533c86d0ef72bcc06456a4f66a9b941f38eb403739b00f21fd7c1abd1ae54\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://b1d578337048cad08c1c03041cca5978eff5428aa130c781b271ad9e5566e1f8\",\"dweb:/ipfs/QmPFKL2r9CBsMwmUqqdcFPfHZB2qcs9g1HDrPxzWSxomvy\"]},\"contracts/AccessManagedMSV.sol\":{\"keccak256\":\"0xb6143eaaa169b67f028af5555551e4e0387d3d36e03d82cb5d59e53cc0c18195\",\"license\":\"Apache-2.0\",\"urls\":[\"bzz-raw://b086b0acaec3d84dacc06320014288b8060023e9d947f9285cd78d7a770be462\",\"dweb:/ipfs/QmWJgaE6fRMqrsB9biGbpu2n9jhJjwS5ZMd4E4WZDWxvBM\"]},\"contracts/InvestStrategyClient.sol\":{\"keccak256\":\"0x3c8fff73042023381eb750ba13a9066475d208e99bde568e1243f0e1e282c894\",\"license\":\"Apache-2.0\",\"urls\":[\"bzz-raw://3f8283ffa5c512e482b0065d9391c7060ebc1fa5968c55e6a05958480b7facb6\",\"dweb:/ipfs/QmT4N9Z19b6AUXpXtg23d3ijBExyKuRJBeQ3o8WCobgpfT\"]},\"contracts/MSVBase.sol\":{\"keccak256\":\"0x5c77645d099729ec7f37fdddf61a21aa1ce479ba1770da5694564687d436942f\",\"license\":\"Apache-2.0\",\"urls\":[\"bzz-raw://496ee230293f8ac7216e6300d568b29bbf1f7d5a4c9b68ea58baaae02f55e267\",\"dweb:/ipfs/QmVYH6gLLCrVpeKSHGxAeVVDQcVPgSiwhDB2i8uLPnPHaJ\"]},\"contracts/interfaces/IExposeStorage.sol\":{\"keccak256\":\"0x68d4dbc7e135ac949f5f557a1f071b96d1639262188f91957bf082be7e72b1c7\",\"license\":\"Apache-2.0\",\"urls\":[\"bzz-raw://29fc549ef136e19275bb9225c8e7f02e0cc3b274acef4e6d7002c6f3f74e5c13\",\"dweb:/ipfs/QmVzrn7Cbxe8xzLwy4ZpzxP6CBEKsegXG8VusNYqssCe3d\"]},\"contracts/interfaces/IInvestStrategy.sol\":{\"keccak256\":\"0x6800a1f147def2252b79629150ce9cd87e914ca5a966f1035fbca6328bbc9c4b\",\"license\":\"Apache-2.0\",\"urls\":[\"bzz-raw://2e9260604e0ffcf405819f85fee4124d9a090cf716f389ff92cf76a2837a2e42\",\"dweb:/ipfs/QmVdKEW8C6MDyiiUfjBxEMTWjfPrBJadptpxh9L2uCebDK\"]}},\"version\":1}","storageLayout":{"storage":[{"astId":15721,"contract":"contracts/AccessManagedMSV.sol:AccessManagedMSV","label":"_depositQueue","offset":0,"slot":"0","type":"t_array(t_uint8)32_storage"},{"astId":15725,"contract":"contracts/AccessManagedMSV.sol:AccessManagedMSV","label":"_withdrawQueue","offset":0,"slot":"1","type":"t_array(t_uint8)32_storage"},{"astId":15730,"contract":"contracts/AccessManagedMSV.sol:AccessManagedMSV","label":"_strategies","offset":0,"slot":"2","type":"t_array(t_contract(IInvestStrategy)20725)32_storage"},{"astId":17365,"contract":"contracts/AccessManagedMSV.sol:AccessManagedMSV","label":"__gap","offset":0,"slot":"34","type":"t_array(t_uint256)16_storage"}],"types":{"t_array(t_contract(IInvestStrategy)20725)32_storage":{"base":"t_contract(IInvestStrategy)20725","encoding":"inplace","label":"contract IInvestStrategy[32]","numberOfBytes":"1024"},"t_array(t_uint256)16_storage":{"base":"t_uint256","encoding":"inplace","label":"uint256[16]","numberOfBytes":"512"},"t_array(t_uint8)32_storage":{"base":"t_uint8","encoding":"inplace","label":"uint8[32]","numberOfBytes":"32"},"t_contract(IInvestStrategy)20725":{"encoding":"inplace","label":"contract IInvestStrategy","numberOfBytes":"20"},"t_uint256":{"encoding":"inplace","label":"uint256","numberOfBytes":"32"},"t_uint8":{"encoding":"inplace","label":"uint8","numberOfBytes":"1"}}}}},"contracts/InvestStrategyClient.sol":{"InvestStrategyClient":{"abi":[{"inputs":[],"name":"InvalidStrategyAsset","type":"error"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"bytes","name":"reason","type":"bytes"}],"name":"DepositFailed","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"bytes","name":"reason","type":"bytes"}],"name":"DisconnectFailed","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"contract IInvestStrategy","name":"oldStrategy","type":"address"},{"indexed":false,"internalType":"contract IInvestStrategy","name":"newStrategy","type":"address"}],"name":"StrategyChanged","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"bytes","name":"reason","type":"bytes"}],"name":"WithdrawFailed","type":"event"}],"evm":{"bytecode":{"functionDebugData":{},"generatedSources":[],"linkReferences":{},"object":"60556032600b8282823980515f1a607314602657634e487b7160e01b5f525f60045260245ffd5b305f52607381538281f3fe730000000000000000000000000000000000000000301460806040525f5ffdfea26469706673582212202f4bcedaeb9eb02e71da17c77eb5903f88ef4a49fad2d5c41ab4334b24fb335064736f6c634300081e0033","opcodes":"PUSH1 0x55 PUSH1 0x32 PUSH1 0xB DUP3 DUP3 DUP3 CODECOPY DUP1 MLOAD PUSH0 BYTE PUSH1 0x73 EQ PUSH1 0x26 JUMPI PUSH4 0x4E487B71 PUSH1 0xE0 SHL PUSH0 MSTORE PUSH0 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH0 REVERT JUMPDEST ADDRESS PUSH0 MSTORE PUSH1 0x73 DUP2 MSTORE8 DUP3 DUP2 RETURN INVALID PUSH20 0x0 ADDRESS EQ PUSH1 0x80 PUSH1 0x40 MSTORE PUSH0 PUSH0 REVERT INVALID LOG2 PUSH5 0x6970667358 0x22 SLT KECCAK256 0x2F 0x4B 0xCE 0xDA 0xEB SWAP15 0xB0 0x2E PUSH18 0xDA17C77EB5903F88EF4A49FAD2D5C41AB433 0x4B 0x24 EXTSTATICCALL CALLER POP PUSH5 0x736F6C6343 STOP ADDMOD 0x1E STOP CALLER ","sourceMap":"581:7607:53:-:0;;;;;;;;;;;;;;;-1:-1:-1;;;581:7607:53;;;;;;;;;;;;;;;;;"},"deployedBytecode":{"functionDebugData":{},"generatedSources":[],"immutableReferences":{},"linkReferences":{},"object":"730000000000000000000000000000000000000000301460806040525f5ffdfea26469706673582212202f4bcedaeb9eb02e71da17c77eb5903f88ef4a49fad2d5c41ab4334b24fb335064736f6c634300081e0033","opcodes":"PUSH20 0x0 ADDRESS EQ PUSH1 0x80 PUSH1 0x40 MSTORE PUSH0 PUSH0 REVERT INVALID LOG2 PUSH5 0x6970667358 0x22 SLT KECCAK256 0x2F 0x4B 0xCE 0xDA 0xEB SWAP15 0xB0 0x2E PUSH18 0xDA17C77EB5903F88EF4A49FAD2D5C41AB433 0x4B 0x24 EXTSTATICCALL CALLER POP PUSH5 0x736F6C6343 STOP ADDMOD 0x1E STOP CALLER ","sourceMap":"581:7607:53:-:0;;;;;;;;"},"methodIdentifiers":{}},"metadata":"{\"compiler\":{\"version\":\"0.8.30+commit.73712a01\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"inputs\":[],\"name\":\"InvalidStrategyAsset\",\"type\":\"error\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"bytes\",\"name\":\"reason\",\"type\":\"bytes\"}],\"name\":\"DepositFailed\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"bytes\",\"name\":\"reason\",\"type\":\"bytes\"}],\"name\":\"DisconnectFailed\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"contract IInvestStrategy\",\"name\":\"oldStrategy\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"contract IInvestStrategy\",\"name\":\"newStrategy\",\"type\":\"address\"}],\"name\":\"StrategyChanged\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"bytes\",\"name\":\"reason\",\"type\":\"bytes\"}],\"name\":\"WithdrawFailed\",\"type\":\"event\"}],\"devdoc\":{\"author\":\"Ensuro\",\"custom:security-contact\":\"security@ensuro.co\",\"details\":\"Library to simplify the interaction with IInvestStrategy objects. Abstract away the delegate calls and      other gotchas of the communication with the strategies.\",\"kind\":\"dev\",\"methods\":{},\"title\":\"InvestStrategyClient\",\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{},\"version\":1}},\"settings\":{\"compilationTarget\":{\"contracts/InvestStrategyClient.sol\":\"InvestStrategyClient\"},\"evmVersion\":\"prague\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"enabled\":true,\"runs\":200},\"remappings\":[]},\"sources\":{\"@openzeppelin/contracts/token/ERC20/IERC20.sol\":{\"keccak256\":\"0x74ed01eb66b923d0d0cfe3be84604ac04b76482a55f9dd655e1ef4d367f95bc2\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://5282825a626cfe924e504274b864a652b0023591fa66f06a067b25b51ba9b303\",\"dweb:/ipfs/QmeCfPykghhMc81VJTrHTC7sF6CRvaA1FXVq2pJhwYp1dV\"]},\"@openzeppelin/contracts/token/ERC20/extensions/IERC20Metadata.sol\":{\"keccak256\":\"0xd6fa4088198f04eef10c5bce8a2f4d60554b7ec4b987f684393c01bf79b94d9f\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://f95ee0bbd4dd3ac730d066ba3e785ded4565e890dbec2fa7d3b9fe3bad9d0d6e\",\"dweb:/ipfs/QmSLr6bHkPFWT7ntj34jmwfyskpwo97T9jZUrk5sz3sdtR\"]},\"@openzeppelin/contracts/utils/Address.sol\":{\"keccak256\":\"0x0fa9e0d3a859900b5a46f70a03c73adf259603d5e05027a37fe0b45529d85346\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://c2add4da0240c9f2ce47649c8bb6b11b40e98cf6f88b8bdc76b2704e89391710\",\"dweb:/ipfs/QmNQTwF2uVzu4CRtNxr8bxyP9XuW6VsZuo2Nr4KR2bZr3d\"]},\"@openzeppelin/contracts/utils/Errors.sol\":{\"keccak256\":\"0x6afa713bfd42cf0f7656efa91201007ac465e42049d7de1d50753a373648c123\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://ba1d02f4847670a1b83dec9f7d37f0b0418d6043447b69f3a29a5f9efc547fcf\",\"dweb:/ipfs/QmQ7iH2keLNUKgq2xSWcRmuBE5eZ3F5whYAkAGzCNNoEWB\"]},\"@openzeppelin/contracts/utils/LowLevelCall.sol\":{\"keccak256\":\"0x5b4802a4352474792df3107e961d1cc593e47b820c14f69d3505cb28f5a6a583\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://a6f86fd01f829499fe0545ff5dda07d4521988e88bfe0bf801fc15650921ed56\",\"dweb:/ipfs/QmUUKu4ZDffHAmfkf3asuQfmLTyfpuy2Amdncc3SqfzKPG\"]},\"contracts/InvestStrategyClient.sol\":{\"keccak256\":\"0x3c8fff73042023381eb750ba13a9066475d208e99bde568e1243f0e1e282c894\",\"license\":\"Apache-2.0\",\"urls\":[\"bzz-raw://3f8283ffa5c512e482b0065d9391c7060ebc1fa5968c55e6a05958480b7facb6\",\"dweb:/ipfs/QmT4N9Z19b6AUXpXtg23d3ijBExyKuRJBeQ3o8WCobgpfT\"]},\"contracts/interfaces/IInvestStrategy.sol\":{\"keccak256\":\"0x6800a1f147def2252b79629150ce9cd87e914ca5a966f1035fbca6328bbc9c4b\",\"license\":\"Apache-2.0\",\"urls\":[\"bzz-raw://2e9260604e0ffcf405819f85fee4124d9a090cf716f389ff92cf76a2837a2e42\",\"dweb:/ipfs/QmVdKEW8C6MDyiiUfjBxEMTWjfPrBJadptpxh9L2uCebDK\"]}},\"version\":1}","storageLayout":{"storage":[],"types":null}}},"contracts/MSVBase.sol":{"MSVBase":{"abi":[{"inputs":[{"internalType":"address","name":"target","type":"address"}],"name":"AddressEmptyCode","type":"error"},{"inputs":[],"name":"CannotRemoveStrategyWithAssets","type":"error"},{"inputs":[],"name":"DepositError","type":"error"},{"inputs":[{"internalType":"contract IInvestStrategy","name":"strategy","type":"address"}],"name":"DuplicatedStrategy","type":"error"},{"inputs":[],"name":"FailedCall","type":"error"},{"inputs":[],"name":"InvalidQueue","type":"error"},{"inputs":[{"internalType":"uint8","name":"index","type":"uint8"}],"name":"InvalidQueueIndexDuplicated","type":"error"},{"inputs":[],"name":"InvalidQueueLength","type":"error"},{"inputs":[],"name":"InvalidStrategiesLength","type":"error"},{"inputs":[],"name":"InvalidStrategy","type":"error"},{"inputs":[],"name":"InvalidStrategyAsset","type":"error"},{"inputs":[{"internalType":"uint8","name":"index","type":"uint8"}],"name":"InvalidStrategyInDepositQueue","type":"error"},{"inputs":[{"internalType":"uint8","name":"index","type":"uint8"}],"name":"InvalidStrategyInWithdrawQueue","type":"error"},{"inputs":[],"name":"OnlyStrategyStorageExposed","type":"error"},{"inputs":[{"internalType":"uint256","name":"max","type":"uint256"}],"name":"RebalanceAmountExceedsMaxDeposit","type":"error"},{"inputs":[{"internalType":"uint256","name":"max","type":"uint256"}],"name":"RebalanceAmountExceedsMaxWithdraw","type":"error"},{"inputs":[],"name":"WithdrawError","type":"error"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"bytes","name":"reason","type":"bytes"}],"name":"DepositFailed","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"bytes","name":"reason","type":"bytes"}],"name":"DepositFailed","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint8[]","name":"queue","type":"uint8[]"}],"name":"DepositQueueChanged","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"bytes","name":"reason","type":"bytes"}],"name":"DisconnectFailed","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"bytes","name":"reason","type":"bytes"}],"name":"DisconnectFailed","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"contract IInvestStrategy","name":"strategyFrom","type":"address"},{"indexed":true,"internalType":"contract IInvestStrategy","name":"strategyTo","type":"address"},{"indexed":false,"internalType":"uint256","name":"amount","type":"uint256"}],"name":"Rebalance","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"contract IInvestStrategy","name":"strategy","type":"address"},{"indexed":false,"internalType":"uint8","name":"index","type":"uint8"}],"name":"StrategyAdded","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"contract IInvestStrategy","name":"oldStrategy","type":"address"},{"indexed":false,"internalType":"contract IInvestStrategy","name":"newStrategy","type":"address"}],"name":"StrategyChanged","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"contract IInvestStrategy","name":"oldStrategy","type":"address"},{"indexed":false,"internalType":"contract IInvestStrategy","name":"newStrategy","type":"address"}],"name":"StrategyChanged","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"contract IInvestStrategy","name":"strategy","type":"address"},{"indexed":false,"internalType":"uint8","name":"index","type":"uint8"}],"name":"StrategyRemoved","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"bytes","name":"reason","type":"bytes"}],"name":"WithdrawFailed","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"bytes","name":"reason","type":"bytes"}],"name":"WithdrawFailed","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint8[]","name":"queue","type":"uint8[]"}],"name":"WithdrawQueueChanged","type":"event"},{"inputs":[],"name":"MAX_STRATEGIES","outputs":[{"internalType":"uint8","name":"","type":"uint8"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"contract IInvestStrategy","name":"newStrategy","type":"address"},{"internalType":"bytes","name":"initStrategyData","type":"bytes"}],"name":"addStrategy","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint8[]","name":"newDepositQueue_","type":"uint8[]"}],"name":"changeDepositQueue","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint8[]","name":"newWithdrawQueue_","type":"uint8[]"}],"name":"changeWithdrawQueue","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"depositQueue","outputs":[{"internalType":"uint8[32]","name":"","type":"uint8[32]"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"assets","type":"uint256"}],"name":"depositToStrategies","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint8","name":"strategyIndex","type":"uint8"},{"internalType":"uint8","name":"method","type":"uint8"},{"internalType":"bytes","name":"extraData","type":"bytes"}],"name":"forwardToStrategy","outputs":[{"internalType":"bytes","name":"","type":"bytes"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bytes32","name":"slot","type":"bytes32"}],"name":"getBytesSlot","outputs":[{"internalType":"bytes","name":"","type":"bytes"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint8","name":"strategyFromIdx","type":"uint8"},{"internalType":"uint8","name":"strategyToIdx","type":"uint8"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"rebalance","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint8","name":"strategyIndex","type":"uint8"},{"internalType":"bool","name":"force","type":"bool"}],"name":"removeStrategy","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint8","name":"strategyIndex","type":"uint8"},{"internalType":"contract IInvestStrategy","name":"newStrategy","type":"address"},{"internalType":"bytes","name":"initStrategyData","type":"bytes"},{"internalType":"bool","name":"force","type":"bool"}],"name":"replaceStrategy","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"strategies","outputs":[{"internalType":"contract IInvestStrategy[32]","name":"","type":"address[32]"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"withdrawQueue","outputs":[{"internalType":"uint8[32]","name":"","type":"uint8[32]"}],"stateMutability":"view","type":"function"}],"evm":{"bytecode":{"functionDebugData":{},"generatedSources":[],"linkReferences":{},"object":"","opcodes":"","sourceMap":""},"deployedBytecode":{"functionDebugData":{},"generatedSources":[],"immutableReferences":{},"linkReferences":{},"object":"","opcodes":"","sourceMap":""},"methodIdentifiers":{"MAX_STRATEGIES()":"767f06ae","addStrategy(address,bytes)":"7aeedf2a","changeDepositQueue(uint8[])":"914abf4f","changeWithdrawQueue(uint8[])":"bd577eb6","depositQueue()":"f617eecc","depositToStrategies(uint256)":"4614b896","forwardToStrategy(uint8,uint8,bytes)":"3aaf9048","getBytesSlot(bytes32)":"47e57533","rebalance(uint8,uint8,uint256)":"e682324d","removeStrategy(uint8,bool)":"96da35da","replaceStrategy(uint8,address,bytes,bool)":"7ac445a7","strategies()":"d9f9027f","withdrawQueue()":"51a2d6d1"}},"metadata":"{\"compiler\":{\"version\":\"0.8.30+commit.73712a01\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"inputs\":[{\"internalType\":\"address\",\"name\":\"target\",\"type\":\"address\"}],\"name\":\"AddressEmptyCode\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"CannotRemoveStrategyWithAssets\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"DepositError\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"contract IInvestStrategy\",\"name\":\"strategy\",\"type\":\"address\"}],\"name\":\"DuplicatedStrategy\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"FailedCall\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"InvalidQueue\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"uint8\",\"name\":\"index\",\"type\":\"uint8\"}],\"name\":\"InvalidQueueIndexDuplicated\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"InvalidQueueLength\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"InvalidStrategiesLength\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"InvalidStrategy\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"InvalidStrategyAsset\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"uint8\",\"name\":\"index\",\"type\":\"uint8\"}],\"name\":\"InvalidStrategyInDepositQueue\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"uint8\",\"name\":\"index\",\"type\":\"uint8\"}],\"name\":\"InvalidStrategyInWithdrawQueue\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"OnlyStrategyStorageExposed\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"max\",\"type\":\"uint256\"}],\"name\":\"RebalanceAmountExceedsMaxDeposit\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"max\",\"type\":\"uint256\"}],\"name\":\"RebalanceAmountExceedsMaxWithdraw\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"WithdrawError\",\"type\":\"error\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"bytes\",\"name\":\"reason\",\"type\":\"bytes\"}],\"name\":\"DepositFailed\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"bytes\",\"name\":\"reason\",\"type\":\"bytes\"}],\"name\":\"DepositFailed\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"uint8[]\",\"name\":\"queue\",\"type\":\"uint8[]\"}],\"name\":\"DepositQueueChanged\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"bytes\",\"name\":\"reason\",\"type\":\"bytes\"}],\"name\":\"DisconnectFailed\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"bytes\",\"name\":\"reason\",\"type\":\"bytes\"}],\"name\":\"DisconnectFailed\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"contract IInvestStrategy\",\"name\":\"strategyFrom\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"contract IInvestStrategy\",\"name\":\"strategyTo\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"}],\"name\":\"Rebalance\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"contract IInvestStrategy\",\"name\":\"strategy\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint8\",\"name\":\"index\",\"type\":\"uint8\"}],\"name\":\"StrategyAdded\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"contract IInvestStrategy\",\"name\":\"oldStrategy\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"contract IInvestStrategy\",\"name\":\"newStrategy\",\"type\":\"address\"}],\"name\":\"StrategyChanged\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"contract IInvestStrategy\",\"name\":\"oldStrategy\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"contract IInvestStrategy\",\"name\":\"newStrategy\",\"type\":\"address\"}],\"name\":\"StrategyChanged\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"contract IInvestStrategy\",\"name\":\"strategy\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint8\",\"name\":\"index\",\"type\":\"uint8\"}],\"name\":\"StrategyRemoved\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"bytes\",\"name\":\"reason\",\"type\":\"bytes\"}],\"name\":\"WithdrawFailed\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"bytes\",\"name\":\"reason\",\"type\":\"bytes\"}],\"name\":\"WithdrawFailed\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"uint8[]\",\"name\":\"queue\",\"type\":\"uint8[]\"}],\"name\":\"WithdrawQueueChanged\",\"type\":\"event\"},{\"inputs\":[],\"name\":\"MAX_STRATEGIES\",\"outputs\":[{\"internalType\":\"uint8\",\"name\":\"\",\"type\":\"uint8\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"contract IInvestStrategy\",\"name\":\"newStrategy\",\"type\":\"address\"},{\"internalType\":\"bytes\",\"name\":\"initStrategyData\",\"type\":\"bytes\"}],\"name\":\"addStrategy\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint8[]\",\"name\":\"newDepositQueue_\",\"type\":\"uint8[]\"}],\"name\":\"changeDepositQueue\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint8[]\",\"name\":\"newWithdrawQueue_\",\"type\":\"uint8[]\"}],\"name\":\"changeWithdrawQueue\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"depositQueue\",\"outputs\":[{\"internalType\":\"uint8[32]\",\"name\":\"\",\"type\":\"uint8[32]\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"assets\",\"type\":\"uint256\"}],\"name\":\"depositToStrategies\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint8\",\"name\":\"strategyIndex\",\"type\":\"uint8\"},{\"internalType\":\"uint8\",\"name\":\"method\",\"type\":\"uint8\"},{\"internalType\":\"bytes\",\"name\":\"extraData\",\"type\":\"bytes\"}],\"name\":\"forwardToStrategy\",\"outputs\":[{\"internalType\":\"bytes\",\"name\":\"\",\"type\":\"bytes\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"slot\",\"type\":\"bytes32\"}],\"name\":\"getBytesSlot\",\"outputs\":[{\"internalType\":\"bytes\",\"name\":\"\",\"type\":\"bytes\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint8\",\"name\":\"strategyFromIdx\",\"type\":\"uint8\"},{\"internalType\":\"uint8\",\"name\":\"strategyToIdx\",\"type\":\"uint8\"},{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"}],\"name\":\"rebalance\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint8\",\"name\":\"strategyIndex\",\"type\":\"uint8\"},{\"internalType\":\"bool\",\"name\":\"force\",\"type\":\"bool\"}],\"name\":\"removeStrategy\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint8\",\"name\":\"strategyIndex\",\"type\":\"uint8\"},{\"internalType\":\"contract IInvestStrategy\",\"name\":\"newStrategy\",\"type\":\"address\"},{\"internalType\":\"bytes\",\"name\":\"initStrategyData\",\"type\":\"bytes\"},{\"internalType\":\"bool\",\"name\":\"force\",\"type\":\"bool\"}],\"name\":\"replaceStrategy\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"strategies\",\"outputs\":[{\"internalType\":\"contract IInvestStrategy[32]\",\"name\":\"\",\"type\":\"address[32]\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"withdrawQueue\",\"outputs\":[{\"internalType\":\"uint8[32]\",\"name\":\"\",\"type\":\"uint8[32]\"}],\"stateMutability\":\"view\",\"type\":\"function\"}],\"devdoc\":{\"author\":\"Ensuro\",\"custom:security-contact\":\"security@ensuro.co\",\"details\":\"Base vault contract that manages multiple investment strategies.      Allows deposits/withdraws from each strategy, and also permit rebalances between them.      Funds that enter the vault, will be deposited into the strategies following _depositQueue (only tries the      next strategy if the current one doesn't accept more deposits).      Funds that exit the vault, will be withdrawn into the strategies following _withdrawQueue (only tries the      next strategy if the current one doesn't accept more withdrawals).      It doesn't have any allocation strategy besides that. Rebalance is done externally by calling `rebalance`      method.      This is a base contract, intended to be inherited by implementations of the ERC4626 standard, that will      handle access control, deposits and other stuff.      WARNING: this contract uses storage gaps (https://docs.openzeppelin.com/contracts/4.x/upgradeable#storage_gaps)      to manage upgradeability potential issues, NOT namespaced storage\",\"errors\":{\"AddressEmptyCode(address)\":[{\"details\":\"There's no code at `target` (it is not a contract).\"}],\"FailedCall()\":[{\"details\":\"A call to an address target failed. The target may have reverted.\"}]},\"kind\":\"dev\",\"methods\":{\"addStrategy(address,bytes)\":{\"details\":\"Adds a new strategy to the vault. The new strategy will be added at the end of the deposit and withdraw      queues.\",\"params\":{\"initStrategyData\":\"Initialization parameters for this new strategy\",\"newStrategy\":\"The new strategy to plug into the vault\"}},\"changeDepositQueue(uint8[])\":{\"details\":\"Updates the deposit queue with a new one.\",\"params\":{\"newDepositQueue_\":\"New deposit queue, the lenght must be the same of the installed strategies without                         repeated indexes\"}},\"changeWithdrawQueue(uint8[])\":{\"details\":\"Updates the withdraw queue with a new one.\",\"params\":{\"newWithdrawQueue_\":\"New withdrawal queue, the lenght must be the same of the installed strategies without                          repeated indexes\"}},\"depositQueue()\":{\"details\":\"Returns the order in which the deposits will be made, expressed as index+1 in the _strategies array,      filled with zeros at the end\"},\"depositToStrategies(uint256)\":{\"details\":\"Deposit assets to the strategies in the deposit queue order until zero assets remains to be deposited.      After finishing the deposit, left must be zero, otherwise reverts, and should never happen.      This method might be used by the some strategies to reinject rewards. Left as virtual so child classes      can implement somekind of access control.\",\"params\":{\"assets\":\"The amount of assets to be deposited to the strategies.\"}},\"forwardToStrategy(uint8,uint8,bytes)\":{\"details\":\"Used to call specific methods on the strategies. The specific vault implementation will define the access      control mechanism to validate who can execute these calls.\",\"params\":{\"extraData\":\"Additional parameters sent to the method.\",\"method\":\"Id of the method to call. Is recommended that the strategy defines an enum with the methods that               can be called externally and validates this value.\",\"strategyIndex\":\"The index of the strategy in the _strategies array\"},\"returns\":{\"_0\":\"Returns the output received from the IInvestStrategy.\"}},\"getBytesSlot(bytes32)\":{\"details\":\"Exposes a given slot as a bytes array. To be used by the IInvestStrategy views to access their storage.      Only the slot==strategyStorageSlot() can be accessed.\"},\"rebalance(uint8,uint8,uint256)\":{\"details\":\"Moves funds from one strategy to another.\",\"params\":{\"amount\":\"The amount to transfer from one strategy to the other. type(uint256).max to move all the assets.\",\"strategyFromIdx\":\"The index of the strategy that will provide the funds in the _strategies array\",\"strategyToIdx\":\"The index of the strategy that will receive the funds in the _strategies array\"}},\"removeStrategy(uint8,bool)\":{\"details\":\"Remove an strategy from the vault. It's only possible if the strategy doesn't have assets.      The strategy is removed from deposit and withdraw queues\",\"params\":{\"force\":\"If strategy.disconnect fails, this parameter indicates whether the operation is reverted or not.\",\"strategyIndex\":\"The index of the strategy in the _strategies array\"}},\"replaceStrategy(uint8,address,bytes,bool)\":{\"details\":\"Changes one investment strategy to a new one, keeping the deposit and withdraw queues unaffected.      When this happens, all funds are withdrawn from the old strategy and deposited on the new one.      This reverts if any of this fails, unless the force parameter is true, in that case errors in withdrawal      or deposit are silented.\",\"params\":{\"force\":\"Boolean to indicate if errors on withdraw or deposit should be accepted. Normally you should send              this value in `false`. Only use `true` if you know what you are doing and trying to replace a faulty              strategy.\",\"initStrategyData\":\"Initialization parameters for this new strategy\",\"newStrategy\":\"The new strategy to plug into the vault\",\"strategyIndex\":\"The index of the strategy in the _strategies array\"}},\"strategies()\":{\"details\":\"Returns the list of strategies in the vault in order.      The array is filled with zero addresses after the first one that is address(0).\"},\"withdrawQueue()\":{\"details\":\"Returns the order in which the withdraws will be made, expressed as index+1 in the _strategies array,      filled with zeros at the end\"}},\"stateVariables\":{\"__gap\":{\"details\":\"This empty reserved space is put in place to allow future versions to add new variables without shifting down storage in the inheritance chain. See https://docs.openzeppelin.com/contracts/4.x/upgradeable#storage_gaps\"}},\"title\":\"MSVBase\",\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{\"changeDepositQueue(uint8[])\":{\"notice\":\"Emits DepositQueueChanged(uint8[]) when updating the deposit queue.\"},\"changeWithdrawQueue(uint8[])\":{\"notice\":\"Emits WithdrawQueueChanged(uint8[]) when updating the deposit queue.\"},\"rebalance(uint8,uint8,uint256)\":{\"notice\":\"Emits {Rebalance(strategyFrom, strategyTo, amount)}\"}},\"version\":1}},\"settings\":{\"compilationTarget\":{\"contracts/MSVBase.sol\":\"MSVBase\"},\"evmVersion\":\"prague\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"enabled\":true,\"runs\":200},\"remappings\":[]},\"sources\":{\"@openzeppelin/contracts/token/ERC20/IERC20.sol\":{\"keccak256\":\"0x74ed01eb66b923d0d0cfe3be84604ac04b76482a55f9dd655e1ef4d367f95bc2\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://5282825a626cfe924e504274b864a652b0023591fa66f06a067b25b51ba9b303\",\"dweb:/ipfs/QmeCfPykghhMc81VJTrHTC7sF6CRvaA1FXVq2pJhwYp1dV\"]},\"@openzeppelin/contracts/token/ERC20/extensions/IERC20Metadata.sol\":{\"keccak256\":\"0xd6fa4088198f04eef10c5bce8a2f4d60554b7ec4b987f684393c01bf79b94d9f\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://f95ee0bbd4dd3ac730d066ba3e785ded4565e890dbec2fa7d3b9fe3bad9d0d6e\",\"dweb:/ipfs/QmSLr6bHkPFWT7ntj34jmwfyskpwo97T9jZUrk5sz3sdtR\"]},\"@openzeppelin/contracts/utils/Address.sol\":{\"keccak256\":\"0x0fa9e0d3a859900b5a46f70a03c73adf259603d5e05027a37fe0b45529d85346\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://c2add4da0240c9f2ce47649c8bb6b11b40e98cf6f88b8bdc76b2704e89391710\",\"dweb:/ipfs/QmNQTwF2uVzu4CRtNxr8bxyP9XuW6VsZuo2Nr4KR2bZr3d\"]},\"@openzeppelin/contracts/utils/Errors.sol\":{\"keccak256\":\"0x6afa713bfd42cf0f7656efa91201007ac465e42049d7de1d50753a373648c123\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://ba1d02f4847670a1b83dec9f7d37f0b0418d6043447b69f3a29a5f9efc547fcf\",\"dweb:/ipfs/QmQ7iH2keLNUKgq2xSWcRmuBE5eZ3F5whYAkAGzCNNoEWB\"]},\"@openzeppelin/contracts/utils/LowLevelCall.sol\":{\"keccak256\":\"0x5b4802a4352474792df3107e961d1cc593e47b820c14f69d3505cb28f5a6a583\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://a6f86fd01f829499fe0545ff5dda07d4521988e88bfe0bf801fc15650921ed56\",\"dweb:/ipfs/QmUUKu4ZDffHAmfkf3asuQfmLTyfpuy2Amdncc3SqfzKPG\"]},\"@openzeppelin/contracts/utils/Panic.sol\":{\"keccak256\":\"0xf7fe324703a64fc51702311dc51562d5cb1497734f074e4f483bfb6717572d7a\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://c6a5ff4f9fd8649b7ee20800b7fa387d3465bd77cf20c2d1068cd5c98e1ed57a\",\"dweb:/ipfs/QmVSaVJf9FXFhdYEYeCEfjMVHrxDh5qL4CGkxdMWpQCrqG\"]},\"@openzeppelin/contracts/utils/StorageSlot.sol\":{\"keccak256\":\"0xcf74f855663ce2ae00ed8352666b7935f6cddea2932fdf2c3ecd30a9b1cd0e97\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://9f660b1f351b757dfe01438e59888f31f33ded3afcf5cb5b0d9bf9aa6f320a8b\",\"dweb:/ipfs/QmarDJ5hZEgBtCmmrVzEZWjub9769eD686jmzb2XpSU1cM\"]},\"@openzeppelin/contracts/utils/math/Math.sol\":{\"keccak256\":\"0x09e3f1c72d4c5cbe8e2644ab7313f8f7177533ae2f4c24cdcbbeaf520a73734c\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://93208401215d539fa2d81626b207c1f611def7883d0e447b3b5969ebaa7b3c2c\",\"dweb:/ipfs/QmXPxDnQPx8LAweX5ZJqEcwkvs59kP4c64VVDG1Jjq1mef\"]},\"@openzeppelin/contracts/utils/math/SafeCast.sol\":{\"keccak256\":\"0x195533c86d0ef72bcc06456a4f66a9b941f38eb403739b00f21fd7c1abd1ae54\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://b1d578337048cad08c1c03041cca5978eff5428aa130c781b271ad9e5566e1f8\",\"dweb:/ipfs/QmPFKL2r9CBsMwmUqqdcFPfHZB2qcs9g1HDrPxzWSxomvy\"]},\"contracts/InvestStrategyClient.sol\":{\"keccak256\":\"0x3c8fff73042023381eb750ba13a9066475d208e99bde568e1243f0e1e282c894\",\"license\":\"Apache-2.0\",\"urls\":[\"bzz-raw://3f8283ffa5c512e482b0065d9391c7060ebc1fa5968c55e6a05958480b7facb6\",\"dweb:/ipfs/QmT4N9Z19b6AUXpXtg23d3ijBExyKuRJBeQ3o8WCobgpfT\"]},\"contracts/MSVBase.sol\":{\"keccak256\":\"0x5c77645d099729ec7f37fdddf61a21aa1ce479ba1770da5694564687d436942f\",\"license\":\"Apache-2.0\",\"urls\":[\"bzz-raw://496ee230293f8ac7216e6300d568b29bbf1f7d5a4c9b68ea58baaae02f55e267\",\"dweb:/ipfs/QmVYH6gLLCrVpeKSHGxAeVVDQcVPgSiwhDB2i8uLPnPHaJ\"]},\"contracts/interfaces/IExposeStorage.sol\":{\"keccak256\":\"0x68d4dbc7e135ac949f5f557a1f071b96d1639262188f91957bf082be7e72b1c7\",\"license\":\"Apache-2.0\",\"urls\":[\"bzz-raw://29fc549ef136e19275bb9225c8e7f02e0cc3b274acef4e6d7002c6f3f74e5c13\",\"dweb:/ipfs/QmVzrn7Cbxe8xzLwy4ZpzxP6CBEKsegXG8VusNYqssCe3d\"]},\"contracts/interfaces/IInvestStrategy.sol\":{\"keccak256\":\"0x6800a1f147def2252b79629150ce9cd87e914ca5a966f1035fbca6328bbc9c4b\",\"license\":\"Apache-2.0\",\"urls\":[\"bzz-raw://2e9260604e0ffcf405819f85fee4124d9a090cf716f389ff92cf76a2837a2e42\",\"dweb:/ipfs/QmVdKEW8C6MDyiiUfjBxEMTWjfPrBJadptpxh9L2uCebDK\"]}},\"version\":1}","storageLayout":{"storage":[{"astId":15721,"contract":"contracts/MSVBase.sol:MSVBase","label":"_depositQueue","offset":0,"slot":"0","type":"t_array(t_uint8)32_storage"},{"astId":15725,"contract":"contracts/MSVBase.sol:MSVBase","label":"_withdrawQueue","offset":0,"slot":"1","type":"t_array(t_uint8)32_storage"},{"astId":15730,"contract":"contracts/MSVBase.sol:MSVBase","label":"_strategies","offset":0,"slot":"2","type":"t_array(t_contract(IInvestStrategy)20725)32_storage"},{"astId":17365,"contract":"contracts/MSVBase.sol:MSVBase","label":"__gap","offset":0,"slot":"34","type":"t_array(t_uint256)16_storage"}],"types":{"t_array(t_contract(IInvestStrategy)20725)32_storage":{"base":"t_contract(IInvestStrategy)20725","encoding":"inplace","label":"contract IInvestStrategy[32]","numberOfBytes":"1024"},"t_array(t_uint256)16_storage":{"base":"t_uint256","encoding":"inplace","label":"uint256[16]","numberOfBytes":"512"},"t_array(t_uint8)32_storage":{"base":"t_uint8","encoding":"inplace","label":"uint8[32]","numberOfBytes":"32"},"t_contract(IInvestStrategy)20725":{"encoding":"inplace","label":"contract IInvestStrategy","numberOfBytes":"20"},"t_uint256":{"encoding":"inplace","label":"uint256","numberOfBytes":"32"},"t_uint8":{"encoding":"inplace","label":"uint8","numberOfBytes":"1"}}}}},"contracts/OutflowLimitedAMMSV.sol":{"OutflowLimitedAMMSV":{"abi":[{"inputs":[{"internalType":"address","name":"caller","type":"address"}],"name":"AccessManagedUnauthorized","type":"error"},{"inputs":[{"internalType":"address","name":"target","type":"address"}],"name":"AddressEmptyCode","type":"error"},{"inputs":[],"name":"CannotRemoveStrategyWithAssets","type":"error"},{"inputs":[],"name":"DepositError","type":"error"},{"inputs":[{"internalType":"contract IInvestStrategy","name":"strategy","type":"address"}],"name":"DuplicatedStrategy","type":"error"},{"inputs":[{"internalType":"address","name":"implementation","type":"address"}],"name":"ERC1967InvalidImplementation","type":"error"},{"inputs":[],"name":"ERC1967NonPayable","type":"error"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"allowance","type":"uint256"},{"internalType":"uint256","name":"needed","type":"uint256"}],"name":"ERC20InsufficientAllowance","type":"error"},{"inputs":[{"internalType":"address","name":"sender","type":"address"},{"internalType":"uint256","name":"balance","type":"uint256"},{"internalType":"uint256","name":"needed","type":"uint256"}],"name":"ERC20InsufficientBalance","type":"error"},{"inputs":[{"internalType":"address","name":"approver","type":"address"}],"name":"ERC20InvalidApprover","type":"error"},{"inputs":[{"internalType":"address","name":"receiver","type":"address"}],"name":"ERC20InvalidReceiver","type":"error"},{"inputs":[{"internalType":"address","name":"sender","type":"address"}],"name":"ERC20InvalidSender","type":"error"},{"inputs":[{"internalType":"address","name":"spender","type":"address"}],"name":"ERC20InvalidSpender","type":"error"},{"inputs":[{"internalType":"address","name":"receiver","type":"address"},{"internalType":"uint256","name":"assets","type":"uint256"},{"internalType":"uint256","name":"max","type":"uint256"}],"name":"ERC4626ExceededMaxDeposit","type":"error"},{"inputs":[{"internalType":"address","name":"receiver","type":"address"},{"internalType":"uint256","name":"shares","type":"uint256"},{"internalType":"uint256","name":"max","type":"uint256"}],"name":"ERC4626ExceededMaxMint","type":"error"},{"inputs":[{"internalType":"address","name":"owner","type":"address"},{"internalType":"uint256","name":"shares","type":"uint256"},{"internalType":"uint256","name":"max","type":"uint256"}],"name":"ERC4626ExceededMaxRedeem","type":"error"},{"inputs":[{"internalType":"address","name":"owner","type":"address"},{"internalType":"uint256","name":"assets","type":"uint256"},{"internalType":"uint256","name":"max","type":"uint256"}],"name":"ERC4626ExceededMaxWithdraw","type":"error"},{"inputs":[],"name":"FailedCall","type":"error"},{"inputs":[],"name":"InvalidInitialization","type":"error"},{"inputs":[],"name":"InvalidQueue","type":"error"},{"inputs":[{"internalType":"uint8","name":"index","type":"uint8"}],"name":"InvalidQueueIndexDuplicated","type":"error"},{"inputs":[],"name":"InvalidQueueLength","type":"error"},{"inputs":[],"name":"InvalidStrategiesLength","type":"error"},{"inputs":[],"name":"InvalidStrategy","type":"error"},{"inputs":[],"name":"InvalidStrategyAsset","type":"error"},{"inputs":[{"internalType":"uint8","name":"index","type":"uint8"}],"name":"InvalidStrategyInDepositQueue","type":"error"},{"inputs":[{"internalType":"uint8","name":"index","type":"uint8"}],"name":"InvalidStrategyInWithdrawQueue","type":"error"},{"inputs":[{"internalType":"int256","name":"assetsDelta","type":"int256"},{"internalType":"uint256","name":"limit","type":"uint256"}],"name":"LimitReached","type":"error"},{"inputs":[],"name":"NotInitializing","type":"error"},{"inputs":[],"name":"OnlyStrategyStorageExposed","type":"error"},{"inputs":[{"internalType":"uint256","name":"max","type":"uint256"}],"name":"RebalanceAmountExceedsMaxDeposit","type":"error"},{"inputs":[{"internalType":"uint256","name":"max","type":"uint256"}],"name":"RebalanceAmountExceedsMaxWithdraw","type":"error"},{"inputs":[{"internalType":"uint8","name":"bits","type":"uint8"},{"internalType":"uint256","name":"value","type":"uint256"}],"name":"SafeCastOverflowedUintDowncast","type":"error"},{"inputs":[{"internalType":"uint256","name":"value","type":"uint256"}],"name":"SafeCastOverflowedUintToInt","type":"error"},{"inputs":[{"internalType":"address","name":"token","type":"address"}],"name":"SafeERC20FailedOperation","type":"error"},{"inputs":[],"name":"UUPSUnauthorizedCallContext","type":"error"},{"inputs":[{"internalType":"bytes32","name":"slot","type":"bytes32"}],"name":"UUPSUnsupportedProxiableUUID","type":"error"},{"inputs":[],"name":"WithdrawError","type":"error"},{"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":false,"internalType":"OutflowLimitedAMMSV.SlotIndex","name":"slot","type":"uint256"},{"indexed":false,"internalType":"int256","name":"oldDelta","type":"int256"},{"indexed":false,"internalType":"int256","name":"newDelta","type":"int256"}],"name":"DeltaManuallySet","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"sender","type":"address"},{"indexed":true,"internalType":"address","name":"owner","type":"address"},{"indexed":false,"internalType":"uint256","name":"assets","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"shares","type":"uint256"}],"name":"Deposit","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"bytes","name":"reason","type":"bytes"}],"name":"DepositFailed","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"bytes","name":"reason","type":"bytes"}],"name":"DepositFailed","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint8[]","name":"queue","type":"uint8[]"}],"name":"DepositQueueChanged","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"bytes","name":"reason","type":"bytes"}],"name":"DisconnectFailed","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"bytes","name":"reason","type":"bytes"}],"name":"DisconnectFailed","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint64","name":"version","type":"uint64"}],"name":"Initialized","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint256","name":"slotSize","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"newLimit","type":"uint256"}],"name":"LimitChanged","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"contract IInvestStrategy","name":"strategyFrom","type":"address"},{"indexed":true,"internalType":"contract IInvestStrategy","name":"strategyTo","type":"address"},{"indexed":false,"internalType":"uint256","name":"amount","type":"uint256"}],"name":"Rebalance","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"contract IInvestStrategy","name":"strategy","type":"address"},{"indexed":false,"internalType":"uint8","name":"index","type":"uint8"}],"name":"StrategyAdded","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"contract IInvestStrategy","name":"oldStrategy","type":"address"},{"indexed":false,"internalType":"contract IInvestStrategy","name":"newStrategy","type":"address"}],"name":"StrategyChanged","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"contract IInvestStrategy","name":"oldStrategy","type":"address"},{"indexed":false,"internalType":"contract IInvestStrategy","name":"newStrategy","type":"address"}],"name":"StrategyChanged","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"contract IInvestStrategy","name":"strategy","type":"address"},{"indexed":false,"internalType":"uint8","name":"index","type":"uint8"}],"name":"StrategyRemoved","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":"implementation","type":"address"}],"name":"Upgraded","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"sender","type":"address"},{"indexed":true,"internalType":"address","name":"receiver","type":"address"},{"indexed":true,"internalType":"address","name":"owner","type":"address"},{"indexed":false,"internalType":"uint256","name":"assets","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"shares","type":"uint256"}],"name":"Withdraw","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"bytes","name":"reason","type":"bytes"}],"name":"WithdrawFailed","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"bytes","name":"reason","type":"bytes"}],"name":"WithdrawFailed","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint8[]","name":"queue","type":"uint8[]"}],"name":"WithdrawQueueChanged","type":"event"},{"inputs":[],"name":"MAX_STRATEGIES","outputs":[{"internalType":"uint8","name":"","type":"uint8"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"UPGRADE_INTERFACE_VERSION","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"contract IInvestStrategy","name":"newStrategy","type":"address"},{"internalType":"bytes","name":"initStrategyData","type":"bytes"}],"name":"addStrategy","outputs":[],"stateMutability":"nonpayable","type":"function"},{"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":"value","type":"uint256"}],"name":"approve","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"asset","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"balanceOf","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"OutflowLimitedAMMSV.SlotIndex","name":"slot","type":"uint256"},{"internalType":"int256","name":"deltaChange","type":"int256"}],"name":"changeDelta","outputs":[{"internalType":"int256","name":"newDelta","type":"int256"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint8[]","name":"newDepositQueue_","type":"uint8[]"}],"name":"changeDepositQueue","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint8[]","name":"newWithdrawQueue_","type":"uint8[]"}],"name":"changeWithdrawQueue","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"shares","type":"uint256"}],"name":"convertToAssets","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"assets","type":"uint256"}],"name":"convertToShares","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":"assets","type":"uint256"},{"internalType":"address","name":"receiver","type":"address"}],"name":"deposit","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"depositQueue","outputs":[{"internalType":"uint8[32]","name":"","type":"uint8[32]"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"assets","type":"uint256"}],"name":"depositToStrategies","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint8","name":"strategyIndex","type":"uint8"},{"internalType":"uint8","name":"method","type":"uint8"},{"internalType":"bytes","name":"extraData","type":"bytes"}],"name":"forwardToStrategy","outputs":[{"internalType":"bytes","name":"","type":"bytes"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"OutflowLimitedAMMSV.SlotIndex","name":"slot","type":"uint256"}],"name":"getAssetsDelta","outputs":[{"internalType":"int256","name":"","type":"int256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"bytes32","name":"slot","type":"bytes32"}],"name":"getBytesSlot","outputs":[{"internalType":"bytes","name":"","type":"bytes"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint8","name":"strategyIndex","type":"uint8"},{"internalType":"uint8","name":"method","type":"uint8"}],"name":"getForwardToStrategySelector","outputs":[{"internalType":"bytes4","name":"selector","type":"bytes4"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"getOutflowLimit","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"getOutflowLimitSlotSize","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"string","name":"name_","type":"string"},{"internalType":"string","name":"symbol_","type":"string"},{"internalType":"contract IERC20","name":"asset_","type":"address"},{"internalType":"contract IInvestStrategy[]","name":"strategies_","type":"address[]"},{"internalType":"bytes[]","name":"initStrategyDatas","type":"bytes[]"},{"internalType":"uint8[]","name":"depositQueue_","type":"uint8[]"},{"internalType":"uint8[]","name":"withdrawQueue_","type":"uint8[]"}],"name":"initialize","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"slotSize","type":"uint256"},{"internalType":"uint40","name":"timestamp","type":"uint40"}],"name":"makeOutflowSlot","outputs":[{"internalType":"OutflowLimitedAMMSV.SlotIndex","name":"","type":"uint256"}],"stateMutability":"pure","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"maxDeposit","outputs":[{"internalType":"uint256","name":"ret","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"maxMint","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"owner","type":"address"}],"name":"maxRedeem","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"owner","type":"address"}],"name":"maxWithdraw","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"shares","type":"uint256"},{"internalType":"address","name":"receiver","type":"address"}],"name":"mint","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"name","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"assets","type":"uint256"}],"name":"previewDeposit","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"shares","type":"uint256"}],"name":"previewMint","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"shares","type":"uint256"}],"name":"previewRedeem","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"assets","type":"uint256"}],"name":"previewWithdraw","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"proxiableUUID","outputs":[{"internalType":"bytes32","name":"","type":"bytes32"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint8","name":"strategyFromIdx","type":"uint8"},{"internalType":"uint8","name":"strategyToIdx","type":"uint8"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"rebalance","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"shares","type":"uint256"},{"internalType":"address","name":"receiver","type":"address"},{"internalType":"address","name":"owner","type":"address"}],"name":"redeem","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint8","name":"strategyIndex","type":"uint8"},{"internalType":"bool","name":"force","type":"bool"}],"name":"removeStrategy","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint8","name":"strategyIndex","type":"uint8"},{"internalType":"contract IInvestStrategy","name":"newStrategy","type":"address"},{"internalType":"bytes","name":"initStrategyData","type":"bytes"},{"internalType":"bool","name":"force","type":"bool"}],"name":"replaceStrategy","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"slotSize","type":"uint256"},{"internalType":"uint256","name":"limit","type":"uint256"}],"name":"setupOutflowLimit","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"strategies","outputs":[{"internalType":"contract IInvestStrategy[32]","name":"","type":"address[32]"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"symbol","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"totalAssets","outputs":[{"internalType":"uint256","name":"assets","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"totalSupply","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"to","type":"address"},{"internalType":"uint256","name":"value","type":"uint256"}],"name":"transfer","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"from","type":"address"},{"internalType":"address","name":"to","type":"address"},{"internalType":"uint256","name":"value","type":"uint256"}],"name":"transferFrom","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"newImplementation","type":"address"},{"internalType":"bytes","name":"data","type":"bytes"}],"name":"upgradeToAndCall","outputs":[],"stateMutability":"payable","type":"function"},{"inputs":[{"internalType":"uint256","name":"assets","type":"uint256"},{"internalType":"address","name":"receiver","type":"address"},{"internalType":"address","name":"owner","type":"address"}],"name":"withdraw","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"withdrawQueue","outputs":[{"internalType":"uint8[32]","name":"","type":"uint8[32]"}],"stateMutability":"view","type":"function"}],"evm":{"bytecode":{"functionDebugData":{"@_14916":{"entryPoint":null,"id":14916,"parameterSlots":0,"returnSlots":0},"@_disableInitializers_7874":{"entryPoint":33,"id":7874,"parameterSlots":0,"returnSlots":0},"@_getInitializableStorage_7919":{"entryPoint":null,"id":7919,"parameterSlots":0,"returnSlots":1},"@_initializableStorageSlot_7905":{"entryPoint":null,"id":7905,"parameterSlots":0,"returnSlots":1},"abi_encode_tuple_t_uint64__to_t_uint64__fromStack_reversed":{"entryPoint":null,"id":null,"parameterSlots":2,"returnSlots":1}},"generatedSources":[{"ast":{"nativeSrc":"0:216:87","nodeType":"YulBlock","src":"0:216:87","statements":[{"nativeSrc":"6:3:87","nodeType":"YulBlock","src":"6:3:87","statements":[]},{"body":{"nativeSrc":"113:101:87","nodeType":"YulBlock","src":"113:101:87","statements":[{"nativeSrc":"123:26:87","nodeType":"YulAssignment","src":"123:26:87","value":{"arguments":[{"name":"headStart","nativeSrc":"135:9:87","nodeType":"YulIdentifier","src":"135:9:87"},{"kind":"number","nativeSrc":"146:2:87","nodeType":"YulLiteral","src":"146:2:87","type":"","value":"32"}],"functionName":{"name":"add","nativeSrc":"131:3:87","nodeType":"YulIdentifier","src":"131:3:87"},"nativeSrc":"131:18:87","nodeType":"YulFunctionCall","src":"131:18:87"},"variableNames":[{"name":"tail","nativeSrc":"123:4:87","nodeType":"YulIdentifier","src":"123:4:87"}]},{"expression":{"arguments":[{"name":"headStart","nativeSrc":"165:9:87","nodeType":"YulIdentifier","src":"165:9:87"},{"arguments":[{"name":"value0","nativeSrc":"180:6:87","nodeType":"YulIdentifier","src":"180:6:87"},{"arguments":[{"arguments":[{"kind":"number","nativeSrc":"196:2:87","nodeType":"YulLiteral","src":"196:2:87","type":"","value":"64"},{"kind":"number","nativeSrc":"200:1:87","nodeType":"YulLiteral","src":"200:1:87","type":"","value":"1"}],"functionName":{"name":"shl","nativeSrc":"192:3:87","nodeType":"YulIdentifier","src":"192:3:87"},"nativeSrc":"192:10:87","nodeType":"YulFunctionCall","src":"192:10:87"},{"kind":"number","nativeSrc":"204:1:87","nodeType":"YulLiteral","src":"204:1:87","type":"","value":"1"}],"functionName":{"name":"sub","nativeSrc":"188:3:87","nodeType":"YulIdentifier","src":"188:3:87"},"nativeSrc":"188:18:87","nodeType":"YulFunctionCall","src":"188:18:87"}],"functionName":{"name":"and","nativeSrc":"176:3:87","nodeType":"YulIdentifier","src":"176:3:87"},"nativeSrc":"176:31:87","nodeType":"YulFunctionCall","src":"176:31:87"}],"functionName":{"name":"mstore","nativeSrc":"158:6:87","nodeType":"YulIdentifier","src":"158:6:87"},"nativeSrc":"158:50:87","nodeType":"YulFunctionCall","src":"158:50:87"},"nativeSrc":"158:50:87","nodeType":"YulExpressionStatement","src":"158:50:87"}]},"name":"abi_encode_tuple_t_uint64__to_t_uint64__fromStack_reversed","nativeSrc":"14:200:87","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nativeSrc":"82:9:87","nodeType":"YulTypedName","src":"82:9:87","type":""},{"name":"value0","nativeSrc":"93:6:87","nodeType":"YulTypedName","src":"93:6:87","type":""}],"returnVariables":[{"name":"tail","nativeSrc":"104:4:87","nodeType":"YulTypedName","src":"104:4:87","type":""}],"src":"14:200:87"}]},"contents":"{\n    { }\n    function abi_encode_tuple_t_uint64__to_t_uint64__fromStack_reversed(headStart, value0) -> tail\n    {\n        tail := add(headStart, 32)\n        mstore(headStart, and(value0, sub(shl(64, 1), 1)))\n    }\n}","id":87,"language":"Yul","name":"#utility.yul"}],"linkReferences":{},"object":"60a060405230608052348015610013575f5ffd5b5061001c610021565b6100d3565b7ff0c57e16840df040f15088dc2f81fe391c3923bec73e23a9662efc9c229c6a00805468010000000000000000900460ff16156100715760405163f92ee8a960e01b815260040160405180910390fd5b80546001600160401b03908116146100d05780546001600160401b0319166001600160401b0390811782556040519081527fc7f505b2f371ae2175ee4913f4499e1f2633a7b5936321eed1cdaeb6115181d29060200160405180910390a15b50565b60805161500e6100f95f395f81816127f50152818161281e0152612957015261500e5ff3fe6080604052600436106102a5575f3560e01c80637aeedf2a1161016f578063b460af94116100d8578063d89b074d11610092578063dd62ed3e1161006d578063dd62ed3e14610888578063e682324d146108a7578063ef8b30f7146107da578063f617eecc146108c6575f5ffd5b8063d89b074d14610818578063d905777e14610848578063d9f9027f14610867575f5ffd5b8063b460af941461075e578063ba0876521461077d578063bd577eb61461079c578063c63d75b6146107bb578063c6e6f592146107da578063ce96cb77146107f9575f5ffd5b806395d89b411161012957806395d89b411461069e57806396da35da146106b2578063a7ded2ea146106d1578063a9059cbb146106f0578063ad3cb1cc1461070f578063b3d7f6b91461073f575f5ffd5b80637aeedf2a146105a05780638cdf48a8146105bf5780638eef8380146105f7578063914abf4f1461061657806392ce412e1461063557806394bf804d1461067f575f5ffd5b8063402d267d1161021157806351a2d6d1116101cb57806351a2d6d1146104fa57806352d1902d1461051b5780636e553f651461052f57806370a082311461054e578063767f06ae1461056d5780637ac445a714610581575f5ffd5b8063402d267d1461046b5780634614b8961461048a57806347e57533146104a95780634cdad506146102f15780634f1ef286146104c8578063508a0538146104db575f5ffd5b806318160ddd1161026257806318160ddd1461037f57806323b872dd146103b25780632e6863da146103d1578063313ce567146103fa57806338d52e0f146104205780633aaf90481461044c575f5ffd5b806301e1d114146102a957806306fdde03146102d057806307a2d13a146102f1578063095ea7b3146103105780630a28a4771461033f5780630a6045841461035e575b5f5ffd5b3480156102b4575f5ffd5b506102bd6108da565b6040519081526020015b60405180910390f35b3480156102db575f5ffd5b506102e46108e8565b6040516102c791906143a1565b3480156102fc575f5ffd5b506102bd61030b3660046143b3565b6109a8565b34801561031b575f5ffd5b5061032f61032a3660046143de565b6109b9565b60405190151581526020016102c7565b34801561034a575f5ffd5b506102bd6103593660046143b3565b6109d0565b348015610369575f5ffd5b5061037d610378366004614408565b6109dc565b005b34801561038a575f5ffd5b507f52c63247e1f47db19d5ce0460030c497f067ca4cebf71ba98eeadabe20bace02546102bd565b3480156103bd575f5ffd5b5061032f6103cc366004614428565b610a77565b3480156103dc575f5ffd5b505f516020614f795f395f51905f52546001600160801b03166102bd565b348015610405575f5ffd5b5061040e610a9c565b60405160ff90911681526020016102c7565b34801561042b575f5ffd5b50610434610ade565b6040516001600160a01b0390911681526020016102c7565b348015610457575f5ffd5b506102e4610466366004614530565b610b0c565b348015610476575f5ffd5b506102bd610485366004614589565b610b91565b348015610495575f5ffd5b5061037d6104a43660046143b3565b610b9a565b3480156104b4575f5ffd5b506102e46104c33660046143b3565b610ba6565b61037d6104d63660046145a4565b610d26565b3480156104e6575f5ffd5b506102bd6104f5366004614408565b610d3c565b348015610505575f5ffd5b5061050e610dc9565b6040516102c791906145f0565b348015610526575f5ffd5b506102bd610e21565b34801561053a575f5ffd5b506102bd610549366004614624565b610e3c565b348015610559575f5ffd5b506102bd610568366004614589565b610e99565b348015610578575f5ffd5b5061040e602081565b34801561058c575f5ffd5b5061037d61059b36600461465f565b610ebf565b3480156105ab575f5ffd5b5061037d6105ba3660046145a4565b610ff8565b3480156105ca575f5ffd5b506105de6105d93660046146cd565b6111fd565b6040516001600160e01b031990911681526020016102c7565b348015610602575f5ffd5b506102bd6106113660046146fe565b61125b565b348015610621575f5ffd5b5061037d6106303660046147bd565b61127b565b348015610640575f5ffd5b506102bd61064f3660046143b3565b5f9081527fa2ada5d673dba5eecea7c7503ee87e29913d0d36ae093e950d632f7b86891f01602052604090205490565b34801561068a575f5ffd5b506102bd610699366004614624565b6114cd565b3480156106a9575f5ffd5b506102e4611519565b3480156106bd575f5ffd5b5061037d6106cc3660046147ee565b611557565b3480156106dc575f5ffd5b5061037d6106eb366004614905565b611b6e565b3480156106fb575f5ffd5b5061032f61070a3660046143de565b611c71565b34801561071a575f5ffd5b506102e4604051806040016040528060058152602001640352e302e360dc1b81525081565b34801561074a575f5ffd5b506102bd6107593660046143b3565b611c7e565b348015610769575f5ffd5b506102bd610778366004614a1c565b611c8a565b348015610788575f5ffd5b506102bd610797366004614a1c565b611cd7565b3480156107a7575f5ffd5b5061037d6107b63660046147bd565b611d24565b3480156107c6575f5ffd5b506102bd6107d5366004614589565b611f70565b3480156107e5575f5ffd5b506102bd6107f43660046143b3565b611f9c565b348015610804575f5ffd5b506102bd610813366004614589565b611fa7565b348015610823575f5ffd5b505f516020614f795f395f51905f5254600160801b90046001600160801b03166102bd565b348015610853575f5ffd5b506102bd610862366004614589565b611fbd565b348015610872575f5ffd5b5061087b612002565b6040516102c79190614a5b565b348015610893575f5ffd5b506102bd6108a2366004614a8c565b612048565b3480156108b2575f5ffd5b506102bd6108c1366004614ab8565b612091565b3480156108d1575f5ffd5b5061050e612281565b5f6108e36122bc565b905090565b7f52c63247e1f47db19d5ce0460030c497f067ca4cebf71ba98eeadabe20bace0380546060915f516020614f995f395f51905f529161092690614ae1565b80601f016020809104026020016040519081016040528092919081815260200182805461095290614ae1565b801561099d5780601f106109745761010080835404028352916020019161099d565b820191905f5260205f20905b81548152906001019060200180831161098057829003601f168201915b505050505091505090565b5f6109b3825f612337565b92915050565b5f336109c681858561238e565b5060019392505050565b5f6109b38260016123a0565b5f516020614f795f395f51905f526109f3826123ee565b81546001600160801b03918216600160801b029116178155610a14836123ee565b81546fffffffffffffffffffffffffffffffff19166001600160801b039190911617815560408051848152602081018490527fb60cc7dc67f7eca3662ae255cd7c76bb80b4229692532f6af8851a2a119e6b8591015b60405180910390a1505050565b5f33610a84858285612421565b610a8f858585612472565b60019150505b9392505050565b5f807f0773e532dfede91f04b12a73d3d2acd361424f41f76b4fb79f090161e36b4e0090505f8154610ad89190600160a01b900460ff16614b2d565b91505090565b7f0773e532dfede91f04b12a73d3d2acd361424f41f76b4fb79f090161e36b4e00546001600160a01b031690565b6060610b198484846124cf565b5f60028560ff1660208110610b3057610b30614b46565b01546001600160a01b0316905080610b5b57604051632711b74d60e11b815260040160405180910390fd5b610b88848460028860ff1660208110610b7657610b76614b46565b01546001600160a01b031691906125ed565b95945050505050565b5f6109b361263f565b610ba3816126d3565b50565b60605f5b5f60028260208110610bbe57610bbe614b46565b01546001600160a01b031614801590610bd75750602081105b15610d0c5760028160208110610bef57610bef614b46565b015f9054906101000a90046001600160a01b03166001600160a01b0316635b9a4c356040518163ffffffff1660e01b8152600401602060405180830381865afa158015610c3e573d5f5f3e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610c629190614b5a565b8303610cfc57825483908190610c7790614ae1565b80601f0160208091040260200160405190810160405280929190818152602001828054610ca390614ae1565b8015610cee5780601f10610cc557610100808354040283529160200191610cee565b820191905f5260205f20905b815481529060010190602001808311610cd157829003601f168201915b505050505092505050919050565b610d0581614b71565b9050610baa565b5060405163213109dd60e11b815260040160405180910390fd5b610d2e6127ea565b610d388282612890565b5050565b5f8281527fa2ada5d673dba5eecea7c7503ee87e29913d0d36ae093e950d632f7b86891f0160205260408120805490839083610d788385614b89565b918290555060408051878152602081018590529081018290529093507f177df7ef9e6eced78bb1837ddf81f055288f88e41ca91a74d394b2c8f0660ff2915060600160405180910390a15092915050565b610dd1614354565b6040805161040081019182905290600190602090825f855b825461010083900a900460ff16815260206001928301818104948501949093039092029101808411610de95790505050505050905090565b5f610e2a61294c565b505f516020614fb95f395f51905f5290565b5f5f610e4783610b91565b905080841115610e7957828482604051633c8097d960e11b8152600401610e7093929190614bb0565b60405180910390fd5b5f610e8385611f9c565b9050610e9133858784612995565b949350505050565b6001600160a01b03165f9081525f516020614f995f395f51905f52602052604090205490565b5f60028560ff1660208110610ed657610ed6614b46565b01546001600160a01b0316905080610f0157604051632711b74d60e11b815260040160405180910390fd5b5f5b602081108015610f3057505f60028260208110610f2257610f22614b46565b01546001600160a01b031614155b15610fa657846001600160a01b031660028260208110610f5257610f52614b46565b01546001600160a01b0316148015610f6d57508560ff168114155b15610f965760405163b5a9314f60e01b81526001600160a01b0386166004820152602401610e70565b610f9f81614b71565b9050610f03565b50610fbb818585610fb56129f9565b86612a02565b8360028660ff1660208110610fd257610fd2614b46565b0180546001600160a01b0319166001600160a01b03929092169190911790555050505050565b6001600160a01b03821661101f57604051632711b74d60e11b815260040160405180910390fd5b5f5b60208110801561104e57505f6002826020811061104057611040614b46565b01546001600160a01b031614155b156110b457826001600160a01b03166002826020811061107057611070614b46565b01546001600160a01b0316036110a45760405163b5a9314f60e01b81526001600160a01b0384166004820152602401610e70565b6110ad81614b71565b9050611021565b601f1981016110d957604051600162ad1fab60e01b0319815260040160405180910390fd5b82600282602081106110ed576110ed614b46565b0180546001600160a01b0319166001600160a01b0392909216919091179055611117816001614bd1565b5f826020811061112957611129614b46565b602091828204019190066101000a81548160ff021916908360ff1602179055508060016111569190614bd1565b6001826020811061116957611169614b46565b602091828204019190066101000a81548160ff021916908360ff1602179055506111a46111946129f9565b6001600160a01b03851690612b50565b6111b76001600160a01b03841683612be2565b60405160ff821681526001600160a01b038416907f4973f7978f2b1810531aed51dc15a8e446cb3191afcca470f8ce464af7494f589060200160405180910390a2505050565b5f5f60028460ff166020811061121557611215614b46565b0154604080516001600160a01b039092166020830181905260ff8616918301919091529150610e9190606001604051602081830303815290604052805160209091012090565b5f61126d8364ffffffffff8416614bf8565b610a9590608085901b614bd1565b611283614354565b81515f90602010156112a85760405163a29b1f1160e01b815260040160405180910390fd5b825181101561145357602060ff168382815181106112c8576112c8614b46565b602002602001015160ff1610158061132157505f6001600160a01b031660028483815181106112f9576112f9614b46565b602002602001015160ff166020811061131457611314614b46565b01546001600160a01b0316145b1561133f5760405163a29b1f1160e01b815260040160405180910390fd5b8183828151811061135257611352614b46565b602002602001015160ff166020811061136d5761136d614b46565b6020020151156113b45782818151811061138957611389614b46565b602002602001015160405163c41fdbb960e01b8152600401610e70919060ff91909116815260200190565b6001828483815181106113c9576113c9614b46565b602002602001015160ff16602081106113e4576113e4614b46565b91151560209092020152825183908290811061140257611402614b46565b602002602001015160016114169190614b2d565b5f826020811061142857611428614b46565b602091828204019190066101000a81548160ff021916908360ff1602179055508060010190506112a8565b60208110801561148057505f6002826020811061147257611472614b46565b01546001600160a01b031614155b1561149e57604051636712b27b60e01b815260040160405180910390fd5b7f193fc4e628c27ae3ca098952dfc16a40425b44e7b0a97f4cc59d0f267f47caec83604051610a6a9190614c0b565b5f5f6114d883611f70565b9050808411156115015782848260405163284ff66760e01b8152600401610e7093929190614bb0565b5f61150b85611c7e565b9050610e9133858388612995565b7f52c63247e1f47db19d5ce0460030c497f067ca4cebf71ba98eeadabe20bace0480546060915f516020614f995f395f51905f529161092690614ae1565b602060ff83161061157b57604051632711b74d60e11b815260040160405180910390fd5b5f60028360ff166020811061159257611592614b46565b01546001600160a01b03169050806115bd57604051632711b74d60e11b815260040160405180910390fd5b811580156115db57506115d8816001600160a01b0316612c30565b15155b156115f9576040516343c2dfef60e01b815260040160405180910390fd5b60ff831615801561161357506003546001600160a01b0316155b1561163457604051600162ad1fab60e01b0319815260040160405180910390fd5b5f611640846001614b2d565b60ff1690505b60208110801561167357505f6002826020811061166557611665614b46565b01546001600160a01b031614155b156116e2576002816020811061168b5761168b614b46565b01546001600160a01b031660026116a3600184614c50565b602081106116b3576116b3614b46565b0180546001600160a01b0319166001600160a01b03929092169190911790556116db81614b71565b9050611646565b5f60026116f0600184614c50565b6020811061170057611700614b46565b0180546001600160a01b0319166001600160a01b0392909216919091179055505f80805b6001836020811061173757611737614b46565b602081049091015460ff601f9092166101000a9004161580159061175b5750602083105b15611a8d57801561181f57611771866001614b2d565b60ff166001846020811061178757611787614b46565b602081049091015460ff601f9092166101000a900416116117a8575f6117ab565b60015b600184602081106117be576117be614b46565b602091828204019190069054906101000a900460ff166117de9190614c63565b60016117ea8186614c50565b602081106117fa576117fa614b46565b602091828204019190066101000a81548160ff021916908360ff1602179055506118f0565b61182a866001614b2d565b60ff166001846020811061184057611840614b46565b602081049091015460ff601f9092166101000a90041603611863575060016118f0565b61186e866001614b2d565b60ff166001846020811061188457611884614b46565b602081049091015460ff601f9092166101000a90041611156118f05760018084602081106118b4576118b4614b46565b602091828204019190068282829054906101000a900460ff166118d79190614c63565b92506101000a81548160ff021916908360ff1602179055505b81156119ad57611901866001614b2d565b60ff165f846020811061191657611916614b46565b602081049091015460ff601f9092166101000a90041611611937575f61193a565b60015b5f846020811061194c5761194c614b46565b602091828204019190069054906101000a900460ff1661196c9190614c63565b5f611978600186614c50565b6020811061198857611988614b46565b602091828204019190066101000a81548160ff021916908360ff160217905550611a7d565b6119b8866001614b2d565b60ff165f84602081106119cd576119cd614b46565b602081049091015460ff601f9092166101000a900416036119f15760019150611a7d565b6119fc866001614b2d565b60ff165f8460208110611a1157611a11614b46565b602081049091015460ff601f9092166101000a9004161115611a7d5760015f8460208110611a4157611a41614b46565b602091828204019190068282829054906101000a900460ff16611a649190614c63565b92506101000a81548160ff021916908360ff1602179055505b611a8683614b71565b9250611724565b5f80611a9a600186614c50565b60208110611aaa57611aaa614b46565b602091828204019190066101000a81548160ff021916908360ff1602179055505f60018085611ad99190614c50565b60208110611ae957611ae9614b46565b602091828204019190066101000a81548160ff021916908360ff160217905550611b2585856001600160a01b0316612c9990919063ffffffff16565b60405160ff871681526001600160a01b038516907f978014566e371fef52158b004e150b6e1fd723f5aa3d8c9aa2a7c98ddb0e65b89060200160405180910390a2505050505050565b5f611b77612dbe565b805490915060ff600160401b82041615906001600160401b03165f81158015611b9d5750825b90505f826001600160401b03166001148015611bb85750303b155b905081158015611bc6575080155b15611be45760405163f92ee8a960e01b815260040160405180910390fd5b845467ffffffffffffffff191660011785558315611c0e57845460ff60401b1916600160401b1785555b611c1d8c8c8c8c8c8c8c612de6565b8315611c6357845460ff60401b19168555604051600181527fc7f505b2f371ae2175ee4913f4499e1f2633a7b5936321eed1cdaeb6115181d29060200160405180910390a15b505050505050505050505050565b5f336109c6818585612472565b5f6109b3826001612337565b5f5f611c9583611fa7565b905080851115611cbe57828582604051633fa733bb60e21b8152600401610e7093929190614bb0565b5f611cc8866109d0565b9050610b883386868985612e16565b5f5f611ce283611fbd565b905080851115611d0b57828582604051632e52afbb60e21b8152600401610e7093929190614bb0565b5f611d15866109a8565b9050610b88338686848a612e16565b611d2c614354565b81515f9060201015611d515760405163a29b1f1160e01b815260040160405180910390fd5b82518160ff161015611ef057602060ff16838260ff1681518110611d7757611d77614b46565b602002602001015160ff16101580611dd357505f6001600160a01b03166002848360ff1681518110611dab57611dab614b46565b602002602001015160ff1660208110611dc657611dc6614b46565b01546001600160a01b0316145b15611df15760405163a29b1f1160e01b815260040160405180910390fd5b81838260ff1681518110611e0757611e07614b46565b602002602001015160ff1660208110611e2257611e22614b46565b602002015115611e4157828160ff168151811061138957611389614b46565b600182848360ff1681518110611e5957611e59614b46565b602002602001015160ff1660208110611e7457611e74614b46565b911515602090920201528251839060ff8316908110611e9557611e95614b46565b60200260200101516001611ea99190614b2d565b60018260ff1660208110611ebf57611ebf614b46565b602091828204019190066101000a81548160ff021916908360ff16021790555080611ee990614c7c565b9050611d51565b602060ff8216108015611f2357505f600260ff831660208110611f1557611f15614b46565b01546001600160a01b031614155b15611f4157604051636712b27b60e01b815260040160405180910390fd5b7f3c56b6bca0d55eda581f8f2819d1f85d3b91cfcc24914a8fa39d301796d8964c83604051610a6a9190614c0b565b5f5f611f7a61263f565b90505f198114611f9357611f8e815f6123a0565b610a95565b5f199392505050565b5f6109b3825f6123a0565b5f5f611fb283612f2d565b9050610a9581612f3a565b5f5f611fc883612fcf565b90505f611fd5825f612337565b90505f611fe182612f3a565b9050818114611ff957611ff4815f6123a0565b610b88565b50909392505050565b61200a614354565b604080516104008101918290529060029060209082845b81546001600160a01b03168152600190910190602001808311612021575050505050905090565b6001600160a01b039182165f9081527f52c63247e1f47db19d5ce0460030c497f067ca4cebf71ba98eeadabe20bace016020908152604080832093909416825291909152205490565b5f602060ff85161015806120a95750602060ff841610155b156120c757604051632711b74d60e11b815260040160405180910390fd5b5f60028560ff16602081106120de576120de614b46565b01546001600160a01b031690505f600260ff86166020811061210257612102614b46565b01546001600160a01b0390811691508216158061212657506001600160a01b038116155b1561214457604051632711b74d60e11b815260040160405180910390fd5b5f1984036121615761215e826001600160a01b0316612c30565b93505b835f03612172575f92505050610a95565b612184826001600160a01b0316612fd9565b8411156121b95761219d826001600160a01b0316612fd9565b604051633ce011d560e01b8152600401610e7091815260200190565b6121cb816001600160a01b0316613007565b841115612200576121e4816001600160a01b0316613007565b6040516350a3e37560e11b8152600401610e7091815260200190565b6122146001600160a01b038316855f613035565b506122296001600160a01b038216855f613171565b50806001600160a01b0316826001600160a01b03167fb0850b8e0f9e8315dde3c9f9f31138283e6bbe16cd29e8552eb1dcdf9fac9e3b8660405161226f91815260200190565b60405180910390a35091949350505050565b612289614354565b604080516104008101918290525f805460ff1682529091602090826001838601808411610de95790505050505050905090565b5f5f5b5f600282602081106122d3576122d3614b46565b01546001600160a01b0316148015906122ec5750602081105b15612333576123176002826020811061230757612307614b46565b01546001600160a01b0316612c30565b6123219083614bd1565b915061232c81614b71565b90506122bf565b5090565b5f610a956123436108da565b61234e906001614bd1565b6123595f600a614d7d565b7f52c63247e1f47db19d5ce0460030c497f067ca4cebf71ba98eeadabe20bace02546123859190614bd1565b85919085613292565b61239b83838360016132d4565b505050565b5f610a956123af82600a614d7d565b7f52c63247e1f47db19d5ce0460030c497f067ca4cebf71ba98eeadabe20bace02546123db9190614bd1565b6123e36108da565b612385906001614bd1565b5f6001600160801b03821115612333576040516306dfcc6560e41b81526080600482015260248101839052604401610e70565b5f61242c8484612048565b90505f1981101561246c578181101561245e57828183604051637dc7a0d960e11b8152600401610e7093929190614bb0565b61246c84848484035f6132d4565b50505050565b6001600160a01b03831661249b57604051634b637e8f60e11b81525f6004820152602401610e70565b6001600160a01b0382166124c45760405163ec442f0560e01b81525f6004820152602401610e70565b61239b8383836133b7565b5f306001600160a01b0316633a7b7a396040518163ffffffff1660e01b8152600401602060405180830381865afa15801561250c573d5f5f3e3d5ffd5b505050506040513d601f19601f820116820180604052508101906125309190614d8b565b90505f816001600160a01b031663b7009613333061254e89896111fd565b60405160e085901b6001600160e01b031990811682526001600160a01b0394851660048301529290931660248401521660448201526064016040805180830381865afa1580156125a0573d5f5f3e3d5ffd5b505050506040513d601f19601f820116820180604052508101906125c49190614da6565b509050806125e65760405162d1953b60e31b8152336004820152602401610e70565b5050505050565b6060610e918383604051602401612605929190614ddb565b60408051601f198184030181529190526020810180516001600160e01b03166304c0d8e160e11b1790526001600160a01b038616906134dd565b5f5f5f5b5f6002826020811061265757612657614b46565b01546001600160a01b0316148015906126705750602081105b156126ce576126ac8361269f6002846020811061268f5761268f614b46565b01546001600160a01b0316613007565b8101908110159190820290565b93509150816126be575f199250505090565b6126c781614b71565b9050612643565b505090565b805f5b811580159061270b57505f81602081106126f2576126f2614b46565b602081049091015460ff601f9092166101000a90041615155b80156127175750602081105b156127ca575f600260015f846020811061273357612733614b46565b602091828204019190069054906101000a900460ff166127539190614c63565b60ff166020811061276657612766614b46565b01546001600160a01b031690505f6127868461278184613007565b61357d565b9050805f036127965750506127ba565b6127aa6001600160a01b038316825f613171565b506127b58185614c50565b935050505b6127c381614b71565b90506126d6565b508015610d385760405163285a546d60e01b815260040160405180910390fd5b306001600160a01b037f000000000000000000000000000000000000000000000000000000000000000016148061287057507f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03166128645f516020614fb95f395f51905f52546001600160a01b031690565b6001600160a01b031614155b1561288e5760405163703e46dd60e11b815260040160405180910390fd5b565b816001600160a01b03166352d1902d6040518163ffffffff1660e01b8152600401602060405180830381865afa9250505080156128ea575060408051601f3d908101601f191682019092526128e791810190614b5a565b60015b61291257604051634c9c8ce360e01b81526001600160a01b0383166004820152602401610e70565b5f516020614fb95f395f51905f52811461294257604051632a87526960e21b815260048101829052602401610e70565b61239b838361358c565b306001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000161461288e5760405163703e46dd60e11b815260040160405180910390fd5b5f516020614f795f395f51905f5280546001600160801b0316156129ed575f6129bc6135e1565b90506129c784613613565b5f828152600184016020526040812080549091906129e6908490614b89565b9091555050505b6125e68585858561363f565b5f6108e3610ade565b612a0c8483612b50565b60405163f3e0ffbf60e01b8152306004820152612a7e9086906001600160a01b0382169063f3e0ffbf90602401602060405180830381865afa158015612a54573d5f5f3e3d5ffd5b505050506040513d601f19601f82011682018060405250810190612a789190614b5a565b83613035565b50612a898582612c99565b612a938484612be2565b6040516370a0823160e01b8152306004820152612b059085906001600160a01b038516906370a0823190602401602060405180830381865afa158015612adb573d5f5f3e3d5ffd5b505050506040513d601f19601f82011682018060405250810190612aff9190614b5a565b83613171565b50604080516001600160a01b038088168252861660208201527f254c88e7a2ea123aeeb89b7cc413fb949188fefcdb7584c4f3d493294daf65c5910160405180910390a15050505050565b604051634e2333d160e11b81523060048201526001600160a01b038083169190841690639c4667a290602401602060405180830381865afa158015612b97573d5f5f3e3d5ffd5b505050506040513d601f19601f82011682018060405250810190612bbb9190614d8b565b6001600160a01b031614610d385760405163e76673ef60e01b815260040160405180910390fd5b61239b81604051602401612bf691906143a1565b60408051601f198184030181529190526020810180516001600160e01b031663139a8e2560e31b1790526001600160a01b038416906134dd565b60405163f3e0ffbf60e01b81523060048201525f906001600160a01b0383169063f3e0ffbf906024015b602060405180830381865afa158015612c75573d5f5f3e3d5ffd5b505050506040513d601f19601f820116820180604052508101906109b39190614b5a565b8015612d7457604051600160248201525f9081906001600160a01b0385169060440160408051601f198184030181529181526020820180516001600160e01b0316632d08ba2b60e11b17905251612cf09190614df6565b5f60405180830381855af49150503d805f8114612d28576040519150601f19603f3d011682016040523d82523d5f602084013e612d2d565b606091505b50915091508161246c577f9f864ace9f45c2734f9444cb9a0c1ade6f1b15a8c202c17175b759728a4a0bf881604051612d6691906143a1565b60405180910390a150505050565b6040515f602482015261239b9060440160408051601f198184030181529190526020810180516001600160e01b0316632d08ba2b60e11b1790526001600160a01b038416906134dd565b5f807ff0c57e16840df040f15088dc2f81fe391c3923bec73e23a9662efc9c229c6a006109b3565b612dee613654565b612df785613679565b612e01878761368a565b612e0d8484848461369c565b50505050505050565b5f516020614f795f395f51905f5280546001600160801b031615612f18575f612e3d6135e1565b90505f612e4b600183614c50565b5f81815260018501602052604080822054858352908220549293509091612e7188614e0c565b612e7b9190614b89565b612e859190614b89565b90505f81128015612eae57508354600160801b90046001600160801b0316612eac82614e0c565b115b15612ee757835460405163cc9a505360e01b815260048101839052600160801b9091046001600160801b03166024820152604401610e70565b612ef086613613565b5f84815260018601602052604081208054909190612f0f908490614e26565b90915550505050505b612f258686868686613c1d565b505050505050565b5f6109b361030b83611fbd565b5f5f5f5b5f60028260208110612f5257612f52614b46565b01546001600160a01b031614801590612f6b5750602081105b15612fc857612f9a8361269f60028460208110612f8a57612f8a614b46565b01546001600160a01b0316612fd9565b93509150811580612fab5750838310155b15612fb857509192915050565b612fc181614b71565b9050612f3e565b5050919050565b5f6109b382610e99565b60405163ce96cb7760e01b81523060048201525f906001600160a01b0383169063ce96cb7790602401612c5a565b60405163402d267d60e01b81523060048201525f906001600160a01b0383169063402d267d90602401612c5a565b5f8115613117575f5f856001600160a01b03168560405160240161305b91815260200190565b60408051601f198184030181529181526020820180516001600160e01b0316632e1a7d4d60e01b179052516130909190614df6565b5f60405180830381855af49150503d805f81146130c8576040519150601f19603f3d011682016040523d82523d5f602084013e6130cd565b606091505b50915091508161310f577fad0ad28a12a6ed800f1a7b398454913afe6826c175e6cc28f2e8e2c175b0d7288160405161310691906143a1565b60405180910390a15b509050610a95565b6131678360405160240161312d91815260200190565b60408051601f198184030181529190526020810180516001600160e01b0316632e1a7d4d60e01b1790526001600160a01b038616906134dd565b5060019050610a95565b5f8115613242575f5f856001600160a01b03168560405160240161319791815260200190565b60408051601f198184030181529181526020820180516001600160e01b031663b6b55f2560e01b179052516131cc9190614df6565b5f60405180830381855af49150503d805f8114613204576040519150601f19603f3d011682016040523d82523d5f602084013e613209565b606091505b50915091508161310f577ff8e68f23d3b33772e986cc9861e94e8fd6b9461d62bc1fb21cd754bbaf726bd38160405161310691906143a1565b6131678360405160240161325891815260200190565b60408051601f198184030181529190526020810180516001600160e01b031663b6b55f2560e01b1790526001600160a01b038616906134dd565b5f6132bf61329f83613c33565b80156132ba57505f84806132b5576132b5614be4565b868809115b151590565b6132ca868686613c5f565b610b889190614bd1565b5f516020614f995f395f51905f526001600160a01b03851661330b5760405163e602df0560e01b81525f6004820152602401610e70565b6001600160a01b03841661333457604051634a1406b160e11b81525f6004820152602401610e70565b6001600160a01b038086165f908152600183016020908152604080832093881683529290522083905581156125e657836001600160a01b0316856001600160a01b03167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925856040516133a891815260200190565b60405180910390a35050505050565b5f516020614f995f395f51905f526001600160a01b0384166133f15781816002015f8282546133e69190614bd1565b9091555061344e9050565b6001600160a01b0384165f90815260208290526040902054828110156134305784818460405163391434e360e21b8152600401610e7093929190614bb0565b6001600160a01b0385165f9081526020839052604090209083900390555b6001600160a01b03831661346c57600281018054839003905561348a565b6001600160a01b0383165f9081526020829052604090208054830190555b826001600160a01b0316846001600160a01b03167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef846040516134cf91815260200190565b60405180910390a350505050565b60605f6134ea8484613d0f565b905080801561350b57505f3d118061350b57505f846001600160a01b03163b115b1561352057613518613d22565b9150506109b3565b801561354a57604051639996b31560e01b81526001600160a01b0385166004820152602401610e70565b3d1561355d57613558613d3b565b613576565b60405163d6bda27560e01b815260040160405180910390fd5b5092915050565b5f828218828410028218610a95565b61359582613d46565b6040516001600160a01b038316907fbc7cd75a20ee27fd9adebab32041f755214dbc6bffa90cc0225b39da2e5c2d3b905f90a28051156135d95761239b82826134dd565b610d38613da9565b5f516020614f795f395f51905f52545f906001600160801b03166136058142614bf8565b610ad890608083901b614bd1565b5f6001600160ff1b038211156123335760405163123baf0360e11b815260048101839052602401610e70565b61364b84848484613dc8565b61246c826126d3565b61365c613e33565b61288e57604051631afcd79f60e31b815260040160405180910390fd5b613681613654565b610ba381613e4c565b613692613654565b610d388282613ecf565b835115806136ab575083516020105b806136b857508251845114155b806136c557508151845114155b806136d257508051845114155b156136f357604051600162ad1fab60e01b0319815260040160405180910390fd5b6136fb614354565b613703614354565b5f5b8651811015613ba6575f6001600160a01b031687828151811061372a5761372a614b46565b60200260200101516001600160a01b03160361375957604051632711b74d60e11b815260040160405180910390fd5b6137956137646129f9565b88838151811061377657613776614b46565b60200260200101516001600160a01b0316612b5090919063ffffffff16565b5f5b81811015613835578781815181106137b1576137b1614b46565b60200260200101516001600160a01b03168883815181106137d4576137d4614b46565b60200260200101516001600160a01b03160361382d578782815181106137fc576137fc614b46565b602002602001015160405163b5a9314f60e01b8152600401610e7091906001600160a01b0391909116815260200190565b600101613797565b50865185828151811061384a5761384a614b46565b602002602001015160ff1610158061389157508285828151811061387057613870614b46565b602002602001015160ff166020811061388b5761388b614b46565b60200201515b156138d3578481815181106138a8576138a8614b46565b602002602001015160405163306ccd5d60e11b8152600401610e70919060ff91909116815260200190565b86518482815181106138e7576138e7614b46565b602002602001015160ff1610158061392e57508184828151811061390d5761390d614b46565b602002602001015160ff166020811061392857613928614b46565b60200201515b156139705783818151811061394557613945614b46565b6020026020010151604051632776924160e11b8152600401610e70919060ff91909116815260200190565b60018386838151811061398557613985614b46565b602002602001015160ff16602081106139a0576139a0614b46565b6020020190151590811515815250506001828583815181106139c4576139c4614b46565b602002602001015160ff16602081106139df576139df614b46565b9115156020909202015286518790829081106139fd576139fd614b46565b602002602001015160028260208110613a1857613a18614b46565b015f6101000a8154816001600160a01b0302191690836001600160a01b03160217905550848181518110613a4e57613a4e614b46565b60200260200101516001613a629190614b2d565b5f8260208110613a7457613a74614b46565b602091828204019190066101000a81548160ff021916908360ff160217905550838181518110613aa657613aa6614b46565b60200260200101516001613aba9190614b2d565b60018260208110613acd57613acd614b46565b602091828204019190066101000a81548160ff021916908360ff160217905550613b3b868281518110613b0257613b02614b46565b6020026020010151888381518110613b1c57613b1c614b46565b60200260200101516001600160a01b0316612be290919063ffffffff16565b868181518110613b4d57613b4d614b46565b60200260200101516001600160a01b03167f4973f7978f2b1810531aed51dc15a8e446cb3191afcca470f8ce464af7494f5882604051613b96919060ff91909116815260200190565b60405180910390a2600101613705565b507f193fc4e628c27ae3ca098952dfc16a40425b44e7b0a97f4cc59d0f267f47caec84604051613bd69190614c0b565b60405180910390a17f3c56b6bca0d55eda581f8f2819d1f85d3b91cfcc24914a8fa39d301796d8964c83604051613c0d9190614c0b565b60405180910390a1505050505050565b613c2682613f1f565b6125e68585858585614032565b5f6002826003811115613c4857613c48614e45565b613c529190614e59565b60ff166001149050919050565b5f5f5f613c6c86866140d9565b91509150815f03613c9057838181613c8657613c86614be4565b0492505050610a95565b818411613ca757613ca760038515026011186140f5565b5f848688095f868103871696879004966002600389028118808a02820302808a02820302808a02820302808a02820302808a02820302808a02909103029181900381900460010185841190960395909502919093039390930492909217029150509392505050565b5f5f5f835160208501865af49392505050565b6040513d81523d5f602083013e3d602001810160405290565b6040513d5f823e3d81fd5b806001600160a01b03163b5f03613d7b57604051634c9c8ce360e01b81526001600160a01b0382166004820152602401610e70565b5f516020614fb95f395f51905f5280546001600160a01b0319166001600160a01b0392909216919091179055565b341561288e5760405163b398979f60e01b815260040160405180910390fd5b613ddb613dd3610ade565b853085614106565b613de5838261413c565b826001600160a01b0316846001600160a01b03167fdcbc1c05240f31ff3ad067ef1ee35ce4997762752e3a095284754544f4c709d784846040516134cf929190918252602082015260400190565b5f613e3c612dbe565b54600160401b900460ff16919050565b613e54613654565b7f0773e532dfede91f04b12a73d3d2acd361424f41f76b4fb79f090161e36b4e005f80613e8084614170565b9150915081613e90576012613e92565b805b83546001600160a81b031916600160a01b60ff92909216919091026001600160a01b031916176001600160a01b0394909416939093179091555050565b613ed7613654565b5f516020614f995f395f51905f527f52c63247e1f47db19d5ce0460030c497f067ca4cebf71ba98eeadabe20bace03613f108482614ebe565b506004810161246c8382614ebe565b805f5b8115801590613f58575060018160208110613f3f57613f3f614b46565b602081049091015460ff601f9092166101000a90041615155b8015613f645750602081105b15614012575f60026001808460208110613f8057613f80614b46565b602091828204019190069054906101000a900460ff16613fa09190614c63565b60ff1660208110613fb357613fb3614b46565b01546001600160a01b031690505f613fce8461278184612fd9565b9050805f03613fde575050614002565b613ff26001600160a01b038316825f613035565b50613ffd8185614c50565b935050505b61400b81614b71565b9050613f22565b508015610d385760405163351dc55d60e21b815260040160405180910390fd5b826001600160a01b0316856001600160a01b03161461405657614056838683612421565b61406083826141fb565b61407261406b610ade565b858461422f565b826001600160a01b0316846001600160a01b0316866001600160a01b03167ffbde797d201c681b91056529119e0b02407c7bb96a4a2c75c01fc9667232c8db85856040516140ca929190918252602082015260400190565b60405180910390a45050505050565b5f805f1983850993909202808410938190039390930393915050565b634e487b715f52806020526024601cfd5b614114848484846001614264565b61246c57604051635274afe760e01b81526001600160a01b0385166004820152602401610e70565b6001600160a01b0382166141655760405163ec442f0560e01b81525f6004820152602401610e70565b610d385f83836133b7565b5f5f5f61417c60405190565b6040805160048152602481019091526020810180516001600160e01b031663313ce56760e01b1790529091505f9081906141b79087906142d1565b50915091506141c583604052565b8180156141d3575060203d10155b80156141e0575060ff8111155b6141eb575f5f6141ef565b6001815b94509450505050915091565b6001600160a01b03821661422457604051634b637e8f60e11b81525f6004820152602401610e70565b610d38825f836133b7565b61423c83838360016142f2565b61239b57604051635274afe760e01b81526001600160a01b0384166004820152602401610e70565b6040516323b872dd60e01b5f8181526001600160a01b038781166004528616602452604485905291602083606481808c5af1925060015f511483166142c05783831516156142b4573d5f823e3d81fd5b5f883b113d1516831692505b604052505f60605295945050505050565b5f5f5f60405f855160208701885afa92505f51915060205190509250925092565b60405163a9059cbb60e01b5f8181526001600160a01b038616600452602485905291602083604481808b5af1925060015f5114831661434857838315161561433c573d5f823e3d81fd5b5f873b113d1516831692505b60405250949350505050565b6040518061040001604052806020906020820280368337509192915050565b5f81518084528060208401602086015e5f602082860101526020601f19601f83011685010191505092915050565b602081525f610a956020830184614373565b5f602082840312156143c3575f5ffd5b5035919050565b6001600160a01b0381168114610ba3575f5ffd5b5f5f604083850312156143ef575f5ffd5b82356143fa816143ca565b946020939093013593505050565b5f5f60408385031215614419575f5ffd5b50508035926020909101359150565b5f5f5f6060848603121561443a575f5ffd5b8335614445816143ca565b92506020840135614455816143ca565b929592945050506040919091013590565b803560ff81168114614476575f5ffd5b919050565b634e487b7160e01b5f52604160045260245ffd5b604051601f8201601f191681016001600160401b03811182821017156144b7576144b761447b565b604052919050565b5f82601f8301126144ce575f5ffd5b8135602083015f5f6001600160401b038411156144ed576144ed61447b565b50601f8301601f19166020016145028161448f565b915050828152858383011115614516575f5ffd5b828260208301375f92810160200192909252509392505050565b5f5f5f60608486031215614542575f5ffd5b61454b84614466565b925061455960208501614466565b915060408401356001600160401b03811115614573575f5ffd5b61457f868287016144bf565b9150509250925092565b5f60208284031215614599575f5ffd5b8135610a95816143ca565b5f5f604083850312156145b5575f5ffd5b82356145c0816143ca565b915060208301356001600160401b038111156145da575f5ffd5b6145e6858286016144bf565b9150509250929050565b610400810181835f5b602081101561461b57815160ff168352602092830192909101906001016145f9565b50505092915050565b5f5f60408385031215614635575f5ffd5b823591506020830135614647816143ca565b809150509250929050565b8015158114610ba3575f5ffd5b5f5f5f5f60808587031215614672575f5ffd5b61467b85614466565b9350602085013561468b816143ca565b925060408501356001600160401b038111156146a5575f5ffd5b6146b1878288016144bf565b92505060608501356146c281614652565b939692955090935050565b5f5f604083850312156146de575f5ffd5b6146e783614466565b91506146f560208401614466565b90509250929050565b5f5f6040838503121561470f575f5ffd5b82359150602083013564ffffffffff81168114614647575f5ffd5b5f6001600160401b038211156147425761474261447b565b5060051b60200190565b5f82601f83011261475b575f5ffd5b813561476e6147698261472a565b61448f565b8082825260208201915060208360051b86010192508583111561478f575f5ffd5b602085015b838110156147b3576147a581614466565b835260209283019201614794565b5095945050505050565b5f602082840312156147cd575f5ffd5b81356001600160401b038111156147e2575f5ffd5b610e918482850161474c565b5f5f604083850312156147ff575f5ffd5b61480883614466565b9150602083013561464781614652565b8035614476816143ca565b5f82601f830112614832575f5ffd5b81356148406147698261472a565b8082825260208201915060208360051b860101925085831115614861575f5ffd5b602085015b838110156147b3578035614879816143ca565b835260209283019201614866565b5f82601f830112614896575f5ffd5b81356148a46147698261472a565b8082825260208201915060208360051b8601019250858311156148c5575f5ffd5b602085015b838110156147b35780356001600160401b038111156148e7575f5ffd5b6148f6886020838a01016144bf565b845250602092830192016148ca565b5f5f5f5f5f5f5f60e0888a03121561491b575f5ffd5b87356001600160401b03811115614930575f5ffd5b61493c8a828b016144bf565b97505060208801356001600160401b03811115614957575f5ffd5b6149638a828b016144bf565b96505061497260408901614818565b945060608801356001600160401b0381111561498c575f5ffd5b6149988a828b01614823565b94505060808801356001600160401b038111156149b3575f5ffd5b6149bf8a828b01614887565b93505060a08801356001600160401b038111156149da575f5ffd5b6149e68a828b0161474c565b92505060c08801356001600160401b03811115614a01575f5ffd5b614a0d8a828b0161474c565b91505092959891949750929550565b5f5f5f60608486031215614a2e575f5ffd5b833592506020840135614a40816143ca565b91506040840135614a50816143ca565b809150509250925092565b610400810181835f5b602081101561461b5781516001600160a01b0316835260209283019290910190600101614a64565b5f5f60408385031215614a9d575f5ffd5b8235614aa8816143ca565b91506020830135614647816143ca565b5f5f5f60608486031215614aca575f5ffd5b614ad384614466565b925061445560208501614466565b600181811c90821680614af557607f821691505b602082108103614b1357634e487b7160e01b5f52602260045260245ffd5b50919050565b634e487b7160e01b5f52601160045260245ffd5b60ff81811683821601908111156109b3576109b3614b19565b634e487b7160e01b5f52603260045260245ffd5b5f60208284031215614b6a575f5ffd5b5051919050565b5f60018201614b8257614b82614b19565b5060010190565b8082018281125f831280158216821582161715614ba857614ba8614b19565b505092915050565b6001600160a01b039390931683526020830191909152604082015260600190565b808201808211156109b3576109b3614b19565b634e487b7160e01b5f52601260045260245ffd5b5f82614c0657614c06614be4565b500490565b602080825282518282018190525f918401906040840190835b81811015614c4557835160ff16835260209384019390920191600101614c24565b509095945050505050565b818103818111156109b3576109b3614b19565b60ff82811682821603908111156109b3576109b3614b19565b5f60ff821660ff8103614c9157614c91614b19565b60010192915050565b6001815b6001841115614cd557808504811115614cb957614cb9614b19565b6001841615614cc757908102905b60019390931c928002614c9e565b935093915050565b5f82614ceb575060016109b3565b81614cf757505f6109b3565b8160018114614d0d5760028114614d1757614d33565b60019150506109b3565b60ff841115614d2857614d28614b19565b50506001821b6109b3565b5060208310610133831016604e8410600b8410161715614d56575081810a6109b3565b614d625f198484614c9a565b805f1904821115614d7557614d75614b19565b029392505050565b5f610a9560ff841683614cdd565b5f60208284031215614d9b575f5ffd5b8151610a95816143ca565b5f5f60408385031215614db7575f5ffd5b8251614dc281614652565b602084015190925063ffffffff81168114614647575f5ffd5b60ff83168152604060208201525f610e916040830184614373565b5f82518060208501845e5f920191825250919050565b5f600160ff1b8201614e2057614e20614b19565b505f0390565b8181035f83128015838313168383128216171561357657613576614b19565b634e487b7160e01b5f52602160045260245ffd5b5f60ff831680614e6b57614e6b614be4565b8060ff84160691505092915050565b601f82111561239b57805f5260205f20601f840160051c81016020851015614e9f5750805b601f840160051c820191505b818110156125e6575f8155600101614eab565b81516001600160401b03811115614ed757614ed761447b565b614eeb81614ee58454614ae1565b84614e7a565b6020601f821160018114614f1d575f8315614f065750848201515b5f19600385901b1c1916600184901b1784556125e6565b5f84815260208120601f198516915b82811015614f4c5787850151825560209485019460019092019101614f2c565b5084821015614f6957868401515f19600387901b60f8161c191681555b50505050600190811b0190555056fea2ada5d673dba5eecea7c7503ee87e29913d0d36ae093e950d632f7b86891f0052c63247e1f47db19d5ce0460030c497f067ca4cebf71ba98eeadabe20bace00360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbca2646970667358221220f3fd39dba0e8d3d3bbe5a0628ab07a772c03d00f8cfe726d02571dac7612472464736f6c634300081e0033","opcodes":"PUSH1 0xA0 PUSH1 0x40 MSTORE ADDRESS PUSH1 0x80 MSTORE CALLVALUE DUP1 ISZERO PUSH2 0x13 JUMPI PUSH0 PUSH0 REVERT JUMPDEST POP PUSH2 0x1C PUSH2 0x21 JUMP JUMPDEST PUSH2 0xD3 JUMP JUMPDEST PUSH32 0xF0C57E16840DF040F15088DC2F81FE391C3923BEC73E23A9662EFC9C229C6A00 DUP1 SLOAD PUSH9 0x10000000000000000 SWAP1 DIV PUSH1 0xFF AND ISZERO PUSH2 0x71 JUMPI PUSH1 0x40 MLOAD PUSH4 0xF92EE8A9 PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST DUP1 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0x40 SHL SUB SWAP1 DUP2 AND EQ PUSH2 0xD0 JUMPI DUP1 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0x40 SHL SUB NOT AND PUSH1 0x1 PUSH1 0x1 PUSH1 0x40 SHL SUB SWAP1 DUP2 OR DUP3 SSTORE PUSH1 0x40 MLOAD SWAP1 DUP2 MSTORE PUSH32 0xC7F505B2F371AE2175EE4913F4499E1F2633A7B5936321EED1CDAEB6115181D2 SWAP1 PUSH1 0x20 ADD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 LOG1 JUMPDEST POP JUMP JUMPDEST PUSH1 0x80 MLOAD PUSH2 0x500E PUSH2 0xF9 PUSH0 CODECOPY PUSH0 DUP2 DUP2 PUSH2 0x27F5 ADD MSTORE DUP2 DUP2 PUSH2 0x281E ADD MSTORE PUSH2 0x2957 ADD MSTORE PUSH2 0x500E PUSH0 RETURN INVALID PUSH1 0x80 PUSH1 0x40 MSTORE PUSH1 0x4 CALLDATASIZE LT PUSH2 0x2A5 JUMPI PUSH0 CALLDATALOAD PUSH1 0xE0 SHR DUP1 PUSH4 0x7AEEDF2A GT PUSH2 0x16F JUMPI DUP1 PUSH4 0xB460AF94 GT PUSH2 0xD8 JUMPI DUP1 PUSH4 0xD89B074D GT PUSH2 0x92 JUMPI DUP1 PUSH4 0xDD62ED3E GT PUSH2 0x6D JUMPI DUP1 PUSH4 0xDD62ED3E EQ PUSH2 0x888 JUMPI DUP1 PUSH4 0xE682324D EQ PUSH2 0x8A7 JUMPI DUP1 PUSH4 0xEF8B30F7 EQ PUSH2 0x7DA JUMPI DUP1 PUSH4 0xF617EECC EQ PUSH2 0x8C6 JUMPI PUSH0 PUSH0 REVERT JUMPDEST DUP1 PUSH4 0xD89B074D EQ PUSH2 0x818 JUMPI DUP1 PUSH4 0xD905777E EQ PUSH2 0x848 JUMPI DUP1 PUSH4 0xD9F9027F EQ PUSH2 0x867 JUMPI PUSH0 PUSH0 REVERT JUMPDEST DUP1 PUSH4 0xB460AF94 EQ PUSH2 0x75E JUMPI DUP1 PUSH4 0xBA087652 EQ PUSH2 0x77D JUMPI DUP1 PUSH4 0xBD577EB6 EQ PUSH2 0x79C JUMPI DUP1 PUSH4 0xC63D75B6 EQ PUSH2 0x7BB JUMPI DUP1 PUSH4 0xC6E6F592 EQ PUSH2 0x7DA JUMPI DUP1 PUSH4 0xCE96CB77 EQ PUSH2 0x7F9 JUMPI PUSH0 PUSH0 REVERT JUMPDEST DUP1 PUSH4 0x95D89B41 GT PUSH2 0x129 JUMPI DUP1 PUSH4 0x95D89B41 EQ PUSH2 0x69E JUMPI DUP1 PUSH4 0x96DA35DA EQ PUSH2 0x6B2 JUMPI DUP1 PUSH4 0xA7DED2EA EQ PUSH2 0x6D1 JUMPI DUP1 PUSH4 0xA9059CBB EQ PUSH2 0x6F0 JUMPI DUP1 PUSH4 0xAD3CB1CC EQ PUSH2 0x70F JUMPI DUP1 PUSH4 0xB3D7F6B9 EQ PUSH2 0x73F JUMPI PUSH0 PUSH0 REVERT JUMPDEST DUP1 PUSH4 0x7AEEDF2A EQ PUSH2 0x5A0 JUMPI DUP1 PUSH4 0x8CDF48A8 EQ PUSH2 0x5BF JUMPI DUP1 PUSH4 0x8EEF8380 EQ PUSH2 0x5F7 JUMPI DUP1 PUSH4 0x914ABF4F EQ PUSH2 0x616 JUMPI DUP1 PUSH4 0x92CE412E EQ PUSH2 0x635 JUMPI DUP1 PUSH4 0x94BF804D EQ PUSH2 0x67F JUMPI PUSH0 PUSH0 REVERT JUMPDEST DUP1 PUSH4 0x402D267D GT PUSH2 0x211 JUMPI DUP1 PUSH4 0x51A2D6D1 GT PUSH2 0x1CB JUMPI DUP1 PUSH4 0x51A2D6D1 EQ PUSH2 0x4FA JUMPI DUP1 PUSH4 0x52D1902D EQ PUSH2 0x51B JUMPI DUP1 PUSH4 0x6E553F65 EQ PUSH2 0x52F JUMPI DUP1 PUSH4 0x70A08231 EQ PUSH2 0x54E JUMPI DUP1 PUSH4 0x767F06AE EQ PUSH2 0x56D JUMPI DUP1 PUSH4 0x7AC445A7 EQ PUSH2 0x581 JUMPI PUSH0 PUSH0 REVERT JUMPDEST DUP1 PUSH4 0x402D267D EQ PUSH2 0x46B JUMPI DUP1 PUSH4 0x4614B896 EQ PUSH2 0x48A JUMPI DUP1 PUSH4 0x47E57533 EQ PUSH2 0x4A9 JUMPI DUP1 PUSH4 0x4CDAD506 EQ PUSH2 0x2F1 JUMPI DUP1 PUSH4 0x4F1EF286 EQ PUSH2 0x4C8 JUMPI DUP1 PUSH4 0x508A0538 EQ PUSH2 0x4DB JUMPI PUSH0 PUSH0 REVERT JUMPDEST DUP1 PUSH4 0x18160DDD GT PUSH2 0x262 JUMPI DUP1 PUSH4 0x18160DDD EQ PUSH2 0x37F JUMPI DUP1 PUSH4 0x23B872DD EQ PUSH2 0x3B2 JUMPI DUP1 PUSH4 0x2E6863DA EQ PUSH2 0x3D1 JUMPI DUP1 PUSH4 0x313CE567 EQ PUSH2 0x3FA JUMPI DUP1 PUSH4 0x38D52E0F EQ PUSH2 0x420 JUMPI DUP1 PUSH4 0x3AAF9048 EQ PUSH2 0x44C JUMPI PUSH0 PUSH0 REVERT JUMPDEST DUP1 PUSH4 0x1E1D114 EQ PUSH2 0x2A9 JUMPI DUP1 PUSH4 0x6FDDE03 EQ PUSH2 0x2D0 JUMPI DUP1 PUSH4 0x7A2D13A EQ PUSH2 0x2F1 JUMPI DUP1 PUSH4 0x95EA7B3 EQ PUSH2 0x310 JUMPI DUP1 PUSH4 0xA28A477 EQ PUSH2 0x33F JUMPI DUP1 PUSH4 0xA604584 EQ PUSH2 0x35E JUMPI JUMPDEST PUSH0 PUSH0 REVERT JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x2B4 JUMPI PUSH0 PUSH0 REVERT JUMPDEST POP PUSH2 0x2BD PUSH2 0x8DA JUMP JUMPDEST PUSH1 0x40 MLOAD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x2DB JUMPI PUSH0 PUSH0 REVERT JUMPDEST POP PUSH2 0x2E4 PUSH2 0x8E8 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0x2C7 SWAP2 SWAP1 PUSH2 0x43A1 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x2FC JUMPI PUSH0 PUSH0 REVERT JUMPDEST POP PUSH2 0x2BD PUSH2 0x30B CALLDATASIZE PUSH1 0x4 PUSH2 0x43B3 JUMP JUMPDEST PUSH2 0x9A8 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x31B JUMPI PUSH0 PUSH0 REVERT JUMPDEST POP PUSH2 0x32F PUSH2 0x32A CALLDATASIZE PUSH1 0x4 PUSH2 0x43DE JUMP JUMPDEST PUSH2 0x9B9 JUMP JUMPDEST PUSH1 0x40 MLOAD SWAP1 ISZERO ISZERO DUP2 MSTORE PUSH1 0x20 ADD PUSH2 0x2C7 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x34A JUMPI PUSH0 PUSH0 REVERT JUMPDEST POP PUSH2 0x2BD PUSH2 0x359 CALLDATASIZE PUSH1 0x4 PUSH2 0x43B3 JUMP JUMPDEST PUSH2 0x9D0 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x369 JUMPI PUSH0 PUSH0 REVERT JUMPDEST POP PUSH2 0x37D PUSH2 0x378 CALLDATASIZE PUSH1 0x4 PUSH2 0x4408 JUMP JUMPDEST PUSH2 0x9DC JUMP JUMPDEST STOP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x38A JUMPI PUSH0 PUSH0 REVERT JUMPDEST POP PUSH32 0x52C63247E1F47DB19D5CE0460030C497F067CA4CEBF71BA98EEADABE20BACE02 SLOAD PUSH2 0x2BD JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x3BD JUMPI PUSH0 PUSH0 REVERT JUMPDEST POP PUSH2 0x32F PUSH2 0x3CC CALLDATASIZE PUSH1 0x4 PUSH2 0x4428 JUMP JUMPDEST PUSH2 0xA77 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x3DC JUMPI PUSH0 PUSH0 REVERT JUMPDEST POP PUSH0 MLOAD PUSH1 0x20 PUSH2 0x4F79 PUSH0 CODECOPY PUSH0 MLOAD SWAP1 PUSH0 MSTORE SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0x80 SHL SUB AND PUSH2 0x2BD JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x405 JUMPI PUSH0 PUSH0 REVERT JUMPDEST POP PUSH2 0x40E PUSH2 0xA9C JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH1 0xFF SWAP1 SWAP2 AND DUP2 MSTORE PUSH1 0x20 ADD PUSH2 0x2C7 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x42B JUMPI PUSH0 PUSH0 REVERT JUMPDEST POP PUSH2 0x434 PUSH2 0xADE JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP1 SWAP2 AND DUP2 MSTORE PUSH1 0x20 ADD PUSH2 0x2C7 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x457 JUMPI PUSH0 PUSH0 REVERT JUMPDEST POP PUSH2 0x2E4 PUSH2 0x466 CALLDATASIZE PUSH1 0x4 PUSH2 0x4530 JUMP JUMPDEST PUSH2 0xB0C JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x476 JUMPI PUSH0 PUSH0 REVERT JUMPDEST POP PUSH2 0x2BD PUSH2 0x485 CALLDATASIZE PUSH1 0x4 PUSH2 0x4589 JUMP JUMPDEST PUSH2 0xB91 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x495 JUMPI PUSH0 PUSH0 REVERT JUMPDEST POP PUSH2 0x37D PUSH2 0x4A4 CALLDATASIZE PUSH1 0x4 PUSH2 0x43B3 JUMP JUMPDEST PUSH2 0xB9A JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x4B4 JUMPI PUSH0 PUSH0 REVERT JUMPDEST POP PUSH2 0x2E4 PUSH2 0x4C3 CALLDATASIZE PUSH1 0x4 PUSH2 0x43B3 JUMP JUMPDEST PUSH2 0xBA6 JUMP JUMPDEST PUSH2 0x37D PUSH2 0x4D6 CALLDATASIZE PUSH1 0x4 PUSH2 0x45A4 JUMP JUMPDEST PUSH2 0xD26 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x4E6 JUMPI PUSH0 PUSH0 REVERT JUMPDEST POP PUSH2 0x2BD PUSH2 0x4F5 CALLDATASIZE PUSH1 0x4 PUSH2 0x4408 JUMP JUMPDEST PUSH2 0xD3C JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x505 JUMPI PUSH0 PUSH0 REVERT JUMPDEST POP PUSH2 0x50E PUSH2 0xDC9 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0x2C7 SWAP2 SWAP1 PUSH2 0x45F0 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x526 JUMPI PUSH0 PUSH0 REVERT JUMPDEST POP PUSH2 0x2BD PUSH2 0xE21 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x53A JUMPI PUSH0 PUSH0 REVERT JUMPDEST POP PUSH2 0x2BD PUSH2 0x549 CALLDATASIZE PUSH1 0x4 PUSH2 0x4624 JUMP JUMPDEST PUSH2 0xE3C JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x559 JUMPI PUSH0 PUSH0 REVERT JUMPDEST POP PUSH2 0x2BD PUSH2 0x568 CALLDATASIZE PUSH1 0x4 PUSH2 0x4589 JUMP JUMPDEST PUSH2 0xE99 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x578 JUMPI PUSH0 PUSH0 REVERT JUMPDEST POP PUSH2 0x40E PUSH1 0x20 DUP2 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x58C JUMPI PUSH0 PUSH0 REVERT JUMPDEST POP PUSH2 0x37D PUSH2 0x59B CALLDATASIZE PUSH1 0x4 PUSH2 0x465F JUMP JUMPDEST PUSH2 0xEBF JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x5AB JUMPI PUSH0 PUSH0 REVERT JUMPDEST POP PUSH2 0x37D PUSH2 0x5BA CALLDATASIZE PUSH1 0x4 PUSH2 0x45A4 JUMP JUMPDEST PUSH2 0xFF8 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x5CA JUMPI PUSH0 PUSH0 REVERT JUMPDEST POP PUSH2 0x5DE PUSH2 0x5D9 CALLDATASIZE PUSH1 0x4 PUSH2 0x46CD JUMP JUMPDEST PUSH2 0x11FD JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xE0 SHL SUB NOT SWAP1 SWAP2 AND DUP2 MSTORE PUSH1 0x20 ADD PUSH2 0x2C7 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x602 JUMPI PUSH0 PUSH0 REVERT JUMPDEST POP PUSH2 0x2BD PUSH2 0x611 CALLDATASIZE PUSH1 0x4 PUSH2 0x46FE JUMP JUMPDEST PUSH2 0x125B JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x621 JUMPI PUSH0 PUSH0 REVERT JUMPDEST POP PUSH2 0x37D PUSH2 0x630 CALLDATASIZE PUSH1 0x4 PUSH2 0x47BD JUMP JUMPDEST PUSH2 0x127B JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x640 JUMPI PUSH0 PUSH0 REVERT JUMPDEST POP PUSH2 0x2BD PUSH2 0x64F CALLDATASIZE PUSH1 0x4 PUSH2 0x43B3 JUMP JUMPDEST PUSH0 SWAP1 DUP2 MSTORE PUSH32 0xA2ADA5D673DBA5EECEA7C7503EE87E29913D0D36AE093E950D632F7B86891F01 PUSH1 0x20 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD SWAP1 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x68A JUMPI PUSH0 PUSH0 REVERT JUMPDEST POP PUSH2 0x2BD PUSH2 0x699 CALLDATASIZE PUSH1 0x4 PUSH2 0x4624 JUMP JUMPDEST PUSH2 0x14CD JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x6A9 JUMPI PUSH0 PUSH0 REVERT JUMPDEST POP PUSH2 0x2E4 PUSH2 0x1519 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x6BD JUMPI PUSH0 PUSH0 REVERT JUMPDEST POP PUSH2 0x37D PUSH2 0x6CC CALLDATASIZE PUSH1 0x4 PUSH2 0x47EE JUMP JUMPDEST PUSH2 0x1557 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x6DC JUMPI PUSH0 PUSH0 REVERT JUMPDEST POP PUSH2 0x37D PUSH2 0x6EB CALLDATASIZE PUSH1 0x4 PUSH2 0x4905 JUMP JUMPDEST PUSH2 0x1B6E JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x6FB JUMPI PUSH0 PUSH0 REVERT JUMPDEST POP PUSH2 0x32F PUSH2 0x70A CALLDATASIZE PUSH1 0x4 PUSH2 0x43DE JUMP JUMPDEST PUSH2 0x1C71 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x71A JUMPI PUSH0 PUSH0 REVERT JUMPDEST POP PUSH2 0x2E4 PUSH1 0x40 MLOAD DUP1 PUSH1 0x40 ADD PUSH1 0x40 MSTORE DUP1 PUSH1 0x5 DUP2 MSTORE PUSH1 0x20 ADD PUSH5 0x352E302E3 PUSH1 0xDC SHL DUP2 MSTORE POP DUP2 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x74A JUMPI PUSH0 PUSH0 REVERT JUMPDEST POP PUSH2 0x2BD PUSH2 0x759 CALLDATASIZE PUSH1 0x4 PUSH2 0x43B3 JUMP JUMPDEST PUSH2 0x1C7E JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x769 JUMPI PUSH0 PUSH0 REVERT JUMPDEST POP PUSH2 0x2BD PUSH2 0x778 CALLDATASIZE PUSH1 0x4 PUSH2 0x4A1C JUMP JUMPDEST PUSH2 0x1C8A JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x788 JUMPI PUSH0 PUSH0 REVERT JUMPDEST POP PUSH2 0x2BD PUSH2 0x797 CALLDATASIZE PUSH1 0x4 PUSH2 0x4A1C JUMP JUMPDEST PUSH2 0x1CD7 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x7A7 JUMPI PUSH0 PUSH0 REVERT JUMPDEST POP PUSH2 0x37D PUSH2 0x7B6 CALLDATASIZE PUSH1 0x4 PUSH2 0x47BD JUMP JUMPDEST PUSH2 0x1D24 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x7C6 JUMPI PUSH0 PUSH0 REVERT JUMPDEST POP PUSH2 0x2BD PUSH2 0x7D5 CALLDATASIZE PUSH1 0x4 PUSH2 0x4589 JUMP JUMPDEST PUSH2 0x1F70 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x7E5 JUMPI PUSH0 PUSH0 REVERT JUMPDEST POP PUSH2 0x2BD PUSH2 0x7F4 CALLDATASIZE PUSH1 0x4 PUSH2 0x43B3 JUMP JUMPDEST PUSH2 0x1F9C JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x804 JUMPI PUSH0 PUSH0 REVERT JUMPDEST POP PUSH2 0x2BD PUSH2 0x813 CALLDATASIZE PUSH1 0x4 PUSH2 0x4589 JUMP JUMPDEST PUSH2 0x1FA7 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x823 JUMPI PUSH0 PUSH0 REVERT JUMPDEST POP PUSH0 MLOAD PUSH1 0x20 PUSH2 0x4F79 PUSH0 CODECOPY PUSH0 MLOAD SWAP1 PUSH0 MSTORE SLOAD PUSH1 0x1 PUSH1 0x80 SHL SWAP1 DIV PUSH1 0x1 PUSH1 0x1 PUSH1 0x80 SHL SUB AND PUSH2 0x2BD JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x853 JUMPI PUSH0 PUSH0 REVERT JUMPDEST POP PUSH2 0x2BD PUSH2 0x862 CALLDATASIZE PUSH1 0x4 PUSH2 0x4589 JUMP JUMPDEST PUSH2 0x1FBD JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x872 JUMPI PUSH0 PUSH0 REVERT JUMPDEST POP PUSH2 0x87B PUSH2 0x2002 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0x2C7 SWAP2 SWAP1 PUSH2 0x4A5B JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x893 JUMPI PUSH0 PUSH0 REVERT JUMPDEST POP PUSH2 0x2BD PUSH2 0x8A2 CALLDATASIZE PUSH1 0x4 PUSH2 0x4A8C JUMP JUMPDEST PUSH2 0x2048 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x8B2 JUMPI PUSH0 PUSH0 REVERT JUMPDEST POP PUSH2 0x2BD PUSH2 0x8C1 CALLDATASIZE PUSH1 0x4 PUSH2 0x4AB8 JUMP JUMPDEST PUSH2 0x2091 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x8D1 JUMPI PUSH0 PUSH0 REVERT JUMPDEST POP PUSH2 0x50E PUSH2 0x2281 JUMP JUMPDEST PUSH0 PUSH2 0x8E3 PUSH2 0x22BC JUMP JUMPDEST SWAP1 POP SWAP1 JUMP JUMPDEST PUSH32 0x52C63247E1F47DB19D5CE0460030C497F067CA4CEBF71BA98EEADABE20BACE03 DUP1 SLOAD PUSH1 0x60 SWAP2 PUSH0 MLOAD PUSH1 0x20 PUSH2 0x4F99 PUSH0 CODECOPY PUSH0 MLOAD SWAP1 PUSH0 MSTORE SWAP2 PUSH2 0x926 SWAP1 PUSH2 0x4AE1 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 0x952 SWAP1 PUSH2 0x4AE1 JUMP JUMPDEST DUP1 ISZERO PUSH2 0x99D JUMPI DUP1 PUSH1 0x1F LT PUSH2 0x974 JUMPI PUSH2 0x100 DUP1 DUP4 SLOAD DIV MUL DUP4 MSTORE SWAP2 PUSH1 0x20 ADD SWAP2 PUSH2 0x99D JUMP JUMPDEST DUP3 ADD SWAP2 SWAP1 PUSH0 MSTORE PUSH1 0x20 PUSH0 KECCAK256 SWAP1 JUMPDEST DUP2 SLOAD DUP2 MSTORE SWAP1 PUSH1 0x1 ADD SWAP1 PUSH1 0x20 ADD DUP1 DUP4 GT PUSH2 0x980 JUMPI DUP3 SWAP1 SUB PUSH1 0x1F AND DUP3 ADD SWAP2 JUMPDEST POP POP POP POP POP SWAP2 POP POP SWAP1 JUMP JUMPDEST PUSH0 PUSH2 0x9B3 DUP3 PUSH0 PUSH2 0x2337 JUMP JUMPDEST SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH0 CALLER PUSH2 0x9C6 DUP2 DUP6 DUP6 PUSH2 0x238E JUMP JUMPDEST POP PUSH1 0x1 SWAP4 SWAP3 POP POP POP JUMP JUMPDEST PUSH0 PUSH2 0x9B3 DUP3 PUSH1 0x1 PUSH2 0x23A0 JUMP JUMPDEST PUSH0 MLOAD PUSH1 0x20 PUSH2 0x4F79 PUSH0 CODECOPY PUSH0 MLOAD SWAP1 PUSH0 MSTORE PUSH2 0x9F3 DUP3 PUSH2 0x23EE JUMP JUMPDEST DUP2 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0x80 SHL SUB SWAP2 DUP3 AND PUSH1 0x1 PUSH1 0x80 SHL MUL SWAP2 AND OR DUP2 SSTORE PUSH2 0xA14 DUP4 PUSH2 0x23EE JUMP JUMPDEST DUP2 SLOAD PUSH16 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF NOT AND PUSH1 0x1 PUSH1 0x1 PUSH1 0x80 SHL SUB SWAP2 SWAP1 SWAP2 AND OR DUP2 SSTORE PUSH1 0x40 DUP1 MLOAD DUP5 DUP2 MSTORE PUSH1 0x20 DUP2 ADD DUP5 SWAP1 MSTORE PUSH32 0xB60CC7DC67F7ECA3662AE255CD7C76BB80B4229692532F6AF8851A2A119E6B85 SWAP2 ADD JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 LOG1 POP POP POP JUMP JUMPDEST PUSH0 CALLER PUSH2 0xA84 DUP6 DUP3 DUP6 PUSH2 0x2421 JUMP JUMPDEST PUSH2 0xA8F DUP6 DUP6 DUP6 PUSH2 0x2472 JUMP JUMPDEST PUSH1 0x1 SWAP2 POP POP JUMPDEST SWAP4 SWAP3 POP POP POP JUMP JUMPDEST PUSH0 DUP1 PUSH32 0x773E532DFEDE91F04B12A73D3D2ACD361424F41F76B4FB79F090161E36B4E00 SWAP1 POP PUSH0 DUP2 SLOAD PUSH2 0xAD8 SWAP2 SWAP1 PUSH1 0x1 PUSH1 0xA0 SHL SWAP1 DIV PUSH1 0xFF AND PUSH2 0x4B2D JUMP JUMPDEST SWAP2 POP POP SWAP1 JUMP JUMPDEST PUSH32 0x773E532DFEDE91F04B12A73D3D2ACD361424F41F76B4FB79F090161E36B4E00 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND SWAP1 JUMP JUMPDEST PUSH1 0x60 PUSH2 0xB19 DUP5 DUP5 DUP5 PUSH2 0x24CF JUMP JUMPDEST PUSH0 PUSH1 0x2 DUP6 PUSH1 0xFF AND PUSH1 0x20 DUP2 LT PUSH2 0xB30 JUMPI PUSH2 0xB30 PUSH2 0x4B46 JUMP JUMPDEST ADD SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND SWAP1 POP DUP1 PUSH2 0xB5B JUMPI PUSH1 0x40 MLOAD PUSH4 0x2711B74D PUSH1 0xE1 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH2 0xB88 DUP5 DUP5 PUSH1 0x2 DUP9 PUSH1 0xFF AND PUSH1 0x20 DUP2 LT PUSH2 0xB76 JUMPI PUSH2 0xB76 PUSH2 0x4B46 JUMP JUMPDEST ADD SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND SWAP2 SWAP1 PUSH2 0x25ED JUMP JUMPDEST SWAP6 SWAP5 POP POP POP POP POP JUMP JUMPDEST PUSH0 PUSH2 0x9B3 PUSH2 0x263F JUMP JUMPDEST PUSH2 0xBA3 DUP2 PUSH2 0x26D3 JUMP JUMPDEST POP JUMP JUMPDEST PUSH1 0x60 PUSH0 JUMPDEST PUSH0 PUSH1 0x2 DUP3 PUSH1 0x20 DUP2 LT PUSH2 0xBBE JUMPI PUSH2 0xBBE PUSH2 0x4B46 JUMP JUMPDEST ADD SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND EQ DUP1 ISZERO SWAP1 PUSH2 0xBD7 JUMPI POP PUSH1 0x20 DUP2 LT JUMPDEST ISZERO PUSH2 0xD0C JUMPI PUSH1 0x2 DUP2 PUSH1 0x20 DUP2 LT PUSH2 0xBEF JUMPI PUSH2 0xBEF PUSH2 0x4B46 JUMP JUMPDEST ADD PUSH0 SWAP1 SLOAD SWAP1 PUSH2 0x100 EXP SWAP1 DIV PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH4 0x5B9A4C35 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 GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0xC3E JUMPI RETURNDATASIZE PUSH0 PUSH0 RETURNDATACOPY RETURNDATASIZE PUSH0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP3 ADD DUP1 PUSH1 0x40 MSTORE POP DUP2 ADD SWAP1 PUSH2 0xC62 SWAP2 SWAP1 PUSH2 0x4B5A JUMP JUMPDEST DUP4 SUB PUSH2 0xCFC JUMPI DUP3 SLOAD DUP4 SWAP1 DUP2 SWAP1 PUSH2 0xC77 SWAP1 PUSH2 0x4AE1 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 0xCA3 SWAP1 PUSH2 0x4AE1 JUMP JUMPDEST DUP1 ISZERO PUSH2 0xCEE JUMPI DUP1 PUSH1 0x1F LT PUSH2 0xCC5 JUMPI PUSH2 0x100 DUP1 DUP4 SLOAD DIV MUL DUP4 MSTORE SWAP2 PUSH1 0x20 ADD SWAP2 PUSH2 0xCEE JUMP JUMPDEST DUP3 ADD SWAP2 SWAP1 PUSH0 MSTORE PUSH1 0x20 PUSH0 KECCAK256 SWAP1 JUMPDEST DUP2 SLOAD DUP2 MSTORE SWAP1 PUSH1 0x1 ADD SWAP1 PUSH1 0x20 ADD DUP1 DUP4 GT PUSH2 0xCD1 JUMPI DUP3 SWAP1 SUB PUSH1 0x1F AND DUP3 ADD SWAP2 JUMPDEST POP POP POP POP POP SWAP3 POP POP POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH2 0xD05 DUP2 PUSH2 0x4B71 JUMP JUMPDEST SWAP1 POP PUSH2 0xBAA JUMP JUMPDEST POP PUSH1 0x40 MLOAD PUSH4 0x213109DD PUSH1 0xE1 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH2 0xD2E PUSH2 0x27EA JUMP JUMPDEST PUSH2 0xD38 DUP3 DUP3 PUSH2 0x2890 JUMP JUMPDEST POP POP JUMP JUMPDEST PUSH0 DUP3 DUP2 MSTORE PUSH32 0xA2ADA5D673DBA5EECEA7C7503EE87E29913D0D36AE093E950D632F7B86891F01 PUSH1 0x20 MSTORE PUSH1 0x40 DUP2 KECCAK256 DUP1 SLOAD SWAP1 DUP4 SWAP1 DUP4 PUSH2 0xD78 DUP4 DUP6 PUSH2 0x4B89 JUMP JUMPDEST SWAP2 DUP3 SWAP1 SSTORE POP PUSH1 0x40 DUP1 MLOAD DUP8 DUP2 MSTORE PUSH1 0x20 DUP2 ADD DUP6 SWAP1 MSTORE SWAP1 DUP2 ADD DUP3 SWAP1 MSTORE SWAP1 SWAP4 POP PUSH32 0x177DF7EF9E6ECED78BB1837DDF81F055288F88E41CA91A74D394B2C8F0660FF2 SWAP2 POP PUSH1 0x60 ADD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 LOG1 POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH2 0xDD1 PUSH2 0x4354 JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH2 0x400 DUP2 ADD SWAP2 DUP3 SWAP1 MSTORE SWAP1 PUSH1 0x1 SWAP1 PUSH1 0x20 SWAP1 DUP3 PUSH0 DUP6 JUMPDEST DUP3 SLOAD PUSH2 0x100 DUP4 SWAP1 EXP SWAP1 DIV PUSH1 0xFF AND DUP2 MSTORE PUSH1 0x20 PUSH1 0x1 SWAP3 DUP4 ADD DUP2 DUP2 DIV SWAP5 DUP6 ADD SWAP5 SWAP1 SWAP4 SUB SWAP1 SWAP3 MUL SWAP2 ADD DUP1 DUP5 GT PUSH2 0xDE9 JUMPI SWAP1 POP POP POP POP POP POP SWAP1 POP SWAP1 JUMP JUMPDEST PUSH0 PUSH2 0xE2A PUSH2 0x294C JUMP JUMPDEST POP PUSH0 MLOAD PUSH1 0x20 PUSH2 0x4FB9 PUSH0 CODECOPY PUSH0 MLOAD SWAP1 PUSH0 MSTORE SWAP1 JUMP JUMPDEST PUSH0 PUSH0 PUSH2 0xE47 DUP4 PUSH2 0xB91 JUMP JUMPDEST SWAP1 POP DUP1 DUP5 GT ISZERO PUSH2 0xE79 JUMPI DUP3 DUP5 DUP3 PUSH1 0x40 MLOAD PUSH4 0x3C8097D9 PUSH1 0xE1 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0xE70 SWAP4 SWAP3 SWAP2 SWAP1 PUSH2 0x4BB0 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH0 PUSH2 0xE83 DUP6 PUSH2 0x1F9C JUMP JUMPDEST SWAP1 POP PUSH2 0xE91 CALLER DUP6 DUP8 DUP5 PUSH2 0x2995 JUMP JUMPDEST SWAP5 SWAP4 POP POP POP POP JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH0 SWAP1 DUP2 MSTORE PUSH0 MLOAD PUSH1 0x20 PUSH2 0x4F99 PUSH0 CODECOPY PUSH0 MLOAD SWAP1 PUSH0 MSTORE PUSH1 0x20 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD SWAP1 JUMP JUMPDEST PUSH0 PUSH1 0x2 DUP6 PUSH1 0xFF AND PUSH1 0x20 DUP2 LT PUSH2 0xED6 JUMPI PUSH2 0xED6 PUSH2 0x4B46 JUMP JUMPDEST ADD SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND SWAP1 POP DUP1 PUSH2 0xF01 JUMPI PUSH1 0x40 MLOAD PUSH4 0x2711B74D PUSH1 0xE1 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH0 JUMPDEST PUSH1 0x20 DUP2 LT DUP1 ISZERO PUSH2 0xF30 JUMPI POP PUSH0 PUSH1 0x2 DUP3 PUSH1 0x20 DUP2 LT PUSH2 0xF22 JUMPI PUSH2 0xF22 PUSH2 0x4B46 JUMP JUMPDEST ADD SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND EQ ISZERO JUMPDEST ISZERO PUSH2 0xFA6 JUMPI DUP5 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH1 0x2 DUP3 PUSH1 0x20 DUP2 LT PUSH2 0xF52 JUMPI PUSH2 0xF52 PUSH2 0x4B46 JUMP JUMPDEST ADD SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND EQ DUP1 ISZERO PUSH2 0xF6D JUMPI POP DUP6 PUSH1 0xFF AND DUP2 EQ ISZERO JUMPDEST ISZERO PUSH2 0xF96 JUMPI PUSH1 0x40 MLOAD PUSH4 0xB5A9314F PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP7 AND PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x24 ADD PUSH2 0xE70 JUMP JUMPDEST PUSH2 0xF9F DUP2 PUSH2 0x4B71 JUMP JUMPDEST SWAP1 POP PUSH2 0xF03 JUMP JUMPDEST POP PUSH2 0xFBB DUP2 DUP6 DUP6 PUSH2 0xFB5 PUSH2 0x29F9 JUMP JUMPDEST DUP7 PUSH2 0x2A02 JUMP JUMPDEST DUP4 PUSH1 0x2 DUP7 PUSH1 0xFF AND PUSH1 0x20 DUP2 LT PUSH2 0xFD2 JUMPI PUSH2 0xFD2 PUSH2 0x4B46 JUMP JUMPDEST ADD DUP1 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB NOT AND PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP3 SWAP1 SWAP3 AND SWAP2 SWAP1 SWAP2 OR SWAP1 SSTORE POP POP POP POP POP JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP3 AND PUSH2 0x101F JUMPI PUSH1 0x40 MLOAD PUSH4 0x2711B74D PUSH1 0xE1 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH0 JUMPDEST PUSH1 0x20 DUP2 LT DUP1 ISZERO PUSH2 0x104E JUMPI POP PUSH0 PUSH1 0x2 DUP3 PUSH1 0x20 DUP2 LT PUSH2 0x1040 JUMPI PUSH2 0x1040 PUSH2 0x4B46 JUMP JUMPDEST ADD SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND EQ ISZERO JUMPDEST ISZERO PUSH2 0x10B4 JUMPI DUP3 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH1 0x2 DUP3 PUSH1 0x20 DUP2 LT PUSH2 0x1070 JUMPI PUSH2 0x1070 PUSH2 0x4B46 JUMP JUMPDEST ADD SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND SUB PUSH2 0x10A4 JUMPI PUSH1 0x40 MLOAD PUSH4 0xB5A9314F PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP5 AND PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x24 ADD PUSH2 0xE70 JUMP JUMPDEST PUSH2 0x10AD DUP2 PUSH2 0x4B71 JUMP JUMPDEST SWAP1 POP PUSH2 0x1021 JUMP JUMPDEST PUSH1 0x1F NOT DUP2 ADD PUSH2 0x10D9 JUMPI PUSH1 0x40 MLOAD PUSH1 0x1 PUSH3 0xAD1FAB PUSH1 0xE0 SHL SUB NOT DUP2 MSTORE PUSH1 0x4 ADD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST DUP3 PUSH1 0x2 DUP3 PUSH1 0x20 DUP2 LT PUSH2 0x10ED JUMPI PUSH2 0x10ED PUSH2 0x4B46 JUMP JUMPDEST ADD DUP1 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB NOT AND PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP3 SWAP1 SWAP3 AND SWAP2 SWAP1 SWAP2 OR SWAP1 SSTORE PUSH2 0x1117 DUP2 PUSH1 0x1 PUSH2 0x4BD1 JUMP JUMPDEST PUSH0 DUP3 PUSH1 0x20 DUP2 LT PUSH2 0x1129 JUMPI PUSH2 0x1129 PUSH2 0x4B46 JUMP JUMPDEST PUSH1 0x20 SWAP2 DUP3 DUP3 DIV ADD SWAP2 SWAP1 MOD PUSH2 0x100 EXP DUP2 SLOAD DUP2 PUSH1 0xFF MUL NOT AND SWAP1 DUP4 PUSH1 0xFF AND MUL OR SWAP1 SSTORE POP DUP1 PUSH1 0x1 PUSH2 0x1156 SWAP2 SWAP1 PUSH2 0x4BD1 JUMP JUMPDEST PUSH1 0x1 DUP3 PUSH1 0x20 DUP2 LT PUSH2 0x1169 JUMPI PUSH2 0x1169 PUSH2 0x4B46 JUMP JUMPDEST PUSH1 0x20 SWAP2 DUP3 DUP3 DIV ADD SWAP2 SWAP1 MOD PUSH2 0x100 EXP DUP2 SLOAD DUP2 PUSH1 0xFF MUL NOT AND SWAP1 DUP4 PUSH1 0xFF AND MUL OR SWAP1 SSTORE POP PUSH2 0x11A4 PUSH2 0x1194 PUSH2 0x29F9 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP6 AND SWAP1 PUSH2 0x2B50 JUMP JUMPDEST PUSH2 0x11B7 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP5 AND DUP4 PUSH2 0x2BE2 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH1 0xFF DUP3 AND DUP2 MSTORE PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP5 AND SWAP1 PUSH32 0x4973F7978F2B1810531AED51DC15A8E446CB3191AFCCA470F8CE464AF7494F58 SWAP1 PUSH1 0x20 ADD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 LOG2 POP POP POP JUMP JUMPDEST PUSH0 PUSH0 PUSH1 0x2 DUP5 PUSH1 0xFF AND PUSH1 0x20 DUP2 LT PUSH2 0x1215 JUMPI PUSH2 0x1215 PUSH2 0x4B46 JUMP JUMPDEST ADD SLOAD PUSH1 0x40 DUP1 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP1 SWAP3 AND PUSH1 0x20 DUP4 ADD DUP2 SWAP1 MSTORE PUSH1 0xFF DUP7 AND SWAP2 DUP4 ADD SWAP2 SWAP1 SWAP2 MSTORE SWAP2 POP PUSH2 0xE91 SWAP1 PUSH1 0x60 ADD PUSH1 0x40 MLOAD PUSH1 0x20 DUP2 DUP4 SUB SUB DUP2 MSTORE SWAP1 PUSH1 0x40 MSTORE DUP1 MLOAD PUSH1 0x20 SWAP1 SWAP2 ADD KECCAK256 SWAP1 JUMP JUMPDEST PUSH0 PUSH2 0x126D DUP4 PUSH5 0xFFFFFFFFFF DUP5 AND PUSH2 0x4BF8 JUMP JUMPDEST PUSH2 0xA95 SWAP1 PUSH1 0x80 DUP6 SWAP1 SHL PUSH2 0x4BD1 JUMP JUMPDEST PUSH2 0x1283 PUSH2 0x4354 JUMP JUMPDEST DUP2 MLOAD PUSH0 SWAP1 PUSH1 0x20 LT ISZERO PUSH2 0x12A8 JUMPI PUSH1 0x40 MLOAD PUSH4 0xA29B1F11 PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST DUP3 MLOAD DUP2 LT ISZERO PUSH2 0x1453 JUMPI PUSH1 0x20 PUSH1 0xFF AND DUP4 DUP3 DUP2 MLOAD DUP2 LT PUSH2 0x12C8 JUMPI PUSH2 0x12C8 PUSH2 0x4B46 JUMP JUMPDEST PUSH1 0x20 MUL PUSH1 0x20 ADD ADD MLOAD PUSH1 0xFF AND LT ISZERO DUP1 PUSH2 0x1321 JUMPI POP PUSH0 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH1 0x2 DUP5 DUP4 DUP2 MLOAD DUP2 LT PUSH2 0x12F9 JUMPI PUSH2 0x12F9 PUSH2 0x4B46 JUMP JUMPDEST PUSH1 0x20 MUL PUSH1 0x20 ADD ADD MLOAD PUSH1 0xFF AND PUSH1 0x20 DUP2 LT PUSH2 0x1314 JUMPI PUSH2 0x1314 PUSH2 0x4B46 JUMP JUMPDEST ADD SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND EQ JUMPDEST ISZERO PUSH2 0x133F JUMPI PUSH1 0x40 MLOAD PUSH4 0xA29B1F11 PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST DUP2 DUP4 DUP3 DUP2 MLOAD DUP2 LT PUSH2 0x1352 JUMPI PUSH2 0x1352 PUSH2 0x4B46 JUMP JUMPDEST PUSH1 0x20 MUL PUSH1 0x20 ADD ADD MLOAD PUSH1 0xFF AND PUSH1 0x20 DUP2 LT PUSH2 0x136D JUMPI PUSH2 0x136D PUSH2 0x4B46 JUMP JUMPDEST PUSH1 0x20 MUL ADD MLOAD ISZERO PUSH2 0x13B4 JUMPI DUP3 DUP2 DUP2 MLOAD DUP2 LT PUSH2 0x1389 JUMPI PUSH2 0x1389 PUSH2 0x4B46 JUMP JUMPDEST PUSH1 0x20 MUL PUSH1 0x20 ADD ADD MLOAD PUSH1 0x40 MLOAD PUSH4 0xC41FDBB9 PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0xE70 SWAP2 SWAP1 PUSH1 0xFF SWAP2 SWAP1 SWAP2 AND DUP2 MSTORE PUSH1 0x20 ADD SWAP1 JUMP JUMPDEST PUSH1 0x1 DUP3 DUP5 DUP4 DUP2 MLOAD DUP2 LT PUSH2 0x13C9 JUMPI PUSH2 0x13C9 PUSH2 0x4B46 JUMP JUMPDEST PUSH1 0x20 MUL PUSH1 0x20 ADD ADD MLOAD PUSH1 0xFF AND PUSH1 0x20 DUP2 LT PUSH2 0x13E4 JUMPI PUSH2 0x13E4 PUSH2 0x4B46 JUMP JUMPDEST SWAP2 ISZERO ISZERO PUSH1 0x20 SWAP1 SWAP3 MUL ADD MSTORE DUP3 MLOAD DUP4 SWAP1 DUP3 SWAP1 DUP2 LT PUSH2 0x1402 JUMPI PUSH2 0x1402 PUSH2 0x4B46 JUMP JUMPDEST PUSH1 0x20 MUL PUSH1 0x20 ADD ADD MLOAD PUSH1 0x1 PUSH2 0x1416 SWAP2 SWAP1 PUSH2 0x4B2D JUMP JUMPDEST PUSH0 DUP3 PUSH1 0x20 DUP2 LT PUSH2 0x1428 JUMPI PUSH2 0x1428 PUSH2 0x4B46 JUMP JUMPDEST PUSH1 0x20 SWAP2 DUP3 DUP3 DIV ADD SWAP2 SWAP1 MOD PUSH2 0x100 EXP DUP2 SLOAD DUP2 PUSH1 0xFF MUL NOT AND SWAP1 DUP4 PUSH1 0xFF AND MUL OR SWAP1 SSTORE POP DUP1 PUSH1 0x1 ADD SWAP1 POP PUSH2 0x12A8 JUMP JUMPDEST PUSH1 0x20 DUP2 LT DUP1 ISZERO PUSH2 0x1480 JUMPI POP PUSH0 PUSH1 0x2 DUP3 PUSH1 0x20 DUP2 LT PUSH2 0x1472 JUMPI PUSH2 0x1472 PUSH2 0x4B46 JUMP JUMPDEST ADD SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND EQ ISZERO JUMPDEST ISZERO PUSH2 0x149E JUMPI PUSH1 0x40 MLOAD PUSH4 0x6712B27B PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH32 0x193FC4E628C27AE3CA098952DFC16A40425B44E7B0A97F4CC59D0F267F47CAEC DUP4 PUSH1 0x40 MLOAD PUSH2 0xA6A SWAP2 SWAP1 PUSH2 0x4C0B JUMP JUMPDEST PUSH0 PUSH0 PUSH2 0x14D8 DUP4 PUSH2 0x1F70 JUMP JUMPDEST SWAP1 POP DUP1 DUP5 GT ISZERO PUSH2 0x1501 JUMPI DUP3 DUP5 DUP3 PUSH1 0x40 MLOAD PUSH4 0x284FF667 PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0xE70 SWAP4 SWAP3 SWAP2 SWAP1 PUSH2 0x4BB0 JUMP JUMPDEST PUSH0 PUSH2 0x150B DUP6 PUSH2 0x1C7E JUMP JUMPDEST SWAP1 POP PUSH2 0xE91 CALLER DUP6 DUP4 DUP9 PUSH2 0x2995 JUMP JUMPDEST PUSH32 0x52C63247E1F47DB19D5CE0460030C497F067CA4CEBF71BA98EEADABE20BACE04 DUP1 SLOAD PUSH1 0x60 SWAP2 PUSH0 MLOAD PUSH1 0x20 PUSH2 0x4F99 PUSH0 CODECOPY PUSH0 MLOAD SWAP1 PUSH0 MSTORE SWAP2 PUSH2 0x926 SWAP1 PUSH2 0x4AE1 JUMP JUMPDEST PUSH1 0x20 PUSH1 0xFF DUP4 AND LT PUSH2 0x157B JUMPI PUSH1 0x40 MLOAD PUSH4 0x2711B74D PUSH1 0xE1 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH0 PUSH1 0x2 DUP4 PUSH1 0xFF AND PUSH1 0x20 DUP2 LT PUSH2 0x1592 JUMPI PUSH2 0x1592 PUSH2 0x4B46 JUMP JUMPDEST ADD SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND SWAP1 POP DUP1 PUSH2 0x15BD JUMPI PUSH1 0x40 MLOAD PUSH4 0x2711B74D PUSH1 0xE1 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST DUP2 ISZERO DUP1 ISZERO PUSH2 0x15DB JUMPI POP PUSH2 0x15D8 DUP2 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH2 0x2C30 JUMP JUMPDEST ISZERO ISZERO JUMPDEST ISZERO PUSH2 0x15F9 JUMPI PUSH1 0x40 MLOAD PUSH4 0x43C2DFEF PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH1 0xFF DUP4 AND ISZERO DUP1 ISZERO PUSH2 0x1613 JUMPI POP PUSH1 0x3 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND ISZERO JUMPDEST ISZERO PUSH2 0x1634 JUMPI PUSH1 0x40 MLOAD PUSH1 0x1 PUSH3 0xAD1FAB PUSH1 0xE0 SHL SUB NOT DUP2 MSTORE PUSH1 0x4 ADD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH0 PUSH2 0x1640 DUP5 PUSH1 0x1 PUSH2 0x4B2D JUMP JUMPDEST PUSH1 0xFF AND SWAP1 POP JUMPDEST PUSH1 0x20 DUP2 LT DUP1 ISZERO PUSH2 0x1673 JUMPI POP PUSH0 PUSH1 0x2 DUP3 PUSH1 0x20 DUP2 LT PUSH2 0x1665 JUMPI PUSH2 0x1665 PUSH2 0x4B46 JUMP JUMPDEST ADD SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND EQ ISZERO JUMPDEST ISZERO PUSH2 0x16E2 JUMPI PUSH1 0x2 DUP2 PUSH1 0x20 DUP2 LT PUSH2 0x168B JUMPI PUSH2 0x168B PUSH2 0x4B46 JUMP JUMPDEST ADD SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH1 0x2 PUSH2 0x16A3 PUSH1 0x1 DUP5 PUSH2 0x4C50 JUMP JUMPDEST PUSH1 0x20 DUP2 LT PUSH2 0x16B3 JUMPI PUSH2 0x16B3 PUSH2 0x4B46 JUMP JUMPDEST ADD DUP1 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB NOT AND PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP3 SWAP1 SWAP3 AND SWAP2 SWAP1 SWAP2 OR SWAP1 SSTORE PUSH2 0x16DB DUP2 PUSH2 0x4B71 JUMP JUMPDEST SWAP1 POP PUSH2 0x1646 JUMP JUMPDEST PUSH0 PUSH1 0x2 PUSH2 0x16F0 PUSH1 0x1 DUP5 PUSH2 0x4C50 JUMP JUMPDEST PUSH1 0x20 DUP2 LT PUSH2 0x1700 JUMPI PUSH2 0x1700 PUSH2 0x4B46 JUMP JUMPDEST ADD DUP1 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB NOT AND PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP3 SWAP1 SWAP3 AND SWAP2 SWAP1 SWAP2 OR SWAP1 SSTORE POP PUSH0 DUP1 DUP1 JUMPDEST PUSH1 0x1 DUP4 PUSH1 0x20 DUP2 LT PUSH2 0x1737 JUMPI PUSH2 0x1737 PUSH2 0x4B46 JUMP JUMPDEST PUSH1 0x20 DUP2 DIV SWAP1 SWAP2 ADD SLOAD PUSH1 0xFF PUSH1 0x1F SWAP1 SWAP3 AND PUSH2 0x100 EXP SWAP1 DIV AND ISZERO DUP1 ISZERO SWAP1 PUSH2 0x175B JUMPI POP PUSH1 0x20 DUP4 LT JUMPDEST ISZERO PUSH2 0x1A8D JUMPI DUP1 ISZERO PUSH2 0x181F JUMPI PUSH2 0x1771 DUP7 PUSH1 0x1 PUSH2 0x4B2D JUMP JUMPDEST PUSH1 0xFF AND PUSH1 0x1 DUP5 PUSH1 0x20 DUP2 LT PUSH2 0x1787 JUMPI PUSH2 0x1787 PUSH2 0x4B46 JUMP JUMPDEST PUSH1 0x20 DUP2 DIV SWAP1 SWAP2 ADD SLOAD PUSH1 0xFF PUSH1 0x1F SWAP1 SWAP3 AND PUSH2 0x100 EXP SWAP1 DIV AND GT PUSH2 0x17A8 JUMPI PUSH0 PUSH2 0x17AB JUMP JUMPDEST PUSH1 0x1 JUMPDEST PUSH1 0x1 DUP5 PUSH1 0x20 DUP2 LT PUSH2 0x17BE JUMPI PUSH2 0x17BE PUSH2 0x4B46 JUMP JUMPDEST PUSH1 0x20 SWAP2 DUP3 DUP3 DIV ADD SWAP2 SWAP1 MOD SWAP1 SLOAD SWAP1 PUSH2 0x100 EXP SWAP1 DIV PUSH1 0xFF AND PUSH2 0x17DE SWAP2 SWAP1 PUSH2 0x4C63 JUMP JUMPDEST PUSH1 0x1 PUSH2 0x17EA DUP2 DUP7 PUSH2 0x4C50 JUMP JUMPDEST PUSH1 0x20 DUP2 LT PUSH2 0x17FA JUMPI PUSH2 0x17FA PUSH2 0x4B46 JUMP JUMPDEST PUSH1 0x20 SWAP2 DUP3 DUP3 DIV ADD SWAP2 SWAP1 MOD PUSH2 0x100 EXP DUP2 SLOAD DUP2 PUSH1 0xFF MUL NOT AND SWAP1 DUP4 PUSH1 0xFF AND MUL OR SWAP1 SSTORE POP PUSH2 0x18F0 JUMP JUMPDEST PUSH2 0x182A DUP7 PUSH1 0x1 PUSH2 0x4B2D JUMP JUMPDEST PUSH1 0xFF AND PUSH1 0x1 DUP5 PUSH1 0x20 DUP2 LT PUSH2 0x1840 JUMPI PUSH2 0x1840 PUSH2 0x4B46 JUMP JUMPDEST PUSH1 0x20 DUP2 DIV SWAP1 SWAP2 ADD SLOAD PUSH1 0xFF PUSH1 0x1F SWAP1 SWAP3 AND PUSH2 0x100 EXP SWAP1 DIV AND SUB PUSH2 0x1863 JUMPI POP PUSH1 0x1 PUSH2 0x18F0 JUMP JUMPDEST PUSH2 0x186E DUP7 PUSH1 0x1 PUSH2 0x4B2D JUMP JUMPDEST PUSH1 0xFF AND PUSH1 0x1 DUP5 PUSH1 0x20 DUP2 LT PUSH2 0x1884 JUMPI PUSH2 0x1884 PUSH2 0x4B46 JUMP JUMPDEST PUSH1 0x20 DUP2 DIV SWAP1 SWAP2 ADD SLOAD PUSH1 0xFF PUSH1 0x1F SWAP1 SWAP3 AND PUSH2 0x100 EXP SWAP1 DIV AND GT ISZERO PUSH2 0x18F0 JUMPI PUSH1 0x1 DUP1 DUP5 PUSH1 0x20 DUP2 LT PUSH2 0x18B4 JUMPI PUSH2 0x18B4 PUSH2 0x4B46 JUMP JUMPDEST PUSH1 0x20 SWAP2 DUP3 DUP3 DIV ADD SWAP2 SWAP1 MOD DUP3 DUP3 DUP3 SWAP1 SLOAD SWAP1 PUSH2 0x100 EXP SWAP1 DIV PUSH1 0xFF AND PUSH2 0x18D7 SWAP2 SWAP1 PUSH2 0x4C63 JUMP JUMPDEST SWAP3 POP PUSH2 0x100 EXP DUP2 SLOAD DUP2 PUSH1 0xFF MUL NOT AND SWAP1 DUP4 PUSH1 0xFF AND MUL OR SWAP1 SSTORE POP JUMPDEST DUP2 ISZERO PUSH2 0x19AD JUMPI PUSH2 0x1901 DUP7 PUSH1 0x1 PUSH2 0x4B2D JUMP JUMPDEST PUSH1 0xFF AND PUSH0 DUP5 PUSH1 0x20 DUP2 LT PUSH2 0x1916 JUMPI PUSH2 0x1916 PUSH2 0x4B46 JUMP JUMPDEST PUSH1 0x20 DUP2 DIV SWAP1 SWAP2 ADD SLOAD PUSH1 0xFF PUSH1 0x1F SWAP1 SWAP3 AND PUSH2 0x100 EXP SWAP1 DIV AND GT PUSH2 0x1937 JUMPI PUSH0 PUSH2 0x193A JUMP JUMPDEST PUSH1 0x1 JUMPDEST PUSH0 DUP5 PUSH1 0x20 DUP2 LT PUSH2 0x194C JUMPI PUSH2 0x194C PUSH2 0x4B46 JUMP JUMPDEST PUSH1 0x20 SWAP2 DUP3 DUP3 DIV ADD SWAP2 SWAP1 MOD SWAP1 SLOAD SWAP1 PUSH2 0x100 EXP SWAP1 DIV PUSH1 0xFF AND PUSH2 0x196C SWAP2 SWAP1 PUSH2 0x4C63 JUMP JUMPDEST PUSH0 PUSH2 0x1978 PUSH1 0x1 DUP7 PUSH2 0x4C50 JUMP JUMPDEST PUSH1 0x20 DUP2 LT PUSH2 0x1988 JUMPI PUSH2 0x1988 PUSH2 0x4B46 JUMP JUMPDEST PUSH1 0x20 SWAP2 DUP3 DUP3 DIV ADD SWAP2 SWAP1 MOD PUSH2 0x100 EXP DUP2 SLOAD DUP2 PUSH1 0xFF MUL NOT AND SWAP1 DUP4 PUSH1 0xFF AND MUL OR SWAP1 SSTORE POP PUSH2 0x1A7D JUMP JUMPDEST PUSH2 0x19B8 DUP7 PUSH1 0x1 PUSH2 0x4B2D JUMP JUMPDEST PUSH1 0xFF AND PUSH0 DUP5 PUSH1 0x20 DUP2 LT PUSH2 0x19CD JUMPI PUSH2 0x19CD PUSH2 0x4B46 JUMP JUMPDEST PUSH1 0x20 DUP2 DIV SWAP1 SWAP2 ADD SLOAD PUSH1 0xFF PUSH1 0x1F SWAP1 SWAP3 AND PUSH2 0x100 EXP SWAP1 DIV AND SUB PUSH2 0x19F1 JUMPI PUSH1 0x1 SWAP2 POP PUSH2 0x1A7D JUMP JUMPDEST PUSH2 0x19FC DUP7 PUSH1 0x1 PUSH2 0x4B2D JUMP JUMPDEST PUSH1 0xFF AND PUSH0 DUP5 PUSH1 0x20 DUP2 LT PUSH2 0x1A11 JUMPI PUSH2 0x1A11 PUSH2 0x4B46 JUMP JUMPDEST PUSH1 0x20 DUP2 DIV SWAP1 SWAP2 ADD SLOAD PUSH1 0xFF PUSH1 0x1F SWAP1 SWAP3 AND PUSH2 0x100 EXP SWAP1 DIV AND GT ISZERO PUSH2 0x1A7D JUMPI PUSH1 0x1 PUSH0 DUP5 PUSH1 0x20 DUP2 LT PUSH2 0x1A41 JUMPI PUSH2 0x1A41 PUSH2 0x4B46 JUMP JUMPDEST PUSH1 0x20 SWAP2 DUP3 DUP3 DIV ADD SWAP2 SWAP1 MOD DUP3 DUP3 DUP3 SWAP1 SLOAD SWAP1 PUSH2 0x100 EXP SWAP1 DIV PUSH1 0xFF AND PUSH2 0x1A64 SWAP2 SWAP1 PUSH2 0x4C63 JUMP JUMPDEST SWAP3 POP PUSH2 0x100 EXP DUP2 SLOAD DUP2 PUSH1 0xFF MUL NOT AND SWAP1 DUP4 PUSH1 0xFF AND MUL OR SWAP1 SSTORE POP JUMPDEST PUSH2 0x1A86 DUP4 PUSH2 0x4B71 JUMP JUMPDEST SWAP3 POP PUSH2 0x1724 JUMP JUMPDEST PUSH0 DUP1 PUSH2 0x1A9A PUSH1 0x1 DUP7 PUSH2 0x4C50 JUMP JUMPDEST PUSH1 0x20 DUP2 LT PUSH2 0x1AAA JUMPI PUSH2 0x1AAA PUSH2 0x4B46 JUMP JUMPDEST PUSH1 0x20 SWAP2 DUP3 DUP3 DIV ADD SWAP2 SWAP1 MOD PUSH2 0x100 EXP DUP2 SLOAD DUP2 PUSH1 0xFF MUL NOT AND SWAP1 DUP4 PUSH1 0xFF AND MUL OR SWAP1 SSTORE POP PUSH0 PUSH1 0x1 DUP1 DUP6 PUSH2 0x1AD9 SWAP2 SWAP1 PUSH2 0x4C50 JUMP JUMPDEST PUSH1 0x20 DUP2 LT PUSH2 0x1AE9 JUMPI PUSH2 0x1AE9 PUSH2 0x4B46 JUMP JUMPDEST PUSH1 0x20 SWAP2 DUP3 DUP3 DIV ADD SWAP2 SWAP1 MOD PUSH2 0x100 EXP DUP2 SLOAD DUP2 PUSH1 0xFF MUL NOT AND SWAP1 DUP4 PUSH1 0xFF AND MUL OR SWAP1 SSTORE POP PUSH2 0x1B25 DUP6 DUP6 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH2 0x2C99 SWAP1 SWAP2 SWAP1 PUSH4 0xFFFFFFFF AND JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH1 0xFF DUP8 AND DUP2 MSTORE PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP6 AND SWAP1 PUSH32 0x978014566E371FEF52158B004E150B6E1FD723F5AA3D8C9AA2A7C98DDB0E65B8 SWAP1 PUSH1 0x20 ADD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 LOG2 POP POP POP POP POP POP JUMP JUMPDEST PUSH0 PUSH2 0x1B77 PUSH2 0x2DBE JUMP JUMPDEST DUP1 SLOAD SWAP1 SWAP2 POP PUSH1 0xFF PUSH1 0x1 PUSH1 0x40 SHL DUP3 DIV AND ISZERO SWAP1 PUSH1 0x1 PUSH1 0x1 PUSH1 0x40 SHL SUB AND PUSH0 DUP2 ISZERO DUP1 ISZERO PUSH2 0x1B9D JUMPI POP DUP3 JUMPDEST SWAP1 POP PUSH0 DUP3 PUSH1 0x1 PUSH1 0x1 PUSH1 0x40 SHL SUB AND PUSH1 0x1 EQ DUP1 ISZERO PUSH2 0x1BB8 JUMPI POP ADDRESS EXTCODESIZE ISZERO JUMPDEST SWAP1 POP DUP2 ISZERO DUP1 ISZERO PUSH2 0x1BC6 JUMPI POP DUP1 ISZERO JUMPDEST ISZERO PUSH2 0x1BE4 JUMPI PUSH1 0x40 MLOAD PUSH4 0xF92EE8A9 PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST DUP5 SLOAD PUSH8 0xFFFFFFFFFFFFFFFF NOT AND PUSH1 0x1 OR DUP6 SSTORE DUP4 ISZERO PUSH2 0x1C0E JUMPI DUP5 SLOAD PUSH1 0xFF PUSH1 0x40 SHL NOT AND PUSH1 0x1 PUSH1 0x40 SHL OR DUP6 SSTORE JUMPDEST PUSH2 0x1C1D DUP13 DUP13 DUP13 DUP13 DUP13 DUP13 DUP13 PUSH2 0x2DE6 JUMP JUMPDEST DUP4 ISZERO PUSH2 0x1C63 JUMPI DUP5 SLOAD PUSH1 0xFF PUSH1 0x40 SHL NOT AND DUP6 SSTORE PUSH1 0x40 MLOAD PUSH1 0x1 DUP2 MSTORE PUSH32 0xC7F505B2F371AE2175EE4913F4499E1F2633A7B5936321EED1CDAEB6115181D2 SWAP1 PUSH1 0x20 ADD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 LOG1 JUMPDEST POP POP POP POP POP POP POP POP POP POP POP POP JUMP JUMPDEST PUSH0 CALLER PUSH2 0x9C6 DUP2 DUP6 DUP6 PUSH2 0x2472 JUMP JUMPDEST PUSH0 PUSH2 0x9B3 DUP3 PUSH1 0x1 PUSH2 0x2337 JUMP JUMPDEST PUSH0 PUSH0 PUSH2 0x1C95 DUP4 PUSH2 0x1FA7 JUMP JUMPDEST SWAP1 POP DUP1 DUP6 GT ISZERO PUSH2 0x1CBE JUMPI DUP3 DUP6 DUP3 PUSH1 0x40 MLOAD PUSH4 0x3FA733BB PUSH1 0xE2 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0xE70 SWAP4 SWAP3 SWAP2 SWAP1 PUSH2 0x4BB0 JUMP JUMPDEST PUSH0 PUSH2 0x1CC8 DUP7 PUSH2 0x9D0 JUMP JUMPDEST SWAP1 POP PUSH2 0xB88 CALLER DUP7 DUP7 DUP10 DUP6 PUSH2 0x2E16 JUMP JUMPDEST PUSH0 PUSH0 PUSH2 0x1CE2 DUP4 PUSH2 0x1FBD JUMP JUMPDEST SWAP1 POP DUP1 DUP6 GT ISZERO PUSH2 0x1D0B JUMPI DUP3 DUP6 DUP3 PUSH1 0x40 MLOAD PUSH4 0x2E52AFBB PUSH1 0xE2 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0xE70 SWAP4 SWAP3 SWAP2 SWAP1 PUSH2 0x4BB0 JUMP JUMPDEST PUSH0 PUSH2 0x1D15 DUP7 PUSH2 0x9A8 JUMP JUMPDEST SWAP1 POP PUSH2 0xB88 CALLER DUP7 DUP7 DUP5 DUP11 PUSH2 0x2E16 JUMP JUMPDEST PUSH2 0x1D2C PUSH2 0x4354 JUMP JUMPDEST DUP2 MLOAD PUSH0 SWAP1 PUSH1 0x20 LT ISZERO PUSH2 0x1D51 JUMPI PUSH1 0x40 MLOAD PUSH4 0xA29B1F11 PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST DUP3 MLOAD DUP2 PUSH1 0xFF AND LT ISZERO PUSH2 0x1EF0 JUMPI PUSH1 0x20 PUSH1 0xFF AND DUP4 DUP3 PUSH1 0xFF AND DUP2 MLOAD DUP2 LT PUSH2 0x1D77 JUMPI PUSH2 0x1D77 PUSH2 0x4B46 JUMP JUMPDEST PUSH1 0x20 MUL PUSH1 0x20 ADD ADD MLOAD PUSH1 0xFF AND LT ISZERO DUP1 PUSH2 0x1DD3 JUMPI POP PUSH0 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH1 0x2 DUP5 DUP4 PUSH1 0xFF AND DUP2 MLOAD DUP2 LT PUSH2 0x1DAB JUMPI PUSH2 0x1DAB PUSH2 0x4B46 JUMP JUMPDEST PUSH1 0x20 MUL PUSH1 0x20 ADD ADD MLOAD PUSH1 0xFF AND PUSH1 0x20 DUP2 LT PUSH2 0x1DC6 JUMPI PUSH2 0x1DC6 PUSH2 0x4B46 JUMP JUMPDEST ADD SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND EQ JUMPDEST ISZERO PUSH2 0x1DF1 JUMPI PUSH1 0x40 MLOAD PUSH4 0xA29B1F11 PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST DUP2 DUP4 DUP3 PUSH1 0xFF AND DUP2 MLOAD DUP2 LT PUSH2 0x1E07 JUMPI PUSH2 0x1E07 PUSH2 0x4B46 JUMP JUMPDEST PUSH1 0x20 MUL PUSH1 0x20 ADD ADD MLOAD PUSH1 0xFF AND PUSH1 0x20 DUP2 LT PUSH2 0x1E22 JUMPI PUSH2 0x1E22 PUSH2 0x4B46 JUMP JUMPDEST PUSH1 0x20 MUL ADD MLOAD ISZERO PUSH2 0x1E41 JUMPI DUP3 DUP2 PUSH1 0xFF AND DUP2 MLOAD DUP2 LT PUSH2 0x1389 JUMPI PUSH2 0x1389 PUSH2 0x4B46 JUMP JUMPDEST PUSH1 0x1 DUP3 DUP5 DUP4 PUSH1 0xFF AND DUP2 MLOAD DUP2 LT PUSH2 0x1E59 JUMPI PUSH2 0x1E59 PUSH2 0x4B46 JUMP JUMPDEST PUSH1 0x20 MUL PUSH1 0x20 ADD ADD MLOAD PUSH1 0xFF AND PUSH1 0x20 DUP2 LT PUSH2 0x1E74 JUMPI PUSH2 0x1E74 PUSH2 0x4B46 JUMP JUMPDEST SWAP2 ISZERO ISZERO PUSH1 0x20 SWAP1 SWAP3 MUL ADD MSTORE DUP3 MLOAD DUP4 SWAP1 PUSH1 0xFF DUP4 AND SWAP1 DUP2 LT PUSH2 0x1E95 JUMPI PUSH2 0x1E95 PUSH2 0x4B46 JUMP JUMPDEST PUSH1 0x20 MUL PUSH1 0x20 ADD ADD MLOAD PUSH1 0x1 PUSH2 0x1EA9 SWAP2 SWAP1 PUSH2 0x4B2D JUMP JUMPDEST PUSH1 0x1 DUP3 PUSH1 0xFF AND PUSH1 0x20 DUP2 LT PUSH2 0x1EBF JUMPI PUSH2 0x1EBF PUSH2 0x4B46 JUMP JUMPDEST PUSH1 0x20 SWAP2 DUP3 DUP3 DIV ADD SWAP2 SWAP1 MOD PUSH2 0x100 EXP DUP2 SLOAD DUP2 PUSH1 0xFF MUL NOT AND SWAP1 DUP4 PUSH1 0xFF AND MUL OR SWAP1 SSTORE POP DUP1 PUSH2 0x1EE9 SWAP1 PUSH2 0x4C7C JUMP JUMPDEST SWAP1 POP PUSH2 0x1D51 JUMP JUMPDEST PUSH1 0x20 PUSH1 0xFF DUP3 AND LT DUP1 ISZERO PUSH2 0x1F23 JUMPI POP PUSH0 PUSH1 0x2 PUSH1 0xFF DUP4 AND PUSH1 0x20 DUP2 LT PUSH2 0x1F15 JUMPI PUSH2 0x1F15 PUSH2 0x4B46 JUMP JUMPDEST ADD SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND EQ ISZERO JUMPDEST ISZERO PUSH2 0x1F41 JUMPI PUSH1 0x40 MLOAD PUSH4 0x6712B27B PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH32 0x3C56B6BCA0D55EDA581F8F2819D1F85D3B91CFCC24914A8FA39D301796D8964C DUP4 PUSH1 0x40 MLOAD PUSH2 0xA6A SWAP2 SWAP1 PUSH2 0x4C0B JUMP JUMPDEST PUSH0 PUSH0 PUSH2 0x1F7A PUSH2 0x263F JUMP JUMPDEST SWAP1 POP PUSH0 NOT DUP2 EQ PUSH2 0x1F93 JUMPI PUSH2 0x1F8E DUP2 PUSH0 PUSH2 0x23A0 JUMP JUMPDEST PUSH2 0xA95 JUMP JUMPDEST PUSH0 NOT SWAP4 SWAP3 POP POP POP JUMP JUMPDEST PUSH0 PUSH2 0x9B3 DUP3 PUSH0 PUSH2 0x23A0 JUMP JUMPDEST PUSH0 PUSH0 PUSH2 0x1FB2 DUP4 PUSH2 0x2F2D JUMP JUMPDEST SWAP1 POP PUSH2 0xA95 DUP2 PUSH2 0x2F3A JUMP JUMPDEST PUSH0 PUSH0 PUSH2 0x1FC8 DUP4 PUSH2 0x2FCF JUMP JUMPDEST SWAP1 POP PUSH0 PUSH2 0x1FD5 DUP3 PUSH0 PUSH2 0x2337 JUMP JUMPDEST SWAP1 POP PUSH0 PUSH2 0x1FE1 DUP3 PUSH2 0x2F3A JUMP JUMPDEST SWAP1 POP DUP2 DUP2 EQ PUSH2 0x1FF9 JUMPI PUSH2 0x1FF4 DUP2 PUSH0 PUSH2 0x23A0 JUMP JUMPDEST PUSH2 0xB88 JUMP JUMPDEST POP SWAP1 SWAP4 SWAP3 POP POP POP JUMP JUMPDEST PUSH2 0x200A PUSH2 0x4354 JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH2 0x400 DUP2 ADD SWAP2 DUP3 SWAP1 MSTORE SWAP1 PUSH1 0x2 SWAP1 PUSH1 0x20 SWAP1 DUP3 DUP5 JUMPDEST DUP2 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP2 MSTORE PUSH1 0x1 SWAP1 SWAP2 ADD SWAP1 PUSH1 0x20 ADD DUP1 DUP4 GT PUSH2 0x2021 JUMPI POP POP POP POP POP SWAP1 POP SWAP1 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP2 DUP3 AND PUSH0 SWAP1 DUP2 MSTORE PUSH32 0x52C63247E1F47DB19D5CE0460030C497F067CA4CEBF71BA98EEADABE20BACE01 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 PUSH0 PUSH1 0x20 PUSH1 0xFF DUP6 AND LT ISZERO DUP1 PUSH2 0x20A9 JUMPI POP PUSH1 0x20 PUSH1 0xFF DUP5 AND LT ISZERO JUMPDEST ISZERO PUSH2 0x20C7 JUMPI PUSH1 0x40 MLOAD PUSH4 0x2711B74D PUSH1 0xE1 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH0 PUSH1 0x2 DUP6 PUSH1 0xFF AND PUSH1 0x20 DUP2 LT PUSH2 0x20DE JUMPI PUSH2 0x20DE PUSH2 0x4B46 JUMP JUMPDEST ADD SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND SWAP1 POP PUSH0 PUSH1 0x2 PUSH1 0xFF DUP7 AND PUSH1 0x20 DUP2 LT PUSH2 0x2102 JUMPI PUSH2 0x2102 PUSH2 0x4B46 JUMP JUMPDEST ADD SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP1 DUP2 AND SWAP2 POP DUP3 AND ISZERO DUP1 PUSH2 0x2126 JUMPI POP PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 AND ISZERO JUMPDEST ISZERO PUSH2 0x2144 JUMPI PUSH1 0x40 MLOAD PUSH4 0x2711B74D PUSH1 0xE1 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH0 NOT DUP5 SUB PUSH2 0x2161 JUMPI PUSH2 0x215E DUP3 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH2 0x2C30 JUMP JUMPDEST SWAP4 POP JUMPDEST DUP4 PUSH0 SUB PUSH2 0x2172 JUMPI PUSH0 SWAP3 POP POP POP PUSH2 0xA95 JUMP JUMPDEST PUSH2 0x2184 DUP3 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH2 0x2FD9 JUMP JUMPDEST DUP5 GT ISZERO PUSH2 0x21B9 JUMPI PUSH2 0x219D DUP3 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH2 0x2FD9 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH4 0x3CE011D5 PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0xE70 SWAP2 DUP2 MSTORE PUSH1 0x20 ADD SWAP1 JUMP JUMPDEST PUSH2 0x21CB DUP2 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH2 0x3007 JUMP JUMPDEST DUP5 GT ISZERO PUSH2 0x2200 JUMPI PUSH2 0x21E4 DUP2 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH2 0x3007 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH4 0x50A3E375 PUSH1 0xE1 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0xE70 SWAP2 DUP2 MSTORE PUSH1 0x20 ADD SWAP1 JUMP JUMPDEST PUSH2 0x2214 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP4 AND DUP6 PUSH0 PUSH2 0x3035 JUMP JUMPDEST POP PUSH2 0x2229 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP3 AND DUP6 PUSH0 PUSH2 0x3171 JUMP JUMPDEST POP DUP1 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP3 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH32 0xB0850B8E0F9E8315DDE3C9F9F31138283E6BBE16CD29E8552EB1DCDF9FAC9E3B DUP7 PUSH1 0x40 MLOAD PUSH2 0x226F SWAP2 DUP2 MSTORE PUSH1 0x20 ADD SWAP1 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 LOG3 POP SWAP2 SWAP5 SWAP4 POP POP POP POP JUMP JUMPDEST PUSH2 0x2289 PUSH2 0x4354 JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH2 0x400 DUP2 ADD SWAP2 DUP3 SWAP1 MSTORE PUSH0 DUP1 SLOAD PUSH1 0xFF AND DUP3 MSTORE SWAP1 SWAP2 PUSH1 0x20 SWAP1 DUP3 PUSH1 0x1 DUP4 DUP7 ADD DUP1 DUP5 GT PUSH2 0xDE9 JUMPI SWAP1 POP POP POP POP POP POP SWAP1 POP SWAP1 JUMP JUMPDEST PUSH0 PUSH0 JUMPDEST PUSH0 PUSH1 0x2 DUP3 PUSH1 0x20 DUP2 LT PUSH2 0x22D3 JUMPI PUSH2 0x22D3 PUSH2 0x4B46 JUMP JUMPDEST ADD SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND EQ DUP1 ISZERO SWAP1 PUSH2 0x22EC JUMPI POP PUSH1 0x20 DUP2 LT JUMPDEST ISZERO PUSH2 0x2333 JUMPI PUSH2 0x2317 PUSH1 0x2 DUP3 PUSH1 0x20 DUP2 LT PUSH2 0x2307 JUMPI PUSH2 0x2307 PUSH2 0x4B46 JUMP JUMPDEST ADD SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH2 0x2C30 JUMP JUMPDEST PUSH2 0x2321 SWAP1 DUP4 PUSH2 0x4BD1 JUMP JUMPDEST SWAP2 POP PUSH2 0x232C DUP2 PUSH2 0x4B71 JUMP JUMPDEST SWAP1 POP PUSH2 0x22BF JUMP JUMPDEST POP SWAP1 JUMP JUMPDEST PUSH0 PUSH2 0xA95 PUSH2 0x2343 PUSH2 0x8DA JUMP JUMPDEST PUSH2 0x234E SWAP1 PUSH1 0x1 PUSH2 0x4BD1 JUMP JUMPDEST PUSH2 0x2359 PUSH0 PUSH1 0xA PUSH2 0x4D7D JUMP JUMPDEST PUSH32 0x52C63247E1F47DB19D5CE0460030C497F067CA4CEBF71BA98EEADABE20BACE02 SLOAD PUSH2 0x2385 SWAP2 SWAP1 PUSH2 0x4BD1 JUMP JUMPDEST DUP6 SWAP2 SWAP1 DUP6 PUSH2 0x3292 JUMP JUMPDEST PUSH2 0x239B DUP4 DUP4 DUP4 PUSH1 0x1 PUSH2 0x32D4 JUMP JUMPDEST POP POP POP JUMP JUMPDEST PUSH0 PUSH2 0xA95 PUSH2 0x23AF DUP3 PUSH1 0xA PUSH2 0x4D7D JUMP JUMPDEST PUSH32 0x52C63247E1F47DB19D5CE0460030C497F067CA4CEBF71BA98EEADABE20BACE02 SLOAD PUSH2 0x23DB SWAP2 SWAP1 PUSH2 0x4BD1 JUMP JUMPDEST PUSH2 0x23E3 PUSH2 0x8DA JUMP JUMPDEST PUSH2 0x2385 SWAP1 PUSH1 0x1 PUSH2 0x4BD1 JUMP JUMPDEST PUSH0 PUSH1 0x1 PUSH1 0x1 PUSH1 0x80 SHL SUB DUP3 GT ISZERO PUSH2 0x2333 JUMPI PUSH1 0x40 MLOAD PUSH4 0x6DFCC65 PUSH1 0xE4 SHL DUP2 MSTORE PUSH1 0x80 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x24 DUP2 ADD DUP4 SWAP1 MSTORE PUSH1 0x44 ADD PUSH2 0xE70 JUMP JUMPDEST PUSH0 PUSH2 0x242C DUP5 DUP5 PUSH2 0x2048 JUMP JUMPDEST SWAP1 POP PUSH0 NOT DUP2 LT ISZERO PUSH2 0x246C JUMPI DUP2 DUP2 LT ISZERO PUSH2 0x245E JUMPI DUP3 DUP2 DUP4 PUSH1 0x40 MLOAD PUSH4 0x7DC7A0D9 PUSH1 0xE1 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0xE70 SWAP4 SWAP3 SWAP2 SWAP1 PUSH2 0x4BB0 JUMP JUMPDEST PUSH2 0x246C DUP5 DUP5 DUP5 DUP5 SUB PUSH0 PUSH2 0x32D4 JUMP JUMPDEST POP POP POP POP JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP4 AND PUSH2 0x249B JUMPI PUSH1 0x40 MLOAD PUSH4 0x4B637E8F PUSH1 0xE1 SHL DUP2 MSTORE PUSH0 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x24 ADD PUSH2 0xE70 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP3 AND PUSH2 0x24C4 JUMPI PUSH1 0x40 MLOAD PUSH4 0xEC442F05 PUSH1 0xE0 SHL DUP2 MSTORE PUSH0 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x24 ADD PUSH2 0xE70 JUMP JUMPDEST PUSH2 0x239B DUP4 DUP4 DUP4 PUSH2 0x33B7 JUMP JUMPDEST PUSH0 ADDRESS PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH4 0x3A7B7A39 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 GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x250C JUMPI RETURNDATASIZE PUSH0 PUSH0 RETURNDATACOPY RETURNDATASIZE PUSH0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP3 ADD DUP1 PUSH1 0x40 MSTORE POP DUP2 ADD SWAP1 PUSH2 0x2530 SWAP2 SWAP1 PUSH2 0x4D8B JUMP JUMPDEST SWAP1 POP PUSH0 DUP2 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH4 0xB7009613 CALLER ADDRESS PUSH2 0x254E DUP10 DUP10 PUSH2 0x11FD JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH1 0xE0 DUP6 SWAP1 SHL PUSH1 0x1 PUSH1 0x1 PUSH1 0xE0 SHL SUB NOT SWAP1 DUP2 AND DUP3 MSTORE PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP5 DUP6 AND PUSH1 0x4 DUP4 ADD MSTORE SWAP3 SWAP1 SWAP4 AND PUSH1 0x24 DUP5 ADD MSTORE AND PUSH1 0x44 DUP3 ADD MSTORE PUSH1 0x64 ADD PUSH1 0x40 DUP1 MLOAD DUP1 DUP4 SUB DUP2 DUP7 GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x25A0 JUMPI RETURNDATASIZE PUSH0 PUSH0 RETURNDATACOPY RETURNDATASIZE PUSH0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP3 ADD DUP1 PUSH1 0x40 MSTORE POP DUP2 ADD SWAP1 PUSH2 0x25C4 SWAP2 SWAP1 PUSH2 0x4DA6 JUMP JUMPDEST POP SWAP1 POP DUP1 PUSH2 0x25E6 JUMPI PUSH1 0x40 MLOAD PUSH3 0xD1953B PUSH1 0xE3 SHL DUP2 MSTORE CALLER PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x24 ADD PUSH2 0xE70 JUMP JUMPDEST POP POP POP POP POP JUMP JUMPDEST PUSH1 0x60 PUSH2 0xE91 DUP4 DUP4 PUSH1 0x40 MLOAD PUSH1 0x24 ADD PUSH2 0x2605 SWAP3 SWAP2 SWAP1 PUSH2 0x4DDB JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH1 0x1F NOT DUP2 DUP5 SUB ADD DUP2 MSTORE SWAP2 SWAP1 MSTORE PUSH1 0x20 DUP2 ADD DUP1 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xE0 SHL SUB AND PUSH4 0x4C0D8E1 PUSH1 0xE1 SHL OR SWAP1 MSTORE PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP7 AND SWAP1 PUSH2 0x34DD JUMP JUMPDEST PUSH0 PUSH0 PUSH0 JUMPDEST PUSH0 PUSH1 0x2 DUP3 PUSH1 0x20 DUP2 LT PUSH2 0x2657 JUMPI PUSH2 0x2657 PUSH2 0x4B46 JUMP JUMPDEST ADD SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND EQ DUP1 ISZERO SWAP1 PUSH2 0x2670 JUMPI POP PUSH1 0x20 DUP2 LT JUMPDEST ISZERO PUSH2 0x26CE JUMPI PUSH2 0x26AC DUP4 PUSH2 0x269F PUSH1 0x2 DUP5 PUSH1 0x20 DUP2 LT PUSH2 0x268F JUMPI PUSH2 0x268F PUSH2 0x4B46 JUMP JUMPDEST ADD SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH2 0x3007 JUMP JUMPDEST DUP2 ADD SWAP1 DUP2 LT ISZERO SWAP2 SWAP1 DUP3 MUL SWAP1 JUMP JUMPDEST SWAP4 POP SWAP2 POP DUP2 PUSH2 0x26BE JUMPI PUSH0 NOT SWAP3 POP POP POP SWAP1 JUMP JUMPDEST PUSH2 0x26C7 DUP2 PUSH2 0x4B71 JUMP JUMPDEST SWAP1 POP PUSH2 0x2643 JUMP JUMPDEST POP POP SWAP1 JUMP JUMPDEST DUP1 PUSH0 JUMPDEST DUP2 ISZERO DUP1 ISZERO SWAP1 PUSH2 0x270B JUMPI POP PUSH0 DUP2 PUSH1 0x20 DUP2 LT PUSH2 0x26F2 JUMPI PUSH2 0x26F2 PUSH2 0x4B46 JUMP JUMPDEST PUSH1 0x20 DUP2 DIV SWAP1 SWAP2 ADD SLOAD PUSH1 0xFF PUSH1 0x1F SWAP1 SWAP3 AND PUSH2 0x100 EXP SWAP1 DIV AND ISZERO ISZERO JUMPDEST DUP1 ISZERO PUSH2 0x2717 JUMPI POP PUSH1 0x20 DUP2 LT JUMPDEST ISZERO PUSH2 0x27CA JUMPI PUSH0 PUSH1 0x2 PUSH1 0x1 PUSH0 DUP5 PUSH1 0x20 DUP2 LT PUSH2 0x2733 JUMPI PUSH2 0x2733 PUSH2 0x4B46 JUMP JUMPDEST PUSH1 0x20 SWAP2 DUP3 DUP3 DIV ADD SWAP2 SWAP1 MOD SWAP1 SLOAD SWAP1 PUSH2 0x100 EXP SWAP1 DIV PUSH1 0xFF AND PUSH2 0x2753 SWAP2 SWAP1 PUSH2 0x4C63 JUMP JUMPDEST PUSH1 0xFF AND PUSH1 0x20 DUP2 LT PUSH2 0x2766 JUMPI PUSH2 0x2766 PUSH2 0x4B46 JUMP JUMPDEST ADD SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND SWAP1 POP PUSH0 PUSH2 0x2786 DUP5 PUSH2 0x2781 DUP5 PUSH2 0x3007 JUMP JUMPDEST PUSH2 0x357D JUMP JUMPDEST SWAP1 POP DUP1 PUSH0 SUB PUSH2 0x2796 JUMPI POP POP PUSH2 0x27BA JUMP JUMPDEST PUSH2 0x27AA PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP4 AND DUP3 PUSH0 PUSH2 0x3171 JUMP JUMPDEST POP PUSH2 0x27B5 DUP2 DUP6 PUSH2 0x4C50 JUMP JUMPDEST SWAP4 POP POP POP JUMPDEST PUSH2 0x27C3 DUP2 PUSH2 0x4B71 JUMP JUMPDEST SWAP1 POP PUSH2 0x26D6 JUMP JUMPDEST POP DUP1 ISZERO PUSH2 0xD38 JUMPI PUSH1 0x40 MLOAD PUSH4 0x285A546D PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST ADDRESS PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB PUSH32 0x0 AND EQ DUP1 PUSH2 0x2870 JUMPI POP PUSH32 0x0 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH2 0x2864 PUSH0 MLOAD PUSH1 0x20 PUSH2 0x4FB9 PUSH0 CODECOPY PUSH0 MLOAD SWAP1 PUSH0 MSTORE SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND SWAP1 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND EQ ISZERO JUMPDEST ISZERO PUSH2 0x288E JUMPI PUSH1 0x40 MLOAD PUSH4 0x703E46DD PUSH1 0xE1 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST JUMP JUMPDEST DUP2 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH4 0x52D1902D 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 GAS STATICCALL SWAP3 POP POP POP DUP1 ISZERO PUSH2 0x28EA JUMPI POP PUSH1 0x40 DUP1 MLOAD PUSH1 0x1F RETURNDATASIZE SWAP1 DUP2 ADD PUSH1 0x1F NOT AND DUP3 ADD SWAP1 SWAP3 MSTORE PUSH2 0x28E7 SWAP2 DUP2 ADD SWAP1 PUSH2 0x4B5A JUMP JUMPDEST PUSH1 0x1 JUMPDEST PUSH2 0x2912 JUMPI PUSH1 0x40 MLOAD PUSH4 0x4C9C8CE3 PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP4 AND PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x24 ADD PUSH2 0xE70 JUMP JUMPDEST PUSH0 MLOAD PUSH1 0x20 PUSH2 0x4FB9 PUSH0 CODECOPY PUSH0 MLOAD SWAP1 PUSH0 MSTORE DUP2 EQ PUSH2 0x2942 JUMPI PUSH1 0x40 MLOAD PUSH4 0x2A875269 PUSH1 0xE2 SHL DUP2 MSTORE PUSH1 0x4 DUP2 ADD DUP3 SWAP1 MSTORE PUSH1 0x24 ADD PUSH2 0xE70 JUMP JUMPDEST PUSH2 0x239B DUP4 DUP4 PUSH2 0x358C JUMP JUMPDEST ADDRESS PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB PUSH32 0x0 AND EQ PUSH2 0x288E JUMPI PUSH1 0x40 MLOAD PUSH4 0x703E46DD PUSH1 0xE1 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH0 MLOAD PUSH1 0x20 PUSH2 0x4F79 PUSH0 CODECOPY PUSH0 MLOAD SWAP1 PUSH0 MSTORE DUP1 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0x80 SHL SUB AND ISZERO PUSH2 0x29ED JUMPI PUSH0 PUSH2 0x29BC PUSH2 0x35E1 JUMP JUMPDEST SWAP1 POP PUSH2 0x29C7 DUP5 PUSH2 0x3613 JUMP JUMPDEST PUSH0 DUP3 DUP2 MSTORE PUSH1 0x1 DUP5 ADD PUSH1 0x20 MSTORE PUSH1 0x40 DUP2 KECCAK256 DUP1 SLOAD SWAP1 SWAP2 SWAP1 PUSH2 0x29E6 SWAP1 DUP5 SWAP1 PUSH2 0x4B89 JUMP JUMPDEST SWAP1 SWAP2 SSTORE POP POP POP JUMPDEST PUSH2 0x25E6 DUP6 DUP6 DUP6 DUP6 PUSH2 0x363F JUMP JUMPDEST PUSH0 PUSH2 0x8E3 PUSH2 0xADE JUMP JUMPDEST PUSH2 0x2A0C DUP5 DUP4 PUSH2 0x2B50 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH4 0xF3E0FFBF PUSH1 0xE0 SHL DUP2 MSTORE ADDRESS PUSH1 0x4 DUP3 ADD MSTORE PUSH2 0x2A7E SWAP1 DUP7 SWAP1 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP3 AND SWAP1 PUSH4 0xF3E0FFBF SWAP1 PUSH1 0x24 ADD PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x2A54 JUMPI RETURNDATASIZE PUSH0 PUSH0 RETURNDATACOPY RETURNDATASIZE PUSH0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP3 ADD DUP1 PUSH1 0x40 MSTORE POP DUP2 ADD SWAP1 PUSH2 0x2A78 SWAP2 SWAP1 PUSH2 0x4B5A JUMP JUMPDEST DUP4 PUSH2 0x3035 JUMP JUMPDEST POP PUSH2 0x2A89 DUP6 DUP3 PUSH2 0x2C99 JUMP JUMPDEST PUSH2 0x2A93 DUP5 DUP5 PUSH2 0x2BE2 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH4 0x70A08231 PUSH1 0xE0 SHL DUP2 MSTORE ADDRESS PUSH1 0x4 DUP3 ADD MSTORE PUSH2 0x2B05 SWAP1 DUP6 SWAP1 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP6 AND SWAP1 PUSH4 0x70A08231 SWAP1 PUSH1 0x24 ADD PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x2ADB JUMPI RETURNDATASIZE PUSH0 PUSH0 RETURNDATACOPY RETURNDATASIZE PUSH0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP3 ADD DUP1 PUSH1 0x40 MSTORE POP DUP2 ADD SWAP1 PUSH2 0x2AFF SWAP2 SWAP1 PUSH2 0x4B5A JUMP JUMPDEST DUP4 PUSH2 0x3171 JUMP JUMPDEST POP PUSH1 0x40 DUP1 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP1 DUP9 AND DUP3 MSTORE DUP7 AND PUSH1 0x20 DUP3 ADD MSTORE PUSH32 0x254C88E7A2EA123AEEB89B7CC413FB949188FEFCDB7584C4F3D493294DAF65C5 SWAP2 ADD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 LOG1 POP POP POP POP POP JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH4 0x4E2333D1 PUSH1 0xE1 SHL DUP2 MSTORE ADDRESS PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP1 DUP4 AND SWAP2 SWAP1 DUP5 AND SWAP1 PUSH4 0x9C4667A2 SWAP1 PUSH1 0x24 ADD PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x2B97 JUMPI RETURNDATASIZE PUSH0 PUSH0 RETURNDATACOPY RETURNDATASIZE PUSH0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP3 ADD DUP1 PUSH1 0x40 MSTORE POP DUP2 ADD SWAP1 PUSH2 0x2BBB SWAP2 SWAP1 PUSH2 0x4D8B JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND EQ PUSH2 0xD38 JUMPI PUSH1 0x40 MLOAD PUSH4 0xE76673EF PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH2 0x239B DUP2 PUSH1 0x40 MLOAD PUSH1 0x24 ADD PUSH2 0x2BF6 SWAP2 SWAP1 PUSH2 0x43A1 JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH1 0x1F NOT DUP2 DUP5 SUB ADD DUP2 MSTORE SWAP2 SWAP1 MSTORE PUSH1 0x20 DUP2 ADD DUP1 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xE0 SHL SUB AND PUSH4 0x139A8E25 PUSH1 0xE3 SHL OR SWAP1 MSTORE PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP5 AND SWAP1 PUSH2 0x34DD JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH4 0xF3E0FFBF PUSH1 0xE0 SHL DUP2 MSTORE ADDRESS PUSH1 0x4 DUP3 ADD MSTORE PUSH0 SWAP1 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP4 AND SWAP1 PUSH4 0xF3E0FFBF SWAP1 PUSH1 0x24 ADD JUMPDEST PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x2C75 JUMPI RETURNDATASIZE PUSH0 PUSH0 RETURNDATACOPY RETURNDATASIZE PUSH0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP3 ADD DUP1 PUSH1 0x40 MSTORE POP DUP2 ADD SWAP1 PUSH2 0x9B3 SWAP2 SWAP1 PUSH2 0x4B5A JUMP JUMPDEST DUP1 ISZERO PUSH2 0x2D74 JUMPI PUSH1 0x40 MLOAD PUSH1 0x1 PUSH1 0x24 DUP3 ADD MSTORE PUSH0 SWAP1 DUP2 SWAP1 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP6 AND SWAP1 PUSH1 0x44 ADD PUSH1 0x40 DUP1 MLOAD PUSH1 0x1F NOT DUP2 DUP5 SUB ADD DUP2 MSTORE SWAP2 DUP2 MSTORE PUSH1 0x20 DUP3 ADD DUP1 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xE0 SHL SUB AND PUSH4 0x2D08BA2B PUSH1 0xE1 SHL OR SWAP1 MSTORE MLOAD PUSH2 0x2CF0 SWAP2 SWAP1 PUSH2 0x4DF6 JUMP JUMPDEST PUSH0 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP6 GAS DELEGATECALL SWAP2 POP POP RETURNDATASIZE DUP1 PUSH0 DUP2 EQ PUSH2 0x2D28 JUMPI PUSH1 0x40 MLOAD SWAP2 POP PUSH1 0x1F NOT PUSH1 0x3F RETURNDATASIZE ADD AND DUP3 ADD PUSH1 0x40 MSTORE RETURNDATASIZE DUP3 MSTORE RETURNDATASIZE PUSH0 PUSH1 0x20 DUP5 ADD RETURNDATACOPY PUSH2 0x2D2D JUMP JUMPDEST PUSH1 0x60 SWAP2 POP JUMPDEST POP SWAP2 POP SWAP2 POP DUP2 PUSH2 0x246C JUMPI PUSH32 0x9F864ACE9F45C2734F9444CB9A0C1ADE6F1B15A8C202C17175B759728A4A0BF8 DUP2 PUSH1 0x40 MLOAD PUSH2 0x2D66 SWAP2 SWAP1 PUSH2 0x43A1 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 LOG1 POP POP POP POP JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH0 PUSH1 0x24 DUP3 ADD MSTORE PUSH2 0x239B SWAP1 PUSH1 0x44 ADD PUSH1 0x40 DUP1 MLOAD PUSH1 0x1F NOT DUP2 DUP5 SUB ADD DUP2 MSTORE SWAP2 SWAP1 MSTORE PUSH1 0x20 DUP2 ADD DUP1 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xE0 SHL SUB AND PUSH4 0x2D08BA2B PUSH1 0xE1 SHL OR SWAP1 MSTORE PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP5 AND SWAP1 PUSH2 0x34DD JUMP JUMPDEST PUSH0 DUP1 PUSH32 0xF0C57E16840DF040F15088DC2F81FE391C3923BEC73E23A9662EFC9C229C6A00 PUSH2 0x9B3 JUMP JUMPDEST PUSH2 0x2DEE PUSH2 0x3654 JUMP JUMPDEST PUSH2 0x2DF7 DUP6 PUSH2 0x3679 JUMP JUMPDEST PUSH2 0x2E01 DUP8 DUP8 PUSH2 0x368A JUMP JUMPDEST PUSH2 0x2E0D DUP5 DUP5 DUP5 DUP5 PUSH2 0x369C JUMP JUMPDEST POP POP POP POP POP POP POP JUMP JUMPDEST PUSH0 MLOAD PUSH1 0x20 PUSH2 0x4F79 PUSH0 CODECOPY PUSH0 MLOAD SWAP1 PUSH0 MSTORE DUP1 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0x80 SHL SUB AND ISZERO PUSH2 0x2F18 JUMPI PUSH0 PUSH2 0x2E3D PUSH2 0x35E1 JUMP JUMPDEST SWAP1 POP PUSH0 PUSH2 0x2E4B PUSH1 0x1 DUP4 PUSH2 0x4C50 JUMP JUMPDEST PUSH0 DUP2 DUP2 MSTORE PUSH1 0x1 DUP6 ADD PUSH1 0x20 MSTORE PUSH1 0x40 DUP1 DUP3 KECCAK256 SLOAD DUP6 DUP4 MSTORE SWAP1 DUP3 KECCAK256 SLOAD SWAP3 SWAP4 POP SWAP1 SWAP2 PUSH2 0x2E71 DUP9 PUSH2 0x4E0C JUMP JUMPDEST PUSH2 0x2E7B SWAP2 SWAP1 PUSH2 0x4B89 JUMP JUMPDEST PUSH2 0x2E85 SWAP2 SWAP1 PUSH2 0x4B89 JUMP JUMPDEST SWAP1 POP PUSH0 DUP2 SLT DUP1 ISZERO PUSH2 0x2EAE JUMPI POP DUP4 SLOAD PUSH1 0x1 PUSH1 0x80 SHL SWAP1 DIV PUSH1 0x1 PUSH1 0x1 PUSH1 0x80 SHL SUB AND PUSH2 0x2EAC DUP3 PUSH2 0x4E0C JUMP JUMPDEST GT JUMPDEST ISZERO PUSH2 0x2EE7 JUMPI DUP4 SLOAD PUSH1 0x40 MLOAD PUSH4 0xCC9A5053 PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 DUP2 ADD DUP4 SWAP1 MSTORE PUSH1 0x1 PUSH1 0x80 SHL SWAP1 SWAP2 DIV PUSH1 0x1 PUSH1 0x1 PUSH1 0x80 SHL SUB AND PUSH1 0x24 DUP3 ADD MSTORE PUSH1 0x44 ADD PUSH2 0xE70 JUMP JUMPDEST PUSH2 0x2EF0 DUP7 PUSH2 0x3613 JUMP JUMPDEST PUSH0 DUP5 DUP2 MSTORE PUSH1 0x1 DUP7 ADD PUSH1 0x20 MSTORE PUSH1 0x40 DUP2 KECCAK256 DUP1 SLOAD SWAP1 SWAP2 SWAP1 PUSH2 0x2F0F SWAP1 DUP5 SWAP1 PUSH2 0x4E26 JUMP JUMPDEST SWAP1 SWAP2 SSTORE POP POP POP POP POP JUMPDEST PUSH2 0x2F25 DUP7 DUP7 DUP7 DUP7 DUP7 PUSH2 0x3C1D JUMP JUMPDEST POP POP POP POP POP POP JUMP JUMPDEST PUSH0 PUSH2 0x9B3 PUSH2 0x30B DUP4 PUSH2 0x1FBD JUMP JUMPDEST PUSH0 PUSH0 PUSH0 JUMPDEST PUSH0 PUSH1 0x2 DUP3 PUSH1 0x20 DUP2 LT PUSH2 0x2F52 JUMPI PUSH2 0x2F52 PUSH2 0x4B46 JUMP JUMPDEST ADD SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND EQ DUP1 ISZERO SWAP1 PUSH2 0x2F6B JUMPI POP PUSH1 0x20 DUP2 LT JUMPDEST ISZERO PUSH2 0x2FC8 JUMPI PUSH2 0x2F9A DUP4 PUSH2 0x269F PUSH1 0x2 DUP5 PUSH1 0x20 DUP2 LT PUSH2 0x2F8A JUMPI PUSH2 0x2F8A PUSH2 0x4B46 JUMP JUMPDEST ADD SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH2 0x2FD9 JUMP JUMPDEST SWAP4 POP SWAP2 POP DUP2 ISZERO DUP1 PUSH2 0x2FAB JUMPI POP DUP4 DUP4 LT ISZERO JUMPDEST ISZERO PUSH2 0x2FB8 JUMPI POP SWAP2 SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH2 0x2FC1 DUP2 PUSH2 0x4B71 JUMP JUMPDEST SWAP1 POP PUSH2 0x2F3E JUMP JUMPDEST POP POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH0 PUSH2 0x9B3 DUP3 PUSH2 0xE99 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH4 0xCE96CB77 PUSH1 0xE0 SHL DUP2 MSTORE ADDRESS PUSH1 0x4 DUP3 ADD MSTORE PUSH0 SWAP1 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP4 AND SWAP1 PUSH4 0xCE96CB77 SWAP1 PUSH1 0x24 ADD PUSH2 0x2C5A JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH4 0x402D267D PUSH1 0xE0 SHL DUP2 MSTORE ADDRESS PUSH1 0x4 DUP3 ADD MSTORE PUSH0 SWAP1 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP4 AND SWAP1 PUSH4 0x402D267D SWAP1 PUSH1 0x24 ADD PUSH2 0x2C5A JUMP JUMPDEST PUSH0 DUP2 ISZERO PUSH2 0x3117 JUMPI PUSH0 PUSH0 DUP6 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP6 PUSH1 0x40 MLOAD PUSH1 0x24 ADD PUSH2 0x305B SWAP2 DUP2 MSTORE PUSH1 0x20 ADD SWAP1 JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH1 0x1F NOT DUP2 DUP5 SUB ADD DUP2 MSTORE SWAP2 DUP2 MSTORE PUSH1 0x20 DUP3 ADD DUP1 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xE0 SHL SUB AND PUSH4 0x2E1A7D4D PUSH1 0xE0 SHL OR SWAP1 MSTORE MLOAD PUSH2 0x3090 SWAP2 SWAP1 PUSH2 0x4DF6 JUMP JUMPDEST PUSH0 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP6 GAS DELEGATECALL SWAP2 POP POP RETURNDATASIZE DUP1 PUSH0 DUP2 EQ PUSH2 0x30C8 JUMPI PUSH1 0x40 MLOAD SWAP2 POP PUSH1 0x1F NOT PUSH1 0x3F RETURNDATASIZE ADD AND DUP3 ADD PUSH1 0x40 MSTORE RETURNDATASIZE DUP3 MSTORE RETURNDATASIZE PUSH0 PUSH1 0x20 DUP5 ADD RETURNDATACOPY PUSH2 0x30CD JUMP JUMPDEST PUSH1 0x60 SWAP2 POP JUMPDEST POP SWAP2 POP SWAP2 POP DUP2 PUSH2 0x310F JUMPI PUSH32 0xAD0AD28A12A6ED800F1A7B398454913AFE6826C175E6CC28F2E8E2C175B0D728 DUP2 PUSH1 0x40 MLOAD PUSH2 0x3106 SWAP2 SWAP1 PUSH2 0x43A1 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 LOG1 JUMPDEST POP SWAP1 POP PUSH2 0xA95 JUMP JUMPDEST PUSH2 0x3167 DUP4 PUSH1 0x40 MLOAD PUSH1 0x24 ADD PUSH2 0x312D SWAP2 DUP2 MSTORE PUSH1 0x20 ADD SWAP1 JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH1 0x1F NOT DUP2 DUP5 SUB ADD DUP2 MSTORE SWAP2 SWAP1 MSTORE PUSH1 0x20 DUP2 ADD DUP1 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xE0 SHL SUB AND PUSH4 0x2E1A7D4D PUSH1 0xE0 SHL OR SWAP1 MSTORE PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP7 AND SWAP1 PUSH2 0x34DD JUMP JUMPDEST POP PUSH1 0x1 SWAP1 POP PUSH2 0xA95 JUMP JUMPDEST PUSH0 DUP2 ISZERO PUSH2 0x3242 JUMPI PUSH0 PUSH0 DUP6 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP6 PUSH1 0x40 MLOAD PUSH1 0x24 ADD PUSH2 0x3197 SWAP2 DUP2 MSTORE PUSH1 0x20 ADD SWAP1 JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH1 0x1F NOT DUP2 DUP5 SUB ADD DUP2 MSTORE SWAP2 DUP2 MSTORE PUSH1 0x20 DUP3 ADD DUP1 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xE0 SHL SUB AND PUSH4 0xB6B55F25 PUSH1 0xE0 SHL OR SWAP1 MSTORE MLOAD PUSH2 0x31CC SWAP2 SWAP1 PUSH2 0x4DF6 JUMP JUMPDEST PUSH0 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP6 GAS DELEGATECALL SWAP2 POP POP RETURNDATASIZE DUP1 PUSH0 DUP2 EQ PUSH2 0x3204 JUMPI PUSH1 0x40 MLOAD SWAP2 POP PUSH1 0x1F NOT PUSH1 0x3F RETURNDATASIZE ADD AND DUP3 ADD PUSH1 0x40 MSTORE RETURNDATASIZE DUP3 MSTORE RETURNDATASIZE PUSH0 PUSH1 0x20 DUP5 ADD RETURNDATACOPY PUSH2 0x3209 JUMP JUMPDEST PUSH1 0x60 SWAP2 POP JUMPDEST POP SWAP2 POP SWAP2 POP DUP2 PUSH2 0x310F JUMPI PUSH32 0xF8E68F23D3B33772E986CC9861E94E8FD6B9461D62BC1FB21CD754BBAF726BD3 DUP2 PUSH1 0x40 MLOAD PUSH2 0x3106 SWAP2 SWAP1 PUSH2 0x43A1 JUMP JUMPDEST PUSH2 0x3167 DUP4 PUSH1 0x40 MLOAD PUSH1 0x24 ADD PUSH2 0x3258 SWAP2 DUP2 MSTORE PUSH1 0x20 ADD SWAP1 JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH1 0x1F NOT DUP2 DUP5 SUB ADD DUP2 MSTORE SWAP2 SWAP1 MSTORE PUSH1 0x20 DUP2 ADD DUP1 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xE0 SHL SUB AND PUSH4 0xB6B55F25 PUSH1 0xE0 SHL OR SWAP1 MSTORE PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP7 AND SWAP1 PUSH2 0x34DD JUMP JUMPDEST PUSH0 PUSH2 0x32BF PUSH2 0x329F DUP4 PUSH2 0x3C33 JUMP JUMPDEST DUP1 ISZERO PUSH2 0x32BA JUMPI POP PUSH0 DUP5 DUP1 PUSH2 0x32B5 JUMPI PUSH2 0x32B5 PUSH2 0x4BE4 JUMP JUMPDEST DUP7 DUP9 MULMOD GT JUMPDEST ISZERO ISZERO SWAP1 JUMP JUMPDEST PUSH2 0x32CA DUP7 DUP7 DUP7 PUSH2 0x3C5F JUMP JUMPDEST PUSH2 0xB88 SWAP2 SWAP1 PUSH2 0x4BD1 JUMP JUMPDEST PUSH0 MLOAD PUSH1 0x20 PUSH2 0x4F99 PUSH0 CODECOPY PUSH0 MLOAD SWAP1 PUSH0 MSTORE PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP6 AND PUSH2 0x330B JUMPI PUSH1 0x40 MLOAD PUSH4 0xE602DF05 PUSH1 0xE0 SHL DUP2 MSTORE PUSH0 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x24 ADD PUSH2 0xE70 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP5 AND PUSH2 0x3334 JUMPI PUSH1 0x40 MLOAD PUSH4 0x4A1406B1 PUSH1 0xE1 SHL DUP2 MSTORE PUSH0 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x24 ADD PUSH2 0xE70 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP1 DUP7 AND PUSH0 SWAP1 DUP2 MSTORE PUSH1 0x1 DUP4 ADD PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x40 DUP1 DUP4 KECCAK256 SWAP4 DUP9 AND DUP4 MSTORE SWAP3 SWAP1 MSTORE KECCAK256 DUP4 SWAP1 SSTORE DUP2 ISZERO PUSH2 0x25E6 JUMPI DUP4 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP6 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH32 0x8C5BE1E5EBEC7D5BD14F71427D1E84F3DD0314C0F7B2291E5B200AC8C7C3B925 DUP6 PUSH1 0x40 MLOAD PUSH2 0x33A8 SWAP2 DUP2 MSTORE PUSH1 0x20 ADD SWAP1 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 LOG3 POP POP POP POP POP JUMP JUMPDEST PUSH0 MLOAD PUSH1 0x20 PUSH2 0x4F99 PUSH0 CODECOPY PUSH0 MLOAD SWAP1 PUSH0 MSTORE PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP5 AND PUSH2 0x33F1 JUMPI DUP2 DUP2 PUSH1 0x2 ADD PUSH0 DUP3 DUP3 SLOAD PUSH2 0x33E6 SWAP2 SWAP1 PUSH2 0x4BD1 JUMP JUMPDEST SWAP1 SWAP2 SSTORE POP PUSH2 0x344E SWAP1 POP JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP5 AND PUSH0 SWAP1 DUP2 MSTORE PUSH1 0x20 DUP3 SWAP1 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD DUP3 DUP2 LT ISZERO PUSH2 0x3430 JUMPI DUP5 DUP2 DUP5 PUSH1 0x40 MLOAD PUSH4 0x391434E3 PUSH1 0xE2 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0xE70 SWAP4 SWAP3 SWAP2 SWAP1 PUSH2 0x4BB0 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP6 AND PUSH0 SWAP1 DUP2 MSTORE PUSH1 0x20 DUP4 SWAP1 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SWAP1 DUP4 SWAP1 SUB SWAP1 SSTORE JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP4 AND PUSH2 0x346C JUMPI PUSH1 0x2 DUP2 ADD DUP1 SLOAD DUP4 SWAP1 SUB SWAP1 SSTORE PUSH2 0x348A JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP4 AND PUSH0 SWAP1 DUP2 MSTORE PUSH1 0x20 DUP3 SWAP1 MSTORE PUSH1 0x40 SWAP1 KECCAK256 DUP1 SLOAD DUP4 ADD SWAP1 SSTORE JUMPDEST DUP3 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP5 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH32 0xDDF252AD1BE2C89B69C2B068FC378DAA952BA7F163C4A11628F55A4DF523B3EF DUP5 PUSH1 0x40 MLOAD PUSH2 0x34CF SWAP2 DUP2 MSTORE PUSH1 0x20 ADD SWAP1 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 LOG3 POP POP POP POP JUMP JUMPDEST PUSH1 0x60 PUSH0 PUSH2 0x34EA DUP5 DUP5 PUSH2 0x3D0F JUMP JUMPDEST SWAP1 POP DUP1 DUP1 ISZERO PUSH2 0x350B JUMPI POP PUSH0 RETURNDATASIZE GT DUP1 PUSH2 0x350B JUMPI POP PUSH0 DUP5 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND EXTCODESIZE GT JUMPDEST ISZERO PUSH2 0x3520 JUMPI PUSH2 0x3518 PUSH2 0x3D22 JUMP JUMPDEST SWAP2 POP POP PUSH2 0x9B3 JUMP JUMPDEST DUP1 ISZERO PUSH2 0x354A JUMPI PUSH1 0x40 MLOAD PUSH4 0x9996B315 PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP6 AND PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x24 ADD PUSH2 0xE70 JUMP JUMPDEST RETURNDATASIZE ISZERO PUSH2 0x355D JUMPI PUSH2 0x3558 PUSH2 0x3D3B JUMP JUMPDEST PUSH2 0x3576 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH4 0xD6BDA275 PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH0 DUP3 DUP3 XOR DUP3 DUP5 LT MUL DUP3 XOR PUSH2 0xA95 JUMP JUMPDEST PUSH2 0x3595 DUP3 PUSH2 0x3D46 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP4 AND SWAP1 PUSH32 0xBC7CD75A20EE27FD9ADEBAB32041F755214DBC6BFFA90CC0225B39DA2E5C2D3B SWAP1 PUSH0 SWAP1 LOG2 DUP1 MLOAD ISZERO PUSH2 0x35D9 JUMPI PUSH2 0x239B DUP3 DUP3 PUSH2 0x34DD JUMP JUMPDEST PUSH2 0xD38 PUSH2 0x3DA9 JUMP JUMPDEST PUSH0 MLOAD PUSH1 0x20 PUSH2 0x4F79 PUSH0 CODECOPY PUSH0 MLOAD SWAP1 PUSH0 MSTORE SLOAD PUSH0 SWAP1 PUSH1 0x1 PUSH1 0x1 PUSH1 0x80 SHL SUB AND PUSH2 0x3605 DUP2 TIMESTAMP PUSH2 0x4BF8 JUMP JUMPDEST PUSH2 0xAD8 SWAP1 PUSH1 0x80 DUP4 SWAP1 SHL PUSH2 0x4BD1 JUMP JUMPDEST PUSH0 PUSH1 0x1 PUSH1 0x1 PUSH1 0xFF SHL SUB DUP3 GT ISZERO PUSH2 0x2333 JUMPI PUSH1 0x40 MLOAD PUSH4 0x123BAF03 PUSH1 0xE1 SHL DUP2 MSTORE PUSH1 0x4 DUP2 ADD DUP4 SWAP1 MSTORE PUSH1 0x24 ADD PUSH2 0xE70 JUMP JUMPDEST PUSH2 0x364B DUP5 DUP5 DUP5 DUP5 PUSH2 0x3DC8 JUMP JUMPDEST PUSH2 0x246C DUP3 PUSH2 0x26D3 JUMP JUMPDEST PUSH2 0x365C PUSH2 0x3E33 JUMP JUMPDEST PUSH2 0x288E JUMPI PUSH1 0x40 MLOAD PUSH4 0x1AFCD79F PUSH1 0xE3 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH2 0x3681 PUSH2 0x3654 JUMP JUMPDEST PUSH2 0xBA3 DUP2 PUSH2 0x3E4C JUMP JUMPDEST PUSH2 0x3692 PUSH2 0x3654 JUMP JUMPDEST PUSH2 0xD38 DUP3 DUP3 PUSH2 0x3ECF JUMP JUMPDEST DUP4 MLOAD ISZERO DUP1 PUSH2 0x36AB JUMPI POP DUP4 MLOAD PUSH1 0x20 LT JUMPDEST DUP1 PUSH2 0x36B8 JUMPI POP DUP3 MLOAD DUP5 MLOAD EQ ISZERO JUMPDEST DUP1 PUSH2 0x36C5 JUMPI POP DUP2 MLOAD DUP5 MLOAD EQ ISZERO JUMPDEST DUP1 PUSH2 0x36D2 JUMPI POP DUP1 MLOAD DUP5 MLOAD EQ ISZERO JUMPDEST ISZERO PUSH2 0x36F3 JUMPI PUSH1 0x40 MLOAD PUSH1 0x1 PUSH3 0xAD1FAB PUSH1 0xE0 SHL SUB NOT DUP2 MSTORE PUSH1 0x4 ADD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH2 0x36FB PUSH2 0x4354 JUMP JUMPDEST PUSH2 0x3703 PUSH2 0x4354 JUMP JUMPDEST PUSH0 JUMPDEST DUP7 MLOAD DUP2 LT ISZERO PUSH2 0x3BA6 JUMPI PUSH0 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP8 DUP3 DUP2 MLOAD DUP2 LT PUSH2 0x372A JUMPI PUSH2 0x372A PUSH2 0x4B46 JUMP JUMPDEST PUSH1 0x20 MUL PUSH1 0x20 ADD ADD MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND SUB PUSH2 0x3759 JUMPI PUSH1 0x40 MLOAD PUSH4 0x2711B74D PUSH1 0xE1 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH2 0x3795 PUSH2 0x3764 PUSH2 0x29F9 JUMP JUMPDEST DUP9 DUP4 DUP2 MLOAD DUP2 LT PUSH2 0x3776 JUMPI PUSH2 0x3776 PUSH2 0x4B46 JUMP JUMPDEST PUSH1 0x20 MUL PUSH1 0x20 ADD ADD MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH2 0x2B50 SWAP1 SWAP2 SWAP1 PUSH4 0xFFFFFFFF AND JUMP JUMPDEST PUSH0 JUMPDEST DUP2 DUP2 LT ISZERO PUSH2 0x3835 JUMPI DUP8 DUP2 DUP2 MLOAD DUP2 LT PUSH2 0x37B1 JUMPI PUSH2 0x37B1 PUSH2 0x4B46 JUMP JUMPDEST PUSH1 0x20 MUL PUSH1 0x20 ADD ADD MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP9 DUP4 DUP2 MLOAD DUP2 LT PUSH2 0x37D4 JUMPI PUSH2 0x37D4 PUSH2 0x4B46 JUMP JUMPDEST PUSH1 0x20 MUL PUSH1 0x20 ADD ADD MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND SUB PUSH2 0x382D JUMPI DUP8 DUP3 DUP2 MLOAD DUP2 LT PUSH2 0x37FC JUMPI PUSH2 0x37FC PUSH2 0x4B46 JUMP JUMPDEST PUSH1 0x20 MUL PUSH1 0x20 ADD ADD MLOAD PUSH1 0x40 MLOAD PUSH4 0xB5A9314F PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0xE70 SWAP2 SWAP1 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP2 SWAP1 SWAP2 AND DUP2 MSTORE PUSH1 0x20 ADD SWAP1 JUMP JUMPDEST PUSH1 0x1 ADD PUSH2 0x3797 JUMP JUMPDEST POP DUP7 MLOAD DUP6 DUP3 DUP2 MLOAD DUP2 LT PUSH2 0x384A JUMPI PUSH2 0x384A PUSH2 0x4B46 JUMP JUMPDEST PUSH1 0x20 MUL PUSH1 0x20 ADD ADD MLOAD PUSH1 0xFF AND LT ISZERO DUP1 PUSH2 0x3891 JUMPI POP DUP3 DUP6 DUP3 DUP2 MLOAD DUP2 LT PUSH2 0x3870 JUMPI PUSH2 0x3870 PUSH2 0x4B46 JUMP JUMPDEST PUSH1 0x20 MUL PUSH1 0x20 ADD ADD MLOAD PUSH1 0xFF AND PUSH1 0x20 DUP2 LT PUSH2 0x388B JUMPI PUSH2 0x388B PUSH2 0x4B46 JUMP JUMPDEST PUSH1 0x20 MUL ADD MLOAD JUMPDEST ISZERO PUSH2 0x38D3 JUMPI DUP5 DUP2 DUP2 MLOAD DUP2 LT PUSH2 0x38A8 JUMPI PUSH2 0x38A8 PUSH2 0x4B46 JUMP JUMPDEST PUSH1 0x20 MUL PUSH1 0x20 ADD ADD MLOAD PUSH1 0x40 MLOAD PUSH4 0x306CCD5D PUSH1 0xE1 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0xE70 SWAP2 SWAP1 PUSH1 0xFF SWAP2 SWAP1 SWAP2 AND DUP2 MSTORE PUSH1 0x20 ADD SWAP1 JUMP JUMPDEST DUP7 MLOAD DUP5 DUP3 DUP2 MLOAD DUP2 LT PUSH2 0x38E7 JUMPI PUSH2 0x38E7 PUSH2 0x4B46 JUMP JUMPDEST PUSH1 0x20 MUL PUSH1 0x20 ADD ADD MLOAD PUSH1 0xFF AND LT ISZERO DUP1 PUSH2 0x392E JUMPI POP DUP2 DUP5 DUP3 DUP2 MLOAD DUP2 LT PUSH2 0x390D JUMPI PUSH2 0x390D PUSH2 0x4B46 JUMP JUMPDEST PUSH1 0x20 MUL PUSH1 0x20 ADD ADD MLOAD PUSH1 0xFF AND PUSH1 0x20 DUP2 LT PUSH2 0x3928 JUMPI PUSH2 0x3928 PUSH2 0x4B46 JUMP JUMPDEST PUSH1 0x20 MUL ADD MLOAD JUMPDEST ISZERO PUSH2 0x3970 JUMPI DUP4 DUP2 DUP2 MLOAD DUP2 LT PUSH2 0x3945 JUMPI PUSH2 0x3945 PUSH2 0x4B46 JUMP JUMPDEST PUSH1 0x20 MUL PUSH1 0x20 ADD ADD MLOAD PUSH1 0x40 MLOAD PUSH4 0x27769241 PUSH1 0xE1 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0xE70 SWAP2 SWAP1 PUSH1 0xFF SWAP2 SWAP1 SWAP2 AND DUP2 MSTORE PUSH1 0x20 ADD SWAP1 JUMP JUMPDEST PUSH1 0x1 DUP4 DUP7 DUP4 DUP2 MLOAD DUP2 LT PUSH2 0x3985 JUMPI PUSH2 0x3985 PUSH2 0x4B46 JUMP JUMPDEST PUSH1 0x20 MUL PUSH1 0x20 ADD ADD MLOAD PUSH1 0xFF AND PUSH1 0x20 DUP2 LT PUSH2 0x39A0 JUMPI PUSH2 0x39A0 PUSH2 0x4B46 JUMP JUMPDEST PUSH1 0x20 MUL ADD SWAP1 ISZERO ISZERO SWAP1 DUP2 ISZERO ISZERO DUP2 MSTORE POP POP PUSH1 0x1 DUP3 DUP6 DUP4 DUP2 MLOAD DUP2 LT PUSH2 0x39C4 JUMPI PUSH2 0x39C4 PUSH2 0x4B46 JUMP JUMPDEST PUSH1 0x20 MUL PUSH1 0x20 ADD ADD MLOAD PUSH1 0xFF AND PUSH1 0x20 DUP2 LT PUSH2 0x39DF JUMPI PUSH2 0x39DF PUSH2 0x4B46 JUMP JUMPDEST SWAP2 ISZERO ISZERO PUSH1 0x20 SWAP1 SWAP3 MUL ADD MSTORE DUP7 MLOAD DUP8 SWAP1 DUP3 SWAP1 DUP2 LT PUSH2 0x39FD JUMPI PUSH2 0x39FD PUSH2 0x4B46 JUMP JUMPDEST PUSH1 0x20 MUL PUSH1 0x20 ADD ADD MLOAD PUSH1 0x2 DUP3 PUSH1 0x20 DUP2 LT PUSH2 0x3A18 JUMPI PUSH2 0x3A18 PUSH2 0x4B46 JUMP JUMPDEST ADD PUSH0 PUSH2 0x100 EXP DUP2 SLOAD DUP2 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB MUL NOT AND SWAP1 DUP4 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND MUL OR SWAP1 SSTORE POP DUP5 DUP2 DUP2 MLOAD DUP2 LT PUSH2 0x3A4E JUMPI PUSH2 0x3A4E PUSH2 0x4B46 JUMP JUMPDEST PUSH1 0x20 MUL PUSH1 0x20 ADD ADD MLOAD PUSH1 0x1 PUSH2 0x3A62 SWAP2 SWAP1 PUSH2 0x4B2D JUMP JUMPDEST PUSH0 DUP3 PUSH1 0x20 DUP2 LT PUSH2 0x3A74 JUMPI PUSH2 0x3A74 PUSH2 0x4B46 JUMP JUMPDEST PUSH1 0x20 SWAP2 DUP3 DUP3 DIV ADD SWAP2 SWAP1 MOD PUSH2 0x100 EXP DUP2 SLOAD DUP2 PUSH1 0xFF MUL NOT AND SWAP1 DUP4 PUSH1 0xFF AND MUL OR SWAP1 SSTORE POP DUP4 DUP2 DUP2 MLOAD DUP2 LT PUSH2 0x3AA6 JUMPI PUSH2 0x3AA6 PUSH2 0x4B46 JUMP JUMPDEST PUSH1 0x20 MUL PUSH1 0x20 ADD ADD MLOAD PUSH1 0x1 PUSH2 0x3ABA SWAP2 SWAP1 PUSH2 0x4B2D JUMP JUMPDEST PUSH1 0x1 DUP3 PUSH1 0x20 DUP2 LT PUSH2 0x3ACD JUMPI PUSH2 0x3ACD PUSH2 0x4B46 JUMP JUMPDEST PUSH1 0x20 SWAP2 DUP3 DUP3 DIV ADD SWAP2 SWAP1 MOD PUSH2 0x100 EXP DUP2 SLOAD DUP2 PUSH1 0xFF MUL NOT AND SWAP1 DUP4 PUSH1 0xFF AND MUL OR SWAP1 SSTORE POP PUSH2 0x3B3B DUP7 DUP3 DUP2 MLOAD DUP2 LT PUSH2 0x3B02 JUMPI PUSH2 0x3B02 PUSH2 0x4B46 JUMP JUMPDEST PUSH1 0x20 MUL PUSH1 0x20 ADD ADD MLOAD DUP9 DUP4 DUP2 MLOAD DUP2 LT PUSH2 0x3B1C JUMPI PUSH2 0x3B1C PUSH2 0x4B46 JUMP JUMPDEST PUSH1 0x20 MUL PUSH1 0x20 ADD ADD MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH2 0x2BE2 SWAP1 SWAP2 SWAP1 PUSH4 0xFFFFFFFF AND JUMP JUMPDEST DUP7 DUP2 DUP2 MLOAD DUP2 LT PUSH2 0x3B4D JUMPI PUSH2 0x3B4D PUSH2 0x4B46 JUMP JUMPDEST PUSH1 0x20 MUL PUSH1 0x20 ADD ADD MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH32 0x4973F7978F2B1810531AED51DC15A8E446CB3191AFCCA470F8CE464AF7494F58 DUP3 PUSH1 0x40 MLOAD PUSH2 0x3B96 SWAP2 SWAP1 PUSH1 0xFF SWAP2 SWAP1 SWAP2 AND DUP2 MSTORE PUSH1 0x20 ADD SWAP1 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 LOG2 PUSH1 0x1 ADD PUSH2 0x3705 JUMP JUMPDEST POP PUSH32 0x193FC4E628C27AE3CA098952DFC16A40425B44E7B0A97F4CC59D0F267F47CAEC DUP5 PUSH1 0x40 MLOAD PUSH2 0x3BD6 SWAP2 SWAP1 PUSH2 0x4C0B JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 LOG1 PUSH32 0x3C56B6BCA0D55EDA581F8F2819D1F85D3B91CFCC24914A8FA39D301796D8964C DUP4 PUSH1 0x40 MLOAD PUSH2 0x3C0D SWAP2 SWAP1 PUSH2 0x4C0B JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 LOG1 POP POP POP POP POP POP JUMP JUMPDEST PUSH2 0x3C26 DUP3 PUSH2 0x3F1F JUMP JUMPDEST PUSH2 0x25E6 DUP6 DUP6 DUP6 DUP6 DUP6 PUSH2 0x4032 JUMP JUMPDEST PUSH0 PUSH1 0x2 DUP3 PUSH1 0x3 DUP2 GT ISZERO PUSH2 0x3C48 JUMPI PUSH2 0x3C48 PUSH2 0x4E45 JUMP JUMPDEST PUSH2 0x3C52 SWAP2 SWAP1 PUSH2 0x4E59 JUMP JUMPDEST PUSH1 0xFF AND PUSH1 0x1 EQ SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH0 PUSH0 PUSH0 PUSH2 0x3C6C DUP7 DUP7 PUSH2 0x40D9 JUMP JUMPDEST SWAP2 POP SWAP2 POP DUP2 PUSH0 SUB PUSH2 0x3C90 JUMPI DUP4 DUP2 DUP2 PUSH2 0x3C86 JUMPI PUSH2 0x3C86 PUSH2 0x4BE4 JUMP JUMPDEST DIV SWAP3 POP POP POP PUSH2 0xA95 JUMP JUMPDEST DUP2 DUP5 GT PUSH2 0x3CA7 JUMPI PUSH2 0x3CA7 PUSH1 0x3 DUP6 ISZERO MUL PUSH1 0x11 XOR PUSH2 0x40F5 JUMP JUMPDEST PUSH0 DUP5 DUP7 DUP9 MULMOD PUSH0 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 DUP6 DUP5 GT SWAP1 SWAP7 SUB SWAP6 SWAP1 SWAP6 MUL SWAP2 SWAP1 SWAP4 SUB SWAP4 SWAP1 SWAP4 DIV SWAP3 SWAP1 SWAP3 OR MUL SWAP2 POP POP SWAP4 SWAP3 POP POP POP JUMP JUMPDEST PUSH0 PUSH0 PUSH0 DUP4 MLOAD PUSH1 0x20 DUP6 ADD DUP7 GAS DELEGATECALL SWAP4 SWAP3 POP POP POP JUMP JUMPDEST PUSH1 0x40 MLOAD RETURNDATASIZE DUP2 MSTORE RETURNDATASIZE PUSH0 PUSH1 0x20 DUP4 ADD RETURNDATACOPY RETURNDATASIZE PUSH1 0x20 ADD DUP2 ADD PUSH1 0x40 MSTORE SWAP1 JUMP JUMPDEST PUSH1 0x40 MLOAD RETURNDATASIZE PUSH0 DUP3 RETURNDATACOPY RETURNDATASIZE DUP2 REVERT JUMPDEST DUP1 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND EXTCODESIZE PUSH0 SUB PUSH2 0x3D7B JUMPI PUSH1 0x40 MLOAD PUSH4 0x4C9C8CE3 PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP3 AND PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x24 ADD PUSH2 0xE70 JUMP JUMPDEST PUSH0 MLOAD PUSH1 0x20 PUSH2 0x4FB9 PUSH0 CODECOPY PUSH0 MLOAD SWAP1 PUSH0 MSTORE DUP1 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB NOT AND PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP3 SWAP1 SWAP3 AND SWAP2 SWAP1 SWAP2 OR SWAP1 SSTORE JUMP JUMPDEST CALLVALUE ISZERO PUSH2 0x288E JUMPI PUSH1 0x40 MLOAD PUSH4 0xB398979F PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH2 0x3DDB PUSH2 0x3DD3 PUSH2 0xADE JUMP JUMPDEST DUP6 ADDRESS DUP6 PUSH2 0x4106 JUMP JUMPDEST PUSH2 0x3DE5 DUP4 DUP3 PUSH2 0x413C JUMP JUMPDEST DUP3 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP5 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH32 0xDCBC1C05240F31FF3AD067EF1EE35CE4997762752E3A095284754544F4C709D7 DUP5 DUP5 PUSH1 0x40 MLOAD PUSH2 0x34CF SWAP3 SWAP2 SWAP1 SWAP2 DUP3 MSTORE PUSH1 0x20 DUP3 ADD MSTORE PUSH1 0x40 ADD SWAP1 JUMP JUMPDEST PUSH0 PUSH2 0x3E3C PUSH2 0x2DBE JUMP JUMPDEST SLOAD PUSH1 0x1 PUSH1 0x40 SHL SWAP1 DIV PUSH1 0xFF AND SWAP2 SWAP1 POP JUMP JUMPDEST PUSH2 0x3E54 PUSH2 0x3654 JUMP JUMPDEST PUSH32 0x773E532DFEDE91F04B12A73D3D2ACD361424F41F76B4FB79F090161E36B4E00 PUSH0 DUP1 PUSH2 0x3E80 DUP5 PUSH2 0x4170 JUMP JUMPDEST SWAP2 POP SWAP2 POP DUP2 PUSH2 0x3E90 JUMPI PUSH1 0x12 PUSH2 0x3E92 JUMP JUMPDEST DUP1 JUMPDEST DUP4 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA8 SHL SUB NOT AND PUSH1 0x1 PUSH1 0xA0 SHL PUSH1 0xFF SWAP3 SWAP1 SWAP3 AND SWAP2 SWAP1 SWAP2 MUL PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB NOT AND OR PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP5 SWAP1 SWAP5 AND SWAP4 SWAP1 SWAP4 OR SWAP1 SWAP2 SSTORE POP POP JUMP JUMPDEST PUSH2 0x3ED7 PUSH2 0x3654 JUMP JUMPDEST PUSH0 MLOAD PUSH1 0x20 PUSH2 0x4F99 PUSH0 CODECOPY PUSH0 MLOAD SWAP1 PUSH0 MSTORE PUSH32 0x52C63247E1F47DB19D5CE0460030C497F067CA4CEBF71BA98EEADABE20BACE03 PUSH2 0x3F10 DUP5 DUP3 PUSH2 0x4EBE JUMP JUMPDEST POP PUSH1 0x4 DUP2 ADD PUSH2 0x246C DUP4 DUP3 PUSH2 0x4EBE JUMP JUMPDEST DUP1 PUSH0 JUMPDEST DUP2 ISZERO DUP1 ISZERO SWAP1 PUSH2 0x3F58 JUMPI POP PUSH1 0x1 DUP2 PUSH1 0x20 DUP2 LT PUSH2 0x3F3F JUMPI PUSH2 0x3F3F PUSH2 0x4B46 JUMP JUMPDEST PUSH1 0x20 DUP2 DIV SWAP1 SWAP2 ADD SLOAD PUSH1 0xFF PUSH1 0x1F SWAP1 SWAP3 AND PUSH2 0x100 EXP SWAP1 DIV AND ISZERO ISZERO JUMPDEST DUP1 ISZERO PUSH2 0x3F64 JUMPI POP PUSH1 0x20 DUP2 LT JUMPDEST ISZERO PUSH2 0x4012 JUMPI PUSH0 PUSH1 0x2 PUSH1 0x1 DUP1 DUP5 PUSH1 0x20 DUP2 LT PUSH2 0x3F80 JUMPI PUSH2 0x3F80 PUSH2 0x4B46 JUMP JUMPDEST PUSH1 0x20 SWAP2 DUP3 DUP3 DIV ADD SWAP2 SWAP1 MOD SWAP1 SLOAD SWAP1 PUSH2 0x100 EXP SWAP1 DIV PUSH1 0xFF AND PUSH2 0x3FA0 SWAP2 SWAP1 PUSH2 0x4C63 JUMP JUMPDEST PUSH1 0xFF AND PUSH1 0x20 DUP2 LT PUSH2 0x3FB3 JUMPI PUSH2 0x3FB3 PUSH2 0x4B46 JUMP JUMPDEST ADD SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND SWAP1 POP PUSH0 PUSH2 0x3FCE DUP5 PUSH2 0x2781 DUP5 PUSH2 0x2FD9 JUMP JUMPDEST SWAP1 POP DUP1 PUSH0 SUB PUSH2 0x3FDE JUMPI POP POP PUSH2 0x4002 JUMP JUMPDEST PUSH2 0x3FF2 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP4 AND DUP3 PUSH0 PUSH2 0x3035 JUMP JUMPDEST POP PUSH2 0x3FFD DUP2 DUP6 PUSH2 0x4C50 JUMP JUMPDEST SWAP4 POP POP POP JUMPDEST PUSH2 0x400B DUP2 PUSH2 0x4B71 JUMP JUMPDEST SWAP1 POP PUSH2 0x3F22 JUMP JUMPDEST POP DUP1 ISZERO PUSH2 0xD38 JUMPI PUSH1 0x40 MLOAD PUSH4 0x351DC55D PUSH1 0xE2 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST DUP3 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP6 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND EQ PUSH2 0x4056 JUMPI PUSH2 0x4056 DUP4 DUP7 DUP4 PUSH2 0x2421 JUMP JUMPDEST PUSH2 0x4060 DUP4 DUP3 PUSH2 0x41FB JUMP JUMPDEST PUSH2 0x4072 PUSH2 0x406B PUSH2 0xADE JUMP JUMPDEST DUP6 DUP5 PUSH2 0x422F JUMP JUMPDEST DUP3 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP5 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP7 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH32 0xFBDE797D201C681B91056529119E0B02407C7BB96A4A2C75C01FC9667232C8DB DUP6 DUP6 PUSH1 0x40 MLOAD PUSH2 0x40CA 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 POP POP POP JUMP JUMPDEST PUSH0 DUP1 PUSH0 NOT DUP4 DUP6 MULMOD SWAP4 SWAP1 SWAP3 MUL DUP1 DUP5 LT SWAP4 DUP2 SWAP1 SUB SWAP4 SWAP1 SWAP4 SUB SWAP4 SWAP2 POP POP JUMP JUMPDEST PUSH4 0x4E487B71 PUSH0 MSTORE DUP1 PUSH1 0x20 MSTORE PUSH1 0x24 PUSH1 0x1C REVERT JUMPDEST PUSH2 0x4114 DUP5 DUP5 DUP5 DUP5 PUSH1 0x1 PUSH2 0x4264 JUMP JUMPDEST PUSH2 0x246C JUMPI PUSH1 0x40 MLOAD PUSH4 0x5274AFE7 PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP6 AND PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x24 ADD PUSH2 0xE70 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP3 AND PUSH2 0x4165 JUMPI PUSH1 0x40 MLOAD PUSH4 0xEC442F05 PUSH1 0xE0 SHL DUP2 MSTORE PUSH0 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x24 ADD PUSH2 0xE70 JUMP JUMPDEST PUSH2 0xD38 PUSH0 DUP4 DUP4 PUSH2 0x33B7 JUMP JUMPDEST PUSH0 PUSH0 PUSH0 PUSH2 0x417C PUSH1 0x40 MLOAD SWAP1 JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH1 0x4 DUP2 MSTORE PUSH1 0x24 DUP2 ADD SWAP1 SWAP2 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 SWAP2 POP PUSH0 SWAP1 DUP2 SWAP1 PUSH2 0x41B7 SWAP1 DUP8 SWAP1 PUSH2 0x42D1 JUMP JUMPDEST POP SWAP2 POP SWAP2 POP PUSH2 0x41C5 DUP4 PUSH1 0x40 MSTORE JUMP JUMPDEST DUP2 DUP1 ISZERO PUSH2 0x41D3 JUMPI POP PUSH1 0x20 RETURNDATASIZE LT ISZERO JUMPDEST DUP1 ISZERO PUSH2 0x41E0 JUMPI POP PUSH1 0xFF DUP2 GT ISZERO JUMPDEST PUSH2 0x41EB JUMPI PUSH0 PUSH0 PUSH2 0x41EF JUMP JUMPDEST PUSH1 0x1 DUP2 JUMPDEST SWAP5 POP SWAP5 POP POP POP POP SWAP2 POP SWAP2 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP3 AND PUSH2 0x4224 JUMPI PUSH1 0x40 MLOAD PUSH4 0x4B637E8F PUSH1 0xE1 SHL DUP2 MSTORE PUSH0 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x24 ADD PUSH2 0xE70 JUMP JUMPDEST PUSH2 0xD38 DUP3 PUSH0 DUP4 PUSH2 0x33B7 JUMP JUMPDEST PUSH2 0x423C DUP4 DUP4 DUP4 PUSH1 0x1 PUSH2 0x42F2 JUMP JUMPDEST PUSH2 0x239B JUMPI PUSH1 0x40 MLOAD PUSH4 0x5274AFE7 PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP5 AND PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x24 ADD PUSH2 0xE70 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH4 0x23B872DD PUSH1 0xE0 SHL PUSH0 DUP2 DUP2 MSTORE PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP8 DUP2 AND PUSH1 0x4 MSTORE DUP7 AND PUSH1 0x24 MSTORE PUSH1 0x44 DUP6 SWAP1 MSTORE SWAP2 PUSH1 0x20 DUP4 PUSH1 0x64 DUP2 DUP1 DUP13 GAS CALL SWAP3 POP PUSH1 0x1 PUSH0 MLOAD EQ DUP4 AND PUSH2 0x42C0 JUMPI DUP4 DUP4 ISZERO AND ISZERO PUSH2 0x42B4 JUMPI RETURNDATASIZE PUSH0 DUP3 RETURNDATACOPY RETURNDATASIZE DUP2 REVERT JUMPDEST PUSH0 DUP9 EXTCODESIZE GT RETURNDATASIZE ISZERO AND DUP4 AND SWAP3 POP JUMPDEST PUSH1 0x40 MSTORE POP PUSH0 PUSH1 0x60 MSTORE SWAP6 SWAP5 POP POP POP POP POP JUMP JUMPDEST PUSH0 PUSH0 PUSH0 PUSH1 0x40 PUSH0 DUP6 MLOAD PUSH1 0x20 DUP8 ADD DUP9 GAS STATICCALL SWAP3 POP PUSH0 MLOAD SWAP2 POP PUSH1 0x20 MLOAD SWAP1 POP SWAP3 POP SWAP3 POP SWAP3 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH4 0xA9059CBB PUSH1 0xE0 SHL PUSH0 DUP2 DUP2 MSTORE PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP7 AND PUSH1 0x4 MSTORE PUSH1 0x24 DUP6 SWAP1 MSTORE SWAP2 PUSH1 0x20 DUP4 PUSH1 0x44 DUP2 DUP1 DUP12 GAS CALL SWAP3 POP PUSH1 0x1 PUSH0 MLOAD EQ DUP4 AND PUSH2 0x4348 JUMPI DUP4 DUP4 ISZERO AND ISZERO PUSH2 0x433C JUMPI RETURNDATASIZE PUSH0 DUP3 RETURNDATACOPY RETURNDATASIZE DUP2 REVERT JUMPDEST PUSH0 DUP8 EXTCODESIZE GT RETURNDATASIZE ISZERO AND DUP4 AND SWAP3 POP JUMPDEST PUSH1 0x40 MSTORE POP SWAP5 SWAP4 POP POP POP POP JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 PUSH2 0x400 ADD PUSH1 0x40 MSTORE DUP1 PUSH1 0x20 SWAP1 PUSH1 0x20 DUP3 MUL DUP1 CALLDATASIZE DUP4 CALLDATACOPY POP SWAP2 SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH0 DUP2 MLOAD DUP1 DUP5 MSTORE DUP1 PUSH1 0x20 DUP5 ADD PUSH1 0x20 DUP7 ADD MCOPY PUSH0 PUSH1 0x20 DUP3 DUP7 ADD ADD MSTORE PUSH1 0x20 PUSH1 0x1F NOT PUSH1 0x1F DUP4 ADD AND DUP6 ADD ADD SWAP2 POP POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x20 DUP2 MSTORE PUSH0 PUSH2 0xA95 PUSH1 0x20 DUP4 ADD DUP5 PUSH2 0x4373 JUMP JUMPDEST PUSH0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x43C3 JUMPI PUSH0 PUSH0 REVERT JUMPDEST POP CALLDATALOAD SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 AND DUP2 EQ PUSH2 0xBA3 JUMPI PUSH0 PUSH0 REVERT JUMPDEST PUSH0 PUSH0 PUSH1 0x40 DUP4 DUP6 SUB SLT ISZERO PUSH2 0x43EF JUMPI PUSH0 PUSH0 REVERT JUMPDEST DUP3 CALLDATALOAD PUSH2 0x43FA DUP2 PUSH2 0x43CA JUMP JUMPDEST SWAP5 PUSH1 0x20 SWAP4 SWAP1 SWAP4 ADD CALLDATALOAD SWAP4 POP POP POP JUMP JUMPDEST PUSH0 PUSH0 PUSH1 0x40 DUP4 DUP6 SUB SLT ISZERO PUSH2 0x4419 JUMPI PUSH0 PUSH0 REVERT JUMPDEST POP POP DUP1 CALLDATALOAD SWAP3 PUSH1 0x20 SWAP1 SWAP2 ADD CALLDATALOAD SWAP2 POP JUMP JUMPDEST PUSH0 PUSH0 PUSH0 PUSH1 0x60 DUP5 DUP7 SUB SLT ISZERO PUSH2 0x443A JUMPI PUSH0 PUSH0 REVERT JUMPDEST DUP4 CALLDATALOAD PUSH2 0x4445 DUP2 PUSH2 0x43CA JUMP JUMPDEST SWAP3 POP PUSH1 0x20 DUP5 ADD CALLDATALOAD PUSH2 0x4455 DUP2 PUSH2 0x43CA JUMP JUMPDEST SWAP3 SWAP6 SWAP3 SWAP5 POP POP POP PUSH1 0x40 SWAP2 SWAP1 SWAP2 ADD CALLDATALOAD SWAP1 JUMP JUMPDEST DUP1 CALLDATALOAD PUSH1 0xFF DUP2 AND DUP2 EQ PUSH2 0x4476 JUMPI PUSH0 PUSH0 REVERT JUMPDEST SWAP2 SWAP1 POP JUMP JUMPDEST PUSH4 0x4E487B71 PUSH1 0xE0 SHL PUSH0 MSTORE PUSH1 0x41 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH0 REVERT 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 PUSH2 0x44B7 JUMPI PUSH2 0x44B7 PUSH2 0x447B JUMP JUMPDEST PUSH1 0x40 MSTORE SWAP2 SWAP1 POP JUMP JUMPDEST PUSH0 DUP3 PUSH1 0x1F DUP4 ADD SLT PUSH2 0x44CE JUMPI PUSH0 PUSH0 REVERT JUMPDEST DUP2 CALLDATALOAD PUSH1 0x20 DUP4 ADD PUSH0 PUSH0 PUSH1 0x1 PUSH1 0x1 PUSH1 0x40 SHL SUB DUP5 GT ISZERO PUSH2 0x44ED JUMPI PUSH2 0x44ED PUSH2 0x447B JUMP JUMPDEST POP PUSH1 0x1F DUP4 ADD PUSH1 0x1F NOT AND PUSH1 0x20 ADD PUSH2 0x4502 DUP2 PUSH2 0x448F JUMP JUMPDEST SWAP2 POP POP DUP3 DUP2 MSTORE DUP6 DUP4 DUP4 ADD GT ISZERO PUSH2 0x4516 JUMPI PUSH0 PUSH0 REVERT JUMPDEST DUP3 DUP3 PUSH1 0x20 DUP4 ADD CALLDATACOPY PUSH0 SWAP3 DUP2 ADD PUSH1 0x20 ADD SWAP3 SWAP1 SWAP3 MSTORE POP SWAP4 SWAP3 POP POP POP JUMP JUMPDEST PUSH0 PUSH0 PUSH0 PUSH1 0x60 DUP5 DUP7 SUB SLT ISZERO PUSH2 0x4542 JUMPI PUSH0 PUSH0 REVERT JUMPDEST PUSH2 0x454B DUP5 PUSH2 0x4466 JUMP JUMPDEST SWAP3 POP PUSH2 0x4559 PUSH1 0x20 DUP6 ADD PUSH2 0x4466 JUMP JUMPDEST SWAP2 POP PUSH1 0x40 DUP5 ADD CALLDATALOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0x40 SHL SUB DUP2 GT ISZERO PUSH2 0x4573 JUMPI PUSH0 PUSH0 REVERT JUMPDEST PUSH2 0x457F DUP7 DUP3 DUP8 ADD PUSH2 0x44BF JUMP JUMPDEST SWAP2 POP POP SWAP3 POP SWAP3 POP SWAP3 JUMP JUMPDEST PUSH0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x4599 JUMPI PUSH0 PUSH0 REVERT JUMPDEST DUP2 CALLDATALOAD PUSH2 0xA95 DUP2 PUSH2 0x43CA JUMP JUMPDEST PUSH0 PUSH0 PUSH1 0x40 DUP4 DUP6 SUB SLT ISZERO PUSH2 0x45B5 JUMPI PUSH0 PUSH0 REVERT JUMPDEST DUP3 CALLDATALOAD PUSH2 0x45C0 DUP2 PUSH2 0x43CA JUMP JUMPDEST SWAP2 POP PUSH1 0x20 DUP4 ADD CALLDATALOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0x40 SHL SUB DUP2 GT ISZERO PUSH2 0x45DA JUMPI PUSH0 PUSH0 REVERT JUMPDEST PUSH2 0x45E6 DUP6 DUP3 DUP7 ADD PUSH2 0x44BF JUMP JUMPDEST SWAP2 POP POP SWAP3 POP SWAP3 SWAP1 POP JUMP JUMPDEST PUSH2 0x400 DUP2 ADD DUP2 DUP4 PUSH0 JUMPDEST PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x461B JUMPI DUP2 MLOAD PUSH1 0xFF AND DUP4 MSTORE PUSH1 0x20 SWAP3 DUP4 ADD SWAP3 SWAP1 SWAP2 ADD SWAP1 PUSH1 0x1 ADD PUSH2 0x45F9 JUMP JUMPDEST POP POP POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH0 PUSH0 PUSH1 0x40 DUP4 DUP6 SUB SLT ISZERO PUSH2 0x4635 JUMPI PUSH0 PUSH0 REVERT JUMPDEST DUP3 CALLDATALOAD SWAP2 POP PUSH1 0x20 DUP4 ADD CALLDATALOAD PUSH2 0x4647 DUP2 PUSH2 0x43CA JUMP JUMPDEST DUP1 SWAP2 POP POP SWAP3 POP SWAP3 SWAP1 POP JUMP JUMPDEST DUP1 ISZERO ISZERO DUP2 EQ PUSH2 0xBA3 JUMPI PUSH0 PUSH0 REVERT JUMPDEST PUSH0 PUSH0 PUSH0 PUSH0 PUSH1 0x80 DUP6 DUP8 SUB SLT ISZERO PUSH2 0x4672 JUMPI PUSH0 PUSH0 REVERT JUMPDEST PUSH2 0x467B DUP6 PUSH2 0x4466 JUMP JUMPDEST SWAP4 POP PUSH1 0x20 DUP6 ADD CALLDATALOAD PUSH2 0x468B DUP2 PUSH2 0x43CA JUMP JUMPDEST SWAP3 POP PUSH1 0x40 DUP6 ADD CALLDATALOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0x40 SHL SUB DUP2 GT ISZERO PUSH2 0x46A5 JUMPI PUSH0 PUSH0 REVERT JUMPDEST PUSH2 0x46B1 DUP8 DUP3 DUP9 ADD PUSH2 0x44BF JUMP JUMPDEST SWAP3 POP POP PUSH1 0x60 DUP6 ADD CALLDATALOAD PUSH2 0x46C2 DUP2 PUSH2 0x4652 JUMP JUMPDEST SWAP4 SWAP7 SWAP3 SWAP6 POP SWAP1 SWAP4 POP POP JUMP JUMPDEST PUSH0 PUSH0 PUSH1 0x40 DUP4 DUP6 SUB SLT ISZERO PUSH2 0x46DE JUMPI PUSH0 PUSH0 REVERT JUMPDEST PUSH2 0x46E7 DUP4 PUSH2 0x4466 JUMP JUMPDEST SWAP2 POP PUSH2 0x46F5 PUSH1 0x20 DUP5 ADD PUSH2 0x4466 JUMP JUMPDEST SWAP1 POP SWAP3 POP SWAP3 SWAP1 POP JUMP JUMPDEST PUSH0 PUSH0 PUSH1 0x40 DUP4 DUP6 SUB SLT ISZERO PUSH2 0x470F JUMPI PUSH0 PUSH0 REVERT JUMPDEST DUP3 CALLDATALOAD SWAP2 POP PUSH1 0x20 DUP4 ADD CALLDATALOAD PUSH5 0xFFFFFFFFFF DUP2 AND DUP2 EQ PUSH2 0x4647 JUMPI PUSH0 PUSH0 REVERT JUMPDEST PUSH0 PUSH1 0x1 PUSH1 0x1 PUSH1 0x40 SHL SUB DUP3 GT ISZERO PUSH2 0x4742 JUMPI PUSH2 0x4742 PUSH2 0x447B JUMP JUMPDEST POP PUSH1 0x5 SHL PUSH1 0x20 ADD SWAP1 JUMP JUMPDEST PUSH0 DUP3 PUSH1 0x1F DUP4 ADD SLT PUSH2 0x475B JUMPI PUSH0 PUSH0 REVERT JUMPDEST DUP2 CALLDATALOAD PUSH2 0x476E PUSH2 0x4769 DUP3 PUSH2 0x472A JUMP JUMPDEST PUSH2 0x448F JUMP JUMPDEST DUP1 DUP3 DUP3 MSTORE PUSH1 0x20 DUP3 ADD SWAP2 POP PUSH1 0x20 DUP4 PUSH1 0x5 SHL DUP7 ADD ADD SWAP3 POP DUP6 DUP4 GT ISZERO PUSH2 0x478F JUMPI PUSH0 PUSH0 REVERT JUMPDEST PUSH1 0x20 DUP6 ADD JUMPDEST DUP4 DUP2 LT ISZERO PUSH2 0x47B3 JUMPI PUSH2 0x47A5 DUP2 PUSH2 0x4466 JUMP JUMPDEST DUP4 MSTORE PUSH1 0x20 SWAP3 DUP4 ADD SWAP3 ADD PUSH2 0x4794 JUMP JUMPDEST POP SWAP6 SWAP5 POP POP POP POP POP JUMP JUMPDEST PUSH0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x47CD JUMPI PUSH0 PUSH0 REVERT JUMPDEST DUP2 CALLDATALOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0x40 SHL SUB DUP2 GT ISZERO PUSH2 0x47E2 JUMPI PUSH0 PUSH0 REVERT JUMPDEST PUSH2 0xE91 DUP5 DUP3 DUP6 ADD PUSH2 0x474C JUMP JUMPDEST PUSH0 PUSH0 PUSH1 0x40 DUP4 DUP6 SUB SLT ISZERO PUSH2 0x47FF JUMPI PUSH0 PUSH0 REVERT JUMPDEST PUSH2 0x4808 DUP4 PUSH2 0x4466 JUMP JUMPDEST SWAP2 POP PUSH1 0x20 DUP4 ADD CALLDATALOAD PUSH2 0x4647 DUP2 PUSH2 0x4652 JUMP JUMPDEST DUP1 CALLDATALOAD PUSH2 0x4476 DUP2 PUSH2 0x43CA JUMP JUMPDEST PUSH0 DUP3 PUSH1 0x1F DUP4 ADD SLT PUSH2 0x4832 JUMPI PUSH0 PUSH0 REVERT JUMPDEST DUP2 CALLDATALOAD PUSH2 0x4840 PUSH2 0x4769 DUP3 PUSH2 0x472A JUMP JUMPDEST DUP1 DUP3 DUP3 MSTORE PUSH1 0x20 DUP3 ADD SWAP2 POP PUSH1 0x20 DUP4 PUSH1 0x5 SHL DUP7 ADD ADD SWAP3 POP DUP6 DUP4 GT ISZERO PUSH2 0x4861 JUMPI PUSH0 PUSH0 REVERT JUMPDEST PUSH1 0x20 DUP6 ADD JUMPDEST DUP4 DUP2 LT ISZERO PUSH2 0x47B3 JUMPI DUP1 CALLDATALOAD PUSH2 0x4879 DUP2 PUSH2 0x43CA JUMP JUMPDEST DUP4 MSTORE PUSH1 0x20 SWAP3 DUP4 ADD SWAP3 ADD PUSH2 0x4866 JUMP JUMPDEST PUSH0 DUP3 PUSH1 0x1F DUP4 ADD SLT PUSH2 0x4896 JUMPI PUSH0 PUSH0 REVERT JUMPDEST DUP2 CALLDATALOAD PUSH2 0x48A4 PUSH2 0x4769 DUP3 PUSH2 0x472A JUMP JUMPDEST DUP1 DUP3 DUP3 MSTORE PUSH1 0x20 DUP3 ADD SWAP2 POP PUSH1 0x20 DUP4 PUSH1 0x5 SHL DUP7 ADD ADD SWAP3 POP DUP6 DUP4 GT ISZERO PUSH2 0x48C5 JUMPI PUSH0 PUSH0 REVERT JUMPDEST PUSH1 0x20 DUP6 ADD JUMPDEST DUP4 DUP2 LT ISZERO PUSH2 0x47B3 JUMPI DUP1 CALLDATALOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0x40 SHL SUB DUP2 GT ISZERO PUSH2 0x48E7 JUMPI PUSH0 PUSH0 REVERT JUMPDEST PUSH2 0x48F6 DUP9 PUSH1 0x20 DUP4 DUP11 ADD ADD PUSH2 0x44BF JUMP JUMPDEST DUP5 MSTORE POP PUSH1 0x20 SWAP3 DUP4 ADD SWAP3 ADD PUSH2 0x48CA JUMP JUMPDEST PUSH0 PUSH0 PUSH0 PUSH0 PUSH0 PUSH0 PUSH0 PUSH1 0xE0 DUP9 DUP11 SUB SLT ISZERO PUSH2 0x491B JUMPI PUSH0 PUSH0 REVERT JUMPDEST DUP8 CALLDATALOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0x40 SHL SUB DUP2 GT ISZERO PUSH2 0x4930 JUMPI PUSH0 PUSH0 REVERT JUMPDEST PUSH2 0x493C DUP11 DUP3 DUP12 ADD PUSH2 0x44BF JUMP JUMPDEST SWAP8 POP POP PUSH1 0x20 DUP9 ADD CALLDATALOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0x40 SHL SUB DUP2 GT ISZERO PUSH2 0x4957 JUMPI PUSH0 PUSH0 REVERT JUMPDEST PUSH2 0x4963 DUP11 DUP3 DUP12 ADD PUSH2 0x44BF JUMP JUMPDEST SWAP7 POP POP PUSH2 0x4972 PUSH1 0x40 DUP10 ADD PUSH2 0x4818 JUMP JUMPDEST SWAP5 POP PUSH1 0x60 DUP9 ADD CALLDATALOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0x40 SHL SUB DUP2 GT ISZERO PUSH2 0x498C JUMPI PUSH0 PUSH0 REVERT JUMPDEST PUSH2 0x4998 DUP11 DUP3 DUP12 ADD PUSH2 0x4823 JUMP JUMPDEST SWAP5 POP POP PUSH1 0x80 DUP9 ADD CALLDATALOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0x40 SHL SUB DUP2 GT ISZERO PUSH2 0x49B3 JUMPI PUSH0 PUSH0 REVERT JUMPDEST PUSH2 0x49BF DUP11 DUP3 DUP12 ADD PUSH2 0x4887 JUMP JUMPDEST SWAP4 POP POP PUSH1 0xA0 DUP9 ADD CALLDATALOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0x40 SHL SUB DUP2 GT ISZERO PUSH2 0x49DA JUMPI PUSH0 PUSH0 REVERT JUMPDEST PUSH2 0x49E6 DUP11 DUP3 DUP12 ADD PUSH2 0x474C JUMP JUMPDEST SWAP3 POP POP PUSH1 0xC0 DUP9 ADD CALLDATALOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0x40 SHL SUB DUP2 GT ISZERO PUSH2 0x4A01 JUMPI PUSH0 PUSH0 REVERT JUMPDEST PUSH2 0x4A0D DUP11 DUP3 DUP12 ADD PUSH2 0x474C JUMP JUMPDEST SWAP2 POP POP SWAP3 SWAP6 SWAP9 SWAP2 SWAP5 SWAP8 POP SWAP3 SWAP6 POP JUMP JUMPDEST PUSH0 PUSH0 PUSH0 PUSH1 0x60 DUP5 DUP7 SUB SLT ISZERO PUSH2 0x4A2E JUMPI PUSH0 PUSH0 REVERT JUMPDEST DUP4 CALLDATALOAD SWAP3 POP PUSH1 0x20 DUP5 ADD CALLDATALOAD PUSH2 0x4A40 DUP2 PUSH2 0x43CA JUMP JUMPDEST SWAP2 POP PUSH1 0x40 DUP5 ADD CALLDATALOAD PUSH2 0x4A50 DUP2 PUSH2 0x43CA JUMP JUMPDEST DUP1 SWAP2 POP POP SWAP3 POP SWAP3 POP SWAP3 JUMP JUMPDEST PUSH2 0x400 DUP2 ADD DUP2 DUP4 PUSH0 JUMPDEST PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x461B JUMPI DUP2 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP4 MSTORE PUSH1 0x20 SWAP3 DUP4 ADD SWAP3 SWAP1 SWAP2 ADD SWAP1 PUSH1 0x1 ADD PUSH2 0x4A64 JUMP JUMPDEST PUSH0 PUSH0 PUSH1 0x40 DUP4 DUP6 SUB SLT ISZERO PUSH2 0x4A9D JUMPI PUSH0 PUSH0 REVERT JUMPDEST DUP3 CALLDATALOAD PUSH2 0x4AA8 DUP2 PUSH2 0x43CA JUMP JUMPDEST SWAP2 POP PUSH1 0x20 DUP4 ADD CALLDATALOAD PUSH2 0x4647 DUP2 PUSH2 0x43CA JUMP JUMPDEST PUSH0 PUSH0 PUSH0 PUSH1 0x60 DUP5 DUP7 SUB SLT ISZERO PUSH2 0x4ACA JUMPI PUSH0 PUSH0 REVERT JUMPDEST PUSH2 0x4AD3 DUP5 PUSH2 0x4466 JUMP JUMPDEST SWAP3 POP PUSH2 0x4455 PUSH1 0x20 DUP6 ADD PUSH2 0x4466 JUMP JUMPDEST PUSH1 0x1 DUP2 DUP2 SHR SWAP1 DUP3 AND DUP1 PUSH2 0x4AF5 JUMPI PUSH1 0x7F DUP3 AND SWAP2 POP JUMPDEST PUSH1 0x20 DUP3 LT DUP2 SUB PUSH2 0x4B13 JUMPI PUSH4 0x4E487B71 PUSH1 0xE0 SHL PUSH0 MSTORE PUSH1 0x22 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH0 REVERT JUMPDEST POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH4 0x4E487B71 PUSH1 0xE0 SHL PUSH0 MSTORE PUSH1 0x11 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH0 REVERT JUMPDEST PUSH1 0xFF DUP2 DUP2 AND DUP4 DUP3 AND ADD SWAP1 DUP2 GT ISZERO PUSH2 0x9B3 JUMPI PUSH2 0x9B3 PUSH2 0x4B19 JUMP JUMPDEST PUSH4 0x4E487B71 PUSH1 0xE0 SHL PUSH0 MSTORE PUSH1 0x32 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH0 REVERT JUMPDEST PUSH0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x4B6A JUMPI PUSH0 PUSH0 REVERT JUMPDEST POP MLOAD SWAP2 SWAP1 POP JUMP JUMPDEST PUSH0 PUSH1 0x1 DUP3 ADD PUSH2 0x4B82 JUMPI PUSH2 0x4B82 PUSH2 0x4B19 JUMP JUMPDEST POP PUSH1 0x1 ADD SWAP1 JUMP JUMPDEST DUP1 DUP3 ADD DUP3 DUP2 SLT PUSH0 DUP4 SLT DUP1 ISZERO DUP3 AND DUP3 ISZERO DUP3 AND OR ISZERO PUSH2 0x4BA8 JUMPI PUSH2 0x4BA8 PUSH2 0x4B19 JUMP JUMPDEST POP POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP4 SWAP1 SWAP4 AND DUP4 MSTORE PUSH1 0x20 DUP4 ADD SWAP2 SWAP1 SWAP2 MSTORE PUSH1 0x40 DUP3 ADD MSTORE PUSH1 0x60 ADD SWAP1 JUMP JUMPDEST DUP1 DUP3 ADD DUP1 DUP3 GT ISZERO PUSH2 0x9B3 JUMPI PUSH2 0x9B3 PUSH2 0x4B19 JUMP JUMPDEST PUSH4 0x4E487B71 PUSH1 0xE0 SHL PUSH0 MSTORE PUSH1 0x12 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH0 REVERT JUMPDEST PUSH0 DUP3 PUSH2 0x4C06 JUMPI PUSH2 0x4C06 PUSH2 0x4BE4 JUMP JUMPDEST POP DIV SWAP1 JUMP JUMPDEST PUSH1 0x20 DUP1 DUP3 MSTORE DUP3 MLOAD DUP3 DUP3 ADD DUP2 SWAP1 MSTORE PUSH0 SWAP2 DUP5 ADD SWAP1 PUSH1 0x40 DUP5 ADD SWAP1 DUP4 JUMPDEST DUP2 DUP2 LT ISZERO PUSH2 0x4C45 JUMPI DUP4 MLOAD PUSH1 0xFF AND DUP4 MSTORE PUSH1 0x20 SWAP4 DUP5 ADD SWAP4 SWAP1 SWAP3 ADD SWAP2 PUSH1 0x1 ADD PUSH2 0x4C24 JUMP JUMPDEST POP SWAP1 SWAP6 SWAP5 POP POP POP POP POP JUMP JUMPDEST DUP2 DUP2 SUB DUP2 DUP2 GT ISZERO PUSH2 0x9B3 JUMPI PUSH2 0x9B3 PUSH2 0x4B19 JUMP JUMPDEST PUSH1 0xFF DUP3 DUP2 AND DUP3 DUP3 AND SUB SWAP1 DUP2 GT ISZERO PUSH2 0x9B3 JUMPI PUSH2 0x9B3 PUSH2 0x4B19 JUMP JUMPDEST PUSH0 PUSH1 0xFF DUP3 AND PUSH1 0xFF DUP2 SUB PUSH2 0x4C91 JUMPI PUSH2 0x4C91 PUSH2 0x4B19 JUMP JUMPDEST PUSH1 0x1 ADD SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x1 DUP2 JUMPDEST PUSH1 0x1 DUP5 GT ISZERO PUSH2 0x4CD5 JUMPI DUP1 DUP6 DIV DUP2 GT ISZERO PUSH2 0x4CB9 JUMPI PUSH2 0x4CB9 PUSH2 0x4B19 JUMP JUMPDEST PUSH1 0x1 DUP5 AND ISZERO PUSH2 0x4CC7 JUMPI SWAP1 DUP2 MUL SWAP1 JUMPDEST PUSH1 0x1 SWAP4 SWAP1 SWAP4 SHR SWAP3 DUP1 MUL PUSH2 0x4C9E JUMP JUMPDEST SWAP4 POP SWAP4 SWAP2 POP POP JUMP JUMPDEST PUSH0 DUP3 PUSH2 0x4CEB JUMPI POP PUSH1 0x1 PUSH2 0x9B3 JUMP JUMPDEST DUP2 PUSH2 0x4CF7 JUMPI POP PUSH0 PUSH2 0x9B3 JUMP JUMPDEST DUP2 PUSH1 0x1 DUP2 EQ PUSH2 0x4D0D JUMPI PUSH1 0x2 DUP2 EQ PUSH2 0x4D17 JUMPI PUSH2 0x4D33 JUMP JUMPDEST PUSH1 0x1 SWAP2 POP POP PUSH2 0x9B3 JUMP JUMPDEST PUSH1 0xFF DUP5 GT ISZERO PUSH2 0x4D28 JUMPI PUSH2 0x4D28 PUSH2 0x4B19 JUMP JUMPDEST POP POP PUSH1 0x1 DUP3 SHL PUSH2 0x9B3 JUMP JUMPDEST POP PUSH1 0x20 DUP4 LT PUSH2 0x133 DUP4 LT AND PUSH1 0x4E DUP5 LT PUSH1 0xB DUP5 LT AND OR ISZERO PUSH2 0x4D56 JUMPI POP DUP2 DUP2 EXP PUSH2 0x9B3 JUMP JUMPDEST PUSH2 0x4D62 PUSH0 NOT DUP5 DUP5 PUSH2 0x4C9A JUMP JUMPDEST DUP1 PUSH0 NOT DIV DUP3 GT ISZERO PUSH2 0x4D75 JUMPI PUSH2 0x4D75 PUSH2 0x4B19 JUMP JUMPDEST MUL SWAP4 SWAP3 POP POP POP JUMP JUMPDEST PUSH0 PUSH2 0xA95 PUSH1 0xFF DUP5 AND DUP4 PUSH2 0x4CDD JUMP JUMPDEST PUSH0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x4D9B JUMPI PUSH0 PUSH0 REVERT JUMPDEST DUP2 MLOAD PUSH2 0xA95 DUP2 PUSH2 0x43CA JUMP JUMPDEST PUSH0 PUSH0 PUSH1 0x40 DUP4 DUP6 SUB SLT ISZERO PUSH2 0x4DB7 JUMPI PUSH0 PUSH0 REVERT JUMPDEST DUP3 MLOAD PUSH2 0x4DC2 DUP2 PUSH2 0x4652 JUMP JUMPDEST PUSH1 0x20 DUP5 ADD MLOAD SWAP1 SWAP3 POP PUSH4 0xFFFFFFFF DUP2 AND DUP2 EQ PUSH2 0x4647 JUMPI PUSH0 PUSH0 REVERT JUMPDEST PUSH1 0xFF DUP4 AND DUP2 MSTORE PUSH1 0x40 PUSH1 0x20 DUP3 ADD MSTORE PUSH0 PUSH2 0xE91 PUSH1 0x40 DUP4 ADD DUP5 PUSH2 0x4373 JUMP JUMPDEST PUSH0 DUP3 MLOAD DUP1 PUSH1 0x20 DUP6 ADD DUP5 MCOPY PUSH0 SWAP3 ADD SWAP2 DUP3 MSTORE POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH0 PUSH1 0x1 PUSH1 0xFF SHL DUP3 ADD PUSH2 0x4E20 JUMPI PUSH2 0x4E20 PUSH2 0x4B19 JUMP JUMPDEST POP PUSH0 SUB SWAP1 JUMP JUMPDEST DUP2 DUP2 SUB PUSH0 DUP4 SLT DUP1 ISZERO DUP4 DUP4 SGT AND DUP4 DUP4 SLT DUP3 AND OR ISZERO PUSH2 0x3576 JUMPI PUSH2 0x3576 PUSH2 0x4B19 JUMP JUMPDEST PUSH4 0x4E487B71 PUSH1 0xE0 SHL PUSH0 MSTORE PUSH1 0x21 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH0 REVERT JUMPDEST PUSH0 PUSH1 0xFF DUP4 AND DUP1 PUSH2 0x4E6B JUMPI PUSH2 0x4E6B PUSH2 0x4BE4 JUMP JUMPDEST DUP1 PUSH1 0xFF DUP5 AND MOD SWAP2 POP POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x1F DUP3 GT ISZERO PUSH2 0x239B JUMPI DUP1 PUSH0 MSTORE PUSH1 0x20 PUSH0 KECCAK256 PUSH1 0x1F DUP5 ADD PUSH1 0x5 SHR DUP2 ADD PUSH1 0x20 DUP6 LT ISZERO PUSH2 0x4E9F JUMPI POP DUP1 JUMPDEST PUSH1 0x1F DUP5 ADD PUSH1 0x5 SHR DUP3 ADD SWAP2 POP JUMPDEST DUP2 DUP2 LT ISZERO PUSH2 0x25E6 JUMPI PUSH0 DUP2 SSTORE PUSH1 0x1 ADD PUSH2 0x4EAB JUMP JUMPDEST DUP2 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0x40 SHL SUB DUP2 GT ISZERO PUSH2 0x4ED7 JUMPI PUSH2 0x4ED7 PUSH2 0x447B JUMP JUMPDEST PUSH2 0x4EEB DUP2 PUSH2 0x4EE5 DUP5 SLOAD PUSH2 0x4AE1 JUMP JUMPDEST DUP5 PUSH2 0x4E7A JUMP JUMPDEST PUSH1 0x20 PUSH1 0x1F DUP3 GT PUSH1 0x1 DUP2 EQ PUSH2 0x4F1D JUMPI PUSH0 DUP4 ISZERO PUSH2 0x4F06 JUMPI POP DUP5 DUP3 ADD MLOAD JUMPDEST PUSH0 NOT PUSH1 0x3 DUP6 SWAP1 SHL SHR NOT AND PUSH1 0x1 DUP5 SWAP1 SHL OR DUP5 SSTORE PUSH2 0x25E6 JUMP JUMPDEST PUSH0 DUP5 DUP2 MSTORE PUSH1 0x20 DUP2 KECCAK256 PUSH1 0x1F NOT DUP6 AND SWAP2 JUMPDEST DUP3 DUP2 LT ISZERO PUSH2 0x4F4C JUMPI DUP8 DUP6 ADD MLOAD DUP3 SSTORE PUSH1 0x20 SWAP5 DUP6 ADD SWAP5 PUSH1 0x1 SWAP1 SWAP3 ADD SWAP2 ADD PUSH2 0x4F2C JUMP JUMPDEST POP DUP5 DUP3 LT ISZERO PUSH2 0x4F69 JUMPI DUP7 DUP5 ADD MLOAD PUSH0 NOT PUSH1 0x3 DUP8 SWAP1 SHL PUSH1 0xF8 AND SHR NOT AND DUP2 SSTORE JUMPDEST POP POP POP POP PUSH1 0x1 SWAP1 DUP2 SHL ADD SWAP1 SSTORE POP JUMP INVALID LOG2 0xAD 0xA5 0xD6 PUSH20 0xDBA5EECEA7C7503EE87E29913D0D36AE093E950D PUSH4 0x2F7B8689 0x1F STOP MSTORE 0xC6 ORIGIN SELFBALANCE RJUMPI 0xF47D 0xB1 SWAP14 TLOAD RJUMP 0x4600 ADDRESS 0xC4 SWAP8 CREATE PUSH8 0xCA4CEBF71BA98EEA 0xDA 0xBE KECCAK256 0xBA 0xCE STOP CALLDATASIZE ADDMOD SWAP5 LOG1 EXTCODESIZE LOG1 LOG3 0x21 MOD PUSH8 0xC828492DB98DCA3E KECCAK256 PUSH23 0xCC3735A920A3CA505D382BBCA2646970667358221220F3 REVERT CODECOPY 0xDB LOG0 0xE8 0xD3 0xD3 0xBB JUMPF 0xA062 DUP11 0xB0 PUSH27 0x772C03D00F8CFE726D02571DAC7612472464736F6C634300081E00 CALLER ","sourceMap":"1154:6057:55:-:0;;;1084:4:31;1041:48;;1154:6057:55;;;;;;;;;-1:-1:-1;1619:22:52;:20;:22::i;:::-;1154:6057:55;;7709:422:30;3147:66;7898:15;;;;;;;7894:76;;;7936:23;;-1:-1:-1;;;7936:23:30;;;;;;;;;;;7894:76;7983:14;;-1:-1:-1;;;;;7983:14:30;;;:34;7979:146;;8033:33;;-1:-1:-1;;;;;;8033:33:30;-1:-1:-1;;;;;8033:33:30;;;;;8085:29;;158:50:87;;;8085:29:30;;146:2:87;131:18;8085:29:30;;;;;;;7979:146;7758:373;7709:422::o;14:200:87:-;1154:6057:55;;;;;;;;;;;;;;;;;;;;;;"},"deployedBytecode":{"functionDebugData":{"@MAX_STRATEGIES_15717":{"entryPoint":null,"id":15717,"parameterSlots":0,"returnSlots":0},"@UPGRADE_INTERFACE_VERSION_7940":{"entryPoint":null,"id":7940,"parameterSlots":0,"returnSlots":0},"@__AccessManagedMSV_init_14995":{"entryPoint":11750,"id":14995,"parameterSlots":7,"returnSlots":0},"@__ERC20_init_3115":{"entryPoint":13962,"id":3115,"parameterSlots":2,"returnSlots":0},"@__ERC20_init_unchained_3143":{"entryPoint":16079,"id":3143,"parameterSlots":2,"returnSlots":0},"@__ERC4626_init_3762":{"entryPoint":13945,"id":3762,"parameterSlots":1,"returnSlots":0},"@__ERC4626_init_unchained_3800":{"entryPoint":15948,"id":3800,"parameterSlots":1,"returnSlots":0},"@__MSVBase_init_unchained_16061":{"entryPoint":13980,"id":16061,"parameterSlots":4,"returnSlots":0},"@_approve_3547":{"entryPoint":9102,"id":3547,"parameterSlots":3,"returnSlots":0},"@_approve_3615":{"entryPoint":13012,"id":3615,"parameterSlots":4,"returnSlots":0},"@_asset_15012":{"entryPoint":10745,"id":15012,"parameterSlots":0,"returnSlots":1},"@_authorizeUpgrade_15002":{"entryPoint":null,"id":15002,"parameterSlots":1,"returnSlots":0},"@_burn_3529":{"entryPoint":16891,"id":3529,"parameterSlots":2,"returnSlots":0},"@_checkForwardToStrategy_15276":{"entryPoint":9423,"id":15276,"parameterSlots":3,"returnSlots":0},"@_checkInitializing_7828":{"entryPoint":13908,"id":7828,"parameterSlots":0,"returnSlots":0},"@_checkNonPayable_7605":{"entryPoint":15785,"id":7605,"parameterSlots":0,"returnSlots":0},"@_checkNotDelegated_8034":{"entryPoint":10572,"id":8034,"parameterSlots":0,"returnSlots":0},"@_checkProxy_8018":{"entryPoint":10218,"id":8018,"parameterSlots":0,"returnSlots":0},"@_convertToAssets_4329":{"entryPoint":9015,"id":4329,"parameterSlots":2,"returnSlots":1},"@_convertToShares_4301":{"entryPoint":9120,"id":4301,"parameterSlots":2,"returnSlots":1},"@_decimalsOffset_4427":{"entryPoint":null,"id":4427,"parameterSlots":0,"returnSlots":1},"@_depositToStrategies_16368":{"entryPoint":9939,"id":16368,"parameterSlots":1,"returnSlots":0},"@_deposit_15194":{"entryPoint":13887,"id":15194,"parameterSlots":4,"returnSlots":0},"@_deposit_17739":{"entryPoint":10645,"id":17739,"parameterSlots":4,"returnSlots":0},"@_deposit_4369":{"entryPoint":15816,"id":4369,"parameterSlots":4,"returnSlots":0},"@_getERC20Storage_3099":{"entryPoint":null,"id":3099,"parameterSlots":0,"returnSlots":1},"@_getERC4626Storage_3712":{"entryPoint":null,"id":3712,"parameterSlots":0,"returnSlots":1},"@_getInitializableStorage_7919":{"entryPoint":11710,"id":7919,"parameterSlots":0,"returnSlots":1},"@_getLOMStorage_17424":{"entryPoint":null,"id":17424,"parameterSlots":0,"returnSlots":1},"@_initializableStorageSlot_7905":{"entryPoint":null,"id":7905,"parameterSlots":0,"returnSlots":1},"@_isInitializing_7896":{"entryPoint":15923,"id":7896,"parameterSlots":0,"returnSlots":1},"@_maxDepositable_16178":{"entryPoint":9791,"id":16178,"parameterSlots":0,"returnSlots":1},"@_maxWithdrawable_16120":{"entryPoint":12090,"id":16120,"parameterSlots":1,"returnSlots":1},"@_mint_3496":{"entryPoint":16700,"id":3496,"parameterSlots":2,"returnSlots":0},"@_msgSender_4456":{"entryPoint":null,"id":4456,"parameterSlots":0,"returnSlots":1},"@_safeTransferFrom_9842":{"entryPoint":16996,"id":9842,"parameterSlots":5,"returnSlots":1},"@_safeTransfer_9817":{"entryPoint":17138,"id":9817,"parameterSlots":4,"returnSlots":1},"@_setImplementation_7385":{"entryPoint":15686,"id":7385,"parameterSlots":1,"returnSlots":0},"@_slotIndex_17584":{"entryPoint":13793,"id":17584,"parameterSlots":0,"returnSlots":1},"@_spendAllowance_3663":{"entryPoint":9249,"id":3663,"parameterSlots":3,"returnSlots":0},"@_totalAssets_16216":{"entryPoint":8892,"id":16216,"parameterSlots":0,"returnSlots":1},"@_transfer_3371":{"entryPoint":9330,"id":3371,"parameterSlots":3,"returnSlots":0},"@_tryGetAssetDecimals_3878":{"entryPoint":16752,"id":3878,"parameterSlots":1,"returnSlots":2},"@_update_3463":{"entryPoint":13239,"id":3463,"parameterSlots":3,"returnSlots":0},"@_upgradeToAndCallUUPS_8085":{"entryPoint":10384,"id":8085,"parameterSlots":2,"returnSlots":0},"@_withdrawFromStrategies_16292":{"entryPoint":16159,"id":16292,"parameterSlots":1,"returnSlots":0},"@_withdraw_15167":{"entryPoint":15389,"id":15167,"parameterSlots":5,"returnSlots":0},"@_withdraw_17688":{"entryPoint":11798,"id":17688,"parameterSlots":5,"returnSlots":0},"@_withdraw_4419":{"entryPoint":16434,"id":4419,"parameterSlots":5,"returnSlots":0},"@addStrategy_16693":{"entryPoint":4088,"id":16693,"parameterSlots":2,"returnSlots":0},"@allowance_3268":{"entryPoint":8264,"id":3268,"parameterSlots":2,"returnSlots":1},"@approve_3292":{"entryPoint":2489,"id":3292,"parameterSlots":2,"returnSlots":1},"@asset_3919":{"entryPoint":2782,"id":3919,"parameterSlots":0,"returnSlots":1},"@balanceOf_3220":{"entryPoint":3737,"id":3220,"parameterSlots":1,"returnSlots":1},"@bubbleRevert_10459":{"entryPoint":15675,"id":10459,"parameterSlots":0,"returnSlots":0},"@changeDelta_17558":{"entryPoint":3388,"id":17558,"parameterSlots":2,"returnSlots":1},"@changeDepositQueue_17087":{"entryPoint":4731,"id":17087,"parameterSlots":1,"returnSlots":0},"@changeWithdrawQueue_17199":{"entryPoint":7460,"id":17199,"parameterSlots":1,"returnSlots":0},"@checkAsset_15555":{"entryPoint":11088,"id":15555,"parameterSlots":2,"returnSlots":0},"@convertToAssets_3969":{"entryPoint":2472,"id":3969,"parameterSlots":1,"returnSlots":1},"@convertToShares_3953":{"entryPoint":8092,"id":3953,"parameterSlots":1,"returnSlots":1},"@dcConnect_15334":{"entryPoint":11234,"id":15334,"parameterSlots":2,"returnSlots":0},"@dcDeposit_15503":{"entryPoint":12657,"id":15503,"parameterSlots":3,"returnSlots":1},"@dcDisconnect_15385":{"entryPoint":11417,"id":15385,"parameterSlots":2,"returnSlots":0},"@dcForward_15532":{"entryPoint":9709,"id":15532,"parameterSlots":3,"returnSlots":1},"@dcWithdraw_15444":{"entryPoint":12341,"id":15444,"parameterSlots":3,"returnSlots":1},"@decimals_3900":{"entryPoint":2716,"id":3900,"parameterSlots":0,"returnSlots":1},"@delegatecallNoReturn_10421":{"entryPoint":15631,"id":10421,"parameterSlots":2,"returnSlots":1},"@depositQueue_17349":{"entryPoint":8833,"id":17349,"parameterSlots":0,"returnSlots":1},"@depositToStrategies_16379":{"entryPoint":2970,"id":16379,"parameterSlots":1,"returnSlots":0},"@deposit_4135":{"entryPoint":3644,"id":4135,"parameterSlots":2,"returnSlots":1},"@forwardToStrategy_16493":{"entryPoint":2828,"id":16493,"parameterSlots":3,"returnSlots":1},"@functionDelegateCall_10166":{"entryPoint":13533,"id":10166,"parameterSlots":2,"returnSlots":1},"@getAddressSlot_10943":{"entryPoint":null,"id":10943,"parameterSlots":1,"returnSlots":1},"@getAssetsDelta_17498":{"entryPoint":null,"id":17498,"parameterSlots":1,"returnSlots":1},"@getBytesSlot_11020":{"entryPoint":null,"id":11020,"parameterSlots":1,"returnSlots":1},"@getBytesSlot_16436":{"entryPoint":2982,"id":16436,"parameterSlots":1,"returnSlots":1},"@getForwardToStrategySelector_15223":{"entryPoint":4605,"id":15223,"parameterSlots":2,"returnSlots":1},"@getFreeMemoryPointer_10485":{"entryPoint":null,"id":10485,"parameterSlots":0,"returnSlots":1},"@getImplementation_7358":{"entryPoint":null,"id":7358,"parameterSlots":0,"returnSlots":1},"@getOutflowLimitSlotSize_17471":{"entryPoint":null,"id":17471,"parameterSlots":0,"returnSlots":1},"@getOutflowLimit_17482":{"entryPoint":null,"id":17482,"parameterSlots":0,"returnSlots":1},"@initialize_14953":{"entryPoint":7022,"id":14953,"parameterSlots":7,"returnSlots":0},"@makeOutflowSlot_17522":{"entryPoint":4699,"id":17522,"parameterSlots":2,"returnSlots":1},"@makeSelector_239":{"entryPoint":null,"id":239,"parameterSlots":1,"returnSlots":1},"@maxDeposit_15091":{"entryPoint":2961,"id":15091,"parameterSlots":1,"returnSlots":1},"@maxDeposit_15674":{"entryPoint":12295,"id":15674,"parameterSlots":1,"returnSlots":1},"@maxMint_15126":{"entryPoint":8048,"id":15126,"parameterSlots":1,"returnSlots":1},"@maxRedeem_15078":{"entryPoint":8125,"id":15078,"parameterSlots":1,"returnSlots":1},"@maxRedeem_4027":{"entryPoint":12239,"id":4027,"parameterSlots":1,"returnSlots":1},"@maxWithdraw_15033":{"entryPoint":8103,"id":15033,"parameterSlots":1,"returnSlots":1},"@maxWithdraw_15692":{"entryPoint":12249,"id":15692,"parameterSlots":1,"returnSlots":1},"@maxWithdraw_4014":{"entryPoint":12077,"id":4014,"parameterSlots":1,"returnSlots":1},"@min_11411":{"entryPoint":13693,"id":11411,"parameterSlots":2,"returnSlots":1},"@mint_4179":{"entryPoint":5325,"id":4179,"parameterSlots":2,"returnSlots":1},"@mul512_11124":{"entryPoint":16601,"id":11124,"parameterSlots":2,"returnSlots":2},"@mulDiv_11611":{"entryPoint":15455,"id":11611,"parameterSlots":3,"returnSlots":1},"@mulDiv_11648":{"entryPoint":12946,"id":11648,"parameterSlots":4,"returnSlots":1},"@name_3159":{"entryPoint":2280,"id":3159,"parameterSlots":0,"returnSlots":1},"@panic_10907":{"entryPoint":16629,"id":10907,"parameterSlots":1,"returnSlots":0},"@previewDeposit_4043":{"entryPoint":null,"id":4043,"parameterSlots":1,"returnSlots":1},"@previewMint_4059":{"entryPoint":7294,"id":4059,"parameterSlots":1,"returnSlots":1},"@previewRedeem_4091":{"entryPoint":null,"id":4091,"parameterSlots":1,"returnSlots":1},"@previewWithdraw_4075":{"entryPoint":2512,"id":4075,"parameterSlots":1,"returnSlots":1},"@proxiableUUID_7976":{"entryPoint":3617,"id":7976,"parameterSlots":0,"returnSlots":1},"@rebalance_17326":{"entryPoint":8337,"id":17326,"parameterSlots":3,"returnSlots":1},"@redeem_4273":{"entryPoint":7383,"id":4273,"parameterSlots":3,"returnSlots":1},"@removeStrategy_16975":{"entryPoint":5463,"id":16975,"parameterSlots":2,"returnSlots":0},"@replaceStrategy_16582":{"entryPoint":3775,"id":16582,"parameterSlots":4,"returnSlots":0},"@returnDataSize_10445":{"entryPoint":null,"id":10445,"parameterSlots":0,"returnSlots":1},"@returnData_10453":{"entryPoint":15650,"id":10453,"parameterSlots":0,"returnSlots":1},"@safeTransferFrom_9491":{"entryPoint":16646,"id":9491,"parameterSlots":4,"returnSlots":0},"@safeTransfer_9460":{"entryPoint":16943,"id":9460,"parameterSlots":3,"returnSlots":0},"@setFreeMemoryPointer_10494":{"entryPoint":null,"id":10494,"parameterSlots":1,"returnSlots":0},"@setupOutflowLimit_17460":{"entryPoint":2524,"id":17460,"parameterSlots":2,"returnSlots":0},"@staticcallReturn64Bytes_10409":{"entryPoint":17105,"id":10409,"parameterSlots":2,"returnSlots":3},"@strategies_17338":{"entryPoint":8194,"id":17338,"parameterSlots":0,"returnSlots":1},"@strategyChange_15620":{"entryPoint":10754,"id":15620,"parameterSlots":5,"returnSlots":0},"@symbol_3175":{"entryPoint":5401,"id":3175,"parameterSlots":0,"returnSlots":1},"@ternary_11373":{"entryPoint":null,"id":11373,"parameterSlots":3,"returnSlots":1},"@toInt256_14480":{"entryPoint":13843,"id":14480,"parameterSlots":1,"returnSlots":1},"@toUint128_13201":{"entryPoint":9198,"id":13201,"parameterSlots":1,"returnSlots":1},"@toUint_14490":{"entryPoint":null,"id":14490,"parameterSlots":1,"returnSlots":1},"@totalAssets_15137":{"entryPoint":2266,"id":15137,"parameterSlots":0,"returnSlots":1},"@totalAssets_15656":{"entryPoint":11312,"id":15656,"parameterSlots":1,"returnSlots":1},"@totalSupply_3200":{"entryPoint":null,"id":3200,"parameterSlots":0,"returnSlots":1},"@transferFrom_3324":{"entryPoint":2679,"id":3324,"parameterSlots":3,"returnSlots":1},"@transfer_3244":{"entryPoint":7281,"id":3244,"parameterSlots":2,"returnSlots":1},"@tryAdd_11159":{"entryPoint":null,"id":11159,"parameterSlots":2,"returnSlots":2},"@unsignedRoundsUp_12704":{"entryPoint":15411,"id":12704,"parameterSlots":1,"returnSlots":1},"@upgradeToAndCall_7421":{"entryPoint":13708,"id":7421,"parameterSlots":2,"returnSlots":0},"@upgradeToAndCall_7996":{"entryPoint":3366,"id":7996,"parameterSlots":2,"returnSlots":0},"@withdrawQueue_17360":{"entryPoint":3529,"id":17360,"parameterSlots":0,"returnSlots":1},"@withdraw_4226":{"entryPoint":7306,"id":4226,"parameterSlots":3,"returnSlots":1},"abi_decode_array_bytes_dyn":{"entryPoint":18567,"id":null,"parameterSlots":2,"returnSlots":1},"abi_decode_array_contract_IInvestStrategy_dyn":{"entryPoint":18467,"id":null,"parameterSlots":2,"returnSlots":1},"abi_decode_array_uint8_dyn":{"entryPoint":18252,"id":null,"parameterSlots":2,"returnSlots":1},"abi_decode_bytes":{"entryPoint":17599,"id":null,"parameterSlots":2,"returnSlots":1},"abi_decode_contract_IERC20":{"entryPoint":18456,"id":null,"parameterSlots":1,"returnSlots":1},"abi_decode_tuple_t_address":{"entryPoint":17801,"id":null,"parameterSlots":2,"returnSlots":1},"abi_decode_tuple_t_address_fromMemory":{"entryPoint":null,"id":null,"parameterSlots":2,"returnSlots":1},"abi_decode_tuple_t_addresst_address":{"entryPoint":19084,"id":null,"parameterSlots":2,"returnSlots":2},"abi_decode_tuple_t_addresst_addresst_uint256":{"entryPoint":17448,"id":null,"parameterSlots":2,"returnSlots":3},"abi_decode_tuple_t_addresst_bytes_memory_ptr":{"entryPoint":17828,"id":null,"parameterSlots":2,"returnSlots":2},"abi_decode_tuple_t_addresst_uint256":{"entryPoint":17374,"id":null,"parameterSlots":2,"returnSlots":2},"abi_decode_tuple_t_array$_t_uint8_$dyn_memory_ptr":{"entryPoint":18365,"id":null,"parameterSlots":2,"returnSlots":1},"abi_decode_tuple_t_boolt_uint32_fromMemory":{"entryPoint":19878,"id":null,"parameterSlots":2,"returnSlots":2},"abi_decode_tuple_t_bytes32":{"entryPoint":null,"id":null,"parameterSlots":2,"returnSlots":1},"abi_decode_tuple_t_bytes32_fromMemory":{"entryPoint":19290,"id":null,"parameterSlots":2,"returnSlots":1},"abi_decode_tuple_t_contract$_IAccessManager_$6842_fromMemory":{"entryPoint":19851,"id":null,"parameterSlots":2,"returnSlots":1},"abi_decode_tuple_t_contract$_IInvestStrategy_$20725t_bytes_memory_ptr":{"entryPoint":null,"id":null,"parameterSlots":2,"returnSlots":2},"abi_decode_tuple_t_string_memory_ptrt_string_memory_ptrt_contract$_IERC20_$8679t_array$_t_contract$_IInvestStrategy_$20725_$dyn_memory_ptrt_array$_t_bytes_memory_ptr_$dyn_memory_ptrt_array$_t_uint8_$dyn_memory_ptrt_array$_t_uint8_$dyn_memory_ptr":{"entryPoint":18693,"id":null,"parameterSlots":2,"returnSlots":7},"abi_decode_tuple_t_uint256":{"entryPoint":17331,"id":null,"parameterSlots":2,"returnSlots":1},"abi_decode_tuple_t_uint256_fromMemory":{"entryPoint":null,"id":null,"parameterSlots":2,"returnSlots":1},"abi_decode_tuple_t_uint256t_address":{"entryPoint":17956,"id":null,"parameterSlots":2,"returnSlots":2},"abi_decode_tuple_t_uint256t_addresst_address":{"entryPoint":18972,"id":null,"parameterSlots":2,"returnSlots":3},"abi_decode_tuple_t_uint256t_uint256":{"entryPoint":17416,"id":null,"parameterSlots":2,"returnSlots":2},"abi_decode_tuple_t_uint256t_uint40":{"entryPoint":18174,"id":null,"parameterSlots":2,"returnSlots":2},"abi_decode_tuple_t_uint8t_bool":{"entryPoint":18414,"id":null,"parameterSlots":2,"returnSlots":2},"abi_decode_tuple_t_uint8t_contract$_IInvestStrategy_$20725t_bytes_memory_ptrt_bool":{"entryPoint":18015,"id":null,"parameterSlots":2,"returnSlots":4},"abi_decode_tuple_t_uint8t_uint8":{"entryPoint":18125,"id":null,"parameterSlots":2,"returnSlots":2},"abi_decode_tuple_t_uint8t_uint8t_bytes_memory_ptr":{"entryPoint":17712,"id":null,"parameterSlots":2,"returnSlots":3},"abi_decode_tuple_t_uint8t_uint8t_uint256":{"entryPoint":19128,"id":null,"parameterSlots":2,"returnSlots":3},"abi_decode_tuple_t_userDefinedValueType$_SlotIndex_$17382":{"entryPoint":null,"id":null,"parameterSlots":2,"returnSlots":1},"abi_decode_tuple_t_userDefinedValueType$_SlotIndex_$17382t_int256":{"entryPoint":null,"id":null,"parameterSlots":2,"returnSlots":2},"abi_decode_uint8":{"entryPoint":17510,"id":null,"parameterSlots":1,"returnSlots":1},"abi_encode_string":{"entryPoint":17267,"id":null,"parameterSlots":2,"returnSlots":1},"abi_encode_tuple_packed_t_bytes_memory_ptr__to_t_bytes_memory_ptr__nonPadded_inplace_fromStack_reversed":{"entryPoint":19958,"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_bytes4__to_t_address_t_address_t_bytes4__fromStack_reversed":{"entryPoint":null,"id":null,"parameterSlots":4,"returnSlots":1},"abi_encode_tuple_t_address_t_uint256_t_uint256__to_t_address_t_uint256_t_uint256__fromStack_reversed":{"entryPoint":19376,"id":null,"parameterSlots":4,"returnSlots":1},"abi_encode_tuple_t_address_t_uint8__to_t_address_t_uint8__fromStack_reversed":{"entryPoint":null,"id":null,"parameterSlots":3,"returnSlots":1},"abi_encode_tuple_t_array$_t_contract$_IInvestStrategy_$20725_$32_memory_ptr__to_t_array$_t_address_$32_memory_ptr__fromStack_reversed":{"entryPoint":19035,"id":null,"parameterSlots":2,"returnSlots":1},"abi_encode_tuple_t_array$_t_uint8_$32_memory_ptr__to_t_array$_t_uint8_$32_memory_ptr__fromStack_reversed":{"entryPoint":17904,"id":null,"parameterSlots":2,"returnSlots":1},"abi_encode_tuple_t_array$_t_uint8_$dyn_memory_ptr__to_t_array$_t_uint8_$dyn_memory_ptr__fromStack_reversed":{"entryPoint":19467,"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_bytes4__to_t_bytes4__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":null,"id":null,"parameterSlots":2,"returnSlots":1},"abi_encode_tuple_t_contract$_IInvestStrategy_$20725__to_t_address__fromStack_reversed":{"entryPoint":null,"id":null,"parameterSlots":2,"returnSlots":1},"abi_encode_tuple_t_contract$_IInvestStrategy_$20725_t_contract$_IInvestStrategy_$20725__to_t_address_t_address__fromStack_reversed":{"entryPoint":null,"id":null,"parameterSlots":3,"returnSlots":1},"abi_encode_tuple_t_int256__to_t_int256__fromStack_reversed":{"entryPoint":null,"id":null,"parameterSlots":2,"returnSlots":1},"abi_encode_tuple_t_int256_t_uint128__to_t_int256_t_uint256__fromStack_reversed":{"entryPoint":null,"id":null,"parameterSlots":3,"returnSlots":1},"abi_encode_tuple_t_rational_128_by_1_t_uint256__to_t_uint8_t_uint256__fromStack_reversed":{"entryPoint":null,"id":null,"parameterSlots":3,"returnSlots":1},"abi_encode_tuple_t_rational_1_by_1__to_t_uint64__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":17313,"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_uint8__to_t_uint8__fromStack_reversed":{"entryPoint":null,"id":null,"parameterSlots":2,"returnSlots":1},"abi_encode_tuple_t_uint8_t_bytes_memory_ptr__to_t_uint8_t_bytes_memory_ptr__fromStack_reversed":{"entryPoint":19931,"id":null,"parameterSlots":3,"returnSlots":1},"abi_encode_tuple_t_userDefinedValueType$_SlotIndex_$17382__to_t_uint256__fromStack_reversed":{"entryPoint":null,"id":null,"parameterSlots":2,"returnSlots":1},"abi_encode_tuple_t_userDefinedValueType$_SlotIndex_$17382_t_int256_t_int256__to_t_uint256_t_int256_t_int256__fromStack_reversed":{"entryPoint":null,"id":null,"parameterSlots":4,"returnSlots":1},"allocate_memory":{"entryPoint":17551,"id":null,"parameterSlots":1,"returnSlots":1},"array_allocation_size_array_uint8_dyn":{"entryPoint":18218,"id":null,"parameterSlots":1,"returnSlots":1},"array_dataslot_string_storage":{"entryPoint":null,"id":null,"parameterSlots":1,"returnSlots":1},"checked_add_t_int256":{"entryPoint":19337,"id":null,"parameterSlots":2,"returnSlots":1},"checked_add_t_uint256":{"entryPoint":19409,"id":null,"parameterSlots":2,"returnSlots":1},"checked_add_t_uint8":{"entryPoint":19245,"id":null,"parameterSlots":2,"returnSlots":1},"checked_div_t_uint256":{"entryPoint":19448,"id":null,"parameterSlots":2,"returnSlots":1},"checked_exp_helper":{"entryPoint":19610,"id":null,"parameterSlots":3,"returnSlots":2},"checked_exp_t_uint256_t_uint8":{"entryPoint":19837,"id":null,"parameterSlots":2,"returnSlots":1},"checked_exp_unsigned":{"entryPoint":19677,"id":null,"parameterSlots":2,"returnSlots":1},"checked_sub_t_int256":{"entryPoint":20006,"id":null,"parameterSlots":2,"returnSlots":1},"checked_sub_t_uint256":{"entryPoint":19536,"id":null,"parameterSlots":2,"returnSlots":1},"checked_sub_t_uint8":{"entryPoint":19555,"id":null,"parameterSlots":2,"returnSlots":1},"clean_up_bytearray_end_slots_string_storage":{"entryPoint":20090,"id":null,"parameterSlots":3,"returnSlots":0},"copy_byte_array_to_storage_from_t_string_memory_ptr_to_t_string_storage":{"entryPoint":20158,"id":null,"parameterSlots":2,"returnSlots":0},"extract_byte_array_length":{"entryPoint":19169,"id":null,"parameterSlots":1,"returnSlots":1},"extract_used_part_and_set_length_of_short_byte_array":{"entryPoint":null,"id":null,"parameterSlots":2,"returnSlots":1},"increment_t_uint256":{"entryPoint":19313,"id":null,"parameterSlots":1,"returnSlots":1},"increment_t_uint8":{"entryPoint":19580,"id":null,"parameterSlots":1,"returnSlots":1},"mod_t_uint8":{"entryPoint":20057,"id":null,"parameterSlots":2,"returnSlots":1},"negate_t_int256":{"entryPoint":19980,"id":null,"parameterSlots":1,"returnSlots":1},"panic_error_0x11":{"entryPoint":19225,"id":null,"parameterSlots":0,"returnSlots":0},"panic_error_0x12":{"entryPoint":19428,"id":null,"parameterSlots":0,"returnSlots":0},"panic_error_0x21":{"entryPoint":20037,"id":null,"parameterSlots":0,"returnSlots":0},"panic_error_0x32":{"entryPoint":19270,"id":null,"parameterSlots":0,"returnSlots":0},"panic_error_0x41":{"entryPoint":17531,"id":null,"parameterSlots":0,"returnSlots":0},"validator_revert_address":{"entryPoint":17354,"id":null,"parameterSlots":1,"returnSlots":0},"validator_revert_bool":{"entryPoint":18002,"id":null,"parameterSlots":1,"returnSlots":0}},"generatedSources":[{"ast":{"nativeSrc":"0:28392:87","nodeType":"YulBlock","src":"0:28392:87","statements":[{"nativeSrc":"6:3:87","nodeType":"YulBlock","src":"6:3:87","statements":[]},{"body":{"nativeSrc":"115:76:87","nodeType":"YulBlock","src":"115:76:87","statements":[{"nativeSrc":"125:26:87","nodeType":"YulAssignment","src":"125:26:87","value":{"arguments":[{"name":"headStart","nativeSrc":"137:9:87","nodeType":"YulIdentifier","src":"137:9:87"},{"kind":"number","nativeSrc":"148:2:87","nodeType":"YulLiteral","src":"148:2:87","type":"","value":"32"}],"functionName":{"name":"add","nativeSrc":"133:3:87","nodeType":"YulIdentifier","src":"133:3:87"},"nativeSrc":"133:18:87","nodeType":"YulFunctionCall","src":"133:18:87"},"variableNames":[{"name":"tail","nativeSrc":"125:4:87","nodeType":"YulIdentifier","src":"125:4:87"}]},{"expression":{"arguments":[{"name":"headStart","nativeSrc":"167:9:87","nodeType":"YulIdentifier","src":"167:9:87"},{"name":"value0","nativeSrc":"178:6:87","nodeType":"YulIdentifier","src":"178:6:87"}],"functionName":{"name":"mstore","nativeSrc":"160:6:87","nodeType":"YulIdentifier","src":"160:6:87"},"nativeSrc":"160:25:87","nodeType":"YulFunctionCall","src":"160:25:87"},"nativeSrc":"160:25:87","nodeType":"YulExpressionStatement","src":"160:25:87"}]},"name":"abi_encode_tuple_t_uint256__to_t_uint256__fromStack_reversed","nativeSrc":"14:177:87","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nativeSrc":"84:9:87","nodeType":"YulTypedName","src":"84:9:87","type":""},{"name":"value0","nativeSrc":"95:6:87","nodeType":"YulTypedName","src":"95:6:87","type":""}],"returnVariables":[{"name":"tail","nativeSrc":"106:4:87","nodeType":"YulTypedName","src":"106:4:87","type":""}],"src":"14:177:87"},{"body":{"nativeSrc":"246:239:87","nodeType":"YulBlock","src":"246:239:87","statements":[{"nativeSrc":"256:26:87","nodeType":"YulVariableDeclaration","src":"256:26:87","value":{"arguments":[{"name":"value","nativeSrc":"276:5:87","nodeType":"YulIdentifier","src":"276:5:87"}],"functionName":{"name":"mload","nativeSrc":"270:5:87","nodeType":"YulIdentifier","src":"270:5:87"},"nativeSrc":"270:12:87","nodeType":"YulFunctionCall","src":"270:12:87"},"variables":[{"name":"length","nativeSrc":"260:6:87","nodeType":"YulTypedName","src":"260:6:87","type":""}]},{"expression":{"arguments":[{"name":"pos","nativeSrc":"298:3:87","nodeType":"YulIdentifier","src":"298:3:87"},{"name":"length","nativeSrc":"303:6:87","nodeType":"YulIdentifier","src":"303:6:87"}],"functionName":{"name":"mstore","nativeSrc":"291:6:87","nodeType":"YulIdentifier","src":"291:6:87"},"nativeSrc":"291:19:87","nodeType":"YulFunctionCall","src":"291:19:87"},"nativeSrc":"291:19:87","nodeType":"YulExpressionStatement","src":"291:19:87"},{"expression":{"arguments":[{"arguments":[{"name":"pos","nativeSrc":"329:3:87","nodeType":"YulIdentifier","src":"329:3:87"},{"kind":"number","nativeSrc":"334:4:87","nodeType":"YulLiteral","src":"334:4:87","type":"","value":"0x20"}],"functionName":{"name":"add","nativeSrc":"325:3:87","nodeType":"YulIdentifier","src":"325:3:87"},"nativeSrc":"325:14:87","nodeType":"YulFunctionCall","src":"325:14:87"},{"arguments":[{"name":"value","nativeSrc":"345:5:87","nodeType":"YulIdentifier","src":"345:5:87"},{"kind":"number","nativeSrc":"352:4:87","nodeType":"YulLiteral","src":"352:4:87","type":"","value":"0x20"}],"functionName":{"name":"add","nativeSrc":"341:3:87","nodeType":"YulIdentifier","src":"341:3:87"},"nativeSrc":"341:16:87","nodeType":"YulFunctionCall","src":"341:16:87"},{"name":"length","nativeSrc":"359:6:87","nodeType":"YulIdentifier","src":"359:6:87"}],"functionName":{"name":"mcopy","nativeSrc":"319:5:87","nodeType":"YulIdentifier","src":"319:5:87"},"nativeSrc":"319:47:87","nodeType":"YulFunctionCall","src":"319:47:87"},"nativeSrc":"319:47:87","nodeType":"YulExpressionStatement","src":"319:47:87"},{"expression":{"arguments":[{"arguments":[{"arguments":[{"name":"pos","nativeSrc":"390:3:87","nodeType":"YulIdentifier","src":"390:3:87"},{"name":"length","nativeSrc":"395:6:87","nodeType":"YulIdentifier","src":"395:6:87"}],"functionName":{"name":"add","nativeSrc":"386:3:87","nodeType":"YulIdentifier","src":"386:3:87"},"nativeSrc":"386:16:87","nodeType":"YulFunctionCall","src":"386:16:87"},{"kind":"number","nativeSrc":"404:4:87","nodeType":"YulLiteral","src":"404:4:87","type":"","value":"0x20"}],"functionName":{"name":"add","nativeSrc":"382:3:87","nodeType":"YulIdentifier","src":"382:3:87"},"nativeSrc":"382:27:87","nodeType":"YulFunctionCall","src":"382:27:87"},{"kind":"number","nativeSrc":"411:1:87","nodeType":"YulLiteral","src":"411:1:87","type":"","value":"0"}],"functionName":{"name":"mstore","nativeSrc":"375:6:87","nodeType":"YulIdentifier","src":"375:6:87"},"nativeSrc":"375:38:87","nodeType":"YulFunctionCall","src":"375:38:87"},"nativeSrc":"375:38:87","nodeType":"YulExpressionStatement","src":"375:38:87"},{"nativeSrc":"422:57:87","nodeType":"YulAssignment","src":"422:57:87","value":{"arguments":[{"arguments":[{"name":"pos","nativeSrc":"437:3:87","nodeType":"YulIdentifier","src":"437:3:87"},{"arguments":[{"arguments":[{"name":"length","nativeSrc":"450:6:87","nodeType":"YulIdentifier","src":"450:6:87"},{"kind":"number","nativeSrc":"458:2:87","nodeType":"YulLiteral","src":"458:2:87","type":"","value":"31"}],"functionName":{"name":"add","nativeSrc":"446:3:87","nodeType":"YulIdentifier","src":"446:3:87"},"nativeSrc":"446:15:87","nodeType":"YulFunctionCall","src":"446:15:87"},{"arguments":[{"kind":"number","nativeSrc":"467:2:87","nodeType":"YulLiteral","src":"467:2:87","type":"","value":"31"}],"functionName":{"name":"not","nativeSrc":"463:3:87","nodeType":"YulIdentifier","src":"463:3:87"},"nativeSrc":"463:7:87","nodeType":"YulFunctionCall","src":"463:7:87"}],"functionName":{"name":"and","nativeSrc":"442:3:87","nodeType":"YulIdentifier","src":"442:3:87"},"nativeSrc":"442:29:87","nodeType":"YulFunctionCall","src":"442:29:87"}],"functionName":{"name":"add","nativeSrc":"433:3:87","nodeType":"YulIdentifier","src":"433:3:87"},"nativeSrc":"433:39:87","nodeType":"YulFunctionCall","src":"433:39:87"},{"kind":"number","nativeSrc":"474:4:87","nodeType":"YulLiteral","src":"474:4:87","type":"","value":"0x20"}],"functionName":{"name":"add","nativeSrc":"429:3:87","nodeType":"YulIdentifier","src":"429:3:87"},"nativeSrc":"429:50:87","nodeType":"YulFunctionCall","src":"429:50:87"},"variableNames":[{"name":"end","nativeSrc":"422:3:87","nodeType":"YulIdentifier","src":"422:3:87"}]}]},"name":"abi_encode_string","nativeSrc":"196:289:87","nodeType":"YulFunctionDefinition","parameters":[{"name":"value","nativeSrc":"223:5:87","nodeType":"YulTypedName","src":"223:5:87","type":""},{"name":"pos","nativeSrc":"230:3:87","nodeType":"YulTypedName","src":"230:3:87","type":""}],"returnVariables":[{"name":"end","nativeSrc":"238:3:87","nodeType":"YulTypedName","src":"238:3:87","type":""}],"src":"196:289:87"},{"body":{"nativeSrc":"611:99:87","nodeType":"YulBlock","src":"611:99:87","statements":[{"expression":{"arguments":[{"name":"headStart","nativeSrc":"628:9:87","nodeType":"YulIdentifier","src":"628:9:87"},{"kind":"number","nativeSrc":"639:2:87","nodeType":"YulLiteral","src":"639:2:87","type":"","value":"32"}],"functionName":{"name":"mstore","nativeSrc":"621:6:87","nodeType":"YulIdentifier","src":"621:6:87"},"nativeSrc":"621:21:87","nodeType":"YulFunctionCall","src":"621:21:87"},"nativeSrc":"621:21:87","nodeType":"YulExpressionStatement","src":"621:21:87"},{"nativeSrc":"651:53:87","nodeType":"YulAssignment","src":"651:53:87","value":{"arguments":[{"name":"value0","nativeSrc":"677:6:87","nodeType":"YulIdentifier","src":"677:6:87"},{"arguments":[{"name":"headStart","nativeSrc":"689:9:87","nodeType":"YulIdentifier","src":"689:9:87"},{"kind":"number","nativeSrc":"700:2:87","nodeType":"YulLiteral","src":"700:2:87","type":"","value":"32"}],"functionName":{"name":"add","nativeSrc":"685:3:87","nodeType":"YulIdentifier","src":"685:3:87"},"nativeSrc":"685:18:87","nodeType":"YulFunctionCall","src":"685:18:87"}],"functionName":{"name":"abi_encode_string","nativeSrc":"659:17:87","nodeType":"YulIdentifier","src":"659:17:87"},"nativeSrc":"659:45:87","nodeType":"YulFunctionCall","src":"659:45:87"},"variableNames":[{"name":"tail","nativeSrc":"651:4:87","nodeType":"YulIdentifier","src":"651:4:87"}]}]},"name":"abi_encode_tuple_t_string_memory_ptr__to_t_string_memory_ptr__fromStack_reversed","nativeSrc":"490:220:87","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nativeSrc":"580:9:87","nodeType":"YulTypedName","src":"580:9:87","type":""},{"name":"value0","nativeSrc":"591:6:87","nodeType":"YulTypedName","src":"591:6:87","type":""}],"returnVariables":[{"name":"tail","nativeSrc":"602:4:87","nodeType":"YulTypedName","src":"602:4:87","type":""}],"src":"490:220:87"},{"body":{"nativeSrc":"785:156:87","nodeType":"YulBlock","src":"785:156:87","statements":[{"body":{"nativeSrc":"831:16:87","nodeType":"YulBlock","src":"831:16:87","statements":[{"expression":{"arguments":[{"kind":"number","nativeSrc":"840:1:87","nodeType":"YulLiteral","src":"840:1:87","type":"","value":"0"},{"kind":"number","nativeSrc":"843:1:87","nodeType":"YulLiteral","src":"843:1:87","type":"","value":"0"}],"functionName":{"name":"revert","nativeSrc":"833:6:87","nodeType":"YulIdentifier","src":"833:6:87"},"nativeSrc":"833:12:87","nodeType":"YulFunctionCall","src":"833:12:87"},"nativeSrc":"833:12:87","nodeType":"YulExpressionStatement","src":"833:12:87"}]},"condition":{"arguments":[{"arguments":[{"name":"dataEnd","nativeSrc":"806:7:87","nodeType":"YulIdentifier","src":"806:7:87"},{"name":"headStart","nativeSrc":"815:9:87","nodeType":"YulIdentifier","src":"815:9:87"}],"functionName":{"name":"sub","nativeSrc":"802:3:87","nodeType":"YulIdentifier","src":"802:3:87"},"nativeSrc":"802:23:87","nodeType":"YulFunctionCall","src":"802:23:87"},{"kind":"number","nativeSrc":"827:2:87","nodeType":"YulLiteral","src":"827:2:87","type":"","value":"32"}],"functionName":{"name":"slt","nativeSrc":"798:3:87","nodeType":"YulIdentifier","src":"798:3:87"},"nativeSrc":"798:32:87","nodeType":"YulFunctionCall","src":"798:32:87"},"nativeSrc":"795:52:87","nodeType":"YulIf","src":"795:52:87"},{"nativeSrc":"856:14:87","nodeType":"YulVariableDeclaration","src":"856:14:87","value":{"kind":"number","nativeSrc":"869:1:87","nodeType":"YulLiteral","src":"869:1:87","type":"","value":"0"},"variables":[{"name":"value","nativeSrc":"860:5:87","nodeType":"YulTypedName","src":"860:5:87","type":""}]},{"nativeSrc":"879:32:87","nodeType":"YulAssignment","src":"879:32:87","value":{"arguments":[{"name":"headStart","nativeSrc":"901:9:87","nodeType":"YulIdentifier","src":"901:9:87"}],"functionName":{"name":"calldataload","nativeSrc":"888:12:87","nodeType":"YulIdentifier","src":"888:12:87"},"nativeSrc":"888:23:87","nodeType":"YulFunctionCall","src":"888:23:87"},"variableNames":[{"name":"value","nativeSrc":"879:5:87","nodeType":"YulIdentifier","src":"879:5:87"}]},{"nativeSrc":"920:15:87","nodeType":"YulAssignment","src":"920:15:87","value":{"name":"value","nativeSrc":"930:5:87","nodeType":"YulIdentifier","src":"930:5:87"},"variableNames":[{"name":"value0","nativeSrc":"920:6:87","nodeType":"YulIdentifier","src":"920:6:87"}]}]},"name":"abi_decode_tuple_t_uint256","nativeSrc":"715:226:87","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nativeSrc":"751:9:87","nodeType":"YulTypedName","src":"751:9:87","type":""},{"name":"dataEnd","nativeSrc":"762:7:87","nodeType":"YulTypedName","src":"762:7:87","type":""}],"returnVariables":[{"name":"value0","nativeSrc":"774:6:87","nodeType":"YulTypedName","src":"774:6:87","type":""}],"src":"715:226:87"},{"body":{"nativeSrc":"991:86:87","nodeType":"YulBlock","src":"991:86:87","statements":[{"body":{"nativeSrc":"1055:16:87","nodeType":"YulBlock","src":"1055:16:87","statements":[{"expression":{"arguments":[{"kind":"number","nativeSrc":"1064:1:87","nodeType":"YulLiteral","src":"1064:1:87","type":"","value":"0"},{"kind":"number","nativeSrc":"1067:1:87","nodeType":"YulLiteral","src":"1067:1:87","type":"","value":"0"}],"functionName":{"name":"revert","nativeSrc":"1057:6:87","nodeType":"YulIdentifier","src":"1057:6:87"},"nativeSrc":"1057:12:87","nodeType":"YulFunctionCall","src":"1057:12:87"},"nativeSrc":"1057:12:87","nodeType":"YulExpressionStatement","src":"1057:12:87"}]},"condition":{"arguments":[{"arguments":[{"name":"value","nativeSrc":"1014:5:87","nodeType":"YulIdentifier","src":"1014:5:87"},{"arguments":[{"name":"value","nativeSrc":"1025:5:87","nodeType":"YulIdentifier","src":"1025:5:87"},{"arguments":[{"arguments":[{"kind":"number","nativeSrc":"1040:3:87","nodeType":"YulLiteral","src":"1040:3:87","type":"","value":"160"},{"kind":"number","nativeSrc":"1045:1:87","nodeType":"YulLiteral","src":"1045:1:87","type":"","value":"1"}],"functionName":{"name":"shl","nativeSrc":"1036:3:87","nodeType":"YulIdentifier","src":"1036:3:87"},"nativeSrc":"1036:11:87","nodeType":"YulFunctionCall","src":"1036:11:87"},{"kind":"number","nativeSrc":"1049:1:87","nodeType":"YulLiteral","src":"1049:1:87","type":"","value":"1"}],"functionName":{"name":"sub","nativeSrc":"1032:3:87","nodeType":"YulIdentifier","src":"1032:3:87"},"nativeSrc":"1032:19:87","nodeType":"YulFunctionCall","src":"1032:19:87"}],"functionName":{"name":"and","nativeSrc":"1021:3:87","nodeType":"YulIdentifier","src":"1021:3:87"},"nativeSrc":"1021:31:87","nodeType":"YulFunctionCall","src":"1021:31:87"}],"functionName":{"name":"eq","nativeSrc":"1011:2:87","nodeType":"YulIdentifier","src":"1011:2:87"},"nativeSrc":"1011:42:87","nodeType":"YulFunctionCall","src":"1011:42:87"}],"functionName":{"name":"iszero","nativeSrc":"1004:6:87","nodeType":"YulIdentifier","src":"1004:6:87"},"nativeSrc":"1004:50:87","nodeType":"YulFunctionCall","src":"1004:50:87"},"nativeSrc":"1001:70:87","nodeType":"YulIf","src":"1001:70:87"}]},"name":"validator_revert_address","nativeSrc":"946:131:87","nodeType":"YulFunctionDefinition","parameters":[{"name":"value","nativeSrc":"980:5:87","nodeType":"YulTypedName","src":"980:5:87","type":""}],"src":"946:131:87"},{"body":{"nativeSrc":"1169:280:87","nodeType":"YulBlock","src":"1169:280:87","statements":[{"body":{"nativeSrc":"1215:16:87","nodeType":"YulBlock","src":"1215:16:87","statements":[{"expression":{"arguments":[{"kind":"number","nativeSrc":"1224:1:87","nodeType":"YulLiteral","src":"1224:1:87","type":"","value":"0"},{"kind":"number","nativeSrc":"1227:1:87","nodeType":"YulLiteral","src":"1227:1:87","type":"","value":"0"}],"functionName":{"name":"revert","nativeSrc":"1217:6:87","nodeType":"YulIdentifier","src":"1217:6:87"},"nativeSrc":"1217:12:87","nodeType":"YulFunctionCall","src":"1217:12:87"},"nativeSrc":"1217:12:87","nodeType":"YulExpressionStatement","src":"1217:12:87"}]},"condition":{"arguments":[{"arguments":[{"name":"dataEnd","nativeSrc":"1190:7:87","nodeType":"YulIdentifier","src":"1190:7:87"},{"name":"headStart","nativeSrc":"1199:9:87","nodeType":"YulIdentifier","src":"1199:9:87"}],"functionName":{"name":"sub","nativeSrc":"1186:3:87","nodeType":"YulIdentifier","src":"1186:3:87"},"nativeSrc":"1186:23:87","nodeType":"YulFunctionCall","src":"1186:23:87"},{"kind":"number","nativeSrc":"1211:2:87","nodeType":"YulLiteral","src":"1211:2:87","type":"","value":"64"}],"functionName":{"name":"slt","nativeSrc":"1182:3:87","nodeType":"YulIdentifier","src":"1182:3:87"},"nativeSrc":"1182:32:87","nodeType":"YulFunctionCall","src":"1182:32:87"},"nativeSrc":"1179:52:87","nodeType":"YulIf","src":"1179:52:87"},{"nativeSrc":"1240:36:87","nodeType":"YulVariableDeclaration","src":"1240:36:87","value":{"arguments":[{"name":"headStart","nativeSrc":"1266:9:87","nodeType":"YulIdentifier","src":"1266:9:87"}],"functionName":{"name":"calldataload","nativeSrc":"1253:12:87","nodeType":"YulIdentifier","src":"1253:12:87"},"nativeSrc":"1253:23:87","nodeType":"YulFunctionCall","src":"1253:23:87"},"variables":[{"name":"value","nativeSrc":"1244:5:87","nodeType":"YulTypedName","src":"1244:5:87","type":""}]},{"expression":{"arguments":[{"name":"value","nativeSrc":"1310:5:87","nodeType":"YulIdentifier","src":"1310:5:87"}],"functionName":{"name":"validator_revert_address","nativeSrc":"1285:24:87","nodeType":"YulIdentifier","src":"1285:24:87"},"nativeSrc":"1285:31:87","nodeType":"YulFunctionCall","src":"1285:31:87"},"nativeSrc":"1285:31:87","nodeType":"YulExpressionStatement","src":"1285:31:87"},{"nativeSrc":"1325:15:87","nodeType":"YulAssignment","src":"1325:15:87","value":{"name":"value","nativeSrc":"1335:5:87","nodeType":"YulIdentifier","src":"1335:5:87"},"variableNames":[{"name":"value0","nativeSrc":"1325:6:87","nodeType":"YulIdentifier","src":"1325:6:87"}]},{"nativeSrc":"1349:16:87","nodeType":"YulVariableDeclaration","src":"1349:16:87","value":{"kind":"number","nativeSrc":"1364:1:87","nodeType":"YulLiteral","src":"1364:1:87","type":"","value":"0"},"variables":[{"name":"value_1","nativeSrc":"1353:7:87","nodeType":"YulTypedName","src":"1353:7:87","type":""}]},{"nativeSrc":"1374:43:87","nodeType":"YulAssignment","src":"1374:43:87","value":{"arguments":[{"arguments":[{"name":"headStart","nativeSrc":"1402:9:87","nodeType":"YulIdentifier","src":"1402:9:87"},{"kind":"number","nativeSrc":"1413:2:87","nodeType":"YulLiteral","src":"1413:2:87","type":"","value":"32"}],"functionName":{"name":"add","nativeSrc":"1398:3:87","nodeType":"YulIdentifier","src":"1398:3:87"},"nativeSrc":"1398:18:87","nodeType":"YulFunctionCall","src":"1398:18:87"}],"functionName":{"name":"calldataload","nativeSrc":"1385:12:87","nodeType":"YulIdentifier","src":"1385:12:87"},"nativeSrc":"1385:32:87","nodeType":"YulFunctionCall","src":"1385:32:87"},"variableNames":[{"name":"value_1","nativeSrc":"1374:7:87","nodeType":"YulIdentifier","src":"1374:7:87"}]},{"nativeSrc":"1426:17:87","nodeType":"YulAssignment","src":"1426:17:87","value":{"name":"value_1","nativeSrc":"1436:7:87","nodeType":"YulIdentifier","src":"1436:7:87"},"variableNames":[{"name":"value1","nativeSrc":"1426:6:87","nodeType":"YulIdentifier","src":"1426:6:87"}]}]},"name":"abi_decode_tuple_t_addresst_uint256","nativeSrc":"1082:367:87","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nativeSrc":"1127:9:87","nodeType":"YulTypedName","src":"1127:9:87","type":""},{"name":"dataEnd","nativeSrc":"1138:7:87","nodeType":"YulTypedName","src":"1138:7:87","type":""}],"returnVariables":[{"name":"value0","nativeSrc":"1150:6:87","nodeType":"YulTypedName","src":"1150:6:87","type":""},{"name":"value1","nativeSrc":"1158:6:87","nodeType":"YulTypedName","src":"1158:6:87","type":""}],"src":"1082:367:87"},{"body":{"nativeSrc":"1549:92:87","nodeType":"YulBlock","src":"1549:92:87","statements":[{"nativeSrc":"1559:26:87","nodeType":"YulAssignment","src":"1559:26:87","value":{"arguments":[{"name":"headStart","nativeSrc":"1571:9:87","nodeType":"YulIdentifier","src":"1571:9:87"},{"kind":"number","nativeSrc":"1582:2:87","nodeType":"YulLiteral","src":"1582:2:87","type":"","value":"32"}],"functionName":{"name":"add","nativeSrc":"1567:3:87","nodeType":"YulIdentifier","src":"1567:3:87"},"nativeSrc":"1567:18:87","nodeType":"YulFunctionCall","src":"1567:18:87"},"variableNames":[{"name":"tail","nativeSrc":"1559:4:87","nodeType":"YulIdentifier","src":"1559:4:87"}]},{"expression":{"arguments":[{"name":"headStart","nativeSrc":"1601:9:87","nodeType":"YulIdentifier","src":"1601:9:87"},{"arguments":[{"arguments":[{"name":"value0","nativeSrc":"1626:6:87","nodeType":"YulIdentifier","src":"1626:6:87"}],"functionName":{"name":"iszero","nativeSrc":"1619:6:87","nodeType":"YulIdentifier","src":"1619:6:87"},"nativeSrc":"1619:14:87","nodeType":"YulFunctionCall","src":"1619:14:87"}],"functionName":{"name":"iszero","nativeSrc":"1612:6:87","nodeType":"YulIdentifier","src":"1612:6:87"},"nativeSrc":"1612:22:87","nodeType":"YulFunctionCall","src":"1612:22:87"}],"functionName":{"name":"mstore","nativeSrc":"1594:6:87","nodeType":"YulIdentifier","src":"1594:6:87"},"nativeSrc":"1594:41:87","nodeType":"YulFunctionCall","src":"1594:41:87"},"nativeSrc":"1594:41:87","nodeType":"YulExpressionStatement","src":"1594:41:87"}]},"name":"abi_encode_tuple_t_bool__to_t_bool__fromStack_reversed","nativeSrc":"1454:187:87","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nativeSrc":"1518:9:87","nodeType":"YulTypedName","src":"1518:9:87","type":""},{"name":"value0","nativeSrc":"1529:6:87","nodeType":"YulTypedName","src":"1529:6:87","type":""}],"returnVariables":[{"name":"tail","nativeSrc":"1540:4:87","nodeType":"YulTypedName","src":"1540:4:87","type":""}],"src":"1454:187:87"},{"body":{"nativeSrc":"1733:259:87","nodeType":"YulBlock","src":"1733:259:87","statements":[{"body":{"nativeSrc":"1779:16:87","nodeType":"YulBlock","src":"1779:16:87","statements":[{"expression":{"arguments":[{"kind":"number","nativeSrc":"1788:1:87","nodeType":"YulLiteral","src":"1788:1:87","type":"","value":"0"},{"kind":"number","nativeSrc":"1791:1:87","nodeType":"YulLiteral","src":"1791:1:87","type":"","value":"0"}],"functionName":{"name":"revert","nativeSrc":"1781:6:87","nodeType":"YulIdentifier","src":"1781:6:87"},"nativeSrc":"1781:12:87","nodeType":"YulFunctionCall","src":"1781:12:87"},"nativeSrc":"1781:12:87","nodeType":"YulExpressionStatement","src":"1781:12:87"}]},"condition":{"arguments":[{"arguments":[{"name":"dataEnd","nativeSrc":"1754:7:87","nodeType":"YulIdentifier","src":"1754:7:87"},{"name":"headStart","nativeSrc":"1763:9:87","nodeType":"YulIdentifier","src":"1763:9:87"}],"functionName":{"name":"sub","nativeSrc":"1750:3:87","nodeType":"YulIdentifier","src":"1750:3:87"},"nativeSrc":"1750:23:87","nodeType":"YulFunctionCall","src":"1750:23:87"},{"kind":"number","nativeSrc":"1775:2:87","nodeType":"YulLiteral","src":"1775:2:87","type":"","value":"64"}],"functionName":{"name":"slt","nativeSrc":"1746:3:87","nodeType":"YulIdentifier","src":"1746:3:87"},"nativeSrc":"1746:32:87","nodeType":"YulFunctionCall","src":"1746:32:87"},"nativeSrc":"1743:52:87","nodeType":"YulIf","src":"1743:52:87"},{"nativeSrc":"1804:14:87","nodeType":"YulVariableDeclaration","src":"1804:14:87","value":{"kind":"number","nativeSrc":"1817:1:87","nodeType":"YulLiteral","src":"1817:1:87","type":"","value":"0"},"variables":[{"name":"value","nativeSrc":"1808:5:87","nodeType":"YulTypedName","src":"1808:5:87","type":""}]},{"nativeSrc":"1827:32:87","nodeType":"YulAssignment","src":"1827:32:87","value":{"arguments":[{"name":"headStart","nativeSrc":"1849:9:87","nodeType":"YulIdentifier","src":"1849:9:87"}],"functionName":{"name":"calldataload","nativeSrc":"1836:12:87","nodeType":"YulIdentifier","src":"1836:12:87"},"nativeSrc":"1836:23:87","nodeType":"YulFunctionCall","src":"1836:23:87"},"variableNames":[{"name":"value","nativeSrc":"1827:5:87","nodeType":"YulIdentifier","src":"1827:5:87"}]},{"nativeSrc":"1868:15:87","nodeType":"YulAssignment","src":"1868:15:87","value":{"name":"value","nativeSrc":"1878:5:87","nodeType":"YulIdentifier","src":"1878:5:87"},"variableNames":[{"name":"value0","nativeSrc":"1868:6:87","nodeType":"YulIdentifier","src":"1868:6:87"}]},{"nativeSrc":"1892:16:87","nodeType":"YulVariableDeclaration","src":"1892:16:87","value":{"kind":"number","nativeSrc":"1907:1:87","nodeType":"YulLiteral","src":"1907:1:87","type":"","value":"0"},"variables":[{"name":"value_1","nativeSrc":"1896:7:87","nodeType":"YulTypedName","src":"1896:7:87","type":""}]},{"nativeSrc":"1917:43:87","nodeType":"YulAssignment","src":"1917:43:87","value":{"arguments":[{"arguments":[{"name":"headStart","nativeSrc":"1945:9:87","nodeType":"YulIdentifier","src":"1945:9:87"},{"kind":"number","nativeSrc":"1956:2:87","nodeType":"YulLiteral","src":"1956:2:87","type":"","value":"32"}],"functionName":{"name":"add","nativeSrc":"1941:3:87","nodeType":"YulIdentifier","src":"1941:3:87"},"nativeSrc":"1941:18:87","nodeType":"YulFunctionCall","src":"1941:18:87"}],"functionName":{"name":"calldataload","nativeSrc":"1928:12:87","nodeType":"YulIdentifier","src":"1928:12:87"},"nativeSrc":"1928:32:87","nodeType":"YulFunctionCall","src":"1928:32:87"},"variableNames":[{"name":"value_1","nativeSrc":"1917:7:87","nodeType":"YulIdentifier","src":"1917:7:87"}]},{"nativeSrc":"1969:17:87","nodeType":"YulAssignment","src":"1969:17:87","value":{"name":"value_1","nativeSrc":"1979:7:87","nodeType":"YulIdentifier","src":"1979:7:87"},"variableNames":[{"name":"value1","nativeSrc":"1969:6:87","nodeType":"YulIdentifier","src":"1969:6:87"}]}]},"name":"abi_decode_tuple_t_uint256t_uint256","nativeSrc":"1646:346:87","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nativeSrc":"1691:9:87","nodeType":"YulTypedName","src":"1691:9:87","type":""},{"name":"dataEnd","nativeSrc":"1702:7:87","nodeType":"YulTypedName","src":"1702:7:87","type":""}],"returnVariables":[{"name":"value0","nativeSrc":"1714:6:87","nodeType":"YulTypedName","src":"1714:6:87","type":""},{"name":"value1","nativeSrc":"1722:6:87","nodeType":"YulTypedName","src":"1722:6:87","type":""}],"src":"1646:346:87"},{"body":{"nativeSrc":"2101:404:87","nodeType":"YulBlock","src":"2101:404:87","statements":[{"body":{"nativeSrc":"2147:16:87","nodeType":"YulBlock","src":"2147:16:87","statements":[{"expression":{"arguments":[{"kind":"number","nativeSrc":"2156:1:87","nodeType":"YulLiteral","src":"2156:1:87","type":"","value":"0"},{"kind":"number","nativeSrc":"2159:1:87","nodeType":"YulLiteral","src":"2159:1:87","type":"","value":"0"}],"functionName":{"name":"revert","nativeSrc":"2149:6:87","nodeType":"YulIdentifier","src":"2149:6:87"},"nativeSrc":"2149:12:87","nodeType":"YulFunctionCall","src":"2149:12:87"},"nativeSrc":"2149:12:87","nodeType":"YulExpressionStatement","src":"2149:12:87"}]},"condition":{"arguments":[{"arguments":[{"name":"dataEnd","nativeSrc":"2122:7:87","nodeType":"YulIdentifier","src":"2122:7:87"},{"name":"headStart","nativeSrc":"2131:9:87","nodeType":"YulIdentifier","src":"2131:9:87"}],"functionName":{"name":"sub","nativeSrc":"2118:3:87","nodeType":"YulIdentifier","src":"2118:3:87"},"nativeSrc":"2118:23:87","nodeType":"YulFunctionCall","src":"2118:23:87"},{"kind":"number","nativeSrc":"2143:2:87","nodeType":"YulLiteral","src":"2143:2:87","type":"","value":"96"}],"functionName":{"name":"slt","nativeSrc":"2114:3:87","nodeType":"YulIdentifier","src":"2114:3:87"},"nativeSrc":"2114:32:87","nodeType":"YulFunctionCall","src":"2114:32:87"},"nativeSrc":"2111:52:87","nodeType":"YulIf","src":"2111:52:87"},{"nativeSrc":"2172:36:87","nodeType":"YulVariableDeclaration","src":"2172:36:87","value":{"arguments":[{"name":"headStart","nativeSrc":"2198:9:87","nodeType":"YulIdentifier","src":"2198:9:87"}],"functionName":{"name":"calldataload","nativeSrc":"2185:12:87","nodeType":"YulIdentifier","src":"2185:12:87"},"nativeSrc":"2185:23:87","nodeType":"YulFunctionCall","src":"2185:23:87"},"variables":[{"name":"value","nativeSrc":"2176:5:87","nodeType":"YulTypedName","src":"2176:5:87","type":""}]},{"expression":{"arguments":[{"name":"value","nativeSrc":"2242:5:87","nodeType":"YulIdentifier","src":"2242:5:87"}],"functionName":{"name":"validator_revert_address","nativeSrc":"2217:24:87","nodeType":"YulIdentifier","src":"2217:24:87"},"nativeSrc":"2217:31:87","nodeType":"YulFunctionCall","src":"2217:31:87"},"nativeSrc":"2217:31:87","nodeType":"YulExpressionStatement","src":"2217:31:87"},{"nativeSrc":"2257:15:87","nodeType":"YulAssignment","src":"2257:15:87","value":{"name":"value","nativeSrc":"2267:5:87","nodeType":"YulIdentifier","src":"2267:5:87"},"variableNames":[{"name":"value0","nativeSrc":"2257:6:87","nodeType":"YulIdentifier","src":"2257:6:87"}]},{"nativeSrc":"2281:47:87","nodeType":"YulVariableDeclaration","src":"2281:47:87","value":{"arguments":[{"arguments":[{"name":"headStart","nativeSrc":"2313:9:87","nodeType":"YulIdentifier","src":"2313:9:87"},{"kind":"number","nativeSrc":"2324:2:87","nodeType":"YulLiteral","src":"2324:2:87","type":"","value":"32"}],"functionName":{"name":"add","nativeSrc":"2309:3:87","nodeType":"YulIdentifier","src":"2309:3:87"},"nativeSrc":"2309:18:87","nodeType":"YulFunctionCall","src":"2309:18:87"}],"functionName":{"name":"calldataload","nativeSrc":"2296:12:87","nodeType":"YulIdentifier","src":"2296:12:87"},"nativeSrc":"2296:32:87","nodeType":"YulFunctionCall","src":"2296:32:87"},"variables":[{"name":"value_1","nativeSrc":"2285:7:87","nodeType":"YulTypedName","src":"2285:7:87","type":""}]},{"expression":{"arguments":[{"name":"value_1","nativeSrc":"2362:7:87","nodeType":"YulIdentifier","src":"2362:7:87"}],"functionName":{"name":"validator_revert_address","nativeSrc":"2337:24:87","nodeType":"YulIdentifier","src":"2337:24:87"},"nativeSrc":"2337:33:87","nodeType":"YulFunctionCall","src":"2337:33:87"},"nativeSrc":"2337:33:87","nodeType":"YulExpressionStatement","src":"2337:33:87"},{"nativeSrc":"2379:17:87","nodeType":"YulAssignment","src":"2379:17:87","value":{"name":"value_1","nativeSrc":"2389:7:87","nodeType":"YulIdentifier","src":"2389:7:87"},"variableNames":[{"name":"value1","nativeSrc":"2379:6:87","nodeType":"YulIdentifier","src":"2379:6:87"}]},{"nativeSrc":"2405:16:87","nodeType":"YulVariableDeclaration","src":"2405:16:87","value":{"kind":"number","nativeSrc":"2420:1:87","nodeType":"YulLiteral","src":"2420:1:87","type":"","value":"0"},"variables":[{"name":"value_2","nativeSrc":"2409:7:87","nodeType":"YulTypedName","src":"2409:7:87","type":""}]},{"nativeSrc":"2430:43:87","nodeType":"YulAssignment","src":"2430:43:87","value":{"arguments":[{"arguments":[{"name":"headStart","nativeSrc":"2458:9:87","nodeType":"YulIdentifier","src":"2458:9:87"},{"kind":"number","nativeSrc":"2469:2:87","nodeType":"YulLiteral","src":"2469:2:87","type":"","value":"64"}],"functionName":{"name":"add","nativeSrc":"2454:3:87","nodeType":"YulIdentifier","src":"2454:3:87"},"nativeSrc":"2454:18:87","nodeType":"YulFunctionCall","src":"2454:18:87"}],"functionName":{"name":"calldataload","nativeSrc":"2441:12:87","nodeType":"YulIdentifier","src":"2441:12:87"},"nativeSrc":"2441:32:87","nodeType":"YulFunctionCall","src":"2441:32:87"},"variableNames":[{"name":"value_2","nativeSrc":"2430:7:87","nodeType":"YulIdentifier","src":"2430:7:87"}]},{"nativeSrc":"2482:17:87","nodeType":"YulAssignment","src":"2482:17:87","value":{"name":"value_2","nativeSrc":"2492:7:87","nodeType":"YulIdentifier","src":"2492:7:87"},"variableNames":[{"name":"value2","nativeSrc":"2482:6:87","nodeType":"YulIdentifier","src":"2482:6:87"}]}]},"name":"abi_decode_tuple_t_addresst_addresst_uint256","nativeSrc":"1997:508:87","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nativeSrc":"2051:9:87","nodeType":"YulTypedName","src":"2051:9:87","type":""},{"name":"dataEnd","nativeSrc":"2062:7:87","nodeType":"YulTypedName","src":"2062:7:87","type":""}],"returnVariables":[{"name":"value0","nativeSrc":"2074:6:87","nodeType":"YulTypedName","src":"2074:6:87","type":""},{"name":"value1","nativeSrc":"2082:6:87","nodeType":"YulTypedName","src":"2082:6:87","type":""},{"name":"value2","nativeSrc":"2090:6:87","nodeType":"YulTypedName","src":"2090:6:87","type":""}],"src":"1997:508:87"},{"body":{"nativeSrc":"2607:87:87","nodeType":"YulBlock","src":"2607:87:87","statements":[{"nativeSrc":"2617:26:87","nodeType":"YulAssignment","src":"2617:26:87","value":{"arguments":[{"name":"headStart","nativeSrc":"2629:9:87","nodeType":"YulIdentifier","src":"2629:9:87"},{"kind":"number","nativeSrc":"2640:2:87","nodeType":"YulLiteral","src":"2640:2:87","type":"","value":"32"}],"functionName":{"name":"add","nativeSrc":"2625:3:87","nodeType":"YulIdentifier","src":"2625:3:87"},"nativeSrc":"2625:18:87","nodeType":"YulFunctionCall","src":"2625:18:87"},"variableNames":[{"name":"tail","nativeSrc":"2617:4:87","nodeType":"YulIdentifier","src":"2617:4:87"}]},{"expression":{"arguments":[{"name":"headStart","nativeSrc":"2659:9:87","nodeType":"YulIdentifier","src":"2659:9:87"},{"arguments":[{"name":"value0","nativeSrc":"2674:6:87","nodeType":"YulIdentifier","src":"2674:6:87"},{"kind":"number","nativeSrc":"2682:4:87","nodeType":"YulLiteral","src":"2682:4:87","type":"","value":"0xff"}],"functionName":{"name":"and","nativeSrc":"2670:3:87","nodeType":"YulIdentifier","src":"2670:3:87"},"nativeSrc":"2670:17:87","nodeType":"YulFunctionCall","src":"2670:17:87"}],"functionName":{"name":"mstore","nativeSrc":"2652:6:87","nodeType":"YulIdentifier","src":"2652:6:87"},"nativeSrc":"2652:36:87","nodeType":"YulFunctionCall","src":"2652:36:87"},"nativeSrc":"2652:36:87","nodeType":"YulExpressionStatement","src":"2652:36:87"}]},"name":"abi_encode_tuple_t_uint8__to_t_uint8__fromStack_reversed","nativeSrc":"2510:184:87","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nativeSrc":"2576:9:87","nodeType":"YulTypedName","src":"2576:9:87","type":""},{"name":"value0","nativeSrc":"2587:6:87","nodeType":"YulTypedName","src":"2587:6:87","type":""}],"returnVariables":[{"name":"tail","nativeSrc":"2598:4:87","nodeType":"YulTypedName","src":"2598:4:87","type":""}],"src":"2510:184:87"},{"body":{"nativeSrc":"2800:102:87","nodeType":"YulBlock","src":"2800:102:87","statements":[{"nativeSrc":"2810:26:87","nodeType":"YulAssignment","src":"2810:26:87","value":{"arguments":[{"name":"headStart","nativeSrc":"2822:9:87","nodeType":"YulIdentifier","src":"2822:9:87"},{"kind":"number","nativeSrc":"2833:2:87","nodeType":"YulLiteral","src":"2833:2:87","type":"","value":"32"}],"functionName":{"name":"add","nativeSrc":"2818:3:87","nodeType":"YulIdentifier","src":"2818:3:87"},"nativeSrc":"2818:18:87","nodeType":"YulFunctionCall","src":"2818:18:87"},"variableNames":[{"name":"tail","nativeSrc":"2810:4:87","nodeType":"YulIdentifier","src":"2810:4:87"}]},{"expression":{"arguments":[{"name":"headStart","nativeSrc":"2852:9:87","nodeType":"YulIdentifier","src":"2852:9:87"},{"arguments":[{"name":"value0","nativeSrc":"2867:6:87","nodeType":"YulIdentifier","src":"2867:6:87"},{"arguments":[{"arguments":[{"kind":"number","nativeSrc":"2883:3:87","nodeType":"YulLiteral","src":"2883:3:87","type":"","value":"160"},{"kind":"number","nativeSrc":"2888:1:87","nodeType":"YulLiteral","src":"2888:1:87","type":"","value":"1"}],"functionName":{"name":"shl","nativeSrc":"2879:3:87","nodeType":"YulIdentifier","src":"2879:3:87"},"nativeSrc":"2879:11:87","nodeType":"YulFunctionCall","src":"2879:11:87"},{"kind":"number","nativeSrc":"2892:1:87","nodeType":"YulLiteral","src":"2892:1:87","type":"","value":"1"}],"functionName":{"name":"sub","nativeSrc":"2875:3:87","nodeType":"YulIdentifier","src":"2875:3:87"},"nativeSrc":"2875:19:87","nodeType":"YulFunctionCall","src":"2875:19:87"}],"functionName":{"name":"and","nativeSrc":"2863:3:87","nodeType":"YulIdentifier","src":"2863:3:87"},"nativeSrc":"2863:32:87","nodeType":"YulFunctionCall","src":"2863:32:87"}],"functionName":{"name":"mstore","nativeSrc":"2845:6:87","nodeType":"YulIdentifier","src":"2845:6:87"},"nativeSrc":"2845:51:87","nodeType":"YulFunctionCall","src":"2845:51:87"},"nativeSrc":"2845:51:87","nodeType":"YulExpressionStatement","src":"2845:51:87"}]},"name":"abi_encode_tuple_t_address__to_t_address__fromStack_reversed","nativeSrc":"2699:203:87","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nativeSrc":"2769:9:87","nodeType":"YulTypedName","src":"2769:9:87","type":""},{"name":"value0","nativeSrc":"2780:6:87","nodeType":"YulTypedName","src":"2780:6:87","type":""}],"returnVariables":[{"name":"tail","nativeSrc":"2791:4:87","nodeType":"YulTypedName","src":"2791:4:87","type":""}],"src":"2699:203:87"},{"body":{"nativeSrc":"2954:109:87","nodeType":"YulBlock","src":"2954:109:87","statements":[{"nativeSrc":"2964:29:87","nodeType":"YulAssignment","src":"2964:29:87","value":{"arguments":[{"name":"offset","nativeSrc":"2986:6:87","nodeType":"YulIdentifier","src":"2986:6:87"}],"functionName":{"name":"calldataload","nativeSrc":"2973:12:87","nodeType":"YulIdentifier","src":"2973:12:87"},"nativeSrc":"2973:20:87","nodeType":"YulFunctionCall","src":"2973:20:87"},"variableNames":[{"name":"value","nativeSrc":"2964:5:87","nodeType":"YulIdentifier","src":"2964:5:87"}]},{"body":{"nativeSrc":"3041:16:87","nodeType":"YulBlock","src":"3041:16:87","statements":[{"expression":{"arguments":[{"kind":"number","nativeSrc":"3050:1:87","nodeType":"YulLiteral","src":"3050:1:87","type":"","value":"0"},{"kind":"number","nativeSrc":"3053:1:87","nodeType":"YulLiteral","src":"3053:1:87","type":"","value":"0"}],"functionName":{"name":"revert","nativeSrc":"3043:6:87","nodeType":"YulIdentifier","src":"3043:6:87"},"nativeSrc":"3043:12:87","nodeType":"YulFunctionCall","src":"3043:12:87"},"nativeSrc":"3043:12:87","nodeType":"YulExpressionStatement","src":"3043:12:87"}]},"condition":{"arguments":[{"arguments":[{"name":"value","nativeSrc":"3015:5:87","nodeType":"YulIdentifier","src":"3015:5:87"},{"arguments":[{"name":"value","nativeSrc":"3026:5:87","nodeType":"YulIdentifier","src":"3026:5:87"},{"kind":"number","nativeSrc":"3033:4:87","nodeType":"YulLiteral","src":"3033:4:87","type":"","value":"0xff"}],"functionName":{"name":"and","nativeSrc":"3022:3:87","nodeType":"YulIdentifier","src":"3022:3:87"},"nativeSrc":"3022:16:87","nodeType":"YulFunctionCall","src":"3022:16:87"}],"functionName":{"name":"eq","nativeSrc":"3012:2:87","nodeType":"YulIdentifier","src":"3012:2:87"},"nativeSrc":"3012:27:87","nodeType":"YulFunctionCall","src":"3012:27:87"}],"functionName":{"name":"iszero","nativeSrc":"3005:6:87","nodeType":"YulIdentifier","src":"3005:6:87"},"nativeSrc":"3005:35:87","nodeType":"YulFunctionCall","src":"3005:35:87"},"nativeSrc":"3002:55:87","nodeType":"YulIf","src":"3002:55:87"}]},"name":"abi_decode_uint8","nativeSrc":"2907:156:87","nodeType":"YulFunctionDefinition","parameters":[{"name":"offset","nativeSrc":"2933:6:87","nodeType":"YulTypedName","src":"2933:6:87","type":""}],"returnVariables":[{"name":"value","nativeSrc":"2944:5:87","nodeType":"YulTypedName","src":"2944:5:87","type":""}],"src":"2907:156:87"},{"body":{"nativeSrc":"3100:95:87","nodeType":"YulBlock","src":"3100:95:87","statements":[{"expression":{"arguments":[{"kind":"number","nativeSrc":"3117:1:87","nodeType":"YulLiteral","src":"3117:1:87","type":"","value":"0"},{"arguments":[{"kind":"number","nativeSrc":"3124:3:87","nodeType":"YulLiteral","src":"3124:3:87","type":"","value":"224"},{"kind":"number","nativeSrc":"3129:10:87","nodeType":"YulLiteral","src":"3129:10:87","type":"","value":"0x4e487b71"}],"functionName":{"name":"shl","nativeSrc":"3120:3:87","nodeType":"YulIdentifier","src":"3120:3:87"},"nativeSrc":"3120:20:87","nodeType":"YulFunctionCall","src":"3120:20:87"}],"functionName":{"name":"mstore","nativeSrc":"3110:6:87","nodeType":"YulIdentifier","src":"3110:6:87"},"nativeSrc":"3110:31:87","nodeType":"YulFunctionCall","src":"3110:31:87"},"nativeSrc":"3110:31:87","nodeType":"YulExpressionStatement","src":"3110:31:87"},{"expression":{"arguments":[{"kind":"number","nativeSrc":"3157:1:87","nodeType":"YulLiteral","src":"3157:1:87","type":"","value":"4"},{"kind":"number","nativeSrc":"3160:4:87","nodeType":"YulLiteral","src":"3160:4:87","type":"","value":"0x41"}],"functionName":{"name":"mstore","nativeSrc":"3150:6:87","nodeType":"YulIdentifier","src":"3150:6:87"},"nativeSrc":"3150:15:87","nodeType":"YulFunctionCall","src":"3150:15:87"},"nativeSrc":"3150:15:87","nodeType":"YulExpressionStatement","src":"3150:15:87"},{"expression":{"arguments":[{"kind":"number","nativeSrc":"3181:1:87","nodeType":"YulLiteral","src":"3181:1:87","type":"","value":"0"},{"kind":"number","nativeSrc":"3184:4:87","nodeType":"YulLiteral","src":"3184:4:87","type":"","value":"0x24"}],"functionName":{"name":"revert","nativeSrc":"3174:6:87","nodeType":"YulIdentifier","src":"3174:6:87"},"nativeSrc":"3174:15:87","nodeType":"YulFunctionCall","src":"3174:15:87"},"nativeSrc":"3174:15:87","nodeType":"YulExpressionStatement","src":"3174:15:87"}]},"name":"panic_error_0x41","nativeSrc":"3068:127:87","nodeType":"YulFunctionDefinition","src":"3068:127:87"},{"body":{"nativeSrc":"3245:230:87","nodeType":"YulBlock","src":"3245:230:87","statements":[{"nativeSrc":"3255:19:87","nodeType":"YulAssignment","src":"3255:19:87","value":{"arguments":[{"kind":"number","nativeSrc":"3271:2:87","nodeType":"YulLiteral","src":"3271:2:87","type":"","value":"64"}],"functionName":{"name":"mload","nativeSrc":"3265:5:87","nodeType":"YulIdentifier","src":"3265:5:87"},"nativeSrc":"3265:9:87","nodeType":"YulFunctionCall","src":"3265:9:87"},"variableNames":[{"name":"memPtr","nativeSrc":"3255:6:87","nodeType":"YulIdentifier","src":"3255:6:87"}]},{"nativeSrc":"3283:58:87","nodeType":"YulVariableDeclaration","src":"3283:58:87","value":{"arguments":[{"name":"memPtr","nativeSrc":"3305:6:87","nodeType":"YulIdentifier","src":"3305:6:87"},{"arguments":[{"arguments":[{"name":"size","nativeSrc":"3321:4:87","nodeType":"YulIdentifier","src":"3321:4:87"},{"kind":"number","nativeSrc":"3327:2:87","nodeType":"YulLiteral","src":"3327:2:87","type":"","value":"31"}],"functionName":{"name":"add","nativeSrc":"3317:3:87","nodeType":"YulIdentifier","src":"3317:3:87"},"nativeSrc":"3317:13:87","nodeType":"YulFunctionCall","src":"3317:13:87"},{"arguments":[{"kind":"number","nativeSrc":"3336:2:87","nodeType":"YulLiteral","src":"3336:2:87","type":"","value":"31"}],"functionName":{"name":"not","nativeSrc":"3332:3:87","nodeType":"YulIdentifier","src":"3332:3:87"},"nativeSrc":"3332:7:87","nodeType":"YulFunctionCall","src":"3332:7:87"}],"functionName":{"name":"and","nativeSrc":"3313:3:87","nodeType":"YulIdentifier","src":"3313:3:87"},"nativeSrc":"3313:27:87","nodeType":"YulFunctionCall","src":"3313:27:87"}],"functionName":{"name":"add","nativeSrc":"3301:3:87","nodeType":"YulIdentifier","src":"3301:3:87"},"nativeSrc":"3301:40:87","nodeType":"YulFunctionCall","src":"3301:40:87"},"variables":[{"name":"newFreePtr","nativeSrc":"3287:10:87","nodeType":"YulTypedName","src":"3287:10:87","type":""}]},{"body":{"nativeSrc":"3416:22:87","nodeType":"YulBlock","src":"3416:22:87","statements":[{"expression":{"arguments":[],"functionName":{"name":"panic_error_0x41","nativeSrc":"3418:16:87","nodeType":"YulIdentifier","src":"3418:16:87"},"nativeSrc":"3418:18:87","nodeType":"YulFunctionCall","src":"3418:18:87"},"nativeSrc":"3418:18:87","nodeType":"YulExpressionStatement","src":"3418:18:87"}]},"condition":{"arguments":[{"arguments":[{"name":"newFreePtr","nativeSrc":"3359:10:87","nodeType":"YulIdentifier","src":"3359:10:87"},{"kind":"number","nativeSrc":"3371:18:87","nodeType":"YulLiteral","src":"3371:18:87","type":"","value":"0xffffffffffffffff"}],"functionName":{"name":"gt","nativeSrc":"3356:2:87","nodeType":"YulIdentifier","src":"3356:2:87"},"nativeSrc":"3356:34:87","nodeType":"YulFunctionCall","src":"3356:34:87"},{"arguments":[{"name":"newFreePtr","nativeSrc":"3395:10:87","nodeType":"YulIdentifier","src":"3395:10:87"},{"name":"memPtr","nativeSrc":"3407:6:87","nodeType":"YulIdentifier","src":"3407:6:87"}],"functionName":{"name":"lt","nativeSrc":"3392:2:87","nodeType":"YulIdentifier","src":"3392:2:87"},"nativeSrc":"3392:22:87","nodeType":"YulFunctionCall","src":"3392:22:87"}],"functionName":{"name":"or","nativeSrc":"3353:2:87","nodeType":"YulIdentifier","src":"3353:2:87"},"nativeSrc":"3353:62:87","nodeType":"YulFunctionCall","src":"3353:62:87"},"nativeSrc":"3350:88:87","nodeType":"YulIf","src":"3350:88:87"},{"expression":{"arguments":[{"kind":"number","nativeSrc":"3454:2:87","nodeType":"YulLiteral","src":"3454:2:87","type":"","value":"64"},{"name":"newFreePtr","nativeSrc":"3458:10:87","nodeType":"YulIdentifier","src":"3458:10:87"}],"functionName":{"name":"mstore","nativeSrc":"3447:6:87","nodeType":"YulIdentifier","src":"3447:6:87"},"nativeSrc":"3447:22:87","nodeType":"YulFunctionCall","src":"3447:22:87"},"nativeSrc":"3447:22:87","nodeType":"YulExpressionStatement","src":"3447:22:87"}]},"name":"allocate_memory","nativeSrc":"3200:275:87","nodeType":"YulFunctionDefinition","parameters":[{"name":"size","nativeSrc":"3225:4:87","nodeType":"YulTypedName","src":"3225:4:87","type":""}],"returnVariables":[{"name":"memPtr","nativeSrc":"3234:6:87","nodeType":"YulTypedName","src":"3234:6:87","type":""}],"src":"3200:275:87"},{"body":{"nativeSrc":"3532:577:87","nodeType":"YulBlock","src":"3532:577:87","statements":[{"body":{"nativeSrc":"3581:16:87","nodeType":"YulBlock","src":"3581:16:87","statements":[{"expression":{"arguments":[{"kind":"number","nativeSrc":"3590:1:87","nodeType":"YulLiteral","src":"3590:1:87","type":"","value":"0"},{"kind":"number","nativeSrc":"3593:1:87","nodeType":"YulLiteral","src":"3593:1:87","type":"","value":"0"}],"functionName":{"name":"revert","nativeSrc":"3583:6:87","nodeType":"YulIdentifier","src":"3583:6:87"},"nativeSrc":"3583:12:87","nodeType":"YulFunctionCall","src":"3583:12:87"},"nativeSrc":"3583:12:87","nodeType":"YulExpressionStatement","src":"3583:12:87"}]},"condition":{"arguments":[{"arguments":[{"arguments":[{"name":"offset","nativeSrc":"3560:6:87","nodeType":"YulIdentifier","src":"3560:6:87"},{"kind":"number","nativeSrc":"3568:4:87","nodeType":"YulLiteral","src":"3568:4:87","type":"","value":"0x1f"}],"functionName":{"name":"add","nativeSrc":"3556:3:87","nodeType":"YulIdentifier","src":"3556:3:87"},"nativeSrc":"3556:17:87","nodeType":"YulFunctionCall","src":"3556:17:87"},{"name":"end","nativeSrc":"3575:3:87","nodeType":"YulIdentifier","src":"3575:3:87"}],"functionName":{"name":"slt","nativeSrc":"3552:3:87","nodeType":"YulIdentifier","src":"3552:3:87"},"nativeSrc":"3552:27:87","nodeType":"YulFunctionCall","src":"3552:27:87"}],"functionName":{"name":"iszero","nativeSrc":"3545:6:87","nodeType":"YulIdentifier","src":"3545:6:87"},"nativeSrc":"3545:35:87","nodeType":"YulFunctionCall","src":"3545:35:87"},"nativeSrc":"3542:55:87","nodeType":"YulIf","src":"3542:55:87"},{"nativeSrc":"3606:34:87","nodeType":"YulVariableDeclaration","src":"3606:34:87","value":{"arguments":[{"name":"offset","nativeSrc":"3633:6:87","nodeType":"YulIdentifier","src":"3633:6:87"}],"functionName":{"name":"calldataload","nativeSrc":"3620:12:87","nodeType":"YulIdentifier","src":"3620:12:87"},"nativeSrc":"3620:20:87","nodeType":"YulFunctionCall","src":"3620:20:87"},"variables":[{"name":"length","nativeSrc":"3610:6:87","nodeType":"YulTypedName","src":"3610:6:87","type":""}]},{"nativeSrc":"3649:28:87","nodeType":"YulVariableDeclaration","src":"3649:28:87","value":{"arguments":[{"name":"offset","nativeSrc":"3664:6:87","nodeType":"YulIdentifier","src":"3664:6:87"},{"kind":"number","nativeSrc":"3672:4:87","nodeType":"YulLiteral","src":"3672:4:87","type":"","value":"0x20"}],"functionName":{"name":"add","nativeSrc":"3660:3:87","nodeType":"YulIdentifier","src":"3660:3:87"},"nativeSrc":"3660:17:87","nodeType":"YulFunctionCall","src":"3660:17:87"},"variables":[{"name":"src","nativeSrc":"3653:3:87","nodeType":"YulTypedName","src":"3653:3:87","type":""}]},{"nativeSrc":"3686:16:87","nodeType":"YulVariableDeclaration","src":"3686:16:87","value":{"kind":"number","nativeSrc":"3701:1:87","nodeType":"YulLiteral","src":"3701:1:87","type":"","value":"0"},"variables":[{"name":"array_1","nativeSrc":"3690:7:87","nodeType":"YulTypedName","src":"3690:7:87","type":""}]},{"nativeSrc":"3711:13:87","nodeType":"YulVariableDeclaration","src":"3711:13:87","value":{"kind":"number","nativeSrc":"3723:1:87","nodeType":"YulLiteral","src":"3723:1:87","type":"","value":"0"},"variables":[{"name":"size","nativeSrc":"3715:4:87","nodeType":"YulTypedName","src":"3715:4:87","type":""}]},{"body":{"nativeSrc":"3767:22:87","nodeType":"YulBlock","src":"3767:22:87","statements":[{"expression":{"arguments":[],"functionName":{"name":"panic_error_0x41","nativeSrc":"3769:16:87","nodeType":"YulIdentifier","src":"3769:16:87"},"nativeSrc":"3769:18:87","nodeType":"YulFunctionCall","src":"3769:18:87"},"nativeSrc":"3769:18:87","nodeType":"YulExpressionStatement","src":"3769:18:87"}]},"condition":{"arguments":[{"name":"length","nativeSrc":"3739:6:87","nodeType":"YulIdentifier","src":"3739:6:87"},{"kind":"number","nativeSrc":"3747:18:87","nodeType":"YulLiteral","src":"3747:18:87","type":"","value":"0xffffffffffffffff"}],"functionName":{"name":"gt","nativeSrc":"3736:2:87","nodeType":"YulIdentifier","src":"3736:2:87"},"nativeSrc":"3736:30:87","nodeType":"YulFunctionCall","src":"3736:30:87"},"nativeSrc":"3733:56:87","nodeType":"YulIf","src":"3733:56:87"},{"nativeSrc":"3798:48:87","nodeType":"YulAssignment","src":"3798:48:87","value":{"arguments":[{"arguments":[{"arguments":[{"name":"length","nativeSrc":"3818:6:87","nodeType":"YulIdentifier","src":"3818:6:87"},{"kind":"number","nativeSrc":"3826:2:87","nodeType":"YulLiteral","src":"3826:2:87","type":"","value":"31"}],"functionName":{"name":"add","nativeSrc":"3814:3:87","nodeType":"YulIdentifier","src":"3814:3:87"},"nativeSrc":"3814:15:87","nodeType":"YulFunctionCall","src":"3814:15:87"},{"arguments":[{"kind":"number","nativeSrc":"3835:2:87","nodeType":"YulLiteral","src":"3835:2:87","type":"","value":"31"}],"functionName":{"name":"not","nativeSrc":"3831:3:87","nodeType":"YulIdentifier","src":"3831:3:87"},"nativeSrc":"3831:7:87","nodeType":"YulFunctionCall","src":"3831:7:87"}],"functionName":{"name":"and","nativeSrc":"3810:3:87","nodeType":"YulIdentifier","src":"3810:3:87"},"nativeSrc":"3810:29:87","nodeType":"YulFunctionCall","src":"3810:29:87"},{"kind":"number","nativeSrc":"3841:4:87","nodeType":"YulLiteral","src":"3841:4:87","type":"","value":"0x20"}],"functionName":{"name":"add","nativeSrc":"3806:3:87","nodeType":"YulIdentifier","src":"3806:3:87"},"nativeSrc":"3806:40:87","nodeType":"YulFunctionCall","src":"3806:40:87"},"variableNames":[{"name":"size","nativeSrc":"3798:4:87","nodeType":"YulIdentifier","src":"3798:4:87"}]},{"nativeSrc":"3855:32:87","nodeType":"YulAssignment","src":"3855:32:87","value":{"arguments":[{"name":"size","nativeSrc":"3882:4:87","nodeType":"YulIdentifier","src":"3882:4:87"}],"functionName":{"name":"allocate_memory","nativeSrc":"3866:15:87","nodeType":"YulIdentifier","src":"3866:15:87"},"nativeSrc":"3866:21:87","nodeType":"YulFunctionCall","src":"3866:21:87"},"variableNames":[{"name":"array_1","nativeSrc":"3855:7:87","nodeType":"YulIdentifier","src":"3855:7:87"}]},{"expression":{"arguments":[{"name":"array_1","nativeSrc":"3903:7:87","nodeType":"YulIdentifier","src":"3903:7:87"},{"name":"length","nativeSrc":"3912:6:87","nodeType":"YulIdentifier","src":"3912:6:87"}],"functionName":{"name":"mstore","nativeSrc":"3896:6:87","nodeType":"YulIdentifier","src":"3896:6:87"},"nativeSrc":"3896:23:87","nodeType":"YulFunctionCall","src":"3896:23:87"},"nativeSrc":"3896:23:87","nodeType":"YulExpressionStatement","src":"3896:23:87"},{"body":{"nativeSrc":"3957:16:87","nodeType":"YulBlock","src":"3957:16:87","statements":[{"expression":{"arguments":[{"kind":"number","nativeSrc":"3966:1:87","nodeType":"YulLiteral","src":"3966:1:87","type":"","value":"0"},{"kind":"number","nativeSrc":"3969:1:87","nodeType":"YulLiteral","src":"3969:1:87","type":"","value":"0"}],"functionName":{"name":"revert","nativeSrc":"3959:6:87","nodeType":"YulIdentifier","src":"3959:6:87"},"nativeSrc":"3959:12:87","nodeType":"YulFunctionCall","src":"3959:12:87"},"nativeSrc":"3959:12:87","nodeType":"YulExpressionStatement","src":"3959:12:87"}]},"condition":{"arguments":[{"arguments":[{"name":"src","nativeSrc":"3938:3:87","nodeType":"YulIdentifier","src":"3938:3:87"},{"name":"length","nativeSrc":"3943:6:87","nodeType":"YulIdentifier","src":"3943:6:87"}],"functionName":{"name":"add","nativeSrc":"3934:3:87","nodeType":"YulIdentifier","src":"3934:3:87"},"nativeSrc":"3934:16:87","nodeType":"YulFunctionCall","src":"3934:16:87"},{"name":"end","nativeSrc":"3952:3:87","nodeType":"YulIdentifier","src":"3952:3:87"}],"functionName":{"name":"gt","nativeSrc":"3931:2:87","nodeType":"YulIdentifier","src":"3931:2:87"},"nativeSrc":"3931:25:87","nodeType":"YulFunctionCall","src":"3931:25:87"},"nativeSrc":"3928:45:87","nodeType":"YulIf","src":"3928:45:87"},{"expression":{"arguments":[{"arguments":[{"name":"array_1","nativeSrc":"3999:7:87","nodeType":"YulIdentifier","src":"3999:7:87"},{"kind":"number","nativeSrc":"4008:4:87","nodeType":"YulLiteral","src":"4008:4:87","type":"","value":"0x20"}],"functionName":{"name":"add","nativeSrc":"3995:3:87","nodeType":"YulIdentifier","src":"3995:3:87"},"nativeSrc":"3995:18:87","nodeType":"YulFunctionCall","src":"3995:18:87"},{"name":"src","nativeSrc":"4015:3:87","nodeType":"YulIdentifier","src":"4015:3:87"},{"name":"length","nativeSrc":"4020:6:87","nodeType":"YulIdentifier","src":"4020:6:87"}],"functionName":{"name":"calldatacopy","nativeSrc":"3982:12:87","nodeType":"YulIdentifier","src":"3982:12:87"},"nativeSrc":"3982:45:87","nodeType":"YulFunctionCall","src":"3982:45:87"},"nativeSrc":"3982:45:87","nodeType":"YulExpressionStatement","src":"3982:45:87"},{"expression":{"arguments":[{"arguments":[{"arguments":[{"name":"array_1","nativeSrc":"4051:7:87","nodeType":"YulIdentifier","src":"4051:7:87"},{"name":"length","nativeSrc":"4060:6:87","nodeType":"YulIdentifier","src":"4060:6:87"}],"functionName":{"name":"add","nativeSrc":"4047:3:87","nodeType":"YulIdentifier","src":"4047:3:87"},"nativeSrc":"4047:20:87","nodeType":"YulFunctionCall","src":"4047:20:87"},{"kind":"number","nativeSrc":"4069:4:87","nodeType":"YulLiteral","src":"4069:4:87","type":"","value":"0x20"}],"functionName":{"name":"add","nativeSrc":"4043:3:87","nodeType":"YulIdentifier","src":"4043:3:87"},"nativeSrc":"4043:31:87","nodeType":"YulFunctionCall","src":"4043:31:87"},{"kind":"number","nativeSrc":"4076:1:87","nodeType":"YulLiteral","src":"4076:1:87","type":"","value":"0"}],"functionName":{"name":"mstore","nativeSrc":"4036:6:87","nodeType":"YulIdentifier","src":"4036:6:87"},"nativeSrc":"4036:42:87","nodeType":"YulFunctionCall","src":"4036:42:87"},"nativeSrc":"4036:42:87","nodeType":"YulExpressionStatement","src":"4036:42:87"},{"nativeSrc":"4087:16:87","nodeType":"YulAssignment","src":"4087:16:87","value":{"name":"array_1","nativeSrc":"4096:7:87","nodeType":"YulIdentifier","src":"4096:7:87"},"variableNames":[{"name":"array","nativeSrc":"4087:5:87","nodeType":"YulIdentifier","src":"4087:5:87"}]}]},"name":"abi_decode_bytes","nativeSrc":"3480:629:87","nodeType":"YulFunctionDefinition","parameters":[{"name":"offset","nativeSrc":"3506:6:87","nodeType":"YulTypedName","src":"3506:6:87","type":""},{"name":"end","nativeSrc":"3514:3:87","nodeType":"YulTypedName","src":"3514:3:87","type":""}],"returnVariables":[{"name":"array","nativeSrc":"3522:5:87","nodeType":"YulTypedName","src":"3522:5:87","type":""}],"src":"3480:629:87"},{"body":{"nativeSrc":"4223:351:87","nodeType":"YulBlock","src":"4223:351:87","statements":[{"body":{"nativeSrc":"4269:16:87","nodeType":"YulBlock","src":"4269:16:87","statements":[{"expression":{"arguments":[{"kind":"number","nativeSrc":"4278:1:87","nodeType":"YulLiteral","src":"4278:1:87","type":"","value":"0"},{"kind":"number","nativeSrc":"4281:1:87","nodeType":"YulLiteral","src":"4281:1:87","type":"","value":"0"}],"functionName":{"name":"revert","nativeSrc":"4271:6:87","nodeType":"YulIdentifier","src":"4271:6:87"},"nativeSrc":"4271:12:87","nodeType":"YulFunctionCall","src":"4271:12:87"},"nativeSrc":"4271:12:87","nodeType":"YulExpressionStatement","src":"4271:12:87"}]},"condition":{"arguments":[{"arguments":[{"name":"dataEnd","nativeSrc":"4244:7:87","nodeType":"YulIdentifier","src":"4244:7:87"},{"name":"headStart","nativeSrc":"4253:9:87","nodeType":"YulIdentifier","src":"4253:9:87"}],"functionName":{"name":"sub","nativeSrc":"4240:3:87","nodeType":"YulIdentifier","src":"4240:3:87"},"nativeSrc":"4240:23:87","nodeType":"YulFunctionCall","src":"4240:23:87"},{"kind":"number","nativeSrc":"4265:2:87","nodeType":"YulLiteral","src":"4265:2:87","type":"","value":"96"}],"functionName":{"name":"slt","nativeSrc":"4236:3:87","nodeType":"YulIdentifier","src":"4236:3:87"},"nativeSrc":"4236:32:87","nodeType":"YulFunctionCall","src":"4236:32:87"},"nativeSrc":"4233:52:87","nodeType":"YulIf","src":"4233:52:87"},{"nativeSrc":"4294:37:87","nodeType":"YulAssignment","src":"4294:37:87","value":{"arguments":[{"name":"headStart","nativeSrc":"4321:9:87","nodeType":"YulIdentifier","src":"4321:9:87"}],"functionName":{"name":"abi_decode_uint8","nativeSrc":"4304:16:87","nodeType":"YulIdentifier","src":"4304:16:87"},"nativeSrc":"4304:27:87","nodeType":"YulFunctionCall","src":"4304:27:87"},"variableNames":[{"name":"value0","nativeSrc":"4294:6:87","nodeType":"YulIdentifier","src":"4294:6:87"}]},{"nativeSrc":"4340:46:87","nodeType":"YulAssignment","src":"4340:46:87","value":{"arguments":[{"arguments":[{"name":"headStart","nativeSrc":"4371:9:87","nodeType":"YulIdentifier","src":"4371:9:87"},{"kind":"number","nativeSrc":"4382:2:87","nodeType":"YulLiteral","src":"4382:2:87","type":"","value":"32"}],"functionName":{"name":"add","nativeSrc":"4367:3:87","nodeType":"YulIdentifier","src":"4367:3:87"},"nativeSrc":"4367:18:87","nodeType":"YulFunctionCall","src":"4367:18:87"}],"functionName":{"name":"abi_decode_uint8","nativeSrc":"4350:16:87","nodeType":"YulIdentifier","src":"4350:16:87"},"nativeSrc":"4350:36:87","nodeType":"YulFunctionCall","src":"4350:36:87"},"variableNames":[{"name":"value1","nativeSrc":"4340:6:87","nodeType":"YulIdentifier","src":"4340:6:87"}]},{"nativeSrc":"4395:46:87","nodeType":"YulVariableDeclaration","src":"4395:46:87","value":{"arguments":[{"arguments":[{"name":"headStart","nativeSrc":"4426:9:87","nodeType":"YulIdentifier","src":"4426:9:87"},{"kind":"number","nativeSrc":"4437:2:87","nodeType":"YulLiteral","src":"4437:2:87","type":"","value":"64"}],"functionName":{"name":"add","nativeSrc":"4422:3:87","nodeType":"YulIdentifier","src":"4422:3:87"},"nativeSrc":"4422:18:87","nodeType":"YulFunctionCall","src":"4422:18:87"}],"functionName":{"name":"calldataload","nativeSrc":"4409:12:87","nodeType":"YulIdentifier","src":"4409:12:87"},"nativeSrc":"4409:32:87","nodeType":"YulFunctionCall","src":"4409:32:87"},"variables":[{"name":"offset","nativeSrc":"4399:6:87","nodeType":"YulTypedName","src":"4399:6:87","type":""}]},{"body":{"nativeSrc":"4484:16:87","nodeType":"YulBlock","src":"4484:16:87","statements":[{"expression":{"arguments":[{"kind":"number","nativeSrc":"4493:1:87","nodeType":"YulLiteral","src":"4493:1:87","type":"","value":"0"},{"kind":"number","nativeSrc":"4496:1:87","nodeType":"YulLiteral","src":"4496:1:87","type":"","value":"0"}],"functionName":{"name":"revert","nativeSrc":"4486:6:87","nodeType":"YulIdentifier","src":"4486:6:87"},"nativeSrc":"4486:12:87","nodeType":"YulFunctionCall","src":"4486:12:87"},"nativeSrc":"4486:12:87","nodeType":"YulExpressionStatement","src":"4486:12:87"}]},"condition":{"arguments":[{"name":"offset","nativeSrc":"4456:6:87","nodeType":"YulIdentifier","src":"4456:6:87"},{"kind":"number","nativeSrc":"4464:18:87","nodeType":"YulLiteral","src":"4464:18:87","type":"","value":"0xffffffffffffffff"}],"functionName":{"name":"gt","nativeSrc":"4453:2:87","nodeType":"YulIdentifier","src":"4453:2:87"},"nativeSrc":"4453:30:87","nodeType":"YulFunctionCall","src":"4453:30:87"},"nativeSrc":"4450:50:87","nodeType":"YulIf","src":"4450:50:87"},{"nativeSrc":"4509:59:87","nodeType":"YulAssignment","src":"4509:59:87","value":{"arguments":[{"arguments":[{"name":"headStart","nativeSrc":"4540:9:87","nodeType":"YulIdentifier","src":"4540:9:87"},{"name":"offset","nativeSrc":"4551:6:87","nodeType":"YulIdentifier","src":"4551:6:87"}],"functionName":{"name":"add","nativeSrc":"4536:3:87","nodeType":"YulIdentifier","src":"4536:3:87"},"nativeSrc":"4536:22:87","nodeType":"YulFunctionCall","src":"4536:22:87"},{"name":"dataEnd","nativeSrc":"4560:7:87","nodeType":"YulIdentifier","src":"4560:7:87"}],"functionName":{"name":"abi_decode_bytes","nativeSrc":"4519:16:87","nodeType":"YulIdentifier","src":"4519:16:87"},"nativeSrc":"4519:49:87","nodeType":"YulFunctionCall","src":"4519:49:87"},"variableNames":[{"name":"value2","nativeSrc":"4509:6:87","nodeType":"YulIdentifier","src":"4509:6:87"}]}]},"name":"abi_decode_tuple_t_uint8t_uint8t_bytes_memory_ptr","nativeSrc":"4114:460:87","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nativeSrc":"4173:9:87","nodeType":"YulTypedName","src":"4173:9:87","type":""},{"name":"dataEnd","nativeSrc":"4184:7:87","nodeType":"YulTypedName","src":"4184:7:87","type":""}],"returnVariables":[{"name":"value0","nativeSrc":"4196:6:87","nodeType":"YulTypedName","src":"4196:6:87","type":""},{"name":"value1","nativeSrc":"4204:6:87","nodeType":"YulTypedName","src":"4204:6:87","type":""},{"name":"value2","nativeSrc":"4212:6:87","nodeType":"YulTypedName","src":"4212:6:87","type":""}],"src":"4114:460:87"},{"body":{"nativeSrc":"4698:99:87","nodeType":"YulBlock","src":"4698:99:87","statements":[{"expression":{"arguments":[{"name":"headStart","nativeSrc":"4715:9:87","nodeType":"YulIdentifier","src":"4715:9:87"},{"kind":"number","nativeSrc":"4726:2:87","nodeType":"YulLiteral","src":"4726:2:87","type":"","value":"32"}],"functionName":{"name":"mstore","nativeSrc":"4708:6:87","nodeType":"YulIdentifier","src":"4708:6:87"},"nativeSrc":"4708:21:87","nodeType":"YulFunctionCall","src":"4708:21:87"},"nativeSrc":"4708:21:87","nodeType":"YulExpressionStatement","src":"4708:21:87"},{"nativeSrc":"4738:53:87","nodeType":"YulAssignment","src":"4738:53:87","value":{"arguments":[{"name":"value0","nativeSrc":"4764:6:87","nodeType":"YulIdentifier","src":"4764:6:87"},{"arguments":[{"name":"headStart","nativeSrc":"4776:9:87","nodeType":"YulIdentifier","src":"4776:9:87"},{"kind":"number","nativeSrc":"4787:2:87","nodeType":"YulLiteral","src":"4787:2:87","type":"","value":"32"}],"functionName":{"name":"add","nativeSrc":"4772:3:87","nodeType":"YulIdentifier","src":"4772:3:87"},"nativeSrc":"4772:18:87","nodeType":"YulFunctionCall","src":"4772:18:87"}],"functionName":{"name":"abi_encode_string","nativeSrc":"4746:17:87","nodeType":"YulIdentifier","src":"4746:17:87"},"nativeSrc":"4746:45:87","nodeType":"YulFunctionCall","src":"4746:45:87"},"variableNames":[{"name":"tail","nativeSrc":"4738:4:87","nodeType":"YulIdentifier","src":"4738:4:87"}]}]},"name":"abi_encode_tuple_t_bytes_memory_ptr__to_t_bytes_memory_ptr__fromStack_reversed","nativeSrc":"4579:218:87","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nativeSrc":"4667:9:87","nodeType":"YulTypedName","src":"4667:9:87","type":""},{"name":"value0","nativeSrc":"4678:6:87","nodeType":"YulTypedName","src":"4678:6:87","type":""}],"returnVariables":[{"name":"tail","nativeSrc":"4689:4:87","nodeType":"YulTypedName","src":"4689:4:87","type":""}],"src":"4579:218:87"},{"body":{"nativeSrc":"4872:177:87","nodeType":"YulBlock","src":"4872:177:87","statements":[{"body":{"nativeSrc":"4918:16:87","nodeType":"YulBlock","src":"4918:16:87","statements":[{"expression":{"arguments":[{"kind":"number","nativeSrc":"4927:1:87","nodeType":"YulLiteral","src":"4927:1:87","type":"","value":"0"},{"kind":"number","nativeSrc":"4930:1:87","nodeType":"YulLiteral","src":"4930:1:87","type":"","value":"0"}],"functionName":{"name":"revert","nativeSrc":"4920:6:87","nodeType":"YulIdentifier","src":"4920:6:87"},"nativeSrc":"4920:12:87","nodeType":"YulFunctionCall","src":"4920:12:87"},"nativeSrc":"4920:12:87","nodeType":"YulExpressionStatement","src":"4920:12:87"}]},"condition":{"arguments":[{"arguments":[{"name":"dataEnd","nativeSrc":"4893:7:87","nodeType":"YulIdentifier","src":"4893:7:87"},{"name":"headStart","nativeSrc":"4902:9:87","nodeType":"YulIdentifier","src":"4902:9:87"}],"functionName":{"name":"sub","nativeSrc":"4889:3:87","nodeType":"YulIdentifier","src":"4889:3:87"},"nativeSrc":"4889:23:87","nodeType":"YulFunctionCall","src":"4889:23:87"},{"kind":"number","nativeSrc":"4914:2:87","nodeType":"YulLiteral","src":"4914:2:87","type":"","value":"32"}],"functionName":{"name":"slt","nativeSrc":"4885:3:87","nodeType":"YulIdentifier","src":"4885:3:87"},"nativeSrc":"4885:32:87","nodeType":"YulFunctionCall","src":"4885:32:87"},"nativeSrc":"4882:52:87","nodeType":"YulIf","src":"4882:52:87"},{"nativeSrc":"4943:36:87","nodeType":"YulVariableDeclaration","src":"4943:36:87","value":{"arguments":[{"name":"headStart","nativeSrc":"4969:9:87","nodeType":"YulIdentifier","src":"4969:9:87"}],"functionName":{"name":"calldataload","nativeSrc":"4956:12:87","nodeType":"YulIdentifier","src":"4956:12:87"},"nativeSrc":"4956:23:87","nodeType":"YulFunctionCall","src":"4956:23:87"},"variables":[{"name":"value","nativeSrc":"4947:5:87","nodeType":"YulTypedName","src":"4947:5:87","type":""}]},{"expression":{"arguments":[{"name":"value","nativeSrc":"5013:5:87","nodeType":"YulIdentifier","src":"5013:5:87"}],"functionName":{"name":"validator_revert_address","nativeSrc":"4988:24:87","nodeType":"YulIdentifier","src":"4988:24:87"},"nativeSrc":"4988:31:87","nodeType":"YulFunctionCall","src":"4988:31:87"},"nativeSrc":"4988:31:87","nodeType":"YulExpressionStatement","src":"4988:31:87"},{"nativeSrc":"5028:15:87","nodeType":"YulAssignment","src":"5028:15:87","value":{"name":"value","nativeSrc":"5038:5:87","nodeType":"YulIdentifier","src":"5038:5:87"},"variableNames":[{"name":"value0","nativeSrc":"5028:6:87","nodeType":"YulIdentifier","src":"5028:6:87"}]}]},"name":"abi_decode_tuple_t_address","nativeSrc":"4802:247:87","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nativeSrc":"4838:9:87","nodeType":"YulTypedName","src":"4838:9:87","type":""},{"name":"dataEnd","nativeSrc":"4849:7:87","nodeType":"YulTypedName","src":"4849:7:87","type":""}],"returnVariables":[{"name":"value0","nativeSrc":"4861:6:87","nodeType":"YulTypedName","src":"4861:6:87","type":""}],"src":"4802:247:87"},{"body":{"nativeSrc":"5124:110:87","nodeType":"YulBlock","src":"5124:110:87","statements":[{"body":{"nativeSrc":"5170:16:87","nodeType":"YulBlock","src":"5170:16:87","statements":[{"expression":{"arguments":[{"kind":"number","nativeSrc":"5179:1:87","nodeType":"YulLiteral","src":"5179:1:87","type":"","value":"0"},{"kind":"number","nativeSrc":"5182:1:87","nodeType":"YulLiteral","src":"5182:1:87","type":"","value":"0"}],"functionName":{"name":"revert","nativeSrc":"5172:6:87","nodeType":"YulIdentifier","src":"5172:6:87"},"nativeSrc":"5172:12:87","nodeType":"YulFunctionCall","src":"5172:12:87"},"nativeSrc":"5172:12:87","nodeType":"YulExpressionStatement","src":"5172:12:87"}]},"condition":{"arguments":[{"arguments":[{"name":"dataEnd","nativeSrc":"5145:7:87","nodeType":"YulIdentifier","src":"5145:7:87"},{"name":"headStart","nativeSrc":"5154:9:87","nodeType":"YulIdentifier","src":"5154:9:87"}],"functionName":{"name":"sub","nativeSrc":"5141:3:87","nodeType":"YulIdentifier","src":"5141:3:87"},"nativeSrc":"5141:23:87","nodeType":"YulFunctionCall","src":"5141:23:87"},{"kind":"number","nativeSrc":"5166:2:87","nodeType":"YulLiteral","src":"5166:2:87","type":"","value":"32"}],"functionName":{"name":"slt","nativeSrc":"5137:3:87","nodeType":"YulIdentifier","src":"5137:3:87"},"nativeSrc":"5137:32:87","nodeType":"YulFunctionCall","src":"5137:32:87"},"nativeSrc":"5134:52:87","nodeType":"YulIf","src":"5134:52:87"},{"nativeSrc":"5195:33:87","nodeType":"YulAssignment","src":"5195:33:87","value":{"arguments":[{"name":"headStart","nativeSrc":"5218:9:87","nodeType":"YulIdentifier","src":"5218:9:87"}],"functionName":{"name":"calldataload","nativeSrc":"5205:12:87","nodeType":"YulIdentifier","src":"5205:12:87"},"nativeSrc":"5205:23:87","nodeType":"YulFunctionCall","src":"5205:23:87"},"variableNames":[{"name":"value0","nativeSrc":"5195:6:87","nodeType":"YulIdentifier","src":"5195:6:87"}]}]},"name":"abi_decode_tuple_t_bytes32","nativeSrc":"5054:180:87","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nativeSrc":"5090:9:87","nodeType":"YulTypedName","src":"5090:9:87","type":""},{"name":"dataEnd","nativeSrc":"5101:7:87","nodeType":"YulTypedName","src":"5101:7:87","type":""}],"returnVariables":[{"name":"value0","nativeSrc":"5113:6:87","nodeType":"YulTypedName","src":"5113:6:87","type":""}],"src":"5054:180:87"},{"body":{"nativeSrc":"5335:359:87","nodeType":"YulBlock","src":"5335:359:87","statements":[{"body":{"nativeSrc":"5381:16:87","nodeType":"YulBlock","src":"5381:16:87","statements":[{"expression":{"arguments":[{"kind":"number","nativeSrc":"5390:1:87","nodeType":"YulLiteral","src":"5390:1:87","type":"","value":"0"},{"kind":"number","nativeSrc":"5393:1:87","nodeType":"YulLiteral","src":"5393:1:87","type":"","value":"0"}],"functionName":{"name":"revert","nativeSrc":"5383:6:87","nodeType":"YulIdentifier","src":"5383:6:87"},"nativeSrc":"5383:12:87","nodeType":"YulFunctionCall","src":"5383:12:87"},"nativeSrc":"5383:12:87","nodeType":"YulExpressionStatement","src":"5383:12:87"}]},"condition":{"arguments":[{"arguments":[{"name":"dataEnd","nativeSrc":"5356:7:87","nodeType":"YulIdentifier","src":"5356:7:87"},{"name":"headStart","nativeSrc":"5365:9:87","nodeType":"YulIdentifier","src":"5365:9:87"}],"functionName":{"name":"sub","nativeSrc":"5352:3:87","nodeType":"YulIdentifier","src":"5352:3:87"},"nativeSrc":"5352:23:87","nodeType":"YulFunctionCall","src":"5352:23:87"},{"kind":"number","nativeSrc":"5377:2:87","nodeType":"YulLiteral","src":"5377:2:87","type":"","value":"64"}],"functionName":{"name":"slt","nativeSrc":"5348:3:87","nodeType":"YulIdentifier","src":"5348:3:87"},"nativeSrc":"5348:32:87","nodeType":"YulFunctionCall","src":"5348:32:87"},"nativeSrc":"5345:52:87","nodeType":"YulIf","src":"5345:52:87"},{"nativeSrc":"5406:36:87","nodeType":"YulVariableDeclaration","src":"5406:36:87","value":{"arguments":[{"name":"headStart","nativeSrc":"5432:9:87","nodeType":"YulIdentifier","src":"5432:9:87"}],"functionName":{"name":"calldataload","nativeSrc":"5419:12:87","nodeType":"YulIdentifier","src":"5419:12:87"},"nativeSrc":"5419:23:87","nodeType":"YulFunctionCall","src":"5419:23:87"},"variables":[{"name":"value","nativeSrc":"5410:5:87","nodeType":"YulTypedName","src":"5410:5:87","type":""}]},{"expression":{"arguments":[{"name":"value","nativeSrc":"5476:5:87","nodeType":"YulIdentifier","src":"5476:5:87"}],"functionName":{"name":"validator_revert_address","nativeSrc":"5451:24:87","nodeType":"YulIdentifier","src":"5451:24:87"},"nativeSrc":"5451:31:87","nodeType":"YulFunctionCall","src":"5451:31:87"},"nativeSrc":"5451:31:87","nodeType":"YulExpressionStatement","src":"5451:31:87"},{"nativeSrc":"5491:15:87","nodeType":"YulAssignment","src":"5491:15:87","value":{"name":"value","nativeSrc":"5501:5:87","nodeType":"YulIdentifier","src":"5501:5:87"},"variableNames":[{"name":"value0","nativeSrc":"5491:6:87","nodeType":"YulIdentifier","src":"5491:6:87"}]},{"nativeSrc":"5515:46:87","nodeType":"YulVariableDeclaration","src":"5515:46:87","value":{"arguments":[{"arguments":[{"name":"headStart","nativeSrc":"5546:9:87","nodeType":"YulIdentifier","src":"5546:9:87"},{"kind":"number","nativeSrc":"5557:2:87","nodeType":"YulLiteral","src":"5557:2:87","type":"","value":"32"}],"functionName":{"name":"add","nativeSrc":"5542:3:87","nodeType":"YulIdentifier","src":"5542:3:87"},"nativeSrc":"5542:18:87","nodeType":"YulFunctionCall","src":"5542:18:87"}],"functionName":{"name":"calldataload","nativeSrc":"5529:12:87","nodeType":"YulIdentifier","src":"5529:12:87"},"nativeSrc":"5529:32:87","nodeType":"YulFunctionCall","src":"5529:32:87"},"variables":[{"name":"offset","nativeSrc":"5519:6:87","nodeType":"YulTypedName","src":"5519:6:87","type":""}]},{"body":{"nativeSrc":"5604:16:87","nodeType":"YulBlock","src":"5604:16:87","statements":[{"expression":{"arguments":[{"kind":"number","nativeSrc":"5613:1:87","nodeType":"YulLiteral","src":"5613:1:87","type":"","value":"0"},{"kind":"number","nativeSrc":"5616:1:87","nodeType":"YulLiteral","src":"5616:1:87","type":"","value":"0"}],"functionName":{"name":"revert","nativeSrc":"5606:6:87","nodeType":"YulIdentifier","src":"5606:6:87"},"nativeSrc":"5606:12:87","nodeType":"YulFunctionCall","src":"5606:12:87"},"nativeSrc":"5606:12:87","nodeType":"YulExpressionStatement","src":"5606:12:87"}]},"condition":{"arguments":[{"name":"offset","nativeSrc":"5576:6:87","nodeType":"YulIdentifier","src":"5576:6:87"},{"kind":"number","nativeSrc":"5584:18:87","nodeType":"YulLiteral","src":"5584:18:87","type":"","value":"0xffffffffffffffff"}],"functionName":{"name":"gt","nativeSrc":"5573:2:87","nodeType":"YulIdentifier","src":"5573:2:87"},"nativeSrc":"5573:30:87","nodeType":"YulFunctionCall","src":"5573:30:87"},"nativeSrc":"5570:50:87","nodeType":"YulIf","src":"5570:50:87"},{"nativeSrc":"5629:59:87","nodeType":"YulAssignment","src":"5629:59:87","value":{"arguments":[{"arguments":[{"name":"headStart","nativeSrc":"5660:9:87","nodeType":"YulIdentifier","src":"5660:9:87"},{"name":"offset","nativeSrc":"5671:6:87","nodeType":"YulIdentifier","src":"5671:6:87"}],"functionName":{"name":"add","nativeSrc":"5656:3:87","nodeType":"YulIdentifier","src":"5656:3:87"},"nativeSrc":"5656:22:87","nodeType":"YulFunctionCall","src":"5656:22:87"},{"name":"dataEnd","nativeSrc":"5680:7:87","nodeType":"YulIdentifier","src":"5680:7:87"}],"functionName":{"name":"abi_decode_bytes","nativeSrc":"5639:16:87","nodeType":"YulIdentifier","src":"5639:16:87"},"nativeSrc":"5639:49:87","nodeType":"YulFunctionCall","src":"5639:49:87"},"variableNames":[{"name":"value1","nativeSrc":"5629:6:87","nodeType":"YulIdentifier","src":"5629:6:87"}]}]},"name":"abi_decode_tuple_t_addresst_bytes_memory_ptr","nativeSrc":"5239:455:87","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nativeSrc":"5293:9:87","nodeType":"YulTypedName","src":"5293:9:87","type":""},{"name":"dataEnd","nativeSrc":"5304:7:87","nodeType":"YulTypedName","src":"5304:7:87","type":""}],"returnVariables":[{"name":"value0","nativeSrc":"5316:6:87","nodeType":"YulTypedName","src":"5316:6:87","type":""},{"name":"value1","nativeSrc":"5324:6:87","nodeType":"YulTypedName","src":"5324:6:87","type":""}],"src":"5239:455:87"},{"body":{"nativeSrc":"5816:207:87","nodeType":"YulBlock","src":"5816:207:87","statements":[{"body":{"nativeSrc":"5862:16:87","nodeType":"YulBlock","src":"5862:16:87","statements":[{"expression":{"arguments":[{"kind":"number","nativeSrc":"5871:1:87","nodeType":"YulLiteral","src":"5871:1:87","type":"","value":"0"},{"kind":"number","nativeSrc":"5874:1:87","nodeType":"YulLiteral","src":"5874:1:87","type":"","value":"0"}],"functionName":{"name":"revert","nativeSrc":"5864:6:87","nodeType":"YulIdentifier","src":"5864:6:87"},"nativeSrc":"5864:12:87","nodeType":"YulFunctionCall","src":"5864:12:87"},"nativeSrc":"5864:12:87","nodeType":"YulExpressionStatement","src":"5864:12:87"}]},"condition":{"arguments":[{"arguments":[{"name":"dataEnd","nativeSrc":"5837:7:87","nodeType":"YulIdentifier","src":"5837:7:87"},{"name":"headStart","nativeSrc":"5846:9:87","nodeType":"YulIdentifier","src":"5846:9:87"}],"functionName":{"name":"sub","nativeSrc":"5833:3:87","nodeType":"YulIdentifier","src":"5833:3:87"},"nativeSrc":"5833:23:87","nodeType":"YulFunctionCall","src":"5833:23:87"},{"kind":"number","nativeSrc":"5858:2:87","nodeType":"YulLiteral","src":"5858:2:87","type":"","value":"64"}],"functionName":{"name":"slt","nativeSrc":"5829:3:87","nodeType":"YulIdentifier","src":"5829:3:87"},"nativeSrc":"5829:32:87","nodeType":"YulFunctionCall","src":"5829:32:87"},"nativeSrc":"5826:52:87","nodeType":"YulIf","src":"5826:52:87"},{"nativeSrc":"5887:14:87","nodeType":"YulVariableDeclaration","src":"5887:14:87","value":{"kind":"number","nativeSrc":"5900:1:87","nodeType":"YulLiteral","src":"5900:1:87","type":"","value":"0"},"variables":[{"name":"value","nativeSrc":"5891:5:87","nodeType":"YulTypedName","src":"5891:5:87","type":""}]},{"nativeSrc":"5910:32:87","nodeType":"YulAssignment","src":"5910:32:87","value":{"arguments":[{"name":"headStart","nativeSrc":"5932:9:87","nodeType":"YulIdentifier","src":"5932:9:87"}],"functionName":{"name":"calldataload","nativeSrc":"5919:12:87","nodeType":"YulIdentifier","src":"5919:12:87"},"nativeSrc":"5919:23:87","nodeType":"YulFunctionCall","src":"5919:23:87"},"variableNames":[{"name":"value","nativeSrc":"5910:5:87","nodeType":"YulIdentifier","src":"5910:5:87"}]},{"nativeSrc":"5951:15:87","nodeType":"YulAssignment","src":"5951:15:87","value":{"name":"value","nativeSrc":"5961:5:87","nodeType":"YulIdentifier","src":"5961:5:87"},"variableNames":[{"name":"value0","nativeSrc":"5951:6:87","nodeType":"YulIdentifier","src":"5951:6:87"}]},{"nativeSrc":"5975:42:87","nodeType":"YulAssignment","src":"5975:42:87","value":{"arguments":[{"arguments":[{"name":"headStart","nativeSrc":"6002:9:87","nodeType":"YulIdentifier","src":"6002:9:87"},{"kind":"number","nativeSrc":"6013:2:87","nodeType":"YulLiteral","src":"6013:2:87","type":"","value":"32"}],"functionName":{"name":"add","nativeSrc":"5998:3:87","nodeType":"YulIdentifier","src":"5998:3:87"},"nativeSrc":"5998:18:87","nodeType":"YulFunctionCall","src":"5998:18:87"}],"functionName":{"name":"calldataload","nativeSrc":"5985:12:87","nodeType":"YulIdentifier","src":"5985:12:87"},"nativeSrc":"5985:32:87","nodeType":"YulFunctionCall","src":"5985:32:87"},"variableNames":[{"name":"value1","nativeSrc":"5975:6:87","nodeType":"YulIdentifier","src":"5975:6:87"}]}]},"name":"abi_decode_tuple_t_userDefinedValueType$_SlotIndex_$17382t_int256","nativeSrc":"5699:324:87","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nativeSrc":"5774:9:87","nodeType":"YulTypedName","src":"5774:9:87","type":""},{"name":"dataEnd","nativeSrc":"5785:7:87","nodeType":"YulTypedName","src":"5785:7:87","type":""}],"returnVariables":[{"name":"value0","nativeSrc":"5797:6:87","nodeType":"YulTypedName","src":"5797:6:87","type":""},{"name":"value1","nativeSrc":"5805:6:87","nodeType":"YulTypedName","src":"5805:6:87","type":""}],"src":"5699:324:87"},{"body":{"nativeSrc":"6127:76:87","nodeType":"YulBlock","src":"6127:76:87","statements":[{"nativeSrc":"6137:26:87","nodeType":"YulAssignment","src":"6137:26:87","value":{"arguments":[{"name":"headStart","nativeSrc":"6149:9:87","nodeType":"YulIdentifier","src":"6149:9:87"},{"kind":"number","nativeSrc":"6160:2:87","nodeType":"YulLiteral","src":"6160:2:87","type":"","value":"32"}],"functionName":{"name":"add","nativeSrc":"6145:3:87","nodeType":"YulIdentifier","src":"6145:3:87"},"nativeSrc":"6145:18:87","nodeType":"YulFunctionCall","src":"6145:18:87"},"variableNames":[{"name":"tail","nativeSrc":"6137:4:87","nodeType":"YulIdentifier","src":"6137:4:87"}]},{"expression":{"arguments":[{"name":"headStart","nativeSrc":"6179:9:87","nodeType":"YulIdentifier","src":"6179:9:87"},{"name":"value0","nativeSrc":"6190:6:87","nodeType":"YulIdentifier","src":"6190:6:87"}],"functionName":{"name":"mstore","nativeSrc":"6172:6:87","nodeType":"YulIdentifier","src":"6172:6:87"},"nativeSrc":"6172:25:87","nodeType":"YulFunctionCall","src":"6172:25:87"},"nativeSrc":"6172:25:87","nodeType":"YulExpressionStatement","src":"6172:25:87"}]},"name":"abi_encode_tuple_t_int256__to_t_int256__fromStack_reversed","nativeSrc":"6028:175:87","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nativeSrc":"6096:9:87","nodeType":"YulTypedName","src":"6096:9:87","type":""},{"name":"value0","nativeSrc":"6107:6:87","nodeType":"YulTypedName","src":"6107:6:87","type":""}],"returnVariables":[{"name":"tail","nativeSrc":"6118:4:87","nodeType":"YulTypedName","src":"6118:4:87","type":""}],"src":"6028:175:87"},{"body":{"nativeSrc":"6353:337:87","nodeType":"YulBlock","src":"6353:337:87","statements":[{"nativeSrc":"6363:28:87","nodeType":"YulAssignment","src":"6363:28:87","value":{"arguments":[{"name":"headStart","nativeSrc":"6375:9:87","nodeType":"YulIdentifier","src":"6375:9:87"},{"kind":"number","nativeSrc":"6386:4:87","nodeType":"YulLiteral","src":"6386:4:87","type":"","value":"1024"}],"functionName":{"name":"add","nativeSrc":"6371:3:87","nodeType":"YulIdentifier","src":"6371:3:87"},"nativeSrc":"6371:20:87","nodeType":"YulFunctionCall","src":"6371:20:87"},"variableNames":[{"name":"tail","nativeSrc":"6363:4:87","nodeType":"YulIdentifier","src":"6363:4:87"}]},{"nativeSrc":"6400:20:87","nodeType":"YulVariableDeclaration","src":"6400:20:87","value":{"name":"headStart","nativeSrc":"6411:9:87","nodeType":"YulIdentifier","src":"6411:9:87"},"variables":[{"name":"pos","nativeSrc":"6404:3:87","nodeType":"YulTypedName","src":"6404:3:87","type":""}]},{"nativeSrc":"6429:16:87","nodeType":"YulAssignment","src":"6429:16:87","value":{"name":"headStart","nativeSrc":"6436:9:87","nodeType":"YulIdentifier","src":"6436:9:87"},"variableNames":[{"name":"pos","nativeSrc":"6429:3:87","nodeType":"YulIdentifier","src":"6429:3:87"}]},{"nativeSrc":"6454:20:87","nodeType":"YulVariableDeclaration","src":"6454:20:87","value":{"name":"value0","nativeSrc":"6468:6:87","nodeType":"YulIdentifier","src":"6468:6:87"},"variables":[{"name":"srcPtr","nativeSrc":"6458:6:87","nodeType":"YulTypedName","src":"6458:6:87","type":""}]},{"nativeSrc":"6483:10:87","nodeType":"YulVariableDeclaration","src":"6483:10:87","value":{"kind":"number","nativeSrc":"6492:1:87","nodeType":"YulLiteral","src":"6492:1:87","type":"","value":"0"},"variables":[{"name":"i","nativeSrc":"6487:1:87","nodeType":"YulTypedName","src":"6487:1:87","type":""}]},{"body":{"nativeSrc":"6549:135:87","nodeType":"YulBlock","src":"6549:135:87","statements":[{"expression":{"arguments":[{"name":"pos","nativeSrc":"6570:3:87","nodeType":"YulIdentifier","src":"6570:3:87"},{"arguments":[{"arguments":[{"name":"srcPtr","nativeSrc":"6585:6:87","nodeType":"YulIdentifier","src":"6585:6:87"}],"functionName":{"name":"mload","nativeSrc":"6579:5:87","nodeType":"YulIdentifier","src":"6579:5:87"},"nativeSrc":"6579:13:87","nodeType":"YulFunctionCall","src":"6579:13:87"},{"kind":"number","nativeSrc":"6594:4:87","nodeType":"YulLiteral","src":"6594:4:87","type":"","value":"0xff"}],"functionName":{"name":"and","nativeSrc":"6575:3:87","nodeType":"YulIdentifier","src":"6575:3:87"},"nativeSrc":"6575:24:87","nodeType":"YulFunctionCall","src":"6575:24:87"}],"functionName":{"name":"mstore","nativeSrc":"6563:6:87","nodeType":"YulIdentifier","src":"6563:6:87"},"nativeSrc":"6563:37:87","nodeType":"YulFunctionCall","src":"6563:37:87"},"nativeSrc":"6563:37:87","nodeType":"YulExpressionStatement","src":"6563:37:87"},{"nativeSrc":"6613:21:87","nodeType":"YulAssignment","src":"6613:21:87","value":{"arguments":[{"name":"pos","nativeSrc":"6624:3:87","nodeType":"YulIdentifier","src":"6624:3:87"},{"kind":"number","nativeSrc":"6629:4:87","nodeType":"YulLiteral","src":"6629:4:87","type":"","value":"0x20"}],"functionName":{"name":"add","nativeSrc":"6620:3:87","nodeType":"YulIdentifier","src":"6620:3:87"},"nativeSrc":"6620:14:87","nodeType":"YulFunctionCall","src":"6620:14:87"},"variableNames":[{"name":"pos","nativeSrc":"6613:3:87","nodeType":"YulIdentifier","src":"6613:3:87"}]},{"nativeSrc":"6647:27:87","nodeType":"YulAssignment","src":"6647:27:87","value":{"arguments":[{"name":"srcPtr","nativeSrc":"6661:6:87","nodeType":"YulIdentifier","src":"6661:6:87"},{"kind":"number","nativeSrc":"6669:4:87","nodeType":"YulLiteral","src":"6669:4:87","type":"","value":"0x20"}],"functionName":{"name":"add","nativeSrc":"6657:3:87","nodeType":"YulIdentifier","src":"6657:3:87"},"nativeSrc":"6657:17:87","nodeType":"YulFunctionCall","src":"6657:17:87"},"variableNames":[{"name":"srcPtr","nativeSrc":"6647:6:87","nodeType":"YulIdentifier","src":"6647:6:87"}]}]},"condition":{"arguments":[{"name":"i","nativeSrc":"6513:1:87","nodeType":"YulIdentifier","src":"6513:1:87"},{"kind":"number","nativeSrc":"6516:4:87","nodeType":"YulLiteral","src":"6516:4:87","type":"","value":"0x20"}],"functionName":{"name":"lt","nativeSrc":"6510:2:87","nodeType":"YulIdentifier","src":"6510:2:87"},"nativeSrc":"6510:11:87","nodeType":"YulFunctionCall","src":"6510:11:87"},"nativeSrc":"6502:182:87","nodeType":"YulForLoop","post":{"nativeSrc":"6522:18:87","nodeType":"YulBlock","src":"6522:18:87","statements":[{"nativeSrc":"6524:14:87","nodeType":"YulAssignment","src":"6524:14:87","value":{"arguments":[{"name":"i","nativeSrc":"6533:1:87","nodeType":"YulIdentifier","src":"6533:1:87"},{"kind":"number","nativeSrc":"6536:1:87","nodeType":"YulLiteral","src":"6536:1:87","type":"","value":"1"}],"functionName":{"name":"add","nativeSrc":"6529:3:87","nodeType":"YulIdentifier","src":"6529:3:87"},"nativeSrc":"6529:9:87","nodeType":"YulFunctionCall","src":"6529:9:87"},"variableNames":[{"name":"i","nativeSrc":"6524:1:87","nodeType":"YulIdentifier","src":"6524:1:87"}]}]},"pre":{"nativeSrc":"6506:3:87","nodeType":"YulBlock","src":"6506:3:87","statements":[]},"src":"6502:182:87"}]},"name":"abi_encode_tuple_t_array$_t_uint8_$32_memory_ptr__to_t_array$_t_uint8_$32_memory_ptr__fromStack_reversed","nativeSrc":"6208:482:87","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nativeSrc":"6322:9:87","nodeType":"YulTypedName","src":"6322:9:87","type":""},{"name":"value0","nativeSrc":"6333:6:87","nodeType":"YulTypedName","src":"6333:6:87","type":""}],"returnVariables":[{"name":"tail","nativeSrc":"6344:4:87","nodeType":"YulTypedName","src":"6344:4:87","type":""}],"src":"6208:482:87"},{"body":{"nativeSrc":"6796:76:87","nodeType":"YulBlock","src":"6796:76:87","statements":[{"nativeSrc":"6806:26:87","nodeType":"YulAssignment","src":"6806:26:87","value":{"arguments":[{"name":"headStart","nativeSrc":"6818:9:87","nodeType":"YulIdentifier","src":"6818:9:87"},{"kind":"number","nativeSrc":"6829:2:87","nodeType":"YulLiteral","src":"6829:2:87","type":"","value":"32"}],"functionName":{"name":"add","nativeSrc":"6814:3:87","nodeType":"YulIdentifier","src":"6814:3:87"},"nativeSrc":"6814:18:87","nodeType":"YulFunctionCall","src":"6814:18:87"},"variableNames":[{"name":"tail","nativeSrc":"6806:4:87","nodeType":"YulIdentifier","src":"6806:4:87"}]},{"expression":{"arguments":[{"name":"headStart","nativeSrc":"6848:9:87","nodeType":"YulIdentifier","src":"6848:9:87"},{"name":"value0","nativeSrc":"6859:6:87","nodeType":"YulIdentifier","src":"6859:6:87"}],"functionName":{"name":"mstore","nativeSrc":"6841:6:87","nodeType":"YulIdentifier","src":"6841:6:87"},"nativeSrc":"6841:25:87","nodeType":"YulFunctionCall","src":"6841:25:87"},"nativeSrc":"6841:25:87","nodeType":"YulExpressionStatement","src":"6841:25:87"}]},"name":"abi_encode_tuple_t_bytes32__to_t_bytes32__fromStack_reversed","nativeSrc":"6695:177:87","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nativeSrc":"6765:9:87","nodeType":"YulTypedName","src":"6765:9:87","type":""},{"name":"value0","nativeSrc":"6776:6:87","nodeType":"YulTypedName","src":"6776:6:87","type":""}],"returnVariables":[{"name":"tail","nativeSrc":"6787:4:87","nodeType":"YulTypedName","src":"6787:4:87","type":""}],"src":"6695:177:87"},{"body":{"nativeSrc":"6964:280:87","nodeType":"YulBlock","src":"6964:280:87","statements":[{"body":{"nativeSrc":"7010:16:87","nodeType":"YulBlock","src":"7010:16:87","statements":[{"expression":{"arguments":[{"kind":"number","nativeSrc":"7019:1:87","nodeType":"YulLiteral","src":"7019:1:87","type":"","value":"0"},{"kind":"number","nativeSrc":"7022:1:87","nodeType":"YulLiteral","src":"7022:1:87","type":"","value":"0"}],"functionName":{"name":"revert","nativeSrc":"7012:6:87","nodeType":"YulIdentifier","src":"7012:6:87"},"nativeSrc":"7012:12:87","nodeType":"YulFunctionCall","src":"7012:12:87"},"nativeSrc":"7012:12:87","nodeType":"YulExpressionStatement","src":"7012:12:87"}]},"condition":{"arguments":[{"arguments":[{"name":"dataEnd","nativeSrc":"6985:7:87","nodeType":"YulIdentifier","src":"6985:7:87"},{"name":"headStart","nativeSrc":"6994:9:87","nodeType":"YulIdentifier","src":"6994:9:87"}],"functionName":{"name":"sub","nativeSrc":"6981:3:87","nodeType":"YulIdentifier","src":"6981:3:87"},"nativeSrc":"6981:23:87","nodeType":"YulFunctionCall","src":"6981:23:87"},{"kind":"number","nativeSrc":"7006:2:87","nodeType":"YulLiteral","src":"7006:2:87","type":"","value":"64"}],"functionName":{"name":"slt","nativeSrc":"6977:3:87","nodeType":"YulIdentifier","src":"6977:3:87"},"nativeSrc":"6977:32:87","nodeType":"YulFunctionCall","src":"6977:32:87"},"nativeSrc":"6974:52:87","nodeType":"YulIf","src":"6974:52:87"},{"nativeSrc":"7035:14:87","nodeType":"YulVariableDeclaration","src":"7035:14:87","value":{"kind":"number","nativeSrc":"7048:1:87","nodeType":"YulLiteral","src":"7048:1:87","type":"","value":"0"},"variables":[{"name":"value","nativeSrc":"7039:5:87","nodeType":"YulTypedName","src":"7039:5:87","type":""}]},{"nativeSrc":"7058:32:87","nodeType":"YulAssignment","src":"7058:32:87","value":{"arguments":[{"name":"headStart","nativeSrc":"7080:9:87","nodeType":"YulIdentifier","src":"7080:9:87"}],"functionName":{"name":"calldataload","nativeSrc":"7067:12:87","nodeType":"YulIdentifier","src":"7067:12:87"},"nativeSrc":"7067:23:87","nodeType":"YulFunctionCall","src":"7067:23:87"},"variableNames":[{"name":"value","nativeSrc":"7058:5:87","nodeType":"YulIdentifier","src":"7058:5:87"}]},{"nativeSrc":"7099:15:87","nodeType":"YulAssignment","src":"7099:15:87","value":{"name":"value","nativeSrc":"7109:5:87","nodeType":"YulIdentifier","src":"7109:5:87"},"variableNames":[{"name":"value0","nativeSrc":"7099:6:87","nodeType":"YulIdentifier","src":"7099:6:87"}]},{"nativeSrc":"7123:47:87","nodeType":"YulVariableDeclaration","src":"7123:47:87","value":{"arguments":[{"arguments":[{"name":"headStart","nativeSrc":"7155:9:87","nodeType":"YulIdentifier","src":"7155:9:87"},{"kind":"number","nativeSrc":"7166:2:87","nodeType":"YulLiteral","src":"7166:2:87","type":"","value":"32"}],"functionName":{"name":"add","nativeSrc":"7151:3:87","nodeType":"YulIdentifier","src":"7151:3:87"},"nativeSrc":"7151:18:87","nodeType":"YulFunctionCall","src":"7151:18:87"}],"functionName":{"name":"calldataload","nativeSrc":"7138:12:87","nodeType":"YulIdentifier","src":"7138:12:87"},"nativeSrc":"7138:32:87","nodeType":"YulFunctionCall","src":"7138:32:87"},"variables":[{"name":"value_1","nativeSrc":"7127:7:87","nodeType":"YulTypedName","src":"7127:7:87","type":""}]},{"expression":{"arguments":[{"name":"value_1","nativeSrc":"7204:7:87","nodeType":"YulIdentifier","src":"7204:7:87"}],"functionName":{"name":"validator_revert_address","nativeSrc":"7179:24:87","nodeType":"YulIdentifier","src":"7179:24:87"},"nativeSrc":"7179:33:87","nodeType":"YulFunctionCall","src":"7179:33:87"},"nativeSrc":"7179:33:87","nodeType":"YulExpressionStatement","src":"7179:33:87"},{"nativeSrc":"7221:17:87","nodeType":"YulAssignment","src":"7221:17:87","value":{"name":"value_1","nativeSrc":"7231:7:87","nodeType":"YulIdentifier","src":"7231:7:87"},"variableNames":[{"name":"value1","nativeSrc":"7221:6:87","nodeType":"YulIdentifier","src":"7221:6:87"}]}]},"name":"abi_decode_tuple_t_uint256t_address","nativeSrc":"6877:367:87","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nativeSrc":"6922:9:87","nodeType":"YulTypedName","src":"6922:9:87","type":""},{"name":"dataEnd","nativeSrc":"6933:7:87","nodeType":"YulTypedName","src":"6933:7:87","type":""}],"returnVariables":[{"name":"value0","nativeSrc":"6945:6:87","nodeType":"YulTypedName","src":"6945:6:87","type":""},{"name":"value1","nativeSrc":"6953:6:87","nodeType":"YulTypedName","src":"6953:6:87","type":""}],"src":"6877:367:87"},{"body":{"nativeSrc":"7291:76:87","nodeType":"YulBlock","src":"7291:76:87","statements":[{"body":{"nativeSrc":"7345:16:87","nodeType":"YulBlock","src":"7345:16:87","statements":[{"expression":{"arguments":[{"kind":"number","nativeSrc":"7354:1:87","nodeType":"YulLiteral","src":"7354:1:87","type":"","value":"0"},{"kind":"number","nativeSrc":"7357:1:87","nodeType":"YulLiteral","src":"7357:1:87","type":"","value":"0"}],"functionName":{"name":"revert","nativeSrc":"7347:6:87","nodeType":"YulIdentifier","src":"7347:6:87"},"nativeSrc":"7347:12:87","nodeType":"YulFunctionCall","src":"7347:12:87"},"nativeSrc":"7347:12:87","nodeType":"YulExpressionStatement","src":"7347:12:87"}]},"condition":{"arguments":[{"arguments":[{"name":"value","nativeSrc":"7314:5:87","nodeType":"YulIdentifier","src":"7314:5:87"},{"arguments":[{"arguments":[{"name":"value","nativeSrc":"7335:5:87","nodeType":"YulIdentifier","src":"7335:5:87"}],"functionName":{"name":"iszero","nativeSrc":"7328:6:87","nodeType":"YulIdentifier","src":"7328:6:87"},"nativeSrc":"7328:13:87","nodeType":"YulFunctionCall","src":"7328:13:87"}],"functionName":{"name":"iszero","nativeSrc":"7321:6:87","nodeType":"YulIdentifier","src":"7321:6:87"},"nativeSrc":"7321:21:87","nodeType":"YulFunctionCall","src":"7321:21:87"}],"functionName":{"name":"eq","nativeSrc":"7311:2:87","nodeType":"YulIdentifier","src":"7311:2:87"},"nativeSrc":"7311:32:87","nodeType":"YulFunctionCall","src":"7311:32:87"}],"functionName":{"name":"iszero","nativeSrc":"7304:6:87","nodeType":"YulIdentifier","src":"7304:6:87"},"nativeSrc":"7304:40:87","nodeType":"YulFunctionCall","src":"7304:40:87"},"nativeSrc":"7301:60:87","nodeType":"YulIf","src":"7301:60:87"}]},"name":"validator_revert_bool","nativeSrc":"7249:118:87","nodeType":"YulFunctionDefinition","parameters":[{"name":"value","nativeSrc":"7280:5:87","nodeType":"YulTypedName","src":"7280:5:87","type":""}],"src":"7249:118:87"},{"body":{"nativeSrc":"7522:536:87","nodeType":"YulBlock","src":"7522:536:87","statements":[{"body":{"nativeSrc":"7569:16:87","nodeType":"YulBlock","src":"7569:16:87","statements":[{"expression":{"arguments":[{"kind":"number","nativeSrc":"7578:1:87","nodeType":"YulLiteral","src":"7578:1:87","type":"","value":"0"},{"kind":"number","nativeSrc":"7581:1:87","nodeType":"YulLiteral","src":"7581:1:87","type":"","value":"0"}],"functionName":{"name":"revert","nativeSrc":"7571:6:87","nodeType":"YulIdentifier","src":"7571:6:87"},"nativeSrc":"7571:12:87","nodeType":"YulFunctionCall","src":"7571:12:87"},"nativeSrc":"7571:12:87","nodeType":"YulExpressionStatement","src":"7571:12:87"}]},"condition":{"arguments":[{"arguments":[{"name":"dataEnd","nativeSrc":"7543:7:87","nodeType":"YulIdentifier","src":"7543:7:87"},{"name":"headStart","nativeSrc":"7552:9:87","nodeType":"YulIdentifier","src":"7552:9:87"}],"functionName":{"name":"sub","nativeSrc":"7539:3:87","nodeType":"YulIdentifier","src":"7539:3:87"},"nativeSrc":"7539:23:87","nodeType":"YulFunctionCall","src":"7539:23:87"},{"kind":"number","nativeSrc":"7564:3:87","nodeType":"YulLiteral","src":"7564:3:87","type":"","value":"128"}],"functionName":{"name":"slt","nativeSrc":"7535:3:87","nodeType":"YulIdentifier","src":"7535:3:87"},"nativeSrc":"7535:33:87","nodeType":"YulFunctionCall","src":"7535:33:87"},"nativeSrc":"7532:53:87","nodeType":"YulIf","src":"7532:53:87"},{"nativeSrc":"7594:37:87","nodeType":"YulAssignment","src":"7594:37:87","value":{"arguments":[{"name":"headStart","nativeSrc":"7621:9:87","nodeType":"YulIdentifier","src":"7621:9:87"}],"functionName":{"name":"abi_decode_uint8","nativeSrc":"7604:16:87","nodeType":"YulIdentifier","src":"7604:16:87"},"nativeSrc":"7604:27:87","nodeType":"YulFunctionCall","src":"7604:27:87"},"variableNames":[{"name":"value0","nativeSrc":"7594:6:87","nodeType":"YulIdentifier","src":"7594:6:87"}]},{"nativeSrc":"7640:45:87","nodeType":"YulVariableDeclaration","src":"7640:45:87","value":{"arguments":[{"arguments":[{"name":"headStart","nativeSrc":"7670:9:87","nodeType":"YulIdentifier","src":"7670:9:87"},{"kind":"number","nativeSrc":"7681:2:87","nodeType":"YulLiteral","src":"7681:2:87","type":"","value":"32"}],"functionName":{"name":"add","nativeSrc":"7666:3:87","nodeType":"YulIdentifier","src":"7666:3:87"},"nativeSrc":"7666:18:87","nodeType":"YulFunctionCall","src":"7666:18:87"}],"functionName":{"name":"calldataload","nativeSrc":"7653:12:87","nodeType":"YulIdentifier","src":"7653:12:87"},"nativeSrc":"7653:32:87","nodeType":"YulFunctionCall","src":"7653:32:87"},"variables":[{"name":"value","nativeSrc":"7644:5:87","nodeType":"YulTypedName","src":"7644:5:87","type":""}]},{"expression":{"arguments":[{"name":"value","nativeSrc":"7719:5:87","nodeType":"YulIdentifier","src":"7719:5:87"}],"functionName":{"name":"validator_revert_address","nativeSrc":"7694:24:87","nodeType":"YulIdentifier","src":"7694:24:87"},"nativeSrc":"7694:31:87","nodeType":"YulFunctionCall","src":"7694:31:87"},"nativeSrc":"7694:31:87","nodeType":"YulExpressionStatement","src":"7694:31:87"},{"nativeSrc":"7734:15:87","nodeType":"YulAssignment","src":"7734:15:87","value":{"name":"value","nativeSrc":"7744:5:87","nodeType":"YulIdentifier","src":"7744:5:87"},"variableNames":[{"name":"value1","nativeSrc":"7734:6:87","nodeType":"YulIdentifier","src":"7734:6:87"}]},{"nativeSrc":"7758:46:87","nodeType":"YulVariableDeclaration","src":"7758:46:87","value":{"arguments":[{"arguments":[{"name":"headStart","nativeSrc":"7789:9:87","nodeType":"YulIdentifier","src":"7789:9:87"},{"kind":"number","nativeSrc":"7800:2:87","nodeType":"YulLiteral","src":"7800:2:87","type":"","value":"64"}],"functionName":{"name":"add","nativeSrc":"7785:3:87","nodeType":"YulIdentifier","src":"7785:3:87"},"nativeSrc":"7785:18:87","nodeType":"YulFunctionCall","src":"7785:18:87"}],"functionName":{"name":"calldataload","nativeSrc":"7772:12:87","nodeType":"YulIdentifier","src":"7772:12:87"},"nativeSrc":"7772:32:87","nodeType":"YulFunctionCall","src":"7772:32:87"},"variables":[{"name":"offset","nativeSrc":"7762:6:87","nodeType":"YulTypedName","src":"7762:6:87","type":""}]},{"body":{"nativeSrc":"7847:16:87","nodeType":"YulBlock","src":"7847:16:87","statements":[{"expression":{"arguments":[{"kind":"number","nativeSrc":"7856:1:87","nodeType":"YulLiteral","src":"7856:1:87","type":"","value":"0"},{"kind":"number","nativeSrc":"7859:1:87","nodeType":"YulLiteral","src":"7859:1:87","type":"","value":"0"}],"functionName":{"name":"revert","nativeSrc":"7849:6:87","nodeType":"YulIdentifier","src":"7849:6:87"},"nativeSrc":"7849:12:87","nodeType":"YulFunctionCall","src":"7849:12:87"},"nativeSrc":"7849:12:87","nodeType":"YulExpressionStatement","src":"7849:12:87"}]},"condition":{"arguments":[{"name":"offset","nativeSrc":"7819:6:87","nodeType":"YulIdentifier","src":"7819:6:87"},{"kind":"number","nativeSrc":"7827:18:87","nodeType":"YulLiteral","src":"7827:18:87","type":"","value":"0xffffffffffffffff"}],"functionName":{"name":"gt","nativeSrc":"7816:2:87","nodeType":"YulIdentifier","src":"7816:2:87"},"nativeSrc":"7816:30:87","nodeType":"YulFunctionCall","src":"7816:30:87"},"nativeSrc":"7813:50:87","nodeType":"YulIf","src":"7813:50:87"},{"nativeSrc":"7872:59:87","nodeType":"YulAssignment","src":"7872:59:87","value":{"arguments":[{"arguments":[{"name":"headStart","nativeSrc":"7903:9:87","nodeType":"YulIdentifier","src":"7903:9:87"},{"name":"offset","nativeSrc":"7914:6:87","nodeType":"YulIdentifier","src":"7914:6:87"}],"functionName":{"name":"add","nativeSrc":"7899:3:87","nodeType":"YulIdentifier","src":"7899:3:87"},"nativeSrc":"7899:22:87","nodeType":"YulFunctionCall","src":"7899:22:87"},{"name":"dataEnd","nativeSrc":"7923:7:87","nodeType":"YulIdentifier","src":"7923:7:87"}],"functionName":{"name":"abi_decode_bytes","nativeSrc":"7882:16:87","nodeType":"YulIdentifier","src":"7882:16:87"},"nativeSrc":"7882:49:87","nodeType":"YulFunctionCall","src":"7882:49:87"},"variableNames":[{"name":"value2","nativeSrc":"7872:6:87","nodeType":"YulIdentifier","src":"7872:6:87"}]},{"nativeSrc":"7940:47:87","nodeType":"YulVariableDeclaration","src":"7940:47:87","value":{"arguments":[{"arguments":[{"name":"headStart","nativeSrc":"7972:9:87","nodeType":"YulIdentifier","src":"7972:9:87"},{"kind":"number","nativeSrc":"7983:2:87","nodeType":"YulLiteral","src":"7983:2:87","type":"","value":"96"}],"functionName":{"name":"add","nativeSrc":"7968:3:87","nodeType":"YulIdentifier","src":"7968:3:87"},"nativeSrc":"7968:18:87","nodeType":"YulFunctionCall","src":"7968:18:87"}],"functionName":{"name":"calldataload","nativeSrc":"7955:12:87","nodeType":"YulIdentifier","src":"7955:12:87"},"nativeSrc":"7955:32:87","nodeType":"YulFunctionCall","src":"7955:32:87"},"variables":[{"name":"value_1","nativeSrc":"7944:7:87","nodeType":"YulTypedName","src":"7944:7:87","type":""}]},{"expression":{"arguments":[{"name":"value_1","nativeSrc":"8018:7:87","nodeType":"YulIdentifier","src":"8018:7:87"}],"functionName":{"name":"validator_revert_bool","nativeSrc":"7996:21:87","nodeType":"YulIdentifier","src":"7996:21:87"},"nativeSrc":"7996:30:87","nodeType":"YulFunctionCall","src":"7996:30:87"},"nativeSrc":"7996:30:87","nodeType":"YulExpressionStatement","src":"7996:30:87"},{"nativeSrc":"8035:17:87","nodeType":"YulAssignment","src":"8035:17:87","value":{"name":"value_1","nativeSrc":"8045:7:87","nodeType":"YulIdentifier","src":"8045:7:87"},"variableNames":[{"name":"value3","nativeSrc":"8035:6:87","nodeType":"YulIdentifier","src":"8035:6:87"}]}]},"name":"abi_decode_tuple_t_uint8t_contract$_IInvestStrategy_$20725t_bytes_memory_ptrt_bool","nativeSrc":"7372:686:87","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nativeSrc":"7464:9:87","nodeType":"YulTypedName","src":"7464:9:87","type":""},{"name":"dataEnd","nativeSrc":"7475:7:87","nodeType":"YulTypedName","src":"7475:7:87","type":""}],"returnVariables":[{"name":"value0","nativeSrc":"7487:6:87","nodeType":"YulTypedName","src":"7487:6:87","type":""},{"name":"value1","nativeSrc":"7495:6:87","nodeType":"YulTypedName","src":"7495:6:87","type":""},{"name":"value2","nativeSrc":"7503:6:87","nodeType":"YulTypedName","src":"7503:6:87","type":""},{"name":"value3","nativeSrc":"7511:6:87","nodeType":"YulTypedName","src":"7511:6:87","type":""}],"src":"7372:686:87"},{"body":{"nativeSrc":"8184:359:87","nodeType":"YulBlock","src":"8184:359:87","statements":[{"body":{"nativeSrc":"8230:16:87","nodeType":"YulBlock","src":"8230:16:87","statements":[{"expression":{"arguments":[{"kind":"number","nativeSrc":"8239:1:87","nodeType":"YulLiteral","src":"8239:1:87","type":"","value":"0"},{"kind":"number","nativeSrc":"8242:1:87","nodeType":"YulLiteral","src":"8242:1:87","type":"","value":"0"}],"functionName":{"name":"revert","nativeSrc":"8232:6:87","nodeType":"YulIdentifier","src":"8232:6:87"},"nativeSrc":"8232:12:87","nodeType":"YulFunctionCall","src":"8232:12:87"},"nativeSrc":"8232:12:87","nodeType":"YulExpressionStatement","src":"8232:12:87"}]},"condition":{"arguments":[{"arguments":[{"name":"dataEnd","nativeSrc":"8205:7:87","nodeType":"YulIdentifier","src":"8205:7:87"},{"name":"headStart","nativeSrc":"8214:9:87","nodeType":"YulIdentifier","src":"8214:9:87"}],"functionName":{"name":"sub","nativeSrc":"8201:3:87","nodeType":"YulIdentifier","src":"8201:3:87"},"nativeSrc":"8201:23:87","nodeType":"YulFunctionCall","src":"8201:23:87"},{"kind":"number","nativeSrc":"8226:2:87","nodeType":"YulLiteral","src":"8226:2:87","type":"","value":"64"}],"functionName":{"name":"slt","nativeSrc":"8197:3:87","nodeType":"YulIdentifier","src":"8197:3:87"},"nativeSrc":"8197:32:87","nodeType":"YulFunctionCall","src":"8197:32:87"},"nativeSrc":"8194:52:87","nodeType":"YulIf","src":"8194:52:87"},{"nativeSrc":"8255:36:87","nodeType":"YulVariableDeclaration","src":"8255:36:87","value":{"arguments":[{"name":"headStart","nativeSrc":"8281:9:87","nodeType":"YulIdentifier","src":"8281:9:87"}],"functionName":{"name":"calldataload","nativeSrc":"8268:12:87","nodeType":"YulIdentifier","src":"8268:12:87"},"nativeSrc":"8268:23:87","nodeType":"YulFunctionCall","src":"8268:23:87"},"variables":[{"name":"value","nativeSrc":"8259:5:87","nodeType":"YulTypedName","src":"8259:5:87","type":""}]},{"expression":{"arguments":[{"name":"value","nativeSrc":"8325:5:87","nodeType":"YulIdentifier","src":"8325:5:87"}],"functionName":{"name":"validator_revert_address","nativeSrc":"8300:24:87","nodeType":"YulIdentifier","src":"8300:24:87"},"nativeSrc":"8300:31:87","nodeType":"YulFunctionCall","src":"8300:31:87"},"nativeSrc":"8300:31:87","nodeType":"YulExpressionStatement","src":"8300:31:87"},{"nativeSrc":"8340:15:87","nodeType":"YulAssignment","src":"8340:15:87","value":{"name":"value","nativeSrc":"8350:5:87","nodeType":"YulIdentifier","src":"8350:5:87"},"variableNames":[{"name":"value0","nativeSrc":"8340:6:87","nodeType":"YulIdentifier","src":"8340:6:87"}]},{"nativeSrc":"8364:46:87","nodeType":"YulVariableDeclaration","src":"8364:46:87","value":{"arguments":[{"arguments":[{"name":"headStart","nativeSrc":"8395:9:87","nodeType":"YulIdentifier","src":"8395:9:87"},{"kind":"number","nativeSrc":"8406:2:87","nodeType":"YulLiteral","src":"8406:2:87","type":"","value":"32"}],"functionName":{"name":"add","nativeSrc":"8391:3:87","nodeType":"YulIdentifier","src":"8391:3:87"},"nativeSrc":"8391:18:87","nodeType":"YulFunctionCall","src":"8391:18:87"}],"functionName":{"name":"calldataload","nativeSrc":"8378:12:87","nodeType":"YulIdentifier","src":"8378:12:87"},"nativeSrc":"8378:32:87","nodeType":"YulFunctionCall","src":"8378:32:87"},"variables":[{"name":"offset","nativeSrc":"8368:6:87","nodeType":"YulTypedName","src":"8368:6:87","type":""}]},{"body":{"nativeSrc":"8453:16:87","nodeType":"YulBlock","src":"8453:16:87","statements":[{"expression":{"arguments":[{"kind":"number","nativeSrc":"8462:1:87","nodeType":"YulLiteral","src":"8462:1:87","type":"","value":"0"},{"kind":"number","nativeSrc":"8465:1:87","nodeType":"YulLiteral","src":"8465:1:87","type":"","value":"0"}],"functionName":{"name":"revert","nativeSrc":"8455:6:87","nodeType":"YulIdentifier","src":"8455:6:87"},"nativeSrc":"8455:12:87","nodeType":"YulFunctionCall","src":"8455:12:87"},"nativeSrc":"8455:12:87","nodeType":"YulExpressionStatement","src":"8455:12:87"}]},"condition":{"arguments":[{"name":"offset","nativeSrc":"8425:6:87","nodeType":"YulIdentifier","src":"8425:6:87"},{"kind":"number","nativeSrc":"8433:18:87","nodeType":"YulLiteral","src":"8433:18:87","type":"","value":"0xffffffffffffffff"}],"functionName":{"name":"gt","nativeSrc":"8422:2:87","nodeType":"YulIdentifier","src":"8422:2:87"},"nativeSrc":"8422:30:87","nodeType":"YulFunctionCall","src":"8422:30:87"},"nativeSrc":"8419:50:87","nodeType":"YulIf","src":"8419:50:87"},{"nativeSrc":"8478:59:87","nodeType":"YulAssignment","src":"8478:59:87","value":{"arguments":[{"arguments":[{"name":"headStart","nativeSrc":"8509:9:87","nodeType":"YulIdentifier","src":"8509:9:87"},{"name":"offset","nativeSrc":"8520:6:87","nodeType":"YulIdentifier","src":"8520:6:87"}],"functionName":{"name":"add","nativeSrc":"8505:3:87","nodeType":"YulIdentifier","src":"8505:3:87"},"nativeSrc":"8505:22:87","nodeType":"YulFunctionCall","src":"8505:22:87"},{"name":"dataEnd","nativeSrc":"8529:7:87","nodeType":"YulIdentifier","src":"8529:7:87"}],"functionName":{"name":"abi_decode_bytes","nativeSrc":"8488:16:87","nodeType":"YulIdentifier","src":"8488:16:87"},"nativeSrc":"8488:49:87","nodeType":"YulFunctionCall","src":"8488:49:87"},"variableNames":[{"name":"value1","nativeSrc":"8478:6:87","nodeType":"YulIdentifier","src":"8478:6:87"}]}]},"name":"abi_decode_tuple_t_contract$_IInvestStrategy_$20725t_bytes_memory_ptr","nativeSrc":"8063:480:87","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nativeSrc":"8142:9:87","nodeType":"YulTypedName","src":"8142:9:87","type":""},{"name":"dataEnd","nativeSrc":"8153:7:87","nodeType":"YulTypedName","src":"8153:7:87","type":""}],"returnVariables":[{"name":"value0","nativeSrc":"8165:6:87","nodeType":"YulTypedName","src":"8165:6:87","type":""},{"name":"value1","nativeSrc":"8173:6:87","nodeType":"YulTypedName","src":"8173:6:87","type":""}],"src":"8063:480:87"},{"body":{"nativeSrc":"8631:169:87","nodeType":"YulBlock","src":"8631:169:87","statements":[{"body":{"nativeSrc":"8677:16:87","nodeType":"YulBlock","src":"8677:16:87","statements":[{"expression":{"arguments":[{"kind":"number","nativeSrc":"8686:1:87","nodeType":"YulLiteral","src":"8686:1:87","type":"","value":"0"},{"kind":"number","nativeSrc":"8689:1:87","nodeType":"YulLiteral","src":"8689:1:87","type":"","value":"0"}],"functionName":{"name":"revert","nativeSrc":"8679:6:87","nodeType":"YulIdentifier","src":"8679:6:87"},"nativeSrc":"8679:12:87","nodeType":"YulFunctionCall","src":"8679:12:87"},"nativeSrc":"8679:12:87","nodeType":"YulExpressionStatement","src":"8679:12:87"}]},"condition":{"arguments":[{"arguments":[{"name":"dataEnd","nativeSrc":"8652:7:87","nodeType":"YulIdentifier","src":"8652:7:87"},{"name":"headStart","nativeSrc":"8661:9:87","nodeType":"YulIdentifier","src":"8661:9:87"}],"functionName":{"name":"sub","nativeSrc":"8648:3:87","nodeType":"YulIdentifier","src":"8648:3:87"},"nativeSrc":"8648:23:87","nodeType":"YulFunctionCall","src":"8648:23:87"},{"kind":"number","nativeSrc":"8673:2:87","nodeType":"YulLiteral","src":"8673:2:87","type":"","value":"64"}],"functionName":{"name":"slt","nativeSrc":"8644:3:87","nodeType":"YulIdentifier","src":"8644:3:87"},"nativeSrc":"8644:32:87","nodeType":"YulFunctionCall","src":"8644:32:87"},"nativeSrc":"8641:52:87","nodeType":"YulIf","src":"8641:52:87"},{"nativeSrc":"8702:37:87","nodeType":"YulAssignment","src":"8702:37:87","value":{"arguments":[{"name":"headStart","nativeSrc":"8729:9:87","nodeType":"YulIdentifier","src":"8729:9:87"}],"functionName":{"name":"abi_decode_uint8","nativeSrc":"8712:16:87","nodeType":"YulIdentifier","src":"8712:16:87"},"nativeSrc":"8712:27:87","nodeType":"YulFunctionCall","src":"8712:27:87"},"variableNames":[{"name":"value0","nativeSrc":"8702:6:87","nodeType":"YulIdentifier","src":"8702:6:87"}]},{"nativeSrc":"8748:46:87","nodeType":"YulAssignment","src":"8748:46:87","value":{"arguments":[{"arguments":[{"name":"headStart","nativeSrc":"8779:9:87","nodeType":"YulIdentifier","src":"8779:9:87"},{"kind":"number","nativeSrc":"8790:2:87","nodeType":"YulLiteral","src":"8790:2:87","type":"","value":"32"}],"functionName":{"name":"add","nativeSrc":"8775:3:87","nodeType":"YulIdentifier","src":"8775:3:87"},"nativeSrc":"8775:18:87","nodeType":"YulFunctionCall","src":"8775:18:87"}],"functionName":{"name":"abi_decode_uint8","nativeSrc":"8758:16:87","nodeType":"YulIdentifier","src":"8758:16:87"},"nativeSrc":"8758:36:87","nodeType":"YulFunctionCall","src":"8758:36:87"},"variableNames":[{"name":"value1","nativeSrc":"8748:6:87","nodeType":"YulIdentifier","src":"8748:6:87"}]}]},"name":"abi_decode_tuple_t_uint8t_uint8","nativeSrc":"8548:252:87","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nativeSrc":"8589:9:87","nodeType":"YulTypedName","src":"8589:9:87","type":""},{"name":"dataEnd","nativeSrc":"8600:7:87","nodeType":"YulTypedName","src":"8600:7:87","type":""}],"returnVariables":[{"name":"value0","nativeSrc":"8612:6:87","nodeType":"YulTypedName","src":"8612:6:87","type":""},{"name":"value1","nativeSrc":"8620:6:87","nodeType":"YulTypedName","src":"8620:6:87","type":""}],"src":"8548:252:87"},{"body":{"nativeSrc":"8904:103:87","nodeType":"YulBlock","src":"8904:103:87","statements":[{"nativeSrc":"8914:26:87","nodeType":"YulAssignment","src":"8914:26:87","value":{"arguments":[{"name":"headStart","nativeSrc":"8926:9:87","nodeType":"YulIdentifier","src":"8926:9:87"},{"kind":"number","nativeSrc":"8937:2:87","nodeType":"YulLiteral","src":"8937:2:87","type":"","value":"32"}],"functionName":{"name":"add","nativeSrc":"8922:3:87","nodeType":"YulIdentifier","src":"8922:3:87"},"nativeSrc":"8922:18:87","nodeType":"YulFunctionCall","src":"8922:18:87"},"variableNames":[{"name":"tail","nativeSrc":"8914:4:87","nodeType":"YulIdentifier","src":"8914:4:87"}]},{"expression":{"arguments":[{"name":"headStart","nativeSrc":"8956:9:87","nodeType":"YulIdentifier","src":"8956:9:87"},{"arguments":[{"name":"value0","nativeSrc":"8971:6:87","nodeType":"YulIdentifier","src":"8971:6:87"},{"arguments":[{"kind":"number","nativeSrc":"8983:3:87","nodeType":"YulLiteral","src":"8983:3:87","type":"","value":"224"},{"kind":"number","nativeSrc":"8988:10:87","nodeType":"YulLiteral","src":"8988:10:87","type":"","value":"0xffffffff"}],"functionName":{"name":"shl","nativeSrc":"8979:3:87","nodeType":"YulIdentifier","src":"8979:3:87"},"nativeSrc":"8979:20:87","nodeType":"YulFunctionCall","src":"8979:20:87"}],"functionName":{"name":"and","nativeSrc":"8967:3:87","nodeType":"YulIdentifier","src":"8967:3:87"},"nativeSrc":"8967:33:87","nodeType":"YulFunctionCall","src":"8967:33:87"}],"functionName":{"name":"mstore","nativeSrc":"8949:6:87","nodeType":"YulIdentifier","src":"8949:6:87"},"nativeSrc":"8949:52:87","nodeType":"YulFunctionCall","src":"8949:52:87"},"nativeSrc":"8949:52:87","nodeType":"YulExpressionStatement","src":"8949:52:87"}]},"name":"abi_encode_tuple_t_bytes4__to_t_bytes4__fromStack_reversed","nativeSrc":"8805:202:87","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nativeSrc":"8873:9:87","nodeType":"YulTypedName","src":"8873:9:87","type":""},{"name":"value0","nativeSrc":"8884:6:87","nodeType":"YulTypedName","src":"8884:6:87","type":""}],"returnVariables":[{"name":"tail","nativeSrc":"8895:4:87","nodeType":"YulTypedName","src":"8895:4:87","type":""}],"src":"8805:202:87"},{"body":{"nativeSrc":"9098:314:87","nodeType":"YulBlock","src":"9098:314:87","statements":[{"body":{"nativeSrc":"9144:16:87","nodeType":"YulBlock","src":"9144:16:87","statements":[{"expression":{"arguments":[{"kind":"number","nativeSrc":"9153:1:87","nodeType":"YulLiteral","src":"9153:1:87","type":"","value":"0"},{"kind":"number","nativeSrc":"9156:1:87","nodeType":"YulLiteral","src":"9156:1:87","type":"","value":"0"}],"functionName":{"name":"revert","nativeSrc":"9146:6:87","nodeType":"YulIdentifier","src":"9146:6:87"},"nativeSrc":"9146:12:87","nodeType":"YulFunctionCall","src":"9146:12:87"},"nativeSrc":"9146:12:87","nodeType":"YulExpressionStatement","src":"9146:12:87"}]},"condition":{"arguments":[{"arguments":[{"name":"dataEnd","nativeSrc":"9119:7:87","nodeType":"YulIdentifier","src":"9119:7:87"},{"name":"headStart","nativeSrc":"9128:9:87","nodeType":"YulIdentifier","src":"9128:9:87"}],"functionName":{"name":"sub","nativeSrc":"9115:3:87","nodeType":"YulIdentifier","src":"9115:3:87"},"nativeSrc":"9115:23:87","nodeType":"YulFunctionCall","src":"9115:23:87"},{"kind":"number","nativeSrc":"9140:2:87","nodeType":"YulLiteral","src":"9140:2:87","type":"","value":"64"}],"functionName":{"name":"slt","nativeSrc":"9111:3:87","nodeType":"YulIdentifier","src":"9111:3:87"},"nativeSrc":"9111:32:87","nodeType":"YulFunctionCall","src":"9111:32:87"},"nativeSrc":"9108:52:87","nodeType":"YulIf","src":"9108:52:87"},{"nativeSrc":"9169:14:87","nodeType":"YulVariableDeclaration","src":"9169:14:87","value":{"kind":"number","nativeSrc":"9182:1:87","nodeType":"YulLiteral","src":"9182:1:87","type":"","value":"0"},"variables":[{"name":"value","nativeSrc":"9173:5:87","nodeType":"YulTypedName","src":"9173:5:87","type":""}]},{"nativeSrc":"9192:32:87","nodeType":"YulAssignment","src":"9192:32:87","value":{"arguments":[{"name":"headStart","nativeSrc":"9214:9:87","nodeType":"YulIdentifier","src":"9214:9:87"}],"functionName":{"name":"calldataload","nativeSrc":"9201:12:87","nodeType":"YulIdentifier","src":"9201:12:87"},"nativeSrc":"9201:23:87","nodeType":"YulFunctionCall","src":"9201:23:87"},"variableNames":[{"name":"value","nativeSrc":"9192:5:87","nodeType":"YulIdentifier","src":"9192:5:87"}]},{"nativeSrc":"9233:15:87","nodeType":"YulAssignment","src":"9233:15:87","value":{"name":"value","nativeSrc":"9243:5:87","nodeType":"YulIdentifier","src":"9243:5:87"},"variableNames":[{"name":"value0","nativeSrc":"9233:6:87","nodeType":"YulIdentifier","src":"9233:6:87"}]},{"nativeSrc":"9257:47:87","nodeType":"YulVariableDeclaration","src":"9257:47:87","value":{"arguments":[{"arguments":[{"name":"headStart","nativeSrc":"9289:9:87","nodeType":"YulIdentifier","src":"9289:9:87"},{"kind":"number","nativeSrc":"9300:2:87","nodeType":"YulLiteral","src":"9300:2:87","type":"","value":"32"}],"functionName":{"name":"add","nativeSrc":"9285:3:87","nodeType":"YulIdentifier","src":"9285:3:87"},"nativeSrc":"9285:18:87","nodeType":"YulFunctionCall","src":"9285:18:87"}],"functionName":{"name":"calldataload","nativeSrc":"9272:12:87","nodeType":"YulIdentifier","src":"9272:12:87"},"nativeSrc":"9272:32:87","nodeType":"YulFunctionCall","src":"9272:32:87"},"variables":[{"name":"value_1","nativeSrc":"9261:7:87","nodeType":"YulTypedName","src":"9261:7:87","type":""}]},{"body":{"nativeSrc":"9364:16:87","nodeType":"YulBlock","src":"9364:16:87","statements":[{"expression":{"arguments":[{"kind":"number","nativeSrc":"9373:1:87","nodeType":"YulLiteral","src":"9373:1:87","type":"","value":"0"},{"kind":"number","nativeSrc":"9376:1:87","nodeType":"YulLiteral","src":"9376:1:87","type":"","value":"0"}],"functionName":{"name":"revert","nativeSrc":"9366:6:87","nodeType":"YulIdentifier","src":"9366:6:87"},"nativeSrc":"9366:12:87","nodeType":"YulFunctionCall","src":"9366:12:87"},"nativeSrc":"9366:12:87","nodeType":"YulExpressionStatement","src":"9366:12:87"}]},"condition":{"arguments":[{"arguments":[{"name":"value_1","nativeSrc":"9326:7:87","nodeType":"YulIdentifier","src":"9326:7:87"},{"arguments":[{"name":"value_1","nativeSrc":"9339:7:87","nodeType":"YulIdentifier","src":"9339:7:87"},{"kind":"number","nativeSrc":"9348:12:87","nodeType":"YulLiteral","src":"9348:12:87","type":"","value":"0xffffffffff"}],"functionName":{"name":"and","nativeSrc":"9335:3:87","nodeType":"YulIdentifier","src":"9335:3:87"},"nativeSrc":"9335:26:87","nodeType":"YulFunctionCall","src":"9335:26:87"}],"functionName":{"name":"eq","nativeSrc":"9323:2:87","nodeType":"YulIdentifier","src":"9323:2:87"},"nativeSrc":"9323:39:87","nodeType":"YulFunctionCall","src":"9323:39:87"}],"functionName":{"name":"iszero","nativeSrc":"9316:6:87","nodeType":"YulIdentifier","src":"9316:6:87"},"nativeSrc":"9316:47:87","nodeType":"YulFunctionCall","src":"9316:47:87"},"nativeSrc":"9313:67:87","nodeType":"YulIf","src":"9313:67:87"},{"nativeSrc":"9389:17:87","nodeType":"YulAssignment","src":"9389:17:87","value":{"name":"value_1","nativeSrc":"9399:7:87","nodeType":"YulIdentifier","src":"9399:7:87"},"variableNames":[{"name":"value1","nativeSrc":"9389:6:87","nodeType":"YulIdentifier","src":"9389:6:87"}]}]},"name":"abi_decode_tuple_t_uint256t_uint40","nativeSrc":"9012:400:87","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nativeSrc":"9056:9:87","nodeType":"YulTypedName","src":"9056:9:87","type":""},{"name":"dataEnd","nativeSrc":"9067:7:87","nodeType":"YulTypedName","src":"9067:7:87","type":""}],"returnVariables":[{"name":"value0","nativeSrc":"9079:6:87","nodeType":"YulTypedName","src":"9079:6:87","type":""},{"name":"value1","nativeSrc":"9087:6:87","nodeType":"YulTypedName","src":"9087:6:87","type":""}],"src":"9012:400:87"},{"body":{"nativeSrc":"9549:76:87","nodeType":"YulBlock","src":"9549:76:87","statements":[{"nativeSrc":"9559:26:87","nodeType":"YulAssignment","src":"9559:26:87","value":{"arguments":[{"name":"headStart","nativeSrc":"9571:9:87","nodeType":"YulIdentifier","src":"9571:9:87"},{"kind":"number","nativeSrc":"9582:2:87","nodeType":"YulLiteral","src":"9582:2:87","type":"","value":"32"}],"functionName":{"name":"add","nativeSrc":"9567:3:87","nodeType":"YulIdentifier","src":"9567:3:87"},"nativeSrc":"9567:18:87","nodeType":"YulFunctionCall","src":"9567:18:87"},"variableNames":[{"name":"tail","nativeSrc":"9559:4:87","nodeType":"YulIdentifier","src":"9559:4:87"}]},{"expression":{"arguments":[{"name":"headStart","nativeSrc":"9601:9:87","nodeType":"YulIdentifier","src":"9601:9:87"},{"name":"value0","nativeSrc":"9612:6:87","nodeType":"YulIdentifier","src":"9612:6:87"}],"functionName":{"name":"mstore","nativeSrc":"9594:6:87","nodeType":"YulIdentifier","src":"9594:6:87"},"nativeSrc":"9594:25:87","nodeType":"YulFunctionCall","src":"9594:25:87"},"nativeSrc":"9594:25:87","nodeType":"YulExpressionStatement","src":"9594:25:87"}]},"name":"abi_encode_tuple_t_userDefinedValueType$_SlotIndex_$17382__to_t_uint256__fromStack_reversed","nativeSrc":"9417:208:87","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nativeSrc":"9518:9:87","nodeType":"YulTypedName","src":"9518:9:87","type":""},{"name":"value0","nativeSrc":"9529:6:87","nodeType":"YulTypedName","src":"9529:6:87","type":""}],"returnVariables":[{"name":"tail","nativeSrc":"9540:4:87","nodeType":"YulTypedName","src":"9540:4:87","type":""}],"src":"9417:208:87"},{"body":{"nativeSrc":"9697:114:87","nodeType":"YulBlock","src":"9697:114:87","statements":[{"body":{"nativeSrc":"9741:22:87","nodeType":"YulBlock","src":"9741:22:87","statements":[{"expression":{"arguments":[],"functionName":{"name":"panic_error_0x41","nativeSrc":"9743:16:87","nodeType":"YulIdentifier","src":"9743:16:87"},"nativeSrc":"9743:18:87","nodeType":"YulFunctionCall","src":"9743:18:87"},"nativeSrc":"9743:18:87","nodeType":"YulExpressionStatement","src":"9743:18:87"}]},"condition":{"arguments":[{"name":"length","nativeSrc":"9713:6:87","nodeType":"YulIdentifier","src":"9713:6:87"},{"kind":"number","nativeSrc":"9721:18:87","nodeType":"YulLiteral","src":"9721:18:87","type":"","value":"0xffffffffffffffff"}],"functionName":{"name":"gt","nativeSrc":"9710:2:87","nodeType":"YulIdentifier","src":"9710:2:87"},"nativeSrc":"9710:30:87","nodeType":"YulFunctionCall","src":"9710:30:87"},"nativeSrc":"9707:56:87","nodeType":"YulIf","src":"9707:56:87"},{"nativeSrc":"9772:33:87","nodeType":"YulAssignment","src":"9772:33:87","value":{"arguments":[{"arguments":[{"kind":"number","nativeSrc":"9788:1:87","nodeType":"YulLiteral","src":"9788:1:87","type":"","value":"5"},{"name":"length","nativeSrc":"9791:6:87","nodeType":"YulIdentifier","src":"9791:6:87"}],"functionName":{"name":"shl","nativeSrc":"9784:3:87","nodeType":"YulIdentifier","src":"9784:3:87"},"nativeSrc":"9784:14:87","nodeType":"YulFunctionCall","src":"9784:14:87"},{"kind":"number","nativeSrc":"9800:4:87","nodeType":"YulLiteral","src":"9800:4:87","type":"","value":"0x20"}],"functionName":{"name":"add","nativeSrc":"9780:3:87","nodeType":"YulIdentifier","src":"9780:3:87"},"nativeSrc":"9780:25:87","nodeType":"YulFunctionCall","src":"9780:25:87"},"variableNames":[{"name":"size","nativeSrc":"9772:4:87","nodeType":"YulIdentifier","src":"9772:4:87"}]}]},"name":"array_allocation_size_array_uint8_dyn","nativeSrc":"9630:181:87","nodeType":"YulFunctionDefinition","parameters":[{"name":"length","nativeSrc":"9677:6:87","nodeType":"YulTypedName","src":"9677:6:87","type":""}],"returnVariables":[{"name":"size","nativeSrc":"9688:4:87","nodeType":"YulTypedName","src":"9688:4:87","type":""}],"src":"9630:181:87"},{"body":{"nativeSrc":"9878:607:87","nodeType":"YulBlock","src":"9878:607:87","statements":[{"body":{"nativeSrc":"9927:16:87","nodeType":"YulBlock","src":"9927:16:87","statements":[{"expression":{"arguments":[{"kind":"number","nativeSrc":"9936:1:87","nodeType":"YulLiteral","src":"9936:1:87","type":"","value":"0"},{"kind":"number","nativeSrc":"9939:1:87","nodeType":"YulLiteral","src":"9939:1:87","type":"","value":"0"}],"functionName":{"name":"revert","nativeSrc":"9929:6:87","nodeType":"YulIdentifier","src":"9929:6:87"},"nativeSrc":"9929:12:87","nodeType":"YulFunctionCall","src":"9929:12:87"},"nativeSrc":"9929:12:87","nodeType":"YulExpressionStatement","src":"9929:12:87"}]},"condition":{"arguments":[{"arguments":[{"arguments":[{"name":"offset","nativeSrc":"9906:6:87","nodeType":"YulIdentifier","src":"9906:6:87"},{"kind":"number","nativeSrc":"9914:4:87","nodeType":"YulLiteral","src":"9914:4:87","type":"","value":"0x1f"}],"functionName":{"name":"add","nativeSrc":"9902:3:87","nodeType":"YulIdentifier","src":"9902:3:87"},"nativeSrc":"9902:17:87","nodeType":"YulFunctionCall","src":"9902:17:87"},{"name":"end","nativeSrc":"9921:3:87","nodeType":"YulIdentifier","src":"9921:3:87"}],"functionName":{"name":"slt","nativeSrc":"9898:3:87","nodeType":"YulIdentifier","src":"9898:3:87"},"nativeSrc":"9898:27:87","nodeType":"YulFunctionCall","src":"9898:27:87"}],"functionName":{"name":"iszero","nativeSrc":"9891:6:87","nodeType":"YulIdentifier","src":"9891:6:87"},"nativeSrc":"9891:35:87","nodeType":"YulFunctionCall","src":"9891:35:87"},"nativeSrc":"9888:55:87","nodeType":"YulIf","src":"9888:55:87"},{"nativeSrc":"9952:34:87","nodeType":"YulVariableDeclaration","src":"9952:34:87","value":{"arguments":[{"name":"offset","nativeSrc":"9979:6:87","nodeType":"YulIdentifier","src":"9979:6:87"}],"functionName":{"name":"calldataload","nativeSrc":"9966:12:87","nodeType":"YulIdentifier","src":"9966:12:87"},"nativeSrc":"9966:20:87","nodeType":"YulFunctionCall","src":"9966:20:87"},"variables":[{"name":"length","nativeSrc":"9956:6:87","nodeType":"YulTypedName","src":"9956:6:87","type":""}]},{"nativeSrc":"9995:73:87","nodeType":"YulVariableDeclaration","src":"9995:73:87","value":{"arguments":[{"arguments":[{"name":"length","nativeSrc":"10060:6:87","nodeType":"YulIdentifier","src":"10060:6:87"}],"functionName":{"name":"array_allocation_size_array_uint8_dyn","nativeSrc":"10022:37:87","nodeType":"YulIdentifier","src":"10022:37:87"},"nativeSrc":"10022:45:87","nodeType":"YulFunctionCall","src":"10022:45:87"}],"functionName":{"name":"allocate_memory","nativeSrc":"10006:15:87","nodeType":"YulIdentifier","src":"10006:15:87"},"nativeSrc":"10006:62:87","nodeType":"YulFunctionCall","src":"10006:62:87"},"variables":[{"name":"dst","nativeSrc":"9999:3:87","nodeType":"YulTypedName","src":"9999:3:87","type":""}]},{"nativeSrc":"10077:18:87","nodeType":"YulVariableDeclaration","src":"10077:18:87","value":{"name":"dst","nativeSrc":"10092:3:87","nodeType":"YulIdentifier","src":"10092:3:87"},"variables":[{"name":"array_1","nativeSrc":"10081:7:87","nodeType":"YulTypedName","src":"10081:7:87","type":""}]},{"expression":{"arguments":[{"name":"dst","nativeSrc":"10111:3:87","nodeType":"YulIdentifier","src":"10111:3:87"},{"name":"length","nativeSrc":"10116:6:87","nodeType":"YulIdentifier","src":"10116:6:87"}],"functionName":{"name":"mstore","nativeSrc":"10104:6:87","nodeType":"YulIdentifier","src":"10104:6:87"},"nativeSrc":"10104:19:87","nodeType":"YulFunctionCall","src":"10104:19:87"},"nativeSrc":"10104:19:87","nodeType":"YulExpressionStatement","src":"10104:19:87"},{"nativeSrc":"10132:21:87","nodeType":"YulAssignment","src":"10132:21:87","value":{"arguments":[{"name":"dst","nativeSrc":"10143:3:87","nodeType":"YulIdentifier","src":"10143:3:87"},{"kind":"number","nativeSrc":"10148:4:87","nodeType":"YulLiteral","src":"10148:4:87","type":"","value":"0x20"}],"functionName":{"name":"add","nativeSrc":"10139:3:87","nodeType":"YulIdentifier","src":"10139:3:87"},"nativeSrc":"10139:14:87","nodeType":"YulFunctionCall","src":"10139:14:87"},"variableNames":[{"name":"dst","nativeSrc":"10132:3:87","nodeType":"YulIdentifier","src":"10132:3:87"}]},{"nativeSrc":"10162:52:87","nodeType":"YulVariableDeclaration","src":"10162:52:87","value":{"arguments":[{"arguments":[{"name":"offset","nativeSrc":"10184:6:87","nodeType":"YulIdentifier","src":"10184:6:87"},{"arguments":[{"kind":"number","nativeSrc":"10196:1:87","nodeType":"YulLiteral","src":"10196:1:87","type":"","value":"5"},{"name":"length","nativeSrc":"10199:6:87","nodeType":"YulIdentifier","src":"10199:6:87"}],"functionName":{"name":"shl","nativeSrc":"10192:3:87","nodeType":"YulIdentifier","src":"10192:3:87"},"nativeSrc":"10192:14:87","nodeType":"YulFunctionCall","src":"10192:14:87"}],"functionName":{"name":"add","nativeSrc":"10180:3:87","nodeType":"YulIdentifier","src":"10180:3:87"},"nativeSrc":"10180:27:87","nodeType":"YulFunctionCall","src":"10180:27:87"},{"kind":"number","nativeSrc":"10209:4:87","nodeType":"YulLiteral","src":"10209:4:87","type":"","value":"0x20"}],"functionName":{"name":"add","nativeSrc":"10176:3:87","nodeType":"YulIdentifier","src":"10176:3:87"},"nativeSrc":"10176:38:87","nodeType":"YulFunctionCall","src":"10176:38:87"},"variables":[{"name":"srcEnd","nativeSrc":"10166:6:87","nodeType":"YulTypedName","src":"10166:6:87","type":""}]},{"body":{"nativeSrc":"10242:16:87","nodeType":"YulBlock","src":"10242:16:87","statements":[{"expression":{"arguments":[{"kind":"number","nativeSrc":"10251:1:87","nodeType":"YulLiteral","src":"10251:1:87","type":"","value":"0"},{"kind":"number","nativeSrc":"10254:1:87","nodeType":"YulLiteral","src":"10254:1:87","type":"","value":"0"}],"functionName":{"name":"revert","nativeSrc":"10244:6:87","nodeType":"YulIdentifier","src":"10244:6:87"},"nativeSrc":"10244:12:87","nodeType":"YulFunctionCall","src":"10244:12:87"},"nativeSrc":"10244:12:87","nodeType":"YulExpressionStatement","src":"10244:12:87"}]},"condition":{"arguments":[{"name":"srcEnd","nativeSrc":"10229:6:87","nodeType":"YulIdentifier","src":"10229:6:87"},{"name":"end","nativeSrc":"10237:3:87","nodeType":"YulIdentifier","src":"10237:3:87"}],"functionName":{"name":"gt","nativeSrc":"10226:2:87","nodeType":"YulIdentifier","src":"10226:2:87"},"nativeSrc":"10226:15:87","nodeType":"YulFunctionCall","src":"10226:15:87"},"nativeSrc":"10223:35:87","nodeType":"YulIf","src":"10223:35:87"},{"nativeSrc":"10267:28:87","nodeType":"YulVariableDeclaration","src":"10267:28:87","value":{"arguments":[{"name":"offset","nativeSrc":"10282:6:87","nodeType":"YulIdentifier","src":"10282:6:87"},{"kind":"number","nativeSrc":"10290:4:87","nodeType":"YulLiteral","src":"10290:4:87","type":"","value":"0x20"}],"functionName":{"name":"add","nativeSrc":"10278:3:87","nodeType":"YulIdentifier","src":"10278:3:87"},"nativeSrc":"10278:17:87","nodeType":"YulFunctionCall","src":"10278:17:87"},"variables":[{"name":"src","nativeSrc":"10271:3:87","nodeType":"YulTypedName","src":"10271:3:87","type":""}]},{"body":{"nativeSrc":"10362:92:87","nodeType":"YulBlock","src":"10362:92:87","statements":[{"expression":{"arguments":[{"name":"dst","nativeSrc":"10383:3:87","nodeType":"YulIdentifier","src":"10383:3:87"},{"arguments":[{"name":"src","nativeSrc":"10405:3:87","nodeType":"YulIdentifier","src":"10405:3:87"}],"functionName":{"name":"abi_decode_uint8","nativeSrc":"10388:16:87","nodeType":"YulIdentifier","src":"10388:16:87"},"nativeSrc":"10388:21:87","nodeType":"YulFunctionCall","src":"10388:21:87"}],"functionName":{"name":"mstore","nativeSrc":"10376:6:87","nodeType":"YulIdentifier","src":"10376:6:87"},"nativeSrc":"10376:34:87","nodeType":"YulFunctionCall","src":"10376:34:87"},"nativeSrc":"10376:34:87","nodeType":"YulExpressionStatement","src":"10376:34:87"},{"nativeSrc":"10423:21:87","nodeType":"YulAssignment","src":"10423:21:87","value":{"arguments":[{"name":"dst","nativeSrc":"10434:3:87","nodeType":"YulIdentifier","src":"10434:3:87"},{"kind":"number","nativeSrc":"10439:4:87","nodeType":"YulLiteral","src":"10439:4:87","type":"","value":"0x20"}],"functionName":{"name":"add","nativeSrc":"10430:3:87","nodeType":"YulIdentifier","src":"10430:3:87"},"nativeSrc":"10430:14:87","nodeType":"YulFunctionCall","src":"10430:14:87"},"variableNames":[{"name":"dst","nativeSrc":"10423:3:87","nodeType":"YulIdentifier","src":"10423:3:87"}]}]},"condition":{"arguments":[{"name":"src","nativeSrc":"10315:3:87","nodeType":"YulIdentifier","src":"10315:3:87"},{"name":"srcEnd","nativeSrc":"10320:6:87","nodeType":"YulIdentifier","src":"10320:6:87"}],"functionName":{"name":"lt","nativeSrc":"10312:2:87","nodeType":"YulIdentifier","src":"10312:2:87"},"nativeSrc":"10312:15:87","nodeType":"YulFunctionCall","src":"10312:15:87"},"nativeSrc":"10304:150:87","nodeType":"YulForLoop","post":{"nativeSrc":"10328:25:87","nodeType":"YulBlock","src":"10328:25:87","statements":[{"nativeSrc":"10330:21:87","nodeType":"YulAssignment","src":"10330:21:87","value":{"arguments":[{"name":"src","nativeSrc":"10341:3:87","nodeType":"YulIdentifier","src":"10341:3:87"},{"kind":"number","nativeSrc":"10346:4:87","nodeType":"YulLiteral","src":"10346:4:87","type":"","value":"0x20"}],"functionName":{"name":"add","nativeSrc":"10337:3:87","nodeType":"YulIdentifier","src":"10337:3:87"},"nativeSrc":"10337:14:87","nodeType":"YulFunctionCall","src":"10337:14:87"},"variableNames":[{"name":"src","nativeSrc":"10330:3:87","nodeType":"YulIdentifier","src":"10330:3:87"}]}]},"pre":{"nativeSrc":"10308:3:87","nodeType":"YulBlock","src":"10308:3:87","statements":[]},"src":"10304:150:87"},{"nativeSrc":"10463:16:87","nodeType":"YulAssignment","src":"10463:16:87","value":{"name":"array_1","nativeSrc":"10472:7:87","nodeType":"YulIdentifier","src":"10472:7:87"},"variableNames":[{"name":"array","nativeSrc":"10463:5:87","nodeType":"YulIdentifier","src":"10463:5:87"}]}]},"name":"abi_decode_array_uint8_dyn","nativeSrc":"9816:669:87","nodeType":"YulFunctionDefinition","parameters":[{"name":"offset","nativeSrc":"9852:6:87","nodeType":"YulTypedName","src":"9852:6:87","type":""},{"name":"end","nativeSrc":"9860:3:87","nodeType":"YulTypedName","src":"9860:3:87","type":""}],"returnVariables":[{"name":"array","nativeSrc":"9868:5:87","nodeType":"YulTypedName","src":"9868:5:87","type":""}],"src":"9816:669:87"},{"body":{"nativeSrc":"10583:251:87","nodeType":"YulBlock","src":"10583:251:87","statements":[{"body":{"nativeSrc":"10629:16:87","nodeType":"YulBlock","src":"10629:16:87","statements":[{"expression":{"arguments":[{"kind":"number","nativeSrc":"10638:1:87","nodeType":"YulLiteral","src":"10638:1:87","type":"","value":"0"},{"kind":"number","nativeSrc":"10641:1:87","nodeType":"YulLiteral","src":"10641:1:87","type":"","value":"0"}],"functionName":{"name":"revert","nativeSrc":"10631:6:87","nodeType":"YulIdentifier","src":"10631:6:87"},"nativeSrc":"10631:12:87","nodeType":"YulFunctionCall","src":"10631:12:87"},"nativeSrc":"10631:12:87","nodeType":"YulExpressionStatement","src":"10631:12:87"}]},"condition":{"arguments":[{"arguments":[{"name":"dataEnd","nativeSrc":"10604:7:87","nodeType":"YulIdentifier","src":"10604:7:87"},{"name":"headStart","nativeSrc":"10613:9:87","nodeType":"YulIdentifier","src":"10613:9:87"}],"functionName":{"name":"sub","nativeSrc":"10600:3:87","nodeType":"YulIdentifier","src":"10600:3:87"},"nativeSrc":"10600:23:87","nodeType":"YulFunctionCall","src":"10600:23:87"},{"kind":"number","nativeSrc":"10625:2:87","nodeType":"YulLiteral","src":"10625:2:87","type":"","value":"32"}],"functionName":{"name":"slt","nativeSrc":"10596:3:87","nodeType":"YulIdentifier","src":"10596:3:87"},"nativeSrc":"10596:32:87","nodeType":"YulFunctionCall","src":"10596:32:87"},"nativeSrc":"10593:52:87","nodeType":"YulIf","src":"10593:52:87"},{"nativeSrc":"10654:37:87","nodeType":"YulVariableDeclaration","src":"10654:37:87","value":{"arguments":[{"name":"headStart","nativeSrc":"10681:9:87","nodeType":"YulIdentifier","src":"10681:9:87"}],"functionName":{"name":"calldataload","nativeSrc":"10668:12:87","nodeType":"YulIdentifier","src":"10668:12:87"},"nativeSrc":"10668:23:87","nodeType":"YulFunctionCall","src":"10668:23:87"},"variables":[{"name":"offset","nativeSrc":"10658:6:87","nodeType":"YulTypedName","src":"10658:6:87","type":""}]},{"body":{"nativeSrc":"10734:16:87","nodeType":"YulBlock","src":"10734:16:87","statements":[{"expression":{"arguments":[{"kind":"number","nativeSrc":"10743:1:87","nodeType":"YulLiteral","src":"10743:1:87","type":"","value":"0"},{"kind":"number","nativeSrc":"10746:1:87","nodeType":"YulLiteral","src":"10746:1:87","type":"","value":"0"}],"functionName":{"name":"revert","nativeSrc":"10736:6:87","nodeType":"YulIdentifier","src":"10736:6:87"},"nativeSrc":"10736:12:87","nodeType":"YulFunctionCall","src":"10736:12:87"},"nativeSrc":"10736:12:87","nodeType":"YulExpressionStatement","src":"10736:12:87"}]},"condition":{"arguments":[{"name":"offset","nativeSrc":"10706:6:87","nodeType":"YulIdentifier","src":"10706:6:87"},{"kind":"number","nativeSrc":"10714:18:87","nodeType":"YulLiteral","src":"10714:18:87","type":"","value":"0xffffffffffffffff"}],"functionName":{"name":"gt","nativeSrc":"10703:2:87","nodeType":"YulIdentifier","src":"10703:2:87"},"nativeSrc":"10703:30:87","nodeType":"YulFunctionCall","src":"10703:30:87"},"nativeSrc":"10700:50:87","nodeType":"YulIf","src":"10700:50:87"},{"nativeSrc":"10759:69:87","nodeType":"YulAssignment","src":"10759:69:87","value":{"arguments":[{"arguments":[{"name":"headStart","nativeSrc":"10800:9:87","nodeType":"YulIdentifier","src":"10800:9:87"},{"name":"offset","nativeSrc":"10811:6:87","nodeType":"YulIdentifier","src":"10811:6:87"}],"functionName":{"name":"add","nativeSrc":"10796:3:87","nodeType":"YulIdentifier","src":"10796:3:87"},"nativeSrc":"10796:22:87","nodeType":"YulFunctionCall","src":"10796:22:87"},{"name":"dataEnd","nativeSrc":"10820:7:87","nodeType":"YulIdentifier","src":"10820:7:87"}],"functionName":{"name":"abi_decode_array_uint8_dyn","nativeSrc":"10769:26:87","nodeType":"YulIdentifier","src":"10769:26:87"},"nativeSrc":"10769:59:87","nodeType":"YulFunctionCall","src":"10769:59:87"},"variableNames":[{"name":"value0","nativeSrc":"10759:6:87","nodeType":"YulIdentifier","src":"10759:6:87"}]}]},"name":"abi_decode_tuple_t_array$_t_uint8_$dyn_memory_ptr","nativeSrc":"10490:344:87","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nativeSrc":"10549:9:87","nodeType":"YulTypedName","src":"10549:9:87","type":""},{"name":"dataEnd","nativeSrc":"10560:7:87","nodeType":"YulTypedName","src":"10560:7:87","type":""}],"returnVariables":[{"name":"value0","nativeSrc":"10572:6:87","nodeType":"YulTypedName","src":"10572:6:87","type":""}],"src":"10490:344:87"},{"body":{"nativeSrc":"10940:156:87","nodeType":"YulBlock","src":"10940:156:87","statements":[{"body":{"nativeSrc":"10986:16:87","nodeType":"YulBlock","src":"10986:16:87","statements":[{"expression":{"arguments":[{"kind":"number","nativeSrc":"10995:1:87","nodeType":"YulLiteral","src":"10995:1:87","type":"","value":"0"},{"kind":"number","nativeSrc":"10998:1:87","nodeType":"YulLiteral","src":"10998:1:87","type":"","value":"0"}],"functionName":{"name":"revert","nativeSrc":"10988:6:87","nodeType":"YulIdentifier","src":"10988:6:87"},"nativeSrc":"10988:12:87","nodeType":"YulFunctionCall","src":"10988:12:87"},"nativeSrc":"10988:12:87","nodeType":"YulExpressionStatement","src":"10988:12:87"}]},"condition":{"arguments":[{"arguments":[{"name":"dataEnd","nativeSrc":"10961:7:87","nodeType":"YulIdentifier","src":"10961:7:87"},{"name":"headStart","nativeSrc":"10970:9:87","nodeType":"YulIdentifier","src":"10970:9:87"}],"functionName":{"name":"sub","nativeSrc":"10957:3:87","nodeType":"YulIdentifier","src":"10957:3:87"},"nativeSrc":"10957:23:87","nodeType":"YulFunctionCall","src":"10957:23:87"},{"kind":"number","nativeSrc":"10982:2:87","nodeType":"YulLiteral","src":"10982:2:87","type":"","value":"32"}],"functionName":{"name":"slt","nativeSrc":"10953:3:87","nodeType":"YulIdentifier","src":"10953:3:87"},"nativeSrc":"10953:32:87","nodeType":"YulFunctionCall","src":"10953:32:87"},"nativeSrc":"10950:52:87","nodeType":"YulIf","src":"10950:52:87"},{"nativeSrc":"11011:14:87","nodeType":"YulVariableDeclaration","src":"11011:14:87","value":{"kind":"number","nativeSrc":"11024:1:87","nodeType":"YulLiteral","src":"11024:1:87","type":"","value":"0"},"variables":[{"name":"value","nativeSrc":"11015:5:87","nodeType":"YulTypedName","src":"11015:5:87","type":""}]},{"nativeSrc":"11034:32:87","nodeType":"YulAssignment","src":"11034:32:87","value":{"arguments":[{"name":"headStart","nativeSrc":"11056:9:87","nodeType":"YulIdentifier","src":"11056:9:87"}],"functionName":{"name":"calldataload","nativeSrc":"11043:12:87","nodeType":"YulIdentifier","src":"11043:12:87"},"nativeSrc":"11043:23:87","nodeType":"YulFunctionCall","src":"11043:23:87"},"variableNames":[{"name":"value","nativeSrc":"11034:5:87","nodeType":"YulIdentifier","src":"11034:5:87"}]},{"nativeSrc":"11075:15:87","nodeType":"YulAssignment","src":"11075:15:87","value":{"name":"value","nativeSrc":"11085:5:87","nodeType":"YulIdentifier","src":"11085:5:87"},"variableNames":[{"name":"value0","nativeSrc":"11075:6:87","nodeType":"YulIdentifier","src":"11075:6:87"}]}]},"name":"abi_decode_tuple_t_userDefinedValueType$_SlotIndex_$17382","nativeSrc":"10839:257:87","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nativeSrc":"10906:9:87","nodeType":"YulTypedName","src":"10906:9:87","type":""},{"name":"dataEnd","nativeSrc":"10917:7:87","nodeType":"YulTypedName","src":"10917:7:87","type":""}],"returnVariables":[{"name":"value0","nativeSrc":"10929:6:87","nodeType":"YulTypedName","src":"10929:6:87","type":""}],"src":"10839:257:87"},{"body":{"nativeSrc":"11183:229:87","nodeType":"YulBlock","src":"11183:229:87","statements":[{"body":{"nativeSrc":"11229:16:87","nodeType":"YulBlock","src":"11229:16:87","statements":[{"expression":{"arguments":[{"kind":"number","nativeSrc":"11238:1:87","nodeType":"YulLiteral","src":"11238:1:87","type":"","value":"0"},{"kind":"number","nativeSrc":"11241:1:87","nodeType":"YulLiteral","src":"11241:1:87","type":"","value":"0"}],"functionName":{"name":"revert","nativeSrc":"11231:6:87","nodeType":"YulIdentifier","src":"11231:6:87"},"nativeSrc":"11231:12:87","nodeType":"YulFunctionCall","src":"11231:12:87"},"nativeSrc":"11231:12:87","nodeType":"YulExpressionStatement","src":"11231:12:87"}]},"condition":{"arguments":[{"arguments":[{"name":"dataEnd","nativeSrc":"11204:7:87","nodeType":"YulIdentifier","src":"11204:7:87"},{"name":"headStart","nativeSrc":"11213:9:87","nodeType":"YulIdentifier","src":"11213:9:87"}],"functionName":{"name":"sub","nativeSrc":"11200:3:87","nodeType":"YulIdentifier","src":"11200:3:87"},"nativeSrc":"11200:23:87","nodeType":"YulFunctionCall","src":"11200:23:87"},{"kind":"number","nativeSrc":"11225:2:87","nodeType":"YulLiteral","src":"11225:2:87","type":"","value":"64"}],"functionName":{"name":"slt","nativeSrc":"11196:3:87","nodeType":"YulIdentifier","src":"11196:3:87"},"nativeSrc":"11196:32:87","nodeType":"YulFunctionCall","src":"11196:32:87"},"nativeSrc":"11193:52:87","nodeType":"YulIf","src":"11193:52:87"},{"nativeSrc":"11254:37:87","nodeType":"YulAssignment","src":"11254:37:87","value":{"arguments":[{"name":"headStart","nativeSrc":"11281:9:87","nodeType":"YulIdentifier","src":"11281:9:87"}],"functionName":{"name":"abi_decode_uint8","nativeSrc":"11264:16:87","nodeType":"YulIdentifier","src":"11264:16:87"},"nativeSrc":"11264:27:87","nodeType":"YulFunctionCall","src":"11264:27:87"},"variableNames":[{"name":"value0","nativeSrc":"11254:6:87","nodeType":"YulIdentifier","src":"11254:6:87"}]},{"nativeSrc":"11300:45:87","nodeType":"YulVariableDeclaration","src":"11300:45:87","value":{"arguments":[{"arguments":[{"name":"headStart","nativeSrc":"11330:9:87","nodeType":"YulIdentifier","src":"11330:9:87"},{"kind":"number","nativeSrc":"11341:2:87","nodeType":"YulLiteral","src":"11341:2:87","type":"","value":"32"}],"functionName":{"name":"add","nativeSrc":"11326:3:87","nodeType":"YulIdentifier","src":"11326:3:87"},"nativeSrc":"11326:18:87","nodeType":"YulFunctionCall","src":"11326:18:87"}],"functionName":{"name":"calldataload","nativeSrc":"11313:12:87","nodeType":"YulIdentifier","src":"11313:12:87"},"nativeSrc":"11313:32:87","nodeType":"YulFunctionCall","src":"11313:32:87"},"variables":[{"name":"value","nativeSrc":"11304:5:87","nodeType":"YulTypedName","src":"11304:5:87","type":""}]},{"expression":{"arguments":[{"name":"value","nativeSrc":"11376:5:87","nodeType":"YulIdentifier","src":"11376:5:87"}],"functionName":{"name":"validator_revert_bool","nativeSrc":"11354:21:87","nodeType":"YulIdentifier","src":"11354:21:87"},"nativeSrc":"11354:28:87","nodeType":"YulFunctionCall","src":"11354:28:87"},"nativeSrc":"11354:28:87","nodeType":"YulExpressionStatement","src":"11354:28:87"},{"nativeSrc":"11391:15:87","nodeType":"YulAssignment","src":"11391:15:87","value":{"name":"value","nativeSrc":"11401:5:87","nodeType":"YulIdentifier","src":"11401:5:87"},"variableNames":[{"name":"value1","nativeSrc":"11391:6:87","nodeType":"YulIdentifier","src":"11391:6:87"}]}]},"name":"abi_decode_tuple_t_uint8t_bool","nativeSrc":"11101:311:87","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nativeSrc":"11141:9:87","nodeType":"YulTypedName","src":"11141:9:87","type":""},{"name":"dataEnd","nativeSrc":"11152:7:87","nodeType":"YulTypedName","src":"11152:7:87","type":""}],"returnVariables":[{"name":"value0","nativeSrc":"11164:6:87","nodeType":"YulTypedName","src":"11164:6:87","type":""},{"name":"value1","nativeSrc":"11172:6:87","nodeType":"YulTypedName","src":"11172:6:87","type":""}],"src":"11101:311:87"},{"body":{"nativeSrc":"11474:85:87","nodeType":"YulBlock","src":"11474:85:87","statements":[{"nativeSrc":"11484:29:87","nodeType":"YulAssignment","src":"11484:29:87","value":{"arguments":[{"name":"offset","nativeSrc":"11506:6:87","nodeType":"YulIdentifier","src":"11506:6:87"}],"functionName":{"name":"calldataload","nativeSrc":"11493:12:87","nodeType":"YulIdentifier","src":"11493:12:87"},"nativeSrc":"11493:20:87","nodeType":"YulFunctionCall","src":"11493:20:87"},"variableNames":[{"name":"value","nativeSrc":"11484:5:87","nodeType":"YulIdentifier","src":"11484:5:87"}]},{"expression":{"arguments":[{"name":"value","nativeSrc":"11547:5:87","nodeType":"YulIdentifier","src":"11547:5:87"}],"functionName":{"name":"validator_revert_address","nativeSrc":"11522:24:87","nodeType":"YulIdentifier","src":"11522:24:87"},"nativeSrc":"11522:31:87","nodeType":"YulFunctionCall","src":"11522:31:87"},"nativeSrc":"11522:31:87","nodeType":"YulExpressionStatement","src":"11522:31:87"}]},"name":"abi_decode_contract_IERC20","nativeSrc":"11417:142:87","nodeType":"YulFunctionDefinition","parameters":[{"name":"offset","nativeSrc":"11453:6:87","nodeType":"YulTypedName","src":"11453:6:87","type":""}],"returnVariables":[{"name":"value","nativeSrc":"11464:5:87","nodeType":"YulTypedName","src":"11464:5:87","type":""}],"src":"11417:142:87"},{"body":{"nativeSrc":"11645:678:87","nodeType":"YulBlock","src":"11645:678:87","statements":[{"body":{"nativeSrc":"11694:16:87","nodeType":"YulBlock","src":"11694:16:87","statements":[{"expression":{"arguments":[{"kind":"number","nativeSrc":"11703:1:87","nodeType":"YulLiteral","src":"11703:1:87","type":"","value":"0"},{"kind":"number","nativeSrc":"11706:1:87","nodeType":"YulLiteral","src":"11706:1:87","type":"","value":"0"}],"functionName":{"name":"revert","nativeSrc":"11696:6:87","nodeType":"YulIdentifier","src":"11696:6:87"},"nativeSrc":"11696:12:87","nodeType":"YulFunctionCall","src":"11696:12:87"},"nativeSrc":"11696:12:87","nodeType":"YulExpressionStatement","src":"11696:12:87"}]},"condition":{"arguments":[{"arguments":[{"arguments":[{"name":"offset","nativeSrc":"11673:6:87","nodeType":"YulIdentifier","src":"11673:6:87"},{"kind":"number","nativeSrc":"11681:4:87","nodeType":"YulLiteral","src":"11681:4:87","type":"","value":"0x1f"}],"functionName":{"name":"add","nativeSrc":"11669:3:87","nodeType":"YulIdentifier","src":"11669:3:87"},"nativeSrc":"11669:17:87","nodeType":"YulFunctionCall","src":"11669:17:87"},{"name":"end","nativeSrc":"11688:3:87","nodeType":"YulIdentifier","src":"11688:3:87"}],"functionName":{"name":"slt","nativeSrc":"11665:3:87","nodeType":"YulIdentifier","src":"11665:3:87"},"nativeSrc":"11665:27:87","nodeType":"YulFunctionCall","src":"11665:27:87"}],"functionName":{"name":"iszero","nativeSrc":"11658:6:87","nodeType":"YulIdentifier","src":"11658:6:87"},"nativeSrc":"11658:35:87","nodeType":"YulFunctionCall","src":"11658:35:87"},"nativeSrc":"11655:55:87","nodeType":"YulIf","src":"11655:55:87"},{"nativeSrc":"11719:34:87","nodeType":"YulVariableDeclaration","src":"11719:34:87","value":{"arguments":[{"name":"offset","nativeSrc":"11746:6:87","nodeType":"YulIdentifier","src":"11746:6:87"}],"functionName":{"name":"calldataload","nativeSrc":"11733:12:87","nodeType":"YulIdentifier","src":"11733:12:87"},"nativeSrc":"11733:20:87","nodeType":"YulFunctionCall","src":"11733:20:87"},"variables":[{"name":"length","nativeSrc":"11723:6:87","nodeType":"YulTypedName","src":"11723:6:87","type":""}]},{"nativeSrc":"11762:73:87","nodeType":"YulVariableDeclaration","src":"11762:73:87","value":{"arguments":[{"arguments":[{"name":"length","nativeSrc":"11827:6:87","nodeType":"YulIdentifier","src":"11827:6:87"}],"functionName":{"name":"array_allocation_size_array_uint8_dyn","nativeSrc":"11789:37:87","nodeType":"YulIdentifier","src":"11789:37:87"},"nativeSrc":"11789:45:87","nodeType":"YulFunctionCall","src":"11789:45:87"}],"functionName":{"name":"allocate_memory","nativeSrc":"11773:15:87","nodeType":"YulIdentifier","src":"11773:15:87"},"nativeSrc":"11773:62:87","nodeType":"YulFunctionCall","src":"11773:62:87"},"variables":[{"name":"dst","nativeSrc":"11766:3:87","nodeType":"YulTypedName","src":"11766:3:87","type":""}]},{"nativeSrc":"11844:18:87","nodeType":"YulVariableDeclaration","src":"11844:18:87","value":{"name":"dst","nativeSrc":"11859:3:87","nodeType":"YulIdentifier","src":"11859:3:87"},"variables":[{"name":"array_1","nativeSrc":"11848:7:87","nodeType":"YulTypedName","src":"11848:7:87","type":""}]},{"expression":{"arguments":[{"name":"dst","nativeSrc":"11878:3:87","nodeType":"YulIdentifier","src":"11878:3:87"},{"name":"length","nativeSrc":"11883:6:87","nodeType":"YulIdentifier","src":"11883:6:87"}],"functionName":{"name":"mstore","nativeSrc":"11871:6:87","nodeType":"YulIdentifier","src":"11871:6:87"},"nativeSrc":"11871:19:87","nodeType":"YulFunctionCall","src":"11871:19:87"},"nativeSrc":"11871:19:87","nodeType":"YulExpressionStatement","src":"11871:19:87"},{"nativeSrc":"11899:21:87","nodeType":"YulAssignment","src":"11899:21:87","value":{"arguments":[{"name":"dst","nativeSrc":"11910:3:87","nodeType":"YulIdentifier","src":"11910:3:87"},{"kind":"number","nativeSrc":"11915:4:87","nodeType":"YulLiteral","src":"11915:4:87","type":"","value":"0x20"}],"functionName":{"name":"add","nativeSrc":"11906:3:87","nodeType":"YulIdentifier","src":"11906:3:87"},"nativeSrc":"11906:14:87","nodeType":"YulFunctionCall","src":"11906:14:87"},"variableNames":[{"name":"dst","nativeSrc":"11899:3:87","nodeType":"YulIdentifier","src":"11899:3:87"}]},{"nativeSrc":"11929:52:87","nodeType":"YulVariableDeclaration","src":"11929:52:87","value":{"arguments":[{"arguments":[{"name":"offset","nativeSrc":"11951:6:87","nodeType":"YulIdentifier","src":"11951:6:87"},{"arguments":[{"kind":"number","nativeSrc":"11963:1:87","nodeType":"YulLiteral","src":"11963:1:87","type":"","value":"5"},{"name":"length","nativeSrc":"11966:6:87","nodeType":"YulIdentifier","src":"11966:6:87"}],"functionName":{"name":"shl","nativeSrc":"11959:3:87","nodeType":"YulIdentifier","src":"11959:3:87"},"nativeSrc":"11959:14:87","nodeType":"YulFunctionCall","src":"11959:14:87"}],"functionName":{"name":"add","nativeSrc":"11947:3:87","nodeType":"YulIdentifier","src":"11947:3:87"},"nativeSrc":"11947:27:87","nodeType":"YulFunctionCall","src":"11947:27:87"},{"kind":"number","nativeSrc":"11976:4:87","nodeType":"YulLiteral","src":"11976:4:87","type":"","value":"0x20"}],"functionName":{"name":"add","nativeSrc":"11943:3:87","nodeType":"YulIdentifier","src":"11943:3:87"},"nativeSrc":"11943:38:87","nodeType":"YulFunctionCall","src":"11943:38:87"},"variables":[{"name":"srcEnd","nativeSrc":"11933:6:87","nodeType":"YulTypedName","src":"11933:6:87","type":""}]},{"body":{"nativeSrc":"12009:16:87","nodeType":"YulBlock","src":"12009:16:87","statements":[{"expression":{"arguments":[{"kind":"number","nativeSrc":"12018:1:87","nodeType":"YulLiteral","src":"12018:1:87","type":"","value":"0"},{"kind":"number","nativeSrc":"12021:1:87","nodeType":"YulLiteral","src":"12021:1:87","type":"","value":"0"}],"functionName":{"name":"revert","nativeSrc":"12011:6:87","nodeType":"YulIdentifier","src":"12011:6:87"},"nativeSrc":"12011:12:87","nodeType":"YulFunctionCall","src":"12011:12:87"},"nativeSrc":"12011:12:87","nodeType":"YulExpressionStatement","src":"12011:12:87"}]},"condition":{"arguments":[{"name":"srcEnd","nativeSrc":"11996:6:87","nodeType":"YulIdentifier","src":"11996:6:87"},{"name":"end","nativeSrc":"12004:3:87","nodeType":"YulIdentifier","src":"12004:3:87"}],"functionName":{"name":"gt","nativeSrc":"11993:2:87","nodeType":"YulIdentifier","src":"11993:2:87"},"nativeSrc":"11993:15:87","nodeType":"YulFunctionCall","src":"11993:15:87"},"nativeSrc":"11990:35:87","nodeType":"YulIf","src":"11990:35:87"},{"nativeSrc":"12034:28:87","nodeType":"YulVariableDeclaration","src":"12034:28:87","value":{"arguments":[{"name":"offset","nativeSrc":"12049:6:87","nodeType":"YulIdentifier","src":"12049:6:87"},{"kind":"number","nativeSrc":"12057:4:87","nodeType":"YulLiteral","src":"12057:4:87","type":"","value":"0x20"}],"functionName":{"name":"add","nativeSrc":"12045:3:87","nodeType":"YulIdentifier","src":"12045:3:87"},"nativeSrc":"12045:17:87","nodeType":"YulFunctionCall","src":"12045:17:87"},"variables":[{"name":"src","nativeSrc":"12038:3:87","nodeType":"YulTypedName","src":"12038:3:87","type":""}]},{"body":{"nativeSrc":"12129:163:87","nodeType":"YulBlock","src":"12129:163:87","statements":[{"nativeSrc":"12143:30:87","nodeType":"YulVariableDeclaration","src":"12143:30:87","value":{"arguments":[{"name":"src","nativeSrc":"12169:3:87","nodeType":"YulIdentifier","src":"12169:3:87"}],"functionName":{"name":"calldataload","nativeSrc":"12156:12:87","nodeType":"YulIdentifier","src":"12156:12:87"},"nativeSrc":"12156:17:87","nodeType":"YulFunctionCall","src":"12156:17:87"},"variables":[{"name":"value","nativeSrc":"12147:5:87","nodeType":"YulTypedName","src":"12147:5:87","type":""}]},{"expression":{"arguments":[{"name":"value","nativeSrc":"12211:5:87","nodeType":"YulIdentifier","src":"12211:5:87"}],"functionName":{"name":"validator_revert_address","nativeSrc":"12186:24:87","nodeType":"YulIdentifier","src":"12186:24:87"},"nativeSrc":"12186:31:87","nodeType":"YulFunctionCall","src":"12186:31:87"},"nativeSrc":"12186:31:87","nodeType":"YulExpressionStatement","src":"12186:31:87"},{"expression":{"arguments":[{"name":"dst","nativeSrc":"12237:3:87","nodeType":"YulIdentifier","src":"12237:3:87"},{"name":"value","nativeSrc":"12242:5:87","nodeType":"YulIdentifier","src":"12242:5:87"}],"functionName":{"name":"mstore","nativeSrc":"12230:6:87","nodeType":"YulIdentifier","src":"12230:6:87"},"nativeSrc":"12230:18:87","nodeType":"YulFunctionCall","src":"12230:18:87"},"nativeSrc":"12230:18:87","nodeType":"YulExpressionStatement","src":"12230:18:87"},{"nativeSrc":"12261:21:87","nodeType":"YulAssignment","src":"12261:21:87","value":{"arguments":[{"name":"dst","nativeSrc":"12272:3:87","nodeType":"YulIdentifier","src":"12272:3:87"},{"kind":"number","nativeSrc":"12277:4:87","nodeType":"YulLiteral","src":"12277:4:87","type":"","value":"0x20"}],"functionName":{"name":"add","nativeSrc":"12268:3:87","nodeType":"YulIdentifier","src":"12268:3:87"},"nativeSrc":"12268:14:87","nodeType":"YulFunctionCall","src":"12268:14:87"},"variableNames":[{"name":"dst","nativeSrc":"12261:3:87","nodeType":"YulIdentifier","src":"12261:3:87"}]}]},"condition":{"arguments":[{"name":"src","nativeSrc":"12082:3:87","nodeType":"YulIdentifier","src":"12082:3:87"},{"name":"srcEnd","nativeSrc":"12087:6:87","nodeType":"YulIdentifier","src":"12087:6:87"}],"functionName":{"name":"lt","nativeSrc":"12079:2:87","nodeType":"YulIdentifier","src":"12079:2:87"},"nativeSrc":"12079:15:87","nodeType":"YulFunctionCall","src":"12079:15:87"},"nativeSrc":"12071:221:87","nodeType":"YulForLoop","post":{"nativeSrc":"12095:25:87","nodeType":"YulBlock","src":"12095:25:87","statements":[{"nativeSrc":"12097:21:87","nodeType":"YulAssignment","src":"12097:21:87","value":{"arguments":[{"name":"src","nativeSrc":"12108:3:87","nodeType":"YulIdentifier","src":"12108:3:87"},{"kind":"number","nativeSrc":"12113:4:87","nodeType":"YulLiteral","src":"12113:4:87","type":"","value":"0x20"}],"functionName":{"name":"add","nativeSrc":"12104:3:87","nodeType":"YulIdentifier","src":"12104:3:87"},"nativeSrc":"12104:14:87","nodeType":"YulFunctionCall","src":"12104:14:87"},"variableNames":[{"name":"src","nativeSrc":"12097:3:87","nodeType":"YulIdentifier","src":"12097:3:87"}]}]},"pre":{"nativeSrc":"12075:3:87","nodeType":"YulBlock","src":"12075:3:87","statements":[]},"src":"12071:221:87"},{"nativeSrc":"12301:16:87","nodeType":"YulAssignment","src":"12301:16:87","value":{"name":"array_1","nativeSrc":"12310:7:87","nodeType":"YulIdentifier","src":"12310:7:87"},"variableNames":[{"name":"array","nativeSrc":"12301:5:87","nodeType":"YulIdentifier","src":"12301:5:87"}]}]},"name":"abi_decode_array_contract_IInvestStrategy_dyn","nativeSrc":"11564:759:87","nodeType":"YulFunctionDefinition","parameters":[{"name":"offset","nativeSrc":"11619:6:87","nodeType":"YulTypedName","src":"11619:6:87","type":""},{"name":"end","nativeSrc":"11627:3:87","nodeType":"YulTypedName","src":"11627:3:87","type":""}],"returnVariables":[{"name":"array","nativeSrc":"11635:5:87","nodeType":"YulTypedName","src":"11635:5:87","type":""}],"src":"11564:759:87"},{"body":{"nativeSrc":"12390:761:87","nodeType":"YulBlock","src":"12390:761:87","statements":[{"body":{"nativeSrc":"12439:16:87","nodeType":"YulBlock","src":"12439:16:87","statements":[{"expression":{"arguments":[{"kind":"number","nativeSrc":"12448:1:87","nodeType":"YulLiteral","src":"12448:1:87","type":"","value":"0"},{"kind":"number","nativeSrc":"12451:1:87","nodeType":"YulLiteral","src":"12451:1:87","type":"","value":"0"}],"functionName":{"name":"revert","nativeSrc":"12441:6:87","nodeType":"YulIdentifier","src":"12441:6:87"},"nativeSrc":"12441:12:87","nodeType":"YulFunctionCall","src":"12441:12:87"},"nativeSrc":"12441:12:87","nodeType":"YulExpressionStatement","src":"12441:12:87"}]},"condition":{"arguments":[{"arguments":[{"arguments":[{"name":"offset","nativeSrc":"12418:6:87","nodeType":"YulIdentifier","src":"12418:6:87"},{"kind":"number","nativeSrc":"12426:4:87","nodeType":"YulLiteral","src":"12426:4:87","type":"","value":"0x1f"}],"functionName":{"name":"add","nativeSrc":"12414:3:87","nodeType":"YulIdentifier","src":"12414:3:87"},"nativeSrc":"12414:17:87","nodeType":"YulFunctionCall","src":"12414:17:87"},{"name":"end","nativeSrc":"12433:3:87","nodeType":"YulIdentifier","src":"12433:3:87"}],"functionName":{"name":"slt","nativeSrc":"12410:3:87","nodeType":"YulIdentifier","src":"12410:3:87"},"nativeSrc":"12410:27:87","nodeType":"YulFunctionCall","src":"12410:27:87"}],"functionName":{"name":"iszero","nativeSrc":"12403:6:87","nodeType":"YulIdentifier","src":"12403:6:87"},"nativeSrc":"12403:35:87","nodeType":"YulFunctionCall","src":"12403:35:87"},"nativeSrc":"12400:55:87","nodeType":"YulIf","src":"12400:55:87"},{"nativeSrc":"12464:34:87","nodeType":"YulVariableDeclaration","src":"12464:34:87","value":{"arguments":[{"name":"offset","nativeSrc":"12491:6:87","nodeType":"YulIdentifier","src":"12491:6:87"}],"functionName":{"name":"calldataload","nativeSrc":"12478:12:87","nodeType":"YulIdentifier","src":"12478:12:87"},"nativeSrc":"12478:20:87","nodeType":"YulFunctionCall","src":"12478:20:87"},"variables":[{"name":"length","nativeSrc":"12468:6:87","nodeType":"YulTypedName","src":"12468:6:87","type":""}]},{"nativeSrc":"12507:73:87","nodeType":"YulVariableDeclaration","src":"12507:73:87","value":{"arguments":[{"arguments":[{"name":"length","nativeSrc":"12572:6:87","nodeType":"YulIdentifier","src":"12572:6:87"}],"functionName":{"name":"array_allocation_size_array_uint8_dyn","nativeSrc":"12534:37:87","nodeType":"YulIdentifier","src":"12534:37:87"},"nativeSrc":"12534:45:87","nodeType":"YulFunctionCall","src":"12534:45:87"}],"functionName":{"name":"allocate_memory","nativeSrc":"12518:15:87","nodeType":"YulIdentifier","src":"12518:15:87"},"nativeSrc":"12518:62:87","nodeType":"YulFunctionCall","src":"12518:62:87"},"variables":[{"name":"dst","nativeSrc":"12511:3:87","nodeType":"YulTypedName","src":"12511:3:87","type":""}]},{"nativeSrc":"12589:18:87","nodeType":"YulVariableDeclaration","src":"12589:18:87","value":{"name":"dst","nativeSrc":"12604:3:87","nodeType":"YulIdentifier","src":"12604:3:87"},"variables":[{"name":"array_1","nativeSrc":"12593:7:87","nodeType":"YulTypedName","src":"12593:7:87","type":""}]},{"expression":{"arguments":[{"name":"dst","nativeSrc":"12623:3:87","nodeType":"YulIdentifier","src":"12623:3:87"},{"name":"length","nativeSrc":"12628:6:87","nodeType":"YulIdentifier","src":"12628:6:87"}],"functionName":{"name":"mstore","nativeSrc":"12616:6:87","nodeType":"YulIdentifier","src":"12616:6:87"},"nativeSrc":"12616:19:87","nodeType":"YulFunctionCall","src":"12616:19:87"},"nativeSrc":"12616:19:87","nodeType":"YulExpressionStatement","src":"12616:19:87"},{"nativeSrc":"12644:21:87","nodeType":"YulAssignment","src":"12644:21:87","value":{"arguments":[{"name":"dst","nativeSrc":"12655:3:87","nodeType":"YulIdentifier","src":"12655:3:87"},{"kind":"number","nativeSrc":"12660:4:87","nodeType":"YulLiteral","src":"12660:4:87","type":"","value":"0x20"}],"functionName":{"name":"add","nativeSrc":"12651:3:87","nodeType":"YulIdentifier","src":"12651:3:87"},"nativeSrc":"12651:14:87","nodeType":"YulFunctionCall","src":"12651:14:87"},"variableNames":[{"name":"dst","nativeSrc":"12644:3:87","nodeType":"YulIdentifier","src":"12644:3:87"}]},{"nativeSrc":"12674:52:87","nodeType":"YulVariableDeclaration","src":"12674:52:87","value":{"arguments":[{"arguments":[{"name":"offset","nativeSrc":"12696:6:87","nodeType":"YulIdentifier","src":"12696:6:87"},{"arguments":[{"kind":"number","nativeSrc":"12708:1:87","nodeType":"YulLiteral","src":"12708:1:87","type":"","value":"5"},{"name":"length","nativeSrc":"12711:6:87","nodeType":"YulIdentifier","src":"12711:6:87"}],"functionName":{"name":"shl","nativeSrc":"12704:3:87","nodeType":"YulIdentifier","src":"12704:3:87"},"nativeSrc":"12704:14:87","nodeType":"YulFunctionCall","src":"12704:14:87"}],"functionName":{"name":"add","nativeSrc":"12692:3:87","nodeType":"YulIdentifier","src":"12692:3:87"},"nativeSrc":"12692:27:87","nodeType":"YulFunctionCall","src":"12692:27:87"},{"kind":"number","nativeSrc":"12721:4:87","nodeType":"YulLiteral","src":"12721:4:87","type":"","value":"0x20"}],"functionName":{"name":"add","nativeSrc":"12688:3:87","nodeType":"YulIdentifier","src":"12688:3:87"},"nativeSrc":"12688:38:87","nodeType":"YulFunctionCall","src":"12688:38:87"},"variables":[{"name":"srcEnd","nativeSrc":"12678:6:87","nodeType":"YulTypedName","src":"12678:6:87","type":""}]},{"body":{"nativeSrc":"12754:16:87","nodeType":"YulBlock","src":"12754:16:87","statements":[{"expression":{"arguments":[{"kind":"number","nativeSrc":"12763:1:87","nodeType":"YulLiteral","src":"12763:1:87","type":"","value":"0"},{"kind":"number","nativeSrc":"12766:1:87","nodeType":"YulLiteral","src":"12766:1:87","type":"","value":"0"}],"functionName":{"name":"revert","nativeSrc":"12756:6:87","nodeType":"YulIdentifier","src":"12756:6:87"},"nativeSrc":"12756:12:87","nodeType":"YulFunctionCall","src":"12756:12:87"},"nativeSrc":"12756:12:87","nodeType":"YulExpressionStatement","src":"12756:12:87"}]},"condition":{"arguments":[{"name":"srcEnd","nativeSrc":"12741:6:87","nodeType":"YulIdentifier","src":"12741:6:87"},{"name":"end","nativeSrc":"12749:3:87","nodeType":"YulIdentifier","src":"12749:3:87"}],"functionName":{"name":"gt","nativeSrc":"12738:2:87","nodeType":"YulIdentifier","src":"12738:2:87"},"nativeSrc":"12738:15:87","nodeType":"YulFunctionCall","src":"12738:15:87"},"nativeSrc":"12735:35:87","nodeType":"YulIf","src":"12735:35:87"},{"nativeSrc":"12779:28:87","nodeType":"YulVariableDeclaration","src":"12779:28:87","value":{"arguments":[{"name":"offset","nativeSrc":"12794:6:87","nodeType":"YulIdentifier","src":"12794:6:87"},{"kind":"number","nativeSrc":"12802:4:87","nodeType":"YulLiteral","src":"12802:4:87","type":"","value":"0x20"}],"functionName":{"name":"add","nativeSrc":"12790:3:87","nodeType":"YulIdentifier","src":"12790:3:87"},"nativeSrc":"12790:17:87","nodeType":"YulFunctionCall","src":"12790:17:87"},"variables":[{"name":"src","nativeSrc":"12783:3:87","nodeType":"YulTypedName","src":"12783:3:87","type":""}]},{"body":{"nativeSrc":"12874:246:87","nodeType":"YulBlock","src":"12874:246:87","statements":[{"nativeSrc":"12888:36:87","nodeType":"YulVariableDeclaration","src":"12888:36:87","value":{"arguments":[{"name":"src","nativeSrc":"12920:3:87","nodeType":"YulIdentifier","src":"12920:3:87"}],"functionName":{"name":"calldataload","nativeSrc":"12907:12:87","nodeType":"YulIdentifier","src":"12907:12:87"},"nativeSrc":"12907:17:87","nodeType":"YulFunctionCall","src":"12907:17:87"},"variables":[{"name":"innerOffset","nativeSrc":"12892:11:87","nodeType":"YulTypedName","src":"12892:11:87","type":""}]},{"body":{"nativeSrc":"12976:16:87","nodeType":"YulBlock","src":"12976:16:87","statements":[{"expression":{"arguments":[{"kind":"number","nativeSrc":"12985:1:87","nodeType":"YulLiteral","src":"12985:1:87","type":"","value":"0"},{"kind":"number","nativeSrc":"12988:1:87","nodeType":"YulLiteral","src":"12988:1:87","type":"","value":"0"}],"functionName":{"name":"revert","nativeSrc":"12978:6:87","nodeType":"YulIdentifier","src":"12978:6:87"},"nativeSrc":"12978:12:87","nodeType":"YulFunctionCall","src":"12978:12:87"},"nativeSrc":"12978:12:87","nodeType":"YulExpressionStatement","src":"12978:12:87"}]},"condition":{"arguments":[{"name":"innerOffset","nativeSrc":"12943:11:87","nodeType":"YulIdentifier","src":"12943:11:87"},{"kind":"number","nativeSrc":"12956:18:87","nodeType":"YulLiteral","src":"12956:18:87","type":"","value":"0xffffffffffffffff"}],"functionName":{"name":"gt","nativeSrc":"12940:2:87","nodeType":"YulIdentifier","src":"12940:2:87"},"nativeSrc":"12940:35:87","nodeType":"YulFunctionCall","src":"12940:35:87"},"nativeSrc":"12937:55:87","nodeType":"YulIf","src":"12937:55:87"},{"expression":{"arguments":[{"name":"dst","nativeSrc":"13012:3:87","nodeType":"YulIdentifier","src":"13012:3:87"},{"arguments":[{"arguments":[{"arguments":[{"name":"offset","nativeSrc":"13042:6:87","nodeType":"YulIdentifier","src":"13042:6:87"},{"name":"innerOffset","nativeSrc":"13050:11:87","nodeType":"YulIdentifier","src":"13050:11:87"}],"functionName":{"name":"add","nativeSrc":"13038:3:87","nodeType":"YulIdentifier","src":"13038:3:87"},"nativeSrc":"13038:24:87","nodeType":"YulFunctionCall","src":"13038:24:87"},{"kind":"number","nativeSrc":"13064:4:87","nodeType":"YulLiteral","src":"13064:4:87","type":"","value":"0x20"}],"functionName":{"name":"add","nativeSrc":"13034:3:87","nodeType":"YulIdentifier","src":"13034:3:87"},"nativeSrc":"13034:35:87","nodeType":"YulFunctionCall","src":"13034:35:87"},{"name":"end","nativeSrc":"13071:3:87","nodeType":"YulIdentifier","src":"13071:3:87"}],"functionName":{"name":"abi_decode_bytes","nativeSrc":"13017:16:87","nodeType":"YulIdentifier","src":"13017:16:87"},"nativeSrc":"13017:58:87","nodeType":"YulFunctionCall","src":"13017:58:87"}],"functionName":{"name":"mstore","nativeSrc":"13005:6:87","nodeType":"YulIdentifier","src":"13005:6:87"},"nativeSrc":"13005:71:87","nodeType":"YulFunctionCall","src":"13005:71:87"},"nativeSrc":"13005:71:87","nodeType":"YulExpressionStatement","src":"13005:71:87"},{"nativeSrc":"13089:21:87","nodeType":"YulAssignment","src":"13089:21:87","value":{"arguments":[{"name":"dst","nativeSrc":"13100:3:87","nodeType":"YulIdentifier","src":"13100:3:87"},{"kind":"number","nativeSrc":"13105:4:87","nodeType":"YulLiteral","src":"13105:4:87","type":"","value":"0x20"}],"functionName":{"name":"add","nativeSrc":"13096:3:87","nodeType":"YulIdentifier","src":"13096:3:87"},"nativeSrc":"13096:14:87","nodeType":"YulFunctionCall","src":"13096:14:87"},"variableNames":[{"name":"dst","nativeSrc":"13089:3:87","nodeType":"YulIdentifier","src":"13089:3:87"}]}]},"condition":{"arguments":[{"name":"src","nativeSrc":"12827:3:87","nodeType":"YulIdentifier","src":"12827:3:87"},{"name":"srcEnd","nativeSrc":"12832:6:87","nodeType":"YulIdentifier","src":"12832:6:87"}],"functionName":{"name":"lt","nativeSrc":"12824:2:87","nodeType":"YulIdentifier","src":"12824:2:87"},"nativeSrc":"12824:15:87","nodeType":"YulFunctionCall","src":"12824:15:87"},"nativeSrc":"12816:304:87","nodeType":"YulForLoop","post":{"nativeSrc":"12840:25:87","nodeType":"YulBlock","src":"12840:25:87","statements":[{"nativeSrc":"12842:21:87","nodeType":"YulAssignment","src":"12842:21:87","value":{"arguments":[{"name":"src","nativeSrc":"12853:3:87","nodeType":"YulIdentifier","src":"12853:3:87"},{"kind":"number","nativeSrc":"12858:4:87","nodeType":"YulLiteral","src":"12858:4:87","type":"","value":"0x20"}],"functionName":{"name":"add","nativeSrc":"12849:3:87","nodeType":"YulIdentifier","src":"12849:3:87"},"nativeSrc":"12849:14:87","nodeType":"YulFunctionCall","src":"12849:14:87"},"variableNames":[{"name":"src","nativeSrc":"12842:3:87","nodeType":"YulIdentifier","src":"12842:3:87"}]}]},"pre":{"nativeSrc":"12820:3:87","nodeType":"YulBlock","src":"12820:3:87","statements":[]},"src":"12816:304:87"},{"nativeSrc":"13129:16:87","nodeType":"YulAssignment","src":"13129:16:87","value":{"name":"array_1","nativeSrc":"13138:7:87","nodeType":"YulIdentifier","src":"13138:7:87"},"variableNames":[{"name":"array","nativeSrc":"13129:5:87","nodeType":"YulIdentifier","src":"13129:5:87"}]}]},"name":"abi_decode_array_bytes_dyn","nativeSrc":"12328:823:87","nodeType":"YulFunctionDefinition","parameters":[{"name":"offset","nativeSrc":"12364:6:87","nodeType":"YulTypedName","src":"12364:6:87","type":""},{"name":"end","nativeSrc":"12372:3:87","nodeType":"YulTypedName","src":"12372:3:87","type":""}],"returnVariables":[{"name":"array","nativeSrc":"12380:5:87","nodeType":"YulTypedName","src":"12380:5:87","type":""}],"src":"12328:823:87"},{"body":{"nativeSrc":"13493:1309:87","nodeType":"YulBlock","src":"13493:1309:87","statements":[{"body":{"nativeSrc":"13540:16:87","nodeType":"YulBlock","src":"13540:16:87","statements":[{"expression":{"arguments":[{"kind":"number","nativeSrc":"13549:1:87","nodeType":"YulLiteral","src":"13549:1:87","type":"","value":"0"},{"kind":"number","nativeSrc":"13552:1:87","nodeType":"YulLiteral","src":"13552:1:87","type":"","value":"0"}],"functionName":{"name":"revert","nativeSrc":"13542:6:87","nodeType":"YulIdentifier","src":"13542:6:87"},"nativeSrc":"13542:12:87","nodeType":"YulFunctionCall","src":"13542:12:87"},"nativeSrc":"13542:12:87","nodeType":"YulExpressionStatement","src":"13542:12:87"}]},"condition":{"arguments":[{"arguments":[{"name":"dataEnd","nativeSrc":"13514:7:87","nodeType":"YulIdentifier","src":"13514:7:87"},{"name":"headStart","nativeSrc":"13523:9:87","nodeType":"YulIdentifier","src":"13523:9:87"}],"functionName":{"name":"sub","nativeSrc":"13510:3:87","nodeType":"YulIdentifier","src":"13510:3:87"},"nativeSrc":"13510:23:87","nodeType":"YulFunctionCall","src":"13510:23:87"},{"kind":"number","nativeSrc":"13535:3:87","nodeType":"YulLiteral","src":"13535:3:87","type":"","value":"224"}],"functionName":{"name":"slt","nativeSrc":"13506:3:87","nodeType":"YulIdentifier","src":"13506:3:87"},"nativeSrc":"13506:33:87","nodeType":"YulFunctionCall","src":"13506:33:87"},"nativeSrc":"13503:53:87","nodeType":"YulIf","src":"13503:53:87"},{"nativeSrc":"13565:37:87","nodeType":"YulVariableDeclaration","src":"13565:37:87","value":{"arguments":[{"name":"headStart","nativeSrc":"13592:9:87","nodeType":"YulIdentifier","src":"13592:9:87"}],"functionName":{"name":"calldataload","nativeSrc":"13579:12:87","nodeType":"YulIdentifier","src":"13579:12:87"},"nativeSrc":"13579:23:87","nodeType":"YulFunctionCall","src":"13579:23:87"},"variables":[{"name":"offset","nativeSrc":"13569:6:87","nodeType":"YulTypedName","src":"13569:6:87","type":""}]},{"body":{"nativeSrc":"13645:16:87","nodeType":"YulBlock","src":"13645:16:87","statements":[{"expression":{"arguments":[{"kind":"number","nativeSrc":"13654:1:87","nodeType":"YulLiteral","src":"13654:1:87","type":"","value":"0"},{"kind":"number","nativeSrc":"13657:1:87","nodeType":"YulLiteral","src":"13657:1:87","type":"","value":"0"}],"functionName":{"name":"revert","nativeSrc":"13647:6:87","nodeType":"YulIdentifier","src":"13647:6:87"},"nativeSrc":"13647:12:87","nodeType":"YulFunctionCall","src":"13647:12:87"},"nativeSrc":"13647:12:87","nodeType":"YulExpressionStatement","src":"13647:12:87"}]},"condition":{"arguments":[{"name":"offset","nativeSrc":"13617:6:87","nodeType":"YulIdentifier","src":"13617:6:87"},{"kind":"number","nativeSrc":"13625:18:87","nodeType":"YulLiteral","src":"13625:18:87","type":"","value":"0xffffffffffffffff"}],"functionName":{"name":"gt","nativeSrc":"13614:2:87","nodeType":"YulIdentifier","src":"13614:2:87"},"nativeSrc":"13614:30:87","nodeType":"YulFunctionCall","src":"13614:30:87"},"nativeSrc":"13611:50:87","nodeType":"YulIf","src":"13611:50:87"},{"nativeSrc":"13670:59:87","nodeType":"YulAssignment","src":"13670:59:87","value":{"arguments":[{"arguments":[{"name":"headStart","nativeSrc":"13701:9:87","nodeType":"YulIdentifier","src":"13701:9:87"},{"name":"offset","nativeSrc":"13712:6:87","nodeType":"YulIdentifier","src":"13712:6:87"}],"functionName":{"name":"add","nativeSrc":"13697:3:87","nodeType":"YulIdentifier","src":"13697:3:87"},"nativeSrc":"13697:22:87","nodeType":"YulFunctionCall","src":"13697:22:87"},{"name":"dataEnd","nativeSrc":"13721:7:87","nodeType":"YulIdentifier","src":"13721:7:87"}],"functionName":{"name":"abi_decode_bytes","nativeSrc":"13680:16:87","nodeType":"YulIdentifier","src":"13680:16:87"},"nativeSrc":"13680:49:87","nodeType":"YulFunctionCall","src":"13680:49:87"},"variableNames":[{"name":"value0","nativeSrc":"13670:6:87","nodeType":"YulIdentifier","src":"13670:6:87"}]},{"nativeSrc":"13738:48:87","nodeType":"YulVariableDeclaration","src":"13738:48:87","value":{"arguments":[{"arguments":[{"name":"headStart","nativeSrc":"13771:9:87","nodeType":"YulIdentifier","src":"13771:9:87"},{"kind":"number","nativeSrc":"13782:2:87","nodeType":"YulLiteral","src":"13782:2:87","type":"","value":"32"}],"functionName":{"name":"add","nativeSrc":"13767:3:87","nodeType":"YulIdentifier","src":"13767:3:87"},"nativeSrc":"13767:18:87","nodeType":"YulFunctionCall","src":"13767:18:87"}],"functionName":{"name":"calldataload","nativeSrc":"13754:12:87","nodeType":"YulIdentifier","src":"13754:12:87"},"nativeSrc":"13754:32:87","nodeType":"YulFunctionCall","src":"13754:32:87"},"variables":[{"name":"offset_1","nativeSrc":"13742:8:87","nodeType":"YulTypedName","src":"13742:8:87","type":""}]},{"body":{"nativeSrc":"13831:16:87","nodeType":"YulBlock","src":"13831:16:87","statements":[{"expression":{"arguments":[{"kind":"number","nativeSrc":"13840:1:87","nodeType":"YulLiteral","src":"13840:1:87","type":"","value":"0"},{"kind":"number","nativeSrc":"13843:1:87","nodeType":"YulLiteral","src":"13843:1:87","type":"","value":"0"}],"functionName":{"name":"revert","nativeSrc":"13833:6:87","nodeType":"YulIdentifier","src":"13833:6:87"},"nativeSrc":"13833:12:87","nodeType":"YulFunctionCall","src":"13833:12:87"},"nativeSrc":"13833:12:87","nodeType":"YulExpressionStatement","src":"13833:12:87"}]},"condition":{"arguments":[{"name":"offset_1","nativeSrc":"13801:8:87","nodeType":"YulIdentifier","src":"13801:8:87"},{"kind":"number","nativeSrc":"13811:18:87","nodeType":"YulLiteral","src":"13811:18:87","type":"","value":"0xffffffffffffffff"}],"functionName":{"name":"gt","nativeSrc":"13798:2:87","nodeType":"YulIdentifier","src":"13798:2:87"},"nativeSrc":"13798:32:87","nodeType":"YulFunctionCall","src":"13798:32:87"},"nativeSrc":"13795:52:87","nodeType":"YulIf","src":"13795:52:87"},{"nativeSrc":"13856:61:87","nodeType":"YulAssignment","src":"13856:61:87","value":{"arguments":[{"arguments":[{"name":"headStart","nativeSrc":"13887:9:87","nodeType":"YulIdentifier","src":"13887:9:87"},{"name":"offset_1","nativeSrc":"13898:8:87","nodeType":"YulIdentifier","src":"13898:8:87"}],"functionName":{"name":"add","nativeSrc":"13883:3:87","nodeType":"YulIdentifier","src":"13883:3:87"},"nativeSrc":"13883:24:87","nodeType":"YulFunctionCall","src":"13883:24:87"},{"name":"dataEnd","nativeSrc":"13909:7:87","nodeType":"YulIdentifier","src":"13909:7:87"}],"functionName":{"name":"abi_decode_bytes","nativeSrc":"13866:16:87","nodeType":"YulIdentifier","src":"13866:16:87"},"nativeSrc":"13866:51:87","nodeType":"YulFunctionCall","src":"13866:51:87"},"variableNames":[{"name":"value1","nativeSrc":"13856:6:87","nodeType":"YulIdentifier","src":"13856:6:87"}]},{"nativeSrc":"13926:56:87","nodeType":"YulAssignment","src":"13926:56:87","value":{"arguments":[{"arguments":[{"name":"headStart","nativeSrc":"13967:9:87","nodeType":"YulIdentifier","src":"13967:9:87"},{"kind":"number","nativeSrc":"13978:2:87","nodeType":"YulLiteral","src":"13978:2:87","type":"","value":"64"}],"functionName":{"name":"add","nativeSrc":"13963:3:87","nodeType":"YulIdentifier","src":"13963:3:87"},"nativeSrc":"13963:18:87","nodeType":"YulFunctionCall","src":"13963:18:87"}],"functionName":{"name":"abi_decode_contract_IERC20","nativeSrc":"13936:26:87","nodeType":"YulIdentifier","src":"13936:26:87"},"nativeSrc":"13936:46:87","nodeType":"YulFunctionCall","src":"13936:46:87"},"variableNames":[{"name":"value2","nativeSrc":"13926:6:87","nodeType":"YulIdentifier","src":"13926:6:87"}]},{"nativeSrc":"13991:48:87","nodeType":"YulVariableDeclaration","src":"13991:48:87","value":{"arguments":[{"arguments":[{"name":"headStart","nativeSrc":"14024:9:87","nodeType":"YulIdentifier","src":"14024:9:87"},{"kind":"number","nativeSrc":"14035:2:87","nodeType":"YulLiteral","src":"14035:2:87","type":"","value":"96"}],"functionName":{"name":"add","nativeSrc":"14020:3:87","nodeType":"YulIdentifier","src":"14020:3:87"},"nativeSrc":"14020:18:87","nodeType":"YulFunctionCall","src":"14020:18:87"}],"functionName":{"name":"calldataload","nativeSrc":"14007:12:87","nodeType":"YulIdentifier","src":"14007:12:87"},"nativeSrc":"14007:32:87","nodeType":"YulFunctionCall","src":"14007:32:87"},"variables":[{"name":"offset_2","nativeSrc":"13995:8:87","nodeType":"YulTypedName","src":"13995:8:87","type":""}]},{"body":{"nativeSrc":"14084:16:87","nodeType":"YulBlock","src":"14084:16:87","statements":[{"expression":{"arguments":[{"kind":"number","nativeSrc":"14093:1:87","nodeType":"YulLiteral","src":"14093:1:87","type":"","value":"0"},{"kind":"number","nativeSrc":"14096:1:87","nodeType":"YulLiteral","src":"14096:1:87","type":"","value":"0"}],"functionName":{"name":"revert","nativeSrc":"14086:6:87","nodeType":"YulIdentifier","src":"14086:6:87"},"nativeSrc":"14086:12:87","nodeType":"YulFunctionCall","src":"14086:12:87"},"nativeSrc":"14086:12:87","nodeType":"YulExpressionStatement","src":"14086:12:87"}]},"condition":{"arguments":[{"name":"offset_2","nativeSrc":"14054:8:87","nodeType":"YulIdentifier","src":"14054:8:87"},{"kind":"number","nativeSrc":"14064:18:87","nodeType":"YulLiteral","src":"14064:18:87","type":"","value":"0xffffffffffffffff"}],"functionName":{"name":"gt","nativeSrc":"14051:2:87","nodeType":"YulIdentifier","src":"14051:2:87"},"nativeSrc":"14051:32:87","nodeType":"YulFunctionCall","src":"14051:32:87"},"nativeSrc":"14048:52:87","nodeType":"YulIf","src":"14048:52:87"},{"nativeSrc":"14109:90:87","nodeType":"YulAssignment","src":"14109:90:87","value":{"arguments":[{"arguments":[{"name":"headStart","nativeSrc":"14169:9:87","nodeType":"YulIdentifier","src":"14169:9:87"},{"name":"offset_2","nativeSrc":"14180:8:87","nodeType":"YulIdentifier","src":"14180:8:87"}],"functionName":{"name":"add","nativeSrc":"14165:3:87","nodeType":"YulIdentifier","src":"14165:3:87"},"nativeSrc":"14165:24:87","nodeType":"YulFunctionCall","src":"14165:24:87"},{"name":"dataEnd","nativeSrc":"14191:7:87","nodeType":"YulIdentifier","src":"14191:7:87"}],"functionName":{"name":"abi_decode_array_contract_IInvestStrategy_dyn","nativeSrc":"14119:45:87","nodeType":"YulIdentifier","src":"14119:45:87"},"nativeSrc":"14119:80:87","nodeType":"YulFunctionCall","src":"14119:80:87"},"variableNames":[{"name":"value3","nativeSrc":"14109:6:87","nodeType":"YulIdentifier","src":"14109:6:87"}]},{"nativeSrc":"14208:49:87","nodeType":"YulVariableDeclaration","src":"14208:49:87","value":{"arguments":[{"arguments":[{"name":"headStart","nativeSrc":"14241:9:87","nodeType":"YulIdentifier","src":"14241:9:87"},{"kind":"number","nativeSrc":"14252:3:87","nodeType":"YulLiteral","src":"14252:3:87","type":"","value":"128"}],"functionName":{"name":"add","nativeSrc":"14237:3:87","nodeType":"YulIdentifier","src":"14237:3:87"},"nativeSrc":"14237:19:87","nodeType":"YulFunctionCall","src":"14237:19:87"}],"functionName":{"name":"calldataload","nativeSrc":"14224:12:87","nodeType":"YulIdentifier","src":"14224:12:87"},"nativeSrc":"14224:33:87","nodeType":"YulFunctionCall","src":"14224:33:87"},"variables":[{"name":"offset_3","nativeSrc":"14212:8:87","nodeType":"YulTypedName","src":"14212:8:87","type":""}]},{"body":{"nativeSrc":"14302:16:87","nodeType":"YulBlock","src":"14302:16:87","statements":[{"expression":{"arguments":[{"kind":"number","nativeSrc":"14311:1:87","nodeType":"YulLiteral","src":"14311:1:87","type":"","value":"0"},{"kind":"number","nativeSrc":"14314:1:87","nodeType":"YulLiteral","src":"14314:1:87","type":"","value":"0"}],"functionName":{"name":"revert","nativeSrc":"14304:6:87","nodeType":"YulIdentifier","src":"14304:6:87"},"nativeSrc":"14304:12:87","nodeType":"YulFunctionCall","src":"14304:12:87"},"nativeSrc":"14304:12:87","nodeType":"YulExpressionStatement","src":"14304:12:87"}]},"condition":{"arguments":[{"name":"offset_3","nativeSrc":"14272:8:87","nodeType":"YulIdentifier","src":"14272:8:87"},{"kind":"number","nativeSrc":"14282:18:87","nodeType":"YulLiteral","src":"14282:18:87","type":"","value":"0xffffffffffffffff"}],"functionName":{"name":"gt","nativeSrc":"14269:2:87","nodeType":"YulIdentifier","src":"14269:2:87"},"nativeSrc":"14269:32:87","nodeType":"YulFunctionCall","src":"14269:32:87"},"nativeSrc":"14266:52:87","nodeType":"YulIf","src":"14266:52:87"},{"nativeSrc":"14327:71:87","nodeType":"YulAssignment","src":"14327:71:87","value":{"arguments":[{"arguments":[{"name":"headStart","nativeSrc":"14368:9:87","nodeType":"YulIdentifier","src":"14368:9:87"},{"name":"offset_3","nativeSrc":"14379:8:87","nodeType":"YulIdentifier","src":"14379:8:87"}],"functionName":{"name":"add","nativeSrc":"14364:3:87","nodeType":"YulIdentifier","src":"14364:3:87"},"nativeSrc":"14364:24:87","nodeType":"YulFunctionCall","src":"14364:24:87"},{"name":"dataEnd","nativeSrc":"14390:7:87","nodeType":"YulIdentifier","src":"14390:7:87"}],"functionName":{"name":"abi_decode_array_bytes_dyn","nativeSrc":"14337:26:87","nodeType":"YulIdentifier","src":"14337:26:87"},"nativeSrc":"14337:61:87","nodeType":"YulFunctionCall","src":"14337:61:87"},"variableNames":[{"name":"value4","nativeSrc":"14327:6:87","nodeType":"YulIdentifier","src":"14327:6:87"}]},{"nativeSrc":"14407:49:87","nodeType":"YulVariableDeclaration","src":"14407:49:87","value":{"arguments":[{"arguments":[{"name":"headStart","nativeSrc":"14440:9:87","nodeType":"YulIdentifier","src":"14440:9:87"},{"kind":"number","nativeSrc":"14451:3:87","nodeType":"YulLiteral","src":"14451:3:87","type":"","value":"160"}],"functionName":{"name":"add","nativeSrc":"14436:3:87","nodeType":"YulIdentifier","src":"14436:3:87"},"nativeSrc":"14436:19:87","nodeType":"YulFunctionCall","src":"14436:19:87"}],"functionName":{"name":"calldataload","nativeSrc":"14423:12:87","nodeType":"YulIdentifier","src":"14423:12:87"},"nativeSrc":"14423:33:87","nodeType":"YulFunctionCall","src":"14423:33:87"},"variables":[{"name":"offset_4","nativeSrc":"14411:8:87","nodeType":"YulTypedName","src":"14411:8:87","type":""}]},{"body":{"nativeSrc":"14501:16:87","nodeType":"YulBlock","src":"14501:16:87","statements":[{"expression":{"arguments":[{"kind":"number","nativeSrc":"14510:1:87","nodeType":"YulLiteral","src":"14510:1:87","type":"","value":"0"},{"kind":"number","nativeSrc":"14513:1:87","nodeType":"YulLiteral","src":"14513:1:87","type":"","value":"0"}],"functionName":{"name":"revert","nativeSrc":"14503:6:87","nodeType":"YulIdentifier","src":"14503:6:87"},"nativeSrc":"14503:12:87","nodeType":"YulFunctionCall","src":"14503:12:87"},"nativeSrc":"14503:12:87","nodeType":"YulExpressionStatement","src":"14503:12:87"}]},"condition":{"arguments":[{"name":"offset_4","nativeSrc":"14471:8:87","nodeType":"YulIdentifier","src":"14471:8:87"},{"kind":"number","nativeSrc":"14481:18:87","nodeType":"YulLiteral","src":"14481:18:87","type":"","value":"0xffffffffffffffff"}],"functionName":{"name":"gt","nativeSrc":"14468:2:87","nodeType":"YulIdentifier","src":"14468:2:87"},"nativeSrc":"14468:32:87","nodeType":"YulFunctionCall","src":"14468:32:87"},"nativeSrc":"14465:52:87","nodeType":"YulIf","src":"14465:52:87"},{"nativeSrc":"14526:71:87","nodeType":"YulAssignment","src":"14526:71:87","value":{"arguments":[{"arguments":[{"name":"headStart","nativeSrc":"14567:9:87","nodeType":"YulIdentifier","src":"14567:9:87"},{"name":"offset_4","nativeSrc":"14578:8:87","nodeType":"YulIdentifier","src":"14578:8:87"}],"functionName":{"name":"add","nativeSrc":"14563:3:87","nodeType":"YulIdentifier","src":"14563:3:87"},"nativeSrc":"14563:24:87","nodeType":"YulFunctionCall","src":"14563:24:87"},{"name":"dataEnd","nativeSrc":"14589:7:87","nodeType":"YulIdentifier","src":"14589:7:87"}],"functionName":{"name":"abi_decode_array_uint8_dyn","nativeSrc":"14536:26:87","nodeType":"YulIdentifier","src":"14536:26:87"},"nativeSrc":"14536:61:87","nodeType":"YulFunctionCall","src":"14536:61:87"},"variableNames":[{"name":"value5","nativeSrc":"14526:6:87","nodeType":"YulIdentifier","src":"14526:6:87"}]},{"nativeSrc":"14606:49:87","nodeType":"YulVariableDeclaration","src":"14606:49:87","value":{"arguments":[{"arguments":[{"name":"headStart","nativeSrc":"14639:9:87","nodeType":"YulIdentifier","src":"14639:9:87"},{"kind":"number","nativeSrc":"14650:3:87","nodeType":"YulLiteral","src":"14650:3:87","type":"","value":"192"}],"functionName":{"name":"add","nativeSrc":"14635:3:87","nodeType":"YulIdentifier","src":"14635:3:87"},"nativeSrc":"14635:19:87","nodeType":"YulFunctionCall","src":"14635:19:87"}],"functionName":{"name":"calldataload","nativeSrc":"14622:12:87","nodeType":"YulIdentifier","src":"14622:12:87"},"nativeSrc":"14622:33:87","nodeType":"YulFunctionCall","src":"14622:33:87"},"variables":[{"name":"offset_5","nativeSrc":"14610:8:87","nodeType":"YulTypedName","src":"14610:8:87","type":""}]},{"body":{"nativeSrc":"14700:16:87","nodeType":"YulBlock","src":"14700:16:87","statements":[{"expression":{"arguments":[{"kind":"number","nativeSrc":"14709:1:87","nodeType":"YulLiteral","src":"14709:1:87","type":"","value":"0"},{"kind":"number","nativeSrc":"14712:1:87","nodeType":"YulLiteral","src":"14712:1:87","type":"","value":"0"}],"functionName":{"name":"revert","nativeSrc":"14702:6:87","nodeType":"YulIdentifier","src":"14702:6:87"},"nativeSrc":"14702:12:87","nodeType":"YulFunctionCall","src":"14702:12:87"},"nativeSrc":"14702:12:87","nodeType":"YulExpressionStatement","src":"14702:12:87"}]},"condition":{"arguments":[{"name":"offset_5","nativeSrc":"14670:8:87","nodeType":"YulIdentifier","src":"14670:8:87"},{"kind":"number","nativeSrc":"14680:18:87","nodeType":"YulLiteral","src":"14680:18:87","type":"","value":"0xffffffffffffffff"}],"functionName":{"name":"gt","nativeSrc":"14667:2:87","nodeType":"YulIdentifier","src":"14667:2:87"},"nativeSrc":"14667:32:87","nodeType":"YulFunctionCall","src":"14667:32:87"},"nativeSrc":"14664:52:87","nodeType":"YulIf","src":"14664:52:87"},{"nativeSrc":"14725:71:87","nodeType":"YulAssignment","src":"14725:71:87","value":{"arguments":[{"arguments":[{"name":"headStart","nativeSrc":"14766:9:87","nodeType":"YulIdentifier","src":"14766:9:87"},{"name":"offset_5","nativeSrc":"14777:8:87","nodeType":"YulIdentifier","src":"14777:8:87"}],"functionName":{"name":"add","nativeSrc":"14762:3:87","nodeType":"YulIdentifier","src":"14762:3:87"},"nativeSrc":"14762:24:87","nodeType":"YulFunctionCall","src":"14762:24:87"},{"name":"dataEnd","nativeSrc":"14788:7:87","nodeType":"YulIdentifier","src":"14788:7:87"}],"functionName":{"name":"abi_decode_array_uint8_dyn","nativeSrc":"14735:26:87","nodeType":"YulIdentifier","src":"14735:26:87"},"nativeSrc":"14735:61:87","nodeType":"YulFunctionCall","src":"14735:61:87"},"variableNames":[{"name":"value6","nativeSrc":"14725:6:87","nodeType":"YulIdentifier","src":"14725:6:87"}]}]},"name":"abi_decode_tuple_t_string_memory_ptrt_string_memory_ptrt_contract$_IERC20_$8679t_array$_t_contract$_IInvestStrategy_$20725_$dyn_memory_ptrt_array$_t_bytes_memory_ptr_$dyn_memory_ptrt_array$_t_uint8_$dyn_memory_ptrt_array$_t_uint8_$dyn_memory_ptr","nativeSrc":"13156:1646:87","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nativeSrc":"13411:9:87","nodeType":"YulTypedName","src":"13411:9:87","type":""},{"name":"dataEnd","nativeSrc":"13422:7:87","nodeType":"YulTypedName","src":"13422:7:87","type":""}],"returnVariables":[{"name":"value0","nativeSrc":"13434:6:87","nodeType":"YulTypedName","src":"13434:6:87","type":""},{"name":"value1","nativeSrc":"13442:6:87","nodeType":"YulTypedName","src":"13442:6:87","type":""},{"name":"value2","nativeSrc":"13450:6:87","nodeType":"YulTypedName","src":"13450:6:87","type":""},{"name":"value3","nativeSrc":"13458:6:87","nodeType":"YulTypedName","src":"13458:6:87","type":""},{"name":"value4","nativeSrc":"13466:6:87","nodeType":"YulTypedName","src":"13466:6:87","type":""},{"name":"value5","nativeSrc":"13474:6:87","nodeType":"YulTypedName","src":"13474:6:87","type":""},{"name":"value6","nativeSrc":"13482:6:87","nodeType":"YulTypedName","src":"13482:6:87","type":""}],"src":"13156:1646:87"},{"body":{"nativeSrc":"14911:404:87","nodeType":"YulBlock","src":"14911:404:87","statements":[{"body":{"nativeSrc":"14957:16:87","nodeType":"YulBlock","src":"14957:16:87","statements":[{"expression":{"arguments":[{"kind":"number","nativeSrc":"14966:1:87","nodeType":"YulLiteral","src":"14966:1:87","type":"","value":"0"},{"kind":"number","nativeSrc":"14969:1:87","nodeType":"YulLiteral","src":"14969:1:87","type":"","value":"0"}],"functionName":{"name":"revert","nativeSrc":"14959:6:87","nodeType":"YulIdentifier","src":"14959:6:87"},"nativeSrc":"14959:12:87","nodeType":"YulFunctionCall","src":"14959:12:87"},"nativeSrc":"14959:12:87","nodeType":"YulExpressionStatement","src":"14959:12:87"}]},"condition":{"arguments":[{"arguments":[{"name":"dataEnd","nativeSrc":"14932:7:87","nodeType":"YulIdentifier","src":"14932:7:87"},{"name":"headStart","nativeSrc":"14941:9:87","nodeType":"YulIdentifier","src":"14941:9:87"}],"functionName":{"name":"sub","nativeSrc":"14928:3:87","nodeType":"YulIdentifier","src":"14928:3:87"},"nativeSrc":"14928:23:87","nodeType":"YulFunctionCall","src":"14928:23:87"},{"kind":"number","nativeSrc":"14953:2:87","nodeType":"YulLiteral","src":"14953:2:87","type":"","value":"96"}],"functionName":{"name":"slt","nativeSrc":"14924:3:87","nodeType":"YulIdentifier","src":"14924:3:87"},"nativeSrc":"14924:32:87","nodeType":"YulFunctionCall","src":"14924:32:87"},"nativeSrc":"14921:52:87","nodeType":"YulIf","src":"14921:52:87"},{"nativeSrc":"14982:14:87","nodeType":"YulVariableDeclaration","src":"14982:14:87","value":{"kind":"number","nativeSrc":"14995:1:87","nodeType":"YulLiteral","src":"14995:1:87","type":"","value":"0"},"variables":[{"name":"value","nativeSrc":"14986:5:87","nodeType":"YulTypedName","src":"14986:5:87","type":""}]},{"nativeSrc":"15005:32:87","nodeType":"YulAssignment","src":"15005:32:87","value":{"arguments":[{"name":"headStart","nativeSrc":"15027:9:87","nodeType":"YulIdentifier","src":"15027:9:87"}],"functionName":{"name":"calldataload","nativeSrc":"15014:12:87","nodeType":"YulIdentifier","src":"15014:12:87"},"nativeSrc":"15014:23:87","nodeType":"YulFunctionCall","src":"15014:23:87"},"variableNames":[{"name":"value","nativeSrc":"15005:5:87","nodeType":"YulIdentifier","src":"15005:5:87"}]},{"nativeSrc":"15046:15:87","nodeType":"YulAssignment","src":"15046:15:87","value":{"name":"value","nativeSrc":"15056:5:87","nodeType":"YulIdentifier","src":"15056:5:87"},"variableNames":[{"name":"value0","nativeSrc":"15046:6:87","nodeType":"YulIdentifier","src":"15046:6:87"}]},{"nativeSrc":"15070:47:87","nodeType":"YulVariableDeclaration","src":"15070:47:87","value":{"arguments":[{"arguments":[{"name":"headStart","nativeSrc":"15102:9:87","nodeType":"YulIdentifier","src":"15102:9:87"},{"kind":"number","nativeSrc":"15113:2:87","nodeType":"YulLiteral","src":"15113:2:87","type":"","value":"32"}],"functionName":{"name":"add","nativeSrc":"15098:3:87","nodeType":"YulIdentifier","src":"15098:3:87"},"nativeSrc":"15098:18:87","nodeType":"YulFunctionCall","src":"15098:18:87"}],"functionName":{"name":"calldataload","nativeSrc":"15085:12:87","nodeType":"YulIdentifier","src":"15085:12:87"},"nativeSrc":"15085:32:87","nodeType":"YulFunctionCall","src":"15085:32:87"},"variables":[{"name":"value_1","nativeSrc":"15074:7:87","nodeType":"YulTypedName","src":"15074:7:87","type":""}]},{"expression":{"arguments":[{"name":"value_1","nativeSrc":"15151:7:87","nodeType":"YulIdentifier","src":"15151:7:87"}],"functionName":{"name":"validator_revert_address","nativeSrc":"15126:24:87","nodeType":"YulIdentifier","src":"15126:24:87"},"nativeSrc":"15126:33:87","nodeType":"YulFunctionCall","src":"15126:33:87"},"nativeSrc":"15126:33:87","nodeType":"YulExpressionStatement","src":"15126:33:87"},{"nativeSrc":"15168:17:87","nodeType":"YulAssignment","src":"15168:17:87","value":{"name":"value_1","nativeSrc":"15178:7:87","nodeType":"YulIdentifier","src":"15178:7:87"},"variableNames":[{"name":"value1","nativeSrc":"15168:6:87","nodeType":"YulIdentifier","src":"15168:6:87"}]},{"nativeSrc":"15194:47:87","nodeType":"YulVariableDeclaration","src":"15194:47:87","value":{"arguments":[{"arguments":[{"name":"headStart","nativeSrc":"15226:9:87","nodeType":"YulIdentifier","src":"15226:9:87"},{"kind":"number","nativeSrc":"15237:2:87","nodeType":"YulLiteral","src":"15237:2:87","type":"","value":"64"}],"functionName":{"name":"add","nativeSrc":"15222:3:87","nodeType":"YulIdentifier","src":"15222:3:87"},"nativeSrc":"15222:18:87","nodeType":"YulFunctionCall","src":"15222:18:87"}],"functionName":{"name":"calldataload","nativeSrc":"15209:12:87","nodeType":"YulIdentifier","src":"15209:12:87"},"nativeSrc":"15209:32:87","nodeType":"YulFunctionCall","src":"15209:32:87"},"variables":[{"name":"value_2","nativeSrc":"15198:7:87","nodeType":"YulTypedName","src":"15198:7:87","type":""}]},{"expression":{"arguments":[{"name":"value_2","nativeSrc":"15275:7:87","nodeType":"YulIdentifier","src":"15275:7:87"}],"functionName":{"name":"validator_revert_address","nativeSrc":"15250:24:87","nodeType":"YulIdentifier","src":"15250:24:87"},"nativeSrc":"15250:33:87","nodeType":"YulFunctionCall","src":"15250:33:87"},"nativeSrc":"15250:33:87","nodeType":"YulExpressionStatement","src":"15250:33:87"},{"nativeSrc":"15292:17:87","nodeType":"YulAssignment","src":"15292:17:87","value":{"name":"value_2","nativeSrc":"15302:7:87","nodeType":"YulIdentifier","src":"15302:7:87"},"variableNames":[{"name":"value2","nativeSrc":"15292:6:87","nodeType":"YulIdentifier","src":"15292:6:87"}]}]},"name":"abi_decode_tuple_t_uint256t_addresst_address","nativeSrc":"14807:508:87","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nativeSrc":"14861:9:87","nodeType":"YulTypedName","src":"14861:9:87","type":""},{"name":"dataEnd","nativeSrc":"14872:7:87","nodeType":"YulTypedName","src":"14872:7:87","type":""}],"returnVariables":[{"name":"value0","nativeSrc":"14884:6:87","nodeType":"YulTypedName","src":"14884:6:87","type":""},{"name":"value1","nativeSrc":"14892:6:87","nodeType":"YulTypedName","src":"14892:6:87","type":""},{"name":"value2","nativeSrc":"14900:6:87","nodeType":"YulTypedName","src":"14900:6:87","type":""}],"src":"14807:508:87"},{"body":{"nativeSrc":"15494:352:87","nodeType":"YulBlock","src":"15494:352:87","statements":[{"nativeSrc":"15504:28:87","nodeType":"YulAssignment","src":"15504:28:87","value":{"arguments":[{"name":"headStart","nativeSrc":"15516:9:87","nodeType":"YulIdentifier","src":"15516:9:87"},{"kind":"number","nativeSrc":"15527:4:87","nodeType":"YulLiteral","src":"15527:4:87","type":"","value":"1024"}],"functionName":{"name":"add","nativeSrc":"15512:3:87","nodeType":"YulIdentifier","src":"15512:3:87"},"nativeSrc":"15512:20:87","nodeType":"YulFunctionCall","src":"15512:20:87"},"variableNames":[{"name":"tail","nativeSrc":"15504:4:87","nodeType":"YulIdentifier","src":"15504:4:87"}]},{"nativeSrc":"15541:20:87","nodeType":"YulVariableDeclaration","src":"15541:20:87","value":{"name":"headStart","nativeSrc":"15552:9:87","nodeType":"YulIdentifier","src":"15552:9:87"},"variables":[{"name":"pos","nativeSrc":"15545:3:87","nodeType":"YulTypedName","src":"15545:3:87","type":""}]},{"nativeSrc":"15570:16:87","nodeType":"YulAssignment","src":"15570:16:87","value":{"name":"headStart","nativeSrc":"15577:9:87","nodeType":"YulIdentifier","src":"15577:9:87"},"variableNames":[{"name":"pos","nativeSrc":"15570:3:87","nodeType":"YulIdentifier","src":"15570:3:87"}]},{"nativeSrc":"15595:20:87","nodeType":"YulVariableDeclaration","src":"15595:20:87","value":{"name":"value0","nativeSrc":"15609:6:87","nodeType":"YulIdentifier","src":"15609:6:87"},"variables":[{"name":"srcPtr","nativeSrc":"15599:6:87","nodeType":"YulTypedName","src":"15599:6:87","type":""}]},{"nativeSrc":"15624:10:87","nodeType":"YulVariableDeclaration","src":"15624:10:87","value":{"kind":"number","nativeSrc":"15633:1:87","nodeType":"YulLiteral","src":"15633:1:87","type":"","value":"0"},"variables":[{"name":"i","nativeSrc":"15628:1:87","nodeType":"YulTypedName","src":"15628:1:87","type":""}]},{"body":{"nativeSrc":"15690:150:87","nodeType":"YulBlock","src":"15690:150:87","statements":[{"expression":{"arguments":[{"name":"pos","nativeSrc":"15711:3:87","nodeType":"YulIdentifier","src":"15711:3:87"},{"arguments":[{"arguments":[{"name":"srcPtr","nativeSrc":"15726:6:87","nodeType":"YulIdentifier","src":"15726:6:87"}],"functionName":{"name":"mload","nativeSrc":"15720:5:87","nodeType":"YulIdentifier","src":"15720:5:87"},"nativeSrc":"15720:13:87","nodeType":"YulFunctionCall","src":"15720:13:87"},{"arguments":[{"arguments":[{"kind":"number","nativeSrc":"15743:3:87","nodeType":"YulLiteral","src":"15743:3:87","type":"","value":"160"},{"kind":"number","nativeSrc":"15748:1:87","nodeType":"YulLiteral","src":"15748:1:87","type":"","value":"1"}],"functionName":{"name":"shl","nativeSrc":"15739:3:87","nodeType":"YulIdentifier","src":"15739:3:87"},"nativeSrc":"15739:11:87","nodeType":"YulFunctionCall","src":"15739:11:87"},{"kind":"number","nativeSrc":"15752:1:87","nodeType":"YulLiteral","src":"15752:1:87","type":"","value":"1"}],"functionName":{"name":"sub","nativeSrc":"15735:3:87","nodeType":"YulIdentifier","src":"15735:3:87"},"nativeSrc":"15735:19:87","nodeType":"YulFunctionCall","src":"15735:19:87"}],"functionName":{"name":"and","nativeSrc":"15716:3:87","nodeType":"YulIdentifier","src":"15716:3:87"},"nativeSrc":"15716:39:87","nodeType":"YulFunctionCall","src":"15716:39:87"}],"functionName":{"name":"mstore","nativeSrc":"15704:6:87","nodeType":"YulIdentifier","src":"15704:6:87"},"nativeSrc":"15704:52:87","nodeType":"YulFunctionCall","src":"15704:52:87"},"nativeSrc":"15704:52:87","nodeType":"YulExpressionStatement","src":"15704:52:87"},{"nativeSrc":"15769:21:87","nodeType":"YulAssignment","src":"15769:21:87","value":{"arguments":[{"name":"pos","nativeSrc":"15780:3:87","nodeType":"YulIdentifier","src":"15780:3:87"},{"kind":"number","nativeSrc":"15785:4:87","nodeType":"YulLiteral","src":"15785:4:87","type":"","value":"0x20"}],"functionName":{"name":"add","nativeSrc":"15776:3:87","nodeType":"YulIdentifier","src":"15776:3:87"},"nativeSrc":"15776:14:87","nodeType":"YulFunctionCall","src":"15776:14:87"},"variableNames":[{"name":"pos","nativeSrc":"15769:3:87","nodeType":"YulIdentifier","src":"15769:3:87"}]},{"nativeSrc":"15803:27:87","nodeType":"YulAssignment","src":"15803:27:87","value":{"arguments":[{"name":"srcPtr","nativeSrc":"15817:6:87","nodeType":"YulIdentifier","src":"15817:6:87"},{"kind":"number","nativeSrc":"15825:4:87","nodeType":"YulLiteral","src":"15825:4:87","type":"","value":"0x20"}],"functionName":{"name":"add","nativeSrc":"15813:3:87","nodeType":"YulIdentifier","src":"15813:3:87"},"nativeSrc":"15813:17:87","nodeType":"YulFunctionCall","src":"15813:17:87"},"variableNames":[{"name":"srcPtr","nativeSrc":"15803:6:87","nodeType":"YulIdentifier","src":"15803:6:87"}]}]},"condition":{"arguments":[{"name":"i","nativeSrc":"15654:1:87","nodeType":"YulIdentifier","src":"15654:1:87"},{"kind":"number","nativeSrc":"15657:4:87","nodeType":"YulLiteral","src":"15657:4:87","type":"","value":"0x20"}],"functionName":{"name":"lt","nativeSrc":"15651:2:87","nodeType":"YulIdentifier","src":"15651:2:87"},"nativeSrc":"15651:11:87","nodeType":"YulFunctionCall","src":"15651:11:87"},"nativeSrc":"15643:197:87","nodeType":"YulForLoop","post":{"nativeSrc":"15663:18:87","nodeType":"YulBlock","src":"15663:18:87","statements":[{"nativeSrc":"15665:14:87","nodeType":"YulAssignment","src":"15665:14:87","value":{"arguments":[{"name":"i","nativeSrc":"15674:1:87","nodeType":"YulIdentifier","src":"15674:1:87"},{"kind":"number","nativeSrc":"15677:1:87","nodeType":"YulLiteral","src":"15677:1:87","type":"","value":"1"}],"functionName":{"name":"add","nativeSrc":"15670:3:87","nodeType":"YulIdentifier","src":"15670:3:87"},"nativeSrc":"15670:9:87","nodeType":"YulFunctionCall","src":"15670:9:87"},"variableNames":[{"name":"i","nativeSrc":"15665:1:87","nodeType":"YulIdentifier","src":"15665:1:87"}]}]},"pre":{"nativeSrc":"15647:3:87","nodeType":"YulBlock","src":"15647:3:87","statements":[]},"src":"15643:197:87"}]},"name":"abi_encode_tuple_t_array$_t_contract$_IInvestStrategy_$20725_$32_memory_ptr__to_t_array$_t_address_$32_memory_ptr__fromStack_reversed","nativeSrc":"15320:526:87","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nativeSrc":"15463:9:87","nodeType":"YulTypedName","src":"15463:9:87","type":""},{"name":"value0","nativeSrc":"15474:6:87","nodeType":"YulTypedName","src":"15474:6:87","type":""}],"returnVariables":[{"name":"tail","nativeSrc":"15485:4:87","nodeType":"YulTypedName","src":"15485:4:87","type":""}],"src":"15320:526:87"},{"body":{"nativeSrc":"15938:301:87","nodeType":"YulBlock","src":"15938:301:87","statements":[{"body":{"nativeSrc":"15984:16:87","nodeType":"YulBlock","src":"15984:16:87","statements":[{"expression":{"arguments":[{"kind":"number","nativeSrc":"15993:1:87","nodeType":"YulLiteral","src":"15993:1:87","type":"","value":"0"},{"kind":"number","nativeSrc":"15996:1:87","nodeType":"YulLiteral","src":"15996:1:87","type":"","value":"0"}],"functionName":{"name":"revert","nativeSrc":"15986:6:87","nodeType":"YulIdentifier","src":"15986:6:87"},"nativeSrc":"15986:12:87","nodeType":"YulFunctionCall","src":"15986:12:87"},"nativeSrc":"15986:12:87","nodeType":"YulExpressionStatement","src":"15986:12:87"}]},"condition":{"arguments":[{"arguments":[{"name":"dataEnd","nativeSrc":"15959:7:87","nodeType":"YulIdentifier","src":"15959:7:87"},{"name":"headStart","nativeSrc":"15968:9:87","nodeType":"YulIdentifier","src":"15968:9:87"}],"functionName":{"name":"sub","nativeSrc":"15955:3:87","nodeType":"YulIdentifier","src":"15955:3:87"},"nativeSrc":"15955:23:87","nodeType":"YulFunctionCall","src":"15955:23:87"},{"kind":"number","nativeSrc":"15980:2:87","nodeType":"YulLiteral","src":"15980:2:87","type":"","value":"64"}],"functionName":{"name":"slt","nativeSrc":"15951:3:87","nodeType":"YulIdentifier","src":"15951:3:87"},"nativeSrc":"15951:32:87","nodeType":"YulFunctionCall","src":"15951:32:87"},"nativeSrc":"15948:52:87","nodeType":"YulIf","src":"15948:52:87"},{"nativeSrc":"16009:36:87","nodeType":"YulVariableDeclaration","src":"16009:36:87","value":{"arguments":[{"name":"headStart","nativeSrc":"16035:9:87","nodeType":"YulIdentifier","src":"16035:9:87"}],"functionName":{"name":"calldataload","nativeSrc":"16022:12:87","nodeType":"YulIdentifier","src":"16022:12:87"},"nativeSrc":"16022:23:87","nodeType":"YulFunctionCall","src":"16022:23:87"},"variables":[{"name":"value","nativeSrc":"16013:5:87","nodeType":"YulTypedName","src":"16013:5:87","type":""}]},{"expression":{"arguments":[{"name":"value","nativeSrc":"16079:5:87","nodeType":"YulIdentifier","src":"16079:5:87"}],"functionName":{"name":"validator_revert_address","nativeSrc":"16054:24:87","nodeType":"YulIdentifier","src":"16054:24:87"},"nativeSrc":"16054:31:87","nodeType":"YulFunctionCall","src":"16054:31:87"},"nativeSrc":"16054:31:87","nodeType":"YulExpressionStatement","src":"16054:31:87"},{"nativeSrc":"16094:15:87","nodeType":"YulAssignment","src":"16094:15:87","value":{"name":"value","nativeSrc":"16104:5:87","nodeType":"YulIdentifier","src":"16104:5:87"},"variableNames":[{"name":"value0","nativeSrc":"16094:6:87","nodeType":"YulIdentifier","src":"16094:6:87"}]},{"nativeSrc":"16118:47:87","nodeType":"YulVariableDeclaration","src":"16118:47:87","value":{"arguments":[{"arguments":[{"name":"headStart","nativeSrc":"16150:9:87","nodeType":"YulIdentifier","src":"16150:9:87"},{"kind":"number","nativeSrc":"16161:2:87","nodeType":"YulLiteral","src":"16161:2:87","type":"","value":"32"}],"functionName":{"name":"add","nativeSrc":"16146:3:87","nodeType":"YulIdentifier","src":"16146:3:87"},"nativeSrc":"16146:18:87","nodeType":"YulFunctionCall","src":"16146:18:87"}],"functionName":{"name":"calldataload","nativeSrc":"16133:12:87","nodeType":"YulIdentifier","src":"16133:12:87"},"nativeSrc":"16133:32:87","nodeType":"YulFunctionCall","src":"16133:32:87"},"variables":[{"name":"value_1","nativeSrc":"16122:7:87","nodeType":"YulTypedName","src":"16122:7:87","type":""}]},{"expression":{"arguments":[{"name":"value_1","nativeSrc":"16199:7:87","nodeType":"YulIdentifier","src":"16199:7:87"}],"functionName":{"name":"validator_revert_address","nativeSrc":"16174:24:87","nodeType":"YulIdentifier","src":"16174:24:87"},"nativeSrc":"16174:33:87","nodeType":"YulFunctionCall","src":"16174:33:87"},"nativeSrc":"16174:33:87","nodeType":"YulExpressionStatement","src":"16174:33:87"},{"nativeSrc":"16216:17:87","nodeType":"YulAssignment","src":"16216:17:87","value":{"name":"value_1","nativeSrc":"16226:7:87","nodeType":"YulIdentifier","src":"16226:7:87"},"variableNames":[{"name":"value1","nativeSrc":"16216:6:87","nodeType":"YulIdentifier","src":"16216:6:87"}]}]},"name":"abi_decode_tuple_t_addresst_address","nativeSrc":"15851:388:87","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nativeSrc":"15896:9:87","nodeType":"YulTypedName","src":"15896:9:87","type":""},{"name":"dataEnd","nativeSrc":"15907:7:87","nodeType":"YulTypedName","src":"15907:7:87","type":""}],"returnVariables":[{"name":"value0","nativeSrc":"15919:6:87","nodeType":"YulTypedName","src":"15919:6:87","type":""},{"name":"value1","nativeSrc":"15927:6:87","nodeType":"YulTypedName","src":"15927:6:87","type":""}],"src":"15851:388:87"},{"body":{"nativeSrc":"16344:266:87","nodeType":"YulBlock","src":"16344:266:87","statements":[{"body":{"nativeSrc":"16390:16:87","nodeType":"YulBlock","src":"16390:16:87","statements":[{"expression":{"arguments":[{"kind":"number","nativeSrc":"16399:1:87","nodeType":"YulLiteral","src":"16399:1:87","type":"","value":"0"},{"kind":"number","nativeSrc":"16402:1:87","nodeType":"YulLiteral","src":"16402:1:87","type":"","value":"0"}],"functionName":{"name":"revert","nativeSrc":"16392:6:87","nodeType":"YulIdentifier","src":"16392:6:87"},"nativeSrc":"16392:12:87","nodeType":"YulFunctionCall","src":"16392:12:87"},"nativeSrc":"16392:12:87","nodeType":"YulExpressionStatement","src":"16392:12:87"}]},"condition":{"arguments":[{"arguments":[{"name":"dataEnd","nativeSrc":"16365:7:87","nodeType":"YulIdentifier","src":"16365:7:87"},{"name":"headStart","nativeSrc":"16374:9:87","nodeType":"YulIdentifier","src":"16374:9:87"}],"functionName":{"name":"sub","nativeSrc":"16361:3:87","nodeType":"YulIdentifier","src":"16361:3:87"},"nativeSrc":"16361:23:87","nodeType":"YulFunctionCall","src":"16361:23:87"},{"kind":"number","nativeSrc":"16386:2:87","nodeType":"YulLiteral","src":"16386:2:87","type":"","value":"96"}],"functionName":{"name":"slt","nativeSrc":"16357:3:87","nodeType":"YulIdentifier","src":"16357:3:87"},"nativeSrc":"16357:32:87","nodeType":"YulFunctionCall","src":"16357:32:87"},"nativeSrc":"16354:52:87","nodeType":"YulIf","src":"16354:52:87"},{"nativeSrc":"16415:37:87","nodeType":"YulAssignment","src":"16415:37:87","value":{"arguments":[{"name":"headStart","nativeSrc":"16442:9:87","nodeType":"YulIdentifier","src":"16442:9:87"}],"functionName":{"name":"abi_decode_uint8","nativeSrc":"16425:16:87","nodeType":"YulIdentifier","src":"16425:16:87"},"nativeSrc":"16425:27:87","nodeType":"YulFunctionCall","src":"16425:27:87"},"variableNames":[{"name":"value0","nativeSrc":"16415:6:87","nodeType":"YulIdentifier","src":"16415:6:87"}]},{"nativeSrc":"16461:46:87","nodeType":"YulAssignment","src":"16461:46:87","value":{"arguments":[{"arguments":[{"name":"headStart","nativeSrc":"16492:9:87","nodeType":"YulIdentifier","src":"16492:9:87"},{"kind":"number","nativeSrc":"16503:2:87","nodeType":"YulLiteral","src":"16503:2:87","type":"","value":"32"}],"functionName":{"name":"add","nativeSrc":"16488:3:87","nodeType":"YulIdentifier","src":"16488:3:87"},"nativeSrc":"16488:18:87","nodeType":"YulFunctionCall","src":"16488:18:87"}],"functionName":{"name":"abi_decode_uint8","nativeSrc":"16471:16:87","nodeType":"YulIdentifier","src":"16471:16:87"},"nativeSrc":"16471:36:87","nodeType":"YulFunctionCall","src":"16471:36:87"},"variableNames":[{"name":"value1","nativeSrc":"16461:6:87","nodeType":"YulIdentifier","src":"16461:6:87"}]},{"nativeSrc":"16516:14:87","nodeType":"YulVariableDeclaration","src":"16516:14:87","value":{"kind":"number","nativeSrc":"16529:1:87","nodeType":"YulLiteral","src":"16529:1:87","type":"","value":"0"},"variables":[{"name":"value","nativeSrc":"16520:5:87","nodeType":"YulTypedName","src":"16520:5:87","type":""}]},{"nativeSrc":"16539:41:87","nodeType":"YulAssignment","src":"16539:41:87","value":{"arguments":[{"arguments":[{"name":"headStart","nativeSrc":"16565:9:87","nodeType":"YulIdentifier","src":"16565:9:87"},{"kind":"number","nativeSrc":"16576:2:87","nodeType":"YulLiteral","src":"16576:2:87","type":"","value":"64"}],"functionName":{"name":"add","nativeSrc":"16561:3:87","nodeType":"YulIdentifier","src":"16561:3:87"},"nativeSrc":"16561:18:87","nodeType":"YulFunctionCall","src":"16561:18:87"}],"functionName":{"name":"calldataload","nativeSrc":"16548:12:87","nodeType":"YulIdentifier","src":"16548:12:87"},"nativeSrc":"16548:32:87","nodeType":"YulFunctionCall","src":"16548:32:87"},"variableNames":[{"name":"value","nativeSrc":"16539:5:87","nodeType":"YulIdentifier","src":"16539:5:87"}]},{"nativeSrc":"16589:15:87","nodeType":"YulAssignment","src":"16589:15:87","value":{"name":"value","nativeSrc":"16599:5:87","nodeType":"YulIdentifier","src":"16599:5:87"},"variableNames":[{"name":"value2","nativeSrc":"16589:6:87","nodeType":"YulIdentifier","src":"16589:6:87"}]}]},"name":"abi_decode_tuple_t_uint8t_uint8t_uint256","nativeSrc":"16244:366:87","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nativeSrc":"16294:9:87","nodeType":"YulTypedName","src":"16294:9:87","type":""},{"name":"dataEnd","nativeSrc":"16305:7:87","nodeType":"YulTypedName","src":"16305:7:87","type":""}],"returnVariables":[{"name":"value0","nativeSrc":"16317:6:87","nodeType":"YulTypedName","src":"16317:6:87","type":""},{"name":"value1","nativeSrc":"16325:6:87","nodeType":"YulTypedName","src":"16325:6:87","type":""},{"name":"value2","nativeSrc":"16333:6:87","nodeType":"YulTypedName","src":"16333:6:87","type":""}],"src":"16244:366:87"},{"body":{"nativeSrc":"16670:325:87","nodeType":"YulBlock","src":"16670:325:87","statements":[{"nativeSrc":"16680:22:87","nodeType":"YulAssignment","src":"16680:22:87","value":{"arguments":[{"kind":"number","nativeSrc":"16694:1:87","nodeType":"YulLiteral","src":"16694:1:87","type":"","value":"1"},{"name":"data","nativeSrc":"16697:4:87","nodeType":"YulIdentifier","src":"16697:4:87"}],"functionName":{"name":"shr","nativeSrc":"16690:3:87","nodeType":"YulIdentifier","src":"16690:3:87"},"nativeSrc":"16690:12:87","nodeType":"YulFunctionCall","src":"16690:12:87"},"variableNames":[{"name":"length","nativeSrc":"16680:6:87","nodeType":"YulIdentifier","src":"16680:6:87"}]},{"nativeSrc":"16711:38:87","nodeType":"YulVariableDeclaration","src":"16711:38:87","value":{"arguments":[{"name":"data","nativeSrc":"16741:4:87","nodeType":"YulIdentifier","src":"16741:4:87"},{"kind":"number","nativeSrc":"16747:1:87","nodeType":"YulLiteral","src":"16747:1:87","type":"","value":"1"}],"functionName":{"name":"and","nativeSrc":"16737:3:87","nodeType":"YulIdentifier","src":"16737:3:87"},"nativeSrc":"16737:12:87","nodeType":"YulFunctionCall","src":"16737:12:87"},"variables":[{"name":"outOfPlaceEncoding","nativeSrc":"16715:18:87","nodeType":"YulTypedName","src":"16715:18:87","type":""}]},{"body":{"nativeSrc":"16788:31:87","nodeType":"YulBlock","src":"16788:31:87","statements":[{"nativeSrc":"16790:27:87","nodeType":"YulAssignment","src":"16790:27:87","value":{"arguments":[{"name":"length","nativeSrc":"16804:6:87","nodeType":"YulIdentifier","src":"16804:6:87"},{"kind":"number","nativeSrc":"16812:4:87","nodeType":"YulLiteral","src":"16812:4:87","type":"","value":"0x7f"}],"functionName":{"name":"and","nativeSrc":"16800:3:87","nodeType":"YulIdentifier","src":"16800:3:87"},"nativeSrc":"16800:17:87","nodeType":"YulFunctionCall","src":"16800:17:87"},"variableNames":[{"name":"length","nativeSrc":"16790:6:87","nodeType":"YulIdentifier","src":"16790:6:87"}]}]},"condition":{"arguments":[{"name":"outOfPlaceEncoding","nativeSrc":"16768:18:87","nodeType":"YulIdentifier","src":"16768:18:87"}],"functionName":{"name":"iszero","nativeSrc":"16761:6:87","nodeType":"YulIdentifier","src":"16761:6:87"},"nativeSrc":"16761:26:87","nodeType":"YulFunctionCall","src":"16761:26:87"},"nativeSrc":"16758:61:87","nodeType":"YulIf","src":"16758:61:87"},{"body":{"nativeSrc":"16878:111:87","nodeType":"YulBlock","src":"16878:111:87","statements":[{"expression":{"arguments":[{"kind":"number","nativeSrc":"16899:1:87","nodeType":"YulLiteral","src":"16899:1:87","type":"","value":"0"},{"arguments":[{"kind":"number","nativeSrc":"16906:3:87","nodeType":"YulLiteral","src":"16906:3:87","type":"","value":"224"},{"kind":"number","nativeSrc":"16911:10:87","nodeType":"YulLiteral","src":"16911:10:87","type":"","value":"0x4e487b71"}],"functionName":{"name":"shl","nativeSrc":"16902:3:87","nodeType":"YulIdentifier","src":"16902:3:87"},"nativeSrc":"16902:20:87","nodeType":"YulFunctionCall","src":"16902:20:87"}],"functionName":{"name":"mstore","nativeSrc":"16892:6:87","nodeType":"YulIdentifier","src":"16892:6:87"},"nativeSrc":"16892:31:87","nodeType":"YulFunctionCall","src":"16892:31:87"},"nativeSrc":"16892:31:87","nodeType":"YulExpressionStatement","src":"16892:31:87"},{"expression":{"arguments":[{"kind":"number","nativeSrc":"16943:1:87","nodeType":"YulLiteral","src":"16943:1:87","type":"","value":"4"},{"kind":"number","nativeSrc":"16946:4:87","nodeType":"YulLiteral","src":"16946:4:87","type":"","value":"0x22"}],"functionName":{"name":"mstore","nativeSrc":"16936:6:87","nodeType":"YulIdentifier","src":"16936:6:87"},"nativeSrc":"16936:15:87","nodeType":"YulFunctionCall","src":"16936:15:87"},"nativeSrc":"16936:15:87","nodeType":"YulExpressionStatement","src":"16936:15:87"},{"expression":{"arguments":[{"kind":"number","nativeSrc":"16971:1:87","nodeType":"YulLiteral","src":"16971:1:87","type":"","value":"0"},{"kind":"number","nativeSrc":"16974:4:87","nodeType":"YulLiteral","src":"16974:4:87","type":"","value":"0x24"}],"functionName":{"name":"revert","nativeSrc":"16964:6:87","nodeType":"YulIdentifier","src":"16964:6:87"},"nativeSrc":"16964:15:87","nodeType":"YulFunctionCall","src":"16964:15:87"},"nativeSrc":"16964:15:87","nodeType":"YulExpressionStatement","src":"16964:15:87"}]},"condition":{"arguments":[{"name":"outOfPlaceEncoding","nativeSrc":"16834:18:87","nodeType":"YulIdentifier","src":"16834:18:87"},{"arguments":[{"name":"length","nativeSrc":"16857:6:87","nodeType":"YulIdentifier","src":"16857:6:87"},{"kind":"number","nativeSrc":"16865:2:87","nodeType":"YulLiteral","src":"16865:2:87","type":"","value":"32"}],"functionName":{"name":"lt","nativeSrc":"16854:2:87","nodeType":"YulIdentifier","src":"16854:2:87"},"nativeSrc":"16854:14:87","nodeType":"YulFunctionCall","src":"16854:14:87"}],"functionName":{"name":"eq","nativeSrc":"16831:2:87","nodeType":"YulIdentifier","src":"16831:2:87"},"nativeSrc":"16831:38:87","nodeType":"YulFunctionCall","src":"16831:38:87"},"nativeSrc":"16828:161:87","nodeType":"YulIf","src":"16828:161:87"}]},"name":"extract_byte_array_length","nativeSrc":"16615:380:87","nodeType":"YulFunctionDefinition","parameters":[{"name":"data","nativeSrc":"16650:4:87","nodeType":"YulTypedName","src":"16650:4:87","type":""}],"returnVariables":[{"name":"length","nativeSrc":"16659:6:87","nodeType":"YulTypedName","src":"16659:6:87","type":""}],"src":"16615:380:87"},{"body":{"nativeSrc":"17129:119:87","nodeType":"YulBlock","src":"17129:119:87","statements":[{"nativeSrc":"17139:26:87","nodeType":"YulAssignment","src":"17139:26:87","value":{"arguments":[{"name":"headStart","nativeSrc":"17151:9:87","nodeType":"YulIdentifier","src":"17151:9:87"},{"kind":"number","nativeSrc":"17162:2:87","nodeType":"YulLiteral","src":"17162:2:87","type":"","value":"64"}],"functionName":{"name":"add","nativeSrc":"17147:3:87","nodeType":"YulIdentifier","src":"17147:3:87"},"nativeSrc":"17147:18:87","nodeType":"YulFunctionCall","src":"17147:18:87"},"variableNames":[{"name":"tail","nativeSrc":"17139:4:87","nodeType":"YulIdentifier","src":"17139:4:87"}]},{"expression":{"arguments":[{"name":"headStart","nativeSrc":"17181:9:87","nodeType":"YulIdentifier","src":"17181:9:87"},{"name":"value0","nativeSrc":"17192:6:87","nodeType":"YulIdentifier","src":"17192:6:87"}],"functionName":{"name":"mstore","nativeSrc":"17174:6:87","nodeType":"YulIdentifier","src":"17174:6:87"},"nativeSrc":"17174:25:87","nodeType":"YulFunctionCall","src":"17174:25:87"},"nativeSrc":"17174:25:87","nodeType":"YulExpressionStatement","src":"17174:25:87"},{"expression":{"arguments":[{"arguments":[{"name":"headStart","nativeSrc":"17219:9:87","nodeType":"YulIdentifier","src":"17219:9:87"},{"kind":"number","nativeSrc":"17230:2:87","nodeType":"YulLiteral","src":"17230:2:87","type":"","value":"32"}],"functionName":{"name":"add","nativeSrc":"17215:3:87","nodeType":"YulIdentifier","src":"17215:3:87"},"nativeSrc":"17215:18:87","nodeType":"YulFunctionCall","src":"17215:18:87"},{"name":"value1","nativeSrc":"17235:6:87","nodeType":"YulIdentifier","src":"17235:6:87"}],"functionName":{"name":"mstore","nativeSrc":"17208:6:87","nodeType":"YulIdentifier","src":"17208:6:87"},"nativeSrc":"17208:34:87","nodeType":"YulFunctionCall","src":"17208:34:87"},"nativeSrc":"17208:34:87","nodeType":"YulExpressionStatement","src":"17208:34:87"}]},"name":"abi_encode_tuple_t_uint256_t_uint256__to_t_uint256_t_uint256__fromStack_reversed","nativeSrc":"17000:248:87","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nativeSrc":"17090:9:87","nodeType":"YulTypedName","src":"17090:9:87","type":""},{"name":"value1","nativeSrc":"17101:6:87","nodeType":"YulTypedName","src":"17101:6:87","type":""},{"name":"value0","nativeSrc":"17109:6:87","nodeType":"YulTypedName","src":"17109:6:87","type":""}],"returnVariables":[{"name":"tail","nativeSrc":"17120:4:87","nodeType":"YulTypedName","src":"17120:4:87","type":""}],"src":"17000:248:87"},{"body":{"nativeSrc":"17285:95:87","nodeType":"YulBlock","src":"17285:95:87","statements":[{"expression":{"arguments":[{"kind":"number","nativeSrc":"17302:1:87","nodeType":"YulLiteral","src":"17302:1:87","type":"","value":"0"},{"arguments":[{"kind":"number","nativeSrc":"17309:3:87","nodeType":"YulLiteral","src":"17309:3:87","type":"","value":"224"},{"kind":"number","nativeSrc":"17314:10:87","nodeType":"YulLiteral","src":"17314:10:87","type":"","value":"0x4e487b71"}],"functionName":{"name":"shl","nativeSrc":"17305:3:87","nodeType":"YulIdentifier","src":"17305:3:87"},"nativeSrc":"17305:20:87","nodeType":"YulFunctionCall","src":"17305:20:87"}],"functionName":{"name":"mstore","nativeSrc":"17295:6:87","nodeType":"YulIdentifier","src":"17295:6:87"},"nativeSrc":"17295:31:87","nodeType":"YulFunctionCall","src":"17295:31:87"},"nativeSrc":"17295:31:87","nodeType":"YulExpressionStatement","src":"17295:31:87"},{"expression":{"arguments":[{"kind":"number","nativeSrc":"17342:1:87","nodeType":"YulLiteral","src":"17342:1:87","type":"","value":"4"},{"kind":"number","nativeSrc":"17345:4:87","nodeType":"YulLiteral","src":"17345:4:87","type":"","value":"0x11"}],"functionName":{"name":"mstore","nativeSrc":"17335:6:87","nodeType":"YulIdentifier","src":"17335:6:87"},"nativeSrc":"17335:15:87","nodeType":"YulFunctionCall","src":"17335:15:87"},"nativeSrc":"17335:15:87","nodeType":"YulExpressionStatement","src":"17335:15:87"},{"expression":{"arguments":[{"kind":"number","nativeSrc":"17366:1:87","nodeType":"YulLiteral","src":"17366:1:87","type":"","value":"0"},{"kind":"number","nativeSrc":"17369:4:87","nodeType":"YulLiteral","src":"17369:4:87","type":"","value":"0x24"}],"functionName":{"name":"revert","nativeSrc":"17359:6:87","nodeType":"YulIdentifier","src":"17359:6:87"},"nativeSrc":"17359:15:87","nodeType":"YulFunctionCall","src":"17359:15:87"},"nativeSrc":"17359:15:87","nodeType":"YulExpressionStatement","src":"17359:15:87"}]},"name":"panic_error_0x11","nativeSrc":"17253:127:87","nodeType":"YulFunctionDefinition","src":"17253:127:87"},{"body":{"nativeSrc":"17431:102:87","nodeType":"YulBlock","src":"17431:102:87","statements":[{"nativeSrc":"17441:38:87","nodeType":"YulAssignment","src":"17441:38:87","value":{"arguments":[{"arguments":[{"name":"x","nativeSrc":"17456:1:87","nodeType":"YulIdentifier","src":"17456:1:87"},{"kind":"number","nativeSrc":"17459:4:87","nodeType":"YulLiteral","src":"17459:4:87","type":"","value":"0xff"}],"functionName":{"name":"and","nativeSrc":"17452:3:87","nodeType":"YulIdentifier","src":"17452:3:87"},"nativeSrc":"17452:12:87","nodeType":"YulFunctionCall","src":"17452:12:87"},{"arguments":[{"name":"y","nativeSrc":"17470:1:87","nodeType":"YulIdentifier","src":"17470:1:87"},{"kind":"number","nativeSrc":"17473:4:87","nodeType":"YulLiteral","src":"17473:4:87","type":"","value":"0xff"}],"functionName":{"name":"and","nativeSrc":"17466:3:87","nodeType":"YulIdentifier","src":"17466:3:87"},"nativeSrc":"17466:12:87","nodeType":"YulFunctionCall","src":"17466:12:87"}],"functionName":{"name":"add","nativeSrc":"17448:3:87","nodeType":"YulIdentifier","src":"17448:3:87"},"nativeSrc":"17448:31:87","nodeType":"YulFunctionCall","src":"17448:31:87"},"variableNames":[{"name":"sum","nativeSrc":"17441:3:87","nodeType":"YulIdentifier","src":"17441:3:87"}]},{"body":{"nativeSrc":"17505:22:87","nodeType":"YulBlock","src":"17505:22:87","statements":[{"expression":{"arguments":[],"functionName":{"name":"panic_error_0x11","nativeSrc":"17507:16:87","nodeType":"YulIdentifier","src":"17507:16:87"},"nativeSrc":"17507:18:87","nodeType":"YulFunctionCall","src":"17507:18:87"},"nativeSrc":"17507:18:87","nodeType":"YulExpressionStatement","src":"17507:18:87"}]},"condition":{"arguments":[{"name":"sum","nativeSrc":"17494:3:87","nodeType":"YulIdentifier","src":"17494:3:87"},{"kind":"number","nativeSrc":"17499:4:87","nodeType":"YulLiteral","src":"17499:4:87","type":"","value":"0xff"}],"functionName":{"name":"gt","nativeSrc":"17491:2:87","nodeType":"YulIdentifier","src":"17491:2:87"},"nativeSrc":"17491:13:87","nodeType":"YulFunctionCall","src":"17491:13:87"},"nativeSrc":"17488:39:87","nodeType":"YulIf","src":"17488:39:87"}]},"name":"checked_add_t_uint8","nativeSrc":"17385:148:87","nodeType":"YulFunctionDefinition","parameters":[{"name":"x","nativeSrc":"17414:1:87","nodeType":"YulTypedName","src":"17414:1:87","type":""},{"name":"y","nativeSrc":"17417:1:87","nodeType":"YulTypedName","src":"17417:1:87","type":""}],"returnVariables":[{"name":"sum","nativeSrc":"17423:3:87","nodeType":"YulTypedName","src":"17423:3:87","type":""}],"src":"17385:148:87"},{"body":{"nativeSrc":"17570:95:87","nodeType":"YulBlock","src":"17570:95:87","statements":[{"expression":{"arguments":[{"kind":"number","nativeSrc":"17587:1:87","nodeType":"YulLiteral","src":"17587:1:87","type":"","value":"0"},{"arguments":[{"kind":"number","nativeSrc":"17594:3:87","nodeType":"YulLiteral","src":"17594:3:87","type":"","value":"224"},{"kind":"number","nativeSrc":"17599:10:87","nodeType":"YulLiteral","src":"17599:10:87","type":"","value":"0x4e487b71"}],"functionName":{"name":"shl","nativeSrc":"17590:3:87","nodeType":"YulIdentifier","src":"17590:3:87"},"nativeSrc":"17590:20:87","nodeType":"YulFunctionCall","src":"17590:20:87"}],"functionName":{"name":"mstore","nativeSrc":"17580:6:87","nodeType":"YulIdentifier","src":"17580:6:87"},"nativeSrc":"17580:31:87","nodeType":"YulFunctionCall","src":"17580:31:87"},"nativeSrc":"17580:31:87","nodeType":"YulExpressionStatement","src":"17580:31:87"},{"expression":{"arguments":[{"kind":"number","nativeSrc":"17627:1:87","nodeType":"YulLiteral","src":"17627:1:87","type":"","value":"4"},{"kind":"number","nativeSrc":"17630:4:87","nodeType":"YulLiteral","src":"17630:4:87","type":"","value":"0x32"}],"functionName":{"name":"mstore","nativeSrc":"17620:6:87","nodeType":"YulIdentifier","src":"17620:6:87"},"nativeSrc":"17620:15:87","nodeType":"YulFunctionCall","src":"17620:15:87"},"nativeSrc":"17620:15:87","nodeType":"YulExpressionStatement","src":"17620:15:87"},{"expression":{"arguments":[{"kind":"number","nativeSrc":"17651:1:87","nodeType":"YulLiteral","src":"17651:1:87","type":"","value":"0"},{"kind":"number","nativeSrc":"17654:4:87","nodeType":"YulLiteral","src":"17654:4:87","type":"","value":"0x24"}],"functionName":{"name":"revert","nativeSrc":"17644:6:87","nodeType":"YulIdentifier","src":"17644:6:87"},"nativeSrc":"17644:15:87","nodeType":"YulFunctionCall","src":"17644:15:87"},"nativeSrc":"17644:15:87","nodeType":"YulExpressionStatement","src":"17644:15:87"}]},"name":"panic_error_0x32","nativeSrc":"17538:127:87","nodeType":"YulFunctionDefinition","src":"17538:127:87"},{"body":{"nativeSrc":"17751:103:87","nodeType":"YulBlock","src":"17751:103:87","statements":[{"body":{"nativeSrc":"17797:16:87","nodeType":"YulBlock","src":"17797:16:87","statements":[{"expression":{"arguments":[{"kind":"number","nativeSrc":"17806:1:87","nodeType":"YulLiteral","src":"17806:1:87","type":"","value":"0"},{"kind":"number","nativeSrc":"17809:1:87","nodeType":"YulLiteral","src":"17809:1:87","type":"","value":"0"}],"functionName":{"name":"revert","nativeSrc":"17799:6:87","nodeType":"YulIdentifier","src":"17799:6:87"},"nativeSrc":"17799:12:87","nodeType":"YulFunctionCall","src":"17799:12:87"},"nativeSrc":"17799:12:87","nodeType":"YulExpressionStatement","src":"17799:12:87"}]},"condition":{"arguments":[{"arguments":[{"name":"dataEnd","nativeSrc":"17772:7:87","nodeType":"YulIdentifier","src":"17772:7:87"},{"name":"headStart","nativeSrc":"17781:9:87","nodeType":"YulIdentifier","src":"17781:9:87"}],"functionName":{"name":"sub","nativeSrc":"17768:3:87","nodeType":"YulIdentifier","src":"17768:3:87"},"nativeSrc":"17768:23:87","nodeType":"YulFunctionCall","src":"17768:23:87"},{"kind":"number","nativeSrc":"17793:2:87","nodeType":"YulLiteral","src":"17793:2:87","type":"","value":"32"}],"functionName":{"name":"slt","nativeSrc":"17764:3:87","nodeType":"YulIdentifier","src":"17764:3:87"},"nativeSrc":"17764:32:87","nodeType":"YulFunctionCall","src":"17764:32:87"},"nativeSrc":"17761:52:87","nodeType":"YulIf","src":"17761:52:87"},{"nativeSrc":"17822:26:87","nodeType":"YulAssignment","src":"17822:26:87","value":{"arguments":[{"name":"headStart","nativeSrc":"17838:9:87","nodeType":"YulIdentifier","src":"17838:9:87"}],"functionName":{"name":"mload","nativeSrc":"17832:5:87","nodeType":"YulIdentifier","src":"17832:5:87"},"nativeSrc":"17832:16:87","nodeType":"YulFunctionCall","src":"17832:16:87"},"variableNames":[{"name":"value0","nativeSrc":"17822:6:87","nodeType":"YulIdentifier","src":"17822:6:87"}]}]},"name":"abi_decode_tuple_t_bytes32_fromMemory","nativeSrc":"17670:184:87","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nativeSrc":"17717:9:87","nodeType":"YulTypedName","src":"17717:9:87","type":""},{"name":"dataEnd","nativeSrc":"17728:7:87","nodeType":"YulTypedName","src":"17728:7:87","type":""}],"returnVariables":[{"name":"value0","nativeSrc":"17740:6:87","nodeType":"YulTypedName","src":"17740:6:87","type":""}],"src":"17670:184:87"},{"body":{"nativeSrc":"17906:88:87","nodeType":"YulBlock","src":"17906:88:87","statements":[{"body":{"nativeSrc":"17937:22:87","nodeType":"YulBlock","src":"17937:22:87","statements":[{"expression":{"arguments":[],"functionName":{"name":"panic_error_0x11","nativeSrc":"17939:16:87","nodeType":"YulIdentifier","src":"17939:16:87"},"nativeSrc":"17939:18:87","nodeType":"YulFunctionCall","src":"17939:18:87"},"nativeSrc":"17939:18:87","nodeType":"YulExpressionStatement","src":"17939:18:87"}]},"condition":{"arguments":[{"name":"value","nativeSrc":"17922:5:87","nodeType":"YulIdentifier","src":"17922:5:87"},{"arguments":[{"kind":"number","nativeSrc":"17933:1:87","nodeType":"YulLiteral","src":"17933:1:87","type":"","value":"0"}],"functionName":{"name":"not","nativeSrc":"17929:3:87","nodeType":"YulIdentifier","src":"17929:3:87"},"nativeSrc":"17929:6:87","nodeType":"YulFunctionCall","src":"17929:6:87"}],"functionName":{"name":"eq","nativeSrc":"17919:2:87","nodeType":"YulIdentifier","src":"17919:2:87"},"nativeSrc":"17919:17:87","nodeType":"YulFunctionCall","src":"17919:17:87"},"nativeSrc":"17916:43:87","nodeType":"YulIf","src":"17916:43:87"},{"nativeSrc":"17968:20:87","nodeType":"YulAssignment","src":"17968:20:87","value":{"arguments":[{"name":"value","nativeSrc":"17979:5:87","nodeType":"YulIdentifier","src":"17979:5:87"},{"kind":"number","nativeSrc":"17986:1:87","nodeType":"YulLiteral","src":"17986:1:87","type":"","value":"1"}],"functionName":{"name":"add","nativeSrc":"17975:3:87","nodeType":"YulIdentifier","src":"17975:3:87"},"nativeSrc":"17975:13:87","nodeType":"YulFunctionCall","src":"17975:13:87"},"variableNames":[{"name":"ret","nativeSrc":"17968:3:87","nodeType":"YulIdentifier","src":"17968:3:87"}]}]},"name":"increment_t_uint256","nativeSrc":"17859:135:87","nodeType":"YulFunctionDefinition","parameters":[{"name":"value","nativeSrc":"17888:5:87","nodeType":"YulTypedName","src":"17888:5:87","type":""}],"returnVariables":[{"name":"ret","nativeSrc":"17898:3:87","nodeType":"YulTypedName","src":"17898:3:87","type":""}],"src":"17859:135:87"},{"body":{"nativeSrc":"18046:169:87","nodeType":"YulBlock","src":"18046:169:87","statements":[{"nativeSrc":"18056:16:87","nodeType":"YulAssignment","src":"18056:16:87","value":{"arguments":[{"name":"x","nativeSrc":"18067:1:87","nodeType":"YulIdentifier","src":"18067:1:87"},{"name":"y","nativeSrc":"18070:1:87","nodeType":"YulIdentifier","src":"18070:1:87"}],"functionName":{"name":"add","nativeSrc":"18063:3:87","nodeType":"YulIdentifier","src":"18063:3:87"},"nativeSrc":"18063:9:87","nodeType":"YulFunctionCall","src":"18063:9:87"},"variableNames":[{"name":"sum","nativeSrc":"18056:3:87","nodeType":"YulIdentifier","src":"18056:3:87"}]},{"nativeSrc":"18081:21:87","nodeType":"YulVariableDeclaration","src":"18081:21:87","value":{"arguments":[{"name":"sum","nativeSrc":"18095:3:87","nodeType":"YulIdentifier","src":"18095:3:87"},{"name":"y","nativeSrc":"18100:1:87","nodeType":"YulIdentifier","src":"18100:1:87"}],"functionName":{"name":"slt","nativeSrc":"18091:3:87","nodeType":"YulIdentifier","src":"18091:3:87"},"nativeSrc":"18091:11:87","nodeType":"YulFunctionCall","src":"18091:11:87"},"variables":[{"name":"_1","nativeSrc":"18085:2:87","nodeType":"YulTypedName","src":"18085:2:87","type":""}]},{"nativeSrc":"18111:19:87","nodeType":"YulVariableDeclaration","src":"18111:19:87","value":{"arguments":[{"name":"x","nativeSrc":"18125:1:87","nodeType":"YulIdentifier","src":"18125:1:87"},{"kind":"number","nativeSrc":"18128:1:87","nodeType":"YulLiteral","src":"18128:1:87","type":"","value":"0"}],"functionName":{"name":"slt","nativeSrc":"18121:3:87","nodeType":"YulIdentifier","src":"18121:3:87"},"nativeSrc":"18121:9:87","nodeType":"YulFunctionCall","src":"18121:9:87"},"variables":[{"name":"_2","nativeSrc":"18115:2:87","nodeType":"YulTypedName","src":"18115:2:87","type":""}]},{"body":{"nativeSrc":"18187:22:87","nodeType":"YulBlock","src":"18187:22:87","statements":[{"expression":{"arguments":[],"functionName":{"name":"panic_error_0x11","nativeSrc":"18189:16:87","nodeType":"YulIdentifier","src":"18189:16:87"},"nativeSrc":"18189:18:87","nodeType":"YulFunctionCall","src":"18189:18:87"},"nativeSrc":"18189:18:87","nodeType":"YulExpressionStatement","src":"18189:18:87"}]},"condition":{"arguments":[{"arguments":[{"arguments":[{"name":"_2","nativeSrc":"18156:2:87","nodeType":"YulIdentifier","src":"18156:2:87"}],"functionName":{"name":"iszero","nativeSrc":"18149:6:87","nodeType":"YulIdentifier","src":"18149:6:87"},"nativeSrc":"18149:10:87","nodeType":"YulFunctionCall","src":"18149:10:87"},{"name":"_1","nativeSrc":"18161:2:87","nodeType":"YulIdentifier","src":"18161:2:87"}],"functionName":{"name":"and","nativeSrc":"18145:3:87","nodeType":"YulIdentifier","src":"18145:3:87"},"nativeSrc":"18145:19:87","nodeType":"YulFunctionCall","src":"18145:19:87"},{"arguments":[{"name":"_2","nativeSrc":"18170:2:87","nodeType":"YulIdentifier","src":"18170:2:87"},{"arguments":[{"name":"_1","nativeSrc":"18181:2:87","nodeType":"YulIdentifier","src":"18181:2:87"}],"functionName":{"name":"iszero","nativeSrc":"18174:6:87","nodeType":"YulIdentifier","src":"18174:6:87"},"nativeSrc":"18174:10:87","nodeType":"YulFunctionCall","src":"18174:10:87"}],"functionName":{"name":"and","nativeSrc":"18166:3:87","nodeType":"YulIdentifier","src":"18166:3:87"},"nativeSrc":"18166:19:87","nodeType":"YulFunctionCall","src":"18166:19:87"}],"functionName":{"name":"or","nativeSrc":"18142:2:87","nodeType":"YulIdentifier","src":"18142:2:87"},"nativeSrc":"18142:44:87","nodeType":"YulFunctionCall","src":"18142:44:87"},"nativeSrc":"18139:70:87","nodeType":"YulIf","src":"18139:70:87"}]},"name":"checked_add_t_int256","nativeSrc":"17999:216:87","nodeType":"YulFunctionDefinition","parameters":[{"name":"x","nativeSrc":"18029:1:87","nodeType":"YulTypedName","src":"18029:1:87","type":""},{"name":"y","nativeSrc":"18032:1:87","nodeType":"YulTypedName","src":"18032:1:87","type":""}],"returnVariables":[{"name":"sum","nativeSrc":"18038:3:87","nodeType":"YulTypedName","src":"18038:3:87","type":""}],"src":"17999:216:87"},{"body":{"nativeSrc":"18404:162:87","nodeType":"YulBlock","src":"18404:162:87","statements":[{"nativeSrc":"18414:26:87","nodeType":"YulAssignment","src":"18414:26:87","value":{"arguments":[{"name":"headStart","nativeSrc":"18426:9:87","nodeType":"YulIdentifier","src":"18426:9:87"},{"kind":"number","nativeSrc":"18437:2:87","nodeType":"YulLiteral","src":"18437:2:87","type":"","value":"96"}],"functionName":{"name":"add","nativeSrc":"18422:3:87","nodeType":"YulIdentifier","src":"18422:3:87"},"nativeSrc":"18422:18:87","nodeType":"YulFunctionCall","src":"18422:18:87"},"variableNames":[{"name":"tail","nativeSrc":"18414:4:87","nodeType":"YulIdentifier","src":"18414:4:87"}]},{"expression":{"arguments":[{"name":"headStart","nativeSrc":"18456:9:87","nodeType":"YulIdentifier","src":"18456:9:87"},{"name":"value0","nativeSrc":"18467:6:87","nodeType":"YulIdentifier","src":"18467:6:87"}],"functionName":{"name":"mstore","nativeSrc":"18449:6:87","nodeType":"YulIdentifier","src":"18449:6:87"},"nativeSrc":"18449:25:87","nodeType":"YulFunctionCall","src":"18449:25:87"},"nativeSrc":"18449:25:87","nodeType":"YulExpressionStatement","src":"18449:25:87"},{"expression":{"arguments":[{"arguments":[{"name":"headStart","nativeSrc":"18494:9:87","nodeType":"YulIdentifier","src":"18494:9:87"},{"kind":"number","nativeSrc":"18505:2:87","nodeType":"YulLiteral","src":"18505:2:87","type":"","value":"32"}],"functionName":{"name":"add","nativeSrc":"18490:3:87","nodeType":"YulIdentifier","src":"18490:3:87"},"nativeSrc":"18490:18:87","nodeType":"YulFunctionCall","src":"18490:18:87"},{"name":"value1","nativeSrc":"18510:6:87","nodeType":"YulIdentifier","src":"18510:6:87"}],"functionName":{"name":"mstore","nativeSrc":"18483:6:87","nodeType":"YulIdentifier","src":"18483:6:87"},"nativeSrc":"18483:34:87","nodeType":"YulFunctionCall","src":"18483:34:87"},"nativeSrc":"18483:34:87","nodeType":"YulExpressionStatement","src":"18483:34:87"},{"expression":{"arguments":[{"arguments":[{"name":"headStart","nativeSrc":"18537:9:87","nodeType":"YulIdentifier","src":"18537:9:87"},{"kind":"number","nativeSrc":"18548:2:87","nodeType":"YulLiteral","src":"18548:2:87","type":"","value":"64"}],"functionName":{"name":"add","nativeSrc":"18533:3:87","nodeType":"YulIdentifier","src":"18533:3:87"},"nativeSrc":"18533:18:87","nodeType":"YulFunctionCall","src":"18533:18:87"},{"name":"value2","nativeSrc":"18553:6:87","nodeType":"YulIdentifier","src":"18553:6:87"}],"functionName":{"name":"mstore","nativeSrc":"18526:6:87","nodeType":"YulIdentifier","src":"18526:6:87"},"nativeSrc":"18526:34:87","nodeType":"YulFunctionCall","src":"18526:34:87"},"nativeSrc":"18526:34:87","nodeType":"YulExpressionStatement","src":"18526:34:87"}]},"name":"abi_encode_tuple_t_userDefinedValueType$_SlotIndex_$17382_t_int256_t_int256__to_t_uint256_t_int256_t_int256__fromStack_reversed","nativeSrc":"18220:346:87","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nativeSrc":"18357:9:87","nodeType":"YulTypedName","src":"18357:9:87","type":""},{"name":"value2","nativeSrc":"18368:6:87","nodeType":"YulTypedName","src":"18368:6:87","type":""},{"name":"value1","nativeSrc":"18376:6:87","nodeType":"YulTypedName","src":"18376:6:87","type":""},{"name":"value0","nativeSrc":"18384:6:87","nodeType":"YulTypedName","src":"18384:6:87","type":""}],"returnVariables":[{"name":"tail","nativeSrc":"18395:4:87","nodeType":"YulTypedName","src":"18395:4:87","type":""}],"src":"18220:346:87"},{"body":{"nativeSrc":"18728:188:87","nodeType":"YulBlock","src":"18728:188:87","statements":[{"nativeSrc":"18738:26:87","nodeType":"YulAssignment","src":"18738:26:87","value":{"arguments":[{"name":"headStart","nativeSrc":"18750:9:87","nodeType":"YulIdentifier","src":"18750:9:87"},{"kind":"number","nativeSrc":"18761:2:87","nodeType":"YulLiteral","src":"18761:2:87","type":"","value":"96"}],"functionName":{"name":"add","nativeSrc":"18746:3:87","nodeType":"YulIdentifier","src":"18746:3:87"},"nativeSrc":"18746:18:87","nodeType":"YulFunctionCall","src":"18746:18:87"},"variableNames":[{"name":"tail","nativeSrc":"18738:4:87","nodeType":"YulIdentifier","src":"18738:4:87"}]},{"expression":{"arguments":[{"name":"headStart","nativeSrc":"18780:9:87","nodeType":"YulIdentifier","src":"18780:9:87"},{"arguments":[{"name":"value0","nativeSrc":"18795:6:87","nodeType":"YulIdentifier","src":"18795:6:87"},{"arguments":[{"arguments":[{"kind":"number","nativeSrc":"18811:3:87","nodeType":"YulLiteral","src":"18811:3:87","type":"","value":"160"},{"kind":"number","nativeSrc":"18816:1:87","nodeType":"YulLiteral","src":"18816:1:87","type":"","value":"1"}],"functionName":{"name":"shl","nativeSrc":"18807:3:87","nodeType":"YulIdentifier","src":"18807:3:87"},"nativeSrc":"18807:11:87","nodeType":"YulFunctionCall","src":"18807:11:87"},{"kind":"number","nativeSrc":"18820:1:87","nodeType":"YulLiteral","src":"18820:1:87","type":"","value":"1"}],"functionName":{"name":"sub","nativeSrc":"18803:3:87","nodeType":"YulIdentifier","src":"18803:3:87"},"nativeSrc":"18803:19:87","nodeType":"YulFunctionCall","src":"18803:19:87"}],"functionName":{"name":"and","nativeSrc":"18791:3:87","nodeType":"YulIdentifier","src":"18791:3:87"},"nativeSrc":"18791:32:87","nodeType":"YulFunctionCall","src":"18791:32:87"}],"functionName":{"name":"mstore","nativeSrc":"18773:6:87","nodeType":"YulIdentifier","src":"18773:6:87"},"nativeSrc":"18773:51:87","nodeType":"YulFunctionCall","src":"18773:51:87"},"nativeSrc":"18773:51:87","nodeType":"YulExpressionStatement","src":"18773:51:87"},{"expression":{"arguments":[{"arguments":[{"name":"headStart","nativeSrc":"18844:9:87","nodeType":"YulIdentifier","src":"18844:9:87"},{"kind":"number","nativeSrc":"18855:2:87","nodeType":"YulLiteral","src":"18855:2:87","type":"","value":"32"}],"functionName":{"name":"add","nativeSrc":"18840:3:87","nodeType":"YulIdentifier","src":"18840:3:87"},"nativeSrc":"18840:18:87","nodeType":"YulFunctionCall","src":"18840:18:87"},{"name":"value1","nativeSrc":"18860:6:87","nodeType":"YulIdentifier","src":"18860:6:87"}],"functionName":{"name":"mstore","nativeSrc":"18833:6:87","nodeType":"YulIdentifier","src":"18833:6:87"},"nativeSrc":"18833:34:87","nodeType":"YulFunctionCall","src":"18833:34:87"},"nativeSrc":"18833:34:87","nodeType":"YulExpressionStatement","src":"18833:34:87"},{"expression":{"arguments":[{"arguments":[{"name":"headStart","nativeSrc":"18887:9:87","nodeType":"YulIdentifier","src":"18887:9:87"},{"kind":"number","nativeSrc":"18898:2:87","nodeType":"YulLiteral","src":"18898:2:87","type":"","value":"64"}],"functionName":{"name":"add","nativeSrc":"18883:3:87","nodeType":"YulIdentifier","src":"18883:3:87"},"nativeSrc":"18883:18:87","nodeType":"YulFunctionCall","src":"18883:18:87"},{"name":"value2","nativeSrc":"18903:6:87","nodeType":"YulIdentifier","src":"18903:6:87"}],"functionName":{"name":"mstore","nativeSrc":"18876:6:87","nodeType":"YulIdentifier","src":"18876:6:87"},"nativeSrc":"18876:34:87","nodeType":"YulFunctionCall","src":"18876:34:87"},"nativeSrc":"18876:34:87","nodeType":"YulExpressionStatement","src":"18876:34:87"}]},"name":"abi_encode_tuple_t_address_t_uint256_t_uint256__to_t_address_t_uint256_t_uint256__fromStack_reversed","nativeSrc":"18571:345:87","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nativeSrc":"18681:9:87","nodeType":"YulTypedName","src":"18681:9:87","type":""},{"name":"value2","nativeSrc":"18692:6:87","nodeType":"YulTypedName","src":"18692:6:87","type":""},{"name":"value1","nativeSrc":"18700:6:87","nodeType":"YulTypedName","src":"18700:6:87","type":""},{"name":"value0","nativeSrc":"18708:6:87","nodeType":"YulTypedName","src":"18708:6:87","type":""}],"returnVariables":[{"name":"tail","nativeSrc":"18719:4:87","nodeType":"YulTypedName","src":"18719:4:87","type":""}],"src":"18571:345:87"},{"body":{"nativeSrc":"19047:102:87","nodeType":"YulBlock","src":"19047:102:87","statements":[{"nativeSrc":"19057:26:87","nodeType":"YulAssignment","src":"19057:26:87","value":{"arguments":[{"name":"headStart","nativeSrc":"19069:9:87","nodeType":"YulIdentifier","src":"19069:9:87"},{"kind":"number","nativeSrc":"19080:2:87","nodeType":"YulLiteral","src":"19080:2:87","type":"","value":"32"}],"functionName":{"name":"add","nativeSrc":"19065:3:87","nodeType":"YulIdentifier","src":"19065:3:87"},"nativeSrc":"19065:18:87","nodeType":"YulFunctionCall","src":"19065:18:87"},"variableNames":[{"name":"tail","nativeSrc":"19057:4:87","nodeType":"YulIdentifier","src":"19057:4:87"}]},{"expression":{"arguments":[{"name":"headStart","nativeSrc":"19099:9:87","nodeType":"YulIdentifier","src":"19099:9:87"},{"arguments":[{"name":"value0","nativeSrc":"19114:6:87","nodeType":"YulIdentifier","src":"19114:6:87"},{"arguments":[{"arguments":[{"kind":"number","nativeSrc":"19130:3:87","nodeType":"YulLiteral","src":"19130:3:87","type":"","value":"160"},{"kind":"number","nativeSrc":"19135:1:87","nodeType":"YulLiteral","src":"19135:1:87","type":"","value":"1"}],"functionName":{"name":"shl","nativeSrc":"19126:3:87","nodeType":"YulIdentifier","src":"19126:3:87"},"nativeSrc":"19126:11:87","nodeType":"YulFunctionCall","src":"19126:11:87"},{"kind":"number","nativeSrc":"19139:1:87","nodeType":"YulLiteral","src":"19139:1:87","type":"","value":"1"}],"functionName":{"name":"sub","nativeSrc":"19122:3:87","nodeType":"YulIdentifier","src":"19122:3:87"},"nativeSrc":"19122:19:87","nodeType":"YulFunctionCall","src":"19122:19:87"}],"functionName":{"name":"and","nativeSrc":"19110:3:87","nodeType":"YulIdentifier","src":"19110:3:87"},"nativeSrc":"19110:32:87","nodeType":"YulFunctionCall","src":"19110:32:87"}],"functionName":{"name":"mstore","nativeSrc":"19092:6:87","nodeType":"YulIdentifier","src":"19092:6:87"},"nativeSrc":"19092:51:87","nodeType":"YulFunctionCall","src":"19092:51:87"},"nativeSrc":"19092:51:87","nodeType":"YulExpressionStatement","src":"19092:51:87"}]},"name":"abi_encode_tuple_t_contract$_IInvestStrategy_$20725__to_t_address__fromStack_reversed","nativeSrc":"18921:228:87","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nativeSrc":"19016:9:87","nodeType":"YulTypedName","src":"19016:9:87","type":""},{"name":"value0","nativeSrc":"19027:6:87","nodeType":"YulTypedName","src":"19027:6:87","type":""}],"returnVariables":[{"name":"tail","nativeSrc":"19038:4:87","nodeType":"YulTypedName","src":"19038:4:87","type":""}],"src":"18921:228:87"},{"body":{"nativeSrc":"19202:77:87","nodeType":"YulBlock","src":"19202:77:87","statements":[{"nativeSrc":"19212:16:87","nodeType":"YulAssignment","src":"19212:16:87","value":{"arguments":[{"name":"x","nativeSrc":"19223:1:87","nodeType":"YulIdentifier","src":"19223:1:87"},{"name":"y","nativeSrc":"19226:1:87","nodeType":"YulIdentifier","src":"19226:1:87"}],"functionName":{"name":"add","nativeSrc":"19219:3:87","nodeType":"YulIdentifier","src":"19219:3:87"},"nativeSrc":"19219:9:87","nodeType":"YulFunctionCall","src":"19219:9:87"},"variableNames":[{"name":"sum","nativeSrc":"19212:3:87","nodeType":"YulIdentifier","src":"19212:3:87"}]},{"body":{"nativeSrc":"19251:22:87","nodeType":"YulBlock","src":"19251:22:87","statements":[{"expression":{"arguments":[],"functionName":{"name":"panic_error_0x11","nativeSrc":"19253:16:87","nodeType":"YulIdentifier","src":"19253:16:87"},"nativeSrc":"19253:18:87","nodeType":"YulFunctionCall","src":"19253:18:87"},"nativeSrc":"19253:18:87","nodeType":"YulExpressionStatement","src":"19253:18:87"}]},"condition":{"arguments":[{"name":"x","nativeSrc":"19243:1:87","nodeType":"YulIdentifier","src":"19243:1:87"},{"name":"sum","nativeSrc":"19246:3:87","nodeType":"YulIdentifier","src":"19246:3:87"}],"functionName":{"name":"gt","nativeSrc":"19240:2:87","nodeType":"YulIdentifier","src":"19240:2:87"},"nativeSrc":"19240:10:87","nodeType":"YulFunctionCall","src":"19240:10:87"},"nativeSrc":"19237:36:87","nodeType":"YulIf","src":"19237:36:87"}]},"name":"checked_add_t_uint256","nativeSrc":"19154:125:87","nodeType":"YulFunctionDefinition","parameters":[{"name":"x","nativeSrc":"19185:1:87","nodeType":"YulTypedName","src":"19185:1:87","type":""},{"name":"y","nativeSrc":"19188:1:87","nodeType":"YulTypedName","src":"19188:1:87","type":""}],"returnVariables":[{"name":"sum","nativeSrc":"19194:3:87","nodeType":"YulTypedName","src":"19194:3:87","type":""}],"src":"19154:125:87"},{"body":{"nativeSrc":"19409:156:87","nodeType":"YulBlock","src":"19409:156:87","statements":[{"nativeSrc":"19419:26:87","nodeType":"YulAssignment","src":"19419:26:87","value":{"arguments":[{"name":"headStart","nativeSrc":"19431:9:87","nodeType":"YulIdentifier","src":"19431:9:87"},{"kind":"number","nativeSrc":"19442:2:87","nodeType":"YulLiteral","src":"19442:2:87","type":"","value":"64"}],"functionName":{"name":"add","nativeSrc":"19427:3:87","nodeType":"YulIdentifier","src":"19427:3:87"},"nativeSrc":"19427:18:87","nodeType":"YulFunctionCall","src":"19427:18:87"},"variableNames":[{"name":"tail","nativeSrc":"19419:4:87","nodeType":"YulIdentifier","src":"19419:4:87"}]},{"expression":{"arguments":[{"name":"headStart","nativeSrc":"19461:9:87","nodeType":"YulIdentifier","src":"19461:9:87"},{"arguments":[{"name":"value0","nativeSrc":"19476:6:87","nodeType":"YulIdentifier","src":"19476:6:87"},{"arguments":[{"arguments":[{"kind":"number","nativeSrc":"19492:3:87","nodeType":"YulLiteral","src":"19492:3:87","type":"","value":"160"},{"kind":"number","nativeSrc":"19497:1:87","nodeType":"YulLiteral","src":"19497:1:87","type":"","value":"1"}],"functionName":{"name":"shl","nativeSrc":"19488:3:87","nodeType":"YulIdentifier","src":"19488:3:87"},"nativeSrc":"19488:11:87","nodeType":"YulFunctionCall","src":"19488:11:87"},{"kind":"number","nativeSrc":"19501:1:87","nodeType":"YulLiteral","src":"19501:1:87","type":"","value":"1"}],"functionName":{"name":"sub","nativeSrc":"19484:3:87","nodeType":"YulIdentifier","src":"19484:3:87"},"nativeSrc":"19484:19:87","nodeType":"YulFunctionCall","src":"19484:19:87"}],"functionName":{"name":"and","nativeSrc":"19472:3:87","nodeType":"YulIdentifier","src":"19472:3:87"},"nativeSrc":"19472:32:87","nodeType":"YulFunctionCall","src":"19472:32:87"}],"functionName":{"name":"mstore","nativeSrc":"19454:6:87","nodeType":"YulIdentifier","src":"19454:6:87"},"nativeSrc":"19454:51:87","nodeType":"YulFunctionCall","src":"19454:51:87"},"nativeSrc":"19454:51:87","nodeType":"YulExpressionStatement","src":"19454:51:87"},{"expression":{"arguments":[{"arguments":[{"name":"headStart","nativeSrc":"19525:9:87","nodeType":"YulIdentifier","src":"19525:9:87"},{"kind":"number","nativeSrc":"19536:2:87","nodeType":"YulLiteral","src":"19536:2:87","type":"","value":"32"}],"functionName":{"name":"add","nativeSrc":"19521:3:87","nodeType":"YulIdentifier","src":"19521:3:87"},"nativeSrc":"19521:18:87","nodeType":"YulFunctionCall","src":"19521:18:87"},{"arguments":[{"name":"value1","nativeSrc":"19545:6:87","nodeType":"YulIdentifier","src":"19545:6:87"},{"kind":"number","nativeSrc":"19553:4:87","nodeType":"YulLiteral","src":"19553:4:87","type":"","value":"0xff"}],"functionName":{"name":"and","nativeSrc":"19541:3:87","nodeType":"YulIdentifier","src":"19541:3:87"},"nativeSrc":"19541:17:87","nodeType":"YulFunctionCall","src":"19541:17:87"}],"functionName":{"name":"mstore","nativeSrc":"19514:6:87","nodeType":"YulIdentifier","src":"19514:6:87"},"nativeSrc":"19514:45:87","nodeType":"YulFunctionCall","src":"19514:45:87"},"nativeSrc":"19514:45:87","nodeType":"YulExpressionStatement","src":"19514:45:87"}]},"name":"abi_encode_tuple_t_address_t_uint8__to_t_address_t_uint8__fromStack_reversed","nativeSrc":"19284:281:87","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nativeSrc":"19370:9:87","nodeType":"YulTypedName","src":"19370:9:87","type":""},{"name":"value1","nativeSrc":"19381:6:87","nodeType":"YulTypedName","src":"19381:6:87","type":""},{"name":"value0","nativeSrc":"19389:6:87","nodeType":"YulTypedName","src":"19389:6:87","type":""}],"returnVariables":[{"name":"tail","nativeSrc":"19400:4:87","nodeType":"YulTypedName","src":"19400:4:87","type":""}],"src":"19284:281:87"},{"body":{"nativeSrc":"19602:95:87","nodeType":"YulBlock","src":"19602:95:87","statements":[{"expression":{"arguments":[{"kind":"number","nativeSrc":"19619:1:87","nodeType":"YulLiteral","src":"19619:1:87","type":"","value":"0"},{"arguments":[{"kind":"number","nativeSrc":"19626:3:87","nodeType":"YulLiteral","src":"19626:3:87","type":"","value":"224"},{"kind":"number","nativeSrc":"19631:10:87","nodeType":"YulLiteral","src":"19631:10:87","type":"","value":"0x4e487b71"}],"functionName":{"name":"shl","nativeSrc":"19622:3:87","nodeType":"YulIdentifier","src":"19622:3:87"},"nativeSrc":"19622:20:87","nodeType":"YulFunctionCall","src":"19622:20:87"}],"functionName":{"name":"mstore","nativeSrc":"19612:6:87","nodeType":"YulIdentifier","src":"19612:6:87"},"nativeSrc":"19612:31:87","nodeType":"YulFunctionCall","src":"19612:31:87"},"nativeSrc":"19612:31:87","nodeType":"YulExpressionStatement","src":"19612:31:87"},{"expression":{"arguments":[{"kind":"number","nativeSrc":"19659:1:87","nodeType":"YulLiteral","src":"19659:1:87","type":"","value":"4"},{"kind":"number","nativeSrc":"19662:4:87","nodeType":"YulLiteral","src":"19662:4:87","type":"","value":"0x12"}],"functionName":{"name":"mstore","nativeSrc":"19652:6:87","nodeType":"YulIdentifier","src":"19652:6:87"},"nativeSrc":"19652:15:87","nodeType":"YulFunctionCall","src":"19652:15:87"},"nativeSrc":"19652:15:87","nodeType":"YulExpressionStatement","src":"19652:15:87"},{"expression":{"arguments":[{"kind":"number","nativeSrc":"19683:1:87","nodeType":"YulLiteral","src":"19683:1:87","type":"","value":"0"},{"kind":"number","nativeSrc":"19686:4:87","nodeType":"YulLiteral","src":"19686:4:87","type":"","value":"0x24"}],"functionName":{"name":"revert","nativeSrc":"19676:6:87","nodeType":"YulIdentifier","src":"19676:6:87"},"nativeSrc":"19676:15:87","nodeType":"YulFunctionCall","src":"19676:15:87"},"nativeSrc":"19676:15:87","nodeType":"YulExpressionStatement","src":"19676:15:87"}]},"name":"panic_error_0x12","nativeSrc":"19570:127:87","nodeType":"YulFunctionDefinition","src":"19570:127:87"},{"body":{"nativeSrc":"19748:74:87","nodeType":"YulBlock","src":"19748:74:87","statements":[{"body":{"nativeSrc":"19771:22:87","nodeType":"YulBlock","src":"19771:22:87","statements":[{"expression":{"arguments":[],"functionName":{"name":"panic_error_0x12","nativeSrc":"19773:16:87","nodeType":"YulIdentifier","src":"19773:16:87"},"nativeSrc":"19773:18:87","nodeType":"YulFunctionCall","src":"19773:18:87"},"nativeSrc":"19773:18:87","nodeType":"YulExpressionStatement","src":"19773:18:87"}]},"condition":{"arguments":[{"name":"y","nativeSrc":"19768:1:87","nodeType":"YulIdentifier","src":"19768:1:87"}],"functionName":{"name":"iszero","nativeSrc":"19761:6:87","nodeType":"YulIdentifier","src":"19761:6:87"},"nativeSrc":"19761:9:87","nodeType":"YulFunctionCall","src":"19761:9:87"},"nativeSrc":"19758:35:87","nodeType":"YulIf","src":"19758:35:87"},{"nativeSrc":"19802:14:87","nodeType":"YulAssignment","src":"19802:14:87","value":{"arguments":[{"name":"x","nativeSrc":"19811:1:87","nodeType":"YulIdentifier","src":"19811:1:87"},{"name":"y","nativeSrc":"19814:1:87","nodeType":"YulIdentifier","src":"19814:1:87"}],"functionName":{"name":"div","nativeSrc":"19807:3:87","nodeType":"YulIdentifier","src":"19807:3:87"},"nativeSrc":"19807:9:87","nodeType":"YulFunctionCall","src":"19807:9:87"},"variableNames":[{"name":"r","nativeSrc":"19802:1:87","nodeType":"YulIdentifier","src":"19802:1:87"}]}]},"name":"checked_div_t_uint256","nativeSrc":"19702:120:87","nodeType":"YulFunctionDefinition","parameters":[{"name":"x","nativeSrc":"19733:1:87","nodeType":"YulTypedName","src":"19733:1:87","type":""},{"name":"y","nativeSrc":"19736:1:87","nodeType":"YulTypedName","src":"19736:1:87","type":""}],"returnVariables":[{"name":"r","nativeSrc":"19742:1:87","nodeType":"YulTypedName","src":"19742:1:87","type":""}],"src":"19702:120:87"},{"body":{"nativeSrc":"19974:471:87","nodeType":"YulBlock","src":"19974:471:87","statements":[{"nativeSrc":"19984:32:87","nodeType":"YulVariableDeclaration","src":"19984:32:87","value":{"arguments":[{"name":"headStart","nativeSrc":"20002:9:87","nodeType":"YulIdentifier","src":"20002:9:87"},{"kind":"number","nativeSrc":"20013:2:87","nodeType":"YulLiteral","src":"20013:2:87","type":"","value":"32"}],"functionName":{"name":"add","nativeSrc":"19998:3:87","nodeType":"YulIdentifier","src":"19998:3:87"},"nativeSrc":"19998:18:87","nodeType":"YulFunctionCall","src":"19998:18:87"},"variables":[{"name":"tail_1","nativeSrc":"19988:6:87","nodeType":"YulTypedName","src":"19988:6:87","type":""}]},{"expression":{"arguments":[{"name":"headStart","nativeSrc":"20032:9:87","nodeType":"YulIdentifier","src":"20032:9:87"},{"kind":"number","nativeSrc":"20043:2:87","nodeType":"YulLiteral","src":"20043:2:87","type":"","value":"32"}],"functionName":{"name":"mstore","nativeSrc":"20025:6:87","nodeType":"YulIdentifier","src":"20025:6:87"},"nativeSrc":"20025:21:87","nodeType":"YulFunctionCall","src":"20025:21:87"},"nativeSrc":"20025:21:87","nodeType":"YulExpressionStatement","src":"20025:21:87"},{"nativeSrc":"20055:17:87","nodeType":"YulVariableDeclaration","src":"20055:17:87","value":{"name":"tail_1","nativeSrc":"20066:6:87","nodeType":"YulIdentifier","src":"20066:6:87"},"variables":[{"name":"pos","nativeSrc":"20059:3:87","nodeType":"YulTypedName","src":"20059:3:87","type":""}]},{"nativeSrc":"20081:27:87","nodeType":"YulVariableDeclaration","src":"20081:27:87","value":{"arguments":[{"name":"value0","nativeSrc":"20101:6:87","nodeType":"YulIdentifier","src":"20101:6:87"}],"functionName":{"name":"mload","nativeSrc":"20095:5:87","nodeType":"YulIdentifier","src":"20095:5:87"},"nativeSrc":"20095:13:87","nodeType":"YulFunctionCall","src":"20095:13:87"},"variables":[{"name":"length","nativeSrc":"20085:6:87","nodeType":"YulTypedName","src":"20085:6:87","type":""}]},{"expression":{"arguments":[{"name":"tail_1","nativeSrc":"20124:6:87","nodeType":"YulIdentifier","src":"20124:6:87"},{"name":"length","nativeSrc":"20132:6:87","nodeType":"YulIdentifier","src":"20132:6:87"}],"functionName":{"name":"mstore","nativeSrc":"20117:6:87","nodeType":"YulIdentifier","src":"20117:6:87"},"nativeSrc":"20117:22:87","nodeType":"YulFunctionCall","src":"20117:22:87"},"nativeSrc":"20117:22:87","nodeType":"YulExpressionStatement","src":"20117:22:87"},{"nativeSrc":"20148:25:87","nodeType":"YulAssignment","src":"20148:25:87","value":{"arguments":[{"name":"headStart","nativeSrc":"20159:9:87","nodeType":"YulIdentifier","src":"20159:9:87"},{"kind":"number","nativeSrc":"20170:2:87","nodeType":"YulLiteral","src":"20170:2:87","type":"","value":"64"}],"functionName":{"name":"add","nativeSrc":"20155:3:87","nodeType":"YulIdentifier","src":"20155:3:87"},"nativeSrc":"20155:18:87","nodeType":"YulFunctionCall","src":"20155:18:87"},"variableNames":[{"name":"pos","nativeSrc":"20148:3:87","nodeType":"YulIdentifier","src":"20148:3:87"}]},{"nativeSrc":"20182:29:87","nodeType":"YulVariableDeclaration","src":"20182:29:87","value":{"arguments":[{"name":"value0","nativeSrc":"20200:6:87","nodeType":"YulIdentifier","src":"20200:6:87"},{"kind":"number","nativeSrc":"20208:2:87","nodeType":"YulLiteral","src":"20208:2:87","type":"","value":"32"}],"functionName":{"name":"add","nativeSrc":"20196:3:87","nodeType":"YulIdentifier","src":"20196:3:87"},"nativeSrc":"20196:15:87","nodeType":"YulFunctionCall","src":"20196:15:87"},"variables":[{"name":"srcPtr","nativeSrc":"20186:6:87","nodeType":"YulTypedName","src":"20186:6:87","type":""}]},{"nativeSrc":"20220:10:87","nodeType":"YulVariableDeclaration","src":"20220:10:87","value":{"kind":"number","nativeSrc":"20229:1:87","nodeType":"YulLiteral","src":"20229:1:87","type":"","value":"0"},"variables":[{"name":"i","nativeSrc":"20224:1:87","nodeType":"YulTypedName","src":"20224:1:87","type":""}]},{"body":{"nativeSrc":"20288:131:87","nodeType":"YulBlock","src":"20288:131:87","statements":[{"expression":{"arguments":[{"name":"pos","nativeSrc":"20309:3:87","nodeType":"YulIdentifier","src":"20309:3:87"},{"arguments":[{"arguments":[{"name":"srcPtr","nativeSrc":"20324:6:87","nodeType":"YulIdentifier","src":"20324:6:87"}],"functionName":{"name":"mload","nativeSrc":"20318:5:87","nodeType":"YulIdentifier","src":"20318:5:87"},"nativeSrc":"20318:13:87","nodeType":"YulFunctionCall","src":"20318:13:87"},{"kind":"number","nativeSrc":"20333:4:87","nodeType":"YulLiteral","src":"20333:4:87","type":"","value":"0xff"}],"functionName":{"name":"and","nativeSrc":"20314:3:87","nodeType":"YulIdentifier","src":"20314:3:87"},"nativeSrc":"20314:24:87","nodeType":"YulFunctionCall","src":"20314:24:87"}],"functionName":{"name":"mstore","nativeSrc":"20302:6:87","nodeType":"YulIdentifier","src":"20302:6:87"},"nativeSrc":"20302:37:87","nodeType":"YulFunctionCall","src":"20302:37:87"},"nativeSrc":"20302:37:87","nodeType":"YulExpressionStatement","src":"20302:37:87"},{"nativeSrc":"20352:19:87","nodeType":"YulAssignment","src":"20352:19:87","value":{"arguments":[{"name":"pos","nativeSrc":"20363:3:87","nodeType":"YulIdentifier","src":"20363:3:87"},{"kind":"number","nativeSrc":"20368:2:87","nodeType":"YulLiteral","src":"20368:2:87","type":"","value":"32"}],"functionName":{"name":"add","nativeSrc":"20359:3:87","nodeType":"YulIdentifier","src":"20359:3:87"},"nativeSrc":"20359:12:87","nodeType":"YulFunctionCall","src":"20359:12:87"},"variableNames":[{"name":"pos","nativeSrc":"20352:3:87","nodeType":"YulIdentifier","src":"20352:3:87"}]},{"nativeSrc":"20384:25:87","nodeType":"YulAssignment","src":"20384:25:87","value":{"arguments":[{"name":"srcPtr","nativeSrc":"20398:6:87","nodeType":"YulIdentifier","src":"20398:6:87"},{"kind":"number","nativeSrc":"20406:2:87","nodeType":"YulLiteral","src":"20406:2:87","type":"","value":"32"}],"functionName":{"name":"add","nativeSrc":"20394:3:87","nodeType":"YulIdentifier","src":"20394:3:87"},"nativeSrc":"20394:15:87","nodeType":"YulFunctionCall","src":"20394:15:87"},"variableNames":[{"name":"srcPtr","nativeSrc":"20384:6:87","nodeType":"YulIdentifier","src":"20384:6:87"}]}]},"condition":{"arguments":[{"name":"i","nativeSrc":"20250:1:87","nodeType":"YulIdentifier","src":"20250:1:87"},{"name":"length","nativeSrc":"20253:6:87","nodeType":"YulIdentifier","src":"20253:6:87"}],"functionName":{"name":"lt","nativeSrc":"20247:2:87","nodeType":"YulIdentifier","src":"20247:2:87"},"nativeSrc":"20247:13:87","nodeType":"YulFunctionCall","src":"20247:13:87"},"nativeSrc":"20239:180:87","nodeType":"YulForLoop","post":{"nativeSrc":"20261:18:87","nodeType":"YulBlock","src":"20261:18:87","statements":[{"nativeSrc":"20263:14:87","nodeType":"YulAssignment","src":"20263:14:87","value":{"arguments":[{"name":"i","nativeSrc":"20272:1:87","nodeType":"YulIdentifier","src":"20272:1:87"},{"kind":"number","nativeSrc":"20275:1:87","nodeType":"YulLiteral","src":"20275:1:87","type":"","value":"1"}],"functionName":{"name":"add","nativeSrc":"20268:3:87","nodeType":"YulIdentifier","src":"20268:3:87"},"nativeSrc":"20268:9:87","nodeType":"YulFunctionCall","src":"20268:9:87"},"variableNames":[{"name":"i","nativeSrc":"20263:1:87","nodeType":"YulIdentifier","src":"20263:1:87"}]}]},"pre":{"nativeSrc":"20243:3:87","nodeType":"YulBlock","src":"20243:3:87","statements":[]},"src":"20239:180:87"},{"nativeSrc":"20428:11:87","nodeType":"YulAssignment","src":"20428:11:87","value":{"name":"pos","nativeSrc":"20436:3:87","nodeType":"YulIdentifier","src":"20436:3:87"},"variableNames":[{"name":"tail","nativeSrc":"20428:4:87","nodeType":"YulIdentifier","src":"20428:4:87"}]}]},"name":"abi_encode_tuple_t_array$_t_uint8_$dyn_memory_ptr__to_t_array$_t_uint8_$dyn_memory_ptr__fromStack_reversed","nativeSrc":"19827:618:87","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nativeSrc":"19943:9:87","nodeType":"YulTypedName","src":"19943:9:87","type":""},{"name":"value0","nativeSrc":"19954:6:87","nodeType":"YulTypedName","src":"19954:6:87","type":""}],"returnVariables":[{"name":"tail","nativeSrc":"19965:4:87","nodeType":"YulTypedName","src":"19965:4:87","type":""}],"src":"19827:618:87"},{"body":{"nativeSrc":"20499:79:87","nodeType":"YulBlock","src":"20499:79:87","statements":[{"nativeSrc":"20509:17:87","nodeType":"YulAssignment","src":"20509:17:87","value":{"arguments":[{"name":"x","nativeSrc":"20521:1:87","nodeType":"YulIdentifier","src":"20521:1:87"},{"name":"y","nativeSrc":"20524:1:87","nodeType":"YulIdentifier","src":"20524:1:87"}],"functionName":{"name":"sub","nativeSrc":"20517:3:87","nodeType":"YulIdentifier","src":"20517:3:87"},"nativeSrc":"20517:9:87","nodeType":"YulFunctionCall","src":"20517:9:87"},"variableNames":[{"name":"diff","nativeSrc":"20509:4:87","nodeType":"YulIdentifier","src":"20509:4:87"}]},{"body":{"nativeSrc":"20550:22:87","nodeType":"YulBlock","src":"20550:22:87","statements":[{"expression":{"arguments":[],"functionName":{"name":"panic_error_0x11","nativeSrc":"20552:16:87","nodeType":"YulIdentifier","src":"20552:16:87"},"nativeSrc":"20552:18:87","nodeType":"YulFunctionCall","src":"20552:18:87"},"nativeSrc":"20552:18:87","nodeType":"YulExpressionStatement","src":"20552:18:87"}]},"condition":{"arguments":[{"name":"diff","nativeSrc":"20541:4:87","nodeType":"YulIdentifier","src":"20541:4:87"},{"name":"x","nativeSrc":"20547:1:87","nodeType":"YulIdentifier","src":"20547:1:87"}],"functionName":{"name":"gt","nativeSrc":"20538:2:87","nodeType":"YulIdentifier","src":"20538:2:87"},"nativeSrc":"20538:11:87","nodeType":"YulFunctionCall","src":"20538:11:87"},"nativeSrc":"20535:37:87","nodeType":"YulIf","src":"20535:37:87"}]},"name":"checked_sub_t_uint256","nativeSrc":"20450:128:87","nodeType":"YulFunctionDefinition","parameters":[{"name":"x","nativeSrc":"20481:1:87","nodeType":"YulTypedName","src":"20481:1:87","type":""},{"name":"y","nativeSrc":"20484:1:87","nodeType":"YulTypedName","src":"20484:1:87","type":""}],"returnVariables":[{"name":"diff","nativeSrc":"20490:4:87","nodeType":"YulTypedName","src":"20490:4:87","type":""}],"src":"20450:128:87"},{"body":{"nativeSrc":"20630:104:87","nodeType":"YulBlock","src":"20630:104:87","statements":[{"nativeSrc":"20640:39:87","nodeType":"YulAssignment","src":"20640:39:87","value":{"arguments":[{"arguments":[{"name":"x","nativeSrc":"20656:1:87","nodeType":"YulIdentifier","src":"20656:1:87"},{"kind":"number","nativeSrc":"20659:4:87","nodeType":"YulLiteral","src":"20659:4:87","type":"","value":"0xff"}],"functionName":{"name":"and","nativeSrc":"20652:3:87","nodeType":"YulIdentifier","src":"20652:3:87"},"nativeSrc":"20652:12:87","nodeType":"YulFunctionCall","src":"20652:12:87"},{"arguments":[{"name":"y","nativeSrc":"20670:1:87","nodeType":"YulIdentifier","src":"20670:1:87"},{"kind":"number","nativeSrc":"20673:4:87","nodeType":"YulLiteral","src":"20673:4:87","type":"","value":"0xff"}],"functionName":{"name":"and","nativeSrc":"20666:3:87","nodeType":"YulIdentifier","src":"20666:3:87"},"nativeSrc":"20666:12:87","nodeType":"YulFunctionCall","src":"20666:12:87"}],"functionName":{"name":"sub","nativeSrc":"20648:3:87","nodeType":"YulIdentifier","src":"20648:3:87"},"nativeSrc":"20648:31:87","nodeType":"YulFunctionCall","src":"20648:31:87"},"variableNames":[{"name":"diff","nativeSrc":"20640:4:87","nodeType":"YulIdentifier","src":"20640:4:87"}]},{"body":{"nativeSrc":"20706:22:87","nodeType":"YulBlock","src":"20706:22:87","statements":[{"expression":{"arguments":[],"functionName":{"name":"panic_error_0x11","nativeSrc":"20708:16:87","nodeType":"YulIdentifier","src":"20708:16:87"},"nativeSrc":"20708:18:87","nodeType":"YulFunctionCall","src":"20708:18:87"},"nativeSrc":"20708:18:87","nodeType":"YulExpressionStatement","src":"20708:18:87"}]},"condition":{"arguments":[{"name":"diff","nativeSrc":"20694:4:87","nodeType":"YulIdentifier","src":"20694:4:87"},{"kind":"number","nativeSrc":"20700:4:87","nodeType":"YulLiteral","src":"20700:4:87","type":"","value":"0xff"}],"functionName":{"name":"gt","nativeSrc":"20691:2:87","nodeType":"YulIdentifier","src":"20691:2:87"},"nativeSrc":"20691:14:87","nodeType":"YulFunctionCall","src":"20691:14:87"},"nativeSrc":"20688:40:87","nodeType":"YulIf","src":"20688:40:87"}]},"name":"checked_sub_t_uint8","nativeSrc":"20583:151:87","nodeType":"YulFunctionDefinition","parameters":[{"name":"x","nativeSrc":"20612:1:87","nodeType":"YulTypedName","src":"20612:1:87","type":""},{"name":"y","nativeSrc":"20615:1:87","nodeType":"YulTypedName","src":"20615:1:87","type":""}],"returnVariables":[{"name":"diff","nativeSrc":"20621:4:87","nodeType":"YulTypedName","src":"20621:4:87","type":""}],"src":"20583:151:87"},{"body":{"nativeSrc":"20847:101:87","nodeType":"YulBlock","src":"20847:101:87","statements":[{"nativeSrc":"20857:26:87","nodeType":"YulAssignment","src":"20857:26:87","value":{"arguments":[{"name":"headStart","nativeSrc":"20869:9:87","nodeType":"YulIdentifier","src":"20869:9:87"},{"kind":"number","nativeSrc":"20880:2:87","nodeType":"YulLiteral","src":"20880:2:87","type":"","value":"32"}],"functionName":{"name":"add","nativeSrc":"20865:3:87","nodeType":"YulIdentifier","src":"20865:3:87"},"nativeSrc":"20865:18:87","nodeType":"YulFunctionCall","src":"20865:18:87"},"variableNames":[{"name":"tail","nativeSrc":"20857:4:87","nodeType":"YulIdentifier","src":"20857:4:87"}]},{"expression":{"arguments":[{"name":"headStart","nativeSrc":"20899:9:87","nodeType":"YulIdentifier","src":"20899:9:87"},{"arguments":[{"name":"value0","nativeSrc":"20914:6:87","nodeType":"YulIdentifier","src":"20914:6:87"},{"kind":"number","nativeSrc":"20922:18:87","nodeType":"YulLiteral","src":"20922:18:87","type":"","value":"0xffffffffffffffff"}],"functionName":{"name":"and","nativeSrc":"20910:3:87","nodeType":"YulIdentifier","src":"20910:3:87"},"nativeSrc":"20910:31:87","nodeType":"YulFunctionCall","src":"20910:31:87"}],"functionName":{"name":"mstore","nativeSrc":"20892:6:87","nodeType":"YulIdentifier","src":"20892:6:87"},"nativeSrc":"20892:50:87","nodeType":"YulFunctionCall","src":"20892:50:87"},"nativeSrc":"20892:50:87","nodeType":"YulExpressionStatement","src":"20892:50:87"}]},"name":"abi_encode_tuple_t_rational_1_by_1__to_t_uint64__fromStack_reversed","nativeSrc":"20739:209:87","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nativeSrc":"20816:9:87","nodeType":"YulTypedName","src":"20816:9:87","type":""},{"name":"value0","nativeSrc":"20827:6:87","nodeType":"YulTypedName","src":"20827:6:87","type":""}],"returnVariables":[{"name":"tail","nativeSrc":"20838:4:87","nodeType":"YulTypedName","src":"20838:4:87","type":""}],"src":"20739:209:87"},{"body":{"nativeSrc":"20998:130:87","nodeType":"YulBlock","src":"20998:130:87","statements":[{"nativeSrc":"21008:31:87","nodeType":"YulVariableDeclaration","src":"21008:31:87","value":{"arguments":[{"name":"value","nativeSrc":"21027:5:87","nodeType":"YulIdentifier","src":"21027:5:87"},{"kind":"number","nativeSrc":"21034:4:87","nodeType":"YulLiteral","src":"21034:4:87","type":"","value":"0xff"}],"functionName":{"name":"and","nativeSrc":"21023:3:87","nodeType":"YulIdentifier","src":"21023:3:87"},"nativeSrc":"21023:16:87","nodeType":"YulFunctionCall","src":"21023:16:87"},"variables":[{"name":"value_1","nativeSrc":"21012:7:87","nodeType":"YulTypedName","src":"21012:7:87","type":""}]},{"body":{"nativeSrc":"21069:22:87","nodeType":"YulBlock","src":"21069:22:87","statements":[{"expression":{"arguments":[],"functionName":{"name":"panic_error_0x11","nativeSrc":"21071:16:87","nodeType":"YulIdentifier","src":"21071:16:87"},"nativeSrc":"21071:18:87","nodeType":"YulFunctionCall","src":"21071:18:87"},"nativeSrc":"21071:18:87","nodeType":"YulExpressionStatement","src":"21071:18:87"}]},"condition":{"arguments":[{"name":"value_1","nativeSrc":"21054:7:87","nodeType":"YulIdentifier","src":"21054:7:87"},{"kind":"number","nativeSrc":"21063:4:87","nodeType":"YulLiteral","src":"21063:4:87","type":"","value":"0xff"}],"functionName":{"name":"eq","nativeSrc":"21051:2:87","nodeType":"YulIdentifier","src":"21051:2:87"},"nativeSrc":"21051:17:87","nodeType":"YulFunctionCall","src":"21051:17:87"},"nativeSrc":"21048:43:87","nodeType":"YulIf","src":"21048:43:87"},{"nativeSrc":"21100:22:87","nodeType":"YulAssignment","src":"21100:22:87","value":{"arguments":[{"name":"value_1","nativeSrc":"21111:7:87","nodeType":"YulIdentifier","src":"21111:7:87"},{"kind":"number","nativeSrc":"21120:1:87","nodeType":"YulLiteral","src":"21120:1:87","type":"","value":"1"}],"functionName":{"name":"add","nativeSrc":"21107:3:87","nodeType":"YulIdentifier","src":"21107:3:87"},"nativeSrc":"21107:15:87","nodeType":"YulFunctionCall","src":"21107:15:87"},"variableNames":[{"name":"ret","nativeSrc":"21100:3:87","nodeType":"YulIdentifier","src":"21100:3:87"}]}]},"name":"increment_t_uint8","nativeSrc":"20953:175:87","nodeType":"YulFunctionDefinition","parameters":[{"name":"value","nativeSrc":"20980:5:87","nodeType":"YulTypedName","src":"20980:5:87","type":""}],"returnVariables":[{"name":"ret","nativeSrc":"20990:3:87","nodeType":"YulTypedName","src":"20990:3:87","type":""}],"src":"20953:175:87"},{"body":{"nativeSrc":"21202:306:87","nodeType":"YulBlock","src":"21202:306:87","statements":[{"nativeSrc":"21212:10:87","nodeType":"YulAssignment","src":"21212:10:87","value":{"kind":"number","nativeSrc":"21221:1:87","nodeType":"YulLiteral","src":"21221:1:87","type":"","value":"1"},"variableNames":[{"name":"power","nativeSrc":"21212:5:87","nodeType":"YulIdentifier","src":"21212:5:87"}]},{"nativeSrc":"21231:13:87","nodeType":"YulAssignment","src":"21231:13:87","value":{"name":"_base","nativeSrc":"21239:5:87","nodeType":"YulIdentifier","src":"21239:5:87"},"variableNames":[{"name":"base","nativeSrc":"21231:4:87","nodeType":"YulIdentifier","src":"21231:4:87"}]},{"body":{"nativeSrc":"21289:213:87","nodeType":"YulBlock","src":"21289:213:87","statements":[{"body":{"nativeSrc":"21331:22:87","nodeType":"YulBlock","src":"21331:22:87","statements":[{"expression":{"arguments":[],"functionName":{"name":"panic_error_0x11","nativeSrc":"21333:16:87","nodeType":"YulIdentifier","src":"21333:16:87"},"nativeSrc":"21333:18:87","nodeType":"YulFunctionCall","src":"21333:18:87"},"nativeSrc":"21333:18:87","nodeType":"YulExpressionStatement","src":"21333:18:87"}]},"condition":{"arguments":[{"name":"base","nativeSrc":"21309:4:87","nodeType":"YulIdentifier","src":"21309:4:87"},{"arguments":[{"name":"max","nativeSrc":"21319:3:87","nodeType":"YulIdentifier","src":"21319:3:87"},{"name":"base","nativeSrc":"21324:4:87","nodeType":"YulIdentifier","src":"21324:4:87"}],"functionName":{"name":"div","nativeSrc":"21315:3:87","nodeType":"YulIdentifier","src":"21315:3:87"},"nativeSrc":"21315:14:87","nodeType":"YulFunctionCall","src":"21315:14:87"}],"functionName":{"name":"gt","nativeSrc":"21306:2:87","nodeType":"YulIdentifier","src":"21306:2:87"},"nativeSrc":"21306:24:87","nodeType":"YulFunctionCall","src":"21306:24:87"},"nativeSrc":"21303:50:87","nodeType":"YulIf","src":"21303:50:87"},{"body":{"nativeSrc":"21386:29:87","nodeType":"YulBlock","src":"21386:29:87","statements":[{"nativeSrc":"21388:25:87","nodeType":"YulAssignment","src":"21388:25:87","value":{"arguments":[{"name":"power","nativeSrc":"21401:5:87","nodeType":"YulIdentifier","src":"21401:5:87"},{"name":"base","nativeSrc":"21408:4:87","nodeType":"YulIdentifier","src":"21408:4:87"}],"functionName":{"name":"mul","nativeSrc":"21397:3:87","nodeType":"YulIdentifier","src":"21397:3:87"},"nativeSrc":"21397:16:87","nodeType":"YulFunctionCall","src":"21397:16:87"},"variableNames":[{"name":"power","nativeSrc":"21388:5:87","nodeType":"YulIdentifier","src":"21388:5:87"}]}]},"condition":{"arguments":[{"name":"exponent","nativeSrc":"21373:8:87","nodeType":"YulIdentifier","src":"21373:8:87"},{"kind":"number","nativeSrc":"21383:1:87","nodeType":"YulLiteral","src":"21383:1:87","type":"","value":"1"}],"functionName":{"name":"and","nativeSrc":"21369:3:87","nodeType":"YulIdentifier","src":"21369:3:87"},"nativeSrc":"21369:16:87","nodeType":"YulFunctionCall","src":"21369:16:87"},"nativeSrc":"21366:49:87","nodeType":"YulIf","src":"21366:49:87"},{"nativeSrc":"21428:23:87","nodeType":"YulAssignment","src":"21428:23:87","value":{"arguments":[{"name":"base","nativeSrc":"21440:4:87","nodeType":"YulIdentifier","src":"21440:4:87"},{"name":"base","nativeSrc":"21446:4:87","nodeType":"YulIdentifier","src":"21446:4:87"}],"functionName":{"name":"mul","nativeSrc":"21436:3:87","nodeType":"YulIdentifier","src":"21436:3:87"},"nativeSrc":"21436:15:87","nodeType":"YulFunctionCall","src":"21436:15:87"},"variableNames":[{"name":"base","nativeSrc":"21428:4:87","nodeType":"YulIdentifier","src":"21428:4:87"}]},{"nativeSrc":"21464:28:87","nodeType":"YulAssignment","src":"21464:28:87","value":{"arguments":[{"kind":"number","nativeSrc":"21480:1:87","nodeType":"YulLiteral","src":"21480:1:87","type":"","value":"1"},{"name":"exponent","nativeSrc":"21483:8:87","nodeType":"YulIdentifier","src":"21483:8:87"}],"functionName":{"name":"shr","nativeSrc":"21476:3:87","nodeType":"YulIdentifier","src":"21476:3:87"},"nativeSrc":"21476:16:87","nodeType":"YulFunctionCall","src":"21476:16:87"},"variableNames":[{"name":"exponent","nativeSrc":"21464:8:87","nodeType":"YulIdentifier","src":"21464:8:87"}]}]},"condition":{"arguments":[{"name":"exponent","nativeSrc":"21264:8:87","nodeType":"YulIdentifier","src":"21264:8:87"},{"kind":"number","nativeSrc":"21274:1:87","nodeType":"YulLiteral","src":"21274:1:87","type":"","value":"1"}],"functionName":{"name":"gt","nativeSrc":"21261:2:87","nodeType":"YulIdentifier","src":"21261:2:87"},"nativeSrc":"21261:15:87","nodeType":"YulFunctionCall","src":"21261:15:87"},"nativeSrc":"21253:249:87","nodeType":"YulForLoop","post":{"nativeSrc":"21277:3:87","nodeType":"YulBlock","src":"21277:3:87","statements":[]},"pre":{"nativeSrc":"21257:3:87","nodeType":"YulBlock","src":"21257:3:87","statements":[]},"src":"21253:249:87"}]},"name":"checked_exp_helper","nativeSrc":"21133:375:87","nodeType":"YulFunctionDefinition","parameters":[{"name":"_base","nativeSrc":"21161:5:87","nodeType":"YulTypedName","src":"21161:5:87","type":""},{"name":"exponent","nativeSrc":"21168:8:87","nodeType":"YulTypedName","src":"21168:8:87","type":""},{"name":"max","nativeSrc":"21178:3:87","nodeType":"YulTypedName","src":"21178:3:87","type":""}],"returnVariables":[{"name":"power","nativeSrc":"21186:5:87","nodeType":"YulTypedName","src":"21186:5:87","type":""},{"name":"base","nativeSrc":"21193:4:87","nodeType":"YulTypedName","src":"21193:4:87","type":""}],"src":"21133:375:87"},{"body":{"nativeSrc":"21572:843:87","nodeType":"YulBlock","src":"21572:843:87","statements":[{"body":{"nativeSrc":"21610:52:87","nodeType":"YulBlock","src":"21610:52:87","statements":[{"nativeSrc":"21624:10:87","nodeType":"YulAssignment","src":"21624:10:87","value":{"kind":"number","nativeSrc":"21633:1:87","nodeType":"YulLiteral","src":"21633:1:87","type":"","value":"1"},"variableNames":[{"name":"power","nativeSrc":"21624:5:87","nodeType":"YulIdentifier","src":"21624:5:87"}]},{"nativeSrc":"21647:5:87","nodeType":"YulLeave","src":"21647:5:87"}]},"condition":{"arguments":[{"name":"exponent","nativeSrc":"21592:8:87","nodeType":"YulIdentifier","src":"21592:8:87"}],"functionName":{"name":"iszero","nativeSrc":"21585:6:87","nodeType":"YulIdentifier","src":"21585:6:87"},"nativeSrc":"21585:16:87","nodeType":"YulFunctionCall","src":"21585:16:87"},"nativeSrc":"21582:80:87","nodeType":"YulIf","src":"21582:80:87"},{"body":{"nativeSrc":"21695:52:87","nodeType":"YulBlock","src":"21695:52:87","statements":[{"nativeSrc":"21709:10:87","nodeType":"YulAssignment","src":"21709:10:87","value":{"kind":"number","nativeSrc":"21718:1:87","nodeType":"YulLiteral","src":"21718:1:87","type":"","value":"0"},"variableNames":[{"name":"power","nativeSrc":"21709:5:87","nodeType":"YulIdentifier","src":"21709:5:87"}]},{"nativeSrc":"21732:5:87","nodeType":"YulLeave","src":"21732:5:87"}]},"condition":{"arguments":[{"name":"base","nativeSrc":"21681:4:87","nodeType":"YulIdentifier","src":"21681:4:87"}],"functionName":{"name":"iszero","nativeSrc":"21674:6:87","nodeType":"YulIdentifier","src":"21674:6:87"},"nativeSrc":"21674:12:87","nodeType":"YulFunctionCall","src":"21674:12:87"},"nativeSrc":"21671:76:87","nodeType":"YulIf","src":"21671:76:87"},{"cases":[{"body":{"nativeSrc":"21783:52:87","nodeType":"YulBlock","src":"21783:52:87","statements":[{"nativeSrc":"21797:10:87","nodeType":"YulAssignment","src":"21797:10:87","value":{"kind":"number","nativeSrc":"21806:1:87","nodeType":"YulLiteral","src":"21806:1:87","type":"","value":"1"},"variableNames":[{"name":"power","nativeSrc":"21797:5:87","nodeType":"YulIdentifier","src":"21797:5:87"}]},{"nativeSrc":"21820:5:87","nodeType":"YulLeave","src":"21820:5:87"}]},"nativeSrc":"21776:59:87","nodeType":"YulCase","src":"21776:59:87","value":{"kind":"number","nativeSrc":"21781:1:87","nodeType":"YulLiteral","src":"21781:1:87","type":"","value":"1"}},{"body":{"nativeSrc":"21851:167:87","nodeType":"YulBlock","src":"21851:167:87","statements":[{"body":{"nativeSrc":"21886:22:87","nodeType":"YulBlock","src":"21886:22:87","statements":[{"expression":{"arguments":[],"functionName":{"name":"panic_error_0x11","nativeSrc":"21888:16:87","nodeType":"YulIdentifier","src":"21888:16:87"},"nativeSrc":"21888:18:87","nodeType":"YulFunctionCall","src":"21888:18:87"},"nativeSrc":"21888:18:87","nodeType":"YulExpressionStatement","src":"21888:18:87"}]},"condition":{"arguments":[{"name":"exponent","nativeSrc":"21871:8:87","nodeType":"YulIdentifier","src":"21871:8:87"},{"kind":"number","nativeSrc":"21881:3:87","nodeType":"YulLiteral","src":"21881:3:87","type":"","value":"255"}],"functionName":{"name":"gt","nativeSrc":"21868:2:87","nodeType":"YulIdentifier","src":"21868:2:87"},"nativeSrc":"21868:17:87","nodeType":"YulFunctionCall","src":"21868:17:87"},"nativeSrc":"21865:43:87","nodeType":"YulIf","src":"21865:43:87"},{"nativeSrc":"21921:25:87","nodeType":"YulAssignment","src":"21921:25:87","value":{"arguments":[{"name":"exponent","nativeSrc":"21934:8:87","nodeType":"YulIdentifier","src":"21934:8:87"},{"kind":"number","nativeSrc":"21944:1:87","nodeType":"YulLiteral","src":"21944:1:87","type":"","value":"1"}],"functionName":{"name":"shl","nativeSrc":"21930:3:87","nodeType":"YulIdentifier","src":"21930:3:87"},"nativeSrc":"21930:16:87","nodeType":"YulFunctionCall","src":"21930:16:87"},"variableNames":[{"name":"power","nativeSrc":"21921:5:87","nodeType":"YulIdentifier","src":"21921:5:87"}]},{"nativeSrc":"21959:11:87","nodeType":"YulVariableDeclaration","src":"21959:11:87","value":{"kind":"number","nativeSrc":"21969:1:87","nodeType":"YulLiteral","src":"21969:1:87","type":"","value":"0"},"variables":[{"name":"_1","nativeSrc":"21963:2:87","nodeType":"YulTypedName","src":"21963:2:87","type":""}]},{"nativeSrc":"21983:7:87","nodeType":"YulAssignment","src":"21983:7:87","value":{"kind":"number","nativeSrc":"21989:1:87","nodeType":"YulLiteral","src":"21989:1:87","type":"","value":"0"},"variableNames":[{"name":"_1","nativeSrc":"21983:2:87","nodeType":"YulIdentifier","src":"21983:2:87"}]},{"nativeSrc":"22003:5:87","nodeType":"YulLeave","src":"22003:5:87"}]},"nativeSrc":"21844:174:87","nodeType":"YulCase","src":"21844:174:87","value":{"kind":"number","nativeSrc":"21849:1:87","nodeType":"YulLiteral","src":"21849:1:87","type":"","value":"2"}}],"expression":{"name":"base","nativeSrc":"21763:4:87","nodeType":"YulIdentifier","src":"21763:4:87"},"nativeSrc":"21756:262:87","nodeType":"YulSwitch","src":"21756:262:87"},{"body":{"nativeSrc":"22116:114:87","nodeType":"YulBlock","src":"22116:114:87","statements":[{"nativeSrc":"22130:28:87","nodeType":"YulAssignment","src":"22130:28:87","value":{"arguments":[{"name":"base","nativeSrc":"22143:4:87","nodeType":"YulIdentifier","src":"22143:4:87"},{"name":"exponent","nativeSrc":"22149:8:87","nodeType":"YulIdentifier","src":"22149:8:87"}],"functionName":{"name":"exp","nativeSrc":"22139:3:87","nodeType":"YulIdentifier","src":"22139:3:87"},"nativeSrc":"22139:19:87","nodeType":"YulFunctionCall","src":"22139:19:87"},"variableNames":[{"name":"power","nativeSrc":"22130:5:87","nodeType":"YulIdentifier","src":"22130:5:87"}]},{"nativeSrc":"22171:11:87","nodeType":"YulVariableDeclaration","src":"22171:11:87","value":{"kind":"number","nativeSrc":"22181:1:87","nodeType":"YulLiteral","src":"22181:1:87","type":"","value":"0"},"variables":[{"name":"_2","nativeSrc":"22175:2:87","nodeType":"YulTypedName","src":"22175:2:87","type":""}]},{"nativeSrc":"22195:7:87","nodeType":"YulAssignment","src":"22195:7:87","value":{"kind":"number","nativeSrc":"22201:1:87","nodeType":"YulLiteral","src":"22201:1:87","type":"","value":"0"},"variableNames":[{"name":"_2","nativeSrc":"22195:2:87","nodeType":"YulIdentifier","src":"22195:2:87"}]},{"nativeSrc":"22215:5:87","nodeType":"YulLeave","src":"22215:5:87"}]},"condition":{"arguments":[{"arguments":[{"arguments":[{"name":"base","nativeSrc":"22040:4:87","nodeType":"YulIdentifier","src":"22040:4:87"},{"kind":"number","nativeSrc":"22046:2:87","nodeType":"YulLiteral","src":"22046:2:87","type":"","value":"11"}],"functionName":{"name":"lt","nativeSrc":"22037:2:87","nodeType":"YulIdentifier","src":"22037:2:87"},"nativeSrc":"22037:12:87","nodeType":"YulFunctionCall","src":"22037:12:87"},{"arguments":[{"name":"exponent","nativeSrc":"22054:8:87","nodeType":"YulIdentifier","src":"22054:8:87"},{"kind":"number","nativeSrc":"22064:2:87","nodeType":"YulLiteral","src":"22064:2:87","type":"","value":"78"}],"functionName":{"name":"lt","nativeSrc":"22051:2:87","nodeType":"YulIdentifier","src":"22051:2:87"},"nativeSrc":"22051:16:87","nodeType":"YulFunctionCall","src":"22051:16:87"}],"functionName":{"name":"and","nativeSrc":"22033:3:87","nodeType":"YulIdentifier","src":"22033:3:87"},"nativeSrc":"22033:35:87","nodeType":"YulFunctionCall","src":"22033:35:87"},{"arguments":[{"arguments":[{"name":"base","nativeSrc":"22077:4:87","nodeType":"YulIdentifier","src":"22077:4:87"},{"kind":"number","nativeSrc":"22083:3:87","nodeType":"YulLiteral","src":"22083:3:87","type":"","value":"307"}],"functionName":{"name":"lt","nativeSrc":"22074:2:87","nodeType":"YulIdentifier","src":"22074:2:87"},"nativeSrc":"22074:13:87","nodeType":"YulFunctionCall","src":"22074:13:87"},{"arguments":[{"name":"exponent","nativeSrc":"22092:8:87","nodeType":"YulIdentifier","src":"22092:8:87"},{"kind":"number","nativeSrc":"22102:2:87","nodeType":"YulLiteral","src":"22102:2:87","type":"","value":"32"}],"functionName":{"name":"lt","nativeSrc":"22089:2:87","nodeType":"YulIdentifier","src":"22089:2:87"},"nativeSrc":"22089:16:87","nodeType":"YulFunctionCall","src":"22089:16:87"}],"functionName":{"name":"and","nativeSrc":"22070:3:87","nodeType":"YulIdentifier","src":"22070:3:87"},"nativeSrc":"22070:36:87","nodeType":"YulFunctionCall","src":"22070:36:87"}],"functionName":{"name":"or","nativeSrc":"22030:2:87","nodeType":"YulIdentifier","src":"22030:2:87"},"nativeSrc":"22030:77:87","nodeType":"YulFunctionCall","src":"22030:77:87"},"nativeSrc":"22027:203:87","nodeType":"YulIf","src":"22027:203:87"},{"nativeSrc":"22239:65:87","nodeType":"YulVariableDeclaration","src":"22239:65:87","value":{"arguments":[{"name":"base","nativeSrc":"22281:4:87","nodeType":"YulIdentifier","src":"22281:4:87"},{"name":"exponent","nativeSrc":"22287:8:87","nodeType":"YulIdentifier","src":"22287:8:87"},{"arguments":[{"kind":"number","nativeSrc":"22301:1:87","nodeType":"YulLiteral","src":"22301:1:87","type":"","value":"0"}],"functionName":{"name":"not","nativeSrc":"22297:3:87","nodeType":"YulIdentifier","src":"22297:3:87"},"nativeSrc":"22297:6:87","nodeType":"YulFunctionCall","src":"22297:6:87"}],"functionName":{"name":"checked_exp_helper","nativeSrc":"22262:18:87","nodeType":"YulIdentifier","src":"22262:18:87"},"nativeSrc":"22262:42:87","nodeType":"YulFunctionCall","src":"22262:42:87"},"variables":[{"name":"power_1","nativeSrc":"22243:7:87","nodeType":"YulTypedName","src":"22243:7:87","type":""},{"name":"base_1","nativeSrc":"22252:6:87","nodeType":"YulTypedName","src":"22252:6:87","type":""}]},{"body":{"nativeSrc":"22349:22:87","nodeType":"YulBlock","src":"22349:22:87","statements":[{"expression":{"arguments":[],"functionName":{"name":"panic_error_0x11","nativeSrc":"22351:16:87","nodeType":"YulIdentifier","src":"22351:16:87"},"nativeSrc":"22351:18:87","nodeType":"YulFunctionCall","src":"22351:18:87"},"nativeSrc":"22351:18:87","nodeType":"YulExpressionStatement","src":"22351:18:87"}]},"condition":{"arguments":[{"name":"power_1","nativeSrc":"22319:7:87","nodeType":"YulIdentifier","src":"22319:7:87"},{"arguments":[{"arguments":[{"kind":"number","nativeSrc":"22336:1:87","nodeType":"YulLiteral","src":"22336:1:87","type":"","value":"0"}],"functionName":{"name":"not","nativeSrc":"22332:3:87","nodeType":"YulIdentifier","src":"22332:3:87"},"nativeSrc":"22332:6:87","nodeType":"YulFunctionCall","src":"22332:6:87"},{"name":"base_1","nativeSrc":"22340:6:87","nodeType":"YulIdentifier","src":"22340:6:87"}],"functionName":{"name":"div","nativeSrc":"22328:3:87","nodeType":"YulIdentifier","src":"22328:3:87"},"nativeSrc":"22328:19:87","nodeType":"YulFunctionCall","src":"22328:19:87"}],"functionName":{"name":"gt","nativeSrc":"22316:2:87","nodeType":"YulIdentifier","src":"22316:2:87"},"nativeSrc":"22316:32:87","nodeType":"YulFunctionCall","src":"22316:32:87"},"nativeSrc":"22313:58:87","nodeType":"YulIf","src":"22313:58:87"},{"nativeSrc":"22380:29:87","nodeType":"YulAssignment","src":"22380:29:87","value":{"arguments":[{"name":"power_1","nativeSrc":"22393:7:87","nodeType":"YulIdentifier","src":"22393:7:87"},{"name":"base_1","nativeSrc":"22402:6:87","nodeType":"YulIdentifier","src":"22402:6:87"}],"functionName":{"name":"mul","nativeSrc":"22389:3:87","nodeType":"YulIdentifier","src":"22389:3:87"},"nativeSrc":"22389:20:87","nodeType":"YulFunctionCall","src":"22389:20:87"},"variableNames":[{"name":"power","nativeSrc":"22380:5:87","nodeType":"YulIdentifier","src":"22380:5:87"}]}]},"name":"checked_exp_unsigned","nativeSrc":"21513:902:87","nodeType":"YulFunctionDefinition","parameters":[{"name":"base","nativeSrc":"21543:4:87","nodeType":"YulTypedName","src":"21543:4:87","type":""},{"name":"exponent","nativeSrc":"21549:8:87","nodeType":"YulTypedName","src":"21549:8:87","type":""}],"returnVariables":[{"name":"power","nativeSrc":"21562:5:87","nodeType":"YulTypedName","src":"21562:5:87","type":""}],"src":"21513:902:87"},{"body":{"nativeSrc":"22488:72:87","nodeType":"YulBlock","src":"22488:72:87","statements":[{"nativeSrc":"22498:56:87","nodeType":"YulAssignment","src":"22498:56:87","value":{"arguments":[{"name":"base","nativeSrc":"22528:4:87","nodeType":"YulIdentifier","src":"22528:4:87"},{"arguments":[{"name":"exponent","nativeSrc":"22538:8:87","nodeType":"YulIdentifier","src":"22538:8:87"},{"kind":"number","nativeSrc":"22548:4:87","nodeType":"YulLiteral","src":"22548:4:87","type":"","value":"0xff"}],"functionName":{"name":"and","nativeSrc":"22534:3:87","nodeType":"YulIdentifier","src":"22534:3:87"},"nativeSrc":"22534:19:87","nodeType":"YulFunctionCall","src":"22534:19:87"}],"functionName":{"name":"checked_exp_unsigned","nativeSrc":"22507:20:87","nodeType":"YulIdentifier","src":"22507:20:87"},"nativeSrc":"22507:47:87","nodeType":"YulFunctionCall","src":"22507:47:87"},"variableNames":[{"name":"power","nativeSrc":"22498:5:87","nodeType":"YulIdentifier","src":"22498:5:87"}]}]},"name":"checked_exp_t_uint256_t_uint8","nativeSrc":"22420:140:87","nodeType":"YulFunctionDefinition","parameters":[{"name":"base","nativeSrc":"22459:4:87","nodeType":"YulTypedName","src":"22459:4:87","type":""},{"name":"exponent","nativeSrc":"22465:8:87","nodeType":"YulTypedName","src":"22465:8:87","type":""}],"returnVariables":[{"name":"power","nativeSrc":"22478:5:87","nodeType":"YulTypedName","src":"22478:5:87","type":""}],"src":"22420:140:87"},{"body":{"nativeSrc":"22702:130:87","nodeType":"YulBlock","src":"22702:130:87","statements":[{"nativeSrc":"22712:26:87","nodeType":"YulAssignment","src":"22712:26:87","value":{"arguments":[{"name":"headStart","nativeSrc":"22724:9:87","nodeType":"YulIdentifier","src":"22724:9:87"},{"kind":"number","nativeSrc":"22735:2:87","nodeType":"YulLiteral","src":"22735:2:87","type":"","value":"64"}],"functionName":{"name":"add","nativeSrc":"22720:3:87","nodeType":"YulIdentifier","src":"22720:3:87"},"nativeSrc":"22720:18:87","nodeType":"YulFunctionCall","src":"22720:18:87"},"variableNames":[{"name":"tail","nativeSrc":"22712:4:87","nodeType":"YulIdentifier","src":"22712:4:87"}]},{"expression":{"arguments":[{"name":"headStart","nativeSrc":"22754:9:87","nodeType":"YulIdentifier","src":"22754:9:87"},{"arguments":[{"name":"value0","nativeSrc":"22769:6:87","nodeType":"YulIdentifier","src":"22769:6:87"},{"kind":"number","nativeSrc":"22777:4:87","nodeType":"YulLiteral","src":"22777:4:87","type":"","value":"0xff"}],"functionName":{"name":"and","nativeSrc":"22765:3:87","nodeType":"YulIdentifier","src":"22765:3:87"},"nativeSrc":"22765:17:87","nodeType":"YulFunctionCall","src":"22765:17:87"}],"functionName":{"name":"mstore","nativeSrc":"22747:6:87","nodeType":"YulIdentifier","src":"22747:6:87"},"nativeSrc":"22747:36:87","nodeType":"YulFunctionCall","src":"22747:36:87"},"nativeSrc":"22747:36:87","nodeType":"YulExpressionStatement","src":"22747:36:87"},{"expression":{"arguments":[{"arguments":[{"name":"headStart","nativeSrc":"22803:9:87","nodeType":"YulIdentifier","src":"22803:9:87"},{"kind":"number","nativeSrc":"22814:2:87","nodeType":"YulLiteral","src":"22814:2:87","type":"","value":"32"}],"functionName":{"name":"add","nativeSrc":"22799:3:87","nodeType":"YulIdentifier","src":"22799:3:87"},"nativeSrc":"22799:18:87","nodeType":"YulFunctionCall","src":"22799:18:87"},{"name":"value1","nativeSrc":"22819:6:87","nodeType":"YulIdentifier","src":"22819:6:87"}],"functionName":{"name":"mstore","nativeSrc":"22792:6:87","nodeType":"YulIdentifier","src":"22792:6:87"},"nativeSrc":"22792:34:87","nodeType":"YulFunctionCall","src":"22792:34:87"},"nativeSrc":"22792:34:87","nodeType":"YulExpressionStatement","src":"22792:34:87"}]},"name":"abi_encode_tuple_t_rational_128_by_1_t_uint256__to_t_uint8_t_uint256__fromStack_reversed","nativeSrc":"22565:267:87","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nativeSrc":"22663:9:87","nodeType":"YulTypedName","src":"22663:9:87","type":""},{"name":"value1","nativeSrc":"22674:6:87","nodeType":"YulTypedName","src":"22674:6:87","type":""},{"name":"value0","nativeSrc":"22682:6:87","nodeType":"YulTypedName","src":"22682:6:87","type":""}],"returnVariables":[{"name":"tail","nativeSrc":"22693:4:87","nodeType":"YulTypedName","src":"22693:4:87","type":""}],"src":"22565:267:87"},{"body":{"nativeSrc":"22941:170:87","nodeType":"YulBlock","src":"22941:170:87","statements":[{"body":{"nativeSrc":"22987:16:87","nodeType":"YulBlock","src":"22987:16:87","statements":[{"expression":{"arguments":[{"kind":"number","nativeSrc":"22996:1:87","nodeType":"YulLiteral","src":"22996:1:87","type":"","value":"0"},{"kind":"number","nativeSrc":"22999:1:87","nodeType":"YulLiteral","src":"22999:1:87","type":"","value":"0"}],"functionName":{"name":"revert","nativeSrc":"22989:6:87","nodeType":"YulIdentifier","src":"22989:6:87"},"nativeSrc":"22989:12:87","nodeType":"YulFunctionCall","src":"22989:12:87"},"nativeSrc":"22989:12:87","nodeType":"YulExpressionStatement","src":"22989:12:87"}]},"condition":{"arguments":[{"arguments":[{"name":"dataEnd","nativeSrc":"22962:7:87","nodeType":"YulIdentifier","src":"22962:7:87"},{"name":"headStart","nativeSrc":"22971:9:87","nodeType":"YulIdentifier","src":"22971:9:87"}],"functionName":{"name":"sub","nativeSrc":"22958:3:87","nodeType":"YulIdentifier","src":"22958:3:87"},"nativeSrc":"22958:23:87","nodeType":"YulFunctionCall","src":"22958:23:87"},{"kind":"number","nativeSrc":"22983:2:87","nodeType":"YulLiteral","src":"22983:2:87","type":"","value":"32"}],"functionName":{"name":"slt","nativeSrc":"22954:3:87","nodeType":"YulIdentifier","src":"22954:3:87"},"nativeSrc":"22954:32:87","nodeType":"YulFunctionCall","src":"22954:32:87"},"nativeSrc":"22951:52:87","nodeType":"YulIf","src":"22951:52:87"},{"nativeSrc":"23012:29:87","nodeType":"YulVariableDeclaration","src":"23012:29:87","value":{"arguments":[{"name":"headStart","nativeSrc":"23031:9:87","nodeType":"YulIdentifier","src":"23031:9:87"}],"functionName":{"name":"mload","nativeSrc":"23025:5:87","nodeType":"YulIdentifier","src":"23025:5:87"},"nativeSrc":"23025:16:87","nodeType":"YulFunctionCall","src":"23025:16:87"},"variables":[{"name":"value","nativeSrc":"23016:5:87","nodeType":"YulTypedName","src":"23016:5:87","type":""}]},{"expression":{"arguments":[{"name":"value","nativeSrc":"23075:5:87","nodeType":"YulIdentifier","src":"23075:5:87"}],"functionName":{"name":"validator_revert_address","nativeSrc":"23050:24:87","nodeType":"YulIdentifier","src":"23050:24:87"},"nativeSrc":"23050:31:87","nodeType":"YulFunctionCall","src":"23050:31:87"},"nativeSrc":"23050:31:87","nodeType":"YulExpressionStatement","src":"23050:31:87"},{"nativeSrc":"23090:15:87","nodeType":"YulAssignment","src":"23090:15:87","value":{"name":"value","nativeSrc":"23100:5:87","nodeType":"YulIdentifier","src":"23100:5:87"},"variableNames":[{"name":"value0","nativeSrc":"23090:6:87","nodeType":"YulIdentifier","src":"23090:6:87"}]}]},"name":"abi_decode_tuple_t_contract$_IAccessManager_$6842_fromMemory","nativeSrc":"22837:274:87","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nativeSrc":"22907:9:87","nodeType":"YulTypedName","src":"22907:9:87","type":""},{"name":"dataEnd","nativeSrc":"22918:7:87","nodeType":"YulTypedName","src":"22918:7:87","type":""}],"returnVariables":[{"name":"value0","nativeSrc":"22930:6:87","nodeType":"YulTypedName","src":"22930:6:87","type":""}],"src":"22837:274:87"},{"body":{"nativeSrc":"23271:241:87","nodeType":"YulBlock","src":"23271:241:87","statements":[{"nativeSrc":"23281:26:87","nodeType":"YulAssignment","src":"23281:26:87","value":{"arguments":[{"name":"headStart","nativeSrc":"23293:9:87","nodeType":"YulIdentifier","src":"23293:9:87"},{"kind":"number","nativeSrc":"23304:2:87","nodeType":"YulLiteral","src":"23304:2:87","type":"","value":"96"}],"functionName":{"name":"add","nativeSrc":"23289:3:87","nodeType":"YulIdentifier","src":"23289:3:87"},"nativeSrc":"23289:18:87","nodeType":"YulFunctionCall","src":"23289:18:87"},"variableNames":[{"name":"tail","nativeSrc":"23281:4:87","nodeType":"YulIdentifier","src":"23281:4:87"}]},{"expression":{"arguments":[{"name":"headStart","nativeSrc":"23323:9:87","nodeType":"YulIdentifier","src":"23323:9:87"},{"arguments":[{"name":"value0","nativeSrc":"23338:6:87","nodeType":"YulIdentifier","src":"23338:6:87"},{"arguments":[{"arguments":[{"kind":"number","nativeSrc":"23354:3:87","nodeType":"YulLiteral","src":"23354:3:87","type":"","value":"160"},{"kind":"number","nativeSrc":"23359:1:87","nodeType":"YulLiteral","src":"23359:1:87","type":"","value":"1"}],"functionName":{"name":"shl","nativeSrc":"23350:3:87","nodeType":"YulIdentifier","src":"23350:3:87"},"nativeSrc":"23350:11:87","nodeType":"YulFunctionCall","src":"23350:11:87"},{"kind":"number","nativeSrc":"23363:1:87","nodeType":"YulLiteral","src":"23363:1:87","type":"","value":"1"}],"functionName":{"name":"sub","nativeSrc":"23346:3:87","nodeType":"YulIdentifier","src":"23346:3:87"},"nativeSrc":"23346:19:87","nodeType":"YulFunctionCall","src":"23346:19:87"}],"functionName":{"name":"and","nativeSrc":"23334:3:87","nodeType":"YulIdentifier","src":"23334:3:87"},"nativeSrc":"23334:32:87","nodeType":"YulFunctionCall","src":"23334:32:87"}],"functionName":{"name":"mstore","nativeSrc":"23316:6:87","nodeType":"YulIdentifier","src":"23316:6:87"},"nativeSrc":"23316:51:87","nodeType":"YulFunctionCall","src":"23316:51:87"},"nativeSrc":"23316:51:87","nodeType":"YulExpressionStatement","src":"23316:51:87"},{"expression":{"arguments":[{"arguments":[{"name":"headStart","nativeSrc":"23387:9:87","nodeType":"YulIdentifier","src":"23387:9:87"},{"kind":"number","nativeSrc":"23398:2:87","nodeType":"YulLiteral","src":"23398:2:87","type":"","value":"32"}],"functionName":{"name":"add","nativeSrc":"23383:3:87","nodeType":"YulIdentifier","src":"23383:3:87"},"nativeSrc":"23383:18:87","nodeType":"YulFunctionCall","src":"23383:18:87"},{"arguments":[{"name":"value1","nativeSrc":"23407:6:87","nodeType":"YulIdentifier","src":"23407:6:87"},{"arguments":[{"arguments":[{"kind":"number","nativeSrc":"23423:3:87","nodeType":"YulLiteral","src":"23423:3:87","type":"","value":"160"},{"kind":"number","nativeSrc":"23428:1:87","nodeType":"YulLiteral","src":"23428:1:87","type":"","value":"1"}],"functionName":{"name":"shl","nativeSrc":"23419:3:87","nodeType":"YulIdentifier","src":"23419:3:87"},"nativeSrc":"23419:11:87","nodeType":"YulFunctionCall","src":"23419:11:87"},{"kind":"number","nativeSrc":"23432:1:87","nodeType":"YulLiteral","src":"23432:1:87","type":"","value":"1"}],"functionName":{"name":"sub","nativeSrc":"23415:3:87","nodeType":"YulIdentifier","src":"23415:3:87"},"nativeSrc":"23415:19:87","nodeType":"YulFunctionCall","src":"23415:19:87"}],"functionName":{"name":"and","nativeSrc":"23403:3:87","nodeType":"YulIdentifier","src":"23403:3:87"},"nativeSrc":"23403:32:87","nodeType":"YulFunctionCall","src":"23403:32:87"}],"functionName":{"name":"mstore","nativeSrc":"23376:6:87","nodeType":"YulIdentifier","src":"23376:6:87"},"nativeSrc":"23376:60:87","nodeType":"YulFunctionCall","src":"23376:60:87"},"nativeSrc":"23376:60:87","nodeType":"YulExpressionStatement","src":"23376:60:87"},{"expression":{"arguments":[{"arguments":[{"name":"headStart","nativeSrc":"23456:9:87","nodeType":"YulIdentifier","src":"23456:9:87"},{"kind":"number","nativeSrc":"23467:2:87","nodeType":"YulLiteral","src":"23467:2:87","type":"","value":"64"}],"functionName":{"name":"add","nativeSrc":"23452:3:87","nodeType":"YulIdentifier","src":"23452:3:87"},"nativeSrc":"23452:18:87","nodeType":"YulFunctionCall","src":"23452:18:87"},{"arguments":[{"name":"value2","nativeSrc":"23476:6:87","nodeType":"YulIdentifier","src":"23476:6:87"},{"arguments":[{"kind":"number","nativeSrc":"23488:3:87","nodeType":"YulLiteral","src":"23488:3:87","type":"","value":"224"},{"kind":"number","nativeSrc":"23493:10:87","nodeType":"YulLiteral","src":"23493:10:87","type":"","value":"0xffffffff"}],"functionName":{"name":"shl","nativeSrc":"23484:3:87","nodeType":"YulIdentifier","src":"23484:3:87"},"nativeSrc":"23484:20:87","nodeType":"YulFunctionCall","src":"23484:20:87"}],"functionName":{"name":"and","nativeSrc":"23472:3:87","nodeType":"YulIdentifier","src":"23472:3:87"},"nativeSrc":"23472:33:87","nodeType":"YulFunctionCall","src":"23472:33:87"}],"functionName":{"name":"mstore","nativeSrc":"23445:6:87","nodeType":"YulIdentifier","src":"23445:6:87"},"nativeSrc":"23445:61:87","nodeType":"YulFunctionCall","src":"23445:61:87"},"nativeSrc":"23445:61:87","nodeType":"YulExpressionStatement","src":"23445:61:87"}]},"name":"abi_encode_tuple_t_address_t_address_t_bytes4__to_t_address_t_address_t_bytes4__fromStack_reversed","nativeSrc":"23116:396:87","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nativeSrc":"23224:9:87","nodeType":"YulTypedName","src":"23224:9:87","type":""},{"name":"value2","nativeSrc":"23235:6:87","nodeType":"YulTypedName","src":"23235:6:87","type":""},{"name":"value1","nativeSrc":"23243:6:87","nodeType":"YulTypedName","src":"23243:6:87","type":""},{"name":"value0","nativeSrc":"23251:6:87","nodeType":"YulTypedName","src":"23251:6:87","type":""}],"returnVariables":[{"name":"tail","nativeSrc":"23262:4:87","nodeType":"YulTypedName","src":"23262:4:87","type":""}],"src":"23116:396:87"},{"body":{"nativeSrc":"23611:316:87","nodeType":"YulBlock","src":"23611:316:87","statements":[{"body":{"nativeSrc":"23657:16:87","nodeType":"YulBlock","src":"23657:16:87","statements":[{"expression":{"arguments":[{"kind":"number","nativeSrc":"23666:1:87","nodeType":"YulLiteral","src":"23666:1:87","type":"","value":"0"},{"kind":"number","nativeSrc":"23669:1:87","nodeType":"YulLiteral","src":"23669:1:87","type":"","value":"0"}],"functionName":{"name":"revert","nativeSrc":"23659:6:87","nodeType":"YulIdentifier","src":"23659:6:87"},"nativeSrc":"23659:12:87","nodeType":"YulFunctionCall","src":"23659:12:87"},"nativeSrc":"23659:12:87","nodeType":"YulExpressionStatement","src":"23659:12:87"}]},"condition":{"arguments":[{"arguments":[{"name":"dataEnd","nativeSrc":"23632:7:87","nodeType":"YulIdentifier","src":"23632:7:87"},{"name":"headStart","nativeSrc":"23641:9:87","nodeType":"YulIdentifier","src":"23641:9:87"}],"functionName":{"name":"sub","nativeSrc":"23628:3:87","nodeType":"YulIdentifier","src":"23628:3:87"},"nativeSrc":"23628:23:87","nodeType":"YulFunctionCall","src":"23628:23:87"},{"kind":"number","nativeSrc":"23653:2:87","nodeType":"YulLiteral","src":"23653:2:87","type":"","value":"64"}],"functionName":{"name":"slt","nativeSrc":"23624:3:87","nodeType":"YulIdentifier","src":"23624:3:87"},"nativeSrc":"23624:32:87","nodeType":"YulFunctionCall","src":"23624:32:87"},"nativeSrc":"23621:52:87","nodeType":"YulIf","src":"23621:52:87"},{"nativeSrc":"23682:29:87","nodeType":"YulVariableDeclaration","src":"23682:29:87","value":{"arguments":[{"name":"headStart","nativeSrc":"23701:9:87","nodeType":"YulIdentifier","src":"23701:9:87"}],"functionName":{"name":"mload","nativeSrc":"23695:5:87","nodeType":"YulIdentifier","src":"23695:5:87"},"nativeSrc":"23695:16:87","nodeType":"YulFunctionCall","src":"23695:16:87"},"variables":[{"name":"value","nativeSrc":"23686:5:87","nodeType":"YulTypedName","src":"23686:5:87","type":""}]},{"expression":{"arguments":[{"name":"value","nativeSrc":"23742:5:87","nodeType":"YulIdentifier","src":"23742:5:87"}],"functionName":{"name":"validator_revert_bool","nativeSrc":"23720:21:87","nodeType":"YulIdentifier","src":"23720:21:87"},"nativeSrc":"23720:28:87","nodeType":"YulFunctionCall","src":"23720:28:87"},"nativeSrc":"23720:28:87","nodeType":"YulExpressionStatement","src":"23720:28:87"},{"nativeSrc":"23757:15:87","nodeType":"YulAssignment","src":"23757:15:87","value":{"name":"value","nativeSrc":"23767:5:87","nodeType":"YulIdentifier","src":"23767:5:87"},"variableNames":[{"name":"value0","nativeSrc":"23757:6:87","nodeType":"YulIdentifier","src":"23757:6:87"}]},{"nativeSrc":"23781:40:87","nodeType":"YulVariableDeclaration","src":"23781:40:87","value":{"arguments":[{"arguments":[{"name":"headStart","nativeSrc":"23806:9:87","nodeType":"YulIdentifier","src":"23806:9:87"},{"kind":"number","nativeSrc":"23817:2:87","nodeType":"YulLiteral","src":"23817:2:87","type":"","value":"32"}],"functionName":{"name":"add","nativeSrc":"23802:3:87","nodeType":"YulIdentifier","src":"23802:3:87"},"nativeSrc":"23802:18:87","nodeType":"YulFunctionCall","src":"23802:18:87"}],"functionName":{"name":"mload","nativeSrc":"23796:5:87","nodeType":"YulIdentifier","src":"23796:5:87"},"nativeSrc":"23796:25:87","nodeType":"YulFunctionCall","src":"23796:25:87"},"variables":[{"name":"value_1","nativeSrc":"23785:7:87","nodeType":"YulTypedName","src":"23785:7:87","type":""}]},{"body":{"nativeSrc":"23879:16:87","nodeType":"YulBlock","src":"23879:16:87","statements":[{"expression":{"arguments":[{"kind":"number","nativeSrc":"23888:1:87","nodeType":"YulLiteral","src":"23888:1:87","type":"","value":"0"},{"kind":"number","nativeSrc":"23891:1:87","nodeType":"YulLiteral","src":"23891:1:87","type":"","value":"0"}],"functionName":{"name":"revert","nativeSrc":"23881:6:87","nodeType":"YulIdentifier","src":"23881:6:87"},"nativeSrc":"23881:12:87","nodeType":"YulFunctionCall","src":"23881:12:87"},"nativeSrc":"23881:12:87","nodeType":"YulExpressionStatement","src":"23881:12:87"}]},"condition":{"arguments":[{"arguments":[{"name":"value_1","nativeSrc":"23843:7:87","nodeType":"YulIdentifier","src":"23843:7:87"},{"arguments":[{"name":"value_1","nativeSrc":"23856:7:87","nodeType":"YulIdentifier","src":"23856:7:87"},{"kind":"number","nativeSrc":"23865:10:87","nodeType":"YulLiteral","src":"23865:10:87","type":"","value":"0xffffffff"}],"functionName":{"name":"and","nativeSrc":"23852:3:87","nodeType":"YulIdentifier","src":"23852:3:87"},"nativeSrc":"23852:24:87","nodeType":"YulFunctionCall","src":"23852:24:87"}],"functionName":{"name":"eq","nativeSrc":"23840:2:87","nodeType":"YulIdentifier","src":"23840:2:87"},"nativeSrc":"23840:37:87","nodeType":"YulFunctionCall","src":"23840:37:87"}],"functionName":{"name":"iszero","nativeSrc":"23833:6:87","nodeType":"YulIdentifier","src":"23833:6:87"},"nativeSrc":"23833:45:87","nodeType":"YulFunctionCall","src":"23833:45:87"},"nativeSrc":"23830:65:87","nodeType":"YulIf","src":"23830:65:87"},{"nativeSrc":"23904:17:87","nodeType":"YulAssignment","src":"23904:17:87","value":{"name":"value_1","nativeSrc":"23914:7:87","nodeType":"YulIdentifier","src":"23914:7:87"},"variableNames":[{"name":"value1","nativeSrc":"23904:6:87","nodeType":"YulIdentifier","src":"23904:6:87"}]}]},"name":"abi_decode_tuple_t_boolt_uint32_fromMemory","nativeSrc":"23517:410:87","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nativeSrc":"23569:9:87","nodeType":"YulTypedName","src":"23569:9:87","type":""},{"name":"dataEnd","nativeSrc":"23580:7:87","nodeType":"YulTypedName","src":"23580:7:87","type":""}],"returnVariables":[{"name":"value0","nativeSrc":"23592:6:87","nodeType":"YulTypedName","src":"23592:6:87","type":""},{"name":"value1","nativeSrc":"23600:6:87","nodeType":"YulTypedName","src":"23600:6:87","type":""}],"src":"23517:410:87"},{"body":{"nativeSrc":"24075:153:87","nodeType":"YulBlock","src":"24075:153:87","statements":[{"expression":{"arguments":[{"name":"headStart","nativeSrc":"24092:9:87","nodeType":"YulIdentifier","src":"24092:9:87"},{"arguments":[{"name":"value0","nativeSrc":"24107:6:87","nodeType":"YulIdentifier","src":"24107:6:87"},{"kind":"number","nativeSrc":"24115:4:87","nodeType":"YulLiteral","src":"24115:4:87","type":"","value":"0xff"}],"functionName":{"name":"and","nativeSrc":"24103:3:87","nodeType":"YulIdentifier","src":"24103:3:87"},"nativeSrc":"24103:17:87","nodeType":"YulFunctionCall","src":"24103:17:87"}],"functionName":{"name":"mstore","nativeSrc":"24085:6:87","nodeType":"YulIdentifier","src":"24085:6:87"},"nativeSrc":"24085:36:87","nodeType":"YulFunctionCall","src":"24085:36:87"},"nativeSrc":"24085:36:87","nodeType":"YulExpressionStatement","src":"24085:36:87"},{"expression":{"arguments":[{"arguments":[{"name":"headStart","nativeSrc":"24141:9:87","nodeType":"YulIdentifier","src":"24141:9:87"},{"kind":"number","nativeSrc":"24152:2:87","nodeType":"YulLiteral","src":"24152:2:87","type":"","value":"32"}],"functionName":{"name":"add","nativeSrc":"24137:3:87","nodeType":"YulIdentifier","src":"24137:3:87"},"nativeSrc":"24137:18:87","nodeType":"YulFunctionCall","src":"24137:18:87"},{"kind":"number","nativeSrc":"24157:2:87","nodeType":"YulLiteral","src":"24157:2:87","type":"","value":"64"}],"functionName":{"name":"mstore","nativeSrc":"24130:6:87","nodeType":"YulIdentifier","src":"24130:6:87"},"nativeSrc":"24130:30:87","nodeType":"YulFunctionCall","src":"24130:30:87"},"nativeSrc":"24130:30:87","nodeType":"YulExpressionStatement","src":"24130:30:87"},{"nativeSrc":"24169:53:87","nodeType":"YulAssignment","src":"24169:53:87","value":{"arguments":[{"name":"value1","nativeSrc":"24195:6:87","nodeType":"YulIdentifier","src":"24195:6:87"},{"arguments":[{"name":"headStart","nativeSrc":"24207:9:87","nodeType":"YulIdentifier","src":"24207:9:87"},{"kind":"number","nativeSrc":"24218:2:87","nodeType":"YulLiteral","src":"24218:2:87","type":"","value":"64"}],"functionName":{"name":"add","nativeSrc":"24203:3:87","nodeType":"YulIdentifier","src":"24203:3:87"},"nativeSrc":"24203:18:87","nodeType":"YulFunctionCall","src":"24203:18:87"}],"functionName":{"name":"abi_encode_string","nativeSrc":"24177:17:87","nodeType":"YulIdentifier","src":"24177:17:87"},"nativeSrc":"24177:45:87","nodeType":"YulFunctionCall","src":"24177:45:87"},"variableNames":[{"name":"tail","nativeSrc":"24169:4:87","nodeType":"YulIdentifier","src":"24169:4:87"}]}]},"name":"abi_encode_tuple_t_uint8_t_bytes_memory_ptr__to_t_uint8_t_bytes_memory_ptr__fromStack_reversed","nativeSrc":"23932:296:87","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nativeSrc":"24036:9:87","nodeType":"YulTypedName","src":"24036:9:87","type":""},{"name":"value1","nativeSrc":"24047:6:87","nodeType":"YulTypedName","src":"24047:6:87","type":""},{"name":"value0","nativeSrc":"24055:6:87","nodeType":"YulTypedName","src":"24055:6:87","type":""}],"returnVariables":[{"name":"tail","nativeSrc":"24066:4:87","nodeType":"YulTypedName","src":"24066:4:87","type":""}],"src":"23932:296:87"},{"body":{"nativeSrc":"24314:103:87","nodeType":"YulBlock","src":"24314:103:87","statements":[{"body":{"nativeSrc":"24360:16:87","nodeType":"YulBlock","src":"24360:16:87","statements":[{"expression":{"arguments":[{"kind":"number","nativeSrc":"24369:1:87","nodeType":"YulLiteral","src":"24369:1:87","type":"","value":"0"},{"kind":"number","nativeSrc":"24372:1:87","nodeType":"YulLiteral","src":"24372:1:87","type":"","value":"0"}],"functionName":{"name":"revert","nativeSrc":"24362:6:87","nodeType":"YulIdentifier","src":"24362:6:87"},"nativeSrc":"24362:12:87","nodeType":"YulFunctionCall","src":"24362:12:87"},"nativeSrc":"24362:12:87","nodeType":"YulExpressionStatement","src":"24362:12:87"}]},"condition":{"arguments":[{"arguments":[{"name":"dataEnd","nativeSrc":"24335:7:87","nodeType":"YulIdentifier","src":"24335:7:87"},{"name":"headStart","nativeSrc":"24344:9:87","nodeType":"YulIdentifier","src":"24344:9:87"}],"functionName":{"name":"sub","nativeSrc":"24331:3:87","nodeType":"YulIdentifier","src":"24331:3:87"},"nativeSrc":"24331:23:87","nodeType":"YulFunctionCall","src":"24331:23:87"},{"kind":"number","nativeSrc":"24356:2:87","nodeType":"YulLiteral","src":"24356:2:87","type":"","value":"32"}],"functionName":{"name":"slt","nativeSrc":"24327:3:87","nodeType":"YulIdentifier","src":"24327:3:87"},"nativeSrc":"24327:32:87","nodeType":"YulFunctionCall","src":"24327:32:87"},"nativeSrc":"24324:52:87","nodeType":"YulIf","src":"24324:52:87"},{"nativeSrc":"24385:26:87","nodeType":"YulAssignment","src":"24385:26:87","value":{"arguments":[{"name":"headStart","nativeSrc":"24401:9:87","nodeType":"YulIdentifier","src":"24401:9:87"}],"functionName":{"name":"mload","nativeSrc":"24395:5:87","nodeType":"YulIdentifier","src":"24395:5:87"},"nativeSrc":"24395:16:87","nodeType":"YulFunctionCall","src":"24395:16:87"},"variableNames":[{"name":"value0","nativeSrc":"24385:6:87","nodeType":"YulIdentifier","src":"24385:6:87"}]}]},"name":"abi_decode_tuple_t_uint256_fromMemory","nativeSrc":"24233:184:87","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nativeSrc":"24280:9:87","nodeType":"YulTypedName","src":"24280:9:87","type":""},{"name":"dataEnd","nativeSrc":"24291:7:87","nodeType":"YulTypedName","src":"24291:7:87","type":""}],"returnVariables":[{"name":"value0","nativeSrc":"24303:6:87","nodeType":"YulTypedName","src":"24303:6:87","type":""}],"src":"24233:184:87"},{"body":{"nativeSrc":"24601:171:87","nodeType":"YulBlock","src":"24601:171:87","statements":[{"nativeSrc":"24611:26:87","nodeType":"YulAssignment","src":"24611:26:87","value":{"arguments":[{"name":"headStart","nativeSrc":"24623:9:87","nodeType":"YulIdentifier","src":"24623:9:87"},{"kind":"number","nativeSrc":"24634:2:87","nodeType":"YulLiteral","src":"24634:2:87","type":"","value":"64"}],"functionName":{"name":"add","nativeSrc":"24619:3:87","nodeType":"YulIdentifier","src":"24619:3:87"},"nativeSrc":"24619:18:87","nodeType":"YulFunctionCall","src":"24619:18:87"},"variableNames":[{"name":"tail","nativeSrc":"24611:4:87","nodeType":"YulIdentifier","src":"24611:4:87"}]},{"expression":{"arguments":[{"name":"headStart","nativeSrc":"24653:9:87","nodeType":"YulIdentifier","src":"24653:9:87"},{"arguments":[{"name":"value0","nativeSrc":"24668:6:87","nodeType":"YulIdentifier","src":"24668:6:87"},{"arguments":[{"arguments":[{"kind":"number","nativeSrc":"24684:3:87","nodeType":"YulLiteral","src":"24684:3:87","type":"","value":"160"},{"kind":"number","nativeSrc":"24689:1:87","nodeType":"YulLiteral","src":"24689:1:87","type":"","value":"1"}],"functionName":{"name":"shl","nativeSrc":"24680:3:87","nodeType":"YulIdentifier","src":"24680:3:87"},"nativeSrc":"24680:11:87","nodeType":"YulFunctionCall","src":"24680:11:87"},{"kind":"number","nativeSrc":"24693:1:87","nodeType":"YulLiteral","src":"24693:1:87","type":"","value":"1"}],"functionName":{"name":"sub","nativeSrc":"24676:3:87","nodeType":"YulIdentifier","src":"24676:3:87"},"nativeSrc":"24676:19:87","nodeType":"YulFunctionCall","src":"24676:19:87"}],"functionName":{"name":"and","nativeSrc":"24664:3:87","nodeType":"YulIdentifier","src":"24664:3:87"},"nativeSrc":"24664:32:87","nodeType":"YulFunctionCall","src":"24664:32:87"}],"functionName":{"name":"mstore","nativeSrc":"24646:6:87","nodeType":"YulIdentifier","src":"24646:6:87"},"nativeSrc":"24646:51:87","nodeType":"YulFunctionCall","src":"24646:51:87"},"nativeSrc":"24646:51:87","nodeType":"YulExpressionStatement","src":"24646:51:87"},{"expression":{"arguments":[{"arguments":[{"name":"headStart","nativeSrc":"24717:9:87","nodeType":"YulIdentifier","src":"24717:9:87"},{"kind":"number","nativeSrc":"24728:2:87","nodeType":"YulLiteral","src":"24728:2:87","type":"","value":"32"}],"functionName":{"name":"add","nativeSrc":"24713:3:87","nodeType":"YulIdentifier","src":"24713:3:87"},"nativeSrc":"24713:18:87","nodeType":"YulFunctionCall","src":"24713:18:87"},{"arguments":[{"name":"value1","nativeSrc":"24737:6:87","nodeType":"YulIdentifier","src":"24737:6:87"},{"arguments":[{"arguments":[{"kind":"number","nativeSrc":"24753:3:87","nodeType":"YulLiteral","src":"24753:3:87","type":"","value":"160"},{"kind":"number","nativeSrc":"24758:1:87","nodeType":"YulLiteral","src":"24758:1:87","type":"","value":"1"}],"functionName":{"name":"shl","nativeSrc":"24749:3:87","nodeType":"YulIdentifier","src":"24749:3:87"},"nativeSrc":"24749:11:87","nodeType":"YulFunctionCall","src":"24749:11:87"},{"kind":"number","nativeSrc":"24762:1:87","nodeType":"YulLiteral","src":"24762:1:87","type":"","value":"1"}],"functionName":{"name":"sub","nativeSrc":"24745:3:87","nodeType":"YulIdentifier","src":"24745:3:87"},"nativeSrc":"24745:19:87","nodeType":"YulFunctionCall","src":"24745:19:87"}],"functionName":{"name":"and","nativeSrc":"24733:3:87","nodeType":"YulIdentifier","src":"24733:3:87"},"nativeSrc":"24733:32:87","nodeType":"YulFunctionCall","src":"24733:32:87"}],"functionName":{"name":"mstore","nativeSrc":"24706:6:87","nodeType":"YulIdentifier","src":"24706:6:87"},"nativeSrc":"24706:60:87","nodeType":"YulFunctionCall","src":"24706:60:87"},"nativeSrc":"24706:60:87","nodeType":"YulExpressionStatement","src":"24706:60:87"}]},"name":"abi_encode_tuple_t_contract$_IInvestStrategy_$20725_t_contract$_IInvestStrategy_$20725__to_t_address_t_address__fromStack_reversed","nativeSrc":"24422:350:87","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nativeSrc":"24562:9:87","nodeType":"YulTypedName","src":"24562:9:87","type":""},{"name":"value1","nativeSrc":"24573:6:87","nodeType":"YulTypedName","src":"24573:6:87","type":""},{"name":"value0","nativeSrc":"24581:6:87","nodeType":"YulTypedName","src":"24581:6:87","type":""}],"returnVariables":[{"name":"tail","nativeSrc":"24592:4:87","nodeType":"YulTypedName","src":"24592:4:87","type":""}],"src":"24422:350:87"},{"body":{"nativeSrc":"24858:170:87","nodeType":"YulBlock","src":"24858:170:87","statements":[{"body":{"nativeSrc":"24904:16:87","nodeType":"YulBlock","src":"24904:16:87","statements":[{"expression":{"arguments":[{"kind":"number","nativeSrc":"24913:1:87","nodeType":"YulLiteral","src":"24913:1:87","type":"","value":"0"},{"kind":"number","nativeSrc":"24916:1:87","nodeType":"YulLiteral","src":"24916:1:87","type":"","value":"0"}],"functionName":{"name":"revert","nativeSrc":"24906:6:87","nodeType":"YulIdentifier","src":"24906:6:87"},"nativeSrc":"24906:12:87","nodeType":"YulFunctionCall","src":"24906:12:87"},"nativeSrc":"24906:12:87","nodeType":"YulExpressionStatement","src":"24906:12:87"}]},"condition":{"arguments":[{"arguments":[{"name":"dataEnd","nativeSrc":"24879:7:87","nodeType":"YulIdentifier","src":"24879:7:87"},{"name":"headStart","nativeSrc":"24888:9:87","nodeType":"YulIdentifier","src":"24888:9:87"}],"functionName":{"name":"sub","nativeSrc":"24875:3:87","nodeType":"YulIdentifier","src":"24875:3:87"},"nativeSrc":"24875:23:87","nodeType":"YulFunctionCall","src":"24875:23:87"},{"kind":"number","nativeSrc":"24900:2:87","nodeType":"YulLiteral","src":"24900:2:87","type":"","value":"32"}],"functionName":{"name":"slt","nativeSrc":"24871:3:87","nodeType":"YulIdentifier","src":"24871:3:87"},"nativeSrc":"24871:32:87","nodeType":"YulFunctionCall","src":"24871:32:87"},"nativeSrc":"24868:52:87","nodeType":"YulIf","src":"24868:52:87"},{"nativeSrc":"24929:29:87","nodeType":"YulVariableDeclaration","src":"24929:29:87","value":{"arguments":[{"name":"headStart","nativeSrc":"24948:9:87","nodeType":"YulIdentifier","src":"24948:9:87"}],"functionName":{"name":"mload","nativeSrc":"24942:5:87","nodeType":"YulIdentifier","src":"24942:5:87"},"nativeSrc":"24942:16:87","nodeType":"YulFunctionCall","src":"24942:16:87"},"variables":[{"name":"value","nativeSrc":"24933:5:87","nodeType":"YulTypedName","src":"24933:5:87","type":""}]},{"expression":{"arguments":[{"name":"value","nativeSrc":"24992:5:87","nodeType":"YulIdentifier","src":"24992:5:87"}],"functionName":{"name":"validator_revert_address","nativeSrc":"24967:24:87","nodeType":"YulIdentifier","src":"24967:24:87"},"nativeSrc":"24967:31:87","nodeType":"YulFunctionCall","src":"24967:31:87"},"nativeSrc":"24967:31:87","nodeType":"YulExpressionStatement","src":"24967:31:87"},{"nativeSrc":"25007:15:87","nodeType":"YulAssignment","src":"25007:15:87","value":{"name":"value","nativeSrc":"25017:5:87","nodeType":"YulIdentifier","src":"25017:5:87"},"variableNames":[{"name":"value0","nativeSrc":"25007:6:87","nodeType":"YulIdentifier","src":"25007:6:87"}]}]},"name":"abi_decode_tuple_t_address_fromMemory","nativeSrc":"24777:251:87","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nativeSrc":"24824:9:87","nodeType":"YulTypedName","src":"24824:9:87","type":""},{"name":"dataEnd","nativeSrc":"24835:7:87","nodeType":"YulTypedName","src":"24835:7:87","type":""}],"returnVariables":[{"name":"value0","nativeSrc":"24847:6:87","nodeType":"YulTypedName","src":"24847:6:87","type":""}],"src":"24777:251:87"},{"body":{"nativeSrc":"25170:164:87","nodeType":"YulBlock","src":"25170:164:87","statements":[{"nativeSrc":"25180:27:87","nodeType":"YulVariableDeclaration","src":"25180:27:87","value":{"arguments":[{"name":"value0","nativeSrc":"25200:6:87","nodeType":"YulIdentifier","src":"25200:6:87"}],"functionName":{"name":"mload","nativeSrc":"25194:5:87","nodeType":"YulIdentifier","src":"25194:5:87"},"nativeSrc":"25194:13:87","nodeType":"YulFunctionCall","src":"25194:13:87"},"variables":[{"name":"length","nativeSrc":"25184:6:87","nodeType":"YulTypedName","src":"25184:6:87","type":""}]},{"expression":{"arguments":[{"name":"pos","nativeSrc":"25222:3:87","nodeType":"YulIdentifier","src":"25222:3:87"},{"arguments":[{"name":"value0","nativeSrc":"25231:6:87","nodeType":"YulIdentifier","src":"25231:6:87"},{"kind":"number","nativeSrc":"25239:4:87","nodeType":"YulLiteral","src":"25239:4:87","type":"","value":"0x20"}],"functionName":{"name":"add","nativeSrc":"25227:3:87","nodeType":"YulIdentifier","src":"25227:3:87"},"nativeSrc":"25227:17:87","nodeType":"YulFunctionCall","src":"25227:17:87"},{"name":"length","nativeSrc":"25246:6:87","nodeType":"YulIdentifier","src":"25246:6:87"}],"functionName":{"name":"mcopy","nativeSrc":"25216:5:87","nodeType":"YulIdentifier","src":"25216:5:87"},"nativeSrc":"25216:37:87","nodeType":"YulFunctionCall","src":"25216:37:87"},"nativeSrc":"25216:37:87","nodeType":"YulExpressionStatement","src":"25216:37:87"},{"nativeSrc":"25262:26:87","nodeType":"YulVariableDeclaration","src":"25262:26:87","value":{"arguments":[{"name":"pos","nativeSrc":"25276:3:87","nodeType":"YulIdentifier","src":"25276:3:87"},{"name":"length","nativeSrc":"25281:6:87","nodeType":"YulIdentifier","src":"25281:6:87"}],"functionName":{"name":"add","nativeSrc":"25272:3:87","nodeType":"YulIdentifier","src":"25272:3:87"},"nativeSrc":"25272:16:87","nodeType":"YulFunctionCall","src":"25272:16:87"},"variables":[{"name":"_1","nativeSrc":"25266:2:87","nodeType":"YulTypedName","src":"25266:2:87","type":""}]},{"expression":{"arguments":[{"name":"_1","nativeSrc":"25304:2:87","nodeType":"YulIdentifier","src":"25304:2:87"},{"kind":"number","nativeSrc":"25308:1:87","nodeType":"YulLiteral","src":"25308:1:87","type":"","value":"0"}],"functionName":{"name":"mstore","nativeSrc":"25297:6:87","nodeType":"YulIdentifier","src":"25297:6:87"},"nativeSrc":"25297:13:87","nodeType":"YulFunctionCall","src":"25297:13:87"},"nativeSrc":"25297:13:87","nodeType":"YulExpressionStatement","src":"25297:13:87"},{"nativeSrc":"25319:9:87","nodeType":"YulAssignment","src":"25319:9:87","value":{"name":"_1","nativeSrc":"25326:2:87","nodeType":"YulIdentifier","src":"25326:2:87"},"variableNames":[{"name":"end","nativeSrc":"25319:3:87","nodeType":"YulIdentifier","src":"25319:3:87"}]}]},"name":"abi_encode_tuple_packed_t_bytes_memory_ptr__to_t_bytes_memory_ptr__nonPadded_inplace_fromStack_reversed","nativeSrc":"25033:301:87","nodeType":"YulFunctionDefinition","parameters":[{"name":"pos","nativeSrc":"25146:3:87","nodeType":"YulTypedName","src":"25146:3:87","type":""},{"name":"value0","nativeSrc":"25151:6:87","nodeType":"YulTypedName","src":"25151:6:87","type":""}],"returnVariables":[{"name":"end","nativeSrc":"25162:3:87","nodeType":"YulTypedName","src":"25162:3:87","type":""}],"src":"25033:301:87"},{"body":{"nativeSrc":"25382:93:87","nodeType":"YulBlock","src":"25382:93:87","statements":[{"body":{"nativeSrc":"25418:22:87","nodeType":"YulBlock","src":"25418:22:87","statements":[{"expression":{"arguments":[],"functionName":{"name":"panic_error_0x11","nativeSrc":"25420:16:87","nodeType":"YulIdentifier","src":"25420:16:87"},"nativeSrc":"25420:18:87","nodeType":"YulFunctionCall","src":"25420:18:87"},"nativeSrc":"25420:18:87","nodeType":"YulExpressionStatement","src":"25420:18:87"}]},"condition":{"arguments":[{"name":"value","nativeSrc":"25398:5:87","nodeType":"YulIdentifier","src":"25398:5:87"},{"arguments":[{"kind":"number","nativeSrc":"25409:3:87","nodeType":"YulLiteral","src":"25409:3:87","type":"","value":"255"},{"kind":"number","nativeSrc":"25414:1:87","nodeType":"YulLiteral","src":"25414:1:87","type":"","value":"1"}],"functionName":{"name":"shl","nativeSrc":"25405:3:87","nodeType":"YulIdentifier","src":"25405:3:87"},"nativeSrc":"25405:11:87","nodeType":"YulFunctionCall","src":"25405:11:87"}],"functionName":{"name":"eq","nativeSrc":"25395:2:87","nodeType":"YulIdentifier","src":"25395:2:87"},"nativeSrc":"25395:22:87","nodeType":"YulFunctionCall","src":"25395:22:87"},"nativeSrc":"25392:48:87","nodeType":"YulIf","src":"25392:48:87"},{"nativeSrc":"25449:20:87","nodeType":"YulAssignment","src":"25449:20:87","value":{"arguments":[{"kind":"number","nativeSrc":"25460:1:87","nodeType":"YulLiteral","src":"25460:1:87","type":"","value":"0"},{"name":"value","nativeSrc":"25463:5:87","nodeType":"YulIdentifier","src":"25463:5:87"}],"functionName":{"name":"sub","nativeSrc":"25456:3:87","nodeType":"YulIdentifier","src":"25456:3:87"},"nativeSrc":"25456:13:87","nodeType":"YulFunctionCall","src":"25456:13:87"},"variableNames":[{"name":"ret","nativeSrc":"25449:3:87","nodeType":"YulIdentifier","src":"25449:3:87"}]}]},"name":"negate_t_int256","nativeSrc":"25339:136:87","nodeType":"YulFunctionDefinition","parameters":[{"name":"value","nativeSrc":"25364:5:87","nodeType":"YulTypedName","src":"25364:5:87","type":""}],"returnVariables":[{"name":"ret","nativeSrc":"25374:3:87","nodeType":"YulTypedName","src":"25374:3:87","type":""}],"src":"25339:136:87"},{"body":{"nativeSrc":"25607:160:87","nodeType":"YulBlock","src":"25607:160:87","statements":[{"nativeSrc":"25617:26:87","nodeType":"YulAssignment","src":"25617:26:87","value":{"arguments":[{"name":"headStart","nativeSrc":"25629:9:87","nodeType":"YulIdentifier","src":"25629:9:87"},{"kind":"number","nativeSrc":"25640:2:87","nodeType":"YulLiteral","src":"25640:2:87","type":"","value":"64"}],"functionName":{"name":"add","nativeSrc":"25625:3:87","nodeType":"YulIdentifier","src":"25625:3:87"},"nativeSrc":"25625:18:87","nodeType":"YulFunctionCall","src":"25625:18:87"},"variableNames":[{"name":"tail","nativeSrc":"25617:4:87","nodeType":"YulIdentifier","src":"25617:4:87"}]},{"expression":{"arguments":[{"name":"headStart","nativeSrc":"25659:9:87","nodeType":"YulIdentifier","src":"25659:9:87"},{"name":"value0","nativeSrc":"25670:6:87","nodeType":"YulIdentifier","src":"25670:6:87"}],"functionName":{"name":"mstore","nativeSrc":"25652:6:87","nodeType":"YulIdentifier","src":"25652:6:87"},"nativeSrc":"25652:25:87","nodeType":"YulFunctionCall","src":"25652:25:87"},"nativeSrc":"25652:25:87","nodeType":"YulExpressionStatement","src":"25652:25:87"},{"expression":{"arguments":[{"arguments":[{"name":"headStart","nativeSrc":"25697:9:87","nodeType":"YulIdentifier","src":"25697:9:87"},{"kind":"number","nativeSrc":"25708:2:87","nodeType":"YulLiteral","src":"25708:2:87","type":"","value":"32"}],"functionName":{"name":"add","nativeSrc":"25693:3:87","nodeType":"YulIdentifier","src":"25693:3:87"},"nativeSrc":"25693:18:87","nodeType":"YulFunctionCall","src":"25693:18:87"},{"arguments":[{"name":"value1","nativeSrc":"25717:6:87","nodeType":"YulIdentifier","src":"25717:6:87"},{"kind":"number","nativeSrc":"25725:34:87","nodeType":"YulLiteral","src":"25725:34:87","type":"","value":"0xffffffffffffffffffffffffffffffff"}],"functionName":{"name":"and","nativeSrc":"25713:3:87","nodeType":"YulIdentifier","src":"25713:3:87"},"nativeSrc":"25713:47:87","nodeType":"YulFunctionCall","src":"25713:47:87"}],"functionName":{"name":"mstore","nativeSrc":"25686:6:87","nodeType":"YulIdentifier","src":"25686:6:87"},"nativeSrc":"25686:75:87","nodeType":"YulFunctionCall","src":"25686:75:87"},"nativeSrc":"25686:75:87","nodeType":"YulExpressionStatement","src":"25686:75:87"}]},"name":"abi_encode_tuple_t_int256_t_uint128__to_t_int256_t_uint256__fromStack_reversed","nativeSrc":"25480:287:87","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nativeSrc":"25568:9:87","nodeType":"YulTypedName","src":"25568:9:87","type":""},{"name":"value1","nativeSrc":"25579:6:87","nodeType":"YulTypedName","src":"25579:6:87","type":""},{"name":"value0","nativeSrc":"25587:6:87","nodeType":"YulTypedName","src":"25587:6:87","type":""}],"returnVariables":[{"name":"tail","nativeSrc":"25598:4:87","nodeType":"YulTypedName","src":"25598:4:87","type":""}],"src":"25480:287:87"},{"body":{"nativeSrc":"25820:152:87","nodeType":"YulBlock","src":"25820:152:87","statements":[{"nativeSrc":"25830:17:87","nodeType":"YulAssignment","src":"25830:17:87","value":{"arguments":[{"name":"x","nativeSrc":"25842:1:87","nodeType":"YulIdentifier","src":"25842:1:87"},{"name":"y","nativeSrc":"25845:1:87","nodeType":"YulIdentifier","src":"25845:1:87"}],"functionName":{"name":"sub","nativeSrc":"25838:3:87","nodeType":"YulIdentifier","src":"25838:3:87"},"nativeSrc":"25838:9:87","nodeType":"YulFunctionCall","src":"25838:9:87"},"variableNames":[{"name":"diff","nativeSrc":"25830:4:87","nodeType":"YulIdentifier","src":"25830:4:87"}]},{"nativeSrc":"25856:19:87","nodeType":"YulVariableDeclaration","src":"25856:19:87","value":{"arguments":[{"name":"y","nativeSrc":"25870:1:87","nodeType":"YulIdentifier","src":"25870:1:87"},{"kind":"number","nativeSrc":"25873:1:87","nodeType":"YulLiteral","src":"25873:1:87","type":"","value":"0"}],"functionName":{"name":"slt","nativeSrc":"25866:3:87","nodeType":"YulIdentifier","src":"25866:3:87"},"nativeSrc":"25866:9:87","nodeType":"YulFunctionCall","src":"25866:9:87"},"variables":[{"name":"_1","nativeSrc":"25860:2:87","nodeType":"YulTypedName","src":"25860:2:87","type":""}]},{"body":{"nativeSrc":"25944:22:87","nodeType":"YulBlock","src":"25944:22:87","statements":[{"expression":{"arguments":[],"functionName":{"name":"panic_error_0x11","nativeSrc":"25946:16:87","nodeType":"YulIdentifier","src":"25946:16:87"},"nativeSrc":"25946:18:87","nodeType":"YulFunctionCall","src":"25946:18:87"},"nativeSrc":"25946:18:87","nodeType":"YulExpressionStatement","src":"25946:18:87"}]},"condition":{"arguments":[{"arguments":[{"arguments":[{"name":"_1","nativeSrc":"25901:2:87","nodeType":"YulIdentifier","src":"25901:2:87"}],"functionName":{"name":"iszero","nativeSrc":"25894:6:87","nodeType":"YulIdentifier","src":"25894:6:87"},"nativeSrc":"25894:10:87","nodeType":"YulFunctionCall","src":"25894:10:87"},{"arguments":[{"name":"diff","nativeSrc":"25910:4:87","nodeType":"YulIdentifier","src":"25910:4:87"},{"name":"x","nativeSrc":"25916:1:87","nodeType":"YulIdentifier","src":"25916:1:87"}],"functionName":{"name":"sgt","nativeSrc":"25906:3:87","nodeType":"YulIdentifier","src":"25906:3:87"},"nativeSrc":"25906:12:87","nodeType":"YulFunctionCall","src":"25906:12:87"}],"functionName":{"name":"and","nativeSrc":"25890:3:87","nodeType":"YulIdentifier","src":"25890:3:87"},"nativeSrc":"25890:29:87","nodeType":"YulFunctionCall","src":"25890:29:87"},{"arguments":[{"name":"_1","nativeSrc":"25925:2:87","nodeType":"YulIdentifier","src":"25925:2:87"},{"arguments":[{"name":"diff","nativeSrc":"25933:4:87","nodeType":"YulIdentifier","src":"25933:4:87"},{"name":"x","nativeSrc":"25939:1:87","nodeType":"YulIdentifier","src":"25939:1:87"}],"functionName":{"name":"slt","nativeSrc":"25929:3:87","nodeType":"YulIdentifier","src":"25929:3:87"},"nativeSrc":"25929:12:87","nodeType":"YulFunctionCall","src":"25929:12:87"}],"functionName":{"name":"and","nativeSrc":"25921:3:87","nodeType":"YulIdentifier","src":"25921:3:87"},"nativeSrc":"25921:21:87","nodeType":"YulFunctionCall","src":"25921:21:87"}],"functionName":{"name":"or","nativeSrc":"25887:2:87","nodeType":"YulIdentifier","src":"25887:2:87"},"nativeSrc":"25887:56:87","nodeType":"YulFunctionCall","src":"25887:56:87"},"nativeSrc":"25884:82:87","nodeType":"YulIf","src":"25884:82:87"}]},"name":"checked_sub_t_int256","nativeSrc":"25772:200:87","nodeType":"YulFunctionDefinition","parameters":[{"name":"x","nativeSrc":"25802:1:87","nodeType":"YulTypedName","src":"25802:1:87","type":""},{"name":"y","nativeSrc":"25805:1:87","nodeType":"YulTypedName","src":"25805:1:87","type":""}],"returnVariables":[{"name":"diff","nativeSrc":"25811:4:87","nodeType":"YulTypedName","src":"25811:4:87","type":""}],"src":"25772:200:87"},{"body":{"nativeSrc":"26009:95:87","nodeType":"YulBlock","src":"26009:95:87","statements":[{"expression":{"arguments":[{"kind":"number","nativeSrc":"26026:1:87","nodeType":"YulLiteral","src":"26026:1:87","type":"","value":"0"},{"arguments":[{"kind":"number","nativeSrc":"26033:3:87","nodeType":"YulLiteral","src":"26033:3:87","type":"","value":"224"},{"kind":"number","nativeSrc":"26038:10:87","nodeType":"YulLiteral","src":"26038:10:87","type":"","value":"0x4e487b71"}],"functionName":{"name":"shl","nativeSrc":"26029:3:87","nodeType":"YulIdentifier","src":"26029:3:87"},"nativeSrc":"26029:20:87","nodeType":"YulFunctionCall","src":"26029:20:87"}],"functionName":{"name":"mstore","nativeSrc":"26019:6:87","nodeType":"YulIdentifier","src":"26019:6:87"},"nativeSrc":"26019:31:87","nodeType":"YulFunctionCall","src":"26019:31:87"},"nativeSrc":"26019:31:87","nodeType":"YulExpressionStatement","src":"26019:31:87"},{"expression":{"arguments":[{"kind":"number","nativeSrc":"26066:1:87","nodeType":"YulLiteral","src":"26066:1:87","type":"","value":"4"},{"kind":"number","nativeSrc":"26069:4:87","nodeType":"YulLiteral","src":"26069:4:87","type":"","value":"0x21"}],"functionName":{"name":"mstore","nativeSrc":"26059:6:87","nodeType":"YulIdentifier","src":"26059:6:87"},"nativeSrc":"26059:15:87","nodeType":"YulFunctionCall","src":"26059:15:87"},"nativeSrc":"26059:15:87","nodeType":"YulExpressionStatement","src":"26059:15:87"},{"expression":{"arguments":[{"kind":"number","nativeSrc":"26090:1:87","nodeType":"YulLiteral","src":"26090:1:87","type":"","value":"0"},{"kind":"number","nativeSrc":"26093:4:87","nodeType":"YulLiteral","src":"26093:4:87","type":"","value":"0x24"}],"functionName":{"name":"revert","nativeSrc":"26083:6:87","nodeType":"YulIdentifier","src":"26083:6:87"},"nativeSrc":"26083:15:87","nodeType":"YulFunctionCall","src":"26083:15:87"},"nativeSrc":"26083:15:87","nodeType":"YulExpressionStatement","src":"26083:15:87"}]},"name":"panic_error_0x21","nativeSrc":"25977:127:87","nodeType":"YulFunctionDefinition","src":"25977:127:87"},{"body":{"nativeSrc":"26145:121:87","nodeType":"YulBlock","src":"26145:121:87","statements":[{"nativeSrc":"26155:23:87","nodeType":"YulVariableDeclaration","src":"26155:23:87","value":{"arguments":[{"name":"y","nativeSrc":"26170:1:87","nodeType":"YulIdentifier","src":"26170:1:87"},{"kind":"number","nativeSrc":"26173:4:87","nodeType":"YulLiteral","src":"26173:4:87","type":"","value":"0xff"}],"functionName":{"name":"and","nativeSrc":"26166:3:87","nodeType":"YulIdentifier","src":"26166:3:87"},"nativeSrc":"26166:12:87","nodeType":"YulFunctionCall","src":"26166:12:87"},"variables":[{"name":"y_1","nativeSrc":"26159:3:87","nodeType":"YulTypedName","src":"26159:3:87","type":""}]},{"body":{"nativeSrc":"26202:22:87","nodeType":"YulBlock","src":"26202:22:87","statements":[{"expression":{"arguments":[],"functionName":{"name":"panic_error_0x12","nativeSrc":"26204:16:87","nodeType":"YulIdentifier","src":"26204:16:87"},"nativeSrc":"26204:18:87","nodeType":"YulFunctionCall","src":"26204:18:87"},"nativeSrc":"26204:18:87","nodeType":"YulExpressionStatement","src":"26204:18:87"}]},"condition":{"arguments":[{"name":"y_1","nativeSrc":"26197:3:87","nodeType":"YulIdentifier","src":"26197:3:87"}],"functionName":{"name":"iszero","nativeSrc":"26190:6:87","nodeType":"YulIdentifier","src":"26190:6:87"},"nativeSrc":"26190:11:87","nodeType":"YulFunctionCall","src":"26190:11:87"},"nativeSrc":"26187:37:87","nodeType":"YulIf","src":"26187:37:87"},{"nativeSrc":"26233:27:87","nodeType":"YulAssignment","src":"26233:27:87","value":{"arguments":[{"arguments":[{"name":"x","nativeSrc":"26246:1:87","nodeType":"YulIdentifier","src":"26246:1:87"},{"kind":"number","nativeSrc":"26249:4:87","nodeType":"YulLiteral","src":"26249:4:87","type":"","value":"0xff"}],"functionName":{"name":"and","nativeSrc":"26242:3:87","nodeType":"YulIdentifier","src":"26242:3:87"},"nativeSrc":"26242:12:87","nodeType":"YulFunctionCall","src":"26242:12:87"},{"name":"y_1","nativeSrc":"26256:3:87","nodeType":"YulIdentifier","src":"26256:3:87"}],"functionName":{"name":"mod","nativeSrc":"26238:3:87","nodeType":"YulIdentifier","src":"26238:3:87"},"nativeSrc":"26238:22:87","nodeType":"YulFunctionCall","src":"26238:22:87"},"variableNames":[{"name":"r","nativeSrc":"26233:1:87","nodeType":"YulIdentifier","src":"26233:1:87"}]}]},"name":"mod_t_uint8","nativeSrc":"26109:157:87","nodeType":"YulFunctionDefinition","parameters":[{"name":"x","nativeSrc":"26130:1:87","nodeType":"YulTypedName","src":"26130:1:87","type":""},{"name":"y","nativeSrc":"26133:1:87","nodeType":"YulTypedName","src":"26133:1:87","type":""}],"returnVariables":[{"name":"r","nativeSrc":"26139:1:87","nodeType":"YulTypedName","src":"26139:1:87","type":""}],"src":"26109:157:87"},{"body":{"nativeSrc":"26327:65:87","nodeType":"YulBlock","src":"26327:65:87","statements":[{"expression":{"arguments":[{"kind":"number","nativeSrc":"26344:1:87","nodeType":"YulLiteral","src":"26344:1:87","type":"","value":"0"},{"name":"ptr","nativeSrc":"26347:3:87","nodeType":"YulIdentifier","src":"26347:3:87"}],"functionName":{"name":"mstore","nativeSrc":"26337:6:87","nodeType":"YulIdentifier","src":"26337:6:87"},"nativeSrc":"26337:14:87","nodeType":"YulFunctionCall","src":"26337:14:87"},"nativeSrc":"26337:14:87","nodeType":"YulExpressionStatement","src":"26337:14:87"},{"nativeSrc":"26360:26:87","nodeType":"YulAssignment","src":"26360:26:87","value":{"arguments":[{"kind":"number","nativeSrc":"26378:1:87","nodeType":"YulLiteral","src":"26378:1:87","type":"","value":"0"},{"kind":"number","nativeSrc":"26381:4:87","nodeType":"YulLiteral","src":"26381:4:87","type":"","value":"0x20"}],"functionName":{"name":"keccak256","nativeSrc":"26368:9:87","nodeType":"YulIdentifier","src":"26368:9:87"},"nativeSrc":"26368:18:87","nodeType":"YulFunctionCall","src":"26368:18:87"},"variableNames":[{"name":"data","nativeSrc":"26360:4:87","nodeType":"YulIdentifier","src":"26360:4:87"}]}]},"name":"array_dataslot_string_storage","nativeSrc":"26271:121:87","nodeType":"YulFunctionDefinition","parameters":[{"name":"ptr","nativeSrc":"26310:3:87","nodeType":"YulTypedName","src":"26310:3:87","type":""}],"returnVariables":[{"name":"data","nativeSrc":"26318:4:87","nodeType":"YulTypedName","src":"26318:4:87","type":""}],"src":"26271:121:87"},{"body":{"nativeSrc":"26478:437:87","nodeType":"YulBlock","src":"26478:437:87","statements":[{"body":{"nativeSrc":"26511:398:87","nodeType":"YulBlock","src":"26511:398:87","statements":[{"expression":{"arguments":[{"kind":"number","nativeSrc":"26532:1:87","nodeType":"YulLiteral","src":"26532:1:87","type":"","value":"0"},{"name":"array","nativeSrc":"26535:5:87","nodeType":"YulIdentifier","src":"26535:5:87"}],"functionName":{"name":"mstore","nativeSrc":"26525:6:87","nodeType":"YulIdentifier","src":"26525:6:87"},"nativeSrc":"26525:16:87","nodeType":"YulFunctionCall","src":"26525:16:87"},"nativeSrc":"26525:16:87","nodeType":"YulExpressionStatement","src":"26525:16:87"},{"nativeSrc":"26554:30:87","nodeType":"YulVariableDeclaration","src":"26554:30:87","value":{"arguments":[{"kind":"number","nativeSrc":"26576:1:87","nodeType":"YulLiteral","src":"26576:1:87","type":"","value":"0"},{"kind":"number","nativeSrc":"26579:4:87","nodeType":"YulLiteral","src":"26579:4:87","type":"","value":"0x20"}],"functionName":{"name":"keccak256","nativeSrc":"26566:9:87","nodeType":"YulIdentifier","src":"26566:9:87"},"nativeSrc":"26566:18:87","nodeType":"YulFunctionCall","src":"26566:18:87"},"variables":[{"name":"data","nativeSrc":"26558:4:87","nodeType":"YulTypedName","src":"26558:4:87","type":""}]},{"nativeSrc":"26597:57:87","nodeType":"YulVariableDeclaration","src":"26597:57:87","value":{"arguments":[{"name":"data","nativeSrc":"26620:4:87","nodeType":"YulIdentifier","src":"26620:4:87"},{"arguments":[{"kind":"number","nativeSrc":"26630:1:87","nodeType":"YulLiteral","src":"26630:1:87","type":"","value":"5"},{"arguments":[{"name":"startIndex","nativeSrc":"26637:10:87","nodeType":"YulIdentifier","src":"26637:10:87"},{"kind":"number","nativeSrc":"26649:2:87","nodeType":"YulLiteral","src":"26649:2:87","type":"","value":"31"}],"functionName":{"name":"add","nativeSrc":"26633:3:87","nodeType":"YulIdentifier","src":"26633:3:87"},"nativeSrc":"26633:19:87","nodeType":"YulFunctionCall","src":"26633:19:87"}],"functionName":{"name":"shr","nativeSrc":"26626:3:87","nodeType":"YulIdentifier","src":"26626:3:87"},"nativeSrc":"26626:27:87","nodeType":"YulFunctionCall","src":"26626:27:87"}],"functionName":{"name":"add","nativeSrc":"26616:3:87","nodeType":"YulIdentifier","src":"26616:3:87"},"nativeSrc":"26616:38:87","nodeType":"YulFunctionCall","src":"26616:38:87"},"variables":[{"name":"deleteStart","nativeSrc":"26601:11:87","nodeType":"YulTypedName","src":"26601:11:87","type":""}]},{"body":{"nativeSrc":"26691:23:87","nodeType":"YulBlock","src":"26691:23:87","statements":[{"nativeSrc":"26693:19:87","nodeType":"YulAssignment","src":"26693:19:87","value":{"name":"data","nativeSrc":"26708:4:87","nodeType":"YulIdentifier","src":"26708:4:87"},"variableNames":[{"name":"deleteStart","nativeSrc":"26693:11:87","nodeType":"YulIdentifier","src":"26693:11:87"}]}]},"condition":{"arguments":[{"name":"startIndex","nativeSrc":"26673:10:87","nodeType":"YulIdentifier","src":"26673:10:87"},{"kind":"number","nativeSrc":"26685:4:87","nodeType":"YulLiteral","src":"26685:4:87","type":"","value":"0x20"}],"functionName":{"name":"lt","nativeSrc":"26670:2:87","nodeType":"YulIdentifier","src":"26670:2:87"},"nativeSrc":"26670:20:87","nodeType":"YulFunctionCall","src":"26670:20:87"},"nativeSrc":"26667:47:87","nodeType":"YulIf","src":"26667:47:87"},{"nativeSrc":"26727:41:87","nodeType":"YulVariableDeclaration","src":"26727:41:87","value":{"arguments":[{"name":"data","nativeSrc":"26741:4:87","nodeType":"YulIdentifier","src":"26741:4:87"},{"arguments":[{"kind":"number","nativeSrc":"26751:1:87","nodeType":"YulLiteral","src":"26751:1:87","type":"","value":"5"},{"arguments":[{"name":"len","nativeSrc":"26758:3:87","nodeType":"YulIdentifier","src":"26758:3:87"},{"kind":"number","nativeSrc":"26763:2:87","nodeType":"YulLiteral","src":"26763:2:87","type":"","value":"31"}],"functionName":{"name":"add","nativeSrc":"26754:3:87","nodeType":"YulIdentifier","src":"26754:3:87"},"nativeSrc":"26754:12:87","nodeType":"YulFunctionCall","src":"26754:12:87"}],"functionName":{"name":"shr","nativeSrc":"26747:3:87","nodeType":"YulIdentifier","src":"26747:3:87"},"nativeSrc":"26747:20:87","nodeType":"YulFunctionCall","src":"26747:20:87"}],"functionName":{"name":"add","nativeSrc":"26737:3:87","nodeType":"YulIdentifier","src":"26737:3:87"},"nativeSrc":"26737:31:87","nodeType":"YulFunctionCall","src":"26737:31:87"},"variables":[{"name":"_1","nativeSrc":"26731:2:87","nodeType":"YulTypedName","src":"26731:2:87","type":""}]},{"nativeSrc":"26781:24:87","nodeType":"YulVariableDeclaration","src":"26781:24:87","value":{"name":"deleteStart","nativeSrc":"26794:11:87","nodeType":"YulIdentifier","src":"26794:11:87"},"variables":[{"name":"start","nativeSrc":"26785:5:87","nodeType":"YulTypedName","src":"26785:5:87","type":""}]},{"body":{"nativeSrc":"26879:20:87","nodeType":"YulBlock","src":"26879:20:87","statements":[{"expression":{"arguments":[{"name":"start","nativeSrc":"26888:5:87","nodeType":"YulIdentifier","src":"26888:5:87"},{"kind":"number","nativeSrc":"26895:1:87","nodeType":"YulLiteral","src":"26895:1:87","type":"","value":"0"}],"functionName":{"name":"sstore","nativeSrc":"26881:6:87","nodeType":"YulIdentifier","src":"26881:6:87"},"nativeSrc":"26881:16:87","nodeType":"YulFunctionCall","src":"26881:16:87"},"nativeSrc":"26881:16:87","nodeType":"YulExpressionStatement","src":"26881:16:87"}]},"condition":{"arguments":[{"name":"start","nativeSrc":"26829:5:87","nodeType":"YulIdentifier","src":"26829:5:87"},{"name":"_1","nativeSrc":"26836:2:87","nodeType":"YulIdentifier","src":"26836:2:87"}],"functionName":{"name":"lt","nativeSrc":"26826:2:87","nodeType":"YulIdentifier","src":"26826:2:87"},"nativeSrc":"26826:13:87","nodeType":"YulFunctionCall","src":"26826:13:87"},"nativeSrc":"26818:81:87","nodeType":"YulForLoop","post":{"nativeSrc":"26840:26:87","nodeType":"YulBlock","src":"26840:26:87","statements":[{"nativeSrc":"26842:22:87","nodeType":"YulAssignment","src":"26842:22:87","value":{"arguments":[{"name":"start","nativeSrc":"26855:5:87","nodeType":"YulIdentifier","src":"26855:5:87"},{"kind":"number","nativeSrc":"26862:1:87","nodeType":"YulLiteral","src":"26862:1:87","type":"","value":"1"}],"functionName":{"name":"add","nativeSrc":"26851:3:87","nodeType":"YulIdentifier","src":"26851:3:87"},"nativeSrc":"26851:13:87","nodeType":"YulFunctionCall","src":"26851:13:87"},"variableNames":[{"name":"start","nativeSrc":"26842:5:87","nodeType":"YulIdentifier","src":"26842:5:87"}]}]},"pre":{"nativeSrc":"26822:3:87","nodeType":"YulBlock","src":"26822:3:87","statements":[]},"src":"26818:81:87"}]},"condition":{"arguments":[{"name":"len","nativeSrc":"26494:3:87","nodeType":"YulIdentifier","src":"26494:3:87"},{"kind":"number","nativeSrc":"26499:2:87","nodeType":"YulLiteral","src":"26499:2:87","type":"","value":"31"}],"functionName":{"name":"gt","nativeSrc":"26491:2:87","nodeType":"YulIdentifier","src":"26491:2:87"},"nativeSrc":"26491:11:87","nodeType":"YulFunctionCall","src":"26491:11:87"},"nativeSrc":"26488:421:87","nodeType":"YulIf","src":"26488:421:87"}]},"name":"clean_up_bytearray_end_slots_string_storage","nativeSrc":"26397:518:87","nodeType":"YulFunctionDefinition","parameters":[{"name":"array","nativeSrc":"26450:5:87","nodeType":"YulTypedName","src":"26450:5:87","type":""},{"name":"len","nativeSrc":"26457:3:87","nodeType":"YulTypedName","src":"26457:3:87","type":""},{"name":"startIndex","nativeSrc":"26462:10:87","nodeType":"YulTypedName","src":"26462:10:87","type":""}],"src":"26397:518:87"},{"body":{"nativeSrc":"27005:81:87","nodeType":"YulBlock","src":"27005:81:87","statements":[{"nativeSrc":"27015:65:87","nodeType":"YulAssignment","src":"27015:65:87","value":{"arguments":[{"arguments":[{"name":"data","nativeSrc":"27030:4:87","nodeType":"YulIdentifier","src":"27030:4:87"},{"arguments":[{"arguments":[{"arguments":[{"kind":"number","nativeSrc":"27048:1:87","nodeType":"YulLiteral","src":"27048:1:87","type":"","value":"3"},{"name":"len","nativeSrc":"27051:3:87","nodeType":"YulIdentifier","src":"27051:3:87"}],"functionName":{"name":"shl","nativeSrc":"27044:3:87","nodeType":"YulIdentifier","src":"27044:3:87"},"nativeSrc":"27044:11:87","nodeType":"YulFunctionCall","src":"27044:11:87"},{"arguments":[{"kind":"number","nativeSrc":"27061:1:87","nodeType":"YulLiteral","src":"27061:1:87","type":"","value":"0"}],"functionName":{"name":"not","nativeSrc":"27057:3:87","nodeType":"YulIdentifier","src":"27057:3:87"},"nativeSrc":"27057:6:87","nodeType":"YulFunctionCall","src":"27057:6:87"}],"functionName":{"name":"shr","nativeSrc":"27040:3:87","nodeType":"YulIdentifier","src":"27040:3:87"},"nativeSrc":"27040:24:87","nodeType":"YulFunctionCall","src":"27040:24:87"}],"functionName":{"name":"not","nativeSrc":"27036:3:87","nodeType":"YulIdentifier","src":"27036:3:87"},"nativeSrc":"27036:29:87","nodeType":"YulFunctionCall","src":"27036:29:87"}],"functionName":{"name":"and","nativeSrc":"27026:3:87","nodeType":"YulIdentifier","src":"27026:3:87"},"nativeSrc":"27026:40:87","nodeType":"YulFunctionCall","src":"27026:40:87"},{"arguments":[{"kind":"number","nativeSrc":"27072:1:87","nodeType":"YulLiteral","src":"27072:1:87","type":"","value":"1"},{"name":"len","nativeSrc":"27075:3:87","nodeType":"YulIdentifier","src":"27075:3:87"}],"functionName":{"name":"shl","nativeSrc":"27068:3:87","nodeType":"YulIdentifier","src":"27068:3:87"},"nativeSrc":"27068:11:87","nodeType":"YulFunctionCall","src":"27068:11:87"}],"functionName":{"name":"or","nativeSrc":"27023:2:87","nodeType":"YulIdentifier","src":"27023:2:87"},"nativeSrc":"27023:57:87","nodeType":"YulFunctionCall","src":"27023:57:87"},"variableNames":[{"name":"used","nativeSrc":"27015:4:87","nodeType":"YulIdentifier","src":"27015:4:87"}]}]},"name":"extract_used_part_and_set_length_of_short_byte_array","nativeSrc":"26920:166:87","nodeType":"YulFunctionDefinition","parameters":[{"name":"data","nativeSrc":"26982:4:87","nodeType":"YulTypedName","src":"26982:4:87","type":""},{"name":"len","nativeSrc":"26988:3:87","nodeType":"YulTypedName","src":"26988:3:87","type":""}],"returnVariables":[{"name":"used","nativeSrc":"26996:4:87","nodeType":"YulTypedName","src":"26996:4:87","type":""}],"src":"26920:166:87"},{"body":{"nativeSrc":"27187:1203:87","nodeType":"YulBlock","src":"27187:1203:87","statements":[{"nativeSrc":"27197:24:87","nodeType":"YulVariableDeclaration","src":"27197:24:87","value":{"arguments":[{"name":"src","nativeSrc":"27217:3:87","nodeType":"YulIdentifier","src":"27217:3:87"}],"functionName":{"name":"mload","nativeSrc":"27211:5:87","nodeType":"YulIdentifier","src":"27211:5:87"},"nativeSrc":"27211:10:87","nodeType":"YulFunctionCall","src":"27211:10:87"},"variables":[{"name":"newLen","nativeSrc":"27201:6:87","nodeType":"YulTypedName","src":"27201:6:87","type":""}]},{"body":{"nativeSrc":"27264:22:87","nodeType":"YulBlock","src":"27264:22:87","statements":[{"expression":{"arguments":[],"functionName":{"name":"panic_error_0x41","nativeSrc":"27266:16:87","nodeType":"YulIdentifier","src":"27266:16:87"},"nativeSrc":"27266:18:87","nodeType":"YulFunctionCall","src":"27266:18:87"},"nativeSrc":"27266:18:87","nodeType":"YulExpressionStatement","src":"27266:18:87"}]},"condition":{"arguments":[{"name":"newLen","nativeSrc":"27236:6:87","nodeType":"YulIdentifier","src":"27236:6:87"},{"kind":"number","nativeSrc":"27244:18:87","nodeType":"YulLiteral","src":"27244:18:87","type":"","value":"0xffffffffffffffff"}],"functionName":{"name":"gt","nativeSrc":"27233:2:87","nodeType":"YulIdentifier","src":"27233:2:87"},"nativeSrc":"27233:30:87","nodeType":"YulFunctionCall","src":"27233:30:87"},"nativeSrc":"27230:56:87","nodeType":"YulIf","src":"27230:56:87"},{"expression":{"arguments":[{"name":"slot","nativeSrc":"27339:4:87","nodeType":"YulIdentifier","src":"27339:4:87"},{"arguments":[{"arguments":[{"name":"slot","nativeSrc":"27377:4:87","nodeType":"YulIdentifier","src":"27377:4:87"}],"functionName":{"name":"sload","nativeSrc":"27371:5:87","nodeType":"YulIdentifier","src":"27371:5:87"},"nativeSrc":"27371:11:87","nodeType":"YulFunctionCall","src":"27371:11:87"}],"functionName":{"name":"extract_byte_array_length","nativeSrc":"27345:25:87","nodeType":"YulIdentifier","src":"27345:25:87"},"nativeSrc":"27345:38:87","nodeType":"YulFunctionCall","src":"27345:38:87"},{"name":"newLen","nativeSrc":"27385:6:87","nodeType":"YulIdentifier","src":"27385:6:87"}],"functionName":{"name":"clean_up_bytearray_end_slots_string_storage","nativeSrc":"27295:43:87","nodeType":"YulIdentifier","src":"27295:43:87"},"nativeSrc":"27295:97:87","nodeType":"YulFunctionCall","src":"27295:97:87"},"nativeSrc":"27295:97:87","nodeType":"YulExpressionStatement","src":"27295:97:87"},{"nativeSrc":"27401:18:87","nodeType":"YulVariableDeclaration","src":"27401:18:87","value":{"kind":"number","nativeSrc":"27418:1:87","nodeType":"YulLiteral","src":"27418:1:87","type":"","value":"0"},"variables":[{"name":"srcOffset","nativeSrc":"27405:9:87","nodeType":"YulTypedName","src":"27405:9:87","type":""}]},{"nativeSrc":"27428:17:87","nodeType":"YulAssignment","src":"27428:17:87","value":{"kind":"number","nativeSrc":"27441:4:87","nodeType":"YulLiteral","src":"27441:4:87","type":"","value":"0x20"},"variableNames":[{"name":"srcOffset","nativeSrc":"27428:9:87","nodeType":"YulIdentifier","src":"27428:9:87"}]},{"cases":[{"body":{"nativeSrc":"27491:642:87","nodeType":"YulBlock","src":"27491:642:87","statements":[{"nativeSrc":"27505:35:87","nodeType":"YulVariableDeclaration","src":"27505:35:87","value":{"arguments":[{"name":"newLen","nativeSrc":"27524:6:87","nodeType":"YulIdentifier","src":"27524:6:87"},{"arguments":[{"kind":"number","nativeSrc":"27536:2:87","nodeType":"YulLiteral","src":"27536:2:87","type":"","value":"31"}],"functionName":{"name":"not","nativeSrc":"27532:3:87","nodeType":"YulIdentifier","src":"27532:3:87"},"nativeSrc":"27532:7:87","nodeType":"YulFunctionCall","src":"27532:7:87"}],"functionName":{"name":"and","nativeSrc":"27520:3:87","nodeType":"YulIdentifier","src":"27520:3:87"},"nativeSrc":"27520:20:87","nodeType":"YulFunctionCall","src":"27520:20:87"},"variables":[{"name":"loopEnd","nativeSrc":"27509:7:87","nodeType":"YulTypedName","src":"27509:7:87","type":""}]},{"nativeSrc":"27553:49:87","nodeType":"YulVariableDeclaration","src":"27553:49:87","value":{"arguments":[{"name":"slot","nativeSrc":"27597:4:87","nodeType":"YulIdentifier","src":"27597:4:87"}],"functionName":{"name":"array_dataslot_string_storage","nativeSrc":"27567:29:87","nodeType":"YulIdentifier","src":"27567:29:87"},"nativeSrc":"27567:35:87","nodeType":"YulFunctionCall","src":"27567:35:87"},"variables":[{"name":"dstPtr","nativeSrc":"27557:6:87","nodeType":"YulTypedName","src":"27557:6:87","type":""}]},{"nativeSrc":"27615:10:87","nodeType":"YulVariableDeclaration","src":"27615:10:87","value":{"kind":"number","nativeSrc":"27624:1:87","nodeType":"YulLiteral","src":"27624:1:87","type":"","value":"0"},"variables":[{"name":"i","nativeSrc":"27619:1:87","nodeType":"YulTypedName","src":"27619:1:87","type":""}]},{"body":{"nativeSrc":"27695:165:87","nodeType":"YulBlock","src":"27695:165:87","statements":[{"expression":{"arguments":[{"name":"dstPtr","nativeSrc":"27720:6:87","nodeType":"YulIdentifier","src":"27720:6:87"},{"arguments":[{"arguments":[{"name":"src","nativeSrc":"27738:3:87","nodeType":"YulIdentifier","src":"27738:3:87"},{"name":"srcOffset","nativeSrc":"27743:9:87","nodeType":"YulIdentifier","src":"27743:9:87"}],"functionName":{"name":"add","nativeSrc":"27734:3:87","nodeType":"YulIdentifier","src":"27734:3:87"},"nativeSrc":"27734:19:87","nodeType":"YulFunctionCall","src":"27734:19:87"}],"functionName":{"name":"mload","nativeSrc":"27728:5:87","nodeType":"YulIdentifier","src":"27728:5:87"},"nativeSrc":"27728:26:87","nodeType":"YulFunctionCall","src":"27728:26:87"}],"functionName":{"name":"sstore","nativeSrc":"27713:6:87","nodeType":"YulIdentifier","src":"27713:6:87"},"nativeSrc":"27713:42:87","nodeType":"YulFunctionCall","src":"27713:42:87"},"nativeSrc":"27713:42:87","nodeType":"YulExpressionStatement","src":"27713:42:87"},{"nativeSrc":"27772:24:87","nodeType":"YulAssignment","src":"27772:24:87","value":{"arguments":[{"name":"dstPtr","nativeSrc":"27786:6:87","nodeType":"YulIdentifier","src":"27786:6:87"},{"kind":"number","nativeSrc":"27794:1:87","nodeType":"YulLiteral","src":"27794:1:87","type":"","value":"1"}],"functionName":{"name":"add","nativeSrc":"27782:3:87","nodeType":"YulIdentifier","src":"27782:3:87"},"nativeSrc":"27782:14:87","nodeType":"YulFunctionCall","src":"27782:14:87"},"variableNames":[{"name":"dstPtr","nativeSrc":"27772:6:87","nodeType":"YulIdentifier","src":"27772:6:87"}]},{"nativeSrc":"27813:33:87","nodeType":"YulAssignment","src":"27813:33:87","value":{"arguments":[{"name":"srcOffset","nativeSrc":"27830:9:87","nodeType":"YulIdentifier","src":"27830:9:87"},{"kind":"number","nativeSrc":"27841:4:87","nodeType":"YulLiteral","src":"27841:4:87","type":"","value":"0x20"}],"functionName":{"name":"add","nativeSrc":"27826:3:87","nodeType":"YulIdentifier","src":"27826:3:87"},"nativeSrc":"27826:20:87","nodeType":"YulFunctionCall","src":"27826:20:87"},"variableNames":[{"name":"srcOffset","nativeSrc":"27813:9:87","nodeType":"YulIdentifier","src":"27813:9:87"}]}]},"condition":{"arguments":[{"name":"i","nativeSrc":"27649:1:87","nodeType":"YulIdentifier","src":"27649:1:87"},{"name":"loopEnd","nativeSrc":"27652:7:87","nodeType":"YulIdentifier","src":"27652:7:87"}],"functionName":{"name":"lt","nativeSrc":"27646:2:87","nodeType":"YulIdentifier","src":"27646:2:87"},"nativeSrc":"27646:14:87","nodeType":"YulFunctionCall","src":"27646:14:87"},"nativeSrc":"27638:222:87","nodeType":"YulForLoop","post":{"nativeSrc":"27661:21:87","nodeType":"YulBlock","src":"27661:21:87","statements":[{"nativeSrc":"27663:17:87","nodeType":"YulAssignment","src":"27663:17:87","value":{"arguments":[{"name":"i","nativeSrc":"27672:1:87","nodeType":"YulIdentifier","src":"27672:1:87"},{"kind":"number","nativeSrc":"27675:4:87","nodeType":"YulLiteral","src":"27675:4:87","type":"","value":"0x20"}],"functionName":{"name":"add","nativeSrc":"27668:3:87","nodeType":"YulIdentifier","src":"27668:3:87"},"nativeSrc":"27668:12:87","nodeType":"YulFunctionCall","src":"27668:12:87"},"variableNames":[{"name":"i","nativeSrc":"27663:1:87","nodeType":"YulIdentifier","src":"27663:1:87"}]}]},"pre":{"nativeSrc":"27642:3:87","nodeType":"YulBlock","src":"27642:3:87","statements":[]},"src":"27638:222:87"},{"body":{"nativeSrc":"27908:166:87","nodeType":"YulBlock","src":"27908:166:87","statements":[{"nativeSrc":"27926:43:87","nodeType":"YulVariableDeclaration","src":"27926:43:87","value":{"arguments":[{"arguments":[{"name":"src","nativeSrc":"27953:3:87","nodeType":"YulIdentifier","src":"27953:3:87"},{"name":"srcOffset","nativeSrc":"27958:9:87","nodeType":"YulIdentifier","src":"27958:9:87"}],"functionName":{"name":"add","nativeSrc":"27949:3:87","nodeType":"YulIdentifier","src":"27949:3:87"},"nativeSrc":"27949:19:87","nodeType":"YulFunctionCall","src":"27949:19:87"}],"functionName":{"name":"mload","nativeSrc":"27943:5:87","nodeType":"YulIdentifier","src":"27943:5:87"},"nativeSrc":"27943:26:87","nodeType":"YulFunctionCall","src":"27943:26:87"},"variables":[{"name":"lastValue","nativeSrc":"27930:9:87","nodeType":"YulTypedName","src":"27930:9:87","type":""}]},{"expression":{"arguments":[{"name":"dstPtr","nativeSrc":"27993:6:87","nodeType":"YulIdentifier","src":"27993:6:87"},{"arguments":[{"name":"lastValue","nativeSrc":"28005:9:87","nodeType":"YulIdentifier","src":"28005:9:87"},{"arguments":[{"arguments":[{"arguments":[{"arguments":[{"kind":"number","nativeSrc":"28032:1:87","nodeType":"YulLiteral","src":"28032:1:87","type":"","value":"3"},{"name":"newLen","nativeSrc":"28035:6:87","nodeType":"YulIdentifier","src":"28035:6:87"}],"functionName":{"name":"shl","nativeSrc":"28028:3:87","nodeType":"YulIdentifier","src":"28028:3:87"},"nativeSrc":"28028:14:87","nodeType":"YulFunctionCall","src":"28028:14:87"},{"kind":"number","nativeSrc":"28044:3:87","nodeType":"YulLiteral","src":"28044:3:87","type":"","value":"248"}],"functionName":{"name":"and","nativeSrc":"28024:3:87","nodeType":"YulIdentifier","src":"28024:3:87"},"nativeSrc":"28024:24:87","nodeType":"YulFunctionCall","src":"28024:24:87"},{"arguments":[{"kind":"number","nativeSrc":"28054:1:87","nodeType":"YulLiteral","src":"28054:1:87","type":"","value":"0"}],"functionName":{"name":"not","nativeSrc":"28050:3:87","nodeType":"YulIdentifier","src":"28050:3:87"},"nativeSrc":"28050:6:87","nodeType":"YulFunctionCall","src":"28050:6:87"}],"functionName":{"name":"shr","nativeSrc":"28020:3:87","nodeType":"YulIdentifier","src":"28020:3:87"},"nativeSrc":"28020:37:87","nodeType":"YulFunctionCall","src":"28020:37:87"}],"functionName":{"name":"not","nativeSrc":"28016:3:87","nodeType":"YulIdentifier","src":"28016:3:87"},"nativeSrc":"28016:42:87","nodeType":"YulFunctionCall","src":"28016:42:87"}],"functionName":{"name":"and","nativeSrc":"28001:3:87","nodeType":"YulIdentifier","src":"28001:3:87"},"nativeSrc":"28001:58:87","nodeType":"YulFunctionCall","src":"28001:58:87"}],"functionName":{"name":"sstore","nativeSrc":"27986:6:87","nodeType":"YulIdentifier","src":"27986:6:87"},"nativeSrc":"27986:74:87","nodeType":"YulFunctionCall","src":"27986:74:87"},"nativeSrc":"27986:74:87","nodeType":"YulExpressionStatement","src":"27986:74:87"}]},"condition":{"arguments":[{"name":"loopEnd","nativeSrc":"27879:7:87","nodeType":"YulIdentifier","src":"27879:7:87"},{"name":"newLen","nativeSrc":"27888:6:87","nodeType":"YulIdentifier","src":"27888:6:87"}],"functionName":{"name":"lt","nativeSrc":"27876:2:87","nodeType":"YulIdentifier","src":"27876:2:87"},"nativeSrc":"27876:19:87","nodeType":"YulFunctionCall","src":"27876:19:87"},"nativeSrc":"27873:201:87","nodeType":"YulIf","src":"27873:201:87"},{"expression":{"arguments":[{"name":"slot","nativeSrc":"28094:4:87","nodeType":"YulIdentifier","src":"28094:4:87"},{"arguments":[{"arguments":[{"kind":"number","nativeSrc":"28108:1:87","nodeType":"YulLiteral","src":"28108:1:87","type":"","value":"1"},{"name":"newLen","nativeSrc":"28111:6:87","nodeType":"YulIdentifier","src":"28111:6:87"}],"functionName":{"name":"shl","nativeSrc":"28104:3:87","nodeType":"YulIdentifier","src":"28104:3:87"},"nativeSrc":"28104:14:87","nodeType":"YulFunctionCall","src":"28104:14:87"},{"kind":"number","nativeSrc":"28120:1:87","nodeType":"YulLiteral","src":"28120:1:87","type":"","value":"1"}],"functionName":{"name":"add","nativeSrc":"28100:3:87","nodeType":"YulIdentifier","src":"28100:3:87"},"nativeSrc":"28100:22:87","nodeType":"YulFunctionCall","src":"28100:22:87"}],"functionName":{"name":"sstore","nativeSrc":"28087:6:87","nodeType":"YulIdentifier","src":"28087:6:87"},"nativeSrc":"28087:36:87","nodeType":"YulFunctionCall","src":"28087:36:87"},"nativeSrc":"28087:36:87","nodeType":"YulExpressionStatement","src":"28087:36:87"}]},"nativeSrc":"27484:649:87","nodeType":"YulCase","src":"27484:649:87","value":{"kind":"number","nativeSrc":"27489:1:87","nodeType":"YulLiteral","src":"27489:1:87","type":"","value":"1"}},{"body":{"nativeSrc":"28150:234:87","nodeType":"YulBlock","src":"28150:234:87","statements":[{"nativeSrc":"28164:14:87","nodeType":"YulVariableDeclaration","src":"28164:14:87","value":{"kind":"number","nativeSrc":"28177:1:87","nodeType":"YulLiteral","src":"28177:1:87","type":"","value":"0"},"variables":[{"name":"value","nativeSrc":"28168:5:87","nodeType":"YulTypedName","src":"28168:5:87","type":""}]},{"body":{"nativeSrc":"28213:67:87","nodeType":"YulBlock","src":"28213:67:87","statements":[{"nativeSrc":"28231:35:87","nodeType":"YulAssignment","src":"28231:35:87","value":{"arguments":[{"arguments":[{"name":"src","nativeSrc":"28250:3:87","nodeType":"YulIdentifier","src":"28250:3:87"},{"name":"srcOffset","nativeSrc":"28255:9:87","nodeType":"YulIdentifier","src":"28255:9:87"}],"functionName":{"name":"add","nativeSrc":"28246:3:87","nodeType":"YulIdentifier","src":"28246:3:87"},"nativeSrc":"28246:19:87","nodeType":"YulFunctionCall","src":"28246:19:87"}],"functionName":{"name":"mload","nativeSrc":"28240:5:87","nodeType":"YulIdentifier","src":"28240:5:87"},"nativeSrc":"28240:26:87","nodeType":"YulFunctionCall","src":"28240:26:87"},"variableNames":[{"name":"value","nativeSrc":"28231:5:87","nodeType":"YulIdentifier","src":"28231:5:87"}]}]},"condition":{"name":"newLen","nativeSrc":"28194:6:87","nodeType":"YulIdentifier","src":"28194:6:87"},"nativeSrc":"28191:89:87","nodeType":"YulIf","src":"28191:89:87"},{"expression":{"arguments":[{"name":"slot","nativeSrc":"28300:4:87","nodeType":"YulIdentifier","src":"28300:4:87"},{"arguments":[{"name":"value","nativeSrc":"28359:5:87","nodeType":"YulIdentifier","src":"28359:5:87"},{"name":"newLen","nativeSrc":"28366:6:87","nodeType":"YulIdentifier","src":"28366:6:87"}],"functionName":{"name":"extract_used_part_and_set_length_of_short_byte_array","nativeSrc":"28306:52:87","nodeType":"YulIdentifier","src":"28306:52:87"},"nativeSrc":"28306:67:87","nodeType":"YulFunctionCall","src":"28306:67:87"}],"functionName":{"name":"sstore","nativeSrc":"28293:6:87","nodeType":"YulIdentifier","src":"28293:6:87"},"nativeSrc":"28293:81:87","nodeType":"YulFunctionCall","src":"28293:81:87"},"nativeSrc":"28293:81:87","nodeType":"YulExpressionStatement","src":"28293:81:87"}]},"nativeSrc":"28142:242:87","nodeType":"YulCase","src":"28142:242:87","value":"default"}],"expression":{"arguments":[{"name":"newLen","nativeSrc":"27464:6:87","nodeType":"YulIdentifier","src":"27464:6:87"},{"kind":"number","nativeSrc":"27472:2:87","nodeType":"YulLiteral","src":"27472:2:87","type":"","value":"31"}],"functionName":{"name":"gt","nativeSrc":"27461:2:87","nodeType":"YulIdentifier","src":"27461:2:87"},"nativeSrc":"27461:14:87","nodeType":"YulFunctionCall","src":"27461:14:87"},"nativeSrc":"27454:930:87","nodeType":"YulSwitch","src":"27454:930:87"}]},"name":"copy_byte_array_to_storage_from_t_string_memory_ptr_to_t_string_storage","nativeSrc":"27091:1299:87","nodeType":"YulFunctionDefinition","parameters":[{"name":"slot","nativeSrc":"27172:4:87","nodeType":"YulTypedName","src":"27172:4:87","type":""},{"name":"src","nativeSrc":"27178:3:87","nodeType":"YulTypedName","src":"27178:3:87","type":""}],"src":"27091:1299:87"}]},"contents":"{\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_string(value, pos) -> end\n    {\n        let length := mload(value)\n        mstore(pos, length)\n        mcopy(add(pos, 0x20), add(value, 0x20), length)\n        mstore(add(add(pos, length), 0x20), 0)\n        end := add(add(pos, and(add(length, 31), not(31))), 0x20)\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_string(value0, 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        let value := 0\n        value := calldataload(headStart)\n        value0 := value\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    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        let value_1 := 0\n        value_1 := calldataload(add(headStart, 32))\n        value1 := value_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_decode_tuple_t_uint256t_uint256(headStart, dataEnd) -> value0, value1\n    {\n        if slt(sub(dataEnd, headStart), 64) { revert(0, 0) }\n        let value := 0\n        value := calldataload(headStart)\n        value0 := value\n        let value_1 := 0\n        value_1 := calldataload(add(headStart, 32))\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        let value_2 := 0\n        value_2 := calldataload(add(headStart, 64))\n        value2 := value_2\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 abi_encode_tuple_t_address__to_t_address__fromStack_reversed(headStart, value0) -> tail\n    {\n        tail := add(headStart, 32)\n        mstore(headStart, and(value0, sub(shl(160, 1), 1)))\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 panic_error_0x41()\n    {\n        mstore(0, shl(224, 0x4e487b71))\n        mstore(4, 0x41)\n        revert(0, 0x24)\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, 0xffffffffffffffff), lt(newFreePtr, memPtr)) { panic_error_0x41() }\n        mstore(64, newFreePtr)\n    }\n    function abi_decode_bytes(offset, end) -> array\n    {\n        if iszero(slt(add(offset, 0x1f), end)) { revert(0, 0) }\n        let length := calldataload(offset)\n        let src := add(offset, 0x20)\n        let array_1 := 0\n        let size := 0\n        if gt(length, 0xffffffffffffffff) { panic_error_0x41() }\n        size := add(and(add(length, 31), not(31)), 0x20)\n        array_1 := allocate_memory(size)\n        mstore(array_1, length)\n        if gt(add(src, length), end) { revert(0, 0) }\n        calldatacopy(add(array_1, 0x20), src, length)\n        mstore(add(add(array_1, length), 0x20), 0)\n        array := array_1\n    }\n    function abi_decode_tuple_t_uint8t_uint8t_bytes_memory_ptr(headStart, dataEnd) -> value0, value1, value2\n    {\n        if slt(sub(dataEnd, headStart), 96) { revert(0, 0) }\n        value0 := abi_decode_uint8(headStart)\n        value1 := abi_decode_uint8(add(headStart, 32))\n        let offset := calldataload(add(headStart, 64))\n        if gt(offset, 0xffffffffffffffff) { revert(0, 0) }\n        value2 := abi_decode_bytes(add(headStart, offset), dataEnd)\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_string(value0, add(headStart, 32))\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_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_addresst_bytes_memory_ptr(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 offset := calldataload(add(headStart, 32))\n        if gt(offset, 0xffffffffffffffff) { revert(0, 0) }\n        value1 := abi_decode_bytes(add(headStart, offset), dataEnd)\n    }\n    function abi_decode_tuple_t_userDefinedValueType$_SlotIndex_$17382t_int256(headStart, dataEnd) -> value0, value1\n    {\n        if slt(sub(dataEnd, headStart), 64) { revert(0, 0) }\n        let value := 0\n        value := calldataload(headStart)\n        value0 := value\n        value1 := calldataload(add(headStart, 32))\n    }\n    function abi_encode_tuple_t_int256__to_t_int256__fromStack_reversed(headStart, value0) -> tail\n    {\n        tail := add(headStart, 32)\n        mstore(headStart, value0)\n    }\n    function abi_encode_tuple_t_array$_t_uint8_$32_memory_ptr__to_t_array$_t_uint8_$32_memory_ptr__fromStack_reversed(headStart, value0) -> tail\n    {\n        tail := add(headStart, 1024)\n        let pos := headStart\n        pos := headStart\n        let srcPtr := value0\n        let i := 0\n        for { } lt(i, 0x20) { i := add(i, 1) }\n        {\n            mstore(pos, and(mload(srcPtr), 0xff))\n            pos := add(pos, 0x20)\n            srcPtr := add(srcPtr, 0x20)\n        }\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_decode_tuple_t_uint256t_address(headStart, dataEnd) -> value0, value1\n    {\n        if slt(sub(dataEnd, headStart), 64) { revert(0, 0) }\n        let value := 0\n        value := calldataload(headStart)\n        value0 := value\n        let value_1 := calldataload(add(headStart, 32))\n        validator_revert_address(value_1)\n        value1 := value_1\n    }\n    function validator_revert_bool(value)\n    {\n        if iszero(eq(value, iszero(iszero(value)))) { revert(0, 0) }\n    }\n    function abi_decode_tuple_t_uint8t_contract$_IInvestStrategy_$20725t_bytes_memory_ptrt_bool(headStart, dataEnd) -> value0, value1, value2, value3\n    {\n        if slt(sub(dataEnd, headStart), 128) { revert(0, 0) }\n        value0 := abi_decode_uint8(headStart)\n        let value := calldataload(add(headStart, 32))\n        validator_revert_address(value)\n        value1 := value\n        let offset := calldataload(add(headStart, 64))\n        if gt(offset, 0xffffffffffffffff) { revert(0, 0) }\n        value2 := abi_decode_bytes(add(headStart, offset), dataEnd)\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_contract$_IInvestStrategy_$20725t_bytes_memory_ptr(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 offset := calldataload(add(headStart, 32))\n        if gt(offset, 0xffffffffffffffff) { revert(0, 0) }\n        value1 := abi_decode_bytes(add(headStart, offset), dataEnd)\n    }\n    function abi_decode_tuple_t_uint8t_uint8(headStart, dataEnd) -> value0, value1\n    {\n        if slt(sub(dataEnd, headStart), 64) { revert(0, 0) }\n        value0 := abi_decode_uint8(headStart)\n        value1 := abi_decode_uint8(add(headStart, 32))\n    }\n    function abi_encode_tuple_t_bytes4__to_t_bytes4__fromStack_reversed(headStart, value0) -> tail\n    {\n        tail := add(headStart, 32)\n        mstore(headStart, and(value0, shl(224, 0xffffffff)))\n    }\n    function abi_decode_tuple_t_uint256t_uint40(headStart, dataEnd) -> value0, value1\n    {\n        if slt(sub(dataEnd, headStart), 64) { revert(0, 0) }\n        let value := 0\n        value := calldataload(headStart)\n        value0 := value\n        let value_1 := calldataload(add(headStart, 32))\n        if iszero(eq(value_1, and(value_1, 0xffffffffff))) { revert(0, 0) }\n        value1 := value_1\n    }\n    function abi_encode_tuple_t_userDefinedValueType$_SlotIndex_$17382__to_t_uint256__fromStack_reversed(headStart, value0) -> tail\n    {\n        tail := add(headStart, 32)\n        mstore(headStart, value0)\n    }\n    function array_allocation_size_array_uint8_dyn(length) -> size\n    {\n        if gt(length, 0xffffffffffffffff) { panic_error_0x41() }\n        size := add(shl(5, length), 0x20)\n    }\n    function abi_decode_array_uint8_dyn(offset, end) -> array\n    {\n        if iszero(slt(add(offset, 0x1f), end)) { revert(0, 0) }\n        let length := calldataload(offset)\n        let dst := allocate_memory(array_allocation_size_array_uint8_dyn(length))\n        let array_1 := dst\n        mstore(dst, length)\n        dst := add(dst, 0x20)\n        let srcEnd := add(add(offset, shl(5, length)), 0x20)\n        if gt(srcEnd, end) { revert(0, 0) }\n        let src := add(offset, 0x20)\n        for { } lt(src, srcEnd) { src := add(src, 0x20) }\n        {\n            mstore(dst, abi_decode_uint8(src))\n            dst := add(dst, 0x20)\n        }\n        array := array_1\n    }\n    function abi_decode_tuple_t_array$_t_uint8_$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_uint8_dyn(add(headStart, offset), dataEnd)\n    }\n    function abi_decode_tuple_t_userDefinedValueType$_SlotIndex_$17382(headStart, dataEnd) -> value0\n    {\n        if slt(sub(dataEnd, headStart), 32) { revert(0, 0) }\n        let value := 0\n        value := calldataload(headStart)\n        value0 := value\n    }\n    function abi_decode_tuple_t_uint8t_bool(headStart, dataEnd) -> value0, value1\n    {\n        if slt(sub(dataEnd, headStart), 64) { revert(0, 0) }\n        value0 := abi_decode_uint8(headStart)\n        let value := calldataload(add(headStart, 32))\n        validator_revert_bool(value)\n        value1 := value\n    }\n    function abi_decode_contract_IERC20(offset) -> value\n    {\n        value := calldataload(offset)\n        validator_revert_address(value)\n    }\n    function abi_decode_array_contract_IInvestStrategy_dyn(offset, end) -> array\n    {\n        if iszero(slt(add(offset, 0x1f), end)) { revert(0, 0) }\n        let length := calldataload(offset)\n        let dst := allocate_memory(array_allocation_size_array_uint8_dyn(length))\n        let array_1 := dst\n        mstore(dst, length)\n        dst := add(dst, 0x20)\n        let srcEnd := add(add(offset, shl(5, length)), 0x20)\n        if gt(srcEnd, end) { revert(0, 0) }\n        let src := add(offset, 0x20)\n        for { } lt(src, srcEnd) { src := add(src, 0x20) }\n        {\n            let value := calldataload(src)\n            validator_revert_address(value)\n            mstore(dst, value)\n            dst := add(dst, 0x20)\n        }\n        array := array_1\n    }\n    function abi_decode_array_bytes_dyn(offset, end) -> array\n    {\n        if iszero(slt(add(offset, 0x1f), end)) { revert(0, 0) }\n        let length := calldataload(offset)\n        let dst := allocate_memory(array_allocation_size_array_uint8_dyn(length))\n        let array_1 := dst\n        mstore(dst, length)\n        dst := add(dst, 0x20)\n        let srcEnd := add(add(offset, shl(5, length)), 0x20)\n        if gt(srcEnd, end) { revert(0, 0) }\n        let src := add(offset, 0x20)\n        for { } lt(src, srcEnd) { src := add(src, 0x20) }\n        {\n            let innerOffset := calldataload(src)\n            if gt(innerOffset, 0xffffffffffffffff) { revert(0, 0) }\n            mstore(dst, abi_decode_bytes(add(add(offset, innerOffset), 0x20), end))\n            dst := add(dst, 0x20)\n        }\n        array := array_1\n    }\n    function abi_decode_tuple_t_string_memory_ptrt_string_memory_ptrt_contract$_IERC20_$8679t_array$_t_contract$_IInvestStrategy_$20725_$dyn_memory_ptrt_array$_t_bytes_memory_ptr_$dyn_memory_ptrt_array$_t_uint8_$dyn_memory_ptrt_array$_t_uint8_$dyn_memory_ptr(headStart, dataEnd) -> value0, value1, value2, value3, value4, value5, value6\n    {\n        if slt(sub(dataEnd, headStart), 224) { revert(0, 0) }\n        let offset := calldataload(headStart)\n        if gt(offset, 0xffffffffffffffff) { revert(0, 0) }\n        value0 := abi_decode_bytes(add(headStart, offset), dataEnd)\n        let offset_1 := calldataload(add(headStart, 32))\n        if gt(offset_1, 0xffffffffffffffff) { revert(0, 0) }\n        value1 := abi_decode_bytes(add(headStart, offset_1), dataEnd)\n        value2 := abi_decode_contract_IERC20(add(headStart, 64))\n        let offset_2 := calldataload(add(headStart, 96))\n        if gt(offset_2, 0xffffffffffffffff) { revert(0, 0) }\n        value3 := abi_decode_array_contract_IInvestStrategy_dyn(add(headStart, offset_2), dataEnd)\n        let offset_3 := calldataload(add(headStart, 128))\n        if gt(offset_3, 0xffffffffffffffff) { revert(0, 0) }\n        value4 := abi_decode_array_bytes_dyn(add(headStart, offset_3), dataEnd)\n        let offset_4 := calldataload(add(headStart, 160))\n        if gt(offset_4, 0xffffffffffffffff) { revert(0, 0) }\n        value5 := abi_decode_array_uint8_dyn(add(headStart, offset_4), dataEnd)\n        let offset_5 := calldataload(add(headStart, 192))\n        if gt(offset_5, 0xffffffffffffffff) { revert(0, 0) }\n        value6 := abi_decode_array_uint8_dyn(add(headStart, offset_5), dataEnd)\n    }\n    function abi_decode_tuple_t_uint256t_addresst_address(headStart, dataEnd) -> value0, value1, value2\n    {\n        if slt(sub(dataEnd, headStart), 96) { revert(0, 0) }\n        let value := 0\n        value := calldataload(headStart)\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    }\n    function abi_encode_tuple_t_array$_t_contract$_IInvestStrategy_$20725_$32_memory_ptr__to_t_array$_t_address_$32_memory_ptr__fromStack_reversed(headStart, value0) -> tail\n    {\n        tail := add(headStart, 1024)\n        let pos := headStart\n        pos := headStart\n        let srcPtr := value0\n        let i := 0\n        for { } lt(i, 0x20) { i := add(i, 1) }\n        {\n            mstore(pos, and(mload(srcPtr), sub(shl(160, 1), 1)))\n            pos := add(pos, 0x20)\n            srcPtr := add(srcPtr, 0x20)\n        }\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_uint8t_uint8t_uint256(headStart, dataEnd) -> value0, value1, value2\n    {\n        if slt(sub(dataEnd, headStart), 96) { revert(0, 0) }\n        value0 := abi_decode_uint8(headStart)\n        value1 := abi_decode_uint8(add(headStart, 32))\n        let value := 0\n        value := calldataload(add(headStart, 64))\n        value2 := value\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 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 panic_error_0x11()\n    {\n        mstore(0, shl(224, 0x4e487b71))\n        mstore(4, 0x11)\n        revert(0, 0x24)\n    }\n    function checked_add_t_uint8(x, y) -> sum\n    {\n        sum := add(and(x, 0xff), and(y, 0xff))\n        if gt(sum, 0xff) { panic_error_0x11() }\n    }\n    function panic_error_0x32()\n    {\n        mstore(0, shl(224, 0x4e487b71))\n        mstore(4, 0x32)\n        revert(0, 0x24)\n    }\n    function abi_decode_tuple_t_bytes32_fromMemory(headStart, dataEnd) -> value0\n    {\n        if slt(sub(dataEnd, headStart), 32) { revert(0, 0) }\n        value0 := mload(headStart)\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 checked_add_t_int256(x, y) -> sum\n    {\n        sum := add(x, y)\n        let _1 := slt(sum, y)\n        let _2 := slt(x, 0)\n        if or(and(iszero(_2), _1), and(_2, iszero(_1))) { panic_error_0x11() }\n    }\n    function abi_encode_tuple_t_userDefinedValueType$_SlotIndex_$17382_t_int256_t_int256__to_t_uint256_t_int256_t_int256__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_address_t_uint256_t_uint256__to_t_address_t_uint256_t_uint256__fromStack_reversed(headStart, value2, value1, value0) -> tail\n    {\n        tail := add(headStart, 96)\n        mstore(headStart, and(value0, sub(shl(160, 1), 1)))\n        mstore(add(headStart, 32), value1)\n        mstore(add(headStart, 64), value2)\n    }\n    function abi_encode_tuple_t_contract$_IInvestStrategy_$20725__to_t_address__fromStack_reversed(headStart, value0) -> tail\n    {\n        tail := add(headStart, 32)\n        mstore(headStart, and(value0, sub(shl(160, 1), 1)))\n    }\n    function checked_add_t_uint256(x, y) -> sum\n    {\n        sum := add(x, y)\n        if gt(x, sum) { panic_error_0x11() }\n    }\n    function abi_encode_tuple_t_address_t_uint8__to_t_address_t_uint8__fromStack_reversed(headStart, value1, value0) -> tail\n    {\n        tail := add(headStart, 64)\n        mstore(headStart, and(value0, sub(shl(160, 1), 1)))\n        mstore(add(headStart, 32), and(value1, 0xff))\n    }\n    function panic_error_0x12()\n    {\n        mstore(0, shl(224, 0x4e487b71))\n        mstore(4, 0x12)\n        revert(0, 0x24)\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 abi_encode_tuple_t_array$_t_uint8_$dyn_memory_ptr__to_t_array$_t_uint8_$dyn_memory_ptr__fromStack_reversed(headStart, value0) -> tail\n    {\n        let tail_1 := add(headStart, 32)\n        mstore(headStart, 32)\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, 32)\n        let i := 0\n        for { } lt(i, length) { i := add(i, 1) }\n        {\n            mstore(pos, and(mload(srcPtr), 0xff))\n            pos := add(pos, 32)\n            srcPtr := add(srcPtr, 32)\n        }\n        tail := pos\n    }\n    function checked_sub_t_uint256(x, y) -> diff\n    {\n        diff := sub(x, y)\n        if gt(diff, x) { panic_error_0x11() }\n    }\n    function checked_sub_t_uint8(x, y) -> diff\n    {\n        diff := sub(and(x, 0xff), and(y, 0xff))\n        if gt(diff, 0xff) { panic_error_0x11() }\n    }\n    function abi_encode_tuple_t_rational_1_by_1__to_t_uint64__fromStack_reversed(headStart, value0) -> tail\n    {\n        tail := add(headStart, 32)\n        mstore(headStart, and(value0, 0xffffffffffffffff))\n    }\n    function increment_t_uint8(value) -> ret\n    {\n        let value_1 := and(value, 0xff)\n        if eq(value_1, 0xff) { panic_error_0x11() }\n        ret := add(value_1, 1)\n    }\n    function checked_exp_helper(_base, exponent, max) -> power, base\n    {\n        power := 1\n        base := _base\n        for { } gt(exponent, 1) { }\n        {\n            if gt(base, div(max, base)) { panic_error_0x11() }\n            if and(exponent, 1) { power := mul(power, base) }\n            base := mul(base, base)\n            exponent := shr(1, exponent)\n        }\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            let _1 := 0\n            _1 := 0\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            let _2 := 0\n            _2 := 0\n            leave\n        }\n        let power_1, base_1 := checked_exp_helper(base, exponent, not(0))\n        if gt(power_1, div(not(0), base_1)) { panic_error_0x11() }\n        power := mul(power_1, base_1)\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 abi_encode_tuple_t_rational_128_by_1_t_uint256__to_t_uint8_t_uint256__fromStack_reversed(headStart, value1, value0) -> tail\n    {\n        tail := add(headStart, 64)\n        mstore(headStart, and(value0, 0xff))\n        mstore(add(headStart, 32), value1)\n    }\n    function abi_decode_tuple_t_contract$_IAccessManager_$6842_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_encode_tuple_t_address_t_address_t_bytes4__to_t_address_t_address_t_bytes4__fromStack_reversed(headStart, value2, value1, value0) -> tail\n    {\n        tail := add(headStart, 96)\n        mstore(headStart, and(value0, sub(shl(160, 1), 1)))\n        mstore(add(headStart, 32), and(value1, sub(shl(160, 1), 1)))\n        mstore(add(headStart, 64), and(value2, shl(224, 0xffffffff)))\n    }\n    function abi_decode_tuple_t_boolt_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_bool(value)\n        value0 := value\n        let value_1 := mload(add(headStart, 32))\n        if iszero(eq(value_1, and(value_1, 0xffffffff))) { revert(0, 0) }\n        value1 := value_1\n    }\n    function abi_encode_tuple_t_uint8_t_bytes_memory_ptr__to_t_uint8_t_bytes_memory_ptr__fromStack_reversed(headStart, value1, value0) -> tail\n    {\n        mstore(headStart, and(value0, 0xff))\n        mstore(add(headStart, 32), 64)\n        tail := abi_encode_string(value1, add(headStart, 64))\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_contract$_IInvestStrategy_$20725_t_contract$_IInvestStrategy_$20725__to_t_address_t_address__fromStack_reversed(headStart, value1, value0) -> tail\n    {\n        tail := add(headStart, 64)\n        mstore(headStart, and(value0, sub(shl(160, 1), 1)))\n        mstore(add(headStart, 32), and(value1, sub(shl(160, 1), 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        let value := mload(headStart)\n        validator_revert_address(value)\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        mcopy(pos, add(value0, 0x20), length)\n        let _1 := add(pos, length)\n        mstore(_1, 0)\n        end := _1\n    }\n    function negate_t_int256(value) -> ret\n    {\n        if eq(value, shl(255, 1)) { panic_error_0x11() }\n        ret := sub(0, value)\n    }\n    function abi_encode_tuple_t_int256_t_uint128__to_t_int256_t_uint256__fromStack_reversed(headStart, value1, value0) -> tail\n    {\n        tail := add(headStart, 64)\n        mstore(headStart, value0)\n        mstore(add(headStart, 32), and(value1, 0xffffffffffffffffffffffffffffffff))\n    }\n    function checked_sub_t_int256(x, y) -> diff\n    {\n        diff := sub(x, y)\n        let _1 := slt(y, 0)\n        if or(and(iszero(_1), sgt(diff, x)), and(_1, slt(diff, x))) { panic_error_0x11() }\n    }\n    function panic_error_0x21()\n    {\n        mstore(0, shl(224, 0x4e487b71))\n        mstore(4, 0x21)\n        revert(0, 0x24)\n    }\n    function mod_t_uint8(x, y) -> r\n    {\n        let y_1 := and(y, 0xff)\n        if iszero(y_1) { panic_error_0x12() }\n        r := mod(and(x, 0xff), y_1)\n    }\n    function array_dataslot_string_storage(ptr) -> data\n    {\n        mstore(0, ptr)\n        data := keccak256(0, 0x20)\n    }\n    function clean_up_bytearray_end_slots_string_storage(array, len, startIndex)\n    {\n        if gt(len, 31)\n        {\n            mstore(0, array)\n            let data := keccak256(0, 0x20)\n            let deleteStart := add(data, shr(5, add(startIndex, 31)))\n            if lt(startIndex, 0x20) { deleteStart := data }\n            let _1 := add(data, shr(5, add(len, 31)))\n            let start := deleteStart\n            for { } lt(start, _1) { start := add(start, 1) }\n            { sstore(start, 0) }\n        }\n    }\n    function extract_used_part_and_set_length_of_short_byte_array(data, len) -> used\n    {\n        used := or(and(data, not(shr(shl(3, len), not(0)))), shl(1, len))\n    }\n    function copy_byte_array_to_storage_from_t_string_memory_ptr_to_t_string_storage(slot, src)\n    {\n        let newLen := mload(src)\n        if gt(newLen, 0xffffffffffffffff) { panic_error_0x41() }\n        clean_up_bytearray_end_slots_string_storage(slot, extract_byte_array_length(sload(slot)), newLen)\n        let srcOffset := 0\n        srcOffset := 0x20\n        switch gt(newLen, 31)\n        case 1 {\n            let loopEnd := and(newLen, not(31))\n            let dstPtr := array_dataslot_string_storage(slot)\n            let i := 0\n            for { } lt(i, loopEnd) { i := add(i, 0x20) }\n            {\n                sstore(dstPtr, mload(add(src, srcOffset)))\n                dstPtr := add(dstPtr, 1)\n                srcOffset := add(srcOffset, 0x20)\n            }\n            if lt(loopEnd, newLen)\n            {\n                let lastValue := mload(add(src, srcOffset))\n                sstore(dstPtr, and(lastValue, not(shr(and(shl(3, newLen), 248), not(0)))))\n            }\n            sstore(slot, add(shl(1, newLen), 1))\n        }\n        default {\n            let value := 0\n            if newLen\n            {\n                value := mload(add(src, srcOffset))\n            }\n            sstore(slot, extract_used_part_and_set_length_of_short_byte_array(value, newLen))\n        }\n    }\n}","id":87,"language":"Yul","name":"#utility.yul"}],"immutableReferences":{"7936":[{"length":32,"start":10229},{"length":32,"start":10270},{"length":32,"start":10583}]},"linkReferences":{},"object":"6080604052600436106102a5575f3560e01c80637aeedf2a1161016f578063b460af94116100d8578063d89b074d11610092578063dd62ed3e1161006d578063dd62ed3e14610888578063e682324d146108a7578063ef8b30f7146107da578063f617eecc146108c6575f5ffd5b8063d89b074d14610818578063d905777e14610848578063d9f9027f14610867575f5ffd5b8063b460af941461075e578063ba0876521461077d578063bd577eb61461079c578063c63d75b6146107bb578063c6e6f592146107da578063ce96cb77146107f9575f5ffd5b806395d89b411161012957806395d89b411461069e57806396da35da146106b2578063a7ded2ea146106d1578063a9059cbb146106f0578063ad3cb1cc1461070f578063b3d7f6b91461073f575f5ffd5b80637aeedf2a146105a05780638cdf48a8146105bf5780638eef8380146105f7578063914abf4f1461061657806392ce412e1461063557806394bf804d1461067f575f5ffd5b8063402d267d1161021157806351a2d6d1116101cb57806351a2d6d1146104fa57806352d1902d1461051b5780636e553f651461052f57806370a082311461054e578063767f06ae1461056d5780637ac445a714610581575f5ffd5b8063402d267d1461046b5780634614b8961461048a57806347e57533146104a95780634cdad506146102f15780634f1ef286146104c8578063508a0538146104db575f5ffd5b806318160ddd1161026257806318160ddd1461037f57806323b872dd146103b25780632e6863da146103d1578063313ce567146103fa57806338d52e0f146104205780633aaf90481461044c575f5ffd5b806301e1d114146102a957806306fdde03146102d057806307a2d13a146102f1578063095ea7b3146103105780630a28a4771461033f5780630a6045841461035e575b5f5ffd5b3480156102b4575f5ffd5b506102bd6108da565b6040519081526020015b60405180910390f35b3480156102db575f5ffd5b506102e46108e8565b6040516102c791906143a1565b3480156102fc575f5ffd5b506102bd61030b3660046143b3565b6109a8565b34801561031b575f5ffd5b5061032f61032a3660046143de565b6109b9565b60405190151581526020016102c7565b34801561034a575f5ffd5b506102bd6103593660046143b3565b6109d0565b348015610369575f5ffd5b5061037d610378366004614408565b6109dc565b005b34801561038a575f5ffd5b507f52c63247e1f47db19d5ce0460030c497f067ca4cebf71ba98eeadabe20bace02546102bd565b3480156103bd575f5ffd5b5061032f6103cc366004614428565b610a77565b3480156103dc575f5ffd5b505f516020614f795f395f51905f52546001600160801b03166102bd565b348015610405575f5ffd5b5061040e610a9c565b60405160ff90911681526020016102c7565b34801561042b575f5ffd5b50610434610ade565b6040516001600160a01b0390911681526020016102c7565b348015610457575f5ffd5b506102e4610466366004614530565b610b0c565b348015610476575f5ffd5b506102bd610485366004614589565b610b91565b348015610495575f5ffd5b5061037d6104a43660046143b3565b610b9a565b3480156104b4575f5ffd5b506102e46104c33660046143b3565b610ba6565b61037d6104d63660046145a4565b610d26565b3480156104e6575f5ffd5b506102bd6104f5366004614408565b610d3c565b348015610505575f5ffd5b5061050e610dc9565b6040516102c791906145f0565b348015610526575f5ffd5b506102bd610e21565b34801561053a575f5ffd5b506102bd610549366004614624565b610e3c565b348015610559575f5ffd5b506102bd610568366004614589565b610e99565b348015610578575f5ffd5b5061040e602081565b34801561058c575f5ffd5b5061037d61059b36600461465f565b610ebf565b3480156105ab575f5ffd5b5061037d6105ba3660046145a4565b610ff8565b3480156105ca575f5ffd5b506105de6105d93660046146cd565b6111fd565b6040516001600160e01b031990911681526020016102c7565b348015610602575f5ffd5b506102bd6106113660046146fe565b61125b565b348015610621575f5ffd5b5061037d6106303660046147bd565b61127b565b348015610640575f5ffd5b506102bd61064f3660046143b3565b5f9081527fa2ada5d673dba5eecea7c7503ee87e29913d0d36ae093e950d632f7b86891f01602052604090205490565b34801561068a575f5ffd5b506102bd610699366004614624565b6114cd565b3480156106a9575f5ffd5b506102e4611519565b3480156106bd575f5ffd5b5061037d6106cc3660046147ee565b611557565b3480156106dc575f5ffd5b5061037d6106eb366004614905565b611b6e565b3480156106fb575f5ffd5b5061032f61070a3660046143de565b611c71565b34801561071a575f5ffd5b506102e4604051806040016040528060058152602001640352e302e360dc1b81525081565b34801561074a575f5ffd5b506102bd6107593660046143b3565b611c7e565b348015610769575f5ffd5b506102bd610778366004614a1c565b611c8a565b348015610788575f5ffd5b506102bd610797366004614a1c565b611cd7565b3480156107a7575f5ffd5b5061037d6107b63660046147bd565b611d24565b3480156107c6575f5ffd5b506102bd6107d5366004614589565b611f70565b3480156107e5575f5ffd5b506102bd6107f43660046143b3565b611f9c565b348015610804575f5ffd5b506102bd610813366004614589565b611fa7565b348015610823575f5ffd5b505f516020614f795f395f51905f5254600160801b90046001600160801b03166102bd565b348015610853575f5ffd5b506102bd610862366004614589565b611fbd565b348015610872575f5ffd5b5061087b612002565b6040516102c79190614a5b565b348015610893575f5ffd5b506102bd6108a2366004614a8c565b612048565b3480156108b2575f5ffd5b506102bd6108c1366004614ab8565b612091565b3480156108d1575f5ffd5b5061050e612281565b5f6108e36122bc565b905090565b7f52c63247e1f47db19d5ce0460030c497f067ca4cebf71ba98eeadabe20bace0380546060915f516020614f995f395f51905f529161092690614ae1565b80601f016020809104026020016040519081016040528092919081815260200182805461095290614ae1565b801561099d5780601f106109745761010080835404028352916020019161099d565b820191905f5260205f20905b81548152906001019060200180831161098057829003601f168201915b505050505091505090565b5f6109b3825f612337565b92915050565b5f336109c681858561238e565b5060019392505050565b5f6109b38260016123a0565b5f516020614f795f395f51905f526109f3826123ee565b81546001600160801b03918216600160801b029116178155610a14836123ee565b81546fffffffffffffffffffffffffffffffff19166001600160801b039190911617815560408051848152602081018490527fb60cc7dc67f7eca3662ae255cd7c76bb80b4229692532f6af8851a2a119e6b8591015b60405180910390a1505050565b5f33610a84858285612421565b610a8f858585612472565b60019150505b9392505050565b5f807f0773e532dfede91f04b12a73d3d2acd361424f41f76b4fb79f090161e36b4e0090505f8154610ad89190600160a01b900460ff16614b2d565b91505090565b7f0773e532dfede91f04b12a73d3d2acd361424f41f76b4fb79f090161e36b4e00546001600160a01b031690565b6060610b198484846124cf565b5f60028560ff1660208110610b3057610b30614b46565b01546001600160a01b0316905080610b5b57604051632711b74d60e11b815260040160405180910390fd5b610b88848460028860ff1660208110610b7657610b76614b46565b01546001600160a01b031691906125ed565b95945050505050565b5f6109b361263f565b610ba3816126d3565b50565b60605f5b5f60028260208110610bbe57610bbe614b46565b01546001600160a01b031614801590610bd75750602081105b15610d0c5760028160208110610bef57610bef614b46565b015f9054906101000a90046001600160a01b03166001600160a01b0316635b9a4c356040518163ffffffff1660e01b8152600401602060405180830381865afa158015610c3e573d5f5f3e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610c629190614b5a565b8303610cfc57825483908190610c7790614ae1565b80601f0160208091040260200160405190810160405280929190818152602001828054610ca390614ae1565b8015610cee5780601f10610cc557610100808354040283529160200191610cee565b820191905f5260205f20905b815481529060010190602001808311610cd157829003601f168201915b505050505092505050919050565b610d0581614b71565b9050610baa565b5060405163213109dd60e11b815260040160405180910390fd5b610d2e6127ea565b610d388282612890565b5050565b5f8281527fa2ada5d673dba5eecea7c7503ee87e29913d0d36ae093e950d632f7b86891f0160205260408120805490839083610d788385614b89565b918290555060408051878152602081018590529081018290529093507f177df7ef9e6eced78bb1837ddf81f055288f88e41ca91a74d394b2c8f0660ff2915060600160405180910390a15092915050565b610dd1614354565b6040805161040081019182905290600190602090825f855b825461010083900a900460ff16815260206001928301818104948501949093039092029101808411610de95790505050505050905090565b5f610e2a61294c565b505f516020614fb95f395f51905f5290565b5f5f610e4783610b91565b905080841115610e7957828482604051633c8097d960e11b8152600401610e7093929190614bb0565b60405180910390fd5b5f610e8385611f9c565b9050610e9133858784612995565b949350505050565b6001600160a01b03165f9081525f516020614f995f395f51905f52602052604090205490565b5f60028560ff1660208110610ed657610ed6614b46565b01546001600160a01b0316905080610f0157604051632711b74d60e11b815260040160405180910390fd5b5f5b602081108015610f3057505f60028260208110610f2257610f22614b46565b01546001600160a01b031614155b15610fa657846001600160a01b031660028260208110610f5257610f52614b46565b01546001600160a01b0316148015610f6d57508560ff168114155b15610f965760405163b5a9314f60e01b81526001600160a01b0386166004820152602401610e70565b610f9f81614b71565b9050610f03565b50610fbb818585610fb56129f9565b86612a02565b8360028660ff1660208110610fd257610fd2614b46565b0180546001600160a01b0319166001600160a01b03929092169190911790555050505050565b6001600160a01b03821661101f57604051632711b74d60e11b815260040160405180910390fd5b5f5b60208110801561104e57505f6002826020811061104057611040614b46565b01546001600160a01b031614155b156110b457826001600160a01b03166002826020811061107057611070614b46565b01546001600160a01b0316036110a45760405163b5a9314f60e01b81526001600160a01b0384166004820152602401610e70565b6110ad81614b71565b9050611021565b601f1981016110d957604051600162ad1fab60e01b0319815260040160405180910390fd5b82600282602081106110ed576110ed614b46565b0180546001600160a01b0319166001600160a01b0392909216919091179055611117816001614bd1565b5f826020811061112957611129614b46565b602091828204019190066101000a81548160ff021916908360ff1602179055508060016111569190614bd1565b6001826020811061116957611169614b46565b602091828204019190066101000a81548160ff021916908360ff1602179055506111a46111946129f9565b6001600160a01b03851690612b50565b6111b76001600160a01b03841683612be2565b60405160ff821681526001600160a01b038416907f4973f7978f2b1810531aed51dc15a8e446cb3191afcca470f8ce464af7494f589060200160405180910390a2505050565b5f5f60028460ff166020811061121557611215614b46565b0154604080516001600160a01b039092166020830181905260ff8616918301919091529150610e9190606001604051602081830303815290604052805160209091012090565b5f61126d8364ffffffffff8416614bf8565b610a9590608085901b614bd1565b611283614354565b81515f90602010156112a85760405163a29b1f1160e01b815260040160405180910390fd5b825181101561145357602060ff168382815181106112c8576112c8614b46565b602002602001015160ff1610158061132157505f6001600160a01b031660028483815181106112f9576112f9614b46565b602002602001015160ff166020811061131457611314614b46565b01546001600160a01b0316145b1561133f5760405163a29b1f1160e01b815260040160405180910390fd5b8183828151811061135257611352614b46565b602002602001015160ff166020811061136d5761136d614b46565b6020020151156113b45782818151811061138957611389614b46565b602002602001015160405163c41fdbb960e01b8152600401610e70919060ff91909116815260200190565b6001828483815181106113c9576113c9614b46565b602002602001015160ff16602081106113e4576113e4614b46565b91151560209092020152825183908290811061140257611402614b46565b602002602001015160016114169190614b2d565b5f826020811061142857611428614b46565b602091828204019190066101000a81548160ff021916908360ff1602179055508060010190506112a8565b60208110801561148057505f6002826020811061147257611472614b46565b01546001600160a01b031614155b1561149e57604051636712b27b60e01b815260040160405180910390fd5b7f193fc4e628c27ae3ca098952dfc16a40425b44e7b0a97f4cc59d0f267f47caec83604051610a6a9190614c0b565b5f5f6114d883611f70565b9050808411156115015782848260405163284ff66760e01b8152600401610e7093929190614bb0565b5f61150b85611c7e565b9050610e9133858388612995565b7f52c63247e1f47db19d5ce0460030c497f067ca4cebf71ba98eeadabe20bace0480546060915f516020614f995f395f51905f529161092690614ae1565b602060ff83161061157b57604051632711b74d60e11b815260040160405180910390fd5b5f60028360ff166020811061159257611592614b46565b01546001600160a01b03169050806115bd57604051632711b74d60e11b815260040160405180910390fd5b811580156115db57506115d8816001600160a01b0316612c30565b15155b156115f9576040516343c2dfef60e01b815260040160405180910390fd5b60ff831615801561161357506003546001600160a01b0316155b1561163457604051600162ad1fab60e01b0319815260040160405180910390fd5b5f611640846001614b2d565b60ff1690505b60208110801561167357505f6002826020811061166557611665614b46565b01546001600160a01b031614155b156116e2576002816020811061168b5761168b614b46565b01546001600160a01b031660026116a3600184614c50565b602081106116b3576116b3614b46565b0180546001600160a01b0319166001600160a01b03929092169190911790556116db81614b71565b9050611646565b5f60026116f0600184614c50565b6020811061170057611700614b46565b0180546001600160a01b0319166001600160a01b0392909216919091179055505f80805b6001836020811061173757611737614b46565b602081049091015460ff601f9092166101000a9004161580159061175b5750602083105b15611a8d57801561181f57611771866001614b2d565b60ff166001846020811061178757611787614b46565b602081049091015460ff601f9092166101000a900416116117a8575f6117ab565b60015b600184602081106117be576117be614b46565b602091828204019190069054906101000a900460ff166117de9190614c63565b60016117ea8186614c50565b602081106117fa576117fa614b46565b602091828204019190066101000a81548160ff021916908360ff1602179055506118f0565b61182a866001614b2d565b60ff166001846020811061184057611840614b46565b602081049091015460ff601f9092166101000a90041603611863575060016118f0565b61186e866001614b2d565b60ff166001846020811061188457611884614b46565b602081049091015460ff601f9092166101000a90041611156118f05760018084602081106118b4576118b4614b46565b602091828204019190068282829054906101000a900460ff166118d79190614c63565b92506101000a81548160ff021916908360ff1602179055505b81156119ad57611901866001614b2d565b60ff165f846020811061191657611916614b46565b602081049091015460ff601f9092166101000a90041611611937575f61193a565b60015b5f846020811061194c5761194c614b46565b602091828204019190069054906101000a900460ff1661196c9190614c63565b5f611978600186614c50565b6020811061198857611988614b46565b602091828204019190066101000a81548160ff021916908360ff160217905550611a7d565b6119b8866001614b2d565b60ff165f84602081106119cd576119cd614b46565b602081049091015460ff601f9092166101000a900416036119f15760019150611a7d565b6119fc866001614b2d565b60ff165f8460208110611a1157611a11614b46565b602081049091015460ff601f9092166101000a9004161115611a7d5760015f8460208110611a4157611a41614b46565b602091828204019190068282829054906101000a900460ff16611a649190614c63565b92506101000a81548160ff021916908360ff1602179055505b611a8683614b71565b9250611724565b5f80611a9a600186614c50565b60208110611aaa57611aaa614b46565b602091828204019190066101000a81548160ff021916908360ff1602179055505f60018085611ad99190614c50565b60208110611ae957611ae9614b46565b602091828204019190066101000a81548160ff021916908360ff160217905550611b2585856001600160a01b0316612c9990919063ffffffff16565b60405160ff871681526001600160a01b038516907f978014566e371fef52158b004e150b6e1fd723f5aa3d8c9aa2a7c98ddb0e65b89060200160405180910390a2505050505050565b5f611b77612dbe565b805490915060ff600160401b82041615906001600160401b03165f81158015611b9d5750825b90505f826001600160401b03166001148015611bb85750303b155b905081158015611bc6575080155b15611be45760405163f92ee8a960e01b815260040160405180910390fd5b845467ffffffffffffffff191660011785558315611c0e57845460ff60401b1916600160401b1785555b611c1d8c8c8c8c8c8c8c612de6565b8315611c6357845460ff60401b19168555604051600181527fc7f505b2f371ae2175ee4913f4499e1f2633a7b5936321eed1cdaeb6115181d29060200160405180910390a15b505050505050505050505050565b5f336109c6818585612472565b5f6109b3826001612337565b5f5f611c9583611fa7565b905080851115611cbe57828582604051633fa733bb60e21b8152600401610e7093929190614bb0565b5f611cc8866109d0565b9050610b883386868985612e16565b5f5f611ce283611fbd565b905080851115611d0b57828582604051632e52afbb60e21b8152600401610e7093929190614bb0565b5f611d15866109a8565b9050610b88338686848a612e16565b611d2c614354565b81515f9060201015611d515760405163a29b1f1160e01b815260040160405180910390fd5b82518160ff161015611ef057602060ff16838260ff1681518110611d7757611d77614b46565b602002602001015160ff16101580611dd357505f6001600160a01b03166002848360ff1681518110611dab57611dab614b46565b602002602001015160ff1660208110611dc657611dc6614b46565b01546001600160a01b0316145b15611df15760405163a29b1f1160e01b815260040160405180910390fd5b81838260ff1681518110611e0757611e07614b46565b602002602001015160ff1660208110611e2257611e22614b46565b602002015115611e4157828160ff168151811061138957611389614b46565b600182848360ff1681518110611e5957611e59614b46565b602002602001015160ff1660208110611e7457611e74614b46565b911515602090920201528251839060ff8316908110611e9557611e95614b46565b60200260200101516001611ea99190614b2d565b60018260ff1660208110611ebf57611ebf614b46565b602091828204019190066101000a81548160ff021916908360ff16021790555080611ee990614c7c565b9050611d51565b602060ff8216108015611f2357505f600260ff831660208110611f1557611f15614b46565b01546001600160a01b031614155b15611f4157604051636712b27b60e01b815260040160405180910390fd5b7f3c56b6bca0d55eda581f8f2819d1f85d3b91cfcc24914a8fa39d301796d8964c83604051610a6a9190614c0b565b5f5f611f7a61263f565b90505f198114611f9357611f8e815f6123a0565b610a95565b5f199392505050565b5f6109b3825f6123a0565b5f5f611fb283612f2d565b9050610a9581612f3a565b5f5f611fc883612fcf565b90505f611fd5825f612337565b90505f611fe182612f3a565b9050818114611ff957611ff4815f6123a0565b610b88565b50909392505050565b61200a614354565b604080516104008101918290529060029060209082845b81546001600160a01b03168152600190910190602001808311612021575050505050905090565b6001600160a01b039182165f9081527f52c63247e1f47db19d5ce0460030c497f067ca4cebf71ba98eeadabe20bace016020908152604080832093909416825291909152205490565b5f602060ff85161015806120a95750602060ff841610155b156120c757604051632711b74d60e11b815260040160405180910390fd5b5f60028560ff16602081106120de576120de614b46565b01546001600160a01b031690505f600260ff86166020811061210257612102614b46565b01546001600160a01b0390811691508216158061212657506001600160a01b038116155b1561214457604051632711b74d60e11b815260040160405180910390fd5b5f1984036121615761215e826001600160a01b0316612c30565b93505b835f03612172575f92505050610a95565b612184826001600160a01b0316612fd9565b8411156121b95761219d826001600160a01b0316612fd9565b604051633ce011d560e01b8152600401610e7091815260200190565b6121cb816001600160a01b0316613007565b841115612200576121e4816001600160a01b0316613007565b6040516350a3e37560e11b8152600401610e7091815260200190565b6122146001600160a01b038316855f613035565b506122296001600160a01b038216855f613171565b50806001600160a01b0316826001600160a01b03167fb0850b8e0f9e8315dde3c9f9f31138283e6bbe16cd29e8552eb1dcdf9fac9e3b8660405161226f91815260200190565b60405180910390a35091949350505050565b612289614354565b604080516104008101918290525f805460ff1682529091602090826001838601808411610de95790505050505050905090565b5f5f5b5f600282602081106122d3576122d3614b46565b01546001600160a01b0316148015906122ec5750602081105b15612333576123176002826020811061230757612307614b46565b01546001600160a01b0316612c30565b6123219083614bd1565b915061232c81614b71565b90506122bf565b5090565b5f610a956123436108da565b61234e906001614bd1565b6123595f600a614d7d565b7f52c63247e1f47db19d5ce0460030c497f067ca4cebf71ba98eeadabe20bace02546123859190614bd1565b85919085613292565b61239b83838360016132d4565b505050565b5f610a956123af82600a614d7d565b7f52c63247e1f47db19d5ce0460030c497f067ca4cebf71ba98eeadabe20bace02546123db9190614bd1565b6123e36108da565b612385906001614bd1565b5f6001600160801b03821115612333576040516306dfcc6560e41b81526080600482015260248101839052604401610e70565b5f61242c8484612048565b90505f1981101561246c578181101561245e57828183604051637dc7a0d960e11b8152600401610e7093929190614bb0565b61246c84848484035f6132d4565b50505050565b6001600160a01b03831661249b57604051634b637e8f60e11b81525f6004820152602401610e70565b6001600160a01b0382166124c45760405163ec442f0560e01b81525f6004820152602401610e70565b61239b8383836133b7565b5f306001600160a01b0316633a7b7a396040518163ffffffff1660e01b8152600401602060405180830381865afa15801561250c573d5f5f3e3d5ffd5b505050506040513d601f19601f820116820180604052508101906125309190614d8b565b90505f816001600160a01b031663b7009613333061254e89896111fd565b60405160e085901b6001600160e01b031990811682526001600160a01b0394851660048301529290931660248401521660448201526064016040805180830381865afa1580156125a0573d5f5f3e3d5ffd5b505050506040513d601f19601f820116820180604052508101906125c49190614da6565b509050806125e65760405162d1953b60e31b8152336004820152602401610e70565b5050505050565b6060610e918383604051602401612605929190614ddb565b60408051601f198184030181529190526020810180516001600160e01b03166304c0d8e160e11b1790526001600160a01b038616906134dd565b5f5f5f5b5f6002826020811061265757612657614b46565b01546001600160a01b0316148015906126705750602081105b156126ce576126ac8361269f6002846020811061268f5761268f614b46565b01546001600160a01b0316613007565b8101908110159190820290565b93509150816126be575f199250505090565b6126c781614b71565b9050612643565b505090565b805f5b811580159061270b57505f81602081106126f2576126f2614b46565b602081049091015460ff601f9092166101000a90041615155b80156127175750602081105b156127ca575f600260015f846020811061273357612733614b46565b602091828204019190069054906101000a900460ff166127539190614c63565b60ff166020811061276657612766614b46565b01546001600160a01b031690505f6127868461278184613007565b61357d565b9050805f036127965750506127ba565b6127aa6001600160a01b038316825f613171565b506127b58185614c50565b935050505b6127c381614b71565b90506126d6565b508015610d385760405163285a546d60e01b815260040160405180910390fd5b306001600160a01b037f000000000000000000000000000000000000000000000000000000000000000016148061287057507f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03166128645f516020614fb95f395f51905f52546001600160a01b031690565b6001600160a01b031614155b1561288e5760405163703e46dd60e11b815260040160405180910390fd5b565b816001600160a01b03166352d1902d6040518163ffffffff1660e01b8152600401602060405180830381865afa9250505080156128ea575060408051601f3d908101601f191682019092526128e791810190614b5a565b60015b61291257604051634c9c8ce360e01b81526001600160a01b0383166004820152602401610e70565b5f516020614fb95f395f51905f52811461294257604051632a87526960e21b815260048101829052602401610e70565b61239b838361358c565b306001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000161461288e5760405163703e46dd60e11b815260040160405180910390fd5b5f516020614f795f395f51905f5280546001600160801b0316156129ed575f6129bc6135e1565b90506129c784613613565b5f828152600184016020526040812080549091906129e6908490614b89565b9091555050505b6125e68585858561363f565b5f6108e3610ade565b612a0c8483612b50565b60405163f3e0ffbf60e01b8152306004820152612a7e9086906001600160a01b0382169063f3e0ffbf90602401602060405180830381865afa158015612a54573d5f5f3e3d5ffd5b505050506040513d601f19601f82011682018060405250810190612a789190614b5a565b83613035565b50612a898582612c99565b612a938484612be2565b6040516370a0823160e01b8152306004820152612b059085906001600160a01b038516906370a0823190602401602060405180830381865afa158015612adb573d5f5f3e3d5ffd5b505050506040513d601f19601f82011682018060405250810190612aff9190614b5a565b83613171565b50604080516001600160a01b038088168252861660208201527f254c88e7a2ea123aeeb89b7cc413fb949188fefcdb7584c4f3d493294daf65c5910160405180910390a15050505050565b604051634e2333d160e11b81523060048201526001600160a01b038083169190841690639c4667a290602401602060405180830381865afa158015612b97573d5f5f3e3d5ffd5b505050506040513d601f19601f82011682018060405250810190612bbb9190614d8b565b6001600160a01b031614610d385760405163e76673ef60e01b815260040160405180910390fd5b61239b81604051602401612bf691906143a1565b60408051601f198184030181529190526020810180516001600160e01b031663139a8e2560e31b1790526001600160a01b038416906134dd565b60405163f3e0ffbf60e01b81523060048201525f906001600160a01b0383169063f3e0ffbf906024015b602060405180830381865afa158015612c75573d5f5f3e3d5ffd5b505050506040513d601f19601f820116820180604052508101906109b39190614b5a565b8015612d7457604051600160248201525f9081906001600160a01b0385169060440160408051601f198184030181529181526020820180516001600160e01b0316632d08ba2b60e11b17905251612cf09190614df6565b5f60405180830381855af49150503d805f8114612d28576040519150601f19603f3d011682016040523d82523d5f602084013e612d2d565b606091505b50915091508161246c577f9f864ace9f45c2734f9444cb9a0c1ade6f1b15a8c202c17175b759728a4a0bf881604051612d6691906143a1565b60405180910390a150505050565b6040515f602482015261239b9060440160408051601f198184030181529190526020810180516001600160e01b0316632d08ba2b60e11b1790526001600160a01b038416906134dd565b5f807ff0c57e16840df040f15088dc2f81fe391c3923bec73e23a9662efc9c229c6a006109b3565b612dee613654565b612df785613679565b612e01878761368a565b612e0d8484848461369c565b50505050505050565b5f516020614f795f395f51905f5280546001600160801b031615612f18575f612e3d6135e1565b90505f612e4b600183614c50565b5f81815260018501602052604080822054858352908220549293509091612e7188614e0c565b612e7b9190614b89565b612e859190614b89565b90505f81128015612eae57508354600160801b90046001600160801b0316612eac82614e0c565b115b15612ee757835460405163cc9a505360e01b815260048101839052600160801b9091046001600160801b03166024820152604401610e70565b612ef086613613565b5f84815260018601602052604081208054909190612f0f908490614e26565b90915550505050505b612f258686868686613c1d565b505050505050565b5f6109b361030b83611fbd565b5f5f5f5b5f60028260208110612f5257612f52614b46565b01546001600160a01b031614801590612f6b5750602081105b15612fc857612f9a8361269f60028460208110612f8a57612f8a614b46565b01546001600160a01b0316612fd9565b93509150811580612fab5750838310155b15612fb857509192915050565b612fc181614b71565b9050612f3e565b5050919050565b5f6109b382610e99565b60405163ce96cb7760e01b81523060048201525f906001600160a01b0383169063ce96cb7790602401612c5a565b60405163402d267d60e01b81523060048201525f906001600160a01b0383169063402d267d90602401612c5a565b5f8115613117575f5f856001600160a01b03168560405160240161305b91815260200190565b60408051601f198184030181529181526020820180516001600160e01b0316632e1a7d4d60e01b179052516130909190614df6565b5f60405180830381855af49150503d805f81146130c8576040519150601f19603f3d011682016040523d82523d5f602084013e6130cd565b606091505b50915091508161310f577fad0ad28a12a6ed800f1a7b398454913afe6826c175e6cc28f2e8e2c175b0d7288160405161310691906143a1565b60405180910390a15b509050610a95565b6131678360405160240161312d91815260200190565b60408051601f198184030181529190526020810180516001600160e01b0316632e1a7d4d60e01b1790526001600160a01b038616906134dd565b5060019050610a95565b5f8115613242575f5f856001600160a01b03168560405160240161319791815260200190565b60408051601f198184030181529181526020820180516001600160e01b031663b6b55f2560e01b179052516131cc9190614df6565b5f60405180830381855af49150503d805f8114613204576040519150601f19603f3d011682016040523d82523d5f602084013e613209565b606091505b50915091508161310f577ff8e68f23d3b33772e986cc9861e94e8fd6b9461d62bc1fb21cd754bbaf726bd38160405161310691906143a1565b6131678360405160240161325891815260200190565b60408051601f198184030181529190526020810180516001600160e01b031663b6b55f2560e01b1790526001600160a01b038616906134dd565b5f6132bf61329f83613c33565b80156132ba57505f84806132b5576132b5614be4565b868809115b151590565b6132ca868686613c5f565b610b889190614bd1565b5f516020614f995f395f51905f526001600160a01b03851661330b5760405163e602df0560e01b81525f6004820152602401610e70565b6001600160a01b03841661333457604051634a1406b160e11b81525f6004820152602401610e70565b6001600160a01b038086165f908152600183016020908152604080832093881683529290522083905581156125e657836001600160a01b0316856001600160a01b03167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925856040516133a891815260200190565b60405180910390a35050505050565b5f516020614f995f395f51905f526001600160a01b0384166133f15781816002015f8282546133e69190614bd1565b9091555061344e9050565b6001600160a01b0384165f90815260208290526040902054828110156134305784818460405163391434e360e21b8152600401610e7093929190614bb0565b6001600160a01b0385165f9081526020839052604090209083900390555b6001600160a01b03831661346c57600281018054839003905561348a565b6001600160a01b0383165f9081526020829052604090208054830190555b826001600160a01b0316846001600160a01b03167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef846040516134cf91815260200190565b60405180910390a350505050565b60605f6134ea8484613d0f565b905080801561350b57505f3d118061350b57505f846001600160a01b03163b115b1561352057613518613d22565b9150506109b3565b801561354a57604051639996b31560e01b81526001600160a01b0385166004820152602401610e70565b3d1561355d57613558613d3b565b613576565b60405163d6bda27560e01b815260040160405180910390fd5b5092915050565b5f828218828410028218610a95565b61359582613d46565b6040516001600160a01b038316907fbc7cd75a20ee27fd9adebab32041f755214dbc6bffa90cc0225b39da2e5c2d3b905f90a28051156135d95761239b82826134dd565b610d38613da9565b5f516020614f795f395f51905f52545f906001600160801b03166136058142614bf8565b610ad890608083901b614bd1565b5f6001600160ff1b038211156123335760405163123baf0360e11b815260048101839052602401610e70565b61364b84848484613dc8565b61246c826126d3565b61365c613e33565b61288e57604051631afcd79f60e31b815260040160405180910390fd5b613681613654565b610ba381613e4c565b613692613654565b610d388282613ecf565b835115806136ab575083516020105b806136b857508251845114155b806136c557508151845114155b806136d257508051845114155b156136f357604051600162ad1fab60e01b0319815260040160405180910390fd5b6136fb614354565b613703614354565b5f5b8651811015613ba6575f6001600160a01b031687828151811061372a5761372a614b46565b60200260200101516001600160a01b03160361375957604051632711b74d60e11b815260040160405180910390fd5b6137956137646129f9565b88838151811061377657613776614b46565b60200260200101516001600160a01b0316612b5090919063ffffffff16565b5f5b81811015613835578781815181106137b1576137b1614b46565b60200260200101516001600160a01b03168883815181106137d4576137d4614b46565b60200260200101516001600160a01b03160361382d578782815181106137fc576137fc614b46565b602002602001015160405163b5a9314f60e01b8152600401610e7091906001600160a01b0391909116815260200190565b600101613797565b50865185828151811061384a5761384a614b46565b602002602001015160ff1610158061389157508285828151811061387057613870614b46565b602002602001015160ff166020811061388b5761388b614b46565b60200201515b156138d3578481815181106138a8576138a8614b46565b602002602001015160405163306ccd5d60e11b8152600401610e70919060ff91909116815260200190565b86518482815181106138e7576138e7614b46565b602002602001015160ff1610158061392e57508184828151811061390d5761390d614b46565b602002602001015160ff166020811061392857613928614b46565b60200201515b156139705783818151811061394557613945614b46565b6020026020010151604051632776924160e11b8152600401610e70919060ff91909116815260200190565b60018386838151811061398557613985614b46565b602002602001015160ff16602081106139a0576139a0614b46565b6020020190151590811515815250506001828583815181106139c4576139c4614b46565b602002602001015160ff16602081106139df576139df614b46565b9115156020909202015286518790829081106139fd576139fd614b46565b602002602001015160028260208110613a1857613a18614b46565b015f6101000a8154816001600160a01b0302191690836001600160a01b03160217905550848181518110613a4e57613a4e614b46565b60200260200101516001613a629190614b2d565b5f8260208110613a7457613a74614b46565b602091828204019190066101000a81548160ff021916908360ff160217905550838181518110613aa657613aa6614b46565b60200260200101516001613aba9190614b2d565b60018260208110613acd57613acd614b46565b602091828204019190066101000a81548160ff021916908360ff160217905550613b3b868281518110613b0257613b02614b46565b6020026020010151888381518110613b1c57613b1c614b46565b60200260200101516001600160a01b0316612be290919063ffffffff16565b868181518110613b4d57613b4d614b46565b60200260200101516001600160a01b03167f4973f7978f2b1810531aed51dc15a8e446cb3191afcca470f8ce464af7494f5882604051613b96919060ff91909116815260200190565b60405180910390a2600101613705565b507f193fc4e628c27ae3ca098952dfc16a40425b44e7b0a97f4cc59d0f267f47caec84604051613bd69190614c0b565b60405180910390a17f3c56b6bca0d55eda581f8f2819d1f85d3b91cfcc24914a8fa39d301796d8964c83604051613c0d9190614c0b565b60405180910390a1505050505050565b613c2682613f1f565b6125e68585858585614032565b5f6002826003811115613c4857613c48614e45565b613c529190614e59565b60ff166001149050919050565b5f5f5f613c6c86866140d9565b91509150815f03613c9057838181613c8657613c86614be4565b0492505050610a95565b818411613ca757613ca760038515026011186140f5565b5f848688095f868103871696879004966002600389028118808a02820302808a02820302808a02820302808a02820302808a02820302808a02909103029181900381900460010185841190960395909502919093039390930492909217029150509392505050565b5f5f5f835160208501865af49392505050565b6040513d81523d5f602083013e3d602001810160405290565b6040513d5f823e3d81fd5b806001600160a01b03163b5f03613d7b57604051634c9c8ce360e01b81526001600160a01b0382166004820152602401610e70565b5f516020614fb95f395f51905f5280546001600160a01b0319166001600160a01b0392909216919091179055565b341561288e5760405163b398979f60e01b815260040160405180910390fd5b613ddb613dd3610ade565b853085614106565b613de5838261413c565b826001600160a01b0316846001600160a01b03167fdcbc1c05240f31ff3ad067ef1ee35ce4997762752e3a095284754544f4c709d784846040516134cf929190918252602082015260400190565b5f613e3c612dbe565b54600160401b900460ff16919050565b613e54613654565b7f0773e532dfede91f04b12a73d3d2acd361424f41f76b4fb79f090161e36b4e005f80613e8084614170565b9150915081613e90576012613e92565b805b83546001600160a81b031916600160a01b60ff92909216919091026001600160a01b031916176001600160a01b0394909416939093179091555050565b613ed7613654565b5f516020614f995f395f51905f527f52c63247e1f47db19d5ce0460030c497f067ca4cebf71ba98eeadabe20bace03613f108482614ebe565b506004810161246c8382614ebe565b805f5b8115801590613f58575060018160208110613f3f57613f3f614b46565b602081049091015460ff601f9092166101000a90041615155b8015613f645750602081105b15614012575f60026001808460208110613f8057613f80614b46565b602091828204019190069054906101000a900460ff16613fa09190614c63565b60ff1660208110613fb357613fb3614b46565b01546001600160a01b031690505f613fce8461278184612fd9565b9050805f03613fde575050614002565b613ff26001600160a01b038316825f613035565b50613ffd8185614c50565b935050505b61400b81614b71565b9050613f22565b508015610d385760405163351dc55d60e21b815260040160405180910390fd5b826001600160a01b0316856001600160a01b03161461405657614056838683612421565b61406083826141fb565b61407261406b610ade565b858461422f565b826001600160a01b0316846001600160a01b0316866001600160a01b03167ffbde797d201c681b91056529119e0b02407c7bb96a4a2c75c01fc9667232c8db85856040516140ca929190918252602082015260400190565b60405180910390a45050505050565b5f805f1983850993909202808410938190039390930393915050565b634e487b715f52806020526024601cfd5b614114848484846001614264565b61246c57604051635274afe760e01b81526001600160a01b0385166004820152602401610e70565b6001600160a01b0382166141655760405163ec442f0560e01b81525f6004820152602401610e70565b610d385f83836133b7565b5f5f5f61417c60405190565b6040805160048152602481019091526020810180516001600160e01b031663313ce56760e01b1790529091505f9081906141b79087906142d1565b50915091506141c583604052565b8180156141d3575060203d10155b80156141e0575060ff8111155b6141eb575f5f6141ef565b6001815b94509450505050915091565b6001600160a01b03821661422457604051634b637e8f60e11b81525f6004820152602401610e70565b610d38825f836133b7565b61423c83838360016142f2565b61239b57604051635274afe760e01b81526001600160a01b0384166004820152602401610e70565b6040516323b872dd60e01b5f8181526001600160a01b038781166004528616602452604485905291602083606481808c5af1925060015f511483166142c05783831516156142b4573d5f823e3d81fd5b5f883b113d1516831692505b604052505f60605295945050505050565b5f5f5f60405f855160208701885afa92505f51915060205190509250925092565b60405163a9059cbb60e01b5f8181526001600160a01b038616600452602485905291602083604481808b5af1925060015f5114831661434857838315161561433c573d5f823e3d81fd5b5f873b113d1516831692505b60405250949350505050565b6040518061040001604052806020906020820280368337509192915050565b5f81518084528060208401602086015e5f602082860101526020601f19601f83011685010191505092915050565b602081525f610a956020830184614373565b5f602082840312156143c3575f5ffd5b5035919050565b6001600160a01b0381168114610ba3575f5ffd5b5f5f604083850312156143ef575f5ffd5b82356143fa816143ca565b946020939093013593505050565b5f5f60408385031215614419575f5ffd5b50508035926020909101359150565b5f5f5f6060848603121561443a575f5ffd5b8335614445816143ca565b92506020840135614455816143ca565b929592945050506040919091013590565b803560ff81168114614476575f5ffd5b919050565b634e487b7160e01b5f52604160045260245ffd5b604051601f8201601f191681016001600160401b03811182821017156144b7576144b761447b565b604052919050565b5f82601f8301126144ce575f5ffd5b8135602083015f5f6001600160401b038411156144ed576144ed61447b565b50601f8301601f19166020016145028161448f565b915050828152858383011115614516575f5ffd5b828260208301375f92810160200192909252509392505050565b5f5f5f60608486031215614542575f5ffd5b61454b84614466565b925061455960208501614466565b915060408401356001600160401b03811115614573575f5ffd5b61457f868287016144bf565b9150509250925092565b5f60208284031215614599575f5ffd5b8135610a95816143ca565b5f5f604083850312156145b5575f5ffd5b82356145c0816143ca565b915060208301356001600160401b038111156145da575f5ffd5b6145e6858286016144bf565b9150509250929050565b610400810181835f5b602081101561461b57815160ff168352602092830192909101906001016145f9565b50505092915050565b5f5f60408385031215614635575f5ffd5b823591506020830135614647816143ca565b809150509250929050565b8015158114610ba3575f5ffd5b5f5f5f5f60808587031215614672575f5ffd5b61467b85614466565b9350602085013561468b816143ca565b925060408501356001600160401b038111156146a5575f5ffd5b6146b1878288016144bf565b92505060608501356146c281614652565b939692955090935050565b5f5f604083850312156146de575f5ffd5b6146e783614466565b91506146f560208401614466565b90509250929050565b5f5f6040838503121561470f575f5ffd5b82359150602083013564ffffffffff81168114614647575f5ffd5b5f6001600160401b038211156147425761474261447b565b5060051b60200190565b5f82601f83011261475b575f5ffd5b813561476e6147698261472a565b61448f565b8082825260208201915060208360051b86010192508583111561478f575f5ffd5b602085015b838110156147b3576147a581614466565b835260209283019201614794565b5095945050505050565b5f602082840312156147cd575f5ffd5b81356001600160401b038111156147e2575f5ffd5b610e918482850161474c565b5f5f604083850312156147ff575f5ffd5b61480883614466565b9150602083013561464781614652565b8035614476816143ca565b5f82601f830112614832575f5ffd5b81356148406147698261472a565b8082825260208201915060208360051b860101925085831115614861575f5ffd5b602085015b838110156147b3578035614879816143ca565b835260209283019201614866565b5f82601f830112614896575f5ffd5b81356148a46147698261472a565b8082825260208201915060208360051b8601019250858311156148c5575f5ffd5b602085015b838110156147b35780356001600160401b038111156148e7575f5ffd5b6148f6886020838a01016144bf565b845250602092830192016148ca565b5f5f5f5f5f5f5f60e0888a03121561491b575f5ffd5b87356001600160401b03811115614930575f5ffd5b61493c8a828b016144bf565b97505060208801356001600160401b03811115614957575f5ffd5b6149638a828b016144bf565b96505061497260408901614818565b945060608801356001600160401b0381111561498c575f5ffd5b6149988a828b01614823565b94505060808801356001600160401b038111156149b3575f5ffd5b6149bf8a828b01614887565b93505060a08801356001600160401b038111156149da575f5ffd5b6149e68a828b0161474c565b92505060c08801356001600160401b03811115614a01575f5ffd5b614a0d8a828b0161474c565b91505092959891949750929550565b5f5f5f60608486031215614a2e575f5ffd5b833592506020840135614a40816143ca565b91506040840135614a50816143ca565b809150509250925092565b610400810181835f5b602081101561461b5781516001600160a01b0316835260209283019290910190600101614a64565b5f5f60408385031215614a9d575f5ffd5b8235614aa8816143ca565b91506020830135614647816143ca565b5f5f5f60608486031215614aca575f5ffd5b614ad384614466565b925061445560208501614466565b600181811c90821680614af557607f821691505b602082108103614b1357634e487b7160e01b5f52602260045260245ffd5b50919050565b634e487b7160e01b5f52601160045260245ffd5b60ff81811683821601908111156109b3576109b3614b19565b634e487b7160e01b5f52603260045260245ffd5b5f60208284031215614b6a575f5ffd5b5051919050565b5f60018201614b8257614b82614b19565b5060010190565b8082018281125f831280158216821582161715614ba857614ba8614b19565b505092915050565b6001600160a01b039390931683526020830191909152604082015260600190565b808201808211156109b3576109b3614b19565b634e487b7160e01b5f52601260045260245ffd5b5f82614c0657614c06614be4565b500490565b602080825282518282018190525f918401906040840190835b81811015614c4557835160ff16835260209384019390920191600101614c24565b509095945050505050565b818103818111156109b3576109b3614b19565b60ff82811682821603908111156109b3576109b3614b19565b5f60ff821660ff8103614c9157614c91614b19565b60010192915050565b6001815b6001841115614cd557808504811115614cb957614cb9614b19565b6001841615614cc757908102905b60019390931c928002614c9e565b935093915050565b5f82614ceb575060016109b3565b81614cf757505f6109b3565b8160018114614d0d5760028114614d1757614d33565b60019150506109b3565b60ff841115614d2857614d28614b19565b50506001821b6109b3565b5060208310610133831016604e8410600b8410161715614d56575081810a6109b3565b614d625f198484614c9a565b805f1904821115614d7557614d75614b19565b029392505050565b5f610a9560ff841683614cdd565b5f60208284031215614d9b575f5ffd5b8151610a95816143ca565b5f5f60408385031215614db7575f5ffd5b8251614dc281614652565b602084015190925063ffffffff81168114614647575f5ffd5b60ff83168152604060208201525f610e916040830184614373565b5f82518060208501845e5f920191825250919050565b5f600160ff1b8201614e2057614e20614b19565b505f0390565b8181035f83128015838313168383128216171561357657613576614b19565b634e487b7160e01b5f52602160045260245ffd5b5f60ff831680614e6b57614e6b614be4565b8060ff84160691505092915050565b601f82111561239b57805f5260205f20601f840160051c81016020851015614e9f5750805b601f840160051c820191505b818110156125e6575f8155600101614eab565b81516001600160401b03811115614ed757614ed761447b565b614eeb81614ee58454614ae1565b84614e7a565b6020601f821160018114614f1d575f8315614f065750848201515b5f19600385901b1c1916600184901b1784556125e6565b5f84815260208120601f198516915b82811015614f4c5787850151825560209485019460019092019101614f2c565b5084821015614f6957868401515f19600387901b60f8161c191681555b50505050600190811b0190555056fea2ada5d673dba5eecea7c7503ee87e29913d0d36ae093e950d632f7b86891f0052c63247e1f47db19d5ce0460030c497f067ca4cebf71ba98eeadabe20bace00360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbca2646970667358221220f3fd39dba0e8d3d3bbe5a0628ab07a772c03d00f8cfe726d02571dac7612472464736f6c634300081e0033","opcodes":"PUSH1 0x80 PUSH1 0x40 MSTORE PUSH1 0x4 CALLDATASIZE LT PUSH2 0x2A5 JUMPI PUSH0 CALLDATALOAD PUSH1 0xE0 SHR DUP1 PUSH4 0x7AEEDF2A GT PUSH2 0x16F JUMPI DUP1 PUSH4 0xB460AF94 GT PUSH2 0xD8 JUMPI DUP1 PUSH4 0xD89B074D GT PUSH2 0x92 JUMPI DUP1 PUSH4 0xDD62ED3E GT PUSH2 0x6D JUMPI DUP1 PUSH4 0xDD62ED3E EQ PUSH2 0x888 JUMPI DUP1 PUSH4 0xE682324D EQ PUSH2 0x8A7 JUMPI DUP1 PUSH4 0xEF8B30F7 EQ PUSH2 0x7DA JUMPI DUP1 PUSH4 0xF617EECC EQ PUSH2 0x8C6 JUMPI PUSH0 PUSH0 REVERT JUMPDEST DUP1 PUSH4 0xD89B074D EQ PUSH2 0x818 JUMPI DUP1 PUSH4 0xD905777E EQ PUSH2 0x848 JUMPI DUP1 PUSH4 0xD9F9027F EQ PUSH2 0x867 JUMPI PUSH0 PUSH0 REVERT JUMPDEST DUP1 PUSH4 0xB460AF94 EQ PUSH2 0x75E JUMPI DUP1 PUSH4 0xBA087652 EQ PUSH2 0x77D JUMPI DUP1 PUSH4 0xBD577EB6 EQ PUSH2 0x79C JUMPI DUP1 PUSH4 0xC63D75B6 EQ PUSH2 0x7BB JUMPI DUP1 PUSH4 0xC6E6F592 EQ PUSH2 0x7DA JUMPI DUP1 PUSH4 0xCE96CB77 EQ PUSH2 0x7F9 JUMPI PUSH0 PUSH0 REVERT JUMPDEST DUP1 PUSH4 0x95D89B41 GT PUSH2 0x129 JUMPI DUP1 PUSH4 0x95D89B41 EQ PUSH2 0x69E JUMPI DUP1 PUSH4 0x96DA35DA EQ PUSH2 0x6B2 JUMPI DUP1 PUSH4 0xA7DED2EA EQ PUSH2 0x6D1 JUMPI DUP1 PUSH4 0xA9059CBB EQ PUSH2 0x6F0 JUMPI DUP1 PUSH4 0xAD3CB1CC EQ PUSH2 0x70F JUMPI DUP1 PUSH4 0xB3D7F6B9 EQ PUSH2 0x73F JUMPI PUSH0 PUSH0 REVERT JUMPDEST DUP1 PUSH4 0x7AEEDF2A EQ PUSH2 0x5A0 JUMPI DUP1 PUSH4 0x8CDF48A8 EQ PUSH2 0x5BF JUMPI DUP1 PUSH4 0x8EEF8380 EQ PUSH2 0x5F7 JUMPI DUP1 PUSH4 0x914ABF4F EQ PUSH2 0x616 JUMPI DUP1 PUSH4 0x92CE412E EQ PUSH2 0x635 JUMPI DUP1 PUSH4 0x94BF804D EQ PUSH2 0x67F JUMPI PUSH0 PUSH0 REVERT JUMPDEST DUP1 PUSH4 0x402D267D GT PUSH2 0x211 JUMPI DUP1 PUSH4 0x51A2D6D1 GT PUSH2 0x1CB JUMPI DUP1 PUSH4 0x51A2D6D1 EQ PUSH2 0x4FA JUMPI DUP1 PUSH4 0x52D1902D EQ PUSH2 0x51B JUMPI DUP1 PUSH4 0x6E553F65 EQ PUSH2 0x52F JUMPI DUP1 PUSH4 0x70A08231 EQ PUSH2 0x54E JUMPI DUP1 PUSH4 0x767F06AE EQ PUSH2 0x56D JUMPI DUP1 PUSH4 0x7AC445A7 EQ PUSH2 0x581 JUMPI PUSH0 PUSH0 REVERT JUMPDEST DUP1 PUSH4 0x402D267D EQ PUSH2 0x46B JUMPI DUP1 PUSH4 0x4614B896 EQ PUSH2 0x48A JUMPI DUP1 PUSH4 0x47E57533 EQ PUSH2 0x4A9 JUMPI DUP1 PUSH4 0x4CDAD506 EQ PUSH2 0x2F1 JUMPI DUP1 PUSH4 0x4F1EF286 EQ PUSH2 0x4C8 JUMPI DUP1 PUSH4 0x508A0538 EQ PUSH2 0x4DB JUMPI PUSH0 PUSH0 REVERT JUMPDEST DUP1 PUSH4 0x18160DDD GT PUSH2 0x262 JUMPI DUP1 PUSH4 0x18160DDD EQ PUSH2 0x37F JUMPI DUP1 PUSH4 0x23B872DD EQ PUSH2 0x3B2 JUMPI DUP1 PUSH4 0x2E6863DA EQ PUSH2 0x3D1 JUMPI DUP1 PUSH4 0x313CE567 EQ PUSH2 0x3FA JUMPI DUP1 PUSH4 0x38D52E0F EQ PUSH2 0x420 JUMPI DUP1 PUSH4 0x3AAF9048 EQ PUSH2 0x44C JUMPI PUSH0 PUSH0 REVERT JUMPDEST DUP1 PUSH4 0x1E1D114 EQ PUSH2 0x2A9 JUMPI DUP1 PUSH4 0x6FDDE03 EQ PUSH2 0x2D0 JUMPI DUP1 PUSH4 0x7A2D13A EQ PUSH2 0x2F1 JUMPI DUP1 PUSH4 0x95EA7B3 EQ PUSH2 0x310 JUMPI DUP1 PUSH4 0xA28A477 EQ PUSH2 0x33F JUMPI DUP1 PUSH4 0xA604584 EQ PUSH2 0x35E JUMPI JUMPDEST PUSH0 PUSH0 REVERT JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x2B4 JUMPI PUSH0 PUSH0 REVERT JUMPDEST POP PUSH2 0x2BD PUSH2 0x8DA JUMP JUMPDEST PUSH1 0x40 MLOAD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x2DB JUMPI PUSH0 PUSH0 REVERT JUMPDEST POP PUSH2 0x2E4 PUSH2 0x8E8 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0x2C7 SWAP2 SWAP1 PUSH2 0x43A1 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x2FC JUMPI PUSH0 PUSH0 REVERT JUMPDEST POP PUSH2 0x2BD PUSH2 0x30B CALLDATASIZE PUSH1 0x4 PUSH2 0x43B3 JUMP JUMPDEST PUSH2 0x9A8 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x31B JUMPI PUSH0 PUSH0 REVERT JUMPDEST POP PUSH2 0x32F PUSH2 0x32A CALLDATASIZE PUSH1 0x4 PUSH2 0x43DE JUMP JUMPDEST PUSH2 0x9B9 JUMP JUMPDEST PUSH1 0x40 MLOAD SWAP1 ISZERO ISZERO DUP2 MSTORE PUSH1 0x20 ADD PUSH2 0x2C7 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x34A JUMPI PUSH0 PUSH0 REVERT JUMPDEST POP PUSH2 0x2BD PUSH2 0x359 CALLDATASIZE PUSH1 0x4 PUSH2 0x43B3 JUMP JUMPDEST PUSH2 0x9D0 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x369 JUMPI PUSH0 PUSH0 REVERT JUMPDEST POP PUSH2 0x37D PUSH2 0x378 CALLDATASIZE PUSH1 0x4 PUSH2 0x4408 JUMP JUMPDEST PUSH2 0x9DC JUMP JUMPDEST STOP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x38A JUMPI PUSH0 PUSH0 REVERT JUMPDEST POP PUSH32 0x52C63247E1F47DB19D5CE0460030C497F067CA4CEBF71BA98EEADABE20BACE02 SLOAD PUSH2 0x2BD JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x3BD JUMPI PUSH0 PUSH0 REVERT JUMPDEST POP PUSH2 0x32F PUSH2 0x3CC CALLDATASIZE PUSH1 0x4 PUSH2 0x4428 JUMP JUMPDEST PUSH2 0xA77 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x3DC JUMPI PUSH0 PUSH0 REVERT JUMPDEST POP PUSH0 MLOAD PUSH1 0x20 PUSH2 0x4F79 PUSH0 CODECOPY PUSH0 MLOAD SWAP1 PUSH0 MSTORE SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0x80 SHL SUB AND PUSH2 0x2BD JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x405 JUMPI PUSH0 PUSH0 REVERT JUMPDEST POP PUSH2 0x40E PUSH2 0xA9C JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH1 0xFF SWAP1 SWAP2 AND DUP2 MSTORE PUSH1 0x20 ADD PUSH2 0x2C7 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x42B JUMPI PUSH0 PUSH0 REVERT JUMPDEST POP PUSH2 0x434 PUSH2 0xADE JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP1 SWAP2 AND DUP2 MSTORE PUSH1 0x20 ADD PUSH2 0x2C7 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x457 JUMPI PUSH0 PUSH0 REVERT JUMPDEST POP PUSH2 0x2E4 PUSH2 0x466 CALLDATASIZE PUSH1 0x4 PUSH2 0x4530 JUMP JUMPDEST PUSH2 0xB0C JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x476 JUMPI PUSH0 PUSH0 REVERT JUMPDEST POP PUSH2 0x2BD PUSH2 0x485 CALLDATASIZE PUSH1 0x4 PUSH2 0x4589 JUMP JUMPDEST PUSH2 0xB91 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x495 JUMPI PUSH0 PUSH0 REVERT JUMPDEST POP PUSH2 0x37D PUSH2 0x4A4 CALLDATASIZE PUSH1 0x4 PUSH2 0x43B3 JUMP JUMPDEST PUSH2 0xB9A JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x4B4 JUMPI PUSH0 PUSH0 REVERT JUMPDEST POP PUSH2 0x2E4 PUSH2 0x4C3 CALLDATASIZE PUSH1 0x4 PUSH2 0x43B3 JUMP JUMPDEST PUSH2 0xBA6 JUMP JUMPDEST PUSH2 0x37D PUSH2 0x4D6 CALLDATASIZE PUSH1 0x4 PUSH2 0x45A4 JUMP JUMPDEST PUSH2 0xD26 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x4E6 JUMPI PUSH0 PUSH0 REVERT JUMPDEST POP PUSH2 0x2BD PUSH2 0x4F5 CALLDATASIZE PUSH1 0x4 PUSH2 0x4408 JUMP JUMPDEST PUSH2 0xD3C JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x505 JUMPI PUSH0 PUSH0 REVERT JUMPDEST POP PUSH2 0x50E PUSH2 0xDC9 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0x2C7 SWAP2 SWAP1 PUSH2 0x45F0 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x526 JUMPI PUSH0 PUSH0 REVERT JUMPDEST POP PUSH2 0x2BD PUSH2 0xE21 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x53A JUMPI PUSH0 PUSH0 REVERT JUMPDEST POP PUSH2 0x2BD PUSH2 0x549 CALLDATASIZE PUSH1 0x4 PUSH2 0x4624 JUMP JUMPDEST PUSH2 0xE3C JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x559 JUMPI PUSH0 PUSH0 REVERT JUMPDEST POP PUSH2 0x2BD PUSH2 0x568 CALLDATASIZE PUSH1 0x4 PUSH2 0x4589 JUMP JUMPDEST PUSH2 0xE99 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x578 JUMPI PUSH0 PUSH0 REVERT JUMPDEST POP PUSH2 0x40E PUSH1 0x20 DUP2 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x58C JUMPI PUSH0 PUSH0 REVERT JUMPDEST POP PUSH2 0x37D PUSH2 0x59B CALLDATASIZE PUSH1 0x4 PUSH2 0x465F JUMP JUMPDEST PUSH2 0xEBF JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x5AB JUMPI PUSH0 PUSH0 REVERT JUMPDEST POP PUSH2 0x37D PUSH2 0x5BA CALLDATASIZE PUSH1 0x4 PUSH2 0x45A4 JUMP JUMPDEST PUSH2 0xFF8 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x5CA JUMPI PUSH0 PUSH0 REVERT JUMPDEST POP PUSH2 0x5DE PUSH2 0x5D9 CALLDATASIZE PUSH1 0x4 PUSH2 0x46CD JUMP JUMPDEST PUSH2 0x11FD JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xE0 SHL SUB NOT SWAP1 SWAP2 AND DUP2 MSTORE PUSH1 0x20 ADD PUSH2 0x2C7 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x602 JUMPI PUSH0 PUSH0 REVERT JUMPDEST POP PUSH2 0x2BD PUSH2 0x611 CALLDATASIZE PUSH1 0x4 PUSH2 0x46FE JUMP JUMPDEST PUSH2 0x125B JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x621 JUMPI PUSH0 PUSH0 REVERT JUMPDEST POP PUSH2 0x37D PUSH2 0x630 CALLDATASIZE PUSH1 0x4 PUSH2 0x47BD JUMP JUMPDEST PUSH2 0x127B JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x640 JUMPI PUSH0 PUSH0 REVERT JUMPDEST POP PUSH2 0x2BD PUSH2 0x64F CALLDATASIZE PUSH1 0x4 PUSH2 0x43B3 JUMP JUMPDEST PUSH0 SWAP1 DUP2 MSTORE PUSH32 0xA2ADA5D673DBA5EECEA7C7503EE87E29913D0D36AE093E950D632F7B86891F01 PUSH1 0x20 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD SWAP1 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x68A JUMPI PUSH0 PUSH0 REVERT JUMPDEST POP PUSH2 0x2BD PUSH2 0x699 CALLDATASIZE PUSH1 0x4 PUSH2 0x4624 JUMP JUMPDEST PUSH2 0x14CD JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x6A9 JUMPI PUSH0 PUSH0 REVERT JUMPDEST POP PUSH2 0x2E4 PUSH2 0x1519 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x6BD JUMPI PUSH0 PUSH0 REVERT JUMPDEST POP PUSH2 0x37D PUSH2 0x6CC CALLDATASIZE PUSH1 0x4 PUSH2 0x47EE JUMP JUMPDEST PUSH2 0x1557 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x6DC JUMPI PUSH0 PUSH0 REVERT JUMPDEST POP PUSH2 0x37D PUSH2 0x6EB CALLDATASIZE PUSH1 0x4 PUSH2 0x4905 JUMP JUMPDEST PUSH2 0x1B6E JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x6FB JUMPI PUSH0 PUSH0 REVERT JUMPDEST POP PUSH2 0x32F PUSH2 0x70A CALLDATASIZE PUSH1 0x4 PUSH2 0x43DE JUMP JUMPDEST PUSH2 0x1C71 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x71A JUMPI PUSH0 PUSH0 REVERT JUMPDEST POP PUSH2 0x2E4 PUSH1 0x40 MLOAD DUP1 PUSH1 0x40 ADD PUSH1 0x40 MSTORE DUP1 PUSH1 0x5 DUP2 MSTORE PUSH1 0x20 ADD PUSH5 0x352E302E3 PUSH1 0xDC SHL DUP2 MSTORE POP DUP2 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x74A JUMPI PUSH0 PUSH0 REVERT JUMPDEST POP PUSH2 0x2BD PUSH2 0x759 CALLDATASIZE PUSH1 0x4 PUSH2 0x43B3 JUMP JUMPDEST PUSH2 0x1C7E JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x769 JUMPI PUSH0 PUSH0 REVERT JUMPDEST POP PUSH2 0x2BD PUSH2 0x778 CALLDATASIZE PUSH1 0x4 PUSH2 0x4A1C JUMP JUMPDEST PUSH2 0x1C8A JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x788 JUMPI PUSH0 PUSH0 REVERT JUMPDEST POP PUSH2 0x2BD PUSH2 0x797 CALLDATASIZE PUSH1 0x4 PUSH2 0x4A1C JUMP JUMPDEST PUSH2 0x1CD7 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x7A7 JUMPI PUSH0 PUSH0 REVERT JUMPDEST POP PUSH2 0x37D PUSH2 0x7B6 CALLDATASIZE PUSH1 0x4 PUSH2 0x47BD JUMP JUMPDEST PUSH2 0x1D24 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x7C6 JUMPI PUSH0 PUSH0 REVERT JUMPDEST POP PUSH2 0x2BD PUSH2 0x7D5 CALLDATASIZE PUSH1 0x4 PUSH2 0x4589 JUMP JUMPDEST PUSH2 0x1F70 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x7E5 JUMPI PUSH0 PUSH0 REVERT JUMPDEST POP PUSH2 0x2BD PUSH2 0x7F4 CALLDATASIZE PUSH1 0x4 PUSH2 0x43B3 JUMP JUMPDEST PUSH2 0x1F9C JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x804 JUMPI PUSH0 PUSH0 REVERT JUMPDEST POP PUSH2 0x2BD PUSH2 0x813 CALLDATASIZE PUSH1 0x4 PUSH2 0x4589 JUMP JUMPDEST PUSH2 0x1FA7 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x823 JUMPI PUSH0 PUSH0 REVERT JUMPDEST POP PUSH0 MLOAD PUSH1 0x20 PUSH2 0x4F79 PUSH0 CODECOPY PUSH0 MLOAD SWAP1 PUSH0 MSTORE SLOAD PUSH1 0x1 PUSH1 0x80 SHL SWAP1 DIV PUSH1 0x1 PUSH1 0x1 PUSH1 0x80 SHL SUB AND PUSH2 0x2BD JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x853 JUMPI PUSH0 PUSH0 REVERT JUMPDEST POP PUSH2 0x2BD PUSH2 0x862 CALLDATASIZE PUSH1 0x4 PUSH2 0x4589 JUMP JUMPDEST PUSH2 0x1FBD JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x872 JUMPI PUSH0 PUSH0 REVERT JUMPDEST POP PUSH2 0x87B PUSH2 0x2002 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0x2C7 SWAP2 SWAP1 PUSH2 0x4A5B JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x893 JUMPI PUSH0 PUSH0 REVERT JUMPDEST POP PUSH2 0x2BD PUSH2 0x8A2 CALLDATASIZE PUSH1 0x4 PUSH2 0x4A8C JUMP JUMPDEST PUSH2 0x2048 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x8B2 JUMPI PUSH0 PUSH0 REVERT JUMPDEST POP PUSH2 0x2BD PUSH2 0x8C1 CALLDATASIZE PUSH1 0x4 PUSH2 0x4AB8 JUMP JUMPDEST PUSH2 0x2091 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x8D1 JUMPI PUSH0 PUSH0 REVERT JUMPDEST POP PUSH2 0x50E PUSH2 0x2281 JUMP JUMPDEST PUSH0 PUSH2 0x8E3 PUSH2 0x22BC JUMP JUMPDEST SWAP1 POP SWAP1 JUMP JUMPDEST PUSH32 0x52C63247E1F47DB19D5CE0460030C497F067CA4CEBF71BA98EEADABE20BACE03 DUP1 SLOAD PUSH1 0x60 SWAP2 PUSH0 MLOAD PUSH1 0x20 PUSH2 0x4F99 PUSH0 CODECOPY PUSH0 MLOAD SWAP1 PUSH0 MSTORE SWAP2 PUSH2 0x926 SWAP1 PUSH2 0x4AE1 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 0x952 SWAP1 PUSH2 0x4AE1 JUMP JUMPDEST DUP1 ISZERO PUSH2 0x99D JUMPI DUP1 PUSH1 0x1F LT PUSH2 0x974 JUMPI PUSH2 0x100 DUP1 DUP4 SLOAD DIV MUL DUP4 MSTORE SWAP2 PUSH1 0x20 ADD SWAP2 PUSH2 0x99D JUMP JUMPDEST DUP3 ADD SWAP2 SWAP1 PUSH0 MSTORE PUSH1 0x20 PUSH0 KECCAK256 SWAP1 JUMPDEST DUP2 SLOAD DUP2 MSTORE SWAP1 PUSH1 0x1 ADD SWAP1 PUSH1 0x20 ADD DUP1 DUP4 GT PUSH2 0x980 JUMPI DUP3 SWAP1 SUB PUSH1 0x1F AND DUP3 ADD SWAP2 JUMPDEST POP POP POP POP POP SWAP2 POP POP SWAP1 JUMP JUMPDEST PUSH0 PUSH2 0x9B3 DUP3 PUSH0 PUSH2 0x2337 JUMP JUMPDEST SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH0 CALLER PUSH2 0x9C6 DUP2 DUP6 DUP6 PUSH2 0x238E JUMP JUMPDEST POP PUSH1 0x1 SWAP4 SWAP3 POP POP POP JUMP JUMPDEST PUSH0 PUSH2 0x9B3 DUP3 PUSH1 0x1 PUSH2 0x23A0 JUMP JUMPDEST PUSH0 MLOAD PUSH1 0x20 PUSH2 0x4F79 PUSH0 CODECOPY PUSH0 MLOAD SWAP1 PUSH0 MSTORE PUSH2 0x9F3 DUP3 PUSH2 0x23EE JUMP JUMPDEST DUP2 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0x80 SHL SUB SWAP2 DUP3 AND PUSH1 0x1 PUSH1 0x80 SHL MUL SWAP2 AND OR DUP2 SSTORE PUSH2 0xA14 DUP4 PUSH2 0x23EE JUMP JUMPDEST DUP2 SLOAD PUSH16 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF NOT AND PUSH1 0x1 PUSH1 0x1 PUSH1 0x80 SHL SUB SWAP2 SWAP1 SWAP2 AND OR DUP2 SSTORE PUSH1 0x40 DUP1 MLOAD DUP5 DUP2 MSTORE PUSH1 0x20 DUP2 ADD DUP5 SWAP1 MSTORE PUSH32 0xB60CC7DC67F7ECA3662AE255CD7C76BB80B4229692532F6AF8851A2A119E6B85 SWAP2 ADD JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 LOG1 POP POP POP JUMP JUMPDEST PUSH0 CALLER PUSH2 0xA84 DUP6 DUP3 DUP6 PUSH2 0x2421 JUMP JUMPDEST PUSH2 0xA8F DUP6 DUP6 DUP6 PUSH2 0x2472 JUMP JUMPDEST PUSH1 0x1 SWAP2 POP POP JUMPDEST SWAP4 SWAP3 POP POP POP JUMP JUMPDEST PUSH0 DUP1 PUSH32 0x773E532DFEDE91F04B12A73D3D2ACD361424F41F76B4FB79F090161E36B4E00 SWAP1 POP PUSH0 DUP2 SLOAD PUSH2 0xAD8 SWAP2 SWAP1 PUSH1 0x1 PUSH1 0xA0 SHL SWAP1 DIV PUSH1 0xFF AND PUSH2 0x4B2D JUMP JUMPDEST SWAP2 POP POP SWAP1 JUMP JUMPDEST PUSH32 0x773E532DFEDE91F04B12A73D3D2ACD361424F41F76B4FB79F090161E36B4E00 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND SWAP1 JUMP JUMPDEST PUSH1 0x60 PUSH2 0xB19 DUP5 DUP5 DUP5 PUSH2 0x24CF JUMP JUMPDEST PUSH0 PUSH1 0x2 DUP6 PUSH1 0xFF AND PUSH1 0x20 DUP2 LT PUSH2 0xB30 JUMPI PUSH2 0xB30 PUSH2 0x4B46 JUMP JUMPDEST ADD SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND SWAP1 POP DUP1 PUSH2 0xB5B JUMPI PUSH1 0x40 MLOAD PUSH4 0x2711B74D PUSH1 0xE1 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH2 0xB88 DUP5 DUP5 PUSH1 0x2 DUP9 PUSH1 0xFF AND PUSH1 0x20 DUP2 LT PUSH2 0xB76 JUMPI PUSH2 0xB76 PUSH2 0x4B46 JUMP JUMPDEST ADD SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND SWAP2 SWAP1 PUSH2 0x25ED JUMP JUMPDEST SWAP6 SWAP5 POP POP POP POP POP JUMP JUMPDEST PUSH0 PUSH2 0x9B3 PUSH2 0x263F JUMP JUMPDEST PUSH2 0xBA3 DUP2 PUSH2 0x26D3 JUMP JUMPDEST POP JUMP JUMPDEST PUSH1 0x60 PUSH0 JUMPDEST PUSH0 PUSH1 0x2 DUP3 PUSH1 0x20 DUP2 LT PUSH2 0xBBE JUMPI PUSH2 0xBBE PUSH2 0x4B46 JUMP JUMPDEST ADD SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND EQ DUP1 ISZERO SWAP1 PUSH2 0xBD7 JUMPI POP PUSH1 0x20 DUP2 LT JUMPDEST ISZERO PUSH2 0xD0C JUMPI PUSH1 0x2 DUP2 PUSH1 0x20 DUP2 LT PUSH2 0xBEF JUMPI PUSH2 0xBEF PUSH2 0x4B46 JUMP JUMPDEST ADD PUSH0 SWAP1 SLOAD SWAP1 PUSH2 0x100 EXP SWAP1 DIV PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH4 0x5B9A4C35 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 GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0xC3E JUMPI RETURNDATASIZE PUSH0 PUSH0 RETURNDATACOPY RETURNDATASIZE PUSH0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP3 ADD DUP1 PUSH1 0x40 MSTORE POP DUP2 ADD SWAP1 PUSH2 0xC62 SWAP2 SWAP1 PUSH2 0x4B5A JUMP JUMPDEST DUP4 SUB PUSH2 0xCFC JUMPI DUP3 SLOAD DUP4 SWAP1 DUP2 SWAP1 PUSH2 0xC77 SWAP1 PUSH2 0x4AE1 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 0xCA3 SWAP1 PUSH2 0x4AE1 JUMP JUMPDEST DUP1 ISZERO PUSH2 0xCEE JUMPI DUP1 PUSH1 0x1F LT PUSH2 0xCC5 JUMPI PUSH2 0x100 DUP1 DUP4 SLOAD DIV MUL DUP4 MSTORE SWAP2 PUSH1 0x20 ADD SWAP2 PUSH2 0xCEE JUMP JUMPDEST DUP3 ADD SWAP2 SWAP1 PUSH0 MSTORE PUSH1 0x20 PUSH0 KECCAK256 SWAP1 JUMPDEST DUP2 SLOAD DUP2 MSTORE SWAP1 PUSH1 0x1 ADD SWAP1 PUSH1 0x20 ADD DUP1 DUP4 GT PUSH2 0xCD1 JUMPI DUP3 SWAP1 SUB PUSH1 0x1F AND DUP3 ADD SWAP2 JUMPDEST POP POP POP POP POP SWAP3 POP POP POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH2 0xD05 DUP2 PUSH2 0x4B71 JUMP JUMPDEST SWAP1 POP PUSH2 0xBAA JUMP JUMPDEST POP PUSH1 0x40 MLOAD PUSH4 0x213109DD PUSH1 0xE1 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH2 0xD2E PUSH2 0x27EA JUMP JUMPDEST PUSH2 0xD38 DUP3 DUP3 PUSH2 0x2890 JUMP JUMPDEST POP POP JUMP JUMPDEST PUSH0 DUP3 DUP2 MSTORE PUSH32 0xA2ADA5D673DBA5EECEA7C7503EE87E29913D0D36AE093E950D632F7B86891F01 PUSH1 0x20 MSTORE PUSH1 0x40 DUP2 KECCAK256 DUP1 SLOAD SWAP1 DUP4 SWAP1 DUP4 PUSH2 0xD78 DUP4 DUP6 PUSH2 0x4B89 JUMP JUMPDEST SWAP2 DUP3 SWAP1 SSTORE POP PUSH1 0x40 DUP1 MLOAD DUP8 DUP2 MSTORE PUSH1 0x20 DUP2 ADD DUP6 SWAP1 MSTORE SWAP1 DUP2 ADD DUP3 SWAP1 MSTORE SWAP1 SWAP4 POP PUSH32 0x177DF7EF9E6ECED78BB1837DDF81F055288F88E41CA91A74D394B2C8F0660FF2 SWAP2 POP PUSH1 0x60 ADD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 LOG1 POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH2 0xDD1 PUSH2 0x4354 JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH2 0x400 DUP2 ADD SWAP2 DUP3 SWAP1 MSTORE SWAP1 PUSH1 0x1 SWAP1 PUSH1 0x20 SWAP1 DUP3 PUSH0 DUP6 JUMPDEST DUP3 SLOAD PUSH2 0x100 DUP4 SWAP1 EXP SWAP1 DIV PUSH1 0xFF AND DUP2 MSTORE PUSH1 0x20 PUSH1 0x1 SWAP3 DUP4 ADD DUP2 DUP2 DIV SWAP5 DUP6 ADD SWAP5 SWAP1 SWAP4 SUB SWAP1 SWAP3 MUL SWAP2 ADD DUP1 DUP5 GT PUSH2 0xDE9 JUMPI SWAP1 POP POP POP POP POP POP SWAP1 POP SWAP1 JUMP JUMPDEST PUSH0 PUSH2 0xE2A PUSH2 0x294C JUMP JUMPDEST POP PUSH0 MLOAD PUSH1 0x20 PUSH2 0x4FB9 PUSH0 CODECOPY PUSH0 MLOAD SWAP1 PUSH0 MSTORE SWAP1 JUMP JUMPDEST PUSH0 PUSH0 PUSH2 0xE47 DUP4 PUSH2 0xB91 JUMP JUMPDEST SWAP1 POP DUP1 DUP5 GT ISZERO PUSH2 0xE79 JUMPI DUP3 DUP5 DUP3 PUSH1 0x40 MLOAD PUSH4 0x3C8097D9 PUSH1 0xE1 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0xE70 SWAP4 SWAP3 SWAP2 SWAP1 PUSH2 0x4BB0 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH0 PUSH2 0xE83 DUP6 PUSH2 0x1F9C JUMP JUMPDEST SWAP1 POP PUSH2 0xE91 CALLER DUP6 DUP8 DUP5 PUSH2 0x2995 JUMP JUMPDEST SWAP5 SWAP4 POP POP POP POP JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH0 SWAP1 DUP2 MSTORE PUSH0 MLOAD PUSH1 0x20 PUSH2 0x4F99 PUSH0 CODECOPY PUSH0 MLOAD SWAP1 PUSH0 MSTORE PUSH1 0x20 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD SWAP1 JUMP JUMPDEST PUSH0 PUSH1 0x2 DUP6 PUSH1 0xFF AND PUSH1 0x20 DUP2 LT PUSH2 0xED6 JUMPI PUSH2 0xED6 PUSH2 0x4B46 JUMP JUMPDEST ADD SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND SWAP1 POP DUP1 PUSH2 0xF01 JUMPI PUSH1 0x40 MLOAD PUSH4 0x2711B74D PUSH1 0xE1 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH0 JUMPDEST PUSH1 0x20 DUP2 LT DUP1 ISZERO PUSH2 0xF30 JUMPI POP PUSH0 PUSH1 0x2 DUP3 PUSH1 0x20 DUP2 LT PUSH2 0xF22 JUMPI PUSH2 0xF22 PUSH2 0x4B46 JUMP JUMPDEST ADD SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND EQ ISZERO JUMPDEST ISZERO PUSH2 0xFA6 JUMPI DUP5 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH1 0x2 DUP3 PUSH1 0x20 DUP2 LT PUSH2 0xF52 JUMPI PUSH2 0xF52 PUSH2 0x4B46 JUMP JUMPDEST ADD SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND EQ DUP1 ISZERO PUSH2 0xF6D JUMPI POP DUP6 PUSH1 0xFF AND DUP2 EQ ISZERO JUMPDEST ISZERO PUSH2 0xF96 JUMPI PUSH1 0x40 MLOAD PUSH4 0xB5A9314F PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP7 AND PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x24 ADD PUSH2 0xE70 JUMP JUMPDEST PUSH2 0xF9F DUP2 PUSH2 0x4B71 JUMP JUMPDEST SWAP1 POP PUSH2 0xF03 JUMP JUMPDEST POP PUSH2 0xFBB DUP2 DUP6 DUP6 PUSH2 0xFB5 PUSH2 0x29F9 JUMP JUMPDEST DUP7 PUSH2 0x2A02 JUMP JUMPDEST DUP4 PUSH1 0x2 DUP7 PUSH1 0xFF AND PUSH1 0x20 DUP2 LT PUSH2 0xFD2 JUMPI PUSH2 0xFD2 PUSH2 0x4B46 JUMP JUMPDEST ADD DUP1 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB NOT AND PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP3 SWAP1 SWAP3 AND SWAP2 SWAP1 SWAP2 OR SWAP1 SSTORE POP POP POP POP POP JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP3 AND PUSH2 0x101F JUMPI PUSH1 0x40 MLOAD PUSH4 0x2711B74D PUSH1 0xE1 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH0 JUMPDEST PUSH1 0x20 DUP2 LT DUP1 ISZERO PUSH2 0x104E JUMPI POP PUSH0 PUSH1 0x2 DUP3 PUSH1 0x20 DUP2 LT PUSH2 0x1040 JUMPI PUSH2 0x1040 PUSH2 0x4B46 JUMP JUMPDEST ADD SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND EQ ISZERO JUMPDEST ISZERO PUSH2 0x10B4 JUMPI DUP3 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH1 0x2 DUP3 PUSH1 0x20 DUP2 LT PUSH2 0x1070 JUMPI PUSH2 0x1070 PUSH2 0x4B46 JUMP JUMPDEST ADD SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND SUB PUSH2 0x10A4 JUMPI PUSH1 0x40 MLOAD PUSH4 0xB5A9314F PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP5 AND PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x24 ADD PUSH2 0xE70 JUMP JUMPDEST PUSH2 0x10AD DUP2 PUSH2 0x4B71 JUMP JUMPDEST SWAP1 POP PUSH2 0x1021 JUMP JUMPDEST PUSH1 0x1F NOT DUP2 ADD PUSH2 0x10D9 JUMPI PUSH1 0x40 MLOAD PUSH1 0x1 PUSH3 0xAD1FAB PUSH1 0xE0 SHL SUB NOT DUP2 MSTORE PUSH1 0x4 ADD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST DUP3 PUSH1 0x2 DUP3 PUSH1 0x20 DUP2 LT PUSH2 0x10ED JUMPI PUSH2 0x10ED PUSH2 0x4B46 JUMP JUMPDEST ADD DUP1 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB NOT AND PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP3 SWAP1 SWAP3 AND SWAP2 SWAP1 SWAP2 OR SWAP1 SSTORE PUSH2 0x1117 DUP2 PUSH1 0x1 PUSH2 0x4BD1 JUMP JUMPDEST PUSH0 DUP3 PUSH1 0x20 DUP2 LT PUSH2 0x1129 JUMPI PUSH2 0x1129 PUSH2 0x4B46 JUMP JUMPDEST PUSH1 0x20 SWAP2 DUP3 DUP3 DIV ADD SWAP2 SWAP1 MOD PUSH2 0x100 EXP DUP2 SLOAD DUP2 PUSH1 0xFF MUL NOT AND SWAP1 DUP4 PUSH1 0xFF AND MUL OR SWAP1 SSTORE POP DUP1 PUSH1 0x1 PUSH2 0x1156 SWAP2 SWAP1 PUSH2 0x4BD1 JUMP JUMPDEST PUSH1 0x1 DUP3 PUSH1 0x20 DUP2 LT PUSH2 0x1169 JUMPI PUSH2 0x1169 PUSH2 0x4B46 JUMP JUMPDEST PUSH1 0x20 SWAP2 DUP3 DUP3 DIV ADD SWAP2 SWAP1 MOD PUSH2 0x100 EXP DUP2 SLOAD DUP2 PUSH1 0xFF MUL NOT AND SWAP1 DUP4 PUSH1 0xFF AND MUL OR SWAP1 SSTORE POP PUSH2 0x11A4 PUSH2 0x1194 PUSH2 0x29F9 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP6 AND SWAP1 PUSH2 0x2B50 JUMP JUMPDEST PUSH2 0x11B7 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP5 AND DUP4 PUSH2 0x2BE2 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH1 0xFF DUP3 AND DUP2 MSTORE PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP5 AND SWAP1 PUSH32 0x4973F7978F2B1810531AED51DC15A8E446CB3191AFCCA470F8CE464AF7494F58 SWAP1 PUSH1 0x20 ADD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 LOG2 POP POP POP JUMP JUMPDEST PUSH0 PUSH0 PUSH1 0x2 DUP5 PUSH1 0xFF AND PUSH1 0x20 DUP2 LT PUSH2 0x1215 JUMPI PUSH2 0x1215 PUSH2 0x4B46 JUMP JUMPDEST ADD SLOAD PUSH1 0x40 DUP1 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP1 SWAP3 AND PUSH1 0x20 DUP4 ADD DUP2 SWAP1 MSTORE PUSH1 0xFF DUP7 AND SWAP2 DUP4 ADD SWAP2 SWAP1 SWAP2 MSTORE SWAP2 POP PUSH2 0xE91 SWAP1 PUSH1 0x60 ADD PUSH1 0x40 MLOAD PUSH1 0x20 DUP2 DUP4 SUB SUB DUP2 MSTORE SWAP1 PUSH1 0x40 MSTORE DUP1 MLOAD PUSH1 0x20 SWAP1 SWAP2 ADD KECCAK256 SWAP1 JUMP JUMPDEST PUSH0 PUSH2 0x126D DUP4 PUSH5 0xFFFFFFFFFF DUP5 AND PUSH2 0x4BF8 JUMP JUMPDEST PUSH2 0xA95 SWAP1 PUSH1 0x80 DUP6 SWAP1 SHL PUSH2 0x4BD1 JUMP JUMPDEST PUSH2 0x1283 PUSH2 0x4354 JUMP JUMPDEST DUP2 MLOAD PUSH0 SWAP1 PUSH1 0x20 LT ISZERO PUSH2 0x12A8 JUMPI PUSH1 0x40 MLOAD PUSH4 0xA29B1F11 PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST DUP3 MLOAD DUP2 LT ISZERO PUSH2 0x1453 JUMPI PUSH1 0x20 PUSH1 0xFF AND DUP4 DUP3 DUP2 MLOAD DUP2 LT PUSH2 0x12C8 JUMPI PUSH2 0x12C8 PUSH2 0x4B46 JUMP JUMPDEST PUSH1 0x20 MUL PUSH1 0x20 ADD ADD MLOAD PUSH1 0xFF AND LT ISZERO DUP1 PUSH2 0x1321 JUMPI POP PUSH0 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH1 0x2 DUP5 DUP4 DUP2 MLOAD DUP2 LT PUSH2 0x12F9 JUMPI PUSH2 0x12F9 PUSH2 0x4B46 JUMP JUMPDEST PUSH1 0x20 MUL PUSH1 0x20 ADD ADD MLOAD PUSH1 0xFF AND PUSH1 0x20 DUP2 LT PUSH2 0x1314 JUMPI PUSH2 0x1314 PUSH2 0x4B46 JUMP JUMPDEST ADD SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND EQ JUMPDEST ISZERO PUSH2 0x133F JUMPI PUSH1 0x40 MLOAD PUSH4 0xA29B1F11 PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST DUP2 DUP4 DUP3 DUP2 MLOAD DUP2 LT PUSH2 0x1352 JUMPI PUSH2 0x1352 PUSH2 0x4B46 JUMP JUMPDEST PUSH1 0x20 MUL PUSH1 0x20 ADD ADD MLOAD PUSH1 0xFF AND PUSH1 0x20 DUP2 LT PUSH2 0x136D JUMPI PUSH2 0x136D PUSH2 0x4B46 JUMP JUMPDEST PUSH1 0x20 MUL ADD MLOAD ISZERO PUSH2 0x13B4 JUMPI DUP3 DUP2 DUP2 MLOAD DUP2 LT PUSH2 0x1389 JUMPI PUSH2 0x1389 PUSH2 0x4B46 JUMP JUMPDEST PUSH1 0x20 MUL PUSH1 0x20 ADD ADD MLOAD PUSH1 0x40 MLOAD PUSH4 0xC41FDBB9 PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0xE70 SWAP2 SWAP1 PUSH1 0xFF SWAP2 SWAP1 SWAP2 AND DUP2 MSTORE PUSH1 0x20 ADD SWAP1 JUMP JUMPDEST PUSH1 0x1 DUP3 DUP5 DUP4 DUP2 MLOAD DUP2 LT PUSH2 0x13C9 JUMPI PUSH2 0x13C9 PUSH2 0x4B46 JUMP JUMPDEST PUSH1 0x20 MUL PUSH1 0x20 ADD ADD MLOAD PUSH1 0xFF AND PUSH1 0x20 DUP2 LT PUSH2 0x13E4 JUMPI PUSH2 0x13E4 PUSH2 0x4B46 JUMP JUMPDEST SWAP2 ISZERO ISZERO PUSH1 0x20 SWAP1 SWAP3 MUL ADD MSTORE DUP3 MLOAD DUP4 SWAP1 DUP3 SWAP1 DUP2 LT PUSH2 0x1402 JUMPI PUSH2 0x1402 PUSH2 0x4B46 JUMP JUMPDEST PUSH1 0x20 MUL PUSH1 0x20 ADD ADD MLOAD PUSH1 0x1 PUSH2 0x1416 SWAP2 SWAP1 PUSH2 0x4B2D JUMP JUMPDEST PUSH0 DUP3 PUSH1 0x20 DUP2 LT PUSH2 0x1428 JUMPI PUSH2 0x1428 PUSH2 0x4B46 JUMP JUMPDEST PUSH1 0x20 SWAP2 DUP3 DUP3 DIV ADD SWAP2 SWAP1 MOD PUSH2 0x100 EXP DUP2 SLOAD DUP2 PUSH1 0xFF MUL NOT AND SWAP1 DUP4 PUSH1 0xFF AND MUL OR SWAP1 SSTORE POP DUP1 PUSH1 0x1 ADD SWAP1 POP PUSH2 0x12A8 JUMP JUMPDEST PUSH1 0x20 DUP2 LT DUP1 ISZERO PUSH2 0x1480 JUMPI POP PUSH0 PUSH1 0x2 DUP3 PUSH1 0x20 DUP2 LT PUSH2 0x1472 JUMPI PUSH2 0x1472 PUSH2 0x4B46 JUMP JUMPDEST ADD SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND EQ ISZERO JUMPDEST ISZERO PUSH2 0x149E JUMPI PUSH1 0x40 MLOAD PUSH4 0x6712B27B PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH32 0x193FC4E628C27AE3CA098952DFC16A40425B44E7B0A97F4CC59D0F267F47CAEC DUP4 PUSH1 0x40 MLOAD PUSH2 0xA6A SWAP2 SWAP1 PUSH2 0x4C0B JUMP JUMPDEST PUSH0 PUSH0 PUSH2 0x14D8 DUP4 PUSH2 0x1F70 JUMP JUMPDEST SWAP1 POP DUP1 DUP5 GT ISZERO PUSH2 0x1501 JUMPI DUP3 DUP5 DUP3 PUSH1 0x40 MLOAD PUSH4 0x284FF667 PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0xE70 SWAP4 SWAP3 SWAP2 SWAP1 PUSH2 0x4BB0 JUMP JUMPDEST PUSH0 PUSH2 0x150B DUP6 PUSH2 0x1C7E JUMP JUMPDEST SWAP1 POP PUSH2 0xE91 CALLER DUP6 DUP4 DUP9 PUSH2 0x2995 JUMP JUMPDEST PUSH32 0x52C63247E1F47DB19D5CE0460030C497F067CA4CEBF71BA98EEADABE20BACE04 DUP1 SLOAD PUSH1 0x60 SWAP2 PUSH0 MLOAD PUSH1 0x20 PUSH2 0x4F99 PUSH0 CODECOPY PUSH0 MLOAD SWAP1 PUSH0 MSTORE SWAP2 PUSH2 0x926 SWAP1 PUSH2 0x4AE1 JUMP JUMPDEST PUSH1 0x20 PUSH1 0xFF DUP4 AND LT PUSH2 0x157B JUMPI PUSH1 0x40 MLOAD PUSH4 0x2711B74D PUSH1 0xE1 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH0 PUSH1 0x2 DUP4 PUSH1 0xFF AND PUSH1 0x20 DUP2 LT PUSH2 0x1592 JUMPI PUSH2 0x1592 PUSH2 0x4B46 JUMP JUMPDEST ADD SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND SWAP1 POP DUP1 PUSH2 0x15BD JUMPI PUSH1 0x40 MLOAD PUSH4 0x2711B74D PUSH1 0xE1 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST DUP2 ISZERO DUP1 ISZERO PUSH2 0x15DB JUMPI POP PUSH2 0x15D8 DUP2 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH2 0x2C30 JUMP JUMPDEST ISZERO ISZERO JUMPDEST ISZERO PUSH2 0x15F9 JUMPI PUSH1 0x40 MLOAD PUSH4 0x43C2DFEF PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH1 0xFF DUP4 AND ISZERO DUP1 ISZERO PUSH2 0x1613 JUMPI POP PUSH1 0x3 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND ISZERO JUMPDEST ISZERO PUSH2 0x1634 JUMPI PUSH1 0x40 MLOAD PUSH1 0x1 PUSH3 0xAD1FAB PUSH1 0xE0 SHL SUB NOT DUP2 MSTORE PUSH1 0x4 ADD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH0 PUSH2 0x1640 DUP5 PUSH1 0x1 PUSH2 0x4B2D JUMP JUMPDEST PUSH1 0xFF AND SWAP1 POP JUMPDEST PUSH1 0x20 DUP2 LT DUP1 ISZERO PUSH2 0x1673 JUMPI POP PUSH0 PUSH1 0x2 DUP3 PUSH1 0x20 DUP2 LT PUSH2 0x1665 JUMPI PUSH2 0x1665 PUSH2 0x4B46 JUMP JUMPDEST ADD SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND EQ ISZERO JUMPDEST ISZERO PUSH2 0x16E2 JUMPI PUSH1 0x2 DUP2 PUSH1 0x20 DUP2 LT PUSH2 0x168B JUMPI PUSH2 0x168B PUSH2 0x4B46 JUMP JUMPDEST ADD SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH1 0x2 PUSH2 0x16A3 PUSH1 0x1 DUP5 PUSH2 0x4C50 JUMP JUMPDEST PUSH1 0x20 DUP2 LT PUSH2 0x16B3 JUMPI PUSH2 0x16B3 PUSH2 0x4B46 JUMP JUMPDEST ADD DUP1 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB NOT AND PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP3 SWAP1 SWAP3 AND SWAP2 SWAP1 SWAP2 OR SWAP1 SSTORE PUSH2 0x16DB DUP2 PUSH2 0x4B71 JUMP JUMPDEST SWAP1 POP PUSH2 0x1646 JUMP JUMPDEST PUSH0 PUSH1 0x2 PUSH2 0x16F0 PUSH1 0x1 DUP5 PUSH2 0x4C50 JUMP JUMPDEST PUSH1 0x20 DUP2 LT PUSH2 0x1700 JUMPI PUSH2 0x1700 PUSH2 0x4B46 JUMP JUMPDEST ADD DUP1 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB NOT AND PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP3 SWAP1 SWAP3 AND SWAP2 SWAP1 SWAP2 OR SWAP1 SSTORE POP PUSH0 DUP1 DUP1 JUMPDEST PUSH1 0x1 DUP4 PUSH1 0x20 DUP2 LT PUSH2 0x1737 JUMPI PUSH2 0x1737 PUSH2 0x4B46 JUMP JUMPDEST PUSH1 0x20 DUP2 DIV SWAP1 SWAP2 ADD SLOAD PUSH1 0xFF PUSH1 0x1F SWAP1 SWAP3 AND PUSH2 0x100 EXP SWAP1 DIV AND ISZERO DUP1 ISZERO SWAP1 PUSH2 0x175B JUMPI POP PUSH1 0x20 DUP4 LT JUMPDEST ISZERO PUSH2 0x1A8D JUMPI DUP1 ISZERO PUSH2 0x181F JUMPI PUSH2 0x1771 DUP7 PUSH1 0x1 PUSH2 0x4B2D JUMP JUMPDEST PUSH1 0xFF AND PUSH1 0x1 DUP5 PUSH1 0x20 DUP2 LT PUSH2 0x1787 JUMPI PUSH2 0x1787 PUSH2 0x4B46 JUMP JUMPDEST PUSH1 0x20 DUP2 DIV SWAP1 SWAP2 ADD SLOAD PUSH1 0xFF PUSH1 0x1F SWAP1 SWAP3 AND PUSH2 0x100 EXP SWAP1 DIV AND GT PUSH2 0x17A8 JUMPI PUSH0 PUSH2 0x17AB JUMP JUMPDEST PUSH1 0x1 JUMPDEST PUSH1 0x1 DUP5 PUSH1 0x20 DUP2 LT PUSH2 0x17BE JUMPI PUSH2 0x17BE PUSH2 0x4B46 JUMP JUMPDEST PUSH1 0x20 SWAP2 DUP3 DUP3 DIV ADD SWAP2 SWAP1 MOD SWAP1 SLOAD SWAP1 PUSH2 0x100 EXP SWAP1 DIV PUSH1 0xFF AND PUSH2 0x17DE SWAP2 SWAP1 PUSH2 0x4C63 JUMP JUMPDEST PUSH1 0x1 PUSH2 0x17EA DUP2 DUP7 PUSH2 0x4C50 JUMP JUMPDEST PUSH1 0x20 DUP2 LT PUSH2 0x17FA JUMPI PUSH2 0x17FA PUSH2 0x4B46 JUMP JUMPDEST PUSH1 0x20 SWAP2 DUP3 DUP3 DIV ADD SWAP2 SWAP1 MOD PUSH2 0x100 EXP DUP2 SLOAD DUP2 PUSH1 0xFF MUL NOT AND SWAP1 DUP4 PUSH1 0xFF AND MUL OR SWAP1 SSTORE POP PUSH2 0x18F0 JUMP JUMPDEST PUSH2 0x182A DUP7 PUSH1 0x1 PUSH2 0x4B2D JUMP JUMPDEST PUSH1 0xFF AND PUSH1 0x1 DUP5 PUSH1 0x20 DUP2 LT PUSH2 0x1840 JUMPI PUSH2 0x1840 PUSH2 0x4B46 JUMP JUMPDEST PUSH1 0x20 DUP2 DIV SWAP1 SWAP2 ADD SLOAD PUSH1 0xFF PUSH1 0x1F SWAP1 SWAP3 AND PUSH2 0x100 EXP SWAP1 DIV AND SUB PUSH2 0x1863 JUMPI POP PUSH1 0x1 PUSH2 0x18F0 JUMP JUMPDEST PUSH2 0x186E DUP7 PUSH1 0x1 PUSH2 0x4B2D JUMP JUMPDEST PUSH1 0xFF AND PUSH1 0x1 DUP5 PUSH1 0x20 DUP2 LT PUSH2 0x1884 JUMPI PUSH2 0x1884 PUSH2 0x4B46 JUMP JUMPDEST PUSH1 0x20 DUP2 DIV SWAP1 SWAP2 ADD SLOAD PUSH1 0xFF PUSH1 0x1F SWAP1 SWAP3 AND PUSH2 0x100 EXP SWAP1 DIV AND GT ISZERO PUSH2 0x18F0 JUMPI PUSH1 0x1 DUP1 DUP5 PUSH1 0x20 DUP2 LT PUSH2 0x18B4 JUMPI PUSH2 0x18B4 PUSH2 0x4B46 JUMP JUMPDEST PUSH1 0x20 SWAP2 DUP3 DUP3 DIV ADD SWAP2 SWAP1 MOD DUP3 DUP3 DUP3 SWAP1 SLOAD SWAP1 PUSH2 0x100 EXP SWAP1 DIV PUSH1 0xFF AND PUSH2 0x18D7 SWAP2 SWAP1 PUSH2 0x4C63 JUMP JUMPDEST SWAP3 POP PUSH2 0x100 EXP DUP2 SLOAD DUP2 PUSH1 0xFF MUL NOT AND SWAP1 DUP4 PUSH1 0xFF AND MUL OR SWAP1 SSTORE POP JUMPDEST DUP2 ISZERO PUSH2 0x19AD JUMPI PUSH2 0x1901 DUP7 PUSH1 0x1 PUSH2 0x4B2D JUMP JUMPDEST PUSH1 0xFF AND PUSH0 DUP5 PUSH1 0x20 DUP2 LT PUSH2 0x1916 JUMPI PUSH2 0x1916 PUSH2 0x4B46 JUMP JUMPDEST PUSH1 0x20 DUP2 DIV SWAP1 SWAP2 ADD SLOAD PUSH1 0xFF PUSH1 0x1F SWAP1 SWAP3 AND PUSH2 0x100 EXP SWAP1 DIV AND GT PUSH2 0x1937 JUMPI PUSH0 PUSH2 0x193A JUMP JUMPDEST PUSH1 0x1 JUMPDEST PUSH0 DUP5 PUSH1 0x20 DUP2 LT PUSH2 0x194C JUMPI PUSH2 0x194C PUSH2 0x4B46 JUMP JUMPDEST PUSH1 0x20 SWAP2 DUP3 DUP3 DIV ADD SWAP2 SWAP1 MOD SWAP1 SLOAD SWAP1 PUSH2 0x100 EXP SWAP1 DIV PUSH1 0xFF AND PUSH2 0x196C SWAP2 SWAP1 PUSH2 0x4C63 JUMP JUMPDEST PUSH0 PUSH2 0x1978 PUSH1 0x1 DUP7 PUSH2 0x4C50 JUMP JUMPDEST PUSH1 0x20 DUP2 LT PUSH2 0x1988 JUMPI PUSH2 0x1988 PUSH2 0x4B46 JUMP JUMPDEST PUSH1 0x20 SWAP2 DUP3 DUP3 DIV ADD SWAP2 SWAP1 MOD PUSH2 0x100 EXP DUP2 SLOAD DUP2 PUSH1 0xFF MUL NOT AND SWAP1 DUP4 PUSH1 0xFF AND MUL OR SWAP1 SSTORE POP PUSH2 0x1A7D JUMP JUMPDEST PUSH2 0x19B8 DUP7 PUSH1 0x1 PUSH2 0x4B2D JUMP JUMPDEST PUSH1 0xFF AND PUSH0 DUP5 PUSH1 0x20 DUP2 LT PUSH2 0x19CD JUMPI PUSH2 0x19CD PUSH2 0x4B46 JUMP JUMPDEST PUSH1 0x20 DUP2 DIV SWAP1 SWAP2 ADD SLOAD PUSH1 0xFF PUSH1 0x1F SWAP1 SWAP3 AND PUSH2 0x100 EXP SWAP1 DIV AND SUB PUSH2 0x19F1 JUMPI PUSH1 0x1 SWAP2 POP PUSH2 0x1A7D JUMP JUMPDEST PUSH2 0x19FC DUP7 PUSH1 0x1 PUSH2 0x4B2D JUMP JUMPDEST PUSH1 0xFF AND PUSH0 DUP5 PUSH1 0x20 DUP2 LT PUSH2 0x1A11 JUMPI PUSH2 0x1A11 PUSH2 0x4B46 JUMP JUMPDEST PUSH1 0x20 DUP2 DIV SWAP1 SWAP2 ADD SLOAD PUSH1 0xFF PUSH1 0x1F SWAP1 SWAP3 AND PUSH2 0x100 EXP SWAP1 DIV AND GT ISZERO PUSH2 0x1A7D JUMPI PUSH1 0x1 PUSH0 DUP5 PUSH1 0x20 DUP2 LT PUSH2 0x1A41 JUMPI PUSH2 0x1A41 PUSH2 0x4B46 JUMP JUMPDEST PUSH1 0x20 SWAP2 DUP3 DUP3 DIV ADD SWAP2 SWAP1 MOD DUP3 DUP3 DUP3 SWAP1 SLOAD SWAP1 PUSH2 0x100 EXP SWAP1 DIV PUSH1 0xFF AND PUSH2 0x1A64 SWAP2 SWAP1 PUSH2 0x4C63 JUMP JUMPDEST SWAP3 POP PUSH2 0x100 EXP DUP2 SLOAD DUP2 PUSH1 0xFF MUL NOT AND SWAP1 DUP4 PUSH1 0xFF AND MUL OR SWAP1 SSTORE POP JUMPDEST PUSH2 0x1A86 DUP4 PUSH2 0x4B71 JUMP JUMPDEST SWAP3 POP PUSH2 0x1724 JUMP JUMPDEST PUSH0 DUP1 PUSH2 0x1A9A PUSH1 0x1 DUP7 PUSH2 0x4C50 JUMP JUMPDEST PUSH1 0x20 DUP2 LT PUSH2 0x1AAA JUMPI PUSH2 0x1AAA PUSH2 0x4B46 JUMP JUMPDEST PUSH1 0x20 SWAP2 DUP3 DUP3 DIV ADD SWAP2 SWAP1 MOD PUSH2 0x100 EXP DUP2 SLOAD DUP2 PUSH1 0xFF MUL NOT AND SWAP1 DUP4 PUSH1 0xFF AND MUL OR SWAP1 SSTORE POP PUSH0 PUSH1 0x1 DUP1 DUP6 PUSH2 0x1AD9 SWAP2 SWAP1 PUSH2 0x4C50 JUMP JUMPDEST PUSH1 0x20 DUP2 LT PUSH2 0x1AE9 JUMPI PUSH2 0x1AE9 PUSH2 0x4B46 JUMP JUMPDEST PUSH1 0x20 SWAP2 DUP3 DUP3 DIV ADD SWAP2 SWAP1 MOD PUSH2 0x100 EXP DUP2 SLOAD DUP2 PUSH1 0xFF MUL NOT AND SWAP1 DUP4 PUSH1 0xFF AND MUL OR SWAP1 SSTORE POP PUSH2 0x1B25 DUP6 DUP6 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH2 0x2C99 SWAP1 SWAP2 SWAP1 PUSH4 0xFFFFFFFF AND JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH1 0xFF DUP8 AND DUP2 MSTORE PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP6 AND SWAP1 PUSH32 0x978014566E371FEF52158B004E150B6E1FD723F5AA3D8C9AA2A7C98DDB0E65B8 SWAP1 PUSH1 0x20 ADD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 LOG2 POP POP POP POP POP POP JUMP JUMPDEST PUSH0 PUSH2 0x1B77 PUSH2 0x2DBE JUMP JUMPDEST DUP1 SLOAD SWAP1 SWAP2 POP PUSH1 0xFF PUSH1 0x1 PUSH1 0x40 SHL DUP3 DIV AND ISZERO SWAP1 PUSH1 0x1 PUSH1 0x1 PUSH1 0x40 SHL SUB AND PUSH0 DUP2 ISZERO DUP1 ISZERO PUSH2 0x1B9D JUMPI POP DUP3 JUMPDEST SWAP1 POP PUSH0 DUP3 PUSH1 0x1 PUSH1 0x1 PUSH1 0x40 SHL SUB AND PUSH1 0x1 EQ DUP1 ISZERO PUSH2 0x1BB8 JUMPI POP ADDRESS EXTCODESIZE ISZERO JUMPDEST SWAP1 POP DUP2 ISZERO DUP1 ISZERO PUSH2 0x1BC6 JUMPI POP DUP1 ISZERO JUMPDEST ISZERO PUSH2 0x1BE4 JUMPI PUSH1 0x40 MLOAD PUSH4 0xF92EE8A9 PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST DUP5 SLOAD PUSH8 0xFFFFFFFFFFFFFFFF NOT AND PUSH1 0x1 OR DUP6 SSTORE DUP4 ISZERO PUSH2 0x1C0E JUMPI DUP5 SLOAD PUSH1 0xFF PUSH1 0x40 SHL NOT AND PUSH1 0x1 PUSH1 0x40 SHL OR DUP6 SSTORE JUMPDEST PUSH2 0x1C1D DUP13 DUP13 DUP13 DUP13 DUP13 DUP13 DUP13 PUSH2 0x2DE6 JUMP JUMPDEST DUP4 ISZERO PUSH2 0x1C63 JUMPI DUP5 SLOAD PUSH1 0xFF PUSH1 0x40 SHL NOT AND DUP6 SSTORE PUSH1 0x40 MLOAD PUSH1 0x1 DUP2 MSTORE PUSH32 0xC7F505B2F371AE2175EE4913F4499E1F2633A7B5936321EED1CDAEB6115181D2 SWAP1 PUSH1 0x20 ADD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 LOG1 JUMPDEST POP POP POP POP POP POP POP POP POP POP POP POP JUMP JUMPDEST PUSH0 CALLER PUSH2 0x9C6 DUP2 DUP6 DUP6 PUSH2 0x2472 JUMP JUMPDEST PUSH0 PUSH2 0x9B3 DUP3 PUSH1 0x1 PUSH2 0x2337 JUMP JUMPDEST PUSH0 PUSH0 PUSH2 0x1C95 DUP4 PUSH2 0x1FA7 JUMP JUMPDEST SWAP1 POP DUP1 DUP6 GT ISZERO PUSH2 0x1CBE JUMPI DUP3 DUP6 DUP3 PUSH1 0x40 MLOAD PUSH4 0x3FA733BB PUSH1 0xE2 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0xE70 SWAP4 SWAP3 SWAP2 SWAP1 PUSH2 0x4BB0 JUMP JUMPDEST PUSH0 PUSH2 0x1CC8 DUP7 PUSH2 0x9D0 JUMP JUMPDEST SWAP1 POP PUSH2 0xB88 CALLER DUP7 DUP7 DUP10 DUP6 PUSH2 0x2E16 JUMP JUMPDEST PUSH0 PUSH0 PUSH2 0x1CE2 DUP4 PUSH2 0x1FBD JUMP JUMPDEST SWAP1 POP DUP1 DUP6 GT ISZERO PUSH2 0x1D0B JUMPI DUP3 DUP6 DUP3 PUSH1 0x40 MLOAD PUSH4 0x2E52AFBB PUSH1 0xE2 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0xE70 SWAP4 SWAP3 SWAP2 SWAP1 PUSH2 0x4BB0 JUMP JUMPDEST PUSH0 PUSH2 0x1D15 DUP7 PUSH2 0x9A8 JUMP JUMPDEST SWAP1 POP PUSH2 0xB88 CALLER DUP7 DUP7 DUP5 DUP11 PUSH2 0x2E16 JUMP JUMPDEST PUSH2 0x1D2C PUSH2 0x4354 JUMP JUMPDEST DUP2 MLOAD PUSH0 SWAP1 PUSH1 0x20 LT ISZERO PUSH2 0x1D51 JUMPI PUSH1 0x40 MLOAD PUSH4 0xA29B1F11 PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST DUP3 MLOAD DUP2 PUSH1 0xFF AND LT ISZERO PUSH2 0x1EF0 JUMPI PUSH1 0x20 PUSH1 0xFF AND DUP4 DUP3 PUSH1 0xFF AND DUP2 MLOAD DUP2 LT PUSH2 0x1D77 JUMPI PUSH2 0x1D77 PUSH2 0x4B46 JUMP JUMPDEST PUSH1 0x20 MUL PUSH1 0x20 ADD ADD MLOAD PUSH1 0xFF AND LT ISZERO DUP1 PUSH2 0x1DD3 JUMPI POP PUSH0 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH1 0x2 DUP5 DUP4 PUSH1 0xFF AND DUP2 MLOAD DUP2 LT PUSH2 0x1DAB JUMPI PUSH2 0x1DAB PUSH2 0x4B46 JUMP JUMPDEST PUSH1 0x20 MUL PUSH1 0x20 ADD ADD MLOAD PUSH1 0xFF AND PUSH1 0x20 DUP2 LT PUSH2 0x1DC6 JUMPI PUSH2 0x1DC6 PUSH2 0x4B46 JUMP JUMPDEST ADD SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND EQ JUMPDEST ISZERO PUSH2 0x1DF1 JUMPI PUSH1 0x40 MLOAD PUSH4 0xA29B1F11 PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST DUP2 DUP4 DUP3 PUSH1 0xFF AND DUP2 MLOAD DUP2 LT PUSH2 0x1E07 JUMPI PUSH2 0x1E07 PUSH2 0x4B46 JUMP JUMPDEST PUSH1 0x20 MUL PUSH1 0x20 ADD ADD MLOAD PUSH1 0xFF AND PUSH1 0x20 DUP2 LT PUSH2 0x1E22 JUMPI PUSH2 0x1E22 PUSH2 0x4B46 JUMP JUMPDEST PUSH1 0x20 MUL ADD MLOAD ISZERO PUSH2 0x1E41 JUMPI DUP3 DUP2 PUSH1 0xFF AND DUP2 MLOAD DUP2 LT PUSH2 0x1389 JUMPI PUSH2 0x1389 PUSH2 0x4B46 JUMP JUMPDEST PUSH1 0x1 DUP3 DUP5 DUP4 PUSH1 0xFF AND DUP2 MLOAD DUP2 LT PUSH2 0x1E59 JUMPI PUSH2 0x1E59 PUSH2 0x4B46 JUMP JUMPDEST PUSH1 0x20 MUL PUSH1 0x20 ADD ADD MLOAD PUSH1 0xFF AND PUSH1 0x20 DUP2 LT PUSH2 0x1E74 JUMPI PUSH2 0x1E74 PUSH2 0x4B46 JUMP JUMPDEST SWAP2 ISZERO ISZERO PUSH1 0x20 SWAP1 SWAP3 MUL ADD MSTORE DUP3 MLOAD DUP4 SWAP1 PUSH1 0xFF DUP4 AND SWAP1 DUP2 LT PUSH2 0x1E95 JUMPI PUSH2 0x1E95 PUSH2 0x4B46 JUMP JUMPDEST PUSH1 0x20 MUL PUSH1 0x20 ADD ADD MLOAD PUSH1 0x1 PUSH2 0x1EA9 SWAP2 SWAP1 PUSH2 0x4B2D JUMP JUMPDEST PUSH1 0x1 DUP3 PUSH1 0xFF AND PUSH1 0x20 DUP2 LT PUSH2 0x1EBF JUMPI PUSH2 0x1EBF PUSH2 0x4B46 JUMP JUMPDEST PUSH1 0x20 SWAP2 DUP3 DUP3 DIV ADD SWAP2 SWAP1 MOD PUSH2 0x100 EXP DUP2 SLOAD DUP2 PUSH1 0xFF MUL NOT AND SWAP1 DUP4 PUSH1 0xFF AND MUL OR SWAP1 SSTORE POP DUP1 PUSH2 0x1EE9 SWAP1 PUSH2 0x4C7C JUMP JUMPDEST SWAP1 POP PUSH2 0x1D51 JUMP JUMPDEST PUSH1 0x20 PUSH1 0xFF DUP3 AND LT DUP1 ISZERO PUSH2 0x1F23 JUMPI POP PUSH0 PUSH1 0x2 PUSH1 0xFF DUP4 AND PUSH1 0x20 DUP2 LT PUSH2 0x1F15 JUMPI PUSH2 0x1F15 PUSH2 0x4B46 JUMP JUMPDEST ADD SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND EQ ISZERO JUMPDEST ISZERO PUSH2 0x1F41 JUMPI PUSH1 0x40 MLOAD PUSH4 0x6712B27B PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH32 0x3C56B6BCA0D55EDA581F8F2819D1F85D3B91CFCC24914A8FA39D301796D8964C DUP4 PUSH1 0x40 MLOAD PUSH2 0xA6A SWAP2 SWAP1 PUSH2 0x4C0B JUMP JUMPDEST PUSH0 PUSH0 PUSH2 0x1F7A PUSH2 0x263F JUMP JUMPDEST SWAP1 POP PUSH0 NOT DUP2 EQ PUSH2 0x1F93 JUMPI PUSH2 0x1F8E DUP2 PUSH0 PUSH2 0x23A0 JUMP JUMPDEST PUSH2 0xA95 JUMP JUMPDEST PUSH0 NOT SWAP4 SWAP3 POP POP POP JUMP JUMPDEST PUSH0 PUSH2 0x9B3 DUP3 PUSH0 PUSH2 0x23A0 JUMP JUMPDEST PUSH0 PUSH0 PUSH2 0x1FB2 DUP4 PUSH2 0x2F2D JUMP JUMPDEST SWAP1 POP PUSH2 0xA95 DUP2 PUSH2 0x2F3A JUMP JUMPDEST PUSH0 PUSH0 PUSH2 0x1FC8 DUP4 PUSH2 0x2FCF JUMP JUMPDEST SWAP1 POP PUSH0 PUSH2 0x1FD5 DUP3 PUSH0 PUSH2 0x2337 JUMP JUMPDEST SWAP1 POP PUSH0 PUSH2 0x1FE1 DUP3 PUSH2 0x2F3A JUMP JUMPDEST SWAP1 POP DUP2 DUP2 EQ PUSH2 0x1FF9 JUMPI PUSH2 0x1FF4 DUP2 PUSH0 PUSH2 0x23A0 JUMP JUMPDEST PUSH2 0xB88 JUMP JUMPDEST POP SWAP1 SWAP4 SWAP3 POP POP POP JUMP JUMPDEST PUSH2 0x200A PUSH2 0x4354 JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH2 0x400 DUP2 ADD SWAP2 DUP3 SWAP1 MSTORE SWAP1 PUSH1 0x2 SWAP1 PUSH1 0x20 SWAP1 DUP3 DUP5 JUMPDEST DUP2 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP2 MSTORE PUSH1 0x1 SWAP1 SWAP2 ADD SWAP1 PUSH1 0x20 ADD DUP1 DUP4 GT PUSH2 0x2021 JUMPI POP POP POP POP POP SWAP1 POP SWAP1 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP2 DUP3 AND PUSH0 SWAP1 DUP2 MSTORE PUSH32 0x52C63247E1F47DB19D5CE0460030C497F067CA4CEBF71BA98EEADABE20BACE01 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 PUSH0 PUSH1 0x20 PUSH1 0xFF DUP6 AND LT ISZERO DUP1 PUSH2 0x20A9 JUMPI POP PUSH1 0x20 PUSH1 0xFF DUP5 AND LT ISZERO JUMPDEST ISZERO PUSH2 0x20C7 JUMPI PUSH1 0x40 MLOAD PUSH4 0x2711B74D PUSH1 0xE1 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH0 PUSH1 0x2 DUP6 PUSH1 0xFF AND PUSH1 0x20 DUP2 LT PUSH2 0x20DE JUMPI PUSH2 0x20DE PUSH2 0x4B46 JUMP JUMPDEST ADD SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND SWAP1 POP PUSH0 PUSH1 0x2 PUSH1 0xFF DUP7 AND PUSH1 0x20 DUP2 LT PUSH2 0x2102 JUMPI PUSH2 0x2102 PUSH2 0x4B46 JUMP JUMPDEST ADD SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP1 DUP2 AND SWAP2 POP DUP3 AND ISZERO DUP1 PUSH2 0x2126 JUMPI POP PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 AND ISZERO JUMPDEST ISZERO PUSH2 0x2144 JUMPI PUSH1 0x40 MLOAD PUSH4 0x2711B74D PUSH1 0xE1 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH0 NOT DUP5 SUB PUSH2 0x2161 JUMPI PUSH2 0x215E DUP3 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH2 0x2C30 JUMP JUMPDEST SWAP4 POP JUMPDEST DUP4 PUSH0 SUB PUSH2 0x2172 JUMPI PUSH0 SWAP3 POP POP POP PUSH2 0xA95 JUMP JUMPDEST PUSH2 0x2184 DUP3 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH2 0x2FD9 JUMP JUMPDEST DUP5 GT ISZERO PUSH2 0x21B9 JUMPI PUSH2 0x219D DUP3 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH2 0x2FD9 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH4 0x3CE011D5 PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0xE70 SWAP2 DUP2 MSTORE PUSH1 0x20 ADD SWAP1 JUMP JUMPDEST PUSH2 0x21CB DUP2 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH2 0x3007 JUMP JUMPDEST DUP5 GT ISZERO PUSH2 0x2200 JUMPI PUSH2 0x21E4 DUP2 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH2 0x3007 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH4 0x50A3E375 PUSH1 0xE1 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0xE70 SWAP2 DUP2 MSTORE PUSH1 0x20 ADD SWAP1 JUMP JUMPDEST PUSH2 0x2214 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP4 AND DUP6 PUSH0 PUSH2 0x3035 JUMP JUMPDEST POP PUSH2 0x2229 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP3 AND DUP6 PUSH0 PUSH2 0x3171 JUMP JUMPDEST POP DUP1 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP3 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH32 0xB0850B8E0F9E8315DDE3C9F9F31138283E6BBE16CD29E8552EB1DCDF9FAC9E3B DUP7 PUSH1 0x40 MLOAD PUSH2 0x226F SWAP2 DUP2 MSTORE PUSH1 0x20 ADD SWAP1 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 LOG3 POP SWAP2 SWAP5 SWAP4 POP POP POP POP JUMP JUMPDEST PUSH2 0x2289 PUSH2 0x4354 JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH2 0x400 DUP2 ADD SWAP2 DUP3 SWAP1 MSTORE PUSH0 DUP1 SLOAD PUSH1 0xFF AND DUP3 MSTORE SWAP1 SWAP2 PUSH1 0x20 SWAP1 DUP3 PUSH1 0x1 DUP4 DUP7 ADD DUP1 DUP5 GT PUSH2 0xDE9 JUMPI SWAP1 POP POP POP POP POP POP SWAP1 POP SWAP1 JUMP JUMPDEST PUSH0 PUSH0 JUMPDEST PUSH0 PUSH1 0x2 DUP3 PUSH1 0x20 DUP2 LT PUSH2 0x22D3 JUMPI PUSH2 0x22D3 PUSH2 0x4B46 JUMP JUMPDEST ADD SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND EQ DUP1 ISZERO SWAP1 PUSH2 0x22EC JUMPI POP PUSH1 0x20 DUP2 LT JUMPDEST ISZERO PUSH2 0x2333 JUMPI PUSH2 0x2317 PUSH1 0x2 DUP3 PUSH1 0x20 DUP2 LT PUSH2 0x2307 JUMPI PUSH2 0x2307 PUSH2 0x4B46 JUMP JUMPDEST ADD SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH2 0x2C30 JUMP JUMPDEST PUSH2 0x2321 SWAP1 DUP4 PUSH2 0x4BD1 JUMP JUMPDEST SWAP2 POP PUSH2 0x232C DUP2 PUSH2 0x4B71 JUMP JUMPDEST SWAP1 POP PUSH2 0x22BF JUMP JUMPDEST POP SWAP1 JUMP JUMPDEST PUSH0 PUSH2 0xA95 PUSH2 0x2343 PUSH2 0x8DA JUMP JUMPDEST PUSH2 0x234E SWAP1 PUSH1 0x1 PUSH2 0x4BD1 JUMP JUMPDEST PUSH2 0x2359 PUSH0 PUSH1 0xA PUSH2 0x4D7D JUMP JUMPDEST PUSH32 0x52C63247E1F47DB19D5CE0460030C497F067CA4CEBF71BA98EEADABE20BACE02 SLOAD PUSH2 0x2385 SWAP2 SWAP1 PUSH2 0x4BD1 JUMP JUMPDEST DUP6 SWAP2 SWAP1 DUP6 PUSH2 0x3292 JUMP JUMPDEST PUSH2 0x239B DUP4 DUP4 DUP4 PUSH1 0x1 PUSH2 0x32D4 JUMP JUMPDEST POP POP POP JUMP JUMPDEST PUSH0 PUSH2 0xA95 PUSH2 0x23AF DUP3 PUSH1 0xA PUSH2 0x4D7D JUMP JUMPDEST PUSH32 0x52C63247E1F47DB19D5CE0460030C497F067CA4CEBF71BA98EEADABE20BACE02 SLOAD PUSH2 0x23DB SWAP2 SWAP1 PUSH2 0x4BD1 JUMP JUMPDEST PUSH2 0x23E3 PUSH2 0x8DA JUMP JUMPDEST PUSH2 0x2385 SWAP1 PUSH1 0x1 PUSH2 0x4BD1 JUMP JUMPDEST PUSH0 PUSH1 0x1 PUSH1 0x1 PUSH1 0x80 SHL SUB DUP3 GT ISZERO PUSH2 0x2333 JUMPI PUSH1 0x40 MLOAD PUSH4 0x6DFCC65 PUSH1 0xE4 SHL DUP2 MSTORE PUSH1 0x80 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x24 DUP2 ADD DUP4 SWAP1 MSTORE PUSH1 0x44 ADD PUSH2 0xE70 JUMP JUMPDEST PUSH0 PUSH2 0x242C DUP5 DUP5 PUSH2 0x2048 JUMP JUMPDEST SWAP1 POP PUSH0 NOT DUP2 LT ISZERO PUSH2 0x246C JUMPI DUP2 DUP2 LT ISZERO PUSH2 0x245E JUMPI DUP3 DUP2 DUP4 PUSH1 0x40 MLOAD PUSH4 0x7DC7A0D9 PUSH1 0xE1 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0xE70 SWAP4 SWAP3 SWAP2 SWAP1 PUSH2 0x4BB0 JUMP JUMPDEST PUSH2 0x246C DUP5 DUP5 DUP5 DUP5 SUB PUSH0 PUSH2 0x32D4 JUMP JUMPDEST POP POP POP POP JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP4 AND PUSH2 0x249B JUMPI PUSH1 0x40 MLOAD PUSH4 0x4B637E8F PUSH1 0xE1 SHL DUP2 MSTORE PUSH0 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x24 ADD PUSH2 0xE70 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP3 AND PUSH2 0x24C4 JUMPI PUSH1 0x40 MLOAD PUSH4 0xEC442F05 PUSH1 0xE0 SHL DUP2 MSTORE PUSH0 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x24 ADD PUSH2 0xE70 JUMP JUMPDEST PUSH2 0x239B DUP4 DUP4 DUP4 PUSH2 0x33B7 JUMP JUMPDEST PUSH0 ADDRESS PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH4 0x3A7B7A39 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 GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x250C JUMPI RETURNDATASIZE PUSH0 PUSH0 RETURNDATACOPY RETURNDATASIZE PUSH0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP3 ADD DUP1 PUSH1 0x40 MSTORE POP DUP2 ADD SWAP1 PUSH2 0x2530 SWAP2 SWAP1 PUSH2 0x4D8B JUMP JUMPDEST SWAP1 POP PUSH0 DUP2 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH4 0xB7009613 CALLER ADDRESS PUSH2 0x254E DUP10 DUP10 PUSH2 0x11FD JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH1 0xE0 DUP6 SWAP1 SHL PUSH1 0x1 PUSH1 0x1 PUSH1 0xE0 SHL SUB NOT SWAP1 DUP2 AND DUP3 MSTORE PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP5 DUP6 AND PUSH1 0x4 DUP4 ADD MSTORE SWAP3 SWAP1 SWAP4 AND PUSH1 0x24 DUP5 ADD MSTORE AND PUSH1 0x44 DUP3 ADD MSTORE PUSH1 0x64 ADD PUSH1 0x40 DUP1 MLOAD DUP1 DUP4 SUB DUP2 DUP7 GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x25A0 JUMPI RETURNDATASIZE PUSH0 PUSH0 RETURNDATACOPY RETURNDATASIZE PUSH0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP3 ADD DUP1 PUSH1 0x40 MSTORE POP DUP2 ADD SWAP1 PUSH2 0x25C4 SWAP2 SWAP1 PUSH2 0x4DA6 JUMP JUMPDEST POP SWAP1 POP DUP1 PUSH2 0x25E6 JUMPI PUSH1 0x40 MLOAD PUSH3 0xD1953B PUSH1 0xE3 SHL DUP2 MSTORE CALLER PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x24 ADD PUSH2 0xE70 JUMP JUMPDEST POP POP POP POP POP JUMP JUMPDEST PUSH1 0x60 PUSH2 0xE91 DUP4 DUP4 PUSH1 0x40 MLOAD PUSH1 0x24 ADD PUSH2 0x2605 SWAP3 SWAP2 SWAP1 PUSH2 0x4DDB JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH1 0x1F NOT DUP2 DUP5 SUB ADD DUP2 MSTORE SWAP2 SWAP1 MSTORE PUSH1 0x20 DUP2 ADD DUP1 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xE0 SHL SUB AND PUSH4 0x4C0D8E1 PUSH1 0xE1 SHL OR SWAP1 MSTORE PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP7 AND SWAP1 PUSH2 0x34DD JUMP JUMPDEST PUSH0 PUSH0 PUSH0 JUMPDEST PUSH0 PUSH1 0x2 DUP3 PUSH1 0x20 DUP2 LT PUSH2 0x2657 JUMPI PUSH2 0x2657 PUSH2 0x4B46 JUMP JUMPDEST ADD SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND EQ DUP1 ISZERO SWAP1 PUSH2 0x2670 JUMPI POP PUSH1 0x20 DUP2 LT JUMPDEST ISZERO PUSH2 0x26CE JUMPI PUSH2 0x26AC DUP4 PUSH2 0x269F PUSH1 0x2 DUP5 PUSH1 0x20 DUP2 LT PUSH2 0x268F JUMPI PUSH2 0x268F PUSH2 0x4B46 JUMP JUMPDEST ADD SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH2 0x3007 JUMP JUMPDEST DUP2 ADD SWAP1 DUP2 LT ISZERO SWAP2 SWAP1 DUP3 MUL SWAP1 JUMP JUMPDEST SWAP4 POP SWAP2 POP DUP2 PUSH2 0x26BE JUMPI PUSH0 NOT SWAP3 POP POP POP SWAP1 JUMP JUMPDEST PUSH2 0x26C7 DUP2 PUSH2 0x4B71 JUMP JUMPDEST SWAP1 POP PUSH2 0x2643 JUMP JUMPDEST POP POP SWAP1 JUMP JUMPDEST DUP1 PUSH0 JUMPDEST DUP2 ISZERO DUP1 ISZERO SWAP1 PUSH2 0x270B JUMPI POP PUSH0 DUP2 PUSH1 0x20 DUP2 LT PUSH2 0x26F2 JUMPI PUSH2 0x26F2 PUSH2 0x4B46 JUMP JUMPDEST PUSH1 0x20 DUP2 DIV SWAP1 SWAP2 ADD SLOAD PUSH1 0xFF PUSH1 0x1F SWAP1 SWAP3 AND PUSH2 0x100 EXP SWAP1 DIV AND ISZERO ISZERO JUMPDEST DUP1 ISZERO PUSH2 0x2717 JUMPI POP PUSH1 0x20 DUP2 LT JUMPDEST ISZERO PUSH2 0x27CA JUMPI PUSH0 PUSH1 0x2 PUSH1 0x1 PUSH0 DUP5 PUSH1 0x20 DUP2 LT PUSH2 0x2733 JUMPI PUSH2 0x2733 PUSH2 0x4B46 JUMP JUMPDEST PUSH1 0x20 SWAP2 DUP3 DUP3 DIV ADD SWAP2 SWAP1 MOD SWAP1 SLOAD SWAP1 PUSH2 0x100 EXP SWAP1 DIV PUSH1 0xFF AND PUSH2 0x2753 SWAP2 SWAP1 PUSH2 0x4C63 JUMP JUMPDEST PUSH1 0xFF AND PUSH1 0x20 DUP2 LT PUSH2 0x2766 JUMPI PUSH2 0x2766 PUSH2 0x4B46 JUMP JUMPDEST ADD SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND SWAP1 POP PUSH0 PUSH2 0x2786 DUP5 PUSH2 0x2781 DUP5 PUSH2 0x3007 JUMP JUMPDEST PUSH2 0x357D JUMP JUMPDEST SWAP1 POP DUP1 PUSH0 SUB PUSH2 0x2796 JUMPI POP POP PUSH2 0x27BA JUMP JUMPDEST PUSH2 0x27AA PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP4 AND DUP3 PUSH0 PUSH2 0x3171 JUMP JUMPDEST POP PUSH2 0x27B5 DUP2 DUP6 PUSH2 0x4C50 JUMP JUMPDEST SWAP4 POP POP POP JUMPDEST PUSH2 0x27C3 DUP2 PUSH2 0x4B71 JUMP JUMPDEST SWAP1 POP PUSH2 0x26D6 JUMP JUMPDEST POP DUP1 ISZERO PUSH2 0xD38 JUMPI PUSH1 0x40 MLOAD PUSH4 0x285A546D PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST ADDRESS PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB PUSH32 0x0 AND EQ DUP1 PUSH2 0x2870 JUMPI POP PUSH32 0x0 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH2 0x2864 PUSH0 MLOAD PUSH1 0x20 PUSH2 0x4FB9 PUSH0 CODECOPY PUSH0 MLOAD SWAP1 PUSH0 MSTORE SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND SWAP1 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND EQ ISZERO JUMPDEST ISZERO PUSH2 0x288E JUMPI PUSH1 0x40 MLOAD PUSH4 0x703E46DD PUSH1 0xE1 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST JUMP JUMPDEST DUP2 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH4 0x52D1902D 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 GAS STATICCALL SWAP3 POP POP POP DUP1 ISZERO PUSH2 0x28EA JUMPI POP PUSH1 0x40 DUP1 MLOAD PUSH1 0x1F RETURNDATASIZE SWAP1 DUP2 ADD PUSH1 0x1F NOT AND DUP3 ADD SWAP1 SWAP3 MSTORE PUSH2 0x28E7 SWAP2 DUP2 ADD SWAP1 PUSH2 0x4B5A JUMP JUMPDEST PUSH1 0x1 JUMPDEST PUSH2 0x2912 JUMPI PUSH1 0x40 MLOAD PUSH4 0x4C9C8CE3 PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP4 AND PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x24 ADD PUSH2 0xE70 JUMP JUMPDEST PUSH0 MLOAD PUSH1 0x20 PUSH2 0x4FB9 PUSH0 CODECOPY PUSH0 MLOAD SWAP1 PUSH0 MSTORE DUP2 EQ PUSH2 0x2942 JUMPI PUSH1 0x40 MLOAD PUSH4 0x2A875269 PUSH1 0xE2 SHL DUP2 MSTORE PUSH1 0x4 DUP2 ADD DUP3 SWAP1 MSTORE PUSH1 0x24 ADD PUSH2 0xE70 JUMP JUMPDEST PUSH2 0x239B DUP4 DUP4 PUSH2 0x358C JUMP JUMPDEST ADDRESS PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB PUSH32 0x0 AND EQ PUSH2 0x288E JUMPI PUSH1 0x40 MLOAD PUSH4 0x703E46DD PUSH1 0xE1 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH0 MLOAD PUSH1 0x20 PUSH2 0x4F79 PUSH0 CODECOPY PUSH0 MLOAD SWAP1 PUSH0 MSTORE DUP1 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0x80 SHL SUB AND ISZERO PUSH2 0x29ED JUMPI PUSH0 PUSH2 0x29BC PUSH2 0x35E1 JUMP JUMPDEST SWAP1 POP PUSH2 0x29C7 DUP5 PUSH2 0x3613 JUMP JUMPDEST PUSH0 DUP3 DUP2 MSTORE PUSH1 0x1 DUP5 ADD PUSH1 0x20 MSTORE PUSH1 0x40 DUP2 KECCAK256 DUP1 SLOAD SWAP1 SWAP2 SWAP1 PUSH2 0x29E6 SWAP1 DUP5 SWAP1 PUSH2 0x4B89 JUMP JUMPDEST SWAP1 SWAP2 SSTORE POP POP POP JUMPDEST PUSH2 0x25E6 DUP6 DUP6 DUP6 DUP6 PUSH2 0x363F JUMP JUMPDEST PUSH0 PUSH2 0x8E3 PUSH2 0xADE JUMP JUMPDEST PUSH2 0x2A0C DUP5 DUP4 PUSH2 0x2B50 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH4 0xF3E0FFBF PUSH1 0xE0 SHL DUP2 MSTORE ADDRESS PUSH1 0x4 DUP3 ADD MSTORE PUSH2 0x2A7E SWAP1 DUP7 SWAP1 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP3 AND SWAP1 PUSH4 0xF3E0FFBF SWAP1 PUSH1 0x24 ADD PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x2A54 JUMPI RETURNDATASIZE PUSH0 PUSH0 RETURNDATACOPY RETURNDATASIZE PUSH0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP3 ADD DUP1 PUSH1 0x40 MSTORE POP DUP2 ADD SWAP1 PUSH2 0x2A78 SWAP2 SWAP1 PUSH2 0x4B5A JUMP JUMPDEST DUP4 PUSH2 0x3035 JUMP JUMPDEST POP PUSH2 0x2A89 DUP6 DUP3 PUSH2 0x2C99 JUMP JUMPDEST PUSH2 0x2A93 DUP5 DUP5 PUSH2 0x2BE2 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH4 0x70A08231 PUSH1 0xE0 SHL DUP2 MSTORE ADDRESS PUSH1 0x4 DUP3 ADD MSTORE PUSH2 0x2B05 SWAP1 DUP6 SWAP1 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP6 AND SWAP1 PUSH4 0x70A08231 SWAP1 PUSH1 0x24 ADD PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x2ADB JUMPI RETURNDATASIZE PUSH0 PUSH0 RETURNDATACOPY RETURNDATASIZE PUSH0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP3 ADD DUP1 PUSH1 0x40 MSTORE POP DUP2 ADD SWAP1 PUSH2 0x2AFF SWAP2 SWAP1 PUSH2 0x4B5A JUMP JUMPDEST DUP4 PUSH2 0x3171 JUMP JUMPDEST POP PUSH1 0x40 DUP1 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP1 DUP9 AND DUP3 MSTORE DUP7 AND PUSH1 0x20 DUP3 ADD MSTORE PUSH32 0x254C88E7A2EA123AEEB89B7CC413FB949188FEFCDB7584C4F3D493294DAF65C5 SWAP2 ADD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 LOG1 POP POP POP POP POP JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH4 0x4E2333D1 PUSH1 0xE1 SHL DUP2 MSTORE ADDRESS PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP1 DUP4 AND SWAP2 SWAP1 DUP5 AND SWAP1 PUSH4 0x9C4667A2 SWAP1 PUSH1 0x24 ADD PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x2B97 JUMPI RETURNDATASIZE PUSH0 PUSH0 RETURNDATACOPY RETURNDATASIZE PUSH0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP3 ADD DUP1 PUSH1 0x40 MSTORE POP DUP2 ADD SWAP1 PUSH2 0x2BBB SWAP2 SWAP1 PUSH2 0x4D8B JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND EQ PUSH2 0xD38 JUMPI PUSH1 0x40 MLOAD PUSH4 0xE76673EF PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH2 0x239B DUP2 PUSH1 0x40 MLOAD PUSH1 0x24 ADD PUSH2 0x2BF6 SWAP2 SWAP1 PUSH2 0x43A1 JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH1 0x1F NOT DUP2 DUP5 SUB ADD DUP2 MSTORE SWAP2 SWAP1 MSTORE PUSH1 0x20 DUP2 ADD DUP1 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xE0 SHL SUB AND PUSH4 0x139A8E25 PUSH1 0xE3 SHL OR SWAP1 MSTORE PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP5 AND SWAP1 PUSH2 0x34DD JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH4 0xF3E0FFBF PUSH1 0xE0 SHL DUP2 MSTORE ADDRESS PUSH1 0x4 DUP3 ADD MSTORE PUSH0 SWAP1 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP4 AND SWAP1 PUSH4 0xF3E0FFBF SWAP1 PUSH1 0x24 ADD JUMPDEST PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x2C75 JUMPI RETURNDATASIZE PUSH0 PUSH0 RETURNDATACOPY RETURNDATASIZE PUSH0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP3 ADD DUP1 PUSH1 0x40 MSTORE POP DUP2 ADD SWAP1 PUSH2 0x9B3 SWAP2 SWAP1 PUSH2 0x4B5A JUMP JUMPDEST DUP1 ISZERO PUSH2 0x2D74 JUMPI PUSH1 0x40 MLOAD PUSH1 0x1 PUSH1 0x24 DUP3 ADD MSTORE PUSH0 SWAP1 DUP2 SWAP1 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP6 AND SWAP1 PUSH1 0x44 ADD PUSH1 0x40 DUP1 MLOAD PUSH1 0x1F NOT DUP2 DUP5 SUB ADD DUP2 MSTORE SWAP2 DUP2 MSTORE PUSH1 0x20 DUP3 ADD DUP1 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xE0 SHL SUB AND PUSH4 0x2D08BA2B PUSH1 0xE1 SHL OR SWAP1 MSTORE MLOAD PUSH2 0x2CF0 SWAP2 SWAP1 PUSH2 0x4DF6 JUMP JUMPDEST PUSH0 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP6 GAS DELEGATECALL SWAP2 POP POP RETURNDATASIZE DUP1 PUSH0 DUP2 EQ PUSH2 0x2D28 JUMPI PUSH1 0x40 MLOAD SWAP2 POP PUSH1 0x1F NOT PUSH1 0x3F RETURNDATASIZE ADD AND DUP3 ADD PUSH1 0x40 MSTORE RETURNDATASIZE DUP3 MSTORE RETURNDATASIZE PUSH0 PUSH1 0x20 DUP5 ADD RETURNDATACOPY PUSH2 0x2D2D JUMP JUMPDEST PUSH1 0x60 SWAP2 POP JUMPDEST POP SWAP2 POP SWAP2 POP DUP2 PUSH2 0x246C JUMPI PUSH32 0x9F864ACE9F45C2734F9444CB9A0C1ADE6F1B15A8C202C17175B759728A4A0BF8 DUP2 PUSH1 0x40 MLOAD PUSH2 0x2D66 SWAP2 SWAP1 PUSH2 0x43A1 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 LOG1 POP POP POP POP JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH0 PUSH1 0x24 DUP3 ADD MSTORE PUSH2 0x239B SWAP1 PUSH1 0x44 ADD PUSH1 0x40 DUP1 MLOAD PUSH1 0x1F NOT DUP2 DUP5 SUB ADD DUP2 MSTORE SWAP2 SWAP1 MSTORE PUSH1 0x20 DUP2 ADD DUP1 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xE0 SHL SUB AND PUSH4 0x2D08BA2B PUSH1 0xE1 SHL OR SWAP1 MSTORE PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP5 AND SWAP1 PUSH2 0x34DD JUMP JUMPDEST PUSH0 DUP1 PUSH32 0xF0C57E16840DF040F15088DC2F81FE391C3923BEC73E23A9662EFC9C229C6A00 PUSH2 0x9B3 JUMP JUMPDEST PUSH2 0x2DEE PUSH2 0x3654 JUMP JUMPDEST PUSH2 0x2DF7 DUP6 PUSH2 0x3679 JUMP JUMPDEST PUSH2 0x2E01 DUP8 DUP8 PUSH2 0x368A JUMP JUMPDEST PUSH2 0x2E0D DUP5 DUP5 DUP5 DUP5 PUSH2 0x369C JUMP JUMPDEST POP POP POP POP POP POP POP JUMP JUMPDEST PUSH0 MLOAD PUSH1 0x20 PUSH2 0x4F79 PUSH0 CODECOPY PUSH0 MLOAD SWAP1 PUSH0 MSTORE DUP1 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0x80 SHL SUB AND ISZERO PUSH2 0x2F18 JUMPI PUSH0 PUSH2 0x2E3D PUSH2 0x35E1 JUMP JUMPDEST SWAP1 POP PUSH0 PUSH2 0x2E4B PUSH1 0x1 DUP4 PUSH2 0x4C50 JUMP JUMPDEST PUSH0 DUP2 DUP2 MSTORE PUSH1 0x1 DUP6 ADD PUSH1 0x20 MSTORE PUSH1 0x40 DUP1 DUP3 KECCAK256 SLOAD DUP6 DUP4 MSTORE SWAP1 DUP3 KECCAK256 SLOAD SWAP3 SWAP4 POP SWAP1 SWAP2 PUSH2 0x2E71 DUP9 PUSH2 0x4E0C JUMP JUMPDEST PUSH2 0x2E7B SWAP2 SWAP1 PUSH2 0x4B89 JUMP JUMPDEST PUSH2 0x2E85 SWAP2 SWAP1 PUSH2 0x4B89 JUMP JUMPDEST SWAP1 POP PUSH0 DUP2 SLT DUP1 ISZERO PUSH2 0x2EAE JUMPI POP DUP4 SLOAD PUSH1 0x1 PUSH1 0x80 SHL SWAP1 DIV PUSH1 0x1 PUSH1 0x1 PUSH1 0x80 SHL SUB AND PUSH2 0x2EAC DUP3 PUSH2 0x4E0C JUMP JUMPDEST GT JUMPDEST ISZERO PUSH2 0x2EE7 JUMPI DUP4 SLOAD PUSH1 0x40 MLOAD PUSH4 0xCC9A5053 PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 DUP2 ADD DUP4 SWAP1 MSTORE PUSH1 0x1 PUSH1 0x80 SHL SWAP1 SWAP2 DIV PUSH1 0x1 PUSH1 0x1 PUSH1 0x80 SHL SUB AND PUSH1 0x24 DUP3 ADD MSTORE PUSH1 0x44 ADD PUSH2 0xE70 JUMP JUMPDEST PUSH2 0x2EF0 DUP7 PUSH2 0x3613 JUMP JUMPDEST PUSH0 DUP5 DUP2 MSTORE PUSH1 0x1 DUP7 ADD PUSH1 0x20 MSTORE PUSH1 0x40 DUP2 KECCAK256 DUP1 SLOAD SWAP1 SWAP2 SWAP1 PUSH2 0x2F0F SWAP1 DUP5 SWAP1 PUSH2 0x4E26 JUMP JUMPDEST SWAP1 SWAP2 SSTORE POP POP POP POP POP JUMPDEST PUSH2 0x2F25 DUP7 DUP7 DUP7 DUP7 DUP7 PUSH2 0x3C1D JUMP JUMPDEST POP POP POP POP POP POP JUMP JUMPDEST PUSH0 PUSH2 0x9B3 PUSH2 0x30B DUP4 PUSH2 0x1FBD JUMP JUMPDEST PUSH0 PUSH0 PUSH0 JUMPDEST PUSH0 PUSH1 0x2 DUP3 PUSH1 0x20 DUP2 LT PUSH2 0x2F52 JUMPI PUSH2 0x2F52 PUSH2 0x4B46 JUMP JUMPDEST ADD SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND EQ DUP1 ISZERO SWAP1 PUSH2 0x2F6B JUMPI POP PUSH1 0x20 DUP2 LT JUMPDEST ISZERO PUSH2 0x2FC8 JUMPI PUSH2 0x2F9A DUP4 PUSH2 0x269F PUSH1 0x2 DUP5 PUSH1 0x20 DUP2 LT PUSH2 0x2F8A JUMPI PUSH2 0x2F8A PUSH2 0x4B46 JUMP JUMPDEST ADD SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH2 0x2FD9 JUMP JUMPDEST SWAP4 POP SWAP2 POP DUP2 ISZERO DUP1 PUSH2 0x2FAB JUMPI POP DUP4 DUP4 LT ISZERO JUMPDEST ISZERO PUSH2 0x2FB8 JUMPI POP SWAP2 SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH2 0x2FC1 DUP2 PUSH2 0x4B71 JUMP JUMPDEST SWAP1 POP PUSH2 0x2F3E JUMP JUMPDEST POP POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH0 PUSH2 0x9B3 DUP3 PUSH2 0xE99 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH4 0xCE96CB77 PUSH1 0xE0 SHL DUP2 MSTORE ADDRESS PUSH1 0x4 DUP3 ADD MSTORE PUSH0 SWAP1 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP4 AND SWAP1 PUSH4 0xCE96CB77 SWAP1 PUSH1 0x24 ADD PUSH2 0x2C5A JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH4 0x402D267D PUSH1 0xE0 SHL DUP2 MSTORE ADDRESS PUSH1 0x4 DUP3 ADD MSTORE PUSH0 SWAP1 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP4 AND SWAP1 PUSH4 0x402D267D SWAP1 PUSH1 0x24 ADD PUSH2 0x2C5A JUMP JUMPDEST PUSH0 DUP2 ISZERO PUSH2 0x3117 JUMPI PUSH0 PUSH0 DUP6 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP6 PUSH1 0x40 MLOAD PUSH1 0x24 ADD PUSH2 0x305B SWAP2 DUP2 MSTORE PUSH1 0x20 ADD SWAP1 JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH1 0x1F NOT DUP2 DUP5 SUB ADD DUP2 MSTORE SWAP2 DUP2 MSTORE PUSH1 0x20 DUP3 ADD DUP1 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xE0 SHL SUB AND PUSH4 0x2E1A7D4D PUSH1 0xE0 SHL OR SWAP1 MSTORE MLOAD PUSH2 0x3090 SWAP2 SWAP1 PUSH2 0x4DF6 JUMP JUMPDEST PUSH0 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP6 GAS DELEGATECALL SWAP2 POP POP RETURNDATASIZE DUP1 PUSH0 DUP2 EQ PUSH2 0x30C8 JUMPI PUSH1 0x40 MLOAD SWAP2 POP PUSH1 0x1F NOT PUSH1 0x3F RETURNDATASIZE ADD AND DUP3 ADD PUSH1 0x40 MSTORE RETURNDATASIZE DUP3 MSTORE RETURNDATASIZE PUSH0 PUSH1 0x20 DUP5 ADD RETURNDATACOPY PUSH2 0x30CD JUMP JUMPDEST PUSH1 0x60 SWAP2 POP JUMPDEST POP SWAP2 POP SWAP2 POP DUP2 PUSH2 0x310F JUMPI PUSH32 0xAD0AD28A12A6ED800F1A7B398454913AFE6826C175E6CC28F2E8E2C175B0D728 DUP2 PUSH1 0x40 MLOAD PUSH2 0x3106 SWAP2 SWAP1 PUSH2 0x43A1 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 LOG1 JUMPDEST POP SWAP1 POP PUSH2 0xA95 JUMP JUMPDEST PUSH2 0x3167 DUP4 PUSH1 0x40 MLOAD PUSH1 0x24 ADD PUSH2 0x312D SWAP2 DUP2 MSTORE PUSH1 0x20 ADD SWAP1 JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH1 0x1F NOT DUP2 DUP5 SUB ADD DUP2 MSTORE SWAP2 SWAP1 MSTORE PUSH1 0x20 DUP2 ADD DUP1 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xE0 SHL SUB AND PUSH4 0x2E1A7D4D PUSH1 0xE0 SHL OR SWAP1 MSTORE PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP7 AND SWAP1 PUSH2 0x34DD JUMP JUMPDEST POP PUSH1 0x1 SWAP1 POP PUSH2 0xA95 JUMP JUMPDEST PUSH0 DUP2 ISZERO PUSH2 0x3242 JUMPI PUSH0 PUSH0 DUP6 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP6 PUSH1 0x40 MLOAD PUSH1 0x24 ADD PUSH2 0x3197 SWAP2 DUP2 MSTORE PUSH1 0x20 ADD SWAP1 JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH1 0x1F NOT DUP2 DUP5 SUB ADD DUP2 MSTORE SWAP2 DUP2 MSTORE PUSH1 0x20 DUP3 ADD DUP1 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xE0 SHL SUB AND PUSH4 0xB6B55F25 PUSH1 0xE0 SHL OR SWAP1 MSTORE MLOAD PUSH2 0x31CC SWAP2 SWAP1 PUSH2 0x4DF6 JUMP JUMPDEST PUSH0 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP6 GAS DELEGATECALL SWAP2 POP POP RETURNDATASIZE DUP1 PUSH0 DUP2 EQ PUSH2 0x3204 JUMPI PUSH1 0x40 MLOAD SWAP2 POP PUSH1 0x1F NOT PUSH1 0x3F RETURNDATASIZE ADD AND DUP3 ADD PUSH1 0x40 MSTORE RETURNDATASIZE DUP3 MSTORE RETURNDATASIZE PUSH0 PUSH1 0x20 DUP5 ADD RETURNDATACOPY PUSH2 0x3209 JUMP JUMPDEST PUSH1 0x60 SWAP2 POP JUMPDEST POP SWAP2 POP SWAP2 POP DUP2 PUSH2 0x310F JUMPI PUSH32 0xF8E68F23D3B33772E986CC9861E94E8FD6B9461D62BC1FB21CD754BBAF726BD3 DUP2 PUSH1 0x40 MLOAD PUSH2 0x3106 SWAP2 SWAP1 PUSH2 0x43A1 JUMP JUMPDEST PUSH2 0x3167 DUP4 PUSH1 0x40 MLOAD PUSH1 0x24 ADD PUSH2 0x3258 SWAP2 DUP2 MSTORE PUSH1 0x20 ADD SWAP1 JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH1 0x1F NOT DUP2 DUP5 SUB ADD DUP2 MSTORE SWAP2 SWAP1 MSTORE PUSH1 0x20 DUP2 ADD DUP1 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xE0 SHL SUB AND PUSH4 0xB6B55F25 PUSH1 0xE0 SHL OR SWAP1 MSTORE PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP7 AND SWAP1 PUSH2 0x34DD JUMP JUMPDEST PUSH0 PUSH2 0x32BF PUSH2 0x329F DUP4 PUSH2 0x3C33 JUMP JUMPDEST DUP1 ISZERO PUSH2 0x32BA JUMPI POP PUSH0 DUP5 DUP1 PUSH2 0x32B5 JUMPI PUSH2 0x32B5 PUSH2 0x4BE4 JUMP JUMPDEST DUP7 DUP9 MULMOD GT JUMPDEST ISZERO ISZERO SWAP1 JUMP JUMPDEST PUSH2 0x32CA DUP7 DUP7 DUP7 PUSH2 0x3C5F JUMP JUMPDEST PUSH2 0xB88 SWAP2 SWAP1 PUSH2 0x4BD1 JUMP JUMPDEST PUSH0 MLOAD PUSH1 0x20 PUSH2 0x4F99 PUSH0 CODECOPY PUSH0 MLOAD SWAP1 PUSH0 MSTORE PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP6 AND PUSH2 0x330B JUMPI PUSH1 0x40 MLOAD PUSH4 0xE602DF05 PUSH1 0xE0 SHL DUP2 MSTORE PUSH0 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x24 ADD PUSH2 0xE70 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP5 AND PUSH2 0x3334 JUMPI PUSH1 0x40 MLOAD PUSH4 0x4A1406B1 PUSH1 0xE1 SHL DUP2 MSTORE PUSH0 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x24 ADD PUSH2 0xE70 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP1 DUP7 AND PUSH0 SWAP1 DUP2 MSTORE PUSH1 0x1 DUP4 ADD PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x40 DUP1 DUP4 KECCAK256 SWAP4 DUP9 AND DUP4 MSTORE SWAP3 SWAP1 MSTORE KECCAK256 DUP4 SWAP1 SSTORE DUP2 ISZERO PUSH2 0x25E6 JUMPI DUP4 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP6 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH32 0x8C5BE1E5EBEC7D5BD14F71427D1E84F3DD0314C0F7B2291E5B200AC8C7C3B925 DUP6 PUSH1 0x40 MLOAD PUSH2 0x33A8 SWAP2 DUP2 MSTORE PUSH1 0x20 ADD SWAP1 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 LOG3 POP POP POP POP POP JUMP JUMPDEST PUSH0 MLOAD PUSH1 0x20 PUSH2 0x4F99 PUSH0 CODECOPY PUSH0 MLOAD SWAP1 PUSH0 MSTORE PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP5 AND PUSH2 0x33F1 JUMPI DUP2 DUP2 PUSH1 0x2 ADD PUSH0 DUP3 DUP3 SLOAD PUSH2 0x33E6 SWAP2 SWAP1 PUSH2 0x4BD1 JUMP JUMPDEST SWAP1 SWAP2 SSTORE POP PUSH2 0x344E SWAP1 POP JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP5 AND PUSH0 SWAP1 DUP2 MSTORE PUSH1 0x20 DUP3 SWAP1 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD DUP3 DUP2 LT ISZERO PUSH2 0x3430 JUMPI DUP5 DUP2 DUP5 PUSH1 0x40 MLOAD PUSH4 0x391434E3 PUSH1 0xE2 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0xE70 SWAP4 SWAP3 SWAP2 SWAP1 PUSH2 0x4BB0 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP6 AND PUSH0 SWAP1 DUP2 MSTORE PUSH1 0x20 DUP4 SWAP1 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SWAP1 DUP4 SWAP1 SUB SWAP1 SSTORE JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP4 AND PUSH2 0x346C JUMPI PUSH1 0x2 DUP2 ADD DUP1 SLOAD DUP4 SWAP1 SUB SWAP1 SSTORE PUSH2 0x348A JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP4 AND PUSH0 SWAP1 DUP2 MSTORE PUSH1 0x20 DUP3 SWAP1 MSTORE PUSH1 0x40 SWAP1 KECCAK256 DUP1 SLOAD DUP4 ADD SWAP1 SSTORE JUMPDEST DUP3 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP5 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH32 0xDDF252AD1BE2C89B69C2B068FC378DAA952BA7F163C4A11628F55A4DF523B3EF DUP5 PUSH1 0x40 MLOAD PUSH2 0x34CF SWAP2 DUP2 MSTORE PUSH1 0x20 ADD SWAP1 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 LOG3 POP POP POP POP JUMP JUMPDEST PUSH1 0x60 PUSH0 PUSH2 0x34EA DUP5 DUP5 PUSH2 0x3D0F JUMP JUMPDEST SWAP1 POP DUP1 DUP1 ISZERO PUSH2 0x350B JUMPI POP PUSH0 RETURNDATASIZE GT DUP1 PUSH2 0x350B JUMPI POP PUSH0 DUP5 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND EXTCODESIZE GT JUMPDEST ISZERO PUSH2 0x3520 JUMPI PUSH2 0x3518 PUSH2 0x3D22 JUMP JUMPDEST SWAP2 POP POP PUSH2 0x9B3 JUMP JUMPDEST DUP1 ISZERO PUSH2 0x354A JUMPI PUSH1 0x40 MLOAD PUSH4 0x9996B315 PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP6 AND PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x24 ADD PUSH2 0xE70 JUMP JUMPDEST RETURNDATASIZE ISZERO PUSH2 0x355D JUMPI PUSH2 0x3558 PUSH2 0x3D3B JUMP JUMPDEST PUSH2 0x3576 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH4 0xD6BDA275 PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH0 DUP3 DUP3 XOR DUP3 DUP5 LT MUL DUP3 XOR PUSH2 0xA95 JUMP JUMPDEST PUSH2 0x3595 DUP3 PUSH2 0x3D46 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP4 AND SWAP1 PUSH32 0xBC7CD75A20EE27FD9ADEBAB32041F755214DBC6BFFA90CC0225B39DA2E5C2D3B SWAP1 PUSH0 SWAP1 LOG2 DUP1 MLOAD ISZERO PUSH2 0x35D9 JUMPI PUSH2 0x239B DUP3 DUP3 PUSH2 0x34DD JUMP JUMPDEST PUSH2 0xD38 PUSH2 0x3DA9 JUMP JUMPDEST PUSH0 MLOAD PUSH1 0x20 PUSH2 0x4F79 PUSH0 CODECOPY PUSH0 MLOAD SWAP1 PUSH0 MSTORE SLOAD PUSH0 SWAP1 PUSH1 0x1 PUSH1 0x1 PUSH1 0x80 SHL SUB AND PUSH2 0x3605 DUP2 TIMESTAMP PUSH2 0x4BF8 JUMP JUMPDEST PUSH2 0xAD8 SWAP1 PUSH1 0x80 DUP4 SWAP1 SHL PUSH2 0x4BD1 JUMP JUMPDEST PUSH0 PUSH1 0x1 PUSH1 0x1 PUSH1 0xFF SHL SUB DUP3 GT ISZERO PUSH2 0x2333 JUMPI PUSH1 0x40 MLOAD PUSH4 0x123BAF03 PUSH1 0xE1 SHL DUP2 MSTORE PUSH1 0x4 DUP2 ADD DUP4 SWAP1 MSTORE PUSH1 0x24 ADD PUSH2 0xE70 JUMP JUMPDEST PUSH2 0x364B DUP5 DUP5 DUP5 DUP5 PUSH2 0x3DC8 JUMP JUMPDEST PUSH2 0x246C DUP3 PUSH2 0x26D3 JUMP JUMPDEST PUSH2 0x365C PUSH2 0x3E33 JUMP JUMPDEST PUSH2 0x288E JUMPI PUSH1 0x40 MLOAD PUSH4 0x1AFCD79F PUSH1 0xE3 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH2 0x3681 PUSH2 0x3654 JUMP JUMPDEST PUSH2 0xBA3 DUP2 PUSH2 0x3E4C JUMP JUMPDEST PUSH2 0x3692 PUSH2 0x3654 JUMP JUMPDEST PUSH2 0xD38 DUP3 DUP3 PUSH2 0x3ECF JUMP JUMPDEST DUP4 MLOAD ISZERO DUP1 PUSH2 0x36AB JUMPI POP DUP4 MLOAD PUSH1 0x20 LT JUMPDEST DUP1 PUSH2 0x36B8 JUMPI POP DUP3 MLOAD DUP5 MLOAD EQ ISZERO JUMPDEST DUP1 PUSH2 0x36C5 JUMPI POP DUP2 MLOAD DUP5 MLOAD EQ ISZERO JUMPDEST DUP1 PUSH2 0x36D2 JUMPI POP DUP1 MLOAD DUP5 MLOAD EQ ISZERO JUMPDEST ISZERO PUSH2 0x36F3 JUMPI PUSH1 0x40 MLOAD PUSH1 0x1 PUSH3 0xAD1FAB PUSH1 0xE0 SHL SUB NOT DUP2 MSTORE PUSH1 0x4 ADD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH2 0x36FB PUSH2 0x4354 JUMP JUMPDEST PUSH2 0x3703 PUSH2 0x4354 JUMP JUMPDEST PUSH0 JUMPDEST DUP7 MLOAD DUP2 LT ISZERO PUSH2 0x3BA6 JUMPI PUSH0 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP8 DUP3 DUP2 MLOAD DUP2 LT PUSH2 0x372A JUMPI PUSH2 0x372A PUSH2 0x4B46 JUMP JUMPDEST PUSH1 0x20 MUL PUSH1 0x20 ADD ADD MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND SUB PUSH2 0x3759 JUMPI PUSH1 0x40 MLOAD PUSH4 0x2711B74D PUSH1 0xE1 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH2 0x3795 PUSH2 0x3764 PUSH2 0x29F9 JUMP JUMPDEST DUP9 DUP4 DUP2 MLOAD DUP2 LT PUSH2 0x3776 JUMPI PUSH2 0x3776 PUSH2 0x4B46 JUMP JUMPDEST PUSH1 0x20 MUL PUSH1 0x20 ADD ADD MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH2 0x2B50 SWAP1 SWAP2 SWAP1 PUSH4 0xFFFFFFFF AND JUMP JUMPDEST PUSH0 JUMPDEST DUP2 DUP2 LT ISZERO PUSH2 0x3835 JUMPI DUP8 DUP2 DUP2 MLOAD DUP2 LT PUSH2 0x37B1 JUMPI PUSH2 0x37B1 PUSH2 0x4B46 JUMP JUMPDEST PUSH1 0x20 MUL PUSH1 0x20 ADD ADD MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP9 DUP4 DUP2 MLOAD DUP2 LT PUSH2 0x37D4 JUMPI PUSH2 0x37D4 PUSH2 0x4B46 JUMP JUMPDEST PUSH1 0x20 MUL PUSH1 0x20 ADD ADD MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND SUB PUSH2 0x382D JUMPI DUP8 DUP3 DUP2 MLOAD DUP2 LT PUSH2 0x37FC JUMPI PUSH2 0x37FC PUSH2 0x4B46 JUMP JUMPDEST PUSH1 0x20 MUL PUSH1 0x20 ADD ADD MLOAD PUSH1 0x40 MLOAD PUSH4 0xB5A9314F PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0xE70 SWAP2 SWAP1 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP2 SWAP1 SWAP2 AND DUP2 MSTORE PUSH1 0x20 ADD SWAP1 JUMP JUMPDEST PUSH1 0x1 ADD PUSH2 0x3797 JUMP JUMPDEST POP DUP7 MLOAD DUP6 DUP3 DUP2 MLOAD DUP2 LT PUSH2 0x384A JUMPI PUSH2 0x384A PUSH2 0x4B46 JUMP JUMPDEST PUSH1 0x20 MUL PUSH1 0x20 ADD ADD MLOAD PUSH1 0xFF AND LT ISZERO DUP1 PUSH2 0x3891 JUMPI POP DUP3 DUP6 DUP3 DUP2 MLOAD DUP2 LT PUSH2 0x3870 JUMPI PUSH2 0x3870 PUSH2 0x4B46 JUMP JUMPDEST PUSH1 0x20 MUL PUSH1 0x20 ADD ADD MLOAD PUSH1 0xFF AND PUSH1 0x20 DUP2 LT PUSH2 0x388B JUMPI PUSH2 0x388B PUSH2 0x4B46 JUMP JUMPDEST PUSH1 0x20 MUL ADD MLOAD JUMPDEST ISZERO PUSH2 0x38D3 JUMPI DUP5 DUP2 DUP2 MLOAD DUP2 LT PUSH2 0x38A8 JUMPI PUSH2 0x38A8 PUSH2 0x4B46 JUMP JUMPDEST PUSH1 0x20 MUL PUSH1 0x20 ADD ADD MLOAD PUSH1 0x40 MLOAD PUSH4 0x306CCD5D PUSH1 0xE1 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0xE70 SWAP2 SWAP1 PUSH1 0xFF SWAP2 SWAP1 SWAP2 AND DUP2 MSTORE PUSH1 0x20 ADD SWAP1 JUMP JUMPDEST DUP7 MLOAD DUP5 DUP3 DUP2 MLOAD DUP2 LT PUSH2 0x38E7 JUMPI PUSH2 0x38E7 PUSH2 0x4B46 JUMP JUMPDEST PUSH1 0x20 MUL PUSH1 0x20 ADD ADD MLOAD PUSH1 0xFF AND LT ISZERO DUP1 PUSH2 0x392E JUMPI POP DUP2 DUP5 DUP3 DUP2 MLOAD DUP2 LT PUSH2 0x390D JUMPI PUSH2 0x390D PUSH2 0x4B46 JUMP JUMPDEST PUSH1 0x20 MUL PUSH1 0x20 ADD ADD MLOAD PUSH1 0xFF AND PUSH1 0x20 DUP2 LT PUSH2 0x3928 JUMPI PUSH2 0x3928 PUSH2 0x4B46 JUMP JUMPDEST PUSH1 0x20 MUL ADD MLOAD JUMPDEST ISZERO PUSH2 0x3970 JUMPI DUP4 DUP2 DUP2 MLOAD DUP2 LT PUSH2 0x3945 JUMPI PUSH2 0x3945 PUSH2 0x4B46 JUMP JUMPDEST PUSH1 0x20 MUL PUSH1 0x20 ADD ADD MLOAD PUSH1 0x40 MLOAD PUSH4 0x27769241 PUSH1 0xE1 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0xE70 SWAP2 SWAP1 PUSH1 0xFF SWAP2 SWAP1 SWAP2 AND DUP2 MSTORE PUSH1 0x20 ADD SWAP1 JUMP JUMPDEST PUSH1 0x1 DUP4 DUP7 DUP4 DUP2 MLOAD DUP2 LT PUSH2 0x3985 JUMPI PUSH2 0x3985 PUSH2 0x4B46 JUMP JUMPDEST PUSH1 0x20 MUL PUSH1 0x20 ADD ADD MLOAD PUSH1 0xFF AND PUSH1 0x20 DUP2 LT PUSH2 0x39A0 JUMPI PUSH2 0x39A0 PUSH2 0x4B46 JUMP JUMPDEST PUSH1 0x20 MUL ADD SWAP1 ISZERO ISZERO SWAP1 DUP2 ISZERO ISZERO DUP2 MSTORE POP POP PUSH1 0x1 DUP3 DUP6 DUP4 DUP2 MLOAD DUP2 LT PUSH2 0x39C4 JUMPI PUSH2 0x39C4 PUSH2 0x4B46 JUMP JUMPDEST PUSH1 0x20 MUL PUSH1 0x20 ADD ADD MLOAD PUSH1 0xFF AND PUSH1 0x20 DUP2 LT PUSH2 0x39DF JUMPI PUSH2 0x39DF PUSH2 0x4B46 JUMP JUMPDEST SWAP2 ISZERO ISZERO PUSH1 0x20 SWAP1 SWAP3 MUL ADD MSTORE DUP7 MLOAD DUP8 SWAP1 DUP3 SWAP1 DUP2 LT PUSH2 0x39FD JUMPI PUSH2 0x39FD PUSH2 0x4B46 JUMP JUMPDEST PUSH1 0x20 MUL PUSH1 0x20 ADD ADD MLOAD PUSH1 0x2 DUP3 PUSH1 0x20 DUP2 LT PUSH2 0x3A18 JUMPI PUSH2 0x3A18 PUSH2 0x4B46 JUMP JUMPDEST ADD PUSH0 PUSH2 0x100 EXP DUP2 SLOAD DUP2 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB MUL NOT AND SWAP1 DUP4 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND MUL OR SWAP1 SSTORE POP DUP5 DUP2 DUP2 MLOAD DUP2 LT PUSH2 0x3A4E JUMPI PUSH2 0x3A4E PUSH2 0x4B46 JUMP JUMPDEST PUSH1 0x20 MUL PUSH1 0x20 ADD ADD MLOAD PUSH1 0x1 PUSH2 0x3A62 SWAP2 SWAP1 PUSH2 0x4B2D JUMP JUMPDEST PUSH0 DUP3 PUSH1 0x20 DUP2 LT PUSH2 0x3A74 JUMPI PUSH2 0x3A74 PUSH2 0x4B46 JUMP JUMPDEST PUSH1 0x20 SWAP2 DUP3 DUP3 DIV ADD SWAP2 SWAP1 MOD PUSH2 0x100 EXP DUP2 SLOAD DUP2 PUSH1 0xFF MUL NOT AND SWAP1 DUP4 PUSH1 0xFF AND MUL OR SWAP1 SSTORE POP DUP4 DUP2 DUP2 MLOAD DUP2 LT PUSH2 0x3AA6 JUMPI PUSH2 0x3AA6 PUSH2 0x4B46 JUMP JUMPDEST PUSH1 0x20 MUL PUSH1 0x20 ADD ADD MLOAD PUSH1 0x1 PUSH2 0x3ABA SWAP2 SWAP1 PUSH2 0x4B2D JUMP JUMPDEST PUSH1 0x1 DUP3 PUSH1 0x20 DUP2 LT PUSH2 0x3ACD JUMPI PUSH2 0x3ACD PUSH2 0x4B46 JUMP JUMPDEST PUSH1 0x20 SWAP2 DUP3 DUP3 DIV ADD SWAP2 SWAP1 MOD PUSH2 0x100 EXP DUP2 SLOAD DUP2 PUSH1 0xFF MUL NOT AND SWAP1 DUP4 PUSH1 0xFF AND MUL OR SWAP1 SSTORE POP PUSH2 0x3B3B DUP7 DUP3 DUP2 MLOAD DUP2 LT PUSH2 0x3B02 JUMPI PUSH2 0x3B02 PUSH2 0x4B46 JUMP JUMPDEST PUSH1 0x20 MUL PUSH1 0x20 ADD ADD MLOAD DUP9 DUP4 DUP2 MLOAD DUP2 LT PUSH2 0x3B1C JUMPI PUSH2 0x3B1C PUSH2 0x4B46 JUMP JUMPDEST PUSH1 0x20 MUL PUSH1 0x20 ADD ADD MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH2 0x2BE2 SWAP1 SWAP2 SWAP1 PUSH4 0xFFFFFFFF AND JUMP JUMPDEST DUP7 DUP2 DUP2 MLOAD DUP2 LT PUSH2 0x3B4D JUMPI PUSH2 0x3B4D PUSH2 0x4B46 JUMP JUMPDEST PUSH1 0x20 MUL PUSH1 0x20 ADD ADD MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH32 0x4973F7978F2B1810531AED51DC15A8E446CB3191AFCCA470F8CE464AF7494F58 DUP3 PUSH1 0x40 MLOAD PUSH2 0x3B96 SWAP2 SWAP1 PUSH1 0xFF SWAP2 SWAP1 SWAP2 AND DUP2 MSTORE PUSH1 0x20 ADD SWAP1 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 LOG2 PUSH1 0x1 ADD PUSH2 0x3705 JUMP JUMPDEST POP PUSH32 0x193FC4E628C27AE3CA098952DFC16A40425B44E7B0A97F4CC59D0F267F47CAEC DUP5 PUSH1 0x40 MLOAD PUSH2 0x3BD6 SWAP2 SWAP1 PUSH2 0x4C0B JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 LOG1 PUSH32 0x3C56B6BCA0D55EDA581F8F2819D1F85D3B91CFCC24914A8FA39D301796D8964C DUP4 PUSH1 0x40 MLOAD PUSH2 0x3C0D SWAP2 SWAP1 PUSH2 0x4C0B JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 LOG1 POP POP POP POP POP POP JUMP JUMPDEST PUSH2 0x3C26 DUP3 PUSH2 0x3F1F JUMP JUMPDEST PUSH2 0x25E6 DUP6 DUP6 DUP6 DUP6 DUP6 PUSH2 0x4032 JUMP JUMPDEST PUSH0 PUSH1 0x2 DUP3 PUSH1 0x3 DUP2 GT ISZERO PUSH2 0x3C48 JUMPI PUSH2 0x3C48 PUSH2 0x4E45 JUMP JUMPDEST PUSH2 0x3C52 SWAP2 SWAP1 PUSH2 0x4E59 JUMP JUMPDEST PUSH1 0xFF AND PUSH1 0x1 EQ SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH0 PUSH0 PUSH0 PUSH2 0x3C6C DUP7 DUP7 PUSH2 0x40D9 JUMP JUMPDEST SWAP2 POP SWAP2 POP DUP2 PUSH0 SUB PUSH2 0x3C90 JUMPI DUP4 DUP2 DUP2 PUSH2 0x3C86 JUMPI PUSH2 0x3C86 PUSH2 0x4BE4 JUMP JUMPDEST DIV SWAP3 POP POP POP PUSH2 0xA95 JUMP JUMPDEST DUP2 DUP5 GT PUSH2 0x3CA7 JUMPI PUSH2 0x3CA7 PUSH1 0x3 DUP6 ISZERO MUL PUSH1 0x11 XOR PUSH2 0x40F5 JUMP JUMPDEST PUSH0 DUP5 DUP7 DUP9 MULMOD PUSH0 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 DUP6 DUP5 GT SWAP1 SWAP7 SUB SWAP6 SWAP1 SWAP6 MUL SWAP2 SWAP1 SWAP4 SUB SWAP4 SWAP1 SWAP4 DIV SWAP3 SWAP1 SWAP3 OR MUL SWAP2 POP POP SWAP4 SWAP3 POP POP POP JUMP JUMPDEST PUSH0 PUSH0 PUSH0 DUP4 MLOAD PUSH1 0x20 DUP6 ADD DUP7 GAS DELEGATECALL SWAP4 SWAP3 POP POP POP JUMP JUMPDEST PUSH1 0x40 MLOAD RETURNDATASIZE DUP2 MSTORE RETURNDATASIZE PUSH0 PUSH1 0x20 DUP4 ADD RETURNDATACOPY RETURNDATASIZE PUSH1 0x20 ADD DUP2 ADD PUSH1 0x40 MSTORE SWAP1 JUMP JUMPDEST PUSH1 0x40 MLOAD RETURNDATASIZE PUSH0 DUP3 RETURNDATACOPY RETURNDATASIZE DUP2 REVERT JUMPDEST DUP1 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND EXTCODESIZE PUSH0 SUB PUSH2 0x3D7B JUMPI PUSH1 0x40 MLOAD PUSH4 0x4C9C8CE3 PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP3 AND PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x24 ADD PUSH2 0xE70 JUMP JUMPDEST PUSH0 MLOAD PUSH1 0x20 PUSH2 0x4FB9 PUSH0 CODECOPY PUSH0 MLOAD SWAP1 PUSH0 MSTORE DUP1 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB NOT AND PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP3 SWAP1 SWAP3 AND SWAP2 SWAP1 SWAP2 OR SWAP1 SSTORE JUMP JUMPDEST CALLVALUE ISZERO PUSH2 0x288E JUMPI PUSH1 0x40 MLOAD PUSH4 0xB398979F PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH2 0x3DDB PUSH2 0x3DD3 PUSH2 0xADE JUMP JUMPDEST DUP6 ADDRESS DUP6 PUSH2 0x4106 JUMP JUMPDEST PUSH2 0x3DE5 DUP4 DUP3 PUSH2 0x413C JUMP JUMPDEST DUP3 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP5 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH32 0xDCBC1C05240F31FF3AD067EF1EE35CE4997762752E3A095284754544F4C709D7 DUP5 DUP5 PUSH1 0x40 MLOAD PUSH2 0x34CF SWAP3 SWAP2 SWAP1 SWAP2 DUP3 MSTORE PUSH1 0x20 DUP3 ADD MSTORE PUSH1 0x40 ADD SWAP1 JUMP JUMPDEST PUSH0 PUSH2 0x3E3C PUSH2 0x2DBE JUMP JUMPDEST SLOAD PUSH1 0x1 PUSH1 0x40 SHL SWAP1 DIV PUSH1 0xFF AND SWAP2 SWAP1 POP JUMP JUMPDEST PUSH2 0x3E54 PUSH2 0x3654 JUMP JUMPDEST PUSH32 0x773E532DFEDE91F04B12A73D3D2ACD361424F41F76B4FB79F090161E36B4E00 PUSH0 DUP1 PUSH2 0x3E80 DUP5 PUSH2 0x4170 JUMP JUMPDEST SWAP2 POP SWAP2 POP DUP2 PUSH2 0x3E90 JUMPI PUSH1 0x12 PUSH2 0x3E92 JUMP JUMPDEST DUP1 JUMPDEST DUP4 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA8 SHL SUB NOT AND PUSH1 0x1 PUSH1 0xA0 SHL PUSH1 0xFF SWAP3 SWAP1 SWAP3 AND SWAP2 SWAP1 SWAP2 MUL PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB NOT AND OR PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP5 SWAP1 SWAP5 AND SWAP4 SWAP1 SWAP4 OR SWAP1 SWAP2 SSTORE POP POP JUMP JUMPDEST PUSH2 0x3ED7 PUSH2 0x3654 JUMP JUMPDEST PUSH0 MLOAD PUSH1 0x20 PUSH2 0x4F99 PUSH0 CODECOPY PUSH0 MLOAD SWAP1 PUSH0 MSTORE PUSH32 0x52C63247E1F47DB19D5CE0460030C497F067CA4CEBF71BA98EEADABE20BACE03 PUSH2 0x3F10 DUP5 DUP3 PUSH2 0x4EBE JUMP JUMPDEST POP PUSH1 0x4 DUP2 ADD PUSH2 0x246C DUP4 DUP3 PUSH2 0x4EBE JUMP JUMPDEST DUP1 PUSH0 JUMPDEST DUP2 ISZERO DUP1 ISZERO SWAP1 PUSH2 0x3F58 JUMPI POP PUSH1 0x1 DUP2 PUSH1 0x20 DUP2 LT PUSH2 0x3F3F JUMPI PUSH2 0x3F3F PUSH2 0x4B46 JUMP JUMPDEST PUSH1 0x20 DUP2 DIV SWAP1 SWAP2 ADD SLOAD PUSH1 0xFF PUSH1 0x1F SWAP1 SWAP3 AND PUSH2 0x100 EXP SWAP1 DIV AND ISZERO ISZERO JUMPDEST DUP1 ISZERO PUSH2 0x3F64 JUMPI POP PUSH1 0x20 DUP2 LT JUMPDEST ISZERO PUSH2 0x4012 JUMPI PUSH0 PUSH1 0x2 PUSH1 0x1 DUP1 DUP5 PUSH1 0x20 DUP2 LT PUSH2 0x3F80 JUMPI PUSH2 0x3F80 PUSH2 0x4B46 JUMP JUMPDEST PUSH1 0x20 SWAP2 DUP3 DUP3 DIV ADD SWAP2 SWAP1 MOD SWAP1 SLOAD SWAP1 PUSH2 0x100 EXP SWAP1 DIV PUSH1 0xFF AND PUSH2 0x3FA0 SWAP2 SWAP1 PUSH2 0x4C63 JUMP JUMPDEST PUSH1 0xFF AND PUSH1 0x20 DUP2 LT PUSH2 0x3FB3 JUMPI PUSH2 0x3FB3 PUSH2 0x4B46 JUMP JUMPDEST ADD SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND SWAP1 POP PUSH0 PUSH2 0x3FCE DUP5 PUSH2 0x2781 DUP5 PUSH2 0x2FD9 JUMP JUMPDEST SWAP1 POP DUP1 PUSH0 SUB PUSH2 0x3FDE JUMPI POP POP PUSH2 0x4002 JUMP JUMPDEST PUSH2 0x3FF2 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP4 AND DUP3 PUSH0 PUSH2 0x3035 JUMP JUMPDEST POP PUSH2 0x3FFD DUP2 DUP6 PUSH2 0x4C50 JUMP JUMPDEST SWAP4 POP POP POP JUMPDEST PUSH2 0x400B DUP2 PUSH2 0x4B71 JUMP JUMPDEST SWAP1 POP PUSH2 0x3F22 JUMP JUMPDEST POP DUP1 ISZERO PUSH2 0xD38 JUMPI PUSH1 0x40 MLOAD PUSH4 0x351DC55D PUSH1 0xE2 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST DUP3 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP6 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND EQ PUSH2 0x4056 JUMPI PUSH2 0x4056 DUP4 DUP7 DUP4 PUSH2 0x2421 JUMP JUMPDEST PUSH2 0x4060 DUP4 DUP3 PUSH2 0x41FB JUMP JUMPDEST PUSH2 0x4072 PUSH2 0x406B PUSH2 0xADE JUMP JUMPDEST DUP6 DUP5 PUSH2 0x422F JUMP JUMPDEST DUP3 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP5 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP7 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH32 0xFBDE797D201C681B91056529119E0B02407C7BB96A4A2C75C01FC9667232C8DB DUP6 DUP6 PUSH1 0x40 MLOAD PUSH2 0x40CA 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 POP POP POP JUMP JUMPDEST PUSH0 DUP1 PUSH0 NOT DUP4 DUP6 MULMOD SWAP4 SWAP1 SWAP3 MUL DUP1 DUP5 LT SWAP4 DUP2 SWAP1 SUB SWAP4 SWAP1 SWAP4 SUB SWAP4 SWAP2 POP POP JUMP JUMPDEST PUSH4 0x4E487B71 PUSH0 MSTORE DUP1 PUSH1 0x20 MSTORE PUSH1 0x24 PUSH1 0x1C REVERT JUMPDEST PUSH2 0x4114 DUP5 DUP5 DUP5 DUP5 PUSH1 0x1 PUSH2 0x4264 JUMP JUMPDEST PUSH2 0x246C JUMPI PUSH1 0x40 MLOAD PUSH4 0x5274AFE7 PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP6 AND PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x24 ADD PUSH2 0xE70 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP3 AND PUSH2 0x4165 JUMPI PUSH1 0x40 MLOAD PUSH4 0xEC442F05 PUSH1 0xE0 SHL DUP2 MSTORE PUSH0 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x24 ADD PUSH2 0xE70 JUMP JUMPDEST PUSH2 0xD38 PUSH0 DUP4 DUP4 PUSH2 0x33B7 JUMP JUMPDEST PUSH0 PUSH0 PUSH0 PUSH2 0x417C PUSH1 0x40 MLOAD SWAP1 JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH1 0x4 DUP2 MSTORE PUSH1 0x24 DUP2 ADD SWAP1 SWAP2 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 SWAP2 POP PUSH0 SWAP1 DUP2 SWAP1 PUSH2 0x41B7 SWAP1 DUP8 SWAP1 PUSH2 0x42D1 JUMP JUMPDEST POP SWAP2 POP SWAP2 POP PUSH2 0x41C5 DUP4 PUSH1 0x40 MSTORE JUMP JUMPDEST DUP2 DUP1 ISZERO PUSH2 0x41D3 JUMPI POP PUSH1 0x20 RETURNDATASIZE LT ISZERO JUMPDEST DUP1 ISZERO PUSH2 0x41E0 JUMPI POP PUSH1 0xFF DUP2 GT ISZERO JUMPDEST PUSH2 0x41EB JUMPI PUSH0 PUSH0 PUSH2 0x41EF JUMP JUMPDEST PUSH1 0x1 DUP2 JUMPDEST SWAP5 POP SWAP5 POP POP POP POP SWAP2 POP SWAP2 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP3 AND PUSH2 0x4224 JUMPI PUSH1 0x40 MLOAD PUSH4 0x4B637E8F PUSH1 0xE1 SHL DUP2 MSTORE PUSH0 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x24 ADD PUSH2 0xE70 JUMP JUMPDEST PUSH2 0xD38 DUP3 PUSH0 DUP4 PUSH2 0x33B7 JUMP JUMPDEST PUSH2 0x423C DUP4 DUP4 DUP4 PUSH1 0x1 PUSH2 0x42F2 JUMP JUMPDEST PUSH2 0x239B JUMPI PUSH1 0x40 MLOAD PUSH4 0x5274AFE7 PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP5 AND PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x24 ADD PUSH2 0xE70 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH4 0x23B872DD PUSH1 0xE0 SHL PUSH0 DUP2 DUP2 MSTORE PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP8 DUP2 AND PUSH1 0x4 MSTORE DUP7 AND PUSH1 0x24 MSTORE PUSH1 0x44 DUP6 SWAP1 MSTORE SWAP2 PUSH1 0x20 DUP4 PUSH1 0x64 DUP2 DUP1 DUP13 GAS CALL SWAP3 POP PUSH1 0x1 PUSH0 MLOAD EQ DUP4 AND PUSH2 0x42C0 JUMPI DUP4 DUP4 ISZERO AND ISZERO PUSH2 0x42B4 JUMPI RETURNDATASIZE PUSH0 DUP3 RETURNDATACOPY RETURNDATASIZE DUP2 REVERT JUMPDEST PUSH0 DUP9 EXTCODESIZE GT RETURNDATASIZE ISZERO AND DUP4 AND SWAP3 POP JUMPDEST PUSH1 0x40 MSTORE POP PUSH0 PUSH1 0x60 MSTORE SWAP6 SWAP5 POP POP POP POP POP JUMP JUMPDEST PUSH0 PUSH0 PUSH0 PUSH1 0x40 PUSH0 DUP6 MLOAD PUSH1 0x20 DUP8 ADD DUP9 GAS STATICCALL SWAP3 POP PUSH0 MLOAD SWAP2 POP PUSH1 0x20 MLOAD SWAP1 POP SWAP3 POP SWAP3 POP SWAP3 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH4 0xA9059CBB PUSH1 0xE0 SHL PUSH0 DUP2 DUP2 MSTORE PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP7 AND PUSH1 0x4 MSTORE PUSH1 0x24 DUP6 SWAP1 MSTORE SWAP2 PUSH1 0x20 DUP4 PUSH1 0x44 DUP2 DUP1 DUP12 GAS CALL SWAP3 POP PUSH1 0x1 PUSH0 MLOAD EQ DUP4 AND PUSH2 0x4348 JUMPI DUP4 DUP4 ISZERO AND ISZERO PUSH2 0x433C JUMPI RETURNDATASIZE PUSH0 DUP3 RETURNDATACOPY RETURNDATASIZE DUP2 REVERT JUMPDEST PUSH0 DUP8 EXTCODESIZE GT RETURNDATASIZE ISZERO AND DUP4 AND SWAP3 POP JUMPDEST PUSH1 0x40 MSTORE POP SWAP5 SWAP4 POP POP POP POP JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 PUSH2 0x400 ADD PUSH1 0x40 MSTORE DUP1 PUSH1 0x20 SWAP1 PUSH1 0x20 DUP3 MUL DUP1 CALLDATASIZE DUP4 CALLDATACOPY POP SWAP2 SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH0 DUP2 MLOAD DUP1 DUP5 MSTORE DUP1 PUSH1 0x20 DUP5 ADD PUSH1 0x20 DUP7 ADD MCOPY PUSH0 PUSH1 0x20 DUP3 DUP7 ADD ADD MSTORE PUSH1 0x20 PUSH1 0x1F NOT PUSH1 0x1F DUP4 ADD AND DUP6 ADD ADD SWAP2 POP POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x20 DUP2 MSTORE PUSH0 PUSH2 0xA95 PUSH1 0x20 DUP4 ADD DUP5 PUSH2 0x4373 JUMP JUMPDEST PUSH0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x43C3 JUMPI PUSH0 PUSH0 REVERT JUMPDEST POP CALLDATALOAD SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 AND DUP2 EQ PUSH2 0xBA3 JUMPI PUSH0 PUSH0 REVERT JUMPDEST PUSH0 PUSH0 PUSH1 0x40 DUP4 DUP6 SUB SLT ISZERO PUSH2 0x43EF JUMPI PUSH0 PUSH0 REVERT JUMPDEST DUP3 CALLDATALOAD PUSH2 0x43FA DUP2 PUSH2 0x43CA JUMP JUMPDEST SWAP5 PUSH1 0x20 SWAP4 SWAP1 SWAP4 ADD CALLDATALOAD SWAP4 POP POP POP JUMP JUMPDEST PUSH0 PUSH0 PUSH1 0x40 DUP4 DUP6 SUB SLT ISZERO PUSH2 0x4419 JUMPI PUSH0 PUSH0 REVERT JUMPDEST POP POP DUP1 CALLDATALOAD SWAP3 PUSH1 0x20 SWAP1 SWAP2 ADD CALLDATALOAD SWAP2 POP JUMP JUMPDEST PUSH0 PUSH0 PUSH0 PUSH1 0x60 DUP5 DUP7 SUB SLT ISZERO PUSH2 0x443A JUMPI PUSH0 PUSH0 REVERT JUMPDEST DUP4 CALLDATALOAD PUSH2 0x4445 DUP2 PUSH2 0x43CA JUMP JUMPDEST SWAP3 POP PUSH1 0x20 DUP5 ADD CALLDATALOAD PUSH2 0x4455 DUP2 PUSH2 0x43CA JUMP JUMPDEST SWAP3 SWAP6 SWAP3 SWAP5 POP POP POP PUSH1 0x40 SWAP2 SWAP1 SWAP2 ADD CALLDATALOAD SWAP1 JUMP JUMPDEST DUP1 CALLDATALOAD PUSH1 0xFF DUP2 AND DUP2 EQ PUSH2 0x4476 JUMPI PUSH0 PUSH0 REVERT JUMPDEST SWAP2 SWAP1 POP JUMP JUMPDEST PUSH4 0x4E487B71 PUSH1 0xE0 SHL PUSH0 MSTORE PUSH1 0x41 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH0 REVERT 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 PUSH2 0x44B7 JUMPI PUSH2 0x44B7 PUSH2 0x447B JUMP JUMPDEST PUSH1 0x40 MSTORE SWAP2 SWAP1 POP JUMP JUMPDEST PUSH0 DUP3 PUSH1 0x1F DUP4 ADD SLT PUSH2 0x44CE JUMPI PUSH0 PUSH0 REVERT JUMPDEST DUP2 CALLDATALOAD PUSH1 0x20 DUP4 ADD PUSH0 PUSH0 PUSH1 0x1 PUSH1 0x1 PUSH1 0x40 SHL SUB DUP5 GT ISZERO PUSH2 0x44ED JUMPI PUSH2 0x44ED PUSH2 0x447B JUMP JUMPDEST POP PUSH1 0x1F DUP4 ADD PUSH1 0x1F NOT AND PUSH1 0x20 ADD PUSH2 0x4502 DUP2 PUSH2 0x448F JUMP JUMPDEST SWAP2 POP POP DUP3 DUP2 MSTORE DUP6 DUP4 DUP4 ADD GT ISZERO PUSH2 0x4516 JUMPI PUSH0 PUSH0 REVERT JUMPDEST DUP3 DUP3 PUSH1 0x20 DUP4 ADD CALLDATACOPY PUSH0 SWAP3 DUP2 ADD PUSH1 0x20 ADD SWAP3 SWAP1 SWAP3 MSTORE POP SWAP4 SWAP3 POP POP POP JUMP JUMPDEST PUSH0 PUSH0 PUSH0 PUSH1 0x60 DUP5 DUP7 SUB SLT ISZERO PUSH2 0x4542 JUMPI PUSH0 PUSH0 REVERT JUMPDEST PUSH2 0x454B DUP5 PUSH2 0x4466 JUMP JUMPDEST SWAP3 POP PUSH2 0x4559 PUSH1 0x20 DUP6 ADD PUSH2 0x4466 JUMP JUMPDEST SWAP2 POP PUSH1 0x40 DUP5 ADD CALLDATALOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0x40 SHL SUB DUP2 GT ISZERO PUSH2 0x4573 JUMPI PUSH0 PUSH0 REVERT JUMPDEST PUSH2 0x457F DUP7 DUP3 DUP8 ADD PUSH2 0x44BF JUMP JUMPDEST SWAP2 POP POP SWAP3 POP SWAP3 POP SWAP3 JUMP JUMPDEST PUSH0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x4599 JUMPI PUSH0 PUSH0 REVERT JUMPDEST DUP2 CALLDATALOAD PUSH2 0xA95 DUP2 PUSH2 0x43CA JUMP JUMPDEST PUSH0 PUSH0 PUSH1 0x40 DUP4 DUP6 SUB SLT ISZERO PUSH2 0x45B5 JUMPI PUSH0 PUSH0 REVERT JUMPDEST DUP3 CALLDATALOAD PUSH2 0x45C0 DUP2 PUSH2 0x43CA JUMP JUMPDEST SWAP2 POP PUSH1 0x20 DUP4 ADD CALLDATALOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0x40 SHL SUB DUP2 GT ISZERO PUSH2 0x45DA JUMPI PUSH0 PUSH0 REVERT JUMPDEST PUSH2 0x45E6 DUP6 DUP3 DUP7 ADD PUSH2 0x44BF JUMP JUMPDEST SWAP2 POP POP SWAP3 POP SWAP3 SWAP1 POP JUMP JUMPDEST PUSH2 0x400 DUP2 ADD DUP2 DUP4 PUSH0 JUMPDEST PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x461B JUMPI DUP2 MLOAD PUSH1 0xFF AND DUP4 MSTORE PUSH1 0x20 SWAP3 DUP4 ADD SWAP3 SWAP1 SWAP2 ADD SWAP1 PUSH1 0x1 ADD PUSH2 0x45F9 JUMP JUMPDEST POP POP POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH0 PUSH0 PUSH1 0x40 DUP4 DUP6 SUB SLT ISZERO PUSH2 0x4635 JUMPI PUSH0 PUSH0 REVERT JUMPDEST DUP3 CALLDATALOAD SWAP2 POP PUSH1 0x20 DUP4 ADD CALLDATALOAD PUSH2 0x4647 DUP2 PUSH2 0x43CA JUMP JUMPDEST DUP1 SWAP2 POP POP SWAP3 POP SWAP3 SWAP1 POP JUMP JUMPDEST DUP1 ISZERO ISZERO DUP2 EQ PUSH2 0xBA3 JUMPI PUSH0 PUSH0 REVERT JUMPDEST PUSH0 PUSH0 PUSH0 PUSH0 PUSH1 0x80 DUP6 DUP8 SUB SLT ISZERO PUSH2 0x4672 JUMPI PUSH0 PUSH0 REVERT JUMPDEST PUSH2 0x467B DUP6 PUSH2 0x4466 JUMP JUMPDEST SWAP4 POP PUSH1 0x20 DUP6 ADD CALLDATALOAD PUSH2 0x468B DUP2 PUSH2 0x43CA JUMP JUMPDEST SWAP3 POP PUSH1 0x40 DUP6 ADD CALLDATALOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0x40 SHL SUB DUP2 GT ISZERO PUSH2 0x46A5 JUMPI PUSH0 PUSH0 REVERT JUMPDEST PUSH2 0x46B1 DUP8 DUP3 DUP9 ADD PUSH2 0x44BF JUMP JUMPDEST SWAP3 POP POP PUSH1 0x60 DUP6 ADD CALLDATALOAD PUSH2 0x46C2 DUP2 PUSH2 0x4652 JUMP JUMPDEST SWAP4 SWAP7 SWAP3 SWAP6 POP SWAP1 SWAP4 POP POP JUMP JUMPDEST PUSH0 PUSH0 PUSH1 0x40 DUP4 DUP6 SUB SLT ISZERO PUSH2 0x46DE JUMPI PUSH0 PUSH0 REVERT JUMPDEST PUSH2 0x46E7 DUP4 PUSH2 0x4466 JUMP JUMPDEST SWAP2 POP PUSH2 0x46F5 PUSH1 0x20 DUP5 ADD PUSH2 0x4466 JUMP JUMPDEST SWAP1 POP SWAP3 POP SWAP3 SWAP1 POP JUMP JUMPDEST PUSH0 PUSH0 PUSH1 0x40 DUP4 DUP6 SUB SLT ISZERO PUSH2 0x470F JUMPI PUSH0 PUSH0 REVERT JUMPDEST DUP3 CALLDATALOAD SWAP2 POP PUSH1 0x20 DUP4 ADD CALLDATALOAD PUSH5 0xFFFFFFFFFF DUP2 AND DUP2 EQ PUSH2 0x4647 JUMPI PUSH0 PUSH0 REVERT JUMPDEST PUSH0 PUSH1 0x1 PUSH1 0x1 PUSH1 0x40 SHL SUB DUP3 GT ISZERO PUSH2 0x4742 JUMPI PUSH2 0x4742 PUSH2 0x447B JUMP JUMPDEST POP PUSH1 0x5 SHL PUSH1 0x20 ADD SWAP1 JUMP JUMPDEST PUSH0 DUP3 PUSH1 0x1F DUP4 ADD SLT PUSH2 0x475B JUMPI PUSH0 PUSH0 REVERT JUMPDEST DUP2 CALLDATALOAD PUSH2 0x476E PUSH2 0x4769 DUP3 PUSH2 0x472A JUMP JUMPDEST PUSH2 0x448F JUMP JUMPDEST DUP1 DUP3 DUP3 MSTORE PUSH1 0x20 DUP3 ADD SWAP2 POP PUSH1 0x20 DUP4 PUSH1 0x5 SHL DUP7 ADD ADD SWAP3 POP DUP6 DUP4 GT ISZERO PUSH2 0x478F JUMPI PUSH0 PUSH0 REVERT JUMPDEST PUSH1 0x20 DUP6 ADD JUMPDEST DUP4 DUP2 LT ISZERO PUSH2 0x47B3 JUMPI PUSH2 0x47A5 DUP2 PUSH2 0x4466 JUMP JUMPDEST DUP4 MSTORE PUSH1 0x20 SWAP3 DUP4 ADD SWAP3 ADD PUSH2 0x4794 JUMP JUMPDEST POP SWAP6 SWAP5 POP POP POP POP POP JUMP JUMPDEST PUSH0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x47CD JUMPI PUSH0 PUSH0 REVERT JUMPDEST DUP2 CALLDATALOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0x40 SHL SUB DUP2 GT ISZERO PUSH2 0x47E2 JUMPI PUSH0 PUSH0 REVERT JUMPDEST PUSH2 0xE91 DUP5 DUP3 DUP6 ADD PUSH2 0x474C JUMP JUMPDEST PUSH0 PUSH0 PUSH1 0x40 DUP4 DUP6 SUB SLT ISZERO PUSH2 0x47FF JUMPI PUSH0 PUSH0 REVERT JUMPDEST PUSH2 0x4808 DUP4 PUSH2 0x4466 JUMP JUMPDEST SWAP2 POP PUSH1 0x20 DUP4 ADD CALLDATALOAD PUSH2 0x4647 DUP2 PUSH2 0x4652 JUMP JUMPDEST DUP1 CALLDATALOAD PUSH2 0x4476 DUP2 PUSH2 0x43CA JUMP JUMPDEST PUSH0 DUP3 PUSH1 0x1F DUP4 ADD SLT PUSH2 0x4832 JUMPI PUSH0 PUSH0 REVERT JUMPDEST DUP2 CALLDATALOAD PUSH2 0x4840 PUSH2 0x4769 DUP3 PUSH2 0x472A JUMP JUMPDEST DUP1 DUP3 DUP3 MSTORE PUSH1 0x20 DUP3 ADD SWAP2 POP PUSH1 0x20 DUP4 PUSH1 0x5 SHL DUP7 ADD ADD SWAP3 POP DUP6 DUP4 GT ISZERO PUSH2 0x4861 JUMPI PUSH0 PUSH0 REVERT JUMPDEST PUSH1 0x20 DUP6 ADD JUMPDEST DUP4 DUP2 LT ISZERO PUSH2 0x47B3 JUMPI DUP1 CALLDATALOAD PUSH2 0x4879 DUP2 PUSH2 0x43CA JUMP JUMPDEST DUP4 MSTORE PUSH1 0x20 SWAP3 DUP4 ADD SWAP3 ADD PUSH2 0x4866 JUMP JUMPDEST PUSH0 DUP3 PUSH1 0x1F DUP4 ADD SLT PUSH2 0x4896 JUMPI PUSH0 PUSH0 REVERT JUMPDEST DUP2 CALLDATALOAD PUSH2 0x48A4 PUSH2 0x4769 DUP3 PUSH2 0x472A JUMP JUMPDEST DUP1 DUP3 DUP3 MSTORE PUSH1 0x20 DUP3 ADD SWAP2 POP PUSH1 0x20 DUP4 PUSH1 0x5 SHL DUP7 ADD ADD SWAP3 POP DUP6 DUP4 GT ISZERO PUSH2 0x48C5 JUMPI PUSH0 PUSH0 REVERT JUMPDEST PUSH1 0x20 DUP6 ADD JUMPDEST DUP4 DUP2 LT ISZERO PUSH2 0x47B3 JUMPI DUP1 CALLDATALOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0x40 SHL SUB DUP2 GT ISZERO PUSH2 0x48E7 JUMPI PUSH0 PUSH0 REVERT JUMPDEST PUSH2 0x48F6 DUP9 PUSH1 0x20 DUP4 DUP11 ADD ADD PUSH2 0x44BF JUMP JUMPDEST DUP5 MSTORE POP PUSH1 0x20 SWAP3 DUP4 ADD SWAP3 ADD PUSH2 0x48CA JUMP JUMPDEST PUSH0 PUSH0 PUSH0 PUSH0 PUSH0 PUSH0 PUSH0 PUSH1 0xE0 DUP9 DUP11 SUB SLT ISZERO PUSH2 0x491B JUMPI PUSH0 PUSH0 REVERT JUMPDEST DUP8 CALLDATALOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0x40 SHL SUB DUP2 GT ISZERO PUSH2 0x4930 JUMPI PUSH0 PUSH0 REVERT JUMPDEST PUSH2 0x493C DUP11 DUP3 DUP12 ADD PUSH2 0x44BF JUMP JUMPDEST SWAP8 POP POP PUSH1 0x20 DUP9 ADD CALLDATALOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0x40 SHL SUB DUP2 GT ISZERO PUSH2 0x4957 JUMPI PUSH0 PUSH0 REVERT JUMPDEST PUSH2 0x4963 DUP11 DUP3 DUP12 ADD PUSH2 0x44BF JUMP JUMPDEST SWAP7 POP POP PUSH2 0x4972 PUSH1 0x40 DUP10 ADD PUSH2 0x4818 JUMP JUMPDEST SWAP5 POP PUSH1 0x60 DUP9 ADD CALLDATALOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0x40 SHL SUB DUP2 GT ISZERO PUSH2 0x498C JUMPI PUSH0 PUSH0 REVERT JUMPDEST PUSH2 0x4998 DUP11 DUP3 DUP12 ADD PUSH2 0x4823 JUMP JUMPDEST SWAP5 POP POP PUSH1 0x80 DUP9 ADD CALLDATALOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0x40 SHL SUB DUP2 GT ISZERO PUSH2 0x49B3 JUMPI PUSH0 PUSH0 REVERT JUMPDEST PUSH2 0x49BF DUP11 DUP3 DUP12 ADD PUSH2 0x4887 JUMP JUMPDEST SWAP4 POP POP PUSH1 0xA0 DUP9 ADD CALLDATALOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0x40 SHL SUB DUP2 GT ISZERO PUSH2 0x49DA JUMPI PUSH0 PUSH0 REVERT JUMPDEST PUSH2 0x49E6 DUP11 DUP3 DUP12 ADD PUSH2 0x474C JUMP JUMPDEST SWAP3 POP POP PUSH1 0xC0 DUP9 ADD CALLDATALOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0x40 SHL SUB DUP2 GT ISZERO PUSH2 0x4A01 JUMPI PUSH0 PUSH0 REVERT JUMPDEST PUSH2 0x4A0D DUP11 DUP3 DUP12 ADD PUSH2 0x474C JUMP JUMPDEST SWAP2 POP POP SWAP3 SWAP6 SWAP9 SWAP2 SWAP5 SWAP8 POP SWAP3 SWAP6 POP JUMP JUMPDEST PUSH0 PUSH0 PUSH0 PUSH1 0x60 DUP5 DUP7 SUB SLT ISZERO PUSH2 0x4A2E JUMPI PUSH0 PUSH0 REVERT JUMPDEST DUP4 CALLDATALOAD SWAP3 POP PUSH1 0x20 DUP5 ADD CALLDATALOAD PUSH2 0x4A40 DUP2 PUSH2 0x43CA JUMP JUMPDEST SWAP2 POP PUSH1 0x40 DUP5 ADD CALLDATALOAD PUSH2 0x4A50 DUP2 PUSH2 0x43CA JUMP JUMPDEST DUP1 SWAP2 POP POP SWAP3 POP SWAP3 POP SWAP3 JUMP JUMPDEST PUSH2 0x400 DUP2 ADD DUP2 DUP4 PUSH0 JUMPDEST PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x461B JUMPI DUP2 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP4 MSTORE PUSH1 0x20 SWAP3 DUP4 ADD SWAP3 SWAP1 SWAP2 ADD SWAP1 PUSH1 0x1 ADD PUSH2 0x4A64 JUMP JUMPDEST PUSH0 PUSH0 PUSH1 0x40 DUP4 DUP6 SUB SLT ISZERO PUSH2 0x4A9D JUMPI PUSH0 PUSH0 REVERT JUMPDEST DUP3 CALLDATALOAD PUSH2 0x4AA8 DUP2 PUSH2 0x43CA JUMP JUMPDEST SWAP2 POP PUSH1 0x20 DUP4 ADD CALLDATALOAD PUSH2 0x4647 DUP2 PUSH2 0x43CA JUMP JUMPDEST PUSH0 PUSH0 PUSH0 PUSH1 0x60 DUP5 DUP7 SUB SLT ISZERO PUSH2 0x4ACA JUMPI PUSH0 PUSH0 REVERT JUMPDEST PUSH2 0x4AD3 DUP5 PUSH2 0x4466 JUMP JUMPDEST SWAP3 POP PUSH2 0x4455 PUSH1 0x20 DUP6 ADD PUSH2 0x4466 JUMP JUMPDEST PUSH1 0x1 DUP2 DUP2 SHR SWAP1 DUP3 AND DUP1 PUSH2 0x4AF5 JUMPI PUSH1 0x7F DUP3 AND SWAP2 POP JUMPDEST PUSH1 0x20 DUP3 LT DUP2 SUB PUSH2 0x4B13 JUMPI PUSH4 0x4E487B71 PUSH1 0xE0 SHL PUSH0 MSTORE PUSH1 0x22 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH0 REVERT JUMPDEST POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH4 0x4E487B71 PUSH1 0xE0 SHL PUSH0 MSTORE PUSH1 0x11 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH0 REVERT JUMPDEST PUSH1 0xFF DUP2 DUP2 AND DUP4 DUP3 AND ADD SWAP1 DUP2 GT ISZERO PUSH2 0x9B3 JUMPI PUSH2 0x9B3 PUSH2 0x4B19 JUMP JUMPDEST PUSH4 0x4E487B71 PUSH1 0xE0 SHL PUSH0 MSTORE PUSH1 0x32 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH0 REVERT JUMPDEST PUSH0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x4B6A JUMPI PUSH0 PUSH0 REVERT JUMPDEST POP MLOAD SWAP2 SWAP1 POP JUMP JUMPDEST PUSH0 PUSH1 0x1 DUP3 ADD PUSH2 0x4B82 JUMPI PUSH2 0x4B82 PUSH2 0x4B19 JUMP JUMPDEST POP PUSH1 0x1 ADD SWAP1 JUMP JUMPDEST DUP1 DUP3 ADD DUP3 DUP2 SLT PUSH0 DUP4 SLT DUP1 ISZERO DUP3 AND DUP3 ISZERO DUP3 AND OR ISZERO PUSH2 0x4BA8 JUMPI PUSH2 0x4BA8 PUSH2 0x4B19 JUMP JUMPDEST POP POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP4 SWAP1 SWAP4 AND DUP4 MSTORE PUSH1 0x20 DUP4 ADD SWAP2 SWAP1 SWAP2 MSTORE PUSH1 0x40 DUP3 ADD MSTORE PUSH1 0x60 ADD SWAP1 JUMP JUMPDEST DUP1 DUP3 ADD DUP1 DUP3 GT ISZERO PUSH2 0x9B3 JUMPI PUSH2 0x9B3 PUSH2 0x4B19 JUMP JUMPDEST PUSH4 0x4E487B71 PUSH1 0xE0 SHL PUSH0 MSTORE PUSH1 0x12 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH0 REVERT JUMPDEST PUSH0 DUP3 PUSH2 0x4C06 JUMPI PUSH2 0x4C06 PUSH2 0x4BE4 JUMP JUMPDEST POP DIV SWAP1 JUMP JUMPDEST PUSH1 0x20 DUP1 DUP3 MSTORE DUP3 MLOAD DUP3 DUP3 ADD DUP2 SWAP1 MSTORE PUSH0 SWAP2 DUP5 ADD SWAP1 PUSH1 0x40 DUP5 ADD SWAP1 DUP4 JUMPDEST DUP2 DUP2 LT ISZERO PUSH2 0x4C45 JUMPI DUP4 MLOAD PUSH1 0xFF AND DUP4 MSTORE PUSH1 0x20 SWAP4 DUP5 ADD SWAP4 SWAP1 SWAP3 ADD SWAP2 PUSH1 0x1 ADD PUSH2 0x4C24 JUMP JUMPDEST POP SWAP1 SWAP6 SWAP5 POP POP POP POP POP JUMP JUMPDEST DUP2 DUP2 SUB DUP2 DUP2 GT ISZERO PUSH2 0x9B3 JUMPI PUSH2 0x9B3 PUSH2 0x4B19 JUMP JUMPDEST PUSH1 0xFF DUP3 DUP2 AND DUP3 DUP3 AND SUB SWAP1 DUP2 GT ISZERO PUSH2 0x9B3 JUMPI PUSH2 0x9B3 PUSH2 0x4B19 JUMP JUMPDEST PUSH0 PUSH1 0xFF DUP3 AND PUSH1 0xFF DUP2 SUB PUSH2 0x4C91 JUMPI PUSH2 0x4C91 PUSH2 0x4B19 JUMP JUMPDEST PUSH1 0x1 ADD SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x1 DUP2 JUMPDEST PUSH1 0x1 DUP5 GT ISZERO PUSH2 0x4CD5 JUMPI DUP1 DUP6 DIV DUP2 GT ISZERO PUSH2 0x4CB9 JUMPI PUSH2 0x4CB9 PUSH2 0x4B19 JUMP JUMPDEST PUSH1 0x1 DUP5 AND ISZERO PUSH2 0x4CC7 JUMPI SWAP1 DUP2 MUL SWAP1 JUMPDEST PUSH1 0x1 SWAP4 SWAP1 SWAP4 SHR SWAP3 DUP1 MUL PUSH2 0x4C9E JUMP JUMPDEST SWAP4 POP SWAP4 SWAP2 POP POP JUMP JUMPDEST PUSH0 DUP3 PUSH2 0x4CEB JUMPI POP PUSH1 0x1 PUSH2 0x9B3 JUMP JUMPDEST DUP2 PUSH2 0x4CF7 JUMPI POP PUSH0 PUSH2 0x9B3 JUMP JUMPDEST DUP2 PUSH1 0x1 DUP2 EQ PUSH2 0x4D0D JUMPI PUSH1 0x2 DUP2 EQ PUSH2 0x4D17 JUMPI PUSH2 0x4D33 JUMP JUMPDEST PUSH1 0x1 SWAP2 POP POP PUSH2 0x9B3 JUMP JUMPDEST PUSH1 0xFF DUP5 GT ISZERO PUSH2 0x4D28 JUMPI PUSH2 0x4D28 PUSH2 0x4B19 JUMP JUMPDEST POP POP PUSH1 0x1 DUP3 SHL PUSH2 0x9B3 JUMP JUMPDEST POP PUSH1 0x20 DUP4 LT PUSH2 0x133 DUP4 LT AND PUSH1 0x4E DUP5 LT PUSH1 0xB DUP5 LT AND OR ISZERO PUSH2 0x4D56 JUMPI POP DUP2 DUP2 EXP PUSH2 0x9B3 JUMP JUMPDEST PUSH2 0x4D62 PUSH0 NOT DUP5 DUP5 PUSH2 0x4C9A JUMP JUMPDEST DUP1 PUSH0 NOT DIV DUP3 GT ISZERO PUSH2 0x4D75 JUMPI PUSH2 0x4D75 PUSH2 0x4B19 JUMP JUMPDEST MUL SWAP4 SWAP3 POP POP POP JUMP JUMPDEST PUSH0 PUSH2 0xA95 PUSH1 0xFF DUP5 AND DUP4 PUSH2 0x4CDD JUMP JUMPDEST PUSH0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x4D9B JUMPI PUSH0 PUSH0 REVERT JUMPDEST DUP2 MLOAD PUSH2 0xA95 DUP2 PUSH2 0x43CA JUMP JUMPDEST PUSH0 PUSH0 PUSH1 0x40 DUP4 DUP6 SUB SLT ISZERO PUSH2 0x4DB7 JUMPI PUSH0 PUSH0 REVERT JUMPDEST DUP3 MLOAD PUSH2 0x4DC2 DUP2 PUSH2 0x4652 JUMP JUMPDEST PUSH1 0x20 DUP5 ADD MLOAD SWAP1 SWAP3 POP PUSH4 0xFFFFFFFF DUP2 AND DUP2 EQ PUSH2 0x4647 JUMPI PUSH0 PUSH0 REVERT JUMPDEST PUSH1 0xFF DUP4 AND DUP2 MSTORE PUSH1 0x40 PUSH1 0x20 DUP3 ADD MSTORE PUSH0 PUSH2 0xE91 PUSH1 0x40 DUP4 ADD DUP5 PUSH2 0x4373 JUMP JUMPDEST PUSH0 DUP3 MLOAD DUP1 PUSH1 0x20 DUP6 ADD DUP5 MCOPY PUSH0 SWAP3 ADD SWAP2 DUP3 MSTORE POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH0 PUSH1 0x1 PUSH1 0xFF SHL DUP3 ADD PUSH2 0x4E20 JUMPI PUSH2 0x4E20 PUSH2 0x4B19 JUMP JUMPDEST POP PUSH0 SUB SWAP1 JUMP JUMPDEST DUP2 DUP2 SUB PUSH0 DUP4 SLT DUP1 ISZERO DUP4 DUP4 SGT AND DUP4 DUP4 SLT DUP3 AND OR ISZERO PUSH2 0x3576 JUMPI PUSH2 0x3576 PUSH2 0x4B19 JUMP JUMPDEST PUSH4 0x4E487B71 PUSH1 0xE0 SHL PUSH0 MSTORE PUSH1 0x21 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH0 REVERT JUMPDEST PUSH0 PUSH1 0xFF DUP4 AND DUP1 PUSH2 0x4E6B JUMPI PUSH2 0x4E6B PUSH2 0x4BE4 JUMP JUMPDEST DUP1 PUSH1 0xFF DUP5 AND MOD SWAP2 POP POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x1F DUP3 GT ISZERO PUSH2 0x239B JUMPI DUP1 PUSH0 MSTORE PUSH1 0x20 PUSH0 KECCAK256 PUSH1 0x1F DUP5 ADD PUSH1 0x5 SHR DUP2 ADD PUSH1 0x20 DUP6 LT ISZERO PUSH2 0x4E9F JUMPI POP DUP1 JUMPDEST PUSH1 0x1F DUP5 ADD PUSH1 0x5 SHR DUP3 ADD SWAP2 POP JUMPDEST DUP2 DUP2 LT ISZERO PUSH2 0x25E6 JUMPI PUSH0 DUP2 SSTORE PUSH1 0x1 ADD PUSH2 0x4EAB JUMP JUMPDEST DUP2 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0x40 SHL SUB DUP2 GT ISZERO PUSH2 0x4ED7 JUMPI PUSH2 0x4ED7 PUSH2 0x447B JUMP JUMPDEST PUSH2 0x4EEB DUP2 PUSH2 0x4EE5 DUP5 SLOAD PUSH2 0x4AE1 JUMP JUMPDEST DUP5 PUSH2 0x4E7A JUMP JUMPDEST PUSH1 0x20 PUSH1 0x1F DUP3 GT PUSH1 0x1 DUP2 EQ PUSH2 0x4F1D JUMPI PUSH0 DUP4 ISZERO PUSH2 0x4F06 JUMPI POP DUP5 DUP3 ADD MLOAD JUMPDEST PUSH0 NOT PUSH1 0x3 DUP6 SWAP1 SHL SHR NOT AND PUSH1 0x1 DUP5 SWAP1 SHL OR DUP5 SSTORE PUSH2 0x25E6 JUMP JUMPDEST PUSH0 DUP5 DUP2 MSTORE PUSH1 0x20 DUP2 KECCAK256 PUSH1 0x1F NOT DUP6 AND SWAP2 JUMPDEST DUP3 DUP2 LT ISZERO PUSH2 0x4F4C JUMPI DUP8 DUP6 ADD MLOAD DUP3 SSTORE PUSH1 0x20 SWAP5 DUP6 ADD SWAP5 PUSH1 0x1 SWAP1 SWAP3 ADD SWAP2 ADD PUSH2 0x4F2C JUMP JUMPDEST POP DUP5 DUP3 LT ISZERO PUSH2 0x4F69 JUMPI DUP7 DUP5 ADD MLOAD PUSH0 NOT PUSH1 0x3 DUP8 SWAP1 SHL PUSH1 0xF8 AND SHR NOT AND DUP2 SSTORE JUMPDEST POP POP POP POP PUSH1 0x1 SWAP1 DUP2 SHL ADD SWAP1 SSTORE POP JUMP INVALID LOG2 0xAD 0xA5 0xD6 PUSH20 0xDBA5EECEA7C7503EE87E29913D0D36AE093E950D PUSH4 0x2F7B8689 0x1F STOP MSTORE 0xC6 ORIGIN SELFBALANCE RJUMPI 0xF47D 0xB1 SWAP14 TLOAD RJUMP 0x4600 ADDRESS 0xC4 SWAP8 CREATE PUSH8 0xCA4CEBF71BA98EEA 0xDA 0xBE KECCAK256 0xBA 0xCE STOP CALLDATASIZE ADDMOD SWAP5 LOG1 EXTCODESIZE LOG1 LOG3 0x21 MOD PUSH8 0xC828492DB98DCA3E KECCAK256 PUSH23 0xCC3735A920A3CA505D382BBCA2646970667358221220F3 REVERT CODECOPY 0xDB LOG0 0xE8 0xD3 0xD3 0xBB JUMPF 0xA062 DUP11 0xB0 PUSH27 0x772C03D00F8CFE726D02571DAC7612472464736F6C634300081E00 CALLER ","sourceMap":"1154:6057:55:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;4363:109:52;;;;;;;;;;;;;:::i;:::-;;;160:25:87;;;148:2;133:18;4363:109:52;;;;;;;;2715:144:12;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;8750:148:13:-;;;;;;;;;;-1:-1:-1;8750:148:13;;;;;:::i;:::-;;:::i;5132:186:12:-;;;;;;;;;;-1:-1:-1;5132:186:12;;;;;:::i;:::-;;:::i;:::-;;;1619:14:87;;1612:22;1594:41;;1582:2;1567:18;5132:186:12;1454:187:87;9887:147:13;;;;;;;;;;-1:-1:-1;9887:147:13;;;;;:::i;:::-;;:::i;2807:231:55:-;;;;;;;;;;-1:-1:-1;2807:231:55;;;;;:::i;:::-;;:::i;:::-;;3868:152:12;;;;;;;;;;-1:-1:-1;3999:14:12;;3868:152;;5910:244;;;;;;;;;;-1:-1:-1;5910:244:12;;;;;:::i;:::-;;:::i;3111:110:55:-;;;;;;;;;;-1:-1:-1;;;;;;;;;;;;3191:25:55;-1:-1:-1;;;;;3191:25:55;3111:110;;7963:221:13;;;;;;;;;;;;;:::i;:::-;;;2682:4:87;2670:17;;;2652:36;;2640:2;2625:18;7963:221:13;2510:184:87;8219:153:13;;;;;;;;;;;;;:::i;:::-;;;-1:-1:-1;;;;;2863:32:87;;;2845:51;;2833:2;2818:18;8219:153:13;2699:203:87;10498:404:54;;;;;;;;;;-1:-1:-1;10498:404:54;;;;;:::i;:::-;;:::i;3960:115:52:-;;;;;;;;;;-1:-1:-1;3960:115:52;;;;;:::i;:::-;;:::i;8550:99:54:-;;;;;;;;;;-1:-1:-1;8550:99:54;;;;;:::i;:::-;;:::i;8843:386::-;;;;;;;;;;-1:-1:-1;8843:386:54;;;;;:::i;:::-;;:::i;3911:214:31:-;;;;;;:::i;:::-;;:::i;5238:274:55:-;;;;;;;;;;-1:-1:-1;5238:274:55;;;;;:::i;:::-;;:::i;20278:110:54:-;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;3466:126:31:-;;;;;;;;;;;;;:::i;10250:392:13:-;;;;;;;;;;-1:-1:-1;10250:392:13;;;;;:::i;:::-;;:::i;4053:171:12:-;;;;;;;;;;-1:-1:-1;4053:171:12;;;;;:::i;:::-;;:::i;1743:41:54:-;;;;;;;;;;;;1782:2;1743:41;;11762:650;;;;;;;;;;-1:-1:-1;11762:650:54;;;;;:::i;:::-;;:::i;12701:662::-;;;;;;;;;;-1:-1:-1;12701:662:54;;;;;:::i;:::-;;:::i;5651:346:52:-;;;;;;;;;;-1:-1:-1;5651:346:52;;;;;:::i;:::-;;:::i;:::-;;;-1:-1:-1;;;;;;8967:33:87;;;8949:52;;8937:2;8922:18;5651:346:52;8805:202:87;4411:169:55;;;;;;;;;;-1:-1:-1;4411:169:55;;;;;:::i;:::-;;:::i;16272:733:54:-;;;;;;;;;;-1:-1:-1;16272:733:54;;;;;:::i;:::-;;:::i;3798:123:55:-;;;;;;;;;;-1:-1:-1;3798:123:55;;;;;:::i;:::-;3861:6;3882:34;;;:28;:34;;;;;;;3798:123;10677:380:13;;;;;;;;;;-1:-1:-1;10677:380:13;;;;;:::i;:::-;;:::i;2972:148:12:-;;;;;;;;;;;;;:::i;13739:2217:54:-;;;;;;;;;;-1:-1:-1;13739:2217:54;;;;;:::i;:::-;;:::i;2229:392:52:-;;;;;;;;;;-1:-1:-1;2229:392:52;;;;;:::i;:::-;;:::i;4419:178:12:-;;;;;;;;;;-1:-1:-1;4419:178:12;;;;;:::i;:::-;;:::i;1732:58:31:-;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;1732:58:31;;;;;9709:143:13;;;;;;;;;;-1:-1:-1;9709:143:13;;;;;:::i;:::-;;:::i;11092:413::-;;;;;;;;;;-1:-1:-1;11092:413:13;;;;;:::i;:::-;;:::i;11540:405::-;;;;;;;;;;-1:-1:-1;11540:405:13;;;;;:::i;:::-;;:::i;17329:744:54:-;;;;;;;;;;-1:-1:-1;17329:744:54;;;;;:::i;:::-;;:::i;4106:226:52:-;;;;;;;;;;-1:-1:-1;4106:226:52;;;;;:::i;:::-;;:::i;8567:148:13:-;;;;;;;;;;-1:-1:-1;8567:148:13;;;;;:::i;:::-;;:::i;3358:182:52:-;;;;;;;;;;-1:-1:-1;3358:182:52;;;;;:::i;:::-;;:::i;3328:99:55:-;;;;;;;;;;-1:-1:-1;;;;;;;;;;;;3400:22:55;-1:-1:-1;;;3400:22:55;;-1:-1:-1;;;;;3400:22:55;3328:99;;3571:358:52;;;;;;;;;;-1:-1:-1;3571:358:52;;;;;:::i;:::-;;:::i;19723:114:54:-;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;4630:195:12:-;;;;;;;;;;-1:-1:-1;4630:195:12;;;;;:::i;:::-;;:::i;18544:1009:54:-;;;;;;;;;;-1:-1:-1;18544:1009:54;;;;;:::i;:::-;;:::i;20003:108::-;;;;;;;;;;;;;:::i;4363:109:52:-;4424:14;4453;:12;:14::i;:::-;4446:21;;4363:109;:::o;2715:144:12:-;2845:7;2838:14;;2760:13;;-1:-1:-1;;;;;;;;;;;2082:20:12;2838:14;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2715:144;:::o;8750:148:13:-;8820:7;8846:45;8863:6;8871:19;8846:16;:45::i;:::-;8839:52;8750:148;-1:-1:-1;;8750:148:13:o;5132:186:12:-;5205:4;987:10:14;5259:31:12;987:10:14;5275:7:12;5284:5;5259:8;:31::i;:::-;-1:-1:-1;5307:4:12;;5132:186;-1:-1:-1;;;5132:186:12:o;9887:147:13:-;9957:7;9983:44;10000:6;10008:18;9983:16;:44::i;2807:231:55:-;-1:-1:-1;;;;;;;;;;;2937:17:55;:5;:15;:17::i;:::-;2927:27;;-1:-1:-1;;;;;2927:27:55;;;-1:-1:-1;;;2927:27:55;;;;;;2973:20;:8;:18;:20::i;:::-;2960:33;;-1:-1:-1;;2960:33:55;-1:-1:-1;;;;;2960:33:55;;;;;;;3004:29;;;17174:25:87;;;17230:2;17215:18;;17208:34;;;3004:29:55;;17147:18:87;3004:29:55;;;;;;;;2876:162;2807:231;;:::o;5910:244:12:-;5997:4;987:10:14;6053:37:12;6069:4;987:10:14;6084:5:12;6053:15;:37::i;:::-;6100:26;6110:4;6116:2;6120:5;6100:9;:26::i;:::-;6143:4;6136:11;;;5910:244;;;;;;:::o;7963:221:13:-;8055:5;;5498:22;8072:47;-1:-1:-1;14580:5:13;8136:21;;:41;;;-1:-1:-1;;;8136:21:13;;;;:41;:::i;:::-;8129:48;;;7963:221;:::o;8219:153::-;5498:22;8356:8;-1:-1:-1;;;;;8356:8:13;;8219:153::o;10498:404:54:-;10626:12;10646:57;10670:13;10685:6;10693:9;10646:23;:57::i;:::-;10709:24;10736:11;10748:13;10736:26;;;;;;;;;:::i;:::-;;;-1:-1:-1;;;;;10736:26:54;;-1:-1:-1;10736:26:54;10768:61;;10812:17;;-1:-1:-1;;;10812:17:54;;;;;;;;;;;10768:61;10842:55;10879:6;10887:9;10842:11;10854:13;10842:26;;;;;;;;;:::i;:::-;;;-1:-1:-1;;;;;10842:26:54;;:55;:36;:55::i;:::-;10835:62;10498:404;-1:-1:-1;;;;;10498:404:54:o;3960:115:52:-;4027:11;4053:17;:15;:17::i;8550:99:54:-;8616:28;8637:6;8616:20;:28::i;:::-;8550:99;:::o;8843:386::-;8911:12;8936:9;8931:253;8989:1;8947:11;8959:1;8947:14;;;;;;;:::i;:::-;;;-1:-1:-1;;;;;8947:14:54;:45;;;;:67;;-1:-1:-1;1782:2:54;8996:18;;8947:67;8931:253;;;9041:11;9053:1;9041:14;;;;;;;:::i;:::-;;;;;;;;;;-1:-1:-1;;;;;9041:14:54;-1:-1:-1;;;;;9041:26:54;;:28;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;9033:4;:36;9029:149;;9155:14;;9140:4;;;;9155:14;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;8843:386;;;:::o;9029:149::-;9016:3;;;:::i;:::-;;;8931:253;;;;9196:28;;-1:-1:-1;;;9196:28:54;;;;;;;;;;;3911:214:31;2568:13;:11;:13::i;:::-;4072:46:::1;4094:17;4113:4;4072:21;:46::i;:::-;3911:214:::0;;:::o;5238:274:55:-;5313:15;5354:34;;;:28;:34;;;;;;;;5443:11;;5313:15;5405:49;5443:11;5354:34;5405:49;:::i;:::-;;;;;-1:-1:-1;5465:42:55;;;18449:25:87;;;18505:2;18490:18;;18483:34;;;18533:18;;;18526:34;;;5405:49:55;;-1:-1:-1;5465:42:55;;-1:-1:-1;18437:2:87;18422:18;5465:42:55;;;;;;;5330:182;5238:274;;;;:::o;20278:110:54:-;20326:28;;:::i;:::-;20362:21;;;;;;;;;;;20369:14;;20362:21;;20369:14;-1:-1:-1;20362:21:54;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;20278:110;:::o;3466:126:31:-;3527:7;2839:20;:18;:20::i;:::-;-1:-1:-1;;;;;;;;;;;;3466:126:31;:::o;10250:392:13:-;10325:7;10344:17;10364:20;10375:8;10364:10;:20::i;:::-;10344:40;;10407:9;10398:6;:18;10394:110;;;10465:8;10475:6;10483:9;10439:54;;-1:-1:-1;;;10439:54:13;;;;;;;;;;:::i;:::-;;;;;;;;10394:110;10514:14;10531:22;10546:6;10531:14;:22::i;:::-;10514:39;-1:-1:-1;10563:48:13;987:10:14;10586:8:13;10596:6;10604;10563:8;:48::i;:::-;10629:6;10250:392;-1:-1:-1;;;;10250:392:13:o;4053:171:12:-;-1:-1:-1;;;;;4197:20:12;4118:7;4197:20;;;-1:-1:-1;;;;;;;;;;;4197:20:12;;;;;;;4053:171::o;11762:650:54:-;11921:24;11948:11;11960:13;11948:26;;;;;;;;;:::i;:::-;;;-1:-1:-1;;;;;11948:26:54;;-1:-1:-1;11948:26:54;11980:61;;12024:17;;-1:-1:-1;;;12024:17:54;;;;;;;;;;;11980:61;12052:9;12047:200;1782:2;12063:18;;:67;;;;-1:-1:-1;12127:1:54;12085:11;12097:1;12085:14;;;;;;;:::i;:::-;;;-1:-1:-1;;;;;12085:14:54;:45;;12063:67;12047:200;;;12167:11;-1:-1:-1;;;;;12149:29:54;:11;12161:1;12149:14;;;;;;;:::i;:::-;;;-1:-1:-1;;;;;12149:14:54;:29;:51;;;;;12187:13;12182:18;;:1;:18;;12149:51;12145:95;;;12209:31;;-1:-1:-1;;;12209:31:54;;-1:-1:-1;;;;;2863:32:87;;12209:31:54;;;2845:51:87;2818:18;;12209:31:54;2699:203:87;12145:95:54;12132:3;;;:::i;:::-;;;12047:200;;;;12252:109;12288:8;12298:11;12311:16;12344:8;:6;:8::i;:::-;12355:5;12252:35;:109::i;:::-;12396:11;12367;12379:13;12367:26;;;;;;;;;:::i;:::-;;:40;;-1:-1:-1;;;;;;12367:40:54;-1:-1:-1;;;;;12367:40:54;;;;;;;;;;-1:-1:-1;;;;;11762:650:54:o;12701:662::-;-1:-1:-1;;;;;12807:34:54;;12803:64;;12850:17;;-1:-1:-1;;;12850:17:54;;;;;;;;;;;12803:64;12873:9;12888:169;1782:2;12895:18;;:67;;;;-1:-1:-1;12959:1:54;12917:11;12929:1;12917:14;;;;;;;:::i;:::-;;;-1:-1:-1;;;;;12917:14:54;:45;;12895:67;12888:169;;;12999:11;-1:-1:-1;;;;;12981:29:54;:11;12993:1;12981:14;;;;;;;:::i;:::-;;;-1:-1:-1;;;;;12981:14:54;:29;12977:73;;13019:31;;-1:-1:-1;;;13019:31:54;;-1:-1:-1;;;;;2863:32:87;;13019:31:54;;;2845:51:87;2818:18;;13019:31:54;2699:203:87;12977:73:54;12964:3;;;:::i;:::-;;;12888:169;;;-1:-1:-1;;13066:19:54;;13062:57;;13094:25;;-1:-1:-1;;;;;;13094:25:54;;;;;;;;;;;13062:57;13142:11;13125;13137:1;13125:14;;;;;;;:::i;:::-;;:28;;-1:-1:-1;;;;;;13125:28:54;-1:-1:-1;;;;;13125:28:54;;;;;;;;;;13184:5;:1;-1:-1:-1;13184:5:54;:::i;:::-;13159:13;13173:1;13159:16;;;;;;;:::i;:::-;;;;;;;;;;:31;;;;;;;;;;;;;;;;;;13222:1;13226;13222:5;;;;:::i;:::-;13196:14;13211:1;13196:17;;;;;;;:::i;:::-;;;;;;;;;;:32;;;;;;;;;;;;;;;;;;13234;13257:8;:6;:8::i;:::-;-1:-1:-1;;;;;13234:22:54;;;;:32::i;:::-;13272:39;-1:-1:-1;;;;;13272:21:54;;13294:16;13272:21;:39::i;:::-;13322:36;;2682:4:87;2670:17;;2652:36;;-1:-1:-1;;;;;13322:36:54;;;;;2640:2:87;2625:18;13322:36:54;;;;;;;12797:566;12701:662;;:::o;5651:346:52:-;5745:15;5874:16;5901:11;5913:13;5901:26;;;;;;;;;:::i;:::-;;;5963:28;;;-1:-1:-1;;;;;5901:26:52;;;5963:28;;;19454:51:87;;;19553:4;19541:17;;19521:18;;;19514:45;;;;5901:26:52;-1:-1:-1;5941:51:52;;19427:18:87;;5963:28:52;;;;;;;;;;;;3409:20:0;;;;;;;;3312:123;4411:169:55;4495:9;4554:20;4566:8;4554:20;;;;:::i;:::-;4534:40;;4547:3;4535:15;;;4534:40;:::i;16272:733:54:-;16354:32;;:::i;:::-;16415:23;;16392:9;;1782:2;-1:-1:-1;16411:67:54;;;16464:14;;-1:-1:-1;;;16464:14:54;;;;;;;;;;;16411:67;16495:16;:23;16491:1;:27;16484:371;;;1782:2;16537:37;;:16;16554:1;16537:19;;;;;;;;:::i;:::-;;;;;;;:37;;;;:96;;;;16631:1;-1:-1:-1;;;;;16578:55:54;16586:11;16598:16;16615:1;16598:19;;;;;;;;:::i;:::-;;;;;;;16586:32;;;;;;;;;:::i;:::-;;;-1:-1:-1;;;;;16586:32:54;16578:55;16537:96;16533:131;;;16650:14;;-1:-1:-1;;;16650:14:54;;;;;;;;;;;16533:131;16676:4;16681:16;16698:1;16681:19;;;;;;;;:::i;:::-;;;;;;;16676:25;;;;;;;;;:::i;:::-;;;;;16672:86;;;16738:16;16755:1;16738:19;;;;;;;;:::i;:::-;;;;;;;16710:48;;-1:-1:-1;;;16710:48:54;;;;;;;2682:4:87;2670:17;;;;2652:36;;2640:2;2625:18;;2510:184;16672:86:54;16794:4;16766;16771:16;16788:1;16771:19;;;;;;;;:::i;:::-;;;;;;;16766:25;;;;;;;;;:::i;:::-;:32;;;:25;;;;;:32;16825:19;;;;16842:1;;16825:19;;;;;;:::i;:::-;;;;;;;16847:1;16825:23;;;;:::i;:::-;16806:13;16820:1;16806:16;;;;;;;:::i;:::-;;;;;;;;;;:42;;;;;;;;;;;;;;;;;;16520:3;;;;;16484:371;;;1782:2;16864:18;;:59;;;;-1:-1:-1;16921:1:54;16894:11;16906:1;16894:14;;;;;;;:::i;:::-;;;-1:-1:-1;;;;;16894:14:54;16886:37;;16864:59;16860:92;;;16932:20;;-1:-1:-1;;;16932:20:54;;;;;;;;;;;16860:92;16963:37;16983:16;16963:37;;;;;;:::i;10677:380:13:-;10749:7;10768:17;10788;10796:8;10788:7;:17::i;:::-;10768:37;;10828:9;10819:6;:18;10815:107;;;10883:8;10893:6;10901:9;10860:51;;-1:-1:-1;;;10860:51:13;;;;;;;;;;:::i;10815:107::-;10932:14;10949:19;10961:6;10949:11;:19::i;:::-;10932:36;-1:-1:-1;10978:48:13;987:10:14;11001:8:13;11011:6;11019;10978:8;:48::i;2972:148:12:-;3104:9;3097:16;;3019:13;;-1:-1:-1;;;;;;;;;;;2082:20:12;3097:16;;;:::i;13739:2217:54:-;1782:2;13821:31;;;;13817:61;;13861:17;;-1:-1:-1;;;13861:17:54;;;;;;;;;;;13817:61;13884:24;13911:11;13923:13;13911:26;;;;;;;;;:::i;:::-;;;-1:-1:-1;;;;;13911:26:54;;-1:-1:-1;13911:26:54;13943:61;;13987:17;;-1:-1:-1;;;13987:17:54;;;;;;;;;;;13943:61;14015:5;14014:6;:37;;;;;14024:22;:8;-1:-1:-1;;;;;14024:20:54;;:22::i;:::-;:27;;14014:37;14010:82;;;14060:32;;-1:-1:-1;;;14060:32:54;;;;;;;;;;;14010:82;14143:18;;;;:59;;;;-1:-1:-1;14173:14:54;;-1:-1:-1;;;;;14173:14:54;14165:37;14143:59;14139:97;;;14211:25;;-1:-1:-1;;;;;;14211:25:54;;;;;;;;;;;14139:97;14293:9;14305:17;:13;14321:1;14305:17;:::i;:::-;14293:29;;;;14328:131;1782:2;14335:18;;:67;;;;-1:-1:-1;14399:1:54;14357:11;14369:1;14357:14;;;;;;;:::i;:::-;;;-1:-1:-1;;;;;14357:14:54;:45;;14335:67;14328:131;;;14438:11;14450:1;14438:14;;;;;;;:::i;:::-;;;-1:-1:-1;;;;;14438:14:54;14417:11;14429:5;14438:14;14429:1;:5;:::i;:::-;14417:18;;;;;;;:::i;:::-;;:35;;-1:-1:-1;;;;;;14417:35:54;-1:-1:-1;;;;;14417:35:54;;;;;;;;;;14404:3;;;:::i;:::-;;;14328:131;;;14509:1;14464:11;14476:5;14480:1;14476;:5;:::i;:::-;14464:18;;;;;;;:::i;:::-;;:48;;-1:-1:-1;;;;;;14464:48:54;-1:-1:-1;;;;;14464:48:54;;;;;;;;;;-1:-1:-1;;;;14615:1191:54;14627:14;14642:1;14627:17;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;:22;;;;:44;;-1:-1:-1;1782:2:54;14653:18;;14627:44;14615:1191;;;14690:13;14686:544;;;14858:17;:13;14874:1;14858:17;:::i;:::-;14837:39;;:14;14852:1;14837:17;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;:39;14836:49;;14884:1;14836:49;;;14880:1;14836:49;14815:14;14830:1;14815:17;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;:71;;;;:::i;:::-;14791:14;14806:5;14791:14;14806:1;:5;:::i;:::-;14791:21;;;;;;;:::i;:::-;;;;;;;;;;:95;;;;;;;;;;;;;;;;;;14686:544;;;14937:17;:13;14953:1;14937:17;:::i;:::-;14915:40;;:14;14930:1;14915:17;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;:40;14911:311;;-1:-1:-1;15063:4:54;14911:311;;;15109:17;:13;15125:1;15109:17;:::i;:::-;15088:39;;:14;15103:1;15088:17;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;:39;15084:138;;;15210:1;15189:14;15204:1;15189:17;;;;;;;:::i;:::-;;;;;;;;;;:22;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;15084:138;15268:12;15264:536;;;15432:17;:13;15448:1;15432:17;:::i;:::-;15412:38;;:13;15426:1;15412:16;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;:38;15411:48;;15458:1;15411:48;;;15454:1;15411:48;15391:13;15405:1;15391:16;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;:69;;;;:::i;:::-;15368:13;15382:5;15386:1;15382;:5;:::i;:::-;15368:20;;;;;;;:::i;:::-;;;;;;;;;;:92;;;;;;;;;;;;;;;;;;15264:536;;;15510:17;:13;15526:1;15510:17;:::i;:::-;15489:39;;:13;15503:1;15489:16;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;:39;15485:307;;15635:4;15620:19;;15485:307;;;15680:17;:13;15696:1;15680:17;:::i;:::-;15660:38;;:13;15674:1;15660:16;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;:38;15656:136;;;15780:1;15760:13;15774:1;15760:16;;;;;;;:::i;:::-;;;;;;;;;;:21;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;15656:136;14673:3;;;:::i;:::-;;;14615:1191;;;15834:1;;15825:5;15829:1;15825;:5;:::i;:::-;15811:20;;;;;;;:::i;:::-;;;;;;;;;;:24;;;;;;;;;;;;;;;;;;15865:1;15841:14;15860:1;15856;:5;;;;:::i;:::-;15841:21;;;;;;;:::i;:::-;;;;;;;;;;:25;;;;;;;;;;;;;;;;;;15872:28;15894:5;15872:8;-1:-1:-1;;;;;15872:21:54;;;:28;;;;:::i;:::-;15911:40;;2682:4:87;2670:17;;2652:36;;-1:-1:-1;;;;;15911:40:54;;;;;2640:2:87;2625:18;15911:40:54;;;;;;;13811:2145;;;;13739:2217;;:::o;2229:392:52:-;4158:30:30;4191:26;:24;:26::i;:::-;4302:15;;4158:59;;-1:-1:-1;4302:15:30;-1:-1:-1;;;4302:15:30;;;4301:16;;-1:-1:-1;;;;;4348:14:30;4279:19;4724:16;;:34;;;;;4744:14;4724:34;4704:54;;4768:17;4788:11;-1:-1:-1;;;;;4788:16:30;4803:1;4788:16;:50;;;;-1:-1:-1;4816:4:30;4808:25;:30;4788:50;4768:70;;4854:12;4853:13;:30;;;;;4871:12;4870:13;4853:30;4849:91;;;4906:23;;-1:-1:-1;;;4906:23:30;;;;;;;;;;;4849:91;4949:18;;-1:-1:-1;;4949:18:30;4966:1;4949:18;;;4977:67;;;;5011:22;;-1:-1:-1;;;;5011:22:30;-1:-1:-1;;;5011:22:30;;;4977:67;2506:110:52::1;2530:5;2537:7;2546:6;2554:11;2567:17;2586:13;2601:14;2506:23;:110::i;:::-;5068:14:30::0;5064:101;;;5098:23;;-1:-1:-1;;;;5098:23:30;;;5140:14;;-1:-1:-1;20892:50:87;;5140:14:30;;20880:2:87;20865:18;5140:14:30;;;;;;;5064:101;4092:1079;;;;;2229:392:52;;;;;;;:::o;4419:178:12:-;4488:4;987:10:14;4542:27:12;987:10:14;4559:2:12;4563:5;4542:9;:27::i;9709:143:13:-;9775:7;9801:44;9818:6;9826:18;9801:16;:44::i;11092:413::-;11183:7;11202:17;11222:18;11234:5;11222:11;:18::i;:::-;11202:38;;11263:9;11254:6;:18;11250:108;;;11322:5;11329:6;11337:9;11295:52;;-1:-1:-1;;;11295:52:13;;;;;;;;;;:::i;11250:108::-;11368:14;11385:23;11401:6;11385:15;:23::i;:::-;11368:40;-1:-1:-1;11418:56:13;987:10:14;11442:8:13;11452:5;11459:6;11467;11418:9;:56::i;11540:405::-;11629:7;11648:17;11668:16;11678:5;11668:9;:16::i;:::-;11648:36;;11707:9;11698:6;:18;11694:106;;;11764:5;11771:6;11779:9;11739:50;;-1:-1:-1;;;11739:50:13;;;;;;;;;;:::i;11694:106::-;11810:14;11827:21;11841:6;11827:13;:21::i;:::-;11810:38;-1:-1:-1;11858:56:13;987:10:14;11882:8:13;11892:5;11899:6;11907;11858:9;:56::i;17329:744:54:-;17413:32;;:::i;:::-;17472:24;;17451:7;;1782:2;-1:-1:-1;17468:68:54;;;17522:14;;-1:-1:-1;;;17522:14:54;;;;;;;;;;;17468:68;17553:17;:24;17549:1;:28;;;17542:379;;;1782:2;17596:38;;:17;17614:1;17596:20;;;;;;;;;;:::i;:::-;;;;;;;:38;;;;:98;;;;17692:1;-1:-1:-1;;;;;17638:56:54;17646:11;17658:17;17676:1;17658:20;;;;;;;;;;:::i;:::-;;;;;;;17646:33;;;;;;;;;:::i;:::-;;;-1:-1:-1;;;;;17646:33:54;17638:56;17596:98;17592:133;;;17711:14;;-1:-1:-1;;;17711:14:54;;;;;;;;;;;17592:133;17737:4;17742:17;17760:1;17742:20;;;;;;;;;;:::i;:::-;;;;;;;17737:26;;;;;;;;;:::i;:::-;;;;;17733:88;;;17800:17;17818:1;17800:20;;;;;;;;;;:::i;17733:88::-;17858:4;17829;17834:17;17852:1;17834:20;;;;;;;;;;:::i;:::-;;;;;;;17829:26;;;;;;;;;:::i;:::-;:33;;;:26;;;;;:33;17890:20;;;;;;;;;;;;;;:::i;:::-;;;;;;;17913:1;17890:24;;;;:::i;:::-;17870:14;17885:1;17870:17;;;;;;;;;:::i;:::-;;;;;;;;;;:44;;;;;;;;;;;;;;;;;;17579:3;;;;:::i;:::-;;;17542:379;;;1782:2;17930:18;;;;:59;;;;-1:-1:-1;17987:1:54;17960:11;:14;;;;;;;;;;:::i;:::-;;;-1:-1:-1;;;;;17960:14:54;17952:37;;17930:59;17926:92;;;17998:20;;-1:-1:-1;;;17998:20:54;;;;;;;;;;;17926:92;18029:39;18050:17;18029:39;;;;;;:::i;4106:226:52:-;4170:7;4185:14;4202:17;:15;:17::i;:::-;4185:34;;-1:-1:-1;;4232:6:52;:27;:95;;4282:45;4299:6;4307:19;4282:16;:45::i;:::-;4232:95;;;-1:-1:-1;;4225:102:52;4106:226;-1:-1:-1;;;4106:226:52:o;8567:148:13:-;8637:7;8663:45;8680:6;8688:19;8663:16;:45::i;3358:182:52:-;3432:7;3447:19;3469:24;3487:5;3469:17;:24::i;:::-;3447:46;;3506:29;3523:11;3506:16;:29::i;3571:358::-;3643:7;3658:14;3675:22;3691:5;3675:15;:22::i;:::-;3658:39;;3703:19;3725:45;3742:6;3750:19;3725:16;:45::i;:::-;3703:67;;3776:17;3796:29;3813:11;3796:16;:29::i;:::-;3776:49;;3852:11;3839:9;:24;3838:86;;3876:48;3893:9;3904:19;3876:16;:48::i;:::-;3838:86;;;-1:-1:-1;3867:6:52;;3831:93;-1:-1:-1;;;3571:358:52:o;19723:114:54:-;19768:38;;:::i;:::-;19814:18;;;;;;;;;;;19821:11;;19814:18;;19821:11;19814:18;;;;-1:-1:-1;;;;;19814:18:54;;;;;;;;;;;;;;;;;;;;;;19723:114;:::o;4630:195:12:-;-1:-1:-1;;;;;4789:20:12;;;4710:7;4789:20;;;:13;:20;;;;;;;;:29;;;;;;;;;;;;;4630:195::o;18544:1009:54:-;18647:7;1782:2;18666:33;;;;;;:68;;-1:-1:-1;1782:2:54;18703:31;;;;;18666:68;18662:98;;;18743:17;;-1:-1:-1;;;18743:17:54;;;;;;;;;;;18662:98;18766:28;18797:11;18809:15;18797:28;;;;;;;;;:::i;:::-;;;-1:-1:-1;;;;;18797:28:54;;-1:-1:-1;18797:28:54;18860:11;:26;;;;;;;;;;:::i;:::-;;;-1:-1:-1;;;;;18860:26:54;;;;-1:-1:-1;18896:35:54;;;;:72;;-1:-1:-1;;;;;;18935:33:54;;;18896:72;18892:102;;;18977:17;;-1:-1:-1;;;18977:17:54;;;;;;;;;;;18892:102;-1:-1:-1;;19004:6:54;:27;19000:68;;19042:26;:12;-1:-1:-1;;;;;19042:24:54;;:26::i;:::-;19033:35;;19000:68;19078:6;19088:1;19078:11;19074:25;;19098:1;19091:8;;;;;;19074:25;19186:26;:12;-1:-1:-1;;;;;19186:24:54;;:26::i;:::-;19177:6;:35;19173:109;;;19255:26;:12;-1:-1:-1;;;;;19255:24:54;;:26::i;:::-;19221:61;;-1:-1:-1;;;19221:61:54;;;;;;160:25:87;;148:2;133:18;;14:177;19173:109:54;19301:23;:10;-1:-1:-1;;;;;19301:21:54;;:23::i;:::-;19292:6;:32;19288:102;;;19366:23;:10;-1:-1:-1;;;;;19366:21:54;;:23::i;:::-;19333:57;;-1:-1:-1;;;19333:57:54;;;;;;160:25:87;;148:2;133:18;;14:177;19288:102:54;19396:38;-1:-1:-1;;;;;19396:23:54;;19420:6;19428:5;19396:23;:38::i;:::-;-1:-1:-1;19440:35:54;-1:-1:-1;;;;;19440:20:54;;19461:6;19469:5;19440:20;:35::i;:::-;;19510:10;-1:-1:-1;;;;;19486:43:54;19496:12;-1:-1:-1;;;;;19486:43:54;;19522:6;19486:43;;;;160:25:87;;148:2;133:18;;14:177;19486:43:54;;;;;;;;-1:-1:-1;19542:6:54;;18544:1009;-1:-1:-1;;;;18544:1009:54:o;20003:108::-;20050:28;;:::i;:::-;20086:20;;;;;;;;;;-1:-1:-1;20086:20:54;;;;;;;;;;-1:-1:-1;20086:20:54;;;;;;;;;;;;;;;;;;20003:108;:::o;6108:208::-;6155:14;6182:9;6177:135;6228:1;6201:11;6213:1;6201:14;;;;;;;:::i;:::-;;;-1:-1:-1;;;;;6201:14:54;6193:37;;;;:59;;-1:-1:-1;1782:2:54;6234:18;;6193:59;6177:135;;;6277:28;:11;6289:1;6277:14;;;;;;;:::i;:::-;;;-1:-1:-1;;;;;6277:14:54;:26;:28::i;:::-;6267:38;;;;:::i;:::-;;-1:-1:-1;6254:3:54;;;:::i;:::-;;;6177:135;;;;6108:208;:::o;12406:213:13:-;12503:7;12529:83;12543:13;:11;:13::i;:::-;:17;;12559:1;12543:17;:::i;:::-;12578:23;14580:5;12578:2;:23;:::i;:::-;3999:14:12;;12562:39:13;;;;:::i;:::-;12529:6;;:83;12603:8;12529:13;:83::i;9923:128:12:-;10007:37;10016:5;10023:7;10032:5;10039:4;10007:8;:37::i;:::-;9923:128;;;:::o;12069:213:13:-;12166:7;12192:83;12222:23;12166:7;12222:2;:23;:::i;:::-;3999:14:12;;12206:39:13;;;;:::i;:::-;12247:13;:11;:13::i;:::-;:17;;12263:1;12247:17;:::i;9264:218:48:-;9321:7;-1:-1:-1;;;;;9344:25:48;;9340:105;;;9392:42;;-1:-1:-1;;;9392:42:48;;9423:3;9392:42;;;22747:36:87;22799:18;;;22792:34;;;22720:18;;9392:42:48;22565:267:87;11669:476:12;11768:24;11795:25;11805:5;11812:7;11795:9;:25::i;:::-;11768:52;;-1:-1:-1;;11834:16:12;:36;11830:309;;;11909:5;11890:16;:24;11886:130;;;11968:7;11977:16;11995:5;11941:60;;-1:-1:-1;;;11941:60:12;;;;;;;;;;:::i;11886:130::-;12057:57;12066:5;12073:7;12101:5;12082:16;:24;12108:5;12057:8;:57::i;:::-;11758:387;11669:476;;;:::o;6527:300::-;-1:-1:-1;;;;;6610:18:12;;6606:86;;6651:30;;-1:-1:-1;;;6651:30:12;;6678:1;6651:30;;;2845:51:87;2818:18;;6651:30:12;2699:203:87;6606:86:12;-1:-1:-1;;;;;6705:16:12;;6701:86;;6744:32;;-1:-1:-1;;;6744:32:12;;6773:1;6744:32;;;2845:51:87;2818:18;;6744:32:12;2699:203:87;6701:86:12;6796:24;6804:4;6810:2;6814:5;6796:7;:24::i;6027:902:52:-;6380:20;6438:4;-1:-1:-1;;;;;6403:57:52;;:59;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;6380:82;;6469:14;6489:5;-1:-1:-1;;;;;6489:13:52;;6503:10;6523:4;6530:51;6559:13;6574:6;6530:28;:51::i;:::-;6489:93;;;;;;-1:-1:-1;;;;;;6489:93:52;;;;;-1:-1:-1;;;;;23334:32:87;;;6489:93:52;;;23316:51:87;23403:32;;;;23383:18;;;23376:60;23472:33;23452:18;;;23445:61;23289:18;;6489:93:52;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;6468:114;;;6860:9;6855:69;;6878:46;;-1:-1:-1;;;6878:46:52;;6913:10;6878:46;;;2845:51:87;2818:18;;6878:46:52;2699:203:87;6855:69:52;6132:797;;6027:902;;;:::o;4743:249:53:-;4844:12;4877:110;4967:6;4975:9;4916:70;;;;;;;;;:::i;:::-;;;;-1:-1:-1;;4916:70:53;;;;;;;;;;;;;;-1:-1:-1;;;;;4916:70:53;-1:-1:-1;;;4916:70:53;;;-1:-1:-1;;;;;4877:38:53;;;;:110::i;5678:321:54:-;5728:11;5747:15;5773:9;5768:211;5819:1;5792:11;5804:1;5792:14;;;;;;;:::i;:::-;;;-1:-1:-1;;;;;5792:14:54;5784:37;;;;:59;;-1:-1:-1;1782:2:54;5825:18;;5784:59;5768:211;;;5878:45;5890:3;5895:27;:11;5907:1;5895:14;;;;;;;:::i;:::-;;;-1:-1:-1;;;;;5895:14:54;:25;:27::i;:::-;1830:5:47;;1859:6;;;;;1888:28;;;;1693:240;5878:45:54;5858:65;-1:-1:-1;5858:65:54;-1:-1:-1;5858:65:54;5931:41;;-1:-1:-1;;5948:24:54;;;;5678:321;:::o;5931:41::-;5845:3;;;:::i;:::-;;;5768:211;;;;5984:10;5678:321;:::o;7474:595::-;7619:6;7604:12;7631:324;7647:9;;;;;:34;;;7660:13;7674:1;7660:16;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;:21;;7647:34;:56;;;;-1:-1:-1;1782:2:54;7685:18;;7647:56;7631:324;;;7718:24;7745:11;7776:1;7757:13;7771:1;7757:16;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;:20;;;;:::i;:::-;7745:33;;;;;;;;;:::i;:::-;;;-1:-1:-1;;;;;7745:33:54;;-1:-1:-1;7745:33:54;7806:37;7815:4;7821:21;7745:33;7821:19;:21::i;:::-;7806:8;:37::i;:::-;7786:57;;7855:9;7868:1;7855:14;7851:28;;7871:8;;;;7851:28;7887:36;-1:-1:-1;;;;;7887:18:54;;7906:9;7917:5;7887:18;:36::i;:::-;-1:-1:-1;7931:17:54;7939:9;7931:17;;:::i;:::-;;;7710:245;;7631:324;7705:3;;;:::i;:::-;;;7631:324;;;-1:-1:-1;7964:9:54;;7960:36;;7982:14;;-1:-1:-1;;;7982:14:54;;;;;;;;;;;4328:312:31;4408:4;-1:-1:-1;;;;;4417:6:31;4400:23;;;:120;;;4514:6;-1:-1:-1;;;;;4478:42:31;:32;-1:-1:-1;;;;;;;;;;;1519:53:27;-1:-1:-1;;;;;1519:53:27;;1441:138;4478:32:31;-1:-1:-1;;;;;4478:42:31;;;4400:120;4383:251;;;4594:29;;-1:-1:-1;;;4594:29:31;;;;;;;;;;;4383:251;4328:312::o;5782:538::-;5899:17;-1:-1:-1;;;;;5881:50:31;;:52;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;5881:52:31;;;;;;;;-1:-1:-1;;5881:52:31;;;;;;;;;;;;:::i;:::-;;;5877:437;;6243:60;;-1:-1:-1;;;6243:60:31;;-1:-1:-1;;;;;2863:32:87;;6243:60:31;;;2845:51:87;2818:18;;6243:60:31;2699:203:87;5877:437:31;-1:-1:-1;;;;;;;;;;;5975:40:31;;5971:120;;6042:34;;-1:-1:-1;;;6042:34:31;;;;;160:25:87;;;133:18;;6042:34:31;14:177:87;5971:120:31;6104:54;6134:17;6153:4;6104:29;:54::i;4757:213::-;4831:4;-1:-1:-1;;;;;4840:6:31;4823:23;;4819:145;;4924:29;;-1:-1:-1;;;4924:29:31;;;;;;;;;;;6806:403:55;-1:-1:-1;;;;;;;;;;;6971:10:55;;-1:-1:-1;;;;;6971:10:55;:15;6967:184;;7067:14;7084:12;:10;:12::i;:::-;7067:29;;7127:17;:6;:15;:17::i;:::-;7104:19;;;;:13;;;:19;;;;;:40;;:19;;;:40;;;;;:::i;:::-;;;;-1:-1:-1;;;6967:184:55;7156:48;7171:6;7179:8;7189:6;7197;7156:14;:48::i;3243:84:52:-;3293:7;3315;:5;:7::i;5914:843:53:-;6103:39;6114:11;6135:5;6103:10;:39::i;:::-;6312:38;;-1:-1:-1;;;6312:38:53;;6344:4;6312:38;;;2845:51:87;6288:70:53;;6299:11;;-1:-1:-1;;;;;6312:23:53;;;;;2818:18:87;;6312:38:53;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;6352:5;6288:10;:70::i;:::-;;6364:32;6377:11;6390:5;6364:12;:32::i;:::-;6516:43;6526:11;6539:19;6516:9;:43::i;:::-;6662:30;;-1:-1:-1;;;6662:30:53;;6686:4;6662:30;;;2845:51:87;6639:61:53;;6649:11;;-1:-1:-1;;;;;6662:15:53;;;;;2818:18:87;;6662:30:53;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;6694:5;6639:9;:61::i;:::-;-1:-1:-1;6711:41:53;;;-1:-1:-1;;;;;24664:32:87;;;24646:51;;24733:32;;24728:2;24713:18;;24706:60;6711:41:53;;24619:18:87;6711:41:53;;;;;;;5914:843;;;;;:::o;5181:159::-;5266:29;;-1:-1:-1;;;5266:29:53;;5289:4;5266:29;;;2845:51:87;-1:-1:-1;;;;;5266:38:53;;;;:14;;;;;;2818:18:87;;5266:29:53;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;-1:-1:-1;;;;;5266:38:53;;5262:73;;5313:22;;-1:-1:-1;;;5313:22:53;;;;;;;;;;;1120:193;1211:97;1290:16;1250:57;;;;;;;;:::i;:::-;;;;-1:-1:-1;;1250:57:53;;;;;;;;;;;;;;-1:-1:-1;;;;;1250:57:53;-1:-1:-1;;;1250:57:53;;;-1:-1:-1;;;;;1211:38:53;;;;:97::i;7489:132::-;7581:35;;-1:-1:-1;;;7581:35:53;;7610:4;7581:35;;;2845:51:87;7559:7:53;;-1:-1:-1;;;;;7581:20:53;;;;;2818:18:87;;7581:35:53;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;1729:465::-;1808:5;1804:386;;;1962:48;;2005:4;1962:48;;;1594:41:87;1881:12:53;;;;-1:-1:-1;;;;;1922:30:53;;;1567:18:87;;1962:48:53;;;-1:-1:-1;;1962:48:53;;;;;;;;;;;;;;-1:-1:-1;;;;;1962:48:53;-1:-1:-1;;;1962:48:53;;;1922:96;;;1962:48;1922:96;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1880:138;;;;2031:7;2026:47;;2045:28;2062:10;2045:28;;;;;;:::i;:::-;;;;;;;;1815:265;;3911:214:31;;:::o;1804:386:53:-;2133:49;;2176:5;2133:49;;;1594:41:87;2094:89:53;;1567:18:87;;2133:49:53;;;-1:-1:-1;;2133:49:53;;;;;;;;;;;;;;-1:-1:-1;;;;;2133:49:53;-1:-1:-1;;;2133:49:53;;;-1:-1:-1;;;;;2094:38:53;;;;:89::i;9071:205:30:-;9129:30;;3147:66;9186:27;8819:122;2676:443:52;6929:20:30;:18;:20::i;:::-;2965:22:52::1;2980:6;2965:14;:22::i;:::-;2993:28;3006:5;3013:7;2993:12;:28::i;:::-;3027:87;3052:11;3065:17;3084:13;3099:14;3027:24;:87::i;:::-;2676:443:::0;;;;;;;:::o;5743:1022:55:-;-1:-1:-1;;;;;;;;;;;5948:10:55;;-1:-1:-1;;;;;5948:10:55;:15;5944:755;;5973:14;5990:12;:10;:12::i;:::-;5973:29;-1:-1:-1;6061:18:55;6097:26;6122:1;5973:29;6097:26;:::i;:::-;6132:24;6199:23;;;:13;;;:23;;;;;;;6177:19;;;;;;;6061:63;;-1:-1:-1;6132:24:55;;6159:15;6167:6;6159:15;:::i;:::-;:37;;;;:::i;:::-;:63;;;;:::i;:::-;6132:90;;6478:1;6458:17;:21;:62;;;;-1:-1:-1;6513:7:55;;-1:-1:-1;;;6513:7:55;;-1:-1:-1;;;;;6513:7:55;6491:18;6492:17;6491:18;:::i;:::-;6483:37;6458:62;6454:123;;;6569:7;;6537:40;;-1:-1:-1;;;6537:40:55;;;;;25652:25:87;;;-1:-1:-1;;;6569:7:55;;;-1:-1:-1;;;;;6569:7:55;25693:18:87;;;25686:75;25625:18;;6537:40:55;25480:287:87;6454:123:55;6675:17;:6;:15;:17::i;:::-;6652:19;;;;:13;;;:19;;;;;:40;;:19;;;:40;;;;;:::i;:::-;;;;-1:-1:-1;;;;;5944:755:55;6704:56;6720:6;6728:8;6738:5;6745:6;6753;6704:15;:56::i;:::-;5893:872;5743:1022;;;;;:::o;9216:129:13:-;9281:7;9307:31;9321:16;9331:5;9321:9;:16::i;5166:340:54:-;5230:11;5249:15;5275:9;5270:216;5321:1;5294:11;5306:1;5294:14;;;;;;;:::i;:::-;;;-1:-1:-1;;;;;5294:14:54;5286:37;;;;:59;;-1:-1:-1;1782:2:54;5327:18;;5286:59;5270:216;;;5380:46;5392:3;5397:28;:11;5409:1;5397:14;;;;;;;:::i;:::-;;;-1:-1:-1;;;;;5397:14:54;:26;:28::i;5380:46::-;5360:66;-1:-1:-1;5360:66:54;-1:-1:-1;5438:11:54;;;:27;;;5460:5;5453:3;:12;;5438:27;5434:45;;;-1:-1:-1;5474:5:54;;5166:340;-1:-1:-1;;5166:340:54:o;5434:45::-;5347:3;;;:::i;:::-;;;5270:216;;;;5491:10;5166:340;;;:::o;9380:112:13:-;9443:7;9469:16;9479:5;9469:9;:16::i;8054:132:53:-;8146:35;;-1:-1:-1;;;8146:35:53;;8175:4;8146:35;;;2845:51:87;8124:7:53;;-1:-1:-1;;;;;8146:20:53;;;;;2818:18:87;;8146:35:53;2699:203:87;7771:130:53;7862:34;;-1:-1:-1;;;7862:34:53;;7890:4;7862:34;;;2845:51:87;7840:7:53;;-1:-1:-1;;;;;7862:19:53;;;;;2818:18:87;;7862:34:53;2699:203:87;2735:544:53;2833:4;2849:11;2845:430;;;2928:12;2942:23;2977:8;-1:-1:-1;;;;;2969:30:53;3050:6;3009:48;;;;;;160:25:87;;148:2;133:18;;14:177;3009:48:53;;;;-1:-1:-1;;3009:48:53;;;;;;;;;;;;;;-1:-1:-1;;;;;3009:48:53;-1:-1:-1;;;3009:48:53;;;2969:96;;;3009:48;2969:96;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2927:138;;;;3078:7;3073:45;;3092:26;3107:10;3092:26;;;;;;:::i;:::-;;;;;;;;3073:45;-1:-1:-1;3133:7:53;-1:-1:-1;3126:14:53;;2845:430;3161:88;3241:6;3200:48;;;;;;160:25:87;;148:2;133:18;;14:177;3200:48:53;;;;-1:-1:-1;;3200:48:53;;;;;;;;;;;;;;-1:-1:-1;;;;;3200:48:53;-1:-1:-1;;;3200:48:53;;;-1:-1:-1;;;;;3161:38:53;;;;:88::i;:::-;;3264:4;3257:11;;;;3816:540;3913:4;3929:11;3925:427;;;4008:12;4022:23;4057:8;-1:-1:-1;;;;;4049:30:53;4129:6;4089:47;;;;;;160:25:87;;148:2;133:18;;14:177;4089:47:53;;;;-1:-1:-1;;4089:47:53;;;;;;;;;;;;;;-1:-1:-1;;;;;4089:47:53;-1:-1:-1;;;4089:47:53;;;4049:95;;;4089:47;4049:95;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;4007:137;;;;4157:7;4152:44;;4171:25;4185:10;4171:25;;;;;;:::i;3925:427::-;4239:87;4318:6;4278:47;;;;;;160:25:87;;148:2;133:18;;14:177;4278:47:53;;;;-1:-1:-1;;4278:47:53;;;;;;;;;;;;;;-1:-1:-1;;;;;4278:47:53;-1:-1:-1;;;4278:47:53;;;-1:-1:-1;;;;;4239:38:53;;;;:87::i;11070:238:47:-;11171:7;11225:76;11241:26;11258:8;11241:16;:26::i;:::-;:59;;;;;11299:1;11284:11;11271:25;;;;;:::i;:::-;11281:1;11278;11271:25;:29;11241:59;34914:9:48;34907:17;;34795:145;11225:76:47;11197:25;11204:1;11207;11210:11;11197:6;:25::i;:::-;:104;;;;:::i;10900:487:12:-;-1:-1:-1;;;;;;;;;;;;;;;;11065:19:12;;11061:89;;11107:32;;-1:-1:-1;;;11107:32:12;;11136:1;11107:32;;;2845:51:87;2818:18;;11107:32:12;2699:203:87;11061:89:12;-1:-1:-1;;;;;11163:21:12;;11159:90;;11207:31;;-1:-1:-1;;;11207:31:12;;11235:1;11207:31;;;2845:51:87;2818:18;;11207:31:12;2699:203:87;11159:90:12;-1:-1:-1;;;;;11258:20:12;;;;;;;:13;;;:20;;;;;;;;:29;;;;;;;;;:37;;;11305:76;;;;11355:7;-1:-1:-1;;;;;11339:31:12;11348:5;-1:-1:-1;;;;;11339:31:12;;11364:5;11339:31;;;;160:25:87;;148:2;133:18;;14:177;11339:31:12;;;;;;;;10998:389;10900:487;;;;:::o;7142:1170::-;-1:-1:-1;;;;;;;;;;;;;;;;7284:18:12;;7280:546;;7438:5;7420:1;:14;;;:23;;;;;;;:::i;:::-;;;;-1:-1:-1;7280:546:12;;-1:-1:-1;7280:546:12;;-1:-1:-1;;;;;7496:17:12;;7474:19;7496:17;;;;;;;;;;;7531:19;;;7527:115;;;7602:4;7608:11;7621:5;7577:50;;-1:-1:-1;;;7577:50:12;;;;;;;;;;:::i;7527:115::-;-1:-1:-1;;;;;7762:17:12;;:11;:17;;;;;;;;;;7782:19;;;;7762:39;;7280:546;-1:-1:-1;;;;;7840:16:12;;7836:429;;8003:14;;;:23;;;;;;;7836:429;;;-1:-1:-1;;;;;8216:15:12;;:11;:15;;;;;;;;;;:24;;;;;;7836:429;8295:2;-1:-1:-1;;;;;8280:25:12;8289:4;-1:-1:-1;;;;;8280:25:12;;8299:5;8280:25;;;;160::87;;148:2;133:18;;14:177;8280:25:12;;;;;;;;7217:1095;7142:1170;;;:::o;4691:549:37:-;4774:12;4798;4813:47;4847:6;4855:4;4813:33;:47::i;:::-;4798:62;;4874:7;:72;;;;-1:-1:-1;4918:1:37;4583:16:40;4886:33:37;:59;;;;4944:1;4923:6;-1:-1:-1;;;;;4923:18:37;;:22;4886:59;4870:364;;;4969:25;:23;:25::i;:::-;4962:32;;;;;4870:364;5015:7;5011:223;;;5045:24;;-1:-1:-1;;;5045:24:37;;-1:-1:-1;;;;;2863:32:87;;5045:24:37;;;2845:51:87;2818:18;;5045:24:37;2699:203:87;5011:223:37;4583:16:40;5090:33:37;5086:148;;5139:27;:25;:27::i;:::-;5086:148;;;5204:19;;-1:-1:-1;;;5204:19:37;;;;;;;;;;;5086:148;4788:452;4691:549;;;;:::o;5633:111:47:-;5691:7;5328:5;;;5725;;;5327:36;5322:42;;5717:20;5087:294;2264:344:27;2355:37;2374:17;2355:18;:37::i;:::-;2407:36;;-1:-1:-1;;;;;2407:36:27;;;;;;;;2458:11;;:15;2454:148;;2489:53;2518:17;2537:4;2489:28;:53::i;2454:148::-;2573:18;:16;:18::i;5516:186:55:-;-1:-1:-1;;;;;;;;;;;5597:25:55;5561:9;;-1:-1:-1;;;;;5597:25:55;5670:26;5597:25;5670:15;:26;:::i;:::-;5650:46;;5663:3;5651:15;;;5650:46;:::i;34380:314:48:-;34436:6;-1:-1:-1;;;;;34557:5:48;:33;34553:105;;;34613:34;;-1:-1:-1;;;34613:34:48;;;;;160:25:87;;;133:18;;34613:34:48;14:177:87;4808:316:52;4995:48;5010:6;5018:8;5028:6;5036;4995:14;:48::i;:::-;5091:28;5112:6;5091:20;:28::i;7082:141:30:-;7149:17;:15;:17::i;:::-;7144:73;;7189:17;;-1:-1:-1;;;7189:17:30;;;;;;;;;;;6384:114:13;6929:20:30;:18;:20::i;:::-;6459:32:13::1;6484:6;6459:24;:32::i;2281:147:12:-:0;6929:20:30;:18;:20::i;:::-;2383:38:12::1;2406:5;2413:7;2383:22;:38::i;3295:1867:54:-:0;3508:18;;:23;;:68;;-1:-1:-1;3541:18:54;;1782:2;-1:-1:-1;3508:68:54;:124;;;;3608:17;:24;3586:11;:18;:46;;3508:124;:176;;;;3664:13;:20;3642:11;:18;:42;;3508:176;:229;;;;3716:14;:21;3694:11;:18;:43;;3508:229;3497:279;;;3751:25;;-1:-1:-1;;;;;;3751:25:54;;;;;;;;;;;3497:279;3782:44;;:::i;:::-;3832:45;;:::i;:::-;3888:9;3883:1183;3903:11;:18;3899:1;:22;3883:1183;;;3975:1;-1:-1:-1;;;;;3940:37:54;3948:11;3960:1;3948:14;;;;;;;;:::i;:::-;;;;;;;-1:-1:-1;;;;;3940:37:54;;3936:67;;3986:17;;-1:-1:-1;;;3986:17:54;;;;;;;;;;;3936:67;4011:35;4037:8;:6;:8::i;:::-;4011:11;4023:1;4011:14;;;;;;;;:::i;:::-;;;;;;;-1:-1:-1;;;;;4011:25:54;;;:35;;;;:::i;:::-;4104:9;4099:126;4119:1;4115;:5;4099:126;;;4159:11;4171:1;4159:14;;;;;;;;:::i;:::-;;;;;;;-1:-1:-1;;;;;4141:32:54;:11;4153:1;4141:14;;;;;;;;:::i;:::-;;;;;;;-1:-1:-1;;;;;4141:32:54;;4137:79;;4201:11;4213:1;4201:14;;;;;;;;:::i;:::-;;;;;;;4182:34;;-1:-1:-1;;;4182:34:54;;;;;;;-1:-1:-1;;;;;2863:32:87;;;;2845:51;;2833:2;2818:18;;2699:203;4137:79:54;4122:3;;4099:126;;;;4343:11;:18;4323:13;4337:1;4323:16;;;;;;;;:::i;:::-;;;;;;;:38;;;;:76;;;;4365:16;4382:13;4396:1;4382:16;;;;;;;;:::i;:::-;;;;;;;4365:34;;;;;;;;;:::i;:::-;;;;;4323:76;4319:144;;;4446:13;4460:1;4446:16;;;;;;;;:::i;:::-;;;;;;;4416:47;;-1:-1:-1;;;4416:47:54;;;;;;;2682:4:87;2670:17;;;;2652:36;;2640:2;2625:18;;2510:184;4319:144:54;4496:11;:18;4475:14;4490:1;4475:17;;;;;;;;:::i;:::-;;;;;;;:39;;;;:79;;;;4518:17;4536:14;4551:1;4536:17;;;;;;;;:::i;:::-;;;;;;;4518:36;;;;;;;;;:::i;:::-;;;;;4475:79;4471:149;;;4602:14;4617:1;4602:17;;;;;;;;:::i;:::-;;;;;;;4571:49;;-1:-1:-1;;;4571:49:54;;;;;;;2682:4:87;2670:17;;;;2652:36;;2640:2;2625:18;;2510:184;4471:149:54;4665:4;4628:16;4645:13;4659:1;4645:16;;;;;;;;:::i;:::-;;;;;;;4628:34;;;;;;;;;:::i;:::-;;;;:41;;;;;;;;;;;4716:4;4677:17;4695:14;4710:1;4695:17;;;;;;;;:::i;:::-;;;;;;;4677:36;;;;;;;;;:::i;:::-;:43;;;:36;;;;;:43;4745:14;;;;4757:1;;4745:14;;;;;;:::i;:::-;;;;;;;4728:11;4740:1;4728:14;;;;;;;:::i;:::-;;;:31;;;;;-1:-1:-1;;;;;4728:31:54;;;;;-1:-1:-1;;;;;4728:31:54;;;;;;4786:13;4800:1;4786:16;;;;;;;;:::i;:::-;;;;;;;4805:1;4786:20;;;;:::i;:::-;4767:13;4781:1;4767:16;;;;;;;:::i;:::-;;;;;;;;;;:39;;;;;;;;;;;;;;;;;;4883:14;4898:1;4883:17;;;;;;;;:::i;:::-;;;;;;;4903:1;4883:21;;;;:::i;:::-;4863:14;4878:1;4863:17;;;;;;;:::i;:::-;;;;;;;;;;:41;;;;;;;;;;;;;;;;;;4961:46;4986:17;5004:1;4986:20;;;;;;;;:::i;:::-;;;;;;;4961:11;4973:1;4961:14;;;;;;;;:::i;:::-;;;;;;;-1:-1:-1;;;;;4961:24:54;;;:46;;;;:::i;:::-;5034:11;5046:1;5034:14;;;;;;;;:::i;:::-;;;;;;;-1:-1:-1;;;;;5020:39:54;;5056:1;5020:39;;;;;2682:4:87;2670:17;;;;2652:36;;2640:2;2625:18;;2510:184;5020:39:54;;;;;;;;3923:3;;3883:1183;;;;5076:34;5096:13;5076:34;;;;;;:::i;:::-;;;;;;;;5121:36;5142:14;5121:36;;;;;;:::i;:::-;;;;;;;;3491:1671;;3295:1867;;;;:::o;4513:254:52:-;4669:31;4693:6;4669:23;:31::i;:::-;4706:56;4722:6;4730:8;4740:5;4747:6;4755;4706:15;:56::i;32036:122:47:-;32104:4;32145:1;32133:8;32127:15;;;;;;;;:::i;:::-;:19;;;;:::i;:::-;:24;;32150:1;32127:24;32120:31;;32036:122;;;:::o;7258:3683::-;7340:14;7391:12;7405:11;7420:12;7427:1;7430;7420:6;:12::i;:::-;7390:42;;;;7514:4;7522:1;7514:9;7510:365;;7849:11;7843:3;:17;;;;;:::i;:::-;;7836:24;;;;;;7510:365;8000:4;7985:11;:19;7981:142;;8024:84;5328:5;8044:16;;5327:36;940:4:43;5322:42:47;8024:11;:84::i;:::-;8375:17;8526:11;8523:1;8520;8513:25;8918:12;8948:15;;;8933:31;;9083:22;;;;;9816:1;9797;:15;;9796:21;;10049;;;10045:25;;10034:36;10119:21;;;10115:25;;10104:36;10191:21;;;10187:25;;10176:36;10262:21;;;10258:25;;10247:36;10335:21;;;10331:25;;10320:36;10409:21;;;10405:25;;;10394:36;9325:12;;;;9321:23;;;9346:1;9317:31;8638:18;;;8628:29;;;9432:11;;;;8681:19;;;;9176:14;;;;9425:18;;;;10884:13;;-1:-1:-1;;7258:3683:47;;;;;:::o;3383:242:40:-;3466:12;3604:4;3598;3591;3585:11;3578:4;3572;3568:15;3560:6;3553:5;3540:69;3529:80;3383:242;-1:-1:-1;;;3383:242:40:o;4698:334::-;4829:4;4823:11;4862:16;4847:32;;4932:16;4926:4;4919;4907:17;;4892:57;4997:16;4991:4;4987:27;4979:6;4975:40;4969:4;4962:54;4698:334;:::o;5099:223::-;5203:4;5197:11;5247:16;5241:4;5236:3;5221:43;5289:16;5284:3;5277:29;1671:281:27;1748:17;-1:-1:-1;;;;;1748:29:27;;1781:1;1748:34;1744:119;;1805:47;;-1:-1:-1;;;1805:47:27;;-1:-1:-1;;;;;2863:32:87;;1805:47:27;;;2845:51:87;2818:18;;1805:47:27;2699:203:87;1744:119:27;-1:-1:-1;;;;;;;;;;;1872:73:27;;-1:-1:-1;;;;;;1872:73:27;-1:-1:-1;;;;;1872:73:27;;;;;;;;;;1671:281::o;6113:122::-;6163:9;:13;6159:70;;6199:19;;-1:-1:-1;;;6199:19:27;;;;;;;;;;;12683:841:13;13353:74;13387:7;:5;:7::i;:::-;13397:6;13413:4;13420:6;13353:26;:74::i;:::-;13437:23;13443:8;13453:6;13437:5;:23::i;:::-;13492:8;-1:-1:-1;;;;;13476:41:13;13484:6;-1:-1:-1;;;;;13476:41:13;;13502:6;13510;13476:41;;;;;;17174:25:87;;;17230:2;17215:18;;17208:34;17162:2;17147:18;;17000:248;8485:120:30;8535:4;8558:26;:24;:26::i;:::-;:40;-1:-1:-1;;;8558:40:30;;;;;;-1:-1:-1;8485:120:30:o;6504:304:13:-;6929:20:30;:18;:20::i;:::-;5498:22:13;6589:24:::1;::::0;6684:28:::1;6705:6:::0;6684:20:::1;:28::i;:::-;6646:66;;;;6746:7;:28;;6772:2;6746:28;;;6756:13;6746:28;6722:52:::0;;-1:-1:-1;;;;;;6784:17:13;-1:-1:-1;;;6722:52:13::1;::::0;;;::::1;::::0;;;::::1;-1:-1:-1::0;;;;;;6784:17:13;;-1:-1:-1;;;;;6784:17:13;;;::::1;::::0;;;::::1;::::0;;;-1:-1:-1;;6504:304:13:o;2434:216:12:-;6929:20:30;:18;:20::i;:::-;-1:-1:-1;;;;;;;;;;;2599:7:12;:15:::1;2609:5:::0;2599:7;:15:::1;:::i;:::-;-1:-1:-1::0;2624:9:12::1;::::0;::::1;:19;2636:7:::0;2624:9;:19:::1;:::i;6629:539:54:-:0;6708:6;6693:12;6720:332;6736:9;;;;;:35;;;6749:14;6764:1;6749:17;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;:22;;6736:35;:57;;;;-1:-1:-1;1782:2:54;6775:18;;6736:57;6720:332;;;6808:24;6835:11;6867:1;6847:14;6862:1;6847:17;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;:21;;;;:::i;:::-;6835:34;;;;;;;;;:::i;:::-;;;-1:-1:-1;;;;;6835:34:54;;-1:-1:-1;6835:34:54;6898:38;6907:4;6913:22;6835:34;6913:20;:22::i;6898:38::-;6877:59;;6948:10;6962:1;6948:15;6944:29;;6965:8;;;;6944:29;6981:38;-1:-1:-1;;;;;6981:19:54;;7001:10;7013:5;6981:19;:38::i;:::-;-1:-1:-1;7027:18:54;7035:10;7027:18;;:::i;:::-;;;6800:252;;6720:332;6795:3;;;:::i;:::-;;;6720:332;;;-1:-1:-1;7061:9:54;;7057:37;;7079:15;;-1:-1:-1;;;7079:15:54;;;;;;;;;;;13591:925:13;13778:5;-1:-1:-1;;;;;13768:15:13;:6;-1:-1:-1;;;;;13768:15:13;;13764:84;;13799:38;13815:5;13822:6;13830;13799:15;:38::i;:::-;14357:20;14363:5;14370:6;14357:5;:20::i;:::-;14387:57;14417:7;:5;:7::i;:::-;14427:8;14437:6;14387:22;:57::i;:::-;14487:5;-1:-1:-1;;;;;14460:49:13;14477:8;-1:-1:-1;;;;;14460:49:13;14469:6;-1:-1:-1;;;;;14460:49:13;;14494:6;14502;14460:49;;;;;;17174:25:87;;;17230:2;17215:18;;17208:34;17162:2;17147:18;;17000:248;14460:49:13;;;;;;;;13591:925;;;;;:::o;1027:550:47:-;1088:12;;-1:-1:-1;;1471:1:47;1468;1461:20;1501:9;;;;1549:11;;;1535:12;;;;1531:30;;;;;1027:550;-1:-1:-1;;1027:550:47:o;1776:194:43:-;1881:10;1875:4;1868:24;1918:4;1912;1905:18;1949:4;1943;1936:18;1662:232:36;1767:47;1785:5;1792:4;1798:2;1802:5;1809:4;1767:17;:47::i;:::-;1762:126;;1837:40;;-1:-1:-1;;;1837:40:36;;-1:-1:-1;;;;;2863:32:87;;1837:40:36;;;2845:51:87;2818:18;;1837:40:36;2699:203:87;8655:208:12;-1:-1:-1;;;;;8725:21:12;;8721:91;;8769:32;;-1:-1:-1;;;8769:32:12;;8798:1;8769:32;;;2845:51:87;2818:18;;8769:32:12;2699:203:87;8721:91:12;8821:35;8837:1;8841:7;8850:5;8821:7;:35::i;6951:607:13:-;7018:7;7027:19;7058:18;7079:29;1025:4:41;1019:11;;895:151;7079:29:13;7242:43;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;7242:43:13;-1:-1:-1;;;7242:43:13;;;7058:50;;-1:-1:-1;7119:12:13;;;;7163:132;;7221:6;;7163:36;:132::i;:::-;7118:177;;;;;7305:32;7333:3;1311:4:41;1304:17;1198:139;7305:32:13;7368:7;:46;;;;-1:-1:-1;7412:2:13;4583:16:40;7379:35:13;;7368:46;:94;;;;-1:-1:-1;7447:15:13;7418:44;;;7368:94;7367:184;;7542:5;7549:1;7367:184;;;7483:4;7503:16;7367:184;7348:203;;;;;;;6951:607;;;:::o;9181:206:12:-;-1:-1:-1;;;;;9251:21:12;;9247:89;;9295:30;;-1:-1:-1;;;9295:30:12;;9322:1;9295:30;;;2845:51:87;2818:18;;9295:30:12;2699:203:87;9247:89:12;9345:35;9353:7;9370:1;9374:5;9345:7;:35::i;1219:204:36:-;1306:37;1320:5;1327:2;1331:5;1338:4;1306:13;:37::i;:::-;1301:116;;1366:40;;-1:-1:-1;;;1366:40:36;;-1:-1:-1;;;;;2863:32:87;;1366:40:36;;;2845:51:87;2818:18;;1366:40:36;2699:203:87;10165:1393:36;10460:4;10454:11;-1:-1:-1;;;10323:12:36;10478:22;;;-1:-1:-1;;;;;10526:26:36;;;10520:4;10513:40;10579:24;;10573:4;10566:38;10624:4;10617:19;;;10323:12;10700:4;10323:12;10688:4;10323:12;;10672:5;10665;10660:45;10649:56;;10917:1;10910:4;10904:11;10901:18;10892:7;10888:32;10878:606;;11049:6;11039:7;11032:15;11028:28;11025:165;;;11105:16;11099:4;11094:3;11079:43;11155:16;11150:3;11143:29;11025:165;11466:1;11458:5;11446:18;11443:25;11424:16;11417:24;11413:56;11404:7;11400:70;11389:81;;10878:606;11504:4;11497:17;-1:-1:-1;11540:1:36;11534:4;11527:15;10165:1393;;-1:-1:-1;;;;;10165:1393:36:o;2893:374:40:-;3006:12;3020:15;3037;3176:4;3170;3163;3157:11;3150:4;3144;3140:15;3132:6;3125:5;3114:67;3103:78;;3211:4;3205:11;3194:22;;3246:4;3240:11;3229:22;;2893:374;;;;;:::o;8373:1244:36:-;8600:4;8594:11;-1:-1:-1;;;8467:12:36;8618:22;;;-1:-1:-1;;;;;8666:24:36;;8660:4;8653:38;8711:4;8704:19;;;8467:12;8787:4;8467:12;8775:4;8467:12;;8759:5;8752;8747:45;8736:56;;9004:1;8997:4;8991:11;8988:18;8979:7;8975:32;8965:606;;9136:6;9126:7;9119:15;9115:28;9112:165;;;9192:16;9186:4;9181:3;9166:43;9242:16;9237:3;9230:29;9112:165;9553:1;9545:5;9533:18;9530:25;9511:16;9504:24;9500:56;9491:7;9487:70;9476:81;;8965:606;9591:4;9584:17;-1:-1:-1;8373:1244:36;;-1:-1:-1;;;;8373:1244:36:o;-1:-1:-1:-;;;;;;;;;;;;;;;;;;;;;;;;:::o;196:289:87:-;238:3;276:5;270:12;303:6;298:3;291:19;359:6;352:4;345:5;341:16;334:4;329:3;325:14;319:47;411:1;404:4;395:6;390:3;386:16;382:27;375:38;474:4;467:2;463:7;458:2;450:6;446:15;442:29;437:3;433:39;429:50;422:57;;;196:289;;;;:::o;490:220::-;639:2;628:9;621:21;602:4;659:45;700:2;689:9;685:18;677:6;659:45;:::i;715:226::-;774:6;827:2;815:9;806:7;802:23;798:32;795:52;;;843:1;840;833:12;795:52;-1:-1:-1;888:23:87;;715:226;-1:-1:-1;715:226:87:o;946:131::-;-1:-1:-1;;;;;1021:31:87;;1011:42;;1001:70;;1067:1;1064;1057:12;1082:367;1150:6;1158;1211:2;1199:9;1190:7;1186:23;1182:32;1179:52;;;1227:1;1224;1217:12;1179:52;1266:9;1253:23;1285:31;1310:5;1285:31;:::i;:::-;1335:5;1413:2;1398:18;;;;1385:32;;-1:-1:-1;;;1082:367:87:o;1646:346::-;1714:6;1722;1775:2;1763:9;1754:7;1750:23;1746:32;1743:52;;;1791:1;1788;1781:12;1743:52;-1:-1:-1;;1836:23:87;;;1956:2;1941:18;;;1928:32;;-1:-1:-1;1646:346:87:o;1997:508::-;2074:6;2082;2090;2143:2;2131:9;2122:7;2118:23;2114:32;2111:52;;;2159:1;2156;2149:12;2111:52;2198:9;2185:23;2217:31;2242:5;2217:31;:::i;:::-;2267:5;-1:-1:-1;2324:2:87;2309:18;;2296:32;2337:33;2296:32;2337:33;:::i;:::-;1997:508;;2389:7;;-1:-1:-1;;;2469:2:87;2454:18;;;;2441:32;;1997:508::o;2907:156::-;2973:20;;3033:4;3022:16;;3012:27;;3002:55;;3053:1;3050;3043:12;3002:55;2907:156;;;:::o;3068:127::-;3129:10;3124:3;3120:20;3117:1;3110:31;3160:4;3157:1;3150:15;3184:4;3181:1;3174:15;3200:275;3271:2;3265:9;3336:2;3317:13;;-1:-1:-1;;3313:27:87;3301:40;;-1:-1:-1;;;;;3356:34:87;;3392:22;;;3353:62;3350:88;;;3418:18;;:::i;:::-;3454:2;3447:22;3200:275;;-1:-1:-1;3200:275:87:o;3480:629::-;3522:5;3575:3;3568:4;3560:6;3556:17;3552:27;3542:55;;3593:1;3590;3583:12;3542:55;3633:6;3620:20;3672:4;3664:6;3660:17;3701:1;3723;-1:-1:-1;;;;;3739:6:87;3736:30;3733:56;;;3769:18;;:::i;:::-;-1:-1:-1;3835:2:87;3814:15;;-1:-1:-1;;3810:29:87;3841:4;3806:40;3866:21;3806:40;3866:21;:::i;:::-;3855:32;;;3912:6;3903:7;3896:23;3952:3;3943:6;3938:3;3934:16;3931:25;3928:45;;;3969:1;3966;3959:12;3928:45;4020:6;4015:3;4008:4;3999:7;3995:18;3982:45;4076:1;4047:20;;;4069:4;4043:31;4036:42;;;;-1:-1:-1;4051:7:87;3480:629;-1:-1:-1;;;3480:629:87:o;4114:460::-;4196:6;4204;4212;4265:2;4253:9;4244:7;4240:23;4236:32;4233:52;;;4281:1;4278;4271:12;4233:52;4304:27;4321:9;4304:27;:::i;:::-;4294:37;;4350:36;4382:2;4371:9;4367:18;4350:36;:::i;:::-;4340:46;;4437:2;4426:9;4422:18;4409:32;-1:-1:-1;;;;;4456:6:87;4453:30;4450:50;;;4496:1;4493;4486:12;4450:50;4519:49;4560:7;4551:6;4540:9;4536:22;4519:49;:::i;:::-;4509:59;;;4114:460;;;;;:::o;4802:247::-;4861:6;4914:2;4902:9;4893:7;4889:23;4885:32;4882:52;;;4930:1;4927;4920:12;4882:52;4969:9;4956:23;4988:31;5013:5;4988:31;:::i;5239:455::-;5316:6;5324;5377:2;5365:9;5356:7;5352:23;5348:32;5345:52;;;5393:1;5390;5383:12;5345:52;5432:9;5419:23;5451:31;5476:5;5451:31;:::i;:::-;5501:5;-1:-1:-1;5557:2:87;5542:18;;5529:32;-1:-1:-1;;;;;5573:30:87;;5570:50;;;5616:1;5613;5606:12;5570:50;5639:49;5680:7;5671:6;5660:9;5656:22;5639:49;:::i;:::-;5629:59;;;5239:455;;;;;:::o;6208:482::-;6386:4;6371:20;;6375:9;6468:6;6344:4;6502:182;6516:4;6513:1;6510:11;6502:182;;;6579:13;;6594:4;6575:24;6563:37;;6629:4;6620:14;;;;6657:17;;;;6536:1;6529:9;6502:182;;;6506:3;;;6208:482;;;;:::o;6877:367::-;6945:6;6953;7006:2;6994:9;6985:7;6981:23;6977:32;6974:52;;;7022:1;7019;7012:12;6974:52;7067:23;;;-1:-1:-1;7166:2:87;7151:18;;7138:32;7179:33;7138:32;7179:33;:::i;:::-;7231:7;7221:17;;;6877:367;;;;;:::o;7249:118::-;7335:5;7328:13;7321:21;7314:5;7311:32;7301:60;;7357:1;7354;7347:12;7372:686;7487:6;7495;7503;7511;7564:3;7552:9;7543:7;7539:23;7535:33;7532:53;;;7581:1;7578;7571:12;7532:53;7604:27;7621:9;7604:27;:::i;:::-;7594:37;;7681:2;7670:9;7666:18;7653:32;7694:31;7719:5;7694:31;:::i;:::-;7744:5;-1:-1:-1;7800:2:87;7785:18;;7772:32;-1:-1:-1;;;;;7816:30:87;;7813:50;;;7859:1;7856;7849:12;7813:50;7882:49;7923:7;7914:6;7903:9;7899:22;7882:49;:::i;:::-;7872:59;;;7983:2;7972:9;7968:18;7955:32;7996:30;8018:7;7996:30;:::i;:::-;7372:686;;;;-1:-1:-1;7372:686:87;;-1:-1:-1;;7372:686:87:o;8548:252::-;8612:6;8620;8673:2;8661:9;8652:7;8648:23;8644:32;8641:52;;;8689:1;8686;8679:12;8641:52;8712:27;8729:9;8712:27;:::i;:::-;8702:37;;8758:36;8790:2;8779:9;8775:18;8758:36;:::i;:::-;8748:46;;8548:252;;;;;:::o;9012:400::-;9079:6;9087;9140:2;9128:9;9119:7;9115:23;9111:32;9108:52;;;9156:1;9153;9146:12;9108:52;9201:23;;;-1:-1:-1;9300:2:87;9285:18;;9272:32;9348:12;9335:26;;9323:39;;9313:67;;9376:1;9373;9366:12;9630:181;9688:4;-1:-1:-1;;;;;9713:6:87;9710:30;9707:56;;;9743:18;;:::i;:::-;-1:-1:-1;9788:1:87;9784:14;9800:4;9780:25;;9630:181::o;9816:669::-;9868:5;9921:3;9914:4;9906:6;9902:17;9898:27;9888:55;;9939:1;9936;9929:12;9888:55;9979:6;9966:20;10006:62;10022:45;10060:6;10022:45;:::i;:::-;10006:62;:::i;:::-;10092:3;10116:6;10111:3;10104:19;10148:4;10143:3;10139:14;10132:21;;10209:4;10199:6;10196:1;10192:14;10184:6;10180:27;10176:38;10162:52;;10237:3;10229:6;10226:15;10223:35;;;10254:1;10251;10244:12;10223:35;10290:4;10282:6;10278:17;10304:150;10320:6;10315:3;10312:15;10304:150;;;10388:21;10405:3;10388:21;:::i;:::-;10376:34;;10439:4;10430:14;;;;10337;10304:150;;;-1:-1:-1;10472:7:87;9816:669;-1:-1:-1;;;;;9816:669:87:o;10490:344::-;10572:6;10625:2;10613:9;10604:7;10600:23;10596:32;10593:52;;;10641:1;10638;10631:12;10593:52;10681:9;10668:23;-1:-1:-1;;;;;10706:6:87;10703:30;10700:50;;;10746:1;10743;10736:12;10700:50;10769:59;10820:7;10811:6;10800:9;10796:22;10769:59;:::i;11101:311::-;11164:6;11172;11225:2;11213:9;11204:7;11200:23;11196:32;11193:52;;;11241:1;11238;11231:12;11193:52;11264:27;11281:9;11264:27;:::i;:::-;11254:37;;11341:2;11330:9;11326:18;11313:32;11354:28;11376:5;11354:28;:::i;11417:142::-;11493:20;;11522:31;11493:20;11522:31;:::i;11564:759::-;11635:5;11688:3;11681:4;11673:6;11669:17;11665:27;11655:55;;11706:1;11703;11696:12;11655:55;11746:6;11733:20;11773:62;11789:45;11827:6;11789:45;:::i;11773:62::-;11859:3;11883:6;11878:3;11871:19;11915:4;11910:3;11906:14;11899:21;;11976:4;11966:6;11963:1;11959:14;11951:6;11947:27;11943:38;11929:52;;12004:3;11996:6;11993:15;11990:35;;;12021:1;12018;12011:12;11990:35;12057:4;12049:6;12045:17;12071:221;12087:6;12082:3;12079:15;12071:221;;;12169:3;12156:17;12186:31;12211:5;12186:31;:::i;:::-;12230:18;;12277:4;12268:14;;;;12104;12071:221;;12328:823;12380:5;12433:3;12426:4;12418:6;12414:17;12410:27;12400:55;;12451:1;12448;12441:12;12400:55;12491:6;12478:20;12518:62;12534:45;12572:6;12534:45;:::i;12518:62::-;12604:3;12628:6;12623:3;12616:19;12660:4;12655:3;12651:14;12644:21;;12721:4;12711:6;12708:1;12704:14;12696:6;12692:27;12688:38;12674:52;;12749:3;12741:6;12738:15;12735:35;;;12766:1;12763;12756:12;12735:35;12802:4;12794:6;12790:17;12816:304;12832:6;12827:3;12824:15;12816:304;;;12920:3;12907:17;-1:-1:-1;;;;;12943:11:87;12940:35;12937:55;;;12988:1;12985;12978:12;12937:55;13017:58;13071:3;13064:4;13050:11;13042:6;13038:24;13034:35;13017:58;:::i;:::-;13005:71;;-1:-1:-1;13105:4:87;13096:14;;;;12849;12816:304;;13156:1646;13434:6;13442;13450;13458;13466;13474;13482;13535:3;13523:9;13514:7;13510:23;13506:33;13503:53;;;13552:1;13549;13542:12;13503:53;13592:9;13579:23;-1:-1:-1;;;;;13617:6:87;13614:30;13611:50;;;13657:1;13654;13647:12;13611:50;13680:49;13721:7;13712:6;13701:9;13697:22;13680:49;:::i;:::-;13670:59;;;13782:2;13771:9;13767:18;13754:32;-1:-1:-1;;;;;13801:8:87;13798:32;13795:52;;;13843:1;13840;13833:12;13795:52;13866:51;13909:7;13898:8;13887:9;13883:24;13866:51;:::i;:::-;13856:61;;;13936:46;13978:2;13967:9;13963:18;13936:46;:::i;:::-;13926:56;;14035:2;14024:9;14020:18;14007:32;-1:-1:-1;;;;;14054:8:87;14051:32;14048:52;;;14096:1;14093;14086:12;14048:52;14119:80;14191:7;14180:8;14169:9;14165:24;14119:80;:::i;:::-;14109:90;;;14252:3;14241:9;14237:19;14224:33;-1:-1:-1;;;;;14272:8:87;14269:32;14266:52;;;14314:1;14311;14304:12;14266:52;14337:61;14390:7;14379:8;14368:9;14364:24;14337:61;:::i;:::-;14327:71;;;14451:3;14440:9;14436:19;14423:33;-1:-1:-1;;;;;14471:8:87;14468:32;14465:52;;;14513:1;14510;14503:12;14465:52;14536:61;14589:7;14578:8;14567:9;14563:24;14536:61;:::i;:::-;14526:71;;;14650:3;14639:9;14635:19;14622:33;-1:-1:-1;;;;;14670:8:87;14667:32;14664:52;;;14712:1;14709;14702:12;14664:52;14735:61;14788:7;14777:8;14766:9;14762:24;14735:61;:::i;:::-;14725:71;;;13156:1646;;;;;;;;;;:::o;14807:508::-;14884:6;14892;14900;14953:2;14941:9;14932:7;14928:23;14924:32;14921:52;;;14969:1;14966;14959:12;14921:52;15014:23;;;-1:-1:-1;15113:2:87;15098:18;;15085:32;15126:33;15085:32;15126:33;:::i;:::-;15178:7;-1:-1:-1;15237:2:87;15222:18;;15209:32;15250:33;15209:32;15250:33;:::i;:::-;15302:7;15292:17;;;14807:508;;;;;:::o;15320:526::-;15527:4;15512:20;;15516:9;15609:6;15485:4;15643:197;15657:4;15654:1;15651:11;15643:197;;;15720:13;;-1:-1:-1;;;;;15716:39:87;15704:52;;15785:4;15776:14;;;;15813:17;;;;15752:1;15670:9;15643:197;;15851:388;15919:6;15927;15980:2;15968:9;15959:7;15955:23;15951:32;15948:52;;;15996:1;15993;15986:12;15948:52;16035:9;16022:23;16054:31;16079:5;16054:31;:::i;:::-;16104:5;-1:-1:-1;16161:2:87;16146:18;;16133:32;16174:33;16133:32;16174:33;:::i;16244:366::-;16317:6;16325;16333;16386:2;16374:9;16365:7;16361:23;16357:32;16354:52;;;16402:1;16399;16392:12;16354:52;16425:27;16442:9;16425:27;:::i;:::-;16415:37;;16471:36;16503:2;16492:9;16488:18;16471:36;:::i;16615:380::-;16694:1;16690:12;;;;16737;;;16758:61;;16812:4;16804:6;16800:17;16790:27;;16758:61;16865:2;16857:6;16854:14;16834:18;16831:38;16828:161;;16911:10;16906:3;16902:20;16899:1;16892:31;16946:4;16943:1;16936:15;16974:4;16971:1;16964:15;16828:161;;16615:380;;;:::o;17253:127::-;17314:10;17309:3;17305:20;17302:1;17295:31;17345:4;17342:1;17335:15;17369:4;17366:1;17359:15;17385:148;17473:4;17452:12;;;17466;;;17448:31;;17491:13;;17488:39;;;17507:18;;:::i;17538:127::-;17599:10;17594:3;17590:20;17587:1;17580:31;17630:4;17627:1;17620:15;17654:4;17651:1;17644:15;17670:184;17740:6;17793:2;17781:9;17772:7;17768:23;17764:32;17761:52;;;17809:1;17806;17799:12;17761:52;-1:-1:-1;17832:16:87;;17670:184;-1:-1:-1;17670:184:87:o;17859:135::-;17898:3;17919:17;;;17916:43;;17939:18;;:::i;:::-;-1:-1:-1;17986:1:87;17975:13;;17859:135::o;17999:216::-;18063:9;;;18091:11;;;18038:3;18121:9;;18149:10;;18145:19;;18174:10;;18166:19;;18142:44;18139:70;;;18189:18;;:::i;:::-;18139:70;;17999:216;;;;:::o;18571:345::-;-1:-1:-1;;;;;18791:32:87;;;;18773:51;;18855:2;18840:18;;18833:34;;;;18898:2;18883:18;;18876:34;18761:2;18746:18;;18571:345::o;19154:125::-;19219:9;;;19240:10;;;19237:36;;;19253:18;;:::i;19570:127::-;19631:10;19626:3;19622:20;19619:1;19612:31;19662:4;19659:1;19652:15;19686:4;19683:1;19676:15;19702:120;19742:1;19768;19758:35;;19773:18;;:::i;:::-;-1:-1:-1;19807:9:87;;19702:120::o;19827:618::-;20013:2;20025:21;;;20095:13;;19998:18;;;20117:22;;;19965:4;;20196:15;;;20170:2;20155:18;;;19965:4;20239:180;20253:6;20250:1;20247:13;20239:180;;;20318:13;;20333:4;20314:24;20302:37;;20368:2;20394:15;;;;20359:12;;;;20275:1;20268:9;20239:180;;;-1:-1:-1;20436:3:87;;19827:618;-1:-1:-1;;;;;19827:618:87:o;20450:128::-;20517:9;;;20538:11;;;20535:37;;;20552:18;;:::i;20583:151::-;20673:4;20666:12;;;20652;;;20648:31;;20691:14;;20688:40;;;20708:18;;:::i;20953:175::-;20990:3;21034:4;21027:5;21023:16;21063:4;21054:7;21051:17;21048:43;;21071:18;;:::i;:::-;21120:1;21107:15;;20953:175;-1:-1:-1;;20953:175:87:o;21133:375::-;21221:1;21239:5;21253:249;21274:1;21264:8;21261:15;21253:249;;;21324:4;21319:3;21315:14;21309:4;21306:24;21303:50;;;21333:18;;:::i;:::-;21383:1;21373:8;21369:16;21366:49;;;21397:16;;;;21366:49;21480:1;21476:16;;;;;21436:15;;21253:249;;;21133:375;;;;;;:::o;21513:902::-;21562:5;21592:8;21582:80;;-1:-1:-1;21633:1:87;21647:5;;21582:80;21681:4;21671:76;;-1:-1:-1;21718:1:87;21732:5;;21671:76;21763:4;21781:1;21776:59;;;;21849:1;21844:174;;;;21756:262;;21776:59;21806:1;21797:10;;21820:5;;;21844:174;21881:3;21871:8;21868:17;21865:43;;;21888:18;;:::i;:::-;-1:-1:-1;;21944:1:87;21930:16;;22003:5;;21756:262;;22102:2;22092:8;22089:16;22083:3;22077:4;22074:13;22070:36;22064:2;22054:8;22051:16;22046:2;22040:4;22037:12;22033:35;22030:77;22027:203;;;-1:-1:-1;22139:19:87;;;22215:5;;22027:203;22262:42;-1:-1:-1;;22287:8:87;22281:4;22262:42;:::i;:::-;22340:6;22336:1;22332:6;22328:19;22319:7;22316:32;22313:58;;;22351:18;;:::i;:::-;22389:20;;21513:902;-1:-1:-1;;;21513:902:87:o;22420:140::-;22478:5;22507:47;22548:4;22538:8;22534:19;22528:4;22507:47;:::i;22837:274::-;22930:6;22983:2;22971:9;22962:7;22958:23;22954:32;22951:52;;;22999:1;22996;22989:12;22951:52;23031:9;23025:16;23050:31;23075:5;23050:31;:::i;23517:410::-;23592:6;23600;23653:2;23641:9;23632:7;23628:23;23624:32;23621:52;;;23669:1;23666;23659:12;23621:52;23701:9;23695:16;23720:28;23742:5;23720:28;:::i;:::-;23817:2;23802:18;;23796:25;23767:5;;-1:-1:-1;23865:10:87;23852:24;;23840:37;;23830:65;;23891:1;23888;23881:12;23932:296;24115:4;24107:6;24103:17;24092:9;24085:36;24157:2;24152;24141:9;24137:18;24130:30;24066:4;24177:45;24218:2;24207:9;24203:18;24195:6;24177:45;:::i;25033:301::-;25162:3;25200:6;25194:13;25246:6;25239:4;25231:6;25227:17;25222:3;25216:37;25308:1;25272:16;;25297:13;;;-1:-1:-1;25272:16:87;25033:301;-1:-1:-1;25033:301:87:o;25339:136::-;25374:3;-1:-1:-1;;;25395:22:87;;25392:48;;25420:18;;:::i;:::-;-1:-1:-1;25460:1:87;25456:13;;25339:136::o;25772:200::-;25838:9;;;25811:4;25866:9;;25894:10;;25906:12;;;25890:29;25929:12;;;25921:21;;25887:56;25884:82;;;25946:18;;:::i;25977:127::-;26038:10;26033:3;26029:20;26026:1;26019:31;26069:4;26066:1;26059:15;26093:4;26090:1;26083:15;26109:157;26139:1;26173:4;26170:1;26166:12;26197:3;26187:37;;26204:18;;:::i;:::-;26256:3;26249:4;26246:1;26242:12;26238:22;26233:27;;;26109:157;;;;:::o;26397:518::-;26499:2;26494:3;26491:11;26488:421;;;26535:5;26532:1;26525:16;26579:4;26576:1;26566:18;26649:2;26637:10;26633:19;26630:1;26626:27;26620:4;26616:38;26685:4;26673:10;26670:20;26667:47;;;-1:-1:-1;26708:4:87;26667:47;26763:2;26758:3;26754:12;26751:1;26747:20;26741:4;26737:31;26727:41;;26818:81;26836:2;26829:5;26826:13;26818:81;;;26895:1;26881:16;;26862:1;26851:13;26818:81;;27091:1299;27217:3;27211:10;-1:-1:-1;;;;;27236:6:87;27233:30;27230:56;;;27266:18;;:::i;:::-;27295:97;27385:6;27345:38;27377:4;27371:11;27345:38;:::i;:::-;27339:4;27295:97;:::i;:::-;27441:4;27472:2;27461:14;;27489:1;27484:649;;;;28177:1;28194:6;28191:89;;;-1:-1:-1;28246:19:87;;;28240:26;28191:89;-1:-1:-1;;27048:1:87;27044:11;;;27040:24;27036:29;27026:40;27072:1;27068:11;;;27023:57;28293:81;;27454:930;;27484:649;26344:1;26337:14;;;26381:4;26368:18;;-1:-1:-1;;27520:20:87;;;27638:222;27652:7;27649:1;27646:14;27638:222;;;27734:19;;;27728:26;27713:42;;27841:4;27826:20;;;;27794:1;27782:14;;;;27668:12;27638:222;;;27642:3;27888:6;27879:7;27876:19;27873:201;;;27949:19;;;27943:26;-1:-1:-1;;28032:1:87;28028:14;;;28044:3;28024:24;28020:37;28016:42;28001:58;27986:74;;27873:201;-1:-1:-1;;;;28120:1:87;28104:14;;;28100:22;28087:36;;-1:-1:-1;27091:1299:87:o"},"methodIdentifiers":{"MAX_STRATEGIES()":"767f06ae","UPGRADE_INTERFACE_VERSION()":"ad3cb1cc","addStrategy(address,bytes)":"7aeedf2a","allowance(address,address)":"dd62ed3e","approve(address,uint256)":"095ea7b3","asset()":"38d52e0f","balanceOf(address)":"70a08231","changeDelta(uint256,int256)":"508a0538","changeDepositQueue(uint8[])":"914abf4f","changeWithdrawQueue(uint8[])":"bd577eb6","convertToAssets(uint256)":"07a2d13a","convertToShares(uint256)":"c6e6f592","decimals()":"313ce567","deposit(uint256,address)":"6e553f65","depositQueue()":"f617eecc","depositToStrategies(uint256)":"4614b896","forwardToStrategy(uint8,uint8,bytes)":"3aaf9048","getAssetsDelta(uint256)":"92ce412e","getBytesSlot(bytes32)":"47e57533","getForwardToStrategySelector(uint8,uint8)":"8cdf48a8","getOutflowLimit()":"d89b074d","getOutflowLimitSlotSize()":"2e6863da","initialize(string,string,address,address[],bytes[],uint8[],uint8[])":"a7ded2ea","makeOutflowSlot(uint256,uint40)":"8eef8380","maxDeposit(address)":"402d267d","maxMint(address)":"c63d75b6","maxRedeem(address)":"d905777e","maxWithdraw(address)":"ce96cb77","mint(uint256,address)":"94bf804d","name()":"06fdde03","previewDeposit(uint256)":"ef8b30f7","previewMint(uint256)":"b3d7f6b9","previewRedeem(uint256)":"4cdad506","previewWithdraw(uint256)":"0a28a477","proxiableUUID()":"52d1902d","rebalance(uint8,uint8,uint256)":"e682324d","redeem(uint256,address,address)":"ba087652","removeStrategy(uint8,bool)":"96da35da","replaceStrategy(uint8,address,bytes,bool)":"7ac445a7","setupOutflowLimit(uint256,uint256)":"0a604584","strategies()":"d9f9027f","symbol()":"95d89b41","totalAssets()":"01e1d114","totalSupply()":"18160ddd","transfer(address,uint256)":"a9059cbb","transferFrom(address,address,uint256)":"23b872dd","upgradeToAndCall(address,bytes)":"4f1ef286","withdraw(uint256,address,address)":"b460af94","withdrawQueue()":"51a2d6d1"}},"metadata":"{\"compiler\":{\"version\":\"0.8.30+commit.73712a01\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"inputs\":[{\"internalType\":\"address\",\"name\":\"caller\",\"type\":\"address\"}],\"name\":\"AccessManagedUnauthorized\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"target\",\"type\":\"address\"}],\"name\":\"AddressEmptyCode\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"CannotRemoveStrategyWithAssets\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"DepositError\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"contract IInvestStrategy\",\"name\":\"strategy\",\"type\":\"address\"}],\"name\":\"DuplicatedStrategy\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"implementation\",\"type\":\"address\"}],\"name\":\"ERC1967InvalidImplementation\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"ERC1967NonPayable\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"spender\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"allowance\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"needed\",\"type\":\"uint256\"}],\"name\":\"ERC20InsufficientAllowance\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"sender\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"balance\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"needed\",\"type\":\"uint256\"}],\"name\":\"ERC20InsufficientBalance\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"approver\",\"type\":\"address\"}],\"name\":\"ERC20InvalidApprover\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"receiver\",\"type\":\"address\"}],\"name\":\"ERC20InvalidReceiver\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"sender\",\"type\":\"address\"}],\"name\":\"ERC20InvalidSender\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"spender\",\"type\":\"address\"}],\"name\":\"ERC20InvalidSpender\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"receiver\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"assets\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"max\",\"type\":\"uint256\"}],\"name\":\"ERC4626ExceededMaxDeposit\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"receiver\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"shares\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"max\",\"type\":\"uint256\"}],\"name\":\"ERC4626ExceededMaxMint\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"shares\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"max\",\"type\":\"uint256\"}],\"name\":\"ERC4626ExceededMaxRedeem\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"assets\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"max\",\"type\":\"uint256\"}],\"name\":\"ERC4626ExceededMaxWithdraw\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"FailedCall\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"InvalidInitialization\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"InvalidQueue\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"uint8\",\"name\":\"index\",\"type\":\"uint8\"}],\"name\":\"InvalidQueueIndexDuplicated\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"InvalidQueueLength\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"InvalidStrategiesLength\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"InvalidStrategy\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"InvalidStrategyAsset\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"uint8\",\"name\":\"index\",\"type\":\"uint8\"}],\"name\":\"InvalidStrategyInDepositQueue\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"uint8\",\"name\":\"index\",\"type\":\"uint8\"}],\"name\":\"InvalidStrategyInWithdrawQueue\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"int256\",\"name\":\"assetsDelta\",\"type\":\"int256\"},{\"internalType\":\"uint256\",\"name\":\"limit\",\"type\":\"uint256\"}],\"name\":\"LimitReached\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"NotInitializing\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"OnlyStrategyStorageExposed\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"max\",\"type\":\"uint256\"}],\"name\":\"RebalanceAmountExceedsMaxDeposit\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"max\",\"type\":\"uint256\"}],\"name\":\"RebalanceAmountExceedsMaxWithdraw\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"uint8\",\"name\":\"bits\",\"type\":\"uint8\"},{\"internalType\":\"uint256\",\"name\":\"value\",\"type\":\"uint256\"}],\"name\":\"SafeCastOverflowedUintDowncast\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"value\",\"type\":\"uint256\"}],\"name\":\"SafeCastOverflowedUintToInt\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"token\",\"type\":\"address\"}],\"name\":\"SafeERC20FailedOperation\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"UUPSUnauthorizedCallContext\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"slot\",\"type\":\"bytes32\"}],\"name\":\"UUPSUnsupportedProxiableUUID\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"WithdrawError\",\"type\":\"error\"},{\"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\":false,\"internalType\":\"OutflowLimitedAMMSV.SlotIndex\",\"name\":\"slot\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"int256\",\"name\":\"oldDelta\",\"type\":\"int256\"},{\"indexed\":false,\"internalType\":\"int256\",\"name\":\"newDelta\",\"type\":\"int256\"}],\"name\":\"DeltaManuallySet\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"sender\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"assets\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"shares\",\"type\":\"uint256\"}],\"name\":\"Deposit\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"bytes\",\"name\":\"reason\",\"type\":\"bytes\"}],\"name\":\"DepositFailed\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"bytes\",\"name\":\"reason\",\"type\":\"bytes\"}],\"name\":\"DepositFailed\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"uint8[]\",\"name\":\"queue\",\"type\":\"uint8[]\"}],\"name\":\"DepositQueueChanged\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"bytes\",\"name\":\"reason\",\"type\":\"bytes\"}],\"name\":\"DisconnectFailed\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"bytes\",\"name\":\"reason\",\"type\":\"bytes\"}],\"name\":\"DisconnectFailed\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"uint64\",\"name\":\"version\",\"type\":\"uint64\"}],\"name\":\"Initialized\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"slotSize\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"newLimit\",\"type\":\"uint256\"}],\"name\":\"LimitChanged\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"contract IInvestStrategy\",\"name\":\"strategyFrom\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"contract IInvestStrategy\",\"name\":\"strategyTo\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"}],\"name\":\"Rebalance\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"contract IInvestStrategy\",\"name\":\"strategy\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint8\",\"name\":\"index\",\"type\":\"uint8\"}],\"name\":\"StrategyAdded\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"contract IInvestStrategy\",\"name\":\"oldStrategy\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"contract IInvestStrategy\",\"name\":\"newStrategy\",\"type\":\"address\"}],\"name\":\"StrategyChanged\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"contract IInvestStrategy\",\"name\":\"oldStrategy\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"contract IInvestStrategy\",\"name\":\"newStrategy\",\"type\":\"address\"}],\"name\":\"StrategyChanged\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"contract IInvestStrategy\",\"name\":\"strategy\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint8\",\"name\":\"index\",\"type\":\"uint8\"}],\"name\":\"StrategyRemoved\",\"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\":\"implementation\",\"type\":\"address\"}],\"name\":\"Upgraded\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"sender\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"receiver\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"assets\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"shares\",\"type\":\"uint256\"}],\"name\":\"Withdraw\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"bytes\",\"name\":\"reason\",\"type\":\"bytes\"}],\"name\":\"WithdrawFailed\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"bytes\",\"name\":\"reason\",\"type\":\"bytes\"}],\"name\":\"WithdrawFailed\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"uint8[]\",\"name\":\"queue\",\"type\":\"uint8[]\"}],\"name\":\"WithdrawQueueChanged\",\"type\":\"event\"},{\"inputs\":[],\"name\":\"MAX_STRATEGIES\",\"outputs\":[{\"internalType\":\"uint8\",\"name\":\"\",\"type\":\"uint8\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"UPGRADE_INTERFACE_VERSION\",\"outputs\":[{\"internalType\":\"string\",\"name\":\"\",\"type\":\"string\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"contract IInvestStrategy\",\"name\":\"newStrategy\",\"type\":\"address\"},{\"internalType\":\"bytes\",\"name\":\"initStrategyData\",\"type\":\"bytes\"}],\"name\":\"addStrategy\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"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\":\"value\",\"type\":\"uint256\"}],\"name\":\"approve\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"asset\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"}],\"name\":\"balanceOf\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"OutflowLimitedAMMSV.SlotIndex\",\"name\":\"slot\",\"type\":\"uint256\"},{\"internalType\":\"int256\",\"name\":\"deltaChange\",\"type\":\"int256\"}],\"name\":\"changeDelta\",\"outputs\":[{\"internalType\":\"int256\",\"name\":\"newDelta\",\"type\":\"int256\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint8[]\",\"name\":\"newDepositQueue_\",\"type\":\"uint8[]\"}],\"name\":\"changeDepositQueue\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint8[]\",\"name\":\"newWithdrawQueue_\",\"type\":\"uint8[]\"}],\"name\":\"changeWithdrawQueue\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"shares\",\"type\":\"uint256\"}],\"name\":\"convertToAssets\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"assets\",\"type\":\"uint256\"}],\"name\":\"convertToShares\",\"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\":\"assets\",\"type\":\"uint256\"},{\"internalType\":\"address\",\"name\":\"receiver\",\"type\":\"address\"}],\"name\":\"deposit\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"depositQueue\",\"outputs\":[{\"internalType\":\"uint8[32]\",\"name\":\"\",\"type\":\"uint8[32]\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"assets\",\"type\":\"uint256\"}],\"name\":\"depositToStrategies\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint8\",\"name\":\"strategyIndex\",\"type\":\"uint8\"},{\"internalType\":\"uint8\",\"name\":\"method\",\"type\":\"uint8\"},{\"internalType\":\"bytes\",\"name\":\"extraData\",\"type\":\"bytes\"}],\"name\":\"forwardToStrategy\",\"outputs\":[{\"internalType\":\"bytes\",\"name\":\"\",\"type\":\"bytes\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"OutflowLimitedAMMSV.SlotIndex\",\"name\":\"slot\",\"type\":\"uint256\"}],\"name\":\"getAssetsDelta\",\"outputs\":[{\"internalType\":\"int256\",\"name\":\"\",\"type\":\"int256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"slot\",\"type\":\"bytes32\"}],\"name\":\"getBytesSlot\",\"outputs\":[{\"internalType\":\"bytes\",\"name\":\"\",\"type\":\"bytes\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint8\",\"name\":\"strategyIndex\",\"type\":\"uint8\"},{\"internalType\":\"uint8\",\"name\":\"method\",\"type\":\"uint8\"}],\"name\":\"getForwardToStrategySelector\",\"outputs\":[{\"internalType\":\"bytes4\",\"name\":\"selector\",\"type\":\"bytes4\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"getOutflowLimit\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"getOutflowLimitSlotSize\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"string\",\"name\":\"name_\",\"type\":\"string\"},{\"internalType\":\"string\",\"name\":\"symbol_\",\"type\":\"string\"},{\"internalType\":\"contract IERC20\",\"name\":\"asset_\",\"type\":\"address\"},{\"internalType\":\"contract IInvestStrategy[]\",\"name\":\"strategies_\",\"type\":\"address[]\"},{\"internalType\":\"bytes[]\",\"name\":\"initStrategyDatas\",\"type\":\"bytes[]\"},{\"internalType\":\"uint8[]\",\"name\":\"depositQueue_\",\"type\":\"uint8[]\"},{\"internalType\":\"uint8[]\",\"name\":\"withdrawQueue_\",\"type\":\"uint8[]\"}],\"name\":\"initialize\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"slotSize\",\"type\":\"uint256\"},{\"internalType\":\"uint40\",\"name\":\"timestamp\",\"type\":\"uint40\"}],\"name\":\"makeOutflowSlot\",\"outputs\":[{\"internalType\":\"OutflowLimitedAMMSV.SlotIndex\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"pure\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"name\":\"maxDeposit\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"ret\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"name\":\"maxMint\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"}],\"name\":\"maxRedeem\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"}],\"name\":\"maxWithdraw\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"shares\",\"type\":\"uint256\"},{\"internalType\":\"address\",\"name\":\"receiver\",\"type\":\"address\"}],\"name\":\"mint\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"name\",\"outputs\":[{\"internalType\":\"string\",\"name\":\"\",\"type\":\"string\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"assets\",\"type\":\"uint256\"}],\"name\":\"previewDeposit\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"shares\",\"type\":\"uint256\"}],\"name\":\"previewMint\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"shares\",\"type\":\"uint256\"}],\"name\":\"previewRedeem\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"assets\",\"type\":\"uint256\"}],\"name\":\"previewWithdraw\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"proxiableUUID\",\"outputs\":[{\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint8\",\"name\":\"strategyFromIdx\",\"type\":\"uint8\"},{\"internalType\":\"uint8\",\"name\":\"strategyToIdx\",\"type\":\"uint8\"},{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"}],\"name\":\"rebalance\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"shares\",\"type\":\"uint256\"},{\"internalType\":\"address\",\"name\":\"receiver\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"}],\"name\":\"redeem\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint8\",\"name\":\"strategyIndex\",\"type\":\"uint8\"},{\"internalType\":\"bool\",\"name\":\"force\",\"type\":\"bool\"}],\"name\":\"removeStrategy\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint8\",\"name\":\"strategyIndex\",\"type\":\"uint8\"},{\"internalType\":\"contract IInvestStrategy\",\"name\":\"newStrategy\",\"type\":\"address\"},{\"internalType\":\"bytes\",\"name\":\"initStrategyData\",\"type\":\"bytes\"},{\"internalType\":\"bool\",\"name\":\"force\",\"type\":\"bool\"}],\"name\":\"replaceStrategy\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"slotSize\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"limit\",\"type\":\"uint256\"}],\"name\":\"setupOutflowLimit\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"strategies\",\"outputs\":[{\"internalType\":\"contract IInvestStrategy[32]\",\"name\":\"\",\"type\":\"address[32]\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"symbol\",\"outputs\":[{\"internalType\":\"string\",\"name\":\"\",\"type\":\"string\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"totalAssets\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"assets\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"totalSupply\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"value\",\"type\":\"uint256\"}],\"name\":\"transfer\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"from\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"value\",\"type\":\"uint256\"}],\"name\":\"transferFrom\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"newImplementation\",\"type\":\"address\"},{\"internalType\":\"bytes\",\"name\":\"data\",\"type\":\"bytes\"}],\"name\":\"upgradeToAndCall\",\"outputs\":[],\"stateMutability\":\"payable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"assets\",\"type\":\"uint256\"},{\"internalType\":\"address\",\"name\":\"receiver\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"}],\"name\":\"withdraw\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"withdrawQueue\",\"outputs\":[{\"internalType\":\"uint8[32]\",\"name\":\"\",\"type\":\"uint8[32]\"}],\"stateMutability\":\"view\",\"type\":\"function\"}],\"devdoc\":{\"author\":\"Ensuro\",\"custom:security-contact\":\"security@ensuro.co\",\"details\":\"Variant of the AccessManagedMSV that has protection to limit the amount of outflows in a given timeframe.      Reverts if net outflows in a given timeframe exceeded a given threshold.      The check is executed before any withdraw/redeem operation, and the outflows are recorded on each      withdraw/redeem/mint/deposit methods.      The limit is applied for TWO `slotSize` periods. So for example if slotSize=1 day and limit=100K, this means      that up to 100K of outflows every two consecutive calendar days are acceptable.      The vault MUST be deployed behind an AccessManagedProxy that controls the access to the critical methods      Since this contract DOESN'T DO ANY ACCESS CONTROL.\",\"errors\":{\"AddressEmptyCode(address)\":[{\"details\":\"There's no code at `target` (it is not a contract).\"}],\"ERC1967InvalidImplementation(address)\":[{\"details\":\"The `implementation` of the proxy is invalid.\"}],\"ERC1967NonPayable()\":[{\"details\":\"An upgrade function sees `msg.value > 0` that may be lost.\"}],\"ERC20InsufficientAllowance(address,uint256,uint256)\":[{\"details\":\"Indicates a failure with the `spender`\\u2019s `allowance`. Used in transfers.\",\"params\":{\"allowance\":\"Amount of tokens a `spender` is allowed to operate with.\",\"needed\":\"Minimum amount required to perform a transfer.\",\"spender\":\"Address that may be allowed to operate on tokens without being their owner.\"}}],\"ERC20InsufficientBalance(address,uint256,uint256)\":[{\"details\":\"Indicates an error related to the current `balance` of a `sender`. Used in transfers.\",\"params\":{\"balance\":\"Current balance for the interacting account.\",\"needed\":\"Minimum amount required to perform a transfer.\",\"sender\":\"Address whose tokens are being transferred.\"}}],\"ERC20InvalidApprover(address)\":[{\"details\":\"Indicates a failure with the `approver` of a token to be approved. Used in approvals.\",\"params\":{\"approver\":\"Address initiating an approval operation.\"}}],\"ERC20InvalidReceiver(address)\":[{\"details\":\"Indicates a failure with the token `receiver`. Used in transfers.\",\"params\":{\"receiver\":\"Address to which tokens are being transferred.\"}}],\"ERC20InvalidSender(address)\":[{\"details\":\"Indicates a failure with the token `sender`. Used in transfers.\",\"params\":{\"sender\":\"Address whose tokens are being transferred.\"}}],\"ERC20InvalidSpender(address)\":[{\"details\":\"Indicates a failure with the `spender` to be approved. Used in approvals.\",\"params\":{\"spender\":\"Address that may be allowed to operate on tokens without being their owner.\"}}],\"ERC4626ExceededMaxDeposit(address,uint256,uint256)\":[{\"details\":\"Attempted to deposit more assets than the max amount for `receiver`.\"}],\"ERC4626ExceededMaxMint(address,uint256,uint256)\":[{\"details\":\"Attempted to mint more shares than the max amount for `receiver`.\"}],\"ERC4626ExceededMaxRedeem(address,uint256,uint256)\":[{\"details\":\"Attempted to redeem more shares than the max amount for `receiver`.\"}],\"ERC4626ExceededMaxWithdraw(address,uint256,uint256)\":[{\"details\":\"Attempted to withdraw more assets than the max amount for `receiver`.\"}],\"FailedCall()\":[{\"details\":\"A call to an address target failed. The target may have reverted.\"}],\"InvalidInitialization()\":[{\"details\":\"The contract is already initialized.\"}],\"NotInitializing()\":[{\"details\":\"The contract is not initializing.\"}],\"SafeCastOverflowedUintDowncast(uint8,uint256)\":[{\"details\":\"Value doesn't fit in an uint of `bits` size.\"}],\"SafeCastOverflowedUintToInt(uint256)\":[{\"details\":\"An uint value doesn't fit in an int of `bits` size.\"}],\"SafeERC20FailedOperation(address)\":[{\"details\":\"An operation with an ERC-20 token failed.\"}],\"UUPSUnauthorizedCallContext()\":[{\"details\":\"The call is from an unauthorized context.\"}],\"UUPSUnsupportedProxiableUUID(bytes32)\":[{\"details\":\"The storage `slot` is unsupported as a UUID.\"}]},\"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.\"},\"Initialized(uint64)\":{\"details\":\"Triggered when the contract has been initialized or reinitialized.\"},\"Transfer(address,address,uint256)\":{\"details\":\"Emitted when `value` tokens are moved from one account (`from`) to another (`to`). Note that `value` may be zero.\"},\"Upgraded(address)\":{\"details\":\"Emitted when the implementation is upgraded.\"}},\"kind\":\"dev\",\"methods\":{\"addStrategy(address,bytes)\":{\"details\":\"Adds a new strategy to the vault. The new strategy will be added at the end of the deposit and withdraw      queues.\",\"params\":{\"initStrategyData\":\"Initialization parameters for this new strategy\",\"newStrategy\":\"The new strategy to plug into the vault\"}},\"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\":\"See {IERC20-approve}. NOTE: If `value` is the maximum `uint256`, the allowance is not updated on `transferFrom`. This is semantically equivalent to an infinite approval. Requirements: - `spender` cannot be the zero address.\"},\"asset()\":{\"details\":\"Returns the address of the underlying token used for the Vault for accounting, depositing, and withdrawing. - MUST be an ERC-20 token contract. - MUST NOT revert.\"},\"balanceOf(address)\":{\"details\":\"Returns the value of tokens owned by `account`.\"},\"changeDelta(uint256,int256)\":{\"details\":\"Manually changes the delta in a given slot. Used to exceptionally allow or disallow limits different than      the configured ones or to reset the limit when a valid operation is verified.\",\"params\":{\"deltaChange\":\"The modification to apply to the registered inflows in a given slot. Positive to increase the                    inflows, negative to decrease the outflows.\",\"slot\":\"Identification of the slot to modify.             The slot is computed as `slotSize << 128 + block.timestamp / slotSize` (See {makeOutflowSlot})\"},\"returns\":{\"newDelta\":\"The resulting delta in the slot after applying the change\"}},\"changeDepositQueue(uint8[])\":{\"details\":\"Updates the deposit queue with a new one.\",\"params\":{\"newDepositQueue_\":\"New deposit queue, the lenght must be the same of the installed strategies without                         repeated indexes\"}},\"changeWithdrawQueue(uint8[])\":{\"details\":\"Updates the withdraw queue with a new one.\",\"params\":{\"newWithdrawQueue_\":\"New withdrawal queue, the lenght must be the same of the installed strategies without                          repeated indexes\"}},\"convertToAssets(uint256)\":{\"details\":\"Returns the amount of assets that the Vault would exchange for the amount of shares provided, in an ideal scenario where all the conditions are met. - MUST NOT be inclusive of any fees that are charged against assets in the Vault. - MUST NOT show any variations depending on the caller. - MUST NOT reflect slippage or other on-chain conditions, when performing the actual exchange. - MUST NOT revert. NOTE: This calculation MAY NOT reflect the \\u201cper-user\\u201d price-per-share, and instead should reflect the \\u201caverage-user\\u2019s\\u201d price-per-share, meaning what the average user should expect to see when exchanging to and from.\"},\"convertToShares(uint256)\":{\"details\":\"Returns the amount of shares that the Vault would exchange for the amount of assets provided, in an ideal scenario where all the conditions are met. - MUST NOT be inclusive of any fees that are charged against assets in the Vault. - MUST NOT show any variations depending on the caller. - MUST NOT reflect slippage or other on-chain conditions, when performing the actual exchange. - MUST NOT revert. NOTE: This calculation MAY NOT reflect the \\u201cper-user\\u201d price-per-share, and instead should reflect the \\u201caverage-user\\u2019s\\u201d price-per-share, meaning what the average user should expect to see when exchanging to and from.\"},\"decimals()\":{\"details\":\"Decimals are computed by adding the decimal offset on top of the underlying asset's decimals. This \\\"original\\\" value is cached during construction of the vault contract. If this read operation fails (e.g., the asset has not been created yet), a default of 18 is used to represent the underlying asset's decimals. See {IERC20Metadata-decimals}.\"},\"deposit(uint256,address)\":{\"details\":\"Deposit `assets` underlying tokens and send the corresponding number of vault shares (`shares`) to `receiver`. - MUST emit the Deposit event. - MAY support an additional flow in which the underlying tokens are owned by the Vault contract before the   deposit execution, and are accounted for during deposit. - MUST revert if all of assets cannot be deposited (due to deposit limit being reached, slippage, the user not   approving enough underlying tokens to the Vault contract, etc). NOTE: most implementations will require pre-approval of the Vault with the Vault\\u2019s underlying asset token.\"},\"depositQueue()\":{\"details\":\"Returns the order in which the deposits will be made, expressed as index+1 in the _strategies array,      filled with zeros at the end\"},\"depositToStrategies(uint256)\":{\"details\":\"Deposit assets to the strategies in the deposit queue order until zero assets remains to be deposited.      After finishing the deposit, left must be zero, otherwise reverts, and should never happen.      This method might be used by the some strategies to reinject rewards. Left as virtual so child classes      can implement somekind of access control.\",\"params\":{\"assets\":\"The amount of assets to be deposited to the strategies.\"}},\"forwardToStrategy(uint8,uint8,bytes)\":{\"details\":\"Used to call specific methods on the strategies. The specific vault implementation will define the access      control mechanism to validate who can execute these calls.\",\"params\":{\"extraData\":\"Additional parameters sent to the method.\",\"method\":\"Id of the method to call. Is recommended that the strategy defines an enum with the methods that               can be called externally and validates this value.\",\"strategyIndex\":\"The index of the strategy in the _strategies array\"},\"returns\":{\"_0\":\"Returns the output received from the IInvestStrategy.\"}},\"getAssetsDelta(uint256)\":{\"details\":\"The current delta variation in assets for the given slot.      Calculated as the sum of limit + deposits - withdrawals.\",\"params\":{\"slot\":\"The given slot to check the delta. Compatible with the slot calculated by makeOutflowSlot.\"},\"returns\":{\"_0\":\"The net flows in a slot (positive for inflows, more deposits than withdrawals, negative otherwise)\"}},\"getBytesSlot(bytes32)\":{\"details\":\"Exposes a given slot as a bytes array. To be used by the IInvestStrategy views to access their storage.      Only the slot==strategyStorageSlot() can be accessed.\"},\"getForwardToStrategySelector(uint8,uint8)\":{\"details\":\"Returns the selector used to define the role required to call forwardToStrategy on a given strategy and      method\",\"params\":{\"method\":\"Id of the method to call. Is recommended that the strategy defines an enum with the methods that               can be called externally and validates this value.\",\"strategyIndex\":\"The index of the strategy in the _strategies array\"},\"returns\":{\"selector\":\"The bytes4 selector required to execute the call (will be used with target=address(this))\"}},\"getOutflowLimit()\":{\"details\":\"Returns the net outflow limit that will be applied on two consecutive time slots\"},\"getOutflowLimitSlotSize()\":{\"details\":\"Returns the current time slot size in seconds.\"},\"initialize(string,string,address,address[],bytes[],uint8[],uint8[])\":{\"details\":\"Initializes the SingleStrategyERC4626\",\"params\":{\"asset_\":\"The asset() of the ERC4626\",\"depositQueue_\":\"The order in which the funds will be deposited in the strategies\",\"initStrategyDatas\":\"Initialization data that will be sent to the strategies\",\"name_\":\"Name of the ERC20/ERC4626 token\",\"strategies_\":\"The IInvestStrategys that will be used to manage the funds received.\",\"symbol_\":\"Symbol of the ERC20/ERC4626 token\",\"withdrawQueue_\":\"The order in which the funds will be withdrawn from the strategies\"}},\"makeOutflowSlot(uint256,uint40)\":{\"details\":\"Computes the SlotIndex datatype comining both the slotSize and the index in which the timestamp is in      a line of time that starts at epoch, with slots of slotSize\",\"params\":{\"slotSize\":\"The size of the slot in seconds that splits the timeline\",\"timestamp\":\"The time for which we want to calculate the slot.\"},\"returns\":{\"_0\":\"Returns a SlotIndex datatype that's the combination of the slotSize and the index in which the timestamp         falls\"}},\"maxDeposit(address)\":{\"details\":\"Returns the maximum amount of the underlying asset that can be deposited into the Vault for the receiver, through a deposit call. - MUST return a limited value if receiver is subject to some deposit limit. - MUST return 2 ** 256 - 1 if there is no limit on the maximum amount of assets that may be deposited. - MUST NOT revert.\"},\"maxMint(address)\":{\"details\":\"Returns the maximum amount of the Vault shares that can be minted for the receiver, through a mint call. - MUST return a limited value if receiver is subject to some mint limit. - MUST return 2 ** 256 - 1 if there is no limit on the maximum amount of shares that may be minted. - MUST NOT revert.\"},\"maxRedeem(address)\":{\"details\":\"Returns the maximum amount of Vault shares that can be redeemed from the owner balance in the Vault, through a redeem call. - MUST return a limited value if owner is subject to some withdrawal limit or timelock. - MUST return balanceOf(owner) if owner is not subject to any withdrawal limit or timelock. - MUST NOT revert.\"},\"maxWithdraw(address)\":{\"details\":\"Returns the maximum amount of the underlying asset that can be withdrawn from the owner balance in the Vault, through a withdraw call. - MUST return a limited value if owner is subject to some withdrawal limit or timelock. - MUST NOT revert.\"},\"mint(uint256,address)\":{\"details\":\"Mints exactly `shares` vault shares to `receiver` in exchange for `assets` underlying tokens. - MUST emit the Deposit event. - MAY support an additional flow in which the underlying tokens are owned by the Vault contract before the mint   execution, and are accounted for during mint. - MUST revert if all of shares cannot be minted (due to deposit limit being reached, slippage, the user not   approving enough underlying tokens to the Vault contract, etc). NOTE: most implementations will require pre-approval of the Vault with the Vault\\u2019s underlying asset token.\"},\"name()\":{\"details\":\"Returns the name of the token.\"},\"previewDeposit(uint256)\":{\"details\":\"Allows an on-chain or off-chain user to simulate the effects of their deposit at the current block, given current on-chain conditions. - MUST return as close to and no more than the exact amount of Vault shares that would be minted in a deposit   call in the same transaction. I.e. deposit should return the same or more shares as previewDeposit if called   in the same transaction. - MUST NOT account for deposit limits like those returned from maxDeposit and should always act as though the   deposit would be accepted, regardless if the user has enough tokens approved, etc. - MUST be inclusive of deposit fees. Integrators should be aware of the existence of deposit fees. - MUST NOT revert. NOTE: any unfavorable discrepancy between convertToShares and previewDeposit SHOULD be considered slippage in share price or some other type of condition, meaning the depositor will lose assets by depositing.\"},\"previewMint(uint256)\":{\"details\":\"Allows an on-chain or off-chain user to simulate the effects of their mint at the current block, given current on-chain conditions. - MUST return as close to and no fewer than the exact amount of assets that would be deposited in a mint call   in the same transaction. I.e. mint should return the same or fewer assets as previewMint if called in the   same transaction. - MUST NOT account for mint limits like those returned from maxMint and should always act as though the mint   would be accepted, regardless if the user has enough tokens approved, etc. - MUST be inclusive of deposit fees. Integrators should be aware of the existence of deposit fees. - MUST NOT revert. NOTE: any unfavorable discrepancy between convertToAssets and previewMint SHOULD be considered slippage in share price or some other type of condition, meaning the depositor will lose assets by minting.\"},\"previewRedeem(uint256)\":{\"details\":\"Allows an on-chain or off-chain user to simulate the effects of their redemption at the current block, given current on-chain conditions. - MUST return as close to and no more than the exact amount of assets that would be withdrawn in a redeem call   in the same transaction. I.e. redeem should return the same or more assets as previewRedeem if called in the   same transaction. - MUST NOT account for redemption limits like those returned from maxRedeem and should always act as though the   redemption would be accepted, regardless if the user has enough shares, etc. - MUST be inclusive of withdrawal fees. Integrators should be aware of the existence of withdrawal fees. - MUST NOT revert. NOTE: any unfavorable discrepancy between convertToAssets and previewRedeem SHOULD be considered slippage in share price or some other type of condition, meaning the depositor will lose assets by redeeming.\"},\"previewWithdraw(uint256)\":{\"details\":\"Allows an on-chain or off-chain user to simulate the effects of their withdrawal at the current block, given current on-chain conditions. - MUST return as close to and no fewer than the exact amount of Vault shares that would be burned in a withdraw   call in the same transaction. I.e. withdraw should return the same or fewer shares as previewWithdraw if   called   in the same transaction. - MUST NOT account for withdrawal limits like those returned from maxWithdraw and should always act as though   the withdrawal would be accepted, regardless if the user has enough shares, etc. - MUST be inclusive of withdrawal fees. Integrators should be aware of the existence of withdrawal fees. - MUST NOT revert. NOTE: any unfavorable discrepancy between convertToShares and previewWithdraw SHOULD be considered slippage in share price or some other type of condition, meaning the depositor will lose assets by depositing.\"},\"proxiableUUID()\":{\"details\":\"Implementation of the ERC-1822 {proxiableUUID} function. This returns the storage slot used by the implementation. It is used to validate the implementation's compatibility when performing an upgrade. IMPORTANT: A proxy pointing at a proxiable contract should not be considered proxiable itself, because this risks bricking a proxy that upgrades to it, by delegating to itself until out of gas. Thus it is critical that this function revert if invoked through a proxy. This is guaranteed by the `notDelegated` modifier.\"},\"rebalance(uint8,uint8,uint256)\":{\"details\":\"Moves funds from one strategy to another.\",\"params\":{\"amount\":\"The amount to transfer from one strategy to the other. type(uint256).max to move all the assets.\",\"strategyFromIdx\":\"The index of the strategy that will provide the funds in the _strategies array\",\"strategyToIdx\":\"The index of the strategy that will receive the funds in the _strategies array\"}},\"redeem(uint256,address,address)\":{\"details\":\"Burns exactly shares from owner and sends assets of underlying tokens to receiver. - MUST emit the Withdraw event. - MAY support an additional flow in which the underlying tokens are owned by the Vault contract before the   redeem execution, and are accounted for during redeem. - MUST revert if all of shares cannot be redeemed (due to withdrawal limit being reached, slippage, the owner   not having enough shares, etc). NOTE: some implementations will require pre-requesting to the Vault before a withdrawal may be performed. Those methods should be performed separately.\"},\"removeStrategy(uint8,bool)\":{\"details\":\"Remove an strategy from the vault. It's only possible if the strategy doesn't have assets.      The strategy is removed from deposit and withdraw queues\",\"params\":{\"force\":\"If strategy.disconnect fails, this parameter indicates whether the operation is reverted or not.\",\"strategyIndex\":\"The index of the strategy in the _strategies array\"}},\"replaceStrategy(uint8,address,bytes,bool)\":{\"details\":\"Changes one investment strategy to a new one, keeping the deposit and withdraw queues unaffected.      When this happens, all funds are withdrawn from the old strategy and deposited on the new one.      This reverts if any of this fails, unless the force parameter is true, in that case errors in withdrawal      or deposit are silented.\",\"params\":{\"force\":\"Boolean to indicate if errors on withdraw or deposit should be accepted. Normally you should send              this value in `false`. Only use `true` if you know what you are doing and trying to replace a faulty              strategy.\",\"initStrategyData\":\"Initialization parameters for this new strategy\",\"newStrategy\":\"The new strategy to plug into the vault\",\"strategyIndex\":\"The index of the strategy in the _strategies array\"}},\"setupOutflowLimit(uint256,uint256)\":{\"details\":\"Changes the limit and the timeframe used to track it. WARNING: changing the slotSize effectivelly resets the recorded outflows, so after this call (if slotSize changed), the delta will be zero.\",\"params\":{\"limit\":\"The max amount of outflows that will be allowed in a given time slot.\",\"slotSize\":\"The duration in seconds of the timeframe used to limit the amount of outflows. Setting slotSize                 to zero disables the outflow limit checks and the vault behaves like a normal AccessManagedMSV\"}},\"strategies()\":{\"details\":\"Returns the list of strategies in the vault in order.      The array is filled with zero addresses after the first one that is address(0).\"},\"symbol()\":{\"details\":\"Returns the symbol of the token, usually a shorter version of the name.\"},\"totalAssets()\":{\"details\":\"Returns the total amount of the underlying asset that is \\u201cmanaged\\u201d by Vault. - SHOULD include any compounding that occurs from yield. - MUST be inclusive of any fees that are charged against assets in the Vault. - MUST NOT revert.\"},\"totalSupply()\":{\"details\":\"Returns the value of tokens in existence.\"},\"transfer(address,uint256)\":{\"details\":\"See {IERC20-transfer}. Requirements: - `to` cannot be the zero address. - the caller must have a balance of at least `value`.\"},\"transferFrom(address,address,uint256)\":{\"details\":\"See {IERC20-transferFrom}. Skips emitting an {Approval} event indicating an allowance update. This is not required by the ERC. See {xref-ERC20-_approve-address-address-uint256-bool-}[_approve]. NOTE: Does not update the allowance if the current allowance is the maximum `uint256`. Requirements: - `from` and `to` cannot be the zero address. - `from` must have a balance of at least `value`. - the caller must have allowance for ``from``'s tokens of at least `value`.\"},\"upgradeToAndCall(address,bytes)\":{\"custom:oz-upgrades-unsafe-allow-reachable\":\"delegatecall\",\"details\":\"Upgrade the implementation of the proxy to `newImplementation`, and subsequently execute the function call encoded in `data`. Calls {_authorizeUpgrade}. Emits an {Upgraded} event.\"},\"withdraw(uint256,address,address)\":{\"details\":\"Burns shares from owner and sends exactly assets of underlying tokens to receiver. - MUST emit the Withdraw event. - MAY support an additional flow in which the underlying tokens are owned by the Vault contract before the   withdraw execution, and are accounted for during withdraw. - MUST revert if all of assets cannot be withdrawn (due to withdrawal limit being reached, slippage, the owner   not having enough shares, etc). Note that some implementations will require pre-requesting to the Vault before a withdrawal may be performed. Those methods should be performed separately.\"},\"withdrawQueue()\":{\"details\":\"Returns the order in which the withdraws will be made, expressed as index+1 in the _strategies array,      filled with zeros at the end\"}},\"title\":\"OutflowLimitedAMMSV\",\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{\"changeDepositQueue(uint8[])\":{\"notice\":\"Emits DepositQueueChanged(uint8[]) when updating the deposit queue.\"},\"changeWithdrawQueue(uint8[])\":{\"notice\":\"Emits WithdrawQueueChanged(uint8[]) when updating the deposit queue.\"},\"rebalance(uint8,uint8,uint256)\":{\"notice\":\"Emits {Rebalance(strategyFrom, strategyTo, amount)}\"}},\"version\":1}},\"settings\":{\"compilationTarget\":{\"contracts/OutflowLimitedAMMSV.sol\":\"OutflowLimitedAMMSV\"},\"evmVersion\":\"prague\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"enabled\":true,\"runs\":200},\"remappings\":[]},\"sources\":{\"@ensuro/access-managed-proxy/contracts/AMPUtils.sol\":{\"keccak256\":\"0x3f25097d759aa89ce9a7a94f98b854a3dc23c51f7f895b95a8d489e74d5f1d98\",\"license\":\"Apache-2.0\",\"urls\":[\"bzz-raw://2912cf8c79b973d07fbb741e7d1048026f0a71489df2adf97552b83b23b427d7\",\"dweb:/ipfs/QmRTfFaqy72p4RfY99hKM1K9wH5kxaTnikH5VJjpL7K7sD\"]},\"@ensuro/access-managed-proxy/contracts/AccessManagedProxy.sol\":{\"keccak256\":\"0x0d3a66feed9000ccbc8a8e6c597b7fe4659f56b5a4dfa2ab1eea314171ae9745\",\"license\":\"Apache-2.0\",\"urls\":[\"bzz-raw://fa3f292954915546ce72159da1dbcd44b8cdc19ea0b5b3fc6dbb47070451583c\",\"dweb:/ipfs/QmeL7krtsKLpuS9hy5w6eRoRsXU874XtgNWutUavxRKzmA\"]},\"@ensuro/access-managed-proxy/contracts/AccessManagedProxyBase.sol\":{\"keccak256\":\"0xe84ff4706a5ae4c03f011343dfb73ce8b731e1eb2287d25018a449b3e802092e\",\"license\":\"Apache-2.0\",\"urls\":[\"bzz-raw://53202b0391daa08f69fda5c471f957f9811dba1d2033e5e3e3a7a78c1d05eb39\",\"dweb:/ipfs/QmabycaktcAsVJFEdf7F4Lk1WsAz9qesqQARLwjYvM722m\"]},\"@ensuro/access-managed-proxy/contracts/interfaces/IAccessManagedProxy.sol\":{\"keccak256\":\"0xdd762bad2f6ad362f5a38fb333d2a953f6c9d0beea122dbaef0e333a7b83a054\",\"license\":\"Apache-2.0\",\"urls\":[\"bzz-raw://a2bb86de08187cee5956393ca2cf096a09eb6ac694471e436ca12e377d97cb40\",\"dweb:/ipfs/Qmf6cNjug4swjsvTJYjbzhMMfAfSFdUuyJjkEf3b1cu2hn\"]},\"@openzeppelin/contracts-upgradeable/proxy/utils/UUPSUpgradeable.sol\":{\"keccak256\":\"0x4918e374e9ce84e9b196486bafbd46851d5e72ab315e31f0b1d7c443dcfea5bf\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://2ced247afc54a93a13922ebbd63add61130abe483ab5b5b78e7e991d564d150e\",\"dweb:/ipfs/QmTfxjcTgfekiguegjvYMyfqhyRNffui17f8xi86BCZNVt\"]},\"@openzeppelin/contracts-upgradeable/token/ERC20/ERC20Upgradeable.sol\":{\"keccak256\":\"0xd518def45c722a6e803e1e26e625db25e01497f672ca566cca585d234ec903b0\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://6e7de3fccd96783244790cde282435ce0fd3a44ab4ccb10f17005c743202882f\",\"dweb:/ipfs/QmYSepstTqs5UPJvjeJXkWU5R659yReqrSgSGGh65hkbdK\"]},\"@openzeppelin/contracts-upgradeable/token/ERC20/extensions/ERC4626Upgradeable.sol\":{\"keccak256\":\"0x9a451617fef51e7faef5f46de537f9aaca837d470750cfbd7b8a733341dc3951\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://1cdebfebb9bbfe1558d15eab9cf8bd1bd5ad8bb934f6a3d9ea8ef022603c1d59\",\"dweb:/ipfs/QmT83ko5MwSdEJsHz8cQbQGBDyM1q9PvzGm9RFmXfWXMgA\"]},\"@openzeppelin/contracts-upgradeable/utils/ContextUpgradeable.sol\":{\"keccak256\":\"0xad316bdc3ee64a0e29773256245045dc57b92660799ff14f668f7c0da9456a9d\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://66463434d266816fca2a3a2734ceee88544e61b7cc3899c50333b46e8e771455\",\"dweb:/ipfs/QmPYCzHjki1HQLvBub3uUqoUKGrwdgR3xP9Zpya14YTdXS\"]},\"@openzeppelin/contracts/access/manager/IAccessManager.sol\":{\"keccak256\":\"0x71e3e350e83af0018a1683cc2ce4c13893cc01f78e5c9c305f6828608ffcfa18\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://0a7b521c9999007715c9bdedffaad2ef7d2ccfa07bca2a39ba9e0c2e8a944a63\",\"dweb:/ipfs/QmamPG6Y1p7iZh4cF8Hfp3oufowSRyB3S3DisTKkmVWSai\"]},\"@openzeppelin/contracts/interfaces/IERC1363.sol\":{\"keccak256\":\"0xd5ea07362ab630a6a3dee4285a74cf2377044ca2e4be472755ad64d7c5d4b69d\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://da5e832b40fc5c3145d3781e2e5fa60ac2052c9d08af7e300dc8ab80c4343100\",\"dweb:/ipfs/QmTzf7N5ZUdh5raqtzbM11yexiUoLC9z3Ws632MCuycq1d\"]},\"@openzeppelin/contracts/interfaces/IERC165.sol\":{\"keccak256\":\"0x0afcb7e740d1537b252cb2676f600465ce6938398569f09ba1b9ca240dde2dfc\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://1c299900ac4ec268d4570ecef0d697a3013cd11a6eb74e295ee3fbc945056037\",\"dweb:/ipfs/Qmab9owJoxcA7vJT5XNayCMaUR1qxqj1NDzzisduwaJMcZ\"]},\"@openzeppelin/contracts/interfaces/IERC1967.sol\":{\"keccak256\":\"0xbf2aefe54b76d7f7bcd4f6da1080b7b1662611937d870b880db584d09cea56b5\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://f5e7e2f12e0feec75296e57f51f82fdaa8bd1551f4b8cc6560442c0bf60f818c\",\"dweb:/ipfs/QmcW9wDMaQ8RbQibMarfp17a3bABzY5KraWe2YDwuUrUoz\"]},\"@openzeppelin/contracts/interfaces/IERC20.sol\":{\"keccak256\":\"0x1a6221315ce0307746c2c4827c125d821ee796c74a676787762f4778671d4f44\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://1bb2332a7ee26dd0b0de9b7fe266749f54820c99ab6a3bcb6f7e6b751d47ee2d\",\"dweb:/ipfs/QmcRWpaBeCYkhy68PR3B4AgD7asuQk7PwkWxrvJbZcikLF\"]},\"@openzeppelin/contracts/interfaces/IERC4626.sol\":{\"keccak256\":\"0xece5cbf726293ae6be1fbfade2936f052e1b399ed395ba1e221540ab82b62628\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://a9b97e58e90799e681dccbd4a8e469c6ebc2baf11312ad08f14332646123dd4b\",\"dweb:/ipfs/QmdamCQfxcuYinSNd3Et7VNo3oY98XSv4XCUQyq9xfMNUy\"]},\"@openzeppelin/contracts/interfaces/draft-IERC1822.sol\":{\"keccak256\":\"0x82f757819bf2429a0d4db141b99a4bbe5039e4ef86dfb94e2e6d40577ed5b28b\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://37c30ed931e19fb71fdb806bb504cfdb9913b7127545001b64d4487783374422\",\"dweb:/ipfs/QmUBHpv4hm3ZmwJ4GH8BeVzK4mv41Q6vBbWXxn8HExPXza\"]},\"@openzeppelin/contracts/interfaces/draft-IERC6093.sol\":{\"keccak256\":\"0x1b88b3fb3d85ba5496d7d5f396f83ee1fddcdd6762059ff65992655b67920998\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://89393bb3212da1c0889601b9706a07b39419ddc4d2faab9eaf6e7f9152cf6a1c\",\"dweb:/ipfs/QmcCfzzxv1Bkdz1c1yF4gQCeYb6Us5BJANnzTFqawfd1HL\"]},\"@openzeppelin/contracts/proxy/ERC1967/ERC1967Proxy.sol\":{\"keccak256\":\"0xa3066ff86b94128a9d3956a63a0511fa1aae41bd455772ab587b32ff322acb2e\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://bf7b192fd82acf6187970c80548f624b1b9c80425b62fa49e7fdb538a52de049\",\"dweb:/ipfs/QmWXG1YCde1tqDYTbNwjkZDWVgPEjzaQGSDqWkyKLzaNua\"]},\"@openzeppelin/contracts/proxy/ERC1967/ERC1967Utils.sol\":{\"keccak256\":\"0xa1ad192cd45317c788618bef5cb1fb3ca4ce8b230f6433ac68cc1d850fb81618\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://b43447bb85a53679d269a403c693b9d88d6c74177dfb35eddca63abaf7cf110a\",\"dweb:/ipfs/QmXSDmpd4bNZj1PDgegr6C4w1jDaWHXCconC3rYiw9TSkQ\"]},\"@openzeppelin/contracts/proxy/Proxy.sol\":{\"keccak256\":\"0x80935e4fae2c414f4e7789e13a820d06901182a5733ab006f8d68b5b09db993f\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://752d991d6ca1087587b48103bc623f74888054f58581ff29166d90889c4765c5\",\"dweb:/ipfs/QmRBsa6K2ChKxVWYY54YiyYhDBPbmY5HyKCtij5LoWh56o\"]},\"@openzeppelin/contracts/proxy/beacon/IBeacon.sol\":{\"keccak256\":\"0x20462ddb2665e9521372c76b001d0ce196e59dbbd989de9af5576cad0bd5628b\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://f417fd12aeec8fbfaceaa30e3a08a0724c0bc39de363e2acf6773c897abbaf6d\",\"dweb:/ipfs/QmU4Hko6sApdweVM92CsiuLKkCk8HfyBeutF89PCTz5Tye\"]},\"@openzeppelin/contracts/proxy/utils/Initializable.sol\":{\"keccak256\":\"0xdb4d24ee2c087c391d587cd17adfe5b3f9d93b3110b1388c2ab6c7c0ad1dcd05\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://ab7b6d5b9e2b88176312967fe0f0e78f3d9a1422fa5e4b64e2440c35869b5d08\",\"dweb:/ipfs/QmXKYWWyzcLg1B2k7Sb1qkEXgLCYfXecR9wYW5obRzWP1Q\"]},\"@openzeppelin/contracts/proxy/utils/UUPSUpgradeable.sol\":{\"keccak256\":\"0x1a26353563a2c63b4120ea0b94727253eeff84fe2241d42c1452308b9080e66a\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://49a95e36d267828b4357186a79917002d616d8634e25d1f9818e2354cd2e7d34\",\"dweb:/ipfs/QmWDkqE4KkyLAS2UkLsRgXE1FGB1qfEgBC3zMXBVsVWfdk\"]},\"@openzeppelin/contracts/token/ERC20/IERC20.sol\":{\"keccak256\":\"0x74ed01eb66b923d0d0cfe3be84604ac04b76482a55f9dd655e1ef4d367f95bc2\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://5282825a626cfe924e504274b864a652b0023591fa66f06a067b25b51ba9b303\",\"dweb:/ipfs/QmeCfPykghhMc81VJTrHTC7sF6CRvaA1FXVq2pJhwYp1dV\"]},\"@openzeppelin/contracts/token/ERC20/extensions/IERC20Metadata.sol\":{\"keccak256\":\"0xd6fa4088198f04eef10c5bce8a2f4d60554b7ec4b987f684393c01bf79b94d9f\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://f95ee0bbd4dd3ac730d066ba3e785ded4565e890dbec2fa7d3b9fe3bad9d0d6e\",\"dweb:/ipfs/QmSLr6bHkPFWT7ntj34jmwfyskpwo97T9jZUrk5sz3sdtR\"]},\"@openzeppelin/contracts/token/ERC20/utils/SafeERC20.sol\":{\"keccak256\":\"0x304d732678032a9781ae85c8f204c8fba3d3a5e31c02616964e75cfdc5049098\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://299ced486011781dc98f638059678323c03079fefae1482abaa2135b22fa92d0\",\"dweb:/ipfs/QmbZNbcPTBxNvwChavN2kkZZs7xHhYL7mv51KrxMhsMs3j\"]},\"@openzeppelin/contracts/utils/Address.sol\":{\"keccak256\":\"0x0fa9e0d3a859900b5a46f70a03c73adf259603d5e05027a37fe0b45529d85346\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://c2add4da0240c9f2ce47649c8bb6b11b40e98cf6f88b8bdc76b2704e89391710\",\"dweb:/ipfs/QmNQTwF2uVzu4CRtNxr8bxyP9XuW6VsZuo2Nr4KR2bZr3d\"]},\"@openzeppelin/contracts/utils/Errors.sol\":{\"keccak256\":\"0x6afa713bfd42cf0f7656efa91201007ac465e42049d7de1d50753a373648c123\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://ba1d02f4847670a1b83dec9f7d37f0b0418d6043447b69f3a29a5f9efc547fcf\",\"dweb:/ipfs/QmQ7iH2keLNUKgq2xSWcRmuBE5eZ3F5whYAkAGzCNNoEWB\"]},\"@openzeppelin/contracts/utils/LowLevelCall.sol\":{\"keccak256\":\"0x5b4802a4352474792df3107e961d1cc593e47b820c14f69d3505cb28f5a6a583\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://a6f86fd01f829499fe0545ff5dda07d4521988e88bfe0bf801fc15650921ed56\",\"dweb:/ipfs/QmUUKu4ZDffHAmfkf3asuQfmLTyfpuy2Amdncc3SqfzKPG\"]},\"@openzeppelin/contracts/utils/Memory.sol\":{\"keccak256\":\"0x35feec480590c0ed9c1623df077ba9af406ad57cd9d149ff278c7316d6fe8fe0\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://839967d079db4cd624c3f735a6e911953c0e2347418c016f6a0cc18ed1aa9603\",\"dweb:/ipfs/QmaWxNL8Ymkwerfvq1LNzpbq2PMzTGsnXzqsYExNyvKWka\"]},\"@openzeppelin/contracts/utils/Panic.sol\":{\"keccak256\":\"0xf7fe324703a64fc51702311dc51562d5cb1497734f074e4f483bfb6717572d7a\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://c6a5ff4f9fd8649b7ee20800b7fa387d3465bd77cf20c2d1068cd5c98e1ed57a\",\"dweb:/ipfs/QmVSaVJf9FXFhdYEYeCEfjMVHrxDh5qL4CGkxdMWpQCrqG\"]},\"@openzeppelin/contracts/utils/StorageSlot.sol\":{\"keccak256\":\"0xcf74f855663ce2ae00ed8352666b7935f6cddea2932fdf2c3ecd30a9b1cd0e97\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://9f660b1f351b757dfe01438e59888f31f33ded3afcf5cb5b0d9bf9aa6f320a8b\",\"dweb:/ipfs/QmarDJ5hZEgBtCmmrVzEZWjub9769eD686jmzb2XpSU1cM\"]},\"@openzeppelin/contracts/utils/introspection/IERC165.sol\":{\"keccak256\":\"0x8891738ffe910f0cf2da09566928589bf5d63f4524dd734fd9cedbac3274dd5c\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://971f954442df5c2ef5b5ebf1eb245d7105d9fbacc7386ee5c796df1d45b21617\",\"dweb:/ipfs/QmadRjHbkicwqwwh61raUEapaVEtaLMcYbQZWs9gUkgj3u\"]},\"@openzeppelin/contracts/utils/math/Math.sol\":{\"keccak256\":\"0x09e3f1c72d4c5cbe8e2644ab7313f8f7177533ae2f4c24cdcbbeaf520a73734c\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://93208401215d539fa2d81626b207c1f611def7883d0e447b3b5969ebaa7b3c2c\",\"dweb:/ipfs/QmXPxDnQPx8LAweX5ZJqEcwkvs59kP4c64VVDG1Jjq1mef\"]},\"@openzeppelin/contracts/utils/math/SafeCast.sol\":{\"keccak256\":\"0x195533c86d0ef72bcc06456a4f66a9b941f38eb403739b00f21fd7c1abd1ae54\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://b1d578337048cad08c1c03041cca5978eff5428aa130c781b271ad9e5566e1f8\",\"dweb:/ipfs/QmPFKL2r9CBsMwmUqqdcFPfHZB2qcs9g1HDrPxzWSxomvy\"]},\"contracts/AccessManagedMSV.sol\":{\"keccak256\":\"0xb6143eaaa169b67f028af5555551e4e0387d3d36e03d82cb5d59e53cc0c18195\",\"license\":\"Apache-2.0\",\"urls\":[\"bzz-raw://b086b0acaec3d84dacc06320014288b8060023e9d947f9285cd78d7a770be462\",\"dweb:/ipfs/QmWJgaE6fRMqrsB9biGbpu2n9jhJjwS5ZMd4E4WZDWxvBM\"]},\"contracts/InvestStrategyClient.sol\":{\"keccak256\":\"0x3c8fff73042023381eb750ba13a9066475d208e99bde568e1243f0e1e282c894\",\"license\":\"Apache-2.0\",\"urls\":[\"bzz-raw://3f8283ffa5c512e482b0065d9391c7060ebc1fa5968c55e6a05958480b7facb6\",\"dweb:/ipfs/QmT4N9Z19b6AUXpXtg23d3ijBExyKuRJBeQ3o8WCobgpfT\"]},\"contracts/MSVBase.sol\":{\"keccak256\":\"0x5c77645d099729ec7f37fdddf61a21aa1ce479ba1770da5694564687d436942f\",\"license\":\"Apache-2.0\",\"urls\":[\"bzz-raw://496ee230293f8ac7216e6300d568b29bbf1f7d5a4c9b68ea58baaae02f55e267\",\"dweb:/ipfs/QmVYH6gLLCrVpeKSHGxAeVVDQcVPgSiwhDB2i8uLPnPHaJ\"]},\"contracts/OutflowLimitedAMMSV.sol\":{\"keccak256\":\"0x3f433b4d24f57e17ccddefc4a363e5ac3fbba6a08964173bb02dead9cc8c6254\",\"license\":\"Apache-2.0\",\"urls\":[\"bzz-raw://b001dc1f88b997d09ae69e00f0ce365ce20ef8a748726db3d51c1899263916a8\",\"dweb:/ipfs/QmScQ8zigd5Q3yoGKJajrf8JcHbF8Sb1fr45vRAyKjHwAm\"]},\"contracts/interfaces/IExposeStorage.sol\":{\"keccak256\":\"0x68d4dbc7e135ac949f5f557a1f071b96d1639262188f91957bf082be7e72b1c7\",\"license\":\"Apache-2.0\",\"urls\":[\"bzz-raw://29fc549ef136e19275bb9225c8e7f02e0cc3b274acef4e6d7002c6f3f74e5c13\",\"dweb:/ipfs/QmVzrn7Cbxe8xzLwy4ZpzxP6CBEKsegXG8VusNYqssCe3d\"]},\"contracts/interfaces/IInvestStrategy.sol\":{\"keccak256\":\"0x6800a1f147def2252b79629150ce9cd87e914ca5a966f1035fbca6328bbc9c4b\",\"license\":\"Apache-2.0\",\"urls\":[\"bzz-raw://2e9260604e0ffcf405819f85fee4124d9a090cf716f389ff92cf76a2837a2e42\",\"dweb:/ipfs/QmVdKEW8C6MDyiiUfjBxEMTWjfPrBJadptpxh9L2uCebDK\"]}},\"version\":1}","storageLayout":{"storage":[{"astId":15721,"contract":"contracts/OutflowLimitedAMMSV.sol:OutflowLimitedAMMSV","label":"_depositQueue","offset":0,"slot":"0","type":"t_array(t_uint8)32_storage"},{"astId":15725,"contract":"contracts/OutflowLimitedAMMSV.sol:OutflowLimitedAMMSV","label":"_withdrawQueue","offset":0,"slot":"1","type":"t_array(t_uint8)32_storage"},{"astId":15730,"contract":"contracts/OutflowLimitedAMMSV.sol:OutflowLimitedAMMSV","label":"_strategies","offset":0,"slot":"2","type":"t_array(t_contract(IInvestStrategy)20725)32_storage"},{"astId":17365,"contract":"contracts/OutflowLimitedAMMSV.sol:OutflowLimitedAMMSV","label":"__gap","offset":0,"slot":"34","type":"t_array(t_uint256)16_storage"}],"types":{"t_array(t_contract(IInvestStrategy)20725)32_storage":{"base":"t_contract(IInvestStrategy)20725","encoding":"inplace","label":"contract IInvestStrategy[32]","numberOfBytes":"1024"},"t_array(t_uint256)16_storage":{"base":"t_uint256","encoding":"inplace","label":"uint256[16]","numberOfBytes":"512"},"t_array(t_uint8)32_storage":{"base":"t_uint8","encoding":"inplace","label":"uint8[32]","numberOfBytes":"32"},"t_contract(IInvestStrategy)20725":{"encoding":"inplace","label":"contract IInvestStrategy","numberOfBytes":"20"},"t_uint256":{"encoding":"inplace","label":"uint256","numberOfBytes":"32"},"t_uint8":{"encoding":"inplace","label":"uint8","numberOfBytes":"1"}}}}},"contracts/dependencies/aave-v3/DataTypes.sol":{"DataTypes":{"abi":[],"evm":{"bytecode":{"functionDebugData":{},"generatedSources":[],"linkReferences":{},"object":"60556032600b8282823980515f1a607314602657634e487b7160e01b5f525f60045260245ffd5b305f52607381538281f3fe730000000000000000000000000000000000000000301460806040525f5ffdfea264697066735822122013cc1acc918e020951d5a10d16469eb37649e54f38df1524702b10844486092764736f6c634300081e0033","opcodes":"PUSH1 0x55 PUSH1 0x32 PUSH1 0xB DUP3 DUP3 DUP3 CODECOPY DUP1 MLOAD PUSH0 BYTE PUSH1 0x73 EQ PUSH1 0x26 JUMPI PUSH4 0x4E487B71 PUSH1 0xE0 SHL PUSH0 MSTORE PUSH0 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH0 REVERT JUMPDEST ADDRESS PUSH0 MSTORE PUSH1 0x73 DUP2 MSTORE8 DUP3 DUP2 RETURN INVALID PUSH20 0x0 ADDRESS EQ PUSH1 0x80 PUSH1 0x40 MSTORE PUSH0 PUSH0 REVERT INVALID LOG2 PUSH5 0x6970667358 0x22 SLT KECCAK256 SGT 0xCC BYTE 0xCC SWAP2 DUP15 MUL MULMOD MLOAD 0xD5 LOG1 0xD AND CHAINID SWAP15 0xB3 PUSH23 0x49E54F38DF1524702B10844486092764736F6C63430008 0x1E STOP CALLER ","sourceMap":"62:7306:56:-:0;;;;;;;;;;;;;;;-1:-1:-1;;;62:7306:56;;;;;;;;;;;;;;;;;"},"deployedBytecode":{"functionDebugData":{},"generatedSources":[],"immutableReferences":{},"linkReferences":{},"object":"730000000000000000000000000000000000000000301460806040525f5ffdfea264697066735822122013cc1acc918e020951d5a10d16469eb37649e54f38df1524702b10844486092764736f6c634300081e0033","opcodes":"PUSH20 0x0 ADDRESS EQ PUSH1 0x80 PUSH1 0x40 MSTORE PUSH0 PUSH0 REVERT INVALID LOG2 PUSH5 0x6970667358 0x22 SLT KECCAK256 SGT 0xCC BYTE 0xCC SWAP2 DUP15 MUL MULMOD MLOAD 0xD5 LOG1 0xD AND CHAINID SWAP15 0xB3 PUSH23 0x49E54F38DF1524702B10844486092764736F6C63430008 0x1E STOP CALLER ","sourceMap":"62:7306:56:-:0;;;;;;;;"},"methodIdentifiers":{}},"metadata":"{\"compiler\":{\"version\":\"0.8.30+commit.73712a01\"},\"language\":\"Solidity\",\"output\":{\"abi\":[],\"devdoc\":{\"kind\":\"dev\",\"methods\":{},\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{},\"version\":1}},\"settings\":{\"compilationTarget\":{\"contracts/dependencies/aave-v3/DataTypes.sol\":\"DataTypes\"},\"evmVersion\":\"prague\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"enabled\":true,\"runs\":200},\"remappings\":[]},\"sources\":{\"contracts/dependencies/aave-v3/DataTypes.sol\":{\"keccak256\":\"0x771cb99fd8519c974f7e12130387c4d9a997a6e8d0ac10e4303b842fe53efa88\",\"license\":\"BUSL-1.1\",\"urls\":[\"bzz-raw://0f41689d1d58bc13678c749bae8830f5a8b19b89cd135e962bf07d483350f828\",\"dweb:/ipfs/QmQSNGDxjYGqT1GU2CZzsWUTNcAtcfkg1jDGTH516nCAfN\"]}},\"version\":1}","storageLayout":{"storage":[],"types":null}}},"contracts/dependencies/aave-v3/Errors.sol":{"Errors":{"abi":[{"inputs":[],"name":"ACL_ADMIN_CANNOT_BE_ZERO","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"ADDRESSES_PROVIDER_ALREADY_ADDED","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"ADDRESSES_PROVIDER_NOT_REGISTERED","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"AMOUNT_BIGGER_THAN_MAX_LOAN_SIZE_STABLE","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"ASSET_NOT_BORROWABLE_IN_ISOLATION","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"ASSET_NOT_LISTED","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"BORROWING_NOT_ENABLED","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"BORROW_CAP_EXCEEDED","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"BRIDGE_PROTOCOL_FEE_INVALID","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"CALLER_MUST_BE_POOL","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"CALLER_NOT_ASSET_LISTING_OR_POOL_ADMIN","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"CALLER_NOT_ATOKEN","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"CALLER_NOT_BRIDGE","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"CALLER_NOT_EMERGENCY_ADMIN","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"CALLER_NOT_POOL_ADMIN","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"CALLER_NOT_POOL_CONFIGURATOR","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"CALLER_NOT_POOL_OR_EMERGENCY_ADMIN","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"CALLER_NOT_RISK_OR_POOL_ADMIN","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"COLLATERAL_BALANCE_IS_ZERO","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"COLLATERAL_CANNOT_BE_LIQUIDATED","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"COLLATERAL_CANNOT_COVER_NEW_BORROW","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"COLLATERAL_SAME_AS_BORROWING_CURRENCY","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"DEBT_CEILING_EXCEEDED","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"DEBT_CEILING_NOT_ZERO","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"EMODE_CATEGORY_RESERVED","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"FLASHLOAN_DISABLED","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"FLASHLOAN_PREMIUM_INVALID","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"HEALTH_FACTOR_LOWER_THAN_LIQUIDATION_THRESHOLD","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"HEALTH_FACTOR_NOT_BELOW_THRESHOLD","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"INCONSISTENT_EMODE_CATEGORY","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"INCONSISTENT_FLASHLOAN_PARAMS","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"INCONSISTENT_PARAMS_LENGTH","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"INTEREST_RATE_REBALANCE_CONDITIONS_NOT_MET","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"INVALID_ADDRESSES_PROVIDER","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"INVALID_ADDRESSES_PROVIDER_ID","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"INVALID_AMOUNT","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"INVALID_BORROW_CAP","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"INVALID_BURN_AMOUNT","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"INVALID_DEBT_CEILING","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"INVALID_DECIMALS","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"INVALID_EMODE_CATEGORY","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"INVALID_EMODE_CATEGORY_ASSIGNMENT","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"INVALID_EMODE_CATEGORY_PARAMS","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"INVALID_EXPIRATION","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"INVALID_FLASHLOAN_EXECUTOR_RETURN","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"INVALID_INTEREST_RATE_MODE_SELECTED","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"INVALID_LIQUIDATION_PROTOCOL_FEE","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"INVALID_LIQ_BONUS","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"INVALID_LIQ_THRESHOLD","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"INVALID_LTV","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"INVALID_MINT_AMOUNT","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"INVALID_OPTIMAL_STABLE_TO_TOTAL_DEBT_RATIO","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"INVALID_OPTIMAL_USAGE_RATIO","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"INVALID_RESERVE_FACTOR","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"INVALID_RESERVE_INDEX","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"INVALID_RESERVE_PARAMS","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"INVALID_SIGNATURE","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"INVALID_SUPPLY_CAP","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"INVALID_UNBACKED_MINT_CAP","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"LTV_VALIDATION_FAILED","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"NOT_CONTRACT","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"NOT_ENOUGH_AVAILABLE_USER_BALANCE","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"NO_DEBT_OF_SELECTED_TYPE","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"NO_EXPLICIT_AMOUNT_TO_REPAY_ON_BEHALF","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"NO_MORE_RESERVES_ALLOWED","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"NO_OUTSTANDING_STABLE_DEBT","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"NO_OUTSTANDING_VARIABLE_DEBT","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"OPERATION_NOT_SUPPORTED","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"POOL_ADDRESSES_DO_NOT_MATCH","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"PRICE_ORACLE_SENTINEL_CHECK_FAILED","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"RESERVE_ALREADY_ADDED","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"RESERVE_ALREADY_INITIALIZED","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"RESERVE_DEBT_NOT_ZERO","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"RESERVE_FROZEN","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"RESERVE_INACTIVE","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"RESERVE_LIQUIDITY_NOT_ZERO","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"RESERVE_PAUSED","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"SILOED_BORROWING_VIOLATION","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"SPECIFIED_CURRENCY_NOT_BORROWED_BY_USER","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"STABLE_BORROWING_ENABLED","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"STABLE_BORROWING_NOT_ENABLED","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"STABLE_DEBT_NOT_ZERO","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"SUPPLY_CAP_EXCEEDED","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"UNBACKED_MINT_CAP_EXCEEDED","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"UNDERLYING_BALANCE_ZERO","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"UNDERLYING_CANNOT_BE_RESCUED","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"UNDERLYING_CLAIMABLE_RIGHTS_NOT_ZERO","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"USER_IN_ISOLATION_MODE_OR_LTV_ZERO","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"VARIABLE_DEBT_SUPPLY_NOT_ZERO","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"ZERO_ADDRESS_NOT_VALID","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"}],"evm":{"bytecode":{"functionDebugData":{},"generatedSources":[],"linkReferences":{},"object":"6110fe610034600b8282823980515f1a607314602857634e487b7160e01b5f525f60045260245ffd5b305f52607381538281f3fe73000000000000000000000000000000000000000030146080604052600436106104e8575f3560e01c80638aa3ca4c1161028f578063bad8308c1161016c578063dd1dd95f116100e0578063f07f67851161009a578063f07f678514610fcd578063f10727db14610fee578063f479ea111461100f578063fa163a8314611030578063fae8279114611051578063fd1828ff14611072575f5ffd5b8063dd1dd95f14610f08578063de24948c14610f29578063e02f07ee14610f4a578063e3fa20f514610f6a578063e4dd8b7414610f8b578063e981483a14610fac575f5ffd5b8063d14bb17a11610131578063d14bb17a14610e42578063d1cd8b1d14610e63578063d6f9fcde14610e84578063d9adda8514610ea5578063dc191bd914610ec6578063dcc56db614610ee7575f5ffd5b8063bad8308c14610d9d578063c08a114614610dbe578063c863808214610ddf578063c899301a14610e00578063cd23367c14610e21575f5ffd5b8063a4868dca11610203578063b0510054116101c8578063b051005414610cd8578063b4a4573014610cf9578063b5e7936614610d1a578063b68774e914610d3a578063b7f5e22414610d5b578063b87041c214610d7c575f5ffd5b8063a4868dca14610c34578063a8c9785314610c55578063ab883ca014610c76578063abd351b114610c97578063ac75323614610cb8575f5ffd5b8063952633c511610254578063952633c514610b6e5780639527e9d914610b8f57806399ce53f314610bb0578063a2797c8014610bd1578063a2e976c614610bf2578063a3402a3814610c13575f5ffd5b80638aa3ca4c14610ac95780638b8b98d714610aea5780638eda46bd14610b0b5780638f7722b214610b2c57806394f9fd8a14610b4d575f5ffd5b80634e3aed37116103c85780636cd3cfbc1161033c5780637aa0767e116102f65780637aa0767e14610a035780637fea6f3614610a245780638596aad514610a45578063895f7dc814610a6657806389c5d45f14610a875780638a34400014610aa8575f5ffd5b80636cd3cfbc1461093d578063712f536a1461095e57806373dea5e31461097f57806374459b14146109a0578063747fa556146109c157806376ae8fca146109e2575f5ffd5b80635d9c76c01161038d5780635d9c76c01461087857806360c3de801461089957806361c111d2146108b957806365a83bab146108da57806365e7ef4c146108fb5780636b3f7cc71461091c575f5ffd5b80634e3aed37146107d45780634ef999ff146107f55780634f77647b14610816578063512674501461083657806352ba9dbe14610857575f5ffd5b80632eed17e81161045f57806347ba93d81161042457806347ba93d81461070f57806347cf152314610730578063480702ae14610751578063485c8ff6146107725780634d86f393146107925780634e01e3c1146107b3575f5ffd5b80632eed17e81461066a578063335763de1461068b578063366eb54d146106ac57806337930782146106cd578063471df685146106ee575f5ffd5b80631abbb001116104b05780631abbb001146105a657806322a73446146105c757806326bbd053146105e857806326e7b312146106095780632926c971146106295780632c8e3b4c1461064a575f5ffd5b8063084dfa0d146104ec57806311d7b0061461052357806312dcade81461054357806314dcfbbc14610564578063198d6a6b14610585575b5f5ffd5b61050d60405180604001604052806002815260200161062760f31b81525081565b60405161051a9190611093565b60405180910390f35b61050d604051806040016040528060018152602001603960f81b81525081565b61050d604051806040016040528060028152602001610c4d60f21b81525081565b61050d604051806040016040528060028152602001611c1b60f11b81525081565b61050d60405180604001604052806002815260200161070760f31b81525081565b61050d60405180604001604052806002815260200161383760f01b81525081565b61050d60405180604001604052806002815260200161343760f01b81525081565b61050d60405180604001604052806002815260200161363960f01b81525081565b61050d604051806040016040528060018152602001603360f81b81525081565b61050d604051806040016040528060028152602001610d0d60f21b81525081565b61050d604051806040016040528060018152602001603560f81b81525081565b61050d60405180604001604052806002815260200161035360f41b81525081565b61050d60405180604001604052806002815260200161032360f41b81525081565b61050d60405180604001604052806002815260200161333560f01b81525081565b61050d60405180604001604052806002815260200161189960f11b81525081565b61050d60405180604001604052806002815260200161323360f01b81525081565b61050d604051806040016040528060028152602001611b9960f11b81525081565b61050d60405180604001604052806002815260200161323160f01b81525081565b61050d604051806040016040528060028152602001611b1960f11b81525081565b61050d604051806040016040528060018152602001601960f91b81525081565b61050d60405180604001604052806002815260200161333160f01b81525081565b61050d604051806040016040528060028152602001610ccd60f21b81525081565b61050d60405180604001604052806002815260200161383360f01b81525081565b61050d60405180604001604052806002815260200161033360f41b81525081565b61050d604051806040016040528060018152602001601b60f91b81525081565b61050d60405180604001604052806002815260200161323560f01b81525081565b61050d60405180604001604052806002815260200161323760f01b81525081565b61050d60405180604001604052806002815260200161313760f01b81525081565b61050d604051806040016040528060018152602001600760fb1b81525081565b61050d60405180604001604052806002815260200161031360f41b81525081565b61050d60405180604001604052806002815260200161353360f01b81525081565b61050d60405180604001604052806002815260200161353560f01b81525081565b61050d604051806040016040528060028152602001611a9960f11b81525081565b61050d60405180604001604052806002815260200161064760f31b81525081565b61050d60405180604001604052806002815260200161034360f41b81525081565b61050d60405180604001604052806002815260200161343960f01b81525081565b61050d60405180604001604052806002815260200161343160f01b81525081565b61050d60405180604001604052806002815260200161313960f01b81525081565b61050d60405180604001604052806002815260200161313560f01b81525081565b61050d60405180604001604052806002815260200161191960f11b81525081565b61050d60405180604001604052806002815260200161313360f01b81525081565b61050d60405180604001604052806002815260200161036360f41b81525081565b61050d604051806040016040528060028152602001611a1b60f11b81525081565b61050d60405180604001604052806002815260200161333360f01b81525081565b61050d60405180604001604052806002815260200161333760f01b81525081565b61050d60405180604001604052806002815260200161393160f01b81525081565b61050d60405180604001604052806002815260200161038360f41b81525081565b61050d60405180604001604052806002815260200161037360f41b81525081565b61050d6040518060400160405280600281526020016106a760f31b81525081565b61050d604051806040016040528060028152602001610d4d60f21b81525081565b61050d60405180604001604052806002815260200161343560f01b81525081565b61050d60405180604001604052806002815260200161363560f01b81525081565b61050d60405180604001604052806002815260200161363360f01b81525081565b61050d60405180604001604052806002815260200161343360f01b81525081565b61050d60405180604001604052806002815260200161313160f01b81525081565b61050d60405180604001604052806002815260200161373960f01b81525081565b61050d60405180604001604052806002815260200161363760f01b81525081565b61050d60405180604001604052806002815260200161373160f01b81525081565b61050d60405180604001604052806002815260200161383560f01b81525081565b61050d604051806040016040528060028152602001610c8d60f21b81525081565b61050d604051806040016040528060018152602001603160f81b81525081565b61050d60405180604001604052806002815260200161353160f01b81525081565b61050d604051806040016040528060028152602001611a1960f11b81525081565b61050d604051806040016040528060018152602001600d60fa1b81525081565b61050d60405180604001604052806002815260200161323960f01b81525081565b61050d60405180604001604052806002815260200161199960f11b81525081565b61050d60405180604001604052806002815260200161353760f01b81525081565b61050d604051806040016040528060028152602001611b9b60f11b81525081565b61050d6040518060400160405280600281526020016106e760f31b81525081565b61050d60405180604001604052806002815260200161353960f01b81525081565b61050d604051806040016040528060028152602001610e0d60f21b81525081565b61050d604051806040016040528060028152602001611c1960f11b81525081565b61050d60405180604001604052806002815260200161373760f01b81525081565b61050d604051806040016040528060028152602001610dcd60f21b81525081565b61050d6040518060400160405280600281526020016106c760f31b81525081565b61050d60405180604001604052806002815260200161363160f01b81525081565b61050d60405180604001604052806002815260200161333960f01b81525081565b61050d60405180604001604052806002815260200161373360f01b81525081565b61050d604051806040016040528060028152602001610d8d60f21b81525081565b61050d60405180604001604052806002815260200161383960f01b81525081565b61050d604051806040016040528060018152602001603760f81b81525081565b61050d60405180604001604052806002815260200161199b60f11b81525081565b61050d60405180604001604052806002815260200161383160f01b81525081565b61050d60405180604001604052806002815260200161039360f41b81525081565b61050d60405180604001604052806002815260200161066760f31b81525081565b61050d604051806040016040528060028152602001611a9b60f11b81525081565b61050d60405180604001604052806002815260200161189b60f11b81525081565b61050d604051806040016040528060028152602001611b1b60f11b81525081565b61050d60405180604001604052806002815260200161191b60f11b81525081565b61050d60405180604001604052806002815260200161373560f01b81525081565b602081525f82518060208401528060208501604085015e5f604082850101526040601f19601f8301168401019150509291505056fea264697066735822122026b482369413de1d8e75820e1b953ee2b354e57e6dab0068028573a6a38ae30864736f6c634300081e0033","opcodes":"PUSH2 0x10FE PUSH2 0x34 PUSH1 0xB DUP3 DUP3 DUP3 CODECOPY DUP1 MLOAD PUSH0 BYTE PUSH1 0x73 EQ PUSH1 0x28 JUMPI PUSH4 0x4E487B71 PUSH1 0xE0 SHL PUSH0 MSTORE PUSH0 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH0 REVERT JUMPDEST ADDRESS PUSH0 MSTORE PUSH1 0x73 DUP2 MSTORE8 DUP3 DUP2 RETURN INVALID PUSH20 0x0 ADDRESS EQ PUSH1 0x80 PUSH1 0x40 MSTORE PUSH1 0x4 CALLDATASIZE LT PUSH2 0x4E8 JUMPI PUSH0 CALLDATALOAD PUSH1 0xE0 SHR DUP1 PUSH4 0x8AA3CA4C GT PUSH2 0x28F JUMPI DUP1 PUSH4 0xBAD8308C GT PUSH2 0x16C JUMPI DUP1 PUSH4 0xDD1DD95F GT PUSH2 0xE0 JUMPI DUP1 PUSH4 0xF07F6785 GT PUSH2 0x9A JUMPI DUP1 PUSH4 0xF07F6785 EQ PUSH2 0xFCD JUMPI DUP1 PUSH4 0xF10727DB EQ PUSH2 0xFEE JUMPI DUP1 PUSH4 0xF479EA11 EQ PUSH2 0x100F JUMPI DUP1 PUSH4 0xFA163A83 EQ PUSH2 0x1030 JUMPI DUP1 PUSH4 0xFAE82791 EQ PUSH2 0x1051 JUMPI DUP1 PUSH4 0xFD1828FF EQ PUSH2 0x1072 JUMPI PUSH0 PUSH0 REVERT JUMPDEST DUP1 PUSH4 0xDD1DD95F EQ PUSH2 0xF08 JUMPI DUP1 PUSH4 0xDE24948C EQ PUSH2 0xF29 JUMPI DUP1 PUSH4 0xE02F07EE EQ PUSH2 0xF4A JUMPI DUP1 PUSH4 0xE3FA20F5 EQ PUSH2 0xF6A JUMPI DUP1 PUSH4 0xE4DD8B74 EQ PUSH2 0xF8B JUMPI DUP1 PUSH4 0xE981483A EQ PUSH2 0xFAC JUMPI PUSH0 PUSH0 REVERT JUMPDEST DUP1 PUSH4 0xD14BB17A GT PUSH2 0x131 JUMPI DUP1 PUSH4 0xD14BB17A EQ PUSH2 0xE42 JUMPI DUP1 PUSH4 0xD1CD8B1D EQ PUSH2 0xE63 JUMPI DUP1 PUSH4 0xD6F9FCDE EQ PUSH2 0xE84 JUMPI DUP1 PUSH4 0xD9ADDA85 EQ PUSH2 0xEA5 JUMPI DUP1 PUSH4 0xDC191BD9 EQ PUSH2 0xEC6 JUMPI DUP1 PUSH4 0xDCC56DB6 EQ PUSH2 0xEE7 JUMPI PUSH0 PUSH0 REVERT JUMPDEST DUP1 PUSH4 0xBAD8308C EQ PUSH2 0xD9D JUMPI DUP1 PUSH4 0xC08A1146 EQ PUSH2 0xDBE JUMPI DUP1 PUSH4 0xC8638082 EQ PUSH2 0xDDF JUMPI DUP1 PUSH4 0xC899301A EQ PUSH2 0xE00 JUMPI DUP1 PUSH4 0xCD23367C EQ PUSH2 0xE21 JUMPI PUSH0 PUSH0 REVERT JUMPDEST DUP1 PUSH4 0xA4868DCA GT PUSH2 0x203 JUMPI DUP1 PUSH4 0xB0510054 GT PUSH2 0x1C8 JUMPI DUP1 PUSH4 0xB0510054 EQ PUSH2 0xCD8 JUMPI DUP1 PUSH4 0xB4A45730 EQ PUSH2 0xCF9 JUMPI DUP1 PUSH4 0xB5E79366 EQ PUSH2 0xD1A JUMPI DUP1 PUSH4 0xB68774E9 EQ PUSH2 0xD3A JUMPI DUP1 PUSH4 0xB7F5E224 EQ PUSH2 0xD5B JUMPI DUP1 PUSH4 0xB87041C2 EQ PUSH2 0xD7C JUMPI PUSH0 PUSH0 REVERT JUMPDEST DUP1 PUSH4 0xA4868DCA EQ PUSH2 0xC34 JUMPI DUP1 PUSH4 0xA8C97853 EQ PUSH2 0xC55 JUMPI DUP1 PUSH4 0xAB883CA0 EQ PUSH2 0xC76 JUMPI DUP1 PUSH4 0xABD351B1 EQ PUSH2 0xC97 JUMPI DUP1 PUSH4 0xAC753236 EQ PUSH2 0xCB8 JUMPI PUSH0 PUSH0 REVERT JUMPDEST DUP1 PUSH4 0x952633C5 GT PUSH2 0x254 JUMPI DUP1 PUSH4 0x952633C5 EQ PUSH2 0xB6E JUMPI DUP1 PUSH4 0x9527E9D9 EQ PUSH2 0xB8F JUMPI DUP1 PUSH4 0x99CE53F3 EQ PUSH2 0xBB0 JUMPI DUP1 PUSH4 0xA2797C80 EQ PUSH2 0xBD1 JUMPI DUP1 PUSH4 0xA2E976C6 EQ PUSH2 0xBF2 JUMPI DUP1 PUSH4 0xA3402A38 EQ PUSH2 0xC13 JUMPI PUSH0 PUSH0 REVERT JUMPDEST DUP1 PUSH4 0x8AA3CA4C EQ PUSH2 0xAC9 JUMPI DUP1 PUSH4 0x8B8B98D7 EQ PUSH2 0xAEA JUMPI DUP1 PUSH4 0x8EDA46BD EQ PUSH2 0xB0B JUMPI DUP1 PUSH4 0x8F7722B2 EQ PUSH2 0xB2C JUMPI DUP1 PUSH4 0x94F9FD8A EQ PUSH2 0xB4D JUMPI PUSH0 PUSH0 REVERT JUMPDEST DUP1 PUSH4 0x4E3AED37 GT PUSH2 0x3C8 JUMPI DUP1 PUSH4 0x6CD3CFBC GT PUSH2 0x33C JUMPI DUP1 PUSH4 0x7AA0767E GT PUSH2 0x2F6 JUMPI DUP1 PUSH4 0x7AA0767E EQ PUSH2 0xA03 JUMPI DUP1 PUSH4 0x7FEA6F36 EQ PUSH2 0xA24 JUMPI DUP1 PUSH4 0x8596AAD5 EQ PUSH2 0xA45 JUMPI DUP1 PUSH4 0x895F7DC8 EQ PUSH2 0xA66 JUMPI DUP1 PUSH4 0x89C5D45F EQ PUSH2 0xA87 JUMPI DUP1 PUSH4 0x8A344000 EQ PUSH2 0xAA8 JUMPI PUSH0 PUSH0 REVERT JUMPDEST DUP1 PUSH4 0x6CD3CFBC EQ PUSH2 0x93D JUMPI DUP1 PUSH4 0x712F536A EQ PUSH2 0x95E JUMPI DUP1 PUSH4 0x73DEA5E3 EQ PUSH2 0x97F JUMPI DUP1 PUSH4 0x74459B14 EQ PUSH2 0x9A0 JUMPI DUP1 PUSH4 0x747FA556 EQ PUSH2 0x9C1 JUMPI DUP1 PUSH4 0x76AE8FCA EQ PUSH2 0x9E2 JUMPI PUSH0 PUSH0 REVERT JUMPDEST DUP1 PUSH4 0x5D9C76C0 GT PUSH2 0x38D JUMPI DUP1 PUSH4 0x5D9C76C0 EQ PUSH2 0x878 JUMPI DUP1 PUSH4 0x60C3DE80 EQ PUSH2 0x899 JUMPI DUP1 PUSH4 0x61C111D2 EQ PUSH2 0x8B9 JUMPI DUP1 PUSH4 0x65A83BAB EQ PUSH2 0x8DA JUMPI DUP1 PUSH4 0x65E7EF4C EQ PUSH2 0x8FB JUMPI DUP1 PUSH4 0x6B3F7CC7 EQ PUSH2 0x91C JUMPI PUSH0 PUSH0 REVERT JUMPDEST DUP1 PUSH4 0x4E3AED37 EQ PUSH2 0x7D4 JUMPI DUP1 PUSH4 0x4EF999FF EQ PUSH2 0x7F5 JUMPI DUP1 PUSH4 0x4F77647B EQ PUSH2 0x816 JUMPI DUP1 PUSH4 0x51267450 EQ PUSH2 0x836 JUMPI DUP1 PUSH4 0x52BA9DBE EQ PUSH2 0x857 JUMPI PUSH0 PUSH0 REVERT JUMPDEST DUP1 PUSH4 0x2EED17E8 GT PUSH2 0x45F JUMPI DUP1 PUSH4 0x47BA93D8 GT PUSH2 0x424 JUMPI DUP1 PUSH4 0x47BA93D8 EQ PUSH2 0x70F JUMPI DUP1 PUSH4 0x47CF1523 EQ PUSH2 0x730 JUMPI DUP1 PUSH4 0x480702AE EQ PUSH2 0x751 JUMPI DUP1 PUSH4 0x485C8FF6 EQ PUSH2 0x772 JUMPI DUP1 PUSH4 0x4D86F393 EQ PUSH2 0x792 JUMPI DUP1 PUSH4 0x4E01E3C1 EQ PUSH2 0x7B3 JUMPI PUSH0 PUSH0 REVERT JUMPDEST DUP1 PUSH4 0x2EED17E8 EQ PUSH2 0x66A JUMPI DUP1 PUSH4 0x335763DE EQ PUSH2 0x68B JUMPI DUP1 PUSH4 0x366EB54D EQ PUSH2 0x6AC JUMPI DUP1 PUSH4 0x37930782 EQ PUSH2 0x6CD JUMPI DUP1 PUSH4 0x471DF685 EQ PUSH2 0x6EE JUMPI PUSH0 PUSH0 REVERT JUMPDEST DUP1 PUSH4 0x1ABBB001 GT PUSH2 0x4B0 JUMPI DUP1 PUSH4 0x1ABBB001 EQ PUSH2 0x5A6 JUMPI DUP1 PUSH4 0x22A73446 EQ PUSH2 0x5C7 JUMPI DUP1 PUSH4 0x26BBD053 EQ PUSH2 0x5E8 JUMPI DUP1 PUSH4 0x26E7B312 EQ PUSH2 0x609 JUMPI DUP1 PUSH4 0x2926C971 EQ PUSH2 0x629 JUMPI DUP1 PUSH4 0x2C8E3B4C EQ PUSH2 0x64A JUMPI PUSH0 PUSH0 REVERT JUMPDEST DUP1 PUSH4 0x84DFA0D EQ PUSH2 0x4EC JUMPI DUP1 PUSH4 0x11D7B006 EQ PUSH2 0x523 JUMPI DUP1 PUSH4 0x12DCADE8 EQ PUSH2 0x543 JUMPI DUP1 PUSH4 0x14DCFBBC EQ PUSH2 0x564 JUMPI DUP1 PUSH4 0x198D6A6B EQ PUSH2 0x585 JUMPI JUMPDEST PUSH0 PUSH0 REVERT JUMPDEST PUSH2 0x50D PUSH1 0x40 MLOAD DUP1 PUSH1 0x40 ADD PUSH1 0x40 MSTORE DUP1 PUSH1 0x2 DUP2 MSTORE PUSH1 0x20 ADD PUSH2 0x627 PUSH1 0xF3 SHL DUP2 MSTORE POP DUP2 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0x51A SWAP2 SWAP1 PUSH2 0x1093 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST PUSH2 0x50D PUSH1 0x40 MLOAD DUP1 PUSH1 0x40 ADD PUSH1 0x40 MSTORE DUP1 PUSH1 0x1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x39 PUSH1 0xF8 SHL DUP2 MSTORE POP DUP2 JUMP JUMPDEST PUSH2 0x50D PUSH1 0x40 MLOAD DUP1 PUSH1 0x40 ADD PUSH1 0x40 MSTORE DUP1 PUSH1 0x2 DUP2 MSTORE PUSH1 0x20 ADD PUSH2 0xC4D PUSH1 0xF2 SHL DUP2 MSTORE POP DUP2 JUMP JUMPDEST PUSH2 0x50D PUSH1 0x40 MLOAD DUP1 PUSH1 0x40 ADD PUSH1 0x40 MSTORE DUP1 PUSH1 0x2 DUP2 MSTORE PUSH1 0x20 ADD PUSH2 0x1C1B PUSH1 0xF1 SHL DUP2 MSTORE POP DUP2 JUMP JUMPDEST PUSH2 0x50D PUSH1 0x40 MLOAD DUP1 PUSH1 0x40 ADD PUSH1 0x40 MSTORE DUP1 PUSH1 0x2 DUP2 MSTORE PUSH1 0x20 ADD PUSH2 0x707 PUSH1 0xF3 SHL DUP2 MSTORE POP DUP2 JUMP JUMPDEST PUSH2 0x50D PUSH1 0x40 MLOAD DUP1 PUSH1 0x40 ADD PUSH1 0x40 MSTORE DUP1 PUSH1 0x2 DUP2 MSTORE PUSH1 0x20 ADD PUSH2 0x3837 PUSH1 0xF0 SHL DUP2 MSTORE POP DUP2 JUMP JUMPDEST PUSH2 0x50D PUSH1 0x40 MLOAD DUP1 PUSH1 0x40 ADD PUSH1 0x40 MSTORE DUP1 PUSH1 0x2 DUP2 MSTORE PUSH1 0x20 ADD PUSH2 0x3437 PUSH1 0xF0 SHL DUP2 MSTORE POP DUP2 JUMP JUMPDEST PUSH2 0x50D PUSH1 0x40 MLOAD DUP1 PUSH1 0x40 ADD PUSH1 0x40 MSTORE DUP1 PUSH1 0x2 DUP2 MSTORE PUSH1 0x20 ADD PUSH2 0x3639 PUSH1 0xF0 SHL DUP2 MSTORE POP DUP2 JUMP JUMPDEST PUSH2 0x50D PUSH1 0x40 MLOAD DUP1 PUSH1 0x40 ADD PUSH1 0x40 MSTORE DUP1 PUSH1 0x1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x33 PUSH1 0xF8 SHL DUP2 MSTORE POP DUP2 JUMP JUMPDEST PUSH2 0x50D PUSH1 0x40 MLOAD DUP1 PUSH1 0x40 ADD PUSH1 0x40 MSTORE DUP1 PUSH1 0x2 DUP2 MSTORE PUSH1 0x20 ADD PUSH2 0xD0D PUSH1 0xF2 SHL DUP2 MSTORE POP DUP2 JUMP JUMPDEST PUSH2 0x50D PUSH1 0x40 MLOAD DUP1 PUSH1 0x40 ADD PUSH1 0x40 MSTORE DUP1 PUSH1 0x1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x35 PUSH1 0xF8 SHL DUP2 MSTORE POP DUP2 JUMP JUMPDEST PUSH2 0x50D PUSH1 0x40 MLOAD DUP1 PUSH1 0x40 ADD PUSH1 0x40 MSTORE DUP1 PUSH1 0x2 DUP2 MSTORE PUSH1 0x20 ADD PUSH2 0x353 PUSH1 0xF4 SHL DUP2 MSTORE POP DUP2 JUMP JUMPDEST PUSH2 0x50D PUSH1 0x40 MLOAD DUP1 PUSH1 0x40 ADD PUSH1 0x40 MSTORE DUP1 PUSH1 0x2 DUP2 MSTORE PUSH1 0x20 ADD PUSH2 0x323 PUSH1 0xF4 SHL DUP2 MSTORE POP DUP2 JUMP JUMPDEST PUSH2 0x50D PUSH1 0x40 MLOAD DUP1 PUSH1 0x40 ADD PUSH1 0x40 MSTORE DUP1 PUSH1 0x2 DUP2 MSTORE PUSH1 0x20 ADD PUSH2 0x3335 PUSH1 0xF0 SHL DUP2 MSTORE POP DUP2 JUMP JUMPDEST PUSH2 0x50D PUSH1 0x40 MLOAD DUP1 PUSH1 0x40 ADD PUSH1 0x40 MSTORE DUP1 PUSH1 0x2 DUP2 MSTORE PUSH1 0x20 ADD PUSH2 0x1899 PUSH1 0xF1 SHL DUP2 MSTORE POP DUP2 JUMP JUMPDEST PUSH2 0x50D PUSH1 0x40 MLOAD DUP1 PUSH1 0x40 ADD PUSH1 0x40 MSTORE DUP1 PUSH1 0x2 DUP2 MSTORE PUSH1 0x20 ADD PUSH2 0x3233 PUSH1 0xF0 SHL DUP2 MSTORE POP DUP2 JUMP JUMPDEST PUSH2 0x50D PUSH1 0x40 MLOAD DUP1 PUSH1 0x40 ADD PUSH1 0x40 MSTORE DUP1 PUSH1 0x2 DUP2 MSTORE PUSH1 0x20 ADD PUSH2 0x1B99 PUSH1 0xF1 SHL DUP2 MSTORE POP DUP2 JUMP JUMPDEST PUSH2 0x50D PUSH1 0x40 MLOAD DUP1 PUSH1 0x40 ADD PUSH1 0x40 MSTORE DUP1 PUSH1 0x2 DUP2 MSTORE PUSH1 0x20 ADD PUSH2 0x3231 PUSH1 0xF0 SHL DUP2 MSTORE POP DUP2 JUMP JUMPDEST PUSH2 0x50D PUSH1 0x40 MLOAD DUP1 PUSH1 0x40 ADD PUSH1 0x40 MSTORE DUP1 PUSH1 0x2 DUP2 MSTORE PUSH1 0x20 ADD PUSH2 0x1B19 PUSH1 0xF1 SHL DUP2 MSTORE POP DUP2 JUMP JUMPDEST PUSH2 0x50D PUSH1 0x40 MLOAD DUP1 PUSH1 0x40 ADD PUSH1 0x40 MSTORE DUP1 PUSH1 0x1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x19 PUSH1 0xF9 SHL DUP2 MSTORE POP DUP2 JUMP JUMPDEST PUSH2 0x50D PUSH1 0x40 MLOAD DUP1 PUSH1 0x40 ADD PUSH1 0x40 MSTORE DUP1 PUSH1 0x2 DUP2 MSTORE PUSH1 0x20 ADD PUSH2 0x3331 PUSH1 0xF0 SHL DUP2 MSTORE POP DUP2 JUMP JUMPDEST PUSH2 0x50D PUSH1 0x40 MLOAD DUP1 PUSH1 0x40 ADD PUSH1 0x40 MSTORE DUP1 PUSH1 0x2 DUP2 MSTORE PUSH1 0x20 ADD PUSH2 0xCCD PUSH1 0xF2 SHL DUP2 MSTORE POP DUP2 JUMP JUMPDEST PUSH2 0x50D PUSH1 0x40 MLOAD DUP1 PUSH1 0x40 ADD PUSH1 0x40 MSTORE DUP1 PUSH1 0x2 DUP2 MSTORE PUSH1 0x20 ADD PUSH2 0x3833 PUSH1 0xF0 SHL DUP2 MSTORE POP DUP2 JUMP JUMPDEST PUSH2 0x50D PUSH1 0x40 MLOAD DUP1 PUSH1 0x40 ADD PUSH1 0x40 MSTORE DUP1 PUSH1 0x2 DUP2 MSTORE PUSH1 0x20 ADD PUSH2 0x333 PUSH1 0xF4 SHL DUP2 MSTORE POP DUP2 JUMP JUMPDEST PUSH2 0x50D PUSH1 0x40 MLOAD DUP1 PUSH1 0x40 ADD PUSH1 0x40 MSTORE DUP1 PUSH1 0x1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x1B PUSH1 0xF9 SHL DUP2 MSTORE POP DUP2 JUMP JUMPDEST PUSH2 0x50D PUSH1 0x40 MLOAD DUP1 PUSH1 0x40 ADD PUSH1 0x40 MSTORE DUP1 PUSH1 0x2 DUP2 MSTORE PUSH1 0x20 ADD PUSH2 0x3235 PUSH1 0xF0 SHL DUP2 MSTORE POP DUP2 JUMP JUMPDEST PUSH2 0x50D PUSH1 0x40 MLOAD DUP1 PUSH1 0x40 ADD PUSH1 0x40 MSTORE DUP1 PUSH1 0x2 DUP2 MSTORE PUSH1 0x20 ADD PUSH2 0x3237 PUSH1 0xF0 SHL DUP2 MSTORE POP DUP2 JUMP JUMPDEST PUSH2 0x50D PUSH1 0x40 MLOAD DUP1 PUSH1 0x40 ADD PUSH1 0x40 MSTORE DUP1 PUSH1 0x2 DUP2 MSTORE PUSH1 0x20 ADD PUSH2 0x3137 PUSH1 0xF0 SHL DUP2 MSTORE POP DUP2 JUMP JUMPDEST PUSH2 0x50D PUSH1 0x40 MLOAD DUP1 PUSH1 0x40 ADD PUSH1 0x40 MSTORE DUP1 PUSH1 0x1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x7 PUSH1 0xFB SHL DUP2 MSTORE POP DUP2 JUMP JUMPDEST PUSH2 0x50D PUSH1 0x40 MLOAD DUP1 PUSH1 0x40 ADD PUSH1 0x40 MSTORE DUP1 PUSH1 0x2 DUP2 MSTORE PUSH1 0x20 ADD PUSH2 0x313 PUSH1 0xF4 SHL DUP2 MSTORE POP DUP2 JUMP JUMPDEST PUSH2 0x50D PUSH1 0x40 MLOAD DUP1 PUSH1 0x40 ADD PUSH1 0x40 MSTORE DUP1 PUSH1 0x2 DUP2 MSTORE PUSH1 0x20 ADD PUSH2 0x3533 PUSH1 0xF0 SHL DUP2 MSTORE POP DUP2 JUMP JUMPDEST PUSH2 0x50D PUSH1 0x40 MLOAD DUP1 PUSH1 0x40 ADD PUSH1 0x40 MSTORE DUP1 PUSH1 0x2 DUP2 MSTORE PUSH1 0x20 ADD PUSH2 0x3535 PUSH1 0xF0 SHL DUP2 MSTORE POP DUP2 JUMP JUMPDEST PUSH2 0x50D PUSH1 0x40 MLOAD DUP1 PUSH1 0x40 ADD PUSH1 0x40 MSTORE DUP1 PUSH1 0x2 DUP2 MSTORE PUSH1 0x20 ADD PUSH2 0x1A99 PUSH1 0xF1 SHL DUP2 MSTORE POP DUP2 JUMP JUMPDEST PUSH2 0x50D PUSH1 0x40 MLOAD DUP1 PUSH1 0x40 ADD PUSH1 0x40 MSTORE DUP1 PUSH1 0x2 DUP2 MSTORE PUSH1 0x20 ADD PUSH2 0x647 PUSH1 0xF3 SHL DUP2 MSTORE POP DUP2 JUMP JUMPDEST PUSH2 0x50D PUSH1 0x40 MLOAD DUP1 PUSH1 0x40 ADD PUSH1 0x40 MSTORE DUP1 PUSH1 0x2 DUP2 MSTORE PUSH1 0x20 ADD PUSH2 0x343 PUSH1 0xF4 SHL DUP2 MSTORE POP DUP2 JUMP JUMPDEST PUSH2 0x50D PUSH1 0x40 MLOAD DUP1 PUSH1 0x40 ADD PUSH1 0x40 MSTORE DUP1 PUSH1 0x2 DUP2 MSTORE PUSH1 0x20 ADD PUSH2 0x3439 PUSH1 0xF0 SHL DUP2 MSTORE POP DUP2 JUMP JUMPDEST PUSH2 0x50D PUSH1 0x40 MLOAD DUP1 PUSH1 0x40 ADD PUSH1 0x40 MSTORE DUP1 PUSH1 0x2 DUP2 MSTORE PUSH1 0x20 ADD PUSH2 0x3431 PUSH1 0xF0 SHL DUP2 MSTORE POP DUP2 JUMP JUMPDEST PUSH2 0x50D PUSH1 0x40 MLOAD DUP1 PUSH1 0x40 ADD PUSH1 0x40 MSTORE DUP1 PUSH1 0x2 DUP2 MSTORE PUSH1 0x20 ADD PUSH2 0x3139 PUSH1 0xF0 SHL DUP2 MSTORE POP DUP2 JUMP JUMPDEST PUSH2 0x50D PUSH1 0x40 MLOAD DUP1 PUSH1 0x40 ADD PUSH1 0x40 MSTORE DUP1 PUSH1 0x2 DUP2 MSTORE PUSH1 0x20 ADD PUSH2 0x3135 PUSH1 0xF0 SHL DUP2 MSTORE POP DUP2 JUMP JUMPDEST PUSH2 0x50D PUSH1 0x40 MLOAD DUP1 PUSH1 0x40 ADD PUSH1 0x40 MSTORE DUP1 PUSH1 0x2 DUP2 MSTORE PUSH1 0x20 ADD PUSH2 0x1919 PUSH1 0xF1 SHL DUP2 MSTORE POP DUP2 JUMP JUMPDEST PUSH2 0x50D PUSH1 0x40 MLOAD DUP1 PUSH1 0x40 ADD PUSH1 0x40 MSTORE DUP1 PUSH1 0x2 DUP2 MSTORE PUSH1 0x20 ADD PUSH2 0x3133 PUSH1 0xF0 SHL DUP2 MSTORE POP DUP2 JUMP JUMPDEST PUSH2 0x50D PUSH1 0x40 MLOAD DUP1 PUSH1 0x40 ADD PUSH1 0x40 MSTORE DUP1 PUSH1 0x2 DUP2 MSTORE PUSH1 0x20 ADD PUSH2 0x363 PUSH1 0xF4 SHL DUP2 MSTORE POP DUP2 JUMP JUMPDEST PUSH2 0x50D PUSH1 0x40 MLOAD DUP1 PUSH1 0x40 ADD PUSH1 0x40 MSTORE DUP1 PUSH1 0x2 DUP2 MSTORE PUSH1 0x20 ADD PUSH2 0x1A1B PUSH1 0xF1 SHL DUP2 MSTORE POP DUP2 JUMP JUMPDEST PUSH2 0x50D PUSH1 0x40 MLOAD DUP1 PUSH1 0x40 ADD PUSH1 0x40 MSTORE DUP1 PUSH1 0x2 DUP2 MSTORE PUSH1 0x20 ADD PUSH2 0x3333 PUSH1 0xF0 SHL DUP2 MSTORE POP DUP2 JUMP JUMPDEST PUSH2 0x50D PUSH1 0x40 MLOAD DUP1 PUSH1 0x40 ADD PUSH1 0x40 MSTORE DUP1 PUSH1 0x2 DUP2 MSTORE PUSH1 0x20 ADD PUSH2 0x3337 PUSH1 0xF0 SHL DUP2 MSTORE POP DUP2 JUMP JUMPDEST PUSH2 0x50D PUSH1 0x40 MLOAD DUP1 PUSH1 0x40 ADD PUSH1 0x40 MSTORE DUP1 PUSH1 0x2 DUP2 MSTORE PUSH1 0x20 ADD PUSH2 0x3931 PUSH1 0xF0 SHL DUP2 MSTORE POP DUP2 JUMP JUMPDEST PUSH2 0x50D PUSH1 0x40 MLOAD DUP1 PUSH1 0x40 ADD PUSH1 0x40 MSTORE DUP1 PUSH1 0x2 DUP2 MSTORE PUSH1 0x20 ADD PUSH2 0x383 PUSH1 0xF4 SHL DUP2 MSTORE POP DUP2 JUMP JUMPDEST PUSH2 0x50D PUSH1 0x40 MLOAD DUP1 PUSH1 0x40 ADD PUSH1 0x40 MSTORE DUP1 PUSH1 0x2 DUP2 MSTORE PUSH1 0x20 ADD PUSH2 0x373 PUSH1 0xF4 SHL DUP2 MSTORE POP DUP2 JUMP JUMPDEST PUSH2 0x50D PUSH1 0x40 MLOAD DUP1 PUSH1 0x40 ADD PUSH1 0x40 MSTORE DUP1 PUSH1 0x2 DUP2 MSTORE PUSH1 0x20 ADD PUSH2 0x6A7 PUSH1 0xF3 SHL DUP2 MSTORE POP DUP2 JUMP JUMPDEST PUSH2 0x50D PUSH1 0x40 MLOAD DUP1 PUSH1 0x40 ADD PUSH1 0x40 MSTORE DUP1 PUSH1 0x2 DUP2 MSTORE PUSH1 0x20 ADD PUSH2 0xD4D PUSH1 0xF2 SHL DUP2 MSTORE POP DUP2 JUMP JUMPDEST PUSH2 0x50D PUSH1 0x40 MLOAD DUP1 PUSH1 0x40 ADD PUSH1 0x40 MSTORE DUP1 PUSH1 0x2 DUP2 MSTORE PUSH1 0x20 ADD PUSH2 0x3435 PUSH1 0xF0 SHL DUP2 MSTORE POP DUP2 JUMP JUMPDEST PUSH2 0x50D PUSH1 0x40 MLOAD DUP1 PUSH1 0x40 ADD PUSH1 0x40 MSTORE DUP1 PUSH1 0x2 DUP2 MSTORE PUSH1 0x20 ADD PUSH2 0x3635 PUSH1 0xF0 SHL DUP2 MSTORE POP DUP2 JUMP JUMPDEST PUSH2 0x50D PUSH1 0x40 MLOAD DUP1 PUSH1 0x40 ADD PUSH1 0x40 MSTORE DUP1 PUSH1 0x2 DUP2 MSTORE PUSH1 0x20 ADD PUSH2 0x3633 PUSH1 0xF0 SHL DUP2 MSTORE POP DUP2 JUMP JUMPDEST PUSH2 0x50D PUSH1 0x40 MLOAD DUP1 PUSH1 0x40 ADD PUSH1 0x40 MSTORE DUP1 PUSH1 0x2 DUP2 MSTORE PUSH1 0x20 ADD PUSH2 0x3433 PUSH1 0xF0 SHL DUP2 MSTORE POP DUP2 JUMP JUMPDEST PUSH2 0x50D PUSH1 0x40 MLOAD DUP1 PUSH1 0x40 ADD PUSH1 0x40 MSTORE DUP1 PUSH1 0x2 DUP2 MSTORE PUSH1 0x20 ADD PUSH2 0x3131 PUSH1 0xF0 SHL DUP2 MSTORE POP DUP2 JUMP JUMPDEST PUSH2 0x50D PUSH1 0x40 MLOAD DUP1 PUSH1 0x40 ADD PUSH1 0x40 MSTORE DUP1 PUSH1 0x2 DUP2 MSTORE PUSH1 0x20 ADD PUSH2 0x3739 PUSH1 0xF0 SHL DUP2 MSTORE POP DUP2 JUMP JUMPDEST PUSH2 0x50D PUSH1 0x40 MLOAD DUP1 PUSH1 0x40 ADD PUSH1 0x40 MSTORE DUP1 PUSH1 0x2 DUP2 MSTORE PUSH1 0x20 ADD PUSH2 0x3637 PUSH1 0xF0 SHL DUP2 MSTORE POP DUP2 JUMP JUMPDEST PUSH2 0x50D PUSH1 0x40 MLOAD DUP1 PUSH1 0x40 ADD PUSH1 0x40 MSTORE DUP1 PUSH1 0x2 DUP2 MSTORE PUSH1 0x20 ADD PUSH2 0x3731 PUSH1 0xF0 SHL DUP2 MSTORE POP DUP2 JUMP JUMPDEST PUSH2 0x50D PUSH1 0x40 MLOAD DUP1 PUSH1 0x40 ADD PUSH1 0x40 MSTORE DUP1 PUSH1 0x2 DUP2 MSTORE PUSH1 0x20 ADD PUSH2 0x3835 PUSH1 0xF0 SHL DUP2 MSTORE POP DUP2 JUMP JUMPDEST PUSH2 0x50D PUSH1 0x40 MLOAD DUP1 PUSH1 0x40 ADD PUSH1 0x40 MSTORE DUP1 PUSH1 0x2 DUP2 MSTORE PUSH1 0x20 ADD PUSH2 0xC8D PUSH1 0xF2 SHL DUP2 MSTORE POP DUP2 JUMP JUMPDEST PUSH2 0x50D PUSH1 0x40 MLOAD DUP1 PUSH1 0x40 ADD PUSH1 0x40 MSTORE DUP1 PUSH1 0x1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x31 PUSH1 0xF8 SHL DUP2 MSTORE POP DUP2 JUMP JUMPDEST PUSH2 0x50D PUSH1 0x40 MLOAD DUP1 PUSH1 0x40 ADD PUSH1 0x40 MSTORE DUP1 PUSH1 0x2 DUP2 MSTORE PUSH1 0x20 ADD PUSH2 0x3531 PUSH1 0xF0 SHL DUP2 MSTORE POP DUP2 JUMP JUMPDEST PUSH2 0x50D PUSH1 0x40 MLOAD DUP1 PUSH1 0x40 ADD PUSH1 0x40 MSTORE DUP1 PUSH1 0x2 DUP2 MSTORE PUSH1 0x20 ADD PUSH2 0x1A19 PUSH1 0xF1 SHL DUP2 MSTORE POP DUP2 JUMP JUMPDEST PUSH2 0x50D PUSH1 0x40 MLOAD DUP1 PUSH1 0x40 ADD PUSH1 0x40 MSTORE DUP1 PUSH1 0x1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0xD PUSH1 0xFA SHL DUP2 MSTORE POP DUP2 JUMP JUMPDEST PUSH2 0x50D PUSH1 0x40 MLOAD DUP1 PUSH1 0x40 ADD PUSH1 0x40 MSTORE DUP1 PUSH1 0x2 DUP2 MSTORE PUSH1 0x20 ADD PUSH2 0x3239 PUSH1 0xF0 SHL DUP2 MSTORE POP DUP2 JUMP JUMPDEST PUSH2 0x50D PUSH1 0x40 MLOAD DUP1 PUSH1 0x40 ADD PUSH1 0x40 MSTORE DUP1 PUSH1 0x2 DUP2 MSTORE PUSH1 0x20 ADD PUSH2 0x1999 PUSH1 0xF1 SHL DUP2 MSTORE POP DUP2 JUMP JUMPDEST PUSH2 0x50D PUSH1 0x40 MLOAD DUP1 PUSH1 0x40 ADD PUSH1 0x40 MSTORE DUP1 PUSH1 0x2 DUP2 MSTORE PUSH1 0x20 ADD PUSH2 0x3537 PUSH1 0xF0 SHL DUP2 MSTORE POP DUP2 JUMP JUMPDEST PUSH2 0x50D PUSH1 0x40 MLOAD DUP1 PUSH1 0x40 ADD PUSH1 0x40 MSTORE DUP1 PUSH1 0x2 DUP2 MSTORE PUSH1 0x20 ADD PUSH2 0x1B9B PUSH1 0xF1 SHL DUP2 MSTORE POP DUP2 JUMP JUMPDEST PUSH2 0x50D PUSH1 0x40 MLOAD DUP1 PUSH1 0x40 ADD PUSH1 0x40 MSTORE DUP1 PUSH1 0x2 DUP2 MSTORE PUSH1 0x20 ADD PUSH2 0x6E7 PUSH1 0xF3 SHL DUP2 MSTORE POP DUP2 JUMP JUMPDEST PUSH2 0x50D PUSH1 0x40 MLOAD DUP1 PUSH1 0x40 ADD PUSH1 0x40 MSTORE DUP1 PUSH1 0x2 DUP2 MSTORE PUSH1 0x20 ADD PUSH2 0x3539 PUSH1 0xF0 SHL DUP2 MSTORE POP DUP2 JUMP JUMPDEST PUSH2 0x50D PUSH1 0x40 MLOAD DUP1 PUSH1 0x40 ADD PUSH1 0x40 MSTORE DUP1 PUSH1 0x2 DUP2 MSTORE PUSH1 0x20 ADD PUSH2 0xE0D PUSH1 0xF2 SHL DUP2 MSTORE POP DUP2 JUMP JUMPDEST PUSH2 0x50D PUSH1 0x40 MLOAD DUP1 PUSH1 0x40 ADD PUSH1 0x40 MSTORE DUP1 PUSH1 0x2 DUP2 MSTORE PUSH1 0x20 ADD PUSH2 0x1C19 PUSH1 0xF1 SHL DUP2 MSTORE POP DUP2 JUMP JUMPDEST PUSH2 0x50D PUSH1 0x40 MLOAD DUP1 PUSH1 0x40 ADD PUSH1 0x40 MSTORE DUP1 PUSH1 0x2 DUP2 MSTORE PUSH1 0x20 ADD PUSH2 0x3737 PUSH1 0xF0 SHL DUP2 MSTORE POP DUP2 JUMP JUMPDEST PUSH2 0x50D PUSH1 0x40 MLOAD DUP1 PUSH1 0x40 ADD PUSH1 0x40 MSTORE DUP1 PUSH1 0x2 DUP2 MSTORE PUSH1 0x20 ADD PUSH2 0xDCD PUSH1 0xF2 SHL DUP2 MSTORE POP DUP2 JUMP JUMPDEST PUSH2 0x50D PUSH1 0x40 MLOAD DUP1 PUSH1 0x40 ADD PUSH1 0x40 MSTORE DUP1 PUSH1 0x2 DUP2 MSTORE PUSH1 0x20 ADD PUSH2 0x6C7 PUSH1 0xF3 SHL DUP2 MSTORE POP DUP2 JUMP JUMPDEST PUSH2 0x50D PUSH1 0x40 MLOAD DUP1 PUSH1 0x40 ADD PUSH1 0x40 MSTORE DUP1 PUSH1 0x2 DUP2 MSTORE PUSH1 0x20 ADD PUSH2 0x3631 PUSH1 0xF0 SHL DUP2 MSTORE POP DUP2 JUMP JUMPDEST PUSH2 0x50D PUSH1 0x40 MLOAD DUP1 PUSH1 0x40 ADD PUSH1 0x40 MSTORE DUP1 PUSH1 0x2 DUP2 MSTORE PUSH1 0x20 ADD PUSH2 0x3339 PUSH1 0xF0 SHL DUP2 MSTORE POP DUP2 JUMP JUMPDEST PUSH2 0x50D PUSH1 0x40 MLOAD DUP1 PUSH1 0x40 ADD PUSH1 0x40 MSTORE DUP1 PUSH1 0x2 DUP2 MSTORE PUSH1 0x20 ADD PUSH2 0x3733 PUSH1 0xF0 SHL DUP2 MSTORE POP DUP2 JUMP JUMPDEST PUSH2 0x50D PUSH1 0x40 MLOAD DUP1 PUSH1 0x40 ADD PUSH1 0x40 MSTORE DUP1 PUSH1 0x2 DUP2 MSTORE PUSH1 0x20 ADD PUSH2 0xD8D PUSH1 0xF2 SHL DUP2 MSTORE POP DUP2 JUMP JUMPDEST PUSH2 0x50D PUSH1 0x40 MLOAD DUP1 PUSH1 0x40 ADD PUSH1 0x40 MSTORE DUP1 PUSH1 0x2 DUP2 MSTORE PUSH1 0x20 ADD PUSH2 0x3839 PUSH1 0xF0 SHL DUP2 MSTORE POP DUP2 JUMP JUMPDEST PUSH2 0x50D PUSH1 0x40 MLOAD DUP1 PUSH1 0x40 ADD PUSH1 0x40 MSTORE DUP1 PUSH1 0x1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x37 PUSH1 0xF8 SHL DUP2 MSTORE POP DUP2 JUMP JUMPDEST PUSH2 0x50D PUSH1 0x40 MLOAD DUP1 PUSH1 0x40 ADD PUSH1 0x40 MSTORE DUP1 PUSH1 0x2 DUP2 MSTORE PUSH1 0x20 ADD PUSH2 0x199B PUSH1 0xF1 SHL DUP2 MSTORE POP DUP2 JUMP JUMPDEST PUSH2 0x50D PUSH1 0x40 MLOAD DUP1 PUSH1 0x40 ADD PUSH1 0x40 MSTORE DUP1 PUSH1 0x2 DUP2 MSTORE PUSH1 0x20 ADD PUSH2 0x3831 PUSH1 0xF0 SHL DUP2 MSTORE POP DUP2 JUMP JUMPDEST PUSH2 0x50D PUSH1 0x40 MLOAD DUP1 PUSH1 0x40 ADD PUSH1 0x40 MSTORE DUP1 PUSH1 0x2 DUP2 MSTORE PUSH1 0x20 ADD PUSH2 0x393 PUSH1 0xF4 SHL DUP2 MSTORE POP DUP2 JUMP JUMPDEST PUSH2 0x50D PUSH1 0x40 MLOAD DUP1 PUSH1 0x40 ADD PUSH1 0x40 MSTORE DUP1 PUSH1 0x2 DUP2 MSTORE PUSH1 0x20 ADD PUSH2 0x667 PUSH1 0xF3 SHL DUP2 MSTORE POP DUP2 JUMP JUMPDEST PUSH2 0x50D PUSH1 0x40 MLOAD DUP1 PUSH1 0x40 ADD PUSH1 0x40 MSTORE DUP1 PUSH1 0x2 DUP2 MSTORE PUSH1 0x20 ADD PUSH2 0x1A9B PUSH1 0xF1 SHL DUP2 MSTORE POP DUP2 JUMP JUMPDEST PUSH2 0x50D PUSH1 0x40 MLOAD DUP1 PUSH1 0x40 ADD PUSH1 0x40 MSTORE DUP1 PUSH1 0x2 DUP2 MSTORE PUSH1 0x20 ADD PUSH2 0x189B PUSH1 0xF1 SHL DUP2 MSTORE POP DUP2 JUMP JUMPDEST PUSH2 0x50D PUSH1 0x40 MLOAD DUP1 PUSH1 0x40 ADD PUSH1 0x40 MSTORE DUP1 PUSH1 0x2 DUP2 MSTORE PUSH1 0x20 ADD PUSH2 0x1B1B PUSH1 0xF1 SHL DUP2 MSTORE POP DUP2 JUMP JUMPDEST PUSH2 0x50D PUSH1 0x40 MLOAD DUP1 PUSH1 0x40 ADD PUSH1 0x40 MSTORE DUP1 PUSH1 0x2 DUP2 MSTORE PUSH1 0x20 ADD PUSH2 0x191B PUSH1 0xF1 SHL DUP2 MSTORE POP DUP2 JUMP JUMPDEST PUSH2 0x50D PUSH1 0x40 MLOAD DUP1 PUSH1 0x40 ADD PUSH1 0x40 MSTORE DUP1 PUSH1 0x2 DUP2 MSTORE PUSH1 0x20 ADD PUSH2 0x3735 PUSH1 0xF0 SHL DUP2 MSTORE POP DUP2 JUMP JUMPDEST PUSH1 0x20 DUP2 MSTORE PUSH0 DUP3 MLOAD DUP1 PUSH1 0x20 DUP5 ADD MSTORE DUP1 PUSH1 0x20 DUP6 ADD PUSH1 0x40 DUP6 ADD MCOPY PUSH0 PUSH1 0x40 DUP3 DUP6 ADD ADD MSTORE PUSH1 0x40 PUSH1 0x1F NOT PUSH1 0x1F DUP4 ADD AND DUP5 ADD ADD SWAP2 POP POP SWAP3 SWAP2 POP POP JUMP INVALID LOG2 PUSH5 0x6970667358 0x22 SLT KECCAK256 0x26 0xB4 DUP3 CALLDATASIZE SWAP5 SGT 0xDE SAR DUP15 PUSH22 0x820E1B953EE2B354E57E6DAB0068028573A6A38AE308 PUSH5 0x736F6C6343 STOP ADDMOD 0x1E STOP CALLER ","sourceMap":"205:9704:57:-:0;;;;;;;;;;;;;;;-1:-1:-1;;;205:9704:57;;;;;;;;;;;;;;;;;"},"deployedBytecode":{"functionDebugData":{"@ACL_ADMIN_CANNOT_BE_ZERO_18317":{"entryPoint":null,"id":18317,"parameterSlots":0,"returnSlots":0},"@ADDRESSES_PROVIDER_ALREADY_ADDED_18350":{"entryPoint":null,"id":18350,"parameterSlots":0,"returnSlots":0},"@ADDRESSES_PROVIDER_NOT_REGISTERED_18116":{"entryPoint":null,"id":18116,"parameterSlots":0,"returnSlots":0},"@AMOUNT_BIGGER_THAN_MAX_LOAN_SIZE_STABLE_18209":{"entryPoint":null,"id":18209,"parameterSlots":0,"returnSlots":0},"@ASSET_NOT_BORROWABLE_IN_ISOLATION_18272":{"entryPoint":null,"id":18272,"parameterSlots":0,"returnSlots":0},"@ASSET_NOT_LISTED_18338":{"entryPoint":null,"id":18338,"parameterSlots":0,"returnSlots":0},"@BORROWING_NOT_ENABLED_18185":{"entryPoint":null,"id":18185,"parameterSlots":0,"returnSlots":0},"@BORROW_CAP_EXCEEDED_18242":{"entryPoint":null,"id":18242,"parameterSlots":0,"returnSlots":0},"@BRIDGE_PROTOCOL_FEE_INVALID_18161":{"entryPoint":null,"id":18161,"parameterSlots":0,"returnSlots":0},"@CALLER_MUST_BE_POOL_18164":{"entryPoint":null,"id":18164,"parameterSlots":0,"returnSlots":0},"@CALLER_NOT_ASSET_LISTING_OR_POOL_ADMIN_18110":{"entryPoint":null,"id":18110,"parameterSlots":0,"returnSlots":0},"@CALLER_NOT_ATOKEN_18128":{"entryPoint":null,"id":18128,"parameterSlots":0,"returnSlots":0},"@CALLER_NOT_BRIDGE_18113":{"entryPoint":null,"id":18113,"parameterSlots":0,"returnSlots":0},"@CALLER_NOT_EMERGENCY_ADMIN_18101":{"entryPoint":null,"id":18101,"parameterSlots":0,"returnSlots":0},"@CALLER_NOT_POOL_ADMIN_18098":{"entryPoint":null,"id":18098,"parameterSlots":0,"returnSlots":0},"@CALLER_NOT_POOL_CONFIGURATOR_18125":{"entryPoint":null,"id":18125,"parameterSlots":0,"returnSlots":0},"@CALLER_NOT_POOL_OR_EMERGENCY_ADMIN_18104":{"entryPoint":null,"id":18104,"parameterSlots":0,"returnSlots":0},"@CALLER_NOT_RISK_OR_POOL_ADMIN_18107":{"entryPoint":null,"id":18107,"parameterSlots":0,"returnSlots":0},"@COLLATERAL_BALANCE_IS_ZERO_18197":{"entryPoint":null,"id":18197,"parameterSlots":0,"returnSlots":0},"@COLLATERAL_CANNOT_BE_LIQUIDATED_18233":{"entryPoint":null,"id":18233,"parameterSlots":0,"returnSlots":0},"@COLLATERAL_CANNOT_COVER_NEW_BORROW_18203":{"entryPoint":null,"id":18203,"parameterSlots":0,"returnSlots":0},"@COLLATERAL_SAME_AS_BORROWING_CURRENCY_18206":{"entryPoint":null,"id":18206,"parameterSlots":0,"returnSlots":0},"@DEBT_CEILING_EXCEEDED_18251":{"entryPoint":null,"id":18251,"parameterSlots":0,"returnSlots":0},"@DEBT_CEILING_NOT_ZERO_18335":{"entryPoint":null,"id":18335,"parameterSlots":0,"returnSlots":0},"@EMODE_CATEGORY_RESERVED_18143":{"entryPoint":null,"id":18143,"parameterSlots":0,"returnSlots":0},"@FLASHLOAN_DISABLED_18365":{"entryPoint":null,"id":18365,"parameterSlots":0,"returnSlots":0},"@FLASHLOAN_PREMIUM_INVALID_18152":{"entryPoint":null,"id":18152,"parameterSlots":0,"returnSlots":0},"@HEALTH_FACTOR_LOWER_THAN_LIQUIDATION_THRESHOLD_18200":{"entryPoint":null,"id":18200,"parameterSlots":0,"returnSlots":0},"@HEALTH_FACTOR_NOT_BELOW_THRESHOLD_18230":{"entryPoint":null,"id":18230,"parameterSlots":0,"returnSlots":0},"@INCONSISTENT_EMODE_CATEGORY_18266":{"entryPoint":null,"id":18266,"parameterSlots":0,"returnSlots":0},"@INCONSISTENT_FLASHLOAN_PARAMS_18239":{"entryPoint":null,"id":18239,"parameterSlots":0,"returnSlots":0},"@INCONSISTENT_PARAMS_LENGTH_18320":{"entryPoint":null,"id":18320,"parameterSlots":0,"returnSlots":0},"@INTEREST_RATE_REBALANCE_CONDITIONS_NOT_MET_18227":{"entryPoint":null,"id":18227,"parameterSlots":0,"returnSlots":0},"@INVALID_ADDRESSES_PROVIDER_18131":{"entryPoint":null,"id":18131,"parameterSlots":0,"returnSlots":0},"@INVALID_ADDRESSES_PROVIDER_ID_18119":{"entryPoint":null,"id":18119,"parameterSlots":0,"returnSlots":0},"@INVALID_AMOUNT_18173":{"entryPoint":null,"id":18173,"parameterSlots":0,"returnSlots":0},"@INVALID_BORROW_CAP_18296":{"entryPoint":null,"id":18296,"parameterSlots":0,"returnSlots":0},"@INVALID_BURN_AMOUNT_18170":{"entryPoint":null,"id":18170,"parameterSlots":0,"returnSlots":0},"@INVALID_DEBT_CEILING_18311":{"entryPoint":null,"id":18311,"parameterSlots":0,"returnSlots":0},"@INVALID_DECIMALS_18290":{"entryPoint":null,"id":18290,"parameterSlots":0,"returnSlots":0},"@INVALID_EMODE_CATEGORY_18305":{"entryPoint":null,"id":18305,"parameterSlots":0,"returnSlots":0},"@INVALID_EMODE_CATEGORY_ASSIGNMENT_18146":{"entryPoint":null,"id":18146,"parameterSlots":0,"returnSlots":0},"@INVALID_EMODE_CATEGORY_PARAMS_18158":{"entryPoint":null,"id":18158,"parameterSlots":0,"returnSlots":0},"@INVALID_EXPIRATION_18326":{"entryPoint":null,"id":18326,"parameterSlots":0,"returnSlots":0},"@INVALID_FLASHLOAN_EXECUTOR_RETURN_18134":{"entryPoint":null,"id":18134,"parameterSlots":0,"returnSlots":0},"@INVALID_INTEREST_RATE_MODE_SELECTED_18194":{"entryPoint":null,"id":18194,"parameterSlots":0,"returnSlots":0},"@INVALID_LIQUIDATION_PROTOCOL_FEE_18302":{"entryPoint":null,"id":18302,"parameterSlots":0,"returnSlots":0},"@INVALID_LIQ_BONUS_18287":{"entryPoint":null,"id":18287,"parameterSlots":0,"returnSlots":0},"@INVALID_LIQ_THRESHOLD_18284":{"entryPoint":null,"id":18284,"parameterSlots":0,"returnSlots":0},"@INVALID_LTV_18281":{"entryPoint":null,"id":18281,"parameterSlots":0,"returnSlots":0},"@INVALID_MINT_AMOUNT_18167":{"entryPoint":null,"id":18167,"parameterSlots":0,"returnSlots":0},"@INVALID_OPTIMAL_STABLE_TO_TOTAL_DEBT_RATIO_18344":{"entryPoint":null,"id":18344,"parameterSlots":0,"returnSlots":0},"@INVALID_OPTIMAL_USAGE_RATIO_18341":{"entryPoint":null,"id":18341,"parameterSlots":0,"returnSlots":0},"@INVALID_RESERVE_FACTOR_18293":{"entryPoint":null,"id":18293,"parameterSlots":0,"returnSlots":0},"@INVALID_RESERVE_INDEX_18314":{"entryPoint":null,"id":18314,"parameterSlots":0,"returnSlots":0},"@INVALID_RESERVE_PARAMS_18155":{"entryPoint":null,"id":18155,"parameterSlots":0,"returnSlots":0},"@INVALID_SIGNATURE_18329":{"entryPoint":null,"id":18329,"parameterSlots":0,"returnSlots":0},"@INVALID_SUPPLY_CAP_18299":{"entryPoint":null,"id":18299,"parameterSlots":0,"returnSlots":0},"@INVALID_UNBACKED_MINT_CAP_18308":{"entryPoint":null,"id":18308,"parameterSlots":0,"returnSlots":0},"@LTV_VALIDATION_FAILED_18263":{"entryPoint":null,"id":18263,"parameterSlots":0,"returnSlots":0},"@NOT_CONTRACT_18122":{"entryPoint":null,"id":18122,"parameterSlots":0,"returnSlots":0},"@NOT_ENOUGH_AVAILABLE_USER_BALANCE_18191":{"entryPoint":null,"id":18191,"parameterSlots":0,"returnSlots":0},"@NO_DEBT_OF_SELECTED_TYPE_18212":{"entryPoint":null,"id":18212,"parameterSlots":0,"returnSlots":0},"@NO_EXPLICIT_AMOUNT_TO_REPAY_ON_BEHALF_18215":{"entryPoint":null,"id":18215,"parameterSlots":0,"returnSlots":0},"@NO_MORE_RESERVES_ALLOWED_18140":{"entryPoint":null,"id":18140,"parameterSlots":0,"returnSlots":0},"@NO_OUTSTANDING_STABLE_DEBT_18218":{"entryPoint":null,"id":18218,"parameterSlots":0,"returnSlots":0},"@NO_OUTSTANDING_VARIABLE_DEBT_18221":{"entryPoint":null,"id":18221,"parameterSlots":0,"returnSlots":0},"@OPERATION_NOT_SUPPORTED_18332":{"entryPoint":null,"id":18332,"parameterSlots":0,"returnSlots":0},"@POOL_ADDRESSES_DO_NOT_MATCH_18353":{"entryPoint":null,"id":18353,"parameterSlots":0,"returnSlots":0},"@PRICE_ORACLE_SENTINEL_CHECK_FAILED_18269":{"entryPoint":null,"id":18269,"parameterSlots":0,"returnSlots":0},"@RESERVE_ALREADY_ADDED_18137":{"entryPoint":null,"id":18137,"parameterSlots":0,"returnSlots":0},"@RESERVE_ALREADY_INITIALIZED_18275":{"entryPoint":null,"id":18275,"parameterSlots":0,"returnSlots":0},"@RESERVE_DEBT_NOT_ZERO_18362":{"entryPoint":null,"id":18362,"parameterSlots":0,"returnSlots":0},"@RESERVE_FROZEN_18179":{"entryPoint":null,"id":18179,"parameterSlots":0,"returnSlots":0},"@RESERVE_INACTIVE_18176":{"entryPoint":null,"id":18176,"parameterSlots":0,"returnSlots":0},"@RESERVE_LIQUIDITY_NOT_ZERO_18149":{"entryPoint":null,"id":18149,"parameterSlots":0,"returnSlots":0},"@RESERVE_PAUSED_18182":{"entryPoint":null,"id":18182,"parameterSlots":0,"returnSlots":0},"@SILOED_BORROWING_VIOLATION_18359":{"entryPoint":null,"id":18359,"parameterSlots":0,"returnSlots":0},"@SPECIFIED_CURRENCY_NOT_BORROWED_BY_USER_18236":{"entryPoint":null,"id":18236,"parameterSlots":0,"returnSlots":0},"@STABLE_BORROWING_ENABLED_18356":{"entryPoint":null,"id":18356,"parameterSlots":0,"returnSlots":0},"@STABLE_BORROWING_NOT_ENABLED_18188":{"entryPoint":null,"id":18188,"parameterSlots":0,"returnSlots":0},"@STABLE_DEBT_NOT_ZERO_18257":{"entryPoint":null,"id":18257,"parameterSlots":0,"returnSlots":0},"@SUPPLY_CAP_EXCEEDED_18245":{"entryPoint":null,"id":18245,"parameterSlots":0,"returnSlots":0},"@UNBACKED_MINT_CAP_EXCEEDED_18248":{"entryPoint":null,"id":18248,"parameterSlots":0,"returnSlots":0},"@UNDERLYING_BALANCE_ZERO_18224":{"entryPoint":null,"id":18224,"parameterSlots":0,"returnSlots":0},"@UNDERLYING_CANNOT_BE_RESCUED_18347":{"entryPoint":null,"id":18347,"parameterSlots":0,"returnSlots":0},"@UNDERLYING_CLAIMABLE_RIGHTS_NOT_ZERO_18254":{"entryPoint":null,"id":18254,"parameterSlots":0,"returnSlots":0},"@USER_IN_ISOLATION_MODE_OR_LTV_ZERO_18278":{"entryPoint":null,"id":18278,"parameterSlots":0,"returnSlots":0},"@VARIABLE_DEBT_SUPPLY_NOT_ZERO_18260":{"entryPoint":null,"id":18260,"parameterSlots":0,"returnSlots":0},"@ZERO_ADDRESS_NOT_VALID_18323":{"entryPoint":null,"id":18323,"parameterSlots":0,"returnSlots":0},"abi_encode_tuple_t_string_memory_ptr__to_t_string_memory_ptr__fromStack_library_reversed":{"entryPoint":4243,"id":null,"parameterSlots":2,"returnSlots":1}},"generatedSources":[{"ast":{"nativeSrc":"0:442:87","nodeType":"YulBlock","src":"0:442:87","statements":[{"nativeSrc":"6:3:87","nodeType":"YulBlock","src":"6:3:87","statements":[]},{"body":{"nativeSrc":"143:297:87","nodeType":"YulBlock","src":"143:297:87","statements":[{"expression":{"arguments":[{"name":"headStart","nativeSrc":"160:9:87","nodeType":"YulIdentifier","src":"160:9:87"},{"kind":"number","nativeSrc":"171:2:87","nodeType":"YulLiteral","src":"171:2:87","type":"","value":"32"}],"functionName":{"name":"mstore","nativeSrc":"153:6:87","nodeType":"YulIdentifier","src":"153:6:87"},"nativeSrc":"153:21:87","nodeType":"YulFunctionCall","src":"153:21:87"},"nativeSrc":"153:21:87","nodeType":"YulExpressionStatement","src":"153:21:87"},{"nativeSrc":"183:27:87","nodeType":"YulVariableDeclaration","src":"183:27:87","value":{"arguments":[{"name":"value0","nativeSrc":"203:6:87","nodeType":"YulIdentifier","src":"203:6:87"}],"functionName":{"name":"mload","nativeSrc":"197:5:87","nodeType":"YulIdentifier","src":"197:5:87"},"nativeSrc":"197:13:87","nodeType":"YulFunctionCall","src":"197:13:87"},"variables":[{"name":"length","nativeSrc":"187:6:87","nodeType":"YulTypedName","src":"187:6:87","type":""}]},{"expression":{"arguments":[{"arguments":[{"name":"headStart","nativeSrc":"230:9:87","nodeType":"YulIdentifier","src":"230:9:87"},{"kind":"number","nativeSrc":"241:2:87","nodeType":"YulLiteral","src":"241:2:87","type":"","value":"32"}],"functionName":{"name":"add","nativeSrc":"226:3:87","nodeType":"YulIdentifier","src":"226:3:87"},"nativeSrc":"226:18:87","nodeType":"YulFunctionCall","src":"226:18:87"},{"name":"length","nativeSrc":"246:6:87","nodeType":"YulIdentifier","src":"246:6:87"}],"functionName":{"name":"mstore","nativeSrc":"219:6:87","nodeType":"YulIdentifier","src":"219:6:87"},"nativeSrc":"219:34:87","nodeType":"YulFunctionCall","src":"219:34:87"},"nativeSrc":"219:34:87","nodeType":"YulExpressionStatement","src":"219:34:87"},{"expression":{"arguments":[{"arguments":[{"name":"headStart","nativeSrc":"272:9:87","nodeType":"YulIdentifier","src":"272:9:87"},{"kind":"number","nativeSrc":"283:2:87","nodeType":"YulLiteral","src":"283:2:87","type":"","value":"64"}],"functionName":{"name":"add","nativeSrc":"268:3:87","nodeType":"YulIdentifier","src":"268:3:87"},"nativeSrc":"268:18:87","nodeType":"YulFunctionCall","src":"268:18:87"},{"arguments":[{"name":"value0","nativeSrc":"292:6:87","nodeType":"YulIdentifier","src":"292:6:87"},{"kind":"number","nativeSrc":"300:2:87","nodeType":"YulLiteral","src":"300:2:87","type":"","value":"32"}],"functionName":{"name":"add","nativeSrc":"288:3:87","nodeType":"YulIdentifier","src":"288:3:87"},"nativeSrc":"288:15:87","nodeType":"YulFunctionCall","src":"288:15:87"},{"name":"length","nativeSrc":"305:6:87","nodeType":"YulIdentifier","src":"305:6:87"}],"functionName":{"name":"mcopy","nativeSrc":"262:5:87","nodeType":"YulIdentifier","src":"262:5:87"},"nativeSrc":"262:50:87","nodeType":"YulFunctionCall","src":"262:50:87"},"nativeSrc":"262:50:87","nodeType":"YulExpressionStatement","src":"262:50:87"},{"expression":{"arguments":[{"arguments":[{"arguments":[{"name":"headStart","nativeSrc":"336:9:87","nodeType":"YulIdentifier","src":"336:9:87"},{"name":"length","nativeSrc":"347:6:87","nodeType":"YulIdentifier","src":"347:6:87"}],"functionName":{"name":"add","nativeSrc":"332:3:87","nodeType":"YulIdentifier","src":"332:3:87"},"nativeSrc":"332:22:87","nodeType":"YulFunctionCall","src":"332:22:87"},{"kind":"number","nativeSrc":"356:2:87","nodeType":"YulLiteral","src":"356:2:87","type":"","value":"64"}],"functionName":{"name":"add","nativeSrc":"328:3:87","nodeType":"YulIdentifier","src":"328:3:87"},"nativeSrc":"328:31:87","nodeType":"YulFunctionCall","src":"328:31:87"},{"kind":"number","nativeSrc":"361:1:87","nodeType":"YulLiteral","src":"361:1:87","type":"","value":"0"}],"functionName":{"name":"mstore","nativeSrc":"321:6:87","nodeType":"YulIdentifier","src":"321:6:87"},"nativeSrc":"321:42:87","nodeType":"YulFunctionCall","src":"321:42:87"},"nativeSrc":"321:42:87","nodeType":"YulExpressionStatement","src":"321:42:87"},{"nativeSrc":"372:62:87","nodeType":"YulAssignment","src":"372:62:87","value":{"arguments":[{"arguments":[{"name":"headStart","nativeSrc":"388:9:87","nodeType":"YulIdentifier","src":"388:9:87"},{"arguments":[{"arguments":[{"name":"length","nativeSrc":"407:6:87","nodeType":"YulIdentifier","src":"407:6:87"},{"kind":"number","nativeSrc":"415:2:87","nodeType":"YulLiteral","src":"415:2:87","type":"","value":"31"}],"functionName":{"name":"add","nativeSrc":"403:3:87","nodeType":"YulIdentifier","src":"403:3:87"},"nativeSrc":"403:15:87","nodeType":"YulFunctionCall","src":"403:15:87"},{"arguments":[{"kind":"number","nativeSrc":"424:2:87","nodeType":"YulLiteral","src":"424:2:87","type":"","value":"31"}],"functionName":{"name":"not","nativeSrc":"420:3:87","nodeType":"YulIdentifier","src":"420:3:87"},"nativeSrc":"420:7:87","nodeType":"YulFunctionCall","src":"420:7:87"}],"functionName":{"name":"and","nativeSrc":"399:3:87","nodeType":"YulIdentifier","src":"399:3:87"},"nativeSrc":"399:29:87","nodeType":"YulFunctionCall","src":"399:29:87"}],"functionName":{"name":"add","nativeSrc":"384:3:87","nodeType":"YulIdentifier","src":"384:3:87"},"nativeSrc":"384:45:87","nodeType":"YulFunctionCall","src":"384:45:87"},{"kind":"number","nativeSrc":"431:2:87","nodeType":"YulLiteral","src":"431:2:87","type":"","value":"64"}],"functionName":{"name":"add","nativeSrc":"380:3:87","nodeType":"YulIdentifier","src":"380:3:87"},"nativeSrc":"380:54:87","nodeType":"YulFunctionCall","src":"380:54:87"},"variableNames":[{"name":"tail","nativeSrc":"372:4:87","nodeType":"YulIdentifier","src":"372:4:87"}]}]},"name":"abi_encode_tuple_t_string_memory_ptr__to_t_string_memory_ptr__fromStack_library_reversed","nativeSrc":"14:426:87","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nativeSrc":"112:9:87","nodeType":"YulTypedName","src":"112:9:87","type":""},{"name":"value0","nativeSrc":"123:6:87","nodeType":"YulTypedName","src":"123:6:87","type":""}],"returnVariables":[{"name":"tail","nativeSrc":"134:4:87","nodeType":"YulTypedName","src":"134:4:87","type":""}],"src":"14:426:87"}]},"contents":"{\n    { }\n    function abi_encode_tuple_t_string_memory_ptr__to_t_string_memory_ptr__fromStack_library_reversed(headStart, value0) -> tail\n    {\n        mstore(headStart, 32)\n        let length := mload(value0)\n        mstore(add(headStart, 32), length)\n        mcopy(add(headStart, 64), add(value0, 32), length)\n        mstore(add(add(headStart, length), 64), 0)\n        tail := add(add(headStart, and(add(length, 31), not(31))), 64)\n    }\n}","id":87,"language":"Yul","name":"#utility.yul"}],"immutableReferences":{},"linkReferences":{},"object":"73000000000000000000000000000000000000000030146080604052600436106104e8575f3560e01c80638aa3ca4c1161028f578063bad8308c1161016c578063dd1dd95f116100e0578063f07f67851161009a578063f07f678514610fcd578063f10727db14610fee578063f479ea111461100f578063fa163a8314611030578063fae8279114611051578063fd1828ff14611072575f5ffd5b8063dd1dd95f14610f08578063de24948c14610f29578063e02f07ee14610f4a578063e3fa20f514610f6a578063e4dd8b7414610f8b578063e981483a14610fac575f5ffd5b8063d14bb17a11610131578063d14bb17a14610e42578063d1cd8b1d14610e63578063d6f9fcde14610e84578063d9adda8514610ea5578063dc191bd914610ec6578063dcc56db614610ee7575f5ffd5b8063bad8308c14610d9d578063c08a114614610dbe578063c863808214610ddf578063c899301a14610e00578063cd23367c14610e21575f5ffd5b8063a4868dca11610203578063b0510054116101c8578063b051005414610cd8578063b4a4573014610cf9578063b5e7936614610d1a578063b68774e914610d3a578063b7f5e22414610d5b578063b87041c214610d7c575f5ffd5b8063a4868dca14610c34578063a8c9785314610c55578063ab883ca014610c76578063abd351b114610c97578063ac75323614610cb8575f5ffd5b8063952633c511610254578063952633c514610b6e5780639527e9d914610b8f57806399ce53f314610bb0578063a2797c8014610bd1578063a2e976c614610bf2578063a3402a3814610c13575f5ffd5b80638aa3ca4c14610ac95780638b8b98d714610aea5780638eda46bd14610b0b5780638f7722b214610b2c57806394f9fd8a14610b4d575f5ffd5b80634e3aed37116103c85780636cd3cfbc1161033c5780637aa0767e116102f65780637aa0767e14610a035780637fea6f3614610a245780638596aad514610a45578063895f7dc814610a6657806389c5d45f14610a875780638a34400014610aa8575f5ffd5b80636cd3cfbc1461093d578063712f536a1461095e57806373dea5e31461097f57806374459b14146109a0578063747fa556146109c157806376ae8fca146109e2575f5ffd5b80635d9c76c01161038d5780635d9c76c01461087857806360c3de801461089957806361c111d2146108b957806365a83bab146108da57806365e7ef4c146108fb5780636b3f7cc71461091c575f5ffd5b80634e3aed37146107d45780634ef999ff146107f55780634f77647b14610816578063512674501461083657806352ba9dbe14610857575f5ffd5b80632eed17e81161045f57806347ba93d81161042457806347ba93d81461070f57806347cf152314610730578063480702ae14610751578063485c8ff6146107725780634d86f393146107925780634e01e3c1146107b3575f5ffd5b80632eed17e81461066a578063335763de1461068b578063366eb54d146106ac57806337930782146106cd578063471df685146106ee575f5ffd5b80631abbb001116104b05780631abbb001146105a657806322a73446146105c757806326bbd053146105e857806326e7b312146106095780632926c971146106295780632c8e3b4c1461064a575f5ffd5b8063084dfa0d146104ec57806311d7b0061461052357806312dcade81461054357806314dcfbbc14610564578063198d6a6b14610585575b5f5ffd5b61050d60405180604001604052806002815260200161062760f31b81525081565b60405161051a9190611093565b60405180910390f35b61050d604051806040016040528060018152602001603960f81b81525081565b61050d604051806040016040528060028152602001610c4d60f21b81525081565b61050d604051806040016040528060028152602001611c1b60f11b81525081565b61050d60405180604001604052806002815260200161070760f31b81525081565b61050d60405180604001604052806002815260200161383760f01b81525081565b61050d60405180604001604052806002815260200161343760f01b81525081565b61050d60405180604001604052806002815260200161363960f01b81525081565b61050d604051806040016040528060018152602001603360f81b81525081565b61050d604051806040016040528060028152602001610d0d60f21b81525081565b61050d604051806040016040528060018152602001603560f81b81525081565b61050d60405180604001604052806002815260200161035360f41b81525081565b61050d60405180604001604052806002815260200161032360f41b81525081565b61050d60405180604001604052806002815260200161333560f01b81525081565b61050d60405180604001604052806002815260200161189960f11b81525081565b61050d60405180604001604052806002815260200161323360f01b81525081565b61050d604051806040016040528060028152602001611b9960f11b81525081565b61050d60405180604001604052806002815260200161323160f01b81525081565b61050d604051806040016040528060028152602001611b1960f11b81525081565b61050d604051806040016040528060018152602001601960f91b81525081565b61050d60405180604001604052806002815260200161333160f01b81525081565b61050d604051806040016040528060028152602001610ccd60f21b81525081565b61050d60405180604001604052806002815260200161383360f01b81525081565b61050d60405180604001604052806002815260200161033360f41b81525081565b61050d604051806040016040528060018152602001601b60f91b81525081565b61050d60405180604001604052806002815260200161323560f01b81525081565b61050d60405180604001604052806002815260200161323760f01b81525081565b61050d60405180604001604052806002815260200161313760f01b81525081565b61050d604051806040016040528060018152602001600760fb1b81525081565b61050d60405180604001604052806002815260200161031360f41b81525081565b61050d60405180604001604052806002815260200161353360f01b81525081565b61050d60405180604001604052806002815260200161353560f01b81525081565b61050d604051806040016040528060028152602001611a9960f11b81525081565b61050d60405180604001604052806002815260200161064760f31b81525081565b61050d60405180604001604052806002815260200161034360f41b81525081565b61050d60405180604001604052806002815260200161343960f01b81525081565b61050d60405180604001604052806002815260200161343160f01b81525081565b61050d60405180604001604052806002815260200161313960f01b81525081565b61050d60405180604001604052806002815260200161313560f01b81525081565b61050d60405180604001604052806002815260200161191960f11b81525081565b61050d60405180604001604052806002815260200161313360f01b81525081565b61050d60405180604001604052806002815260200161036360f41b81525081565b61050d604051806040016040528060028152602001611a1b60f11b81525081565b61050d60405180604001604052806002815260200161333360f01b81525081565b61050d60405180604001604052806002815260200161333760f01b81525081565b61050d60405180604001604052806002815260200161393160f01b81525081565b61050d60405180604001604052806002815260200161038360f41b81525081565b61050d60405180604001604052806002815260200161037360f41b81525081565b61050d6040518060400160405280600281526020016106a760f31b81525081565b61050d604051806040016040528060028152602001610d4d60f21b81525081565b61050d60405180604001604052806002815260200161343560f01b81525081565b61050d60405180604001604052806002815260200161363560f01b81525081565b61050d60405180604001604052806002815260200161363360f01b81525081565b61050d60405180604001604052806002815260200161343360f01b81525081565b61050d60405180604001604052806002815260200161313160f01b81525081565b61050d60405180604001604052806002815260200161373960f01b81525081565b61050d60405180604001604052806002815260200161363760f01b81525081565b61050d60405180604001604052806002815260200161373160f01b81525081565b61050d60405180604001604052806002815260200161383560f01b81525081565b61050d604051806040016040528060028152602001610c8d60f21b81525081565b61050d604051806040016040528060018152602001603160f81b81525081565b61050d60405180604001604052806002815260200161353160f01b81525081565b61050d604051806040016040528060028152602001611a1960f11b81525081565b61050d604051806040016040528060018152602001600d60fa1b81525081565b61050d60405180604001604052806002815260200161323960f01b81525081565b61050d60405180604001604052806002815260200161199960f11b81525081565b61050d60405180604001604052806002815260200161353760f01b81525081565b61050d604051806040016040528060028152602001611b9b60f11b81525081565b61050d6040518060400160405280600281526020016106e760f31b81525081565b61050d60405180604001604052806002815260200161353960f01b81525081565b61050d604051806040016040528060028152602001610e0d60f21b81525081565b61050d604051806040016040528060028152602001611c1960f11b81525081565b61050d60405180604001604052806002815260200161373760f01b81525081565b61050d604051806040016040528060028152602001610dcd60f21b81525081565b61050d6040518060400160405280600281526020016106c760f31b81525081565b61050d60405180604001604052806002815260200161363160f01b81525081565b61050d60405180604001604052806002815260200161333960f01b81525081565b61050d60405180604001604052806002815260200161373360f01b81525081565b61050d604051806040016040528060028152602001610d8d60f21b81525081565b61050d60405180604001604052806002815260200161383960f01b81525081565b61050d604051806040016040528060018152602001603760f81b81525081565b61050d60405180604001604052806002815260200161199b60f11b81525081565b61050d60405180604001604052806002815260200161383160f01b81525081565b61050d60405180604001604052806002815260200161039360f41b81525081565b61050d60405180604001604052806002815260200161066760f31b81525081565b61050d604051806040016040528060028152602001611a9b60f11b81525081565b61050d60405180604001604052806002815260200161189b60f11b81525081565b61050d604051806040016040528060028152602001611b1b60f11b81525081565b61050d60405180604001604052806002815260200161191b60f11b81525081565b61050d60405180604001604052806002815260200161373560f01b81525081565b602081525f82518060208401528060208501604085015e5f604082850101526040601f19601f8301168401019150509291505056fea264697066735822122026b482369413de1d8e75820e1b953ee2b354e57e6dab0068028573a6a38ae30864736f6c634300081e0033","opcodes":"PUSH20 0x0 ADDRESS EQ PUSH1 0x80 PUSH1 0x40 MSTORE PUSH1 0x4 CALLDATASIZE LT PUSH2 0x4E8 JUMPI PUSH0 CALLDATALOAD PUSH1 0xE0 SHR DUP1 PUSH4 0x8AA3CA4C GT PUSH2 0x28F JUMPI DUP1 PUSH4 0xBAD8308C GT PUSH2 0x16C JUMPI DUP1 PUSH4 0xDD1DD95F GT PUSH2 0xE0 JUMPI DUP1 PUSH4 0xF07F6785 GT PUSH2 0x9A JUMPI DUP1 PUSH4 0xF07F6785 EQ PUSH2 0xFCD JUMPI DUP1 PUSH4 0xF10727DB EQ PUSH2 0xFEE JUMPI DUP1 PUSH4 0xF479EA11 EQ PUSH2 0x100F JUMPI DUP1 PUSH4 0xFA163A83 EQ PUSH2 0x1030 JUMPI DUP1 PUSH4 0xFAE82791 EQ PUSH2 0x1051 JUMPI DUP1 PUSH4 0xFD1828FF EQ PUSH2 0x1072 JUMPI PUSH0 PUSH0 REVERT JUMPDEST DUP1 PUSH4 0xDD1DD95F EQ PUSH2 0xF08 JUMPI DUP1 PUSH4 0xDE24948C EQ PUSH2 0xF29 JUMPI DUP1 PUSH4 0xE02F07EE EQ PUSH2 0xF4A JUMPI DUP1 PUSH4 0xE3FA20F5 EQ PUSH2 0xF6A JUMPI DUP1 PUSH4 0xE4DD8B74 EQ PUSH2 0xF8B JUMPI DUP1 PUSH4 0xE981483A EQ PUSH2 0xFAC JUMPI PUSH0 PUSH0 REVERT JUMPDEST DUP1 PUSH4 0xD14BB17A GT PUSH2 0x131 JUMPI DUP1 PUSH4 0xD14BB17A EQ PUSH2 0xE42 JUMPI DUP1 PUSH4 0xD1CD8B1D EQ PUSH2 0xE63 JUMPI DUP1 PUSH4 0xD6F9FCDE EQ PUSH2 0xE84 JUMPI DUP1 PUSH4 0xD9ADDA85 EQ PUSH2 0xEA5 JUMPI DUP1 PUSH4 0xDC191BD9 EQ PUSH2 0xEC6 JUMPI DUP1 PUSH4 0xDCC56DB6 EQ PUSH2 0xEE7 JUMPI PUSH0 PUSH0 REVERT JUMPDEST DUP1 PUSH4 0xBAD8308C EQ PUSH2 0xD9D JUMPI DUP1 PUSH4 0xC08A1146 EQ PUSH2 0xDBE JUMPI DUP1 PUSH4 0xC8638082 EQ PUSH2 0xDDF JUMPI DUP1 PUSH4 0xC899301A EQ PUSH2 0xE00 JUMPI DUP1 PUSH4 0xCD23367C EQ PUSH2 0xE21 JUMPI PUSH0 PUSH0 REVERT JUMPDEST DUP1 PUSH4 0xA4868DCA GT PUSH2 0x203 JUMPI DUP1 PUSH4 0xB0510054 GT PUSH2 0x1C8 JUMPI DUP1 PUSH4 0xB0510054 EQ PUSH2 0xCD8 JUMPI DUP1 PUSH4 0xB4A45730 EQ PUSH2 0xCF9 JUMPI DUP1 PUSH4 0xB5E79366 EQ PUSH2 0xD1A JUMPI DUP1 PUSH4 0xB68774E9 EQ PUSH2 0xD3A JUMPI DUP1 PUSH4 0xB7F5E224 EQ PUSH2 0xD5B JUMPI DUP1 PUSH4 0xB87041C2 EQ PUSH2 0xD7C JUMPI PUSH0 PUSH0 REVERT JUMPDEST DUP1 PUSH4 0xA4868DCA EQ PUSH2 0xC34 JUMPI DUP1 PUSH4 0xA8C97853 EQ PUSH2 0xC55 JUMPI DUP1 PUSH4 0xAB883CA0 EQ PUSH2 0xC76 JUMPI DUP1 PUSH4 0xABD351B1 EQ PUSH2 0xC97 JUMPI DUP1 PUSH4 0xAC753236 EQ PUSH2 0xCB8 JUMPI PUSH0 PUSH0 REVERT JUMPDEST DUP1 PUSH4 0x952633C5 GT PUSH2 0x254 JUMPI DUP1 PUSH4 0x952633C5 EQ PUSH2 0xB6E JUMPI DUP1 PUSH4 0x9527E9D9 EQ PUSH2 0xB8F JUMPI DUP1 PUSH4 0x99CE53F3 EQ PUSH2 0xBB0 JUMPI DUP1 PUSH4 0xA2797C80 EQ PUSH2 0xBD1 JUMPI DUP1 PUSH4 0xA2E976C6 EQ PUSH2 0xBF2 JUMPI DUP1 PUSH4 0xA3402A38 EQ PUSH2 0xC13 JUMPI PUSH0 PUSH0 REVERT JUMPDEST DUP1 PUSH4 0x8AA3CA4C EQ PUSH2 0xAC9 JUMPI DUP1 PUSH4 0x8B8B98D7 EQ PUSH2 0xAEA JUMPI DUP1 PUSH4 0x8EDA46BD EQ PUSH2 0xB0B JUMPI DUP1 PUSH4 0x8F7722B2 EQ PUSH2 0xB2C JUMPI DUP1 PUSH4 0x94F9FD8A EQ PUSH2 0xB4D JUMPI PUSH0 PUSH0 REVERT JUMPDEST DUP1 PUSH4 0x4E3AED37 GT PUSH2 0x3C8 JUMPI DUP1 PUSH4 0x6CD3CFBC GT PUSH2 0x33C JUMPI DUP1 PUSH4 0x7AA0767E GT PUSH2 0x2F6 JUMPI DUP1 PUSH4 0x7AA0767E EQ PUSH2 0xA03 JUMPI DUP1 PUSH4 0x7FEA6F36 EQ PUSH2 0xA24 JUMPI DUP1 PUSH4 0x8596AAD5 EQ PUSH2 0xA45 JUMPI DUP1 PUSH4 0x895F7DC8 EQ PUSH2 0xA66 JUMPI DUP1 PUSH4 0x89C5D45F EQ PUSH2 0xA87 JUMPI DUP1 PUSH4 0x8A344000 EQ PUSH2 0xAA8 JUMPI PUSH0 PUSH0 REVERT JUMPDEST DUP1 PUSH4 0x6CD3CFBC EQ PUSH2 0x93D JUMPI DUP1 PUSH4 0x712F536A EQ PUSH2 0x95E JUMPI DUP1 PUSH4 0x73DEA5E3 EQ PUSH2 0x97F JUMPI DUP1 PUSH4 0x74459B14 EQ PUSH2 0x9A0 JUMPI DUP1 PUSH4 0x747FA556 EQ PUSH2 0x9C1 JUMPI DUP1 PUSH4 0x76AE8FCA EQ PUSH2 0x9E2 JUMPI PUSH0 PUSH0 REVERT JUMPDEST DUP1 PUSH4 0x5D9C76C0 GT PUSH2 0x38D JUMPI DUP1 PUSH4 0x5D9C76C0 EQ PUSH2 0x878 JUMPI DUP1 PUSH4 0x60C3DE80 EQ PUSH2 0x899 JUMPI DUP1 PUSH4 0x61C111D2 EQ PUSH2 0x8B9 JUMPI DUP1 PUSH4 0x65A83BAB EQ PUSH2 0x8DA JUMPI DUP1 PUSH4 0x65E7EF4C EQ PUSH2 0x8FB JUMPI DUP1 PUSH4 0x6B3F7CC7 EQ PUSH2 0x91C JUMPI PUSH0 PUSH0 REVERT JUMPDEST DUP1 PUSH4 0x4E3AED37 EQ PUSH2 0x7D4 JUMPI DUP1 PUSH4 0x4EF999FF EQ PUSH2 0x7F5 JUMPI DUP1 PUSH4 0x4F77647B EQ PUSH2 0x816 JUMPI DUP1 PUSH4 0x51267450 EQ PUSH2 0x836 JUMPI DUP1 PUSH4 0x52BA9DBE EQ PUSH2 0x857 JUMPI PUSH0 PUSH0 REVERT JUMPDEST DUP1 PUSH4 0x2EED17E8 GT PUSH2 0x45F JUMPI DUP1 PUSH4 0x47BA93D8 GT PUSH2 0x424 JUMPI DUP1 PUSH4 0x47BA93D8 EQ PUSH2 0x70F JUMPI DUP1 PUSH4 0x47CF1523 EQ PUSH2 0x730 JUMPI DUP1 PUSH4 0x480702AE EQ PUSH2 0x751 JUMPI DUP1 PUSH4 0x485C8FF6 EQ PUSH2 0x772 JUMPI DUP1 PUSH4 0x4D86F393 EQ PUSH2 0x792 JUMPI DUP1 PUSH4 0x4E01E3C1 EQ PUSH2 0x7B3 JUMPI PUSH0 PUSH0 REVERT JUMPDEST DUP1 PUSH4 0x2EED17E8 EQ PUSH2 0x66A JUMPI DUP1 PUSH4 0x335763DE EQ PUSH2 0x68B JUMPI DUP1 PUSH4 0x366EB54D EQ PUSH2 0x6AC JUMPI DUP1 PUSH4 0x37930782 EQ PUSH2 0x6CD JUMPI DUP1 PUSH4 0x471DF685 EQ PUSH2 0x6EE JUMPI PUSH0 PUSH0 REVERT JUMPDEST DUP1 PUSH4 0x1ABBB001 GT PUSH2 0x4B0 JUMPI DUP1 PUSH4 0x1ABBB001 EQ PUSH2 0x5A6 JUMPI DUP1 PUSH4 0x22A73446 EQ PUSH2 0x5C7 JUMPI DUP1 PUSH4 0x26BBD053 EQ PUSH2 0x5E8 JUMPI DUP1 PUSH4 0x26E7B312 EQ PUSH2 0x609 JUMPI DUP1 PUSH4 0x2926C971 EQ PUSH2 0x629 JUMPI DUP1 PUSH4 0x2C8E3B4C EQ PUSH2 0x64A JUMPI PUSH0 PUSH0 REVERT JUMPDEST DUP1 PUSH4 0x84DFA0D EQ PUSH2 0x4EC JUMPI DUP1 PUSH4 0x11D7B006 EQ PUSH2 0x523 JUMPI DUP1 PUSH4 0x12DCADE8 EQ PUSH2 0x543 JUMPI DUP1 PUSH4 0x14DCFBBC EQ PUSH2 0x564 JUMPI DUP1 PUSH4 0x198D6A6B EQ PUSH2 0x585 JUMPI JUMPDEST PUSH0 PUSH0 REVERT JUMPDEST PUSH2 0x50D PUSH1 0x40 MLOAD DUP1 PUSH1 0x40 ADD PUSH1 0x40 MSTORE DUP1 PUSH1 0x2 DUP2 MSTORE PUSH1 0x20 ADD PUSH2 0x627 PUSH1 0xF3 SHL DUP2 MSTORE POP DUP2 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0x51A SWAP2 SWAP1 PUSH2 0x1093 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST PUSH2 0x50D PUSH1 0x40 MLOAD DUP1 PUSH1 0x40 ADD PUSH1 0x40 MSTORE DUP1 PUSH1 0x1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x39 PUSH1 0xF8 SHL DUP2 MSTORE POP DUP2 JUMP JUMPDEST PUSH2 0x50D PUSH1 0x40 MLOAD DUP1 PUSH1 0x40 ADD PUSH1 0x40 MSTORE DUP1 PUSH1 0x2 DUP2 MSTORE PUSH1 0x20 ADD PUSH2 0xC4D PUSH1 0xF2 SHL DUP2 MSTORE POP DUP2 JUMP JUMPDEST PUSH2 0x50D PUSH1 0x40 MLOAD DUP1 PUSH1 0x40 ADD PUSH1 0x40 MSTORE DUP1 PUSH1 0x2 DUP2 MSTORE PUSH1 0x20 ADD PUSH2 0x1C1B PUSH1 0xF1 SHL DUP2 MSTORE POP DUP2 JUMP JUMPDEST PUSH2 0x50D PUSH1 0x40 MLOAD DUP1 PUSH1 0x40 ADD PUSH1 0x40 MSTORE DUP1 PUSH1 0x2 DUP2 MSTORE PUSH1 0x20 ADD PUSH2 0x707 PUSH1 0xF3 SHL DUP2 MSTORE POP DUP2 JUMP JUMPDEST PUSH2 0x50D PUSH1 0x40 MLOAD DUP1 PUSH1 0x40 ADD PUSH1 0x40 MSTORE DUP1 PUSH1 0x2 DUP2 MSTORE PUSH1 0x20 ADD PUSH2 0x3837 PUSH1 0xF0 SHL DUP2 MSTORE POP DUP2 JUMP JUMPDEST PUSH2 0x50D PUSH1 0x40 MLOAD DUP1 PUSH1 0x40 ADD PUSH1 0x40 MSTORE DUP1 PUSH1 0x2 DUP2 MSTORE PUSH1 0x20 ADD PUSH2 0x3437 PUSH1 0xF0 SHL DUP2 MSTORE POP DUP2 JUMP JUMPDEST PUSH2 0x50D PUSH1 0x40 MLOAD DUP1 PUSH1 0x40 ADD PUSH1 0x40 MSTORE DUP1 PUSH1 0x2 DUP2 MSTORE PUSH1 0x20 ADD PUSH2 0x3639 PUSH1 0xF0 SHL DUP2 MSTORE POP DUP2 JUMP JUMPDEST PUSH2 0x50D PUSH1 0x40 MLOAD DUP1 PUSH1 0x40 ADD PUSH1 0x40 MSTORE DUP1 PUSH1 0x1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x33 PUSH1 0xF8 SHL DUP2 MSTORE POP DUP2 JUMP JUMPDEST PUSH2 0x50D PUSH1 0x40 MLOAD DUP1 PUSH1 0x40 ADD PUSH1 0x40 MSTORE DUP1 PUSH1 0x2 DUP2 MSTORE PUSH1 0x20 ADD PUSH2 0xD0D PUSH1 0xF2 SHL DUP2 MSTORE POP DUP2 JUMP JUMPDEST PUSH2 0x50D PUSH1 0x40 MLOAD DUP1 PUSH1 0x40 ADD PUSH1 0x40 MSTORE DUP1 PUSH1 0x1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x35 PUSH1 0xF8 SHL DUP2 MSTORE POP DUP2 JUMP JUMPDEST PUSH2 0x50D PUSH1 0x40 MLOAD DUP1 PUSH1 0x40 ADD PUSH1 0x40 MSTORE DUP1 PUSH1 0x2 DUP2 MSTORE PUSH1 0x20 ADD PUSH2 0x353 PUSH1 0xF4 SHL DUP2 MSTORE POP DUP2 JUMP JUMPDEST PUSH2 0x50D PUSH1 0x40 MLOAD DUP1 PUSH1 0x40 ADD PUSH1 0x40 MSTORE DUP1 PUSH1 0x2 DUP2 MSTORE PUSH1 0x20 ADD PUSH2 0x323 PUSH1 0xF4 SHL DUP2 MSTORE POP DUP2 JUMP JUMPDEST PUSH2 0x50D PUSH1 0x40 MLOAD DUP1 PUSH1 0x40 ADD PUSH1 0x40 MSTORE DUP1 PUSH1 0x2 DUP2 MSTORE PUSH1 0x20 ADD PUSH2 0x3335 PUSH1 0xF0 SHL DUP2 MSTORE POP DUP2 JUMP JUMPDEST PUSH2 0x50D PUSH1 0x40 MLOAD DUP1 PUSH1 0x40 ADD PUSH1 0x40 MSTORE DUP1 PUSH1 0x2 DUP2 MSTORE PUSH1 0x20 ADD PUSH2 0x1899 PUSH1 0xF1 SHL DUP2 MSTORE POP DUP2 JUMP JUMPDEST PUSH2 0x50D PUSH1 0x40 MLOAD DUP1 PUSH1 0x40 ADD PUSH1 0x40 MSTORE DUP1 PUSH1 0x2 DUP2 MSTORE PUSH1 0x20 ADD PUSH2 0x3233 PUSH1 0xF0 SHL DUP2 MSTORE POP DUP2 JUMP JUMPDEST PUSH2 0x50D PUSH1 0x40 MLOAD DUP1 PUSH1 0x40 ADD PUSH1 0x40 MSTORE DUP1 PUSH1 0x2 DUP2 MSTORE PUSH1 0x20 ADD PUSH2 0x1B99 PUSH1 0xF1 SHL DUP2 MSTORE POP DUP2 JUMP JUMPDEST PUSH2 0x50D PUSH1 0x40 MLOAD DUP1 PUSH1 0x40 ADD PUSH1 0x40 MSTORE DUP1 PUSH1 0x2 DUP2 MSTORE PUSH1 0x20 ADD PUSH2 0x3231 PUSH1 0xF0 SHL DUP2 MSTORE POP DUP2 JUMP JUMPDEST PUSH2 0x50D PUSH1 0x40 MLOAD DUP1 PUSH1 0x40 ADD PUSH1 0x40 MSTORE DUP1 PUSH1 0x2 DUP2 MSTORE PUSH1 0x20 ADD PUSH2 0x1B19 PUSH1 0xF1 SHL DUP2 MSTORE POP DUP2 JUMP JUMPDEST PUSH2 0x50D PUSH1 0x40 MLOAD DUP1 PUSH1 0x40 ADD PUSH1 0x40 MSTORE DUP1 PUSH1 0x1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x19 PUSH1 0xF9 SHL DUP2 MSTORE POP DUP2 JUMP JUMPDEST PUSH2 0x50D PUSH1 0x40 MLOAD DUP1 PUSH1 0x40 ADD PUSH1 0x40 MSTORE DUP1 PUSH1 0x2 DUP2 MSTORE PUSH1 0x20 ADD PUSH2 0x3331 PUSH1 0xF0 SHL DUP2 MSTORE POP DUP2 JUMP JUMPDEST PUSH2 0x50D PUSH1 0x40 MLOAD DUP1 PUSH1 0x40 ADD PUSH1 0x40 MSTORE DUP1 PUSH1 0x2 DUP2 MSTORE PUSH1 0x20 ADD PUSH2 0xCCD PUSH1 0xF2 SHL DUP2 MSTORE POP DUP2 JUMP JUMPDEST PUSH2 0x50D PUSH1 0x40 MLOAD DUP1 PUSH1 0x40 ADD PUSH1 0x40 MSTORE DUP1 PUSH1 0x2 DUP2 MSTORE PUSH1 0x20 ADD PUSH2 0x3833 PUSH1 0xF0 SHL DUP2 MSTORE POP DUP2 JUMP JUMPDEST PUSH2 0x50D PUSH1 0x40 MLOAD DUP1 PUSH1 0x40 ADD PUSH1 0x40 MSTORE DUP1 PUSH1 0x2 DUP2 MSTORE PUSH1 0x20 ADD PUSH2 0x333 PUSH1 0xF4 SHL DUP2 MSTORE POP DUP2 JUMP JUMPDEST PUSH2 0x50D PUSH1 0x40 MLOAD DUP1 PUSH1 0x40 ADD PUSH1 0x40 MSTORE DUP1 PUSH1 0x1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x1B PUSH1 0xF9 SHL DUP2 MSTORE POP DUP2 JUMP JUMPDEST PUSH2 0x50D PUSH1 0x40 MLOAD DUP1 PUSH1 0x40 ADD PUSH1 0x40 MSTORE DUP1 PUSH1 0x2 DUP2 MSTORE PUSH1 0x20 ADD PUSH2 0x3235 PUSH1 0xF0 SHL DUP2 MSTORE POP DUP2 JUMP JUMPDEST PUSH2 0x50D PUSH1 0x40 MLOAD DUP1 PUSH1 0x40 ADD PUSH1 0x40 MSTORE DUP1 PUSH1 0x2 DUP2 MSTORE PUSH1 0x20 ADD PUSH2 0x3237 PUSH1 0xF0 SHL DUP2 MSTORE POP DUP2 JUMP JUMPDEST PUSH2 0x50D PUSH1 0x40 MLOAD DUP1 PUSH1 0x40 ADD PUSH1 0x40 MSTORE DUP1 PUSH1 0x2 DUP2 MSTORE PUSH1 0x20 ADD PUSH2 0x3137 PUSH1 0xF0 SHL DUP2 MSTORE POP DUP2 JUMP JUMPDEST PUSH2 0x50D PUSH1 0x40 MLOAD DUP1 PUSH1 0x40 ADD PUSH1 0x40 MSTORE DUP1 PUSH1 0x1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x7 PUSH1 0xFB SHL DUP2 MSTORE POP DUP2 JUMP JUMPDEST PUSH2 0x50D PUSH1 0x40 MLOAD DUP1 PUSH1 0x40 ADD PUSH1 0x40 MSTORE DUP1 PUSH1 0x2 DUP2 MSTORE PUSH1 0x20 ADD PUSH2 0x313 PUSH1 0xF4 SHL DUP2 MSTORE POP DUP2 JUMP JUMPDEST PUSH2 0x50D PUSH1 0x40 MLOAD DUP1 PUSH1 0x40 ADD PUSH1 0x40 MSTORE DUP1 PUSH1 0x2 DUP2 MSTORE PUSH1 0x20 ADD PUSH2 0x3533 PUSH1 0xF0 SHL DUP2 MSTORE POP DUP2 JUMP JUMPDEST PUSH2 0x50D PUSH1 0x40 MLOAD DUP1 PUSH1 0x40 ADD PUSH1 0x40 MSTORE DUP1 PUSH1 0x2 DUP2 MSTORE PUSH1 0x20 ADD PUSH2 0x3535 PUSH1 0xF0 SHL DUP2 MSTORE POP DUP2 JUMP JUMPDEST PUSH2 0x50D PUSH1 0x40 MLOAD DUP1 PUSH1 0x40 ADD PUSH1 0x40 MSTORE DUP1 PUSH1 0x2 DUP2 MSTORE PUSH1 0x20 ADD PUSH2 0x1A99 PUSH1 0xF1 SHL DUP2 MSTORE POP DUP2 JUMP JUMPDEST PUSH2 0x50D PUSH1 0x40 MLOAD DUP1 PUSH1 0x40 ADD PUSH1 0x40 MSTORE DUP1 PUSH1 0x2 DUP2 MSTORE PUSH1 0x20 ADD PUSH2 0x647 PUSH1 0xF3 SHL DUP2 MSTORE POP DUP2 JUMP JUMPDEST PUSH2 0x50D PUSH1 0x40 MLOAD DUP1 PUSH1 0x40 ADD PUSH1 0x40 MSTORE DUP1 PUSH1 0x2 DUP2 MSTORE PUSH1 0x20 ADD PUSH2 0x343 PUSH1 0xF4 SHL DUP2 MSTORE POP DUP2 JUMP JUMPDEST PUSH2 0x50D PUSH1 0x40 MLOAD DUP1 PUSH1 0x40 ADD PUSH1 0x40 MSTORE DUP1 PUSH1 0x2 DUP2 MSTORE PUSH1 0x20 ADD PUSH2 0x3439 PUSH1 0xF0 SHL DUP2 MSTORE POP DUP2 JUMP JUMPDEST PUSH2 0x50D PUSH1 0x40 MLOAD DUP1 PUSH1 0x40 ADD PUSH1 0x40 MSTORE DUP1 PUSH1 0x2 DUP2 MSTORE PUSH1 0x20 ADD PUSH2 0x3431 PUSH1 0xF0 SHL DUP2 MSTORE POP DUP2 JUMP JUMPDEST PUSH2 0x50D PUSH1 0x40 MLOAD DUP1 PUSH1 0x40 ADD PUSH1 0x40 MSTORE DUP1 PUSH1 0x2 DUP2 MSTORE PUSH1 0x20 ADD PUSH2 0x3139 PUSH1 0xF0 SHL DUP2 MSTORE POP DUP2 JUMP JUMPDEST PUSH2 0x50D PUSH1 0x40 MLOAD DUP1 PUSH1 0x40 ADD PUSH1 0x40 MSTORE DUP1 PUSH1 0x2 DUP2 MSTORE PUSH1 0x20 ADD PUSH2 0x3135 PUSH1 0xF0 SHL DUP2 MSTORE POP DUP2 JUMP JUMPDEST PUSH2 0x50D PUSH1 0x40 MLOAD DUP1 PUSH1 0x40 ADD PUSH1 0x40 MSTORE DUP1 PUSH1 0x2 DUP2 MSTORE PUSH1 0x20 ADD PUSH2 0x1919 PUSH1 0xF1 SHL DUP2 MSTORE POP DUP2 JUMP JUMPDEST PUSH2 0x50D PUSH1 0x40 MLOAD DUP1 PUSH1 0x40 ADD PUSH1 0x40 MSTORE DUP1 PUSH1 0x2 DUP2 MSTORE PUSH1 0x20 ADD PUSH2 0x3133 PUSH1 0xF0 SHL DUP2 MSTORE POP DUP2 JUMP JUMPDEST PUSH2 0x50D PUSH1 0x40 MLOAD DUP1 PUSH1 0x40 ADD PUSH1 0x40 MSTORE DUP1 PUSH1 0x2 DUP2 MSTORE PUSH1 0x20 ADD PUSH2 0x363 PUSH1 0xF4 SHL DUP2 MSTORE POP DUP2 JUMP JUMPDEST PUSH2 0x50D PUSH1 0x40 MLOAD DUP1 PUSH1 0x40 ADD PUSH1 0x40 MSTORE DUP1 PUSH1 0x2 DUP2 MSTORE PUSH1 0x20 ADD PUSH2 0x1A1B PUSH1 0xF1 SHL DUP2 MSTORE POP DUP2 JUMP JUMPDEST PUSH2 0x50D PUSH1 0x40 MLOAD DUP1 PUSH1 0x40 ADD PUSH1 0x40 MSTORE DUP1 PUSH1 0x2 DUP2 MSTORE PUSH1 0x20 ADD PUSH2 0x3333 PUSH1 0xF0 SHL DUP2 MSTORE POP DUP2 JUMP JUMPDEST PUSH2 0x50D PUSH1 0x40 MLOAD DUP1 PUSH1 0x40 ADD PUSH1 0x40 MSTORE DUP1 PUSH1 0x2 DUP2 MSTORE PUSH1 0x20 ADD PUSH2 0x3337 PUSH1 0xF0 SHL DUP2 MSTORE POP DUP2 JUMP JUMPDEST PUSH2 0x50D PUSH1 0x40 MLOAD DUP1 PUSH1 0x40 ADD PUSH1 0x40 MSTORE DUP1 PUSH1 0x2 DUP2 MSTORE PUSH1 0x20 ADD PUSH2 0x3931 PUSH1 0xF0 SHL DUP2 MSTORE POP DUP2 JUMP JUMPDEST PUSH2 0x50D PUSH1 0x40 MLOAD DUP1 PUSH1 0x40 ADD PUSH1 0x40 MSTORE DUP1 PUSH1 0x2 DUP2 MSTORE PUSH1 0x20 ADD PUSH2 0x383 PUSH1 0xF4 SHL DUP2 MSTORE POP DUP2 JUMP JUMPDEST PUSH2 0x50D PUSH1 0x40 MLOAD DUP1 PUSH1 0x40 ADD PUSH1 0x40 MSTORE DUP1 PUSH1 0x2 DUP2 MSTORE PUSH1 0x20 ADD PUSH2 0x373 PUSH1 0xF4 SHL DUP2 MSTORE POP DUP2 JUMP JUMPDEST PUSH2 0x50D PUSH1 0x40 MLOAD DUP1 PUSH1 0x40 ADD PUSH1 0x40 MSTORE DUP1 PUSH1 0x2 DUP2 MSTORE PUSH1 0x20 ADD PUSH2 0x6A7 PUSH1 0xF3 SHL DUP2 MSTORE POP DUP2 JUMP JUMPDEST PUSH2 0x50D PUSH1 0x40 MLOAD DUP1 PUSH1 0x40 ADD PUSH1 0x40 MSTORE DUP1 PUSH1 0x2 DUP2 MSTORE PUSH1 0x20 ADD PUSH2 0xD4D PUSH1 0xF2 SHL DUP2 MSTORE POP DUP2 JUMP JUMPDEST PUSH2 0x50D PUSH1 0x40 MLOAD DUP1 PUSH1 0x40 ADD PUSH1 0x40 MSTORE DUP1 PUSH1 0x2 DUP2 MSTORE PUSH1 0x20 ADD PUSH2 0x3435 PUSH1 0xF0 SHL DUP2 MSTORE POP DUP2 JUMP JUMPDEST PUSH2 0x50D PUSH1 0x40 MLOAD DUP1 PUSH1 0x40 ADD PUSH1 0x40 MSTORE DUP1 PUSH1 0x2 DUP2 MSTORE PUSH1 0x20 ADD PUSH2 0x3635 PUSH1 0xF0 SHL DUP2 MSTORE POP DUP2 JUMP JUMPDEST PUSH2 0x50D PUSH1 0x40 MLOAD DUP1 PUSH1 0x40 ADD PUSH1 0x40 MSTORE DUP1 PUSH1 0x2 DUP2 MSTORE PUSH1 0x20 ADD PUSH2 0x3633 PUSH1 0xF0 SHL DUP2 MSTORE POP DUP2 JUMP JUMPDEST PUSH2 0x50D PUSH1 0x40 MLOAD DUP1 PUSH1 0x40 ADD PUSH1 0x40 MSTORE DUP1 PUSH1 0x2 DUP2 MSTORE PUSH1 0x20 ADD PUSH2 0x3433 PUSH1 0xF0 SHL DUP2 MSTORE POP DUP2 JUMP JUMPDEST PUSH2 0x50D PUSH1 0x40 MLOAD DUP1 PUSH1 0x40 ADD PUSH1 0x40 MSTORE DUP1 PUSH1 0x2 DUP2 MSTORE PUSH1 0x20 ADD PUSH2 0x3131 PUSH1 0xF0 SHL DUP2 MSTORE POP DUP2 JUMP JUMPDEST PUSH2 0x50D PUSH1 0x40 MLOAD DUP1 PUSH1 0x40 ADD PUSH1 0x40 MSTORE DUP1 PUSH1 0x2 DUP2 MSTORE PUSH1 0x20 ADD PUSH2 0x3739 PUSH1 0xF0 SHL DUP2 MSTORE POP DUP2 JUMP JUMPDEST PUSH2 0x50D PUSH1 0x40 MLOAD DUP1 PUSH1 0x40 ADD PUSH1 0x40 MSTORE DUP1 PUSH1 0x2 DUP2 MSTORE PUSH1 0x20 ADD PUSH2 0x3637 PUSH1 0xF0 SHL DUP2 MSTORE POP DUP2 JUMP JUMPDEST PUSH2 0x50D PUSH1 0x40 MLOAD DUP1 PUSH1 0x40 ADD PUSH1 0x40 MSTORE DUP1 PUSH1 0x2 DUP2 MSTORE PUSH1 0x20 ADD PUSH2 0x3731 PUSH1 0xF0 SHL DUP2 MSTORE POP DUP2 JUMP JUMPDEST PUSH2 0x50D PUSH1 0x40 MLOAD DUP1 PUSH1 0x40 ADD PUSH1 0x40 MSTORE DUP1 PUSH1 0x2 DUP2 MSTORE PUSH1 0x20 ADD PUSH2 0x3835 PUSH1 0xF0 SHL DUP2 MSTORE POP DUP2 JUMP JUMPDEST PUSH2 0x50D PUSH1 0x40 MLOAD DUP1 PUSH1 0x40 ADD PUSH1 0x40 MSTORE DUP1 PUSH1 0x2 DUP2 MSTORE PUSH1 0x20 ADD PUSH2 0xC8D PUSH1 0xF2 SHL DUP2 MSTORE POP DUP2 JUMP JUMPDEST PUSH2 0x50D PUSH1 0x40 MLOAD DUP1 PUSH1 0x40 ADD PUSH1 0x40 MSTORE DUP1 PUSH1 0x1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x31 PUSH1 0xF8 SHL DUP2 MSTORE POP DUP2 JUMP JUMPDEST PUSH2 0x50D PUSH1 0x40 MLOAD DUP1 PUSH1 0x40 ADD PUSH1 0x40 MSTORE DUP1 PUSH1 0x2 DUP2 MSTORE PUSH1 0x20 ADD PUSH2 0x3531 PUSH1 0xF0 SHL DUP2 MSTORE POP DUP2 JUMP JUMPDEST PUSH2 0x50D PUSH1 0x40 MLOAD DUP1 PUSH1 0x40 ADD PUSH1 0x40 MSTORE DUP1 PUSH1 0x2 DUP2 MSTORE PUSH1 0x20 ADD PUSH2 0x1A19 PUSH1 0xF1 SHL DUP2 MSTORE POP DUP2 JUMP JUMPDEST PUSH2 0x50D PUSH1 0x40 MLOAD DUP1 PUSH1 0x40 ADD PUSH1 0x40 MSTORE DUP1 PUSH1 0x1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0xD PUSH1 0xFA SHL DUP2 MSTORE POP DUP2 JUMP JUMPDEST PUSH2 0x50D PUSH1 0x40 MLOAD DUP1 PUSH1 0x40 ADD PUSH1 0x40 MSTORE DUP1 PUSH1 0x2 DUP2 MSTORE PUSH1 0x20 ADD PUSH2 0x3239 PUSH1 0xF0 SHL DUP2 MSTORE POP DUP2 JUMP JUMPDEST PUSH2 0x50D PUSH1 0x40 MLOAD DUP1 PUSH1 0x40 ADD PUSH1 0x40 MSTORE DUP1 PUSH1 0x2 DUP2 MSTORE PUSH1 0x20 ADD PUSH2 0x1999 PUSH1 0xF1 SHL DUP2 MSTORE POP DUP2 JUMP JUMPDEST PUSH2 0x50D PUSH1 0x40 MLOAD DUP1 PUSH1 0x40 ADD PUSH1 0x40 MSTORE DUP1 PUSH1 0x2 DUP2 MSTORE PUSH1 0x20 ADD PUSH2 0x3537 PUSH1 0xF0 SHL DUP2 MSTORE POP DUP2 JUMP JUMPDEST PUSH2 0x50D PUSH1 0x40 MLOAD DUP1 PUSH1 0x40 ADD PUSH1 0x40 MSTORE DUP1 PUSH1 0x2 DUP2 MSTORE PUSH1 0x20 ADD PUSH2 0x1B9B PUSH1 0xF1 SHL DUP2 MSTORE POP DUP2 JUMP JUMPDEST PUSH2 0x50D PUSH1 0x40 MLOAD DUP1 PUSH1 0x40 ADD PUSH1 0x40 MSTORE DUP1 PUSH1 0x2 DUP2 MSTORE PUSH1 0x20 ADD PUSH2 0x6E7 PUSH1 0xF3 SHL DUP2 MSTORE POP DUP2 JUMP JUMPDEST PUSH2 0x50D PUSH1 0x40 MLOAD DUP1 PUSH1 0x40 ADD PUSH1 0x40 MSTORE DUP1 PUSH1 0x2 DUP2 MSTORE PUSH1 0x20 ADD PUSH2 0x3539 PUSH1 0xF0 SHL DUP2 MSTORE POP DUP2 JUMP JUMPDEST PUSH2 0x50D PUSH1 0x40 MLOAD DUP1 PUSH1 0x40 ADD PUSH1 0x40 MSTORE DUP1 PUSH1 0x2 DUP2 MSTORE PUSH1 0x20 ADD PUSH2 0xE0D PUSH1 0xF2 SHL DUP2 MSTORE POP DUP2 JUMP JUMPDEST PUSH2 0x50D PUSH1 0x40 MLOAD DUP1 PUSH1 0x40 ADD PUSH1 0x40 MSTORE DUP1 PUSH1 0x2 DUP2 MSTORE PUSH1 0x20 ADD PUSH2 0x1C19 PUSH1 0xF1 SHL DUP2 MSTORE POP DUP2 JUMP JUMPDEST PUSH2 0x50D PUSH1 0x40 MLOAD DUP1 PUSH1 0x40 ADD PUSH1 0x40 MSTORE DUP1 PUSH1 0x2 DUP2 MSTORE PUSH1 0x20 ADD PUSH2 0x3737 PUSH1 0xF0 SHL DUP2 MSTORE POP DUP2 JUMP JUMPDEST PUSH2 0x50D PUSH1 0x40 MLOAD DUP1 PUSH1 0x40 ADD PUSH1 0x40 MSTORE DUP1 PUSH1 0x2 DUP2 MSTORE PUSH1 0x20 ADD PUSH2 0xDCD PUSH1 0xF2 SHL DUP2 MSTORE POP DUP2 JUMP JUMPDEST PUSH2 0x50D PUSH1 0x40 MLOAD DUP1 PUSH1 0x40 ADD PUSH1 0x40 MSTORE DUP1 PUSH1 0x2 DUP2 MSTORE PUSH1 0x20 ADD PUSH2 0x6C7 PUSH1 0xF3 SHL DUP2 MSTORE POP DUP2 JUMP JUMPDEST PUSH2 0x50D PUSH1 0x40 MLOAD DUP1 PUSH1 0x40 ADD PUSH1 0x40 MSTORE DUP1 PUSH1 0x2 DUP2 MSTORE PUSH1 0x20 ADD PUSH2 0x3631 PUSH1 0xF0 SHL DUP2 MSTORE POP DUP2 JUMP JUMPDEST PUSH2 0x50D PUSH1 0x40 MLOAD DUP1 PUSH1 0x40 ADD PUSH1 0x40 MSTORE DUP1 PUSH1 0x2 DUP2 MSTORE PUSH1 0x20 ADD PUSH2 0x3339 PUSH1 0xF0 SHL DUP2 MSTORE POP DUP2 JUMP JUMPDEST PUSH2 0x50D PUSH1 0x40 MLOAD DUP1 PUSH1 0x40 ADD PUSH1 0x40 MSTORE DUP1 PUSH1 0x2 DUP2 MSTORE PUSH1 0x20 ADD PUSH2 0x3733 PUSH1 0xF0 SHL DUP2 MSTORE POP DUP2 JUMP JUMPDEST PUSH2 0x50D PUSH1 0x40 MLOAD DUP1 PUSH1 0x40 ADD PUSH1 0x40 MSTORE DUP1 PUSH1 0x2 DUP2 MSTORE PUSH1 0x20 ADD PUSH2 0xD8D PUSH1 0xF2 SHL DUP2 MSTORE POP DUP2 JUMP JUMPDEST PUSH2 0x50D PUSH1 0x40 MLOAD DUP1 PUSH1 0x40 ADD PUSH1 0x40 MSTORE DUP1 PUSH1 0x2 DUP2 MSTORE PUSH1 0x20 ADD PUSH2 0x3839 PUSH1 0xF0 SHL DUP2 MSTORE POP DUP2 JUMP JUMPDEST PUSH2 0x50D PUSH1 0x40 MLOAD DUP1 PUSH1 0x40 ADD PUSH1 0x40 MSTORE DUP1 PUSH1 0x1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x37 PUSH1 0xF8 SHL DUP2 MSTORE POP DUP2 JUMP JUMPDEST PUSH2 0x50D PUSH1 0x40 MLOAD DUP1 PUSH1 0x40 ADD PUSH1 0x40 MSTORE DUP1 PUSH1 0x2 DUP2 MSTORE PUSH1 0x20 ADD PUSH2 0x199B PUSH1 0xF1 SHL DUP2 MSTORE POP DUP2 JUMP JUMPDEST PUSH2 0x50D PUSH1 0x40 MLOAD DUP1 PUSH1 0x40 ADD PUSH1 0x40 MSTORE DUP1 PUSH1 0x2 DUP2 MSTORE PUSH1 0x20 ADD PUSH2 0x3831 PUSH1 0xF0 SHL DUP2 MSTORE POP DUP2 JUMP JUMPDEST PUSH2 0x50D PUSH1 0x40 MLOAD DUP1 PUSH1 0x40 ADD PUSH1 0x40 MSTORE DUP1 PUSH1 0x2 DUP2 MSTORE PUSH1 0x20 ADD PUSH2 0x393 PUSH1 0xF4 SHL DUP2 MSTORE POP DUP2 JUMP JUMPDEST PUSH2 0x50D PUSH1 0x40 MLOAD DUP1 PUSH1 0x40 ADD PUSH1 0x40 MSTORE DUP1 PUSH1 0x2 DUP2 MSTORE PUSH1 0x20 ADD PUSH2 0x667 PUSH1 0xF3 SHL DUP2 MSTORE POP DUP2 JUMP JUMPDEST PUSH2 0x50D PUSH1 0x40 MLOAD DUP1 PUSH1 0x40 ADD PUSH1 0x40 MSTORE DUP1 PUSH1 0x2 DUP2 MSTORE PUSH1 0x20 ADD PUSH2 0x1A9B PUSH1 0xF1 SHL DUP2 MSTORE POP DUP2 JUMP JUMPDEST PUSH2 0x50D PUSH1 0x40 MLOAD DUP1 PUSH1 0x40 ADD PUSH1 0x40 MSTORE DUP1 PUSH1 0x2 DUP2 MSTORE PUSH1 0x20 ADD PUSH2 0x189B PUSH1 0xF1 SHL DUP2 MSTORE POP DUP2 JUMP JUMPDEST PUSH2 0x50D PUSH1 0x40 MLOAD DUP1 PUSH1 0x40 ADD PUSH1 0x40 MSTORE DUP1 PUSH1 0x2 DUP2 MSTORE PUSH1 0x20 ADD PUSH2 0x1B1B PUSH1 0xF1 SHL DUP2 MSTORE POP DUP2 JUMP JUMPDEST PUSH2 0x50D PUSH1 0x40 MLOAD DUP1 PUSH1 0x40 ADD PUSH1 0x40 MSTORE DUP1 PUSH1 0x2 DUP2 MSTORE PUSH1 0x20 ADD PUSH2 0x191B PUSH1 0xF1 SHL DUP2 MSTORE POP DUP2 JUMP JUMPDEST PUSH2 0x50D PUSH1 0x40 MLOAD DUP1 PUSH1 0x40 ADD PUSH1 0x40 MSTORE DUP1 PUSH1 0x2 DUP2 MSTORE PUSH1 0x20 ADD PUSH2 0x3735 PUSH1 0xF0 SHL DUP2 MSTORE POP DUP2 JUMP JUMPDEST PUSH1 0x20 DUP2 MSTORE PUSH0 DUP3 MLOAD DUP1 PUSH1 0x20 DUP5 ADD MSTORE DUP1 PUSH1 0x20 DUP6 ADD PUSH1 0x40 DUP6 ADD MCOPY PUSH0 PUSH1 0x40 DUP3 DUP6 ADD ADD MSTORE PUSH1 0x40 PUSH1 0x1F NOT PUSH1 0x1F DUP4 ADD AND DUP5 ADD ADD SWAP2 POP POP SWAP3 SWAP2 POP POP JUMP INVALID LOG2 PUSH5 0x6970667358 0x22 SLT KECCAK256 0x26 0xB4 DUP3 CALLDATASIZE SWAP5 SGT 0xDE SAR DUP15 PUSH22 0x820E1B953EE2B354E57E6DAB0068028573A6A38AE308 PUSH5 0x736F6C6343 STOP ADDMOD 0x1E STOP CALLER ","sourceMap":"205:9704:57:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2169:56;;;;;;;;;;;;;;;-1:-1:-1;;;2169:56:57;;;;;;;;;;;;:::i;:::-;;;;;;;;1163:41;;;;;;;;;;;;;;;-1:-1:-1;;;1163:41:57;;;;;1709:51;;;;;;;;;;;;;;;-1:-1:-1;;;1709:51:57;;;;;9203:62;;;;;;;;;;;;;;;-1:-1:-1;;;9203:62:57;;;;;9493:54;;;;;;;;;;;;;;;-1:-1:-1;;;9493:54:57;;;;;9321:57;;;;;;;;;;;;;;;-1:-1:-1;;;9321:57:57;;;;;5418:69;;;;;;;;;;;;;;;-1:-1:-1;;;5418:69:57;;;;;7579:48;;;;;;;;;;;;;;;-1:-1:-1;;;7579:48:57;;;;;447:63;;;;;;;;;;;;;;;-1:-1:-1;;;447:63:57;;;;;5063:72;;;;;;;;;;;;;;;-1:-1:-1;;;5063:72:57;;;;;701:67;;;;;;;;;;;;;;;-1:-1:-1;;;701:67:57;;;;;5641:49;;;;;;;;;;;;;;;-1:-1:-1;;;5641:49:57;;;;;2367:52;;;;;;;;;;;;;;;-1:-1:-1;;;2367:52:57;;;;;3844:76;;;;;;;;;;;;;;;-1:-1:-1;;;3844:76:57;;;;;1462:56;;;;;;;;;;;;;;;-1:-1:-1;;;1462:56:57;;;;;2677:49;;;;;;;;;;;;;;;-1:-1:-1;;;2677:49:57;;;;;7891:55;;;;;;;;;;;;;;;-1:-1:-1;;;7891:55:57;;;;;2468:59;;;;;;;;;;;;;;;-1:-1:-1;;;2468:59:57;;;;;6834:64;;;;;;;;;;;;;;;-1:-1:-1;;;6834:64:57;;;;;330:55;;;;;;;;;;;;;;;-1:-1:-1;;;330:55:57;;;;;3417:58;;;;;;;;;;;;;;;-1:-1:-1;;;3417:58:57;;;;;3751:56;;;;;;;;;;;;;;;-1:-1:-1;;;3751:56:57;;;;;8879:57;;;;;;;;;;;;;;;-1:-1:-1;;;8879:57:57;;;;;3332:51;;;;;;;;;;;;;;;-1:-1:-1;;;3332:51:57;;;;;842:46;;;;;;;;;;;;;;;-1:-1:-1;;;842:46:57;;;;;2859:49;;;;;;;;;;;;;;;-1:-1:-1;;;2859:49:57;;;;;3023:46;;;;;;;;;;;;;;;-1:-1:-1;;;3023:46:57;;;;;2054:63;;;;;;;;;;;;;;;-1:-1:-1;;;2054:63:57;;;;;1053:58;;;;;;;;;;;;;;;-1:-1:-1;;;1053:58:57;;;;;1239;;;;;;;;;;;;;;;-1:-1:-1;;;1239:58:57;;;;;5898:51;;;;;;;;;;;;;;;-1:-1:-1;;;5898:51:57;;;;;6137:50;;;;;;;;;;;;;;;-1:-1:-1;;;6137:50:57;;;;;5803:56;;;;;;;;;;;;;;;-1:-1:-1;;;5803:56:57;;;;;3112:44;;;;;;;;;;;;;;;-1:-1:-1;;;3112:44:57;;;;;4546:67;;;;;;;;;;;;;;;-1:-1:-1;;;4546:67:57;;;;;5539:59;;;;;;;;;;;;;;;-1:-1:-1;;;5539:59:57;;;;;4689:56;;;;;;;;;;;;;;;-1:-1:-1;;;4689:56:57;;;;;2277:55;;;;;;;;;;;;;;;-1:-1:-1;;;2277:55:57;;;;;1816:54;;;;;;;;;;;;;;;-1:-1:-1;;;1816:54:57;;;;;2583:57;;;;;;;;;;;;;;;-1:-1:-1;;;2583:57:57;;;;;1581:63;;;;;;;;;;;;;;;-1:-1:-1;;;1581:63:57;;;;;6617;;;;;;;;;;;;;;;-1:-1:-1;;;6617:63:57;;;;;5305:61;;;;;;;;;;;;;;;-1:-1:-1;;;5305:61:57;;;;;3641:65;;;;;;;;;;;;;;;-1:-1:-1;;;3641:65:57;;;;;4110:67;;;;;;;;;;;;;;;-1:-1:-1;;;4110:67:57;;;;;9815:48;;;;;;;;;;;;;;;-1:-1:-1;;;9815:48:57;;;;;8633:53;;;;;;;;;;;;;;;-1:-1:-1;;;8633:53:57;;;;;7671:62;;;;;;;;;;;;;;;-1:-1:-1;;;7671:62:57;;;;;6410:57;;;;;;;;;;;;;;;-1:-1:-1;;;6410:57:57;;;;;5983:66;;;;;;;;;;;;;;;-1:-1:-1;;;5983:66:57;;;;;5192:63;;;;;;;;;;;;;;;-1:-1:-1;;;5192:63:57;;;;;7150:47;;;;;;;;;;;;;;;-1:-1:-1;;;7150:47:57;;;;;6948:41;;;;;;;;;;;;;;;-1:-1:-1;;;6948:41:57;;;;;4951:53;;;;;;;;;;;;;;;-1:-1:-1;;;4951:53:57;;;;;1362:47;;;;;;;;;;;;;;;-1:-1:-1;;;1362:47:57;;;;;8559;;;;;;;;;;;;;;;-1:-1:-1;;;8559:47:57;;;;;7377:52;;;;;;;;;;;;;;;-1:-1:-1;;;7377:52:57;;;;;7791;;;;;;;;;;;;;;;-1:-1:-1;;;7791:52:57;;;;;9097:58;;;;;;;;;;;;;;;-1:-1:-1;;;9097:58:57;;;;;2778:49;;;;;;;;;;;;;;;-1:-1:-1;;;2778:49:57;;;;;224:50;;;;;;;;;;;;;;;-1:-1:-1;;;224:50:57;;;;;5722:49;;;;;;;;;;;;;;;-1:-1:-1;;;5722:49:57;;;;;4818:58;;;;;;;;;;;;;;;-1:-1:-1;;;4818:58:57;;;;;579;;;;;;;;;;;;;;;-1:-1:-1;;;579:58:57;;;;;3222:44;;;;;;;;;;;;;;;-1:-1:-1;;;3222:44:57;;;;;3516:63;;;;;;;;;;;;;;;-1:-1:-1;;;3516:63:57;;;;;6328:51;;;;;;;;;;;;;;;-1:-1:-1;;;6328:51:57;;;;;8281:56;;;;;;;;;;;;;;;-1:-1:-1;;;8281:56:57;;;;;8483:48;;;;;;;;;;;;;;;-1:-1:-1;;;8483:48:57;;;;;6504:64;;;;;;;;;;;;;;;-1:-1:-1;;;6504:64:57;;;;;8973:72;;;;;;;;;;;;;;;-1:-1:-1;;;8973:72:57;;;;;8804:46;;;;;;;;;;;;;;;-1:-1:-1;;;8804:46:57;;;;;8399:52;;;;;;;;;;;;;;;-1:-1:-1;;;8399:52:57;;;;;8092:51;;;;;;;;;;;;;;;-1:-1:-1;;;8092:51:57;;;;;7487:48;;;;;;;;;;;;;;;-1:-1:-1;;;7487:48:57;;;;;6731:57;;;;;;;;;;;;;;;-1:-1:-1;;;6731:57:57;;;;;4403:54;;;;;;;;;;;;;;;-1:-1:-1;;;4403:54:57;;;;;7997:50;;;;;;;;;;;;;;;-1:-1:-1;;;7997:50:57;;;;;7036:51;;;;;;;;;;;;;;;-1:-1:-1;;;7036:51:57;;;;;9584:56;;;;;;;;;;;;;;;-1:-1:-1;;;9584:56:57;;;;;940:62;;;;;;;;;;;;;;;-1:-1:-1;;;940:62:57;;;;;3984:64;;;;;;;;;;;;;;;-1:-1:-1;;;3984:64:57;;;;;8719:51;;;;;;;;;;;;;;;-1:-1:-1;;;8719:51:57;;;;;9713;;;;;;;;;;;;;;;-1:-1:-1;;;9713:51:57;;;;;4250:69;;;;;;;;;;;;;;;-1:-1:-1;;;4250:69:57;;;;;6227:59;;;;;;;;;;;;;;;-1:-1:-1;;;6227:59:57;;;;;1926:53;;;;;;;;;;;;;;;-1:-1:-1;;;1926:53:57;;;;;7256:46;;;;;;;;;;;;;;;-1:-1:-1;;;7256:46:57;;;;;2940:44;;;;;;;;;;;;;;;-1:-1:-1;;;2940:44:57;;;;;8174:54;;;;;;;;;;;;;;;-1:-1:-1;;;8174:54:57;;;;;14:426:87;171:2;160:9;153:21;134:4;203:6;197:13;246:6;241:2;230:9;226:18;219:34;305:6;300:2;292:6;288:15;283:2;272:9;268:18;262:50;361:1;356:2;347:6;336:9;332:22;328:31;321:42;431:2;424;420:7;415:2;407:6;403:15;399:29;388:9;384:45;380:54;372:62;;;14:426;;;;:::o"},"methodIdentifiers":{"ACL_ADMIN_CANNOT_BE_ZERO()":"fd1828ff","ADDRESSES_PROVIDER_ALREADY_ADDED()":"14dcfbbc","ADDRESSES_PROVIDER_NOT_REGISTERED()":"e02f07ee","AMOUNT_BIGGER_THAN_MAX_LOAN_SIZE_STABLE()":"f07f6785","ASSET_NOT_BORROWABLE_IN_ISOLATION()":"8596aad5","ASSET_NOT_LISTED()":"cd23367c","BORROWING_NOT_ENABLED()":"4ef999ff","BORROW_CAP_EXCEEDED()":"2eed17e8","BRIDGE_PROTOCOL_FEE_INVALID()":"7aa0767e","CALLER_MUST_BE_POOL()":"471df685","CALLER_NOT_ASSET_LISTING_OR_POOL_ADMIN()":"2c8e3b4c","CALLER_NOT_ATOKEN()":"a2e976c6","CALLER_NOT_BRIDGE()":"4f77647b","CALLER_NOT_EMERGENCY_ADMIN()":"485c8ff6","CALLER_NOT_POOL_ADMIN()":"ac753236","CALLER_NOT_POOL_CONFIGURATOR()":"61c111d2","CALLER_NOT_POOL_OR_EMERGENCY_ADMIN()":"26e7b312","CALLER_NOT_RISK_OR_POOL_ADMIN()":"b5e79366","COLLATERAL_BALANCE_IS_ZERO()":"4e01e3c1","COLLATERAL_CANNOT_BE_LIQUIDATED()":"895f7dc8","COLLATERAL_CANNOT_COVER_NEW_BORROW()":"e3fa20f5","COLLATERAL_SAME_AS_BORROWING_CURRENCY()":"8a344000","DEBT_CEILING_EXCEEDED()":"65a83bab","DEBT_CEILING_NOT_ZERO()":"e4dd8b74","EMODE_CATEGORY_RESERVED()":"f479ea11","FLASHLOAN_DISABLED()":"8aa3ca4c","FLASHLOAN_PREMIUM_INVALID()":"747fa556","HEALTH_FACTOR_LOWER_THAN_LIQUIDATION_THRESHOLD()":"366eb54d","HEALTH_FACTOR_NOT_BELOW_THRESHOLD()":"952633c5","INCONSISTENT_EMODE_CATEGORY()":"8f7722b2","INCONSISTENT_FLASHLOAN_PARAMS()":"73dea5e3","INCONSISTENT_PARAMS_LENGTH()":"bad8308c","INTEREST_RATE_REBALANCE_CONDITIONS_NOT_MET()":"2926c971","INVALID_ADDRESSES_PROVIDER()":"37930782","INVALID_ADDRESSES_PROVIDER_ID()":"60c3de80","INVALID_AMOUNT()":"fae82791","INVALID_BORROW_CAP()":"d6f9fcde","INVALID_BURN_AMOUNT()":"51267450","INVALID_DEBT_CEILING()":"dcc56db6","INVALID_DECIMALS()":"fa163a83","INVALID_EMODE_CATEGORY()":"a8c97853","INVALID_EMODE_CATEGORY_ASSIGNMENT()":"5d9c76c0","INVALID_EMODE_CATEGORY_PARAMS()":"47cf1523","INVALID_EXPIRATION()":"c08a1146","INVALID_FLASHLOAN_EXECUTOR_RETURN()":"7fea6f36","INVALID_INTEREST_RATE_MODE_SELECTED()":"89c5d45f","INVALID_LIQUIDATION_PROTOCOL_FEE()":"8eda46bd","INVALID_LIQ_BONUS()":"9527e9d9","INVALID_LIQ_THRESHOLD()":"dd1dd95f","INVALID_LTV()":"99ce53f3","INVALID_MINT_AMOUNT()":"abd351b1","INVALID_OPTIMAL_STABLE_TO_TOTAL_DEBT_RATIO()":"c899301a","INVALID_OPTIMAL_USAGE_RATIO()":"4e3aed37","INVALID_RESERVE_FACTOR()":"a4868dca","INVALID_RESERVE_INDEX()":"d1cd8b1d","INVALID_RESERVE_PARAMS()":"335763de","INVALID_SIGNATURE()":"a3402a38","INVALID_SUPPLY_CAP()":"26bbd053","INVALID_UNBACKED_MINT_CAP()":"47ba93d8","LTV_VALIDATION_FAILED()":"b87041c2","NOT_CONTRACT()":"11d7b006","NOT_ENOUGH_AVAILABLE_USER_BALANCE()":"b7f5e224","NO_DEBT_OF_SELECTED_TYPE()":"dc191bd9","NO_EXPLICIT_AMOUNT_TO_REPAY_ON_BEHALF()":"712f536a","NO_MORE_RESERVES_ALLOWED()":"76ae8fca","NO_OUTSTANDING_STABLE_DEBT()":"74459b14","NO_OUTSTANDING_VARIABLE_DEBT()":"b4a45730","OPERATION_NOT_SUPPORTED()":"8b8b98d7","POOL_ADDRESSES_DO_NOT_MATCH()":"1abbb001","PRICE_ORACLE_SENTINEL_CHECK_FAILED()":"c8638082","RESERVE_ALREADY_ADDED()":"12dcade8","RESERVE_ALREADY_INITIALIZED()":"d9adda85","RESERVE_DEBT_NOT_ZERO()":"e981483a","RESERVE_FROZEN()":"6cd3cfbc","RESERVE_INACTIVE()":"52ba9dbe","RESERVE_LIQUIDITY_NOT_ZERO()":"084dfa0d","RESERVE_PAUSED()":"b68774e9","SILOED_BORROWING_VIOLATION()":"de24948c","SPECIFIED_CURRENCY_NOT_BORROWED_BY_USER()":"22a73446","STABLE_BORROWING_ENABLED()":"198d6a6b","STABLE_BORROWING_NOT_ENABLED()":"4d86f393","STABLE_DEBT_NOT_ZERO()":"65e7ef4c","SUPPLY_CAP_EXCEEDED()":"b0510054","UNBACKED_MINT_CAP_EXCEEDED()":"6b3f7cc7","UNDERLYING_BALANCE_ZERO()":"a2797c80","UNDERLYING_CANNOT_BE_RESCUED()":"ab883ca0","UNDERLYING_CLAIMABLE_RIGHTS_NOT_ZERO()":"94f9fd8a","USER_IN_ISOLATION_MODE_OR_LTV_ZERO()":"480702ae","VARIABLE_DEBT_SUPPLY_NOT_ZERO()":"f10727db","ZERO_ADDRESS_NOT_VALID()":"d14bb17a"}},"metadata":"{\"compiler\":{\"version\":\"0.8.30+commit.73712a01\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"inputs\":[],\"name\":\"ACL_ADMIN_CANNOT_BE_ZERO\",\"outputs\":[{\"internalType\":\"string\",\"name\":\"\",\"type\":\"string\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"ADDRESSES_PROVIDER_ALREADY_ADDED\",\"outputs\":[{\"internalType\":\"string\",\"name\":\"\",\"type\":\"string\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"ADDRESSES_PROVIDER_NOT_REGISTERED\",\"outputs\":[{\"internalType\":\"string\",\"name\":\"\",\"type\":\"string\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"AMOUNT_BIGGER_THAN_MAX_LOAN_SIZE_STABLE\",\"outputs\":[{\"internalType\":\"string\",\"name\":\"\",\"type\":\"string\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"ASSET_NOT_BORROWABLE_IN_ISOLATION\",\"outputs\":[{\"internalType\":\"string\",\"name\":\"\",\"type\":\"string\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"ASSET_NOT_LISTED\",\"outputs\":[{\"internalType\":\"string\",\"name\":\"\",\"type\":\"string\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"BORROWING_NOT_ENABLED\",\"outputs\":[{\"internalType\":\"string\",\"name\":\"\",\"type\":\"string\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"BORROW_CAP_EXCEEDED\",\"outputs\":[{\"internalType\":\"string\",\"name\":\"\",\"type\":\"string\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"BRIDGE_PROTOCOL_FEE_INVALID\",\"outputs\":[{\"internalType\":\"string\",\"name\":\"\",\"type\":\"string\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"CALLER_MUST_BE_POOL\",\"outputs\":[{\"internalType\":\"string\",\"name\":\"\",\"type\":\"string\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"CALLER_NOT_ASSET_LISTING_OR_POOL_ADMIN\",\"outputs\":[{\"internalType\":\"string\",\"name\":\"\",\"type\":\"string\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"CALLER_NOT_ATOKEN\",\"outputs\":[{\"internalType\":\"string\",\"name\":\"\",\"type\":\"string\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"CALLER_NOT_BRIDGE\",\"outputs\":[{\"internalType\":\"string\",\"name\":\"\",\"type\":\"string\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"CALLER_NOT_EMERGENCY_ADMIN\",\"outputs\":[{\"internalType\":\"string\",\"name\":\"\",\"type\":\"string\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"CALLER_NOT_POOL_ADMIN\",\"outputs\":[{\"internalType\":\"string\",\"name\":\"\",\"type\":\"string\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"CALLER_NOT_POOL_CONFIGURATOR\",\"outputs\":[{\"internalType\":\"string\",\"name\":\"\",\"type\":\"string\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"CALLER_NOT_POOL_OR_EMERGENCY_ADMIN\",\"outputs\":[{\"internalType\":\"string\",\"name\":\"\",\"type\":\"string\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"CALLER_NOT_RISK_OR_POOL_ADMIN\",\"outputs\":[{\"internalType\":\"string\",\"name\":\"\",\"type\":\"string\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"COLLATERAL_BALANCE_IS_ZERO\",\"outputs\":[{\"internalType\":\"string\",\"name\":\"\",\"type\":\"string\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"COLLATERAL_CANNOT_BE_LIQUIDATED\",\"outputs\":[{\"internalType\":\"string\",\"name\":\"\",\"type\":\"string\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"COLLATERAL_CANNOT_COVER_NEW_BORROW\",\"outputs\":[{\"internalType\":\"string\",\"name\":\"\",\"type\":\"string\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"COLLATERAL_SAME_AS_BORROWING_CURRENCY\",\"outputs\":[{\"internalType\":\"string\",\"name\":\"\",\"type\":\"string\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"DEBT_CEILING_EXCEEDED\",\"outputs\":[{\"internalType\":\"string\",\"name\":\"\",\"type\":\"string\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"DEBT_CEILING_NOT_ZERO\",\"outputs\":[{\"internalType\":\"string\",\"name\":\"\",\"type\":\"string\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"EMODE_CATEGORY_RESERVED\",\"outputs\":[{\"internalType\":\"string\",\"name\":\"\",\"type\":\"string\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"FLASHLOAN_DISABLED\",\"outputs\":[{\"internalType\":\"string\",\"name\":\"\",\"type\":\"string\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"FLASHLOAN_PREMIUM_INVALID\",\"outputs\":[{\"internalType\":\"string\",\"name\":\"\",\"type\":\"string\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"HEALTH_FACTOR_LOWER_THAN_LIQUIDATION_THRESHOLD\",\"outputs\":[{\"internalType\":\"string\",\"name\":\"\",\"type\":\"string\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"HEALTH_FACTOR_NOT_BELOW_THRESHOLD\",\"outputs\":[{\"internalType\":\"string\",\"name\":\"\",\"type\":\"string\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"INCONSISTENT_EMODE_CATEGORY\",\"outputs\":[{\"internalType\":\"string\",\"name\":\"\",\"type\":\"string\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"INCONSISTENT_FLASHLOAN_PARAMS\",\"outputs\":[{\"internalType\":\"string\",\"name\":\"\",\"type\":\"string\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"INCONSISTENT_PARAMS_LENGTH\",\"outputs\":[{\"internalType\":\"string\",\"name\":\"\",\"type\":\"string\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"INTEREST_RATE_REBALANCE_CONDITIONS_NOT_MET\",\"outputs\":[{\"internalType\":\"string\",\"name\":\"\",\"type\":\"string\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"INVALID_ADDRESSES_PROVIDER\",\"outputs\":[{\"internalType\":\"string\",\"name\":\"\",\"type\":\"string\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"INVALID_ADDRESSES_PROVIDER_ID\",\"outputs\":[{\"internalType\":\"string\",\"name\":\"\",\"type\":\"string\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"INVALID_AMOUNT\",\"outputs\":[{\"internalType\":\"string\",\"name\":\"\",\"type\":\"string\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"INVALID_BORROW_CAP\",\"outputs\":[{\"internalType\":\"string\",\"name\":\"\",\"type\":\"string\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"INVALID_BURN_AMOUNT\",\"outputs\":[{\"internalType\":\"string\",\"name\":\"\",\"type\":\"string\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"INVALID_DEBT_CEILING\",\"outputs\":[{\"internalType\":\"string\",\"name\":\"\",\"type\":\"string\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"INVALID_DECIMALS\",\"outputs\":[{\"internalType\":\"string\",\"name\":\"\",\"type\":\"string\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"INVALID_EMODE_CATEGORY\",\"outputs\":[{\"internalType\":\"string\",\"name\":\"\",\"type\":\"string\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"INVALID_EMODE_CATEGORY_ASSIGNMENT\",\"outputs\":[{\"internalType\":\"string\",\"name\":\"\",\"type\":\"string\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"INVALID_EMODE_CATEGORY_PARAMS\",\"outputs\":[{\"internalType\":\"string\",\"name\":\"\",\"type\":\"string\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"INVALID_EXPIRATION\",\"outputs\":[{\"internalType\":\"string\",\"name\":\"\",\"type\":\"string\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"INVALID_FLASHLOAN_EXECUTOR_RETURN\",\"outputs\":[{\"internalType\":\"string\",\"name\":\"\",\"type\":\"string\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"INVALID_INTEREST_RATE_MODE_SELECTED\",\"outputs\":[{\"internalType\":\"string\",\"name\":\"\",\"type\":\"string\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"INVALID_LIQUIDATION_PROTOCOL_FEE\",\"outputs\":[{\"internalType\":\"string\",\"name\":\"\",\"type\":\"string\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"INVALID_LIQ_BONUS\",\"outputs\":[{\"internalType\":\"string\",\"name\":\"\",\"type\":\"string\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"INVALID_LIQ_THRESHOLD\",\"outputs\":[{\"internalType\":\"string\",\"name\":\"\",\"type\":\"string\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"INVALID_LTV\",\"outputs\":[{\"internalType\":\"string\",\"name\":\"\",\"type\":\"string\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"INVALID_MINT_AMOUNT\",\"outputs\":[{\"internalType\":\"string\",\"name\":\"\",\"type\":\"string\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"INVALID_OPTIMAL_STABLE_TO_TOTAL_DEBT_RATIO\",\"outputs\":[{\"internalType\":\"string\",\"name\":\"\",\"type\":\"string\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"INVALID_OPTIMAL_USAGE_RATIO\",\"outputs\":[{\"internalType\":\"string\",\"name\":\"\",\"type\":\"string\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"INVALID_RESERVE_FACTOR\",\"outputs\":[{\"internalType\":\"string\",\"name\":\"\",\"type\":\"string\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"INVALID_RESERVE_INDEX\",\"outputs\":[{\"internalType\":\"string\",\"name\":\"\",\"type\":\"string\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"INVALID_RESERVE_PARAMS\",\"outputs\":[{\"internalType\":\"string\",\"name\":\"\",\"type\":\"string\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"INVALID_SIGNATURE\",\"outputs\":[{\"internalType\":\"string\",\"name\":\"\",\"type\":\"string\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"INVALID_SUPPLY_CAP\",\"outputs\":[{\"internalType\":\"string\",\"name\":\"\",\"type\":\"string\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"INVALID_UNBACKED_MINT_CAP\",\"outputs\":[{\"internalType\":\"string\",\"name\":\"\",\"type\":\"string\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"LTV_VALIDATION_FAILED\",\"outputs\":[{\"internalType\":\"string\",\"name\":\"\",\"type\":\"string\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"NOT_CONTRACT\",\"outputs\":[{\"internalType\":\"string\",\"name\":\"\",\"type\":\"string\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"NOT_ENOUGH_AVAILABLE_USER_BALANCE\",\"outputs\":[{\"internalType\":\"string\",\"name\":\"\",\"type\":\"string\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"NO_DEBT_OF_SELECTED_TYPE\",\"outputs\":[{\"internalType\":\"string\",\"name\":\"\",\"type\":\"string\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"NO_EXPLICIT_AMOUNT_TO_REPAY_ON_BEHALF\",\"outputs\":[{\"internalType\":\"string\",\"name\":\"\",\"type\":\"string\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"NO_MORE_RESERVES_ALLOWED\",\"outputs\":[{\"internalType\":\"string\",\"name\":\"\",\"type\":\"string\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"NO_OUTSTANDING_STABLE_DEBT\",\"outputs\":[{\"internalType\":\"string\",\"name\":\"\",\"type\":\"string\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"NO_OUTSTANDING_VARIABLE_DEBT\",\"outputs\":[{\"internalType\":\"string\",\"name\":\"\",\"type\":\"string\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"OPERATION_NOT_SUPPORTED\",\"outputs\":[{\"internalType\":\"string\",\"name\":\"\",\"type\":\"string\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"POOL_ADDRESSES_DO_NOT_MATCH\",\"outputs\":[{\"internalType\":\"string\",\"name\":\"\",\"type\":\"string\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"PRICE_ORACLE_SENTINEL_CHECK_FAILED\",\"outputs\":[{\"internalType\":\"string\",\"name\":\"\",\"type\":\"string\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"RESERVE_ALREADY_ADDED\",\"outputs\":[{\"internalType\":\"string\",\"name\":\"\",\"type\":\"string\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"RESERVE_ALREADY_INITIALIZED\",\"outputs\":[{\"internalType\":\"string\",\"name\":\"\",\"type\":\"string\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"RESERVE_DEBT_NOT_ZERO\",\"outputs\":[{\"internalType\":\"string\",\"name\":\"\",\"type\":\"string\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"RESERVE_FROZEN\",\"outputs\":[{\"internalType\":\"string\",\"name\":\"\",\"type\":\"string\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"RESERVE_INACTIVE\",\"outputs\":[{\"internalType\":\"string\",\"name\":\"\",\"type\":\"string\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"RESERVE_LIQUIDITY_NOT_ZERO\",\"outputs\":[{\"internalType\":\"string\",\"name\":\"\",\"type\":\"string\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"RESERVE_PAUSED\",\"outputs\":[{\"internalType\":\"string\",\"name\":\"\",\"type\":\"string\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"SILOED_BORROWING_VIOLATION\",\"outputs\":[{\"internalType\":\"string\",\"name\":\"\",\"type\":\"string\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"SPECIFIED_CURRENCY_NOT_BORROWED_BY_USER\",\"outputs\":[{\"internalType\":\"string\",\"name\":\"\",\"type\":\"string\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"STABLE_BORROWING_ENABLED\",\"outputs\":[{\"internalType\":\"string\",\"name\":\"\",\"type\":\"string\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"STABLE_BORROWING_NOT_ENABLED\",\"outputs\":[{\"internalType\":\"string\",\"name\":\"\",\"type\":\"string\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"STABLE_DEBT_NOT_ZERO\",\"outputs\":[{\"internalType\":\"string\",\"name\":\"\",\"type\":\"string\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"SUPPLY_CAP_EXCEEDED\",\"outputs\":[{\"internalType\":\"string\",\"name\":\"\",\"type\":\"string\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"UNBACKED_MINT_CAP_EXCEEDED\",\"outputs\":[{\"internalType\":\"string\",\"name\":\"\",\"type\":\"string\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"UNDERLYING_BALANCE_ZERO\",\"outputs\":[{\"internalType\":\"string\",\"name\":\"\",\"type\":\"string\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"UNDERLYING_CANNOT_BE_RESCUED\",\"outputs\":[{\"internalType\":\"string\",\"name\":\"\",\"type\":\"string\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"UNDERLYING_CLAIMABLE_RIGHTS_NOT_ZERO\",\"outputs\":[{\"internalType\":\"string\",\"name\":\"\",\"type\":\"string\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"USER_IN_ISOLATION_MODE_OR_LTV_ZERO\",\"outputs\":[{\"internalType\":\"string\",\"name\":\"\",\"type\":\"string\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"VARIABLE_DEBT_SUPPLY_NOT_ZERO\",\"outputs\":[{\"internalType\":\"string\",\"name\":\"\",\"type\":\"string\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"ZERO_ADDRESS_NOT_VALID\",\"outputs\":[{\"internalType\":\"string\",\"name\":\"\",\"type\":\"string\"}],\"stateMutability\":\"view\",\"type\":\"function\"}],\"devdoc\":{\"author\":\"Aave\",\"kind\":\"dev\",\"methods\":{},\"title\":\"Errors library\",\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{},\"notice\":\"Defines the error messages emitted by the different contracts of the Aave protocol\",\"version\":1}},\"settings\":{\"compilationTarget\":{\"contracts/dependencies/aave-v3/Errors.sol\":\"Errors\"},\"evmVersion\":\"prague\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"enabled\":true,\"runs\":200},\"remappings\":[]},\"sources\":{\"contracts/dependencies/aave-v3/Errors.sol\":{\"keccak256\":\"0x61757945ed506349f2cec8b99806124ef17f70644faba9860fb134df8ca34e86\",\"license\":\"BUSL-1.1\",\"urls\":[\"bzz-raw://a405589e8bb12568d3d4dbf936bcf40c43964170f3bbf380483e9df4d73f2cf7\",\"dweb:/ipfs/QmXCtAp2iom96rZnQWGDehxuPszgn6SMuB3mJcHzCq9uwx\"]}},\"version\":1}","storageLayout":{"storage":[],"types":null}}},"contracts/dependencies/aave-v3/IPool.sol":{"IPool":{"abi":[{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"reserve","type":"address"},{"indexed":true,"internalType":"address","name":"backer","type":"address"},{"indexed":false,"internalType":"uint256","name":"amount","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"fee","type":"uint256"}],"name":"BackUnbacked","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"reserve","type":"address"},{"indexed":false,"internalType":"address","name":"user","type":"address"},{"indexed":true,"internalType":"address","name":"onBehalfOf","type":"address"},{"indexed":false,"internalType":"uint256","name":"amount","type":"uint256"},{"indexed":false,"internalType":"enum DataTypes.InterestRateMode","name":"interestRateMode","type":"uint8"},{"indexed":false,"internalType":"uint256","name":"borrowRate","type":"uint256"},{"indexed":true,"internalType":"uint16","name":"referralCode","type":"uint16"}],"name":"Borrow","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"target","type":"address"},{"indexed":false,"internalType":"address","name":"initiator","type":"address"},{"indexed":true,"internalType":"address","name":"asset","type":"address"},{"indexed":false,"internalType":"uint256","name":"amount","type":"uint256"},{"indexed":false,"internalType":"enum DataTypes.InterestRateMode","name":"interestRateMode","type":"uint8"},{"indexed":false,"internalType":"uint256","name":"premium","type":"uint256"},{"indexed":true,"internalType":"uint16","name":"referralCode","type":"uint16"}],"name":"FlashLoan","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"asset","type":"address"},{"indexed":false,"internalType":"uint256","name":"totalDebt","type":"uint256"}],"name":"IsolationModeTotalDebtUpdated","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"collateralAsset","type":"address"},{"indexed":true,"internalType":"address","name":"debtAsset","type":"address"},{"indexed":true,"internalType":"address","name":"user","type":"address"},{"indexed":false,"internalType":"uint256","name":"debtToCover","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"liquidatedCollateralAmount","type":"uint256"},{"indexed":false,"internalType":"address","name":"liquidator","type":"address"},{"indexed":false,"internalType":"bool","name":"receiveAToken","type":"bool"}],"name":"LiquidationCall","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"reserve","type":"address"},{"indexed":false,"internalType":"address","name":"user","type":"address"},{"indexed":true,"internalType":"address","name":"onBehalfOf","type":"address"},{"indexed":false,"internalType":"uint256","name":"amount","type":"uint256"},{"indexed":true,"internalType":"uint16","name":"referralCode","type":"uint16"}],"name":"MintUnbacked","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"reserve","type":"address"},{"indexed":false,"internalType":"uint256","name":"amountMinted","type":"uint256"}],"name":"MintedToTreasury","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"reserve","type":"address"},{"indexed":true,"internalType":"address","name":"user","type":"address"}],"name":"RebalanceStableBorrowRate","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"reserve","type":"address"},{"indexed":true,"internalType":"address","name":"user","type":"address"},{"indexed":true,"internalType":"address","name":"repayer","type":"address"},{"indexed":false,"internalType":"uint256","name":"amount","type":"uint256"},{"indexed":false,"internalType":"bool","name":"useATokens","type":"bool"}],"name":"Repay","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"reserve","type":"address"},{"indexed":false,"internalType":"uint256","name":"liquidityRate","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"stableBorrowRate","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"variableBorrowRate","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"liquidityIndex","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"variableBorrowIndex","type":"uint256"}],"name":"ReserveDataUpdated","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"reserve","type":"address"},{"indexed":true,"internalType":"address","name":"user","type":"address"}],"name":"ReserveUsedAsCollateralDisabled","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"reserve","type":"address"},{"indexed":true,"internalType":"address","name":"user","type":"address"}],"name":"ReserveUsedAsCollateralEnabled","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"reserve","type":"address"},{"indexed":false,"internalType":"address","name":"user","type":"address"},{"indexed":true,"internalType":"address","name":"onBehalfOf","type":"address"},{"indexed":false,"internalType":"uint256","name":"amount","type":"uint256"},{"indexed":true,"internalType":"uint16","name":"referralCode","type":"uint16"}],"name":"Supply","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"reserve","type":"address"},{"indexed":true,"internalType":"address","name":"user","type":"address"},{"indexed":false,"internalType":"enum DataTypes.InterestRateMode","name":"interestRateMode","type":"uint8"}],"name":"SwapBorrowRateMode","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"user","type":"address"},{"indexed":false,"internalType":"uint8","name":"categoryId","type":"uint8"}],"name":"UserEModeSet","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"reserve","type":"address"},{"indexed":true,"internalType":"address","name":"user","type":"address"},{"indexed":true,"internalType":"address","name":"to","type":"address"},{"indexed":false,"internalType":"uint256","name":"amount","type":"uint256"}],"name":"Withdraw","type":"event"},{"inputs":[],"name":"ADDRESSES_PROVIDER","outputs":[{"internalType":"contract IPoolAddressesProvider","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"BRIDGE_PROTOCOL_FEE","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"FLASHLOAN_PREMIUM_TOTAL","outputs":[{"internalType":"uint128","name":"","type":"uint128"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"FLASHLOAN_PREMIUM_TO_PROTOCOL","outputs":[{"internalType":"uint128","name":"","type":"uint128"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"MAX_NUMBER_RESERVES","outputs":[{"internalType":"uint16","name":"","type":"uint16"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"MAX_STABLE_RATE_BORROW_SIZE_PERCENT","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"asset","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"},{"internalType":"uint256","name":"fee","type":"uint256"}],"name":"backUnbacked","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"asset","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"},{"internalType":"uint256","name":"interestRateMode","type":"uint256"},{"internalType":"uint16","name":"referralCode","type":"uint16"},{"internalType":"address","name":"onBehalfOf","type":"address"}],"name":"borrow","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint8","name":"id","type":"uint8"},{"components":[{"internalType":"uint16","name":"ltv","type":"uint16"},{"internalType":"uint16","name":"liquidationThreshold","type":"uint16"},{"internalType":"uint16","name":"liquidationBonus","type":"uint16"},{"internalType":"address","name":"priceSource","type":"address"},{"internalType":"string","name":"label","type":"string"}],"internalType":"struct DataTypes.EModeCategory","name":"config","type":"tuple"}],"name":"configureEModeCategory","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"asset","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"},{"internalType":"address","name":"onBehalfOf","type":"address"},{"internalType":"uint16","name":"referralCode","type":"uint16"}],"name":"deposit","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"asset","type":"address"}],"name":"dropReserve","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"asset","type":"address"},{"internalType":"address","name":"from","type":"address"},{"internalType":"address","name":"to","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"},{"internalType":"uint256","name":"balanceFromBefore","type":"uint256"},{"internalType":"uint256","name":"balanceToBefore","type":"uint256"}],"name":"finalizeTransfer","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"receiverAddress","type":"address"},{"internalType":"address[]","name":"assets","type":"address[]"},{"internalType":"uint256[]","name":"amounts","type":"uint256[]"},{"internalType":"uint256[]","name":"interestRateModes","type":"uint256[]"},{"internalType":"address","name":"onBehalfOf","type":"address"},{"internalType":"bytes","name":"params","type":"bytes"},{"internalType":"uint16","name":"referralCode","type":"uint16"}],"name":"flashLoan","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"receiverAddress","type":"address"},{"internalType":"address","name":"asset","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"},{"internalType":"bytes","name":"params","type":"bytes"},{"internalType":"uint16","name":"referralCode","type":"uint16"}],"name":"flashLoanSimple","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"asset","type":"address"}],"name":"getConfiguration","outputs":[{"components":[{"internalType":"uint256","name":"data","type":"uint256"}],"internalType":"struct DataTypes.ReserveConfigurationMap","name":"","type":"tuple"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint8","name":"id","type":"uint8"}],"name":"getEModeCategoryData","outputs":[{"components":[{"internalType":"uint16","name":"ltv","type":"uint16"},{"internalType":"uint16","name":"liquidationThreshold","type":"uint16"},{"internalType":"uint16","name":"liquidationBonus","type":"uint16"},{"internalType":"address","name":"priceSource","type":"address"},{"internalType":"string","name":"label","type":"string"}],"internalType":"struct DataTypes.EModeCategory","name":"","type":"tuple"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint16","name":"id","type":"uint16"}],"name":"getReserveAddressById","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"asset","type":"address"}],"name":"getReserveData","outputs":[{"components":[{"components":[{"internalType":"uint256","name":"data","type":"uint256"}],"internalType":"struct DataTypes.ReserveConfigurationMap","name":"configuration","type":"tuple"},{"internalType":"uint128","name":"liquidityIndex","type":"uint128"},{"internalType":"uint128","name":"currentLiquidityRate","type":"uint128"},{"internalType":"uint128","name":"variableBorrowIndex","type":"uint128"},{"internalType":"uint128","name":"currentVariableBorrowRate","type":"uint128"},{"internalType":"uint128","name":"currentStableBorrowRate","type":"uint128"},{"internalType":"uint40","name":"lastUpdateTimestamp","type":"uint40"},{"internalType":"uint16","name":"id","type":"uint16"},{"internalType":"address","name":"aTokenAddress","type":"address"},{"internalType":"address","name":"stableDebtTokenAddress","type":"address"},{"internalType":"address","name":"variableDebtTokenAddress","type":"address"},{"internalType":"address","name":"interestRateStrategyAddress","type":"address"},{"internalType":"uint128","name":"accruedToTreasury","type":"uint128"},{"internalType":"uint128","name":"unbacked","type":"uint128"},{"internalType":"uint128","name":"isolationModeTotalDebt","type":"uint128"}],"internalType":"struct DataTypes.ReserveData","name":"","type":"tuple"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"asset","type":"address"}],"name":"getReserveNormalizedIncome","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"asset","type":"address"}],"name":"getReserveNormalizedVariableDebt","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"getReservesList","outputs":[{"internalType":"address[]","name":"","type":"address[]"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"user","type":"address"}],"name":"getUserAccountData","outputs":[{"internalType":"uint256","name":"totalCollateralBase","type":"uint256"},{"internalType":"uint256","name":"totalDebtBase","type":"uint256"},{"internalType":"uint256","name":"availableBorrowsBase","type":"uint256"},{"internalType":"uint256","name":"currentLiquidationThreshold","type":"uint256"},{"internalType":"uint256","name":"ltv","type":"uint256"},{"internalType":"uint256","name":"healthFactor","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"user","type":"address"}],"name":"getUserConfiguration","outputs":[{"components":[{"internalType":"uint256","name":"data","type":"uint256"}],"internalType":"struct DataTypes.UserConfigurationMap","name":"","type":"tuple"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"user","type":"address"}],"name":"getUserEMode","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"asset","type":"address"},{"internalType":"address","name":"aTokenAddress","type":"address"},{"internalType":"address","name":"stableDebtAddress","type":"address"},{"internalType":"address","name":"variableDebtAddress","type":"address"},{"internalType":"address","name":"interestRateStrategyAddress","type":"address"}],"name":"initReserve","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"collateralAsset","type":"address"},{"internalType":"address","name":"debtAsset","type":"address"},{"internalType":"address","name":"user","type":"address"},{"internalType":"uint256","name":"debtToCover","type":"uint256"},{"internalType":"bool","name":"receiveAToken","type":"bool"}],"name":"liquidationCall","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address[]","name":"assets","type":"address[]"}],"name":"mintToTreasury","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"asset","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"},{"internalType":"address","name":"onBehalfOf","type":"address"},{"internalType":"uint16","name":"referralCode","type":"uint16"}],"name":"mintUnbacked","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"asset","type":"address"},{"internalType":"address","name":"user","type":"address"}],"name":"rebalanceStableBorrowRate","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"asset","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"},{"internalType":"uint256","name":"interestRateMode","type":"uint256"},{"internalType":"address","name":"onBehalfOf","type":"address"}],"name":"repay","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"asset","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"},{"internalType":"uint256","name":"interestRateMode","type":"uint256"}],"name":"repayWithATokens","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"asset","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"},{"internalType":"uint256","name":"interestRateMode","type":"uint256"},{"internalType":"address","name":"onBehalfOf","type":"address"},{"internalType":"uint256","name":"deadline","type":"uint256"},{"internalType":"uint8","name":"permitV","type":"uint8"},{"internalType":"bytes32","name":"permitR","type":"bytes32"},{"internalType":"bytes32","name":"permitS","type":"bytes32"}],"name":"repayWithPermit","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"token","type":"address"},{"internalType":"address","name":"to","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"rescueTokens","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"asset","type":"address"}],"name":"resetIsolationModeTotalDebt","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"asset","type":"address"},{"components":[{"internalType":"uint256","name":"data","type":"uint256"}],"internalType":"struct DataTypes.ReserveConfigurationMap","name":"configuration","type":"tuple"}],"name":"setConfiguration","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"asset","type":"address"},{"internalType":"address","name":"rateStrategyAddress","type":"address"}],"name":"setReserveInterestRateStrategyAddress","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint8","name":"categoryId","type":"uint8"}],"name":"setUserEMode","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"asset","type":"address"},{"internalType":"bool","name":"useAsCollateral","type":"bool"}],"name":"setUserUseReserveAsCollateral","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"asset","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"},{"internalType":"address","name":"onBehalfOf","type":"address"},{"internalType":"uint16","name":"referralCode","type":"uint16"}],"name":"supply","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"asset","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"},{"internalType":"address","name":"onBehalfOf","type":"address"},{"internalType":"uint16","name":"referralCode","type":"uint16"},{"internalType":"uint256","name":"deadline","type":"uint256"},{"internalType":"uint8","name":"permitV","type":"uint8"},{"internalType":"bytes32","name":"permitR","type":"bytes32"},{"internalType":"bytes32","name":"permitS","type":"bytes32"}],"name":"supplyWithPermit","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"asset","type":"address"},{"internalType":"uint256","name":"interestRateMode","type":"uint256"}],"name":"swapBorrowRateMode","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"bridgeProtocolFee","type":"uint256"}],"name":"updateBridgeProtocolFee","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint128","name":"flashLoanPremiumTotal","type":"uint128"},{"internalType":"uint128","name":"flashLoanPremiumToProtocol","type":"uint128"}],"name":"updateFlashloanPremiums","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"asset","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"},{"internalType":"address","name":"to","type":"address"}],"name":"withdraw","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"nonpayable","type":"function"}],"evm":{"bytecode":{"functionDebugData":{},"generatedSources":[],"linkReferences":{},"object":"","opcodes":"","sourceMap":""},"deployedBytecode":{"functionDebugData":{},"generatedSources":[],"immutableReferences":{},"linkReferences":{},"object":"","opcodes":"","sourceMap":""},"methodIdentifiers":{"ADDRESSES_PROVIDER()":"0542975c","BRIDGE_PROTOCOL_FEE()":"272d9072","FLASHLOAN_PREMIUM_TOTAL()":"074b2e43","FLASHLOAN_PREMIUM_TO_PROTOCOL()":"6a99c036","MAX_NUMBER_RESERVES()":"f8119d51","MAX_STABLE_RATE_BORROW_SIZE_PERCENT()":"e82fec2f","backUnbacked(address,uint256,uint256)":"d65dc7a1","borrow(address,uint256,uint256,uint16,address)":"a415bcad","configureEModeCategory(uint8,(uint16,uint16,uint16,address,string))":"d579ea7d","deposit(address,uint256,address,uint16)":"e8eda9df","dropReserve(address)":"63c9b860","finalizeTransfer(address,address,address,uint256,uint256,uint256)":"d5ed3933","flashLoan(address,address[],uint256[],uint256[],address,bytes,uint16)":"ab9c4b5d","flashLoanSimple(address,address,uint256,bytes,uint16)":"42b0b77c","getConfiguration(address)":"c44b11f7","getEModeCategoryData(uint8)":"6c6f6ae1","getReserveAddressById(uint16)":"52751797","getReserveData(address)":"35ea6a75","getReserveNormalizedIncome(address)":"d15e0053","getReserveNormalizedVariableDebt(address)":"386497fd","getReservesList()":"d1946dbc","getUserAccountData(address)":"bf92857c","getUserConfiguration(address)":"4417a583","getUserEMode(address)":"eddf1b79","initReserve(address,address,address,address,address)":"7a708e92","liquidationCall(address,address,address,uint256,bool)":"00a718a9","mintToTreasury(address[])":"9cd19996","mintUnbacked(address,uint256,address,uint16)":"69a933a5","rebalanceStableBorrowRate(address,address)":"cd112382","repay(address,uint256,uint256,address)":"573ade81","repayWithATokens(address,uint256,uint256)":"2dad97d4","repayWithPermit(address,uint256,uint256,address,uint256,uint8,bytes32,bytes32)":"ee3e210b","rescueTokens(address,address,uint256)":"cea9d26f","resetIsolationModeTotalDebt(address)":"e43e88a1","setConfiguration(address,(uint256))":"f51e435b","setReserveInterestRateStrategyAddress(address,address)":"1d2118f9","setUserEMode(uint8)":"28530a47","setUserUseReserveAsCollateral(address,bool)":"5a3b74b9","supply(address,uint256,address,uint16)":"617ba037","supplyWithPermit(address,uint256,address,uint16,uint256,uint8,bytes32,bytes32)":"02c205f0","swapBorrowRateMode(address,uint256)":"94ba89a2","updateBridgeProtocolFee(uint256)":"3036b439","updateFlashloanPremiums(uint128,uint128)":"bcb6e522","withdraw(address,uint256,address)":"69328dec"}},"metadata":"{\"compiler\":{\"version\":\"0.8.30+commit.73712a01\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"reserve\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"backer\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"fee\",\"type\":\"uint256\"}],\"name\":\"BackUnbacked\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"reserve\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"address\",\"name\":\"user\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"onBehalfOf\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"enum DataTypes.InterestRateMode\",\"name\":\"interestRateMode\",\"type\":\"uint8\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"borrowRate\",\"type\":\"uint256\"},{\"indexed\":true,\"internalType\":\"uint16\",\"name\":\"referralCode\",\"type\":\"uint16\"}],\"name\":\"Borrow\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"target\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"address\",\"name\":\"initiator\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"asset\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"enum DataTypes.InterestRateMode\",\"name\":\"interestRateMode\",\"type\":\"uint8\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"premium\",\"type\":\"uint256\"},{\"indexed\":true,\"internalType\":\"uint16\",\"name\":\"referralCode\",\"type\":\"uint16\"}],\"name\":\"FlashLoan\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"asset\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"totalDebt\",\"type\":\"uint256\"}],\"name\":\"IsolationModeTotalDebtUpdated\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"collateralAsset\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"debtAsset\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"user\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"debtToCover\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"liquidatedCollateralAmount\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"address\",\"name\":\"liquidator\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"bool\",\"name\":\"receiveAToken\",\"type\":\"bool\"}],\"name\":\"LiquidationCall\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"reserve\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"address\",\"name\":\"user\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"onBehalfOf\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"},{\"indexed\":true,\"internalType\":\"uint16\",\"name\":\"referralCode\",\"type\":\"uint16\"}],\"name\":\"MintUnbacked\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"reserve\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"amountMinted\",\"type\":\"uint256\"}],\"name\":\"MintedToTreasury\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"reserve\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"user\",\"type\":\"address\"}],\"name\":\"RebalanceStableBorrowRate\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"reserve\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"user\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"repayer\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"bool\",\"name\":\"useATokens\",\"type\":\"bool\"}],\"name\":\"Repay\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"reserve\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"liquidityRate\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"stableBorrowRate\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"variableBorrowRate\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"liquidityIndex\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"variableBorrowIndex\",\"type\":\"uint256\"}],\"name\":\"ReserveDataUpdated\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"reserve\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"user\",\"type\":\"address\"}],\"name\":\"ReserveUsedAsCollateralDisabled\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"reserve\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"user\",\"type\":\"address\"}],\"name\":\"ReserveUsedAsCollateralEnabled\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"reserve\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"address\",\"name\":\"user\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"onBehalfOf\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"},{\"indexed\":true,\"internalType\":\"uint16\",\"name\":\"referralCode\",\"type\":\"uint16\"}],\"name\":\"Supply\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"reserve\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"user\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"enum DataTypes.InterestRateMode\",\"name\":\"interestRateMode\",\"type\":\"uint8\"}],\"name\":\"SwapBorrowRateMode\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"user\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint8\",\"name\":\"categoryId\",\"type\":\"uint8\"}],\"name\":\"UserEModeSet\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"reserve\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"user\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"}],\"name\":\"Withdraw\",\"type\":\"event\"},{\"inputs\":[],\"name\":\"ADDRESSES_PROVIDER\",\"outputs\":[{\"internalType\":\"contract IPoolAddressesProvider\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"BRIDGE_PROTOCOL_FEE\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"FLASHLOAN_PREMIUM_TOTAL\",\"outputs\":[{\"internalType\":\"uint128\",\"name\":\"\",\"type\":\"uint128\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"FLASHLOAN_PREMIUM_TO_PROTOCOL\",\"outputs\":[{\"internalType\":\"uint128\",\"name\":\"\",\"type\":\"uint128\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"MAX_NUMBER_RESERVES\",\"outputs\":[{\"internalType\":\"uint16\",\"name\":\"\",\"type\":\"uint16\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"MAX_STABLE_RATE_BORROW_SIZE_PERCENT\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"asset\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"fee\",\"type\":\"uint256\"}],\"name\":\"backUnbacked\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"asset\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"interestRateMode\",\"type\":\"uint256\"},{\"internalType\":\"uint16\",\"name\":\"referralCode\",\"type\":\"uint16\"},{\"internalType\":\"address\",\"name\":\"onBehalfOf\",\"type\":\"address\"}],\"name\":\"borrow\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint8\",\"name\":\"id\",\"type\":\"uint8\"},{\"components\":[{\"internalType\":\"uint16\",\"name\":\"ltv\",\"type\":\"uint16\"},{\"internalType\":\"uint16\",\"name\":\"liquidationThreshold\",\"type\":\"uint16\"},{\"internalType\":\"uint16\",\"name\":\"liquidationBonus\",\"type\":\"uint16\"},{\"internalType\":\"address\",\"name\":\"priceSource\",\"type\":\"address\"},{\"internalType\":\"string\",\"name\":\"label\",\"type\":\"string\"}],\"internalType\":\"struct DataTypes.EModeCategory\",\"name\":\"config\",\"type\":\"tuple\"}],\"name\":\"configureEModeCategory\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"asset\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"},{\"internalType\":\"address\",\"name\":\"onBehalfOf\",\"type\":\"address\"},{\"internalType\":\"uint16\",\"name\":\"referralCode\",\"type\":\"uint16\"}],\"name\":\"deposit\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"asset\",\"type\":\"address\"}],\"name\":\"dropReserve\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"asset\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"from\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"balanceFromBefore\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"balanceToBefore\",\"type\":\"uint256\"}],\"name\":\"finalizeTransfer\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"receiverAddress\",\"type\":\"address\"},{\"internalType\":\"address[]\",\"name\":\"assets\",\"type\":\"address[]\"},{\"internalType\":\"uint256[]\",\"name\":\"amounts\",\"type\":\"uint256[]\"},{\"internalType\":\"uint256[]\",\"name\":\"interestRateModes\",\"type\":\"uint256[]\"},{\"internalType\":\"address\",\"name\":\"onBehalfOf\",\"type\":\"address\"},{\"internalType\":\"bytes\",\"name\":\"params\",\"type\":\"bytes\"},{\"internalType\":\"uint16\",\"name\":\"referralCode\",\"type\":\"uint16\"}],\"name\":\"flashLoan\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"receiverAddress\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"asset\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"},{\"internalType\":\"bytes\",\"name\":\"params\",\"type\":\"bytes\"},{\"internalType\":\"uint16\",\"name\":\"referralCode\",\"type\":\"uint16\"}],\"name\":\"flashLoanSimple\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"asset\",\"type\":\"address\"}],\"name\":\"getConfiguration\",\"outputs\":[{\"components\":[{\"internalType\":\"uint256\",\"name\":\"data\",\"type\":\"uint256\"}],\"internalType\":\"struct DataTypes.ReserveConfigurationMap\",\"name\":\"\",\"type\":\"tuple\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint8\",\"name\":\"id\",\"type\":\"uint8\"}],\"name\":\"getEModeCategoryData\",\"outputs\":[{\"components\":[{\"internalType\":\"uint16\",\"name\":\"ltv\",\"type\":\"uint16\"},{\"internalType\":\"uint16\",\"name\":\"liquidationThreshold\",\"type\":\"uint16\"},{\"internalType\":\"uint16\",\"name\":\"liquidationBonus\",\"type\":\"uint16\"},{\"internalType\":\"address\",\"name\":\"priceSource\",\"type\":\"address\"},{\"internalType\":\"string\",\"name\":\"label\",\"type\":\"string\"}],\"internalType\":\"struct DataTypes.EModeCategory\",\"name\":\"\",\"type\":\"tuple\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint16\",\"name\":\"id\",\"type\":\"uint16\"}],\"name\":\"getReserveAddressById\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"asset\",\"type\":\"address\"}],\"name\":\"getReserveData\",\"outputs\":[{\"components\":[{\"components\":[{\"internalType\":\"uint256\",\"name\":\"data\",\"type\":\"uint256\"}],\"internalType\":\"struct DataTypes.ReserveConfigurationMap\",\"name\":\"configuration\",\"type\":\"tuple\"},{\"internalType\":\"uint128\",\"name\":\"liquidityIndex\",\"type\":\"uint128\"},{\"internalType\":\"uint128\",\"name\":\"currentLiquidityRate\",\"type\":\"uint128\"},{\"internalType\":\"uint128\",\"name\":\"variableBorrowIndex\",\"type\":\"uint128\"},{\"internalType\":\"uint128\",\"name\":\"currentVariableBorrowRate\",\"type\":\"uint128\"},{\"internalType\":\"uint128\",\"name\":\"currentStableBorrowRate\",\"type\":\"uint128\"},{\"internalType\":\"uint40\",\"name\":\"lastUpdateTimestamp\",\"type\":\"uint40\"},{\"internalType\":\"uint16\",\"name\":\"id\",\"type\":\"uint16\"},{\"internalType\":\"address\",\"name\":\"aTokenAddress\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"stableDebtTokenAddress\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"variableDebtTokenAddress\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"interestRateStrategyAddress\",\"type\":\"address\"},{\"internalType\":\"uint128\",\"name\":\"accruedToTreasury\",\"type\":\"uint128\"},{\"internalType\":\"uint128\",\"name\":\"unbacked\",\"type\":\"uint128\"},{\"internalType\":\"uint128\",\"name\":\"isolationModeTotalDebt\",\"type\":\"uint128\"}],\"internalType\":\"struct DataTypes.ReserveData\",\"name\":\"\",\"type\":\"tuple\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"asset\",\"type\":\"address\"}],\"name\":\"getReserveNormalizedIncome\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"asset\",\"type\":\"address\"}],\"name\":\"getReserveNormalizedVariableDebt\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"getReservesList\",\"outputs\":[{\"internalType\":\"address[]\",\"name\":\"\",\"type\":\"address[]\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"user\",\"type\":\"address\"}],\"name\":\"getUserAccountData\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"totalCollateralBase\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"totalDebtBase\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"availableBorrowsBase\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"currentLiquidationThreshold\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"ltv\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"healthFactor\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"user\",\"type\":\"address\"}],\"name\":\"getUserConfiguration\",\"outputs\":[{\"components\":[{\"internalType\":\"uint256\",\"name\":\"data\",\"type\":\"uint256\"}],\"internalType\":\"struct DataTypes.UserConfigurationMap\",\"name\":\"\",\"type\":\"tuple\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"user\",\"type\":\"address\"}],\"name\":\"getUserEMode\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"asset\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"aTokenAddress\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"stableDebtAddress\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"variableDebtAddress\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"interestRateStrategyAddress\",\"type\":\"address\"}],\"name\":\"initReserve\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"collateralAsset\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"debtAsset\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"user\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"debtToCover\",\"type\":\"uint256\"},{\"internalType\":\"bool\",\"name\":\"receiveAToken\",\"type\":\"bool\"}],\"name\":\"liquidationCall\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address[]\",\"name\":\"assets\",\"type\":\"address[]\"}],\"name\":\"mintToTreasury\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"asset\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"},{\"internalType\":\"address\",\"name\":\"onBehalfOf\",\"type\":\"address\"},{\"internalType\":\"uint16\",\"name\":\"referralCode\",\"type\":\"uint16\"}],\"name\":\"mintUnbacked\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"asset\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"user\",\"type\":\"address\"}],\"name\":\"rebalanceStableBorrowRate\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"asset\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"interestRateMode\",\"type\":\"uint256\"},{\"internalType\":\"address\",\"name\":\"onBehalfOf\",\"type\":\"address\"}],\"name\":\"repay\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"asset\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"interestRateMode\",\"type\":\"uint256\"}],\"name\":\"repayWithATokens\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"asset\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"interestRateMode\",\"type\":\"uint256\"},{\"internalType\":\"address\",\"name\":\"onBehalfOf\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"deadline\",\"type\":\"uint256\"},{\"internalType\":\"uint8\",\"name\":\"permitV\",\"type\":\"uint8\"},{\"internalType\":\"bytes32\",\"name\":\"permitR\",\"type\":\"bytes32\"},{\"internalType\":\"bytes32\",\"name\":\"permitS\",\"type\":\"bytes32\"}],\"name\":\"repayWithPermit\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"token\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"}],\"name\":\"rescueTokens\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"asset\",\"type\":\"address\"}],\"name\":\"resetIsolationModeTotalDebt\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"asset\",\"type\":\"address\"},{\"components\":[{\"internalType\":\"uint256\",\"name\":\"data\",\"type\":\"uint256\"}],\"internalType\":\"struct DataTypes.ReserveConfigurationMap\",\"name\":\"configuration\",\"type\":\"tuple\"}],\"name\":\"setConfiguration\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"asset\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"rateStrategyAddress\",\"type\":\"address\"}],\"name\":\"setReserveInterestRateStrategyAddress\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint8\",\"name\":\"categoryId\",\"type\":\"uint8\"}],\"name\":\"setUserEMode\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"asset\",\"type\":\"address\"},{\"internalType\":\"bool\",\"name\":\"useAsCollateral\",\"type\":\"bool\"}],\"name\":\"setUserUseReserveAsCollateral\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"asset\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"},{\"internalType\":\"address\",\"name\":\"onBehalfOf\",\"type\":\"address\"},{\"internalType\":\"uint16\",\"name\":\"referralCode\",\"type\":\"uint16\"}],\"name\":\"supply\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"asset\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"},{\"internalType\":\"address\",\"name\":\"onBehalfOf\",\"type\":\"address\"},{\"internalType\":\"uint16\",\"name\":\"referralCode\",\"type\":\"uint16\"},{\"internalType\":\"uint256\",\"name\":\"deadline\",\"type\":\"uint256\"},{\"internalType\":\"uint8\",\"name\":\"permitV\",\"type\":\"uint8\"},{\"internalType\":\"bytes32\",\"name\":\"permitR\",\"type\":\"bytes32\"},{\"internalType\":\"bytes32\",\"name\":\"permitS\",\"type\":\"bytes32\"}],\"name\":\"supplyWithPermit\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"asset\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"interestRateMode\",\"type\":\"uint256\"}],\"name\":\"swapBorrowRateMode\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"bridgeProtocolFee\",\"type\":\"uint256\"}],\"name\":\"updateBridgeProtocolFee\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint128\",\"name\":\"flashLoanPremiumTotal\",\"type\":\"uint128\"},{\"internalType\":\"uint128\",\"name\":\"flashLoanPremiumToProtocol\",\"type\":\"uint128\"}],\"name\":\"updateFlashloanPremiums\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"asset\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"},{\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"}],\"name\":\"withdraw\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"}],\"devdoc\":{\"author\":\"Aave\",\"events\":{\"BackUnbacked(address,address,uint256,uint256)\":{\"details\":\"Emitted on backUnbacked()\",\"params\":{\"amount\":\"The amount added as backing\",\"backer\":\"The address paying for the backing\",\"fee\":\"The amount paid in fees*\",\"reserve\":\"The address of the underlying asset of the reserve\"}},\"Borrow(address,address,address,uint256,uint8,uint256,uint16)\":{\"details\":\"Emitted on borrow() and flashLoan() when debt needs to be opened\",\"params\":{\"amount\":\"The amount borrowed out\",\"borrowRate\":\"The numeric rate at which the user has borrowed, expressed in ray\",\"interestRateMode\":\"The rate mode: 1 for Stable, 2 for Variable\",\"onBehalfOf\":\"The address that will be getting the debt\",\"referralCode\":\"The referral code used*\",\"reserve\":\"The address of the underlying asset being borrowed\",\"user\":\"The address of the user initiating the borrow(), receiving the funds on borrow() or just initiator of the transaction on flashLoan()\"}},\"FlashLoan(address,address,address,uint256,uint8,uint256,uint16)\":{\"details\":\"Emitted on flashLoan()\",\"params\":{\"amount\":\"The amount flash borrowed\",\"asset\":\"The address of the asset being flash borrowed\",\"initiator\":\"The address initiating the flash loan\",\"interestRateMode\":\"The flashloan mode: 0 for regular flashloan, 1 for Stable debt, 2 for Variable debt\",\"premium\":\"The fee flash borrowed\",\"referralCode\":\"The referral code used*\",\"target\":\"The address of the flash loan receiver contract\"}},\"IsolationModeTotalDebtUpdated(address,uint256)\":{\"details\":\"Emitted on borrow(), repay() and liquidationCall() when using isolated assets\",\"params\":{\"asset\":\"The address of the underlying asset of the reserve\",\"totalDebt\":\"The total isolation mode debt for the reserve\"}},\"LiquidationCall(address,address,address,uint256,uint256,address,bool)\":{\"details\":\"Emitted when a borrower is liquidated.\",\"params\":{\"collateralAsset\":\"The address of the underlying asset used as collateral, to receive as result of the liquidation\",\"debtAsset\":\"The address of the underlying borrowed asset to be repaid with the liquidation\",\"debtToCover\":\"The debt amount of borrowed `asset` the liquidator wants to cover\",\"liquidatedCollateralAmount\":\"The amount of collateral received by the liquidator\",\"liquidator\":\"The address of the liquidator\",\"receiveAToken\":\"True if the liquidators wants to receive the collateral aTokens, `false` if he wants to receive the underlying collateral asset directly*\",\"user\":\"The address of the borrower getting liquidated\"}},\"MintUnbacked(address,address,address,uint256,uint16)\":{\"details\":\"Emitted on mintUnbacked()\",\"params\":{\"amount\":\"The amount of supplied assets\",\"onBehalfOf\":\"The beneficiary of the supplied assets, receiving the aTokens\",\"referralCode\":\"The referral code used*\",\"reserve\":\"The address of the underlying asset of the reserve\",\"user\":\"The address initiating the supply\"}},\"MintedToTreasury(address,uint256)\":{\"details\":\"Emitted when the protocol treasury receives minted aTokens from the accrued interest.\",\"params\":{\"amountMinted\":\"The amount minted to the treasury*\",\"reserve\":\"The address of the reserve\"}},\"RebalanceStableBorrowRate(address,address)\":{\"details\":\"Emitted on rebalanceStableBorrowRate()\",\"params\":{\"reserve\":\"The address of the underlying asset of the reserve\",\"user\":\"The address of the user for which the rebalance has been executed*\"}},\"Repay(address,address,address,uint256,bool)\":{\"details\":\"Emitted on repay()\",\"params\":{\"amount\":\"The amount repaid\",\"repayer\":\"The address of the user initiating the repay(), providing the funds\",\"reserve\":\"The address of the underlying asset of the reserve\",\"useATokens\":\"True if the repayment is done using aTokens, `false` if done with underlying asset directly*\",\"user\":\"The beneficiary of the repayment, getting his debt reduced\"}},\"ReserveDataUpdated(address,uint256,uint256,uint256,uint256,uint256)\":{\"details\":\"Emitted when the state of a reserve is updated.\",\"params\":{\"liquidityIndex\":\"The next liquidity index\",\"liquidityRate\":\"The next liquidity rate\",\"reserve\":\"The address of the underlying asset of the reserve\",\"stableBorrowRate\":\"The next stable borrow rate\",\"variableBorrowIndex\":\"The next variable borrow index*\",\"variableBorrowRate\":\"The next variable borrow rate\"}},\"ReserveUsedAsCollateralDisabled(address,address)\":{\"details\":\"Emitted on setUserUseReserveAsCollateral()\",\"params\":{\"reserve\":\"The address of the underlying asset of the reserve\",\"user\":\"The address of the user enabling the usage as collateral*\"}},\"ReserveUsedAsCollateralEnabled(address,address)\":{\"details\":\"Emitted on setUserUseReserveAsCollateral()\",\"params\":{\"reserve\":\"The address of the underlying asset of the reserve\",\"user\":\"The address of the user enabling the usage as collateral*\"}},\"Supply(address,address,address,uint256,uint16)\":{\"details\":\"Emitted on supply()\",\"params\":{\"amount\":\"The amount supplied\",\"onBehalfOf\":\"The beneficiary of the supply, receiving the aTokens\",\"referralCode\":\"The referral code used*\",\"reserve\":\"The address of the underlying asset of the reserve\",\"user\":\"The address initiating the supply\"}},\"SwapBorrowRateMode(address,address,uint8)\":{\"details\":\"Emitted on swapBorrowRateMode()\",\"params\":{\"interestRateMode\":\"The current interest rate mode of the position being swapped: 1 for Stable, 2 for Variable*\",\"reserve\":\"The address of the underlying asset of the reserve\",\"user\":\"The address of the user swapping his rate mode\"}},\"UserEModeSet(address,uint8)\":{\"details\":\"Emitted when the user selects a certain asset category for eMode\",\"params\":{\"categoryId\":\"The category id*\",\"user\":\"The address of the user\"}},\"Withdraw(address,address,address,uint256)\":{\"details\":\"Emitted on withdraw()\",\"params\":{\"amount\":\"The amount to be withdrawn*\",\"reserve\":\"The address of the underlying asset being withdrawn\",\"to\":\"The address that will receive the underlying\",\"user\":\"The address initiating the withdrawal, owner of aTokens\"}}},\"kind\":\"dev\",\"methods\":{\"ADDRESSES_PROVIDER()\":{\"returns\":{\"_0\":\"The address of the PoolAddressesProvider*\"}},\"BRIDGE_PROTOCOL_FEE()\":{\"returns\":{\"_0\":\"The bridge fee sent to the protocol treasury\"}},\"FLASHLOAN_PREMIUM_TOTAL()\":{\"returns\":{\"_0\":\"The total fee on flashloans\"}},\"FLASHLOAN_PREMIUM_TO_PROTOCOL()\":{\"returns\":{\"_0\":\"The flashloan fee sent to the protocol treasury\"}},\"MAX_NUMBER_RESERVES()\":{\"returns\":{\"_0\":\"The maximum number of reserves supported\"}},\"MAX_STABLE_RATE_BORROW_SIZE_PERCENT()\":{\"returns\":{\"_0\":\"The percentage of available liquidity to borrow, expressed in bps\"}},\"backUnbacked(address,uint256,uint256)\":{\"details\":\"Back the current unbacked underlying with `amount` and pay `fee`.\",\"params\":{\"amount\":\"The amount to back\",\"asset\":\"The address of the underlying asset to back\",\"fee\":\"The amount paid in fees*\"}},\"borrow(address,uint256,uint256,uint16,address)\":{\"params\":{\"amount\":\"The amount to be borrowed\",\"asset\":\"The address of the underlying asset to borrow\",\"interestRateMode\":\"The interest rate mode at which the user wants to borrow: 1 for Stable, 2 for Variable\",\"onBehalfOf\":\"The address of the user who will receive the debt. Should be the address of the borrower itself calling the function if he wants to borrow against his own collateral, or the address of the credit delegator if he has been given credit delegation allowance*\",\"referralCode\":\"The code used to register the integrator originating the operation, for potential rewards.   0 if the action is executed directly by the user, without any middle-man\"}},\"configureEModeCategory(uint8,(uint16,uint16,uint16,address,string))\":{\"details\":\"In eMode, the protocol allows very high borrowing power to borrow assets of the same category. The category 0 is reserved as it's the default for volatile assets\",\"params\":{\"config\":\"The configuration of the category\",\"id\":\"The id of the category\"}},\"deposit(address,uint256,address,uint16)\":{\"details\":\"Deprecated: Use the `supply` function instead\",\"params\":{\"amount\":\"The amount to be supplied\",\"asset\":\"The address of the underlying asset to supply\",\"onBehalfOf\":\"The address that will receive the aTokens, same as msg.sender if the user   wants to receive them on his own wallet, or a different address if the beneficiary of aTokens   is a different wallet\",\"referralCode\":\"Code used to register the integrator originating the operation, for potential rewards.   0 if the action is executed directly by the user, without any middle-man*\"}},\"dropReserve(address)\":{\"details\":\"Only callable by the PoolConfigurator contract\",\"params\":{\"asset\":\"The address of the underlying asset of the reserve*\"}},\"finalizeTransfer(address,address,address,uint256,uint256,uint256)\":{\"details\":\"Only callable by the overlying aToken of the `asset`\",\"params\":{\"amount\":\"The amount being transferred/withdrawn\",\"asset\":\"The address of the underlying asset of the aToken\",\"balanceFromBefore\":\"The aToken balance of the `from` user before the transfer\",\"balanceToBefore\":\"The aToken balance of the `to` user before the transfer\",\"from\":\"The user from which the aTokens are transferred\",\"to\":\"The user receiving the aTokens\"}},\"flashLoan(address,address[],uint256[],uint256[],address,bytes,uint16)\":{\"details\":\"IMPORTANT There are security concerns for developers of flashloan receiver contracts that must be kept into consideration. For further details please visit https://developers.aave.com\",\"params\":{\"amounts\":\"The amounts of the assets being flash-borrowed\",\"assets\":\"The addresses of the assets being flash-borrowed\",\"interestRateModes\":\"Types of the debt to open if the flash loan is not returned:   0 -> Don't open any debt, just revert if funds can't be transferred from the receiver   1 -> Open debt at stable rate for the value of the amount flash-borrowed to the `onBehalfOf` address   2 -> Open debt at variable rate for the value of the amount flash-borrowed to the `onBehalfOf` address\",\"onBehalfOf\":\"The address  that will receive the debt in the case of using on `modes` 1 or 2\",\"params\":\"Variadic packed params to pass to the receiver as extra information\",\"receiverAddress\":\"The address of the contract receiving the funds, implementing IFlashLoanReceiver interface\",\"referralCode\":\"The code used to register the integrator originating the operation, for potential rewards.   0 if the action is executed directly by the user, without any middle-man*\"}},\"flashLoanSimple(address,address,uint256,bytes,uint16)\":{\"details\":\"IMPORTANT There are security concerns for developers of flashloan receiver contracts that must be kept into consideration. For further details please visit https://developers.aave.com\",\"params\":{\"amount\":\"The amount of the asset being flash-borrowed\",\"asset\":\"The address of the asset being flash-borrowed\",\"params\":\"Variadic packed params to pass to the receiver as extra information\",\"receiverAddress\":\"The address of the contract receiving the funds, implementing IFlashLoanSimpleReceiver interface\",\"referralCode\":\"The code used to register the integrator originating the operation, for potential rewards.   0 if the action is executed directly by the user, without any middle-man*\"}},\"getConfiguration(address)\":{\"params\":{\"asset\":\"The address of the underlying asset of the reserve\"},\"returns\":{\"_0\":\"The configuration of the reserve*\"}},\"getEModeCategoryData(uint8)\":{\"params\":{\"id\":\"The id of the category\"},\"returns\":{\"_0\":\"The configuration data of the category\"}},\"getReserveAddressById(uint16)\":{\"params\":{\"id\":\"The id of the reserve as stored in the DataTypes.ReserveData struct\"},\"returns\":{\"_0\":\"The address of the reserve associated with id*\"}},\"getReserveData(address)\":{\"params\":{\"asset\":\"The address of the underlying asset of the reserve\"},\"returns\":{\"_0\":\"The state and configuration data of the reserve*\"}},\"getReserveNormalizedIncome(address)\":{\"params\":{\"asset\":\"The address of the underlying asset of the reserve\"},\"returns\":{\"_0\":\"The reserve's normalized income\"}},\"getReserveNormalizedVariableDebt(address)\":{\"params\":{\"asset\":\"The address of the underlying asset of the reserve\"},\"returns\":{\"_0\":\"The reserve normalized variable debt\"}},\"getReservesList()\":{\"details\":\"It does not include dropped reserves\",\"returns\":{\"_0\":\"The addresses of the underlying assets of the initialized reserves*\"}},\"getUserAccountData(address)\":{\"params\":{\"user\":\"The address of the user\"},\"returns\":{\"availableBorrowsBase\":\"The borrowing power left of the user in the base currency used by the price feed\",\"currentLiquidationThreshold\":\"The liquidation threshold of the user\",\"healthFactor\":\"The current health factor of the user*\",\"ltv\":\"The loan to value of The user\",\"totalCollateralBase\":\"The total collateral of the user in the base currency used by the price feed\",\"totalDebtBase\":\"The total debt of the user in the base currency used by the price feed\"}},\"getUserConfiguration(address)\":{\"params\":{\"user\":\"The user address\"},\"returns\":{\"_0\":\"The configuration of the user*\"}},\"getUserEMode(address)\":{\"params\":{\"user\":\"The address of the user\"},\"returns\":{\"_0\":\"The eMode id\"}},\"initReserve(address,address,address,address,address)\":{\"details\":\"Only callable by the PoolConfigurator contract\",\"params\":{\"aTokenAddress\":\"The address of the aToken that will be assigned to the reserve\",\"asset\":\"The address of the underlying asset of the reserve\",\"interestRateStrategyAddress\":\"The address of the interest rate strategy contract*\",\"stableDebtAddress\":\"The address of the StableDebtToken that will be assigned to the reserve\",\"variableDebtAddress\":\"The address of the VariableDebtToken that will be assigned to the reserve\"}},\"liquidationCall(address,address,address,uint256,bool)\":{\"params\":{\"collateralAsset\":\"The address of the underlying asset used as collateral, to receive as result of the liquidation\",\"debtAsset\":\"The address of the underlying borrowed asset to be repaid with the liquidation\",\"debtToCover\":\"The debt amount of borrowed `asset` the liquidator wants to cover\",\"receiveAToken\":\"True if the liquidators wants to receive the collateral aTokens, `false` if he wants to receive the underlying collateral asset directly*\",\"user\":\"The address of the borrower getting liquidated\"}},\"mintToTreasury(address[])\":{\"params\":{\"assets\":\"The list of reserves for which the minting needs to be executed*\"}},\"mintUnbacked(address,uint256,address,uint16)\":{\"details\":\"Mints an `amount` of aTokens to the `onBehalfOf`\",\"params\":{\"amount\":\"The amount to mint\",\"asset\":\"The address of the underlying asset to mint\",\"onBehalfOf\":\"The address that will receive the aTokens\",\"referralCode\":\"Code used to register the integrator originating the operation, for potential rewards.   0 if the action is executed directly by the user, without any middle-man*\"}},\"rebalanceStableBorrowRate(address,address)\":{\"params\":{\"asset\":\"The address of the underlying asset borrowed\",\"user\":\"The address of the user to be rebalanced*\"}},\"repay(address,uint256,uint256,address)\":{\"params\":{\"amount\":\"The amount to repay - Send the value type(uint256).max in order to repay the whole debt for `asset` on the specific `debtMode`\",\"asset\":\"The address of the borrowed underlying asset previously borrowed\",\"interestRateMode\":\"The interest rate mode at of the debt the user wants to repay: 1 for Stable, 2 for Variable\",\"onBehalfOf\":\"The address of the user who will get his debt reduced/removed. Should be the address of the user calling the function if he wants to reduce/remove his own debt, or the address of any other other borrower whose debt should be removed\"},\"returns\":{\"_0\":\"The final amount repaid*\"}},\"repayWithATokens(address,uint256,uint256)\":{\"details\":\"Passing uint256.max as amount will clean up any residual aToken dust balance, if the user aToken balance is not enough to cover the whole debt\",\"params\":{\"amount\":\"The amount to repay - Send the value type(uint256).max in order to repay the whole debt for `asset` on the specific `debtMode`\",\"asset\":\"The address of the borrowed underlying asset previously borrowed\",\"interestRateMode\":\"The interest rate mode at of the debt the user wants to repay: 1 for Stable, 2 for Variable\"},\"returns\":{\"_0\":\"The final amount repaid*\"}},\"repayWithPermit(address,uint256,uint256,address,uint256,uint8,bytes32,bytes32)\":{\"params\":{\"amount\":\"The amount to repay - Send the value type(uint256).max in order to repay the whole debt for `asset` on the specific `debtMode`\",\"asset\":\"The address of the borrowed underlying asset previously borrowed\",\"deadline\":\"The deadline timestamp that the permit is valid\",\"interestRateMode\":\"The interest rate mode at of the debt the user wants to repay: 1 for Stable, 2 for Variable\",\"onBehalfOf\":\"Address of the user who will get his debt reduced/removed. Should be the address of the user calling the function if he wants to reduce/remove his own debt, or the address of any other other borrower whose debt should be removed\",\"permitR\":\"The R parameter of ERC712 permit sig\",\"permitS\":\"The S parameter of ERC712 permit sig\",\"permitV\":\"The V parameter of ERC712 permit sig\"},\"returns\":{\"_0\":\"The final amount repaid*\"}},\"rescueTokens(address,address,uint256)\":{\"params\":{\"amount\":\"The amount of token to transfer\",\"to\":\"The address of the recipient\",\"token\":\"The address of the token\"}},\"resetIsolationModeTotalDebt(address)\":{\"details\":\"It requires the given asset has zero debt ceiling\",\"params\":{\"asset\":\"The address of the underlying asset to reset the isolationModeTotalDebt\"}},\"setConfiguration(address,(uint256))\":{\"details\":\"Only callable by the PoolConfigurator contract\",\"params\":{\"asset\":\"The address of the underlying asset of the reserve\",\"configuration\":\"The new configuration bitmap*\"}},\"setReserveInterestRateStrategyAddress(address,address)\":{\"details\":\"Only callable by the PoolConfigurator contract\",\"params\":{\"asset\":\"The address of the underlying asset of the reserve\",\"rateStrategyAddress\":\"The address of the interest rate strategy contract*\"}},\"setUserEMode(uint8)\":{\"params\":{\"categoryId\":\"The id of the category\"}},\"setUserUseReserveAsCollateral(address,bool)\":{\"params\":{\"asset\":\"The address of the underlying asset supplied\",\"useAsCollateral\":\"True if the user wants to use the supply as collateral, false otherwise*\"}},\"supply(address,uint256,address,uint16)\":{\"params\":{\"amount\":\"The amount to be supplied\",\"asset\":\"The address of the underlying asset to supply\",\"onBehalfOf\":\"The address that will receive the aTokens, same as msg.sender if the user   wants to receive them on his own wallet, or a different address if the beneficiary of aTokens   is a different wallet\",\"referralCode\":\"Code used to register the integrator originating the operation, for potential rewards.   0 if the action is executed directly by the user, without any middle-man*\"}},\"supplyWithPermit(address,uint256,address,uint16,uint256,uint8,bytes32,bytes32)\":{\"params\":{\"amount\":\"The amount to be supplied\",\"asset\":\"The address of the underlying asset to supply\",\"deadline\":\"The deadline timestamp that the permit is valid\",\"onBehalfOf\":\"The address that will receive the aTokens, same as msg.sender if the user   wants to receive them on his own wallet, or a different address if the beneficiary of aTokens   is a different wallet\",\"permitR\":\"The R parameter of ERC712 permit sig\",\"permitS\":\"The S parameter of ERC712 permit sig*\",\"permitV\":\"The V parameter of ERC712 permit sig\",\"referralCode\":\"Code used to register the integrator originating the operation, for potential rewards.   0 if the action is executed directly by the user, without any middle-man\"}},\"swapBorrowRateMode(address,uint256)\":{\"params\":{\"asset\":\"The address of the underlying asset borrowed\",\"interestRateMode\":\"The current interest rate mode of the position being swapped: 1 for Stable, 2 for Variable*\"}},\"updateBridgeProtocolFee(uint256)\":{\"params\":{\"bridgeProtocolFee\":\"The part of the premium sent to the protocol treasury\"}},\"updateFlashloanPremiums(uint128,uint128)\":{\"details\":\"The total premium is calculated on the total borrowed amountThe premium to protocol is calculated on the total premium, being a percentage of `flashLoanPremiumTotal`Only callable by the PoolConfigurator contract\",\"params\":{\"flashLoanPremiumToProtocol\":\"The part of the premium sent to the protocol treasury, expressed in bps\",\"flashLoanPremiumTotal\":\"The total premium, expressed in bps\"}},\"withdraw(address,uint256,address)\":{\"params\":{\"amount\":\"The underlying amount to be withdrawn   - Send the value type(uint256).max in order to withdraw the whole aToken balance\",\"asset\":\"The address of the underlying asset to withdraw\",\"to\":\"The address that will receive the underlying, same as msg.sender if the user   wants to receive it on his own wallet, or a different address if the beneficiary is a   different wallet\"},\"returns\":{\"_0\":\"The final amount withdrawn*\"}}},\"title\":\"IPool\",\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{\"ADDRESSES_PROVIDER()\":{\"notice\":\"Returns the PoolAddressesProvider connected to this contract\"},\"BRIDGE_PROTOCOL_FEE()\":{\"notice\":\"Returns the part of the bridge fees sent to protocol\"},\"FLASHLOAN_PREMIUM_TOTAL()\":{\"notice\":\"Returns the total fee on flash loans\"},\"FLASHLOAN_PREMIUM_TO_PROTOCOL()\":{\"notice\":\"Returns the part of the flashloan fees sent to protocol\"},\"MAX_NUMBER_RESERVES()\":{\"notice\":\"Returns the maximum number of reserves supported to be listed in this Pool\"},\"MAX_STABLE_RATE_BORROW_SIZE_PERCENT()\":{\"notice\":\"Returns the percentage of available liquidity that can be borrowed at once at stable rate\"},\"borrow(address,uint256,uint256,uint16,address)\":{\"notice\":\"Allows users to borrow a specific `amount` of the reserve underlying asset, provided that the borrower already supplied enough collateral, or he was given enough allowance by a credit delegator on the corresponding debt token (StableDebtToken or VariableDebtToken) - E.g. User borrows 100 USDC passing as `onBehalfOf` his own address, receiving the 100 USDC in his wallet   and 100 stable/variable debt tokens, depending on the `interestRateMode`\"},\"configureEModeCategory(uint8,(uint16,uint16,uint16,address,string))\":{\"notice\":\"Configures a new category for the eMode.\"},\"deposit(address,uint256,address,uint16)\":{\"notice\":\"Supplies an `amount` of underlying asset into the reserve, receiving in return overlying aTokens. - E.g. User supplies 100 USDC and gets in return 100 aUSDC\"},\"dropReserve(address)\":{\"notice\":\"Drop a reserve\"},\"finalizeTransfer(address,address,address,uint256,uint256,uint256)\":{\"notice\":\"Validates and finalizes an aToken transfer\"},\"flashLoan(address,address[],uint256[],uint256[],address,bytes,uint16)\":{\"notice\":\"Allows smartcontracts to access the liquidity of the pool within one transaction, as long as the amount taken plus a fee is returned.\"},\"flashLoanSimple(address,address,uint256,bytes,uint16)\":{\"notice\":\"Allows smartcontracts to access the liquidity of the pool within one transaction, as long as the amount taken plus a fee is returned.\"},\"getConfiguration(address)\":{\"notice\":\"Returns the configuration of the reserve\"},\"getEModeCategoryData(uint8)\":{\"notice\":\"Returns the data of an eMode category\"},\"getReserveAddressById(uint16)\":{\"notice\":\"Returns the address of the underlying asset of a reserve by the reserve id as stored in the DataTypes.ReserveData struct\"},\"getReserveData(address)\":{\"notice\":\"Returns the state and configuration of the reserve\"},\"getReserveNormalizedIncome(address)\":{\"notice\":\"Returns the normalized income normalized income of the reserve\"},\"getReserveNormalizedVariableDebt(address)\":{\"notice\":\"Returns the normalized variable debt per unit of asset\"},\"getReservesList()\":{\"notice\":\"Returns the list of the underlying assets of all the initialized reserves\"},\"getUserAccountData(address)\":{\"notice\":\"Returns the user account data across all the reserves\"},\"getUserConfiguration(address)\":{\"notice\":\"Returns the configuration of the user across all the reserves\"},\"getUserEMode(address)\":{\"notice\":\"Returns the eMode the user is using\"},\"initReserve(address,address,address,address,address)\":{\"notice\":\"Initializes a reserve, activating it, assigning an aToken and debt tokens and an interest rate strategy\"},\"liquidationCall(address,address,address,uint256,bool)\":{\"notice\":\"Function to liquidate a non-healthy position collateral-wise, with Health Factor below 1 - The caller (liquidator) covers `debtToCover` amount of debt of the user getting liquidated, and receives   a proportionally amount of the `collateralAsset` plus a bonus to cover market risk\"},\"mintToTreasury(address[])\":{\"notice\":\"Mints the assets accrued through the reserve factor to the treasury in the form of aTokens\"},\"rebalanceStableBorrowRate(address,address)\":{\"notice\":\"Rebalances the stable interest rate of a user to the current stable rate defined on the reserve. - Users can be rebalanced if the following conditions are satisfied:     1. Usage ratio is above 95%     2. the current supply APY is below REBALANCE_UP_THRESHOLD * maxVariableBorrowRate, which means that too        much has been borrowed at a stable rate and suppliers are not earning enough\"},\"repay(address,uint256,uint256,address)\":{\"notice\":\"Repays a borrowed `amount` on a specific reserve, burning the equivalent debt tokens owned - E.g. User repays 100 USDC, burning 100 variable/stable debt tokens of the `onBehalfOf` address\"},\"repayWithATokens(address,uint256,uint256)\":{\"notice\":\"Repays a borrowed `amount` on a specific reserve using the reserve aTokens, burning the equivalent debt tokens - E.g. User repays 100 USDC using 100 aUSDC, burning 100 variable/stable debt tokens\"},\"repayWithPermit(address,uint256,uint256,address,uint256,uint8,bytes32,bytes32)\":{\"notice\":\"Repay with transfer approval of asset to be repaid done via permit function see: https://eips.ethereum.org/EIPS/eip-2612 and https://eips.ethereum.org/EIPS/eip-713\"},\"rescueTokens(address,address,uint256)\":{\"notice\":\"Rescue and transfer tokens locked in this contract\"},\"resetIsolationModeTotalDebt(address)\":{\"notice\":\"Resets the isolation mode total debt of the given asset to zero\"},\"setConfiguration(address,(uint256))\":{\"notice\":\"Sets the configuration bitmap of the reserve as a whole\"},\"setReserveInterestRateStrategyAddress(address,address)\":{\"notice\":\"Updates the address of the interest rate strategy contract\"},\"setUserEMode(uint8)\":{\"notice\":\"Allows a user to use the protocol in eMode\"},\"setUserUseReserveAsCollateral(address,bool)\":{\"notice\":\"Allows suppliers to enable/disable a specific supplied asset as collateral\"},\"supply(address,uint256,address,uint16)\":{\"notice\":\"Supplies an `amount` of underlying asset into the reserve, receiving in return overlying aTokens. - E.g. User supplies 100 USDC and gets in return 100 aUSDC\"},\"supplyWithPermit(address,uint256,address,uint16,uint256,uint8,bytes32,bytes32)\":{\"notice\":\"Supply with transfer approval of asset to be supplied done via permit function see: https://eips.ethereum.org/EIPS/eip-2612 and https://eips.ethereum.org/EIPS/eip-713\"},\"swapBorrowRateMode(address,uint256)\":{\"notice\":\"Allows a borrower to swap his debt between stable and variable mode, or vice versa\"},\"updateBridgeProtocolFee(uint256)\":{\"notice\":\"Updates the protocol fee on the bridging\"},\"updateFlashloanPremiums(uint128,uint128)\":{\"notice\":\"Updates flash loan premiums. Flash loan premium consists of two parts: - A part is sent to aToken holders as extra, one time accumulated interest - A part is collected by the protocol treasury\"},\"withdraw(address,uint256,address)\":{\"notice\":\"Withdraws an `amount` of underlying asset from the reserve, burning the equivalent aTokens owned E.g. User has 100 aUSDC, calls withdraw() and receives 100 USDC, burning the 100 aUSDC\"}},\"notice\":\"Defines the basic interface for an Aave Pool.*\",\"version\":1}},\"settings\":{\"compilationTarget\":{\"contracts/dependencies/aave-v3/IPool.sol\":\"IPool\"},\"evmVersion\":\"prague\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"enabled\":true,\"runs\":200},\"remappings\":[]},\"sources\":{\"contracts/dependencies/aave-v3/DataTypes.sol\":{\"keccak256\":\"0x771cb99fd8519c974f7e12130387c4d9a997a6e8d0ac10e4303b842fe53efa88\",\"license\":\"BUSL-1.1\",\"urls\":[\"bzz-raw://0f41689d1d58bc13678c749bae8830f5a8b19b89cd135e962bf07d483350f828\",\"dweb:/ipfs/QmQSNGDxjYGqT1GU2CZzsWUTNcAtcfkg1jDGTH516nCAfN\"]},\"contracts/dependencies/aave-v3/IPool.sol\":{\"keccak256\":\"0x9672a8147a2f72600b78b0f08a0f9f6ea67c7a855905ad5cd0a5254cd47be3f3\",\"license\":\"AGPL-3.0\",\"urls\":[\"bzz-raw://2abd09105b2578424a83151d1cb16fbb043b9368884e1136c8edf28ecd71ebb0\",\"dweb:/ipfs/QmSU8JuTMypx1Abr7gyyAchWKwNYKkZrKWW8Kd8qHVCrXs\"]},\"contracts/dependencies/aave-v3/IPoolAddressesProvider.sol\":{\"keccak256\":\"0x2f70daa98416d61fd3128b1ee05f96852d84074689a2c2132a7fd587c5c9e3f0\",\"license\":\"AGPL-3.0\",\"urls\":[\"bzz-raw://7843e6da934079a714ab1d4a67a81108d3722067bde86ae2a36b6a288ab4e353\",\"dweb:/ipfs/QmWa6zUZsKJa7wKY5msQCuN7vYxi5H4QJwnp6gF2QTWfPH\"]}},\"version\":1}","storageLayout":{"storage":[],"types":null}}},"contracts/dependencies/aave-v3/IPoolAddressesProvider.sol":{"IPoolAddressesProvider":{"abi":[{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"oldAddress","type":"address"},{"indexed":true,"internalType":"address","name":"newAddress","type":"address"}],"name":"ACLAdminUpdated","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"oldAddress","type":"address"},{"indexed":true,"internalType":"address","name":"newAddress","type":"address"}],"name":"ACLManagerUpdated","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"bytes32","name":"id","type":"bytes32"},{"indexed":true,"internalType":"address","name":"oldAddress","type":"address"},{"indexed":true,"internalType":"address","name":"newAddress","type":"address"}],"name":"AddressSet","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"bytes32","name":"id","type":"bytes32"},{"indexed":true,"internalType":"address","name":"proxyAddress","type":"address"},{"indexed":false,"internalType":"address","name":"oldImplementationAddress","type":"address"},{"indexed":true,"internalType":"address","name":"newImplementationAddress","type":"address"}],"name":"AddressSetAsProxy","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"string","name":"oldMarketId","type":"string"},{"indexed":true,"internalType":"string","name":"newMarketId","type":"string"}],"name":"MarketIdSet","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"oldAddress","type":"address"},{"indexed":true,"internalType":"address","name":"newAddress","type":"address"}],"name":"PoolConfiguratorUpdated","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"oldAddress","type":"address"},{"indexed":true,"internalType":"address","name":"newAddress","type":"address"}],"name":"PoolDataProviderUpdated","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"oldAddress","type":"address"},{"indexed":true,"internalType":"address","name":"newAddress","type":"address"}],"name":"PoolUpdated","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"oldAddress","type":"address"},{"indexed":true,"internalType":"address","name":"newAddress","type":"address"}],"name":"PriceOracleSentinelUpdated","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"oldAddress","type":"address"},{"indexed":true,"internalType":"address","name":"newAddress","type":"address"}],"name":"PriceOracleUpdated","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"bytes32","name":"id","type":"bytes32"},{"indexed":true,"internalType":"address","name":"proxyAddress","type":"address"},{"indexed":true,"internalType":"address","name":"implementationAddress","type":"address"}],"name":"ProxyCreated","type":"event"},{"inputs":[],"name":"getACLAdmin","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"getACLManager","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"bytes32","name":"id","type":"bytes32"}],"name":"getAddress","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"getMarketId","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"getPool","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"getPoolConfigurator","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"getPoolDataProvider","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"getPriceOracle","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"getPriceOracleSentinel","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"newAclAdmin","type":"address"}],"name":"setACLAdmin","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"newAclManager","type":"address"}],"name":"setACLManager","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bytes32","name":"id","type":"bytes32"},{"internalType":"address","name":"newAddress","type":"address"}],"name":"setAddress","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bytes32","name":"id","type":"bytes32"},{"internalType":"address","name":"newImplementationAddress","type":"address"}],"name":"setAddressAsProxy","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"string","name":"newMarketId","type":"string"}],"name":"setMarketId","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"newPoolConfiguratorImpl","type":"address"}],"name":"setPoolConfiguratorImpl","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"newDataProvider","type":"address"}],"name":"setPoolDataProvider","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"newPoolImpl","type":"address"}],"name":"setPoolImpl","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"newPriceOracle","type":"address"}],"name":"setPriceOracle","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"newPriceOracleSentinel","type":"address"}],"name":"setPriceOracleSentinel","outputs":[],"stateMutability":"nonpayable","type":"function"}],"evm":{"bytecode":{"functionDebugData":{},"generatedSources":[],"linkReferences":{},"object":"","opcodes":"","sourceMap":""},"deployedBytecode":{"functionDebugData":{},"generatedSources":[],"immutableReferences":{},"linkReferences":{},"object":"","opcodes":"","sourceMap":""},"methodIdentifiers":{"getACLAdmin()":"0e67178c","getACLManager()":"707cd716","getAddress(bytes32)":"21f8a721","getMarketId()":"568ef470","getPool()":"026b1d5f","getPoolConfigurator()":"631adfca","getPoolDataProvider()":"e860accb","getPriceOracle()":"fca513a8","getPriceOracleSentinel()":"5eb88d3d","setACLAdmin(address)":"76d84ffc","setACLManager(address)":"ed301ca9","setAddress(bytes32,address)":"ca446dd9","setAddressAsProxy(bytes32,address)":"5dcc528c","setMarketId(string)":"f67b1847","setPoolConfiguratorImpl(address)":"e4ca28b7","setPoolDataProvider(address)":"e44e9ed1","setPoolImpl(address)":"a1564406","setPriceOracle(address)":"530e784f","setPriceOracleSentinel(address)":"74944cec"}},"metadata":"{\"compiler\":{\"version\":\"0.8.30+commit.73712a01\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"oldAddress\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"newAddress\",\"type\":\"address\"}],\"name\":\"ACLAdminUpdated\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"oldAddress\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"newAddress\",\"type\":\"address\"}],\"name\":\"ACLManagerUpdated\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"bytes32\",\"name\":\"id\",\"type\":\"bytes32\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"oldAddress\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"newAddress\",\"type\":\"address\"}],\"name\":\"AddressSet\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"bytes32\",\"name\":\"id\",\"type\":\"bytes32\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"proxyAddress\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"address\",\"name\":\"oldImplementationAddress\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"newImplementationAddress\",\"type\":\"address\"}],\"name\":\"AddressSetAsProxy\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"string\",\"name\":\"oldMarketId\",\"type\":\"string\"},{\"indexed\":true,\"internalType\":\"string\",\"name\":\"newMarketId\",\"type\":\"string\"}],\"name\":\"MarketIdSet\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"oldAddress\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"newAddress\",\"type\":\"address\"}],\"name\":\"PoolConfiguratorUpdated\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"oldAddress\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"newAddress\",\"type\":\"address\"}],\"name\":\"PoolDataProviderUpdated\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"oldAddress\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"newAddress\",\"type\":\"address\"}],\"name\":\"PoolUpdated\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"oldAddress\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"newAddress\",\"type\":\"address\"}],\"name\":\"PriceOracleSentinelUpdated\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"oldAddress\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"newAddress\",\"type\":\"address\"}],\"name\":\"PriceOracleUpdated\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"bytes32\",\"name\":\"id\",\"type\":\"bytes32\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"proxyAddress\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"implementationAddress\",\"type\":\"address\"}],\"name\":\"ProxyCreated\",\"type\":\"event\"},{\"inputs\":[],\"name\":\"getACLAdmin\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"getACLManager\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"id\",\"type\":\"bytes32\"}],\"name\":\"getAddress\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"getMarketId\",\"outputs\":[{\"internalType\":\"string\",\"name\":\"\",\"type\":\"string\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"getPool\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"getPoolConfigurator\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"getPoolDataProvider\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"getPriceOracle\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"getPriceOracleSentinel\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"newAclAdmin\",\"type\":\"address\"}],\"name\":\"setACLAdmin\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"newAclManager\",\"type\":\"address\"}],\"name\":\"setACLManager\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"id\",\"type\":\"bytes32\"},{\"internalType\":\"address\",\"name\":\"newAddress\",\"type\":\"address\"}],\"name\":\"setAddress\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"id\",\"type\":\"bytes32\"},{\"internalType\":\"address\",\"name\":\"newImplementationAddress\",\"type\":\"address\"}],\"name\":\"setAddressAsProxy\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"string\",\"name\":\"newMarketId\",\"type\":\"string\"}],\"name\":\"setMarketId\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"newPoolConfiguratorImpl\",\"type\":\"address\"}],\"name\":\"setPoolConfiguratorImpl\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"newDataProvider\",\"type\":\"address\"}],\"name\":\"setPoolDataProvider\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"newPoolImpl\",\"type\":\"address\"}],\"name\":\"setPoolImpl\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"newPriceOracle\",\"type\":\"address\"}],\"name\":\"setPriceOracle\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"newPriceOracleSentinel\",\"type\":\"address\"}],\"name\":\"setPriceOracleSentinel\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"}],\"devdoc\":{\"author\":\"Aave\",\"events\":{\"ACLAdminUpdated(address,address)\":{\"details\":\"Emitted when the ACL admin is updated.\",\"params\":{\"newAddress\":\"The new address of the ACLAdmin\",\"oldAddress\":\"The old address of the ACLAdmin\"}},\"ACLManagerUpdated(address,address)\":{\"details\":\"Emitted when the ACL manager is updated.\",\"params\":{\"newAddress\":\"The new address of the ACLManager\",\"oldAddress\":\"The old address of the ACLManager\"}},\"AddressSet(bytes32,address,address)\":{\"details\":\"Emitted when a new non-proxied contract address is registered.\",\"params\":{\"id\":\"The identifier of the contract\",\"newAddress\":\"The address of the new contract\",\"oldAddress\":\"The address of the old contract\"}},\"AddressSetAsProxy(bytes32,address,address,address)\":{\"details\":\"Emitted when the implementation of the proxy registered with id is updated\",\"params\":{\"id\":\"The identifier of the contract\",\"newImplementationAddress\":\"The address of the new implementation contract\",\"oldImplementationAddress\":\"The address of the old implementation contract\",\"proxyAddress\":\"The address of the proxy contract\"}},\"MarketIdSet(string,string)\":{\"details\":\"Emitted when the market identifier is updated.\",\"params\":{\"newMarketId\":\"The new id of the market\",\"oldMarketId\":\"The old id of the market\"}},\"PoolConfiguratorUpdated(address,address)\":{\"details\":\"Emitted when the pool configurator is updated.\",\"params\":{\"newAddress\":\"The new address of the PoolConfigurator\",\"oldAddress\":\"The old address of the PoolConfigurator\"}},\"PoolDataProviderUpdated(address,address)\":{\"details\":\"Emitted when the pool data provider is updated.\",\"params\":{\"newAddress\":\"The new address of the PoolDataProvider\",\"oldAddress\":\"The old address of the PoolDataProvider\"}},\"PoolUpdated(address,address)\":{\"details\":\"Emitted when the pool is updated.\",\"params\":{\"newAddress\":\"The new address of the Pool\",\"oldAddress\":\"The old address of the Pool\"}},\"PriceOracleSentinelUpdated(address,address)\":{\"details\":\"Emitted when the price oracle sentinel is updated.\",\"params\":{\"newAddress\":\"The new address of the PriceOracleSentinel\",\"oldAddress\":\"The old address of the PriceOracleSentinel\"}},\"PriceOracleUpdated(address,address)\":{\"details\":\"Emitted when the price oracle is updated.\",\"params\":{\"newAddress\":\"The new address of the PriceOracle\",\"oldAddress\":\"The old address of the PriceOracle\"}},\"ProxyCreated(bytes32,address,address)\":{\"details\":\"Emitted when a new proxy is created.\",\"params\":{\"id\":\"The identifier of the proxy\",\"implementationAddress\":\"The address of the implementation contract\",\"proxyAddress\":\"The address of the created proxy contract\"}}},\"kind\":\"dev\",\"methods\":{\"getACLAdmin()\":{\"returns\":{\"_0\":\"The address of the ACL admin\"}},\"getACLManager()\":{\"returns\":{\"_0\":\"The address of the ACLManager\"}},\"getAddress(bytes32)\":{\"details\":\"The returned address might be an EOA or a contract, potentially proxiedIt returns ZERO if there is no registered address with the given id\",\"params\":{\"id\":\"The id\"},\"returns\":{\"_0\":\"The address of the registered for the specified id\"}},\"getMarketId()\":{\"returns\":{\"_0\":\"The market id*\"}},\"getPool()\":{\"returns\":{\"_0\":\"The Pool proxy address*\"}},\"getPoolConfigurator()\":{\"returns\":{\"_0\":\"The PoolConfigurator proxy address*\"}},\"getPoolDataProvider()\":{\"returns\":{\"_0\":\"The address of the DataProvider\"}},\"getPriceOracle()\":{\"returns\":{\"_0\":\"The address of the PriceOracle\"}},\"getPriceOracleSentinel()\":{\"returns\":{\"_0\":\"The address of the PriceOracleSentinel\"}},\"setACLAdmin(address)\":{\"params\":{\"newAclAdmin\":\"The address of the new ACL admin\"}},\"setACLManager(address)\":{\"params\":{\"newAclManager\":\"The address of the new ACLManager*\"}},\"setAddress(bytes32,address)\":{\"details\":\"IMPORTANT Use this function carefully, as it will do a hard replacement\",\"params\":{\"id\":\"The id\",\"newAddress\":\"The address to set\"}},\"setAddressAsProxy(bytes32,address)\":{\"details\":\"IMPORTANT Use this function carefully, only for ids that don't have an explicit setter function, in order to avoid unexpected consequences\",\"params\":{\"id\":\"The id\",\"newImplementationAddress\":\"The address of the new implementation\"}},\"setMarketId(string)\":{\"details\":\"This can be used to create an onchain registry of PoolAddressesProviders to identify and validate multiple Aave markets.\",\"params\":{\"newMarketId\":\"The market id\"}},\"setPoolConfiguratorImpl(address)\":{\"params\":{\"newPoolConfiguratorImpl\":\"The new PoolConfigurator implementation*\"}},\"setPoolDataProvider(address)\":{\"params\":{\"newDataProvider\":\"The address of the new DataProvider*\"}},\"setPoolImpl(address)\":{\"params\":{\"newPoolImpl\":\"The new Pool implementation*\"}},\"setPriceOracle(address)\":{\"params\":{\"newPriceOracle\":\"The address of the new PriceOracle\"}},\"setPriceOracleSentinel(address)\":{\"params\":{\"newPriceOracleSentinel\":\"The address of the new PriceOracleSentinel*\"}}},\"title\":\"IPoolAddressesProvider\",\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{\"getACLAdmin()\":{\"notice\":\"Returns the address of the ACL admin.\"},\"getACLManager()\":{\"notice\":\"Returns the address of the ACL manager.\"},\"getAddress(bytes32)\":{\"notice\":\"Returns an address by its identifier.\"},\"getMarketId()\":{\"notice\":\"Returns the id of the Aave market to which this contract points to.\"},\"getPool()\":{\"notice\":\"Returns the address of the Pool proxy.\"},\"getPoolConfigurator()\":{\"notice\":\"Returns the address of the PoolConfigurator proxy.\"},\"getPoolDataProvider()\":{\"notice\":\"Returns the address of the data provider.\"},\"getPriceOracle()\":{\"notice\":\"Returns the address of the price oracle.\"},\"getPriceOracleSentinel()\":{\"notice\":\"Returns the address of the price oracle sentinel.\"},\"setACLAdmin(address)\":{\"notice\":\"Updates the address of the ACL admin.\"},\"setACLManager(address)\":{\"notice\":\"Updates the address of the ACL manager.\"},\"setAddress(bytes32,address)\":{\"notice\":\"Sets an address for an id replacing the address saved in the addresses map.\"},\"setAddressAsProxy(bytes32,address)\":{\"notice\":\"General function to update the implementation of a proxy registered with certain `id`. If there is no proxy registered, it will instantiate one and set as implementation the `newImplementationAddress`.\"},\"setMarketId(string)\":{\"notice\":\"Associates an id with a specific PoolAddressesProvider.\"},\"setPoolConfiguratorImpl(address)\":{\"notice\":\"Updates the implementation of the PoolConfigurator, or creates a proxy setting the new `PoolConfigurator` implementation when the function is called for the first time.\"},\"setPoolDataProvider(address)\":{\"notice\":\"Updates the address of the data provider.\"},\"setPoolImpl(address)\":{\"notice\":\"Updates the implementation of the Pool, or creates a proxy setting the new `pool` implementation when the function is called for the first time.\"},\"setPriceOracle(address)\":{\"notice\":\"Updates the address of the price oracle.\"},\"setPriceOracleSentinel(address)\":{\"notice\":\"Updates the address of the price oracle sentinel.\"}},\"notice\":\"Defines the basic interface for a Pool Addresses Provider.*\",\"version\":1}},\"settings\":{\"compilationTarget\":{\"contracts/dependencies/aave-v3/IPoolAddressesProvider.sol\":\"IPoolAddressesProvider\"},\"evmVersion\":\"prague\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"enabled\":true,\"runs\":200},\"remappings\":[]},\"sources\":{\"contracts/dependencies/aave-v3/IPoolAddressesProvider.sol\":{\"keccak256\":\"0x2f70daa98416d61fd3128b1ee05f96852d84074689a2c2132a7fd587c5c9e3f0\",\"license\":\"AGPL-3.0\",\"urls\":[\"bzz-raw://7843e6da934079a714ab1d4a67a81108d3722067bde86ae2a36b6a288ab4e353\",\"dweb:/ipfs/QmWa6zUZsKJa7wKY5msQCuN7vYxi5H4QJwnp6gF2QTWfPH\"]}},\"version\":1}","storageLayout":{"storage":[],"types":null}}},"contracts/dependencies/aave-v3/ReserveConfiguration.sol":{"ReserveConfiguration":{"abi":[{"inputs":[],"name":"DEBT_CEILING_DECIMALS","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"MAX_RESERVES_COUNT","outputs":[{"internalType":"uint16","name":"","type":"uint16"}],"stateMutability":"view","type":"function"}],"evm":{"bytecode":{"functionDebugData":{},"generatedSources":[],"linkReferences":{},"object":"60a96032600b8282823980515f1a607314602657634e487b7160e01b5f525f60045260245ffd5b305f52607381538281f3fe7300000000000000000000000000000000000000003014608060405260043610603c575f3560e01c8063280d5de914604057806331b561ba14605a575b5f5ffd5b6047600281565b6040519081526020015b60405180910390f35b6061608081565b60405161ffff9091168152602001605156fea2646970667358221220d4c5947b0d8e8376abf9785f37aec74bdc74a663f205f15dcbed15b57f69387964736f6c634300081e0033","opcodes":"PUSH1 0xA9 PUSH1 0x32 PUSH1 0xB DUP3 DUP3 DUP3 CODECOPY DUP1 MLOAD PUSH0 BYTE PUSH1 0x73 EQ PUSH1 0x26 JUMPI PUSH4 0x4E487B71 PUSH1 0xE0 SHL PUSH0 MSTORE PUSH0 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH0 REVERT JUMPDEST ADDRESS PUSH0 MSTORE PUSH1 0x73 DUP2 MSTORE8 DUP3 DUP2 RETURN INVALID PUSH20 0x0 ADDRESS EQ PUSH1 0x80 PUSH1 0x40 MSTORE PUSH1 0x4 CALLDATASIZE LT PUSH1 0x3C JUMPI PUSH0 CALLDATALOAD PUSH1 0xE0 SHR DUP1 PUSH4 0x280D5DE9 EQ PUSH1 0x40 JUMPI DUP1 PUSH4 0x31B561BA EQ PUSH1 0x5A JUMPI JUMPDEST PUSH0 PUSH0 REVERT JUMPDEST PUSH1 0x47 PUSH1 0x2 DUP2 JUMP JUMPDEST PUSH1 0x40 MLOAD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST PUSH1 0x61 PUSH1 0x80 DUP2 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0xFFFF SWAP1 SWAP2 AND DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x51 JUMP INVALID LOG2 PUSH5 0x6970667358 0x22 SLT KECCAK256 0xD4 0xC5 SWAP5 PUSH28 0xD8E8376ABF9785F37AEC74BDC74A663F205F15DCBED15B57F693879 PUSH5 0x736F6C6343 STOP ADDMOD 0x1E STOP CALLER ","sourceMap":"281:23357:60:-:0;;;;;;;;;;;;;;;-1:-1:-1;;;281:23357:60;;;;;;;;;;;;;;;;;"},"deployedBytecode":{"functionDebugData":{"@DEBT_CEILING_DECIMALS_19367":{"entryPoint":null,"id":19367,"parameterSlots":0,"returnSlots":0},"@MAX_RESERVES_COUNT_19370":{"entryPoint":null,"id":19370,"parameterSlots":0,"returnSlots":0},"abi_encode_tuple_t_uint16__to_t_uint16__fromStack_library_reversed":{"entryPoint":null,"id":null,"parameterSlots":2,"returnSlots":1},"abi_encode_tuple_t_uint256__to_t_uint256__fromStack_library_reversed":{"entryPoint":null,"id":null,"parameterSlots":2,"returnSlots":1}},"generatedSources":[{"ast":{"nativeSrc":"0:402:87","nodeType":"YulBlock","src":"0:402:87","statements":[{"nativeSrc":"6:3:87","nodeType":"YulBlock","src":"6:3:87","statements":[]},{"body":{"nativeSrc":"123:76:87","nodeType":"YulBlock","src":"123:76:87","statements":[{"nativeSrc":"133:26:87","nodeType":"YulAssignment","src":"133:26:87","value":{"arguments":[{"name":"headStart","nativeSrc":"145:9:87","nodeType":"YulIdentifier","src":"145:9:87"},{"kind":"number","nativeSrc":"156:2:87","nodeType":"YulLiteral","src":"156:2:87","type":"","value":"32"}],"functionName":{"name":"add","nativeSrc":"141:3:87","nodeType":"YulIdentifier","src":"141:3:87"},"nativeSrc":"141:18:87","nodeType":"YulFunctionCall","src":"141:18:87"},"variableNames":[{"name":"tail","nativeSrc":"133:4:87","nodeType":"YulIdentifier","src":"133:4:87"}]},{"expression":{"arguments":[{"name":"headStart","nativeSrc":"175:9:87","nodeType":"YulIdentifier","src":"175:9:87"},{"name":"value0","nativeSrc":"186:6:87","nodeType":"YulIdentifier","src":"186:6:87"}],"functionName":{"name":"mstore","nativeSrc":"168:6:87","nodeType":"YulIdentifier","src":"168:6:87"},"nativeSrc":"168:25:87","nodeType":"YulFunctionCall","src":"168:25:87"},"nativeSrc":"168:25:87","nodeType":"YulExpressionStatement","src":"168:25:87"}]},"name":"abi_encode_tuple_t_uint256__to_t_uint256__fromStack_library_reversed","nativeSrc":"14:185:87","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nativeSrc":"92:9:87","nodeType":"YulTypedName","src":"92:9:87","type":""},{"name":"value0","nativeSrc":"103:6:87","nodeType":"YulTypedName","src":"103:6:87","type":""}],"returnVariables":[{"name":"tail","nativeSrc":"114:4:87","nodeType":"YulTypedName","src":"114:4:87","type":""}],"src":"14:185:87"},{"body":{"nativeSrc":"311:89:87","nodeType":"YulBlock","src":"311:89:87","statements":[{"nativeSrc":"321:26:87","nodeType":"YulAssignment","src":"321:26:87","value":{"arguments":[{"name":"headStart","nativeSrc":"333:9:87","nodeType":"YulIdentifier","src":"333:9:87"},{"kind":"number","nativeSrc":"344:2:87","nodeType":"YulLiteral","src":"344:2:87","type":"","value":"32"}],"functionName":{"name":"add","nativeSrc":"329:3:87","nodeType":"YulIdentifier","src":"329:3:87"},"nativeSrc":"329:18:87","nodeType":"YulFunctionCall","src":"329:18:87"},"variableNames":[{"name":"tail","nativeSrc":"321:4:87","nodeType":"YulIdentifier","src":"321:4:87"}]},{"expression":{"arguments":[{"name":"headStart","nativeSrc":"363:9:87","nodeType":"YulIdentifier","src":"363:9:87"},{"arguments":[{"name":"value0","nativeSrc":"378:6:87","nodeType":"YulIdentifier","src":"378:6:87"},{"kind":"number","nativeSrc":"386:6:87","nodeType":"YulLiteral","src":"386:6:87","type":"","value":"0xffff"}],"functionName":{"name":"and","nativeSrc":"374:3:87","nodeType":"YulIdentifier","src":"374:3:87"},"nativeSrc":"374:19:87","nodeType":"YulFunctionCall","src":"374:19:87"}],"functionName":{"name":"mstore","nativeSrc":"356:6:87","nodeType":"YulIdentifier","src":"356:6:87"},"nativeSrc":"356:38:87","nodeType":"YulFunctionCall","src":"356:38:87"},"nativeSrc":"356:38:87","nodeType":"YulExpressionStatement","src":"356:38:87"}]},"name":"abi_encode_tuple_t_uint16__to_t_uint16__fromStack_library_reversed","nativeSrc":"204:196:87","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nativeSrc":"280:9:87","nodeType":"YulTypedName","src":"280:9:87","type":""},{"name":"value0","nativeSrc":"291:6:87","nodeType":"YulTypedName","src":"291:6:87","type":""}],"returnVariables":[{"name":"tail","nativeSrc":"302:4:87","nodeType":"YulTypedName","src":"302:4:87","type":""}],"src":"204:196:87"}]},"contents":"{\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    function abi_encode_tuple_t_uint16__to_t_uint16__fromStack_library_reversed(headStart, value0) -> tail\n    {\n        tail := add(headStart, 32)\n        mstore(headStart, and(value0, 0xffff))\n    }\n}","id":87,"language":"Yul","name":"#utility.yul"}],"immutableReferences":{},"linkReferences":{},"object":"7300000000000000000000000000000000000000003014608060405260043610603c575f3560e01c8063280d5de914604057806331b561ba14605a575b5f5ffd5b6047600281565b6040519081526020015b60405180910390f35b6061608081565b60405161ffff9091168152602001605156fea2646970667358221220d4c5947b0d8e8376abf9785f37aec74bdc74a663f205f15dcbed15b57f69387964736f6c634300081e0033","opcodes":"PUSH20 0x0 ADDRESS EQ PUSH1 0x80 PUSH1 0x40 MSTORE PUSH1 0x4 CALLDATASIZE LT PUSH1 0x3C JUMPI PUSH0 CALLDATALOAD PUSH1 0xE0 SHR DUP1 PUSH4 0x280D5DE9 EQ PUSH1 0x40 JUMPI DUP1 PUSH4 0x31B561BA EQ PUSH1 0x5A JUMPI JUMPDEST PUSH0 PUSH0 REVERT JUMPDEST PUSH1 0x47 PUSH1 0x2 DUP2 JUMP JUMPDEST PUSH1 0x40 MLOAD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST PUSH1 0x61 PUSH1 0x80 DUP2 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0xFFFF SWAP1 SWAP2 AND DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x51 JUMP INVALID LOG2 PUSH5 0x6970667358 0x22 SLT KECCAK256 0xD4 0xC5 SWAP5 PUSH28 0xD8E8376ABF9785F37AEC74BDC74A663F205F15DCBED15B57F693879 PUSH5 0x736F6C6343 STOP ADDMOD 0x1E STOP CALLER ","sourceMap":"281:23357:60:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;5171:49;;5219:1;5171:49;;;;;168:25:87;;;156:2;141:18;5171:49:60;;;;;;;;5224:47;;5268:3;5224:47;;;;;386:6:87;374:19;;;356:38;;344:2;329:18;5224:47:60;204:196:87"},"methodIdentifiers":{"DEBT_CEILING_DECIMALS()":"280d5de9","MAX_RESERVES_COUNT()":"31b561ba"}},"metadata":"{\"compiler\":{\"version\":\"0.8.30+commit.73712a01\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"inputs\":[],\"name\":\"DEBT_CEILING_DECIMALS\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"MAX_RESERVES_COUNT\",\"outputs\":[{\"internalType\":\"uint16\",\"name\":\"\",\"type\":\"uint16\"}],\"stateMutability\":\"view\",\"type\":\"function\"}],\"devdoc\":{\"author\":\"Aave\",\"kind\":\"dev\",\"methods\":{},\"stateVariables\":{\"LIQUIDATION_THRESHOLD_START_BIT_POSITION\":{\"details\":\"For the LTV, the start bit is 0 (up to 15), hence no bitshifting is needed\"}},\"title\":\"ReserveConfiguration library\",\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{},\"notice\":\"Implements the bitmap logic to handle the reserve configuration\",\"version\":1}},\"settings\":{\"compilationTarget\":{\"contracts/dependencies/aave-v3/ReserveConfiguration.sol\":\"ReserveConfiguration\"},\"evmVersion\":\"prague\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"enabled\":true,\"runs\":200},\"remappings\":[]},\"sources\":{\"contracts/dependencies/aave-v3/DataTypes.sol\":{\"keccak256\":\"0x771cb99fd8519c974f7e12130387c4d9a997a6e8d0ac10e4303b842fe53efa88\",\"license\":\"BUSL-1.1\",\"urls\":[\"bzz-raw://0f41689d1d58bc13678c749bae8830f5a8b19b89cd135e962bf07d483350f828\",\"dweb:/ipfs/QmQSNGDxjYGqT1GU2CZzsWUTNcAtcfkg1jDGTH516nCAfN\"]},\"contracts/dependencies/aave-v3/Errors.sol\":{\"keccak256\":\"0x61757945ed506349f2cec8b99806124ef17f70644faba9860fb134df8ca34e86\",\"license\":\"BUSL-1.1\",\"urls\":[\"bzz-raw://a405589e8bb12568d3d4dbf936bcf40c43964170f3bbf380483e9df4d73f2cf7\",\"dweb:/ipfs/QmXCtAp2iom96rZnQWGDehxuPszgn6SMuB3mJcHzCq9uwx\"]},\"contracts/dependencies/aave-v3/ReserveConfiguration.sol\":{\"keccak256\":\"0x5b10e425dc3964b2c0add1d965ec9bfd51b5d4287f0fa060203e8822c8050ba4\",\"license\":\"BUSL-1.1\",\"urls\":[\"bzz-raw://f2ed401c261e8e0e6c455f16a941c28f7bb49c5f2b51e0e169b4003c72bbd1c3\",\"dweb:/ipfs/QmYtuHT71SgASLKWNydM89qrPvEApiEDyiw3xm3EzgUX7x\"]}},\"version\":1}","storageLayout":{"storage":[],"types":null}}},"contracts/dependencies/chainlink/AggregatorV3Interface.sol":{"AggregatorV3Interface":{"abi":[{"inputs":[],"name":"decimals","outputs":[{"internalType":"uint8","name":"","type":"uint8"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"description","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint80","name":"_roundId","type":"uint80"}],"name":"getRoundData","outputs":[{"internalType":"uint80","name":"roundId","type":"uint80"},{"internalType":"int256","name":"answer","type":"int256"},{"internalType":"uint256","name":"startedAt","type":"uint256"},{"internalType":"uint256","name":"updatedAt","type":"uint256"},{"internalType":"uint80","name":"answeredInRound","type":"uint80"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"latestRoundData","outputs":[{"internalType":"uint80","name":"roundId","type":"uint80"},{"internalType":"int256","name":"answer","type":"int256"},{"internalType":"uint256","name":"startedAt","type":"uint256"},{"internalType":"uint256","name":"updatedAt","type":"uint256"},{"internalType":"uint80","name":"answeredInRound","type":"uint80"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"version","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"}],"evm":{"bytecode":{"functionDebugData":{},"generatedSources":[],"linkReferences":{},"object":"","opcodes":"","sourceMap":""},"deployedBytecode":{"functionDebugData":{},"generatedSources":[],"immutableReferences":{},"linkReferences":{},"object":"","opcodes":"","sourceMap":""},"methodIdentifiers":{"decimals()":"313ce567","description()":"7284e416","getRoundData(uint80)":"9a6fc8f5","latestRoundData()":"feaf968c","version()":"54fd4d50"}},"metadata":"{\"compiler\":{\"version\":\"0.8.30+commit.73712a01\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"inputs\":[],\"name\":\"decimals\",\"outputs\":[{\"internalType\":\"uint8\",\"name\":\"\",\"type\":\"uint8\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"description\",\"outputs\":[{\"internalType\":\"string\",\"name\":\"\",\"type\":\"string\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint80\",\"name\":\"_roundId\",\"type\":\"uint80\"}],\"name\":\"getRoundData\",\"outputs\":[{\"internalType\":\"uint80\",\"name\":\"roundId\",\"type\":\"uint80\"},{\"internalType\":\"int256\",\"name\":\"answer\",\"type\":\"int256\"},{\"internalType\":\"uint256\",\"name\":\"startedAt\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"updatedAt\",\"type\":\"uint256\"},{\"internalType\":\"uint80\",\"name\":\"answeredInRound\",\"type\":\"uint80\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"latestRoundData\",\"outputs\":[{\"internalType\":\"uint80\",\"name\":\"roundId\",\"type\":\"uint80\"},{\"internalType\":\"int256\",\"name\":\"answer\",\"type\":\"int256\"},{\"internalType\":\"uint256\",\"name\":\"startedAt\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"updatedAt\",\"type\":\"uint256\"},{\"internalType\":\"uint80\",\"name\":\"answeredInRound\",\"type\":\"uint80\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"version\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"}],\"devdoc\":{\"kind\":\"dev\",\"methods\":{},\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{},\"version\":1}},\"settings\":{\"compilationTarget\":{\"contracts/dependencies/chainlink/AggregatorV3Interface.sol\":\"AggregatorV3Interface\"},\"evmVersion\":\"prague\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"enabled\":true,\"runs\":200},\"remappings\":[]},\"sources\":{\"contracts/dependencies/chainlink/AggregatorV3Interface.sol\":{\"keccak256\":\"0x257a8d28fa83d3d942547c8e129ef465e4b5f3f31171e7be4739a4c98da6b4f0\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://6d39e11b1dc7b9b8ccdabbc9be442ab7cda4a81c748f57e316dcb1bcb4a28bf9\",\"dweb:/ipfs/QmaG6vz6W6iEUBsbHSBob5mdcitYxWjoygxREHpsJHfWrS\"]}},\"version\":1}","storageLayout":{"storage":[],"types":null}}},"contracts/dependencies/compound-v3/ICometRewards.sol":{"ICometRewards":{"abi":[{"inputs":[{"internalType":"address","name":"comet","type":"address"},{"internalType":"address","name":"src","type":"address"},{"internalType":"bool","name":"shouldAccrue","type":"bool"}],"name":"claim","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"comet","type":"address"},{"internalType":"address","name":"account","type":"address"}],"name":"getRewardOwed","outputs":[{"components":[{"internalType":"address","name":"token","type":"address"},{"internalType":"uint256","name":"owed","type":"uint256"}],"internalType":"struct ICometRewards.RewardOwed","name":"","type":"tuple"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"cToken","type":"address"}],"name":"rewardConfig","outputs":[{"internalType":"address","name":"token","type":"address"},{"internalType":"uint64","name":"rescaleFactor","type":"uint64"},{"internalType":"bool","name":"shouldUpscale","type":"bool"}],"stateMutability":"nonpayable","type":"function"}],"evm":{"bytecode":{"functionDebugData":{},"generatedSources":[],"linkReferences":{},"object":"","opcodes":"","sourceMap":""},"deployedBytecode":{"functionDebugData":{},"generatedSources":[],"immutableReferences":{},"linkReferences":{},"object":"","opcodes":"","sourceMap":""},"methodIdentifiers":{"claim(address,address,bool)":"b7034f7e","getRewardOwed(address,address)":"41e0cad6","rewardConfig(address)":"2289b6b8"}},"metadata":"{\"compiler\":{\"version\":\"0.8.30+commit.73712a01\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"inputs\":[{\"internalType\":\"address\",\"name\":\"comet\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"src\",\"type\":\"address\"},{\"internalType\":\"bool\",\"name\":\"shouldAccrue\",\"type\":\"bool\"}],\"name\":\"claim\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"comet\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"}],\"name\":\"getRewardOwed\",\"outputs\":[{\"components\":[{\"internalType\":\"address\",\"name\":\"token\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"owed\",\"type\":\"uint256\"}],\"internalType\":\"struct ICometRewards.RewardOwed\",\"name\":\"\",\"type\":\"tuple\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"cToken\",\"type\":\"address\"}],\"name\":\"rewardConfig\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"token\",\"type\":\"address\"},{\"internalType\":\"uint64\",\"name\":\"rescaleFactor\",\"type\":\"uint64\"},{\"internalType\":\"bool\",\"name\":\"shouldUpscale\",\"type\":\"bool\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"}],\"devdoc\":{\"details\":\"Methods of the CometRewards interface we use      Full interface in  https://github.com/compound-finance/comet/blob/main/contracts/CometRewards.sol\",\"kind\":\"dev\",\"methods\":{},\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{},\"version\":1}},\"settings\":{\"compilationTarget\":{\"contracts/dependencies/compound-v3/ICometRewards.sol\":\"ICometRewards\"},\"evmVersion\":\"prague\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"enabled\":true,\"runs\":200},\"remappings\":[]},\"sources\":{\"contracts/dependencies/compound-v3/ICometRewards.sol\":{\"keccak256\":\"0x7b836a5c98b60f59ebbe73386ecf736ab25bd241ab0d79c31f899a08e08b9bb9\",\"license\":\"Apache-2.0\",\"urls\":[\"bzz-raw://28cab8be5e0f049460437c87ce657b3e857e68099ffad5be1b2cee9c95a14dd8\",\"dweb:/ipfs/QmZN2TXor5Pesm1vSqYfmWcdE52VxAoNixtStLXxdbnHEb\"]}},\"version\":1}","storageLayout":{"storage":[],"types":null}}},"contracts/dependencies/compound-v3/ICompoundV3.sol":{"ICompoundV3":{"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":"value","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":"baseToken","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"decimals","outputs":[{"internalType":"uint8","name":"","type":"uint8"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"isSupplyPaused","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"isWithdrawPaused","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":"asset","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"supply","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":"to","type":"address"},{"internalType":"uint256","name":"value","type":"uint256"}],"name":"transfer","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"from","type":"address"},{"internalType":"address","name":"to","type":"address"},{"internalType":"uint256","name":"value","type":"uint256"}],"name":"transferFrom","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"asset","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"withdraw","outputs":[],"stateMutability":"nonpayable","type":"function"}],"evm":{"bytecode":{"functionDebugData":{},"generatedSources":[],"linkReferences":{},"object":"","opcodes":"","sourceMap":""},"deployedBytecode":{"functionDebugData":{},"generatedSources":[],"immutableReferences":{},"linkReferences":{},"object":"","opcodes":"","sourceMap":""},"methodIdentifiers":{"allowance(address,address)":"dd62ed3e","approve(address,uint256)":"095ea7b3","balanceOf(address)":"70a08231","baseToken()":"c55dae63","decimals()":"313ce567","isSupplyPaused()":"0bc47ad1","isWithdrawPaused()":"67800b5f","name()":"06fdde03","supply(address,uint256)":"f2b9fdb8","symbol()":"95d89b41","totalSupply()":"18160ddd","transfer(address,uint256)":"a9059cbb","transferFrom(address,address,uint256)":"23b872dd","withdraw(address,uint256)":"f3fef3a3"}},"metadata":"{\"compiler\":{\"version\":\"0.8.30+commit.73712a01\"},\"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\":\"value\",\"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\":\"baseToken\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"decimals\",\"outputs\":[{\"internalType\":\"uint8\",\"name\":\"\",\"type\":\"uint8\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"isSupplyPaused\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"isWithdrawPaused\",\"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\":\"asset\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"}],\"name\":\"supply\",\"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\":\"to\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"value\",\"type\":\"uint256\"}],\"name\":\"transfer\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"from\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"value\",\"type\":\"uint256\"}],\"name\":\"transferFrom\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"asset\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"}],\"name\":\"withdraw\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"}],\"devdoc\":{\"details\":\"Methods of the CompoundV3 interface we use      Full interface in  https://github.com/compound-finance/comet/blob/main/contracts/CometExtInterface.sol  https://github.com/compound-finance/comet/blob/main/contracts/CometMainInterface.sol\",\"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 a `value` amount of tokens 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 value of tokens owned by `account`.\"},\"baseToken()\":{\"details\":\"Executes the collector and withdrawer task\"},\"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 value of tokens in existence.\"},\"transfer(address,uint256)\":{\"details\":\"Moves a `value` amount of tokens from the caller's account to `to`. Returns a boolean value indicating whether the operation succeeded. Emits a {Transfer} event.\"},\"transferFrom(address,address,uint256)\":{\"details\":\"Moves a `value` amount of tokens from `from` to `to` using the allowance mechanism. `value` 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\":{\"contracts/dependencies/compound-v3/ICompoundV3.sol\":\"ICompoundV3\"},\"evmVersion\":\"prague\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"enabled\":true,\"runs\":200},\"remappings\":[]},\"sources\":{\"@openzeppelin/contracts/token/ERC20/IERC20.sol\":{\"keccak256\":\"0x74ed01eb66b923d0d0cfe3be84604ac04b76482a55f9dd655e1ef4d367f95bc2\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://5282825a626cfe924e504274b864a652b0023591fa66f06a067b25b51ba9b303\",\"dweb:/ipfs/QmeCfPykghhMc81VJTrHTC7sF6CRvaA1FXVq2pJhwYp1dV\"]},\"@openzeppelin/contracts/token/ERC20/extensions/IERC20Metadata.sol\":{\"keccak256\":\"0xd6fa4088198f04eef10c5bce8a2f4d60554b7ec4b987f684393c01bf79b94d9f\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://f95ee0bbd4dd3ac730d066ba3e785ded4565e890dbec2fa7d3b9fe3bad9d0d6e\",\"dweb:/ipfs/QmSLr6bHkPFWT7ntj34jmwfyskpwo97T9jZUrk5sz3sdtR\"]},\"contracts/dependencies/compound-v3/ICompoundV3.sol\":{\"keccak256\":\"0x491b3cb1bbfba85cb7e8757fa2b5904b7d0e1d9abcb9cbcad8e4eb36854c13a2\",\"license\":\"Apache-2.0\",\"urls\":[\"bzz-raw://009c7702f91354376b6da7bff08301e80f4836e674ad0b56e7edf52a4131498a\",\"dweb:/ipfs/QmXL4raWtqQzs6y1RUNDUZ54zWSBjQd7PujwYpsMqUZRm9\"]}},\"version\":1}","storageLayout":{"storage":[],"types":null}}},"contracts/interfaces/IExposeStorage.sol":{"IExposeStorage":{"abi":[{"inputs":[{"internalType":"bytes32","name":"slot","type":"bytes32"}],"name":"getBytesSlot","outputs":[{"internalType":"bytes","name":"","type":"bytes"}],"stateMutability":"view","type":"function"}],"evm":{"bytecode":{"functionDebugData":{},"generatedSources":[],"linkReferences":{},"object":"","opcodes":"","sourceMap":""},"deployedBytecode":{"functionDebugData":{},"generatedSources":[],"immutableReferences":{},"linkReferences":{},"object":"","opcodes":"","sourceMap":""},"methodIdentifiers":{"getBytesSlot(bytes32)":"47e57533"}},"metadata":"{\"compiler\":{\"version\":\"0.8.30+commit.73712a01\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"slot\",\"type\":\"bytes32\"}],\"name\":\"getBytesSlot\",\"outputs\":[{\"internalType\":\"bytes\",\"name\":\"\",\"type\":\"bytes\"}],\"stateMutability\":\"view\",\"type\":\"function\"}],\"devdoc\":{\"author\":\"Ensuro\",\"custom:security-contact\":\"security@ensuro.co\",\"details\":\"Interface for calling contracts to expose the storage, used by views of the strategies if they need to access      the strategy data.\",\"kind\":\"dev\",\"methods\":{\"getBytesSlot(bytes32)\":{\"details\":\"Returns the data stored on a given slot as bytes. The contract can revert if doesn't want to share a      specific slot.\",\"params\":{\"slot\":\"The slot where the data is stored.\"},\"returns\":{\"_0\":\"The data in the specified slot as bytes\"}}},\"title\":\"IExposeStorage\",\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{},\"version\":1}},\"settings\":{\"compilationTarget\":{\"contracts/interfaces/IExposeStorage.sol\":\"IExposeStorage\"},\"evmVersion\":\"prague\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"enabled\":true,\"runs\":200},\"remappings\":[]},\"sources\":{\"contracts/interfaces/IExposeStorage.sol\":{\"keccak256\":\"0x68d4dbc7e135ac949f5f557a1f071b96d1639262188f91957bf082be7e72b1c7\",\"license\":\"Apache-2.0\",\"urls\":[\"bzz-raw://29fc549ef136e19275bb9225c8e7f02e0cc3b274acef4e6d7002c6f3f74e5c13\",\"dweb:/ipfs/QmVzrn7Cbxe8xzLwy4ZpzxP6CBEKsegXG8VusNYqssCe3d\"]}},\"version\":1}","storageLayout":{"storage":[],"types":null}}},"contracts/interfaces/IInvestStrategy.sol":{"IInvestStrategy":{"abi":[{"inputs":[{"internalType":"address","name":"contract_","type":"address"}],"name":"asset","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"bytes","name":"initData","type":"bytes"}],"name":"connect","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"assets","type":"uint256"}],"name":"deposit","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bool","name":"force","type":"bool"}],"name":"disconnect","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint8","name":"method","type":"uint8"},{"internalType":"bytes","name":"params","type":"bytes"}],"name":"forwardEntryPoint","outputs":[{"internalType":"bytes","name":"","type":"bytes"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"contract_","type":"address"}],"name":"maxDeposit","outputs":[{"internalType":"uint256","name":"maxAssets","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"contract_","type":"address"}],"name":"maxWithdraw","outputs":[{"internalType":"uint256","name":"maxAssets","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"storageSlot","outputs":[{"internalType":"bytes32","name":"","type":"bytes32"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"contract_","type":"address"}],"name":"totalAssets","outputs":[{"internalType":"uint256","name":"totalManagedAssets","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"assets","type":"uint256"}],"name":"withdraw","outputs":[],"stateMutability":"nonpayable","type":"function"}],"evm":{"bytecode":{"functionDebugData":{},"generatedSources":[],"linkReferences":{},"object":"","opcodes":"","sourceMap":""},"deployedBytecode":{"functionDebugData":{},"generatedSources":[],"immutableReferences":{},"linkReferences":{},"object":"","opcodes":"","sourceMap":""},"methodIdentifiers":{"asset(address)":"9c4667a2","connect(bytes)":"9cd47128","deposit(uint256)":"b6b55f25","disconnect(bool)":"5a117456","forwardEntryPoint(uint8,bytes)":"0981b1c2","maxDeposit(address)":"402d267d","maxWithdraw(address)":"ce96cb77","storageSlot()":"5b9a4c35","totalAssets(address)":"f3e0ffbf","withdraw(uint256)":"2e1a7d4d"}},"metadata":"{\"compiler\":{\"version\":\"0.8.30+commit.73712a01\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"inputs\":[{\"internalType\":\"address\",\"name\":\"contract_\",\"type\":\"address\"}],\"name\":\"asset\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes\",\"name\":\"initData\",\"type\":\"bytes\"}],\"name\":\"connect\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"assets\",\"type\":\"uint256\"}],\"name\":\"deposit\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bool\",\"name\":\"force\",\"type\":\"bool\"}],\"name\":\"disconnect\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint8\",\"name\":\"method\",\"type\":\"uint8\"},{\"internalType\":\"bytes\",\"name\":\"params\",\"type\":\"bytes\"}],\"name\":\"forwardEntryPoint\",\"outputs\":[{\"internalType\":\"bytes\",\"name\":\"\",\"type\":\"bytes\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"contract_\",\"type\":\"address\"}],\"name\":\"maxDeposit\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"maxAssets\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"contract_\",\"type\":\"address\"}],\"name\":\"maxWithdraw\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"maxAssets\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"storageSlot\",\"outputs\":[{\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"contract_\",\"type\":\"address\"}],\"name\":\"totalAssets\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"totalManagedAssets\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"assets\",\"type\":\"uint256\"}],\"name\":\"withdraw\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"}],\"devdoc\":{\"author\":\"Ensuro\",\"custom:security-contact\":\"security@ensuro.co\",\"details\":\"Interface that must follow investment strategies to be plugged into ERC4626 vaults. All the non-view methods      MUST be called using delegatecall, thus executed in the context of the calling vault.      The strategy can use the storage of the calling contract, but ONLY in the storageSlot computed calling      {InvestStrategyClient.makeStorageSlot}      The calling contract should implement IExposeStorage to give access to the storage to the strategy views\",\"kind\":\"dev\",\"methods\":{\"asset(address)\":{\"details\":\"The address of the underlying token used for accounting, depositing, and withdrawing. It must be the same      as `IERC4626(contract_).asset()` when dealing with vaults.\",\"params\":{\"contract_\":\"The address of the vault contract that owns the assets.\"}},\"connect(bytes)\":{\"details\":\"Called when the strategy is plugged into the vault. Initializes the strategy storage and can do validations\",\"params\":{\"initData\":\"Initialization data for the strategy. Must be parsed by the strategy, since the format is                 strategy specific\"}},\"deposit(uint256)\":{\"details\":\"Deposits a given amount of assets into the strategy. It MUST revert if it can't deposit the specified amount.      It assumes the assets are already in the contract (owned by address(this)).\",\"params\":{\"assets\":\"The amount of assets to deposit. Should be <= maxDeposit.\"}},\"disconnect(bool)\":{\"details\":\"Called when the strategy is un-plugged from the vault. Should revert if there are still assets in the      strategy, unless force==true.\",\"params\":{\"force\":\"If true, disconnect should not fail if assets remain in the strategy. Otherwise, disconnect              MUST fail if totalAssets() != 0.\"}},\"forwardEntryPoint(uint8,bytes)\":{\"details\":\"Receives an external call to execute a custom method of action in the strategy. Can be used for harvesting      rewards or other tasks. It's called with delegatecall from the calling vault. The calling vault SHOULD      do the access control validation, since the strategy normally won't do it.\",\"params\":{\"method\":\"An id of the method or action to call/execute. It's recommended to define an enum and convert the               the uint8 value into the enum.\",\"params\":\"Params for the method or action. Parsed by the strategy, it might differ from one or other method.\"}},\"maxDeposit(address)\":{\"details\":\"Returns the max amount that can be deposited into the strategy.\",\"params\":{\"contract_\":\"The address of the vault contract that owns the assets and where the strategy is plugged\"}},\"maxWithdraw(address)\":{\"details\":\"Returns the max amount that can be withdrawn from the strategy.\",\"params\":{\"contract_\":\"The address of the vault contract that owns the assets and where the strategy is plugged\"}},\"storageSlot()\":{\"details\":\"Returns the slot where the data of the strategy can be stored.       Typically it would return `InvestStrategyClient.makeStorageSlot(<strategyAddress>)`\"},\"totalAssets(address)\":{\"details\":\"Returns the number of assets under management of the investment strategy for a given contract.\",\"params\":{\"contract_\":\"The address of the vault contract that owns the assets and where the strategy is plugged\"}},\"withdraw(uint256)\":{\"details\":\"Withdraws a given amount of assets from the strategy. It MUST revert if it can't withdraw the specified amount.      Leaves the withdrawn assets in the contract (owned by address(this)).\",\"params\":{\"assets\":\"The amount of assets to withdraw. Should be <= maxWithdraw.\"}}},\"title\":\"IInvestStrategy\",\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{},\"version\":1}},\"settings\":{\"compilationTarget\":{\"contracts/interfaces/IInvestStrategy.sol\":\"IInvestStrategy\"},\"evmVersion\":\"prague\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"enabled\":true,\"runs\":200},\"remappings\":[]},\"sources\":{\"contracts/interfaces/IInvestStrategy.sol\":{\"keccak256\":\"0x6800a1f147def2252b79629150ce9cd87e914ca5a966f1035fbca6328bbc9c4b\",\"license\":\"Apache-2.0\",\"urls\":[\"bzz-raw://2e9260604e0ffcf405819f85fee4124d9a090cf716f389ff92cf76a2837a2e42\",\"dweb:/ipfs/QmVdKEW8C6MDyiiUfjBxEMTWjfPrBJadptpxh9L2uCebDK\"]}},\"version\":1}","storageLayout":{"storage":[],"types":null}}},"contracts/mock/ChainlinkOracleMock.sol":{"ChainlinkOracleMock":{"abi":[{"inputs":[{"internalType":"uint8","name":"decimals_","type":"uint8"},{"internalType":"string","name":"description_","type":"string"},{"internalType":"uint256","name":"version_","type":"uint256"}],"stateMutability":"nonpayable","type":"constructor"},{"inputs":[{"internalType":"uint80","name":"roundId","type":"uint80"},{"internalType":"int256","name":"answer","type":"int256"},{"internalType":"uint256","name":"startedAt","type":"uint256"},{"internalType":"uint256","name":"updatedAt","type":"uint256"},{"internalType":"uint80","name":"answeredInRound","type":"uint80"}],"name":"addRound","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"decimals","outputs":[{"internalType":"uint8","name":"","type":"uint8"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"description","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint80","name":"_roundId","type":"uint80"}],"name":"getRoundData","outputs":[{"internalType":"uint80","name":"roundId","type":"uint80"},{"internalType":"int256","name":"answer","type":"int256"},{"internalType":"uint256","name":"startedAt","type":"uint256"},{"internalType":"uint256","name":"updatedAt","type":"uint256"},{"internalType":"uint80","name":"answeredInRound","type":"uint80"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"lastRoundId","outputs":[{"internalType":"uint80","name":"","type":"uint80"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"latestRoundData","outputs":[{"internalType":"uint80","name":"roundId","type":"uint80"},{"internalType":"int256","name":"answer","type":"int256"},{"internalType":"uint256","name":"startedAt","type":"uint256"},{"internalType":"uint256","name":"updatedAt","type":"uint256"},{"internalType":"uint80","name":"answeredInRound","type":"uint80"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"version","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"}],"evm":{"bytecode":{"functionDebugData":{"@_20777":{"entryPoint":null,"id":20777,"parameterSlots":3,"returnSlots":0},"abi_decode_tuple_t_uint8t_string_memory_ptrt_uint256_fromMemory":{"entryPoint":104,"id":null,"parameterSlots":2,"returnSlots":3},"array_dataslot_string_storage":{"entryPoint":null,"id":null,"parameterSlots":1,"returnSlots":1},"clean_up_bytearray_end_slots_string_storage":{"entryPoint":372,"id":null,"parameterSlots":3,"returnSlots":0},"copy_byte_array_to_storage_from_t_string_memory_ptr_to_t_string_storage":{"entryPoint":448,"id":null,"parameterSlots":2,"returnSlots":0},"extract_byte_array_length":{"entryPoint":316,"id":null,"parameterSlots":1,"returnSlots":1},"extract_used_part_and_set_length_of_short_byte_array":{"entryPoint":null,"id":null,"parameterSlots":2,"returnSlots":1},"panic_error_0x41":{"entryPoint":84,"id":null,"parameterSlots":0,"returnSlots":0}},"generatedSources":[{"ast":{"nativeSrc":"0:3855:87","nodeType":"YulBlock","src":"0:3855:87","statements":[{"nativeSrc":"6:3:87","nodeType":"YulBlock","src":"6:3:87","statements":[]},{"body":{"nativeSrc":"46:95:87","nodeType":"YulBlock","src":"46:95:87","statements":[{"expression":{"arguments":[{"kind":"number","nativeSrc":"63:1:87","nodeType":"YulLiteral","src":"63:1:87","type":"","value":"0"},{"arguments":[{"kind":"number","nativeSrc":"70:3:87","nodeType":"YulLiteral","src":"70:3:87","type":"","value":"224"},{"kind":"number","nativeSrc":"75:10:87","nodeType":"YulLiteral","src":"75:10:87","type":"","value":"0x4e487b71"}],"functionName":{"name":"shl","nativeSrc":"66:3:87","nodeType":"YulIdentifier","src":"66:3:87"},"nativeSrc":"66:20:87","nodeType":"YulFunctionCall","src":"66:20:87"}],"functionName":{"name":"mstore","nativeSrc":"56:6:87","nodeType":"YulIdentifier","src":"56:6:87"},"nativeSrc":"56:31:87","nodeType":"YulFunctionCall","src":"56:31:87"},"nativeSrc":"56:31:87","nodeType":"YulExpressionStatement","src":"56:31:87"},{"expression":{"arguments":[{"kind":"number","nativeSrc":"103:1:87","nodeType":"YulLiteral","src":"103:1:87","type":"","value":"4"},{"kind":"number","nativeSrc":"106:4:87","nodeType":"YulLiteral","src":"106:4:87","type":"","value":"0x41"}],"functionName":{"name":"mstore","nativeSrc":"96:6:87","nodeType":"YulIdentifier","src":"96:6:87"},"nativeSrc":"96:15:87","nodeType":"YulFunctionCall","src":"96:15:87"},"nativeSrc":"96:15:87","nodeType":"YulExpressionStatement","src":"96:15:87"},{"expression":{"arguments":[{"kind":"number","nativeSrc":"127:1:87","nodeType":"YulLiteral","src":"127:1:87","type":"","value":"0"},{"kind":"number","nativeSrc":"130:4:87","nodeType":"YulLiteral","src":"130:4:87","type":"","value":"0x24"}],"functionName":{"name":"revert","nativeSrc":"120:6:87","nodeType":"YulIdentifier","src":"120:6:87"},"nativeSrc":"120:15:87","nodeType":"YulFunctionCall","src":"120:15:87"},"nativeSrc":"120:15:87","nodeType":"YulExpressionStatement","src":"120:15:87"}]},"name":"panic_error_0x41","nativeSrc":"14:127:87","nodeType":"YulFunctionDefinition","src":"14:127:87"},{"body":{"nativeSrc":"269:1075:87","nodeType":"YulBlock","src":"269:1075:87","statements":[{"body":{"nativeSrc":"315:16:87","nodeType":"YulBlock","src":"315:16:87","statements":[{"expression":{"arguments":[{"kind":"number","nativeSrc":"324:1:87","nodeType":"YulLiteral","src":"324:1:87","type":"","value":"0"},{"kind":"number","nativeSrc":"327:1:87","nodeType":"YulLiteral","src":"327:1:87","type":"","value":"0"}],"functionName":{"name":"revert","nativeSrc":"317:6:87","nodeType":"YulIdentifier","src":"317:6:87"},"nativeSrc":"317:12:87","nodeType":"YulFunctionCall","src":"317:12:87"},"nativeSrc":"317:12:87","nodeType":"YulExpressionStatement","src":"317:12:87"}]},"condition":{"arguments":[{"arguments":[{"name":"dataEnd","nativeSrc":"290:7:87","nodeType":"YulIdentifier","src":"290:7:87"},{"name":"headStart","nativeSrc":"299:9:87","nodeType":"YulIdentifier","src":"299:9:87"}],"functionName":{"name":"sub","nativeSrc":"286:3:87","nodeType":"YulIdentifier","src":"286:3:87"},"nativeSrc":"286:23:87","nodeType":"YulFunctionCall","src":"286:23:87"},{"kind":"number","nativeSrc":"311:2:87","nodeType":"YulLiteral","src":"311:2:87","type":"","value":"96"}],"functionName":{"name":"slt","nativeSrc":"282:3:87","nodeType":"YulIdentifier","src":"282:3:87"},"nativeSrc":"282:32:87","nodeType":"YulFunctionCall","src":"282:32:87"},"nativeSrc":"279:52:87","nodeType":"YulIf","src":"279:52:87"},{"nativeSrc":"340:29:87","nodeType":"YulVariableDeclaration","src":"340:29:87","value":{"arguments":[{"name":"headStart","nativeSrc":"359:9:87","nodeType":"YulIdentifier","src":"359:9:87"}],"functionName":{"name":"mload","nativeSrc":"353:5:87","nodeType":"YulIdentifier","src":"353:5:87"},"nativeSrc":"353:16:87","nodeType":"YulFunctionCall","src":"353:16:87"},"variables":[{"name":"value","nativeSrc":"344:5:87","nodeType":"YulTypedName","src":"344:5:87","type":""}]},{"body":{"nativeSrc":"417:16:87","nodeType":"YulBlock","src":"417:16:87","statements":[{"expression":{"arguments":[{"kind":"number","nativeSrc":"426:1:87","nodeType":"YulLiteral","src":"426:1:87","type":"","value":"0"},{"kind":"number","nativeSrc":"429:1:87","nodeType":"YulLiteral","src":"429:1:87","type":"","value":"0"}],"functionName":{"name":"revert","nativeSrc":"419:6:87","nodeType":"YulIdentifier","src":"419:6:87"},"nativeSrc":"419:12:87","nodeType":"YulFunctionCall","src":"419:12:87"},"nativeSrc":"419:12:87","nodeType":"YulExpressionStatement","src":"419:12:87"}]},"condition":{"arguments":[{"arguments":[{"name":"value","nativeSrc":"391:5:87","nodeType":"YulIdentifier","src":"391:5:87"},{"arguments":[{"name":"value","nativeSrc":"402:5:87","nodeType":"YulIdentifier","src":"402:5:87"},{"kind":"number","nativeSrc":"409:4:87","nodeType":"YulLiteral","src":"409:4:87","type":"","value":"0xff"}],"functionName":{"name":"and","nativeSrc":"398:3:87","nodeType":"YulIdentifier","src":"398:3:87"},"nativeSrc":"398:16:87","nodeType":"YulFunctionCall","src":"398:16:87"}],"functionName":{"name":"eq","nativeSrc":"388:2:87","nodeType":"YulIdentifier","src":"388:2:87"},"nativeSrc":"388:27:87","nodeType":"YulFunctionCall","src":"388:27:87"}],"functionName":{"name":"iszero","nativeSrc":"381:6:87","nodeType":"YulIdentifier","src":"381:6:87"},"nativeSrc":"381:35:87","nodeType":"YulFunctionCall","src":"381:35:87"},"nativeSrc":"378:55:87","nodeType":"YulIf","src":"378:55:87"},{"nativeSrc":"442:15:87","nodeType":"YulAssignment","src":"442:15:87","value":{"name":"value","nativeSrc":"452:5:87","nodeType":"YulIdentifier","src":"452:5:87"},"variableNames":[{"name":"value0","nativeSrc":"442:6:87","nodeType":"YulIdentifier","src":"442:6:87"}]},{"nativeSrc":"466:39:87","nodeType":"YulVariableDeclaration","src":"466:39:87","value":{"arguments":[{"arguments":[{"name":"headStart","nativeSrc":"490:9:87","nodeType":"YulIdentifier","src":"490:9:87"},{"kind":"number","nativeSrc":"501:2:87","nodeType":"YulLiteral","src":"501:2:87","type":"","value":"32"}],"functionName":{"name":"add","nativeSrc":"486:3:87","nodeType":"YulIdentifier","src":"486:3:87"},"nativeSrc":"486:18:87","nodeType":"YulFunctionCall","src":"486:18:87"}],"functionName":{"name":"mload","nativeSrc":"480:5:87","nodeType":"YulIdentifier","src":"480:5:87"},"nativeSrc":"480:25:87","nodeType":"YulFunctionCall","src":"480:25:87"},"variables":[{"name":"offset","nativeSrc":"470:6:87","nodeType":"YulTypedName","src":"470:6:87","type":""}]},{"body":{"nativeSrc":"548:16:87","nodeType":"YulBlock","src":"548:16:87","statements":[{"expression":{"arguments":[{"kind":"number","nativeSrc":"557:1:87","nodeType":"YulLiteral","src":"557:1:87","type":"","value":"0"},{"kind":"number","nativeSrc":"560:1:87","nodeType":"YulLiteral","src":"560:1:87","type":"","value":"0"}],"functionName":{"name":"revert","nativeSrc":"550:6:87","nodeType":"YulIdentifier","src":"550:6:87"},"nativeSrc":"550:12:87","nodeType":"YulFunctionCall","src":"550:12:87"},"nativeSrc":"550:12:87","nodeType":"YulExpressionStatement","src":"550:12:87"}]},"condition":{"arguments":[{"name":"offset","nativeSrc":"520:6:87","nodeType":"YulIdentifier","src":"520:6:87"},{"arguments":[{"arguments":[{"kind":"number","nativeSrc":"536:2:87","nodeType":"YulLiteral","src":"536:2:87","type":"","value":"64"},{"kind":"number","nativeSrc":"540:1:87","nodeType":"YulLiteral","src":"540:1:87","type":"","value":"1"}],"functionName":{"name":"shl","nativeSrc":"532:3:87","nodeType":"YulIdentifier","src":"532:3:87"},"nativeSrc":"532:10:87","nodeType":"YulFunctionCall","src":"532:10:87"},{"kind":"number","nativeSrc":"544:1:87","nodeType":"YulLiteral","src":"544:1:87","type":"","value":"1"}],"functionName":{"name":"sub","nativeSrc":"528:3:87","nodeType":"YulIdentifier","src":"528:3:87"},"nativeSrc":"528:18:87","nodeType":"YulFunctionCall","src":"528:18:87"}],"functionName":{"name":"gt","nativeSrc":"517:2:87","nodeType":"YulIdentifier","src":"517:2:87"},"nativeSrc":"517:30:87","nodeType":"YulFunctionCall","src":"517:30:87"},"nativeSrc":"514:50:87","nodeType":"YulIf","src":"514:50:87"},{"nativeSrc":"573:32:87","nodeType":"YulVariableDeclaration","src":"573:32:87","value":{"arguments":[{"name":"headStart","nativeSrc":"587:9:87","nodeType":"YulIdentifier","src":"587:9:87"},{"name":"offset","nativeSrc":"598:6:87","nodeType":"YulIdentifier","src":"598:6:87"}],"functionName":{"name":"add","nativeSrc":"583:3:87","nodeType":"YulIdentifier","src":"583:3:87"},"nativeSrc":"583:22:87","nodeType":"YulFunctionCall","src":"583:22:87"},"variables":[{"name":"_1","nativeSrc":"577:2:87","nodeType":"YulTypedName","src":"577:2:87","type":""}]},{"body":{"nativeSrc":"653:16:87","nodeType":"YulBlock","src":"653:16:87","statements":[{"expression":{"arguments":[{"kind":"number","nativeSrc":"662:1:87","nodeType":"YulLiteral","src":"662:1:87","type":"","value":"0"},{"kind":"number","nativeSrc":"665:1:87","nodeType":"YulLiteral","src":"665:1:87","type":"","value":"0"}],"functionName":{"name":"revert","nativeSrc":"655:6:87","nodeType":"YulIdentifier","src":"655:6:87"},"nativeSrc":"655:12:87","nodeType":"YulFunctionCall","src":"655:12:87"},"nativeSrc":"655:12:87","nodeType":"YulExpressionStatement","src":"655:12:87"}]},"condition":{"arguments":[{"arguments":[{"arguments":[{"name":"_1","nativeSrc":"632:2:87","nodeType":"YulIdentifier","src":"632:2:87"},{"kind":"number","nativeSrc":"636:4:87","nodeType":"YulLiteral","src":"636:4:87","type":"","value":"0x1f"}],"functionName":{"name":"add","nativeSrc":"628:3:87","nodeType":"YulIdentifier","src":"628:3:87"},"nativeSrc":"628:13:87","nodeType":"YulFunctionCall","src":"628:13:87"},{"name":"dataEnd","nativeSrc":"643:7:87","nodeType":"YulIdentifier","src":"643:7:87"}],"functionName":{"name":"slt","nativeSrc":"624:3:87","nodeType":"YulIdentifier","src":"624:3:87"},"nativeSrc":"624:27:87","nodeType":"YulFunctionCall","src":"624:27:87"}],"functionName":{"name":"iszero","nativeSrc":"617:6:87","nodeType":"YulIdentifier","src":"617:6:87"},"nativeSrc":"617:35:87","nodeType":"YulFunctionCall","src":"617:35:87"},"nativeSrc":"614:55:87","nodeType":"YulIf","src":"614:55:87"},{"nativeSrc":"678:23:87","nodeType":"YulVariableDeclaration","src":"678:23:87","value":{"arguments":[{"name":"_1","nativeSrc":"698:2:87","nodeType":"YulIdentifier","src":"698:2:87"}],"functionName":{"name":"mload","nativeSrc":"692:5:87","nodeType":"YulIdentifier","src":"692:5:87"},"nativeSrc":"692:9:87","nodeType":"YulFunctionCall","src":"692:9:87"},"variables":[{"name":"length","nativeSrc":"682:6:87","nodeType":"YulTypedName","src":"682:6:87","type":""}]},{"body":{"nativeSrc":"744:22:87","nodeType":"YulBlock","src":"744:22:87","statements":[{"expression":{"arguments":[],"functionName":{"name":"panic_error_0x41","nativeSrc":"746:16:87","nodeType":"YulIdentifier","src":"746:16:87"},"nativeSrc":"746:18:87","nodeType":"YulFunctionCall","src":"746:18:87"},"nativeSrc":"746:18:87","nodeType":"YulExpressionStatement","src":"746:18:87"}]},"condition":{"arguments":[{"name":"length","nativeSrc":"716:6:87","nodeType":"YulIdentifier","src":"716:6:87"},{"arguments":[{"arguments":[{"kind":"number","nativeSrc":"732:2:87","nodeType":"YulLiteral","src":"732:2:87","type":"","value":"64"},{"kind":"number","nativeSrc":"736:1:87","nodeType":"YulLiteral","src":"736:1:87","type":"","value":"1"}],"functionName":{"name":"shl","nativeSrc":"728:3:87","nodeType":"YulIdentifier","src":"728:3:87"},"nativeSrc":"728:10:87","nodeType":"YulFunctionCall","src":"728:10:87"},{"kind":"number","nativeSrc":"740:1:87","nodeType":"YulLiteral","src":"740:1:87","type":"","value":"1"}],"functionName":{"name":"sub","nativeSrc":"724:3:87","nodeType":"YulIdentifier","src":"724:3:87"},"nativeSrc":"724:18:87","nodeType":"YulFunctionCall","src":"724:18:87"}],"functionName":{"name":"gt","nativeSrc":"713:2:87","nodeType":"YulIdentifier","src":"713:2:87"},"nativeSrc":"713:30:87","nodeType":"YulFunctionCall","src":"713:30:87"},"nativeSrc":"710:56:87","nodeType":"YulIf","src":"710:56:87"},{"nativeSrc":"775:23:87","nodeType":"YulVariableDeclaration","src":"775:23:87","value":{"arguments":[{"kind":"number","nativeSrc":"795:2:87","nodeType":"YulLiteral","src":"795:2:87","type":"","value":"64"}],"functionName":{"name":"mload","nativeSrc":"789:5:87","nodeType":"YulIdentifier","src":"789:5:87"},"nativeSrc":"789:9:87","nodeType":"YulFunctionCall","src":"789:9:87"},"variables":[{"name":"memPtr","nativeSrc":"779:6:87","nodeType":"YulTypedName","src":"779:6:87","type":""}]},{"nativeSrc":"807:85:87","nodeType":"YulVariableDeclaration","src":"807:85:87","value":{"arguments":[{"name":"memPtr","nativeSrc":"829:6:87","nodeType":"YulIdentifier","src":"829:6:87"},{"arguments":[{"arguments":[{"arguments":[{"arguments":[{"name":"length","nativeSrc":"853:6:87","nodeType":"YulIdentifier","src":"853:6:87"},{"kind":"number","nativeSrc":"861:4:87","nodeType":"YulLiteral","src":"861:4:87","type":"","value":"0x1f"}],"functionName":{"name":"add","nativeSrc":"849:3:87","nodeType":"YulIdentifier","src":"849:3:87"},"nativeSrc":"849:17:87","nodeType":"YulFunctionCall","src":"849:17:87"},{"arguments":[{"kind":"number","nativeSrc":"872:2:87","nodeType":"YulLiteral","src":"872:2:87","type":"","value":"31"}],"functionName":{"name":"not","nativeSrc":"868:3:87","nodeType":"YulIdentifier","src":"868:3:87"},"nativeSrc":"868:7:87","nodeType":"YulFunctionCall","src":"868:7:87"}],"functionName":{"name":"and","nativeSrc":"845:3:87","nodeType":"YulIdentifier","src":"845:3:87"},"nativeSrc":"845:31:87","nodeType":"YulFunctionCall","src":"845:31:87"},{"kind":"number","nativeSrc":"878:2:87","nodeType":"YulLiteral","src":"878:2:87","type":"","value":"63"}],"functionName":{"name":"add","nativeSrc":"841:3:87","nodeType":"YulIdentifier","src":"841:3:87"},"nativeSrc":"841:40:87","nodeType":"YulFunctionCall","src":"841:40:87"},{"arguments":[{"kind":"number","nativeSrc":"887:2:87","nodeType":"YulLiteral","src":"887:2:87","type":"","value":"31"}],"functionName":{"name":"not","nativeSrc":"883:3:87","nodeType":"YulIdentifier","src":"883:3:87"},"nativeSrc":"883:7:87","nodeType":"YulFunctionCall","src":"883:7:87"}],"functionName":{"name":"and","nativeSrc":"837:3:87","nodeType":"YulIdentifier","src":"837:3:87"},"nativeSrc":"837:54:87","nodeType":"YulFunctionCall","src":"837:54:87"}],"functionName":{"name":"add","nativeSrc":"825:3:87","nodeType":"YulIdentifier","src":"825:3:87"},"nativeSrc":"825:67:87","nodeType":"YulFunctionCall","src":"825:67:87"},"variables":[{"name":"newFreePtr","nativeSrc":"811:10:87","nodeType":"YulTypedName","src":"811:10:87","type":""}]},{"body":{"nativeSrc":"967:22:87","nodeType":"YulBlock","src":"967:22:87","statements":[{"expression":{"arguments":[],"functionName":{"name":"panic_error_0x41","nativeSrc":"969:16:87","nodeType":"YulIdentifier","src":"969:16:87"},"nativeSrc":"969:18:87","nodeType":"YulFunctionCall","src":"969:18:87"},"nativeSrc":"969:18:87","nodeType":"YulExpressionStatement","src":"969:18:87"}]},"condition":{"arguments":[{"arguments":[{"name":"newFreePtr","nativeSrc":"910:10:87","nodeType":"YulIdentifier","src":"910:10:87"},{"arguments":[{"arguments":[{"kind":"number","nativeSrc":"930:2:87","nodeType":"YulLiteral","src":"930:2:87","type":"","value":"64"},{"kind":"number","nativeSrc":"934:1:87","nodeType":"YulLiteral","src":"934:1:87","type":"","value":"1"}],"functionName":{"name":"shl","nativeSrc":"926:3:87","nodeType":"YulIdentifier","src":"926:3:87"},"nativeSrc":"926:10:87","nodeType":"YulFunctionCall","src":"926:10:87"},{"kind":"number","nativeSrc":"938:1:87","nodeType":"YulLiteral","src":"938:1:87","type":"","value":"1"}],"functionName":{"name":"sub","nativeSrc":"922:3:87","nodeType":"YulIdentifier","src":"922:3:87"},"nativeSrc":"922:18:87","nodeType":"YulFunctionCall","src":"922:18:87"}],"functionName":{"name":"gt","nativeSrc":"907:2:87","nodeType":"YulIdentifier","src":"907:2:87"},"nativeSrc":"907:34:87","nodeType":"YulFunctionCall","src":"907:34:87"},{"arguments":[{"name":"newFreePtr","nativeSrc":"946:10:87","nodeType":"YulIdentifier","src":"946:10:87"},{"name":"memPtr","nativeSrc":"958:6:87","nodeType":"YulIdentifier","src":"958:6:87"}],"functionName":{"name":"lt","nativeSrc":"943:2:87","nodeType":"YulIdentifier","src":"943:2:87"},"nativeSrc":"943:22:87","nodeType":"YulFunctionCall","src":"943:22:87"}],"functionName":{"name":"or","nativeSrc":"904:2:87","nodeType":"YulIdentifier","src":"904:2:87"},"nativeSrc":"904:62:87","nodeType":"YulFunctionCall","src":"904:62:87"},"nativeSrc":"901:88:87","nodeType":"YulIf","src":"901:88:87"},{"expression":{"arguments":[{"kind":"number","nativeSrc":"1005:2:87","nodeType":"YulLiteral","src":"1005:2:87","type":"","value":"64"},{"name":"newFreePtr","nativeSrc":"1009:10:87","nodeType":"YulIdentifier","src":"1009:10:87"}],"functionName":{"name":"mstore","nativeSrc":"998:6:87","nodeType":"YulIdentifier","src":"998:6:87"},"nativeSrc":"998:22:87","nodeType":"YulFunctionCall","src":"998:22:87"},"nativeSrc":"998:22:87","nodeType":"YulExpressionStatement","src":"998:22:87"},{"expression":{"arguments":[{"name":"memPtr","nativeSrc":"1036:6:87","nodeType":"YulIdentifier","src":"1036:6:87"},{"name":"length","nativeSrc":"1044:6:87","nodeType":"YulIdentifier","src":"1044:6:87"}],"functionName":{"name":"mstore","nativeSrc":"1029:6:87","nodeType":"YulIdentifier","src":"1029:6:87"},"nativeSrc":"1029:22:87","nodeType":"YulFunctionCall","src":"1029:22:87"},"nativeSrc":"1029:22:87","nodeType":"YulExpressionStatement","src":"1029:22:87"},{"body":{"nativeSrc":"1101:16:87","nodeType":"YulBlock","src":"1101:16:87","statements":[{"expression":{"arguments":[{"kind":"number","nativeSrc":"1110:1:87","nodeType":"YulLiteral","src":"1110:1:87","type":"","value":"0"},{"kind":"number","nativeSrc":"1113:1:87","nodeType":"YulLiteral","src":"1113:1:87","type":"","value":"0"}],"functionName":{"name":"revert","nativeSrc":"1103:6:87","nodeType":"YulIdentifier","src":"1103:6:87"},"nativeSrc":"1103:12:87","nodeType":"YulFunctionCall","src":"1103:12:87"},"nativeSrc":"1103:12:87","nodeType":"YulExpressionStatement","src":"1103:12:87"}]},"condition":{"arguments":[{"arguments":[{"arguments":[{"name":"_1","nativeSrc":"1074:2:87","nodeType":"YulIdentifier","src":"1074:2:87"},{"name":"length","nativeSrc":"1078:6:87","nodeType":"YulIdentifier","src":"1078:6:87"}],"functionName":{"name":"add","nativeSrc":"1070:3:87","nodeType":"YulIdentifier","src":"1070:3:87"},"nativeSrc":"1070:15:87","nodeType":"YulFunctionCall","src":"1070:15:87"},{"kind":"number","nativeSrc":"1087:2:87","nodeType":"YulLiteral","src":"1087:2:87","type":"","value":"32"}],"functionName":{"name":"add","nativeSrc":"1066:3:87","nodeType":"YulIdentifier","src":"1066:3:87"},"nativeSrc":"1066:24:87","nodeType":"YulFunctionCall","src":"1066:24:87"},{"name":"dataEnd","nativeSrc":"1092:7:87","nodeType":"YulIdentifier","src":"1092:7:87"}],"functionName":{"name":"gt","nativeSrc":"1063:2:87","nodeType":"YulIdentifier","src":"1063:2:87"},"nativeSrc":"1063:37:87","nodeType":"YulFunctionCall","src":"1063:37:87"},"nativeSrc":"1060:57:87","nodeType":"YulIf","src":"1060:57:87"},{"expression":{"arguments":[{"arguments":[{"name":"memPtr","nativeSrc":"1136:6:87","nodeType":"YulIdentifier","src":"1136:6:87"},{"kind":"number","nativeSrc":"1144:2:87","nodeType":"YulLiteral","src":"1144:2:87","type":"","value":"32"}],"functionName":{"name":"add","nativeSrc":"1132:3:87","nodeType":"YulIdentifier","src":"1132:3:87"},"nativeSrc":"1132:15:87","nodeType":"YulFunctionCall","src":"1132:15:87"},{"arguments":[{"name":"_1","nativeSrc":"1153:2:87","nodeType":"YulIdentifier","src":"1153:2:87"},{"kind":"number","nativeSrc":"1157:2:87","nodeType":"YulLiteral","src":"1157:2:87","type":"","value":"32"}],"functionName":{"name":"add","nativeSrc":"1149:3:87","nodeType":"YulIdentifier","src":"1149:3:87"},"nativeSrc":"1149:11:87","nodeType":"YulFunctionCall","src":"1149:11:87"},{"name":"length","nativeSrc":"1162:6:87","nodeType":"YulIdentifier","src":"1162:6:87"}],"functionName":{"name":"mcopy","nativeSrc":"1126:5:87","nodeType":"YulIdentifier","src":"1126:5:87"},"nativeSrc":"1126:43:87","nodeType":"YulFunctionCall","src":"1126:43:87"},"nativeSrc":"1126:43:87","nodeType":"YulExpressionStatement","src":"1126:43:87"},{"expression":{"arguments":[{"arguments":[{"arguments":[{"name":"memPtr","nativeSrc":"1193:6:87","nodeType":"YulIdentifier","src":"1193:6:87"},{"name":"length","nativeSrc":"1201:6:87","nodeType":"YulIdentifier","src":"1201:6:87"}],"functionName":{"name":"add","nativeSrc":"1189:3:87","nodeType":"YulIdentifier","src":"1189:3:87"},"nativeSrc":"1189:19:87","nodeType":"YulFunctionCall","src":"1189:19:87"},{"kind":"number","nativeSrc":"1210:2:87","nodeType":"YulLiteral","src":"1210:2:87","type":"","value":"32"}],"functionName":{"name":"add","nativeSrc":"1185:3:87","nodeType":"YulIdentifier","src":"1185:3:87"},"nativeSrc":"1185:28:87","nodeType":"YulFunctionCall","src":"1185:28:87"},{"kind":"number","nativeSrc":"1215:1:87","nodeType":"YulLiteral","src":"1215:1:87","type":"","value":"0"}],"functionName":{"name":"mstore","nativeSrc":"1178:6:87","nodeType":"YulIdentifier","src":"1178:6:87"},"nativeSrc":"1178:39:87","nodeType":"YulFunctionCall","src":"1178:39:87"},"nativeSrc":"1178:39:87","nodeType":"YulExpressionStatement","src":"1178:39:87"},{"nativeSrc":"1226:16:87","nodeType":"YulAssignment","src":"1226:16:87","value":{"name":"memPtr","nativeSrc":"1236:6:87","nodeType":"YulIdentifier","src":"1236:6:87"},"variableNames":[{"name":"value1","nativeSrc":"1226:6:87","nodeType":"YulIdentifier","src":"1226:6:87"}]},{"nativeSrc":"1251:16:87","nodeType":"YulVariableDeclaration","src":"1251:16:87","value":{"kind":"number","nativeSrc":"1266:1:87","nodeType":"YulLiteral","src":"1266:1:87","type":"","value":"0"},"variables":[{"name":"value_1","nativeSrc":"1255:7:87","nodeType":"YulTypedName","src":"1255:7:87","type":""}]},{"nativeSrc":"1276:36:87","nodeType":"YulAssignment","src":"1276:36:87","value":{"arguments":[{"arguments":[{"name":"headStart","nativeSrc":"1297:9:87","nodeType":"YulIdentifier","src":"1297:9:87"},{"kind":"number","nativeSrc":"1308:2:87","nodeType":"YulLiteral","src":"1308:2:87","type":"","value":"64"}],"functionName":{"name":"add","nativeSrc":"1293:3:87","nodeType":"YulIdentifier","src":"1293:3:87"},"nativeSrc":"1293:18:87","nodeType":"YulFunctionCall","src":"1293:18:87"}],"functionName":{"name":"mload","nativeSrc":"1287:5:87","nodeType":"YulIdentifier","src":"1287:5:87"},"nativeSrc":"1287:25:87","nodeType":"YulFunctionCall","src":"1287:25:87"},"variableNames":[{"name":"value_1","nativeSrc":"1276:7:87","nodeType":"YulIdentifier","src":"1276:7:87"}]},{"nativeSrc":"1321:17:87","nodeType":"YulAssignment","src":"1321:17:87","value":{"name":"value_1","nativeSrc":"1331:7:87","nodeType":"YulIdentifier","src":"1331:7:87"},"variableNames":[{"name":"value2","nativeSrc":"1321:6:87","nodeType":"YulIdentifier","src":"1321:6:87"}]}]},"name":"abi_decode_tuple_t_uint8t_string_memory_ptrt_uint256_fromMemory","nativeSrc":"146:1198:87","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nativeSrc":"219:9:87","nodeType":"YulTypedName","src":"219:9:87","type":""},{"name":"dataEnd","nativeSrc":"230:7:87","nodeType":"YulTypedName","src":"230:7:87","type":""}],"returnVariables":[{"name":"value0","nativeSrc":"242:6:87","nodeType":"YulTypedName","src":"242:6:87","type":""},{"name":"value1","nativeSrc":"250:6:87","nodeType":"YulTypedName","src":"250:6:87","type":""},{"name":"value2","nativeSrc":"258:6:87","nodeType":"YulTypedName","src":"258:6:87","type":""}],"src":"146:1198:87"},{"body":{"nativeSrc":"1404:325:87","nodeType":"YulBlock","src":"1404:325:87","statements":[{"nativeSrc":"1414:22:87","nodeType":"YulAssignment","src":"1414:22:87","value":{"arguments":[{"kind":"number","nativeSrc":"1428:1:87","nodeType":"YulLiteral","src":"1428:1:87","type":"","value":"1"},{"name":"data","nativeSrc":"1431:4:87","nodeType":"YulIdentifier","src":"1431:4:87"}],"functionName":{"name":"shr","nativeSrc":"1424:3:87","nodeType":"YulIdentifier","src":"1424:3:87"},"nativeSrc":"1424:12:87","nodeType":"YulFunctionCall","src":"1424:12:87"},"variableNames":[{"name":"length","nativeSrc":"1414:6:87","nodeType":"YulIdentifier","src":"1414:6:87"}]},{"nativeSrc":"1445:38:87","nodeType":"YulVariableDeclaration","src":"1445:38:87","value":{"arguments":[{"name":"data","nativeSrc":"1475:4:87","nodeType":"YulIdentifier","src":"1475:4:87"},{"kind":"number","nativeSrc":"1481:1:87","nodeType":"YulLiteral","src":"1481:1:87","type":"","value":"1"}],"functionName":{"name":"and","nativeSrc":"1471:3:87","nodeType":"YulIdentifier","src":"1471:3:87"},"nativeSrc":"1471:12:87","nodeType":"YulFunctionCall","src":"1471:12:87"},"variables":[{"name":"outOfPlaceEncoding","nativeSrc":"1449:18:87","nodeType":"YulTypedName","src":"1449:18:87","type":""}]},{"body":{"nativeSrc":"1522:31:87","nodeType":"YulBlock","src":"1522:31:87","statements":[{"nativeSrc":"1524:27:87","nodeType":"YulAssignment","src":"1524:27:87","value":{"arguments":[{"name":"length","nativeSrc":"1538:6:87","nodeType":"YulIdentifier","src":"1538:6:87"},{"kind":"number","nativeSrc":"1546:4:87","nodeType":"YulLiteral","src":"1546:4:87","type":"","value":"0x7f"}],"functionName":{"name":"and","nativeSrc":"1534:3:87","nodeType":"YulIdentifier","src":"1534:3:87"},"nativeSrc":"1534:17:87","nodeType":"YulFunctionCall","src":"1534:17:87"},"variableNames":[{"name":"length","nativeSrc":"1524:6:87","nodeType":"YulIdentifier","src":"1524:6:87"}]}]},"condition":{"arguments":[{"name":"outOfPlaceEncoding","nativeSrc":"1502:18:87","nodeType":"YulIdentifier","src":"1502:18:87"}],"functionName":{"name":"iszero","nativeSrc":"1495:6:87","nodeType":"YulIdentifier","src":"1495:6:87"},"nativeSrc":"1495:26:87","nodeType":"YulFunctionCall","src":"1495:26:87"},"nativeSrc":"1492:61:87","nodeType":"YulIf","src":"1492:61:87"},{"body":{"nativeSrc":"1612:111:87","nodeType":"YulBlock","src":"1612:111:87","statements":[{"expression":{"arguments":[{"kind":"number","nativeSrc":"1633:1:87","nodeType":"YulLiteral","src":"1633:1:87","type":"","value":"0"},{"arguments":[{"kind":"number","nativeSrc":"1640:3:87","nodeType":"YulLiteral","src":"1640:3:87","type":"","value":"224"},{"kind":"number","nativeSrc":"1645:10:87","nodeType":"YulLiteral","src":"1645:10:87","type":"","value":"0x4e487b71"}],"functionName":{"name":"shl","nativeSrc":"1636:3:87","nodeType":"YulIdentifier","src":"1636:3:87"},"nativeSrc":"1636:20:87","nodeType":"YulFunctionCall","src":"1636:20:87"}],"functionName":{"name":"mstore","nativeSrc":"1626:6:87","nodeType":"YulIdentifier","src":"1626:6:87"},"nativeSrc":"1626:31:87","nodeType":"YulFunctionCall","src":"1626:31:87"},"nativeSrc":"1626:31:87","nodeType":"YulExpressionStatement","src":"1626:31:87"},{"expression":{"arguments":[{"kind":"number","nativeSrc":"1677:1:87","nodeType":"YulLiteral","src":"1677:1:87","type":"","value":"4"},{"kind":"number","nativeSrc":"1680:4:87","nodeType":"YulLiteral","src":"1680:4:87","type":"","value":"0x22"}],"functionName":{"name":"mstore","nativeSrc":"1670:6:87","nodeType":"YulIdentifier","src":"1670:6:87"},"nativeSrc":"1670:15:87","nodeType":"YulFunctionCall","src":"1670:15:87"},"nativeSrc":"1670:15:87","nodeType":"YulExpressionStatement","src":"1670:15:87"},{"expression":{"arguments":[{"kind":"number","nativeSrc":"1705:1:87","nodeType":"YulLiteral","src":"1705:1:87","type":"","value":"0"},{"kind":"number","nativeSrc":"1708:4:87","nodeType":"YulLiteral","src":"1708:4:87","type":"","value":"0x24"}],"functionName":{"name":"revert","nativeSrc":"1698:6:87","nodeType":"YulIdentifier","src":"1698:6:87"},"nativeSrc":"1698:15:87","nodeType":"YulFunctionCall","src":"1698:15:87"},"nativeSrc":"1698:15:87","nodeType":"YulExpressionStatement","src":"1698:15:87"}]},"condition":{"arguments":[{"name":"outOfPlaceEncoding","nativeSrc":"1568:18:87","nodeType":"YulIdentifier","src":"1568:18:87"},{"arguments":[{"name":"length","nativeSrc":"1591:6:87","nodeType":"YulIdentifier","src":"1591:6:87"},{"kind":"number","nativeSrc":"1599:2:87","nodeType":"YulLiteral","src":"1599:2:87","type":"","value":"32"}],"functionName":{"name":"lt","nativeSrc":"1588:2:87","nodeType":"YulIdentifier","src":"1588:2:87"},"nativeSrc":"1588:14:87","nodeType":"YulFunctionCall","src":"1588:14:87"}],"functionName":{"name":"eq","nativeSrc":"1565:2:87","nodeType":"YulIdentifier","src":"1565:2:87"},"nativeSrc":"1565:38:87","nodeType":"YulFunctionCall","src":"1565:38:87"},"nativeSrc":"1562:161:87","nodeType":"YulIf","src":"1562:161:87"}]},"name":"extract_byte_array_length","nativeSrc":"1349:380:87","nodeType":"YulFunctionDefinition","parameters":[{"name":"data","nativeSrc":"1384:4:87","nodeType":"YulTypedName","src":"1384:4:87","type":""}],"returnVariables":[{"name":"length","nativeSrc":"1393:6:87","nodeType":"YulTypedName","src":"1393:6:87","type":""}],"src":"1349:380:87"},{"body":{"nativeSrc":"1790:65:87","nodeType":"YulBlock","src":"1790:65:87","statements":[{"expression":{"arguments":[{"kind":"number","nativeSrc":"1807:1:87","nodeType":"YulLiteral","src":"1807:1:87","type":"","value":"0"},{"name":"ptr","nativeSrc":"1810:3:87","nodeType":"YulIdentifier","src":"1810:3:87"}],"functionName":{"name":"mstore","nativeSrc":"1800:6:87","nodeType":"YulIdentifier","src":"1800:6:87"},"nativeSrc":"1800:14:87","nodeType":"YulFunctionCall","src":"1800:14:87"},"nativeSrc":"1800:14:87","nodeType":"YulExpressionStatement","src":"1800:14:87"},{"nativeSrc":"1823:26:87","nodeType":"YulAssignment","src":"1823:26:87","value":{"arguments":[{"kind":"number","nativeSrc":"1841:1:87","nodeType":"YulLiteral","src":"1841:1:87","type":"","value":"0"},{"kind":"number","nativeSrc":"1844:4:87","nodeType":"YulLiteral","src":"1844:4:87","type":"","value":"0x20"}],"functionName":{"name":"keccak256","nativeSrc":"1831:9:87","nodeType":"YulIdentifier","src":"1831:9:87"},"nativeSrc":"1831:18:87","nodeType":"YulFunctionCall","src":"1831:18:87"},"variableNames":[{"name":"data","nativeSrc":"1823:4:87","nodeType":"YulIdentifier","src":"1823:4:87"}]}]},"name":"array_dataslot_string_storage","nativeSrc":"1734:121:87","nodeType":"YulFunctionDefinition","parameters":[{"name":"ptr","nativeSrc":"1773:3:87","nodeType":"YulTypedName","src":"1773:3:87","type":""}],"returnVariables":[{"name":"data","nativeSrc":"1781:4:87","nodeType":"YulTypedName","src":"1781:4:87","type":""}],"src":"1734:121:87"},{"body":{"nativeSrc":"1941:437:87","nodeType":"YulBlock","src":"1941:437:87","statements":[{"body":{"nativeSrc":"1974:398:87","nodeType":"YulBlock","src":"1974:398:87","statements":[{"expression":{"arguments":[{"kind":"number","nativeSrc":"1995:1:87","nodeType":"YulLiteral","src":"1995:1:87","type":"","value":"0"},{"name":"array","nativeSrc":"1998:5:87","nodeType":"YulIdentifier","src":"1998:5:87"}],"functionName":{"name":"mstore","nativeSrc":"1988:6:87","nodeType":"YulIdentifier","src":"1988:6:87"},"nativeSrc":"1988:16:87","nodeType":"YulFunctionCall","src":"1988:16:87"},"nativeSrc":"1988:16:87","nodeType":"YulExpressionStatement","src":"1988:16:87"},{"nativeSrc":"2017:30:87","nodeType":"YulVariableDeclaration","src":"2017:30:87","value":{"arguments":[{"kind":"number","nativeSrc":"2039:1:87","nodeType":"YulLiteral","src":"2039:1:87","type":"","value":"0"},{"kind":"number","nativeSrc":"2042:4:87","nodeType":"YulLiteral","src":"2042:4:87","type":"","value":"0x20"}],"functionName":{"name":"keccak256","nativeSrc":"2029:9:87","nodeType":"YulIdentifier","src":"2029:9:87"},"nativeSrc":"2029:18:87","nodeType":"YulFunctionCall","src":"2029:18:87"},"variables":[{"name":"data","nativeSrc":"2021:4:87","nodeType":"YulTypedName","src":"2021:4:87","type":""}]},{"nativeSrc":"2060:57:87","nodeType":"YulVariableDeclaration","src":"2060:57:87","value":{"arguments":[{"name":"data","nativeSrc":"2083:4:87","nodeType":"YulIdentifier","src":"2083:4:87"},{"arguments":[{"kind":"number","nativeSrc":"2093:1:87","nodeType":"YulLiteral","src":"2093:1:87","type":"","value":"5"},{"arguments":[{"name":"startIndex","nativeSrc":"2100:10:87","nodeType":"YulIdentifier","src":"2100:10:87"},{"kind":"number","nativeSrc":"2112:2:87","nodeType":"YulLiteral","src":"2112:2:87","type":"","value":"31"}],"functionName":{"name":"add","nativeSrc":"2096:3:87","nodeType":"YulIdentifier","src":"2096:3:87"},"nativeSrc":"2096:19:87","nodeType":"YulFunctionCall","src":"2096:19:87"}],"functionName":{"name":"shr","nativeSrc":"2089:3:87","nodeType":"YulIdentifier","src":"2089:3:87"},"nativeSrc":"2089:27:87","nodeType":"YulFunctionCall","src":"2089:27:87"}],"functionName":{"name":"add","nativeSrc":"2079:3:87","nodeType":"YulIdentifier","src":"2079:3:87"},"nativeSrc":"2079:38:87","nodeType":"YulFunctionCall","src":"2079:38:87"},"variables":[{"name":"deleteStart","nativeSrc":"2064:11:87","nodeType":"YulTypedName","src":"2064:11:87","type":""}]},{"body":{"nativeSrc":"2154:23:87","nodeType":"YulBlock","src":"2154:23:87","statements":[{"nativeSrc":"2156:19:87","nodeType":"YulAssignment","src":"2156:19:87","value":{"name":"data","nativeSrc":"2171:4:87","nodeType":"YulIdentifier","src":"2171:4:87"},"variableNames":[{"name":"deleteStart","nativeSrc":"2156:11:87","nodeType":"YulIdentifier","src":"2156:11:87"}]}]},"condition":{"arguments":[{"name":"startIndex","nativeSrc":"2136:10:87","nodeType":"YulIdentifier","src":"2136:10:87"},{"kind":"number","nativeSrc":"2148:4:87","nodeType":"YulLiteral","src":"2148:4:87","type":"","value":"0x20"}],"functionName":{"name":"lt","nativeSrc":"2133:2:87","nodeType":"YulIdentifier","src":"2133:2:87"},"nativeSrc":"2133:20:87","nodeType":"YulFunctionCall","src":"2133:20:87"},"nativeSrc":"2130:47:87","nodeType":"YulIf","src":"2130:47:87"},{"nativeSrc":"2190:41:87","nodeType":"YulVariableDeclaration","src":"2190:41:87","value":{"arguments":[{"name":"data","nativeSrc":"2204:4:87","nodeType":"YulIdentifier","src":"2204:4:87"},{"arguments":[{"kind":"number","nativeSrc":"2214:1:87","nodeType":"YulLiteral","src":"2214:1:87","type":"","value":"5"},{"arguments":[{"name":"len","nativeSrc":"2221:3:87","nodeType":"YulIdentifier","src":"2221:3:87"},{"kind":"number","nativeSrc":"2226:2:87","nodeType":"YulLiteral","src":"2226:2:87","type":"","value":"31"}],"functionName":{"name":"add","nativeSrc":"2217:3:87","nodeType":"YulIdentifier","src":"2217:3:87"},"nativeSrc":"2217:12:87","nodeType":"YulFunctionCall","src":"2217:12:87"}],"functionName":{"name":"shr","nativeSrc":"2210:3:87","nodeType":"YulIdentifier","src":"2210:3:87"},"nativeSrc":"2210:20:87","nodeType":"YulFunctionCall","src":"2210:20:87"}],"functionName":{"name":"add","nativeSrc":"2200:3:87","nodeType":"YulIdentifier","src":"2200:3:87"},"nativeSrc":"2200:31:87","nodeType":"YulFunctionCall","src":"2200:31:87"},"variables":[{"name":"_1","nativeSrc":"2194:2:87","nodeType":"YulTypedName","src":"2194:2:87","type":""}]},{"nativeSrc":"2244:24:87","nodeType":"YulVariableDeclaration","src":"2244:24:87","value":{"name":"deleteStart","nativeSrc":"2257:11:87","nodeType":"YulIdentifier","src":"2257:11:87"},"variables":[{"name":"start","nativeSrc":"2248:5:87","nodeType":"YulTypedName","src":"2248:5:87","type":""}]},{"body":{"nativeSrc":"2342:20:87","nodeType":"YulBlock","src":"2342:20:87","statements":[{"expression":{"arguments":[{"name":"start","nativeSrc":"2351:5:87","nodeType":"YulIdentifier","src":"2351:5:87"},{"kind":"number","nativeSrc":"2358:1:87","nodeType":"YulLiteral","src":"2358:1:87","type":"","value":"0"}],"functionName":{"name":"sstore","nativeSrc":"2344:6:87","nodeType":"YulIdentifier","src":"2344:6:87"},"nativeSrc":"2344:16:87","nodeType":"YulFunctionCall","src":"2344:16:87"},"nativeSrc":"2344:16:87","nodeType":"YulExpressionStatement","src":"2344:16:87"}]},"condition":{"arguments":[{"name":"start","nativeSrc":"2292:5:87","nodeType":"YulIdentifier","src":"2292:5:87"},{"name":"_1","nativeSrc":"2299:2:87","nodeType":"YulIdentifier","src":"2299:2:87"}],"functionName":{"name":"lt","nativeSrc":"2289:2:87","nodeType":"YulIdentifier","src":"2289:2:87"},"nativeSrc":"2289:13:87","nodeType":"YulFunctionCall","src":"2289:13:87"},"nativeSrc":"2281:81:87","nodeType":"YulForLoop","post":{"nativeSrc":"2303:26:87","nodeType":"YulBlock","src":"2303:26:87","statements":[{"nativeSrc":"2305:22:87","nodeType":"YulAssignment","src":"2305:22:87","value":{"arguments":[{"name":"start","nativeSrc":"2318:5:87","nodeType":"YulIdentifier","src":"2318:5:87"},{"kind":"number","nativeSrc":"2325:1:87","nodeType":"YulLiteral","src":"2325:1:87","type":"","value":"1"}],"functionName":{"name":"add","nativeSrc":"2314:3:87","nodeType":"YulIdentifier","src":"2314:3:87"},"nativeSrc":"2314:13:87","nodeType":"YulFunctionCall","src":"2314:13:87"},"variableNames":[{"name":"start","nativeSrc":"2305:5:87","nodeType":"YulIdentifier","src":"2305:5:87"}]}]},"pre":{"nativeSrc":"2285:3:87","nodeType":"YulBlock","src":"2285:3:87","statements":[]},"src":"2281:81:87"}]},"condition":{"arguments":[{"name":"len","nativeSrc":"1957:3:87","nodeType":"YulIdentifier","src":"1957:3:87"},{"kind":"number","nativeSrc":"1962:2:87","nodeType":"YulLiteral","src":"1962:2:87","type":"","value":"31"}],"functionName":{"name":"gt","nativeSrc":"1954:2:87","nodeType":"YulIdentifier","src":"1954:2:87"},"nativeSrc":"1954:11:87","nodeType":"YulFunctionCall","src":"1954:11:87"},"nativeSrc":"1951:421:87","nodeType":"YulIf","src":"1951:421:87"}]},"name":"clean_up_bytearray_end_slots_string_storage","nativeSrc":"1860:518:87","nodeType":"YulFunctionDefinition","parameters":[{"name":"array","nativeSrc":"1913:5:87","nodeType":"YulTypedName","src":"1913:5:87","type":""},{"name":"len","nativeSrc":"1920:3:87","nodeType":"YulTypedName","src":"1920:3:87","type":""},{"name":"startIndex","nativeSrc":"1925:10:87","nodeType":"YulTypedName","src":"1925:10:87","type":""}],"src":"1860:518:87"},{"body":{"nativeSrc":"2468:81:87","nodeType":"YulBlock","src":"2468:81:87","statements":[{"nativeSrc":"2478:65:87","nodeType":"YulAssignment","src":"2478:65:87","value":{"arguments":[{"arguments":[{"name":"data","nativeSrc":"2493:4:87","nodeType":"YulIdentifier","src":"2493:4:87"},{"arguments":[{"arguments":[{"arguments":[{"kind":"number","nativeSrc":"2511:1:87","nodeType":"YulLiteral","src":"2511:1:87","type":"","value":"3"},{"name":"len","nativeSrc":"2514:3:87","nodeType":"YulIdentifier","src":"2514:3:87"}],"functionName":{"name":"shl","nativeSrc":"2507:3:87","nodeType":"YulIdentifier","src":"2507:3:87"},"nativeSrc":"2507:11:87","nodeType":"YulFunctionCall","src":"2507:11:87"},{"arguments":[{"kind":"number","nativeSrc":"2524:1:87","nodeType":"YulLiteral","src":"2524:1:87","type":"","value":"0"}],"functionName":{"name":"not","nativeSrc":"2520:3:87","nodeType":"YulIdentifier","src":"2520:3:87"},"nativeSrc":"2520:6:87","nodeType":"YulFunctionCall","src":"2520:6:87"}],"functionName":{"name":"shr","nativeSrc":"2503:3:87","nodeType":"YulIdentifier","src":"2503:3:87"},"nativeSrc":"2503:24:87","nodeType":"YulFunctionCall","src":"2503:24:87"}],"functionName":{"name":"not","nativeSrc":"2499:3:87","nodeType":"YulIdentifier","src":"2499:3:87"},"nativeSrc":"2499:29:87","nodeType":"YulFunctionCall","src":"2499:29:87"}],"functionName":{"name":"and","nativeSrc":"2489:3:87","nodeType":"YulIdentifier","src":"2489:3:87"},"nativeSrc":"2489:40:87","nodeType":"YulFunctionCall","src":"2489:40:87"},{"arguments":[{"kind":"number","nativeSrc":"2535:1:87","nodeType":"YulLiteral","src":"2535:1:87","type":"","value":"1"},{"name":"len","nativeSrc":"2538:3:87","nodeType":"YulIdentifier","src":"2538:3:87"}],"functionName":{"name":"shl","nativeSrc":"2531:3:87","nodeType":"YulIdentifier","src":"2531:3:87"},"nativeSrc":"2531:11:87","nodeType":"YulFunctionCall","src":"2531:11:87"}],"functionName":{"name":"or","nativeSrc":"2486:2:87","nodeType":"YulIdentifier","src":"2486:2:87"},"nativeSrc":"2486:57:87","nodeType":"YulFunctionCall","src":"2486:57:87"},"variableNames":[{"name":"used","nativeSrc":"2478:4:87","nodeType":"YulIdentifier","src":"2478:4:87"}]}]},"name":"extract_used_part_and_set_length_of_short_byte_array","nativeSrc":"2383:166:87","nodeType":"YulFunctionDefinition","parameters":[{"name":"data","nativeSrc":"2445:4:87","nodeType":"YulTypedName","src":"2445:4:87","type":""},{"name":"len","nativeSrc":"2451:3:87","nodeType":"YulTypedName","src":"2451:3:87","type":""}],"returnVariables":[{"name":"used","nativeSrc":"2459:4:87","nodeType":"YulTypedName","src":"2459:4:87","type":""}],"src":"2383:166:87"},{"body":{"nativeSrc":"2650:1203:87","nodeType":"YulBlock","src":"2650:1203:87","statements":[{"nativeSrc":"2660:24:87","nodeType":"YulVariableDeclaration","src":"2660:24:87","value":{"arguments":[{"name":"src","nativeSrc":"2680:3:87","nodeType":"YulIdentifier","src":"2680:3:87"}],"functionName":{"name":"mload","nativeSrc":"2674:5:87","nodeType":"YulIdentifier","src":"2674:5:87"},"nativeSrc":"2674:10:87","nodeType":"YulFunctionCall","src":"2674:10:87"},"variables":[{"name":"newLen","nativeSrc":"2664:6:87","nodeType":"YulTypedName","src":"2664:6:87","type":""}]},{"body":{"nativeSrc":"2727:22:87","nodeType":"YulBlock","src":"2727:22:87","statements":[{"expression":{"arguments":[],"functionName":{"name":"panic_error_0x41","nativeSrc":"2729:16:87","nodeType":"YulIdentifier","src":"2729:16:87"},"nativeSrc":"2729:18:87","nodeType":"YulFunctionCall","src":"2729:18:87"},"nativeSrc":"2729:18:87","nodeType":"YulExpressionStatement","src":"2729:18:87"}]},"condition":{"arguments":[{"name":"newLen","nativeSrc":"2699:6:87","nodeType":"YulIdentifier","src":"2699:6:87"},{"arguments":[{"arguments":[{"kind":"number","nativeSrc":"2715:2:87","nodeType":"YulLiteral","src":"2715:2:87","type":"","value":"64"},{"kind":"number","nativeSrc":"2719:1:87","nodeType":"YulLiteral","src":"2719:1:87","type":"","value":"1"}],"functionName":{"name":"shl","nativeSrc":"2711:3:87","nodeType":"YulIdentifier","src":"2711:3:87"},"nativeSrc":"2711:10:87","nodeType":"YulFunctionCall","src":"2711:10:87"},{"kind":"number","nativeSrc":"2723:1:87","nodeType":"YulLiteral","src":"2723:1:87","type":"","value":"1"}],"functionName":{"name":"sub","nativeSrc":"2707:3:87","nodeType":"YulIdentifier","src":"2707:3:87"},"nativeSrc":"2707:18:87","nodeType":"YulFunctionCall","src":"2707:18:87"}],"functionName":{"name":"gt","nativeSrc":"2696:2:87","nodeType":"YulIdentifier","src":"2696:2:87"},"nativeSrc":"2696:30:87","nodeType":"YulFunctionCall","src":"2696:30:87"},"nativeSrc":"2693:56:87","nodeType":"YulIf","src":"2693:56:87"},{"expression":{"arguments":[{"name":"slot","nativeSrc":"2802:4:87","nodeType":"YulIdentifier","src":"2802:4:87"},{"arguments":[{"arguments":[{"name":"slot","nativeSrc":"2840:4:87","nodeType":"YulIdentifier","src":"2840:4:87"}],"functionName":{"name":"sload","nativeSrc":"2834:5:87","nodeType":"YulIdentifier","src":"2834:5:87"},"nativeSrc":"2834:11:87","nodeType":"YulFunctionCall","src":"2834:11:87"}],"functionName":{"name":"extract_byte_array_length","nativeSrc":"2808:25:87","nodeType":"YulIdentifier","src":"2808:25:87"},"nativeSrc":"2808:38:87","nodeType":"YulFunctionCall","src":"2808:38:87"},{"name":"newLen","nativeSrc":"2848:6:87","nodeType":"YulIdentifier","src":"2848:6:87"}],"functionName":{"name":"clean_up_bytearray_end_slots_string_storage","nativeSrc":"2758:43:87","nodeType":"YulIdentifier","src":"2758:43:87"},"nativeSrc":"2758:97:87","nodeType":"YulFunctionCall","src":"2758:97:87"},"nativeSrc":"2758:97:87","nodeType":"YulExpressionStatement","src":"2758:97:87"},{"nativeSrc":"2864:18:87","nodeType":"YulVariableDeclaration","src":"2864:18:87","value":{"kind":"number","nativeSrc":"2881:1:87","nodeType":"YulLiteral","src":"2881:1:87","type":"","value":"0"},"variables":[{"name":"srcOffset","nativeSrc":"2868:9:87","nodeType":"YulTypedName","src":"2868:9:87","type":""}]},{"nativeSrc":"2891:17:87","nodeType":"YulAssignment","src":"2891:17:87","value":{"kind":"number","nativeSrc":"2904:4:87","nodeType":"YulLiteral","src":"2904:4:87","type":"","value":"0x20"},"variableNames":[{"name":"srcOffset","nativeSrc":"2891:9:87","nodeType":"YulIdentifier","src":"2891:9:87"}]},{"cases":[{"body":{"nativeSrc":"2954:642:87","nodeType":"YulBlock","src":"2954:642:87","statements":[{"nativeSrc":"2968:35:87","nodeType":"YulVariableDeclaration","src":"2968:35:87","value":{"arguments":[{"name":"newLen","nativeSrc":"2987:6:87","nodeType":"YulIdentifier","src":"2987:6:87"},{"arguments":[{"kind":"number","nativeSrc":"2999:2:87","nodeType":"YulLiteral","src":"2999:2:87","type":"","value":"31"}],"functionName":{"name":"not","nativeSrc":"2995:3:87","nodeType":"YulIdentifier","src":"2995:3:87"},"nativeSrc":"2995:7:87","nodeType":"YulFunctionCall","src":"2995:7:87"}],"functionName":{"name":"and","nativeSrc":"2983:3:87","nodeType":"YulIdentifier","src":"2983:3:87"},"nativeSrc":"2983:20:87","nodeType":"YulFunctionCall","src":"2983:20:87"},"variables":[{"name":"loopEnd","nativeSrc":"2972:7:87","nodeType":"YulTypedName","src":"2972:7:87","type":""}]},{"nativeSrc":"3016:49:87","nodeType":"YulVariableDeclaration","src":"3016:49:87","value":{"arguments":[{"name":"slot","nativeSrc":"3060:4:87","nodeType":"YulIdentifier","src":"3060:4:87"}],"functionName":{"name":"array_dataslot_string_storage","nativeSrc":"3030:29:87","nodeType":"YulIdentifier","src":"3030:29:87"},"nativeSrc":"3030:35:87","nodeType":"YulFunctionCall","src":"3030:35:87"},"variables":[{"name":"dstPtr","nativeSrc":"3020:6:87","nodeType":"YulTypedName","src":"3020:6:87","type":""}]},{"nativeSrc":"3078:10:87","nodeType":"YulVariableDeclaration","src":"3078:10:87","value":{"kind":"number","nativeSrc":"3087:1:87","nodeType":"YulLiteral","src":"3087:1:87","type":"","value":"0"},"variables":[{"name":"i","nativeSrc":"3082:1:87","nodeType":"YulTypedName","src":"3082:1:87","type":""}]},{"body":{"nativeSrc":"3158:165:87","nodeType":"YulBlock","src":"3158:165:87","statements":[{"expression":{"arguments":[{"name":"dstPtr","nativeSrc":"3183:6:87","nodeType":"YulIdentifier","src":"3183:6:87"},{"arguments":[{"arguments":[{"name":"src","nativeSrc":"3201:3:87","nodeType":"YulIdentifier","src":"3201:3:87"},{"name":"srcOffset","nativeSrc":"3206:9:87","nodeType":"YulIdentifier","src":"3206:9:87"}],"functionName":{"name":"add","nativeSrc":"3197:3:87","nodeType":"YulIdentifier","src":"3197:3:87"},"nativeSrc":"3197:19:87","nodeType":"YulFunctionCall","src":"3197:19:87"}],"functionName":{"name":"mload","nativeSrc":"3191:5:87","nodeType":"YulIdentifier","src":"3191:5:87"},"nativeSrc":"3191:26:87","nodeType":"YulFunctionCall","src":"3191:26:87"}],"functionName":{"name":"sstore","nativeSrc":"3176:6:87","nodeType":"YulIdentifier","src":"3176:6:87"},"nativeSrc":"3176:42:87","nodeType":"YulFunctionCall","src":"3176:42:87"},"nativeSrc":"3176:42:87","nodeType":"YulExpressionStatement","src":"3176:42:87"},{"nativeSrc":"3235:24:87","nodeType":"YulAssignment","src":"3235:24:87","value":{"arguments":[{"name":"dstPtr","nativeSrc":"3249:6:87","nodeType":"YulIdentifier","src":"3249:6:87"},{"kind":"number","nativeSrc":"3257:1:87","nodeType":"YulLiteral","src":"3257:1:87","type":"","value":"1"}],"functionName":{"name":"add","nativeSrc":"3245:3:87","nodeType":"YulIdentifier","src":"3245:3:87"},"nativeSrc":"3245:14:87","nodeType":"YulFunctionCall","src":"3245:14:87"},"variableNames":[{"name":"dstPtr","nativeSrc":"3235:6:87","nodeType":"YulIdentifier","src":"3235:6:87"}]},{"nativeSrc":"3276:33:87","nodeType":"YulAssignment","src":"3276:33:87","value":{"arguments":[{"name":"srcOffset","nativeSrc":"3293:9:87","nodeType":"YulIdentifier","src":"3293:9:87"},{"kind":"number","nativeSrc":"3304:4:87","nodeType":"YulLiteral","src":"3304:4:87","type":"","value":"0x20"}],"functionName":{"name":"add","nativeSrc":"3289:3:87","nodeType":"YulIdentifier","src":"3289:3:87"},"nativeSrc":"3289:20:87","nodeType":"YulFunctionCall","src":"3289:20:87"},"variableNames":[{"name":"srcOffset","nativeSrc":"3276:9:87","nodeType":"YulIdentifier","src":"3276:9:87"}]}]},"condition":{"arguments":[{"name":"i","nativeSrc":"3112:1:87","nodeType":"YulIdentifier","src":"3112:1:87"},{"name":"loopEnd","nativeSrc":"3115:7:87","nodeType":"YulIdentifier","src":"3115:7:87"}],"functionName":{"name":"lt","nativeSrc":"3109:2:87","nodeType":"YulIdentifier","src":"3109:2:87"},"nativeSrc":"3109:14:87","nodeType":"YulFunctionCall","src":"3109:14:87"},"nativeSrc":"3101:222:87","nodeType":"YulForLoop","post":{"nativeSrc":"3124:21:87","nodeType":"YulBlock","src":"3124:21:87","statements":[{"nativeSrc":"3126:17:87","nodeType":"YulAssignment","src":"3126:17:87","value":{"arguments":[{"name":"i","nativeSrc":"3135:1:87","nodeType":"YulIdentifier","src":"3135:1:87"},{"kind":"number","nativeSrc":"3138:4:87","nodeType":"YulLiteral","src":"3138:4:87","type":"","value":"0x20"}],"functionName":{"name":"add","nativeSrc":"3131:3:87","nodeType":"YulIdentifier","src":"3131:3:87"},"nativeSrc":"3131:12:87","nodeType":"YulFunctionCall","src":"3131:12:87"},"variableNames":[{"name":"i","nativeSrc":"3126:1:87","nodeType":"YulIdentifier","src":"3126:1:87"}]}]},"pre":{"nativeSrc":"3105:3:87","nodeType":"YulBlock","src":"3105:3:87","statements":[]},"src":"3101:222:87"},{"body":{"nativeSrc":"3371:166:87","nodeType":"YulBlock","src":"3371:166:87","statements":[{"nativeSrc":"3389:43:87","nodeType":"YulVariableDeclaration","src":"3389:43:87","value":{"arguments":[{"arguments":[{"name":"src","nativeSrc":"3416:3:87","nodeType":"YulIdentifier","src":"3416:3:87"},{"name":"srcOffset","nativeSrc":"3421:9:87","nodeType":"YulIdentifier","src":"3421:9:87"}],"functionName":{"name":"add","nativeSrc":"3412:3:87","nodeType":"YulIdentifier","src":"3412:3:87"},"nativeSrc":"3412:19:87","nodeType":"YulFunctionCall","src":"3412:19:87"}],"functionName":{"name":"mload","nativeSrc":"3406:5:87","nodeType":"YulIdentifier","src":"3406:5:87"},"nativeSrc":"3406:26:87","nodeType":"YulFunctionCall","src":"3406:26:87"},"variables":[{"name":"lastValue","nativeSrc":"3393:9:87","nodeType":"YulTypedName","src":"3393:9:87","type":""}]},{"expression":{"arguments":[{"name":"dstPtr","nativeSrc":"3456:6:87","nodeType":"YulIdentifier","src":"3456:6:87"},{"arguments":[{"name":"lastValue","nativeSrc":"3468:9:87","nodeType":"YulIdentifier","src":"3468:9:87"},{"arguments":[{"arguments":[{"arguments":[{"arguments":[{"kind":"number","nativeSrc":"3495:1:87","nodeType":"YulLiteral","src":"3495:1:87","type":"","value":"3"},{"name":"newLen","nativeSrc":"3498:6:87","nodeType":"YulIdentifier","src":"3498:6:87"}],"functionName":{"name":"shl","nativeSrc":"3491:3:87","nodeType":"YulIdentifier","src":"3491:3:87"},"nativeSrc":"3491:14:87","nodeType":"YulFunctionCall","src":"3491:14:87"},{"kind":"number","nativeSrc":"3507:3:87","nodeType":"YulLiteral","src":"3507:3:87","type":"","value":"248"}],"functionName":{"name":"and","nativeSrc":"3487:3:87","nodeType":"YulIdentifier","src":"3487:3:87"},"nativeSrc":"3487:24:87","nodeType":"YulFunctionCall","src":"3487:24:87"},{"arguments":[{"kind":"number","nativeSrc":"3517:1:87","nodeType":"YulLiteral","src":"3517:1:87","type":"","value":"0"}],"functionName":{"name":"not","nativeSrc":"3513:3:87","nodeType":"YulIdentifier","src":"3513:3:87"},"nativeSrc":"3513:6:87","nodeType":"YulFunctionCall","src":"3513:6:87"}],"functionName":{"name":"shr","nativeSrc":"3483:3:87","nodeType":"YulIdentifier","src":"3483:3:87"},"nativeSrc":"3483:37:87","nodeType":"YulFunctionCall","src":"3483:37:87"}],"functionName":{"name":"not","nativeSrc":"3479:3:87","nodeType":"YulIdentifier","src":"3479:3:87"},"nativeSrc":"3479:42:87","nodeType":"YulFunctionCall","src":"3479:42:87"}],"functionName":{"name":"and","nativeSrc":"3464:3:87","nodeType":"YulIdentifier","src":"3464:3:87"},"nativeSrc":"3464:58:87","nodeType":"YulFunctionCall","src":"3464:58:87"}],"functionName":{"name":"sstore","nativeSrc":"3449:6:87","nodeType":"YulIdentifier","src":"3449:6:87"},"nativeSrc":"3449:74:87","nodeType":"YulFunctionCall","src":"3449:74:87"},"nativeSrc":"3449:74:87","nodeType":"YulExpressionStatement","src":"3449:74:87"}]},"condition":{"arguments":[{"name":"loopEnd","nativeSrc":"3342:7:87","nodeType":"YulIdentifier","src":"3342:7:87"},{"name":"newLen","nativeSrc":"3351:6:87","nodeType":"YulIdentifier","src":"3351:6:87"}],"functionName":{"name":"lt","nativeSrc":"3339:2:87","nodeType":"YulIdentifier","src":"3339:2:87"},"nativeSrc":"3339:19:87","nodeType":"YulFunctionCall","src":"3339:19:87"},"nativeSrc":"3336:201:87","nodeType":"YulIf","src":"3336:201:87"},{"expression":{"arguments":[{"name":"slot","nativeSrc":"3557:4:87","nodeType":"YulIdentifier","src":"3557:4:87"},{"arguments":[{"arguments":[{"kind":"number","nativeSrc":"3571:1:87","nodeType":"YulLiteral","src":"3571:1:87","type":"","value":"1"},{"name":"newLen","nativeSrc":"3574:6:87","nodeType":"YulIdentifier","src":"3574:6:87"}],"functionName":{"name":"shl","nativeSrc":"3567:3:87","nodeType":"YulIdentifier","src":"3567:3:87"},"nativeSrc":"3567:14:87","nodeType":"YulFunctionCall","src":"3567:14:87"},{"kind":"number","nativeSrc":"3583:1:87","nodeType":"YulLiteral","src":"3583:1:87","type":"","value":"1"}],"functionName":{"name":"add","nativeSrc":"3563:3:87","nodeType":"YulIdentifier","src":"3563:3:87"},"nativeSrc":"3563:22:87","nodeType":"YulFunctionCall","src":"3563:22:87"}],"functionName":{"name":"sstore","nativeSrc":"3550:6:87","nodeType":"YulIdentifier","src":"3550:6:87"},"nativeSrc":"3550:36:87","nodeType":"YulFunctionCall","src":"3550:36:87"},"nativeSrc":"3550:36:87","nodeType":"YulExpressionStatement","src":"3550:36:87"}]},"nativeSrc":"2947:649:87","nodeType":"YulCase","src":"2947:649:87","value":{"kind":"number","nativeSrc":"2952:1:87","nodeType":"YulLiteral","src":"2952:1:87","type":"","value":"1"}},{"body":{"nativeSrc":"3613:234:87","nodeType":"YulBlock","src":"3613:234:87","statements":[{"nativeSrc":"3627:14:87","nodeType":"YulVariableDeclaration","src":"3627:14:87","value":{"kind":"number","nativeSrc":"3640:1:87","nodeType":"YulLiteral","src":"3640:1:87","type":"","value":"0"},"variables":[{"name":"value","nativeSrc":"3631:5:87","nodeType":"YulTypedName","src":"3631:5:87","type":""}]},{"body":{"nativeSrc":"3676:67:87","nodeType":"YulBlock","src":"3676:67:87","statements":[{"nativeSrc":"3694:35:87","nodeType":"YulAssignment","src":"3694:35:87","value":{"arguments":[{"arguments":[{"name":"src","nativeSrc":"3713:3:87","nodeType":"YulIdentifier","src":"3713:3:87"},{"name":"srcOffset","nativeSrc":"3718:9:87","nodeType":"YulIdentifier","src":"3718:9:87"}],"functionName":{"name":"add","nativeSrc":"3709:3:87","nodeType":"YulIdentifier","src":"3709:3:87"},"nativeSrc":"3709:19:87","nodeType":"YulFunctionCall","src":"3709:19:87"}],"functionName":{"name":"mload","nativeSrc":"3703:5:87","nodeType":"YulIdentifier","src":"3703:5:87"},"nativeSrc":"3703:26:87","nodeType":"YulFunctionCall","src":"3703:26:87"},"variableNames":[{"name":"value","nativeSrc":"3694:5:87","nodeType":"YulIdentifier","src":"3694:5:87"}]}]},"condition":{"name":"newLen","nativeSrc":"3657:6:87","nodeType":"YulIdentifier","src":"3657:6:87"},"nativeSrc":"3654:89:87","nodeType":"YulIf","src":"3654:89:87"},{"expression":{"arguments":[{"name":"slot","nativeSrc":"3763:4:87","nodeType":"YulIdentifier","src":"3763:4:87"},{"arguments":[{"name":"value","nativeSrc":"3822:5:87","nodeType":"YulIdentifier","src":"3822:5:87"},{"name":"newLen","nativeSrc":"3829:6:87","nodeType":"YulIdentifier","src":"3829:6:87"}],"functionName":{"name":"extract_used_part_and_set_length_of_short_byte_array","nativeSrc":"3769:52:87","nodeType":"YulIdentifier","src":"3769:52:87"},"nativeSrc":"3769:67:87","nodeType":"YulFunctionCall","src":"3769:67:87"}],"functionName":{"name":"sstore","nativeSrc":"3756:6:87","nodeType":"YulIdentifier","src":"3756:6:87"},"nativeSrc":"3756:81:87","nodeType":"YulFunctionCall","src":"3756:81:87"},"nativeSrc":"3756:81:87","nodeType":"YulExpressionStatement","src":"3756:81:87"}]},"nativeSrc":"3605:242:87","nodeType":"YulCase","src":"3605:242:87","value":"default"}],"expression":{"arguments":[{"name":"newLen","nativeSrc":"2927:6:87","nodeType":"YulIdentifier","src":"2927:6:87"},{"kind":"number","nativeSrc":"2935:2:87","nodeType":"YulLiteral","src":"2935:2:87","type":"","value":"31"}],"functionName":{"name":"gt","nativeSrc":"2924:2:87","nodeType":"YulIdentifier","src":"2924:2:87"},"nativeSrc":"2924:14:87","nodeType":"YulFunctionCall","src":"2924:14:87"},"nativeSrc":"2917:930:87","nodeType":"YulSwitch","src":"2917:930:87"}]},"name":"copy_byte_array_to_storage_from_t_string_memory_ptr_to_t_string_storage","nativeSrc":"2554:1299:87","nodeType":"YulFunctionDefinition","parameters":[{"name":"slot","nativeSrc":"2635:4:87","nodeType":"YulTypedName","src":"2635:4:87","type":""},{"name":"src","nativeSrc":"2641:3:87","nodeType":"YulTypedName","src":"2641:3:87","type":""}],"src":"2554:1299:87"}]},"contents":"{\n    { }\n    function panic_error_0x41()\n    {\n        mstore(0, shl(224, 0x4e487b71))\n        mstore(4, 0x41)\n        revert(0, 0x24)\n    }\n    function abi_decode_tuple_t_uint8t_string_memory_ptrt_uint256_fromMemory(headStart, dataEnd) -> value0, value1, value2\n    {\n        if slt(sub(dataEnd, headStart), 96) { revert(0, 0) }\n        let value := mload(headStart)\n        if iszero(eq(value, and(value, 0xff))) { revert(0, 0) }\n        value0 := value\n        let offset := mload(add(headStart, 32))\n        if gt(offset, sub(shl(64, 1), 1)) { revert(0, 0) }\n        let _1 := add(headStart, offset)\n        if iszero(slt(add(_1, 0x1f), dataEnd)) { revert(0, 0) }\n        let length := mload(_1)\n        if gt(length, sub(shl(64, 1), 1)) { panic_error_0x41() }\n        let memPtr := mload(64)\n        let newFreePtr := add(memPtr, and(add(and(add(length, 0x1f), not(31)), 63), not(31)))\n        if or(gt(newFreePtr, sub(shl(64, 1), 1)), lt(newFreePtr, memPtr)) { panic_error_0x41() }\n        mstore(64, newFreePtr)\n        mstore(memPtr, length)\n        if gt(add(add(_1, length), 32), dataEnd) { revert(0, 0) }\n        mcopy(add(memPtr, 32), add(_1, 32), length)\n        mstore(add(add(memPtr, length), 32), 0)\n        value1 := memPtr\n        let value_1 := 0\n        value_1 := mload(add(headStart, 64))\n        value2 := value_1\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 array_dataslot_string_storage(ptr) -> data\n    {\n        mstore(0, ptr)\n        data := keccak256(0, 0x20)\n    }\n    function clean_up_bytearray_end_slots_string_storage(array, len, startIndex)\n    {\n        if gt(len, 31)\n        {\n            mstore(0, array)\n            let data := keccak256(0, 0x20)\n            let deleteStart := add(data, shr(5, add(startIndex, 31)))\n            if lt(startIndex, 0x20) { deleteStart := data }\n            let _1 := add(data, shr(5, add(len, 31)))\n            let start := deleteStart\n            for { } lt(start, _1) { start := add(start, 1) }\n            { sstore(start, 0) }\n        }\n    }\n    function extract_used_part_and_set_length_of_short_byte_array(data, len) -> used\n    {\n        used := or(and(data, not(shr(shl(3, len), not(0)))), shl(1, len))\n    }\n    function copy_byte_array_to_storage_from_t_string_memory_ptr_to_t_string_storage(slot, src)\n    {\n        let newLen := mload(src)\n        if gt(newLen, sub(shl(64, 1), 1)) { panic_error_0x41() }\n        clean_up_bytearray_end_slots_string_storage(slot, extract_byte_array_length(sload(slot)), newLen)\n        let srcOffset := 0\n        srcOffset := 0x20\n        switch gt(newLen, 31)\n        case 1 {\n            let loopEnd := and(newLen, not(31))\n            let dstPtr := array_dataslot_string_storage(slot)\n            let i := 0\n            for { } lt(i, loopEnd) { i := add(i, 0x20) }\n            {\n                sstore(dstPtr, mload(add(src, srcOffset)))\n                dstPtr := add(dstPtr, 1)\n                srcOffset := add(srcOffset, 0x20)\n            }\n            if lt(loopEnd, newLen)\n            {\n                let lastValue := mload(add(src, srcOffset))\n                sstore(dstPtr, and(lastValue, not(shr(and(shl(3, newLen), 248), not(0)))))\n            }\n            sstore(slot, add(shl(1, newLen), 1))\n        }\n        default {\n            let value := 0\n            if newLen\n            {\n                value := mload(add(src, srcOffset))\n            }\n            sstore(slot, extract_used_part_and_set_length_of_short_byte_array(value, newLen))\n        }\n    }\n}","id":87,"language":"Yul","name":"#utility.yul"}],"linkReferences":{},"object":"608060405234801561000f575f5ffd5b506040516106c03803806106c083398101604081905261002e91610068565b5f805460ff191660ff8516179055600161004883826101c0565b506002555061027a9050565b634e487b7160e01b5f52604160045260245ffd5b5f5f5f6060848603121561007a575f5ffd5b835160ff8116811461008a575f5ffd5b60208501519093506001600160401b038111156100a5575f5ffd5b8401601f810186136100b5575f5ffd5b80516001600160401b038111156100ce576100ce610054565b604051601f8201601f19908116603f011681016001600160401b03811182821017156100fc576100fc610054565b604052818152828201602001881015610113575f5ffd5b8160208401602083015e5f91810160200191909152604095909501519396949550929392505050565b600181811c9082168061015057607f821691505b60208210810361016e57634e487b7160e01b5f52602260045260245ffd5b50919050565b601f8211156101bb57805f5260205f20601f840160051c810160208510156101995750805b601f840160051c820191505b818110156101b8575f81556001016101a5565b50505b505050565b81516001600160401b038111156101d9576101d9610054565b6101ed816101e7845461013c565b84610174565b6020601f82116001811461021f575f83156102085750848201515b5f19600385901b1c1916600184901b1784556101b8565b5f84815260208120601f198516915b8281101561024e578785015182556020948501946001909201910161022e565b508482101561026b57868401515f19600387901b60f8161c191681555b50505050600190811b01905550565b610439806102875f395ff3fe608060405234801561000f575f5ffd5b506004361061007a575f3560e01c80637284e416116100585780637284e416146100e35780639a6fc8f5146100f8578063acfc72a414610178578063feaf968c1461018d575f5ffd5b8063313ce5671461007e578063388ca80f146100a157806354fd4d50146100cc575b5f5ffd5b5f5461008a9060ff1681565b60405160ff90911681526020015b60405180910390f35b6004546100b4906001600160501b031681565b6040516001600160501b039091168152602001610098565b6100d560025481565b604051908152602001610098565b6100eb6101cc565b604051610098919061030f565b61014461010636600461035f565b6001600160501b039081165f908152600360208190526040909120805460018201546002830154938301546004909301549185169590949190911690565b604080516001600160501b03968716815260208101959095528401929092526060830152909116608082015260a001610098565b61018b61018636600461037f565b610258565b005b600480546001600160501b039081165f908152600360208190526040909120805460018201546002830154938301549290950154908416949316610144565b600180546101d9906103cb565b80601f0160208091040260200160405190810160405280929190818152602001828054610205906103cb565b80156102505780601f1061022757610100808354040283529160200191610250565b820191905f5260205f20905b81548152906001019060200180831161023357829003601f168201915b505050505081565b6040805160a0810182526001600160501b03808816808352602080840189815284860189815260608601898152888616608088019081525f868152600395869052989098209651875490871669ffffffffffffffffffff199182161788559251600188015590516002870155519185019190915593516004938401805491841691909516179093559054161015610308576004805469ffffffffffffffffffff19166001600160501b0387161790555b5050505050565b602081525f82518060208401528060208501604085015e5f604082850101526040601f19601f83011684010191505092915050565b80356001600160501b038116811461035a575f5ffd5b919050565b5f6020828403121561036f575f5ffd5b61037882610344565b9392505050565b5f5f5f5f5f60a08688031215610393575f5ffd5b61039c86610344565b94506020860135935060408601359250606086013591506103bf60808701610344565b90509295509295909350565b600181811c908216806103df57607f821691505b6020821081036103fd57634e487b7160e01b5f52602260045260245ffd5b5091905056fea264697066735822122064ab754ab697bd4c65aaf1a503a488106bf11ca395c60739342c8b7f64fa01aa64736f6c634300081e0033","opcodes":"PUSH1 0x80 PUSH1 0x40 MSTORE CALLVALUE DUP1 ISZERO PUSH2 0xF JUMPI PUSH0 PUSH0 REVERT JUMPDEST POP PUSH1 0x40 MLOAD PUSH2 0x6C0 CODESIZE SUB DUP1 PUSH2 0x6C0 DUP4 CODECOPY DUP2 ADD PUSH1 0x40 DUP2 SWAP1 MSTORE PUSH2 0x2E SWAP2 PUSH2 0x68 JUMP JUMPDEST PUSH0 DUP1 SLOAD PUSH1 0xFF NOT AND PUSH1 0xFF DUP6 AND OR SWAP1 SSTORE PUSH1 0x1 PUSH2 0x48 DUP4 DUP3 PUSH2 0x1C0 JUMP JUMPDEST POP PUSH1 0x2 SSTORE POP PUSH2 0x27A SWAP1 POP JUMP JUMPDEST PUSH4 0x4E487B71 PUSH1 0xE0 SHL PUSH0 MSTORE PUSH1 0x41 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH0 REVERT JUMPDEST PUSH0 PUSH0 PUSH0 PUSH1 0x60 DUP5 DUP7 SUB SLT ISZERO PUSH2 0x7A JUMPI PUSH0 PUSH0 REVERT JUMPDEST DUP4 MLOAD PUSH1 0xFF DUP2 AND DUP2 EQ PUSH2 0x8A JUMPI PUSH0 PUSH0 REVERT JUMPDEST PUSH1 0x20 DUP6 ADD MLOAD SWAP1 SWAP4 POP PUSH1 0x1 PUSH1 0x1 PUSH1 0x40 SHL SUB DUP2 GT ISZERO PUSH2 0xA5 JUMPI PUSH0 PUSH0 REVERT JUMPDEST DUP5 ADD PUSH1 0x1F DUP2 ADD DUP7 SGT PUSH2 0xB5 JUMPI PUSH0 PUSH0 REVERT JUMPDEST DUP1 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0x40 SHL SUB DUP2 GT ISZERO PUSH2 0xCE JUMPI PUSH2 0xCE PUSH2 0x54 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH1 0x1F DUP3 ADD PUSH1 0x1F NOT SWAP1 DUP2 AND PUSH1 0x3F ADD AND DUP2 ADD PUSH1 0x1 PUSH1 0x1 PUSH1 0x40 SHL SUB DUP2 GT DUP3 DUP3 LT OR ISZERO PUSH2 0xFC JUMPI PUSH2 0xFC PUSH2 0x54 JUMP JUMPDEST PUSH1 0x40 MSTORE DUP2 DUP2 MSTORE DUP3 DUP3 ADD PUSH1 0x20 ADD DUP9 LT ISZERO PUSH2 0x113 JUMPI PUSH0 PUSH0 REVERT JUMPDEST DUP2 PUSH1 0x20 DUP5 ADD PUSH1 0x20 DUP4 ADD MCOPY PUSH0 SWAP2 DUP2 ADD PUSH1 0x20 ADD SWAP2 SWAP1 SWAP2 MSTORE PUSH1 0x40 SWAP6 SWAP1 SWAP6 ADD MLOAD SWAP4 SWAP7 SWAP5 SWAP6 POP SWAP3 SWAP4 SWAP3 POP POP POP JUMP JUMPDEST PUSH1 0x1 DUP2 DUP2 SHR SWAP1 DUP3 AND DUP1 PUSH2 0x150 JUMPI PUSH1 0x7F DUP3 AND SWAP2 POP JUMPDEST PUSH1 0x20 DUP3 LT DUP2 SUB PUSH2 0x16E JUMPI PUSH4 0x4E487B71 PUSH1 0xE0 SHL PUSH0 MSTORE PUSH1 0x22 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH0 REVERT JUMPDEST POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x1F DUP3 GT ISZERO PUSH2 0x1BB JUMPI DUP1 PUSH0 MSTORE PUSH1 0x20 PUSH0 KECCAK256 PUSH1 0x1F DUP5 ADD PUSH1 0x5 SHR DUP2 ADD PUSH1 0x20 DUP6 LT ISZERO PUSH2 0x199 JUMPI POP DUP1 JUMPDEST PUSH1 0x1F DUP5 ADD PUSH1 0x5 SHR DUP3 ADD SWAP2 POP JUMPDEST DUP2 DUP2 LT ISZERO PUSH2 0x1B8 JUMPI PUSH0 DUP2 SSTORE PUSH1 0x1 ADD PUSH2 0x1A5 JUMP JUMPDEST POP POP JUMPDEST POP POP POP JUMP JUMPDEST DUP2 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0x40 SHL SUB DUP2 GT ISZERO PUSH2 0x1D9 JUMPI PUSH2 0x1D9 PUSH2 0x54 JUMP JUMPDEST PUSH2 0x1ED DUP2 PUSH2 0x1E7 DUP5 SLOAD PUSH2 0x13C JUMP JUMPDEST DUP5 PUSH2 0x174 JUMP JUMPDEST PUSH1 0x20 PUSH1 0x1F DUP3 GT PUSH1 0x1 DUP2 EQ PUSH2 0x21F JUMPI PUSH0 DUP4 ISZERO PUSH2 0x208 JUMPI POP DUP5 DUP3 ADD MLOAD JUMPDEST PUSH0 NOT PUSH1 0x3 DUP6 SWAP1 SHL SHR NOT AND PUSH1 0x1 DUP5 SWAP1 SHL OR DUP5 SSTORE PUSH2 0x1B8 JUMP JUMPDEST PUSH0 DUP5 DUP2 MSTORE PUSH1 0x20 DUP2 KECCAK256 PUSH1 0x1F NOT DUP6 AND SWAP2 JUMPDEST DUP3 DUP2 LT ISZERO PUSH2 0x24E JUMPI DUP8 DUP6 ADD MLOAD DUP3 SSTORE PUSH1 0x20 SWAP5 DUP6 ADD SWAP5 PUSH1 0x1 SWAP1 SWAP3 ADD SWAP2 ADD PUSH2 0x22E JUMP JUMPDEST POP DUP5 DUP3 LT ISZERO PUSH2 0x26B JUMPI DUP7 DUP5 ADD MLOAD PUSH0 NOT PUSH1 0x3 DUP8 SWAP1 SHL PUSH1 0xF8 AND SHR NOT AND DUP2 SSTORE JUMPDEST POP POP POP POP PUSH1 0x1 SWAP1 DUP2 SHL ADD SWAP1 SSTORE POP JUMP JUMPDEST PUSH2 0x439 DUP1 PUSH2 0x287 PUSH0 CODECOPY PUSH0 RETURN INVALID PUSH1 0x80 PUSH1 0x40 MSTORE CALLVALUE DUP1 ISZERO PUSH2 0xF JUMPI PUSH0 PUSH0 REVERT JUMPDEST POP PUSH1 0x4 CALLDATASIZE LT PUSH2 0x7A JUMPI PUSH0 CALLDATALOAD PUSH1 0xE0 SHR DUP1 PUSH4 0x7284E416 GT PUSH2 0x58 JUMPI DUP1 PUSH4 0x7284E416 EQ PUSH2 0xE3 JUMPI DUP1 PUSH4 0x9A6FC8F5 EQ PUSH2 0xF8 JUMPI DUP1 PUSH4 0xACFC72A4 EQ PUSH2 0x178 JUMPI DUP1 PUSH4 0xFEAF968C EQ PUSH2 0x18D JUMPI PUSH0 PUSH0 REVERT JUMPDEST DUP1 PUSH4 0x313CE567 EQ PUSH2 0x7E JUMPI DUP1 PUSH4 0x388CA80F EQ PUSH2 0xA1 JUMPI DUP1 PUSH4 0x54FD4D50 EQ PUSH2 0xCC JUMPI JUMPDEST PUSH0 PUSH0 REVERT JUMPDEST PUSH0 SLOAD PUSH2 0x8A SWAP1 PUSH1 0xFF AND DUP2 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH1 0xFF SWAP1 SWAP2 AND DUP2 MSTORE PUSH1 0x20 ADD JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST PUSH1 0x4 SLOAD PUSH2 0xB4 SWAP1 PUSH1 0x1 PUSH1 0x1 PUSH1 0x50 SHL SUB AND DUP2 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0x50 SHL SUB SWAP1 SWAP2 AND DUP2 MSTORE PUSH1 0x20 ADD PUSH2 0x98 JUMP JUMPDEST PUSH2 0xD5 PUSH1 0x2 SLOAD DUP2 JUMP JUMPDEST PUSH1 0x40 MLOAD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH2 0x98 JUMP JUMPDEST PUSH2 0xEB PUSH2 0x1CC JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0x98 SWAP2 SWAP1 PUSH2 0x30F JUMP JUMPDEST PUSH2 0x144 PUSH2 0x106 CALLDATASIZE PUSH1 0x4 PUSH2 0x35F JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0x50 SHL SUB SWAP1 DUP2 AND PUSH0 SWAP1 DUP2 MSTORE PUSH1 0x3 PUSH1 0x20 DUP2 SWAP1 MSTORE PUSH1 0x40 SWAP1 SWAP2 KECCAK256 DUP1 SLOAD PUSH1 0x1 DUP3 ADD SLOAD PUSH1 0x2 DUP4 ADD SLOAD SWAP4 DUP4 ADD SLOAD PUSH1 0x4 SWAP1 SWAP4 ADD SLOAD SWAP2 DUP6 AND SWAP6 SWAP1 SWAP5 SWAP2 SWAP1 SWAP2 AND SWAP1 JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0x50 SHL SUB SWAP7 DUP8 AND DUP2 MSTORE PUSH1 0x20 DUP2 ADD SWAP6 SWAP1 SWAP6 MSTORE DUP5 ADD SWAP3 SWAP1 SWAP3 MSTORE PUSH1 0x60 DUP4 ADD MSTORE SWAP1 SWAP2 AND PUSH1 0x80 DUP3 ADD MSTORE PUSH1 0xA0 ADD PUSH2 0x98 JUMP JUMPDEST PUSH2 0x18B PUSH2 0x186 CALLDATASIZE PUSH1 0x4 PUSH2 0x37F JUMP JUMPDEST PUSH2 0x258 JUMP JUMPDEST STOP JUMPDEST PUSH1 0x4 DUP1 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0x50 SHL SUB SWAP1 DUP2 AND PUSH0 SWAP1 DUP2 MSTORE PUSH1 0x3 PUSH1 0x20 DUP2 SWAP1 MSTORE PUSH1 0x40 SWAP1 SWAP2 KECCAK256 DUP1 SLOAD PUSH1 0x1 DUP3 ADD SLOAD PUSH1 0x2 DUP4 ADD SLOAD SWAP4 DUP4 ADD SLOAD SWAP3 SWAP1 SWAP6 ADD SLOAD SWAP1 DUP5 AND SWAP5 SWAP4 AND PUSH2 0x144 JUMP JUMPDEST PUSH1 0x1 DUP1 SLOAD PUSH2 0x1D9 SWAP1 PUSH2 0x3CB 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 0x205 SWAP1 PUSH2 0x3CB JUMP JUMPDEST DUP1 ISZERO PUSH2 0x250 JUMPI DUP1 PUSH1 0x1F LT PUSH2 0x227 JUMPI PUSH2 0x100 DUP1 DUP4 SLOAD DIV MUL DUP4 MSTORE SWAP2 PUSH1 0x20 ADD SWAP2 PUSH2 0x250 JUMP JUMPDEST DUP3 ADD SWAP2 SWAP1 PUSH0 MSTORE PUSH1 0x20 PUSH0 KECCAK256 SWAP1 JUMPDEST DUP2 SLOAD DUP2 MSTORE SWAP1 PUSH1 0x1 ADD SWAP1 PUSH1 0x20 ADD DUP1 DUP4 GT PUSH2 0x233 JUMPI DUP3 SWAP1 SUB PUSH1 0x1F AND DUP3 ADD SWAP2 JUMPDEST POP POP POP POP POP DUP2 JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH1 0xA0 DUP2 ADD DUP3 MSTORE PUSH1 0x1 PUSH1 0x1 PUSH1 0x50 SHL SUB DUP1 DUP9 AND DUP1 DUP4 MSTORE PUSH1 0x20 DUP1 DUP5 ADD DUP10 DUP2 MSTORE DUP5 DUP7 ADD DUP10 DUP2 MSTORE PUSH1 0x60 DUP7 ADD DUP10 DUP2 MSTORE DUP9 DUP7 AND PUSH1 0x80 DUP9 ADD SWAP1 DUP2 MSTORE PUSH0 DUP7 DUP2 MSTORE PUSH1 0x3 SWAP6 DUP7 SWAP1 MSTORE SWAP9 SWAP1 SWAP9 KECCAK256 SWAP7 MLOAD DUP8 SLOAD SWAP1 DUP8 AND PUSH10 0xFFFFFFFFFFFFFFFFFFFF NOT SWAP2 DUP3 AND OR DUP9 SSTORE SWAP3 MLOAD PUSH1 0x1 DUP9 ADD SSTORE SWAP1 MLOAD PUSH1 0x2 DUP8 ADD SSTORE MLOAD SWAP2 DUP6 ADD SWAP2 SWAP1 SWAP2 SSTORE SWAP4 MLOAD PUSH1 0x4 SWAP4 DUP5 ADD DUP1 SLOAD SWAP2 DUP5 AND SWAP2 SWAP1 SWAP6 AND OR SWAP1 SWAP4 SSTORE SWAP1 SLOAD AND LT ISZERO PUSH2 0x308 JUMPI PUSH1 0x4 DUP1 SLOAD PUSH10 0xFFFFFFFFFFFFFFFFFFFF NOT AND PUSH1 0x1 PUSH1 0x1 PUSH1 0x50 SHL SUB DUP8 AND OR SWAP1 SSTORE JUMPDEST POP POP POP POP POP JUMP JUMPDEST PUSH1 0x20 DUP2 MSTORE PUSH0 DUP3 MLOAD DUP1 PUSH1 0x20 DUP5 ADD MSTORE DUP1 PUSH1 0x20 DUP6 ADD PUSH1 0x40 DUP6 ADD MCOPY PUSH0 PUSH1 0x40 DUP3 DUP6 ADD ADD MSTORE PUSH1 0x40 PUSH1 0x1F NOT PUSH1 0x1F DUP4 ADD AND DUP5 ADD ADD SWAP2 POP POP SWAP3 SWAP2 POP POP JUMP JUMPDEST DUP1 CALLDATALOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0x50 SHL SUB DUP2 AND DUP2 EQ PUSH2 0x35A JUMPI PUSH0 PUSH0 REVERT JUMPDEST SWAP2 SWAP1 POP JUMP JUMPDEST PUSH0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x36F JUMPI PUSH0 PUSH0 REVERT JUMPDEST PUSH2 0x378 DUP3 PUSH2 0x344 JUMP JUMPDEST SWAP4 SWAP3 POP POP POP JUMP JUMPDEST PUSH0 PUSH0 PUSH0 PUSH0 PUSH0 PUSH1 0xA0 DUP7 DUP9 SUB SLT ISZERO PUSH2 0x393 JUMPI PUSH0 PUSH0 REVERT JUMPDEST PUSH2 0x39C DUP7 PUSH2 0x344 JUMP JUMPDEST SWAP5 POP PUSH1 0x20 DUP7 ADD CALLDATALOAD SWAP4 POP PUSH1 0x40 DUP7 ADD CALLDATALOAD SWAP3 POP PUSH1 0x60 DUP7 ADD CALLDATALOAD SWAP2 POP PUSH2 0x3BF PUSH1 0x80 DUP8 ADD PUSH2 0x344 JUMP JUMPDEST SWAP1 POP SWAP3 SWAP6 POP SWAP3 SWAP6 SWAP1 SWAP4 POP JUMP JUMPDEST PUSH1 0x1 DUP2 DUP2 SHR SWAP1 DUP3 AND DUP1 PUSH2 0x3DF JUMPI PUSH1 0x7F DUP3 AND SWAP2 POP JUMPDEST PUSH1 0x20 DUP3 LT DUP2 SUB PUSH2 0x3FD JUMPI PUSH4 0x4E487B71 PUSH1 0xE0 SHL PUSH0 MSTORE PUSH1 0x22 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH0 REVERT JUMPDEST POP SWAP2 SWAP1 POP JUMP INVALID LOG2 PUSH5 0x6970667358 0x22 SLT KECCAK256 PUSH5 0xAB754AB697 0xBD 0x4C PUSH6 0xAAF1A503A488 LT PUSH12 0xF11CA395C60739342C8B7F64 STATICCALL ADD 0xAA PUSH5 0x736F6C6343 STOP ADDMOD 0x1E STOP CALLER ","sourceMap":"156:1449:72:-:0;;;505:162;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;586:8;:20;;-1:-1:-1;;586:20:72;;;;;;;-1:-1:-1;612:26:72;626:12;-1:-1:-1;612:26:72;:::i;:::-;-1:-1:-1;644:7:72;:18;-1:-1:-1;156:1449:72;;-1:-1:-1;156:1449:72;14:127:87;75:10;70:3;66:20;63:1;56:31;106:4;103:1;96:15;130:4;127:1;120:15;146:1198;242:6;250;258;311:2;299:9;290:7;286:23;282:32;279:52;;;327:1;324;317:12;279:52;359:9;353:16;409:4;402:5;398:16;391:5;388:27;378:55;;429:1;426;419:12;378:55;501:2;486:18;;480:25;452:5;;-1:-1:-1;;;;;;517:30:87;;514:50;;;560:1;557;550:12;514:50;583:22;;636:4;628:13;;624:27;-1:-1:-1;614:55:87;;665:1;662;655:12;614:55;692:9;;-1:-1:-1;;;;;713:30:87;;710:56;;;746:18;;:::i;:::-;795:2;789:9;887:2;849:17;;-1:-1:-1;;845:31:87;;;878:2;841:40;837:54;825:67;;-1:-1:-1;;;;;907:34:87;;943:22;;;904:62;901:88;;;969:18;;:::i;:::-;1005:2;998:22;1029;;;1070:15;;;1087:2;1066:24;1063:37;-1:-1:-1;1060:57:87;;;1113:1;1110;1103:12;1060:57;1162:6;1157:2;1153;1149:11;1144:2;1136:6;1132:15;1126:43;1215:1;1189:19;;;1210:2;1185:28;1178:39;;;;1308:2;1293:18;;;;1287:25;146:1198;;1193:6;;-1:-1:-1;1287:25:87;;146:1198;-1:-1:-1;;;146:1198:87:o;1349:380::-;1428:1;1424:12;;;;1471;;;1492:61;;1546:4;1538:6;1534:17;1524:27;;1492:61;1599:2;1591:6;1588:14;1568:18;1565:38;1562:161;;1645:10;1640:3;1636:20;1633:1;1626:31;1680:4;1677:1;1670:15;1708:4;1705:1;1698:15;1562:161;;1349:380;;;:::o;1860:518::-;1962:2;1957:3;1954:11;1951:421;;;1998:5;1995:1;1988:16;2042:4;2039:1;2029:18;2112:2;2100:10;2096:19;2093:1;2089:27;2083:4;2079:38;2148:4;2136:10;2133:20;2130:47;;;-1:-1:-1;2171:4:87;2130:47;2226:2;2221:3;2217:12;2214:1;2210:20;2204:4;2200:31;2190:41;;2281:81;2299:2;2292:5;2289:13;2281:81;;;2358:1;2344:16;;2325:1;2314:13;2281:81;;;2285:3;;1951:421;1860:518;;;:::o;2554:1299::-;2674:10;;-1:-1:-1;;;;;2696:30:87;;2693:56;;;2729:18;;:::i;:::-;2758:97;2848:6;2808:38;2840:4;2834:11;2808:38;:::i;:::-;2802:4;2758:97;:::i;:::-;2904:4;2935:2;2924:14;;2952:1;2947:649;;;;3640:1;3657:6;3654:89;;;-1:-1:-1;3709:19:87;;;3703:26;3654:89;-1:-1:-1;;2511:1:87;2507:11;;;2503:24;2499:29;2489:40;2535:1;2531:11;;;2486:57;3756:81;;2917:930;;2947:649;1807:1;1800:14;;;1844:4;1831:18;;-1:-1:-1;;2983:20:87;;;3101:222;3115:7;3112:1;3109:14;3101:222;;;3197:19;;;3191:26;3176:42;;3304:4;3289:20;;;;3257:1;3245:14;;;;3131:12;3101:222;;;3105:3;3351:6;3342:7;3339:19;3336:201;;;3412:19;;;3406:26;-1:-1:-1;;3495:1:87;3491:14;;;3507:3;3487:24;3483:37;3479:42;3464:58;3449:74;;3336:201;-1:-1:-1;;;;3583:1:87;3567:14;;;3563:22;3550:36;;-1:-1:-1;2554:1299:87:o;:::-;156:1449:72;;;;;;"},"deployedBytecode":{"functionDebugData":{"@addRound_20811":{"entryPoint":600,"id":20811,"parameterSlots":5,"returnSlots":0},"@decimals_20733":{"entryPoint":null,"id":20733,"parameterSlots":0,"returnSlots":0},"@description_20735":{"entryPoint":460,"id":20735,"parameterSlots":0,"returnSlots":0},"@getRoundData_20846":{"entryPoint":null,"id":20846,"parameterSlots":1,"returnSlots":5},"@lastRoundId_20755":{"entryPoint":null,"id":20755,"parameterSlots":0,"returnSlots":0},"@latestRoundData_20879":{"entryPoint":null,"id":20879,"parameterSlots":0,"returnSlots":5},"@version_20737":{"entryPoint":null,"id":20737,"parameterSlots":0,"returnSlots":0},"abi_decode_tuple_t_uint80":{"entryPoint":863,"id":null,"parameterSlots":2,"returnSlots":1},"abi_decode_tuple_t_uint80t_int256t_uint256t_uint256t_uint80":{"entryPoint":895,"id":null,"parameterSlots":2,"returnSlots":5},"abi_decode_uint80":{"entryPoint":836,"id":null,"parameterSlots":1,"returnSlots":1},"abi_encode_tuple_t_string_memory_ptr__to_t_string_memory_ptr__fromStack_reversed":{"entryPoint":783,"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_uint80__to_t_uint80__fromStack_reversed":{"entryPoint":null,"id":null,"parameterSlots":2,"returnSlots":1},"abi_encode_tuple_t_uint80_t_int256_t_uint256_t_uint256_t_uint80__to_t_uint80_t_int256_t_uint256_t_uint256_t_uint80__fromStack_reversed":{"entryPoint":null,"id":null,"parameterSlots":6,"returnSlots":1},"abi_encode_tuple_t_uint8__to_t_uint8__fromStack_reversed":{"entryPoint":null,"id":null,"parameterSlots":2,"returnSlots":1},"extract_byte_array_length":{"entryPoint":971,"id":null,"parameterSlots":1,"returnSlots":1}},"generatedSources":[{"ast":{"nativeSrc":"0:2852:87","nodeType":"YulBlock","src":"0:2852:87","statements":[{"nativeSrc":"6:3:87","nodeType":"YulBlock","src":"6:3:87","statements":[]},{"body":{"nativeSrc":"111:87:87","nodeType":"YulBlock","src":"111:87:87","statements":[{"nativeSrc":"121:26:87","nodeType":"YulAssignment","src":"121:26:87","value":{"arguments":[{"name":"headStart","nativeSrc":"133:9:87","nodeType":"YulIdentifier","src":"133:9:87"},{"kind":"number","nativeSrc":"144:2:87","nodeType":"YulLiteral","src":"144:2:87","type":"","value":"32"}],"functionName":{"name":"add","nativeSrc":"129:3:87","nodeType":"YulIdentifier","src":"129:3:87"},"nativeSrc":"129:18:87","nodeType":"YulFunctionCall","src":"129:18:87"},"variableNames":[{"name":"tail","nativeSrc":"121:4:87","nodeType":"YulIdentifier","src":"121:4:87"}]},{"expression":{"arguments":[{"name":"headStart","nativeSrc":"163:9:87","nodeType":"YulIdentifier","src":"163:9:87"},{"arguments":[{"name":"value0","nativeSrc":"178:6:87","nodeType":"YulIdentifier","src":"178:6:87"},{"kind":"number","nativeSrc":"186:4:87","nodeType":"YulLiteral","src":"186:4:87","type":"","value":"0xff"}],"functionName":{"name":"and","nativeSrc":"174:3:87","nodeType":"YulIdentifier","src":"174:3:87"},"nativeSrc":"174:17:87","nodeType":"YulFunctionCall","src":"174:17:87"}],"functionName":{"name":"mstore","nativeSrc":"156:6:87","nodeType":"YulIdentifier","src":"156:6:87"},"nativeSrc":"156:36:87","nodeType":"YulFunctionCall","src":"156:36:87"},"nativeSrc":"156:36:87","nodeType":"YulExpressionStatement","src":"156:36:87"}]},"name":"abi_encode_tuple_t_uint8__to_t_uint8__fromStack_reversed","nativeSrc":"14:184:87","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nativeSrc":"80:9:87","nodeType":"YulTypedName","src":"80:9:87","type":""},{"name":"value0","nativeSrc":"91:6:87","nodeType":"YulTypedName","src":"91:6:87","type":""}],"returnVariables":[{"name":"tail","nativeSrc":"102:4:87","nodeType":"YulTypedName","src":"102:4:87","type":""}],"src":"14:184:87"},{"body":{"nativeSrc":"302:105:87","nodeType":"YulBlock","src":"302:105:87","statements":[{"nativeSrc":"312:26:87","nodeType":"YulAssignment","src":"312:26:87","value":{"arguments":[{"name":"headStart","nativeSrc":"324:9:87","nodeType":"YulIdentifier","src":"324:9:87"},{"kind":"number","nativeSrc":"335:2:87","nodeType":"YulLiteral","src":"335:2:87","type":"","value":"32"}],"functionName":{"name":"add","nativeSrc":"320:3:87","nodeType":"YulIdentifier","src":"320:3:87"},"nativeSrc":"320:18:87","nodeType":"YulFunctionCall","src":"320:18:87"},"variableNames":[{"name":"tail","nativeSrc":"312:4:87","nodeType":"YulIdentifier","src":"312:4:87"}]},{"expression":{"arguments":[{"name":"headStart","nativeSrc":"354:9:87","nodeType":"YulIdentifier","src":"354:9:87"},{"arguments":[{"name":"value0","nativeSrc":"369:6:87","nodeType":"YulIdentifier","src":"369:6:87"},{"kind":"number","nativeSrc":"377:22:87","nodeType":"YulLiteral","src":"377:22:87","type":"","value":"0xffffffffffffffffffff"}],"functionName":{"name":"and","nativeSrc":"365:3:87","nodeType":"YulIdentifier","src":"365:3:87"},"nativeSrc":"365:35:87","nodeType":"YulFunctionCall","src":"365:35:87"}],"functionName":{"name":"mstore","nativeSrc":"347:6:87","nodeType":"YulIdentifier","src":"347:6:87"},"nativeSrc":"347:54:87","nodeType":"YulFunctionCall","src":"347:54:87"},"nativeSrc":"347:54:87","nodeType":"YulExpressionStatement","src":"347:54:87"}]},"name":"abi_encode_tuple_t_uint80__to_t_uint80__fromStack_reversed","nativeSrc":"203:204:87","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nativeSrc":"271:9:87","nodeType":"YulTypedName","src":"271:9:87","type":""},{"name":"value0","nativeSrc":"282:6:87","nodeType":"YulTypedName","src":"282:6:87","type":""}],"returnVariables":[{"name":"tail","nativeSrc":"293:4:87","nodeType":"YulTypedName","src":"293:4:87","type":""}],"src":"203:204:87"},{"body":{"nativeSrc":"513:76:87","nodeType":"YulBlock","src":"513:76:87","statements":[{"nativeSrc":"523:26:87","nodeType":"YulAssignment","src":"523:26:87","value":{"arguments":[{"name":"headStart","nativeSrc":"535:9:87","nodeType":"YulIdentifier","src":"535:9:87"},{"kind":"number","nativeSrc":"546:2:87","nodeType":"YulLiteral","src":"546:2:87","type":"","value":"32"}],"functionName":{"name":"add","nativeSrc":"531:3:87","nodeType":"YulIdentifier","src":"531:3:87"},"nativeSrc":"531:18:87","nodeType":"YulFunctionCall","src":"531:18:87"},"variableNames":[{"name":"tail","nativeSrc":"523:4:87","nodeType":"YulIdentifier","src":"523:4:87"}]},{"expression":{"arguments":[{"name":"headStart","nativeSrc":"565:9:87","nodeType":"YulIdentifier","src":"565:9:87"},{"name":"value0","nativeSrc":"576:6:87","nodeType":"YulIdentifier","src":"576:6:87"}],"functionName":{"name":"mstore","nativeSrc":"558:6:87","nodeType":"YulIdentifier","src":"558:6:87"},"nativeSrc":"558:25:87","nodeType":"YulFunctionCall","src":"558:25:87"},"nativeSrc":"558:25:87","nodeType":"YulExpressionStatement","src":"558:25:87"}]},"name":"abi_encode_tuple_t_uint256__to_t_uint256__fromStack_reversed","nativeSrc":"412:177:87","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nativeSrc":"482:9:87","nodeType":"YulTypedName","src":"482:9:87","type":""},{"name":"value0","nativeSrc":"493:6:87","nodeType":"YulTypedName","src":"493:6:87","type":""}],"returnVariables":[{"name":"tail","nativeSrc":"504:4:87","nodeType":"YulTypedName","src":"504:4:87","type":""}],"src":"412:177:87"},{"body":{"nativeSrc":"715:297:87","nodeType":"YulBlock","src":"715:297:87","statements":[{"expression":{"arguments":[{"name":"headStart","nativeSrc":"732:9:87","nodeType":"YulIdentifier","src":"732:9:87"},{"kind":"number","nativeSrc":"743:2:87","nodeType":"YulLiteral","src":"743:2:87","type":"","value":"32"}],"functionName":{"name":"mstore","nativeSrc":"725:6:87","nodeType":"YulIdentifier","src":"725:6:87"},"nativeSrc":"725:21:87","nodeType":"YulFunctionCall","src":"725:21:87"},"nativeSrc":"725:21:87","nodeType":"YulExpressionStatement","src":"725:21:87"},{"nativeSrc":"755:27:87","nodeType":"YulVariableDeclaration","src":"755:27:87","value":{"arguments":[{"name":"value0","nativeSrc":"775:6:87","nodeType":"YulIdentifier","src":"775:6:87"}],"functionName":{"name":"mload","nativeSrc":"769:5:87","nodeType":"YulIdentifier","src":"769:5:87"},"nativeSrc":"769:13:87","nodeType":"YulFunctionCall","src":"769:13:87"},"variables":[{"name":"length","nativeSrc":"759:6:87","nodeType":"YulTypedName","src":"759:6:87","type":""}]},{"expression":{"arguments":[{"arguments":[{"name":"headStart","nativeSrc":"802:9:87","nodeType":"YulIdentifier","src":"802:9:87"},{"kind":"number","nativeSrc":"813:2:87","nodeType":"YulLiteral","src":"813:2:87","type":"","value":"32"}],"functionName":{"name":"add","nativeSrc":"798:3:87","nodeType":"YulIdentifier","src":"798:3:87"},"nativeSrc":"798:18:87","nodeType":"YulFunctionCall","src":"798:18:87"},{"name":"length","nativeSrc":"818:6:87","nodeType":"YulIdentifier","src":"818:6:87"}],"functionName":{"name":"mstore","nativeSrc":"791:6:87","nodeType":"YulIdentifier","src":"791:6:87"},"nativeSrc":"791:34:87","nodeType":"YulFunctionCall","src":"791:34:87"},"nativeSrc":"791:34:87","nodeType":"YulExpressionStatement","src":"791:34:87"},{"expression":{"arguments":[{"arguments":[{"name":"headStart","nativeSrc":"844:9:87","nodeType":"YulIdentifier","src":"844:9:87"},{"kind":"number","nativeSrc":"855:2:87","nodeType":"YulLiteral","src":"855:2:87","type":"","value":"64"}],"functionName":{"name":"add","nativeSrc":"840:3:87","nodeType":"YulIdentifier","src":"840:3:87"},"nativeSrc":"840:18:87","nodeType":"YulFunctionCall","src":"840:18:87"},{"arguments":[{"name":"value0","nativeSrc":"864:6:87","nodeType":"YulIdentifier","src":"864:6:87"},{"kind":"number","nativeSrc":"872:2:87","nodeType":"YulLiteral","src":"872:2:87","type":"","value":"32"}],"functionName":{"name":"add","nativeSrc":"860:3:87","nodeType":"YulIdentifier","src":"860:3:87"},"nativeSrc":"860:15:87","nodeType":"YulFunctionCall","src":"860:15:87"},{"name":"length","nativeSrc":"877:6:87","nodeType":"YulIdentifier","src":"877:6:87"}],"functionName":{"name":"mcopy","nativeSrc":"834:5:87","nodeType":"YulIdentifier","src":"834:5:87"},"nativeSrc":"834:50:87","nodeType":"YulFunctionCall","src":"834:50:87"},"nativeSrc":"834:50:87","nodeType":"YulExpressionStatement","src":"834:50:87"},{"expression":{"arguments":[{"arguments":[{"arguments":[{"name":"headStart","nativeSrc":"908:9:87","nodeType":"YulIdentifier","src":"908:9:87"},{"name":"length","nativeSrc":"919:6:87","nodeType":"YulIdentifier","src":"919:6:87"}],"functionName":{"name":"add","nativeSrc":"904:3:87","nodeType":"YulIdentifier","src":"904:3:87"},"nativeSrc":"904:22:87","nodeType":"YulFunctionCall","src":"904:22:87"},{"kind":"number","nativeSrc":"928:2:87","nodeType":"YulLiteral","src":"928:2:87","type":"","value":"64"}],"functionName":{"name":"add","nativeSrc":"900:3:87","nodeType":"YulIdentifier","src":"900:3:87"},"nativeSrc":"900:31:87","nodeType":"YulFunctionCall","src":"900:31:87"},{"kind":"number","nativeSrc":"933:1:87","nodeType":"YulLiteral","src":"933:1:87","type":"","value":"0"}],"functionName":{"name":"mstore","nativeSrc":"893:6:87","nodeType":"YulIdentifier","src":"893:6:87"},"nativeSrc":"893:42:87","nodeType":"YulFunctionCall","src":"893:42:87"},"nativeSrc":"893:42:87","nodeType":"YulExpressionStatement","src":"893:42:87"},{"nativeSrc":"944:62:87","nodeType":"YulAssignment","src":"944:62:87","value":{"arguments":[{"arguments":[{"name":"headStart","nativeSrc":"960:9:87","nodeType":"YulIdentifier","src":"960:9:87"},{"arguments":[{"arguments":[{"name":"length","nativeSrc":"979:6:87","nodeType":"YulIdentifier","src":"979:6:87"},{"kind":"number","nativeSrc":"987:2:87","nodeType":"YulLiteral","src":"987:2:87","type":"","value":"31"}],"functionName":{"name":"add","nativeSrc":"975:3:87","nodeType":"YulIdentifier","src":"975:3:87"},"nativeSrc":"975:15:87","nodeType":"YulFunctionCall","src":"975:15:87"},{"arguments":[{"kind":"number","nativeSrc":"996:2:87","nodeType":"YulLiteral","src":"996:2:87","type":"","value":"31"}],"functionName":{"name":"not","nativeSrc":"992:3:87","nodeType":"YulIdentifier","src":"992:3:87"},"nativeSrc":"992:7:87","nodeType":"YulFunctionCall","src":"992:7:87"}],"functionName":{"name":"and","nativeSrc":"971:3:87","nodeType":"YulIdentifier","src":"971:3:87"},"nativeSrc":"971:29:87","nodeType":"YulFunctionCall","src":"971:29:87"}],"functionName":{"name":"add","nativeSrc":"956:3:87","nodeType":"YulIdentifier","src":"956:3:87"},"nativeSrc":"956:45:87","nodeType":"YulFunctionCall","src":"956:45:87"},{"kind":"number","nativeSrc":"1003:2:87","nodeType":"YulLiteral","src":"1003:2:87","type":"","value":"64"}],"functionName":{"name":"add","nativeSrc":"952:3:87","nodeType":"YulIdentifier","src":"952:3:87"},"nativeSrc":"952:54:87","nodeType":"YulFunctionCall","src":"952:54:87"},"variableNames":[{"name":"tail","nativeSrc":"944:4:87","nodeType":"YulIdentifier","src":"944:4:87"}]}]},"name":"abi_encode_tuple_t_string_memory_ptr__to_t_string_memory_ptr__fromStack_reversed","nativeSrc":"594:418:87","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nativeSrc":"684:9:87","nodeType":"YulTypedName","src":"684:9:87","type":""},{"name":"value0","nativeSrc":"695:6:87","nodeType":"YulTypedName","src":"695:6:87","type":""}],"returnVariables":[{"name":"tail","nativeSrc":"706:4:87","nodeType":"YulTypedName","src":"706:4:87","type":""}],"src":"594:418:87"},{"body":{"nativeSrc":"1065:127:87","nodeType":"YulBlock","src":"1065:127:87","statements":[{"nativeSrc":"1075:29:87","nodeType":"YulAssignment","src":"1075:29:87","value":{"arguments":[{"name":"offset","nativeSrc":"1097:6:87","nodeType":"YulIdentifier","src":"1097:6:87"}],"functionName":{"name":"calldataload","nativeSrc":"1084:12:87","nodeType":"YulIdentifier","src":"1084:12:87"},"nativeSrc":"1084:20:87","nodeType":"YulFunctionCall","src":"1084:20:87"},"variableNames":[{"name":"value","nativeSrc":"1075:5:87","nodeType":"YulIdentifier","src":"1075:5:87"}]},{"body":{"nativeSrc":"1170:16:87","nodeType":"YulBlock","src":"1170:16:87","statements":[{"expression":{"arguments":[{"kind":"number","nativeSrc":"1179:1:87","nodeType":"YulLiteral","src":"1179:1:87","type":"","value":"0"},{"kind":"number","nativeSrc":"1182:1:87","nodeType":"YulLiteral","src":"1182:1:87","type":"","value":"0"}],"functionName":{"name":"revert","nativeSrc":"1172:6:87","nodeType":"YulIdentifier","src":"1172:6:87"},"nativeSrc":"1172:12:87","nodeType":"YulFunctionCall","src":"1172:12:87"},"nativeSrc":"1172:12:87","nodeType":"YulExpressionStatement","src":"1172:12:87"}]},"condition":{"arguments":[{"arguments":[{"name":"value","nativeSrc":"1126:5:87","nodeType":"YulIdentifier","src":"1126:5:87"},{"arguments":[{"name":"value","nativeSrc":"1137:5:87","nodeType":"YulIdentifier","src":"1137:5:87"},{"kind":"number","nativeSrc":"1144:22:87","nodeType":"YulLiteral","src":"1144:22:87","type":"","value":"0xffffffffffffffffffff"}],"functionName":{"name":"and","nativeSrc":"1133:3:87","nodeType":"YulIdentifier","src":"1133:3:87"},"nativeSrc":"1133:34:87","nodeType":"YulFunctionCall","src":"1133:34:87"}],"functionName":{"name":"eq","nativeSrc":"1123:2:87","nodeType":"YulIdentifier","src":"1123:2:87"},"nativeSrc":"1123:45:87","nodeType":"YulFunctionCall","src":"1123:45:87"}],"functionName":{"name":"iszero","nativeSrc":"1116:6:87","nodeType":"YulIdentifier","src":"1116:6:87"},"nativeSrc":"1116:53:87","nodeType":"YulFunctionCall","src":"1116:53:87"},"nativeSrc":"1113:73:87","nodeType":"YulIf","src":"1113:73:87"}]},"name":"abi_decode_uint80","nativeSrc":"1017:175:87","nodeType":"YulFunctionDefinition","parameters":[{"name":"offset","nativeSrc":"1044:6:87","nodeType":"YulTypedName","src":"1044:6:87","type":""}],"returnVariables":[{"name":"value","nativeSrc":"1055:5:87","nodeType":"YulTypedName","src":"1055:5:87","type":""}],"src":"1017:175:87"},{"body":{"nativeSrc":"1266:115:87","nodeType":"YulBlock","src":"1266:115:87","statements":[{"body":{"nativeSrc":"1312:16:87","nodeType":"YulBlock","src":"1312:16:87","statements":[{"expression":{"arguments":[{"kind":"number","nativeSrc":"1321:1:87","nodeType":"YulLiteral","src":"1321:1:87","type":"","value":"0"},{"kind":"number","nativeSrc":"1324:1:87","nodeType":"YulLiteral","src":"1324:1:87","type":"","value":"0"}],"functionName":{"name":"revert","nativeSrc":"1314:6:87","nodeType":"YulIdentifier","src":"1314:6:87"},"nativeSrc":"1314:12:87","nodeType":"YulFunctionCall","src":"1314:12:87"},"nativeSrc":"1314:12:87","nodeType":"YulExpressionStatement","src":"1314:12:87"}]},"condition":{"arguments":[{"arguments":[{"name":"dataEnd","nativeSrc":"1287:7:87","nodeType":"YulIdentifier","src":"1287:7:87"},{"name":"headStart","nativeSrc":"1296:9:87","nodeType":"YulIdentifier","src":"1296:9:87"}],"functionName":{"name":"sub","nativeSrc":"1283:3:87","nodeType":"YulIdentifier","src":"1283:3:87"},"nativeSrc":"1283:23:87","nodeType":"YulFunctionCall","src":"1283:23:87"},{"kind":"number","nativeSrc":"1308:2:87","nodeType":"YulLiteral","src":"1308:2:87","type":"","value":"32"}],"functionName":{"name":"slt","nativeSrc":"1279:3:87","nodeType":"YulIdentifier","src":"1279:3:87"},"nativeSrc":"1279:32:87","nodeType":"YulFunctionCall","src":"1279:32:87"},"nativeSrc":"1276:52:87","nodeType":"YulIf","src":"1276:52:87"},{"nativeSrc":"1337:38:87","nodeType":"YulAssignment","src":"1337:38:87","value":{"arguments":[{"name":"headStart","nativeSrc":"1365:9:87","nodeType":"YulIdentifier","src":"1365:9:87"}],"functionName":{"name":"abi_decode_uint80","nativeSrc":"1347:17:87","nodeType":"YulIdentifier","src":"1347:17:87"},"nativeSrc":"1347:28:87","nodeType":"YulFunctionCall","src":"1347:28:87"},"variableNames":[{"name":"value0","nativeSrc":"1337:6:87","nodeType":"YulIdentifier","src":"1337:6:87"}]}]},"name":"abi_decode_tuple_t_uint80","nativeSrc":"1197:184:87","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nativeSrc":"1232:9:87","nodeType":"YulTypedName","src":"1232:9:87","type":""},{"name":"dataEnd","nativeSrc":"1243:7:87","nodeType":"YulTypedName","src":"1243:7:87","type":""}],"returnVariables":[{"name":"value0","nativeSrc":"1255:6:87","nodeType":"YulTypedName","src":"1255:6:87","type":""}],"src":"1197:184:87"},{"body":{"nativeSrc":"1593:308:87","nodeType":"YulBlock","src":"1593:308:87","statements":[{"nativeSrc":"1603:27:87","nodeType":"YulAssignment","src":"1603:27:87","value":{"arguments":[{"name":"headStart","nativeSrc":"1615:9:87","nodeType":"YulIdentifier","src":"1615:9:87"},{"kind":"number","nativeSrc":"1626:3:87","nodeType":"YulLiteral","src":"1626:3:87","type":"","value":"160"}],"functionName":{"name":"add","nativeSrc":"1611:3:87","nodeType":"YulIdentifier","src":"1611:3:87"},"nativeSrc":"1611:19:87","nodeType":"YulFunctionCall","src":"1611:19:87"},"variableNames":[{"name":"tail","nativeSrc":"1603:4:87","nodeType":"YulIdentifier","src":"1603:4:87"}]},{"expression":{"arguments":[{"name":"headStart","nativeSrc":"1646:9:87","nodeType":"YulIdentifier","src":"1646:9:87"},{"arguments":[{"name":"value0","nativeSrc":"1661:6:87","nodeType":"YulIdentifier","src":"1661:6:87"},{"kind":"number","nativeSrc":"1669:22:87","nodeType":"YulLiteral","src":"1669:22:87","type":"","value":"0xffffffffffffffffffff"}],"functionName":{"name":"and","nativeSrc":"1657:3:87","nodeType":"YulIdentifier","src":"1657:3:87"},"nativeSrc":"1657:35:87","nodeType":"YulFunctionCall","src":"1657:35:87"}],"functionName":{"name":"mstore","nativeSrc":"1639:6:87","nodeType":"YulIdentifier","src":"1639:6:87"},"nativeSrc":"1639:54:87","nodeType":"YulFunctionCall","src":"1639:54:87"},"nativeSrc":"1639:54:87","nodeType":"YulExpressionStatement","src":"1639:54:87"},{"expression":{"arguments":[{"arguments":[{"name":"headStart","nativeSrc":"1713:9:87","nodeType":"YulIdentifier","src":"1713:9:87"},{"kind":"number","nativeSrc":"1724:2:87","nodeType":"YulLiteral","src":"1724:2:87","type":"","value":"32"}],"functionName":{"name":"add","nativeSrc":"1709:3:87","nodeType":"YulIdentifier","src":"1709:3:87"},"nativeSrc":"1709:18:87","nodeType":"YulFunctionCall","src":"1709:18:87"},{"name":"value1","nativeSrc":"1729:6:87","nodeType":"YulIdentifier","src":"1729:6:87"}],"functionName":{"name":"mstore","nativeSrc":"1702:6:87","nodeType":"YulIdentifier","src":"1702:6:87"},"nativeSrc":"1702:34:87","nodeType":"YulFunctionCall","src":"1702:34:87"},"nativeSrc":"1702:34:87","nodeType":"YulExpressionStatement","src":"1702:34:87"},{"expression":{"arguments":[{"arguments":[{"name":"headStart","nativeSrc":"1756:9:87","nodeType":"YulIdentifier","src":"1756:9:87"},{"kind":"number","nativeSrc":"1767:2:87","nodeType":"YulLiteral","src":"1767:2:87","type":"","value":"64"}],"functionName":{"name":"add","nativeSrc":"1752:3:87","nodeType":"YulIdentifier","src":"1752:3:87"},"nativeSrc":"1752:18:87","nodeType":"YulFunctionCall","src":"1752:18:87"},{"name":"value2","nativeSrc":"1772:6:87","nodeType":"YulIdentifier","src":"1772:6:87"}],"functionName":{"name":"mstore","nativeSrc":"1745:6:87","nodeType":"YulIdentifier","src":"1745:6:87"},"nativeSrc":"1745:34:87","nodeType":"YulFunctionCall","src":"1745:34:87"},"nativeSrc":"1745:34:87","nodeType":"YulExpressionStatement","src":"1745:34:87"},{"expression":{"arguments":[{"arguments":[{"name":"headStart","nativeSrc":"1799:9:87","nodeType":"YulIdentifier","src":"1799:9:87"},{"kind":"number","nativeSrc":"1810:2:87","nodeType":"YulLiteral","src":"1810:2:87","type":"","value":"96"}],"functionName":{"name":"add","nativeSrc":"1795:3:87","nodeType":"YulIdentifier","src":"1795:3:87"},"nativeSrc":"1795:18:87","nodeType":"YulFunctionCall","src":"1795:18:87"},{"name":"value3","nativeSrc":"1815:6:87","nodeType":"YulIdentifier","src":"1815:6:87"}],"functionName":{"name":"mstore","nativeSrc":"1788:6:87","nodeType":"YulIdentifier","src":"1788:6:87"},"nativeSrc":"1788:34:87","nodeType":"YulFunctionCall","src":"1788:34:87"},"nativeSrc":"1788:34:87","nodeType":"YulExpressionStatement","src":"1788:34:87"},{"expression":{"arguments":[{"arguments":[{"name":"headStart","nativeSrc":"1842:9:87","nodeType":"YulIdentifier","src":"1842:9:87"},{"kind":"number","nativeSrc":"1853:3:87","nodeType":"YulLiteral","src":"1853:3:87","type":"","value":"128"}],"functionName":{"name":"add","nativeSrc":"1838:3:87","nodeType":"YulIdentifier","src":"1838:3:87"},"nativeSrc":"1838:19:87","nodeType":"YulFunctionCall","src":"1838:19:87"},{"arguments":[{"name":"value4","nativeSrc":"1863:6:87","nodeType":"YulIdentifier","src":"1863:6:87"},{"kind":"number","nativeSrc":"1871:22:87","nodeType":"YulLiteral","src":"1871:22:87","type":"","value":"0xffffffffffffffffffff"}],"functionName":{"name":"and","nativeSrc":"1859:3:87","nodeType":"YulIdentifier","src":"1859:3:87"},"nativeSrc":"1859:35:87","nodeType":"YulFunctionCall","src":"1859:35:87"}],"functionName":{"name":"mstore","nativeSrc":"1831:6:87","nodeType":"YulIdentifier","src":"1831:6:87"},"nativeSrc":"1831:64:87","nodeType":"YulFunctionCall","src":"1831:64:87"},"nativeSrc":"1831:64:87","nodeType":"YulExpressionStatement","src":"1831:64:87"}]},"name":"abi_encode_tuple_t_uint80_t_int256_t_uint256_t_uint256_t_uint80__to_t_uint80_t_int256_t_uint256_t_uint256_t_uint80__fromStack_reversed","nativeSrc":"1386:515:87","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nativeSrc":"1530:9:87","nodeType":"YulTypedName","src":"1530:9:87","type":""},{"name":"value4","nativeSrc":"1541:6:87","nodeType":"YulTypedName","src":"1541:6:87","type":""},{"name":"value3","nativeSrc":"1549:6:87","nodeType":"YulTypedName","src":"1549:6:87","type":""},{"name":"value2","nativeSrc":"1557:6:87","nodeType":"YulTypedName","src":"1557:6:87","type":""},{"name":"value1","nativeSrc":"1565:6:87","nodeType":"YulTypedName","src":"1565:6:87","type":""},{"name":"value0","nativeSrc":"1573:6:87","nodeType":"YulTypedName","src":"1573:6:87","type":""}],"returnVariables":[{"name":"tail","nativeSrc":"1584:4:87","nodeType":"YulTypedName","src":"1584:4:87","type":""}],"src":"1386:515:87"},{"body":{"nativeSrc":"2041:424:87","nodeType":"YulBlock","src":"2041:424:87","statements":[{"body":{"nativeSrc":"2088:16:87","nodeType":"YulBlock","src":"2088:16:87","statements":[{"expression":{"arguments":[{"kind":"number","nativeSrc":"2097:1:87","nodeType":"YulLiteral","src":"2097:1:87","type":"","value":"0"},{"kind":"number","nativeSrc":"2100:1:87","nodeType":"YulLiteral","src":"2100:1:87","type":"","value":"0"}],"functionName":{"name":"revert","nativeSrc":"2090:6:87","nodeType":"YulIdentifier","src":"2090:6:87"},"nativeSrc":"2090:12:87","nodeType":"YulFunctionCall","src":"2090:12:87"},"nativeSrc":"2090:12:87","nodeType":"YulExpressionStatement","src":"2090:12:87"}]},"condition":{"arguments":[{"arguments":[{"name":"dataEnd","nativeSrc":"2062:7:87","nodeType":"YulIdentifier","src":"2062:7:87"},{"name":"headStart","nativeSrc":"2071:9:87","nodeType":"YulIdentifier","src":"2071:9:87"}],"functionName":{"name":"sub","nativeSrc":"2058:3:87","nodeType":"YulIdentifier","src":"2058:3:87"},"nativeSrc":"2058:23:87","nodeType":"YulFunctionCall","src":"2058:23:87"},{"kind":"number","nativeSrc":"2083:3:87","nodeType":"YulLiteral","src":"2083:3:87","type":"","value":"160"}],"functionName":{"name":"slt","nativeSrc":"2054:3:87","nodeType":"YulIdentifier","src":"2054:3:87"},"nativeSrc":"2054:33:87","nodeType":"YulFunctionCall","src":"2054:33:87"},"nativeSrc":"2051:53:87","nodeType":"YulIf","src":"2051:53:87"},{"nativeSrc":"2113:38:87","nodeType":"YulAssignment","src":"2113:38:87","value":{"arguments":[{"name":"headStart","nativeSrc":"2141:9:87","nodeType":"YulIdentifier","src":"2141:9:87"}],"functionName":{"name":"abi_decode_uint80","nativeSrc":"2123:17:87","nodeType":"YulIdentifier","src":"2123:17:87"},"nativeSrc":"2123:28:87","nodeType":"YulFunctionCall","src":"2123:28:87"},"variableNames":[{"name":"value0","nativeSrc":"2113:6:87","nodeType":"YulIdentifier","src":"2113:6:87"}]},{"nativeSrc":"2160:42:87","nodeType":"YulAssignment","src":"2160:42:87","value":{"arguments":[{"arguments":[{"name":"headStart","nativeSrc":"2187:9:87","nodeType":"YulIdentifier","src":"2187:9:87"},{"kind":"number","nativeSrc":"2198:2:87","nodeType":"YulLiteral","src":"2198:2:87","type":"","value":"32"}],"functionName":{"name":"add","nativeSrc":"2183:3:87","nodeType":"YulIdentifier","src":"2183:3:87"},"nativeSrc":"2183:18:87","nodeType":"YulFunctionCall","src":"2183:18:87"}],"functionName":{"name":"calldataload","nativeSrc":"2170:12:87","nodeType":"YulIdentifier","src":"2170:12:87"},"nativeSrc":"2170:32:87","nodeType":"YulFunctionCall","src":"2170:32:87"},"variableNames":[{"name":"value1","nativeSrc":"2160:6:87","nodeType":"YulIdentifier","src":"2160:6:87"}]},{"nativeSrc":"2211:14:87","nodeType":"YulVariableDeclaration","src":"2211:14:87","value":{"kind":"number","nativeSrc":"2224:1:87","nodeType":"YulLiteral","src":"2224:1:87","type":"","value":"0"},"variables":[{"name":"value","nativeSrc":"2215:5:87","nodeType":"YulTypedName","src":"2215:5:87","type":""}]},{"nativeSrc":"2234:41:87","nodeType":"YulAssignment","src":"2234:41:87","value":{"arguments":[{"arguments":[{"name":"headStart","nativeSrc":"2260:9:87","nodeType":"YulIdentifier","src":"2260:9:87"},{"kind":"number","nativeSrc":"2271:2:87","nodeType":"YulLiteral","src":"2271:2:87","type":"","value":"64"}],"functionName":{"name":"add","nativeSrc":"2256:3:87","nodeType":"YulIdentifier","src":"2256:3:87"},"nativeSrc":"2256:18:87","nodeType":"YulFunctionCall","src":"2256:18:87"}],"functionName":{"name":"calldataload","nativeSrc":"2243:12:87","nodeType":"YulIdentifier","src":"2243:12:87"},"nativeSrc":"2243:32:87","nodeType":"YulFunctionCall","src":"2243:32:87"},"variableNames":[{"name":"value","nativeSrc":"2234:5:87","nodeType":"YulIdentifier","src":"2234:5:87"}]},{"nativeSrc":"2284:15:87","nodeType":"YulAssignment","src":"2284:15:87","value":{"name":"value","nativeSrc":"2294:5:87","nodeType":"YulIdentifier","src":"2294:5:87"},"variableNames":[{"name":"value2","nativeSrc":"2284:6:87","nodeType":"YulIdentifier","src":"2284:6:87"}]},{"nativeSrc":"2308:16:87","nodeType":"YulVariableDeclaration","src":"2308:16:87","value":{"kind":"number","nativeSrc":"2323:1:87","nodeType":"YulLiteral","src":"2323:1:87","type":"","value":"0"},"variables":[{"name":"value_1","nativeSrc":"2312:7:87","nodeType":"YulTypedName","src":"2312:7:87","type":""}]},{"nativeSrc":"2333:43:87","nodeType":"YulAssignment","src":"2333:43:87","value":{"arguments":[{"arguments":[{"name":"headStart","nativeSrc":"2361:9:87","nodeType":"YulIdentifier","src":"2361:9:87"},{"kind":"number","nativeSrc":"2372:2:87","nodeType":"YulLiteral","src":"2372:2:87","type":"","value":"96"}],"functionName":{"name":"add","nativeSrc":"2357:3:87","nodeType":"YulIdentifier","src":"2357:3:87"},"nativeSrc":"2357:18:87","nodeType":"YulFunctionCall","src":"2357:18:87"}],"functionName":{"name":"calldataload","nativeSrc":"2344:12:87","nodeType":"YulIdentifier","src":"2344:12:87"},"nativeSrc":"2344:32:87","nodeType":"YulFunctionCall","src":"2344:32:87"},"variableNames":[{"name":"value_1","nativeSrc":"2333:7:87","nodeType":"YulIdentifier","src":"2333:7:87"}]},{"nativeSrc":"2385:17:87","nodeType":"YulAssignment","src":"2385:17:87","value":{"name":"value_1","nativeSrc":"2395:7:87","nodeType":"YulIdentifier","src":"2395:7:87"},"variableNames":[{"name":"value3","nativeSrc":"2385:6:87","nodeType":"YulIdentifier","src":"2385:6:87"}]},{"nativeSrc":"2411:48:87","nodeType":"YulAssignment","src":"2411:48:87","value":{"arguments":[{"arguments":[{"name":"headStart","nativeSrc":"2443:9:87","nodeType":"YulIdentifier","src":"2443:9:87"},{"kind":"number","nativeSrc":"2454:3:87","nodeType":"YulLiteral","src":"2454:3:87","type":"","value":"128"}],"functionName":{"name":"add","nativeSrc":"2439:3:87","nodeType":"YulIdentifier","src":"2439:3:87"},"nativeSrc":"2439:19:87","nodeType":"YulFunctionCall","src":"2439:19:87"}],"functionName":{"name":"abi_decode_uint80","nativeSrc":"2421:17:87","nodeType":"YulIdentifier","src":"2421:17:87"},"nativeSrc":"2421:38:87","nodeType":"YulFunctionCall","src":"2421:38:87"},"variableNames":[{"name":"value4","nativeSrc":"2411:6:87","nodeType":"YulIdentifier","src":"2411:6:87"}]}]},"name":"abi_decode_tuple_t_uint80t_int256t_uint256t_uint256t_uint80","nativeSrc":"1906:559:87","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nativeSrc":"1975:9:87","nodeType":"YulTypedName","src":"1975:9:87","type":""},{"name":"dataEnd","nativeSrc":"1986:7:87","nodeType":"YulTypedName","src":"1986:7:87","type":""}],"returnVariables":[{"name":"value0","nativeSrc":"1998:6:87","nodeType":"YulTypedName","src":"1998:6:87","type":""},{"name":"value1","nativeSrc":"2006:6:87","nodeType":"YulTypedName","src":"2006:6:87","type":""},{"name":"value2","nativeSrc":"2014:6:87","nodeType":"YulTypedName","src":"2014:6:87","type":""},{"name":"value3","nativeSrc":"2022:6:87","nodeType":"YulTypedName","src":"2022:6:87","type":""},{"name":"value4","nativeSrc":"2030:6:87","nodeType":"YulTypedName","src":"2030:6:87","type":""}],"src":"1906:559:87"},{"body":{"nativeSrc":"2525:325:87","nodeType":"YulBlock","src":"2525:325:87","statements":[{"nativeSrc":"2535:22:87","nodeType":"YulAssignment","src":"2535:22:87","value":{"arguments":[{"kind":"number","nativeSrc":"2549:1:87","nodeType":"YulLiteral","src":"2549:1:87","type":"","value":"1"},{"name":"data","nativeSrc":"2552:4:87","nodeType":"YulIdentifier","src":"2552:4:87"}],"functionName":{"name":"shr","nativeSrc":"2545:3:87","nodeType":"YulIdentifier","src":"2545:3:87"},"nativeSrc":"2545:12:87","nodeType":"YulFunctionCall","src":"2545:12:87"},"variableNames":[{"name":"length","nativeSrc":"2535:6:87","nodeType":"YulIdentifier","src":"2535:6:87"}]},{"nativeSrc":"2566:38:87","nodeType":"YulVariableDeclaration","src":"2566:38:87","value":{"arguments":[{"name":"data","nativeSrc":"2596:4:87","nodeType":"YulIdentifier","src":"2596:4:87"},{"kind":"number","nativeSrc":"2602:1:87","nodeType":"YulLiteral","src":"2602:1:87","type":"","value":"1"}],"functionName":{"name":"and","nativeSrc":"2592:3:87","nodeType":"YulIdentifier","src":"2592:3:87"},"nativeSrc":"2592:12:87","nodeType":"YulFunctionCall","src":"2592:12:87"},"variables":[{"name":"outOfPlaceEncoding","nativeSrc":"2570:18:87","nodeType":"YulTypedName","src":"2570:18:87","type":""}]},{"body":{"nativeSrc":"2643:31:87","nodeType":"YulBlock","src":"2643:31:87","statements":[{"nativeSrc":"2645:27:87","nodeType":"YulAssignment","src":"2645:27:87","value":{"arguments":[{"name":"length","nativeSrc":"2659:6:87","nodeType":"YulIdentifier","src":"2659:6:87"},{"kind":"number","nativeSrc":"2667:4:87","nodeType":"YulLiteral","src":"2667:4:87","type":"","value":"0x7f"}],"functionName":{"name":"and","nativeSrc":"2655:3:87","nodeType":"YulIdentifier","src":"2655:3:87"},"nativeSrc":"2655:17:87","nodeType":"YulFunctionCall","src":"2655:17:87"},"variableNames":[{"name":"length","nativeSrc":"2645:6:87","nodeType":"YulIdentifier","src":"2645:6:87"}]}]},"condition":{"arguments":[{"name":"outOfPlaceEncoding","nativeSrc":"2623:18:87","nodeType":"YulIdentifier","src":"2623:18:87"}],"functionName":{"name":"iszero","nativeSrc":"2616:6:87","nodeType":"YulIdentifier","src":"2616:6:87"},"nativeSrc":"2616:26:87","nodeType":"YulFunctionCall","src":"2616:26:87"},"nativeSrc":"2613:61:87","nodeType":"YulIf","src":"2613:61:87"},{"body":{"nativeSrc":"2733:111:87","nodeType":"YulBlock","src":"2733:111:87","statements":[{"expression":{"arguments":[{"kind":"number","nativeSrc":"2754:1:87","nodeType":"YulLiteral","src":"2754:1:87","type":"","value":"0"},{"arguments":[{"kind":"number","nativeSrc":"2761:3:87","nodeType":"YulLiteral","src":"2761:3:87","type":"","value":"224"},{"kind":"number","nativeSrc":"2766:10:87","nodeType":"YulLiteral","src":"2766:10:87","type":"","value":"0x4e487b71"}],"functionName":{"name":"shl","nativeSrc":"2757:3:87","nodeType":"YulIdentifier","src":"2757:3:87"},"nativeSrc":"2757:20:87","nodeType":"YulFunctionCall","src":"2757:20:87"}],"functionName":{"name":"mstore","nativeSrc":"2747:6:87","nodeType":"YulIdentifier","src":"2747:6:87"},"nativeSrc":"2747:31:87","nodeType":"YulFunctionCall","src":"2747:31:87"},"nativeSrc":"2747:31:87","nodeType":"YulExpressionStatement","src":"2747:31:87"},{"expression":{"arguments":[{"kind":"number","nativeSrc":"2798:1:87","nodeType":"YulLiteral","src":"2798:1:87","type":"","value":"4"},{"kind":"number","nativeSrc":"2801:4:87","nodeType":"YulLiteral","src":"2801:4:87","type":"","value":"0x22"}],"functionName":{"name":"mstore","nativeSrc":"2791:6:87","nodeType":"YulIdentifier","src":"2791:6:87"},"nativeSrc":"2791:15:87","nodeType":"YulFunctionCall","src":"2791:15:87"},"nativeSrc":"2791:15:87","nodeType":"YulExpressionStatement","src":"2791:15:87"},{"expression":{"arguments":[{"kind":"number","nativeSrc":"2826:1:87","nodeType":"YulLiteral","src":"2826:1:87","type":"","value":"0"},{"kind":"number","nativeSrc":"2829:4:87","nodeType":"YulLiteral","src":"2829:4:87","type":"","value":"0x24"}],"functionName":{"name":"revert","nativeSrc":"2819:6:87","nodeType":"YulIdentifier","src":"2819:6:87"},"nativeSrc":"2819:15:87","nodeType":"YulFunctionCall","src":"2819:15:87"},"nativeSrc":"2819:15:87","nodeType":"YulExpressionStatement","src":"2819:15:87"}]},"condition":{"arguments":[{"name":"outOfPlaceEncoding","nativeSrc":"2689:18:87","nodeType":"YulIdentifier","src":"2689:18:87"},{"arguments":[{"name":"length","nativeSrc":"2712:6:87","nodeType":"YulIdentifier","src":"2712:6:87"},{"kind":"number","nativeSrc":"2720:2:87","nodeType":"YulLiteral","src":"2720:2:87","type":"","value":"32"}],"functionName":{"name":"lt","nativeSrc":"2709:2:87","nodeType":"YulIdentifier","src":"2709:2:87"},"nativeSrc":"2709:14:87","nodeType":"YulFunctionCall","src":"2709:14:87"}],"functionName":{"name":"eq","nativeSrc":"2686:2:87","nodeType":"YulIdentifier","src":"2686:2:87"},"nativeSrc":"2686:38:87","nodeType":"YulFunctionCall","src":"2686:38:87"},"nativeSrc":"2683:161:87","nodeType":"YulIf","src":"2683:161:87"}]},"name":"extract_byte_array_length","nativeSrc":"2470:380:87","nodeType":"YulFunctionDefinition","parameters":[{"name":"data","nativeSrc":"2505:4:87","nodeType":"YulTypedName","src":"2505:4:87","type":""}],"returnVariables":[{"name":"length","nativeSrc":"2514:6:87","nodeType":"YulTypedName","src":"2514:6:87","type":""}],"src":"2470:380:87"}]},"contents":"{\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 abi_encode_tuple_t_uint80__to_t_uint80__fromStack_reversed(headStart, value0) -> tail\n    {\n        tail := add(headStart, 32)\n        mstore(headStart, and(value0, 0xffffffffffffffffffff))\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_string_memory_ptr__to_t_string_memory_ptr__fromStack_reversed(headStart, value0) -> tail\n    {\n        mstore(headStart, 32)\n        let length := mload(value0)\n        mstore(add(headStart, 32), length)\n        mcopy(add(headStart, 64), add(value0, 32), length)\n        mstore(add(add(headStart, length), 64), 0)\n        tail := add(add(headStart, and(add(length, 31), not(31))), 64)\n    }\n    function abi_decode_uint80(offset) -> value\n    {\n        value := calldataload(offset)\n        if iszero(eq(value, and(value, 0xffffffffffffffffffff))) { revert(0, 0) }\n    }\n    function abi_decode_tuple_t_uint80(headStart, dataEnd) -> value0\n    {\n        if slt(sub(dataEnd, headStart), 32) { revert(0, 0) }\n        value0 := abi_decode_uint80(headStart)\n    }\n    function abi_encode_tuple_t_uint80_t_int256_t_uint256_t_uint256_t_uint80__to_t_uint80_t_int256_t_uint256_t_uint256_t_uint80__fromStack_reversed(headStart, value4, value3, value2, value1, value0) -> tail\n    {\n        tail := add(headStart, 160)\n        mstore(headStart, and(value0, 0xffffffffffffffffffff))\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, 0xffffffffffffffffffff))\n    }\n    function abi_decode_tuple_t_uint80t_int256t_uint256t_uint256t_uint80(headStart, dataEnd) -> value0, value1, value2, value3, value4\n    {\n        if slt(sub(dataEnd, headStart), 160) { revert(0, 0) }\n        value0 := abi_decode_uint80(headStart)\n        value1 := calldataload(add(headStart, 32))\n        let value := 0\n        value := calldataload(add(headStart, 64))\n        value2 := value\n        let value_1 := 0\n        value_1 := calldataload(add(headStart, 96))\n        value3 := value_1\n        value4 := abi_decode_uint80(add(headStart, 128))\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":87,"language":"Yul","name":"#utility.yul"}],"immutableReferences":{},"linkReferences":{},"object":"608060405234801561000f575f5ffd5b506004361061007a575f3560e01c80637284e416116100585780637284e416146100e35780639a6fc8f5146100f8578063acfc72a414610178578063feaf968c1461018d575f5ffd5b8063313ce5671461007e578063388ca80f146100a157806354fd4d50146100cc575b5f5ffd5b5f5461008a9060ff1681565b60405160ff90911681526020015b60405180910390f35b6004546100b4906001600160501b031681565b6040516001600160501b039091168152602001610098565b6100d560025481565b604051908152602001610098565b6100eb6101cc565b604051610098919061030f565b61014461010636600461035f565b6001600160501b039081165f908152600360208190526040909120805460018201546002830154938301546004909301549185169590949190911690565b604080516001600160501b03968716815260208101959095528401929092526060830152909116608082015260a001610098565b61018b61018636600461037f565b610258565b005b600480546001600160501b039081165f908152600360208190526040909120805460018201546002830154938301549290950154908416949316610144565b600180546101d9906103cb565b80601f0160208091040260200160405190810160405280929190818152602001828054610205906103cb565b80156102505780601f1061022757610100808354040283529160200191610250565b820191905f5260205f20905b81548152906001019060200180831161023357829003601f168201915b505050505081565b6040805160a0810182526001600160501b03808816808352602080840189815284860189815260608601898152888616608088019081525f868152600395869052989098209651875490871669ffffffffffffffffffff199182161788559251600188015590516002870155519185019190915593516004938401805491841691909516179093559054161015610308576004805469ffffffffffffffffffff19166001600160501b0387161790555b5050505050565b602081525f82518060208401528060208501604085015e5f604082850101526040601f19601f83011684010191505092915050565b80356001600160501b038116811461035a575f5ffd5b919050565b5f6020828403121561036f575f5ffd5b61037882610344565b9392505050565b5f5f5f5f5f60a08688031215610393575f5ffd5b61039c86610344565b94506020860135935060408601359250606086013591506103bf60808701610344565b90509295509295909350565b600181811c908216806103df57607f821691505b6020821081036103fd57634e487b7160e01b5f52602260045260245ffd5b5091905056fea264697066735822122064ab754ab697bd4c65aaf1a503a488106bf11ca395c60739342c8b7f64fa01aa64736f6c634300081e0033","opcodes":"PUSH1 0x80 PUSH1 0x40 MSTORE CALLVALUE DUP1 ISZERO PUSH2 0xF JUMPI PUSH0 PUSH0 REVERT JUMPDEST POP PUSH1 0x4 CALLDATASIZE LT PUSH2 0x7A JUMPI PUSH0 CALLDATALOAD PUSH1 0xE0 SHR DUP1 PUSH4 0x7284E416 GT PUSH2 0x58 JUMPI DUP1 PUSH4 0x7284E416 EQ PUSH2 0xE3 JUMPI DUP1 PUSH4 0x9A6FC8F5 EQ PUSH2 0xF8 JUMPI DUP1 PUSH4 0xACFC72A4 EQ PUSH2 0x178 JUMPI DUP1 PUSH4 0xFEAF968C EQ PUSH2 0x18D JUMPI PUSH0 PUSH0 REVERT JUMPDEST DUP1 PUSH4 0x313CE567 EQ PUSH2 0x7E JUMPI DUP1 PUSH4 0x388CA80F EQ PUSH2 0xA1 JUMPI DUP1 PUSH4 0x54FD4D50 EQ PUSH2 0xCC JUMPI JUMPDEST PUSH0 PUSH0 REVERT JUMPDEST PUSH0 SLOAD PUSH2 0x8A SWAP1 PUSH1 0xFF AND DUP2 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH1 0xFF SWAP1 SWAP2 AND DUP2 MSTORE PUSH1 0x20 ADD JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST PUSH1 0x4 SLOAD PUSH2 0xB4 SWAP1 PUSH1 0x1 PUSH1 0x1 PUSH1 0x50 SHL SUB AND DUP2 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0x50 SHL SUB SWAP1 SWAP2 AND DUP2 MSTORE PUSH1 0x20 ADD PUSH2 0x98 JUMP JUMPDEST PUSH2 0xD5 PUSH1 0x2 SLOAD DUP2 JUMP JUMPDEST PUSH1 0x40 MLOAD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH2 0x98 JUMP JUMPDEST PUSH2 0xEB PUSH2 0x1CC JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0x98 SWAP2 SWAP1 PUSH2 0x30F JUMP JUMPDEST PUSH2 0x144 PUSH2 0x106 CALLDATASIZE PUSH1 0x4 PUSH2 0x35F JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0x50 SHL SUB SWAP1 DUP2 AND PUSH0 SWAP1 DUP2 MSTORE PUSH1 0x3 PUSH1 0x20 DUP2 SWAP1 MSTORE PUSH1 0x40 SWAP1 SWAP2 KECCAK256 DUP1 SLOAD PUSH1 0x1 DUP3 ADD SLOAD PUSH1 0x2 DUP4 ADD SLOAD SWAP4 DUP4 ADD SLOAD PUSH1 0x4 SWAP1 SWAP4 ADD SLOAD SWAP2 DUP6 AND SWAP6 SWAP1 SWAP5 SWAP2 SWAP1 SWAP2 AND SWAP1 JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0x50 SHL SUB SWAP7 DUP8 AND DUP2 MSTORE PUSH1 0x20 DUP2 ADD SWAP6 SWAP1 SWAP6 MSTORE DUP5 ADD SWAP3 SWAP1 SWAP3 MSTORE PUSH1 0x60 DUP4 ADD MSTORE SWAP1 SWAP2 AND PUSH1 0x80 DUP3 ADD MSTORE PUSH1 0xA0 ADD PUSH2 0x98 JUMP JUMPDEST PUSH2 0x18B PUSH2 0x186 CALLDATASIZE PUSH1 0x4 PUSH2 0x37F JUMP JUMPDEST PUSH2 0x258 JUMP JUMPDEST STOP JUMPDEST PUSH1 0x4 DUP1 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0x50 SHL SUB SWAP1 DUP2 AND PUSH0 SWAP1 DUP2 MSTORE PUSH1 0x3 PUSH1 0x20 DUP2 SWAP1 MSTORE PUSH1 0x40 SWAP1 SWAP2 KECCAK256 DUP1 SLOAD PUSH1 0x1 DUP3 ADD SLOAD PUSH1 0x2 DUP4 ADD SLOAD SWAP4 DUP4 ADD SLOAD SWAP3 SWAP1 SWAP6 ADD SLOAD SWAP1 DUP5 AND SWAP5 SWAP4 AND PUSH2 0x144 JUMP JUMPDEST PUSH1 0x1 DUP1 SLOAD PUSH2 0x1D9 SWAP1 PUSH2 0x3CB 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 0x205 SWAP1 PUSH2 0x3CB JUMP JUMPDEST DUP1 ISZERO PUSH2 0x250 JUMPI DUP1 PUSH1 0x1F LT PUSH2 0x227 JUMPI PUSH2 0x100 DUP1 DUP4 SLOAD DIV MUL DUP4 MSTORE SWAP2 PUSH1 0x20 ADD SWAP2 PUSH2 0x250 JUMP JUMPDEST DUP3 ADD SWAP2 SWAP1 PUSH0 MSTORE PUSH1 0x20 PUSH0 KECCAK256 SWAP1 JUMPDEST DUP2 SLOAD DUP2 MSTORE SWAP1 PUSH1 0x1 ADD SWAP1 PUSH1 0x20 ADD DUP1 DUP4 GT PUSH2 0x233 JUMPI DUP3 SWAP1 SUB PUSH1 0x1F AND DUP3 ADD SWAP2 JUMPDEST POP POP POP POP POP DUP2 JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH1 0xA0 DUP2 ADD DUP3 MSTORE PUSH1 0x1 PUSH1 0x1 PUSH1 0x50 SHL SUB DUP1 DUP9 AND DUP1 DUP4 MSTORE PUSH1 0x20 DUP1 DUP5 ADD DUP10 DUP2 MSTORE DUP5 DUP7 ADD DUP10 DUP2 MSTORE PUSH1 0x60 DUP7 ADD DUP10 DUP2 MSTORE DUP9 DUP7 AND PUSH1 0x80 DUP9 ADD SWAP1 DUP2 MSTORE PUSH0 DUP7 DUP2 MSTORE PUSH1 0x3 SWAP6 DUP7 SWAP1 MSTORE SWAP9 SWAP1 SWAP9 KECCAK256 SWAP7 MLOAD DUP8 SLOAD SWAP1 DUP8 AND PUSH10 0xFFFFFFFFFFFFFFFFFFFF NOT SWAP2 DUP3 AND OR DUP9 SSTORE SWAP3 MLOAD PUSH1 0x1 DUP9 ADD SSTORE SWAP1 MLOAD PUSH1 0x2 DUP8 ADD SSTORE MLOAD SWAP2 DUP6 ADD SWAP2 SWAP1 SWAP2 SSTORE SWAP4 MLOAD PUSH1 0x4 SWAP4 DUP5 ADD DUP1 SLOAD SWAP2 DUP5 AND SWAP2 SWAP1 SWAP6 AND OR SWAP1 SWAP4 SSTORE SWAP1 SLOAD AND LT ISZERO PUSH2 0x308 JUMPI PUSH1 0x4 DUP1 SLOAD PUSH10 0xFFFFFFFFFFFFFFFFFFFF NOT AND PUSH1 0x1 PUSH1 0x1 PUSH1 0x50 SHL SUB DUP8 AND OR SWAP1 SSTORE JUMPDEST POP POP POP POP POP JUMP JUMPDEST PUSH1 0x20 DUP2 MSTORE PUSH0 DUP3 MLOAD DUP1 PUSH1 0x20 DUP5 ADD MSTORE DUP1 PUSH1 0x20 DUP6 ADD PUSH1 0x40 DUP6 ADD MCOPY PUSH0 PUSH1 0x40 DUP3 DUP6 ADD ADD MSTORE PUSH1 0x40 PUSH1 0x1F NOT PUSH1 0x1F DUP4 ADD AND DUP5 ADD ADD SWAP2 POP POP SWAP3 SWAP2 POP POP JUMP JUMPDEST DUP1 CALLDATALOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0x50 SHL SUB DUP2 AND DUP2 EQ PUSH2 0x35A JUMPI PUSH0 PUSH0 REVERT JUMPDEST SWAP2 SWAP1 POP JUMP JUMPDEST PUSH0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x36F JUMPI PUSH0 PUSH0 REVERT JUMPDEST PUSH2 0x378 DUP3 PUSH2 0x344 JUMP JUMPDEST SWAP4 SWAP3 POP POP POP JUMP JUMPDEST PUSH0 PUSH0 PUSH0 PUSH0 PUSH0 PUSH1 0xA0 DUP7 DUP9 SUB SLT ISZERO PUSH2 0x393 JUMPI PUSH0 PUSH0 REVERT JUMPDEST PUSH2 0x39C DUP7 PUSH2 0x344 JUMP JUMPDEST SWAP5 POP PUSH1 0x20 DUP7 ADD CALLDATALOAD SWAP4 POP PUSH1 0x40 DUP7 ADD CALLDATALOAD SWAP3 POP PUSH1 0x60 DUP7 ADD CALLDATALOAD SWAP2 POP PUSH2 0x3BF PUSH1 0x80 DUP8 ADD PUSH2 0x344 JUMP JUMPDEST SWAP1 POP SWAP3 SWAP6 POP SWAP3 SWAP6 SWAP1 SWAP4 POP JUMP JUMPDEST PUSH1 0x1 DUP2 DUP2 SHR SWAP1 DUP3 AND DUP1 PUSH2 0x3DF JUMPI PUSH1 0x7F DUP3 AND SWAP2 POP JUMPDEST PUSH1 0x20 DUP3 LT DUP2 SUB PUSH2 0x3FD JUMPI PUSH4 0x4E487B71 PUSH1 0xE0 SHL PUSH0 MSTORE PUSH1 0x22 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH0 REVERT JUMPDEST POP SWAP2 SWAP1 POP JUMP INVALID LOG2 PUSH5 0x6970667358 0x22 SLT KECCAK256 PUSH5 0xAB754AB697 0xBD 0x4C PUSH6 0xAAF1A503A488 LT PUSH12 0xF11CA395C60739342C8B7F64 STATICCALL ADD 0xAA PUSH5 0x736F6C6343 STOP ADDMOD 0x1E STOP CALLER ","sourceMap":"156:1449:72:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;214:21;;;;;;;;;;;;186:4:87;174:17;;;156:36;;144:2;129:18;214:21:72;;;;;;;;475:25;;;;;-1:-1:-1;;;;;475:25:72;;;;;;-1:-1:-1;;;;;365:35:87;;;347:54;;335:2;320:18;475:25:72;203:204:87;268:22:72;;;;;;;;;558:25:87;;;546:2;531:18;268:22:72;412:177:87;239:25:72;;;:::i;:::-;;;;;;;:::i;964:326::-;;;;;;:::i;:::-;-1:-1:-1;;;;;1169:17:72;;;1046:14;1169:17;;;:7;:17;;;;;;;;1200:13;;;1215:12;;;1229:15;;;;1246;;;;1263:21;;;;;1200:13;;;;1215:12;;1263:21;;;;;964:326;;;;;-1:-1:-1;;;;;1657:35:87;;;1639:54;;1724:2;1709:18;;1702:34;;;;1752:18;;1745:34;;;;1810:2;1795:18;;1788:34;1859:35;;;1853:3;1838:19;;1831:64;1626:3;1611:19;964:326:72;1386:515:87;671:289:72;;;;;;:::i;:::-;;:::i;:::-;;1294:309;1487:11;;;-1:-1:-1;;;;;1487:11:72;;;1356:14;1479:20;;;:7;:20;;;;;;;;1513:13;;1487:11;1528:12;;;1542:15;;;;1559;;;;1576:21;;;;;1513:13;;;;1528:12;1576:21;1294:309;;239:25;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::o;671:289::-;840:61;;;;;;;;-1:-1:-1;;;;;840:61:72;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;821:16:72;;;:7;:16;;;;;;;;:80;;;;;;;-1:-1:-1;;821:80:72;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;921:11;;;-1:-1:-1;907:48:72;;;934:11;:21;;-1:-1:-1;;934:21:72;-1:-1:-1;;;;;934:21:72;;;;;907:48;671:289;;;;;:::o;594:418:87:-;743:2;732:9;725:21;706:4;775:6;769:13;818:6;813:2;802:9;798:18;791:34;877:6;872:2;864:6;860:15;855:2;844:9;840:18;834:50;933:1;928:2;919:6;908:9;904:22;900:31;893:42;1003:2;996;992:7;987:2;979:6;975:15;971:29;960:9;956:45;952:54;944:62;;;594:418;;;;:::o;1017:175::-;1084:20;;-1:-1:-1;;;;;1133:34:87;;1123:45;;1113:73;;1182:1;1179;1172:12;1113:73;1017:175;;;:::o;1197:184::-;1255:6;1308:2;1296:9;1287:7;1283:23;1279:32;1276:52;;;1324:1;1321;1314:12;1276:52;1347:28;1365:9;1347:28;:::i;:::-;1337:38;1197:184;-1:-1:-1;;;1197:184:87:o;1906:559::-;1998:6;2006;2014;2022;2030;2083:3;2071:9;2062:7;2058:23;2054:33;2051:53;;;2100:1;2097;2090:12;2051:53;2123:28;2141:9;2123:28;:::i;:::-;2113:38;-1:-1:-1;2198:2:87;2183:18;;2170:32;;-1:-1:-1;2271:2:87;2256:18;;2243:32;;-1:-1:-1;2372:2:87;2357:18;;2344:32;;-1:-1:-1;2421:38:87;2454:3;2439:19;;2421:38;:::i;:::-;2411:48;;1906:559;;;;;;;;:::o;2470:380::-;2549:1;2545:12;;;;2592;;;2613:61;;2667:4;2659:6;2655:17;2645:27;;2613:61;2720:2;2712:6;2709:14;2689:18;2686:38;2683:161;;2766:10;2761:3;2757:20;2754:1;2747:31;2801:4;2798:1;2791:15;2829:4;2826:1;2819:15;2683:161;;2470:380;;;:::o"},"methodIdentifiers":{"addRound(uint80,int256,uint256,uint256,uint80)":"acfc72a4","decimals()":"313ce567","description()":"7284e416","getRoundData(uint80)":"9a6fc8f5","lastRoundId()":"388ca80f","latestRoundData()":"feaf968c","version()":"54fd4d50"}},"metadata":"{\"compiler\":{\"version\":\"0.8.30+commit.73712a01\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"inputs\":[{\"internalType\":\"uint8\",\"name\":\"decimals_\",\"type\":\"uint8\"},{\"internalType\":\"string\",\"name\":\"description_\",\"type\":\"string\"},{\"internalType\":\"uint256\",\"name\":\"version_\",\"type\":\"uint256\"}],\"stateMutability\":\"nonpayable\",\"type\":\"constructor\"},{\"inputs\":[{\"internalType\":\"uint80\",\"name\":\"roundId\",\"type\":\"uint80\"},{\"internalType\":\"int256\",\"name\":\"answer\",\"type\":\"int256\"},{\"internalType\":\"uint256\",\"name\":\"startedAt\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"updatedAt\",\"type\":\"uint256\"},{\"internalType\":\"uint80\",\"name\":\"answeredInRound\",\"type\":\"uint80\"}],\"name\":\"addRound\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"decimals\",\"outputs\":[{\"internalType\":\"uint8\",\"name\":\"\",\"type\":\"uint8\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"description\",\"outputs\":[{\"internalType\":\"string\",\"name\":\"\",\"type\":\"string\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint80\",\"name\":\"_roundId\",\"type\":\"uint80\"}],\"name\":\"getRoundData\",\"outputs\":[{\"internalType\":\"uint80\",\"name\":\"roundId\",\"type\":\"uint80\"},{\"internalType\":\"int256\",\"name\":\"answer\",\"type\":\"int256\"},{\"internalType\":\"uint256\",\"name\":\"startedAt\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"updatedAt\",\"type\":\"uint256\"},{\"internalType\":\"uint80\",\"name\":\"answeredInRound\",\"type\":\"uint80\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"lastRoundId\",\"outputs\":[{\"internalType\":\"uint80\",\"name\":\"\",\"type\":\"uint80\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"latestRoundData\",\"outputs\":[{\"internalType\":\"uint80\",\"name\":\"roundId\",\"type\":\"uint80\"},{\"internalType\":\"int256\",\"name\":\"answer\",\"type\":\"int256\"},{\"internalType\":\"uint256\",\"name\":\"startedAt\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"updatedAt\",\"type\":\"uint256\"},{\"internalType\":\"uint80\",\"name\":\"answeredInRound\",\"type\":\"uint80\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"version\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"}],\"devdoc\":{\"kind\":\"dev\",\"methods\":{},\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{},\"version\":1}},\"settings\":{\"compilationTarget\":{\"contracts/mock/ChainlinkOracleMock.sol\":\"ChainlinkOracleMock\"},\"evmVersion\":\"prague\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"enabled\":true,\"runs\":200},\"remappings\":[]},\"sources\":{\"contracts/dependencies/chainlink/AggregatorV3Interface.sol\":{\"keccak256\":\"0x257a8d28fa83d3d942547c8e129ef465e4b5f3f31171e7be4739a4c98da6b4f0\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://6d39e11b1dc7b9b8ccdabbc9be442ab7cda4a81c748f57e316dcb1bcb4a28bf9\",\"dweb:/ipfs/QmaG6vz6W6iEUBsbHSBob5mdcitYxWjoygxREHpsJHfWrS\"]},\"contracts/mock/ChainlinkOracleMock.sol\":{\"keccak256\":\"0x6eef4313c844fec2f222adfd1ece9d88d72c1c508f87d22ff1f1dba61622f2df\",\"license\":\"Apache-2.0\",\"urls\":[\"bzz-raw://bcf4d1ec560b55cdd4867745810b9419fe824232b22673ce24706750598a50fc\",\"dweb:/ipfs/QmXGQxGsQr8ms27skvodL9bLMNKRwBXFfGBEdigTLRcofK\"]}},\"version\":1}","storageLayout":{"storage":[{"astId":20733,"contract":"contracts/mock/ChainlinkOracleMock.sol:ChainlinkOracleMock","label":"decimals","offset":0,"slot":"0","type":"t_uint8"},{"astId":20735,"contract":"contracts/mock/ChainlinkOracleMock.sol:ChainlinkOracleMock","label":"description","offset":0,"slot":"1","type":"t_string_storage"},{"astId":20737,"contract":"contracts/mock/ChainlinkOracleMock.sol:ChainlinkOracleMock","label":"version","offset":0,"slot":"2","type":"t_uint256"},{"astId":20753,"contract":"contracts/mock/ChainlinkOracleMock.sol:ChainlinkOracleMock","label":"_rounds","offset":0,"slot":"3","type":"t_mapping(t_uint80,t_struct(Round)20748_storage)"},{"astId":20755,"contract":"contracts/mock/ChainlinkOracleMock.sol:ChainlinkOracleMock","label":"lastRoundId","offset":0,"slot":"4","type":"t_uint80"}],"types":{"t_int256":{"encoding":"inplace","label":"int256","numberOfBytes":"32"},"t_mapping(t_uint80,t_struct(Round)20748_storage)":{"encoding":"mapping","key":"t_uint80","label":"mapping(uint80 => struct ChainlinkOracleMock.Round)","numberOfBytes":"32","value":"t_struct(Round)20748_storage"},"t_string_storage":{"encoding":"bytes","label":"string","numberOfBytes":"32"},"t_struct(Round)20748_storage":{"encoding":"inplace","label":"struct ChainlinkOracleMock.Round","members":[{"astId":20739,"contract":"contracts/mock/ChainlinkOracleMock.sol:ChainlinkOracleMock","label":"roundId","offset":0,"slot":"0","type":"t_uint80"},{"astId":20741,"contract":"contracts/mock/ChainlinkOracleMock.sol:ChainlinkOracleMock","label":"answer","offset":0,"slot":"1","type":"t_int256"},{"astId":20743,"contract":"contracts/mock/ChainlinkOracleMock.sol:ChainlinkOracleMock","label":"startedAt","offset":0,"slot":"2","type":"t_uint256"},{"astId":20745,"contract":"contracts/mock/ChainlinkOracleMock.sol:ChainlinkOracleMock","label":"updatedAt","offset":0,"slot":"3","type":"t_uint256"},{"astId":20747,"contract":"contracts/mock/ChainlinkOracleMock.sol:ChainlinkOracleMock","label":"answeredInRound","offset":0,"slot":"4","type":"t_uint80"}],"numberOfBytes":"160"},"t_uint256":{"encoding":"inplace","label":"uint256","numberOfBytes":"32"},"t_uint8":{"encoding":"inplace","label":"uint8","numberOfBytes":"1"},"t_uint80":{"encoding":"inplace","label":"uint80","numberOfBytes":"10"}}}}},"contracts/mock/DummyInvestStrategy.sol":{"DummyInvestStrategy":{"abi":[{"inputs":[{"internalType":"contract IERC20","name":"asset_","type":"address"}],"stateMutability":"nonpayable","type":"constructor"},{"inputs":[{"internalType":"string","name":"where","type":"string"}],"name":"Fail","type":"error"},{"inputs":[],"name":"NoExtraDataAllowed","type":"error"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"bytes","name":"initData","type":"bytes"}],"name":"Connect","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint256","name":"assets","type":"uint256"}],"name":"Deposit","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"bool","name":"force","type":"bool"}],"name":"Disconnect","type":"event"},{"anonymous":false,"inputs":[{"components":[{"internalType":"bool","name":"failConnect","type":"bool"},{"internalType":"bool","name":"failDisconnect","type":"bool"},{"internalType":"bool","name":"failDeposit","type":"bool"},{"internalType":"bool","name":"failWithdraw","type":"bool"}],"indexed":false,"internalType":"struct DummyInvestStrategy.DummyStorage","name":"fail","type":"tuple"}],"name":"SetFail","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint256","name":"assets","type":"uint256"}],"name":"Withdraw","type":"event"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"asset","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"bytes","name":"initData","type":"bytes"}],"name":"connect","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"assets","type":"uint256"}],"name":"deposit","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bool","name":"force","type":"bool"}],"name":"disconnect","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint8","name":"method","type":"uint8"},{"internalType":"bytes","name":"params","type":"bytes"}],"name":"forwardEntryPoint","outputs":[{"internalType":"bytes","name":"","type":"bytes"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"contract_","type":"address"}],"name":"getFail","outputs":[{"components":[{"internalType":"bool","name":"failConnect","type":"bool"},{"internalType":"bool","name":"failDisconnect","type":"bool"},{"internalType":"bool","name":"failDeposit","type":"bool"},{"internalType":"bool","name":"failWithdraw","type":"bool"}],"internalType":"struct DummyInvestStrategy.DummyStorage","name":"","type":"tuple"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"contract_","type":"address"}],"name":"maxDeposit","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"contract_","type":"address"}],"name":"maxWithdraw","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"other","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"storageSlot","outputs":[{"internalType":"bytes32","name":"","type":"bytes32"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"totalAssets","outputs":[{"internalType":"uint256","name":"assets","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"assets","type":"uint256"}],"name":"withdraw","outputs":[],"stateMutability":"nonpayable","type":"function"}],"evm":{"bytecode":{"functionDebugData":{"@_20991":{"entryPoint":null,"id":20991,"parameterSlots":1,"returnSlots":0},"@makeStorageSlot_15638":{"entryPoint":null,"id":15638,"parameterSlots":1,"returnSlots":1},"abi_decode_tuple_t_contract$_IERC20_$8679_fromMemory":{"entryPoint":206,"id":null,"parameterSlots":2,"returnSlots":1},"abi_encode_tuple_t_stringliteral_4fed0cd3539a36e00a34a6c026c2615824c9ad47da5ef65e8372c7e721c05d79_t_contract$_IInvestStrategy_$20725__to_t_string_memory_ptr_t_address__fromStack_reversed":{"entryPoint":null,"id":null,"parameterSlots":2,"returnSlots":1}},"generatedSources":[{"ast":{"nativeSrc":"0:805:87","nodeType":"YulBlock","src":"0:805:87","statements":[{"nativeSrc":"6:3:87","nodeType":"YulBlock","src":"6:3:87","statements":[]},{"body":{"nativeSrc":"110:209:87","nodeType":"YulBlock","src":"110:209:87","statements":[{"body":{"nativeSrc":"156:16:87","nodeType":"YulBlock","src":"156:16:87","statements":[{"expression":{"arguments":[{"kind":"number","nativeSrc":"165:1:87","nodeType":"YulLiteral","src":"165:1:87","type":"","value":"0"},{"kind":"number","nativeSrc":"168:1:87","nodeType":"YulLiteral","src":"168:1:87","type":"","value":"0"}],"functionName":{"name":"revert","nativeSrc":"158:6:87","nodeType":"YulIdentifier","src":"158:6:87"},"nativeSrc":"158:12:87","nodeType":"YulFunctionCall","src":"158:12:87"},"nativeSrc":"158:12:87","nodeType":"YulExpressionStatement","src":"158:12:87"}]},"condition":{"arguments":[{"arguments":[{"name":"dataEnd","nativeSrc":"131:7:87","nodeType":"YulIdentifier","src":"131:7:87"},{"name":"headStart","nativeSrc":"140:9:87","nodeType":"YulIdentifier","src":"140:9:87"}],"functionName":{"name":"sub","nativeSrc":"127:3:87","nodeType":"YulIdentifier","src":"127:3:87"},"nativeSrc":"127:23:87","nodeType":"YulFunctionCall","src":"127:23:87"},{"kind":"number","nativeSrc":"152:2:87","nodeType":"YulLiteral","src":"152:2:87","type":"","value":"32"}],"functionName":{"name":"slt","nativeSrc":"123:3:87","nodeType":"YulIdentifier","src":"123:3:87"},"nativeSrc":"123:32:87","nodeType":"YulFunctionCall","src":"123:32:87"},"nativeSrc":"120:52:87","nodeType":"YulIf","src":"120:52:87"},{"nativeSrc":"181:29:87","nodeType":"YulVariableDeclaration","src":"181:29:87","value":{"arguments":[{"name":"headStart","nativeSrc":"200:9:87","nodeType":"YulIdentifier","src":"200:9:87"}],"functionName":{"name":"mload","nativeSrc":"194:5:87","nodeType":"YulIdentifier","src":"194:5:87"},"nativeSrc":"194:16:87","nodeType":"YulFunctionCall","src":"194:16:87"},"variables":[{"name":"value","nativeSrc":"185:5:87","nodeType":"YulTypedName","src":"185:5:87","type":""}]},{"body":{"nativeSrc":"273:16:87","nodeType":"YulBlock","src":"273:16:87","statements":[{"expression":{"arguments":[{"kind":"number","nativeSrc":"282:1:87","nodeType":"YulLiteral","src":"282:1:87","type":"","value":"0"},{"kind":"number","nativeSrc":"285:1:87","nodeType":"YulLiteral","src":"285:1:87","type":"","value":"0"}],"functionName":{"name":"revert","nativeSrc":"275:6:87","nodeType":"YulIdentifier","src":"275:6:87"},"nativeSrc":"275:12:87","nodeType":"YulFunctionCall","src":"275:12:87"},"nativeSrc":"275:12:87","nodeType":"YulExpressionStatement","src":"275:12:87"}]},"condition":{"arguments":[{"arguments":[{"name":"value","nativeSrc":"232:5:87","nodeType":"YulIdentifier","src":"232:5:87"},{"arguments":[{"name":"value","nativeSrc":"243:5:87","nodeType":"YulIdentifier","src":"243:5:87"},{"arguments":[{"arguments":[{"kind":"number","nativeSrc":"258:3:87","nodeType":"YulLiteral","src":"258:3:87","type":"","value":"160"},{"kind":"number","nativeSrc":"263:1:87","nodeType":"YulLiteral","src":"263:1:87","type":"","value":"1"}],"functionName":{"name":"shl","nativeSrc":"254:3:87","nodeType":"YulIdentifier","src":"254:3:87"},"nativeSrc":"254:11:87","nodeType":"YulFunctionCall","src":"254:11:87"},{"kind":"number","nativeSrc":"267:1:87","nodeType":"YulLiteral","src":"267:1:87","type":"","value":"1"}],"functionName":{"name":"sub","nativeSrc":"250:3:87","nodeType":"YulIdentifier","src":"250:3:87"},"nativeSrc":"250:19:87","nodeType":"YulFunctionCall","src":"250:19:87"}],"functionName":{"name":"and","nativeSrc":"239:3:87","nodeType":"YulIdentifier","src":"239:3:87"},"nativeSrc":"239:31:87","nodeType":"YulFunctionCall","src":"239:31:87"}],"functionName":{"name":"eq","nativeSrc":"229:2:87","nodeType":"YulIdentifier","src":"229:2:87"},"nativeSrc":"229:42:87","nodeType":"YulFunctionCall","src":"229:42:87"}],"functionName":{"name":"iszero","nativeSrc":"222:6:87","nodeType":"YulIdentifier","src":"222:6:87"},"nativeSrc":"222:50:87","nodeType":"YulFunctionCall","src":"222:50:87"},"nativeSrc":"219:70:87","nodeType":"YulIf","src":"219:70:87"},{"nativeSrc":"298:15:87","nodeType":"YulAssignment","src":"298:15:87","value":{"name":"value","nativeSrc":"308:5:87","nodeType":"YulIdentifier","src":"308:5:87"},"variableNames":[{"name":"value0","nativeSrc":"298:6:87","nodeType":"YulIdentifier","src":"298:6:87"}]}]},"name":"abi_decode_tuple_t_contract$_IERC20_$8679_fromMemory","nativeSrc":"14:305:87","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nativeSrc":"76:9:87","nodeType":"YulTypedName","src":"76:9:87","type":""},{"name":"dataEnd","nativeSrc":"87:7:87","nodeType":"YulTypedName","src":"87:7:87","type":""}],"returnVariables":[{"name":"value0","nativeSrc":"99:6:87","nodeType":"YulTypedName","src":"99:6:87","type":""}],"src":"14:305:87"},{"body":{"nativeSrc":"551:252:87","nodeType":"YulBlock","src":"551:252:87","statements":[{"expression":{"arguments":[{"name":"headStart","nativeSrc":"568:9:87","nodeType":"YulIdentifier","src":"568:9:87"},{"kind":"number","nativeSrc":"579:2:87","nodeType":"YulLiteral","src":"579:2:87","type":"","value":"64"}],"functionName":{"name":"mstore","nativeSrc":"561:6:87","nodeType":"YulIdentifier","src":"561:6:87"},"nativeSrc":"561:21:87","nodeType":"YulFunctionCall","src":"561:21:87"},"nativeSrc":"561:21:87","nodeType":"YulExpressionStatement","src":"561:21:87"},{"expression":{"arguments":[{"arguments":[{"name":"headStart","nativeSrc":"602:9:87","nodeType":"YulIdentifier","src":"602:9:87"},{"kind":"number","nativeSrc":"613:2:87","nodeType":"YulLiteral","src":"613:2:87","type":"","value":"64"}],"functionName":{"name":"add","nativeSrc":"598:3:87","nodeType":"YulIdentifier","src":"598:3:87"},"nativeSrc":"598:18:87","nodeType":"YulFunctionCall","src":"598:18:87"},{"kind":"number","nativeSrc":"618:2:87","nodeType":"YulLiteral","src":"618:2:87","type":"","value":"30"}],"functionName":{"name":"mstore","nativeSrc":"591:6:87","nodeType":"YulIdentifier","src":"591:6:87"},"nativeSrc":"591:30:87","nodeType":"YulFunctionCall","src":"591:30:87"},"nativeSrc":"591:30:87","nodeType":"YulExpressionStatement","src":"591:30:87"},{"expression":{"arguments":[{"arguments":[{"name":"headStart","nativeSrc":"641:9:87","nodeType":"YulIdentifier","src":"641:9:87"},{"kind":"number","nativeSrc":"652:2:87","nodeType":"YulLiteral","src":"652:2:87","type":"","value":"96"}],"functionName":{"name":"add","nativeSrc":"637:3:87","nodeType":"YulIdentifier","src":"637:3:87"},"nativeSrc":"637:18:87","nodeType":"YulFunctionCall","src":"637:18:87"},{"hexValue":"636f2e656e7375726f2e496e766573745374726174656779436c69656e74","kind":"string","nativeSrc":"657:32:87","nodeType":"YulLiteral","src":"657:32:87","type":"","value":"co.ensuro.InvestStrategyClient"}],"functionName":{"name":"mstore","nativeSrc":"630:6:87","nodeType":"YulIdentifier","src":"630:6:87"},"nativeSrc":"630:60:87","nodeType":"YulFunctionCall","src":"630:60:87"},"nativeSrc":"630:60:87","nodeType":"YulExpressionStatement","src":"630:60:87"},{"nativeSrc":"699:27:87","nodeType":"YulAssignment","src":"699:27:87","value":{"arguments":[{"name":"headStart","nativeSrc":"711:9:87","nodeType":"YulIdentifier","src":"711:9:87"},{"kind":"number","nativeSrc":"722:3:87","nodeType":"YulLiteral","src":"722:3:87","type":"","value":"128"}],"functionName":{"name":"add","nativeSrc":"707:3:87","nodeType":"YulIdentifier","src":"707:3:87"},"nativeSrc":"707:19:87","nodeType":"YulFunctionCall","src":"707:19:87"},"variableNames":[{"name":"tail","nativeSrc":"699:4:87","nodeType":"YulIdentifier","src":"699:4:87"}]},{"expression":{"arguments":[{"arguments":[{"name":"headStart","nativeSrc":"746:9:87","nodeType":"YulIdentifier","src":"746:9:87"},{"kind":"number","nativeSrc":"757:4:87","nodeType":"YulLiteral","src":"757:4:87","type":"","value":"0x20"}],"functionName":{"name":"add","nativeSrc":"742:3:87","nodeType":"YulIdentifier","src":"742:3:87"},"nativeSrc":"742:20:87","nodeType":"YulFunctionCall","src":"742:20:87"},{"arguments":[{"name":"value0","nativeSrc":"768:6:87","nodeType":"YulIdentifier","src":"768:6:87"},{"arguments":[{"arguments":[{"kind":"number","nativeSrc":"784:3:87","nodeType":"YulLiteral","src":"784:3:87","type":"","value":"160"},{"kind":"number","nativeSrc":"789:1:87","nodeType":"YulLiteral","src":"789:1:87","type":"","value":"1"}],"functionName":{"name":"shl","nativeSrc":"780:3:87","nodeType":"YulIdentifier","src":"780:3:87"},"nativeSrc":"780:11:87","nodeType":"YulFunctionCall","src":"780:11:87"},{"kind":"number","nativeSrc":"793:1:87","nodeType":"YulLiteral","src":"793:1:87","type":"","value":"1"}],"functionName":{"name":"sub","nativeSrc":"776:3:87","nodeType":"YulIdentifier","src":"776:3:87"},"nativeSrc":"776:19:87","nodeType":"YulFunctionCall","src":"776:19:87"}],"functionName":{"name":"and","nativeSrc":"764:3:87","nodeType":"YulIdentifier","src":"764:3:87"},"nativeSrc":"764:32:87","nodeType":"YulFunctionCall","src":"764:32:87"}],"functionName":{"name":"mstore","nativeSrc":"735:6:87","nodeType":"YulIdentifier","src":"735:6:87"},"nativeSrc":"735:62:87","nodeType":"YulFunctionCall","src":"735:62:87"},"nativeSrc":"735:62:87","nodeType":"YulExpressionStatement","src":"735:62:87"}]},"name":"abi_encode_tuple_t_stringliteral_4fed0cd3539a36e00a34a6c026c2615824c9ad47da5ef65e8372c7e721c05d79_t_contract$_IInvestStrategy_$20725__to_t_string_memory_ptr_t_address__fromStack_reversed","nativeSrc":"324:479:87","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nativeSrc":"520:9:87","nodeType":"YulTypedName","src":"520:9:87","type":""},{"name":"value0","nativeSrc":"531:6:87","nodeType":"YulTypedName","src":"531:6:87","type":""}],"returnVariables":[{"name":"tail","nativeSrc":"542:4:87","nodeType":"YulTypedName","src":"542:4:87","type":""}],"src":"324:479:87"}]},"contents":"{\n    { }\n    function abi_decode_tuple_t_contract$_IERC20_$8679_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_stringliteral_4fed0cd3539a36e00a34a6c026c2615824c9ad47da5ef65e8372c7e721c05d79_t_contract$_IInvestStrategy_$20725__to_t_string_memory_ptr_t_address__fromStack_reversed(headStart, value0) -> tail\n    {\n        mstore(headStart, 64)\n        mstore(add(headStart, 64), 30)\n        mstore(add(headStart, 96), \"co.ensuro.InvestStrategyClient\")\n        tail := add(headStart, 128)\n        mstore(add(headStart, 0x20), and(value0, sub(shl(160, 1), 1)))\n    }\n}","id":87,"language":"Yul","name":"#utility.yul"}],"linkReferences":{},"object":"3060a08190526040610120818152601e610160527f636f2e656e7375726f2e496e766573745374726174656779436c69656e740000610180526101409290925260806101008190526101a0909152902060c05234801561005d575f5ffd5b506040516111aa3803806111aa83398101604081905261007c916100ce565b6001600160a01b038116608052604051610095906100c1565b604051809103905ff0801580156100ae573d5f5f3e3d5ffd5b506001600160a01b031660e052506100fb565b6101858061102583390190565b5f602082840312156100de575f5ffd5b81516001600160a01b03811681146100f4575f5ffd5b9392505050565b60805160a05160c05160e051610ea661017f5f395f818161017301528181610380015281816106340152818161072f01526107d801525f818161012c015281816102710152818161053a01528181610858015261094401525f50505f81816101be0152818161034b015281816106630152818161075701526108020152610ea65ff3fe608060405234801561000f575f5ffd5b50600436106100b1575f3560e01c8063852958771161006e578063852958771461016e5780639c4667a2146101ad5780639cd47128146101e0578063b6b55f25146101f3578063ce96cb7714610206578063f3e0ffbf14610219575f5ffd5b80630981b1c2146100b55780632e1a7d4d146100de578063402d267d146100f35780635a117456146101145780635b9a4c3514610127578063728d6fd81461014e575b5f5ffd5b6100c86100c3366004610a8e565b61022c565b6040516100d59190610ae0565b60405180910390f35b6100f16100ec366004610b15565b6102ea565b005b610106610101366004610b2c565b610413565b6040519081526020016100d5565b6100f1610122366004610b69565b610435565b6101067f000000000000000000000000000000000000000000000000000000000000000081565b61016161015c366004610b2c565b6104ae565b6040516100d59190610b84565b6101957f000000000000000000000000000000000000000000000000000000000000000081565b6040516001600160a01b0390911681526020016100d5565b6101956101bb366004610b2c565b507f000000000000000000000000000000000000000000000000000000000000000090565b6100f16101ee366004610bb7565b6104e0565b6100f1610201366004610b15565b6105d9565b610106610214366004610b2c565b6106fe565b610106610227366004610b2c565b6107c1565b60605f60ff8416801561024157610241610bf1565b90505f81801561025357610253610bf1565b036102d4575f8380602001905181019061026d9190610c05565b90507f000000000000000000000000000000000000000000000000000000000000000061029a8582610d0e565b507f973e473eebb9c0190db312a86661d30a6e022561e4049e3850ddc7e5d24ba9d1816040516102ca9190610b84565b60405180910390a1505b505060408051602081019091525f815292915050565b6102f2610833565b606001511561033457604051633c47dfc360e21b8152602060048201526008602482015267776974686472617760c01b60448201526064015b60405180910390fd5b6040516352f950a960e11b81526001600160a01b037f000000000000000000000000000000000000000000000000000000000000000081166004830152306024830152604482018390527f0000000000000000000000000000000000000000000000000000000000000000169063a5f2a152906064015f604051808303815f87803b1580156103c1575f5ffd5b505af11580156103d3573d5f5f3e3d5ffd5b505050507f5b6b431d4476a211bb7d41c20d1aab9ae2321deee0d20be3d9fc9b1093fa6e3d8160405161040891815260200190565b60405180910390a150565b5f61041d82610916565b604001511561042d57505f919050565b505f19919050565b61043d610833565b602001511561047c57604051633c47dfc360e21b815260206004820152600a602482015269191a5cd8dbdb9b9958dd60b21b604482015260640161032b565b60405181151581527f1b5482bdd0870e5877dfba574a78890a9ed35fa5fe455e49d0ee06d40014d15e90602001610408565b604080516080810182525f8082526020820181905291810182905260608101919091526104da82610916565b92915050565b5f818060200190518101906104f59190610c05565b905081518160405160200161050a9190610b84565b6040516020818303038152906040525114610538576040516350701b6160e01b815260040160405180910390fd5b7f00000000000000000000000000000000000000000000000000000000000000006105638382610d0e565b5080511561059e57604051633c47dfc360e21b815260206004820152600760248201526618dbdb9b9958dd60ca1b604482015260640161032b565b7f71149fec4141134c52c251b737df39ca5dd7286b51b86a0b68b2dd900243c0ce826040516105cd9190610ae0565b60405180910390a15050565b6105e1610833565b604001511561061d57604051633c47dfc360e21b815260206004820152600760248201526619195c1bdcda5d60ca1b604482015260640161032b565b60405163a9059cbb60e01b81526001600160a01b037f000000000000000000000000000000000000000000000000000000000000000081166004830152602482018390527f0000000000000000000000000000000000000000000000000000000000000000169063a9059cbb906044016020604051808303815f875af11580156106a9573d5f5f3e3d5ffd5b505050506040513d601f19601f820116820180604052508101906106cd9190610dc9565b506040518181527f4d6ce1e535dbade1c23defba91e23b8f791ce5edc0cc320257a2b364e4e3842690602001610408565b5f61070882610916565b606001511561071857505f919050565b6040516370a0823160e01b81526001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000811660048301527f000000000000000000000000000000000000000000000000000000000000000016906370a08231906024015b602060405180830381865afa15801561079d573d5f5f3e3d5ffd5b505050506040513d601f19601f820116820180604052508101906104da9190610de4565b6040516370a0823160e01b81526001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000811660048301525f917f0000000000000000000000000000000000000000000000000000000000000000909116906370a0823190602401610782565b604080516080810182525f8082526020820181905291810182905260608101919091527f0000000000000000000000000000000000000000000000000000000000000000805461088290610c8a565b80601f01602080910402602001604051908101604052809291908181526020018280546108ae90610c8a565b80156108f95780601f106108d0576101008083540402835291602001916108f9565b820191905f5260205f20905b8154815290600101906020018083116108dc57829003601f168201915b50505050508060200190518101906109119190610c05565b905090565b604080516080810182525f80825260208201819052818301819052606082015290516347e5753360e01b81527f000000000000000000000000000000000000000000000000000000000000000060048201526001600160a01b038316906347e57533906024015f60405180830381865afa158015610996573d5f5f3e3d5ffd5b505050506040513d5f823e601f3d908101601f191682016040526109bd9190810190610dfb565b8060200190518101906104da9190610c05565b634e487b7160e01b5f52604160045260245ffd5b604051601f8201601f1916810167ffffffffffffffff81118282101715610a0d57610a0d6109d0565b604052919050565b5f67ffffffffffffffff821115610a2e57610a2e6109d0565b50601f01601f191660200190565b5f82601f830112610a4b575f5ffd5b8135610a5e610a5982610a15565b6109e4565b818152846020838601011115610a72575f5ffd5b816020850160208301375f918101602001919091529392505050565b5f5f60408385031215610a9f575f5ffd5b823560ff81168114610aaf575f5ffd5b9150602083013567ffffffffffffffff811115610aca575f5ffd5b610ad685828601610a3c565b9150509250929050565b602081525f82518060208401528060208501604085015e5f604082850101526040601f19601f83011684010191505092915050565b5f60208284031215610b25575f5ffd5b5035919050565b5f60208284031215610b3c575f5ffd5b81356001600160a01b0381168114610b52575f5ffd5b9392505050565b8015158114610b66575f5ffd5b50565b5f60208284031215610b79575f5ffd5b8135610b5281610b59565b81511515815260208083015115159082015260408083015115159082015260609182015115159181019190915260800190565b5f60208284031215610bc7575f5ffd5b813567ffffffffffffffff811115610bdd575f5ffd5b610be984828501610a3c565b949350505050565b634e487b7160e01b5f52602160045260245ffd5b5f6080828403128015610c16575f5ffd5b506040516080810167ffffffffffffffff81118282101715610c3a57610c3a6109d0565b6040528251610c4881610b59565b81526020830151610c5881610b59565b60208201526040830151610c6b81610b59565b60408201526060830151610c7e81610b59565b60608201529392505050565b600181811c90821680610c9e57607f821691505b602082108103610cbc57634e487b7160e01b5f52602260045260245ffd5b50919050565b601f821115610d0957805f5260205f20601f840160051c81016020851015610ce75750805b601f840160051c820191505b81811015610d06575f8155600101610cf3565b50505b505050565b815167ffffffffffffffff811115610d2857610d286109d0565b610d3c81610d368454610c8a565b84610cc2565b6020601f821160018114610d6e575f8315610d575750848201515b5f19600385901b1c1916600184901b178455610d06565b5f84815260208120601f198516915b82811015610d9d5787850151825560209485019460019092019101610d7d565b5084821015610dba57868401515f19600387901b60f8161c191681555b50505050600190811b01905550565b5f60208284031215610dd9575f5ffd5b8151610b5281610b59565b5f60208284031215610df4575f5ffd5b5051919050565b5f60208284031215610e0b575f5ffd5b815167ffffffffffffffff811115610e21575f5ffd5b8201601f81018413610e31575f5ffd5b8051610e3f610a5982610a15565b818152856020838501011115610e53575f5ffd5b8160208401602083015e5f9181016020019190915294935050505056fea2646970667358221220c96e83830a27f9e74f0cd4e43860b4da31bcd37a88483b148b5c3825251cb9e064736f6c634300081e00336080604052348015600e575f5ffd5b506101698061001c5f395ff3fe608060405234801561000f575f5ffd5b5060043610610029575f3560e01c8063a5f2a1521461002d575b5f5ffd5b61004061003b3660046100cf565b610042565b005b60405163a9059cbb60e01b81526001600160a01b0383811660048301526024820183905284169063a9059cbb906044016020604051808303815f875af115801561008e573d5f5f3e3d5ffd5b505050506040513d601f19601f820116820180604052508101906100b2919061010d565b50505050565b6001600160a01b03811681146100cc575f5ffd5b50565b5f5f5f606084860312156100e1575f5ffd5b83356100ec816100b8565b925060208401356100fc816100b8565b929592945050506040919091013590565b5f6020828403121561011d575f5ffd5b8151801515811461012c575f5ffd5b939250505056fea2646970667358221220f2b7f995e0e3780bc3a4d0cc7bd1c44f6dbd0770416dc77545faea012f37e9a264736f6c634300081e0033","opcodes":"ADDRESS PUSH1 0xA0 DUP2 SWAP1 MSTORE PUSH1 0x40 PUSH2 0x120 DUP2 DUP2 MSTORE PUSH1 0x1E PUSH2 0x160 MSTORE PUSH32 0x636F2E656E7375726F2E496E766573745374726174656779436C69656E740000 PUSH2 0x180 MSTORE PUSH2 0x140 SWAP3 SWAP1 SWAP3 MSTORE PUSH1 0x80 PUSH2 0x100 DUP2 SWAP1 MSTORE PUSH2 0x1A0 SWAP1 SWAP2 MSTORE SWAP1 KECCAK256 PUSH1 0xC0 MSTORE CALLVALUE DUP1 ISZERO PUSH2 0x5D JUMPI PUSH0 PUSH0 REVERT JUMPDEST POP PUSH1 0x40 MLOAD PUSH2 0x11AA CODESIZE SUB DUP1 PUSH2 0x11AA DUP4 CODECOPY DUP2 ADD PUSH1 0x40 DUP2 SWAP1 MSTORE PUSH2 0x7C SWAP2 PUSH2 0xCE JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 AND PUSH1 0x80 MSTORE PUSH1 0x40 MLOAD PUSH2 0x95 SWAP1 PUSH2 0xC1 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 PUSH0 CREATE DUP1 ISZERO DUP1 ISZERO PUSH2 0xAE JUMPI RETURNDATASIZE PUSH0 PUSH0 RETURNDATACOPY RETURNDATASIZE PUSH0 REVERT JUMPDEST POP PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH1 0xE0 MSTORE POP PUSH2 0xFB JUMP JUMPDEST PUSH2 0x185 DUP1 PUSH2 0x1025 DUP4 CODECOPY ADD SWAP1 JUMP JUMPDEST PUSH0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0xDE JUMPI PUSH0 PUSH0 REVERT JUMPDEST DUP2 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 AND DUP2 EQ PUSH2 0xF4 JUMPI PUSH0 PUSH0 REVERT JUMPDEST SWAP4 SWAP3 POP POP POP JUMP JUMPDEST PUSH1 0x80 MLOAD PUSH1 0xA0 MLOAD PUSH1 0xC0 MLOAD PUSH1 0xE0 MLOAD PUSH2 0xEA6 PUSH2 0x17F PUSH0 CODECOPY PUSH0 DUP2 DUP2 PUSH2 0x173 ADD MSTORE DUP2 DUP2 PUSH2 0x380 ADD MSTORE DUP2 DUP2 PUSH2 0x634 ADD MSTORE DUP2 DUP2 PUSH2 0x72F ADD MSTORE PUSH2 0x7D8 ADD MSTORE PUSH0 DUP2 DUP2 PUSH2 0x12C ADD MSTORE DUP2 DUP2 PUSH2 0x271 ADD MSTORE DUP2 DUP2 PUSH2 0x53A ADD MSTORE DUP2 DUP2 PUSH2 0x858 ADD MSTORE PUSH2 0x944 ADD MSTORE PUSH0 POP POP PUSH0 DUP2 DUP2 PUSH2 0x1BE ADD MSTORE DUP2 DUP2 PUSH2 0x34B ADD MSTORE DUP2 DUP2 PUSH2 0x663 ADD MSTORE DUP2 DUP2 PUSH2 0x757 ADD MSTORE PUSH2 0x802 ADD MSTORE PUSH2 0xEA6 PUSH0 RETURN INVALID PUSH1 0x80 PUSH1 0x40 MSTORE CALLVALUE DUP1 ISZERO PUSH2 0xF JUMPI PUSH0 PUSH0 REVERT JUMPDEST POP PUSH1 0x4 CALLDATASIZE LT PUSH2 0xB1 JUMPI PUSH0 CALLDATALOAD PUSH1 0xE0 SHR DUP1 PUSH4 0x85295877 GT PUSH2 0x6E JUMPI DUP1 PUSH4 0x85295877 EQ PUSH2 0x16E JUMPI DUP1 PUSH4 0x9C4667A2 EQ PUSH2 0x1AD JUMPI DUP1 PUSH4 0x9CD47128 EQ PUSH2 0x1E0 JUMPI DUP1 PUSH4 0xB6B55F25 EQ PUSH2 0x1F3 JUMPI DUP1 PUSH4 0xCE96CB77 EQ PUSH2 0x206 JUMPI DUP1 PUSH4 0xF3E0FFBF EQ PUSH2 0x219 JUMPI PUSH0 PUSH0 REVERT JUMPDEST DUP1 PUSH4 0x981B1C2 EQ PUSH2 0xB5 JUMPI DUP1 PUSH4 0x2E1A7D4D EQ PUSH2 0xDE JUMPI DUP1 PUSH4 0x402D267D EQ PUSH2 0xF3 JUMPI DUP1 PUSH4 0x5A117456 EQ PUSH2 0x114 JUMPI DUP1 PUSH4 0x5B9A4C35 EQ PUSH2 0x127 JUMPI DUP1 PUSH4 0x728D6FD8 EQ PUSH2 0x14E JUMPI JUMPDEST PUSH0 PUSH0 REVERT JUMPDEST PUSH2 0xC8 PUSH2 0xC3 CALLDATASIZE PUSH1 0x4 PUSH2 0xA8E JUMP JUMPDEST PUSH2 0x22C JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0xD5 SWAP2 SWAP1 PUSH2 0xAE0 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST PUSH2 0xF1 PUSH2 0xEC CALLDATASIZE PUSH1 0x4 PUSH2 0xB15 JUMP JUMPDEST PUSH2 0x2EA JUMP JUMPDEST STOP JUMPDEST PUSH2 0x106 PUSH2 0x101 CALLDATASIZE PUSH1 0x4 PUSH2 0xB2C JUMP JUMPDEST PUSH2 0x413 JUMP JUMPDEST PUSH1 0x40 MLOAD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH2 0xD5 JUMP JUMPDEST PUSH2 0xF1 PUSH2 0x122 CALLDATASIZE PUSH1 0x4 PUSH2 0xB69 JUMP JUMPDEST PUSH2 0x435 JUMP JUMPDEST PUSH2 0x106 PUSH32 0x0 DUP2 JUMP JUMPDEST PUSH2 0x161 PUSH2 0x15C CALLDATASIZE PUSH1 0x4 PUSH2 0xB2C JUMP JUMPDEST PUSH2 0x4AE JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0xD5 SWAP2 SWAP1 PUSH2 0xB84 JUMP JUMPDEST PUSH2 0x195 PUSH32 0x0 DUP2 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP1 SWAP2 AND DUP2 MSTORE PUSH1 0x20 ADD PUSH2 0xD5 JUMP JUMPDEST PUSH2 0x195 PUSH2 0x1BB CALLDATASIZE PUSH1 0x4 PUSH2 0xB2C JUMP JUMPDEST POP PUSH32 0x0 SWAP1 JUMP JUMPDEST PUSH2 0xF1 PUSH2 0x1EE CALLDATASIZE PUSH1 0x4 PUSH2 0xBB7 JUMP JUMPDEST PUSH2 0x4E0 JUMP JUMPDEST PUSH2 0xF1 PUSH2 0x201 CALLDATASIZE PUSH1 0x4 PUSH2 0xB15 JUMP JUMPDEST PUSH2 0x5D9 JUMP JUMPDEST PUSH2 0x106 PUSH2 0x214 CALLDATASIZE PUSH1 0x4 PUSH2 0xB2C JUMP JUMPDEST PUSH2 0x6FE JUMP JUMPDEST PUSH2 0x106 PUSH2 0x227 CALLDATASIZE PUSH1 0x4 PUSH2 0xB2C JUMP JUMPDEST PUSH2 0x7C1 JUMP JUMPDEST PUSH1 0x60 PUSH0 PUSH1 0xFF DUP5 AND DUP1 ISZERO PUSH2 0x241 JUMPI PUSH2 0x241 PUSH2 0xBF1 JUMP JUMPDEST SWAP1 POP PUSH0 DUP2 DUP1 ISZERO PUSH2 0x253 JUMPI PUSH2 0x253 PUSH2 0xBF1 JUMP JUMPDEST SUB PUSH2 0x2D4 JUMPI PUSH0 DUP4 DUP1 PUSH1 0x20 ADD SWAP1 MLOAD DUP2 ADD SWAP1 PUSH2 0x26D SWAP2 SWAP1 PUSH2 0xC05 JUMP JUMPDEST SWAP1 POP PUSH32 0x0 PUSH2 0x29A DUP6 DUP3 PUSH2 0xD0E JUMP JUMPDEST POP PUSH32 0x973E473EEBB9C0190DB312A86661D30A6E022561E4049E3850DDC7E5D24BA9D1 DUP2 PUSH1 0x40 MLOAD PUSH2 0x2CA SWAP2 SWAP1 PUSH2 0xB84 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 LOG1 POP JUMPDEST POP POP PUSH1 0x40 DUP1 MLOAD PUSH1 0x20 DUP2 ADD SWAP1 SWAP2 MSTORE PUSH0 DUP2 MSTORE SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH2 0x2F2 PUSH2 0x833 JUMP JUMPDEST PUSH1 0x60 ADD MLOAD ISZERO PUSH2 0x334 JUMPI PUSH1 0x40 MLOAD PUSH4 0x3C47DFC3 PUSH1 0xE2 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x8 PUSH1 0x24 DUP3 ADD MSTORE PUSH8 0x7769746864726177 PUSH1 0xC0 SHL PUSH1 0x44 DUP3 ADD MSTORE PUSH1 0x64 ADD JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH1 0x40 MLOAD PUSH4 0x52F950A9 PUSH1 0xE1 SHL DUP2 MSTORE PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB PUSH32 0x0 DUP2 AND PUSH1 0x4 DUP4 ADD MSTORE ADDRESS PUSH1 0x24 DUP4 ADD MSTORE PUSH1 0x44 DUP3 ADD DUP4 SWAP1 MSTORE PUSH32 0x0 AND SWAP1 PUSH4 0xA5F2A152 SWAP1 PUSH1 0x64 ADD PUSH0 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 PUSH0 DUP8 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x3C1 JUMPI PUSH0 PUSH0 REVERT JUMPDEST POP GAS CALL ISZERO DUP1 ISZERO PUSH2 0x3D3 JUMPI RETURNDATASIZE PUSH0 PUSH0 RETURNDATACOPY RETURNDATASIZE PUSH0 REVERT JUMPDEST POP POP POP POP PUSH32 0x5B6B431D4476A211BB7D41C20D1AAB9AE2321DEEE0D20BE3D9FC9B1093FA6E3D DUP2 PUSH1 0x40 MLOAD PUSH2 0x408 SWAP2 DUP2 MSTORE PUSH1 0x20 ADD SWAP1 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 LOG1 POP JUMP JUMPDEST PUSH0 PUSH2 0x41D DUP3 PUSH2 0x916 JUMP JUMPDEST PUSH1 0x40 ADD MLOAD ISZERO PUSH2 0x42D JUMPI POP PUSH0 SWAP2 SWAP1 POP JUMP JUMPDEST POP PUSH0 NOT SWAP2 SWAP1 POP JUMP JUMPDEST PUSH2 0x43D PUSH2 0x833 JUMP JUMPDEST PUSH1 0x20 ADD MLOAD ISZERO PUSH2 0x47C JUMPI PUSH1 0x40 MLOAD PUSH4 0x3C47DFC3 PUSH1 0xE2 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0xA PUSH1 0x24 DUP3 ADD MSTORE PUSH10 0x191A5CD8DBDB9B9958DD PUSH1 0xB2 SHL PUSH1 0x44 DUP3 ADD MSTORE PUSH1 0x64 ADD PUSH2 0x32B JUMP JUMPDEST PUSH1 0x40 MLOAD DUP2 ISZERO ISZERO DUP2 MSTORE PUSH32 0x1B5482BDD0870E5877DFBA574A78890A9ED35FA5FE455E49D0EE06D40014D15E SWAP1 PUSH1 0x20 ADD PUSH2 0x408 JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH1 0x80 DUP2 ADD DUP3 MSTORE PUSH0 DUP1 DUP3 MSTORE PUSH1 0x20 DUP3 ADD DUP2 SWAP1 MSTORE SWAP2 DUP2 ADD DUP3 SWAP1 MSTORE PUSH1 0x60 DUP2 ADD SWAP2 SWAP1 SWAP2 MSTORE PUSH2 0x4DA DUP3 PUSH2 0x916 JUMP JUMPDEST SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH0 DUP2 DUP1 PUSH1 0x20 ADD SWAP1 MLOAD DUP2 ADD SWAP1 PUSH2 0x4F5 SWAP2 SWAP1 PUSH2 0xC05 JUMP JUMPDEST SWAP1 POP DUP2 MLOAD DUP2 PUSH1 0x40 MLOAD PUSH1 0x20 ADD PUSH2 0x50A SWAP2 SWAP1 PUSH2 0xB84 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH1 0x20 DUP2 DUP4 SUB SUB DUP2 MSTORE SWAP1 PUSH1 0x40 MSTORE MLOAD EQ PUSH2 0x538 JUMPI PUSH1 0x40 MLOAD PUSH4 0x50701B61 PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH32 0x0 PUSH2 0x563 DUP4 DUP3 PUSH2 0xD0E JUMP JUMPDEST POP DUP1 MLOAD ISZERO PUSH2 0x59E JUMPI PUSH1 0x40 MLOAD PUSH4 0x3C47DFC3 PUSH1 0xE2 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x7 PUSH1 0x24 DUP3 ADD MSTORE PUSH7 0x18DBDB9B9958DD PUSH1 0xCA SHL PUSH1 0x44 DUP3 ADD MSTORE PUSH1 0x64 ADD PUSH2 0x32B JUMP JUMPDEST PUSH32 0x71149FEC4141134C52C251B737DF39CA5DD7286B51B86A0B68B2DD900243C0CE DUP3 PUSH1 0x40 MLOAD PUSH2 0x5CD SWAP2 SWAP1 PUSH2 0xAE0 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 LOG1 POP POP JUMP JUMPDEST PUSH2 0x5E1 PUSH2 0x833 JUMP JUMPDEST PUSH1 0x40 ADD MLOAD ISZERO PUSH2 0x61D JUMPI PUSH1 0x40 MLOAD PUSH4 0x3C47DFC3 PUSH1 0xE2 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x7 PUSH1 0x24 DUP3 ADD MSTORE PUSH7 0x19195C1BDCDA5D PUSH1 0xCA SHL PUSH1 0x44 DUP3 ADD MSTORE PUSH1 0x64 ADD PUSH2 0x32B JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH4 0xA9059CBB PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB PUSH32 0x0 DUP2 AND PUSH1 0x4 DUP4 ADD MSTORE PUSH1 0x24 DUP3 ADD DUP4 SWAP1 MSTORE PUSH32 0x0 AND SWAP1 PUSH4 0xA9059CBB SWAP1 PUSH1 0x44 ADD PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 PUSH0 DUP8 GAS CALL ISZERO DUP1 ISZERO PUSH2 0x6A9 JUMPI RETURNDATASIZE PUSH0 PUSH0 RETURNDATACOPY RETURNDATASIZE PUSH0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP3 ADD DUP1 PUSH1 0x40 MSTORE POP DUP2 ADD SWAP1 PUSH2 0x6CD SWAP2 SWAP1 PUSH2 0xDC9 JUMP JUMPDEST POP PUSH1 0x40 MLOAD DUP2 DUP2 MSTORE PUSH32 0x4D6CE1E535DBADE1C23DEFBA91E23B8F791CE5EDC0CC320257A2B364E4E38426 SWAP1 PUSH1 0x20 ADD PUSH2 0x408 JUMP JUMPDEST PUSH0 PUSH2 0x708 DUP3 PUSH2 0x916 JUMP JUMPDEST PUSH1 0x60 ADD MLOAD ISZERO PUSH2 0x718 JUMPI POP PUSH0 SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH4 0x70A08231 PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB PUSH32 0x0 DUP2 AND PUSH1 0x4 DUP4 ADD MSTORE PUSH32 0x0 AND SWAP1 PUSH4 0x70A08231 SWAP1 PUSH1 0x24 ADD JUMPDEST PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x79D JUMPI RETURNDATASIZE PUSH0 PUSH0 RETURNDATACOPY RETURNDATASIZE PUSH0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP3 ADD DUP1 PUSH1 0x40 MSTORE POP DUP2 ADD SWAP1 PUSH2 0x4DA SWAP2 SWAP1 PUSH2 0xDE4 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH4 0x70A08231 PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB PUSH32 0x0 DUP2 AND PUSH1 0x4 DUP4 ADD MSTORE PUSH0 SWAP2 PUSH32 0x0 SWAP1 SWAP2 AND SWAP1 PUSH4 0x70A08231 SWAP1 PUSH1 0x24 ADD PUSH2 0x782 JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH1 0x80 DUP2 ADD DUP3 MSTORE PUSH0 DUP1 DUP3 MSTORE PUSH1 0x20 DUP3 ADD DUP2 SWAP1 MSTORE SWAP2 DUP2 ADD DUP3 SWAP1 MSTORE PUSH1 0x60 DUP2 ADD SWAP2 SWAP1 SWAP2 MSTORE PUSH32 0x0 DUP1 SLOAD PUSH2 0x882 SWAP1 PUSH2 0xC8A 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 0x8AE SWAP1 PUSH2 0xC8A JUMP JUMPDEST DUP1 ISZERO PUSH2 0x8F9 JUMPI DUP1 PUSH1 0x1F LT PUSH2 0x8D0 JUMPI PUSH2 0x100 DUP1 DUP4 SLOAD DIV MUL DUP4 MSTORE SWAP2 PUSH1 0x20 ADD SWAP2 PUSH2 0x8F9 JUMP JUMPDEST DUP3 ADD SWAP2 SWAP1 PUSH0 MSTORE PUSH1 0x20 PUSH0 KECCAK256 SWAP1 JUMPDEST DUP2 SLOAD DUP2 MSTORE SWAP1 PUSH1 0x1 ADD SWAP1 PUSH1 0x20 ADD DUP1 DUP4 GT PUSH2 0x8DC JUMPI DUP3 SWAP1 SUB PUSH1 0x1F AND DUP3 ADD SWAP2 JUMPDEST POP POP POP POP POP DUP1 PUSH1 0x20 ADD SWAP1 MLOAD DUP2 ADD SWAP1 PUSH2 0x911 SWAP2 SWAP1 PUSH2 0xC05 JUMP JUMPDEST SWAP1 POP SWAP1 JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH1 0x80 DUP2 ADD DUP3 MSTORE PUSH0 DUP1 DUP3 MSTORE PUSH1 0x20 DUP3 ADD DUP2 SWAP1 MSTORE DUP2 DUP4 ADD DUP2 SWAP1 MSTORE PUSH1 0x60 DUP3 ADD MSTORE SWAP1 MLOAD PUSH4 0x47E57533 PUSH1 0xE0 SHL DUP2 MSTORE PUSH32 0x0 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP4 AND SWAP1 PUSH4 0x47E57533 SWAP1 PUSH1 0x24 ADD PUSH0 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x996 JUMPI RETURNDATASIZE PUSH0 PUSH0 RETURNDATACOPY RETURNDATASIZE PUSH0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH0 DUP3 RETURNDATACOPY PUSH1 0x1F RETURNDATASIZE SWAP1 DUP2 ADD PUSH1 0x1F NOT AND DUP3 ADD PUSH1 0x40 MSTORE PUSH2 0x9BD SWAP2 SWAP1 DUP2 ADD SWAP1 PUSH2 0xDFB JUMP JUMPDEST DUP1 PUSH1 0x20 ADD SWAP1 MLOAD DUP2 ADD SWAP1 PUSH2 0x4DA SWAP2 SWAP1 PUSH2 0xC05 JUMP JUMPDEST PUSH4 0x4E487B71 PUSH1 0xE0 SHL PUSH0 MSTORE PUSH1 0x41 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH0 REVERT JUMPDEST PUSH1 0x40 MLOAD PUSH1 0x1F DUP3 ADD PUSH1 0x1F NOT AND DUP2 ADD PUSH8 0xFFFFFFFFFFFFFFFF DUP2 GT DUP3 DUP3 LT OR ISZERO PUSH2 0xA0D JUMPI PUSH2 0xA0D PUSH2 0x9D0 JUMP JUMPDEST PUSH1 0x40 MSTORE SWAP2 SWAP1 POP JUMP JUMPDEST PUSH0 PUSH8 0xFFFFFFFFFFFFFFFF DUP3 GT ISZERO PUSH2 0xA2E JUMPI PUSH2 0xA2E PUSH2 0x9D0 JUMP JUMPDEST POP PUSH1 0x1F ADD PUSH1 0x1F NOT AND PUSH1 0x20 ADD SWAP1 JUMP JUMPDEST PUSH0 DUP3 PUSH1 0x1F DUP4 ADD SLT PUSH2 0xA4B JUMPI PUSH0 PUSH0 REVERT JUMPDEST DUP2 CALLDATALOAD PUSH2 0xA5E PUSH2 0xA59 DUP3 PUSH2 0xA15 JUMP JUMPDEST PUSH2 0x9E4 JUMP JUMPDEST DUP2 DUP2 MSTORE DUP5 PUSH1 0x20 DUP4 DUP7 ADD ADD GT ISZERO PUSH2 0xA72 JUMPI PUSH0 PUSH0 REVERT JUMPDEST DUP2 PUSH1 0x20 DUP6 ADD PUSH1 0x20 DUP4 ADD CALLDATACOPY PUSH0 SWAP2 DUP2 ADD PUSH1 0x20 ADD SWAP2 SWAP1 SWAP2 MSTORE SWAP4 SWAP3 POP POP POP JUMP JUMPDEST PUSH0 PUSH0 PUSH1 0x40 DUP4 DUP6 SUB SLT ISZERO PUSH2 0xA9F JUMPI PUSH0 PUSH0 REVERT JUMPDEST DUP3 CALLDATALOAD PUSH1 0xFF DUP2 AND DUP2 EQ PUSH2 0xAAF JUMPI PUSH0 PUSH0 REVERT JUMPDEST SWAP2 POP PUSH1 0x20 DUP4 ADD CALLDATALOAD PUSH8 0xFFFFFFFFFFFFFFFF DUP2 GT ISZERO PUSH2 0xACA JUMPI PUSH0 PUSH0 REVERT JUMPDEST PUSH2 0xAD6 DUP6 DUP3 DUP7 ADD PUSH2 0xA3C JUMP JUMPDEST SWAP2 POP POP SWAP3 POP SWAP3 SWAP1 POP JUMP JUMPDEST PUSH1 0x20 DUP2 MSTORE PUSH0 DUP3 MLOAD DUP1 PUSH1 0x20 DUP5 ADD MSTORE DUP1 PUSH1 0x20 DUP6 ADD PUSH1 0x40 DUP6 ADD MCOPY PUSH0 PUSH1 0x40 DUP3 DUP6 ADD ADD MSTORE PUSH1 0x40 PUSH1 0x1F NOT PUSH1 0x1F DUP4 ADD AND DUP5 ADD ADD SWAP2 POP POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0xB25 JUMPI PUSH0 PUSH0 REVERT JUMPDEST POP CALLDATALOAD SWAP2 SWAP1 POP JUMP JUMPDEST PUSH0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0xB3C JUMPI PUSH0 PUSH0 REVERT JUMPDEST DUP2 CALLDATALOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 AND DUP2 EQ PUSH2 0xB52 JUMPI PUSH0 PUSH0 REVERT JUMPDEST SWAP4 SWAP3 POP POP POP JUMP JUMPDEST DUP1 ISZERO ISZERO DUP2 EQ PUSH2 0xB66 JUMPI PUSH0 PUSH0 REVERT JUMPDEST POP JUMP JUMPDEST PUSH0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0xB79 JUMPI PUSH0 PUSH0 REVERT JUMPDEST DUP2 CALLDATALOAD PUSH2 0xB52 DUP2 PUSH2 0xB59 JUMP JUMPDEST DUP2 MLOAD ISZERO ISZERO DUP2 MSTORE PUSH1 0x20 DUP1 DUP4 ADD MLOAD ISZERO ISZERO SWAP1 DUP3 ADD MSTORE PUSH1 0x40 DUP1 DUP4 ADD MLOAD ISZERO ISZERO SWAP1 DUP3 ADD MSTORE PUSH1 0x60 SWAP2 DUP3 ADD MLOAD ISZERO ISZERO SWAP2 DUP2 ADD SWAP2 SWAP1 SWAP2 MSTORE PUSH1 0x80 ADD SWAP1 JUMP JUMPDEST PUSH0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0xBC7 JUMPI PUSH0 PUSH0 REVERT JUMPDEST DUP2 CALLDATALOAD PUSH8 0xFFFFFFFFFFFFFFFF DUP2 GT ISZERO PUSH2 0xBDD JUMPI PUSH0 PUSH0 REVERT JUMPDEST PUSH2 0xBE9 DUP5 DUP3 DUP6 ADD PUSH2 0xA3C JUMP JUMPDEST SWAP5 SWAP4 POP POP POP POP JUMP JUMPDEST PUSH4 0x4E487B71 PUSH1 0xE0 SHL PUSH0 MSTORE PUSH1 0x21 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH0 REVERT JUMPDEST PUSH0 PUSH1 0x80 DUP3 DUP5 SUB SLT DUP1 ISZERO PUSH2 0xC16 JUMPI PUSH0 PUSH0 REVERT JUMPDEST POP PUSH1 0x40 MLOAD PUSH1 0x80 DUP2 ADD PUSH8 0xFFFFFFFFFFFFFFFF DUP2 GT DUP3 DUP3 LT OR ISZERO PUSH2 0xC3A JUMPI PUSH2 0xC3A PUSH2 0x9D0 JUMP JUMPDEST PUSH1 0x40 MSTORE DUP3 MLOAD PUSH2 0xC48 DUP2 PUSH2 0xB59 JUMP JUMPDEST DUP2 MSTORE PUSH1 0x20 DUP4 ADD MLOAD PUSH2 0xC58 DUP2 PUSH2 0xB59 JUMP JUMPDEST PUSH1 0x20 DUP3 ADD MSTORE PUSH1 0x40 DUP4 ADD MLOAD PUSH2 0xC6B DUP2 PUSH2 0xB59 JUMP JUMPDEST PUSH1 0x40 DUP3 ADD MSTORE PUSH1 0x60 DUP4 ADD MLOAD PUSH2 0xC7E DUP2 PUSH2 0xB59 JUMP JUMPDEST PUSH1 0x60 DUP3 ADD MSTORE SWAP4 SWAP3 POP POP POP JUMP JUMPDEST PUSH1 0x1 DUP2 DUP2 SHR SWAP1 DUP3 AND DUP1 PUSH2 0xC9E JUMPI PUSH1 0x7F DUP3 AND SWAP2 POP JUMPDEST PUSH1 0x20 DUP3 LT DUP2 SUB PUSH2 0xCBC JUMPI PUSH4 0x4E487B71 PUSH1 0xE0 SHL PUSH0 MSTORE PUSH1 0x22 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH0 REVERT JUMPDEST POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x1F DUP3 GT ISZERO PUSH2 0xD09 JUMPI DUP1 PUSH0 MSTORE PUSH1 0x20 PUSH0 KECCAK256 PUSH1 0x1F DUP5 ADD PUSH1 0x5 SHR DUP2 ADD PUSH1 0x20 DUP6 LT ISZERO PUSH2 0xCE7 JUMPI POP DUP1 JUMPDEST PUSH1 0x1F DUP5 ADD PUSH1 0x5 SHR DUP3 ADD SWAP2 POP JUMPDEST DUP2 DUP2 LT ISZERO PUSH2 0xD06 JUMPI PUSH0 DUP2 SSTORE PUSH1 0x1 ADD PUSH2 0xCF3 JUMP JUMPDEST POP POP JUMPDEST POP POP POP JUMP JUMPDEST DUP2 MLOAD PUSH8 0xFFFFFFFFFFFFFFFF DUP2 GT ISZERO PUSH2 0xD28 JUMPI PUSH2 0xD28 PUSH2 0x9D0 JUMP JUMPDEST PUSH2 0xD3C DUP2 PUSH2 0xD36 DUP5 SLOAD PUSH2 0xC8A JUMP JUMPDEST DUP5 PUSH2 0xCC2 JUMP JUMPDEST PUSH1 0x20 PUSH1 0x1F DUP3 GT PUSH1 0x1 DUP2 EQ PUSH2 0xD6E JUMPI PUSH0 DUP4 ISZERO PUSH2 0xD57 JUMPI POP DUP5 DUP3 ADD MLOAD JUMPDEST PUSH0 NOT PUSH1 0x3 DUP6 SWAP1 SHL SHR NOT AND PUSH1 0x1 DUP5 SWAP1 SHL OR DUP5 SSTORE PUSH2 0xD06 JUMP JUMPDEST PUSH0 DUP5 DUP2 MSTORE PUSH1 0x20 DUP2 KECCAK256 PUSH1 0x1F NOT DUP6 AND SWAP2 JUMPDEST DUP3 DUP2 LT ISZERO PUSH2 0xD9D JUMPI DUP8 DUP6 ADD MLOAD DUP3 SSTORE PUSH1 0x20 SWAP5 DUP6 ADD SWAP5 PUSH1 0x1 SWAP1 SWAP3 ADD SWAP2 ADD PUSH2 0xD7D JUMP JUMPDEST POP DUP5 DUP3 LT ISZERO PUSH2 0xDBA JUMPI DUP7 DUP5 ADD MLOAD PUSH0 NOT PUSH1 0x3 DUP8 SWAP1 SHL PUSH1 0xF8 AND SHR NOT AND DUP2 SSTORE JUMPDEST POP POP POP POP PUSH1 0x1 SWAP1 DUP2 SHL ADD SWAP1 SSTORE POP JUMP JUMPDEST PUSH0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0xDD9 JUMPI PUSH0 PUSH0 REVERT JUMPDEST DUP2 MLOAD PUSH2 0xB52 DUP2 PUSH2 0xB59 JUMP JUMPDEST PUSH0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0xDF4 JUMPI PUSH0 PUSH0 REVERT JUMPDEST POP MLOAD SWAP2 SWAP1 POP JUMP JUMPDEST PUSH0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0xE0B JUMPI PUSH0 PUSH0 REVERT JUMPDEST DUP2 MLOAD PUSH8 0xFFFFFFFFFFFFFFFF DUP2 GT ISZERO PUSH2 0xE21 JUMPI PUSH0 PUSH0 REVERT JUMPDEST DUP3 ADD PUSH1 0x1F DUP2 ADD DUP5 SGT PUSH2 0xE31 JUMPI PUSH0 PUSH0 REVERT JUMPDEST DUP1 MLOAD PUSH2 0xE3F PUSH2 0xA59 DUP3 PUSH2 0xA15 JUMP JUMPDEST DUP2 DUP2 MSTORE DUP6 PUSH1 0x20 DUP4 DUP6 ADD ADD GT ISZERO PUSH2 0xE53 JUMPI PUSH0 PUSH0 REVERT JUMPDEST DUP2 PUSH1 0x20 DUP5 ADD PUSH1 0x20 DUP4 ADD MCOPY PUSH0 SWAP2 DUP2 ADD PUSH1 0x20 ADD SWAP2 SWAP1 SWAP2 MSTORE SWAP5 SWAP4 POP POP POP POP JUMP INVALID LOG2 PUSH5 0x6970667358 0x22 SLT KECCAK256 0xC9 PUSH15 0x83830A27F9E74F0CD4E43860B4DA31 0xBC 0xD3 PUSH27 0x88483B148B5C3825251CB9E064736F6C634300081E003360806040 MSTORE CALLVALUE DUP1 ISZERO PUSH1 0xE JUMPI PUSH0 PUSH0 REVERT JUMPDEST POP PUSH2 0x169 DUP1 PUSH2 0x1C PUSH0 CODECOPY PUSH0 RETURN INVALID PUSH1 0x80 PUSH1 0x40 MSTORE CALLVALUE DUP1 ISZERO PUSH2 0xF JUMPI PUSH0 PUSH0 REVERT JUMPDEST POP PUSH1 0x4 CALLDATASIZE LT PUSH2 0x29 JUMPI PUSH0 CALLDATALOAD PUSH1 0xE0 SHR DUP1 PUSH4 0xA5F2A152 EQ PUSH2 0x2D JUMPI JUMPDEST PUSH0 PUSH0 REVERT JUMPDEST PUSH2 0x40 PUSH2 0x3B CALLDATASIZE PUSH1 0x4 PUSH2 0xCF JUMP JUMPDEST PUSH2 0x42 JUMP JUMPDEST STOP JUMPDEST PUSH1 0x40 MLOAD PUSH4 0xA9059CBB PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP4 DUP2 AND PUSH1 0x4 DUP4 ADD MSTORE PUSH1 0x24 DUP3 ADD DUP4 SWAP1 MSTORE DUP5 AND SWAP1 PUSH4 0xA9059CBB SWAP1 PUSH1 0x44 ADD PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 PUSH0 DUP8 GAS CALL ISZERO DUP1 ISZERO PUSH2 0x8E JUMPI RETURNDATASIZE PUSH0 PUSH0 RETURNDATACOPY RETURNDATASIZE PUSH0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP3 ADD DUP1 PUSH1 0x40 MSTORE POP DUP2 ADD SWAP1 PUSH2 0xB2 SWAP2 SWAP1 PUSH2 0x10D JUMP JUMPDEST POP POP POP POP JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 AND DUP2 EQ PUSH2 0xCC JUMPI PUSH0 PUSH0 REVERT JUMPDEST POP JUMP JUMPDEST PUSH0 PUSH0 PUSH0 PUSH1 0x60 DUP5 DUP7 SUB SLT ISZERO PUSH2 0xE1 JUMPI PUSH0 PUSH0 REVERT JUMPDEST DUP4 CALLDATALOAD PUSH2 0xEC DUP2 PUSH2 0xB8 JUMP JUMPDEST SWAP3 POP PUSH1 0x20 DUP5 ADD CALLDATALOAD PUSH2 0xFC DUP2 PUSH2 0xB8 JUMP JUMPDEST SWAP3 SWAP6 SWAP3 SWAP5 POP POP POP PUSH1 0x40 SWAP2 SWAP1 SWAP2 ADD CALLDATALOAD SWAP1 JUMP JUMPDEST PUSH0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x11D JUMPI PUSH0 PUSH0 REVERT JUMPDEST DUP2 MLOAD DUP1 ISZERO ISZERO DUP2 EQ PUSH2 0x12C JUMPI PUSH0 PUSH0 REVERT JUMPDEST SWAP4 SWAP3 POP POP POP JUMP INVALID LOG2 PUSH5 0x6970667358 0x22 SLT KECCAK256 CALLCODE 0xB7 EXTDELEGATECALL SWAP6 RJUMP 0xE378 SIGNEXTEND 0xC3 LOG4 0xD0 0xCC PUSH28 0xD1C44F6DBD0770416DC77545FAEA012F37E9A264736F6C634300081E STOP CALLER ","sourceMap":"753:4:73:-:0;710:48;;;;622:3150;7309:54:53;561:21:87;;;618:2;598:18;591:30;657:32;637:18;630:60;742:20;735:62;;;;637:18;622:3150:73;7309:54:53;;;707:19:87;7309:54:53;;;7299:65;;762:81:73;;1272:94;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;-1:-1:-1;;;;;1305:15:73;;;;1342:18;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;;1326:35:73;;;-1:-1:-1;622:3150:73;;;;;;;;;;:::o;14:305:87:-;99:6;152:2;140:9;131:7;127:23;123:32;120:52;;;168:1;165;158:12;120:52;194:16;;-1:-1:-1;;;;;239:31:87;;229:42;;219:70;;285:1;282;275:12;219:70;308:5;14:305;-1:-1:-1;;;14:305:87:o;324:479::-;622:3150:73;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;"},"deployedBytecode":{"functionDebugData":{"@_getStorageForViews_21079":{"entryPoint":2326,"id":21079,"parameterSlots":1,"returnSlots":1},"@_getStorage_21058":{"entryPoint":2099,"id":21058,"parameterSlots":0,"returnSlots":1},"@asset_21155":{"entryPoint":null,"id":21155,"parameterSlots":1,"returnSlots":1},"@connect_21040":{"entryPoint":1248,"id":21040,"parameterSlots":1,"returnSlots":0},"@deposit_21226":{"entryPoint":1497,"id":21226,"parameterSlots":1,"returnSlots":0},"@disconnect_21098":{"entryPoint":1077,"id":21098,"parameterSlots":1,"returnSlots":0},"@forwardEntryPoint_21277":{"entryPoint":556,"id":21277,"parameterSlots":2,"returnSlots":1},"@getBytesSlot_11020":{"entryPoint":null,"id":11020,"parameterSlots":1,"returnSlots":1},"@getFail_21290":{"entryPoint":1198,"id":21290,"parameterSlots":1,"returnSlots":1},"@maxDeposit_21141":{"entryPoint":1043,"id":21141,"parameterSlots":1,"returnSlots":1},"@maxWithdraw_21119":{"entryPoint":1790,"id":21119,"parameterSlots":1,"returnSlots":1},"@other_20932":{"entryPoint":null,"id":20932,"parameterSlots":0,"returnSlots":0},"@storageSlot_20930":{"entryPoint":null,"id":20930,"parameterSlots":0,"returnSlots":0},"@totalAssets_21169":{"entryPoint":1985,"id":21169,"parameterSlots":1,"returnSlots":1},"@withdraw_21200":{"entryPoint":746,"id":21200,"parameterSlots":1,"returnSlots":0},"abi_decode_bytes":{"entryPoint":2620,"id":null,"parameterSlots":2,"returnSlots":1},"abi_decode_tuple_t_address":{"entryPoint":2860,"id":null,"parameterSlots":2,"returnSlots":1},"abi_decode_tuple_t_bool":{"entryPoint":2921,"id":null,"parameterSlots":2,"returnSlots":1},"abi_decode_tuple_t_bool_fromMemory":{"entryPoint":3529,"id":null,"parameterSlots":2,"returnSlots":1},"abi_decode_tuple_t_bytes_memory_ptr":{"entryPoint":2999,"id":null,"parameterSlots":2,"returnSlots":1},"abi_decode_tuple_t_bytes_memory_ptr_fromMemory":{"entryPoint":3579,"id":null,"parameterSlots":2,"returnSlots":1},"abi_decode_tuple_t_struct$_DummyStorage_$20949_memory_ptr_fromMemory":{"entryPoint":3077,"id":null,"parameterSlots":2,"returnSlots":1},"abi_decode_tuple_t_uint256":{"entryPoint":2837,"id":null,"parameterSlots":2,"returnSlots":1},"abi_decode_tuple_t_uint256_fromMemory":{"entryPoint":3556,"id":null,"parameterSlots":2,"returnSlots":1},"abi_decode_tuple_t_uint8t_bytes_memory_ptr":{"entryPoint":2702,"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_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_bytes_memory_ptr__to_t_bytes_memory_ptr__fromStack_reversed":{"entryPoint":2784,"id":null,"parameterSlots":2,"returnSlots":1},"abi_encode_tuple_t_contract$_IERC20_$8679_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_stringliteral_33f3b0f27639a8cf87e42127aff3d5fb0ceefb0ec7f418bbae25f31ac364ef39__to_t_string_memory_ptr__fromStack_reversed":{"entryPoint":null,"id":null,"parameterSlots":1,"returnSlots":1},"abi_encode_tuple_t_stringliteral_48c73f681176fc7b3f9693986fd7b14581e8d540519e27400e88b8713932be01__to_t_string_memory_ptr__fromStack_reversed":{"entryPoint":null,"id":null,"parameterSlots":1,"returnSlots":1},"abi_encode_tuple_t_stringliteral_6cc4cd8a2857f640feca9d434996a8bd85fc3342a4342aa8c9e794d5d512b324__to_t_string_memory_ptr__fromStack_reversed":{"entryPoint":null,"id":null,"parameterSlots":1,"returnSlots":1},"abi_encode_tuple_t_stringliteral_855511cc3694f64379908437d6d64458dc76d02482052bfb8a5b33a72c054c77__to_t_string_memory_ptr__fromStack_reversed":{"entryPoint":null,"id":null,"parameterSlots":1,"returnSlots":1},"abi_encode_tuple_t_struct$_DummyStorage_$20949_memory_ptr__to_t_struct$_DummyStorage_$20949_memory_ptr__fromStack_reversed":{"entryPoint":2948,"id":null,"parameterSlots":2,"returnSlots":1},"abi_encode_tuple_t_uint256__to_t_uint256__fromStack_reversed":{"entryPoint":null,"id":null,"parameterSlots":2,"returnSlots":1},"allocate_memory":{"entryPoint":2532,"id":null,"parameterSlots":1,"returnSlots":1},"array_allocation_size_bytes":{"entryPoint":2581,"id":null,"parameterSlots":1,"returnSlots":1},"array_dataslot_bytes_storage":{"entryPoint":null,"id":null,"parameterSlots":1,"returnSlots":1},"clean_up_bytearray_end_slots_bytes_storage":{"entryPoint":3266,"id":null,"parameterSlots":3,"returnSlots":0},"copy_byte_array_to_storage_from_t_bytes_memory_ptr_to_t_bytes_storage":{"entryPoint":3342,"id":null,"parameterSlots":2,"returnSlots":0},"extract_byte_array_length":{"entryPoint":3210,"id":null,"parameterSlots":1,"returnSlots":1},"extract_used_part_and_set_length_of_short_byte_array":{"entryPoint":null,"id":null,"parameterSlots":2,"returnSlots":1},"panic_error_0x21":{"entryPoint":3057,"id":null,"parameterSlots":0,"returnSlots":0},"panic_error_0x41":{"entryPoint":2512,"id":null,"parameterSlots":0,"returnSlots":0},"validator_revert_bool":{"entryPoint":2905,"id":null,"parameterSlots":1,"returnSlots":0}},"generatedSources":[{"ast":{"nativeSrc":"0:11189:87","nodeType":"YulBlock","src":"0:11189:87","statements":[{"nativeSrc":"6:3:87","nodeType":"YulBlock","src":"6:3:87","statements":[]},{"body":{"nativeSrc":"46:95:87","nodeType":"YulBlock","src":"46:95:87","statements":[{"expression":{"arguments":[{"kind":"number","nativeSrc":"63:1:87","nodeType":"YulLiteral","src":"63:1:87","type":"","value":"0"},{"arguments":[{"kind":"number","nativeSrc":"70:3:87","nodeType":"YulLiteral","src":"70:3:87","type":"","value":"224"},{"kind":"number","nativeSrc":"75:10:87","nodeType":"YulLiteral","src":"75:10:87","type":"","value":"0x4e487b71"}],"functionName":{"name":"shl","nativeSrc":"66:3:87","nodeType":"YulIdentifier","src":"66:3:87"},"nativeSrc":"66:20:87","nodeType":"YulFunctionCall","src":"66:20:87"}],"functionName":{"name":"mstore","nativeSrc":"56:6:87","nodeType":"YulIdentifier","src":"56:6:87"},"nativeSrc":"56:31:87","nodeType":"YulFunctionCall","src":"56:31:87"},"nativeSrc":"56:31:87","nodeType":"YulExpressionStatement","src":"56:31:87"},{"expression":{"arguments":[{"kind":"number","nativeSrc":"103:1:87","nodeType":"YulLiteral","src":"103:1:87","type":"","value":"4"},{"kind":"number","nativeSrc":"106:4:87","nodeType":"YulLiteral","src":"106:4:87","type":"","value":"0x41"}],"functionName":{"name":"mstore","nativeSrc":"96:6:87","nodeType":"YulIdentifier","src":"96:6:87"},"nativeSrc":"96:15:87","nodeType":"YulFunctionCall","src":"96:15:87"},"nativeSrc":"96:15:87","nodeType":"YulExpressionStatement","src":"96:15:87"},{"expression":{"arguments":[{"kind":"number","nativeSrc":"127:1:87","nodeType":"YulLiteral","src":"127:1:87","type":"","value":"0"},{"kind":"number","nativeSrc":"130:4:87","nodeType":"YulLiteral","src":"130:4:87","type":"","value":"0x24"}],"functionName":{"name":"revert","nativeSrc":"120:6:87","nodeType":"YulIdentifier","src":"120:6:87"},"nativeSrc":"120:15:87","nodeType":"YulFunctionCall","src":"120:15:87"},"nativeSrc":"120:15:87","nodeType":"YulExpressionStatement","src":"120:15:87"}]},"name":"panic_error_0x41","nativeSrc":"14:127:87","nodeType":"YulFunctionDefinition","src":"14:127:87"},{"body":{"nativeSrc":"191:230:87","nodeType":"YulBlock","src":"191:230:87","statements":[{"nativeSrc":"201:19:87","nodeType":"YulAssignment","src":"201:19:87","value":{"arguments":[{"kind":"number","nativeSrc":"217:2:87","nodeType":"YulLiteral","src":"217:2:87","type":"","value":"64"}],"functionName":{"name":"mload","nativeSrc":"211:5:87","nodeType":"YulIdentifier","src":"211:5:87"},"nativeSrc":"211:9:87","nodeType":"YulFunctionCall","src":"211:9:87"},"variableNames":[{"name":"memPtr","nativeSrc":"201:6:87","nodeType":"YulIdentifier","src":"201:6:87"}]},{"nativeSrc":"229:58:87","nodeType":"YulVariableDeclaration","src":"229:58:87","value":{"arguments":[{"name":"memPtr","nativeSrc":"251:6:87","nodeType":"YulIdentifier","src":"251:6:87"},{"arguments":[{"arguments":[{"name":"size","nativeSrc":"267:4:87","nodeType":"YulIdentifier","src":"267:4:87"},{"kind":"number","nativeSrc":"273:2:87","nodeType":"YulLiteral","src":"273:2:87","type":"","value":"31"}],"functionName":{"name":"add","nativeSrc":"263:3:87","nodeType":"YulIdentifier","src":"263:3:87"},"nativeSrc":"263:13:87","nodeType":"YulFunctionCall","src":"263:13:87"},{"arguments":[{"kind":"number","nativeSrc":"282:2:87","nodeType":"YulLiteral","src":"282:2:87","type":"","value":"31"}],"functionName":{"name":"not","nativeSrc":"278:3:87","nodeType":"YulIdentifier","src":"278:3:87"},"nativeSrc":"278:7:87","nodeType":"YulFunctionCall","src":"278:7:87"}],"functionName":{"name":"and","nativeSrc":"259:3:87","nodeType":"YulIdentifier","src":"259:3:87"},"nativeSrc":"259:27:87","nodeType":"YulFunctionCall","src":"259:27:87"}],"functionName":{"name":"add","nativeSrc":"247:3:87","nodeType":"YulIdentifier","src":"247:3:87"},"nativeSrc":"247:40:87","nodeType":"YulFunctionCall","src":"247:40:87"},"variables":[{"name":"newFreePtr","nativeSrc":"233:10:87","nodeType":"YulTypedName","src":"233:10:87","type":""}]},{"body":{"nativeSrc":"362:22:87","nodeType":"YulBlock","src":"362:22:87","statements":[{"expression":{"arguments":[],"functionName":{"name":"panic_error_0x41","nativeSrc":"364:16:87","nodeType":"YulIdentifier","src":"364:16:87"},"nativeSrc":"364:18:87","nodeType":"YulFunctionCall","src":"364:18:87"},"nativeSrc":"364:18:87","nodeType":"YulExpressionStatement","src":"364:18:87"}]},"condition":{"arguments":[{"arguments":[{"name":"newFreePtr","nativeSrc":"305:10:87","nodeType":"YulIdentifier","src":"305:10:87"},{"kind":"number","nativeSrc":"317:18:87","nodeType":"YulLiteral","src":"317:18:87","type":"","value":"0xffffffffffffffff"}],"functionName":{"name":"gt","nativeSrc":"302:2:87","nodeType":"YulIdentifier","src":"302:2:87"},"nativeSrc":"302:34:87","nodeType":"YulFunctionCall","src":"302:34:87"},{"arguments":[{"name":"newFreePtr","nativeSrc":"341:10:87","nodeType":"YulIdentifier","src":"341:10:87"},{"name":"memPtr","nativeSrc":"353:6:87","nodeType":"YulIdentifier","src":"353:6:87"}],"functionName":{"name":"lt","nativeSrc":"338:2:87","nodeType":"YulIdentifier","src":"338:2:87"},"nativeSrc":"338:22:87","nodeType":"YulFunctionCall","src":"338:22:87"}],"functionName":{"name":"or","nativeSrc":"299:2:87","nodeType":"YulIdentifier","src":"299:2:87"},"nativeSrc":"299:62:87","nodeType":"YulFunctionCall","src":"299:62:87"},"nativeSrc":"296:88:87","nodeType":"YulIf","src":"296:88:87"},{"expression":{"arguments":[{"kind":"number","nativeSrc":"400:2:87","nodeType":"YulLiteral","src":"400:2:87","type":"","value":"64"},{"name":"newFreePtr","nativeSrc":"404:10:87","nodeType":"YulIdentifier","src":"404:10:87"}],"functionName":{"name":"mstore","nativeSrc":"393:6:87","nodeType":"YulIdentifier","src":"393:6:87"},"nativeSrc":"393:22:87","nodeType":"YulFunctionCall","src":"393:22:87"},"nativeSrc":"393:22:87","nodeType":"YulExpressionStatement","src":"393:22:87"}]},"name":"allocate_memory","nativeSrc":"146:275:87","nodeType":"YulFunctionDefinition","parameters":[{"name":"size","nativeSrc":"171:4:87","nodeType":"YulTypedName","src":"171:4:87","type":""}],"returnVariables":[{"name":"memPtr","nativeSrc":"180:6:87","nodeType":"YulTypedName","src":"180:6:87","type":""}],"src":"146:275:87"},{"body":{"nativeSrc":"483:129:87","nodeType":"YulBlock","src":"483:129:87","statements":[{"body":{"nativeSrc":"527:22:87","nodeType":"YulBlock","src":"527:22:87","statements":[{"expression":{"arguments":[],"functionName":{"name":"panic_error_0x41","nativeSrc":"529:16:87","nodeType":"YulIdentifier","src":"529:16:87"},"nativeSrc":"529:18:87","nodeType":"YulFunctionCall","src":"529:18:87"},"nativeSrc":"529:18:87","nodeType":"YulExpressionStatement","src":"529:18:87"}]},"condition":{"arguments":[{"name":"length","nativeSrc":"499:6:87","nodeType":"YulIdentifier","src":"499:6:87"},{"kind":"number","nativeSrc":"507:18:87","nodeType":"YulLiteral","src":"507:18:87","type":"","value":"0xffffffffffffffff"}],"functionName":{"name":"gt","nativeSrc":"496:2:87","nodeType":"YulIdentifier","src":"496:2:87"},"nativeSrc":"496:30:87","nodeType":"YulFunctionCall","src":"496:30:87"},"nativeSrc":"493:56:87","nodeType":"YulIf","src":"493:56:87"},{"nativeSrc":"558:48:87","nodeType":"YulAssignment","src":"558:48:87","value":{"arguments":[{"arguments":[{"arguments":[{"name":"length","nativeSrc":"578:6:87","nodeType":"YulIdentifier","src":"578:6:87"},{"kind":"number","nativeSrc":"586:2:87","nodeType":"YulLiteral","src":"586:2:87","type":"","value":"31"}],"functionName":{"name":"add","nativeSrc":"574:3:87","nodeType":"YulIdentifier","src":"574:3:87"},"nativeSrc":"574:15:87","nodeType":"YulFunctionCall","src":"574:15:87"},{"arguments":[{"kind":"number","nativeSrc":"595:2:87","nodeType":"YulLiteral","src":"595:2:87","type":"","value":"31"}],"functionName":{"name":"not","nativeSrc":"591:3:87","nodeType":"YulIdentifier","src":"591:3:87"},"nativeSrc":"591:7:87","nodeType":"YulFunctionCall","src":"591:7:87"}],"functionName":{"name":"and","nativeSrc":"570:3:87","nodeType":"YulIdentifier","src":"570:3:87"},"nativeSrc":"570:29:87","nodeType":"YulFunctionCall","src":"570:29:87"},{"kind":"number","nativeSrc":"601:4:87","nodeType":"YulLiteral","src":"601:4:87","type":"","value":"0x20"}],"functionName":{"name":"add","nativeSrc":"566:3:87","nodeType":"YulIdentifier","src":"566:3:87"},"nativeSrc":"566:40:87","nodeType":"YulFunctionCall","src":"566:40:87"},"variableNames":[{"name":"size","nativeSrc":"558:4:87","nodeType":"YulIdentifier","src":"558:4:87"}]}]},"name":"array_allocation_size_bytes","nativeSrc":"426:186:87","nodeType":"YulFunctionDefinition","parameters":[{"name":"length","nativeSrc":"463:6:87","nodeType":"YulTypedName","src":"463:6:87","type":""}],"returnVariables":[{"name":"size","nativeSrc":"474:4:87","nodeType":"YulTypedName","src":"474:4:87","type":""}],"src":"426:186:87"},{"body":{"nativeSrc":"669:434:87","nodeType":"YulBlock","src":"669:434:87","statements":[{"body":{"nativeSrc":"718:16:87","nodeType":"YulBlock","src":"718:16:87","statements":[{"expression":{"arguments":[{"kind":"number","nativeSrc":"727:1:87","nodeType":"YulLiteral","src":"727:1:87","type":"","value":"0"},{"kind":"number","nativeSrc":"730:1:87","nodeType":"YulLiteral","src":"730:1:87","type":"","value":"0"}],"functionName":{"name":"revert","nativeSrc":"720:6:87","nodeType":"YulIdentifier","src":"720:6:87"},"nativeSrc":"720:12:87","nodeType":"YulFunctionCall","src":"720:12:87"},"nativeSrc":"720:12:87","nodeType":"YulExpressionStatement","src":"720:12:87"}]},"condition":{"arguments":[{"arguments":[{"arguments":[{"name":"offset","nativeSrc":"697:6:87","nodeType":"YulIdentifier","src":"697:6:87"},{"kind":"number","nativeSrc":"705:4:87","nodeType":"YulLiteral","src":"705:4:87","type":"","value":"0x1f"}],"functionName":{"name":"add","nativeSrc":"693:3:87","nodeType":"YulIdentifier","src":"693:3:87"},"nativeSrc":"693:17:87","nodeType":"YulFunctionCall","src":"693:17:87"},{"name":"end","nativeSrc":"712:3:87","nodeType":"YulIdentifier","src":"712:3:87"}],"functionName":{"name":"slt","nativeSrc":"689:3:87","nodeType":"YulIdentifier","src":"689:3:87"},"nativeSrc":"689:27:87","nodeType":"YulFunctionCall","src":"689:27:87"}],"functionName":{"name":"iszero","nativeSrc":"682:6:87","nodeType":"YulIdentifier","src":"682:6:87"},"nativeSrc":"682:35:87","nodeType":"YulFunctionCall","src":"682:35:87"},"nativeSrc":"679:55:87","nodeType":"YulIf","src":"679:55:87"},{"nativeSrc":"743:34:87","nodeType":"YulVariableDeclaration","src":"743:34:87","value":{"arguments":[{"name":"offset","nativeSrc":"770:6:87","nodeType":"YulIdentifier","src":"770:6:87"}],"functionName":{"name":"calldataload","nativeSrc":"757:12:87","nodeType":"YulIdentifier","src":"757:12:87"},"nativeSrc":"757:20:87","nodeType":"YulFunctionCall","src":"757:20:87"},"variables":[{"name":"length","nativeSrc":"747:6:87","nodeType":"YulTypedName","src":"747:6:87","type":""}]},{"nativeSrc":"786:67:87","nodeType":"YulVariableDeclaration","src":"786:67:87","value":{"arguments":[{"arguments":[{"name":"length","nativeSrc":"845:6:87","nodeType":"YulIdentifier","src":"845:6:87"}],"functionName":{"name":"array_allocation_size_bytes","nativeSrc":"817:27:87","nodeType":"YulIdentifier","src":"817:27:87"},"nativeSrc":"817:35:87","nodeType":"YulFunctionCall","src":"817:35:87"}],"functionName":{"name":"allocate_memory","nativeSrc":"801:15:87","nodeType":"YulIdentifier","src":"801:15:87"},"nativeSrc":"801:52:87","nodeType":"YulFunctionCall","src":"801:52:87"},"variables":[{"name":"array_1","nativeSrc":"790:7:87","nodeType":"YulTypedName","src":"790:7:87","type":""}]},{"expression":{"arguments":[{"name":"array_1","nativeSrc":"869:7:87","nodeType":"YulIdentifier","src":"869:7:87"},{"name":"length","nativeSrc":"878:6:87","nodeType":"YulIdentifier","src":"878:6:87"}],"functionName":{"name":"mstore","nativeSrc":"862:6:87","nodeType":"YulIdentifier","src":"862:6:87"},"nativeSrc":"862:23:87","nodeType":"YulFunctionCall","src":"862:23:87"},"nativeSrc":"862:23:87","nodeType":"YulExpressionStatement","src":"862:23:87"},{"body":{"nativeSrc":"937:16:87","nodeType":"YulBlock","src":"937:16:87","statements":[{"expression":{"arguments":[{"kind":"number","nativeSrc":"946:1:87","nodeType":"YulLiteral","src":"946:1:87","type":"","value":"0"},{"kind":"number","nativeSrc":"949:1:87","nodeType":"YulLiteral","src":"949:1:87","type":"","value":"0"}],"functionName":{"name":"revert","nativeSrc":"939:6:87","nodeType":"YulIdentifier","src":"939:6:87"},"nativeSrc":"939:12:87","nodeType":"YulFunctionCall","src":"939:12:87"},"nativeSrc":"939:12:87","nodeType":"YulExpressionStatement","src":"939:12:87"}]},"condition":{"arguments":[{"arguments":[{"arguments":[{"name":"offset","nativeSrc":"908:6:87","nodeType":"YulIdentifier","src":"908:6:87"},{"name":"length","nativeSrc":"916:6:87","nodeType":"YulIdentifier","src":"916:6:87"}],"functionName":{"name":"add","nativeSrc":"904:3:87","nodeType":"YulIdentifier","src":"904:3:87"},"nativeSrc":"904:19:87","nodeType":"YulFunctionCall","src":"904:19:87"},{"kind":"number","nativeSrc":"925:4:87","nodeType":"YulLiteral","src":"925:4:87","type":"","value":"0x20"}],"functionName":{"name":"add","nativeSrc":"900:3:87","nodeType":"YulIdentifier","src":"900:3:87"},"nativeSrc":"900:30:87","nodeType":"YulFunctionCall","src":"900:30:87"},{"name":"end","nativeSrc":"932:3:87","nodeType":"YulIdentifier","src":"932:3:87"}],"functionName":{"name":"gt","nativeSrc":"897:2:87","nodeType":"YulIdentifier","src":"897:2:87"},"nativeSrc":"897:39:87","nodeType":"YulFunctionCall","src":"897:39:87"},"nativeSrc":"894:59:87","nodeType":"YulIf","src":"894:59:87"},{"expression":{"arguments":[{"arguments":[{"name":"array_1","nativeSrc":"979:7:87","nodeType":"YulIdentifier","src":"979:7:87"},{"kind":"number","nativeSrc":"988:4:87","nodeType":"YulLiteral","src":"988:4:87","type":"","value":"0x20"}],"functionName":{"name":"add","nativeSrc":"975:3:87","nodeType":"YulIdentifier","src":"975:3:87"},"nativeSrc":"975:18:87","nodeType":"YulFunctionCall","src":"975:18:87"},{"arguments":[{"name":"offset","nativeSrc":"999:6:87","nodeType":"YulIdentifier","src":"999:6:87"},{"kind":"number","nativeSrc":"1007:4:87","nodeType":"YulLiteral","src":"1007:4:87","type":"","value":"0x20"}],"functionName":{"name":"add","nativeSrc":"995:3:87","nodeType":"YulIdentifier","src":"995:3:87"},"nativeSrc":"995:17:87","nodeType":"YulFunctionCall","src":"995:17:87"},{"name":"length","nativeSrc":"1014:6:87","nodeType":"YulIdentifier","src":"1014:6:87"}],"functionName":{"name":"calldatacopy","nativeSrc":"962:12:87","nodeType":"YulIdentifier","src":"962:12:87"},"nativeSrc":"962:59:87","nodeType":"YulFunctionCall","src":"962:59:87"},"nativeSrc":"962:59:87","nodeType":"YulExpressionStatement","src":"962:59:87"},{"expression":{"arguments":[{"arguments":[{"arguments":[{"name":"array_1","nativeSrc":"1045:7:87","nodeType":"YulIdentifier","src":"1045:7:87"},{"name":"length","nativeSrc":"1054:6:87","nodeType":"YulIdentifier","src":"1054:6:87"}],"functionName":{"name":"add","nativeSrc":"1041:3:87","nodeType":"YulIdentifier","src":"1041:3:87"},"nativeSrc":"1041:20:87","nodeType":"YulFunctionCall","src":"1041:20:87"},{"kind":"number","nativeSrc":"1063:4:87","nodeType":"YulLiteral","src":"1063:4:87","type":"","value":"0x20"}],"functionName":{"name":"add","nativeSrc":"1037:3:87","nodeType":"YulIdentifier","src":"1037:3:87"},"nativeSrc":"1037:31:87","nodeType":"YulFunctionCall","src":"1037:31:87"},{"kind":"number","nativeSrc":"1070:1:87","nodeType":"YulLiteral","src":"1070:1:87","type":"","value":"0"}],"functionName":{"name":"mstore","nativeSrc":"1030:6:87","nodeType":"YulIdentifier","src":"1030:6:87"},"nativeSrc":"1030:42:87","nodeType":"YulFunctionCall","src":"1030:42:87"},"nativeSrc":"1030:42:87","nodeType":"YulExpressionStatement","src":"1030:42:87"},{"nativeSrc":"1081:16:87","nodeType":"YulAssignment","src":"1081:16:87","value":{"name":"array_1","nativeSrc":"1090:7:87","nodeType":"YulIdentifier","src":"1090:7:87"},"variableNames":[{"name":"array","nativeSrc":"1081:5:87","nodeType":"YulIdentifier","src":"1081:5:87"}]}]},"name":"abi_decode_bytes","nativeSrc":"617:486:87","nodeType":"YulFunctionDefinition","parameters":[{"name":"offset","nativeSrc":"643:6:87","nodeType":"YulTypedName","src":"643:6:87","type":""},{"name":"end","nativeSrc":"651:3:87","nodeType":"YulTypedName","src":"651:3:87","type":""}],"returnVariables":[{"name":"array","nativeSrc":"659:5:87","nodeType":"YulTypedName","src":"659:5:87","type":""}],"src":"617:486:87"},{"body":{"nativeSrc":"1202:383:87","nodeType":"YulBlock","src":"1202:383:87","statements":[{"body":{"nativeSrc":"1248:16:87","nodeType":"YulBlock","src":"1248:16:87","statements":[{"expression":{"arguments":[{"kind":"number","nativeSrc":"1257:1:87","nodeType":"YulLiteral","src":"1257:1:87","type":"","value":"0"},{"kind":"number","nativeSrc":"1260:1:87","nodeType":"YulLiteral","src":"1260:1:87","type":"","value":"0"}],"functionName":{"name":"revert","nativeSrc":"1250:6:87","nodeType":"YulIdentifier","src":"1250:6:87"},"nativeSrc":"1250:12:87","nodeType":"YulFunctionCall","src":"1250:12:87"},"nativeSrc":"1250:12:87","nodeType":"YulExpressionStatement","src":"1250:12:87"}]},"condition":{"arguments":[{"arguments":[{"name":"dataEnd","nativeSrc":"1223:7:87","nodeType":"YulIdentifier","src":"1223:7:87"},{"name":"headStart","nativeSrc":"1232:9:87","nodeType":"YulIdentifier","src":"1232:9:87"}],"functionName":{"name":"sub","nativeSrc":"1219:3:87","nodeType":"YulIdentifier","src":"1219:3:87"},"nativeSrc":"1219:23:87","nodeType":"YulFunctionCall","src":"1219:23:87"},{"kind":"number","nativeSrc":"1244:2:87","nodeType":"YulLiteral","src":"1244:2:87","type":"","value":"64"}],"functionName":{"name":"slt","nativeSrc":"1215:3:87","nodeType":"YulIdentifier","src":"1215:3:87"},"nativeSrc":"1215:32:87","nodeType":"YulFunctionCall","src":"1215:32:87"},"nativeSrc":"1212:52:87","nodeType":"YulIf","src":"1212:52:87"},{"nativeSrc":"1273:36:87","nodeType":"YulVariableDeclaration","src":"1273:36:87","value":{"arguments":[{"name":"headStart","nativeSrc":"1299:9:87","nodeType":"YulIdentifier","src":"1299:9:87"}],"functionName":{"name":"calldataload","nativeSrc":"1286:12:87","nodeType":"YulIdentifier","src":"1286:12:87"},"nativeSrc":"1286:23:87","nodeType":"YulFunctionCall","src":"1286:23:87"},"variables":[{"name":"value","nativeSrc":"1277:5:87","nodeType":"YulTypedName","src":"1277:5:87","type":""}]},{"body":{"nativeSrc":"1357:16:87","nodeType":"YulBlock","src":"1357:16:87","statements":[{"expression":{"arguments":[{"kind":"number","nativeSrc":"1366:1:87","nodeType":"YulLiteral","src":"1366:1:87","type":"","value":"0"},{"kind":"number","nativeSrc":"1369:1:87","nodeType":"YulLiteral","src":"1369:1:87","type":"","value":"0"}],"functionName":{"name":"revert","nativeSrc":"1359:6:87","nodeType":"YulIdentifier","src":"1359:6:87"},"nativeSrc":"1359:12:87","nodeType":"YulFunctionCall","src":"1359:12:87"},"nativeSrc":"1359:12:87","nodeType":"YulExpressionStatement","src":"1359:12:87"}]},"condition":{"arguments":[{"arguments":[{"name":"value","nativeSrc":"1331:5:87","nodeType":"YulIdentifier","src":"1331:5:87"},{"arguments":[{"name":"value","nativeSrc":"1342:5:87","nodeType":"YulIdentifier","src":"1342:5:87"},{"kind":"number","nativeSrc":"1349:4:87","nodeType":"YulLiteral","src":"1349:4:87","type":"","value":"0xff"}],"functionName":{"name":"and","nativeSrc":"1338:3:87","nodeType":"YulIdentifier","src":"1338:3:87"},"nativeSrc":"1338:16:87","nodeType":"YulFunctionCall","src":"1338:16:87"}],"functionName":{"name":"eq","nativeSrc":"1328:2:87","nodeType":"YulIdentifier","src":"1328:2:87"},"nativeSrc":"1328:27:87","nodeType":"YulFunctionCall","src":"1328:27:87"}],"functionName":{"name":"iszero","nativeSrc":"1321:6:87","nodeType":"YulIdentifier","src":"1321:6:87"},"nativeSrc":"1321:35:87","nodeType":"YulFunctionCall","src":"1321:35:87"},"nativeSrc":"1318:55:87","nodeType":"YulIf","src":"1318:55:87"},{"nativeSrc":"1382:15:87","nodeType":"YulAssignment","src":"1382:15:87","value":{"name":"value","nativeSrc":"1392:5:87","nodeType":"YulIdentifier","src":"1392:5:87"},"variableNames":[{"name":"value0","nativeSrc":"1382:6:87","nodeType":"YulIdentifier","src":"1382:6:87"}]},{"nativeSrc":"1406:46:87","nodeType":"YulVariableDeclaration","src":"1406:46:87","value":{"arguments":[{"arguments":[{"name":"headStart","nativeSrc":"1437:9:87","nodeType":"YulIdentifier","src":"1437:9:87"},{"kind":"number","nativeSrc":"1448:2:87","nodeType":"YulLiteral","src":"1448:2:87","type":"","value":"32"}],"functionName":{"name":"add","nativeSrc":"1433:3:87","nodeType":"YulIdentifier","src":"1433:3:87"},"nativeSrc":"1433:18:87","nodeType":"YulFunctionCall","src":"1433:18:87"}],"functionName":{"name":"calldataload","nativeSrc":"1420:12:87","nodeType":"YulIdentifier","src":"1420:12:87"},"nativeSrc":"1420:32:87","nodeType":"YulFunctionCall","src":"1420:32:87"},"variables":[{"name":"offset","nativeSrc":"1410:6:87","nodeType":"YulTypedName","src":"1410:6:87","type":""}]},{"body":{"nativeSrc":"1495:16:87","nodeType":"YulBlock","src":"1495:16:87","statements":[{"expression":{"arguments":[{"kind":"number","nativeSrc":"1504:1:87","nodeType":"YulLiteral","src":"1504:1:87","type":"","value":"0"},{"kind":"number","nativeSrc":"1507:1:87","nodeType":"YulLiteral","src":"1507:1:87","type":"","value":"0"}],"functionName":{"name":"revert","nativeSrc":"1497:6:87","nodeType":"YulIdentifier","src":"1497:6:87"},"nativeSrc":"1497:12:87","nodeType":"YulFunctionCall","src":"1497:12:87"},"nativeSrc":"1497:12:87","nodeType":"YulExpressionStatement","src":"1497:12:87"}]},"condition":{"arguments":[{"name":"offset","nativeSrc":"1467:6:87","nodeType":"YulIdentifier","src":"1467:6:87"},{"kind":"number","nativeSrc":"1475:18:87","nodeType":"YulLiteral","src":"1475:18:87","type":"","value":"0xffffffffffffffff"}],"functionName":{"name":"gt","nativeSrc":"1464:2:87","nodeType":"YulIdentifier","src":"1464:2:87"},"nativeSrc":"1464:30:87","nodeType":"YulFunctionCall","src":"1464:30:87"},"nativeSrc":"1461:50:87","nodeType":"YulIf","src":"1461:50:87"},{"nativeSrc":"1520:59:87","nodeType":"YulAssignment","src":"1520:59:87","value":{"arguments":[{"arguments":[{"name":"headStart","nativeSrc":"1551:9:87","nodeType":"YulIdentifier","src":"1551:9:87"},{"name":"offset","nativeSrc":"1562:6:87","nodeType":"YulIdentifier","src":"1562:6:87"}],"functionName":{"name":"add","nativeSrc":"1547:3:87","nodeType":"YulIdentifier","src":"1547:3:87"},"nativeSrc":"1547:22:87","nodeType":"YulFunctionCall","src":"1547:22:87"},{"name":"dataEnd","nativeSrc":"1571:7:87","nodeType":"YulIdentifier","src":"1571:7:87"}],"functionName":{"name":"abi_decode_bytes","nativeSrc":"1530:16:87","nodeType":"YulIdentifier","src":"1530:16:87"},"nativeSrc":"1530:49:87","nodeType":"YulFunctionCall","src":"1530:49:87"},"variableNames":[{"name":"value1","nativeSrc":"1520:6:87","nodeType":"YulIdentifier","src":"1520:6:87"}]}]},"name":"abi_decode_tuple_t_uint8t_bytes_memory_ptr","nativeSrc":"1108:477:87","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nativeSrc":"1160:9:87","nodeType":"YulTypedName","src":"1160:9:87","type":""},{"name":"dataEnd","nativeSrc":"1171:7:87","nodeType":"YulTypedName","src":"1171:7:87","type":""}],"returnVariables":[{"name":"value0","nativeSrc":"1183:6:87","nodeType":"YulTypedName","src":"1183:6:87","type":""},{"name":"value1","nativeSrc":"1191:6:87","nodeType":"YulTypedName","src":"1191:6:87","type":""}],"src":"1108:477:87"},{"body":{"nativeSrc":"1709:297:87","nodeType":"YulBlock","src":"1709:297:87","statements":[{"expression":{"arguments":[{"name":"headStart","nativeSrc":"1726:9:87","nodeType":"YulIdentifier","src":"1726:9:87"},{"kind":"number","nativeSrc":"1737:2:87","nodeType":"YulLiteral","src":"1737:2:87","type":"","value":"32"}],"functionName":{"name":"mstore","nativeSrc":"1719:6:87","nodeType":"YulIdentifier","src":"1719:6:87"},"nativeSrc":"1719:21:87","nodeType":"YulFunctionCall","src":"1719:21:87"},"nativeSrc":"1719:21:87","nodeType":"YulExpressionStatement","src":"1719:21:87"},{"nativeSrc":"1749:27:87","nodeType":"YulVariableDeclaration","src":"1749:27:87","value":{"arguments":[{"name":"value0","nativeSrc":"1769:6:87","nodeType":"YulIdentifier","src":"1769:6:87"}],"functionName":{"name":"mload","nativeSrc":"1763:5:87","nodeType":"YulIdentifier","src":"1763:5:87"},"nativeSrc":"1763:13:87","nodeType":"YulFunctionCall","src":"1763:13:87"},"variables":[{"name":"length","nativeSrc":"1753:6:87","nodeType":"YulTypedName","src":"1753:6:87","type":""}]},{"expression":{"arguments":[{"arguments":[{"name":"headStart","nativeSrc":"1796:9:87","nodeType":"YulIdentifier","src":"1796:9:87"},{"kind":"number","nativeSrc":"1807:2:87","nodeType":"YulLiteral","src":"1807:2:87","type":"","value":"32"}],"functionName":{"name":"add","nativeSrc":"1792:3:87","nodeType":"YulIdentifier","src":"1792:3:87"},"nativeSrc":"1792:18:87","nodeType":"YulFunctionCall","src":"1792:18:87"},{"name":"length","nativeSrc":"1812:6:87","nodeType":"YulIdentifier","src":"1812:6:87"}],"functionName":{"name":"mstore","nativeSrc":"1785:6:87","nodeType":"YulIdentifier","src":"1785:6:87"},"nativeSrc":"1785:34:87","nodeType":"YulFunctionCall","src":"1785:34:87"},"nativeSrc":"1785:34:87","nodeType":"YulExpressionStatement","src":"1785:34:87"},{"expression":{"arguments":[{"arguments":[{"name":"headStart","nativeSrc":"1838:9:87","nodeType":"YulIdentifier","src":"1838:9:87"},{"kind":"number","nativeSrc":"1849:2:87","nodeType":"YulLiteral","src":"1849:2:87","type":"","value":"64"}],"functionName":{"name":"add","nativeSrc":"1834:3:87","nodeType":"YulIdentifier","src":"1834:3:87"},"nativeSrc":"1834:18:87","nodeType":"YulFunctionCall","src":"1834:18:87"},{"arguments":[{"name":"value0","nativeSrc":"1858:6:87","nodeType":"YulIdentifier","src":"1858:6:87"},{"kind":"number","nativeSrc":"1866:2:87","nodeType":"YulLiteral","src":"1866:2:87","type":"","value":"32"}],"functionName":{"name":"add","nativeSrc":"1854:3:87","nodeType":"YulIdentifier","src":"1854:3:87"},"nativeSrc":"1854:15:87","nodeType":"YulFunctionCall","src":"1854:15:87"},{"name":"length","nativeSrc":"1871:6:87","nodeType":"YulIdentifier","src":"1871:6:87"}],"functionName":{"name":"mcopy","nativeSrc":"1828:5:87","nodeType":"YulIdentifier","src":"1828:5:87"},"nativeSrc":"1828:50:87","nodeType":"YulFunctionCall","src":"1828:50:87"},"nativeSrc":"1828:50:87","nodeType":"YulExpressionStatement","src":"1828:50:87"},{"expression":{"arguments":[{"arguments":[{"arguments":[{"name":"headStart","nativeSrc":"1902:9:87","nodeType":"YulIdentifier","src":"1902:9:87"},{"name":"length","nativeSrc":"1913:6:87","nodeType":"YulIdentifier","src":"1913:6:87"}],"functionName":{"name":"add","nativeSrc":"1898:3:87","nodeType":"YulIdentifier","src":"1898:3:87"},"nativeSrc":"1898:22:87","nodeType":"YulFunctionCall","src":"1898:22:87"},{"kind":"number","nativeSrc":"1922:2:87","nodeType":"YulLiteral","src":"1922:2:87","type":"","value":"64"}],"functionName":{"name":"add","nativeSrc":"1894:3:87","nodeType":"YulIdentifier","src":"1894:3:87"},"nativeSrc":"1894:31:87","nodeType":"YulFunctionCall","src":"1894:31:87"},{"kind":"number","nativeSrc":"1927:1:87","nodeType":"YulLiteral","src":"1927:1:87","type":"","value":"0"}],"functionName":{"name":"mstore","nativeSrc":"1887:6:87","nodeType":"YulIdentifier","src":"1887:6:87"},"nativeSrc":"1887:42:87","nodeType":"YulFunctionCall","src":"1887:42:87"},"nativeSrc":"1887:42:87","nodeType":"YulExpressionStatement","src":"1887:42:87"},{"nativeSrc":"1938:62:87","nodeType":"YulAssignment","src":"1938:62:87","value":{"arguments":[{"arguments":[{"name":"headStart","nativeSrc":"1954:9:87","nodeType":"YulIdentifier","src":"1954:9:87"},{"arguments":[{"arguments":[{"name":"length","nativeSrc":"1973:6:87","nodeType":"YulIdentifier","src":"1973:6:87"},{"kind":"number","nativeSrc":"1981:2:87","nodeType":"YulLiteral","src":"1981:2:87","type":"","value":"31"}],"functionName":{"name":"add","nativeSrc":"1969:3:87","nodeType":"YulIdentifier","src":"1969:3:87"},"nativeSrc":"1969:15:87","nodeType":"YulFunctionCall","src":"1969:15:87"},{"arguments":[{"kind":"number","nativeSrc":"1990:2:87","nodeType":"YulLiteral","src":"1990:2:87","type":"","value":"31"}],"functionName":{"name":"not","nativeSrc":"1986:3:87","nodeType":"YulIdentifier","src":"1986:3:87"},"nativeSrc":"1986:7:87","nodeType":"YulFunctionCall","src":"1986:7:87"}],"functionName":{"name":"and","nativeSrc":"1965:3:87","nodeType":"YulIdentifier","src":"1965:3:87"},"nativeSrc":"1965:29:87","nodeType":"YulFunctionCall","src":"1965:29:87"}],"functionName":{"name":"add","nativeSrc":"1950:3:87","nodeType":"YulIdentifier","src":"1950:3:87"},"nativeSrc":"1950:45:87","nodeType":"YulFunctionCall","src":"1950:45:87"},{"kind":"number","nativeSrc":"1997:2:87","nodeType":"YulLiteral","src":"1997:2:87","type":"","value":"64"}],"functionName":{"name":"add","nativeSrc":"1946:3:87","nodeType":"YulIdentifier","src":"1946:3:87"},"nativeSrc":"1946:54:87","nodeType":"YulFunctionCall","src":"1946:54:87"},"variableNames":[{"name":"tail","nativeSrc":"1938:4:87","nodeType":"YulIdentifier","src":"1938:4:87"}]}]},"name":"abi_encode_tuple_t_bytes_memory_ptr__to_t_bytes_memory_ptr__fromStack_reversed","nativeSrc":"1590:416:87","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nativeSrc":"1678:9:87","nodeType":"YulTypedName","src":"1678:9:87","type":""},{"name":"value0","nativeSrc":"1689:6:87","nodeType":"YulTypedName","src":"1689:6:87","type":""}],"returnVariables":[{"name":"tail","nativeSrc":"1700:4:87","nodeType":"YulTypedName","src":"1700:4:87","type":""}],"src":"1590:416:87"},{"body":{"nativeSrc":"2081:110:87","nodeType":"YulBlock","src":"2081:110:87","statements":[{"body":{"nativeSrc":"2127:16:87","nodeType":"YulBlock","src":"2127:16:87","statements":[{"expression":{"arguments":[{"kind":"number","nativeSrc":"2136:1:87","nodeType":"YulLiteral","src":"2136:1:87","type":"","value":"0"},{"kind":"number","nativeSrc":"2139:1:87","nodeType":"YulLiteral","src":"2139:1:87","type":"","value":"0"}],"functionName":{"name":"revert","nativeSrc":"2129:6:87","nodeType":"YulIdentifier","src":"2129:6:87"},"nativeSrc":"2129:12:87","nodeType":"YulFunctionCall","src":"2129:12:87"},"nativeSrc":"2129:12:87","nodeType":"YulExpressionStatement","src":"2129:12:87"}]},"condition":{"arguments":[{"arguments":[{"name":"dataEnd","nativeSrc":"2102:7:87","nodeType":"YulIdentifier","src":"2102:7:87"},{"name":"headStart","nativeSrc":"2111:9:87","nodeType":"YulIdentifier","src":"2111:9:87"}],"functionName":{"name":"sub","nativeSrc":"2098:3:87","nodeType":"YulIdentifier","src":"2098:3:87"},"nativeSrc":"2098:23:87","nodeType":"YulFunctionCall","src":"2098:23:87"},{"kind":"number","nativeSrc":"2123:2:87","nodeType":"YulLiteral","src":"2123:2:87","type":"","value":"32"}],"functionName":{"name":"slt","nativeSrc":"2094:3:87","nodeType":"YulIdentifier","src":"2094:3:87"},"nativeSrc":"2094:32:87","nodeType":"YulFunctionCall","src":"2094:32:87"},"nativeSrc":"2091:52:87","nodeType":"YulIf","src":"2091:52:87"},{"nativeSrc":"2152:33:87","nodeType":"YulAssignment","src":"2152:33:87","value":{"arguments":[{"name":"headStart","nativeSrc":"2175:9:87","nodeType":"YulIdentifier","src":"2175:9:87"}],"functionName":{"name":"calldataload","nativeSrc":"2162:12:87","nodeType":"YulIdentifier","src":"2162:12:87"},"nativeSrc":"2162:23:87","nodeType":"YulFunctionCall","src":"2162:23:87"},"variableNames":[{"name":"value0","nativeSrc":"2152:6:87","nodeType":"YulIdentifier","src":"2152:6:87"}]}]},"name":"abi_decode_tuple_t_uint256","nativeSrc":"2011:180:87","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nativeSrc":"2047:9:87","nodeType":"YulTypedName","src":"2047:9:87","type":""},{"name":"dataEnd","nativeSrc":"2058:7:87","nodeType":"YulTypedName","src":"2058:7:87","type":""}],"returnVariables":[{"name":"value0","nativeSrc":"2070:6:87","nodeType":"YulTypedName","src":"2070:6:87","type":""}],"src":"2011:180:87"},{"body":{"nativeSrc":"2266:216:87","nodeType":"YulBlock","src":"2266:216:87","statements":[{"body":{"nativeSrc":"2312:16:87","nodeType":"YulBlock","src":"2312:16:87","statements":[{"expression":{"arguments":[{"kind":"number","nativeSrc":"2321:1:87","nodeType":"YulLiteral","src":"2321:1:87","type":"","value":"0"},{"kind":"number","nativeSrc":"2324:1:87","nodeType":"YulLiteral","src":"2324:1:87","type":"","value":"0"}],"functionName":{"name":"revert","nativeSrc":"2314:6:87","nodeType":"YulIdentifier","src":"2314:6:87"},"nativeSrc":"2314:12:87","nodeType":"YulFunctionCall","src":"2314:12:87"},"nativeSrc":"2314:12:87","nodeType":"YulExpressionStatement","src":"2314:12:87"}]},"condition":{"arguments":[{"arguments":[{"name":"dataEnd","nativeSrc":"2287:7:87","nodeType":"YulIdentifier","src":"2287:7:87"},{"name":"headStart","nativeSrc":"2296:9:87","nodeType":"YulIdentifier","src":"2296:9:87"}],"functionName":{"name":"sub","nativeSrc":"2283:3:87","nodeType":"YulIdentifier","src":"2283:3:87"},"nativeSrc":"2283:23:87","nodeType":"YulFunctionCall","src":"2283:23:87"},{"kind":"number","nativeSrc":"2308:2:87","nodeType":"YulLiteral","src":"2308:2:87","type":"","value":"32"}],"functionName":{"name":"slt","nativeSrc":"2279:3:87","nodeType":"YulIdentifier","src":"2279:3:87"},"nativeSrc":"2279:32:87","nodeType":"YulFunctionCall","src":"2279:32:87"},"nativeSrc":"2276:52:87","nodeType":"YulIf","src":"2276:52:87"},{"nativeSrc":"2337:36:87","nodeType":"YulVariableDeclaration","src":"2337:36:87","value":{"arguments":[{"name":"headStart","nativeSrc":"2363:9:87","nodeType":"YulIdentifier","src":"2363:9:87"}],"functionName":{"name":"calldataload","nativeSrc":"2350:12:87","nodeType":"YulIdentifier","src":"2350:12:87"},"nativeSrc":"2350:23:87","nodeType":"YulFunctionCall","src":"2350:23:87"},"variables":[{"name":"value","nativeSrc":"2341:5:87","nodeType":"YulTypedName","src":"2341:5:87","type":""}]},{"body":{"nativeSrc":"2436:16:87","nodeType":"YulBlock","src":"2436:16:87","statements":[{"expression":{"arguments":[{"kind":"number","nativeSrc":"2445:1:87","nodeType":"YulLiteral","src":"2445:1:87","type":"","value":"0"},{"kind":"number","nativeSrc":"2448:1:87","nodeType":"YulLiteral","src":"2448:1:87","type":"","value":"0"}],"functionName":{"name":"revert","nativeSrc":"2438:6:87","nodeType":"YulIdentifier","src":"2438:6:87"},"nativeSrc":"2438:12:87","nodeType":"YulFunctionCall","src":"2438:12:87"},"nativeSrc":"2438:12:87","nodeType":"YulExpressionStatement","src":"2438:12:87"}]},"condition":{"arguments":[{"arguments":[{"name":"value","nativeSrc":"2395:5:87","nodeType":"YulIdentifier","src":"2395:5:87"},{"arguments":[{"name":"value","nativeSrc":"2406:5:87","nodeType":"YulIdentifier","src":"2406:5:87"},{"arguments":[{"arguments":[{"kind":"number","nativeSrc":"2421:3:87","nodeType":"YulLiteral","src":"2421:3:87","type":"","value":"160"},{"kind":"number","nativeSrc":"2426:1:87","nodeType":"YulLiteral","src":"2426:1:87","type":"","value":"1"}],"functionName":{"name":"shl","nativeSrc":"2417:3:87","nodeType":"YulIdentifier","src":"2417:3:87"},"nativeSrc":"2417:11:87","nodeType":"YulFunctionCall","src":"2417:11:87"},{"kind":"number","nativeSrc":"2430:1:87","nodeType":"YulLiteral","src":"2430:1:87","type":"","value":"1"}],"functionName":{"name":"sub","nativeSrc":"2413:3:87","nodeType":"YulIdentifier","src":"2413:3:87"},"nativeSrc":"2413:19:87","nodeType":"YulFunctionCall","src":"2413:19:87"}],"functionName":{"name":"and","nativeSrc":"2402:3:87","nodeType":"YulIdentifier","src":"2402:3:87"},"nativeSrc":"2402:31:87","nodeType":"YulFunctionCall","src":"2402:31:87"}],"functionName":{"name":"eq","nativeSrc":"2392:2:87","nodeType":"YulIdentifier","src":"2392:2:87"},"nativeSrc":"2392:42:87","nodeType":"YulFunctionCall","src":"2392:42:87"}],"functionName":{"name":"iszero","nativeSrc":"2385:6:87","nodeType":"YulIdentifier","src":"2385:6:87"},"nativeSrc":"2385:50:87","nodeType":"YulFunctionCall","src":"2385:50:87"},"nativeSrc":"2382:70:87","nodeType":"YulIf","src":"2382:70:87"},{"nativeSrc":"2461:15:87","nodeType":"YulAssignment","src":"2461:15:87","value":{"name":"value","nativeSrc":"2471:5:87","nodeType":"YulIdentifier","src":"2471:5:87"},"variableNames":[{"name":"value0","nativeSrc":"2461:6:87","nodeType":"YulIdentifier","src":"2461:6:87"}]}]},"name":"abi_decode_tuple_t_address","nativeSrc":"2196:286:87","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nativeSrc":"2232:9:87","nodeType":"YulTypedName","src":"2232:9:87","type":""},{"name":"dataEnd","nativeSrc":"2243:7:87","nodeType":"YulTypedName","src":"2243:7:87","type":""}],"returnVariables":[{"name":"value0","nativeSrc":"2255:6:87","nodeType":"YulTypedName","src":"2255:6:87","type":""}],"src":"2196:286:87"},{"body":{"nativeSrc":"2588:76:87","nodeType":"YulBlock","src":"2588:76:87","statements":[{"nativeSrc":"2598:26:87","nodeType":"YulAssignment","src":"2598:26:87","value":{"arguments":[{"name":"headStart","nativeSrc":"2610:9:87","nodeType":"YulIdentifier","src":"2610:9:87"},{"kind":"number","nativeSrc":"2621:2:87","nodeType":"YulLiteral","src":"2621:2:87","type":"","value":"32"}],"functionName":{"name":"add","nativeSrc":"2606:3:87","nodeType":"YulIdentifier","src":"2606:3:87"},"nativeSrc":"2606:18:87","nodeType":"YulFunctionCall","src":"2606:18:87"},"variableNames":[{"name":"tail","nativeSrc":"2598:4:87","nodeType":"YulIdentifier","src":"2598:4:87"}]},{"expression":{"arguments":[{"name":"headStart","nativeSrc":"2640:9:87","nodeType":"YulIdentifier","src":"2640:9:87"},{"name":"value0","nativeSrc":"2651:6:87","nodeType":"YulIdentifier","src":"2651:6:87"}],"functionName":{"name":"mstore","nativeSrc":"2633:6:87","nodeType":"YulIdentifier","src":"2633:6:87"},"nativeSrc":"2633:25:87","nodeType":"YulFunctionCall","src":"2633:25:87"},"nativeSrc":"2633:25:87","nodeType":"YulExpressionStatement","src":"2633:25:87"}]},"name":"abi_encode_tuple_t_uint256__to_t_uint256__fromStack_reversed","nativeSrc":"2487:177:87","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nativeSrc":"2557:9:87","nodeType":"YulTypedName","src":"2557:9:87","type":""},{"name":"value0","nativeSrc":"2568:6:87","nodeType":"YulTypedName","src":"2568:6:87","type":""}],"returnVariables":[{"name":"tail","nativeSrc":"2579:4:87","nodeType":"YulTypedName","src":"2579:4:87","type":""}],"src":"2487:177:87"},{"body":{"nativeSrc":"2711:76:87","nodeType":"YulBlock","src":"2711:76:87","statements":[{"body":{"nativeSrc":"2765:16:87","nodeType":"YulBlock","src":"2765:16:87","statements":[{"expression":{"arguments":[{"kind":"number","nativeSrc":"2774:1:87","nodeType":"YulLiteral","src":"2774:1:87","type":"","value":"0"},{"kind":"number","nativeSrc":"2777:1:87","nodeType":"YulLiteral","src":"2777:1:87","type":"","value":"0"}],"functionName":{"name":"revert","nativeSrc":"2767:6:87","nodeType":"YulIdentifier","src":"2767:6:87"},"nativeSrc":"2767:12:87","nodeType":"YulFunctionCall","src":"2767:12:87"},"nativeSrc":"2767:12:87","nodeType":"YulExpressionStatement","src":"2767:12:87"}]},"condition":{"arguments":[{"arguments":[{"name":"value","nativeSrc":"2734:5:87","nodeType":"YulIdentifier","src":"2734:5:87"},{"arguments":[{"arguments":[{"name":"value","nativeSrc":"2755:5:87","nodeType":"YulIdentifier","src":"2755:5:87"}],"functionName":{"name":"iszero","nativeSrc":"2748:6:87","nodeType":"YulIdentifier","src":"2748:6:87"},"nativeSrc":"2748:13:87","nodeType":"YulFunctionCall","src":"2748:13:87"}],"functionName":{"name":"iszero","nativeSrc":"2741:6:87","nodeType":"YulIdentifier","src":"2741:6:87"},"nativeSrc":"2741:21:87","nodeType":"YulFunctionCall","src":"2741:21:87"}],"functionName":{"name":"eq","nativeSrc":"2731:2:87","nodeType":"YulIdentifier","src":"2731:2:87"},"nativeSrc":"2731:32:87","nodeType":"YulFunctionCall","src":"2731:32:87"}],"functionName":{"name":"iszero","nativeSrc":"2724:6:87","nodeType":"YulIdentifier","src":"2724:6:87"},"nativeSrc":"2724:40:87","nodeType":"YulFunctionCall","src":"2724:40:87"},"nativeSrc":"2721:60:87","nodeType":"YulIf","src":"2721:60:87"}]},"name":"validator_revert_bool","nativeSrc":"2669:118:87","nodeType":"YulFunctionDefinition","parameters":[{"name":"value","nativeSrc":"2700:5:87","nodeType":"YulTypedName","src":"2700:5:87","type":""}],"src":"2669:118:87"},{"body":{"nativeSrc":"2859:174:87","nodeType":"YulBlock","src":"2859:174:87","statements":[{"body":{"nativeSrc":"2905:16:87","nodeType":"YulBlock","src":"2905:16:87","statements":[{"expression":{"arguments":[{"kind":"number","nativeSrc":"2914:1:87","nodeType":"YulLiteral","src":"2914:1:87","type":"","value":"0"},{"kind":"number","nativeSrc":"2917:1:87","nodeType":"YulLiteral","src":"2917:1:87","type":"","value":"0"}],"functionName":{"name":"revert","nativeSrc":"2907:6:87","nodeType":"YulIdentifier","src":"2907:6:87"},"nativeSrc":"2907:12:87","nodeType":"YulFunctionCall","src":"2907:12:87"},"nativeSrc":"2907:12:87","nodeType":"YulExpressionStatement","src":"2907:12:87"}]},"condition":{"arguments":[{"arguments":[{"name":"dataEnd","nativeSrc":"2880:7:87","nodeType":"YulIdentifier","src":"2880:7:87"},{"name":"headStart","nativeSrc":"2889:9:87","nodeType":"YulIdentifier","src":"2889:9:87"}],"functionName":{"name":"sub","nativeSrc":"2876:3:87","nodeType":"YulIdentifier","src":"2876:3:87"},"nativeSrc":"2876:23:87","nodeType":"YulFunctionCall","src":"2876:23:87"},{"kind":"number","nativeSrc":"2901:2:87","nodeType":"YulLiteral","src":"2901:2:87","type":"","value":"32"}],"functionName":{"name":"slt","nativeSrc":"2872:3:87","nodeType":"YulIdentifier","src":"2872:3:87"},"nativeSrc":"2872:32:87","nodeType":"YulFunctionCall","src":"2872:32:87"},"nativeSrc":"2869:52:87","nodeType":"YulIf","src":"2869:52:87"},{"nativeSrc":"2930:36:87","nodeType":"YulVariableDeclaration","src":"2930:36:87","value":{"arguments":[{"name":"headStart","nativeSrc":"2956:9:87","nodeType":"YulIdentifier","src":"2956:9:87"}],"functionName":{"name":"calldataload","nativeSrc":"2943:12:87","nodeType":"YulIdentifier","src":"2943:12:87"},"nativeSrc":"2943:23:87","nodeType":"YulFunctionCall","src":"2943:23:87"},"variables":[{"name":"value","nativeSrc":"2934:5:87","nodeType":"YulTypedName","src":"2934:5:87","type":""}]},{"expression":{"arguments":[{"name":"value","nativeSrc":"2997:5:87","nodeType":"YulIdentifier","src":"2997:5:87"}],"functionName":{"name":"validator_revert_bool","nativeSrc":"2975:21:87","nodeType":"YulIdentifier","src":"2975:21:87"},"nativeSrc":"2975:28:87","nodeType":"YulFunctionCall","src":"2975:28:87"},"nativeSrc":"2975:28:87","nodeType":"YulExpressionStatement","src":"2975:28:87"},{"nativeSrc":"3012:15:87","nodeType":"YulAssignment","src":"3012:15:87","value":{"name":"value","nativeSrc":"3022:5:87","nodeType":"YulIdentifier","src":"3022:5:87"},"variableNames":[{"name":"value0","nativeSrc":"3012:6:87","nodeType":"YulIdentifier","src":"3012:6:87"}]}]},"name":"abi_decode_tuple_t_bool","nativeSrc":"2792:241:87","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nativeSrc":"2825:9:87","nodeType":"YulTypedName","src":"2825:9:87","type":""},{"name":"dataEnd","nativeSrc":"2836:7:87","nodeType":"YulTypedName","src":"2836:7:87","type":""}],"returnVariables":[{"name":"value0","nativeSrc":"2848:6:87","nodeType":"YulTypedName","src":"2848:6:87","type":""}],"src":"2792:241:87"},{"body":{"nativeSrc":"3139:76:87","nodeType":"YulBlock","src":"3139:76:87","statements":[{"nativeSrc":"3149:26:87","nodeType":"YulAssignment","src":"3149:26:87","value":{"arguments":[{"name":"headStart","nativeSrc":"3161:9:87","nodeType":"YulIdentifier","src":"3161:9:87"},{"kind":"number","nativeSrc":"3172:2:87","nodeType":"YulLiteral","src":"3172:2:87","type":"","value":"32"}],"functionName":{"name":"add","nativeSrc":"3157:3:87","nodeType":"YulIdentifier","src":"3157:3:87"},"nativeSrc":"3157:18:87","nodeType":"YulFunctionCall","src":"3157:18:87"},"variableNames":[{"name":"tail","nativeSrc":"3149:4:87","nodeType":"YulIdentifier","src":"3149:4:87"}]},{"expression":{"arguments":[{"name":"headStart","nativeSrc":"3191:9:87","nodeType":"YulIdentifier","src":"3191:9:87"},{"name":"value0","nativeSrc":"3202:6:87","nodeType":"YulIdentifier","src":"3202:6:87"}],"functionName":{"name":"mstore","nativeSrc":"3184:6:87","nodeType":"YulIdentifier","src":"3184:6:87"},"nativeSrc":"3184:25:87","nodeType":"YulFunctionCall","src":"3184:25:87"},"nativeSrc":"3184:25:87","nodeType":"YulExpressionStatement","src":"3184:25:87"}]},"name":"abi_encode_tuple_t_bytes32__to_t_bytes32__fromStack_reversed","nativeSrc":"3038:177:87","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nativeSrc":"3108:9:87","nodeType":"YulTypedName","src":"3108:9:87","type":""},{"name":"value0","nativeSrc":"3119:6:87","nodeType":"YulTypedName","src":"3119:6:87","type":""}],"returnVariables":[{"name":"tail","nativeSrc":"3130:4:87","nodeType":"YulTypedName","src":"3130:4:87","type":""}],"src":"3038:177:87"},{"body":{"nativeSrc":"3383:337:87","nodeType":"YulBlock","src":"3383:337:87","statements":[{"nativeSrc":"3393:27:87","nodeType":"YulAssignment","src":"3393:27:87","value":{"arguments":[{"name":"headStart","nativeSrc":"3405:9:87","nodeType":"YulIdentifier","src":"3405:9:87"},{"kind":"number","nativeSrc":"3416:3:87","nodeType":"YulLiteral","src":"3416:3:87","type":"","value":"128"}],"functionName":{"name":"add","nativeSrc":"3401:3:87","nodeType":"YulIdentifier","src":"3401:3:87"},"nativeSrc":"3401:19:87","nodeType":"YulFunctionCall","src":"3401:19:87"},"variableNames":[{"name":"tail","nativeSrc":"3393:4:87","nodeType":"YulIdentifier","src":"3393:4:87"}]},{"expression":{"arguments":[{"name":"headStart","nativeSrc":"3436:9:87","nodeType":"YulIdentifier","src":"3436:9:87"},{"arguments":[{"arguments":[{"arguments":[{"name":"value0","nativeSrc":"3467:6:87","nodeType":"YulIdentifier","src":"3467:6:87"}],"functionName":{"name":"mload","nativeSrc":"3461:5:87","nodeType":"YulIdentifier","src":"3461:5:87"},"nativeSrc":"3461:13:87","nodeType":"YulFunctionCall","src":"3461:13:87"}],"functionName":{"name":"iszero","nativeSrc":"3454:6:87","nodeType":"YulIdentifier","src":"3454:6:87"},"nativeSrc":"3454:21:87","nodeType":"YulFunctionCall","src":"3454:21:87"}],"functionName":{"name":"iszero","nativeSrc":"3447:6:87","nodeType":"YulIdentifier","src":"3447:6:87"},"nativeSrc":"3447:29:87","nodeType":"YulFunctionCall","src":"3447:29:87"}],"functionName":{"name":"mstore","nativeSrc":"3429:6:87","nodeType":"YulIdentifier","src":"3429:6:87"},"nativeSrc":"3429:48:87","nodeType":"YulFunctionCall","src":"3429:48:87"},"nativeSrc":"3429:48:87","nodeType":"YulExpressionStatement","src":"3429:48:87"},{"expression":{"arguments":[{"arguments":[{"name":"headStart","nativeSrc":"3497:9:87","nodeType":"YulIdentifier","src":"3497:9:87"},{"kind":"number","nativeSrc":"3508:4:87","nodeType":"YulLiteral","src":"3508:4:87","type":"","value":"0x20"}],"functionName":{"name":"add","nativeSrc":"3493:3:87","nodeType":"YulIdentifier","src":"3493:3:87"},"nativeSrc":"3493:20:87","nodeType":"YulFunctionCall","src":"3493:20:87"},{"arguments":[{"arguments":[{"arguments":[{"arguments":[{"name":"value0","nativeSrc":"3539:6:87","nodeType":"YulIdentifier","src":"3539:6:87"},{"kind":"number","nativeSrc":"3547:4:87","nodeType":"YulLiteral","src":"3547:4:87","type":"","value":"0x20"}],"functionName":{"name":"add","nativeSrc":"3535:3:87","nodeType":"YulIdentifier","src":"3535:3:87"},"nativeSrc":"3535:17:87","nodeType":"YulFunctionCall","src":"3535:17:87"}],"functionName":{"name":"mload","nativeSrc":"3529:5:87","nodeType":"YulIdentifier","src":"3529:5:87"},"nativeSrc":"3529:24:87","nodeType":"YulFunctionCall","src":"3529:24:87"}],"functionName":{"name":"iszero","nativeSrc":"3522:6:87","nodeType":"YulIdentifier","src":"3522:6:87"},"nativeSrc":"3522:32:87","nodeType":"YulFunctionCall","src":"3522:32:87"}],"functionName":{"name":"iszero","nativeSrc":"3515:6:87","nodeType":"YulIdentifier","src":"3515:6:87"},"nativeSrc":"3515:40:87","nodeType":"YulFunctionCall","src":"3515:40:87"}],"functionName":{"name":"mstore","nativeSrc":"3486:6:87","nodeType":"YulIdentifier","src":"3486:6:87"},"nativeSrc":"3486:70:87","nodeType":"YulFunctionCall","src":"3486:70:87"},"nativeSrc":"3486:70:87","nodeType":"YulExpressionStatement","src":"3486:70:87"},{"expression":{"arguments":[{"arguments":[{"name":"headStart","nativeSrc":"3576:9:87","nodeType":"YulIdentifier","src":"3576:9:87"},{"kind":"number","nativeSrc":"3587:4:87","nodeType":"YulLiteral","src":"3587:4:87","type":"","value":"0x40"}],"functionName":{"name":"add","nativeSrc":"3572:3:87","nodeType":"YulIdentifier","src":"3572:3:87"},"nativeSrc":"3572:20:87","nodeType":"YulFunctionCall","src":"3572:20:87"},{"arguments":[{"arguments":[{"arguments":[{"arguments":[{"name":"value0","nativeSrc":"3618:6:87","nodeType":"YulIdentifier","src":"3618:6:87"},{"kind":"number","nativeSrc":"3626:4:87","nodeType":"YulLiteral","src":"3626:4:87","type":"","value":"0x40"}],"functionName":{"name":"add","nativeSrc":"3614:3:87","nodeType":"YulIdentifier","src":"3614:3:87"},"nativeSrc":"3614:17:87","nodeType":"YulFunctionCall","src":"3614:17:87"}],"functionName":{"name":"mload","nativeSrc":"3608:5:87","nodeType":"YulIdentifier","src":"3608:5:87"},"nativeSrc":"3608:24:87","nodeType":"YulFunctionCall","src":"3608:24:87"}],"functionName":{"name":"iszero","nativeSrc":"3601:6:87","nodeType":"YulIdentifier","src":"3601:6:87"},"nativeSrc":"3601:32:87","nodeType":"YulFunctionCall","src":"3601:32:87"}],"functionName":{"name":"iszero","nativeSrc":"3594:6:87","nodeType":"YulIdentifier","src":"3594:6:87"},"nativeSrc":"3594:40:87","nodeType":"YulFunctionCall","src":"3594:40:87"}],"functionName":{"name":"mstore","nativeSrc":"3565:6:87","nodeType":"YulIdentifier","src":"3565:6:87"},"nativeSrc":"3565:70:87","nodeType":"YulFunctionCall","src":"3565:70:87"},"nativeSrc":"3565:70:87","nodeType":"YulExpressionStatement","src":"3565:70:87"},{"expression":{"arguments":[{"arguments":[{"name":"headStart","nativeSrc":"3655:9:87","nodeType":"YulIdentifier","src":"3655:9:87"},{"kind":"number","nativeSrc":"3666:4:87","nodeType":"YulLiteral","src":"3666:4:87","type":"","value":"0x60"}],"functionName":{"name":"add","nativeSrc":"3651:3:87","nodeType":"YulIdentifier","src":"3651:3:87"},"nativeSrc":"3651:20:87","nodeType":"YulFunctionCall","src":"3651:20:87"},{"arguments":[{"arguments":[{"arguments":[{"arguments":[{"name":"value0","nativeSrc":"3697:6:87","nodeType":"YulIdentifier","src":"3697:6:87"},{"kind":"number","nativeSrc":"3705:4:87","nodeType":"YulLiteral","src":"3705:4:87","type":"","value":"0x60"}],"functionName":{"name":"add","nativeSrc":"3693:3:87","nodeType":"YulIdentifier","src":"3693:3:87"},"nativeSrc":"3693:17:87","nodeType":"YulFunctionCall","src":"3693:17:87"}],"functionName":{"name":"mload","nativeSrc":"3687:5:87","nodeType":"YulIdentifier","src":"3687:5:87"},"nativeSrc":"3687:24:87","nodeType":"YulFunctionCall","src":"3687:24:87"}],"functionName":{"name":"iszero","nativeSrc":"3680:6:87","nodeType":"YulIdentifier","src":"3680:6:87"},"nativeSrc":"3680:32:87","nodeType":"YulFunctionCall","src":"3680:32:87"}],"functionName":{"name":"iszero","nativeSrc":"3673:6:87","nodeType":"YulIdentifier","src":"3673:6:87"},"nativeSrc":"3673:40:87","nodeType":"YulFunctionCall","src":"3673:40:87"}],"functionName":{"name":"mstore","nativeSrc":"3644:6:87","nodeType":"YulIdentifier","src":"3644:6:87"},"nativeSrc":"3644:70:87","nodeType":"YulFunctionCall","src":"3644:70:87"},"nativeSrc":"3644:70:87","nodeType":"YulExpressionStatement","src":"3644:70:87"}]},"name":"abi_encode_tuple_t_struct$_DummyStorage_$20949_memory_ptr__to_t_struct$_DummyStorage_$20949_memory_ptr__fromStack_reversed","nativeSrc":"3220:500:87","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nativeSrc":"3352:9:87","nodeType":"YulTypedName","src":"3352:9:87","type":""},{"name":"value0","nativeSrc":"3363:6:87","nodeType":"YulTypedName","src":"3363:6:87","type":""}],"returnVariables":[{"name":"tail","nativeSrc":"3374:4:87","nodeType":"YulTypedName","src":"3374:4:87","type":""}],"src":"3220:500:87"},{"body":{"nativeSrc":"3826:102:87","nodeType":"YulBlock","src":"3826:102:87","statements":[{"nativeSrc":"3836:26:87","nodeType":"YulAssignment","src":"3836:26:87","value":{"arguments":[{"name":"headStart","nativeSrc":"3848:9:87","nodeType":"YulIdentifier","src":"3848:9:87"},{"kind":"number","nativeSrc":"3859:2:87","nodeType":"YulLiteral","src":"3859:2:87","type":"","value":"32"}],"functionName":{"name":"add","nativeSrc":"3844:3:87","nodeType":"YulIdentifier","src":"3844:3:87"},"nativeSrc":"3844:18:87","nodeType":"YulFunctionCall","src":"3844:18:87"},"variableNames":[{"name":"tail","nativeSrc":"3836:4:87","nodeType":"YulIdentifier","src":"3836:4:87"}]},{"expression":{"arguments":[{"name":"headStart","nativeSrc":"3878:9:87","nodeType":"YulIdentifier","src":"3878:9:87"},{"arguments":[{"name":"value0","nativeSrc":"3893:6:87","nodeType":"YulIdentifier","src":"3893:6:87"},{"arguments":[{"arguments":[{"kind":"number","nativeSrc":"3909:3:87","nodeType":"YulLiteral","src":"3909:3:87","type":"","value":"160"},{"kind":"number","nativeSrc":"3914:1:87","nodeType":"YulLiteral","src":"3914:1:87","type":"","value":"1"}],"functionName":{"name":"shl","nativeSrc":"3905:3:87","nodeType":"YulIdentifier","src":"3905:3:87"},"nativeSrc":"3905:11:87","nodeType":"YulFunctionCall","src":"3905:11:87"},{"kind":"number","nativeSrc":"3918:1:87","nodeType":"YulLiteral","src":"3918:1:87","type":"","value":"1"}],"functionName":{"name":"sub","nativeSrc":"3901:3:87","nodeType":"YulIdentifier","src":"3901:3:87"},"nativeSrc":"3901:19:87","nodeType":"YulFunctionCall","src":"3901:19:87"}],"functionName":{"name":"and","nativeSrc":"3889:3:87","nodeType":"YulIdentifier","src":"3889:3:87"},"nativeSrc":"3889:32:87","nodeType":"YulFunctionCall","src":"3889:32:87"}],"functionName":{"name":"mstore","nativeSrc":"3871:6:87","nodeType":"YulIdentifier","src":"3871:6:87"},"nativeSrc":"3871:51:87","nodeType":"YulFunctionCall","src":"3871:51:87"},"nativeSrc":"3871:51:87","nodeType":"YulExpressionStatement","src":"3871:51:87"}]},"name":"abi_encode_tuple_t_address__to_t_address__fromStack_reversed","nativeSrc":"3725:203:87","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nativeSrc":"3795:9:87","nodeType":"YulTypedName","src":"3795:9:87","type":""},{"name":"value0","nativeSrc":"3806:6:87","nodeType":"YulTypedName","src":"3806:6:87","type":""}],"returnVariables":[{"name":"tail","nativeSrc":"3817:4:87","nodeType":"YulTypedName","src":"3817:4:87","type":""}],"src":"3725:203:87"},{"body":{"nativeSrc":"4012:241:87","nodeType":"YulBlock","src":"4012:241:87","statements":[{"body":{"nativeSrc":"4058:16:87","nodeType":"YulBlock","src":"4058:16:87","statements":[{"expression":{"arguments":[{"kind":"number","nativeSrc":"4067:1:87","nodeType":"YulLiteral","src":"4067:1:87","type":"","value":"0"},{"kind":"number","nativeSrc":"4070:1:87","nodeType":"YulLiteral","src":"4070:1:87","type":"","value":"0"}],"functionName":{"name":"revert","nativeSrc":"4060:6:87","nodeType":"YulIdentifier","src":"4060:6:87"},"nativeSrc":"4060:12:87","nodeType":"YulFunctionCall","src":"4060:12:87"},"nativeSrc":"4060:12:87","nodeType":"YulExpressionStatement","src":"4060:12:87"}]},"condition":{"arguments":[{"arguments":[{"name":"dataEnd","nativeSrc":"4033:7:87","nodeType":"YulIdentifier","src":"4033:7:87"},{"name":"headStart","nativeSrc":"4042:9:87","nodeType":"YulIdentifier","src":"4042:9:87"}],"functionName":{"name":"sub","nativeSrc":"4029:3:87","nodeType":"YulIdentifier","src":"4029:3:87"},"nativeSrc":"4029:23:87","nodeType":"YulFunctionCall","src":"4029:23:87"},{"kind":"number","nativeSrc":"4054:2:87","nodeType":"YulLiteral","src":"4054:2:87","type":"","value":"32"}],"functionName":{"name":"slt","nativeSrc":"4025:3:87","nodeType":"YulIdentifier","src":"4025:3:87"},"nativeSrc":"4025:32:87","nodeType":"YulFunctionCall","src":"4025:32:87"},"nativeSrc":"4022:52:87","nodeType":"YulIf","src":"4022:52:87"},{"nativeSrc":"4083:37:87","nodeType":"YulVariableDeclaration","src":"4083:37:87","value":{"arguments":[{"name":"headStart","nativeSrc":"4110:9:87","nodeType":"YulIdentifier","src":"4110:9:87"}],"functionName":{"name":"calldataload","nativeSrc":"4097:12:87","nodeType":"YulIdentifier","src":"4097:12:87"},"nativeSrc":"4097:23:87","nodeType":"YulFunctionCall","src":"4097:23:87"},"variables":[{"name":"offset","nativeSrc":"4087:6:87","nodeType":"YulTypedName","src":"4087:6:87","type":""}]},{"body":{"nativeSrc":"4163:16:87","nodeType":"YulBlock","src":"4163:16:87","statements":[{"expression":{"arguments":[{"kind":"number","nativeSrc":"4172:1:87","nodeType":"YulLiteral","src":"4172:1:87","type":"","value":"0"},{"kind":"number","nativeSrc":"4175:1:87","nodeType":"YulLiteral","src":"4175:1:87","type":"","value":"0"}],"functionName":{"name":"revert","nativeSrc":"4165:6:87","nodeType":"YulIdentifier","src":"4165:6:87"},"nativeSrc":"4165:12:87","nodeType":"YulFunctionCall","src":"4165:12:87"},"nativeSrc":"4165:12:87","nodeType":"YulExpressionStatement","src":"4165:12:87"}]},"condition":{"arguments":[{"name":"offset","nativeSrc":"4135:6:87","nodeType":"YulIdentifier","src":"4135:6:87"},{"kind":"number","nativeSrc":"4143:18:87","nodeType":"YulLiteral","src":"4143:18:87","type":"","value":"0xffffffffffffffff"}],"functionName":{"name":"gt","nativeSrc":"4132:2:87","nodeType":"YulIdentifier","src":"4132:2:87"},"nativeSrc":"4132:30:87","nodeType":"YulFunctionCall","src":"4132:30:87"},"nativeSrc":"4129:50:87","nodeType":"YulIf","src":"4129:50:87"},{"nativeSrc":"4188:59:87","nodeType":"YulAssignment","src":"4188:59:87","value":{"arguments":[{"arguments":[{"name":"headStart","nativeSrc":"4219:9:87","nodeType":"YulIdentifier","src":"4219:9:87"},{"name":"offset","nativeSrc":"4230:6:87","nodeType":"YulIdentifier","src":"4230:6:87"}],"functionName":{"name":"add","nativeSrc":"4215:3:87","nodeType":"YulIdentifier","src":"4215:3:87"},"nativeSrc":"4215:22:87","nodeType":"YulFunctionCall","src":"4215:22:87"},{"name":"dataEnd","nativeSrc":"4239:7:87","nodeType":"YulIdentifier","src":"4239:7:87"}],"functionName":{"name":"abi_decode_bytes","nativeSrc":"4198:16:87","nodeType":"YulIdentifier","src":"4198:16:87"},"nativeSrc":"4198:49:87","nodeType":"YulFunctionCall","src":"4198:49:87"},"variableNames":[{"name":"value0","nativeSrc":"4188:6:87","nodeType":"YulIdentifier","src":"4188:6:87"}]}]},"name":"abi_decode_tuple_t_bytes_memory_ptr","nativeSrc":"3933:320:87","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nativeSrc":"3978:9:87","nodeType":"YulTypedName","src":"3978:9:87","type":""},{"name":"dataEnd","nativeSrc":"3989:7:87","nodeType":"YulTypedName","src":"3989:7:87","type":""}],"returnVariables":[{"name":"value0","nativeSrc":"4001:6:87","nodeType":"YulTypedName","src":"4001:6:87","type":""}],"src":"3933:320:87"},{"body":{"nativeSrc":"4290:95:87","nodeType":"YulBlock","src":"4290:95:87","statements":[{"expression":{"arguments":[{"kind":"number","nativeSrc":"4307:1:87","nodeType":"YulLiteral","src":"4307:1:87","type":"","value":"0"},{"arguments":[{"kind":"number","nativeSrc":"4314:3:87","nodeType":"YulLiteral","src":"4314:3:87","type":"","value":"224"},{"kind":"number","nativeSrc":"4319:10:87","nodeType":"YulLiteral","src":"4319:10:87","type":"","value":"0x4e487b71"}],"functionName":{"name":"shl","nativeSrc":"4310:3:87","nodeType":"YulIdentifier","src":"4310:3:87"},"nativeSrc":"4310:20:87","nodeType":"YulFunctionCall","src":"4310:20:87"}],"functionName":{"name":"mstore","nativeSrc":"4300:6:87","nodeType":"YulIdentifier","src":"4300:6:87"},"nativeSrc":"4300:31:87","nodeType":"YulFunctionCall","src":"4300:31:87"},"nativeSrc":"4300:31:87","nodeType":"YulExpressionStatement","src":"4300:31:87"},{"expression":{"arguments":[{"kind":"number","nativeSrc":"4347:1:87","nodeType":"YulLiteral","src":"4347:1:87","type":"","value":"4"},{"kind":"number","nativeSrc":"4350:4:87","nodeType":"YulLiteral","src":"4350:4:87","type":"","value":"0x21"}],"functionName":{"name":"mstore","nativeSrc":"4340:6:87","nodeType":"YulIdentifier","src":"4340:6:87"},"nativeSrc":"4340:15:87","nodeType":"YulFunctionCall","src":"4340:15:87"},"nativeSrc":"4340:15:87","nodeType":"YulExpressionStatement","src":"4340:15:87"},{"expression":{"arguments":[{"kind":"number","nativeSrc":"4371:1:87","nodeType":"YulLiteral","src":"4371:1:87","type":"","value":"0"},{"kind":"number","nativeSrc":"4374:4:87","nodeType":"YulLiteral","src":"4374:4:87","type":"","value":"0x24"}],"functionName":{"name":"revert","nativeSrc":"4364:6:87","nodeType":"YulIdentifier","src":"4364:6:87"},"nativeSrc":"4364:15:87","nodeType":"YulFunctionCall","src":"4364:15:87"},"nativeSrc":"4364:15:87","nodeType":"YulExpressionStatement","src":"4364:15:87"}]},"name":"panic_error_0x21","nativeSrc":"4258:127:87","nodeType":"YulFunctionDefinition","src":"4258:127:87"},{"body":{"nativeSrc":"4502:846:87","nodeType":"YulBlock","src":"4502:846:87","statements":[{"nativeSrc":"4512:43:87","nodeType":"YulVariableDeclaration","src":"4512:43:87","value":{"arguments":[{"arguments":[{"name":"dataEnd","nativeSrc":"4530:7:87","nodeType":"YulIdentifier","src":"4530:7:87"},{"name":"headStart","nativeSrc":"4539:9:87","nodeType":"YulIdentifier","src":"4539:9:87"}],"functionName":{"name":"sub","nativeSrc":"4526:3:87","nodeType":"YulIdentifier","src":"4526:3:87"},"nativeSrc":"4526:23:87","nodeType":"YulFunctionCall","src":"4526:23:87"},{"kind":"number","nativeSrc":"4551:3:87","nodeType":"YulLiteral","src":"4551:3:87","type":"","value":"128"}],"functionName":{"name":"slt","nativeSrc":"4522:3:87","nodeType":"YulIdentifier","src":"4522:3:87"},"nativeSrc":"4522:33:87","nodeType":"YulFunctionCall","src":"4522:33:87"},"variables":[{"name":"_1","nativeSrc":"4516:2:87","nodeType":"YulTypedName","src":"4516:2:87","type":""}]},{"body":{"nativeSrc":"4570:16:87","nodeType":"YulBlock","src":"4570:16:87","statements":[{"expression":{"arguments":[{"kind":"number","nativeSrc":"4579:1:87","nodeType":"YulLiteral","src":"4579:1:87","type":"","value":"0"},{"kind":"number","nativeSrc":"4582:1:87","nodeType":"YulLiteral","src":"4582:1:87","type":"","value":"0"}],"functionName":{"name":"revert","nativeSrc":"4572:6:87","nodeType":"YulIdentifier","src":"4572:6:87"},"nativeSrc":"4572:12:87","nodeType":"YulFunctionCall","src":"4572:12:87"},"nativeSrc":"4572:12:87","nodeType":"YulExpressionStatement","src":"4572:12:87"}]},"condition":{"name":"_1","nativeSrc":"4567:2:87","nodeType":"YulIdentifier","src":"4567:2:87"},"nativeSrc":"4564:22:87","nodeType":"YulIf","src":"4564:22:87"},{"nativeSrc":"4595:7:87","nodeType":"YulAssignment","src":"4595:7:87","value":{"kind":"number","nativeSrc":"4601:1:87","nodeType":"YulLiteral","src":"4601:1:87","type":"","value":"0"},"variableNames":[{"name":"_1","nativeSrc":"4595:2:87","nodeType":"YulIdentifier","src":"4595:2:87"}]},{"nativeSrc":"4611:15:87","nodeType":"YulVariableDeclaration","src":"4611:15:87","value":{"kind":"number","nativeSrc":"4625:1:87","nodeType":"YulLiteral","src":"4625:1:87","type":"","value":"0"},"variables":[{"name":"memPtr","nativeSrc":"4615:6:87","nodeType":"YulTypedName","src":"4615:6:87","type":""}]},{"nativeSrc":"4635:19:87","nodeType":"YulAssignment","src":"4635:19:87","value":{"arguments":[{"kind":"number","nativeSrc":"4651:2:87","nodeType":"YulLiteral","src":"4651:2:87","type":"","value":"64"}],"functionName":{"name":"mload","nativeSrc":"4645:5:87","nodeType":"YulIdentifier","src":"4645:5:87"},"nativeSrc":"4645:9:87","nodeType":"YulFunctionCall","src":"4645:9:87"},"variableNames":[{"name":"memPtr","nativeSrc":"4635:6:87","nodeType":"YulIdentifier","src":"4635:6:87"}]},{"nativeSrc":"4663:34:87","nodeType":"YulVariableDeclaration","src":"4663:34:87","value":{"arguments":[{"name":"memPtr","nativeSrc":"4685:6:87","nodeType":"YulIdentifier","src":"4685:6:87"},{"kind":"number","nativeSrc":"4693:3:87","nodeType":"YulLiteral","src":"4693:3:87","type":"","value":"128"}],"functionName":{"name":"add","nativeSrc":"4681:3:87","nodeType":"YulIdentifier","src":"4681:3:87"},"nativeSrc":"4681:16:87","nodeType":"YulFunctionCall","src":"4681:16:87"},"variables":[{"name":"newFreePtr","nativeSrc":"4667:10:87","nodeType":"YulTypedName","src":"4667:10:87","type":""}]},{"body":{"nativeSrc":"4772:22:87","nodeType":"YulBlock","src":"4772:22:87","statements":[{"expression":{"arguments":[],"functionName":{"name":"panic_error_0x41","nativeSrc":"4774:16:87","nodeType":"YulIdentifier","src":"4774:16:87"},"nativeSrc":"4774:18:87","nodeType":"YulFunctionCall","src":"4774:18:87"},"nativeSrc":"4774:18:87","nodeType":"YulExpressionStatement","src":"4774:18:87"}]},"condition":{"arguments":[{"arguments":[{"name":"newFreePtr","nativeSrc":"4715:10:87","nodeType":"YulIdentifier","src":"4715:10:87"},{"kind":"number","nativeSrc":"4727:18:87","nodeType":"YulLiteral","src":"4727:18:87","type":"","value":"0xffffffffffffffff"}],"functionName":{"name":"gt","nativeSrc":"4712:2:87","nodeType":"YulIdentifier","src":"4712:2:87"},"nativeSrc":"4712:34:87","nodeType":"YulFunctionCall","src":"4712:34:87"},{"arguments":[{"name":"newFreePtr","nativeSrc":"4751:10:87","nodeType":"YulIdentifier","src":"4751:10:87"},{"name":"memPtr","nativeSrc":"4763:6:87","nodeType":"YulIdentifier","src":"4763:6:87"}],"functionName":{"name":"lt","nativeSrc":"4748:2:87","nodeType":"YulIdentifier","src":"4748:2:87"},"nativeSrc":"4748:22:87","nodeType":"YulFunctionCall","src":"4748:22:87"}],"functionName":{"name":"or","nativeSrc":"4709:2:87","nodeType":"YulIdentifier","src":"4709:2:87"},"nativeSrc":"4709:62:87","nodeType":"YulFunctionCall","src":"4709:62:87"},"nativeSrc":"4706:88:87","nodeType":"YulIf","src":"4706:88:87"},{"expression":{"arguments":[{"kind":"number","nativeSrc":"4810:2:87","nodeType":"YulLiteral","src":"4810:2:87","type":"","value":"64"},{"name":"newFreePtr","nativeSrc":"4814:10:87","nodeType":"YulIdentifier","src":"4814:10:87"}],"functionName":{"name":"mstore","nativeSrc":"4803:6:87","nodeType":"YulIdentifier","src":"4803:6:87"},"nativeSrc":"4803:22:87","nodeType":"YulFunctionCall","src":"4803:22:87"},"nativeSrc":"4803:22:87","nodeType":"YulExpressionStatement","src":"4803:22:87"},{"nativeSrc":"4834:29:87","nodeType":"YulVariableDeclaration","src":"4834:29:87","value":{"arguments":[{"name":"headStart","nativeSrc":"4853:9:87","nodeType":"YulIdentifier","src":"4853:9:87"}],"functionName":{"name":"mload","nativeSrc":"4847:5:87","nodeType":"YulIdentifier","src":"4847:5:87"},"nativeSrc":"4847:16:87","nodeType":"YulFunctionCall","src":"4847:16:87"},"variables":[{"name":"value","nativeSrc":"4838:5:87","nodeType":"YulTypedName","src":"4838:5:87","type":""}]},{"expression":{"arguments":[{"name":"value","nativeSrc":"4894:5:87","nodeType":"YulIdentifier","src":"4894:5:87"}],"functionName":{"name":"validator_revert_bool","nativeSrc":"4872:21:87","nodeType":"YulIdentifier","src":"4872:21:87"},"nativeSrc":"4872:28:87","nodeType":"YulFunctionCall","src":"4872:28:87"},"nativeSrc":"4872:28:87","nodeType":"YulExpressionStatement","src":"4872:28:87"},{"expression":{"arguments":[{"name":"memPtr","nativeSrc":"4916:6:87","nodeType":"YulIdentifier","src":"4916:6:87"},{"name":"value","nativeSrc":"4924:5:87","nodeType":"YulIdentifier","src":"4924:5:87"}],"functionName":{"name":"mstore","nativeSrc":"4909:6:87","nodeType":"YulIdentifier","src":"4909:6:87"},"nativeSrc":"4909:21:87","nodeType":"YulFunctionCall","src":"4909:21:87"},"nativeSrc":"4909:21:87","nodeType":"YulExpressionStatement","src":"4909:21:87"},{"nativeSrc":"4939:40:87","nodeType":"YulVariableDeclaration","src":"4939:40:87","value":{"arguments":[{"arguments":[{"name":"headStart","nativeSrc":"4964:9:87","nodeType":"YulIdentifier","src":"4964:9:87"},{"kind":"number","nativeSrc":"4975:2:87","nodeType":"YulLiteral","src":"4975:2:87","type":"","value":"32"}],"functionName":{"name":"add","nativeSrc":"4960:3:87","nodeType":"YulIdentifier","src":"4960:3:87"},"nativeSrc":"4960:18:87","nodeType":"YulFunctionCall","src":"4960:18:87"}],"functionName":{"name":"mload","nativeSrc":"4954:5:87","nodeType":"YulIdentifier","src":"4954:5:87"},"nativeSrc":"4954:25:87","nodeType":"YulFunctionCall","src":"4954:25:87"},"variables":[{"name":"value_1","nativeSrc":"4943:7:87","nodeType":"YulTypedName","src":"4943:7:87","type":""}]},{"expression":{"arguments":[{"name":"value_1","nativeSrc":"5010:7:87","nodeType":"YulIdentifier","src":"5010:7:87"}],"functionName":{"name":"validator_revert_bool","nativeSrc":"4988:21:87","nodeType":"YulIdentifier","src":"4988:21:87"},"nativeSrc":"4988:30:87","nodeType":"YulFunctionCall","src":"4988:30:87"},"nativeSrc":"4988:30:87","nodeType":"YulExpressionStatement","src":"4988:30:87"},{"expression":{"arguments":[{"arguments":[{"name":"memPtr","nativeSrc":"5038:6:87","nodeType":"YulIdentifier","src":"5038:6:87"},{"kind":"number","nativeSrc":"5046:2:87","nodeType":"YulLiteral","src":"5046:2:87","type":"","value":"32"}],"functionName":{"name":"add","nativeSrc":"5034:3:87","nodeType":"YulIdentifier","src":"5034:3:87"},"nativeSrc":"5034:15:87","nodeType":"YulFunctionCall","src":"5034:15:87"},{"name":"value_1","nativeSrc":"5051:7:87","nodeType":"YulIdentifier","src":"5051:7:87"}],"functionName":{"name":"mstore","nativeSrc":"5027:6:87","nodeType":"YulIdentifier","src":"5027:6:87"},"nativeSrc":"5027:32:87","nodeType":"YulFunctionCall","src":"5027:32:87"},"nativeSrc":"5027:32:87","nodeType":"YulExpressionStatement","src":"5027:32:87"},{"nativeSrc":"5068:40:87","nodeType":"YulVariableDeclaration","src":"5068:40:87","value":{"arguments":[{"arguments":[{"name":"headStart","nativeSrc":"5093:9:87","nodeType":"YulIdentifier","src":"5093:9:87"},{"kind":"number","nativeSrc":"5104:2:87","nodeType":"YulLiteral","src":"5104:2:87","type":"","value":"64"}],"functionName":{"name":"add","nativeSrc":"5089:3:87","nodeType":"YulIdentifier","src":"5089:3:87"},"nativeSrc":"5089:18:87","nodeType":"YulFunctionCall","src":"5089:18:87"}],"functionName":{"name":"mload","nativeSrc":"5083:5:87","nodeType":"YulIdentifier","src":"5083:5:87"},"nativeSrc":"5083:25:87","nodeType":"YulFunctionCall","src":"5083:25:87"},"variables":[{"name":"value_2","nativeSrc":"5072:7:87","nodeType":"YulTypedName","src":"5072:7:87","type":""}]},{"expression":{"arguments":[{"name":"value_2","nativeSrc":"5139:7:87","nodeType":"YulIdentifier","src":"5139:7:87"}],"functionName":{"name":"validator_revert_bool","nativeSrc":"5117:21:87","nodeType":"YulIdentifier","src":"5117:21:87"},"nativeSrc":"5117:30:87","nodeType":"YulFunctionCall","src":"5117:30:87"},"nativeSrc":"5117:30:87","nodeType":"YulExpressionStatement","src":"5117:30:87"},{"expression":{"arguments":[{"arguments":[{"name":"memPtr","nativeSrc":"5167:6:87","nodeType":"YulIdentifier","src":"5167:6:87"},{"kind":"number","nativeSrc":"5175:2:87","nodeType":"YulLiteral","src":"5175:2:87","type":"","value":"64"}],"functionName":{"name":"add","nativeSrc":"5163:3:87","nodeType":"YulIdentifier","src":"5163:3:87"},"nativeSrc":"5163:15:87","nodeType":"YulFunctionCall","src":"5163:15:87"},{"name":"value_2","nativeSrc":"5180:7:87","nodeType":"YulIdentifier","src":"5180:7:87"}],"functionName":{"name":"mstore","nativeSrc":"5156:6:87","nodeType":"YulIdentifier","src":"5156:6:87"},"nativeSrc":"5156:32:87","nodeType":"YulFunctionCall","src":"5156:32:87"},"nativeSrc":"5156:32:87","nodeType":"YulExpressionStatement","src":"5156:32:87"},{"nativeSrc":"5197:40:87","nodeType":"YulVariableDeclaration","src":"5197:40:87","value":{"arguments":[{"arguments":[{"name":"headStart","nativeSrc":"5222:9:87","nodeType":"YulIdentifier","src":"5222:9:87"},{"kind":"number","nativeSrc":"5233:2:87","nodeType":"YulLiteral","src":"5233:2:87","type":"","value":"96"}],"functionName":{"name":"add","nativeSrc":"5218:3:87","nodeType":"YulIdentifier","src":"5218:3:87"},"nativeSrc":"5218:18:87","nodeType":"YulFunctionCall","src":"5218:18:87"}],"functionName":{"name":"mload","nativeSrc":"5212:5:87","nodeType":"YulIdentifier","src":"5212:5:87"},"nativeSrc":"5212:25:87","nodeType":"YulFunctionCall","src":"5212:25:87"},"variables":[{"name":"value_3","nativeSrc":"5201:7:87","nodeType":"YulTypedName","src":"5201:7:87","type":""}]},{"expression":{"arguments":[{"name":"value_3","nativeSrc":"5268:7:87","nodeType":"YulIdentifier","src":"5268:7:87"}],"functionName":{"name":"validator_revert_bool","nativeSrc":"5246:21:87","nodeType":"YulIdentifier","src":"5246:21:87"},"nativeSrc":"5246:30:87","nodeType":"YulFunctionCall","src":"5246:30:87"},"nativeSrc":"5246:30:87","nodeType":"YulExpressionStatement","src":"5246:30:87"},{"expression":{"arguments":[{"arguments":[{"name":"memPtr","nativeSrc":"5296:6:87","nodeType":"YulIdentifier","src":"5296:6:87"},{"kind":"number","nativeSrc":"5304:2:87","nodeType":"YulLiteral","src":"5304:2:87","type":"","value":"96"}],"functionName":{"name":"add","nativeSrc":"5292:3:87","nodeType":"YulIdentifier","src":"5292:3:87"},"nativeSrc":"5292:15:87","nodeType":"YulFunctionCall","src":"5292:15:87"},{"name":"value_3","nativeSrc":"5309:7:87","nodeType":"YulIdentifier","src":"5309:7:87"}],"functionName":{"name":"mstore","nativeSrc":"5285:6:87","nodeType":"YulIdentifier","src":"5285:6:87"},"nativeSrc":"5285:32:87","nodeType":"YulFunctionCall","src":"5285:32:87"},"nativeSrc":"5285:32:87","nodeType":"YulExpressionStatement","src":"5285:32:87"},{"nativeSrc":"5326:16:87","nodeType":"YulAssignment","src":"5326:16:87","value":{"name":"memPtr","nativeSrc":"5336:6:87","nodeType":"YulIdentifier","src":"5336:6:87"},"variableNames":[{"name":"value0","nativeSrc":"5326:6:87","nodeType":"YulIdentifier","src":"5326:6:87"}]}]},"name":"abi_decode_tuple_t_struct$_DummyStorage_$20949_memory_ptr_fromMemory","nativeSrc":"4390:958:87","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nativeSrc":"4468:9:87","nodeType":"YulTypedName","src":"4468:9:87","type":""},{"name":"dataEnd","nativeSrc":"4479:7:87","nodeType":"YulTypedName","src":"4479:7:87","type":""}],"returnVariables":[{"name":"value0","nativeSrc":"4491:6:87","nodeType":"YulTypedName","src":"4491:6:87","type":""}],"src":"4390:958:87"},{"body":{"nativeSrc":"5408:325:87","nodeType":"YulBlock","src":"5408:325:87","statements":[{"nativeSrc":"5418:22:87","nodeType":"YulAssignment","src":"5418:22:87","value":{"arguments":[{"kind":"number","nativeSrc":"5432:1:87","nodeType":"YulLiteral","src":"5432:1:87","type":"","value":"1"},{"name":"data","nativeSrc":"5435:4:87","nodeType":"YulIdentifier","src":"5435:4:87"}],"functionName":{"name":"shr","nativeSrc":"5428:3:87","nodeType":"YulIdentifier","src":"5428:3:87"},"nativeSrc":"5428:12:87","nodeType":"YulFunctionCall","src":"5428:12:87"},"variableNames":[{"name":"length","nativeSrc":"5418:6:87","nodeType":"YulIdentifier","src":"5418:6:87"}]},{"nativeSrc":"5449:38:87","nodeType":"YulVariableDeclaration","src":"5449:38:87","value":{"arguments":[{"name":"data","nativeSrc":"5479:4:87","nodeType":"YulIdentifier","src":"5479:4:87"},{"kind":"number","nativeSrc":"5485:1:87","nodeType":"YulLiteral","src":"5485:1:87","type":"","value":"1"}],"functionName":{"name":"and","nativeSrc":"5475:3:87","nodeType":"YulIdentifier","src":"5475:3:87"},"nativeSrc":"5475:12:87","nodeType":"YulFunctionCall","src":"5475:12:87"},"variables":[{"name":"outOfPlaceEncoding","nativeSrc":"5453:18:87","nodeType":"YulTypedName","src":"5453:18:87","type":""}]},{"body":{"nativeSrc":"5526:31:87","nodeType":"YulBlock","src":"5526:31:87","statements":[{"nativeSrc":"5528:27:87","nodeType":"YulAssignment","src":"5528:27:87","value":{"arguments":[{"name":"length","nativeSrc":"5542:6:87","nodeType":"YulIdentifier","src":"5542:6:87"},{"kind":"number","nativeSrc":"5550:4:87","nodeType":"YulLiteral","src":"5550:4:87","type":"","value":"0x7f"}],"functionName":{"name":"and","nativeSrc":"5538:3:87","nodeType":"YulIdentifier","src":"5538:3:87"},"nativeSrc":"5538:17:87","nodeType":"YulFunctionCall","src":"5538:17:87"},"variableNames":[{"name":"length","nativeSrc":"5528:6:87","nodeType":"YulIdentifier","src":"5528:6:87"}]}]},"condition":{"arguments":[{"name":"outOfPlaceEncoding","nativeSrc":"5506:18:87","nodeType":"YulIdentifier","src":"5506:18:87"}],"functionName":{"name":"iszero","nativeSrc":"5499:6:87","nodeType":"YulIdentifier","src":"5499:6:87"},"nativeSrc":"5499:26:87","nodeType":"YulFunctionCall","src":"5499:26:87"},"nativeSrc":"5496:61:87","nodeType":"YulIf","src":"5496:61:87"},{"body":{"nativeSrc":"5616:111:87","nodeType":"YulBlock","src":"5616:111:87","statements":[{"expression":{"arguments":[{"kind":"number","nativeSrc":"5637:1:87","nodeType":"YulLiteral","src":"5637:1:87","type":"","value":"0"},{"arguments":[{"kind":"number","nativeSrc":"5644:3:87","nodeType":"YulLiteral","src":"5644:3:87","type":"","value":"224"},{"kind":"number","nativeSrc":"5649:10:87","nodeType":"YulLiteral","src":"5649:10:87","type":"","value":"0x4e487b71"}],"functionName":{"name":"shl","nativeSrc":"5640:3:87","nodeType":"YulIdentifier","src":"5640:3:87"},"nativeSrc":"5640:20:87","nodeType":"YulFunctionCall","src":"5640:20:87"}],"functionName":{"name":"mstore","nativeSrc":"5630:6:87","nodeType":"YulIdentifier","src":"5630:6:87"},"nativeSrc":"5630:31:87","nodeType":"YulFunctionCall","src":"5630:31:87"},"nativeSrc":"5630:31:87","nodeType":"YulExpressionStatement","src":"5630:31:87"},{"expression":{"arguments":[{"kind":"number","nativeSrc":"5681:1:87","nodeType":"YulLiteral","src":"5681:1:87","type":"","value":"4"},{"kind":"number","nativeSrc":"5684:4:87","nodeType":"YulLiteral","src":"5684:4:87","type":"","value":"0x22"}],"functionName":{"name":"mstore","nativeSrc":"5674:6:87","nodeType":"YulIdentifier","src":"5674:6:87"},"nativeSrc":"5674:15:87","nodeType":"YulFunctionCall","src":"5674:15:87"},"nativeSrc":"5674:15:87","nodeType":"YulExpressionStatement","src":"5674:15:87"},{"expression":{"arguments":[{"kind":"number","nativeSrc":"5709:1:87","nodeType":"YulLiteral","src":"5709:1:87","type":"","value":"0"},{"kind":"number","nativeSrc":"5712:4:87","nodeType":"YulLiteral","src":"5712:4:87","type":"","value":"0x24"}],"functionName":{"name":"revert","nativeSrc":"5702:6:87","nodeType":"YulIdentifier","src":"5702:6:87"},"nativeSrc":"5702:15:87","nodeType":"YulFunctionCall","src":"5702:15:87"},"nativeSrc":"5702:15:87","nodeType":"YulExpressionStatement","src":"5702:15:87"}]},"condition":{"arguments":[{"name":"outOfPlaceEncoding","nativeSrc":"5572:18:87","nodeType":"YulIdentifier","src":"5572:18:87"},{"arguments":[{"name":"length","nativeSrc":"5595:6:87","nodeType":"YulIdentifier","src":"5595:6:87"},{"kind":"number","nativeSrc":"5603:2:87","nodeType":"YulLiteral","src":"5603:2:87","type":"","value":"32"}],"functionName":{"name":"lt","nativeSrc":"5592:2:87","nodeType":"YulIdentifier","src":"5592:2:87"},"nativeSrc":"5592:14:87","nodeType":"YulFunctionCall","src":"5592:14:87"}],"functionName":{"name":"eq","nativeSrc":"5569:2:87","nodeType":"YulIdentifier","src":"5569:2:87"},"nativeSrc":"5569:38:87","nodeType":"YulFunctionCall","src":"5569:38:87"},"nativeSrc":"5566:161:87","nodeType":"YulIf","src":"5566:161:87"}]},"name":"extract_byte_array_length","nativeSrc":"5353:380:87","nodeType":"YulFunctionDefinition","parameters":[{"name":"data","nativeSrc":"5388:4:87","nodeType":"YulTypedName","src":"5388:4:87","type":""}],"returnVariables":[{"name":"length","nativeSrc":"5397:6:87","nodeType":"YulTypedName","src":"5397:6:87","type":""}],"src":"5353:380:87"},{"body":{"nativeSrc":"5793:65:87","nodeType":"YulBlock","src":"5793:65:87","statements":[{"expression":{"arguments":[{"kind":"number","nativeSrc":"5810:1:87","nodeType":"YulLiteral","src":"5810:1:87","type":"","value":"0"},{"name":"ptr","nativeSrc":"5813:3:87","nodeType":"YulIdentifier","src":"5813:3:87"}],"functionName":{"name":"mstore","nativeSrc":"5803:6:87","nodeType":"YulIdentifier","src":"5803:6:87"},"nativeSrc":"5803:14:87","nodeType":"YulFunctionCall","src":"5803:14:87"},"nativeSrc":"5803:14:87","nodeType":"YulExpressionStatement","src":"5803:14:87"},{"nativeSrc":"5826:26:87","nodeType":"YulAssignment","src":"5826:26:87","value":{"arguments":[{"kind":"number","nativeSrc":"5844:1:87","nodeType":"YulLiteral","src":"5844:1:87","type":"","value":"0"},{"kind":"number","nativeSrc":"5847:4:87","nodeType":"YulLiteral","src":"5847:4:87","type":"","value":"0x20"}],"functionName":{"name":"keccak256","nativeSrc":"5834:9:87","nodeType":"YulIdentifier","src":"5834:9:87"},"nativeSrc":"5834:18:87","nodeType":"YulFunctionCall","src":"5834:18:87"},"variableNames":[{"name":"data","nativeSrc":"5826:4:87","nodeType":"YulIdentifier","src":"5826:4:87"}]}]},"name":"array_dataslot_bytes_storage","nativeSrc":"5738:120:87","nodeType":"YulFunctionDefinition","parameters":[{"name":"ptr","nativeSrc":"5776:3:87","nodeType":"YulTypedName","src":"5776:3:87","type":""}],"returnVariables":[{"name":"data","nativeSrc":"5784:4:87","nodeType":"YulTypedName","src":"5784:4:87","type":""}],"src":"5738:120:87"},{"body":{"nativeSrc":"5943:437:87","nodeType":"YulBlock","src":"5943:437:87","statements":[{"body":{"nativeSrc":"5976:398:87","nodeType":"YulBlock","src":"5976:398:87","statements":[{"expression":{"arguments":[{"kind":"number","nativeSrc":"5997:1:87","nodeType":"YulLiteral","src":"5997:1:87","type":"","value":"0"},{"name":"array","nativeSrc":"6000:5:87","nodeType":"YulIdentifier","src":"6000:5:87"}],"functionName":{"name":"mstore","nativeSrc":"5990:6:87","nodeType":"YulIdentifier","src":"5990:6:87"},"nativeSrc":"5990:16:87","nodeType":"YulFunctionCall","src":"5990:16:87"},"nativeSrc":"5990:16:87","nodeType":"YulExpressionStatement","src":"5990:16:87"},{"nativeSrc":"6019:30:87","nodeType":"YulVariableDeclaration","src":"6019:30:87","value":{"arguments":[{"kind":"number","nativeSrc":"6041:1:87","nodeType":"YulLiteral","src":"6041:1:87","type":"","value":"0"},{"kind":"number","nativeSrc":"6044:4:87","nodeType":"YulLiteral","src":"6044:4:87","type":"","value":"0x20"}],"functionName":{"name":"keccak256","nativeSrc":"6031:9:87","nodeType":"YulIdentifier","src":"6031:9:87"},"nativeSrc":"6031:18:87","nodeType":"YulFunctionCall","src":"6031:18:87"},"variables":[{"name":"data","nativeSrc":"6023:4:87","nodeType":"YulTypedName","src":"6023:4:87","type":""}]},{"nativeSrc":"6062:57:87","nodeType":"YulVariableDeclaration","src":"6062:57:87","value":{"arguments":[{"name":"data","nativeSrc":"6085:4:87","nodeType":"YulIdentifier","src":"6085:4:87"},{"arguments":[{"kind":"number","nativeSrc":"6095:1:87","nodeType":"YulLiteral","src":"6095:1:87","type":"","value":"5"},{"arguments":[{"name":"startIndex","nativeSrc":"6102:10:87","nodeType":"YulIdentifier","src":"6102:10:87"},{"kind":"number","nativeSrc":"6114:2:87","nodeType":"YulLiteral","src":"6114:2:87","type":"","value":"31"}],"functionName":{"name":"add","nativeSrc":"6098:3:87","nodeType":"YulIdentifier","src":"6098:3:87"},"nativeSrc":"6098:19:87","nodeType":"YulFunctionCall","src":"6098:19:87"}],"functionName":{"name":"shr","nativeSrc":"6091:3:87","nodeType":"YulIdentifier","src":"6091:3:87"},"nativeSrc":"6091:27:87","nodeType":"YulFunctionCall","src":"6091:27:87"}],"functionName":{"name":"add","nativeSrc":"6081:3:87","nodeType":"YulIdentifier","src":"6081:3:87"},"nativeSrc":"6081:38:87","nodeType":"YulFunctionCall","src":"6081:38:87"},"variables":[{"name":"deleteStart","nativeSrc":"6066:11:87","nodeType":"YulTypedName","src":"6066:11:87","type":""}]},{"body":{"nativeSrc":"6156:23:87","nodeType":"YulBlock","src":"6156:23:87","statements":[{"nativeSrc":"6158:19:87","nodeType":"YulAssignment","src":"6158:19:87","value":{"name":"data","nativeSrc":"6173:4:87","nodeType":"YulIdentifier","src":"6173:4:87"},"variableNames":[{"name":"deleteStart","nativeSrc":"6158:11:87","nodeType":"YulIdentifier","src":"6158:11:87"}]}]},"condition":{"arguments":[{"name":"startIndex","nativeSrc":"6138:10:87","nodeType":"YulIdentifier","src":"6138:10:87"},{"kind":"number","nativeSrc":"6150:4:87","nodeType":"YulLiteral","src":"6150:4:87","type":"","value":"0x20"}],"functionName":{"name":"lt","nativeSrc":"6135:2:87","nodeType":"YulIdentifier","src":"6135:2:87"},"nativeSrc":"6135:20:87","nodeType":"YulFunctionCall","src":"6135:20:87"},"nativeSrc":"6132:47:87","nodeType":"YulIf","src":"6132:47:87"},{"nativeSrc":"6192:41:87","nodeType":"YulVariableDeclaration","src":"6192:41:87","value":{"arguments":[{"name":"data","nativeSrc":"6206:4:87","nodeType":"YulIdentifier","src":"6206:4:87"},{"arguments":[{"kind":"number","nativeSrc":"6216:1:87","nodeType":"YulLiteral","src":"6216:1:87","type":"","value":"5"},{"arguments":[{"name":"len","nativeSrc":"6223:3:87","nodeType":"YulIdentifier","src":"6223:3:87"},{"kind":"number","nativeSrc":"6228:2:87","nodeType":"YulLiteral","src":"6228:2:87","type":"","value":"31"}],"functionName":{"name":"add","nativeSrc":"6219:3:87","nodeType":"YulIdentifier","src":"6219:3:87"},"nativeSrc":"6219:12:87","nodeType":"YulFunctionCall","src":"6219:12:87"}],"functionName":{"name":"shr","nativeSrc":"6212:3:87","nodeType":"YulIdentifier","src":"6212:3:87"},"nativeSrc":"6212:20:87","nodeType":"YulFunctionCall","src":"6212:20:87"}],"functionName":{"name":"add","nativeSrc":"6202:3:87","nodeType":"YulIdentifier","src":"6202:3:87"},"nativeSrc":"6202:31:87","nodeType":"YulFunctionCall","src":"6202:31:87"},"variables":[{"name":"_1","nativeSrc":"6196:2:87","nodeType":"YulTypedName","src":"6196:2:87","type":""}]},{"nativeSrc":"6246:24:87","nodeType":"YulVariableDeclaration","src":"6246:24:87","value":{"name":"deleteStart","nativeSrc":"6259:11:87","nodeType":"YulIdentifier","src":"6259:11:87"},"variables":[{"name":"start","nativeSrc":"6250:5:87","nodeType":"YulTypedName","src":"6250:5:87","type":""}]},{"body":{"nativeSrc":"6344:20:87","nodeType":"YulBlock","src":"6344:20:87","statements":[{"expression":{"arguments":[{"name":"start","nativeSrc":"6353:5:87","nodeType":"YulIdentifier","src":"6353:5:87"},{"kind":"number","nativeSrc":"6360:1:87","nodeType":"YulLiteral","src":"6360:1:87","type":"","value":"0"}],"functionName":{"name":"sstore","nativeSrc":"6346:6:87","nodeType":"YulIdentifier","src":"6346:6:87"},"nativeSrc":"6346:16:87","nodeType":"YulFunctionCall","src":"6346:16:87"},"nativeSrc":"6346:16:87","nodeType":"YulExpressionStatement","src":"6346:16:87"}]},"condition":{"arguments":[{"name":"start","nativeSrc":"6294:5:87","nodeType":"YulIdentifier","src":"6294:5:87"},{"name":"_1","nativeSrc":"6301:2:87","nodeType":"YulIdentifier","src":"6301:2:87"}],"functionName":{"name":"lt","nativeSrc":"6291:2:87","nodeType":"YulIdentifier","src":"6291:2:87"},"nativeSrc":"6291:13:87","nodeType":"YulFunctionCall","src":"6291:13:87"},"nativeSrc":"6283:81:87","nodeType":"YulForLoop","post":{"nativeSrc":"6305:26:87","nodeType":"YulBlock","src":"6305:26:87","statements":[{"nativeSrc":"6307:22:87","nodeType":"YulAssignment","src":"6307:22:87","value":{"arguments":[{"name":"start","nativeSrc":"6320:5:87","nodeType":"YulIdentifier","src":"6320:5:87"},{"kind":"number","nativeSrc":"6327:1:87","nodeType":"YulLiteral","src":"6327:1:87","type":"","value":"1"}],"functionName":{"name":"add","nativeSrc":"6316:3:87","nodeType":"YulIdentifier","src":"6316:3:87"},"nativeSrc":"6316:13:87","nodeType":"YulFunctionCall","src":"6316:13:87"},"variableNames":[{"name":"start","nativeSrc":"6307:5:87","nodeType":"YulIdentifier","src":"6307:5:87"}]}]},"pre":{"nativeSrc":"6287:3:87","nodeType":"YulBlock","src":"6287:3:87","statements":[]},"src":"6283:81:87"}]},"condition":{"arguments":[{"name":"len","nativeSrc":"5959:3:87","nodeType":"YulIdentifier","src":"5959:3:87"},{"kind":"number","nativeSrc":"5964:2:87","nodeType":"YulLiteral","src":"5964:2:87","type":"","value":"31"}],"functionName":{"name":"gt","nativeSrc":"5956:2:87","nodeType":"YulIdentifier","src":"5956:2:87"},"nativeSrc":"5956:11:87","nodeType":"YulFunctionCall","src":"5956:11:87"},"nativeSrc":"5953:421:87","nodeType":"YulIf","src":"5953:421:87"}]},"name":"clean_up_bytearray_end_slots_bytes_storage","nativeSrc":"5863:517:87","nodeType":"YulFunctionDefinition","parameters":[{"name":"array","nativeSrc":"5915:5:87","nodeType":"YulTypedName","src":"5915:5:87","type":""},{"name":"len","nativeSrc":"5922:3:87","nodeType":"YulTypedName","src":"5922:3:87","type":""},{"name":"startIndex","nativeSrc":"5927:10:87","nodeType":"YulTypedName","src":"5927:10:87","type":""}],"src":"5863:517:87"},{"body":{"nativeSrc":"6470:81:87","nodeType":"YulBlock","src":"6470:81:87","statements":[{"nativeSrc":"6480:65:87","nodeType":"YulAssignment","src":"6480:65:87","value":{"arguments":[{"arguments":[{"name":"data","nativeSrc":"6495:4:87","nodeType":"YulIdentifier","src":"6495:4:87"},{"arguments":[{"arguments":[{"arguments":[{"kind":"number","nativeSrc":"6513:1:87","nodeType":"YulLiteral","src":"6513:1:87","type":"","value":"3"},{"name":"len","nativeSrc":"6516:3:87","nodeType":"YulIdentifier","src":"6516:3:87"}],"functionName":{"name":"shl","nativeSrc":"6509:3:87","nodeType":"YulIdentifier","src":"6509:3:87"},"nativeSrc":"6509:11:87","nodeType":"YulFunctionCall","src":"6509:11:87"},{"arguments":[{"kind":"number","nativeSrc":"6526:1:87","nodeType":"YulLiteral","src":"6526:1:87","type":"","value":"0"}],"functionName":{"name":"not","nativeSrc":"6522:3:87","nodeType":"YulIdentifier","src":"6522:3:87"},"nativeSrc":"6522:6:87","nodeType":"YulFunctionCall","src":"6522:6:87"}],"functionName":{"name":"shr","nativeSrc":"6505:3:87","nodeType":"YulIdentifier","src":"6505:3:87"},"nativeSrc":"6505:24:87","nodeType":"YulFunctionCall","src":"6505:24:87"}],"functionName":{"name":"not","nativeSrc":"6501:3:87","nodeType":"YulIdentifier","src":"6501:3:87"},"nativeSrc":"6501:29:87","nodeType":"YulFunctionCall","src":"6501:29:87"}],"functionName":{"name":"and","nativeSrc":"6491:3:87","nodeType":"YulIdentifier","src":"6491:3:87"},"nativeSrc":"6491:40:87","nodeType":"YulFunctionCall","src":"6491:40:87"},{"arguments":[{"kind":"number","nativeSrc":"6537:1:87","nodeType":"YulLiteral","src":"6537:1:87","type":"","value":"1"},{"name":"len","nativeSrc":"6540:3:87","nodeType":"YulIdentifier","src":"6540:3:87"}],"functionName":{"name":"shl","nativeSrc":"6533:3:87","nodeType":"YulIdentifier","src":"6533:3:87"},"nativeSrc":"6533:11:87","nodeType":"YulFunctionCall","src":"6533:11:87"}],"functionName":{"name":"or","nativeSrc":"6488:2:87","nodeType":"YulIdentifier","src":"6488:2:87"},"nativeSrc":"6488:57:87","nodeType":"YulFunctionCall","src":"6488:57:87"},"variableNames":[{"name":"used","nativeSrc":"6480:4:87","nodeType":"YulIdentifier","src":"6480:4:87"}]}]},"name":"extract_used_part_and_set_length_of_short_byte_array","nativeSrc":"6385:166:87","nodeType":"YulFunctionDefinition","parameters":[{"name":"data","nativeSrc":"6447:4:87","nodeType":"YulTypedName","src":"6447:4:87","type":""},{"name":"len","nativeSrc":"6453:3:87","nodeType":"YulTypedName","src":"6453:3:87","type":""}],"returnVariables":[{"name":"used","nativeSrc":"6461:4:87","nodeType":"YulTypedName","src":"6461:4:87","type":""}],"src":"6385:166:87"},{"body":{"nativeSrc":"6650:1201:87","nodeType":"YulBlock","src":"6650:1201:87","statements":[{"nativeSrc":"6660:24:87","nodeType":"YulVariableDeclaration","src":"6660:24:87","value":{"arguments":[{"name":"src","nativeSrc":"6680:3:87","nodeType":"YulIdentifier","src":"6680:3:87"}],"functionName":{"name":"mload","nativeSrc":"6674:5:87","nodeType":"YulIdentifier","src":"6674:5:87"},"nativeSrc":"6674:10:87","nodeType":"YulFunctionCall","src":"6674:10:87"},"variables":[{"name":"newLen","nativeSrc":"6664:6:87","nodeType":"YulTypedName","src":"6664:6:87","type":""}]},{"body":{"nativeSrc":"6727:22:87","nodeType":"YulBlock","src":"6727:22:87","statements":[{"expression":{"arguments":[],"functionName":{"name":"panic_error_0x41","nativeSrc":"6729:16:87","nodeType":"YulIdentifier","src":"6729:16:87"},"nativeSrc":"6729:18:87","nodeType":"YulFunctionCall","src":"6729:18:87"},"nativeSrc":"6729:18:87","nodeType":"YulExpressionStatement","src":"6729:18:87"}]},"condition":{"arguments":[{"name":"newLen","nativeSrc":"6699:6:87","nodeType":"YulIdentifier","src":"6699:6:87"},{"kind":"number","nativeSrc":"6707:18:87","nodeType":"YulLiteral","src":"6707:18:87","type":"","value":"0xffffffffffffffff"}],"functionName":{"name":"gt","nativeSrc":"6696:2:87","nodeType":"YulIdentifier","src":"6696:2:87"},"nativeSrc":"6696:30:87","nodeType":"YulFunctionCall","src":"6696:30:87"},"nativeSrc":"6693:56:87","nodeType":"YulIf","src":"6693:56:87"},{"expression":{"arguments":[{"name":"slot","nativeSrc":"6801:4:87","nodeType":"YulIdentifier","src":"6801:4:87"},{"arguments":[{"arguments":[{"name":"slot","nativeSrc":"6839:4:87","nodeType":"YulIdentifier","src":"6839:4:87"}],"functionName":{"name":"sload","nativeSrc":"6833:5:87","nodeType":"YulIdentifier","src":"6833:5:87"},"nativeSrc":"6833:11:87","nodeType":"YulFunctionCall","src":"6833:11:87"}],"functionName":{"name":"extract_byte_array_length","nativeSrc":"6807:25:87","nodeType":"YulIdentifier","src":"6807:25:87"},"nativeSrc":"6807:38:87","nodeType":"YulFunctionCall","src":"6807:38:87"},{"name":"newLen","nativeSrc":"6847:6:87","nodeType":"YulIdentifier","src":"6847:6:87"}],"functionName":{"name":"clean_up_bytearray_end_slots_bytes_storage","nativeSrc":"6758:42:87","nodeType":"YulIdentifier","src":"6758:42:87"},"nativeSrc":"6758:96:87","nodeType":"YulFunctionCall","src":"6758:96:87"},"nativeSrc":"6758:96:87","nodeType":"YulExpressionStatement","src":"6758:96:87"},{"nativeSrc":"6863:18:87","nodeType":"YulVariableDeclaration","src":"6863:18:87","value":{"kind":"number","nativeSrc":"6880:1:87","nodeType":"YulLiteral","src":"6880:1:87","type":"","value":"0"},"variables":[{"name":"srcOffset","nativeSrc":"6867:9:87","nodeType":"YulTypedName","src":"6867:9:87","type":""}]},{"nativeSrc":"6890:17:87","nodeType":"YulAssignment","src":"6890:17:87","value":{"kind":"number","nativeSrc":"6903:4:87","nodeType":"YulLiteral","src":"6903:4:87","type":"","value":"0x20"},"variableNames":[{"name":"srcOffset","nativeSrc":"6890:9:87","nodeType":"YulIdentifier","src":"6890:9:87"}]},{"cases":[{"body":{"nativeSrc":"6953:641:87","nodeType":"YulBlock","src":"6953:641:87","statements":[{"nativeSrc":"6967:35:87","nodeType":"YulVariableDeclaration","src":"6967:35:87","value":{"arguments":[{"name":"newLen","nativeSrc":"6986:6:87","nodeType":"YulIdentifier","src":"6986:6:87"},{"arguments":[{"kind":"number","nativeSrc":"6998:2:87","nodeType":"YulLiteral","src":"6998:2:87","type":"","value":"31"}],"functionName":{"name":"not","nativeSrc":"6994:3:87","nodeType":"YulIdentifier","src":"6994:3:87"},"nativeSrc":"6994:7:87","nodeType":"YulFunctionCall","src":"6994:7:87"}],"functionName":{"name":"and","nativeSrc":"6982:3:87","nodeType":"YulIdentifier","src":"6982:3:87"},"nativeSrc":"6982:20:87","nodeType":"YulFunctionCall","src":"6982:20:87"},"variables":[{"name":"loopEnd","nativeSrc":"6971:7:87","nodeType":"YulTypedName","src":"6971:7:87","type":""}]},{"nativeSrc":"7015:48:87","nodeType":"YulVariableDeclaration","src":"7015:48:87","value":{"arguments":[{"name":"slot","nativeSrc":"7058:4:87","nodeType":"YulIdentifier","src":"7058:4:87"}],"functionName":{"name":"array_dataslot_bytes_storage","nativeSrc":"7029:28:87","nodeType":"YulIdentifier","src":"7029:28:87"},"nativeSrc":"7029:34:87","nodeType":"YulFunctionCall","src":"7029:34:87"},"variables":[{"name":"dstPtr","nativeSrc":"7019:6:87","nodeType":"YulTypedName","src":"7019:6:87","type":""}]},{"nativeSrc":"7076:10:87","nodeType":"YulVariableDeclaration","src":"7076:10:87","value":{"kind":"number","nativeSrc":"7085:1:87","nodeType":"YulLiteral","src":"7085:1:87","type":"","value":"0"},"variables":[{"name":"i","nativeSrc":"7080:1:87","nodeType":"YulTypedName","src":"7080:1:87","type":""}]},{"body":{"nativeSrc":"7156:165:87","nodeType":"YulBlock","src":"7156:165:87","statements":[{"expression":{"arguments":[{"name":"dstPtr","nativeSrc":"7181:6:87","nodeType":"YulIdentifier","src":"7181:6:87"},{"arguments":[{"arguments":[{"name":"src","nativeSrc":"7199:3:87","nodeType":"YulIdentifier","src":"7199:3:87"},{"name":"srcOffset","nativeSrc":"7204:9:87","nodeType":"YulIdentifier","src":"7204:9:87"}],"functionName":{"name":"add","nativeSrc":"7195:3:87","nodeType":"YulIdentifier","src":"7195:3:87"},"nativeSrc":"7195:19:87","nodeType":"YulFunctionCall","src":"7195:19:87"}],"functionName":{"name":"mload","nativeSrc":"7189:5:87","nodeType":"YulIdentifier","src":"7189:5:87"},"nativeSrc":"7189:26:87","nodeType":"YulFunctionCall","src":"7189:26:87"}],"functionName":{"name":"sstore","nativeSrc":"7174:6:87","nodeType":"YulIdentifier","src":"7174:6:87"},"nativeSrc":"7174:42:87","nodeType":"YulFunctionCall","src":"7174:42:87"},"nativeSrc":"7174:42:87","nodeType":"YulExpressionStatement","src":"7174:42:87"},{"nativeSrc":"7233:24:87","nodeType":"YulAssignment","src":"7233:24:87","value":{"arguments":[{"name":"dstPtr","nativeSrc":"7247:6:87","nodeType":"YulIdentifier","src":"7247:6:87"},{"kind":"number","nativeSrc":"7255:1:87","nodeType":"YulLiteral","src":"7255:1:87","type":"","value":"1"}],"functionName":{"name":"add","nativeSrc":"7243:3:87","nodeType":"YulIdentifier","src":"7243:3:87"},"nativeSrc":"7243:14:87","nodeType":"YulFunctionCall","src":"7243:14:87"},"variableNames":[{"name":"dstPtr","nativeSrc":"7233:6:87","nodeType":"YulIdentifier","src":"7233:6:87"}]},{"nativeSrc":"7274:33:87","nodeType":"YulAssignment","src":"7274:33:87","value":{"arguments":[{"name":"srcOffset","nativeSrc":"7291:9:87","nodeType":"YulIdentifier","src":"7291:9:87"},{"kind":"number","nativeSrc":"7302:4:87","nodeType":"YulLiteral","src":"7302:4:87","type":"","value":"0x20"}],"functionName":{"name":"add","nativeSrc":"7287:3:87","nodeType":"YulIdentifier","src":"7287:3:87"},"nativeSrc":"7287:20:87","nodeType":"YulFunctionCall","src":"7287:20:87"},"variableNames":[{"name":"srcOffset","nativeSrc":"7274:9:87","nodeType":"YulIdentifier","src":"7274:9:87"}]}]},"condition":{"arguments":[{"name":"i","nativeSrc":"7110:1:87","nodeType":"YulIdentifier","src":"7110:1:87"},{"name":"loopEnd","nativeSrc":"7113:7:87","nodeType":"YulIdentifier","src":"7113:7:87"}],"functionName":{"name":"lt","nativeSrc":"7107:2:87","nodeType":"YulIdentifier","src":"7107:2:87"},"nativeSrc":"7107:14:87","nodeType":"YulFunctionCall","src":"7107:14:87"},"nativeSrc":"7099:222:87","nodeType":"YulForLoop","post":{"nativeSrc":"7122:21:87","nodeType":"YulBlock","src":"7122:21:87","statements":[{"nativeSrc":"7124:17:87","nodeType":"YulAssignment","src":"7124:17:87","value":{"arguments":[{"name":"i","nativeSrc":"7133:1:87","nodeType":"YulIdentifier","src":"7133:1:87"},{"kind":"number","nativeSrc":"7136:4:87","nodeType":"YulLiteral","src":"7136:4:87","type":"","value":"0x20"}],"functionName":{"name":"add","nativeSrc":"7129:3:87","nodeType":"YulIdentifier","src":"7129:3:87"},"nativeSrc":"7129:12:87","nodeType":"YulFunctionCall","src":"7129:12:87"},"variableNames":[{"name":"i","nativeSrc":"7124:1:87","nodeType":"YulIdentifier","src":"7124:1:87"}]}]},"pre":{"nativeSrc":"7103:3:87","nodeType":"YulBlock","src":"7103:3:87","statements":[]},"src":"7099:222:87"},{"body":{"nativeSrc":"7369:166:87","nodeType":"YulBlock","src":"7369:166:87","statements":[{"nativeSrc":"7387:43:87","nodeType":"YulVariableDeclaration","src":"7387:43:87","value":{"arguments":[{"arguments":[{"name":"src","nativeSrc":"7414:3:87","nodeType":"YulIdentifier","src":"7414:3:87"},{"name":"srcOffset","nativeSrc":"7419:9:87","nodeType":"YulIdentifier","src":"7419:9:87"}],"functionName":{"name":"add","nativeSrc":"7410:3:87","nodeType":"YulIdentifier","src":"7410:3:87"},"nativeSrc":"7410:19:87","nodeType":"YulFunctionCall","src":"7410:19:87"}],"functionName":{"name":"mload","nativeSrc":"7404:5:87","nodeType":"YulIdentifier","src":"7404:5:87"},"nativeSrc":"7404:26:87","nodeType":"YulFunctionCall","src":"7404:26:87"},"variables":[{"name":"lastValue","nativeSrc":"7391:9:87","nodeType":"YulTypedName","src":"7391:9:87","type":""}]},{"expression":{"arguments":[{"name":"dstPtr","nativeSrc":"7454:6:87","nodeType":"YulIdentifier","src":"7454:6:87"},{"arguments":[{"name":"lastValue","nativeSrc":"7466:9:87","nodeType":"YulIdentifier","src":"7466:9:87"},{"arguments":[{"arguments":[{"arguments":[{"arguments":[{"kind":"number","nativeSrc":"7493:1:87","nodeType":"YulLiteral","src":"7493:1:87","type":"","value":"3"},{"name":"newLen","nativeSrc":"7496:6:87","nodeType":"YulIdentifier","src":"7496:6:87"}],"functionName":{"name":"shl","nativeSrc":"7489:3:87","nodeType":"YulIdentifier","src":"7489:3:87"},"nativeSrc":"7489:14:87","nodeType":"YulFunctionCall","src":"7489:14:87"},{"kind":"number","nativeSrc":"7505:3:87","nodeType":"YulLiteral","src":"7505:3:87","type":"","value":"248"}],"functionName":{"name":"and","nativeSrc":"7485:3:87","nodeType":"YulIdentifier","src":"7485:3:87"},"nativeSrc":"7485:24:87","nodeType":"YulFunctionCall","src":"7485:24:87"},{"arguments":[{"kind":"number","nativeSrc":"7515:1:87","nodeType":"YulLiteral","src":"7515:1:87","type":"","value":"0"}],"functionName":{"name":"not","nativeSrc":"7511:3:87","nodeType":"YulIdentifier","src":"7511:3:87"},"nativeSrc":"7511:6:87","nodeType":"YulFunctionCall","src":"7511:6:87"}],"functionName":{"name":"shr","nativeSrc":"7481:3:87","nodeType":"YulIdentifier","src":"7481:3:87"},"nativeSrc":"7481:37:87","nodeType":"YulFunctionCall","src":"7481:37:87"}],"functionName":{"name":"not","nativeSrc":"7477:3:87","nodeType":"YulIdentifier","src":"7477:3:87"},"nativeSrc":"7477:42:87","nodeType":"YulFunctionCall","src":"7477:42:87"}],"functionName":{"name":"and","nativeSrc":"7462:3:87","nodeType":"YulIdentifier","src":"7462:3:87"},"nativeSrc":"7462:58:87","nodeType":"YulFunctionCall","src":"7462:58:87"}],"functionName":{"name":"sstore","nativeSrc":"7447:6:87","nodeType":"YulIdentifier","src":"7447:6:87"},"nativeSrc":"7447:74:87","nodeType":"YulFunctionCall","src":"7447:74:87"},"nativeSrc":"7447:74:87","nodeType":"YulExpressionStatement","src":"7447:74:87"}]},"condition":{"arguments":[{"name":"loopEnd","nativeSrc":"7340:7:87","nodeType":"YulIdentifier","src":"7340:7:87"},{"name":"newLen","nativeSrc":"7349:6:87","nodeType":"YulIdentifier","src":"7349:6:87"}],"functionName":{"name":"lt","nativeSrc":"7337:2:87","nodeType":"YulIdentifier","src":"7337:2:87"},"nativeSrc":"7337:19:87","nodeType":"YulFunctionCall","src":"7337:19:87"},"nativeSrc":"7334:201:87","nodeType":"YulIf","src":"7334:201:87"},{"expression":{"arguments":[{"name":"slot","nativeSrc":"7555:4:87","nodeType":"YulIdentifier","src":"7555:4:87"},{"arguments":[{"arguments":[{"kind":"number","nativeSrc":"7569:1:87","nodeType":"YulLiteral","src":"7569:1:87","type":"","value":"1"},{"name":"newLen","nativeSrc":"7572:6:87","nodeType":"YulIdentifier","src":"7572:6:87"}],"functionName":{"name":"shl","nativeSrc":"7565:3:87","nodeType":"YulIdentifier","src":"7565:3:87"},"nativeSrc":"7565:14:87","nodeType":"YulFunctionCall","src":"7565:14:87"},{"kind":"number","nativeSrc":"7581:1:87","nodeType":"YulLiteral","src":"7581:1:87","type":"","value":"1"}],"functionName":{"name":"add","nativeSrc":"7561:3:87","nodeType":"YulIdentifier","src":"7561:3:87"},"nativeSrc":"7561:22:87","nodeType":"YulFunctionCall","src":"7561:22:87"}],"functionName":{"name":"sstore","nativeSrc":"7548:6:87","nodeType":"YulIdentifier","src":"7548:6:87"},"nativeSrc":"7548:36:87","nodeType":"YulFunctionCall","src":"7548:36:87"},"nativeSrc":"7548:36:87","nodeType":"YulExpressionStatement","src":"7548:36:87"}]},"nativeSrc":"6946:648:87","nodeType":"YulCase","src":"6946:648:87","value":{"kind":"number","nativeSrc":"6951:1:87","nodeType":"YulLiteral","src":"6951:1:87","type":"","value":"1"}},{"body":{"nativeSrc":"7611:234:87","nodeType":"YulBlock","src":"7611:234:87","statements":[{"nativeSrc":"7625:14:87","nodeType":"YulVariableDeclaration","src":"7625:14:87","value":{"kind":"number","nativeSrc":"7638:1:87","nodeType":"YulLiteral","src":"7638:1:87","type":"","value":"0"},"variables":[{"name":"value","nativeSrc":"7629:5:87","nodeType":"YulTypedName","src":"7629:5:87","type":""}]},{"body":{"nativeSrc":"7674:67:87","nodeType":"YulBlock","src":"7674:67:87","statements":[{"nativeSrc":"7692:35:87","nodeType":"YulAssignment","src":"7692:35:87","value":{"arguments":[{"arguments":[{"name":"src","nativeSrc":"7711:3:87","nodeType":"YulIdentifier","src":"7711:3:87"},{"name":"srcOffset","nativeSrc":"7716:9:87","nodeType":"YulIdentifier","src":"7716:9:87"}],"functionName":{"name":"add","nativeSrc":"7707:3:87","nodeType":"YulIdentifier","src":"7707:3:87"},"nativeSrc":"7707:19:87","nodeType":"YulFunctionCall","src":"7707:19:87"}],"functionName":{"name":"mload","nativeSrc":"7701:5:87","nodeType":"YulIdentifier","src":"7701:5:87"},"nativeSrc":"7701:26:87","nodeType":"YulFunctionCall","src":"7701:26:87"},"variableNames":[{"name":"value","nativeSrc":"7692:5:87","nodeType":"YulIdentifier","src":"7692:5:87"}]}]},"condition":{"name":"newLen","nativeSrc":"7655:6:87","nodeType":"YulIdentifier","src":"7655:6:87"},"nativeSrc":"7652:89:87","nodeType":"YulIf","src":"7652:89:87"},{"expression":{"arguments":[{"name":"slot","nativeSrc":"7761:4:87","nodeType":"YulIdentifier","src":"7761:4:87"},{"arguments":[{"name":"value","nativeSrc":"7820:5:87","nodeType":"YulIdentifier","src":"7820:5:87"},{"name":"newLen","nativeSrc":"7827:6:87","nodeType":"YulIdentifier","src":"7827:6:87"}],"functionName":{"name":"extract_used_part_and_set_length_of_short_byte_array","nativeSrc":"7767:52:87","nodeType":"YulIdentifier","src":"7767:52:87"},"nativeSrc":"7767:67:87","nodeType":"YulFunctionCall","src":"7767:67:87"}],"functionName":{"name":"sstore","nativeSrc":"7754:6:87","nodeType":"YulIdentifier","src":"7754:6:87"},"nativeSrc":"7754:81:87","nodeType":"YulFunctionCall","src":"7754:81:87"},"nativeSrc":"7754:81:87","nodeType":"YulExpressionStatement","src":"7754:81:87"}]},"nativeSrc":"7603:242:87","nodeType":"YulCase","src":"7603:242:87","value":"default"}],"expression":{"arguments":[{"name":"newLen","nativeSrc":"6926:6:87","nodeType":"YulIdentifier","src":"6926:6:87"},{"kind":"number","nativeSrc":"6934:2:87","nodeType":"YulLiteral","src":"6934:2:87","type":"","value":"31"}],"functionName":{"name":"gt","nativeSrc":"6923:2:87","nodeType":"YulIdentifier","src":"6923:2:87"},"nativeSrc":"6923:14:87","nodeType":"YulFunctionCall","src":"6923:14:87"},"nativeSrc":"6916:929:87","nodeType":"YulSwitch","src":"6916:929:87"}]},"name":"copy_byte_array_to_storage_from_t_bytes_memory_ptr_to_t_bytes_storage","nativeSrc":"6556:1295:87","nodeType":"YulFunctionDefinition","parameters":[{"name":"slot","nativeSrc":"6635:4:87","nodeType":"YulTypedName","src":"6635:4:87","type":""},{"name":"src","nativeSrc":"6641:3:87","nodeType":"YulTypedName","src":"6641:3:87","type":""}],"src":"6556:1295:87"},{"body":{"nativeSrc":"8030:157:87","nodeType":"YulBlock","src":"8030:157:87","statements":[{"expression":{"arguments":[{"name":"headStart","nativeSrc":"8047:9:87","nodeType":"YulIdentifier","src":"8047:9:87"},{"kind":"number","nativeSrc":"8058:2:87","nodeType":"YulLiteral","src":"8058:2:87","type":"","value":"32"}],"functionName":{"name":"mstore","nativeSrc":"8040:6:87","nodeType":"YulIdentifier","src":"8040:6:87"},"nativeSrc":"8040:21:87","nodeType":"YulFunctionCall","src":"8040:21:87"},"nativeSrc":"8040:21:87","nodeType":"YulExpressionStatement","src":"8040:21:87"},{"expression":{"arguments":[{"arguments":[{"name":"headStart","nativeSrc":"8081:9:87","nodeType":"YulIdentifier","src":"8081:9:87"},{"kind":"number","nativeSrc":"8092:2:87","nodeType":"YulLiteral","src":"8092:2:87","type":"","value":"32"}],"functionName":{"name":"add","nativeSrc":"8077:3:87","nodeType":"YulIdentifier","src":"8077:3:87"},"nativeSrc":"8077:18:87","nodeType":"YulFunctionCall","src":"8077:18:87"},{"kind":"number","nativeSrc":"8097:1:87","nodeType":"YulLiteral","src":"8097:1:87","type":"","value":"8"}],"functionName":{"name":"mstore","nativeSrc":"8070:6:87","nodeType":"YulIdentifier","src":"8070:6:87"},"nativeSrc":"8070:29:87","nodeType":"YulFunctionCall","src":"8070:29:87"},"nativeSrc":"8070:29:87","nodeType":"YulExpressionStatement","src":"8070:29:87"},{"expression":{"arguments":[{"arguments":[{"name":"headStart","nativeSrc":"8119:9:87","nodeType":"YulIdentifier","src":"8119:9:87"},{"kind":"number","nativeSrc":"8130:2:87","nodeType":"YulLiteral","src":"8130:2:87","type":"","value":"64"}],"functionName":{"name":"add","nativeSrc":"8115:3:87","nodeType":"YulIdentifier","src":"8115:3:87"},"nativeSrc":"8115:18:87","nodeType":"YulFunctionCall","src":"8115:18:87"},{"hexValue":"7769746864726177","kind":"string","nativeSrc":"8135:10:87","nodeType":"YulLiteral","src":"8135:10:87","type":"","value":"withdraw"}],"functionName":{"name":"mstore","nativeSrc":"8108:6:87","nodeType":"YulIdentifier","src":"8108:6:87"},"nativeSrc":"8108:38:87","nodeType":"YulFunctionCall","src":"8108:38:87"},"nativeSrc":"8108:38:87","nodeType":"YulExpressionStatement","src":"8108:38:87"},{"nativeSrc":"8155:26:87","nodeType":"YulAssignment","src":"8155:26:87","value":{"arguments":[{"name":"headStart","nativeSrc":"8167:9:87","nodeType":"YulIdentifier","src":"8167:9:87"},{"kind":"number","nativeSrc":"8178:2:87","nodeType":"YulLiteral","src":"8178:2:87","type":"","value":"96"}],"functionName":{"name":"add","nativeSrc":"8163:3:87","nodeType":"YulIdentifier","src":"8163:3:87"},"nativeSrc":"8163:18:87","nodeType":"YulFunctionCall","src":"8163:18:87"},"variableNames":[{"name":"tail","nativeSrc":"8155:4:87","nodeType":"YulIdentifier","src":"8155:4:87"}]}]},"name":"abi_encode_tuple_t_stringliteral_855511cc3694f64379908437d6d64458dc76d02482052bfb8a5b33a72c054c77__to_t_string_memory_ptr__fromStack_reversed","nativeSrc":"7856:331:87","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nativeSrc":"8007:9:87","nodeType":"YulTypedName","src":"8007:9:87","type":""}],"returnVariables":[{"name":"tail","nativeSrc":"8021:4:87","nodeType":"YulTypedName","src":"8021:4:87","type":""}],"src":"7856:331:87"},{"body":{"nativeSrc":"8364:214:87","nodeType":"YulBlock","src":"8364:214:87","statements":[{"nativeSrc":"8374:26:87","nodeType":"YulAssignment","src":"8374:26:87","value":{"arguments":[{"name":"headStart","nativeSrc":"8386:9:87","nodeType":"YulIdentifier","src":"8386:9:87"},{"kind":"number","nativeSrc":"8397:2:87","nodeType":"YulLiteral","src":"8397:2:87","type":"","value":"96"}],"functionName":{"name":"add","nativeSrc":"8382:3:87","nodeType":"YulIdentifier","src":"8382:3:87"},"nativeSrc":"8382:18:87","nodeType":"YulFunctionCall","src":"8382:18:87"},"variableNames":[{"name":"tail","nativeSrc":"8374:4:87","nodeType":"YulIdentifier","src":"8374:4:87"}]},{"expression":{"arguments":[{"name":"headStart","nativeSrc":"8416:9:87","nodeType":"YulIdentifier","src":"8416:9:87"},{"arguments":[{"name":"value0","nativeSrc":"8431:6:87","nodeType":"YulIdentifier","src":"8431:6:87"},{"arguments":[{"arguments":[{"kind":"number","nativeSrc":"8447:3:87","nodeType":"YulLiteral","src":"8447:3:87","type":"","value":"160"},{"kind":"number","nativeSrc":"8452:1:87","nodeType":"YulLiteral","src":"8452:1:87","type":"","value":"1"}],"functionName":{"name":"shl","nativeSrc":"8443:3:87","nodeType":"YulIdentifier","src":"8443:3:87"},"nativeSrc":"8443:11:87","nodeType":"YulFunctionCall","src":"8443:11:87"},{"kind":"number","nativeSrc":"8456:1:87","nodeType":"YulLiteral","src":"8456:1:87","type":"","value":"1"}],"functionName":{"name":"sub","nativeSrc":"8439:3:87","nodeType":"YulIdentifier","src":"8439:3:87"},"nativeSrc":"8439:19:87","nodeType":"YulFunctionCall","src":"8439:19:87"}],"functionName":{"name":"and","nativeSrc":"8427:3:87","nodeType":"YulIdentifier","src":"8427:3:87"},"nativeSrc":"8427:32:87","nodeType":"YulFunctionCall","src":"8427:32:87"}],"functionName":{"name":"mstore","nativeSrc":"8409:6:87","nodeType":"YulIdentifier","src":"8409:6:87"},"nativeSrc":"8409:51:87","nodeType":"YulFunctionCall","src":"8409:51:87"},"nativeSrc":"8409:51:87","nodeType":"YulExpressionStatement","src":"8409:51:87"},{"expression":{"arguments":[{"arguments":[{"name":"headStart","nativeSrc":"8480:9:87","nodeType":"YulIdentifier","src":"8480:9:87"},{"kind":"number","nativeSrc":"8491:2:87","nodeType":"YulLiteral","src":"8491:2:87","type":"","value":"32"}],"functionName":{"name":"add","nativeSrc":"8476:3:87","nodeType":"YulIdentifier","src":"8476:3:87"},"nativeSrc":"8476:18:87","nodeType":"YulFunctionCall","src":"8476:18:87"},{"arguments":[{"name":"value1","nativeSrc":"8500:6:87","nodeType":"YulIdentifier","src":"8500:6:87"},{"arguments":[{"arguments":[{"kind":"number","nativeSrc":"8516:3:87","nodeType":"YulLiteral","src":"8516:3:87","type":"","value":"160"},{"kind":"number","nativeSrc":"8521:1:87","nodeType":"YulLiteral","src":"8521:1:87","type":"","value":"1"}],"functionName":{"name":"shl","nativeSrc":"8512:3:87","nodeType":"YulIdentifier","src":"8512:3:87"},"nativeSrc":"8512:11:87","nodeType":"YulFunctionCall","src":"8512:11:87"},{"kind":"number","nativeSrc":"8525:1:87","nodeType":"YulLiteral","src":"8525:1:87","type":"","value":"1"}],"functionName":{"name":"sub","nativeSrc":"8508:3:87","nodeType":"YulIdentifier","src":"8508:3:87"},"nativeSrc":"8508:19:87","nodeType":"YulFunctionCall","src":"8508:19:87"}],"functionName":{"name":"and","nativeSrc":"8496:3:87","nodeType":"YulIdentifier","src":"8496:3:87"},"nativeSrc":"8496:32:87","nodeType":"YulFunctionCall","src":"8496:32:87"}],"functionName":{"name":"mstore","nativeSrc":"8469:6:87","nodeType":"YulIdentifier","src":"8469:6:87"},"nativeSrc":"8469:60:87","nodeType":"YulFunctionCall","src":"8469:60:87"},"nativeSrc":"8469:60:87","nodeType":"YulExpressionStatement","src":"8469:60:87"},{"expression":{"arguments":[{"arguments":[{"name":"headStart","nativeSrc":"8549:9:87","nodeType":"YulIdentifier","src":"8549:9:87"},{"kind":"number","nativeSrc":"8560:2:87","nodeType":"YulLiteral","src":"8560:2:87","type":"","value":"64"}],"functionName":{"name":"add","nativeSrc":"8545:3:87","nodeType":"YulIdentifier","src":"8545:3:87"},"nativeSrc":"8545:18:87","nodeType":"YulFunctionCall","src":"8545:18:87"},{"name":"value2","nativeSrc":"8565:6:87","nodeType":"YulIdentifier","src":"8565:6:87"}],"functionName":{"name":"mstore","nativeSrc":"8538:6:87","nodeType":"YulIdentifier","src":"8538:6:87"},"nativeSrc":"8538:34:87","nodeType":"YulFunctionCall","src":"8538:34:87"},"nativeSrc":"8538:34:87","nodeType":"YulExpressionStatement","src":"8538:34:87"}]},"name":"abi_encode_tuple_t_contract$_IERC20_$8679_t_address_t_uint256__to_t_address_t_address_t_uint256__fromStack_reversed","nativeSrc":"8192:386:87","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nativeSrc":"8317:9:87","nodeType":"YulTypedName","src":"8317:9:87","type":""},{"name":"value2","nativeSrc":"8328:6:87","nodeType":"YulTypedName","src":"8328:6:87","type":""},{"name":"value1","nativeSrc":"8336:6:87","nodeType":"YulTypedName","src":"8336:6:87","type":""},{"name":"value0","nativeSrc":"8344:6:87","nodeType":"YulTypedName","src":"8344:6:87","type":""}],"returnVariables":[{"name":"tail","nativeSrc":"8355:4:87","nodeType":"YulTypedName","src":"8355:4:87","type":""}],"src":"8192:386:87"},{"body":{"nativeSrc":"8757:160:87","nodeType":"YulBlock","src":"8757:160:87","statements":[{"expression":{"arguments":[{"name":"headStart","nativeSrc":"8774:9:87","nodeType":"YulIdentifier","src":"8774:9:87"},{"kind":"number","nativeSrc":"8785:2:87","nodeType":"YulLiteral","src":"8785:2:87","type":"","value":"32"}],"functionName":{"name":"mstore","nativeSrc":"8767:6:87","nodeType":"YulIdentifier","src":"8767:6:87"},"nativeSrc":"8767:21:87","nodeType":"YulFunctionCall","src":"8767:21:87"},"nativeSrc":"8767:21:87","nodeType":"YulExpressionStatement","src":"8767:21:87"},{"expression":{"arguments":[{"arguments":[{"name":"headStart","nativeSrc":"8808:9:87","nodeType":"YulIdentifier","src":"8808:9:87"},{"kind":"number","nativeSrc":"8819:2:87","nodeType":"YulLiteral","src":"8819:2:87","type":"","value":"32"}],"functionName":{"name":"add","nativeSrc":"8804:3:87","nodeType":"YulIdentifier","src":"8804:3:87"},"nativeSrc":"8804:18:87","nodeType":"YulFunctionCall","src":"8804:18:87"},{"kind":"number","nativeSrc":"8824:2:87","nodeType":"YulLiteral","src":"8824:2:87","type":"","value":"10"}],"functionName":{"name":"mstore","nativeSrc":"8797:6:87","nodeType":"YulIdentifier","src":"8797:6:87"},"nativeSrc":"8797:30:87","nodeType":"YulFunctionCall","src":"8797:30:87"},"nativeSrc":"8797:30:87","nodeType":"YulExpressionStatement","src":"8797:30:87"},{"expression":{"arguments":[{"arguments":[{"name":"headStart","nativeSrc":"8847:9:87","nodeType":"YulIdentifier","src":"8847:9:87"},{"kind":"number","nativeSrc":"8858:2:87","nodeType":"YulLiteral","src":"8858:2:87","type":"","value":"64"}],"functionName":{"name":"add","nativeSrc":"8843:3:87","nodeType":"YulIdentifier","src":"8843:3:87"},"nativeSrc":"8843:18:87","nodeType":"YulFunctionCall","src":"8843:18:87"},{"hexValue":"646973636f6e6e656374","kind":"string","nativeSrc":"8863:12:87","nodeType":"YulLiteral","src":"8863:12:87","type":"","value":"disconnect"}],"functionName":{"name":"mstore","nativeSrc":"8836:6:87","nodeType":"YulIdentifier","src":"8836:6:87"},"nativeSrc":"8836:40:87","nodeType":"YulFunctionCall","src":"8836:40:87"},"nativeSrc":"8836:40:87","nodeType":"YulExpressionStatement","src":"8836:40:87"},{"nativeSrc":"8885:26:87","nodeType":"YulAssignment","src":"8885:26:87","value":{"arguments":[{"name":"headStart","nativeSrc":"8897:9:87","nodeType":"YulIdentifier","src":"8897:9:87"},{"kind":"number","nativeSrc":"8908:2:87","nodeType":"YulLiteral","src":"8908:2:87","type":"","value":"96"}],"functionName":{"name":"add","nativeSrc":"8893:3:87","nodeType":"YulIdentifier","src":"8893:3:87"},"nativeSrc":"8893:18:87","nodeType":"YulFunctionCall","src":"8893:18:87"},"variableNames":[{"name":"tail","nativeSrc":"8885:4:87","nodeType":"YulIdentifier","src":"8885:4:87"}]}]},"name":"abi_encode_tuple_t_stringliteral_33f3b0f27639a8cf87e42127aff3d5fb0ceefb0ec7f418bbae25f31ac364ef39__to_t_string_memory_ptr__fromStack_reversed","nativeSrc":"8583:334:87","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nativeSrc":"8734:9:87","nodeType":"YulTypedName","src":"8734:9:87","type":""}],"returnVariables":[{"name":"tail","nativeSrc":"8748:4:87","nodeType":"YulTypedName","src":"8748:4:87","type":""}],"src":"8583:334:87"},{"body":{"nativeSrc":"9017:92:87","nodeType":"YulBlock","src":"9017:92:87","statements":[{"nativeSrc":"9027:26:87","nodeType":"YulAssignment","src":"9027:26:87","value":{"arguments":[{"name":"headStart","nativeSrc":"9039:9:87","nodeType":"YulIdentifier","src":"9039:9:87"},{"kind":"number","nativeSrc":"9050:2:87","nodeType":"YulLiteral","src":"9050:2:87","type":"","value":"32"}],"functionName":{"name":"add","nativeSrc":"9035:3:87","nodeType":"YulIdentifier","src":"9035:3:87"},"nativeSrc":"9035:18:87","nodeType":"YulFunctionCall","src":"9035:18:87"},"variableNames":[{"name":"tail","nativeSrc":"9027:4:87","nodeType":"YulIdentifier","src":"9027:4:87"}]},{"expression":{"arguments":[{"name":"headStart","nativeSrc":"9069:9:87","nodeType":"YulIdentifier","src":"9069:9:87"},{"arguments":[{"arguments":[{"name":"value0","nativeSrc":"9094:6:87","nodeType":"YulIdentifier","src":"9094:6:87"}],"functionName":{"name":"iszero","nativeSrc":"9087:6:87","nodeType":"YulIdentifier","src":"9087:6:87"},"nativeSrc":"9087:14:87","nodeType":"YulFunctionCall","src":"9087:14:87"}],"functionName":{"name":"iszero","nativeSrc":"9080:6:87","nodeType":"YulIdentifier","src":"9080:6:87"},"nativeSrc":"9080:22:87","nodeType":"YulFunctionCall","src":"9080:22:87"}],"functionName":{"name":"mstore","nativeSrc":"9062:6:87","nodeType":"YulIdentifier","src":"9062:6:87"},"nativeSrc":"9062:41:87","nodeType":"YulFunctionCall","src":"9062:41:87"},"nativeSrc":"9062:41:87","nodeType":"YulExpressionStatement","src":"9062:41:87"}]},"name":"abi_encode_tuple_t_bool__to_t_bool__fromStack_reversed","nativeSrc":"8922:187:87","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nativeSrc":"8986:9:87","nodeType":"YulTypedName","src":"8986:9:87","type":""},{"name":"value0","nativeSrc":"8997:6:87","nodeType":"YulTypedName","src":"8997:6:87","type":""}],"returnVariables":[{"name":"tail","nativeSrc":"9008:4:87","nodeType":"YulTypedName","src":"9008:4:87","type":""}],"src":"8922:187:87"},{"body":{"nativeSrc":"9288:156:87","nodeType":"YulBlock","src":"9288:156:87","statements":[{"expression":{"arguments":[{"name":"headStart","nativeSrc":"9305:9:87","nodeType":"YulIdentifier","src":"9305:9:87"},{"kind":"number","nativeSrc":"9316:2:87","nodeType":"YulLiteral","src":"9316:2:87","type":"","value":"32"}],"functionName":{"name":"mstore","nativeSrc":"9298:6:87","nodeType":"YulIdentifier","src":"9298:6:87"},"nativeSrc":"9298:21:87","nodeType":"YulFunctionCall","src":"9298:21:87"},"nativeSrc":"9298:21:87","nodeType":"YulExpressionStatement","src":"9298:21:87"},{"expression":{"arguments":[{"arguments":[{"name":"headStart","nativeSrc":"9339:9:87","nodeType":"YulIdentifier","src":"9339:9:87"},{"kind":"number","nativeSrc":"9350:2:87","nodeType":"YulLiteral","src":"9350:2:87","type":"","value":"32"}],"functionName":{"name":"add","nativeSrc":"9335:3:87","nodeType":"YulIdentifier","src":"9335:3:87"},"nativeSrc":"9335:18:87","nodeType":"YulFunctionCall","src":"9335:18:87"},{"kind":"number","nativeSrc":"9355:1:87","nodeType":"YulLiteral","src":"9355:1:87","type":"","value":"7"}],"functionName":{"name":"mstore","nativeSrc":"9328:6:87","nodeType":"YulIdentifier","src":"9328:6:87"},"nativeSrc":"9328:29:87","nodeType":"YulFunctionCall","src":"9328:29:87"},"nativeSrc":"9328:29:87","nodeType":"YulExpressionStatement","src":"9328:29:87"},{"expression":{"arguments":[{"arguments":[{"name":"headStart","nativeSrc":"9377:9:87","nodeType":"YulIdentifier","src":"9377:9:87"},{"kind":"number","nativeSrc":"9388:2:87","nodeType":"YulLiteral","src":"9388:2:87","type":"","value":"64"}],"functionName":{"name":"add","nativeSrc":"9373:3:87","nodeType":"YulIdentifier","src":"9373:3:87"},"nativeSrc":"9373:18:87","nodeType":"YulFunctionCall","src":"9373:18:87"},{"hexValue":"636f6e6e656374","kind":"string","nativeSrc":"9393:9:87","nodeType":"YulLiteral","src":"9393:9:87","type":"","value":"connect"}],"functionName":{"name":"mstore","nativeSrc":"9366:6:87","nodeType":"YulIdentifier","src":"9366:6:87"},"nativeSrc":"9366:37:87","nodeType":"YulFunctionCall","src":"9366:37:87"},"nativeSrc":"9366:37:87","nodeType":"YulExpressionStatement","src":"9366:37:87"},{"nativeSrc":"9412:26:87","nodeType":"YulAssignment","src":"9412:26:87","value":{"arguments":[{"name":"headStart","nativeSrc":"9424:9:87","nodeType":"YulIdentifier","src":"9424:9:87"},{"kind":"number","nativeSrc":"9435:2:87","nodeType":"YulLiteral","src":"9435:2:87","type":"","value":"96"}],"functionName":{"name":"add","nativeSrc":"9420:3:87","nodeType":"YulIdentifier","src":"9420:3:87"},"nativeSrc":"9420:18:87","nodeType":"YulFunctionCall","src":"9420:18:87"},"variableNames":[{"name":"tail","nativeSrc":"9412:4:87","nodeType":"YulIdentifier","src":"9412:4:87"}]}]},"name":"abi_encode_tuple_t_stringliteral_6cc4cd8a2857f640feca9d434996a8bd85fc3342a4342aa8c9e794d5d512b324__to_t_string_memory_ptr__fromStack_reversed","nativeSrc":"9114:330:87","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nativeSrc":"9265:9:87","nodeType":"YulTypedName","src":"9265:9:87","type":""}],"returnVariables":[{"name":"tail","nativeSrc":"9279:4:87","nodeType":"YulTypedName","src":"9279:4:87","type":""}],"src":"9114:330:87"},{"body":{"nativeSrc":"9623:156:87","nodeType":"YulBlock","src":"9623:156:87","statements":[{"expression":{"arguments":[{"name":"headStart","nativeSrc":"9640:9:87","nodeType":"YulIdentifier","src":"9640:9:87"},{"kind":"number","nativeSrc":"9651:2:87","nodeType":"YulLiteral","src":"9651:2:87","type":"","value":"32"}],"functionName":{"name":"mstore","nativeSrc":"9633:6:87","nodeType":"YulIdentifier","src":"9633:6:87"},"nativeSrc":"9633:21:87","nodeType":"YulFunctionCall","src":"9633:21:87"},"nativeSrc":"9633:21:87","nodeType":"YulExpressionStatement","src":"9633:21:87"},{"expression":{"arguments":[{"arguments":[{"name":"headStart","nativeSrc":"9674:9:87","nodeType":"YulIdentifier","src":"9674:9:87"},{"kind":"number","nativeSrc":"9685:2:87","nodeType":"YulLiteral","src":"9685:2:87","type":"","value":"32"}],"functionName":{"name":"add","nativeSrc":"9670:3:87","nodeType":"YulIdentifier","src":"9670:3:87"},"nativeSrc":"9670:18:87","nodeType":"YulFunctionCall","src":"9670:18:87"},{"kind":"number","nativeSrc":"9690:1:87","nodeType":"YulLiteral","src":"9690:1:87","type":"","value":"7"}],"functionName":{"name":"mstore","nativeSrc":"9663:6:87","nodeType":"YulIdentifier","src":"9663:6:87"},"nativeSrc":"9663:29:87","nodeType":"YulFunctionCall","src":"9663:29:87"},"nativeSrc":"9663:29:87","nodeType":"YulExpressionStatement","src":"9663:29:87"},{"expression":{"arguments":[{"arguments":[{"name":"headStart","nativeSrc":"9712:9:87","nodeType":"YulIdentifier","src":"9712:9:87"},{"kind":"number","nativeSrc":"9723:2:87","nodeType":"YulLiteral","src":"9723:2:87","type":"","value":"64"}],"functionName":{"name":"add","nativeSrc":"9708:3:87","nodeType":"YulIdentifier","src":"9708:3:87"},"nativeSrc":"9708:18:87","nodeType":"YulFunctionCall","src":"9708:18:87"},{"hexValue":"6465706f736974","kind":"string","nativeSrc":"9728:9:87","nodeType":"YulLiteral","src":"9728:9:87","type":"","value":"deposit"}],"functionName":{"name":"mstore","nativeSrc":"9701:6:87","nodeType":"YulIdentifier","src":"9701:6:87"},"nativeSrc":"9701:37:87","nodeType":"YulFunctionCall","src":"9701:37:87"},"nativeSrc":"9701:37:87","nodeType":"YulExpressionStatement","src":"9701:37:87"},{"nativeSrc":"9747:26:87","nodeType":"YulAssignment","src":"9747:26:87","value":{"arguments":[{"name":"headStart","nativeSrc":"9759:9:87","nodeType":"YulIdentifier","src":"9759:9:87"},{"kind":"number","nativeSrc":"9770:2:87","nodeType":"YulLiteral","src":"9770:2:87","type":"","value":"96"}],"functionName":{"name":"add","nativeSrc":"9755:3:87","nodeType":"YulIdentifier","src":"9755:3:87"},"nativeSrc":"9755:18:87","nodeType":"YulFunctionCall","src":"9755:18:87"},"variableNames":[{"name":"tail","nativeSrc":"9747:4:87","nodeType":"YulIdentifier","src":"9747:4:87"}]}]},"name":"abi_encode_tuple_t_stringliteral_48c73f681176fc7b3f9693986fd7b14581e8d540519e27400e88b8713932be01__to_t_string_memory_ptr__fromStack_reversed","nativeSrc":"9449:330:87","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nativeSrc":"9600:9:87","nodeType":"YulTypedName","src":"9600:9:87","type":""}],"returnVariables":[{"name":"tail","nativeSrc":"9614:4:87","nodeType":"YulTypedName","src":"9614:4:87","type":""}],"src":"9449:330:87"},{"body":{"nativeSrc":"9913:145:87","nodeType":"YulBlock","src":"9913:145:87","statements":[{"nativeSrc":"9923:26:87","nodeType":"YulAssignment","src":"9923:26:87","value":{"arguments":[{"name":"headStart","nativeSrc":"9935:9:87","nodeType":"YulIdentifier","src":"9935:9:87"},{"kind":"number","nativeSrc":"9946:2:87","nodeType":"YulLiteral","src":"9946:2:87","type":"","value":"64"}],"functionName":{"name":"add","nativeSrc":"9931:3:87","nodeType":"YulIdentifier","src":"9931:3:87"},"nativeSrc":"9931:18:87","nodeType":"YulFunctionCall","src":"9931:18:87"},"variableNames":[{"name":"tail","nativeSrc":"9923:4:87","nodeType":"YulIdentifier","src":"9923:4:87"}]},{"expression":{"arguments":[{"name":"headStart","nativeSrc":"9965:9:87","nodeType":"YulIdentifier","src":"9965:9:87"},{"arguments":[{"name":"value0","nativeSrc":"9980:6:87","nodeType":"YulIdentifier","src":"9980:6:87"},{"arguments":[{"arguments":[{"kind":"number","nativeSrc":"9996:3:87","nodeType":"YulLiteral","src":"9996:3:87","type":"","value":"160"},{"kind":"number","nativeSrc":"10001:1:87","nodeType":"YulLiteral","src":"10001:1:87","type":"","value":"1"}],"functionName":{"name":"shl","nativeSrc":"9992:3:87","nodeType":"YulIdentifier","src":"9992:3:87"},"nativeSrc":"9992:11:87","nodeType":"YulFunctionCall","src":"9992:11:87"},{"kind":"number","nativeSrc":"10005:1:87","nodeType":"YulLiteral","src":"10005:1:87","type":"","value":"1"}],"functionName":{"name":"sub","nativeSrc":"9988:3:87","nodeType":"YulIdentifier","src":"9988:3:87"},"nativeSrc":"9988:19:87","nodeType":"YulFunctionCall","src":"9988:19:87"}],"functionName":{"name":"and","nativeSrc":"9976:3:87","nodeType":"YulIdentifier","src":"9976:3:87"},"nativeSrc":"9976:32:87","nodeType":"YulFunctionCall","src":"9976:32:87"}],"functionName":{"name":"mstore","nativeSrc":"9958:6:87","nodeType":"YulIdentifier","src":"9958:6:87"},"nativeSrc":"9958:51:87","nodeType":"YulFunctionCall","src":"9958:51:87"},"nativeSrc":"9958:51:87","nodeType":"YulExpressionStatement","src":"9958:51:87"},{"expression":{"arguments":[{"arguments":[{"name":"headStart","nativeSrc":"10029:9:87","nodeType":"YulIdentifier","src":"10029:9:87"},{"kind":"number","nativeSrc":"10040:2:87","nodeType":"YulLiteral","src":"10040:2:87","type":"","value":"32"}],"functionName":{"name":"add","nativeSrc":"10025:3:87","nodeType":"YulIdentifier","src":"10025:3:87"},"nativeSrc":"10025:18:87","nodeType":"YulFunctionCall","src":"10025:18:87"},{"name":"value1","nativeSrc":"10045:6:87","nodeType":"YulIdentifier","src":"10045:6:87"}],"functionName":{"name":"mstore","nativeSrc":"10018:6:87","nodeType":"YulIdentifier","src":"10018:6:87"},"nativeSrc":"10018:34:87","nodeType":"YulFunctionCall","src":"10018:34:87"},"nativeSrc":"10018:34:87","nodeType":"YulExpressionStatement","src":"10018:34:87"}]},"name":"abi_encode_tuple_t_address_t_uint256__to_t_address_t_uint256__fromStack_reversed","nativeSrc":"9784:274:87","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nativeSrc":"9874:9:87","nodeType":"YulTypedName","src":"9874:9:87","type":""},{"name":"value1","nativeSrc":"9885:6:87","nodeType":"YulTypedName","src":"9885:6:87","type":""},{"name":"value0","nativeSrc":"9893:6:87","nodeType":"YulTypedName","src":"9893:6:87","type":""}],"returnVariables":[{"name":"tail","nativeSrc":"9904:4:87","nodeType":"YulTypedName","src":"9904:4:87","type":""}],"src":"9784:274:87"},{"body":{"nativeSrc":"10141:167:87","nodeType":"YulBlock","src":"10141:167:87","statements":[{"body":{"nativeSrc":"10187:16:87","nodeType":"YulBlock","src":"10187:16:87","statements":[{"expression":{"arguments":[{"kind":"number","nativeSrc":"10196:1:87","nodeType":"YulLiteral","src":"10196:1:87","type":"","value":"0"},{"kind":"number","nativeSrc":"10199:1:87","nodeType":"YulLiteral","src":"10199:1:87","type":"","value":"0"}],"functionName":{"name":"revert","nativeSrc":"10189:6:87","nodeType":"YulIdentifier","src":"10189:6:87"},"nativeSrc":"10189:12:87","nodeType":"YulFunctionCall","src":"10189:12:87"},"nativeSrc":"10189:12:87","nodeType":"YulExpressionStatement","src":"10189:12:87"}]},"condition":{"arguments":[{"arguments":[{"name":"dataEnd","nativeSrc":"10162:7:87","nodeType":"YulIdentifier","src":"10162:7:87"},{"name":"headStart","nativeSrc":"10171:9:87","nodeType":"YulIdentifier","src":"10171:9:87"}],"functionName":{"name":"sub","nativeSrc":"10158:3:87","nodeType":"YulIdentifier","src":"10158:3:87"},"nativeSrc":"10158:23:87","nodeType":"YulFunctionCall","src":"10158:23:87"},{"kind":"number","nativeSrc":"10183:2:87","nodeType":"YulLiteral","src":"10183:2:87","type":"","value":"32"}],"functionName":{"name":"slt","nativeSrc":"10154:3:87","nodeType":"YulIdentifier","src":"10154:3:87"},"nativeSrc":"10154:32:87","nodeType":"YulFunctionCall","src":"10154:32:87"},"nativeSrc":"10151:52:87","nodeType":"YulIf","src":"10151:52:87"},{"nativeSrc":"10212:29:87","nodeType":"YulVariableDeclaration","src":"10212:29:87","value":{"arguments":[{"name":"headStart","nativeSrc":"10231:9:87","nodeType":"YulIdentifier","src":"10231:9:87"}],"functionName":{"name":"mload","nativeSrc":"10225:5:87","nodeType":"YulIdentifier","src":"10225:5:87"},"nativeSrc":"10225:16:87","nodeType":"YulFunctionCall","src":"10225:16:87"},"variables":[{"name":"value","nativeSrc":"10216:5:87","nodeType":"YulTypedName","src":"10216:5:87","type":""}]},{"expression":{"arguments":[{"name":"value","nativeSrc":"10272:5:87","nodeType":"YulIdentifier","src":"10272:5:87"}],"functionName":{"name":"validator_revert_bool","nativeSrc":"10250:21:87","nodeType":"YulIdentifier","src":"10250:21:87"},"nativeSrc":"10250:28:87","nodeType":"YulFunctionCall","src":"10250:28:87"},"nativeSrc":"10250:28:87","nodeType":"YulExpressionStatement","src":"10250:28:87"},{"nativeSrc":"10287:15:87","nodeType":"YulAssignment","src":"10287:15:87","value":{"name":"value","nativeSrc":"10297:5:87","nodeType":"YulIdentifier","src":"10297:5:87"},"variableNames":[{"name":"value0","nativeSrc":"10287:6:87","nodeType":"YulIdentifier","src":"10287:6:87"}]}]},"name":"abi_decode_tuple_t_bool_fromMemory","nativeSrc":"10063:245:87","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nativeSrc":"10107:9:87","nodeType":"YulTypedName","src":"10107:9:87","type":""},{"name":"dataEnd","nativeSrc":"10118:7:87","nodeType":"YulTypedName","src":"10118:7:87","type":""}],"returnVariables":[{"name":"value0","nativeSrc":"10130:6:87","nodeType":"YulTypedName","src":"10130:6:87","type":""}],"src":"10063:245:87"},{"body":{"nativeSrc":"10394:103:87","nodeType":"YulBlock","src":"10394:103:87","statements":[{"body":{"nativeSrc":"10440:16:87","nodeType":"YulBlock","src":"10440:16:87","statements":[{"expression":{"arguments":[{"kind":"number","nativeSrc":"10449:1:87","nodeType":"YulLiteral","src":"10449:1:87","type":"","value":"0"},{"kind":"number","nativeSrc":"10452:1:87","nodeType":"YulLiteral","src":"10452:1:87","type":"","value":"0"}],"functionName":{"name":"revert","nativeSrc":"10442:6:87","nodeType":"YulIdentifier","src":"10442:6:87"},"nativeSrc":"10442:12:87","nodeType":"YulFunctionCall","src":"10442:12:87"},"nativeSrc":"10442:12:87","nodeType":"YulExpressionStatement","src":"10442:12:87"}]},"condition":{"arguments":[{"arguments":[{"name":"dataEnd","nativeSrc":"10415:7:87","nodeType":"YulIdentifier","src":"10415:7:87"},{"name":"headStart","nativeSrc":"10424:9:87","nodeType":"YulIdentifier","src":"10424:9:87"}],"functionName":{"name":"sub","nativeSrc":"10411:3:87","nodeType":"YulIdentifier","src":"10411:3:87"},"nativeSrc":"10411:23:87","nodeType":"YulFunctionCall","src":"10411:23:87"},{"kind":"number","nativeSrc":"10436:2:87","nodeType":"YulLiteral","src":"10436:2:87","type":"","value":"32"}],"functionName":{"name":"slt","nativeSrc":"10407:3:87","nodeType":"YulIdentifier","src":"10407:3:87"},"nativeSrc":"10407:32:87","nodeType":"YulFunctionCall","src":"10407:32:87"},"nativeSrc":"10404:52:87","nodeType":"YulIf","src":"10404:52:87"},{"nativeSrc":"10465:26:87","nodeType":"YulAssignment","src":"10465:26:87","value":{"arguments":[{"name":"headStart","nativeSrc":"10481:9:87","nodeType":"YulIdentifier","src":"10481:9:87"}],"functionName":{"name":"mload","nativeSrc":"10475:5:87","nodeType":"YulIdentifier","src":"10475:5:87"},"nativeSrc":"10475:16:87","nodeType":"YulFunctionCall","src":"10475:16:87"},"variableNames":[{"name":"value0","nativeSrc":"10465:6:87","nodeType":"YulIdentifier","src":"10465:6:87"}]}]},"name":"abi_decode_tuple_t_uint256_fromMemory","nativeSrc":"10313:184:87","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nativeSrc":"10360:9:87","nodeType":"YulTypedName","src":"10360:9:87","type":""},{"name":"dataEnd","nativeSrc":"10371:7:87","nodeType":"YulTypedName","src":"10371:7:87","type":""}],"returnVariables":[{"name":"value0","nativeSrc":"10383:6:87","nodeType":"YulTypedName","src":"10383:6:87","type":""}],"src":"10313:184:87"},{"body":{"nativeSrc":"10592:595:87","nodeType":"YulBlock","src":"10592:595:87","statements":[{"body":{"nativeSrc":"10638:16:87","nodeType":"YulBlock","src":"10638:16:87","statements":[{"expression":{"arguments":[{"kind":"number","nativeSrc":"10647:1:87","nodeType":"YulLiteral","src":"10647:1:87","type":"","value":"0"},{"kind":"number","nativeSrc":"10650:1:87","nodeType":"YulLiteral","src":"10650:1:87","type":"","value":"0"}],"functionName":{"name":"revert","nativeSrc":"10640:6:87","nodeType":"YulIdentifier","src":"10640:6:87"},"nativeSrc":"10640:12:87","nodeType":"YulFunctionCall","src":"10640:12:87"},"nativeSrc":"10640:12:87","nodeType":"YulExpressionStatement","src":"10640:12:87"}]},"condition":{"arguments":[{"arguments":[{"name":"dataEnd","nativeSrc":"10613:7:87","nodeType":"YulIdentifier","src":"10613:7:87"},{"name":"headStart","nativeSrc":"10622:9:87","nodeType":"YulIdentifier","src":"10622:9:87"}],"functionName":{"name":"sub","nativeSrc":"10609:3:87","nodeType":"YulIdentifier","src":"10609:3:87"},"nativeSrc":"10609:23:87","nodeType":"YulFunctionCall","src":"10609:23:87"},{"kind":"number","nativeSrc":"10634:2:87","nodeType":"YulLiteral","src":"10634:2:87","type":"","value":"32"}],"functionName":{"name":"slt","nativeSrc":"10605:3:87","nodeType":"YulIdentifier","src":"10605:3:87"},"nativeSrc":"10605:32:87","nodeType":"YulFunctionCall","src":"10605:32:87"},"nativeSrc":"10602:52:87","nodeType":"YulIf","src":"10602:52:87"},{"nativeSrc":"10663:30:87","nodeType":"YulVariableDeclaration","src":"10663:30:87","value":{"arguments":[{"name":"headStart","nativeSrc":"10683:9:87","nodeType":"YulIdentifier","src":"10683:9:87"}],"functionName":{"name":"mload","nativeSrc":"10677:5:87","nodeType":"YulIdentifier","src":"10677:5:87"},"nativeSrc":"10677:16:87","nodeType":"YulFunctionCall","src":"10677:16:87"},"variables":[{"name":"offset","nativeSrc":"10667:6:87","nodeType":"YulTypedName","src":"10667:6:87","type":""}]},{"body":{"nativeSrc":"10736:16:87","nodeType":"YulBlock","src":"10736:16:87","statements":[{"expression":{"arguments":[{"kind":"number","nativeSrc":"10745:1:87","nodeType":"YulLiteral","src":"10745:1:87","type":"","value":"0"},{"kind":"number","nativeSrc":"10748:1:87","nodeType":"YulLiteral","src":"10748:1:87","type":"","value":"0"}],"functionName":{"name":"revert","nativeSrc":"10738:6:87","nodeType":"YulIdentifier","src":"10738:6:87"},"nativeSrc":"10738:12:87","nodeType":"YulFunctionCall","src":"10738:12:87"},"nativeSrc":"10738:12:87","nodeType":"YulExpressionStatement","src":"10738:12:87"}]},"condition":{"arguments":[{"name":"offset","nativeSrc":"10708:6:87","nodeType":"YulIdentifier","src":"10708:6:87"},{"kind":"number","nativeSrc":"10716:18:87","nodeType":"YulLiteral","src":"10716:18:87","type":"","value":"0xffffffffffffffff"}],"functionName":{"name":"gt","nativeSrc":"10705:2:87","nodeType":"YulIdentifier","src":"10705:2:87"},"nativeSrc":"10705:30:87","nodeType":"YulFunctionCall","src":"10705:30:87"},"nativeSrc":"10702:50:87","nodeType":"YulIf","src":"10702:50:87"},{"nativeSrc":"10761:32:87","nodeType":"YulVariableDeclaration","src":"10761:32:87","value":{"arguments":[{"name":"headStart","nativeSrc":"10775:9:87","nodeType":"YulIdentifier","src":"10775:9:87"},{"name":"offset","nativeSrc":"10786:6:87","nodeType":"YulIdentifier","src":"10786:6:87"}],"functionName":{"name":"add","nativeSrc":"10771:3:87","nodeType":"YulIdentifier","src":"10771:3:87"},"nativeSrc":"10771:22:87","nodeType":"YulFunctionCall","src":"10771:22:87"},"variables":[{"name":"_1","nativeSrc":"10765:2:87","nodeType":"YulTypedName","src":"10765:2:87","type":""}]},{"body":{"nativeSrc":"10841:16:87","nodeType":"YulBlock","src":"10841:16:87","statements":[{"expression":{"arguments":[{"kind":"number","nativeSrc":"10850:1:87","nodeType":"YulLiteral","src":"10850:1:87","type":"","value":"0"},{"kind":"number","nativeSrc":"10853:1:87","nodeType":"YulLiteral","src":"10853:1:87","type":"","value":"0"}],"functionName":{"name":"revert","nativeSrc":"10843:6:87","nodeType":"YulIdentifier","src":"10843:6:87"},"nativeSrc":"10843:12:87","nodeType":"YulFunctionCall","src":"10843:12:87"},"nativeSrc":"10843:12:87","nodeType":"YulExpressionStatement","src":"10843:12:87"}]},"condition":{"arguments":[{"arguments":[{"arguments":[{"name":"_1","nativeSrc":"10820:2:87","nodeType":"YulIdentifier","src":"10820:2:87"},{"kind":"number","nativeSrc":"10824:4:87","nodeType":"YulLiteral","src":"10824:4:87","type":"","value":"0x1f"}],"functionName":{"name":"add","nativeSrc":"10816:3:87","nodeType":"YulIdentifier","src":"10816:3:87"},"nativeSrc":"10816:13:87","nodeType":"YulFunctionCall","src":"10816:13:87"},{"name":"dataEnd","nativeSrc":"10831:7:87","nodeType":"YulIdentifier","src":"10831:7:87"}],"functionName":{"name":"slt","nativeSrc":"10812:3:87","nodeType":"YulIdentifier","src":"10812:3:87"},"nativeSrc":"10812:27:87","nodeType":"YulFunctionCall","src":"10812:27:87"}],"functionName":{"name":"iszero","nativeSrc":"10805:6:87","nodeType":"YulIdentifier","src":"10805:6:87"},"nativeSrc":"10805:35:87","nodeType":"YulFunctionCall","src":"10805:35:87"},"nativeSrc":"10802:55:87","nodeType":"YulIf","src":"10802:55:87"},{"nativeSrc":"10866:23:87","nodeType":"YulVariableDeclaration","src":"10866:23:87","value":{"arguments":[{"name":"_1","nativeSrc":"10886:2:87","nodeType":"YulIdentifier","src":"10886:2:87"}],"functionName":{"name":"mload","nativeSrc":"10880:5:87","nodeType":"YulIdentifier","src":"10880:5:87"},"nativeSrc":"10880:9:87","nodeType":"YulFunctionCall","src":"10880:9:87"},"variables":[{"name":"length","nativeSrc":"10870:6:87","nodeType":"YulTypedName","src":"10870:6:87","type":""}]},{"nativeSrc":"10898:65:87","nodeType":"YulVariableDeclaration","src":"10898:65:87","value":{"arguments":[{"arguments":[{"name":"length","nativeSrc":"10955:6:87","nodeType":"YulIdentifier","src":"10955:6:87"}],"functionName":{"name":"array_allocation_size_bytes","nativeSrc":"10927:27:87","nodeType":"YulIdentifier","src":"10927:27:87"},"nativeSrc":"10927:35:87","nodeType":"YulFunctionCall","src":"10927:35:87"}],"functionName":{"name":"allocate_memory","nativeSrc":"10911:15:87","nodeType":"YulIdentifier","src":"10911:15:87"},"nativeSrc":"10911:52:87","nodeType":"YulFunctionCall","src":"10911:52:87"},"variables":[{"name":"array","nativeSrc":"10902:5:87","nodeType":"YulTypedName","src":"10902:5:87","type":""}]},{"expression":{"arguments":[{"name":"array","nativeSrc":"10979:5:87","nodeType":"YulIdentifier","src":"10979:5:87"},{"name":"length","nativeSrc":"10986:6:87","nodeType":"YulIdentifier","src":"10986:6:87"}],"functionName":{"name":"mstore","nativeSrc":"10972:6:87","nodeType":"YulIdentifier","src":"10972:6:87"},"nativeSrc":"10972:21:87","nodeType":"YulFunctionCall","src":"10972:21:87"},"nativeSrc":"10972:21:87","nodeType":"YulExpressionStatement","src":"10972:21:87"},{"body":{"nativeSrc":"11043:16:87","nodeType":"YulBlock","src":"11043:16:87","statements":[{"expression":{"arguments":[{"kind":"number","nativeSrc":"11052:1:87","nodeType":"YulLiteral","src":"11052:1:87","type":"","value":"0"},{"kind":"number","nativeSrc":"11055:1:87","nodeType":"YulLiteral","src":"11055:1:87","type":"","value":"0"}],"functionName":{"name":"revert","nativeSrc":"11045:6:87","nodeType":"YulIdentifier","src":"11045:6:87"},"nativeSrc":"11045:12:87","nodeType":"YulFunctionCall","src":"11045:12:87"},"nativeSrc":"11045:12:87","nodeType":"YulExpressionStatement","src":"11045:12:87"}]},"condition":{"arguments":[{"arguments":[{"arguments":[{"name":"_1","nativeSrc":"11016:2:87","nodeType":"YulIdentifier","src":"11016:2:87"},{"name":"length","nativeSrc":"11020:6:87","nodeType":"YulIdentifier","src":"11020:6:87"}],"functionName":{"name":"add","nativeSrc":"11012:3:87","nodeType":"YulIdentifier","src":"11012:3:87"},"nativeSrc":"11012:15:87","nodeType":"YulFunctionCall","src":"11012:15:87"},{"kind":"number","nativeSrc":"11029:2:87","nodeType":"YulLiteral","src":"11029:2:87","type":"","value":"32"}],"functionName":{"name":"add","nativeSrc":"11008:3:87","nodeType":"YulIdentifier","src":"11008:3:87"},"nativeSrc":"11008:24:87","nodeType":"YulFunctionCall","src":"11008:24:87"},{"name":"dataEnd","nativeSrc":"11034:7:87","nodeType":"YulIdentifier","src":"11034:7:87"}],"functionName":{"name":"gt","nativeSrc":"11005:2:87","nodeType":"YulIdentifier","src":"11005:2:87"},"nativeSrc":"11005:37:87","nodeType":"YulFunctionCall","src":"11005:37:87"},"nativeSrc":"11002:57:87","nodeType":"YulIf","src":"11002:57:87"},{"expression":{"arguments":[{"arguments":[{"name":"array","nativeSrc":"11078:5:87","nodeType":"YulIdentifier","src":"11078:5:87"},{"kind":"number","nativeSrc":"11085:2:87","nodeType":"YulLiteral","src":"11085:2:87","type":"","value":"32"}],"functionName":{"name":"add","nativeSrc":"11074:3:87","nodeType":"YulIdentifier","src":"11074:3:87"},"nativeSrc":"11074:14:87","nodeType":"YulFunctionCall","src":"11074:14:87"},{"arguments":[{"name":"_1","nativeSrc":"11094:2:87","nodeType":"YulIdentifier","src":"11094:2:87"},{"kind":"number","nativeSrc":"11098:2:87","nodeType":"YulLiteral","src":"11098:2:87","type":"","value":"32"}],"functionName":{"name":"add","nativeSrc":"11090:3:87","nodeType":"YulIdentifier","src":"11090:3:87"},"nativeSrc":"11090:11:87","nodeType":"YulFunctionCall","src":"11090:11:87"},{"name":"length","nativeSrc":"11103:6:87","nodeType":"YulIdentifier","src":"11103:6:87"}],"functionName":{"name":"mcopy","nativeSrc":"11068:5:87","nodeType":"YulIdentifier","src":"11068:5:87"},"nativeSrc":"11068:42:87","nodeType":"YulFunctionCall","src":"11068:42:87"},"nativeSrc":"11068:42:87","nodeType":"YulExpressionStatement","src":"11068:42:87"},{"expression":{"arguments":[{"arguments":[{"arguments":[{"name":"array","nativeSrc":"11134:5:87","nodeType":"YulIdentifier","src":"11134:5:87"},{"name":"length","nativeSrc":"11141:6:87","nodeType":"YulIdentifier","src":"11141:6:87"}],"functionName":{"name":"add","nativeSrc":"11130:3:87","nodeType":"YulIdentifier","src":"11130:3:87"},"nativeSrc":"11130:18:87","nodeType":"YulFunctionCall","src":"11130:18:87"},{"kind":"number","nativeSrc":"11150:2:87","nodeType":"YulLiteral","src":"11150:2:87","type":"","value":"32"}],"functionName":{"name":"add","nativeSrc":"11126:3:87","nodeType":"YulIdentifier","src":"11126:3:87"},"nativeSrc":"11126:27:87","nodeType":"YulFunctionCall","src":"11126:27:87"},{"kind":"number","nativeSrc":"11155:1:87","nodeType":"YulLiteral","src":"11155:1:87","type":"","value":"0"}],"functionName":{"name":"mstore","nativeSrc":"11119:6:87","nodeType":"YulIdentifier","src":"11119:6:87"},"nativeSrc":"11119:38:87","nodeType":"YulFunctionCall","src":"11119:38:87"},"nativeSrc":"11119:38:87","nodeType":"YulExpressionStatement","src":"11119:38:87"},{"nativeSrc":"11166:15:87","nodeType":"YulAssignment","src":"11166:15:87","value":{"name":"array","nativeSrc":"11176:5:87","nodeType":"YulIdentifier","src":"11176:5:87"},"variableNames":[{"name":"value0","nativeSrc":"11166:6:87","nodeType":"YulIdentifier","src":"11166:6:87"}]}]},"name":"abi_decode_tuple_t_bytes_memory_ptr_fromMemory","nativeSrc":"10502:685:87","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nativeSrc":"10558:9:87","nodeType":"YulTypedName","src":"10558:9:87","type":""},{"name":"dataEnd","nativeSrc":"10569:7:87","nodeType":"YulTypedName","src":"10569:7:87","type":""}],"returnVariables":[{"name":"value0","nativeSrc":"10581:6:87","nodeType":"YulTypedName","src":"10581:6:87","type":""}],"src":"10502:685:87"}]},"contents":"{\n    { }\n    function panic_error_0x41()\n    {\n        mstore(0, shl(224, 0x4e487b71))\n        mstore(4, 0x41)\n        revert(0, 0x24)\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, 0xffffffffffffffff), lt(newFreePtr, memPtr)) { panic_error_0x41() }\n        mstore(64, newFreePtr)\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), not(31)), 0x20)\n    }\n    function abi_decode_bytes(offset, end) -> array\n    {\n        if iszero(slt(add(offset, 0x1f), end)) { revert(0, 0) }\n        let length := calldataload(offset)\n        let array_1 := allocate_memory(array_allocation_size_bytes(length))\n        mstore(array_1, length)\n        if gt(add(add(offset, length), 0x20), end) { revert(0, 0) }\n        calldatacopy(add(array_1, 0x20), add(offset, 0x20), length)\n        mstore(add(add(array_1, length), 0x20), 0)\n        array := array_1\n    }\n    function abi_decode_tuple_t_uint8t_bytes_memory_ptr(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, 0xff))) { revert(0, 0) }\n        value0 := value\n        let offset := calldataload(add(headStart, 32))\n        if gt(offset, 0xffffffffffffffff) { revert(0, 0) }\n        value1 := abi_decode_bytes(add(headStart, offset), dataEnd)\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        let length := mload(value0)\n        mstore(add(headStart, 32), length)\n        mcopy(add(headStart, 64), add(value0, 32), length)\n        mstore(add(add(headStart, length), 64), 0)\n        tail := add(add(headStart, and(add(length, 31), not(31))), 64)\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_address(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, sub(shl(160, 1), 1)))) { revert(0, 0) }\n        value0 := value\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_bool(value)\n    {\n        if iszero(eq(value, iszero(iszero(value)))) { revert(0, 0) }\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_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_struct$_DummyStorage_$20949_memory_ptr__to_t_struct$_DummyStorage_$20949_memory_ptr__fromStack_reversed(headStart, value0) -> tail\n    {\n        tail := add(headStart, 128)\n        mstore(headStart, iszero(iszero(mload(value0))))\n        mstore(add(headStart, 0x20), iszero(iszero(mload(add(value0, 0x20)))))\n        mstore(add(headStart, 0x40), iszero(iszero(mload(add(value0, 0x40)))))\n        mstore(add(headStart, 0x60), iszero(iszero(mload(add(value0, 0x60)))))\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, sub(shl(160, 1), 1)))\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        if gt(offset, 0xffffffffffffffff) { revert(0, 0) }\n        value0 := abi_decode_bytes(add(headStart, offset), dataEnd)\n    }\n    function panic_error_0x21()\n    {\n        mstore(0, shl(224, 0x4e487b71))\n        mstore(4, 0x21)\n        revert(0, 0x24)\n    }\n    function abi_decode_tuple_t_struct$_DummyStorage_$20949_memory_ptr_fromMemory(headStart, dataEnd) -> value0\n    {\n        let _1 := slt(sub(dataEnd, headStart), 128)\n        if _1 { revert(0, 0) }\n        _1 := 0\n        let memPtr := 0\n        memPtr := mload(64)\n        let newFreePtr := add(memPtr, 128)\n        if or(gt(newFreePtr, 0xffffffffffffffff), lt(newFreePtr, memPtr)) { panic_error_0x41() }\n        mstore(64, newFreePtr)\n        let value := mload(headStart)\n        validator_revert_bool(value)\n        mstore(memPtr, value)\n        let value_1 := mload(add(headStart, 32))\n        validator_revert_bool(value_1)\n        mstore(add(memPtr, 32), value_1)\n        let value_2 := mload(add(headStart, 64))\n        validator_revert_bool(value_2)\n        mstore(add(memPtr, 64), value_2)\n        let value_3 := mload(add(headStart, 96))\n        validator_revert_bool(value_3)\n        mstore(add(memPtr, 96), value_3)\n        value0 := memPtr\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 array_dataslot_bytes_storage(ptr) -> data\n    {\n        mstore(0, ptr)\n        data := keccak256(0, 0x20)\n    }\n    function clean_up_bytearray_end_slots_bytes_storage(array, len, startIndex)\n    {\n        if gt(len, 31)\n        {\n            mstore(0, array)\n            let data := keccak256(0, 0x20)\n            let deleteStart := add(data, shr(5, add(startIndex, 31)))\n            if lt(startIndex, 0x20) { deleteStart := data }\n            let _1 := add(data, shr(5, add(len, 31)))\n            let start := deleteStart\n            for { } lt(start, _1) { start := add(start, 1) }\n            { sstore(start, 0) }\n        }\n    }\n    function extract_used_part_and_set_length_of_short_byte_array(data, len) -> used\n    {\n        used := or(and(data, not(shr(shl(3, len), not(0)))), shl(1, len))\n    }\n    function copy_byte_array_to_storage_from_t_bytes_memory_ptr_to_t_bytes_storage(slot, src)\n    {\n        let newLen := mload(src)\n        if gt(newLen, 0xffffffffffffffff) { panic_error_0x41() }\n        clean_up_bytearray_end_slots_bytes_storage(slot, extract_byte_array_length(sload(slot)), newLen)\n        let srcOffset := 0\n        srcOffset := 0x20\n        switch gt(newLen, 31)\n        case 1 {\n            let loopEnd := and(newLen, not(31))\n            let dstPtr := array_dataslot_bytes_storage(slot)\n            let i := 0\n            for { } lt(i, loopEnd) { i := add(i, 0x20) }\n            {\n                sstore(dstPtr, mload(add(src, srcOffset)))\n                dstPtr := add(dstPtr, 1)\n                srcOffset := add(srcOffset, 0x20)\n            }\n            if lt(loopEnd, newLen)\n            {\n                let lastValue := mload(add(src, srcOffset))\n                sstore(dstPtr, and(lastValue, not(shr(and(shl(3, newLen), 248), not(0)))))\n            }\n            sstore(slot, add(shl(1, newLen), 1))\n        }\n        default {\n            let value := 0\n            if newLen\n            {\n                value := mload(add(src, srcOffset))\n            }\n            sstore(slot, extract_used_part_and_set_length_of_short_byte_array(value, newLen))\n        }\n    }\n    function abi_encode_tuple_t_stringliteral_855511cc3694f64379908437d6d64458dc76d02482052bfb8a5b33a72c054c77__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), \"withdraw\")\n        tail := add(headStart, 96)\n    }\n    function abi_encode_tuple_t_contract$_IERC20_$8679_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        mstore(headStart, and(value0, sub(shl(160, 1), 1)))\n        mstore(add(headStart, 32), and(value1, sub(shl(160, 1), 1)))\n        mstore(add(headStart, 64), value2)\n    }\n    function abi_encode_tuple_t_stringliteral_33f3b0f27639a8cf87e42127aff3d5fb0ceefb0ec7f418bbae25f31ac364ef39__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), \"disconnect\")\n        tail := add(headStart, 96)\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_stringliteral_6cc4cd8a2857f640feca9d434996a8bd85fc3342a4342aa8c9e794d5d512b324__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), \"connect\")\n        tail := add(headStart, 96)\n    }\n    function abi_encode_tuple_t_stringliteral_48c73f681176fc7b3f9693986fd7b14581e8d540519e27400e88b8713932be01__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), \"deposit\")\n        tail := add(headStart, 96)\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, sub(shl(160, 1), 1)))\n        mstore(add(headStart, 32), value1)\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_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_bytes_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 length := mload(_1)\n        let array := allocate_memory(array_allocation_size_bytes(length))\n        mstore(array, length)\n        if gt(add(add(_1, length), 32), dataEnd) { revert(0, 0) }\n        mcopy(add(array, 32), add(_1, 32), length)\n        mstore(add(add(array, length), 32), 0)\n        value0 := array\n    }\n}","id":87,"language":"Yul","name":"#utility.yul"}],"immutableReferences":{"20918":[{"length":32,"start":446},{"length":32,"start":843},{"length":32,"start":1635},{"length":32,"start":1879},{"length":32,"start":2050}],"20930":[{"length":32,"start":300},{"length":32,"start":625},{"length":32,"start":1338},{"length":32,"start":2136},{"length":32,"start":2372}],"20932":[{"length":32,"start":371},{"length":32,"start":896},{"length":32,"start":1588},{"length":32,"start":1839},{"length":32,"start":2008}]},"linkReferences":{},"object":"608060405234801561000f575f5ffd5b50600436106100b1575f3560e01c8063852958771161006e578063852958771461016e5780639c4667a2146101ad5780639cd47128146101e0578063b6b55f25146101f3578063ce96cb7714610206578063f3e0ffbf14610219575f5ffd5b80630981b1c2146100b55780632e1a7d4d146100de578063402d267d146100f35780635a117456146101145780635b9a4c3514610127578063728d6fd81461014e575b5f5ffd5b6100c86100c3366004610a8e565b61022c565b6040516100d59190610ae0565b60405180910390f35b6100f16100ec366004610b15565b6102ea565b005b610106610101366004610b2c565b610413565b6040519081526020016100d5565b6100f1610122366004610b69565b610435565b6101067f000000000000000000000000000000000000000000000000000000000000000081565b61016161015c366004610b2c565b6104ae565b6040516100d59190610b84565b6101957f000000000000000000000000000000000000000000000000000000000000000081565b6040516001600160a01b0390911681526020016100d5565b6101956101bb366004610b2c565b507f000000000000000000000000000000000000000000000000000000000000000090565b6100f16101ee366004610bb7565b6104e0565b6100f1610201366004610b15565b6105d9565b610106610214366004610b2c565b6106fe565b610106610227366004610b2c565b6107c1565b60605f60ff8416801561024157610241610bf1565b90505f81801561025357610253610bf1565b036102d4575f8380602001905181019061026d9190610c05565b90507f000000000000000000000000000000000000000000000000000000000000000061029a8582610d0e565b507f973e473eebb9c0190db312a86661d30a6e022561e4049e3850ddc7e5d24ba9d1816040516102ca9190610b84565b60405180910390a1505b505060408051602081019091525f815292915050565b6102f2610833565b606001511561033457604051633c47dfc360e21b8152602060048201526008602482015267776974686472617760c01b60448201526064015b60405180910390fd5b6040516352f950a960e11b81526001600160a01b037f000000000000000000000000000000000000000000000000000000000000000081166004830152306024830152604482018390527f0000000000000000000000000000000000000000000000000000000000000000169063a5f2a152906064015f604051808303815f87803b1580156103c1575f5ffd5b505af11580156103d3573d5f5f3e3d5ffd5b505050507f5b6b431d4476a211bb7d41c20d1aab9ae2321deee0d20be3d9fc9b1093fa6e3d8160405161040891815260200190565b60405180910390a150565b5f61041d82610916565b604001511561042d57505f919050565b505f19919050565b61043d610833565b602001511561047c57604051633c47dfc360e21b815260206004820152600a602482015269191a5cd8dbdb9b9958dd60b21b604482015260640161032b565b60405181151581527f1b5482bdd0870e5877dfba574a78890a9ed35fa5fe455e49d0ee06d40014d15e90602001610408565b604080516080810182525f8082526020820181905291810182905260608101919091526104da82610916565b92915050565b5f818060200190518101906104f59190610c05565b905081518160405160200161050a9190610b84565b6040516020818303038152906040525114610538576040516350701b6160e01b815260040160405180910390fd5b7f00000000000000000000000000000000000000000000000000000000000000006105638382610d0e565b5080511561059e57604051633c47dfc360e21b815260206004820152600760248201526618dbdb9b9958dd60ca1b604482015260640161032b565b7f71149fec4141134c52c251b737df39ca5dd7286b51b86a0b68b2dd900243c0ce826040516105cd9190610ae0565b60405180910390a15050565b6105e1610833565b604001511561061d57604051633c47dfc360e21b815260206004820152600760248201526619195c1bdcda5d60ca1b604482015260640161032b565b60405163a9059cbb60e01b81526001600160a01b037f000000000000000000000000000000000000000000000000000000000000000081166004830152602482018390527f0000000000000000000000000000000000000000000000000000000000000000169063a9059cbb906044016020604051808303815f875af11580156106a9573d5f5f3e3d5ffd5b505050506040513d601f19601f820116820180604052508101906106cd9190610dc9565b506040518181527f4d6ce1e535dbade1c23defba91e23b8f791ce5edc0cc320257a2b364e4e3842690602001610408565b5f61070882610916565b606001511561071857505f919050565b6040516370a0823160e01b81526001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000811660048301527f000000000000000000000000000000000000000000000000000000000000000016906370a08231906024015b602060405180830381865afa15801561079d573d5f5f3e3d5ffd5b505050506040513d601f19601f820116820180604052508101906104da9190610de4565b6040516370a0823160e01b81526001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000811660048301525f917f0000000000000000000000000000000000000000000000000000000000000000909116906370a0823190602401610782565b604080516080810182525f8082526020820181905291810182905260608101919091527f0000000000000000000000000000000000000000000000000000000000000000805461088290610c8a565b80601f01602080910402602001604051908101604052809291908181526020018280546108ae90610c8a565b80156108f95780601f106108d0576101008083540402835291602001916108f9565b820191905f5260205f20905b8154815290600101906020018083116108dc57829003601f168201915b50505050508060200190518101906109119190610c05565b905090565b604080516080810182525f80825260208201819052818301819052606082015290516347e5753360e01b81527f000000000000000000000000000000000000000000000000000000000000000060048201526001600160a01b038316906347e57533906024015f60405180830381865afa158015610996573d5f5f3e3d5ffd5b505050506040513d5f823e601f3d908101601f191682016040526109bd9190810190610dfb565b8060200190518101906104da9190610c05565b634e487b7160e01b5f52604160045260245ffd5b604051601f8201601f1916810167ffffffffffffffff81118282101715610a0d57610a0d6109d0565b604052919050565b5f67ffffffffffffffff821115610a2e57610a2e6109d0565b50601f01601f191660200190565b5f82601f830112610a4b575f5ffd5b8135610a5e610a5982610a15565b6109e4565b818152846020838601011115610a72575f5ffd5b816020850160208301375f918101602001919091529392505050565b5f5f60408385031215610a9f575f5ffd5b823560ff81168114610aaf575f5ffd5b9150602083013567ffffffffffffffff811115610aca575f5ffd5b610ad685828601610a3c565b9150509250929050565b602081525f82518060208401528060208501604085015e5f604082850101526040601f19601f83011684010191505092915050565b5f60208284031215610b25575f5ffd5b5035919050565b5f60208284031215610b3c575f5ffd5b81356001600160a01b0381168114610b52575f5ffd5b9392505050565b8015158114610b66575f5ffd5b50565b5f60208284031215610b79575f5ffd5b8135610b5281610b59565b81511515815260208083015115159082015260408083015115159082015260609182015115159181019190915260800190565b5f60208284031215610bc7575f5ffd5b813567ffffffffffffffff811115610bdd575f5ffd5b610be984828501610a3c565b949350505050565b634e487b7160e01b5f52602160045260245ffd5b5f6080828403128015610c16575f5ffd5b506040516080810167ffffffffffffffff81118282101715610c3a57610c3a6109d0565b6040528251610c4881610b59565b81526020830151610c5881610b59565b60208201526040830151610c6b81610b59565b60408201526060830151610c7e81610b59565b60608201529392505050565b600181811c90821680610c9e57607f821691505b602082108103610cbc57634e487b7160e01b5f52602260045260245ffd5b50919050565b601f821115610d0957805f5260205f20601f840160051c81016020851015610ce75750805b601f840160051c820191505b81811015610d06575f8155600101610cf3565b50505b505050565b815167ffffffffffffffff811115610d2857610d286109d0565b610d3c81610d368454610c8a565b84610cc2565b6020601f821160018114610d6e575f8315610d575750848201515b5f19600385901b1c1916600184901b178455610d06565b5f84815260208120601f198516915b82811015610d9d5787850151825560209485019460019092019101610d7d565b5084821015610dba57868401515f19600387901b60f8161c191681555b50505050600190811b01905550565b5f60208284031215610dd9575f5ffd5b8151610b5281610b59565b5f60208284031215610df4575f5ffd5b5051919050565b5f60208284031215610e0b575f5ffd5b815167ffffffffffffffff811115610e21575f5ffd5b8201601f81018413610e31575f5ffd5b8051610e3f610a5982610a15565b818152856020838501011115610e53575f5ffd5b8160208401602083015e5f9181016020019190915294935050505056fea2646970667358221220c96e83830a27f9e74f0cd4e43860b4da31bcd37a88483b148b5c3825251cb9e064736f6c634300081e0033","opcodes":"PUSH1 0x80 PUSH1 0x40 MSTORE CALLVALUE DUP1 ISZERO PUSH2 0xF JUMPI PUSH0 PUSH0 REVERT JUMPDEST POP PUSH1 0x4 CALLDATASIZE LT PUSH2 0xB1 JUMPI PUSH0 CALLDATALOAD PUSH1 0xE0 SHR DUP1 PUSH4 0x85295877 GT PUSH2 0x6E JUMPI DUP1 PUSH4 0x85295877 EQ PUSH2 0x16E JUMPI DUP1 PUSH4 0x9C4667A2 EQ PUSH2 0x1AD JUMPI DUP1 PUSH4 0x9CD47128 EQ PUSH2 0x1E0 JUMPI DUP1 PUSH4 0xB6B55F25 EQ PUSH2 0x1F3 JUMPI DUP1 PUSH4 0xCE96CB77 EQ PUSH2 0x206 JUMPI DUP1 PUSH4 0xF3E0FFBF EQ PUSH2 0x219 JUMPI PUSH0 PUSH0 REVERT JUMPDEST DUP1 PUSH4 0x981B1C2 EQ PUSH2 0xB5 JUMPI DUP1 PUSH4 0x2E1A7D4D EQ PUSH2 0xDE JUMPI DUP1 PUSH4 0x402D267D EQ PUSH2 0xF3 JUMPI DUP1 PUSH4 0x5A117456 EQ PUSH2 0x114 JUMPI DUP1 PUSH4 0x5B9A4C35 EQ PUSH2 0x127 JUMPI DUP1 PUSH4 0x728D6FD8 EQ PUSH2 0x14E JUMPI JUMPDEST PUSH0 PUSH0 REVERT JUMPDEST PUSH2 0xC8 PUSH2 0xC3 CALLDATASIZE PUSH1 0x4 PUSH2 0xA8E JUMP JUMPDEST PUSH2 0x22C JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0xD5 SWAP2 SWAP1 PUSH2 0xAE0 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST PUSH2 0xF1 PUSH2 0xEC CALLDATASIZE PUSH1 0x4 PUSH2 0xB15 JUMP JUMPDEST PUSH2 0x2EA JUMP JUMPDEST STOP JUMPDEST PUSH2 0x106 PUSH2 0x101 CALLDATASIZE PUSH1 0x4 PUSH2 0xB2C JUMP JUMPDEST PUSH2 0x413 JUMP JUMPDEST PUSH1 0x40 MLOAD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH2 0xD5 JUMP JUMPDEST PUSH2 0xF1 PUSH2 0x122 CALLDATASIZE PUSH1 0x4 PUSH2 0xB69 JUMP JUMPDEST PUSH2 0x435 JUMP JUMPDEST PUSH2 0x106 PUSH32 0x0 DUP2 JUMP JUMPDEST PUSH2 0x161 PUSH2 0x15C CALLDATASIZE PUSH1 0x4 PUSH2 0xB2C JUMP JUMPDEST PUSH2 0x4AE JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0xD5 SWAP2 SWAP1 PUSH2 0xB84 JUMP JUMPDEST PUSH2 0x195 PUSH32 0x0 DUP2 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP1 SWAP2 AND DUP2 MSTORE PUSH1 0x20 ADD PUSH2 0xD5 JUMP JUMPDEST PUSH2 0x195 PUSH2 0x1BB CALLDATASIZE PUSH1 0x4 PUSH2 0xB2C JUMP JUMPDEST POP PUSH32 0x0 SWAP1 JUMP JUMPDEST PUSH2 0xF1 PUSH2 0x1EE CALLDATASIZE PUSH1 0x4 PUSH2 0xBB7 JUMP JUMPDEST PUSH2 0x4E0 JUMP JUMPDEST PUSH2 0xF1 PUSH2 0x201 CALLDATASIZE PUSH1 0x4 PUSH2 0xB15 JUMP JUMPDEST PUSH2 0x5D9 JUMP JUMPDEST PUSH2 0x106 PUSH2 0x214 CALLDATASIZE PUSH1 0x4 PUSH2 0xB2C JUMP JUMPDEST PUSH2 0x6FE JUMP JUMPDEST PUSH2 0x106 PUSH2 0x227 CALLDATASIZE PUSH1 0x4 PUSH2 0xB2C JUMP JUMPDEST PUSH2 0x7C1 JUMP JUMPDEST PUSH1 0x60 PUSH0 PUSH1 0xFF DUP5 AND DUP1 ISZERO PUSH2 0x241 JUMPI PUSH2 0x241 PUSH2 0xBF1 JUMP JUMPDEST SWAP1 POP PUSH0 DUP2 DUP1 ISZERO PUSH2 0x253 JUMPI PUSH2 0x253 PUSH2 0xBF1 JUMP JUMPDEST SUB PUSH2 0x2D4 JUMPI PUSH0 DUP4 DUP1 PUSH1 0x20 ADD SWAP1 MLOAD DUP2 ADD SWAP1 PUSH2 0x26D SWAP2 SWAP1 PUSH2 0xC05 JUMP JUMPDEST SWAP1 POP PUSH32 0x0 PUSH2 0x29A DUP6 DUP3 PUSH2 0xD0E JUMP JUMPDEST POP PUSH32 0x973E473EEBB9C0190DB312A86661D30A6E022561E4049E3850DDC7E5D24BA9D1 DUP2 PUSH1 0x40 MLOAD PUSH2 0x2CA SWAP2 SWAP1 PUSH2 0xB84 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 LOG1 POP JUMPDEST POP POP PUSH1 0x40 DUP1 MLOAD PUSH1 0x20 DUP2 ADD SWAP1 SWAP2 MSTORE PUSH0 DUP2 MSTORE SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH2 0x2F2 PUSH2 0x833 JUMP JUMPDEST PUSH1 0x60 ADD MLOAD ISZERO PUSH2 0x334 JUMPI PUSH1 0x40 MLOAD PUSH4 0x3C47DFC3 PUSH1 0xE2 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x8 PUSH1 0x24 DUP3 ADD MSTORE PUSH8 0x7769746864726177 PUSH1 0xC0 SHL PUSH1 0x44 DUP3 ADD MSTORE PUSH1 0x64 ADD JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH1 0x40 MLOAD PUSH4 0x52F950A9 PUSH1 0xE1 SHL DUP2 MSTORE PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB PUSH32 0x0 DUP2 AND PUSH1 0x4 DUP4 ADD MSTORE ADDRESS PUSH1 0x24 DUP4 ADD MSTORE PUSH1 0x44 DUP3 ADD DUP4 SWAP1 MSTORE PUSH32 0x0 AND SWAP1 PUSH4 0xA5F2A152 SWAP1 PUSH1 0x64 ADD PUSH0 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 PUSH0 DUP8 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x3C1 JUMPI PUSH0 PUSH0 REVERT JUMPDEST POP GAS CALL ISZERO DUP1 ISZERO PUSH2 0x3D3 JUMPI RETURNDATASIZE PUSH0 PUSH0 RETURNDATACOPY RETURNDATASIZE PUSH0 REVERT JUMPDEST POP POP POP POP PUSH32 0x5B6B431D4476A211BB7D41C20D1AAB9AE2321DEEE0D20BE3D9FC9B1093FA6E3D DUP2 PUSH1 0x40 MLOAD PUSH2 0x408 SWAP2 DUP2 MSTORE PUSH1 0x20 ADD SWAP1 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 LOG1 POP JUMP JUMPDEST PUSH0 PUSH2 0x41D DUP3 PUSH2 0x916 JUMP JUMPDEST PUSH1 0x40 ADD MLOAD ISZERO PUSH2 0x42D JUMPI POP PUSH0 SWAP2 SWAP1 POP JUMP JUMPDEST POP PUSH0 NOT SWAP2 SWAP1 POP JUMP JUMPDEST PUSH2 0x43D PUSH2 0x833 JUMP JUMPDEST PUSH1 0x20 ADD MLOAD ISZERO PUSH2 0x47C JUMPI PUSH1 0x40 MLOAD PUSH4 0x3C47DFC3 PUSH1 0xE2 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0xA PUSH1 0x24 DUP3 ADD MSTORE PUSH10 0x191A5CD8DBDB9B9958DD PUSH1 0xB2 SHL PUSH1 0x44 DUP3 ADD MSTORE PUSH1 0x64 ADD PUSH2 0x32B JUMP JUMPDEST PUSH1 0x40 MLOAD DUP2 ISZERO ISZERO DUP2 MSTORE PUSH32 0x1B5482BDD0870E5877DFBA574A78890A9ED35FA5FE455E49D0EE06D40014D15E SWAP1 PUSH1 0x20 ADD PUSH2 0x408 JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH1 0x80 DUP2 ADD DUP3 MSTORE PUSH0 DUP1 DUP3 MSTORE PUSH1 0x20 DUP3 ADD DUP2 SWAP1 MSTORE SWAP2 DUP2 ADD DUP3 SWAP1 MSTORE PUSH1 0x60 DUP2 ADD SWAP2 SWAP1 SWAP2 MSTORE PUSH2 0x4DA DUP3 PUSH2 0x916 JUMP JUMPDEST SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH0 DUP2 DUP1 PUSH1 0x20 ADD SWAP1 MLOAD DUP2 ADD SWAP1 PUSH2 0x4F5 SWAP2 SWAP1 PUSH2 0xC05 JUMP JUMPDEST SWAP1 POP DUP2 MLOAD DUP2 PUSH1 0x40 MLOAD PUSH1 0x20 ADD PUSH2 0x50A SWAP2 SWAP1 PUSH2 0xB84 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH1 0x20 DUP2 DUP4 SUB SUB DUP2 MSTORE SWAP1 PUSH1 0x40 MSTORE MLOAD EQ PUSH2 0x538 JUMPI PUSH1 0x40 MLOAD PUSH4 0x50701B61 PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH32 0x0 PUSH2 0x563 DUP4 DUP3 PUSH2 0xD0E JUMP JUMPDEST POP DUP1 MLOAD ISZERO PUSH2 0x59E JUMPI PUSH1 0x40 MLOAD PUSH4 0x3C47DFC3 PUSH1 0xE2 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x7 PUSH1 0x24 DUP3 ADD MSTORE PUSH7 0x18DBDB9B9958DD PUSH1 0xCA SHL PUSH1 0x44 DUP3 ADD MSTORE PUSH1 0x64 ADD PUSH2 0x32B JUMP JUMPDEST PUSH32 0x71149FEC4141134C52C251B737DF39CA5DD7286B51B86A0B68B2DD900243C0CE DUP3 PUSH1 0x40 MLOAD PUSH2 0x5CD SWAP2 SWAP1 PUSH2 0xAE0 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 LOG1 POP POP JUMP JUMPDEST PUSH2 0x5E1 PUSH2 0x833 JUMP JUMPDEST PUSH1 0x40 ADD MLOAD ISZERO PUSH2 0x61D JUMPI PUSH1 0x40 MLOAD PUSH4 0x3C47DFC3 PUSH1 0xE2 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x7 PUSH1 0x24 DUP3 ADD MSTORE PUSH7 0x19195C1BDCDA5D PUSH1 0xCA SHL PUSH1 0x44 DUP3 ADD MSTORE PUSH1 0x64 ADD PUSH2 0x32B JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH4 0xA9059CBB PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB PUSH32 0x0 DUP2 AND PUSH1 0x4 DUP4 ADD MSTORE PUSH1 0x24 DUP3 ADD DUP4 SWAP1 MSTORE PUSH32 0x0 AND SWAP1 PUSH4 0xA9059CBB SWAP1 PUSH1 0x44 ADD PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 PUSH0 DUP8 GAS CALL ISZERO DUP1 ISZERO PUSH2 0x6A9 JUMPI RETURNDATASIZE PUSH0 PUSH0 RETURNDATACOPY RETURNDATASIZE PUSH0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP3 ADD DUP1 PUSH1 0x40 MSTORE POP DUP2 ADD SWAP1 PUSH2 0x6CD SWAP2 SWAP1 PUSH2 0xDC9 JUMP JUMPDEST POP PUSH1 0x40 MLOAD DUP2 DUP2 MSTORE PUSH32 0x4D6CE1E535DBADE1C23DEFBA91E23B8F791CE5EDC0CC320257A2B364E4E38426 SWAP1 PUSH1 0x20 ADD PUSH2 0x408 JUMP JUMPDEST PUSH0 PUSH2 0x708 DUP3 PUSH2 0x916 JUMP JUMPDEST PUSH1 0x60 ADD MLOAD ISZERO PUSH2 0x718 JUMPI POP PUSH0 SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH4 0x70A08231 PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB PUSH32 0x0 DUP2 AND PUSH1 0x4 DUP4 ADD MSTORE PUSH32 0x0 AND SWAP1 PUSH4 0x70A08231 SWAP1 PUSH1 0x24 ADD JUMPDEST PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x79D JUMPI RETURNDATASIZE PUSH0 PUSH0 RETURNDATACOPY RETURNDATASIZE PUSH0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP3 ADD DUP1 PUSH1 0x40 MSTORE POP DUP2 ADD SWAP1 PUSH2 0x4DA SWAP2 SWAP1 PUSH2 0xDE4 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH4 0x70A08231 PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB PUSH32 0x0 DUP2 AND PUSH1 0x4 DUP4 ADD MSTORE PUSH0 SWAP2 PUSH32 0x0 SWAP1 SWAP2 AND SWAP1 PUSH4 0x70A08231 SWAP1 PUSH1 0x24 ADD PUSH2 0x782 JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH1 0x80 DUP2 ADD DUP3 MSTORE PUSH0 DUP1 DUP3 MSTORE PUSH1 0x20 DUP3 ADD DUP2 SWAP1 MSTORE SWAP2 DUP2 ADD DUP3 SWAP1 MSTORE PUSH1 0x60 DUP2 ADD SWAP2 SWAP1 SWAP2 MSTORE PUSH32 0x0 DUP1 SLOAD PUSH2 0x882 SWAP1 PUSH2 0xC8A 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 0x8AE SWAP1 PUSH2 0xC8A JUMP JUMPDEST DUP1 ISZERO PUSH2 0x8F9 JUMPI DUP1 PUSH1 0x1F LT PUSH2 0x8D0 JUMPI PUSH2 0x100 DUP1 DUP4 SLOAD DIV MUL DUP4 MSTORE SWAP2 PUSH1 0x20 ADD SWAP2 PUSH2 0x8F9 JUMP JUMPDEST DUP3 ADD SWAP2 SWAP1 PUSH0 MSTORE PUSH1 0x20 PUSH0 KECCAK256 SWAP1 JUMPDEST DUP2 SLOAD DUP2 MSTORE SWAP1 PUSH1 0x1 ADD SWAP1 PUSH1 0x20 ADD DUP1 DUP4 GT PUSH2 0x8DC JUMPI DUP3 SWAP1 SUB PUSH1 0x1F AND DUP3 ADD SWAP2 JUMPDEST POP POP POP POP POP DUP1 PUSH1 0x20 ADD SWAP1 MLOAD DUP2 ADD SWAP1 PUSH2 0x911 SWAP2 SWAP1 PUSH2 0xC05 JUMP JUMPDEST SWAP1 POP SWAP1 JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH1 0x80 DUP2 ADD DUP3 MSTORE PUSH0 DUP1 DUP3 MSTORE PUSH1 0x20 DUP3 ADD DUP2 SWAP1 MSTORE DUP2 DUP4 ADD DUP2 SWAP1 MSTORE PUSH1 0x60 DUP3 ADD MSTORE SWAP1 MLOAD PUSH4 0x47E57533 PUSH1 0xE0 SHL DUP2 MSTORE PUSH32 0x0 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP4 AND SWAP1 PUSH4 0x47E57533 SWAP1 PUSH1 0x24 ADD PUSH0 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x996 JUMPI RETURNDATASIZE PUSH0 PUSH0 RETURNDATACOPY RETURNDATASIZE PUSH0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH0 DUP3 RETURNDATACOPY PUSH1 0x1F RETURNDATASIZE SWAP1 DUP2 ADD PUSH1 0x1F NOT AND DUP3 ADD PUSH1 0x40 MSTORE PUSH2 0x9BD SWAP2 SWAP1 DUP2 ADD SWAP1 PUSH2 0xDFB JUMP JUMPDEST DUP1 PUSH1 0x20 ADD SWAP1 MLOAD DUP2 ADD SWAP1 PUSH2 0x4DA SWAP2 SWAP1 PUSH2 0xC05 JUMP JUMPDEST PUSH4 0x4E487B71 PUSH1 0xE0 SHL PUSH0 MSTORE PUSH1 0x41 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH0 REVERT JUMPDEST PUSH1 0x40 MLOAD PUSH1 0x1F DUP3 ADD PUSH1 0x1F NOT AND DUP2 ADD PUSH8 0xFFFFFFFFFFFFFFFF DUP2 GT DUP3 DUP3 LT OR ISZERO PUSH2 0xA0D JUMPI PUSH2 0xA0D PUSH2 0x9D0 JUMP JUMPDEST PUSH1 0x40 MSTORE SWAP2 SWAP1 POP JUMP JUMPDEST PUSH0 PUSH8 0xFFFFFFFFFFFFFFFF DUP3 GT ISZERO PUSH2 0xA2E JUMPI PUSH2 0xA2E PUSH2 0x9D0 JUMP JUMPDEST POP PUSH1 0x1F ADD PUSH1 0x1F NOT AND PUSH1 0x20 ADD SWAP1 JUMP JUMPDEST PUSH0 DUP3 PUSH1 0x1F DUP4 ADD SLT PUSH2 0xA4B JUMPI PUSH0 PUSH0 REVERT JUMPDEST DUP2 CALLDATALOAD PUSH2 0xA5E PUSH2 0xA59 DUP3 PUSH2 0xA15 JUMP JUMPDEST PUSH2 0x9E4 JUMP JUMPDEST DUP2 DUP2 MSTORE DUP5 PUSH1 0x20 DUP4 DUP7 ADD ADD GT ISZERO PUSH2 0xA72 JUMPI PUSH0 PUSH0 REVERT JUMPDEST DUP2 PUSH1 0x20 DUP6 ADD PUSH1 0x20 DUP4 ADD CALLDATACOPY PUSH0 SWAP2 DUP2 ADD PUSH1 0x20 ADD SWAP2 SWAP1 SWAP2 MSTORE SWAP4 SWAP3 POP POP POP JUMP JUMPDEST PUSH0 PUSH0 PUSH1 0x40 DUP4 DUP6 SUB SLT ISZERO PUSH2 0xA9F JUMPI PUSH0 PUSH0 REVERT JUMPDEST DUP3 CALLDATALOAD PUSH1 0xFF DUP2 AND DUP2 EQ PUSH2 0xAAF JUMPI PUSH0 PUSH0 REVERT JUMPDEST SWAP2 POP PUSH1 0x20 DUP4 ADD CALLDATALOAD PUSH8 0xFFFFFFFFFFFFFFFF DUP2 GT ISZERO PUSH2 0xACA JUMPI PUSH0 PUSH0 REVERT JUMPDEST PUSH2 0xAD6 DUP6 DUP3 DUP7 ADD PUSH2 0xA3C JUMP JUMPDEST SWAP2 POP POP SWAP3 POP SWAP3 SWAP1 POP JUMP JUMPDEST PUSH1 0x20 DUP2 MSTORE PUSH0 DUP3 MLOAD DUP1 PUSH1 0x20 DUP5 ADD MSTORE DUP1 PUSH1 0x20 DUP6 ADD PUSH1 0x40 DUP6 ADD MCOPY PUSH0 PUSH1 0x40 DUP3 DUP6 ADD ADD MSTORE PUSH1 0x40 PUSH1 0x1F NOT PUSH1 0x1F DUP4 ADD AND DUP5 ADD ADD SWAP2 POP POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0xB25 JUMPI PUSH0 PUSH0 REVERT JUMPDEST POP CALLDATALOAD SWAP2 SWAP1 POP JUMP JUMPDEST PUSH0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0xB3C JUMPI PUSH0 PUSH0 REVERT JUMPDEST DUP2 CALLDATALOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 AND DUP2 EQ PUSH2 0xB52 JUMPI PUSH0 PUSH0 REVERT JUMPDEST SWAP4 SWAP3 POP POP POP JUMP JUMPDEST DUP1 ISZERO ISZERO DUP2 EQ PUSH2 0xB66 JUMPI PUSH0 PUSH0 REVERT JUMPDEST POP JUMP JUMPDEST PUSH0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0xB79 JUMPI PUSH0 PUSH0 REVERT JUMPDEST DUP2 CALLDATALOAD PUSH2 0xB52 DUP2 PUSH2 0xB59 JUMP JUMPDEST DUP2 MLOAD ISZERO ISZERO DUP2 MSTORE PUSH1 0x20 DUP1 DUP4 ADD MLOAD ISZERO ISZERO SWAP1 DUP3 ADD MSTORE PUSH1 0x40 DUP1 DUP4 ADD MLOAD ISZERO ISZERO SWAP1 DUP3 ADD MSTORE PUSH1 0x60 SWAP2 DUP3 ADD MLOAD ISZERO ISZERO SWAP2 DUP2 ADD SWAP2 SWAP1 SWAP2 MSTORE PUSH1 0x80 ADD SWAP1 JUMP JUMPDEST PUSH0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0xBC7 JUMPI PUSH0 PUSH0 REVERT JUMPDEST DUP2 CALLDATALOAD PUSH8 0xFFFFFFFFFFFFFFFF DUP2 GT ISZERO PUSH2 0xBDD JUMPI PUSH0 PUSH0 REVERT JUMPDEST PUSH2 0xBE9 DUP5 DUP3 DUP6 ADD PUSH2 0xA3C JUMP JUMPDEST SWAP5 SWAP4 POP POP POP POP JUMP JUMPDEST PUSH4 0x4E487B71 PUSH1 0xE0 SHL PUSH0 MSTORE PUSH1 0x21 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH0 REVERT JUMPDEST PUSH0 PUSH1 0x80 DUP3 DUP5 SUB SLT DUP1 ISZERO PUSH2 0xC16 JUMPI PUSH0 PUSH0 REVERT JUMPDEST POP PUSH1 0x40 MLOAD PUSH1 0x80 DUP2 ADD PUSH8 0xFFFFFFFFFFFFFFFF DUP2 GT DUP3 DUP3 LT OR ISZERO PUSH2 0xC3A JUMPI PUSH2 0xC3A PUSH2 0x9D0 JUMP JUMPDEST PUSH1 0x40 MSTORE DUP3 MLOAD PUSH2 0xC48 DUP2 PUSH2 0xB59 JUMP JUMPDEST DUP2 MSTORE PUSH1 0x20 DUP4 ADD MLOAD PUSH2 0xC58 DUP2 PUSH2 0xB59 JUMP JUMPDEST PUSH1 0x20 DUP3 ADD MSTORE PUSH1 0x40 DUP4 ADD MLOAD PUSH2 0xC6B DUP2 PUSH2 0xB59 JUMP JUMPDEST PUSH1 0x40 DUP3 ADD MSTORE PUSH1 0x60 DUP4 ADD MLOAD PUSH2 0xC7E DUP2 PUSH2 0xB59 JUMP JUMPDEST PUSH1 0x60 DUP3 ADD MSTORE SWAP4 SWAP3 POP POP POP JUMP JUMPDEST PUSH1 0x1 DUP2 DUP2 SHR SWAP1 DUP3 AND DUP1 PUSH2 0xC9E JUMPI PUSH1 0x7F DUP3 AND SWAP2 POP JUMPDEST PUSH1 0x20 DUP3 LT DUP2 SUB PUSH2 0xCBC JUMPI PUSH4 0x4E487B71 PUSH1 0xE0 SHL PUSH0 MSTORE PUSH1 0x22 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH0 REVERT JUMPDEST POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x1F DUP3 GT ISZERO PUSH2 0xD09 JUMPI DUP1 PUSH0 MSTORE PUSH1 0x20 PUSH0 KECCAK256 PUSH1 0x1F DUP5 ADD PUSH1 0x5 SHR DUP2 ADD PUSH1 0x20 DUP6 LT ISZERO PUSH2 0xCE7 JUMPI POP DUP1 JUMPDEST PUSH1 0x1F DUP5 ADD PUSH1 0x5 SHR DUP3 ADD SWAP2 POP JUMPDEST DUP2 DUP2 LT ISZERO PUSH2 0xD06 JUMPI PUSH0 DUP2 SSTORE PUSH1 0x1 ADD PUSH2 0xCF3 JUMP JUMPDEST POP POP JUMPDEST POP POP POP JUMP JUMPDEST DUP2 MLOAD PUSH8 0xFFFFFFFFFFFFFFFF DUP2 GT ISZERO PUSH2 0xD28 JUMPI PUSH2 0xD28 PUSH2 0x9D0 JUMP JUMPDEST PUSH2 0xD3C DUP2 PUSH2 0xD36 DUP5 SLOAD PUSH2 0xC8A JUMP JUMPDEST DUP5 PUSH2 0xCC2 JUMP JUMPDEST PUSH1 0x20 PUSH1 0x1F DUP3 GT PUSH1 0x1 DUP2 EQ PUSH2 0xD6E JUMPI PUSH0 DUP4 ISZERO PUSH2 0xD57 JUMPI POP DUP5 DUP3 ADD MLOAD JUMPDEST PUSH0 NOT PUSH1 0x3 DUP6 SWAP1 SHL SHR NOT AND PUSH1 0x1 DUP5 SWAP1 SHL OR DUP5 SSTORE PUSH2 0xD06 JUMP JUMPDEST PUSH0 DUP5 DUP2 MSTORE PUSH1 0x20 DUP2 KECCAK256 PUSH1 0x1F NOT DUP6 AND SWAP2 JUMPDEST DUP3 DUP2 LT ISZERO PUSH2 0xD9D JUMPI DUP8 DUP6 ADD MLOAD DUP3 SSTORE PUSH1 0x20 SWAP5 DUP6 ADD SWAP5 PUSH1 0x1 SWAP1 SWAP3 ADD SWAP2 ADD PUSH2 0xD7D JUMP JUMPDEST POP DUP5 DUP3 LT ISZERO PUSH2 0xDBA JUMPI DUP7 DUP5 ADD MLOAD PUSH0 NOT PUSH1 0x3 DUP8 SWAP1 SHL PUSH1 0xF8 AND SHR NOT AND DUP2 SSTORE JUMPDEST POP POP POP POP PUSH1 0x1 SWAP1 DUP2 SHL ADD SWAP1 SSTORE POP JUMP JUMPDEST PUSH0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0xDD9 JUMPI PUSH0 PUSH0 REVERT JUMPDEST DUP2 MLOAD PUSH2 0xB52 DUP2 PUSH2 0xB59 JUMP JUMPDEST PUSH0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0xDF4 JUMPI PUSH0 PUSH0 REVERT JUMPDEST POP MLOAD SWAP2 SWAP1 POP JUMP JUMPDEST PUSH0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0xE0B JUMPI PUSH0 PUSH0 REVERT JUMPDEST DUP2 MLOAD PUSH8 0xFFFFFFFFFFFFFFFF DUP2 GT ISZERO PUSH2 0xE21 JUMPI PUSH0 PUSH0 REVERT JUMPDEST DUP3 ADD PUSH1 0x1F DUP2 ADD DUP5 SGT PUSH2 0xE31 JUMPI PUSH0 PUSH0 REVERT JUMPDEST DUP1 MLOAD PUSH2 0xE3F PUSH2 0xA59 DUP3 PUSH2 0xA15 JUMP JUMPDEST DUP2 DUP2 MSTORE DUP6 PUSH1 0x20 DUP4 DUP6 ADD ADD GT ISZERO PUSH2 0xE53 JUMPI PUSH0 PUSH0 REVERT JUMPDEST DUP2 PUSH1 0x20 DUP5 ADD PUSH1 0x20 DUP4 ADD MCOPY PUSH0 SWAP2 DUP2 ADD PUSH1 0x20 ADD SWAP2 SWAP1 SWAP2 MSTORE SWAP5 SWAP4 POP POP POP POP JUMP INVALID LOG2 PUSH5 0x6970667358 0x22 SLT KECCAK256 0xC9 PUSH15 0x83830A27F9E74F0CD4E43860B4DA31 0xBC 0xD3 PUSH27 0x88483B148B5C3825251CB9E064736F6C634300081E003300000000 ","sourceMap":"622:3150:73:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;3246:392;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;2849:212;;;;;;:::i;:::-;;:::i;:::-;;2425:183;;;;;;:::i;:::-;;:::i;:::-;;;2633:25:87;;;2621:2;2606:18;2425:183:73;2487:177:87;2078:148:73;;;;;;:::i;:::-;;:::i;762:81::-;;;;;3642:128;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;847:30::-;;;;;;;;-1:-1:-1;;;;;3889:32:87;;;3871:51;;3859:2;3844:18;847:30:73;3725:203:87;2612:104:73;;;;;;:::i;:::-;-1:-1:-1;2704:6:73;;2612:104;1370:351;;;;;;:::i;:::-;;:::i;3065:177::-;;;;;;:::i;:::-;;:::i;2230:191::-;;;;;;:::i;:::-;;:::i;2720:125::-;;;;;;:::i;:::-;;:::i;3246:392::-;3326:12;3346:28;3377:22;;;;;;;;;:::i;:::-;3346:53;-1:-1:-1;3426:22:73;3409:13;:39;;;;;;:::i;:::-;;3405:207;;3458:24;3496:6;3485:34;;;;;;;;;;;;:::i;:::-;3458:61;-1:-1:-1;3552:11:73;3527:52;3573:6;3552:11;3527:52;:::i;:::-;;3592:13;3600:4;3592:13;;;;;;:::i;:::-;;;;;;;;3450:162;3405:207;-1:-1:-1;;3624:9:73;;;;;;;;;-1:-1:-1;3624:9:73;;3246:392;;;;:::o;2849:212::-;2911:13;:11;:13::i;:::-;:26;;;2907:55;;;2946:16;;-1:-1:-1;;;2946:16:73;;8058:2:87;2946:16:73;;;8040:21:87;8097:1;8077:18;;;8070:29;-1:-1:-1;;;8115:18:87;;;8108:38;8163:18;;2946:16:73;;;;;;;;2907:55;2968:61;;-1:-1:-1;;;2968:61:73;;-1:-1:-1;;;;;2999:6:73;8427:32:87;;2968:61:73;;;8409:51:87;3015:4:73;8476:18:87;;;8469:60;8545:18;;;8538:34;;;2981:5:73;2968:30;;;;8382:18:87;;2968:61:73;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;3040:16;3049:6;3040:16;;;;2633:25:87;;2621:2;2606:18;;2487:177;3040:16:73;;;;;;;;2849:212;:::o;2425:183::-;2502:7;2521:30;2541:9;2521:19;:30::i;:::-;:42;;;2517:56;;;-1:-1:-1;2572:1:73;;2425:183;-1:-1:-1;2425:183:73:o;2517:56::-;-1:-1:-1;;;2586:17:73;2425:183;-1:-1:-1;2425:183:73:o;2078:148::-;2138:13;:11;:13::i;:::-;:28;;;2134:59;;;2175:18;;-1:-1:-1;;;2175:18:73;;8785:2:87;2175:18:73;;;8767:21:87;8824:2;8804:18;;;8797:30;-1:-1:-1;;;8843:18:87;;;8836:40;8893:18;;2175::73;8583:334:87;2134:59:73;2204:17;;9087:14:87;;9080:22;9062:41;;2204:17:73;;9050:2:87;9035:18;2204:17:73;8922:187:87;3642:128:73;-1:-1:-1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;3735:30:73;3755:9;3735:19;:30::i;:::-;3728:37;3642:128;-1:-1:-1;;3642:128:73:o;1370:351::-;1434:24;1472:8;1461:36;;;;;;;;;;;;:::i;:::-;1434:63;;1534:8;:15;1518:4;1507:16;;;;;;;;:::i;:::-;;;;;;;;;;;;;:23;:42;1503:75;;1558:20;;-1:-1:-1;;;1558:20:73;;;;;;;;;;;1503:75;1609:11;1584:54;1630:8;1609:11;1584:54;:::i;:::-;-1:-1:-1;1648:16:73;;1644:44;;;1673:15;;-1:-1:-1;;;1673:15:73;;9316:2:87;1673:15:73;;;9298:21:87;9355:1;9335:18;;;9328:29;-1:-1:-1;;;9373:18:87;;;9366:37;9420:18;;1673:15:73;9114:330:87;1644:44:73;1699:17;1707:8;1699:17;;;;;;:::i;:::-;;;;;;;;1428:293;1370:351;:::o;3065:177::-;3126:13;:11;:13::i;:::-;:25;;;3122:53;;;3160:15;;-1:-1:-1;;;3160:15:73;;9651:2:87;3160:15:73;;;9633:21:87;9690:1;9670:18;;;9663:29;-1:-1:-1;;;9708:18:87;;;9701:37;9755:18;;3160:15:73;9449:330:87;3122:53:73;3181:30;;-1:-1:-1;;;3181:30:73;;-1:-1:-1;;;;;3197:5:73;9976:32:87;;3181:30:73;;;9958:51:87;10025:18;;;10018:34;;;3181:6:73;:15;;;;9931:18:87;;3181:30:73;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;-1:-1:-1;3222:15:73;;2633:25:87;;;3222:15:73;;2621:2:87;2606:18;3222:15:73;2487:177:87;2230:191:73;2308:7;2327:30;2347:9;2327:19;:30::i;:::-;:43;;;2323:57;;;-1:-1:-1;2379:1:73;;2230:191;-1:-1:-1;2230:191:73:o;2323:57::-;2393:23;;-1:-1:-1;;;2393:23:73;;-1:-1:-1;;;;;2410:5:73;3889:32:87;;2393:23:73;;;3871:51:87;2393:6:73;:16;;;;3844:18:87;;2393:23:73;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;2720:125::-;2817:23;;-1:-1:-1;;;2817:23:73;;-1:-1:-1;;;;;2834:5:73;3889:32:87;;2817:23:73;;;3871:51:87;-1:-1:-1;;2817:6:73;:16;;;;;;3844:18:87;;2817:23:73;3725:203:87;1725:156:73;-1:-1:-1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1841:11:73;1805:71;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;1798:78;;1725:156;:::o;1885:189::-;-1:-1:-1;;;;;;;;;;;;;;;;;;;;;;;;;;;;2001:51:73;;-1:-1:-1;;;2001:51:73;;2040:11;2001:51;;;2633:25:87;-1:-1:-1;;;;;2001:38:73;;;;;2606:18:87;;2001:51:73;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;2001:51:73;;;;;;;;;;;;:::i;:::-;1990:79;;;;;;;;;;;;:::i;14:127:87:-;75:10;70:3;66:20;63:1;56:31;106:4;103:1;96:15;130:4;127:1;120:15;146:275;217:2;211:9;282:2;263:13;;-1:-1:-1;;259:27:87;247:40;;317:18;302:34;;338:22;;;299:62;296:88;;;364:18;;:::i;:::-;400:2;393:22;146:275;;-1:-1:-1;146:275:87:o;426:186::-;474:4;507:18;499:6;496:30;493:56;;;529:18;;:::i;:::-;-1:-1:-1;595:2:87;574:15;-1:-1:-1;;570:29:87;601:4;566:40;;426:186::o;617:486::-;659:5;712:3;705:4;697:6;693:17;689:27;679:55;;730:1;727;720:12;679:55;770:6;757:20;801:52;817:35;845:6;817:35;:::i;:::-;801:52;:::i;:::-;878:6;869:7;862:23;932:3;925:4;916:6;908;904:19;900:30;897:39;894:59;;;949:1;946;939:12;894:59;1014:6;1007:4;999:6;995:17;988:4;979:7;975:18;962:59;1070:1;1041:20;;;1063:4;1037:31;1030:42;;;;1045:7;617:486;-1:-1:-1;;;617:486:87:o;1108:477::-;1183:6;1191;1244:2;1232:9;1223:7;1219:23;1215:32;1212:52;;;1260:1;1257;1250:12;1212:52;1299:9;1286:23;1349:4;1342:5;1338:16;1331:5;1328:27;1318:55;;1369:1;1366;1359:12;1318:55;1392:5;-1:-1:-1;1448:2:87;1433:18;;1420:32;1475:18;1464:30;;1461:50;;;1507:1;1504;1497:12;1461:50;1530:49;1571:7;1562:6;1551:9;1547:22;1530:49;:::i;:::-;1520:59;;;1108:477;;;;;:::o;1590:416::-;1737:2;1726:9;1719:21;1700:4;1769:6;1763:13;1812:6;1807:2;1796:9;1792:18;1785:34;1871:6;1866:2;1858:6;1854:15;1849:2;1838:9;1834:18;1828:50;1927:1;1922:2;1913:6;1902:9;1898:22;1894:31;1887:42;1997:2;1990;1986:7;1981:2;1973:6;1969:15;1965:29;1954:9;1950:45;1946:54;1938:62;;;1590:416;;;;:::o;2011:180::-;2070:6;2123:2;2111:9;2102:7;2098:23;2094:32;2091:52;;;2139:1;2136;2129:12;2091:52;-1:-1:-1;2162:23:87;;2011:180;-1:-1:-1;2011:180:87:o;2196:286::-;2255:6;2308:2;2296:9;2287:7;2283:23;2279:32;2276:52;;;2324:1;2321;2314:12;2276:52;2350:23;;-1:-1:-1;;;;;2402:31:87;;2392:42;;2382:70;;2448:1;2445;2438:12;2382:70;2471:5;2196:286;-1:-1:-1;;;2196:286:87:o;2669:118::-;2755:5;2748:13;2741:21;2734:5;2731:32;2721:60;;2777:1;2774;2767:12;2721:60;2669:118;:::o;2792:241::-;2848:6;2901:2;2889:9;2880:7;2876:23;2872:32;2869:52;;;2917:1;2914;2907:12;2869:52;2956:9;2943:23;2975:28;2997:5;2975:28;:::i;3220:500::-;3461:13;;3454:21;3447:29;3429:48;;3547:4;3535:17;;;3529:24;3522:32;3515:40;3493:20;;;3486:70;3626:4;3614:17;;;3608:24;3601:32;3594:40;3572:20;;;3565:70;3705:4;3693:17;;;3687:24;3680:32;3673:40;3651:20;;;3644:70;;;;3416:3;3401:19;;3220:500::o;3933:320::-;4001:6;4054:2;4042:9;4033:7;4029:23;4025:32;4022:52;;;4070:1;4067;4060:12;4022:52;4110:9;4097:23;4143:18;4135:6;4132:30;4129:50;;;4175:1;4172;4165:12;4129:50;4198:49;4239:7;4230:6;4219:9;4215:22;4198:49;:::i;:::-;4188:59;3933:320;-1:-1:-1;;;;3933:320:87:o;4258:127::-;4319:10;4314:3;4310:20;4307:1;4300:31;4350:4;4347:1;4340:15;4374:4;4371:1;4364:15;4390:958;4491:6;4551:3;4539:9;4530:7;4526:23;4522:33;4567:2;4564:22;;;4582:1;4579;4572:12;4564:22;-1:-1:-1;4651:2:87;4645:9;4693:3;4681:16;;4727:18;4712:34;;4748:22;;;4709:62;4706:88;;;4774:18;;:::i;:::-;4810:2;4803:22;4847:16;;4872:28;4847:16;4872:28;:::i;:::-;4909:21;;4975:2;4960:18;;4954:25;4988:30;4954:25;4988:30;:::i;:::-;5046:2;5034:15;;5027:32;5104:2;5089:18;;5083:25;5117:30;5083:25;5117:30;:::i;:::-;5175:2;5163:15;;5156:32;5233:2;5218:18;;5212:25;5246:30;5212:25;5246:30;:::i;:::-;5304:2;5292:15;;5285:32;5296:6;4390:958;-1:-1:-1;;;4390:958:87:o;5353:380::-;5432:1;5428:12;;;;5475;;;5496:61;;5550:4;5542:6;5538:17;5528:27;;5496:61;5603:2;5595:6;5592:14;5572:18;5569:38;5566:161;;5649:10;5644:3;5640:20;5637:1;5630:31;5684:4;5681:1;5674:15;5712:4;5709:1;5702:15;5566:161;;5353:380;;;:::o;5863:517::-;5964:2;5959:3;5956:11;5953:421;;;6000:5;5997:1;5990:16;6044:4;6041:1;6031:18;6114:2;6102:10;6098:19;6095:1;6091:27;6085:4;6081:38;6150:4;6138:10;6135:20;6132:47;;;-1:-1:-1;6173:4:87;6132:47;6228:2;6223:3;6219:12;6216:1;6212:20;6206:4;6202:31;6192:41;;6283:81;6301:2;6294:5;6291:13;6283:81;;;6360:1;6346:16;;6327:1;6316:13;6283:81;;;6287:3;;5953:421;5863:517;;;:::o;6556:1295::-;6680:3;6674:10;6707:18;6699:6;6696:30;6693:56;;;6729:18;;:::i;:::-;6758:96;6847:6;6807:38;6839:4;6833:11;6807:38;:::i;:::-;6801:4;6758:96;:::i;:::-;6903:4;6934:2;6923:14;;6951:1;6946:648;;;;7638:1;7655:6;7652:89;;;-1:-1:-1;7707:19:87;;;7701:26;7652:89;-1:-1:-1;;6513:1:87;6509:11;;;6505:24;6501:29;6491:40;6537:1;6533:11;;;6488:57;7754:81;;6916:929;;6946:648;5810:1;5803:14;;;5847:4;5834:18;;-1:-1:-1;;6982:20:87;;;7099:222;7113:7;7110:1;7107:14;7099:222;;;7195:19;;;7189:26;7174:42;;7302:4;7287:20;;;;7255:1;7243:14;;;;7129:12;7099:222;;;7103:3;7349:6;7340:7;7337:19;7334:201;;;7410:19;;;7404:26;-1:-1:-1;;7493:1:87;7489:14;;;7505:3;7485:24;7481:37;7477:42;7462:58;7447:74;;7334:201;-1:-1:-1;;;;7581:1:87;7565:14;;;7561:22;7548:36;;-1:-1:-1;6556:1295:87:o;10063:245::-;10130:6;10183:2;10171:9;10162:7;10158:23;10154:32;10151:52;;;10199:1;10196;10189:12;10151:52;10231:9;10225:16;10250:28;10272:5;10250:28;:::i;10313:184::-;10383:6;10436:2;10424:9;10415:7;10411:23;10407:32;10404:52;;;10452:1;10449;10442:12;10404:52;-1:-1:-1;10475:16:87;;10313:184;-1:-1:-1;10313:184:87:o;10502:685::-;10581:6;10634:2;10622:9;10613:7;10609:23;10605:32;10602:52;;;10650:1;10647;10640:12;10602:52;10683:9;10677:16;10716:18;10708:6;10705:30;10702:50;;;10748:1;10745;10738:12;10702:50;10771:22;;10824:4;10816:13;;10812:27;-1:-1:-1;10802:55:87;;10853:1;10850;10843:12;10802:55;10886:2;10880:9;10911:52;10927:35;10955:6;10927:35;:::i;10911:52::-;10986:6;10979:5;10972:21;11034:7;11029:2;11020:6;11016:2;11012:15;11008:24;11005:37;11002:57;;;11055:1;11052;11045:12;11002:57;11103:6;11098:2;11094;11090:11;11085:2;11078:5;11074:14;11068:42;11155:1;11130:18;;;11150:2;11126:27;11119:38;;;;11134:5;10502:685;-1:-1:-1;;;;10502:685:87:o"},"methodIdentifiers":{"asset(address)":"9c4667a2","connect(bytes)":"9cd47128","deposit(uint256)":"b6b55f25","disconnect(bool)":"5a117456","forwardEntryPoint(uint8,bytes)":"0981b1c2","getFail(address)":"728d6fd8","maxDeposit(address)":"402d267d","maxWithdraw(address)":"ce96cb77","other()":"85295877","storageSlot()":"5b9a4c35","totalAssets(address)":"f3e0ffbf","withdraw(uint256)":"2e1a7d4d"}},"metadata":"{\"compiler\":{\"version\":\"0.8.30+commit.73712a01\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"inputs\":[{\"internalType\":\"contract IERC20\",\"name\":\"asset_\",\"type\":\"address\"}],\"stateMutability\":\"nonpayable\",\"type\":\"constructor\"},{\"inputs\":[{\"internalType\":\"string\",\"name\":\"where\",\"type\":\"string\"}],\"name\":\"Fail\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"NoExtraDataAllowed\",\"type\":\"error\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"bytes\",\"name\":\"initData\",\"type\":\"bytes\"}],\"name\":\"Connect\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"assets\",\"type\":\"uint256\"}],\"name\":\"Deposit\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"bool\",\"name\":\"force\",\"type\":\"bool\"}],\"name\":\"Disconnect\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"components\":[{\"internalType\":\"bool\",\"name\":\"failConnect\",\"type\":\"bool\"},{\"internalType\":\"bool\",\"name\":\"failDisconnect\",\"type\":\"bool\"},{\"internalType\":\"bool\",\"name\":\"failDeposit\",\"type\":\"bool\"},{\"internalType\":\"bool\",\"name\":\"failWithdraw\",\"type\":\"bool\"}],\"indexed\":false,\"internalType\":\"struct DummyInvestStrategy.DummyStorage\",\"name\":\"fail\",\"type\":\"tuple\"}],\"name\":\"SetFail\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"assets\",\"type\":\"uint256\"}],\"name\":\"Withdraw\",\"type\":\"event\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"name\":\"asset\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes\",\"name\":\"initData\",\"type\":\"bytes\"}],\"name\":\"connect\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"assets\",\"type\":\"uint256\"}],\"name\":\"deposit\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bool\",\"name\":\"force\",\"type\":\"bool\"}],\"name\":\"disconnect\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint8\",\"name\":\"method\",\"type\":\"uint8\"},{\"internalType\":\"bytes\",\"name\":\"params\",\"type\":\"bytes\"}],\"name\":\"forwardEntryPoint\",\"outputs\":[{\"internalType\":\"bytes\",\"name\":\"\",\"type\":\"bytes\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"contract_\",\"type\":\"address\"}],\"name\":\"getFail\",\"outputs\":[{\"components\":[{\"internalType\":\"bool\",\"name\":\"failConnect\",\"type\":\"bool\"},{\"internalType\":\"bool\",\"name\":\"failDisconnect\",\"type\":\"bool\"},{\"internalType\":\"bool\",\"name\":\"failDeposit\",\"type\":\"bool\"},{\"internalType\":\"bool\",\"name\":\"failWithdraw\",\"type\":\"bool\"}],\"internalType\":\"struct DummyInvestStrategy.DummyStorage\",\"name\":\"\",\"type\":\"tuple\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"contract_\",\"type\":\"address\"}],\"name\":\"maxDeposit\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"contract_\",\"type\":\"address\"}],\"name\":\"maxWithdraw\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"other\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"storageSlot\",\"outputs\":[{\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"name\":\"totalAssets\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"assets\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"assets\",\"type\":\"uint256\"}],\"name\":\"withdraw\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"}],\"devdoc\":{\"kind\":\"dev\",\"methods\":{\"connect(bytes)\":{\"details\":\"Called when the strategy is plugged into the vault. Initializes the strategy storage and can do validations\",\"params\":{\"initData\":\"Initialization data for the strategy. Must be parsed by the strategy, since the format is                 strategy specific\"}},\"deposit(uint256)\":{\"details\":\"Deposits a given amount of assets into the strategy. It MUST revert if it can't deposit the specified amount.      It assumes the assets are already in the contract (owned by address(this)).\",\"params\":{\"assets\":\"The amount of assets to deposit. Should be <= maxDeposit.\"}},\"disconnect(bool)\":{\"details\":\"Called when the strategy is un-plugged from the vault. Should revert if there are still assets in the      strategy, unless force==true.\",\"params\":{\"force\":\"If true, disconnect should not fail if assets remain in the strategy. Otherwise, disconnect              MUST fail if totalAssets() != 0.\"}},\"forwardEntryPoint(uint8,bytes)\":{\"details\":\"Receives an external call to execute a custom method of action in the strategy. Can be used for harvesting      rewards or other tasks. It's called with delegatecall from the calling vault. The calling vault SHOULD      do the access control validation, since the strategy normally won't do it.\",\"params\":{\"method\":\"An id of the method or action to call/execute. It's recommended to define an enum and convert the               the uint8 value into the enum.\",\"params\":\"Params for the method or action. Parsed by the strategy, it might differ from one or other method.\"}},\"maxDeposit(address)\":{\"details\":\"Returns the max amount that can be deposited into the strategy.\",\"params\":{\"contract_\":\"The address of the vault contract that owns the assets and where the strategy is plugged\"}},\"maxWithdraw(address)\":{\"details\":\"Returns the max amount that can be withdrawn from the strategy.\",\"params\":{\"contract_\":\"The address of the vault contract that owns the assets and where the strategy is plugged\"}},\"withdraw(uint256)\":{\"details\":\"Withdraws a given amount of assets from the strategy. It MUST revert if it can't withdraw the specified amount.      Leaves the withdrawn assets in the contract (owned by address(this)).\",\"params\":{\"assets\":\"The amount of assets to withdraw. Should be <= maxWithdraw.\"}}},\"stateVariables\":{\"storageSlot\":{\"details\":\"Returns the slot where the data of the strategy can be stored.       Typically it would return `InvestStrategyClient.makeStorageSlot(<strategyAddress>)`\"}},\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{},\"version\":1}},\"settings\":{\"compilationTarget\":{\"contracts/mock/DummyInvestStrategy.sol\":\"DummyInvestStrategy\"},\"evmVersion\":\"prague\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"enabled\":true,\"runs\":200},\"remappings\":[]},\"sources\":{\"@openzeppelin/contracts/interfaces/IERC20.sol\":{\"keccak256\":\"0x1a6221315ce0307746c2c4827c125d821ee796c74a676787762f4778671d4f44\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://1bb2332a7ee26dd0b0de9b7fe266749f54820c99ab6a3bcb6f7e6b751d47ee2d\",\"dweb:/ipfs/QmcRWpaBeCYkhy68PR3B4AgD7asuQk7PwkWxrvJbZcikLF\"]},\"@openzeppelin/contracts/interfaces/IERC4626.sol\":{\"keccak256\":\"0xece5cbf726293ae6be1fbfade2936f052e1b399ed395ba1e221540ab82b62628\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://a9b97e58e90799e681dccbd4a8e469c6ebc2baf11312ad08f14332646123dd4b\",\"dweb:/ipfs/QmdamCQfxcuYinSNd3Et7VNo3oY98XSv4XCUQyq9xfMNUy\"]},\"@openzeppelin/contracts/token/ERC20/IERC20.sol\":{\"keccak256\":\"0x74ed01eb66b923d0d0cfe3be84604ac04b76482a55f9dd655e1ef4d367f95bc2\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://5282825a626cfe924e504274b864a652b0023591fa66f06a067b25b51ba9b303\",\"dweb:/ipfs/QmeCfPykghhMc81VJTrHTC7sF6CRvaA1FXVq2pJhwYp1dV\"]},\"@openzeppelin/contracts/token/ERC20/extensions/IERC20Metadata.sol\":{\"keccak256\":\"0xd6fa4088198f04eef10c5bce8a2f4d60554b7ec4b987f684393c01bf79b94d9f\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://f95ee0bbd4dd3ac730d066ba3e785ded4565e890dbec2fa7d3b9fe3bad9d0d6e\",\"dweb:/ipfs/QmSLr6bHkPFWT7ntj34jmwfyskpwo97T9jZUrk5sz3sdtR\"]},\"@openzeppelin/contracts/utils/Address.sol\":{\"keccak256\":\"0x0fa9e0d3a859900b5a46f70a03c73adf259603d5e05027a37fe0b45529d85346\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://c2add4da0240c9f2ce47649c8bb6b11b40e98cf6f88b8bdc76b2704e89391710\",\"dweb:/ipfs/QmNQTwF2uVzu4CRtNxr8bxyP9XuW6VsZuo2Nr4KR2bZr3d\"]},\"@openzeppelin/contracts/utils/Errors.sol\":{\"keccak256\":\"0x6afa713bfd42cf0f7656efa91201007ac465e42049d7de1d50753a373648c123\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://ba1d02f4847670a1b83dec9f7d37f0b0418d6043447b69f3a29a5f9efc547fcf\",\"dweb:/ipfs/QmQ7iH2keLNUKgq2xSWcRmuBE5eZ3F5whYAkAGzCNNoEWB\"]},\"@openzeppelin/contracts/utils/LowLevelCall.sol\":{\"keccak256\":\"0x5b4802a4352474792df3107e961d1cc593e47b820c14f69d3505cb28f5a6a583\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://a6f86fd01f829499fe0545ff5dda07d4521988e88bfe0bf801fc15650921ed56\",\"dweb:/ipfs/QmUUKu4ZDffHAmfkf3asuQfmLTyfpuy2Amdncc3SqfzKPG\"]},\"@openzeppelin/contracts/utils/StorageSlot.sol\":{\"keccak256\":\"0xcf74f855663ce2ae00ed8352666b7935f6cddea2932fdf2c3ecd30a9b1cd0e97\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://9f660b1f351b757dfe01438e59888f31f33ded3afcf5cb5b0d9bf9aa6f320a8b\",\"dweb:/ipfs/QmarDJ5hZEgBtCmmrVzEZWjub9769eD686jmzb2XpSU1cM\"]},\"contracts/InvestStrategyClient.sol\":{\"keccak256\":\"0x3c8fff73042023381eb750ba13a9066475d208e99bde568e1243f0e1e282c894\",\"license\":\"Apache-2.0\",\"urls\":[\"bzz-raw://3f8283ffa5c512e482b0065d9391c7060ebc1fa5968c55e6a05958480b7facb6\",\"dweb:/ipfs/QmT4N9Z19b6AUXpXtg23d3ijBExyKuRJBeQ3o8WCobgpfT\"]},\"contracts/interfaces/IExposeStorage.sol\":{\"keccak256\":\"0x68d4dbc7e135ac949f5f557a1f071b96d1639262188f91957bf082be7e72b1c7\",\"license\":\"Apache-2.0\",\"urls\":[\"bzz-raw://29fc549ef136e19275bb9225c8e7f02e0cc3b274acef4e6d7002c6f3f74e5c13\",\"dweb:/ipfs/QmVzrn7Cbxe8xzLwy4ZpzxP6CBEKsegXG8VusNYqssCe3d\"]},\"contracts/interfaces/IInvestStrategy.sol\":{\"keccak256\":\"0x6800a1f147def2252b79629150ce9cd87e914ca5a966f1035fbca6328bbc9c4b\",\"license\":\"Apache-2.0\",\"urls\":[\"bzz-raw://2e9260604e0ffcf405819f85fee4124d9a090cf716f389ff92cf76a2837a2e42\",\"dweb:/ipfs/QmVdKEW8C6MDyiiUfjBxEMTWjfPrBJadptpxh9L2uCebDK\"]},\"contracts/mock/DummyInvestStrategy.sol\":{\"keccak256\":\"0x248c197949e3c0449ebbf55ca397b3d1c49c77a318760581f8bfe1cf9ae455af\",\"license\":\"Apache-2.0\",\"urls\":[\"bzz-raw://dbae609f1835b15de96b23b9b70812a0078b1357de07d77dd6ec88b97ed8e096\",\"dweb:/ipfs/QmVyF2Hr5JispZG2D2uyRUcWJfi4T5oGEJBqDXzXqENh4Q\"]}},\"version\":1}","storageLayout":{"storage":[],"types":null}},"OtherAddress":{"abi":[{"inputs":[{"internalType":"contract IERC20","name":"asset_","type":"address"},{"internalType":"address","name":"to","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"transferTo","outputs":[],"stateMutability":"nonpayable","type":"function"}],"evm":{"bytecode":{"functionDebugData":{},"generatedSources":[],"linkReferences":{},"object":"6080604052348015600e575f5ffd5b506101698061001c5f395ff3fe608060405234801561000f575f5ffd5b5060043610610029575f3560e01c8063a5f2a1521461002d575b5f5ffd5b61004061003b3660046100cf565b610042565b005b60405163a9059cbb60e01b81526001600160a01b0383811660048301526024820183905284169063a9059cbb906044016020604051808303815f875af115801561008e573d5f5f3e3d5ffd5b505050506040513d601f19601f820116820180604052508101906100b2919061010d565b50505050565b6001600160a01b03811681146100cc575f5ffd5b50565b5f5f5f606084860312156100e1575f5ffd5b83356100ec816100b8565b925060208401356100fc816100b8565b929592945050506040919091013590565b5f6020828403121561011d575f5ffd5b8151801515811461012c575f5ffd5b939250505056fea2646970667358221220f2b7f995e0e3780bc3a4d0cc7bd1c44f6dbd0770416dc77545faea012f37e9a264736f6c634300081e0033","opcodes":"PUSH1 0x80 PUSH1 0x40 MSTORE CALLVALUE DUP1 ISZERO PUSH1 0xE JUMPI PUSH0 PUSH0 REVERT JUMPDEST POP PUSH2 0x169 DUP1 PUSH2 0x1C PUSH0 CODECOPY PUSH0 RETURN INVALID PUSH1 0x80 PUSH1 0x40 MSTORE CALLVALUE DUP1 ISZERO PUSH2 0xF JUMPI PUSH0 PUSH0 REVERT JUMPDEST POP PUSH1 0x4 CALLDATASIZE LT PUSH2 0x29 JUMPI PUSH0 CALLDATALOAD PUSH1 0xE0 SHR DUP1 PUSH4 0xA5F2A152 EQ PUSH2 0x2D JUMPI JUMPDEST PUSH0 PUSH0 REVERT JUMPDEST PUSH2 0x40 PUSH2 0x3B CALLDATASIZE PUSH1 0x4 PUSH2 0xCF JUMP JUMPDEST PUSH2 0x42 JUMP JUMPDEST STOP JUMPDEST PUSH1 0x40 MLOAD PUSH4 0xA9059CBB PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP4 DUP2 AND PUSH1 0x4 DUP4 ADD MSTORE PUSH1 0x24 DUP3 ADD DUP4 SWAP1 MSTORE DUP5 AND SWAP1 PUSH4 0xA9059CBB SWAP1 PUSH1 0x44 ADD PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 PUSH0 DUP8 GAS CALL ISZERO DUP1 ISZERO PUSH2 0x8E JUMPI RETURNDATASIZE PUSH0 PUSH0 RETURNDATACOPY RETURNDATASIZE PUSH0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP3 ADD DUP1 PUSH1 0x40 MSTORE POP DUP2 ADD SWAP1 PUSH2 0xB2 SWAP2 SWAP1 PUSH2 0x10D JUMP JUMPDEST POP POP POP POP JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 AND DUP2 EQ PUSH2 0xCC JUMPI PUSH0 PUSH0 REVERT JUMPDEST POP JUMP JUMPDEST PUSH0 PUSH0 PUSH0 PUSH1 0x60 DUP5 DUP7 SUB SLT ISZERO PUSH2 0xE1 JUMPI PUSH0 PUSH0 REVERT JUMPDEST DUP4 CALLDATALOAD PUSH2 0xEC DUP2 PUSH2 0xB8 JUMP JUMPDEST SWAP3 POP PUSH1 0x20 DUP5 ADD CALLDATALOAD PUSH2 0xFC DUP2 PUSH2 0xB8 JUMP JUMPDEST SWAP3 SWAP6 SWAP3 SWAP5 POP POP POP PUSH1 0x40 SWAP2 SWAP1 SWAP2 ADD CALLDATALOAD SWAP1 JUMP JUMPDEST PUSH0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x11D JUMPI PUSH0 PUSH0 REVERT JUMPDEST DUP2 MLOAD DUP1 ISZERO ISZERO DUP2 EQ PUSH2 0x12C JUMPI PUSH0 PUSH0 REVERT JUMPDEST SWAP4 SWAP3 POP POP POP JUMP INVALID LOG2 PUSH5 0x6970667358 0x22 SLT KECCAK256 CALLCODE 0xB7 EXTDELEGATECALL SWAP6 RJUMP 0xE378 SIGNEXTEND 0xC3 LOG4 0xD0 0xCC PUSH28 0xD1C44F6DBD0770416DC77545FAEA012F37E9A264736F6C634300081E STOP CALLER ","sourceMap":"482:138:73:-:0;;;;;;;;;;;;;;;;;;;"},"deployedBytecode":{"functionDebugData":{"@transferTo_20912":{"entryPoint":66,"id":20912,"parameterSlots":3,"returnSlots":0},"abi_decode_tuple_t_bool_fromMemory":{"entryPoint":269,"id":null,"parameterSlots":2,"returnSlots":1},"abi_decode_tuple_t_contract$_IERC20_$8679t_addresst_uint256":{"entryPoint":207,"id":null,"parameterSlots":2,"returnSlots":3},"abi_encode_tuple_t_address_t_uint256__to_t_address_t_uint256__fromStack_reversed":{"entryPoint":null,"id":null,"parameterSlots":3,"returnSlots":1},"validator_revert_contract_IERC20":{"entryPoint":184,"id":null,"parameterSlots":1,"returnSlots":0}},"generatedSources":[{"ast":{"nativeSrc":"0:1208:87","nodeType":"YulBlock","src":"0:1208:87","statements":[{"nativeSrc":"6:3:87","nodeType":"YulBlock","src":"6:3:87","statements":[]},{"body":{"nativeSrc":"67:86:87","nodeType":"YulBlock","src":"67:86:87","statements":[{"body":{"nativeSrc":"131:16:87","nodeType":"YulBlock","src":"131:16:87","statements":[{"expression":{"arguments":[{"kind":"number","nativeSrc":"140:1:87","nodeType":"YulLiteral","src":"140:1:87","type":"","value":"0"},{"kind":"number","nativeSrc":"143:1:87","nodeType":"YulLiteral","src":"143:1:87","type":"","value":"0"}],"functionName":{"name":"revert","nativeSrc":"133:6:87","nodeType":"YulIdentifier","src":"133:6:87"},"nativeSrc":"133:12:87","nodeType":"YulFunctionCall","src":"133:12:87"},"nativeSrc":"133:12:87","nodeType":"YulExpressionStatement","src":"133:12:87"}]},"condition":{"arguments":[{"arguments":[{"name":"value","nativeSrc":"90:5:87","nodeType":"YulIdentifier","src":"90:5:87"},{"arguments":[{"name":"value","nativeSrc":"101:5:87","nodeType":"YulIdentifier","src":"101:5:87"},{"arguments":[{"arguments":[{"kind":"number","nativeSrc":"116:3:87","nodeType":"YulLiteral","src":"116:3:87","type":"","value":"160"},{"kind":"number","nativeSrc":"121:1:87","nodeType":"YulLiteral","src":"121:1:87","type":"","value":"1"}],"functionName":{"name":"shl","nativeSrc":"112:3:87","nodeType":"YulIdentifier","src":"112:3:87"},"nativeSrc":"112:11:87","nodeType":"YulFunctionCall","src":"112:11:87"},{"kind":"number","nativeSrc":"125:1:87","nodeType":"YulLiteral","src":"125:1:87","type":"","value":"1"}],"functionName":{"name":"sub","nativeSrc":"108:3:87","nodeType":"YulIdentifier","src":"108:3:87"},"nativeSrc":"108:19:87","nodeType":"YulFunctionCall","src":"108:19:87"}],"functionName":{"name":"and","nativeSrc":"97:3:87","nodeType":"YulIdentifier","src":"97:3:87"},"nativeSrc":"97:31:87","nodeType":"YulFunctionCall","src":"97:31:87"}],"functionName":{"name":"eq","nativeSrc":"87:2:87","nodeType":"YulIdentifier","src":"87:2:87"},"nativeSrc":"87:42:87","nodeType":"YulFunctionCall","src":"87:42:87"}],"functionName":{"name":"iszero","nativeSrc":"80:6:87","nodeType":"YulIdentifier","src":"80:6:87"},"nativeSrc":"80:50:87","nodeType":"YulFunctionCall","src":"80:50:87"},"nativeSrc":"77:70:87","nodeType":"YulIf","src":"77:70:87"}]},"name":"validator_revert_contract_IERC20","nativeSrc":"14:139:87","nodeType":"YulFunctionDefinition","parameters":[{"name":"value","nativeSrc":"56:5:87","nodeType":"YulTypedName","src":"56:5:87","type":""}],"src":"14:139:87"},{"body":{"nativeSrc":"277:368:87","nodeType":"YulBlock","src":"277:368:87","statements":[{"body":{"nativeSrc":"323:16:87","nodeType":"YulBlock","src":"323:16:87","statements":[{"expression":{"arguments":[{"kind":"number","nativeSrc":"332:1:87","nodeType":"YulLiteral","src":"332:1:87","type":"","value":"0"},{"kind":"number","nativeSrc":"335:1:87","nodeType":"YulLiteral","src":"335:1:87","type":"","value":"0"}],"functionName":{"name":"revert","nativeSrc":"325:6:87","nodeType":"YulIdentifier","src":"325:6:87"},"nativeSrc":"325:12:87","nodeType":"YulFunctionCall","src":"325:12:87"},"nativeSrc":"325:12:87","nodeType":"YulExpressionStatement","src":"325:12:87"}]},"condition":{"arguments":[{"arguments":[{"name":"dataEnd","nativeSrc":"298:7:87","nodeType":"YulIdentifier","src":"298:7:87"},{"name":"headStart","nativeSrc":"307:9:87","nodeType":"YulIdentifier","src":"307:9:87"}],"functionName":{"name":"sub","nativeSrc":"294:3:87","nodeType":"YulIdentifier","src":"294:3:87"},"nativeSrc":"294:23:87","nodeType":"YulFunctionCall","src":"294:23:87"},{"kind":"number","nativeSrc":"319:2:87","nodeType":"YulLiteral","src":"319:2:87","type":"","value":"96"}],"functionName":{"name":"slt","nativeSrc":"290:3:87","nodeType":"YulIdentifier","src":"290:3:87"},"nativeSrc":"290:32:87","nodeType":"YulFunctionCall","src":"290:32:87"},"nativeSrc":"287:52:87","nodeType":"YulIf","src":"287:52:87"},{"nativeSrc":"348:36:87","nodeType":"YulVariableDeclaration","src":"348:36:87","value":{"arguments":[{"name":"headStart","nativeSrc":"374:9:87","nodeType":"YulIdentifier","src":"374:9:87"}],"functionName":{"name":"calldataload","nativeSrc":"361:12:87","nodeType":"YulIdentifier","src":"361:12:87"},"nativeSrc":"361:23:87","nodeType":"YulFunctionCall","src":"361:23:87"},"variables":[{"name":"value","nativeSrc":"352:5:87","nodeType":"YulTypedName","src":"352:5:87","type":""}]},{"expression":{"arguments":[{"name":"value","nativeSrc":"426:5:87","nodeType":"YulIdentifier","src":"426:5:87"}],"functionName":{"name":"validator_revert_contract_IERC20","nativeSrc":"393:32:87","nodeType":"YulIdentifier","src":"393:32:87"},"nativeSrc":"393:39:87","nodeType":"YulFunctionCall","src":"393:39:87"},"nativeSrc":"393:39:87","nodeType":"YulExpressionStatement","src":"393:39:87"},{"nativeSrc":"441:15:87","nodeType":"YulAssignment","src":"441:15:87","value":{"name":"value","nativeSrc":"451:5:87","nodeType":"YulIdentifier","src":"451:5:87"},"variableNames":[{"name":"value0","nativeSrc":"441:6:87","nodeType":"YulIdentifier","src":"441:6:87"}]},{"nativeSrc":"465:47:87","nodeType":"YulVariableDeclaration","src":"465:47:87","value":{"arguments":[{"arguments":[{"name":"headStart","nativeSrc":"497:9:87","nodeType":"YulIdentifier","src":"497:9:87"},{"kind":"number","nativeSrc":"508:2:87","nodeType":"YulLiteral","src":"508:2:87","type":"","value":"32"}],"functionName":{"name":"add","nativeSrc":"493:3:87","nodeType":"YulIdentifier","src":"493:3:87"},"nativeSrc":"493:18:87","nodeType":"YulFunctionCall","src":"493:18:87"}],"functionName":{"name":"calldataload","nativeSrc":"480:12:87","nodeType":"YulIdentifier","src":"480:12:87"},"nativeSrc":"480:32:87","nodeType":"YulFunctionCall","src":"480:32:87"},"variables":[{"name":"value_1","nativeSrc":"469:7:87","nodeType":"YulTypedName","src":"469:7:87","type":""}]},{"expression":{"arguments":[{"name":"value_1","nativeSrc":"554:7:87","nodeType":"YulIdentifier","src":"554:7:87"}],"functionName":{"name":"validator_revert_contract_IERC20","nativeSrc":"521:32:87","nodeType":"YulIdentifier","src":"521:32:87"},"nativeSrc":"521:41:87","nodeType":"YulFunctionCall","src":"521:41:87"},"nativeSrc":"521:41:87","nodeType":"YulExpressionStatement","src":"521:41:87"},{"nativeSrc":"571:17:87","nodeType":"YulAssignment","src":"571:17:87","value":{"name":"value_1","nativeSrc":"581:7:87","nodeType":"YulIdentifier","src":"581:7:87"},"variableNames":[{"name":"value1","nativeSrc":"571:6:87","nodeType":"YulIdentifier","src":"571:6:87"}]},{"nativeSrc":"597:42:87","nodeType":"YulAssignment","src":"597:42:87","value":{"arguments":[{"arguments":[{"name":"headStart","nativeSrc":"624:9:87","nodeType":"YulIdentifier","src":"624:9:87"},{"kind":"number","nativeSrc":"635:2:87","nodeType":"YulLiteral","src":"635:2:87","type":"","value":"64"}],"functionName":{"name":"add","nativeSrc":"620:3:87","nodeType":"YulIdentifier","src":"620:3:87"},"nativeSrc":"620:18:87","nodeType":"YulFunctionCall","src":"620:18:87"}],"functionName":{"name":"calldataload","nativeSrc":"607:12:87","nodeType":"YulIdentifier","src":"607:12:87"},"nativeSrc":"607:32:87","nodeType":"YulFunctionCall","src":"607:32:87"},"variableNames":[{"name":"value2","nativeSrc":"597:6:87","nodeType":"YulIdentifier","src":"597:6:87"}]}]},"name":"abi_decode_tuple_t_contract$_IERC20_$8679t_addresst_uint256","nativeSrc":"158:487:87","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nativeSrc":"227:9:87","nodeType":"YulTypedName","src":"227:9:87","type":""},{"name":"dataEnd","nativeSrc":"238:7:87","nodeType":"YulTypedName","src":"238:7:87","type":""}],"returnVariables":[{"name":"value0","nativeSrc":"250:6:87","nodeType":"YulTypedName","src":"250:6:87","type":""},{"name":"value1","nativeSrc":"258:6:87","nodeType":"YulTypedName","src":"258:6:87","type":""},{"name":"value2","nativeSrc":"266:6:87","nodeType":"YulTypedName","src":"266:6:87","type":""}],"src":"158:487:87"},{"body":{"nativeSrc":"779:145:87","nodeType":"YulBlock","src":"779:145:87","statements":[{"nativeSrc":"789:26:87","nodeType":"YulAssignment","src":"789:26:87","value":{"arguments":[{"name":"headStart","nativeSrc":"801:9:87","nodeType":"YulIdentifier","src":"801:9:87"},{"kind":"number","nativeSrc":"812:2:87","nodeType":"YulLiteral","src":"812:2:87","type":"","value":"64"}],"functionName":{"name":"add","nativeSrc":"797:3:87","nodeType":"YulIdentifier","src":"797:3:87"},"nativeSrc":"797:18:87","nodeType":"YulFunctionCall","src":"797:18:87"},"variableNames":[{"name":"tail","nativeSrc":"789:4:87","nodeType":"YulIdentifier","src":"789:4:87"}]},{"expression":{"arguments":[{"name":"headStart","nativeSrc":"831:9:87","nodeType":"YulIdentifier","src":"831:9:87"},{"arguments":[{"name":"value0","nativeSrc":"846:6:87","nodeType":"YulIdentifier","src":"846:6:87"},{"arguments":[{"arguments":[{"kind":"number","nativeSrc":"862:3:87","nodeType":"YulLiteral","src":"862:3:87","type":"","value":"160"},{"kind":"number","nativeSrc":"867:1:87","nodeType":"YulLiteral","src":"867:1:87","type":"","value":"1"}],"functionName":{"name":"shl","nativeSrc":"858:3:87","nodeType":"YulIdentifier","src":"858:3:87"},"nativeSrc":"858:11:87","nodeType":"YulFunctionCall","src":"858:11:87"},{"kind":"number","nativeSrc":"871:1:87","nodeType":"YulLiteral","src":"871:1:87","type":"","value":"1"}],"functionName":{"name":"sub","nativeSrc":"854:3:87","nodeType":"YulIdentifier","src":"854:3:87"},"nativeSrc":"854:19:87","nodeType":"YulFunctionCall","src":"854:19:87"}],"functionName":{"name":"and","nativeSrc":"842:3:87","nodeType":"YulIdentifier","src":"842:3:87"},"nativeSrc":"842:32:87","nodeType":"YulFunctionCall","src":"842:32:87"}],"functionName":{"name":"mstore","nativeSrc":"824:6:87","nodeType":"YulIdentifier","src":"824:6:87"},"nativeSrc":"824:51:87","nodeType":"YulFunctionCall","src":"824:51:87"},"nativeSrc":"824:51:87","nodeType":"YulExpressionStatement","src":"824:51:87"},{"expression":{"arguments":[{"arguments":[{"name":"headStart","nativeSrc":"895:9:87","nodeType":"YulIdentifier","src":"895:9:87"},{"kind":"number","nativeSrc":"906:2:87","nodeType":"YulLiteral","src":"906:2:87","type":"","value":"32"}],"functionName":{"name":"add","nativeSrc":"891:3:87","nodeType":"YulIdentifier","src":"891:3:87"},"nativeSrc":"891:18:87","nodeType":"YulFunctionCall","src":"891:18:87"},{"name":"value1","nativeSrc":"911:6:87","nodeType":"YulIdentifier","src":"911:6:87"}],"functionName":{"name":"mstore","nativeSrc":"884:6:87","nodeType":"YulIdentifier","src":"884:6:87"},"nativeSrc":"884:34:87","nodeType":"YulFunctionCall","src":"884:34:87"},"nativeSrc":"884:34:87","nodeType":"YulExpressionStatement","src":"884:34:87"}]},"name":"abi_encode_tuple_t_address_t_uint256__to_t_address_t_uint256__fromStack_reversed","nativeSrc":"650:274:87","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nativeSrc":"740:9:87","nodeType":"YulTypedName","src":"740:9:87","type":""},{"name":"value1","nativeSrc":"751:6:87","nodeType":"YulTypedName","src":"751:6:87","type":""},{"name":"value0","nativeSrc":"759:6:87","nodeType":"YulTypedName","src":"759:6:87","type":""}],"returnVariables":[{"name":"tail","nativeSrc":"770:4:87","nodeType":"YulTypedName","src":"770:4:87","type":""}],"src":"650:274:87"},{"body":{"nativeSrc":"1007:199:87","nodeType":"YulBlock","src":"1007:199:87","statements":[{"body":{"nativeSrc":"1053:16:87","nodeType":"YulBlock","src":"1053:16:87","statements":[{"expression":{"arguments":[{"kind":"number","nativeSrc":"1062:1:87","nodeType":"YulLiteral","src":"1062:1:87","type":"","value":"0"},{"kind":"number","nativeSrc":"1065:1:87","nodeType":"YulLiteral","src":"1065:1:87","type":"","value":"0"}],"functionName":{"name":"revert","nativeSrc":"1055:6:87","nodeType":"YulIdentifier","src":"1055:6:87"},"nativeSrc":"1055:12:87","nodeType":"YulFunctionCall","src":"1055:12:87"},"nativeSrc":"1055:12:87","nodeType":"YulExpressionStatement","src":"1055:12:87"}]},"condition":{"arguments":[{"arguments":[{"name":"dataEnd","nativeSrc":"1028:7:87","nodeType":"YulIdentifier","src":"1028:7:87"},{"name":"headStart","nativeSrc":"1037:9:87","nodeType":"YulIdentifier","src":"1037:9:87"}],"functionName":{"name":"sub","nativeSrc":"1024:3:87","nodeType":"YulIdentifier","src":"1024:3:87"},"nativeSrc":"1024:23:87","nodeType":"YulFunctionCall","src":"1024:23:87"},{"kind":"number","nativeSrc":"1049:2:87","nodeType":"YulLiteral","src":"1049:2:87","type":"","value":"32"}],"functionName":{"name":"slt","nativeSrc":"1020:3:87","nodeType":"YulIdentifier","src":"1020:3:87"},"nativeSrc":"1020:32:87","nodeType":"YulFunctionCall","src":"1020:32:87"},"nativeSrc":"1017:52:87","nodeType":"YulIf","src":"1017:52:87"},{"nativeSrc":"1078:29:87","nodeType":"YulVariableDeclaration","src":"1078:29:87","value":{"arguments":[{"name":"headStart","nativeSrc":"1097:9:87","nodeType":"YulIdentifier","src":"1097:9:87"}],"functionName":{"name":"mload","nativeSrc":"1091:5:87","nodeType":"YulIdentifier","src":"1091:5:87"},"nativeSrc":"1091:16:87","nodeType":"YulFunctionCall","src":"1091:16:87"},"variables":[{"name":"value","nativeSrc":"1082:5:87","nodeType":"YulTypedName","src":"1082:5:87","type":""}]},{"body":{"nativeSrc":"1160:16:87","nodeType":"YulBlock","src":"1160:16:87","statements":[{"expression":{"arguments":[{"kind":"number","nativeSrc":"1169:1:87","nodeType":"YulLiteral","src":"1169:1:87","type":"","value":"0"},{"kind":"number","nativeSrc":"1172:1:87","nodeType":"YulLiteral","src":"1172:1:87","type":"","value":"0"}],"functionName":{"name":"revert","nativeSrc":"1162:6:87","nodeType":"YulIdentifier","src":"1162:6:87"},"nativeSrc":"1162:12:87","nodeType":"YulFunctionCall","src":"1162:12:87"},"nativeSrc":"1162:12:87","nodeType":"YulExpressionStatement","src":"1162:12:87"}]},"condition":{"arguments":[{"arguments":[{"name":"value","nativeSrc":"1129:5:87","nodeType":"YulIdentifier","src":"1129:5:87"},{"arguments":[{"arguments":[{"name":"value","nativeSrc":"1150:5:87","nodeType":"YulIdentifier","src":"1150:5:87"}],"functionName":{"name":"iszero","nativeSrc":"1143:6:87","nodeType":"YulIdentifier","src":"1143:6:87"},"nativeSrc":"1143:13:87","nodeType":"YulFunctionCall","src":"1143:13:87"}],"functionName":{"name":"iszero","nativeSrc":"1136:6:87","nodeType":"YulIdentifier","src":"1136:6:87"},"nativeSrc":"1136:21:87","nodeType":"YulFunctionCall","src":"1136:21:87"}],"functionName":{"name":"eq","nativeSrc":"1126:2:87","nodeType":"YulIdentifier","src":"1126:2:87"},"nativeSrc":"1126:32:87","nodeType":"YulFunctionCall","src":"1126:32:87"}],"functionName":{"name":"iszero","nativeSrc":"1119:6:87","nodeType":"YulIdentifier","src":"1119:6:87"},"nativeSrc":"1119:40:87","nodeType":"YulFunctionCall","src":"1119:40:87"},"nativeSrc":"1116:60:87","nodeType":"YulIf","src":"1116:60:87"},{"nativeSrc":"1185:15:87","nodeType":"YulAssignment","src":"1185:15:87","value":{"name":"value","nativeSrc":"1195:5:87","nodeType":"YulIdentifier","src":"1195:5:87"},"variableNames":[{"name":"value0","nativeSrc":"1185:6:87","nodeType":"YulIdentifier","src":"1185:6:87"}]}]},"name":"abi_decode_tuple_t_bool_fromMemory","nativeSrc":"929:277:87","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nativeSrc":"973:9:87","nodeType":"YulTypedName","src":"973:9:87","type":""},{"name":"dataEnd","nativeSrc":"984:7:87","nodeType":"YulTypedName","src":"984:7:87","type":""}],"returnVariables":[{"name":"value0","nativeSrc":"996:6:87","nodeType":"YulTypedName","src":"996:6:87","type":""}],"src":"929:277:87"}]},"contents":"{\n    { }\n    function validator_revert_contract_IERC20(value)\n    {\n        if iszero(eq(value, and(value, sub(shl(160, 1), 1)))) { revert(0, 0) }\n    }\n    function abi_decode_tuple_t_contract$_IERC20_$8679t_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_contract_IERC20(value)\n        value0 := value\n        let value_1 := calldataload(add(headStart, 32))\n        validator_revert_contract_IERC20(value_1)\n        value1 := value_1\n        value2 := calldataload(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, sub(shl(160, 1), 1)))\n        mstore(add(headStart, 32), value1)\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}","id":87,"language":"Yul","name":"#utility.yul"}],"immutableReferences":{},"linkReferences":{},"object":"608060405234801561000f575f5ffd5b5060043610610029575f3560e01c8063a5f2a1521461002d575b5f5ffd5b61004061003b3660046100cf565b610042565b005b60405163a9059cbb60e01b81526001600160a01b0383811660048301526024820183905284169063a9059cbb906044016020604051808303815f875af115801561008e573d5f5f3e3d5ffd5b505050506040513d601f19601f820116820180604052508101906100b2919061010d565b50505050565b6001600160a01b03811681146100cc575f5ffd5b50565b5f5f5f606084860312156100e1575f5ffd5b83356100ec816100b8565b925060208401356100fc816100b8565b929592945050506040919091013590565b5f6020828403121561011d575f5ffd5b8151801515811461012c575f5ffd5b939250505056fea2646970667358221220f2b7f995e0e3780bc3a4d0cc7bd1c44f6dbd0770416dc77545faea012f37e9a264736f6c634300081e0033","opcodes":"PUSH1 0x80 PUSH1 0x40 MSTORE CALLVALUE DUP1 ISZERO PUSH2 0xF JUMPI PUSH0 PUSH0 REVERT JUMPDEST POP PUSH1 0x4 CALLDATASIZE LT PUSH2 0x29 JUMPI PUSH0 CALLDATALOAD PUSH1 0xE0 SHR DUP1 PUSH4 0xA5F2A152 EQ PUSH2 0x2D JUMPI JUMPDEST PUSH0 PUSH0 REVERT JUMPDEST PUSH2 0x40 PUSH2 0x3B CALLDATASIZE PUSH1 0x4 PUSH2 0xCF JUMP JUMPDEST PUSH2 0x42 JUMP JUMPDEST STOP JUMPDEST PUSH1 0x40 MLOAD PUSH4 0xA9059CBB PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP4 DUP2 AND PUSH1 0x4 DUP4 ADD MSTORE PUSH1 0x24 DUP3 ADD DUP4 SWAP1 MSTORE DUP5 AND SWAP1 PUSH4 0xA9059CBB SWAP1 PUSH1 0x44 ADD PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 PUSH0 DUP8 GAS CALL ISZERO DUP1 ISZERO PUSH2 0x8E JUMPI RETURNDATASIZE PUSH0 PUSH0 RETURNDATACOPY RETURNDATASIZE PUSH0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP3 ADD DUP1 PUSH1 0x40 MSTORE POP DUP2 ADD SWAP1 PUSH2 0xB2 SWAP2 SWAP1 PUSH2 0x10D JUMP JUMPDEST POP POP POP POP JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 AND DUP2 EQ PUSH2 0xCC JUMPI PUSH0 PUSH0 REVERT JUMPDEST POP JUMP JUMPDEST PUSH0 PUSH0 PUSH0 PUSH1 0x60 DUP5 DUP7 SUB SLT ISZERO PUSH2 0xE1 JUMPI PUSH0 PUSH0 REVERT JUMPDEST DUP4 CALLDATALOAD PUSH2 0xEC DUP2 PUSH2 0xB8 JUMP JUMPDEST SWAP3 POP PUSH1 0x20 DUP5 ADD CALLDATALOAD PUSH2 0xFC DUP2 PUSH2 0xB8 JUMP JUMPDEST SWAP3 SWAP6 SWAP3 SWAP5 POP POP POP PUSH1 0x40 SWAP2 SWAP1 SWAP2 ADD CALLDATALOAD SWAP1 JUMP JUMPDEST PUSH0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x11D JUMPI PUSH0 PUSH0 REVERT JUMPDEST DUP2 MLOAD DUP1 ISZERO ISZERO DUP2 EQ PUSH2 0x12C JUMPI PUSH0 PUSH0 REVERT JUMPDEST SWAP4 SWAP3 POP POP POP JUMP INVALID LOG2 PUSH5 0x6970667358 0x22 SLT KECCAK256 CALLCODE 0xB7 EXTDELEGATECALL SWAP6 RJUMP 0xE378 SIGNEXTEND 0xC3 LOG4 0xD0 0xCC PUSH28 0xD1C44F6DBD0770416DC77545FAEA012F37E9A264736F6C634300081E STOP CALLER ","sourceMap":"482:138:73:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;508:110;;;;;;:::i;:::-;;:::i;:::-;;;586:27;;-1:-1:-1;;;586:27:73;;-1:-1:-1;;;;;842:32:87;;;586:27:73;;;824:51:87;891:18;;;884:34;;;586:15:73;;;;;797:18:87;;586:27:73;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;508:110;;;:::o;14:139:87:-;-1:-1:-1;;;;;97:31:87;;87:42;;77:70;;143:1;140;133:12;77:70;14:139;:::o;158:487::-;250:6;258;266;319:2;307:9;298:7;294:23;290:32;287:52;;;335:1;332;325:12;287:52;374:9;361:23;393:39;426:5;393:39;:::i;:::-;451:5;-1:-1:-1;508:2:87;493:18;;480:32;521:41;480:32;521:41;:::i;:::-;158:487;;581:7;;-1:-1:-1;;;635:2:87;620:18;;;;607:32;;158:487::o;929:277::-;996:6;1049:2;1037:9;1028:7;1024:23;1020:32;1017:52;;;1065:1;1062;1055:12;1017:52;1097:9;1091:16;1150:5;1143:13;1136:21;1129:5;1126:32;1116:60;;1172:1;1169;1162:12;1116:60;1195:5;929:277;-1:-1:-1;;;929:277:87:o"},"methodIdentifiers":{"transferTo(address,address,uint256)":"a5f2a152"}},"metadata":"{\"compiler\":{\"version\":\"0.8.30+commit.73712a01\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"inputs\":[{\"internalType\":\"contract IERC20\",\"name\":\"asset_\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"}],\"name\":\"transferTo\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"}],\"devdoc\":{\"kind\":\"dev\",\"methods\":{},\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{},\"version\":1}},\"settings\":{\"compilationTarget\":{\"contracts/mock/DummyInvestStrategy.sol\":\"OtherAddress\"},\"evmVersion\":\"prague\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"enabled\":true,\"runs\":200},\"remappings\":[]},\"sources\":{\"@openzeppelin/contracts/interfaces/IERC20.sol\":{\"keccak256\":\"0x1a6221315ce0307746c2c4827c125d821ee796c74a676787762f4778671d4f44\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://1bb2332a7ee26dd0b0de9b7fe266749f54820c99ab6a3bcb6f7e6b751d47ee2d\",\"dweb:/ipfs/QmcRWpaBeCYkhy68PR3B4AgD7asuQk7PwkWxrvJbZcikLF\"]},\"@openzeppelin/contracts/interfaces/IERC4626.sol\":{\"keccak256\":\"0xece5cbf726293ae6be1fbfade2936f052e1b399ed395ba1e221540ab82b62628\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://a9b97e58e90799e681dccbd4a8e469c6ebc2baf11312ad08f14332646123dd4b\",\"dweb:/ipfs/QmdamCQfxcuYinSNd3Et7VNo3oY98XSv4XCUQyq9xfMNUy\"]},\"@openzeppelin/contracts/token/ERC20/IERC20.sol\":{\"keccak256\":\"0x74ed01eb66b923d0d0cfe3be84604ac04b76482a55f9dd655e1ef4d367f95bc2\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://5282825a626cfe924e504274b864a652b0023591fa66f06a067b25b51ba9b303\",\"dweb:/ipfs/QmeCfPykghhMc81VJTrHTC7sF6CRvaA1FXVq2pJhwYp1dV\"]},\"@openzeppelin/contracts/token/ERC20/extensions/IERC20Metadata.sol\":{\"keccak256\":\"0xd6fa4088198f04eef10c5bce8a2f4d60554b7ec4b987f684393c01bf79b94d9f\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://f95ee0bbd4dd3ac730d066ba3e785ded4565e890dbec2fa7d3b9fe3bad9d0d6e\",\"dweb:/ipfs/QmSLr6bHkPFWT7ntj34jmwfyskpwo97T9jZUrk5sz3sdtR\"]},\"@openzeppelin/contracts/utils/Address.sol\":{\"keccak256\":\"0x0fa9e0d3a859900b5a46f70a03c73adf259603d5e05027a37fe0b45529d85346\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://c2add4da0240c9f2ce47649c8bb6b11b40e98cf6f88b8bdc76b2704e89391710\",\"dweb:/ipfs/QmNQTwF2uVzu4CRtNxr8bxyP9XuW6VsZuo2Nr4KR2bZr3d\"]},\"@openzeppelin/contracts/utils/Errors.sol\":{\"keccak256\":\"0x6afa713bfd42cf0f7656efa91201007ac465e42049d7de1d50753a373648c123\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://ba1d02f4847670a1b83dec9f7d37f0b0418d6043447b69f3a29a5f9efc547fcf\",\"dweb:/ipfs/QmQ7iH2keLNUKgq2xSWcRmuBE5eZ3F5whYAkAGzCNNoEWB\"]},\"@openzeppelin/contracts/utils/LowLevelCall.sol\":{\"keccak256\":\"0x5b4802a4352474792df3107e961d1cc593e47b820c14f69d3505cb28f5a6a583\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://a6f86fd01f829499fe0545ff5dda07d4521988e88bfe0bf801fc15650921ed56\",\"dweb:/ipfs/QmUUKu4ZDffHAmfkf3asuQfmLTyfpuy2Amdncc3SqfzKPG\"]},\"@openzeppelin/contracts/utils/StorageSlot.sol\":{\"keccak256\":\"0xcf74f855663ce2ae00ed8352666b7935f6cddea2932fdf2c3ecd30a9b1cd0e97\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://9f660b1f351b757dfe01438e59888f31f33ded3afcf5cb5b0d9bf9aa6f320a8b\",\"dweb:/ipfs/QmarDJ5hZEgBtCmmrVzEZWjub9769eD686jmzb2XpSU1cM\"]},\"contracts/InvestStrategyClient.sol\":{\"keccak256\":\"0x3c8fff73042023381eb750ba13a9066475d208e99bde568e1243f0e1e282c894\",\"license\":\"Apache-2.0\",\"urls\":[\"bzz-raw://3f8283ffa5c512e482b0065d9391c7060ebc1fa5968c55e6a05958480b7facb6\",\"dweb:/ipfs/QmT4N9Z19b6AUXpXtg23d3ijBExyKuRJBeQ3o8WCobgpfT\"]},\"contracts/interfaces/IExposeStorage.sol\":{\"keccak256\":\"0x68d4dbc7e135ac949f5f557a1f071b96d1639262188f91957bf082be7e72b1c7\",\"license\":\"Apache-2.0\",\"urls\":[\"bzz-raw://29fc549ef136e19275bb9225c8e7f02e0cc3b274acef4e6d7002c6f3f74e5c13\",\"dweb:/ipfs/QmVzrn7Cbxe8xzLwy4ZpzxP6CBEKsegXG8VusNYqssCe3d\"]},\"contracts/interfaces/IInvestStrategy.sol\":{\"keccak256\":\"0x6800a1f147def2252b79629150ce9cd87e914ca5a966f1035fbca6328bbc9c4b\",\"license\":\"Apache-2.0\",\"urls\":[\"bzz-raw://2e9260604e0ffcf405819f85fee4124d9a090cf716f389ff92cf76a2837a2e42\",\"dweb:/ipfs/QmVdKEW8C6MDyiiUfjBxEMTWjfPrBJadptpxh9L2uCebDK\"]},\"contracts/mock/DummyInvestStrategy.sol\":{\"keccak256\":\"0x248c197949e3c0449ebbf55ca397b3d1c49c77a318760581f8bfe1cf9ae455af\",\"license\":\"Apache-2.0\",\"urls\":[\"bzz-raw://dbae609f1835b15de96b23b9b70812a0078b1357de07d77dd6ec88b97ed8e096\",\"dweb:/ipfs/QmVyF2Hr5JispZG2D2uyRUcWJfi4T5oGEJBqDXzXqENh4Q\"]}},\"version\":1}","storageLayout":{"storage":[],"types":null}}},"contracts/mock/SingleStrategyERC4626.sol":{"SingleStrategyERC4626":{"abi":[{"inputs":[],"stateMutability":"nonpayable","type":"constructor"},{"inputs":[{"internalType":"address","name":"target","type":"address"}],"name":"AddressEmptyCode","type":"error"},{"inputs":[{"internalType":"address","name":"implementation","type":"address"}],"name":"ERC1967InvalidImplementation","type":"error"},{"inputs":[],"name":"ERC1967NonPayable","type":"error"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"allowance","type":"uint256"},{"internalType":"uint256","name":"needed","type":"uint256"}],"name":"ERC20InsufficientAllowance","type":"error"},{"inputs":[{"internalType":"address","name":"sender","type":"address"},{"internalType":"uint256","name":"balance","type":"uint256"},{"internalType":"uint256","name":"needed","type":"uint256"}],"name":"ERC20InsufficientBalance","type":"error"},{"inputs":[{"internalType":"address","name":"approver","type":"address"}],"name":"ERC20InvalidApprover","type":"error"},{"inputs":[{"internalType":"address","name":"receiver","type":"address"}],"name":"ERC20InvalidReceiver","type":"error"},{"inputs":[{"internalType":"address","name":"sender","type":"address"}],"name":"ERC20InvalidSender","type":"error"},{"inputs":[{"internalType":"address","name":"spender","type":"address"}],"name":"ERC20InvalidSpender","type":"error"},{"inputs":[{"internalType":"address","name":"receiver","type":"address"},{"internalType":"uint256","name":"assets","type":"uint256"},{"internalType":"uint256","name":"max","type":"uint256"}],"name":"ERC4626ExceededMaxDeposit","type":"error"},{"inputs":[{"internalType":"address","name":"receiver","type":"address"},{"internalType":"uint256","name":"shares","type":"uint256"},{"internalType":"uint256","name":"max","type":"uint256"}],"name":"ERC4626ExceededMaxMint","type":"error"},{"inputs":[{"internalType":"address","name":"owner","type":"address"},{"internalType":"uint256","name":"shares","type":"uint256"},{"internalType":"uint256","name":"max","type":"uint256"}],"name":"ERC4626ExceededMaxRedeem","type":"error"},{"inputs":[{"internalType":"address","name":"owner","type":"address"},{"internalType":"uint256","name":"assets","type":"uint256"},{"internalType":"uint256","name":"max","type":"uint256"}],"name":"ERC4626ExceededMaxWithdraw","type":"error"},{"inputs":[],"name":"FailedCall","type":"error"},{"inputs":[],"name":"InvalidInitialization","type":"error"},{"inputs":[],"name":"InvalidStrategyAsset","type":"error"},{"inputs":[],"name":"NotInitializing","type":"error"},{"inputs":[],"name":"OnlyStrategyStorageExposed","type":"error"},{"inputs":[{"internalType":"address","name":"token","type":"address"}],"name":"SafeERC20FailedOperation","type":"error"},{"inputs":[],"name":"UUPSUnauthorizedCallContext","type":"error"},{"inputs":[{"internalType":"bytes32","name":"slot","type":"bytes32"}],"name":"UUPSUnsupportedProxiableUUID","type":"error"},{"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":"sender","type":"address"},{"indexed":true,"internalType":"address","name":"owner","type":"address"},{"indexed":false,"internalType":"uint256","name":"assets","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"shares","type":"uint256"}],"name":"Deposit","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"bytes","name":"reason","type":"bytes"}],"name":"DepositFailed","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"bytes","name":"reason","type":"bytes"}],"name":"DepositFailed","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"bytes","name":"reason","type":"bytes"}],"name":"DisconnectFailed","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"bytes","name":"reason","type":"bytes"}],"name":"DisconnectFailed","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint64","name":"version","type":"uint64"}],"name":"Initialized","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"contract IInvestStrategy","name":"oldStrategy","type":"address"},{"indexed":false,"internalType":"contract IInvestStrategy","name":"newStrategy","type":"address"}],"name":"StrategyChanged","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"contract IInvestStrategy","name":"oldStrategy","type":"address"},{"indexed":false,"internalType":"contract IInvestStrategy","name":"newStrategy","type":"address"}],"name":"StrategyChanged","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":"implementation","type":"address"}],"name":"Upgraded","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"sender","type":"address"},{"indexed":true,"internalType":"address","name":"receiver","type":"address"},{"indexed":true,"internalType":"address","name":"owner","type":"address"},{"indexed":false,"internalType":"uint256","name":"assets","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"shares","type":"uint256"}],"name":"Withdraw","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"bytes","name":"reason","type":"bytes"}],"name":"WithdrawFailed","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"bytes","name":"reason","type":"bytes"}],"name":"WithdrawFailed","type":"event"},{"inputs":[],"name":"UPGRADE_INTERFACE_VERSION","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"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":"value","type":"uint256"}],"name":"approve","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"asset","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"balanceOf","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"shares","type":"uint256"}],"name":"convertToAssets","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"assets","type":"uint256"}],"name":"convertToShares","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":"assets","type":"uint256"},{"internalType":"address","name":"receiver","type":"address"}],"name":"deposit","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint8","name":"method","type":"uint8"},{"internalType":"bytes","name":"extraData","type":"bytes"}],"name":"forwardToStrategy","outputs":[{"internalType":"bytes","name":"","type":"bytes"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bytes32","name":"slot","type":"bytes32"}],"name":"getBytesSlot","outputs":[{"internalType":"bytes","name":"","type":"bytes"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"string","name":"name_","type":"string"},{"internalType":"string","name":"symbol_","type":"string"},{"internalType":"contract IERC20","name":"asset_","type":"address"},{"internalType":"contract IInvestStrategy","name":"strategy_","type":"address"},{"internalType":"bytes","name":"initStrategyData","type":"bytes"}],"name":"initialize","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"owner","type":"address"}],"name":"maxDeposit","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"owner","type":"address"}],"name":"maxMint","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"owner","type":"address"}],"name":"maxRedeem","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"owner","type":"address"}],"name":"maxWithdraw","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"shares","type":"uint256"},{"internalType":"address","name":"receiver","type":"address"}],"name":"mint","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"name","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"assets","type":"uint256"}],"name":"previewDeposit","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"shares","type":"uint256"}],"name":"previewMint","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"shares","type":"uint256"}],"name":"previewRedeem","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"assets","type":"uint256"}],"name":"previewWithdraw","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"proxiableUUID","outputs":[{"internalType":"bytes32","name":"","type":"bytes32"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"shares","type":"uint256"},{"internalType":"address","name":"receiver","type":"address"},{"internalType":"address","name":"owner","type":"address"}],"name":"redeem","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"contract IInvestStrategy","name":"newStrategy","type":"address"},{"internalType":"bytes","name":"initStrategyData","type":"bytes"},{"internalType":"bool","name":"force","type":"bool"}],"name":"setStrategy","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"strategy","outputs":[{"internalType":"contract IInvestStrategy","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"symbol","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"totalAssets","outputs":[{"internalType":"uint256","name":"assets","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"totalSupply","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"to","type":"address"},{"internalType":"uint256","name":"value","type":"uint256"}],"name":"transfer","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"from","type":"address"},{"internalType":"address","name":"to","type":"address"},{"internalType":"uint256","name":"value","type":"uint256"}],"name":"transferFrom","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"newImplementation","type":"address"},{"internalType":"bytes","name":"data","type":"bytes"}],"name":"upgradeToAndCall","outputs":[],"stateMutability":"payable","type":"function"},{"inputs":[{"internalType":"uint256","name":"assets","type":"uint256"},{"internalType":"address","name":"receiver","type":"address"},{"internalType":"address","name":"owner","type":"address"}],"name":"withdraw","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"nonpayable","type":"function"}],"evm":{"bytecode":{"functionDebugData":{"@_21368":{"entryPoint":null,"id":21368,"parameterSlots":0,"returnSlots":0},"@_disableInitializers_7874":{"entryPoint":33,"id":7874,"parameterSlots":0,"returnSlots":0},"@_getInitializableStorage_7919":{"entryPoint":null,"id":7919,"parameterSlots":0,"returnSlots":1},"@_initializableStorageSlot_7905":{"entryPoint":null,"id":7905,"parameterSlots":0,"returnSlots":1},"abi_encode_tuple_t_uint64__to_t_uint64__fromStack_reversed":{"entryPoint":null,"id":null,"parameterSlots":2,"returnSlots":1}},"generatedSources":[{"ast":{"nativeSrc":"0:216:87","nodeType":"YulBlock","src":"0:216:87","statements":[{"nativeSrc":"6:3:87","nodeType":"YulBlock","src":"6:3:87","statements":[]},{"body":{"nativeSrc":"113:101:87","nodeType":"YulBlock","src":"113:101:87","statements":[{"nativeSrc":"123:26:87","nodeType":"YulAssignment","src":"123:26:87","value":{"arguments":[{"name":"headStart","nativeSrc":"135:9:87","nodeType":"YulIdentifier","src":"135:9:87"},{"kind":"number","nativeSrc":"146:2:87","nodeType":"YulLiteral","src":"146:2:87","type":"","value":"32"}],"functionName":{"name":"add","nativeSrc":"131:3:87","nodeType":"YulIdentifier","src":"131:3:87"},"nativeSrc":"131:18:87","nodeType":"YulFunctionCall","src":"131:18:87"},"variableNames":[{"name":"tail","nativeSrc":"123:4:87","nodeType":"YulIdentifier","src":"123:4:87"}]},{"expression":{"arguments":[{"name":"headStart","nativeSrc":"165:9:87","nodeType":"YulIdentifier","src":"165:9:87"},{"arguments":[{"name":"value0","nativeSrc":"180:6:87","nodeType":"YulIdentifier","src":"180:6:87"},{"arguments":[{"arguments":[{"kind":"number","nativeSrc":"196:2:87","nodeType":"YulLiteral","src":"196:2:87","type":"","value":"64"},{"kind":"number","nativeSrc":"200:1:87","nodeType":"YulLiteral","src":"200:1:87","type":"","value":"1"}],"functionName":{"name":"shl","nativeSrc":"192:3:87","nodeType":"YulIdentifier","src":"192:3:87"},"nativeSrc":"192:10:87","nodeType":"YulFunctionCall","src":"192:10:87"},{"kind":"number","nativeSrc":"204:1:87","nodeType":"YulLiteral","src":"204:1:87","type":"","value":"1"}],"functionName":{"name":"sub","nativeSrc":"188:3:87","nodeType":"YulIdentifier","src":"188:3:87"},"nativeSrc":"188:18:87","nodeType":"YulFunctionCall","src":"188:18:87"}],"functionName":{"name":"and","nativeSrc":"176:3:87","nodeType":"YulIdentifier","src":"176:3:87"},"nativeSrc":"176:31:87","nodeType":"YulFunctionCall","src":"176:31:87"}],"functionName":{"name":"mstore","nativeSrc":"158:6:87","nodeType":"YulIdentifier","src":"158:6:87"},"nativeSrc":"158:50:87","nodeType":"YulFunctionCall","src":"158:50:87"},"nativeSrc":"158:50:87","nodeType":"YulExpressionStatement","src":"158:50:87"}]},"name":"abi_encode_tuple_t_uint64__to_t_uint64__fromStack_reversed","nativeSrc":"14:200:87","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nativeSrc":"82:9:87","nodeType":"YulTypedName","src":"82:9:87","type":""},{"name":"value0","nativeSrc":"93:6:87","nodeType":"YulTypedName","src":"93:6:87","type":""}],"returnVariables":[{"name":"tail","nativeSrc":"104:4:87","nodeType":"YulTypedName","src":"104:4:87","type":""}],"src":"14:200:87"}]},"contents":"{\n    { }\n    function abi_encode_tuple_t_uint64__to_t_uint64__fromStack_reversed(headStart, value0) -> tail\n    {\n        tail := add(headStart, 32)\n        mstore(headStart, and(value0, sub(shl(64, 1), 1)))\n    }\n}","id":87,"language":"Yul","name":"#utility.yul"}],"linkReferences":{},"object":"60a060405230608052348015610013575f5ffd5b5061001c610021565b6100d3565b7ff0c57e16840df040f15088dc2f81fe391c3923bec73e23a9662efc9c229c6a00805468010000000000000000900460ff16156100715760405163f92ee8a960e01b815260040160405180910390fd5b80546001600160401b03908116146100d05780546001600160401b0319166001600160401b0390811782556040519081527fc7f505b2f371ae2175ee4913f4499e1f2633a7b5936321eed1cdaeb6115181d29060200160405180910390a15b50565b6080516128c86100f95f395f8181610ef701528181610f20015261105c01526128c85ff3fe6080604052600436106101e6575f3560e01c806394bf804d11610108578063c63d75b61161009d578063d905777e1161006d578063d905777e1461055f578063d9221bb51461057e578063dd62ed3e1461059d578063ef8b30f714610502578063effe0e1c146105bc575f5ffd5b8063c63d75b6146104e3578063c6e6f59214610502578063ce96cb7714610521578063d4f3911014610540575f5ffd5b8063ad3cb1cc116100d8578063ad3cb1cc14610456578063b3d7f6b914610486578063b460af94146104a5578063ba087652146104c4575f5ffd5b806394bf804d146103e857806395d89b4114610407578063a8c62e761461041b578063a9059cbb14610437575f5ffd5b806338d52e0f1161017e5780634f1ef2861161014e5780634f1ef2861461038157806352d1902d146103965780636e553f65146103aa57806370a08231146103c9575f5ffd5b806338d52e0f14610317578063402d267d1461034357806347e57533146103625780634cdad50614610232575f5ffd5b80630a28a477116101b95780630a28a4771461028057806318160ddd1461029f57806323b872dd146102d2578063313ce567146102f1575f5ffd5b806301e1d114146101ea57806306fdde031461021157806307a2d13a14610232578063095ea7b314610251575b5f5ffd5b3480156101f5575f5ffd5b506101fe6105db565b6040519081526020015b60405180910390f35b34801561021c575f5ffd5b506102256105f5565b6040516102089190612199565b34801561023d575f5ffd5b506101fe61024c3660046121ab565b6106b5565b34801561025c575f5ffd5b5061027061026b3660046121d6565b6106c6565b6040519015158152602001610208565b34801561028b575f5ffd5b506101fe61029a3660046121ab565b6106dd565b3480156102aa575f5ffd5b507f52c63247e1f47db19d5ce0460030c497f067ca4cebf71ba98eeadabe20bace02546101fe565b3480156102dd575f5ffd5b506102706102ec366004612200565b6106e9565b3480156102fc575f5ffd5b5061030561070e565b60405160ff9091168152602001610208565b348015610322575f5ffd5b5061032b610750565b6040516001600160a01b039091168152602001610208565b34801561034e575f5ffd5b506101fe61035d36600461223e565b61077e565b34801561036d575f5ffd5b5061022561037c3660046121ab565b6107a3565b61039461038f3660046122fe565b6108c0565b005b3480156103a1575f5ffd5b506101fe6108d6565b3480156103b5575f5ffd5b506101fe6103c436600461234b565b6108f1565b3480156103d4575f5ffd5b506101fe6103e336600461223e565b61094e565b3480156103f3575f5ffd5b506101fe61040236600461234b565b610974565b348015610412575f5ffd5b506102256109c0565b348015610426575f5ffd5b505f546001600160a01b031661032b565b348015610442575f5ffd5b506102706104513660046121d6565b6109fe565b348015610461575f5ffd5b50610225604051806040016040528060058152602001640352e302e360dc1b81525081565b348015610491575f5ffd5b506101fe6104a03660046121ab565b610a0b565b3480156104b0575f5ffd5b506101fe6104bf366004612379565b610a17565b3480156104cf575f5ffd5b506101fe6104de366004612379565b610a6d565b3480156104ee575f5ffd5b506101fe6104fd36600461223e565b610aba565b34801561050d575f5ffd5b506101fe61051c3660046121ab565b610ae0565b34801561052c575f5ffd5b506101fe61053b36600461223e565b610aeb565b34801561054b575f5ffd5b5061022561055a3660046123b8565b610b0d565b34801561056a575f5ffd5b506101fe61057936600461223e565b610b26565b348015610589575f5ffd5b506103946105983660046123d9565b610b55565b3480156105a8575f5ffd5b506101fe6105b7366004612432565b610b97565b3480156105c7575f5ffd5b506103946105d636600461245e565b610be0565b5f80546105f0906001600160a01b0316610ce1565b905090565b7f52c63247e1f47db19d5ce0460030c497f067ca4cebf71ba98eeadabe20bace0380546060915f5160206128535f395f51905f529161063390612511565b80601f016020809104026020016040519081016040528092919081815260200182805461065f90612511565b80156106aa5780601f10610681576101008083540402835291602001916106aa565b820191905f5260205f20905b81548152906001019060200180831161068d57829003601f168201915b505050505091505090565b5f6106c0825f610d4a565b92915050565b5f336106d3818585610da1565b5060019392505050565b5f6106c0826001610db3565b5f336106f6858285610e01565b610701858585610e52565b60019150505b9392505050565b5f807f0773e532dfede91f04b12a73d3d2acd361424f41f76b4fb79f090161e36b4e0090505f815461074a9190600160a01b900460ff1661255d565b91505090565b7f0773e532dfede91f04b12a73d3d2acd361424f41f76b4fb79f090161e36b4e00546001600160a01b031690565b5f80546106c090610797906001600160a01b0316610eaf565b5f19610edd565b610edd565b5f5460408051635b9a4c3560e01b815290516060926001600160a01b031691635b9a4c359160048083019260209291908290030181865afa1580156107ea573d5f5f3e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061080e9190612576565b821461082d5760405163213109dd60e11b815260040160405180910390fd5b81548290819061083c90612511565b80601f016020809104026020016040519081016040528092919081815260200182805461086890612511565b80156108b35780601f1061088a576101008083540402835291602001916108b3565b820191905f5260205f20905b81548152906001019060200180831161089657829003601f168201915b5050505050915050919050565b6108c8610eec565b6108d28282610f95565b5050565b5f6108df611051565b505f5160206128735f395f51905f5290565b5f5f6108fc8361077e565b90508084111561092e57828482604051633c8097d960e11b81526004016109259392919061258d565b60405180910390fd5b5f61093885610ae0565b90506109463385878461109a565b949350505050565b6001600160a01b03165f9081525f5160206128535f395f51905f52602052604090205490565b5f5f61097f83610aba565b9050808411156109a85782848260405163284ff66760e01b81526004016109259392919061258d565b5f6109b285610a0b565b90506109463385838861109a565b7f52c63247e1f47db19d5ce0460030c497f067ca4cebf71ba98eeadabe20bace0480546060915f5160206128535f395f51905f529161063390612511565b5f336106d3818585610e52565b5f6106c0826001610d4a565b5f5f610a2283610aeb565b905080851115610a4b57828582604051633fa733bb60e21b81526004016109259392919061258d565b5f610a55866106dd565b9050610a6433868689856110c7565b95945050505050565b5f5f610a7883610b26565b905080851115610aa157828582604051632e52afbb60e21b81526004016109259392919061258d565b5f610aab866106b5565b9050610a64338686848a6110c7565b5f80548190610ad1906001600160a01b0316610eaf565b9050610707610797825f610db3565b5f6106c0825f610db3565b5f80546106c090610b04906001600160a01b03166110ef565b61079e8461111d565b5f54606090610707906001600160a01b0316848461112a565b5f80548190610b3d906001600160a01b03166110ef565b9050610707610b4c825f610db3565b61079e8561117c565b5f54610b74906001600160a01b03168484610b6e610750565b85611186565b50505f80546001600160a01b0319166001600160a01b0392909216919091179055565b6001600160a01b039182165f9081527f52c63247e1f47db19d5ce0460030c497f067ca4cebf71ba98eeadabe20bace016020908152604080832093909416825291909152205490565b5f610be96112d4565b805490915060ff600160401b820416159067ffffffffffffffff165f81158015610c105750825b90505f8267ffffffffffffffff166001148015610c2c5750303b155b905081158015610c3a575080155b15610c585760405163f92ee8a960e01b815260040160405180910390fd5b845467ffffffffffffffff191660011785558315610c8257845460ff60401b1916600160401b1785555b610c8f8a8a8a8a8a6112fc565b8315610cd557845460ff60401b19168555604051600181527fc7f505b2f371ae2175ee4913f4499e1f2633a7b5936321eed1cdaeb6115181d29060200160405180910390a15b50505050505050505050565b60405163f3e0ffbf60e01b81523060048201525f906001600160a01b0383169063f3e0ffbf906024015b602060405180830381865afa158015610d26573d5f5f3e3d5ffd5b505050506040513d601f19601f820116820180604052508101906106c09190612576565b5f610707610d566105db565b610d619060016125ae565b610d6c5f600a6126a4565b7f52c63247e1f47db19d5ce0460030c497f067ca4cebf71ba98eeadabe20bace0254610d9891906125ae565b85919085611321565b610dae8383836001611363565b505050565b5f610707610dc282600a6126a4565b7f52c63247e1f47db19d5ce0460030c497f067ca4cebf71ba98eeadabe20bace0254610dee91906125ae565b610df66105db565b610d989060016125ae565b5f610e0c8484610b97565b90505f19811015610e4c5781811015610e3e57828183604051637dc7a0d960e11b81526004016109259392919061258d565b610e4c84848484035f611363565b50505050565b6001600160a01b038316610e7b57604051634b637e8f60e11b81525f6004820152602401610925565b6001600160a01b038216610ea45760405163ec442f0560e01b81525f6004820152602401610925565b610dae838383611446565b60405163402d267d60e01b81523060048201525f906001600160a01b0383169063402d267d90602401610d0b565b5f828218828410028218610707565b306001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000161480610f7257507f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316610f665f5160206128735f395f51905f52546001600160a01b031690565b6001600160a01b031614155b15610f905760405163703e46dd60e11b815260040160405180910390fd5b565b50565b816001600160a01b03166352d1902d6040518163ffffffff1660e01b8152600401602060405180830381865afa925050508015610fef575060408051601f3d908101601f19168201909252610fec91810190612576565b60015b61101757604051634c9c8ce360e01b81526001600160a01b0383166004820152602401610925565b5f5160206128735f395f51905f52811461104757604051632a87526960e21b815260048101829052602401610925565b610dae838361156c565b306001600160a01b037f00000000000000000000000000000000000000000000000000000000000000001614610f905760405163703e46dd60e11b815260040160405180910390fd5b6110a6848484846115c1565b5f80546110c0916001600160a01b0390911690849061162c565b5050505050565b5f80546110e1916001600160a01b03909116908490611768565b506110c08585858585611889565b60405163ce96cb7760e01b81523060048201525f906001600160a01b0383169063ce96cb7790602401610d0b565b5f6106c061024c83610b26565b606061094683836040516024016111429291906126b2565b60408051601f198184030181529190526020810180516001600160e01b03166304c0d8e160e11b1790526001600160a01b03861690611930565b5f6106c08261094e565b61119084836119d0565b60405163f3e0ffbf60e01b81523060048201526112029086906001600160a01b0382169063f3e0ffbf90602401602060405180830381865afa1580156111d8573d5f5f3e3d5ffd5b505050506040513d601f19601f820116820180604052508101906111fc9190612576565b83611768565b5061120d8582611a62565b6112178484611b87565b6040516370a0823160e01b81523060048201526112899085906001600160a01b038516906370a0823190602401602060405180830381865afa15801561125f573d5f5f3e3d5ffd5b505050506040513d601f19601f820116820180604052508101906112839190612576565b8361162c565b50604080516001600160a01b038088168252861660208201527f254c88e7a2ea123aeeb89b7cc413fb949188fefcdb7584c4f3d493294daf65c5910160405180910390a15050505050565b5f807ff0c57e16840df040f15088dc2f81fe391c3923bec73e23a9662efc9c229c6a006106c0565b611304611bd5565b61130e8585611bfa565b61131783611c0c565b6110c08282611c1d565b5f61134e61132e83611c6f565b801561134957505f8480611344576113446126cd565b868809115b151590565b611359868686611c9b565b610a6491906125ae565b5f5160206128535f395f51905f526001600160a01b03851661139a5760405163e602df0560e01b81525f6004820152602401610925565b6001600160a01b0384166113c357604051634a1406b160e11b81525f6004820152602401610925565b6001600160a01b038086165f908152600183016020908152604080832093881683529290522083905581156110c057836001600160a01b0316856001600160a01b03167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b9258560405161143791815260200190565b60405180910390a35050505050565b5f5160206128535f395f51905f526001600160a01b0384166114805781816002015f82825461147591906125ae565b909155506114dd9050565b6001600160a01b0384165f90815260208290526040902054828110156114bf5784818460405163391434e360e21b81526004016109259392919061258d565b6001600160a01b0385165f9081526020839052604090209083900390555b6001600160a01b0383166114fb576002810180548390039055611519565b6001600160a01b0383165f9081526020829052604090208054830190555b826001600160a01b0316846001600160a01b03167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef8460405161155e91815260200190565b60405180910390a350505050565b61157582611d4b565b6040516001600160a01b038316907fbc7cd75a20ee27fd9adebab32041f755214dbc6bffa90cc0225b39da2e5c2d3b905f90a28051156115b957610dae8282611930565b6108d2611dae565b6115d46115cc610750565b853085611dcd565b6115de8382611e03565b826001600160a01b0316846001600160a01b03167fdcbc1c05240f31ff3ad067ef1ee35ce4997762752e3a095284754544f4c709d7848460405161155e929190918252602082015260400190565b5f811561170e575f5f856001600160a01b03168560405160240161165291815260200190565b60408051601f198184030181529181526020820180516001600160e01b031663b6b55f2560e01b1790525161168791906126e1565b5f60405180830381855af49150503d805f81146116bf576040519150601f19603f3d011682016040523d82523d5f602084013e6116c4565b606091505b509150915081611706577ff8e68f23d3b33772e986cc9861e94e8fd6b9461d62bc1fb21cd754bbaf726bd3816040516116fd9190612199565b60405180910390a15b509050610707565b61175e8360405160240161172491815260200190565b60408051601f198184030181529190526020810180516001600160e01b031663b6b55f2560e01b1790526001600160a01b03861690611930565b5060019050610707565b5f8115611839575f5f856001600160a01b03168560405160240161178e91815260200190565b60408051601f198184030181529181526020820180516001600160e01b0316632e1a7d4d60e01b179052516117c391906126e1565b5f60405180830381855af49150503d805f81146117fb576040519150601f19603f3d011682016040523d82523d5f602084013e611800565b606091505b509150915081611706577fad0ad28a12a6ed800f1a7b398454913afe6826c175e6cc28f2e8e2c175b0d728816040516116fd9190612199565b61175e8360405160240161184f91815260200190565b60408051601f198184030181529190526020810180516001600160e01b0316632e1a7d4d60e01b1790526001600160a01b03861690611930565b826001600160a01b0316856001600160a01b0316146118ad576118ad838683610e01565b6118b78382611e37565b6118c96118c2610750565b8584611e6b565b826001600160a01b0316846001600160a01b0316866001600160a01b03167ffbde797d201c681b91056529119e0b02407c7bb96a4a2c75c01fc9667232c8db8585604051611921929190918252602082015260400190565b60405180910390a45050505050565b60605f61193d8484611ea0565b905080801561195e57505f3d118061195e57505f846001600160a01b03163b115b156119735761196b611eb3565b9150506106c0565b801561199d57604051639996b31560e01b81526001600160a01b0385166004820152602401610925565b3d156119b0576119ab611ecc565b6119c9565b60405163d6bda27560e01b815260040160405180910390fd5b5092915050565b604051634e2333d160e11b81523060048201526001600160a01b038083169190841690639c4667a290602401602060405180830381865afa158015611a17573d5f5f3e3d5ffd5b505050506040513d601f19601f82011682018060405250810190611a3b91906126f7565b6001600160a01b0316146108d25760405163e76673ef60e01b815260040160405180910390fd5b8015611b3d57604051600160248201525f9081906001600160a01b0385169060440160408051601f198184030181529181526020820180516001600160e01b0316632d08ba2b60e11b17905251611ab991906126e1565b5f60405180830381855af49150503d805f8114611af1576040519150601f19603f3d011682016040523d82523d5f602084013e611af6565b606091505b509150915081610e4c577f9f864ace9f45c2734f9444cb9a0c1ade6f1b15a8c202c17175b759728a4a0bf881604051611b2f9190612199565b60405180910390a150505050565b6040515f6024820152610dae9060440160408051601f198184030181529190526020810180516001600160e01b0316632d08ba2b60e11b1790526001600160a01b03841690611930565b610dae81604051602401611b9b9190612199565b60408051601f198184030181529190526020810180516001600160e01b031663139a8e2560e31b1790526001600160a01b03841690611930565b611bdd611ed7565b610f9057604051631afcd79f60e31b815260040160405180910390fd5b611c02611bd5565b6108d28282611ef0565b611c14611bd5565b610f9281611f40565b611c25611bd5565b5f80546001600160a01b0319166001600160a01b038416179055611c5a611c4a610750565b6001600160a01b038416906119d0565b5f546108d2906001600160a01b031682611b87565b5f6002826003811115611c8457611c84612712565b611c8e9190612726565b60ff166001149050919050565b5f5f5f611ca88686611fc3565b91509150815f03611ccc57838181611cc257611cc26126cd565b0492505050610707565b818411611ce357611ce36003851502601118611fdf565b5f848688095f868103871696879004966002600389028118808a02820302808a02820302808a02820302808a02820302808a02820302808a02909103029181900381900460010185841190960395909502919093039390930492909217029150509392505050565b806001600160a01b03163b5f03611d8057604051634c9c8ce360e01b81526001600160a01b0382166004820152602401610925565b5f5160206128735f395f51905f5280546001600160a01b0319166001600160a01b0392909216919091179055565b3415610f905760405163b398979f60e01b815260040160405180910390fd5b611ddb848484846001611ff0565b610e4c57604051635274afe760e01b81526001600160a01b0385166004820152602401610925565b6001600160a01b038216611e2c5760405163ec442f0560e01b81525f6004820152602401610925565b6108d25f8383611446565b6001600160a01b038216611e6057604051634b637e8f60e11b81525f6004820152602401610925565b6108d2825f83611446565b611e78838383600161205d565b610dae57604051635274afe760e01b81526001600160a01b0384166004820152602401610925565b5f5f5f835160208501865af49392505050565b6040513d81523d5f602083013e3d602001810160405290565b6040513d5f823e3d81fd5b5f611ee06112d4565b54600160401b900460ff16919050565b611ef8611bd5565b5f5160206128535f395f51905f527f52c63247e1f47db19d5ce0460030c497f067ca4cebf71ba98eeadabe20bace03611f318482612797565b5060048101610e4c8382612797565b611f48611bd5565b7f0773e532dfede91f04b12a73d3d2acd361424f41f76b4fb79f090161e36b4e005f80611f74846120bf565b9150915081611f84576012611f86565b805b83546001600160a81b031916600160a01b60ff92909216919091026001600160a01b031916176001600160a01b0394909416939093179091555050565b5f805f1983850993909202808410938190039390930393915050565b634e487b715f52806020526024601cfd5b6040516323b872dd60e01b5f8181526001600160a01b038781166004528616602452604485905291602083606481808c5af1925060015f5114831661204c578383151615612040573d5f823e3d81fd5b5f883b113d1516831692505b604052505f60605295945050505050565b60405163a9059cbb60e01b5f8181526001600160a01b038616600452602485905291602083604481808b5af1925060015f511483166120b35783831516156120a7573d5f823e3d81fd5b5f873b113d1516831692505b60405250949350505050565b5f5f5f6120cb60405190565b6040805160048152602481019091526020810180516001600160e01b031663313ce56760e01b1790529091505f90819061210690879061214a565b509150915061211483604052565b818015612122575060203d10155b801561212f575060ff8111155b61213a575f5f61213e565b6001815b94509450505050915091565b5f5f5f60405f855160208701885afa92505f51915060205190509250925092565b5f81518084528060208401602086015e5f602082860101526020601f19601f83011685010191505092915050565b602081525f610707602083018461216b565b5f602082840312156121bb575f5ffd5b5035919050565b6001600160a01b0381168114610f92575f5ffd5b5f5f604083850312156121e7575f5ffd5b82356121f2816121c2565b946020939093013593505050565b5f5f5f60608486031215612212575f5ffd5b833561221d816121c2565b9250602084013561222d816121c2565b929592945050506040919091013590565b5f6020828403121561224e575f5ffd5b8135610707816121c2565b634e487b7160e01b5f52604160045260245ffd5b5f82601f83011261227c575f5ffd5b8135602083015f5f67ffffffffffffffff84111561229c5761229c612259565b50604051601f19601f85018116603f0116810181811067ffffffffffffffff821117156122cb576122cb612259565b6040528381529050808284018710156122e2575f5ffd5b838360208301375f602085830101528094505050505092915050565b5f5f6040838503121561230f575f5ffd5b823561231a816121c2565b9150602083013567ffffffffffffffff811115612335575f5ffd5b6123418582860161226d565b9150509250929050565b5f5f6040838503121561235c575f5ffd5b82359150602083013561236e816121c2565b809150509250929050565b5f5f5f6060848603121561238b575f5ffd5b83359250602084013561239d816121c2565b915060408401356123ad816121c2565b809150509250925092565b5f5f604083850312156123c9575f5ffd5b823560ff8116811461231a575f5ffd5b5f5f5f606084860312156123eb575f5ffd5b83356123f6816121c2565b9250602084013567ffffffffffffffff811115612411575f5ffd5b61241d8682870161226d565b925050604084013580151581146123ad575f5ffd5b5f5f60408385031215612443575f5ffd5b823561244e816121c2565b9150602083013561236e816121c2565b5f5f5f5f5f60a08688031215612472575f5ffd5b853567ffffffffffffffff811115612488575f5ffd5b6124948882890161226d565b955050602086013567ffffffffffffffff8111156124b0575f5ffd5b6124bc8882890161226d565b94505060408601356124cd816121c2565b925060608601356124dd816121c2565b9150608086013567ffffffffffffffff8111156124f8575f5ffd5b6125048882890161226d565b9150509295509295909350565b600181811c9082168061252557607f821691505b60208210810361254357634e487b7160e01b5f52602260045260245ffd5b50919050565b634e487b7160e01b5f52601160045260245ffd5b60ff81811683821601908111156106c0576106c0612549565b5f60208284031215612586575f5ffd5b5051919050565b6001600160a01b039390931683526020830191909152604082015260600190565b808201808211156106c0576106c0612549565b6001815b60018411156125fc578085048111156125e0576125e0612549565b60018416156125ee57908102905b60019390931c9280026125c5565b935093915050565b5f82612612575060016106c0565b8161261e57505f6106c0565b8160018114612634576002811461263e5761265a565b60019150506106c0565b60ff84111561264f5761264f612549565b50506001821b6106c0565b5060208310610133831016604e8410600b841016171561267d575081810a6106c0565b6126895f1984846125c1565b805f190482111561269c5761269c612549565b029392505050565b5f61070760ff841683612604565b60ff83168152604060208201525f610946604083018461216b565b634e487b7160e01b5f52601260045260245ffd5b5f82518060208501845e5f920191825250919050565b5f60208284031215612707575f5ffd5b8151610707816121c2565b634e487b7160e01b5f52602160045260245ffd5b5f60ff83168061274457634e487b7160e01b5f52601260045260245ffd5b8060ff84160691505092915050565b601f821115610dae57805f5260205f20601f840160051c810160208510156127785750805b601f840160051c820191505b818110156110c0575f8155600101612784565b815167ffffffffffffffff8111156127b1576127b1612259565b6127c5816127bf8454612511565b84612753565b6020601f8211600181146127f7575f83156127e05750848201515b5f19600385901b1c1916600184901b1784556110c0565b5f84815260208120601f198516915b828110156128265787850151825560209485019460019092019101612806565b508482101561284357868401515f19600387901b60f8161c191681555b50505050600190811b0190555056fe52c63247e1f47db19d5ce0460030c497f067ca4cebf71ba98eeadabe20bace00360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbca264697066735822122066b88bc495245f8bc6ee8839d24d6d9c3d76729af71ac31f0634dfd8054c470864736f6c634300081e0033","opcodes":"PUSH1 0xA0 PUSH1 0x40 MSTORE ADDRESS PUSH1 0x80 MSTORE CALLVALUE DUP1 ISZERO PUSH2 0x13 JUMPI PUSH0 PUSH0 REVERT JUMPDEST POP PUSH2 0x1C PUSH2 0x21 JUMP JUMPDEST PUSH2 0xD3 JUMP JUMPDEST PUSH32 0xF0C57E16840DF040F15088DC2F81FE391C3923BEC73E23A9662EFC9C229C6A00 DUP1 SLOAD PUSH9 0x10000000000000000 SWAP1 DIV PUSH1 0xFF AND ISZERO PUSH2 0x71 JUMPI PUSH1 0x40 MLOAD PUSH4 0xF92EE8A9 PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST DUP1 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0x40 SHL SUB SWAP1 DUP2 AND EQ PUSH2 0xD0 JUMPI DUP1 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0x40 SHL SUB NOT AND PUSH1 0x1 PUSH1 0x1 PUSH1 0x40 SHL SUB SWAP1 DUP2 OR DUP3 SSTORE PUSH1 0x40 MLOAD SWAP1 DUP2 MSTORE PUSH32 0xC7F505B2F371AE2175EE4913F4499E1F2633A7B5936321EED1CDAEB6115181D2 SWAP1 PUSH1 0x20 ADD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 LOG1 JUMPDEST POP JUMP JUMPDEST PUSH1 0x80 MLOAD PUSH2 0x28C8 PUSH2 0xF9 PUSH0 CODECOPY PUSH0 DUP2 DUP2 PUSH2 0xEF7 ADD MSTORE DUP2 DUP2 PUSH2 0xF20 ADD MSTORE PUSH2 0x105C ADD MSTORE PUSH2 0x28C8 PUSH0 RETURN INVALID PUSH1 0x80 PUSH1 0x40 MSTORE PUSH1 0x4 CALLDATASIZE LT PUSH2 0x1E6 JUMPI PUSH0 CALLDATALOAD PUSH1 0xE0 SHR DUP1 PUSH4 0x94BF804D GT PUSH2 0x108 JUMPI DUP1 PUSH4 0xC63D75B6 GT PUSH2 0x9D JUMPI DUP1 PUSH4 0xD905777E GT PUSH2 0x6D JUMPI DUP1 PUSH4 0xD905777E EQ PUSH2 0x55F JUMPI DUP1 PUSH4 0xD9221BB5 EQ PUSH2 0x57E JUMPI DUP1 PUSH4 0xDD62ED3E EQ PUSH2 0x59D JUMPI DUP1 PUSH4 0xEF8B30F7 EQ PUSH2 0x502 JUMPI DUP1 PUSH4 0xEFFE0E1C EQ PUSH2 0x5BC JUMPI PUSH0 PUSH0 REVERT JUMPDEST DUP1 PUSH4 0xC63D75B6 EQ PUSH2 0x4E3 JUMPI DUP1 PUSH4 0xC6E6F592 EQ PUSH2 0x502 JUMPI DUP1 PUSH4 0xCE96CB77 EQ PUSH2 0x521 JUMPI DUP1 PUSH4 0xD4F39110 EQ PUSH2 0x540 JUMPI PUSH0 PUSH0 REVERT JUMPDEST DUP1 PUSH4 0xAD3CB1CC GT PUSH2 0xD8 JUMPI DUP1 PUSH4 0xAD3CB1CC EQ PUSH2 0x456 JUMPI DUP1 PUSH4 0xB3D7F6B9 EQ PUSH2 0x486 JUMPI DUP1 PUSH4 0xB460AF94 EQ PUSH2 0x4A5 JUMPI DUP1 PUSH4 0xBA087652 EQ PUSH2 0x4C4 JUMPI PUSH0 PUSH0 REVERT JUMPDEST DUP1 PUSH4 0x94BF804D EQ PUSH2 0x3E8 JUMPI DUP1 PUSH4 0x95D89B41 EQ PUSH2 0x407 JUMPI DUP1 PUSH4 0xA8C62E76 EQ PUSH2 0x41B JUMPI DUP1 PUSH4 0xA9059CBB EQ PUSH2 0x437 JUMPI PUSH0 PUSH0 REVERT JUMPDEST DUP1 PUSH4 0x38D52E0F GT PUSH2 0x17E JUMPI DUP1 PUSH4 0x4F1EF286 GT PUSH2 0x14E JUMPI DUP1 PUSH4 0x4F1EF286 EQ PUSH2 0x381 JUMPI DUP1 PUSH4 0x52D1902D EQ PUSH2 0x396 JUMPI DUP1 PUSH4 0x6E553F65 EQ PUSH2 0x3AA JUMPI DUP1 PUSH4 0x70A08231 EQ PUSH2 0x3C9 JUMPI PUSH0 PUSH0 REVERT JUMPDEST DUP1 PUSH4 0x38D52E0F EQ PUSH2 0x317 JUMPI DUP1 PUSH4 0x402D267D EQ PUSH2 0x343 JUMPI DUP1 PUSH4 0x47E57533 EQ PUSH2 0x362 JUMPI DUP1 PUSH4 0x4CDAD506 EQ PUSH2 0x232 JUMPI PUSH0 PUSH0 REVERT JUMPDEST DUP1 PUSH4 0xA28A477 GT PUSH2 0x1B9 JUMPI DUP1 PUSH4 0xA28A477 EQ PUSH2 0x280 JUMPI DUP1 PUSH4 0x18160DDD EQ PUSH2 0x29F JUMPI DUP1 PUSH4 0x23B872DD EQ PUSH2 0x2D2 JUMPI DUP1 PUSH4 0x313CE567 EQ PUSH2 0x2F1 JUMPI PUSH0 PUSH0 REVERT JUMPDEST DUP1 PUSH4 0x1E1D114 EQ PUSH2 0x1EA JUMPI DUP1 PUSH4 0x6FDDE03 EQ PUSH2 0x211 JUMPI DUP1 PUSH4 0x7A2D13A EQ PUSH2 0x232 JUMPI DUP1 PUSH4 0x95EA7B3 EQ PUSH2 0x251 JUMPI JUMPDEST PUSH0 PUSH0 REVERT JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x1F5 JUMPI PUSH0 PUSH0 REVERT JUMPDEST POP PUSH2 0x1FE PUSH2 0x5DB JUMP JUMPDEST PUSH1 0x40 MLOAD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x21C JUMPI PUSH0 PUSH0 REVERT JUMPDEST POP PUSH2 0x225 PUSH2 0x5F5 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0x208 SWAP2 SWAP1 PUSH2 0x2199 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x23D JUMPI PUSH0 PUSH0 REVERT JUMPDEST POP PUSH2 0x1FE PUSH2 0x24C CALLDATASIZE PUSH1 0x4 PUSH2 0x21AB JUMP JUMPDEST PUSH2 0x6B5 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x25C JUMPI PUSH0 PUSH0 REVERT JUMPDEST POP PUSH2 0x270 PUSH2 0x26B CALLDATASIZE PUSH1 0x4 PUSH2 0x21D6 JUMP JUMPDEST PUSH2 0x6C6 JUMP JUMPDEST PUSH1 0x40 MLOAD SWAP1 ISZERO ISZERO DUP2 MSTORE PUSH1 0x20 ADD PUSH2 0x208 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x28B JUMPI PUSH0 PUSH0 REVERT JUMPDEST POP PUSH2 0x1FE PUSH2 0x29A CALLDATASIZE PUSH1 0x4 PUSH2 0x21AB JUMP JUMPDEST PUSH2 0x6DD JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x2AA JUMPI PUSH0 PUSH0 REVERT JUMPDEST POP PUSH32 0x52C63247E1F47DB19D5CE0460030C497F067CA4CEBF71BA98EEADABE20BACE02 SLOAD PUSH2 0x1FE JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x2DD JUMPI PUSH0 PUSH0 REVERT JUMPDEST POP PUSH2 0x270 PUSH2 0x2EC CALLDATASIZE PUSH1 0x4 PUSH2 0x2200 JUMP JUMPDEST PUSH2 0x6E9 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x2FC JUMPI PUSH0 PUSH0 REVERT JUMPDEST POP PUSH2 0x305 PUSH2 0x70E JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH1 0xFF SWAP1 SWAP2 AND DUP2 MSTORE PUSH1 0x20 ADD PUSH2 0x208 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x322 JUMPI PUSH0 PUSH0 REVERT JUMPDEST POP PUSH2 0x32B PUSH2 0x750 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP1 SWAP2 AND DUP2 MSTORE PUSH1 0x20 ADD PUSH2 0x208 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x34E JUMPI PUSH0 PUSH0 REVERT JUMPDEST POP PUSH2 0x1FE PUSH2 0x35D CALLDATASIZE PUSH1 0x4 PUSH2 0x223E JUMP JUMPDEST PUSH2 0x77E JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x36D JUMPI PUSH0 PUSH0 REVERT JUMPDEST POP PUSH2 0x225 PUSH2 0x37C CALLDATASIZE PUSH1 0x4 PUSH2 0x21AB JUMP JUMPDEST PUSH2 0x7A3 JUMP JUMPDEST PUSH2 0x394 PUSH2 0x38F CALLDATASIZE PUSH1 0x4 PUSH2 0x22FE JUMP JUMPDEST PUSH2 0x8C0 JUMP JUMPDEST STOP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x3A1 JUMPI PUSH0 PUSH0 REVERT JUMPDEST POP PUSH2 0x1FE PUSH2 0x8D6 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x3B5 JUMPI PUSH0 PUSH0 REVERT JUMPDEST POP PUSH2 0x1FE PUSH2 0x3C4 CALLDATASIZE PUSH1 0x4 PUSH2 0x234B JUMP JUMPDEST PUSH2 0x8F1 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x3D4 JUMPI PUSH0 PUSH0 REVERT JUMPDEST POP PUSH2 0x1FE PUSH2 0x3E3 CALLDATASIZE PUSH1 0x4 PUSH2 0x223E JUMP JUMPDEST PUSH2 0x94E JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x3F3 JUMPI PUSH0 PUSH0 REVERT JUMPDEST POP PUSH2 0x1FE PUSH2 0x402 CALLDATASIZE PUSH1 0x4 PUSH2 0x234B JUMP JUMPDEST PUSH2 0x974 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x412 JUMPI PUSH0 PUSH0 REVERT JUMPDEST POP PUSH2 0x225 PUSH2 0x9C0 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x426 JUMPI PUSH0 PUSH0 REVERT JUMPDEST POP PUSH0 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH2 0x32B JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x442 JUMPI PUSH0 PUSH0 REVERT JUMPDEST POP PUSH2 0x270 PUSH2 0x451 CALLDATASIZE PUSH1 0x4 PUSH2 0x21D6 JUMP JUMPDEST PUSH2 0x9FE JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x461 JUMPI PUSH0 PUSH0 REVERT JUMPDEST POP PUSH2 0x225 PUSH1 0x40 MLOAD DUP1 PUSH1 0x40 ADD PUSH1 0x40 MSTORE DUP1 PUSH1 0x5 DUP2 MSTORE PUSH1 0x20 ADD PUSH5 0x352E302E3 PUSH1 0xDC SHL DUP2 MSTORE POP DUP2 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x491 JUMPI PUSH0 PUSH0 REVERT JUMPDEST POP PUSH2 0x1FE PUSH2 0x4A0 CALLDATASIZE PUSH1 0x4 PUSH2 0x21AB JUMP JUMPDEST PUSH2 0xA0B JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x4B0 JUMPI PUSH0 PUSH0 REVERT JUMPDEST POP PUSH2 0x1FE PUSH2 0x4BF CALLDATASIZE PUSH1 0x4 PUSH2 0x2379 JUMP JUMPDEST PUSH2 0xA17 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x4CF JUMPI PUSH0 PUSH0 REVERT JUMPDEST POP PUSH2 0x1FE PUSH2 0x4DE CALLDATASIZE PUSH1 0x4 PUSH2 0x2379 JUMP JUMPDEST PUSH2 0xA6D JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x4EE JUMPI PUSH0 PUSH0 REVERT JUMPDEST POP PUSH2 0x1FE PUSH2 0x4FD CALLDATASIZE PUSH1 0x4 PUSH2 0x223E JUMP JUMPDEST PUSH2 0xABA JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x50D JUMPI PUSH0 PUSH0 REVERT JUMPDEST POP PUSH2 0x1FE PUSH2 0x51C CALLDATASIZE PUSH1 0x4 PUSH2 0x21AB JUMP JUMPDEST PUSH2 0xAE0 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x52C JUMPI PUSH0 PUSH0 REVERT JUMPDEST POP PUSH2 0x1FE PUSH2 0x53B CALLDATASIZE PUSH1 0x4 PUSH2 0x223E JUMP JUMPDEST PUSH2 0xAEB JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x54B JUMPI PUSH0 PUSH0 REVERT JUMPDEST POP PUSH2 0x225 PUSH2 0x55A CALLDATASIZE PUSH1 0x4 PUSH2 0x23B8 JUMP JUMPDEST PUSH2 0xB0D JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x56A JUMPI PUSH0 PUSH0 REVERT JUMPDEST POP PUSH2 0x1FE PUSH2 0x579 CALLDATASIZE PUSH1 0x4 PUSH2 0x223E JUMP JUMPDEST PUSH2 0xB26 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x589 JUMPI PUSH0 PUSH0 REVERT JUMPDEST POP PUSH2 0x394 PUSH2 0x598 CALLDATASIZE PUSH1 0x4 PUSH2 0x23D9 JUMP JUMPDEST PUSH2 0xB55 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x5A8 JUMPI PUSH0 PUSH0 REVERT JUMPDEST POP PUSH2 0x1FE PUSH2 0x5B7 CALLDATASIZE PUSH1 0x4 PUSH2 0x2432 JUMP JUMPDEST PUSH2 0xB97 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x5C7 JUMPI PUSH0 PUSH0 REVERT JUMPDEST POP PUSH2 0x394 PUSH2 0x5D6 CALLDATASIZE PUSH1 0x4 PUSH2 0x245E JUMP JUMPDEST PUSH2 0xBE0 JUMP JUMPDEST PUSH0 DUP1 SLOAD PUSH2 0x5F0 SWAP1 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH2 0xCE1 JUMP JUMPDEST SWAP1 POP SWAP1 JUMP JUMPDEST PUSH32 0x52C63247E1F47DB19D5CE0460030C497F067CA4CEBF71BA98EEADABE20BACE03 DUP1 SLOAD PUSH1 0x60 SWAP2 PUSH0 MLOAD PUSH1 0x20 PUSH2 0x2853 PUSH0 CODECOPY PUSH0 MLOAD SWAP1 PUSH0 MSTORE SWAP2 PUSH2 0x633 SWAP1 PUSH2 0x2511 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 0x65F SWAP1 PUSH2 0x2511 JUMP JUMPDEST DUP1 ISZERO PUSH2 0x6AA JUMPI DUP1 PUSH1 0x1F LT PUSH2 0x681 JUMPI PUSH2 0x100 DUP1 DUP4 SLOAD DIV MUL DUP4 MSTORE SWAP2 PUSH1 0x20 ADD SWAP2 PUSH2 0x6AA JUMP JUMPDEST DUP3 ADD SWAP2 SWAP1 PUSH0 MSTORE PUSH1 0x20 PUSH0 KECCAK256 SWAP1 JUMPDEST DUP2 SLOAD DUP2 MSTORE SWAP1 PUSH1 0x1 ADD SWAP1 PUSH1 0x20 ADD DUP1 DUP4 GT PUSH2 0x68D JUMPI DUP3 SWAP1 SUB PUSH1 0x1F AND DUP3 ADD SWAP2 JUMPDEST POP POP POP POP POP SWAP2 POP POP SWAP1 JUMP JUMPDEST PUSH0 PUSH2 0x6C0 DUP3 PUSH0 PUSH2 0xD4A JUMP JUMPDEST SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH0 CALLER PUSH2 0x6D3 DUP2 DUP6 DUP6 PUSH2 0xDA1 JUMP JUMPDEST POP PUSH1 0x1 SWAP4 SWAP3 POP POP POP JUMP JUMPDEST PUSH0 PUSH2 0x6C0 DUP3 PUSH1 0x1 PUSH2 0xDB3 JUMP JUMPDEST PUSH0 CALLER PUSH2 0x6F6 DUP6 DUP3 DUP6 PUSH2 0xE01 JUMP JUMPDEST PUSH2 0x701 DUP6 DUP6 DUP6 PUSH2 0xE52 JUMP JUMPDEST PUSH1 0x1 SWAP2 POP POP JUMPDEST SWAP4 SWAP3 POP POP POP JUMP JUMPDEST PUSH0 DUP1 PUSH32 0x773E532DFEDE91F04B12A73D3D2ACD361424F41F76B4FB79F090161E36B4E00 SWAP1 POP PUSH0 DUP2 SLOAD PUSH2 0x74A SWAP2 SWAP1 PUSH1 0x1 PUSH1 0xA0 SHL SWAP1 DIV PUSH1 0xFF AND PUSH2 0x255D JUMP JUMPDEST SWAP2 POP POP SWAP1 JUMP JUMPDEST PUSH32 0x773E532DFEDE91F04B12A73D3D2ACD361424F41F76B4FB79F090161E36B4E00 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND SWAP1 JUMP JUMPDEST PUSH0 DUP1 SLOAD PUSH2 0x6C0 SWAP1 PUSH2 0x797 SWAP1 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH2 0xEAF JUMP JUMPDEST PUSH0 NOT PUSH2 0xEDD JUMP JUMPDEST PUSH2 0xEDD JUMP JUMPDEST PUSH0 SLOAD PUSH1 0x40 DUP1 MLOAD PUSH4 0x5B9A4C35 PUSH1 0xE0 SHL DUP2 MSTORE SWAP1 MLOAD PUSH1 0x60 SWAP3 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND SWAP2 PUSH4 0x5B9A4C35 SWAP2 PUSH1 0x4 DUP1 DUP4 ADD SWAP3 PUSH1 0x20 SWAP3 SWAP2 SWAP1 DUP3 SWAP1 SUB ADD DUP2 DUP7 GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x7EA JUMPI RETURNDATASIZE PUSH0 PUSH0 RETURNDATACOPY RETURNDATASIZE PUSH0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP3 ADD DUP1 PUSH1 0x40 MSTORE POP DUP2 ADD SWAP1 PUSH2 0x80E SWAP2 SWAP1 PUSH2 0x2576 JUMP JUMPDEST DUP3 EQ PUSH2 0x82D JUMPI PUSH1 0x40 MLOAD PUSH4 0x213109DD PUSH1 0xE1 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST DUP2 SLOAD DUP3 SWAP1 DUP2 SWAP1 PUSH2 0x83C SWAP1 PUSH2 0x2511 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 0x868 SWAP1 PUSH2 0x2511 JUMP JUMPDEST DUP1 ISZERO PUSH2 0x8B3 JUMPI DUP1 PUSH1 0x1F LT PUSH2 0x88A JUMPI PUSH2 0x100 DUP1 DUP4 SLOAD DIV MUL DUP4 MSTORE SWAP2 PUSH1 0x20 ADD SWAP2 PUSH2 0x8B3 JUMP JUMPDEST DUP3 ADD SWAP2 SWAP1 PUSH0 MSTORE PUSH1 0x20 PUSH0 KECCAK256 SWAP1 JUMPDEST DUP2 SLOAD DUP2 MSTORE SWAP1 PUSH1 0x1 ADD SWAP1 PUSH1 0x20 ADD DUP1 DUP4 GT PUSH2 0x896 JUMPI DUP3 SWAP1 SUB PUSH1 0x1F AND DUP3 ADD SWAP2 JUMPDEST POP POP POP POP POP SWAP2 POP POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH2 0x8C8 PUSH2 0xEEC JUMP JUMPDEST PUSH2 0x8D2 DUP3 DUP3 PUSH2 0xF95 JUMP JUMPDEST POP POP JUMP JUMPDEST PUSH0 PUSH2 0x8DF PUSH2 0x1051 JUMP JUMPDEST POP PUSH0 MLOAD PUSH1 0x20 PUSH2 0x2873 PUSH0 CODECOPY PUSH0 MLOAD SWAP1 PUSH0 MSTORE SWAP1 JUMP JUMPDEST PUSH0 PUSH0 PUSH2 0x8FC DUP4 PUSH2 0x77E JUMP JUMPDEST SWAP1 POP DUP1 DUP5 GT ISZERO PUSH2 0x92E JUMPI DUP3 DUP5 DUP3 PUSH1 0x40 MLOAD PUSH4 0x3C8097D9 PUSH1 0xE1 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x925 SWAP4 SWAP3 SWAP2 SWAP1 PUSH2 0x258D JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH0 PUSH2 0x938 DUP6 PUSH2 0xAE0 JUMP JUMPDEST SWAP1 POP PUSH2 0x946 CALLER DUP6 DUP8 DUP5 PUSH2 0x109A JUMP JUMPDEST SWAP5 SWAP4 POP POP POP POP JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH0 SWAP1 DUP2 MSTORE PUSH0 MLOAD PUSH1 0x20 PUSH2 0x2853 PUSH0 CODECOPY PUSH0 MLOAD SWAP1 PUSH0 MSTORE PUSH1 0x20 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD SWAP1 JUMP JUMPDEST PUSH0 PUSH0 PUSH2 0x97F DUP4 PUSH2 0xABA JUMP JUMPDEST SWAP1 POP DUP1 DUP5 GT ISZERO PUSH2 0x9A8 JUMPI DUP3 DUP5 DUP3 PUSH1 0x40 MLOAD PUSH4 0x284FF667 PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x925 SWAP4 SWAP3 SWAP2 SWAP1 PUSH2 0x258D JUMP JUMPDEST PUSH0 PUSH2 0x9B2 DUP6 PUSH2 0xA0B JUMP JUMPDEST SWAP1 POP PUSH2 0x946 CALLER DUP6 DUP4 DUP9 PUSH2 0x109A JUMP JUMPDEST PUSH32 0x52C63247E1F47DB19D5CE0460030C497F067CA4CEBF71BA98EEADABE20BACE04 DUP1 SLOAD PUSH1 0x60 SWAP2 PUSH0 MLOAD PUSH1 0x20 PUSH2 0x2853 PUSH0 CODECOPY PUSH0 MLOAD SWAP1 PUSH0 MSTORE SWAP2 PUSH2 0x633 SWAP1 PUSH2 0x2511 JUMP JUMPDEST PUSH0 CALLER PUSH2 0x6D3 DUP2 DUP6 DUP6 PUSH2 0xE52 JUMP JUMPDEST PUSH0 PUSH2 0x6C0 DUP3 PUSH1 0x1 PUSH2 0xD4A JUMP JUMPDEST PUSH0 PUSH0 PUSH2 0xA22 DUP4 PUSH2 0xAEB JUMP JUMPDEST SWAP1 POP DUP1 DUP6 GT ISZERO PUSH2 0xA4B JUMPI DUP3 DUP6 DUP3 PUSH1 0x40 MLOAD PUSH4 0x3FA733BB PUSH1 0xE2 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x925 SWAP4 SWAP3 SWAP2 SWAP1 PUSH2 0x258D JUMP JUMPDEST PUSH0 PUSH2 0xA55 DUP7 PUSH2 0x6DD JUMP JUMPDEST SWAP1 POP PUSH2 0xA64 CALLER DUP7 DUP7 DUP10 DUP6 PUSH2 0x10C7 JUMP JUMPDEST SWAP6 SWAP5 POP POP POP POP POP JUMP JUMPDEST PUSH0 PUSH0 PUSH2 0xA78 DUP4 PUSH2 0xB26 JUMP JUMPDEST SWAP1 POP DUP1 DUP6 GT ISZERO PUSH2 0xAA1 JUMPI DUP3 DUP6 DUP3 PUSH1 0x40 MLOAD PUSH4 0x2E52AFBB PUSH1 0xE2 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x925 SWAP4 SWAP3 SWAP2 SWAP1 PUSH2 0x258D JUMP JUMPDEST PUSH0 PUSH2 0xAAB DUP7 PUSH2 0x6B5 JUMP JUMPDEST SWAP1 POP PUSH2 0xA64 CALLER DUP7 DUP7 DUP5 DUP11 PUSH2 0x10C7 JUMP JUMPDEST PUSH0 DUP1 SLOAD DUP2 SWAP1 PUSH2 0xAD1 SWAP1 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH2 0xEAF JUMP JUMPDEST SWAP1 POP PUSH2 0x707 PUSH2 0x797 DUP3 PUSH0 PUSH2 0xDB3 JUMP JUMPDEST PUSH0 PUSH2 0x6C0 DUP3 PUSH0 PUSH2 0xDB3 JUMP JUMPDEST PUSH0 DUP1 SLOAD PUSH2 0x6C0 SWAP1 PUSH2 0xB04 SWAP1 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH2 0x10EF JUMP JUMPDEST PUSH2 0x79E DUP5 PUSH2 0x111D JUMP JUMPDEST PUSH0 SLOAD PUSH1 0x60 SWAP1 PUSH2 0x707 SWAP1 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP5 DUP5 PUSH2 0x112A JUMP JUMPDEST PUSH0 DUP1 SLOAD DUP2 SWAP1 PUSH2 0xB3D SWAP1 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH2 0x10EF JUMP JUMPDEST SWAP1 POP PUSH2 0x707 PUSH2 0xB4C DUP3 PUSH0 PUSH2 0xDB3 JUMP JUMPDEST PUSH2 0x79E DUP6 PUSH2 0x117C JUMP JUMPDEST PUSH0 SLOAD PUSH2 0xB74 SWAP1 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP5 DUP5 PUSH2 0xB6E PUSH2 0x750 JUMP JUMPDEST DUP6 PUSH2 0x1186 JUMP JUMPDEST POP POP PUSH0 DUP1 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB NOT AND PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP3 SWAP1 SWAP3 AND SWAP2 SWAP1 SWAP2 OR SWAP1 SSTORE JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP2 DUP3 AND PUSH0 SWAP1 DUP2 MSTORE PUSH32 0x52C63247E1F47DB19D5CE0460030C497F067CA4CEBF71BA98EEADABE20BACE01 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 PUSH0 PUSH2 0xBE9 PUSH2 0x12D4 JUMP JUMPDEST DUP1 SLOAD SWAP1 SWAP2 POP PUSH1 0xFF PUSH1 0x1 PUSH1 0x40 SHL DUP3 DIV AND ISZERO SWAP1 PUSH8 0xFFFFFFFFFFFFFFFF AND PUSH0 DUP2 ISZERO DUP1 ISZERO PUSH2 0xC10 JUMPI POP DUP3 JUMPDEST SWAP1 POP PUSH0 DUP3 PUSH8 0xFFFFFFFFFFFFFFFF AND PUSH1 0x1 EQ DUP1 ISZERO PUSH2 0xC2C JUMPI POP ADDRESS EXTCODESIZE ISZERO JUMPDEST SWAP1 POP DUP2 ISZERO DUP1 ISZERO PUSH2 0xC3A JUMPI POP DUP1 ISZERO JUMPDEST ISZERO PUSH2 0xC58 JUMPI PUSH1 0x40 MLOAD PUSH4 0xF92EE8A9 PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST DUP5 SLOAD PUSH8 0xFFFFFFFFFFFFFFFF NOT AND PUSH1 0x1 OR DUP6 SSTORE DUP4 ISZERO PUSH2 0xC82 JUMPI DUP5 SLOAD PUSH1 0xFF PUSH1 0x40 SHL NOT AND PUSH1 0x1 PUSH1 0x40 SHL OR DUP6 SSTORE JUMPDEST PUSH2 0xC8F DUP11 DUP11 DUP11 DUP11 DUP11 PUSH2 0x12FC JUMP JUMPDEST DUP4 ISZERO PUSH2 0xCD5 JUMPI DUP5 SLOAD PUSH1 0xFF PUSH1 0x40 SHL NOT AND DUP6 SSTORE PUSH1 0x40 MLOAD PUSH1 0x1 DUP2 MSTORE PUSH32 0xC7F505B2F371AE2175EE4913F4499E1F2633A7B5936321EED1CDAEB6115181D2 SWAP1 PUSH1 0x20 ADD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 LOG1 JUMPDEST POP POP POP POP POP POP POP POP POP POP JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH4 0xF3E0FFBF PUSH1 0xE0 SHL DUP2 MSTORE ADDRESS PUSH1 0x4 DUP3 ADD MSTORE PUSH0 SWAP1 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP4 AND SWAP1 PUSH4 0xF3E0FFBF SWAP1 PUSH1 0x24 ADD JUMPDEST PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0xD26 JUMPI RETURNDATASIZE PUSH0 PUSH0 RETURNDATACOPY RETURNDATASIZE PUSH0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP3 ADD DUP1 PUSH1 0x40 MSTORE POP DUP2 ADD SWAP1 PUSH2 0x6C0 SWAP2 SWAP1 PUSH2 0x2576 JUMP JUMPDEST PUSH0 PUSH2 0x707 PUSH2 0xD56 PUSH2 0x5DB JUMP JUMPDEST PUSH2 0xD61 SWAP1 PUSH1 0x1 PUSH2 0x25AE JUMP JUMPDEST PUSH2 0xD6C PUSH0 PUSH1 0xA PUSH2 0x26A4 JUMP JUMPDEST PUSH32 0x52C63247E1F47DB19D5CE0460030C497F067CA4CEBF71BA98EEADABE20BACE02 SLOAD PUSH2 0xD98 SWAP2 SWAP1 PUSH2 0x25AE JUMP JUMPDEST DUP6 SWAP2 SWAP1 DUP6 PUSH2 0x1321 JUMP JUMPDEST PUSH2 0xDAE DUP4 DUP4 DUP4 PUSH1 0x1 PUSH2 0x1363 JUMP JUMPDEST POP POP POP JUMP JUMPDEST PUSH0 PUSH2 0x707 PUSH2 0xDC2 DUP3 PUSH1 0xA PUSH2 0x26A4 JUMP JUMPDEST PUSH32 0x52C63247E1F47DB19D5CE0460030C497F067CA4CEBF71BA98EEADABE20BACE02 SLOAD PUSH2 0xDEE SWAP2 SWAP1 PUSH2 0x25AE JUMP JUMPDEST PUSH2 0xDF6 PUSH2 0x5DB JUMP JUMPDEST PUSH2 0xD98 SWAP1 PUSH1 0x1 PUSH2 0x25AE JUMP JUMPDEST PUSH0 PUSH2 0xE0C DUP5 DUP5 PUSH2 0xB97 JUMP JUMPDEST SWAP1 POP PUSH0 NOT DUP2 LT ISZERO PUSH2 0xE4C JUMPI DUP2 DUP2 LT ISZERO PUSH2 0xE3E JUMPI DUP3 DUP2 DUP4 PUSH1 0x40 MLOAD PUSH4 0x7DC7A0D9 PUSH1 0xE1 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x925 SWAP4 SWAP3 SWAP2 SWAP1 PUSH2 0x258D JUMP JUMPDEST PUSH2 0xE4C DUP5 DUP5 DUP5 DUP5 SUB PUSH0 PUSH2 0x1363 JUMP JUMPDEST POP POP POP POP JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP4 AND PUSH2 0xE7B JUMPI PUSH1 0x40 MLOAD PUSH4 0x4B637E8F PUSH1 0xE1 SHL DUP2 MSTORE PUSH0 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x24 ADD PUSH2 0x925 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP3 AND PUSH2 0xEA4 JUMPI PUSH1 0x40 MLOAD PUSH4 0xEC442F05 PUSH1 0xE0 SHL DUP2 MSTORE PUSH0 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x24 ADD PUSH2 0x925 JUMP JUMPDEST PUSH2 0xDAE DUP4 DUP4 DUP4 PUSH2 0x1446 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH4 0x402D267D PUSH1 0xE0 SHL DUP2 MSTORE ADDRESS PUSH1 0x4 DUP3 ADD MSTORE PUSH0 SWAP1 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP4 AND SWAP1 PUSH4 0x402D267D SWAP1 PUSH1 0x24 ADD PUSH2 0xD0B JUMP JUMPDEST PUSH0 DUP3 DUP3 XOR DUP3 DUP5 LT MUL DUP3 XOR PUSH2 0x707 JUMP JUMPDEST ADDRESS PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB PUSH32 0x0 AND EQ DUP1 PUSH2 0xF72 JUMPI POP PUSH32 0x0 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH2 0xF66 PUSH0 MLOAD PUSH1 0x20 PUSH2 0x2873 PUSH0 CODECOPY PUSH0 MLOAD SWAP1 PUSH0 MSTORE SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND SWAP1 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND EQ ISZERO JUMPDEST ISZERO PUSH2 0xF90 JUMPI PUSH1 0x40 MLOAD PUSH4 0x703E46DD PUSH1 0xE1 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST JUMP JUMPDEST POP JUMP JUMPDEST DUP2 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH4 0x52D1902D 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 GAS STATICCALL SWAP3 POP POP POP DUP1 ISZERO PUSH2 0xFEF JUMPI POP PUSH1 0x40 DUP1 MLOAD PUSH1 0x1F RETURNDATASIZE SWAP1 DUP2 ADD PUSH1 0x1F NOT AND DUP3 ADD SWAP1 SWAP3 MSTORE PUSH2 0xFEC SWAP2 DUP2 ADD SWAP1 PUSH2 0x2576 JUMP JUMPDEST PUSH1 0x1 JUMPDEST PUSH2 0x1017 JUMPI PUSH1 0x40 MLOAD PUSH4 0x4C9C8CE3 PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP4 AND PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x24 ADD PUSH2 0x925 JUMP JUMPDEST PUSH0 MLOAD PUSH1 0x20 PUSH2 0x2873 PUSH0 CODECOPY PUSH0 MLOAD SWAP1 PUSH0 MSTORE DUP2 EQ PUSH2 0x1047 JUMPI PUSH1 0x40 MLOAD PUSH4 0x2A875269 PUSH1 0xE2 SHL DUP2 MSTORE PUSH1 0x4 DUP2 ADD DUP3 SWAP1 MSTORE PUSH1 0x24 ADD PUSH2 0x925 JUMP JUMPDEST PUSH2 0xDAE DUP4 DUP4 PUSH2 0x156C JUMP JUMPDEST ADDRESS PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB PUSH32 0x0 AND EQ PUSH2 0xF90 JUMPI PUSH1 0x40 MLOAD PUSH4 0x703E46DD PUSH1 0xE1 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH2 0x10A6 DUP5 DUP5 DUP5 DUP5 PUSH2 0x15C1 JUMP JUMPDEST PUSH0 DUP1 SLOAD PUSH2 0x10C0 SWAP2 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP1 SWAP2 AND SWAP1 DUP5 SWAP1 PUSH2 0x162C JUMP JUMPDEST POP POP POP POP POP JUMP JUMPDEST PUSH0 DUP1 SLOAD PUSH2 0x10E1 SWAP2 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP1 SWAP2 AND SWAP1 DUP5 SWAP1 PUSH2 0x1768 JUMP JUMPDEST POP PUSH2 0x10C0 DUP6 DUP6 DUP6 DUP6 DUP6 PUSH2 0x1889 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH4 0xCE96CB77 PUSH1 0xE0 SHL DUP2 MSTORE ADDRESS PUSH1 0x4 DUP3 ADD MSTORE PUSH0 SWAP1 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP4 AND SWAP1 PUSH4 0xCE96CB77 SWAP1 PUSH1 0x24 ADD PUSH2 0xD0B JUMP JUMPDEST PUSH0 PUSH2 0x6C0 PUSH2 0x24C DUP4 PUSH2 0xB26 JUMP JUMPDEST PUSH1 0x60 PUSH2 0x946 DUP4 DUP4 PUSH1 0x40 MLOAD PUSH1 0x24 ADD PUSH2 0x1142 SWAP3 SWAP2 SWAP1 PUSH2 0x26B2 JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH1 0x1F NOT DUP2 DUP5 SUB ADD DUP2 MSTORE SWAP2 SWAP1 MSTORE PUSH1 0x20 DUP2 ADD DUP1 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xE0 SHL SUB AND PUSH4 0x4C0D8E1 PUSH1 0xE1 SHL OR SWAP1 MSTORE PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP7 AND SWAP1 PUSH2 0x1930 JUMP JUMPDEST PUSH0 PUSH2 0x6C0 DUP3 PUSH2 0x94E JUMP JUMPDEST PUSH2 0x1190 DUP5 DUP4 PUSH2 0x19D0 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH4 0xF3E0FFBF PUSH1 0xE0 SHL DUP2 MSTORE ADDRESS PUSH1 0x4 DUP3 ADD MSTORE PUSH2 0x1202 SWAP1 DUP7 SWAP1 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP3 AND SWAP1 PUSH4 0xF3E0FFBF SWAP1 PUSH1 0x24 ADD PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x11D8 JUMPI RETURNDATASIZE PUSH0 PUSH0 RETURNDATACOPY RETURNDATASIZE PUSH0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP3 ADD DUP1 PUSH1 0x40 MSTORE POP DUP2 ADD SWAP1 PUSH2 0x11FC SWAP2 SWAP1 PUSH2 0x2576 JUMP JUMPDEST DUP4 PUSH2 0x1768 JUMP JUMPDEST POP PUSH2 0x120D DUP6 DUP3 PUSH2 0x1A62 JUMP JUMPDEST PUSH2 0x1217 DUP5 DUP5 PUSH2 0x1B87 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH4 0x70A08231 PUSH1 0xE0 SHL DUP2 MSTORE ADDRESS PUSH1 0x4 DUP3 ADD MSTORE PUSH2 0x1289 SWAP1 DUP6 SWAP1 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP6 AND SWAP1 PUSH4 0x70A08231 SWAP1 PUSH1 0x24 ADD PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x125F JUMPI RETURNDATASIZE PUSH0 PUSH0 RETURNDATACOPY RETURNDATASIZE PUSH0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP3 ADD DUP1 PUSH1 0x40 MSTORE POP DUP2 ADD SWAP1 PUSH2 0x1283 SWAP2 SWAP1 PUSH2 0x2576 JUMP JUMPDEST DUP4 PUSH2 0x162C JUMP JUMPDEST POP PUSH1 0x40 DUP1 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP1 DUP9 AND DUP3 MSTORE DUP7 AND PUSH1 0x20 DUP3 ADD MSTORE PUSH32 0x254C88E7A2EA123AEEB89B7CC413FB949188FEFCDB7584C4F3D493294DAF65C5 SWAP2 ADD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 LOG1 POP POP POP POP POP JUMP JUMPDEST PUSH0 DUP1 PUSH32 0xF0C57E16840DF040F15088DC2F81FE391C3923BEC73E23A9662EFC9C229C6A00 PUSH2 0x6C0 JUMP JUMPDEST PUSH2 0x1304 PUSH2 0x1BD5 JUMP JUMPDEST PUSH2 0x130E DUP6 DUP6 PUSH2 0x1BFA JUMP JUMPDEST PUSH2 0x1317 DUP4 PUSH2 0x1C0C JUMP JUMPDEST PUSH2 0x10C0 DUP3 DUP3 PUSH2 0x1C1D JUMP JUMPDEST PUSH0 PUSH2 0x134E PUSH2 0x132E DUP4 PUSH2 0x1C6F JUMP JUMPDEST DUP1 ISZERO PUSH2 0x1349 JUMPI POP PUSH0 DUP5 DUP1 PUSH2 0x1344 JUMPI PUSH2 0x1344 PUSH2 0x26CD JUMP JUMPDEST DUP7 DUP9 MULMOD GT JUMPDEST ISZERO ISZERO SWAP1 JUMP JUMPDEST PUSH2 0x1359 DUP7 DUP7 DUP7 PUSH2 0x1C9B JUMP JUMPDEST PUSH2 0xA64 SWAP2 SWAP1 PUSH2 0x25AE JUMP JUMPDEST PUSH0 MLOAD PUSH1 0x20 PUSH2 0x2853 PUSH0 CODECOPY PUSH0 MLOAD SWAP1 PUSH0 MSTORE PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP6 AND PUSH2 0x139A JUMPI PUSH1 0x40 MLOAD PUSH4 0xE602DF05 PUSH1 0xE0 SHL DUP2 MSTORE PUSH0 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x24 ADD PUSH2 0x925 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP5 AND PUSH2 0x13C3 JUMPI PUSH1 0x40 MLOAD PUSH4 0x4A1406B1 PUSH1 0xE1 SHL DUP2 MSTORE PUSH0 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x24 ADD PUSH2 0x925 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP1 DUP7 AND PUSH0 SWAP1 DUP2 MSTORE PUSH1 0x1 DUP4 ADD PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x40 DUP1 DUP4 KECCAK256 SWAP4 DUP9 AND DUP4 MSTORE SWAP3 SWAP1 MSTORE KECCAK256 DUP4 SWAP1 SSTORE DUP2 ISZERO PUSH2 0x10C0 JUMPI DUP4 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP6 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH32 0x8C5BE1E5EBEC7D5BD14F71427D1E84F3DD0314C0F7B2291E5B200AC8C7C3B925 DUP6 PUSH1 0x40 MLOAD PUSH2 0x1437 SWAP2 DUP2 MSTORE PUSH1 0x20 ADD SWAP1 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 LOG3 POP POP POP POP POP JUMP JUMPDEST PUSH0 MLOAD PUSH1 0x20 PUSH2 0x2853 PUSH0 CODECOPY PUSH0 MLOAD SWAP1 PUSH0 MSTORE PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP5 AND PUSH2 0x1480 JUMPI DUP2 DUP2 PUSH1 0x2 ADD PUSH0 DUP3 DUP3 SLOAD PUSH2 0x1475 SWAP2 SWAP1 PUSH2 0x25AE JUMP JUMPDEST SWAP1 SWAP2 SSTORE POP PUSH2 0x14DD SWAP1 POP JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP5 AND PUSH0 SWAP1 DUP2 MSTORE PUSH1 0x20 DUP3 SWAP1 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD DUP3 DUP2 LT ISZERO PUSH2 0x14BF JUMPI DUP5 DUP2 DUP5 PUSH1 0x40 MLOAD PUSH4 0x391434E3 PUSH1 0xE2 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x925 SWAP4 SWAP3 SWAP2 SWAP1 PUSH2 0x258D JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP6 AND PUSH0 SWAP1 DUP2 MSTORE PUSH1 0x20 DUP4 SWAP1 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SWAP1 DUP4 SWAP1 SUB SWAP1 SSTORE JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP4 AND PUSH2 0x14FB JUMPI PUSH1 0x2 DUP2 ADD DUP1 SLOAD DUP4 SWAP1 SUB SWAP1 SSTORE PUSH2 0x1519 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP4 AND PUSH0 SWAP1 DUP2 MSTORE PUSH1 0x20 DUP3 SWAP1 MSTORE PUSH1 0x40 SWAP1 KECCAK256 DUP1 SLOAD DUP4 ADD SWAP1 SSTORE JUMPDEST DUP3 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP5 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH32 0xDDF252AD1BE2C89B69C2B068FC378DAA952BA7F163C4A11628F55A4DF523B3EF DUP5 PUSH1 0x40 MLOAD PUSH2 0x155E SWAP2 DUP2 MSTORE PUSH1 0x20 ADD SWAP1 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 LOG3 POP POP POP POP JUMP JUMPDEST PUSH2 0x1575 DUP3 PUSH2 0x1D4B JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP4 AND SWAP1 PUSH32 0xBC7CD75A20EE27FD9ADEBAB32041F755214DBC6BFFA90CC0225B39DA2E5C2D3B SWAP1 PUSH0 SWAP1 LOG2 DUP1 MLOAD ISZERO PUSH2 0x15B9 JUMPI PUSH2 0xDAE DUP3 DUP3 PUSH2 0x1930 JUMP JUMPDEST PUSH2 0x8D2 PUSH2 0x1DAE JUMP JUMPDEST PUSH2 0x15D4 PUSH2 0x15CC PUSH2 0x750 JUMP JUMPDEST DUP6 ADDRESS DUP6 PUSH2 0x1DCD JUMP JUMPDEST PUSH2 0x15DE DUP4 DUP3 PUSH2 0x1E03 JUMP JUMPDEST DUP3 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP5 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH32 0xDCBC1C05240F31FF3AD067EF1EE35CE4997762752E3A095284754544F4C709D7 DUP5 DUP5 PUSH1 0x40 MLOAD PUSH2 0x155E SWAP3 SWAP2 SWAP1 SWAP2 DUP3 MSTORE PUSH1 0x20 DUP3 ADD MSTORE PUSH1 0x40 ADD SWAP1 JUMP JUMPDEST PUSH0 DUP2 ISZERO PUSH2 0x170E JUMPI PUSH0 PUSH0 DUP6 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP6 PUSH1 0x40 MLOAD PUSH1 0x24 ADD PUSH2 0x1652 SWAP2 DUP2 MSTORE PUSH1 0x20 ADD SWAP1 JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH1 0x1F NOT DUP2 DUP5 SUB ADD DUP2 MSTORE SWAP2 DUP2 MSTORE PUSH1 0x20 DUP3 ADD DUP1 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xE0 SHL SUB AND PUSH4 0xB6B55F25 PUSH1 0xE0 SHL OR SWAP1 MSTORE MLOAD PUSH2 0x1687 SWAP2 SWAP1 PUSH2 0x26E1 JUMP JUMPDEST PUSH0 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP6 GAS DELEGATECALL SWAP2 POP POP RETURNDATASIZE DUP1 PUSH0 DUP2 EQ PUSH2 0x16BF JUMPI PUSH1 0x40 MLOAD SWAP2 POP PUSH1 0x1F NOT PUSH1 0x3F RETURNDATASIZE ADD AND DUP3 ADD PUSH1 0x40 MSTORE RETURNDATASIZE DUP3 MSTORE RETURNDATASIZE PUSH0 PUSH1 0x20 DUP5 ADD RETURNDATACOPY PUSH2 0x16C4 JUMP JUMPDEST PUSH1 0x60 SWAP2 POP JUMPDEST POP SWAP2 POP SWAP2 POP DUP2 PUSH2 0x1706 JUMPI PUSH32 0xF8E68F23D3B33772E986CC9861E94E8FD6B9461D62BC1FB21CD754BBAF726BD3 DUP2 PUSH1 0x40 MLOAD PUSH2 0x16FD SWAP2 SWAP1 PUSH2 0x2199 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 LOG1 JUMPDEST POP SWAP1 POP PUSH2 0x707 JUMP JUMPDEST PUSH2 0x175E DUP4 PUSH1 0x40 MLOAD PUSH1 0x24 ADD PUSH2 0x1724 SWAP2 DUP2 MSTORE PUSH1 0x20 ADD SWAP1 JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH1 0x1F NOT DUP2 DUP5 SUB ADD DUP2 MSTORE SWAP2 SWAP1 MSTORE PUSH1 0x20 DUP2 ADD DUP1 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xE0 SHL SUB AND PUSH4 0xB6B55F25 PUSH1 0xE0 SHL OR SWAP1 MSTORE PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP7 AND SWAP1 PUSH2 0x1930 JUMP JUMPDEST POP PUSH1 0x1 SWAP1 POP PUSH2 0x707 JUMP JUMPDEST PUSH0 DUP2 ISZERO PUSH2 0x1839 JUMPI PUSH0 PUSH0 DUP6 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP6 PUSH1 0x40 MLOAD PUSH1 0x24 ADD PUSH2 0x178E SWAP2 DUP2 MSTORE PUSH1 0x20 ADD SWAP1 JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH1 0x1F NOT DUP2 DUP5 SUB ADD DUP2 MSTORE SWAP2 DUP2 MSTORE PUSH1 0x20 DUP3 ADD DUP1 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xE0 SHL SUB AND PUSH4 0x2E1A7D4D PUSH1 0xE0 SHL OR SWAP1 MSTORE MLOAD PUSH2 0x17C3 SWAP2 SWAP1 PUSH2 0x26E1 JUMP JUMPDEST PUSH0 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP6 GAS DELEGATECALL SWAP2 POP POP RETURNDATASIZE DUP1 PUSH0 DUP2 EQ PUSH2 0x17FB JUMPI PUSH1 0x40 MLOAD SWAP2 POP PUSH1 0x1F NOT PUSH1 0x3F RETURNDATASIZE ADD AND DUP3 ADD PUSH1 0x40 MSTORE RETURNDATASIZE DUP3 MSTORE RETURNDATASIZE PUSH0 PUSH1 0x20 DUP5 ADD RETURNDATACOPY PUSH2 0x1800 JUMP JUMPDEST PUSH1 0x60 SWAP2 POP JUMPDEST POP SWAP2 POP SWAP2 POP DUP2 PUSH2 0x1706 JUMPI PUSH32 0xAD0AD28A12A6ED800F1A7B398454913AFE6826C175E6CC28F2E8E2C175B0D728 DUP2 PUSH1 0x40 MLOAD PUSH2 0x16FD SWAP2 SWAP1 PUSH2 0x2199 JUMP JUMPDEST PUSH2 0x175E DUP4 PUSH1 0x40 MLOAD PUSH1 0x24 ADD PUSH2 0x184F SWAP2 DUP2 MSTORE PUSH1 0x20 ADD SWAP1 JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH1 0x1F NOT DUP2 DUP5 SUB ADD DUP2 MSTORE SWAP2 SWAP1 MSTORE PUSH1 0x20 DUP2 ADD DUP1 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xE0 SHL SUB AND PUSH4 0x2E1A7D4D PUSH1 0xE0 SHL OR SWAP1 MSTORE PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP7 AND SWAP1 PUSH2 0x1930 JUMP JUMPDEST DUP3 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP6 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND EQ PUSH2 0x18AD JUMPI PUSH2 0x18AD DUP4 DUP7 DUP4 PUSH2 0xE01 JUMP JUMPDEST PUSH2 0x18B7 DUP4 DUP3 PUSH2 0x1E37 JUMP JUMPDEST PUSH2 0x18C9 PUSH2 0x18C2 PUSH2 0x750 JUMP JUMPDEST DUP6 DUP5 PUSH2 0x1E6B JUMP JUMPDEST DUP3 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP5 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP7 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH32 0xFBDE797D201C681B91056529119E0B02407C7BB96A4A2C75C01FC9667232C8DB DUP6 DUP6 PUSH1 0x40 MLOAD PUSH2 0x1921 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 POP POP POP JUMP JUMPDEST PUSH1 0x60 PUSH0 PUSH2 0x193D DUP5 DUP5 PUSH2 0x1EA0 JUMP JUMPDEST SWAP1 POP DUP1 DUP1 ISZERO PUSH2 0x195E JUMPI POP PUSH0 RETURNDATASIZE GT DUP1 PUSH2 0x195E JUMPI POP PUSH0 DUP5 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND EXTCODESIZE GT JUMPDEST ISZERO PUSH2 0x1973 JUMPI PUSH2 0x196B PUSH2 0x1EB3 JUMP JUMPDEST SWAP2 POP POP PUSH2 0x6C0 JUMP JUMPDEST DUP1 ISZERO PUSH2 0x199D JUMPI PUSH1 0x40 MLOAD PUSH4 0x9996B315 PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP6 AND PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x24 ADD PUSH2 0x925 JUMP JUMPDEST RETURNDATASIZE ISZERO PUSH2 0x19B0 JUMPI PUSH2 0x19AB PUSH2 0x1ECC JUMP JUMPDEST PUSH2 0x19C9 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH4 0xD6BDA275 PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH4 0x4E2333D1 PUSH1 0xE1 SHL DUP2 MSTORE ADDRESS PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP1 DUP4 AND SWAP2 SWAP1 DUP5 AND SWAP1 PUSH4 0x9C4667A2 SWAP1 PUSH1 0x24 ADD PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x1A17 JUMPI RETURNDATASIZE PUSH0 PUSH0 RETURNDATACOPY RETURNDATASIZE PUSH0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP3 ADD DUP1 PUSH1 0x40 MSTORE POP DUP2 ADD SWAP1 PUSH2 0x1A3B SWAP2 SWAP1 PUSH2 0x26F7 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND EQ PUSH2 0x8D2 JUMPI PUSH1 0x40 MLOAD PUSH4 0xE76673EF PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST DUP1 ISZERO PUSH2 0x1B3D JUMPI PUSH1 0x40 MLOAD PUSH1 0x1 PUSH1 0x24 DUP3 ADD MSTORE PUSH0 SWAP1 DUP2 SWAP1 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP6 AND SWAP1 PUSH1 0x44 ADD PUSH1 0x40 DUP1 MLOAD PUSH1 0x1F NOT DUP2 DUP5 SUB ADD DUP2 MSTORE SWAP2 DUP2 MSTORE PUSH1 0x20 DUP3 ADD DUP1 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xE0 SHL SUB AND PUSH4 0x2D08BA2B PUSH1 0xE1 SHL OR SWAP1 MSTORE MLOAD PUSH2 0x1AB9 SWAP2 SWAP1 PUSH2 0x26E1 JUMP JUMPDEST PUSH0 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP6 GAS DELEGATECALL SWAP2 POP POP RETURNDATASIZE DUP1 PUSH0 DUP2 EQ PUSH2 0x1AF1 JUMPI PUSH1 0x40 MLOAD SWAP2 POP PUSH1 0x1F NOT PUSH1 0x3F RETURNDATASIZE ADD AND DUP3 ADD PUSH1 0x40 MSTORE RETURNDATASIZE DUP3 MSTORE RETURNDATASIZE PUSH0 PUSH1 0x20 DUP5 ADD RETURNDATACOPY PUSH2 0x1AF6 JUMP JUMPDEST PUSH1 0x60 SWAP2 POP JUMPDEST POP SWAP2 POP SWAP2 POP DUP2 PUSH2 0xE4C JUMPI PUSH32 0x9F864ACE9F45C2734F9444CB9A0C1ADE6F1B15A8C202C17175B759728A4A0BF8 DUP2 PUSH1 0x40 MLOAD PUSH2 0x1B2F SWAP2 SWAP1 PUSH2 0x2199 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 LOG1 POP POP POP POP JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH0 PUSH1 0x24 DUP3 ADD MSTORE PUSH2 0xDAE SWAP1 PUSH1 0x44 ADD PUSH1 0x40 DUP1 MLOAD PUSH1 0x1F NOT DUP2 DUP5 SUB ADD DUP2 MSTORE SWAP2 SWAP1 MSTORE PUSH1 0x20 DUP2 ADD DUP1 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xE0 SHL SUB AND PUSH4 0x2D08BA2B PUSH1 0xE1 SHL OR SWAP1 MSTORE PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP5 AND SWAP1 PUSH2 0x1930 JUMP JUMPDEST PUSH2 0xDAE DUP2 PUSH1 0x40 MLOAD PUSH1 0x24 ADD PUSH2 0x1B9B SWAP2 SWAP1 PUSH2 0x2199 JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH1 0x1F NOT DUP2 DUP5 SUB ADD DUP2 MSTORE SWAP2 SWAP1 MSTORE PUSH1 0x20 DUP2 ADD DUP1 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xE0 SHL SUB AND PUSH4 0x139A8E25 PUSH1 0xE3 SHL OR SWAP1 MSTORE PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP5 AND SWAP1 PUSH2 0x1930 JUMP JUMPDEST PUSH2 0x1BDD PUSH2 0x1ED7 JUMP JUMPDEST PUSH2 0xF90 JUMPI PUSH1 0x40 MLOAD PUSH4 0x1AFCD79F PUSH1 0xE3 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH2 0x1C02 PUSH2 0x1BD5 JUMP JUMPDEST PUSH2 0x8D2 DUP3 DUP3 PUSH2 0x1EF0 JUMP JUMPDEST PUSH2 0x1C14 PUSH2 0x1BD5 JUMP JUMPDEST PUSH2 0xF92 DUP2 PUSH2 0x1F40 JUMP JUMPDEST PUSH2 0x1C25 PUSH2 0x1BD5 JUMP JUMPDEST PUSH0 DUP1 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB NOT AND PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP5 AND OR SWAP1 SSTORE PUSH2 0x1C5A PUSH2 0x1C4A PUSH2 0x750 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP5 AND SWAP1 PUSH2 0x19D0 JUMP JUMPDEST PUSH0 SLOAD PUSH2 0x8D2 SWAP1 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP3 PUSH2 0x1B87 JUMP JUMPDEST PUSH0 PUSH1 0x2 DUP3 PUSH1 0x3 DUP2 GT ISZERO PUSH2 0x1C84 JUMPI PUSH2 0x1C84 PUSH2 0x2712 JUMP JUMPDEST PUSH2 0x1C8E SWAP2 SWAP1 PUSH2 0x2726 JUMP JUMPDEST PUSH1 0xFF AND PUSH1 0x1 EQ SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH0 PUSH0 PUSH0 PUSH2 0x1CA8 DUP7 DUP7 PUSH2 0x1FC3 JUMP JUMPDEST SWAP2 POP SWAP2 POP DUP2 PUSH0 SUB PUSH2 0x1CCC JUMPI DUP4 DUP2 DUP2 PUSH2 0x1CC2 JUMPI PUSH2 0x1CC2 PUSH2 0x26CD JUMP JUMPDEST DIV SWAP3 POP POP POP PUSH2 0x707 JUMP JUMPDEST DUP2 DUP5 GT PUSH2 0x1CE3 JUMPI PUSH2 0x1CE3 PUSH1 0x3 DUP6 ISZERO MUL PUSH1 0x11 XOR PUSH2 0x1FDF JUMP JUMPDEST PUSH0 DUP5 DUP7 DUP9 MULMOD PUSH0 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 DUP6 DUP5 GT SWAP1 SWAP7 SUB SWAP6 SWAP1 SWAP6 MUL SWAP2 SWAP1 SWAP4 SUB SWAP4 SWAP1 SWAP4 DIV SWAP3 SWAP1 SWAP3 OR MUL SWAP2 POP POP SWAP4 SWAP3 POP POP POP JUMP JUMPDEST DUP1 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND EXTCODESIZE PUSH0 SUB PUSH2 0x1D80 JUMPI PUSH1 0x40 MLOAD PUSH4 0x4C9C8CE3 PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP3 AND PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x24 ADD PUSH2 0x925 JUMP JUMPDEST PUSH0 MLOAD PUSH1 0x20 PUSH2 0x2873 PUSH0 CODECOPY PUSH0 MLOAD SWAP1 PUSH0 MSTORE DUP1 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB NOT AND PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP3 SWAP1 SWAP3 AND SWAP2 SWAP1 SWAP2 OR SWAP1 SSTORE JUMP JUMPDEST CALLVALUE ISZERO PUSH2 0xF90 JUMPI PUSH1 0x40 MLOAD PUSH4 0xB398979F PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH2 0x1DDB DUP5 DUP5 DUP5 DUP5 PUSH1 0x1 PUSH2 0x1FF0 JUMP JUMPDEST PUSH2 0xE4C JUMPI PUSH1 0x40 MLOAD PUSH4 0x5274AFE7 PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP6 AND PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x24 ADD PUSH2 0x925 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP3 AND PUSH2 0x1E2C JUMPI PUSH1 0x40 MLOAD PUSH4 0xEC442F05 PUSH1 0xE0 SHL DUP2 MSTORE PUSH0 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x24 ADD PUSH2 0x925 JUMP JUMPDEST PUSH2 0x8D2 PUSH0 DUP4 DUP4 PUSH2 0x1446 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP3 AND PUSH2 0x1E60 JUMPI PUSH1 0x40 MLOAD PUSH4 0x4B637E8F PUSH1 0xE1 SHL DUP2 MSTORE PUSH0 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x24 ADD PUSH2 0x925 JUMP JUMPDEST PUSH2 0x8D2 DUP3 PUSH0 DUP4 PUSH2 0x1446 JUMP JUMPDEST PUSH2 0x1E78 DUP4 DUP4 DUP4 PUSH1 0x1 PUSH2 0x205D JUMP JUMPDEST PUSH2 0xDAE JUMPI PUSH1 0x40 MLOAD PUSH4 0x5274AFE7 PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP5 AND PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x24 ADD PUSH2 0x925 JUMP JUMPDEST PUSH0 PUSH0 PUSH0 DUP4 MLOAD PUSH1 0x20 DUP6 ADD DUP7 GAS DELEGATECALL SWAP4 SWAP3 POP POP POP JUMP JUMPDEST PUSH1 0x40 MLOAD RETURNDATASIZE DUP2 MSTORE RETURNDATASIZE PUSH0 PUSH1 0x20 DUP4 ADD RETURNDATACOPY RETURNDATASIZE PUSH1 0x20 ADD DUP2 ADD PUSH1 0x40 MSTORE SWAP1 JUMP JUMPDEST PUSH1 0x40 MLOAD RETURNDATASIZE PUSH0 DUP3 RETURNDATACOPY RETURNDATASIZE DUP2 REVERT JUMPDEST PUSH0 PUSH2 0x1EE0 PUSH2 0x12D4 JUMP JUMPDEST SLOAD PUSH1 0x1 PUSH1 0x40 SHL SWAP1 DIV PUSH1 0xFF AND SWAP2 SWAP1 POP JUMP JUMPDEST PUSH2 0x1EF8 PUSH2 0x1BD5 JUMP JUMPDEST PUSH0 MLOAD PUSH1 0x20 PUSH2 0x2853 PUSH0 CODECOPY PUSH0 MLOAD SWAP1 PUSH0 MSTORE PUSH32 0x52C63247E1F47DB19D5CE0460030C497F067CA4CEBF71BA98EEADABE20BACE03 PUSH2 0x1F31 DUP5 DUP3 PUSH2 0x2797 JUMP JUMPDEST POP PUSH1 0x4 DUP2 ADD PUSH2 0xE4C DUP4 DUP3 PUSH2 0x2797 JUMP JUMPDEST PUSH2 0x1F48 PUSH2 0x1BD5 JUMP JUMPDEST PUSH32 0x773E532DFEDE91F04B12A73D3D2ACD361424F41F76B4FB79F090161E36B4E00 PUSH0 DUP1 PUSH2 0x1F74 DUP5 PUSH2 0x20BF JUMP JUMPDEST SWAP2 POP SWAP2 POP DUP2 PUSH2 0x1F84 JUMPI PUSH1 0x12 PUSH2 0x1F86 JUMP JUMPDEST DUP1 JUMPDEST DUP4 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA8 SHL SUB NOT AND PUSH1 0x1 PUSH1 0xA0 SHL PUSH1 0xFF SWAP3 SWAP1 SWAP3 AND SWAP2 SWAP1 SWAP2 MUL PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB NOT AND OR PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP5 SWAP1 SWAP5 AND SWAP4 SWAP1 SWAP4 OR SWAP1 SWAP2 SSTORE POP POP JUMP JUMPDEST PUSH0 DUP1 PUSH0 NOT DUP4 DUP6 MULMOD SWAP4 SWAP1 SWAP3 MUL DUP1 DUP5 LT SWAP4 DUP2 SWAP1 SUB SWAP4 SWAP1 SWAP4 SUB SWAP4 SWAP2 POP POP JUMP JUMPDEST PUSH4 0x4E487B71 PUSH0 MSTORE DUP1 PUSH1 0x20 MSTORE PUSH1 0x24 PUSH1 0x1C REVERT JUMPDEST PUSH1 0x40 MLOAD PUSH4 0x23B872DD PUSH1 0xE0 SHL PUSH0 DUP2 DUP2 MSTORE PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP8 DUP2 AND PUSH1 0x4 MSTORE DUP7 AND PUSH1 0x24 MSTORE PUSH1 0x44 DUP6 SWAP1 MSTORE SWAP2 PUSH1 0x20 DUP4 PUSH1 0x64 DUP2 DUP1 DUP13 GAS CALL SWAP3 POP PUSH1 0x1 PUSH0 MLOAD EQ DUP4 AND PUSH2 0x204C JUMPI DUP4 DUP4 ISZERO AND ISZERO PUSH2 0x2040 JUMPI RETURNDATASIZE PUSH0 DUP3 RETURNDATACOPY RETURNDATASIZE DUP2 REVERT JUMPDEST PUSH0 DUP9 EXTCODESIZE GT RETURNDATASIZE ISZERO AND DUP4 AND SWAP3 POP JUMPDEST PUSH1 0x40 MSTORE POP PUSH0 PUSH1 0x60 MSTORE SWAP6 SWAP5 POP POP POP POP POP JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH4 0xA9059CBB PUSH1 0xE0 SHL PUSH0 DUP2 DUP2 MSTORE PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP7 AND PUSH1 0x4 MSTORE PUSH1 0x24 DUP6 SWAP1 MSTORE SWAP2 PUSH1 0x20 DUP4 PUSH1 0x44 DUP2 DUP1 DUP12 GAS CALL SWAP3 POP PUSH1 0x1 PUSH0 MLOAD EQ DUP4 AND PUSH2 0x20B3 JUMPI DUP4 DUP4 ISZERO AND ISZERO PUSH2 0x20A7 JUMPI RETURNDATASIZE PUSH0 DUP3 RETURNDATACOPY RETURNDATASIZE DUP2 REVERT JUMPDEST PUSH0 DUP8 EXTCODESIZE GT RETURNDATASIZE ISZERO AND DUP4 AND SWAP3 POP JUMPDEST PUSH1 0x40 MSTORE POP SWAP5 SWAP4 POP POP POP POP JUMP JUMPDEST PUSH0 PUSH0 PUSH0 PUSH2 0x20CB PUSH1 0x40 MLOAD SWAP1 JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH1 0x4 DUP2 MSTORE PUSH1 0x24 DUP2 ADD SWAP1 SWAP2 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 SWAP2 POP PUSH0 SWAP1 DUP2 SWAP1 PUSH2 0x2106 SWAP1 DUP8 SWAP1 PUSH2 0x214A JUMP JUMPDEST POP SWAP2 POP SWAP2 POP PUSH2 0x2114 DUP4 PUSH1 0x40 MSTORE JUMP JUMPDEST DUP2 DUP1 ISZERO PUSH2 0x2122 JUMPI POP PUSH1 0x20 RETURNDATASIZE LT ISZERO JUMPDEST DUP1 ISZERO PUSH2 0x212F JUMPI POP PUSH1 0xFF DUP2 GT ISZERO JUMPDEST PUSH2 0x213A JUMPI PUSH0 PUSH0 PUSH2 0x213E JUMP JUMPDEST PUSH1 0x1 DUP2 JUMPDEST SWAP5 POP SWAP5 POP POP POP POP SWAP2 POP SWAP2 JUMP JUMPDEST PUSH0 PUSH0 PUSH0 PUSH1 0x40 PUSH0 DUP6 MLOAD PUSH1 0x20 DUP8 ADD DUP9 GAS STATICCALL SWAP3 POP PUSH0 MLOAD SWAP2 POP PUSH1 0x20 MLOAD SWAP1 POP SWAP3 POP SWAP3 POP SWAP3 JUMP JUMPDEST PUSH0 DUP2 MLOAD DUP1 DUP5 MSTORE DUP1 PUSH1 0x20 DUP5 ADD PUSH1 0x20 DUP7 ADD MCOPY PUSH0 PUSH1 0x20 DUP3 DUP7 ADD ADD MSTORE PUSH1 0x20 PUSH1 0x1F NOT PUSH1 0x1F DUP4 ADD AND DUP6 ADD ADD SWAP2 POP POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x20 DUP2 MSTORE PUSH0 PUSH2 0x707 PUSH1 0x20 DUP4 ADD DUP5 PUSH2 0x216B JUMP JUMPDEST PUSH0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x21BB JUMPI PUSH0 PUSH0 REVERT JUMPDEST POP CALLDATALOAD SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 AND DUP2 EQ PUSH2 0xF92 JUMPI PUSH0 PUSH0 REVERT JUMPDEST PUSH0 PUSH0 PUSH1 0x40 DUP4 DUP6 SUB SLT ISZERO PUSH2 0x21E7 JUMPI PUSH0 PUSH0 REVERT JUMPDEST DUP3 CALLDATALOAD PUSH2 0x21F2 DUP2 PUSH2 0x21C2 JUMP JUMPDEST SWAP5 PUSH1 0x20 SWAP4 SWAP1 SWAP4 ADD CALLDATALOAD SWAP4 POP POP POP JUMP JUMPDEST PUSH0 PUSH0 PUSH0 PUSH1 0x60 DUP5 DUP7 SUB SLT ISZERO PUSH2 0x2212 JUMPI PUSH0 PUSH0 REVERT JUMPDEST DUP4 CALLDATALOAD PUSH2 0x221D DUP2 PUSH2 0x21C2 JUMP JUMPDEST SWAP3 POP PUSH1 0x20 DUP5 ADD CALLDATALOAD PUSH2 0x222D DUP2 PUSH2 0x21C2 JUMP JUMPDEST SWAP3 SWAP6 SWAP3 SWAP5 POP POP POP PUSH1 0x40 SWAP2 SWAP1 SWAP2 ADD CALLDATALOAD SWAP1 JUMP JUMPDEST PUSH0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x224E JUMPI PUSH0 PUSH0 REVERT JUMPDEST DUP2 CALLDATALOAD PUSH2 0x707 DUP2 PUSH2 0x21C2 JUMP JUMPDEST PUSH4 0x4E487B71 PUSH1 0xE0 SHL PUSH0 MSTORE PUSH1 0x41 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH0 REVERT JUMPDEST PUSH0 DUP3 PUSH1 0x1F DUP4 ADD SLT PUSH2 0x227C JUMPI PUSH0 PUSH0 REVERT JUMPDEST DUP2 CALLDATALOAD PUSH1 0x20 DUP4 ADD PUSH0 PUSH0 PUSH8 0xFFFFFFFFFFFFFFFF DUP5 GT ISZERO PUSH2 0x229C JUMPI PUSH2 0x229C PUSH2 0x2259 JUMP JUMPDEST POP PUSH1 0x40 MLOAD PUSH1 0x1F NOT PUSH1 0x1F DUP6 ADD DUP2 AND PUSH1 0x3F ADD AND DUP2 ADD DUP2 DUP2 LT PUSH8 0xFFFFFFFFFFFFFFFF DUP3 GT OR ISZERO PUSH2 0x22CB JUMPI PUSH2 0x22CB PUSH2 0x2259 JUMP JUMPDEST PUSH1 0x40 MSTORE DUP4 DUP2 MSTORE SWAP1 POP DUP1 DUP3 DUP5 ADD DUP8 LT ISZERO PUSH2 0x22E2 JUMPI PUSH0 PUSH0 REVERT JUMPDEST DUP4 DUP4 PUSH1 0x20 DUP4 ADD CALLDATACOPY PUSH0 PUSH1 0x20 DUP6 DUP4 ADD ADD MSTORE DUP1 SWAP5 POP POP POP POP POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH0 PUSH0 PUSH1 0x40 DUP4 DUP6 SUB SLT ISZERO PUSH2 0x230F JUMPI PUSH0 PUSH0 REVERT JUMPDEST DUP3 CALLDATALOAD PUSH2 0x231A DUP2 PUSH2 0x21C2 JUMP JUMPDEST SWAP2 POP PUSH1 0x20 DUP4 ADD CALLDATALOAD PUSH8 0xFFFFFFFFFFFFFFFF DUP2 GT ISZERO PUSH2 0x2335 JUMPI PUSH0 PUSH0 REVERT JUMPDEST PUSH2 0x2341 DUP6 DUP3 DUP7 ADD PUSH2 0x226D JUMP JUMPDEST SWAP2 POP POP SWAP3 POP SWAP3 SWAP1 POP JUMP JUMPDEST PUSH0 PUSH0 PUSH1 0x40 DUP4 DUP6 SUB SLT ISZERO PUSH2 0x235C JUMPI PUSH0 PUSH0 REVERT JUMPDEST DUP3 CALLDATALOAD SWAP2 POP PUSH1 0x20 DUP4 ADD CALLDATALOAD PUSH2 0x236E DUP2 PUSH2 0x21C2 JUMP JUMPDEST DUP1 SWAP2 POP POP SWAP3 POP SWAP3 SWAP1 POP JUMP JUMPDEST PUSH0 PUSH0 PUSH0 PUSH1 0x60 DUP5 DUP7 SUB SLT ISZERO PUSH2 0x238B JUMPI PUSH0 PUSH0 REVERT JUMPDEST DUP4 CALLDATALOAD SWAP3 POP PUSH1 0x20 DUP5 ADD CALLDATALOAD PUSH2 0x239D DUP2 PUSH2 0x21C2 JUMP JUMPDEST SWAP2 POP PUSH1 0x40 DUP5 ADD CALLDATALOAD PUSH2 0x23AD DUP2 PUSH2 0x21C2 JUMP JUMPDEST DUP1 SWAP2 POP POP SWAP3 POP SWAP3 POP SWAP3 JUMP JUMPDEST PUSH0 PUSH0 PUSH1 0x40 DUP4 DUP6 SUB SLT ISZERO PUSH2 0x23C9 JUMPI PUSH0 PUSH0 REVERT JUMPDEST DUP3 CALLDATALOAD PUSH1 0xFF DUP2 AND DUP2 EQ PUSH2 0x231A JUMPI PUSH0 PUSH0 REVERT JUMPDEST PUSH0 PUSH0 PUSH0 PUSH1 0x60 DUP5 DUP7 SUB SLT ISZERO PUSH2 0x23EB JUMPI PUSH0 PUSH0 REVERT JUMPDEST DUP4 CALLDATALOAD PUSH2 0x23F6 DUP2 PUSH2 0x21C2 JUMP JUMPDEST SWAP3 POP PUSH1 0x20 DUP5 ADD CALLDATALOAD PUSH8 0xFFFFFFFFFFFFFFFF DUP2 GT ISZERO PUSH2 0x2411 JUMPI PUSH0 PUSH0 REVERT JUMPDEST PUSH2 0x241D DUP7 DUP3 DUP8 ADD PUSH2 0x226D JUMP JUMPDEST SWAP3 POP POP PUSH1 0x40 DUP5 ADD CALLDATALOAD DUP1 ISZERO ISZERO DUP2 EQ PUSH2 0x23AD JUMPI PUSH0 PUSH0 REVERT JUMPDEST PUSH0 PUSH0 PUSH1 0x40 DUP4 DUP6 SUB SLT ISZERO PUSH2 0x2443 JUMPI PUSH0 PUSH0 REVERT JUMPDEST DUP3 CALLDATALOAD PUSH2 0x244E DUP2 PUSH2 0x21C2 JUMP JUMPDEST SWAP2 POP PUSH1 0x20 DUP4 ADD CALLDATALOAD PUSH2 0x236E DUP2 PUSH2 0x21C2 JUMP JUMPDEST PUSH0 PUSH0 PUSH0 PUSH0 PUSH0 PUSH1 0xA0 DUP7 DUP9 SUB SLT ISZERO PUSH2 0x2472 JUMPI PUSH0 PUSH0 REVERT JUMPDEST DUP6 CALLDATALOAD PUSH8 0xFFFFFFFFFFFFFFFF DUP2 GT ISZERO PUSH2 0x2488 JUMPI PUSH0 PUSH0 REVERT JUMPDEST PUSH2 0x2494 DUP9 DUP3 DUP10 ADD PUSH2 0x226D JUMP JUMPDEST SWAP6 POP POP PUSH1 0x20 DUP7 ADD CALLDATALOAD PUSH8 0xFFFFFFFFFFFFFFFF DUP2 GT ISZERO PUSH2 0x24B0 JUMPI PUSH0 PUSH0 REVERT JUMPDEST PUSH2 0x24BC DUP9 DUP3 DUP10 ADD PUSH2 0x226D JUMP JUMPDEST SWAP5 POP POP PUSH1 0x40 DUP7 ADD CALLDATALOAD PUSH2 0x24CD DUP2 PUSH2 0x21C2 JUMP JUMPDEST SWAP3 POP PUSH1 0x60 DUP7 ADD CALLDATALOAD PUSH2 0x24DD DUP2 PUSH2 0x21C2 JUMP JUMPDEST SWAP2 POP PUSH1 0x80 DUP7 ADD CALLDATALOAD PUSH8 0xFFFFFFFFFFFFFFFF DUP2 GT ISZERO PUSH2 0x24F8 JUMPI PUSH0 PUSH0 REVERT JUMPDEST PUSH2 0x2504 DUP9 DUP3 DUP10 ADD PUSH2 0x226D JUMP JUMPDEST SWAP2 POP POP SWAP3 SWAP6 POP SWAP3 SWAP6 SWAP1 SWAP4 POP JUMP JUMPDEST PUSH1 0x1 DUP2 DUP2 SHR SWAP1 DUP3 AND DUP1 PUSH2 0x2525 JUMPI PUSH1 0x7F DUP3 AND SWAP2 POP JUMPDEST PUSH1 0x20 DUP3 LT DUP2 SUB PUSH2 0x2543 JUMPI PUSH4 0x4E487B71 PUSH1 0xE0 SHL PUSH0 MSTORE PUSH1 0x22 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH0 REVERT JUMPDEST POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH4 0x4E487B71 PUSH1 0xE0 SHL PUSH0 MSTORE PUSH1 0x11 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH0 REVERT JUMPDEST PUSH1 0xFF DUP2 DUP2 AND DUP4 DUP3 AND ADD SWAP1 DUP2 GT ISZERO PUSH2 0x6C0 JUMPI PUSH2 0x6C0 PUSH2 0x2549 JUMP JUMPDEST PUSH0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x2586 JUMPI PUSH0 PUSH0 REVERT JUMPDEST POP MLOAD SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP4 SWAP1 SWAP4 AND DUP4 MSTORE PUSH1 0x20 DUP4 ADD SWAP2 SWAP1 SWAP2 MSTORE PUSH1 0x40 DUP3 ADD MSTORE PUSH1 0x60 ADD SWAP1 JUMP JUMPDEST DUP1 DUP3 ADD DUP1 DUP3 GT ISZERO PUSH2 0x6C0 JUMPI PUSH2 0x6C0 PUSH2 0x2549 JUMP JUMPDEST PUSH1 0x1 DUP2 JUMPDEST PUSH1 0x1 DUP5 GT ISZERO PUSH2 0x25FC JUMPI DUP1 DUP6 DIV DUP2 GT ISZERO PUSH2 0x25E0 JUMPI PUSH2 0x25E0 PUSH2 0x2549 JUMP JUMPDEST PUSH1 0x1 DUP5 AND ISZERO PUSH2 0x25EE JUMPI SWAP1 DUP2 MUL SWAP1 JUMPDEST PUSH1 0x1 SWAP4 SWAP1 SWAP4 SHR SWAP3 DUP1 MUL PUSH2 0x25C5 JUMP JUMPDEST SWAP4 POP SWAP4 SWAP2 POP POP JUMP JUMPDEST PUSH0 DUP3 PUSH2 0x2612 JUMPI POP PUSH1 0x1 PUSH2 0x6C0 JUMP JUMPDEST DUP2 PUSH2 0x261E JUMPI POP PUSH0 PUSH2 0x6C0 JUMP JUMPDEST DUP2 PUSH1 0x1 DUP2 EQ PUSH2 0x2634 JUMPI PUSH1 0x2 DUP2 EQ PUSH2 0x263E JUMPI PUSH2 0x265A JUMP JUMPDEST PUSH1 0x1 SWAP2 POP POP PUSH2 0x6C0 JUMP JUMPDEST PUSH1 0xFF DUP5 GT ISZERO PUSH2 0x264F JUMPI PUSH2 0x264F PUSH2 0x2549 JUMP JUMPDEST POP POP PUSH1 0x1 DUP3 SHL PUSH2 0x6C0 JUMP JUMPDEST POP PUSH1 0x20 DUP4 LT PUSH2 0x133 DUP4 LT AND PUSH1 0x4E DUP5 LT PUSH1 0xB DUP5 LT AND OR ISZERO PUSH2 0x267D JUMPI POP DUP2 DUP2 EXP PUSH2 0x6C0 JUMP JUMPDEST PUSH2 0x2689 PUSH0 NOT DUP5 DUP5 PUSH2 0x25C1 JUMP JUMPDEST DUP1 PUSH0 NOT DIV DUP3 GT ISZERO PUSH2 0x269C JUMPI PUSH2 0x269C PUSH2 0x2549 JUMP JUMPDEST MUL SWAP4 SWAP3 POP POP POP JUMP JUMPDEST PUSH0 PUSH2 0x707 PUSH1 0xFF DUP5 AND DUP4 PUSH2 0x2604 JUMP JUMPDEST PUSH1 0xFF DUP4 AND DUP2 MSTORE PUSH1 0x40 PUSH1 0x20 DUP3 ADD MSTORE PUSH0 PUSH2 0x946 PUSH1 0x40 DUP4 ADD DUP5 PUSH2 0x216B JUMP JUMPDEST PUSH4 0x4E487B71 PUSH1 0xE0 SHL PUSH0 MSTORE PUSH1 0x12 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH0 REVERT JUMPDEST PUSH0 DUP3 MLOAD DUP1 PUSH1 0x20 DUP6 ADD DUP5 MCOPY PUSH0 SWAP3 ADD SWAP2 DUP3 MSTORE POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x2707 JUMPI PUSH0 PUSH0 REVERT JUMPDEST DUP2 MLOAD PUSH2 0x707 DUP2 PUSH2 0x21C2 JUMP JUMPDEST PUSH4 0x4E487B71 PUSH1 0xE0 SHL PUSH0 MSTORE PUSH1 0x21 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH0 REVERT JUMPDEST PUSH0 PUSH1 0xFF DUP4 AND DUP1 PUSH2 0x2744 JUMPI PUSH4 0x4E487B71 PUSH1 0xE0 SHL PUSH0 MSTORE PUSH1 0x12 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH0 REVERT JUMPDEST DUP1 PUSH1 0xFF DUP5 AND MOD SWAP2 POP POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x1F DUP3 GT ISZERO PUSH2 0xDAE JUMPI DUP1 PUSH0 MSTORE PUSH1 0x20 PUSH0 KECCAK256 PUSH1 0x1F DUP5 ADD PUSH1 0x5 SHR DUP2 ADD PUSH1 0x20 DUP6 LT ISZERO PUSH2 0x2778 JUMPI POP DUP1 JUMPDEST PUSH1 0x1F DUP5 ADD PUSH1 0x5 SHR DUP3 ADD SWAP2 POP JUMPDEST DUP2 DUP2 LT ISZERO PUSH2 0x10C0 JUMPI PUSH0 DUP2 SSTORE PUSH1 0x1 ADD PUSH2 0x2784 JUMP JUMPDEST DUP2 MLOAD PUSH8 0xFFFFFFFFFFFFFFFF DUP2 GT ISZERO PUSH2 0x27B1 JUMPI PUSH2 0x27B1 PUSH2 0x2259 JUMP JUMPDEST PUSH2 0x27C5 DUP2 PUSH2 0x27BF DUP5 SLOAD PUSH2 0x2511 JUMP JUMPDEST DUP5 PUSH2 0x2753 JUMP JUMPDEST PUSH1 0x20 PUSH1 0x1F DUP3 GT PUSH1 0x1 DUP2 EQ PUSH2 0x27F7 JUMPI PUSH0 DUP4 ISZERO PUSH2 0x27E0 JUMPI POP DUP5 DUP3 ADD MLOAD JUMPDEST PUSH0 NOT PUSH1 0x3 DUP6 SWAP1 SHL SHR NOT AND PUSH1 0x1 DUP5 SWAP1 SHL OR DUP5 SSTORE PUSH2 0x10C0 JUMP JUMPDEST PUSH0 DUP5 DUP2 MSTORE PUSH1 0x20 DUP2 KECCAK256 PUSH1 0x1F NOT DUP6 AND SWAP2 JUMPDEST DUP3 DUP2 LT ISZERO PUSH2 0x2826 JUMPI DUP8 DUP6 ADD MLOAD DUP3 SSTORE PUSH1 0x20 SWAP5 DUP6 ADD SWAP5 PUSH1 0x1 SWAP1 SWAP3 ADD SWAP2 ADD PUSH2 0x2806 JUMP JUMPDEST POP DUP5 DUP3 LT ISZERO PUSH2 0x2843 JUMPI DUP7 DUP5 ADD MLOAD PUSH0 NOT PUSH1 0x3 DUP8 SWAP1 SHL PUSH1 0xF8 AND SHR NOT AND DUP2 SSTORE JUMPDEST POP POP POP POP PUSH1 0x1 SWAP1 DUP2 SHL ADD SWAP1 SSTORE POP JUMP INVALID MSTORE 0xC6 ORIGIN SELFBALANCE RJUMPI 0xF47D 0xB1 SWAP14 TLOAD RJUMP 0x4600 ADDRESS 0xC4 SWAP8 CREATE PUSH8 0xCA4CEBF71BA98EEA 0xDA 0xBE KECCAK256 0xBA 0xCE STOP CALLDATASIZE ADDMOD SWAP5 LOG1 EXTCODESIZE LOG1 LOG3 0x21 MOD PUSH8 0xC828492DB98DCA3E KECCAK256 PUSH23 0xCC3735A920A3CA505D382BBCA264697066735822122066 0xB8 DUP12 0xC4 SWAP6 0x24 PUSH0 DUP12 0xC6 RETURNCONTRACT 0x88 CODECOPY 0xD2 0x4D PUSH14 0x9C3D76729AF71AC31F0634DFD805 0x4C SELFBALANCE ADDMOD PUSH5 0x736F6C6343 STOP ADDMOD 0x1E STOP CALLER ","sourceMap":"1923:6375:74:-:0;;;1084:4:31;1041:48;;2544:47:74;;;;;;;;;-1:-1:-1;2564:22:74;:20;:22::i;:::-;1923:6375;;7709:422:30;3147:66;7898:15;;;;;;;7894:76;;;7936:23;;-1:-1:-1;;;7936:23:30;;;;;;;;;;;7894:76;7983:14;;-1:-1:-1;;;;;7983:14:30;;;:34;7979:146;;8033:33;;-1:-1:-1;;;;;;8033:33:30;-1:-1:-1;;;;;8033:33:30;;;;;8085:29;;158:50:87;;;8085:29:30;;146:2:87;131:18;8085:29:30;;;;;;;7979:146;7758:373;7709:422::o;14:200:87:-;1923:6375:74;;;;;;;;;;;;;;;;;;;;;;"},"deployedBytecode":{"functionDebugData":{"@UPGRADE_INTERFACE_VERSION_7940":{"entryPoint":null,"id":7940,"parameterSlots":0,"returnSlots":0},"@__ERC20_init_3115":{"entryPoint":7162,"id":3115,"parameterSlots":2,"returnSlots":0},"@__ERC20_init_unchained_3143":{"entryPoint":7920,"id":3143,"parameterSlots":2,"returnSlots":0},"@__ERC4626_init_3762":{"entryPoint":7180,"id":3762,"parameterSlots":1,"returnSlots":0},"@__ERC4626_init_unchained_3800":{"entryPoint":8000,"id":3800,"parameterSlots":1,"returnSlots":0},"@__SingleStrategyERC4626_init_21427":{"entryPoint":4860,"id":21427,"parameterSlots":5,"returnSlots":0},"@__SingleStrategyERC4626_init_unchained_21455":{"entryPoint":7197,"id":21455,"parameterSlots":2,"returnSlots":0},"@_approve_3547":{"entryPoint":3489,"id":3547,"parameterSlots":3,"returnSlots":0},"@_approve_3615":{"entryPoint":4963,"id":3615,"parameterSlots":4,"returnSlots":0},"@_authorizeUpgrade_21725":{"entryPoint":3986,"id":21725,"parameterSlots":1,"returnSlots":0},"@_burn_3529":{"entryPoint":7735,"id":3529,"parameterSlots":2,"returnSlots":0},"@_checkInitializing_7828":{"entryPoint":7125,"id":7828,"parameterSlots":0,"returnSlots":0},"@_checkNonPayable_7605":{"entryPoint":7598,"id":7605,"parameterSlots":0,"returnSlots":0},"@_checkNotDelegated_8034":{"entryPoint":4177,"id":8034,"parameterSlots":0,"returnSlots":0},"@_checkProxy_8018":{"entryPoint":3820,"id":8018,"parameterSlots":0,"returnSlots":0},"@_convertToAssets_4329":{"entryPoint":3402,"id":4329,"parameterSlots":2,"returnSlots":1},"@_convertToShares_4301":{"entryPoint":3507,"id":4301,"parameterSlots":2,"returnSlots":1},"@_decimalsOffset_4427":{"entryPoint":null,"id":4427,"parameterSlots":0,"returnSlots":1},"@_deposit_21630":{"entryPoint":4250,"id":21630,"parameterSlots":4,"returnSlots":0},"@_deposit_4369":{"entryPoint":5569,"id":4369,"parameterSlots":4,"returnSlots":0},"@_getERC20Storage_3099":{"entryPoint":null,"id":3099,"parameterSlots":0,"returnSlots":1},"@_getERC4626Storage_3712":{"entryPoint":null,"id":3712,"parameterSlots":0,"returnSlots":1},"@_getInitializableStorage_7919":{"entryPoint":4820,"id":7919,"parameterSlots":0,"returnSlots":1},"@_initializableStorageSlot_7905":{"entryPoint":null,"id":7905,"parameterSlots":0,"returnSlots":1},"@_isInitializing_7896":{"entryPoint":7895,"id":7896,"parameterSlots":0,"returnSlots":1},"@_mint_3496":{"entryPoint":7683,"id":3496,"parameterSlots":2,"returnSlots":0},"@_msgSender_4456":{"entryPoint":null,"id":4456,"parameterSlots":0,"returnSlots":1},"@_safeTransferFrom_9842":{"entryPoint":8176,"id":9842,"parameterSlots":5,"returnSlots":1},"@_safeTransfer_9817":{"entryPoint":8285,"id":9817,"parameterSlots":4,"returnSlots":1},"@_setImplementation_7385":{"entryPoint":7499,"id":7385,"parameterSlots":1,"returnSlots":0},"@_spendAllowance_3663":{"entryPoint":3585,"id":3663,"parameterSlots":3,"returnSlots":0},"@_transfer_3371":{"entryPoint":3666,"id":3371,"parameterSlots":3,"returnSlots":0},"@_tryGetAssetDecimals_3878":{"entryPoint":8383,"id":3878,"parameterSlots":1,"returnSlots":2},"@_update_3463":{"entryPoint":5190,"id":3463,"parameterSlots":3,"returnSlots":0},"@_upgradeToAndCallUUPS_8085":{"entryPoint":3989,"id":8085,"parameterSlots":2,"returnSlots":0},"@_withdraw_21601":{"entryPoint":4295,"id":21601,"parameterSlots":5,"returnSlots":0},"@_withdraw_4419":{"entryPoint":6281,"id":4419,"parameterSlots":5,"returnSlots":0},"@allowance_3268":{"entryPoint":2967,"id":3268,"parameterSlots":2,"returnSlots":1},"@approve_3292":{"entryPoint":1734,"id":3292,"parameterSlots":2,"returnSlots":1},"@asset_3919":{"entryPoint":1872,"id":3919,"parameterSlots":0,"returnSlots":1},"@balanceOf_3220":{"entryPoint":2382,"id":3220,"parameterSlots":1,"returnSlots":1},"@bubbleRevert_10459":{"entryPoint":7884,"id":10459,"parameterSlots":0,"returnSlots":0},"@checkAsset_15555":{"entryPoint":6608,"id":15555,"parameterSlots":2,"returnSlots":0},"@convertToAssets_3969":{"entryPoint":1717,"id":3969,"parameterSlots":1,"returnSlots":1},"@convertToShares_3953":{"entryPoint":2784,"id":3953,"parameterSlots":1,"returnSlots":1},"@dcConnect_15334":{"entryPoint":7047,"id":15334,"parameterSlots":2,"returnSlots":0},"@dcDeposit_15503":{"entryPoint":5676,"id":15503,"parameterSlots":3,"returnSlots":1},"@dcDisconnect_15385":{"entryPoint":6754,"id":15385,"parameterSlots":2,"returnSlots":0},"@dcForward_15532":{"entryPoint":4394,"id":15532,"parameterSlots":3,"returnSlots":1},"@dcWithdraw_15444":{"entryPoint":5992,"id":15444,"parameterSlots":3,"returnSlots":1},"@decimals_3900":{"entryPoint":1806,"id":3900,"parameterSlots":0,"returnSlots":1},"@delegatecallNoReturn_10421":{"entryPoint":7840,"id":10421,"parameterSlots":2,"returnSlots":1},"@deposit_4135":{"entryPoint":2289,"id":4135,"parameterSlots":2,"returnSlots":1},"@forwardToStrategy_21679":{"entryPoint":2829,"id":21679,"parameterSlots":2,"returnSlots":1},"@functionDelegateCall_10166":{"entryPoint":6448,"id":10166,"parameterSlots":2,"returnSlots":1},"@getAddressSlot_10943":{"entryPoint":null,"id":10943,"parameterSlots":1,"returnSlots":1},"@getBytesSlot_11020":{"entryPoint":null,"id":11020,"parameterSlots":1,"returnSlots":1},"@getBytesSlot_21662":{"entryPoint":1955,"id":21662,"parameterSlots":1,"returnSlots":1},"@getFreeMemoryPointer_10485":{"entryPoint":null,"id":10485,"parameterSlots":0,"returnSlots":1},"@getImplementation_7358":{"entryPoint":null,"id":7358,"parameterSlots":0,"returnSlots":1},"@initialize_21395":{"entryPoint":3040,"id":21395,"parameterSlots":5,"returnSlots":0},"@maxDeposit_15674":{"entryPoint":3759,"id":15674,"parameterSlots":1,"returnSlots":1},"@maxDeposit_21527":{"entryPoint":1918,"id":21527,"parameterSlots":1,"returnSlots":1},"@maxDeposit_3984":{"entryPoint":null,"id":3984,"parameterSlots":1,"returnSlots":1},"@maxMint_21557":{"entryPoint":2746,"id":21557,"parameterSlots":1,"returnSlots":1},"@maxMint_3999":{"entryPoint":null,"id":3999,"parameterSlots":1,"returnSlots":1},"@maxRedeem_21506":{"entryPoint":2854,"id":21506,"parameterSlots":1,"returnSlots":1},"@maxRedeem_4027":{"entryPoint":4476,"id":4027,"parameterSlots":1,"returnSlots":1},"@maxWithdraw_15692":{"entryPoint":4335,"id":15692,"parameterSlots":1,"returnSlots":1},"@maxWithdraw_21476":{"entryPoint":2795,"id":21476,"parameterSlots":1,"returnSlots":1},"@maxWithdraw_4014":{"entryPoint":4381,"id":4014,"parameterSlots":1,"returnSlots":1},"@min_11411":{"entryPoint":3805,"id":11411,"parameterSlots":2,"returnSlots":1},"@mint_4179":{"entryPoint":2420,"id":4179,"parameterSlots":2,"returnSlots":1},"@mul512_11124":{"entryPoint":8131,"id":11124,"parameterSlots":2,"returnSlots":2},"@mulDiv_11611":{"entryPoint":7323,"id":11611,"parameterSlots":3,"returnSlots":1},"@mulDiv_11648":{"entryPoint":4897,"id":11648,"parameterSlots":4,"returnSlots":1},"@name_3159":{"entryPoint":1525,"id":3159,"parameterSlots":0,"returnSlots":1},"@panic_10907":{"entryPoint":8159,"id":10907,"parameterSlots":1,"returnSlots":0},"@previewDeposit_4043":{"entryPoint":null,"id":4043,"parameterSlots":1,"returnSlots":1},"@previewMint_4059":{"entryPoint":2571,"id":4059,"parameterSlots":1,"returnSlots":1},"@previewRedeem_4091":{"entryPoint":null,"id":4091,"parameterSlots":1,"returnSlots":1},"@previewWithdraw_4075":{"entryPoint":1757,"id":4075,"parameterSlots":1,"returnSlots":1},"@proxiableUUID_7976":{"entryPoint":2262,"id":7976,"parameterSlots":0,"returnSlots":1},"@redeem_4273":{"entryPoint":2669,"id":4273,"parameterSlots":3,"returnSlots":1},"@returnDataSize_10445":{"entryPoint":null,"id":10445,"parameterSlots":0,"returnSlots":1},"@returnData_10453":{"entryPoint":7859,"id":10453,"parameterSlots":0,"returnSlots":1},"@safeTransferFrom_9491":{"entryPoint":7629,"id":9491,"parameterSlots":4,"returnSlots":0},"@safeTransfer_9460":{"entryPoint":7787,"id":9460,"parameterSlots":3,"returnSlots":0},"@setFreeMemoryPointer_10494":{"entryPoint":null,"id":10494,"parameterSlots":1,"returnSlots":0},"@setStrategy_21708":{"entryPoint":2901,"id":21708,"parameterSlots":3,"returnSlots":0},"@staticcallReturn64Bytes_10409":{"entryPoint":8522,"id":10409,"parameterSlots":2,"returnSlots":3},"@strategyChange_15620":{"entryPoint":4486,"id":15620,"parameterSlots":5,"returnSlots":0},"@strategy_21718":{"entryPoint":null,"id":21718,"parameterSlots":0,"returnSlots":1},"@symbol_3175":{"entryPoint":2496,"id":3175,"parameterSlots":0,"returnSlots":1},"@ternary_11373":{"entryPoint":null,"id":11373,"parameterSlots":3,"returnSlots":1},"@toUint_14490":{"entryPoint":null,"id":14490,"parameterSlots":1,"returnSlots":1},"@totalAssets_15656":{"entryPoint":3297,"id":15656,"parameterSlots":1,"returnSlots":1},"@totalAssets_21569":{"entryPoint":1499,"id":21569,"parameterSlots":0,"returnSlots":1},"@totalSupply_3200":{"entryPoint":null,"id":3200,"parameterSlots":0,"returnSlots":1},"@transferFrom_3324":{"entryPoint":1769,"id":3324,"parameterSlots":3,"returnSlots":1},"@transfer_3244":{"entryPoint":2558,"id":3244,"parameterSlots":2,"returnSlots":1},"@unsignedRoundsUp_12704":{"entryPoint":7279,"id":12704,"parameterSlots":1,"returnSlots":1},"@upgradeToAndCall_7421":{"entryPoint":5484,"id":7421,"parameterSlots":2,"returnSlots":0},"@upgradeToAndCall_7996":{"entryPoint":2240,"id":7996,"parameterSlots":2,"returnSlots":0},"@withdraw_4226":{"entryPoint":2583,"id":4226,"parameterSlots":3,"returnSlots":1},"abi_decode_bytes":{"entryPoint":8813,"id":null,"parameterSlots":2,"returnSlots":1},"abi_decode_tuple_t_address":{"entryPoint":8766,"id":null,"parameterSlots":2,"returnSlots":1},"abi_decode_tuple_t_address_fromMemory":{"entryPoint":9975,"id":null,"parameterSlots":2,"returnSlots":1},"abi_decode_tuple_t_addresst_address":{"entryPoint":9266,"id":null,"parameterSlots":2,"returnSlots":2},"abi_decode_tuple_t_addresst_addresst_uint256":{"entryPoint":8704,"id":null,"parameterSlots":2,"returnSlots":3},"abi_decode_tuple_t_addresst_bytes_memory_ptr":{"entryPoint":8958,"id":null,"parameterSlots":2,"returnSlots":2},"abi_decode_tuple_t_addresst_uint256":{"entryPoint":8662,"id":null,"parameterSlots":2,"returnSlots":2},"abi_decode_tuple_t_bytes32":{"entryPoint":null,"id":null,"parameterSlots":2,"returnSlots":1},"abi_decode_tuple_t_bytes32_fromMemory":{"entryPoint":9590,"id":null,"parameterSlots":2,"returnSlots":1},"abi_decode_tuple_t_contract$_IInvestStrategy_$20725t_bytes_memory_ptrt_bool":{"entryPoint":9177,"id":null,"parameterSlots":2,"returnSlots":3},"abi_decode_tuple_t_string_memory_ptrt_string_memory_ptrt_contract$_IERC20_$8679t_contract$_IInvestStrategy_$20725t_bytes_memory_ptr":{"entryPoint":9310,"id":null,"parameterSlots":2,"returnSlots":5},"abi_decode_tuple_t_uint256":{"entryPoint":8619,"id":null,"parameterSlots":2,"returnSlots":1},"abi_decode_tuple_t_uint256_fromMemory":{"entryPoint":null,"id":null,"parameterSlots":2,"returnSlots":1},"abi_decode_tuple_t_uint256t_address":{"entryPoint":9035,"id":null,"parameterSlots":2,"returnSlots":2},"abi_decode_tuple_t_uint256t_addresst_address":{"entryPoint":9081,"id":null,"parameterSlots":2,"returnSlots":3},"abi_decode_tuple_t_uint8t_bytes_memory_ptr":{"entryPoint":9144,"id":null,"parameterSlots":2,"returnSlots":2},"abi_encode_string":{"entryPoint":8555,"id":null,"parameterSlots":2,"returnSlots":1},"abi_encode_tuple_packed_t_bytes_memory_ptr__to_t_bytes_memory_ptr__nonPadded_inplace_fromStack_reversed":{"entryPoint":9953,"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_uint256_t_uint256__to_t_address_t_uint256_t_uint256__fromStack_reversed":{"entryPoint":9613,"id":null,"parameterSlots":4,"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_bytes_memory_ptr__to_t_bytes_memory_ptr__fromStack_reversed":{"entryPoint":null,"id":null,"parameterSlots":2,"returnSlots":1},"abi_encode_tuple_t_contract$_IInvestStrategy_$20725__to_t_address__fromStack_reversed":{"entryPoint":null,"id":null,"parameterSlots":2,"returnSlots":1},"abi_encode_tuple_t_contract$_IInvestStrategy_$20725_t_contract$_IInvestStrategy_$20725__to_t_address_t_address__fromStack_reversed":{"entryPoint":null,"id":null,"parameterSlots":3,"returnSlots":1},"abi_encode_tuple_t_rational_1_by_1__to_t_uint64__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":8601,"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_uint8__to_t_uint8__fromStack_reversed":{"entryPoint":null,"id":null,"parameterSlots":2,"returnSlots":1},"abi_encode_tuple_t_uint8_t_bytes_memory_ptr__to_t_uint8_t_bytes_memory_ptr__fromStack_reversed":{"entryPoint":9906,"id":null,"parameterSlots":3,"returnSlots":1},"array_dataslot_string_storage":{"entryPoint":null,"id":null,"parameterSlots":1,"returnSlots":1},"checked_add_t_uint256":{"entryPoint":9646,"id":null,"parameterSlots":2,"returnSlots":1},"checked_add_t_uint8":{"entryPoint":9565,"id":null,"parameterSlots":2,"returnSlots":1},"checked_exp_helper":{"entryPoint":9665,"id":null,"parameterSlots":3,"returnSlots":2},"checked_exp_t_uint256_t_uint8":{"entryPoint":9892,"id":null,"parameterSlots":2,"returnSlots":1},"checked_exp_unsigned":{"entryPoint":9732,"id":null,"parameterSlots":2,"returnSlots":1},"clean_up_bytearray_end_slots_string_storage":{"entryPoint":10067,"id":null,"parameterSlots":3,"returnSlots":0},"copy_byte_array_to_storage_from_t_string_memory_ptr_to_t_string_storage":{"entryPoint":10135,"id":null,"parameterSlots":2,"returnSlots":0},"extract_byte_array_length":{"entryPoint":9489,"id":null,"parameterSlots":1,"returnSlots":1},"extract_used_part_and_set_length_of_short_byte_array":{"entryPoint":null,"id":null,"parameterSlots":2,"returnSlots":1},"mod_t_uint8":{"entryPoint":10022,"id":null,"parameterSlots":2,"returnSlots":1},"panic_error_0x11":{"entryPoint":9545,"id":null,"parameterSlots":0,"returnSlots":0},"panic_error_0x12":{"entryPoint":9933,"id":null,"parameterSlots":0,"returnSlots":0},"panic_error_0x21":{"entryPoint":10002,"id":null,"parameterSlots":0,"returnSlots":0},"panic_error_0x41":{"entryPoint":8793,"id":null,"parameterSlots":0,"returnSlots":0},"validator_revert_address":{"entryPoint":8642,"id":null,"parameterSlots":1,"returnSlots":0}},"generatedSources":[{"ast":{"nativeSrc":"0:15892:87","nodeType":"YulBlock","src":"0:15892:87","statements":[{"nativeSrc":"6:3:87","nodeType":"YulBlock","src":"6:3:87","statements":[]},{"body":{"nativeSrc":"115:76:87","nodeType":"YulBlock","src":"115:76:87","statements":[{"nativeSrc":"125:26:87","nodeType":"YulAssignment","src":"125:26:87","value":{"arguments":[{"name":"headStart","nativeSrc":"137:9:87","nodeType":"YulIdentifier","src":"137:9:87"},{"kind":"number","nativeSrc":"148:2:87","nodeType":"YulLiteral","src":"148:2:87","type":"","value":"32"}],"functionName":{"name":"add","nativeSrc":"133:3:87","nodeType":"YulIdentifier","src":"133:3:87"},"nativeSrc":"133:18:87","nodeType":"YulFunctionCall","src":"133:18:87"},"variableNames":[{"name":"tail","nativeSrc":"125:4:87","nodeType":"YulIdentifier","src":"125:4:87"}]},{"expression":{"arguments":[{"name":"headStart","nativeSrc":"167:9:87","nodeType":"YulIdentifier","src":"167:9:87"},{"name":"value0","nativeSrc":"178:6:87","nodeType":"YulIdentifier","src":"178:6:87"}],"functionName":{"name":"mstore","nativeSrc":"160:6:87","nodeType":"YulIdentifier","src":"160:6:87"},"nativeSrc":"160:25:87","nodeType":"YulFunctionCall","src":"160:25:87"},"nativeSrc":"160:25:87","nodeType":"YulExpressionStatement","src":"160:25:87"}]},"name":"abi_encode_tuple_t_uint256__to_t_uint256__fromStack_reversed","nativeSrc":"14:177:87","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nativeSrc":"84:9:87","nodeType":"YulTypedName","src":"84:9:87","type":""},{"name":"value0","nativeSrc":"95:6:87","nodeType":"YulTypedName","src":"95:6:87","type":""}],"returnVariables":[{"name":"tail","nativeSrc":"106:4:87","nodeType":"YulTypedName","src":"106:4:87","type":""}],"src":"14:177:87"},{"body":{"nativeSrc":"246:239:87","nodeType":"YulBlock","src":"246:239:87","statements":[{"nativeSrc":"256:26:87","nodeType":"YulVariableDeclaration","src":"256:26:87","value":{"arguments":[{"name":"value","nativeSrc":"276:5:87","nodeType":"YulIdentifier","src":"276:5:87"}],"functionName":{"name":"mload","nativeSrc":"270:5:87","nodeType":"YulIdentifier","src":"270:5:87"},"nativeSrc":"270:12:87","nodeType":"YulFunctionCall","src":"270:12:87"},"variables":[{"name":"length","nativeSrc":"260:6:87","nodeType":"YulTypedName","src":"260:6:87","type":""}]},{"expression":{"arguments":[{"name":"pos","nativeSrc":"298:3:87","nodeType":"YulIdentifier","src":"298:3:87"},{"name":"length","nativeSrc":"303:6:87","nodeType":"YulIdentifier","src":"303:6:87"}],"functionName":{"name":"mstore","nativeSrc":"291:6:87","nodeType":"YulIdentifier","src":"291:6:87"},"nativeSrc":"291:19:87","nodeType":"YulFunctionCall","src":"291:19:87"},"nativeSrc":"291:19:87","nodeType":"YulExpressionStatement","src":"291:19:87"},{"expression":{"arguments":[{"arguments":[{"name":"pos","nativeSrc":"329:3:87","nodeType":"YulIdentifier","src":"329:3:87"},{"kind":"number","nativeSrc":"334:4:87","nodeType":"YulLiteral","src":"334:4:87","type":"","value":"0x20"}],"functionName":{"name":"add","nativeSrc":"325:3:87","nodeType":"YulIdentifier","src":"325:3:87"},"nativeSrc":"325:14:87","nodeType":"YulFunctionCall","src":"325:14:87"},{"arguments":[{"name":"value","nativeSrc":"345:5:87","nodeType":"YulIdentifier","src":"345:5:87"},{"kind":"number","nativeSrc":"352:4:87","nodeType":"YulLiteral","src":"352:4:87","type":"","value":"0x20"}],"functionName":{"name":"add","nativeSrc":"341:3:87","nodeType":"YulIdentifier","src":"341:3:87"},"nativeSrc":"341:16:87","nodeType":"YulFunctionCall","src":"341:16:87"},{"name":"length","nativeSrc":"359:6:87","nodeType":"YulIdentifier","src":"359:6:87"}],"functionName":{"name":"mcopy","nativeSrc":"319:5:87","nodeType":"YulIdentifier","src":"319:5:87"},"nativeSrc":"319:47:87","nodeType":"YulFunctionCall","src":"319:47:87"},"nativeSrc":"319:47:87","nodeType":"YulExpressionStatement","src":"319:47:87"},{"expression":{"arguments":[{"arguments":[{"arguments":[{"name":"pos","nativeSrc":"390:3:87","nodeType":"YulIdentifier","src":"390:3:87"},{"name":"length","nativeSrc":"395:6:87","nodeType":"YulIdentifier","src":"395:6:87"}],"functionName":{"name":"add","nativeSrc":"386:3:87","nodeType":"YulIdentifier","src":"386:3:87"},"nativeSrc":"386:16:87","nodeType":"YulFunctionCall","src":"386:16:87"},{"kind":"number","nativeSrc":"404:4:87","nodeType":"YulLiteral","src":"404:4:87","type":"","value":"0x20"}],"functionName":{"name":"add","nativeSrc":"382:3:87","nodeType":"YulIdentifier","src":"382:3:87"},"nativeSrc":"382:27:87","nodeType":"YulFunctionCall","src":"382:27:87"},{"kind":"number","nativeSrc":"411:1:87","nodeType":"YulLiteral","src":"411:1:87","type":"","value":"0"}],"functionName":{"name":"mstore","nativeSrc":"375:6:87","nodeType":"YulIdentifier","src":"375:6:87"},"nativeSrc":"375:38:87","nodeType":"YulFunctionCall","src":"375:38:87"},"nativeSrc":"375:38:87","nodeType":"YulExpressionStatement","src":"375:38:87"},{"nativeSrc":"422:57:87","nodeType":"YulAssignment","src":"422:57:87","value":{"arguments":[{"arguments":[{"name":"pos","nativeSrc":"437:3:87","nodeType":"YulIdentifier","src":"437:3:87"},{"arguments":[{"arguments":[{"name":"length","nativeSrc":"450:6:87","nodeType":"YulIdentifier","src":"450:6:87"},{"kind":"number","nativeSrc":"458:2:87","nodeType":"YulLiteral","src":"458:2:87","type":"","value":"31"}],"functionName":{"name":"add","nativeSrc":"446:3:87","nodeType":"YulIdentifier","src":"446:3:87"},"nativeSrc":"446:15:87","nodeType":"YulFunctionCall","src":"446:15:87"},{"arguments":[{"kind":"number","nativeSrc":"467:2:87","nodeType":"YulLiteral","src":"467:2:87","type":"","value":"31"}],"functionName":{"name":"not","nativeSrc":"463:3:87","nodeType":"YulIdentifier","src":"463:3:87"},"nativeSrc":"463:7:87","nodeType":"YulFunctionCall","src":"463:7:87"}],"functionName":{"name":"and","nativeSrc":"442:3:87","nodeType":"YulIdentifier","src":"442:3:87"},"nativeSrc":"442:29:87","nodeType":"YulFunctionCall","src":"442:29:87"}],"functionName":{"name":"add","nativeSrc":"433:3:87","nodeType":"YulIdentifier","src":"433:3:87"},"nativeSrc":"433:39:87","nodeType":"YulFunctionCall","src":"433:39:87"},{"kind":"number","nativeSrc":"474:4:87","nodeType":"YulLiteral","src":"474:4:87","type":"","value":"0x20"}],"functionName":{"name":"add","nativeSrc":"429:3:87","nodeType":"YulIdentifier","src":"429:3:87"},"nativeSrc":"429:50:87","nodeType":"YulFunctionCall","src":"429:50:87"},"variableNames":[{"name":"end","nativeSrc":"422:3:87","nodeType":"YulIdentifier","src":"422:3:87"}]}]},"name":"abi_encode_string","nativeSrc":"196:289:87","nodeType":"YulFunctionDefinition","parameters":[{"name":"value","nativeSrc":"223:5:87","nodeType":"YulTypedName","src":"223:5:87","type":""},{"name":"pos","nativeSrc":"230:3:87","nodeType":"YulTypedName","src":"230:3:87","type":""}],"returnVariables":[{"name":"end","nativeSrc":"238:3:87","nodeType":"YulTypedName","src":"238:3:87","type":""}],"src":"196:289:87"},{"body":{"nativeSrc":"611:99:87","nodeType":"YulBlock","src":"611:99:87","statements":[{"expression":{"arguments":[{"name":"headStart","nativeSrc":"628:9:87","nodeType":"YulIdentifier","src":"628:9:87"},{"kind":"number","nativeSrc":"639:2:87","nodeType":"YulLiteral","src":"639:2:87","type":"","value":"32"}],"functionName":{"name":"mstore","nativeSrc":"621:6:87","nodeType":"YulIdentifier","src":"621:6:87"},"nativeSrc":"621:21:87","nodeType":"YulFunctionCall","src":"621:21:87"},"nativeSrc":"621:21:87","nodeType":"YulExpressionStatement","src":"621:21:87"},{"nativeSrc":"651:53:87","nodeType":"YulAssignment","src":"651:53:87","value":{"arguments":[{"name":"value0","nativeSrc":"677:6:87","nodeType":"YulIdentifier","src":"677:6:87"},{"arguments":[{"name":"headStart","nativeSrc":"689:9:87","nodeType":"YulIdentifier","src":"689:9:87"},{"kind":"number","nativeSrc":"700:2:87","nodeType":"YulLiteral","src":"700:2:87","type":"","value":"32"}],"functionName":{"name":"add","nativeSrc":"685:3:87","nodeType":"YulIdentifier","src":"685:3:87"},"nativeSrc":"685:18:87","nodeType":"YulFunctionCall","src":"685:18:87"}],"functionName":{"name":"abi_encode_string","nativeSrc":"659:17:87","nodeType":"YulIdentifier","src":"659:17:87"},"nativeSrc":"659:45:87","nodeType":"YulFunctionCall","src":"659:45:87"},"variableNames":[{"name":"tail","nativeSrc":"651:4:87","nodeType":"YulIdentifier","src":"651:4:87"}]}]},"name":"abi_encode_tuple_t_string_memory_ptr__to_t_string_memory_ptr__fromStack_reversed","nativeSrc":"490:220:87","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nativeSrc":"580:9:87","nodeType":"YulTypedName","src":"580:9:87","type":""},{"name":"value0","nativeSrc":"591:6:87","nodeType":"YulTypedName","src":"591:6:87","type":""}],"returnVariables":[{"name":"tail","nativeSrc":"602:4:87","nodeType":"YulTypedName","src":"602:4:87","type":""}],"src":"490:220:87"},{"body":{"nativeSrc":"785:156:87","nodeType":"YulBlock","src":"785:156:87","statements":[{"body":{"nativeSrc":"831:16:87","nodeType":"YulBlock","src":"831:16:87","statements":[{"expression":{"arguments":[{"kind":"number","nativeSrc":"840:1:87","nodeType":"YulLiteral","src":"840:1:87","type":"","value":"0"},{"kind":"number","nativeSrc":"843:1:87","nodeType":"YulLiteral","src":"843:1:87","type":"","value":"0"}],"functionName":{"name":"revert","nativeSrc":"833:6:87","nodeType":"YulIdentifier","src":"833:6:87"},"nativeSrc":"833:12:87","nodeType":"YulFunctionCall","src":"833:12:87"},"nativeSrc":"833:12:87","nodeType":"YulExpressionStatement","src":"833:12:87"}]},"condition":{"arguments":[{"arguments":[{"name":"dataEnd","nativeSrc":"806:7:87","nodeType":"YulIdentifier","src":"806:7:87"},{"name":"headStart","nativeSrc":"815:9:87","nodeType":"YulIdentifier","src":"815:9:87"}],"functionName":{"name":"sub","nativeSrc":"802:3:87","nodeType":"YulIdentifier","src":"802:3:87"},"nativeSrc":"802:23:87","nodeType":"YulFunctionCall","src":"802:23:87"},{"kind":"number","nativeSrc":"827:2:87","nodeType":"YulLiteral","src":"827:2:87","type":"","value":"32"}],"functionName":{"name":"slt","nativeSrc":"798:3:87","nodeType":"YulIdentifier","src":"798:3:87"},"nativeSrc":"798:32:87","nodeType":"YulFunctionCall","src":"798:32:87"},"nativeSrc":"795:52:87","nodeType":"YulIf","src":"795:52:87"},{"nativeSrc":"856:14:87","nodeType":"YulVariableDeclaration","src":"856:14:87","value":{"kind":"number","nativeSrc":"869:1:87","nodeType":"YulLiteral","src":"869:1:87","type":"","value":"0"},"variables":[{"name":"value","nativeSrc":"860:5:87","nodeType":"YulTypedName","src":"860:5:87","type":""}]},{"nativeSrc":"879:32:87","nodeType":"YulAssignment","src":"879:32:87","value":{"arguments":[{"name":"headStart","nativeSrc":"901:9:87","nodeType":"YulIdentifier","src":"901:9:87"}],"functionName":{"name":"calldataload","nativeSrc":"888:12:87","nodeType":"YulIdentifier","src":"888:12:87"},"nativeSrc":"888:23:87","nodeType":"YulFunctionCall","src":"888:23:87"},"variableNames":[{"name":"value","nativeSrc":"879:5:87","nodeType":"YulIdentifier","src":"879:5:87"}]},{"nativeSrc":"920:15:87","nodeType":"YulAssignment","src":"920:15:87","value":{"name":"value","nativeSrc":"930:5:87","nodeType":"YulIdentifier","src":"930:5:87"},"variableNames":[{"name":"value0","nativeSrc":"920:6:87","nodeType":"YulIdentifier","src":"920:6:87"}]}]},"name":"abi_decode_tuple_t_uint256","nativeSrc":"715:226:87","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nativeSrc":"751:9:87","nodeType":"YulTypedName","src":"751:9:87","type":""},{"name":"dataEnd","nativeSrc":"762:7:87","nodeType":"YulTypedName","src":"762:7:87","type":""}],"returnVariables":[{"name":"value0","nativeSrc":"774:6:87","nodeType":"YulTypedName","src":"774:6:87","type":""}],"src":"715:226:87"},{"body":{"nativeSrc":"991:86:87","nodeType":"YulBlock","src":"991:86:87","statements":[{"body":{"nativeSrc":"1055:16:87","nodeType":"YulBlock","src":"1055:16:87","statements":[{"expression":{"arguments":[{"kind":"number","nativeSrc":"1064:1:87","nodeType":"YulLiteral","src":"1064:1:87","type":"","value":"0"},{"kind":"number","nativeSrc":"1067:1:87","nodeType":"YulLiteral","src":"1067:1:87","type":"","value":"0"}],"functionName":{"name":"revert","nativeSrc":"1057:6:87","nodeType":"YulIdentifier","src":"1057:6:87"},"nativeSrc":"1057:12:87","nodeType":"YulFunctionCall","src":"1057:12:87"},"nativeSrc":"1057:12:87","nodeType":"YulExpressionStatement","src":"1057:12:87"}]},"condition":{"arguments":[{"arguments":[{"name":"value","nativeSrc":"1014:5:87","nodeType":"YulIdentifier","src":"1014:5:87"},{"arguments":[{"name":"value","nativeSrc":"1025:5:87","nodeType":"YulIdentifier","src":"1025:5:87"},{"arguments":[{"arguments":[{"kind":"number","nativeSrc":"1040:3:87","nodeType":"YulLiteral","src":"1040:3:87","type":"","value":"160"},{"kind":"number","nativeSrc":"1045:1:87","nodeType":"YulLiteral","src":"1045:1:87","type":"","value":"1"}],"functionName":{"name":"shl","nativeSrc":"1036:3:87","nodeType":"YulIdentifier","src":"1036:3:87"},"nativeSrc":"1036:11:87","nodeType":"YulFunctionCall","src":"1036:11:87"},{"kind":"number","nativeSrc":"1049:1:87","nodeType":"YulLiteral","src":"1049:1:87","type":"","value":"1"}],"functionName":{"name":"sub","nativeSrc":"1032:3:87","nodeType":"YulIdentifier","src":"1032:3:87"},"nativeSrc":"1032:19:87","nodeType":"YulFunctionCall","src":"1032:19:87"}],"functionName":{"name":"and","nativeSrc":"1021:3:87","nodeType":"YulIdentifier","src":"1021:3:87"},"nativeSrc":"1021:31:87","nodeType":"YulFunctionCall","src":"1021:31:87"}],"functionName":{"name":"eq","nativeSrc":"1011:2:87","nodeType":"YulIdentifier","src":"1011:2:87"},"nativeSrc":"1011:42:87","nodeType":"YulFunctionCall","src":"1011:42:87"}],"functionName":{"name":"iszero","nativeSrc":"1004:6:87","nodeType":"YulIdentifier","src":"1004:6:87"},"nativeSrc":"1004:50:87","nodeType":"YulFunctionCall","src":"1004:50:87"},"nativeSrc":"1001:70:87","nodeType":"YulIf","src":"1001:70:87"}]},"name":"validator_revert_address","nativeSrc":"946:131:87","nodeType":"YulFunctionDefinition","parameters":[{"name":"value","nativeSrc":"980:5:87","nodeType":"YulTypedName","src":"980:5:87","type":""}],"src":"946:131:87"},{"body":{"nativeSrc":"1169:280:87","nodeType":"YulBlock","src":"1169:280:87","statements":[{"body":{"nativeSrc":"1215:16:87","nodeType":"YulBlock","src":"1215:16:87","statements":[{"expression":{"arguments":[{"kind":"number","nativeSrc":"1224:1:87","nodeType":"YulLiteral","src":"1224:1:87","type":"","value":"0"},{"kind":"number","nativeSrc":"1227:1:87","nodeType":"YulLiteral","src":"1227:1:87","type":"","value":"0"}],"functionName":{"name":"revert","nativeSrc":"1217:6:87","nodeType":"YulIdentifier","src":"1217:6:87"},"nativeSrc":"1217:12:87","nodeType":"YulFunctionCall","src":"1217:12:87"},"nativeSrc":"1217:12:87","nodeType":"YulExpressionStatement","src":"1217:12:87"}]},"condition":{"arguments":[{"arguments":[{"name":"dataEnd","nativeSrc":"1190:7:87","nodeType":"YulIdentifier","src":"1190:7:87"},{"name":"headStart","nativeSrc":"1199:9:87","nodeType":"YulIdentifier","src":"1199:9:87"}],"functionName":{"name":"sub","nativeSrc":"1186:3:87","nodeType":"YulIdentifier","src":"1186:3:87"},"nativeSrc":"1186:23:87","nodeType":"YulFunctionCall","src":"1186:23:87"},{"kind":"number","nativeSrc":"1211:2:87","nodeType":"YulLiteral","src":"1211:2:87","type":"","value":"64"}],"functionName":{"name":"slt","nativeSrc":"1182:3:87","nodeType":"YulIdentifier","src":"1182:3:87"},"nativeSrc":"1182:32:87","nodeType":"YulFunctionCall","src":"1182:32:87"},"nativeSrc":"1179:52:87","nodeType":"YulIf","src":"1179:52:87"},{"nativeSrc":"1240:36:87","nodeType":"YulVariableDeclaration","src":"1240:36:87","value":{"arguments":[{"name":"headStart","nativeSrc":"1266:9:87","nodeType":"YulIdentifier","src":"1266:9:87"}],"functionName":{"name":"calldataload","nativeSrc":"1253:12:87","nodeType":"YulIdentifier","src":"1253:12:87"},"nativeSrc":"1253:23:87","nodeType":"YulFunctionCall","src":"1253:23:87"},"variables":[{"name":"value","nativeSrc":"1244:5:87","nodeType":"YulTypedName","src":"1244:5:87","type":""}]},{"expression":{"arguments":[{"name":"value","nativeSrc":"1310:5:87","nodeType":"YulIdentifier","src":"1310:5:87"}],"functionName":{"name":"validator_revert_address","nativeSrc":"1285:24:87","nodeType":"YulIdentifier","src":"1285:24:87"},"nativeSrc":"1285:31:87","nodeType":"YulFunctionCall","src":"1285:31:87"},"nativeSrc":"1285:31:87","nodeType":"YulExpressionStatement","src":"1285:31:87"},{"nativeSrc":"1325:15:87","nodeType":"YulAssignment","src":"1325:15:87","value":{"name":"value","nativeSrc":"1335:5:87","nodeType":"YulIdentifier","src":"1335:5:87"},"variableNames":[{"name":"value0","nativeSrc":"1325:6:87","nodeType":"YulIdentifier","src":"1325:6:87"}]},{"nativeSrc":"1349:16:87","nodeType":"YulVariableDeclaration","src":"1349:16:87","value":{"kind":"number","nativeSrc":"1364:1:87","nodeType":"YulLiteral","src":"1364:1:87","type":"","value":"0"},"variables":[{"name":"value_1","nativeSrc":"1353:7:87","nodeType":"YulTypedName","src":"1353:7:87","type":""}]},{"nativeSrc":"1374:43:87","nodeType":"YulAssignment","src":"1374:43:87","value":{"arguments":[{"arguments":[{"name":"headStart","nativeSrc":"1402:9:87","nodeType":"YulIdentifier","src":"1402:9:87"},{"kind":"number","nativeSrc":"1413:2:87","nodeType":"YulLiteral","src":"1413:2:87","type":"","value":"32"}],"functionName":{"name":"add","nativeSrc":"1398:3:87","nodeType":"YulIdentifier","src":"1398:3:87"},"nativeSrc":"1398:18:87","nodeType":"YulFunctionCall","src":"1398:18:87"}],"functionName":{"name":"calldataload","nativeSrc":"1385:12:87","nodeType":"YulIdentifier","src":"1385:12:87"},"nativeSrc":"1385:32:87","nodeType":"YulFunctionCall","src":"1385:32:87"},"variableNames":[{"name":"value_1","nativeSrc":"1374:7:87","nodeType":"YulIdentifier","src":"1374:7:87"}]},{"nativeSrc":"1426:17:87","nodeType":"YulAssignment","src":"1426:17:87","value":{"name":"value_1","nativeSrc":"1436:7:87","nodeType":"YulIdentifier","src":"1436:7:87"},"variableNames":[{"name":"value1","nativeSrc":"1426:6:87","nodeType":"YulIdentifier","src":"1426:6:87"}]}]},"name":"abi_decode_tuple_t_addresst_uint256","nativeSrc":"1082:367:87","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nativeSrc":"1127:9:87","nodeType":"YulTypedName","src":"1127:9:87","type":""},{"name":"dataEnd","nativeSrc":"1138:7:87","nodeType":"YulTypedName","src":"1138:7:87","type":""}],"returnVariables":[{"name":"value0","nativeSrc":"1150:6:87","nodeType":"YulTypedName","src":"1150:6:87","type":""},{"name":"value1","nativeSrc":"1158:6:87","nodeType":"YulTypedName","src":"1158:6:87","type":""}],"src":"1082:367:87"},{"body":{"nativeSrc":"1549:92:87","nodeType":"YulBlock","src":"1549:92:87","statements":[{"nativeSrc":"1559:26:87","nodeType":"YulAssignment","src":"1559:26:87","value":{"arguments":[{"name":"headStart","nativeSrc":"1571:9:87","nodeType":"YulIdentifier","src":"1571:9:87"},{"kind":"number","nativeSrc":"1582:2:87","nodeType":"YulLiteral","src":"1582:2:87","type":"","value":"32"}],"functionName":{"name":"add","nativeSrc":"1567:3:87","nodeType":"YulIdentifier","src":"1567:3:87"},"nativeSrc":"1567:18:87","nodeType":"YulFunctionCall","src":"1567:18:87"},"variableNames":[{"name":"tail","nativeSrc":"1559:4:87","nodeType":"YulIdentifier","src":"1559:4:87"}]},{"expression":{"arguments":[{"name":"headStart","nativeSrc":"1601:9:87","nodeType":"YulIdentifier","src":"1601:9:87"},{"arguments":[{"arguments":[{"name":"value0","nativeSrc":"1626:6:87","nodeType":"YulIdentifier","src":"1626:6:87"}],"functionName":{"name":"iszero","nativeSrc":"1619:6:87","nodeType":"YulIdentifier","src":"1619:6:87"},"nativeSrc":"1619:14:87","nodeType":"YulFunctionCall","src":"1619:14:87"}],"functionName":{"name":"iszero","nativeSrc":"1612:6:87","nodeType":"YulIdentifier","src":"1612:6:87"},"nativeSrc":"1612:22:87","nodeType":"YulFunctionCall","src":"1612:22:87"}],"functionName":{"name":"mstore","nativeSrc":"1594:6:87","nodeType":"YulIdentifier","src":"1594:6:87"},"nativeSrc":"1594:41:87","nodeType":"YulFunctionCall","src":"1594:41:87"},"nativeSrc":"1594:41:87","nodeType":"YulExpressionStatement","src":"1594:41:87"}]},"name":"abi_encode_tuple_t_bool__to_t_bool__fromStack_reversed","nativeSrc":"1454:187:87","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nativeSrc":"1518:9:87","nodeType":"YulTypedName","src":"1518:9:87","type":""},{"name":"value0","nativeSrc":"1529:6:87","nodeType":"YulTypedName","src":"1529:6:87","type":""}],"returnVariables":[{"name":"tail","nativeSrc":"1540:4:87","nodeType":"YulTypedName","src":"1540:4:87","type":""}],"src":"1454:187:87"},{"body":{"nativeSrc":"1750:404:87","nodeType":"YulBlock","src":"1750:404:87","statements":[{"body":{"nativeSrc":"1796:16:87","nodeType":"YulBlock","src":"1796:16:87","statements":[{"expression":{"arguments":[{"kind":"number","nativeSrc":"1805:1:87","nodeType":"YulLiteral","src":"1805:1:87","type":"","value":"0"},{"kind":"number","nativeSrc":"1808:1:87","nodeType":"YulLiteral","src":"1808:1:87","type":"","value":"0"}],"functionName":{"name":"revert","nativeSrc":"1798:6:87","nodeType":"YulIdentifier","src":"1798:6:87"},"nativeSrc":"1798:12:87","nodeType":"YulFunctionCall","src":"1798:12:87"},"nativeSrc":"1798:12:87","nodeType":"YulExpressionStatement","src":"1798:12:87"}]},"condition":{"arguments":[{"arguments":[{"name":"dataEnd","nativeSrc":"1771:7:87","nodeType":"YulIdentifier","src":"1771:7:87"},{"name":"headStart","nativeSrc":"1780:9:87","nodeType":"YulIdentifier","src":"1780:9:87"}],"functionName":{"name":"sub","nativeSrc":"1767:3:87","nodeType":"YulIdentifier","src":"1767:3:87"},"nativeSrc":"1767:23:87","nodeType":"YulFunctionCall","src":"1767:23:87"},{"kind":"number","nativeSrc":"1792:2:87","nodeType":"YulLiteral","src":"1792:2:87","type":"","value":"96"}],"functionName":{"name":"slt","nativeSrc":"1763:3:87","nodeType":"YulIdentifier","src":"1763:3:87"},"nativeSrc":"1763:32:87","nodeType":"YulFunctionCall","src":"1763:32:87"},"nativeSrc":"1760:52:87","nodeType":"YulIf","src":"1760:52:87"},{"nativeSrc":"1821:36:87","nodeType":"YulVariableDeclaration","src":"1821:36:87","value":{"arguments":[{"name":"headStart","nativeSrc":"1847:9:87","nodeType":"YulIdentifier","src":"1847:9:87"}],"functionName":{"name":"calldataload","nativeSrc":"1834:12:87","nodeType":"YulIdentifier","src":"1834:12:87"},"nativeSrc":"1834:23:87","nodeType":"YulFunctionCall","src":"1834:23:87"},"variables":[{"name":"value","nativeSrc":"1825:5:87","nodeType":"YulTypedName","src":"1825:5:87","type":""}]},{"expression":{"arguments":[{"name":"value","nativeSrc":"1891:5:87","nodeType":"YulIdentifier","src":"1891:5:87"}],"functionName":{"name":"validator_revert_address","nativeSrc":"1866:24:87","nodeType":"YulIdentifier","src":"1866:24:87"},"nativeSrc":"1866:31:87","nodeType":"YulFunctionCall","src":"1866:31:87"},"nativeSrc":"1866:31:87","nodeType":"YulExpressionStatement","src":"1866:31:87"},{"nativeSrc":"1906:15:87","nodeType":"YulAssignment","src":"1906:15:87","value":{"name":"value","nativeSrc":"1916:5:87","nodeType":"YulIdentifier","src":"1916:5:87"},"variableNames":[{"name":"value0","nativeSrc":"1906:6:87","nodeType":"YulIdentifier","src":"1906:6:87"}]},{"nativeSrc":"1930:47:87","nodeType":"YulVariableDeclaration","src":"1930:47:87","value":{"arguments":[{"arguments":[{"name":"headStart","nativeSrc":"1962:9:87","nodeType":"YulIdentifier","src":"1962:9:87"},{"kind":"number","nativeSrc":"1973:2:87","nodeType":"YulLiteral","src":"1973:2:87","type":"","value":"32"}],"functionName":{"name":"add","nativeSrc":"1958:3:87","nodeType":"YulIdentifier","src":"1958:3:87"},"nativeSrc":"1958:18:87","nodeType":"YulFunctionCall","src":"1958:18:87"}],"functionName":{"name":"calldataload","nativeSrc":"1945:12:87","nodeType":"YulIdentifier","src":"1945:12:87"},"nativeSrc":"1945:32:87","nodeType":"YulFunctionCall","src":"1945:32:87"},"variables":[{"name":"value_1","nativeSrc":"1934:7:87","nodeType":"YulTypedName","src":"1934:7:87","type":""}]},{"expression":{"arguments":[{"name":"value_1","nativeSrc":"2011:7:87","nodeType":"YulIdentifier","src":"2011:7:87"}],"functionName":{"name":"validator_revert_address","nativeSrc":"1986:24:87","nodeType":"YulIdentifier","src":"1986:24:87"},"nativeSrc":"1986:33:87","nodeType":"YulFunctionCall","src":"1986:33:87"},"nativeSrc":"1986:33:87","nodeType":"YulExpressionStatement","src":"1986:33:87"},{"nativeSrc":"2028:17:87","nodeType":"YulAssignment","src":"2028:17:87","value":{"name":"value_1","nativeSrc":"2038:7:87","nodeType":"YulIdentifier","src":"2038:7:87"},"variableNames":[{"name":"value1","nativeSrc":"2028:6:87","nodeType":"YulIdentifier","src":"2028:6:87"}]},{"nativeSrc":"2054:16:87","nodeType":"YulVariableDeclaration","src":"2054:16:87","value":{"kind":"number","nativeSrc":"2069:1:87","nodeType":"YulLiteral","src":"2069:1:87","type":"","value":"0"},"variables":[{"name":"value_2","nativeSrc":"2058:7:87","nodeType":"YulTypedName","src":"2058:7:87","type":""}]},{"nativeSrc":"2079:43:87","nodeType":"YulAssignment","src":"2079:43:87","value":{"arguments":[{"arguments":[{"name":"headStart","nativeSrc":"2107:9:87","nodeType":"YulIdentifier","src":"2107:9:87"},{"kind":"number","nativeSrc":"2118:2:87","nodeType":"YulLiteral","src":"2118:2:87","type":"","value":"64"}],"functionName":{"name":"add","nativeSrc":"2103:3:87","nodeType":"YulIdentifier","src":"2103:3:87"},"nativeSrc":"2103:18:87","nodeType":"YulFunctionCall","src":"2103:18:87"}],"functionName":{"name":"calldataload","nativeSrc":"2090:12:87","nodeType":"YulIdentifier","src":"2090:12:87"},"nativeSrc":"2090:32:87","nodeType":"YulFunctionCall","src":"2090:32:87"},"variableNames":[{"name":"value_2","nativeSrc":"2079:7:87","nodeType":"YulIdentifier","src":"2079:7:87"}]},{"nativeSrc":"2131:17:87","nodeType":"YulAssignment","src":"2131:17:87","value":{"name":"value_2","nativeSrc":"2141:7:87","nodeType":"YulIdentifier","src":"2141:7:87"},"variableNames":[{"name":"value2","nativeSrc":"2131:6:87","nodeType":"YulIdentifier","src":"2131:6:87"}]}]},"name":"abi_decode_tuple_t_addresst_addresst_uint256","nativeSrc":"1646:508:87","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nativeSrc":"1700:9:87","nodeType":"YulTypedName","src":"1700:9:87","type":""},{"name":"dataEnd","nativeSrc":"1711:7:87","nodeType":"YulTypedName","src":"1711:7:87","type":""}],"returnVariables":[{"name":"value0","nativeSrc":"1723:6:87","nodeType":"YulTypedName","src":"1723:6:87","type":""},{"name":"value1","nativeSrc":"1731:6:87","nodeType":"YulTypedName","src":"1731:6:87","type":""},{"name":"value2","nativeSrc":"1739:6:87","nodeType":"YulTypedName","src":"1739:6:87","type":""}],"src":"1646:508:87"},{"body":{"nativeSrc":"2256:87:87","nodeType":"YulBlock","src":"2256:87:87","statements":[{"nativeSrc":"2266:26:87","nodeType":"YulAssignment","src":"2266:26:87","value":{"arguments":[{"name":"headStart","nativeSrc":"2278:9:87","nodeType":"YulIdentifier","src":"2278:9:87"},{"kind":"number","nativeSrc":"2289:2:87","nodeType":"YulLiteral","src":"2289:2:87","type":"","value":"32"}],"functionName":{"name":"add","nativeSrc":"2274:3:87","nodeType":"YulIdentifier","src":"2274:3:87"},"nativeSrc":"2274:18:87","nodeType":"YulFunctionCall","src":"2274:18:87"},"variableNames":[{"name":"tail","nativeSrc":"2266:4:87","nodeType":"YulIdentifier","src":"2266:4:87"}]},{"expression":{"arguments":[{"name":"headStart","nativeSrc":"2308:9:87","nodeType":"YulIdentifier","src":"2308:9:87"},{"arguments":[{"name":"value0","nativeSrc":"2323:6:87","nodeType":"YulIdentifier","src":"2323:6:87"},{"kind":"number","nativeSrc":"2331:4:87","nodeType":"YulLiteral","src":"2331:4:87","type":"","value":"0xff"}],"functionName":{"name":"and","nativeSrc":"2319:3:87","nodeType":"YulIdentifier","src":"2319:3:87"},"nativeSrc":"2319:17:87","nodeType":"YulFunctionCall","src":"2319:17:87"}],"functionName":{"name":"mstore","nativeSrc":"2301:6:87","nodeType":"YulIdentifier","src":"2301:6:87"},"nativeSrc":"2301:36:87","nodeType":"YulFunctionCall","src":"2301:36:87"},"nativeSrc":"2301:36:87","nodeType":"YulExpressionStatement","src":"2301:36:87"}]},"name":"abi_encode_tuple_t_uint8__to_t_uint8__fromStack_reversed","nativeSrc":"2159:184:87","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nativeSrc":"2225:9:87","nodeType":"YulTypedName","src":"2225:9:87","type":""},{"name":"value0","nativeSrc":"2236:6:87","nodeType":"YulTypedName","src":"2236:6:87","type":""}],"returnVariables":[{"name":"tail","nativeSrc":"2247:4:87","nodeType":"YulTypedName","src":"2247:4:87","type":""}],"src":"2159:184:87"},{"body":{"nativeSrc":"2449:102:87","nodeType":"YulBlock","src":"2449:102:87","statements":[{"nativeSrc":"2459:26:87","nodeType":"YulAssignment","src":"2459:26:87","value":{"arguments":[{"name":"headStart","nativeSrc":"2471:9:87","nodeType":"YulIdentifier","src":"2471:9:87"},{"kind":"number","nativeSrc":"2482:2:87","nodeType":"YulLiteral","src":"2482:2:87","type":"","value":"32"}],"functionName":{"name":"add","nativeSrc":"2467:3:87","nodeType":"YulIdentifier","src":"2467:3:87"},"nativeSrc":"2467:18:87","nodeType":"YulFunctionCall","src":"2467:18:87"},"variableNames":[{"name":"tail","nativeSrc":"2459:4:87","nodeType":"YulIdentifier","src":"2459:4:87"}]},{"expression":{"arguments":[{"name":"headStart","nativeSrc":"2501:9:87","nodeType":"YulIdentifier","src":"2501:9:87"},{"arguments":[{"name":"value0","nativeSrc":"2516:6:87","nodeType":"YulIdentifier","src":"2516:6:87"},{"arguments":[{"arguments":[{"kind":"number","nativeSrc":"2532:3:87","nodeType":"YulLiteral","src":"2532:3:87","type":"","value":"160"},{"kind":"number","nativeSrc":"2537:1:87","nodeType":"YulLiteral","src":"2537:1:87","type":"","value":"1"}],"functionName":{"name":"shl","nativeSrc":"2528:3:87","nodeType":"YulIdentifier","src":"2528:3:87"},"nativeSrc":"2528:11:87","nodeType":"YulFunctionCall","src":"2528:11:87"},{"kind":"number","nativeSrc":"2541:1:87","nodeType":"YulLiteral","src":"2541:1:87","type":"","value":"1"}],"functionName":{"name":"sub","nativeSrc":"2524:3:87","nodeType":"YulIdentifier","src":"2524:3:87"},"nativeSrc":"2524:19:87","nodeType":"YulFunctionCall","src":"2524:19:87"}],"functionName":{"name":"and","nativeSrc":"2512:3:87","nodeType":"YulIdentifier","src":"2512:3:87"},"nativeSrc":"2512:32:87","nodeType":"YulFunctionCall","src":"2512:32:87"}],"functionName":{"name":"mstore","nativeSrc":"2494:6:87","nodeType":"YulIdentifier","src":"2494:6:87"},"nativeSrc":"2494:51:87","nodeType":"YulFunctionCall","src":"2494:51:87"},"nativeSrc":"2494:51:87","nodeType":"YulExpressionStatement","src":"2494:51:87"}]},"name":"abi_encode_tuple_t_address__to_t_address__fromStack_reversed","nativeSrc":"2348:203:87","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nativeSrc":"2418:9:87","nodeType":"YulTypedName","src":"2418:9:87","type":""},{"name":"value0","nativeSrc":"2429:6:87","nodeType":"YulTypedName","src":"2429:6:87","type":""}],"returnVariables":[{"name":"tail","nativeSrc":"2440:4:87","nodeType":"YulTypedName","src":"2440:4:87","type":""}],"src":"2348:203:87"},{"body":{"nativeSrc":"2626:177:87","nodeType":"YulBlock","src":"2626:177:87","statements":[{"body":{"nativeSrc":"2672:16:87","nodeType":"YulBlock","src":"2672:16:87","statements":[{"expression":{"arguments":[{"kind":"number","nativeSrc":"2681:1:87","nodeType":"YulLiteral","src":"2681:1:87","type":"","value":"0"},{"kind":"number","nativeSrc":"2684:1:87","nodeType":"YulLiteral","src":"2684:1:87","type":"","value":"0"}],"functionName":{"name":"revert","nativeSrc":"2674:6:87","nodeType":"YulIdentifier","src":"2674:6:87"},"nativeSrc":"2674:12:87","nodeType":"YulFunctionCall","src":"2674:12:87"},"nativeSrc":"2674:12:87","nodeType":"YulExpressionStatement","src":"2674:12:87"}]},"condition":{"arguments":[{"arguments":[{"name":"dataEnd","nativeSrc":"2647:7:87","nodeType":"YulIdentifier","src":"2647:7:87"},{"name":"headStart","nativeSrc":"2656:9:87","nodeType":"YulIdentifier","src":"2656:9:87"}],"functionName":{"name":"sub","nativeSrc":"2643:3:87","nodeType":"YulIdentifier","src":"2643:3:87"},"nativeSrc":"2643:23:87","nodeType":"YulFunctionCall","src":"2643:23:87"},{"kind":"number","nativeSrc":"2668:2:87","nodeType":"YulLiteral","src":"2668:2:87","type":"","value":"32"}],"functionName":{"name":"slt","nativeSrc":"2639:3:87","nodeType":"YulIdentifier","src":"2639:3:87"},"nativeSrc":"2639:32:87","nodeType":"YulFunctionCall","src":"2639:32:87"},"nativeSrc":"2636:52:87","nodeType":"YulIf","src":"2636:52:87"},{"nativeSrc":"2697:36:87","nodeType":"YulVariableDeclaration","src":"2697:36:87","value":{"arguments":[{"name":"headStart","nativeSrc":"2723:9:87","nodeType":"YulIdentifier","src":"2723:9:87"}],"functionName":{"name":"calldataload","nativeSrc":"2710:12:87","nodeType":"YulIdentifier","src":"2710:12:87"},"nativeSrc":"2710:23:87","nodeType":"YulFunctionCall","src":"2710:23:87"},"variables":[{"name":"value","nativeSrc":"2701:5:87","nodeType":"YulTypedName","src":"2701:5:87","type":""}]},{"expression":{"arguments":[{"name":"value","nativeSrc":"2767:5:87","nodeType":"YulIdentifier","src":"2767:5:87"}],"functionName":{"name":"validator_revert_address","nativeSrc":"2742:24:87","nodeType":"YulIdentifier","src":"2742:24:87"},"nativeSrc":"2742:31:87","nodeType":"YulFunctionCall","src":"2742:31:87"},"nativeSrc":"2742:31:87","nodeType":"YulExpressionStatement","src":"2742:31:87"},{"nativeSrc":"2782:15:87","nodeType":"YulAssignment","src":"2782:15:87","value":{"name":"value","nativeSrc":"2792:5:87","nodeType":"YulIdentifier","src":"2792:5:87"},"variableNames":[{"name":"value0","nativeSrc":"2782:6:87","nodeType":"YulIdentifier","src":"2782:6:87"}]}]},"name":"abi_decode_tuple_t_address","nativeSrc":"2556:247:87","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nativeSrc":"2592:9:87","nodeType":"YulTypedName","src":"2592:9:87","type":""},{"name":"dataEnd","nativeSrc":"2603:7:87","nodeType":"YulTypedName","src":"2603:7:87","type":""}],"returnVariables":[{"name":"value0","nativeSrc":"2615:6:87","nodeType":"YulTypedName","src":"2615:6:87","type":""}],"src":"2556:247:87"},{"body":{"nativeSrc":"2878:110:87","nodeType":"YulBlock","src":"2878:110:87","statements":[{"body":{"nativeSrc":"2924:16:87","nodeType":"YulBlock","src":"2924:16:87","statements":[{"expression":{"arguments":[{"kind":"number","nativeSrc":"2933:1:87","nodeType":"YulLiteral","src":"2933:1:87","type":"","value":"0"},{"kind":"number","nativeSrc":"2936:1:87","nodeType":"YulLiteral","src":"2936:1:87","type":"","value":"0"}],"functionName":{"name":"revert","nativeSrc":"2926:6:87","nodeType":"YulIdentifier","src":"2926:6:87"},"nativeSrc":"2926:12:87","nodeType":"YulFunctionCall","src":"2926:12:87"},"nativeSrc":"2926:12:87","nodeType":"YulExpressionStatement","src":"2926:12:87"}]},"condition":{"arguments":[{"arguments":[{"name":"dataEnd","nativeSrc":"2899:7:87","nodeType":"YulIdentifier","src":"2899:7:87"},{"name":"headStart","nativeSrc":"2908:9:87","nodeType":"YulIdentifier","src":"2908:9:87"}],"functionName":{"name":"sub","nativeSrc":"2895:3:87","nodeType":"YulIdentifier","src":"2895:3:87"},"nativeSrc":"2895:23:87","nodeType":"YulFunctionCall","src":"2895:23:87"},{"kind":"number","nativeSrc":"2920:2:87","nodeType":"YulLiteral","src":"2920:2:87","type":"","value":"32"}],"functionName":{"name":"slt","nativeSrc":"2891:3:87","nodeType":"YulIdentifier","src":"2891:3:87"},"nativeSrc":"2891:32:87","nodeType":"YulFunctionCall","src":"2891:32:87"},"nativeSrc":"2888:52:87","nodeType":"YulIf","src":"2888:52:87"},{"nativeSrc":"2949:33:87","nodeType":"YulAssignment","src":"2949:33:87","value":{"arguments":[{"name":"headStart","nativeSrc":"2972:9:87","nodeType":"YulIdentifier","src":"2972:9:87"}],"functionName":{"name":"calldataload","nativeSrc":"2959:12:87","nodeType":"YulIdentifier","src":"2959:12:87"},"nativeSrc":"2959:23:87","nodeType":"YulFunctionCall","src":"2959:23:87"},"variableNames":[{"name":"value0","nativeSrc":"2949:6:87","nodeType":"YulIdentifier","src":"2949:6:87"}]}]},"name":"abi_decode_tuple_t_bytes32","nativeSrc":"2808:180:87","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nativeSrc":"2844:9:87","nodeType":"YulTypedName","src":"2844:9:87","type":""},{"name":"dataEnd","nativeSrc":"2855:7:87","nodeType":"YulTypedName","src":"2855:7:87","type":""}],"returnVariables":[{"name":"value0","nativeSrc":"2867:6:87","nodeType":"YulTypedName","src":"2867:6:87","type":""}],"src":"2808:180:87"},{"body":{"nativeSrc":"3112:99:87","nodeType":"YulBlock","src":"3112:99:87","statements":[{"expression":{"arguments":[{"name":"headStart","nativeSrc":"3129:9:87","nodeType":"YulIdentifier","src":"3129:9:87"},{"kind":"number","nativeSrc":"3140:2:87","nodeType":"YulLiteral","src":"3140:2:87","type":"","value":"32"}],"functionName":{"name":"mstore","nativeSrc":"3122:6:87","nodeType":"YulIdentifier","src":"3122:6:87"},"nativeSrc":"3122:21:87","nodeType":"YulFunctionCall","src":"3122:21:87"},"nativeSrc":"3122:21:87","nodeType":"YulExpressionStatement","src":"3122:21:87"},{"nativeSrc":"3152:53:87","nodeType":"YulAssignment","src":"3152:53:87","value":{"arguments":[{"name":"value0","nativeSrc":"3178:6:87","nodeType":"YulIdentifier","src":"3178:6:87"},{"arguments":[{"name":"headStart","nativeSrc":"3190:9:87","nodeType":"YulIdentifier","src":"3190:9:87"},{"kind":"number","nativeSrc":"3201:2:87","nodeType":"YulLiteral","src":"3201:2:87","type":"","value":"32"}],"functionName":{"name":"add","nativeSrc":"3186:3:87","nodeType":"YulIdentifier","src":"3186:3:87"},"nativeSrc":"3186:18:87","nodeType":"YulFunctionCall","src":"3186:18:87"}],"functionName":{"name":"abi_encode_string","nativeSrc":"3160:17:87","nodeType":"YulIdentifier","src":"3160:17:87"},"nativeSrc":"3160:45:87","nodeType":"YulFunctionCall","src":"3160:45:87"},"variableNames":[{"name":"tail","nativeSrc":"3152:4:87","nodeType":"YulIdentifier","src":"3152:4:87"}]}]},"name":"abi_encode_tuple_t_bytes_memory_ptr__to_t_bytes_memory_ptr__fromStack_reversed","nativeSrc":"2993:218:87","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nativeSrc":"3081:9:87","nodeType":"YulTypedName","src":"3081:9:87","type":""},{"name":"value0","nativeSrc":"3092:6:87","nodeType":"YulTypedName","src":"3092:6:87","type":""}],"returnVariables":[{"name":"tail","nativeSrc":"3103:4:87","nodeType":"YulTypedName","src":"3103:4:87","type":""}],"src":"2993:218:87"},{"body":{"nativeSrc":"3248:95:87","nodeType":"YulBlock","src":"3248:95:87","statements":[{"expression":{"arguments":[{"kind":"number","nativeSrc":"3265:1:87","nodeType":"YulLiteral","src":"3265:1:87","type":"","value":"0"},{"arguments":[{"kind":"number","nativeSrc":"3272:3:87","nodeType":"YulLiteral","src":"3272:3:87","type":"","value":"224"},{"kind":"number","nativeSrc":"3277:10:87","nodeType":"YulLiteral","src":"3277:10:87","type":"","value":"0x4e487b71"}],"functionName":{"name":"shl","nativeSrc":"3268:3:87","nodeType":"YulIdentifier","src":"3268:3:87"},"nativeSrc":"3268:20:87","nodeType":"YulFunctionCall","src":"3268:20:87"}],"functionName":{"name":"mstore","nativeSrc":"3258:6:87","nodeType":"YulIdentifier","src":"3258:6:87"},"nativeSrc":"3258:31:87","nodeType":"YulFunctionCall","src":"3258:31:87"},"nativeSrc":"3258:31:87","nodeType":"YulExpressionStatement","src":"3258:31:87"},{"expression":{"arguments":[{"kind":"number","nativeSrc":"3305:1:87","nodeType":"YulLiteral","src":"3305:1:87","type":"","value":"4"},{"kind":"number","nativeSrc":"3308:4:87","nodeType":"YulLiteral","src":"3308:4:87","type":"","value":"0x41"}],"functionName":{"name":"mstore","nativeSrc":"3298:6:87","nodeType":"YulIdentifier","src":"3298:6:87"},"nativeSrc":"3298:15:87","nodeType":"YulFunctionCall","src":"3298:15:87"},"nativeSrc":"3298:15:87","nodeType":"YulExpressionStatement","src":"3298:15:87"},{"expression":{"arguments":[{"kind":"number","nativeSrc":"3329:1:87","nodeType":"YulLiteral","src":"3329:1:87","type":"","value":"0"},{"kind":"number","nativeSrc":"3332:4:87","nodeType":"YulLiteral","src":"3332:4:87","type":"","value":"0x24"}],"functionName":{"name":"revert","nativeSrc":"3322:6:87","nodeType":"YulIdentifier","src":"3322:6:87"},"nativeSrc":"3322:15:87","nodeType":"YulFunctionCall","src":"3322:15:87"},"nativeSrc":"3322:15:87","nodeType":"YulExpressionStatement","src":"3322:15:87"}]},"name":"panic_error_0x41","nativeSrc":"3216:127:87","nodeType":"YulFunctionDefinition","src":"3216:127:87"},{"body":{"nativeSrc":"3400:836:87","nodeType":"YulBlock","src":"3400:836:87","statements":[{"body":{"nativeSrc":"3449:16:87","nodeType":"YulBlock","src":"3449:16:87","statements":[{"expression":{"arguments":[{"kind":"number","nativeSrc":"3458:1:87","nodeType":"YulLiteral","src":"3458:1:87","type":"","value":"0"},{"kind":"number","nativeSrc":"3461:1:87","nodeType":"YulLiteral","src":"3461:1:87","type":"","value":"0"}],"functionName":{"name":"revert","nativeSrc":"3451:6:87","nodeType":"YulIdentifier","src":"3451:6:87"},"nativeSrc":"3451:12:87","nodeType":"YulFunctionCall","src":"3451:12:87"},"nativeSrc":"3451:12:87","nodeType":"YulExpressionStatement","src":"3451:12:87"}]},"condition":{"arguments":[{"arguments":[{"arguments":[{"name":"offset","nativeSrc":"3428:6:87","nodeType":"YulIdentifier","src":"3428:6:87"},{"kind":"number","nativeSrc":"3436:4:87","nodeType":"YulLiteral","src":"3436:4:87","type":"","value":"0x1f"}],"functionName":{"name":"add","nativeSrc":"3424:3:87","nodeType":"YulIdentifier","src":"3424:3:87"},"nativeSrc":"3424:17:87","nodeType":"YulFunctionCall","src":"3424:17:87"},{"name":"end","nativeSrc":"3443:3:87","nodeType":"YulIdentifier","src":"3443:3:87"}],"functionName":{"name":"slt","nativeSrc":"3420:3:87","nodeType":"YulIdentifier","src":"3420:3:87"},"nativeSrc":"3420:27:87","nodeType":"YulFunctionCall","src":"3420:27:87"}],"functionName":{"name":"iszero","nativeSrc":"3413:6:87","nodeType":"YulIdentifier","src":"3413:6:87"},"nativeSrc":"3413:35:87","nodeType":"YulFunctionCall","src":"3413:35:87"},"nativeSrc":"3410:55:87","nodeType":"YulIf","src":"3410:55:87"},{"nativeSrc":"3474:34:87","nodeType":"YulVariableDeclaration","src":"3474:34:87","value":{"arguments":[{"name":"offset","nativeSrc":"3501:6:87","nodeType":"YulIdentifier","src":"3501:6:87"}],"functionName":{"name":"calldataload","nativeSrc":"3488:12:87","nodeType":"YulIdentifier","src":"3488:12:87"},"nativeSrc":"3488:20:87","nodeType":"YulFunctionCall","src":"3488:20:87"},"variables":[{"name":"length","nativeSrc":"3478:6:87","nodeType":"YulTypedName","src":"3478:6:87","type":""}]},{"nativeSrc":"3517:28:87","nodeType":"YulVariableDeclaration","src":"3517:28:87","value":{"arguments":[{"name":"offset","nativeSrc":"3532:6:87","nodeType":"YulIdentifier","src":"3532:6:87"},{"kind":"number","nativeSrc":"3540:4:87","nodeType":"YulLiteral","src":"3540:4:87","type":"","value":"0x20"}],"functionName":{"name":"add","nativeSrc":"3528:3:87","nodeType":"YulIdentifier","src":"3528:3:87"},"nativeSrc":"3528:17:87","nodeType":"YulFunctionCall","src":"3528:17:87"},"variables":[{"name":"src","nativeSrc":"3521:3:87","nodeType":"YulTypedName","src":"3521:3:87","type":""}]},{"nativeSrc":"3554:16:87","nodeType":"YulVariableDeclaration","src":"3554:16:87","value":{"kind":"number","nativeSrc":"3569:1:87","nodeType":"YulLiteral","src":"3569:1:87","type":"","value":"0"},"variables":[{"name":"array_1","nativeSrc":"3558:7:87","nodeType":"YulTypedName","src":"3558:7:87","type":""}]},{"nativeSrc":"3579:13:87","nodeType":"YulVariableDeclaration","src":"3579:13:87","value":{"kind":"number","nativeSrc":"3591:1:87","nodeType":"YulLiteral","src":"3591:1:87","type":"","value":"0"},"variables":[{"name":"size","nativeSrc":"3583:4:87","nodeType":"YulTypedName","src":"3583:4:87","type":""}]},{"body":{"nativeSrc":"3635:22:87","nodeType":"YulBlock","src":"3635:22:87","statements":[{"expression":{"arguments":[],"functionName":{"name":"panic_error_0x41","nativeSrc":"3637:16:87","nodeType":"YulIdentifier","src":"3637:16:87"},"nativeSrc":"3637:18:87","nodeType":"YulFunctionCall","src":"3637:18:87"},"nativeSrc":"3637:18:87","nodeType":"YulExpressionStatement","src":"3637:18:87"}]},"condition":{"arguments":[{"name":"length","nativeSrc":"3607:6:87","nodeType":"YulIdentifier","src":"3607:6:87"},{"kind":"number","nativeSrc":"3615:18:87","nodeType":"YulLiteral","src":"3615:18:87","type":"","value":"0xffffffffffffffff"}],"functionName":{"name":"gt","nativeSrc":"3604:2:87","nodeType":"YulIdentifier","src":"3604:2:87"},"nativeSrc":"3604:30:87","nodeType":"YulFunctionCall","src":"3604:30:87"},"nativeSrc":"3601:56:87","nodeType":"YulIf","src":"3601:56:87"},{"nativeSrc":"3666:43:87","nodeType":"YulVariableDeclaration","src":"3666:43:87","value":{"arguments":[{"arguments":[{"name":"length","nativeSrc":"3688:6:87","nodeType":"YulIdentifier","src":"3688:6:87"},{"kind":"number","nativeSrc":"3696:2:87","nodeType":"YulLiteral","src":"3696:2:87","type":"","value":"31"}],"functionName":{"name":"add","nativeSrc":"3684:3:87","nodeType":"YulIdentifier","src":"3684:3:87"},"nativeSrc":"3684:15:87","nodeType":"YulFunctionCall","src":"3684:15:87"},{"arguments":[{"kind":"number","nativeSrc":"3705:2:87","nodeType":"YulLiteral","src":"3705:2:87","type":"","value":"31"}],"functionName":{"name":"not","nativeSrc":"3701:3:87","nodeType":"YulIdentifier","src":"3701:3:87"},"nativeSrc":"3701:7:87","nodeType":"YulFunctionCall","src":"3701:7:87"}],"functionName":{"name":"and","nativeSrc":"3680:3:87","nodeType":"YulIdentifier","src":"3680:3:87"},"nativeSrc":"3680:29:87","nodeType":"YulFunctionCall","src":"3680:29:87"},"variables":[{"name":"result","nativeSrc":"3670:6:87","nodeType":"YulTypedName","src":"3670:6:87","type":""}]},{"nativeSrc":"3718:25:87","nodeType":"YulAssignment","src":"3718:25:87","value":{"arguments":[{"name":"result","nativeSrc":"3730:6:87","nodeType":"YulIdentifier","src":"3730:6:87"},{"kind":"number","nativeSrc":"3738:4:87","nodeType":"YulLiteral","src":"3738:4:87","type":"","value":"0x20"}],"functionName":{"name":"add","nativeSrc":"3726:3:87","nodeType":"YulIdentifier","src":"3726:3:87"},"nativeSrc":"3726:17:87","nodeType":"YulFunctionCall","src":"3726:17:87"},"variableNames":[{"name":"size","nativeSrc":"3718:4:87","nodeType":"YulIdentifier","src":"3718:4:87"}]},{"nativeSrc":"3752:15:87","nodeType":"YulVariableDeclaration","src":"3752:15:87","value":{"kind":"number","nativeSrc":"3766:1:87","nodeType":"YulLiteral","src":"3766:1:87","type":"","value":"0"},"variables":[{"name":"memPtr","nativeSrc":"3756:6:87","nodeType":"YulTypedName","src":"3756:6:87","type":""}]},{"nativeSrc":"3776:19:87","nodeType":"YulAssignment","src":"3776:19:87","value":{"arguments":[{"kind":"number","nativeSrc":"3792:2:87","nodeType":"YulLiteral","src":"3792:2:87","type":"","value":"64"}],"functionName":{"name":"mload","nativeSrc":"3786:5:87","nodeType":"YulIdentifier","src":"3786:5:87"},"nativeSrc":"3786:9:87","nodeType":"YulFunctionCall","src":"3786:9:87"},"variableNames":[{"name":"memPtr","nativeSrc":"3776:6:87","nodeType":"YulIdentifier","src":"3776:6:87"}]},{"nativeSrc":"3804:60:87","nodeType":"YulVariableDeclaration","src":"3804:60:87","value":{"arguments":[{"name":"memPtr","nativeSrc":"3826:6:87","nodeType":"YulIdentifier","src":"3826:6:87"},{"arguments":[{"arguments":[{"name":"result","nativeSrc":"3842:6:87","nodeType":"YulIdentifier","src":"3842:6:87"},{"kind":"number","nativeSrc":"3850:2:87","nodeType":"YulLiteral","src":"3850:2:87","type":"","value":"63"}],"functionName":{"name":"add","nativeSrc":"3838:3:87","nodeType":"YulIdentifier","src":"3838:3:87"},"nativeSrc":"3838:15:87","nodeType":"YulFunctionCall","src":"3838:15:87"},{"arguments":[{"kind":"number","nativeSrc":"3859:2:87","nodeType":"YulLiteral","src":"3859:2:87","type":"","value":"31"}],"functionName":{"name":"not","nativeSrc":"3855:3:87","nodeType":"YulIdentifier","src":"3855:3:87"},"nativeSrc":"3855:7:87","nodeType":"YulFunctionCall","src":"3855:7:87"}],"functionName":{"name":"and","nativeSrc":"3834:3:87","nodeType":"YulIdentifier","src":"3834:3:87"},"nativeSrc":"3834:29:87","nodeType":"YulFunctionCall","src":"3834:29:87"}],"functionName":{"name":"add","nativeSrc":"3822:3:87","nodeType":"YulIdentifier","src":"3822:3:87"},"nativeSrc":"3822:42:87","nodeType":"YulFunctionCall","src":"3822:42:87"},"variables":[{"name":"newFreePtr","nativeSrc":"3808:10:87","nodeType":"YulTypedName","src":"3808:10:87","type":""}]},{"body":{"nativeSrc":"3939:22:87","nodeType":"YulBlock","src":"3939:22:87","statements":[{"expression":{"arguments":[],"functionName":{"name":"panic_error_0x41","nativeSrc":"3941:16:87","nodeType":"YulIdentifier","src":"3941:16:87"},"nativeSrc":"3941:18:87","nodeType":"YulFunctionCall","src":"3941:18:87"},"nativeSrc":"3941:18:87","nodeType":"YulExpressionStatement","src":"3941:18:87"}]},"condition":{"arguments":[{"arguments":[{"name":"newFreePtr","nativeSrc":"3882:10:87","nodeType":"YulIdentifier","src":"3882:10:87"},{"kind":"number","nativeSrc":"3894:18:87","nodeType":"YulLiteral","src":"3894:18:87","type":"","value":"0xffffffffffffffff"}],"functionName":{"name":"gt","nativeSrc":"3879:2:87","nodeType":"YulIdentifier","src":"3879:2:87"},"nativeSrc":"3879:34:87","nodeType":"YulFunctionCall","src":"3879:34:87"},{"arguments":[{"name":"newFreePtr","nativeSrc":"3918:10:87","nodeType":"YulIdentifier","src":"3918:10:87"},{"name":"memPtr","nativeSrc":"3930:6:87","nodeType":"YulIdentifier","src":"3930:6:87"}],"functionName":{"name":"lt","nativeSrc":"3915:2:87","nodeType":"YulIdentifier","src":"3915:2:87"},"nativeSrc":"3915:22:87","nodeType":"YulFunctionCall","src":"3915:22:87"}],"functionName":{"name":"or","nativeSrc":"3876:2:87","nodeType":"YulIdentifier","src":"3876:2:87"},"nativeSrc":"3876:62:87","nodeType":"YulFunctionCall","src":"3876:62:87"},"nativeSrc":"3873:88:87","nodeType":"YulIf","src":"3873:88:87"},{"expression":{"arguments":[{"kind":"number","nativeSrc":"3977:2:87","nodeType":"YulLiteral","src":"3977:2:87","type":"","value":"64"},{"name":"newFreePtr","nativeSrc":"3981:10:87","nodeType":"YulIdentifier","src":"3981:10:87"}],"functionName":{"name":"mstore","nativeSrc":"3970:6:87","nodeType":"YulIdentifier","src":"3970:6:87"},"nativeSrc":"3970:22:87","nodeType":"YulFunctionCall","src":"3970:22:87"},"nativeSrc":"3970:22:87","nodeType":"YulExpressionStatement","src":"3970:22:87"},{"nativeSrc":"4001:17:87","nodeType":"YulAssignment","src":"4001:17:87","value":{"name":"memPtr","nativeSrc":"4012:6:87","nodeType":"YulIdentifier","src":"4012:6:87"},"variableNames":[{"name":"array_1","nativeSrc":"4001:7:87","nodeType":"YulIdentifier","src":"4001:7:87"}]},{"expression":{"arguments":[{"name":"memPtr","nativeSrc":"4034:6:87","nodeType":"YulIdentifier","src":"4034:6:87"},{"name":"length","nativeSrc":"4042:6:87","nodeType":"YulIdentifier","src":"4042:6:87"}],"functionName":{"name":"mstore","nativeSrc":"4027:6:87","nodeType":"YulIdentifier","src":"4027:6:87"},"nativeSrc":"4027:22:87","nodeType":"YulFunctionCall","src":"4027:22:87"},"nativeSrc":"4027:22:87","nodeType":"YulExpressionStatement","src":"4027:22:87"},{"body":{"nativeSrc":"4087:16:87","nodeType":"YulBlock","src":"4087:16:87","statements":[{"expression":{"arguments":[{"kind":"number","nativeSrc":"4096:1:87","nodeType":"YulLiteral","src":"4096:1:87","type":"","value":"0"},{"kind":"number","nativeSrc":"4099:1:87","nodeType":"YulLiteral","src":"4099:1:87","type":"","value":"0"}],"functionName":{"name":"revert","nativeSrc":"4089:6:87","nodeType":"YulIdentifier","src":"4089:6:87"},"nativeSrc":"4089:12:87","nodeType":"YulFunctionCall","src":"4089:12:87"},"nativeSrc":"4089:12:87","nodeType":"YulExpressionStatement","src":"4089:12:87"}]},"condition":{"arguments":[{"arguments":[{"name":"src","nativeSrc":"4068:3:87","nodeType":"YulIdentifier","src":"4068:3:87"},{"name":"length","nativeSrc":"4073:6:87","nodeType":"YulIdentifier","src":"4073:6:87"}],"functionName":{"name":"add","nativeSrc":"4064:3:87","nodeType":"YulIdentifier","src":"4064:3:87"},"nativeSrc":"4064:16:87","nodeType":"YulFunctionCall","src":"4064:16:87"},{"name":"end","nativeSrc":"4082:3:87","nodeType":"YulIdentifier","src":"4082:3:87"}],"functionName":{"name":"gt","nativeSrc":"4061:2:87","nodeType":"YulIdentifier","src":"4061:2:87"},"nativeSrc":"4061:25:87","nodeType":"YulFunctionCall","src":"4061:25:87"},"nativeSrc":"4058:45:87","nodeType":"YulIf","src":"4058:45:87"},{"expression":{"arguments":[{"arguments":[{"name":"memPtr","nativeSrc":"4129:6:87","nodeType":"YulIdentifier","src":"4129:6:87"},{"kind":"number","nativeSrc":"4137:4:87","nodeType":"YulLiteral","src":"4137:4:87","type":"","value":"0x20"}],"functionName":{"name":"add","nativeSrc":"4125:3:87","nodeType":"YulIdentifier","src":"4125:3:87"},"nativeSrc":"4125:17:87","nodeType":"YulFunctionCall","src":"4125:17:87"},{"name":"src","nativeSrc":"4144:3:87","nodeType":"YulIdentifier","src":"4144:3:87"},{"name":"length","nativeSrc":"4149:6:87","nodeType":"YulIdentifier","src":"4149:6:87"}],"functionName":{"name":"calldatacopy","nativeSrc":"4112:12:87","nodeType":"YulIdentifier","src":"4112:12:87"},"nativeSrc":"4112:44:87","nodeType":"YulFunctionCall","src":"4112:44:87"},"nativeSrc":"4112:44:87","nodeType":"YulExpressionStatement","src":"4112:44:87"},{"expression":{"arguments":[{"arguments":[{"arguments":[{"name":"memPtr","nativeSrc":"4180:6:87","nodeType":"YulIdentifier","src":"4180:6:87"},{"name":"length","nativeSrc":"4188:6:87","nodeType":"YulIdentifier","src":"4188:6:87"}],"functionName":{"name":"add","nativeSrc":"4176:3:87","nodeType":"YulIdentifier","src":"4176:3:87"},"nativeSrc":"4176:19:87","nodeType":"YulFunctionCall","src":"4176:19:87"},{"kind":"number","nativeSrc":"4197:4:87","nodeType":"YulLiteral","src":"4197:4:87","type":"","value":"0x20"}],"functionName":{"name":"add","nativeSrc":"4172:3:87","nodeType":"YulIdentifier","src":"4172:3:87"},"nativeSrc":"4172:30:87","nodeType":"YulFunctionCall","src":"4172:30:87"},{"kind":"number","nativeSrc":"4204:1:87","nodeType":"YulLiteral","src":"4204:1:87","type":"","value":"0"}],"functionName":{"name":"mstore","nativeSrc":"4165:6:87","nodeType":"YulIdentifier","src":"4165:6:87"},"nativeSrc":"4165:41:87","nodeType":"YulFunctionCall","src":"4165:41:87"},"nativeSrc":"4165:41:87","nodeType":"YulExpressionStatement","src":"4165:41:87"},{"nativeSrc":"4215:15:87","nodeType":"YulAssignment","src":"4215:15:87","value":{"name":"memPtr","nativeSrc":"4224:6:87","nodeType":"YulIdentifier","src":"4224:6:87"},"variableNames":[{"name":"array","nativeSrc":"4215:5:87","nodeType":"YulIdentifier","src":"4215:5:87"}]}]},"name":"abi_decode_bytes","nativeSrc":"3348:888:87","nodeType":"YulFunctionDefinition","parameters":[{"name":"offset","nativeSrc":"3374:6:87","nodeType":"YulTypedName","src":"3374:6:87","type":""},{"name":"end","nativeSrc":"3382:3:87","nodeType":"YulTypedName","src":"3382:3:87","type":""}],"returnVariables":[{"name":"array","nativeSrc":"3390:5:87","nodeType":"YulTypedName","src":"3390:5:87","type":""}],"src":"3348:888:87"},{"body":{"nativeSrc":"4337:359:87","nodeType":"YulBlock","src":"4337:359:87","statements":[{"body":{"nativeSrc":"4383:16:87","nodeType":"YulBlock","src":"4383:16:87","statements":[{"expression":{"arguments":[{"kind":"number","nativeSrc":"4392:1:87","nodeType":"YulLiteral","src":"4392:1:87","type":"","value":"0"},{"kind":"number","nativeSrc":"4395:1:87","nodeType":"YulLiteral","src":"4395:1:87","type":"","value":"0"}],"functionName":{"name":"revert","nativeSrc":"4385:6:87","nodeType":"YulIdentifier","src":"4385:6:87"},"nativeSrc":"4385:12:87","nodeType":"YulFunctionCall","src":"4385:12:87"},"nativeSrc":"4385:12:87","nodeType":"YulExpressionStatement","src":"4385:12:87"}]},"condition":{"arguments":[{"arguments":[{"name":"dataEnd","nativeSrc":"4358:7:87","nodeType":"YulIdentifier","src":"4358:7:87"},{"name":"headStart","nativeSrc":"4367:9:87","nodeType":"YulIdentifier","src":"4367:9:87"}],"functionName":{"name":"sub","nativeSrc":"4354:3:87","nodeType":"YulIdentifier","src":"4354:3:87"},"nativeSrc":"4354:23:87","nodeType":"YulFunctionCall","src":"4354:23:87"},{"kind":"number","nativeSrc":"4379:2:87","nodeType":"YulLiteral","src":"4379:2:87","type":"","value":"64"}],"functionName":{"name":"slt","nativeSrc":"4350:3:87","nodeType":"YulIdentifier","src":"4350:3:87"},"nativeSrc":"4350:32:87","nodeType":"YulFunctionCall","src":"4350:32:87"},"nativeSrc":"4347:52:87","nodeType":"YulIf","src":"4347:52:87"},{"nativeSrc":"4408:36:87","nodeType":"YulVariableDeclaration","src":"4408:36:87","value":{"arguments":[{"name":"headStart","nativeSrc":"4434:9:87","nodeType":"YulIdentifier","src":"4434:9:87"}],"functionName":{"name":"calldataload","nativeSrc":"4421:12:87","nodeType":"YulIdentifier","src":"4421:12:87"},"nativeSrc":"4421:23:87","nodeType":"YulFunctionCall","src":"4421:23:87"},"variables":[{"name":"value","nativeSrc":"4412:5:87","nodeType":"YulTypedName","src":"4412:5:87","type":""}]},{"expression":{"arguments":[{"name":"value","nativeSrc":"4478:5:87","nodeType":"YulIdentifier","src":"4478:5:87"}],"functionName":{"name":"validator_revert_address","nativeSrc":"4453:24:87","nodeType":"YulIdentifier","src":"4453:24:87"},"nativeSrc":"4453:31:87","nodeType":"YulFunctionCall","src":"4453:31:87"},"nativeSrc":"4453:31:87","nodeType":"YulExpressionStatement","src":"4453:31:87"},{"nativeSrc":"4493:15:87","nodeType":"YulAssignment","src":"4493:15:87","value":{"name":"value","nativeSrc":"4503:5:87","nodeType":"YulIdentifier","src":"4503:5:87"},"variableNames":[{"name":"value0","nativeSrc":"4493:6:87","nodeType":"YulIdentifier","src":"4493:6:87"}]},{"nativeSrc":"4517:46:87","nodeType":"YulVariableDeclaration","src":"4517:46:87","value":{"arguments":[{"arguments":[{"name":"headStart","nativeSrc":"4548:9:87","nodeType":"YulIdentifier","src":"4548:9:87"},{"kind":"number","nativeSrc":"4559:2:87","nodeType":"YulLiteral","src":"4559:2:87","type":"","value":"32"}],"functionName":{"name":"add","nativeSrc":"4544:3:87","nodeType":"YulIdentifier","src":"4544:3:87"},"nativeSrc":"4544:18:87","nodeType":"YulFunctionCall","src":"4544:18:87"}],"functionName":{"name":"calldataload","nativeSrc":"4531:12:87","nodeType":"YulIdentifier","src":"4531:12:87"},"nativeSrc":"4531:32:87","nodeType":"YulFunctionCall","src":"4531:32:87"},"variables":[{"name":"offset","nativeSrc":"4521:6:87","nodeType":"YulTypedName","src":"4521:6:87","type":""}]},{"body":{"nativeSrc":"4606:16:87","nodeType":"YulBlock","src":"4606:16:87","statements":[{"expression":{"arguments":[{"kind":"number","nativeSrc":"4615:1:87","nodeType":"YulLiteral","src":"4615:1:87","type":"","value":"0"},{"kind":"number","nativeSrc":"4618:1:87","nodeType":"YulLiteral","src":"4618:1:87","type":"","value":"0"}],"functionName":{"name":"revert","nativeSrc":"4608:6:87","nodeType":"YulIdentifier","src":"4608:6:87"},"nativeSrc":"4608:12:87","nodeType":"YulFunctionCall","src":"4608:12:87"},"nativeSrc":"4608:12:87","nodeType":"YulExpressionStatement","src":"4608:12:87"}]},"condition":{"arguments":[{"name":"offset","nativeSrc":"4578:6:87","nodeType":"YulIdentifier","src":"4578:6:87"},{"kind":"number","nativeSrc":"4586:18:87","nodeType":"YulLiteral","src":"4586:18:87","type":"","value":"0xffffffffffffffff"}],"functionName":{"name":"gt","nativeSrc":"4575:2:87","nodeType":"YulIdentifier","src":"4575:2:87"},"nativeSrc":"4575:30:87","nodeType":"YulFunctionCall","src":"4575:30:87"},"nativeSrc":"4572:50:87","nodeType":"YulIf","src":"4572:50:87"},{"nativeSrc":"4631:59:87","nodeType":"YulAssignment","src":"4631:59:87","value":{"arguments":[{"arguments":[{"name":"headStart","nativeSrc":"4662:9:87","nodeType":"YulIdentifier","src":"4662:9:87"},{"name":"offset","nativeSrc":"4673:6:87","nodeType":"YulIdentifier","src":"4673:6:87"}],"functionName":{"name":"add","nativeSrc":"4658:3:87","nodeType":"YulIdentifier","src":"4658:3:87"},"nativeSrc":"4658:22:87","nodeType":"YulFunctionCall","src":"4658:22:87"},{"name":"dataEnd","nativeSrc":"4682:7:87","nodeType":"YulIdentifier","src":"4682:7:87"}],"functionName":{"name":"abi_decode_bytes","nativeSrc":"4641:16:87","nodeType":"YulIdentifier","src":"4641:16:87"},"nativeSrc":"4641:49:87","nodeType":"YulFunctionCall","src":"4641:49:87"},"variableNames":[{"name":"value1","nativeSrc":"4631:6:87","nodeType":"YulIdentifier","src":"4631:6:87"}]}]},"name":"abi_decode_tuple_t_addresst_bytes_memory_ptr","nativeSrc":"4241:455:87","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nativeSrc":"4295:9:87","nodeType":"YulTypedName","src":"4295:9:87","type":""},{"name":"dataEnd","nativeSrc":"4306:7:87","nodeType":"YulTypedName","src":"4306:7:87","type":""}],"returnVariables":[{"name":"value0","nativeSrc":"4318:6:87","nodeType":"YulTypedName","src":"4318:6:87","type":""},{"name":"value1","nativeSrc":"4326:6:87","nodeType":"YulTypedName","src":"4326:6:87","type":""}],"src":"4241:455:87"},{"body":{"nativeSrc":"4802:76:87","nodeType":"YulBlock","src":"4802:76:87","statements":[{"nativeSrc":"4812:26:87","nodeType":"YulAssignment","src":"4812:26:87","value":{"arguments":[{"name":"headStart","nativeSrc":"4824:9:87","nodeType":"YulIdentifier","src":"4824:9:87"},{"kind":"number","nativeSrc":"4835:2:87","nodeType":"YulLiteral","src":"4835:2:87","type":"","value":"32"}],"functionName":{"name":"add","nativeSrc":"4820:3:87","nodeType":"YulIdentifier","src":"4820:3:87"},"nativeSrc":"4820:18:87","nodeType":"YulFunctionCall","src":"4820:18:87"},"variableNames":[{"name":"tail","nativeSrc":"4812:4:87","nodeType":"YulIdentifier","src":"4812:4:87"}]},{"expression":{"arguments":[{"name":"headStart","nativeSrc":"4854:9:87","nodeType":"YulIdentifier","src":"4854:9:87"},{"name":"value0","nativeSrc":"4865:6:87","nodeType":"YulIdentifier","src":"4865:6:87"}],"functionName":{"name":"mstore","nativeSrc":"4847:6:87","nodeType":"YulIdentifier","src":"4847:6:87"},"nativeSrc":"4847:25:87","nodeType":"YulFunctionCall","src":"4847:25:87"},"nativeSrc":"4847:25:87","nodeType":"YulExpressionStatement","src":"4847:25:87"}]},"name":"abi_encode_tuple_t_bytes32__to_t_bytes32__fromStack_reversed","nativeSrc":"4701:177:87","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nativeSrc":"4771:9:87","nodeType":"YulTypedName","src":"4771:9:87","type":""},{"name":"value0","nativeSrc":"4782:6:87","nodeType":"YulTypedName","src":"4782:6:87","type":""}],"returnVariables":[{"name":"tail","nativeSrc":"4793:4:87","nodeType":"YulTypedName","src":"4793:4:87","type":""}],"src":"4701:177:87"},{"body":{"nativeSrc":"4970:280:87","nodeType":"YulBlock","src":"4970:280:87","statements":[{"body":{"nativeSrc":"5016:16:87","nodeType":"YulBlock","src":"5016:16:87","statements":[{"expression":{"arguments":[{"kind":"number","nativeSrc":"5025:1:87","nodeType":"YulLiteral","src":"5025:1:87","type":"","value":"0"},{"kind":"number","nativeSrc":"5028:1:87","nodeType":"YulLiteral","src":"5028:1:87","type":"","value":"0"}],"functionName":{"name":"revert","nativeSrc":"5018:6:87","nodeType":"YulIdentifier","src":"5018:6:87"},"nativeSrc":"5018:12:87","nodeType":"YulFunctionCall","src":"5018:12:87"},"nativeSrc":"5018:12:87","nodeType":"YulExpressionStatement","src":"5018:12:87"}]},"condition":{"arguments":[{"arguments":[{"name":"dataEnd","nativeSrc":"4991:7:87","nodeType":"YulIdentifier","src":"4991:7:87"},{"name":"headStart","nativeSrc":"5000:9:87","nodeType":"YulIdentifier","src":"5000:9:87"}],"functionName":{"name":"sub","nativeSrc":"4987:3:87","nodeType":"YulIdentifier","src":"4987:3:87"},"nativeSrc":"4987:23:87","nodeType":"YulFunctionCall","src":"4987:23:87"},{"kind":"number","nativeSrc":"5012:2:87","nodeType":"YulLiteral","src":"5012:2:87","type":"","value":"64"}],"functionName":{"name":"slt","nativeSrc":"4983:3:87","nodeType":"YulIdentifier","src":"4983:3:87"},"nativeSrc":"4983:32:87","nodeType":"YulFunctionCall","src":"4983:32:87"},"nativeSrc":"4980:52:87","nodeType":"YulIf","src":"4980:52:87"},{"nativeSrc":"5041:14:87","nodeType":"YulVariableDeclaration","src":"5041:14:87","value":{"kind":"number","nativeSrc":"5054:1:87","nodeType":"YulLiteral","src":"5054:1:87","type":"","value":"0"},"variables":[{"name":"value","nativeSrc":"5045:5:87","nodeType":"YulTypedName","src":"5045:5:87","type":""}]},{"nativeSrc":"5064:32:87","nodeType":"YulAssignment","src":"5064:32:87","value":{"arguments":[{"name":"headStart","nativeSrc":"5086:9:87","nodeType":"YulIdentifier","src":"5086:9:87"}],"functionName":{"name":"calldataload","nativeSrc":"5073:12:87","nodeType":"YulIdentifier","src":"5073:12:87"},"nativeSrc":"5073:23:87","nodeType":"YulFunctionCall","src":"5073:23:87"},"variableNames":[{"name":"value","nativeSrc":"5064:5:87","nodeType":"YulIdentifier","src":"5064:5:87"}]},{"nativeSrc":"5105:15:87","nodeType":"YulAssignment","src":"5105:15:87","value":{"name":"value","nativeSrc":"5115:5:87","nodeType":"YulIdentifier","src":"5115:5:87"},"variableNames":[{"name":"value0","nativeSrc":"5105:6:87","nodeType":"YulIdentifier","src":"5105:6:87"}]},{"nativeSrc":"5129:47:87","nodeType":"YulVariableDeclaration","src":"5129:47:87","value":{"arguments":[{"arguments":[{"name":"headStart","nativeSrc":"5161:9:87","nodeType":"YulIdentifier","src":"5161:9:87"},{"kind":"number","nativeSrc":"5172:2:87","nodeType":"YulLiteral","src":"5172:2:87","type":"","value":"32"}],"functionName":{"name":"add","nativeSrc":"5157:3:87","nodeType":"YulIdentifier","src":"5157:3:87"},"nativeSrc":"5157:18:87","nodeType":"YulFunctionCall","src":"5157:18:87"}],"functionName":{"name":"calldataload","nativeSrc":"5144:12:87","nodeType":"YulIdentifier","src":"5144:12:87"},"nativeSrc":"5144:32:87","nodeType":"YulFunctionCall","src":"5144:32:87"},"variables":[{"name":"value_1","nativeSrc":"5133:7:87","nodeType":"YulTypedName","src":"5133:7:87","type":""}]},{"expression":{"arguments":[{"name":"value_1","nativeSrc":"5210:7:87","nodeType":"YulIdentifier","src":"5210:7:87"}],"functionName":{"name":"validator_revert_address","nativeSrc":"5185:24:87","nodeType":"YulIdentifier","src":"5185:24:87"},"nativeSrc":"5185:33:87","nodeType":"YulFunctionCall","src":"5185:33:87"},"nativeSrc":"5185:33:87","nodeType":"YulExpressionStatement","src":"5185:33:87"},{"nativeSrc":"5227:17:87","nodeType":"YulAssignment","src":"5227:17:87","value":{"name":"value_1","nativeSrc":"5237:7:87","nodeType":"YulIdentifier","src":"5237:7:87"},"variableNames":[{"name":"value1","nativeSrc":"5227:6:87","nodeType":"YulIdentifier","src":"5227:6:87"}]}]},"name":"abi_decode_tuple_t_uint256t_address","nativeSrc":"4883:367:87","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nativeSrc":"4928:9:87","nodeType":"YulTypedName","src":"4928:9:87","type":""},{"name":"dataEnd","nativeSrc":"4939:7:87","nodeType":"YulTypedName","src":"4939:7:87","type":""}],"returnVariables":[{"name":"value0","nativeSrc":"4951:6:87","nodeType":"YulTypedName","src":"4951:6:87","type":""},{"name":"value1","nativeSrc":"4959:6:87","nodeType":"YulTypedName","src":"4959:6:87","type":""}],"src":"4883:367:87"},{"body":{"nativeSrc":"5381:102:87","nodeType":"YulBlock","src":"5381:102:87","statements":[{"nativeSrc":"5391:26:87","nodeType":"YulAssignment","src":"5391:26:87","value":{"arguments":[{"name":"headStart","nativeSrc":"5403:9:87","nodeType":"YulIdentifier","src":"5403:9:87"},{"kind":"number","nativeSrc":"5414:2:87","nodeType":"YulLiteral","src":"5414:2:87","type":"","value":"32"}],"functionName":{"name":"add","nativeSrc":"5399:3:87","nodeType":"YulIdentifier","src":"5399:3:87"},"nativeSrc":"5399:18:87","nodeType":"YulFunctionCall","src":"5399:18:87"},"variableNames":[{"name":"tail","nativeSrc":"5391:4:87","nodeType":"YulIdentifier","src":"5391:4:87"}]},{"expression":{"arguments":[{"name":"headStart","nativeSrc":"5433:9:87","nodeType":"YulIdentifier","src":"5433:9:87"},{"arguments":[{"name":"value0","nativeSrc":"5448:6:87","nodeType":"YulIdentifier","src":"5448:6:87"},{"arguments":[{"arguments":[{"kind":"number","nativeSrc":"5464:3:87","nodeType":"YulLiteral","src":"5464:3:87","type":"","value":"160"},{"kind":"number","nativeSrc":"5469:1:87","nodeType":"YulLiteral","src":"5469:1:87","type":"","value":"1"}],"functionName":{"name":"shl","nativeSrc":"5460:3:87","nodeType":"YulIdentifier","src":"5460:3:87"},"nativeSrc":"5460:11:87","nodeType":"YulFunctionCall","src":"5460:11:87"},{"kind":"number","nativeSrc":"5473:1:87","nodeType":"YulLiteral","src":"5473:1:87","type":"","value":"1"}],"functionName":{"name":"sub","nativeSrc":"5456:3:87","nodeType":"YulIdentifier","src":"5456:3:87"},"nativeSrc":"5456:19:87","nodeType":"YulFunctionCall","src":"5456:19:87"}],"functionName":{"name":"and","nativeSrc":"5444:3:87","nodeType":"YulIdentifier","src":"5444:3:87"},"nativeSrc":"5444:32:87","nodeType":"YulFunctionCall","src":"5444:32:87"}],"functionName":{"name":"mstore","nativeSrc":"5426:6:87","nodeType":"YulIdentifier","src":"5426:6:87"},"nativeSrc":"5426:51:87","nodeType":"YulFunctionCall","src":"5426:51:87"},"nativeSrc":"5426:51:87","nodeType":"YulExpressionStatement","src":"5426:51:87"}]},"name":"abi_encode_tuple_t_contract$_IInvestStrategy_$20725__to_t_address__fromStack_reversed","nativeSrc":"5255:228:87","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nativeSrc":"5350:9:87","nodeType":"YulTypedName","src":"5350:9:87","type":""},{"name":"value0","nativeSrc":"5361:6:87","nodeType":"YulTypedName","src":"5361:6:87","type":""}],"returnVariables":[{"name":"tail","nativeSrc":"5372:4:87","nodeType":"YulTypedName","src":"5372:4:87","type":""}],"src":"5255:228:87"},{"body":{"nativeSrc":"5592:404:87","nodeType":"YulBlock","src":"5592:404:87","statements":[{"body":{"nativeSrc":"5638:16:87","nodeType":"YulBlock","src":"5638:16:87","statements":[{"expression":{"arguments":[{"kind":"number","nativeSrc":"5647:1:87","nodeType":"YulLiteral","src":"5647:1:87","type":"","value":"0"},{"kind":"number","nativeSrc":"5650:1:87","nodeType":"YulLiteral","src":"5650:1:87","type":"","value":"0"}],"functionName":{"name":"revert","nativeSrc":"5640:6:87","nodeType":"YulIdentifier","src":"5640:6:87"},"nativeSrc":"5640:12:87","nodeType":"YulFunctionCall","src":"5640:12:87"},"nativeSrc":"5640:12:87","nodeType":"YulExpressionStatement","src":"5640:12:87"}]},"condition":{"arguments":[{"arguments":[{"name":"dataEnd","nativeSrc":"5613:7:87","nodeType":"YulIdentifier","src":"5613:7:87"},{"name":"headStart","nativeSrc":"5622:9:87","nodeType":"YulIdentifier","src":"5622:9:87"}],"functionName":{"name":"sub","nativeSrc":"5609:3:87","nodeType":"YulIdentifier","src":"5609:3:87"},"nativeSrc":"5609:23:87","nodeType":"YulFunctionCall","src":"5609:23:87"},{"kind":"number","nativeSrc":"5634:2:87","nodeType":"YulLiteral","src":"5634:2:87","type":"","value":"96"}],"functionName":{"name":"slt","nativeSrc":"5605:3:87","nodeType":"YulIdentifier","src":"5605:3:87"},"nativeSrc":"5605:32:87","nodeType":"YulFunctionCall","src":"5605:32:87"},"nativeSrc":"5602:52:87","nodeType":"YulIf","src":"5602:52:87"},{"nativeSrc":"5663:14:87","nodeType":"YulVariableDeclaration","src":"5663:14:87","value":{"kind":"number","nativeSrc":"5676:1:87","nodeType":"YulLiteral","src":"5676:1:87","type":"","value":"0"},"variables":[{"name":"value","nativeSrc":"5667:5:87","nodeType":"YulTypedName","src":"5667:5:87","type":""}]},{"nativeSrc":"5686:32:87","nodeType":"YulAssignment","src":"5686:32:87","value":{"arguments":[{"name":"headStart","nativeSrc":"5708:9:87","nodeType":"YulIdentifier","src":"5708:9:87"}],"functionName":{"name":"calldataload","nativeSrc":"5695:12:87","nodeType":"YulIdentifier","src":"5695:12:87"},"nativeSrc":"5695:23:87","nodeType":"YulFunctionCall","src":"5695:23:87"},"variableNames":[{"name":"value","nativeSrc":"5686:5:87","nodeType":"YulIdentifier","src":"5686:5:87"}]},{"nativeSrc":"5727:15:87","nodeType":"YulAssignment","src":"5727:15:87","value":{"name":"value","nativeSrc":"5737:5:87","nodeType":"YulIdentifier","src":"5737:5:87"},"variableNames":[{"name":"value0","nativeSrc":"5727:6:87","nodeType":"YulIdentifier","src":"5727:6:87"}]},{"nativeSrc":"5751:47:87","nodeType":"YulVariableDeclaration","src":"5751:47:87","value":{"arguments":[{"arguments":[{"name":"headStart","nativeSrc":"5783:9:87","nodeType":"YulIdentifier","src":"5783:9:87"},{"kind":"number","nativeSrc":"5794:2:87","nodeType":"YulLiteral","src":"5794:2:87","type":"","value":"32"}],"functionName":{"name":"add","nativeSrc":"5779:3:87","nodeType":"YulIdentifier","src":"5779:3:87"},"nativeSrc":"5779:18:87","nodeType":"YulFunctionCall","src":"5779:18:87"}],"functionName":{"name":"calldataload","nativeSrc":"5766:12:87","nodeType":"YulIdentifier","src":"5766:12:87"},"nativeSrc":"5766:32:87","nodeType":"YulFunctionCall","src":"5766:32:87"},"variables":[{"name":"value_1","nativeSrc":"5755:7:87","nodeType":"YulTypedName","src":"5755:7:87","type":""}]},{"expression":{"arguments":[{"name":"value_1","nativeSrc":"5832:7:87","nodeType":"YulIdentifier","src":"5832:7:87"}],"functionName":{"name":"validator_revert_address","nativeSrc":"5807:24:87","nodeType":"YulIdentifier","src":"5807:24:87"},"nativeSrc":"5807:33:87","nodeType":"YulFunctionCall","src":"5807:33:87"},"nativeSrc":"5807:33:87","nodeType":"YulExpressionStatement","src":"5807:33:87"},{"nativeSrc":"5849:17:87","nodeType":"YulAssignment","src":"5849:17:87","value":{"name":"value_1","nativeSrc":"5859:7:87","nodeType":"YulIdentifier","src":"5859:7:87"},"variableNames":[{"name":"value1","nativeSrc":"5849:6:87","nodeType":"YulIdentifier","src":"5849:6:87"}]},{"nativeSrc":"5875:47:87","nodeType":"YulVariableDeclaration","src":"5875:47:87","value":{"arguments":[{"arguments":[{"name":"headStart","nativeSrc":"5907:9:87","nodeType":"YulIdentifier","src":"5907:9:87"},{"kind":"number","nativeSrc":"5918:2:87","nodeType":"YulLiteral","src":"5918:2:87","type":"","value":"64"}],"functionName":{"name":"add","nativeSrc":"5903:3:87","nodeType":"YulIdentifier","src":"5903:3:87"},"nativeSrc":"5903:18:87","nodeType":"YulFunctionCall","src":"5903:18:87"}],"functionName":{"name":"calldataload","nativeSrc":"5890:12:87","nodeType":"YulIdentifier","src":"5890:12:87"},"nativeSrc":"5890:32:87","nodeType":"YulFunctionCall","src":"5890:32:87"},"variables":[{"name":"value_2","nativeSrc":"5879:7:87","nodeType":"YulTypedName","src":"5879:7:87","type":""}]},{"expression":{"arguments":[{"name":"value_2","nativeSrc":"5956:7:87","nodeType":"YulIdentifier","src":"5956:7:87"}],"functionName":{"name":"validator_revert_address","nativeSrc":"5931:24:87","nodeType":"YulIdentifier","src":"5931:24:87"},"nativeSrc":"5931:33:87","nodeType":"YulFunctionCall","src":"5931:33:87"},"nativeSrc":"5931:33:87","nodeType":"YulExpressionStatement","src":"5931:33:87"},{"nativeSrc":"5973:17:87","nodeType":"YulAssignment","src":"5973:17:87","value":{"name":"value_2","nativeSrc":"5983:7:87","nodeType":"YulIdentifier","src":"5983:7:87"},"variableNames":[{"name":"value2","nativeSrc":"5973:6:87","nodeType":"YulIdentifier","src":"5973:6:87"}]}]},"name":"abi_decode_tuple_t_uint256t_addresst_address","nativeSrc":"5488:508:87","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nativeSrc":"5542:9:87","nodeType":"YulTypedName","src":"5542:9:87","type":""},{"name":"dataEnd","nativeSrc":"5553:7:87","nodeType":"YulTypedName","src":"5553:7:87","type":""}],"returnVariables":[{"name":"value0","nativeSrc":"5565:6:87","nodeType":"YulTypedName","src":"5565:6:87","type":""},{"name":"value1","nativeSrc":"5573:6:87","nodeType":"YulTypedName","src":"5573:6:87","type":""},{"name":"value2","nativeSrc":"5581:6:87","nodeType":"YulTypedName","src":"5581:6:87","type":""}],"src":"5488:508:87"},{"body":{"nativeSrc":"6095:383:87","nodeType":"YulBlock","src":"6095:383:87","statements":[{"body":{"nativeSrc":"6141:16:87","nodeType":"YulBlock","src":"6141:16:87","statements":[{"expression":{"arguments":[{"kind":"number","nativeSrc":"6150:1:87","nodeType":"YulLiteral","src":"6150:1:87","type":"","value":"0"},{"kind":"number","nativeSrc":"6153:1:87","nodeType":"YulLiteral","src":"6153:1:87","type":"","value":"0"}],"functionName":{"name":"revert","nativeSrc":"6143:6:87","nodeType":"YulIdentifier","src":"6143:6:87"},"nativeSrc":"6143:12:87","nodeType":"YulFunctionCall","src":"6143:12:87"},"nativeSrc":"6143:12:87","nodeType":"YulExpressionStatement","src":"6143:12:87"}]},"condition":{"arguments":[{"arguments":[{"name":"dataEnd","nativeSrc":"6116:7:87","nodeType":"YulIdentifier","src":"6116:7:87"},{"name":"headStart","nativeSrc":"6125:9:87","nodeType":"YulIdentifier","src":"6125:9:87"}],"functionName":{"name":"sub","nativeSrc":"6112:3:87","nodeType":"YulIdentifier","src":"6112:3:87"},"nativeSrc":"6112:23:87","nodeType":"YulFunctionCall","src":"6112:23:87"},{"kind":"number","nativeSrc":"6137:2:87","nodeType":"YulLiteral","src":"6137:2:87","type":"","value":"64"}],"functionName":{"name":"slt","nativeSrc":"6108:3:87","nodeType":"YulIdentifier","src":"6108:3:87"},"nativeSrc":"6108:32:87","nodeType":"YulFunctionCall","src":"6108:32:87"},"nativeSrc":"6105:52:87","nodeType":"YulIf","src":"6105:52:87"},{"nativeSrc":"6166:36:87","nodeType":"YulVariableDeclaration","src":"6166:36:87","value":{"arguments":[{"name":"headStart","nativeSrc":"6192:9:87","nodeType":"YulIdentifier","src":"6192:9:87"}],"functionName":{"name":"calldataload","nativeSrc":"6179:12:87","nodeType":"YulIdentifier","src":"6179:12:87"},"nativeSrc":"6179:23:87","nodeType":"YulFunctionCall","src":"6179:23:87"},"variables":[{"name":"value","nativeSrc":"6170:5:87","nodeType":"YulTypedName","src":"6170:5:87","type":""}]},{"body":{"nativeSrc":"6250:16:87","nodeType":"YulBlock","src":"6250:16:87","statements":[{"expression":{"arguments":[{"kind":"number","nativeSrc":"6259:1:87","nodeType":"YulLiteral","src":"6259:1:87","type":"","value":"0"},{"kind":"number","nativeSrc":"6262:1:87","nodeType":"YulLiteral","src":"6262:1:87","type":"","value":"0"}],"functionName":{"name":"revert","nativeSrc":"6252:6:87","nodeType":"YulIdentifier","src":"6252:6:87"},"nativeSrc":"6252:12:87","nodeType":"YulFunctionCall","src":"6252:12:87"},"nativeSrc":"6252:12:87","nodeType":"YulExpressionStatement","src":"6252:12:87"}]},"condition":{"arguments":[{"arguments":[{"name":"value","nativeSrc":"6224:5:87","nodeType":"YulIdentifier","src":"6224:5:87"},{"arguments":[{"name":"value","nativeSrc":"6235:5:87","nodeType":"YulIdentifier","src":"6235:5:87"},{"kind":"number","nativeSrc":"6242:4:87","nodeType":"YulLiteral","src":"6242:4:87","type":"","value":"0xff"}],"functionName":{"name":"and","nativeSrc":"6231:3:87","nodeType":"YulIdentifier","src":"6231:3:87"},"nativeSrc":"6231:16:87","nodeType":"YulFunctionCall","src":"6231:16:87"}],"functionName":{"name":"eq","nativeSrc":"6221:2:87","nodeType":"YulIdentifier","src":"6221:2:87"},"nativeSrc":"6221:27:87","nodeType":"YulFunctionCall","src":"6221:27:87"}],"functionName":{"name":"iszero","nativeSrc":"6214:6:87","nodeType":"YulIdentifier","src":"6214:6:87"},"nativeSrc":"6214:35:87","nodeType":"YulFunctionCall","src":"6214:35:87"},"nativeSrc":"6211:55:87","nodeType":"YulIf","src":"6211:55:87"},{"nativeSrc":"6275:15:87","nodeType":"YulAssignment","src":"6275:15:87","value":{"name":"value","nativeSrc":"6285:5:87","nodeType":"YulIdentifier","src":"6285:5:87"},"variableNames":[{"name":"value0","nativeSrc":"6275:6:87","nodeType":"YulIdentifier","src":"6275:6:87"}]},{"nativeSrc":"6299:46:87","nodeType":"YulVariableDeclaration","src":"6299:46:87","value":{"arguments":[{"arguments":[{"name":"headStart","nativeSrc":"6330:9:87","nodeType":"YulIdentifier","src":"6330:9:87"},{"kind":"number","nativeSrc":"6341:2:87","nodeType":"YulLiteral","src":"6341:2:87","type":"","value":"32"}],"functionName":{"name":"add","nativeSrc":"6326:3:87","nodeType":"YulIdentifier","src":"6326:3:87"},"nativeSrc":"6326:18:87","nodeType":"YulFunctionCall","src":"6326:18:87"}],"functionName":{"name":"calldataload","nativeSrc":"6313:12:87","nodeType":"YulIdentifier","src":"6313:12:87"},"nativeSrc":"6313:32:87","nodeType":"YulFunctionCall","src":"6313:32:87"},"variables":[{"name":"offset","nativeSrc":"6303:6:87","nodeType":"YulTypedName","src":"6303:6:87","type":""}]},{"body":{"nativeSrc":"6388:16:87","nodeType":"YulBlock","src":"6388:16:87","statements":[{"expression":{"arguments":[{"kind":"number","nativeSrc":"6397:1:87","nodeType":"YulLiteral","src":"6397:1:87","type":"","value":"0"},{"kind":"number","nativeSrc":"6400:1:87","nodeType":"YulLiteral","src":"6400:1:87","type":"","value":"0"}],"functionName":{"name":"revert","nativeSrc":"6390:6:87","nodeType":"YulIdentifier","src":"6390:6:87"},"nativeSrc":"6390:12:87","nodeType":"YulFunctionCall","src":"6390:12:87"},"nativeSrc":"6390:12:87","nodeType":"YulExpressionStatement","src":"6390:12:87"}]},"condition":{"arguments":[{"name":"offset","nativeSrc":"6360:6:87","nodeType":"YulIdentifier","src":"6360:6:87"},{"kind":"number","nativeSrc":"6368:18:87","nodeType":"YulLiteral","src":"6368:18:87","type":"","value":"0xffffffffffffffff"}],"functionName":{"name":"gt","nativeSrc":"6357:2:87","nodeType":"YulIdentifier","src":"6357:2:87"},"nativeSrc":"6357:30:87","nodeType":"YulFunctionCall","src":"6357:30:87"},"nativeSrc":"6354:50:87","nodeType":"YulIf","src":"6354:50:87"},{"nativeSrc":"6413:59:87","nodeType":"YulAssignment","src":"6413:59:87","value":{"arguments":[{"arguments":[{"name":"headStart","nativeSrc":"6444:9:87","nodeType":"YulIdentifier","src":"6444:9:87"},{"name":"offset","nativeSrc":"6455:6:87","nodeType":"YulIdentifier","src":"6455:6:87"}],"functionName":{"name":"add","nativeSrc":"6440:3:87","nodeType":"YulIdentifier","src":"6440:3:87"},"nativeSrc":"6440:22:87","nodeType":"YulFunctionCall","src":"6440:22:87"},{"name":"dataEnd","nativeSrc":"6464:7:87","nodeType":"YulIdentifier","src":"6464:7:87"}],"functionName":{"name":"abi_decode_bytes","nativeSrc":"6423:16:87","nodeType":"YulIdentifier","src":"6423:16:87"},"nativeSrc":"6423:49:87","nodeType":"YulFunctionCall","src":"6423:49:87"},"variableNames":[{"name":"value1","nativeSrc":"6413:6:87","nodeType":"YulIdentifier","src":"6413:6:87"}]}]},"name":"abi_decode_tuple_t_uint8t_bytes_memory_ptr","nativeSrc":"6001:477:87","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nativeSrc":"6053:9:87","nodeType":"YulTypedName","src":"6053:9:87","type":""},{"name":"dataEnd","nativeSrc":"6064:7:87","nodeType":"YulTypedName","src":"6064:7:87","type":""}],"returnVariables":[{"name":"value0","nativeSrc":"6076:6:87","nodeType":"YulTypedName","src":"6076:6:87","type":""},{"name":"value1","nativeSrc":"6084:6:87","nodeType":"YulTypedName","src":"6084:6:87","type":""}],"src":"6001:477:87"},{"body":{"nativeSrc":"6618:514:87","nodeType":"YulBlock","src":"6618:514:87","statements":[{"body":{"nativeSrc":"6664:16:87","nodeType":"YulBlock","src":"6664:16:87","statements":[{"expression":{"arguments":[{"kind":"number","nativeSrc":"6673:1:87","nodeType":"YulLiteral","src":"6673:1:87","type":"","value":"0"},{"kind":"number","nativeSrc":"6676:1:87","nodeType":"YulLiteral","src":"6676:1:87","type":"","value":"0"}],"functionName":{"name":"revert","nativeSrc":"6666:6:87","nodeType":"YulIdentifier","src":"6666:6:87"},"nativeSrc":"6666:12:87","nodeType":"YulFunctionCall","src":"6666:12:87"},"nativeSrc":"6666:12:87","nodeType":"YulExpressionStatement","src":"6666:12:87"}]},"condition":{"arguments":[{"arguments":[{"name":"dataEnd","nativeSrc":"6639:7:87","nodeType":"YulIdentifier","src":"6639:7:87"},{"name":"headStart","nativeSrc":"6648:9:87","nodeType":"YulIdentifier","src":"6648:9:87"}],"functionName":{"name":"sub","nativeSrc":"6635:3:87","nodeType":"YulIdentifier","src":"6635:3:87"},"nativeSrc":"6635:23:87","nodeType":"YulFunctionCall","src":"6635:23:87"},{"kind":"number","nativeSrc":"6660:2:87","nodeType":"YulLiteral","src":"6660:2:87","type":"","value":"96"}],"functionName":{"name":"slt","nativeSrc":"6631:3:87","nodeType":"YulIdentifier","src":"6631:3:87"},"nativeSrc":"6631:32:87","nodeType":"YulFunctionCall","src":"6631:32:87"},"nativeSrc":"6628:52:87","nodeType":"YulIf","src":"6628:52:87"},{"nativeSrc":"6689:36:87","nodeType":"YulVariableDeclaration","src":"6689:36:87","value":{"arguments":[{"name":"headStart","nativeSrc":"6715:9:87","nodeType":"YulIdentifier","src":"6715:9:87"}],"functionName":{"name":"calldataload","nativeSrc":"6702:12:87","nodeType":"YulIdentifier","src":"6702:12:87"},"nativeSrc":"6702:23:87","nodeType":"YulFunctionCall","src":"6702:23:87"},"variables":[{"name":"value","nativeSrc":"6693:5:87","nodeType":"YulTypedName","src":"6693:5:87","type":""}]},{"expression":{"arguments":[{"name":"value","nativeSrc":"6759:5:87","nodeType":"YulIdentifier","src":"6759:5:87"}],"functionName":{"name":"validator_revert_address","nativeSrc":"6734:24:87","nodeType":"YulIdentifier","src":"6734:24:87"},"nativeSrc":"6734:31:87","nodeType":"YulFunctionCall","src":"6734:31:87"},"nativeSrc":"6734:31:87","nodeType":"YulExpressionStatement","src":"6734:31:87"},{"nativeSrc":"6774:15:87","nodeType":"YulAssignment","src":"6774:15:87","value":{"name":"value","nativeSrc":"6784:5:87","nodeType":"YulIdentifier","src":"6784:5:87"},"variableNames":[{"name":"value0","nativeSrc":"6774:6:87","nodeType":"YulIdentifier","src":"6774:6:87"}]},{"nativeSrc":"6798:46:87","nodeType":"YulVariableDeclaration","src":"6798:46:87","value":{"arguments":[{"arguments":[{"name":"headStart","nativeSrc":"6829:9:87","nodeType":"YulIdentifier","src":"6829:9:87"},{"kind":"number","nativeSrc":"6840:2:87","nodeType":"YulLiteral","src":"6840:2:87","type":"","value":"32"}],"functionName":{"name":"add","nativeSrc":"6825:3:87","nodeType":"YulIdentifier","src":"6825:3:87"},"nativeSrc":"6825:18:87","nodeType":"YulFunctionCall","src":"6825:18:87"}],"functionName":{"name":"calldataload","nativeSrc":"6812:12:87","nodeType":"YulIdentifier","src":"6812:12:87"},"nativeSrc":"6812:32:87","nodeType":"YulFunctionCall","src":"6812:32:87"},"variables":[{"name":"offset","nativeSrc":"6802:6:87","nodeType":"YulTypedName","src":"6802:6:87","type":""}]},{"body":{"nativeSrc":"6887:16:87","nodeType":"YulBlock","src":"6887:16:87","statements":[{"expression":{"arguments":[{"kind":"number","nativeSrc":"6896:1:87","nodeType":"YulLiteral","src":"6896:1:87","type":"","value":"0"},{"kind":"number","nativeSrc":"6899:1:87","nodeType":"YulLiteral","src":"6899:1:87","type":"","value":"0"}],"functionName":{"name":"revert","nativeSrc":"6889:6:87","nodeType":"YulIdentifier","src":"6889:6:87"},"nativeSrc":"6889:12:87","nodeType":"YulFunctionCall","src":"6889:12:87"},"nativeSrc":"6889:12:87","nodeType":"YulExpressionStatement","src":"6889:12:87"}]},"condition":{"arguments":[{"name":"offset","nativeSrc":"6859:6:87","nodeType":"YulIdentifier","src":"6859:6:87"},{"kind":"number","nativeSrc":"6867:18:87","nodeType":"YulLiteral","src":"6867:18:87","type":"","value":"0xffffffffffffffff"}],"functionName":{"name":"gt","nativeSrc":"6856:2:87","nodeType":"YulIdentifier","src":"6856:2:87"},"nativeSrc":"6856:30:87","nodeType":"YulFunctionCall","src":"6856:30:87"},"nativeSrc":"6853:50:87","nodeType":"YulIf","src":"6853:50:87"},{"nativeSrc":"6912:59:87","nodeType":"YulAssignment","src":"6912:59:87","value":{"arguments":[{"arguments":[{"name":"headStart","nativeSrc":"6943:9:87","nodeType":"YulIdentifier","src":"6943:9:87"},{"name":"offset","nativeSrc":"6954:6:87","nodeType":"YulIdentifier","src":"6954:6:87"}],"functionName":{"name":"add","nativeSrc":"6939:3:87","nodeType":"YulIdentifier","src":"6939:3:87"},"nativeSrc":"6939:22:87","nodeType":"YulFunctionCall","src":"6939:22:87"},{"name":"dataEnd","nativeSrc":"6963:7:87","nodeType":"YulIdentifier","src":"6963:7:87"}],"functionName":{"name":"abi_decode_bytes","nativeSrc":"6922:16:87","nodeType":"YulIdentifier","src":"6922:16:87"},"nativeSrc":"6922:49:87","nodeType":"YulFunctionCall","src":"6922:49:87"},"variableNames":[{"name":"value1","nativeSrc":"6912:6:87","nodeType":"YulIdentifier","src":"6912:6:87"}]},{"nativeSrc":"6980:47:87","nodeType":"YulVariableDeclaration","src":"6980:47:87","value":{"arguments":[{"arguments":[{"name":"headStart","nativeSrc":"7012:9:87","nodeType":"YulIdentifier","src":"7012:9:87"},{"kind":"number","nativeSrc":"7023:2:87","nodeType":"YulLiteral","src":"7023:2:87","type":"","value":"64"}],"functionName":{"name":"add","nativeSrc":"7008:3:87","nodeType":"YulIdentifier","src":"7008:3:87"},"nativeSrc":"7008:18:87","nodeType":"YulFunctionCall","src":"7008:18:87"}],"functionName":{"name":"calldataload","nativeSrc":"6995:12:87","nodeType":"YulIdentifier","src":"6995:12:87"},"nativeSrc":"6995:32:87","nodeType":"YulFunctionCall","src":"6995:32:87"},"variables":[{"name":"value_1","nativeSrc":"6984:7:87","nodeType":"YulTypedName","src":"6984:7:87","type":""}]},{"body":{"nativeSrc":"7084:16:87","nodeType":"YulBlock","src":"7084:16:87","statements":[{"expression":{"arguments":[{"kind":"number","nativeSrc":"7093:1:87","nodeType":"YulLiteral","src":"7093:1:87","type":"","value":"0"},{"kind":"number","nativeSrc":"7096:1:87","nodeType":"YulLiteral","src":"7096:1:87","type":"","value":"0"}],"functionName":{"name":"revert","nativeSrc":"7086:6:87","nodeType":"YulIdentifier","src":"7086:6:87"},"nativeSrc":"7086:12:87","nodeType":"YulFunctionCall","src":"7086:12:87"},"nativeSrc":"7086:12:87","nodeType":"YulExpressionStatement","src":"7086:12:87"}]},"condition":{"arguments":[{"arguments":[{"name":"value_1","nativeSrc":"7049:7:87","nodeType":"YulIdentifier","src":"7049:7:87"},{"arguments":[{"arguments":[{"name":"value_1","nativeSrc":"7072:7:87","nodeType":"YulIdentifier","src":"7072:7:87"}],"functionName":{"name":"iszero","nativeSrc":"7065:6:87","nodeType":"YulIdentifier","src":"7065:6:87"},"nativeSrc":"7065:15:87","nodeType":"YulFunctionCall","src":"7065:15:87"}],"functionName":{"name":"iszero","nativeSrc":"7058:6:87","nodeType":"YulIdentifier","src":"7058:6:87"},"nativeSrc":"7058:23:87","nodeType":"YulFunctionCall","src":"7058:23:87"}],"functionName":{"name":"eq","nativeSrc":"7046:2:87","nodeType":"YulIdentifier","src":"7046:2:87"},"nativeSrc":"7046:36:87","nodeType":"YulFunctionCall","src":"7046:36:87"}],"functionName":{"name":"iszero","nativeSrc":"7039:6:87","nodeType":"YulIdentifier","src":"7039:6:87"},"nativeSrc":"7039:44:87","nodeType":"YulFunctionCall","src":"7039:44:87"},"nativeSrc":"7036:64:87","nodeType":"YulIf","src":"7036:64:87"},{"nativeSrc":"7109:17:87","nodeType":"YulAssignment","src":"7109:17:87","value":{"name":"value_1","nativeSrc":"7119:7:87","nodeType":"YulIdentifier","src":"7119:7:87"},"variableNames":[{"name":"value2","nativeSrc":"7109:6:87","nodeType":"YulIdentifier","src":"7109:6:87"}]}]},"name":"abi_decode_tuple_t_contract$_IInvestStrategy_$20725t_bytes_memory_ptrt_bool","nativeSrc":"6483:649:87","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nativeSrc":"6568:9:87","nodeType":"YulTypedName","src":"6568:9:87","type":""},{"name":"dataEnd","nativeSrc":"6579:7:87","nodeType":"YulTypedName","src":"6579:7:87","type":""}],"returnVariables":[{"name":"value0","nativeSrc":"6591:6:87","nodeType":"YulTypedName","src":"6591:6:87","type":""},{"name":"value1","nativeSrc":"6599:6:87","nodeType":"YulTypedName","src":"6599:6:87","type":""},{"name":"value2","nativeSrc":"6607:6:87","nodeType":"YulTypedName","src":"6607:6:87","type":""}],"src":"6483:649:87"},{"body":{"nativeSrc":"7224:301:87","nodeType":"YulBlock","src":"7224:301:87","statements":[{"body":{"nativeSrc":"7270:16:87","nodeType":"YulBlock","src":"7270:16:87","statements":[{"expression":{"arguments":[{"kind":"number","nativeSrc":"7279:1:87","nodeType":"YulLiteral","src":"7279:1:87","type":"","value":"0"},{"kind":"number","nativeSrc":"7282:1:87","nodeType":"YulLiteral","src":"7282:1:87","type":"","value":"0"}],"functionName":{"name":"revert","nativeSrc":"7272:6:87","nodeType":"YulIdentifier","src":"7272:6:87"},"nativeSrc":"7272:12:87","nodeType":"YulFunctionCall","src":"7272:12:87"},"nativeSrc":"7272:12:87","nodeType":"YulExpressionStatement","src":"7272:12:87"}]},"condition":{"arguments":[{"arguments":[{"name":"dataEnd","nativeSrc":"7245:7:87","nodeType":"YulIdentifier","src":"7245:7:87"},{"name":"headStart","nativeSrc":"7254:9:87","nodeType":"YulIdentifier","src":"7254:9:87"}],"functionName":{"name":"sub","nativeSrc":"7241:3:87","nodeType":"YulIdentifier","src":"7241:3:87"},"nativeSrc":"7241:23:87","nodeType":"YulFunctionCall","src":"7241:23:87"},{"kind":"number","nativeSrc":"7266:2:87","nodeType":"YulLiteral","src":"7266:2:87","type":"","value":"64"}],"functionName":{"name":"slt","nativeSrc":"7237:3:87","nodeType":"YulIdentifier","src":"7237:3:87"},"nativeSrc":"7237:32:87","nodeType":"YulFunctionCall","src":"7237:32:87"},"nativeSrc":"7234:52:87","nodeType":"YulIf","src":"7234:52:87"},{"nativeSrc":"7295:36:87","nodeType":"YulVariableDeclaration","src":"7295:36:87","value":{"arguments":[{"name":"headStart","nativeSrc":"7321:9:87","nodeType":"YulIdentifier","src":"7321:9:87"}],"functionName":{"name":"calldataload","nativeSrc":"7308:12:87","nodeType":"YulIdentifier","src":"7308:12:87"},"nativeSrc":"7308:23:87","nodeType":"YulFunctionCall","src":"7308:23:87"},"variables":[{"name":"value","nativeSrc":"7299:5:87","nodeType":"YulTypedName","src":"7299:5:87","type":""}]},{"expression":{"arguments":[{"name":"value","nativeSrc":"7365:5:87","nodeType":"YulIdentifier","src":"7365:5:87"}],"functionName":{"name":"validator_revert_address","nativeSrc":"7340:24:87","nodeType":"YulIdentifier","src":"7340:24:87"},"nativeSrc":"7340:31:87","nodeType":"YulFunctionCall","src":"7340:31:87"},"nativeSrc":"7340:31:87","nodeType":"YulExpressionStatement","src":"7340:31:87"},{"nativeSrc":"7380:15:87","nodeType":"YulAssignment","src":"7380:15:87","value":{"name":"value","nativeSrc":"7390:5:87","nodeType":"YulIdentifier","src":"7390:5:87"},"variableNames":[{"name":"value0","nativeSrc":"7380:6:87","nodeType":"YulIdentifier","src":"7380:6:87"}]},{"nativeSrc":"7404:47:87","nodeType":"YulVariableDeclaration","src":"7404:47:87","value":{"arguments":[{"arguments":[{"name":"headStart","nativeSrc":"7436:9:87","nodeType":"YulIdentifier","src":"7436:9:87"},{"kind":"number","nativeSrc":"7447:2:87","nodeType":"YulLiteral","src":"7447:2:87","type":"","value":"32"}],"functionName":{"name":"add","nativeSrc":"7432:3:87","nodeType":"YulIdentifier","src":"7432:3:87"},"nativeSrc":"7432:18:87","nodeType":"YulFunctionCall","src":"7432:18:87"}],"functionName":{"name":"calldataload","nativeSrc":"7419:12:87","nodeType":"YulIdentifier","src":"7419:12:87"},"nativeSrc":"7419:32:87","nodeType":"YulFunctionCall","src":"7419:32:87"},"variables":[{"name":"value_1","nativeSrc":"7408:7:87","nodeType":"YulTypedName","src":"7408:7:87","type":""}]},{"expression":{"arguments":[{"name":"value_1","nativeSrc":"7485:7:87","nodeType":"YulIdentifier","src":"7485:7:87"}],"functionName":{"name":"validator_revert_address","nativeSrc":"7460:24:87","nodeType":"YulIdentifier","src":"7460:24:87"},"nativeSrc":"7460:33:87","nodeType":"YulFunctionCall","src":"7460:33:87"},"nativeSrc":"7460:33:87","nodeType":"YulExpressionStatement","src":"7460:33:87"},{"nativeSrc":"7502:17:87","nodeType":"YulAssignment","src":"7502:17:87","value":{"name":"value_1","nativeSrc":"7512:7:87","nodeType":"YulIdentifier","src":"7512:7:87"},"variableNames":[{"name":"value1","nativeSrc":"7502:6:87","nodeType":"YulIdentifier","src":"7502:6:87"}]}]},"name":"abi_decode_tuple_t_addresst_address","nativeSrc":"7137:388:87","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nativeSrc":"7182:9:87","nodeType":"YulTypedName","src":"7182:9:87","type":""},{"name":"dataEnd","nativeSrc":"7193:7:87","nodeType":"YulTypedName","src":"7193:7:87","type":""}],"returnVariables":[{"name":"value0","nativeSrc":"7205:6:87","nodeType":"YulTypedName","src":"7205:6:87","type":""},{"name":"value1","nativeSrc":"7213:6:87","nodeType":"YulTypedName","src":"7213:6:87","type":""}],"src":"7137:388:87"},{"body":{"nativeSrc":"7737:861:87","nodeType":"YulBlock","src":"7737:861:87","statements":[{"body":{"nativeSrc":"7784:16:87","nodeType":"YulBlock","src":"7784:16:87","statements":[{"expression":{"arguments":[{"kind":"number","nativeSrc":"7793:1:87","nodeType":"YulLiteral","src":"7793:1:87","type":"","value":"0"},{"kind":"number","nativeSrc":"7796:1:87","nodeType":"YulLiteral","src":"7796:1:87","type":"","value":"0"}],"functionName":{"name":"revert","nativeSrc":"7786:6:87","nodeType":"YulIdentifier","src":"7786:6:87"},"nativeSrc":"7786:12:87","nodeType":"YulFunctionCall","src":"7786:12:87"},"nativeSrc":"7786:12:87","nodeType":"YulExpressionStatement","src":"7786:12:87"}]},"condition":{"arguments":[{"arguments":[{"name":"dataEnd","nativeSrc":"7758:7:87","nodeType":"YulIdentifier","src":"7758:7:87"},{"name":"headStart","nativeSrc":"7767:9:87","nodeType":"YulIdentifier","src":"7767:9:87"}],"functionName":{"name":"sub","nativeSrc":"7754:3:87","nodeType":"YulIdentifier","src":"7754:3:87"},"nativeSrc":"7754:23:87","nodeType":"YulFunctionCall","src":"7754:23:87"},{"kind":"number","nativeSrc":"7779:3:87","nodeType":"YulLiteral","src":"7779:3:87","type":"","value":"160"}],"functionName":{"name":"slt","nativeSrc":"7750:3:87","nodeType":"YulIdentifier","src":"7750:3:87"},"nativeSrc":"7750:33:87","nodeType":"YulFunctionCall","src":"7750:33:87"},"nativeSrc":"7747:53:87","nodeType":"YulIf","src":"7747:53:87"},{"nativeSrc":"7809:37:87","nodeType":"YulVariableDeclaration","src":"7809:37:87","value":{"arguments":[{"name":"headStart","nativeSrc":"7836:9:87","nodeType":"YulIdentifier","src":"7836:9:87"}],"functionName":{"name":"calldataload","nativeSrc":"7823:12:87","nodeType":"YulIdentifier","src":"7823:12:87"},"nativeSrc":"7823:23:87","nodeType":"YulFunctionCall","src":"7823:23:87"},"variables":[{"name":"offset","nativeSrc":"7813:6:87","nodeType":"YulTypedName","src":"7813:6:87","type":""}]},{"body":{"nativeSrc":"7889:16:87","nodeType":"YulBlock","src":"7889:16:87","statements":[{"expression":{"arguments":[{"kind":"number","nativeSrc":"7898:1:87","nodeType":"YulLiteral","src":"7898:1:87","type":"","value":"0"},{"kind":"number","nativeSrc":"7901:1:87","nodeType":"YulLiteral","src":"7901:1:87","type":"","value":"0"}],"functionName":{"name":"revert","nativeSrc":"7891:6:87","nodeType":"YulIdentifier","src":"7891:6:87"},"nativeSrc":"7891:12:87","nodeType":"YulFunctionCall","src":"7891:12:87"},"nativeSrc":"7891:12:87","nodeType":"YulExpressionStatement","src":"7891:12:87"}]},"condition":{"arguments":[{"name":"offset","nativeSrc":"7861:6:87","nodeType":"YulIdentifier","src":"7861:6:87"},{"kind":"number","nativeSrc":"7869:18:87","nodeType":"YulLiteral","src":"7869:18:87","type":"","value":"0xffffffffffffffff"}],"functionName":{"name":"gt","nativeSrc":"7858:2:87","nodeType":"YulIdentifier","src":"7858:2:87"},"nativeSrc":"7858:30:87","nodeType":"YulFunctionCall","src":"7858:30:87"},"nativeSrc":"7855:50:87","nodeType":"YulIf","src":"7855:50:87"},{"nativeSrc":"7914:59:87","nodeType":"YulAssignment","src":"7914:59:87","value":{"arguments":[{"arguments":[{"name":"headStart","nativeSrc":"7945:9:87","nodeType":"YulIdentifier","src":"7945:9:87"},{"name":"offset","nativeSrc":"7956:6:87","nodeType":"YulIdentifier","src":"7956:6:87"}],"functionName":{"name":"add","nativeSrc":"7941:3:87","nodeType":"YulIdentifier","src":"7941:3:87"},"nativeSrc":"7941:22:87","nodeType":"YulFunctionCall","src":"7941:22:87"},{"name":"dataEnd","nativeSrc":"7965:7:87","nodeType":"YulIdentifier","src":"7965:7:87"}],"functionName":{"name":"abi_decode_bytes","nativeSrc":"7924:16:87","nodeType":"YulIdentifier","src":"7924:16:87"},"nativeSrc":"7924:49:87","nodeType":"YulFunctionCall","src":"7924:49:87"},"variableNames":[{"name":"value0","nativeSrc":"7914:6:87","nodeType":"YulIdentifier","src":"7914:6:87"}]},{"nativeSrc":"7982:48:87","nodeType":"YulVariableDeclaration","src":"7982:48:87","value":{"arguments":[{"arguments":[{"name":"headStart","nativeSrc":"8015:9:87","nodeType":"YulIdentifier","src":"8015:9:87"},{"kind":"number","nativeSrc":"8026:2:87","nodeType":"YulLiteral","src":"8026:2:87","type":"","value":"32"}],"functionName":{"name":"add","nativeSrc":"8011:3:87","nodeType":"YulIdentifier","src":"8011:3:87"},"nativeSrc":"8011:18:87","nodeType":"YulFunctionCall","src":"8011:18:87"}],"functionName":{"name":"calldataload","nativeSrc":"7998:12:87","nodeType":"YulIdentifier","src":"7998:12:87"},"nativeSrc":"7998:32:87","nodeType":"YulFunctionCall","src":"7998:32:87"},"variables":[{"name":"offset_1","nativeSrc":"7986:8:87","nodeType":"YulTypedName","src":"7986:8:87","type":""}]},{"body":{"nativeSrc":"8075:16:87","nodeType":"YulBlock","src":"8075:16:87","statements":[{"expression":{"arguments":[{"kind":"number","nativeSrc":"8084:1:87","nodeType":"YulLiteral","src":"8084:1:87","type":"","value":"0"},{"kind":"number","nativeSrc":"8087:1:87","nodeType":"YulLiteral","src":"8087:1:87","type":"","value":"0"}],"functionName":{"name":"revert","nativeSrc":"8077:6:87","nodeType":"YulIdentifier","src":"8077:6:87"},"nativeSrc":"8077:12:87","nodeType":"YulFunctionCall","src":"8077:12:87"},"nativeSrc":"8077:12:87","nodeType":"YulExpressionStatement","src":"8077:12:87"}]},"condition":{"arguments":[{"name":"offset_1","nativeSrc":"8045:8:87","nodeType":"YulIdentifier","src":"8045:8:87"},{"kind":"number","nativeSrc":"8055:18:87","nodeType":"YulLiteral","src":"8055:18:87","type":"","value":"0xffffffffffffffff"}],"functionName":{"name":"gt","nativeSrc":"8042:2:87","nodeType":"YulIdentifier","src":"8042:2:87"},"nativeSrc":"8042:32:87","nodeType":"YulFunctionCall","src":"8042:32:87"},"nativeSrc":"8039:52:87","nodeType":"YulIf","src":"8039:52:87"},{"nativeSrc":"8100:61:87","nodeType":"YulAssignment","src":"8100:61:87","value":{"arguments":[{"arguments":[{"name":"headStart","nativeSrc":"8131:9:87","nodeType":"YulIdentifier","src":"8131:9:87"},{"name":"offset_1","nativeSrc":"8142:8:87","nodeType":"YulIdentifier","src":"8142:8:87"}],"functionName":{"name":"add","nativeSrc":"8127:3:87","nodeType":"YulIdentifier","src":"8127:3:87"},"nativeSrc":"8127:24:87","nodeType":"YulFunctionCall","src":"8127:24:87"},{"name":"dataEnd","nativeSrc":"8153:7:87","nodeType":"YulIdentifier","src":"8153:7:87"}],"functionName":{"name":"abi_decode_bytes","nativeSrc":"8110:16:87","nodeType":"YulIdentifier","src":"8110:16:87"},"nativeSrc":"8110:51:87","nodeType":"YulFunctionCall","src":"8110:51:87"},"variableNames":[{"name":"value1","nativeSrc":"8100:6:87","nodeType":"YulIdentifier","src":"8100:6:87"}]},{"nativeSrc":"8170:45:87","nodeType":"YulVariableDeclaration","src":"8170:45:87","value":{"arguments":[{"arguments":[{"name":"headStart","nativeSrc":"8200:9:87","nodeType":"YulIdentifier","src":"8200:9:87"},{"kind":"number","nativeSrc":"8211:2:87","nodeType":"YulLiteral","src":"8211:2:87","type":"","value":"64"}],"functionName":{"name":"add","nativeSrc":"8196:3:87","nodeType":"YulIdentifier","src":"8196:3:87"},"nativeSrc":"8196:18:87","nodeType":"YulFunctionCall","src":"8196:18:87"}],"functionName":{"name":"calldataload","nativeSrc":"8183:12:87","nodeType":"YulIdentifier","src":"8183:12:87"},"nativeSrc":"8183:32:87","nodeType":"YulFunctionCall","src":"8183:32:87"},"variables":[{"name":"value","nativeSrc":"8174:5:87","nodeType":"YulTypedName","src":"8174:5:87","type":""}]},{"expression":{"arguments":[{"name":"value","nativeSrc":"8249:5:87","nodeType":"YulIdentifier","src":"8249:5:87"}],"functionName":{"name":"validator_revert_address","nativeSrc":"8224:24:87","nodeType":"YulIdentifier","src":"8224:24:87"},"nativeSrc":"8224:31:87","nodeType":"YulFunctionCall","src":"8224:31:87"},"nativeSrc":"8224:31:87","nodeType":"YulExpressionStatement","src":"8224:31:87"},{"nativeSrc":"8264:15:87","nodeType":"YulAssignment","src":"8264:15:87","value":{"name":"value","nativeSrc":"8274:5:87","nodeType":"YulIdentifier","src":"8274:5:87"},"variableNames":[{"name":"value2","nativeSrc":"8264:6:87","nodeType":"YulIdentifier","src":"8264:6:87"}]},{"nativeSrc":"8288:47:87","nodeType":"YulVariableDeclaration","src":"8288:47:87","value":{"arguments":[{"arguments":[{"name":"headStart","nativeSrc":"8320:9:87","nodeType":"YulIdentifier","src":"8320:9:87"},{"kind":"number","nativeSrc":"8331:2:87","nodeType":"YulLiteral","src":"8331:2:87","type":"","value":"96"}],"functionName":{"name":"add","nativeSrc":"8316:3:87","nodeType":"YulIdentifier","src":"8316:3:87"},"nativeSrc":"8316:18:87","nodeType":"YulFunctionCall","src":"8316:18:87"}],"functionName":{"name":"calldataload","nativeSrc":"8303:12:87","nodeType":"YulIdentifier","src":"8303:12:87"},"nativeSrc":"8303:32:87","nodeType":"YulFunctionCall","src":"8303:32:87"},"variables":[{"name":"value_1","nativeSrc":"8292:7:87","nodeType":"YulTypedName","src":"8292:7:87","type":""}]},{"expression":{"arguments":[{"name":"value_1","nativeSrc":"8369:7:87","nodeType":"YulIdentifier","src":"8369:7:87"}],"functionName":{"name":"validator_revert_address","nativeSrc":"8344:24:87","nodeType":"YulIdentifier","src":"8344:24:87"},"nativeSrc":"8344:33:87","nodeType":"YulFunctionCall","src":"8344:33:87"},"nativeSrc":"8344:33:87","nodeType":"YulExpressionStatement","src":"8344:33:87"},{"nativeSrc":"8386:17:87","nodeType":"YulAssignment","src":"8386:17:87","value":{"name":"value_1","nativeSrc":"8396:7:87","nodeType":"YulIdentifier","src":"8396:7:87"},"variableNames":[{"name":"value3","nativeSrc":"8386:6:87","nodeType":"YulIdentifier","src":"8386:6:87"}]},{"nativeSrc":"8412:49:87","nodeType":"YulVariableDeclaration","src":"8412:49:87","value":{"arguments":[{"arguments":[{"name":"headStart","nativeSrc":"8445:9:87","nodeType":"YulIdentifier","src":"8445:9:87"},{"kind":"number","nativeSrc":"8456:3:87","nodeType":"YulLiteral","src":"8456:3:87","type":"","value":"128"}],"functionName":{"name":"add","nativeSrc":"8441:3:87","nodeType":"YulIdentifier","src":"8441:3:87"},"nativeSrc":"8441:19:87","nodeType":"YulFunctionCall","src":"8441:19:87"}],"functionName":{"name":"calldataload","nativeSrc":"8428:12:87","nodeType":"YulIdentifier","src":"8428:12:87"},"nativeSrc":"8428:33:87","nodeType":"YulFunctionCall","src":"8428:33:87"},"variables":[{"name":"offset_2","nativeSrc":"8416:8:87","nodeType":"YulTypedName","src":"8416:8:87","type":""}]},{"body":{"nativeSrc":"8506:16:87","nodeType":"YulBlock","src":"8506:16:87","statements":[{"expression":{"arguments":[{"kind":"number","nativeSrc":"8515:1:87","nodeType":"YulLiteral","src":"8515:1:87","type":"","value":"0"},{"kind":"number","nativeSrc":"8518:1:87","nodeType":"YulLiteral","src":"8518:1:87","type":"","value":"0"}],"functionName":{"name":"revert","nativeSrc":"8508:6:87","nodeType":"YulIdentifier","src":"8508:6:87"},"nativeSrc":"8508:12:87","nodeType":"YulFunctionCall","src":"8508:12:87"},"nativeSrc":"8508:12:87","nodeType":"YulExpressionStatement","src":"8508:12:87"}]},"condition":{"arguments":[{"name":"offset_2","nativeSrc":"8476:8:87","nodeType":"YulIdentifier","src":"8476:8:87"},{"kind":"number","nativeSrc":"8486:18:87","nodeType":"YulLiteral","src":"8486:18:87","type":"","value":"0xffffffffffffffff"}],"functionName":{"name":"gt","nativeSrc":"8473:2:87","nodeType":"YulIdentifier","src":"8473:2:87"},"nativeSrc":"8473:32:87","nodeType":"YulFunctionCall","src":"8473:32:87"},"nativeSrc":"8470:52:87","nodeType":"YulIf","src":"8470:52:87"},{"nativeSrc":"8531:61:87","nodeType":"YulAssignment","src":"8531:61:87","value":{"arguments":[{"arguments":[{"name":"headStart","nativeSrc":"8562:9:87","nodeType":"YulIdentifier","src":"8562:9:87"},{"name":"offset_2","nativeSrc":"8573:8:87","nodeType":"YulIdentifier","src":"8573:8:87"}],"functionName":{"name":"add","nativeSrc":"8558:3:87","nodeType":"YulIdentifier","src":"8558:3:87"},"nativeSrc":"8558:24:87","nodeType":"YulFunctionCall","src":"8558:24:87"},{"name":"dataEnd","nativeSrc":"8584:7:87","nodeType":"YulIdentifier","src":"8584:7:87"}],"functionName":{"name":"abi_decode_bytes","nativeSrc":"8541:16:87","nodeType":"YulIdentifier","src":"8541:16:87"},"nativeSrc":"8541:51:87","nodeType":"YulFunctionCall","src":"8541:51:87"},"variableNames":[{"name":"value4","nativeSrc":"8531:6:87","nodeType":"YulIdentifier","src":"8531:6:87"}]}]},"name":"abi_decode_tuple_t_string_memory_ptrt_string_memory_ptrt_contract$_IERC20_$8679t_contract$_IInvestStrategy_$20725t_bytes_memory_ptr","nativeSrc":"7530:1068:87","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nativeSrc":"7671:9:87","nodeType":"YulTypedName","src":"7671:9:87","type":""},{"name":"dataEnd","nativeSrc":"7682:7:87","nodeType":"YulTypedName","src":"7682:7:87","type":""}],"returnVariables":[{"name":"value0","nativeSrc":"7694:6:87","nodeType":"YulTypedName","src":"7694:6:87","type":""},{"name":"value1","nativeSrc":"7702:6:87","nodeType":"YulTypedName","src":"7702:6:87","type":""},{"name":"value2","nativeSrc":"7710:6:87","nodeType":"YulTypedName","src":"7710:6:87","type":""},{"name":"value3","nativeSrc":"7718:6:87","nodeType":"YulTypedName","src":"7718:6:87","type":""},{"name":"value4","nativeSrc":"7726:6:87","nodeType":"YulTypedName","src":"7726:6:87","type":""}],"src":"7530:1068:87"},{"body":{"nativeSrc":"8658:325:87","nodeType":"YulBlock","src":"8658:325:87","statements":[{"nativeSrc":"8668:22:87","nodeType":"YulAssignment","src":"8668:22:87","value":{"arguments":[{"kind":"number","nativeSrc":"8682:1:87","nodeType":"YulLiteral","src":"8682:1:87","type":"","value":"1"},{"name":"data","nativeSrc":"8685:4:87","nodeType":"YulIdentifier","src":"8685:4:87"}],"functionName":{"name":"shr","nativeSrc":"8678:3:87","nodeType":"YulIdentifier","src":"8678:3:87"},"nativeSrc":"8678:12:87","nodeType":"YulFunctionCall","src":"8678:12:87"},"variableNames":[{"name":"length","nativeSrc":"8668:6:87","nodeType":"YulIdentifier","src":"8668:6:87"}]},{"nativeSrc":"8699:38:87","nodeType":"YulVariableDeclaration","src":"8699:38:87","value":{"arguments":[{"name":"data","nativeSrc":"8729:4:87","nodeType":"YulIdentifier","src":"8729:4:87"},{"kind":"number","nativeSrc":"8735:1:87","nodeType":"YulLiteral","src":"8735:1:87","type":"","value":"1"}],"functionName":{"name":"and","nativeSrc":"8725:3:87","nodeType":"YulIdentifier","src":"8725:3:87"},"nativeSrc":"8725:12:87","nodeType":"YulFunctionCall","src":"8725:12:87"},"variables":[{"name":"outOfPlaceEncoding","nativeSrc":"8703:18:87","nodeType":"YulTypedName","src":"8703:18:87","type":""}]},{"body":{"nativeSrc":"8776:31:87","nodeType":"YulBlock","src":"8776:31:87","statements":[{"nativeSrc":"8778:27:87","nodeType":"YulAssignment","src":"8778:27:87","value":{"arguments":[{"name":"length","nativeSrc":"8792:6:87","nodeType":"YulIdentifier","src":"8792:6:87"},{"kind":"number","nativeSrc":"8800:4:87","nodeType":"YulLiteral","src":"8800:4:87","type":"","value":"0x7f"}],"functionName":{"name":"and","nativeSrc":"8788:3:87","nodeType":"YulIdentifier","src":"8788:3:87"},"nativeSrc":"8788:17:87","nodeType":"YulFunctionCall","src":"8788:17:87"},"variableNames":[{"name":"length","nativeSrc":"8778:6:87","nodeType":"YulIdentifier","src":"8778:6:87"}]}]},"condition":{"arguments":[{"name":"outOfPlaceEncoding","nativeSrc":"8756:18:87","nodeType":"YulIdentifier","src":"8756:18:87"}],"functionName":{"name":"iszero","nativeSrc":"8749:6:87","nodeType":"YulIdentifier","src":"8749:6:87"},"nativeSrc":"8749:26:87","nodeType":"YulFunctionCall","src":"8749:26:87"},"nativeSrc":"8746:61:87","nodeType":"YulIf","src":"8746:61:87"},{"body":{"nativeSrc":"8866:111:87","nodeType":"YulBlock","src":"8866:111:87","statements":[{"expression":{"arguments":[{"kind":"number","nativeSrc":"8887:1:87","nodeType":"YulLiteral","src":"8887:1:87","type":"","value":"0"},{"arguments":[{"kind":"number","nativeSrc":"8894:3:87","nodeType":"YulLiteral","src":"8894:3:87","type":"","value":"224"},{"kind":"number","nativeSrc":"8899:10:87","nodeType":"YulLiteral","src":"8899:10:87","type":"","value":"0x4e487b71"}],"functionName":{"name":"shl","nativeSrc":"8890:3:87","nodeType":"YulIdentifier","src":"8890:3:87"},"nativeSrc":"8890:20:87","nodeType":"YulFunctionCall","src":"8890:20:87"}],"functionName":{"name":"mstore","nativeSrc":"8880:6:87","nodeType":"YulIdentifier","src":"8880:6:87"},"nativeSrc":"8880:31:87","nodeType":"YulFunctionCall","src":"8880:31:87"},"nativeSrc":"8880:31:87","nodeType":"YulExpressionStatement","src":"8880:31:87"},{"expression":{"arguments":[{"kind":"number","nativeSrc":"8931:1:87","nodeType":"YulLiteral","src":"8931:1:87","type":"","value":"4"},{"kind":"number","nativeSrc":"8934:4:87","nodeType":"YulLiteral","src":"8934:4:87","type":"","value":"0x22"}],"functionName":{"name":"mstore","nativeSrc":"8924:6:87","nodeType":"YulIdentifier","src":"8924:6:87"},"nativeSrc":"8924:15:87","nodeType":"YulFunctionCall","src":"8924:15:87"},"nativeSrc":"8924:15:87","nodeType":"YulExpressionStatement","src":"8924:15:87"},{"expression":{"arguments":[{"kind":"number","nativeSrc":"8959:1:87","nodeType":"YulLiteral","src":"8959:1:87","type":"","value":"0"},{"kind":"number","nativeSrc":"8962:4:87","nodeType":"YulLiteral","src":"8962:4:87","type":"","value":"0x24"}],"functionName":{"name":"revert","nativeSrc":"8952:6:87","nodeType":"YulIdentifier","src":"8952:6:87"},"nativeSrc":"8952:15:87","nodeType":"YulFunctionCall","src":"8952:15:87"},"nativeSrc":"8952:15:87","nodeType":"YulExpressionStatement","src":"8952:15:87"}]},"condition":{"arguments":[{"name":"outOfPlaceEncoding","nativeSrc":"8822:18:87","nodeType":"YulIdentifier","src":"8822:18:87"},{"arguments":[{"name":"length","nativeSrc":"8845:6:87","nodeType":"YulIdentifier","src":"8845:6:87"},{"kind":"number","nativeSrc":"8853:2:87","nodeType":"YulLiteral","src":"8853:2:87","type":"","value":"32"}],"functionName":{"name":"lt","nativeSrc":"8842:2:87","nodeType":"YulIdentifier","src":"8842:2:87"},"nativeSrc":"8842:14:87","nodeType":"YulFunctionCall","src":"8842:14:87"}],"functionName":{"name":"eq","nativeSrc":"8819:2:87","nodeType":"YulIdentifier","src":"8819:2:87"},"nativeSrc":"8819:38:87","nodeType":"YulFunctionCall","src":"8819:38:87"},"nativeSrc":"8816:161:87","nodeType":"YulIf","src":"8816:161:87"}]},"name":"extract_byte_array_length","nativeSrc":"8603:380:87","nodeType":"YulFunctionDefinition","parameters":[{"name":"data","nativeSrc":"8638:4:87","nodeType":"YulTypedName","src":"8638:4:87","type":""}],"returnVariables":[{"name":"length","nativeSrc":"8647:6:87","nodeType":"YulTypedName","src":"8647:6:87","type":""}],"src":"8603:380:87"},{"body":{"nativeSrc":"9020:95:87","nodeType":"YulBlock","src":"9020:95:87","statements":[{"expression":{"arguments":[{"kind":"number","nativeSrc":"9037:1:87","nodeType":"YulLiteral","src":"9037:1:87","type":"","value":"0"},{"arguments":[{"kind":"number","nativeSrc":"9044:3:87","nodeType":"YulLiteral","src":"9044:3:87","type":"","value":"224"},{"kind":"number","nativeSrc":"9049:10:87","nodeType":"YulLiteral","src":"9049:10:87","type":"","value":"0x4e487b71"}],"functionName":{"name":"shl","nativeSrc":"9040:3:87","nodeType":"YulIdentifier","src":"9040:3:87"},"nativeSrc":"9040:20:87","nodeType":"YulFunctionCall","src":"9040:20:87"}],"functionName":{"name":"mstore","nativeSrc":"9030:6:87","nodeType":"YulIdentifier","src":"9030:6:87"},"nativeSrc":"9030:31:87","nodeType":"YulFunctionCall","src":"9030:31:87"},"nativeSrc":"9030:31:87","nodeType":"YulExpressionStatement","src":"9030:31:87"},{"expression":{"arguments":[{"kind":"number","nativeSrc":"9077:1:87","nodeType":"YulLiteral","src":"9077:1:87","type":"","value":"4"},{"kind":"number","nativeSrc":"9080:4:87","nodeType":"YulLiteral","src":"9080:4:87","type":"","value":"0x11"}],"functionName":{"name":"mstore","nativeSrc":"9070:6:87","nodeType":"YulIdentifier","src":"9070:6:87"},"nativeSrc":"9070:15:87","nodeType":"YulFunctionCall","src":"9070:15:87"},"nativeSrc":"9070:15:87","nodeType":"YulExpressionStatement","src":"9070:15:87"},{"expression":{"arguments":[{"kind":"number","nativeSrc":"9101:1:87","nodeType":"YulLiteral","src":"9101:1:87","type":"","value":"0"},{"kind":"number","nativeSrc":"9104:4:87","nodeType":"YulLiteral","src":"9104:4:87","type":"","value":"0x24"}],"functionName":{"name":"revert","nativeSrc":"9094:6:87","nodeType":"YulIdentifier","src":"9094:6:87"},"nativeSrc":"9094:15:87","nodeType":"YulFunctionCall","src":"9094:15:87"},"nativeSrc":"9094:15:87","nodeType":"YulExpressionStatement","src":"9094:15:87"}]},"name":"panic_error_0x11","nativeSrc":"8988:127:87","nodeType":"YulFunctionDefinition","src":"8988:127:87"},{"body":{"nativeSrc":"9166:102:87","nodeType":"YulBlock","src":"9166:102:87","statements":[{"nativeSrc":"9176:38:87","nodeType":"YulAssignment","src":"9176:38:87","value":{"arguments":[{"arguments":[{"name":"x","nativeSrc":"9191:1:87","nodeType":"YulIdentifier","src":"9191:1:87"},{"kind":"number","nativeSrc":"9194:4:87","nodeType":"YulLiteral","src":"9194:4:87","type":"","value":"0xff"}],"functionName":{"name":"and","nativeSrc":"9187:3:87","nodeType":"YulIdentifier","src":"9187:3:87"},"nativeSrc":"9187:12:87","nodeType":"YulFunctionCall","src":"9187:12:87"},{"arguments":[{"name":"y","nativeSrc":"9205:1:87","nodeType":"YulIdentifier","src":"9205:1:87"},{"kind":"number","nativeSrc":"9208:4:87","nodeType":"YulLiteral","src":"9208:4:87","type":"","value":"0xff"}],"functionName":{"name":"and","nativeSrc":"9201:3:87","nodeType":"YulIdentifier","src":"9201:3:87"},"nativeSrc":"9201:12:87","nodeType":"YulFunctionCall","src":"9201:12:87"}],"functionName":{"name":"add","nativeSrc":"9183:3:87","nodeType":"YulIdentifier","src":"9183:3:87"},"nativeSrc":"9183:31:87","nodeType":"YulFunctionCall","src":"9183:31:87"},"variableNames":[{"name":"sum","nativeSrc":"9176:3:87","nodeType":"YulIdentifier","src":"9176:3:87"}]},{"body":{"nativeSrc":"9240:22:87","nodeType":"YulBlock","src":"9240:22:87","statements":[{"expression":{"arguments":[],"functionName":{"name":"panic_error_0x11","nativeSrc":"9242:16:87","nodeType":"YulIdentifier","src":"9242:16:87"},"nativeSrc":"9242:18:87","nodeType":"YulFunctionCall","src":"9242:18:87"},"nativeSrc":"9242:18:87","nodeType":"YulExpressionStatement","src":"9242:18:87"}]},"condition":{"arguments":[{"name":"sum","nativeSrc":"9229:3:87","nodeType":"YulIdentifier","src":"9229:3:87"},{"kind":"number","nativeSrc":"9234:4:87","nodeType":"YulLiteral","src":"9234:4:87","type":"","value":"0xff"}],"functionName":{"name":"gt","nativeSrc":"9226:2:87","nodeType":"YulIdentifier","src":"9226:2:87"},"nativeSrc":"9226:13:87","nodeType":"YulFunctionCall","src":"9226:13:87"},"nativeSrc":"9223:39:87","nodeType":"YulIf","src":"9223:39:87"}]},"name":"checked_add_t_uint8","nativeSrc":"9120:148:87","nodeType":"YulFunctionDefinition","parameters":[{"name":"x","nativeSrc":"9149:1:87","nodeType":"YulTypedName","src":"9149:1:87","type":""},{"name":"y","nativeSrc":"9152:1:87","nodeType":"YulTypedName","src":"9152:1:87","type":""}],"returnVariables":[{"name":"sum","nativeSrc":"9158:3:87","nodeType":"YulTypedName","src":"9158:3:87","type":""}],"src":"9120:148:87"},{"body":{"nativeSrc":"9354:103:87","nodeType":"YulBlock","src":"9354:103:87","statements":[{"body":{"nativeSrc":"9400:16:87","nodeType":"YulBlock","src":"9400:16:87","statements":[{"expression":{"arguments":[{"kind":"number","nativeSrc":"9409:1:87","nodeType":"YulLiteral","src":"9409:1:87","type":"","value":"0"},{"kind":"number","nativeSrc":"9412:1:87","nodeType":"YulLiteral","src":"9412:1:87","type":"","value":"0"}],"functionName":{"name":"revert","nativeSrc":"9402:6:87","nodeType":"YulIdentifier","src":"9402:6:87"},"nativeSrc":"9402:12:87","nodeType":"YulFunctionCall","src":"9402:12:87"},"nativeSrc":"9402:12:87","nodeType":"YulExpressionStatement","src":"9402:12:87"}]},"condition":{"arguments":[{"arguments":[{"name":"dataEnd","nativeSrc":"9375:7:87","nodeType":"YulIdentifier","src":"9375:7:87"},{"name":"headStart","nativeSrc":"9384:9:87","nodeType":"YulIdentifier","src":"9384:9:87"}],"functionName":{"name":"sub","nativeSrc":"9371:3:87","nodeType":"YulIdentifier","src":"9371:3:87"},"nativeSrc":"9371:23:87","nodeType":"YulFunctionCall","src":"9371:23:87"},{"kind":"number","nativeSrc":"9396:2:87","nodeType":"YulLiteral","src":"9396:2:87","type":"","value":"32"}],"functionName":{"name":"slt","nativeSrc":"9367:3:87","nodeType":"YulIdentifier","src":"9367:3:87"},"nativeSrc":"9367:32:87","nodeType":"YulFunctionCall","src":"9367:32:87"},"nativeSrc":"9364:52:87","nodeType":"YulIf","src":"9364:52:87"},{"nativeSrc":"9425:26:87","nodeType":"YulAssignment","src":"9425:26:87","value":{"arguments":[{"name":"headStart","nativeSrc":"9441:9:87","nodeType":"YulIdentifier","src":"9441:9:87"}],"functionName":{"name":"mload","nativeSrc":"9435:5:87","nodeType":"YulIdentifier","src":"9435:5:87"},"nativeSrc":"9435:16:87","nodeType":"YulFunctionCall","src":"9435:16:87"},"variableNames":[{"name":"value0","nativeSrc":"9425:6:87","nodeType":"YulIdentifier","src":"9425:6:87"}]}]},"name":"abi_decode_tuple_t_bytes32_fromMemory","nativeSrc":"9273:184:87","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nativeSrc":"9320:9:87","nodeType":"YulTypedName","src":"9320:9:87","type":""},{"name":"dataEnd","nativeSrc":"9331:7:87","nodeType":"YulTypedName","src":"9331:7:87","type":""}],"returnVariables":[{"name":"value0","nativeSrc":"9343:6:87","nodeType":"YulTypedName","src":"9343:6:87","type":""}],"src":"9273:184:87"},{"body":{"nativeSrc":"9619:188:87","nodeType":"YulBlock","src":"9619:188:87","statements":[{"nativeSrc":"9629:26:87","nodeType":"YulAssignment","src":"9629:26:87","value":{"arguments":[{"name":"headStart","nativeSrc":"9641:9:87","nodeType":"YulIdentifier","src":"9641:9:87"},{"kind":"number","nativeSrc":"9652:2:87","nodeType":"YulLiteral","src":"9652:2:87","type":"","value":"96"}],"functionName":{"name":"add","nativeSrc":"9637:3:87","nodeType":"YulIdentifier","src":"9637:3:87"},"nativeSrc":"9637:18:87","nodeType":"YulFunctionCall","src":"9637:18:87"},"variableNames":[{"name":"tail","nativeSrc":"9629:4:87","nodeType":"YulIdentifier","src":"9629:4:87"}]},{"expression":{"arguments":[{"name":"headStart","nativeSrc":"9671:9:87","nodeType":"YulIdentifier","src":"9671:9:87"},{"arguments":[{"name":"value0","nativeSrc":"9686:6:87","nodeType":"YulIdentifier","src":"9686:6:87"},{"arguments":[{"arguments":[{"kind":"number","nativeSrc":"9702:3:87","nodeType":"YulLiteral","src":"9702:3:87","type":"","value":"160"},{"kind":"number","nativeSrc":"9707:1:87","nodeType":"YulLiteral","src":"9707:1:87","type":"","value":"1"}],"functionName":{"name":"shl","nativeSrc":"9698:3:87","nodeType":"YulIdentifier","src":"9698:3:87"},"nativeSrc":"9698:11:87","nodeType":"YulFunctionCall","src":"9698:11:87"},{"kind":"number","nativeSrc":"9711:1:87","nodeType":"YulLiteral","src":"9711:1:87","type":"","value":"1"}],"functionName":{"name":"sub","nativeSrc":"9694:3:87","nodeType":"YulIdentifier","src":"9694:3:87"},"nativeSrc":"9694:19:87","nodeType":"YulFunctionCall","src":"9694:19:87"}],"functionName":{"name":"and","nativeSrc":"9682:3:87","nodeType":"YulIdentifier","src":"9682:3:87"},"nativeSrc":"9682:32:87","nodeType":"YulFunctionCall","src":"9682:32:87"}],"functionName":{"name":"mstore","nativeSrc":"9664:6:87","nodeType":"YulIdentifier","src":"9664:6:87"},"nativeSrc":"9664:51:87","nodeType":"YulFunctionCall","src":"9664:51:87"},"nativeSrc":"9664:51:87","nodeType":"YulExpressionStatement","src":"9664:51:87"},{"expression":{"arguments":[{"arguments":[{"name":"headStart","nativeSrc":"9735:9:87","nodeType":"YulIdentifier","src":"9735:9:87"},{"kind":"number","nativeSrc":"9746:2:87","nodeType":"YulLiteral","src":"9746:2:87","type":"","value":"32"}],"functionName":{"name":"add","nativeSrc":"9731:3:87","nodeType":"YulIdentifier","src":"9731:3:87"},"nativeSrc":"9731:18:87","nodeType":"YulFunctionCall","src":"9731:18:87"},{"name":"value1","nativeSrc":"9751:6:87","nodeType":"YulIdentifier","src":"9751:6:87"}],"functionName":{"name":"mstore","nativeSrc":"9724:6:87","nodeType":"YulIdentifier","src":"9724:6:87"},"nativeSrc":"9724:34:87","nodeType":"YulFunctionCall","src":"9724:34:87"},"nativeSrc":"9724:34:87","nodeType":"YulExpressionStatement","src":"9724:34:87"},{"expression":{"arguments":[{"arguments":[{"name":"headStart","nativeSrc":"9778:9:87","nodeType":"YulIdentifier","src":"9778:9:87"},{"kind":"number","nativeSrc":"9789:2:87","nodeType":"YulLiteral","src":"9789:2:87","type":"","value":"64"}],"functionName":{"name":"add","nativeSrc":"9774:3:87","nodeType":"YulIdentifier","src":"9774:3:87"},"nativeSrc":"9774:18:87","nodeType":"YulFunctionCall","src":"9774:18:87"},{"name":"value2","nativeSrc":"9794:6:87","nodeType":"YulIdentifier","src":"9794:6:87"}],"functionName":{"name":"mstore","nativeSrc":"9767:6:87","nodeType":"YulIdentifier","src":"9767:6:87"},"nativeSrc":"9767:34:87","nodeType":"YulFunctionCall","src":"9767:34:87"},"nativeSrc":"9767:34:87","nodeType":"YulExpressionStatement","src":"9767:34:87"}]},"name":"abi_encode_tuple_t_address_t_uint256_t_uint256__to_t_address_t_uint256_t_uint256__fromStack_reversed","nativeSrc":"9462:345:87","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nativeSrc":"9572:9:87","nodeType":"YulTypedName","src":"9572:9:87","type":""},{"name":"value2","nativeSrc":"9583:6:87","nodeType":"YulTypedName","src":"9583:6:87","type":""},{"name":"value1","nativeSrc":"9591:6:87","nodeType":"YulTypedName","src":"9591:6:87","type":""},{"name":"value0","nativeSrc":"9599:6:87","nodeType":"YulTypedName","src":"9599:6:87","type":""}],"returnVariables":[{"name":"tail","nativeSrc":"9610:4:87","nodeType":"YulTypedName","src":"9610:4:87","type":""}],"src":"9462:345:87"},{"body":{"nativeSrc":"9920:101:87","nodeType":"YulBlock","src":"9920:101:87","statements":[{"nativeSrc":"9930:26:87","nodeType":"YulAssignment","src":"9930:26:87","value":{"arguments":[{"name":"headStart","nativeSrc":"9942:9:87","nodeType":"YulIdentifier","src":"9942:9:87"},{"kind":"number","nativeSrc":"9953:2:87","nodeType":"YulLiteral","src":"9953:2:87","type":"","value":"32"}],"functionName":{"name":"add","nativeSrc":"9938:3:87","nodeType":"YulIdentifier","src":"9938:3:87"},"nativeSrc":"9938:18:87","nodeType":"YulFunctionCall","src":"9938:18:87"},"variableNames":[{"name":"tail","nativeSrc":"9930:4:87","nodeType":"YulIdentifier","src":"9930:4:87"}]},{"expression":{"arguments":[{"name":"headStart","nativeSrc":"9972:9:87","nodeType":"YulIdentifier","src":"9972:9:87"},{"arguments":[{"name":"value0","nativeSrc":"9987:6:87","nodeType":"YulIdentifier","src":"9987:6:87"},{"kind":"number","nativeSrc":"9995:18:87","nodeType":"YulLiteral","src":"9995:18:87","type":"","value":"0xffffffffffffffff"}],"functionName":{"name":"and","nativeSrc":"9983:3:87","nodeType":"YulIdentifier","src":"9983:3:87"},"nativeSrc":"9983:31:87","nodeType":"YulFunctionCall","src":"9983:31:87"}],"functionName":{"name":"mstore","nativeSrc":"9965:6:87","nodeType":"YulIdentifier","src":"9965:6:87"},"nativeSrc":"9965:50:87","nodeType":"YulFunctionCall","src":"9965:50:87"},"nativeSrc":"9965:50:87","nodeType":"YulExpressionStatement","src":"9965:50:87"}]},"name":"abi_encode_tuple_t_rational_1_by_1__to_t_uint64__fromStack_reversed","nativeSrc":"9812:209:87","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nativeSrc":"9889:9:87","nodeType":"YulTypedName","src":"9889:9:87","type":""},{"name":"value0","nativeSrc":"9900:6:87","nodeType":"YulTypedName","src":"9900:6:87","type":""}],"returnVariables":[{"name":"tail","nativeSrc":"9911:4:87","nodeType":"YulTypedName","src":"9911:4:87","type":""}],"src":"9812:209:87"},{"body":{"nativeSrc":"10107:103:87","nodeType":"YulBlock","src":"10107:103:87","statements":[{"body":{"nativeSrc":"10153:16:87","nodeType":"YulBlock","src":"10153:16:87","statements":[{"expression":{"arguments":[{"kind":"number","nativeSrc":"10162:1:87","nodeType":"YulLiteral","src":"10162:1:87","type":"","value":"0"},{"kind":"number","nativeSrc":"10165:1:87","nodeType":"YulLiteral","src":"10165:1:87","type":"","value":"0"}],"functionName":{"name":"revert","nativeSrc":"10155:6:87","nodeType":"YulIdentifier","src":"10155:6:87"},"nativeSrc":"10155:12:87","nodeType":"YulFunctionCall","src":"10155:12:87"},"nativeSrc":"10155:12:87","nodeType":"YulExpressionStatement","src":"10155:12:87"}]},"condition":{"arguments":[{"arguments":[{"name":"dataEnd","nativeSrc":"10128:7:87","nodeType":"YulIdentifier","src":"10128:7:87"},{"name":"headStart","nativeSrc":"10137:9:87","nodeType":"YulIdentifier","src":"10137:9:87"}],"functionName":{"name":"sub","nativeSrc":"10124:3:87","nodeType":"YulIdentifier","src":"10124:3:87"},"nativeSrc":"10124:23:87","nodeType":"YulFunctionCall","src":"10124:23:87"},{"kind":"number","nativeSrc":"10149:2:87","nodeType":"YulLiteral","src":"10149:2:87","type":"","value":"32"}],"functionName":{"name":"slt","nativeSrc":"10120:3:87","nodeType":"YulIdentifier","src":"10120:3:87"},"nativeSrc":"10120:32:87","nodeType":"YulFunctionCall","src":"10120:32:87"},"nativeSrc":"10117:52:87","nodeType":"YulIf","src":"10117:52:87"},{"nativeSrc":"10178:26:87","nodeType":"YulAssignment","src":"10178:26:87","value":{"arguments":[{"name":"headStart","nativeSrc":"10194:9:87","nodeType":"YulIdentifier","src":"10194:9:87"}],"functionName":{"name":"mload","nativeSrc":"10188:5:87","nodeType":"YulIdentifier","src":"10188:5:87"},"nativeSrc":"10188:16:87","nodeType":"YulFunctionCall","src":"10188:16:87"},"variableNames":[{"name":"value0","nativeSrc":"10178:6:87","nodeType":"YulIdentifier","src":"10178:6:87"}]}]},"name":"abi_decode_tuple_t_uint256_fromMemory","nativeSrc":"10026:184:87","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nativeSrc":"10073:9:87","nodeType":"YulTypedName","src":"10073:9:87","type":""},{"name":"dataEnd","nativeSrc":"10084:7:87","nodeType":"YulTypedName","src":"10084:7:87","type":""}],"returnVariables":[{"name":"value0","nativeSrc":"10096:6:87","nodeType":"YulTypedName","src":"10096:6:87","type":""}],"src":"10026:184:87"},{"body":{"nativeSrc":"10263:77:87","nodeType":"YulBlock","src":"10263:77:87","statements":[{"nativeSrc":"10273:16:87","nodeType":"YulAssignment","src":"10273:16:87","value":{"arguments":[{"name":"x","nativeSrc":"10284:1:87","nodeType":"YulIdentifier","src":"10284:1:87"},{"name":"y","nativeSrc":"10287:1:87","nodeType":"YulIdentifier","src":"10287:1:87"}],"functionName":{"name":"add","nativeSrc":"10280:3:87","nodeType":"YulIdentifier","src":"10280:3:87"},"nativeSrc":"10280:9:87","nodeType":"YulFunctionCall","src":"10280:9:87"},"variableNames":[{"name":"sum","nativeSrc":"10273:3:87","nodeType":"YulIdentifier","src":"10273:3:87"}]},{"body":{"nativeSrc":"10312:22:87","nodeType":"YulBlock","src":"10312:22:87","statements":[{"expression":{"arguments":[],"functionName":{"name":"panic_error_0x11","nativeSrc":"10314:16:87","nodeType":"YulIdentifier","src":"10314:16:87"},"nativeSrc":"10314:18:87","nodeType":"YulFunctionCall","src":"10314:18:87"},"nativeSrc":"10314:18:87","nodeType":"YulExpressionStatement","src":"10314:18:87"}]},"condition":{"arguments":[{"name":"x","nativeSrc":"10304:1:87","nodeType":"YulIdentifier","src":"10304:1:87"},{"name":"sum","nativeSrc":"10307:3:87","nodeType":"YulIdentifier","src":"10307:3:87"}],"functionName":{"name":"gt","nativeSrc":"10301:2:87","nodeType":"YulIdentifier","src":"10301:2:87"},"nativeSrc":"10301:10:87","nodeType":"YulFunctionCall","src":"10301:10:87"},"nativeSrc":"10298:36:87","nodeType":"YulIf","src":"10298:36:87"}]},"name":"checked_add_t_uint256","nativeSrc":"10215:125:87","nodeType":"YulFunctionDefinition","parameters":[{"name":"x","nativeSrc":"10246:1:87","nodeType":"YulTypedName","src":"10246:1:87","type":""},{"name":"y","nativeSrc":"10249:1:87","nodeType":"YulTypedName","src":"10249:1:87","type":""}],"returnVariables":[{"name":"sum","nativeSrc":"10255:3:87","nodeType":"YulTypedName","src":"10255:3:87","type":""}],"src":"10215:125:87"},{"body":{"nativeSrc":"10414:306:87","nodeType":"YulBlock","src":"10414:306:87","statements":[{"nativeSrc":"10424:10:87","nodeType":"YulAssignment","src":"10424:10:87","value":{"kind":"number","nativeSrc":"10433:1:87","nodeType":"YulLiteral","src":"10433:1:87","type":"","value":"1"},"variableNames":[{"name":"power","nativeSrc":"10424:5:87","nodeType":"YulIdentifier","src":"10424:5:87"}]},{"nativeSrc":"10443:13:87","nodeType":"YulAssignment","src":"10443:13:87","value":{"name":"_base","nativeSrc":"10451:5:87","nodeType":"YulIdentifier","src":"10451:5:87"},"variableNames":[{"name":"base","nativeSrc":"10443:4:87","nodeType":"YulIdentifier","src":"10443:4:87"}]},{"body":{"nativeSrc":"10501:213:87","nodeType":"YulBlock","src":"10501:213:87","statements":[{"body":{"nativeSrc":"10543:22:87","nodeType":"YulBlock","src":"10543:22:87","statements":[{"expression":{"arguments":[],"functionName":{"name":"panic_error_0x11","nativeSrc":"10545:16:87","nodeType":"YulIdentifier","src":"10545:16:87"},"nativeSrc":"10545:18:87","nodeType":"YulFunctionCall","src":"10545:18:87"},"nativeSrc":"10545:18:87","nodeType":"YulExpressionStatement","src":"10545:18:87"}]},"condition":{"arguments":[{"name":"base","nativeSrc":"10521:4:87","nodeType":"YulIdentifier","src":"10521:4:87"},{"arguments":[{"name":"max","nativeSrc":"10531:3:87","nodeType":"YulIdentifier","src":"10531:3:87"},{"name":"base","nativeSrc":"10536:4:87","nodeType":"YulIdentifier","src":"10536:4:87"}],"functionName":{"name":"div","nativeSrc":"10527:3:87","nodeType":"YulIdentifier","src":"10527:3:87"},"nativeSrc":"10527:14:87","nodeType":"YulFunctionCall","src":"10527:14:87"}],"functionName":{"name":"gt","nativeSrc":"10518:2:87","nodeType":"YulIdentifier","src":"10518:2:87"},"nativeSrc":"10518:24:87","nodeType":"YulFunctionCall","src":"10518:24:87"},"nativeSrc":"10515:50:87","nodeType":"YulIf","src":"10515:50:87"},{"body":{"nativeSrc":"10598:29:87","nodeType":"YulBlock","src":"10598:29:87","statements":[{"nativeSrc":"10600:25:87","nodeType":"YulAssignment","src":"10600:25:87","value":{"arguments":[{"name":"power","nativeSrc":"10613:5:87","nodeType":"YulIdentifier","src":"10613:5:87"},{"name":"base","nativeSrc":"10620:4:87","nodeType":"YulIdentifier","src":"10620:4:87"}],"functionName":{"name":"mul","nativeSrc":"10609:3:87","nodeType":"YulIdentifier","src":"10609:3:87"},"nativeSrc":"10609:16:87","nodeType":"YulFunctionCall","src":"10609:16:87"},"variableNames":[{"name":"power","nativeSrc":"10600:5:87","nodeType":"YulIdentifier","src":"10600:5:87"}]}]},"condition":{"arguments":[{"name":"exponent","nativeSrc":"10585:8:87","nodeType":"YulIdentifier","src":"10585:8:87"},{"kind":"number","nativeSrc":"10595:1:87","nodeType":"YulLiteral","src":"10595:1:87","type":"","value":"1"}],"functionName":{"name":"and","nativeSrc":"10581:3:87","nodeType":"YulIdentifier","src":"10581:3:87"},"nativeSrc":"10581:16:87","nodeType":"YulFunctionCall","src":"10581:16:87"},"nativeSrc":"10578:49:87","nodeType":"YulIf","src":"10578:49:87"},{"nativeSrc":"10640:23:87","nodeType":"YulAssignment","src":"10640:23:87","value":{"arguments":[{"name":"base","nativeSrc":"10652:4:87","nodeType":"YulIdentifier","src":"10652:4:87"},{"name":"base","nativeSrc":"10658:4:87","nodeType":"YulIdentifier","src":"10658:4:87"}],"functionName":{"name":"mul","nativeSrc":"10648:3:87","nodeType":"YulIdentifier","src":"10648:3:87"},"nativeSrc":"10648:15:87","nodeType":"YulFunctionCall","src":"10648:15:87"},"variableNames":[{"name":"base","nativeSrc":"10640:4:87","nodeType":"YulIdentifier","src":"10640:4:87"}]},{"nativeSrc":"10676:28:87","nodeType":"YulAssignment","src":"10676:28:87","value":{"arguments":[{"kind":"number","nativeSrc":"10692:1:87","nodeType":"YulLiteral","src":"10692:1:87","type":"","value":"1"},{"name":"exponent","nativeSrc":"10695:8:87","nodeType":"YulIdentifier","src":"10695:8:87"}],"functionName":{"name":"shr","nativeSrc":"10688:3:87","nodeType":"YulIdentifier","src":"10688:3:87"},"nativeSrc":"10688:16:87","nodeType":"YulFunctionCall","src":"10688:16:87"},"variableNames":[{"name":"exponent","nativeSrc":"10676:8:87","nodeType":"YulIdentifier","src":"10676:8:87"}]}]},"condition":{"arguments":[{"name":"exponent","nativeSrc":"10476:8:87","nodeType":"YulIdentifier","src":"10476:8:87"},{"kind":"number","nativeSrc":"10486:1:87","nodeType":"YulLiteral","src":"10486:1:87","type":"","value":"1"}],"functionName":{"name":"gt","nativeSrc":"10473:2:87","nodeType":"YulIdentifier","src":"10473:2:87"},"nativeSrc":"10473:15:87","nodeType":"YulFunctionCall","src":"10473:15:87"},"nativeSrc":"10465:249:87","nodeType":"YulForLoop","post":{"nativeSrc":"10489:3:87","nodeType":"YulBlock","src":"10489:3:87","statements":[]},"pre":{"nativeSrc":"10469:3:87","nodeType":"YulBlock","src":"10469:3:87","statements":[]},"src":"10465:249:87"}]},"name":"checked_exp_helper","nativeSrc":"10345:375:87","nodeType":"YulFunctionDefinition","parameters":[{"name":"_base","nativeSrc":"10373:5:87","nodeType":"YulTypedName","src":"10373:5:87","type":""},{"name":"exponent","nativeSrc":"10380:8:87","nodeType":"YulTypedName","src":"10380:8:87","type":""},{"name":"max","nativeSrc":"10390:3:87","nodeType":"YulTypedName","src":"10390:3:87","type":""}],"returnVariables":[{"name":"power","nativeSrc":"10398:5:87","nodeType":"YulTypedName","src":"10398:5:87","type":""},{"name":"base","nativeSrc":"10405:4:87","nodeType":"YulTypedName","src":"10405:4:87","type":""}],"src":"10345:375:87"},{"body":{"nativeSrc":"10784:843:87","nodeType":"YulBlock","src":"10784:843:87","statements":[{"body":{"nativeSrc":"10822:52:87","nodeType":"YulBlock","src":"10822:52:87","statements":[{"nativeSrc":"10836:10:87","nodeType":"YulAssignment","src":"10836:10:87","value":{"kind":"number","nativeSrc":"10845:1:87","nodeType":"YulLiteral","src":"10845:1:87","type":"","value":"1"},"variableNames":[{"name":"power","nativeSrc":"10836:5:87","nodeType":"YulIdentifier","src":"10836:5:87"}]},{"nativeSrc":"10859:5:87","nodeType":"YulLeave","src":"10859:5:87"}]},"condition":{"arguments":[{"name":"exponent","nativeSrc":"10804:8:87","nodeType":"YulIdentifier","src":"10804:8:87"}],"functionName":{"name":"iszero","nativeSrc":"10797:6:87","nodeType":"YulIdentifier","src":"10797:6:87"},"nativeSrc":"10797:16:87","nodeType":"YulFunctionCall","src":"10797:16:87"},"nativeSrc":"10794:80:87","nodeType":"YulIf","src":"10794:80:87"},{"body":{"nativeSrc":"10907:52:87","nodeType":"YulBlock","src":"10907:52:87","statements":[{"nativeSrc":"10921:10:87","nodeType":"YulAssignment","src":"10921:10:87","value":{"kind":"number","nativeSrc":"10930:1:87","nodeType":"YulLiteral","src":"10930:1:87","type":"","value":"0"},"variableNames":[{"name":"power","nativeSrc":"10921:5:87","nodeType":"YulIdentifier","src":"10921:5:87"}]},{"nativeSrc":"10944:5:87","nodeType":"YulLeave","src":"10944:5:87"}]},"condition":{"arguments":[{"name":"base","nativeSrc":"10893:4:87","nodeType":"YulIdentifier","src":"10893:4:87"}],"functionName":{"name":"iszero","nativeSrc":"10886:6:87","nodeType":"YulIdentifier","src":"10886:6:87"},"nativeSrc":"10886:12:87","nodeType":"YulFunctionCall","src":"10886:12:87"},"nativeSrc":"10883:76:87","nodeType":"YulIf","src":"10883:76:87"},{"cases":[{"body":{"nativeSrc":"10995:52:87","nodeType":"YulBlock","src":"10995:52:87","statements":[{"nativeSrc":"11009:10:87","nodeType":"YulAssignment","src":"11009:10:87","value":{"kind":"number","nativeSrc":"11018:1:87","nodeType":"YulLiteral","src":"11018:1:87","type":"","value":"1"},"variableNames":[{"name":"power","nativeSrc":"11009:5:87","nodeType":"YulIdentifier","src":"11009:5:87"}]},{"nativeSrc":"11032:5:87","nodeType":"YulLeave","src":"11032:5:87"}]},"nativeSrc":"10988:59:87","nodeType":"YulCase","src":"10988:59:87","value":{"kind":"number","nativeSrc":"10993:1:87","nodeType":"YulLiteral","src":"10993:1:87","type":"","value":"1"}},{"body":{"nativeSrc":"11063:167:87","nodeType":"YulBlock","src":"11063:167:87","statements":[{"body":{"nativeSrc":"11098:22:87","nodeType":"YulBlock","src":"11098:22:87","statements":[{"expression":{"arguments":[],"functionName":{"name":"panic_error_0x11","nativeSrc":"11100:16:87","nodeType":"YulIdentifier","src":"11100:16:87"},"nativeSrc":"11100:18:87","nodeType":"YulFunctionCall","src":"11100:18:87"},"nativeSrc":"11100:18:87","nodeType":"YulExpressionStatement","src":"11100:18:87"}]},"condition":{"arguments":[{"name":"exponent","nativeSrc":"11083:8:87","nodeType":"YulIdentifier","src":"11083:8:87"},{"kind":"number","nativeSrc":"11093:3:87","nodeType":"YulLiteral","src":"11093:3:87","type":"","value":"255"}],"functionName":{"name":"gt","nativeSrc":"11080:2:87","nodeType":"YulIdentifier","src":"11080:2:87"},"nativeSrc":"11080:17:87","nodeType":"YulFunctionCall","src":"11080:17:87"},"nativeSrc":"11077:43:87","nodeType":"YulIf","src":"11077:43:87"},{"nativeSrc":"11133:25:87","nodeType":"YulAssignment","src":"11133:25:87","value":{"arguments":[{"name":"exponent","nativeSrc":"11146:8:87","nodeType":"YulIdentifier","src":"11146:8:87"},{"kind":"number","nativeSrc":"11156:1:87","nodeType":"YulLiteral","src":"11156:1:87","type":"","value":"1"}],"functionName":{"name":"shl","nativeSrc":"11142:3:87","nodeType":"YulIdentifier","src":"11142:3:87"},"nativeSrc":"11142:16:87","nodeType":"YulFunctionCall","src":"11142:16:87"},"variableNames":[{"name":"power","nativeSrc":"11133:5:87","nodeType":"YulIdentifier","src":"11133:5:87"}]},{"nativeSrc":"11171:11:87","nodeType":"YulVariableDeclaration","src":"11171:11:87","value":{"kind":"number","nativeSrc":"11181:1:87","nodeType":"YulLiteral","src":"11181:1:87","type":"","value":"0"},"variables":[{"name":"_1","nativeSrc":"11175:2:87","nodeType":"YulTypedName","src":"11175:2:87","type":""}]},{"nativeSrc":"11195:7:87","nodeType":"YulAssignment","src":"11195:7:87","value":{"kind":"number","nativeSrc":"11201:1:87","nodeType":"YulLiteral","src":"11201:1:87","type":"","value":"0"},"variableNames":[{"name":"_1","nativeSrc":"11195:2:87","nodeType":"YulIdentifier","src":"11195:2:87"}]},{"nativeSrc":"11215:5:87","nodeType":"YulLeave","src":"11215:5:87"}]},"nativeSrc":"11056:174:87","nodeType":"YulCase","src":"11056:174:87","value":{"kind":"number","nativeSrc":"11061:1:87","nodeType":"YulLiteral","src":"11061:1:87","type":"","value":"2"}}],"expression":{"name":"base","nativeSrc":"10975:4:87","nodeType":"YulIdentifier","src":"10975:4:87"},"nativeSrc":"10968:262:87","nodeType":"YulSwitch","src":"10968:262:87"},{"body":{"nativeSrc":"11328:114:87","nodeType":"YulBlock","src":"11328:114:87","statements":[{"nativeSrc":"11342:28:87","nodeType":"YulAssignment","src":"11342:28:87","value":{"arguments":[{"name":"base","nativeSrc":"11355:4:87","nodeType":"YulIdentifier","src":"11355:4:87"},{"name":"exponent","nativeSrc":"11361:8:87","nodeType":"YulIdentifier","src":"11361:8:87"}],"functionName":{"name":"exp","nativeSrc":"11351:3:87","nodeType":"YulIdentifier","src":"11351:3:87"},"nativeSrc":"11351:19:87","nodeType":"YulFunctionCall","src":"11351:19:87"},"variableNames":[{"name":"power","nativeSrc":"11342:5:87","nodeType":"YulIdentifier","src":"11342:5:87"}]},{"nativeSrc":"11383:11:87","nodeType":"YulVariableDeclaration","src":"11383:11:87","value":{"kind":"number","nativeSrc":"11393:1:87","nodeType":"YulLiteral","src":"11393:1:87","type":"","value":"0"},"variables":[{"name":"_2","nativeSrc":"11387:2:87","nodeType":"YulTypedName","src":"11387:2:87","type":""}]},{"nativeSrc":"11407:7:87","nodeType":"YulAssignment","src":"11407:7:87","value":{"kind":"number","nativeSrc":"11413:1:87","nodeType":"YulLiteral","src":"11413:1:87","type":"","value":"0"},"variableNames":[{"name":"_2","nativeSrc":"11407:2:87","nodeType":"YulIdentifier","src":"11407:2:87"}]},{"nativeSrc":"11427:5:87","nodeType":"YulLeave","src":"11427:5:87"}]},"condition":{"arguments":[{"arguments":[{"arguments":[{"name":"base","nativeSrc":"11252:4:87","nodeType":"YulIdentifier","src":"11252:4:87"},{"kind":"number","nativeSrc":"11258:2:87","nodeType":"YulLiteral","src":"11258:2:87","type":"","value":"11"}],"functionName":{"name":"lt","nativeSrc":"11249:2:87","nodeType":"YulIdentifier","src":"11249:2:87"},"nativeSrc":"11249:12:87","nodeType":"YulFunctionCall","src":"11249:12:87"},{"arguments":[{"name":"exponent","nativeSrc":"11266:8:87","nodeType":"YulIdentifier","src":"11266:8:87"},{"kind":"number","nativeSrc":"11276:2:87","nodeType":"YulLiteral","src":"11276:2:87","type":"","value":"78"}],"functionName":{"name":"lt","nativeSrc":"11263:2:87","nodeType":"YulIdentifier","src":"11263:2:87"},"nativeSrc":"11263:16:87","nodeType":"YulFunctionCall","src":"11263:16:87"}],"functionName":{"name":"and","nativeSrc":"11245:3:87","nodeType":"YulIdentifier","src":"11245:3:87"},"nativeSrc":"11245:35:87","nodeType":"YulFunctionCall","src":"11245:35:87"},{"arguments":[{"arguments":[{"name":"base","nativeSrc":"11289:4:87","nodeType":"YulIdentifier","src":"11289:4:87"},{"kind":"number","nativeSrc":"11295:3:87","nodeType":"YulLiteral","src":"11295:3:87","type":"","value":"307"}],"functionName":{"name":"lt","nativeSrc":"11286:2:87","nodeType":"YulIdentifier","src":"11286:2:87"},"nativeSrc":"11286:13:87","nodeType":"YulFunctionCall","src":"11286:13:87"},{"arguments":[{"name":"exponent","nativeSrc":"11304:8:87","nodeType":"YulIdentifier","src":"11304:8:87"},{"kind":"number","nativeSrc":"11314:2:87","nodeType":"YulLiteral","src":"11314:2:87","type":"","value":"32"}],"functionName":{"name":"lt","nativeSrc":"11301:2:87","nodeType":"YulIdentifier","src":"11301:2:87"},"nativeSrc":"11301:16:87","nodeType":"YulFunctionCall","src":"11301:16:87"}],"functionName":{"name":"and","nativeSrc":"11282:3:87","nodeType":"YulIdentifier","src":"11282:3:87"},"nativeSrc":"11282:36:87","nodeType":"YulFunctionCall","src":"11282:36:87"}],"functionName":{"name":"or","nativeSrc":"11242:2:87","nodeType":"YulIdentifier","src":"11242:2:87"},"nativeSrc":"11242:77:87","nodeType":"YulFunctionCall","src":"11242:77:87"},"nativeSrc":"11239:203:87","nodeType":"YulIf","src":"11239:203:87"},{"nativeSrc":"11451:65:87","nodeType":"YulVariableDeclaration","src":"11451:65:87","value":{"arguments":[{"name":"base","nativeSrc":"11493:4:87","nodeType":"YulIdentifier","src":"11493:4:87"},{"name":"exponent","nativeSrc":"11499:8:87","nodeType":"YulIdentifier","src":"11499:8:87"},{"arguments":[{"kind":"number","nativeSrc":"11513:1:87","nodeType":"YulLiteral","src":"11513:1:87","type":"","value":"0"}],"functionName":{"name":"not","nativeSrc":"11509:3:87","nodeType":"YulIdentifier","src":"11509:3:87"},"nativeSrc":"11509:6:87","nodeType":"YulFunctionCall","src":"11509:6:87"}],"functionName":{"name":"checked_exp_helper","nativeSrc":"11474:18:87","nodeType":"YulIdentifier","src":"11474:18:87"},"nativeSrc":"11474:42:87","nodeType":"YulFunctionCall","src":"11474:42:87"},"variables":[{"name":"power_1","nativeSrc":"11455:7:87","nodeType":"YulTypedName","src":"11455:7:87","type":""},{"name":"base_1","nativeSrc":"11464:6:87","nodeType":"YulTypedName","src":"11464:6:87","type":""}]},{"body":{"nativeSrc":"11561:22:87","nodeType":"YulBlock","src":"11561:22:87","statements":[{"expression":{"arguments":[],"functionName":{"name":"panic_error_0x11","nativeSrc":"11563:16:87","nodeType":"YulIdentifier","src":"11563:16:87"},"nativeSrc":"11563:18:87","nodeType":"YulFunctionCall","src":"11563:18:87"},"nativeSrc":"11563:18:87","nodeType":"YulExpressionStatement","src":"11563:18:87"}]},"condition":{"arguments":[{"name":"power_1","nativeSrc":"11531:7:87","nodeType":"YulIdentifier","src":"11531:7:87"},{"arguments":[{"arguments":[{"kind":"number","nativeSrc":"11548:1:87","nodeType":"YulLiteral","src":"11548:1:87","type":"","value":"0"}],"functionName":{"name":"not","nativeSrc":"11544:3:87","nodeType":"YulIdentifier","src":"11544:3:87"},"nativeSrc":"11544:6:87","nodeType":"YulFunctionCall","src":"11544:6:87"},{"name":"base_1","nativeSrc":"11552:6:87","nodeType":"YulIdentifier","src":"11552:6:87"}],"functionName":{"name":"div","nativeSrc":"11540:3:87","nodeType":"YulIdentifier","src":"11540:3:87"},"nativeSrc":"11540:19:87","nodeType":"YulFunctionCall","src":"11540:19:87"}],"functionName":{"name":"gt","nativeSrc":"11528:2:87","nodeType":"YulIdentifier","src":"11528:2:87"},"nativeSrc":"11528:32:87","nodeType":"YulFunctionCall","src":"11528:32:87"},"nativeSrc":"11525:58:87","nodeType":"YulIf","src":"11525:58:87"},{"nativeSrc":"11592:29:87","nodeType":"YulAssignment","src":"11592:29:87","value":{"arguments":[{"name":"power_1","nativeSrc":"11605:7:87","nodeType":"YulIdentifier","src":"11605:7:87"},{"name":"base_1","nativeSrc":"11614:6:87","nodeType":"YulIdentifier","src":"11614:6:87"}],"functionName":{"name":"mul","nativeSrc":"11601:3:87","nodeType":"YulIdentifier","src":"11601:3:87"},"nativeSrc":"11601:20:87","nodeType":"YulFunctionCall","src":"11601:20:87"},"variableNames":[{"name":"power","nativeSrc":"11592:5:87","nodeType":"YulIdentifier","src":"11592:5:87"}]}]},"name":"checked_exp_unsigned","nativeSrc":"10725:902:87","nodeType":"YulFunctionDefinition","parameters":[{"name":"base","nativeSrc":"10755:4:87","nodeType":"YulTypedName","src":"10755:4:87","type":""},{"name":"exponent","nativeSrc":"10761:8:87","nodeType":"YulTypedName","src":"10761:8:87","type":""}],"returnVariables":[{"name":"power","nativeSrc":"10774:5:87","nodeType":"YulTypedName","src":"10774:5:87","type":""}],"src":"10725:902:87"},{"body":{"nativeSrc":"11700:72:87","nodeType":"YulBlock","src":"11700:72:87","statements":[{"nativeSrc":"11710:56:87","nodeType":"YulAssignment","src":"11710:56:87","value":{"arguments":[{"name":"base","nativeSrc":"11740:4:87","nodeType":"YulIdentifier","src":"11740:4:87"},{"arguments":[{"name":"exponent","nativeSrc":"11750:8:87","nodeType":"YulIdentifier","src":"11750:8:87"},{"kind":"number","nativeSrc":"11760:4:87","nodeType":"YulLiteral","src":"11760:4:87","type":"","value":"0xff"}],"functionName":{"name":"and","nativeSrc":"11746:3:87","nodeType":"YulIdentifier","src":"11746:3:87"},"nativeSrc":"11746:19:87","nodeType":"YulFunctionCall","src":"11746:19:87"}],"functionName":{"name":"checked_exp_unsigned","nativeSrc":"11719:20:87","nodeType":"YulIdentifier","src":"11719:20:87"},"nativeSrc":"11719:47:87","nodeType":"YulFunctionCall","src":"11719:47:87"},"variableNames":[{"name":"power","nativeSrc":"11710:5:87","nodeType":"YulIdentifier","src":"11710:5:87"}]}]},"name":"checked_exp_t_uint256_t_uint8","nativeSrc":"11632:140:87","nodeType":"YulFunctionDefinition","parameters":[{"name":"base","nativeSrc":"11671:4:87","nodeType":"YulTypedName","src":"11671:4:87","type":""},{"name":"exponent","nativeSrc":"11677:8:87","nodeType":"YulTypedName","src":"11677:8:87","type":""}],"returnVariables":[{"name":"power","nativeSrc":"11690:5:87","nodeType":"YulTypedName","src":"11690:5:87","type":""}],"src":"11632:140:87"},{"body":{"nativeSrc":"11920:153:87","nodeType":"YulBlock","src":"11920:153:87","statements":[{"expression":{"arguments":[{"name":"headStart","nativeSrc":"11937:9:87","nodeType":"YulIdentifier","src":"11937:9:87"},{"arguments":[{"name":"value0","nativeSrc":"11952:6:87","nodeType":"YulIdentifier","src":"11952:6:87"},{"kind":"number","nativeSrc":"11960:4:87","nodeType":"YulLiteral","src":"11960:4:87","type":"","value":"0xff"}],"functionName":{"name":"and","nativeSrc":"11948:3:87","nodeType":"YulIdentifier","src":"11948:3:87"},"nativeSrc":"11948:17:87","nodeType":"YulFunctionCall","src":"11948:17:87"}],"functionName":{"name":"mstore","nativeSrc":"11930:6:87","nodeType":"YulIdentifier","src":"11930:6:87"},"nativeSrc":"11930:36:87","nodeType":"YulFunctionCall","src":"11930:36:87"},"nativeSrc":"11930:36:87","nodeType":"YulExpressionStatement","src":"11930:36:87"},{"expression":{"arguments":[{"arguments":[{"name":"headStart","nativeSrc":"11986:9:87","nodeType":"YulIdentifier","src":"11986:9:87"},{"kind":"number","nativeSrc":"11997:2:87","nodeType":"YulLiteral","src":"11997:2:87","type":"","value":"32"}],"functionName":{"name":"add","nativeSrc":"11982:3:87","nodeType":"YulIdentifier","src":"11982:3:87"},"nativeSrc":"11982:18:87","nodeType":"YulFunctionCall","src":"11982:18:87"},{"kind":"number","nativeSrc":"12002:2:87","nodeType":"YulLiteral","src":"12002:2:87","type":"","value":"64"}],"functionName":{"name":"mstore","nativeSrc":"11975:6:87","nodeType":"YulIdentifier","src":"11975:6:87"},"nativeSrc":"11975:30:87","nodeType":"YulFunctionCall","src":"11975:30:87"},"nativeSrc":"11975:30:87","nodeType":"YulExpressionStatement","src":"11975:30:87"},{"nativeSrc":"12014:53:87","nodeType":"YulAssignment","src":"12014:53:87","value":{"arguments":[{"name":"value1","nativeSrc":"12040:6:87","nodeType":"YulIdentifier","src":"12040:6:87"},{"arguments":[{"name":"headStart","nativeSrc":"12052:9:87","nodeType":"YulIdentifier","src":"12052:9:87"},{"kind":"number","nativeSrc":"12063:2:87","nodeType":"YulLiteral","src":"12063:2:87","type":"","value":"64"}],"functionName":{"name":"add","nativeSrc":"12048:3:87","nodeType":"YulIdentifier","src":"12048:3:87"},"nativeSrc":"12048:18:87","nodeType":"YulFunctionCall","src":"12048:18:87"}],"functionName":{"name":"abi_encode_string","nativeSrc":"12022:17:87","nodeType":"YulIdentifier","src":"12022:17:87"},"nativeSrc":"12022:45:87","nodeType":"YulFunctionCall","src":"12022:45:87"},"variableNames":[{"name":"tail","nativeSrc":"12014:4:87","nodeType":"YulIdentifier","src":"12014:4:87"}]}]},"name":"abi_encode_tuple_t_uint8_t_bytes_memory_ptr__to_t_uint8_t_bytes_memory_ptr__fromStack_reversed","nativeSrc":"11777:296:87","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nativeSrc":"11881:9:87","nodeType":"YulTypedName","src":"11881:9:87","type":""},{"name":"value1","nativeSrc":"11892:6:87","nodeType":"YulTypedName","src":"11892:6:87","type":""},{"name":"value0","nativeSrc":"11900:6:87","nodeType":"YulTypedName","src":"11900:6:87","type":""}],"returnVariables":[{"name":"tail","nativeSrc":"11911:4:87","nodeType":"YulTypedName","src":"11911:4:87","type":""}],"src":"11777:296:87"},{"body":{"nativeSrc":"12257:171:87","nodeType":"YulBlock","src":"12257:171:87","statements":[{"nativeSrc":"12267:26:87","nodeType":"YulAssignment","src":"12267:26:87","value":{"arguments":[{"name":"headStart","nativeSrc":"12279:9:87","nodeType":"YulIdentifier","src":"12279:9:87"},{"kind":"number","nativeSrc":"12290:2:87","nodeType":"YulLiteral","src":"12290:2:87","type":"","value":"64"}],"functionName":{"name":"add","nativeSrc":"12275:3:87","nodeType":"YulIdentifier","src":"12275:3:87"},"nativeSrc":"12275:18:87","nodeType":"YulFunctionCall","src":"12275:18:87"},"variableNames":[{"name":"tail","nativeSrc":"12267:4:87","nodeType":"YulIdentifier","src":"12267:4:87"}]},{"expression":{"arguments":[{"name":"headStart","nativeSrc":"12309:9:87","nodeType":"YulIdentifier","src":"12309:9:87"},{"arguments":[{"name":"value0","nativeSrc":"12324:6:87","nodeType":"YulIdentifier","src":"12324:6:87"},{"arguments":[{"arguments":[{"kind":"number","nativeSrc":"12340:3:87","nodeType":"YulLiteral","src":"12340:3:87","type":"","value":"160"},{"kind":"number","nativeSrc":"12345:1:87","nodeType":"YulLiteral","src":"12345:1:87","type":"","value":"1"}],"functionName":{"name":"shl","nativeSrc":"12336:3:87","nodeType":"YulIdentifier","src":"12336:3:87"},"nativeSrc":"12336:11:87","nodeType":"YulFunctionCall","src":"12336:11:87"},{"kind":"number","nativeSrc":"12349:1:87","nodeType":"YulLiteral","src":"12349:1:87","type":"","value":"1"}],"functionName":{"name":"sub","nativeSrc":"12332:3:87","nodeType":"YulIdentifier","src":"12332:3:87"},"nativeSrc":"12332:19:87","nodeType":"YulFunctionCall","src":"12332:19:87"}],"functionName":{"name":"and","nativeSrc":"12320:3:87","nodeType":"YulIdentifier","src":"12320:3:87"},"nativeSrc":"12320:32:87","nodeType":"YulFunctionCall","src":"12320:32:87"}],"functionName":{"name":"mstore","nativeSrc":"12302:6:87","nodeType":"YulIdentifier","src":"12302:6:87"},"nativeSrc":"12302:51:87","nodeType":"YulFunctionCall","src":"12302:51:87"},"nativeSrc":"12302:51:87","nodeType":"YulExpressionStatement","src":"12302:51:87"},{"expression":{"arguments":[{"arguments":[{"name":"headStart","nativeSrc":"12373:9:87","nodeType":"YulIdentifier","src":"12373:9:87"},{"kind":"number","nativeSrc":"12384:2:87","nodeType":"YulLiteral","src":"12384:2:87","type":"","value":"32"}],"functionName":{"name":"add","nativeSrc":"12369:3:87","nodeType":"YulIdentifier","src":"12369:3:87"},"nativeSrc":"12369:18:87","nodeType":"YulFunctionCall","src":"12369:18:87"},{"arguments":[{"name":"value1","nativeSrc":"12393:6:87","nodeType":"YulIdentifier","src":"12393:6:87"},{"arguments":[{"arguments":[{"kind":"number","nativeSrc":"12409:3:87","nodeType":"YulLiteral","src":"12409:3:87","type":"","value":"160"},{"kind":"number","nativeSrc":"12414:1:87","nodeType":"YulLiteral","src":"12414:1:87","type":"","value":"1"}],"functionName":{"name":"shl","nativeSrc":"12405:3:87","nodeType":"YulIdentifier","src":"12405:3:87"},"nativeSrc":"12405:11:87","nodeType":"YulFunctionCall","src":"12405:11:87"},{"kind":"number","nativeSrc":"12418:1:87","nodeType":"YulLiteral","src":"12418:1:87","type":"","value":"1"}],"functionName":{"name":"sub","nativeSrc":"12401:3:87","nodeType":"YulIdentifier","src":"12401:3:87"},"nativeSrc":"12401:19:87","nodeType":"YulFunctionCall","src":"12401:19:87"}],"functionName":{"name":"and","nativeSrc":"12389:3:87","nodeType":"YulIdentifier","src":"12389:3:87"},"nativeSrc":"12389:32:87","nodeType":"YulFunctionCall","src":"12389:32:87"}],"functionName":{"name":"mstore","nativeSrc":"12362:6:87","nodeType":"YulIdentifier","src":"12362:6:87"},"nativeSrc":"12362:60:87","nodeType":"YulFunctionCall","src":"12362:60:87"},"nativeSrc":"12362:60:87","nodeType":"YulExpressionStatement","src":"12362:60:87"}]},"name":"abi_encode_tuple_t_contract$_IInvestStrategy_$20725_t_contract$_IInvestStrategy_$20725__to_t_address_t_address__fromStack_reversed","nativeSrc":"12078:350:87","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nativeSrc":"12218:9:87","nodeType":"YulTypedName","src":"12218:9:87","type":""},{"name":"value1","nativeSrc":"12229:6:87","nodeType":"YulTypedName","src":"12229:6:87","type":""},{"name":"value0","nativeSrc":"12237:6:87","nodeType":"YulTypedName","src":"12237:6:87","type":""}],"returnVariables":[{"name":"tail","nativeSrc":"12248:4:87","nodeType":"YulTypedName","src":"12248:4:87","type":""}],"src":"12078:350:87"},{"body":{"nativeSrc":"12465:95:87","nodeType":"YulBlock","src":"12465:95:87","statements":[{"expression":{"arguments":[{"kind":"number","nativeSrc":"12482:1:87","nodeType":"YulLiteral","src":"12482:1:87","type":"","value":"0"},{"arguments":[{"kind":"number","nativeSrc":"12489:3:87","nodeType":"YulLiteral","src":"12489:3:87","type":"","value":"224"},{"kind":"number","nativeSrc":"12494:10:87","nodeType":"YulLiteral","src":"12494:10:87","type":"","value":"0x4e487b71"}],"functionName":{"name":"shl","nativeSrc":"12485:3:87","nodeType":"YulIdentifier","src":"12485:3:87"},"nativeSrc":"12485:20:87","nodeType":"YulFunctionCall","src":"12485:20:87"}],"functionName":{"name":"mstore","nativeSrc":"12475:6:87","nodeType":"YulIdentifier","src":"12475:6:87"},"nativeSrc":"12475:31:87","nodeType":"YulFunctionCall","src":"12475:31:87"},"nativeSrc":"12475:31:87","nodeType":"YulExpressionStatement","src":"12475:31:87"},{"expression":{"arguments":[{"kind":"number","nativeSrc":"12522:1:87","nodeType":"YulLiteral","src":"12522:1:87","type":"","value":"4"},{"kind":"number","nativeSrc":"12525:4:87","nodeType":"YulLiteral","src":"12525:4:87","type":"","value":"0x12"}],"functionName":{"name":"mstore","nativeSrc":"12515:6:87","nodeType":"YulIdentifier","src":"12515:6:87"},"nativeSrc":"12515:15:87","nodeType":"YulFunctionCall","src":"12515:15:87"},"nativeSrc":"12515:15:87","nodeType":"YulExpressionStatement","src":"12515:15:87"},{"expression":{"arguments":[{"kind":"number","nativeSrc":"12546:1:87","nodeType":"YulLiteral","src":"12546:1:87","type":"","value":"0"},{"kind":"number","nativeSrc":"12549:4:87","nodeType":"YulLiteral","src":"12549:4:87","type":"","value":"0x24"}],"functionName":{"name":"revert","nativeSrc":"12539:6:87","nodeType":"YulIdentifier","src":"12539:6:87"},"nativeSrc":"12539:15:87","nodeType":"YulFunctionCall","src":"12539:15:87"},"nativeSrc":"12539:15:87","nodeType":"YulExpressionStatement","src":"12539:15:87"}]},"name":"panic_error_0x12","nativeSrc":"12433:127:87","nodeType":"YulFunctionDefinition","src":"12433:127:87"},{"body":{"nativeSrc":"12694:119:87","nodeType":"YulBlock","src":"12694:119:87","statements":[{"nativeSrc":"12704:26:87","nodeType":"YulAssignment","src":"12704:26:87","value":{"arguments":[{"name":"headStart","nativeSrc":"12716:9:87","nodeType":"YulIdentifier","src":"12716:9:87"},{"kind":"number","nativeSrc":"12727:2:87","nodeType":"YulLiteral","src":"12727:2:87","type":"","value":"64"}],"functionName":{"name":"add","nativeSrc":"12712:3:87","nodeType":"YulIdentifier","src":"12712:3:87"},"nativeSrc":"12712:18:87","nodeType":"YulFunctionCall","src":"12712:18:87"},"variableNames":[{"name":"tail","nativeSrc":"12704:4:87","nodeType":"YulIdentifier","src":"12704:4:87"}]},{"expression":{"arguments":[{"name":"headStart","nativeSrc":"12746:9:87","nodeType":"YulIdentifier","src":"12746:9:87"},{"name":"value0","nativeSrc":"12757:6:87","nodeType":"YulIdentifier","src":"12757:6:87"}],"functionName":{"name":"mstore","nativeSrc":"12739:6:87","nodeType":"YulIdentifier","src":"12739:6:87"},"nativeSrc":"12739:25:87","nodeType":"YulFunctionCall","src":"12739:25:87"},"nativeSrc":"12739:25:87","nodeType":"YulExpressionStatement","src":"12739:25:87"},{"expression":{"arguments":[{"arguments":[{"name":"headStart","nativeSrc":"12784:9:87","nodeType":"YulIdentifier","src":"12784:9:87"},{"kind":"number","nativeSrc":"12795:2:87","nodeType":"YulLiteral","src":"12795:2:87","type":"","value":"32"}],"functionName":{"name":"add","nativeSrc":"12780:3:87","nodeType":"YulIdentifier","src":"12780:3:87"},"nativeSrc":"12780:18:87","nodeType":"YulFunctionCall","src":"12780:18:87"},{"name":"value1","nativeSrc":"12800:6:87","nodeType":"YulIdentifier","src":"12800:6:87"}],"functionName":{"name":"mstore","nativeSrc":"12773:6:87","nodeType":"YulIdentifier","src":"12773:6:87"},"nativeSrc":"12773:34:87","nodeType":"YulFunctionCall","src":"12773:34:87"},"nativeSrc":"12773:34:87","nodeType":"YulExpressionStatement","src":"12773:34:87"}]},"name":"abi_encode_tuple_t_uint256_t_uint256__to_t_uint256_t_uint256__fromStack_reversed","nativeSrc":"12565:248:87","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nativeSrc":"12655:9:87","nodeType":"YulTypedName","src":"12655:9:87","type":""},{"name":"value1","nativeSrc":"12666:6:87","nodeType":"YulTypedName","src":"12666:6:87","type":""},{"name":"value0","nativeSrc":"12674:6:87","nodeType":"YulTypedName","src":"12674:6:87","type":""}],"returnVariables":[{"name":"tail","nativeSrc":"12685:4:87","nodeType":"YulTypedName","src":"12685:4:87","type":""}],"src":"12565:248:87"},{"body":{"nativeSrc":"12955:164:87","nodeType":"YulBlock","src":"12955:164:87","statements":[{"nativeSrc":"12965:27:87","nodeType":"YulVariableDeclaration","src":"12965:27:87","value":{"arguments":[{"name":"value0","nativeSrc":"12985:6:87","nodeType":"YulIdentifier","src":"12985:6:87"}],"functionName":{"name":"mload","nativeSrc":"12979:5:87","nodeType":"YulIdentifier","src":"12979:5:87"},"nativeSrc":"12979:13:87","nodeType":"YulFunctionCall","src":"12979:13:87"},"variables":[{"name":"length","nativeSrc":"12969:6:87","nodeType":"YulTypedName","src":"12969:6:87","type":""}]},{"expression":{"arguments":[{"name":"pos","nativeSrc":"13007:3:87","nodeType":"YulIdentifier","src":"13007:3:87"},{"arguments":[{"name":"value0","nativeSrc":"13016:6:87","nodeType":"YulIdentifier","src":"13016:6:87"},{"kind":"number","nativeSrc":"13024:4:87","nodeType":"YulLiteral","src":"13024:4:87","type":"","value":"0x20"}],"functionName":{"name":"add","nativeSrc":"13012:3:87","nodeType":"YulIdentifier","src":"13012:3:87"},"nativeSrc":"13012:17:87","nodeType":"YulFunctionCall","src":"13012:17:87"},{"name":"length","nativeSrc":"13031:6:87","nodeType":"YulIdentifier","src":"13031:6:87"}],"functionName":{"name":"mcopy","nativeSrc":"13001:5:87","nodeType":"YulIdentifier","src":"13001:5:87"},"nativeSrc":"13001:37:87","nodeType":"YulFunctionCall","src":"13001:37:87"},"nativeSrc":"13001:37:87","nodeType":"YulExpressionStatement","src":"13001:37:87"},{"nativeSrc":"13047:26:87","nodeType":"YulVariableDeclaration","src":"13047:26:87","value":{"arguments":[{"name":"pos","nativeSrc":"13061:3:87","nodeType":"YulIdentifier","src":"13061:3:87"},{"name":"length","nativeSrc":"13066:6:87","nodeType":"YulIdentifier","src":"13066:6:87"}],"functionName":{"name":"add","nativeSrc":"13057:3:87","nodeType":"YulIdentifier","src":"13057:3:87"},"nativeSrc":"13057:16:87","nodeType":"YulFunctionCall","src":"13057:16:87"},"variables":[{"name":"_1","nativeSrc":"13051:2:87","nodeType":"YulTypedName","src":"13051:2:87","type":""}]},{"expression":{"arguments":[{"name":"_1","nativeSrc":"13089:2:87","nodeType":"YulIdentifier","src":"13089:2:87"},{"kind":"number","nativeSrc":"13093:1:87","nodeType":"YulLiteral","src":"13093:1:87","type":"","value":"0"}],"functionName":{"name":"mstore","nativeSrc":"13082:6:87","nodeType":"YulIdentifier","src":"13082:6:87"},"nativeSrc":"13082:13:87","nodeType":"YulFunctionCall","src":"13082:13:87"},"nativeSrc":"13082:13:87","nodeType":"YulExpressionStatement","src":"13082:13:87"},{"nativeSrc":"13104:9:87","nodeType":"YulAssignment","src":"13104:9:87","value":{"name":"_1","nativeSrc":"13111:2:87","nodeType":"YulIdentifier","src":"13111:2:87"},"variableNames":[{"name":"end","nativeSrc":"13104:3:87","nodeType":"YulIdentifier","src":"13104:3:87"}]}]},"name":"abi_encode_tuple_packed_t_bytes_memory_ptr__to_t_bytes_memory_ptr__nonPadded_inplace_fromStack_reversed","nativeSrc":"12818:301:87","nodeType":"YulFunctionDefinition","parameters":[{"name":"pos","nativeSrc":"12931:3:87","nodeType":"YulTypedName","src":"12931:3:87","type":""},{"name":"value0","nativeSrc":"12936:6:87","nodeType":"YulTypedName","src":"12936:6:87","type":""}],"returnVariables":[{"name":"end","nativeSrc":"12947:3:87","nodeType":"YulTypedName","src":"12947:3:87","type":""}],"src":"12818:301:87"},{"body":{"nativeSrc":"13205:170:87","nodeType":"YulBlock","src":"13205:170:87","statements":[{"body":{"nativeSrc":"13251:16:87","nodeType":"YulBlock","src":"13251:16:87","statements":[{"expression":{"arguments":[{"kind":"number","nativeSrc":"13260:1:87","nodeType":"YulLiteral","src":"13260:1:87","type":"","value":"0"},{"kind":"number","nativeSrc":"13263:1:87","nodeType":"YulLiteral","src":"13263:1:87","type":"","value":"0"}],"functionName":{"name":"revert","nativeSrc":"13253:6:87","nodeType":"YulIdentifier","src":"13253:6:87"},"nativeSrc":"13253:12:87","nodeType":"YulFunctionCall","src":"13253:12:87"},"nativeSrc":"13253:12:87","nodeType":"YulExpressionStatement","src":"13253:12:87"}]},"condition":{"arguments":[{"arguments":[{"name":"dataEnd","nativeSrc":"13226:7:87","nodeType":"YulIdentifier","src":"13226:7:87"},{"name":"headStart","nativeSrc":"13235:9:87","nodeType":"YulIdentifier","src":"13235:9:87"}],"functionName":{"name":"sub","nativeSrc":"13222:3:87","nodeType":"YulIdentifier","src":"13222:3:87"},"nativeSrc":"13222:23:87","nodeType":"YulFunctionCall","src":"13222:23:87"},{"kind":"number","nativeSrc":"13247:2:87","nodeType":"YulLiteral","src":"13247:2:87","type":"","value":"32"}],"functionName":{"name":"slt","nativeSrc":"13218:3:87","nodeType":"YulIdentifier","src":"13218:3:87"},"nativeSrc":"13218:32:87","nodeType":"YulFunctionCall","src":"13218:32:87"},"nativeSrc":"13215:52:87","nodeType":"YulIf","src":"13215:52:87"},{"nativeSrc":"13276:29:87","nodeType":"YulVariableDeclaration","src":"13276:29:87","value":{"arguments":[{"name":"headStart","nativeSrc":"13295:9:87","nodeType":"YulIdentifier","src":"13295:9:87"}],"functionName":{"name":"mload","nativeSrc":"13289:5:87","nodeType":"YulIdentifier","src":"13289:5:87"},"nativeSrc":"13289:16:87","nodeType":"YulFunctionCall","src":"13289:16:87"},"variables":[{"name":"value","nativeSrc":"13280:5:87","nodeType":"YulTypedName","src":"13280:5:87","type":""}]},{"expression":{"arguments":[{"name":"value","nativeSrc":"13339:5:87","nodeType":"YulIdentifier","src":"13339:5:87"}],"functionName":{"name":"validator_revert_address","nativeSrc":"13314:24:87","nodeType":"YulIdentifier","src":"13314:24:87"},"nativeSrc":"13314:31:87","nodeType":"YulFunctionCall","src":"13314:31:87"},"nativeSrc":"13314:31:87","nodeType":"YulExpressionStatement","src":"13314:31:87"},{"nativeSrc":"13354:15:87","nodeType":"YulAssignment","src":"13354:15:87","value":{"name":"value","nativeSrc":"13364:5:87","nodeType":"YulIdentifier","src":"13364:5:87"},"variableNames":[{"name":"value0","nativeSrc":"13354:6:87","nodeType":"YulIdentifier","src":"13354:6:87"}]}]},"name":"abi_decode_tuple_t_address_fromMemory","nativeSrc":"13124:251:87","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nativeSrc":"13171:9:87","nodeType":"YulTypedName","src":"13171:9:87","type":""},{"name":"dataEnd","nativeSrc":"13182:7:87","nodeType":"YulTypedName","src":"13182:7:87","type":""}],"returnVariables":[{"name":"value0","nativeSrc":"13194:6:87","nodeType":"YulTypedName","src":"13194:6:87","type":""}],"src":"13124:251:87"},{"body":{"nativeSrc":"13412:95:87","nodeType":"YulBlock","src":"13412:95:87","statements":[{"expression":{"arguments":[{"kind":"number","nativeSrc":"13429:1:87","nodeType":"YulLiteral","src":"13429:1:87","type":"","value":"0"},{"arguments":[{"kind":"number","nativeSrc":"13436:3:87","nodeType":"YulLiteral","src":"13436:3:87","type":"","value":"224"},{"kind":"number","nativeSrc":"13441:10:87","nodeType":"YulLiteral","src":"13441:10:87","type":"","value":"0x4e487b71"}],"functionName":{"name":"shl","nativeSrc":"13432:3:87","nodeType":"YulIdentifier","src":"13432:3:87"},"nativeSrc":"13432:20:87","nodeType":"YulFunctionCall","src":"13432:20:87"}],"functionName":{"name":"mstore","nativeSrc":"13422:6:87","nodeType":"YulIdentifier","src":"13422:6:87"},"nativeSrc":"13422:31:87","nodeType":"YulFunctionCall","src":"13422:31:87"},"nativeSrc":"13422:31:87","nodeType":"YulExpressionStatement","src":"13422:31:87"},{"expression":{"arguments":[{"kind":"number","nativeSrc":"13469:1:87","nodeType":"YulLiteral","src":"13469:1:87","type":"","value":"4"},{"kind":"number","nativeSrc":"13472:4:87","nodeType":"YulLiteral","src":"13472:4:87","type":"","value":"0x21"}],"functionName":{"name":"mstore","nativeSrc":"13462:6:87","nodeType":"YulIdentifier","src":"13462:6:87"},"nativeSrc":"13462:15:87","nodeType":"YulFunctionCall","src":"13462:15:87"},"nativeSrc":"13462:15:87","nodeType":"YulExpressionStatement","src":"13462:15:87"},{"expression":{"arguments":[{"kind":"number","nativeSrc":"13493:1:87","nodeType":"YulLiteral","src":"13493:1:87","type":"","value":"0"},{"kind":"number","nativeSrc":"13496:4:87","nodeType":"YulLiteral","src":"13496:4:87","type":"","value":"0x24"}],"functionName":{"name":"revert","nativeSrc":"13486:6:87","nodeType":"YulIdentifier","src":"13486:6:87"},"nativeSrc":"13486:15:87","nodeType":"YulFunctionCall","src":"13486:15:87"},"nativeSrc":"13486:15:87","nodeType":"YulExpressionStatement","src":"13486:15:87"}]},"name":"panic_error_0x21","nativeSrc":"13380:127:87","nodeType":"YulFunctionDefinition","src":"13380:127:87"},{"body":{"nativeSrc":"13548:218:87","nodeType":"YulBlock","src":"13548:218:87","statements":[{"nativeSrc":"13558:23:87","nodeType":"YulVariableDeclaration","src":"13558:23:87","value":{"arguments":[{"name":"y","nativeSrc":"13573:1:87","nodeType":"YulIdentifier","src":"13573:1:87"},{"kind":"number","nativeSrc":"13576:4:87","nodeType":"YulLiteral","src":"13576:4:87","type":"","value":"0xff"}],"functionName":{"name":"and","nativeSrc":"13569:3:87","nodeType":"YulIdentifier","src":"13569:3:87"},"nativeSrc":"13569:12:87","nodeType":"YulFunctionCall","src":"13569:12:87"},"variables":[{"name":"y_1","nativeSrc":"13562:3:87","nodeType":"YulTypedName","src":"13562:3:87","type":""}]},{"body":{"nativeSrc":"13613:111:87","nodeType":"YulBlock","src":"13613:111:87","statements":[{"expression":{"arguments":[{"kind":"number","nativeSrc":"13634:1:87","nodeType":"YulLiteral","src":"13634:1:87","type":"","value":"0"},{"arguments":[{"kind":"number","nativeSrc":"13641:3:87","nodeType":"YulLiteral","src":"13641:3:87","type":"","value":"224"},{"kind":"number","nativeSrc":"13646:10:87","nodeType":"YulLiteral","src":"13646:10:87","type":"","value":"0x4e487b71"}],"functionName":{"name":"shl","nativeSrc":"13637:3:87","nodeType":"YulIdentifier","src":"13637:3:87"},"nativeSrc":"13637:20:87","nodeType":"YulFunctionCall","src":"13637:20:87"}],"functionName":{"name":"mstore","nativeSrc":"13627:6:87","nodeType":"YulIdentifier","src":"13627:6:87"},"nativeSrc":"13627:31:87","nodeType":"YulFunctionCall","src":"13627:31:87"},"nativeSrc":"13627:31:87","nodeType":"YulExpressionStatement","src":"13627:31:87"},{"expression":{"arguments":[{"kind":"number","nativeSrc":"13678:1:87","nodeType":"YulLiteral","src":"13678:1:87","type":"","value":"4"},{"kind":"number","nativeSrc":"13681:4:87","nodeType":"YulLiteral","src":"13681:4:87","type":"","value":"0x12"}],"functionName":{"name":"mstore","nativeSrc":"13671:6:87","nodeType":"YulIdentifier","src":"13671:6:87"},"nativeSrc":"13671:15:87","nodeType":"YulFunctionCall","src":"13671:15:87"},"nativeSrc":"13671:15:87","nodeType":"YulExpressionStatement","src":"13671:15:87"},{"expression":{"arguments":[{"kind":"number","nativeSrc":"13706:1:87","nodeType":"YulLiteral","src":"13706:1:87","type":"","value":"0"},{"kind":"number","nativeSrc":"13709:4:87","nodeType":"YulLiteral","src":"13709:4:87","type":"","value":"0x24"}],"functionName":{"name":"revert","nativeSrc":"13699:6:87","nodeType":"YulIdentifier","src":"13699:6:87"},"nativeSrc":"13699:15:87","nodeType":"YulFunctionCall","src":"13699:15:87"},"nativeSrc":"13699:15:87","nodeType":"YulExpressionStatement","src":"13699:15:87"}]},"condition":{"arguments":[{"name":"y_1","nativeSrc":"13600:3:87","nodeType":"YulIdentifier","src":"13600:3:87"}],"functionName":{"name":"iszero","nativeSrc":"13593:6:87","nodeType":"YulIdentifier","src":"13593:6:87"},"nativeSrc":"13593:11:87","nodeType":"YulFunctionCall","src":"13593:11:87"},"nativeSrc":"13590:134:87","nodeType":"YulIf","src":"13590:134:87"},{"nativeSrc":"13733:27:87","nodeType":"YulAssignment","src":"13733:27:87","value":{"arguments":[{"arguments":[{"name":"x","nativeSrc":"13746:1:87","nodeType":"YulIdentifier","src":"13746:1:87"},{"kind":"number","nativeSrc":"13749:4:87","nodeType":"YulLiteral","src":"13749:4:87","type":"","value":"0xff"}],"functionName":{"name":"and","nativeSrc":"13742:3:87","nodeType":"YulIdentifier","src":"13742:3:87"},"nativeSrc":"13742:12:87","nodeType":"YulFunctionCall","src":"13742:12:87"},{"name":"y_1","nativeSrc":"13756:3:87","nodeType":"YulIdentifier","src":"13756:3:87"}],"functionName":{"name":"mod","nativeSrc":"13738:3:87","nodeType":"YulIdentifier","src":"13738:3:87"},"nativeSrc":"13738:22:87","nodeType":"YulFunctionCall","src":"13738:22:87"},"variableNames":[{"name":"r","nativeSrc":"13733:1:87","nodeType":"YulIdentifier","src":"13733:1:87"}]}]},"name":"mod_t_uint8","nativeSrc":"13512:254:87","nodeType":"YulFunctionDefinition","parameters":[{"name":"x","nativeSrc":"13533:1:87","nodeType":"YulTypedName","src":"13533:1:87","type":""},{"name":"y","nativeSrc":"13536:1:87","nodeType":"YulTypedName","src":"13536:1:87","type":""}],"returnVariables":[{"name":"r","nativeSrc":"13542:1:87","nodeType":"YulTypedName","src":"13542:1:87","type":""}],"src":"13512:254:87"},{"body":{"nativeSrc":"13827:65:87","nodeType":"YulBlock","src":"13827:65:87","statements":[{"expression":{"arguments":[{"kind":"number","nativeSrc":"13844:1:87","nodeType":"YulLiteral","src":"13844:1:87","type":"","value":"0"},{"name":"ptr","nativeSrc":"13847:3:87","nodeType":"YulIdentifier","src":"13847:3:87"}],"functionName":{"name":"mstore","nativeSrc":"13837:6:87","nodeType":"YulIdentifier","src":"13837:6:87"},"nativeSrc":"13837:14:87","nodeType":"YulFunctionCall","src":"13837:14:87"},"nativeSrc":"13837:14:87","nodeType":"YulExpressionStatement","src":"13837:14:87"},{"nativeSrc":"13860:26:87","nodeType":"YulAssignment","src":"13860:26:87","value":{"arguments":[{"kind":"number","nativeSrc":"13878:1:87","nodeType":"YulLiteral","src":"13878:1:87","type":"","value":"0"},{"kind":"number","nativeSrc":"13881:4:87","nodeType":"YulLiteral","src":"13881:4:87","type":"","value":"0x20"}],"functionName":{"name":"keccak256","nativeSrc":"13868:9:87","nodeType":"YulIdentifier","src":"13868:9:87"},"nativeSrc":"13868:18:87","nodeType":"YulFunctionCall","src":"13868:18:87"},"variableNames":[{"name":"data","nativeSrc":"13860:4:87","nodeType":"YulIdentifier","src":"13860:4:87"}]}]},"name":"array_dataslot_string_storage","nativeSrc":"13771:121:87","nodeType":"YulFunctionDefinition","parameters":[{"name":"ptr","nativeSrc":"13810:3:87","nodeType":"YulTypedName","src":"13810:3:87","type":""}],"returnVariables":[{"name":"data","nativeSrc":"13818:4:87","nodeType":"YulTypedName","src":"13818:4:87","type":""}],"src":"13771:121:87"},{"body":{"nativeSrc":"13978:437:87","nodeType":"YulBlock","src":"13978:437:87","statements":[{"body":{"nativeSrc":"14011:398:87","nodeType":"YulBlock","src":"14011:398:87","statements":[{"expression":{"arguments":[{"kind":"number","nativeSrc":"14032:1:87","nodeType":"YulLiteral","src":"14032:1:87","type":"","value":"0"},{"name":"array","nativeSrc":"14035:5:87","nodeType":"YulIdentifier","src":"14035:5:87"}],"functionName":{"name":"mstore","nativeSrc":"14025:6:87","nodeType":"YulIdentifier","src":"14025:6:87"},"nativeSrc":"14025:16:87","nodeType":"YulFunctionCall","src":"14025:16:87"},"nativeSrc":"14025:16:87","nodeType":"YulExpressionStatement","src":"14025:16:87"},{"nativeSrc":"14054:30:87","nodeType":"YulVariableDeclaration","src":"14054:30:87","value":{"arguments":[{"kind":"number","nativeSrc":"14076:1:87","nodeType":"YulLiteral","src":"14076:1:87","type":"","value":"0"},{"kind":"number","nativeSrc":"14079:4:87","nodeType":"YulLiteral","src":"14079:4:87","type":"","value":"0x20"}],"functionName":{"name":"keccak256","nativeSrc":"14066:9:87","nodeType":"YulIdentifier","src":"14066:9:87"},"nativeSrc":"14066:18:87","nodeType":"YulFunctionCall","src":"14066:18:87"},"variables":[{"name":"data","nativeSrc":"14058:4:87","nodeType":"YulTypedName","src":"14058:4:87","type":""}]},{"nativeSrc":"14097:57:87","nodeType":"YulVariableDeclaration","src":"14097:57:87","value":{"arguments":[{"name":"data","nativeSrc":"14120:4:87","nodeType":"YulIdentifier","src":"14120:4:87"},{"arguments":[{"kind":"number","nativeSrc":"14130:1:87","nodeType":"YulLiteral","src":"14130:1:87","type":"","value":"5"},{"arguments":[{"name":"startIndex","nativeSrc":"14137:10:87","nodeType":"YulIdentifier","src":"14137:10:87"},{"kind":"number","nativeSrc":"14149:2:87","nodeType":"YulLiteral","src":"14149:2:87","type":"","value":"31"}],"functionName":{"name":"add","nativeSrc":"14133:3:87","nodeType":"YulIdentifier","src":"14133:3:87"},"nativeSrc":"14133:19:87","nodeType":"YulFunctionCall","src":"14133:19:87"}],"functionName":{"name":"shr","nativeSrc":"14126:3:87","nodeType":"YulIdentifier","src":"14126:3:87"},"nativeSrc":"14126:27:87","nodeType":"YulFunctionCall","src":"14126:27:87"}],"functionName":{"name":"add","nativeSrc":"14116:3:87","nodeType":"YulIdentifier","src":"14116:3:87"},"nativeSrc":"14116:38:87","nodeType":"YulFunctionCall","src":"14116:38:87"},"variables":[{"name":"deleteStart","nativeSrc":"14101:11:87","nodeType":"YulTypedName","src":"14101:11:87","type":""}]},{"body":{"nativeSrc":"14191:23:87","nodeType":"YulBlock","src":"14191:23:87","statements":[{"nativeSrc":"14193:19:87","nodeType":"YulAssignment","src":"14193:19:87","value":{"name":"data","nativeSrc":"14208:4:87","nodeType":"YulIdentifier","src":"14208:4:87"},"variableNames":[{"name":"deleteStart","nativeSrc":"14193:11:87","nodeType":"YulIdentifier","src":"14193:11:87"}]}]},"condition":{"arguments":[{"name":"startIndex","nativeSrc":"14173:10:87","nodeType":"YulIdentifier","src":"14173:10:87"},{"kind":"number","nativeSrc":"14185:4:87","nodeType":"YulLiteral","src":"14185:4:87","type":"","value":"0x20"}],"functionName":{"name":"lt","nativeSrc":"14170:2:87","nodeType":"YulIdentifier","src":"14170:2:87"},"nativeSrc":"14170:20:87","nodeType":"YulFunctionCall","src":"14170:20:87"},"nativeSrc":"14167:47:87","nodeType":"YulIf","src":"14167:47:87"},{"nativeSrc":"14227:41:87","nodeType":"YulVariableDeclaration","src":"14227:41:87","value":{"arguments":[{"name":"data","nativeSrc":"14241:4:87","nodeType":"YulIdentifier","src":"14241:4:87"},{"arguments":[{"kind":"number","nativeSrc":"14251:1:87","nodeType":"YulLiteral","src":"14251:1:87","type":"","value":"5"},{"arguments":[{"name":"len","nativeSrc":"14258:3:87","nodeType":"YulIdentifier","src":"14258:3:87"},{"kind":"number","nativeSrc":"14263:2:87","nodeType":"YulLiteral","src":"14263:2:87","type":"","value":"31"}],"functionName":{"name":"add","nativeSrc":"14254:3:87","nodeType":"YulIdentifier","src":"14254:3:87"},"nativeSrc":"14254:12:87","nodeType":"YulFunctionCall","src":"14254:12:87"}],"functionName":{"name":"shr","nativeSrc":"14247:3:87","nodeType":"YulIdentifier","src":"14247:3:87"},"nativeSrc":"14247:20:87","nodeType":"YulFunctionCall","src":"14247:20:87"}],"functionName":{"name":"add","nativeSrc":"14237:3:87","nodeType":"YulIdentifier","src":"14237:3:87"},"nativeSrc":"14237:31:87","nodeType":"YulFunctionCall","src":"14237:31:87"},"variables":[{"name":"_1","nativeSrc":"14231:2:87","nodeType":"YulTypedName","src":"14231:2:87","type":""}]},{"nativeSrc":"14281:24:87","nodeType":"YulVariableDeclaration","src":"14281:24:87","value":{"name":"deleteStart","nativeSrc":"14294:11:87","nodeType":"YulIdentifier","src":"14294:11:87"},"variables":[{"name":"start","nativeSrc":"14285:5:87","nodeType":"YulTypedName","src":"14285:5:87","type":""}]},{"body":{"nativeSrc":"14379:20:87","nodeType":"YulBlock","src":"14379:20:87","statements":[{"expression":{"arguments":[{"name":"start","nativeSrc":"14388:5:87","nodeType":"YulIdentifier","src":"14388:5:87"},{"kind":"number","nativeSrc":"14395:1:87","nodeType":"YulLiteral","src":"14395:1:87","type":"","value":"0"}],"functionName":{"name":"sstore","nativeSrc":"14381:6:87","nodeType":"YulIdentifier","src":"14381:6:87"},"nativeSrc":"14381:16:87","nodeType":"YulFunctionCall","src":"14381:16:87"},"nativeSrc":"14381:16:87","nodeType":"YulExpressionStatement","src":"14381:16:87"}]},"condition":{"arguments":[{"name":"start","nativeSrc":"14329:5:87","nodeType":"YulIdentifier","src":"14329:5:87"},{"name":"_1","nativeSrc":"14336:2:87","nodeType":"YulIdentifier","src":"14336:2:87"}],"functionName":{"name":"lt","nativeSrc":"14326:2:87","nodeType":"YulIdentifier","src":"14326:2:87"},"nativeSrc":"14326:13:87","nodeType":"YulFunctionCall","src":"14326:13:87"},"nativeSrc":"14318:81:87","nodeType":"YulForLoop","post":{"nativeSrc":"14340:26:87","nodeType":"YulBlock","src":"14340:26:87","statements":[{"nativeSrc":"14342:22:87","nodeType":"YulAssignment","src":"14342:22:87","value":{"arguments":[{"name":"start","nativeSrc":"14355:5:87","nodeType":"YulIdentifier","src":"14355:5:87"},{"kind":"number","nativeSrc":"14362:1:87","nodeType":"YulLiteral","src":"14362:1:87","type":"","value":"1"}],"functionName":{"name":"add","nativeSrc":"14351:3:87","nodeType":"YulIdentifier","src":"14351:3:87"},"nativeSrc":"14351:13:87","nodeType":"YulFunctionCall","src":"14351:13:87"},"variableNames":[{"name":"start","nativeSrc":"14342:5:87","nodeType":"YulIdentifier","src":"14342:5:87"}]}]},"pre":{"nativeSrc":"14322:3:87","nodeType":"YulBlock","src":"14322:3:87","statements":[]},"src":"14318:81:87"}]},"condition":{"arguments":[{"name":"len","nativeSrc":"13994:3:87","nodeType":"YulIdentifier","src":"13994:3:87"},{"kind":"number","nativeSrc":"13999:2:87","nodeType":"YulLiteral","src":"13999:2:87","type":"","value":"31"}],"functionName":{"name":"gt","nativeSrc":"13991:2:87","nodeType":"YulIdentifier","src":"13991:2:87"},"nativeSrc":"13991:11:87","nodeType":"YulFunctionCall","src":"13991:11:87"},"nativeSrc":"13988:421:87","nodeType":"YulIf","src":"13988:421:87"}]},"name":"clean_up_bytearray_end_slots_string_storage","nativeSrc":"13897:518:87","nodeType":"YulFunctionDefinition","parameters":[{"name":"array","nativeSrc":"13950:5:87","nodeType":"YulTypedName","src":"13950:5:87","type":""},{"name":"len","nativeSrc":"13957:3:87","nodeType":"YulTypedName","src":"13957:3:87","type":""},{"name":"startIndex","nativeSrc":"13962:10:87","nodeType":"YulTypedName","src":"13962:10:87","type":""}],"src":"13897:518:87"},{"body":{"nativeSrc":"14505:81:87","nodeType":"YulBlock","src":"14505:81:87","statements":[{"nativeSrc":"14515:65:87","nodeType":"YulAssignment","src":"14515:65:87","value":{"arguments":[{"arguments":[{"name":"data","nativeSrc":"14530:4:87","nodeType":"YulIdentifier","src":"14530:4:87"},{"arguments":[{"arguments":[{"arguments":[{"kind":"number","nativeSrc":"14548:1:87","nodeType":"YulLiteral","src":"14548:1:87","type":"","value":"3"},{"name":"len","nativeSrc":"14551:3:87","nodeType":"YulIdentifier","src":"14551:3:87"}],"functionName":{"name":"shl","nativeSrc":"14544:3:87","nodeType":"YulIdentifier","src":"14544:3:87"},"nativeSrc":"14544:11:87","nodeType":"YulFunctionCall","src":"14544:11:87"},{"arguments":[{"kind":"number","nativeSrc":"14561:1:87","nodeType":"YulLiteral","src":"14561:1:87","type":"","value":"0"}],"functionName":{"name":"not","nativeSrc":"14557:3:87","nodeType":"YulIdentifier","src":"14557:3:87"},"nativeSrc":"14557:6:87","nodeType":"YulFunctionCall","src":"14557:6:87"}],"functionName":{"name":"shr","nativeSrc":"14540:3:87","nodeType":"YulIdentifier","src":"14540:3:87"},"nativeSrc":"14540:24:87","nodeType":"YulFunctionCall","src":"14540:24:87"}],"functionName":{"name":"not","nativeSrc":"14536:3:87","nodeType":"YulIdentifier","src":"14536:3:87"},"nativeSrc":"14536:29:87","nodeType":"YulFunctionCall","src":"14536:29:87"}],"functionName":{"name":"and","nativeSrc":"14526:3:87","nodeType":"YulIdentifier","src":"14526:3:87"},"nativeSrc":"14526:40:87","nodeType":"YulFunctionCall","src":"14526:40:87"},{"arguments":[{"kind":"number","nativeSrc":"14572:1:87","nodeType":"YulLiteral","src":"14572:1:87","type":"","value":"1"},{"name":"len","nativeSrc":"14575:3:87","nodeType":"YulIdentifier","src":"14575:3:87"}],"functionName":{"name":"shl","nativeSrc":"14568:3:87","nodeType":"YulIdentifier","src":"14568:3:87"},"nativeSrc":"14568:11:87","nodeType":"YulFunctionCall","src":"14568:11:87"}],"functionName":{"name":"or","nativeSrc":"14523:2:87","nodeType":"YulIdentifier","src":"14523:2:87"},"nativeSrc":"14523:57:87","nodeType":"YulFunctionCall","src":"14523:57:87"},"variableNames":[{"name":"used","nativeSrc":"14515:4:87","nodeType":"YulIdentifier","src":"14515:4:87"}]}]},"name":"extract_used_part_and_set_length_of_short_byte_array","nativeSrc":"14420:166:87","nodeType":"YulFunctionDefinition","parameters":[{"name":"data","nativeSrc":"14482:4:87","nodeType":"YulTypedName","src":"14482:4:87","type":""},{"name":"len","nativeSrc":"14488:3:87","nodeType":"YulTypedName","src":"14488:3:87","type":""}],"returnVariables":[{"name":"used","nativeSrc":"14496:4:87","nodeType":"YulTypedName","src":"14496:4:87","type":""}],"src":"14420:166:87"},{"body":{"nativeSrc":"14687:1203:87","nodeType":"YulBlock","src":"14687:1203:87","statements":[{"nativeSrc":"14697:24:87","nodeType":"YulVariableDeclaration","src":"14697:24:87","value":{"arguments":[{"name":"src","nativeSrc":"14717:3:87","nodeType":"YulIdentifier","src":"14717:3:87"}],"functionName":{"name":"mload","nativeSrc":"14711:5:87","nodeType":"YulIdentifier","src":"14711:5:87"},"nativeSrc":"14711:10:87","nodeType":"YulFunctionCall","src":"14711:10:87"},"variables":[{"name":"newLen","nativeSrc":"14701:6:87","nodeType":"YulTypedName","src":"14701:6:87","type":""}]},{"body":{"nativeSrc":"14764:22:87","nodeType":"YulBlock","src":"14764:22:87","statements":[{"expression":{"arguments":[],"functionName":{"name":"panic_error_0x41","nativeSrc":"14766:16:87","nodeType":"YulIdentifier","src":"14766:16:87"},"nativeSrc":"14766:18:87","nodeType":"YulFunctionCall","src":"14766:18:87"},"nativeSrc":"14766:18:87","nodeType":"YulExpressionStatement","src":"14766:18:87"}]},"condition":{"arguments":[{"name":"newLen","nativeSrc":"14736:6:87","nodeType":"YulIdentifier","src":"14736:6:87"},{"kind":"number","nativeSrc":"14744:18:87","nodeType":"YulLiteral","src":"14744:18:87","type":"","value":"0xffffffffffffffff"}],"functionName":{"name":"gt","nativeSrc":"14733:2:87","nodeType":"YulIdentifier","src":"14733:2:87"},"nativeSrc":"14733:30:87","nodeType":"YulFunctionCall","src":"14733:30:87"},"nativeSrc":"14730:56:87","nodeType":"YulIf","src":"14730:56:87"},{"expression":{"arguments":[{"name":"slot","nativeSrc":"14839:4:87","nodeType":"YulIdentifier","src":"14839:4:87"},{"arguments":[{"arguments":[{"name":"slot","nativeSrc":"14877:4:87","nodeType":"YulIdentifier","src":"14877:4:87"}],"functionName":{"name":"sload","nativeSrc":"14871:5:87","nodeType":"YulIdentifier","src":"14871:5:87"},"nativeSrc":"14871:11:87","nodeType":"YulFunctionCall","src":"14871:11:87"}],"functionName":{"name":"extract_byte_array_length","nativeSrc":"14845:25:87","nodeType":"YulIdentifier","src":"14845:25:87"},"nativeSrc":"14845:38:87","nodeType":"YulFunctionCall","src":"14845:38:87"},{"name":"newLen","nativeSrc":"14885:6:87","nodeType":"YulIdentifier","src":"14885:6:87"}],"functionName":{"name":"clean_up_bytearray_end_slots_string_storage","nativeSrc":"14795:43:87","nodeType":"YulIdentifier","src":"14795:43:87"},"nativeSrc":"14795:97:87","nodeType":"YulFunctionCall","src":"14795:97:87"},"nativeSrc":"14795:97:87","nodeType":"YulExpressionStatement","src":"14795:97:87"},{"nativeSrc":"14901:18:87","nodeType":"YulVariableDeclaration","src":"14901:18:87","value":{"kind":"number","nativeSrc":"14918:1:87","nodeType":"YulLiteral","src":"14918:1:87","type":"","value":"0"},"variables":[{"name":"srcOffset","nativeSrc":"14905:9:87","nodeType":"YulTypedName","src":"14905:9:87","type":""}]},{"nativeSrc":"14928:17:87","nodeType":"YulAssignment","src":"14928:17:87","value":{"kind":"number","nativeSrc":"14941:4:87","nodeType":"YulLiteral","src":"14941:4:87","type":"","value":"0x20"},"variableNames":[{"name":"srcOffset","nativeSrc":"14928:9:87","nodeType":"YulIdentifier","src":"14928:9:87"}]},{"cases":[{"body":{"nativeSrc":"14991:642:87","nodeType":"YulBlock","src":"14991:642:87","statements":[{"nativeSrc":"15005:35:87","nodeType":"YulVariableDeclaration","src":"15005:35:87","value":{"arguments":[{"name":"newLen","nativeSrc":"15024:6:87","nodeType":"YulIdentifier","src":"15024:6:87"},{"arguments":[{"kind":"number","nativeSrc":"15036:2:87","nodeType":"YulLiteral","src":"15036:2:87","type":"","value":"31"}],"functionName":{"name":"not","nativeSrc":"15032:3:87","nodeType":"YulIdentifier","src":"15032:3:87"},"nativeSrc":"15032:7:87","nodeType":"YulFunctionCall","src":"15032:7:87"}],"functionName":{"name":"and","nativeSrc":"15020:3:87","nodeType":"YulIdentifier","src":"15020:3:87"},"nativeSrc":"15020:20:87","nodeType":"YulFunctionCall","src":"15020:20:87"},"variables":[{"name":"loopEnd","nativeSrc":"15009:7:87","nodeType":"YulTypedName","src":"15009:7:87","type":""}]},{"nativeSrc":"15053:49:87","nodeType":"YulVariableDeclaration","src":"15053:49:87","value":{"arguments":[{"name":"slot","nativeSrc":"15097:4:87","nodeType":"YulIdentifier","src":"15097:4:87"}],"functionName":{"name":"array_dataslot_string_storage","nativeSrc":"15067:29:87","nodeType":"YulIdentifier","src":"15067:29:87"},"nativeSrc":"15067:35:87","nodeType":"YulFunctionCall","src":"15067:35:87"},"variables":[{"name":"dstPtr","nativeSrc":"15057:6:87","nodeType":"YulTypedName","src":"15057:6:87","type":""}]},{"nativeSrc":"15115:10:87","nodeType":"YulVariableDeclaration","src":"15115:10:87","value":{"kind":"number","nativeSrc":"15124:1:87","nodeType":"YulLiteral","src":"15124:1:87","type":"","value":"0"},"variables":[{"name":"i","nativeSrc":"15119:1:87","nodeType":"YulTypedName","src":"15119:1:87","type":""}]},{"body":{"nativeSrc":"15195:165:87","nodeType":"YulBlock","src":"15195:165:87","statements":[{"expression":{"arguments":[{"name":"dstPtr","nativeSrc":"15220:6:87","nodeType":"YulIdentifier","src":"15220:6:87"},{"arguments":[{"arguments":[{"name":"src","nativeSrc":"15238:3:87","nodeType":"YulIdentifier","src":"15238:3:87"},{"name":"srcOffset","nativeSrc":"15243:9:87","nodeType":"YulIdentifier","src":"15243:9:87"}],"functionName":{"name":"add","nativeSrc":"15234:3:87","nodeType":"YulIdentifier","src":"15234:3:87"},"nativeSrc":"15234:19:87","nodeType":"YulFunctionCall","src":"15234:19:87"}],"functionName":{"name":"mload","nativeSrc":"15228:5:87","nodeType":"YulIdentifier","src":"15228:5:87"},"nativeSrc":"15228:26:87","nodeType":"YulFunctionCall","src":"15228:26:87"}],"functionName":{"name":"sstore","nativeSrc":"15213:6:87","nodeType":"YulIdentifier","src":"15213:6:87"},"nativeSrc":"15213:42:87","nodeType":"YulFunctionCall","src":"15213:42:87"},"nativeSrc":"15213:42:87","nodeType":"YulExpressionStatement","src":"15213:42:87"},{"nativeSrc":"15272:24:87","nodeType":"YulAssignment","src":"15272:24:87","value":{"arguments":[{"name":"dstPtr","nativeSrc":"15286:6:87","nodeType":"YulIdentifier","src":"15286:6:87"},{"kind":"number","nativeSrc":"15294:1:87","nodeType":"YulLiteral","src":"15294:1:87","type":"","value":"1"}],"functionName":{"name":"add","nativeSrc":"15282:3:87","nodeType":"YulIdentifier","src":"15282:3:87"},"nativeSrc":"15282:14:87","nodeType":"YulFunctionCall","src":"15282:14:87"},"variableNames":[{"name":"dstPtr","nativeSrc":"15272:6:87","nodeType":"YulIdentifier","src":"15272:6:87"}]},{"nativeSrc":"15313:33:87","nodeType":"YulAssignment","src":"15313:33:87","value":{"arguments":[{"name":"srcOffset","nativeSrc":"15330:9:87","nodeType":"YulIdentifier","src":"15330:9:87"},{"kind":"number","nativeSrc":"15341:4:87","nodeType":"YulLiteral","src":"15341:4:87","type":"","value":"0x20"}],"functionName":{"name":"add","nativeSrc":"15326:3:87","nodeType":"YulIdentifier","src":"15326:3:87"},"nativeSrc":"15326:20:87","nodeType":"YulFunctionCall","src":"15326:20:87"},"variableNames":[{"name":"srcOffset","nativeSrc":"15313:9:87","nodeType":"YulIdentifier","src":"15313:9:87"}]}]},"condition":{"arguments":[{"name":"i","nativeSrc":"15149:1:87","nodeType":"YulIdentifier","src":"15149:1:87"},{"name":"loopEnd","nativeSrc":"15152:7:87","nodeType":"YulIdentifier","src":"15152:7:87"}],"functionName":{"name":"lt","nativeSrc":"15146:2:87","nodeType":"YulIdentifier","src":"15146:2:87"},"nativeSrc":"15146:14:87","nodeType":"YulFunctionCall","src":"15146:14:87"},"nativeSrc":"15138:222:87","nodeType":"YulForLoop","post":{"nativeSrc":"15161:21:87","nodeType":"YulBlock","src":"15161:21:87","statements":[{"nativeSrc":"15163:17:87","nodeType":"YulAssignment","src":"15163:17:87","value":{"arguments":[{"name":"i","nativeSrc":"15172:1:87","nodeType":"YulIdentifier","src":"15172:1:87"},{"kind":"number","nativeSrc":"15175:4:87","nodeType":"YulLiteral","src":"15175:4:87","type":"","value":"0x20"}],"functionName":{"name":"add","nativeSrc":"15168:3:87","nodeType":"YulIdentifier","src":"15168:3:87"},"nativeSrc":"15168:12:87","nodeType":"YulFunctionCall","src":"15168:12:87"},"variableNames":[{"name":"i","nativeSrc":"15163:1:87","nodeType":"YulIdentifier","src":"15163:1:87"}]}]},"pre":{"nativeSrc":"15142:3:87","nodeType":"YulBlock","src":"15142:3:87","statements":[]},"src":"15138:222:87"},{"body":{"nativeSrc":"15408:166:87","nodeType":"YulBlock","src":"15408:166:87","statements":[{"nativeSrc":"15426:43:87","nodeType":"YulVariableDeclaration","src":"15426:43:87","value":{"arguments":[{"arguments":[{"name":"src","nativeSrc":"15453:3:87","nodeType":"YulIdentifier","src":"15453:3:87"},{"name":"srcOffset","nativeSrc":"15458:9:87","nodeType":"YulIdentifier","src":"15458:9:87"}],"functionName":{"name":"add","nativeSrc":"15449:3:87","nodeType":"YulIdentifier","src":"15449:3:87"},"nativeSrc":"15449:19:87","nodeType":"YulFunctionCall","src":"15449:19:87"}],"functionName":{"name":"mload","nativeSrc":"15443:5:87","nodeType":"YulIdentifier","src":"15443:5:87"},"nativeSrc":"15443:26:87","nodeType":"YulFunctionCall","src":"15443:26:87"},"variables":[{"name":"lastValue","nativeSrc":"15430:9:87","nodeType":"YulTypedName","src":"15430:9:87","type":""}]},{"expression":{"arguments":[{"name":"dstPtr","nativeSrc":"15493:6:87","nodeType":"YulIdentifier","src":"15493:6:87"},{"arguments":[{"name":"lastValue","nativeSrc":"15505:9:87","nodeType":"YulIdentifier","src":"15505:9:87"},{"arguments":[{"arguments":[{"arguments":[{"arguments":[{"kind":"number","nativeSrc":"15532:1:87","nodeType":"YulLiteral","src":"15532:1:87","type":"","value":"3"},{"name":"newLen","nativeSrc":"15535:6:87","nodeType":"YulIdentifier","src":"15535:6:87"}],"functionName":{"name":"shl","nativeSrc":"15528:3:87","nodeType":"YulIdentifier","src":"15528:3:87"},"nativeSrc":"15528:14:87","nodeType":"YulFunctionCall","src":"15528:14:87"},{"kind":"number","nativeSrc":"15544:3:87","nodeType":"YulLiteral","src":"15544:3:87","type":"","value":"248"}],"functionName":{"name":"and","nativeSrc":"15524:3:87","nodeType":"YulIdentifier","src":"15524:3:87"},"nativeSrc":"15524:24:87","nodeType":"YulFunctionCall","src":"15524:24:87"},{"arguments":[{"kind":"number","nativeSrc":"15554:1:87","nodeType":"YulLiteral","src":"15554:1:87","type":"","value":"0"}],"functionName":{"name":"not","nativeSrc":"15550:3:87","nodeType":"YulIdentifier","src":"15550:3:87"},"nativeSrc":"15550:6:87","nodeType":"YulFunctionCall","src":"15550:6:87"}],"functionName":{"name":"shr","nativeSrc":"15520:3:87","nodeType":"YulIdentifier","src":"15520:3:87"},"nativeSrc":"15520:37:87","nodeType":"YulFunctionCall","src":"15520:37:87"}],"functionName":{"name":"not","nativeSrc":"15516:3:87","nodeType":"YulIdentifier","src":"15516:3:87"},"nativeSrc":"15516:42:87","nodeType":"YulFunctionCall","src":"15516:42:87"}],"functionName":{"name":"and","nativeSrc":"15501:3:87","nodeType":"YulIdentifier","src":"15501:3:87"},"nativeSrc":"15501:58:87","nodeType":"YulFunctionCall","src":"15501:58:87"}],"functionName":{"name":"sstore","nativeSrc":"15486:6:87","nodeType":"YulIdentifier","src":"15486:6:87"},"nativeSrc":"15486:74:87","nodeType":"YulFunctionCall","src":"15486:74:87"},"nativeSrc":"15486:74:87","nodeType":"YulExpressionStatement","src":"15486:74:87"}]},"condition":{"arguments":[{"name":"loopEnd","nativeSrc":"15379:7:87","nodeType":"YulIdentifier","src":"15379:7:87"},{"name":"newLen","nativeSrc":"15388:6:87","nodeType":"YulIdentifier","src":"15388:6:87"}],"functionName":{"name":"lt","nativeSrc":"15376:2:87","nodeType":"YulIdentifier","src":"15376:2:87"},"nativeSrc":"15376:19:87","nodeType":"YulFunctionCall","src":"15376:19:87"},"nativeSrc":"15373:201:87","nodeType":"YulIf","src":"15373:201:87"},{"expression":{"arguments":[{"name":"slot","nativeSrc":"15594:4:87","nodeType":"YulIdentifier","src":"15594:4:87"},{"arguments":[{"arguments":[{"kind":"number","nativeSrc":"15608:1:87","nodeType":"YulLiteral","src":"15608:1:87","type":"","value":"1"},{"name":"newLen","nativeSrc":"15611:6:87","nodeType":"YulIdentifier","src":"15611:6:87"}],"functionName":{"name":"shl","nativeSrc":"15604:3:87","nodeType":"YulIdentifier","src":"15604:3:87"},"nativeSrc":"15604:14:87","nodeType":"YulFunctionCall","src":"15604:14:87"},{"kind":"number","nativeSrc":"15620:1:87","nodeType":"YulLiteral","src":"15620:1:87","type":"","value":"1"}],"functionName":{"name":"add","nativeSrc":"15600:3:87","nodeType":"YulIdentifier","src":"15600:3:87"},"nativeSrc":"15600:22:87","nodeType":"YulFunctionCall","src":"15600:22:87"}],"functionName":{"name":"sstore","nativeSrc":"15587:6:87","nodeType":"YulIdentifier","src":"15587:6:87"},"nativeSrc":"15587:36:87","nodeType":"YulFunctionCall","src":"15587:36:87"},"nativeSrc":"15587:36:87","nodeType":"YulExpressionStatement","src":"15587:36:87"}]},"nativeSrc":"14984:649:87","nodeType":"YulCase","src":"14984:649:87","value":{"kind":"number","nativeSrc":"14989:1:87","nodeType":"YulLiteral","src":"14989:1:87","type":"","value":"1"}},{"body":{"nativeSrc":"15650:234:87","nodeType":"YulBlock","src":"15650:234:87","statements":[{"nativeSrc":"15664:14:87","nodeType":"YulVariableDeclaration","src":"15664:14:87","value":{"kind":"number","nativeSrc":"15677:1:87","nodeType":"YulLiteral","src":"15677:1:87","type":"","value":"0"},"variables":[{"name":"value","nativeSrc":"15668:5:87","nodeType":"YulTypedName","src":"15668:5:87","type":""}]},{"body":{"nativeSrc":"15713:67:87","nodeType":"YulBlock","src":"15713:67:87","statements":[{"nativeSrc":"15731:35:87","nodeType":"YulAssignment","src":"15731:35:87","value":{"arguments":[{"arguments":[{"name":"src","nativeSrc":"15750:3:87","nodeType":"YulIdentifier","src":"15750:3:87"},{"name":"srcOffset","nativeSrc":"15755:9:87","nodeType":"YulIdentifier","src":"15755:9:87"}],"functionName":{"name":"add","nativeSrc":"15746:3:87","nodeType":"YulIdentifier","src":"15746:3:87"},"nativeSrc":"15746:19:87","nodeType":"YulFunctionCall","src":"15746:19:87"}],"functionName":{"name":"mload","nativeSrc":"15740:5:87","nodeType":"YulIdentifier","src":"15740:5:87"},"nativeSrc":"15740:26:87","nodeType":"YulFunctionCall","src":"15740:26:87"},"variableNames":[{"name":"value","nativeSrc":"15731:5:87","nodeType":"YulIdentifier","src":"15731:5:87"}]}]},"condition":{"name":"newLen","nativeSrc":"15694:6:87","nodeType":"YulIdentifier","src":"15694:6:87"},"nativeSrc":"15691:89:87","nodeType":"YulIf","src":"15691:89:87"},{"expression":{"arguments":[{"name":"slot","nativeSrc":"15800:4:87","nodeType":"YulIdentifier","src":"15800:4:87"},{"arguments":[{"name":"value","nativeSrc":"15859:5:87","nodeType":"YulIdentifier","src":"15859:5:87"},{"name":"newLen","nativeSrc":"15866:6:87","nodeType":"YulIdentifier","src":"15866:6:87"}],"functionName":{"name":"extract_used_part_and_set_length_of_short_byte_array","nativeSrc":"15806:52:87","nodeType":"YulIdentifier","src":"15806:52:87"},"nativeSrc":"15806:67:87","nodeType":"YulFunctionCall","src":"15806:67:87"}],"functionName":{"name":"sstore","nativeSrc":"15793:6:87","nodeType":"YulIdentifier","src":"15793:6:87"},"nativeSrc":"15793:81:87","nodeType":"YulFunctionCall","src":"15793:81:87"},"nativeSrc":"15793:81:87","nodeType":"YulExpressionStatement","src":"15793:81:87"}]},"nativeSrc":"15642:242:87","nodeType":"YulCase","src":"15642:242:87","value":"default"}],"expression":{"arguments":[{"name":"newLen","nativeSrc":"14964:6:87","nodeType":"YulIdentifier","src":"14964:6:87"},{"kind":"number","nativeSrc":"14972:2:87","nodeType":"YulLiteral","src":"14972:2:87","type":"","value":"31"}],"functionName":{"name":"gt","nativeSrc":"14961:2:87","nodeType":"YulIdentifier","src":"14961:2:87"},"nativeSrc":"14961:14:87","nodeType":"YulFunctionCall","src":"14961:14:87"},"nativeSrc":"14954:930:87","nodeType":"YulSwitch","src":"14954:930:87"}]},"name":"copy_byte_array_to_storage_from_t_string_memory_ptr_to_t_string_storage","nativeSrc":"14591:1299:87","nodeType":"YulFunctionDefinition","parameters":[{"name":"slot","nativeSrc":"14672:4:87","nodeType":"YulTypedName","src":"14672:4:87","type":""},{"name":"src","nativeSrc":"14678:3:87","nodeType":"YulTypedName","src":"14678:3:87","type":""}],"src":"14591:1299:87"}]},"contents":"{\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_string(value, pos) -> end\n    {\n        let length := mload(value)\n        mstore(pos, length)\n        mcopy(add(pos, 0x20), add(value, 0x20), length)\n        mstore(add(add(pos, length), 0x20), 0)\n        end := add(add(pos, and(add(length, 31), not(31))), 0x20)\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_string(value0, 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        let value := 0\n        value := calldataload(headStart)\n        value0 := value\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    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        let value_1 := 0\n        value_1 := calldataload(add(headStart, 32))\n        value1 := value_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_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        let value_2 := 0\n        value_2 := calldataload(add(headStart, 64))\n        value2 := value_2\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 abi_encode_tuple_t_address__to_t_address__fromStack_reversed(headStart, value0) -> tail\n    {\n        tail := add(headStart, 32)\n        mstore(headStart, and(value0, sub(shl(160, 1), 1)))\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_bytes32(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_bytes_memory_ptr__to_t_bytes_memory_ptr__fromStack_reversed(headStart, value0) -> tail\n    {\n        mstore(headStart, 32)\n        tail := abi_encode_string(value0, add(headStart, 32))\n    }\n    function panic_error_0x41()\n    {\n        mstore(0, shl(224, 0x4e487b71))\n        mstore(4, 0x41)\n        revert(0, 0x24)\n    }\n    function abi_decode_bytes(offset, end) -> array\n    {\n        if iszero(slt(add(offset, 0x1f), end)) { revert(0, 0) }\n        let length := calldataload(offset)\n        let src := add(offset, 0x20)\n        let array_1 := 0\n        let size := 0\n        if gt(length, 0xffffffffffffffff) { panic_error_0x41() }\n        let result := and(add(length, 31), not(31))\n        size := add(result, 0x20)\n        let memPtr := 0\n        memPtr := mload(64)\n        let newFreePtr := add(memPtr, and(add(result, 63), not(31)))\n        if or(gt(newFreePtr, 0xffffffffffffffff), lt(newFreePtr, memPtr)) { panic_error_0x41() }\n        mstore(64, newFreePtr)\n        array_1 := memPtr\n        mstore(memPtr, length)\n        if gt(add(src, length), end) { revert(0, 0) }\n        calldatacopy(add(memPtr, 0x20), src, length)\n        mstore(add(add(memPtr, length), 0x20), 0)\n        array := memPtr\n    }\n    function abi_decode_tuple_t_addresst_bytes_memory_ptr(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 offset := calldataload(add(headStart, 32))\n        if gt(offset, 0xffffffffffffffff) { revert(0, 0) }\n        value1 := abi_decode_bytes(add(headStart, offset), dataEnd)\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_decode_tuple_t_uint256t_address(headStart, dataEnd) -> value0, value1\n    {\n        if slt(sub(dataEnd, headStart), 64) { revert(0, 0) }\n        let value := 0\n        value := calldataload(headStart)\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_encode_tuple_t_contract$_IInvestStrategy_$20725__to_t_address__fromStack_reversed(headStart, value0) -> tail\n    {\n        tail := add(headStart, 32)\n        mstore(headStart, and(value0, sub(shl(160, 1), 1)))\n    }\n    function abi_decode_tuple_t_uint256t_addresst_address(headStart, dataEnd) -> value0, value1, value2\n    {\n        if slt(sub(dataEnd, headStart), 96) { revert(0, 0) }\n        let value := 0\n        value := calldataload(headStart)\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    }\n    function abi_decode_tuple_t_uint8t_bytes_memory_ptr(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, 0xff))) { revert(0, 0) }\n        value0 := value\n        let offset := calldataload(add(headStart, 32))\n        if gt(offset, 0xffffffffffffffff) { revert(0, 0) }\n        value1 := abi_decode_bytes(add(headStart, offset), dataEnd)\n    }\n    function abi_decode_tuple_t_contract$_IInvestStrategy_$20725t_bytes_memory_ptrt_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 offset := calldataload(add(headStart, 32))\n        if gt(offset, 0xffffffffffffffff) { revert(0, 0) }\n        value1 := abi_decode_bytes(add(headStart, offset), dataEnd)\n        let value_1 := calldataload(add(headStart, 64))\n        if iszero(eq(value_1, iszero(iszero(value_1)))) { revert(0, 0) }\n        value2 := value_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_string_memory_ptrt_string_memory_ptrt_contract$_IERC20_$8679t_contract$_IInvestStrategy_$20725t_bytes_memory_ptr(headStart, dataEnd) -> value0, value1, value2, value3, value4\n    {\n        if slt(sub(dataEnd, headStart), 160) { revert(0, 0) }\n        let offset := calldataload(headStart)\n        if gt(offset, 0xffffffffffffffff) { revert(0, 0) }\n        value0 := abi_decode_bytes(add(headStart, offset), dataEnd)\n        let offset_1 := calldataload(add(headStart, 32))\n        if gt(offset_1, 0xffffffffffffffff) { revert(0, 0) }\n        value1 := abi_decode_bytes(add(headStart, offset_1), dataEnd)\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_address(value_1)\n        value3 := value_1\n        let offset_2 := calldataload(add(headStart, 128))\n        if gt(offset_2, 0xffffffffffffffff) { revert(0, 0) }\n        value4 := abi_decode_bytes(add(headStart, offset_2), 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_0x11()\n    {\n        mstore(0, shl(224, 0x4e487b71))\n        mstore(4, 0x11)\n        revert(0, 0x24)\n    }\n    function checked_add_t_uint8(x, y) -> sum\n    {\n        sum := add(and(x, 0xff), and(y, 0xff))\n        if gt(sum, 0xff) { panic_error_0x11() }\n    }\n    function abi_decode_tuple_t_bytes32_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_address_t_uint256_t_uint256__to_t_address_t_uint256_t_uint256__fromStack_reversed(headStart, value2, value1, value0) -> tail\n    {\n        tail := add(headStart, 96)\n        mstore(headStart, and(value0, sub(shl(160, 1), 1)))\n        mstore(add(headStart, 32), value1)\n        mstore(add(headStart, 64), value2)\n    }\n    function abi_encode_tuple_t_rational_1_by_1__to_t_uint64__fromStack_reversed(headStart, value0) -> tail\n    {\n        tail := add(headStart, 32)\n        mstore(headStart, and(value0, 0xffffffffffffffff))\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 checked_add_t_uint256(x, y) -> sum\n    {\n        sum := add(x, y)\n        if gt(x, sum) { panic_error_0x11() }\n    }\n    function checked_exp_helper(_base, exponent, max) -> power, base\n    {\n        power := 1\n        base := _base\n        for { } gt(exponent, 1) { }\n        {\n            if gt(base, div(max, base)) { panic_error_0x11() }\n            if and(exponent, 1) { power := mul(power, base) }\n            base := mul(base, base)\n            exponent := shr(1, exponent)\n        }\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            let _1 := 0\n            _1 := 0\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            let _2 := 0\n            _2 := 0\n            leave\n        }\n        let power_1, base_1 := checked_exp_helper(base, exponent, not(0))\n        if gt(power_1, div(not(0), base_1)) { panic_error_0x11() }\n        power := mul(power_1, base_1)\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 abi_encode_tuple_t_uint8_t_bytes_memory_ptr__to_t_uint8_t_bytes_memory_ptr__fromStack_reversed(headStart, value1, value0) -> tail\n    {\n        mstore(headStart, and(value0, 0xff))\n        mstore(add(headStart, 32), 64)\n        tail := abi_encode_string(value1, add(headStart, 64))\n    }\n    function abi_encode_tuple_t_contract$_IInvestStrategy_$20725_t_contract$_IInvestStrategy_$20725__to_t_address_t_address__fromStack_reversed(headStart, value1, value0) -> tail\n    {\n        tail := add(headStart, 64)\n        mstore(headStart, and(value0, sub(shl(160, 1), 1)))\n        mstore(add(headStart, 32), and(value1, sub(shl(160, 1), 1)))\n    }\n    function panic_error_0x12()\n    {\n        mstore(0, shl(224, 0x4e487b71))\n        mstore(4, 0x12)\n        revert(0, 0x24)\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_packed_t_bytes_memory_ptr__to_t_bytes_memory_ptr__nonPadded_inplace_fromStack_reversed(pos, value0) -> end\n    {\n        let length := mload(value0)\n        mcopy(pos, add(value0, 0x20), length)\n        let _1 := add(pos, length)\n        mstore(_1, 0)\n        end := _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        let value := mload(headStart)\n        validator_revert_address(value)\n        value0 := value\n    }\n    function panic_error_0x21()\n    {\n        mstore(0, shl(224, 0x4e487b71))\n        mstore(4, 0x21)\n        revert(0, 0x24)\n    }\n    function mod_t_uint8(x, y) -> r\n    {\n        let y_1 := and(y, 0xff)\n        if iszero(y_1)\n        {\n            mstore(0, shl(224, 0x4e487b71))\n            mstore(4, 0x12)\n            revert(0, 0x24)\n        }\n        r := mod(and(x, 0xff), y_1)\n    }\n    function array_dataslot_string_storage(ptr) -> data\n    {\n        mstore(0, ptr)\n        data := keccak256(0, 0x20)\n    }\n    function clean_up_bytearray_end_slots_string_storage(array, len, startIndex)\n    {\n        if gt(len, 31)\n        {\n            mstore(0, array)\n            let data := keccak256(0, 0x20)\n            let deleteStart := add(data, shr(5, add(startIndex, 31)))\n            if lt(startIndex, 0x20) { deleteStart := data }\n            let _1 := add(data, shr(5, add(len, 31)))\n            let start := deleteStart\n            for { } lt(start, _1) { start := add(start, 1) }\n            { sstore(start, 0) }\n        }\n    }\n    function extract_used_part_and_set_length_of_short_byte_array(data, len) -> used\n    {\n        used := or(and(data, not(shr(shl(3, len), not(0)))), shl(1, len))\n    }\n    function copy_byte_array_to_storage_from_t_string_memory_ptr_to_t_string_storage(slot, src)\n    {\n        let newLen := mload(src)\n        if gt(newLen, 0xffffffffffffffff) { panic_error_0x41() }\n        clean_up_bytearray_end_slots_string_storage(slot, extract_byte_array_length(sload(slot)), newLen)\n        let srcOffset := 0\n        srcOffset := 0x20\n        switch gt(newLen, 31)\n        case 1 {\n            let loopEnd := and(newLen, not(31))\n            let dstPtr := array_dataslot_string_storage(slot)\n            let i := 0\n            for { } lt(i, loopEnd) { i := add(i, 0x20) }\n            {\n                sstore(dstPtr, mload(add(src, srcOffset)))\n                dstPtr := add(dstPtr, 1)\n                srcOffset := add(srcOffset, 0x20)\n            }\n            if lt(loopEnd, newLen)\n            {\n                let lastValue := mload(add(src, srcOffset))\n                sstore(dstPtr, and(lastValue, not(shr(and(shl(3, newLen), 248), not(0)))))\n            }\n            sstore(slot, add(shl(1, newLen), 1))\n        }\n        default {\n            let value := 0\n            if newLen\n            {\n                value := mload(add(src, srcOffset))\n            }\n            sstore(slot, extract_used_part_and_set_length_of_short_byte_array(value, newLen))\n        }\n    }\n}","id":87,"language":"Yul","name":"#utility.yul"}],"immutableReferences":{"7936":[{"length":32,"start":3831},{"length":32,"start":3872},{"length":32,"start":4188}]},"linkReferences":{},"object":"6080604052600436106101e6575f3560e01c806394bf804d11610108578063c63d75b61161009d578063d905777e1161006d578063d905777e1461055f578063d9221bb51461057e578063dd62ed3e1461059d578063ef8b30f714610502578063effe0e1c146105bc575f5ffd5b8063c63d75b6146104e3578063c6e6f59214610502578063ce96cb7714610521578063d4f3911014610540575f5ffd5b8063ad3cb1cc116100d8578063ad3cb1cc14610456578063b3d7f6b914610486578063b460af94146104a5578063ba087652146104c4575f5ffd5b806394bf804d146103e857806395d89b4114610407578063a8c62e761461041b578063a9059cbb14610437575f5ffd5b806338d52e0f1161017e5780634f1ef2861161014e5780634f1ef2861461038157806352d1902d146103965780636e553f65146103aa57806370a08231146103c9575f5ffd5b806338d52e0f14610317578063402d267d1461034357806347e57533146103625780634cdad50614610232575f5ffd5b80630a28a477116101b95780630a28a4771461028057806318160ddd1461029f57806323b872dd146102d2578063313ce567146102f1575f5ffd5b806301e1d114146101ea57806306fdde031461021157806307a2d13a14610232578063095ea7b314610251575b5f5ffd5b3480156101f5575f5ffd5b506101fe6105db565b6040519081526020015b60405180910390f35b34801561021c575f5ffd5b506102256105f5565b6040516102089190612199565b34801561023d575f5ffd5b506101fe61024c3660046121ab565b6106b5565b34801561025c575f5ffd5b5061027061026b3660046121d6565b6106c6565b6040519015158152602001610208565b34801561028b575f5ffd5b506101fe61029a3660046121ab565b6106dd565b3480156102aa575f5ffd5b507f52c63247e1f47db19d5ce0460030c497f067ca4cebf71ba98eeadabe20bace02546101fe565b3480156102dd575f5ffd5b506102706102ec366004612200565b6106e9565b3480156102fc575f5ffd5b5061030561070e565b60405160ff9091168152602001610208565b348015610322575f5ffd5b5061032b610750565b6040516001600160a01b039091168152602001610208565b34801561034e575f5ffd5b506101fe61035d36600461223e565b61077e565b34801561036d575f5ffd5b5061022561037c3660046121ab565b6107a3565b61039461038f3660046122fe565b6108c0565b005b3480156103a1575f5ffd5b506101fe6108d6565b3480156103b5575f5ffd5b506101fe6103c436600461234b565b6108f1565b3480156103d4575f5ffd5b506101fe6103e336600461223e565b61094e565b3480156103f3575f5ffd5b506101fe61040236600461234b565b610974565b348015610412575f5ffd5b506102256109c0565b348015610426575f5ffd5b505f546001600160a01b031661032b565b348015610442575f5ffd5b506102706104513660046121d6565b6109fe565b348015610461575f5ffd5b50610225604051806040016040528060058152602001640352e302e360dc1b81525081565b348015610491575f5ffd5b506101fe6104a03660046121ab565b610a0b565b3480156104b0575f5ffd5b506101fe6104bf366004612379565b610a17565b3480156104cf575f5ffd5b506101fe6104de366004612379565b610a6d565b3480156104ee575f5ffd5b506101fe6104fd36600461223e565b610aba565b34801561050d575f5ffd5b506101fe61051c3660046121ab565b610ae0565b34801561052c575f5ffd5b506101fe61053b36600461223e565b610aeb565b34801561054b575f5ffd5b5061022561055a3660046123b8565b610b0d565b34801561056a575f5ffd5b506101fe61057936600461223e565b610b26565b348015610589575f5ffd5b506103946105983660046123d9565b610b55565b3480156105a8575f5ffd5b506101fe6105b7366004612432565b610b97565b3480156105c7575f5ffd5b506103946105d636600461245e565b610be0565b5f80546105f0906001600160a01b0316610ce1565b905090565b7f52c63247e1f47db19d5ce0460030c497f067ca4cebf71ba98eeadabe20bace0380546060915f5160206128535f395f51905f529161063390612511565b80601f016020809104026020016040519081016040528092919081815260200182805461065f90612511565b80156106aa5780601f10610681576101008083540402835291602001916106aa565b820191905f5260205f20905b81548152906001019060200180831161068d57829003601f168201915b505050505091505090565b5f6106c0825f610d4a565b92915050565b5f336106d3818585610da1565b5060019392505050565b5f6106c0826001610db3565b5f336106f6858285610e01565b610701858585610e52565b60019150505b9392505050565b5f807f0773e532dfede91f04b12a73d3d2acd361424f41f76b4fb79f090161e36b4e0090505f815461074a9190600160a01b900460ff1661255d565b91505090565b7f0773e532dfede91f04b12a73d3d2acd361424f41f76b4fb79f090161e36b4e00546001600160a01b031690565b5f80546106c090610797906001600160a01b0316610eaf565b5f19610edd565b610edd565b5f5460408051635b9a4c3560e01b815290516060926001600160a01b031691635b9a4c359160048083019260209291908290030181865afa1580156107ea573d5f5f3e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061080e9190612576565b821461082d5760405163213109dd60e11b815260040160405180910390fd5b81548290819061083c90612511565b80601f016020809104026020016040519081016040528092919081815260200182805461086890612511565b80156108b35780601f1061088a576101008083540402835291602001916108b3565b820191905f5260205f20905b81548152906001019060200180831161089657829003601f168201915b5050505050915050919050565b6108c8610eec565b6108d28282610f95565b5050565b5f6108df611051565b505f5160206128735f395f51905f5290565b5f5f6108fc8361077e565b90508084111561092e57828482604051633c8097d960e11b81526004016109259392919061258d565b60405180910390fd5b5f61093885610ae0565b90506109463385878461109a565b949350505050565b6001600160a01b03165f9081525f5160206128535f395f51905f52602052604090205490565b5f5f61097f83610aba565b9050808411156109a85782848260405163284ff66760e01b81526004016109259392919061258d565b5f6109b285610a0b565b90506109463385838861109a565b7f52c63247e1f47db19d5ce0460030c497f067ca4cebf71ba98eeadabe20bace0480546060915f5160206128535f395f51905f529161063390612511565b5f336106d3818585610e52565b5f6106c0826001610d4a565b5f5f610a2283610aeb565b905080851115610a4b57828582604051633fa733bb60e21b81526004016109259392919061258d565b5f610a55866106dd565b9050610a6433868689856110c7565b95945050505050565b5f5f610a7883610b26565b905080851115610aa157828582604051632e52afbb60e21b81526004016109259392919061258d565b5f610aab866106b5565b9050610a64338686848a6110c7565b5f80548190610ad1906001600160a01b0316610eaf565b9050610707610797825f610db3565b5f6106c0825f610db3565b5f80546106c090610b04906001600160a01b03166110ef565b61079e8461111d565b5f54606090610707906001600160a01b0316848461112a565b5f80548190610b3d906001600160a01b03166110ef565b9050610707610b4c825f610db3565b61079e8561117c565b5f54610b74906001600160a01b03168484610b6e610750565b85611186565b50505f80546001600160a01b0319166001600160a01b0392909216919091179055565b6001600160a01b039182165f9081527f52c63247e1f47db19d5ce0460030c497f067ca4cebf71ba98eeadabe20bace016020908152604080832093909416825291909152205490565b5f610be96112d4565b805490915060ff600160401b820416159067ffffffffffffffff165f81158015610c105750825b90505f8267ffffffffffffffff166001148015610c2c5750303b155b905081158015610c3a575080155b15610c585760405163f92ee8a960e01b815260040160405180910390fd5b845467ffffffffffffffff191660011785558315610c8257845460ff60401b1916600160401b1785555b610c8f8a8a8a8a8a6112fc565b8315610cd557845460ff60401b19168555604051600181527fc7f505b2f371ae2175ee4913f4499e1f2633a7b5936321eed1cdaeb6115181d29060200160405180910390a15b50505050505050505050565b60405163f3e0ffbf60e01b81523060048201525f906001600160a01b0383169063f3e0ffbf906024015b602060405180830381865afa158015610d26573d5f5f3e3d5ffd5b505050506040513d601f19601f820116820180604052508101906106c09190612576565b5f610707610d566105db565b610d619060016125ae565b610d6c5f600a6126a4565b7f52c63247e1f47db19d5ce0460030c497f067ca4cebf71ba98eeadabe20bace0254610d9891906125ae565b85919085611321565b610dae8383836001611363565b505050565b5f610707610dc282600a6126a4565b7f52c63247e1f47db19d5ce0460030c497f067ca4cebf71ba98eeadabe20bace0254610dee91906125ae565b610df66105db565b610d989060016125ae565b5f610e0c8484610b97565b90505f19811015610e4c5781811015610e3e57828183604051637dc7a0d960e11b81526004016109259392919061258d565b610e4c84848484035f611363565b50505050565b6001600160a01b038316610e7b57604051634b637e8f60e11b81525f6004820152602401610925565b6001600160a01b038216610ea45760405163ec442f0560e01b81525f6004820152602401610925565b610dae838383611446565b60405163402d267d60e01b81523060048201525f906001600160a01b0383169063402d267d90602401610d0b565b5f828218828410028218610707565b306001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000161480610f7257507f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316610f665f5160206128735f395f51905f52546001600160a01b031690565b6001600160a01b031614155b15610f905760405163703e46dd60e11b815260040160405180910390fd5b565b50565b816001600160a01b03166352d1902d6040518163ffffffff1660e01b8152600401602060405180830381865afa925050508015610fef575060408051601f3d908101601f19168201909252610fec91810190612576565b60015b61101757604051634c9c8ce360e01b81526001600160a01b0383166004820152602401610925565b5f5160206128735f395f51905f52811461104757604051632a87526960e21b815260048101829052602401610925565b610dae838361156c565b306001600160a01b037f00000000000000000000000000000000000000000000000000000000000000001614610f905760405163703e46dd60e11b815260040160405180910390fd5b6110a6848484846115c1565b5f80546110c0916001600160a01b0390911690849061162c565b5050505050565b5f80546110e1916001600160a01b03909116908490611768565b506110c08585858585611889565b60405163ce96cb7760e01b81523060048201525f906001600160a01b0383169063ce96cb7790602401610d0b565b5f6106c061024c83610b26565b606061094683836040516024016111429291906126b2565b60408051601f198184030181529190526020810180516001600160e01b03166304c0d8e160e11b1790526001600160a01b03861690611930565b5f6106c08261094e565b61119084836119d0565b60405163f3e0ffbf60e01b81523060048201526112029086906001600160a01b0382169063f3e0ffbf90602401602060405180830381865afa1580156111d8573d5f5f3e3d5ffd5b505050506040513d601f19601f820116820180604052508101906111fc9190612576565b83611768565b5061120d8582611a62565b6112178484611b87565b6040516370a0823160e01b81523060048201526112899085906001600160a01b038516906370a0823190602401602060405180830381865afa15801561125f573d5f5f3e3d5ffd5b505050506040513d601f19601f820116820180604052508101906112839190612576565b8361162c565b50604080516001600160a01b038088168252861660208201527f254c88e7a2ea123aeeb89b7cc413fb949188fefcdb7584c4f3d493294daf65c5910160405180910390a15050505050565b5f807ff0c57e16840df040f15088dc2f81fe391c3923bec73e23a9662efc9c229c6a006106c0565b611304611bd5565b61130e8585611bfa565b61131783611c0c565b6110c08282611c1d565b5f61134e61132e83611c6f565b801561134957505f8480611344576113446126cd565b868809115b151590565b611359868686611c9b565b610a6491906125ae565b5f5160206128535f395f51905f526001600160a01b03851661139a5760405163e602df0560e01b81525f6004820152602401610925565b6001600160a01b0384166113c357604051634a1406b160e11b81525f6004820152602401610925565b6001600160a01b038086165f908152600183016020908152604080832093881683529290522083905581156110c057836001600160a01b0316856001600160a01b03167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b9258560405161143791815260200190565b60405180910390a35050505050565b5f5160206128535f395f51905f526001600160a01b0384166114805781816002015f82825461147591906125ae565b909155506114dd9050565b6001600160a01b0384165f90815260208290526040902054828110156114bf5784818460405163391434e360e21b81526004016109259392919061258d565b6001600160a01b0385165f9081526020839052604090209083900390555b6001600160a01b0383166114fb576002810180548390039055611519565b6001600160a01b0383165f9081526020829052604090208054830190555b826001600160a01b0316846001600160a01b03167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef8460405161155e91815260200190565b60405180910390a350505050565b61157582611d4b565b6040516001600160a01b038316907fbc7cd75a20ee27fd9adebab32041f755214dbc6bffa90cc0225b39da2e5c2d3b905f90a28051156115b957610dae8282611930565b6108d2611dae565b6115d46115cc610750565b853085611dcd565b6115de8382611e03565b826001600160a01b0316846001600160a01b03167fdcbc1c05240f31ff3ad067ef1ee35ce4997762752e3a095284754544f4c709d7848460405161155e929190918252602082015260400190565b5f811561170e575f5f856001600160a01b03168560405160240161165291815260200190565b60408051601f198184030181529181526020820180516001600160e01b031663b6b55f2560e01b1790525161168791906126e1565b5f60405180830381855af49150503d805f81146116bf576040519150601f19603f3d011682016040523d82523d5f602084013e6116c4565b606091505b509150915081611706577ff8e68f23d3b33772e986cc9861e94e8fd6b9461d62bc1fb21cd754bbaf726bd3816040516116fd9190612199565b60405180910390a15b509050610707565b61175e8360405160240161172491815260200190565b60408051601f198184030181529190526020810180516001600160e01b031663b6b55f2560e01b1790526001600160a01b03861690611930565b5060019050610707565b5f8115611839575f5f856001600160a01b03168560405160240161178e91815260200190565b60408051601f198184030181529181526020820180516001600160e01b0316632e1a7d4d60e01b179052516117c391906126e1565b5f60405180830381855af49150503d805f81146117fb576040519150601f19603f3d011682016040523d82523d5f602084013e611800565b606091505b509150915081611706577fad0ad28a12a6ed800f1a7b398454913afe6826c175e6cc28f2e8e2c175b0d728816040516116fd9190612199565b61175e8360405160240161184f91815260200190565b60408051601f198184030181529190526020810180516001600160e01b0316632e1a7d4d60e01b1790526001600160a01b03861690611930565b826001600160a01b0316856001600160a01b0316146118ad576118ad838683610e01565b6118b78382611e37565b6118c96118c2610750565b8584611e6b565b826001600160a01b0316846001600160a01b0316866001600160a01b03167ffbde797d201c681b91056529119e0b02407c7bb96a4a2c75c01fc9667232c8db8585604051611921929190918252602082015260400190565b60405180910390a45050505050565b60605f61193d8484611ea0565b905080801561195e57505f3d118061195e57505f846001600160a01b03163b115b156119735761196b611eb3565b9150506106c0565b801561199d57604051639996b31560e01b81526001600160a01b0385166004820152602401610925565b3d156119b0576119ab611ecc565b6119c9565b60405163d6bda27560e01b815260040160405180910390fd5b5092915050565b604051634e2333d160e11b81523060048201526001600160a01b038083169190841690639c4667a290602401602060405180830381865afa158015611a17573d5f5f3e3d5ffd5b505050506040513d601f19601f82011682018060405250810190611a3b91906126f7565b6001600160a01b0316146108d25760405163e76673ef60e01b815260040160405180910390fd5b8015611b3d57604051600160248201525f9081906001600160a01b0385169060440160408051601f198184030181529181526020820180516001600160e01b0316632d08ba2b60e11b17905251611ab991906126e1565b5f60405180830381855af49150503d805f8114611af1576040519150601f19603f3d011682016040523d82523d5f602084013e611af6565b606091505b509150915081610e4c577f9f864ace9f45c2734f9444cb9a0c1ade6f1b15a8c202c17175b759728a4a0bf881604051611b2f9190612199565b60405180910390a150505050565b6040515f6024820152610dae9060440160408051601f198184030181529190526020810180516001600160e01b0316632d08ba2b60e11b1790526001600160a01b03841690611930565b610dae81604051602401611b9b9190612199565b60408051601f198184030181529190526020810180516001600160e01b031663139a8e2560e31b1790526001600160a01b03841690611930565b611bdd611ed7565b610f9057604051631afcd79f60e31b815260040160405180910390fd5b611c02611bd5565b6108d28282611ef0565b611c14611bd5565b610f9281611f40565b611c25611bd5565b5f80546001600160a01b0319166001600160a01b038416179055611c5a611c4a610750565b6001600160a01b038416906119d0565b5f546108d2906001600160a01b031682611b87565b5f6002826003811115611c8457611c84612712565b611c8e9190612726565b60ff166001149050919050565b5f5f5f611ca88686611fc3565b91509150815f03611ccc57838181611cc257611cc26126cd565b0492505050610707565b818411611ce357611ce36003851502601118611fdf565b5f848688095f868103871696879004966002600389028118808a02820302808a02820302808a02820302808a02820302808a02820302808a02909103029181900381900460010185841190960395909502919093039390930492909217029150509392505050565b806001600160a01b03163b5f03611d8057604051634c9c8ce360e01b81526001600160a01b0382166004820152602401610925565b5f5160206128735f395f51905f5280546001600160a01b0319166001600160a01b0392909216919091179055565b3415610f905760405163b398979f60e01b815260040160405180910390fd5b611ddb848484846001611ff0565b610e4c57604051635274afe760e01b81526001600160a01b0385166004820152602401610925565b6001600160a01b038216611e2c5760405163ec442f0560e01b81525f6004820152602401610925565b6108d25f8383611446565b6001600160a01b038216611e6057604051634b637e8f60e11b81525f6004820152602401610925565b6108d2825f83611446565b611e78838383600161205d565b610dae57604051635274afe760e01b81526001600160a01b0384166004820152602401610925565b5f5f5f835160208501865af49392505050565b6040513d81523d5f602083013e3d602001810160405290565b6040513d5f823e3d81fd5b5f611ee06112d4565b54600160401b900460ff16919050565b611ef8611bd5565b5f5160206128535f395f51905f527f52c63247e1f47db19d5ce0460030c497f067ca4cebf71ba98eeadabe20bace03611f318482612797565b5060048101610e4c8382612797565b611f48611bd5565b7f0773e532dfede91f04b12a73d3d2acd361424f41f76b4fb79f090161e36b4e005f80611f74846120bf565b9150915081611f84576012611f86565b805b83546001600160a81b031916600160a01b60ff92909216919091026001600160a01b031916176001600160a01b0394909416939093179091555050565b5f805f1983850993909202808410938190039390930393915050565b634e487b715f52806020526024601cfd5b6040516323b872dd60e01b5f8181526001600160a01b038781166004528616602452604485905291602083606481808c5af1925060015f5114831661204c578383151615612040573d5f823e3d81fd5b5f883b113d1516831692505b604052505f60605295945050505050565b60405163a9059cbb60e01b5f8181526001600160a01b038616600452602485905291602083604481808b5af1925060015f511483166120b35783831516156120a7573d5f823e3d81fd5b5f873b113d1516831692505b60405250949350505050565b5f5f5f6120cb60405190565b6040805160048152602481019091526020810180516001600160e01b031663313ce56760e01b1790529091505f90819061210690879061214a565b509150915061211483604052565b818015612122575060203d10155b801561212f575060ff8111155b61213a575f5f61213e565b6001815b94509450505050915091565b5f5f5f60405f855160208701885afa92505f51915060205190509250925092565b5f81518084528060208401602086015e5f602082860101526020601f19601f83011685010191505092915050565b602081525f610707602083018461216b565b5f602082840312156121bb575f5ffd5b5035919050565b6001600160a01b0381168114610f92575f5ffd5b5f5f604083850312156121e7575f5ffd5b82356121f2816121c2565b946020939093013593505050565b5f5f5f60608486031215612212575f5ffd5b833561221d816121c2565b9250602084013561222d816121c2565b929592945050506040919091013590565b5f6020828403121561224e575f5ffd5b8135610707816121c2565b634e487b7160e01b5f52604160045260245ffd5b5f82601f83011261227c575f5ffd5b8135602083015f5f67ffffffffffffffff84111561229c5761229c612259565b50604051601f19601f85018116603f0116810181811067ffffffffffffffff821117156122cb576122cb612259565b6040528381529050808284018710156122e2575f5ffd5b838360208301375f602085830101528094505050505092915050565b5f5f6040838503121561230f575f5ffd5b823561231a816121c2565b9150602083013567ffffffffffffffff811115612335575f5ffd5b6123418582860161226d565b9150509250929050565b5f5f6040838503121561235c575f5ffd5b82359150602083013561236e816121c2565b809150509250929050565b5f5f5f6060848603121561238b575f5ffd5b83359250602084013561239d816121c2565b915060408401356123ad816121c2565b809150509250925092565b5f5f604083850312156123c9575f5ffd5b823560ff8116811461231a575f5ffd5b5f5f5f606084860312156123eb575f5ffd5b83356123f6816121c2565b9250602084013567ffffffffffffffff811115612411575f5ffd5b61241d8682870161226d565b925050604084013580151581146123ad575f5ffd5b5f5f60408385031215612443575f5ffd5b823561244e816121c2565b9150602083013561236e816121c2565b5f5f5f5f5f60a08688031215612472575f5ffd5b853567ffffffffffffffff811115612488575f5ffd5b6124948882890161226d565b955050602086013567ffffffffffffffff8111156124b0575f5ffd5b6124bc8882890161226d565b94505060408601356124cd816121c2565b925060608601356124dd816121c2565b9150608086013567ffffffffffffffff8111156124f8575f5ffd5b6125048882890161226d565b9150509295509295909350565b600181811c9082168061252557607f821691505b60208210810361254357634e487b7160e01b5f52602260045260245ffd5b50919050565b634e487b7160e01b5f52601160045260245ffd5b60ff81811683821601908111156106c0576106c0612549565b5f60208284031215612586575f5ffd5b5051919050565b6001600160a01b039390931683526020830191909152604082015260600190565b808201808211156106c0576106c0612549565b6001815b60018411156125fc578085048111156125e0576125e0612549565b60018416156125ee57908102905b60019390931c9280026125c5565b935093915050565b5f82612612575060016106c0565b8161261e57505f6106c0565b8160018114612634576002811461263e5761265a565b60019150506106c0565b60ff84111561264f5761264f612549565b50506001821b6106c0565b5060208310610133831016604e8410600b841016171561267d575081810a6106c0565b6126895f1984846125c1565b805f190482111561269c5761269c612549565b029392505050565b5f61070760ff841683612604565b60ff83168152604060208201525f610946604083018461216b565b634e487b7160e01b5f52601260045260245ffd5b5f82518060208501845e5f920191825250919050565b5f60208284031215612707575f5ffd5b8151610707816121c2565b634e487b7160e01b5f52602160045260245ffd5b5f60ff83168061274457634e487b7160e01b5f52601260045260245ffd5b8060ff84160691505092915050565b601f821115610dae57805f5260205f20601f840160051c810160208510156127785750805b601f840160051c820191505b818110156110c0575f8155600101612784565b815167ffffffffffffffff8111156127b1576127b1612259565b6127c5816127bf8454612511565b84612753565b6020601f8211600181146127f7575f83156127e05750848201515b5f19600385901b1c1916600184901b1784556110c0565b5f84815260208120601f198516915b828110156128265787850151825560209485019460019092019101612806565b508482101561284357868401515f19600387901b60f8161c191681555b50505050600190811b0190555056fe52c63247e1f47db19d5ce0460030c497f067ca4cebf71ba98eeadabe20bace00360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbca264697066735822122066b88bc495245f8bc6ee8839d24d6d9c3d76729af71ac31f0634dfd8054c470864736f6c634300081e0033","opcodes":"PUSH1 0x80 PUSH1 0x40 MSTORE PUSH1 0x4 CALLDATASIZE LT PUSH2 0x1E6 JUMPI PUSH0 CALLDATALOAD PUSH1 0xE0 SHR DUP1 PUSH4 0x94BF804D GT PUSH2 0x108 JUMPI DUP1 PUSH4 0xC63D75B6 GT PUSH2 0x9D JUMPI DUP1 PUSH4 0xD905777E GT PUSH2 0x6D JUMPI DUP1 PUSH4 0xD905777E EQ PUSH2 0x55F JUMPI DUP1 PUSH4 0xD9221BB5 EQ PUSH2 0x57E JUMPI DUP1 PUSH4 0xDD62ED3E EQ PUSH2 0x59D JUMPI DUP1 PUSH4 0xEF8B30F7 EQ PUSH2 0x502 JUMPI DUP1 PUSH4 0xEFFE0E1C EQ PUSH2 0x5BC JUMPI PUSH0 PUSH0 REVERT JUMPDEST DUP1 PUSH4 0xC63D75B6 EQ PUSH2 0x4E3 JUMPI DUP1 PUSH4 0xC6E6F592 EQ PUSH2 0x502 JUMPI DUP1 PUSH4 0xCE96CB77 EQ PUSH2 0x521 JUMPI DUP1 PUSH4 0xD4F39110 EQ PUSH2 0x540 JUMPI PUSH0 PUSH0 REVERT JUMPDEST DUP1 PUSH4 0xAD3CB1CC GT PUSH2 0xD8 JUMPI DUP1 PUSH4 0xAD3CB1CC EQ PUSH2 0x456 JUMPI DUP1 PUSH4 0xB3D7F6B9 EQ PUSH2 0x486 JUMPI DUP1 PUSH4 0xB460AF94 EQ PUSH2 0x4A5 JUMPI DUP1 PUSH4 0xBA087652 EQ PUSH2 0x4C4 JUMPI PUSH0 PUSH0 REVERT JUMPDEST DUP1 PUSH4 0x94BF804D EQ PUSH2 0x3E8 JUMPI DUP1 PUSH4 0x95D89B41 EQ PUSH2 0x407 JUMPI DUP1 PUSH4 0xA8C62E76 EQ PUSH2 0x41B JUMPI DUP1 PUSH4 0xA9059CBB EQ PUSH2 0x437 JUMPI PUSH0 PUSH0 REVERT JUMPDEST DUP1 PUSH4 0x38D52E0F GT PUSH2 0x17E JUMPI DUP1 PUSH4 0x4F1EF286 GT PUSH2 0x14E JUMPI DUP1 PUSH4 0x4F1EF286 EQ PUSH2 0x381 JUMPI DUP1 PUSH4 0x52D1902D EQ PUSH2 0x396 JUMPI DUP1 PUSH4 0x6E553F65 EQ PUSH2 0x3AA JUMPI DUP1 PUSH4 0x70A08231 EQ PUSH2 0x3C9 JUMPI PUSH0 PUSH0 REVERT JUMPDEST DUP1 PUSH4 0x38D52E0F EQ PUSH2 0x317 JUMPI DUP1 PUSH4 0x402D267D EQ PUSH2 0x343 JUMPI DUP1 PUSH4 0x47E57533 EQ PUSH2 0x362 JUMPI DUP1 PUSH4 0x4CDAD506 EQ PUSH2 0x232 JUMPI PUSH0 PUSH0 REVERT JUMPDEST DUP1 PUSH4 0xA28A477 GT PUSH2 0x1B9 JUMPI DUP1 PUSH4 0xA28A477 EQ PUSH2 0x280 JUMPI DUP1 PUSH4 0x18160DDD EQ PUSH2 0x29F JUMPI DUP1 PUSH4 0x23B872DD EQ PUSH2 0x2D2 JUMPI DUP1 PUSH4 0x313CE567 EQ PUSH2 0x2F1 JUMPI PUSH0 PUSH0 REVERT JUMPDEST DUP1 PUSH4 0x1E1D114 EQ PUSH2 0x1EA JUMPI DUP1 PUSH4 0x6FDDE03 EQ PUSH2 0x211 JUMPI DUP1 PUSH4 0x7A2D13A EQ PUSH2 0x232 JUMPI DUP1 PUSH4 0x95EA7B3 EQ PUSH2 0x251 JUMPI JUMPDEST PUSH0 PUSH0 REVERT JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x1F5 JUMPI PUSH0 PUSH0 REVERT JUMPDEST POP PUSH2 0x1FE PUSH2 0x5DB JUMP JUMPDEST PUSH1 0x40 MLOAD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x21C JUMPI PUSH0 PUSH0 REVERT JUMPDEST POP PUSH2 0x225 PUSH2 0x5F5 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0x208 SWAP2 SWAP1 PUSH2 0x2199 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x23D JUMPI PUSH0 PUSH0 REVERT JUMPDEST POP PUSH2 0x1FE PUSH2 0x24C CALLDATASIZE PUSH1 0x4 PUSH2 0x21AB JUMP JUMPDEST PUSH2 0x6B5 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x25C JUMPI PUSH0 PUSH0 REVERT JUMPDEST POP PUSH2 0x270 PUSH2 0x26B CALLDATASIZE PUSH1 0x4 PUSH2 0x21D6 JUMP JUMPDEST PUSH2 0x6C6 JUMP JUMPDEST PUSH1 0x40 MLOAD SWAP1 ISZERO ISZERO DUP2 MSTORE PUSH1 0x20 ADD PUSH2 0x208 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x28B JUMPI PUSH0 PUSH0 REVERT JUMPDEST POP PUSH2 0x1FE PUSH2 0x29A CALLDATASIZE PUSH1 0x4 PUSH2 0x21AB JUMP JUMPDEST PUSH2 0x6DD JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x2AA JUMPI PUSH0 PUSH0 REVERT JUMPDEST POP PUSH32 0x52C63247E1F47DB19D5CE0460030C497F067CA4CEBF71BA98EEADABE20BACE02 SLOAD PUSH2 0x1FE JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x2DD JUMPI PUSH0 PUSH0 REVERT JUMPDEST POP PUSH2 0x270 PUSH2 0x2EC CALLDATASIZE PUSH1 0x4 PUSH2 0x2200 JUMP JUMPDEST PUSH2 0x6E9 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x2FC JUMPI PUSH0 PUSH0 REVERT JUMPDEST POP PUSH2 0x305 PUSH2 0x70E JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH1 0xFF SWAP1 SWAP2 AND DUP2 MSTORE PUSH1 0x20 ADD PUSH2 0x208 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x322 JUMPI PUSH0 PUSH0 REVERT JUMPDEST POP PUSH2 0x32B PUSH2 0x750 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP1 SWAP2 AND DUP2 MSTORE PUSH1 0x20 ADD PUSH2 0x208 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x34E JUMPI PUSH0 PUSH0 REVERT JUMPDEST POP PUSH2 0x1FE PUSH2 0x35D CALLDATASIZE PUSH1 0x4 PUSH2 0x223E JUMP JUMPDEST PUSH2 0x77E JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x36D JUMPI PUSH0 PUSH0 REVERT JUMPDEST POP PUSH2 0x225 PUSH2 0x37C CALLDATASIZE PUSH1 0x4 PUSH2 0x21AB JUMP JUMPDEST PUSH2 0x7A3 JUMP JUMPDEST PUSH2 0x394 PUSH2 0x38F CALLDATASIZE PUSH1 0x4 PUSH2 0x22FE JUMP JUMPDEST PUSH2 0x8C0 JUMP JUMPDEST STOP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x3A1 JUMPI PUSH0 PUSH0 REVERT JUMPDEST POP PUSH2 0x1FE PUSH2 0x8D6 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x3B5 JUMPI PUSH0 PUSH0 REVERT JUMPDEST POP PUSH2 0x1FE PUSH2 0x3C4 CALLDATASIZE PUSH1 0x4 PUSH2 0x234B JUMP JUMPDEST PUSH2 0x8F1 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x3D4 JUMPI PUSH0 PUSH0 REVERT JUMPDEST POP PUSH2 0x1FE PUSH2 0x3E3 CALLDATASIZE PUSH1 0x4 PUSH2 0x223E JUMP JUMPDEST PUSH2 0x94E JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x3F3 JUMPI PUSH0 PUSH0 REVERT JUMPDEST POP PUSH2 0x1FE PUSH2 0x402 CALLDATASIZE PUSH1 0x4 PUSH2 0x234B JUMP JUMPDEST PUSH2 0x974 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x412 JUMPI PUSH0 PUSH0 REVERT JUMPDEST POP PUSH2 0x225 PUSH2 0x9C0 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x426 JUMPI PUSH0 PUSH0 REVERT JUMPDEST POP PUSH0 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH2 0x32B JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x442 JUMPI PUSH0 PUSH0 REVERT JUMPDEST POP PUSH2 0x270 PUSH2 0x451 CALLDATASIZE PUSH1 0x4 PUSH2 0x21D6 JUMP JUMPDEST PUSH2 0x9FE JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x461 JUMPI PUSH0 PUSH0 REVERT JUMPDEST POP PUSH2 0x225 PUSH1 0x40 MLOAD DUP1 PUSH1 0x40 ADD PUSH1 0x40 MSTORE DUP1 PUSH1 0x5 DUP2 MSTORE PUSH1 0x20 ADD PUSH5 0x352E302E3 PUSH1 0xDC SHL DUP2 MSTORE POP DUP2 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x491 JUMPI PUSH0 PUSH0 REVERT JUMPDEST POP PUSH2 0x1FE PUSH2 0x4A0 CALLDATASIZE PUSH1 0x4 PUSH2 0x21AB JUMP JUMPDEST PUSH2 0xA0B JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x4B0 JUMPI PUSH0 PUSH0 REVERT JUMPDEST POP PUSH2 0x1FE PUSH2 0x4BF CALLDATASIZE PUSH1 0x4 PUSH2 0x2379 JUMP JUMPDEST PUSH2 0xA17 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x4CF JUMPI PUSH0 PUSH0 REVERT JUMPDEST POP PUSH2 0x1FE PUSH2 0x4DE CALLDATASIZE PUSH1 0x4 PUSH2 0x2379 JUMP JUMPDEST PUSH2 0xA6D JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x4EE JUMPI PUSH0 PUSH0 REVERT JUMPDEST POP PUSH2 0x1FE PUSH2 0x4FD CALLDATASIZE PUSH1 0x4 PUSH2 0x223E JUMP JUMPDEST PUSH2 0xABA JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x50D JUMPI PUSH0 PUSH0 REVERT JUMPDEST POP PUSH2 0x1FE PUSH2 0x51C CALLDATASIZE PUSH1 0x4 PUSH2 0x21AB JUMP JUMPDEST PUSH2 0xAE0 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x52C JUMPI PUSH0 PUSH0 REVERT JUMPDEST POP PUSH2 0x1FE PUSH2 0x53B CALLDATASIZE PUSH1 0x4 PUSH2 0x223E JUMP JUMPDEST PUSH2 0xAEB JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x54B JUMPI PUSH0 PUSH0 REVERT JUMPDEST POP PUSH2 0x225 PUSH2 0x55A CALLDATASIZE PUSH1 0x4 PUSH2 0x23B8 JUMP JUMPDEST PUSH2 0xB0D JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x56A JUMPI PUSH0 PUSH0 REVERT JUMPDEST POP PUSH2 0x1FE PUSH2 0x579 CALLDATASIZE PUSH1 0x4 PUSH2 0x223E JUMP JUMPDEST PUSH2 0xB26 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x589 JUMPI PUSH0 PUSH0 REVERT JUMPDEST POP PUSH2 0x394 PUSH2 0x598 CALLDATASIZE PUSH1 0x4 PUSH2 0x23D9 JUMP JUMPDEST PUSH2 0xB55 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x5A8 JUMPI PUSH0 PUSH0 REVERT JUMPDEST POP PUSH2 0x1FE PUSH2 0x5B7 CALLDATASIZE PUSH1 0x4 PUSH2 0x2432 JUMP JUMPDEST PUSH2 0xB97 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x5C7 JUMPI PUSH0 PUSH0 REVERT JUMPDEST POP PUSH2 0x394 PUSH2 0x5D6 CALLDATASIZE PUSH1 0x4 PUSH2 0x245E JUMP JUMPDEST PUSH2 0xBE0 JUMP JUMPDEST PUSH0 DUP1 SLOAD PUSH2 0x5F0 SWAP1 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH2 0xCE1 JUMP JUMPDEST SWAP1 POP SWAP1 JUMP JUMPDEST PUSH32 0x52C63247E1F47DB19D5CE0460030C497F067CA4CEBF71BA98EEADABE20BACE03 DUP1 SLOAD PUSH1 0x60 SWAP2 PUSH0 MLOAD PUSH1 0x20 PUSH2 0x2853 PUSH0 CODECOPY PUSH0 MLOAD SWAP1 PUSH0 MSTORE SWAP2 PUSH2 0x633 SWAP1 PUSH2 0x2511 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 0x65F SWAP1 PUSH2 0x2511 JUMP JUMPDEST DUP1 ISZERO PUSH2 0x6AA JUMPI DUP1 PUSH1 0x1F LT PUSH2 0x681 JUMPI PUSH2 0x100 DUP1 DUP4 SLOAD DIV MUL DUP4 MSTORE SWAP2 PUSH1 0x20 ADD SWAP2 PUSH2 0x6AA JUMP JUMPDEST DUP3 ADD SWAP2 SWAP1 PUSH0 MSTORE PUSH1 0x20 PUSH0 KECCAK256 SWAP1 JUMPDEST DUP2 SLOAD DUP2 MSTORE SWAP1 PUSH1 0x1 ADD SWAP1 PUSH1 0x20 ADD DUP1 DUP4 GT PUSH2 0x68D JUMPI DUP3 SWAP1 SUB PUSH1 0x1F AND DUP3 ADD SWAP2 JUMPDEST POP POP POP POP POP SWAP2 POP POP SWAP1 JUMP JUMPDEST PUSH0 PUSH2 0x6C0 DUP3 PUSH0 PUSH2 0xD4A JUMP JUMPDEST SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH0 CALLER PUSH2 0x6D3 DUP2 DUP6 DUP6 PUSH2 0xDA1 JUMP JUMPDEST POP PUSH1 0x1 SWAP4 SWAP3 POP POP POP JUMP JUMPDEST PUSH0 PUSH2 0x6C0 DUP3 PUSH1 0x1 PUSH2 0xDB3 JUMP JUMPDEST PUSH0 CALLER PUSH2 0x6F6 DUP6 DUP3 DUP6 PUSH2 0xE01 JUMP JUMPDEST PUSH2 0x701 DUP6 DUP6 DUP6 PUSH2 0xE52 JUMP JUMPDEST PUSH1 0x1 SWAP2 POP POP JUMPDEST SWAP4 SWAP3 POP POP POP JUMP JUMPDEST PUSH0 DUP1 PUSH32 0x773E532DFEDE91F04B12A73D3D2ACD361424F41F76B4FB79F090161E36B4E00 SWAP1 POP PUSH0 DUP2 SLOAD PUSH2 0x74A SWAP2 SWAP1 PUSH1 0x1 PUSH1 0xA0 SHL SWAP1 DIV PUSH1 0xFF AND PUSH2 0x255D JUMP JUMPDEST SWAP2 POP POP SWAP1 JUMP JUMPDEST PUSH32 0x773E532DFEDE91F04B12A73D3D2ACD361424F41F76B4FB79F090161E36B4E00 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND SWAP1 JUMP JUMPDEST PUSH0 DUP1 SLOAD PUSH2 0x6C0 SWAP1 PUSH2 0x797 SWAP1 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH2 0xEAF JUMP JUMPDEST PUSH0 NOT PUSH2 0xEDD JUMP JUMPDEST PUSH2 0xEDD JUMP JUMPDEST PUSH0 SLOAD PUSH1 0x40 DUP1 MLOAD PUSH4 0x5B9A4C35 PUSH1 0xE0 SHL DUP2 MSTORE SWAP1 MLOAD PUSH1 0x60 SWAP3 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND SWAP2 PUSH4 0x5B9A4C35 SWAP2 PUSH1 0x4 DUP1 DUP4 ADD SWAP3 PUSH1 0x20 SWAP3 SWAP2 SWAP1 DUP3 SWAP1 SUB ADD DUP2 DUP7 GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x7EA JUMPI RETURNDATASIZE PUSH0 PUSH0 RETURNDATACOPY RETURNDATASIZE PUSH0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP3 ADD DUP1 PUSH1 0x40 MSTORE POP DUP2 ADD SWAP1 PUSH2 0x80E SWAP2 SWAP1 PUSH2 0x2576 JUMP JUMPDEST DUP3 EQ PUSH2 0x82D JUMPI PUSH1 0x40 MLOAD PUSH4 0x213109DD PUSH1 0xE1 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST DUP2 SLOAD DUP3 SWAP1 DUP2 SWAP1 PUSH2 0x83C SWAP1 PUSH2 0x2511 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 0x868 SWAP1 PUSH2 0x2511 JUMP JUMPDEST DUP1 ISZERO PUSH2 0x8B3 JUMPI DUP1 PUSH1 0x1F LT PUSH2 0x88A JUMPI PUSH2 0x100 DUP1 DUP4 SLOAD DIV MUL DUP4 MSTORE SWAP2 PUSH1 0x20 ADD SWAP2 PUSH2 0x8B3 JUMP JUMPDEST DUP3 ADD SWAP2 SWAP1 PUSH0 MSTORE PUSH1 0x20 PUSH0 KECCAK256 SWAP1 JUMPDEST DUP2 SLOAD DUP2 MSTORE SWAP1 PUSH1 0x1 ADD SWAP1 PUSH1 0x20 ADD DUP1 DUP4 GT PUSH2 0x896 JUMPI DUP3 SWAP1 SUB PUSH1 0x1F AND DUP3 ADD SWAP2 JUMPDEST POP POP POP POP POP SWAP2 POP POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH2 0x8C8 PUSH2 0xEEC JUMP JUMPDEST PUSH2 0x8D2 DUP3 DUP3 PUSH2 0xF95 JUMP JUMPDEST POP POP JUMP JUMPDEST PUSH0 PUSH2 0x8DF PUSH2 0x1051 JUMP JUMPDEST POP PUSH0 MLOAD PUSH1 0x20 PUSH2 0x2873 PUSH0 CODECOPY PUSH0 MLOAD SWAP1 PUSH0 MSTORE SWAP1 JUMP JUMPDEST PUSH0 PUSH0 PUSH2 0x8FC DUP4 PUSH2 0x77E JUMP JUMPDEST SWAP1 POP DUP1 DUP5 GT ISZERO PUSH2 0x92E JUMPI DUP3 DUP5 DUP3 PUSH1 0x40 MLOAD PUSH4 0x3C8097D9 PUSH1 0xE1 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x925 SWAP4 SWAP3 SWAP2 SWAP1 PUSH2 0x258D JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH0 PUSH2 0x938 DUP6 PUSH2 0xAE0 JUMP JUMPDEST SWAP1 POP PUSH2 0x946 CALLER DUP6 DUP8 DUP5 PUSH2 0x109A JUMP JUMPDEST SWAP5 SWAP4 POP POP POP POP JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH0 SWAP1 DUP2 MSTORE PUSH0 MLOAD PUSH1 0x20 PUSH2 0x2853 PUSH0 CODECOPY PUSH0 MLOAD SWAP1 PUSH0 MSTORE PUSH1 0x20 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD SWAP1 JUMP JUMPDEST PUSH0 PUSH0 PUSH2 0x97F DUP4 PUSH2 0xABA JUMP JUMPDEST SWAP1 POP DUP1 DUP5 GT ISZERO PUSH2 0x9A8 JUMPI DUP3 DUP5 DUP3 PUSH1 0x40 MLOAD PUSH4 0x284FF667 PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x925 SWAP4 SWAP3 SWAP2 SWAP1 PUSH2 0x258D JUMP JUMPDEST PUSH0 PUSH2 0x9B2 DUP6 PUSH2 0xA0B JUMP JUMPDEST SWAP1 POP PUSH2 0x946 CALLER DUP6 DUP4 DUP9 PUSH2 0x109A JUMP JUMPDEST PUSH32 0x52C63247E1F47DB19D5CE0460030C497F067CA4CEBF71BA98EEADABE20BACE04 DUP1 SLOAD PUSH1 0x60 SWAP2 PUSH0 MLOAD PUSH1 0x20 PUSH2 0x2853 PUSH0 CODECOPY PUSH0 MLOAD SWAP1 PUSH0 MSTORE SWAP2 PUSH2 0x633 SWAP1 PUSH2 0x2511 JUMP JUMPDEST PUSH0 CALLER PUSH2 0x6D3 DUP2 DUP6 DUP6 PUSH2 0xE52 JUMP JUMPDEST PUSH0 PUSH2 0x6C0 DUP3 PUSH1 0x1 PUSH2 0xD4A JUMP JUMPDEST PUSH0 PUSH0 PUSH2 0xA22 DUP4 PUSH2 0xAEB JUMP JUMPDEST SWAP1 POP DUP1 DUP6 GT ISZERO PUSH2 0xA4B JUMPI DUP3 DUP6 DUP3 PUSH1 0x40 MLOAD PUSH4 0x3FA733BB PUSH1 0xE2 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x925 SWAP4 SWAP3 SWAP2 SWAP1 PUSH2 0x258D JUMP JUMPDEST PUSH0 PUSH2 0xA55 DUP7 PUSH2 0x6DD JUMP JUMPDEST SWAP1 POP PUSH2 0xA64 CALLER DUP7 DUP7 DUP10 DUP6 PUSH2 0x10C7 JUMP JUMPDEST SWAP6 SWAP5 POP POP POP POP POP JUMP JUMPDEST PUSH0 PUSH0 PUSH2 0xA78 DUP4 PUSH2 0xB26 JUMP JUMPDEST SWAP1 POP DUP1 DUP6 GT ISZERO PUSH2 0xAA1 JUMPI DUP3 DUP6 DUP3 PUSH1 0x40 MLOAD PUSH4 0x2E52AFBB PUSH1 0xE2 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x925 SWAP4 SWAP3 SWAP2 SWAP1 PUSH2 0x258D JUMP JUMPDEST PUSH0 PUSH2 0xAAB DUP7 PUSH2 0x6B5 JUMP JUMPDEST SWAP1 POP PUSH2 0xA64 CALLER DUP7 DUP7 DUP5 DUP11 PUSH2 0x10C7 JUMP JUMPDEST PUSH0 DUP1 SLOAD DUP2 SWAP1 PUSH2 0xAD1 SWAP1 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH2 0xEAF JUMP JUMPDEST SWAP1 POP PUSH2 0x707 PUSH2 0x797 DUP3 PUSH0 PUSH2 0xDB3 JUMP JUMPDEST PUSH0 PUSH2 0x6C0 DUP3 PUSH0 PUSH2 0xDB3 JUMP JUMPDEST PUSH0 DUP1 SLOAD PUSH2 0x6C0 SWAP1 PUSH2 0xB04 SWAP1 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH2 0x10EF JUMP JUMPDEST PUSH2 0x79E DUP5 PUSH2 0x111D JUMP JUMPDEST PUSH0 SLOAD PUSH1 0x60 SWAP1 PUSH2 0x707 SWAP1 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP5 DUP5 PUSH2 0x112A JUMP JUMPDEST PUSH0 DUP1 SLOAD DUP2 SWAP1 PUSH2 0xB3D SWAP1 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH2 0x10EF JUMP JUMPDEST SWAP1 POP PUSH2 0x707 PUSH2 0xB4C DUP3 PUSH0 PUSH2 0xDB3 JUMP JUMPDEST PUSH2 0x79E DUP6 PUSH2 0x117C JUMP JUMPDEST PUSH0 SLOAD PUSH2 0xB74 SWAP1 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP5 DUP5 PUSH2 0xB6E PUSH2 0x750 JUMP JUMPDEST DUP6 PUSH2 0x1186 JUMP JUMPDEST POP POP PUSH0 DUP1 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB NOT AND PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP3 SWAP1 SWAP3 AND SWAP2 SWAP1 SWAP2 OR SWAP1 SSTORE JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP2 DUP3 AND PUSH0 SWAP1 DUP2 MSTORE PUSH32 0x52C63247E1F47DB19D5CE0460030C497F067CA4CEBF71BA98EEADABE20BACE01 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 PUSH0 PUSH2 0xBE9 PUSH2 0x12D4 JUMP JUMPDEST DUP1 SLOAD SWAP1 SWAP2 POP PUSH1 0xFF PUSH1 0x1 PUSH1 0x40 SHL DUP3 DIV AND ISZERO SWAP1 PUSH8 0xFFFFFFFFFFFFFFFF AND PUSH0 DUP2 ISZERO DUP1 ISZERO PUSH2 0xC10 JUMPI POP DUP3 JUMPDEST SWAP1 POP PUSH0 DUP3 PUSH8 0xFFFFFFFFFFFFFFFF AND PUSH1 0x1 EQ DUP1 ISZERO PUSH2 0xC2C JUMPI POP ADDRESS EXTCODESIZE ISZERO JUMPDEST SWAP1 POP DUP2 ISZERO DUP1 ISZERO PUSH2 0xC3A JUMPI POP DUP1 ISZERO JUMPDEST ISZERO PUSH2 0xC58 JUMPI PUSH1 0x40 MLOAD PUSH4 0xF92EE8A9 PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST DUP5 SLOAD PUSH8 0xFFFFFFFFFFFFFFFF NOT AND PUSH1 0x1 OR DUP6 SSTORE DUP4 ISZERO PUSH2 0xC82 JUMPI DUP5 SLOAD PUSH1 0xFF PUSH1 0x40 SHL NOT AND PUSH1 0x1 PUSH1 0x40 SHL OR DUP6 SSTORE JUMPDEST PUSH2 0xC8F DUP11 DUP11 DUP11 DUP11 DUP11 PUSH2 0x12FC JUMP JUMPDEST DUP4 ISZERO PUSH2 0xCD5 JUMPI DUP5 SLOAD PUSH1 0xFF PUSH1 0x40 SHL NOT AND DUP6 SSTORE PUSH1 0x40 MLOAD PUSH1 0x1 DUP2 MSTORE PUSH32 0xC7F505B2F371AE2175EE4913F4499E1F2633A7B5936321EED1CDAEB6115181D2 SWAP1 PUSH1 0x20 ADD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 LOG1 JUMPDEST POP POP POP POP POP POP POP POP POP POP JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH4 0xF3E0FFBF PUSH1 0xE0 SHL DUP2 MSTORE ADDRESS PUSH1 0x4 DUP3 ADD MSTORE PUSH0 SWAP1 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP4 AND SWAP1 PUSH4 0xF3E0FFBF SWAP1 PUSH1 0x24 ADD JUMPDEST PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0xD26 JUMPI RETURNDATASIZE PUSH0 PUSH0 RETURNDATACOPY RETURNDATASIZE PUSH0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP3 ADD DUP1 PUSH1 0x40 MSTORE POP DUP2 ADD SWAP1 PUSH2 0x6C0 SWAP2 SWAP1 PUSH2 0x2576 JUMP JUMPDEST PUSH0 PUSH2 0x707 PUSH2 0xD56 PUSH2 0x5DB JUMP JUMPDEST PUSH2 0xD61 SWAP1 PUSH1 0x1 PUSH2 0x25AE JUMP JUMPDEST PUSH2 0xD6C PUSH0 PUSH1 0xA PUSH2 0x26A4 JUMP JUMPDEST PUSH32 0x52C63247E1F47DB19D5CE0460030C497F067CA4CEBF71BA98EEADABE20BACE02 SLOAD PUSH2 0xD98 SWAP2 SWAP1 PUSH2 0x25AE JUMP JUMPDEST DUP6 SWAP2 SWAP1 DUP6 PUSH2 0x1321 JUMP JUMPDEST PUSH2 0xDAE DUP4 DUP4 DUP4 PUSH1 0x1 PUSH2 0x1363 JUMP JUMPDEST POP POP POP JUMP JUMPDEST PUSH0 PUSH2 0x707 PUSH2 0xDC2 DUP3 PUSH1 0xA PUSH2 0x26A4 JUMP JUMPDEST PUSH32 0x52C63247E1F47DB19D5CE0460030C497F067CA4CEBF71BA98EEADABE20BACE02 SLOAD PUSH2 0xDEE SWAP2 SWAP1 PUSH2 0x25AE JUMP JUMPDEST PUSH2 0xDF6 PUSH2 0x5DB JUMP JUMPDEST PUSH2 0xD98 SWAP1 PUSH1 0x1 PUSH2 0x25AE JUMP JUMPDEST PUSH0 PUSH2 0xE0C DUP5 DUP5 PUSH2 0xB97 JUMP JUMPDEST SWAP1 POP PUSH0 NOT DUP2 LT ISZERO PUSH2 0xE4C JUMPI DUP2 DUP2 LT ISZERO PUSH2 0xE3E JUMPI DUP3 DUP2 DUP4 PUSH1 0x40 MLOAD PUSH4 0x7DC7A0D9 PUSH1 0xE1 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x925 SWAP4 SWAP3 SWAP2 SWAP1 PUSH2 0x258D JUMP JUMPDEST PUSH2 0xE4C DUP5 DUP5 DUP5 DUP5 SUB PUSH0 PUSH2 0x1363 JUMP JUMPDEST POP POP POP POP JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP4 AND PUSH2 0xE7B JUMPI PUSH1 0x40 MLOAD PUSH4 0x4B637E8F PUSH1 0xE1 SHL DUP2 MSTORE PUSH0 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x24 ADD PUSH2 0x925 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP3 AND PUSH2 0xEA4 JUMPI PUSH1 0x40 MLOAD PUSH4 0xEC442F05 PUSH1 0xE0 SHL DUP2 MSTORE PUSH0 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x24 ADD PUSH2 0x925 JUMP JUMPDEST PUSH2 0xDAE DUP4 DUP4 DUP4 PUSH2 0x1446 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH4 0x402D267D PUSH1 0xE0 SHL DUP2 MSTORE ADDRESS PUSH1 0x4 DUP3 ADD MSTORE PUSH0 SWAP1 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP4 AND SWAP1 PUSH4 0x402D267D SWAP1 PUSH1 0x24 ADD PUSH2 0xD0B JUMP JUMPDEST PUSH0 DUP3 DUP3 XOR DUP3 DUP5 LT MUL DUP3 XOR PUSH2 0x707 JUMP JUMPDEST ADDRESS PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB PUSH32 0x0 AND EQ DUP1 PUSH2 0xF72 JUMPI POP PUSH32 0x0 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH2 0xF66 PUSH0 MLOAD PUSH1 0x20 PUSH2 0x2873 PUSH0 CODECOPY PUSH0 MLOAD SWAP1 PUSH0 MSTORE SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND SWAP1 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND EQ ISZERO JUMPDEST ISZERO PUSH2 0xF90 JUMPI PUSH1 0x40 MLOAD PUSH4 0x703E46DD PUSH1 0xE1 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST JUMP JUMPDEST POP JUMP JUMPDEST DUP2 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH4 0x52D1902D 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 GAS STATICCALL SWAP3 POP POP POP DUP1 ISZERO PUSH2 0xFEF JUMPI POP PUSH1 0x40 DUP1 MLOAD PUSH1 0x1F RETURNDATASIZE SWAP1 DUP2 ADD PUSH1 0x1F NOT AND DUP3 ADD SWAP1 SWAP3 MSTORE PUSH2 0xFEC SWAP2 DUP2 ADD SWAP1 PUSH2 0x2576 JUMP JUMPDEST PUSH1 0x1 JUMPDEST PUSH2 0x1017 JUMPI PUSH1 0x40 MLOAD PUSH4 0x4C9C8CE3 PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP4 AND PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x24 ADD PUSH2 0x925 JUMP JUMPDEST PUSH0 MLOAD PUSH1 0x20 PUSH2 0x2873 PUSH0 CODECOPY PUSH0 MLOAD SWAP1 PUSH0 MSTORE DUP2 EQ PUSH2 0x1047 JUMPI PUSH1 0x40 MLOAD PUSH4 0x2A875269 PUSH1 0xE2 SHL DUP2 MSTORE PUSH1 0x4 DUP2 ADD DUP3 SWAP1 MSTORE PUSH1 0x24 ADD PUSH2 0x925 JUMP JUMPDEST PUSH2 0xDAE DUP4 DUP4 PUSH2 0x156C JUMP JUMPDEST ADDRESS PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB PUSH32 0x0 AND EQ PUSH2 0xF90 JUMPI PUSH1 0x40 MLOAD PUSH4 0x703E46DD PUSH1 0xE1 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH2 0x10A6 DUP5 DUP5 DUP5 DUP5 PUSH2 0x15C1 JUMP JUMPDEST PUSH0 DUP1 SLOAD PUSH2 0x10C0 SWAP2 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP1 SWAP2 AND SWAP1 DUP5 SWAP1 PUSH2 0x162C JUMP JUMPDEST POP POP POP POP POP JUMP JUMPDEST PUSH0 DUP1 SLOAD PUSH2 0x10E1 SWAP2 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP1 SWAP2 AND SWAP1 DUP5 SWAP1 PUSH2 0x1768 JUMP JUMPDEST POP PUSH2 0x10C0 DUP6 DUP6 DUP6 DUP6 DUP6 PUSH2 0x1889 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH4 0xCE96CB77 PUSH1 0xE0 SHL DUP2 MSTORE ADDRESS PUSH1 0x4 DUP3 ADD MSTORE PUSH0 SWAP1 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP4 AND SWAP1 PUSH4 0xCE96CB77 SWAP1 PUSH1 0x24 ADD PUSH2 0xD0B JUMP JUMPDEST PUSH0 PUSH2 0x6C0 PUSH2 0x24C DUP4 PUSH2 0xB26 JUMP JUMPDEST PUSH1 0x60 PUSH2 0x946 DUP4 DUP4 PUSH1 0x40 MLOAD PUSH1 0x24 ADD PUSH2 0x1142 SWAP3 SWAP2 SWAP1 PUSH2 0x26B2 JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH1 0x1F NOT DUP2 DUP5 SUB ADD DUP2 MSTORE SWAP2 SWAP1 MSTORE PUSH1 0x20 DUP2 ADD DUP1 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xE0 SHL SUB AND PUSH4 0x4C0D8E1 PUSH1 0xE1 SHL OR SWAP1 MSTORE PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP7 AND SWAP1 PUSH2 0x1930 JUMP JUMPDEST PUSH0 PUSH2 0x6C0 DUP3 PUSH2 0x94E JUMP JUMPDEST PUSH2 0x1190 DUP5 DUP4 PUSH2 0x19D0 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH4 0xF3E0FFBF PUSH1 0xE0 SHL DUP2 MSTORE ADDRESS PUSH1 0x4 DUP3 ADD MSTORE PUSH2 0x1202 SWAP1 DUP7 SWAP1 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP3 AND SWAP1 PUSH4 0xF3E0FFBF SWAP1 PUSH1 0x24 ADD PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x11D8 JUMPI RETURNDATASIZE PUSH0 PUSH0 RETURNDATACOPY RETURNDATASIZE PUSH0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP3 ADD DUP1 PUSH1 0x40 MSTORE POP DUP2 ADD SWAP1 PUSH2 0x11FC SWAP2 SWAP1 PUSH2 0x2576 JUMP JUMPDEST DUP4 PUSH2 0x1768 JUMP JUMPDEST POP PUSH2 0x120D DUP6 DUP3 PUSH2 0x1A62 JUMP JUMPDEST PUSH2 0x1217 DUP5 DUP5 PUSH2 0x1B87 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH4 0x70A08231 PUSH1 0xE0 SHL DUP2 MSTORE ADDRESS PUSH1 0x4 DUP3 ADD MSTORE PUSH2 0x1289 SWAP1 DUP6 SWAP1 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP6 AND SWAP1 PUSH4 0x70A08231 SWAP1 PUSH1 0x24 ADD PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x125F JUMPI RETURNDATASIZE PUSH0 PUSH0 RETURNDATACOPY RETURNDATASIZE PUSH0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP3 ADD DUP1 PUSH1 0x40 MSTORE POP DUP2 ADD SWAP1 PUSH2 0x1283 SWAP2 SWAP1 PUSH2 0x2576 JUMP JUMPDEST DUP4 PUSH2 0x162C JUMP JUMPDEST POP PUSH1 0x40 DUP1 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP1 DUP9 AND DUP3 MSTORE DUP7 AND PUSH1 0x20 DUP3 ADD MSTORE PUSH32 0x254C88E7A2EA123AEEB89B7CC413FB949188FEFCDB7584C4F3D493294DAF65C5 SWAP2 ADD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 LOG1 POP POP POP POP POP JUMP JUMPDEST PUSH0 DUP1 PUSH32 0xF0C57E16840DF040F15088DC2F81FE391C3923BEC73E23A9662EFC9C229C6A00 PUSH2 0x6C0 JUMP JUMPDEST PUSH2 0x1304 PUSH2 0x1BD5 JUMP JUMPDEST PUSH2 0x130E DUP6 DUP6 PUSH2 0x1BFA JUMP JUMPDEST PUSH2 0x1317 DUP4 PUSH2 0x1C0C JUMP JUMPDEST PUSH2 0x10C0 DUP3 DUP3 PUSH2 0x1C1D JUMP JUMPDEST PUSH0 PUSH2 0x134E PUSH2 0x132E DUP4 PUSH2 0x1C6F JUMP JUMPDEST DUP1 ISZERO PUSH2 0x1349 JUMPI POP PUSH0 DUP5 DUP1 PUSH2 0x1344 JUMPI PUSH2 0x1344 PUSH2 0x26CD JUMP JUMPDEST DUP7 DUP9 MULMOD GT JUMPDEST ISZERO ISZERO SWAP1 JUMP JUMPDEST PUSH2 0x1359 DUP7 DUP7 DUP7 PUSH2 0x1C9B JUMP JUMPDEST PUSH2 0xA64 SWAP2 SWAP1 PUSH2 0x25AE JUMP JUMPDEST PUSH0 MLOAD PUSH1 0x20 PUSH2 0x2853 PUSH0 CODECOPY PUSH0 MLOAD SWAP1 PUSH0 MSTORE PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP6 AND PUSH2 0x139A JUMPI PUSH1 0x40 MLOAD PUSH4 0xE602DF05 PUSH1 0xE0 SHL DUP2 MSTORE PUSH0 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x24 ADD PUSH2 0x925 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP5 AND PUSH2 0x13C3 JUMPI PUSH1 0x40 MLOAD PUSH4 0x4A1406B1 PUSH1 0xE1 SHL DUP2 MSTORE PUSH0 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x24 ADD PUSH2 0x925 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP1 DUP7 AND PUSH0 SWAP1 DUP2 MSTORE PUSH1 0x1 DUP4 ADD PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x40 DUP1 DUP4 KECCAK256 SWAP4 DUP9 AND DUP4 MSTORE SWAP3 SWAP1 MSTORE KECCAK256 DUP4 SWAP1 SSTORE DUP2 ISZERO PUSH2 0x10C0 JUMPI DUP4 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP6 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH32 0x8C5BE1E5EBEC7D5BD14F71427D1E84F3DD0314C0F7B2291E5B200AC8C7C3B925 DUP6 PUSH1 0x40 MLOAD PUSH2 0x1437 SWAP2 DUP2 MSTORE PUSH1 0x20 ADD SWAP1 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 LOG3 POP POP POP POP POP JUMP JUMPDEST PUSH0 MLOAD PUSH1 0x20 PUSH2 0x2853 PUSH0 CODECOPY PUSH0 MLOAD SWAP1 PUSH0 MSTORE PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP5 AND PUSH2 0x1480 JUMPI DUP2 DUP2 PUSH1 0x2 ADD PUSH0 DUP3 DUP3 SLOAD PUSH2 0x1475 SWAP2 SWAP1 PUSH2 0x25AE JUMP JUMPDEST SWAP1 SWAP2 SSTORE POP PUSH2 0x14DD SWAP1 POP JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP5 AND PUSH0 SWAP1 DUP2 MSTORE PUSH1 0x20 DUP3 SWAP1 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD DUP3 DUP2 LT ISZERO PUSH2 0x14BF JUMPI DUP5 DUP2 DUP5 PUSH1 0x40 MLOAD PUSH4 0x391434E3 PUSH1 0xE2 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x925 SWAP4 SWAP3 SWAP2 SWAP1 PUSH2 0x258D JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP6 AND PUSH0 SWAP1 DUP2 MSTORE PUSH1 0x20 DUP4 SWAP1 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SWAP1 DUP4 SWAP1 SUB SWAP1 SSTORE JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP4 AND PUSH2 0x14FB JUMPI PUSH1 0x2 DUP2 ADD DUP1 SLOAD DUP4 SWAP1 SUB SWAP1 SSTORE PUSH2 0x1519 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP4 AND PUSH0 SWAP1 DUP2 MSTORE PUSH1 0x20 DUP3 SWAP1 MSTORE PUSH1 0x40 SWAP1 KECCAK256 DUP1 SLOAD DUP4 ADD SWAP1 SSTORE JUMPDEST DUP3 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP5 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH32 0xDDF252AD1BE2C89B69C2B068FC378DAA952BA7F163C4A11628F55A4DF523B3EF DUP5 PUSH1 0x40 MLOAD PUSH2 0x155E SWAP2 DUP2 MSTORE PUSH1 0x20 ADD SWAP1 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 LOG3 POP POP POP POP JUMP JUMPDEST PUSH2 0x1575 DUP3 PUSH2 0x1D4B JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP4 AND SWAP1 PUSH32 0xBC7CD75A20EE27FD9ADEBAB32041F755214DBC6BFFA90CC0225B39DA2E5C2D3B SWAP1 PUSH0 SWAP1 LOG2 DUP1 MLOAD ISZERO PUSH2 0x15B9 JUMPI PUSH2 0xDAE DUP3 DUP3 PUSH2 0x1930 JUMP JUMPDEST PUSH2 0x8D2 PUSH2 0x1DAE JUMP JUMPDEST PUSH2 0x15D4 PUSH2 0x15CC PUSH2 0x750 JUMP JUMPDEST DUP6 ADDRESS DUP6 PUSH2 0x1DCD JUMP JUMPDEST PUSH2 0x15DE DUP4 DUP3 PUSH2 0x1E03 JUMP JUMPDEST DUP3 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP5 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH32 0xDCBC1C05240F31FF3AD067EF1EE35CE4997762752E3A095284754544F4C709D7 DUP5 DUP5 PUSH1 0x40 MLOAD PUSH2 0x155E SWAP3 SWAP2 SWAP1 SWAP2 DUP3 MSTORE PUSH1 0x20 DUP3 ADD MSTORE PUSH1 0x40 ADD SWAP1 JUMP JUMPDEST PUSH0 DUP2 ISZERO PUSH2 0x170E JUMPI PUSH0 PUSH0 DUP6 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP6 PUSH1 0x40 MLOAD PUSH1 0x24 ADD PUSH2 0x1652 SWAP2 DUP2 MSTORE PUSH1 0x20 ADD SWAP1 JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH1 0x1F NOT DUP2 DUP5 SUB ADD DUP2 MSTORE SWAP2 DUP2 MSTORE PUSH1 0x20 DUP3 ADD DUP1 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xE0 SHL SUB AND PUSH4 0xB6B55F25 PUSH1 0xE0 SHL OR SWAP1 MSTORE MLOAD PUSH2 0x1687 SWAP2 SWAP1 PUSH2 0x26E1 JUMP JUMPDEST PUSH0 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP6 GAS DELEGATECALL SWAP2 POP POP RETURNDATASIZE DUP1 PUSH0 DUP2 EQ PUSH2 0x16BF JUMPI PUSH1 0x40 MLOAD SWAP2 POP PUSH1 0x1F NOT PUSH1 0x3F RETURNDATASIZE ADD AND DUP3 ADD PUSH1 0x40 MSTORE RETURNDATASIZE DUP3 MSTORE RETURNDATASIZE PUSH0 PUSH1 0x20 DUP5 ADD RETURNDATACOPY PUSH2 0x16C4 JUMP JUMPDEST PUSH1 0x60 SWAP2 POP JUMPDEST POP SWAP2 POP SWAP2 POP DUP2 PUSH2 0x1706 JUMPI PUSH32 0xF8E68F23D3B33772E986CC9861E94E8FD6B9461D62BC1FB21CD754BBAF726BD3 DUP2 PUSH1 0x40 MLOAD PUSH2 0x16FD SWAP2 SWAP1 PUSH2 0x2199 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 LOG1 JUMPDEST POP SWAP1 POP PUSH2 0x707 JUMP JUMPDEST PUSH2 0x175E DUP4 PUSH1 0x40 MLOAD PUSH1 0x24 ADD PUSH2 0x1724 SWAP2 DUP2 MSTORE PUSH1 0x20 ADD SWAP1 JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH1 0x1F NOT DUP2 DUP5 SUB ADD DUP2 MSTORE SWAP2 SWAP1 MSTORE PUSH1 0x20 DUP2 ADD DUP1 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xE0 SHL SUB AND PUSH4 0xB6B55F25 PUSH1 0xE0 SHL OR SWAP1 MSTORE PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP7 AND SWAP1 PUSH2 0x1930 JUMP JUMPDEST POP PUSH1 0x1 SWAP1 POP PUSH2 0x707 JUMP JUMPDEST PUSH0 DUP2 ISZERO PUSH2 0x1839 JUMPI PUSH0 PUSH0 DUP6 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP6 PUSH1 0x40 MLOAD PUSH1 0x24 ADD PUSH2 0x178E SWAP2 DUP2 MSTORE PUSH1 0x20 ADD SWAP1 JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH1 0x1F NOT DUP2 DUP5 SUB ADD DUP2 MSTORE SWAP2 DUP2 MSTORE PUSH1 0x20 DUP3 ADD DUP1 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xE0 SHL SUB AND PUSH4 0x2E1A7D4D PUSH1 0xE0 SHL OR SWAP1 MSTORE MLOAD PUSH2 0x17C3 SWAP2 SWAP1 PUSH2 0x26E1 JUMP JUMPDEST PUSH0 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP6 GAS DELEGATECALL SWAP2 POP POP RETURNDATASIZE DUP1 PUSH0 DUP2 EQ PUSH2 0x17FB JUMPI PUSH1 0x40 MLOAD SWAP2 POP PUSH1 0x1F NOT PUSH1 0x3F RETURNDATASIZE ADD AND DUP3 ADD PUSH1 0x40 MSTORE RETURNDATASIZE DUP3 MSTORE RETURNDATASIZE PUSH0 PUSH1 0x20 DUP5 ADD RETURNDATACOPY PUSH2 0x1800 JUMP JUMPDEST PUSH1 0x60 SWAP2 POP JUMPDEST POP SWAP2 POP SWAP2 POP DUP2 PUSH2 0x1706 JUMPI PUSH32 0xAD0AD28A12A6ED800F1A7B398454913AFE6826C175E6CC28F2E8E2C175B0D728 DUP2 PUSH1 0x40 MLOAD PUSH2 0x16FD SWAP2 SWAP1 PUSH2 0x2199 JUMP JUMPDEST PUSH2 0x175E DUP4 PUSH1 0x40 MLOAD PUSH1 0x24 ADD PUSH2 0x184F SWAP2 DUP2 MSTORE PUSH1 0x20 ADD SWAP1 JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH1 0x1F NOT DUP2 DUP5 SUB ADD DUP2 MSTORE SWAP2 SWAP1 MSTORE PUSH1 0x20 DUP2 ADD DUP1 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xE0 SHL SUB AND PUSH4 0x2E1A7D4D PUSH1 0xE0 SHL OR SWAP1 MSTORE PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP7 AND SWAP1 PUSH2 0x1930 JUMP JUMPDEST DUP3 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP6 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND EQ PUSH2 0x18AD JUMPI PUSH2 0x18AD DUP4 DUP7 DUP4 PUSH2 0xE01 JUMP JUMPDEST PUSH2 0x18B7 DUP4 DUP3 PUSH2 0x1E37 JUMP JUMPDEST PUSH2 0x18C9 PUSH2 0x18C2 PUSH2 0x750 JUMP JUMPDEST DUP6 DUP5 PUSH2 0x1E6B JUMP JUMPDEST DUP3 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP5 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP7 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH32 0xFBDE797D201C681B91056529119E0B02407C7BB96A4A2C75C01FC9667232C8DB DUP6 DUP6 PUSH1 0x40 MLOAD PUSH2 0x1921 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 POP POP POP JUMP JUMPDEST PUSH1 0x60 PUSH0 PUSH2 0x193D DUP5 DUP5 PUSH2 0x1EA0 JUMP JUMPDEST SWAP1 POP DUP1 DUP1 ISZERO PUSH2 0x195E JUMPI POP PUSH0 RETURNDATASIZE GT DUP1 PUSH2 0x195E JUMPI POP PUSH0 DUP5 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND EXTCODESIZE GT JUMPDEST ISZERO PUSH2 0x1973 JUMPI PUSH2 0x196B PUSH2 0x1EB3 JUMP JUMPDEST SWAP2 POP POP PUSH2 0x6C0 JUMP JUMPDEST DUP1 ISZERO PUSH2 0x199D JUMPI PUSH1 0x40 MLOAD PUSH4 0x9996B315 PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP6 AND PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x24 ADD PUSH2 0x925 JUMP JUMPDEST RETURNDATASIZE ISZERO PUSH2 0x19B0 JUMPI PUSH2 0x19AB PUSH2 0x1ECC JUMP JUMPDEST PUSH2 0x19C9 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH4 0xD6BDA275 PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH4 0x4E2333D1 PUSH1 0xE1 SHL DUP2 MSTORE ADDRESS PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP1 DUP4 AND SWAP2 SWAP1 DUP5 AND SWAP1 PUSH4 0x9C4667A2 SWAP1 PUSH1 0x24 ADD PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x1A17 JUMPI RETURNDATASIZE PUSH0 PUSH0 RETURNDATACOPY RETURNDATASIZE PUSH0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP3 ADD DUP1 PUSH1 0x40 MSTORE POP DUP2 ADD SWAP1 PUSH2 0x1A3B SWAP2 SWAP1 PUSH2 0x26F7 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND EQ PUSH2 0x8D2 JUMPI PUSH1 0x40 MLOAD PUSH4 0xE76673EF PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST DUP1 ISZERO PUSH2 0x1B3D JUMPI PUSH1 0x40 MLOAD PUSH1 0x1 PUSH1 0x24 DUP3 ADD MSTORE PUSH0 SWAP1 DUP2 SWAP1 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP6 AND SWAP1 PUSH1 0x44 ADD PUSH1 0x40 DUP1 MLOAD PUSH1 0x1F NOT DUP2 DUP5 SUB ADD DUP2 MSTORE SWAP2 DUP2 MSTORE PUSH1 0x20 DUP3 ADD DUP1 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xE0 SHL SUB AND PUSH4 0x2D08BA2B PUSH1 0xE1 SHL OR SWAP1 MSTORE MLOAD PUSH2 0x1AB9 SWAP2 SWAP1 PUSH2 0x26E1 JUMP JUMPDEST PUSH0 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP6 GAS DELEGATECALL SWAP2 POP POP RETURNDATASIZE DUP1 PUSH0 DUP2 EQ PUSH2 0x1AF1 JUMPI PUSH1 0x40 MLOAD SWAP2 POP PUSH1 0x1F NOT PUSH1 0x3F RETURNDATASIZE ADD AND DUP3 ADD PUSH1 0x40 MSTORE RETURNDATASIZE DUP3 MSTORE RETURNDATASIZE PUSH0 PUSH1 0x20 DUP5 ADD RETURNDATACOPY PUSH2 0x1AF6 JUMP JUMPDEST PUSH1 0x60 SWAP2 POP JUMPDEST POP SWAP2 POP SWAP2 POP DUP2 PUSH2 0xE4C JUMPI PUSH32 0x9F864ACE9F45C2734F9444CB9A0C1ADE6F1B15A8C202C17175B759728A4A0BF8 DUP2 PUSH1 0x40 MLOAD PUSH2 0x1B2F SWAP2 SWAP1 PUSH2 0x2199 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 LOG1 POP POP POP POP JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH0 PUSH1 0x24 DUP3 ADD MSTORE PUSH2 0xDAE SWAP1 PUSH1 0x44 ADD PUSH1 0x40 DUP1 MLOAD PUSH1 0x1F NOT DUP2 DUP5 SUB ADD DUP2 MSTORE SWAP2 SWAP1 MSTORE PUSH1 0x20 DUP2 ADD DUP1 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xE0 SHL SUB AND PUSH4 0x2D08BA2B PUSH1 0xE1 SHL OR SWAP1 MSTORE PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP5 AND SWAP1 PUSH2 0x1930 JUMP JUMPDEST PUSH2 0xDAE DUP2 PUSH1 0x40 MLOAD PUSH1 0x24 ADD PUSH2 0x1B9B SWAP2 SWAP1 PUSH2 0x2199 JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH1 0x1F NOT DUP2 DUP5 SUB ADD DUP2 MSTORE SWAP2 SWAP1 MSTORE PUSH1 0x20 DUP2 ADD DUP1 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xE0 SHL SUB AND PUSH4 0x139A8E25 PUSH1 0xE3 SHL OR SWAP1 MSTORE PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP5 AND SWAP1 PUSH2 0x1930 JUMP JUMPDEST PUSH2 0x1BDD PUSH2 0x1ED7 JUMP JUMPDEST PUSH2 0xF90 JUMPI PUSH1 0x40 MLOAD PUSH4 0x1AFCD79F PUSH1 0xE3 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH2 0x1C02 PUSH2 0x1BD5 JUMP JUMPDEST PUSH2 0x8D2 DUP3 DUP3 PUSH2 0x1EF0 JUMP JUMPDEST PUSH2 0x1C14 PUSH2 0x1BD5 JUMP JUMPDEST PUSH2 0xF92 DUP2 PUSH2 0x1F40 JUMP JUMPDEST PUSH2 0x1C25 PUSH2 0x1BD5 JUMP JUMPDEST PUSH0 DUP1 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB NOT AND PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP5 AND OR SWAP1 SSTORE PUSH2 0x1C5A PUSH2 0x1C4A PUSH2 0x750 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP5 AND SWAP1 PUSH2 0x19D0 JUMP JUMPDEST PUSH0 SLOAD PUSH2 0x8D2 SWAP1 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP3 PUSH2 0x1B87 JUMP JUMPDEST PUSH0 PUSH1 0x2 DUP3 PUSH1 0x3 DUP2 GT ISZERO PUSH2 0x1C84 JUMPI PUSH2 0x1C84 PUSH2 0x2712 JUMP JUMPDEST PUSH2 0x1C8E SWAP2 SWAP1 PUSH2 0x2726 JUMP JUMPDEST PUSH1 0xFF AND PUSH1 0x1 EQ SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH0 PUSH0 PUSH0 PUSH2 0x1CA8 DUP7 DUP7 PUSH2 0x1FC3 JUMP JUMPDEST SWAP2 POP SWAP2 POP DUP2 PUSH0 SUB PUSH2 0x1CCC JUMPI DUP4 DUP2 DUP2 PUSH2 0x1CC2 JUMPI PUSH2 0x1CC2 PUSH2 0x26CD JUMP JUMPDEST DIV SWAP3 POP POP POP PUSH2 0x707 JUMP JUMPDEST DUP2 DUP5 GT PUSH2 0x1CE3 JUMPI PUSH2 0x1CE3 PUSH1 0x3 DUP6 ISZERO MUL PUSH1 0x11 XOR PUSH2 0x1FDF JUMP JUMPDEST PUSH0 DUP5 DUP7 DUP9 MULMOD PUSH0 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 DUP6 DUP5 GT SWAP1 SWAP7 SUB SWAP6 SWAP1 SWAP6 MUL SWAP2 SWAP1 SWAP4 SUB SWAP4 SWAP1 SWAP4 DIV SWAP3 SWAP1 SWAP3 OR MUL SWAP2 POP POP SWAP4 SWAP3 POP POP POP JUMP JUMPDEST DUP1 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND EXTCODESIZE PUSH0 SUB PUSH2 0x1D80 JUMPI PUSH1 0x40 MLOAD PUSH4 0x4C9C8CE3 PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP3 AND PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x24 ADD PUSH2 0x925 JUMP JUMPDEST PUSH0 MLOAD PUSH1 0x20 PUSH2 0x2873 PUSH0 CODECOPY PUSH0 MLOAD SWAP1 PUSH0 MSTORE DUP1 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB NOT AND PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP3 SWAP1 SWAP3 AND SWAP2 SWAP1 SWAP2 OR SWAP1 SSTORE JUMP JUMPDEST CALLVALUE ISZERO PUSH2 0xF90 JUMPI PUSH1 0x40 MLOAD PUSH4 0xB398979F PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH2 0x1DDB DUP5 DUP5 DUP5 DUP5 PUSH1 0x1 PUSH2 0x1FF0 JUMP JUMPDEST PUSH2 0xE4C JUMPI PUSH1 0x40 MLOAD PUSH4 0x5274AFE7 PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP6 AND PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x24 ADD PUSH2 0x925 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP3 AND PUSH2 0x1E2C JUMPI PUSH1 0x40 MLOAD PUSH4 0xEC442F05 PUSH1 0xE0 SHL DUP2 MSTORE PUSH0 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x24 ADD PUSH2 0x925 JUMP JUMPDEST PUSH2 0x8D2 PUSH0 DUP4 DUP4 PUSH2 0x1446 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP3 AND PUSH2 0x1E60 JUMPI PUSH1 0x40 MLOAD PUSH4 0x4B637E8F PUSH1 0xE1 SHL DUP2 MSTORE PUSH0 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x24 ADD PUSH2 0x925 JUMP JUMPDEST PUSH2 0x8D2 DUP3 PUSH0 DUP4 PUSH2 0x1446 JUMP JUMPDEST PUSH2 0x1E78 DUP4 DUP4 DUP4 PUSH1 0x1 PUSH2 0x205D JUMP JUMPDEST PUSH2 0xDAE JUMPI PUSH1 0x40 MLOAD PUSH4 0x5274AFE7 PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP5 AND PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x24 ADD PUSH2 0x925 JUMP JUMPDEST PUSH0 PUSH0 PUSH0 DUP4 MLOAD PUSH1 0x20 DUP6 ADD DUP7 GAS DELEGATECALL SWAP4 SWAP3 POP POP POP JUMP JUMPDEST PUSH1 0x40 MLOAD RETURNDATASIZE DUP2 MSTORE RETURNDATASIZE PUSH0 PUSH1 0x20 DUP4 ADD RETURNDATACOPY RETURNDATASIZE PUSH1 0x20 ADD DUP2 ADD PUSH1 0x40 MSTORE SWAP1 JUMP JUMPDEST PUSH1 0x40 MLOAD RETURNDATASIZE PUSH0 DUP3 RETURNDATACOPY RETURNDATASIZE DUP2 REVERT JUMPDEST PUSH0 PUSH2 0x1EE0 PUSH2 0x12D4 JUMP JUMPDEST SLOAD PUSH1 0x1 PUSH1 0x40 SHL SWAP1 DIV PUSH1 0xFF AND SWAP2 SWAP1 POP JUMP JUMPDEST PUSH2 0x1EF8 PUSH2 0x1BD5 JUMP JUMPDEST PUSH0 MLOAD PUSH1 0x20 PUSH2 0x2853 PUSH0 CODECOPY PUSH0 MLOAD SWAP1 PUSH0 MSTORE PUSH32 0x52C63247E1F47DB19D5CE0460030C497F067CA4CEBF71BA98EEADABE20BACE03 PUSH2 0x1F31 DUP5 DUP3 PUSH2 0x2797 JUMP JUMPDEST POP PUSH1 0x4 DUP2 ADD PUSH2 0xE4C DUP4 DUP3 PUSH2 0x2797 JUMP JUMPDEST PUSH2 0x1F48 PUSH2 0x1BD5 JUMP JUMPDEST PUSH32 0x773E532DFEDE91F04B12A73D3D2ACD361424F41F76B4FB79F090161E36B4E00 PUSH0 DUP1 PUSH2 0x1F74 DUP5 PUSH2 0x20BF JUMP JUMPDEST SWAP2 POP SWAP2 POP DUP2 PUSH2 0x1F84 JUMPI PUSH1 0x12 PUSH2 0x1F86 JUMP JUMPDEST DUP1 JUMPDEST DUP4 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA8 SHL SUB NOT AND PUSH1 0x1 PUSH1 0xA0 SHL PUSH1 0xFF SWAP3 SWAP1 SWAP3 AND SWAP2 SWAP1 SWAP2 MUL PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB NOT AND OR PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP5 SWAP1 SWAP5 AND SWAP4 SWAP1 SWAP4 OR SWAP1 SWAP2 SSTORE POP POP JUMP JUMPDEST PUSH0 DUP1 PUSH0 NOT DUP4 DUP6 MULMOD SWAP4 SWAP1 SWAP3 MUL DUP1 DUP5 LT SWAP4 DUP2 SWAP1 SUB SWAP4 SWAP1 SWAP4 SUB SWAP4 SWAP2 POP POP JUMP JUMPDEST PUSH4 0x4E487B71 PUSH0 MSTORE DUP1 PUSH1 0x20 MSTORE PUSH1 0x24 PUSH1 0x1C REVERT JUMPDEST PUSH1 0x40 MLOAD PUSH4 0x23B872DD PUSH1 0xE0 SHL PUSH0 DUP2 DUP2 MSTORE PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP8 DUP2 AND PUSH1 0x4 MSTORE DUP7 AND PUSH1 0x24 MSTORE PUSH1 0x44 DUP6 SWAP1 MSTORE SWAP2 PUSH1 0x20 DUP4 PUSH1 0x64 DUP2 DUP1 DUP13 GAS CALL SWAP3 POP PUSH1 0x1 PUSH0 MLOAD EQ DUP4 AND PUSH2 0x204C JUMPI DUP4 DUP4 ISZERO AND ISZERO PUSH2 0x2040 JUMPI RETURNDATASIZE PUSH0 DUP3 RETURNDATACOPY RETURNDATASIZE DUP2 REVERT JUMPDEST PUSH0 DUP9 EXTCODESIZE GT RETURNDATASIZE ISZERO AND DUP4 AND SWAP3 POP JUMPDEST PUSH1 0x40 MSTORE POP PUSH0 PUSH1 0x60 MSTORE SWAP6 SWAP5 POP POP POP POP POP JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH4 0xA9059CBB PUSH1 0xE0 SHL PUSH0 DUP2 DUP2 MSTORE PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP7 AND PUSH1 0x4 MSTORE PUSH1 0x24 DUP6 SWAP1 MSTORE SWAP2 PUSH1 0x20 DUP4 PUSH1 0x44 DUP2 DUP1 DUP12 GAS CALL SWAP3 POP PUSH1 0x1 PUSH0 MLOAD EQ DUP4 AND PUSH2 0x20B3 JUMPI DUP4 DUP4 ISZERO AND ISZERO PUSH2 0x20A7 JUMPI RETURNDATASIZE PUSH0 DUP3 RETURNDATACOPY RETURNDATASIZE DUP2 REVERT JUMPDEST PUSH0 DUP8 EXTCODESIZE GT RETURNDATASIZE ISZERO AND DUP4 AND SWAP3 POP JUMPDEST PUSH1 0x40 MSTORE POP SWAP5 SWAP4 POP POP POP POP JUMP JUMPDEST PUSH0 PUSH0 PUSH0 PUSH2 0x20CB PUSH1 0x40 MLOAD SWAP1 JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH1 0x4 DUP2 MSTORE PUSH1 0x24 DUP2 ADD SWAP1 SWAP2 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 SWAP2 POP PUSH0 SWAP1 DUP2 SWAP1 PUSH2 0x2106 SWAP1 DUP8 SWAP1 PUSH2 0x214A JUMP JUMPDEST POP SWAP2 POP SWAP2 POP PUSH2 0x2114 DUP4 PUSH1 0x40 MSTORE JUMP JUMPDEST DUP2 DUP1 ISZERO PUSH2 0x2122 JUMPI POP PUSH1 0x20 RETURNDATASIZE LT ISZERO JUMPDEST DUP1 ISZERO PUSH2 0x212F JUMPI POP PUSH1 0xFF DUP2 GT ISZERO JUMPDEST PUSH2 0x213A JUMPI PUSH0 PUSH0 PUSH2 0x213E JUMP JUMPDEST PUSH1 0x1 DUP2 JUMPDEST SWAP5 POP SWAP5 POP POP POP POP SWAP2 POP SWAP2 JUMP JUMPDEST PUSH0 PUSH0 PUSH0 PUSH1 0x40 PUSH0 DUP6 MLOAD PUSH1 0x20 DUP8 ADD DUP9 GAS STATICCALL SWAP3 POP PUSH0 MLOAD SWAP2 POP PUSH1 0x20 MLOAD SWAP1 POP SWAP3 POP SWAP3 POP SWAP3 JUMP JUMPDEST PUSH0 DUP2 MLOAD DUP1 DUP5 MSTORE DUP1 PUSH1 0x20 DUP5 ADD PUSH1 0x20 DUP7 ADD MCOPY PUSH0 PUSH1 0x20 DUP3 DUP7 ADD ADD MSTORE PUSH1 0x20 PUSH1 0x1F NOT PUSH1 0x1F DUP4 ADD AND DUP6 ADD ADD SWAP2 POP POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x20 DUP2 MSTORE PUSH0 PUSH2 0x707 PUSH1 0x20 DUP4 ADD DUP5 PUSH2 0x216B JUMP JUMPDEST PUSH0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x21BB JUMPI PUSH0 PUSH0 REVERT JUMPDEST POP CALLDATALOAD SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 AND DUP2 EQ PUSH2 0xF92 JUMPI PUSH0 PUSH0 REVERT JUMPDEST PUSH0 PUSH0 PUSH1 0x40 DUP4 DUP6 SUB SLT ISZERO PUSH2 0x21E7 JUMPI PUSH0 PUSH0 REVERT JUMPDEST DUP3 CALLDATALOAD PUSH2 0x21F2 DUP2 PUSH2 0x21C2 JUMP JUMPDEST SWAP5 PUSH1 0x20 SWAP4 SWAP1 SWAP4 ADD CALLDATALOAD SWAP4 POP POP POP JUMP JUMPDEST PUSH0 PUSH0 PUSH0 PUSH1 0x60 DUP5 DUP7 SUB SLT ISZERO PUSH2 0x2212 JUMPI PUSH0 PUSH0 REVERT JUMPDEST DUP4 CALLDATALOAD PUSH2 0x221D DUP2 PUSH2 0x21C2 JUMP JUMPDEST SWAP3 POP PUSH1 0x20 DUP5 ADD CALLDATALOAD PUSH2 0x222D DUP2 PUSH2 0x21C2 JUMP JUMPDEST SWAP3 SWAP6 SWAP3 SWAP5 POP POP POP PUSH1 0x40 SWAP2 SWAP1 SWAP2 ADD CALLDATALOAD SWAP1 JUMP JUMPDEST PUSH0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x224E JUMPI PUSH0 PUSH0 REVERT JUMPDEST DUP2 CALLDATALOAD PUSH2 0x707 DUP2 PUSH2 0x21C2 JUMP JUMPDEST PUSH4 0x4E487B71 PUSH1 0xE0 SHL PUSH0 MSTORE PUSH1 0x41 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH0 REVERT JUMPDEST PUSH0 DUP3 PUSH1 0x1F DUP4 ADD SLT PUSH2 0x227C JUMPI PUSH0 PUSH0 REVERT JUMPDEST DUP2 CALLDATALOAD PUSH1 0x20 DUP4 ADD PUSH0 PUSH0 PUSH8 0xFFFFFFFFFFFFFFFF DUP5 GT ISZERO PUSH2 0x229C JUMPI PUSH2 0x229C PUSH2 0x2259 JUMP JUMPDEST POP PUSH1 0x40 MLOAD PUSH1 0x1F NOT PUSH1 0x1F DUP6 ADD DUP2 AND PUSH1 0x3F ADD AND DUP2 ADD DUP2 DUP2 LT PUSH8 0xFFFFFFFFFFFFFFFF DUP3 GT OR ISZERO PUSH2 0x22CB JUMPI PUSH2 0x22CB PUSH2 0x2259 JUMP JUMPDEST PUSH1 0x40 MSTORE DUP4 DUP2 MSTORE SWAP1 POP DUP1 DUP3 DUP5 ADD DUP8 LT ISZERO PUSH2 0x22E2 JUMPI PUSH0 PUSH0 REVERT JUMPDEST DUP4 DUP4 PUSH1 0x20 DUP4 ADD CALLDATACOPY PUSH0 PUSH1 0x20 DUP6 DUP4 ADD ADD MSTORE DUP1 SWAP5 POP POP POP POP POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH0 PUSH0 PUSH1 0x40 DUP4 DUP6 SUB SLT ISZERO PUSH2 0x230F JUMPI PUSH0 PUSH0 REVERT JUMPDEST DUP3 CALLDATALOAD PUSH2 0x231A DUP2 PUSH2 0x21C2 JUMP JUMPDEST SWAP2 POP PUSH1 0x20 DUP4 ADD CALLDATALOAD PUSH8 0xFFFFFFFFFFFFFFFF DUP2 GT ISZERO PUSH2 0x2335 JUMPI PUSH0 PUSH0 REVERT JUMPDEST PUSH2 0x2341 DUP6 DUP3 DUP7 ADD PUSH2 0x226D JUMP JUMPDEST SWAP2 POP POP SWAP3 POP SWAP3 SWAP1 POP JUMP JUMPDEST PUSH0 PUSH0 PUSH1 0x40 DUP4 DUP6 SUB SLT ISZERO PUSH2 0x235C JUMPI PUSH0 PUSH0 REVERT JUMPDEST DUP3 CALLDATALOAD SWAP2 POP PUSH1 0x20 DUP4 ADD CALLDATALOAD PUSH2 0x236E DUP2 PUSH2 0x21C2 JUMP JUMPDEST DUP1 SWAP2 POP POP SWAP3 POP SWAP3 SWAP1 POP JUMP JUMPDEST PUSH0 PUSH0 PUSH0 PUSH1 0x60 DUP5 DUP7 SUB SLT ISZERO PUSH2 0x238B JUMPI PUSH0 PUSH0 REVERT JUMPDEST DUP4 CALLDATALOAD SWAP3 POP PUSH1 0x20 DUP5 ADD CALLDATALOAD PUSH2 0x239D DUP2 PUSH2 0x21C2 JUMP JUMPDEST SWAP2 POP PUSH1 0x40 DUP5 ADD CALLDATALOAD PUSH2 0x23AD DUP2 PUSH2 0x21C2 JUMP JUMPDEST DUP1 SWAP2 POP POP SWAP3 POP SWAP3 POP SWAP3 JUMP JUMPDEST PUSH0 PUSH0 PUSH1 0x40 DUP4 DUP6 SUB SLT ISZERO PUSH2 0x23C9 JUMPI PUSH0 PUSH0 REVERT JUMPDEST DUP3 CALLDATALOAD PUSH1 0xFF DUP2 AND DUP2 EQ PUSH2 0x231A JUMPI PUSH0 PUSH0 REVERT JUMPDEST PUSH0 PUSH0 PUSH0 PUSH1 0x60 DUP5 DUP7 SUB SLT ISZERO PUSH2 0x23EB JUMPI PUSH0 PUSH0 REVERT JUMPDEST DUP4 CALLDATALOAD PUSH2 0x23F6 DUP2 PUSH2 0x21C2 JUMP JUMPDEST SWAP3 POP PUSH1 0x20 DUP5 ADD CALLDATALOAD PUSH8 0xFFFFFFFFFFFFFFFF DUP2 GT ISZERO PUSH2 0x2411 JUMPI PUSH0 PUSH0 REVERT JUMPDEST PUSH2 0x241D DUP7 DUP3 DUP8 ADD PUSH2 0x226D JUMP JUMPDEST SWAP3 POP POP PUSH1 0x40 DUP5 ADD CALLDATALOAD DUP1 ISZERO ISZERO DUP2 EQ PUSH2 0x23AD JUMPI PUSH0 PUSH0 REVERT JUMPDEST PUSH0 PUSH0 PUSH1 0x40 DUP4 DUP6 SUB SLT ISZERO PUSH2 0x2443 JUMPI PUSH0 PUSH0 REVERT JUMPDEST DUP3 CALLDATALOAD PUSH2 0x244E DUP2 PUSH2 0x21C2 JUMP JUMPDEST SWAP2 POP PUSH1 0x20 DUP4 ADD CALLDATALOAD PUSH2 0x236E DUP2 PUSH2 0x21C2 JUMP JUMPDEST PUSH0 PUSH0 PUSH0 PUSH0 PUSH0 PUSH1 0xA0 DUP7 DUP9 SUB SLT ISZERO PUSH2 0x2472 JUMPI PUSH0 PUSH0 REVERT JUMPDEST DUP6 CALLDATALOAD PUSH8 0xFFFFFFFFFFFFFFFF DUP2 GT ISZERO PUSH2 0x2488 JUMPI PUSH0 PUSH0 REVERT JUMPDEST PUSH2 0x2494 DUP9 DUP3 DUP10 ADD PUSH2 0x226D JUMP JUMPDEST SWAP6 POP POP PUSH1 0x20 DUP7 ADD CALLDATALOAD PUSH8 0xFFFFFFFFFFFFFFFF DUP2 GT ISZERO PUSH2 0x24B0 JUMPI PUSH0 PUSH0 REVERT JUMPDEST PUSH2 0x24BC DUP9 DUP3 DUP10 ADD PUSH2 0x226D JUMP JUMPDEST SWAP5 POP POP PUSH1 0x40 DUP7 ADD CALLDATALOAD PUSH2 0x24CD DUP2 PUSH2 0x21C2 JUMP JUMPDEST SWAP3 POP PUSH1 0x60 DUP7 ADD CALLDATALOAD PUSH2 0x24DD DUP2 PUSH2 0x21C2 JUMP JUMPDEST SWAP2 POP PUSH1 0x80 DUP7 ADD CALLDATALOAD PUSH8 0xFFFFFFFFFFFFFFFF DUP2 GT ISZERO PUSH2 0x24F8 JUMPI PUSH0 PUSH0 REVERT JUMPDEST PUSH2 0x2504 DUP9 DUP3 DUP10 ADD PUSH2 0x226D JUMP JUMPDEST SWAP2 POP POP SWAP3 SWAP6 POP SWAP3 SWAP6 SWAP1 SWAP4 POP JUMP JUMPDEST PUSH1 0x1 DUP2 DUP2 SHR SWAP1 DUP3 AND DUP1 PUSH2 0x2525 JUMPI PUSH1 0x7F DUP3 AND SWAP2 POP JUMPDEST PUSH1 0x20 DUP3 LT DUP2 SUB PUSH2 0x2543 JUMPI PUSH4 0x4E487B71 PUSH1 0xE0 SHL PUSH0 MSTORE PUSH1 0x22 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH0 REVERT JUMPDEST POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH4 0x4E487B71 PUSH1 0xE0 SHL PUSH0 MSTORE PUSH1 0x11 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH0 REVERT JUMPDEST PUSH1 0xFF DUP2 DUP2 AND DUP4 DUP3 AND ADD SWAP1 DUP2 GT ISZERO PUSH2 0x6C0 JUMPI PUSH2 0x6C0 PUSH2 0x2549 JUMP JUMPDEST PUSH0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x2586 JUMPI PUSH0 PUSH0 REVERT JUMPDEST POP MLOAD SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP4 SWAP1 SWAP4 AND DUP4 MSTORE PUSH1 0x20 DUP4 ADD SWAP2 SWAP1 SWAP2 MSTORE PUSH1 0x40 DUP3 ADD MSTORE PUSH1 0x60 ADD SWAP1 JUMP JUMPDEST DUP1 DUP3 ADD DUP1 DUP3 GT ISZERO PUSH2 0x6C0 JUMPI PUSH2 0x6C0 PUSH2 0x2549 JUMP JUMPDEST PUSH1 0x1 DUP2 JUMPDEST PUSH1 0x1 DUP5 GT ISZERO PUSH2 0x25FC JUMPI DUP1 DUP6 DIV DUP2 GT ISZERO PUSH2 0x25E0 JUMPI PUSH2 0x25E0 PUSH2 0x2549 JUMP JUMPDEST PUSH1 0x1 DUP5 AND ISZERO PUSH2 0x25EE JUMPI SWAP1 DUP2 MUL SWAP1 JUMPDEST PUSH1 0x1 SWAP4 SWAP1 SWAP4 SHR SWAP3 DUP1 MUL PUSH2 0x25C5 JUMP JUMPDEST SWAP4 POP SWAP4 SWAP2 POP POP JUMP JUMPDEST PUSH0 DUP3 PUSH2 0x2612 JUMPI POP PUSH1 0x1 PUSH2 0x6C0 JUMP JUMPDEST DUP2 PUSH2 0x261E JUMPI POP PUSH0 PUSH2 0x6C0 JUMP JUMPDEST DUP2 PUSH1 0x1 DUP2 EQ PUSH2 0x2634 JUMPI PUSH1 0x2 DUP2 EQ PUSH2 0x263E JUMPI PUSH2 0x265A JUMP JUMPDEST PUSH1 0x1 SWAP2 POP POP PUSH2 0x6C0 JUMP JUMPDEST PUSH1 0xFF DUP5 GT ISZERO PUSH2 0x264F JUMPI PUSH2 0x264F PUSH2 0x2549 JUMP JUMPDEST POP POP PUSH1 0x1 DUP3 SHL PUSH2 0x6C0 JUMP JUMPDEST POP PUSH1 0x20 DUP4 LT PUSH2 0x133 DUP4 LT AND PUSH1 0x4E DUP5 LT PUSH1 0xB DUP5 LT AND OR ISZERO PUSH2 0x267D JUMPI POP DUP2 DUP2 EXP PUSH2 0x6C0 JUMP JUMPDEST PUSH2 0x2689 PUSH0 NOT DUP5 DUP5 PUSH2 0x25C1 JUMP JUMPDEST DUP1 PUSH0 NOT DIV DUP3 GT ISZERO PUSH2 0x269C JUMPI PUSH2 0x269C PUSH2 0x2549 JUMP JUMPDEST MUL SWAP4 SWAP3 POP POP POP JUMP JUMPDEST PUSH0 PUSH2 0x707 PUSH1 0xFF DUP5 AND DUP4 PUSH2 0x2604 JUMP JUMPDEST PUSH1 0xFF DUP4 AND DUP2 MSTORE PUSH1 0x40 PUSH1 0x20 DUP3 ADD MSTORE PUSH0 PUSH2 0x946 PUSH1 0x40 DUP4 ADD DUP5 PUSH2 0x216B JUMP JUMPDEST PUSH4 0x4E487B71 PUSH1 0xE0 SHL PUSH0 MSTORE PUSH1 0x12 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH0 REVERT JUMPDEST PUSH0 DUP3 MLOAD DUP1 PUSH1 0x20 DUP6 ADD DUP5 MCOPY PUSH0 SWAP3 ADD SWAP2 DUP3 MSTORE POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x2707 JUMPI PUSH0 PUSH0 REVERT JUMPDEST DUP2 MLOAD PUSH2 0x707 DUP2 PUSH2 0x21C2 JUMP JUMPDEST PUSH4 0x4E487B71 PUSH1 0xE0 SHL PUSH0 MSTORE PUSH1 0x21 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH0 REVERT JUMPDEST PUSH0 PUSH1 0xFF DUP4 AND DUP1 PUSH2 0x2744 JUMPI PUSH4 0x4E487B71 PUSH1 0xE0 SHL PUSH0 MSTORE PUSH1 0x12 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH0 REVERT JUMPDEST DUP1 PUSH1 0xFF DUP5 AND MOD SWAP2 POP POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x1F DUP3 GT ISZERO PUSH2 0xDAE JUMPI DUP1 PUSH0 MSTORE PUSH1 0x20 PUSH0 KECCAK256 PUSH1 0x1F DUP5 ADD PUSH1 0x5 SHR DUP2 ADD PUSH1 0x20 DUP6 LT ISZERO PUSH2 0x2778 JUMPI POP DUP1 JUMPDEST PUSH1 0x1F DUP5 ADD PUSH1 0x5 SHR DUP3 ADD SWAP2 POP JUMPDEST DUP2 DUP2 LT ISZERO PUSH2 0x10C0 JUMPI PUSH0 DUP2 SSTORE PUSH1 0x1 ADD PUSH2 0x2784 JUMP JUMPDEST DUP2 MLOAD PUSH8 0xFFFFFFFFFFFFFFFF DUP2 GT ISZERO PUSH2 0x27B1 JUMPI PUSH2 0x27B1 PUSH2 0x2259 JUMP JUMPDEST PUSH2 0x27C5 DUP2 PUSH2 0x27BF DUP5 SLOAD PUSH2 0x2511 JUMP JUMPDEST DUP5 PUSH2 0x2753 JUMP JUMPDEST PUSH1 0x20 PUSH1 0x1F DUP3 GT PUSH1 0x1 DUP2 EQ PUSH2 0x27F7 JUMPI PUSH0 DUP4 ISZERO PUSH2 0x27E0 JUMPI POP DUP5 DUP3 ADD MLOAD JUMPDEST PUSH0 NOT PUSH1 0x3 DUP6 SWAP1 SHL SHR NOT AND PUSH1 0x1 DUP5 SWAP1 SHL OR DUP5 SSTORE PUSH2 0x10C0 JUMP JUMPDEST PUSH0 DUP5 DUP2 MSTORE PUSH1 0x20 DUP2 KECCAK256 PUSH1 0x1F NOT DUP6 AND SWAP2 JUMPDEST DUP3 DUP2 LT ISZERO PUSH2 0x2826 JUMPI DUP8 DUP6 ADD MLOAD DUP3 SSTORE PUSH1 0x20 SWAP5 DUP6 ADD SWAP5 PUSH1 0x1 SWAP1 SWAP3 ADD SWAP2 ADD PUSH2 0x2806 JUMP JUMPDEST POP DUP5 DUP3 LT ISZERO PUSH2 0x2843 JUMPI DUP7 DUP5 ADD MLOAD PUSH0 NOT PUSH1 0x3 DUP8 SWAP1 SHL PUSH1 0xF8 AND SHR NOT AND DUP2 SSTORE JUMPDEST POP POP POP POP PUSH1 0x1 SWAP1 DUP2 SHL ADD SWAP1 SSTORE POP JUMP INVALID MSTORE 0xC6 ORIGIN SELFBALANCE RJUMPI 0xF47D 0xB1 SWAP14 TLOAD RJUMP 0x4600 ADDRESS 0xC4 SWAP8 CREATE PUSH8 0xCA4CEBF71BA98EEA 0xDA 0xBE KECCAK256 0xBA 0xCE STOP CALLDATASIZE ADDMOD SWAP5 LOG1 EXTCODESIZE LOG1 LOG3 0x21 MOD PUSH8 0xC828492DB98DCA3E KECCAK256 PUSH23 0xCC3735A920A3CA505D382BBCA264697066735822122066 0xB8 DUP12 0xC4 SWAP6 0x24 PUSH0 DUP12 0xC6 RETURNCONTRACT 0x88 CODECOPY 0xD2 0x4D PUSH14 0x9C3D76729AF71AC31F0634DFD805 0x4C SELFBALANCE ADDMOD PUSH5 0x736F6C6343 STOP ADDMOD 0x1E STOP CALLER ","sourceMap":"1923:6375:74:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;5014:118;;;;;;;;;;;;;:::i;:::-;;;160:25:87;;;148:2;133:18;5014:118:74;;;;;;;;2715:144:12;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;8750:148:13:-;;;;;;;;;;-1:-1:-1;8750:148:13;;;;;:::i;:::-;;:::i;5132:186:12:-;;;;;;;;;;-1:-1:-1;5132:186:12;;;;;:::i;:::-;;:::i;:::-;;;1619:14:87;;1612:22;1594:41;;1582:2;1567:18;5132:186:12;1454:187:87;9887:147:13;;;;;;;;;;-1:-1:-1;9887:147:13;;;;;:::i;:::-;;:::i;3868:152:12:-;;;;;;;;;;-1:-1:-1;3999:14:12;;3868:152;;5910:244;;;;;;;;;;-1:-1:-1;5910:244:12;;;;;:::i;:::-;;:::i;7963:221:13:-;;;;;;;;;;;;;:::i;:::-;;;2331:4:87;2319:17;;;2301:36;;2289:2;2274:18;7963:221:13;2159:184:87;8219:153:13;;;;;;;;;;;;;:::i;:::-;;;-1:-1:-1;;;;;2512:32:87;;;2494:51;;2482:2;2467:18;8219:153:13;2348:203:87;4528:157:74;;;;;;;;;;-1:-1:-1;4528:157:74;;;;;:::i;:::-;;:::i;5870:255::-;;;;;;;;;;-1:-1:-1;5870:255:74;;;;;:::i;:::-;;:::i;3911:214:31:-;;;;;;:::i;:::-;;:::i;:::-;;3466:126;;;;;;;;;;;;;:::i;10250:392:13:-;;;;;;;;;;-1:-1:-1;10250:392:13;;;;;:::i;:::-;;:::i;4053:171:12:-;;;;;;;;;;-1:-1:-1;4053:171:12;;;;;:::i;:::-;;:::i;10677:380:13:-;;;;;;;;;;-1:-1:-1;10677:380:13;;;;;:::i;:::-;;:::i;2972:148:12:-;;;;;;;;;;;;;:::i;7852:87:74:-;;;;;;;;;;-1:-1:-1;7895:15:74;7925:9;-1:-1:-1;;;;;7925:9:74;7852:87;;4419:178:12;;;;;;;;;;-1:-1:-1;4419:178:12;;;;;:::i;:::-;;:::i;1732:58:31:-;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;1732:58:31;;;;;9709:143:13;;;;;;;;;;-1:-1:-1;9709:143:13;;;;;:::i;:::-;;:::i;11092:413::-;;;;;;;;;;-1:-1:-1;11092:413:13;;;;;:::i;:::-;;:::i;11540:405::-;;;;;;;;;;-1:-1:-1;11540:405:13;;;;;:::i;:::-;;:::i;4735:225:74:-;;;;;;;;;;-1:-1:-1;4735:225:74;;;;;:::i;:::-;;:::i;8567:148:13:-;;;;;;;;;;-1:-1:-1;8567:148:13;;;;;:::i;:::-;;:::i;4033:160:74:-;;;;;;;;;;-1:-1:-1;4033:160:74;;;;;:::i;:::-;;:::i;6638:153::-;;;;;;;;;;-1:-1:-1;6638:153:74;;;;;:::i;:::-;;:::i;4245:230::-;;;;;;;;;;-1:-1:-1;4245:230:74;;;;;:::i;:::-;;:::i;7520:251::-;;;;;;;;;;-1:-1:-1;7520:251:74;;;;;:::i;:::-;;:::i;4630:195:12:-;;;;;;;;;;-1:-1:-1;4630:195:12;;;;;:::i;:::-;;:::i;2990:280:74:-;;;;;;;;;;-1:-1:-1;2990:280:74;;;;;:::i;:::-;;:::i;5014:118::-;5075:14;5104:9;;:23;;-1:-1:-1;;;;;5104:9:74;:21;:23::i;:::-;5097:30;;5014:118;:::o;2715:144:12:-;2845:7;2838:14;;2760:13;;-1:-1:-1;;;;;;;;;;;2082:20:12;2838:14;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2715:144;:::o;8750:148:13:-;8820:7;8846:45;8863:6;8871:19;8846:16;:45::i;:::-;8839:52;8750:148;-1:-1:-1;;8750:148:13:o;5132:186:12:-;5205:4;987:10:14;5259:31:12;987:10:14;5275:7:12;5284:5;5259:8;:31::i;:::-;-1:-1:-1;5307:4:12;;5132:186;-1:-1:-1;;;5132:186:12:o;9887:147:13:-;9957:7;9983:44;10000:6;10008:18;9983:16;:44::i;5910:244:12:-;5997:4;987:10:14;6053:37:12;6069:4;987:10:14;6084:5:12;6053:15;:37::i;:::-;6100:26;6110:4;6116:2;6120:5;6100:9;:26::i;:::-;6143:4;6136:11;;;5910:244;;;;;;:::o;7963:221:13:-;8055:5;;5498:22;8072:47;-1:-1:-1;14580:5:13;8136:21;;:41;;;-1:-1:-1;;;8136:21:13;;;;:41;:::i;:::-;8129:48;;;7963:221;:::o;8219:153::-;5498:22;8356:8;-1:-1:-1;;;;;8356:8:13;;8219:153::o;4528:157:74:-;4601:7;4632:9;;4623:57;;4632:22;;-1:-1:-1;;;;;4632:9:74;:20;:22::i;:::-;-1:-1:-1;;4623:8:74;:57::i;4656:23::-;4623:8;:57::i;5870:255::-;5970:9;;:23;;;-1:-1:-1;;;5970:23:74;;;;5938:12;;-1:-1:-1;;;;;5970:9:74;;:21;;:23;;;;;;;;;;;;;;:9;:23;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;5962:4;:31;5958:72;;6002:28;;-1:-1:-1;;;6002:28:74;;;;;;;;;;;5958:72;6106:14;;6095:4;;;;6106:14;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;5870:255;;;:::o;3911:214:31:-;2568:13;:11;:13::i;:::-;4072:46:::1;4094:17;4113:4;4072:21;:46::i;:::-;3911:214:::0;;:::o;3466:126::-;3527:7;2839:20;:18;:20::i;:::-;-1:-1:-1;;;;;;;;;;;;3466:126:31;:::o;10250:392:13:-;10325:7;10344:17;10364:20;10375:8;10364:10;:20::i;:::-;10344:40;;10407:9;10398:6;:18;10394:110;;;10465:8;10475:6;10483:9;10439:54;;-1:-1:-1;;;10439:54:13;;;;;;;;;;:::i;:::-;;;;;;;;10394:110;10514:14;10531:22;10546:6;10531:14;:22::i;:::-;10514:39;-1:-1:-1;10563:48:13;987:10:14;10586:8:13;10596:6;10604;10563:8;:48::i;:::-;10629:6;10250:392;-1:-1:-1;;;;10250:392:13:o;4053:171:12:-;-1:-1:-1;;;;;4197:20:12;4118:7;4197:20;;;-1:-1:-1;;;;;;;;;;;4197:20:12;;;;;;;4053:171::o;10677:380:13:-;10749:7;10768:17;10788;10796:8;10788:7;:17::i;:::-;10768:37;;10828:9;10819:6;:18;10815:107;;;10883:8;10893:6;10901:9;10860:51;;-1:-1:-1;;;10860:51:13;;;;;;;;;;:::i;10815:107::-;10932:14;10949:19;10961:6;10949:11;:19::i;:::-;10932:36;-1:-1:-1;10978:48:13;987:10:14;11001:8:13;11011:6;11019;10978:8;:48::i;2972:148:12:-;3104:9;3097:16;;3019:13;;-1:-1:-1;;;;;;;;;;;2082:20:12;3097:16;;;:::i;4419:178::-;4488:4;987:10:14;4542:27:12;987:10:14;4559:2:12;4563:5;4542:9;:27::i;9709:143:13:-;9775:7;9801:44;9818:6;9826:18;9801:16;:44::i;11092:413::-;11183:7;11202:17;11222:18;11234:5;11222:11;:18::i;:::-;11202:38;;11263:9;11254:6;:18;11250:108;;;11322:5;11329:6;11337:9;11295:52;;-1:-1:-1;;;11295:52:13;;;;;;;;;;:::i;11250:108::-;11368:14;11385:23;11401:6;11385:15;:23::i;:::-;11368:40;-1:-1:-1;11418:56:13;987:10:14;11442:8:13;11452:5;11459:6;11467;11418:9;:56::i;:::-;11492:6;11092:413;-1:-1:-1;;;;;11092:413:13:o;11540:405::-;11629:7;11648:17;11668:16;11678:5;11668:9;:16::i;:::-;11648:36;;11707:9;11698:6;:18;11694:106;;;11764:5;11771:6;11779:9;11739:50;;-1:-1:-1;;;11739:50:13;;;;;;;;;;:::i;11694:106::-;11810:14;11827:21;11841:6;11827:13;:21::i;:::-;11810:38;-1:-1:-1;11858:56:13;987:10:14;11882:8:13;11892:5;11899:6;11907;11858:9;:56::i;4735:225:74:-;4805:7;4840:9;;4805:7;;4840:22;;-1:-1:-1;;;;;4840:9:74;:20;:22::i;:::-;4820:42;;4875:80;4884:48;4901:9;4912:19;4884:16;:48::i;8567:148:13:-;8637:7;8663:45;8680:6;8688:19;8663:16;:45::i;4033:160:74:-;4107:7;4138:9;;4129:59;;4138:23;;-1:-1:-1;;;;;4138:9:74;:21;:23::i;:::-;4163:24;4181:5;4163:17;:24::i;6638:153::-;6748:9;;6721:12;;6748:38;;-1:-1:-1;;;;;6748:9:74;6768:6;6776:9;6748:19;:38::i;4245:230::-;4317:7;4352:9;;4317:7;;4352:23;;-1:-1:-1;;;;;4352:9:74;:21;:23::i;:::-;4332:43;;4388:82;4397:48;4414:9;4425:19;4397:16;:48::i;:::-;4447:22;4463:5;4447:15;:22::i;7520:251::-;7664:9;;7628:109;;-1:-1:-1;;;;;7664:9:74;7675:11;7688:16;7721:7;:5;:7::i;:::-;7731:5;7628:35;:109::i;:::-;-1:-1:-1;;7743:9:74;:23;;-1:-1:-1;;;;;;7743:23:74;-1:-1:-1;;;;;7743:23:74;;;;;;;;;;7520:251::o;4630:195:12:-;-1:-1:-1;;;;;4789:20:12;;;4710:7;4789:20;;;:13;:20;;;;;;;;:29;;;;;;;;;;;;;4630:195::o;2990:280:74:-;4158:30:30;4191:26;:24;:26::i;:::-;4302:15;;4158:59;;-1:-1:-1;4302:15:30;-1:-1:-1;;;4302:15:30;;;4301:16;;4348:14;;4279:19;4724:16;;:34;;;;;4744:14;4724:34;4704:54;;4768:17;4788:11;:16;;4803:1;4788:16;:50;;;;-1:-1:-1;4816:4:30;4808:25;:30;4788:50;4768:70;;4854:12;4853:13;:30;;;;;4871:12;4870:13;4853:30;4849:91;;;4906:23;;-1:-1:-1;;;4906:23:30;;;;;;;;;;;4849:91;4949:18;;-1:-1:-1;;4949:18:30;4966:1;4949:18;;;4977:67;;;;5011:22;;-1:-1:-1;;;;5011:22:30;-1:-1:-1;;;5011:22:30;;;4977:67;3184:81:74::1;3213:5;3220:7;3229:6;3237:9;3248:16;3184:28;:81::i;:::-;5068:14:30::0;5064:101;;;5098:23;;-1:-1:-1;;;;5098:23:30;;;5140:14;;-1:-1:-1;9965:50:87;;5140:14:30;;9953:2:87;9938:18;5140:14:30;;;;;;;5064:101;4092:1079;;;;;2990:280:74;;;;;:::o;7489:132:53:-;7581:35;;-1:-1:-1;;;7581:35:53;;7610:4;7581:35;;;2494:51:87;7559:7:53;;-1:-1:-1;;;;;7581:20:53;;;;;2467:18:87;;7581:35:53;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;12406:213:13:-;12503:7;12529:83;12543:13;:11;:13::i;:::-;:17;;12559:1;12543:17;:::i;:::-;12578:23;14580:5;12578:2;:23;:::i;:::-;3999:14:12;;12562:39:13;;;;:::i;:::-;12529:6;;:83;12603:8;12529:13;:83::i;9923:128:12:-;10007:37;10016:5;10023:7;10032:5;10039:4;10007:8;:37::i;:::-;9923:128;;;:::o;12069:213:13:-;12166:7;12192:83;12222:23;12166:7;12222:2;:23;:::i;:::-;3999:14:12;;12206:39:13;;;;:::i;:::-;12247:13;:11;:13::i;:::-;:17;;12263:1;12247:17;:::i;11669:476:12:-;11768:24;11795:25;11805:5;11812:7;11795:9;:25::i;:::-;11768:52;;-1:-1:-1;;11834:16:12;:36;11830:309;;;11909:5;11890:16;:24;11886:130;;;11968:7;11977:16;11995:5;11941:60;;-1:-1:-1;;;11941:60:12;;;;;;;;;;:::i;11886:130::-;12057:57;12066:5;12073:7;12101:5;12082:16;:24;12108:5;12057:8;:57::i;:::-;11758:387;11669:476;;;:::o;6527:300::-;-1:-1:-1;;;;;6610:18:12;;6606:86;;6651:30;;-1:-1:-1;;;6651:30:12;;6678:1;6651:30;;;2494:51:87;2467:18;;6651:30:12;2348:203:87;6606:86:12;-1:-1:-1;;;;;6705:16:12;;6701:86;;6744:32;;-1:-1:-1;;;6744:32:12;;6773:1;6744:32;;;2494:51:87;2467:18;;6744:32:12;2348:203:87;6701:86:12;6796:24;6804:4;6810:2;6814:5;6796:7;:24::i;7771:130:53:-;7862:34;;-1:-1:-1;;;7862:34:53;;7890:4;7862:34;;;2494:51:87;7840:7:53;;-1:-1:-1;;;;;7862:19:53;;;;;2467:18:87;;7862:34:53;2348:203:87;5633:111:47;5691:7;5328:5;;;5725;;;5327:36;5322:42;;5717:20;5087:294;4328:312:31;4408:4;-1:-1:-1;;;;;4417:6:31;4400:23;;;:120;;;4514:6;-1:-1:-1;;;;;4478:42:31;:32;-1:-1:-1;;;;;;;;;;;1519:53:27;-1:-1:-1;;;;;1519:53:27;;1441:138;4478:32:31;-1:-1:-1;;;;;4478:42:31;;;4400:120;4383:251;;;4594:29;;-1:-1:-1;;;4594:29:31;;;;;;;;;;;4383:251;4328:312::o;7943:74:74:-;;:::o;5782:538:31:-;5899:17;-1:-1:-1;;;;;5881:50:31;;:52;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;5881:52:31;;;;;;;;-1:-1:-1;;5881:52:31;;;;;;;;;;;;:::i;:::-;;;5877:437;;6243:60;;-1:-1:-1;;;6243:60:31;;-1:-1:-1;;;;;2512:32:87;;6243:60:31;;;2494:51:87;2467:18;;6243:60:31;2348:203:87;5877:437:31;-1:-1:-1;;;;;;;;;;;5975:40:31;;5971:120;;6042:34;;-1:-1:-1;;;6042:34:31;;;;;160:25:87;;;133:18;;6042:34:31;14:177:87;5971:120:31;6104:54;6134:17;6153:4;6104:29;:54::i;4757:213::-;4831:4;-1:-1:-1;;;;;4840:6:31;4823:23;;4819:145;;4924:29;;-1:-1:-1;;;4924:29:31;;;;;;;;;;;5398:278:74;5583:48;5598:6;5606:8;5616:6;5624;5583:14;:48::i;:::-;5665:5;5637:9;;:34;;-1:-1:-1;;;;;5637:9:74;;;;5657:6;;5637:19;:34::i;:::-;;5398:278;;;;:::o;5136:258::-;5321:5;5292:9;;:35;;-1:-1:-1;;;;;5292:9:74;;;;5313:6;;5292:20;:35::i;:::-;;5333:56;5349:6;5357:8;5367:5;5374:6;5382;5333:15;:56::i;8054:132:53:-;8146:35;;-1:-1:-1;;;8146:35:53;;8175:4;8146:35;;;2494:51:87;8124:7:53;;-1:-1:-1;;;;;8146:20:53;;;;;2467:18:87;;8146:35:53;2348:203:87;9216:129:13;9281:7;9307:31;9321:16;9331:5;9321:9;:16::i;4743:249:53:-;4844:12;4877:110;4967:6;4975:9;4916:70;;;;;;;;;:::i;:::-;;;;-1:-1:-1;;4916:70:53;;;;;;;;;;;;;;-1:-1:-1;;;;;4916:70:53;-1:-1:-1;;;4916:70:53;;;-1:-1:-1;;;;;4877:38:53;;;;:110::i;9380:112:13:-;9443:7;9469:16;9479:5;9469:9;:16::i;5914:843:53:-;6103:39;6114:11;6135:5;6103:10;:39::i;:::-;6312:38;;-1:-1:-1;;;6312:38:53;;6344:4;6312:38;;;2494:51:87;6288:70:53;;6299:11;;-1:-1:-1;;;;;6312:23:53;;;;;2467:18:87;;6312:38:53;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;6352:5;6288:10;:70::i;:::-;;6364:32;6377:11;6390:5;6364:12;:32::i;:::-;6516:43;6526:11;6539:19;6516:9;:43::i;:::-;6662:30;;-1:-1:-1;;;6662:30:53;;6686:4;6662:30;;;2494:51:87;6639:61:53;;6649:11;;-1:-1:-1;;;;;6662:15:53;;;;;2467:18:87;;6662:30:53;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;6694:5;6639:9;:61::i;:::-;-1:-1:-1;6711:41:53;;;-1:-1:-1;;;;;12320:32:87;;;12302:51;;12389:32;;12384:2;12369:18;;12362:60;6711:41:53;;12275:18:87;6711:41:53;;;;;;;5914:843;;;;;:::o;9071:205:30:-;9129:30;;3147:66;9186:27;8819:122;3325:345:74;6929:20:30;:18;:20::i;:::-;3536:28:74::1;3549:5;3556:7;3536:12;:28::i;:::-;3570:22;3585:6;3570:14;:22::i;:::-;3598:67;3637:9;3648:16;3598:38;:67::i;11070:238:47:-:0;11171:7;11225:76;11241:26;11258:8;11241:16;:26::i;:::-;:59;;;;;11299:1;11284:11;11271:25;;;;;:::i;:::-;11281:1;11278;11271:25;:29;11241:59;34914:9:48;34907:17;;34795:145;11225:76:47;11197:25;11204:1;11207;11210:11;11197:6;:25::i;:::-;:104;;;;:::i;10900:487:12:-;-1:-1:-1;;;;;;;;;;;;;;;;11065:19:12;;11061:89;;11107:32;;-1:-1:-1;;;11107:32:12;;11136:1;11107:32;;;2494:51:87;2467:18;;11107:32:12;2348:203:87;11061:89:12;-1:-1:-1;;;;;11163:21:12;;11159:90;;11207:31;;-1:-1:-1;;;11207:31:12;;11235:1;11207:31;;;2494:51:87;2467:18;;11207:31:12;2348:203:87;11159:90:12;-1:-1:-1;;;;;11258:20:12;;;;;;;:13;;;:20;;;;;;;;:29;;;;;;;;;:37;;;11305:76;;;;11355:7;-1:-1:-1;;;;;11339:31:12;11348:5;-1:-1:-1;;;;;11339:31:12;;11364:5;11339:31;;;;160:25:87;;148:2;133:18;;14:177;11339:31:12;;;;;;;;10998:389;10900:487;;;;:::o;7142:1170::-;-1:-1:-1;;;;;;;;;;;;;;;;7284:18:12;;7280:546;;7438:5;7420:1;:14;;;:23;;;;;;;:::i;:::-;;;;-1:-1:-1;7280:546:12;;-1:-1:-1;7280:546:12;;-1:-1:-1;;;;;7496:17:12;;7474:19;7496:17;;;;;;;;;;;7531:19;;;7527:115;;;7602:4;7608:11;7621:5;7577:50;;-1:-1:-1;;;7577:50:12;;;;;;;;;;:::i;7527:115::-;-1:-1:-1;;;;;7762:17:12;;:11;:17;;;;;;;;;;7782:19;;;;7762:39;;7280:546;-1:-1:-1;;;;;7840:16:12;;7836:429;;8003:14;;;:23;;;;;;;7836:429;;;-1:-1:-1;;;;;8216:15:12;;:11;:15;;;;;;;;;;:24;;;;;;7836:429;8295:2;-1:-1:-1;;;;;8280:25:12;8289:4;-1:-1:-1;;;;;8280:25:12;;8299:5;8280:25;;;;160::87;;148:2;133:18;;14:177;8280:25:12;;;;;;;;7217:1095;7142:1170;;;:::o;2264:344:27:-;2355:37;2374:17;2355:18;:37::i;:::-;2407:36;;-1:-1:-1;;;;;2407:36:27;;;;;;;;2458:11;;:15;2454:148;;2489:53;2518:17;2537:4;2489:28;:53::i;2454:148::-;2573:18;:16;:18::i;12683:841:13:-;13353:74;13387:7;:5;:7::i;:::-;13397:6;13413:4;13420:6;13353:26;:74::i;:::-;13437:23;13443:8;13453:6;13437:5;:23::i;:::-;13492:8;-1:-1:-1;;;;;13476:41:13;13484:6;-1:-1:-1;;;;;13476:41:13;;13502:6;13510;13476:41;;;;;;12739:25:87;;;12795:2;12780:18;;12773:34;12727:2;12712:18;;12565:248;3816:540:53;3913:4;3929:11;3925:427;;;4008:12;4022:23;4057:8;-1:-1:-1;;;;;4049:30:53;4129:6;4089:47;;;;;;160:25:87;;148:2;133:18;;14:177;4089:47:53;;;;-1:-1:-1;;4089:47:53;;;;;;;;;;;;;;-1:-1:-1;;;;;4089:47:53;-1:-1:-1;;;4089:47:53;;;4049:95;;;4089:47;4049:95;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;4007:137;;;;4157:7;4152:44;;4171:25;4185:10;4171:25;;;;;;:::i;:::-;;;;;;;;4152:44;-1:-1:-1;4211:7:53;-1:-1:-1;4204:14:53;;3925:427;4239:87;4318:6;4278:47;;;;;;160:25:87;;148:2;133:18;;14:177;4278:47:53;;;;-1:-1:-1;;4278:47:53;;;;;;;;;;;;;;-1:-1:-1;;;;;4278:47:53;-1:-1:-1;;;4278:47:53;;;-1:-1:-1;;;;;4239:38:53;;;;:87::i;:::-;;4341:4;4334:11;;;;2735:544;2833:4;2849:11;2845:430;;;2928:12;2942:23;2977:8;-1:-1:-1;;;;;2969:30:53;3050:6;3009:48;;;;;;160:25:87;;148:2;133:18;;14:177;3009:48:53;;;;-1:-1:-1;;3009:48:53;;;;;;;;;;;;;;-1:-1:-1;;;;;3009:48:53;-1:-1:-1;;;3009:48:53;;;2969:96;;;3009:48;2969:96;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2927:138;;;;3078:7;3073:45;;3092:26;3107:10;3092:26;;;;;;:::i;2845:430::-;3161:88;3241:6;3200:48;;;;;;160:25:87;;148:2;133:18;;14:177;3200:48:53;;;;-1:-1:-1;;3200:48:53;;;;;;;;;;;;;;-1:-1:-1;;;;;3200:48:53;-1:-1:-1;;;3200:48:53;;;-1:-1:-1;;;;;3161:38:53;;;;:88::i;13591:925:13:-;13778:5;-1:-1:-1;;;;;13768:15:13;:6;-1:-1:-1;;;;;13768:15:13;;13764:84;;13799:38;13815:5;13822:6;13830;13799:15;:38::i;:::-;14357:20;14363:5;14370:6;14357:5;:20::i;:::-;14387:57;14417:7;:5;:7::i;:::-;14427:8;14437:6;14387:22;:57::i;:::-;14487:5;-1:-1:-1;;;;;14460:49:13;14477:8;-1:-1:-1;;;;;14460:49:13;14469:6;-1:-1:-1;;;;;14460:49:13;;14494:6;14502;14460:49;;;;;;12739:25:87;;;12795:2;12780:18;;12773:34;12727:2;12712:18;;12565:248;14460:49:13;;;;;;;;13591:925;;;;;:::o;4691:549:37:-;4774:12;4798;4813:47;4847:6;4855:4;4813:33;:47::i;:::-;4798:62;;4874:7;:72;;;;-1:-1:-1;4918:1:37;4583:16:40;4886:33:37;:59;;;;4944:1;4923:6;-1:-1:-1;;;;;4923:18:37;;:22;4886:59;4870:364;;;4969:25;:23;:25::i;:::-;4962:32;;;;;4870:364;5015:7;5011:223;;;5045:24;;-1:-1:-1;;;5045:24:37;;-1:-1:-1;;;;;2512:32:87;;5045:24:37;;;2494:51:87;2467:18;;5045:24:37;2348:203:87;5011:223:37;4583:16:40;5090:33:37;5086:148;;5139:27;:25;:27::i;:::-;5086:148;;;5204:19;;-1:-1:-1;;;5204:19:37;;;;;;;;;;;5086:148;4788:452;4691:549;;;;:::o;5181:159:53:-;5266:29;;-1:-1:-1;;;5266:29:53;;5289:4;5266:29;;;2494:51:87;-1:-1:-1;;;;;5266:38:53;;;;:14;;;;;;2467:18:87;;5266:29:53;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;-1:-1:-1;;;;;5266:38:53;;5262:73;;5313:22;;-1:-1:-1;;;5313:22:53;;;;;;;;;;;1729:465;1808:5;1804:386;;;1962:48;;2005:4;1962:48;;;1594:41:87;1881:12:53;;;;-1:-1:-1;;;;;1922:30:53;;;1567:18:87;;1962:48:53;;;-1:-1:-1;;1962:48:53;;;;;;;;;;;;;;-1:-1:-1;;;;;1962:48:53;-1:-1:-1;;;1962:48:53;;;1922:96;;;1962:48;1922:96;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1880:138;;;;2031:7;2026:47;;2045:28;2062:10;2045:28;;;;;;:::i;:::-;;;;;;;;1815:265;;3911:214:31;;:::o;1804:386:53:-;2133:49;;2176:5;2133:49;;;1594:41:87;2094:89:53;;1567:18:87;;2133:49:53;;;-1:-1:-1;;2133:49:53;;;;;;;;;;;;;;-1:-1:-1;;;;;2133:49:53;-1:-1:-1;;;2133:49:53;;;-1:-1:-1;;;;;2094:38:53;;;;:89::i;1120:193::-;1211:97;1290:16;1250:57;;;;;;;;:::i;:::-;;;;-1:-1:-1;;1250:57:53;;;;;;;;;;;;;;-1:-1:-1;;;;;1250:57:53;-1:-1:-1;;;1250:57:53;;;-1:-1:-1;;;;;1211:38:53;;;;:97::i;7082:141:30:-;7149:17;:15;:17::i;:::-;7144:73;;7189:17;;-1:-1:-1;;;7189:17:30;;;;;;;;;;;2281:147:12;6929:20:30;:18;:20::i;:::-;2383:38:12::1;2406:5;2413:7;2383:22;:38::i;6384:114:13:-:0;6929:20:30;:18;:20::i;:::-;6459:32:13::1;6484:6;6459:24;:32::i;3725:254:74:-:0;6929:20:30;:18;:20::i;:::-;3875:9:74::1;:21:::0;;-1:-1:-1;;;;;;3875:21:74::1;-1:-1:-1::0;;;;;3875:21:74;::::1;;::::0;;3902:29:::1;3923:7;:5;:7::i;:::-;-1:-1:-1::0;;;;;3902:20:74;::::1;::::0;::::1;:29::i;:::-;3937:9;::::0;:37:::1;::::0;-1:-1:-1;;;;;3937:9:74::1;3957:16:::0;3937:19:::1;:37::i;32036:122:47:-:0;32104:4;32145:1;32133:8;32127:15;;;;;;;;:::i;:::-;:19;;;;:::i;:::-;:24;;32150:1;32127:24;32120:31;;32036:122;;;:::o;7258:3683::-;7340:14;7391:12;7405:11;7420:12;7427:1;7430;7420:6;:12::i;:::-;7390:42;;;;7514:4;7522:1;7514:9;7510:365;;7849:11;7843:3;:17;;;;;:::i;:::-;;7836:24;;;;;;7510:365;8000:4;7985:11;:19;7981:142;;8024:84;5328:5;8044:16;;5327:36;940:4:43;5322:42:47;8024:11;:84::i;:::-;8375:17;8526:11;8523:1;8520;8513:25;8918:12;8948:15;;;8933:31;;9083:22;;;;;9816:1;9797;:15;;9796:21;;10049;;;10045:25;;10034:36;10119:21;;;10115:25;;10104:36;10191:21;;;10187:25;;10176:36;10262:21;;;10258:25;;10247:36;10335:21;;;10331:25;;10320:36;10409:21;;;10405:25;;;10394:36;9325:12;;;;9321:23;;;9346:1;9317:31;8638:18;;;8628:29;;;9432:11;;;;8681:19;;;;9176:14;;;;9425:18;;;;10884:13;;-1:-1:-1;;7258:3683:47;;;;;:::o;1671:281:27:-;1748:17;-1:-1:-1;;;;;1748:29:27;;1781:1;1748:34;1744:119;;1805:47;;-1:-1:-1;;;1805:47:27;;-1:-1:-1;;;;;2512:32:87;;1805:47:27;;;2494:51:87;2467:18;;1805:47:27;2348:203:87;1744:119:27;-1:-1:-1;;;;;;;;;;;1872:73:27;;-1:-1:-1;;;;;;1872:73:27;-1:-1:-1;;;;;1872:73:27;;;;;;;;;;1671:281::o;6113:122::-;6163:9;:13;6159:70;;6199:19;;-1:-1:-1;;;6199:19:27;;;;;;;;;;;1662:232:36;1767:47;1785:5;1792:4;1798:2;1802:5;1809:4;1767:17;:47::i;:::-;1762:126;;1837:40;;-1:-1:-1;;;1837:40:36;;-1:-1:-1;;;;;2512:32:87;;1837:40:36;;;2494:51:87;2467:18;;1837:40:36;2348:203:87;8655:208:12;-1:-1:-1;;;;;8725:21:12;;8721:91;;8769:32;;-1:-1:-1;;;8769:32:12;;8798:1;8769:32;;;2494:51:87;2467:18;;8769:32:12;2348:203:87;8721:91:12;8821:35;8837:1;8841:7;8850:5;8821:7;:35::i;9181:206::-;-1:-1:-1;;;;;9251:21:12;;9247:89;;9295:30;;-1:-1:-1;;;9295:30:12;;9322:1;9295:30;;;2494:51:87;2467:18;;9295:30:12;2348:203:87;9247:89:12;9345:35;9353:7;9370:1;9374:5;9345:7;:35::i;1219:204:36:-;1306:37;1320:5;1327:2;1331:5;1338:4;1306:13;:37::i;:::-;1301:116;;1366:40;;-1:-1:-1;;;1366:40:36;;-1:-1:-1;;;;;2512:32:87;;1366:40:36;;;2494:51:87;2467:18;;1366:40:36;2348:203:87;3383:242:40;3466:12;3604:4;3598;3591;3585:11;3578:4;3572;3568:15;3560:6;3553:5;3540:69;3529:80;3383:242;-1:-1:-1;;;3383:242:40:o;4698:334::-;4829:4;4823:11;4862:16;4847:32;;4932:16;4926:4;4919;4907:17;;4892:57;4997:16;4991:4;4987:27;4979:6;4975:40;4969:4;4962:54;4698:334;:::o;5099:223::-;5203:4;5197:11;5247:16;5241:4;5236:3;5221:43;5289:16;5284:3;5277:29;8485:120:30;8535:4;8558:26;:24;:26::i;:::-;:40;-1:-1:-1;;;8558:40:30;;;;;;-1:-1:-1;8485:120:30:o;2434:216:12:-;6929:20:30;:18;:20::i;:::-;-1:-1:-1;;;;;;;;;;;2599:7:12;:15:::1;2609:5:::0;2599:7;:15:::1;:::i;:::-;-1:-1:-1::0;2624:9:12::1;::::0;::::1;:19;2636:7:::0;2624:9;:19:::1;:::i;6504:304:13:-:0;6929:20:30;:18;:20::i;:::-;5498:22:13;6589:24:::1;::::0;6684:28:::1;6705:6:::0;6684:20:::1;:28::i;:::-;6646:66;;;;6746:7;:28;;6772:2;6746:28;;;6756:13;6746:28;6722:52:::0;;-1:-1:-1;;;;;;6784:17:13;-1:-1:-1;;;6722:52:13::1;::::0;;;::::1;::::0;;;::::1;-1:-1:-1::0;;;;;;6784:17:13;;-1:-1:-1;;;;;6784:17:13;;;::::1;::::0;;;::::1;::::0;;;-1:-1:-1;;6504:304:13:o;1027:550:47:-;1088:12;;-1:-1:-1;;1471:1:47;1468;1461:20;1501:9;;;;1549:11;;;1535:12;;;;1531:30;;;;;1027:550;-1:-1:-1;;1027:550:47:o;1776:194:43:-;1881:10;1875:4;1868:24;1918:4;1912;1905:18;1949:4;1943;1936:18;10165:1393:36;10460:4;10454:11;-1:-1:-1;;;10323:12:36;10478:22;;;-1:-1:-1;;;;;10526:26:36;;;10520:4;10513:40;10579:24;;10573:4;10566:38;10624:4;10617:19;;;10323:12;10700:4;10323:12;10688:4;10323:12;;10672:5;10665;10660:45;10649:56;;10917:1;10910:4;10904:11;10901:18;10892:7;10888:32;10878:606;;11049:6;11039:7;11032:15;11028:28;11025:165;;;11105:16;11099:4;11094:3;11079:43;11155:16;11150:3;11143:29;11025:165;11466:1;11458:5;11446:18;11443:25;11424:16;11417:24;11413:56;11404:7;11400:70;11389:81;;10878:606;11504:4;11497:17;-1:-1:-1;11540:1:36;11534:4;11527:15;10165:1393;;-1:-1:-1;;;;;10165:1393:36:o;8373:1244::-;8600:4;8594:11;-1:-1:-1;;;8467:12:36;8618:22;;;-1:-1:-1;;;;;8666:24:36;;8660:4;8653:38;8711:4;8704:19;;;8467:12;8787:4;8467:12;8775:4;8467:12;;8759:5;8752;8747:45;8736:56;;9004:1;8997:4;8991:11;8988:18;8979:7;8975:32;8965:606;;9136:6;9126:7;9119:15;9115:28;9112:165;;;9192:16;9186:4;9181:3;9166:43;9242:16;9237:3;9230:29;9112:165;9553:1;9545:5;9533:18;9530:25;9511:16;9504:24;9500:56;9491:7;9487:70;9476:81;;8965:606;9591:4;9584:17;-1:-1:-1;8373:1244:36;;-1:-1:-1;;;;8373:1244:36:o;6951:607:13:-;7018:7;7027:19;7058:18;7079:29;1025:4:41;1019:11;;895:151;7079:29:13;7242:43;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;7242:43:13;-1:-1:-1;;;7242:43:13;;;7058:50;;-1:-1:-1;7119:12:13;;;;7163:132;;7221:6;;7163:36;:132::i;:::-;7118:177;;;;;7305:32;7333:3;1311:4:41;1304:17;1198:139;7305:32:13;7368:7;:46;;;;-1:-1:-1;7412:2:13;4583:16:40;7379:35:13;;7368:46;:94;;;;-1:-1:-1;7447:15:13;7418:44;;;7368:94;7367:184;;7542:5;7549:1;7367:184;;;7483:4;7503:16;7367:184;7348:203;;;;;;;6951:607;;;:::o;2893:374:40:-;3006:12;3020:15;3037;3176:4;3170;3163;3157:11;3150:4;3144;3140:15;3132:6;3125:5;3114:67;3103:78;;3211:4;3205:11;3194:22;;3246:4;3240:11;3229:22;;2893:374;;;;;:::o;196:289:87:-;238:3;276:5;270:12;303:6;298:3;291:19;359:6;352:4;345:5;341:16;334:4;329:3;325:14;319:47;411:1;404:4;395:6;390:3;386:16;382:27;375:38;474:4;467:2;463:7;458:2;450:6;446:15;442:29;437:3;433:39;429:50;422:57;;;196:289;;;;:::o;490:220::-;639:2;628:9;621:21;602:4;659:45;700:2;689:9;685:18;677:6;659:45;:::i;715:226::-;774:6;827:2;815:9;806:7;802:23;798:32;795:52;;;843:1;840;833:12;795:52;-1:-1:-1;888:23:87;;715:226;-1:-1:-1;715:226:87:o;946:131::-;-1:-1:-1;;;;;1021:31:87;;1011:42;;1001:70;;1067:1;1064;1057:12;1082:367;1150:6;1158;1211:2;1199:9;1190:7;1186:23;1182:32;1179:52;;;1227:1;1224;1217:12;1179:52;1266:9;1253:23;1285:31;1310:5;1285:31;:::i;:::-;1335:5;1413:2;1398:18;;;;1385:32;;-1:-1:-1;;;1082:367:87:o;1646:508::-;1723:6;1731;1739;1792:2;1780:9;1771:7;1767:23;1763:32;1760:52;;;1808:1;1805;1798:12;1760:52;1847:9;1834:23;1866:31;1891:5;1866:31;:::i;:::-;1916:5;-1:-1:-1;1973:2:87;1958:18;;1945:32;1986:33;1945:32;1986:33;:::i;:::-;1646:508;;2038:7;;-1:-1:-1;;;2118:2:87;2103:18;;;;2090:32;;1646:508::o;2556:247::-;2615:6;2668:2;2656:9;2647:7;2643:23;2639:32;2636:52;;;2684:1;2681;2674:12;2636:52;2723:9;2710:23;2742:31;2767:5;2742:31;:::i;3216:127::-;3277:10;3272:3;3268:20;3265:1;3258:31;3308:4;3305:1;3298:15;3332:4;3329:1;3322:15;3348:888;3390:5;3443:3;3436:4;3428:6;3424:17;3420:27;3410:55;;3461:1;3458;3451:12;3410:55;3501:6;3488:20;3540:4;3532:6;3528:17;3569:1;3591;3615:18;3607:6;3604:30;3601:56;;;3637:18;;:::i;:::-;-1:-1:-1;3792:2:87;3786:9;-1:-1:-1;;3705:2:87;3684:15;;3680:29;;3850:2;3838:15;3834:29;3822:42;;3915:22;;;3894:18;3879:34;;3876:62;3873:88;;;3941:18;;:::i;:::-;3977:2;3970:22;4027;;;4012:6;-1:-1:-1;4012:6:87;4064:16;;;4061:25;-1:-1:-1;4058:45:87;;;4099:1;4096;4089:12;4058:45;4149:6;4144:3;4137:4;4129:6;4125:17;4112:44;4204:1;4197:4;4188:6;4180;4176:19;4172:30;4165:41;4224:6;4215:15;;;;;;3348:888;;;;:::o;4241:455::-;4318:6;4326;4379:2;4367:9;4358:7;4354:23;4350:32;4347:52;;;4395:1;4392;4385:12;4347:52;4434:9;4421:23;4453:31;4478:5;4453:31;:::i;:::-;4503:5;-1:-1:-1;4559:2:87;4544:18;;4531:32;4586:18;4575:30;;4572:50;;;4618:1;4615;4608:12;4572:50;4641:49;4682:7;4673:6;4662:9;4658:22;4641:49;:::i;:::-;4631:59;;;4241:455;;;;;:::o;4883:367::-;4951:6;4959;5012:2;5000:9;4991:7;4987:23;4983:32;4980:52;;;5028:1;5025;5018:12;4980:52;5073:23;;;-1:-1:-1;5172:2:87;5157:18;;5144:32;5185:33;5144:32;5185:33;:::i;:::-;5237:7;5227:17;;;4883:367;;;;;:::o;5488:508::-;5565:6;5573;5581;5634:2;5622:9;5613:7;5609:23;5605:32;5602:52;;;5650:1;5647;5640:12;5602:52;5695:23;;;-1:-1:-1;5794:2:87;5779:18;;5766:32;5807:33;5766:32;5807:33;:::i;:::-;5859:7;-1:-1:-1;5918:2:87;5903:18;;5890:32;5931:33;5890:32;5931:33;:::i;:::-;5983:7;5973:17;;;5488:508;;;;;:::o;6001:477::-;6076:6;6084;6137:2;6125:9;6116:7;6112:23;6108:32;6105:52;;;6153:1;6150;6143:12;6105:52;6192:9;6179:23;6242:4;6235:5;6231:16;6224:5;6221:27;6211:55;;6262:1;6259;6252:12;6483:649;6591:6;6599;6607;6660:2;6648:9;6639:7;6635:23;6631:32;6628:52;;;6676:1;6673;6666:12;6628:52;6715:9;6702:23;6734:31;6759:5;6734:31;:::i;:::-;6784:5;-1:-1:-1;6840:2:87;6825:18;;6812:32;6867:18;6856:30;;6853:50;;;6899:1;6896;6889:12;6853:50;6922:49;6963:7;6954:6;6943:9;6939:22;6922:49;:::i;:::-;6912:59;;;7023:2;7012:9;7008:18;6995:32;7072:7;7065:15;7058:23;7049:7;7046:36;7036:64;;7096:1;7093;7086:12;7137:388;7205:6;7213;7266:2;7254:9;7245:7;7241:23;7237:32;7234:52;;;7282:1;7279;7272:12;7234:52;7321:9;7308:23;7340:31;7365:5;7340:31;:::i;:::-;7390:5;-1:-1:-1;7447:2:87;7432:18;;7419:32;7460:33;7419:32;7460:33;:::i;7530:1068::-;7694:6;7702;7710;7718;7726;7779:3;7767:9;7758:7;7754:23;7750:33;7747:53;;;7796:1;7793;7786:12;7747:53;7836:9;7823:23;7869:18;7861:6;7858:30;7855:50;;;7901:1;7898;7891:12;7855:50;7924:49;7965:7;7956:6;7945:9;7941:22;7924:49;:::i;:::-;7914:59;;;8026:2;8015:9;8011:18;7998:32;8055:18;8045:8;8042:32;8039:52;;;8087:1;8084;8077:12;8039:52;8110:51;8153:7;8142:8;8131:9;8127:24;8110:51;:::i;:::-;8100:61;;;8211:2;8200:9;8196:18;8183:32;8224:31;8249:5;8224:31;:::i;:::-;8274:5;-1:-1:-1;8331:2:87;8316:18;;8303:32;8344:33;8303:32;8344:33;:::i;:::-;8396:7;-1:-1:-1;8456:3:87;8441:19;;8428:33;8486:18;8473:32;;8470:52;;;8518:1;8515;8508:12;8470:52;8541:51;8584:7;8573:8;8562:9;8558:24;8541:51;:::i;:::-;8531:61;;;7530:1068;;;;;;;;:::o;8603:380::-;8682:1;8678:12;;;;8725;;;8746:61;;8800:4;8792:6;8788:17;8778:27;;8746:61;8853:2;8845:6;8842:14;8822:18;8819:38;8816:161;;8899:10;8894:3;8890:20;8887:1;8880:31;8934:4;8931:1;8924:15;8962:4;8959:1;8952:15;8816:161;;8603:380;;;:::o;8988:127::-;9049:10;9044:3;9040:20;9037:1;9030:31;9080:4;9077:1;9070:15;9104:4;9101:1;9094:15;9120:148;9208:4;9187:12;;;9201;;;9183:31;;9226:13;;9223:39;;;9242:18;;:::i;9273:184::-;9343:6;9396:2;9384:9;9375:7;9371:23;9367:32;9364:52;;;9412:1;9409;9402:12;9364:52;-1:-1:-1;9435:16:87;;9273:184;-1:-1:-1;9273:184:87:o;9462:345::-;-1:-1:-1;;;;;9682:32:87;;;;9664:51;;9746:2;9731:18;;9724:34;;;;9789:2;9774:18;;9767:34;9652:2;9637:18;;9462:345::o;10215:125::-;10280:9;;;10301:10;;;10298:36;;;10314:18;;:::i;10345:375::-;10433:1;10451:5;10465:249;10486:1;10476:8;10473:15;10465:249;;;10536:4;10531:3;10527:14;10521:4;10518:24;10515:50;;;10545:18;;:::i;:::-;10595:1;10585:8;10581:16;10578:49;;;10609:16;;;;10578:49;10692:1;10688:16;;;;;10648:15;;10465:249;;;10345:375;;;;;;:::o;10725:902::-;10774:5;10804:8;10794:80;;-1:-1:-1;10845:1:87;10859:5;;10794:80;10893:4;10883:76;;-1:-1:-1;10930:1:87;10944:5;;10883:76;10975:4;10993:1;10988:59;;;;11061:1;11056:174;;;;10968:262;;10988:59;11018:1;11009:10;;11032:5;;;11056:174;11093:3;11083:8;11080:17;11077:43;;;11100:18;;:::i;:::-;-1:-1:-1;;11156:1:87;11142:16;;11215:5;;10968:262;;11314:2;11304:8;11301:16;11295:3;11289:4;11286:13;11282:36;11276:2;11266:8;11263:16;11258:2;11252:4;11249:12;11245:35;11242:77;11239:203;;;-1:-1:-1;11351:19:87;;;11427:5;;11239:203;11474:42;-1:-1:-1;;11499:8:87;11493:4;11474:42;:::i;:::-;11552:6;11548:1;11544:6;11540:19;11531:7;11528:32;11525:58;;;11563:18;;:::i;:::-;11601:20;;10725:902;-1:-1:-1;;;10725:902:87:o;11632:140::-;11690:5;11719:47;11760:4;11750:8;11746:19;11740:4;11719:47;:::i;11777:296::-;11960:4;11952:6;11948:17;11937:9;11930:36;12002:2;11997;11986:9;11982:18;11975:30;11911:4;12022:45;12063:2;12052:9;12048:18;12040:6;12022:45;:::i;12433:127::-;12494:10;12489:3;12485:20;12482:1;12475:31;12525:4;12522:1;12515:15;12549:4;12546:1;12539:15;12818:301;12947:3;12985:6;12979:13;13031:6;13024:4;13016:6;13012:17;13007:3;13001:37;13093:1;13057:16;;13082:13;;;-1:-1:-1;13057:16:87;12818:301;-1:-1:-1;12818:301:87:o;13124:251::-;13194:6;13247:2;13235:9;13226:7;13222:23;13218:32;13215:52;;;13263:1;13260;13253:12;13215:52;13295:9;13289:16;13314:31;13339:5;13314:31;:::i;13380:127::-;13441:10;13436:3;13432:20;13429:1;13422:31;13472:4;13469:1;13462:15;13496:4;13493:1;13486:15;13512:254;13542:1;13576:4;13573:1;13569:12;13600:3;13590:134;;13646:10;13641:3;13637:20;13634:1;13627:31;13681:4;13678:1;13671:15;13709:4;13706:1;13699:15;13590:134;13756:3;13749:4;13746:1;13742:12;13738:22;13733:27;;;13512:254;;;;:::o;13897:518::-;13999:2;13994:3;13991:11;13988:421;;;14035:5;14032:1;14025:16;14079:4;14076:1;14066:18;14149:2;14137:10;14133:19;14130:1;14126:27;14120:4;14116:38;14185:4;14173:10;14170:20;14167:47;;;-1:-1:-1;14208:4:87;14167:47;14263:2;14258:3;14254:12;14251:1;14247:20;14241:4;14237:31;14227:41;;14318:81;14336:2;14329:5;14326:13;14318:81;;;14395:1;14381:16;;14362:1;14351:13;14318:81;;14591:1299;14717:3;14711:10;14744:18;14736:6;14733:30;14730:56;;;14766:18;;:::i;:::-;14795:97;14885:6;14845:38;14877:4;14871:11;14845:38;:::i;:::-;14839:4;14795:97;:::i;:::-;14941:4;14972:2;14961:14;;14989:1;14984:649;;;;15677:1;15694:6;15691:89;;;-1:-1:-1;15746:19:87;;;15740:26;15691:89;-1:-1:-1;;14548:1:87;14544:11;;;14540:24;14536:29;14526:40;14572:1;14568:11;;;14523:57;15793:81;;14954:930;;14984:649;13844:1;13837:14;;;13881:4;13868:18;;-1:-1:-1;;15020:20:87;;;15138:222;15152:7;15149:1;15146:14;15138:222;;;15234:19;;;15228:26;15213:42;;15341:4;15326:20;;;;15294:1;15282:14;;;;15168:12;15138:222;;;15142:3;15388:6;15379:7;15376:19;15373:201;;;15449:19;;;15443:26;-1:-1:-1;;15532:1:87;15528:14;;;15544:3;15524:24;15520:37;15516:42;15501:58;15486:74;;15373:201;-1:-1:-1;;;;15620:1:87;15604:14;;;15600:22;15587:36;;-1:-1:-1;14591:1299:87:o"},"methodIdentifiers":{"UPGRADE_INTERFACE_VERSION()":"ad3cb1cc","allowance(address,address)":"dd62ed3e","approve(address,uint256)":"095ea7b3","asset()":"38d52e0f","balanceOf(address)":"70a08231","convertToAssets(uint256)":"07a2d13a","convertToShares(uint256)":"c6e6f592","decimals()":"313ce567","deposit(uint256,address)":"6e553f65","forwardToStrategy(uint8,bytes)":"d4f39110","getBytesSlot(bytes32)":"47e57533","initialize(string,string,address,address,bytes)":"effe0e1c","maxDeposit(address)":"402d267d","maxMint(address)":"c63d75b6","maxRedeem(address)":"d905777e","maxWithdraw(address)":"ce96cb77","mint(uint256,address)":"94bf804d","name()":"06fdde03","previewDeposit(uint256)":"ef8b30f7","previewMint(uint256)":"b3d7f6b9","previewRedeem(uint256)":"4cdad506","previewWithdraw(uint256)":"0a28a477","proxiableUUID()":"52d1902d","redeem(uint256,address,address)":"ba087652","setStrategy(address,bytes,bool)":"d9221bb5","strategy()":"a8c62e76","symbol()":"95d89b41","totalAssets()":"01e1d114","totalSupply()":"18160ddd","transfer(address,uint256)":"a9059cbb","transferFrom(address,address,uint256)":"23b872dd","upgradeToAndCall(address,bytes)":"4f1ef286","withdraw(uint256,address,address)":"b460af94"}},"metadata":"{\"compiler\":{\"version\":\"0.8.30+commit.73712a01\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"inputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"constructor\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"target\",\"type\":\"address\"}],\"name\":\"AddressEmptyCode\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"implementation\",\"type\":\"address\"}],\"name\":\"ERC1967InvalidImplementation\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"ERC1967NonPayable\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"spender\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"allowance\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"needed\",\"type\":\"uint256\"}],\"name\":\"ERC20InsufficientAllowance\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"sender\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"balance\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"needed\",\"type\":\"uint256\"}],\"name\":\"ERC20InsufficientBalance\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"approver\",\"type\":\"address\"}],\"name\":\"ERC20InvalidApprover\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"receiver\",\"type\":\"address\"}],\"name\":\"ERC20InvalidReceiver\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"sender\",\"type\":\"address\"}],\"name\":\"ERC20InvalidSender\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"spender\",\"type\":\"address\"}],\"name\":\"ERC20InvalidSpender\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"receiver\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"assets\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"max\",\"type\":\"uint256\"}],\"name\":\"ERC4626ExceededMaxDeposit\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"receiver\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"shares\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"max\",\"type\":\"uint256\"}],\"name\":\"ERC4626ExceededMaxMint\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"shares\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"max\",\"type\":\"uint256\"}],\"name\":\"ERC4626ExceededMaxRedeem\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"assets\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"max\",\"type\":\"uint256\"}],\"name\":\"ERC4626ExceededMaxWithdraw\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"FailedCall\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"InvalidInitialization\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"InvalidStrategyAsset\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"NotInitializing\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"OnlyStrategyStorageExposed\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"token\",\"type\":\"address\"}],\"name\":\"SafeERC20FailedOperation\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"UUPSUnauthorizedCallContext\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"slot\",\"type\":\"bytes32\"}],\"name\":\"UUPSUnsupportedProxiableUUID\",\"type\":\"error\"},{\"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\":\"sender\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"assets\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"shares\",\"type\":\"uint256\"}],\"name\":\"Deposit\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"bytes\",\"name\":\"reason\",\"type\":\"bytes\"}],\"name\":\"DepositFailed\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"bytes\",\"name\":\"reason\",\"type\":\"bytes\"}],\"name\":\"DepositFailed\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"bytes\",\"name\":\"reason\",\"type\":\"bytes\"}],\"name\":\"DisconnectFailed\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"bytes\",\"name\":\"reason\",\"type\":\"bytes\"}],\"name\":\"DisconnectFailed\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"uint64\",\"name\":\"version\",\"type\":\"uint64\"}],\"name\":\"Initialized\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"contract IInvestStrategy\",\"name\":\"oldStrategy\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"contract IInvestStrategy\",\"name\":\"newStrategy\",\"type\":\"address\"}],\"name\":\"StrategyChanged\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"contract IInvestStrategy\",\"name\":\"oldStrategy\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"contract IInvestStrategy\",\"name\":\"newStrategy\",\"type\":\"address\"}],\"name\":\"StrategyChanged\",\"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\":\"implementation\",\"type\":\"address\"}],\"name\":\"Upgraded\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"sender\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"receiver\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"assets\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"shares\",\"type\":\"uint256\"}],\"name\":\"Withdraw\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"bytes\",\"name\":\"reason\",\"type\":\"bytes\"}],\"name\":\"WithdrawFailed\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"bytes\",\"name\":\"reason\",\"type\":\"bytes\"}],\"name\":\"WithdrawFailed\",\"type\":\"event\"},{\"inputs\":[],\"name\":\"UPGRADE_INTERFACE_VERSION\",\"outputs\":[{\"internalType\":\"string\",\"name\":\"\",\"type\":\"string\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"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\":\"value\",\"type\":\"uint256\"}],\"name\":\"approve\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"asset\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"}],\"name\":\"balanceOf\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"shares\",\"type\":\"uint256\"}],\"name\":\"convertToAssets\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"assets\",\"type\":\"uint256\"}],\"name\":\"convertToShares\",\"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\":\"assets\",\"type\":\"uint256\"},{\"internalType\":\"address\",\"name\":\"receiver\",\"type\":\"address\"}],\"name\":\"deposit\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint8\",\"name\":\"method\",\"type\":\"uint8\"},{\"internalType\":\"bytes\",\"name\":\"extraData\",\"type\":\"bytes\"}],\"name\":\"forwardToStrategy\",\"outputs\":[{\"internalType\":\"bytes\",\"name\":\"\",\"type\":\"bytes\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"slot\",\"type\":\"bytes32\"}],\"name\":\"getBytesSlot\",\"outputs\":[{\"internalType\":\"bytes\",\"name\":\"\",\"type\":\"bytes\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"string\",\"name\":\"name_\",\"type\":\"string\"},{\"internalType\":\"string\",\"name\":\"symbol_\",\"type\":\"string\"},{\"internalType\":\"contract IERC20\",\"name\":\"asset_\",\"type\":\"address\"},{\"internalType\":\"contract IInvestStrategy\",\"name\":\"strategy_\",\"type\":\"address\"},{\"internalType\":\"bytes\",\"name\":\"initStrategyData\",\"type\":\"bytes\"}],\"name\":\"initialize\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"}],\"name\":\"maxDeposit\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"}],\"name\":\"maxMint\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"}],\"name\":\"maxRedeem\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"}],\"name\":\"maxWithdraw\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"shares\",\"type\":\"uint256\"},{\"internalType\":\"address\",\"name\":\"receiver\",\"type\":\"address\"}],\"name\":\"mint\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"name\",\"outputs\":[{\"internalType\":\"string\",\"name\":\"\",\"type\":\"string\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"assets\",\"type\":\"uint256\"}],\"name\":\"previewDeposit\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"shares\",\"type\":\"uint256\"}],\"name\":\"previewMint\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"shares\",\"type\":\"uint256\"}],\"name\":\"previewRedeem\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"assets\",\"type\":\"uint256\"}],\"name\":\"previewWithdraw\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"proxiableUUID\",\"outputs\":[{\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"shares\",\"type\":\"uint256\"},{\"internalType\":\"address\",\"name\":\"receiver\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"}],\"name\":\"redeem\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"contract IInvestStrategy\",\"name\":\"newStrategy\",\"type\":\"address\"},{\"internalType\":\"bytes\",\"name\":\"initStrategyData\",\"type\":\"bytes\"},{\"internalType\":\"bool\",\"name\":\"force\",\"type\":\"bool\"}],\"name\":\"setStrategy\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"strategy\",\"outputs\":[{\"internalType\":\"contract IInvestStrategy\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"symbol\",\"outputs\":[{\"internalType\":\"string\",\"name\":\"\",\"type\":\"string\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"totalAssets\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"assets\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"totalSupply\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"value\",\"type\":\"uint256\"}],\"name\":\"transfer\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"from\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"value\",\"type\":\"uint256\"}],\"name\":\"transferFrom\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"newImplementation\",\"type\":\"address\"},{\"internalType\":\"bytes\",\"name\":\"data\",\"type\":\"bytes\"}],\"name\":\"upgradeToAndCall\",\"outputs\":[],\"stateMutability\":\"payable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"assets\",\"type\":\"uint256\"},{\"internalType\":\"address\",\"name\":\"receiver\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"}],\"name\":\"withdraw\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"}],\"devdoc\":{\"author\":\"Ensuro\",\"custom:security-contact\":\"security@ensuro.co\",\"details\":\"Vault that invests/deinvests using a pluggable IInvestStrategy on each deposit/withdraw.      The vault is permissioned to deposit/withdraw (not transfer). The owner of the shares must have LP_ROLE.      Investment strategy can be changed. Also, custom messages can be sent to the IInvestStrategy contract.      The code of the IInvestStrategy is called using delegatecall, so it has full control over the assets and      storage of this contract, so you must be very careful the kind of IInvestStrategy is plugged. WARNING: this contract isn't fully tested and has known errors (lack of access validation on forwardToStrategy),          so this is not intended to be used in production. Is just for the purpose of testing strategies.\",\"errors\":{\"AddressEmptyCode(address)\":[{\"details\":\"There's no code at `target` (it is not a contract).\"}],\"ERC1967InvalidImplementation(address)\":[{\"details\":\"The `implementation` of the proxy is invalid.\"}],\"ERC1967NonPayable()\":[{\"details\":\"An upgrade function sees `msg.value > 0` that may be lost.\"}],\"ERC20InsufficientAllowance(address,uint256,uint256)\":[{\"details\":\"Indicates a failure with the `spender`\\u2019s `allowance`. Used in transfers.\",\"params\":{\"allowance\":\"Amount of tokens a `spender` is allowed to operate with.\",\"needed\":\"Minimum amount required to perform a transfer.\",\"spender\":\"Address that may be allowed to operate on tokens without being their owner.\"}}],\"ERC20InsufficientBalance(address,uint256,uint256)\":[{\"details\":\"Indicates an error related to the current `balance` of a `sender`. Used in transfers.\",\"params\":{\"balance\":\"Current balance for the interacting account.\",\"needed\":\"Minimum amount required to perform a transfer.\",\"sender\":\"Address whose tokens are being transferred.\"}}],\"ERC20InvalidApprover(address)\":[{\"details\":\"Indicates a failure with the `approver` of a token to be approved. Used in approvals.\",\"params\":{\"approver\":\"Address initiating an approval operation.\"}}],\"ERC20InvalidReceiver(address)\":[{\"details\":\"Indicates a failure with the token `receiver`. Used in transfers.\",\"params\":{\"receiver\":\"Address to which tokens are being transferred.\"}}],\"ERC20InvalidSender(address)\":[{\"details\":\"Indicates a failure with the token `sender`. Used in transfers.\",\"params\":{\"sender\":\"Address whose tokens are being transferred.\"}}],\"ERC20InvalidSpender(address)\":[{\"details\":\"Indicates a failure with the `spender` to be approved. Used in approvals.\",\"params\":{\"spender\":\"Address that may be allowed to operate on tokens without being their owner.\"}}],\"ERC4626ExceededMaxDeposit(address,uint256,uint256)\":[{\"details\":\"Attempted to deposit more assets than the max amount for `receiver`.\"}],\"ERC4626ExceededMaxMint(address,uint256,uint256)\":[{\"details\":\"Attempted to mint more shares than the max amount for `receiver`.\"}],\"ERC4626ExceededMaxRedeem(address,uint256,uint256)\":[{\"details\":\"Attempted to redeem more shares than the max amount for `receiver`.\"}],\"ERC4626ExceededMaxWithdraw(address,uint256,uint256)\":[{\"details\":\"Attempted to withdraw more assets than the max amount for `receiver`.\"}],\"FailedCall()\":[{\"details\":\"A call to an address target failed. The target may have reverted.\"}],\"InvalidInitialization()\":[{\"details\":\"The contract is already initialized.\"}],\"NotInitializing()\":[{\"details\":\"The contract is not initializing.\"}],\"SafeERC20FailedOperation(address)\":[{\"details\":\"An operation with an ERC-20 token failed.\"}],\"UUPSUnauthorizedCallContext()\":[{\"details\":\"The call is from an unauthorized context.\"}],\"UUPSUnsupportedProxiableUUID(bytes32)\":[{\"details\":\"The storage `slot` is unsupported as a UUID.\"}]},\"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.\"},\"Initialized(uint64)\":{\"details\":\"Triggered when the contract has been initialized or reinitialized.\"},\"Transfer(address,address,uint256)\":{\"details\":\"Emitted when `value` tokens are moved from one account (`from`) to another (`to`). Note that `value` may be zero.\"},\"Upgraded(address)\":{\"details\":\"Emitted when the implementation is upgraded.\"}},\"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\":\"See {IERC20-approve}. NOTE: If `value` is the maximum `uint256`, the allowance is not updated on `transferFrom`. This is semantically equivalent to an infinite approval. Requirements: - `spender` cannot be the zero address.\"},\"asset()\":{\"details\":\"Returns the address of the underlying token used for the Vault for accounting, depositing, and withdrawing. - MUST be an ERC-20 token contract. - MUST NOT revert.\"},\"balanceOf(address)\":{\"details\":\"Returns the value of tokens owned by `account`.\"},\"constructor\":{\"custom:oz-upgrades-unsafe-allow\":\"constructor\"},\"convertToAssets(uint256)\":{\"details\":\"Returns the amount of assets that the Vault would exchange for the amount of shares provided, in an ideal scenario where all the conditions are met. - MUST NOT be inclusive of any fees that are charged against assets in the Vault. - MUST NOT show any variations depending on the caller. - MUST NOT reflect slippage or other on-chain conditions, when performing the actual exchange. - MUST NOT revert. NOTE: This calculation MAY NOT reflect the \\u201cper-user\\u201d price-per-share, and instead should reflect the \\u201caverage-user\\u2019s\\u201d price-per-share, meaning what the average user should expect to see when exchanging to and from.\"},\"convertToShares(uint256)\":{\"details\":\"Returns the amount of shares that the Vault would exchange for the amount of assets provided, in an ideal scenario where all the conditions are met. - MUST NOT be inclusive of any fees that are charged against assets in the Vault. - MUST NOT show any variations depending on the caller. - MUST NOT reflect slippage or other on-chain conditions, when performing the actual exchange. - MUST NOT revert. NOTE: This calculation MAY NOT reflect the \\u201cper-user\\u201d price-per-share, and instead should reflect the \\u201caverage-user\\u2019s\\u201d price-per-share, meaning what the average user should expect to see when exchanging to and from.\"},\"decimals()\":{\"details\":\"Decimals are computed by adding the decimal offset on top of the underlying asset's decimals. This \\\"original\\\" value is cached during construction of the vault contract. If this read operation fails (e.g., the asset has not been created yet), a default of 18 is used to represent the underlying asset's decimals. See {IERC20Metadata-decimals}.\"},\"deposit(uint256,address)\":{\"details\":\"Deposit `assets` underlying tokens and send the corresponding number of vault shares (`shares`) to `receiver`. - MUST emit the Deposit event. - MAY support an additional flow in which the underlying tokens are owned by the Vault contract before the   deposit execution, and are accounted for during deposit. - MUST revert if all of assets cannot be deposited (due to deposit limit being reached, slippage, the user not   approving enough underlying tokens to the Vault contract, etc). NOTE: most implementations will require pre-approval of the Vault with the Vault\\u2019s underlying asset token.\"},\"forwardToStrategy(uint8,bytes)\":{\"details\":\"Used to call specific methods on the strategies. Anyone can call this method, is responsability of the      IInvestStrategy to check access permissions when needed.\",\"params\":{\"extraData\":\"Additional parameters sent to the method.\",\"method\":\"Id of the method to call. Is recommended that the strategy defines an enum with the methods that               can be called externally and validates this value.\"},\"returns\":{\"_0\":\"Returns the output received from the IInvestStrategy.\"}},\"getBytesSlot(bytes32)\":{\"details\":\"Exposes a given slot as a bytes array. To be used by the IInvestStrategy views to access their storage.      Only the slot==strategyStorageSlot() can be accessed.\"},\"initialize(string,string,address,address,bytes)\":{\"details\":\"Initializes the SingleStrategyERC4626\",\"params\":{\"asset_\":\"The asset() of the ERC4626\",\"initStrategyData\":\"Initialization data that will be sent to the IInvestStrategy\",\"name_\":\"Name of the ERC20/ERC4626 token\",\"strategy_\":\"The IInvestStrategy that will be used to manage the funds received.\",\"symbol_\":\"Symbol of the ERC20/ERC4626 token\"}},\"maxDeposit(address)\":{\"details\":\"See {IERC4626-maxDeposit}.\"},\"maxMint(address)\":{\"details\":\"See {IERC4626-maxMint}.\"},\"maxRedeem(address)\":{\"details\":\"See {IERC4626-maxRedeem}.\"},\"maxWithdraw(address)\":{\"details\":\"See {IERC4626-maxWithdraw}.\"},\"mint(uint256,address)\":{\"details\":\"Mints exactly `shares` vault shares to `receiver` in exchange for `assets` underlying tokens. - MUST emit the Deposit event. - MAY support an additional flow in which the underlying tokens are owned by the Vault contract before the mint   execution, and are accounted for during mint. - MUST revert if all of shares cannot be minted (due to deposit limit being reached, slippage, the user not   approving enough underlying tokens to the Vault contract, etc). NOTE: most implementations will require pre-approval of the Vault with the Vault\\u2019s underlying asset token.\"},\"name()\":{\"details\":\"Returns the name of the token.\"},\"previewDeposit(uint256)\":{\"details\":\"Allows an on-chain or off-chain user to simulate the effects of their deposit at the current block, given current on-chain conditions. - MUST return as close to and no more than the exact amount of Vault shares that would be minted in a deposit   call in the same transaction. I.e. deposit should return the same or more shares as previewDeposit if called   in the same transaction. - MUST NOT account for deposit limits like those returned from maxDeposit and should always act as though the   deposit would be accepted, regardless if the user has enough tokens approved, etc. - MUST be inclusive of deposit fees. Integrators should be aware of the existence of deposit fees. - MUST NOT revert. NOTE: any unfavorable discrepancy between convertToShares and previewDeposit SHOULD be considered slippage in share price or some other type of condition, meaning the depositor will lose assets by depositing.\"},\"previewMint(uint256)\":{\"details\":\"Allows an on-chain or off-chain user to simulate the effects of their mint at the current block, given current on-chain conditions. - MUST return as close to and no fewer than the exact amount of assets that would be deposited in a mint call   in the same transaction. I.e. mint should return the same or fewer assets as previewMint if called in the   same transaction. - MUST NOT account for mint limits like those returned from maxMint and should always act as though the mint   would be accepted, regardless if the user has enough tokens approved, etc. - MUST be inclusive of deposit fees. Integrators should be aware of the existence of deposit fees. - MUST NOT revert. NOTE: any unfavorable discrepancy between convertToAssets and previewMint SHOULD be considered slippage in share price or some other type of condition, meaning the depositor will lose assets by minting.\"},\"previewRedeem(uint256)\":{\"details\":\"Allows an on-chain or off-chain user to simulate the effects of their redemption at the current block, given current on-chain conditions. - MUST return as close to and no more than the exact amount of assets that would be withdrawn in a redeem call   in the same transaction. I.e. redeem should return the same or more assets as previewRedeem if called in the   same transaction. - MUST NOT account for redemption limits like those returned from maxRedeem and should always act as though the   redemption would be accepted, regardless if the user has enough shares, etc. - MUST be inclusive of withdrawal fees. Integrators should be aware of the existence of withdrawal fees. - MUST NOT revert. NOTE: any unfavorable discrepancy between convertToAssets and previewRedeem SHOULD be considered slippage in share price or some other type of condition, meaning the depositor will lose assets by redeeming.\"},\"previewWithdraw(uint256)\":{\"details\":\"Allows an on-chain or off-chain user to simulate the effects of their withdrawal at the current block, given current on-chain conditions. - MUST return as close to and no fewer than the exact amount of Vault shares that would be burned in a withdraw   call in the same transaction. I.e. withdraw should return the same or fewer shares as previewWithdraw if   called   in the same transaction. - MUST NOT account for withdrawal limits like those returned from maxWithdraw and should always act as though   the withdrawal would be accepted, regardless if the user has enough shares, etc. - MUST be inclusive of withdrawal fees. Integrators should be aware of the existence of withdrawal fees. - MUST NOT revert. NOTE: any unfavorable discrepancy between convertToShares and previewWithdraw SHOULD be considered slippage in share price or some other type of condition, meaning the depositor will lose assets by depositing.\"},\"proxiableUUID()\":{\"details\":\"Implementation of the ERC-1822 {proxiableUUID} function. This returns the storage slot used by the implementation. It is used to validate the implementation's compatibility when performing an upgrade. IMPORTANT: A proxy pointing at a proxiable contract should not be considered proxiable itself, because this risks bricking a proxy that upgrades to it, by delegating to itself until out of gas. Thus it is critical that this function revert if invoked through a proxy. This is guaranteed by the `notDelegated` modifier.\"},\"redeem(uint256,address,address)\":{\"details\":\"Burns exactly shares from owner and sends assets of underlying tokens to receiver. - MUST emit the Withdraw event. - MAY support an additional flow in which the underlying tokens are owned by the Vault contract before the   redeem execution, and are accounted for during redeem. - MUST revert if all of shares cannot be redeemed (due to withdrawal limit being reached, slippage, the owner   not having enough shares, etc). NOTE: some implementations will require pre-requesting to the Vault before a withdrawal may be performed. Those methods should be performed separately.\"},\"setStrategy(address,bytes,bool)\":{\"details\":\"Changes the current investment strategy to a new one. When this happens, all funds are withdrawn from the      old strategy and deposited on the new one. This reverts if any of this fails, unless the force parameter is      true, in that case errors in withdrawal or deposit are silented.\",\"params\":{\"force\":\"Boolean to indicate if errors on withdraw or deposit should be accepted. Normally you should send              this value in `false`. Only use `true` if you know what you are doing and trying to replace a faulty              strategy.\",\"initStrategyData\":\"Initialization parameters for this new strategy\",\"newStrategy\":\"The new strategy to plug into the vault\"}},\"strategy()\":{\"details\":\"Returns the current strategy plugged into the contract\"},\"symbol()\":{\"details\":\"Returns the symbol of the token, usually a shorter version of the name.\"},\"totalAssets()\":{\"details\":\"See {IERC4626-totalAssets}.\"},\"totalSupply()\":{\"details\":\"Returns the value of tokens in existence.\"},\"transfer(address,uint256)\":{\"details\":\"See {IERC20-transfer}. Requirements: - `to` cannot be the zero address. - the caller must have a balance of at least `value`.\"},\"transferFrom(address,address,uint256)\":{\"details\":\"See {IERC20-transferFrom}. Skips emitting an {Approval} event indicating an allowance update. This is not required by the ERC. See {xref-ERC20-_approve-address-address-uint256-bool-}[_approve]. NOTE: Does not update the allowance if the current allowance is the maximum `uint256`. Requirements: - `from` and `to` cannot be the zero address. - `from` must have a balance of at least `value`. - the caller must have allowance for ``from``'s tokens of at least `value`.\"},\"upgradeToAndCall(address,bytes)\":{\"custom:oz-upgrades-unsafe-allow-reachable\":\"delegatecall\",\"details\":\"Upgrade the implementation of the proxy to `newImplementation`, and subsequently execute the function call encoded in `data`. Calls {_authorizeUpgrade}. Emits an {Upgraded} event.\"},\"withdraw(uint256,address,address)\":{\"details\":\"Burns shares from owner and sends exactly assets of underlying tokens to receiver. - MUST emit the Withdraw event. - MAY support an additional flow in which the underlying tokens are owned by the Vault contract before the   withdraw execution, and are accounted for during withdraw. - MUST revert if all of assets cannot be withdrawn (due to withdrawal limit being reached, slippage, the owner   not having enough shares, etc). Note that some implementations will require pre-requesting to the Vault before a withdrawal may be performed. Those methods should be performed separately.\"}},\"stateVariables\":{\"__gap\":{\"details\":\"This empty reserved space is put in place to allow future versions to add new variables without shifting down storage in the inheritance chain. See https://docs.openzeppelin.com/contracts/4.x/upgradeable#storage_gaps\"}},\"title\":\"SingleStrategyERC4626\",\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{},\"version\":1}},\"settings\":{\"compilationTarget\":{\"contracts/mock/SingleStrategyERC4626.sol\":\"SingleStrategyERC4626\"},\"evmVersion\":\"prague\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"enabled\":true,\"runs\":200},\"remappings\":[]},\"sources\":{\"@openzeppelin/contracts-upgradeable/proxy/utils/UUPSUpgradeable.sol\":{\"keccak256\":\"0x4918e374e9ce84e9b196486bafbd46851d5e72ab315e31f0b1d7c443dcfea5bf\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://2ced247afc54a93a13922ebbd63add61130abe483ab5b5b78e7e991d564d150e\",\"dweb:/ipfs/QmTfxjcTgfekiguegjvYMyfqhyRNffui17f8xi86BCZNVt\"]},\"@openzeppelin/contracts-upgradeable/token/ERC20/ERC20Upgradeable.sol\":{\"keccak256\":\"0xd518def45c722a6e803e1e26e625db25e01497f672ca566cca585d234ec903b0\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://6e7de3fccd96783244790cde282435ce0fd3a44ab4ccb10f17005c743202882f\",\"dweb:/ipfs/QmYSepstTqs5UPJvjeJXkWU5R659yReqrSgSGGh65hkbdK\"]},\"@openzeppelin/contracts-upgradeable/token/ERC20/extensions/ERC4626Upgradeable.sol\":{\"keccak256\":\"0x9a451617fef51e7faef5f46de537f9aaca837d470750cfbd7b8a733341dc3951\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://1cdebfebb9bbfe1558d15eab9cf8bd1bd5ad8bb934f6a3d9ea8ef022603c1d59\",\"dweb:/ipfs/QmT83ko5MwSdEJsHz8cQbQGBDyM1q9PvzGm9RFmXfWXMgA\"]},\"@openzeppelin/contracts-upgradeable/utils/ContextUpgradeable.sol\":{\"keccak256\":\"0xad316bdc3ee64a0e29773256245045dc57b92660799ff14f668f7c0da9456a9d\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://66463434d266816fca2a3a2734ceee88544e61b7cc3899c50333b46e8e771455\",\"dweb:/ipfs/QmPYCzHjki1HQLvBub3uUqoUKGrwdgR3xP9Zpya14YTdXS\"]},\"@openzeppelin/contracts/interfaces/IERC1363.sol\":{\"keccak256\":\"0xd5ea07362ab630a6a3dee4285a74cf2377044ca2e4be472755ad64d7c5d4b69d\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://da5e832b40fc5c3145d3781e2e5fa60ac2052c9d08af7e300dc8ab80c4343100\",\"dweb:/ipfs/QmTzf7N5ZUdh5raqtzbM11yexiUoLC9z3Ws632MCuycq1d\"]},\"@openzeppelin/contracts/interfaces/IERC165.sol\":{\"keccak256\":\"0x0afcb7e740d1537b252cb2676f600465ce6938398569f09ba1b9ca240dde2dfc\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://1c299900ac4ec268d4570ecef0d697a3013cd11a6eb74e295ee3fbc945056037\",\"dweb:/ipfs/Qmab9owJoxcA7vJT5XNayCMaUR1qxqj1NDzzisduwaJMcZ\"]},\"@openzeppelin/contracts/interfaces/IERC1967.sol\":{\"keccak256\":\"0xbf2aefe54b76d7f7bcd4f6da1080b7b1662611937d870b880db584d09cea56b5\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://f5e7e2f12e0feec75296e57f51f82fdaa8bd1551f4b8cc6560442c0bf60f818c\",\"dweb:/ipfs/QmcW9wDMaQ8RbQibMarfp17a3bABzY5KraWe2YDwuUrUoz\"]},\"@openzeppelin/contracts/interfaces/IERC20.sol\":{\"keccak256\":\"0x1a6221315ce0307746c2c4827c125d821ee796c74a676787762f4778671d4f44\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://1bb2332a7ee26dd0b0de9b7fe266749f54820c99ab6a3bcb6f7e6b751d47ee2d\",\"dweb:/ipfs/QmcRWpaBeCYkhy68PR3B4AgD7asuQk7PwkWxrvJbZcikLF\"]},\"@openzeppelin/contracts/interfaces/IERC4626.sol\":{\"keccak256\":\"0xece5cbf726293ae6be1fbfade2936f052e1b399ed395ba1e221540ab82b62628\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://a9b97e58e90799e681dccbd4a8e469c6ebc2baf11312ad08f14332646123dd4b\",\"dweb:/ipfs/QmdamCQfxcuYinSNd3Et7VNo3oY98XSv4XCUQyq9xfMNUy\"]},\"@openzeppelin/contracts/interfaces/draft-IERC1822.sol\":{\"keccak256\":\"0x82f757819bf2429a0d4db141b99a4bbe5039e4ef86dfb94e2e6d40577ed5b28b\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://37c30ed931e19fb71fdb806bb504cfdb9913b7127545001b64d4487783374422\",\"dweb:/ipfs/QmUBHpv4hm3ZmwJ4GH8BeVzK4mv41Q6vBbWXxn8HExPXza\"]},\"@openzeppelin/contracts/interfaces/draft-IERC6093.sol\":{\"keccak256\":\"0x1b88b3fb3d85ba5496d7d5f396f83ee1fddcdd6762059ff65992655b67920998\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://89393bb3212da1c0889601b9706a07b39419ddc4d2faab9eaf6e7f9152cf6a1c\",\"dweb:/ipfs/QmcCfzzxv1Bkdz1c1yF4gQCeYb6Us5BJANnzTFqawfd1HL\"]},\"@openzeppelin/contracts/proxy/ERC1967/ERC1967Utils.sol\":{\"keccak256\":\"0xa1ad192cd45317c788618bef5cb1fb3ca4ce8b230f6433ac68cc1d850fb81618\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://b43447bb85a53679d269a403c693b9d88d6c74177dfb35eddca63abaf7cf110a\",\"dweb:/ipfs/QmXSDmpd4bNZj1PDgegr6C4w1jDaWHXCconC3rYiw9TSkQ\"]},\"@openzeppelin/contracts/proxy/beacon/IBeacon.sol\":{\"keccak256\":\"0x20462ddb2665e9521372c76b001d0ce196e59dbbd989de9af5576cad0bd5628b\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://f417fd12aeec8fbfaceaa30e3a08a0724c0bc39de363e2acf6773c897abbaf6d\",\"dweb:/ipfs/QmU4Hko6sApdweVM92CsiuLKkCk8HfyBeutF89PCTz5Tye\"]},\"@openzeppelin/contracts/proxy/utils/Initializable.sol\":{\"keccak256\":\"0xdb4d24ee2c087c391d587cd17adfe5b3f9d93b3110b1388c2ab6c7c0ad1dcd05\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://ab7b6d5b9e2b88176312967fe0f0e78f3d9a1422fa5e4b64e2440c35869b5d08\",\"dweb:/ipfs/QmXKYWWyzcLg1B2k7Sb1qkEXgLCYfXecR9wYW5obRzWP1Q\"]},\"@openzeppelin/contracts/proxy/utils/UUPSUpgradeable.sol\":{\"keccak256\":\"0x1a26353563a2c63b4120ea0b94727253eeff84fe2241d42c1452308b9080e66a\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://49a95e36d267828b4357186a79917002d616d8634e25d1f9818e2354cd2e7d34\",\"dweb:/ipfs/QmWDkqE4KkyLAS2UkLsRgXE1FGB1qfEgBC3zMXBVsVWfdk\"]},\"@openzeppelin/contracts/token/ERC20/IERC20.sol\":{\"keccak256\":\"0x74ed01eb66b923d0d0cfe3be84604ac04b76482a55f9dd655e1ef4d367f95bc2\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://5282825a626cfe924e504274b864a652b0023591fa66f06a067b25b51ba9b303\",\"dweb:/ipfs/QmeCfPykghhMc81VJTrHTC7sF6CRvaA1FXVq2pJhwYp1dV\"]},\"@openzeppelin/contracts/token/ERC20/extensions/IERC20Metadata.sol\":{\"keccak256\":\"0xd6fa4088198f04eef10c5bce8a2f4d60554b7ec4b987f684393c01bf79b94d9f\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://f95ee0bbd4dd3ac730d066ba3e785ded4565e890dbec2fa7d3b9fe3bad9d0d6e\",\"dweb:/ipfs/QmSLr6bHkPFWT7ntj34jmwfyskpwo97T9jZUrk5sz3sdtR\"]},\"@openzeppelin/contracts/token/ERC20/utils/SafeERC20.sol\":{\"keccak256\":\"0x304d732678032a9781ae85c8f204c8fba3d3a5e31c02616964e75cfdc5049098\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://299ced486011781dc98f638059678323c03079fefae1482abaa2135b22fa92d0\",\"dweb:/ipfs/QmbZNbcPTBxNvwChavN2kkZZs7xHhYL7mv51KrxMhsMs3j\"]},\"@openzeppelin/contracts/utils/Address.sol\":{\"keccak256\":\"0x0fa9e0d3a859900b5a46f70a03c73adf259603d5e05027a37fe0b45529d85346\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://c2add4da0240c9f2ce47649c8bb6b11b40e98cf6f88b8bdc76b2704e89391710\",\"dweb:/ipfs/QmNQTwF2uVzu4CRtNxr8bxyP9XuW6VsZuo2Nr4KR2bZr3d\"]},\"@openzeppelin/contracts/utils/Errors.sol\":{\"keccak256\":\"0x6afa713bfd42cf0f7656efa91201007ac465e42049d7de1d50753a373648c123\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://ba1d02f4847670a1b83dec9f7d37f0b0418d6043447b69f3a29a5f9efc547fcf\",\"dweb:/ipfs/QmQ7iH2keLNUKgq2xSWcRmuBE5eZ3F5whYAkAGzCNNoEWB\"]},\"@openzeppelin/contracts/utils/LowLevelCall.sol\":{\"keccak256\":\"0x5b4802a4352474792df3107e961d1cc593e47b820c14f69d3505cb28f5a6a583\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://a6f86fd01f829499fe0545ff5dda07d4521988e88bfe0bf801fc15650921ed56\",\"dweb:/ipfs/QmUUKu4ZDffHAmfkf3asuQfmLTyfpuy2Amdncc3SqfzKPG\"]},\"@openzeppelin/contracts/utils/Memory.sol\":{\"keccak256\":\"0x35feec480590c0ed9c1623df077ba9af406ad57cd9d149ff278c7316d6fe8fe0\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://839967d079db4cd624c3f735a6e911953c0e2347418c016f6a0cc18ed1aa9603\",\"dweb:/ipfs/QmaWxNL8Ymkwerfvq1LNzpbq2PMzTGsnXzqsYExNyvKWka\"]},\"@openzeppelin/contracts/utils/Panic.sol\":{\"keccak256\":\"0xf7fe324703a64fc51702311dc51562d5cb1497734f074e4f483bfb6717572d7a\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://c6a5ff4f9fd8649b7ee20800b7fa387d3465bd77cf20c2d1068cd5c98e1ed57a\",\"dweb:/ipfs/QmVSaVJf9FXFhdYEYeCEfjMVHrxDh5qL4CGkxdMWpQCrqG\"]},\"@openzeppelin/contracts/utils/StorageSlot.sol\":{\"keccak256\":\"0xcf74f855663ce2ae00ed8352666b7935f6cddea2932fdf2c3ecd30a9b1cd0e97\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://9f660b1f351b757dfe01438e59888f31f33ded3afcf5cb5b0d9bf9aa6f320a8b\",\"dweb:/ipfs/QmarDJ5hZEgBtCmmrVzEZWjub9769eD686jmzb2XpSU1cM\"]},\"@openzeppelin/contracts/utils/introspection/IERC165.sol\":{\"keccak256\":\"0x8891738ffe910f0cf2da09566928589bf5d63f4524dd734fd9cedbac3274dd5c\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://971f954442df5c2ef5b5ebf1eb245d7105d9fbacc7386ee5c796df1d45b21617\",\"dweb:/ipfs/QmadRjHbkicwqwwh61raUEapaVEtaLMcYbQZWs9gUkgj3u\"]},\"@openzeppelin/contracts/utils/math/Math.sol\":{\"keccak256\":\"0x09e3f1c72d4c5cbe8e2644ab7313f8f7177533ae2f4c24cdcbbeaf520a73734c\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://93208401215d539fa2d81626b207c1f611def7883d0e447b3b5969ebaa7b3c2c\",\"dweb:/ipfs/QmXPxDnQPx8LAweX5ZJqEcwkvs59kP4c64VVDG1Jjq1mef\"]},\"@openzeppelin/contracts/utils/math/SafeCast.sol\":{\"keccak256\":\"0x195533c86d0ef72bcc06456a4f66a9b941f38eb403739b00f21fd7c1abd1ae54\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://b1d578337048cad08c1c03041cca5978eff5428aa130c781b271ad9e5566e1f8\",\"dweb:/ipfs/QmPFKL2r9CBsMwmUqqdcFPfHZB2qcs9g1HDrPxzWSxomvy\"]},\"contracts/InvestStrategyClient.sol\":{\"keccak256\":\"0x3c8fff73042023381eb750ba13a9066475d208e99bde568e1243f0e1e282c894\",\"license\":\"Apache-2.0\",\"urls\":[\"bzz-raw://3f8283ffa5c512e482b0065d9391c7060ebc1fa5968c55e6a05958480b7facb6\",\"dweb:/ipfs/QmT4N9Z19b6AUXpXtg23d3ijBExyKuRJBeQ3o8WCobgpfT\"]},\"contracts/interfaces/IExposeStorage.sol\":{\"keccak256\":\"0x68d4dbc7e135ac949f5f557a1f071b96d1639262188f91957bf082be7e72b1c7\",\"license\":\"Apache-2.0\",\"urls\":[\"bzz-raw://29fc549ef136e19275bb9225c8e7f02e0cc3b274acef4e6d7002c6f3f74e5c13\",\"dweb:/ipfs/QmVzrn7Cbxe8xzLwy4ZpzxP6CBEKsegXG8VusNYqssCe3d\"]},\"contracts/interfaces/IInvestStrategy.sol\":{\"keccak256\":\"0x6800a1f147def2252b79629150ce9cd87e914ca5a966f1035fbca6328bbc9c4b\",\"license\":\"Apache-2.0\",\"urls\":[\"bzz-raw://2e9260604e0ffcf405819f85fee4124d9a090cf716f389ff92cf76a2837a2e42\",\"dweb:/ipfs/QmVdKEW8C6MDyiiUfjBxEMTWjfPrBJadptpxh9L2uCebDK\"]},\"contracts/mock/SingleStrategyERC4626.sol\":{\"keccak256\":\"0xb066b7f1e2961d1670ea9e2163d41b43e26b5f1ee6e2ad78c47f9f4b8cbc1464\",\"license\":\"Apache-2.0\",\"urls\":[\"bzz-raw://7723247e9353bb44e30a1d6ffe00dad9dae7691c825628383dc5515087b0191a\",\"dweb:/ipfs/QmcMiUFZ5DSBjvUoDCmJ8HJLrURuHiT1jWfouvTRTuaeDF\"]}},\"version\":1}","storageLayout":{"storage":[{"astId":21338,"contract":"contracts/mock/SingleStrategyERC4626.sol:SingleStrategyERC4626","label":"_strategy","offset":0,"slot":"0","type":"t_contract(IInvestStrategy)20725"},{"astId":21730,"contract":"contracts/mock/SingleStrategyERC4626.sol:SingleStrategyERC4626","label":"__gap","offset":0,"slot":"1","type":"t_array(t_uint256)49_storage"}],"types":{"t_array(t_uint256)49_storage":{"base":"t_uint256","encoding":"inplace","label":"uint256[49]","numberOfBytes":"1568"},"t_contract(IInvestStrategy)20725":{"encoding":"inplace","label":"contract IInvestStrategy","numberOfBytes":"20"},"t_uint256":{"encoding":"inplace","label":"uint256","numberOfBytes":"32"}}}}},"contracts/mock/VaultV2Mock.sol":{"VaultV2Mock":{"abi":[{"inputs":[{"internalType":"string","name":"name_","type":"string"},{"internalType":"string","name":"symbol_","type":"string"},{"internalType":"contract IERC20Metadata","name":"asset_","type":"address"}],"stateMutability":"nonpayable","type":"constructor"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"allowance","type":"uint256"},{"internalType":"uint256","name":"needed","type":"uint256"}],"name":"ERC20InsufficientAllowance","type":"error"},{"inputs":[{"internalType":"address","name":"sender","type":"address"},{"internalType":"uint256","name":"balance","type":"uint256"},{"internalType":"uint256","name":"needed","type":"uint256"}],"name":"ERC20InsufficientBalance","type":"error"},{"inputs":[{"internalType":"address","name":"approver","type":"address"}],"name":"ERC20InvalidApprover","type":"error"},{"inputs":[{"internalType":"address","name":"receiver","type":"address"}],"name":"ERC20InvalidReceiver","type":"error"},{"inputs":[{"internalType":"address","name":"sender","type":"address"}],"name":"ERC20InvalidSender","type":"error"},{"inputs":[{"internalType":"address","name":"spender","type":"address"}],"name":"ERC20InvalidSpender","type":"error"},{"inputs":[{"internalType":"address","name":"receiver","type":"address"},{"internalType":"uint256","name":"assets","type":"uint256"},{"internalType":"uint256","name":"max","type":"uint256"}],"name":"ERC4626ExceededMaxDeposit","type":"error"},{"inputs":[{"internalType":"address","name":"receiver","type":"address"},{"internalType":"uint256","name":"shares","type":"uint256"},{"internalType":"uint256","name":"max","type":"uint256"}],"name":"ERC4626ExceededMaxMint","type":"error"},{"inputs":[{"internalType":"address","name":"owner","type":"address"},{"internalType":"uint256","name":"shares","type":"uint256"},{"internalType":"uint256","name":"max","type":"uint256"}],"name":"ERC4626ExceededMaxRedeem","type":"error"},{"inputs":[{"internalType":"address","name":"owner","type":"address"},{"internalType":"uint256","name":"assets","type":"uint256"},{"internalType":"uint256","name":"max","type":"uint256"}],"name":"ERC4626ExceededMaxWithdraw","type":"error"},{"inputs":[{"internalType":"address","name":"token","type":"address"}],"name":"SafeERC20FailedOperation","type":"error"},{"inputs":[{"internalType":"bytes4","name":"selector","type":"bytes4"}],"name":"VaultIsBroken","type":"error"},{"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":"sender","type":"address"},{"indexed":true,"internalType":"address","name":"owner","type":"address"},{"indexed":false,"internalType":"uint256","name":"assets","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"shares","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":"sender","type":"address"},{"indexed":true,"internalType":"address","name":"receiver","type":"address"},{"indexed":true,"internalType":"address","name":"owner","type":"address"},{"indexed":false,"internalType":"uint256","name":"assets","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"shares","type":"uint256"}],"name":"Withdraw","type":"event"},{"inputs":[],"name":"OVERRIDE_UNSET","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"_totalAssets","outputs":[{"internalType":"uint128","name":"","type":"uint128"}],"stateMutability":"view","type":"function"},{"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":"value","type":"uint256"}],"name":"approve","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"asset","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"balanceOf","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"broken","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"shares","type":"uint256"}],"name":"convertToAssets","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"assets","type":"uint256"}],"name":"convertToShares","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":"assets","type":"uint256"},{"internalType":"address","name":"receiver","type":"address"}],"name":"deposit","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"int256","name":"assets","type":"int256"}],"name":"discreteEarning","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"lastUpdate","outputs":[{"internalType":"uint64","name":"","type":"uint64"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"owner","type":"address"}],"name":"maxDeposit","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"owner","type":"address"}],"name":"maxMint","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"owner","type":"address"}],"name":"maxRedeem","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"owner","type":"address"}],"name":"maxWithdraw","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"shares","type":"uint256"},{"internalType":"address","name":"receiver","type":"address"}],"name":"mint","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"name","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"overrideMaxDeposit","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"overrideMaxMint","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"overrideMaxRedeem","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"overrideMaxWithdraw","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"assets","type":"uint256"}],"name":"previewDeposit","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"shares","type":"uint256"}],"name":"previewMint","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"shares","type":"uint256"}],"name":"previewRedeem","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"assets","type":"uint256"}],"name":"previewWithdraw","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"shares","type":"uint256"},{"internalType":"address","name":"receiver","type":"address"},{"internalType":"address","name":"owner","type":"address"}],"name":"redeem","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bool","name":"broken_","type":"bool"}],"name":"setBroken","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"enum TestERC4626.OverrideOption","name":"option","type":"uint8"},{"internalType":"uint256","name":"newValue","type":"uint256"}],"name":"setOverride","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"symbol","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"totalAssets","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":"to","type":"address"},{"internalType":"uint256","name":"value","type":"uint256"}],"name":"transfer","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"from","type":"address"},{"internalType":"address","name":"to","type":"address"},{"internalType":"uint256","name":"value","type":"uint256"}],"name":"transferFrom","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"updateCachedTotalAssets","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"assets","type":"uint256"},{"internalType":"address","name":"receiver","type":"address"},{"internalType":"address","name":"owner","type":"address"}],"name":"withdraw","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"nonpayable","type":"function"}],"evm":{"bytecode":{"functionDebugData":{"@_21759":{"entryPoint":null,"id":21759,"parameterSlots":3,"returnSlots":0},"@_2809":{"entryPoint":null,"id":2809,"parameterSlots":3,"returnSlots":0},"@_8138":{"entryPoint":null,"id":8138,"parameterSlots":2,"returnSlots":0},"@_8771":{"entryPoint":null,"id":8771,"parameterSlots":1,"returnSlots":0},"@_tryGetAssetDecimals_8849":{"entryPoint":177,"id":8849,"parameterSlots":1,"returnSlots":2},"@getFreeMemoryPointer_10485":{"entryPoint":null,"id":10485,"parameterSlots":0,"returnSlots":1},"@returnDataSize_10445":{"entryPoint":null,"id":10445,"parameterSlots":0,"returnSlots":1},"@setFreeMemoryPointer_10494":{"entryPoint":null,"id":10494,"parameterSlots":1,"returnSlots":0},"@staticcallReturn64Bytes_10409":{"entryPoint":322,"id":10409,"parameterSlots":2,"returnSlots":3},"abi_decode_string_fromMemory":{"entryPoint":375,"id":null,"parameterSlots":2,"returnSlots":1},"abi_decode_tuple_t_string_memory_ptrt_string_memory_ptrt_contract$_IERC20Metadata_$9411_fromMemory":{"entryPoint":512,"id":null,"parameterSlots":2,"returnSlots":3},"array_dataslot_string_storage":{"entryPoint":null,"id":null,"parameterSlots":1,"returnSlots":1},"checked_sub_t_uint256":{"entryPoint":963,"id":null,"parameterSlots":2,"returnSlots":1},"clean_up_bytearray_end_slots_string_storage":{"entryPoint":701,"id":null,"parameterSlots":3,"returnSlots":0},"copy_byte_array_to_storage_from_t_string_memory_ptr_to_t_string_storage":{"entryPoint":777,"id":null,"parameterSlots":2,"returnSlots":0},"extract_byte_array_length":{"entryPoint":645,"id":null,"parameterSlots":1,"returnSlots":1},"extract_used_part_and_set_length_of_short_byte_array":{"entryPoint":null,"id":null,"parameterSlots":2,"returnSlots":1},"panic_error_0x41":{"entryPoint":355,"id":null,"parameterSlots":0,"returnSlots":0}},"generatedSources":[{"ast":{"nativeSrc":"0:4362:87","nodeType":"YulBlock","src":"0:4362:87","statements":[{"nativeSrc":"6:3:87","nodeType":"YulBlock","src":"6:3:87","statements":[]},{"body":{"nativeSrc":"46:95:87","nodeType":"YulBlock","src":"46:95:87","statements":[{"expression":{"arguments":[{"kind":"number","nativeSrc":"63:1:87","nodeType":"YulLiteral","src":"63:1:87","type":"","value":"0"},{"arguments":[{"kind":"number","nativeSrc":"70:3:87","nodeType":"YulLiteral","src":"70:3:87","type":"","value":"224"},{"kind":"number","nativeSrc":"75:10:87","nodeType":"YulLiteral","src":"75:10:87","type":"","value":"0x4e487b71"}],"functionName":{"name":"shl","nativeSrc":"66:3:87","nodeType":"YulIdentifier","src":"66:3:87"},"nativeSrc":"66:20:87","nodeType":"YulFunctionCall","src":"66:20:87"}],"functionName":{"name":"mstore","nativeSrc":"56:6:87","nodeType":"YulIdentifier","src":"56:6:87"},"nativeSrc":"56:31:87","nodeType":"YulFunctionCall","src":"56:31:87"},"nativeSrc":"56:31:87","nodeType":"YulExpressionStatement","src":"56:31:87"},{"expression":{"arguments":[{"kind":"number","nativeSrc":"103:1:87","nodeType":"YulLiteral","src":"103:1:87","type":"","value":"4"},{"kind":"number","nativeSrc":"106:4:87","nodeType":"YulLiteral","src":"106:4:87","type":"","value":"0x41"}],"functionName":{"name":"mstore","nativeSrc":"96:6:87","nodeType":"YulIdentifier","src":"96:6:87"},"nativeSrc":"96:15:87","nodeType":"YulFunctionCall","src":"96:15:87"},"nativeSrc":"96:15:87","nodeType":"YulExpressionStatement","src":"96:15:87"},{"expression":{"arguments":[{"kind":"number","nativeSrc":"127:1:87","nodeType":"YulLiteral","src":"127:1:87","type":"","value":"0"},{"kind":"number","nativeSrc":"130:4:87","nodeType":"YulLiteral","src":"130:4:87","type":"","value":"0x24"}],"functionName":{"name":"revert","nativeSrc":"120:6:87","nodeType":"YulIdentifier","src":"120:6:87"},"nativeSrc":"120:15:87","nodeType":"YulFunctionCall","src":"120:15:87"},"nativeSrc":"120:15:87","nodeType":"YulExpressionStatement","src":"120:15:87"}]},"name":"panic_error_0x41","nativeSrc":"14:127:87","nodeType":"YulFunctionDefinition","src":"14:127:87"},{"body":{"nativeSrc":"210:659:87","nodeType":"YulBlock","src":"210:659:87","statements":[{"body":{"nativeSrc":"259:16:87","nodeType":"YulBlock","src":"259:16:87","statements":[{"expression":{"arguments":[{"kind":"number","nativeSrc":"268:1:87","nodeType":"YulLiteral","src":"268:1:87","type":"","value":"0"},{"kind":"number","nativeSrc":"271:1:87","nodeType":"YulLiteral","src":"271:1:87","type":"","value":"0"}],"functionName":{"name":"revert","nativeSrc":"261:6:87","nodeType":"YulIdentifier","src":"261:6:87"},"nativeSrc":"261:12:87","nodeType":"YulFunctionCall","src":"261:12:87"},"nativeSrc":"261:12:87","nodeType":"YulExpressionStatement","src":"261:12:87"}]},"condition":{"arguments":[{"arguments":[{"arguments":[{"name":"offset","nativeSrc":"238:6:87","nodeType":"YulIdentifier","src":"238:6:87"},{"kind":"number","nativeSrc":"246:4:87","nodeType":"YulLiteral","src":"246:4:87","type":"","value":"0x1f"}],"functionName":{"name":"add","nativeSrc":"234:3:87","nodeType":"YulIdentifier","src":"234:3:87"},"nativeSrc":"234:17:87","nodeType":"YulFunctionCall","src":"234:17:87"},{"name":"end","nativeSrc":"253:3:87","nodeType":"YulIdentifier","src":"253:3:87"}],"functionName":{"name":"slt","nativeSrc":"230:3:87","nodeType":"YulIdentifier","src":"230:3:87"},"nativeSrc":"230:27:87","nodeType":"YulFunctionCall","src":"230:27:87"}],"functionName":{"name":"iszero","nativeSrc":"223:6:87","nodeType":"YulIdentifier","src":"223:6:87"},"nativeSrc":"223:35:87","nodeType":"YulFunctionCall","src":"223:35:87"},"nativeSrc":"220:55:87","nodeType":"YulIf","src":"220:55:87"},{"nativeSrc":"284:27:87","nodeType":"YulVariableDeclaration","src":"284:27:87","value":{"arguments":[{"name":"offset","nativeSrc":"304:6:87","nodeType":"YulIdentifier","src":"304:6:87"}],"functionName":{"name":"mload","nativeSrc":"298:5:87","nodeType":"YulIdentifier","src":"298:5:87"},"nativeSrc":"298:13:87","nodeType":"YulFunctionCall","src":"298:13:87"},"variables":[{"name":"length","nativeSrc":"288:6:87","nodeType":"YulTypedName","src":"288:6:87","type":""}]},{"body":{"nativeSrc":"354:22:87","nodeType":"YulBlock","src":"354:22:87","statements":[{"expression":{"arguments":[],"functionName":{"name":"panic_error_0x41","nativeSrc":"356:16:87","nodeType":"YulIdentifier","src":"356:16:87"},"nativeSrc":"356:18:87","nodeType":"YulFunctionCall","src":"356:18:87"},"nativeSrc":"356:18:87","nodeType":"YulExpressionStatement","src":"356:18:87"}]},"condition":{"arguments":[{"name":"length","nativeSrc":"326:6:87","nodeType":"YulIdentifier","src":"326:6:87"},{"arguments":[{"arguments":[{"kind":"number","nativeSrc":"342:2:87","nodeType":"YulLiteral","src":"342:2:87","type":"","value":"64"},{"kind":"number","nativeSrc":"346:1:87","nodeType":"YulLiteral","src":"346:1:87","type":"","value":"1"}],"functionName":{"name":"shl","nativeSrc":"338:3:87","nodeType":"YulIdentifier","src":"338:3:87"},"nativeSrc":"338:10:87","nodeType":"YulFunctionCall","src":"338:10:87"},{"kind":"number","nativeSrc":"350:1:87","nodeType":"YulLiteral","src":"350:1:87","type":"","value":"1"}],"functionName":{"name":"sub","nativeSrc":"334:3:87","nodeType":"YulIdentifier","src":"334:3:87"},"nativeSrc":"334:18:87","nodeType":"YulFunctionCall","src":"334:18:87"}],"functionName":{"name":"gt","nativeSrc":"323:2:87","nodeType":"YulIdentifier","src":"323:2:87"},"nativeSrc":"323:30:87","nodeType":"YulFunctionCall","src":"323:30:87"},"nativeSrc":"320:56:87","nodeType":"YulIf","src":"320:56:87"},{"nativeSrc":"385:23:87","nodeType":"YulVariableDeclaration","src":"385:23:87","value":{"arguments":[{"kind":"number","nativeSrc":"405:2:87","nodeType":"YulLiteral","src":"405:2:87","type":"","value":"64"}],"functionName":{"name":"mload","nativeSrc":"399:5:87","nodeType":"YulIdentifier","src":"399:5:87"},"nativeSrc":"399:9:87","nodeType":"YulFunctionCall","src":"399:9:87"},"variables":[{"name":"memPtr","nativeSrc":"389:6:87","nodeType":"YulTypedName","src":"389:6:87","type":""}]},{"nativeSrc":"417:85:87","nodeType":"YulVariableDeclaration","src":"417:85:87","value":{"arguments":[{"name":"memPtr","nativeSrc":"439:6:87","nodeType":"YulIdentifier","src":"439:6:87"},{"arguments":[{"arguments":[{"arguments":[{"arguments":[{"name":"length","nativeSrc":"463:6:87","nodeType":"YulIdentifier","src":"463:6:87"},{"kind":"number","nativeSrc":"471:4:87","nodeType":"YulLiteral","src":"471:4:87","type":"","value":"0x1f"}],"functionName":{"name":"add","nativeSrc":"459:3:87","nodeType":"YulIdentifier","src":"459:3:87"},"nativeSrc":"459:17:87","nodeType":"YulFunctionCall","src":"459:17:87"},{"arguments":[{"kind":"number","nativeSrc":"482:2:87","nodeType":"YulLiteral","src":"482:2:87","type":"","value":"31"}],"functionName":{"name":"not","nativeSrc":"478:3:87","nodeType":"YulIdentifier","src":"478:3:87"},"nativeSrc":"478:7:87","nodeType":"YulFunctionCall","src":"478:7:87"}],"functionName":{"name":"and","nativeSrc":"455:3:87","nodeType":"YulIdentifier","src":"455:3:87"},"nativeSrc":"455:31:87","nodeType":"YulFunctionCall","src":"455:31:87"},{"kind":"number","nativeSrc":"488:2:87","nodeType":"YulLiteral","src":"488:2:87","type":"","value":"63"}],"functionName":{"name":"add","nativeSrc":"451:3:87","nodeType":"YulIdentifier","src":"451:3:87"},"nativeSrc":"451:40:87","nodeType":"YulFunctionCall","src":"451:40:87"},{"arguments":[{"kind":"number","nativeSrc":"497:2:87","nodeType":"YulLiteral","src":"497:2:87","type":"","value":"31"}],"functionName":{"name":"not","nativeSrc":"493:3:87","nodeType":"YulIdentifier","src":"493:3:87"},"nativeSrc":"493:7:87","nodeType":"YulFunctionCall","src":"493:7:87"}],"functionName":{"name":"and","nativeSrc":"447:3:87","nodeType":"YulIdentifier","src":"447:3:87"},"nativeSrc":"447:54:87","nodeType":"YulFunctionCall","src":"447:54:87"}],"functionName":{"name":"add","nativeSrc":"435:3:87","nodeType":"YulIdentifier","src":"435:3:87"},"nativeSrc":"435:67:87","nodeType":"YulFunctionCall","src":"435:67:87"},"variables":[{"name":"newFreePtr","nativeSrc":"421:10:87","nodeType":"YulTypedName","src":"421:10:87","type":""}]},{"body":{"nativeSrc":"577:22:87","nodeType":"YulBlock","src":"577:22:87","statements":[{"expression":{"arguments":[],"functionName":{"name":"panic_error_0x41","nativeSrc":"579:16:87","nodeType":"YulIdentifier","src":"579:16:87"},"nativeSrc":"579:18:87","nodeType":"YulFunctionCall","src":"579:18:87"},"nativeSrc":"579:18:87","nodeType":"YulExpressionStatement","src":"579:18:87"}]},"condition":{"arguments":[{"arguments":[{"name":"newFreePtr","nativeSrc":"520:10:87","nodeType":"YulIdentifier","src":"520:10:87"},{"arguments":[{"arguments":[{"kind":"number","nativeSrc":"540:2:87","nodeType":"YulLiteral","src":"540:2:87","type":"","value":"64"},{"kind":"number","nativeSrc":"544:1:87","nodeType":"YulLiteral","src":"544:1:87","type":"","value":"1"}],"functionName":{"name":"shl","nativeSrc":"536:3:87","nodeType":"YulIdentifier","src":"536:3:87"},"nativeSrc":"536:10:87","nodeType":"YulFunctionCall","src":"536:10:87"},{"kind":"number","nativeSrc":"548:1:87","nodeType":"YulLiteral","src":"548:1:87","type":"","value":"1"}],"functionName":{"name":"sub","nativeSrc":"532:3:87","nodeType":"YulIdentifier","src":"532:3:87"},"nativeSrc":"532:18:87","nodeType":"YulFunctionCall","src":"532:18:87"}],"functionName":{"name":"gt","nativeSrc":"517:2:87","nodeType":"YulIdentifier","src":"517:2:87"},"nativeSrc":"517:34:87","nodeType":"YulFunctionCall","src":"517:34:87"},{"arguments":[{"name":"newFreePtr","nativeSrc":"556:10:87","nodeType":"YulIdentifier","src":"556:10:87"},{"name":"memPtr","nativeSrc":"568:6:87","nodeType":"YulIdentifier","src":"568:6:87"}],"functionName":{"name":"lt","nativeSrc":"553:2:87","nodeType":"YulIdentifier","src":"553:2:87"},"nativeSrc":"553:22:87","nodeType":"YulFunctionCall","src":"553:22:87"}],"functionName":{"name":"or","nativeSrc":"514:2:87","nodeType":"YulIdentifier","src":"514:2:87"},"nativeSrc":"514:62:87","nodeType":"YulFunctionCall","src":"514:62:87"},"nativeSrc":"511:88:87","nodeType":"YulIf","src":"511:88:87"},{"expression":{"arguments":[{"kind":"number","nativeSrc":"615:2:87","nodeType":"YulLiteral","src":"615:2:87","type":"","value":"64"},{"name":"newFreePtr","nativeSrc":"619:10:87","nodeType":"YulIdentifier","src":"619:10:87"}],"functionName":{"name":"mstore","nativeSrc":"608:6:87","nodeType":"YulIdentifier","src":"608:6:87"},"nativeSrc":"608:22:87","nodeType":"YulFunctionCall","src":"608:22:87"},"nativeSrc":"608:22:87","nodeType":"YulExpressionStatement","src":"608:22:87"},{"expression":{"arguments":[{"name":"memPtr","nativeSrc":"646:6:87","nodeType":"YulIdentifier","src":"646:6:87"},{"name":"length","nativeSrc":"654:6:87","nodeType":"YulIdentifier","src":"654:6:87"}],"functionName":{"name":"mstore","nativeSrc":"639:6:87","nodeType":"YulIdentifier","src":"639:6:87"},"nativeSrc":"639:22:87","nodeType":"YulFunctionCall","src":"639:22:87"},"nativeSrc":"639:22:87","nodeType":"YulExpressionStatement","src":"639:22:87"},{"body":{"nativeSrc":"713:16:87","nodeType":"YulBlock","src":"713:16:87","statements":[{"expression":{"arguments":[{"kind":"number","nativeSrc":"722:1:87","nodeType":"YulLiteral","src":"722:1:87","type":"","value":"0"},{"kind":"number","nativeSrc":"725:1:87","nodeType":"YulLiteral","src":"725:1:87","type":"","value":"0"}],"functionName":{"name":"revert","nativeSrc":"715:6:87","nodeType":"YulIdentifier","src":"715:6:87"},"nativeSrc":"715:12:87","nodeType":"YulFunctionCall","src":"715:12:87"},"nativeSrc":"715:12:87","nodeType":"YulExpressionStatement","src":"715:12:87"}]},"condition":{"arguments":[{"arguments":[{"arguments":[{"name":"offset","nativeSrc":"684:6:87","nodeType":"YulIdentifier","src":"684:6:87"},{"name":"length","nativeSrc":"692:6:87","nodeType":"YulIdentifier","src":"692:6:87"}],"functionName":{"name":"add","nativeSrc":"680:3:87","nodeType":"YulIdentifier","src":"680:3:87"},"nativeSrc":"680:19:87","nodeType":"YulFunctionCall","src":"680:19:87"},{"kind":"number","nativeSrc":"701:4:87","nodeType":"YulLiteral","src":"701:4:87","type":"","value":"0x20"}],"functionName":{"name":"add","nativeSrc":"676:3:87","nodeType":"YulIdentifier","src":"676:3:87"},"nativeSrc":"676:30:87","nodeType":"YulFunctionCall","src":"676:30:87"},{"name":"end","nativeSrc":"708:3:87","nodeType":"YulIdentifier","src":"708:3:87"}],"functionName":{"name":"gt","nativeSrc":"673:2:87","nodeType":"YulIdentifier","src":"673:2:87"},"nativeSrc":"673:39:87","nodeType":"YulFunctionCall","src":"673:39:87"},"nativeSrc":"670:59:87","nodeType":"YulIf","src":"670:59:87"},{"expression":{"arguments":[{"arguments":[{"name":"memPtr","nativeSrc":"748:6:87","nodeType":"YulIdentifier","src":"748:6:87"},{"kind":"number","nativeSrc":"756:4:87","nodeType":"YulLiteral","src":"756:4:87","type":"","value":"0x20"}],"functionName":{"name":"add","nativeSrc":"744:3:87","nodeType":"YulIdentifier","src":"744:3:87"},"nativeSrc":"744:17:87","nodeType":"YulFunctionCall","src":"744:17:87"},{"arguments":[{"name":"offset","nativeSrc":"767:6:87","nodeType":"YulIdentifier","src":"767:6:87"},{"kind":"number","nativeSrc":"775:4:87","nodeType":"YulLiteral","src":"775:4:87","type":"","value":"0x20"}],"functionName":{"name":"add","nativeSrc":"763:3:87","nodeType":"YulIdentifier","src":"763:3:87"},"nativeSrc":"763:17:87","nodeType":"YulFunctionCall","src":"763:17:87"},{"name":"length","nativeSrc":"782:6:87","nodeType":"YulIdentifier","src":"782:6:87"}],"functionName":{"name":"mcopy","nativeSrc":"738:5:87","nodeType":"YulIdentifier","src":"738:5:87"},"nativeSrc":"738:51:87","nodeType":"YulFunctionCall","src":"738:51:87"},"nativeSrc":"738:51:87","nodeType":"YulExpressionStatement","src":"738:51:87"},{"expression":{"arguments":[{"arguments":[{"arguments":[{"name":"memPtr","nativeSrc":"813:6:87","nodeType":"YulIdentifier","src":"813:6:87"},{"name":"length","nativeSrc":"821:6:87","nodeType":"YulIdentifier","src":"821:6:87"}],"functionName":{"name":"add","nativeSrc":"809:3:87","nodeType":"YulIdentifier","src":"809:3:87"},"nativeSrc":"809:19:87","nodeType":"YulFunctionCall","src":"809:19:87"},{"kind":"number","nativeSrc":"830:4:87","nodeType":"YulLiteral","src":"830:4:87","type":"","value":"0x20"}],"functionName":{"name":"add","nativeSrc":"805:3:87","nodeType":"YulIdentifier","src":"805:3:87"},"nativeSrc":"805:30:87","nodeType":"YulFunctionCall","src":"805:30:87"},{"kind":"number","nativeSrc":"837:1:87","nodeType":"YulLiteral","src":"837:1:87","type":"","value":"0"}],"functionName":{"name":"mstore","nativeSrc":"798:6:87","nodeType":"YulIdentifier","src":"798:6:87"},"nativeSrc":"798:41:87","nodeType":"YulFunctionCall","src":"798:41:87"},"nativeSrc":"798:41:87","nodeType":"YulExpressionStatement","src":"798:41:87"},{"nativeSrc":"848:15:87","nodeType":"YulAssignment","src":"848:15:87","value":{"name":"memPtr","nativeSrc":"857:6:87","nodeType":"YulIdentifier","src":"857:6:87"},"variableNames":[{"name":"array","nativeSrc":"848:5:87","nodeType":"YulIdentifier","src":"848:5:87"}]}]},"name":"abi_decode_string_fromMemory","nativeSrc":"146:723:87","nodeType":"YulFunctionDefinition","parameters":[{"name":"offset","nativeSrc":"184:6:87","nodeType":"YulTypedName","src":"184:6:87","type":""},{"name":"end","nativeSrc":"192:3:87","nodeType":"YulTypedName","src":"192:3:87","type":""}],"returnVariables":[{"name":"array","nativeSrc":"200:5:87","nodeType":"YulTypedName","src":"200:5:87","type":""}],"src":"146:723:87"},{"body":{"nativeSrc":"1032:589:87","nodeType":"YulBlock","src":"1032:589:87","statements":[{"body":{"nativeSrc":"1078:16:87","nodeType":"YulBlock","src":"1078:16:87","statements":[{"expression":{"arguments":[{"kind":"number","nativeSrc":"1087:1:87","nodeType":"YulLiteral","src":"1087:1:87","type":"","value":"0"},{"kind":"number","nativeSrc":"1090:1:87","nodeType":"YulLiteral","src":"1090:1:87","type":"","value":"0"}],"functionName":{"name":"revert","nativeSrc":"1080:6:87","nodeType":"YulIdentifier","src":"1080:6:87"},"nativeSrc":"1080:12:87","nodeType":"YulFunctionCall","src":"1080:12:87"},"nativeSrc":"1080:12:87","nodeType":"YulExpressionStatement","src":"1080:12:87"}]},"condition":{"arguments":[{"arguments":[{"name":"dataEnd","nativeSrc":"1053:7:87","nodeType":"YulIdentifier","src":"1053:7:87"},{"name":"headStart","nativeSrc":"1062:9:87","nodeType":"YulIdentifier","src":"1062:9:87"}],"functionName":{"name":"sub","nativeSrc":"1049:3:87","nodeType":"YulIdentifier","src":"1049:3:87"},"nativeSrc":"1049:23:87","nodeType":"YulFunctionCall","src":"1049:23:87"},{"kind":"number","nativeSrc":"1074:2:87","nodeType":"YulLiteral","src":"1074:2:87","type":"","value":"96"}],"functionName":{"name":"slt","nativeSrc":"1045:3:87","nodeType":"YulIdentifier","src":"1045:3:87"},"nativeSrc":"1045:32:87","nodeType":"YulFunctionCall","src":"1045:32:87"},"nativeSrc":"1042:52:87","nodeType":"YulIf","src":"1042:52:87"},{"nativeSrc":"1103:30:87","nodeType":"YulVariableDeclaration","src":"1103:30:87","value":{"arguments":[{"name":"headStart","nativeSrc":"1123:9:87","nodeType":"YulIdentifier","src":"1123:9:87"}],"functionName":{"name":"mload","nativeSrc":"1117:5:87","nodeType":"YulIdentifier","src":"1117:5:87"},"nativeSrc":"1117:16:87","nodeType":"YulFunctionCall","src":"1117:16:87"},"variables":[{"name":"offset","nativeSrc":"1107:6:87","nodeType":"YulTypedName","src":"1107:6:87","type":""}]},{"body":{"nativeSrc":"1176:16:87","nodeType":"YulBlock","src":"1176:16:87","statements":[{"expression":{"arguments":[{"kind":"number","nativeSrc":"1185:1:87","nodeType":"YulLiteral","src":"1185:1:87","type":"","value":"0"},{"kind":"number","nativeSrc":"1188:1:87","nodeType":"YulLiteral","src":"1188:1:87","type":"","value":"0"}],"functionName":{"name":"revert","nativeSrc":"1178:6:87","nodeType":"YulIdentifier","src":"1178:6:87"},"nativeSrc":"1178:12:87","nodeType":"YulFunctionCall","src":"1178:12:87"},"nativeSrc":"1178:12:87","nodeType":"YulExpressionStatement","src":"1178:12:87"}]},"condition":{"arguments":[{"name":"offset","nativeSrc":"1148:6:87","nodeType":"YulIdentifier","src":"1148:6:87"},{"arguments":[{"arguments":[{"kind":"number","nativeSrc":"1164:2:87","nodeType":"YulLiteral","src":"1164:2:87","type":"","value":"64"},{"kind":"number","nativeSrc":"1168:1:87","nodeType":"YulLiteral","src":"1168:1:87","type":"","value":"1"}],"functionName":{"name":"shl","nativeSrc":"1160:3:87","nodeType":"YulIdentifier","src":"1160:3:87"},"nativeSrc":"1160:10:87","nodeType":"YulFunctionCall","src":"1160:10:87"},{"kind":"number","nativeSrc":"1172:1:87","nodeType":"YulLiteral","src":"1172:1:87","type":"","value":"1"}],"functionName":{"name":"sub","nativeSrc":"1156:3:87","nodeType":"YulIdentifier","src":"1156:3:87"},"nativeSrc":"1156:18:87","nodeType":"YulFunctionCall","src":"1156:18:87"}],"functionName":{"name":"gt","nativeSrc":"1145:2:87","nodeType":"YulIdentifier","src":"1145:2:87"},"nativeSrc":"1145:30:87","nodeType":"YulFunctionCall","src":"1145:30:87"},"nativeSrc":"1142:50:87","nodeType":"YulIf","src":"1142:50:87"},{"nativeSrc":"1201:71:87","nodeType":"YulAssignment","src":"1201:71:87","value":{"arguments":[{"arguments":[{"name":"headStart","nativeSrc":"1244:9:87","nodeType":"YulIdentifier","src":"1244:9:87"},{"name":"offset","nativeSrc":"1255:6:87","nodeType":"YulIdentifier","src":"1255:6:87"}],"functionName":{"name":"add","nativeSrc":"1240:3:87","nodeType":"YulIdentifier","src":"1240:3:87"},"nativeSrc":"1240:22:87","nodeType":"YulFunctionCall","src":"1240:22:87"},{"name":"dataEnd","nativeSrc":"1264:7:87","nodeType":"YulIdentifier","src":"1264:7:87"}],"functionName":{"name":"abi_decode_string_fromMemory","nativeSrc":"1211:28:87","nodeType":"YulIdentifier","src":"1211:28:87"},"nativeSrc":"1211:61:87","nodeType":"YulFunctionCall","src":"1211:61:87"},"variableNames":[{"name":"value0","nativeSrc":"1201:6:87","nodeType":"YulIdentifier","src":"1201:6:87"}]},{"nativeSrc":"1281:41:87","nodeType":"YulVariableDeclaration","src":"1281:41:87","value":{"arguments":[{"arguments":[{"name":"headStart","nativeSrc":"1307:9:87","nodeType":"YulIdentifier","src":"1307:9:87"},{"kind":"number","nativeSrc":"1318:2:87","nodeType":"YulLiteral","src":"1318:2:87","type":"","value":"32"}],"functionName":{"name":"add","nativeSrc":"1303:3:87","nodeType":"YulIdentifier","src":"1303:3:87"},"nativeSrc":"1303:18:87","nodeType":"YulFunctionCall","src":"1303:18:87"}],"functionName":{"name":"mload","nativeSrc":"1297:5:87","nodeType":"YulIdentifier","src":"1297:5:87"},"nativeSrc":"1297:25:87","nodeType":"YulFunctionCall","src":"1297:25:87"},"variables":[{"name":"offset_1","nativeSrc":"1285:8:87","nodeType":"YulTypedName","src":"1285:8:87","type":""}]},{"body":{"nativeSrc":"1367:16:87","nodeType":"YulBlock","src":"1367:16:87","statements":[{"expression":{"arguments":[{"kind":"number","nativeSrc":"1376:1:87","nodeType":"YulLiteral","src":"1376:1:87","type":"","value":"0"},{"kind":"number","nativeSrc":"1379:1:87","nodeType":"YulLiteral","src":"1379:1:87","type":"","value":"0"}],"functionName":{"name":"revert","nativeSrc":"1369:6:87","nodeType":"YulIdentifier","src":"1369:6:87"},"nativeSrc":"1369:12:87","nodeType":"YulFunctionCall","src":"1369:12:87"},"nativeSrc":"1369:12:87","nodeType":"YulExpressionStatement","src":"1369:12:87"}]},"condition":{"arguments":[{"name":"offset_1","nativeSrc":"1337:8:87","nodeType":"YulIdentifier","src":"1337:8:87"},{"arguments":[{"arguments":[{"kind":"number","nativeSrc":"1355:2:87","nodeType":"YulLiteral","src":"1355:2:87","type":"","value":"64"},{"kind":"number","nativeSrc":"1359:1:87","nodeType":"YulLiteral","src":"1359:1:87","type":"","value":"1"}],"functionName":{"name":"shl","nativeSrc":"1351:3:87","nodeType":"YulIdentifier","src":"1351:3:87"},"nativeSrc":"1351:10:87","nodeType":"YulFunctionCall","src":"1351:10:87"},{"kind":"number","nativeSrc":"1363:1:87","nodeType":"YulLiteral","src":"1363:1:87","type":"","value":"1"}],"functionName":{"name":"sub","nativeSrc":"1347:3:87","nodeType":"YulIdentifier","src":"1347:3:87"},"nativeSrc":"1347:18:87","nodeType":"YulFunctionCall","src":"1347:18:87"}],"functionName":{"name":"gt","nativeSrc":"1334:2:87","nodeType":"YulIdentifier","src":"1334:2:87"},"nativeSrc":"1334:32:87","nodeType":"YulFunctionCall","src":"1334:32:87"},"nativeSrc":"1331:52:87","nodeType":"YulIf","src":"1331:52:87"},{"nativeSrc":"1392:73:87","nodeType":"YulAssignment","src":"1392:73:87","value":{"arguments":[{"arguments":[{"name":"headStart","nativeSrc":"1435:9:87","nodeType":"YulIdentifier","src":"1435:9:87"},{"name":"offset_1","nativeSrc":"1446:8:87","nodeType":"YulIdentifier","src":"1446:8:87"}],"functionName":{"name":"add","nativeSrc":"1431:3:87","nodeType":"YulIdentifier","src":"1431:3:87"},"nativeSrc":"1431:24:87","nodeType":"YulFunctionCall","src":"1431:24:87"},{"name":"dataEnd","nativeSrc":"1457:7:87","nodeType":"YulIdentifier","src":"1457:7:87"}],"functionName":{"name":"abi_decode_string_fromMemory","nativeSrc":"1402:28:87","nodeType":"YulIdentifier","src":"1402:28:87"},"nativeSrc":"1402:63:87","nodeType":"YulFunctionCall","src":"1402:63:87"},"variableNames":[{"name":"value1","nativeSrc":"1392:6:87","nodeType":"YulIdentifier","src":"1392:6:87"}]},{"nativeSrc":"1474:38:87","nodeType":"YulVariableDeclaration","src":"1474:38:87","value":{"arguments":[{"arguments":[{"name":"headStart","nativeSrc":"1497:9:87","nodeType":"YulIdentifier","src":"1497:9:87"},{"kind":"number","nativeSrc":"1508:2:87","nodeType":"YulLiteral","src":"1508:2:87","type":"","value":"64"}],"functionName":{"name":"add","nativeSrc":"1493:3:87","nodeType":"YulIdentifier","src":"1493:3:87"},"nativeSrc":"1493:18:87","nodeType":"YulFunctionCall","src":"1493:18:87"}],"functionName":{"name":"mload","nativeSrc":"1487:5:87","nodeType":"YulIdentifier","src":"1487:5:87"},"nativeSrc":"1487:25:87","nodeType":"YulFunctionCall","src":"1487:25:87"},"variables":[{"name":"value","nativeSrc":"1478:5:87","nodeType":"YulTypedName","src":"1478:5:87","type":""}]},{"body":{"nativeSrc":"1575:16:87","nodeType":"YulBlock","src":"1575:16:87","statements":[{"expression":{"arguments":[{"kind":"number","nativeSrc":"1584:1:87","nodeType":"YulLiteral","src":"1584:1:87","type":"","value":"0"},{"kind":"number","nativeSrc":"1587:1:87","nodeType":"YulLiteral","src":"1587:1:87","type":"","value":"0"}],"functionName":{"name":"revert","nativeSrc":"1577:6:87","nodeType":"YulIdentifier","src":"1577:6:87"},"nativeSrc":"1577:12:87","nodeType":"YulFunctionCall","src":"1577:12:87"},"nativeSrc":"1577:12:87","nodeType":"YulExpressionStatement","src":"1577:12:87"}]},"condition":{"arguments":[{"arguments":[{"name":"value","nativeSrc":"1534:5:87","nodeType":"YulIdentifier","src":"1534:5:87"},{"arguments":[{"name":"value","nativeSrc":"1545:5:87","nodeType":"YulIdentifier","src":"1545:5:87"},{"arguments":[{"arguments":[{"kind":"number","nativeSrc":"1560:3:87","nodeType":"YulLiteral","src":"1560:3:87","type":"","value":"160"},{"kind":"number","nativeSrc":"1565:1:87","nodeType":"YulLiteral","src":"1565:1:87","type":"","value":"1"}],"functionName":{"name":"shl","nativeSrc":"1556:3:87","nodeType":"YulIdentifier","src":"1556:3:87"},"nativeSrc":"1556:11:87","nodeType":"YulFunctionCall","src":"1556:11:87"},{"kind":"number","nativeSrc":"1569:1:87","nodeType":"YulLiteral","src":"1569:1:87","type":"","value":"1"}],"functionName":{"name":"sub","nativeSrc":"1552:3:87","nodeType":"YulIdentifier","src":"1552:3:87"},"nativeSrc":"1552:19:87","nodeType":"YulFunctionCall","src":"1552:19:87"}],"functionName":{"name":"and","nativeSrc":"1541:3:87","nodeType":"YulIdentifier","src":"1541:3:87"},"nativeSrc":"1541:31:87","nodeType":"YulFunctionCall","src":"1541:31:87"}],"functionName":{"name":"eq","nativeSrc":"1531:2:87","nodeType":"YulIdentifier","src":"1531:2:87"},"nativeSrc":"1531:42:87","nodeType":"YulFunctionCall","src":"1531:42:87"}],"functionName":{"name":"iszero","nativeSrc":"1524:6:87","nodeType":"YulIdentifier","src":"1524:6:87"},"nativeSrc":"1524:50:87","nodeType":"YulFunctionCall","src":"1524:50:87"},"nativeSrc":"1521:70:87","nodeType":"YulIf","src":"1521:70:87"},{"nativeSrc":"1600:15:87","nodeType":"YulAssignment","src":"1600:15:87","value":{"name":"value","nativeSrc":"1610:5:87","nodeType":"YulIdentifier","src":"1610:5:87"},"variableNames":[{"name":"value2","nativeSrc":"1600:6:87","nodeType":"YulIdentifier","src":"1600:6:87"}]}]},"name":"abi_decode_tuple_t_string_memory_ptrt_string_memory_ptrt_contract$_IERC20Metadata_$9411_fromMemory","nativeSrc":"874:747:87","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nativeSrc":"982:9:87","nodeType":"YulTypedName","src":"982:9:87","type":""},{"name":"dataEnd","nativeSrc":"993:7:87","nodeType":"YulTypedName","src":"993:7:87","type":""}],"returnVariables":[{"name":"value0","nativeSrc":"1005:6:87","nodeType":"YulTypedName","src":"1005:6:87","type":""},{"name":"value1","nativeSrc":"1013:6:87","nodeType":"YulTypedName","src":"1013:6:87","type":""},{"name":"value2","nativeSrc":"1021:6:87","nodeType":"YulTypedName","src":"1021:6:87","type":""}],"src":"874:747:87"},{"body":{"nativeSrc":"1681:325:87","nodeType":"YulBlock","src":"1681:325:87","statements":[{"nativeSrc":"1691:22:87","nodeType":"YulAssignment","src":"1691:22:87","value":{"arguments":[{"kind":"number","nativeSrc":"1705:1:87","nodeType":"YulLiteral","src":"1705:1:87","type":"","value":"1"},{"name":"data","nativeSrc":"1708:4:87","nodeType":"YulIdentifier","src":"1708:4:87"}],"functionName":{"name":"shr","nativeSrc":"1701:3:87","nodeType":"YulIdentifier","src":"1701:3:87"},"nativeSrc":"1701:12:87","nodeType":"YulFunctionCall","src":"1701:12:87"},"variableNames":[{"name":"length","nativeSrc":"1691:6:87","nodeType":"YulIdentifier","src":"1691:6:87"}]},{"nativeSrc":"1722:38:87","nodeType":"YulVariableDeclaration","src":"1722:38:87","value":{"arguments":[{"name":"data","nativeSrc":"1752:4:87","nodeType":"YulIdentifier","src":"1752:4:87"},{"kind":"number","nativeSrc":"1758:1:87","nodeType":"YulLiteral","src":"1758:1:87","type":"","value":"1"}],"functionName":{"name":"and","nativeSrc":"1748:3:87","nodeType":"YulIdentifier","src":"1748:3:87"},"nativeSrc":"1748:12:87","nodeType":"YulFunctionCall","src":"1748:12:87"},"variables":[{"name":"outOfPlaceEncoding","nativeSrc":"1726:18:87","nodeType":"YulTypedName","src":"1726:18:87","type":""}]},{"body":{"nativeSrc":"1799:31:87","nodeType":"YulBlock","src":"1799:31:87","statements":[{"nativeSrc":"1801:27:87","nodeType":"YulAssignment","src":"1801:27:87","value":{"arguments":[{"name":"length","nativeSrc":"1815:6:87","nodeType":"YulIdentifier","src":"1815:6:87"},{"kind":"number","nativeSrc":"1823:4:87","nodeType":"YulLiteral","src":"1823:4:87","type":"","value":"0x7f"}],"functionName":{"name":"and","nativeSrc":"1811:3:87","nodeType":"YulIdentifier","src":"1811:3:87"},"nativeSrc":"1811:17:87","nodeType":"YulFunctionCall","src":"1811:17:87"},"variableNames":[{"name":"length","nativeSrc":"1801:6:87","nodeType":"YulIdentifier","src":"1801:6:87"}]}]},"condition":{"arguments":[{"name":"outOfPlaceEncoding","nativeSrc":"1779:18:87","nodeType":"YulIdentifier","src":"1779:18:87"}],"functionName":{"name":"iszero","nativeSrc":"1772:6:87","nodeType":"YulIdentifier","src":"1772:6:87"},"nativeSrc":"1772:26:87","nodeType":"YulFunctionCall","src":"1772:26:87"},"nativeSrc":"1769:61:87","nodeType":"YulIf","src":"1769:61:87"},{"body":{"nativeSrc":"1889:111:87","nodeType":"YulBlock","src":"1889:111:87","statements":[{"expression":{"arguments":[{"kind":"number","nativeSrc":"1910:1:87","nodeType":"YulLiteral","src":"1910:1:87","type":"","value":"0"},{"arguments":[{"kind":"number","nativeSrc":"1917:3:87","nodeType":"YulLiteral","src":"1917:3:87","type":"","value":"224"},{"kind":"number","nativeSrc":"1922:10:87","nodeType":"YulLiteral","src":"1922:10:87","type":"","value":"0x4e487b71"}],"functionName":{"name":"shl","nativeSrc":"1913:3:87","nodeType":"YulIdentifier","src":"1913:3:87"},"nativeSrc":"1913:20:87","nodeType":"YulFunctionCall","src":"1913:20:87"}],"functionName":{"name":"mstore","nativeSrc":"1903:6:87","nodeType":"YulIdentifier","src":"1903:6:87"},"nativeSrc":"1903:31:87","nodeType":"YulFunctionCall","src":"1903:31:87"},"nativeSrc":"1903:31:87","nodeType":"YulExpressionStatement","src":"1903:31:87"},{"expression":{"arguments":[{"kind":"number","nativeSrc":"1954:1:87","nodeType":"YulLiteral","src":"1954:1:87","type":"","value":"4"},{"kind":"number","nativeSrc":"1957:4:87","nodeType":"YulLiteral","src":"1957:4:87","type":"","value":"0x22"}],"functionName":{"name":"mstore","nativeSrc":"1947:6:87","nodeType":"YulIdentifier","src":"1947:6:87"},"nativeSrc":"1947:15:87","nodeType":"YulFunctionCall","src":"1947:15:87"},"nativeSrc":"1947:15:87","nodeType":"YulExpressionStatement","src":"1947:15:87"},{"expression":{"arguments":[{"kind":"number","nativeSrc":"1982:1:87","nodeType":"YulLiteral","src":"1982:1:87","type":"","value":"0"},{"kind":"number","nativeSrc":"1985:4:87","nodeType":"YulLiteral","src":"1985:4:87","type":"","value":"0x24"}],"functionName":{"name":"revert","nativeSrc":"1975:6:87","nodeType":"YulIdentifier","src":"1975:6:87"},"nativeSrc":"1975:15:87","nodeType":"YulFunctionCall","src":"1975:15:87"},"nativeSrc":"1975:15:87","nodeType":"YulExpressionStatement","src":"1975:15:87"}]},"condition":{"arguments":[{"name":"outOfPlaceEncoding","nativeSrc":"1845:18:87","nodeType":"YulIdentifier","src":"1845:18:87"},{"arguments":[{"name":"length","nativeSrc":"1868:6:87","nodeType":"YulIdentifier","src":"1868:6:87"},{"kind":"number","nativeSrc":"1876:2:87","nodeType":"YulLiteral","src":"1876:2:87","type":"","value":"32"}],"functionName":{"name":"lt","nativeSrc":"1865:2:87","nodeType":"YulIdentifier","src":"1865:2:87"},"nativeSrc":"1865:14:87","nodeType":"YulFunctionCall","src":"1865:14:87"}],"functionName":{"name":"eq","nativeSrc":"1842:2:87","nodeType":"YulIdentifier","src":"1842:2:87"},"nativeSrc":"1842:38:87","nodeType":"YulFunctionCall","src":"1842:38:87"},"nativeSrc":"1839:161:87","nodeType":"YulIf","src":"1839:161:87"}]},"name":"extract_byte_array_length","nativeSrc":"1626:380:87","nodeType":"YulFunctionDefinition","parameters":[{"name":"data","nativeSrc":"1661:4:87","nodeType":"YulTypedName","src":"1661:4:87","type":""}],"returnVariables":[{"name":"length","nativeSrc":"1670:6:87","nodeType":"YulTypedName","src":"1670:6:87","type":""}],"src":"1626:380:87"},{"body":{"nativeSrc":"2067:65:87","nodeType":"YulBlock","src":"2067:65:87","statements":[{"expression":{"arguments":[{"kind":"number","nativeSrc":"2084:1:87","nodeType":"YulLiteral","src":"2084:1:87","type":"","value":"0"},{"name":"ptr","nativeSrc":"2087:3:87","nodeType":"YulIdentifier","src":"2087:3:87"}],"functionName":{"name":"mstore","nativeSrc":"2077:6:87","nodeType":"YulIdentifier","src":"2077:6:87"},"nativeSrc":"2077:14:87","nodeType":"YulFunctionCall","src":"2077:14:87"},"nativeSrc":"2077:14:87","nodeType":"YulExpressionStatement","src":"2077:14:87"},{"nativeSrc":"2100:26:87","nodeType":"YulAssignment","src":"2100:26:87","value":{"arguments":[{"kind":"number","nativeSrc":"2118:1:87","nodeType":"YulLiteral","src":"2118:1:87","type":"","value":"0"},{"kind":"number","nativeSrc":"2121:4:87","nodeType":"YulLiteral","src":"2121:4:87","type":"","value":"0x20"}],"functionName":{"name":"keccak256","nativeSrc":"2108:9:87","nodeType":"YulIdentifier","src":"2108:9:87"},"nativeSrc":"2108:18:87","nodeType":"YulFunctionCall","src":"2108:18:87"},"variableNames":[{"name":"data","nativeSrc":"2100:4:87","nodeType":"YulIdentifier","src":"2100:4:87"}]}]},"name":"array_dataslot_string_storage","nativeSrc":"2011:121:87","nodeType":"YulFunctionDefinition","parameters":[{"name":"ptr","nativeSrc":"2050:3:87","nodeType":"YulTypedName","src":"2050:3:87","type":""}],"returnVariables":[{"name":"data","nativeSrc":"2058:4:87","nodeType":"YulTypedName","src":"2058:4:87","type":""}],"src":"2011:121:87"},{"body":{"nativeSrc":"2218:437:87","nodeType":"YulBlock","src":"2218:437:87","statements":[{"body":{"nativeSrc":"2251:398:87","nodeType":"YulBlock","src":"2251:398:87","statements":[{"expression":{"arguments":[{"kind":"number","nativeSrc":"2272:1:87","nodeType":"YulLiteral","src":"2272:1:87","type":"","value":"0"},{"name":"array","nativeSrc":"2275:5:87","nodeType":"YulIdentifier","src":"2275:5:87"}],"functionName":{"name":"mstore","nativeSrc":"2265:6:87","nodeType":"YulIdentifier","src":"2265:6:87"},"nativeSrc":"2265:16:87","nodeType":"YulFunctionCall","src":"2265:16:87"},"nativeSrc":"2265:16:87","nodeType":"YulExpressionStatement","src":"2265:16:87"},{"nativeSrc":"2294:30:87","nodeType":"YulVariableDeclaration","src":"2294:30:87","value":{"arguments":[{"kind":"number","nativeSrc":"2316:1:87","nodeType":"YulLiteral","src":"2316:1:87","type":"","value":"0"},{"kind":"number","nativeSrc":"2319:4:87","nodeType":"YulLiteral","src":"2319:4:87","type":"","value":"0x20"}],"functionName":{"name":"keccak256","nativeSrc":"2306:9:87","nodeType":"YulIdentifier","src":"2306:9:87"},"nativeSrc":"2306:18:87","nodeType":"YulFunctionCall","src":"2306:18:87"},"variables":[{"name":"data","nativeSrc":"2298:4:87","nodeType":"YulTypedName","src":"2298:4:87","type":""}]},{"nativeSrc":"2337:57:87","nodeType":"YulVariableDeclaration","src":"2337:57:87","value":{"arguments":[{"name":"data","nativeSrc":"2360:4:87","nodeType":"YulIdentifier","src":"2360:4:87"},{"arguments":[{"kind":"number","nativeSrc":"2370:1:87","nodeType":"YulLiteral","src":"2370:1:87","type":"","value":"5"},{"arguments":[{"name":"startIndex","nativeSrc":"2377:10:87","nodeType":"YulIdentifier","src":"2377:10:87"},{"kind":"number","nativeSrc":"2389:2:87","nodeType":"YulLiteral","src":"2389:2:87","type":"","value":"31"}],"functionName":{"name":"add","nativeSrc":"2373:3:87","nodeType":"YulIdentifier","src":"2373:3:87"},"nativeSrc":"2373:19:87","nodeType":"YulFunctionCall","src":"2373:19:87"}],"functionName":{"name":"shr","nativeSrc":"2366:3:87","nodeType":"YulIdentifier","src":"2366:3:87"},"nativeSrc":"2366:27:87","nodeType":"YulFunctionCall","src":"2366:27:87"}],"functionName":{"name":"add","nativeSrc":"2356:3:87","nodeType":"YulIdentifier","src":"2356:3:87"},"nativeSrc":"2356:38:87","nodeType":"YulFunctionCall","src":"2356:38:87"},"variables":[{"name":"deleteStart","nativeSrc":"2341:11:87","nodeType":"YulTypedName","src":"2341:11:87","type":""}]},{"body":{"nativeSrc":"2431:23:87","nodeType":"YulBlock","src":"2431:23:87","statements":[{"nativeSrc":"2433:19:87","nodeType":"YulAssignment","src":"2433:19:87","value":{"name":"data","nativeSrc":"2448:4:87","nodeType":"YulIdentifier","src":"2448:4:87"},"variableNames":[{"name":"deleteStart","nativeSrc":"2433:11:87","nodeType":"YulIdentifier","src":"2433:11:87"}]}]},"condition":{"arguments":[{"name":"startIndex","nativeSrc":"2413:10:87","nodeType":"YulIdentifier","src":"2413:10:87"},{"kind":"number","nativeSrc":"2425:4:87","nodeType":"YulLiteral","src":"2425:4:87","type":"","value":"0x20"}],"functionName":{"name":"lt","nativeSrc":"2410:2:87","nodeType":"YulIdentifier","src":"2410:2:87"},"nativeSrc":"2410:20:87","nodeType":"YulFunctionCall","src":"2410:20:87"},"nativeSrc":"2407:47:87","nodeType":"YulIf","src":"2407:47:87"},{"nativeSrc":"2467:41:87","nodeType":"YulVariableDeclaration","src":"2467:41:87","value":{"arguments":[{"name":"data","nativeSrc":"2481:4:87","nodeType":"YulIdentifier","src":"2481:4:87"},{"arguments":[{"kind":"number","nativeSrc":"2491:1:87","nodeType":"YulLiteral","src":"2491:1:87","type":"","value":"5"},{"arguments":[{"name":"len","nativeSrc":"2498:3:87","nodeType":"YulIdentifier","src":"2498:3:87"},{"kind":"number","nativeSrc":"2503:2:87","nodeType":"YulLiteral","src":"2503:2:87","type":"","value":"31"}],"functionName":{"name":"add","nativeSrc":"2494:3:87","nodeType":"YulIdentifier","src":"2494:3:87"},"nativeSrc":"2494:12:87","nodeType":"YulFunctionCall","src":"2494:12:87"}],"functionName":{"name":"shr","nativeSrc":"2487:3:87","nodeType":"YulIdentifier","src":"2487:3:87"},"nativeSrc":"2487:20:87","nodeType":"YulFunctionCall","src":"2487:20:87"}],"functionName":{"name":"add","nativeSrc":"2477:3:87","nodeType":"YulIdentifier","src":"2477:3:87"},"nativeSrc":"2477:31:87","nodeType":"YulFunctionCall","src":"2477:31:87"},"variables":[{"name":"_1","nativeSrc":"2471:2:87","nodeType":"YulTypedName","src":"2471:2:87","type":""}]},{"nativeSrc":"2521:24:87","nodeType":"YulVariableDeclaration","src":"2521:24:87","value":{"name":"deleteStart","nativeSrc":"2534:11:87","nodeType":"YulIdentifier","src":"2534:11:87"},"variables":[{"name":"start","nativeSrc":"2525:5:87","nodeType":"YulTypedName","src":"2525:5:87","type":""}]},{"body":{"nativeSrc":"2619:20:87","nodeType":"YulBlock","src":"2619:20:87","statements":[{"expression":{"arguments":[{"name":"start","nativeSrc":"2628:5:87","nodeType":"YulIdentifier","src":"2628:5:87"},{"kind":"number","nativeSrc":"2635:1:87","nodeType":"YulLiteral","src":"2635:1:87","type":"","value":"0"}],"functionName":{"name":"sstore","nativeSrc":"2621:6:87","nodeType":"YulIdentifier","src":"2621:6:87"},"nativeSrc":"2621:16:87","nodeType":"YulFunctionCall","src":"2621:16:87"},"nativeSrc":"2621:16:87","nodeType":"YulExpressionStatement","src":"2621:16:87"}]},"condition":{"arguments":[{"name":"start","nativeSrc":"2569:5:87","nodeType":"YulIdentifier","src":"2569:5:87"},{"name":"_1","nativeSrc":"2576:2:87","nodeType":"YulIdentifier","src":"2576:2:87"}],"functionName":{"name":"lt","nativeSrc":"2566:2:87","nodeType":"YulIdentifier","src":"2566:2:87"},"nativeSrc":"2566:13:87","nodeType":"YulFunctionCall","src":"2566:13:87"},"nativeSrc":"2558:81:87","nodeType":"YulForLoop","post":{"nativeSrc":"2580:26:87","nodeType":"YulBlock","src":"2580:26:87","statements":[{"nativeSrc":"2582:22:87","nodeType":"YulAssignment","src":"2582:22:87","value":{"arguments":[{"name":"start","nativeSrc":"2595:5:87","nodeType":"YulIdentifier","src":"2595:5:87"},{"kind":"number","nativeSrc":"2602:1:87","nodeType":"YulLiteral","src":"2602:1:87","type":"","value":"1"}],"functionName":{"name":"add","nativeSrc":"2591:3:87","nodeType":"YulIdentifier","src":"2591:3:87"},"nativeSrc":"2591:13:87","nodeType":"YulFunctionCall","src":"2591:13:87"},"variableNames":[{"name":"start","nativeSrc":"2582:5:87","nodeType":"YulIdentifier","src":"2582:5:87"}]}]},"pre":{"nativeSrc":"2562:3:87","nodeType":"YulBlock","src":"2562:3:87","statements":[]},"src":"2558:81:87"}]},"condition":{"arguments":[{"name":"len","nativeSrc":"2234:3:87","nodeType":"YulIdentifier","src":"2234:3:87"},{"kind":"number","nativeSrc":"2239:2:87","nodeType":"YulLiteral","src":"2239:2:87","type":"","value":"31"}],"functionName":{"name":"gt","nativeSrc":"2231:2:87","nodeType":"YulIdentifier","src":"2231:2:87"},"nativeSrc":"2231:11:87","nodeType":"YulFunctionCall","src":"2231:11:87"},"nativeSrc":"2228:421:87","nodeType":"YulIf","src":"2228:421:87"}]},"name":"clean_up_bytearray_end_slots_string_storage","nativeSrc":"2137:518:87","nodeType":"YulFunctionDefinition","parameters":[{"name":"array","nativeSrc":"2190:5:87","nodeType":"YulTypedName","src":"2190:5:87","type":""},{"name":"len","nativeSrc":"2197:3:87","nodeType":"YulTypedName","src":"2197:3:87","type":""},{"name":"startIndex","nativeSrc":"2202:10:87","nodeType":"YulTypedName","src":"2202:10:87","type":""}],"src":"2137:518:87"},{"body":{"nativeSrc":"2745:81:87","nodeType":"YulBlock","src":"2745:81:87","statements":[{"nativeSrc":"2755:65:87","nodeType":"YulAssignment","src":"2755:65:87","value":{"arguments":[{"arguments":[{"name":"data","nativeSrc":"2770:4:87","nodeType":"YulIdentifier","src":"2770:4:87"},{"arguments":[{"arguments":[{"arguments":[{"kind":"number","nativeSrc":"2788:1:87","nodeType":"YulLiteral","src":"2788:1:87","type":"","value":"3"},{"name":"len","nativeSrc":"2791:3:87","nodeType":"YulIdentifier","src":"2791:3:87"}],"functionName":{"name":"shl","nativeSrc":"2784:3:87","nodeType":"YulIdentifier","src":"2784:3:87"},"nativeSrc":"2784:11:87","nodeType":"YulFunctionCall","src":"2784:11:87"},{"arguments":[{"kind":"number","nativeSrc":"2801:1:87","nodeType":"YulLiteral","src":"2801:1:87","type":"","value":"0"}],"functionName":{"name":"not","nativeSrc":"2797:3:87","nodeType":"YulIdentifier","src":"2797:3:87"},"nativeSrc":"2797:6:87","nodeType":"YulFunctionCall","src":"2797:6:87"}],"functionName":{"name":"shr","nativeSrc":"2780:3:87","nodeType":"YulIdentifier","src":"2780:3:87"},"nativeSrc":"2780:24:87","nodeType":"YulFunctionCall","src":"2780:24:87"}],"functionName":{"name":"not","nativeSrc":"2776:3:87","nodeType":"YulIdentifier","src":"2776:3:87"},"nativeSrc":"2776:29:87","nodeType":"YulFunctionCall","src":"2776:29:87"}],"functionName":{"name":"and","nativeSrc":"2766:3:87","nodeType":"YulIdentifier","src":"2766:3:87"},"nativeSrc":"2766:40:87","nodeType":"YulFunctionCall","src":"2766:40:87"},{"arguments":[{"kind":"number","nativeSrc":"2812:1:87","nodeType":"YulLiteral","src":"2812:1:87","type":"","value":"1"},{"name":"len","nativeSrc":"2815:3:87","nodeType":"YulIdentifier","src":"2815:3:87"}],"functionName":{"name":"shl","nativeSrc":"2808:3:87","nodeType":"YulIdentifier","src":"2808:3:87"},"nativeSrc":"2808:11:87","nodeType":"YulFunctionCall","src":"2808:11:87"}],"functionName":{"name":"or","nativeSrc":"2763:2:87","nodeType":"YulIdentifier","src":"2763:2:87"},"nativeSrc":"2763:57:87","nodeType":"YulFunctionCall","src":"2763:57:87"},"variableNames":[{"name":"used","nativeSrc":"2755:4:87","nodeType":"YulIdentifier","src":"2755:4:87"}]}]},"name":"extract_used_part_and_set_length_of_short_byte_array","nativeSrc":"2660:166:87","nodeType":"YulFunctionDefinition","parameters":[{"name":"data","nativeSrc":"2722:4:87","nodeType":"YulTypedName","src":"2722:4:87","type":""},{"name":"len","nativeSrc":"2728:3:87","nodeType":"YulTypedName","src":"2728:3:87","type":""}],"returnVariables":[{"name":"used","nativeSrc":"2736:4:87","nodeType":"YulTypedName","src":"2736:4:87","type":""}],"src":"2660:166:87"},{"body":{"nativeSrc":"2927:1203:87","nodeType":"YulBlock","src":"2927:1203:87","statements":[{"nativeSrc":"2937:24:87","nodeType":"YulVariableDeclaration","src":"2937:24:87","value":{"arguments":[{"name":"src","nativeSrc":"2957:3:87","nodeType":"YulIdentifier","src":"2957:3:87"}],"functionName":{"name":"mload","nativeSrc":"2951:5:87","nodeType":"YulIdentifier","src":"2951:5:87"},"nativeSrc":"2951:10:87","nodeType":"YulFunctionCall","src":"2951:10:87"},"variables":[{"name":"newLen","nativeSrc":"2941:6:87","nodeType":"YulTypedName","src":"2941:6:87","type":""}]},{"body":{"nativeSrc":"3004:22:87","nodeType":"YulBlock","src":"3004:22:87","statements":[{"expression":{"arguments":[],"functionName":{"name":"panic_error_0x41","nativeSrc":"3006:16:87","nodeType":"YulIdentifier","src":"3006:16:87"},"nativeSrc":"3006:18:87","nodeType":"YulFunctionCall","src":"3006:18:87"},"nativeSrc":"3006:18:87","nodeType":"YulExpressionStatement","src":"3006:18:87"}]},"condition":{"arguments":[{"name":"newLen","nativeSrc":"2976:6:87","nodeType":"YulIdentifier","src":"2976:6:87"},{"arguments":[{"arguments":[{"kind":"number","nativeSrc":"2992:2:87","nodeType":"YulLiteral","src":"2992:2:87","type":"","value":"64"},{"kind":"number","nativeSrc":"2996:1:87","nodeType":"YulLiteral","src":"2996:1:87","type":"","value":"1"}],"functionName":{"name":"shl","nativeSrc":"2988:3:87","nodeType":"YulIdentifier","src":"2988:3:87"},"nativeSrc":"2988:10:87","nodeType":"YulFunctionCall","src":"2988:10:87"},{"kind":"number","nativeSrc":"3000:1:87","nodeType":"YulLiteral","src":"3000:1:87","type":"","value":"1"}],"functionName":{"name":"sub","nativeSrc":"2984:3:87","nodeType":"YulIdentifier","src":"2984:3:87"},"nativeSrc":"2984:18:87","nodeType":"YulFunctionCall","src":"2984:18:87"}],"functionName":{"name":"gt","nativeSrc":"2973:2:87","nodeType":"YulIdentifier","src":"2973:2:87"},"nativeSrc":"2973:30:87","nodeType":"YulFunctionCall","src":"2973:30:87"},"nativeSrc":"2970:56:87","nodeType":"YulIf","src":"2970:56:87"},{"expression":{"arguments":[{"name":"slot","nativeSrc":"3079:4:87","nodeType":"YulIdentifier","src":"3079:4:87"},{"arguments":[{"arguments":[{"name":"slot","nativeSrc":"3117:4:87","nodeType":"YulIdentifier","src":"3117:4:87"}],"functionName":{"name":"sload","nativeSrc":"3111:5:87","nodeType":"YulIdentifier","src":"3111:5:87"},"nativeSrc":"3111:11:87","nodeType":"YulFunctionCall","src":"3111:11:87"}],"functionName":{"name":"extract_byte_array_length","nativeSrc":"3085:25:87","nodeType":"YulIdentifier","src":"3085:25:87"},"nativeSrc":"3085:38:87","nodeType":"YulFunctionCall","src":"3085:38:87"},{"name":"newLen","nativeSrc":"3125:6:87","nodeType":"YulIdentifier","src":"3125:6:87"}],"functionName":{"name":"clean_up_bytearray_end_slots_string_storage","nativeSrc":"3035:43:87","nodeType":"YulIdentifier","src":"3035:43:87"},"nativeSrc":"3035:97:87","nodeType":"YulFunctionCall","src":"3035:97:87"},"nativeSrc":"3035:97:87","nodeType":"YulExpressionStatement","src":"3035:97:87"},{"nativeSrc":"3141:18:87","nodeType":"YulVariableDeclaration","src":"3141:18:87","value":{"kind":"number","nativeSrc":"3158:1:87","nodeType":"YulLiteral","src":"3158:1:87","type":"","value":"0"},"variables":[{"name":"srcOffset","nativeSrc":"3145:9:87","nodeType":"YulTypedName","src":"3145:9:87","type":""}]},{"nativeSrc":"3168:17:87","nodeType":"YulAssignment","src":"3168:17:87","value":{"kind":"number","nativeSrc":"3181:4:87","nodeType":"YulLiteral","src":"3181:4:87","type":"","value":"0x20"},"variableNames":[{"name":"srcOffset","nativeSrc":"3168:9:87","nodeType":"YulIdentifier","src":"3168:9:87"}]},{"cases":[{"body":{"nativeSrc":"3231:642:87","nodeType":"YulBlock","src":"3231:642:87","statements":[{"nativeSrc":"3245:35:87","nodeType":"YulVariableDeclaration","src":"3245:35:87","value":{"arguments":[{"name":"newLen","nativeSrc":"3264:6:87","nodeType":"YulIdentifier","src":"3264:6:87"},{"arguments":[{"kind":"number","nativeSrc":"3276:2:87","nodeType":"YulLiteral","src":"3276:2:87","type":"","value":"31"}],"functionName":{"name":"not","nativeSrc":"3272:3:87","nodeType":"YulIdentifier","src":"3272:3:87"},"nativeSrc":"3272:7:87","nodeType":"YulFunctionCall","src":"3272:7:87"}],"functionName":{"name":"and","nativeSrc":"3260:3:87","nodeType":"YulIdentifier","src":"3260:3:87"},"nativeSrc":"3260:20:87","nodeType":"YulFunctionCall","src":"3260:20:87"},"variables":[{"name":"loopEnd","nativeSrc":"3249:7:87","nodeType":"YulTypedName","src":"3249:7:87","type":""}]},{"nativeSrc":"3293:49:87","nodeType":"YulVariableDeclaration","src":"3293:49:87","value":{"arguments":[{"name":"slot","nativeSrc":"3337:4:87","nodeType":"YulIdentifier","src":"3337:4:87"}],"functionName":{"name":"array_dataslot_string_storage","nativeSrc":"3307:29:87","nodeType":"YulIdentifier","src":"3307:29:87"},"nativeSrc":"3307:35:87","nodeType":"YulFunctionCall","src":"3307:35:87"},"variables":[{"name":"dstPtr","nativeSrc":"3297:6:87","nodeType":"YulTypedName","src":"3297:6:87","type":""}]},{"nativeSrc":"3355:10:87","nodeType":"YulVariableDeclaration","src":"3355:10:87","value":{"kind":"number","nativeSrc":"3364:1:87","nodeType":"YulLiteral","src":"3364:1:87","type":"","value":"0"},"variables":[{"name":"i","nativeSrc":"3359:1:87","nodeType":"YulTypedName","src":"3359:1:87","type":""}]},{"body":{"nativeSrc":"3435:165:87","nodeType":"YulBlock","src":"3435:165:87","statements":[{"expression":{"arguments":[{"name":"dstPtr","nativeSrc":"3460:6:87","nodeType":"YulIdentifier","src":"3460:6:87"},{"arguments":[{"arguments":[{"name":"src","nativeSrc":"3478:3:87","nodeType":"YulIdentifier","src":"3478:3:87"},{"name":"srcOffset","nativeSrc":"3483:9:87","nodeType":"YulIdentifier","src":"3483:9:87"}],"functionName":{"name":"add","nativeSrc":"3474:3:87","nodeType":"YulIdentifier","src":"3474:3:87"},"nativeSrc":"3474:19:87","nodeType":"YulFunctionCall","src":"3474:19:87"}],"functionName":{"name":"mload","nativeSrc":"3468:5:87","nodeType":"YulIdentifier","src":"3468:5:87"},"nativeSrc":"3468:26:87","nodeType":"YulFunctionCall","src":"3468:26:87"}],"functionName":{"name":"sstore","nativeSrc":"3453:6:87","nodeType":"YulIdentifier","src":"3453:6:87"},"nativeSrc":"3453:42:87","nodeType":"YulFunctionCall","src":"3453:42:87"},"nativeSrc":"3453:42:87","nodeType":"YulExpressionStatement","src":"3453:42:87"},{"nativeSrc":"3512:24:87","nodeType":"YulAssignment","src":"3512:24:87","value":{"arguments":[{"name":"dstPtr","nativeSrc":"3526:6:87","nodeType":"YulIdentifier","src":"3526:6:87"},{"kind":"number","nativeSrc":"3534:1:87","nodeType":"YulLiteral","src":"3534:1:87","type":"","value":"1"}],"functionName":{"name":"add","nativeSrc":"3522:3:87","nodeType":"YulIdentifier","src":"3522:3:87"},"nativeSrc":"3522:14:87","nodeType":"YulFunctionCall","src":"3522:14:87"},"variableNames":[{"name":"dstPtr","nativeSrc":"3512:6:87","nodeType":"YulIdentifier","src":"3512:6:87"}]},{"nativeSrc":"3553:33:87","nodeType":"YulAssignment","src":"3553:33:87","value":{"arguments":[{"name":"srcOffset","nativeSrc":"3570:9:87","nodeType":"YulIdentifier","src":"3570:9:87"},{"kind":"number","nativeSrc":"3581:4:87","nodeType":"YulLiteral","src":"3581:4:87","type":"","value":"0x20"}],"functionName":{"name":"add","nativeSrc":"3566:3:87","nodeType":"YulIdentifier","src":"3566:3:87"},"nativeSrc":"3566:20:87","nodeType":"YulFunctionCall","src":"3566:20:87"},"variableNames":[{"name":"srcOffset","nativeSrc":"3553:9:87","nodeType":"YulIdentifier","src":"3553:9:87"}]}]},"condition":{"arguments":[{"name":"i","nativeSrc":"3389:1:87","nodeType":"YulIdentifier","src":"3389:1:87"},{"name":"loopEnd","nativeSrc":"3392:7:87","nodeType":"YulIdentifier","src":"3392:7:87"}],"functionName":{"name":"lt","nativeSrc":"3386:2:87","nodeType":"YulIdentifier","src":"3386:2:87"},"nativeSrc":"3386:14:87","nodeType":"YulFunctionCall","src":"3386:14:87"},"nativeSrc":"3378:222:87","nodeType":"YulForLoop","post":{"nativeSrc":"3401:21:87","nodeType":"YulBlock","src":"3401:21:87","statements":[{"nativeSrc":"3403:17:87","nodeType":"YulAssignment","src":"3403:17:87","value":{"arguments":[{"name":"i","nativeSrc":"3412:1:87","nodeType":"YulIdentifier","src":"3412:1:87"},{"kind":"number","nativeSrc":"3415:4:87","nodeType":"YulLiteral","src":"3415:4:87","type":"","value":"0x20"}],"functionName":{"name":"add","nativeSrc":"3408:3:87","nodeType":"YulIdentifier","src":"3408:3:87"},"nativeSrc":"3408:12:87","nodeType":"YulFunctionCall","src":"3408:12:87"},"variableNames":[{"name":"i","nativeSrc":"3403:1:87","nodeType":"YulIdentifier","src":"3403:1:87"}]}]},"pre":{"nativeSrc":"3382:3:87","nodeType":"YulBlock","src":"3382:3:87","statements":[]},"src":"3378:222:87"},{"body":{"nativeSrc":"3648:166:87","nodeType":"YulBlock","src":"3648:166:87","statements":[{"nativeSrc":"3666:43:87","nodeType":"YulVariableDeclaration","src":"3666:43:87","value":{"arguments":[{"arguments":[{"name":"src","nativeSrc":"3693:3:87","nodeType":"YulIdentifier","src":"3693:3:87"},{"name":"srcOffset","nativeSrc":"3698:9:87","nodeType":"YulIdentifier","src":"3698:9:87"}],"functionName":{"name":"add","nativeSrc":"3689:3:87","nodeType":"YulIdentifier","src":"3689:3:87"},"nativeSrc":"3689:19:87","nodeType":"YulFunctionCall","src":"3689:19:87"}],"functionName":{"name":"mload","nativeSrc":"3683:5:87","nodeType":"YulIdentifier","src":"3683:5:87"},"nativeSrc":"3683:26:87","nodeType":"YulFunctionCall","src":"3683:26:87"},"variables":[{"name":"lastValue","nativeSrc":"3670:9:87","nodeType":"YulTypedName","src":"3670:9:87","type":""}]},{"expression":{"arguments":[{"name":"dstPtr","nativeSrc":"3733:6:87","nodeType":"YulIdentifier","src":"3733:6:87"},{"arguments":[{"name":"lastValue","nativeSrc":"3745:9:87","nodeType":"YulIdentifier","src":"3745:9:87"},{"arguments":[{"arguments":[{"arguments":[{"arguments":[{"kind":"number","nativeSrc":"3772:1:87","nodeType":"YulLiteral","src":"3772:1:87","type":"","value":"3"},{"name":"newLen","nativeSrc":"3775:6:87","nodeType":"YulIdentifier","src":"3775:6:87"}],"functionName":{"name":"shl","nativeSrc":"3768:3:87","nodeType":"YulIdentifier","src":"3768:3:87"},"nativeSrc":"3768:14:87","nodeType":"YulFunctionCall","src":"3768:14:87"},{"kind":"number","nativeSrc":"3784:3:87","nodeType":"YulLiteral","src":"3784:3:87","type":"","value":"248"}],"functionName":{"name":"and","nativeSrc":"3764:3:87","nodeType":"YulIdentifier","src":"3764:3:87"},"nativeSrc":"3764:24:87","nodeType":"YulFunctionCall","src":"3764:24:87"},{"arguments":[{"kind":"number","nativeSrc":"3794:1:87","nodeType":"YulLiteral","src":"3794:1:87","type":"","value":"0"}],"functionName":{"name":"not","nativeSrc":"3790:3:87","nodeType":"YulIdentifier","src":"3790:3:87"},"nativeSrc":"3790:6:87","nodeType":"YulFunctionCall","src":"3790:6:87"}],"functionName":{"name":"shr","nativeSrc":"3760:3:87","nodeType":"YulIdentifier","src":"3760:3:87"},"nativeSrc":"3760:37:87","nodeType":"YulFunctionCall","src":"3760:37:87"}],"functionName":{"name":"not","nativeSrc":"3756:3:87","nodeType":"YulIdentifier","src":"3756:3:87"},"nativeSrc":"3756:42:87","nodeType":"YulFunctionCall","src":"3756:42:87"}],"functionName":{"name":"and","nativeSrc":"3741:3:87","nodeType":"YulIdentifier","src":"3741:3:87"},"nativeSrc":"3741:58:87","nodeType":"YulFunctionCall","src":"3741:58:87"}],"functionName":{"name":"sstore","nativeSrc":"3726:6:87","nodeType":"YulIdentifier","src":"3726:6:87"},"nativeSrc":"3726:74:87","nodeType":"YulFunctionCall","src":"3726:74:87"},"nativeSrc":"3726:74:87","nodeType":"YulExpressionStatement","src":"3726:74:87"}]},"condition":{"arguments":[{"name":"loopEnd","nativeSrc":"3619:7:87","nodeType":"YulIdentifier","src":"3619:7:87"},{"name":"newLen","nativeSrc":"3628:6:87","nodeType":"YulIdentifier","src":"3628:6:87"}],"functionName":{"name":"lt","nativeSrc":"3616:2:87","nodeType":"YulIdentifier","src":"3616:2:87"},"nativeSrc":"3616:19:87","nodeType":"YulFunctionCall","src":"3616:19:87"},"nativeSrc":"3613:201:87","nodeType":"YulIf","src":"3613:201:87"},{"expression":{"arguments":[{"name":"slot","nativeSrc":"3834:4:87","nodeType":"YulIdentifier","src":"3834:4:87"},{"arguments":[{"arguments":[{"kind":"number","nativeSrc":"3848:1:87","nodeType":"YulLiteral","src":"3848:1:87","type":"","value":"1"},{"name":"newLen","nativeSrc":"3851:6:87","nodeType":"YulIdentifier","src":"3851:6:87"}],"functionName":{"name":"shl","nativeSrc":"3844:3:87","nodeType":"YulIdentifier","src":"3844:3:87"},"nativeSrc":"3844:14:87","nodeType":"YulFunctionCall","src":"3844:14:87"},{"kind":"number","nativeSrc":"3860:1:87","nodeType":"YulLiteral","src":"3860:1:87","type":"","value":"1"}],"functionName":{"name":"add","nativeSrc":"3840:3:87","nodeType":"YulIdentifier","src":"3840:3:87"},"nativeSrc":"3840:22:87","nodeType":"YulFunctionCall","src":"3840:22:87"}],"functionName":{"name":"sstore","nativeSrc":"3827:6:87","nodeType":"YulIdentifier","src":"3827:6:87"},"nativeSrc":"3827:36:87","nodeType":"YulFunctionCall","src":"3827:36:87"},"nativeSrc":"3827:36:87","nodeType":"YulExpressionStatement","src":"3827:36:87"}]},"nativeSrc":"3224:649:87","nodeType":"YulCase","src":"3224:649:87","value":{"kind":"number","nativeSrc":"3229:1:87","nodeType":"YulLiteral","src":"3229:1:87","type":"","value":"1"}},{"body":{"nativeSrc":"3890:234:87","nodeType":"YulBlock","src":"3890:234:87","statements":[{"nativeSrc":"3904:14:87","nodeType":"YulVariableDeclaration","src":"3904:14:87","value":{"kind":"number","nativeSrc":"3917:1:87","nodeType":"YulLiteral","src":"3917:1:87","type":"","value":"0"},"variables":[{"name":"value","nativeSrc":"3908:5:87","nodeType":"YulTypedName","src":"3908:5:87","type":""}]},{"body":{"nativeSrc":"3953:67:87","nodeType":"YulBlock","src":"3953:67:87","statements":[{"nativeSrc":"3971:35:87","nodeType":"YulAssignment","src":"3971:35:87","value":{"arguments":[{"arguments":[{"name":"src","nativeSrc":"3990:3:87","nodeType":"YulIdentifier","src":"3990:3:87"},{"name":"srcOffset","nativeSrc":"3995:9:87","nodeType":"YulIdentifier","src":"3995:9:87"}],"functionName":{"name":"add","nativeSrc":"3986:3:87","nodeType":"YulIdentifier","src":"3986:3:87"},"nativeSrc":"3986:19:87","nodeType":"YulFunctionCall","src":"3986:19:87"}],"functionName":{"name":"mload","nativeSrc":"3980:5:87","nodeType":"YulIdentifier","src":"3980:5:87"},"nativeSrc":"3980:26:87","nodeType":"YulFunctionCall","src":"3980:26:87"},"variableNames":[{"name":"value","nativeSrc":"3971:5:87","nodeType":"YulIdentifier","src":"3971:5:87"}]}]},"condition":{"name":"newLen","nativeSrc":"3934:6:87","nodeType":"YulIdentifier","src":"3934:6:87"},"nativeSrc":"3931:89:87","nodeType":"YulIf","src":"3931:89:87"},{"expression":{"arguments":[{"name":"slot","nativeSrc":"4040:4:87","nodeType":"YulIdentifier","src":"4040:4:87"},{"arguments":[{"name":"value","nativeSrc":"4099:5:87","nodeType":"YulIdentifier","src":"4099:5:87"},{"name":"newLen","nativeSrc":"4106:6:87","nodeType":"YulIdentifier","src":"4106:6:87"}],"functionName":{"name":"extract_used_part_and_set_length_of_short_byte_array","nativeSrc":"4046:52:87","nodeType":"YulIdentifier","src":"4046:52:87"},"nativeSrc":"4046:67:87","nodeType":"YulFunctionCall","src":"4046:67:87"}],"functionName":{"name":"sstore","nativeSrc":"4033:6:87","nodeType":"YulIdentifier","src":"4033:6:87"},"nativeSrc":"4033:81:87","nodeType":"YulFunctionCall","src":"4033:81:87"},"nativeSrc":"4033:81:87","nodeType":"YulExpressionStatement","src":"4033:81:87"}]},"nativeSrc":"3882:242:87","nodeType":"YulCase","src":"3882:242:87","value":"default"}],"expression":{"arguments":[{"name":"newLen","nativeSrc":"3204:6:87","nodeType":"YulIdentifier","src":"3204:6:87"},{"kind":"number","nativeSrc":"3212:2:87","nodeType":"YulLiteral","src":"3212:2:87","type":"","value":"31"}],"functionName":{"name":"gt","nativeSrc":"3201:2:87","nodeType":"YulIdentifier","src":"3201:2:87"},"nativeSrc":"3201:14:87","nodeType":"YulFunctionCall","src":"3201:14:87"},"nativeSrc":"3194:930:87","nodeType":"YulSwitch","src":"3194:930:87"}]},"name":"copy_byte_array_to_storage_from_t_string_memory_ptr_to_t_string_storage","nativeSrc":"2831:1299:87","nodeType":"YulFunctionDefinition","parameters":[{"name":"slot","nativeSrc":"2912:4:87","nodeType":"YulTypedName","src":"2912:4:87","type":""},{"name":"src","nativeSrc":"2918:3:87","nodeType":"YulTypedName","src":"2918:3:87","type":""}],"src":"2831:1299:87"},{"body":{"nativeSrc":"4184:176:87","nodeType":"YulBlock","src":"4184:176:87","statements":[{"nativeSrc":"4194:17:87","nodeType":"YulAssignment","src":"4194:17:87","value":{"arguments":[{"name":"x","nativeSrc":"4206:1:87","nodeType":"YulIdentifier","src":"4206:1:87"},{"name":"y","nativeSrc":"4209:1:87","nodeType":"YulIdentifier","src":"4209:1:87"}],"functionName":{"name":"sub","nativeSrc":"4202:3:87","nodeType":"YulIdentifier","src":"4202:3:87"},"nativeSrc":"4202:9:87","nodeType":"YulFunctionCall","src":"4202:9:87"},"variableNames":[{"name":"diff","nativeSrc":"4194:4:87","nodeType":"YulIdentifier","src":"4194:4:87"}]},{"body":{"nativeSrc":"4243:111:87","nodeType":"YulBlock","src":"4243:111:87","statements":[{"expression":{"arguments":[{"kind":"number","nativeSrc":"4264:1:87","nodeType":"YulLiteral","src":"4264:1:87","type":"","value":"0"},{"arguments":[{"kind":"number","nativeSrc":"4271:3:87","nodeType":"YulLiteral","src":"4271:3:87","type":"","value":"224"},{"kind":"number","nativeSrc":"4276:10:87","nodeType":"YulLiteral","src":"4276:10:87","type":"","value":"0x4e487b71"}],"functionName":{"name":"shl","nativeSrc":"4267:3:87","nodeType":"YulIdentifier","src":"4267:3:87"},"nativeSrc":"4267:20:87","nodeType":"YulFunctionCall","src":"4267:20:87"}],"functionName":{"name":"mstore","nativeSrc":"4257:6:87","nodeType":"YulIdentifier","src":"4257:6:87"},"nativeSrc":"4257:31:87","nodeType":"YulFunctionCall","src":"4257:31:87"},"nativeSrc":"4257:31:87","nodeType":"YulExpressionStatement","src":"4257:31:87"},{"expression":{"arguments":[{"kind":"number","nativeSrc":"4308:1:87","nodeType":"YulLiteral","src":"4308:1:87","type":"","value":"4"},{"kind":"number","nativeSrc":"4311:4:87","nodeType":"YulLiteral","src":"4311:4:87","type":"","value":"0x11"}],"functionName":{"name":"mstore","nativeSrc":"4301:6:87","nodeType":"YulIdentifier","src":"4301:6:87"},"nativeSrc":"4301:15:87","nodeType":"YulFunctionCall","src":"4301:15:87"},"nativeSrc":"4301:15:87","nodeType":"YulExpressionStatement","src":"4301:15:87"},{"expression":{"arguments":[{"kind":"number","nativeSrc":"4336:1:87","nodeType":"YulLiteral","src":"4336:1:87","type":"","value":"0"},{"kind":"number","nativeSrc":"4339:4:87","nodeType":"YulLiteral","src":"4339:4:87","type":"","value":"0x24"}],"functionName":{"name":"revert","nativeSrc":"4329:6:87","nodeType":"YulIdentifier","src":"4329:6:87"},"nativeSrc":"4329:15:87","nodeType":"YulFunctionCall","src":"4329:15:87"},"nativeSrc":"4329:15:87","nodeType":"YulExpressionStatement","src":"4329:15:87"}]},"condition":{"arguments":[{"name":"diff","nativeSrc":"4226:4:87","nodeType":"YulIdentifier","src":"4226:4:87"},{"name":"x","nativeSrc":"4232:1:87","nodeType":"YulIdentifier","src":"4232:1:87"}],"functionName":{"name":"gt","nativeSrc":"4223:2:87","nodeType":"YulIdentifier","src":"4223:2:87"},"nativeSrc":"4223:11:87","nodeType":"YulFunctionCall","src":"4223:11:87"},"nativeSrc":"4220:134:87","nodeType":"YulIf","src":"4220:134:87"}]},"name":"checked_sub_t_uint256","nativeSrc":"4135:225:87","nodeType":"YulFunctionDefinition","parameters":[{"name":"x","nativeSrc":"4166:1:87","nodeType":"YulTypedName","src":"4166:1:87","type":""},{"name":"y","nativeSrc":"4169:1:87","nodeType":"YulTypedName","src":"4169:1:87","type":""}],"returnVariables":[{"name":"diff","nativeSrc":"4175:4:87","nodeType":"YulTypedName","src":"4175:4:87","type":""}],"src":"4135:225:87"}]},"contents":"{\n    { }\n    function panic_error_0x41()\n    {\n        mstore(0, shl(224, 0x4e487b71))\n        mstore(4, 0x41)\n        revert(0, 0x24)\n    }\n    function abi_decode_string_fromMemory(offset, end) -> array\n    {\n        if iszero(slt(add(offset, 0x1f), end)) { revert(0, 0) }\n        let length := mload(offset)\n        if gt(length, sub(shl(64, 1), 1)) { panic_error_0x41() }\n        let memPtr := mload(64)\n        let newFreePtr := add(memPtr, and(add(and(add(length, 0x1f), not(31)), 63), not(31)))\n        if or(gt(newFreePtr, sub(shl(64, 1), 1)), lt(newFreePtr, memPtr)) { panic_error_0x41() }\n        mstore(64, newFreePtr)\n        mstore(memPtr, length)\n        if gt(add(add(offset, length), 0x20), end) { revert(0, 0) }\n        mcopy(add(memPtr, 0x20), add(offset, 0x20), length)\n        mstore(add(add(memPtr, length), 0x20), 0)\n        array := memPtr\n    }\n    function abi_decode_tuple_t_string_memory_ptrt_string_memory_ptrt_contract$_IERC20Metadata_$9411_fromMemory(headStart, dataEnd) -> value0, value1, value2\n    {\n        if slt(sub(dataEnd, headStart), 96) { revert(0, 0) }\n        let offset := mload(headStart)\n        if gt(offset, sub(shl(64, 1), 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, sub(shl(64, 1), 1)) { revert(0, 0) }\n        value1 := abi_decode_string_fromMemory(add(headStart, offset_1), dataEnd)\n        let value := mload(add(headStart, 64))\n        if iszero(eq(value, and(value, sub(shl(160, 1), 1)))) { revert(0, 0) }\n        value2 := value\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 array_dataslot_string_storage(ptr) -> data\n    {\n        mstore(0, ptr)\n        data := keccak256(0, 0x20)\n    }\n    function clean_up_bytearray_end_slots_string_storage(array, len, startIndex)\n    {\n        if gt(len, 31)\n        {\n            mstore(0, array)\n            let data := keccak256(0, 0x20)\n            let deleteStart := add(data, shr(5, add(startIndex, 31)))\n            if lt(startIndex, 0x20) { deleteStart := data }\n            let _1 := add(data, shr(5, add(len, 31)))\n            let start := deleteStart\n            for { } lt(start, _1) { start := add(start, 1) }\n            { sstore(start, 0) }\n        }\n    }\n    function extract_used_part_and_set_length_of_short_byte_array(data, len) -> used\n    {\n        used := or(and(data, not(shr(shl(3, len), not(0)))), shl(1, len))\n    }\n    function copy_byte_array_to_storage_from_t_string_memory_ptr_to_t_string_storage(slot, src)\n    {\n        let newLen := mload(src)\n        if gt(newLen, sub(shl(64, 1), 1)) { panic_error_0x41() }\n        clean_up_bytearray_end_slots_string_storage(slot, extract_byte_array_length(sload(slot)), newLen)\n        let srcOffset := 0\n        srcOffset := 0x20\n        switch gt(newLen, 31)\n        case 1 {\n            let loopEnd := and(newLen, not(31))\n            let dstPtr := array_dataslot_string_storage(slot)\n            let i := 0\n            for { } lt(i, loopEnd) { i := add(i, 0x20) }\n            {\n                sstore(dstPtr, mload(add(src, srcOffset)))\n                dstPtr := add(dstPtr, 1)\n                srcOffset := add(srcOffset, 0x20)\n            }\n            if lt(loopEnd, newLen)\n            {\n                let lastValue := mload(add(src, srcOffset))\n                sstore(dstPtr, and(lastValue, not(shr(and(shl(3, newLen), 248), not(0)))))\n            }\n            sstore(slot, add(shl(1, newLen), 1))\n        }\n        default {\n            let value := 0\n            if newLen\n            {\n                value := mload(add(src, srcOffset))\n            }\n            sstore(slot, extract_used_part_and_set_length_of_short_byte_array(value, newLen))\n        }\n    }\n    function checked_sub_t_uint256(x, y) -> diff\n    {\n        diff := sub(x, y)\n        if gt(diff, x)\n        {\n            mstore(0, shl(224, 0x4e487b71))\n            mstore(4, 0x11)\n            revert(0, 0x24)\n        }\n    }\n}","id":87,"language":"Yul","name":"#utility.yul"}],"linkReferences":{},"object":"60c060405234801561000f575f5ffd5b50604051611b75380380611b7583398101604081905261002e91610200565b82828280838360036100408382610309565b50600461004d8282610309565b5050505f5f610061836100b160201b60201c565b9150915081610071576012610073565b805b60ff1660a05250506001600160a01b031660805261009360635f196103c3565b600681905560078190556008819055600955506103e8945050505050565b5f80806100bd60405190565b6040805160048152602481019091526020810180516001600160e01b0390811663313ce56760e01b179091529192505f9182916100fd9188919061014216565b50909250905061010c83604052565b81801561011a575060203d10155b8015610127575060ff8111155b610132575f5f610136565b6001815b94509450505050915091565b5f5f5f60405f855160208701885afa92505f51915060205190509250925092565b634e487b7160e01b5f52604160045260245ffd5b5f82601f830112610186575f5ffd5b81516001600160401b0381111561019f5761019f610163565b604051601f8201601f19908116603f011681016001600160401b03811182821017156101cd576101cd610163565b6040528181528382016020018510156101e4575f5ffd5b8160208501602083015e5f918101602001919091529392505050565b5f5f5f60608486031215610212575f5ffd5b83516001600160401b03811115610227575f5ffd5b61023386828701610177565b602086015190945090506001600160401b03811115610250575f5ffd5b61025c86828701610177565b604086015190935090506001600160a01b038116811461027a575f5ffd5b809150509250925092565b600181811c9082168061029957607f821691505b6020821081036102b757634e487b7160e01b5f52602260045260245ffd5b50919050565b601f82111561030457805f5260205f20601f840160051c810160208510156102e25750805b601f840160051c820191505b81811015610301575f81556001016102ee565b50505b505050565b81516001600160401b0381111561032257610322610163565b610336816103308454610285565b846102bd565b6020601f821160018114610368575f83156103515750848201515b5f19600385901b1c1916600184901b178455610301565b5f84815260208120601f198516915b828110156103975787850151825560209485019460019092019101610377565b50848210156103b457868401515f19600387901b60f8161c191681555b50505050600190811b01905550565b818103818111156103e257634e487b7160e01b5f52601160045260245ffd5b92915050565b60805160a05161174961042c5f395f6106a601525f81816102ef0152818161052a015281816108b60152818161091301528181610fd8015261108a01526117495ff3fe608060405234801561000f575f5ffd5b506004361061021e575f3560e01c806394bf804d1161012a578063c7361ed2116100b4578063d905777e11610079578063d905777e146104cc578063dd62ed3e146104df578063ef8b30f71461044c578063f0fe6ef814610517578063f3c0b8921461051f575f5ffd5b8063c7361ed21461045f578063cc7fcc6014610472578063ce04bebb1461047b578063ce96cb77146104a6578063d6dd0234146104b9575f5ffd5b8063b460af94116100fa578063b460af94146103df578063ba087652146103f2578063c046371114610405578063c63d75b614610439578063c6e6f5921461044c575f5ffd5b806394bf804d1461039e57806395d89b41146103b1578063a9059cbb146103b9578063b3d7f6b9146103cc575f5ffd5b806338359018116101ab5780634cdad5061161017b5780634cdad5061461025b5780636e553f651461033557806370a08231146103485780637fb1ad621461037057806386de9e4f1461037b575f5ffd5b806338359018146102d957806338d52e0f146102e257806339d88aff14610319578063402d267d14610322575f5ffd5b8063095ea7b3116101f1578063095ea7b31461026e5780630a28a4771461029157806318160ddd146102a457806323b872dd146102ac578063313ce567146102bf575f5ffd5b806301e1d11414610222578063034548cd1461023d57806306fdde031461024657806307a2d13a1461025b575b5f5ffd5b61022a610527565b6040519081526020015b60405180910390f35b61022a60075481565b61024e6105b6565b60405161023491906112e6565b61022a61026936600461131b565b610646565b61028161027c36600461134d565b610657565b6040519015158152602001610234565b61022a61029f36600461131b565b61066e565b60025461022a565b6102816102ba366004611375565b61067a565b6102c761069f565b60405160ff9091168152602001610234565b61022a60085481565b6040516001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000168152602001610234565b61022a60065481565b61022a6103303660046113af565b6106ca565b61022a6103433660046113c8565b6106ee565b61022a6103563660046113af565b6001600160a01b03165f9081526020819052604090205490565b60055460ff16610281565b61039c6103893660046113f2565b6005805460ff1916911515919091179055565b005b61022a6103ac3660046113c8565b61074b565b61024e610797565b6102816103c736600461134d565b6107a6565b61022a6103da36600461131b565b6107b3565b61022a6103ed366004611411565b6107bf565b61022a610400366004611411565b610815565b600a5461042090600160801b900467ffffffffffffffff1681565b60405167ffffffffffffffff9091168152602001610234565b61022a6104473660046113af565b610862565b61022a61045a36600461131b565b61087f565b61039c61046d36600461131b565b61088a565b61022a60095481565b600a5461048e906001600160801b031681565b6040516001600160801b039091168152602001610234565b61022a6104b43660046113af565b61097b565b61039c6104c736600461144a565b6109a1565b61022a6104da3660046113af565b610a20565b61022a6104ed366004611469565b6001600160a01b039182165f90815260016020908152604080832093909416825291909152205490565b61039c610a46565b61022a610a84565b5f7f00000000000000000000000000000000000000000000000000000000000000006040516370a0823160e01b81523060048201526001600160a01b0391909116906370a0823190602401602060405180830381865afa15801561058d573d5f5f3e3d5ffd5b505050506040513d601f19601f820116820180604052508101906105b19190611491565b905090565b6060600380546105c5906114a8565b80601f01602080910402602001604051908101604052809291908181526020018280546105f1906114a8565b801561063c5780601f106106135761010080835404028352916020019161063c565b820191905f5260205f20905b81548152906001019060200180831161061f57829003601f168201915b5050505050905090565b5f610651825f610a93565b92915050565b5f33610664818585610acb565b5060019392505050565b5f610651826001610add565b5f33610687858285610b0c565b610692858585610b75565b60019150505b9392505050565b5f6105b1817f00000000000000000000000000000000000000000000000000000000000000006114f4565b5f6106d760635f1961150d565b600654146106e757600654610651565b5f19610651565b5f5f6106f9836106ca565b90508084111561072b57828482604051633c8097d960e11b815260040161072293929190611520565b60405180910390fd5b5f6107358561087f565b905061074333858784610bd2565b949350505050565b5f5f61075683610862565b90508084111561077f5782848260405163284ff66760e01b815260040161072293929190611520565b5f610789856107b3565b905061074333858388610bd2565b6060600480546105c5906114a8565b5f33610664818585610b75565b5f610651826001610a93565b5f5f6107ca8361097b565b9050808511156107f357828582604051633fa733bb60e21b815260040161072293929190611520565b5f6107fd8661066e565b905061080c3386868985610be6565b95945050505050565b5f5f61082083610a20565b90508085111561084957828582604051632e52afbb60e21b815260040161072293929190611520565b5f61085386610646565b905061080c338686848a610be6565b5f61086f60635f1961150d565b600754146106e757600754610651565b5f610651825f610add565b5f811315610911576040516340c10f1960e01b8152306004820152602481018290526001600160a01b037f000000000000000000000000000000000000000000000000000000000000000016906340c10f19906044015b5f604051808303815f87803b1580156108f8575f5ffd5b505af115801561090a573d5f5f3e3d5ffd5b5050505050565b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316639dc29fac3061094a84611541565b6040516001600160e01b031960e085901b1681526001600160a01b03909216600483015260248201526044016108e1565b5f61098860635f1961150d565b6008541461099857600854610651565b61065182610bfb565b5f8260038111156109b4576109b461155b565b036109bf5760068190555b60018260038111156109d3576109d361155b565b036109de5760078190555b60028260038111156109f2576109f261155b565b036109fd5760088190555b6003826003811115610a1157610a1161155b565b03610a1c5760098190555b5050565b5f610a2d60635f1961150d565b60095414610a3d57600954610651565b61065182610c08565b610a4e610527565b600a80546001600160801b03929092166001600160c01b031990921691909117600160801b4267ffffffffffffffff1602179055565b610a9060635f1961150d565b81565b5f610698610a9f610527565b610aaa90600161156f565b610ab55f600a611665565b600254610ac2919061156f565b85919085610c25565b610ad88383836001610c67565b505050565b5f610698610aec82600a611665565b600254610af9919061156f565b610b01610527565b610ac290600161156f565b6001600160a01b038381165f908152600160209081526040808320938616835292905220545f19811015610b6f5781811015610b6157828183604051637dc7a0d960e11b815260040161072293929190611520565b610b6f84848484035f610c67565b50505050565b6001600160a01b038316610b9e57604051634b637e8f60e11b81525f6004820152602401610722565b6001600160a01b038216610bc75760405163ec442f0560e01b81525f6004820152602401610722565b610ad8838383610d39565b610bde84848484610e4c565b610b6f610a46565b610bf38585858585610ea1565b61090a610a46565b5f61065161026983610a20565b6001600160a01b0381165f90815260208190526040812054610651565b5f610c52610c3283610ef7565b8015610c4d57505f8480610c4857610c48611673565b868809115b151590565b610c5d868686610f23565b61080c919061156f565b6001600160a01b038416610c905760405163e602df0560e01b81525f6004820152602401610722565b6001600160a01b038316610cb957604051634a1406b160e11b81525f6004820152602401610722565b6001600160a01b038085165f9081526001602090815260408083209387168352929052208290558015610b6f57826001600160a01b0316846001600160a01b03167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92584604051610d2b91815260200190565b60405180910390a350505050565b6001600160a01b038316610d63578060025f828254610d58919061156f565b90915550610dc09050565b6001600160a01b0383165f9081526020819052604090205481811015610da25783818360405163391434e360e21b815260040161072293929190611520565b6001600160a01b0384165f9081526020819052604090209082900390555b6001600160a01b038216610ddc57600280548290039055610dfa565b6001600160a01b0382165f9081526020819052604090208054820190555b816001600160a01b0316836001600160a01b03167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef83604051610e3f91815260200190565b60405180910390a3505050565b60055460ff1615610e6060045f3681611687565b610e69916116ae565b90610e94576040516340c2fd5360e11b81526001600160e01b03199091166004820152602401610722565b50610b6f84848484610fd3565b60055460ff1615610eb560045f3681611687565b610ebe916116ae565b90610ee9576040516340c2fd5360e11b81526001600160e01b03199091166004820152602401610722565b5061090a8585858585611057565b5f6002826003811115610f0c57610f0c61155b565b610f1691906116e6565b60ff166001149050919050565b5f5f5f610f308686611117565b91509150815f03610f5457838181610f4a57610f4a611673565b0492505050610698565b818411610f6b57610f6b6003851502601118611133565b5f848688095f868103871696879004966002600389028118808a02820302808a02820302808a02820302808a02820302808a02820302808a02909103029181900381900460010185841190960395909502919093039390930492909217029150509392505050565b610fff7f0000000000000000000000000000000000000000000000000000000000000000853085611144565b611009838261117a565b826001600160a01b0316846001600160a01b03167fdcbc1c05240f31ff3ad067ef1ee35ce4997762752e3a095284754544f4c709d78484604051610d2b929190918252602082015260400190565b826001600160a01b0316856001600160a01b03161461107b5761107b838683610b0c565b61108583826111ae565b6110b07f000000000000000000000000000000000000000000000000000000000000000085846111e2565b826001600160a01b0316846001600160a01b0316866001600160a01b03167ffbde797d201c681b91056529119e0b02407c7bb96a4a2c75c01fc9667232c8db8585604051611108929190918252602082015260400190565b60405180910390a45050505050565b5f805f1983850993909202808410938190039390930393915050565b634e487b715f52806020526024601cfd5b611152848484846001611217565b610b6f57604051635274afe760e01b81526001600160a01b0385166004820152602401610722565b6001600160a01b0382166111a35760405163ec442f0560e01b81525f6004820152602401610722565b610a1c5f8383610d39565b6001600160a01b0382166111d757604051634b637e8f60e11b81525f6004820152602401610722565b610a1c825f83610d39565b6111ef8383836001611284565b610ad857604051635274afe760e01b81526001600160a01b0384166004820152602401610722565b6040516323b872dd60e01b5f8181526001600160a01b038781166004528616602452604485905291602083606481808c5af1925060015f51148316611273578383151615611267573d5f823e3d81fd5b5f883b113d1516831692505b604052505f60605295945050505050565b60405163a9059cbb60e01b5f8181526001600160a01b038616600452602485905291602083604481808b5af1925060015f511483166112da5783831516156112ce573d5f823e3d81fd5b5f873b113d1516831692505b60405250949350505050565b602081525f82518060208401528060208501604085015e5f604082850101526040601f19601f83011684010191505092915050565b5f6020828403121561132b575f5ffd5b5035919050565b80356001600160a01b0381168114611348575f5ffd5b919050565b5f5f6040838503121561135e575f5ffd5b61136783611332565b946020939093013593505050565b5f5f5f60608486031215611387575f5ffd5b61139084611332565b925061139e60208501611332565b929592945050506040919091013590565b5f602082840312156113bf575f5ffd5b61069882611332565b5f5f604083850312156113d9575f5ffd5b823591506113e960208401611332565b90509250929050565b5f60208284031215611402575f5ffd5b81358015158114610698575f5ffd5b5f5f5f60608486031215611423575f5ffd5b8335925061143360208501611332565b915061144160408501611332565b90509250925092565b5f5f6040838503121561145b575f5ffd5b823560048110611367575f5ffd5b5f5f6040838503121561147a575f5ffd5b61148383611332565b91506113e960208401611332565b5f602082840312156114a1575f5ffd5b5051919050565b600181811c908216806114bc57607f821691505b6020821081036114da57634e487b7160e01b5f52602260045260245ffd5b50919050565b634e487b7160e01b5f52601160045260245ffd5b60ff8181168382160190811115610651576106516114e0565b81810381811115610651576106516114e0565b6001600160a01b039390931683526020830191909152604082015260600190565b5f600160ff1b8201611555576115556114e0565b505f0390565b634e487b7160e01b5f52602160045260245ffd5b80820180821115610651576106516114e0565b6001815b60018411156115bd578085048111156115a1576115a16114e0565b60018416156115af57908102905b60019390931c928002611586565b935093915050565b5f826115d357506001610651565b816115df57505f610651565b81600181146115f557600281146115ff5761161b565b6001915050610651565b60ff841115611610576116106114e0565b50506001821b610651565b5060208310610133831016604e8410600b841016171561163e575081810a610651565b61164a5f198484611582565b805f190482111561165d5761165d6114e0565b029392505050565b5f61069860ff8416836115c5565b634e487b7160e01b5f52601260045260245ffd5b5f5f85851115611695575f5ffd5b838611156116a1575f5ffd5b5050820193919092039150565b80356001600160e01b031981169060048410156116df576001600160e01b0319600485900360031b81901b82161691505b5092915050565b5f60ff83168061170457634e487b7160e01b5f52601260045260245ffd5b8060ff8416069150509291505056fea2646970667358221220707e46fbe4e821febfd486cff17e5084815ceb26aff5470004a675034c61447764736f6c634300081e0033","opcodes":"PUSH1 0xC0 PUSH1 0x40 MSTORE CALLVALUE DUP1 ISZERO PUSH2 0xF JUMPI PUSH0 PUSH0 REVERT JUMPDEST POP PUSH1 0x40 MLOAD PUSH2 0x1B75 CODESIZE SUB DUP1 PUSH2 0x1B75 DUP4 CODECOPY DUP2 ADD PUSH1 0x40 DUP2 SWAP1 MSTORE PUSH2 0x2E SWAP2 PUSH2 0x200 JUMP JUMPDEST DUP3 DUP3 DUP3 DUP1 DUP4 DUP4 PUSH1 0x3 PUSH2 0x40 DUP4 DUP3 PUSH2 0x309 JUMP JUMPDEST POP PUSH1 0x4 PUSH2 0x4D DUP3 DUP3 PUSH2 0x309 JUMP JUMPDEST POP POP POP PUSH0 PUSH0 PUSH2 0x61 DUP4 PUSH2 0xB1 PUSH1 0x20 SHL PUSH1 0x20 SHR JUMP JUMPDEST SWAP2 POP SWAP2 POP DUP2 PUSH2 0x71 JUMPI PUSH1 0x12 PUSH2 0x73 JUMP JUMPDEST DUP1 JUMPDEST PUSH1 0xFF AND PUSH1 0xA0 MSTORE POP POP PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH1 0x80 MSTORE PUSH2 0x93 PUSH1 0x63 PUSH0 NOT PUSH2 0x3C3 JUMP JUMPDEST PUSH1 0x6 DUP2 SWAP1 SSTORE PUSH1 0x7 DUP2 SWAP1 SSTORE PUSH1 0x8 DUP2 SWAP1 SSTORE PUSH1 0x9 SSTORE POP PUSH2 0x3E8 SWAP5 POP POP POP POP POP JUMP JUMPDEST PUSH0 DUP1 DUP1 PUSH2 0xBD PUSH1 0x40 MLOAD SWAP1 JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH1 0x4 DUP2 MSTORE PUSH1 0x24 DUP2 ADD SWAP1 SWAP2 MSTORE PUSH1 0x20 DUP2 ADD DUP1 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xE0 SHL SUB SWAP1 DUP2 AND PUSH4 0x313CE567 PUSH1 0xE0 SHL OR SWAP1 SWAP2 MSTORE SWAP2 SWAP3 POP PUSH0 SWAP2 DUP3 SWAP2 PUSH2 0xFD SWAP2 DUP9 SWAP2 SWAP1 PUSH2 0x142 AND JUMP JUMPDEST POP SWAP1 SWAP3 POP SWAP1 POP PUSH2 0x10C DUP4 PUSH1 0x40 MSTORE JUMP JUMPDEST DUP2 DUP1 ISZERO PUSH2 0x11A JUMPI POP PUSH1 0x20 RETURNDATASIZE LT ISZERO JUMPDEST DUP1 ISZERO PUSH2 0x127 JUMPI POP PUSH1 0xFF DUP2 GT ISZERO JUMPDEST PUSH2 0x132 JUMPI PUSH0 PUSH0 PUSH2 0x136 JUMP JUMPDEST PUSH1 0x1 DUP2 JUMPDEST SWAP5 POP SWAP5 POP POP POP POP SWAP2 POP SWAP2 JUMP JUMPDEST PUSH0 PUSH0 PUSH0 PUSH1 0x40 PUSH0 DUP6 MLOAD PUSH1 0x20 DUP8 ADD DUP9 GAS STATICCALL SWAP3 POP PUSH0 MLOAD SWAP2 POP PUSH1 0x20 MLOAD SWAP1 POP SWAP3 POP SWAP3 POP SWAP3 JUMP JUMPDEST PUSH4 0x4E487B71 PUSH1 0xE0 SHL PUSH0 MSTORE PUSH1 0x41 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH0 REVERT JUMPDEST PUSH0 DUP3 PUSH1 0x1F DUP4 ADD SLT PUSH2 0x186 JUMPI PUSH0 PUSH0 REVERT JUMPDEST DUP2 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0x40 SHL SUB DUP2 GT ISZERO PUSH2 0x19F JUMPI PUSH2 0x19F PUSH2 0x163 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH1 0x1F DUP3 ADD PUSH1 0x1F NOT SWAP1 DUP2 AND PUSH1 0x3F ADD AND DUP2 ADD PUSH1 0x1 PUSH1 0x1 PUSH1 0x40 SHL SUB DUP2 GT DUP3 DUP3 LT OR ISZERO PUSH2 0x1CD JUMPI PUSH2 0x1CD PUSH2 0x163 JUMP JUMPDEST PUSH1 0x40 MSTORE DUP2 DUP2 MSTORE DUP4 DUP3 ADD PUSH1 0x20 ADD DUP6 LT ISZERO PUSH2 0x1E4 JUMPI PUSH0 PUSH0 REVERT JUMPDEST DUP2 PUSH1 0x20 DUP6 ADD PUSH1 0x20 DUP4 ADD MCOPY PUSH0 SWAP2 DUP2 ADD PUSH1 0x20 ADD SWAP2 SWAP1 SWAP2 MSTORE SWAP4 SWAP3 POP POP POP JUMP JUMPDEST PUSH0 PUSH0 PUSH0 PUSH1 0x60 DUP5 DUP7 SUB SLT ISZERO PUSH2 0x212 JUMPI PUSH0 PUSH0 REVERT JUMPDEST DUP4 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0x40 SHL SUB DUP2 GT ISZERO PUSH2 0x227 JUMPI PUSH0 PUSH0 REVERT JUMPDEST PUSH2 0x233 DUP7 DUP3 DUP8 ADD PUSH2 0x177 JUMP JUMPDEST PUSH1 0x20 DUP7 ADD MLOAD SWAP1 SWAP5 POP SWAP1 POP PUSH1 0x1 PUSH1 0x1 PUSH1 0x40 SHL SUB DUP2 GT ISZERO PUSH2 0x250 JUMPI PUSH0 PUSH0 REVERT JUMPDEST PUSH2 0x25C DUP7 DUP3 DUP8 ADD PUSH2 0x177 JUMP JUMPDEST PUSH1 0x40 DUP7 ADD MLOAD SWAP1 SWAP4 POP SWAP1 POP PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 AND DUP2 EQ PUSH2 0x27A JUMPI PUSH0 PUSH0 REVERT JUMPDEST DUP1 SWAP2 POP POP SWAP3 POP SWAP3 POP SWAP3 JUMP JUMPDEST PUSH1 0x1 DUP2 DUP2 SHR SWAP1 DUP3 AND DUP1 PUSH2 0x299 JUMPI PUSH1 0x7F DUP3 AND SWAP2 POP JUMPDEST PUSH1 0x20 DUP3 LT DUP2 SUB PUSH2 0x2B7 JUMPI PUSH4 0x4E487B71 PUSH1 0xE0 SHL PUSH0 MSTORE PUSH1 0x22 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH0 REVERT JUMPDEST POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x1F DUP3 GT ISZERO PUSH2 0x304 JUMPI DUP1 PUSH0 MSTORE PUSH1 0x20 PUSH0 KECCAK256 PUSH1 0x1F DUP5 ADD PUSH1 0x5 SHR DUP2 ADD PUSH1 0x20 DUP6 LT ISZERO PUSH2 0x2E2 JUMPI POP DUP1 JUMPDEST PUSH1 0x1F DUP5 ADD PUSH1 0x5 SHR DUP3 ADD SWAP2 POP JUMPDEST DUP2 DUP2 LT ISZERO PUSH2 0x301 JUMPI PUSH0 DUP2 SSTORE PUSH1 0x1 ADD PUSH2 0x2EE JUMP JUMPDEST POP POP JUMPDEST POP POP POP JUMP JUMPDEST DUP2 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0x40 SHL SUB DUP2 GT ISZERO PUSH2 0x322 JUMPI PUSH2 0x322 PUSH2 0x163 JUMP JUMPDEST PUSH2 0x336 DUP2 PUSH2 0x330 DUP5 SLOAD PUSH2 0x285 JUMP JUMPDEST DUP5 PUSH2 0x2BD JUMP JUMPDEST PUSH1 0x20 PUSH1 0x1F DUP3 GT PUSH1 0x1 DUP2 EQ PUSH2 0x368 JUMPI PUSH0 DUP4 ISZERO PUSH2 0x351 JUMPI POP DUP5 DUP3 ADD MLOAD JUMPDEST PUSH0 NOT PUSH1 0x3 DUP6 SWAP1 SHL SHR NOT AND PUSH1 0x1 DUP5 SWAP1 SHL OR DUP5 SSTORE PUSH2 0x301 JUMP JUMPDEST PUSH0 DUP5 DUP2 MSTORE PUSH1 0x20 DUP2 KECCAK256 PUSH1 0x1F NOT DUP6 AND SWAP2 JUMPDEST DUP3 DUP2 LT ISZERO PUSH2 0x397 JUMPI DUP8 DUP6 ADD MLOAD DUP3 SSTORE PUSH1 0x20 SWAP5 DUP6 ADD SWAP5 PUSH1 0x1 SWAP1 SWAP3 ADD SWAP2 ADD PUSH2 0x377 JUMP JUMPDEST POP DUP5 DUP3 LT ISZERO PUSH2 0x3B4 JUMPI DUP7 DUP5 ADD MLOAD PUSH0 NOT PUSH1 0x3 DUP8 SWAP1 SHL PUSH1 0xF8 AND SHR NOT AND DUP2 SSTORE JUMPDEST POP POP POP POP PUSH1 0x1 SWAP1 DUP2 SHL ADD SWAP1 SSTORE POP JUMP JUMPDEST DUP2 DUP2 SUB DUP2 DUP2 GT ISZERO PUSH2 0x3E2 JUMPI PUSH4 0x4E487B71 PUSH1 0xE0 SHL PUSH0 MSTORE PUSH1 0x11 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH0 REVERT JUMPDEST SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x80 MLOAD PUSH1 0xA0 MLOAD PUSH2 0x1749 PUSH2 0x42C PUSH0 CODECOPY PUSH0 PUSH2 0x6A6 ADD MSTORE PUSH0 DUP2 DUP2 PUSH2 0x2EF ADD MSTORE DUP2 DUP2 PUSH2 0x52A ADD MSTORE DUP2 DUP2 PUSH2 0x8B6 ADD MSTORE DUP2 DUP2 PUSH2 0x913 ADD MSTORE DUP2 DUP2 PUSH2 0xFD8 ADD MSTORE PUSH2 0x108A ADD MSTORE PUSH2 0x1749 PUSH0 RETURN INVALID PUSH1 0x80 PUSH1 0x40 MSTORE CALLVALUE DUP1 ISZERO PUSH2 0xF JUMPI PUSH0 PUSH0 REVERT JUMPDEST POP PUSH1 0x4 CALLDATASIZE LT PUSH2 0x21E JUMPI PUSH0 CALLDATALOAD PUSH1 0xE0 SHR DUP1 PUSH4 0x94BF804D GT PUSH2 0x12A JUMPI DUP1 PUSH4 0xC7361ED2 GT PUSH2 0xB4 JUMPI DUP1 PUSH4 0xD905777E GT PUSH2 0x79 JUMPI DUP1 PUSH4 0xD905777E EQ PUSH2 0x4CC JUMPI DUP1 PUSH4 0xDD62ED3E EQ PUSH2 0x4DF JUMPI DUP1 PUSH4 0xEF8B30F7 EQ PUSH2 0x44C JUMPI DUP1 PUSH4 0xF0FE6EF8 EQ PUSH2 0x517 JUMPI DUP1 PUSH4 0xF3C0B892 EQ PUSH2 0x51F JUMPI PUSH0 PUSH0 REVERT JUMPDEST DUP1 PUSH4 0xC7361ED2 EQ PUSH2 0x45F JUMPI DUP1 PUSH4 0xCC7FCC60 EQ PUSH2 0x472 JUMPI DUP1 PUSH4 0xCE04BEBB EQ PUSH2 0x47B JUMPI DUP1 PUSH4 0xCE96CB77 EQ PUSH2 0x4A6 JUMPI DUP1 PUSH4 0xD6DD0234 EQ PUSH2 0x4B9 JUMPI PUSH0 PUSH0 REVERT JUMPDEST DUP1 PUSH4 0xB460AF94 GT PUSH2 0xFA JUMPI DUP1 PUSH4 0xB460AF94 EQ PUSH2 0x3DF JUMPI DUP1 PUSH4 0xBA087652 EQ PUSH2 0x3F2 JUMPI DUP1 PUSH4 0xC0463711 EQ PUSH2 0x405 JUMPI DUP1 PUSH4 0xC63D75B6 EQ PUSH2 0x439 JUMPI DUP1 PUSH4 0xC6E6F592 EQ PUSH2 0x44C JUMPI PUSH0 PUSH0 REVERT JUMPDEST DUP1 PUSH4 0x94BF804D EQ PUSH2 0x39E JUMPI DUP1 PUSH4 0x95D89B41 EQ PUSH2 0x3B1 JUMPI DUP1 PUSH4 0xA9059CBB EQ PUSH2 0x3B9 JUMPI DUP1 PUSH4 0xB3D7F6B9 EQ PUSH2 0x3CC JUMPI PUSH0 PUSH0 REVERT JUMPDEST DUP1 PUSH4 0x38359018 GT PUSH2 0x1AB JUMPI DUP1 PUSH4 0x4CDAD506 GT PUSH2 0x17B JUMPI DUP1 PUSH4 0x4CDAD506 EQ PUSH2 0x25B JUMPI DUP1 PUSH4 0x6E553F65 EQ PUSH2 0x335 JUMPI DUP1 PUSH4 0x70A08231 EQ PUSH2 0x348 JUMPI DUP1 PUSH4 0x7FB1AD62 EQ PUSH2 0x370 JUMPI DUP1 PUSH4 0x86DE9E4F EQ PUSH2 0x37B JUMPI PUSH0 PUSH0 REVERT JUMPDEST DUP1 PUSH4 0x38359018 EQ PUSH2 0x2D9 JUMPI DUP1 PUSH4 0x38D52E0F EQ PUSH2 0x2E2 JUMPI DUP1 PUSH4 0x39D88AFF EQ PUSH2 0x319 JUMPI DUP1 PUSH4 0x402D267D EQ PUSH2 0x322 JUMPI PUSH0 PUSH0 REVERT JUMPDEST DUP1 PUSH4 0x95EA7B3 GT PUSH2 0x1F1 JUMPI DUP1 PUSH4 0x95EA7B3 EQ PUSH2 0x26E JUMPI DUP1 PUSH4 0xA28A477 EQ PUSH2 0x291 JUMPI DUP1 PUSH4 0x18160DDD EQ PUSH2 0x2A4 JUMPI DUP1 PUSH4 0x23B872DD EQ PUSH2 0x2AC JUMPI DUP1 PUSH4 0x313CE567 EQ PUSH2 0x2BF JUMPI PUSH0 PUSH0 REVERT JUMPDEST DUP1 PUSH4 0x1E1D114 EQ PUSH2 0x222 JUMPI DUP1 PUSH4 0x34548CD EQ PUSH2 0x23D JUMPI DUP1 PUSH4 0x6FDDE03 EQ PUSH2 0x246 JUMPI DUP1 PUSH4 0x7A2D13A EQ PUSH2 0x25B JUMPI JUMPDEST PUSH0 PUSH0 REVERT JUMPDEST PUSH2 0x22A PUSH2 0x527 JUMP JUMPDEST PUSH1 0x40 MLOAD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST PUSH2 0x22A PUSH1 0x7 SLOAD DUP2 JUMP JUMPDEST PUSH2 0x24E PUSH2 0x5B6 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0x234 SWAP2 SWAP1 PUSH2 0x12E6 JUMP JUMPDEST PUSH2 0x22A PUSH2 0x269 CALLDATASIZE PUSH1 0x4 PUSH2 0x131B JUMP JUMPDEST PUSH2 0x646 JUMP JUMPDEST PUSH2 0x281 PUSH2 0x27C CALLDATASIZE PUSH1 0x4 PUSH2 0x134D JUMP JUMPDEST PUSH2 0x657 JUMP JUMPDEST PUSH1 0x40 MLOAD SWAP1 ISZERO ISZERO DUP2 MSTORE PUSH1 0x20 ADD PUSH2 0x234 JUMP JUMPDEST PUSH2 0x22A PUSH2 0x29F CALLDATASIZE PUSH1 0x4 PUSH2 0x131B JUMP JUMPDEST PUSH2 0x66E JUMP JUMPDEST PUSH1 0x2 SLOAD PUSH2 0x22A JUMP JUMPDEST PUSH2 0x281 PUSH2 0x2BA CALLDATASIZE PUSH1 0x4 PUSH2 0x1375 JUMP JUMPDEST PUSH2 0x67A JUMP JUMPDEST PUSH2 0x2C7 PUSH2 0x69F JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH1 0xFF SWAP1 SWAP2 AND DUP2 MSTORE PUSH1 0x20 ADD PUSH2 0x234 JUMP JUMPDEST PUSH2 0x22A PUSH1 0x8 SLOAD DUP2 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB PUSH32 0x0 AND DUP2 MSTORE PUSH1 0x20 ADD PUSH2 0x234 JUMP JUMPDEST PUSH2 0x22A PUSH1 0x6 SLOAD DUP2 JUMP JUMPDEST PUSH2 0x22A PUSH2 0x330 CALLDATASIZE PUSH1 0x4 PUSH2 0x13AF JUMP JUMPDEST PUSH2 0x6CA JUMP JUMPDEST PUSH2 0x22A PUSH2 0x343 CALLDATASIZE PUSH1 0x4 PUSH2 0x13C8 JUMP JUMPDEST PUSH2 0x6EE JUMP JUMPDEST PUSH2 0x22A PUSH2 0x356 CALLDATASIZE PUSH1 0x4 PUSH2 0x13AF JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH0 SWAP1 DUP2 MSTORE PUSH1 0x20 DUP2 SWAP1 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD SWAP1 JUMP JUMPDEST PUSH1 0x5 SLOAD PUSH1 0xFF AND PUSH2 0x281 JUMP JUMPDEST PUSH2 0x39C PUSH2 0x389 CALLDATASIZE PUSH1 0x4 PUSH2 0x13F2 JUMP JUMPDEST PUSH1 0x5 DUP1 SLOAD PUSH1 0xFF NOT AND SWAP2 ISZERO ISZERO SWAP2 SWAP1 SWAP2 OR SWAP1 SSTORE JUMP JUMPDEST STOP JUMPDEST PUSH2 0x22A PUSH2 0x3AC CALLDATASIZE PUSH1 0x4 PUSH2 0x13C8 JUMP JUMPDEST PUSH2 0x74B JUMP JUMPDEST PUSH2 0x24E PUSH2 0x797 JUMP JUMPDEST PUSH2 0x281 PUSH2 0x3C7 CALLDATASIZE PUSH1 0x4 PUSH2 0x134D JUMP JUMPDEST PUSH2 0x7A6 JUMP JUMPDEST PUSH2 0x22A PUSH2 0x3DA CALLDATASIZE PUSH1 0x4 PUSH2 0x131B JUMP JUMPDEST PUSH2 0x7B3 JUMP JUMPDEST PUSH2 0x22A PUSH2 0x3ED CALLDATASIZE PUSH1 0x4 PUSH2 0x1411 JUMP JUMPDEST PUSH2 0x7BF JUMP JUMPDEST PUSH2 0x22A PUSH2 0x400 CALLDATASIZE PUSH1 0x4 PUSH2 0x1411 JUMP JUMPDEST PUSH2 0x815 JUMP JUMPDEST PUSH1 0xA SLOAD PUSH2 0x420 SWAP1 PUSH1 0x1 PUSH1 0x80 SHL SWAP1 DIV PUSH8 0xFFFFFFFFFFFFFFFF AND DUP2 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH8 0xFFFFFFFFFFFFFFFF SWAP1 SWAP2 AND DUP2 MSTORE PUSH1 0x20 ADD PUSH2 0x234 JUMP JUMPDEST PUSH2 0x22A PUSH2 0x447 CALLDATASIZE PUSH1 0x4 PUSH2 0x13AF JUMP JUMPDEST PUSH2 0x862 JUMP JUMPDEST PUSH2 0x22A PUSH2 0x45A CALLDATASIZE PUSH1 0x4 PUSH2 0x131B JUMP JUMPDEST PUSH2 0x87F JUMP JUMPDEST PUSH2 0x39C PUSH2 0x46D CALLDATASIZE PUSH1 0x4 PUSH2 0x131B JUMP JUMPDEST PUSH2 0x88A JUMP JUMPDEST PUSH2 0x22A PUSH1 0x9 SLOAD DUP2 JUMP JUMPDEST PUSH1 0xA SLOAD PUSH2 0x48E SWAP1 PUSH1 0x1 PUSH1 0x1 PUSH1 0x80 SHL SUB AND DUP2 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0x80 SHL SUB SWAP1 SWAP2 AND DUP2 MSTORE PUSH1 0x20 ADD PUSH2 0x234 JUMP JUMPDEST PUSH2 0x22A PUSH2 0x4B4 CALLDATASIZE PUSH1 0x4 PUSH2 0x13AF JUMP JUMPDEST PUSH2 0x97B JUMP JUMPDEST PUSH2 0x39C PUSH2 0x4C7 CALLDATASIZE PUSH1 0x4 PUSH2 0x144A JUMP JUMPDEST PUSH2 0x9A1 JUMP JUMPDEST PUSH2 0x22A PUSH2 0x4DA CALLDATASIZE PUSH1 0x4 PUSH2 0x13AF JUMP JUMPDEST PUSH2 0xA20 JUMP JUMPDEST PUSH2 0x22A PUSH2 0x4ED CALLDATASIZE PUSH1 0x4 PUSH2 0x1469 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP2 DUP3 AND PUSH0 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 0x39C PUSH2 0xA46 JUMP JUMPDEST PUSH2 0x22A PUSH2 0xA84 JUMP JUMPDEST PUSH0 PUSH32 0x0 PUSH1 0x40 MLOAD PUSH4 0x70A08231 PUSH1 0xE0 SHL DUP2 MSTORE ADDRESS PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP2 SWAP1 SWAP2 AND SWAP1 PUSH4 0x70A08231 SWAP1 PUSH1 0x24 ADD PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x58D JUMPI RETURNDATASIZE PUSH0 PUSH0 RETURNDATACOPY RETURNDATASIZE PUSH0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP3 ADD DUP1 PUSH1 0x40 MSTORE POP DUP2 ADD SWAP1 PUSH2 0x5B1 SWAP2 SWAP1 PUSH2 0x1491 JUMP JUMPDEST SWAP1 POP SWAP1 JUMP JUMPDEST PUSH1 0x60 PUSH1 0x3 DUP1 SLOAD PUSH2 0x5C5 SWAP1 PUSH2 0x14A8 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 0x5F1 SWAP1 PUSH2 0x14A8 JUMP JUMPDEST DUP1 ISZERO PUSH2 0x63C JUMPI DUP1 PUSH1 0x1F LT PUSH2 0x613 JUMPI PUSH2 0x100 DUP1 DUP4 SLOAD DIV MUL DUP4 MSTORE SWAP2 PUSH1 0x20 ADD SWAP2 PUSH2 0x63C JUMP JUMPDEST DUP3 ADD SWAP2 SWAP1 PUSH0 MSTORE PUSH1 0x20 PUSH0 KECCAK256 SWAP1 JUMPDEST DUP2 SLOAD DUP2 MSTORE SWAP1 PUSH1 0x1 ADD SWAP1 PUSH1 0x20 ADD DUP1 DUP4 GT PUSH2 0x61F JUMPI DUP3 SWAP1 SUB PUSH1 0x1F AND DUP3 ADD SWAP2 JUMPDEST POP POP POP POP POP SWAP1 POP SWAP1 JUMP JUMPDEST PUSH0 PUSH2 0x651 DUP3 PUSH0 PUSH2 0xA93 JUMP JUMPDEST SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH0 CALLER PUSH2 0x664 DUP2 DUP6 DUP6 PUSH2 0xACB JUMP JUMPDEST POP PUSH1 0x1 SWAP4 SWAP3 POP POP POP JUMP JUMPDEST PUSH0 PUSH2 0x651 DUP3 PUSH1 0x1 PUSH2 0xADD JUMP JUMPDEST PUSH0 CALLER PUSH2 0x687 DUP6 DUP3 DUP6 PUSH2 0xB0C JUMP JUMPDEST PUSH2 0x692 DUP6 DUP6 DUP6 PUSH2 0xB75 JUMP JUMPDEST PUSH1 0x1 SWAP2 POP POP JUMPDEST SWAP4 SWAP3 POP POP POP JUMP JUMPDEST PUSH0 PUSH2 0x5B1 DUP2 PUSH32 0x0 PUSH2 0x14F4 JUMP JUMPDEST PUSH0 PUSH2 0x6D7 PUSH1 0x63 PUSH0 NOT PUSH2 0x150D JUMP JUMPDEST PUSH1 0x6 SLOAD EQ PUSH2 0x6E7 JUMPI PUSH1 0x6 SLOAD PUSH2 0x651 JUMP JUMPDEST PUSH0 NOT PUSH2 0x651 JUMP JUMPDEST PUSH0 PUSH0 PUSH2 0x6F9 DUP4 PUSH2 0x6CA JUMP JUMPDEST SWAP1 POP DUP1 DUP5 GT ISZERO PUSH2 0x72B JUMPI DUP3 DUP5 DUP3 PUSH1 0x40 MLOAD PUSH4 0x3C8097D9 PUSH1 0xE1 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x722 SWAP4 SWAP3 SWAP2 SWAP1 PUSH2 0x1520 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH0 PUSH2 0x735 DUP6 PUSH2 0x87F JUMP JUMPDEST SWAP1 POP PUSH2 0x743 CALLER DUP6 DUP8 DUP5 PUSH2 0xBD2 JUMP JUMPDEST SWAP5 SWAP4 POP POP POP POP JUMP JUMPDEST PUSH0 PUSH0 PUSH2 0x756 DUP4 PUSH2 0x862 JUMP JUMPDEST SWAP1 POP DUP1 DUP5 GT ISZERO PUSH2 0x77F JUMPI DUP3 DUP5 DUP3 PUSH1 0x40 MLOAD PUSH4 0x284FF667 PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x722 SWAP4 SWAP3 SWAP2 SWAP1 PUSH2 0x1520 JUMP JUMPDEST PUSH0 PUSH2 0x789 DUP6 PUSH2 0x7B3 JUMP JUMPDEST SWAP1 POP PUSH2 0x743 CALLER DUP6 DUP4 DUP9 PUSH2 0xBD2 JUMP JUMPDEST PUSH1 0x60 PUSH1 0x4 DUP1 SLOAD PUSH2 0x5C5 SWAP1 PUSH2 0x14A8 JUMP JUMPDEST PUSH0 CALLER PUSH2 0x664 DUP2 DUP6 DUP6 PUSH2 0xB75 JUMP JUMPDEST PUSH0 PUSH2 0x651 DUP3 PUSH1 0x1 PUSH2 0xA93 JUMP JUMPDEST PUSH0 PUSH0 PUSH2 0x7CA DUP4 PUSH2 0x97B JUMP JUMPDEST SWAP1 POP DUP1 DUP6 GT ISZERO PUSH2 0x7F3 JUMPI DUP3 DUP6 DUP3 PUSH1 0x40 MLOAD PUSH4 0x3FA733BB PUSH1 0xE2 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x722 SWAP4 SWAP3 SWAP2 SWAP1 PUSH2 0x1520 JUMP JUMPDEST PUSH0 PUSH2 0x7FD DUP7 PUSH2 0x66E JUMP JUMPDEST SWAP1 POP PUSH2 0x80C CALLER DUP7 DUP7 DUP10 DUP6 PUSH2 0xBE6 JUMP JUMPDEST SWAP6 SWAP5 POP POP POP POP POP JUMP JUMPDEST PUSH0 PUSH0 PUSH2 0x820 DUP4 PUSH2 0xA20 JUMP JUMPDEST SWAP1 POP DUP1 DUP6 GT ISZERO PUSH2 0x849 JUMPI DUP3 DUP6 DUP3 PUSH1 0x40 MLOAD PUSH4 0x2E52AFBB PUSH1 0xE2 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x722 SWAP4 SWAP3 SWAP2 SWAP1 PUSH2 0x1520 JUMP JUMPDEST PUSH0 PUSH2 0x853 DUP7 PUSH2 0x646 JUMP JUMPDEST SWAP1 POP PUSH2 0x80C CALLER DUP7 DUP7 DUP5 DUP11 PUSH2 0xBE6 JUMP JUMPDEST PUSH0 PUSH2 0x86F PUSH1 0x63 PUSH0 NOT PUSH2 0x150D JUMP JUMPDEST PUSH1 0x7 SLOAD EQ PUSH2 0x6E7 JUMPI PUSH1 0x7 SLOAD PUSH2 0x651 JUMP JUMPDEST PUSH0 PUSH2 0x651 DUP3 PUSH0 PUSH2 0xADD JUMP JUMPDEST PUSH0 DUP2 SGT ISZERO PUSH2 0x911 JUMPI PUSH1 0x40 MLOAD PUSH4 0x40C10F19 PUSH1 0xE0 SHL DUP2 MSTORE ADDRESS PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x24 DUP2 ADD DUP3 SWAP1 MSTORE PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB PUSH32 0x0 AND SWAP1 PUSH4 0x40C10F19 SWAP1 PUSH1 0x44 ADD JUMPDEST PUSH0 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 PUSH0 DUP8 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x8F8 JUMPI PUSH0 PUSH0 REVERT JUMPDEST POP GAS CALL ISZERO DUP1 ISZERO PUSH2 0x90A JUMPI RETURNDATASIZE PUSH0 PUSH0 RETURNDATACOPY RETURNDATASIZE PUSH0 REVERT JUMPDEST POP POP POP POP POP JUMP JUMPDEST PUSH32 0x0 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH4 0x9DC29FAC ADDRESS PUSH2 0x94A DUP5 PUSH2 0x1541 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xE0 SHL SUB NOT PUSH1 0xE0 DUP6 SWAP1 SHL AND DUP2 MSTORE PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP1 SWAP3 AND PUSH1 0x4 DUP4 ADD MSTORE PUSH1 0x24 DUP3 ADD MSTORE PUSH1 0x44 ADD PUSH2 0x8E1 JUMP JUMPDEST PUSH0 PUSH2 0x988 PUSH1 0x63 PUSH0 NOT PUSH2 0x150D JUMP JUMPDEST PUSH1 0x8 SLOAD EQ PUSH2 0x998 JUMPI PUSH1 0x8 SLOAD PUSH2 0x651 JUMP JUMPDEST PUSH2 0x651 DUP3 PUSH2 0xBFB JUMP JUMPDEST PUSH0 DUP3 PUSH1 0x3 DUP2 GT ISZERO PUSH2 0x9B4 JUMPI PUSH2 0x9B4 PUSH2 0x155B JUMP JUMPDEST SUB PUSH2 0x9BF JUMPI PUSH1 0x6 DUP2 SWAP1 SSTORE JUMPDEST PUSH1 0x1 DUP3 PUSH1 0x3 DUP2 GT ISZERO PUSH2 0x9D3 JUMPI PUSH2 0x9D3 PUSH2 0x155B JUMP JUMPDEST SUB PUSH2 0x9DE JUMPI PUSH1 0x7 DUP2 SWAP1 SSTORE JUMPDEST PUSH1 0x2 DUP3 PUSH1 0x3 DUP2 GT ISZERO PUSH2 0x9F2 JUMPI PUSH2 0x9F2 PUSH2 0x155B JUMP JUMPDEST SUB PUSH2 0x9FD JUMPI PUSH1 0x8 DUP2 SWAP1 SSTORE JUMPDEST PUSH1 0x3 DUP3 PUSH1 0x3 DUP2 GT ISZERO PUSH2 0xA11 JUMPI PUSH2 0xA11 PUSH2 0x155B JUMP JUMPDEST SUB PUSH2 0xA1C JUMPI PUSH1 0x9 DUP2 SWAP1 SSTORE JUMPDEST POP POP JUMP JUMPDEST PUSH0 PUSH2 0xA2D PUSH1 0x63 PUSH0 NOT PUSH2 0x150D JUMP JUMPDEST PUSH1 0x9 SLOAD EQ PUSH2 0xA3D JUMPI PUSH1 0x9 SLOAD PUSH2 0x651 JUMP JUMPDEST PUSH2 0x651 DUP3 PUSH2 0xC08 JUMP JUMPDEST PUSH2 0xA4E PUSH2 0x527 JUMP JUMPDEST PUSH1 0xA DUP1 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0x80 SHL SUB SWAP3 SWAP1 SWAP3 AND PUSH1 0x1 PUSH1 0x1 PUSH1 0xC0 SHL SUB NOT SWAP1 SWAP3 AND SWAP2 SWAP1 SWAP2 OR PUSH1 0x1 PUSH1 0x80 SHL TIMESTAMP PUSH8 0xFFFFFFFFFFFFFFFF AND MUL OR SWAP1 SSTORE JUMP JUMPDEST PUSH2 0xA90 PUSH1 0x63 PUSH0 NOT PUSH2 0x150D JUMP JUMPDEST DUP2 JUMP JUMPDEST PUSH0 PUSH2 0x698 PUSH2 0xA9F PUSH2 0x527 JUMP JUMPDEST PUSH2 0xAAA SWAP1 PUSH1 0x1 PUSH2 0x156F JUMP JUMPDEST PUSH2 0xAB5 PUSH0 PUSH1 0xA PUSH2 0x1665 JUMP JUMPDEST PUSH1 0x2 SLOAD PUSH2 0xAC2 SWAP2 SWAP1 PUSH2 0x156F JUMP JUMPDEST DUP6 SWAP2 SWAP1 DUP6 PUSH2 0xC25 JUMP JUMPDEST PUSH2 0xAD8 DUP4 DUP4 DUP4 PUSH1 0x1 PUSH2 0xC67 JUMP JUMPDEST POP POP POP JUMP JUMPDEST PUSH0 PUSH2 0x698 PUSH2 0xAEC DUP3 PUSH1 0xA PUSH2 0x1665 JUMP JUMPDEST PUSH1 0x2 SLOAD PUSH2 0xAF9 SWAP2 SWAP1 PUSH2 0x156F JUMP JUMPDEST PUSH2 0xB01 PUSH2 0x527 JUMP JUMPDEST PUSH2 0xAC2 SWAP1 PUSH1 0x1 PUSH2 0x156F JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP4 DUP2 AND PUSH0 SWAP1 DUP2 MSTORE PUSH1 0x1 PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x40 DUP1 DUP4 KECCAK256 SWAP4 DUP7 AND DUP4 MSTORE SWAP3 SWAP1 MSTORE KECCAK256 SLOAD PUSH0 NOT DUP2 LT ISZERO PUSH2 0xB6F JUMPI DUP2 DUP2 LT ISZERO PUSH2 0xB61 JUMPI DUP3 DUP2 DUP4 PUSH1 0x40 MLOAD PUSH4 0x7DC7A0D9 PUSH1 0xE1 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x722 SWAP4 SWAP3 SWAP2 SWAP1 PUSH2 0x1520 JUMP JUMPDEST PUSH2 0xB6F DUP5 DUP5 DUP5 DUP5 SUB PUSH0 PUSH2 0xC67 JUMP JUMPDEST POP POP POP POP JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP4 AND PUSH2 0xB9E JUMPI PUSH1 0x40 MLOAD PUSH4 0x4B637E8F PUSH1 0xE1 SHL DUP2 MSTORE PUSH0 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x24 ADD PUSH2 0x722 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP3 AND PUSH2 0xBC7 JUMPI PUSH1 0x40 MLOAD PUSH4 0xEC442F05 PUSH1 0xE0 SHL DUP2 MSTORE PUSH0 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x24 ADD PUSH2 0x722 JUMP JUMPDEST PUSH2 0xAD8 DUP4 DUP4 DUP4 PUSH2 0xD39 JUMP JUMPDEST PUSH2 0xBDE DUP5 DUP5 DUP5 DUP5 PUSH2 0xE4C JUMP JUMPDEST PUSH2 0xB6F PUSH2 0xA46 JUMP JUMPDEST PUSH2 0xBF3 DUP6 DUP6 DUP6 DUP6 DUP6 PUSH2 0xEA1 JUMP JUMPDEST PUSH2 0x90A PUSH2 0xA46 JUMP JUMPDEST PUSH0 PUSH2 0x651 PUSH2 0x269 DUP4 PUSH2 0xA20 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 AND PUSH0 SWAP1 DUP2 MSTORE PUSH1 0x20 DUP2 SWAP1 MSTORE PUSH1 0x40 DUP2 KECCAK256 SLOAD PUSH2 0x651 JUMP JUMPDEST PUSH0 PUSH2 0xC52 PUSH2 0xC32 DUP4 PUSH2 0xEF7 JUMP JUMPDEST DUP1 ISZERO PUSH2 0xC4D JUMPI POP PUSH0 DUP5 DUP1 PUSH2 0xC48 JUMPI PUSH2 0xC48 PUSH2 0x1673 JUMP JUMPDEST DUP7 DUP9 MULMOD GT JUMPDEST ISZERO ISZERO SWAP1 JUMP JUMPDEST PUSH2 0xC5D DUP7 DUP7 DUP7 PUSH2 0xF23 JUMP JUMPDEST PUSH2 0x80C SWAP2 SWAP1 PUSH2 0x156F JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP5 AND PUSH2 0xC90 JUMPI PUSH1 0x40 MLOAD PUSH4 0xE602DF05 PUSH1 0xE0 SHL DUP2 MSTORE PUSH0 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x24 ADD PUSH2 0x722 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP4 AND PUSH2 0xCB9 JUMPI PUSH1 0x40 MLOAD PUSH4 0x4A1406B1 PUSH1 0xE1 SHL DUP2 MSTORE PUSH0 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x24 ADD PUSH2 0x722 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP1 DUP6 AND PUSH0 SWAP1 DUP2 MSTORE PUSH1 0x1 PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x40 DUP1 DUP4 KECCAK256 SWAP4 DUP8 AND DUP4 MSTORE SWAP3 SWAP1 MSTORE KECCAK256 DUP3 SWAP1 SSTORE DUP1 ISZERO PUSH2 0xB6F JUMPI DUP3 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP5 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH32 0x8C5BE1E5EBEC7D5BD14F71427D1E84F3DD0314C0F7B2291E5B200AC8C7C3B925 DUP5 PUSH1 0x40 MLOAD PUSH2 0xD2B SWAP2 DUP2 MSTORE PUSH1 0x20 ADD SWAP1 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 LOG3 POP POP POP POP JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP4 AND PUSH2 0xD63 JUMPI DUP1 PUSH1 0x2 PUSH0 DUP3 DUP3 SLOAD PUSH2 0xD58 SWAP2 SWAP1 PUSH2 0x156F JUMP JUMPDEST SWAP1 SWAP2 SSTORE POP PUSH2 0xDC0 SWAP1 POP JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP4 AND PUSH0 SWAP1 DUP2 MSTORE PUSH1 0x20 DUP2 SWAP1 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD DUP2 DUP2 LT ISZERO PUSH2 0xDA2 JUMPI DUP4 DUP2 DUP4 PUSH1 0x40 MLOAD PUSH4 0x391434E3 PUSH1 0xE2 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x722 SWAP4 SWAP3 SWAP2 SWAP1 PUSH2 0x1520 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP5 AND PUSH0 SWAP1 DUP2 MSTORE PUSH1 0x20 DUP2 SWAP1 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SWAP1 DUP3 SWAP1 SUB SWAP1 SSTORE JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP3 AND PUSH2 0xDDC JUMPI PUSH1 0x2 DUP1 SLOAD DUP3 SWAP1 SUB SWAP1 SSTORE PUSH2 0xDFA JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP3 AND PUSH0 SWAP1 DUP2 MSTORE PUSH1 0x20 DUP2 SWAP1 MSTORE PUSH1 0x40 SWAP1 KECCAK256 DUP1 SLOAD DUP3 ADD SWAP1 SSTORE JUMPDEST DUP2 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP4 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH32 0xDDF252AD1BE2C89B69C2B068FC378DAA952BA7F163C4A11628F55A4DF523B3EF DUP4 PUSH1 0x40 MLOAD PUSH2 0xE3F SWAP2 DUP2 MSTORE PUSH1 0x20 ADD SWAP1 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 LOG3 POP POP POP JUMP JUMPDEST PUSH1 0x5 SLOAD PUSH1 0xFF AND ISZERO PUSH2 0xE60 PUSH1 0x4 PUSH0 CALLDATASIZE DUP2 PUSH2 0x1687 JUMP JUMPDEST PUSH2 0xE69 SWAP2 PUSH2 0x16AE JUMP JUMPDEST SWAP1 PUSH2 0xE94 JUMPI PUSH1 0x40 MLOAD PUSH4 0x40C2FD53 PUSH1 0xE1 SHL DUP2 MSTORE PUSH1 0x1 PUSH1 0x1 PUSH1 0xE0 SHL SUB NOT SWAP1 SWAP2 AND PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x24 ADD PUSH2 0x722 JUMP JUMPDEST POP PUSH2 0xB6F DUP5 DUP5 DUP5 DUP5 PUSH2 0xFD3 JUMP JUMPDEST PUSH1 0x5 SLOAD PUSH1 0xFF AND ISZERO PUSH2 0xEB5 PUSH1 0x4 PUSH0 CALLDATASIZE DUP2 PUSH2 0x1687 JUMP JUMPDEST PUSH2 0xEBE SWAP2 PUSH2 0x16AE JUMP JUMPDEST SWAP1 PUSH2 0xEE9 JUMPI PUSH1 0x40 MLOAD PUSH4 0x40C2FD53 PUSH1 0xE1 SHL DUP2 MSTORE PUSH1 0x1 PUSH1 0x1 PUSH1 0xE0 SHL SUB NOT SWAP1 SWAP2 AND PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x24 ADD PUSH2 0x722 JUMP JUMPDEST POP PUSH2 0x90A DUP6 DUP6 DUP6 DUP6 DUP6 PUSH2 0x1057 JUMP JUMPDEST PUSH0 PUSH1 0x2 DUP3 PUSH1 0x3 DUP2 GT ISZERO PUSH2 0xF0C JUMPI PUSH2 0xF0C PUSH2 0x155B JUMP JUMPDEST PUSH2 0xF16 SWAP2 SWAP1 PUSH2 0x16E6 JUMP JUMPDEST PUSH1 0xFF AND PUSH1 0x1 EQ SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH0 PUSH0 PUSH0 PUSH2 0xF30 DUP7 DUP7 PUSH2 0x1117 JUMP JUMPDEST SWAP2 POP SWAP2 POP DUP2 PUSH0 SUB PUSH2 0xF54 JUMPI DUP4 DUP2 DUP2 PUSH2 0xF4A JUMPI PUSH2 0xF4A PUSH2 0x1673 JUMP JUMPDEST DIV SWAP3 POP POP POP PUSH2 0x698 JUMP JUMPDEST DUP2 DUP5 GT PUSH2 0xF6B JUMPI PUSH2 0xF6B PUSH1 0x3 DUP6 ISZERO MUL PUSH1 0x11 XOR PUSH2 0x1133 JUMP JUMPDEST PUSH0 DUP5 DUP7 DUP9 MULMOD PUSH0 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 DUP6 DUP5 GT SWAP1 SWAP7 SUB SWAP6 SWAP1 SWAP6 MUL SWAP2 SWAP1 SWAP4 SUB SWAP4 SWAP1 SWAP4 DIV SWAP3 SWAP1 SWAP3 OR MUL SWAP2 POP POP SWAP4 SWAP3 POP POP POP JUMP JUMPDEST PUSH2 0xFFF PUSH32 0x0 DUP6 ADDRESS DUP6 PUSH2 0x1144 JUMP JUMPDEST PUSH2 0x1009 DUP4 DUP3 PUSH2 0x117A JUMP JUMPDEST DUP3 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP5 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH32 0xDCBC1C05240F31FF3AD067EF1EE35CE4997762752E3A095284754544F4C709D7 DUP5 DUP5 PUSH1 0x40 MLOAD PUSH2 0xD2B SWAP3 SWAP2 SWAP1 SWAP2 DUP3 MSTORE PUSH1 0x20 DUP3 ADD MSTORE PUSH1 0x40 ADD SWAP1 JUMP JUMPDEST DUP3 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP6 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND EQ PUSH2 0x107B JUMPI PUSH2 0x107B DUP4 DUP7 DUP4 PUSH2 0xB0C JUMP JUMPDEST PUSH2 0x1085 DUP4 DUP3 PUSH2 0x11AE JUMP JUMPDEST PUSH2 0x10B0 PUSH32 0x0 DUP6 DUP5 PUSH2 0x11E2 JUMP JUMPDEST DUP3 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP5 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP7 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH32 0xFBDE797D201C681B91056529119E0B02407C7BB96A4A2C75C01FC9667232C8DB DUP6 DUP6 PUSH1 0x40 MLOAD PUSH2 0x1108 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 POP POP POP JUMP JUMPDEST PUSH0 DUP1 PUSH0 NOT DUP4 DUP6 MULMOD SWAP4 SWAP1 SWAP3 MUL DUP1 DUP5 LT SWAP4 DUP2 SWAP1 SUB SWAP4 SWAP1 SWAP4 SUB SWAP4 SWAP2 POP POP JUMP JUMPDEST PUSH4 0x4E487B71 PUSH0 MSTORE DUP1 PUSH1 0x20 MSTORE PUSH1 0x24 PUSH1 0x1C REVERT JUMPDEST PUSH2 0x1152 DUP5 DUP5 DUP5 DUP5 PUSH1 0x1 PUSH2 0x1217 JUMP JUMPDEST PUSH2 0xB6F JUMPI PUSH1 0x40 MLOAD PUSH4 0x5274AFE7 PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP6 AND PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x24 ADD PUSH2 0x722 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP3 AND PUSH2 0x11A3 JUMPI PUSH1 0x40 MLOAD PUSH4 0xEC442F05 PUSH1 0xE0 SHL DUP2 MSTORE PUSH0 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x24 ADD PUSH2 0x722 JUMP JUMPDEST PUSH2 0xA1C PUSH0 DUP4 DUP4 PUSH2 0xD39 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP3 AND PUSH2 0x11D7 JUMPI PUSH1 0x40 MLOAD PUSH4 0x4B637E8F PUSH1 0xE1 SHL DUP2 MSTORE PUSH0 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x24 ADD PUSH2 0x722 JUMP JUMPDEST PUSH2 0xA1C DUP3 PUSH0 DUP4 PUSH2 0xD39 JUMP JUMPDEST PUSH2 0x11EF DUP4 DUP4 DUP4 PUSH1 0x1 PUSH2 0x1284 JUMP JUMPDEST PUSH2 0xAD8 JUMPI PUSH1 0x40 MLOAD PUSH4 0x5274AFE7 PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP5 AND PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x24 ADD PUSH2 0x722 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH4 0x23B872DD PUSH1 0xE0 SHL PUSH0 DUP2 DUP2 MSTORE PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP8 DUP2 AND PUSH1 0x4 MSTORE DUP7 AND PUSH1 0x24 MSTORE PUSH1 0x44 DUP6 SWAP1 MSTORE SWAP2 PUSH1 0x20 DUP4 PUSH1 0x64 DUP2 DUP1 DUP13 GAS CALL SWAP3 POP PUSH1 0x1 PUSH0 MLOAD EQ DUP4 AND PUSH2 0x1273 JUMPI DUP4 DUP4 ISZERO AND ISZERO PUSH2 0x1267 JUMPI RETURNDATASIZE PUSH0 DUP3 RETURNDATACOPY RETURNDATASIZE DUP2 REVERT JUMPDEST PUSH0 DUP9 EXTCODESIZE GT RETURNDATASIZE ISZERO AND DUP4 AND SWAP3 POP JUMPDEST PUSH1 0x40 MSTORE POP PUSH0 PUSH1 0x60 MSTORE SWAP6 SWAP5 POP POP POP POP POP JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH4 0xA9059CBB PUSH1 0xE0 SHL PUSH0 DUP2 DUP2 MSTORE PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP7 AND PUSH1 0x4 MSTORE PUSH1 0x24 DUP6 SWAP1 MSTORE SWAP2 PUSH1 0x20 DUP4 PUSH1 0x44 DUP2 DUP1 DUP12 GAS CALL SWAP3 POP PUSH1 0x1 PUSH0 MLOAD EQ DUP4 AND PUSH2 0x12DA JUMPI DUP4 DUP4 ISZERO AND ISZERO PUSH2 0x12CE JUMPI RETURNDATASIZE PUSH0 DUP3 RETURNDATACOPY RETURNDATASIZE DUP2 REVERT JUMPDEST PUSH0 DUP8 EXTCODESIZE GT RETURNDATASIZE ISZERO AND DUP4 AND SWAP3 POP JUMPDEST PUSH1 0x40 MSTORE POP SWAP5 SWAP4 POP POP POP POP JUMP JUMPDEST PUSH1 0x20 DUP2 MSTORE PUSH0 DUP3 MLOAD DUP1 PUSH1 0x20 DUP5 ADD MSTORE DUP1 PUSH1 0x20 DUP6 ADD PUSH1 0x40 DUP6 ADD MCOPY PUSH0 PUSH1 0x40 DUP3 DUP6 ADD ADD MSTORE PUSH1 0x40 PUSH1 0x1F NOT PUSH1 0x1F DUP4 ADD AND DUP5 ADD ADD SWAP2 POP POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x132B JUMPI PUSH0 PUSH0 REVERT JUMPDEST POP CALLDATALOAD SWAP2 SWAP1 POP JUMP JUMPDEST DUP1 CALLDATALOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 AND DUP2 EQ PUSH2 0x1348 JUMPI PUSH0 PUSH0 REVERT JUMPDEST SWAP2 SWAP1 POP JUMP JUMPDEST PUSH0 PUSH0 PUSH1 0x40 DUP4 DUP6 SUB SLT ISZERO PUSH2 0x135E JUMPI PUSH0 PUSH0 REVERT JUMPDEST PUSH2 0x1367 DUP4 PUSH2 0x1332 JUMP JUMPDEST SWAP5 PUSH1 0x20 SWAP4 SWAP1 SWAP4 ADD CALLDATALOAD SWAP4 POP POP POP JUMP JUMPDEST PUSH0 PUSH0 PUSH0 PUSH1 0x60 DUP5 DUP7 SUB SLT ISZERO PUSH2 0x1387 JUMPI PUSH0 PUSH0 REVERT JUMPDEST PUSH2 0x1390 DUP5 PUSH2 0x1332 JUMP JUMPDEST SWAP3 POP PUSH2 0x139E PUSH1 0x20 DUP6 ADD PUSH2 0x1332 JUMP JUMPDEST SWAP3 SWAP6 SWAP3 SWAP5 POP POP POP PUSH1 0x40 SWAP2 SWAP1 SWAP2 ADD CALLDATALOAD SWAP1 JUMP JUMPDEST PUSH0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x13BF JUMPI PUSH0 PUSH0 REVERT JUMPDEST PUSH2 0x698 DUP3 PUSH2 0x1332 JUMP JUMPDEST PUSH0 PUSH0 PUSH1 0x40 DUP4 DUP6 SUB SLT ISZERO PUSH2 0x13D9 JUMPI PUSH0 PUSH0 REVERT JUMPDEST DUP3 CALLDATALOAD SWAP2 POP PUSH2 0x13E9 PUSH1 0x20 DUP5 ADD PUSH2 0x1332 JUMP JUMPDEST SWAP1 POP SWAP3 POP SWAP3 SWAP1 POP JUMP JUMPDEST PUSH0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x1402 JUMPI PUSH0 PUSH0 REVERT JUMPDEST DUP2 CALLDATALOAD DUP1 ISZERO ISZERO DUP2 EQ PUSH2 0x698 JUMPI PUSH0 PUSH0 REVERT JUMPDEST PUSH0 PUSH0 PUSH0 PUSH1 0x60 DUP5 DUP7 SUB SLT ISZERO PUSH2 0x1423 JUMPI PUSH0 PUSH0 REVERT JUMPDEST DUP4 CALLDATALOAD SWAP3 POP PUSH2 0x1433 PUSH1 0x20 DUP6 ADD PUSH2 0x1332 JUMP JUMPDEST SWAP2 POP PUSH2 0x1441 PUSH1 0x40 DUP6 ADD PUSH2 0x1332 JUMP JUMPDEST SWAP1 POP SWAP3 POP SWAP3 POP SWAP3 JUMP JUMPDEST PUSH0 PUSH0 PUSH1 0x40 DUP4 DUP6 SUB SLT ISZERO PUSH2 0x145B JUMPI PUSH0 PUSH0 REVERT JUMPDEST DUP3 CALLDATALOAD PUSH1 0x4 DUP2 LT PUSH2 0x1367 JUMPI PUSH0 PUSH0 REVERT JUMPDEST PUSH0 PUSH0 PUSH1 0x40 DUP4 DUP6 SUB SLT ISZERO PUSH2 0x147A JUMPI PUSH0 PUSH0 REVERT JUMPDEST PUSH2 0x1483 DUP4 PUSH2 0x1332 JUMP JUMPDEST SWAP2 POP PUSH2 0x13E9 PUSH1 0x20 DUP5 ADD PUSH2 0x1332 JUMP JUMPDEST PUSH0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x14A1 JUMPI PUSH0 PUSH0 REVERT JUMPDEST POP MLOAD SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x1 DUP2 DUP2 SHR SWAP1 DUP3 AND DUP1 PUSH2 0x14BC JUMPI PUSH1 0x7F DUP3 AND SWAP2 POP JUMPDEST PUSH1 0x20 DUP3 LT DUP2 SUB PUSH2 0x14DA JUMPI PUSH4 0x4E487B71 PUSH1 0xE0 SHL PUSH0 MSTORE PUSH1 0x22 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH0 REVERT JUMPDEST POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH4 0x4E487B71 PUSH1 0xE0 SHL PUSH0 MSTORE PUSH1 0x11 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH0 REVERT JUMPDEST PUSH1 0xFF DUP2 DUP2 AND DUP4 DUP3 AND ADD SWAP1 DUP2 GT ISZERO PUSH2 0x651 JUMPI PUSH2 0x651 PUSH2 0x14E0 JUMP JUMPDEST DUP2 DUP2 SUB DUP2 DUP2 GT ISZERO PUSH2 0x651 JUMPI PUSH2 0x651 PUSH2 0x14E0 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP4 SWAP1 SWAP4 AND DUP4 MSTORE PUSH1 0x20 DUP4 ADD SWAP2 SWAP1 SWAP2 MSTORE PUSH1 0x40 DUP3 ADD MSTORE PUSH1 0x60 ADD SWAP1 JUMP JUMPDEST PUSH0 PUSH1 0x1 PUSH1 0xFF SHL DUP3 ADD PUSH2 0x1555 JUMPI PUSH2 0x1555 PUSH2 0x14E0 JUMP JUMPDEST POP PUSH0 SUB SWAP1 JUMP JUMPDEST PUSH4 0x4E487B71 PUSH1 0xE0 SHL PUSH0 MSTORE PUSH1 0x21 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH0 REVERT JUMPDEST DUP1 DUP3 ADD DUP1 DUP3 GT ISZERO PUSH2 0x651 JUMPI PUSH2 0x651 PUSH2 0x14E0 JUMP JUMPDEST PUSH1 0x1 DUP2 JUMPDEST PUSH1 0x1 DUP5 GT ISZERO PUSH2 0x15BD JUMPI DUP1 DUP6 DIV DUP2 GT ISZERO PUSH2 0x15A1 JUMPI PUSH2 0x15A1 PUSH2 0x14E0 JUMP JUMPDEST PUSH1 0x1 DUP5 AND ISZERO PUSH2 0x15AF JUMPI SWAP1 DUP2 MUL SWAP1 JUMPDEST PUSH1 0x1 SWAP4 SWAP1 SWAP4 SHR SWAP3 DUP1 MUL PUSH2 0x1586 JUMP JUMPDEST SWAP4 POP SWAP4 SWAP2 POP POP JUMP JUMPDEST PUSH0 DUP3 PUSH2 0x15D3 JUMPI POP PUSH1 0x1 PUSH2 0x651 JUMP JUMPDEST DUP2 PUSH2 0x15DF JUMPI POP PUSH0 PUSH2 0x651 JUMP JUMPDEST DUP2 PUSH1 0x1 DUP2 EQ PUSH2 0x15F5 JUMPI PUSH1 0x2 DUP2 EQ PUSH2 0x15FF JUMPI PUSH2 0x161B JUMP JUMPDEST PUSH1 0x1 SWAP2 POP POP PUSH2 0x651 JUMP JUMPDEST PUSH1 0xFF DUP5 GT ISZERO PUSH2 0x1610 JUMPI PUSH2 0x1610 PUSH2 0x14E0 JUMP JUMPDEST POP POP PUSH1 0x1 DUP3 SHL PUSH2 0x651 JUMP JUMPDEST POP PUSH1 0x20 DUP4 LT PUSH2 0x133 DUP4 LT AND PUSH1 0x4E DUP5 LT PUSH1 0xB DUP5 LT AND OR ISZERO PUSH2 0x163E JUMPI POP DUP2 DUP2 EXP PUSH2 0x651 JUMP JUMPDEST PUSH2 0x164A PUSH0 NOT DUP5 DUP5 PUSH2 0x1582 JUMP JUMPDEST DUP1 PUSH0 NOT DIV DUP3 GT ISZERO PUSH2 0x165D JUMPI PUSH2 0x165D PUSH2 0x14E0 JUMP JUMPDEST MUL SWAP4 SWAP3 POP POP POP JUMP JUMPDEST PUSH0 PUSH2 0x698 PUSH1 0xFF DUP5 AND DUP4 PUSH2 0x15C5 JUMP JUMPDEST PUSH4 0x4E487B71 PUSH1 0xE0 SHL PUSH0 MSTORE PUSH1 0x12 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH0 REVERT JUMPDEST PUSH0 PUSH0 DUP6 DUP6 GT ISZERO PUSH2 0x1695 JUMPI PUSH0 PUSH0 REVERT JUMPDEST DUP4 DUP7 GT ISZERO PUSH2 0x16A1 JUMPI PUSH0 PUSH0 REVERT JUMPDEST POP POP DUP3 ADD SWAP4 SWAP2 SWAP1 SWAP3 SUB SWAP2 POP JUMP JUMPDEST DUP1 CALLDATALOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xE0 SHL SUB NOT DUP2 AND SWAP1 PUSH1 0x4 DUP5 LT ISZERO PUSH2 0x16DF JUMPI PUSH1 0x1 PUSH1 0x1 PUSH1 0xE0 SHL SUB NOT PUSH1 0x4 DUP6 SWAP1 SUB PUSH1 0x3 SHL DUP2 SWAP1 SHL DUP3 AND AND SWAP2 POP JUMPDEST POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH0 PUSH1 0xFF DUP4 AND DUP1 PUSH2 0x1704 JUMPI PUSH4 0x4E487B71 PUSH1 0xE0 SHL PUSH0 MSTORE PUSH1 0x12 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH0 REVERT JUMPDEST DUP1 PUSH1 0xFF DUP5 AND MOD SWAP2 POP POP SWAP3 SWAP2 POP POP JUMP INVALID LOG2 PUSH5 0x6970667358 0x22 SLT KECCAK256 PUSH17 0x7E46FBE4E821FEBFD486CFF17E5084815C 0xEB 0x26 0xAF CREATE2 SELFBALANCE STOP DIV 0xA6 PUSH22 0x34C61447764736F6C634300081E0033000000000000 ","sourceMap":"231:811:75:-:0;;;331:117;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;422:5;429:7;438:6;;422:5;429:7;1648:5:32;:13;422:5:75;1648::32;:13;:::i;:::-;-1:-1:-1;1671:7:32;:17;1681:7;1671;:17;:::i;:::-;;1582:113;;5565:12:34;5579:19;5602:28;5623:6;5602:20;;;:28;;:::i;:::-;5564:66;;;;5662:7;:28;;5688:2;5662:28;;;5672:13;5662:28;5640:50;;;;-1:-1:-1;;;;;;;5700:15:34;;;711:22:10::2;731:2;-1:-1:-1::0;;711:22:10::2;:::i;:::-;1136:18;:35:::0;;;1118:15:::2;:53:::0;;;1096:19:::2;:75:::0;;;1076:17:::2;:95:::0;-1:-1:-1;231:811:75;;-1:-1:-1;;;;;231:811:75;5865:607:34;5932:7;;;5993:29;1025:4:41;1019:11;;895:151;5993:29:34;6156:43;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;6156:43:34;;;-1:-1:-1;;;6156:43:34;;;;5972:50;;-1:-1:-1;6033:12:34;;;;6077:132;;6135:6;;6156:43;6077:36;:132;:::i;:::-;-1:-1:-1;6032:177:34;;-1:-1:-1;6032:177:34;-1:-1:-1;6219:32:34;6247:3;1311:4:41;1304:17;1198:139;6219:32:34;6282:7;:46;;;;-1:-1:-1;6326:2:34;4583:16:40;6293:35:34;;6282:46;:94;;;;-1:-1:-1;6361:15:34;6332:44;;;6282:94;6281:184;;6456:5;6463:1;6281:184;;;6397:4;6417:16;6281:184;6262:203;;;;;;;5865:607;;;:::o;2893:374:40:-;3006:12;3020:15;3037;3176:4;3170;3163;3157:11;3150:4;3144;3140:15;3132:6;3125:5;3114:67;3103:78;;3211:4;3205:11;3194:22;;3246:4;3240:11;3229:22;;2893:374;;;;;:::o;14:127:87:-;75:10;70:3;66:20;63:1;56:31;106:4;103:1;96:15;130:4;127:1;120:15;146:723;200:5;253:3;246:4;238:6;234:17;230:27;220:55;;271:1;268;261:12;220:55;298:13;;-1:-1:-1;;;;;323:30:87;;320:56;;;356:18;;:::i;:::-;405:2;399:9;497:2;459:17;;-1:-1:-1;;455:31:87;;;488:2;451:40;447:54;435:67;;-1:-1:-1;;;;;517:34:87;;553:22;;;514:62;511:88;;;579:18;;:::i;:::-;615:2;608:22;639;;;680:19;;;701:4;676:30;673:39;-1:-1:-1;670:59:87;;;725:1;722;715:12;670:59;782:6;775:4;767:6;763:17;756:4;748:6;744:17;738:51;837:1;809:19;;;830:4;805:30;798:41;;;;813:6;146:723;-1:-1:-1;;;146:723:87:o;874:747::-;1005:6;1013;1021;1074:2;1062:9;1053:7;1049:23;1045:32;1042:52;;;1090:1;1087;1080:12;1042:52;1117:16;;-1:-1:-1;;;;;1145:30:87;;1142:50;;;1188:1;1185;1178:12;1142:50;1211:61;1264:7;1255:6;1244:9;1240:22;1211:61;:::i;:::-;1318:2;1303:18;;1297:25;1201:71;;-1:-1:-1;1297:25:87;-1:-1:-1;;;;;;1334:32:87;;1331:52;;;1379:1;1376;1369:12;1331:52;1402:63;1457:7;1446:8;1435:9;1431:24;1402:63;:::i;:::-;1508:2;1493:18;;1487:25;1392:73;;-1:-1:-1;1487:25:87;-1:-1:-1;;;;;;1541:31:87;;1531:42;;1521:70;;1587:1;1584;1577:12;1521:70;1610:5;1600:15;;;874:747;;;;;:::o;1626:380::-;1705:1;1701:12;;;;1748;;;1769:61;;1823:4;1815:6;1811:17;1801:27;;1769:61;1876:2;1868:6;1865:14;1845:18;1842:38;1839:161;;1922:10;1917:3;1913:20;1910:1;1903:31;1957:4;1954:1;1947:15;1985:4;1982:1;1975:15;1839:161;;1626:380;;;:::o;2137:518::-;2239:2;2234:3;2231:11;2228:421;;;2275:5;2272:1;2265:16;2319:4;2316:1;2306:18;2389:2;2377:10;2373:19;2370:1;2366:27;2360:4;2356:38;2425:4;2413:10;2410:20;2407:47;;;-1:-1:-1;2448:4:87;2407:47;2503:2;2498:3;2494:12;2491:1;2487:20;2481:4;2477:31;2467:41;;2558:81;2576:2;2569:5;2566:13;2558:81;;;2635:1;2621:16;;2602:1;2591:13;2558:81;;;2562:3;;2228:421;2137:518;;;:::o;2831:1299::-;2951:10;;-1:-1:-1;;;;;2973:30:87;;2970:56;;;3006:18;;:::i;:::-;3035:97;3125:6;3085:38;3117:4;3111:11;3085:38;:::i;:::-;3079:4;3035:97;:::i;:::-;3181:4;3212:2;3201:14;;3229:1;3224:649;;;;3917:1;3934:6;3931:89;;;-1:-1:-1;3986:19:87;;;3980:26;3931:89;-1:-1:-1;;2788:1:87;2784:11;;;2780:24;2776:29;2766:40;2812:1;2808:11;;;2763:57;4033:81;;3194:930;;3224:649;2084:1;2077:14;;;2121:4;2108:18;;-1:-1:-1;;3260:20:87;;;3378:222;3392:7;3389:1;3386:14;3378:222;;;3474:19;;;3468:26;3453:42;;3581:4;3566:20;;;;3534:1;3522:14;;;;3408:12;3378:222;;;3382:3;3628:6;3619:7;3616:19;3613:201;;;3689:19;;;3683:26;-1:-1:-1;;3772:1:87;3768:14;;;3784:3;3764:24;3760:37;3756:42;3741:58;3726:74;;3613:201;-1:-1:-1;;;;3860:1:87;3844:14;;;3840:22;3827:36;;-1:-1:-1;2831:1299:87:o;4135:225::-;4202:9;;;4223:11;;;4220:134;;;4276:10;4271:3;4267:20;4264:1;4257:31;4311:4;4308:1;4301:15;4339:4;4336:1;4329:15;4220:134;4135:225;;;;:::o;:::-;231:811:75;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;"},"deployedBytecode":{"functionDebugData":{"@OVERRIDE_UNSET_2753":{"entryPoint":2692,"id":2753,"parameterSlots":0,"returnSlots":0},"@_approve_8492":{"entryPoint":2763,"id":8492,"parameterSlots":3,"returnSlots":0},"@_approve_8552":{"entryPoint":3175,"id":8552,"parameterSlots":4,"returnSlots":0},"@_burn_8474":{"entryPoint":4526,"id":8474,"parameterSlots":2,"returnSlots":0},"@_convertToAssets_9286":{"entryPoint":2707,"id":9286,"parameterSlots":2,"returnSlots":1},"@_convertToShares_9258":{"entryPoint":2781,"id":9258,"parameterSlots":2,"returnSlots":1},"@_decimalsOffset_9384":{"entryPoint":null,"id":9384,"parameterSlots":0,"returnSlots":1},"@_deposit_21784":{"entryPoint":3026,"id":21784,"parameterSlots":4,"returnSlots":0},"@_deposit_2833":{"entryPoint":3660,"id":2833,"parameterSlots":4,"returnSlots":0},"@_deposit_9326":{"entryPoint":4051,"id":9326,"parameterSlots":4,"returnSlots":0},"@_mint_8441":{"entryPoint":4474,"id":8441,"parameterSlots":2,"returnSlots":0},"@_msgSender_10268":{"entryPoint":null,"id":10268,"parameterSlots":0,"returnSlots":1},"@_safeTransferFrom_9842":{"entryPoint":4631,"id":9842,"parameterSlots":5,"returnSlots":1},"@_safeTransfer_9817":{"entryPoint":4740,"id":9817,"parameterSlots":4,"returnSlots":1},"@_spendAllowance_8600":{"entryPoint":2828,"id":8600,"parameterSlots":3,"returnSlots":0},"@_totalAssets_21741":{"entryPoint":null,"id":21741,"parameterSlots":0,"returnSlots":0},"@_transfer_8331":{"entryPoint":2933,"id":8331,"parameterSlots":3,"returnSlots":0},"@_update_8408":{"entryPoint":3385,"id":8408,"parameterSlots":3,"returnSlots":0},"@_withdraw_21812":{"entryPoint":3046,"id":21812,"parameterSlots":5,"returnSlots":0},"@_withdraw_2860":{"entryPoint":3745,"id":2860,"parameterSlots":5,"returnSlots":0},"@_withdraw_9376":{"entryPoint":4183,"id":9376,"parameterSlots":5,"returnSlots":0},"@allowance_8228":{"entryPoint":null,"id":8228,"parameterSlots":2,"returnSlots":1},"@approve_8252":{"entryPoint":1623,"id":8252,"parameterSlots":2,"returnSlots":1},"@asset_8876":{"entryPoint":null,"id":8876,"parameterSlots":0,"returnSlots":1},"@balanceOf_8187":{"entryPoint":null,"id":8187,"parameterSlots":1,"returnSlots":1},"@broken_2921":{"entryPoint":null,"id":2921,"parameterSlots":0,"returnSlots":1},"@convertToAssets_8926":{"entryPoint":1606,"id":8926,"parameterSlots":1,"returnSlots":1},"@convertToShares_8910":{"entryPoint":2175,"id":8910,"parameterSlots":1,"returnSlots":1},"@decimals_8864":{"entryPoint":1695,"id":8864,"parameterSlots":0,"returnSlots":1},"@deposit_9092":{"entryPoint":1774,"id":9092,"parameterSlots":2,"returnSlots":1},"@discreteEarning_2903":{"entryPoint":2186,"id":2903,"parameterSlots":1,"returnSlots":0},"@lastUpdate_21743":{"entryPoint":null,"id":21743,"parameterSlots":0,"returnSlots":0},"@maxDeposit_2940":{"entryPoint":1738,"id":2940,"parameterSlots":1,"returnSlots":1},"@maxDeposit_8941":{"entryPoint":null,"id":8941,"parameterSlots":1,"returnSlots":1},"@maxMint_2959":{"entryPoint":2146,"id":2959,"parameterSlots":1,"returnSlots":1},"@maxMint_8956":{"entryPoint":null,"id":8956,"parameterSlots":1,"returnSlots":1},"@maxRedeem_2997":{"entryPoint":2592,"id":2997,"parameterSlots":1,"returnSlots":1},"@maxRedeem_8984":{"entryPoint":3080,"id":8984,"parameterSlots":1,"returnSlots":1},"@maxWithdraw_2978":{"entryPoint":2427,"id":2978,"parameterSlots":1,"returnSlots":1},"@maxWithdraw_8971":{"entryPoint":3067,"id":8971,"parameterSlots":1,"returnSlots":1},"@mint_9136":{"entryPoint":1867,"id":9136,"parameterSlots":2,"returnSlots":1},"@mul512_11124":{"entryPoint":4375,"id":11124,"parameterSlots":2,"returnSlots":2},"@mulDiv_11611":{"entryPoint":3875,"id":11611,"parameterSlots":3,"returnSlots":1},"@mulDiv_11648":{"entryPoint":3109,"id":11648,"parameterSlots":4,"returnSlots":1},"@name_8147":{"entryPoint":1462,"id":8147,"parameterSlots":0,"returnSlots":1},"@overrideMaxDeposit_2738":{"entryPoint":null,"id":2738,"parameterSlots":0,"returnSlots":0},"@overrideMaxMint_2740":{"entryPoint":null,"id":2740,"parameterSlots":0,"returnSlots":0},"@overrideMaxRedeem_2744":{"entryPoint":null,"id":2744,"parameterSlots":0,"returnSlots":0},"@overrideMaxWithdraw_2742":{"entryPoint":null,"id":2742,"parameterSlots":0,"returnSlots":0},"@panic_10907":{"entryPoint":4403,"id":10907,"parameterSlots":1,"returnSlots":0},"@previewDeposit_9000":{"entryPoint":null,"id":9000,"parameterSlots":1,"returnSlots":1},"@previewMint_9016":{"entryPoint":1971,"id":9016,"parameterSlots":1,"returnSlots":1},"@previewRedeem_9048":{"entryPoint":null,"id":9048,"parameterSlots":1,"returnSlots":1},"@previewWithdraw_9032":{"entryPoint":1646,"id":9032,"parameterSlots":1,"returnSlots":1},"@redeem_9230":{"entryPoint":2069,"id":9230,"parameterSlots":3,"returnSlots":1},"@safeTransferFrom_9491":{"entryPoint":4420,"id":9491,"parameterSlots":4,"returnSlots":0},"@safeTransfer_9460":{"entryPoint":4578,"id":9460,"parameterSlots":3,"returnSlots":0},"@setBroken_2913":{"entryPoint":null,"id":2913,"parameterSlots":1,"returnSlots":0},"@setOverride_3042":{"entryPoint":2465,"id":3042,"parameterSlots":2,"returnSlots":0},"@symbol_8156":{"entryPoint":1943,"id":8156,"parameterSlots":0,"returnSlots":1},"@ternary_11373":{"entryPoint":null,"id":11373,"parameterSlots":3,"returnSlots":1},"@toUint_14490":{"entryPoint":null,"id":14490,"parameterSlots":1,"returnSlots":1},"@totalAssets_8894":{"entryPoint":1319,"id":8894,"parameterSlots":0,"returnSlots":1},"@totalSupply_8174":{"entryPoint":null,"id":8174,"parameterSlots":0,"returnSlots":1},"@transferFrom_8284":{"entryPoint":1658,"id":8284,"parameterSlots":3,"returnSlots":1},"@transfer_8211":{"entryPoint":1958,"id":8211,"parameterSlots":2,"returnSlots":1},"@unsignedRoundsUp_12704":{"entryPoint":3831,"id":12704,"parameterSlots":1,"returnSlots":1},"@updateCachedTotalAssets_21832":{"entryPoint":2630,"id":21832,"parameterSlots":0,"returnSlots":0},"@withdraw_9183":{"entryPoint":1983,"id":9183,"parameterSlots":3,"returnSlots":1},"abi_decode_address":{"entryPoint":4914,"id":null,"parameterSlots":1,"returnSlots":1},"abi_decode_tuple_t_address":{"entryPoint":5039,"id":null,"parameterSlots":2,"returnSlots":1},"abi_decode_tuple_t_addresst_address":{"entryPoint":5225,"id":null,"parameterSlots":2,"returnSlots":2},"abi_decode_tuple_t_addresst_addresst_uint256":{"entryPoint":4981,"id":null,"parameterSlots":2,"returnSlots":3},"abi_decode_tuple_t_addresst_uint256":{"entryPoint":4941,"id":null,"parameterSlots":2,"returnSlots":2},"abi_decode_tuple_t_bool":{"entryPoint":5106,"id":null,"parameterSlots":2,"returnSlots":1},"abi_decode_tuple_t_enum$_OverrideOption_$2758t_uint256":{"entryPoint":5194,"id":null,"parameterSlots":2,"returnSlots":2},"abi_decode_tuple_t_int256":{"entryPoint":null,"id":null,"parameterSlots":2,"returnSlots":1},"abi_decode_tuple_t_uint256":{"entryPoint":4891,"id":null,"parameterSlots":2,"returnSlots":1},"abi_decode_tuple_t_uint256_fromMemory":{"entryPoint":5265,"id":null,"parameterSlots":2,"returnSlots":1},"abi_decode_tuple_t_uint256t_address":{"entryPoint":5064,"id":null,"parameterSlots":2,"returnSlots":2},"abi_decode_tuple_t_uint256t_addresst_address":{"entryPoint":5137,"id":null,"parameterSlots":2,"returnSlots":3},"abi_encode_tuple_t_address__to_t_address__fromStack_reversed":{"entryPoint":null,"id":null,"parameterSlots":2,"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_address_t_uint256_t_uint256__to_t_address_t_uint256_t_uint256__fromStack_reversed":{"entryPoint":5408,"id":null,"parameterSlots":4,"returnSlots":1},"abi_encode_tuple_t_bool__to_t_bool__fromStack_reversed":{"entryPoint":null,"id":null,"parameterSlots":2,"returnSlots":1},"abi_encode_tuple_t_bytes4__to_t_bytes4__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":4838,"id":null,"parameterSlots":2,"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_uint64__to_t_uint64__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},"calldata_array_index_range_access_t_bytes_calldata_ptr":{"entryPoint":5767,"id":null,"parameterSlots":4,"returnSlots":2},"checked_add_t_uint256":{"entryPoint":5487,"id":null,"parameterSlots":2,"returnSlots":1},"checked_add_t_uint8":{"entryPoint":5364,"id":null,"parameterSlots":2,"returnSlots":1},"checked_exp_helper":{"entryPoint":5506,"id":null,"parameterSlots":3,"returnSlots":2},"checked_exp_t_uint256_t_uint8":{"entryPoint":5733,"id":null,"parameterSlots":2,"returnSlots":1},"checked_exp_unsigned":{"entryPoint":5573,"id":null,"parameterSlots":2,"returnSlots":1},"checked_sub_t_uint256":{"entryPoint":5389,"id":null,"parameterSlots":2,"returnSlots":1},"convert_bytes_to_fixedbytes_from_t_bytes_calldata_ptr_to_t_bytes4":{"entryPoint":5806,"id":null,"parameterSlots":2,"returnSlots":1},"extract_byte_array_length":{"entryPoint":5288,"id":null,"parameterSlots":1,"returnSlots":1},"mod_t_uint8":{"entryPoint":5862,"id":null,"parameterSlots":2,"returnSlots":1},"negate_t_int256":{"entryPoint":5441,"id":null,"parameterSlots":1,"returnSlots":1},"panic_error_0x11":{"entryPoint":5344,"id":null,"parameterSlots":0,"returnSlots":0},"panic_error_0x12":{"entryPoint":5747,"id":null,"parameterSlots":0,"returnSlots":0},"panic_error_0x21":{"entryPoint":5467,"id":null,"parameterSlots":0,"returnSlots":0}},"generatedSources":[{"ast":{"nativeSrc":"0:9714:87","nodeType":"YulBlock","src":"0:9714:87","statements":[{"nativeSrc":"6:3:87","nodeType":"YulBlock","src":"6:3:87","statements":[]},{"body":{"nativeSrc":"115:76:87","nodeType":"YulBlock","src":"115:76:87","statements":[{"nativeSrc":"125:26:87","nodeType":"YulAssignment","src":"125:26:87","value":{"arguments":[{"name":"headStart","nativeSrc":"137:9:87","nodeType":"YulIdentifier","src":"137:9:87"},{"kind":"number","nativeSrc":"148:2:87","nodeType":"YulLiteral","src":"148:2:87","type":"","value":"32"}],"functionName":{"name":"add","nativeSrc":"133:3:87","nodeType":"YulIdentifier","src":"133:3:87"},"nativeSrc":"133:18:87","nodeType":"YulFunctionCall","src":"133:18:87"},"variableNames":[{"name":"tail","nativeSrc":"125:4:87","nodeType":"YulIdentifier","src":"125:4:87"}]},{"expression":{"arguments":[{"name":"headStart","nativeSrc":"167:9:87","nodeType":"YulIdentifier","src":"167:9:87"},{"name":"value0","nativeSrc":"178:6:87","nodeType":"YulIdentifier","src":"178:6:87"}],"functionName":{"name":"mstore","nativeSrc":"160:6:87","nodeType":"YulIdentifier","src":"160:6:87"},"nativeSrc":"160:25:87","nodeType":"YulFunctionCall","src":"160:25:87"},"nativeSrc":"160:25:87","nodeType":"YulExpressionStatement","src":"160:25:87"}]},"name":"abi_encode_tuple_t_uint256__to_t_uint256__fromStack_reversed","nativeSrc":"14:177:87","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nativeSrc":"84:9:87","nodeType":"YulTypedName","src":"84:9:87","type":""},{"name":"value0","nativeSrc":"95:6:87","nodeType":"YulTypedName","src":"95:6:87","type":""}],"returnVariables":[{"name":"tail","nativeSrc":"106:4:87","nodeType":"YulTypedName","src":"106:4:87","type":""}],"src":"14:177:87"},{"body":{"nativeSrc":"317:297:87","nodeType":"YulBlock","src":"317:297:87","statements":[{"expression":{"arguments":[{"name":"headStart","nativeSrc":"334:9:87","nodeType":"YulIdentifier","src":"334:9:87"},{"kind":"number","nativeSrc":"345:2:87","nodeType":"YulLiteral","src":"345:2:87","type":"","value":"32"}],"functionName":{"name":"mstore","nativeSrc":"327:6:87","nodeType":"YulIdentifier","src":"327:6:87"},"nativeSrc":"327:21:87","nodeType":"YulFunctionCall","src":"327:21:87"},"nativeSrc":"327:21:87","nodeType":"YulExpressionStatement","src":"327:21:87"},{"nativeSrc":"357:27:87","nodeType":"YulVariableDeclaration","src":"357:27:87","value":{"arguments":[{"name":"value0","nativeSrc":"377:6:87","nodeType":"YulIdentifier","src":"377:6:87"}],"functionName":{"name":"mload","nativeSrc":"371:5:87","nodeType":"YulIdentifier","src":"371:5:87"},"nativeSrc":"371:13:87","nodeType":"YulFunctionCall","src":"371:13:87"},"variables":[{"name":"length","nativeSrc":"361:6:87","nodeType":"YulTypedName","src":"361:6:87","type":""}]},{"expression":{"arguments":[{"arguments":[{"name":"headStart","nativeSrc":"404:9:87","nodeType":"YulIdentifier","src":"404:9:87"},{"kind":"number","nativeSrc":"415:2:87","nodeType":"YulLiteral","src":"415:2:87","type":"","value":"32"}],"functionName":{"name":"add","nativeSrc":"400:3:87","nodeType":"YulIdentifier","src":"400:3:87"},"nativeSrc":"400:18:87","nodeType":"YulFunctionCall","src":"400:18:87"},{"name":"length","nativeSrc":"420:6:87","nodeType":"YulIdentifier","src":"420:6:87"}],"functionName":{"name":"mstore","nativeSrc":"393:6:87","nodeType":"YulIdentifier","src":"393:6:87"},"nativeSrc":"393:34:87","nodeType":"YulFunctionCall","src":"393:34:87"},"nativeSrc":"393:34:87","nodeType":"YulExpressionStatement","src":"393:34:87"},{"expression":{"arguments":[{"arguments":[{"name":"headStart","nativeSrc":"446:9:87","nodeType":"YulIdentifier","src":"446:9:87"},{"kind":"number","nativeSrc":"457:2:87","nodeType":"YulLiteral","src":"457:2:87","type":"","value":"64"}],"functionName":{"name":"add","nativeSrc":"442:3:87","nodeType":"YulIdentifier","src":"442:3:87"},"nativeSrc":"442:18:87","nodeType":"YulFunctionCall","src":"442:18:87"},{"arguments":[{"name":"value0","nativeSrc":"466:6:87","nodeType":"YulIdentifier","src":"466:6:87"},{"kind":"number","nativeSrc":"474:2:87","nodeType":"YulLiteral","src":"474:2:87","type":"","value":"32"}],"functionName":{"name":"add","nativeSrc":"462:3:87","nodeType":"YulIdentifier","src":"462:3:87"},"nativeSrc":"462:15:87","nodeType":"YulFunctionCall","src":"462:15:87"},{"name":"length","nativeSrc":"479:6:87","nodeType":"YulIdentifier","src":"479:6:87"}],"functionName":{"name":"mcopy","nativeSrc":"436:5:87","nodeType":"YulIdentifier","src":"436:5:87"},"nativeSrc":"436:50:87","nodeType":"YulFunctionCall","src":"436:50:87"},"nativeSrc":"436:50:87","nodeType":"YulExpressionStatement","src":"436:50:87"},{"expression":{"arguments":[{"arguments":[{"arguments":[{"name":"headStart","nativeSrc":"510:9:87","nodeType":"YulIdentifier","src":"510:9:87"},{"name":"length","nativeSrc":"521:6:87","nodeType":"YulIdentifier","src":"521:6:87"}],"functionName":{"name":"add","nativeSrc":"506:3:87","nodeType":"YulIdentifier","src":"506:3:87"},"nativeSrc":"506:22:87","nodeType":"YulFunctionCall","src":"506:22:87"},{"kind":"number","nativeSrc":"530:2:87","nodeType":"YulLiteral","src":"530:2:87","type":"","value":"64"}],"functionName":{"name":"add","nativeSrc":"502:3:87","nodeType":"YulIdentifier","src":"502:3:87"},"nativeSrc":"502:31:87","nodeType":"YulFunctionCall","src":"502:31:87"},{"kind":"number","nativeSrc":"535:1:87","nodeType":"YulLiteral","src":"535:1:87","type":"","value":"0"}],"functionName":{"name":"mstore","nativeSrc":"495:6:87","nodeType":"YulIdentifier","src":"495:6:87"},"nativeSrc":"495:42:87","nodeType":"YulFunctionCall","src":"495:42:87"},"nativeSrc":"495:42:87","nodeType":"YulExpressionStatement","src":"495:42:87"},{"nativeSrc":"546:62:87","nodeType":"YulAssignment","src":"546:62:87","value":{"arguments":[{"arguments":[{"name":"headStart","nativeSrc":"562:9:87","nodeType":"YulIdentifier","src":"562:9:87"},{"arguments":[{"arguments":[{"name":"length","nativeSrc":"581:6:87","nodeType":"YulIdentifier","src":"581:6:87"},{"kind":"number","nativeSrc":"589:2:87","nodeType":"YulLiteral","src":"589:2:87","type":"","value":"31"}],"functionName":{"name":"add","nativeSrc":"577:3:87","nodeType":"YulIdentifier","src":"577:3:87"},"nativeSrc":"577:15:87","nodeType":"YulFunctionCall","src":"577:15:87"},{"arguments":[{"kind":"number","nativeSrc":"598:2:87","nodeType":"YulLiteral","src":"598:2:87","type":"","value":"31"}],"functionName":{"name":"not","nativeSrc":"594:3:87","nodeType":"YulIdentifier","src":"594:3:87"},"nativeSrc":"594:7:87","nodeType":"YulFunctionCall","src":"594:7:87"}],"functionName":{"name":"and","nativeSrc":"573:3:87","nodeType":"YulIdentifier","src":"573:3:87"},"nativeSrc":"573:29:87","nodeType":"YulFunctionCall","src":"573:29:87"}],"functionName":{"name":"add","nativeSrc":"558:3:87","nodeType":"YulIdentifier","src":"558:3:87"},"nativeSrc":"558:45:87","nodeType":"YulFunctionCall","src":"558:45:87"},{"kind":"number","nativeSrc":"605:2:87","nodeType":"YulLiteral","src":"605:2:87","type":"","value":"64"}],"functionName":{"name":"add","nativeSrc":"554:3:87","nodeType":"YulIdentifier","src":"554:3:87"},"nativeSrc":"554:54:87","nodeType":"YulFunctionCall","src":"554:54:87"},"variableNames":[{"name":"tail","nativeSrc":"546:4:87","nodeType":"YulIdentifier","src":"546:4:87"}]}]},"name":"abi_encode_tuple_t_string_memory_ptr__to_t_string_memory_ptr__fromStack_reversed","nativeSrc":"196:418:87","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nativeSrc":"286:9:87","nodeType":"YulTypedName","src":"286:9:87","type":""},{"name":"value0","nativeSrc":"297:6:87","nodeType":"YulTypedName","src":"297:6:87","type":""}],"returnVariables":[{"name":"tail","nativeSrc":"308:4:87","nodeType":"YulTypedName","src":"308:4:87","type":""}],"src":"196:418:87"},{"body":{"nativeSrc":"689:156:87","nodeType":"YulBlock","src":"689:156:87","statements":[{"body":{"nativeSrc":"735:16:87","nodeType":"YulBlock","src":"735:16:87","statements":[{"expression":{"arguments":[{"kind":"number","nativeSrc":"744:1:87","nodeType":"YulLiteral","src":"744:1:87","type":"","value":"0"},{"kind":"number","nativeSrc":"747:1:87","nodeType":"YulLiteral","src":"747:1:87","type":"","value":"0"}],"functionName":{"name":"revert","nativeSrc":"737:6:87","nodeType":"YulIdentifier","src":"737:6:87"},"nativeSrc":"737:12:87","nodeType":"YulFunctionCall","src":"737:12:87"},"nativeSrc":"737:12:87","nodeType":"YulExpressionStatement","src":"737:12:87"}]},"condition":{"arguments":[{"arguments":[{"name":"dataEnd","nativeSrc":"710:7:87","nodeType":"YulIdentifier","src":"710:7:87"},{"name":"headStart","nativeSrc":"719:9:87","nodeType":"YulIdentifier","src":"719:9:87"}],"functionName":{"name":"sub","nativeSrc":"706:3:87","nodeType":"YulIdentifier","src":"706:3:87"},"nativeSrc":"706:23:87","nodeType":"YulFunctionCall","src":"706:23:87"},{"kind":"number","nativeSrc":"731:2:87","nodeType":"YulLiteral","src":"731:2:87","type":"","value":"32"}],"functionName":{"name":"slt","nativeSrc":"702:3:87","nodeType":"YulIdentifier","src":"702:3:87"},"nativeSrc":"702:32:87","nodeType":"YulFunctionCall","src":"702:32:87"},"nativeSrc":"699:52:87","nodeType":"YulIf","src":"699:52:87"},{"nativeSrc":"760:14:87","nodeType":"YulVariableDeclaration","src":"760:14:87","value":{"kind":"number","nativeSrc":"773:1:87","nodeType":"YulLiteral","src":"773:1:87","type":"","value":"0"},"variables":[{"name":"value","nativeSrc":"764:5:87","nodeType":"YulTypedName","src":"764:5:87","type":""}]},{"nativeSrc":"783:32:87","nodeType":"YulAssignment","src":"783:32:87","value":{"arguments":[{"name":"headStart","nativeSrc":"805:9:87","nodeType":"YulIdentifier","src":"805:9:87"}],"functionName":{"name":"calldataload","nativeSrc":"792:12:87","nodeType":"YulIdentifier","src":"792:12:87"},"nativeSrc":"792:23:87","nodeType":"YulFunctionCall","src":"792:23:87"},"variableNames":[{"name":"value","nativeSrc":"783:5:87","nodeType":"YulIdentifier","src":"783:5:87"}]},{"nativeSrc":"824:15:87","nodeType":"YulAssignment","src":"824:15:87","value":{"name":"value","nativeSrc":"834:5:87","nodeType":"YulIdentifier","src":"834:5:87"},"variableNames":[{"name":"value0","nativeSrc":"824:6:87","nodeType":"YulIdentifier","src":"824:6:87"}]}]},"name":"abi_decode_tuple_t_uint256","nativeSrc":"619:226:87","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nativeSrc":"655:9:87","nodeType":"YulTypedName","src":"655:9:87","type":""},{"name":"dataEnd","nativeSrc":"666:7:87","nodeType":"YulTypedName","src":"666:7:87","type":""}],"returnVariables":[{"name":"value0","nativeSrc":"678:6:87","nodeType":"YulTypedName","src":"678:6:87","type":""}],"src":"619:226:87"},{"body":{"nativeSrc":"899:124:87","nodeType":"YulBlock","src":"899:124:87","statements":[{"nativeSrc":"909:29:87","nodeType":"YulAssignment","src":"909:29:87","value":{"arguments":[{"name":"offset","nativeSrc":"931:6:87","nodeType":"YulIdentifier","src":"931:6:87"}],"functionName":{"name":"calldataload","nativeSrc":"918:12:87","nodeType":"YulIdentifier","src":"918:12:87"},"nativeSrc":"918:20:87","nodeType":"YulFunctionCall","src":"918:20:87"},"variableNames":[{"name":"value","nativeSrc":"909:5:87","nodeType":"YulIdentifier","src":"909:5:87"}]},{"body":{"nativeSrc":"1001:16:87","nodeType":"YulBlock","src":"1001:16:87","statements":[{"expression":{"arguments":[{"kind":"number","nativeSrc":"1010:1:87","nodeType":"YulLiteral","src":"1010:1:87","type":"","value":"0"},{"kind":"number","nativeSrc":"1013:1:87","nodeType":"YulLiteral","src":"1013:1:87","type":"","value":"0"}],"functionName":{"name":"revert","nativeSrc":"1003:6:87","nodeType":"YulIdentifier","src":"1003:6:87"},"nativeSrc":"1003:12:87","nodeType":"YulFunctionCall","src":"1003:12:87"},"nativeSrc":"1003:12:87","nodeType":"YulExpressionStatement","src":"1003:12:87"}]},"condition":{"arguments":[{"arguments":[{"name":"value","nativeSrc":"960:5:87","nodeType":"YulIdentifier","src":"960:5:87"},{"arguments":[{"name":"value","nativeSrc":"971:5:87","nodeType":"YulIdentifier","src":"971:5:87"},{"arguments":[{"arguments":[{"kind":"number","nativeSrc":"986:3:87","nodeType":"YulLiteral","src":"986:3:87","type":"","value":"160"},{"kind":"number","nativeSrc":"991:1:87","nodeType":"YulLiteral","src":"991:1:87","type":"","value":"1"}],"functionName":{"name":"shl","nativeSrc":"982:3:87","nodeType":"YulIdentifier","src":"982:3:87"},"nativeSrc":"982:11:87","nodeType":"YulFunctionCall","src":"982:11:87"},{"kind":"number","nativeSrc":"995:1:87","nodeType":"YulLiteral","src":"995:1:87","type":"","value":"1"}],"functionName":{"name":"sub","nativeSrc":"978:3:87","nodeType":"YulIdentifier","src":"978:3:87"},"nativeSrc":"978:19:87","nodeType":"YulFunctionCall","src":"978:19:87"}],"functionName":{"name":"and","nativeSrc":"967:3:87","nodeType":"YulIdentifier","src":"967:3:87"},"nativeSrc":"967:31:87","nodeType":"YulFunctionCall","src":"967:31:87"}],"functionName":{"name":"eq","nativeSrc":"957:2:87","nodeType":"YulIdentifier","src":"957:2:87"},"nativeSrc":"957:42:87","nodeType":"YulFunctionCall","src":"957:42:87"}],"functionName":{"name":"iszero","nativeSrc":"950:6:87","nodeType":"YulIdentifier","src":"950:6:87"},"nativeSrc":"950:50:87","nodeType":"YulFunctionCall","src":"950:50:87"},"nativeSrc":"947:70:87","nodeType":"YulIf","src":"947:70:87"}]},"name":"abi_decode_address","nativeSrc":"850:173:87","nodeType":"YulFunctionDefinition","parameters":[{"name":"offset","nativeSrc":"878:6:87","nodeType":"YulTypedName","src":"878:6:87","type":""}],"returnVariables":[{"name":"value","nativeSrc":"889:5:87","nodeType":"YulTypedName","src":"889:5:87","type":""}],"src":"850:173:87"},{"body":{"nativeSrc":"1115:213:87","nodeType":"YulBlock","src":"1115:213:87","statements":[{"body":{"nativeSrc":"1161:16:87","nodeType":"YulBlock","src":"1161:16:87","statements":[{"expression":{"arguments":[{"kind":"number","nativeSrc":"1170:1:87","nodeType":"YulLiteral","src":"1170:1:87","type":"","value":"0"},{"kind":"number","nativeSrc":"1173:1:87","nodeType":"YulLiteral","src":"1173:1:87","type":"","value":"0"}],"functionName":{"name":"revert","nativeSrc":"1163:6:87","nodeType":"YulIdentifier","src":"1163:6:87"},"nativeSrc":"1163:12:87","nodeType":"YulFunctionCall","src":"1163:12:87"},"nativeSrc":"1163:12:87","nodeType":"YulExpressionStatement","src":"1163:12:87"}]},"condition":{"arguments":[{"arguments":[{"name":"dataEnd","nativeSrc":"1136:7:87","nodeType":"YulIdentifier","src":"1136:7:87"},{"name":"headStart","nativeSrc":"1145:9:87","nodeType":"YulIdentifier","src":"1145:9:87"}],"functionName":{"name":"sub","nativeSrc":"1132:3:87","nodeType":"YulIdentifier","src":"1132:3:87"},"nativeSrc":"1132:23:87","nodeType":"YulFunctionCall","src":"1132:23:87"},{"kind":"number","nativeSrc":"1157:2:87","nodeType":"YulLiteral","src":"1157:2:87","type":"","value":"64"}],"functionName":{"name":"slt","nativeSrc":"1128:3:87","nodeType":"YulIdentifier","src":"1128:3:87"},"nativeSrc":"1128:32:87","nodeType":"YulFunctionCall","src":"1128:32:87"},"nativeSrc":"1125:52:87","nodeType":"YulIf","src":"1125:52:87"},{"nativeSrc":"1186:39:87","nodeType":"YulAssignment","src":"1186:39:87","value":{"arguments":[{"name":"headStart","nativeSrc":"1215:9:87","nodeType":"YulIdentifier","src":"1215:9:87"}],"functionName":{"name":"abi_decode_address","nativeSrc":"1196:18:87","nodeType":"YulIdentifier","src":"1196:18:87"},"nativeSrc":"1196:29:87","nodeType":"YulFunctionCall","src":"1196:29:87"},"variableNames":[{"name":"value0","nativeSrc":"1186:6:87","nodeType":"YulIdentifier","src":"1186:6:87"}]},{"nativeSrc":"1234:14:87","nodeType":"YulVariableDeclaration","src":"1234:14:87","value":{"kind":"number","nativeSrc":"1247:1:87","nodeType":"YulLiteral","src":"1247:1:87","type":"","value":"0"},"variables":[{"name":"value","nativeSrc":"1238:5:87","nodeType":"YulTypedName","src":"1238:5:87","type":""}]},{"nativeSrc":"1257:41:87","nodeType":"YulAssignment","src":"1257:41:87","value":{"arguments":[{"arguments":[{"name":"headStart","nativeSrc":"1283:9:87","nodeType":"YulIdentifier","src":"1283:9:87"},{"kind":"number","nativeSrc":"1294:2:87","nodeType":"YulLiteral","src":"1294:2:87","type":"","value":"32"}],"functionName":{"name":"add","nativeSrc":"1279:3:87","nodeType":"YulIdentifier","src":"1279:3:87"},"nativeSrc":"1279:18:87","nodeType":"YulFunctionCall","src":"1279:18:87"}],"functionName":{"name":"calldataload","nativeSrc":"1266:12:87","nodeType":"YulIdentifier","src":"1266:12:87"},"nativeSrc":"1266:32:87","nodeType":"YulFunctionCall","src":"1266:32:87"},"variableNames":[{"name":"value","nativeSrc":"1257:5:87","nodeType":"YulIdentifier","src":"1257:5:87"}]},{"nativeSrc":"1307:15:87","nodeType":"YulAssignment","src":"1307:15:87","value":{"name":"value","nativeSrc":"1317:5:87","nodeType":"YulIdentifier","src":"1317:5:87"},"variableNames":[{"name":"value1","nativeSrc":"1307:6:87","nodeType":"YulIdentifier","src":"1307:6:87"}]}]},"name":"abi_decode_tuple_t_addresst_uint256","nativeSrc":"1028:300:87","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nativeSrc":"1073:9:87","nodeType":"YulTypedName","src":"1073:9:87","type":""},{"name":"dataEnd","nativeSrc":"1084:7:87","nodeType":"YulTypedName","src":"1084:7:87","type":""}],"returnVariables":[{"name":"value0","nativeSrc":"1096:6:87","nodeType":"YulTypedName","src":"1096:6:87","type":""},{"name":"value1","nativeSrc":"1104:6:87","nodeType":"YulTypedName","src":"1104:6:87","type":""}],"src":"1028:300:87"},{"body":{"nativeSrc":"1428:92:87","nodeType":"YulBlock","src":"1428:92:87","statements":[{"nativeSrc":"1438:26:87","nodeType":"YulAssignment","src":"1438:26:87","value":{"arguments":[{"name":"headStart","nativeSrc":"1450:9:87","nodeType":"YulIdentifier","src":"1450:9:87"},{"kind":"number","nativeSrc":"1461:2:87","nodeType":"YulLiteral","src":"1461:2:87","type":"","value":"32"}],"functionName":{"name":"add","nativeSrc":"1446:3:87","nodeType":"YulIdentifier","src":"1446:3:87"},"nativeSrc":"1446:18:87","nodeType":"YulFunctionCall","src":"1446:18:87"},"variableNames":[{"name":"tail","nativeSrc":"1438:4:87","nodeType":"YulIdentifier","src":"1438:4:87"}]},{"expression":{"arguments":[{"name":"headStart","nativeSrc":"1480:9:87","nodeType":"YulIdentifier","src":"1480:9:87"},{"arguments":[{"arguments":[{"name":"value0","nativeSrc":"1505:6:87","nodeType":"YulIdentifier","src":"1505:6:87"}],"functionName":{"name":"iszero","nativeSrc":"1498:6:87","nodeType":"YulIdentifier","src":"1498:6:87"},"nativeSrc":"1498:14:87","nodeType":"YulFunctionCall","src":"1498:14:87"}],"functionName":{"name":"iszero","nativeSrc":"1491:6:87","nodeType":"YulIdentifier","src":"1491:6:87"},"nativeSrc":"1491:22:87","nodeType":"YulFunctionCall","src":"1491:22:87"}],"functionName":{"name":"mstore","nativeSrc":"1473:6:87","nodeType":"YulIdentifier","src":"1473:6:87"},"nativeSrc":"1473:41:87","nodeType":"YulFunctionCall","src":"1473:41:87"},"nativeSrc":"1473:41:87","nodeType":"YulExpressionStatement","src":"1473:41:87"}]},"name":"abi_encode_tuple_t_bool__to_t_bool__fromStack_reversed","nativeSrc":"1333:187:87","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nativeSrc":"1397:9:87","nodeType":"YulTypedName","src":"1397:9:87","type":""},{"name":"value0","nativeSrc":"1408:6:87","nodeType":"YulTypedName","src":"1408:6:87","type":""}],"returnVariables":[{"name":"tail","nativeSrc":"1419:4:87","nodeType":"YulTypedName","src":"1419:4:87","type":""}],"src":"1333:187:87"},{"body":{"nativeSrc":"1629:270:87","nodeType":"YulBlock","src":"1629:270:87","statements":[{"body":{"nativeSrc":"1675:16:87","nodeType":"YulBlock","src":"1675:16:87","statements":[{"expression":{"arguments":[{"kind":"number","nativeSrc":"1684:1:87","nodeType":"YulLiteral","src":"1684:1:87","type":"","value":"0"},{"kind":"number","nativeSrc":"1687:1:87","nodeType":"YulLiteral","src":"1687:1:87","type":"","value":"0"}],"functionName":{"name":"revert","nativeSrc":"1677:6:87","nodeType":"YulIdentifier","src":"1677:6:87"},"nativeSrc":"1677:12:87","nodeType":"YulFunctionCall","src":"1677:12:87"},"nativeSrc":"1677:12:87","nodeType":"YulExpressionStatement","src":"1677:12:87"}]},"condition":{"arguments":[{"arguments":[{"name":"dataEnd","nativeSrc":"1650:7:87","nodeType":"YulIdentifier","src":"1650:7:87"},{"name":"headStart","nativeSrc":"1659:9:87","nodeType":"YulIdentifier","src":"1659:9:87"}],"functionName":{"name":"sub","nativeSrc":"1646:3:87","nodeType":"YulIdentifier","src":"1646:3:87"},"nativeSrc":"1646:23:87","nodeType":"YulFunctionCall","src":"1646:23:87"},{"kind":"number","nativeSrc":"1671:2:87","nodeType":"YulLiteral","src":"1671:2:87","type":"","value":"96"}],"functionName":{"name":"slt","nativeSrc":"1642:3:87","nodeType":"YulIdentifier","src":"1642:3:87"},"nativeSrc":"1642:32:87","nodeType":"YulFunctionCall","src":"1642:32:87"},"nativeSrc":"1639:52:87","nodeType":"YulIf","src":"1639:52:87"},{"nativeSrc":"1700:39:87","nodeType":"YulAssignment","src":"1700:39:87","value":{"arguments":[{"name":"headStart","nativeSrc":"1729:9:87","nodeType":"YulIdentifier","src":"1729:9:87"}],"functionName":{"name":"abi_decode_address","nativeSrc":"1710:18:87","nodeType":"YulIdentifier","src":"1710:18:87"},"nativeSrc":"1710:29:87","nodeType":"YulFunctionCall","src":"1710:29:87"},"variableNames":[{"name":"value0","nativeSrc":"1700:6:87","nodeType":"YulIdentifier","src":"1700:6:87"}]},{"nativeSrc":"1748:48:87","nodeType":"YulAssignment","src":"1748:48:87","value":{"arguments":[{"arguments":[{"name":"headStart","nativeSrc":"1781:9:87","nodeType":"YulIdentifier","src":"1781:9:87"},{"kind":"number","nativeSrc":"1792:2:87","nodeType":"YulLiteral","src":"1792:2:87","type":"","value":"32"}],"functionName":{"name":"add","nativeSrc":"1777:3:87","nodeType":"YulIdentifier","src":"1777:3:87"},"nativeSrc":"1777:18:87","nodeType":"YulFunctionCall","src":"1777:18:87"}],"functionName":{"name":"abi_decode_address","nativeSrc":"1758:18:87","nodeType":"YulIdentifier","src":"1758:18:87"},"nativeSrc":"1758:38:87","nodeType":"YulFunctionCall","src":"1758:38:87"},"variableNames":[{"name":"value1","nativeSrc":"1748:6:87","nodeType":"YulIdentifier","src":"1748:6:87"}]},{"nativeSrc":"1805:14:87","nodeType":"YulVariableDeclaration","src":"1805:14:87","value":{"kind":"number","nativeSrc":"1818:1:87","nodeType":"YulLiteral","src":"1818:1:87","type":"","value":"0"},"variables":[{"name":"value","nativeSrc":"1809:5:87","nodeType":"YulTypedName","src":"1809:5:87","type":""}]},{"nativeSrc":"1828:41:87","nodeType":"YulAssignment","src":"1828:41:87","value":{"arguments":[{"arguments":[{"name":"headStart","nativeSrc":"1854:9:87","nodeType":"YulIdentifier","src":"1854:9:87"},{"kind":"number","nativeSrc":"1865:2:87","nodeType":"YulLiteral","src":"1865:2:87","type":"","value":"64"}],"functionName":{"name":"add","nativeSrc":"1850:3:87","nodeType":"YulIdentifier","src":"1850:3:87"},"nativeSrc":"1850:18:87","nodeType":"YulFunctionCall","src":"1850:18:87"}],"functionName":{"name":"calldataload","nativeSrc":"1837:12:87","nodeType":"YulIdentifier","src":"1837:12:87"},"nativeSrc":"1837:32:87","nodeType":"YulFunctionCall","src":"1837:32:87"},"variableNames":[{"name":"value","nativeSrc":"1828:5:87","nodeType":"YulIdentifier","src":"1828:5:87"}]},{"nativeSrc":"1878:15:87","nodeType":"YulAssignment","src":"1878:15:87","value":{"name":"value","nativeSrc":"1888:5:87","nodeType":"YulIdentifier","src":"1888:5:87"},"variableNames":[{"name":"value2","nativeSrc":"1878:6:87","nodeType":"YulIdentifier","src":"1878:6:87"}]}]},"name":"abi_decode_tuple_t_addresst_addresst_uint256","nativeSrc":"1525:374:87","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nativeSrc":"1579:9:87","nodeType":"YulTypedName","src":"1579:9:87","type":""},{"name":"dataEnd","nativeSrc":"1590:7:87","nodeType":"YulTypedName","src":"1590:7:87","type":""}],"returnVariables":[{"name":"value0","nativeSrc":"1602:6:87","nodeType":"YulTypedName","src":"1602:6:87","type":""},{"name":"value1","nativeSrc":"1610:6:87","nodeType":"YulTypedName","src":"1610:6:87","type":""},{"name":"value2","nativeSrc":"1618:6:87","nodeType":"YulTypedName","src":"1618:6:87","type":""}],"src":"1525:374:87"},{"body":{"nativeSrc":"2001:87:87","nodeType":"YulBlock","src":"2001:87:87","statements":[{"nativeSrc":"2011:26:87","nodeType":"YulAssignment","src":"2011:26:87","value":{"arguments":[{"name":"headStart","nativeSrc":"2023:9:87","nodeType":"YulIdentifier","src":"2023:9:87"},{"kind":"number","nativeSrc":"2034:2:87","nodeType":"YulLiteral","src":"2034:2:87","type":"","value":"32"}],"functionName":{"name":"add","nativeSrc":"2019:3:87","nodeType":"YulIdentifier","src":"2019:3:87"},"nativeSrc":"2019:18:87","nodeType":"YulFunctionCall","src":"2019:18:87"},"variableNames":[{"name":"tail","nativeSrc":"2011:4:87","nodeType":"YulIdentifier","src":"2011:4:87"}]},{"expression":{"arguments":[{"name":"headStart","nativeSrc":"2053:9:87","nodeType":"YulIdentifier","src":"2053:9:87"},{"arguments":[{"name":"value0","nativeSrc":"2068:6:87","nodeType":"YulIdentifier","src":"2068:6:87"},{"kind":"number","nativeSrc":"2076:4:87","nodeType":"YulLiteral","src":"2076:4:87","type":"","value":"0xff"}],"functionName":{"name":"and","nativeSrc":"2064:3:87","nodeType":"YulIdentifier","src":"2064:3:87"},"nativeSrc":"2064:17:87","nodeType":"YulFunctionCall","src":"2064:17:87"}],"functionName":{"name":"mstore","nativeSrc":"2046:6:87","nodeType":"YulIdentifier","src":"2046:6:87"},"nativeSrc":"2046:36:87","nodeType":"YulFunctionCall","src":"2046:36:87"},"nativeSrc":"2046:36:87","nodeType":"YulExpressionStatement","src":"2046:36:87"}]},"name":"abi_encode_tuple_t_uint8__to_t_uint8__fromStack_reversed","nativeSrc":"1904:184:87","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nativeSrc":"1970:9:87","nodeType":"YulTypedName","src":"1970:9:87","type":""},{"name":"value0","nativeSrc":"1981:6:87","nodeType":"YulTypedName","src":"1981:6:87","type":""}],"returnVariables":[{"name":"tail","nativeSrc":"1992:4:87","nodeType":"YulTypedName","src":"1992:4:87","type":""}],"src":"1904:184:87"},{"body":{"nativeSrc":"2194:102:87","nodeType":"YulBlock","src":"2194:102:87","statements":[{"nativeSrc":"2204:26:87","nodeType":"YulAssignment","src":"2204:26:87","value":{"arguments":[{"name":"headStart","nativeSrc":"2216:9:87","nodeType":"YulIdentifier","src":"2216:9:87"},{"kind":"number","nativeSrc":"2227:2:87","nodeType":"YulLiteral","src":"2227:2:87","type":"","value":"32"}],"functionName":{"name":"add","nativeSrc":"2212:3:87","nodeType":"YulIdentifier","src":"2212:3:87"},"nativeSrc":"2212:18:87","nodeType":"YulFunctionCall","src":"2212:18:87"},"variableNames":[{"name":"tail","nativeSrc":"2204:4:87","nodeType":"YulIdentifier","src":"2204:4:87"}]},{"expression":{"arguments":[{"name":"headStart","nativeSrc":"2246:9:87","nodeType":"YulIdentifier","src":"2246:9:87"},{"arguments":[{"name":"value0","nativeSrc":"2261:6:87","nodeType":"YulIdentifier","src":"2261:6:87"},{"arguments":[{"arguments":[{"kind":"number","nativeSrc":"2277:3:87","nodeType":"YulLiteral","src":"2277:3:87","type":"","value":"160"},{"kind":"number","nativeSrc":"2282:1:87","nodeType":"YulLiteral","src":"2282:1:87","type":"","value":"1"}],"functionName":{"name":"shl","nativeSrc":"2273:3:87","nodeType":"YulIdentifier","src":"2273:3:87"},"nativeSrc":"2273:11:87","nodeType":"YulFunctionCall","src":"2273:11:87"},{"kind":"number","nativeSrc":"2286:1:87","nodeType":"YulLiteral","src":"2286:1:87","type":"","value":"1"}],"functionName":{"name":"sub","nativeSrc":"2269:3:87","nodeType":"YulIdentifier","src":"2269:3:87"},"nativeSrc":"2269:19:87","nodeType":"YulFunctionCall","src":"2269:19:87"}],"functionName":{"name":"and","nativeSrc":"2257:3:87","nodeType":"YulIdentifier","src":"2257:3:87"},"nativeSrc":"2257:32:87","nodeType":"YulFunctionCall","src":"2257:32:87"}],"functionName":{"name":"mstore","nativeSrc":"2239:6:87","nodeType":"YulIdentifier","src":"2239:6:87"},"nativeSrc":"2239:51:87","nodeType":"YulFunctionCall","src":"2239:51:87"},"nativeSrc":"2239:51:87","nodeType":"YulExpressionStatement","src":"2239:51:87"}]},"name":"abi_encode_tuple_t_address__to_t_address__fromStack_reversed","nativeSrc":"2093:203:87","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nativeSrc":"2163:9:87","nodeType":"YulTypedName","src":"2163:9:87","type":""},{"name":"value0","nativeSrc":"2174:6:87","nodeType":"YulTypedName","src":"2174:6:87","type":""}],"returnVariables":[{"name":"tail","nativeSrc":"2185:4:87","nodeType":"YulTypedName","src":"2185:4:87","type":""}],"src":"2093:203:87"},{"body":{"nativeSrc":"2371:116:87","nodeType":"YulBlock","src":"2371:116:87","statements":[{"body":{"nativeSrc":"2417:16:87","nodeType":"YulBlock","src":"2417:16:87","statements":[{"expression":{"arguments":[{"kind":"number","nativeSrc":"2426:1:87","nodeType":"YulLiteral","src":"2426:1:87","type":"","value":"0"},{"kind":"number","nativeSrc":"2429:1:87","nodeType":"YulLiteral","src":"2429:1:87","type":"","value":"0"}],"functionName":{"name":"revert","nativeSrc":"2419:6:87","nodeType":"YulIdentifier","src":"2419:6:87"},"nativeSrc":"2419:12:87","nodeType":"YulFunctionCall","src":"2419:12:87"},"nativeSrc":"2419:12:87","nodeType":"YulExpressionStatement","src":"2419:12:87"}]},"condition":{"arguments":[{"arguments":[{"name":"dataEnd","nativeSrc":"2392:7:87","nodeType":"YulIdentifier","src":"2392:7:87"},{"name":"headStart","nativeSrc":"2401:9:87","nodeType":"YulIdentifier","src":"2401:9:87"}],"functionName":{"name":"sub","nativeSrc":"2388:3:87","nodeType":"YulIdentifier","src":"2388:3:87"},"nativeSrc":"2388:23:87","nodeType":"YulFunctionCall","src":"2388:23:87"},{"kind":"number","nativeSrc":"2413:2:87","nodeType":"YulLiteral","src":"2413:2:87","type":"","value":"32"}],"functionName":{"name":"slt","nativeSrc":"2384:3:87","nodeType":"YulIdentifier","src":"2384:3:87"},"nativeSrc":"2384:32:87","nodeType":"YulFunctionCall","src":"2384:32:87"},"nativeSrc":"2381:52:87","nodeType":"YulIf","src":"2381:52:87"},{"nativeSrc":"2442:39:87","nodeType":"YulAssignment","src":"2442:39:87","value":{"arguments":[{"name":"headStart","nativeSrc":"2471:9:87","nodeType":"YulIdentifier","src":"2471:9:87"}],"functionName":{"name":"abi_decode_address","nativeSrc":"2452:18:87","nodeType":"YulIdentifier","src":"2452:18:87"},"nativeSrc":"2452:29:87","nodeType":"YulFunctionCall","src":"2452:29:87"},"variableNames":[{"name":"value0","nativeSrc":"2442:6:87","nodeType":"YulIdentifier","src":"2442:6:87"}]}]},"name":"abi_decode_tuple_t_address","nativeSrc":"2301:186:87","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nativeSrc":"2337:9:87","nodeType":"YulTypedName","src":"2337:9:87","type":""},{"name":"dataEnd","nativeSrc":"2348:7:87","nodeType":"YulTypedName","src":"2348:7:87","type":""}],"returnVariables":[{"name":"value0","nativeSrc":"2360:6:87","nodeType":"YulTypedName","src":"2360:6:87","type":""}],"src":"2301:186:87"},{"body":{"nativeSrc":"2579:213:87","nodeType":"YulBlock","src":"2579:213:87","statements":[{"body":{"nativeSrc":"2625:16:87","nodeType":"YulBlock","src":"2625:16:87","statements":[{"expression":{"arguments":[{"kind":"number","nativeSrc":"2634:1:87","nodeType":"YulLiteral","src":"2634:1:87","type":"","value":"0"},{"kind":"number","nativeSrc":"2637:1:87","nodeType":"YulLiteral","src":"2637:1:87","type":"","value":"0"}],"functionName":{"name":"revert","nativeSrc":"2627:6:87","nodeType":"YulIdentifier","src":"2627:6:87"},"nativeSrc":"2627:12:87","nodeType":"YulFunctionCall","src":"2627:12:87"},"nativeSrc":"2627:12:87","nodeType":"YulExpressionStatement","src":"2627:12:87"}]},"condition":{"arguments":[{"arguments":[{"name":"dataEnd","nativeSrc":"2600:7:87","nodeType":"YulIdentifier","src":"2600:7:87"},{"name":"headStart","nativeSrc":"2609:9:87","nodeType":"YulIdentifier","src":"2609:9:87"}],"functionName":{"name":"sub","nativeSrc":"2596:3:87","nodeType":"YulIdentifier","src":"2596:3:87"},"nativeSrc":"2596:23:87","nodeType":"YulFunctionCall","src":"2596:23:87"},{"kind":"number","nativeSrc":"2621:2:87","nodeType":"YulLiteral","src":"2621:2:87","type":"","value":"64"}],"functionName":{"name":"slt","nativeSrc":"2592:3:87","nodeType":"YulIdentifier","src":"2592:3:87"},"nativeSrc":"2592:32:87","nodeType":"YulFunctionCall","src":"2592:32:87"},"nativeSrc":"2589:52:87","nodeType":"YulIf","src":"2589:52:87"},{"nativeSrc":"2650:14:87","nodeType":"YulVariableDeclaration","src":"2650:14:87","value":{"kind":"number","nativeSrc":"2663:1:87","nodeType":"YulLiteral","src":"2663:1:87","type":"","value":"0"},"variables":[{"name":"value","nativeSrc":"2654:5:87","nodeType":"YulTypedName","src":"2654:5:87","type":""}]},{"nativeSrc":"2673:32:87","nodeType":"YulAssignment","src":"2673:32:87","value":{"arguments":[{"name":"headStart","nativeSrc":"2695:9:87","nodeType":"YulIdentifier","src":"2695:9:87"}],"functionName":{"name":"calldataload","nativeSrc":"2682:12:87","nodeType":"YulIdentifier","src":"2682:12:87"},"nativeSrc":"2682:23:87","nodeType":"YulFunctionCall","src":"2682:23:87"},"variableNames":[{"name":"value","nativeSrc":"2673:5:87","nodeType":"YulIdentifier","src":"2673:5:87"}]},{"nativeSrc":"2714:15:87","nodeType":"YulAssignment","src":"2714:15:87","value":{"name":"value","nativeSrc":"2724:5:87","nodeType":"YulIdentifier","src":"2724:5:87"},"variableNames":[{"name":"value0","nativeSrc":"2714:6:87","nodeType":"YulIdentifier","src":"2714:6:87"}]},{"nativeSrc":"2738:48:87","nodeType":"YulAssignment","src":"2738:48:87","value":{"arguments":[{"arguments":[{"name":"headStart","nativeSrc":"2771:9:87","nodeType":"YulIdentifier","src":"2771:9:87"},{"kind":"number","nativeSrc":"2782:2:87","nodeType":"YulLiteral","src":"2782:2:87","type":"","value":"32"}],"functionName":{"name":"add","nativeSrc":"2767:3:87","nodeType":"YulIdentifier","src":"2767:3:87"},"nativeSrc":"2767:18:87","nodeType":"YulFunctionCall","src":"2767:18:87"}],"functionName":{"name":"abi_decode_address","nativeSrc":"2748:18:87","nodeType":"YulIdentifier","src":"2748:18:87"},"nativeSrc":"2748:38:87","nodeType":"YulFunctionCall","src":"2748:38:87"},"variableNames":[{"name":"value1","nativeSrc":"2738:6:87","nodeType":"YulIdentifier","src":"2738:6:87"}]}]},"name":"abi_decode_tuple_t_uint256t_address","nativeSrc":"2492:300:87","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nativeSrc":"2537:9:87","nodeType":"YulTypedName","src":"2537:9:87","type":""},{"name":"dataEnd","nativeSrc":"2548:7:87","nodeType":"YulTypedName","src":"2548:7:87","type":""}],"returnVariables":[{"name":"value0","nativeSrc":"2560:6:87","nodeType":"YulTypedName","src":"2560:6:87","type":""},{"name":"value1","nativeSrc":"2568:6:87","nodeType":"YulTypedName","src":"2568:6:87","type":""}],"src":"2492:300:87"},{"body":{"nativeSrc":"2864:206:87","nodeType":"YulBlock","src":"2864:206:87","statements":[{"body":{"nativeSrc":"2910:16:87","nodeType":"YulBlock","src":"2910:16:87","statements":[{"expression":{"arguments":[{"kind":"number","nativeSrc":"2919:1:87","nodeType":"YulLiteral","src":"2919:1:87","type":"","value":"0"},{"kind":"number","nativeSrc":"2922:1:87","nodeType":"YulLiteral","src":"2922:1:87","type":"","value":"0"}],"functionName":{"name":"revert","nativeSrc":"2912:6:87","nodeType":"YulIdentifier","src":"2912:6:87"},"nativeSrc":"2912:12:87","nodeType":"YulFunctionCall","src":"2912:12:87"},"nativeSrc":"2912:12:87","nodeType":"YulExpressionStatement","src":"2912:12:87"}]},"condition":{"arguments":[{"arguments":[{"name":"dataEnd","nativeSrc":"2885:7:87","nodeType":"YulIdentifier","src":"2885:7:87"},{"name":"headStart","nativeSrc":"2894:9:87","nodeType":"YulIdentifier","src":"2894:9:87"}],"functionName":{"name":"sub","nativeSrc":"2881:3:87","nodeType":"YulIdentifier","src":"2881:3:87"},"nativeSrc":"2881:23:87","nodeType":"YulFunctionCall","src":"2881:23:87"},{"kind":"number","nativeSrc":"2906:2:87","nodeType":"YulLiteral","src":"2906:2:87","type":"","value":"32"}],"functionName":{"name":"slt","nativeSrc":"2877:3:87","nodeType":"YulIdentifier","src":"2877:3:87"},"nativeSrc":"2877:32:87","nodeType":"YulFunctionCall","src":"2877:32:87"},"nativeSrc":"2874:52:87","nodeType":"YulIf","src":"2874:52:87"},{"nativeSrc":"2935:36:87","nodeType":"YulVariableDeclaration","src":"2935:36:87","value":{"arguments":[{"name":"headStart","nativeSrc":"2961:9:87","nodeType":"YulIdentifier","src":"2961:9:87"}],"functionName":{"name":"calldataload","nativeSrc":"2948:12:87","nodeType":"YulIdentifier","src":"2948:12:87"},"nativeSrc":"2948:23:87","nodeType":"YulFunctionCall","src":"2948:23:87"},"variables":[{"name":"value","nativeSrc":"2939:5:87","nodeType":"YulTypedName","src":"2939:5:87","type":""}]},{"body":{"nativeSrc":"3024:16:87","nodeType":"YulBlock","src":"3024:16:87","statements":[{"expression":{"arguments":[{"kind":"number","nativeSrc":"3033:1:87","nodeType":"YulLiteral","src":"3033:1:87","type":"","value":"0"},{"kind":"number","nativeSrc":"3036:1:87","nodeType":"YulLiteral","src":"3036:1:87","type":"","value":"0"}],"functionName":{"name":"revert","nativeSrc":"3026:6:87","nodeType":"YulIdentifier","src":"3026:6:87"},"nativeSrc":"3026:12:87","nodeType":"YulFunctionCall","src":"3026:12:87"},"nativeSrc":"3026:12:87","nodeType":"YulExpressionStatement","src":"3026:12:87"}]},"condition":{"arguments":[{"arguments":[{"name":"value","nativeSrc":"2993:5:87","nodeType":"YulIdentifier","src":"2993:5:87"},{"arguments":[{"arguments":[{"name":"value","nativeSrc":"3014:5:87","nodeType":"YulIdentifier","src":"3014:5:87"}],"functionName":{"name":"iszero","nativeSrc":"3007:6:87","nodeType":"YulIdentifier","src":"3007:6:87"},"nativeSrc":"3007:13:87","nodeType":"YulFunctionCall","src":"3007:13:87"}],"functionName":{"name":"iszero","nativeSrc":"3000:6:87","nodeType":"YulIdentifier","src":"3000:6:87"},"nativeSrc":"3000:21:87","nodeType":"YulFunctionCall","src":"3000:21:87"}],"functionName":{"name":"eq","nativeSrc":"2990:2:87","nodeType":"YulIdentifier","src":"2990:2:87"},"nativeSrc":"2990:32:87","nodeType":"YulFunctionCall","src":"2990:32:87"}],"functionName":{"name":"iszero","nativeSrc":"2983:6:87","nodeType":"YulIdentifier","src":"2983:6:87"},"nativeSrc":"2983:40:87","nodeType":"YulFunctionCall","src":"2983:40:87"},"nativeSrc":"2980:60:87","nodeType":"YulIf","src":"2980:60:87"},{"nativeSrc":"3049:15:87","nodeType":"YulAssignment","src":"3049:15:87","value":{"name":"value","nativeSrc":"3059:5:87","nodeType":"YulIdentifier","src":"3059:5:87"},"variableNames":[{"name":"value0","nativeSrc":"3049:6:87","nodeType":"YulIdentifier","src":"3049:6:87"}]}]},"name":"abi_decode_tuple_t_bool","nativeSrc":"2797:273:87","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nativeSrc":"2830:9:87","nodeType":"YulTypedName","src":"2830:9:87","type":""},{"name":"dataEnd","nativeSrc":"2841:7:87","nodeType":"YulTypedName","src":"2841:7:87","type":""}],"returnVariables":[{"name":"value0","nativeSrc":"2853:6:87","nodeType":"YulTypedName","src":"2853:6:87","type":""}],"src":"2797:273:87"},{"body":{"nativeSrc":"3179:270:87","nodeType":"YulBlock","src":"3179:270:87","statements":[{"body":{"nativeSrc":"3225:16:87","nodeType":"YulBlock","src":"3225:16:87","statements":[{"expression":{"arguments":[{"kind":"number","nativeSrc":"3234:1:87","nodeType":"YulLiteral","src":"3234:1:87","type":"","value":"0"},{"kind":"number","nativeSrc":"3237:1:87","nodeType":"YulLiteral","src":"3237:1:87","type":"","value":"0"}],"functionName":{"name":"revert","nativeSrc":"3227:6:87","nodeType":"YulIdentifier","src":"3227:6:87"},"nativeSrc":"3227:12:87","nodeType":"YulFunctionCall","src":"3227:12:87"},"nativeSrc":"3227:12:87","nodeType":"YulExpressionStatement","src":"3227:12:87"}]},"condition":{"arguments":[{"arguments":[{"name":"dataEnd","nativeSrc":"3200:7:87","nodeType":"YulIdentifier","src":"3200:7:87"},{"name":"headStart","nativeSrc":"3209:9:87","nodeType":"YulIdentifier","src":"3209:9:87"}],"functionName":{"name":"sub","nativeSrc":"3196:3:87","nodeType":"YulIdentifier","src":"3196:3:87"},"nativeSrc":"3196:23:87","nodeType":"YulFunctionCall","src":"3196:23:87"},{"kind":"number","nativeSrc":"3221:2:87","nodeType":"YulLiteral","src":"3221:2:87","type":"","value":"96"}],"functionName":{"name":"slt","nativeSrc":"3192:3:87","nodeType":"YulIdentifier","src":"3192:3:87"},"nativeSrc":"3192:32:87","nodeType":"YulFunctionCall","src":"3192:32:87"},"nativeSrc":"3189:52:87","nodeType":"YulIf","src":"3189:52:87"},{"nativeSrc":"3250:14:87","nodeType":"YulVariableDeclaration","src":"3250:14:87","value":{"kind":"number","nativeSrc":"3263:1:87","nodeType":"YulLiteral","src":"3263:1:87","type":"","value":"0"},"variables":[{"name":"value","nativeSrc":"3254:5:87","nodeType":"YulTypedName","src":"3254:5:87","type":""}]},{"nativeSrc":"3273:32:87","nodeType":"YulAssignment","src":"3273:32:87","value":{"arguments":[{"name":"headStart","nativeSrc":"3295:9:87","nodeType":"YulIdentifier","src":"3295:9:87"}],"functionName":{"name":"calldataload","nativeSrc":"3282:12:87","nodeType":"YulIdentifier","src":"3282:12:87"},"nativeSrc":"3282:23:87","nodeType":"YulFunctionCall","src":"3282:23:87"},"variableNames":[{"name":"value","nativeSrc":"3273:5:87","nodeType":"YulIdentifier","src":"3273:5:87"}]},{"nativeSrc":"3314:15:87","nodeType":"YulAssignment","src":"3314:15:87","value":{"name":"value","nativeSrc":"3324:5:87","nodeType":"YulIdentifier","src":"3324:5:87"},"variableNames":[{"name":"value0","nativeSrc":"3314:6:87","nodeType":"YulIdentifier","src":"3314:6:87"}]},{"nativeSrc":"3338:48:87","nodeType":"YulAssignment","src":"3338:48:87","value":{"arguments":[{"arguments":[{"name":"headStart","nativeSrc":"3371:9:87","nodeType":"YulIdentifier","src":"3371:9:87"},{"kind":"number","nativeSrc":"3382:2:87","nodeType":"YulLiteral","src":"3382:2:87","type":"","value":"32"}],"functionName":{"name":"add","nativeSrc":"3367:3:87","nodeType":"YulIdentifier","src":"3367:3:87"},"nativeSrc":"3367:18:87","nodeType":"YulFunctionCall","src":"3367:18:87"}],"functionName":{"name":"abi_decode_address","nativeSrc":"3348:18:87","nodeType":"YulIdentifier","src":"3348:18:87"},"nativeSrc":"3348:38:87","nodeType":"YulFunctionCall","src":"3348:38:87"},"variableNames":[{"name":"value1","nativeSrc":"3338:6:87","nodeType":"YulIdentifier","src":"3338:6:87"}]},{"nativeSrc":"3395:48:87","nodeType":"YulAssignment","src":"3395:48:87","value":{"arguments":[{"arguments":[{"name":"headStart","nativeSrc":"3428:9:87","nodeType":"YulIdentifier","src":"3428:9:87"},{"kind":"number","nativeSrc":"3439:2:87","nodeType":"YulLiteral","src":"3439:2:87","type":"","value":"64"}],"functionName":{"name":"add","nativeSrc":"3424:3:87","nodeType":"YulIdentifier","src":"3424:3:87"},"nativeSrc":"3424:18:87","nodeType":"YulFunctionCall","src":"3424:18:87"}],"functionName":{"name":"abi_decode_address","nativeSrc":"3405:18:87","nodeType":"YulIdentifier","src":"3405:18:87"},"nativeSrc":"3405:38:87","nodeType":"YulFunctionCall","src":"3405:38:87"},"variableNames":[{"name":"value2","nativeSrc":"3395:6:87","nodeType":"YulIdentifier","src":"3395:6:87"}]}]},"name":"abi_decode_tuple_t_uint256t_addresst_address","nativeSrc":"3075:374:87","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nativeSrc":"3129:9:87","nodeType":"YulTypedName","src":"3129:9:87","type":""},{"name":"dataEnd","nativeSrc":"3140:7:87","nodeType":"YulTypedName","src":"3140:7:87","type":""}],"returnVariables":[{"name":"value0","nativeSrc":"3152:6:87","nodeType":"YulTypedName","src":"3152:6:87","type":""},{"name":"value1","nativeSrc":"3160:6:87","nodeType":"YulTypedName","src":"3160:6:87","type":""},{"name":"value2","nativeSrc":"3168:6:87","nodeType":"YulTypedName","src":"3168:6:87","type":""}],"src":"3075:374:87"},{"body":{"nativeSrc":"3553:101:87","nodeType":"YulBlock","src":"3553:101:87","statements":[{"nativeSrc":"3563:26:87","nodeType":"YulAssignment","src":"3563:26:87","value":{"arguments":[{"name":"headStart","nativeSrc":"3575:9:87","nodeType":"YulIdentifier","src":"3575:9:87"},{"kind":"number","nativeSrc":"3586:2:87","nodeType":"YulLiteral","src":"3586:2:87","type":"","value":"32"}],"functionName":{"name":"add","nativeSrc":"3571:3:87","nodeType":"YulIdentifier","src":"3571:3:87"},"nativeSrc":"3571:18:87","nodeType":"YulFunctionCall","src":"3571:18:87"},"variableNames":[{"name":"tail","nativeSrc":"3563:4:87","nodeType":"YulIdentifier","src":"3563:4:87"}]},{"expression":{"arguments":[{"name":"headStart","nativeSrc":"3605:9:87","nodeType":"YulIdentifier","src":"3605:9:87"},{"arguments":[{"name":"value0","nativeSrc":"3620:6:87","nodeType":"YulIdentifier","src":"3620:6:87"},{"kind":"number","nativeSrc":"3628:18:87","nodeType":"YulLiteral","src":"3628:18:87","type":"","value":"0xffffffffffffffff"}],"functionName":{"name":"and","nativeSrc":"3616:3:87","nodeType":"YulIdentifier","src":"3616:3:87"},"nativeSrc":"3616:31:87","nodeType":"YulFunctionCall","src":"3616:31:87"}],"functionName":{"name":"mstore","nativeSrc":"3598:6:87","nodeType":"YulIdentifier","src":"3598:6:87"},"nativeSrc":"3598:50:87","nodeType":"YulFunctionCall","src":"3598:50:87"},"nativeSrc":"3598:50:87","nodeType":"YulExpressionStatement","src":"3598:50:87"}]},"name":"abi_encode_tuple_t_uint64__to_t_uint64__fromStack_reversed","nativeSrc":"3454:200:87","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nativeSrc":"3522:9:87","nodeType":"YulTypedName","src":"3522:9:87","type":""},{"name":"value0","nativeSrc":"3533:6:87","nodeType":"YulTypedName","src":"3533:6:87","type":""}],"returnVariables":[{"name":"tail","nativeSrc":"3544:4:87","nodeType":"YulTypedName","src":"3544:4:87","type":""}],"src":"3454:200:87"},{"body":{"nativeSrc":"3728:110:87","nodeType":"YulBlock","src":"3728:110:87","statements":[{"body":{"nativeSrc":"3774:16:87","nodeType":"YulBlock","src":"3774:16:87","statements":[{"expression":{"arguments":[{"kind":"number","nativeSrc":"3783:1:87","nodeType":"YulLiteral","src":"3783:1:87","type":"","value":"0"},{"kind":"number","nativeSrc":"3786:1:87","nodeType":"YulLiteral","src":"3786:1:87","type":"","value":"0"}],"functionName":{"name":"revert","nativeSrc":"3776:6:87","nodeType":"YulIdentifier","src":"3776:6:87"},"nativeSrc":"3776:12:87","nodeType":"YulFunctionCall","src":"3776:12:87"},"nativeSrc":"3776:12:87","nodeType":"YulExpressionStatement","src":"3776:12:87"}]},"condition":{"arguments":[{"arguments":[{"name":"dataEnd","nativeSrc":"3749:7:87","nodeType":"YulIdentifier","src":"3749:7:87"},{"name":"headStart","nativeSrc":"3758:9:87","nodeType":"YulIdentifier","src":"3758:9:87"}],"functionName":{"name":"sub","nativeSrc":"3745:3:87","nodeType":"YulIdentifier","src":"3745:3:87"},"nativeSrc":"3745:23:87","nodeType":"YulFunctionCall","src":"3745:23:87"},{"kind":"number","nativeSrc":"3770:2:87","nodeType":"YulLiteral","src":"3770:2:87","type":"","value":"32"}],"functionName":{"name":"slt","nativeSrc":"3741:3:87","nodeType":"YulIdentifier","src":"3741:3:87"},"nativeSrc":"3741:32:87","nodeType":"YulFunctionCall","src":"3741:32:87"},"nativeSrc":"3738:52:87","nodeType":"YulIf","src":"3738:52:87"},{"nativeSrc":"3799:33:87","nodeType":"YulAssignment","src":"3799:33:87","value":{"arguments":[{"name":"headStart","nativeSrc":"3822:9:87","nodeType":"YulIdentifier","src":"3822:9:87"}],"functionName":{"name":"calldataload","nativeSrc":"3809:12:87","nodeType":"YulIdentifier","src":"3809:12:87"},"nativeSrc":"3809:23:87","nodeType":"YulFunctionCall","src":"3809:23:87"},"variableNames":[{"name":"value0","nativeSrc":"3799:6:87","nodeType":"YulIdentifier","src":"3799:6:87"}]}]},"name":"abi_decode_tuple_t_int256","nativeSrc":"3659:179:87","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nativeSrc":"3694:9:87","nodeType":"YulTypedName","src":"3694:9:87","type":""},{"name":"dataEnd","nativeSrc":"3705:7:87","nodeType":"YulTypedName","src":"3705:7:87","type":""}],"returnVariables":[{"name":"value0","nativeSrc":"3717:6:87","nodeType":"YulTypedName","src":"3717:6:87","type":""}],"src":"3659:179:87"},{"body":{"nativeSrc":"3944:117:87","nodeType":"YulBlock","src":"3944:117:87","statements":[{"nativeSrc":"3954:26:87","nodeType":"YulAssignment","src":"3954:26:87","value":{"arguments":[{"name":"headStart","nativeSrc":"3966:9:87","nodeType":"YulIdentifier","src":"3966:9:87"},{"kind":"number","nativeSrc":"3977:2:87","nodeType":"YulLiteral","src":"3977:2:87","type":"","value":"32"}],"functionName":{"name":"add","nativeSrc":"3962:3:87","nodeType":"YulIdentifier","src":"3962:3:87"},"nativeSrc":"3962:18:87","nodeType":"YulFunctionCall","src":"3962:18:87"},"variableNames":[{"name":"tail","nativeSrc":"3954:4:87","nodeType":"YulIdentifier","src":"3954:4:87"}]},{"expression":{"arguments":[{"name":"headStart","nativeSrc":"3996:9:87","nodeType":"YulIdentifier","src":"3996:9:87"},{"arguments":[{"name":"value0","nativeSrc":"4011:6:87","nodeType":"YulIdentifier","src":"4011:6:87"},{"kind":"number","nativeSrc":"4019:34:87","nodeType":"YulLiteral","src":"4019:34:87","type":"","value":"0xffffffffffffffffffffffffffffffff"}],"functionName":{"name":"and","nativeSrc":"4007:3:87","nodeType":"YulIdentifier","src":"4007:3:87"},"nativeSrc":"4007:47:87","nodeType":"YulFunctionCall","src":"4007:47:87"}],"functionName":{"name":"mstore","nativeSrc":"3989:6:87","nodeType":"YulIdentifier","src":"3989:6:87"},"nativeSrc":"3989:66:87","nodeType":"YulFunctionCall","src":"3989:66:87"},"nativeSrc":"3989:66:87","nodeType":"YulExpressionStatement","src":"3989:66:87"}]},"name":"abi_encode_tuple_t_uint128__to_t_uint128__fromStack_reversed","nativeSrc":"3843:218:87","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nativeSrc":"3913:9:87","nodeType":"YulTypedName","src":"3913:9:87","type":""},{"name":"value0","nativeSrc":"3924:6:87","nodeType":"YulTypedName","src":"3924:6:87","type":""}],"returnVariables":[{"name":"tail","nativeSrc":"3935:4:87","nodeType":"YulTypedName","src":"3935:4:87","type":""}],"src":"3843:218:87"},{"body":{"nativeSrc":"4172:289:87","nodeType":"YulBlock","src":"4172:289:87","statements":[{"body":{"nativeSrc":"4218:16:87","nodeType":"YulBlock","src":"4218:16:87","statements":[{"expression":{"arguments":[{"kind":"number","nativeSrc":"4227:1:87","nodeType":"YulLiteral","src":"4227:1:87","type":"","value":"0"},{"kind":"number","nativeSrc":"4230:1:87","nodeType":"YulLiteral","src":"4230:1:87","type":"","value":"0"}],"functionName":{"name":"revert","nativeSrc":"4220:6:87","nodeType":"YulIdentifier","src":"4220:6:87"},"nativeSrc":"4220:12:87","nodeType":"YulFunctionCall","src":"4220:12:87"},"nativeSrc":"4220:12:87","nodeType":"YulExpressionStatement","src":"4220:12:87"}]},"condition":{"arguments":[{"arguments":[{"name":"dataEnd","nativeSrc":"4193:7:87","nodeType":"YulIdentifier","src":"4193:7:87"},{"name":"headStart","nativeSrc":"4202:9:87","nodeType":"YulIdentifier","src":"4202:9:87"}],"functionName":{"name":"sub","nativeSrc":"4189:3:87","nodeType":"YulIdentifier","src":"4189:3:87"},"nativeSrc":"4189:23:87","nodeType":"YulFunctionCall","src":"4189:23:87"},{"kind":"number","nativeSrc":"4214:2:87","nodeType":"YulLiteral","src":"4214:2:87","type":"","value":"64"}],"functionName":{"name":"slt","nativeSrc":"4185:3:87","nodeType":"YulIdentifier","src":"4185:3:87"},"nativeSrc":"4185:32:87","nodeType":"YulFunctionCall","src":"4185:32:87"},"nativeSrc":"4182:52:87","nodeType":"YulIf","src":"4182:52:87"},{"nativeSrc":"4243:36:87","nodeType":"YulVariableDeclaration","src":"4243:36:87","value":{"arguments":[{"name":"headStart","nativeSrc":"4269:9:87","nodeType":"YulIdentifier","src":"4269:9:87"}],"functionName":{"name":"calldataload","nativeSrc":"4256:12:87","nodeType":"YulIdentifier","src":"4256:12:87"},"nativeSrc":"4256:23:87","nodeType":"YulFunctionCall","src":"4256:23:87"},"variables":[{"name":"value","nativeSrc":"4247:5:87","nodeType":"YulTypedName","src":"4247:5:87","type":""}]},{"body":{"nativeSrc":"4312:16:87","nodeType":"YulBlock","src":"4312:16:87","statements":[{"expression":{"arguments":[{"kind":"number","nativeSrc":"4321:1:87","nodeType":"YulLiteral","src":"4321:1:87","type":"","value":"0"},{"kind":"number","nativeSrc":"4324:1:87","nodeType":"YulLiteral","src":"4324:1:87","type":"","value":"0"}],"functionName":{"name":"revert","nativeSrc":"4314:6:87","nodeType":"YulIdentifier","src":"4314:6:87"},"nativeSrc":"4314:12:87","nodeType":"YulFunctionCall","src":"4314:12:87"},"nativeSrc":"4314:12:87","nodeType":"YulExpressionStatement","src":"4314:12:87"}]},"condition":{"arguments":[{"arguments":[{"name":"value","nativeSrc":"4301:5:87","nodeType":"YulIdentifier","src":"4301:5:87"},{"kind":"number","nativeSrc":"4308:1:87","nodeType":"YulLiteral","src":"4308:1:87","type":"","value":"4"}],"functionName":{"name":"lt","nativeSrc":"4298:2:87","nodeType":"YulIdentifier","src":"4298:2:87"},"nativeSrc":"4298:12:87","nodeType":"YulFunctionCall","src":"4298:12:87"}],"functionName":{"name":"iszero","nativeSrc":"4291:6:87","nodeType":"YulIdentifier","src":"4291:6:87"},"nativeSrc":"4291:20:87","nodeType":"YulFunctionCall","src":"4291:20:87"},"nativeSrc":"4288:40:87","nodeType":"YulIf","src":"4288:40:87"},{"nativeSrc":"4337:15:87","nodeType":"YulAssignment","src":"4337:15:87","value":{"name":"value","nativeSrc":"4347:5:87","nodeType":"YulIdentifier","src":"4347:5:87"},"variableNames":[{"name":"value0","nativeSrc":"4337:6:87","nodeType":"YulIdentifier","src":"4337:6:87"}]},{"nativeSrc":"4361:16:87","nodeType":"YulVariableDeclaration","src":"4361:16:87","value":{"kind":"number","nativeSrc":"4376:1:87","nodeType":"YulLiteral","src":"4376:1:87","type":"","value":"0"},"variables":[{"name":"value_1","nativeSrc":"4365:7:87","nodeType":"YulTypedName","src":"4365:7:87","type":""}]},{"nativeSrc":"4386:43:87","nodeType":"YulAssignment","src":"4386:43:87","value":{"arguments":[{"arguments":[{"name":"headStart","nativeSrc":"4414:9:87","nodeType":"YulIdentifier","src":"4414:9:87"},{"kind":"number","nativeSrc":"4425:2:87","nodeType":"YulLiteral","src":"4425:2:87","type":"","value":"32"}],"functionName":{"name":"add","nativeSrc":"4410:3:87","nodeType":"YulIdentifier","src":"4410:3:87"},"nativeSrc":"4410:18:87","nodeType":"YulFunctionCall","src":"4410:18:87"}],"functionName":{"name":"calldataload","nativeSrc":"4397:12:87","nodeType":"YulIdentifier","src":"4397:12:87"},"nativeSrc":"4397:32:87","nodeType":"YulFunctionCall","src":"4397:32:87"},"variableNames":[{"name":"value_1","nativeSrc":"4386:7:87","nodeType":"YulIdentifier","src":"4386:7:87"}]},{"nativeSrc":"4438:17:87","nodeType":"YulAssignment","src":"4438:17:87","value":{"name":"value_1","nativeSrc":"4448:7:87","nodeType":"YulIdentifier","src":"4448:7:87"},"variableNames":[{"name":"value1","nativeSrc":"4438:6:87","nodeType":"YulIdentifier","src":"4438:6:87"}]}]},"name":"abi_decode_tuple_t_enum$_OverrideOption_$2758t_uint256","nativeSrc":"4066:395:87","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nativeSrc":"4130:9:87","nodeType":"YulTypedName","src":"4130:9:87","type":""},{"name":"dataEnd","nativeSrc":"4141:7:87","nodeType":"YulTypedName","src":"4141:7:87","type":""}],"returnVariables":[{"name":"value0","nativeSrc":"4153:6:87","nodeType":"YulTypedName","src":"4153:6:87","type":""},{"name":"value1","nativeSrc":"4161:6:87","nodeType":"YulTypedName","src":"4161:6:87","type":""}],"src":"4066:395:87"},{"body":{"nativeSrc":"4553:173:87","nodeType":"YulBlock","src":"4553:173:87","statements":[{"body":{"nativeSrc":"4599:16:87","nodeType":"YulBlock","src":"4599:16:87","statements":[{"expression":{"arguments":[{"kind":"number","nativeSrc":"4608:1:87","nodeType":"YulLiteral","src":"4608:1:87","type":"","value":"0"},{"kind":"number","nativeSrc":"4611:1:87","nodeType":"YulLiteral","src":"4611:1:87","type":"","value":"0"}],"functionName":{"name":"revert","nativeSrc":"4601:6:87","nodeType":"YulIdentifier","src":"4601:6:87"},"nativeSrc":"4601:12:87","nodeType":"YulFunctionCall","src":"4601:12:87"},"nativeSrc":"4601:12:87","nodeType":"YulExpressionStatement","src":"4601:12:87"}]},"condition":{"arguments":[{"arguments":[{"name":"dataEnd","nativeSrc":"4574:7:87","nodeType":"YulIdentifier","src":"4574:7:87"},{"name":"headStart","nativeSrc":"4583:9:87","nodeType":"YulIdentifier","src":"4583:9:87"}],"functionName":{"name":"sub","nativeSrc":"4570:3:87","nodeType":"YulIdentifier","src":"4570:3:87"},"nativeSrc":"4570:23:87","nodeType":"YulFunctionCall","src":"4570:23:87"},{"kind":"number","nativeSrc":"4595:2:87","nodeType":"YulLiteral","src":"4595:2:87","type":"","value":"64"}],"functionName":{"name":"slt","nativeSrc":"4566:3:87","nodeType":"YulIdentifier","src":"4566:3:87"},"nativeSrc":"4566:32:87","nodeType":"YulFunctionCall","src":"4566:32:87"},"nativeSrc":"4563:52:87","nodeType":"YulIf","src":"4563:52:87"},{"nativeSrc":"4624:39:87","nodeType":"YulAssignment","src":"4624:39:87","value":{"arguments":[{"name":"headStart","nativeSrc":"4653:9:87","nodeType":"YulIdentifier","src":"4653:9:87"}],"functionName":{"name":"abi_decode_address","nativeSrc":"4634:18:87","nodeType":"YulIdentifier","src":"4634:18:87"},"nativeSrc":"4634:29:87","nodeType":"YulFunctionCall","src":"4634:29:87"},"variableNames":[{"name":"value0","nativeSrc":"4624:6:87","nodeType":"YulIdentifier","src":"4624:6:87"}]},{"nativeSrc":"4672:48:87","nodeType":"YulAssignment","src":"4672:48:87","value":{"arguments":[{"arguments":[{"name":"headStart","nativeSrc":"4705:9:87","nodeType":"YulIdentifier","src":"4705:9:87"},{"kind":"number","nativeSrc":"4716:2:87","nodeType":"YulLiteral","src":"4716:2:87","type":"","value":"32"}],"functionName":{"name":"add","nativeSrc":"4701:3:87","nodeType":"YulIdentifier","src":"4701:3:87"},"nativeSrc":"4701:18:87","nodeType":"YulFunctionCall","src":"4701:18:87"}],"functionName":{"name":"abi_decode_address","nativeSrc":"4682:18:87","nodeType":"YulIdentifier","src":"4682:18:87"},"nativeSrc":"4682:38:87","nodeType":"YulFunctionCall","src":"4682:38:87"},"variableNames":[{"name":"value1","nativeSrc":"4672:6:87","nodeType":"YulIdentifier","src":"4672:6:87"}]}]},"name":"abi_decode_tuple_t_addresst_address","nativeSrc":"4466:260:87","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nativeSrc":"4511:9:87","nodeType":"YulTypedName","src":"4511:9:87","type":""},{"name":"dataEnd","nativeSrc":"4522:7:87","nodeType":"YulTypedName","src":"4522:7:87","type":""}],"returnVariables":[{"name":"value0","nativeSrc":"4534:6:87","nodeType":"YulTypedName","src":"4534:6:87","type":""},{"name":"value1","nativeSrc":"4542:6:87","nodeType":"YulTypedName","src":"4542:6:87","type":""}],"src":"4466:260:87"},{"body":{"nativeSrc":"4812:103:87","nodeType":"YulBlock","src":"4812:103:87","statements":[{"body":{"nativeSrc":"4858:16:87","nodeType":"YulBlock","src":"4858:16:87","statements":[{"expression":{"arguments":[{"kind":"number","nativeSrc":"4867:1:87","nodeType":"YulLiteral","src":"4867:1:87","type":"","value":"0"},{"kind":"number","nativeSrc":"4870:1:87","nodeType":"YulLiteral","src":"4870:1:87","type":"","value":"0"}],"functionName":{"name":"revert","nativeSrc":"4860:6:87","nodeType":"YulIdentifier","src":"4860:6:87"},"nativeSrc":"4860:12:87","nodeType":"YulFunctionCall","src":"4860:12:87"},"nativeSrc":"4860:12:87","nodeType":"YulExpressionStatement","src":"4860:12:87"}]},"condition":{"arguments":[{"arguments":[{"name":"dataEnd","nativeSrc":"4833:7:87","nodeType":"YulIdentifier","src":"4833:7:87"},{"name":"headStart","nativeSrc":"4842:9:87","nodeType":"YulIdentifier","src":"4842:9:87"}],"functionName":{"name":"sub","nativeSrc":"4829:3:87","nodeType":"YulIdentifier","src":"4829:3:87"},"nativeSrc":"4829:23:87","nodeType":"YulFunctionCall","src":"4829:23:87"},{"kind":"number","nativeSrc":"4854:2:87","nodeType":"YulLiteral","src":"4854:2:87","type":"","value":"32"}],"functionName":{"name":"slt","nativeSrc":"4825:3:87","nodeType":"YulIdentifier","src":"4825:3:87"},"nativeSrc":"4825:32:87","nodeType":"YulFunctionCall","src":"4825:32:87"},"nativeSrc":"4822:52:87","nodeType":"YulIf","src":"4822:52:87"},{"nativeSrc":"4883:26:87","nodeType":"YulAssignment","src":"4883:26:87","value":{"arguments":[{"name":"headStart","nativeSrc":"4899:9:87","nodeType":"YulIdentifier","src":"4899:9:87"}],"functionName":{"name":"mload","nativeSrc":"4893:5:87","nodeType":"YulIdentifier","src":"4893:5:87"},"nativeSrc":"4893:16:87","nodeType":"YulFunctionCall","src":"4893:16:87"},"variableNames":[{"name":"value0","nativeSrc":"4883:6:87","nodeType":"YulIdentifier","src":"4883:6:87"}]}]},"name":"abi_decode_tuple_t_uint256_fromMemory","nativeSrc":"4731:184:87","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nativeSrc":"4778:9:87","nodeType":"YulTypedName","src":"4778:9:87","type":""},{"name":"dataEnd","nativeSrc":"4789:7:87","nodeType":"YulTypedName","src":"4789:7:87","type":""}],"returnVariables":[{"name":"value0","nativeSrc":"4801:6:87","nodeType":"YulTypedName","src":"4801:6:87","type":""}],"src":"4731:184:87"},{"body":{"nativeSrc":"4975:325:87","nodeType":"YulBlock","src":"4975:325:87","statements":[{"nativeSrc":"4985:22:87","nodeType":"YulAssignment","src":"4985:22:87","value":{"arguments":[{"kind":"number","nativeSrc":"4999:1:87","nodeType":"YulLiteral","src":"4999:1:87","type":"","value":"1"},{"name":"data","nativeSrc":"5002:4:87","nodeType":"YulIdentifier","src":"5002:4:87"}],"functionName":{"name":"shr","nativeSrc":"4995:3:87","nodeType":"YulIdentifier","src":"4995:3:87"},"nativeSrc":"4995:12:87","nodeType":"YulFunctionCall","src":"4995:12:87"},"variableNames":[{"name":"length","nativeSrc":"4985:6:87","nodeType":"YulIdentifier","src":"4985:6:87"}]},{"nativeSrc":"5016:38:87","nodeType":"YulVariableDeclaration","src":"5016:38:87","value":{"arguments":[{"name":"data","nativeSrc":"5046:4:87","nodeType":"YulIdentifier","src":"5046:4:87"},{"kind":"number","nativeSrc":"5052:1:87","nodeType":"YulLiteral","src":"5052:1:87","type":"","value":"1"}],"functionName":{"name":"and","nativeSrc":"5042:3:87","nodeType":"YulIdentifier","src":"5042:3:87"},"nativeSrc":"5042:12:87","nodeType":"YulFunctionCall","src":"5042:12:87"},"variables":[{"name":"outOfPlaceEncoding","nativeSrc":"5020:18:87","nodeType":"YulTypedName","src":"5020:18:87","type":""}]},{"body":{"nativeSrc":"5093:31:87","nodeType":"YulBlock","src":"5093:31:87","statements":[{"nativeSrc":"5095:27:87","nodeType":"YulAssignment","src":"5095:27:87","value":{"arguments":[{"name":"length","nativeSrc":"5109:6:87","nodeType":"YulIdentifier","src":"5109:6:87"},{"kind":"number","nativeSrc":"5117:4:87","nodeType":"YulLiteral","src":"5117:4:87","type":"","value":"0x7f"}],"functionName":{"name":"and","nativeSrc":"5105:3:87","nodeType":"YulIdentifier","src":"5105:3:87"},"nativeSrc":"5105:17:87","nodeType":"YulFunctionCall","src":"5105:17:87"},"variableNames":[{"name":"length","nativeSrc":"5095:6:87","nodeType":"YulIdentifier","src":"5095:6:87"}]}]},"condition":{"arguments":[{"name":"outOfPlaceEncoding","nativeSrc":"5073:18:87","nodeType":"YulIdentifier","src":"5073:18:87"}],"functionName":{"name":"iszero","nativeSrc":"5066:6:87","nodeType":"YulIdentifier","src":"5066:6:87"},"nativeSrc":"5066:26:87","nodeType":"YulFunctionCall","src":"5066:26:87"},"nativeSrc":"5063:61:87","nodeType":"YulIf","src":"5063:61:87"},{"body":{"nativeSrc":"5183:111:87","nodeType":"YulBlock","src":"5183:111:87","statements":[{"expression":{"arguments":[{"kind":"number","nativeSrc":"5204:1:87","nodeType":"YulLiteral","src":"5204:1:87","type":"","value":"0"},{"arguments":[{"kind":"number","nativeSrc":"5211:3:87","nodeType":"YulLiteral","src":"5211:3:87","type":"","value":"224"},{"kind":"number","nativeSrc":"5216:10:87","nodeType":"YulLiteral","src":"5216:10:87","type":"","value":"0x4e487b71"}],"functionName":{"name":"shl","nativeSrc":"5207:3:87","nodeType":"YulIdentifier","src":"5207:3:87"},"nativeSrc":"5207:20:87","nodeType":"YulFunctionCall","src":"5207:20:87"}],"functionName":{"name":"mstore","nativeSrc":"5197:6:87","nodeType":"YulIdentifier","src":"5197:6:87"},"nativeSrc":"5197:31:87","nodeType":"YulFunctionCall","src":"5197:31:87"},"nativeSrc":"5197:31:87","nodeType":"YulExpressionStatement","src":"5197:31:87"},{"expression":{"arguments":[{"kind":"number","nativeSrc":"5248:1:87","nodeType":"YulLiteral","src":"5248:1:87","type":"","value":"4"},{"kind":"number","nativeSrc":"5251:4:87","nodeType":"YulLiteral","src":"5251:4:87","type":"","value":"0x22"}],"functionName":{"name":"mstore","nativeSrc":"5241:6:87","nodeType":"YulIdentifier","src":"5241:6:87"},"nativeSrc":"5241:15:87","nodeType":"YulFunctionCall","src":"5241:15:87"},"nativeSrc":"5241:15:87","nodeType":"YulExpressionStatement","src":"5241:15:87"},{"expression":{"arguments":[{"kind":"number","nativeSrc":"5276:1:87","nodeType":"YulLiteral","src":"5276:1:87","type":"","value":"0"},{"kind":"number","nativeSrc":"5279:4:87","nodeType":"YulLiteral","src":"5279:4:87","type":"","value":"0x24"}],"functionName":{"name":"revert","nativeSrc":"5269:6:87","nodeType":"YulIdentifier","src":"5269:6:87"},"nativeSrc":"5269:15:87","nodeType":"YulFunctionCall","src":"5269:15:87"},"nativeSrc":"5269:15:87","nodeType":"YulExpressionStatement","src":"5269:15:87"}]},"condition":{"arguments":[{"name":"outOfPlaceEncoding","nativeSrc":"5139:18:87","nodeType":"YulIdentifier","src":"5139:18:87"},{"arguments":[{"name":"length","nativeSrc":"5162:6:87","nodeType":"YulIdentifier","src":"5162:6:87"},{"kind":"number","nativeSrc":"5170:2:87","nodeType":"YulLiteral","src":"5170:2:87","type":"","value":"32"}],"functionName":{"name":"lt","nativeSrc":"5159:2:87","nodeType":"YulIdentifier","src":"5159:2:87"},"nativeSrc":"5159:14:87","nodeType":"YulFunctionCall","src":"5159:14:87"}],"functionName":{"name":"eq","nativeSrc":"5136:2:87","nodeType":"YulIdentifier","src":"5136:2:87"},"nativeSrc":"5136:38:87","nodeType":"YulFunctionCall","src":"5136:38:87"},"nativeSrc":"5133:161:87","nodeType":"YulIf","src":"5133:161:87"}]},"name":"extract_byte_array_length","nativeSrc":"4920:380:87","nodeType":"YulFunctionDefinition","parameters":[{"name":"data","nativeSrc":"4955:4:87","nodeType":"YulTypedName","src":"4955:4:87","type":""}],"returnVariables":[{"name":"length","nativeSrc":"4964:6:87","nodeType":"YulTypedName","src":"4964:6:87","type":""}],"src":"4920:380:87"},{"body":{"nativeSrc":"5337:95:87","nodeType":"YulBlock","src":"5337:95:87","statements":[{"expression":{"arguments":[{"kind":"number","nativeSrc":"5354:1:87","nodeType":"YulLiteral","src":"5354:1:87","type":"","value":"0"},{"arguments":[{"kind":"number","nativeSrc":"5361:3:87","nodeType":"YulLiteral","src":"5361:3:87","type":"","value":"224"},{"kind":"number","nativeSrc":"5366:10:87","nodeType":"YulLiteral","src":"5366:10:87","type":"","value":"0x4e487b71"}],"functionName":{"name":"shl","nativeSrc":"5357:3:87","nodeType":"YulIdentifier","src":"5357:3:87"},"nativeSrc":"5357:20:87","nodeType":"YulFunctionCall","src":"5357:20:87"}],"functionName":{"name":"mstore","nativeSrc":"5347:6:87","nodeType":"YulIdentifier","src":"5347:6:87"},"nativeSrc":"5347:31:87","nodeType":"YulFunctionCall","src":"5347:31:87"},"nativeSrc":"5347:31:87","nodeType":"YulExpressionStatement","src":"5347:31:87"},{"expression":{"arguments":[{"kind":"number","nativeSrc":"5394:1:87","nodeType":"YulLiteral","src":"5394:1:87","type":"","value":"4"},{"kind":"number","nativeSrc":"5397:4:87","nodeType":"YulLiteral","src":"5397:4:87","type":"","value":"0x11"}],"functionName":{"name":"mstore","nativeSrc":"5387:6:87","nodeType":"YulIdentifier","src":"5387:6:87"},"nativeSrc":"5387:15:87","nodeType":"YulFunctionCall","src":"5387:15:87"},"nativeSrc":"5387:15:87","nodeType":"YulExpressionStatement","src":"5387:15:87"},{"expression":{"arguments":[{"kind":"number","nativeSrc":"5418:1:87","nodeType":"YulLiteral","src":"5418:1:87","type":"","value":"0"},{"kind":"number","nativeSrc":"5421:4:87","nodeType":"YulLiteral","src":"5421:4:87","type":"","value":"0x24"}],"functionName":{"name":"revert","nativeSrc":"5411:6:87","nodeType":"YulIdentifier","src":"5411:6:87"},"nativeSrc":"5411:15:87","nodeType":"YulFunctionCall","src":"5411:15:87"},"nativeSrc":"5411:15:87","nodeType":"YulExpressionStatement","src":"5411:15:87"}]},"name":"panic_error_0x11","nativeSrc":"5305:127:87","nodeType":"YulFunctionDefinition","src":"5305:127:87"},{"body":{"nativeSrc":"5483:102:87","nodeType":"YulBlock","src":"5483:102:87","statements":[{"nativeSrc":"5493:38:87","nodeType":"YulAssignment","src":"5493:38:87","value":{"arguments":[{"arguments":[{"name":"x","nativeSrc":"5508:1:87","nodeType":"YulIdentifier","src":"5508:1:87"},{"kind":"number","nativeSrc":"5511:4:87","nodeType":"YulLiteral","src":"5511:4:87","type":"","value":"0xff"}],"functionName":{"name":"and","nativeSrc":"5504:3:87","nodeType":"YulIdentifier","src":"5504:3:87"},"nativeSrc":"5504:12:87","nodeType":"YulFunctionCall","src":"5504:12:87"},{"arguments":[{"name":"y","nativeSrc":"5522:1:87","nodeType":"YulIdentifier","src":"5522:1:87"},{"kind":"number","nativeSrc":"5525:4:87","nodeType":"YulLiteral","src":"5525:4:87","type":"","value":"0xff"}],"functionName":{"name":"and","nativeSrc":"5518:3:87","nodeType":"YulIdentifier","src":"5518:3:87"},"nativeSrc":"5518:12:87","nodeType":"YulFunctionCall","src":"5518:12:87"}],"functionName":{"name":"add","nativeSrc":"5500:3:87","nodeType":"YulIdentifier","src":"5500:3:87"},"nativeSrc":"5500:31:87","nodeType":"YulFunctionCall","src":"5500:31:87"},"variableNames":[{"name":"sum","nativeSrc":"5493:3:87","nodeType":"YulIdentifier","src":"5493:3:87"}]},{"body":{"nativeSrc":"5557:22:87","nodeType":"YulBlock","src":"5557:22:87","statements":[{"expression":{"arguments":[],"functionName":{"name":"panic_error_0x11","nativeSrc":"5559:16:87","nodeType":"YulIdentifier","src":"5559:16:87"},"nativeSrc":"5559:18:87","nodeType":"YulFunctionCall","src":"5559:18:87"},"nativeSrc":"5559:18:87","nodeType":"YulExpressionStatement","src":"5559:18:87"}]},"condition":{"arguments":[{"name":"sum","nativeSrc":"5546:3:87","nodeType":"YulIdentifier","src":"5546:3:87"},{"kind":"number","nativeSrc":"5551:4:87","nodeType":"YulLiteral","src":"5551:4:87","type":"","value":"0xff"}],"functionName":{"name":"gt","nativeSrc":"5543:2:87","nodeType":"YulIdentifier","src":"5543:2:87"},"nativeSrc":"5543:13:87","nodeType":"YulFunctionCall","src":"5543:13:87"},"nativeSrc":"5540:39:87","nodeType":"YulIf","src":"5540:39:87"}]},"name":"checked_add_t_uint8","nativeSrc":"5437:148:87","nodeType":"YulFunctionDefinition","parameters":[{"name":"x","nativeSrc":"5466:1:87","nodeType":"YulTypedName","src":"5466:1:87","type":""},{"name":"y","nativeSrc":"5469:1:87","nodeType":"YulTypedName","src":"5469:1:87","type":""}],"returnVariables":[{"name":"sum","nativeSrc":"5475:3:87","nodeType":"YulTypedName","src":"5475:3:87","type":""}],"src":"5437:148:87"},{"body":{"nativeSrc":"5639:79:87","nodeType":"YulBlock","src":"5639:79:87","statements":[{"nativeSrc":"5649:17:87","nodeType":"YulAssignment","src":"5649:17:87","value":{"arguments":[{"name":"x","nativeSrc":"5661:1:87","nodeType":"YulIdentifier","src":"5661:1:87"},{"name":"y","nativeSrc":"5664:1:87","nodeType":"YulIdentifier","src":"5664:1:87"}],"functionName":{"name":"sub","nativeSrc":"5657:3:87","nodeType":"YulIdentifier","src":"5657:3:87"},"nativeSrc":"5657:9:87","nodeType":"YulFunctionCall","src":"5657:9:87"},"variableNames":[{"name":"diff","nativeSrc":"5649:4:87","nodeType":"YulIdentifier","src":"5649:4:87"}]},{"body":{"nativeSrc":"5690:22:87","nodeType":"YulBlock","src":"5690:22:87","statements":[{"expression":{"arguments":[],"functionName":{"name":"panic_error_0x11","nativeSrc":"5692:16:87","nodeType":"YulIdentifier","src":"5692:16:87"},"nativeSrc":"5692:18:87","nodeType":"YulFunctionCall","src":"5692:18:87"},"nativeSrc":"5692:18:87","nodeType":"YulExpressionStatement","src":"5692:18:87"}]},"condition":{"arguments":[{"name":"diff","nativeSrc":"5681:4:87","nodeType":"YulIdentifier","src":"5681:4:87"},{"name":"x","nativeSrc":"5687:1:87","nodeType":"YulIdentifier","src":"5687:1:87"}],"functionName":{"name":"gt","nativeSrc":"5678:2:87","nodeType":"YulIdentifier","src":"5678:2:87"},"nativeSrc":"5678:11:87","nodeType":"YulFunctionCall","src":"5678:11:87"},"nativeSrc":"5675:37:87","nodeType":"YulIf","src":"5675:37:87"}]},"name":"checked_sub_t_uint256","nativeSrc":"5590:128:87","nodeType":"YulFunctionDefinition","parameters":[{"name":"x","nativeSrc":"5621:1:87","nodeType":"YulTypedName","src":"5621:1:87","type":""},{"name":"y","nativeSrc":"5624:1:87","nodeType":"YulTypedName","src":"5624:1:87","type":""}],"returnVariables":[{"name":"diff","nativeSrc":"5630:4:87","nodeType":"YulTypedName","src":"5630:4:87","type":""}],"src":"5590:128:87"},{"body":{"nativeSrc":"5880:188:87","nodeType":"YulBlock","src":"5880:188:87","statements":[{"nativeSrc":"5890:26:87","nodeType":"YulAssignment","src":"5890:26:87","value":{"arguments":[{"name":"headStart","nativeSrc":"5902:9:87","nodeType":"YulIdentifier","src":"5902:9:87"},{"kind":"number","nativeSrc":"5913:2:87","nodeType":"YulLiteral","src":"5913:2:87","type":"","value":"96"}],"functionName":{"name":"add","nativeSrc":"5898:3:87","nodeType":"YulIdentifier","src":"5898:3:87"},"nativeSrc":"5898:18:87","nodeType":"YulFunctionCall","src":"5898:18:87"},"variableNames":[{"name":"tail","nativeSrc":"5890:4:87","nodeType":"YulIdentifier","src":"5890:4:87"}]},{"expression":{"arguments":[{"name":"headStart","nativeSrc":"5932:9:87","nodeType":"YulIdentifier","src":"5932:9:87"},{"arguments":[{"name":"value0","nativeSrc":"5947:6:87","nodeType":"YulIdentifier","src":"5947:6:87"},{"arguments":[{"arguments":[{"kind":"number","nativeSrc":"5963:3:87","nodeType":"YulLiteral","src":"5963:3:87","type":"","value":"160"},{"kind":"number","nativeSrc":"5968:1:87","nodeType":"YulLiteral","src":"5968:1:87","type":"","value":"1"}],"functionName":{"name":"shl","nativeSrc":"5959:3:87","nodeType":"YulIdentifier","src":"5959:3:87"},"nativeSrc":"5959:11:87","nodeType":"YulFunctionCall","src":"5959:11:87"},{"kind":"number","nativeSrc":"5972:1:87","nodeType":"YulLiteral","src":"5972:1:87","type":"","value":"1"}],"functionName":{"name":"sub","nativeSrc":"5955:3:87","nodeType":"YulIdentifier","src":"5955:3:87"},"nativeSrc":"5955:19:87","nodeType":"YulFunctionCall","src":"5955:19:87"}],"functionName":{"name":"and","nativeSrc":"5943:3:87","nodeType":"YulIdentifier","src":"5943:3:87"},"nativeSrc":"5943:32:87","nodeType":"YulFunctionCall","src":"5943:32:87"}],"functionName":{"name":"mstore","nativeSrc":"5925:6:87","nodeType":"YulIdentifier","src":"5925:6:87"},"nativeSrc":"5925:51:87","nodeType":"YulFunctionCall","src":"5925:51:87"},"nativeSrc":"5925:51:87","nodeType":"YulExpressionStatement","src":"5925:51:87"},{"expression":{"arguments":[{"arguments":[{"name":"headStart","nativeSrc":"5996:9:87","nodeType":"YulIdentifier","src":"5996:9:87"},{"kind":"number","nativeSrc":"6007:2:87","nodeType":"YulLiteral","src":"6007:2:87","type":"","value":"32"}],"functionName":{"name":"add","nativeSrc":"5992:3:87","nodeType":"YulIdentifier","src":"5992:3:87"},"nativeSrc":"5992:18:87","nodeType":"YulFunctionCall","src":"5992:18:87"},{"name":"value1","nativeSrc":"6012:6:87","nodeType":"YulIdentifier","src":"6012:6:87"}],"functionName":{"name":"mstore","nativeSrc":"5985:6:87","nodeType":"YulIdentifier","src":"5985:6:87"},"nativeSrc":"5985:34:87","nodeType":"YulFunctionCall","src":"5985:34:87"},"nativeSrc":"5985:34:87","nodeType":"YulExpressionStatement","src":"5985:34:87"},{"expression":{"arguments":[{"arguments":[{"name":"headStart","nativeSrc":"6039:9:87","nodeType":"YulIdentifier","src":"6039:9:87"},{"kind":"number","nativeSrc":"6050:2:87","nodeType":"YulLiteral","src":"6050:2:87","type":"","value":"64"}],"functionName":{"name":"add","nativeSrc":"6035:3:87","nodeType":"YulIdentifier","src":"6035:3:87"},"nativeSrc":"6035:18:87","nodeType":"YulFunctionCall","src":"6035:18:87"},{"name":"value2","nativeSrc":"6055:6:87","nodeType":"YulIdentifier","src":"6055:6:87"}],"functionName":{"name":"mstore","nativeSrc":"6028:6:87","nodeType":"YulIdentifier","src":"6028:6:87"},"nativeSrc":"6028:34:87","nodeType":"YulFunctionCall","src":"6028:34:87"},"nativeSrc":"6028:34:87","nodeType":"YulExpressionStatement","src":"6028:34:87"}]},"name":"abi_encode_tuple_t_address_t_uint256_t_uint256__to_t_address_t_uint256_t_uint256__fromStack_reversed","nativeSrc":"5723:345:87","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nativeSrc":"5833:9:87","nodeType":"YulTypedName","src":"5833:9:87","type":""},{"name":"value2","nativeSrc":"5844:6:87","nodeType":"YulTypedName","src":"5844:6:87","type":""},{"name":"value1","nativeSrc":"5852:6:87","nodeType":"YulTypedName","src":"5852:6:87","type":""},{"name":"value0","nativeSrc":"5860:6:87","nodeType":"YulTypedName","src":"5860:6:87","type":""}],"returnVariables":[{"name":"tail","nativeSrc":"5871:4:87","nodeType":"YulTypedName","src":"5871:4:87","type":""}],"src":"5723:345:87"},{"body":{"nativeSrc":"6202:145:87","nodeType":"YulBlock","src":"6202:145:87","statements":[{"nativeSrc":"6212:26:87","nodeType":"YulAssignment","src":"6212:26:87","value":{"arguments":[{"name":"headStart","nativeSrc":"6224:9:87","nodeType":"YulIdentifier","src":"6224:9:87"},{"kind":"number","nativeSrc":"6235:2:87","nodeType":"YulLiteral","src":"6235:2:87","type":"","value":"64"}],"functionName":{"name":"add","nativeSrc":"6220:3:87","nodeType":"YulIdentifier","src":"6220:3:87"},"nativeSrc":"6220:18:87","nodeType":"YulFunctionCall","src":"6220:18:87"},"variableNames":[{"name":"tail","nativeSrc":"6212:4:87","nodeType":"YulIdentifier","src":"6212:4:87"}]},{"expression":{"arguments":[{"name":"headStart","nativeSrc":"6254:9:87","nodeType":"YulIdentifier","src":"6254:9:87"},{"arguments":[{"name":"value0","nativeSrc":"6269:6:87","nodeType":"YulIdentifier","src":"6269:6:87"},{"arguments":[{"arguments":[{"kind":"number","nativeSrc":"6285:3:87","nodeType":"YulLiteral","src":"6285:3:87","type":"","value":"160"},{"kind":"number","nativeSrc":"6290:1:87","nodeType":"YulLiteral","src":"6290:1:87","type":"","value":"1"}],"functionName":{"name":"shl","nativeSrc":"6281:3:87","nodeType":"YulIdentifier","src":"6281:3:87"},"nativeSrc":"6281:11:87","nodeType":"YulFunctionCall","src":"6281:11:87"},{"kind":"number","nativeSrc":"6294:1:87","nodeType":"YulLiteral","src":"6294:1:87","type":"","value":"1"}],"functionName":{"name":"sub","nativeSrc":"6277:3:87","nodeType":"YulIdentifier","src":"6277:3:87"},"nativeSrc":"6277:19:87","nodeType":"YulFunctionCall","src":"6277:19:87"}],"functionName":{"name":"and","nativeSrc":"6265:3:87","nodeType":"YulIdentifier","src":"6265:3:87"},"nativeSrc":"6265:32:87","nodeType":"YulFunctionCall","src":"6265:32:87"}],"functionName":{"name":"mstore","nativeSrc":"6247:6:87","nodeType":"YulIdentifier","src":"6247:6:87"},"nativeSrc":"6247:51:87","nodeType":"YulFunctionCall","src":"6247:51:87"},"nativeSrc":"6247:51:87","nodeType":"YulExpressionStatement","src":"6247:51:87"},{"expression":{"arguments":[{"arguments":[{"name":"headStart","nativeSrc":"6318:9:87","nodeType":"YulIdentifier","src":"6318:9:87"},{"kind":"number","nativeSrc":"6329:2:87","nodeType":"YulLiteral","src":"6329:2:87","type":"","value":"32"}],"functionName":{"name":"add","nativeSrc":"6314:3:87","nodeType":"YulIdentifier","src":"6314:3:87"},"nativeSrc":"6314:18:87","nodeType":"YulFunctionCall","src":"6314:18:87"},{"name":"value1","nativeSrc":"6334:6:87","nodeType":"YulIdentifier","src":"6334:6:87"}],"functionName":{"name":"mstore","nativeSrc":"6307:6:87","nodeType":"YulIdentifier","src":"6307:6:87"},"nativeSrc":"6307:34:87","nodeType":"YulFunctionCall","src":"6307:34:87"},"nativeSrc":"6307:34:87","nodeType":"YulExpressionStatement","src":"6307:34:87"}]},"name":"abi_encode_tuple_t_address_t_uint256__to_t_address_t_uint256__fromStack_reversed","nativeSrc":"6073:274:87","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nativeSrc":"6163:9:87","nodeType":"YulTypedName","src":"6163:9:87","type":""},{"name":"value1","nativeSrc":"6174:6:87","nodeType":"YulTypedName","src":"6174:6:87","type":""},{"name":"value0","nativeSrc":"6182:6:87","nodeType":"YulTypedName","src":"6182:6:87","type":""}],"returnVariables":[{"name":"tail","nativeSrc":"6193:4:87","nodeType":"YulTypedName","src":"6193:4:87","type":""}],"src":"6073:274:87"},{"body":{"nativeSrc":"6395:93:87","nodeType":"YulBlock","src":"6395:93:87","statements":[{"body":{"nativeSrc":"6431:22:87","nodeType":"YulBlock","src":"6431:22:87","statements":[{"expression":{"arguments":[],"functionName":{"name":"panic_error_0x11","nativeSrc":"6433:16:87","nodeType":"YulIdentifier","src":"6433:16:87"},"nativeSrc":"6433:18:87","nodeType":"YulFunctionCall","src":"6433:18:87"},"nativeSrc":"6433:18:87","nodeType":"YulExpressionStatement","src":"6433:18:87"}]},"condition":{"arguments":[{"name":"value","nativeSrc":"6411:5:87","nodeType":"YulIdentifier","src":"6411:5:87"},{"arguments":[{"kind":"number","nativeSrc":"6422:3:87","nodeType":"YulLiteral","src":"6422:3:87","type":"","value":"255"},{"kind":"number","nativeSrc":"6427:1:87","nodeType":"YulLiteral","src":"6427:1:87","type":"","value":"1"}],"functionName":{"name":"shl","nativeSrc":"6418:3:87","nodeType":"YulIdentifier","src":"6418:3:87"},"nativeSrc":"6418:11:87","nodeType":"YulFunctionCall","src":"6418:11:87"}],"functionName":{"name":"eq","nativeSrc":"6408:2:87","nodeType":"YulIdentifier","src":"6408:2:87"},"nativeSrc":"6408:22:87","nodeType":"YulFunctionCall","src":"6408:22:87"},"nativeSrc":"6405:48:87","nodeType":"YulIf","src":"6405:48:87"},{"nativeSrc":"6462:20:87","nodeType":"YulAssignment","src":"6462:20:87","value":{"arguments":[{"kind":"number","nativeSrc":"6473:1:87","nodeType":"YulLiteral","src":"6473:1:87","type":"","value":"0"},{"name":"value","nativeSrc":"6476:5:87","nodeType":"YulIdentifier","src":"6476:5:87"}],"functionName":{"name":"sub","nativeSrc":"6469:3:87","nodeType":"YulIdentifier","src":"6469:3:87"},"nativeSrc":"6469:13:87","nodeType":"YulFunctionCall","src":"6469:13:87"},"variableNames":[{"name":"ret","nativeSrc":"6462:3:87","nodeType":"YulIdentifier","src":"6462:3:87"}]}]},"name":"negate_t_int256","nativeSrc":"6352:136:87","nodeType":"YulFunctionDefinition","parameters":[{"name":"value","nativeSrc":"6377:5:87","nodeType":"YulTypedName","src":"6377:5:87","type":""}],"returnVariables":[{"name":"ret","nativeSrc":"6387:3:87","nodeType":"YulTypedName","src":"6387:3:87","type":""}],"src":"6352:136:87"},{"body":{"nativeSrc":"6525:95:87","nodeType":"YulBlock","src":"6525:95:87","statements":[{"expression":{"arguments":[{"kind":"number","nativeSrc":"6542:1:87","nodeType":"YulLiteral","src":"6542:1:87","type":"","value":"0"},{"arguments":[{"kind":"number","nativeSrc":"6549:3:87","nodeType":"YulLiteral","src":"6549:3:87","type":"","value":"224"},{"kind":"number","nativeSrc":"6554:10:87","nodeType":"YulLiteral","src":"6554:10:87","type":"","value":"0x4e487b71"}],"functionName":{"name":"shl","nativeSrc":"6545:3:87","nodeType":"YulIdentifier","src":"6545:3:87"},"nativeSrc":"6545:20:87","nodeType":"YulFunctionCall","src":"6545:20:87"}],"functionName":{"name":"mstore","nativeSrc":"6535:6:87","nodeType":"YulIdentifier","src":"6535:6:87"},"nativeSrc":"6535:31:87","nodeType":"YulFunctionCall","src":"6535:31:87"},"nativeSrc":"6535:31:87","nodeType":"YulExpressionStatement","src":"6535:31:87"},{"expression":{"arguments":[{"kind":"number","nativeSrc":"6582:1:87","nodeType":"YulLiteral","src":"6582:1:87","type":"","value":"4"},{"kind":"number","nativeSrc":"6585:4:87","nodeType":"YulLiteral","src":"6585:4:87","type":"","value":"0x21"}],"functionName":{"name":"mstore","nativeSrc":"6575:6:87","nodeType":"YulIdentifier","src":"6575:6:87"},"nativeSrc":"6575:15:87","nodeType":"YulFunctionCall","src":"6575:15:87"},"nativeSrc":"6575:15:87","nodeType":"YulExpressionStatement","src":"6575:15:87"},{"expression":{"arguments":[{"kind":"number","nativeSrc":"6606:1:87","nodeType":"YulLiteral","src":"6606:1:87","type":"","value":"0"},{"kind":"number","nativeSrc":"6609:4:87","nodeType":"YulLiteral","src":"6609:4:87","type":"","value":"0x24"}],"functionName":{"name":"revert","nativeSrc":"6599:6:87","nodeType":"YulIdentifier","src":"6599:6:87"},"nativeSrc":"6599:15:87","nodeType":"YulFunctionCall","src":"6599:15:87"},"nativeSrc":"6599:15:87","nodeType":"YulExpressionStatement","src":"6599:15:87"}]},"name":"panic_error_0x21","nativeSrc":"6493:127:87","nodeType":"YulFunctionDefinition","src":"6493:127:87"},{"body":{"nativeSrc":"6673:77:87","nodeType":"YulBlock","src":"6673:77:87","statements":[{"nativeSrc":"6683:16:87","nodeType":"YulAssignment","src":"6683:16:87","value":{"arguments":[{"name":"x","nativeSrc":"6694:1:87","nodeType":"YulIdentifier","src":"6694:1:87"},{"name":"y","nativeSrc":"6697:1:87","nodeType":"YulIdentifier","src":"6697:1:87"}],"functionName":{"name":"add","nativeSrc":"6690:3:87","nodeType":"YulIdentifier","src":"6690:3:87"},"nativeSrc":"6690:9:87","nodeType":"YulFunctionCall","src":"6690:9:87"},"variableNames":[{"name":"sum","nativeSrc":"6683:3:87","nodeType":"YulIdentifier","src":"6683:3:87"}]},{"body":{"nativeSrc":"6722:22:87","nodeType":"YulBlock","src":"6722:22:87","statements":[{"expression":{"arguments":[],"functionName":{"name":"panic_error_0x11","nativeSrc":"6724:16:87","nodeType":"YulIdentifier","src":"6724:16:87"},"nativeSrc":"6724:18:87","nodeType":"YulFunctionCall","src":"6724:18:87"},"nativeSrc":"6724:18:87","nodeType":"YulExpressionStatement","src":"6724:18:87"}]},"condition":{"arguments":[{"name":"x","nativeSrc":"6714:1:87","nodeType":"YulIdentifier","src":"6714:1:87"},{"name":"sum","nativeSrc":"6717:3:87","nodeType":"YulIdentifier","src":"6717:3:87"}],"functionName":{"name":"gt","nativeSrc":"6711:2:87","nodeType":"YulIdentifier","src":"6711:2:87"},"nativeSrc":"6711:10:87","nodeType":"YulFunctionCall","src":"6711:10:87"},"nativeSrc":"6708:36:87","nodeType":"YulIf","src":"6708:36:87"}]},"name":"checked_add_t_uint256","nativeSrc":"6625:125:87","nodeType":"YulFunctionDefinition","parameters":[{"name":"x","nativeSrc":"6656:1:87","nodeType":"YulTypedName","src":"6656:1:87","type":""},{"name":"y","nativeSrc":"6659:1:87","nodeType":"YulTypedName","src":"6659:1:87","type":""}],"returnVariables":[{"name":"sum","nativeSrc":"6665:3:87","nodeType":"YulTypedName","src":"6665:3:87","type":""}],"src":"6625:125:87"},{"body":{"nativeSrc":"6824:306:87","nodeType":"YulBlock","src":"6824:306:87","statements":[{"nativeSrc":"6834:10:87","nodeType":"YulAssignment","src":"6834:10:87","value":{"kind":"number","nativeSrc":"6843:1:87","nodeType":"YulLiteral","src":"6843:1:87","type":"","value":"1"},"variableNames":[{"name":"power","nativeSrc":"6834:5:87","nodeType":"YulIdentifier","src":"6834:5:87"}]},{"nativeSrc":"6853:13:87","nodeType":"YulAssignment","src":"6853:13:87","value":{"name":"_base","nativeSrc":"6861:5:87","nodeType":"YulIdentifier","src":"6861:5:87"},"variableNames":[{"name":"base","nativeSrc":"6853:4:87","nodeType":"YulIdentifier","src":"6853:4:87"}]},{"body":{"nativeSrc":"6911:213:87","nodeType":"YulBlock","src":"6911:213:87","statements":[{"body":{"nativeSrc":"6953:22:87","nodeType":"YulBlock","src":"6953:22:87","statements":[{"expression":{"arguments":[],"functionName":{"name":"panic_error_0x11","nativeSrc":"6955:16:87","nodeType":"YulIdentifier","src":"6955:16:87"},"nativeSrc":"6955:18:87","nodeType":"YulFunctionCall","src":"6955:18:87"},"nativeSrc":"6955:18:87","nodeType":"YulExpressionStatement","src":"6955:18:87"}]},"condition":{"arguments":[{"name":"base","nativeSrc":"6931:4:87","nodeType":"YulIdentifier","src":"6931:4:87"},{"arguments":[{"name":"max","nativeSrc":"6941:3:87","nodeType":"YulIdentifier","src":"6941:3:87"},{"name":"base","nativeSrc":"6946:4:87","nodeType":"YulIdentifier","src":"6946:4:87"}],"functionName":{"name":"div","nativeSrc":"6937:3:87","nodeType":"YulIdentifier","src":"6937:3:87"},"nativeSrc":"6937:14:87","nodeType":"YulFunctionCall","src":"6937:14:87"}],"functionName":{"name":"gt","nativeSrc":"6928:2:87","nodeType":"YulIdentifier","src":"6928:2:87"},"nativeSrc":"6928:24:87","nodeType":"YulFunctionCall","src":"6928:24:87"},"nativeSrc":"6925:50:87","nodeType":"YulIf","src":"6925:50:87"},{"body":{"nativeSrc":"7008:29:87","nodeType":"YulBlock","src":"7008:29:87","statements":[{"nativeSrc":"7010:25:87","nodeType":"YulAssignment","src":"7010:25:87","value":{"arguments":[{"name":"power","nativeSrc":"7023:5:87","nodeType":"YulIdentifier","src":"7023:5:87"},{"name":"base","nativeSrc":"7030:4:87","nodeType":"YulIdentifier","src":"7030:4:87"}],"functionName":{"name":"mul","nativeSrc":"7019:3:87","nodeType":"YulIdentifier","src":"7019:3:87"},"nativeSrc":"7019:16:87","nodeType":"YulFunctionCall","src":"7019:16:87"},"variableNames":[{"name":"power","nativeSrc":"7010:5:87","nodeType":"YulIdentifier","src":"7010:5:87"}]}]},"condition":{"arguments":[{"name":"exponent","nativeSrc":"6995:8:87","nodeType":"YulIdentifier","src":"6995:8:87"},{"kind":"number","nativeSrc":"7005:1:87","nodeType":"YulLiteral","src":"7005:1:87","type":"","value":"1"}],"functionName":{"name":"and","nativeSrc":"6991:3:87","nodeType":"YulIdentifier","src":"6991:3:87"},"nativeSrc":"6991:16:87","nodeType":"YulFunctionCall","src":"6991:16:87"},"nativeSrc":"6988:49:87","nodeType":"YulIf","src":"6988:49:87"},{"nativeSrc":"7050:23:87","nodeType":"YulAssignment","src":"7050:23:87","value":{"arguments":[{"name":"base","nativeSrc":"7062:4:87","nodeType":"YulIdentifier","src":"7062:4:87"},{"name":"base","nativeSrc":"7068:4:87","nodeType":"YulIdentifier","src":"7068:4:87"}],"functionName":{"name":"mul","nativeSrc":"7058:3:87","nodeType":"YulIdentifier","src":"7058:3:87"},"nativeSrc":"7058:15:87","nodeType":"YulFunctionCall","src":"7058:15:87"},"variableNames":[{"name":"base","nativeSrc":"7050:4:87","nodeType":"YulIdentifier","src":"7050:4:87"}]},{"nativeSrc":"7086:28:87","nodeType":"YulAssignment","src":"7086:28:87","value":{"arguments":[{"kind":"number","nativeSrc":"7102:1:87","nodeType":"YulLiteral","src":"7102:1:87","type":"","value":"1"},{"name":"exponent","nativeSrc":"7105:8:87","nodeType":"YulIdentifier","src":"7105:8:87"}],"functionName":{"name":"shr","nativeSrc":"7098:3:87","nodeType":"YulIdentifier","src":"7098:3:87"},"nativeSrc":"7098:16:87","nodeType":"YulFunctionCall","src":"7098:16:87"},"variableNames":[{"name":"exponent","nativeSrc":"7086:8:87","nodeType":"YulIdentifier","src":"7086:8:87"}]}]},"condition":{"arguments":[{"name":"exponent","nativeSrc":"6886:8:87","nodeType":"YulIdentifier","src":"6886:8:87"},{"kind":"number","nativeSrc":"6896:1:87","nodeType":"YulLiteral","src":"6896:1:87","type":"","value":"1"}],"functionName":{"name":"gt","nativeSrc":"6883:2:87","nodeType":"YulIdentifier","src":"6883:2:87"},"nativeSrc":"6883:15:87","nodeType":"YulFunctionCall","src":"6883:15:87"},"nativeSrc":"6875:249:87","nodeType":"YulForLoop","post":{"nativeSrc":"6899:3:87","nodeType":"YulBlock","src":"6899:3:87","statements":[]},"pre":{"nativeSrc":"6879:3:87","nodeType":"YulBlock","src":"6879:3:87","statements":[]},"src":"6875:249:87"}]},"name":"checked_exp_helper","nativeSrc":"6755:375:87","nodeType":"YulFunctionDefinition","parameters":[{"name":"_base","nativeSrc":"6783:5:87","nodeType":"YulTypedName","src":"6783:5:87","type":""},{"name":"exponent","nativeSrc":"6790:8:87","nodeType":"YulTypedName","src":"6790:8:87","type":""},{"name":"max","nativeSrc":"6800:3:87","nodeType":"YulTypedName","src":"6800:3:87","type":""}],"returnVariables":[{"name":"power","nativeSrc":"6808:5:87","nodeType":"YulTypedName","src":"6808:5:87","type":""},{"name":"base","nativeSrc":"6815:4:87","nodeType":"YulTypedName","src":"6815:4:87","type":""}],"src":"6755:375:87"},{"body":{"nativeSrc":"7194:843:87","nodeType":"YulBlock","src":"7194:843:87","statements":[{"body":{"nativeSrc":"7232:52:87","nodeType":"YulBlock","src":"7232:52:87","statements":[{"nativeSrc":"7246:10:87","nodeType":"YulAssignment","src":"7246:10:87","value":{"kind":"number","nativeSrc":"7255:1:87","nodeType":"YulLiteral","src":"7255:1:87","type":"","value":"1"},"variableNames":[{"name":"power","nativeSrc":"7246:5:87","nodeType":"YulIdentifier","src":"7246:5:87"}]},{"nativeSrc":"7269:5:87","nodeType":"YulLeave","src":"7269:5:87"}]},"condition":{"arguments":[{"name":"exponent","nativeSrc":"7214:8:87","nodeType":"YulIdentifier","src":"7214:8:87"}],"functionName":{"name":"iszero","nativeSrc":"7207:6:87","nodeType":"YulIdentifier","src":"7207:6:87"},"nativeSrc":"7207:16:87","nodeType":"YulFunctionCall","src":"7207:16:87"},"nativeSrc":"7204:80:87","nodeType":"YulIf","src":"7204:80:87"},{"body":{"nativeSrc":"7317:52:87","nodeType":"YulBlock","src":"7317:52:87","statements":[{"nativeSrc":"7331:10:87","nodeType":"YulAssignment","src":"7331:10:87","value":{"kind":"number","nativeSrc":"7340:1:87","nodeType":"YulLiteral","src":"7340:1:87","type":"","value":"0"},"variableNames":[{"name":"power","nativeSrc":"7331:5:87","nodeType":"YulIdentifier","src":"7331:5:87"}]},{"nativeSrc":"7354:5:87","nodeType":"YulLeave","src":"7354:5:87"}]},"condition":{"arguments":[{"name":"base","nativeSrc":"7303:4:87","nodeType":"YulIdentifier","src":"7303:4:87"}],"functionName":{"name":"iszero","nativeSrc":"7296:6:87","nodeType":"YulIdentifier","src":"7296:6:87"},"nativeSrc":"7296:12:87","nodeType":"YulFunctionCall","src":"7296:12:87"},"nativeSrc":"7293:76:87","nodeType":"YulIf","src":"7293:76:87"},{"cases":[{"body":{"nativeSrc":"7405:52:87","nodeType":"YulBlock","src":"7405:52:87","statements":[{"nativeSrc":"7419:10:87","nodeType":"YulAssignment","src":"7419:10:87","value":{"kind":"number","nativeSrc":"7428:1:87","nodeType":"YulLiteral","src":"7428:1:87","type":"","value":"1"},"variableNames":[{"name":"power","nativeSrc":"7419:5:87","nodeType":"YulIdentifier","src":"7419:5:87"}]},{"nativeSrc":"7442:5:87","nodeType":"YulLeave","src":"7442:5:87"}]},"nativeSrc":"7398:59:87","nodeType":"YulCase","src":"7398:59:87","value":{"kind":"number","nativeSrc":"7403:1:87","nodeType":"YulLiteral","src":"7403:1:87","type":"","value":"1"}},{"body":{"nativeSrc":"7473:167:87","nodeType":"YulBlock","src":"7473:167:87","statements":[{"body":{"nativeSrc":"7508:22:87","nodeType":"YulBlock","src":"7508:22:87","statements":[{"expression":{"arguments":[],"functionName":{"name":"panic_error_0x11","nativeSrc":"7510:16:87","nodeType":"YulIdentifier","src":"7510:16:87"},"nativeSrc":"7510:18:87","nodeType":"YulFunctionCall","src":"7510:18:87"},"nativeSrc":"7510:18:87","nodeType":"YulExpressionStatement","src":"7510:18:87"}]},"condition":{"arguments":[{"name":"exponent","nativeSrc":"7493:8:87","nodeType":"YulIdentifier","src":"7493:8:87"},{"kind":"number","nativeSrc":"7503:3:87","nodeType":"YulLiteral","src":"7503:3:87","type":"","value":"255"}],"functionName":{"name":"gt","nativeSrc":"7490:2:87","nodeType":"YulIdentifier","src":"7490:2:87"},"nativeSrc":"7490:17:87","nodeType":"YulFunctionCall","src":"7490:17:87"},"nativeSrc":"7487:43:87","nodeType":"YulIf","src":"7487:43:87"},{"nativeSrc":"7543:25:87","nodeType":"YulAssignment","src":"7543:25:87","value":{"arguments":[{"name":"exponent","nativeSrc":"7556:8:87","nodeType":"YulIdentifier","src":"7556:8:87"},{"kind":"number","nativeSrc":"7566:1:87","nodeType":"YulLiteral","src":"7566:1:87","type":"","value":"1"}],"functionName":{"name":"shl","nativeSrc":"7552:3:87","nodeType":"YulIdentifier","src":"7552:3:87"},"nativeSrc":"7552:16:87","nodeType":"YulFunctionCall","src":"7552:16:87"},"variableNames":[{"name":"power","nativeSrc":"7543:5:87","nodeType":"YulIdentifier","src":"7543:5:87"}]},{"nativeSrc":"7581:11:87","nodeType":"YulVariableDeclaration","src":"7581:11:87","value":{"kind":"number","nativeSrc":"7591:1:87","nodeType":"YulLiteral","src":"7591:1:87","type":"","value":"0"},"variables":[{"name":"_1","nativeSrc":"7585:2:87","nodeType":"YulTypedName","src":"7585:2:87","type":""}]},{"nativeSrc":"7605:7:87","nodeType":"YulAssignment","src":"7605:7:87","value":{"kind":"number","nativeSrc":"7611:1:87","nodeType":"YulLiteral","src":"7611:1:87","type":"","value":"0"},"variableNames":[{"name":"_1","nativeSrc":"7605:2:87","nodeType":"YulIdentifier","src":"7605:2:87"}]},{"nativeSrc":"7625:5:87","nodeType":"YulLeave","src":"7625:5:87"}]},"nativeSrc":"7466:174:87","nodeType":"YulCase","src":"7466:174:87","value":{"kind":"number","nativeSrc":"7471:1:87","nodeType":"YulLiteral","src":"7471:1:87","type":"","value":"2"}}],"expression":{"name":"base","nativeSrc":"7385:4:87","nodeType":"YulIdentifier","src":"7385:4:87"},"nativeSrc":"7378:262:87","nodeType":"YulSwitch","src":"7378:262:87"},{"body":{"nativeSrc":"7738:114:87","nodeType":"YulBlock","src":"7738:114:87","statements":[{"nativeSrc":"7752:28:87","nodeType":"YulAssignment","src":"7752:28:87","value":{"arguments":[{"name":"base","nativeSrc":"7765:4:87","nodeType":"YulIdentifier","src":"7765:4:87"},{"name":"exponent","nativeSrc":"7771:8:87","nodeType":"YulIdentifier","src":"7771:8:87"}],"functionName":{"name":"exp","nativeSrc":"7761:3:87","nodeType":"YulIdentifier","src":"7761:3:87"},"nativeSrc":"7761:19:87","nodeType":"YulFunctionCall","src":"7761:19:87"},"variableNames":[{"name":"power","nativeSrc":"7752:5:87","nodeType":"YulIdentifier","src":"7752:5:87"}]},{"nativeSrc":"7793:11:87","nodeType":"YulVariableDeclaration","src":"7793:11:87","value":{"kind":"number","nativeSrc":"7803:1:87","nodeType":"YulLiteral","src":"7803:1:87","type":"","value":"0"},"variables":[{"name":"_2","nativeSrc":"7797:2:87","nodeType":"YulTypedName","src":"7797:2:87","type":""}]},{"nativeSrc":"7817:7:87","nodeType":"YulAssignment","src":"7817:7:87","value":{"kind":"number","nativeSrc":"7823:1:87","nodeType":"YulLiteral","src":"7823:1:87","type":"","value":"0"},"variableNames":[{"name":"_2","nativeSrc":"7817:2:87","nodeType":"YulIdentifier","src":"7817:2:87"}]},{"nativeSrc":"7837:5:87","nodeType":"YulLeave","src":"7837:5:87"}]},"condition":{"arguments":[{"arguments":[{"arguments":[{"name":"base","nativeSrc":"7662:4:87","nodeType":"YulIdentifier","src":"7662:4:87"},{"kind":"number","nativeSrc":"7668:2:87","nodeType":"YulLiteral","src":"7668:2:87","type":"","value":"11"}],"functionName":{"name":"lt","nativeSrc":"7659:2:87","nodeType":"YulIdentifier","src":"7659:2:87"},"nativeSrc":"7659:12:87","nodeType":"YulFunctionCall","src":"7659:12:87"},{"arguments":[{"name":"exponent","nativeSrc":"7676:8:87","nodeType":"YulIdentifier","src":"7676:8:87"},{"kind":"number","nativeSrc":"7686:2:87","nodeType":"YulLiteral","src":"7686:2:87","type":"","value":"78"}],"functionName":{"name":"lt","nativeSrc":"7673:2:87","nodeType":"YulIdentifier","src":"7673:2:87"},"nativeSrc":"7673:16:87","nodeType":"YulFunctionCall","src":"7673:16:87"}],"functionName":{"name":"and","nativeSrc":"7655:3:87","nodeType":"YulIdentifier","src":"7655:3:87"},"nativeSrc":"7655:35:87","nodeType":"YulFunctionCall","src":"7655:35:87"},{"arguments":[{"arguments":[{"name":"base","nativeSrc":"7699:4:87","nodeType":"YulIdentifier","src":"7699:4:87"},{"kind":"number","nativeSrc":"7705:3:87","nodeType":"YulLiteral","src":"7705:3:87","type":"","value":"307"}],"functionName":{"name":"lt","nativeSrc":"7696:2:87","nodeType":"YulIdentifier","src":"7696:2:87"},"nativeSrc":"7696:13:87","nodeType":"YulFunctionCall","src":"7696:13:87"},{"arguments":[{"name":"exponent","nativeSrc":"7714:8:87","nodeType":"YulIdentifier","src":"7714:8:87"},{"kind":"number","nativeSrc":"7724:2:87","nodeType":"YulLiteral","src":"7724:2:87","type":"","value":"32"}],"functionName":{"name":"lt","nativeSrc":"7711:2:87","nodeType":"YulIdentifier","src":"7711:2:87"},"nativeSrc":"7711:16:87","nodeType":"YulFunctionCall","src":"7711:16:87"}],"functionName":{"name":"and","nativeSrc":"7692:3:87","nodeType":"YulIdentifier","src":"7692:3:87"},"nativeSrc":"7692:36:87","nodeType":"YulFunctionCall","src":"7692:36:87"}],"functionName":{"name":"or","nativeSrc":"7652:2:87","nodeType":"YulIdentifier","src":"7652:2:87"},"nativeSrc":"7652:77:87","nodeType":"YulFunctionCall","src":"7652:77:87"},"nativeSrc":"7649:203:87","nodeType":"YulIf","src":"7649:203:87"},{"nativeSrc":"7861:65:87","nodeType":"YulVariableDeclaration","src":"7861:65:87","value":{"arguments":[{"name":"base","nativeSrc":"7903:4:87","nodeType":"YulIdentifier","src":"7903:4:87"},{"name":"exponent","nativeSrc":"7909:8:87","nodeType":"YulIdentifier","src":"7909:8:87"},{"arguments":[{"kind":"number","nativeSrc":"7923:1:87","nodeType":"YulLiteral","src":"7923:1:87","type":"","value":"0"}],"functionName":{"name":"not","nativeSrc":"7919:3:87","nodeType":"YulIdentifier","src":"7919:3:87"},"nativeSrc":"7919:6:87","nodeType":"YulFunctionCall","src":"7919:6:87"}],"functionName":{"name":"checked_exp_helper","nativeSrc":"7884:18:87","nodeType":"YulIdentifier","src":"7884:18:87"},"nativeSrc":"7884:42:87","nodeType":"YulFunctionCall","src":"7884:42:87"},"variables":[{"name":"power_1","nativeSrc":"7865:7:87","nodeType":"YulTypedName","src":"7865:7:87","type":""},{"name":"base_1","nativeSrc":"7874:6:87","nodeType":"YulTypedName","src":"7874:6:87","type":""}]},{"body":{"nativeSrc":"7971:22:87","nodeType":"YulBlock","src":"7971:22:87","statements":[{"expression":{"arguments":[],"functionName":{"name":"panic_error_0x11","nativeSrc":"7973:16:87","nodeType":"YulIdentifier","src":"7973:16:87"},"nativeSrc":"7973:18:87","nodeType":"YulFunctionCall","src":"7973:18:87"},"nativeSrc":"7973:18:87","nodeType":"YulExpressionStatement","src":"7973:18:87"}]},"condition":{"arguments":[{"name":"power_1","nativeSrc":"7941:7:87","nodeType":"YulIdentifier","src":"7941:7:87"},{"arguments":[{"arguments":[{"kind":"number","nativeSrc":"7958:1:87","nodeType":"YulLiteral","src":"7958:1:87","type":"","value":"0"}],"functionName":{"name":"not","nativeSrc":"7954:3:87","nodeType":"YulIdentifier","src":"7954:3:87"},"nativeSrc":"7954:6:87","nodeType":"YulFunctionCall","src":"7954:6:87"},{"name":"base_1","nativeSrc":"7962:6:87","nodeType":"YulIdentifier","src":"7962:6:87"}],"functionName":{"name":"div","nativeSrc":"7950:3:87","nodeType":"YulIdentifier","src":"7950:3:87"},"nativeSrc":"7950:19:87","nodeType":"YulFunctionCall","src":"7950:19:87"}],"functionName":{"name":"gt","nativeSrc":"7938:2:87","nodeType":"YulIdentifier","src":"7938:2:87"},"nativeSrc":"7938:32:87","nodeType":"YulFunctionCall","src":"7938:32:87"},"nativeSrc":"7935:58:87","nodeType":"YulIf","src":"7935:58:87"},{"nativeSrc":"8002:29:87","nodeType":"YulAssignment","src":"8002:29:87","value":{"arguments":[{"name":"power_1","nativeSrc":"8015:7:87","nodeType":"YulIdentifier","src":"8015:7:87"},{"name":"base_1","nativeSrc":"8024:6:87","nodeType":"YulIdentifier","src":"8024:6:87"}],"functionName":{"name":"mul","nativeSrc":"8011:3:87","nodeType":"YulIdentifier","src":"8011:3:87"},"nativeSrc":"8011:20:87","nodeType":"YulFunctionCall","src":"8011:20:87"},"variableNames":[{"name":"power","nativeSrc":"8002:5:87","nodeType":"YulIdentifier","src":"8002:5:87"}]}]},"name":"checked_exp_unsigned","nativeSrc":"7135:902:87","nodeType":"YulFunctionDefinition","parameters":[{"name":"base","nativeSrc":"7165:4:87","nodeType":"YulTypedName","src":"7165:4:87","type":""},{"name":"exponent","nativeSrc":"7171:8:87","nodeType":"YulTypedName","src":"7171:8:87","type":""}],"returnVariables":[{"name":"power","nativeSrc":"7184:5:87","nodeType":"YulTypedName","src":"7184:5:87","type":""}],"src":"7135:902:87"},{"body":{"nativeSrc":"8110:72:87","nodeType":"YulBlock","src":"8110:72:87","statements":[{"nativeSrc":"8120:56:87","nodeType":"YulAssignment","src":"8120:56:87","value":{"arguments":[{"name":"base","nativeSrc":"8150:4:87","nodeType":"YulIdentifier","src":"8150:4:87"},{"arguments":[{"name":"exponent","nativeSrc":"8160:8:87","nodeType":"YulIdentifier","src":"8160:8:87"},{"kind":"number","nativeSrc":"8170:4:87","nodeType":"YulLiteral","src":"8170:4:87","type":"","value":"0xff"}],"functionName":{"name":"and","nativeSrc":"8156:3:87","nodeType":"YulIdentifier","src":"8156:3:87"},"nativeSrc":"8156:19:87","nodeType":"YulFunctionCall","src":"8156:19:87"}],"functionName":{"name":"checked_exp_unsigned","nativeSrc":"8129:20:87","nodeType":"YulIdentifier","src":"8129:20:87"},"nativeSrc":"8129:47:87","nodeType":"YulFunctionCall","src":"8129:47:87"},"variableNames":[{"name":"power","nativeSrc":"8120:5:87","nodeType":"YulIdentifier","src":"8120:5:87"}]}]},"name":"checked_exp_t_uint256_t_uint8","nativeSrc":"8042:140:87","nodeType":"YulFunctionDefinition","parameters":[{"name":"base","nativeSrc":"8081:4:87","nodeType":"YulTypedName","src":"8081:4:87","type":""},{"name":"exponent","nativeSrc":"8087:8:87","nodeType":"YulTypedName","src":"8087:8:87","type":""}],"returnVariables":[{"name":"power","nativeSrc":"8100:5:87","nodeType":"YulTypedName","src":"8100:5:87","type":""}],"src":"8042:140:87"},{"body":{"nativeSrc":"8219:95:87","nodeType":"YulBlock","src":"8219:95:87","statements":[{"expression":{"arguments":[{"kind":"number","nativeSrc":"8236:1:87","nodeType":"YulLiteral","src":"8236:1:87","type":"","value":"0"},{"arguments":[{"kind":"number","nativeSrc":"8243:3:87","nodeType":"YulLiteral","src":"8243:3:87","type":"","value":"224"},{"kind":"number","nativeSrc":"8248:10:87","nodeType":"YulLiteral","src":"8248:10:87","type":"","value":"0x4e487b71"}],"functionName":{"name":"shl","nativeSrc":"8239:3:87","nodeType":"YulIdentifier","src":"8239:3:87"},"nativeSrc":"8239:20:87","nodeType":"YulFunctionCall","src":"8239:20:87"}],"functionName":{"name":"mstore","nativeSrc":"8229:6:87","nodeType":"YulIdentifier","src":"8229:6:87"},"nativeSrc":"8229:31:87","nodeType":"YulFunctionCall","src":"8229:31:87"},"nativeSrc":"8229:31:87","nodeType":"YulExpressionStatement","src":"8229:31:87"},{"expression":{"arguments":[{"kind":"number","nativeSrc":"8276:1:87","nodeType":"YulLiteral","src":"8276:1:87","type":"","value":"4"},{"kind":"number","nativeSrc":"8279:4:87","nodeType":"YulLiteral","src":"8279:4:87","type":"","value":"0x12"}],"functionName":{"name":"mstore","nativeSrc":"8269:6:87","nodeType":"YulIdentifier","src":"8269:6:87"},"nativeSrc":"8269:15:87","nodeType":"YulFunctionCall","src":"8269:15:87"},"nativeSrc":"8269:15:87","nodeType":"YulExpressionStatement","src":"8269:15:87"},{"expression":{"arguments":[{"kind":"number","nativeSrc":"8300:1:87","nodeType":"YulLiteral","src":"8300:1:87","type":"","value":"0"},{"kind":"number","nativeSrc":"8303:4:87","nodeType":"YulLiteral","src":"8303:4:87","type":"","value":"0x24"}],"functionName":{"name":"revert","nativeSrc":"8293:6:87","nodeType":"YulIdentifier","src":"8293:6:87"},"nativeSrc":"8293:15:87","nodeType":"YulFunctionCall","src":"8293:15:87"},"nativeSrc":"8293:15:87","nodeType":"YulExpressionStatement","src":"8293:15:87"}]},"name":"panic_error_0x12","nativeSrc":"8187:127:87","nodeType":"YulFunctionDefinition","src":"8187:127:87"},{"body":{"nativeSrc":"8449:201:87","nodeType":"YulBlock","src":"8449:201:87","statements":[{"body":{"nativeSrc":"8487:16:87","nodeType":"YulBlock","src":"8487:16:87","statements":[{"expression":{"arguments":[{"kind":"number","nativeSrc":"8496:1:87","nodeType":"YulLiteral","src":"8496:1:87","type":"","value":"0"},{"kind":"number","nativeSrc":"8499:1:87","nodeType":"YulLiteral","src":"8499:1:87","type":"","value":"0"}],"functionName":{"name":"revert","nativeSrc":"8489:6:87","nodeType":"YulIdentifier","src":"8489:6:87"},"nativeSrc":"8489:12:87","nodeType":"YulFunctionCall","src":"8489:12:87"},"nativeSrc":"8489:12:87","nodeType":"YulExpressionStatement","src":"8489:12:87"}]},"condition":{"arguments":[{"name":"startIndex","nativeSrc":"8465:10:87","nodeType":"YulIdentifier","src":"8465:10:87"},{"name":"endIndex","nativeSrc":"8477:8:87","nodeType":"YulIdentifier","src":"8477:8:87"}],"functionName":{"name":"gt","nativeSrc":"8462:2:87","nodeType":"YulIdentifier","src":"8462:2:87"},"nativeSrc":"8462:24:87","nodeType":"YulFunctionCall","src":"8462:24:87"},"nativeSrc":"8459:44:87","nodeType":"YulIf","src":"8459:44:87"},{"body":{"nativeSrc":"8536:16:87","nodeType":"YulBlock","src":"8536:16:87","statements":[{"expression":{"arguments":[{"kind":"number","nativeSrc":"8545:1:87","nodeType":"YulLiteral","src":"8545:1:87","type":"","value":"0"},{"kind":"number","nativeSrc":"8548:1:87","nodeType":"YulLiteral","src":"8548:1:87","type":"","value":"0"}],"functionName":{"name":"revert","nativeSrc":"8538:6:87","nodeType":"YulIdentifier","src":"8538:6:87"},"nativeSrc":"8538:12:87","nodeType":"YulFunctionCall","src":"8538:12:87"},"nativeSrc":"8538:12:87","nodeType":"YulExpressionStatement","src":"8538:12:87"}]},"condition":{"arguments":[{"name":"endIndex","nativeSrc":"8518:8:87","nodeType":"YulIdentifier","src":"8518:8:87"},{"name":"length","nativeSrc":"8528:6:87","nodeType":"YulIdentifier","src":"8528:6:87"}],"functionName":{"name":"gt","nativeSrc":"8515:2:87","nodeType":"YulIdentifier","src":"8515:2:87"},"nativeSrc":"8515:20:87","nodeType":"YulFunctionCall","src":"8515:20:87"},"nativeSrc":"8512:40:87","nodeType":"YulIf","src":"8512:40:87"},{"nativeSrc":"8561:36:87","nodeType":"YulAssignment","src":"8561:36:87","value":{"arguments":[{"name":"offset","nativeSrc":"8578:6:87","nodeType":"YulIdentifier","src":"8578:6:87"},{"name":"startIndex","nativeSrc":"8586:10:87","nodeType":"YulIdentifier","src":"8586:10:87"}],"functionName":{"name":"add","nativeSrc":"8574:3:87","nodeType":"YulIdentifier","src":"8574:3:87"},"nativeSrc":"8574:23:87","nodeType":"YulFunctionCall","src":"8574:23:87"},"variableNames":[{"name":"offsetOut","nativeSrc":"8561:9:87","nodeType":"YulIdentifier","src":"8561:9:87"}]},{"nativeSrc":"8606:38:87","nodeType":"YulAssignment","src":"8606:38:87","value":{"arguments":[{"name":"endIndex","nativeSrc":"8623:8:87","nodeType":"YulIdentifier","src":"8623:8:87"},{"name":"startIndex","nativeSrc":"8633:10:87","nodeType":"YulIdentifier","src":"8633:10:87"}],"functionName":{"name":"sub","nativeSrc":"8619:3:87","nodeType":"YulIdentifier","src":"8619:3:87"},"nativeSrc":"8619:25:87","nodeType":"YulFunctionCall","src":"8619:25:87"},"variableNames":[{"name":"lengthOut","nativeSrc":"8606:9:87","nodeType":"YulIdentifier","src":"8606:9:87"}]}]},"name":"calldata_array_index_range_access_t_bytes_calldata_ptr","nativeSrc":"8319:331:87","nodeType":"YulFunctionDefinition","parameters":[{"name":"offset","nativeSrc":"8383:6:87","nodeType":"YulTypedName","src":"8383:6:87","type":""},{"name":"length","nativeSrc":"8391:6:87","nodeType":"YulTypedName","src":"8391:6:87","type":""},{"name":"startIndex","nativeSrc":"8399:10:87","nodeType":"YulTypedName","src":"8399:10:87","type":""},{"name":"endIndex","nativeSrc":"8411:8:87","nodeType":"YulTypedName","src":"8411:8:87","type":""}],"returnVariables":[{"name":"offsetOut","nativeSrc":"8424:9:87","nodeType":"YulTypedName","src":"8424:9:87","type":""},{"name":"lengthOut","nativeSrc":"8435:9:87","nodeType":"YulTypedName","src":"8435:9:87","type":""}],"src":"8319:331:87"},{"body":{"nativeSrc":"8755:238:87","nodeType":"YulBlock","src":"8755:238:87","statements":[{"nativeSrc":"8765:29:87","nodeType":"YulVariableDeclaration","src":"8765:29:87","value":{"arguments":[{"name":"array","nativeSrc":"8788:5:87","nodeType":"YulIdentifier","src":"8788:5:87"}],"functionName":{"name":"calldataload","nativeSrc":"8775:12:87","nodeType":"YulIdentifier","src":"8775:12:87"},"nativeSrc":"8775:19:87","nodeType":"YulFunctionCall","src":"8775:19:87"},"variables":[{"name":"_1","nativeSrc":"8769:2:87","nodeType":"YulTypedName","src":"8769:2:87","type":""}]},{"nativeSrc":"8803:38:87","nodeType":"YulAssignment","src":"8803:38:87","value":{"arguments":[{"name":"_1","nativeSrc":"8816:2:87","nodeType":"YulIdentifier","src":"8816:2:87"},{"arguments":[{"kind":"number","nativeSrc":"8824:3:87","nodeType":"YulLiteral","src":"8824:3:87","type":"","value":"224"},{"kind":"number","nativeSrc":"8829:10:87","nodeType":"YulLiteral","src":"8829:10:87","type":"","value":"0xffffffff"}],"functionName":{"name":"shl","nativeSrc":"8820:3:87","nodeType":"YulIdentifier","src":"8820:3:87"},"nativeSrc":"8820:20:87","nodeType":"YulFunctionCall","src":"8820:20:87"}],"functionName":{"name":"and","nativeSrc":"8812:3:87","nodeType":"YulIdentifier","src":"8812:3:87"},"nativeSrc":"8812:29:87","nodeType":"YulFunctionCall","src":"8812:29:87"},"variableNames":[{"name":"value","nativeSrc":"8803:5:87","nodeType":"YulIdentifier","src":"8803:5:87"}]},{"body":{"nativeSrc":"8872:115:87","nodeType":"YulBlock","src":"8872:115:87","statements":[{"nativeSrc":"8886:91:87","nodeType":"YulAssignment","src":"8886:91:87","value":{"arguments":[{"arguments":[{"name":"_1","nativeSrc":"8903:2:87","nodeType":"YulIdentifier","src":"8903:2:87"},{"arguments":[{"arguments":[{"kind":"number","nativeSrc":"8915:1:87","nodeType":"YulLiteral","src":"8915:1:87","type":"","value":"3"},{"arguments":[{"kind":"number","nativeSrc":"8922:1:87","nodeType":"YulLiteral","src":"8922:1:87","type":"","value":"4"},{"name":"len","nativeSrc":"8925:3:87","nodeType":"YulIdentifier","src":"8925:3:87"}],"functionName":{"name":"sub","nativeSrc":"8918:3:87","nodeType":"YulIdentifier","src":"8918:3:87"},"nativeSrc":"8918:11:87","nodeType":"YulFunctionCall","src":"8918:11:87"}],"functionName":{"name":"shl","nativeSrc":"8911:3:87","nodeType":"YulIdentifier","src":"8911:3:87"},"nativeSrc":"8911:19:87","nodeType":"YulFunctionCall","src":"8911:19:87"},{"arguments":[{"kind":"number","nativeSrc":"8936:3:87","nodeType":"YulLiteral","src":"8936:3:87","type":"","value":"224"},{"kind":"number","nativeSrc":"8941:10:87","nodeType":"YulLiteral","src":"8941:10:87","type":"","value":"0xffffffff"}],"functionName":{"name":"shl","nativeSrc":"8932:3:87","nodeType":"YulIdentifier","src":"8932:3:87"},"nativeSrc":"8932:20:87","nodeType":"YulFunctionCall","src":"8932:20:87"}],"functionName":{"name":"shl","nativeSrc":"8907:3:87","nodeType":"YulIdentifier","src":"8907:3:87"},"nativeSrc":"8907:46:87","nodeType":"YulFunctionCall","src":"8907:46:87"}],"functionName":{"name":"and","nativeSrc":"8899:3:87","nodeType":"YulIdentifier","src":"8899:3:87"},"nativeSrc":"8899:55:87","nodeType":"YulFunctionCall","src":"8899:55:87"},{"arguments":[{"kind":"number","nativeSrc":"8960:3:87","nodeType":"YulLiteral","src":"8960:3:87","type":"","value":"224"},{"kind":"number","nativeSrc":"8965:10:87","nodeType":"YulLiteral","src":"8965:10:87","type":"","value":"0xffffffff"}],"functionName":{"name":"shl","nativeSrc":"8956:3:87","nodeType":"YulIdentifier","src":"8956:3:87"},"nativeSrc":"8956:20:87","nodeType":"YulFunctionCall","src":"8956:20:87"}],"functionName":{"name":"and","nativeSrc":"8895:3:87","nodeType":"YulIdentifier","src":"8895:3:87"},"nativeSrc":"8895:82:87","nodeType":"YulFunctionCall","src":"8895:82:87"},"variableNames":[{"name":"value","nativeSrc":"8886:5:87","nodeType":"YulIdentifier","src":"8886:5:87"}]}]},"condition":{"arguments":[{"name":"len","nativeSrc":"8856:3:87","nodeType":"YulIdentifier","src":"8856:3:87"},{"kind":"number","nativeSrc":"8861:1:87","nodeType":"YulLiteral","src":"8861:1:87","type":"","value":"4"}],"functionName":{"name":"lt","nativeSrc":"8853:2:87","nodeType":"YulIdentifier","src":"8853:2:87"},"nativeSrc":"8853:10:87","nodeType":"YulFunctionCall","src":"8853:10:87"},"nativeSrc":"8850:137:87","nodeType":"YulIf","src":"8850:137:87"}]},"name":"convert_bytes_to_fixedbytes_from_t_bytes_calldata_ptr_to_t_bytes4","nativeSrc":"8655:338:87","nodeType":"YulFunctionDefinition","parameters":[{"name":"array","nativeSrc":"8730:5:87","nodeType":"YulTypedName","src":"8730:5:87","type":""},{"name":"len","nativeSrc":"8737:3:87","nodeType":"YulTypedName","src":"8737:3:87","type":""}],"returnVariables":[{"name":"value","nativeSrc":"8745:5:87","nodeType":"YulTypedName","src":"8745:5:87","type":""}],"src":"8655:338:87"},{"body":{"nativeSrc":"9097:103:87","nodeType":"YulBlock","src":"9097:103:87","statements":[{"nativeSrc":"9107:26:87","nodeType":"YulAssignment","src":"9107:26:87","value":{"arguments":[{"name":"headStart","nativeSrc":"9119:9:87","nodeType":"YulIdentifier","src":"9119:9:87"},{"kind":"number","nativeSrc":"9130:2:87","nodeType":"YulLiteral","src":"9130:2:87","type":"","value":"32"}],"functionName":{"name":"add","nativeSrc":"9115:3:87","nodeType":"YulIdentifier","src":"9115:3:87"},"nativeSrc":"9115:18:87","nodeType":"YulFunctionCall","src":"9115:18:87"},"variableNames":[{"name":"tail","nativeSrc":"9107:4:87","nodeType":"YulIdentifier","src":"9107:4:87"}]},{"expression":{"arguments":[{"name":"headStart","nativeSrc":"9149:9:87","nodeType":"YulIdentifier","src":"9149:9:87"},{"arguments":[{"name":"value0","nativeSrc":"9164:6:87","nodeType":"YulIdentifier","src":"9164:6:87"},{"arguments":[{"kind":"number","nativeSrc":"9176:3:87","nodeType":"YulLiteral","src":"9176:3:87","type":"","value":"224"},{"kind":"number","nativeSrc":"9181:10:87","nodeType":"YulLiteral","src":"9181:10:87","type":"","value":"0xffffffff"}],"functionName":{"name":"shl","nativeSrc":"9172:3:87","nodeType":"YulIdentifier","src":"9172:3:87"},"nativeSrc":"9172:20:87","nodeType":"YulFunctionCall","src":"9172:20:87"}],"functionName":{"name":"and","nativeSrc":"9160:3:87","nodeType":"YulIdentifier","src":"9160:3:87"},"nativeSrc":"9160:33:87","nodeType":"YulFunctionCall","src":"9160:33:87"}],"functionName":{"name":"mstore","nativeSrc":"9142:6:87","nodeType":"YulIdentifier","src":"9142:6:87"},"nativeSrc":"9142:52:87","nodeType":"YulFunctionCall","src":"9142:52:87"},"nativeSrc":"9142:52:87","nodeType":"YulExpressionStatement","src":"9142:52:87"}]},"name":"abi_encode_tuple_t_bytes4__to_t_bytes4__fromStack_reversed","nativeSrc":"8998:202:87","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nativeSrc":"9066:9:87","nodeType":"YulTypedName","src":"9066:9:87","type":""},{"name":"value0","nativeSrc":"9077:6:87","nodeType":"YulTypedName","src":"9077:6:87","type":""}],"returnVariables":[{"name":"tail","nativeSrc":"9088:4:87","nodeType":"YulTypedName","src":"9088:4:87","type":""}],"src":"8998:202:87"},{"body":{"nativeSrc":"9241:218:87","nodeType":"YulBlock","src":"9241:218:87","statements":[{"nativeSrc":"9251:23:87","nodeType":"YulVariableDeclaration","src":"9251:23:87","value":{"arguments":[{"name":"y","nativeSrc":"9266:1:87","nodeType":"YulIdentifier","src":"9266:1:87"},{"kind":"number","nativeSrc":"9269:4:87","nodeType":"YulLiteral","src":"9269:4:87","type":"","value":"0xff"}],"functionName":{"name":"and","nativeSrc":"9262:3:87","nodeType":"YulIdentifier","src":"9262:3:87"},"nativeSrc":"9262:12:87","nodeType":"YulFunctionCall","src":"9262:12:87"},"variables":[{"name":"y_1","nativeSrc":"9255:3:87","nodeType":"YulTypedName","src":"9255:3:87","type":""}]},{"body":{"nativeSrc":"9306:111:87","nodeType":"YulBlock","src":"9306:111:87","statements":[{"expression":{"arguments":[{"kind":"number","nativeSrc":"9327:1:87","nodeType":"YulLiteral","src":"9327:1:87","type":"","value":"0"},{"arguments":[{"kind":"number","nativeSrc":"9334:3:87","nodeType":"YulLiteral","src":"9334:3:87","type":"","value":"224"},{"kind":"number","nativeSrc":"9339:10:87","nodeType":"YulLiteral","src":"9339:10:87","type":"","value":"0x4e487b71"}],"functionName":{"name":"shl","nativeSrc":"9330:3:87","nodeType":"YulIdentifier","src":"9330:3:87"},"nativeSrc":"9330:20:87","nodeType":"YulFunctionCall","src":"9330:20:87"}],"functionName":{"name":"mstore","nativeSrc":"9320:6:87","nodeType":"YulIdentifier","src":"9320:6:87"},"nativeSrc":"9320:31:87","nodeType":"YulFunctionCall","src":"9320:31:87"},"nativeSrc":"9320:31:87","nodeType":"YulExpressionStatement","src":"9320:31:87"},{"expression":{"arguments":[{"kind":"number","nativeSrc":"9371:1:87","nodeType":"YulLiteral","src":"9371:1:87","type":"","value":"4"},{"kind":"number","nativeSrc":"9374:4:87","nodeType":"YulLiteral","src":"9374:4:87","type":"","value":"0x12"}],"functionName":{"name":"mstore","nativeSrc":"9364:6:87","nodeType":"YulIdentifier","src":"9364:6:87"},"nativeSrc":"9364:15:87","nodeType":"YulFunctionCall","src":"9364:15:87"},"nativeSrc":"9364:15:87","nodeType":"YulExpressionStatement","src":"9364:15:87"},{"expression":{"arguments":[{"kind":"number","nativeSrc":"9399:1:87","nodeType":"YulLiteral","src":"9399:1:87","type":"","value":"0"},{"kind":"number","nativeSrc":"9402:4:87","nodeType":"YulLiteral","src":"9402:4:87","type":"","value":"0x24"}],"functionName":{"name":"revert","nativeSrc":"9392:6:87","nodeType":"YulIdentifier","src":"9392:6:87"},"nativeSrc":"9392:15:87","nodeType":"YulFunctionCall","src":"9392:15:87"},"nativeSrc":"9392:15:87","nodeType":"YulExpressionStatement","src":"9392:15:87"}]},"condition":{"arguments":[{"name":"y_1","nativeSrc":"9293:3:87","nodeType":"YulIdentifier","src":"9293:3:87"}],"functionName":{"name":"iszero","nativeSrc":"9286:6:87","nodeType":"YulIdentifier","src":"9286:6:87"},"nativeSrc":"9286:11:87","nodeType":"YulFunctionCall","src":"9286:11:87"},"nativeSrc":"9283:134:87","nodeType":"YulIf","src":"9283:134:87"},{"nativeSrc":"9426:27:87","nodeType":"YulAssignment","src":"9426:27:87","value":{"arguments":[{"arguments":[{"name":"x","nativeSrc":"9439:1:87","nodeType":"YulIdentifier","src":"9439:1:87"},{"kind":"number","nativeSrc":"9442:4:87","nodeType":"YulLiteral","src":"9442:4:87","type":"","value":"0xff"}],"functionName":{"name":"and","nativeSrc":"9435:3:87","nodeType":"YulIdentifier","src":"9435:3:87"},"nativeSrc":"9435:12:87","nodeType":"YulFunctionCall","src":"9435:12:87"},{"name":"y_1","nativeSrc":"9449:3:87","nodeType":"YulIdentifier","src":"9449:3:87"}],"functionName":{"name":"mod","nativeSrc":"9431:3:87","nodeType":"YulIdentifier","src":"9431:3:87"},"nativeSrc":"9431:22:87","nodeType":"YulFunctionCall","src":"9431:22:87"},"variableNames":[{"name":"r","nativeSrc":"9426:1:87","nodeType":"YulIdentifier","src":"9426:1:87"}]}]},"name":"mod_t_uint8","nativeSrc":"9205:254:87","nodeType":"YulFunctionDefinition","parameters":[{"name":"x","nativeSrc":"9226:1:87","nodeType":"YulTypedName","src":"9226:1:87","type":""},{"name":"y","nativeSrc":"9229:1:87","nodeType":"YulTypedName","src":"9229:1:87","type":""}],"returnVariables":[{"name":"r","nativeSrc":"9235:1:87","nodeType":"YulTypedName","src":"9235:1:87","type":""}],"src":"9205:254:87"},{"body":{"nativeSrc":"9593:119:87","nodeType":"YulBlock","src":"9593:119:87","statements":[{"nativeSrc":"9603:26:87","nodeType":"YulAssignment","src":"9603:26:87","value":{"arguments":[{"name":"headStart","nativeSrc":"9615:9:87","nodeType":"YulIdentifier","src":"9615:9:87"},{"kind":"number","nativeSrc":"9626:2:87","nodeType":"YulLiteral","src":"9626:2:87","type":"","value":"64"}],"functionName":{"name":"add","nativeSrc":"9611:3:87","nodeType":"YulIdentifier","src":"9611:3:87"},"nativeSrc":"9611:18:87","nodeType":"YulFunctionCall","src":"9611:18:87"},"variableNames":[{"name":"tail","nativeSrc":"9603:4:87","nodeType":"YulIdentifier","src":"9603:4:87"}]},{"expression":{"arguments":[{"name":"headStart","nativeSrc":"9645:9:87","nodeType":"YulIdentifier","src":"9645:9:87"},{"name":"value0","nativeSrc":"9656:6:87","nodeType":"YulIdentifier","src":"9656:6:87"}],"functionName":{"name":"mstore","nativeSrc":"9638:6:87","nodeType":"YulIdentifier","src":"9638:6:87"},"nativeSrc":"9638:25:87","nodeType":"YulFunctionCall","src":"9638:25:87"},"nativeSrc":"9638:25:87","nodeType":"YulExpressionStatement","src":"9638:25:87"},{"expression":{"arguments":[{"arguments":[{"name":"headStart","nativeSrc":"9683:9:87","nodeType":"YulIdentifier","src":"9683:9:87"},{"kind":"number","nativeSrc":"9694:2:87","nodeType":"YulLiteral","src":"9694:2:87","type":"","value":"32"}],"functionName":{"name":"add","nativeSrc":"9679:3:87","nodeType":"YulIdentifier","src":"9679:3:87"},"nativeSrc":"9679:18:87","nodeType":"YulFunctionCall","src":"9679:18:87"},{"name":"value1","nativeSrc":"9699:6:87","nodeType":"YulIdentifier","src":"9699:6:87"}],"functionName":{"name":"mstore","nativeSrc":"9672:6:87","nodeType":"YulIdentifier","src":"9672:6:87"},"nativeSrc":"9672:34:87","nodeType":"YulFunctionCall","src":"9672:34:87"},"nativeSrc":"9672:34:87","nodeType":"YulExpressionStatement","src":"9672:34:87"}]},"name":"abi_encode_tuple_t_uint256_t_uint256__to_t_uint256_t_uint256__fromStack_reversed","nativeSrc":"9464:248:87","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nativeSrc":"9554:9:87","nodeType":"YulTypedName","src":"9554:9:87","type":""},{"name":"value1","nativeSrc":"9565:6:87","nodeType":"YulTypedName","src":"9565:6:87","type":""},{"name":"value0","nativeSrc":"9573:6:87","nodeType":"YulTypedName","src":"9573:6:87","type":""}],"returnVariables":[{"name":"tail","nativeSrc":"9584:4:87","nodeType":"YulTypedName","src":"9584:4:87","type":""}],"src":"9464:248:87"}]},"contents":"{\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_string_memory_ptr__to_t_string_memory_ptr__fromStack_reversed(headStart, value0) -> tail\n    {\n        mstore(headStart, 32)\n        let length := mload(value0)\n        mstore(add(headStart, 32), length)\n        mcopy(add(headStart, 64), add(value0, 32), length)\n        mstore(add(add(headStart, length), 64), 0)\n        tail := add(add(headStart, and(add(length, 31), not(31))), 64)\n    }\n    function abi_decode_tuple_t_uint256(headStart, dataEnd) -> value0\n    {\n        if slt(sub(dataEnd, headStart), 32) { revert(0, 0) }\n        let value := 0\n        value := calldataload(headStart)\n        value0 := value\n    }\n    function abi_decode_address(offset) -> value\n    {\n        value := calldataload(offset)\n        if iszero(eq(value, and(value, sub(shl(160, 1), 1)))) { revert(0, 0) }\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        let value := 0\n        value := calldataload(add(headStart, 32))\n        value1 := value\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_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        let value := 0\n        value := calldataload(add(headStart, 64))\n        value2 := value\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 abi_encode_tuple_t_address__to_t_address__fromStack_reversed(headStart, value0) -> tail\n    {\n        tail := add(headStart, 32)\n        mstore(headStart, and(value0, sub(shl(160, 1), 1)))\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_uint256t_address(headStart, dataEnd) -> value0, value1\n    {\n        if slt(sub(dataEnd, headStart), 64) { revert(0, 0) }\n        let value := 0\n        value := calldataload(headStart)\n        value0 := value\n        value1 := abi_decode_address(add(headStart, 32))\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        if iszero(eq(value, iszero(iszero(value)))) { revert(0, 0) }\n        value0 := value\n    }\n    function abi_decode_tuple_t_uint256t_addresst_address(headStart, dataEnd) -> value0, value1, value2\n    {\n        if slt(sub(dataEnd, headStart), 96) { revert(0, 0) }\n        let value := 0\n        value := calldataload(headStart)\n        value0 := value\n        value1 := abi_decode_address(add(headStart, 32))\n        value2 := abi_decode_address(add(headStart, 64))\n    }\n    function abi_encode_tuple_t_uint64__to_t_uint64__fromStack_reversed(headStart, value0) -> tail\n    {\n        tail := add(headStart, 32)\n        mstore(headStart, and(value0, 0xffffffffffffffff))\n    }\n    function abi_decode_tuple_t_int256(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_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_decode_tuple_t_enum$_OverrideOption_$2758t_uint256(headStart, dataEnd) -> value0, value1\n    {\n        if slt(sub(dataEnd, headStart), 64) { revert(0, 0) }\n        let value := calldataload(headStart)\n        if iszero(lt(value, 4)) { revert(0, 0) }\n        value0 := value\n        let value_1 := 0\n        value_1 := calldataload(add(headStart, 32))\n        value1 := value_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        value0 := abi_decode_address(headStart)\n        value1 := abi_decode_address(add(headStart, 32))\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 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_0x11()\n    {\n        mstore(0, shl(224, 0x4e487b71))\n        mstore(4, 0x11)\n        revert(0, 0x24)\n    }\n    function checked_add_t_uint8(x, y) -> sum\n    {\n        sum := add(and(x, 0xff), and(y, 0xff))\n        if gt(sum, 0xff) { panic_error_0x11() }\n    }\n    function checked_sub_t_uint256(x, y) -> diff\n    {\n        diff := sub(x, y)\n        if gt(diff, x) { panic_error_0x11() }\n    }\n    function abi_encode_tuple_t_address_t_uint256_t_uint256__to_t_address_t_uint256_t_uint256__fromStack_reversed(headStart, value2, value1, value0) -> tail\n    {\n        tail := add(headStart, 96)\n        mstore(headStart, and(value0, sub(shl(160, 1), 1)))\n        mstore(add(headStart, 32), value1)\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, sub(shl(160, 1), 1)))\n        mstore(add(headStart, 32), value1)\n    }\n    function negate_t_int256(value) -> ret\n    {\n        if eq(value, shl(255, 1)) { panic_error_0x11() }\n        ret := sub(0, value)\n    }\n    function panic_error_0x21()\n    {\n        mstore(0, shl(224, 0x4e487b71))\n        mstore(4, 0x21)\n        revert(0, 0x24)\n    }\n    function checked_add_t_uint256(x, y) -> sum\n    {\n        sum := add(x, y)\n        if gt(x, sum) { panic_error_0x11() }\n    }\n    function checked_exp_helper(_base, exponent, max) -> power, base\n    {\n        power := 1\n        base := _base\n        for { } gt(exponent, 1) { }\n        {\n            if gt(base, div(max, base)) { panic_error_0x11() }\n            if and(exponent, 1) { power := mul(power, base) }\n            base := mul(base, base)\n            exponent := shr(1, exponent)\n        }\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            let _1 := 0\n            _1 := 0\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            let _2 := 0\n            _2 := 0\n            leave\n        }\n        let power_1, base_1 := checked_exp_helper(base, exponent, not(0))\n        if gt(power_1, div(not(0), base_1)) { panic_error_0x11() }\n        power := mul(power_1, base_1)\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 panic_error_0x12()\n    {\n        mstore(0, shl(224, 0x4e487b71))\n        mstore(4, 0x12)\n        revert(0, 0x24)\n    }\n    function calldata_array_index_range_access_t_bytes_calldata_ptr(offset, length, startIndex, endIndex) -> offsetOut, lengthOut\n    {\n        if gt(startIndex, endIndex) { revert(0, 0) }\n        if gt(endIndex, length) { revert(0, 0) }\n        offsetOut := add(offset, startIndex)\n        lengthOut := sub(endIndex, startIndex)\n    }\n    function convert_bytes_to_fixedbytes_from_t_bytes_calldata_ptr_to_t_bytes4(array, len) -> value\n    {\n        let _1 := calldataload(array)\n        value := and(_1, shl(224, 0xffffffff))\n        if lt(len, 4)\n        {\n            value := and(and(_1, shl(shl(3, sub(4, len)), shl(224, 0xffffffff))), shl(224, 0xffffffff))\n        }\n    }\n    function abi_encode_tuple_t_bytes4__to_t_bytes4__fromStack_reversed(headStart, value0) -> tail\n    {\n        tail := add(headStart, 32)\n        mstore(headStart, and(value0, shl(224, 0xffffffff)))\n    }\n    function mod_t_uint8(x, y) -> r\n    {\n        let y_1 := and(y, 0xff)\n        if iszero(y_1)\n        {\n            mstore(0, shl(224, 0x4e487b71))\n            mstore(4, 0x12)\n            revert(0, 0x24)\n        }\n        r := mod(and(x, 0xff), y_1)\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}","id":87,"language":"Yul","name":"#utility.yul"}],"immutableReferences":{"8706":[{"length":32,"start":751},{"length":32,"start":1322},{"length":32,"start":2230},{"length":32,"start":2323},{"length":32,"start":4056},{"length":32,"start":4234}],"8708":[{"length":32,"start":1702}]},"linkReferences":{},"object":"608060405234801561000f575f5ffd5b506004361061021e575f3560e01c806394bf804d1161012a578063c7361ed2116100b4578063d905777e11610079578063d905777e146104cc578063dd62ed3e146104df578063ef8b30f71461044c578063f0fe6ef814610517578063f3c0b8921461051f575f5ffd5b8063c7361ed21461045f578063cc7fcc6014610472578063ce04bebb1461047b578063ce96cb77146104a6578063d6dd0234146104b9575f5ffd5b8063b460af94116100fa578063b460af94146103df578063ba087652146103f2578063c046371114610405578063c63d75b614610439578063c6e6f5921461044c575f5ffd5b806394bf804d1461039e57806395d89b41146103b1578063a9059cbb146103b9578063b3d7f6b9146103cc575f5ffd5b806338359018116101ab5780634cdad5061161017b5780634cdad5061461025b5780636e553f651461033557806370a08231146103485780637fb1ad621461037057806386de9e4f1461037b575f5ffd5b806338359018146102d957806338d52e0f146102e257806339d88aff14610319578063402d267d14610322575f5ffd5b8063095ea7b3116101f1578063095ea7b31461026e5780630a28a4771461029157806318160ddd146102a457806323b872dd146102ac578063313ce567146102bf575f5ffd5b806301e1d11414610222578063034548cd1461023d57806306fdde031461024657806307a2d13a1461025b575b5f5ffd5b61022a610527565b6040519081526020015b60405180910390f35b61022a60075481565b61024e6105b6565b60405161023491906112e6565b61022a61026936600461131b565b610646565b61028161027c36600461134d565b610657565b6040519015158152602001610234565b61022a61029f36600461131b565b61066e565b60025461022a565b6102816102ba366004611375565b61067a565b6102c761069f565b60405160ff9091168152602001610234565b61022a60085481565b6040516001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000168152602001610234565b61022a60065481565b61022a6103303660046113af565b6106ca565b61022a6103433660046113c8565b6106ee565b61022a6103563660046113af565b6001600160a01b03165f9081526020819052604090205490565b60055460ff16610281565b61039c6103893660046113f2565b6005805460ff1916911515919091179055565b005b61022a6103ac3660046113c8565b61074b565b61024e610797565b6102816103c736600461134d565b6107a6565b61022a6103da36600461131b565b6107b3565b61022a6103ed366004611411565b6107bf565b61022a610400366004611411565b610815565b600a5461042090600160801b900467ffffffffffffffff1681565b60405167ffffffffffffffff9091168152602001610234565b61022a6104473660046113af565b610862565b61022a61045a36600461131b565b61087f565b61039c61046d36600461131b565b61088a565b61022a60095481565b600a5461048e906001600160801b031681565b6040516001600160801b039091168152602001610234565b61022a6104b43660046113af565b61097b565b61039c6104c736600461144a565b6109a1565b61022a6104da3660046113af565b610a20565b61022a6104ed366004611469565b6001600160a01b039182165f90815260016020908152604080832093909416825291909152205490565b61039c610a46565b61022a610a84565b5f7f00000000000000000000000000000000000000000000000000000000000000006040516370a0823160e01b81523060048201526001600160a01b0391909116906370a0823190602401602060405180830381865afa15801561058d573d5f5f3e3d5ffd5b505050506040513d601f19601f820116820180604052508101906105b19190611491565b905090565b6060600380546105c5906114a8565b80601f01602080910402602001604051908101604052809291908181526020018280546105f1906114a8565b801561063c5780601f106106135761010080835404028352916020019161063c565b820191905f5260205f20905b81548152906001019060200180831161061f57829003601f168201915b5050505050905090565b5f610651825f610a93565b92915050565b5f33610664818585610acb565b5060019392505050565b5f610651826001610add565b5f33610687858285610b0c565b610692858585610b75565b60019150505b9392505050565b5f6105b1817f00000000000000000000000000000000000000000000000000000000000000006114f4565b5f6106d760635f1961150d565b600654146106e757600654610651565b5f19610651565b5f5f6106f9836106ca565b90508084111561072b57828482604051633c8097d960e11b815260040161072293929190611520565b60405180910390fd5b5f6107358561087f565b905061074333858784610bd2565b949350505050565b5f5f61075683610862565b90508084111561077f5782848260405163284ff66760e01b815260040161072293929190611520565b5f610789856107b3565b905061074333858388610bd2565b6060600480546105c5906114a8565b5f33610664818585610b75565b5f610651826001610a93565b5f5f6107ca8361097b565b9050808511156107f357828582604051633fa733bb60e21b815260040161072293929190611520565b5f6107fd8661066e565b905061080c3386868985610be6565b95945050505050565b5f5f61082083610a20565b90508085111561084957828582604051632e52afbb60e21b815260040161072293929190611520565b5f61085386610646565b905061080c338686848a610be6565b5f61086f60635f1961150d565b600754146106e757600754610651565b5f610651825f610add565b5f811315610911576040516340c10f1960e01b8152306004820152602481018290526001600160a01b037f000000000000000000000000000000000000000000000000000000000000000016906340c10f19906044015b5f604051808303815f87803b1580156108f8575f5ffd5b505af115801561090a573d5f5f3e3d5ffd5b5050505050565b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316639dc29fac3061094a84611541565b6040516001600160e01b031960e085901b1681526001600160a01b03909216600483015260248201526044016108e1565b5f61098860635f1961150d565b6008541461099857600854610651565b61065182610bfb565b5f8260038111156109b4576109b461155b565b036109bf5760068190555b60018260038111156109d3576109d361155b565b036109de5760078190555b60028260038111156109f2576109f261155b565b036109fd5760088190555b6003826003811115610a1157610a1161155b565b03610a1c5760098190555b5050565b5f610a2d60635f1961150d565b60095414610a3d57600954610651565b61065182610c08565b610a4e610527565b600a80546001600160801b03929092166001600160c01b031990921691909117600160801b4267ffffffffffffffff1602179055565b610a9060635f1961150d565b81565b5f610698610a9f610527565b610aaa90600161156f565b610ab55f600a611665565b600254610ac2919061156f565b85919085610c25565b610ad88383836001610c67565b505050565b5f610698610aec82600a611665565b600254610af9919061156f565b610b01610527565b610ac290600161156f565b6001600160a01b038381165f908152600160209081526040808320938616835292905220545f19811015610b6f5781811015610b6157828183604051637dc7a0d960e11b815260040161072293929190611520565b610b6f84848484035f610c67565b50505050565b6001600160a01b038316610b9e57604051634b637e8f60e11b81525f6004820152602401610722565b6001600160a01b038216610bc75760405163ec442f0560e01b81525f6004820152602401610722565b610ad8838383610d39565b610bde84848484610e4c565b610b6f610a46565b610bf38585858585610ea1565b61090a610a46565b5f61065161026983610a20565b6001600160a01b0381165f90815260208190526040812054610651565b5f610c52610c3283610ef7565b8015610c4d57505f8480610c4857610c48611673565b868809115b151590565b610c5d868686610f23565b61080c919061156f565b6001600160a01b038416610c905760405163e602df0560e01b81525f6004820152602401610722565b6001600160a01b038316610cb957604051634a1406b160e11b81525f6004820152602401610722565b6001600160a01b038085165f9081526001602090815260408083209387168352929052208290558015610b6f57826001600160a01b0316846001600160a01b03167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92584604051610d2b91815260200190565b60405180910390a350505050565b6001600160a01b038316610d63578060025f828254610d58919061156f565b90915550610dc09050565b6001600160a01b0383165f9081526020819052604090205481811015610da25783818360405163391434e360e21b815260040161072293929190611520565b6001600160a01b0384165f9081526020819052604090209082900390555b6001600160a01b038216610ddc57600280548290039055610dfa565b6001600160a01b0382165f9081526020819052604090208054820190555b816001600160a01b0316836001600160a01b03167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef83604051610e3f91815260200190565b60405180910390a3505050565b60055460ff1615610e6060045f3681611687565b610e69916116ae565b90610e94576040516340c2fd5360e11b81526001600160e01b03199091166004820152602401610722565b50610b6f84848484610fd3565b60055460ff1615610eb560045f3681611687565b610ebe916116ae565b90610ee9576040516340c2fd5360e11b81526001600160e01b03199091166004820152602401610722565b5061090a8585858585611057565b5f6002826003811115610f0c57610f0c61155b565b610f1691906116e6565b60ff166001149050919050565b5f5f5f610f308686611117565b91509150815f03610f5457838181610f4a57610f4a611673565b0492505050610698565b818411610f6b57610f6b6003851502601118611133565b5f848688095f868103871696879004966002600389028118808a02820302808a02820302808a02820302808a02820302808a02820302808a02909103029181900381900460010185841190960395909502919093039390930492909217029150509392505050565b610fff7f0000000000000000000000000000000000000000000000000000000000000000853085611144565b611009838261117a565b826001600160a01b0316846001600160a01b03167fdcbc1c05240f31ff3ad067ef1ee35ce4997762752e3a095284754544f4c709d78484604051610d2b929190918252602082015260400190565b826001600160a01b0316856001600160a01b03161461107b5761107b838683610b0c565b61108583826111ae565b6110b07f000000000000000000000000000000000000000000000000000000000000000085846111e2565b826001600160a01b0316846001600160a01b0316866001600160a01b03167ffbde797d201c681b91056529119e0b02407c7bb96a4a2c75c01fc9667232c8db8585604051611108929190918252602082015260400190565b60405180910390a45050505050565b5f805f1983850993909202808410938190039390930393915050565b634e487b715f52806020526024601cfd5b611152848484846001611217565b610b6f57604051635274afe760e01b81526001600160a01b0385166004820152602401610722565b6001600160a01b0382166111a35760405163ec442f0560e01b81525f6004820152602401610722565b610a1c5f8383610d39565b6001600160a01b0382166111d757604051634b637e8f60e11b81525f6004820152602401610722565b610a1c825f83610d39565b6111ef8383836001611284565b610ad857604051635274afe760e01b81526001600160a01b0384166004820152602401610722565b6040516323b872dd60e01b5f8181526001600160a01b038781166004528616602452604485905291602083606481808c5af1925060015f51148316611273578383151615611267573d5f823e3d81fd5b5f883b113d1516831692505b604052505f60605295945050505050565b60405163a9059cbb60e01b5f8181526001600160a01b038616600452602485905291602083604481808b5af1925060015f511483166112da5783831516156112ce573d5f823e3d81fd5b5f873b113d1516831692505b60405250949350505050565b602081525f82518060208401528060208501604085015e5f604082850101526040601f19601f83011684010191505092915050565b5f6020828403121561132b575f5ffd5b5035919050565b80356001600160a01b0381168114611348575f5ffd5b919050565b5f5f6040838503121561135e575f5ffd5b61136783611332565b946020939093013593505050565b5f5f5f60608486031215611387575f5ffd5b61139084611332565b925061139e60208501611332565b929592945050506040919091013590565b5f602082840312156113bf575f5ffd5b61069882611332565b5f5f604083850312156113d9575f5ffd5b823591506113e960208401611332565b90509250929050565b5f60208284031215611402575f5ffd5b81358015158114610698575f5ffd5b5f5f5f60608486031215611423575f5ffd5b8335925061143360208501611332565b915061144160408501611332565b90509250925092565b5f5f6040838503121561145b575f5ffd5b823560048110611367575f5ffd5b5f5f6040838503121561147a575f5ffd5b61148383611332565b91506113e960208401611332565b5f602082840312156114a1575f5ffd5b5051919050565b600181811c908216806114bc57607f821691505b6020821081036114da57634e487b7160e01b5f52602260045260245ffd5b50919050565b634e487b7160e01b5f52601160045260245ffd5b60ff8181168382160190811115610651576106516114e0565b81810381811115610651576106516114e0565b6001600160a01b039390931683526020830191909152604082015260600190565b5f600160ff1b8201611555576115556114e0565b505f0390565b634e487b7160e01b5f52602160045260245ffd5b80820180821115610651576106516114e0565b6001815b60018411156115bd578085048111156115a1576115a16114e0565b60018416156115af57908102905b60019390931c928002611586565b935093915050565b5f826115d357506001610651565b816115df57505f610651565b81600181146115f557600281146115ff5761161b565b6001915050610651565b60ff841115611610576116106114e0565b50506001821b610651565b5060208310610133831016604e8410600b841016171561163e575081810a610651565b61164a5f198484611582565b805f190482111561165d5761165d6114e0565b029392505050565b5f61069860ff8416836115c5565b634e487b7160e01b5f52601260045260245ffd5b5f5f85851115611695575f5ffd5b838611156116a1575f5ffd5b5050820193919092039150565b80356001600160e01b031981169060048410156116df576001600160e01b0319600485900360031b81901b82161691505b5092915050565b5f60ff83168061170457634e487b7160e01b5f52601260045260245ffd5b8060ff8416069150509291505056fea2646970667358221220707e46fbe4e821febfd486cff17e5084815ceb26aff5470004a675034c61447764736f6c634300081e0033","opcodes":"PUSH1 0x80 PUSH1 0x40 MSTORE CALLVALUE DUP1 ISZERO PUSH2 0xF JUMPI PUSH0 PUSH0 REVERT JUMPDEST POP PUSH1 0x4 CALLDATASIZE LT PUSH2 0x21E JUMPI PUSH0 CALLDATALOAD PUSH1 0xE0 SHR DUP1 PUSH4 0x94BF804D GT PUSH2 0x12A JUMPI DUP1 PUSH4 0xC7361ED2 GT PUSH2 0xB4 JUMPI DUP1 PUSH4 0xD905777E GT PUSH2 0x79 JUMPI DUP1 PUSH4 0xD905777E EQ PUSH2 0x4CC JUMPI DUP1 PUSH4 0xDD62ED3E EQ PUSH2 0x4DF JUMPI DUP1 PUSH4 0xEF8B30F7 EQ PUSH2 0x44C JUMPI DUP1 PUSH4 0xF0FE6EF8 EQ PUSH2 0x517 JUMPI DUP1 PUSH4 0xF3C0B892 EQ PUSH2 0x51F JUMPI PUSH0 PUSH0 REVERT JUMPDEST DUP1 PUSH4 0xC7361ED2 EQ PUSH2 0x45F JUMPI DUP1 PUSH4 0xCC7FCC60 EQ PUSH2 0x472 JUMPI DUP1 PUSH4 0xCE04BEBB EQ PUSH2 0x47B JUMPI DUP1 PUSH4 0xCE96CB77 EQ PUSH2 0x4A6 JUMPI DUP1 PUSH4 0xD6DD0234 EQ PUSH2 0x4B9 JUMPI PUSH0 PUSH0 REVERT JUMPDEST DUP1 PUSH4 0xB460AF94 GT PUSH2 0xFA JUMPI DUP1 PUSH4 0xB460AF94 EQ PUSH2 0x3DF JUMPI DUP1 PUSH4 0xBA087652 EQ PUSH2 0x3F2 JUMPI DUP1 PUSH4 0xC0463711 EQ PUSH2 0x405 JUMPI DUP1 PUSH4 0xC63D75B6 EQ PUSH2 0x439 JUMPI DUP1 PUSH4 0xC6E6F592 EQ PUSH2 0x44C JUMPI PUSH0 PUSH0 REVERT JUMPDEST DUP1 PUSH4 0x94BF804D EQ PUSH2 0x39E JUMPI DUP1 PUSH4 0x95D89B41 EQ PUSH2 0x3B1 JUMPI DUP1 PUSH4 0xA9059CBB EQ PUSH2 0x3B9 JUMPI DUP1 PUSH4 0xB3D7F6B9 EQ PUSH2 0x3CC JUMPI PUSH0 PUSH0 REVERT JUMPDEST DUP1 PUSH4 0x38359018 GT PUSH2 0x1AB JUMPI DUP1 PUSH4 0x4CDAD506 GT PUSH2 0x17B JUMPI DUP1 PUSH4 0x4CDAD506 EQ PUSH2 0x25B JUMPI DUP1 PUSH4 0x6E553F65 EQ PUSH2 0x335 JUMPI DUP1 PUSH4 0x70A08231 EQ PUSH2 0x348 JUMPI DUP1 PUSH4 0x7FB1AD62 EQ PUSH2 0x370 JUMPI DUP1 PUSH4 0x86DE9E4F EQ PUSH2 0x37B JUMPI PUSH0 PUSH0 REVERT JUMPDEST DUP1 PUSH4 0x38359018 EQ PUSH2 0x2D9 JUMPI DUP1 PUSH4 0x38D52E0F EQ PUSH2 0x2E2 JUMPI DUP1 PUSH4 0x39D88AFF EQ PUSH2 0x319 JUMPI DUP1 PUSH4 0x402D267D EQ PUSH2 0x322 JUMPI PUSH0 PUSH0 REVERT JUMPDEST DUP1 PUSH4 0x95EA7B3 GT PUSH2 0x1F1 JUMPI DUP1 PUSH4 0x95EA7B3 EQ PUSH2 0x26E JUMPI DUP1 PUSH4 0xA28A477 EQ PUSH2 0x291 JUMPI DUP1 PUSH4 0x18160DDD EQ PUSH2 0x2A4 JUMPI DUP1 PUSH4 0x23B872DD EQ PUSH2 0x2AC JUMPI DUP1 PUSH4 0x313CE567 EQ PUSH2 0x2BF JUMPI PUSH0 PUSH0 REVERT JUMPDEST DUP1 PUSH4 0x1E1D114 EQ PUSH2 0x222 JUMPI DUP1 PUSH4 0x34548CD EQ PUSH2 0x23D JUMPI DUP1 PUSH4 0x6FDDE03 EQ PUSH2 0x246 JUMPI DUP1 PUSH4 0x7A2D13A EQ PUSH2 0x25B JUMPI JUMPDEST PUSH0 PUSH0 REVERT JUMPDEST PUSH2 0x22A PUSH2 0x527 JUMP JUMPDEST PUSH1 0x40 MLOAD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST PUSH2 0x22A PUSH1 0x7 SLOAD DUP2 JUMP JUMPDEST PUSH2 0x24E PUSH2 0x5B6 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0x234 SWAP2 SWAP1 PUSH2 0x12E6 JUMP JUMPDEST PUSH2 0x22A PUSH2 0x269 CALLDATASIZE PUSH1 0x4 PUSH2 0x131B JUMP JUMPDEST PUSH2 0x646 JUMP JUMPDEST PUSH2 0x281 PUSH2 0x27C CALLDATASIZE PUSH1 0x4 PUSH2 0x134D JUMP JUMPDEST PUSH2 0x657 JUMP JUMPDEST PUSH1 0x40 MLOAD SWAP1 ISZERO ISZERO DUP2 MSTORE PUSH1 0x20 ADD PUSH2 0x234 JUMP JUMPDEST PUSH2 0x22A PUSH2 0x29F CALLDATASIZE PUSH1 0x4 PUSH2 0x131B JUMP JUMPDEST PUSH2 0x66E JUMP JUMPDEST PUSH1 0x2 SLOAD PUSH2 0x22A JUMP JUMPDEST PUSH2 0x281 PUSH2 0x2BA CALLDATASIZE PUSH1 0x4 PUSH2 0x1375 JUMP JUMPDEST PUSH2 0x67A JUMP JUMPDEST PUSH2 0x2C7 PUSH2 0x69F JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH1 0xFF SWAP1 SWAP2 AND DUP2 MSTORE PUSH1 0x20 ADD PUSH2 0x234 JUMP JUMPDEST PUSH2 0x22A PUSH1 0x8 SLOAD DUP2 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB PUSH32 0x0 AND DUP2 MSTORE PUSH1 0x20 ADD PUSH2 0x234 JUMP JUMPDEST PUSH2 0x22A PUSH1 0x6 SLOAD DUP2 JUMP JUMPDEST PUSH2 0x22A PUSH2 0x330 CALLDATASIZE PUSH1 0x4 PUSH2 0x13AF JUMP JUMPDEST PUSH2 0x6CA JUMP JUMPDEST PUSH2 0x22A PUSH2 0x343 CALLDATASIZE PUSH1 0x4 PUSH2 0x13C8 JUMP JUMPDEST PUSH2 0x6EE JUMP JUMPDEST PUSH2 0x22A PUSH2 0x356 CALLDATASIZE PUSH1 0x4 PUSH2 0x13AF JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH0 SWAP1 DUP2 MSTORE PUSH1 0x20 DUP2 SWAP1 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD SWAP1 JUMP JUMPDEST PUSH1 0x5 SLOAD PUSH1 0xFF AND PUSH2 0x281 JUMP JUMPDEST PUSH2 0x39C PUSH2 0x389 CALLDATASIZE PUSH1 0x4 PUSH2 0x13F2 JUMP JUMPDEST PUSH1 0x5 DUP1 SLOAD PUSH1 0xFF NOT AND SWAP2 ISZERO ISZERO SWAP2 SWAP1 SWAP2 OR SWAP1 SSTORE JUMP JUMPDEST STOP JUMPDEST PUSH2 0x22A PUSH2 0x3AC CALLDATASIZE PUSH1 0x4 PUSH2 0x13C8 JUMP JUMPDEST PUSH2 0x74B JUMP JUMPDEST PUSH2 0x24E PUSH2 0x797 JUMP JUMPDEST PUSH2 0x281 PUSH2 0x3C7 CALLDATASIZE PUSH1 0x4 PUSH2 0x134D JUMP JUMPDEST PUSH2 0x7A6 JUMP JUMPDEST PUSH2 0x22A PUSH2 0x3DA CALLDATASIZE PUSH1 0x4 PUSH2 0x131B JUMP JUMPDEST PUSH2 0x7B3 JUMP JUMPDEST PUSH2 0x22A PUSH2 0x3ED CALLDATASIZE PUSH1 0x4 PUSH2 0x1411 JUMP JUMPDEST PUSH2 0x7BF JUMP JUMPDEST PUSH2 0x22A PUSH2 0x400 CALLDATASIZE PUSH1 0x4 PUSH2 0x1411 JUMP JUMPDEST PUSH2 0x815 JUMP JUMPDEST PUSH1 0xA SLOAD PUSH2 0x420 SWAP1 PUSH1 0x1 PUSH1 0x80 SHL SWAP1 DIV PUSH8 0xFFFFFFFFFFFFFFFF AND DUP2 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH8 0xFFFFFFFFFFFFFFFF SWAP1 SWAP2 AND DUP2 MSTORE PUSH1 0x20 ADD PUSH2 0x234 JUMP JUMPDEST PUSH2 0x22A PUSH2 0x447 CALLDATASIZE PUSH1 0x4 PUSH2 0x13AF JUMP JUMPDEST PUSH2 0x862 JUMP JUMPDEST PUSH2 0x22A PUSH2 0x45A CALLDATASIZE PUSH1 0x4 PUSH2 0x131B JUMP JUMPDEST PUSH2 0x87F JUMP JUMPDEST PUSH2 0x39C PUSH2 0x46D CALLDATASIZE PUSH1 0x4 PUSH2 0x131B JUMP JUMPDEST PUSH2 0x88A JUMP JUMPDEST PUSH2 0x22A PUSH1 0x9 SLOAD DUP2 JUMP JUMPDEST PUSH1 0xA SLOAD PUSH2 0x48E SWAP1 PUSH1 0x1 PUSH1 0x1 PUSH1 0x80 SHL SUB AND DUP2 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0x80 SHL SUB SWAP1 SWAP2 AND DUP2 MSTORE PUSH1 0x20 ADD PUSH2 0x234 JUMP JUMPDEST PUSH2 0x22A PUSH2 0x4B4 CALLDATASIZE PUSH1 0x4 PUSH2 0x13AF JUMP JUMPDEST PUSH2 0x97B JUMP JUMPDEST PUSH2 0x39C PUSH2 0x4C7 CALLDATASIZE PUSH1 0x4 PUSH2 0x144A JUMP JUMPDEST PUSH2 0x9A1 JUMP JUMPDEST PUSH2 0x22A PUSH2 0x4DA CALLDATASIZE PUSH1 0x4 PUSH2 0x13AF JUMP JUMPDEST PUSH2 0xA20 JUMP JUMPDEST PUSH2 0x22A PUSH2 0x4ED CALLDATASIZE PUSH1 0x4 PUSH2 0x1469 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP2 DUP3 AND PUSH0 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 0x39C PUSH2 0xA46 JUMP JUMPDEST PUSH2 0x22A PUSH2 0xA84 JUMP JUMPDEST PUSH0 PUSH32 0x0 PUSH1 0x40 MLOAD PUSH4 0x70A08231 PUSH1 0xE0 SHL DUP2 MSTORE ADDRESS PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP2 SWAP1 SWAP2 AND SWAP1 PUSH4 0x70A08231 SWAP1 PUSH1 0x24 ADD PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x58D JUMPI RETURNDATASIZE PUSH0 PUSH0 RETURNDATACOPY RETURNDATASIZE PUSH0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP3 ADD DUP1 PUSH1 0x40 MSTORE POP DUP2 ADD SWAP1 PUSH2 0x5B1 SWAP2 SWAP1 PUSH2 0x1491 JUMP JUMPDEST SWAP1 POP SWAP1 JUMP JUMPDEST PUSH1 0x60 PUSH1 0x3 DUP1 SLOAD PUSH2 0x5C5 SWAP1 PUSH2 0x14A8 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 0x5F1 SWAP1 PUSH2 0x14A8 JUMP JUMPDEST DUP1 ISZERO PUSH2 0x63C JUMPI DUP1 PUSH1 0x1F LT PUSH2 0x613 JUMPI PUSH2 0x100 DUP1 DUP4 SLOAD DIV MUL DUP4 MSTORE SWAP2 PUSH1 0x20 ADD SWAP2 PUSH2 0x63C JUMP JUMPDEST DUP3 ADD SWAP2 SWAP1 PUSH0 MSTORE PUSH1 0x20 PUSH0 KECCAK256 SWAP1 JUMPDEST DUP2 SLOAD DUP2 MSTORE SWAP1 PUSH1 0x1 ADD SWAP1 PUSH1 0x20 ADD DUP1 DUP4 GT PUSH2 0x61F JUMPI DUP3 SWAP1 SUB PUSH1 0x1F AND DUP3 ADD SWAP2 JUMPDEST POP POP POP POP POP SWAP1 POP SWAP1 JUMP JUMPDEST PUSH0 PUSH2 0x651 DUP3 PUSH0 PUSH2 0xA93 JUMP JUMPDEST SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH0 CALLER PUSH2 0x664 DUP2 DUP6 DUP6 PUSH2 0xACB JUMP JUMPDEST POP PUSH1 0x1 SWAP4 SWAP3 POP POP POP JUMP JUMPDEST PUSH0 PUSH2 0x651 DUP3 PUSH1 0x1 PUSH2 0xADD JUMP JUMPDEST PUSH0 CALLER PUSH2 0x687 DUP6 DUP3 DUP6 PUSH2 0xB0C JUMP JUMPDEST PUSH2 0x692 DUP6 DUP6 DUP6 PUSH2 0xB75 JUMP JUMPDEST PUSH1 0x1 SWAP2 POP POP JUMPDEST SWAP4 SWAP3 POP POP POP JUMP JUMPDEST PUSH0 PUSH2 0x5B1 DUP2 PUSH32 0x0 PUSH2 0x14F4 JUMP JUMPDEST PUSH0 PUSH2 0x6D7 PUSH1 0x63 PUSH0 NOT PUSH2 0x150D JUMP JUMPDEST PUSH1 0x6 SLOAD EQ PUSH2 0x6E7 JUMPI PUSH1 0x6 SLOAD PUSH2 0x651 JUMP JUMPDEST PUSH0 NOT PUSH2 0x651 JUMP JUMPDEST PUSH0 PUSH0 PUSH2 0x6F9 DUP4 PUSH2 0x6CA JUMP JUMPDEST SWAP1 POP DUP1 DUP5 GT ISZERO PUSH2 0x72B JUMPI DUP3 DUP5 DUP3 PUSH1 0x40 MLOAD PUSH4 0x3C8097D9 PUSH1 0xE1 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x722 SWAP4 SWAP3 SWAP2 SWAP1 PUSH2 0x1520 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH0 PUSH2 0x735 DUP6 PUSH2 0x87F JUMP JUMPDEST SWAP1 POP PUSH2 0x743 CALLER DUP6 DUP8 DUP5 PUSH2 0xBD2 JUMP JUMPDEST SWAP5 SWAP4 POP POP POP POP JUMP JUMPDEST PUSH0 PUSH0 PUSH2 0x756 DUP4 PUSH2 0x862 JUMP JUMPDEST SWAP1 POP DUP1 DUP5 GT ISZERO PUSH2 0x77F JUMPI DUP3 DUP5 DUP3 PUSH1 0x40 MLOAD PUSH4 0x284FF667 PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x722 SWAP4 SWAP3 SWAP2 SWAP1 PUSH2 0x1520 JUMP JUMPDEST PUSH0 PUSH2 0x789 DUP6 PUSH2 0x7B3 JUMP JUMPDEST SWAP1 POP PUSH2 0x743 CALLER DUP6 DUP4 DUP9 PUSH2 0xBD2 JUMP JUMPDEST PUSH1 0x60 PUSH1 0x4 DUP1 SLOAD PUSH2 0x5C5 SWAP1 PUSH2 0x14A8 JUMP JUMPDEST PUSH0 CALLER PUSH2 0x664 DUP2 DUP6 DUP6 PUSH2 0xB75 JUMP JUMPDEST PUSH0 PUSH2 0x651 DUP3 PUSH1 0x1 PUSH2 0xA93 JUMP JUMPDEST PUSH0 PUSH0 PUSH2 0x7CA DUP4 PUSH2 0x97B JUMP JUMPDEST SWAP1 POP DUP1 DUP6 GT ISZERO PUSH2 0x7F3 JUMPI DUP3 DUP6 DUP3 PUSH1 0x40 MLOAD PUSH4 0x3FA733BB PUSH1 0xE2 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x722 SWAP4 SWAP3 SWAP2 SWAP1 PUSH2 0x1520 JUMP JUMPDEST PUSH0 PUSH2 0x7FD DUP7 PUSH2 0x66E JUMP JUMPDEST SWAP1 POP PUSH2 0x80C CALLER DUP7 DUP7 DUP10 DUP6 PUSH2 0xBE6 JUMP JUMPDEST SWAP6 SWAP5 POP POP POP POP POP JUMP JUMPDEST PUSH0 PUSH0 PUSH2 0x820 DUP4 PUSH2 0xA20 JUMP JUMPDEST SWAP1 POP DUP1 DUP6 GT ISZERO PUSH2 0x849 JUMPI DUP3 DUP6 DUP3 PUSH1 0x40 MLOAD PUSH4 0x2E52AFBB PUSH1 0xE2 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x722 SWAP4 SWAP3 SWAP2 SWAP1 PUSH2 0x1520 JUMP JUMPDEST PUSH0 PUSH2 0x853 DUP7 PUSH2 0x646 JUMP JUMPDEST SWAP1 POP PUSH2 0x80C CALLER DUP7 DUP7 DUP5 DUP11 PUSH2 0xBE6 JUMP JUMPDEST PUSH0 PUSH2 0x86F PUSH1 0x63 PUSH0 NOT PUSH2 0x150D JUMP JUMPDEST PUSH1 0x7 SLOAD EQ PUSH2 0x6E7 JUMPI PUSH1 0x7 SLOAD PUSH2 0x651 JUMP JUMPDEST PUSH0 PUSH2 0x651 DUP3 PUSH0 PUSH2 0xADD JUMP JUMPDEST PUSH0 DUP2 SGT ISZERO PUSH2 0x911 JUMPI PUSH1 0x40 MLOAD PUSH4 0x40C10F19 PUSH1 0xE0 SHL DUP2 MSTORE ADDRESS PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x24 DUP2 ADD DUP3 SWAP1 MSTORE PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB PUSH32 0x0 AND SWAP1 PUSH4 0x40C10F19 SWAP1 PUSH1 0x44 ADD JUMPDEST PUSH0 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 PUSH0 DUP8 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x8F8 JUMPI PUSH0 PUSH0 REVERT JUMPDEST POP GAS CALL ISZERO DUP1 ISZERO PUSH2 0x90A JUMPI RETURNDATASIZE PUSH0 PUSH0 RETURNDATACOPY RETURNDATASIZE PUSH0 REVERT JUMPDEST POP POP POP POP POP JUMP JUMPDEST PUSH32 0x0 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH4 0x9DC29FAC ADDRESS PUSH2 0x94A DUP5 PUSH2 0x1541 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xE0 SHL SUB NOT PUSH1 0xE0 DUP6 SWAP1 SHL AND DUP2 MSTORE PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP1 SWAP3 AND PUSH1 0x4 DUP4 ADD MSTORE PUSH1 0x24 DUP3 ADD MSTORE PUSH1 0x44 ADD PUSH2 0x8E1 JUMP JUMPDEST PUSH0 PUSH2 0x988 PUSH1 0x63 PUSH0 NOT PUSH2 0x150D JUMP JUMPDEST PUSH1 0x8 SLOAD EQ PUSH2 0x998 JUMPI PUSH1 0x8 SLOAD PUSH2 0x651 JUMP JUMPDEST PUSH2 0x651 DUP3 PUSH2 0xBFB JUMP JUMPDEST PUSH0 DUP3 PUSH1 0x3 DUP2 GT ISZERO PUSH2 0x9B4 JUMPI PUSH2 0x9B4 PUSH2 0x155B JUMP JUMPDEST SUB PUSH2 0x9BF JUMPI PUSH1 0x6 DUP2 SWAP1 SSTORE JUMPDEST PUSH1 0x1 DUP3 PUSH1 0x3 DUP2 GT ISZERO PUSH2 0x9D3 JUMPI PUSH2 0x9D3 PUSH2 0x155B JUMP JUMPDEST SUB PUSH2 0x9DE JUMPI PUSH1 0x7 DUP2 SWAP1 SSTORE JUMPDEST PUSH1 0x2 DUP3 PUSH1 0x3 DUP2 GT ISZERO PUSH2 0x9F2 JUMPI PUSH2 0x9F2 PUSH2 0x155B JUMP JUMPDEST SUB PUSH2 0x9FD JUMPI PUSH1 0x8 DUP2 SWAP1 SSTORE JUMPDEST PUSH1 0x3 DUP3 PUSH1 0x3 DUP2 GT ISZERO PUSH2 0xA11 JUMPI PUSH2 0xA11 PUSH2 0x155B JUMP JUMPDEST SUB PUSH2 0xA1C JUMPI PUSH1 0x9 DUP2 SWAP1 SSTORE JUMPDEST POP POP JUMP JUMPDEST PUSH0 PUSH2 0xA2D PUSH1 0x63 PUSH0 NOT PUSH2 0x150D JUMP JUMPDEST PUSH1 0x9 SLOAD EQ PUSH2 0xA3D JUMPI PUSH1 0x9 SLOAD PUSH2 0x651 JUMP JUMPDEST PUSH2 0x651 DUP3 PUSH2 0xC08 JUMP JUMPDEST PUSH2 0xA4E PUSH2 0x527 JUMP JUMPDEST PUSH1 0xA DUP1 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0x80 SHL SUB SWAP3 SWAP1 SWAP3 AND PUSH1 0x1 PUSH1 0x1 PUSH1 0xC0 SHL SUB NOT SWAP1 SWAP3 AND SWAP2 SWAP1 SWAP2 OR PUSH1 0x1 PUSH1 0x80 SHL TIMESTAMP PUSH8 0xFFFFFFFFFFFFFFFF AND MUL OR SWAP1 SSTORE JUMP JUMPDEST PUSH2 0xA90 PUSH1 0x63 PUSH0 NOT PUSH2 0x150D JUMP JUMPDEST DUP2 JUMP JUMPDEST PUSH0 PUSH2 0x698 PUSH2 0xA9F PUSH2 0x527 JUMP JUMPDEST PUSH2 0xAAA SWAP1 PUSH1 0x1 PUSH2 0x156F JUMP JUMPDEST PUSH2 0xAB5 PUSH0 PUSH1 0xA PUSH2 0x1665 JUMP JUMPDEST PUSH1 0x2 SLOAD PUSH2 0xAC2 SWAP2 SWAP1 PUSH2 0x156F JUMP JUMPDEST DUP6 SWAP2 SWAP1 DUP6 PUSH2 0xC25 JUMP JUMPDEST PUSH2 0xAD8 DUP4 DUP4 DUP4 PUSH1 0x1 PUSH2 0xC67 JUMP JUMPDEST POP POP POP JUMP JUMPDEST PUSH0 PUSH2 0x698 PUSH2 0xAEC DUP3 PUSH1 0xA PUSH2 0x1665 JUMP JUMPDEST PUSH1 0x2 SLOAD PUSH2 0xAF9 SWAP2 SWAP1 PUSH2 0x156F JUMP JUMPDEST PUSH2 0xB01 PUSH2 0x527 JUMP JUMPDEST PUSH2 0xAC2 SWAP1 PUSH1 0x1 PUSH2 0x156F JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP4 DUP2 AND PUSH0 SWAP1 DUP2 MSTORE PUSH1 0x1 PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x40 DUP1 DUP4 KECCAK256 SWAP4 DUP7 AND DUP4 MSTORE SWAP3 SWAP1 MSTORE KECCAK256 SLOAD PUSH0 NOT DUP2 LT ISZERO PUSH2 0xB6F JUMPI DUP2 DUP2 LT ISZERO PUSH2 0xB61 JUMPI DUP3 DUP2 DUP4 PUSH1 0x40 MLOAD PUSH4 0x7DC7A0D9 PUSH1 0xE1 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x722 SWAP4 SWAP3 SWAP2 SWAP1 PUSH2 0x1520 JUMP JUMPDEST PUSH2 0xB6F DUP5 DUP5 DUP5 DUP5 SUB PUSH0 PUSH2 0xC67 JUMP JUMPDEST POP POP POP POP JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP4 AND PUSH2 0xB9E JUMPI PUSH1 0x40 MLOAD PUSH4 0x4B637E8F PUSH1 0xE1 SHL DUP2 MSTORE PUSH0 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x24 ADD PUSH2 0x722 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP3 AND PUSH2 0xBC7 JUMPI PUSH1 0x40 MLOAD PUSH4 0xEC442F05 PUSH1 0xE0 SHL DUP2 MSTORE PUSH0 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x24 ADD PUSH2 0x722 JUMP JUMPDEST PUSH2 0xAD8 DUP4 DUP4 DUP4 PUSH2 0xD39 JUMP JUMPDEST PUSH2 0xBDE DUP5 DUP5 DUP5 DUP5 PUSH2 0xE4C JUMP JUMPDEST PUSH2 0xB6F PUSH2 0xA46 JUMP JUMPDEST PUSH2 0xBF3 DUP6 DUP6 DUP6 DUP6 DUP6 PUSH2 0xEA1 JUMP JUMPDEST PUSH2 0x90A PUSH2 0xA46 JUMP JUMPDEST PUSH0 PUSH2 0x651 PUSH2 0x269 DUP4 PUSH2 0xA20 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 AND PUSH0 SWAP1 DUP2 MSTORE PUSH1 0x20 DUP2 SWAP1 MSTORE PUSH1 0x40 DUP2 KECCAK256 SLOAD PUSH2 0x651 JUMP JUMPDEST PUSH0 PUSH2 0xC52 PUSH2 0xC32 DUP4 PUSH2 0xEF7 JUMP JUMPDEST DUP1 ISZERO PUSH2 0xC4D JUMPI POP PUSH0 DUP5 DUP1 PUSH2 0xC48 JUMPI PUSH2 0xC48 PUSH2 0x1673 JUMP JUMPDEST DUP7 DUP9 MULMOD GT JUMPDEST ISZERO ISZERO SWAP1 JUMP JUMPDEST PUSH2 0xC5D DUP7 DUP7 DUP7 PUSH2 0xF23 JUMP JUMPDEST PUSH2 0x80C SWAP2 SWAP1 PUSH2 0x156F JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP5 AND PUSH2 0xC90 JUMPI PUSH1 0x40 MLOAD PUSH4 0xE602DF05 PUSH1 0xE0 SHL DUP2 MSTORE PUSH0 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x24 ADD PUSH2 0x722 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP4 AND PUSH2 0xCB9 JUMPI PUSH1 0x40 MLOAD PUSH4 0x4A1406B1 PUSH1 0xE1 SHL DUP2 MSTORE PUSH0 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x24 ADD PUSH2 0x722 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP1 DUP6 AND PUSH0 SWAP1 DUP2 MSTORE PUSH1 0x1 PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x40 DUP1 DUP4 KECCAK256 SWAP4 DUP8 AND DUP4 MSTORE SWAP3 SWAP1 MSTORE KECCAK256 DUP3 SWAP1 SSTORE DUP1 ISZERO PUSH2 0xB6F JUMPI DUP3 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP5 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH32 0x8C5BE1E5EBEC7D5BD14F71427D1E84F3DD0314C0F7B2291E5B200AC8C7C3B925 DUP5 PUSH1 0x40 MLOAD PUSH2 0xD2B SWAP2 DUP2 MSTORE PUSH1 0x20 ADD SWAP1 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 LOG3 POP POP POP POP JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP4 AND PUSH2 0xD63 JUMPI DUP1 PUSH1 0x2 PUSH0 DUP3 DUP3 SLOAD PUSH2 0xD58 SWAP2 SWAP1 PUSH2 0x156F JUMP JUMPDEST SWAP1 SWAP2 SSTORE POP PUSH2 0xDC0 SWAP1 POP JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP4 AND PUSH0 SWAP1 DUP2 MSTORE PUSH1 0x20 DUP2 SWAP1 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD DUP2 DUP2 LT ISZERO PUSH2 0xDA2 JUMPI DUP4 DUP2 DUP4 PUSH1 0x40 MLOAD PUSH4 0x391434E3 PUSH1 0xE2 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x722 SWAP4 SWAP3 SWAP2 SWAP1 PUSH2 0x1520 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP5 AND PUSH0 SWAP1 DUP2 MSTORE PUSH1 0x20 DUP2 SWAP1 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SWAP1 DUP3 SWAP1 SUB SWAP1 SSTORE JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP3 AND PUSH2 0xDDC JUMPI PUSH1 0x2 DUP1 SLOAD DUP3 SWAP1 SUB SWAP1 SSTORE PUSH2 0xDFA JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP3 AND PUSH0 SWAP1 DUP2 MSTORE PUSH1 0x20 DUP2 SWAP1 MSTORE PUSH1 0x40 SWAP1 KECCAK256 DUP1 SLOAD DUP3 ADD SWAP1 SSTORE JUMPDEST DUP2 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP4 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH32 0xDDF252AD1BE2C89B69C2B068FC378DAA952BA7F163C4A11628F55A4DF523B3EF DUP4 PUSH1 0x40 MLOAD PUSH2 0xE3F SWAP2 DUP2 MSTORE PUSH1 0x20 ADD SWAP1 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 LOG3 POP POP POP JUMP JUMPDEST PUSH1 0x5 SLOAD PUSH1 0xFF AND ISZERO PUSH2 0xE60 PUSH1 0x4 PUSH0 CALLDATASIZE DUP2 PUSH2 0x1687 JUMP JUMPDEST PUSH2 0xE69 SWAP2 PUSH2 0x16AE JUMP JUMPDEST SWAP1 PUSH2 0xE94 JUMPI PUSH1 0x40 MLOAD PUSH4 0x40C2FD53 PUSH1 0xE1 SHL DUP2 MSTORE PUSH1 0x1 PUSH1 0x1 PUSH1 0xE0 SHL SUB NOT SWAP1 SWAP2 AND PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x24 ADD PUSH2 0x722 JUMP JUMPDEST POP PUSH2 0xB6F DUP5 DUP5 DUP5 DUP5 PUSH2 0xFD3 JUMP JUMPDEST PUSH1 0x5 SLOAD PUSH1 0xFF AND ISZERO PUSH2 0xEB5 PUSH1 0x4 PUSH0 CALLDATASIZE DUP2 PUSH2 0x1687 JUMP JUMPDEST PUSH2 0xEBE SWAP2 PUSH2 0x16AE JUMP JUMPDEST SWAP1 PUSH2 0xEE9 JUMPI PUSH1 0x40 MLOAD PUSH4 0x40C2FD53 PUSH1 0xE1 SHL DUP2 MSTORE PUSH1 0x1 PUSH1 0x1 PUSH1 0xE0 SHL SUB NOT SWAP1 SWAP2 AND PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x24 ADD PUSH2 0x722 JUMP JUMPDEST POP PUSH2 0x90A DUP6 DUP6 DUP6 DUP6 DUP6 PUSH2 0x1057 JUMP JUMPDEST PUSH0 PUSH1 0x2 DUP3 PUSH1 0x3 DUP2 GT ISZERO PUSH2 0xF0C JUMPI PUSH2 0xF0C PUSH2 0x155B JUMP JUMPDEST PUSH2 0xF16 SWAP2 SWAP1 PUSH2 0x16E6 JUMP JUMPDEST PUSH1 0xFF AND PUSH1 0x1 EQ SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH0 PUSH0 PUSH0 PUSH2 0xF30 DUP7 DUP7 PUSH2 0x1117 JUMP JUMPDEST SWAP2 POP SWAP2 POP DUP2 PUSH0 SUB PUSH2 0xF54 JUMPI DUP4 DUP2 DUP2 PUSH2 0xF4A JUMPI PUSH2 0xF4A PUSH2 0x1673 JUMP JUMPDEST DIV SWAP3 POP POP POP PUSH2 0x698 JUMP JUMPDEST DUP2 DUP5 GT PUSH2 0xF6B JUMPI PUSH2 0xF6B PUSH1 0x3 DUP6 ISZERO MUL PUSH1 0x11 XOR PUSH2 0x1133 JUMP JUMPDEST PUSH0 DUP5 DUP7 DUP9 MULMOD PUSH0 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 DUP6 DUP5 GT SWAP1 SWAP7 SUB SWAP6 SWAP1 SWAP6 MUL SWAP2 SWAP1 SWAP4 SUB SWAP4 SWAP1 SWAP4 DIV SWAP3 SWAP1 SWAP3 OR MUL SWAP2 POP POP SWAP4 SWAP3 POP POP POP JUMP JUMPDEST PUSH2 0xFFF PUSH32 0x0 DUP6 ADDRESS DUP6 PUSH2 0x1144 JUMP JUMPDEST PUSH2 0x1009 DUP4 DUP3 PUSH2 0x117A JUMP JUMPDEST DUP3 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP5 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH32 0xDCBC1C05240F31FF3AD067EF1EE35CE4997762752E3A095284754544F4C709D7 DUP5 DUP5 PUSH1 0x40 MLOAD PUSH2 0xD2B SWAP3 SWAP2 SWAP1 SWAP2 DUP3 MSTORE PUSH1 0x20 DUP3 ADD MSTORE PUSH1 0x40 ADD SWAP1 JUMP JUMPDEST DUP3 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP6 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND EQ PUSH2 0x107B JUMPI PUSH2 0x107B DUP4 DUP7 DUP4 PUSH2 0xB0C JUMP JUMPDEST PUSH2 0x1085 DUP4 DUP3 PUSH2 0x11AE JUMP JUMPDEST PUSH2 0x10B0 PUSH32 0x0 DUP6 DUP5 PUSH2 0x11E2 JUMP JUMPDEST DUP3 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP5 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP7 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH32 0xFBDE797D201C681B91056529119E0B02407C7BB96A4A2C75C01FC9667232C8DB DUP6 DUP6 PUSH1 0x40 MLOAD PUSH2 0x1108 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 POP POP POP JUMP JUMPDEST PUSH0 DUP1 PUSH0 NOT DUP4 DUP6 MULMOD SWAP4 SWAP1 SWAP3 MUL DUP1 DUP5 LT SWAP4 DUP2 SWAP1 SUB SWAP4 SWAP1 SWAP4 SUB SWAP4 SWAP2 POP POP JUMP JUMPDEST PUSH4 0x4E487B71 PUSH0 MSTORE DUP1 PUSH1 0x20 MSTORE PUSH1 0x24 PUSH1 0x1C REVERT JUMPDEST PUSH2 0x1152 DUP5 DUP5 DUP5 DUP5 PUSH1 0x1 PUSH2 0x1217 JUMP JUMPDEST PUSH2 0xB6F JUMPI PUSH1 0x40 MLOAD PUSH4 0x5274AFE7 PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP6 AND PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x24 ADD PUSH2 0x722 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP3 AND PUSH2 0x11A3 JUMPI PUSH1 0x40 MLOAD PUSH4 0xEC442F05 PUSH1 0xE0 SHL DUP2 MSTORE PUSH0 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x24 ADD PUSH2 0x722 JUMP JUMPDEST PUSH2 0xA1C PUSH0 DUP4 DUP4 PUSH2 0xD39 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP3 AND PUSH2 0x11D7 JUMPI PUSH1 0x40 MLOAD PUSH4 0x4B637E8F PUSH1 0xE1 SHL DUP2 MSTORE PUSH0 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x24 ADD PUSH2 0x722 JUMP JUMPDEST PUSH2 0xA1C DUP3 PUSH0 DUP4 PUSH2 0xD39 JUMP JUMPDEST PUSH2 0x11EF DUP4 DUP4 DUP4 PUSH1 0x1 PUSH2 0x1284 JUMP JUMPDEST PUSH2 0xAD8 JUMPI PUSH1 0x40 MLOAD PUSH4 0x5274AFE7 PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP5 AND PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x24 ADD PUSH2 0x722 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH4 0x23B872DD PUSH1 0xE0 SHL PUSH0 DUP2 DUP2 MSTORE PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP8 DUP2 AND PUSH1 0x4 MSTORE DUP7 AND PUSH1 0x24 MSTORE PUSH1 0x44 DUP6 SWAP1 MSTORE SWAP2 PUSH1 0x20 DUP4 PUSH1 0x64 DUP2 DUP1 DUP13 GAS CALL SWAP3 POP PUSH1 0x1 PUSH0 MLOAD EQ DUP4 AND PUSH2 0x1273 JUMPI DUP4 DUP4 ISZERO AND ISZERO PUSH2 0x1267 JUMPI RETURNDATASIZE PUSH0 DUP3 RETURNDATACOPY RETURNDATASIZE DUP2 REVERT JUMPDEST PUSH0 DUP9 EXTCODESIZE GT RETURNDATASIZE ISZERO AND DUP4 AND SWAP3 POP JUMPDEST PUSH1 0x40 MSTORE POP PUSH0 PUSH1 0x60 MSTORE SWAP6 SWAP5 POP POP POP POP POP JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH4 0xA9059CBB PUSH1 0xE0 SHL PUSH0 DUP2 DUP2 MSTORE PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP7 AND PUSH1 0x4 MSTORE PUSH1 0x24 DUP6 SWAP1 MSTORE SWAP2 PUSH1 0x20 DUP4 PUSH1 0x44 DUP2 DUP1 DUP12 GAS CALL SWAP3 POP PUSH1 0x1 PUSH0 MLOAD EQ DUP4 AND PUSH2 0x12DA JUMPI DUP4 DUP4 ISZERO AND ISZERO PUSH2 0x12CE JUMPI RETURNDATASIZE PUSH0 DUP3 RETURNDATACOPY RETURNDATASIZE DUP2 REVERT JUMPDEST PUSH0 DUP8 EXTCODESIZE GT RETURNDATASIZE ISZERO AND DUP4 AND SWAP3 POP JUMPDEST PUSH1 0x40 MSTORE POP SWAP5 SWAP4 POP POP POP POP JUMP JUMPDEST PUSH1 0x20 DUP2 MSTORE PUSH0 DUP3 MLOAD DUP1 PUSH1 0x20 DUP5 ADD MSTORE DUP1 PUSH1 0x20 DUP6 ADD PUSH1 0x40 DUP6 ADD MCOPY PUSH0 PUSH1 0x40 DUP3 DUP6 ADD ADD MSTORE PUSH1 0x40 PUSH1 0x1F NOT PUSH1 0x1F DUP4 ADD AND DUP5 ADD ADD SWAP2 POP POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x132B JUMPI PUSH0 PUSH0 REVERT JUMPDEST POP CALLDATALOAD SWAP2 SWAP1 POP JUMP JUMPDEST DUP1 CALLDATALOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 AND DUP2 EQ PUSH2 0x1348 JUMPI PUSH0 PUSH0 REVERT JUMPDEST SWAP2 SWAP1 POP JUMP JUMPDEST PUSH0 PUSH0 PUSH1 0x40 DUP4 DUP6 SUB SLT ISZERO PUSH2 0x135E JUMPI PUSH0 PUSH0 REVERT JUMPDEST PUSH2 0x1367 DUP4 PUSH2 0x1332 JUMP JUMPDEST SWAP5 PUSH1 0x20 SWAP4 SWAP1 SWAP4 ADD CALLDATALOAD SWAP4 POP POP POP JUMP JUMPDEST PUSH0 PUSH0 PUSH0 PUSH1 0x60 DUP5 DUP7 SUB SLT ISZERO PUSH2 0x1387 JUMPI PUSH0 PUSH0 REVERT JUMPDEST PUSH2 0x1390 DUP5 PUSH2 0x1332 JUMP JUMPDEST SWAP3 POP PUSH2 0x139E PUSH1 0x20 DUP6 ADD PUSH2 0x1332 JUMP JUMPDEST SWAP3 SWAP6 SWAP3 SWAP5 POP POP POP PUSH1 0x40 SWAP2 SWAP1 SWAP2 ADD CALLDATALOAD SWAP1 JUMP JUMPDEST PUSH0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x13BF JUMPI PUSH0 PUSH0 REVERT JUMPDEST PUSH2 0x698 DUP3 PUSH2 0x1332 JUMP JUMPDEST PUSH0 PUSH0 PUSH1 0x40 DUP4 DUP6 SUB SLT ISZERO PUSH2 0x13D9 JUMPI PUSH0 PUSH0 REVERT JUMPDEST DUP3 CALLDATALOAD SWAP2 POP PUSH2 0x13E9 PUSH1 0x20 DUP5 ADD PUSH2 0x1332 JUMP JUMPDEST SWAP1 POP SWAP3 POP SWAP3 SWAP1 POP JUMP JUMPDEST PUSH0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x1402 JUMPI PUSH0 PUSH0 REVERT JUMPDEST DUP2 CALLDATALOAD DUP1 ISZERO ISZERO DUP2 EQ PUSH2 0x698 JUMPI PUSH0 PUSH0 REVERT JUMPDEST PUSH0 PUSH0 PUSH0 PUSH1 0x60 DUP5 DUP7 SUB SLT ISZERO PUSH2 0x1423 JUMPI PUSH0 PUSH0 REVERT JUMPDEST DUP4 CALLDATALOAD SWAP3 POP PUSH2 0x1433 PUSH1 0x20 DUP6 ADD PUSH2 0x1332 JUMP JUMPDEST SWAP2 POP PUSH2 0x1441 PUSH1 0x40 DUP6 ADD PUSH2 0x1332 JUMP JUMPDEST SWAP1 POP SWAP3 POP SWAP3 POP SWAP3 JUMP JUMPDEST PUSH0 PUSH0 PUSH1 0x40 DUP4 DUP6 SUB SLT ISZERO PUSH2 0x145B JUMPI PUSH0 PUSH0 REVERT JUMPDEST DUP3 CALLDATALOAD PUSH1 0x4 DUP2 LT PUSH2 0x1367 JUMPI PUSH0 PUSH0 REVERT JUMPDEST PUSH0 PUSH0 PUSH1 0x40 DUP4 DUP6 SUB SLT ISZERO PUSH2 0x147A JUMPI PUSH0 PUSH0 REVERT JUMPDEST PUSH2 0x1483 DUP4 PUSH2 0x1332 JUMP JUMPDEST SWAP2 POP PUSH2 0x13E9 PUSH1 0x20 DUP5 ADD PUSH2 0x1332 JUMP JUMPDEST PUSH0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x14A1 JUMPI PUSH0 PUSH0 REVERT JUMPDEST POP MLOAD SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x1 DUP2 DUP2 SHR SWAP1 DUP3 AND DUP1 PUSH2 0x14BC JUMPI PUSH1 0x7F DUP3 AND SWAP2 POP JUMPDEST PUSH1 0x20 DUP3 LT DUP2 SUB PUSH2 0x14DA JUMPI PUSH4 0x4E487B71 PUSH1 0xE0 SHL PUSH0 MSTORE PUSH1 0x22 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH0 REVERT JUMPDEST POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH4 0x4E487B71 PUSH1 0xE0 SHL PUSH0 MSTORE PUSH1 0x11 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH0 REVERT JUMPDEST PUSH1 0xFF DUP2 DUP2 AND DUP4 DUP3 AND ADD SWAP1 DUP2 GT ISZERO PUSH2 0x651 JUMPI PUSH2 0x651 PUSH2 0x14E0 JUMP JUMPDEST DUP2 DUP2 SUB DUP2 DUP2 GT ISZERO PUSH2 0x651 JUMPI PUSH2 0x651 PUSH2 0x14E0 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP4 SWAP1 SWAP4 AND DUP4 MSTORE PUSH1 0x20 DUP4 ADD SWAP2 SWAP1 SWAP2 MSTORE PUSH1 0x40 DUP3 ADD MSTORE PUSH1 0x60 ADD SWAP1 JUMP JUMPDEST PUSH0 PUSH1 0x1 PUSH1 0xFF SHL DUP3 ADD PUSH2 0x1555 JUMPI PUSH2 0x1555 PUSH2 0x14E0 JUMP JUMPDEST POP PUSH0 SUB SWAP1 JUMP JUMPDEST PUSH4 0x4E487B71 PUSH1 0xE0 SHL PUSH0 MSTORE PUSH1 0x21 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH0 REVERT JUMPDEST DUP1 DUP3 ADD DUP1 DUP3 GT ISZERO PUSH2 0x651 JUMPI PUSH2 0x651 PUSH2 0x14E0 JUMP JUMPDEST PUSH1 0x1 DUP2 JUMPDEST PUSH1 0x1 DUP5 GT ISZERO PUSH2 0x15BD JUMPI DUP1 DUP6 DIV DUP2 GT ISZERO PUSH2 0x15A1 JUMPI PUSH2 0x15A1 PUSH2 0x14E0 JUMP JUMPDEST PUSH1 0x1 DUP5 AND ISZERO PUSH2 0x15AF JUMPI SWAP1 DUP2 MUL SWAP1 JUMPDEST PUSH1 0x1 SWAP4 SWAP1 SWAP4 SHR SWAP3 DUP1 MUL PUSH2 0x1586 JUMP JUMPDEST SWAP4 POP SWAP4 SWAP2 POP POP JUMP JUMPDEST PUSH0 DUP3 PUSH2 0x15D3 JUMPI POP PUSH1 0x1 PUSH2 0x651 JUMP JUMPDEST DUP2 PUSH2 0x15DF JUMPI POP PUSH0 PUSH2 0x651 JUMP JUMPDEST DUP2 PUSH1 0x1 DUP2 EQ PUSH2 0x15F5 JUMPI PUSH1 0x2 DUP2 EQ PUSH2 0x15FF JUMPI PUSH2 0x161B JUMP JUMPDEST PUSH1 0x1 SWAP2 POP POP PUSH2 0x651 JUMP JUMPDEST PUSH1 0xFF DUP5 GT ISZERO PUSH2 0x1610 JUMPI PUSH2 0x1610 PUSH2 0x14E0 JUMP JUMPDEST POP POP PUSH1 0x1 DUP3 SHL PUSH2 0x651 JUMP JUMPDEST POP PUSH1 0x20 DUP4 LT PUSH2 0x133 DUP4 LT AND PUSH1 0x4E DUP5 LT PUSH1 0xB DUP5 LT AND OR ISZERO PUSH2 0x163E JUMPI POP DUP2 DUP2 EXP PUSH2 0x651 JUMP JUMPDEST PUSH2 0x164A PUSH0 NOT DUP5 DUP5 PUSH2 0x1582 JUMP JUMPDEST DUP1 PUSH0 NOT DIV DUP3 GT ISZERO PUSH2 0x165D JUMPI PUSH2 0x165D PUSH2 0x14E0 JUMP JUMPDEST MUL SWAP4 SWAP3 POP POP POP JUMP JUMPDEST PUSH0 PUSH2 0x698 PUSH1 0xFF DUP5 AND DUP4 PUSH2 0x15C5 JUMP JUMPDEST PUSH4 0x4E487B71 PUSH1 0xE0 SHL PUSH0 MSTORE PUSH1 0x12 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH0 REVERT JUMPDEST PUSH0 PUSH0 DUP6 DUP6 GT ISZERO PUSH2 0x1695 JUMPI PUSH0 PUSH0 REVERT JUMPDEST DUP4 DUP7 GT ISZERO PUSH2 0x16A1 JUMPI PUSH0 PUSH0 REVERT JUMPDEST POP POP DUP3 ADD SWAP4 SWAP2 SWAP1 SWAP3 SUB SWAP2 POP JUMP JUMPDEST DUP1 CALLDATALOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xE0 SHL SUB NOT DUP2 AND SWAP1 PUSH1 0x4 DUP5 LT ISZERO PUSH2 0x16DF JUMPI PUSH1 0x1 PUSH1 0x1 PUSH1 0xE0 SHL SUB NOT PUSH1 0x4 DUP6 SWAP1 SUB PUSH1 0x3 SHL DUP2 SWAP1 SHL DUP3 AND AND SWAP2 POP JUMPDEST POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH0 PUSH1 0xFF DUP4 AND DUP1 PUSH2 0x1704 JUMPI PUSH4 0x4E487B71 PUSH1 0xE0 SHL PUSH0 MSTORE PUSH1 0x12 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH0 REVERT JUMPDEST DUP1 PUSH1 0xFF DUP5 AND MOD SWAP2 POP POP SWAP3 SWAP2 POP POP JUMP INVALID LOG2 PUSH5 0x6970667358 0x22 SLT KECCAK256 PUSH17 0x7E46FBE4E821FEBFD486CFF17E5084815C 0xEB 0x26 0xAF CREATE2 SELFBALANCE STOP DIV 0xA6 PUSH22 0x34C61447764736F6C634300081E0033000000000000 ","sourceMap":"231:811:75:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;7192:125:34;;;:::i;:::-;;;160:25:87;;;148:2;133:18;7192:125:34;;;;;;;;561:30:10;;;;;;1760:89:32;;;:::i;:::-;;;;;;;:::i;7535:148:34:-;;;;;;:::i;:::-;;:::i;3902:186:32:-;;;;;;:::i;:::-;;:::i;:::-;;;1498:14:87;;1491:22;1473:41;;1461:2;1446:18;3902:186:32;1333:187:87;8672:147:34;;;;;;:::i;:::-;;:::i;2803:97:32:-;2881:12;;2803:97;;4680:244;;;;;;:::i;:::-;;:::i;6877:151:34:-;;;:::i;:::-;;;2076:4:87;2064:17;;;2046:36;;2034:2;2019:18;6877:151:34;1904:184:87;595:34:10;;;;;;7063:94:34;;;-1:-1:-1;;;;;7143:6:34;2257:32:87;2239:51;;2227:2;2212:18;7063:94:34;2093:203:87;524:33:10;;;;;;2105:175;;;;;;:::i;:::-;;:::i;9035:392:34:-;;;;;;:::i;:::-;;:::i;2933:116:32:-;;;;;;:::i;:::-;-1:-1:-1;;;;;3024:18:32;2998:7;3024:18;;;;;;;;;;;;2933:116;2029:72:10;2089:7;;;;2029:72;;1955:70;;;;;;:::i;:::-;2003:7;:17;;-1:-1:-1;;2003:17:10;;;;;;;;;;1955:70;;;9462:380:34;;;;;;:::i;:::-;;:::i;1962:93:32:-;;;:::i;3244:178::-;;;;;;:::i;:::-;;:::i;8494:143:34:-;;;;;;:::i;:::-;;:::i;9877:413::-;;;;;;:::i;:::-;;:::i;10325:405::-;;;;;;:::i;:::-;;:::i;302:24:75:-;;;;;-1:-1:-1;;;302:24:75;;;;;;;;;3628:18:87;3616:31;;;3598:50;;3586:2;3571:18;302:24:75;3454:200:87;2284:163:10;;;;;;:::i;:::-;;:::i;7352:148:34:-;;;;;;:::i;:::-;;:::i;1729:222:10:-;;;;;;:::i;:::-;;:::i;633:32::-;;;;;;271:27:75;;;;;-1:-1:-1;;;;;271:27:75;;;;;;-1:-1:-1;;;;;4007:47:87;;;3989:66;;3977:2;3962:18;271:27:75;3843:218:87;2451:179:10;;;;;;:::i;:::-;;:::i;2809:362::-;;;;;;:::i;:::-;;:::i;2634:171::-;;;;;;:::i;:::-;;:::i;3455:140:32:-;;;;;;:::i;:::-;-1:-1:-1;;;;;3561:18:32;;;3535:7;3561:18;;;:11;:18;;;;;;;;:27;;;;;;;;;;;;;3455:140;908:132:75;;;:::i;670:63:10:-;;;:::i;7192:125:34:-;7244:7;7143:6;7270:40;;-1:-1:-1;;;7270:40:34;;7304:4;7270:40;;;2239:51:87;-1:-1:-1;;;;;7270:25:34;;;;;;;2212:18:87;;7270:40:34;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;7263:47;;7192:125;:::o;1760:89:32:-;1805:13;1837:5;1830:12;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1760:89;:::o;7535:148:34:-;7605:7;7631:45;7648:6;7656:19;7631:16;:45::i;:::-;7624:52;7535:148;-1:-1:-1;;7535:148:34:o;3902:186:32:-;3975:4;735:10:38;4029:31:32;735:10:38;4045:7:32;4054:5;4029:8;:31::i;:::-;-1:-1:-1;4077:4:32;;3902:186;-1:-1:-1;;;3902:186:32:o;8672:147:34:-;8742:7;8768:44;8785:6;8793:18;8768:16;:44::i;4680:244:32:-;4767:4;735:10:38;4823:37:32;4839:4;735:10:38;4854:5:32;4823:15;:37::i;:::-;4870:26;4880:4;4886:2;4890:5;4870:9;:26::i;:::-;4913:4;4906:11;;;4680:244;;;;;;:::o;6877:151:34:-;6958:5;6982:39;6958:5;6982:19;:39;:::i;2105:175:10:-;2170:7;711:22;731:2;-1:-1:-1;;711:22:10;:::i;:::-;2192:18;;:36;:83;;2257:18;;2192:83;;;-1:-1:-1;;2231:23:10;7718:108:34;9035:392;9110:7;9129:17;9149:20;9160:8;9149:10;:20::i;:::-;9129:40;;9192:9;9183:6;:18;9179:110;;;9250:8;9260:6;9268:9;9224:54;;-1:-1:-1;;;9224:54:34;;;;;;;;;;:::i;:::-;;;;;;;;9179:110;9299:14;9316:22;9331:6;9316:14;:22::i;:::-;9299:39;-1:-1:-1;9348:48:34;735:10:38;9371:8:34;9381:6;9389;9348:8;:48::i;:::-;9414:6;9035:392;-1:-1:-1;;;;9035:392:34:o;9462:380::-;9534:7;9553:17;9573;9581:8;9573:7;:17::i;:::-;9553:37;;9613:9;9604:6;:18;9600:107;;;9668:8;9678:6;9686:9;9645:51;;-1:-1:-1;;;9645:51:34;;;;;;;;;;:::i;9600:107::-;9717:14;9734:19;9746:6;9734:11;:19::i;:::-;9717:36;-1:-1:-1;9763:48:34;735:10:38;9786:8:34;9796:6;9804;9763:8;:48::i;1962:93:32:-;2009:13;2041:7;2034:14;;;;;:::i;3244:178::-;3313:4;735:10:38;3367:27:32;735:10:38;3384:2:32;3388:5;3367:9;:27::i;8494:143:34:-;8560:7;8586:44;8603:6;8611:18;8586:16;:44::i;9877:413::-;9968:7;9987:17;10007:18;10019:5;10007:11;:18::i;:::-;9987:38;;10048:9;10039:6;:18;10035:108;;;10107:5;10114:6;10122:9;10080:52;;-1:-1:-1;;;10080:52:34;;;;;;;;;;:::i;10035:108::-;10153:14;10170:23;10186:6;10170:15;:23::i;:::-;10153:40;-1:-1:-1;10203:56:34;735:10:38;10227:8:34;10237:5;10244:6;10252;10203:9;:56::i;:::-;10277:6;9877:413;-1:-1:-1;;;;;9877:413:34:o;10325:405::-;10414:7;10433:17;10453:16;10463:5;10453:9;:16::i;:::-;10433:36;;10492:9;10483:6;:18;10479:106;;;10549:5;10556:6;10564:9;10524:50;;-1:-1:-1;;;10524:50:34;;;;;;;;;;:::i;10479:106::-;10595:14;10612:21;10626:6;10612:13;:21::i;:::-;10595:38;-1:-1:-1;10643:56:34;735:10:38;10667:8:34;10677:5;10684:6;10692;10643:9;:56::i;2284:163:10:-;2346:7;711:22;731:2;-1:-1:-1;;711:22:10;:::i;:::-;2368:15;;:33;:74;;2427:15;;2368:74;;7352:148:34;7422:7;7448:45;7465:6;7473:19;7448:16;:45::i;1729:222:10:-;1797:1;1788:6;:10;1784:163;;;1808:55;;-1:-1:-1;;;1808:55:10;;1840:4;1808:55;;;6247:51:87;6314:18;;;6307:34;;;-1:-1:-1;;;;;7143:6:34;1808:23:10;;;;6220:18:87;;1808:55:10;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1729:222;:::o;1784:163::-;7143:6:34;-1:-1:-1;;;;;1884:23:10;;1916:4;1931:7;1932:6;1931:7;:::i;:::-;1884:56;;-1:-1:-1;;;;;;1884:56:10;;;;;;;-1:-1:-1;;;;;6265:32:87;;;1884:56:10;;;6247:51:87;6314:18;;;6307:34;6220:18;;1884:56:10;6073:274:87;2451:179:10;2517:7;711:22;731:2;-1:-1:-1;;711:22:10;:::i;:::-;2539:19;;:37;:86;;2606:19;;2539:86;;;2579:24;2597:5;2579:17;:24::i;2809:362::-;2900:22;2890:6;:32;;;;;;;;:::i;:::-;;2886:67;;2924:18;:29;;;2886:67;2973:19;2963:6;:29;;;;;;;;:::i;:::-;;2959:61;;2994:15;:26;;;2959:61;3040:23;3030:6;:33;;;;;;;;:::i;:::-;;3026:69;;3065:19;:30;;;3026:69;3115:21;3105:6;:31;;;;;;;;:::i;:::-;;3101:65;;3138:17;:28;;;3101:65;2809:362;;:::o;2634:171::-;2698:7;711:22;731:2;-1:-1:-1;;711:22:10;:::i;:::-;2720:17;;:35;:80;;2783:17;;2720:80;;;2758:22;2774:5;2758:15;:22::i;908:132:75:-;979:13;:11;:13::i;:::-;956:12;:37;;-1:-1:-1;;;;;956:37:75;;;;-1:-1:-1;;;;;;999:36:75;;;;;;;-1:-1:-1;;;1019:15:75;999:36;;;;;;908:132::o;670:63:10:-;711:22;731:2;-1:-1:-1;;711:22:10;:::i;:::-;670:63;:::o;11191:213:34:-;11288:7;11314:83;11328:13;:11;:13::i;:::-;:17;;11344:1;11328:17;:::i;:::-;11363:23;13365:5;11363:2;:23;:::i;:::-;2881:12:32;;11347:39:34;;;;:::i;:::-;11314:6;;:83;11388:8;11314:13;:83::i;8630:128:32:-;8714:37;8723:5;8730:7;8739:5;8746:4;8714:8;:37::i;:::-;8630:128;;;:::o;10854:213:34:-;10951:7;10977:83;11007:23;10951:7;11007:2;:23;:::i;:::-;2881:12:32;;10991:39:34;;;;:::i;:::-;11032:13;:11;:13::i;:::-;:17;;11048:1;11032:17;:::i;10321:476:32:-;-1:-1:-1;;;;;3561:18:32;;;10420:24;3561:18;;;:11;:18;;;;;;;;:27;;;;;;;;;;-1:-1:-1;;10486:36:32;;10482:309;;;10561:5;10542:16;:24;10538:130;;;10620:7;10629:16;10647:5;10593:60;;-1:-1:-1;;;10593:60:32;;;;;;;;;;:::i;10538:130::-;10709:57;10718:5;10725:7;10753:5;10734:16;:24;10760:5;10709:8;:57::i;:::-;10410:387;10321:476;;;:::o;5297:300::-;-1:-1:-1;;;;;5380:18:32;;5376:86;;5421:30;;-1:-1:-1;;;5421:30:32;;5448:1;5421:30;;;2239:51:87;2212:18;;5421:30:32;2093:203:87;5376:86:32;-1:-1:-1;;;;;5475:16:32;;5471:86;;5514:32;;-1:-1:-1;;;5514:32:32;;5543:1;5514:32;;;2239:51:87;2212:18;;5514:32:32;2093:203:87;5471:86:32;5566:24;5574:4;5580:2;5584:5;5566:7;:24::i;452:200:75:-;568:48;583:6;591:8;601:6;609;568:14;:48::i;:::-;622:25;:23;:25::i;656:248::-;812:56;828:6;836:8;846:5;853:6;861;812:15;:56::i;:::-;874:25;:23;:25::i;8001:129:34:-;8066:7;8092:31;8106:16;8116:5;8106:9;:16::i;8165:112::-;-1:-1:-1;;;;;3024:18:32;;8228:7:34;3024:18:32;;;;;;;;;;;8254:16:34;2933:116:32;11070:238:47;11171:7;11225:76;11241:26;11258:8;11241:16;:26::i;:::-;:59;;;;;11299:1;11284:11;11271:25;;;;;:::i;:::-;11281:1;11278;11271:25;:29;11241:59;34914:9:48;34907:17;;34795:145;11225:76:47;11197:25;11204:1;11207;11210:11;11197:6;:25::i;:::-;:104;;;;:::i;9607:432:32:-;-1:-1:-1;;;;;9719:19:32;;9715:89;;9761:32;;-1:-1:-1;;;9761:32:32;;9790:1;9761:32;;;2239:51:87;2212:18;;9761:32:32;2093:203:87;9715:89:32;-1:-1:-1;;;;;9817:21:32;;9813:90;;9861:31;;-1:-1:-1;;;9861:31:32;;9889:1;9861:31;;;2239:51:87;2212:18;;9861:31:32;2093:203:87;9813:90:32;-1:-1:-1;;;;;9912:18:32;;;;;;;:11;:18;;;;;;;;:27;;;;;;;;;:35;;;9957:76;;;;10007:7;-1:-1:-1;;;;;9991:31:32;10000:5;-1:-1:-1;;;;;9991:31:32;;10016:5;9991:31;;;;160:25:87;;148:2;133:18;;14:177;9991:31:32;;;;;;;;9607:432;;;;:::o;5912:1107::-;-1:-1:-1;;;;;6001:18:32;;5997:540;;6153:5;6137:12;;:21;;;;;;;:::i;:::-;;;;-1:-1:-1;5997:540:32;;-1:-1:-1;5997:540:32;;-1:-1:-1;;;;;6211:15:32;;6189:19;6211:15;;;;;;;;;;;6244:19;;;6240:115;;;6315:4;6321:11;6334:5;6290:50;;-1:-1:-1;;;6290:50:32;;;;;;;;;;:::i;6240:115::-;-1:-1:-1;;;;;6475:15:32;;:9;:15;;;;;;;;;;6493:19;;;;6475:37;;5997:540;-1:-1:-1;;;;;6551:16:32;;6547:425;;6714:12;:21;;;;;;;6547:425;;;-1:-1:-1;;;;;6925:13:32;;:9;:13;;;;;;;;;;:22;;;;;;6547:425;7002:2;-1:-1:-1;;;;;6987:25:32;6996:4;-1:-1:-1;;;;;6987:25:32;;7006:5;6987:25;;;;160::87;;148:2;133:18;;14:177;6987:25:32;;;;;;;;5912:1107;;;:::o;1180:198:10:-;891:7;;;;890:8;921:13;932:1;891:7;921:8;891:7;921:13;:::i;:::-;914:21;;;:::i;:::-;882:55;;;;;-1:-1:-1;;;882:55:10;;-1:-1:-1;;;;;;9160:33:87;;;882:55:10;;;9142:52:87;9115:18;;882:55:10;8998:202:87;882:55:10;;1325:48:::1;1340:6;1348:8;1358:6;1366;1325:14;:48::i;1382:226::-:0;891:7;;;;890:8;921:13;932:1;891:7;921:8;891:7;921:13;:::i;:::-;914:21;;;:::i;:::-;882:55;;;;;-1:-1:-1;;;882:55:10;;-1:-1:-1;;;;;;9160:33:87;;;882:55:10;;;9142:52:87;9115:18;;882:55:10;8998:202:87;882:55:10;;1547:56:::1;1563:6;1571:8;1581:5;1588:6;1596;1547:15;:56::i;32036:122:47:-:0;32104:4;32145:1;32133:8;32127:15;;;;;;;;:::i;:::-;:19;;;;:::i;:::-;:24;;32150:1;32127:24;32120:31;;32036:122;;;:::o;7258:3683::-;7340:14;7391:12;7405:11;7420:12;7427:1;7430;7420:6;:12::i;:::-;7390:42;;;;7514:4;7522:1;7514:9;7510:365;;7849:11;7843:3;:17;;;;;:::i;:::-;;7836:24;;;;;;7510:365;8000:4;7985:11;:19;7981:142;;8024:84;5328:5;8044:16;;5327:36;940:4:43;5322:42:47;8024:11;:84::i;:::-;8375:17;8526:11;8523:1;8520;8513:25;8918:12;8948:15;;;8933:31;;9083:22;;;;;9816:1;9797;:15;;9796:21;;10049;;;10045:25;;10034:36;10119:21;;;10115:25;;10104:36;10191:21;;;10187:25;;10176:36;10262:21;;;10258:25;;10247:36;10335:21;;;10331:25;;10320:36;10409:21;;;10405:25;;;10394:36;9325:12;;;;9321:23;;;9346:1;9317:31;8638:18;;;8628:29;;;9432:11;;;;8681:19;;;;9176:14;;;;9425:18;;;;10884:13;;-1:-1:-1;;7258:3683:47;;;;;:::o;11468:841:34:-;12138:74;7143:6;12182;12198:4;12205:6;12138:26;:74::i;:::-;12222:23;12228:8;12238:6;12222:5;:23::i;:::-;12277:8;-1:-1:-1;;;;;12261:41:34;12269:6;-1:-1:-1;;;;;12261:41:34;;12287:6;12295;12261:41;;;;;;9638:25:87;;;9694:2;9679:18;;9672:34;9626:2;9611:18;;9464:248;12376:925:34;12563:5;-1:-1:-1;;;;;12553:15:34;:6;-1:-1:-1;;;;;12553:15:34;;12549:84;;12584:38;12600:5;12607:6;12615;12584:15;:38::i;:::-;13142:20;13148:5;13155:6;13142:5;:20::i;:::-;13172:57;7143:6;13212:8;13222:6;13172:22;:57::i;:::-;13272:5;-1:-1:-1;;;;;13245:49:34;13262:8;-1:-1:-1;;;;;13245:49:34;13254:6;-1:-1:-1;;;;;13245:49:34;;13279:6;13287;13245:49;;;;;;9638:25:87;;;9694:2;9679:18;;9672:34;9626:2;9611:18;;9464:248;13245:49:34;;;;;;;;12376:925;;;;;:::o;1027:550:47:-;1088:12;;-1:-1:-1;;1471:1:47;1468;1461:20;1501:9;;;;1549:11;;;1535:12;;;;1531:30;;;;;1027:550;-1:-1:-1;;1027:550:47:o;1776:194:43:-;1881:10;1875:4;1868:24;1918:4;1912;1905:18;1949:4;1943;1936:18;1662:232:36;1767:47;1785:5;1792:4;1798:2;1802:5;1809:4;1767:17;:47::i;:::-;1762:126;;1837:40;;-1:-1:-1;;;1837:40:36;;-1:-1:-1;;;;;2257:32:87;;1837:40:36;;;2239:51:87;2212:18;;1837:40:36;2093:203:87;7362:208:32;-1:-1:-1;;;;;7432:21:32;;7428:91;;7476:32;;-1:-1:-1;;;7476:32:32;;7505:1;7476:32;;;2239:51:87;2212:18;;7476:32:32;2093:203:87;7428:91:32;7528:35;7544:1;7548:7;7557:5;7528:7;:35::i;7888:206::-;-1:-1:-1;;;;;7958:21:32;;7954:89;;8002:30;;-1:-1:-1;;;8002:30:32;;8029:1;8002:30;;;2239:51:87;2212:18;;8002:30:32;2093:203:87;7954:89:32;8052:35;8060:7;8077:1;8081:5;8052:7;:35::i;1219:204:36:-;1306:37;1320:5;1327:2;1331:5;1338:4;1306:13;:37::i;:::-;1301:116;;1366:40;;-1:-1:-1;;;1366:40:36;;-1:-1:-1;;;;;2257:32:87;;1366:40:36;;;2239:51:87;2212:18;;1366:40:36;2093:203:87;10165:1393:36;10460:4;10454:11;-1:-1:-1;;;10323:12:36;10478:22;;;-1:-1:-1;;;;;10526:26:36;;;10520:4;10513:40;10579:24;;10573:4;10566:38;10624:4;10617:19;;;10323:12;10700:4;10323:12;10688:4;10323:12;;10672:5;10665;10660:45;10649:56;;10917:1;10910:4;10904:11;10901:18;10892:7;10888:32;10878:606;;11049:6;11039:7;11032:15;11028:28;11025:165;;;11105:16;11099:4;11094:3;11079:43;11155:16;11150:3;11143:29;11025:165;11466:1;11458:5;11446:18;11443:25;11424:16;11417:24;11413:56;11404:7;11400:70;11389:81;;10878:606;11504:4;11497:17;-1:-1:-1;11540:1:36;11534:4;11527:15;10165:1393;;-1:-1:-1;;;;;10165:1393:36:o;8373:1244::-;8600:4;8594:11;-1:-1:-1;;;8467:12:36;8618:22;;;-1:-1:-1;;;;;8666:24:36;;8660:4;8653:38;8711:4;8704:19;;;8467:12;8787:4;8467:12;8775:4;8467:12;;8759:5;8752;8747:45;8736:56;;9004:1;8997:4;8991:11;8988:18;8979:7;8975:32;8965:606;;9136:6;9126:7;9119:15;9115:28;9112:165;;;9192:16;9186:4;9181:3;9166:43;9242:16;9237:3;9230:29;9112:165;9553:1;9545:5;9533:18;9530:25;9511:16;9504:24;9500:56;9491:7;9487:70;9476:81;;8965:606;9591:4;9584:17;-1:-1:-1;8373:1244:36;;-1:-1:-1;;;;8373:1244:36:o;196:418:87:-;345:2;334:9;327:21;308:4;377:6;371:13;420:6;415:2;404:9;400:18;393:34;479:6;474:2;466:6;462:15;457:2;446:9;442:18;436:50;535:1;530:2;521:6;510:9;506:22;502:31;495:42;605:2;598;594:7;589:2;581:6;577:15;573:29;562:9;558:45;554:54;546:62;;;196:418;;;;:::o;619:226::-;678:6;731:2;719:9;710:7;706:23;702:32;699:52;;;747:1;744;737:12;699:52;-1:-1:-1;792:23:87;;619:226;-1:-1:-1;619:226:87:o;850:173::-;918:20;;-1:-1:-1;;;;;967:31:87;;957:42;;947:70;;1013:1;1010;1003:12;947:70;850:173;;;:::o;1028:300::-;1096:6;1104;1157:2;1145:9;1136:7;1132:23;1128:32;1125:52;;;1173:1;1170;1163:12;1125:52;1196:29;1215:9;1196:29;:::i;:::-;1186:39;1294:2;1279:18;;;;1266:32;;-1:-1:-1;;;1028:300:87:o;1525:374::-;1602:6;1610;1618;1671:2;1659:9;1650:7;1646:23;1642:32;1639:52;;;1687:1;1684;1677:12;1639:52;1710:29;1729:9;1710:29;:::i;:::-;1700:39;;1758:38;1792:2;1781:9;1777:18;1758:38;:::i;:::-;1525:374;;1748:48;;-1:-1:-1;;;1865:2:87;1850:18;;;;1837:32;;1525:374::o;2301:186::-;2360:6;2413:2;2401:9;2392:7;2388:23;2384:32;2381:52;;;2429:1;2426;2419:12;2381:52;2452:29;2471:9;2452:29;:::i;2492:300::-;2560:6;2568;2621:2;2609:9;2600:7;2596:23;2592:32;2589:52;;;2637:1;2634;2627:12;2589:52;2682:23;;;-1:-1:-1;2748:38:87;2782:2;2767:18;;2748:38;:::i;:::-;2738:48;;2492:300;;;;;:::o;2797:273::-;2853:6;2906:2;2894:9;2885:7;2881:23;2877:32;2874:52;;;2922:1;2919;2912:12;2874:52;2961:9;2948:23;3014:5;3007:13;3000:21;2993:5;2990:32;2980:60;;3036:1;3033;3026:12;3075:374;3152:6;3160;3168;3221:2;3209:9;3200:7;3196:23;3192:32;3189:52;;;3237:1;3234;3227:12;3189:52;3282:23;;;-1:-1:-1;3348:38:87;3382:2;3367:18;;3348:38;:::i;:::-;3338:48;;3405:38;3439:2;3428:9;3424:18;3405:38;:::i;:::-;3395:48;;3075:374;;;;;:::o;4066:395::-;4153:6;4161;4214:2;4202:9;4193:7;4189:23;4185:32;4182:52;;;4230:1;4227;4220:12;4182:52;4269:9;4256:23;4308:1;4301:5;4298:12;4288:40;;4324:1;4321;4314:12;4466:260;4534:6;4542;4595:2;4583:9;4574:7;4570:23;4566:32;4563:52;;;4611:1;4608;4601:12;4563:52;4634:29;4653:9;4634:29;:::i;:::-;4624:39;;4682:38;4716:2;4705:9;4701:18;4682:38;:::i;4731:184::-;4801:6;4854:2;4842:9;4833:7;4829:23;4825:32;4822:52;;;4870:1;4867;4860:12;4822:52;-1:-1:-1;4893:16:87;;4731:184;-1:-1:-1;4731:184:87:o;4920:380::-;4999:1;4995:12;;;;5042;;;5063:61;;5117:4;5109:6;5105:17;5095:27;;5063:61;5170:2;5162:6;5159:14;5139:18;5136:38;5133:161;;5216:10;5211:3;5207:20;5204:1;5197:31;5251:4;5248:1;5241:15;5279:4;5276:1;5269:15;5133:161;;4920:380;;;:::o;5305:127::-;5366:10;5361:3;5357:20;5354:1;5347:31;5397:4;5394:1;5387:15;5421:4;5418:1;5411:15;5437:148;5525:4;5504:12;;;5518;;;5500:31;;5543:13;;5540:39;;;5559:18;;:::i;5590:128::-;5657:9;;;5678:11;;;5675:37;;;5692:18;;:::i;5723:345::-;-1:-1:-1;;;;;5943:32:87;;;;5925:51;;6007:2;5992:18;;5985:34;;;;6050:2;6035:18;;6028:34;5913:2;5898:18;;5723:345::o;6352:136::-;6387:3;-1:-1:-1;;;6408:22:87;;6405:48;;6433:18;;:::i;:::-;-1:-1:-1;6473:1:87;6469:13;;6352:136::o;6493:127::-;6554:10;6549:3;6545:20;6542:1;6535:31;6585:4;6582:1;6575:15;6609:4;6606:1;6599:15;6625:125;6690:9;;;6711:10;;;6708:36;;;6724:18;;:::i;6755:375::-;6843:1;6861:5;6875:249;6896:1;6886:8;6883:15;6875:249;;;6946:4;6941:3;6937:14;6931:4;6928:24;6925:50;;;6955:18;;:::i;:::-;7005:1;6995:8;6991:16;6988:49;;;7019:16;;;;6988:49;7102:1;7098:16;;;;;7058:15;;6875:249;;;6755:375;;;;;;:::o;7135:902::-;7184:5;7214:8;7204:80;;-1:-1:-1;7255:1:87;7269:5;;7204:80;7303:4;7293:76;;-1:-1:-1;7340:1:87;7354:5;;7293:76;7385:4;7403:1;7398:59;;;;7471:1;7466:174;;;;7378:262;;7398:59;7428:1;7419:10;;7442:5;;;7466:174;7503:3;7493:8;7490:17;7487:43;;;7510:18;;:::i;:::-;-1:-1:-1;;7566:1:87;7552:16;;7625:5;;7378:262;;7724:2;7714:8;7711:16;7705:3;7699:4;7696:13;7692:36;7686:2;7676:8;7673:16;7668:2;7662:4;7659:12;7655:35;7652:77;7649:203;;;-1:-1:-1;7761:19:87;;;7837:5;;7649:203;7884:42;-1:-1:-1;;7909:8:87;7903:4;7884:42;:::i;:::-;7962:6;7958:1;7954:6;7950:19;7941:7;7938:32;7935:58;;;7973:18;;:::i;:::-;8011:20;;7135:902;-1:-1:-1;;;7135:902:87:o;8042:140::-;8100:5;8129:47;8170:4;8160:8;8156:19;8150:4;8129:47;:::i;8187:127::-;8248:10;8243:3;8239:20;8236:1;8229:31;8279:4;8276:1;8269:15;8303:4;8300:1;8293:15;8319:331;8424:9;8435;8477:8;8465:10;8462:24;8459:44;;;8499:1;8496;8489:12;8459:44;8528:6;8518:8;8515:20;8512:40;;;8548:1;8545;8538:12;8512:40;-1:-1:-1;;8574:23:87;;;8619:25;;;;;-1:-1:-1;8319:331:87:o;8655:338::-;8775:19;;-1:-1:-1;;;;;;8812:29:87;;;8861:1;8853:10;;8850:137;;;-1:-1:-1;;;;;;8922:1:87;8918:11;;;8915:1;8911:19;8907:46;;;8899:55;;8895:82;;-1:-1:-1;8850:137:87;;8655:338;;;;:::o;9205:254::-;9235:1;9269:4;9266:1;9262:12;9293:3;9283:134;;9339:10;9334:3;9330:20;9327:1;9320:31;9374:4;9371:1;9364:15;9402:4;9399:1;9392:15;9283:134;9449:3;9442:4;9439:1;9435:12;9431:22;9426:27;;;9205:254;;;;:::o"},"methodIdentifiers":{"OVERRIDE_UNSET()":"f3c0b892","_totalAssets()":"ce04bebb","allowance(address,address)":"dd62ed3e","approve(address,uint256)":"095ea7b3","asset()":"38d52e0f","balanceOf(address)":"70a08231","broken()":"7fb1ad62","convertToAssets(uint256)":"07a2d13a","convertToShares(uint256)":"c6e6f592","decimals()":"313ce567","deposit(uint256,address)":"6e553f65","discreteEarning(int256)":"c7361ed2","lastUpdate()":"c0463711","maxDeposit(address)":"402d267d","maxMint(address)":"c63d75b6","maxRedeem(address)":"d905777e","maxWithdraw(address)":"ce96cb77","mint(uint256,address)":"94bf804d","name()":"06fdde03","overrideMaxDeposit()":"39d88aff","overrideMaxMint()":"034548cd","overrideMaxRedeem()":"cc7fcc60","overrideMaxWithdraw()":"38359018","previewDeposit(uint256)":"ef8b30f7","previewMint(uint256)":"b3d7f6b9","previewRedeem(uint256)":"4cdad506","previewWithdraw(uint256)":"0a28a477","redeem(uint256,address,address)":"ba087652","setBroken(bool)":"86de9e4f","setOverride(uint8,uint256)":"d6dd0234","symbol()":"95d89b41","totalAssets()":"01e1d114","totalSupply()":"18160ddd","transfer(address,uint256)":"a9059cbb","transferFrom(address,address,uint256)":"23b872dd","updateCachedTotalAssets()":"f0fe6ef8","withdraw(uint256,address,address)":"b460af94"}},"metadata":"{\"compiler\":{\"version\":\"0.8.30+commit.73712a01\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"inputs\":[{\"internalType\":\"string\",\"name\":\"name_\",\"type\":\"string\"},{\"internalType\":\"string\",\"name\":\"symbol_\",\"type\":\"string\"},{\"internalType\":\"contract IERC20Metadata\",\"name\":\"asset_\",\"type\":\"address\"}],\"stateMutability\":\"nonpayable\",\"type\":\"constructor\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"spender\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"allowance\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"needed\",\"type\":\"uint256\"}],\"name\":\"ERC20InsufficientAllowance\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"sender\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"balance\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"needed\",\"type\":\"uint256\"}],\"name\":\"ERC20InsufficientBalance\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"approver\",\"type\":\"address\"}],\"name\":\"ERC20InvalidApprover\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"receiver\",\"type\":\"address\"}],\"name\":\"ERC20InvalidReceiver\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"sender\",\"type\":\"address\"}],\"name\":\"ERC20InvalidSender\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"spender\",\"type\":\"address\"}],\"name\":\"ERC20InvalidSpender\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"receiver\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"assets\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"max\",\"type\":\"uint256\"}],\"name\":\"ERC4626ExceededMaxDeposit\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"receiver\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"shares\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"max\",\"type\":\"uint256\"}],\"name\":\"ERC4626ExceededMaxMint\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"shares\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"max\",\"type\":\"uint256\"}],\"name\":\"ERC4626ExceededMaxRedeem\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"assets\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"max\",\"type\":\"uint256\"}],\"name\":\"ERC4626ExceededMaxWithdraw\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"token\",\"type\":\"address\"}],\"name\":\"SafeERC20FailedOperation\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"bytes4\",\"name\":\"selector\",\"type\":\"bytes4\"}],\"name\":\"VaultIsBroken\",\"type\":\"error\"},{\"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\":\"sender\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"assets\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"shares\",\"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\":\"sender\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"receiver\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"assets\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"shares\",\"type\":\"uint256\"}],\"name\":\"Withdraw\",\"type\":\"event\"},{\"inputs\":[],\"name\":\"OVERRIDE_UNSET\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"_totalAssets\",\"outputs\":[{\"internalType\":\"uint128\",\"name\":\"\",\"type\":\"uint128\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"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\":\"value\",\"type\":\"uint256\"}],\"name\":\"approve\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"asset\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"}],\"name\":\"balanceOf\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"broken\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"shares\",\"type\":\"uint256\"}],\"name\":\"convertToAssets\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"assets\",\"type\":\"uint256\"}],\"name\":\"convertToShares\",\"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\":\"assets\",\"type\":\"uint256\"},{\"internalType\":\"address\",\"name\":\"receiver\",\"type\":\"address\"}],\"name\":\"deposit\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"int256\",\"name\":\"assets\",\"type\":\"int256\"}],\"name\":\"discreteEarning\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"lastUpdate\",\"outputs\":[{\"internalType\":\"uint64\",\"name\":\"\",\"type\":\"uint64\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"}],\"name\":\"maxDeposit\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"}],\"name\":\"maxMint\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"}],\"name\":\"maxRedeem\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"}],\"name\":\"maxWithdraw\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"shares\",\"type\":\"uint256\"},{\"internalType\":\"address\",\"name\":\"receiver\",\"type\":\"address\"}],\"name\":\"mint\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"name\",\"outputs\":[{\"internalType\":\"string\",\"name\":\"\",\"type\":\"string\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"overrideMaxDeposit\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"overrideMaxMint\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"overrideMaxRedeem\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"overrideMaxWithdraw\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"assets\",\"type\":\"uint256\"}],\"name\":\"previewDeposit\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"shares\",\"type\":\"uint256\"}],\"name\":\"previewMint\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"shares\",\"type\":\"uint256\"}],\"name\":\"previewRedeem\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"assets\",\"type\":\"uint256\"}],\"name\":\"previewWithdraw\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"shares\",\"type\":\"uint256\"},{\"internalType\":\"address\",\"name\":\"receiver\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"}],\"name\":\"redeem\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bool\",\"name\":\"broken_\",\"type\":\"bool\"}],\"name\":\"setBroken\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"enum TestERC4626.OverrideOption\",\"name\":\"option\",\"type\":\"uint8\"},{\"internalType\":\"uint256\",\"name\":\"newValue\",\"type\":\"uint256\"}],\"name\":\"setOverride\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"symbol\",\"outputs\":[{\"internalType\":\"string\",\"name\":\"\",\"type\":\"string\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"totalAssets\",\"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\":\"to\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"value\",\"type\":\"uint256\"}],\"name\":\"transfer\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"from\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"value\",\"type\":\"uint256\"}],\"name\":\"transferFrom\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"updateCachedTotalAssets\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"assets\",\"type\":\"uint256\"},{\"internalType\":\"address\",\"name\":\"receiver\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"}],\"name\":\"withdraw\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"}],\"devdoc\":{\"errors\":{\"ERC20InsufficientAllowance(address,uint256,uint256)\":[{\"details\":\"Indicates a failure with the `spender`\\u2019s `allowance`. Used in transfers.\",\"params\":{\"allowance\":\"Amount of tokens a `spender` is allowed to operate with.\",\"needed\":\"Minimum amount required to perform a transfer.\",\"spender\":\"Address that may be allowed to operate on tokens without being their owner.\"}}],\"ERC20InsufficientBalance(address,uint256,uint256)\":[{\"details\":\"Indicates an error related to the current `balance` of a `sender`. Used in transfers.\",\"params\":{\"balance\":\"Current balance for the interacting account.\",\"needed\":\"Minimum amount required to perform a transfer.\",\"sender\":\"Address whose tokens are being transferred.\"}}],\"ERC20InvalidApprover(address)\":[{\"details\":\"Indicates a failure with the `approver` of a token to be approved. Used in approvals.\",\"params\":{\"approver\":\"Address initiating an approval operation.\"}}],\"ERC20InvalidReceiver(address)\":[{\"details\":\"Indicates a failure with the token `receiver`. Used in transfers.\",\"params\":{\"receiver\":\"Address to which tokens are being transferred.\"}}],\"ERC20InvalidSender(address)\":[{\"details\":\"Indicates a failure with the token `sender`. Used in transfers.\",\"params\":{\"sender\":\"Address whose tokens are being transferred.\"}}],\"ERC20InvalidSpender(address)\":[{\"details\":\"Indicates a failure with the `spender` to be approved. Used in approvals.\",\"params\":{\"spender\":\"Address that may be allowed to operate on tokens without being their owner.\"}}],\"ERC4626ExceededMaxDeposit(address,uint256,uint256)\":[{\"details\":\"Attempted to deposit more assets than the max amount for `receiver`.\"}],\"ERC4626ExceededMaxMint(address,uint256,uint256)\":[{\"details\":\"Attempted to mint more shares than the max amount for `receiver`.\"}],\"ERC4626ExceededMaxRedeem(address,uint256,uint256)\":[{\"details\":\"Attempted to redeem more shares than the max amount for `receiver`.\"}],\"ERC4626ExceededMaxWithdraw(address,uint256,uint256)\":[{\"details\":\"Attempted to withdraw more assets than the max amount for `receiver`.\"}],\"SafeERC20FailedOperation(address)\":[{\"details\":\"An operation with an ERC-20 token failed.\"}]},\"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\":\"See {IERC20-approve}. NOTE: If `value` is the maximum `uint256`, the allowance is not updated on `transferFrom`. This is semantically equivalent to an infinite approval. Requirements: - `spender` cannot be the zero address.\"},\"asset()\":{\"details\":\"Returns the address of the underlying token used for the Vault for accounting, depositing, and withdrawing. - MUST be an ERC-20 token contract. - MUST NOT revert.\"},\"balanceOf(address)\":{\"details\":\"Returns the value of tokens owned by `account`.\"},\"convertToAssets(uint256)\":{\"details\":\"Returns the amount of assets that the Vault would exchange for the amount of shares provided, in an ideal scenario where all the conditions are met. - MUST NOT be inclusive of any fees that are charged against assets in the Vault. - MUST NOT show any variations depending on the caller. - MUST NOT reflect slippage or other on-chain conditions, when performing the actual exchange. - MUST NOT revert. NOTE: This calculation MAY NOT reflect the \\u201cper-user\\u201d price-per-share, and instead should reflect the \\u201caverage-user\\u2019s\\u201d price-per-share, meaning what the average user should expect to see when exchanging to and from.\"},\"convertToShares(uint256)\":{\"details\":\"Returns the amount of shares that the Vault would exchange for the amount of assets provided, in an ideal scenario where all the conditions are met. - MUST NOT be inclusive of any fees that are charged against assets in the Vault. - MUST NOT show any variations depending on the caller. - MUST NOT reflect slippage or other on-chain conditions, when performing the actual exchange. - MUST NOT revert. NOTE: This calculation MAY NOT reflect the \\u201cper-user\\u201d price-per-share, and instead should reflect the \\u201caverage-user\\u2019s\\u201d price-per-share, meaning what the average user should expect to see when exchanging to and from.\"},\"decimals()\":{\"details\":\"Decimals are computed by adding the decimal offset on top of the underlying asset's decimals. This \\\"original\\\" value is cached during construction of the vault contract. If this read operation fails (e.g., the asset has not been created yet), a default of 18 is used to represent the underlying asset's decimals. See {IERC20Metadata-decimals}.\"},\"deposit(uint256,address)\":{\"details\":\"Deposit `assets` underlying tokens and send the corresponding number of vault shares (`shares`) to `receiver`. - MUST emit the Deposit event. - MAY support an additional flow in which the underlying tokens are owned by the Vault contract before the   deposit execution, and are accounted for during deposit. - MUST revert if all of assets cannot be deposited (due to deposit limit being reached, slippage, the user not   approving enough underlying tokens to the Vault contract, etc). NOTE: most implementations will require pre-approval of the Vault with the Vault\\u2019s underlying asset token.\"},\"maxRedeem(address)\":{\"details\":\"Returns the maximum amount of Vault shares that can be redeemed from the owner balance in the Vault, through a redeem call. - MUST return a limited value if owner is subject to some withdrawal limit or timelock. - MUST return balanceOf(owner) if owner is not subject to any withdrawal limit or timelock. - MUST NOT revert.\"},\"maxWithdraw(address)\":{\"details\":\"Returns the maximum amount of the underlying asset that can be withdrawn from the owner balance in the Vault, through a withdraw call. - MUST return a limited value if owner is subject to some withdrawal limit or timelock. - MUST NOT revert.\"},\"mint(uint256,address)\":{\"details\":\"Mints exactly `shares` vault shares to `receiver` in exchange for `assets` underlying tokens. - MUST emit the Deposit event. - MAY support an additional flow in which the underlying tokens are owned by the Vault contract before the mint   execution, and are accounted for during mint. - MUST revert if all of shares cannot be minted (due to deposit limit being reached, slippage, the user not   approving enough underlying tokens to the Vault contract, etc). NOTE: most implementations will require pre-approval of the Vault with the Vault\\u2019s underlying asset token.\"},\"name()\":{\"details\":\"Returns the name of the token.\"},\"previewDeposit(uint256)\":{\"details\":\"Allows an on-chain or off-chain user to simulate the effects of their deposit at the current block, given current on-chain conditions. - MUST return as close to and no more than the exact amount of Vault shares that would be minted in a deposit   call in the same transaction. I.e. deposit should return the same or more shares as previewDeposit if called   in the same transaction. - MUST NOT account for deposit limits like those returned from maxDeposit and should always act as though the   deposit would be accepted, regardless if the user has enough tokens approved, etc. - MUST be inclusive of deposit fees. Integrators should be aware of the existence of deposit fees. - MUST NOT revert. NOTE: any unfavorable discrepancy between convertToShares and previewDeposit SHOULD be considered slippage in share price or some other type of condition, meaning the depositor will lose assets by depositing.\"},\"previewMint(uint256)\":{\"details\":\"Allows an on-chain or off-chain user to simulate the effects of their mint at the current block, given current on-chain conditions. - MUST return as close to and no fewer than the exact amount of assets that would be deposited in a mint call   in the same transaction. I.e. mint should return the same or fewer assets as previewMint if called in the   same transaction. - MUST NOT account for mint limits like those returned from maxMint and should always act as though the mint   would be accepted, regardless if the user has enough tokens approved, etc. - MUST be inclusive of deposit fees. Integrators should be aware of the existence of deposit fees. - MUST NOT revert. NOTE: any unfavorable discrepancy between convertToAssets and previewMint SHOULD be considered slippage in share price or some other type of condition, meaning the depositor will lose assets by minting.\"},\"previewRedeem(uint256)\":{\"details\":\"Allows an on-chain or off-chain user to simulate the effects of their redemption at the current block, given current on-chain conditions. - MUST return as close to and no more than the exact amount of assets that would be withdrawn in a redeem call   in the same transaction. I.e. redeem should return the same or more assets as previewRedeem if called in the   same transaction. - MUST NOT account for redemption limits like those returned from maxRedeem and should always act as though the   redemption would be accepted, regardless if the user has enough shares, etc. - MUST be inclusive of withdrawal fees. Integrators should be aware of the existence of withdrawal fees. - MUST NOT revert. NOTE: any unfavorable discrepancy between convertToAssets and previewRedeem SHOULD be considered slippage in share price or some other type of condition, meaning the depositor will lose assets by redeeming.\"},\"previewWithdraw(uint256)\":{\"details\":\"Allows an on-chain or off-chain user to simulate the effects of their withdrawal at the current block, given current on-chain conditions. - MUST return as close to and no fewer than the exact amount of Vault shares that would be burned in a withdraw   call in the same transaction. I.e. withdraw should return the same or fewer shares as previewWithdraw if   called   in the same transaction. - MUST NOT account for withdrawal limits like those returned from maxWithdraw and should always act as though   the withdrawal would be accepted, regardless if the user has enough shares, etc. - MUST be inclusive of withdrawal fees. Integrators should be aware of the existence of withdrawal fees. - MUST NOT revert. NOTE: any unfavorable discrepancy between convertToShares and previewWithdraw SHOULD be considered slippage in share price or some other type of condition, meaning the depositor will lose assets by depositing.\"},\"redeem(uint256,address,address)\":{\"details\":\"Burns exactly shares from owner and sends assets of underlying tokens to receiver. - MUST emit the Withdraw event. - MAY support an additional flow in which the underlying tokens are owned by the Vault contract before the   redeem execution, and are accounted for during redeem. - MUST revert if all of shares cannot be redeemed (due to withdrawal limit being reached, slippage, the owner   not having enough shares, etc). NOTE: some implementations will require pre-requesting to the Vault before a withdrawal may be performed. Those methods should be performed separately.\"},\"symbol()\":{\"details\":\"Returns the symbol of the token, usually a shorter version of the name.\"},\"totalAssets()\":{\"details\":\"Returns the total amount of the underlying asset that is \\u201cmanaged\\u201d by Vault. - SHOULD include any compounding that occurs from yield. - MUST be inclusive of any fees that are charged against assets in the Vault. - MUST NOT revert.\"},\"totalSupply()\":{\"details\":\"Returns the value of tokens in existence.\"},\"transfer(address,uint256)\":{\"details\":\"See {IERC20-transfer}. Requirements: - `to` cannot be the zero address. - the caller must have a balance of at least `value`.\"},\"transferFrom(address,address,uint256)\":{\"details\":\"See {IERC20-transferFrom}. Skips emitting an {Approval} event indicating an allowance update. This is not required by the ERC. See {xref-ERC20-_approve-address-address-uint256-bool-}[_approve]. NOTE: Does not update the allowance if the current allowance is the maximum `uint256`. Requirements: - `from` and `to` cannot be the zero address. - `from` must have a balance of at least `value`. - the caller must have allowance for ``from``'s tokens of at least `value`.\"},\"withdraw(uint256,address,address)\":{\"details\":\"Burns shares from owner and sends exactly assets of underlying tokens to receiver. - MUST emit the Withdraw event. - MAY support an additional flow in which the underlying tokens are owned by the Vault contract before the   withdraw execution, and are accounted for during withdraw. - MUST revert if all of assets cannot be withdrawn (due to withdrawal limit being reached, slippage, the owner   not having enough shares, etc). Note that some implementations will require pre-requesting to the Vault before a withdrawal may be performed. Those methods should be performed separately.\"}},\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{},\"version\":1}},\"settings\":{\"compilationTarget\":{\"contracts/mock/VaultV2Mock.sol\":\"VaultV2Mock\"},\"evmVersion\":\"prague\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"enabled\":true,\"runs\":200},\"remappings\":[]},\"sources\":{\"@ensuro/utils/contracts/TestERC4626.sol\":{\"keccak256\":\"0x688032ec63b79e352f3eb8ceb1a358d9b61ff630a346807b1e9a017de0200150\",\"license\":\"Apache-2.0\",\"urls\":[\"bzz-raw://6d40c7e350166b37b8f5301916939a752ffe296c30f7413b45b9c6b2c4c8e4ce\",\"dweb:/ipfs/QmWRG5CZsU1jeuoryJZP3Sg1cQU8Mu9C5bB7TwhF2M1ZaQ\"]},\"@openzeppelin/contracts/interfaces/IERC1363.sol\":{\"keccak256\":\"0xd5ea07362ab630a6a3dee4285a74cf2377044ca2e4be472755ad64d7c5d4b69d\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://da5e832b40fc5c3145d3781e2e5fa60ac2052c9d08af7e300dc8ab80c4343100\",\"dweb:/ipfs/QmTzf7N5ZUdh5raqtzbM11yexiUoLC9z3Ws632MCuycq1d\"]},\"@openzeppelin/contracts/interfaces/IERC165.sol\":{\"keccak256\":\"0x0afcb7e740d1537b252cb2676f600465ce6938398569f09ba1b9ca240dde2dfc\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://1c299900ac4ec268d4570ecef0d697a3013cd11a6eb74e295ee3fbc945056037\",\"dweb:/ipfs/Qmab9owJoxcA7vJT5XNayCMaUR1qxqj1NDzzisduwaJMcZ\"]},\"@openzeppelin/contracts/interfaces/IERC20.sol\":{\"keccak256\":\"0x1a6221315ce0307746c2c4827c125d821ee796c74a676787762f4778671d4f44\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://1bb2332a7ee26dd0b0de9b7fe266749f54820c99ab6a3bcb6f7e6b751d47ee2d\",\"dweb:/ipfs/QmcRWpaBeCYkhy68PR3B4AgD7asuQk7PwkWxrvJbZcikLF\"]},\"@openzeppelin/contracts/interfaces/IERC4626.sol\":{\"keccak256\":\"0xece5cbf726293ae6be1fbfade2936f052e1b399ed395ba1e221540ab82b62628\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://a9b97e58e90799e681dccbd4a8e469c6ebc2baf11312ad08f14332646123dd4b\",\"dweb:/ipfs/QmdamCQfxcuYinSNd3Et7VNo3oY98XSv4XCUQyq9xfMNUy\"]},\"@openzeppelin/contracts/interfaces/draft-IERC6093.sol\":{\"keccak256\":\"0x1b88b3fb3d85ba5496d7d5f396f83ee1fddcdd6762059ff65992655b67920998\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://89393bb3212da1c0889601b9706a07b39419ddc4d2faab9eaf6e7f9152cf6a1c\",\"dweb:/ipfs/QmcCfzzxv1Bkdz1c1yF4gQCeYb6Us5BJANnzTFqawfd1HL\"]},\"@openzeppelin/contracts/token/ERC20/ERC20.sol\":{\"keccak256\":\"0x669464167428061ee0f8618b73b3ee90aff8405683e7ddde8cd77dadaa1afe29\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://0dda78587a7358b4fdf6b9fca0fde5a5e34930f36d5268a16028627fc0170195\",\"dweb:/ipfs/QmQ1b6cCceDRWNxti9HifsTCzmVP25Haxs1bWugm52vTqH\"]},\"@openzeppelin/contracts/token/ERC20/IERC20.sol\":{\"keccak256\":\"0x74ed01eb66b923d0d0cfe3be84604ac04b76482a55f9dd655e1ef4d367f95bc2\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://5282825a626cfe924e504274b864a652b0023591fa66f06a067b25b51ba9b303\",\"dweb:/ipfs/QmeCfPykghhMc81VJTrHTC7sF6CRvaA1FXVq2pJhwYp1dV\"]},\"@openzeppelin/contracts/token/ERC20/extensions/ERC4626.sol\":{\"keccak256\":\"0x8a6a0045f0bb52251a9a5d8bb5f4156f4eb3ba8521b1fca6a304befaab3e7d23\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://ebd5125436dbb18ba3646cbdb4a8385a9e2bf28abc9d8178a9e7f31cca65f8b8\",\"dweb:/ipfs/QmPioMpycRKdAetJNYYfWCw36rQuyxNqhgHDFGRVLaPKnT\"]},\"@openzeppelin/contracts/token/ERC20/extensions/IERC20Metadata.sol\":{\"keccak256\":\"0xd6fa4088198f04eef10c5bce8a2f4d60554b7ec4b987f684393c01bf79b94d9f\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://f95ee0bbd4dd3ac730d066ba3e785ded4565e890dbec2fa7d3b9fe3bad9d0d6e\",\"dweb:/ipfs/QmSLr6bHkPFWT7ntj34jmwfyskpwo97T9jZUrk5sz3sdtR\"]},\"@openzeppelin/contracts/token/ERC20/utils/SafeERC20.sol\":{\"keccak256\":\"0x304d732678032a9781ae85c8f204c8fba3d3a5e31c02616964e75cfdc5049098\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://299ced486011781dc98f638059678323c03079fefae1482abaa2135b22fa92d0\",\"dweb:/ipfs/QmbZNbcPTBxNvwChavN2kkZZs7xHhYL7mv51KrxMhsMs3j\"]},\"@openzeppelin/contracts/utils/Context.sol\":{\"keccak256\":\"0x493033a8d1b176a037b2cc6a04dad01a5c157722049bbecf632ca876224dd4b2\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://6a708e8a5bdb1011c2c381c9a5cfd8a9a956d7d0a9dc1bd8bcdaf52f76ef2f12\",\"dweb:/ipfs/Qmax9WHBnVsZP46ZxEMNRQpLQnrdE4dK8LehML1Py8FowF\"]},\"@openzeppelin/contracts/utils/LowLevelCall.sol\":{\"keccak256\":\"0x5b4802a4352474792df3107e961d1cc593e47b820c14f69d3505cb28f5a6a583\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://a6f86fd01f829499fe0545ff5dda07d4521988e88bfe0bf801fc15650921ed56\",\"dweb:/ipfs/QmUUKu4ZDffHAmfkf3asuQfmLTyfpuy2Amdncc3SqfzKPG\"]},\"@openzeppelin/contracts/utils/Memory.sol\":{\"keccak256\":\"0x35feec480590c0ed9c1623df077ba9af406ad57cd9d149ff278c7316d6fe8fe0\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://839967d079db4cd624c3f735a6e911953c0e2347418c016f6a0cc18ed1aa9603\",\"dweb:/ipfs/QmaWxNL8Ymkwerfvq1LNzpbq2PMzTGsnXzqsYExNyvKWka\"]},\"@openzeppelin/contracts/utils/Panic.sol\":{\"keccak256\":\"0xf7fe324703a64fc51702311dc51562d5cb1497734f074e4f483bfb6717572d7a\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://c6a5ff4f9fd8649b7ee20800b7fa387d3465bd77cf20c2d1068cd5c98e1ed57a\",\"dweb:/ipfs/QmVSaVJf9FXFhdYEYeCEfjMVHrxDh5qL4CGkxdMWpQCrqG\"]},\"@openzeppelin/contracts/utils/introspection/IERC165.sol\":{\"keccak256\":\"0x8891738ffe910f0cf2da09566928589bf5d63f4524dd734fd9cedbac3274dd5c\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://971f954442df5c2ef5b5ebf1eb245d7105d9fbacc7386ee5c796df1d45b21617\",\"dweb:/ipfs/QmadRjHbkicwqwwh61raUEapaVEtaLMcYbQZWs9gUkgj3u\"]},\"@openzeppelin/contracts/utils/math/Math.sol\":{\"keccak256\":\"0x09e3f1c72d4c5cbe8e2644ab7313f8f7177533ae2f4c24cdcbbeaf520a73734c\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://93208401215d539fa2d81626b207c1f611def7883d0e447b3b5969ebaa7b3c2c\",\"dweb:/ipfs/QmXPxDnQPx8LAweX5ZJqEcwkvs59kP4c64VVDG1Jjq1mef\"]},\"@openzeppelin/contracts/utils/math/SafeCast.sol\":{\"keccak256\":\"0x195533c86d0ef72bcc06456a4f66a9b941f38eb403739b00f21fd7c1abd1ae54\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://b1d578337048cad08c1c03041cca5978eff5428aa130c781b271ad9e5566e1f8\",\"dweb:/ipfs/QmPFKL2r9CBsMwmUqqdcFPfHZB2qcs9g1HDrPxzWSxomvy\"]},\"contracts/mock/VaultV2Mock.sol\":{\"keccak256\":\"0xb30a21e825f72c95dd07767fc41e591fb6317aefcaa942c1bd908e1d920040b6\",\"license\":\"Apache-2.0\",\"urls\":[\"bzz-raw://f0ab6214c63d273f4a312c5c06c2be66995c2e582d3610d6def10355cc650cb0\",\"dweb:/ipfs/QmZ4extAtMBUt9z33UvJUA7TKBdacTj6U2ytXm664ZeGSJ\"]}},\"version\":1}","storageLayout":{"storage":[{"astId":8109,"contract":"contracts/mock/VaultV2Mock.sol:VaultV2Mock","label":"_balances","offset":0,"slot":"0","type":"t_mapping(t_address,t_uint256)"},{"astId":8115,"contract":"contracts/mock/VaultV2Mock.sol:VaultV2Mock","label":"_allowances","offset":0,"slot":"1","type":"t_mapping(t_address,t_mapping(t_address,t_uint256))"},{"astId":8117,"contract":"contracts/mock/VaultV2Mock.sol:VaultV2Mock","label":"_totalSupply","offset":0,"slot":"2","type":"t_uint256"},{"astId":8119,"contract":"contracts/mock/VaultV2Mock.sol:VaultV2Mock","label":"_name","offset":0,"slot":"3","type":"t_string_storage"},{"astId":8121,"contract":"contracts/mock/VaultV2Mock.sol:VaultV2Mock","label":"_symbol","offset":0,"slot":"4","type":"t_string_storage"},{"astId":2736,"contract":"contracts/mock/VaultV2Mock.sol:VaultV2Mock","label":"_broken","offset":0,"slot":"5","type":"t_bool"},{"astId":2738,"contract":"contracts/mock/VaultV2Mock.sol:VaultV2Mock","label":"overrideMaxDeposit","offset":0,"slot":"6","type":"t_uint256"},{"astId":2740,"contract":"contracts/mock/VaultV2Mock.sol:VaultV2Mock","label":"overrideMaxMint","offset":0,"slot":"7","type":"t_uint256"},{"astId":2742,"contract":"contracts/mock/VaultV2Mock.sol:VaultV2Mock","label":"overrideMaxWithdraw","offset":0,"slot":"8","type":"t_uint256"},{"astId":2744,"contract":"contracts/mock/VaultV2Mock.sol:VaultV2Mock","label":"overrideMaxRedeem","offset":0,"slot":"9","type":"t_uint256"},{"astId":21741,"contract":"contracts/mock/VaultV2Mock.sol:VaultV2Mock","label":"_totalAssets","offset":0,"slot":"10","type":"t_uint128"},{"astId":21743,"contract":"contracts/mock/VaultV2Mock.sol:VaultV2Mock","label":"lastUpdate","offset":16,"slot":"10","type":"t_uint64"}],"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_string_storage":{"encoding":"bytes","label":"string","numberOfBytes":"32"},"t_uint128":{"encoding":"inplace","label":"uint128","numberOfBytes":"16"},"t_uint256":{"encoding":"inplace","label":"uint256","numberOfBytes":"32"},"t_uint64":{"encoding":"inplace","label":"uint64","numberOfBytes":"8"}}}}},"contracts/strategies/AaveV3InvestStrategy.sol":{"AaveV3InvestStrategy":{"abi":[{"inputs":[{"internalType":"contract IERC20","name":"asset_","type":"address"},{"internalType":"contract IPool","name":"aave_","type":"address"}],"stateMutability":"nonpayable","type":"constructor"},{"inputs":[],"name":"CanBeCalledOnlyThroughDelegateCall","type":"error"},{"inputs":[],"name":"CannotDisconnectWithAssets","type":"error"},{"inputs":[],"name":"NoExtraDataAllowed","type":"error"},{"inputs":[],"name":"ReserveNotFoundInAave","type":"error"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"asset","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"bytes","name":"initData","type":"bytes"}],"name":"connect","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"assets","type":"uint256"}],"name":"deposit","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bool","name":"force","type":"bool"}],"name":"disconnect","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint8","name":"","type":"uint8"},{"internalType":"bytes","name":"","type":"bytes"}],"name":"forwardEntryPoint","outputs":[{"internalType":"bytes","name":"","type":"bytes"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"maxDeposit","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"contract_","type":"address"}],"name":"maxWithdraw","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"storageSlot","outputs":[{"internalType":"bytes32","name":"","type":"bytes32"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"contract_","type":"address"}],"name":"totalAssets","outputs":[{"internalType":"uint256","name":"assets","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"assets","type":"uint256"}],"name":"withdraw","outputs":[],"stateMutability":"nonpayable","type":"function"}],"evm":{"bytecode":{"functionDebugData":{"@_21929":{"entryPoint":null,"id":21929,"parameterSlots":2,"returnSlots":0},"@makeStorageSlot_15638":{"entryPoint":null,"id":15638,"parameterSlots":1,"returnSlots":1},"abi_decode_address_fromMemory":{"entryPoint":567,"id":null,"parameterSlots":1,"returnSlots":1},"abi_decode_struct_ReserveConfigurationMap_fromMemory":{"entryPoint":428,"id":null,"parameterSlots":2,"returnSlots":1},"abi_decode_tuple_t_contract$_IERC20_$8679t_contract$_IPool_$19003_fromMemory":{"entryPoint":319,"id":null,"parameterSlots":2,"returnSlots":2},"abi_decode_tuple_t_struct$_ReserveData_$17774_memory_ptr_fromMemory":{"entryPoint":578,"id":null,"parameterSlots":2,"returnSlots":1},"abi_decode_uint128_fromMemory":{"entryPoint":503,"id":null,"parameterSlots":1,"returnSlots":1},"abi_decode_uint16_fromMemory":{"entryPoint":550,"id":null,"parameterSlots":1,"returnSlots":1},"abi_decode_uint40_fromMemory":{"entryPoint":530,"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_stringliteral_4fed0cd3539a36e00a34a6c026c2615824c9ad47da5ef65e8372c7e721c05d79_t_contract$_IInvestStrategy_$20725__to_t_string_memory_ptr_t_address__fromStack_reversed":{"entryPoint":null,"id":null,"parameterSlots":2,"returnSlots":1},"allocate_memory":{"entryPoint":375,"id":null,"parameterSlots":0,"returnSlots":1},"validator_revert_contract_IERC20":{"entryPoint":296,"id":null,"parameterSlots":1,"returnSlots":0}},"generatedSources":[{"ast":{"nativeSrc":"0:4404:87","nodeType":"YulBlock","src":"0:4404:87","statements":[{"nativeSrc":"6:3:87","nodeType":"YulBlock","src":"6:3:87","statements":[]},{"body":{"nativeSrc":"67:86:87","nodeType":"YulBlock","src":"67:86:87","statements":[{"body":{"nativeSrc":"131:16:87","nodeType":"YulBlock","src":"131:16:87","statements":[{"expression":{"arguments":[{"kind":"number","nativeSrc":"140:1:87","nodeType":"YulLiteral","src":"140:1:87","type":"","value":"0"},{"kind":"number","nativeSrc":"143:1:87","nodeType":"YulLiteral","src":"143:1:87","type":"","value":"0"}],"functionName":{"name":"revert","nativeSrc":"133:6:87","nodeType":"YulIdentifier","src":"133:6:87"},"nativeSrc":"133:12:87","nodeType":"YulFunctionCall","src":"133:12:87"},"nativeSrc":"133:12:87","nodeType":"YulExpressionStatement","src":"133:12:87"}]},"condition":{"arguments":[{"arguments":[{"name":"value","nativeSrc":"90:5:87","nodeType":"YulIdentifier","src":"90:5:87"},{"arguments":[{"name":"value","nativeSrc":"101:5:87","nodeType":"YulIdentifier","src":"101:5:87"},{"arguments":[{"arguments":[{"kind":"number","nativeSrc":"116:3:87","nodeType":"YulLiteral","src":"116:3:87","type":"","value":"160"},{"kind":"number","nativeSrc":"121:1:87","nodeType":"YulLiteral","src":"121:1:87","type":"","value":"1"}],"functionName":{"name":"shl","nativeSrc":"112:3:87","nodeType":"YulIdentifier","src":"112:3:87"},"nativeSrc":"112:11:87","nodeType":"YulFunctionCall","src":"112:11:87"},{"kind":"number","nativeSrc":"125:1:87","nodeType":"YulLiteral","src":"125:1:87","type":"","value":"1"}],"functionName":{"name":"sub","nativeSrc":"108:3:87","nodeType":"YulIdentifier","src":"108:3:87"},"nativeSrc":"108:19:87","nodeType":"YulFunctionCall","src":"108:19:87"}],"functionName":{"name":"and","nativeSrc":"97:3:87","nodeType":"YulIdentifier","src":"97:3:87"},"nativeSrc":"97:31:87","nodeType":"YulFunctionCall","src":"97:31:87"}],"functionName":{"name":"eq","nativeSrc":"87:2:87","nodeType":"YulIdentifier","src":"87:2:87"},"nativeSrc":"87:42:87","nodeType":"YulFunctionCall","src":"87:42:87"}],"functionName":{"name":"iszero","nativeSrc":"80:6:87","nodeType":"YulIdentifier","src":"80:6:87"},"nativeSrc":"80:50:87","nodeType":"YulFunctionCall","src":"80:50:87"},"nativeSrc":"77:70:87","nodeType":"YulIf","src":"77:70:87"}]},"name":"validator_revert_contract_IERC20","nativeSrc":"14:139:87","nodeType":"YulFunctionDefinition","parameters":[{"name":"value","nativeSrc":"56:5:87","nodeType":"YulTypedName","src":"56:5:87","type":""}],"src":"14:139:87"},{"body":{"nativeSrc":"286:303:87","nodeType":"YulBlock","src":"286:303:87","statements":[{"body":{"nativeSrc":"332:16:87","nodeType":"YulBlock","src":"332:16:87","statements":[{"expression":{"arguments":[{"kind":"number","nativeSrc":"341:1:87","nodeType":"YulLiteral","src":"341:1:87","type":"","value":"0"},{"kind":"number","nativeSrc":"344:1:87","nodeType":"YulLiteral","src":"344:1:87","type":"","value":"0"}],"functionName":{"name":"revert","nativeSrc":"334:6:87","nodeType":"YulIdentifier","src":"334:6:87"},"nativeSrc":"334:12:87","nodeType":"YulFunctionCall","src":"334:12:87"},"nativeSrc":"334:12:87","nodeType":"YulExpressionStatement","src":"334:12:87"}]},"condition":{"arguments":[{"arguments":[{"name":"dataEnd","nativeSrc":"307:7:87","nodeType":"YulIdentifier","src":"307:7:87"},{"name":"headStart","nativeSrc":"316:9:87","nodeType":"YulIdentifier","src":"316:9:87"}],"functionName":{"name":"sub","nativeSrc":"303:3:87","nodeType":"YulIdentifier","src":"303:3:87"},"nativeSrc":"303:23:87","nodeType":"YulFunctionCall","src":"303:23:87"},{"kind":"number","nativeSrc":"328:2:87","nodeType":"YulLiteral","src":"328:2:87","type":"","value":"64"}],"functionName":{"name":"slt","nativeSrc":"299:3:87","nodeType":"YulIdentifier","src":"299:3:87"},"nativeSrc":"299:32:87","nodeType":"YulFunctionCall","src":"299:32:87"},"nativeSrc":"296:52:87","nodeType":"YulIf","src":"296:52:87"},{"nativeSrc":"357:29:87","nodeType":"YulVariableDeclaration","src":"357:29:87","value":{"arguments":[{"name":"headStart","nativeSrc":"376:9:87","nodeType":"YulIdentifier","src":"376:9:87"}],"functionName":{"name":"mload","nativeSrc":"370:5:87","nodeType":"YulIdentifier","src":"370:5:87"},"nativeSrc":"370:16:87","nodeType":"YulFunctionCall","src":"370:16:87"},"variables":[{"name":"value","nativeSrc":"361:5:87","nodeType":"YulTypedName","src":"361:5:87","type":""}]},{"expression":{"arguments":[{"name":"value","nativeSrc":"428:5:87","nodeType":"YulIdentifier","src":"428:5:87"}],"functionName":{"name":"validator_revert_contract_IERC20","nativeSrc":"395:32:87","nodeType":"YulIdentifier","src":"395:32:87"},"nativeSrc":"395:39:87","nodeType":"YulFunctionCall","src":"395:39:87"},"nativeSrc":"395:39:87","nodeType":"YulExpressionStatement","src":"395:39:87"},{"nativeSrc":"443:15:87","nodeType":"YulAssignment","src":"443:15:87","value":{"name":"value","nativeSrc":"453:5:87","nodeType":"YulIdentifier","src":"453:5:87"},"variableNames":[{"name":"value0","nativeSrc":"443:6:87","nodeType":"YulIdentifier","src":"443:6:87"}]},{"nativeSrc":"467:40:87","nodeType":"YulVariableDeclaration","src":"467:40:87","value":{"arguments":[{"arguments":[{"name":"headStart","nativeSrc":"492:9:87","nodeType":"YulIdentifier","src":"492:9:87"},{"kind":"number","nativeSrc":"503:2:87","nodeType":"YulLiteral","src":"503:2:87","type":"","value":"32"}],"functionName":{"name":"add","nativeSrc":"488:3:87","nodeType":"YulIdentifier","src":"488:3:87"},"nativeSrc":"488:18:87","nodeType":"YulFunctionCall","src":"488:18:87"}],"functionName":{"name":"mload","nativeSrc":"482:5:87","nodeType":"YulIdentifier","src":"482:5:87"},"nativeSrc":"482:25:87","nodeType":"YulFunctionCall","src":"482:25:87"},"variables":[{"name":"value_1","nativeSrc":"471:7:87","nodeType":"YulTypedName","src":"471:7:87","type":""}]},{"expression":{"arguments":[{"name":"value_1","nativeSrc":"549:7:87","nodeType":"YulIdentifier","src":"549:7:87"}],"functionName":{"name":"validator_revert_contract_IERC20","nativeSrc":"516:32:87","nodeType":"YulIdentifier","src":"516:32:87"},"nativeSrc":"516:41:87","nodeType":"YulFunctionCall","src":"516:41:87"},"nativeSrc":"516:41:87","nodeType":"YulExpressionStatement","src":"516:41:87"},{"nativeSrc":"566:17:87","nodeType":"YulAssignment","src":"566:17:87","value":{"name":"value_1","nativeSrc":"576:7:87","nodeType":"YulIdentifier","src":"576:7:87"},"variableNames":[{"name":"value1","nativeSrc":"566:6:87","nodeType":"YulIdentifier","src":"566:6:87"}]}]},"name":"abi_decode_tuple_t_contract$_IERC20_$8679t_contract$_IPool_$19003_fromMemory","nativeSrc":"158:431:87","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nativeSrc":"244:9:87","nodeType":"YulTypedName","src":"244:9:87","type":""},{"name":"dataEnd","nativeSrc":"255:7:87","nodeType":"YulTypedName","src":"255:7:87","type":""}],"returnVariables":[{"name":"value0","nativeSrc":"267:6:87","nodeType":"YulTypedName","src":"267:6:87","type":""},{"name":"value1","nativeSrc":"275:6:87","nodeType":"YulTypedName","src":"275:6:87","type":""}],"src":"158:431:87"},{"body":{"nativeSrc":"695:102:87","nodeType":"YulBlock","src":"695:102:87","statements":[{"nativeSrc":"705:26:87","nodeType":"YulAssignment","src":"705:26:87","value":{"arguments":[{"name":"headStart","nativeSrc":"717:9:87","nodeType":"YulIdentifier","src":"717:9:87"},{"kind":"number","nativeSrc":"728:2:87","nodeType":"YulLiteral","src":"728:2:87","type":"","value":"32"}],"functionName":{"name":"add","nativeSrc":"713:3:87","nodeType":"YulIdentifier","src":"713:3:87"},"nativeSrc":"713:18:87","nodeType":"YulFunctionCall","src":"713:18:87"},"variableNames":[{"name":"tail","nativeSrc":"705:4:87","nodeType":"YulIdentifier","src":"705:4:87"}]},{"expression":{"arguments":[{"name":"headStart","nativeSrc":"747:9:87","nodeType":"YulIdentifier","src":"747:9:87"},{"arguments":[{"name":"value0","nativeSrc":"762:6:87","nodeType":"YulIdentifier","src":"762:6:87"},{"arguments":[{"arguments":[{"kind":"number","nativeSrc":"778:3:87","nodeType":"YulLiteral","src":"778:3:87","type":"","value":"160"},{"kind":"number","nativeSrc":"783:1:87","nodeType":"YulLiteral","src":"783:1:87","type":"","value":"1"}],"functionName":{"name":"shl","nativeSrc":"774:3:87","nodeType":"YulIdentifier","src":"774:3:87"},"nativeSrc":"774:11:87","nodeType":"YulFunctionCall","src":"774:11:87"},{"kind":"number","nativeSrc":"787:1:87","nodeType":"YulLiteral","src":"787:1:87","type":"","value":"1"}],"functionName":{"name":"sub","nativeSrc":"770:3:87","nodeType":"YulIdentifier","src":"770:3:87"},"nativeSrc":"770:19:87","nodeType":"YulFunctionCall","src":"770:19:87"}],"functionName":{"name":"and","nativeSrc":"758:3:87","nodeType":"YulIdentifier","src":"758:3:87"},"nativeSrc":"758:32:87","nodeType":"YulFunctionCall","src":"758:32:87"}],"functionName":{"name":"mstore","nativeSrc":"740:6:87","nodeType":"YulIdentifier","src":"740:6:87"},"nativeSrc":"740:51:87","nodeType":"YulFunctionCall","src":"740:51:87"},"nativeSrc":"740:51:87","nodeType":"YulExpressionStatement","src":"740:51:87"}]},"name":"abi_encode_tuple_t_address__to_t_address__fromStack_reversed","nativeSrc":"594:203:87","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nativeSrc":"664:9:87","nodeType":"YulTypedName","src":"664:9:87","type":""},{"name":"value0","nativeSrc":"675:6:87","nodeType":"YulTypedName","src":"675:6:87","type":""}],"returnVariables":[{"name":"tail","nativeSrc":"686:4:87","nodeType":"YulTypedName","src":"686:4:87","type":""}],"src":"594:203:87"},{"body":{"nativeSrc":"843:303:87","nodeType":"YulBlock","src":"843:303:87","statements":[{"nativeSrc":"853:19:87","nodeType":"YulAssignment","src":"853:19:87","value":{"arguments":[{"kind":"number","nativeSrc":"869:2:87","nodeType":"YulLiteral","src":"869:2:87","type":"","value":"64"}],"functionName":{"name":"mload","nativeSrc":"863:5:87","nodeType":"YulIdentifier","src":"863:5:87"},"nativeSrc":"863:9:87","nodeType":"YulFunctionCall","src":"863:9:87"},"variableNames":[{"name":"memPtr","nativeSrc":"853:6:87","nodeType":"YulIdentifier","src":"853:6:87"}]},{"nativeSrc":"881:34:87","nodeType":"YulVariableDeclaration","src":"881:34:87","value":{"arguments":[{"name":"memPtr","nativeSrc":"903:6:87","nodeType":"YulIdentifier","src":"903:6:87"},{"kind":"number","nativeSrc":"911:3:87","nodeType":"YulLiteral","src":"911:3:87","type":"","value":"480"}],"functionName":{"name":"add","nativeSrc":"899:3:87","nodeType":"YulIdentifier","src":"899:3:87"},"nativeSrc":"899:16:87","nodeType":"YulFunctionCall","src":"899:16:87"},"variables":[{"name":"newFreePtr","nativeSrc":"885:10:87","nodeType":"YulTypedName","src":"885:10:87","type":""}]},{"body":{"nativeSrc":"998:111:87","nodeType":"YulBlock","src":"998:111:87","statements":[{"expression":{"arguments":[{"kind":"number","nativeSrc":"1019:1:87","nodeType":"YulLiteral","src":"1019:1:87","type":"","value":"0"},{"arguments":[{"kind":"number","nativeSrc":"1026:3:87","nodeType":"YulLiteral","src":"1026:3:87","type":"","value":"224"},{"kind":"number","nativeSrc":"1031:10:87","nodeType":"YulLiteral","src":"1031:10:87","type":"","value":"0x4e487b71"}],"functionName":{"name":"shl","nativeSrc":"1022:3:87","nodeType":"YulIdentifier","src":"1022:3:87"},"nativeSrc":"1022:20:87","nodeType":"YulFunctionCall","src":"1022:20:87"}],"functionName":{"name":"mstore","nativeSrc":"1012:6:87","nodeType":"YulIdentifier","src":"1012:6:87"},"nativeSrc":"1012:31:87","nodeType":"YulFunctionCall","src":"1012:31:87"},"nativeSrc":"1012:31:87","nodeType":"YulExpressionStatement","src":"1012:31:87"},{"expression":{"arguments":[{"kind":"number","nativeSrc":"1063:1:87","nodeType":"YulLiteral","src":"1063:1:87","type":"","value":"4"},{"kind":"number","nativeSrc":"1066:4:87","nodeType":"YulLiteral","src":"1066:4:87","type":"","value":"0x41"}],"functionName":{"name":"mstore","nativeSrc":"1056:6:87","nodeType":"YulIdentifier","src":"1056:6:87"},"nativeSrc":"1056:15:87","nodeType":"YulFunctionCall","src":"1056:15:87"},"nativeSrc":"1056:15:87","nodeType":"YulExpressionStatement","src":"1056:15:87"},{"expression":{"arguments":[{"kind":"number","nativeSrc":"1091:1:87","nodeType":"YulLiteral","src":"1091:1:87","type":"","value":"0"},{"kind":"number","nativeSrc":"1094:4:87","nodeType":"YulLiteral","src":"1094:4:87","type":"","value":"0x24"}],"functionName":{"name":"revert","nativeSrc":"1084:6:87","nodeType":"YulIdentifier","src":"1084:6:87"},"nativeSrc":"1084:15:87","nodeType":"YulFunctionCall","src":"1084:15:87"},"nativeSrc":"1084:15:87","nodeType":"YulExpressionStatement","src":"1084:15:87"}]},"condition":{"arguments":[{"arguments":[{"name":"newFreePtr","nativeSrc":"933:10:87","nodeType":"YulIdentifier","src":"933:10:87"},{"arguments":[{"arguments":[{"kind":"number","nativeSrc":"953:2:87","nodeType":"YulLiteral","src":"953:2:87","type":"","value":"64"},{"kind":"number","nativeSrc":"957:1:87","nodeType":"YulLiteral","src":"957:1:87","type":"","value":"1"}],"functionName":{"name":"shl","nativeSrc":"949:3:87","nodeType":"YulIdentifier","src":"949:3:87"},"nativeSrc":"949:10:87","nodeType":"YulFunctionCall","src":"949:10:87"},{"kind":"number","nativeSrc":"961:1:87","nodeType":"YulLiteral","src":"961:1:87","type":"","value":"1"}],"functionName":{"name":"sub","nativeSrc":"945:3:87","nodeType":"YulIdentifier","src":"945:3:87"},"nativeSrc":"945:18:87","nodeType":"YulFunctionCall","src":"945:18:87"}],"functionName":{"name":"gt","nativeSrc":"930:2:87","nodeType":"YulIdentifier","src":"930:2:87"},"nativeSrc":"930:34:87","nodeType":"YulFunctionCall","src":"930:34:87"},{"arguments":[{"name":"newFreePtr","nativeSrc":"969:10:87","nodeType":"YulIdentifier","src":"969:10:87"},{"name":"memPtr","nativeSrc":"981:6:87","nodeType":"YulIdentifier","src":"981:6:87"}],"functionName":{"name":"lt","nativeSrc":"966:2:87","nodeType":"YulIdentifier","src":"966:2:87"},"nativeSrc":"966:22:87","nodeType":"YulFunctionCall","src":"966:22:87"}],"functionName":{"name":"or","nativeSrc":"927:2:87","nodeType":"YulIdentifier","src":"927:2:87"},"nativeSrc":"927:62:87","nodeType":"YulFunctionCall","src":"927:62:87"},"nativeSrc":"924:185:87","nodeType":"YulIf","src":"924:185:87"},{"expression":{"arguments":[{"kind":"number","nativeSrc":"1125:2:87","nodeType":"YulLiteral","src":"1125:2:87","type":"","value":"64"},{"name":"newFreePtr","nativeSrc":"1129:10:87","nodeType":"YulIdentifier","src":"1129:10:87"}],"functionName":{"name":"mstore","nativeSrc":"1118:6:87","nodeType":"YulIdentifier","src":"1118:6:87"},"nativeSrc":"1118:22:87","nodeType":"YulFunctionCall","src":"1118:22:87"},"nativeSrc":"1118:22:87","nodeType":"YulExpressionStatement","src":"1118:22:87"}]},"name":"allocate_memory","nativeSrc":"802:344:87","nodeType":"YulFunctionDefinition","returnVariables":[{"name":"memPtr","nativeSrc":"832:6:87","nodeType":"YulTypedName","src":"832:6:87","type":""}],"src":"802:344:87"},{"body":{"nativeSrc":"1242:452:87","nodeType":"YulBlock","src":"1242:452:87","statements":[{"body":{"nativeSrc":"1286:16:87","nodeType":"YulBlock","src":"1286:16:87","statements":[{"expression":{"arguments":[{"kind":"number","nativeSrc":"1295:1:87","nodeType":"YulLiteral","src":"1295:1:87","type":"","value":"0"},{"kind":"number","nativeSrc":"1298:1:87","nodeType":"YulLiteral","src":"1298:1:87","type":"","value":"0"}],"functionName":{"name":"revert","nativeSrc":"1288:6:87","nodeType":"YulIdentifier","src":"1288:6:87"},"nativeSrc":"1288:12:87","nodeType":"YulFunctionCall","src":"1288:12:87"},"nativeSrc":"1288:12:87","nodeType":"YulExpressionStatement","src":"1288:12:87"}]},"condition":{"arguments":[{"arguments":[{"name":"end","nativeSrc":"1263:3:87","nodeType":"YulIdentifier","src":"1263:3:87"},{"name":"headStart","nativeSrc":"1268:9:87","nodeType":"YulIdentifier","src":"1268:9:87"}],"functionName":{"name":"sub","nativeSrc":"1259:3:87","nodeType":"YulIdentifier","src":"1259:3:87"},"nativeSrc":"1259:19:87","nodeType":"YulFunctionCall","src":"1259:19:87"},{"kind":"number","nativeSrc":"1280:4:87","nodeType":"YulLiteral","src":"1280:4:87","type":"","value":"0x20"}],"functionName":{"name":"slt","nativeSrc":"1255:3:87","nodeType":"YulIdentifier","src":"1255:3:87"},"nativeSrc":"1255:30:87","nodeType":"YulFunctionCall","src":"1255:30:87"},"nativeSrc":"1252:50:87","nodeType":"YulIf","src":"1252:50:87"},{"nativeSrc":"1311:15:87","nodeType":"YulVariableDeclaration","src":"1311:15:87","value":{"kind":"number","nativeSrc":"1325:1:87","nodeType":"YulLiteral","src":"1325:1:87","type":"","value":"0"},"variables":[{"name":"memPtr","nativeSrc":"1315:6:87","nodeType":"YulTypedName","src":"1315:6:87","type":""}]},{"nativeSrc":"1335:19:87","nodeType":"YulAssignment","src":"1335:19:87","value":{"arguments":[{"kind":"number","nativeSrc":"1351:2:87","nodeType":"YulLiteral","src":"1351:2:87","type":"","value":"64"}],"functionName":{"name":"mload","nativeSrc":"1345:5:87","nodeType":"YulIdentifier","src":"1345:5:87"},"nativeSrc":"1345:9:87","nodeType":"YulFunctionCall","src":"1345:9:87"},"variableNames":[{"name":"memPtr","nativeSrc":"1335:6:87","nodeType":"YulIdentifier","src":"1335:6:87"}]},{"nativeSrc":"1363:35:87","nodeType":"YulVariableDeclaration","src":"1363:35:87","value":{"arguments":[{"name":"memPtr","nativeSrc":"1385:6:87","nodeType":"YulIdentifier","src":"1385:6:87"},{"kind":"number","nativeSrc":"1393:4:87","nodeType":"YulLiteral","src":"1393:4:87","type":"","value":"0x20"}],"functionName":{"name":"add","nativeSrc":"1381:3:87","nodeType":"YulIdentifier","src":"1381:3:87"},"nativeSrc":"1381:17:87","nodeType":"YulFunctionCall","src":"1381:17:87"},"variables":[{"name":"newFreePtr","nativeSrc":"1367:10:87","nodeType":"YulTypedName","src":"1367:10:87","type":""}]},{"body":{"nativeSrc":"1481:111:87","nodeType":"YulBlock","src":"1481:111:87","statements":[{"expression":{"arguments":[{"kind":"number","nativeSrc":"1502:1:87","nodeType":"YulLiteral","src":"1502:1:87","type":"","value":"0"},{"arguments":[{"kind":"number","nativeSrc":"1509:3:87","nodeType":"YulLiteral","src":"1509:3:87","type":"","value":"224"},{"kind":"number","nativeSrc":"1514:10:87","nodeType":"YulLiteral","src":"1514:10:87","type":"","value":"0x4e487b71"}],"functionName":{"name":"shl","nativeSrc":"1505:3:87","nodeType":"YulIdentifier","src":"1505:3:87"},"nativeSrc":"1505:20:87","nodeType":"YulFunctionCall","src":"1505:20:87"}],"functionName":{"name":"mstore","nativeSrc":"1495:6:87","nodeType":"YulIdentifier","src":"1495:6:87"},"nativeSrc":"1495:31:87","nodeType":"YulFunctionCall","src":"1495:31:87"},"nativeSrc":"1495:31:87","nodeType":"YulExpressionStatement","src":"1495:31:87"},{"expression":{"arguments":[{"kind":"number","nativeSrc":"1546:1:87","nodeType":"YulLiteral","src":"1546:1:87","type":"","value":"4"},{"kind":"number","nativeSrc":"1549:4:87","nodeType":"YulLiteral","src":"1549:4:87","type":"","value":"0x41"}],"functionName":{"name":"mstore","nativeSrc":"1539:6:87","nodeType":"YulIdentifier","src":"1539:6:87"},"nativeSrc":"1539:15:87","nodeType":"YulFunctionCall","src":"1539:15:87"},"nativeSrc":"1539:15:87","nodeType":"YulExpressionStatement","src":"1539:15:87"},{"expression":{"arguments":[{"kind":"number","nativeSrc":"1574:1:87","nodeType":"YulLiteral","src":"1574:1:87","type":"","value":"0"},{"kind":"number","nativeSrc":"1577:4:87","nodeType":"YulLiteral","src":"1577:4:87","type":"","value":"0x24"}],"functionName":{"name":"revert","nativeSrc":"1567:6:87","nodeType":"YulIdentifier","src":"1567:6:87"},"nativeSrc":"1567:15:87","nodeType":"YulFunctionCall","src":"1567:15:87"},"nativeSrc":"1567:15:87","nodeType":"YulExpressionStatement","src":"1567:15:87"}]},"condition":{"arguments":[{"arguments":[{"name":"newFreePtr","nativeSrc":"1416:10:87","nodeType":"YulIdentifier","src":"1416:10:87"},{"arguments":[{"arguments":[{"kind":"number","nativeSrc":"1436:2:87","nodeType":"YulLiteral","src":"1436:2:87","type":"","value":"64"},{"kind":"number","nativeSrc":"1440:1:87","nodeType":"YulLiteral","src":"1440:1:87","type":"","value":"1"}],"functionName":{"name":"shl","nativeSrc":"1432:3:87","nodeType":"YulIdentifier","src":"1432:3:87"},"nativeSrc":"1432:10:87","nodeType":"YulFunctionCall","src":"1432:10:87"},{"kind":"number","nativeSrc":"1444:1:87","nodeType":"YulLiteral","src":"1444:1:87","type":"","value":"1"}],"functionName":{"name":"sub","nativeSrc":"1428:3:87","nodeType":"YulIdentifier","src":"1428:3:87"},"nativeSrc":"1428:18:87","nodeType":"YulFunctionCall","src":"1428:18:87"}],"functionName":{"name":"gt","nativeSrc":"1413:2:87","nodeType":"YulIdentifier","src":"1413:2:87"},"nativeSrc":"1413:34:87","nodeType":"YulFunctionCall","src":"1413:34:87"},{"arguments":[{"name":"newFreePtr","nativeSrc":"1452:10:87","nodeType":"YulIdentifier","src":"1452:10:87"},{"name":"memPtr","nativeSrc":"1464:6:87","nodeType":"YulIdentifier","src":"1464:6:87"}],"functionName":{"name":"lt","nativeSrc":"1449:2:87","nodeType":"YulIdentifier","src":"1449:2:87"},"nativeSrc":"1449:22:87","nodeType":"YulFunctionCall","src":"1449:22:87"}],"functionName":{"name":"or","nativeSrc":"1410:2:87","nodeType":"YulIdentifier","src":"1410:2:87"},"nativeSrc":"1410:62:87","nodeType":"YulFunctionCall","src":"1410:62:87"},"nativeSrc":"1407:185:87","nodeType":"YulIf","src":"1407:185:87"},{"expression":{"arguments":[{"kind":"number","nativeSrc":"1608:2:87","nodeType":"YulLiteral","src":"1608:2:87","type":"","value":"64"},{"name":"newFreePtr","nativeSrc":"1612:10:87","nodeType":"YulIdentifier","src":"1612:10:87"}],"functionName":{"name":"mstore","nativeSrc":"1601:6:87","nodeType":"YulIdentifier","src":"1601:6:87"},"nativeSrc":"1601:22:87","nodeType":"YulFunctionCall","src":"1601:22:87"},"nativeSrc":"1601:22:87","nodeType":"YulExpressionStatement","src":"1601:22:87"},{"nativeSrc":"1632:15:87","nodeType":"YulAssignment","src":"1632:15:87","value":{"name":"memPtr","nativeSrc":"1641:6:87","nodeType":"YulIdentifier","src":"1641:6:87"},"variableNames":[{"name":"value","nativeSrc":"1632:5:87","nodeType":"YulIdentifier","src":"1632:5:87"}]},{"expression":{"arguments":[{"name":"memPtr","nativeSrc":"1663:6:87","nodeType":"YulIdentifier","src":"1663:6:87"},{"arguments":[{"name":"headStart","nativeSrc":"1677:9:87","nodeType":"YulIdentifier","src":"1677:9:87"}],"functionName":{"name":"mload","nativeSrc":"1671:5:87","nodeType":"YulIdentifier","src":"1671:5:87"},"nativeSrc":"1671:16:87","nodeType":"YulFunctionCall","src":"1671:16:87"}],"functionName":{"name":"mstore","nativeSrc":"1656:6:87","nodeType":"YulIdentifier","src":"1656:6:87"},"nativeSrc":"1656:32:87","nodeType":"YulFunctionCall","src":"1656:32:87"},"nativeSrc":"1656:32:87","nodeType":"YulExpressionStatement","src":"1656:32:87"}]},"name":"abi_decode_struct_ReserveConfigurationMap_fromMemory","nativeSrc":"1151:543:87","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nativeSrc":"1213:9:87","nodeType":"YulTypedName","src":"1213:9:87","type":""},{"name":"end","nativeSrc":"1224:3:87","nodeType":"YulTypedName","src":"1224:3:87","type":""}],"returnVariables":[{"name":"value","nativeSrc":"1232:5:87","nodeType":"YulTypedName","src":"1232:5:87","type":""}],"src":"1151:543:87"},{"body":{"nativeSrc":"1759:117:87","nodeType":"YulBlock","src":"1759:117:87","statements":[{"nativeSrc":"1769:22:87","nodeType":"YulAssignment","src":"1769:22:87","value":{"arguments":[{"name":"offset","nativeSrc":"1784:6:87","nodeType":"YulIdentifier","src":"1784:6:87"}],"functionName":{"name":"mload","nativeSrc":"1778:5:87","nodeType":"YulIdentifier","src":"1778:5:87"},"nativeSrc":"1778:13:87","nodeType":"YulFunctionCall","src":"1778:13:87"},"variableNames":[{"name":"value","nativeSrc":"1769:5:87","nodeType":"YulIdentifier","src":"1769:5:87"}]},{"body":{"nativeSrc":"1854:16:87","nodeType":"YulBlock","src":"1854:16:87","statements":[{"expression":{"arguments":[{"kind":"number","nativeSrc":"1863:1:87","nodeType":"YulLiteral","src":"1863:1:87","type":"","value":"0"},{"kind":"number","nativeSrc":"1866:1:87","nodeType":"YulLiteral","src":"1866:1:87","type":"","value":"0"}],"functionName":{"name":"revert","nativeSrc":"1856:6:87","nodeType":"YulIdentifier","src":"1856:6:87"},"nativeSrc":"1856:12:87","nodeType":"YulFunctionCall","src":"1856:12:87"},"nativeSrc":"1856:12:87","nodeType":"YulExpressionStatement","src":"1856:12:87"}]},"condition":{"arguments":[{"arguments":[{"name":"value","nativeSrc":"1813:5:87","nodeType":"YulIdentifier","src":"1813:5:87"},{"arguments":[{"name":"value","nativeSrc":"1824:5:87","nodeType":"YulIdentifier","src":"1824:5:87"},{"arguments":[{"arguments":[{"kind":"number","nativeSrc":"1839:3:87","nodeType":"YulLiteral","src":"1839:3:87","type":"","value":"128"},{"kind":"number","nativeSrc":"1844:1:87","nodeType":"YulLiteral","src":"1844:1:87","type":"","value":"1"}],"functionName":{"name":"shl","nativeSrc":"1835:3:87","nodeType":"YulIdentifier","src":"1835:3:87"},"nativeSrc":"1835:11:87","nodeType":"YulFunctionCall","src":"1835:11:87"},{"kind":"number","nativeSrc":"1848:1:87","nodeType":"YulLiteral","src":"1848:1:87","type":"","value":"1"}],"functionName":{"name":"sub","nativeSrc":"1831:3:87","nodeType":"YulIdentifier","src":"1831:3:87"},"nativeSrc":"1831:19:87","nodeType":"YulFunctionCall","src":"1831:19:87"}],"functionName":{"name":"and","nativeSrc":"1820:3:87","nodeType":"YulIdentifier","src":"1820:3:87"},"nativeSrc":"1820:31:87","nodeType":"YulFunctionCall","src":"1820:31:87"}],"functionName":{"name":"eq","nativeSrc":"1810:2:87","nodeType":"YulIdentifier","src":"1810:2:87"},"nativeSrc":"1810:42:87","nodeType":"YulFunctionCall","src":"1810:42:87"}],"functionName":{"name":"iszero","nativeSrc":"1803:6:87","nodeType":"YulIdentifier","src":"1803:6:87"},"nativeSrc":"1803:50:87","nodeType":"YulFunctionCall","src":"1803:50:87"},"nativeSrc":"1800:70:87","nodeType":"YulIf","src":"1800:70:87"}]},"name":"abi_decode_uint128_fromMemory","nativeSrc":"1699:177:87","nodeType":"YulFunctionDefinition","parameters":[{"name":"offset","nativeSrc":"1738:6:87","nodeType":"YulTypedName","src":"1738:6:87","type":""}],"returnVariables":[{"name":"value","nativeSrc":"1749:5:87","nodeType":"YulTypedName","src":"1749:5:87","type":""}],"src":"1699:177:87"},{"body":{"nativeSrc":"1940:110:87","nodeType":"YulBlock","src":"1940:110:87","statements":[{"nativeSrc":"1950:22:87","nodeType":"YulAssignment","src":"1950:22:87","value":{"arguments":[{"name":"offset","nativeSrc":"1965:6:87","nodeType":"YulIdentifier","src":"1965:6:87"}],"functionName":{"name":"mload","nativeSrc":"1959:5:87","nodeType":"YulIdentifier","src":"1959:5:87"},"nativeSrc":"1959:13:87","nodeType":"YulFunctionCall","src":"1959:13:87"},"variableNames":[{"name":"value","nativeSrc":"1950:5:87","nodeType":"YulIdentifier","src":"1950:5:87"}]},{"body":{"nativeSrc":"2028:16:87","nodeType":"YulBlock","src":"2028:16:87","statements":[{"expression":{"arguments":[{"kind":"number","nativeSrc":"2037:1:87","nodeType":"YulLiteral","src":"2037:1:87","type":"","value":"0"},{"kind":"number","nativeSrc":"2040:1:87","nodeType":"YulLiteral","src":"2040:1:87","type":"","value":"0"}],"functionName":{"name":"revert","nativeSrc":"2030:6:87","nodeType":"YulIdentifier","src":"2030:6:87"},"nativeSrc":"2030:12:87","nodeType":"YulFunctionCall","src":"2030:12:87"},"nativeSrc":"2030:12:87","nodeType":"YulExpressionStatement","src":"2030:12:87"}]},"condition":{"arguments":[{"arguments":[{"name":"value","nativeSrc":"1994:5:87","nodeType":"YulIdentifier","src":"1994:5:87"},{"arguments":[{"name":"value","nativeSrc":"2005:5:87","nodeType":"YulIdentifier","src":"2005:5:87"},{"kind":"number","nativeSrc":"2012:12:87","nodeType":"YulLiteral","src":"2012:12:87","type":"","value":"0xffffffffff"}],"functionName":{"name":"and","nativeSrc":"2001:3:87","nodeType":"YulIdentifier","src":"2001:3:87"},"nativeSrc":"2001:24:87","nodeType":"YulFunctionCall","src":"2001:24:87"}],"functionName":{"name":"eq","nativeSrc":"1991:2:87","nodeType":"YulIdentifier","src":"1991:2:87"},"nativeSrc":"1991:35:87","nodeType":"YulFunctionCall","src":"1991:35:87"}],"functionName":{"name":"iszero","nativeSrc":"1984:6:87","nodeType":"YulIdentifier","src":"1984:6:87"},"nativeSrc":"1984:43:87","nodeType":"YulFunctionCall","src":"1984:43:87"},"nativeSrc":"1981:63:87","nodeType":"YulIf","src":"1981:63:87"}]},"name":"abi_decode_uint40_fromMemory","nativeSrc":"1881:169:87","nodeType":"YulFunctionDefinition","parameters":[{"name":"offset","nativeSrc":"1919:6:87","nodeType":"YulTypedName","src":"1919:6:87","type":""}],"returnVariables":[{"name":"value","nativeSrc":"1930:5:87","nodeType":"YulTypedName","src":"1930:5:87","type":""}],"src":"1881:169:87"},{"body":{"nativeSrc":"2114:104:87","nodeType":"YulBlock","src":"2114:104:87","statements":[{"nativeSrc":"2124:22:87","nodeType":"YulAssignment","src":"2124:22:87","value":{"arguments":[{"name":"offset","nativeSrc":"2139:6:87","nodeType":"YulIdentifier","src":"2139:6:87"}],"functionName":{"name":"mload","nativeSrc":"2133:5:87","nodeType":"YulIdentifier","src":"2133:5:87"},"nativeSrc":"2133:13:87","nodeType":"YulFunctionCall","src":"2133:13:87"},"variableNames":[{"name":"value","nativeSrc":"2124:5:87","nodeType":"YulIdentifier","src":"2124:5:87"}]},{"body":{"nativeSrc":"2196:16:87","nodeType":"YulBlock","src":"2196:16:87","statements":[{"expression":{"arguments":[{"kind":"number","nativeSrc":"2205:1:87","nodeType":"YulLiteral","src":"2205:1:87","type":"","value":"0"},{"kind":"number","nativeSrc":"2208:1:87","nodeType":"YulLiteral","src":"2208:1:87","type":"","value":"0"}],"functionName":{"name":"revert","nativeSrc":"2198:6:87","nodeType":"YulIdentifier","src":"2198:6:87"},"nativeSrc":"2198:12:87","nodeType":"YulFunctionCall","src":"2198:12:87"},"nativeSrc":"2198:12:87","nodeType":"YulExpressionStatement","src":"2198:12:87"}]},"condition":{"arguments":[{"arguments":[{"name":"value","nativeSrc":"2168:5:87","nodeType":"YulIdentifier","src":"2168:5:87"},{"arguments":[{"name":"value","nativeSrc":"2179:5:87","nodeType":"YulIdentifier","src":"2179:5:87"},{"kind":"number","nativeSrc":"2186:6:87","nodeType":"YulLiteral","src":"2186:6:87","type":"","value":"0xffff"}],"functionName":{"name":"and","nativeSrc":"2175:3:87","nodeType":"YulIdentifier","src":"2175:3:87"},"nativeSrc":"2175:18:87","nodeType":"YulFunctionCall","src":"2175:18:87"}],"functionName":{"name":"eq","nativeSrc":"2165:2:87","nodeType":"YulIdentifier","src":"2165:2:87"},"nativeSrc":"2165:29:87","nodeType":"YulFunctionCall","src":"2165:29:87"}],"functionName":{"name":"iszero","nativeSrc":"2158:6:87","nodeType":"YulIdentifier","src":"2158:6:87"},"nativeSrc":"2158:37:87","nodeType":"YulFunctionCall","src":"2158:37:87"},"nativeSrc":"2155:57:87","nodeType":"YulIf","src":"2155:57:87"}]},"name":"abi_decode_uint16_fromMemory","nativeSrc":"2055:163:87","nodeType":"YulFunctionDefinition","parameters":[{"name":"offset","nativeSrc":"2093:6:87","nodeType":"YulTypedName","src":"2093:6:87","type":""}],"returnVariables":[{"name":"value","nativeSrc":"2104:5:87","nodeType":"YulTypedName","src":"2104:5:87","type":""}],"src":"2055:163:87"},{"body":{"nativeSrc":"2283:86:87","nodeType":"YulBlock","src":"2283:86:87","statements":[{"nativeSrc":"2293:22:87","nodeType":"YulAssignment","src":"2293:22:87","value":{"arguments":[{"name":"offset","nativeSrc":"2308:6:87","nodeType":"YulIdentifier","src":"2308:6:87"}],"functionName":{"name":"mload","nativeSrc":"2302:5:87","nodeType":"YulIdentifier","src":"2302:5:87"},"nativeSrc":"2302:13:87","nodeType":"YulFunctionCall","src":"2302:13:87"},"variableNames":[{"name":"value","nativeSrc":"2293:5:87","nodeType":"YulIdentifier","src":"2293:5:87"}]},{"expression":{"arguments":[{"name":"value","nativeSrc":"2357:5:87","nodeType":"YulIdentifier","src":"2357:5:87"}],"functionName":{"name":"validator_revert_contract_IERC20","nativeSrc":"2324:32:87","nodeType":"YulIdentifier","src":"2324:32:87"},"nativeSrc":"2324:39:87","nodeType":"YulFunctionCall","src":"2324:39:87"},"nativeSrc":"2324:39:87","nodeType":"YulExpressionStatement","src":"2324:39:87"}]},"name":"abi_decode_address_fromMemory","nativeSrc":"2223:146:87","nodeType":"YulFunctionDefinition","parameters":[{"name":"offset","nativeSrc":"2262:6:87","nodeType":"YulTypedName","src":"2262:6:87","type":""}],"returnVariables":[{"name":"value","nativeSrc":"2273:5:87","nodeType":"YulTypedName","src":"2273:5:87","type":""}],"src":"2223:146:87"},{"body":{"nativeSrc":"2485:1433:87","nodeType":"YulBlock","src":"2485:1433:87","statements":[{"nativeSrc":"2495:43:87","nodeType":"YulVariableDeclaration","src":"2495:43:87","value":{"arguments":[{"arguments":[{"name":"dataEnd","nativeSrc":"2513:7:87","nodeType":"YulIdentifier","src":"2513:7:87"},{"name":"headStart","nativeSrc":"2522:9:87","nodeType":"YulIdentifier","src":"2522:9:87"}],"functionName":{"name":"sub","nativeSrc":"2509:3:87","nodeType":"YulIdentifier","src":"2509:3:87"},"nativeSrc":"2509:23:87","nodeType":"YulFunctionCall","src":"2509:23:87"},{"kind":"number","nativeSrc":"2534:3:87","nodeType":"YulLiteral","src":"2534:3:87","type":"","value":"480"}],"functionName":{"name":"slt","nativeSrc":"2505:3:87","nodeType":"YulIdentifier","src":"2505:3:87"},"nativeSrc":"2505:33:87","nodeType":"YulFunctionCall","src":"2505:33:87"},"variables":[{"name":"_1","nativeSrc":"2499:2:87","nodeType":"YulTypedName","src":"2499:2:87","type":""}]},{"body":{"nativeSrc":"2553:16:87","nodeType":"YulBlock","src":"2553:16:87","statements":[{"expression":{"arguments":[{"kind":"number","nativeSrc":"2562:1:87","nodeType":"YulLiteral","src":"2562:1:87","type":"","value":"0"},{"kind":"number","nativeSrc":"2565:1:87","nodeType":"YulLiteral","src":"2565:1:87","type":"","value":"0"}],"functionName":{"name":"revert","nativeSrc":"2555:6:87","nodeType":"YulIdentifier","src":"2555:6:87"},"nativeSrc":"2555:12:87","nodeType":"YulFunctionCall","src":"2555:12:87"},"nativeSrc":"2555:12:87","nodeType":"YulExpressionStatement","src":"2555:12:87"}]},"condition":{"name":"_1","nativeSrc":"2550:2:87","nodeType":"YulIdentifier","src":"2550:2:87"},"nativeSrc":"2547:22:87","nodeType":"YulIf","src":"2547:22:87"},{"nativeSrc":"2578:7:87","nodeType":"YulAssignment","src":"2578:7:87","value":{"kind":"number","nativeSrc":"2584:1:87","nodeType":"YulLiteral","src":"2584:1:87","type":"","value":"0"},"variableNames":[{"name":"_1","nativeSrc":"2578:2:87","nodeType":"YulIdentifier","src":"2578:2:87"}]},{"nativeSrc":"2594:30:87","nodeType":"YulVariableDeclaration","src":"2594:30:87","value":{"arguments":[],"functionName":{"name":"allocate_memory","nativeSrc":"2607:15:87","nodeType":"YulIdentifier","src":"2607:15:87"},"nativeSrc":"2607:17:87","nodeType":"YulFunctionCall","src":"2607:17:87"},"variables":[{"name":"value","nativeSrc":"2598:5:87","nodeType":"YulTypedName","src":"2598:5:87","type":""}]},{"expression":{"arguments":[{"name":"value","nativeSrc":"2640:5:87","nodeType":"YulIdentifier","src":"2640:5:87"},{"arguments":[{"name":"headStart","nativeSrc":"2700:9:87","nodeType":"YulIdentifier","src":"2700:9:87"},{"name":"dataEnd","nativeSrc":"2711:7:87","nodeType":"YulIdentifier","src":"2711:7:87"}],"functionName":{"name":"abi_decode_struct_ReserveConfigurationMap_fromMemory","nativeSrc":"2647:52:87","nodeType":"YulIdentifier","src":"2647:52:87"},"nativeSrc":"2647:72:87","nodeType":"YulFunctionCall","src":"2647:72:87"}],"functionName":{"name":"mstore","nativeSrc":"2633:6:87","nodeType":"YulIdentifier","src":"2633:6:87"},"nativeSrc":"2633:87:87","nodeType":"YulFunctionCall","src":"2633:87:87"},"nativeSrc":"2633:87:87","nodeType":"YulExpressionStatement","src":"2633:87:87"},{"expression":{"arguments":[{"arguments":[{"name":"value","nativeSrc":"2740:5:87","nodeType":"YulIdentifier","src":"2740:5:87"},{"kind":"number","nativeSrc":"2747:2:87","nodeType":"YulLiteral","src":"2747:2:87","type":"","value":"32"}],"functionName":{"name":"add","nativeSrc":"2736:3:87","nodeType":"YulIdentifier","src":"2736:3:87"},"nativeSrc":"2736:14:87","nodeType":"YulFunctionCall","src":"2736:14:87"},{"arguments":[{"arguments":[{"name":"headStart","nativeSrc":"2786:9:87","nodeType":"YulIdentifier","src":"2786:9:87"},{"kind":"number","nativeSrc":"2797:2:87","nodeType":"YulLiteral","src":"2797:2:87","type":"","value":"32"}],"functionName":{"name":"add","nativeSrc":"2782:3:87","nodeType":"YulIdentifier","src":"2782:3:87"},"nativeSrc":"2782:18:87","nodeType":"YulFunctionCall","src":"2782:18:87"}],"functionName":{"name":"abi_decode_uint128_fromMemory","nativeSrc":"2752:29:87","nodeType":"YulIdentifier","src":"2752:29:87"},"nativeSrc":"2752:49:87","nodeType":"YulFunctionCall","src":"2752:49:87"}],"functionName":{"name":"mstore","nativeSrc":"2729:6:87","nodeType":"YulIdentifier","src":"2729:6:87"},"nativeSrc":"2729:73:87","nodeType":"YulFunctionCall","src":"2729:73:87"},"nativeSrc":"2729:73:87","nodeType":"YulExpressionStatement","src":"2729:73:87"},{"expression":{"arguments":[{"arguments":[{"name":"value","nativeSrc":"2822:5:87","nodeType":"YulIdentifier","src":"2822:5:87"},{"kind":"number","nativeSrc":"2829:2:87","nodeType":"YulLiteral","src":"2829:2:87","type":"","value":"64"}],"functionName":{"name":"add","nativeSrc":"2818:3:87","nodeType":"YulIdentifier","src":"2818:3:87"},"nativeSrc":"2818:14:87","nodeType":"YulFunctionCall","src":"2818:14:87"},{"arguments":[{"arguments":[{"name":"headStart","nativeSrc":"2868:9:87","nodeType":"YulIdentifier","src":"2868:9:87"},{"kind":"number","nativeSrc":"2879:2:87","nodeType":"YulLiteral","src":"2879:2:87","type":"","value":"64"}],"functionName":{"name":"add","nativeSrc":"2864:3:87","nodeType":"YulIdentifier","src":"2864:3:87"},"nativeSrc":"2864:18:87","nodeType":"YulFunctionCall","src":"2864:18:87"}],"functionName":{"name":"abi_decode_uint128_fromMemory","nativeSrc":"2834:29:87","nodeType":"YulIdentifier","src":"2834:29:87"},"nativeSrc":"2834:49:87","nodeType":"YulFunctionCall","src":"2834:49:87"}],"functionName":{"name":"mstore","nativeSrc":"2811:6:87","nodeType":"YulIdentifier","src":"2811:6:87"},"nativeSrc":"2811:73:87","nodeType":"YulFunctionCall","src":"2811:73:87"},"nativeSrc":"2811:73:87","nodeType":"YulExpressionStatement","src":"2811:73:87"},{"expression":{"arguments":[{"arguments":[{"name":"value","nativeSrc":"2904:5:87","nodeType":"YulIdentifier","src":"2904:5:87"},{"kind":"number","nativeSrc":"2911:2:87","nodeType":"YulLiteral","src":"2911:2:87","type":"","value":"96"}],"functionName":{"name":"add","nativeSrc":"2900:3:87","nodeType":"YulIdentifier","src":"2900:3:87"},"nativeSrc":"2900:14:87","nodeType":"YulFunctionCall","src":"2900:14:87"},{"arguments":[{"arguments":[{"name":"headStart","nativeSrc":"2950:9:87","nodeType":"YulIdentifier","src":"2950:9:87"},{"kind":"number","nativeSrc":"2961:2:87","nodeType":"YulLiteral","src":"2961:2:87","type":"","value":"96"}],"functionName":{"name":"add","nativeSrc":"2946:3:87","nodeType":"YulIdentifier","src":"2946:3:87"},"nativeSrc":"2946:18:87","nodeType":"YulFunctionCall","src":"2946:18:87"}],"functionName":{"name":"abi_decode_uint128_fromMemory","nativeSrc":"2916:29:87","nodeType":"YulIdentifier","src":"2916:29:87"},"nativeSrc":"2916:49:87","nodeType":"YulFunctionCall","src":"2916:49:87"}],"functionName":{"name":"mstore","nativeSrc":"2893:6:87","nodeType":"YulIdentifier","src":"2893:6:87"},"nativeSrc":"2893:73:87","nodeType":"YulFunctionCall","src":"2893:73:87"},"nativeSrc":"2893:73:87","nodeType":"YulExpressionStatement","src":"2893:73:87"},{"expression":{"arguments":[{"arguments":[{"name":"value","nativeSrc":"2986:5:87","nodeType":"YulIdentifier","src":"2986:5:87"},{"kind":"number","nativeSrc":"2993:3:87","nodeType":"YulLiteral","src":"2993:3:87","type":"","value":"128"}],"functionName":{"name":"add","nativeSrc":"2982:3:87","nodeType":"YulIdentifier","src":"2982:3:87"},"nativeSrc":"2982:15:87","nodeType":"YulFunctionCall","src":"2982:15:87"},{"arguments":[{"arguments":[{"name":"headStart","nativeSrc":"3033:9:87","nodeType":"YulIdentifier","src":"3033:9:87"},{"kind":"number","nativeSrc":"3044:3:87","nodeType":"YulLiteral","src":"3044:3:87","type":"","value":"128"}],"functionName":{"name":"add","nativeSrc":"3029:3:87","nodeType":"YulIdentifier","src":"3029:3:87"},"nativeSrc":"3029:19:87","nodeType":"YulFunctionCall","src":"3029:19:87"}],"functionName":{"name":"abi_decode_uint128_fromMemory","nativeSrc":"2999:29:87","nodeType":"YulIdentifier","src":"2999:29:87"},"nativeSrc":"2999:50:87","nodeType":"YulFunctionCall","src":"2999:50:87"}],"functionName":{"name":"mstore","nativeSrc":"2975:6:87","nodeType":"YulIdentifier","src":"2975:6:87"},"nativeSrc":"2975:75:87","nodeType":"YulFunctionCall","src":"2975:75:87"},"nativeSrc":"2975:75:87","nodeType":"YulExpressionStatement","src":"2975:75:87"},{"expression":{"arguments":[{"arguments":[{"name":"value","nativeSrc":"3070:5:87","nodeType":"YulIdentifier","src":"3070:5:87"},{"kind":"number","nativeSrc":"3077:3:87","nodeType":"YulLiteral","src":"3077:3:87","type":"","value":"160"}],"functionName":{"name":"add","nativeSrc":"3066:3:87","nodeType":"YulIdentifier","src":"3066:3:87"},"nativeSrc":"3066:15:87","nodeType":"YulFunctionCall","src":"3066:15:87"},{"arguments":[{"arguments":[{"name":"headStart","nativeSrc":"3117:9:87","nodeType":"YulIdentifier","src":"3117:9:87"},{"kind":"number","nativeSrc":"3128:3:87","nodeType":"YulLiteral","src":"3128:3:87","type":"","value":"160"}],"functionName":{"name":"add","nativeSrc":"3113:3:87","nodeType":"YulIdentifier","src":"3113:3:87"},"nativeSrc":"3113:19:87","nodeType":"YulFunctionCall","src":"3113:19:87"}],"functionName":{"name":"abi_decode_uint128_fromMemory","nativeSrc":"3083:29:87","nodeType":"YulIdentifier","src":"3083:29:87"},"nativeSrc":"3083:50:87","nodeType":"YulFunctionCall","src":"3083:50:87"}],"functionName":{"name":"mstore","nativeSrc":"3059:6:87","nodeType":"YulIdentifier","src":"3059:6:87"},"nativeSrc":"3059:75:87","nodeType":"YulFunctionCall","src":"3059:75:87"},"nativeSrc":"3059:75:87","nodeType":"YulExpressionStatement","src":"3059:75:87"},{"expression":{"arguments":[{"arguments":[{"name":"value","nativeSrc":"3154:5:87","nodeType":"YulIdentifier","src":"3154:5:87"},{"kind":"number","nativeSrc":"3161:3:87","nodeType":"YulLiteral","src":"3161:3:87","type":"","value":"192"}],"functionName":{"name":"add","nativeSrc":"3150:3:87","nodeType":"YulIdentifier","src":"3150:3:87"},"nativeSrc":"3150:15:87","nodeType":"YulFunctionCall","src":"3150:15:87"},{"arguments":[{"arguments":[{"name":"headStart","nativeSrc":"3200:9:87","nodeType":"YulIdentifier","src":"3200:9:87"},{"kind":"number","nativeSrc":"3211:3:87","nodeType":"YulLiteral","src":"3211:3:87","type":"","value":"192"}],"functionName":{"name":"add","nativeSrc":"3196:3:87","nodeType":"YulIdentifier","src":"3196:3:87"},"nativeSrc":"3196:19:87","nodeType":"YulFunctionCall","src":"3196:19:87"}],"functionName":{"name":"abi_decode_uint40_fromMemory","nativeSrc":"3167:28:87","nodeType":"YulIdentifier","src":"3167:28:87"},"nativeSrc":"3167:49:87","nodeType":"YulFunctionCall","src":"3167:49:87"}],"functionName":{"name":"mstore","nativeSrc":"3143:6:87","nodeType":"YulIdentifier","src":"3143:6:87"},"nativeSrc":"3143:74:87","nodeType":"YulFunctionCall","src":"3143:74:87"},"nativeSrc":"3143:74:87","nodeType":"YulExpressionStatement","src":"3143:74:87"},{"expression":{"arguments":[{"arguments":[{"name":"value","nativeSrc":"3237:5:87","nodeType":"YulIdentifier","src":"3237:5:87"},{"kind":"number","nativeSrc":"3244:3:87","nodeType":"YulLiteral","src":"3244:3:87","type":"","value":"224"}],"functionName":{"name":"add","nativeSrc":"3233:3:87","nodeType":"YulIdentifier","src":"3233:3:87"},"nativeSrc":"3233:15:87","nodeType":"YulFunctionCall","src":"3233:15:87"},{"arguments":[{"arguments":[{"name":"headStart","nativeSrc":"3283:9:87","nodeType":"YulIdentifier","src":"3283:9:87"},{"kind":"number","nativeSrc":"3294:3:87","nodeType":"YulLiteral","src":"3294:3:87","type":"","value":"224"}],"functionName":{"name":"add","nativeSrc":"3279:3:87","nodeType":"YulIdentifier","src":"3279:3:87"},"nativeSrc":"3279:19:87","nodeType":"YulFunctionCall","src":"3279:19:87"}],"functionName":{"name":"abi_decode_uint16_fromMemory","nativeSrc":"3250:28:87","nodeType":"YulIdentifier","src":"3250:28:87"},"nativeSrc":"3250:49:87","nodeType":"YulFunctionCall","src":"3250:49:87"}],"functionName":{"name":"mstore","nativeSrc":"3226:6:87","nodeType":"YulIdentifier","src":"3226:6:87"},"nativeSrc":"3226:74:87","nodeType":"YulFunctionCall","src":"3226:74:87"},"nativeSrc":"3226:74:87","nodeType":"YulExpressionStatement","src":"3226:74:87"},{"expression":{"arguments":[{"arguments":[{"name":"value","nativeSrc":"3320:5:87","nodeType":"YulIdentifier","src":"3320:5:87"},{"kind":"number","nativeSrc":"3327:3:87","nodeType":"YulLiteral","src":"3327:3:87","type":"","value":"256"}],"functionName":{"name":"add","nativeSrc":"3316:3:87","nodeType":"YulIdentifier","src":"3316:3:87"},"nativeSrc":"3316:15:87","nodeType":"YulFunctionCall","src":"3316:15:87"},{"arguments":[{"arguments":[{"name":"headStart","nativeSrc":"3367:9:87","nodeType":"YulIdentifier","src":"3367:9:87"},{"kind":"number","nativeSrc":"3378:3:87","nodeType":"YulLiteral","src":"3378:3:87","type":"","value":"256"}],"functionName":{"name":"add","nativeSrc":"3363:3:87","nodeType":"YulIdentifier","src":"3363:3:87"},"nativeSrc":"3363:19:87","nodeType":"YulFunctionCall","src":"3363:19:87"}],"functionName":{"name":"abi_decode_address_fromMemory","nativeSrc":"3333:29:87","nodeType":"YulIdentifier","src":"3333:29:87"},"nativeSrc":"3333:50:87","nodeType":"YulFunctionCall","src":"3333:50:87"}],"functionName":{"name":"mstore","nativeSrc":"3309:6:87","nodeType":"YulIdentifier","src":"3309:6:87"},"nativeSrc":"3309:75:87","nodeType":"YulFunctionCall","src":"3309:75:87"},"nativeSrc":"3309:75:87","nodeType":"YulExpressionStatement","src":"3309:75:87"},{"expression":{"arguments":[{"arguments":[{"name":"value","nativeSrc":"3404:5:87","nodeType":"YulIdentifier","src":"3404:5:87"},{"kind":"number","nativeSrc":"3411:3:87","nodeType":"YulLiteral","src":"3411:3:87","type":"","value":"288"}],"functionName":{"name":"add","nativeSrc":"3400:3:87","nodeType":"YulIdentifier","src":"3400:3:87"},"nativeSrc":"3400:15:87","nodeType":"YulFunctionCall","src":"3400:15:87"},{"arguments":[{"arguments":[{"name":"headStart","nativeSrc":"3451:9:87","nodeType":"YulIdentifier","src":"3451:9:87"},{"kind":"number","nativeSrc":"3462:3:87","nodeType":"YulLiteral","src":"3462:3:87","type":"","value":"288"}],"functionName":{"name":"add","nativeSrc":"3447:3:87","nodeType":"YulIdentifier","src":"3447:3:87"},"nativeSrc":"3447:19:87","nodeType":"YulFunctionCall","src":"3447:19:87"}],"functionName":{"name":"abi_decode_address_fromMemory","nativeSrc":"3417:29:87","nodeType":"YulIdentifier","src":"3417:29:87"},"nativeSrc":"3417:50:87","nodeType":"YulFunctionCall","src":"3417:50:87"}],"functionName":{"name":"mstore","nativeSrc":"3393:6:87","nodeType":"YulIdentifier","src":"3393:6:87"},"nativeSrc":"3393:75:87","nodeType":"YulFunctionCall","src":"3393:75:87"},"nativeSrc":"3393:75:87","nodeType":"YulExpressionStatement","src":"3393:75:87"},{"expression":{"arguments":[{"arguments":[{"name":"value","nativeSrc":"3488:5:87","nodeType":"YulIdentifier","src":"3488:5:87"},{"kind":"number","nativeSrc":"3495:3:87","nodeType":"YulLiteral","src":"3495:3:87","type":"","value":"320"}],"functionName":{"name":"add","nativeSrc":"3484:3:87","nodeType":"YulIdentifier","src":"3484:3:87"},"nativeSrc":"3484:15:87","nodeType":"YulFunctionCall","src":"3484:15:87"},{"arguments":[{"arguments":[{"name":"headStart","nativeSrc":"3535:9:87","nodeType":"YulIdentifier","src":"3535:9:87"},{"kind":"number","nativeSrc":"3546:3:87","nodeType":"YulLiteral","src":"3546:3:87","type":"","value":"320"}],"functionName":{"name":"add","nativeSrc":"3531:3:87","nodeType":"YulIdentifier","src":"3531:3:87"},"nativeSrc":"3531:19:87","nodeType":"YulFunctionCall","src":"3531:19:87"}],"functionName":{"name":"abi_decode_address_fromMemory","nativeSrc":"3501:29:87","nodeType":"YulIdentifier","src":"3501:29:87"},"nativeSrc":"3501:50:87","nodeType":"YulFunctionCall","src":"3501:50:87"}],"functionName":{"name":"mstore","nativeSrc":"3477:6:87","nodeType":"YulIdentifier","src":"3477:6:87"},"nativeSrc":"3477:75:87","nodeType":"YulFunctionCall","src":"3477:75:87"},"nativeSrc":"3477:75:87","nodeType":"YulExpressionStatement","src":"3477:75:87"},{"expression":{"arguments":[{"arguments":[{"name":"value","nativeSrc":"3572:5:87","nodeType":"YulIdentifier","src":"3572:5:87"},{"kind":"number","nativeSrc":"3579:3:87","nodeType":"YulLiteral","src":"3579:3:87","type":"","value":"352"}],"functionName":{"name":"add","nativeSrc":"3568:3:87","nodeType":"YulIdentifier","src":"3568:3:87"},"nativeSrc":"3568:15:87","nodeType":"YulFunctionCall","src":"3568:15:87"},{"arguments":[{"arguments":[{"name":"headStart","nativeSrc":"3619:9:87","nodeType":"YulIdentifier","src":"3619:9:87"},{"kind":"number","nativeSrc":"3630:3:87","nodeType":"YulLiteral","src":"3630:3:87","type":"","value":"352"}],"functionName":{"name":"add","nativeSrc":"3615:3:87","nodeType":"YulIdentifier","src":"3615:3:87"},"nativeSrc":"3615:19:87","nodeType":"YulFunctionCall","src":"3615:19:87"}],"functionName":{"name":"abi_decode_address_fromMemory","nativeSrc":"3585:29:87","nodeType":"YulIdentifier","src":"3585:29:87"},"nativeSrc":"3585:50:87","nodeType":"YulFunctionCall","src":"3585:50:87"}],"functionName":{"name":"mstore","nativeSrc":"3561:6:87","nodeType":"YulIdentifier","src":"3561:6:87"},"nativeSrc":"3561:75:87","nodeType":"YulFunctionCall","src":"3561:75:87"},"nativeSrc":"3561:75:87","nodeType":"YulExpressionStatement","src":"3561:75:87"},{"expression":{"arguments":[{"arguments":[{"name":"value","nativeSrc":"3656:5:87","nodeType":"YulIdentifier","src":"3656:5:87"},{"kind":"number","nativeSrc":"3663:3:87","nodeType":"YulLiteral","src":"3663:3:87","type":"","value":"384"}],"functionName":{"name":"add","nativeSrc":"3652:3:87","nodeType":"YulIdentifier","src":"3652:3:87"},"nativeSrc":"3652:15:87","nodeType":"YulFunctionCall","src":"3652:15:87"},{"arguments":[{"arguments":[{"name":"headStart","nativeSrc":"3703:9:87","nodeType":"YulIdentifier","src":"3703:9:87"},{"kind":"number","nativeSrc":"3714:3:87","nodeType":"YulLiteral","src":"3714:3:87","type":"","value":"384"}],"functionName":{"name":"add","nativeSrc":"3699:3:87","nodeType":"YulIdentifier","src":"3699:3:87"},"nativeSrc":"3699:19:87","nodeType":"YulFunctionCall","src":"3699:19:87"}],"functionName":{"name":"abi_decode_uint128_fromMemory","nativeSrc":"3669:29:87","nodeType":"YulIdentifier","src":"3669:29:87"},"nativeSrc":"3669:50:87","nodeType":"YulFunctionCall","src":"3669:50:87"}],"functionName":{"name":"mstore","nativeSrc":"3645:6:87","nodeType":"YulIdentifier","src":"3645:6:87"},"nativeSrc":"3645:75:87","nodeType":"YulFunctionCall","src":"3645:75:87"},"nativeSrc":"3645:75:87","nodeType":"YulExpressionStatement","src":"3645:75:87"},{"expression":{"arguments":[{"arguments":[{"name":"value","nativeSrc":"3740:5:87","nodeType":"YulIdentifier","src":"3740:5:87"},{"kind":"number","nativeSrc":"3747:3:87","nodeType":"YulLiteral","src":"3747:3:87","type":"","value":"416"}],"functionName":{"name":"add","nativeSrc":"3736:3:87","nodeType":"YulIdentifier","src":"3736:3:87"},"nativeSrc":"3736:15:87","nodeType":"YulFunctionCall","src":"3736:15:87"},{"arguments":[{"arguments":[{"name":"headStart","nativeSrc":"3787:9:87","nodeType":"YulIdentifier","src":"3787:9:87"},{"kind":"number","nativeSrc":"3798:3:87","nodeType":"YulLiteral","src":"3798:3:87","type":"","value":"416"}],"functionName":{"name":"add","nativeSrc":"3783:3:87","nodeType":"YulIdentifier","src":"3783:3:87"},"nativeSrc":"3783:19:87","nodeType":"YulFunctionCall","src":"3783:19:87"}],"functionName":{"name":"abi_decode_uint128_fromMemory","nativeSrc":"3753:29:87","nodeType":"YulIdentifier","src":"3753:29:87"},"nativeSrc":"3753:50:87","nodeType":"YulFunctionCall","src":"3753:50:87"}],"functionName":{"name":"mstore","nativeSrc":"3729:6:87","nodeType":"YulIdentifier","src":"3729:6:87"},"nativeSrc":"3729:75:87","nodeType":"YulFunctionCall","src":"3729:75:87"},"nativeSrc":"3729:75:87","nodeType":"YulExpressionStatement","src":"3729:75:87"},{"expression":{"arguments":[{"arguments":[{"name":"value","nativeSrc":"3824:5:87","nodeType":"YulIdentifier","src":"3824:5:87"},{"kind":"number","nativeSrc":"3831:3:87","nodeType":"YulLiteral","src":"3831:3:87","type":"","value":"448"}],"functionName":{"name":"add","nativeSrc":"3820:3:87","nodeType":"YulIdentifier","src":"3820:3:87"},"nativeSrc":"3820:15:87","nodeType":"YulFunctionCall","src":"3820:15:87"},{"arguments":[{"arguments":[{"name":"headStart","nativeSrc":"3871:9:87","nodeType":"YulIdentifier","src":"3871:9:87"},{"kind":"number","nativeSrc":"3882:3:87","nodeType":"YulLiteral","src":"3882:3:87","type":"","value":"448"}],"functionName":{"name":"add","nativeSrc":"3867:3:87","nodeType":"YulIdentifier","src":"3867:3:87"},"nativeSrc":"3867:19:87","nodeType":"YulFunctionCall","src":"3867:19:87"}],"functionName":{"name":"abi_decode_uint128_fromMemory","nativeSrc":"3837:29:87","nodeType":"YulIdentifier","src":"3837:29:87"},"nativeSrc":"3837:50:87","nodeType":"YulFunctionCall","src":"3837:50:87"}],"functionName":{"name":"mstore","nativeSrc":"3813:6:87","nodeType":"YulIdentifier","src":"3813:6:87"},"nativeSrc":"3813:75:87","nodeType":"YulFunctionCall","src":"3813:75:87"},"nativeSrc":"3813:75:87","nodeType":"YulExpressionStatement","src":"3813:75:87"},{"nativeSrc":"3897:15:87","nodeType":"YulAssignment","src":"3897:15:87","value":{"name":"value","nativeSrc":"3907:5:87","nodeType":"YulIdentifier","src":"3907:5:87"},"variableNames":[{"name":"value0","nativeSrc":"3897:6:87","nodeType":"YulIdentifier","src":"3897:6:87"}]}]},"name":"abi_decode_tuple_t_struct$_ReserveData_$17774_memory_ptr_fromMemory","nativeSrc":"2374:1544:87","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nativeSrc":"2451:9:87","nodeType":"YulTypedName","src":"2451:9:87","type":""},{"name":"dataEnd","nativeSrc":"2462:7:87","nodeType":"YulTypedName","src":"2462:7:87","type":""}],"returnVariables":[{"name":"value0","nativeSrc":"2474:6:87","nodeType":"YulTypedName","src":"2474:6:87","type":""}],"src":"2374:1544:87"},{"body":{"nativeSrc":"4150:252:87","nodeType":"YulBlock","src":"4150:252:87","statements":[{"expression":{"arguments":[{"name":"headStart","nativeSrc":"4167:9:87","nodeType":"YulIdentifier","src":"4167:9:87"},{"kind":"number","nativeSrc":"4178:2:87","nodeType":"YulLiteral","src":"4178:2:87","type":"","value":"64"}],"functionName":{"name":"mstore","nativeSrc":"4160:6:87","nodeType":"YulIdentifier","src":"4160:6:87"},"nativeSrc":"4160:21:87","nodeType":"YulFunctionCall","src":"4160:21:87"},"nativeSrc":"4160:21:87","nodeType":"YulExpressionStatement","src":"4160:21:87"},{"expression":{"arguments":[{"arguments":[{"name":"headStart","nativeSrc":"4201:9:87","nodeType":"YulIdentifier","src":"4201:9:87"},{"kind":"number","nativeSrc":"4212:2:87","nodeType":"YulLiteral","src":"4212:2:87","type":"","value":"64"}],"functionName":{"name":"add","nativeSrc":"4197:3:87","nodeType":"YulIdentifier","src":"4197:3:87"},"nativeSrc":"4197:18:87","nodeType":"YulFunctionCall","src":"4197:18:87"},{"kind":"number","nativeSrc":"4217:2:87","nodeType":"YulLiteral","src":"4217:2:87","type":"","value":"30"}],"functionName":{"name":"mstore","nativeSrc":"4190:6:87","nodeType":"YulIdentifier","src":"4190:6:87"},"nativeSrc":"4190:30:87","nodeType":"YulFunctionCall","src":"4190:30:87"},"nativeSrc":"4190:30:87","nodeType":"YulExpressionStatement","src":"4190:30:87"},{"expression":{"arguments":[{"arguments":[{"name":"headStart","nativeSrc":"4240:9:87","nodeType":"YulIdentifier","src":"4240:9:87"},{"kind":"number","nativeSrc":"4251:2:87","nodeType":"YulLiteral","src":"4251:2:87","type":"","value":"96"}],"functionName":{"name":"add","nativeSrc":"4236:3:87","nodeType":"YulIdentifier","src":"4236:3:87"},"nativeSrc":"4236:18:87","nodeType":"YulFunctionCall","src":"4236:18:87"},{"hexValue":"636f2e656e7375726f2e496e766573745374726174656779436c69656e74","kind":"string","nativeSrc":"4256:32:87","nodeType":"YulLiteral","src":"4256:32:87","type":"","value":"co.ensuro.InvestStrategyClient"}],"functionName":{"name":"mstore","nativeSrc":"4229:6:87","nodeType":"YulIdentifier","src":"4229:6:87"},"nativeSrc":"4229:60:87","nodeType":"YulFunctionCall","src":"4229:60:87"},"nativeSrc":"4229:60:87","nodeType":"YulExpressionStatement","src":"4229:60:87"},{"nativeSrc":"4298:27:87","nodeType":"YulAssignment","src":"4298:27:87","value":{"arguments":[{"name":"headStart","nativeSrc":"4310:9:87","nodeType":"YulIdentifier","src":"4310:9:87"},{"kind":"number","nativeSrc":"4321:3:87","nodeType":"YulLiteral","src":"4321:3:87","type":"","value":"128"}],"functionName":{"name":"add","nativeSrc":"4306:3:87","nodeType":"YulIdentifier","src":"4306:3:87"},"nativeSrc":"4306:19:87","nodeType":"YulFunctionCall","src":"4306:19:87"},"variableNames":[{"name":"tail","nativeSrc":"4298:4:87","nodeType":"YulIdentifier","src":"4298:4:87"}]},{"expression":{"arguments":[{"arguments":[{"name":"headStart","nativeSrc":"4345:9:87","nodeType":"YulIdentifier","src":"4345:9:87"},{"kind":"number","nativeSrc":"4356:4:87","nodeType":"YulLiteral","src":"4356:4:87","type":"","value":"0x20"}],"functionName":{"name":"add","nativeSrc":"4341:3:87","nodeType":"YulIdentifier","src":"4341:3:87"},"nativeSrc":"4341:20:87","nodeType":"YulFunctionCall","src":"4341:20:87"},{"arguments":[{"name":"value0","nativeSrc":"4367:6:87","nodeType":"YulIdentifier","src":"4367:6:87"},{"arguments":[{"arguments":[{"kind":"number","nativeSrc":"4383:3:87","nodeType":"YulLiteral","src":"4383:3:87","type":"","value":"160"},{"kind":"number","nativeSrc":"4388:1:87","nodeType":"YulLiteral","src":"4388:1:87","type":"","value":"1"}],"functionName":{"name":"shl","nativeSrc":"4379:3:87","nodeType":"YulIdentifier","src":"4379:3:87"},"nativeSrc":"4379:11:87","nodeType":"YulFunctionCall","src":"4379:11:87"},{"kind":"number","nativeSrc":"4392:1:87","nodeType":"YulLiteral","src":"4392:1:87","type":"","value":"1"}],"functionName":{"name":"sub","nativeSrc":"4375:3:87","nodeType":"YulIdentifier","src":"4375:3:87"},"nativeSrc":"4375:19:87","nodeType":"YulFunctionCall","src":"4375:19:87"}],"functionName":{"name":"and","nativeSrc":"4363:3:87","nodeType":"YulIdentifier","src":"4363:3:87"},"nativeSrc":"4363:32:87","nodeType":"YulFunctionCall","src":"4363:32:87"}],"functionName":{"name":"mstore","nativeSrc":"4334:6:87","nodeType":"YulIdentifier","src":"4334:6:87"},"nativeSrc":"4334:62:87","nodeType":"YulFunctionCall","src":"4334:62:87"},"nativeSrc":"4334:62:87","nodeType":"YulExpressionStatement","src":"4334:62:87"}]},"name":"abi_encode_tuple_t_stringliteral_4fed0cd3539a36e00a34a6c026c2615824c9ad47da5ef65e8372c7e721c05d79_t_contract$_IInvestStrategy_$20725__to_t_string_memory_ptr_t_address__fromStack_reversed","nativeSrc":"3923:479:87","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nativeSrc":"4119:9:87","nodeType":"YulTypedName","src":"4119:9:87","type":""},{"name":"value0","nativeSrc":"4130:6:87","nodeType":"YulTypedName","src":"4130:6:87","type":""}],"returnVariables":[{"name":"tail","nativeSrc":"4141:4:87","nodeType":"YulTypedName","src":"4141:4:87","type":""}],"src":"3923:479:87"}]},"contents":"{\n    { }\n    function validator_revert_contract_IERC20(value)\n    {\n        if iszero(eq(value, and(value, sub(shl(160, 1), 1)))) { revert(0, 0) }\n    }\n    function abi_decode_tuple_t_contract$_IERC20_$8679t_contract$_IPool_$19003_fromMemory(headStart, dataEnd) -> value0, value1\n    {\n        if slt(sub(dataEnd, headStart), 64) { revert(0, 0) }\n        let value := mload(headStart)\n        validator_revert_contract_IERC20(value)\n        value0 := value\n        let value_1 := mload(add(headStart, 32))\n        validator_revert_contract_IERC20(value_1)\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, sub(shl(160, 1), 1)))\n    }\n    function allocate_memory() -> memPtr\n    {\n        memPtr := mload(64)\n        let newFreePtr := add(memPtr, 480)\n        if or(gt(newFreePtr, sub(shl(64, 1), 1)), lt(newFreePtr, memPtr))\n        {\n            mstore(0, shl(224, 0x4e487b71))\n            mstore(4, 0x41)\n            revert(0, 0x24)\n        }\n        mstore(64, newFreePtr)\n    }\n    function abi_decode_struct_ReserveConfigurationMap_fromMemory(headStart, end) -> value\n    {\n        if slt(sub(end, headStart), 0x20) { revert(0, 0) }\n        let memPtr := 0\n        memPtr := mload(64)\n        let newFreePtr := add(memPtr, 0x20)\n        if or(gt(newFreePtr, sub(shl(64, 1), 1)), lt(newFreePtr, memPtr))\n        {\n            mstore(0, shl(224, 0x4e487b71))\n            mstore(4, 0x41)\n            revert(0, 0x24)\n        }\n        mstore(64, newFreePtr)\n        value := memPtr\n        mstore(memPtr, mload(headStart))\n    }\n    function abi_decode_uint128_fromMemory(offset) -> value\n    {\n        value := mload(offset)\n        if iszero(eq(value, and(value, sub(shl(128, 1), 1)))) { revert(0, 0) }\n    }\n    function abi_decode_uint40_fromMemory(offset) -> value\n    {\n        value := mload(offset)\n        if iszero(eq(value, and(value, 0xffffffffff))) { revert(0, 0) }\n    }\n    function abi_decode_uint16_fromMemory(offset) -> value\n    {\n        value := mload(offset)\n        if iszero(eq(value, and(value, 0xffff))) { revert(0, 0) }\n    }\n    function abi_decode_address_fromMemory(offset) -> value\n    {\n        value := mload(offset)\n        validator_revert_contract_IERC20(value)\n    }\n    function abi_decode_tuple_t_struct$_ReserveData_$17774_memory_ptr_fromMemory(headStart, dataEnd) -> value0\n    {\n        let _1 := slt(sub(dataEnd, headStart), 480)\n        if _1 { revert(0, 0) }\n        _1 := 0\n        let value := allocate_memory()\n        mstore(value, abi_decode_struct_ReserveConfigurationMap_fromMemory(headStart, dataEnd))\n        mstore(add(value, 32), abi_decode_uint128_fromMemory(add(headStart, 32)))\n        mstore(add(value, 64), abi_decode_uint128_fromMemory(add(headStart, 64)))\n        mstore(add(value, 96), abi_decode_uint128_fromMemory(add(headStart, 96)))\n        mstore(add(value, 128), abi_decode_uint128_fromMemory(add(headStart, 128)))\n        mstore(add(value, 160), abi_decode_uint128_fromMemory(add(headStart, 160)))\n        mstore(add(value, 192), abi_decode_uint40_fromMemory(add(headStart, 192)))\n        mstore(add(value, 224), abi_decode_uint16_fromMemory(add(headStart, 224)))\n        mstore(add(value, 256), abi_decode_address_fromMemory(add(headStart, 256)))\n        mstore(add(value, 288), abi_decode_address_fromMemory(add(headStart, 288)))\n        mstore(add(value, 320), abi_decode_address_fromMemory(add(headStart, 320)))\n        mstore(add(value, 352), abi_decode_address_fromMemory(add(headStart, 352)))\n        mstore(add(value, 384), abi_decode_uint128_fromMemory(add(headStart, 384)))\n        mstore(add(value, 416), abi_decode_uint128_fromMemory(add(headStart, 416)))\n        mstore(add(value, 448), abi_decode_uint128_fromMemory(add(headStart, 448)))\n        value0 := value\n    }\n    function abi_encode_tuple_t_stringliteral_4fed0cd3539a36e00a34a6c026c2615824c9ad47da5ef65e8372c7e721c05d79_t_contract$_IInvestStrategy_$20725__to_t_string_memory_ptr_t_address__fromStack_reversed(headStart, value0) -> tail\n    {\n        mstore(headStart, 64)\n        mstore(add(headStart, 64), 30)\n        mstore(add(headStart, 96), \"co.ensuro.InvestStrategyClient\")\n        tail := add(headStart, 128)\n        mstore(add(headStart, 0x20), and(value0, sub(shl(160, 1), 1)))\n    }\n}","id":87,"language":"Yul","name":"#utility.yul"}],"linkReferences":{},"object":"3060808181526040610120818152601e610160527f636f2e656e7375726f2e496e766573745374726174656779436c69656e74000061018052610140939093526101008290526101a09052902060a05234801561005a575f5ffd5b506040516110e03803806110e08339810160408190526100799161013f565b6040516335ea6a7560e01b81526001600160a01b0383811660048301525f91908316906335ea6a75906024016101e060405180830381865afa1580156100c1573d5f5f3e3d5ffd5b505050506040513d601f19601f820116820180604052508101906100e59190610242565b61010001516001600160a01b0316036101115760405163c3eb4ed560e01b815260040160405180910390fd5b6001600160a01b0390811660c0521660e05261036c565b6001600160a01b038116811461013c575f5ffd5b50565b5f5f60408385031215610150575f5ffd5b825161015b81610128565b602084015190925061016c81610128565b809150509250929050565b6040516101e081016001600160401b03811182821017156101a657634e487b7160e01b5f52604160045260245ffd5b60405290565b5f602082840312156101bc575f5ffd5b604051602081016001600160401b03811182821017156101ea57634e487b7160e01b5f52604160045260245ffd5b6040529151825250919050565b80516001600160801b038116811461020d575f5ffd5b919050565b805164ffffffffff8116811461020d575f5ffd5b805161ffff8116811461020d575f5ffd5b805161020d81610128565b5f6101e0828403128015610254575f5ffd5b5061025d610177565b61026784846101ac565b8152610275602084016101f7565b6020820152610286604084016101f7565b6040820152610297606084016101f7565b60608201526102a8608084016101f7565b60808201526102b960a084016101f7565b60a08201526102ca60c08401610212565b60c08201526102db60e08401610226565b60e08201526102ed6101008401610237565b6101008201526103006101208401610237565b6101208201526103136101408401610237565b6101408201526103266101608401610237565b61016082015261033961018084016101f7565b61018082015261034c6101a084016101f7565b6101a082015261035f6101c084016101f7565b6101c08201529392505050565b60805160a05160c05160e051610cf46103ec5f395f818161014901528181610280015281816106e2015281816107bf015261084101525f81816102b50152818161070a01528181610790015261087c01525f61011601525f81816101db01528181610224015281816103830152818161046c01526104d50152610cf45ff3fe608060405234801561000f575f5ffd5b506004361061009b575f3560e01c80639c4667a2116100635780639c4667a2146101385780639cd4712814610183578063b6b55f2514610196578063ce96cb77146101a9578063f3e0ffbf146101bc575f5ffd5b80630981b1c21461009f5780632e1a7d4d146100c8578063402d267d146100dd5780635a117456146100fe5780635b9a4c3514610111575b5f5ffd5b6100b26100ad36600461099f565b6101cf565b6040516100bf91906109f1565b60405180910390f35b6100db6100d6366004610a26565b61021a565b005b6100f06100eb366004610a51565b610324565b6040519081526020016100bf565b6100db61010c366004610a79565b610379565b6100f07f000000000000000000000000000000000000000000000000000000000000000081565b61016b610146366004610a51565b507f000000000000000000000000000000000000000000000000000000000000000090565b6040516001600160a01b0390911681526020016100bf565b6100db610191366004610a94565b610462565b6100db6101a4366004610a26565b6104cb565b6100f06101b7366004610a51565b610523565b6100f06101ca366004610a51565b6105cf565b60606001600160a01b037f000000000000000000000000000000000000000000000000000000000000000016300361009b57604051632abf118b60e21b815260040160405180910390fd5b6001600160a01b037f000000000000000000000000000000000000000000000000000000000000000016300361026357604051632abf118b60e21b815260040160405180910390fd5b801561032157604051631a4ca37b60e21b81526001600160a01b037f000000000000000000000000000000000000000000000000000000000000000081166004830152602482018390523060448301527f000000000000000000000000000000000000000000000000000000000000000016906369328dec906064016020604051808303815f875af11580156102fb573d5f5f3e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061031f9190610ace565b505b50565b5f5f61032e61064c565b805151909150600160381b16158061034d57508051516001603c1b1615155b8061036357508051516702000000000000001615155b1561037057505f92915050565b505f1992915050565b6001600160a01b037f00000000000000000000000000000000000000000000000000000000000000001630036103c257604051632abf118b60e21b815260040160405180910390fd5b5f6103cb61064c565b610100015190508115801561044457506040516370a0823160e01b81523060048201526001600160a01b038216906370a0823190602401602060405180830381865afa15801561041d573d5f5f3e3d5ffd5b505050506040513d601f19601f820116820180604052508101906104419190610ace565b15155b1561031f576040516342a176d160e11b815260040160405180910390fd5b6001600160a01b037f00000000000000000000000000000000000000000000000000000000000000001630036104ab57604051632abf118b60e21b815260040160405180910390fd5b805115610321576040516350701b6160e01b815260040160405180910390fd5b6001600160a01b037f000000000000000000000000000000000000000000000000000000000000000016300361051457604051632abf118b60e21b815260040160405180910390fd5b80156103215761032181610779565b5f5f61052d61064c565b805151909150600160381b16158061054c57508051516001603c1b1615155b1561055957505f92915050565b6101008101516040516370a0823160e01b81526001600160a01b038581166004830152909116906370a0823190602401602060405180830381865afa1580156105a4573d5f5f3e3d5ffd5b505050506040513d601f19601f820116820180604052508101906105c89190610ace565b9392505050565b5f6105d861064c565b61010001516040516370a0823160e01b81526001600160a01b038481166004830152909116906370a0823190602401602060405180830381865afa158015610622573d5f5f3e3d5ffd5b505050506040513d601f19601f820116820180604052508101906106469190610ace565b92915050565b60408051610200810182525f6101e08201818152825260208201819052918101829052606081018290526080810182905260a0810182905260c0810182905260e08101829052610100810182905261012081018290526101408101829052610160810182905261018081018290526101a081018290526101c08101919091526040516335ea6a7560e01b81526001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000811660048301527f000000000000000000000000000000000000000000000000000000000000000016906335ea6a75906024016101e060405180830381865afa158015610750573d5f5f3e3d5ffd5b505050506040513d601f19601f820116820180604052508101906107749190610b79565b905090565b60405163095ea7b360e01b81526001600160a01b037f000000000000000000000000000000000000000000000000000000000000000081166004830152602482018390527f0000000000000000000000000000000000000000000000000000000000000000169063095ea7b3906044016020604051808303815f875af1158015610805573d5f5f3e3d5ffd5b505050506040513d601f19601f820116820180604052508101906108299190610ca3565b5060405163617ba03760e01b81526001600160a01b037f000000000000000000000000000000000000000000000000000000000000000081166004830152602482018390523060448301525f60648301527f0000000000000000000000000000000000000000000000000000000000000000169063617ba037906084015f604051808303815f87803b1580156108bd575f5ffd5b505af11580156108cf573d5f5f3e3d5ffd5b5050505050565b634e487b7160e01b5f52604160045260245ffd5b6040516101e0810167ffffffffffffffff8111828210171561090e5761090e6108d6565b60405290565b5f82601f830112610923575f5ffd5b813567ffffffffffffffff81111561093d5761093d6108d6565b604051601f8201601f19908116603f0116810167ffffffffffffffff8111828210171561096c5761096c6108d6565b604052818152838201602001851015610983575f5ffd5b816020850160208301375f918101602001919091529392505050565b5f5f604083850312156109b0575f5ffd5b823560ff811681146109c0575f5ffd5b9150602083013567ffffffffffffffff8111156109db575f5ffd5b6109e785828601610914565b9150509250929050565b602081525f82518060208401528060208501604085015e5f604082850101526040601f19601f83011684010191505092915050565b5f60208284031215610a36575f5ffd5b5035919050565b6001600160a01b0381168114610321575f5ffd5b5f60208284031215610a61575f5ffd5b81356105c881610a3d565b8015158114610321575f5ffd5b5f60208284031215610a89575f5ffd5b81356105c881610a6c565b5f60208284031215610aa4575f5ffd5b813567ffffffffffffffff811115610aba575f5ffd5b610ac684828501610914565b949350505050565b5f60208284031215610ade575f5ffd5b5051919050565b5f60208284031215610af5575f5ffd5b6040516020810167ffffffffffffffff81118282101715610b1857610b186108d6565b6040529151825250919050565b80516fffffffffffffffffffffffffffffffff81168114610b44575f5ffd5b919050565b805164ffffffffff81168114610b44575f5ffd5b805161ffff81168114610b44575f5ffd5b8051610b4481610a3d565b5f6101e0828403128015610b8b575f5ffd5b50610b946108ea565b610b9e8484610ae5565b8152610bac60208401610b25565b6020820152610bbd60408401610b25565b6040820152610bce60608401610b25565b6060820152610bdf60808401610b25565b6080820152610bf060a08401610b25565b60a0820152610c0160c08401610b49565b60c0820152610c1260e08401610b5d565b60e0820152610c246101008401610b6e565b610100820152610c376101208401610b6e565b610120820152610c4a6101408401610b6e565b610140820152610c5d6101608401610b6e565b610160820152610c706101808401610b25565b610180820152610c836101a08401610b25565b6101a0820152610c966101c08401610b25565b6101c08201529392505050565b5f60208284031215610cb3575f5ffd5b81516105c881610a6c56fea2646970667358221220459e60c04855590e2a26eb614f7c3854430fcd65bf7000bc3d011ce87759b09664736f6c634300081e0033","opcodes":"ADDRESS PUSH1 0x80 DUP2 DUP2 MSTORE PUSH1 0x40 PUSH2 0x120 DUP2 DUP2 MSTORE PUSH1 0x1E PUSH2 0x160 MSTORE PUSH32 0x636F2E656E7375726F2E496E766573745374726174656779436C69656E740000 PUSH2 0x180 MSTORE PUSH2 0x140 SWAP4 SWAP1 SWAP4 MSTORE PUSH2 0x100 DUP3 SWAP1 MSTORE PUSH2 0x1A0 SWAP1 MSTORE SWAP1 KECCAK256 PUSH1 0xA0 MSTORE CALLVALUE DUP1 ISZERO PUSH2 0x5A JUMPI PUSH0 PUSH0 REVERT JUMPDEST POP PUSH1 0x40 MLOAD PUSH2 0x10E0 CODESIZE SUB DUP1 PUSH2 0x10E0 DUP4 CODECOPY DUP2 ADD PUSH1 0x40 DUP2 SWAP1 MSTORE PUSH2 0x79 SWAP2 PUSH2 0x13F JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH4 0x35EA6A75 PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP4 DUP2 AND PUSH1 0x4 DUP4 ADD MSTORE PUSH0 SWAP2 SWAP1 DUP4 AND SWAP1 PUSH4 0x35EA6A75 SWAP1 PUSH1 0x24 ADD PUSH2 0x1E0 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0xC1 JUMPI RETURNDATASIZE PUSH0 PUSH0 RETURNDATACOPY RETURNDATASIZE PUSH0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP3 ADD DUP1 PUSH1 0x40 MSTORE POP DUP2 ADD SWAP1 PUSH2 0xE5 SWAP2 SWAP1 PUSH2 0x242 JUMP JUMPDEST PUSH2 0x100 ADD MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND SUB PUSH2 0x111 JUMPI PUSH1 0x40 MLOAD PUSH4 0xC3EB4ED5 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 SWAP1 DUP2 AND PUSH1 0xC0 MSTORE AND PUSH1 0xE0 MSTORE PUSH2 0x36C JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 AND DUP2 EQ PUSH2 0x13C JUMPI PUSH0 PUSH0 REVERT JUMPDEST POP JUMP JUMPDEST PUSH0 PUSH0 PUSH1 0x40 DUP4 DUP6 SUB SLT ISZERO PUSH2 0x150 JUMPI PUSH0 PUSH0 REVERT JUMPDEST DUP3 MLOAD PUSH2 0x15B DUP2 PUSH2 0x128 JUMP JUMPDEST PUSH1 0x20 DUP5 ADD MLOAD SWAP1 SWAP3 POP PUSH2 0x16C DUP2 PUSH2 0x128 JUMP JUMPDEST DUP1 SWAP2 POP POP SWAP3 POP SWAP3 SWAP1 POP JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0x1E0 DUP2 ADD PUSH1 0x1 PUSH1 0x1 PUSH1 0x40 SHL SUB DUP2 GT DUP3 DUP3 LT OR ISZERO PUSH2 0x1A6 JUMPI PUSH4 0x4E487B71 PUSH1 0xE0 SHL PUSH0 MSTORE PUSH1 0x41 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH0 REVERT JUMPDEST PUSH1 0x40 MSTORE SWAP1 JUMP JUMPDEST PUSH0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x1BC JUMPI PUSH0 PUSH0 REVERT JUMPDEST PUSH1 0x40 MLOAD PUSH1 0x20 DUP2 ADD PUSH1 0x1 PUSH1 0x1 PUSH1 0x40 SHL SUB DUP2 GT DUP3 DUP3 LT OR ISZERO PUSH2 0x1EA JUMPI PUSH4 0x4E487B71 PUSH1 0xE0 SHL PUSH0 MSTORE PUSH1 0x41 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH0 REVERT JUMPDEST PUSH1 0x40 MSTORE SWAP2 MLOAD DUP3 MSTORE POP SWAP2 SWAP1 POP JUMP JUMPDEST DUP1 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0x80 SHL SUB DUP2 AND DUP2 EQ PUSH2 0x20D JUMPI PUSH0 PUSH0 REVERT JUMPDEST SWAP2 SWAP1 POP JUMP JUMPDEST DUP1 MLOAD PUSH5 0xFFFFFFFFFF DUP2 AND DUP2 EQ PUSH2 0x20D JUMPI PUSH0 PUSH0 REVERT JUMPDEST DUP1 MLOAD PUSH2 0xFFFF DUP2 AND DUP2 EQ PUSH2 0x20D JUMPI PUSH0 PUSH0 REVERT JUMPDEST DUP1 MLOAD PUSH2 0x20D DUP2 PUSH2 0x128 JUMP JUMPDEST PUSH0 PUSH2 0x1E0 DUP3 DUP5 SUB SLT DUP1 ISZERO PUSH2 0x254 JUMPI PUSH0 PUSH0 REVERT JUMPDEST POP PUSH2 0x25D PUSH2 0x177 JUMP JUMPDEST PUSH2 0x267 DUP5 DUP5 PUSH2 0x1AC JUMP JUMPDEST DUP2 MSTORE PUSH2 0x275 PUSH1 0x20 DUP5 ADD PUSH2 0x1F7 JUMP JUMPDEST PUSH1 0x20 DUP3 ADD MSTORE PUSH2 0x286 PUSH1 0x40 DUP5 ADD PUSH2 0x1F7 JUMP JUMPDEST PUSH1 0x40 DUP3 ADD MSTORE PUSH2 0x297 PUSH1 0x60 DUP5 ADD PUSH2 0x1F7 JUMP JUMPDEST PUSH1 0x60 DUP3 ADD MSTORE PUSH2 0x2A8 PUSH1 0x80 DUP5 ADD PUSH2 0x1F7 JUMP JUMPDEST PUSH1 0x80 DUP3 ADD MSTORE PUSH2 0x2B9 PUSH1 0xA0 DUP5 ADD PUSH2 0x1F7 JUMP JUMPDEST PUSH1 0xA0 DUP3 ADD MSTORE PUSH2 0x2CA PUSH1 0xC0 DUP5 ADD PUSH2 0x212 JUMP JUMPDEST PUSH1 0xC0 DUP3 ADD MSTORE PUSH2 0x2DB PUSH1 0xE0 DUP5 ADD PUSH2 0x226 JUMP JUMPDEST PUSH1 0xE0 DUP3 ADD MSTORE PUSH2 0x2ED PUSH2 0x100 DUP5 ADD PUSH2 0x237 JUMP JUMPDEST PUSH2 0x100 DUP3 ADD MSTORE PUSH2 0x300 PUSH2 0x120 DUP5 ADD PUSH2 0x237 JUMP JUMPDEST PUSH2 0x120 DUP3 ADD MSTORE PUSH2 0x313 PUSH2 0x140 DUP5 ADD PUSH2 0x237 JUMP JUMPDEST PUSH2 0x140 DUP3 ADD MSTORE PUSH2 0x326 PUSH2 0x160 DUP5 ADD PUSH2 0x237 JUMP JUMPDEST PUSH2 0x160 DUP3 ADD MSTORE PUSH2 0x339 PUSH2 0x180 DUP5 ADD PUSH2 0x1F7 JUMP JUMPDEST PUSH2 0x180 DUP3 ADD MSTORE PUSH2 0x34C PUSH2 0x1A0 DUP5 ADD PUSH2 0x1F7 JUMP JUMPDEST PUSH2 0x1A0 DUP3 ADD MSTORE PUSH2 0x35F PUSH2 0x1C0 DUP5 ADD PUSH2 0x1F7 JUMP JUMPDEST PUSH2 0x1C0 DUP3 ADD MSTORE SWAP4 SWAP3 POP POP POP JUMP JUMPDEST PUSH1 0x80 MLOAD PUSH1 0xA0 MLOAD PUSH1 0xC0 MLOAD PUSH1 0xE0 MLOAD PUSH2 0xCF4 PUSH2 0x3EC PUSH0 CODECOPY PUSH0 DUP2 DUP2 PUSH2 0x149 ADD MSTORE DUP2 DUP2 PUSH2 0x280 ADD MSTORE DUP2 DUP2 PUSH2 0x6E2 ADD MSTORE DUP2 DUP2 PUSH2 0x7BF ADD MSTORE PUSH2 0x841 ADD MSTORE PUSH0 DUP2 DUP2 PUSH2 0x2B5 ADD MSTORE DUP2 DUP2 PUSH2 0x70A ADD MSTORE DUP2 DUP2 PUSH2 0x790 ADD MSTORE PUSH2 0x87C ADD MSTORE PUSH0 PUSH2 0x116 ADD MSTORE PUSH0 DUP2 DUP2 PUSH2 0x1DB ADD MSTORE DUP2 DUP2 PUSH2 0x224 ADD MSTORE DUP2 DUP2 PUSH2 0x383 ADD MSTORE DUP2 DUP2 PUSH2 0x46C ADD MSTORE PUSH2 0x4D5 ADD MSTORE PUSH2 0xCF4 PUSH0 RETURN INVALID PUSH1 0x80 PUSH1 0x40 MSTORE CALLVALUE DUP1 ISZERO PUSH2 0xF JUMPI PUSH0 PUSH0 REVERT JUMPDEST POP PUSH1 0x4 CALLDATASIZE LT PUSH2 0x9B JUMPI PUSH0 CALLDATALOAD PUSH1 0xE0 SHR DUP1 PUSH4 0x9C4667A2 GT PUSH2 0x63 JUMPI DUP1 PUSH4 0x9C4667A2 EQ PUSH2 0x138 JUMPI DUP1 PUSH4 0x9CD47128 EQ PUSH2 0x183 JUMPI DUP1 PUSH4 0xB6B55F25 EQ PUSH2 0x196 JUMPI DUP1 PUSH4 0xCE96CB77 EQ PUSH2 0x1A9 JUMPI DUP1 PUSH4 0xF3E0FFBF EQ PUSH2 0x1BC JUMPI PUSH0 PUSH0 REVERT JUMPDEST DUP1 PUSH4 0x981B1C2 EQ PUSH2 0x9F JUMPI DUP1 PUSH4 0x2E1A7D4D EQ PUSH2 0xC8 JUMPI DUP1 PUSH4 0x402D267D EQ PUSH2 0xDD JUMPI DUP1 PUSH4 0x5A117456 EQ PUSH2 0xFE JUMPI DUP1 PUSH4 0x5B9A4C35 EQ PUSH2 0x111 JUMPI JUMPDEST PUSH0 PUSH0 REVERT JUMPDEST PUSH2 0xB2 PUSH2 0xAD CALLDATASIZE PUSH1 0x4 PUSH2 0x99F JUMP JUMPDEST PUSH2 0x1CF JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0xBF SWAP2 SWAP1 PUSH2 0x9F1 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST PUSH2 0xDB PUSH2 0xD6 CALLDATASIZE PUSH1 0x4 PUSH2 0xA26 JUMP JUMPDEST PUSH2 0x21A JUMP JUMPDEST STOP JUMPDEST PUSH2 0xF0 PUSH2 0xEB CALLDATASIZE PUSH1 0x4 PUSH2 0xA51 JUMP JUMPDEST PUSH2 0x324 JUMP JUMPDEST PUSH1 0x40 MLOAD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH2 0xBF JUMP JUMPDEST PUSH2 0xDB PUSH2 0x10C CALLDATASIZE PUSH1 0x4 PUSH2 0xA79 JUMP JUMPDEST PUSH2 0x379 JUMP JUMPDEST PUSH2 0xF0 PUSH32 0x0 DUP2 JUMP JUMPDEST PUSH2 0x16B PUSH2 0x146 CALLDATASIZE PUSH1 0x4 PUSH2 0xA51 JUMP JUMPDEST POP PUSH32 0x0 SWAP1 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP1 SWAP2 AND DUP2 MSTORE PUSH1 0x20 ADD PUSH2 0xBF JUMP JUMPDEST PUSH2 0xDB PUSH2 0x191 CALLDATASIZE PUSH1 0x4 PUSH2 0xA94 JUMP JUMPDEST PUSH2 0x462 JUMP JUMPDEST PUSH2 0xDB PUSH2 0x1A4 CALLDATASIZE PUSH1 0x4 PUSH2 0xA26 JUMP JUMPDEST PUSH2 0x4CB JUMP JUMPDEST PUSH2 0xF0 PUSH2 0x1B7 CALLDATASIZE PUSH1 0x4 PUSH2 0xA51 JUMP JUMPDEST PUSH2 0x523 JUMP JUMPDEST PUSH2 0xF0 PUSH2 0x1CA CALLDATASIZE PUSH1 0x4 PUSH2 0xA51 JUMP JUMPDEST PUSH2 0x5CF JUMP JUMPDEST PUSH1 0x60 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB PUSH32 0x0 AND ADDRESS SUB PUSH2 0x9B JUMPI PUSH1 0x40 MLOAD PUSH4 0x2ABF118B PUSH1 0xE2 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB PUSH32 0x0 AND ADDRESS SUB PUSH2 0x263 JUMPI PUSH1 0x40 MLOAD PUSH4 0x2ABF118B PUSH1 0xE2 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST DUP1 ISZERO PUSH2 0x321 JUMPI PUSH1 0x40 MLOAD PUSH4 0x1A4CA37B PUSH1 0xE2 SHL DUP2 MSTORE PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB PUSH32 0x0 DUP2 AND PUSH1 0x4 DUP4 ADD MSTORE PUSH1 0x24 DUP3 ADD DUP4 SWAP1 MSTORE ADDRESS PUSH1 0x44 DUP4 ADD MSTORE PUSH32 0x0 AND SWAP1 PUSH4 0x69328DEC SWAP1 PUSH1 0x64 ADD PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 PUSH0 DUP8 GAS CALL ISZERO DUP1 ISZERO PUSH2 0x2FB JUMPI RETURNDATASIZE PUSH0 PUSH0 RETURNDATACOPY RETURNDATASIZE PUSH0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP3 ADD DUP1 PUSH1 0x40 MSTORE POP DUP2 ADD SWAP1 PUSH2 0x31F SWAP2 SWAP1 PUSH2 0xACE JUMP JUMPDEST POP JUMPDEST POP JUMP JUMPDEST PUSH0 PUSH0 PUSH2 0x32E PUSH2 0x64C JUMP JUMPDEST DUP1 MLOAD MLOAD SWAP1 SWAP2 POP PUSH1 0x1 PUSH1 0x38 SHL AND ISZERO DUP1 PUSH2 0x34D JUMPI POP DUP1 MLOAD MLOAD PUSH1 0x1 PUSH1 0x3C SHL AND ISZERO ISZERO JUMPDEST DUP1 PUSH2 0x363 JUMPI POP DUP1 MLOAD MLOAD PUSH8 0x200000000000000 AND ISZERO ISZERO JUMPDEST ISZERO PUSH2 0x370 JUMPI POP PUSH0 SWAP3 SWAP2 POP POP JUMP JUMPDEST POP PUSH0 NOT SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB PUSH32 0x0 AND ADDRESS SUB PUSH2 0x3C2 JUMPI PUSH1 0x40 MLOAD PUSH4 0x2ABF118B PUSH1 0xE2 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH0 PUSH2 0x3CB PUSH2 0x64C JUMP JUMPDEST PUSH2 0x100 ADD MLOAD SWAP1 POP DUP2 ISZERO DUP1 ISZERO PUSH2 0x444 JUMPI POP PUSH1 0x40 MLOAD PUSH4 0x70A08231 PUSH1 0xE0 SHL DUP2 MSTORE ADDRESS PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP3 AND SWAP1 PUSH4 0x70A08231 SWAP1 PUSH1 0x24 ADD PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x41D JUMPI RETURNDATASIZE PUSH0 PUSH0 RETURNDATACOPY RETURNDATASIZE PUSH0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP3 ADD DUP1 PUSH1 0x40 MSTORE POP DUP2 ADD SWAP1 PUSH2 0x441 SWAP2 SWAP1 PUSH2 0xACE JUMP JUMPDEST ISZERO ISZERO JUMPDEST ISZERO PUSH2 0x31F JUMPI PUSH1 0x40 MLOAD PUSH4 0x42A176D1 PUSH1 0xE1 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB PUSH32 0x0 AND ADDRESS SUB PUSH2 0x4AB JUMPI PUSH1 0x40 MLOAD PUSH4 0x2ABF118B PUSH1 0xE2 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST DUP1 MLOAD ISZERO PUSH2 0x321 JUMPI PUSH1 0x40 MLOAD PUSH4 0x50701B61 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 PUSH32 0x0 AND ADDRESS SUB PUSH2 0x514 JUMPI PUSH1 0x40 MLOAD PUSH4 0x2ABF118B PUSH1 0xE2 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST DUP1 ISZERO PUSH2 0x321 JUMPI PUSH2 0x321 DUP2 PUSH2 0x779 JUMP JUMPDEST PUSH0 PUSH0 PUSH2 0x52D PUSH2 0x64C JUMP JUMPDEST DUP1 MLOAD MLOAD SWAP1 SWAP2 POP PUSH1 0x1 PUSH1 0x38 SHL AND ISZERO DUP1 PUSH2 0x54C JUMPI POP DUP1 MLOAD MLOAD PUSH1 0x1 PUSH1 0x3C SHL AND ISZERO ISZERO JUMPDEST ISZERO PUSH2 0x559 JUMPI POP PUSH0 SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH2 0x100 DUP2 ADD MLOAD PUSH1 0x40 MLOAD PUSH4 0x70A08231 PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP6 DUP2 AND PUSH1 0x4 DUP4 ADD MSTORE SWAP1 SWAP2 AND SWAP1 PUSH4 0x70A08231 SWAP1 PUSH1 0x24 ADD PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x5A4 JUMPI RETURNDATASIZE PUSH0 PUSH0 RETURNDATACOPY RETURNDATASIZE PUSH0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP3 ADD DUP1 PUSH1 0x40 MSTORE POP DUP2 ADD SWAP1 PUSH2 0x5C8 SWAP2 SWAP1 PUSH2 0xACE JUMP JUMPDEST SWAP4 SWAP3 POP POP POP JUMP JUMPDEST PUSH0 PUSH2 0x5D8 PUSH2 0x64C JUMP JUMPDEST PUSH2 0x100 ADD MLOAD PUSH1 0x40 MLOAD PUSH4 0x70A08231 PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP5 DUP2 AND PUSH1 0x4 DUP4 ADD MSTORE SWAP1 SWAP2 AND SWAP1 PUSH4 0x70A08231 SWAP1 PUSH1 0x24 ADD PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x622 JUMPI RETURNDATASIZE PUSH0 PUSH0 RETURNDATACOPY RETURNDATASIZE PUSH0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP3 ADD DUP1 PUSH1 0x40 MSTORE POP DUP2 ADD SWAP1 PUSH2 0x646 SWAP2 SWAP1 PUSH2 0xACE JUMP JUMPDEST SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH2 0x200 DUP2 ADD DUP3 MSTORE PUSH0 PUSH2 0x1E0 DUP3 ADD DUP2 DUP2 MSTORE 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 PUSH1 0xC0 DUP2 ADD DUP3 SWAP1 MSTORE PUSH1 0xE0 DUP2 ADD DUP3 SWAP1 MSTORE PUSH2 0x100 DUP2 ADD DUP3 SWAP1 MSTORE PUSH2 0x120 DUP2 ADD DUP3 SWAP1 MSTORE PUSH2 0x140 DUP2 ADD DUP3 SWAP1 MSTORE PUSH2 0x160 DUP2 ADD DUP3 SWAP1 MSTORE PUSH2 0x180 DUP2 ADD DUP3 SWAP1 MSTORE PUSH2 0x1A0 DUP2 ADD DUP3 SWAP1 MSTORE PUSH2 0x1C0 DUP2 ADD SWAP2 SWAP1 SWAP2 MSTORE PUSH1 0x40 MLOAD PUSH4 0x35EA6A75 PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB PUSH32 0x0 DUP2 AND PUSH1 0x4 DUP4 ADD MSTORE PUSH32 0x0 AND SWAP1 PUSH4 0x35EA6A75 SWAP1 PUSH1 0x24 ADD PUSH2 0x1E0 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x750 JUMPI RETURNDATASIZE PUSH0 PUSH0 RETURNDATACOPY RETURNDATASIZE PUSH0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP3 ADD DUP1 PUSH1 0x40 MSTORE POP DUP2 ADD SWAP1 PUSH2 0x774 SWAP2 SWAP1 PUSH2 0xB79 JUMP JUMPDEST SWAP1 POP SWAP1 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH4 0x95EA7B3 PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB PUSH32 0x0 DUP2 AND PUSH1 0x4 DUP4 ADD MSTORE PUSH1 0x24 DUP3 ADD DUP4 SWAP1 MSTORE PUSH32 0x0 AND SWAP1 PUSH4 0x95EA7B3 SWAP1 PUSH1 0x44 ADD PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 PUSH0 DUP8 GAS CALL ISZERO DUP1 ISZERO PUSH2 0x805 JUMPI RETURNDATASIZE PUSH0 PUSH0 RETURNDATACOPY RETURNDATASIZE PUSH0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP3 ADD DUP1 PUSH1 0x40 MSTORE POP DUP2 ADD SWAP1 PUSH2 0x829 SWAP2 SWAP1 PUSH2 0xCA3 JUMP JUMPDEST POP PUSH1 0x40 MLOAD PUSH4 0x617BA037 PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB PUSH32 0x0 DUP2 AND PUSH1 0x4 DUP4 ADD MSTORE PUSH1 0x24 DUP3 ADD DUP4 SWAP1 MSTORE ADDRESS PUSH1 0x44 DUP4 ADD MSTORE PUSH0 PUSH1 0x64 DUP4 ADD MSTORE PUSH32 0x0 AND SWAP1 PUSH4 0x617BA037 SWAP1 PUSH1 0x84 ADD PUSH0 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 PUSH0 DUP8 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x8BD JUMPI PUSH0 PUSH0 REVERT JUMPDEST POP GAS CALL ISZERO DUP1 ISZERO PUSH2 0x8CF JUMPI RETURNDATASIZE PUSH0 PUSH0 RETURNDATACOPY RETURNDATASIZE PUSH0 REVERT JUMPDEST POP POP POP POP POP JUMP JUMPDEST PUSH4 0x4E487B71 PUSH1 0xE0 SHL PUSH0 MSTORE PUSH1 0x41 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH0 REVERT JUMPDEST PUSH1 0x40 MLOAD PUSH2 0x1E0 DUP2 ADD PUSH8 0xFFFFFFFFFFFFFFFF DUP2 GT DUP3 DUP3 LT OR ISZERO PUSH2 0x90E JUMPI PUSH2 0x90E PUSH2 0x8D6 JUMP JUMPDEST PUSH1 0x40 MSTORE SWAP1 JUMP JUMPDEST PUSH0 DUP3 PUSH1 0x1F DUP4 ADD SLT PUSH2 0x923 JUMPI PUSH0 PUSH0 REVERT JUMPDEST DUP2 CALLDATALOAD PUSH8 0xFFFFFFFFFFFFFFFF DUP2 GT ISZERO PUSH2 0x93D JUMPI PUSH2 0x93D PUSH2 0x8D6 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH1 0x1F DUP3 ADD PUSH1 0x1F NOT SWAP1 DUP2 AND PUSH1 0x3F ADD AND DUP2 ADD PUSH8 0xFFFFFFFFFFFFFFFF DUP2 GT DUP3 DUP3 LT OR ISZERO PUSH2 0x96C JUMPI PUSH2 0x96C PUSH2 0x8D6 JUMP JUMPDEST PUSH1 0x40 MSTORE DUP2 DUP2 MSTORE DUP4 DUP3 ADD PUSH1 0x20 ADD DUP6 LT ISZERO PUSH2 0x983 JUMPI PUSH0 PUSH0 REVERT JUMPDEST DUP2 PUSH1 0x20 DUP6 ADD PUSH1 0x20 DUP4 ADD CALLDATACOPY PUSH0 SWAP2 DUP2 ADD PUSH1 0x20 ADD SWAP2 SWAP1 SWAP2 MSTORE SWAP4 SWAP3 POP POP POP JUMP JUMPDEST PUSH0 PUSH0 PUSH1 0x40 DUP4 DUP6 SUB SLT ISZERO PUSH2 0x9B0 JUMPI PUSH0 PUSH0 REVERT JUMPDEST DUP3 CALLDATALOAD PUSH1 0xFF DUP2 AND DUP2 EQ PUSH2 0x9C0 JUMPI PUSH0 PUSH0 REVERT JUMPDEST SWAP2 POP PUSH1 0x20 DUP4 ADD CALLDATALOAD PUSH8 0xFFFFFFFFFFFFFFFF DUP2 GT ISZERO PUSH2 0x9DB JUMPI PUSH0 PUSH0 REVERT JUMPDEST PUSH2 0x9E7 DUP6 DUP3 DUP7 ADD PUSH2 0x914 JUMP JUMPDEST SWAP2 POP POP SWAP3 POP SWAP3 SWAP1 POP JUMP JUMPDEST PUSH1 0x20 DUP2 MSTORE PUSH0 DUP3 MLOAD DUP1 PUSH1 0x20 DUP5 ADD MSTORE DUP1 PUSH1 0x20 DUP6 ADD PUSH1 0x40 DUP6 ADD MCOPY PUSH0 PUSH1 0x40 DUP3 DUP6 ADD ADD MSTORE PUSH1 0x40 PUSH1 0x1F NOT PUSH1 0x1F DUP4 ADD AND DUP5 ADD ADD SWAP2 POP POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0xA36 JUMPI PUSH0 PUSH0 REVERT JUMPDEST POP CALLDATALOAD SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 AND DUP2 EQ PUSH2 0x321 JUMPI PUSH0 PUSH0 REVERT JUMPDEST PUSH0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0xA61 JUMPI PUSH0 PUSH0 REVERT JUMPDEST DUP2 CALLDATALOAD PUSH2 0x5C8 DUP2 PUSH2 0xA3D JUMP JUMPDEST DUP1 ISZERO ISZERO DUP2 EQ PUSH2 0x321 JUMPI PUSH0 PUSH0 REVERT JUMPDEST PUSH0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0xA89 JUMPI PUSH0 PUSH0 REVERT JUMPDEST DUP2 CALLDATALOAD PUSH2 0x5C8 DUP2 PUSH2 0xA6C JUMP JUMPDEST PUSH0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0xAA4 JUMPI PUSH0 PUSH0 REVERT JUMPDEST DUP2 CALLDATALOAD PUSH8 0xFFFFFFFFFFFFFFFF DUP2 GT ISZERO PUSH2 0xABA JUMPI PUSH0 PUSH0 REVERT JUMPDEST PUSH2 0xAC6 DUP5 DUP3 DUP6 ADD PUSH2 0x914 JUMP JUMPDEST SWAP5 SWAP4 POP POP POP POP JUMP JUMPDEST PUSH0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0xADE JUMPI PUSH0 PUSH0 REVERT JUMPDEST POP MLOAD SWAP2 SWAP1 POP JUMP JUMPDEST PUSH0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0xAF5 JUMPI PUSH0 PUSH0 REVERT JUMPDEST PUSH1 0x40 MLOAD PUSH1 0x20 DUP2 ADD PUSH8 0xFFFFFFFFFFFFFFFF DUP2 GT DUP3 DUP3 LT OR ISZERO PUSH2 0xB18 JUMPI PUSH2 0xB18 PUSH2 0x8D6 JUMP JUMPDEST PUSH1 0x40 MSTORE SWAP2 MLOAD DUP3 MSTORE POP SWAP2 SWAP1 POP JUMP JUMPDEST DUP1 MLOAD PUSH16 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP2 AND DUP2 EQ PUSH2 0xB44 JUMPI PUSH0 PUSH0 REVERT JUMPDEST SWAP2 SWAP1 POP JUMP JUMPDEST DUP1 MLOAD PUSH5 0xFFFFFFFFFF DUP2 AND DUP2 EQ PUSH2 0xB44 JUMPI PUSH0 PUSH0 REVERT JUMPDEST DUP1 MLOAD PUSH2 0xFFFF DUP2 AND DUP2 EQ PUSH2 0xB44 JUMPI PUSH0 PUSH0 REVERT JUMPDEST DUP1 MLOAD PUSH2 0xB44 DUP2 PUSH2 0xA3D JUMP JUMPDEST PUSH0 PUSH2 0x1E0 DUP3 DUP5 SUB SLT DUP1 ISZERO PUSH2 0xB8B JUMPI PUSH0 PUSH0 REVERT JUMPDEST POP PUSH2 0xB94 PUSH2 0x8EA JUMP JUMPDEST PUSH2 0xB9E DUP5 DUP5 PUSH2 0xAE5 JUMP JUMPDEST DUP2 MSTORE PUSH2 0xBAC PUSH1 0x20 DUP5 ADD PUSH2 0xB25 JUMP JUMPDEST PUSH1 0x20 DUP3 ADD MSTORE PUSH2 0xBBD PUSH1 0x40 DUP5 ADD PUSH2 0xB25 JUMP JUMPDEST PUSH1 0x40 DUP3 ADD MSTORE PUSH2 0xBCE PUSH1 0x60 DUP5 ADD PUSH2 0xB25 JUMP JUMPDEST PUSH1 0x60 DUP3 ADD MSTORE PUSH2 0xBDF PUSH1 0x80 DUP5 ADD PUSH2 0xB25 JUMP JUMPDEST PUSH1 0x80 DUP3 ADD MSTORE PUSH2 0xBF0 PUSH1 0xA0 DUP5 ADD PUSH2 0xB25 JUMP JUMPDEST PUSH1 0xA0 DUP3 ADD MSTORE PUSH2 0xC01 PUSH1 0xC0 DUP5 ADD PUSH2 0xB49 JUMP JUMPDEST PUSH1 0xC0 DUP3 ADD MSTORE PUSH2 0xC12 PUSH1 0xE0 DUP5 ADD PUSH2 0xB5D JUMP JUMPDEST PUSH1 0xE0 DUP3 ADD MSTORE PUSH2 0xC24 PUSH2 0x100 DUP5 ADD PUSH2 0xB6E JUMP JUMPDEST PUSH2 0x100 DUP3 ADD MSTORE PUSH2 0xC37 PUSH2 0x120 DUP5 ADD PUSH2 0xB6E JUMP JUMPDEST PUSH2 0x120 DUP3 ADD MSTORE PUSH2 0xC4A PUSH2 0x140 DUP5 ADD PUSH2 0xB6E JUMP JUMPDEST PUSH2 0x140 DUP3 ADD MSTORE PUSH2 0xC5D PUSH2 0x160 DUP5 ADD PUSH2 0xB6E JUMP JUMPDEST PUSH2 0x160 DUP3 ADD MSTORE PUSH2 0xC70 PUSH2 0x180 DUP5 ADD PUSH2 0xB25 JUMP JUMPDEST PUSH2 0x180 DUP3 ADD MSTORE PUSH2 0xC83 PUSH2 0x1A0 DUP5 ADD PUSH2 0xB25 JUMP JUMPDEST PUSH2 0x1A0 DUP3 ADD MSTORE PUSH2 0xC96 PUSH2 0x1C0 DUP5 ADD PUSH2 0xB25 JUMP JUMPDEST PUSH2 0x1C0 DUP3 ADD MSTORE SWAP4 SWAP3 POP POP POP JUMP JUMPDEST PUSH0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0xCB3 JUMPI PUSH0 PUSH0 REVERT JUMPDEST DUP2 MLOAD PUSH2 0x5C8 DUP2 PUSH2 0xA6C JUMP INVALID LOG2 PUSH5 0x6970667358 0x22 SLT KECCAK256 GASLIMIT SWAP15 PUSH1 0xC0 BASEFEE SSTORE MSIZE 0xE 0x2A 0x26 0xEB PUSH2 0x4F7C CODESIZE SLOAD NUMBER 0xF 0xCD PUSH6 0xBF7000BC3D01 SHR 0xE8 PUSH24 0x59B09664736F6C634300081E003300000000000000000000 ","sourceMap":"830:4:76:-:0;787:48;;;;665:3183;7309:54:53;4160:21:87;;;4217:2;4197:18;4190:30;4256:32;4236:18;4229:60;4341:20;4334:62;;;;665:3183:76;7309:54:53;;;4306:19:87;7309:54:53;;7299:65;;839:81:76;;1263:192;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;1313:37;;-1:-1:-1;;;1313:37:76;;-1:-1:-1;;;;;758:32:87;;;1313:37:76;;;740:51:87;1376:1:76;;1313:20;;;;;;713:18:87;;1313:37:76;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;:51;;;-1:-1:-1;;;;;1313:65:76;;1309:101;;1387:23;;-1:-1:-1;;;1387:23:76;;;;;;;;;;;1309:101;-1:-1:-1;;;;;1416:13:76;;;;;1435:15;;;665:3183;;14:139:87;-1:-1:-1;;;;;97:31:87;;87:42;;77:70;;143:1;140;133:12;77:70;14:139;:::o;158:431::-;267:6;275;328:2;316:9;307:7;303:23;299:32;296:52;;;344:1;341;334:12;296:52;376:9;370:16;395:39;428:5;395:39;:::i;:::-;503:2;488:18;;482:25;453:5;;-1:-1:-1;516:41:87;482:25;516:41;:::i;:::-;576:7;566:17;;;158:431;;;;;:::o;802:344::-;869:2;863:9;911:3;899:16;;-1:-1:-1;;;;;930:34:87;;966:22;;;927:62;924:185;;;1031:10;1026:3;1022:20;1019:1;1012:31;1066:4;1063:1;1056:15;1094:4;1091:1;1084:15;924:185;1125:2;1118:22;802:344;:::o;1151:543::-;1232:5;1280:4;1268:9;1263:3;1259:19;1255:30;1252:50;;;1298:1;1295;1288:12;1252:50;1351:2;1345:9;1393:4;1381:17;;-1:-1:-1;;;;;1413:34:87;;1449:22;;;1410:62;1407:185;;;1514:10;1509:3;1505:20;1502:1;1495:31;1549:4;1546:1;1539:15;1577:4;1574:1;1567:15;1407:185;1608:2;1601:22;1671:16;;1656:32;;-1:-1:-1;1641:6:87;1151:543;-1:-1:-1;1151:543:87:o;1699:177::-;1778:13;;-1:-1:-1;;;;;1820:31:87;;1810:42;;1800:70;;1866:1;1863;1856:12;1800:70;1699:177;;;:::o;1881:169::-;1959:13;;2012:12;2001:24;;1991:35;;1981:63;;2040:1;2037;2030:12;2055:163;2133:13;;2186:6;2175:18;;2165:29;;2155:57;;2208:1;2205;2198:12;2223:146;2302:13;;2324:39;2302:13;2324:39;:::i;2374:1544::-;2474:6;2534:3;2522:9;2513:7;2509:23;2505:33;2550:2;2547:22;;;2565:1;2562;2555:12;2547:22;-1:-1:-1;2607:17:87;;:::i;:::-;2647:72;2711:7;2700:9;2647:72;:::i;:::-;2640:5;2633:87;2752:49;2797:2;2786:9;2782:18;2752:49;:::i;:::-;2747:2;2740:5;2736:14;2729:73;2834:49;2879:2;2868:9;2864:18;2834:49;:::i;:::-;2829:2;2822:5;2818:14;2811:73;2916:49;2961:2;2950:9;2946:18;2916:49;:::i;:::-;2911:2;2904:5;2900:14;2893:73;2999:50;3044:3;3033:9;3029:19;2999:50;:::i;:::-;2993:3;2986:5;2982:15;2975:75;3083:50;3128:3;3117:9;3113:19;3083:50;:::i;:::-;3077:3;3070:5;3066:15;3059:75;3167:49;3211:3;3200:9;3196:19;3167:49;:::i;:::-;3161:3;3154:5;3150:15;3143:74;3250:49;3294:3;3283:9;3279:19;3250:49;:::i;:::-;3244:3;3237:5;3233:15;3226:74;3333:50;3378:3;3367:9;3363:19;3333:50;:::i;:::-;3327:3;3320:5;3316:15;3309:75;3417:50;3462:3;3451:9;3447:19;3417:50;:::i;:::-;3411:3;3404:5;3400:15;3393:75;3501:50;3546:3;3535:9;3531:19;3501:50;:::i;:::-;3495:3;3488:5;3484:15;3477:75;3585:50;3630:3;3619:9;3615:19;3585:50;:::i;:::-;3579:3;3572:5;3568:15;3561:75;3669:50;3714:3;3703:9;3699:19;3669:50;:::i;:::-;3663:3;3656:5;3652:15;3645:75;3753:50;3798:3;3787:9;3783:19;3753:50;:::i;:::-;3747:3;3740:5;3736:15;3729:75;3837:50;3882:3;3871:9;3867:19;3837:50;:::i;:::-;3831:3;3820:15;;3813:75;3824:5;2374:1544;-1:-1:-1;;;2374:1544:87:o;3923:479::-;665:3183:76;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;"},"deployedBytecode":{"functionDebugData":{"@_reserveData_21944":{"entryPoint":1612,"id":21944,"parameterSlots":0,"returnSlots":1},"@_supply_22190":{"entryPoint":1913,"id":22190,"parameterSlots":1,"returnSlots":0},"@asset_22093":{"entryPoint":null,"id":22093,"parameterSlots":1,"returnSlots":1},"@connect_21962":{"entryPoint":1122,"id":21962,"parameterSlots":1,"returnSlots":0},"@deposit_22158":{"entryPoint":1227,"id":22158,"parameterSlots":1,"returnSlots":0},"@disconnect_21997":{"entryPoint":889,"id":21997,"parameterSlots":1,"returnSlots":0},"@forwardEntryPoint_22206":{"entryPoint":463,"id":22206,"parameterSlots":2,"returnSlots":1},"@getActive_19622":{"entryPoint":null,"id":19622,"parameterSlots":1,"returnSlots":1},"@getFrozen_19672":{"entryPoint":null,"id":19672,"parameterSlots":1,"returnSlots":1},"@getPaused_19722":{"entryPoint":null,"id":19722,"parameterSlots":1,"returnSlots":1},"@maxDeposit_22078":{"entryPoint":804,"id":22078,"parameterSlots":1,"returnSlots":1},"@maxWithdraw_22036":{"entryPoint":1315,"id":22036,"parameterSlots":1,"returnSlots":1},"@storageSlot_21866":{"entryPoint":null,"id":21866,"parameterSlots":0,"returnSlots":0},"@totalAssets_22112":{"entryPoint":1487,"id":22112,"parameterSlots":1,"returnSlots":1},"@withdraw_22140":{"entryPoint":538,"id":22140,"parameterSlots":1,"returnSlots":0},"abi_decode_address_fromMemory":{"entryPoint":2926,"id":null,"parameterSlots":1,"returnSlots":1},"abi_decode_bytes":{"entryPoint":2324,"id":null,"parameterSlots":2,"returnSlots":1},"abi_decode_struct_ReserveConfigurationMap_fromMemory":{"entryPoint":2789,"id":null,"parameterSlots":2,"returnSlots":1},"abi_decode_tuple_t_address":{"entryPoint":2641,"id":null,"parameterSlots":2,"returnSlots":1},"abi_decode_tuple_t_bool":{"entryPoint":2681,"id":null,"parameterSlots":2,"returnSlots":1},"abi_decode_tuple_t_bool_fromMemory":{"entryPoint":3235,"id":null,"parameterSlots":2,"returnSlots":1},"abi_decode_tuple_t_bytes_memory_ptr":{"entryPoint":2708,"id":null,"parameterSlots":2,"returnSlots":1},"abi_decode_tuple_t_struct$_ReserveData_$17774_memory_ptr_fromMemory":{"entryPoint":2937,"id":null,"parameterSlots":2,"returnSlots":1},"abi_decode_tuple_t_uint256":{"entryPoint":2598,"id":null,"parameterSlots":2,"returnSlots":1},"abi_decode_tuple_t_uint256_fromMemory":{"entryPoint":2766,"id":null,"parameterSlots":2,"returnSlots":1},"abi_decode_tuple_t_uint8t_bytes_memory_ptr":{"entryPoint":2463,"id":null,"parameterSlots":2,"returnSlots":2},"abi_decode_uint128_fromMemory":{"entryPoint":2853,"id":null,"parameterSlots":1,"returnSlots":1},"abi_decode_uint16_fromMemory":{"entryPoint":2909,"id":null,"parameterSlots":1,"returnSlots":1},"abi_decode_uint40_fromMemory":{"entryPoint":2889,"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_uint256__to_t_address_t_uint256__fromStack_reversed":{"entryPoint":null,"id":null,"parameterSlots":3,"returnSlots":1},"abi_encode_tuple_t_address_t_uint256_t_address__to_t_address_t_uint256_t_address__fromStack_reversed":{"entryPoint":null,"id":null,"parameterSlots":4,"returnSlots":1},"abi_encode_tuple_t_address_t_uint256_t_address_t_rational_0_by_1__to_t_address_t_uint256_t_address_t_uint16__fromStack_reversed":{"entryPoint":null,"id":null,"parameterSlots":5,"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":2545,"id":null,"parameterSlots":2,"returnSlots":1},"abi_encode_tuple_t_uint256__to_t_uint256__fromStack_reversed":{"entryPoint":null,"id":null,"parameterSlots":2,"returnSlots":1},"allocate_memory":{"entryPoint":2282,"id":null,"parameterSlots":0,"returnSlots":1},"panic_error_0x41":{"entryPoint":2262,"id":null,"parameterSlots":0,"returnSlots":0},"validator_revert_address":{"entryPoint":2621,"id":null,"parameterSlots":1,"returnSlots":0},"validator_revert_bool":{"entryPoint":2668,"id":null,"parameterSlots":1,"returnSlots":0}},"generatedSources":[{"ast":{"nativeSrc":"0:8229:87","nodeType":"YulBlock","src":"0:8229:87","statements":[{"nativeSrc":"6:3:87","nodeType":"YulBlock","src":"6:3:87","statements":[]},{"body":{"nativeSrc":"46:95:87","nodeType":"YulBlock","src":"46:95:87","statements":[{"expression":{"arguments":[{"kind":"number","nativeSrc":"63:1:87","nodeType":"YulLiteral","src":"63:1:87","type":"","value":"0"},{"arguments":[{"kind":"number","nativeSrc":"70:3:87","nodeType":"YulLiteral","src":"70:3:87","type":"","value":"224"},{"kind":"number","nativeSrc":"75:10:87","nodeType":"YulLiteral","src":"75:10:87","type":"","value":"0x4e487b71"}],"functionName":{"name":"shl","nativeSrc":"66:3:87","nodeType":"YulIdentifier","src":"66:3:87"},"nativeSrc":"66:20:87","nodeType":"YulFunctionCall","src":"66:20:87"}],"functionName":{"name":"mstore","nativeSrc":"56:6:87","nodeType":"YulIdentifier","src":"56:6:87"},"nativeSrc":"56:31:87","nodeType":"YulFunctionCall","src":"56:31:87"},"nativeSrc":"56:31:87","nodeType":"YulExpressionStatement","src":"56:31:87"},{"expression":{"arguments":[{"kind":"number","nativeSrc":"103:1:87","nodeType":"YulLiteral","src":"103:1:87","type":"","value":"4"},{"kind":"number","nativeSrc":"106:4:87","nodeType":"YulLiteral","src":"106:4:87","type":"","value":"0x41"}],"functionName":{"name":"mstore","nativeSrc":"96:6:87","nodeType":"YulIdentifier","src":"96:6:87"},"nativeSrc":"96:15:87","nodeType":"YulFunctionCall","src":"96:15:87"},"nativeSrc":"96:15:87","nodeType":"YulExpressionStatement","src":"96:15:87"},{"expression":{"arguments":[{"kind":"number","nativeSrc":"127:1:87","nodeType":"YulLiteral","src":"127:1:87","type":"","value":"0"},{"kind":"number","nativeSrc":"130:4:87","nodeType":"YulLiteral","src":"130:4:87","type":"","value":"0x24"}],"functionName":{"name":"revert","nativeSrc":"120:6:87","nodeType":"YulIdentifier","src":"120:6:87"},"nativeSrc":"120:15:87","nodeType":"YulFunctionCall","src":"120:15:87"},"nativeSrc":"120:15:87","nodeType":"YulExpressionStatement","src":"120:15:87"}]},"name":"panic_error_0x41","nativeSrc":"14:127:87","nodeType":"YulFunctionDefinition","src":"14:127:87"},{"body":{"nativeSrc":"187:206:87","nodeType":"YulBlock","src":"187:206:87","statements":[{"nativeSrc":"197:19:87","nodeType":"YulAssignment","src":"197:19:87","value":{"arguments":[{"kind":"number","nativeSrc":"213:2:87","nodeType":"YulLiteral","src":"213:2:87","type":"","value":"64"}],"functionName":{"name":"mload","nativeSrc":"207:5:87","nodeType":"YulIdentifier","src":"207:5:87"},"nativeSrc":"207:9:87","nodeType":"YulFunctionCall","src":"207:9:87"},"variableNames":[{"name":"memPtr","nativeSrc":"197:6:87","nodeType":"YulIdentifier","src":"197:6:87"}]},{"nativeSrc":"225:34:87","nodeType":"YulVariableDeclaration","src":"225:34:87","value":{"arguments":[{"name":"memPtr","nativeSrc":"247:6:87","nodeType":"YulIdentifier","src":"247:6:87"},{"kind":"number","nativeSrc":"255:3:87","nodeType":"YulLiteral","src":"255:3:87","type":"","value":"480"}],"functionName":{"name":"add","nativeSrc":"243:3:87","nodeType":"YulIdentifier","src":"243:3:87"},"nativeSrc":"243:16:87","nodeType":"YulFunctionCall","src":"243:16:87"},"variables":[{"name":"newFreePtr","nativeSrc":"229:10:87","nodeType":"YulTypedName","src":"229:10:87","type":""}]},{"body":{"nativeSrc":"334:22:87","nodeType":"YulBlock","src":"334:22:87","statements":[{"expression":{"arguments":[],"functionName":{"name":"panic_error_0x41","nativeSrc":"336:16:87","nodeType":"YulIdentifier","src":"336:16:87"},"nativeSrc":"336:18:87","nodeType":"YulFunctionCall","src":"336:18:87"},"nativeSrc":"336:18:87","nodeType":"YulExpressionStatement","src":"336:18:87"}]},"condition":{"arguments":[{"arguments":[{"name":"newFreePtr","nativeSrc":"277:10:87","nodeType":"YulIdentifier","src":"277:10:87"},{"kind":"number","nativeSrc":"289:18:87","nodeType":"YulLiteral","src":"289:18:87","type":"","value":"0xffffffffffffffff"}],"functionName":{"name":"gt","nativeSrc":"274:2:87","nodeType":"YulIdentifier","src":"274:2:87"},"nativeSrc":"274:34:87","nodeType":"YulFunctionCall","src":"274:34:87"},{"arguments":[{"name":"newFreePtr","nativeSrc":"313:10:87","nodeType":"YulIdentifier","src":"313:10:87"},{"name":"memPtr","nativeSrc":"325:6:87","nodeType":"YulIdentifier","src":"325:6:87"}],"functionName":{"name":"lt","nativeSrc":"310:2:87","nodeType":"YulIdentifier","src":"310:2:87"},"nativeSrc":"310:22:87","nodeType":"YulFunctionCall","src":"310:22:87"}],"functionName":{"name":"or","nativeSrc":"271:2:87","nodeType":"YulIdentifier","src":"271:2:87"},"nativeSrc":"271:62:87","nodeType":"YulFunctionCall","src":"271:62:87"},"nativeSrc":"268:88:87","nodeType":"YulIf","src":"268:88:87"},{"expression":{"arguments":[{"kind":"number","nativeSrc":"372:2:87","nodeType":"YulLiteral","src":"372:2:87","type":"","value":"64"},{"name":"newFreePtr","nativeSrc":"376:10:87","nodeType":"YulIdentifier","src":"376:10:87"}],"functionName":{"name":"mstore","nativeSrc":"365:6:87","nodeType":"YulIdentifier","src":"365:6:87"},"nativeSrc":"365:22:87","nodeType":"YulFunctionCall","src":"365:22:87"},"nativeSrc":"365:22:87","nodeType":"YulExpressionStatement","src":"365:22:87"}]},"name":"allocate_memory","nativeSrc":"146:247:87","nodeType":"YulFunctionDefinition","returnVariables":[{"name":"memPtr","nativeSrc":"176:6:87","nodeType":"YulTypedName","src":"176:6:87","type":""}],"src":"146:247:87"},{"body":{"nativeSrc":"450:693:87","nodeType":"YulBlock","src":"450:693:87","statements":[{"body":{"nativeSrc":"499:16:87","nodeType":"YulBlock","src":"499:16:87","statements":[{"expression":{"arguments":[{"kind":"number","nativeSrc":"508:1:87","nodeType":"YulLiteral","src":"508:1:87","type":"","value":"0"},{"kind":"number","nativeSrc":"511:1:87","nodeType":"YulLiteral","src":"511:1:87","type":"","value":"0"}],"functionName":{"name":"revert","nativeSrc":"501:6:87","nodeType":"YulIdentifier","src":"501:6:87"},"nativeSrc":"501:12:87","nodeType":"YulFunctionCall","src":"501:12:87"},"nativeSrc":"501:12:87","nodeType":"YulExpressionStatement","src":"501:12:87"}]},"condition":{"arguments":[{"arguments":[{"arguments":[{"name":"offset","nativeSrc":"478:6:87","nodeType":"YulIdentifier","src":"478:6:87"},{"kind":"number","nativeSrc":"486:4:87","nodeType":"YulLiteral","src":"486:4:87","type":"","value":"0x1f"}],"functionName":{"name":"add","nativeSrc":"474:3:87","nodeType":"YulIdentifier","src":"474:3:87"},"nativeSrc":"474:17:87","nodeType":"YulFunctionCall","src":"474:17:87"},{"name":"end","nativeSrc":"493:3:87","nodeType":"YulIdentifier","src":"493:3:87"}],"functionName":{"name":"slt","nativeSrc":"470:3:87","nodeType":"YulIdentifier","src":"470:3:87"},"nativeSrc":"470:27:87","nodeType":"YulFunctionCall","src":"470:27:87"}],"functionName":{"name":"iszero","nativeSrc":"463:6:87","nodeType":"YulIdentifier","src":"463:6:87"},"nativeSrc":"463:35:87","nodeType":"YulFunctionCall","src":"463:35:87"},"nativeSrc":"460:55:87","nodeType":"YulIf","src":"460:55:87"},{"nativeSrc":"524:34:87","nodeType":"YulVariableDeclaration","src":"524:34:87","value":{"arguments":[{"name":"offset","nativeSrc":"551:6:87","nodeType":"YulIdentifier","src":"551:6:87"}],"functionName":{"name":"calldataload","nativeSrc":"538:12:87","nodeType":"YulIdentifier","src":"538:12:87"},"nativeSrc":"538:20:87","nodeType":"YulFunctionCall","src":"538:20:87"},"variables":[{"name":"length","nativeSrc":"528:6:87","nodeType":"YulTypedName","src":"528:6:87","type":""}]},{"body":{"nativeSrc":"601:22:87","nodeType":"YulBlock","src":"601:22:87","statements":[{"expression":{"arguments":[],"functionName":{"name":"panic_error_0x41","nativeSrc":"603:16:87","nodeType":"YulIdentifier","src":"603:16:87"},"nativeSrc":"603:18:87","nodeType":"YulFunctionCall","src":"603:18:87"},"nativeSrc":"603:18:87","nodeType":"YulExpressionStatement","src":"603:18:87"}]},"condition":{"arguments":[{"name":"length","nativeSrc":"573:6:87","nodeType":"YulIdentifier","src":"573:6:87"},{"kind":"number","nativeSrc":"581:18:87","nodeType":"YulLiteral","src":"581:18:87","type":"","value":"0xffffffffffffffff"}],"functionName":{"name":"gt","nativeSrc":"570:2:87","nodeType":"YulIdentifier","src":"570:2:87"},"nativeSrc":"570:30:87","nodeType":"YulFunctionCall","src":"570:30:87"},"nativeSrc":"567:56:87","nodeType":"YulIf","src":"567:56:87"},{"nativeSrc":"632:15:87","nodeType":"YulVariableDeclaration","src":"632:15:87","value":{"kind":"number","nativeSrc":"646:1:87","nodeType":"YulLiteral","src":"646:1:87","type":"","value":"0"},"variables":[{"name":"memPtr","nativeSrc":"636:6:87","nodeType":"YulTypedName","src":"636:6:87","type":""}]},{"nativeSrc":"656:19:87","nodeType":"YulAssignment","src":"656:19:87","value":{"arguments":[{"kind":"number","nativeSrc":"672:2:87","nodeType":"YulLiteral","src":"672:2:87","type":"","value":"64"}],"functionName":{"name":"mload","nativeSrc":"666:5:87","nodeType":"YulIdentifier","src":"666:5:87"},"nativeSrc":"666:9:87","nodeType":"YulFunctionCall","src":"666:9:87"},"variableNames":[{"name":"memPtr","nativeSrc":"656:6:87","nodeType":"YulIdentifier","src":"656:6:87"}]},{"nativeSrc":"684:85:87","nodeType":"YulVariableDeclaration","src":"684:85:87","value":{"arguments":[{"name":"memPtr","nativeSrc":"706:6:87","nodeType":"YulIdentifier","src":"706:6:87"},{"arguments":[{"arguments":[{"arguments":[{"arguments":[{"name":"length","nativeSrc":"730:6:87","nodeType":"YulIdentifier","src":"730:6:87"},{"kind":"number","nativeSrc":"738:4:87","nodeType":"YulLiteral","src":"738:4:87","type":"","value":"0x1f"}],"functionName":{"name":"add","nativeSrc":"726:3:87","nodeType":"YulIdentifier","src":"726:3:87"},"nativeSrc":"726:17:87","nodeType":"YulFunctionCall","src":"726:17:87"},{"arguments":[{"kind":"number","nativeSrc":"749:2:87","nodeType":"YulLiteral","src":"749:2:87","type":"","value":"31"}],"functionName":{"name":"not","nativeSrc":"745:3:87","nodeType":"YulIdentifier","src":"745:3:87"},"nativeSrc":"745:7:87","nodeType":"YulFunctionCall","src":"745:7:87"}],"functionName":{"name":"and","nativeSrc":"722:3:87","nodeType":"YulIdentifier","src":"722:3:87"},"nativeSrc":"722:31:87","nodeType":"YulFunctionCall","src":"722:31:87"},{"kind":"number","nativeSrc":"755:2:87","nodeType":"YulLiteral","src":"755:2:87","type":"","value":"63"}],"functionName":{"name":"add","nativeSrc":"718:3:87","nodeType":"YulIdentifier","src":"718:3:87"},"nativeSrc":"718:40:87","nodeType":"YulFunctionCall","src":"718:40:87"},{"arguments":[{"kind":"number","nativeSrc":"764:2:87","nodeType":"YulLiteral","src":"764:2:87","type":"","value":"31"}],"functionName":{"name":"not","nativeSrc":"760:3:87","nodeType":"YulIdentifier","src":"760:3:87"},"nativeSrc":"760:7:87","nodeType":"YulFunctionCall","src":"760:7:87"}],"functionName":{"name":"and","nativeSrc":"714:3:87","nodeType":"YulIdentifier","src":"714:3:87"},"nativeSrc":"714:54:87","nodeType":"YulFunctionCall","src":"714:54:87"}],"functionName":{"name":"add","nativeSrc":"702:3:87","nodeType":"YulIdentifier","src":"702:3:87"},"nativeSrc":"702:67:87","nodeType":"YulFunctionCall","src":"702:67:87"},"variables":[{"name":"newFreePtr","nativeSrc":"688:10:87","nodeType":"YulTypedName","src":"688:10:87","type":""}]},{"body":{"nativeSrc":"844:22:87","nodeType":"YulBlock","src":"844:22:87","statements":[{"expression":{"arguments":[],"functionName":{"name":"panic_error_0x41","nativeSrc":"846:16:87","nodeType":"YulIdentifier","src":"846:16:87"},"nativeSrc":"846:18:87","nodeType":"YulFunctionCall","src":"846:18:87"},"nativeSrc":"846:18:87","nodeType":"YulExpressionStatement","src":"846:18:87"}]},"condition":{"arguments":[{"arguments":[{"name":"newFreePtr","nativeSrc":"787:10:87","nodeType":"YulIdentifier","src":"787:10:87"},{"kind":"number","nativeSrc":"799:18:87","nodeType":"YulLiteral","src":"799:18:87","type":"","value":"0xffffffffffffffff"}],"functionName":{"name":"gt","nativeSrc":"784:2:87","nodeType":"YulIdentifier","src":"784:2:87"},"nativeSrc":"784:34:87","nodeType":"YulFunctionCall","src":"784:34:87"},{"arguments":[{"name":"newFreePtr","nativeSrc":"823:10:87","nodeType":"YulIdentifier","src":"823:10:87"},{"name":"memPtr","nativeSrc":"835:6:87","nodeType":"YulIdentifier","src":"835:6:87"}],"functionName":{"name":"lt","nativeSrc":"820:2:87","nodeType":"YulIdentifier","src":"820:2:87"},"nativeSrc":"820:22:87","nodeType":"YulFunctionCall","src":"820:22:87"}],"functionName":{"name":"or","nativeSrc":"781:2:87","nodeType":"YulIdentifier","src":"781:2:87"},"nativeSrc":"781:62:87","nodeType":"YulFunctionCall","src":"781:62:87"},"nativeSrc":"778:88:87","nodeType":"YulIf","src":"778:88:87"},{"expression":{"arguments":[{"kind":"number","nativeSrc":"882:2:87","nodeType":"YulLiteral","src":"882:2:87","type":"","value":"64"},{"name":"newFreePtr","nativeSrc":"886:10:87","nodeType":"YulIdentifier","src":"886:10:87"}],"functionName":{"name":"mstore","nativeSrc":"875:6:87","nodeType":"YulIdentifier","src":"875:6:87"},"nativeSrc":"875:22:87","nodeType":"YulFunctionCall","src":"875:22:87"},"nativeSrc":"875:22:87","nodeType":"YulExpressionStatement","src":"875:22:87"},{"expression":{"arguments":[{"name":"memPtr","nativeSrc":"913:6:87","nodeType":"YulIdentifier","src":"913:6:87"},{"name":"length","nativeSrc":"921:6:87","nodeType":"YulIdentifier","src":"921:6:87"}],"functionName":{"name":"mstore","nativeSrc":"906:6:87","nodeType":"YulIdentifier","src":"906:6:87"},"nativeSrc":"906:22:87","nodeType":"YulFunctionCall","src":"906:22:87"},"nativeSrc":"906:22:87","nodeType":"YulExpressionStatement","src":"906:22:87"},{"body":{"nativeSrc":"980:16:87","nodeType":"YulBlock","src":"980:16:87","statements":[{"expression":{"arguments":[{"kind":"number","nativeSrc":"989:1:87","nodeType":"YulLiteral","src":"989:1:87","type":"","value":"0"},{"kind":"number","nativeSrc":"992:1:87","nodeType":"YulLiteral","src":"992:1:87","type":"","value":"0"}],"functionName":{"name":"revert","nativeSrc":"982:6:87","nodeType":"YulIdentifier","src":"982:6:87"},"nativeSrc":"982:12:87","nodeType":"YulFunctionCall","src":"982:12:87"},"nativeSrc":"982:12:87","nodeType":"YulExpressionStatement","src":"982:12:87"}]},"condition":{"arguments":[{"arguments":[{"arguments":[{"name":"offset","nativeSrc":"951:6:87","nodeType":"YulIdentifier","src":"951:6:87"},{"name":"length","nativeSrc":"959:6:87","nodeType":"YulIdentifier","src":"959:6:87"}],"functionName":{"name":"add","nativeSrc":"947:3:87","nodeType":"YulIdentifier","src":"947:3:87"},"nativeSrc":"947:19:87","nodeType":"YulFunctionCall","src":"947:19:87"},{"kind":"number","nativeSrc":"968:4:87","nodeType":"YulLiteral","src":"968:4:87","type":"","value":"0x20"}],"functionName":{"name":"add","nativeSrc":"943:3:87","nodeType":"YulIdentifier","src":"943:3:87"},"nativeSrc":"943:30:87","nodeType":"YulFunctionCall","src":"943:30:87"},{"name":"end","nativeSrc":"975:3:87","nodeType":"YulIdentifier","src":"975:3:87"}],"functionName":{"name":"gt","nativeSrc":"940:2:87","nodeType":"YulIdentifier","src":"940:2:87"},"nativeSrc":"940:39:87","nodeType":"YulFunctionCall","src":"940:39:87"},"nativeSrc":"937:59:87","nodeType":"YulIf","src":"937:59:87"},{"expression":{"arguments":[{"arguments":[{"name":"memPtr","nativeSrc":"1022:6:87","nodeType":"YulIdentifier","src":"1022:6:87"},{"kind":"number","nativeSrc":"1030:4:87","nodeType":"YulLiteral","src":"1030:4:87","type":"","value":"0x20"}],"functionName":{"name":"add","nativeSrc":"1018:3:87","nodeType":"YulIdentifier","src":"1018:3:87"},"nativeSrc":"1018:17:87","nodeType":"YulFunctionCall","src":"1018:17:87"},{"arguments":[{"name":"offset","nativeSrc":"1041:6:87","nodeType":"YulIdentifier","src":"1041:6:87"},{"kind":"number","nativeSrc":"1049:4:87","nodeType":"YulLiteral","src":"1049:4:87","type":"","value":"0x20"}],"functionName":{"name":"add","nativeSrc":"1037:3:87","nodeType":"YulIdentifier","src":"1037:3:87"},"nativeSrc":"1037:17:87","nodeType":"YulFunctionCall","src":"1037:17:87"},{"name":"length","nativeSrc":"1056:6:87","nodeType":"YulIdentifier","src":"1056:6:87"}],"functionName":{"name":"calldatacopy","nativeSrc":"1005:12:87","nodeType":"YulIdentifier","src":"1005:12:87"},"nativeSrc":"1005:58:87","nodeType":"YulFunctionCall","src":"1005:58:87"},"nativeSrc":"1005:58:87","nodeType":"YulExpressionStatement","src":"1005:58:87"},{"expression":{"arguments":[{"arguments":[{"arguments":[{"name":"memPtr","nativeSrc":"1087:6:87","nodeType":"YulIdentifier","src":"1087:6:87"},{"name":"length","nativeSrc":"1095:6:87","nodeType":"YulIdentifier","src":"1095:6:87"}],"functionName":{"name":"add","nativeSrc":"1083:3:87","nodeType":"YulIdentifier","src":"1083:3:87"},"nativeSrc":"1083:19:87","nodeType":"YulFunctionCall","src":"1083:19:87"},{"kind":"number","nativeSrc":"1104:4:87","nodeType":"YulLiteral","src":"1104:4:87","type":"","value":"0x20"}],"functionName":{"name":"add","nativeSrc":"1079:3:87","nodeType":"YulIdentifier","src":"1079:3:87"},"nativeSrc":"1079:30:87","nodeType":"YulFunctionCall","src":"1079:30:87"},{"kind":"number","nativeSrc":"1111:1:87","nodeType":"YulLiteral","src":"1111:1:87","type":"","value":"0"}],"functionName":{"name":"mstore","nativeSrc":"1072:6:87","nodeType":"YulIdentifier","src":"1072:6:87"},"nativeSrc":"1072:41:87","nodeType":"YulFunctionCall","src":"1072:41:87"},"nativeSrc":"1072:41:87","nodeType":"YulExpressionStatement","src":"1072:41:87"},{"nativeSrc":"1122:15:87","nodeType":"YulAssignment","src":"1122:15:87","value":{"name":"memPtr","nativeSrc":"1131:6:87","nodeType":"YulIdentifier","src":"1131:6:87"},"variableNames":[{"name":"array","nativeSrc":"1122:5:87","nodeType":"YulIdentifier","src":"1122:5:87"}]}]},"name":"abi_decode_bytes","nativeSrc":"398:745:87","nodeType":"YulFunctionDefinition","parameters":[{"name":"offset","nativeSrc":"424:6:87","nodeType":"YulTypedName","src":"424:6:87","type":""},{"name":"end","nativeSrc":"432:3:87","nodeType":"YulTypedName","src":"432:3:87","type":""}],"returnVariables":[{"name":"array","nativeSrc":"440:5:87","nodeType":"YulTypedName","src":"440:5:87","type":""}],"src":"398:745:87"},{"body":{"nativeSrc":"1242:383:87","nodeType":"YulBlock","src":"1242:383:87","statements":[{"body":{"nativeSrc":"1288:16:87","nodeType":"YulBlock","src":"1288:16:87","statements":[{"expression":{"arguments":[{"kind":"number","nativeSrc":"1297:1:87","nodeType":"YulLiteral","src":"1297:1:87","type":"","value":"0"},{"kind":"number","nativeSrc":"1300:1:87","nodeType":"YulLiteral","src":"1300:1:87","type":"","value":"0"}],"functionName":{"name":"revert","nativeSrc":"1290:6:87","nodeType":"YulIdentifier","src":"1290:6:87"},"nativeSrc":"1290:12:87","nodeType":"YulFunctionCall","src":"1290:12:87"},"nativeSrc":"1290:12:87","nodeType":"YulExpressionStatement","src":"1290:12:87"}]},"condition":{"arguments":[{"arguments":[{"name":"dataEnd","nativeSrc":"1263:7:87","nodeType":"YulIdentifier","src":"1263:7:87"},{"name":"headStart","nativeSrc":"1272:9:87","nodeType":"YulIdentifier","src":"1272:9:87"}],"functionName":{"name":"sub","nativeSrc":"1259:3:87","nodeType":"YulIdentifier","src":"1259:3:87"},"nativeSrc":"1259:23:87","nodeType":"YulFunctionCall","src":"1259:23:87"},{"kind":"number","nativeSrc":"1284:2:87","nodeType":"YulLiteral","src":"1284:2:87","type":"","value":"64"}],"functionName":{"name":"slt","nativeSrc":"1255:3:87","nodeType":"YulIdentifier","src":"1255:3:87"},"nativeSrc":"1255:32:87","nodeType":"YulFunctionCall","src":"1255:32:87"},"nativeSrc":"1252:52:87","nodeType":"YulIf","src":"1252:52:87"},{"nativeSrc":"1313:36:87","nodeType":"YulVariableDeclaration","src":"1313:36:87","value":{"arguments":[{"name":"headStart","nativeSrc":"1339:9:87","nodeType":"YulIdentifier","src":"1339:9:87"}],"functionName":{"name":"calldataload","nativeSrc":"1326:12:87","nodeType":"YulIdentifier","src":"1326:12:87"},"nativeSrc":"1326:23:87","nodeType":"YulFunctionCall","src":"1326:23:87"},"variables":[{"name":"value","nativeSrc":"1317:5:87","nodeType":"YulTypedName","src":"1317:5:87","type":""}]},{"body":{"nativeSrc":"1397:16:87","nodeType":"YulBlock","src":"1397:16:87","statements":[{"expression":{"arguments":[{"kind":"number","nativeSrc":"1406:1:87","nodeType":"YulLiteral","src":"1406:1:87","type":"","value":"0"},{"kind":"number","nativeSrc":"1409:1:87","nodeType":"YulLiteral","src":"1409:1:87","type":"","value":"0"}],"functionName":{"name":"revert","nativeSrc":"1399:6:87","nodeType":"YulIdentifier","src":"1399:6:87"},"nativeSrc":"1399:12:87","nodeType":"YulFunctionCall","src":"1399:12:87"},"nativeSrc":"1399:12:87","nodeType":"YulExpressionStatement","src":"1399:12:87"}]},"condition":{"arguments":[{"arguments":[{"name":"value","nativeSrc":"1371:5:87","nodeType":"YulIdentifier","src":"1371:5:87"},{"arguments":[{"name":"value","nativeSrc":"1382:5:87","nodeType":"YulIdentifier","src":"1382:5:87"},{"kind":"number","nativeSrc":"1389:4:87","nodeType":"YulLiteral","src":"1389:4:87","type":"","value":"0xff"}],"functionName":{"name":"and","nativeSrc":"1378:3:87","nodeType":"YulIdentifier","src":"1378:3:87"},"nativeSrc":"1378:16:87","nodeType":"YulFunctionCall","src":"1378:16:87"}],"functionName":{"name":"eq","nativeSrc":"1368:2:87","nodeType":"YulIdentifier","src":"1368:2:87"},"nativeSrc":"1368:27:87","nodeType":"YulFunctionCall","src":"1368:27:87"}],"functionName":{"name":"iszero","nativeSrc":"1361:6:87","nodeType":"YulIdentifier","src":"1361:6:87"},"nativeSrc":"1361:35:87","nodeType":"YulFunctionCall","src":"1361:35:87"},"nativeSrc":"1358:55:87","nodeType":"YulIf","src":"1358:55:87"},{"nativeSrc":"1422:15:87","nodeType":"YulAssignment","src":"1422:15:87","value":{"name":"value","nativeSrc":"1432:5:87","nodeType":"YulIdentifier","src":"1432:5:87"},"variableNames":[{"name":"value0","nativeSrc":"1422:6:87","nodeType":"YulIdentifier","src":"1422:6:87"}]},{"nativeSrc":"1446:46:87","nodeType":"YulVariableDeclaration","src":"1446:46:87","value":{"arguments":[{"arguments":[{"name":"headStart","nativeSrc":"1477:9:87","nodeType":"YulIdentifier","src":"1477:9:87"},{"kind":"number","nativeSrc":"1488:2:87","nodeType":"YulLiteral","src":"1488:2:87","type":"","value":"32"}],"functionName":{"name":"add","nativeSrc":"1473:3:87","nodeType":"YulIdentifier","src":"1473:3:87"},"nativeSrc":"1473:18:87","nodeType":"YulFunctionCall","src":"1473:18:87"}],"functionName":{"name":"calldataload","nativeSrc":"1460:12:87","nodeType":"YulIdentifier","src":"1460:12:87"},"nativeSrc":"1460:32:87","nodeType":"YulFunctionCall","src":"1460:32:87"},"variables":[{"name":"offset","nativeSrc":"1450:6:87","nodeType":"YulTypedName","src":"1450:6:87","type":""}]},{"body":{"nativeSrc":"1535:16:87","nodeType":"YulBlock","src":"1535:16:87","statements":[{"expression":{"arguments":[{"kind":"number","nativeSrc":"1544:1:87","nodeType":"YulLiteral","src":"1544:1:87","type":"","value":"0"},{"kind":"number","nativeSrc":"1547:1:87","nodeType":"YulLiteral","src":"1547:1:87","type":"","value":"0"}],"functionName":{"name":"revert","nativeSrc":"1537:6:87","nodeType":"YulIdentifier","src":"1537:6:87"},"nativeSrc":"1537:12:87","nodeType":"YulFunctionCall","src":"1537:12:87"},"nativeSrc":"1537:12:87","nodeType":"YulExpressionStatement","src":"1537:12:87"}]},"condition":{"arguments":[{"name":"offset","nativeSrc":"1507:6:87","nodeType":"YulIdentifier","src":"1507:6:87"},{"kind":"number","nativeSrc":"1515:18:87","nodeType":"YulLiteral","src":"1515:18:87","type":"","value":"0xffffffffffffffff"}],"functionName":{"name":"gt","nativeSrc":"1504:2:87","nodeType":"YulIdentifier","src":"1504:2:87"},"nativeSrc":"1504:30:87","nodeType":"YulFunctionCall","src":"1504:30:87"},"nativeSrc":"1501:50:87","nodeType":"YulIf","src":"1501:50:87"},{"nativeSrc":"1560:59:87","nodeType":"YulAssignment","src":"1560:59:87","value":{"arguments":[{"arguments":[{"name":"headStart","nativeSrc":"1591:9:87","nodeType":"YulIdentifier","src":"1591:9:87"},{"name":"offset","nativeSrc":"1602:6:87","nodeType":"YulIdentifier","src":"1602:6:87"}],"functionName":{"name":"add","nativeSrc":"1587:3:87","nodeType":"YulIdentifier","src":"1587:3:87"},"nativeSrc":"1587:22:87","nodeType":"YulFunctionCall","src":"1587:22:87"},{"name":"dataEnd","nativeSrc":"1611:7:87","nodeType":"YulIdentifier","src":"1611:7:87"}],"functionName":{"name":"abi_decode_bytes","nativeSrc":"1570:16:87","nodeType":"YulIdentifier","src":"1570:16:87"},"nativeSrc":"1570:49:87","nodeType":"YulFunctionCall","src":"1570:49:87"},"variableNames":[{"name":"value1","nativeSrc":"1560:6:87","nodeType":"YulIdentifier","src":"1560:6:87"}]}]},"name":"abi_decode_tuple_t_uint8t_bytes_memory_ptr","nativeSrc":"1148:477:87","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nativeSrc":"1200:9:87","nodeType":"YulTypedName","src":"1200:9:87","type":""},{"name":"dataEnd","nativeSrc":"1211:7:87","nodeType":"YulTypedName","src":"1211:7:87","type":""}],"returnVariables":[{"name":"value0","nativeSrc":"1223:6:87","nodeType":"YulTypedName","src":"1223:6:87","type":""},{"name":"value1","nativeSrc":"1231:6:87","nodeType":"YulTypedName","src":"1231:6:87","type":""}],"src":"1148:477:87"},{"body":{"nativeSrc":"1749:297:87","nodeType":"YulBlock","src":"1749:297:87","statements":[{"expression":{"arguments":[{"name":"headStart","nativeSrc":"1766:9:87","nodeType":"YulIdentifier","src":"1766:9:87"},{"kind":"number","nativeSrc":"1777:2:87","nodeType":"YulLiteral","src":"1777:2:87","type":"","value":"32"}],"functionName":{"name":"mstore","nativeSrc":"1759:6:87","nodeType":"YulIdentifier","src":"1759:6:87"},"nativeSrc":"1759:21:87","nodeType":"YulFunctionCall","src":"1759:21:87"},"nativeSrc":"1759:21:87","nodeType":"YulExpressionStatement","src":"1759:21:87"},{"nativeSrc":"1789:27:87","nodeType":"YulVariableDeclaration","src":"1789:27:87","value":{"arguments":[{"name":"value0","nativeSrc":"1809:6:87","nodeType":"YulIdentifier","src":"1809:6:87"}],"functionName":{"name":"mload","nativeSrc":"1803:5:87","nodeType":"YulIdentifier","src":"1803:5:87"},"nativeSrc":"1803:13:87","nodeType":"YulFunctionCall","src":"1803:13:87"},"variables":[{"name":"length","nativeSrc":"1793:6:87","nodeType":"YulTypedName","src":"1793:6:87","type":""}]},{"expression":{"arguments":[{"arguments":[{"name":"headStart","nativeSrc":"1836:9:87","nodeType":"YulIdentifier","src":"1836:9:87"},{"kind":"number","nativeSrc":"1847:2:87","nodeType":"YulLiteral","src":"1847:2:87","type":"","value":"32"}],"functionName":{"name":"add","nativeSrc":"1832:3:87","nodeType":"YulIdentifier","src":"1832:3:87"},"nativeSrc":"1832:18:87","nodeType":"YulFunctionCall","src":"1832:18:87"},{"name":"length","nativeSrc":"1852:6:87","nodeType":"YulIdentifier","src":"1852:6:87"}],"functionName":{"name":"mstore","nativeSrc":"1825:6:87","nodeType":"YulIdentifier","src":"1825:6:87"},"nativeSrc":"1825:34:87","nodeType":"YulFunctionCall","src":"1825:34:87"},"nativeSrc":"1825:34:87","nodeType":"YulExpressionStatement","src":"1825:34:87"},{"expression":{"arguments":[{"arguments":[{"name":"headStart","nativeSrc":"1878:9:87","nodeType":"YulIdentifier","src":"1878:9:87"},{"kind":"number","nativeSrc":"1889:2:87","nodeType":"YulLiteral","src":"1889:2:87","type":"","value":"64"}],"functionName":{"name":"add","nativeSrc":"1874:3:87","nodeType":"YulIdentifier","src":"1874:3:87"},"nativeSrc":"1874:18:87","nodeType":"YulFunctionCall","src":"1874:18:87"},{"arguments":[{"name":"value0","nativeSrc":"1898:6:87","nodeType":"YulIdentifier","src":"1898:6:87"},{"kind":"number","nativeSrc":"1906:2:87","nodeType":"YulLiteral","src":"1906:2:87","type":"","value":"32"}],"functionName":{"name":"add","nativeSrc":"1894:3:87","nodeType":"YulIdentifier","src":"1894:3:87"},"nativeSrc":"1894:15:87","nodeType":"YulFunctionCall","src":"1894:15:87"},{"name":"length","nativeSrc":"1911:6:87","nodeType":"YulIdentifier","src":"1911:6:87"}],"functionName":{"name":"mcopy","nativeSrc":"1868:5:87","nodeType":"YulIdentifier","src":"1868:5:87"},"nativeSrc":"1868:50:87","nodeType":"YulFunctionCall","src":"1868:50:87"},"nativeSrc":"1868:50:87","nodeType":"YulExpressionStatement","src":"1868:50:87"},{"expression":{"arguments":[{"arguments":[{"arguments":[{"name":"headStart","nativeSrc":"1942:9:87","nodeType":"YulIdentifier","src":"1942:9:87"},{"name":"length","nativeSrc":"1953:6:87","nodeType":"YulIdentifier","src":"1953:6:87"}],"functionName":{"name":"add","nativeSrc":"1938:3:87","nodeType":"YulIdentifier","src":"1938:3:87"},"nativeSrc":"1938:22:87","nodeType":"YulFunctionCall","src":"1938:22:87"},{"kind":"number","nativeSrc":"1962:2:87","nodeType":"YulLiteral","src":"1962:2:87","type":"","value":"64"}],"functionName":{"name":"add","nativeSrc":"1934:3:87","nodeType":"YulIdentifier","src":"1934:3:87"},"nativeSrc":"1934:31:87","nodeType":"YulFunctionCall","src":"1934:31:87"},{"kind":"number","nativeSrc":"1967:1:87","nodeType":"YulLiteral","src":"1967:1:87","type":"","value":"0"}],"functionName":{"name":"mstore","nativeSrc":"1927:6:87","nodeType":"YulIdentifier","src":"1927:6:87"},"nativeSrc":"1927:42:87","nodeType":"YulFunctionCall","src":"1927:42:87"},"nativeSrc":"1927:42:87","nodeType":"YulExpressionStatement","src":"1927:42:87"},{"nativeSrc":"1978:62:87","nodeType":"YulAssignment","src":"1978:62:87","value":{"arguments":[{"arguments":[{"name":"headStart","nativeSrc":"1994:9:87","nodeType":"YulIdentifier","src":"1994:9:87"},{"arguments":[{"arguments":[{"name":"length","nativeSrc":"2013:6:87","nodeType":"YulIdentifier","src":"2013:6:87"},{"kind":"number","nativeSrc":"2021:2:87","nodeType":"YulLiteral","src":"2021:2:87","type":"","value":"31"}],"functionName":{"name":"add","nativeSrc":"2009:3:87","nodeType":"YulIdentifier","src":"2009:3:87"},"nativeSrc":"2009:15:87","nodeType":"YulFunctionCall","src":"2009:15:87"},{"arguments":[{"kind":"number","nativeSrc":"2030:2:87","nodeType":"YulLiteral","src":"2030:2:87","type":"","value":"31"}],"functionName":{"name":"not","nativeSrc":"2026:3:87","nodeType":"YulIdentifier","src":"2026:3:87"},"nativeSrc":"2026:7:87","nodeType":"YulFunctionCall","src":"2026:7:87"}],"functionName":{"name":"and","nativeSrc":"2005:3:87","nodeType":"YulIdentifier","src":"2005:3:87"},"nativeSrc":"2005:29:87","nodeType":"YulFunctionCall","src":"2005:29:87"}],"functionName":{"name":"add","nativeSrc":"1990:3:87","nodeType":"YulIdentifier","src":"1990:3:87"},"nativeSrc":"1990:45:87","nodeType":"YulFunctionCall","src":"1990:45:87"},{"kind":"number","nativeSrc":"2037:2:87","nodeType":"YulLiteral","src":"2037:2:87","type":"","value":"64"}],"functionName":{"name":"add","nativeSrc":"1986:3:87","nodeType":"YulIdentifier","src":"1986:3:87"},"nativeSrc":"1986:54:87","nodeType":"YulFunctionCall","src":"1986:54:87"},"variableNames":[{"name":"tail","nativeSrc":"1978:4:87","nodeType":"YulIdentifier","src":"1978:4:87"}]}]},"name":"abi_encode_tuple_t_bytes_memory_ptr__to_t_bytes_memory_ptr__fromStack_reversed","nativeSrc":"1630:416:87","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nativeSrc":"1718:9:87","nodeType":"YulTypedName","src":"1718:9:87","type":""},{"name":"value0","nativeSrc":"1729:6:87","nodeType":"YulTypedName","src":"1729:6:87","type":""}],"returnVariables":[{"name":"tail","nativeSrc":"1740:4:87","nodeType":"YulTypedName","src":"1740:4:87","type":""}],"src":"1630:416:87"},{"body":{"nativeSrc":"2121:110:87","nodeType":"YulBlock","src":"2121:110:87","statements":[{"body":{"nativeSrc":"2167:16:87","nodeType":"YulBlock","src":"2167:16:87","statements":[{"expression":{"arguments":[{"kind":"number","nativeSrc":"2176:1:87","nodeType":"YulLiteral","src":"2176:1:87","type":"","value":"0"},{"kind":"number","nativeSrc":"2179:1:87","nodeType":"YulLiteral","src":"2179:1:87","type":"","value":"0"}],"functionName":{"name":"revert","nativeSrc":"2169:6:87","nodeType":"YulIdentifier","src":"2169:6:87"},"nativeSrc":"2169:12:87","nodeType":"YulFunctionCall","src":"2169:12:87"},"nativeSrc":"2169:12:87","nodeType":"YulExpressionStatement","src":"2169:12:87"}]},"condition":{"arguments":[{"arguments":[{"name":"dataEnd","nativeSrc":"2142:7:87","nodeType":"YulIdentifier","src":"2142:7:87"},{"name":"headStart","nativeSrc":"2151:9:87","nodeType":"YulIdentifier","src":"2151:9:87"}],"functionName":{"name":"sub","nativeSrc":"2138:3:87","nodeType":"YulIdentifier","src":"2138:3:87"},"nativeSrc":"2138:23:87","nodeType":"YulFunctionCall","src":"2138:23:87"},{"kind":"number","nativeSrc":"2163:2:87","nodeType":"YulLiteral","src":"2163:2:87","type":"","value":"32"}],"functionName":{"name":"slt","nativeSrc":"2134:3:87","nodeType":"YulIdentifier","src":"2134:3:87"},"nativeSrc":"2134:32:87","nodeType":"YulFunctionCall","src":"2134:32:87"},"nativeSrc":"2131:52:87","nodeType":"YulIf","src":"2131:52:87"},{"nativeSrc":"2192:33:87","nodeType":"YulAssignment","src":"2192:33:87","value":{"arguments":[{"name":"headStart","nativeSrc":"2215:9:87","nodeType":"YulIdentifier","src":"2215:9:87"}],"functionName":{"name":"calldataload","nativeSrc":"2202:12:87","nodeType":"YulIdentifier","src":"2202:12:87"},"nativeSrc":"2202:23:87","nodeType":"YulFunctionCall","src":"2202:23:87"},"variableNames":[{"name":"value0","nativeSrc":"2192:6:87","nodeType":"YulIdentifier","src":"2192:6:87"}]}]},"name":"abi_decode_tuple_t_uint256","nativeSrc":"2051:180:87","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nativeSrc":"2087:9:87","nodeType":"YulTypedName","src":"2087:9:87","type":""},{"name":"dataEnd","nativeSrc":"2098:7:87","nodeType":"YulTypedName","src":"2098:7:87","type":""}],"returnVariables":[{"name":"value0","nativeSrc":"2110:6:87","nodeType":"YulTypedName","src":"2110:6:87","type":""}],"src":"2051:180:87"},{"body":{"nativeSrc":"2281:86:87","nodeType":"YulBlock","src":"2281:86:87","statements":[{"body":{"nativeSrc":"2345:16:87","nodeType":"YulBlock","src":"2345:16:87","statements":[{"expression":{"arguments":[{"kind":"number","nativeSrc":"2354:1:87","nodeType":"YulLiteral","src":"2354:1:87","type":"","value":"0"},{"kind":"number","nativeSrc":"2357:1:87","nodeType":"YulLiteral","src":"2357:1:87","type":"","value":"0"}],"functionName":{"name":"revert","nativeSrc":"2347:6:87","nodeType":"YulIdentifier","src":"2347:6:87"},"nativeSrc":"2347:12:87","nodeType":"YulFunctionCall","src":"2347:12:87"},"nativeSrc":"2347:12:87","nodeType":"YulExpressionStatement","src":"2347:12:87"}]},"condition":{"arguments":[{"arguments":[{"name":"value","nativeSrc":"2304:5:87","nodeType":"YulIdentifier","src":"2304:5:87"},{"arguments":[{"name":"value","nativeSrc":"2315:5:87","nodeType":"YulIdentifier","src":"2315:5:87"},{"arguments":[{"arguments":[{"kind":"number","nativeSrc":"2330:3:87","nodeType":"YulLiteral","src":"2330:3:87","type":"","value":"160"},{"kind":"number","nativeSrc":"2335:1:87","nodeType":"YulLiteral","src":"2335:1:87","type":"","value":"1"}],"functionName":{"name":"shl","nativeSrc":"2326:3:87","nodeType":"YulIdentifier","src":"2326:3:87"},"nativeSrc":"2326:11:87","nodeType":"YulFunctionCall","src":"2326:11:87"},{"kind":"number","nativeSrc":"2339:1:87","nodeType":"YulLiteral","src":"2339:1:87","type":"","value":"1"}],"functionName":{"name":"sub","nativeSrc":"2322:3:87","nodeType":"YulIdentifier","src":"2322:3:87"},"nativeSrc":"2322:19:87","nodeType":"YulFunctionCall","src":"2322:19:87"}],"functionName":{"name":"and","nativeSrc":"2311:3:87","nodeType":"YulIdentifier","src":"2311:3:87"},"nativeSrc":"2311:31:87","nodeType":"YulFunctionCall","src":"2311:31:87"}],"functionName":{"name":"eq","nativeSrc":"2301:2:87","nodeType":"YulIdentifier","src":"2301:2:87"},"nativeSrc":"2301:42:87","nodeType":"YulFunctionCall","src":"2301:42:87"}],"functionName":{"name":"iszero","nativeSrc":"2294:6:87","nodeType":"YulIdentifier","src":"2294:6:87"},"nativeSrc":"2294:50:87","nodeType":"YulFunctionCall","src":"2294:50:87"},"nativeSrc":"2291:70:87","nodeType":"YulIf","src":"2291:70:87"}]},"name":"validator_revert_address","nativeSrc":"2236:131:87","nodeType":"YulFunctionDefinition","parameters":[{"name":"value","nativeSrc":"2270:5:87","nodeType":"YulTypedName","src":"2270:5:87","type":""}],"src":"2236:131:87"},{"body":{"nativeSrc":"2442:177:87","nodeType":"YulBlock","src":"2442:177:87","statements":[{"body":{"nativeSrc":"2488:16:87","nodeType":"YulBlock","src":"2488:16:87","statements":[{"expression":{"arguments":[{"kind":"number","nativeSrc":"2497:1:87","nodeType":"YulLiteral","src":"2497:1:87","type":"","value":"0"},{"kind":"number","nativeSrc":"2500:1:87","nodeType":"YulLiteral","src":"2500:1:87","type":"","value":"0"}],"functionName":{"name":"revert","nativeSrc":"2490:6:87","nodeType":"YulIdentifier","src":"2490:6:87"},"nativeSrc":"2490:12:87","nodeType":"YulFunctionCall","src":"2490:12:87"},"nativeSrc":"2490:12:87","nodeType":"YulExpressionStatement","src":"2490:12:87"}]},"condition":{"arguments":[{"arguments":[{"name":"dataEnd","nativeSrc":"2463:7:87","nodeType":"YulIdentifier","src":"2463:7:87"},{"name":"headStart","nativeSrc":"2472:9:87","nodeType":"YulIdentifier","src":"2472:9:87"}],"functionName":{"name":"sub","nativeSrc":"2459:3:87","nodeType":"YulIdentifier","src":"2459:3:87"},"nativeSrc":"2459:23:87","nodeType":"YulFunctionCall","src":"2459:23:87"},{"kind":"number","nativeSrc":"2484:2:87","nodeType":"YulLiteral","src":"2484:2:87","type":"","value":"32"}],"functionName":{"name":"slt","nativeSrc":"2455:3:87","nodeType":"YulIdentifier","src":"2455:3:87"},"nativeSrc":"2455:32:87","nodeType":"YulFunctionCall","src":"2455:32:87"},"nativeSrc":"2452:52:87","nodeType":"YulIf","src":"2452:52:87"},{"nativeSrc":"2513:36:87","nodeType":"YulVariableDeclaration","src":"2513:36:87","value":{"arguments":[{"name":"headStart","nativeSrc":"2539:9:87","nodeType":"YulIdentifier","src":"2539:9:87"}],"functionName":{"name":"calldataload","nativeSrc":"2526:12:87","nodeType":"YulIdentifier","src":"2526:12:87"},"nativeSrc":"2526:23:87","nodeType":"YulFunctionCall","src":"2526:23:87"},"variables":[{"name":"value","nativeSrc":"2517:5:87","nodeType":"YulTypedName","src":"2517:5:87","type":""}]},{"expression":{"arguments":[{"name":"value","nativeSrc":"2583:5:87","nodeType":"YulIdentifier","src":"2583:5:87"}],"functionName":{"name":"validator_revert_address","nativeSrc":"2558:24:87","nodeType":"YulIdentifier","src":"2558:24:87"},"nativeSrc":"2558:31:87","nodeType":"YulFunctionCall","src":"2558:31:87"},"nativeSrc":"2558:31:87","nodeType":"YulExpressionStatement","src":"2558:31:87"},{"nativeSrc":"2598:15:87","nodeType":"YulAssignment","src":"2598:15:87","value":{"name":"value","nativeSrc":"2608:5:87","nodeType":"YulIdentifier","src":"2608:5:87"},"variableNames":[{"name":"value0","nativeSrc":"2598:6:87","nodeType":"YulIdentifier","src":"2598:6:87"}]}]},"name":"abi_decode_tuple_t_address","nativeSrc":"2372:247:87","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nativeSrc":"2408:9:87","nodeType":"YulTypedName","src":"2408:9:87","type":""},{"name":"dataEnd","nativeSrc":"2419:7:87","nodeType":"YulTypedName","src":"2419:7:87","type":""}],"returnVariables":[{"name":"value0","nativeSrc":"2431:6:87","nodeType":"YulTypedName","src":"2431:6:87","type":""}],"src":"2372:247:87"},{"body":{"nativeSrc":"2725:76:87","nodeType":"YulBlock","src":"2725:76:87","statements":[{"nativeSrc":"2735:26:87","nodeType":"YulAssignment","src":"2735:26:87","value":{"arguments":[{"name":"headStart","nativeSrc":"2747:9:87","nodeType":"YulIdentifier","src":"2747:9:87"},{"kind":"number","nativeSrc":"2758:2:87","nodeType":"YulLiteral","src":"2758:2:87","type":"","value":"32"}],"functionName":{"name":"add","nativeSrc":"2743:3:87","nodeType":"YulIdentifier","src":"2743:3:87"},"nativeSrc":"2743:18:87","nodeType":"YulFunctionCall","src":"2743:18:87"},"variableNames":[{"name":"tail","nativeSrc":"2735:4:87","nodeType":"YulIdentifier","src":"2735:4:87"}]},{"expression":{"arguments":[{"name":"headStart","nativeSrc":"2777:9:87","nodeType":"YulIdentifier","src":"2777:9:87"},{"name":"value0","nativeSrc":"2788:6:87","nodeType":"YulIdentifier","src":"2788:6:87"}],"functionName":{"name":"mstore","nativeSrc":"2770:6:87","nodeType":"YulIdentifier","src":"2770:6:87"},"nativeSrc":"2770:25:87","nodeType":"YulFunctionCall","src":"2770:25:87"},"nativeSrc":"2770:25:87","nodeType":"YulExpressionStatement","src":"2770:25:87"}]},"name":"abi_encode_tuple_t_uint256__to_t_uint256__fromStack_reversed","nativeSrc":"2624:177:87","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nativeSrc":"2694:9:87","nodeType":"YulTypedName","src":"2694:9:87","type":""},{"name":"value0","nativeSrc":"2705:6:87","nodeType":"YulTypedName","src":"2705:6:87","type":""}],"returnVariables":[{"name":"tail","nativeSrc":"2716:4:87","nodeType":"YulTypedName","src":"2716:4:87","type":""}],"src":"2624:177:87"},{"body":{"nativeSrc":"2848:76:87","nodeType":"YulBlock","src":"2848:76:87","statements":[{"body":{"nativeSrc":"2902:16:87","nodeType":"YulBlock","src":"2902:16:87","statements":[{"expression":{"arguments":[{"kind":"number","nativeSrc":"2911:1:87","nodeType":"YulLiteral","src":"2911:1:87","type":"","value":"0"},{"kind":"number","nativeSrc":"2914:1:87","nodeType":"YulLiteral","src":"2914:1:87","type":"","value":"0"}],"functionName":{"name":"revert","nativeSrc":"2904:6:87","nodeType":"YulIdentifier","src":"2904:6:87"},"nativeSrc":"2904:12:87","nodeType":"YulFunctionCall","src":"2904:12:87"},"nativeSrc":"2904:12:87","nodeType":"YulExpressionStatement","src":"2904:12:87"}]},"condition":{"arguments":[{"arguments":[{"name":"value","nativeSrc":"2871:5:87","nodeType":"YulIdentifier","src":"2871:5:87"},{"arguments":[{"arguments":[{"name":"value","nativeSrc":"2892:5:87","nodeType":"YulIdentifier","src":"2892:5:87"}],"functionName":{"name":"iszero","nativeSrc":"2885:6:87","nodeType":"YulIdentifier","src":"2885:6:87"},"nativeSrc":"2885:13:87","nodeType":"YulFunctionCall","src":"2885:13:87"}],"functionName":{"name":"iszero","nativeSrc":"2878:6:87","nodeType":"YulIdentifier","src":"2878:6:87"},"nativeSrc":"2878:21:87","nodeType":"YulFunctionCall","src":"2878:21:87"}],"functionName":{"name":"eq","nativeSrc":"2868:2:87","nodeType":"YulIdentifier","src":"2868:2:87"},"nativeSrc":"2868:32:87","nodeType":"YulFunctionCall","src":"2868:32:87"}],"functionName":{"name":"iszero","nativeSrc":"2861:6:87","nodeType":"YulIdentifier","src":"2861:6:87"},"nativeSrc":"2861:40:87","nodeType":"YulFunctionCall","src":"2861:40:87"},"nativeSrc":"2858:60:87","nodeType":"YulIf","src":"2858:60:87"}]},"name":"validator_revert_bool","nativeSrc":"2806:118:87","nodeType":"YulFunctionDefinition","parameters":[{"name":"value","nativeSrc":"2837:5:87","nodeType":"YulTypedName","src":"2837:5:87","type":""}],"src":"2806:118:87"},{"body":{"nativeSrc":"2996:174:87","nodeType":"YulBlock","src":"2996:174:87","statements":[{"body":{"nativeSrc":"3042:16:87","nodeType":"YulBlock","src":"3042:16:87","statements":[{"expression":{"arguments":[{"kind":"number","nativeSrc":"3051:1:87","nodeType":"YulLiteral","src":"3051:1:87","type":"","value":"0"},{"kind":"number","nativeSrc":"3054:1:87","nodeType":"YulLiteral","src":"3054:1:87","type":"","value":"0"}],"functionName":{"name":"revert","nativeSrc":"3044:6:87","nodeType":"YulIdentifier","src":"3044:6:87"},"nativeSrc":"3044:12:87","nodeType":"YulFunctionCall","src":"3044:12:87"},"nativeSrc":"3044:12:87","nodeType":"YulExpressionStatement","src":"3044:12:87"}]},"condition":{"arguments":[{"arguments":[{"name":"dataEnd","nativeSrc":"3017:7:87","nodeType":"YulIdentifier","src":"3017:7:87"},{"name":"headStart","nativeSrc":"3026:9:87","nodeType":"YulIdentifier","src":"3026:9:87"}],"functionName":{"name":"sub","nativeSrc":"3013:3:87","nodeType":"YulIdentifier","src":"3013:3:87"},"nativeSrc":"3013:23:87","nodeType":"YulFunctionCall","src":"3013:23:87"},{"kind":"number","nativeSrc":"3038:2:87","nodeType":"YulLiteral","src":"3038:2:87","type":"","value":"32"}],"functionName":{"name":"slt","nativeSrc":"3009:3:87","nodeType":"YulIdentifier","src":"3009:3:87"},"nativeSrc":"3009:32:87","nodeType":"YulFunctionCall","src":"3009:32:87"},"nativeSrc":"3006:52:87","nodeType":"YulIf","src":"3006:52:87"},{"nativeSrc":"3067:36:87","nodeType":"YulVariableDeclaration","src":"3067:36:87","value":{"arguments":[{"name":"headStart","nativeSrc":"3093:9:87","nodeType":"YulIdentifier","src":"3093:9:87"}],"functionName":{"name":"calldataload","nativeSrc":"3080:12:87","nodeType":"YulIdentifier","src":"3080:12:87"},"nativeSrc":"3080:23:87","nodeType":"YulFunctionCall","src":"3080:23:87"},"variables":[{"name":"value","nativeSrc":"3071:5:87","nodeType":"YulTypedName","src":"3071:5:87","type":""}]},{"expression":{"arguments":[{"name":"value","nativeSrc":"3134:5:87","nodeType":"YulIdentifier","src":"3134:5:87"}],"functionName":{"name":"validator_revert_bool","nativeSrc":"3112:21:87","nodeType":"YulIdentifier","src":"3112:21:87"},"nativeSrc":"3112:28:87","nodeType":"YulFunctionCall","src":"3112:28:87"},"nativeSrc":"3112:28:87","nodeType":"YulExpressionStatement","src":"3112:28:87"},{"nativeSrc":"3149:15:87","nodeType":"YulAssignment","src":"3149:15:87","value":{"name":"value","nativeSrc":"3159:5:87","nodeType":"YulIdentifier","src":"3159:5:87"},"variableNames":[{"name":"value0","nativeSrc":"3149:6:87","nodeType":"YulIdentifier","src":"3149:6:87"}]}]},"name":"abi_decode_tuple_t_bool","nativeSrc":"2929:241:87","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nativeSrc":"2962:9:87","nodeType":"YulTypedName","src":"2962:9:87","type":""},{"name":"dataEnd","nativeSrc":"2973:7:87","nodeType":"YulTypedName","src":"2973:7:87","type":""}],"returnVariables":[{"name":"value0","nativeSrc":"2985:6:87","nodeType":"YulTypedName","src":"2985:6:87","type":""}],"src":"2929:241:87"},{"body":{"nativeSrc":"3276:76:87","nodeType":"YulBlock","src":"3276:76:87","statements":[{"nativeSrc":"3286:26:87","nodeType":"YulAssignment","src":"3286:26:87","value":{"arguments":[{"name":"headStart","nativeSrc":"3298:9:87","nodeType":"YulIdentifier","src":"3298:9:87"},{"kind":"number","nativeSrc":"3309:2:87","nodeType":"YulLiteral","src":"3309:2:87","type":"","value":"32"}],"functionName":{"name":"add","nativeSrc":"3294:3:87","nodeType":"YulIdentifier","src":"3294:3:87"},"nativeSrc":"3294:18:87","nodeType":"YulFunctionCall","src":"3294:18:87"},"variableNames":[{"name":"tail","nativeSrc":"3286:4:87","nodeType":"YulIdentifier","src":"3286:4:87"}]},{"expression":{"arguments":[{"name":"headStart","nativeSrc":"3328:9:87","nodeType":"YulIdentifier","src":"3328:9:87"},{"name":"value0","nativeSrc":"3339:6:87","nodeType":"YulIdentifier","src":"3339:6:87"}],"functionName":{"name":"mstore","nativeSrc":"3321:6:87","nodeType":"YulIdentifier","src":"3321:6:87"},"nativeSrc":"3321:25:87","nodeType":"YulFunctionCall","src":"3321:25:87"},"nativeSrc":"3321:25:87","nodeType":"YulExpressionStatement","src":"3321:25:87"}]},"name":"abi_encode_tuple_t_bytes32__to_t_bytes32__fromStack_reversed","nativeSrc":"3175:177:87","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nativeSrc":"3245:9:87","nodeType":"YulTypedName","src":"3245:9:87","type":""},{"name":"value0","nativeSrc":"3256:6:87","nodeType":"YulTypedName","src":"3256:6:87","type":""}],"returnVariables":[{"name":"tail","nativeSrc":"3267:4:87","nodeType":"YulTypedName","src":"3267:4:87","type":""}],"src":"3175:177:87"},{"body":{"nativeSrc":"3458:102:87","nodeType":"YulBlock","src":"3458:102:87","statements":[{"nativeSrc":"3468:26:87","nodeType":"YulAssignment","src":"3468:26:87","value":{"arguments":[{"name":"headStart","nativeSrc":"3480:9:87","nodeType":"YulIdentifier","src":"3480:9:87"},{"kind":"number","nativeSrc":"3491:2:87","nodeType":"YulLiteral","src":"3491:2:87","type":"","value":"32"}],"functionName":{"name":"add","nativeSrc":"3476:3:87","nodeType":"YulIdentifier","src":"3476:3:87"},"nativeSrc":"3476:18:87","nodeType":"YulFunctionCall","src":"3476:18:87"},"variableNames":[{"name":"tail","nativeSrc":"3468:4:87","nodeType":"YulIdentifier","src":"3468:4:87"}]},{"expression":{"arguments":[{"name":"headStart","nativeSrc":"3510:9:87","nodeType":"YulIdentifier","src":"3510:9:87"},{"arguments":[{"name":"value0","nativeSrc":"3525:6:87","nodeType":"YulIdentifier","src":"3525:6:87"},{"arguments":[{"arguments":[{"kind":"number","nativeSrc":"3541:3:87","nodeType":"YulLiteral","src":"3541:3:87","type":"","value":"160"},{"kind":"number","nativeSrc":"3546:1:87","nodeType":"YulLiteral","src":"3546:1:87","type":"","value":"1"}],"functionName":{"name":"shl","nativeSrc":"3537:3:87","nodeType":"YulIdentifier","src":"3537:3:87"},"nativeSrc":"3537:11:87","nodeType":"YulFunctionCall","src":"3537:11:87"},{"kind":"number","nativeSrc":"3550:1:87","nodeType":"YulLiteral","src":"3550:1:87","type":"","value":"1"}],"functionName":{"name":"sub","nativeSrc":"3533:3:87","nodeType":"YulIdentifier","src":"3533:3:87"},"nativeSrc":"3533:19:87","nodeType":"YulFunctionCall","src":"3533:19:87"}],"functionName":{"name":"and","nativeSrc":"3521:3:87","nodeType":"YulIdentifier","src":"3521:3:87"},"nativeSrc":"3521:32:87","nodeType":"YulFunctionCall","src":"3521:32:87"}],"functionName":{"name":"mstore","nativeSrc":"3503:6:87","nodeType":"YulIdentifier","src":"3503:6:87"},"nativeSrc":"3503:51:87","nodeType":"YulFunctionCall","src":"3503:51:87"},"nativeSrc":"3503:51:87","nodeType":"YulExpressionStatement","src":"3503:51:87"}]},"name":"abi_encode_tuple_t_address__to_t_address__fromStack_reversed","nativeSrc":"3357:203:87","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nativeSrc":"3427:9:87","nodeType":"YulTypedName","src":"3427:9:87","type":""},{"name":"value0","nativeSrc":"3438:6:87","nodeType":"YulTypedName","src":"3438:6:87","type":""}],"returnVariables":[{"name":"tail","nativeSrc":"3449:4:87","nodeType":"YulTypedName","src":"3449:4:87","type":""}],"src":"3357:203:87"},{"body":{"nativeSrc":"3644:241:87","nodeType":"YulBlock","src":"3644:241:87","statements":[{"body":{"nativeSrc":"3690:16:87","nodeType":"YulBlock","src":"3690:16:87","statements":[{"expression":{"arguments":[{"kind":"number","nativeSrc":"3699:1:87","nodeType":"YulLiteral","src":"3699:1:87","type":"","value":"0"},{"kind":"number","nativeSrc":"3702:1:87","nodeType":"YulLiteral","src":"3702:1:87","type":"","value":"0"}],"functionName":{"name":"revert","nativeSrc":"3692:6:87","nodeType":"YulIdentifier","src":"3692:6:87"},"nativeSrc":"3692:12:87","nodeType":"YulFunctionCall","src":"3692:12:87"},"nativeSrc":"3692:12:87","nodeType":"YulExpressionStatement","src":"3692:12:87"}]},"condition":{"arguments":[{"arguments":[{"name":"dataEnd","nativeSrc":"3665:7:87","nodeType":"YulIdentifier","src":"3665:7:87"},{"name":"headStart","nativeSrc":"3674:9:87","nodeType":"YulIdentifier","src":"3674:9:87"}],"functionName":{"name":"sub","nativeSrc":"3661:3:87","nodeType":"YulIdentifier","src":"3661:3:87"},"nativeSrc":"3661:23:87","nodeType":"YulFunctionCall","src":"3661:23:87"},{"kind":"number","nativeSrc":"3686:2:87","nodeType":"YulLiteral","src":"3686:2:87","type":"","value":"32"}],"functionName":{"name":"slt","nativeSrc":"3657:3:87","nodeType":"YulIdentifier","src":"3657:3:87"},"nativeSrc":"3657:32:87","nodeType":"YulFunctionCall","src":"3657:32:87"},"nativeSrc":"3654:52:87","nodeType":"YulIf","src":"3654:52:87"},{"nativeSrc":"3715:37:87","nodeType":"YulVariableDeclaration","src":"3715:37:87","value":{"arguments":[{"name":"headStart","nativeSrc":"3742:9:87","nodeType":"YulIdentifier","src":"3742:9:87"}],"functionName":{"name":"calldataload","nativeSrc":"3729:12:87","nodeType":"YulIdentifier","src":"3729:12:87"},"nativeSrc":"3729:23:87","nodeType":"YulFunctionCall","src":"3729:23:87"},"variables":[{"name":"offset","nativeSrc":"3719:6:87","nodeType":"YulTypedName","src":"3719:6:87","type":""}]},{"body":{"nativeSrc":"3795:16:87","nodeType":"YulBlock","src":"3795:16:87","statements":[{"expression":{"arguments":[{"kind":"number","nativeSrc":"3804:1:87","nodeType":"YulLiteral","src":"3804:1:87","type":"","value":"0"},{"kind":"number","nativeSrc":"3807:1:87","nodeType":"YulLiteral","src":"3807:1:87","type":"","value":"0"}],"functionName":{"name":"revert","nativeSrc":"3797:6:87","nodeType":"YulIdentifier","src":"3797:6:87"},"nativeSrc":"3797:12:87","nodeType":"YulFunctionCall","src":"3797:12:87"},"nativeSrc":"3797:12:87","nodeType":"YulExpressionStatement","src":"3797:12:87"}]},"condition":{"arguments":[{"name":"offset","nativeSrc":"3767:6:87","nodeType":"YulIdentifier","src":"3767:6:87"},{"kind":"number","nativeSrc":"3775:18:87","nodeType":"YulLiteral","src":"3775:18:87","type":"","value":"0xffffffffffffffff"}],"functionName":{"name":"gt","nativeSrc":"3764:2:87","nodeType":"YulIdentifier","src":"3764:2:87"},"nativeSrc":"3764:30:87","nodeType":"YulFunctionCall","src":"3764:30:87"},"nativeSrc":"3761:50:87","nodeType":"YulIf","src":"3761:50:87"},{"nativeSrc":"3820:59:87","nodeType":"YulAssignment","src":"3820:59:87","value":{"arguments":[{"arguments":[{"name":"headStart","nativeSrc":"3851:9:87","nodeType":"YulIdentifier","src":"3851:9:87"},{"name":"offset","nativeSrc":"3862:6:87","nodeType":"YulIdentifier","src":"3862:6:87"}],"functionName":{"name":"add","nativeSrc":"3847:3:87","nodeType":"YulIdentifier","src":"3847:3:87"},"nativeSrc":"3847:22:87","nodeType":"YulFunctionCall","src":"3847:22:87"},{"name":"dataEnd","nativeSrc":"3871:7:87","nodeType":"YulIdentifier","src":"3871:7:87"}],"functionName":{"name":"abi_decode_bytes","nativeSrc":"3830:16:87","nodeType":"YulIdentifier","src":"3830:16:87"},"nativeSrc":"3830:49:87","nodeType":"YulFunctionCall","src":"3830:49:87"},"variableNames":[{"name":"value0","nativeSrc":"3820:6:87","nodeType":"YulIdentifier","src":"3820:6:87"}]}]},"name":"abi_decode_tuple_t_bytes_memory_ptr","nativeSrc":"3565:320:87","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nativeSrc":"3610:9:87","nodeType":"YulTypedName","src":"3610:9:87","type":""},{"name":"dataEnd","nativeSrc":"3621:7:87","nodeType":"YulTypedName","src":"3621:7:87","type":""}],"returnVariables":[{"name":"value0","nativeSrc":"3633:6:87","nodeType":"YulTypedName","src":"3633:6:87","type":""}],"src":"3565:320:87"},{"body":{"nativeSrc":"4047:214:87","nodeType":"YulBlock","src":"4047:214:87","statements":[{"nativeSrc":"4057:26:87","nodeType":"YulAssignment","src":"4057:26:87","value":{"arguments":[{"name":"headStart","nativeSrc":"4069:9:87","nodeType":"YulIdentifier","src":"4069:9:87"},{"kind":"number","nativeSrc":"4080:2:87","nodeType":"YulLiteral","src":"4080:2:87","type":"","value":"96"}],"functionName":{"name":"add","nativeSrc":"4065:3:87","nodeType":"YulIdentifier","src":"4065:3:87"},"nativeSrc":"4065:18:87","nodeType":"YulFunctionCall","src":"4065:18:87"},"variableNames":[{"name":"tail","nativeSrc":"4057:4:87","nodeType":"YulIdentifier","src":"4057:4:87"}]},{"expression":{"arguments":[{"name":"headStart","nativeSrc":"4099:9:87","nodeType":"YulIdentifier","src":"4099:9:87"},{"arguments":[{"name":"value0","nativeSrc":"4114:6:87","nodeType":"YulIdentifier","src":"4114:6:87"},{"arguments":[{"arguments":[{"kind":"number","nativeSrc":"4130:3:87","nodeType":"YulLiteral","src":"4130:3:87","type":"","value":"160"},{"kind":"number","nativeSrc":"4135:1:87","nodeType":"YulLiteral","src":"4135:1:87","type":"","value":"1"}],"functionName":{"name":"shl","nativeSrc":"4126:3:87","nodeType":"YulIdentifier","src":"4126:3:87"},"nativeSrc":"4126:11:87","nodeType":"YulFunctionCall","src":"4126:11:87"},{"kind":"number","nativeSrc":"4139:1:87","nodeType":"YulLiteral","src":"4139:1:87","type":"","value":"1"}],"functionName":{"name":"sub","nativeSrc":"4122:3:87","nodeType":"YulIdentifier","src":"4122:3:87"},"nativeSrc":"4122:19:87","nodeType":"YulFunctionCall","src":"4122:19:87"}],"functionName":{"name":"and","nativeSrc":"4110:3:87","nodeType":"YulIdentifier","src":"4110:3:87"},"nativeSrc":"4110:32:87","nodeType":"YulFunctionCall","src":"4110:32:87"}],"functionName":{"name":"mstore","nativeSrc":"4092:6:87","nodeType":"YulIdentifier","src":"4092:6:87"},"nativeSrc":"4092:51:87","nodeType":"YulFunctionCall","src":"4092:51:87"},"nativeSrc":"4092:51:87","nodeType":"YulExpressionStatement","src":"4092:51:87"},{"expression":{"arguments":[{"arguments":[{"name":"headStart","nativeSrc":"4163:9:87","nodeType":"YulIdentifier","src":"4163:9:87"},{"kind":"number","nativeSrc":"4174:2:87","nodeType":"YulLiteral","src":"4174:2:87","type":"","value":"32"}],"functionName":{"name":"add","nativeSrc":"4159:3:87","nodeType":"YulIdentifier","src":"4159:3:87"},"nativeSrc":"4159:18:87","nodeType":"YulFunctionCall","src":"4159:18:87"},{"name":"value1","nativeSrc":"4179:6:87","nodeType":"YulIdentifier","src":"4179:6:87"}],"functionName":{"name":"mstore","nativeSrc":"4152:6:87","nodeType":"YulIdentifier","src":"4152:6:87"},"nativeSrc":"4152:34:87","nodeType":"YulFunctionCall","src":"4152:34:87"},"nativeSrc":"4152:34:87","nodeType":"YulExpressionStatement","src":"4152:34:87"},{"expression":{"arguments":[{"arguments":[{"name":"headStart","nativeSrc":"4206:9:87","nodeType":"YulIdentifier","src":"4206:9:87"},{"kind":"number","nativeSrc":"4217:2:87","nodeType":"YulLiteral","src":"4217:2:87","type":"","value":"64"}],"functionName":{"name":"add","nativeSrc":"4202:3:87","nodeType":"YulIdentifier","src":"4202:3:87"},"nativeSrc":"4202:18:87","nodeType":"YulFunctionCall","src":"4202:18:87"},{"arguments":[{"name":"value2","nativeSrc":"4226:6:87","nodeType":"YulIdentifier","src":"4226:6:87"},{"arguments":[{"arguments":[{"kind":"number","nativeSrc":"4242:3:87","nodeType":"YulLiteral","src":"4242:3:87","type":"","value":"160"},{"kind":"number","nativeSrc":"4247:1:87","nodeType":"YulLiteral","src":"4247:1:87","type":"","value":"1"}],"functionName":{"name":"shl","nativeSrc":"4238:3:87","nodeType":"YulIdentifier","src":"4238:3:87"},"nativeSrc":"4238:11:87","nodeType":"YulFunctionCall","src":"4238:11:87"},{"kind":"number","nativeSrc":"4251:1:87","nodeType":"YulLiteral","src":"4251:1:87","type":"","value":"1"}],"functionName":{"name":"sub","nativeSrc":"4234:3:87","nodeType":"YulIdentifier","src":"4234:3:87"},"nativeSrc":"4234:19:87","nodeType":"YulFunctionCall","src":"4234:19:87"}],"functionName":{"name":"and","nativeSrc":"4222:3:87","nodeType":"YulIdentifier","src":"4222:3:87"},"nativeSrc":"4222:32:87","nodeType":"YulFunctionCall","src":"4222:32:87"}],"functionName":{"name":"mstore","nativeSrc":"4195:6:87","nodeType":"YulIdentifier","src":"4195:6:87"},"nativeSrc":"4195:60:87","nodeType":"YulFunctionCall","src":"4195:60:87"},"nativeSrc":"4195:60:87","nodeType":"YulExpressionStatement","src":"4195:60:87"}]},"name":"abi_encode_tuple_t_address_t_uint256_t_address__to_t_address_t_uint256_t_address__fromStack_reversed","nativeSrc":"3890:371:87","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nativeSrc":"4000:9:87","nodeType":"YulTypedName","src":"4000:9:87","type":""},{"name":"value2","nativeSrc":"4011:6:87","nodeType":"YulTypedName","src":"4011:6:87","type":""},{"name":"value1","nativeSrc":"4019:6:87","nodeType":"YulTypedName","src":"4019:6:87","type":""},{"name":"value0","nativeSrc":"4027:6:87","nodeType":"YulTypedName","src":"4027:6:87","type":""}],"returnVariables":[{"name":"tail","nativeSrc":"4038:4:87","nodeType":"YulTypedName","src":"4038:4:87","type":""}],"src":"3890:371:87"},{"body":{"nativeSrc":"4347:149:87","nodeType":"YulBlock","src":"4347:149:87","statements":[{"body":{"nativeSrc":"4393:16:87","nodeType":"YulBlock","src":"4393:16:87","statements":[{"expression":{"arguments":[{"kind":"number","nativeSrc":"4402:1:87","nodeType":"YulLiteral","src":"4402:1:87","type":"","value":"0"},{"kind":"number","nativeSrc":"4405:1:87","nodeType":"YulLiteral","src":"4405:1:87","type":"","value":"0"}],"functionName":{"name":"revert","nativeSrc":"4395:6:87","nodeType":"YulIdentifier","src":"4395:6:87"},"nativeSrc":"4395:12:87","nodeType":"YulFunctionCall","src":"4395:12:87"},"nativeSrc":"4395:12:87","nodeType":"YulExpressionStatement","src":"4395:12:87"}]},"condition":{"arguments":[{"arguments":[{"name":"dataEnd","nativeSrc":"4368:7:87","nodeType":"YulIdentifier","src":"4368:7:87"},{"name":"headStart","nativeSrc":"4377:9:87","nodeType":"YulIdentifier","src":"4377:9:87"}],"functionName":{"name":"sub","nativeSrc":"4364:3:87","nodeType":"YulIdentifier","src":"4364:3:87"},"nativeSrc":"4364:23:87","nodeType":"YulFunctionCall","src":"4364:23:87"},{"kind":"number","nativeSrc":"4389:2:87","nodeType":"YulLiteral","src":"4389:2:87","type":"","value":"32"}],"functionName":{"name":"slt","nativeSrc":"4360:3:87","nodeType":"YulIdentifier","src":"4360:3:87"},"nativeSrc":"4360:32:87","nodeType":"YulFunctionCall","src":"4360:32:87"},"nativeSrc":"4357:52:87","nodeType":"YulIf","src":"4357:52:87"},{"nativeSrc":"4418:14:87","nodeType":"YulVariableDeclaration","src":"4418:14:87","value":{"kind":"number","nativeSrc":"4431:1:87","nodeType":"YulLiteral","src":"4431:1:87","type":"","value":"0"},"variables":[{"name":"value","nativeSrc":"4422:5:87","nodeType":"YulTypedName","src":"4422:5:87","type":""}]},{"nativeSrc":"4441:25:87","nodeType":"YulAssignment","src":"4441:25:87","value":{"arguments":[{"name":"headStart","nativeSrc":"4456:9:87","nodeType":"YulIdentifier","src":"4456:9:87"}],"functionName":{"name":"mload","nativeSrc":"4450:5:87","nodeType":"YulIdentifier","src":"4450:5:87"},"nativeSrc":"4450:16:87","nodeType":"YulFunctionCall","src":"4450:16:87"},"variableNames":[{"name":"value","nativeSrc":"4441:5:87","nodeType":"YulIdentifier","src":"4441:5:87"}]},{"nativeSrc":"4475:15:87","nodeType":"YulAssignment","src":"4475:15:87","value":{"name":"value","nativeSrc":"4485:5:87","nodeType":"YulIdentifier","src":"4485:5:87"},"variableNames":[{"name":"value0","nativeSrc":"4475:6:87","nodeType":"YulIdentifier","src":"4475:6:87"}]}]},"name":"abi_decode_tuple_t_uint256_fromMemory","nativeSrc":"4266:230:87","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nativeSrc":"4313:9:87","nodeType":"YulTypedName","src":"4313:9:87","type":""},{"name":"dataEnd","nativeSrc":"4324:7:87","nodeType":"YulTypedName","src":"4324:7:87","type":""}],"returnVariables":[{"name":"value0","nativeSrc":"4336:6:87","nodeType":"YulTypedName","src":"4336:6:87","type":""}],"src":"4266:230:87"},{"body":{"nativeSrc":"4592:407:87","nodeType":"YulBlock","src":"4592:407:87","statements":[{"body":{"nativeSrc":"4636:16:87","nodeType":"YulBlock","src":"4636:16:87","statements":[{"expression":{"arguments":[{"kind":"number","nativeSrc":"4645:1:87","nodeType":"YulLiteral","src":"4645:1:87","type":"","value":"0"},{"kind":"number","nativeSrc":"4648:1:87","nodeType":"YulLiteral","src":"4648:1:87","type":"","value":"0"}],"functionName":{"name":"revert","nativeSrc":"4638:6:87","nodeType":"YulIdentifier","src":"4638:6:87"},"nativeSrc":"4638:12:87","nodeType":"YulFunctionCall","src":"4638:12:87"},"nativeSrc":"4638:12:87","nodeType":"YulExpressionStatement","src":"4638:12:87"}]},"condition":{"arguments":[{"arguments":[{"name":"end","nativeSrc":"4613:3:87","nodeType":"YulIdentifier","src":"4613:3:87"},{"name":"headStart","nativeSrc":"4618:9:87","nodeType":"YulIdentifier","src":"4618:9:87"}],"functionName":{"name":"sub","nativeSrc":"4609:3:87","nodeType":"YulIdentifier","src":"4609:3:87"},"nativeSrc":"4609:19:87","nodeType":"YulFunctionCall","src":"4609:19:87"},{"kind":"number","nativeSrc":"4630:4:87","nodeType":"YulLiteral","src":"4630:4:87","type":"","value":"0x20"}],"functionName":{"name":"slt","nativeSrc":"4605:3:87","nodeType":"YulIdentifier","src":"4605:3:87"},"nativeSrc":"4605:30:87","nodeType":"YulFunctionCall","src":"4605:30:87"},"nativeSrc":"4602:50:87","nodeType":"YulIf","src":"4602:50:87"},{"nativeSrc":"4661:15:87","nodeType":"YulVariableDeclaration","src":"4661:15:87","value":{"kind":"number","nativeSrc":"4675:1:87","nodeType":"YulLiteral","src":"4675:1:87","type":"","value":"0"},"variables":[{"name":"memPtr","nativeSrc":"4665:6:87","nodeType":"YulTypedName","src":"4665:6:87","type":""}]},{"nativeSrc":"4685:19:87","nodeType":"YulAssignment","src":"4685:19:87","value":{"arguments":[{"kind":"number","nativeSrc":"4701:2:87","nodeType":"YulLiteral","src":"4701:2:87","type":"","value":"64"}],"functionName":{"name":"mload","nativeSrc":"4695:5:87","nodeType":"YulIdentifier","src":"4695:5:87"},"nativeSrc":"4695:9:87","nodeType":"YulFunctionCall","src":"4695:9:87"},"variableNames":[{"name":"memPtr","nativeSrc":"4685:6:87","nodeType":"YulIdentifier","src":"4685:6:87"}]},{"nativeSrc":"4713:35:87","nodeType":"YulVariableDeclaration","src":"4713:35:87","value":{"arguments":[{"name":"memPtr","nativeSrc":"4735:6:87","nodeType":"YulIdentifier","src":"4735:6:87"},{"kind":"number","nativeSrc":"4743:4:87","nodeType":"YulLiteral","src":"4743:4:87","type":"","value":"0x20"}],"functionName":{"name":"add","nativeSrc":"4731:3:87","nodeType":"YulIdentifier","src":"4731:3:87"},"nativeSrc":"4731:17:87","nodeType":"YulFunctionCall","src":"4731:17:87"},"variables":[{"name":"newFreePtr","nativeSrc":"4717:10:87","nodeType":"YulTypedName","src":"4717:10:87","type":""}]},{"body":{"nativeSrc":"4823:22:87","nodeType":"YulBlock","src":"4823:22:87","statements":[{"expression":{"arguments":[],"functionName":{"name":"panic_error_0x41","nativeSrc":"4825:16:87","nodeType":"YulIdentifier","src":"4825:16:87"},"nativeSrc":"4825:18:87","nodeType":"YulFunctionCall","src":"4825:18:87"},"nativeSrc":"4825:18:87","nodeType":"YulExpressionStatement","src":"4825:18:87"}]},"condition":{"arguments":[{"arguments":[{"name":"newFreePtr","nativeSrc":"4766:10:87","nodeType":"YulIdentifier","src":"4766:10:87"},{"kind":"number","nativeSrc":"4778:18:87","nodeType":"YulLiteral","src":"4778:18:87","type":"","value":"0xffffffffffffffff"}],"functionName":{"name":"gt","nativeSrc":"4763:2:87","nodeType":"YulIdentifier","src":"4763:2:87"},"nativeSrc":"4763:34:87","nodeType":"YulFunctionCall","src":"4763:34:87"},{"arguments":[{"name":"newFreePtr","nativeSrc":"4802:10:87","nodeType":"YulIdentifier","src":"4802:10:87"},{"name":"memPtr","nativeSrc":"4814:6:87","nodeType":"YulIdentifier","src":"4814:6:87"}],"functionName":{"name":"lt","nativeSrc":"4799:2:87","nodeType":"YulIdentifier","src":"4799:2:87"},"nativeSrc":"4799:22:87","nodeType":"YulFunctionCall","src":"4799:22:87"}],"functionName":{"name":"or","nativeSrc":"4760:2:87","nodeType":"YulIdentifier","src":"4760:2:87"},"nativeSrc":"4760:62:87","nodeType":"YulFunctionCall","src":"4760:62:87"},"nativeSrc":"4757:88:87","nodeType":"YulIf","src":"4757:88:87"},{"expression":{"arguments":[{"kind":"number","nativeSrc":"4861:2:87","nodeType":"YulLiteral","src":"4861:2:87","type":"","value":"64"},{"name":"newFreePtr","nativeSrc":"4865:10:87","nodeType":"YulIdentifier","src":"4865:10:87"}],"functionName":{"name":"mstore","nativeSrc":"4854:6:87","nodeType":"YulIdentifier","src":"4854:6:87"},"nativeSrc":"4854:22:87","nodeType":"YulFunctionCall","src":"4854:22:87"},"nativeSrc":"4854:22:87","nodeType":"YulExpressionStatement","src":"4854:22:87"},{"nativeSrc":"4885:15:87","nodeType":"YulAssignment","src":"4885:15:87","value":{"name":"memPtr","nativeSrc":"4894:6:87","nodeType":"YulIdentifier","src":"4894:6:87"},"variableNames":[{"name":"value","nativeSrc":"4885:5:87","nodeType":"YulIdentifier","src":"4885:5:87"}]},{"nativeSrc":"4909:16:87","nodeType":"YulVariableDeclaration","src":"4909:16:87","value":{"kind":"number","nativeSrc":"4924:1:87","nodeType":"YulLiteral","src":"4924:1:87","type":"","value":"0"},"variables":[{"name":"value_1","nativeSrc":"4913:7:87","nodeType":"YulTypedName","src":"4913:7:87","type":""}]},{"nativeSrc":"4934:27:87","nodeType":"YulAssignment","src":"4934:27:87","value":{"arguments":[{"name":"headStart","nativeSrc":"4951:9:87","nodeType":"YulIdentifier","src":"4951:9:87"}],"functionName":{"name":"mload","nativeSrc":"4945:5:87","nodeType":"YulIdentifier","src":"4945:5:87"},"nativeSrc":"4945:16:87","nodeType":"YulFunctionCall","src":"4945:16:87"},"variableNames":[{"name":"value_1","nativeSrc":"4934:7:87","nodeType":"YulIdentifier","src":"4934:7:87"}]},{"expression":{"arguments":[{"name":"memPtr","nativeSrc":"4977:6:87","nodeType":"YulIdentifier","src":"4977:6:87"},{"name":"value_1","nativeSrc":"4985:7:87","nodeType":"YulIdentifier","src":"4985:7:87"}],"functionName":{"name":"mstore","nativeSrc":"4970:6:87","nodeType":"YulIdentifier","src":"4970:6:87"},"nativeSrc":"4970:23:87","nodeType":"YulFunctionCall","src":"4970:23:87"},"nativeSrc":"4970:23:87","nodeType":"YulExpressionStatement","src":"4970:23:87"}]},"name":"abi_decode_struct_ReserveConfigurationMap_fromMemory","nativeSrc":"4501:498:87","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nativeSrc":"4563:9:87","nodeType":"YulTypedName","src":"4563:9:87","type":""},{"name":"end","nativeSrc":"4574:3:87","nodeType":"YulTypedName","src":"4574:3:87","type":""}],"returnVariables":[{"name":"value","nativeSrc":"4582:5:87","nodeType":"YulTypedName","src":"4582:5:87","type":""}],"src":"4501:498:87"},{"body":{"nativeSrc":"5064:132:87","nodeType":"YulBlock","src":"5064:132:87","statements":[{"nativeSrc":"5074:22:87","nodeType":"YulAssignment","src":"5074:22:87","value":{"arguments":[{"name":"offset","nativeSrc":"5089:6:87","nodeType":"YulIdentifier","src":"5089:6:87"}],"functionName":{"name":"mload","nativeSrc":"5083:5:87","nodeType":"YulIdentifier","src":"5083:5:87"},"nativeSrc":"5083:13:87","nodeType":"YulFunctionCall","src":"5083:13:87"},"variableNames":[{"name":"value","nativeSrc":"5074:5:87","nodeType":"YulIdentifier","src":"5074:5:87"}]},{"body":{"nativeSrc":"5174:16:87","nodeType":"YulBlock","src":"5174:16:87","statements":[{"expression":{"arguments":[{"kind":"number","nativeSrc":"5183:1:87","nodeType":"YulLiteral","src":"5183:1:87","type":"","value":"0"},{"kind":"number","nativeSrc":"5186:1:87","nodeType":"YulLiteral","src":"5186:1:87","type":"","value":"0"}],"functionName":{"name":"revert","nativeSrc":"5176:6:87","nodeType":"YulIdentifier","src":"5176:6:87"},"nativeSrc":"5176:12:87","nodeType":"YulFunctionCall","src":"5176:12:87"},"nativeSrc":"5176:12:87","nodeType":"YulExpressionStatement","src":"5176:12:87"}]},"condition":{"arguments":[{"arguments":[{"name":"value","nativeSrc":"5118:5:87","nodeType":"YulIdentifier","src":"5118:5:87"},{"arguments":[{"name":"value","nativeSrc":"5129:5:87","nodeType":"YulIdentifier","src":"5129:5:87"},{"kind":"number","nativeSrc":"5136:34:87","nodeType":"YulLiteral","src":"5136:34:87","type":"","value":"0xffffffffffffffffffffffffffffffff"}],"functionName":{"name":"and","nativeSrc":"5125:3:87","nodeType":"YulIdentifier","src":"5125:3:87"},"nativeSrc":"5125:46:87","nodeType":"YulFunctionCall","src":"5125:46:87"}],"functionName":{"name":"eq","nativeSrc":"5115:2:87","nodeType":"YulIdentifier","src":"5115:2:87"},"nativeSrc":"5115:57:87","nodeType":"YulFunctionCall","src":"5115:57:87"}],"functionName":{"name":"iszero","nativeSrc":"5108:6:87","nodeType":"YulIdentifier","src":"5108:6:87"},"nativeSrc":"5108:65:87","nodeType":"YulFunctionCall","src":"5108:65:87"},"nativeSrc":"5105:85:87","nodeType":"YulIf","src":"5105:85:87"}]},"name":"abi_decode_uint128_fromMemory","nativeSrc":"5004:192:87","nodeType":"YulFunctionDefinition","parameters":[{"name":"offset","nativeSrc":"5043:6:87","nodeType":"YulTypedName","src":"5043:6:87","type":""}],"returnVariables":[{"name":"value","nativeSrc":"5054:5:87","nodeType":"YulTypedName","src":"5054:5:87","type":""}],"src":"5004:192:87"},{"body":{"nativeSrc":"5260:110:87","nodeType":"YulBlock","src":"5260:110:87","statements":[{"nativeSrc":"5270:22:87","nodeType":"YulAssignment","src":"5270:22:87","value":{"arguments":[{"name":"offset","nativeSrc":"5285:6:87","nodeType":"YulIdentifier","src":"5285:6:87"}],"functionName":{"name":"mload","nativeSrc":"5279:5:87","nodeType":"YulIdentifier","src":"5279:5:87"},"nativeSrc":"5279:13:87","nodeType":"YulFunctionCall","src":"5279:13:87"},"variableNames":[{"name":"value","nativeSrc":"5270:5:87","nodeType":"YulIdentifier","src":"5270:5:87"}]},{"body":{"nativeSrc":"5348:16:87","nodeType":"YulBlock","src":"5348:16:87","statements":[{"expression":{"arguments":[{"kind":"number","nativeSrc":"5357:1:87","nodeType":"YulLiteral","src":"5357:1:87","type":"","value":"0"},{"kind":"number","nativeSrc":"5360:1:87","nodeType":"YulLiteral","src":"5360:1:87","type":"","value":"0"}],"functionName":{"name":"revert","nativeSrc":"5350:6:87","nodeType":"YulIdentifier","src":"5350:6:87"},"nativeSrc":"5350:12:87","nodeType":"YulFunctionCall","src":"5350:12:87"},"nativeSrc":"5350:12:87","nodeType":"YulExpressionStatement","src":"5350:12:87"}]},"condition":{"arguments":[{"arguments":[{"name":"value","nativeSrc":"5314:5:87","nodeType":"YulIdentifier","src":"5314:5:87"},{"arguments":[{"name":"value","nativeSrc":"5325:5:87","nodeType":"YulIdentifier","src":"5325:5:87"},{"kind":"number","nativeSrc":"5332:12:87","nodeType":"YulLiteral","src":"5332:12:87","type":"","value":"0xffffffffff"}],"functionName":{"name":"and","nativeSrc":"5321:3:87","nodeType":"YulIdentifier","src":"5321:3:87"},"nativeSrc":"5321:24:87","nodeType":"YulFunctionCall","src":"5321:24:87"}],"functionName":{"name":"eq","nativeSrc":"5311:2:87","nodeType":"YulIdentifier","src":"5311:2:87"},"nativeSrc":"5311:35:87","nodeType":"YulFunctionCall","src":"5311:35:87"}],"functionName":{"name":"iszero","nativeSrc":"5304:6:87","nodeType":"YulIdentifier","src":"5304:6:87"},"nativeSrc":"5304:43:87","nodeType":"YulFunctionCall","src":"5304:43:87"},"nativeSrc":"5301:63:87","nodeType":"YulIf","src":"5301:63:87"}]},"name":"abi_decode_uint40_fromMemory","nativeSrc":"5201:169:87","nodeType":"YulFunctionDefinition","parameters":[{"name":"offset","nativeSrc":"5239:6:87","nodeType":"YulTypedName","src":"5239:6:87","type":""}],"returnVariables":[{"name":"value","nativeSrc":"5250:5:87","nodeType":"YulTypedName","src":"5250:5:87","type":""}],"src":"5201:169:87"},{"body":{"nativeSrc":"5434:104:87","nodeType":"YulBlock","src":"5434:104:87","statements":[{"nativeSrc":"5444:22:87","nodeType":"YulAssignment","src":"5444:22:87","value":{"arguments":[{"name":"offset","nativeSrc":"5459:6:87","nodeType":"YulIdentifier","src":"5459:6:87"}],"functionName":{"name":"mload","nativeSrc":"5453:5:87","nodeType":"YulIdentifier","src":"5453:5:87"},"nativeSrc":"5453:13:87","nodeType":"YulFunctionCall","src":"5453:13:87"},"variableNames":[{"name":"value","nativeSrc":"5444:5:87","nodeType":"YulIdentifier","src":"5444:5:87"}]},{"body":{"nativeSrc":"5516:16:87","nodeType":"YulBlock","src":"5516:16:87","statements":[{"expression":{"arguments":[{"kind":"number","nativeSrc":"5525:1:87","nodeType":"YulLiteral","src":"5525:1:87","type":"","value":"0"},{"kind":"number","nativeSrc":"5528:1:87","nodeType":"YulLiteral","src":"5528:1:87","type":"","value":"0"}],"functionName":{"name":"revert","nativeSrc":"5518:6:87","nodeType":"YulIdentifier","src":"5518:6:87"},"nativeSrc":"5518:12:87","nodeType":"YulFunctionCall","src":"5518:12:87"},"nativeSrc":"5518:12:87","nodeType":"YulExpressionStatement","src":"5518:12:87"}]},"condition":{"arguments":[{"arguments":[{"name":"value","nativeSrc":"5488:5:87","nodeType":"YulIdentifier","src":"5488:5:87"},{"arguments":[{"name":"value","nativeSrc":"5499:5:87","nodeType":"YulIdentifier","src":"5499:5:87"},{"kind":"number","nativeSrc":"5506:6:87","nodeType":"YulLiteral","src":"5506:6:87","type":"","value":"0xffff"}],"functionName":{"name":"and","nativeSrc":"5495:3:87","nodeType":"YulIdentifier","src":"5495:3:87"},"nativeSrc":"5495:18:87","nodeType":"YulFunctionCall","src":"5495:18:87"}],"functionName":{"name":"eq","nativeSrc":"5485:2:87","nodeType":"YulIdentifier","src":"5485:2:87"},"nativeSrc":"5485:29:87","nodeType":"YulFunctionCall","src":"5485:29:87"}],"functionName":{"name":"iszero","nativeSrc":"5478:6:87","nodeType":"YulIdentifier","src":"5478:6:87"},"nativeSrc":"5478:37:87","nodeType":"YulFunctionCall","src":"5478:37:87"},"nativeSrc":"5475:57:87","nodeType":"YulIf","src":"5475:57:87"}]},"name":"abi_decode_uint16_fromMemory","nativeSrc":"5375:163:87","nodeType":"YulFunctionDefinition","parameters":[{"name":"offset","nativeSrc":"5413:6:87","nodeType":"YulTypedName","src":"5413:6:87","type":""}],"returnVariables":[{"name":"value","nativeSrc":"5424:5:87","nodeType":"YulTypedName","src":"5424:5:87","type":""}],"src":"5375:163:87"},{"body":{"nativeSrc":"5603:78:87","nodeType":"YulBlock","src":"5603:78:87","statements":[{"nativeSrc":"5613:22:87","nodeType":"YulAssignment","src":"5613:22:87","value":{"arguments":[{"name":"offset","nativeSrc":"5628:6:87","nodeType":"YulIdentifier","src":"5628:6:87"}],"functionName":{"name":"mload","nativeSrc":"5622:5:87","nodeType":"YulIdentifier","src":"5622:5:87"},"nativeSrc":"5622:13:87","nodeType":"YulFunctionCall","src":"5622:13:87"},"variableNames":[{"name":"value","nativeSrc":"5613:5:87","nodeType":"YulIdentifier","src":"5613:5:87"}]},{"expression":{"arguments":[{"name":"value","nativeSrc":"5669:5:87","nodeType":"YulIdentifier","src":"5669:5:87"}],"functionName":{"name":"validator_revert_address","nativeSrc":"5644:24:87","nodeType":"YulIdentifier","src":"5644:24:87"},"nativeSrc":"5644:31:87","nodeType":"YulFunctionCall","src":"5644:31:87"},"nativeSrc":"5644:31:87","nodeType":"YulExpressionStatement","src":"5644:31:87"}]},"name":"abi_decode_address_fromMemory","nativeSrc":"5543:138:87","nodeType":"YulFunctionDefinition","parameters":[{"name":"offset","nativeSrc":"5582:6:87","nodeType":"YulTypedName","src":"5582:6:87","type":""}],"returnVariables":[{"name":"value","nativeSrc":"5593:5:87","nodeType":"YulTypedName","src":"5593:5:87","type":""}],"src":"5543:138:87"},{"body":{"nativeSrc":"5797:1433:87","nodeType":"YulBlock","src":"5797:1433:87","statements":[{"nativeSrc":"5807:43:87","nodeType":"YulVariableDeclaration","src":"5807:43:87","value":{"arguments":[{"arguments":[{"name":"dataEnd","nativeSrc":"5825:7:87","nodeType":"YulIdentifier","src":"5825:7:87"},{"name":"headStart","nativeSrc":"5834:9:87","nodeType":"YulIdentifier","src":"5834:9:87"}],"functionName":{"name":"sub","nativeSrc":"5821:3:87","nodeType":"YulIdentifier","src":"5821:3:87"},"nativeSrc":"5821:23:87","nodeType":"YulFunctionCall","src":"5821:23:87"},{"kind":"number","nativeSrc":"5846:3:87","nodeType":"YulLiteral","src":"5846:3:87","type":"","value":"480"}],"functionName":{"name":"slt","nativeSrc":"5817:3:87","nodeType":"YulIdentifier","src":"5817:3:87"},"nativeSrc":"5817:33:87","nodeType":"YulFunctionCall","src":"5817:33:87"},"variables":[{"name":"_1","nativeSrc":"5811:2:87","nodeType":"YulTypedName","src":"5811:2:87","type":""}]},{"body":{"nativeSrc":"5865:16:87","nodeType":"YulBlock","src":"5865:16:87","statements":[{"expression":{"arguments":[{"kind":"number","nativeSrc":"5874:1:87","nodeType":"YulLiteral","src":"5874:1:87","type":"","value":"0"},{"kind":"number","nativeSrc":"5877:1:87","nodeType":"YulLiteral","src":"5877:1:87","type":"","value":"0"}],"functionName":{"name":"revert","nativeSrc":"5867:6:87","nodeType":"YulIdentifier","src":"5867:6:87"},"nativeSrc":"5867:12:87","nodeType":"YulFunctionCall","src":"5867:12:87"},"nativeSrc":"5867:12:87","nodeType":"YulExpressionStatement","src":"5867:12:87"}]},"condition":{"name":"_1","nativeSrc":"5862:2:87","nodeType":"YulIdentifier","src":"5862:2:87"},"nativeSrc":"5859:22:87","nodeType":"YulIf","src":"5859:22:87"},{"nativeSrc":"5890:7:87","nodeType":"YulAssignment","src":"5890:7:87","value":{"kind":"number","nativeSrc":"5896:1:87","nodeType":"YulLiteral","src":"5896:1:87","type":"","value":"0"},"variableNames":[{"name":"_1","nativeSrc":"5890:2:87","nodeType":"YulIdentifier","src":"5890:2:87"}]},{"nativeSrc":"5906:30:87","nodeType":"YulVariableDeclaration","src":"5906:30:87","value":{"arguments":[],"functionName":{"name":"allocate_memory","nativeSrc":"5919:15:87","nodeType":"YulIdentifier","src":"5919:15:87"},"nativeSrc":"5919:17:87","nodeType":"YulFunctionCall","src":"5919:17:87"},"variables":[{"name":"value","nativeSrc":"5910:5:87","nodeType":"YulTypedName","src":"5910:5:87","type":""}]},{"expression":{"arguments":[{"name":"value","nativeSrc":"5952:5:87","nodeType":"YulIdentifier","src":"5952:5:87"},{"arguments":[{"name":"headStart","nativeSrc":"6012:9:87","nodeType":"YulIdentifier","src":"6012:9:87"},{"name":"dataEnd","nativeSrc":"6023:7:87","nodeType":"YulIdentifier","src":"6023:7:87"}],"functionName":{"name":"abi_decode_struct_ReserveConfigurationMap_fromMemory","nativeSrc":"5959:52:87","nodeType":"YulIdentifier","src":"5959:52:87"},"nativeSrc":"5959:72:87","nodeType":"YulFunctionCall","src":"5959:72:87"}],"functionName":{"name":"mstore","nativeSrc":"5945:6:87","nodeType":"YulIdentifier","src":"5945:6:87"},"nativeSrc":"5945:87:87","nodeType":"YulFunctionCall","src":"5945:87:87"},"nativeSrc":"5945:87:87","nodeType":"YulExpressionStatement","src":"5945:87:87"},{"expression":{"arguments":[{"arguments":[{"name":"value","nativeSrc":"6052:5:87","nodeType":"YulIdentifier","src":"6052:5:87"},{"kind":"number","nativeSrc":"6059:2:87","nodeType":"YulLiteral","src":"6059:2:87","type":"","value":"32"}],"functionName":{"name":"add","nativeSrc":"6048:3:87","nodeType":"YulIdentifier","src":"6048:3:87"},"nativeSrc":"6048:14:87","nodeType":"YulFunctionCall","src":"6048:14:87"},{"arguments":[{"arguments":[{"name":"headStart","nativeSrc":"6098:9:87","nodeType":"YulIdentifier","src":"6098:9:87"},{"kind":"number","nativeSrc":"6109:2:87","nodeType":"YulLiteral","src":"6109:2:87","type":"","value":"32"}],"functionName":{"name":"add","nativeSrc":"6094:3:87","nodeType":"YulIdentifier","src":"6094:3:87"},"nativeSrc":"6094:18:87","nodeType":"YulFunctionCall","src":"6094:18:87"}],"functionName":{"name":"abi_decode_uint128_fromMemory","nativeSrc":"6064:29:87","nodeType":"YulIdentifier","src":"6064:29:87"},"nativeSrc":"6064:49:87","nodeType":"YulFunctionCall","src":"6064:49:87"}],"functionName":{"name":"mstore","nativeSrc":"6041:6:87","nodeType":"YulIdentifier","src":"6041:6:87"},"nativeSrc":"6041:73:87","nodeType":"YulFunctionCall","src":"6041:73:87"},"nativeSrc":"6041:73:87","nodeType":"YulExpressionStatement","src":"6041:73:87"},{"expression":{"arguments":[{"arguments":[{"name":"value","nativeSrc":"6134:5:87","nodeType":"YulIdentifier","src":"6134:5:87"},{"kind":"number","nativeSrc":"6141:2:87","nodeType":"YulLiteral","src":"6141:2:87","type":"","value":"64"}],"functionName":{"name":"add","nativeSrc":"6130:3:87","nodeType":"YulIdentifier","src":"6130:3:87"},"nativeSrc":"6130:14:87","nodeType":"YulFunctionCall","src":"6130:14:87"},{"arguments":[{"arguments":[{"name":"headStart","nativeSrc":"6180:9:87","nodeType":"YulIdentifier","src":"6180:9:87"},{"kind":"number","nativeSrc":"6191:2:87","nodeType":"YulLiteral","src":"6191:2:87","type":"","value":"64"}],"functionName":{"name":"add","nativeSrc":"6176:3:87","nodeType":"YulIdentifier","src":"6176:3:87"},"nativeSrc":"6176:18:87","nodeType":"YulFunctionCall","src":"6176:18:87"}],"functionName":{"name":"abi_decode_uint128_fromMemory","nativeSrc":"6146:29:87","nodeType":"YulIdentifier","src":"6146:29:87"},"nativeSrc":"6146:49:87","nodeType":"YulFunctionCall","src":"6146:49:87"}],"functionName":{"name":"mstore","nativeSrc":"6123:6:87","nodeType":"YulIdentifier","src":"6123:6:87"},"nativeSrc":"6123:73:87","nodeType":"YulFunctionCall","src":"6123:73:87"},"nativeSrc":"6123:73:87","nodeType":"YulExpressionStatement","src":"6123:73:87"},{"expression":{"arguments":[{"arguments":[{"name":"value","nativeSrc":"6216:5:87","nodeType":"YulIdentifier","src":"6216:5:87"},{"kind":"number","nativeSrc":"6223:2:87","nodeType":"YulLiteral","src":"6223:2:87","type":"","value":"96"}],"functionName":{"name":"add","nativeSrc":"6212:3:87","nodeType":"YulIdentifier","src":"6212:3:87"},"nativeSrc":"6212:14:87","nodeType":"YulFunctionCall","src":"6212:14:87"},{"arguments":[{"arguments":[{"name":"headStart","nativeSrc":"6262:9:87","nodeType":"YulIdentifier","src":"6262:9:87"},{"kind":"number","nativeSrc":"6273:2:87","nodeType":"YulLiteral","src":"6273:2:87","type":"","value":"96"}],"functionName":{"name":"add","nativeSrc":"6258:3:87","nodeType":"YulIdentifier","src":"6258:3:87"},"nativeSrc":"6258:18:87","nodeType":"YulFunctionCall","src":"6258:18:87"}],"functionName":{"name":"abi_decode_uint128_fromMemory","nativeSrc":"6228:29:87","nodeType":"YulIdentifier","src":"6228:29:87"},"nativeSrc":"6228:49:87","nodeType":"YulFunctionCall","src":"6228:49:87"}],"functionName":{"name":"mstore","nativeSrc":"6205:6:87","nodeType":"YulIdentifier","src":"6205:6:87"},"nativeSrc":"6205:73:87","nodeType":"YulFunctionCall","src":"6205:73:87"},"nativeSrc":"6205:73:87","nodeType":"YulExpressionStatement","src":"6205:73:87"},{"expression":{"arguments":[{"arguments":[{"name":"value","nativeSrc":"6298:5:87","nodeType":"YulIdentifier","src":"6298:5:87"},{"kind":"number","nativeSrc":"6305:3:87","nodeType":"YulLiteral","src":"6305:3:87","type":"","value":"128"}],"functionName":{"name":"add","nativeSrc":"6294:3:87","nodeType":"YulIdentifier","src":"6294:3:87"},"nativeSrc":"6294:15:87","nodeType":"YulFunctionCall","src":"6294:15:87"},{"arguments":[{"arguments":[{"name":"headStart","nativeSrc":"6345:9:87","nodeType":"YulIdentifier","src":"6345:9:87"},{"kind":"number","nativeSrc":"6356:3:87","nodeType":"YulLiteral","src":"6356:3:87","type":"","value":"128"}],"functionName":{"name":"add","nativeSrc":"6341:3:87","nodeType":"YulIdentifier","src":"6341:3:87"},"nativeSrc":"6341:19:87","nodeType":"YulFunctionCall","src":"6341:19:87"}],"functionName":{"name":"abi_decode_uint128_fromMemory","nativeSrc":"6311:29:87","nodeType":"YulIdentifier","src":"6311:29:87"},"nativeSrc":"6311:50:87","nodeType":"YulFunctionCall","src":"6311:50:87"}],"functionName":{"name":"mstore","nativeSrc":"6287:6:87","nodeType":"YulIdentifier","src":"6287:6:87"},"nativeSrc":"6287:75:87","nodeType":"YulFunctionCall","src":"6287:75:87"},"nativeSrc":"6287:75:87","nodeType":"YulExpressionStatement","src":"6287:75:87"},{"expression":{"arguments":[{"arguments":[{"name":"value","nativeSrc":"6382:5:87","nodeType":"YulIdentifier","src":"6382:5:87"},{"kind":"number","nativeSrc":"6389:3:87","nodeType":"YulLiteral","src":"6389:3:87","type":"","value":"160"}],"functionName":{"name":"add","nativeSrc":"6378:3:87","nodeType":"YulIdentifier","src":"6378:3:87"},"nativeSrc":"6378:15:87","nodeType":"YulFunctionCall","src":"6378:15:87"},{"arguments":[{"arguments":[{"name":"headStart","nativeSrc":"6429:9:87","nodeType":"YulIdentifier","src":"6429:9:87"},{"kind":"number","nativeSrc":"6440:3:87","nodeType":"YulLiteral","src":"6440:3:87","type":"","value":"160"}],"functionName":{"name":"add","nativeSrc":"6425:3:87","nodeType":"YulIdentifier","src":"6425:3:87"},"nativeSrc":"6425:19:87","nodeType":"YulFunctionCall","src":"6425:19:87"}],"functionName":{"name":"abi_decode_uint128_fromMemory","nativeSrc":"6395:29:87","nodeType":"YulIdentifier","src":"6395:29:87"},"nativeSrc":"6395:50:87","nodeType":"YulFunctionCall","src":"6395:50:87"}],"functionName":{"name":"mstore","nativeSrc":"6371:6:87","nodeType":"YulIdentifier","src":"6371:6:87"},"nativeSrc":"6371:75:87","nodeType":"YulFunctionCall","src":"6371:75:87"},"nativeSrc":"6371:75:87","nodeType":"YulExpressionStatement","src":"6371:75:87"},{"expression":{"arguments":[{"arguments":[{"name":"value","nativeSrc":"6466:5:87","nodeType":"YulIdentifier","src":"6466:5:87"},{"kind":"number","nativeSrc":"6473:3:87","nodeType":"YulLiteral","src":"6473:3:87","type":"","value":"192"}],"functionName":{"name":"add","nativeSrc":"6462:3:87","nodeType":"YulIdentifier","src":"6462:3:87"},"nativeSrc":"6462:15:87","nodeType":"YulFunctionCall","src":"6462:15:87"},{"arguments":[{"arguments":[{"name":"headStart","nativeSrc":"6512:9:87","nodeType":"YulIdentifier","src":"6512:9:87"},{"kind":"number","nativeSrc":"6523:3:87","nodeType":"YulLiteral","src":"6523:3:87","type":"","value":"192"}],"functionName":{"name":"add","nativeSrc":"6508:3:87","nodeType":"YulIdentifier","src":"6508:3:87"},"nativeSrc":"6508:19:87","nodeType":"YulFunctionCall","src":"6508:19:87"}],"functionName":{"name":"abi_decode_uint40_fromMemory","nativeSrc":"6479:28:87","nodeType":"YulIdentifier","src":"6479:28:87"},"nativeSrc":"6479:49:87","nodeType":"YulFunctionCall","src":"6479:49:87"}],"functionName":{"name":"mstore","nativeSrc":"6455:6:87","nodeType":"YulIdentifier","src":"6455:6:87"},"nativeSrc":"6455:74:87","nodeType":"YulFunctionCall","src":"6455:74:87"},"nativeSrc":"6455:74:87","nodeType":"YulExpressionStatement","src":"6455:74:87"},{"expression":{"arguments":[{"arguments":[{"name":"value","nativeSrc":"6549:5:87","nodeType":"YulIdentifier","src":"6549:5:87"},{"kind":"number","nativeSrc":"6556:3:87","nodeType":"YulLiteral","src":"6556:3:87","type":"","value":"224"}],"functionName":{"name":"add","nativeSrc":"6545:3:87","nodeType":"YulIdentifier","src":"6545:3:87"},"nativeSrc":"6545:15:87","nodeType":"YulFunctionCall","src":"6545:15:87"},{"arguments":[{"arguments":[{"name":"headStart","nativeSrc":"6595:9:87","nodeType":"YulIdentifier","src":"6595:9:87"},{"kind":"number","nativeSrc":"6606:3:87","nodeType":"YulLiteral","src":"6606:3:87","type":"","value":"224"}],"functionName":{"name":"add","nativeSrc":"6591:3:87","nodeType":"YulIdentifier","src":"6591:3:87"},"nativeSrc":"6591:19:87","nodeType":"YulFunctionCall","src":"6591:19:87"}],"functionName":{"name":"abi_decode_uint16_fromMemory","nativeSrc":"6562:28:87","nodeType":"YulIdentifier","src":"6562:28:87"},"nativeSrc":"6562:49:87","nodeType":"YulFunctionCall","src":"6562:49:87"}],"functionName":{"name":"mstore","nativeSrc":"6538:6:87","nodeType":"YulIdentifier","src":"6538:6:87"},"nativeSrc":"6538:74:87","nodeType":"YulFunctionCall","src":"6538:74:87"},"nativeSrc":"6538:74:87","nodeType":"YulExpressionStatement","src":"6538:74:87"},{"expression":{"arguments":[{"arguments":[{"name":"value","nativeSrc":"6632:5:87","nodeType":"YulIdentifier","src":"6632:5:87"},{"kind":"number","nativeSrc":"6639:3:87","nodeType":"YulLiteral","src":"6639:3:87","type":"","value":"256"}],"functionName":{"name":"add","nativeSrc":"6628:3:87","nodeType":"YulIdentifier","src":"6628:3:87"},"nativeSrc":"6628:15:87","nodeType":"YulFunctionCall","src":"6628:15:87"},{"arguments":[{"arguments":[{"name":"headStart","nativeSrc":"6679:9:87","nodeType":"YulIdentifier","src":"6679:9:87"},{"kind":"number","nativeSrc":"6690:3:87","nodeType":"YulLiteral","src":"6690:3:87","type":"","value":"256"}],"functionName":{"name":"add","nativeSrc":"6675:3:87","nodeType":"YulIdentifier","src":"6675:3:87"},"nativeSrc":"6675:19:87","nodeType":"YulFunctionCall","src":"6675:19:87"}],"functionName":{"name":"abi_decode_address_fromMemory","nativeSrc":"6645:29:87","nodeType":"YulIdentifier","src":"6645:29:87"},"nativeSrc":"6645:50:87","nodeType":"YulFunctionCall","src":"6645:50:87"}],"functionName":{"name":"mstore","nativeSrc":"6621:6:87","nodeType":"YulIdentifier","src":"6621:6:87"},"nativeSrc":"6621:75:87","nodeType":"YulFunctionCall","src":"6621:75:87"},"nativeSrc":"6621:75:87","nodeType":"YulExpressionStatement","src":"6621:75:87"},{"expression":{"arguments":[{"arguments":[{"name":"value","nativeSrc":"6716:5:87","nodeType":"YulIdentifier","src":"6716:5:87"},{"kind":"number","nativeSrc":"6723:3:87","nodeType":"YulLiteral","src":"6723:3:87","type":"","value":"288"}],"functionName":{"name":"add","nativeSrc":"6712:3:87","nodeType":"YulIdentifier","src":"6712:3:87"},"nativeSrc":"6712:15:87","nodeType":"YulFunctionCall","src":"6712:15:87"},{"arguments":[{"arguments":[{"name":"headStart","nativeSrc":"6763:9:87","nodeType":"YulIdentifier","src":"6763:9:87"},{"kind":"number","nativeSrc":"6774:3:87","nodeType":"YulLiteral","src":"6774:3:87","type":"","value":"288"}],"functionName":{"name":"add","nativeSrc":"6759:3:87","nodeType":"YulIdentifier","src":"6759:3:87"},"nativeSrc":"6759:19:87","nodeType":"YulFunctionCall","src":"6759:19:87"}],"functionName":{"name":"abi_decode_address_fromMemory","nativeSrc":"6729:29:87","nodeType":"YulIdentifier","src":"6729:29:87"},"nativeSrc":"6729:50:87","nodeType":"YulFunctionCall","src":"6729:50:87"}],"functionName":{"name":"mstore","nativeSrc":"6705:6:87","nodeType":"YulIdentifier","src":"6705:6:87"},"nativeSrc":"6705:75:87","nodeType":"YulFunctionCall","src":"6705:75:87"},"nativeSrc":"6705:75:87","nodeType":"YulExpressionStatement","src":"6705:75:87"},{"expression":{"arguments":[{"arguments":[{"name":"value","nativeSrc":"6800:5:87","nodeType":"YulIdentifier","src":"6800:5:87"},{"kind":"number","nativeSrc":"6807:3:87","nodeType":"YulLiteral","src":"6807:3:87","type":"","value":"320"}],"functionName":{"name":"add","nativeSrc":"6796:3:87","nodeType":"YulIdentifier","src":"6796:3:87"},"nativeSrc":"6796:15:87","nodeType":"YulFunctionCall","src":"6796:15:87"},{"arguments":[{"arguments":[{"name":"headStart","nativeSrc":"6847:9:87","nodeType":"YulIdentifier","src":"6847:9:87"},{"kind":"number","nativeSrc":"6858:3:87","nodeType":"YulLiteral","src":"6858:3:87","type":"","value":"320"}],"functionName":{"name":"add","nativeSrc":"6843:3:87","nodeType":"YulIdentifier","src":"6843:3:87"},"nativeSrc":"6843:19:87","nodeType":"YulFunctionCall","src":"6843:19:87"}],"functionName":{"name":"abi_decode_address_fromMemory","nativeSrc":"6813:29:87","nodeType":"YulIdentifier","src":"6813:29:87"},"nativeSrc":"6813:50:87","nodeType":"YulFunctionCall","src":"6813:50:87"}],"functionName":{"name":"mstore","nativeSrc":"6789:6:87","nodeType":"YulIdentifier","src":"6789:6:87"},"nativeSrc":"6789:75:87","nodeType":"YulFunctionCall","src":"6789:75:87"},"nativeSrc":"6789:75:87","nodeType":"YulExpressionStatement","src":"6789:75:87"},{"expression":{"arguments":[{"arguments":[{"name":"value","nativeSrc":"6884:5:87","nodeType":"YulIdentifier","src":"6884:5:87"},{"kind":"number","nativeSrc":"6891:3:87","nodeType":"YulLiteral","src":"6891:3:87","type":"","value":"352"}],"functionName":{"name":"add","nativeSrc":"6880:3:87","nodeType":"YulIdentifier","src":"6880:3:87"},"nativeSrc":"6880:15:87","nodeType":"YulFunctionCall","src":"6880:15:87"},{"arguments":[{"arguments":[{"name":"headStart","nativeSrc":"6931:9:87","nodeType":"YulIdentifier","src":"6931:9:87"},{"kind":"number","nativeSrc":"6942:3:87","nodeType":"YulLiteral","src":"6942:3:87","type":"","value":"352"}],"functionName":{"name":"add","nativeSrc":"6927:3:87","nodeType":"YulIdentifier","src":"6927:3:87"},"nativeSrc":"6927:19:87","nodeType":"YulFunctionCall","src":"6927:19:87"}],"functionName":{"name":"abi_decode_address_fromMemory","nativeSrc":"6897:29:87","nodeType":"YulIdentifier","src":"6897:29:87"},"nativeSrc":"6897:50:87","nodeType":"YulFunctionCall","src":"6897:50:87"}],"functionName":{"name":"mstore","nativeSrc":"6873:6:87","nodeType":"YulIdentifier","src":"6873:6:87"},"nativeSrc":"6873:75:87","nodeType":"YulFunctionCall","src":"6873:75:87"},"nativeSrc":"6873:75:87","nodeType":"YulExpressionStatement","src":"6873:75:87"},{"expression":{"arguments":[{"arguments":[{"name":"value","nativeSrc":"6968:5:87","nodeType":"YulIdentifier","src":"6968:5:87"},{"kind":"number","nativeSrc":"6975:3:87","nodeType":"YulLiteral","src":"6975:3:87","type":"","value":"384"}],"functionName":{"name":"add","nativeSrc":"6964:3:87","nodeType":"YulIdentifier","src":"6964:3:87"},"nativeSrc":"6964:15:87","nodeType":"YulFunctionCall","src":"6964:15:87"},{"arguments":[{"arguments":[{"name":"headStart","nativeSrc":"7015:9:87","nodeType":"YulIdentifier","src":"7015:9:87"},{"kind":"number","nativeSrc":"7026:3:87","nodeType":"YulLiteral","src":"7026:3:87","type":"","value":"384"}],"functionName":{"name":"add","nativeSrc":"7011:3:87","nodeType":"YulIdentifier","src":"7011:3:87"},"nativeSrc":"7011:19:87","nodeType":"YulFunctionCall","src":"7011:19:87"}],"functionName":{"name":"abi_decode_uint128_fromMemory","nativeSrc":"6981:29:87","nodeType":"YulIdentifier","src":"6981:29:87"},"nativeSrc":"6981:50:87","nodeType":"YulFunctionCall","src":"6981:50:87"}],"functionName":{"name":"mstore","nativeSrc":"6957:6:87","nodeType":"YulIdentifier","src":"6957:6:87"},"nativeSrc":"6957:75:87","nodeType":"YulFunctionCall","src":"6957:75:87"},"nativeSrc":"6957:75:87","nodeType":"YulExpressionStatement","src":"6957:75:87"},{"expression":{"arguments":[{"arguments":[{"name":"value","nativeSrc":"7052:5:87","nodeType":"YulIdentifier","src":"7052:5:87"},{"kind":"number","nativeSrc":"7059:3:87","nodeType":"YulLiteral","src":"7059:3:87","type":"","value":"416"}],"functionName":{"name":"add","nativeSrc":"7048:3:87","nodeType":"YulIdentifier","src":"7048:3:87"},"nativeSrc":"7048:15:87","nodeType":"YulFunctionCall","src":"7048:15:87"},{"arguments":[{"arguments":[{"name":"headStart","nativeSrc":"7099:9:87","nodeType":"YulIdentifier","src":"7099:9:87"},{"kind":"number","nativeSrc":"7110:3:87","nodeType":"YulLiteral","src":"7110:3:87","type":"","value":"416"}],"functionName":{"name":"add","nativeSrc":"7095:3:87","nodeType":"YulIdentifier","src":"7095:3:87"},"nativeSrc":"7095:19:87","nodeType":"YulFunctionCall","src":"7095:19:87"}],"functionName":{"name":"abi_decode_uint128_fromMemory","nativeSrc":"7065:29:87","nodeType":"YulIdentifier","src":"7065:29:87"},"nativeSrc":"7065:50:87","nodeType":"YulFunctionCall","src":"7065:50:87"}],"functionName":{"name":"mstore","nativeSrc":"7041:6:87","nodeType":"YulIdentifier","src":"7041:6:87"},"nativeSrc":"7041:75:87","nodeType":"YulFunctionCall","src":"7041:75:87"},"nativeSrc":"7041:75:87","nodeType":"YulExpressionStatement","src":"7041:75:87"},{"expression":{"arguments":[{"arguments":[{"name":"value","nativeSrc":"7136:5:87","nodeType":"YulIdentifier","src":"7136:5:87"},{"kind":"number","nativeSrc":"7143:3:87","nodeType":"YulLiteral","src":"7143:3:87","type":"","value":"448"}],"functionName":{"name":"add","nativeSrc":"7132:3:87","nodeType":"YulIdentifier","src":"7132:3:87"},"nativeSrc":"7132:15:87","nodeType":"YulFunctionCall","src":"7132:15:87"},{"arguments":[{"arguments":[{"name":"headStart","nativeSrc":"7183:9:87","nodeType":"YulIdentifier","src":"7183:9:87"},{"kind":"number","nativeSrc":"7194:3:87","nodeType":"YulLiteral","src":"7194:3:87","type":"","value":"448"}],"functionName":{"name":"add","nativeSrc":"7179:3:87","nodeType":"YulIdentifier","src":"7179:3:87"},"nativeSrc":"7179:19:87","nodeType":"YulFunctionCall","src":"7179:19:87"}],"functionName":{"name":"abi_decode_uint128_fromMemory","nativeSrc":"7149:29:87","nodeType":"YulIdentifier","src":"7149:29:87"},"nativeSrc":"7149:50:87","nodeType":"YulFunctionCall","src":"7149:50:87"}],"functionName":{"name":"mstore","nativeSrc":"7125:6:87","nodeType":"YulIdentifier","src":"7125:6:87"},"nativeSrc":"7125:75:87","nodeType":"YulFunctionCall","src":"7125:75:87"},"nativeSrc":"7125:75:87","nodeType":"YulExpressionStatement","src":"7125:75:87"},{"nativeSrc":"7209:15:87","nodeType":"YulAssignment","src":"7209:15:87","value":{"name":"value","nativeSrc":"7219:5:87","nodeType":"YulIdentifier","src":"7219:5:87"},"variableNames":[{"name":"value0","nativeSrc":"7209:6:87","nodeType":"YulIdentifier","src":"7209:6:87"}]}]},"name":"abi_decode_tuple_t_struct$_ReserveData_$17774_memory_ptr_fromMemory","nativeSrc":"5686:1544:87","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nativeSrc":"5763:9:87","nodeType":"YulTypedName","src":"5763:9:87","type":""},{"name":"dataEnd","nativeSrc":"5774:7:87","nodeType":"YulTypedName","src":"5774:7:87","type":""}],"returnVariables":[{"name":"value0","nativeSrc":"5786:6:87","nodeType":"YulTypedName","src":"5786:6:87","type":""}],"src":"5686:1544:87"},{"body":{"nativeSrc":"7364:145:87","nodeType":"YulBlock","src":"7364:145:87","statements":[{"nativeSrc":"7374:26:87","nodeType":"YulAssignment","src":"7374:26:87","value":{"arguments":[{"name":"headStart","nativeSrc":"7386:9:87","nodeType":"YulIdentifier","src":"7386:9:87"},{"kind":"number","nativeSrc":"7397:2:87","nodeType":"YulLiteral","src":"7397:2:87","type":"","value":"64"}],"functionName":{"name":"add","nativeSrc":"7382:3:87","nodeType":"YulIdentifier","src":"7382:3:87"},"nativeSrc":"7382:18:87","nodeType":"YulFunctionCall","src":"7382:18:87"},"variableNames":[{"name":"tail","nativeSrc":"7374:4:87","nodeType":"YulIdentifier","src":"7374:4:87"}]},{"expression":{"arguments":[{"name":"headStart","nativeSrc":"7416:9:87","nodeType":"YulIdentifier","src":"7416:9:87"},{"arguments":[{"name":"value0","nativeSrc":"7431:6:87","nodeType":"YulIdentifier","src":"7431:6:87"},{"arguments":[{"arguments":[{"kind":"number","nativeSrc":"7447:3:87","nodeType":"YulLiteral","src":"7447:3:87","type":"","value":"160"},{"kind":"number","nativeSrc":"7452:1:87","nodeType":"YulLiteral","src":"7452:1:87","type":"","value":"1"}],"functionName":{"name":"shl","nativeSrc":"7443:3:87","nodeType":"YulIdentifier","src":"7443:3:87"},"nativeSrc":"7443:11:87","nodeType":"YulFunctionCall","src":"7443:11:87"},{"kind":"number","nativeSrc":"7456:1:87","nodeType":"YulLiteral","src":"7456:1:87","type":"","value":"1"}],"functionName":{"name":"sub","nativeSrc":"7439:3:87","nodeType":"YulIdentifier","src":"7439:3:87"},"nativeSrc":"7439:19:87","nodeType":"YulFunctionCall","src":"7439:19:87"}],"functionName":{"name":"and","nativeSrc":"7427:3:87","nodeType":"YulIdentifier","src":"7427:3:87"},"nativeSrc":"7427:32:87","nodeType":"YulFunctionCall","src":"7427:32:87"}],"functionName":{"name":"mstore","nativeSrc":"7409:6:87","nodeType":"YulIdentifier","src":"7409:6:87"},"nativeSrc":"7409:51:87","nodeType":"YulFunctionCall","src":"7409:51:87"},"nativeSrc":"7409:51:87","nodeType":"YulExpressionStatement","src":"7409:51:87"},{"expression":{"arguments":[{"arguments":[{"name":"headStart","nativeSrc":"7480:9:87","nodeType":"YulIdentifier","src":"7480:9:87"},{"kind":"number","nativeSrc":"7491:2:87","nodeType":"YulLiteral","src":"7491:2:87","type":"","value":"32"}],"functionName":{"name":"add","nativeSrc":"7476:3:87","nodeType":"YulIdentifier","src":"7476:3:87"},"nativeSrc":"7476:18:87","nodeType":"YulFunctionCall","src":"7476:18:87"},{"name":"value1","nativeSrc":"7496:6:87","nodeType":"YulIdentifier","src":"7496:6:87"}],"functionName":{"name":"mstore","nativeSrc":"7469:6:87","nodeType":"YulIdentifier","src":"7469:6:87"},"nativeSrc":"7469:34:87","nodeType":"YulFunctionCall","src":"7469:34:87"},"nativeSrc":"7469:34:87","nodeType":"YulExpressionStatement","src":"7469:34:87"}]},"name":"abi_encode_tuple_t_address_t_uint256__to_t_address_t_uint256__fromStack_reversed","nativeSrc":"7235:274:87","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nativeSrc":"7325:9:87","nodeType":"YulTypedName","src":"7325:9:87","type":""},{"name":"value1","nativeSrc":"7336:6:87","nodeType":"YulTypedName","src":"7336:6:87","type":""},{"name":"value0","nativeSrc":"7344:6:87","nodeType":"YulTypedName","src":"7344:6:87","type":""}],"returnVariables":[{"name":"tail","nativeSrc":"7355:4:87","nodeType":"YulTypedName","src":"7355:4:87","type":""}],"src":"7235:274:87"},{"body":{"nativeSrc":"7592:167:87","nodeType":"YulBlock","src":"7592:167:87","statements":[{"body":{"nativeSrc":"7638:16:87","nodeType":"YulBlock","src":"7638:16:87","statements":[{"expression":{"arguments":[{"kind":"number","nativeSrc":"7647:1:87","nodeType":"YulLiteral","src":"7647:1:87","type":"","value":"0"},{"kind":"number","nativeSrc":"7650:1:87","nodeType":"YulLiteral","src":"7650:1:87","type":"","value":"0"}],"functionName":{"name":"revert","nativeSrc":"7640:6:87","nodeType":"YulIdentifier","src":"7640:6:87"},"nativeSrc":"7640:12:87","nodeType":"YulFunctionCall","src":"7640:12:87"},"nativeSrc":"7640:12:87","nodeType":"YulExpressionStatement","src":"7640:12:87"}]},"condition":{"arguments":[{"arguments":[{"name":"dataEnd","nativeSrc":"7613:7:87","nodeType":"YulIdentifier","src":"7613:7:87"},{"name":"headStart","nativeSrc":"7622:9:87","nodeType":"YulIdentifier","src":"7622:9:87"}],"functionName":{"name":"sub","nativeSrc":"7609:3:87","nodeType":"YulIdentifier","src":"7609:3:87"},"nativeSrc":"7609:23:87","nodeType":"YulFunctionCall","src":"7609:23:87"},{"kind":"number","nativeSrc":"7634:2:87","nodeType":"YulLiteral","src":"7634:2:87","type":"","value":"32"}],"functionName":{"name":"slt","nativeSrc":"7605:3:87","nodeType":"YulIdentifier","src":"7605:3:87"},"nativeSrc":"7605:32:87","nodeType":"YulFunctionCall","src":"7605:32:87"},"nativeSrc":"7602:52:87","nodeType":"YulIf","src":"7602:52:87"},{"nativeSrc":"7663:29:87","nodeType":"YulVariableDeclaration","src":"7663:29:87","value":{"arguments":[{"name":"headStart","nativeSrc":"7682:9:87","nodeType":"YulIdentifier","src":"7682:9:87"}],"functionName":{"name":"mload","nativeSrc":"7676:5:87","nodeType":"YulIdentifier","src":"7676:5:87"},"nativeSrc":"7676:16:87","nodeType":"YulFunctionCall","src":"7676:16:87"},"variables":[{"name":"value","nativeSrc":"7667:5:87","nodeType":"YulTypedName","src":"7667:5:87","type":""}]},{"expression":{"arguments":[{"name":"value","nativeSrc":"7723:5:87","nodeType":"YulIdentifier","src":"7723:5:87"}],"functionName":{"name":"validator_revert_bool","nativeSrc":"7701:21:87","nodeType":"YulIdentifier","src":"7701:21:87"},"nativeSrc":"7701:28:87","nodeType":"YulFunctionCall","src":"7701:28:87"},"nativeSrc":"7701:28:87","nodeType":"YulExpressionStatement","src":"7701:28:87"},{"nativeSrc":"7738:15:87","nodeType":"YulAssignment","src":"7738:15:87","value":{"name":"value","nativeSrc":"7748:5:87","nodeType":"YulIdentifier","src":"7748:5:87"},"variableNames":[{"name":"value0","nativeSrc":"7738:6:87","nodeType":"YulIdentifier","src":"7738:6:87"}]}]},"name":"abi_decode_tuple_t_bool_fromMemory","nativeSrc":"7514:245:87","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nativeSrc":"7558:9:87","nodeType":"YulTypedName","src":"7558:9:87","type":""},{"name":"dataEnd","nativeSrc":"7569:7:87","nodeType":"YulTypedName","src":"7569:7:87","type":""}],"returnVariables":[{"name":"value0","nativeSrc":"7581:6:87","nodeType":"YulTypedName","src":"7581:6:87","type":""}],"src":"7514:245:87"},{"body":{"nativeSrc":"7956:271:87","nodeType":"YulBlock","src":"7956:271:87","statements":[{"nativeSrc":"7966:27:87","nodeType":"YulAssignment","src":"7966:27:87","value":{"arguments":[{"name":"headStart","nativeSrc":"7978:9:87","nodeType":"YulIdentifier","src":"7978:9:87"},{"kind":"number","nativeSrc":"7989:3:87","nodeType":"YulLiteral","src":"7989:3:87","type":"","value":"128"}],"functionName":{"name":"add","nativeSrc":"7974:3:87","nodeType":"YulIdentifier","src":"7974:3:87"},"nativeSrc":"7974:19:87","nodeType":"YulFunctionCall","src":"7974:19:87"},"variableNames":[{"name":"tail","nativeSrc":"7966:4:87","nodeType":"YulIdentifier","src":"7966:4:87"}]},{"expression":{"arguments":[{"name":"headStart","nativeSrc":"8009:9:87","nodeType":"YulIdentifier","src":"8009:9:87"},{"arguments":[{"name":"value0","nativeSrc":"8024:6:87","nodeType":"YulIdentifier","src":"8024:6:87"},{"arguments":[{"arguments":[{"kind":"number","nativeSrc":"8040:3:87","nodeType":"YulLiteral","src":"8040:3:87","type":"","value":"160"},{"kind":"number","nativeSrc":"8045:1:87","nodeType":"YulLiteral","src":"8045:1:87","type":"","value":"1"}],"functionName":{"name":"shl","nativeSrc":"8036:3:87","nodeType":"YulIdentifier","src":"8036:3:87"},"nativeSrc":"8036:11:87","nodeType":"YulFunctionCall","src":"8036:11:87"},{"kind":"number","nativeSrc":"8049:1:87","nodeType":"YulLiteral","src":"8049:1:87","type":"","value":"1"}],"functionName":{"name":"sub","nativeSrc":"8032:3:87","nodeType":"YulIdentifier","src":"8032:3:87"},"nativeSrc":"8032:19:87","nodeType":"YulFunctionCall","src":"8032:19:87"}],"functionName":{"name":"and","nativeSrc":"8020:3:87","nodeType":"YulIdentifier","src":"8020:3:87"},"nativeSrc":"8020:32:87","nodeType":"YulFunctionCall","src":"8020:32:87"}],"functionName":{"name":"mstore","nativeSrc":"8002:6:87","nodeType":"YulIdentifier","src":"8002:6:87"},"nativeSrc":"8002:51:87","nodeType":"YulFunctionCall","src":"8002:51:87"},"nativeSrc":"8002:51:87","nodeType":"YulExpressionStatement","src":"8002:51:87"},{"expression":{"arguments":[{"arguments":[{"name":"headStart","nativeSrc":"8073:9:87","nodeType":"YulIdentifier","src":"8073:9:87"},{"kind":"number","nativeSrc":"8084:2:87","nodeType":"YulLiteral","src":"8084:2:87","type":"","value":"32"}],"functionName":{"name":"add","nativeSrc":"8069:3:87","nodeType":"YulIdentifier","src":"8069:3:87"},"nativeSrc":"8069:18:87","nodeType":"YulFunctionCall","src":"8069:18:87"},{"name":"value1","nativeSrc":"8089:6:87","nodeType":"YulIdentifier","src":"8089:6:87"}],"functionName":{"name":"mstore","nativeSrc":"8062:6:87","nodeType":"YulIdentifier","src":"8062:6:87"},"nativeSrc":"8062:34:87","nodeType":"YulFunctionCall","src":"8062:34:87"},"nativeSrc":"8062:34:87","nodeType":"YulExpressionStatement","src":"8062:34:87"},{"expression":{"arguments":[{"arguments":[{"name":"headStart","nativeSrc":"8116:9:87","nodeType":"YulIdentifier","src":"8116:9:87"},{"kind":"number","nativeSrc":"8127:2:87","nodeType":"YulLiteral","src":"8127:2:87","type":"","value":"64"}],"functionName":{"name":"add","nativeSrc":"8112:3:87","nodeType":"YulIdentifier","src":"8112:3:87"},"nativeSrc":"8112:18:87","nodeType":"YulFunctionCall","src":"8112:18:87"},{"arguments":[{"name":"value2","nativeSrc":"8136:6:87","nodeType":"YulIdentifier","src":"8136:6:87"},{"arguments":[{"arguments":[{"kind":"number","nativeSrc":"8152:3:87","nodeType":"YulLiteral","src":"8152:3:87","type":"","value":"160"},{"kind":"number","nativeSrc":"8157:1:87","nodeType":"YulLiteral","src":"8157:1:87","type":"","value":"1"}],"functionName":{"name":"shl","nativeSrc":"8148:3:87","nodeType":"YulIdentifier","src":"8148:3:87"},"nativeSrc":"8148:11:87","nodeType":"YulFunctionCall","src":"8148:11:87"},{"kind":"number","nativeSrc":"8161:1:87","nodeType":"YulLiteral","src":"8161:1:87","type":"","value":"1"}],"functionName":{"name":"sub","nativeSrc":"8144:3:87","nodeType":"YulIdentifier","src":"8144:3:87"},"nativeSrc":"8144:19:87","nodeType":"YulFunctionCall","src":"8144:19:87"}],"functionName":{"name":"and","nativeSrc":"8132:3:87","nodeType":"YulIdentifier","src":"8132:3:87"},"nativeSrc":"8132:32:87","nodeType":"YulFunctionCall","src":"8132:32:87"}],"functionName":{"name":"mstore","nativeSrc":"8105:6:87","nodeType":"YulIdentifier","src":"8105:6:87"},"nativeSrc":"8105:60:87","nodeType":"YulFunctionCall","src":"8105:60:87"},"nativeSrc":"8105:60:87","nodeType":"YulExpressionStatement","src":"8105:60:87"},{"expression":{"arguments":[{"arguments":[{"name":"headStart","nativeSrc":"8185:9:87","nodeType":"YulIdentifier","src":"8185:9:87"},{"kind":"number","nativeSrc":"8196:2:87","nodeType":"YulLiteral","src":"8196:2:87","type":"","value":"96"}],"functionName":{"name":"add","nativeSrc":"8181:3:87","nodeType":"YulIdentifier","src":"8181:3:87"},"nativeSrc":"8181:18:87","nodeType":"YulFunctionCall","src":"8181:18:87"},{"arguments":[{"name":"value3","nativeSrc":"8205:6:87","nodeType":"YulIdentifier","src":"8205:6:87"},{"kind":"number","nativeSrc":"8213:6:87","nodeType":"YulLiteral","src":"8213:6:87","type":"","value":"0xffff"}],"functionName":{"name":"and","nativeSrc":"8201:3:87","nodeType":"YulIdentifier","src":"8201:3:87"},"nativeSrc":"8201:19:87","nodeType":"YulFunctionCall","src":"8201:19:87"}],"functionName":{"name":"mstore","nativeSrc":"8174:6:87","nodeType":"YulIdentifier","src":"8174:6:87"},"nativeSrc":"8174:47:87","nodeType":"YulFunctionCall","src":"8174:47:87"},"nativeSrc":"8174:47:87","nodeType":"YulExpressionStatement","src":"8174:47:87"}]},"name":"abi_encode_tuple_t_address_t_uint256_t_address_t_rational_0_by_1__to_t_address_t_uint256_t_address_t_uint16__fromStack_reversed","nativeSrc":"7764:463:87","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nativeSrc":"7901:9:87","nodeType":"YulTypedName","src":"7901:9:87","type":""},{"name":"value3","nativeSrc":"7912:6:87","nodeType":"YulTypedName","src":"7912:6:87","type":""},{"name":"value2","nativeSrc":"7920:6:87","nodeType":"YulTypedName","src":"7920:6:87","type":""},{"name":"value1","nativeSrc":"7928:6:87","nodeType":"YulTypedName","src":"7928:6:87","type":""},{"name":"value0","nativeSrc":"7936:6:87","nodeType":"YulTypedName","src":"7936:6:87","type":""}],"returnVariables":[{"name":"tail","nativeSrc":"7947:4:87","nodeType":"YulTypedName","src":"7947:4:87","type":""}],"src":"7764:463:87"}]},"contents":"{\n    { }\n    function panic_error_0x41()\n    {\n        mstore(0, shl(224, 0x4e487b71))\n        mstore(4, 0x41)\n        revert(0, 0x24)\n    }\n    function allocate_memory() -> memPtr\n    {\n        memPtr := mload(64)\n        let newFreePtr := add(memPtr, 480)\n        if or(gt(newFreePtr, 0xffffffffffffffff), lt(newFreePtr, memPtr)) { panic_error_0x41() }\n        mstore(64, newFreePtr)\n    }\n    function abi_decode_bytes(offset, end) -> array\n    {\n        if iszero(slt(add(offset, 0x1f), end)) { revert(0, 0) }\n        let length := calldataload(offset)\n        if gt(length, 0xffffffffffffffff) { panic_error_0x41() }\n        let memPtr := 0\n        memPtr := mload(64)\n        let newFreePtr := add(memPtr, and(add(and(add(length, 0x1f), not(31)), 63), not(31)))\n        if or(gt(newFreePtr, 0xffffffffffffffff), lt(newFreePtr, memPtr)) { panic_error_0x41() }\n        mstore(64, newFreePtr)\n        mstore(memPtr, length)\n        if gt(add(add(offset, length), 0x20), end) { revert(0, 0) }\n        calldatacopy(add(memPtr, 0x20), add(offset, 0x20), length)\n        mstore(add(add(memPtr, length), 0x20), 0)\n        array := memPtr\n    }\n    function abi_decode_tuple_t_uint8t_bytes_memory_ptr(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, 0xff))) { revert(0, 0) }\n        value0 := value\n        let offset := calldataload(add(headStart, 32))\n        if gt(offset, 0xffffffffffffffff) { revert(0, 0) }\n        value1 := abi_decode_bytes(add(headStart, offset), dataEnd)\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        let length := mload(value0)\n        mstore(add(headStart, 32), length)\n        mcopy(add(headStart, 64), add(value0, 32), length)\n        mstore(add(add(headStart, length), 64), 0)\n        tail := add(add(headStart, and(add(length, 31), not(31))), 64)\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 validator_revert_address(value)\n    {\n        if iszero(eq(value, and(value, sub(shl(160, 1), 1)))) { 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_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_bool(value)\n    {\n        if iszero(eq(value, iszero(iszero(value)))) { revert(0, 0) }\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_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_address__to_t_address__fromStack_reversed(headStart, value0) -> tail\n    {\n        tail := add(headStart, 32)\n        mstore(headStart, and(value0, sub(shl(160, 1), 1)))\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        if gt(offset, 0xffffffffffffffff) { revert(0, 0) }\n        value0 := abi_decode_bytes(add(headStart, offset), dataEnd)\n    }\n    function abi_encode_tuple_t_address_t_uint256_t_address__to_t_address_t_uint256_t_address__fromStack_reversed(headStart, value2, value1, value0) -> tail\n    {\n        tail := add(headStart, 96)\n        mstore(headStart, and(value0, sub(shl(160, 1), 1)))\n        mstore(add(headStart, 32), value1)\n        mstore(add(headStart, 64), and(value2, sub(shl(160, 1), 1)))\n    }\n    function abi_decode_tuple_t_uint256_fromMemory(headStart, dataEnd) -> value0\n    {\n        if slt(sub(dataEnd, headStart), 32) { revert(0, 0) }\n        let value := 0\n        value := mload(headStart)\n        value0 := value\n    }\n    function abi_decode_struct_ReserveConfigurationMap_fromMemory(headStart, end) -> value\n    {\n        if slt(sub(end, headStart), 0x20) { revert(0, 0) }\n        let memPtr := 0\n        memPtr := mload(64)\n        let newFreePtr := add(memPtr, 0x20)\n        if or(gt(newFreePtr, 0xffffffffffffffff), lt(newFreePtr, memPtr)) { panic_error_0x41() }\n        mstore(64, newFreePtr)\n        value := memPtr\n        let value_1 := 0\n        value_1 := mload(headStart)\n        mstore(memPtr, value_1)\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_uint40_fromMemory(offset) -> value\n    {\n        value := mload(offset)\n        if iszero(eq(value, and(value, 0xffffffffff))) { revert(0, 0) }\n    }\n    function abi_decode_uint16_fromMemory(offset) -> value\n    {\n        value := mload(offset)\n        if iszero(eq(value, and(value, 0xffff))) { revert(0, 0) }\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_struct$_ReserveData_$17774_memory_ptr_fromMemory(headStart, dataEnd) -> value0\n    {\n        let _1 := slt(sub(dataEnd, headStart), 480)\n        if _1 { revert(0, 0) }\n        _1 := 0\n        let value := allocate_memory()\n        mstore(value, abi_decode_struct_ReserveConfigurationMap_fromMemory(headStart, dataEnd))\n        mstore(add(value, 32), abi_decode_uint128_fromMemory(add(headStart, 32)))\n        mstore(add(value, 64), abi_decode_uint128_fromMemory(add(headStart, 64)))\n        mstore(add(value, 96), abi_decode_uint128_fromMemory(add(headStart, 96)))\n        mstore(add(value, 128), abi_decode_uint128_fromMemory(add(headStart, 128)))\n        mstore(add(value, 160), abi_decode_uint128_fromMemory(add(headStart, 160)))\n        mstore(add(value, 192), abi_decode_uint40_fromMemory(add(headStart, 192)))\n        mstore(add(value, 224), abi_decode_uint16_fromMemory(add(headStart, 224)))\n        mstore(add(value, 256), abi_decode_address_fromMemory(add(headStart, 256)))\n        mstore(add(value, 288), abi_decode_address_fromMemory(add(headStart, 288)))\n        mstore(add(value, 320), abi_decode_address_fromMemory(add(headStart, 320)))\n        mstore(add(value, 352), abi_decode_address_fromMemory(add(headStart, 352)))\n        mstore(add(value, 384), abi_decode_uint128_fromMemory(add(headStart, 384)))\n        mstore(add(value, 416), abi_decode_uint128_fromMemory(add(headStart, 416)))\n        mstore(add(value, 448), abi_decode_uint128_fromMemory(add(headStart, 448)))\n        value0 := value\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, sub(shl(160, 1), 1)))\n        mstore(add(headStart, 32), value1)\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_encode_tuple_t_address_t_uint256_t_address_t_rational_0_by_1__to_t_address_t_uint256_t_address_t_uint16__fromStack_reversed(headStart, value3, value2, value1, value0) -> tail\n    {\n        tail := add(headStart, 128)\n        mstore(headStart, and(value0, sub(shl(160, 1), 1)))\n        mstore(add(headStart, 32), value1)\n        mstore(add(headStart, 64), and(value2, sub(shl(160, 1), 1)))\n        mstore(add(headStart, 96), and(value3, 0xffff))\n    }\n}","id":87,"language":"Yul","name":"#utility.yul"}],"immutableReferences":{"21860":[{"length":32,"start":475},{"length":32,"start":548},{"length":32,"start":899},{"length":32,"start":1132},{"length":32,"start":1237}],"21866":[{"length":32,"start":278}],"21869":[{"length":32,"start":693},{"length":32,"start":1802},{"length":32,"start":1936},{"length":32,"start":2172}],"21872":[{"length":32,"start":329},{"length":32,"start":640},{"length":32,"start":1762},{"length":32,"start":1983},{"length":32,"start":2113}]},"linkReferences":{},"object":"608060405234801561000f575f5ffd5b506004361061009b575f3560e01c80639c4667a2116100635780639c4667a2146101385780639cd4712814610183578063b6b55f2514610196578063ce96cb77146101a9578063f3e0ffbf146101bc575f5ffd5b80630981b1c21461009f5780632e1a7d4d146100c8578063402d267d146100dd5780635a117456146100fe5780635b9a4c3514610111575b5f5ffd5b6100b26100ad36600461099f565b6101cf565b6040516100bf91906109f1565b60405180910390f35b6100db6100d6366004610a26565b61021a565b005b6100f06100eb366004610a51565b610324565b6040519081526020016100bf565b6100db61010c366004610a79565b610379565b6100f07f000000000000000000000000000000000000000000000000000000000000000081565b61016b610146366004610a51565b507f000000000000000000000000000000000000000000000000000000000000000090565b6040516001600160a01b0390911681526020016100bf565b6100db610191366004610a94565b610462565b6100db6101a4366004610a26565b6104cb565b6100f06101b7366004610a51565b610523565b6100f06101ca366004610a51565b6105cf565b60606001600160a01b037f000000000000000000000000000000000000000000000000000000000000000016300361009b57604051632abf118b60e21b815260040160405180910390fd5b6001600160a01b037f000000000000000000000000000000000000000000000000000000000000000016300361026357604051632abf118b60e21b815260040160405180910390fd5b801561032157604051631a4ca37b60e21b81526001600160a01b037f000000000000000000000000000000000000000000000000000000000000000081166004830152602482018390523060448301527f000000000000000000000000000000000000000000000000000000000000000016906369328dec906064016020604051808303815f875af11580156102fb573d5f5f3e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061031f9190610ace565b505b50565b5f5f61032e61064c565b805151909150600160381b16158061034d57508051516001603c1b1615155b8061036357508051516702000000000000001615155b1561037057505f92915050565b505f1992915050565b6001600160a01b037f00000000000000000000000000000000000000000000000000000000000000001630036103c257604051632abf118b60e21b815260040160405180910390fd5b5f6103cb61064c565b610100015190508115801561044457506040516370a0823160e01b81523060048201526001600160a01b038216906370a0823190602401602060405180830381865afa15801561041d573d5f5f3e3d5ffd5b505050506040513d601f19601f820116820180604052508101906104419190610ace565b15155b1561031f576040516342a176d160e11b815260040160405180910390fd5b6001600160a01b037f00000000000000000000000000000000000000000000000000000000000000001630036104ab57604051632abf118b60e21b815260040160405180910390fd5b805115610321576040516350701b6160e01b815260040160405180910390fd5b6001600160a01b037f000000000000000000000000000000000000000000000000000000000000000016300361051457604051632abf118b60e21b815260040160405180910390fd5b80156103215761032181610779565b5f5f61052d61064c565b805151909150600160381b16158061054c57508051516001603c1b1615155b1561055957505f92915050565b6101008101516040516370a0823160e01b81526001600160a01b038581166004830152909116906370a0823190602401602060405180830381865afa1580156105a4573d5f5f3e3d5ffd5b505050506040513d601f19601f820116820180604052508101906105c89190610ace565b9392505050565b5f6105d861064c565b61010001516040516370a0823160e01b81526001600160a01b038481166004830152909116906370a0823190602401602060405180830381865afa158015610622573d5f5f3e3d5ffd5b505050506040513d601f19601f820116820180604052508101906106469190610ace565b92915050565b60408051610200810182525f6101e08201818152825260208201819052918101829052606081018290526080810182905260a0810182905260c0810182905260e08101829052610100810182905261012081018290526101408101829052610160810182905261018081018290526101a081018290526101c08101919091526040516335ea6a7560e01b81526001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000811660048301527f000000000000000000000000000000000000000000000000000000000000000016906335ea6a75906024016101e060405180830381865afa158015610750573d5f5f3e3d5ffd5b505050506040513d601f19601f820116820180604052508101906107749190610b79565b905090565b60405163095ea7b360e01b81526001600160a01b037f000000000000000000000000000000000000000000000000000000000000000081166004830152602482018390527f0000000000000000000000000000000000000000000000000000000000000000169063095ea7b3906044016020604051808303815f875af1158015610805573d5f5f3e3d5ffd5b505050506040513d601f19601f820116820180604052508101906108299190610ca3565b5060405163617ba03760e01b81526001600160a01b037f000000000000000000000000000000000000000000000000000000000000000081166004830152602482018390523060448301525f60648301527f0000000000000000000000000000000000000000000000000000000000000000169063617ba037906084015f604051808303815f87803b1580156108bd575f5ffd5b505af11580156108cf573d5f5f3e3d5ffd5b5050505050565b634e487b7160e01b5f52604160045260245ffd5b6040516101e0810167ffffffffffffffff8111828210171561090e5761090e6108d6565b60405290565b5f82601f830112610923575f5ffd5b813567ffffffffffffffff81111561093d5761093d6108d6565b604051601f8201601f19908116603f0116810167ffffffffffffffff8111828210171561096c5761096c6108d6565b604052818152838201602001851015610983575f5ffd5b816020850160208301375f918101602001919091529392505050565b5f5f604083850312156109b0575f5ffd5b823560ff811681146109c0575f5ffd5b9150602083013567ffffffffffffffff8111156109db575f5ffd5b6109e785828601610914565b9150509250929050565b602081525f82518060208401528060208501604085015e5f604082850101526040601f19601f83011684010191505092915050565b5f60208284031215610a36575f5ffd5b5035919050565b6001600160a01b0381168114610321575f5ffd5b5f60208284031215610a61575f5ffd5b81356105c881610a3d565b8015158114610321575f5ffd5b5f60208284031215610a89575f5ffd5b81356105c881610a6c565b5f60208284031215610aa4575f5ffd5b813567ffffffffffffffff811115610aba575f5ffd5b610ac684828501610914565b949350505050565b5f60208284031215610ade575f5ffd5b5051919050565b5f60208284031215610af5575f5ffd5b6040516020810167ffffffffffffffff81118282101715610b1857610b186108d6565b6040529151825250919050565b80516fffffffffffffffffffffffffffffffff81168114610b44575f5ffd5b919050565b805164ffffffffff81168114610b44575f5ffd5b805161ffff81168114610b44575f5ffd5b8051610b4481610a3d565b5f6101e0828403128015610b8b575f5ffd5b50610b946108ea565b610b9e8484610ae5565b8152610bac60208401610b25565b6020820152610bbd60408401610b25565b6040820152610bce60608401610b25565b6060820152610bdf60808401610b25565b6080820152610bf060a08401610b25565b60a0820152610c0160c08401610b49565b60c0820152610c1260e08401610b5d565b60e0820152610c246101008401610b6e565b610100820152610c376101208401610b6e565b610120820152610c4a6101408401610b6e565b610140820152610c5d6101608401610b6e565b610160820152610c706101808401610b25565b610180820152610c836101a08401610b25565b6101a0820152610c966101c08401610b25565b6101c08201529392505050565b5f60208284031215610cb3575f5ffd5b81516105c881610a6c56fea2646970667358221220459e60c04855590e2a26eb614f7c3854430fcd65bf7000bc3d011ce87759b09664736f6c634300081e0033","opcodes":"PUSH1 0x80 PUSH1 0x40 MSTORE CALLVALUE DUP1 ISZERO PUSH2 0xF JUMPI PUSH0 PUSH0 REVERT JUMPDEST POP PUSH1 0x4 CALLDATASIZE LT PUSH2 0x9B JUMPI PUSH0 CALLDATALOAD PUSH1 0xE0 SHR DUP1 PUSH4 0x9C4667A2 GT PUSH2 0x63 JUMPI DUP1 PUSH4 0x9C4667A2 EQ PUSH2 0x138 JUMPI DUP1 PUSH4 0x9CD47128 EQ PUSH2 0x183 JUMPI DUP1 PUSH4 0xB6B55F25 EQ PUSH2 0x196 JUMPI DUP1 PUSH4 0xCE96CB77 EQ PUSH2 0x1A9 JUMPI DUP1 PUSH4 0xF3E0FFBF EQ PUSH2 0x1BC JUMPI PUSH0 PUSH0 REVERT JUMPDEST DUP1 PUSH4 0x981B1C2 EQ PUSH2 0x9F JUMPI DUP1 PUSH4 0x2E1A7D4D EQ PUSH2 0xC8 JUMPI DUP1 PUSH4 0x402D267D EQ PUSH2 0xDD JUMPI DUP1 PUSH4 0x5A117456 EQ PUSH2 0xFE JUMPI DUP1 PUSH4 0x5B9A4C35 EQ PUSH2 0x111 JUMPI JUMPDEST PUSH0 PUSH0 REVERT JUMPDEST PUSH2 0xB2 PUSH2 0xAD CALLDATASIZE PUSH1 0x4 PUSH2 0x99F JUMP JUMPDEST PUSH2 0x1CF JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0xBF SWAP2 SWAP1 PUSH2 0x9F1 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST PUSH2 0xDB PUSH2 0xD6 CALLDATASIZE PUSH1 0x4 PUSH2 0xA26 JUMP JUMPDEST PUSH2 0x21A JUMP JUMPDEST STOP JUMPDEST PUSH2 0xF0 PUSH2 0xEB CALLDATASIZE PUSH1 0x4 PUSH2 0xA51 JUMP JUMPDEST PUSH2 0x324 JUMP JUMPDEST PUSH1 0x40 MLOAD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH2 0xBF JUMP JUMPDEST PUSH2 0xDB PUSH2 0x10C CALLDATASIZE PUSH1 0x4 PUSH2 0xA79 JUMP JUMPDEST PUSH2 0x379 JUMP JUMPDEST PUSH2 0xF0 PUSH32 0x0 DUP2 JUMP JUMPDEST PUSH2 0x16B PUSH2 0x146 CALLDATASIZE PUSH1 0x4 PUSH2 0xA51 JUMP JUMPDEST POP PUSH32 0x0 SWAP1 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP1 SWAP2 AND DUP2 MSTORE PUSH1 0x20 ADD PUSH2 0xBF JUMP JUMPDEST PUSH2 0xDB PUSH2 0x191 CALLDATASIZE PUSH1 0x4 PUSH2 0xA94 JUMP JUMPDEST PUSH2 0x462 JUMP JUMPDEST PUSH2 0xDB PUSH2 0x1A4 CALLDATASIZE PUSH1 0x4 PUSH2 0xA26 JUMP JUMPDEST PUSH2 0x4CB JUMP JUMPDEST PUSH2 0xF0 PUSH2 0x1B7 CALLDATASIZE PUSH1 0x4 PUSH2 0xA51 JUMP JUMPDEST PUSH2 0x523 JUMP JUMPDEST PUSH2 0xF0 PUSH2 0x1CA CALLDATASIZE PUSH1 0x4 PUSH2 0xA51 JUMP JUMPDEST PUSH2 0x5CF JUMP JUMPDEST PUSH1 0x60 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB PUSH32 0x0 AND ADDRESS SUB PUSH2 0x9B JUMPI PUSH1 0x40 MLOAD PUSH4 0x2ABF118B PUSH1 0xE2 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB PUSH32 0x0 AND ADDRESS SUB PUSH2 0x263 JUMPI PUSH1 0x40 MLOAD PUSH4 0x2ABF118B PUSH1 0xE2 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST DUP1 ISZERO PUSH2 0x321 JUMPI PUSH1 0x40 MLOAD PUSH4 0x1A4CA37B PUSH1 0xE2 SHL DUP2 MSTORE PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB PUSH32 0x0 DUP2 AND PUSH1 0x4 DUP4 ADD MSTORE PUSH1 0x24 DUP3 ADD DUP4 SWAP1 MSTORE ADDRESS PUSH1 0x44 DUP4 ADD MSTORE PUSH32 0x0 AND SWAP1 PUSH4 0x69328DEC SWAP1 PUSH1 0x64 ADD PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 PUSH0 DUP8 GAS CALL ISZERO DUP1 ISZERO PUSH2 0x2FB JUMPI RETURNDATASIZE PUSH0 PUSH0 RETURNDATACOPY RETURNDATASIZE PUSH0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP3 ADD DUP1 PUSH1 0x40 MSTORE POP DUP2 ADD SWAP1 PUSH2 0x31F SWAP2 SWAP1 PUSH2 0xACE JUMP JUMPDEST POP JUMPDEST POP JUMP JUMPDEST PUSH0 PUSH0 PUSH2 0x32E PUSH2 0x64C JUMP JUMPDEST DUP1 MLOAD MLOAD SWAP1 SWAP2 POP PUSH1 0x1 PUSH1 0x38 SHL AND ISZERO DUP1 PUSH2 0x34D JUMPI POP DUP1 MLOAD MLOAD PUSH1 0x1 PUSH1 0x3C SHL AND ISZERO ISZERO JUMPDEST DUP1 PUSH2 0x363 JUMPI POP DUP1 MLOAD MLOAD PUSH8 0x200000000000000 AND ISZERO ISZERO JUMPDEST ISZERO PUSH2 0x370 JUMPI POP PUSH0 SWAP3 SWAP2 POP POP JUMP JUMPDEST POP PUSH0 NOT SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB PUSH32 0x0 AND ADDRESS SUB PUSH2 0x3C2 JUMPI PUSH1 0x40 MLOAD PUSH4 0x2ABF118B PUSH1 0xE2 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH0 PUSH2 0x3CB PUSH2 0x64C JUMP JUMPDEST PUSH2 0x100 ADD MLOAD SWAP1 POP DUP2 ISZERO DUP1 ISZERO PUSH2 0x444 JUMPI POP PUSH1 0x40 MLOAD PUSH4 0x70A08231 PUSH1 0xE0 SHL DUP2 MSTORE ADDRESS PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP3 AND SWAP1 PUSH4 0x70A08231 SWAP1 PUSH1 0x24 ADD PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x41D JUMPI RETURNDATASIZE PUSH0 PUSH0 RETURNDATACOPY RETURNDATASIZE PUSH0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP3 ADD DUP1 PUSH1 0x40 MSTORE POP DUP2 ADD SWAP1 PUSH2 0x441 SWAP2 SWAP1 PUSH2 0xACE JUMP JUMPDEST ISZERO ISZERO JUMPDEST ISZERO PUSH2 0x31F JUMPI PUSH1 0x40 MLOAD PUSH4 0x42A176D1 PUSH1 0xE1 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB PUSH32 0x0 AND ADDRESS SUB PUSH2 0x4AB JUMPI PUSH1 0x40 MLOAD PUSH4 0x2ABF118B PUSH1 0xE2 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST DUP1 MLOAD ISZERO PUSH2 0x321 JUMPI PUSH1 0x40 MLOAD PUSH4 0x50701B61 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 PUSH32 0x0 AND ADDRESS SUB PUSH2 0x514 JUMPI PUSH1 0x40 MLOAD PUSH4 0x2ABF118B PUSH1 0xE2 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST DUP1 ISZERO PUSH2 0x321 JUMPI PUSH2 0x321 DUP2 PUSH2 0x779 JUMP JUMPDEST PUSH0 PUSH0 PUSH2 0x52D PUSH2 0x64C JUMP JUMPDEST DUP1 MLOAD MLOAD SWAP1 SWAP2 POP PUSH1 0x1 PUSH1 0x38 SHL AND ISZERO DUP1 PUSH2 0x54C JUMPI POP DUP1 MLOAD MLOAD PUSH1 0x1 PUSH1 0x3C SHL AND ISZERO ISZERO JUMPDEST ISZERO PUSH2 0x559 JUMPI POP PUSH0 SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH2 0x100 DUP2 ADD MLOAD PUSH1 0x40 MLOAD PUSH4 0x70A08231 PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP6 DUP2 AND PUSH1 0x4 DUP4 ADD MSTORE SWAP1 SWAP2 AND SWAP1 PUSH4 0x70A08231 SWAP1 PUSH1 0x24 ADD PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x5A4 JUMPI RETURNDATASIZE PUSH0 PUSH0 RETURNDATACOPY RETURNDATASIZE PUSH0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP3 ADD DUP1 PUSH1 0x40 MSTORE POP DUP2 ADD SWAP1 PUSH2 0x5C8 SWAP2 SWAP1 PUSH2 0xACE JUMP JUMPDEST SWAP4 SWAP3 POP POP POP JUMP JUMPDEST PUSH0 PUSH2 0x5D8 PUSH2 0x64C JUMP JUMPDEST PUSH2 0x100 ADD MLOAD PUSH1 0x40 MLOAD PUSH4 0x70A08231 PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP5 DUP2 AND PUSH1 0x4 DUP4 ADD MSTORE SWAP1 SWAP2 AND SWAP1 PUSH4 0x70A08231 SWAP1 PUSH1 0x24 ADD PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x622 JUMPI RETURNDATASIZE PUSH0 PUSH0 RETURNDATACOPY RETURNDATASIZE PUSH0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP3 ADD DUP1 PUSH1 0x40 MSTORE POP DUP2 ADD SWAP1 PUSH2 0x646 SWAP2 SWAP1 PUSH2 0xACE JUMP JUMPDEST SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH2 0x200 DUP2 ADD DUP3 MSTORE PUSH0 PUSH2 0x1E0 DUP3 ADD DUP2 DUP2 MSTORE 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 PUSH1 0xC0 DUP2 ADD DUP3 SWAP1 MSTORE PUSH1 0xE0 DUP2 ADD DUP3 SWAP1 MSTORE PUSH2 0x100 DUP2 ADD DUP3 SWAP1 MSTORE PUSH2 0x120 DUP2 ADD DUP3 SWAP1 MSTORE PUSH2 0x140 DUP2 ADD DUP3 SWAP1 MSTORE PUSH2 0x160 DUP2 ADD DUP3 SWAP1 MSTORE PUSH2 0x180 DUP2 ADD DUP3 SWAP1 MSTORE PUSH2 0x1A0 DUP2 ADD DUP3 SWAP1 MSTORE PUSH2 0x1C0 DUP2 ADD SWAP2 SWAP1 SWAP2 MSTORE PUSH1 0x40 MLOAD PUSH4 0x35EA6A75 PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB PUSH32 0x0 DUP2 AND PUSH1 0x4 DUP4 ADD MSTORE PUSH32 0x0 AND SWAP1 PUSH4 0x35EA6A75 SWAP1 PUSH1 0x24 ADD PUSH2 0x1E0 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x750 JUMPI RETURNDATASIZE PUSH0 PUSH0 RETURNDATACOPY RETURNDATASIZE PUSH0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP3 ADD DUP1 PUSH1 0x40 MSTORE POP DUP2 ADD SWAP1 PUSH2 0x774 SWAP2 SWAP1 PUSH2 0xB79 JUMP JUMPDEST SWAP1 POP SWAP1 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH4 0x95EA7B3 PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB PUSH32 0x0 DUP2 AND PUSH1 0x4 DUP4 ADD MSTORE PUSH1 0x24 DUP3 ADD DUP4 SWAP1 MSTORE PUSH32 0x0 AND SWAP1 PUSH4 0x95EA7B3 SWAP1 PUSH1 0x44 ADD PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 PUSH0 DUP8 GAS CALL ISZERO DUP1 ISZERO PUSH2 0x805 JUMPI RETURNDATASIZE PUSH0 PUSH0 RETURNDATACOPY RETURNDATASIZE PUSH0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP3 ADD DUP1 PUSH1 0x40 MSTORE POP DUP2 ADD SWAP1 PUSH2 0x829 SWAP2 SWAP1 PUSH2 0xCA3 JUMP JUMPDEST POP PUSH1 0x40 MLOAD PUSH4 0x617BA037 PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB PUSH32 0x0 DUP2 AND PUSH1 0x4 DUP4 ADD MSTORE PUSH1 0x24 DUP3 ADD DUP4 SWAP1 MSTORE ADDRESS PUSH1 0x44 DUP4 ADD MSTORE PUSH0 PUSH1 0x64 DUP4 ADD MSTORE PUSH32 0x0 AND SWAP1 PUSH4 0x617BA037 SWAP1 PUSH1 0x84 ADD PUSH0 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 PUSH0 DUP8 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x8BD JUMPI PUSH0 PUSH0 REVERT JUMPDEST POP GAS CALL ISZERO DUP1 ISZERO PUSH2 0x8CF JUMPI RETURNDATASIZE PUSH0 PUSH0 RETURNDATACOPY RETURNDATASIZE PUSH0 REVERT JUMPDEST POP POP POP POP POP JUMP JUMPDEST PUSH4 0x4E487B71 PUSH1 0xE0 SHL PUSH0 MSTORE PUSH1 0x41 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH0 REVERT JUMPDEST PUSH1 0x40 MLOAD PUSH2 0x1E0 DUP2 ADD PUSH8 0xFFFFFFFFFFFFFFFF DUP2 GT DUP3 DUP3 LT OR ISZERO PUSH2 0x90E JUMPI PUSH2 0x90E PUSH2 0x8D6 JUMP JUMPDEST PUSH1 0x40 MSTORE SWAP1 JUMP JUMPDEST PUSH0 DUP3 PUSH1 0x1F DUP4 ADD SLT PUSH2 0x923 JUMPI PUSH0 PUSH0 REVERT JUMPDEST DUP2 CALLDATALOAD PUSH8 0xFFFFFFFFFFFFFFFF DUP2 GT ISZERO PUSH2 0x93D JUMPI PUSH2 0x93D PUSH2 0x8D6 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH1 0x1F DUP3 ADD PUSH1 0x1F NOT SWAP1 DUP2 AND PUSH1 0x3F ADD AND DUP2 ADD PUSH8 0xFFFFFFFFFFFFFFFF DUP2 GT DUP3 DUP3 LT OR ISZERO PUSH2 0x96C JUMPI PUSH2 0x96C PUSH2 0x8D6 JUMP JUMPDEST PUSH1 0x40 MSTORE DUP2 DUP2 MSTORE DUP4 DUP3 ADD PUSH1 0x20 ADD DUP6 LT ISZERO PUSH2 0x983 JUMPI PUSH0 PUSH0 REVERT JUMPDEST DUP2 PUSH1 0x20 DUP6 ADD PUSH1 0x20 DUP4 ADD CALLDATACOPY PUSH0 SWAP2 DUP2 ADD PUSH1 0x20 ADD SWAP2 SWAP1 SWAP2 MSTORE SWAP4 SWAP3 POP POP POP JUMP JUMPDEST PUSH0 PUSH0 PUSH1 0x40 DUP4 DUP6 SUB SLT ISZERO PUSH2 0x9B0 JUMPI PUSH0 PUSH0 REVERT JUMPDEST DUP3 CALLDATALOAD PUSH1 0xFF DUP2 AND DUP2 EQ PUSH2 0x9C0 JUMPI PUSH0 PUSH0 REVERT JUMPDEST SWAP2 POP PUSH1 0x20 DUP4 ADD CALLDATALOAD PUSH8 0xFFFFFFFFFFFFFFFF DUP2 GT ISZERO PUSH2 0x9DB JUMPI PUSH0 PUSH0 REVERT JUMPDEST PUSH2 0x9E7 DUP6 DUP3 DUP7 ADD PUSH2 0x914 JUMP JUMPDEST SWAP2 POP POP SWAP3 POP SWAP3 SWAP1 POP JUMP JUMPDEST PUSH1 0x20 DUP2 MSTORE PUSH0 DUP3 MLOAD DUP1 PUSH1 0x20 DUP5 ADD MSTORE DUP1 PUSH1 0x20 DUP6 ADD PUSH1 0x40 DUP6 ADD MCOPY PUSH0 PUSH1 0x40 DUP3 DUP6 ADD ADD MSTORE PUSH1 0x40 PUSH1 0x1F NOT PUSH1 0x1F DUP4 ADD AND DUP5 ADD ADD SWAP2 POP POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0xA36 JUMPI PUSH0 PUSH0 REVERT JUMPDEST POP CALLDATALOAD SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 AND DUP2 EQ PUSH2 0x321 JUMPI PUSH0 PUSH0 REVERT JUMPDEST PUSH0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0xA61 JUMPI PUSH0 PUSH0 REVERT JUMPDEST DUP2 CALLDATALOAD PUSH2 0x5C8 DUP2 PUSH2 0xA3D JUMP JUMPDEST DUP1 ISZERO ISZERO DUP2 EQ PUSH2 0x321 JUMPI PUSH0 PUSH0 REVERT JUMPDEST PUSH0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0xA89 JUMPI PUSH0 PUSH0 REVERT JUMPDEST DUP2 CALLDATALOAD PUSH2 0x5C8 DUP2 PUSH2 0xA6C JUMP JUMPDEST PUSH0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0xAA4 JUMPI PUSH0 PUSH0 REVERT JUMPDEST DUP2 CALLDATALOAD PUSH8 0xFFFFFFFFFFFFFFFF DUP2 GT ISZERO PUSH2 0xABA JUMPI PUSH0 PUSH0 REVERT JUMPDEST PUSH2 0xAC6 DUP5 DUP3 DUP6 ADD PUSH2 0x914 JUMP JUMPDEST SWAP5 SWAP4 POP POP POP POP JUMP JUMPDEST PUSH0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0xADE JUMPI PUSH0 PUSH0 REVERT JUMPDEST POP MLOAD SWAP2 SWAP1 POP JUMP JUMPDEST PUSH0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0xAF5 JUMPI PUSH0 PUSH0 REVERT JUMPDEST PUSH1 0x40 MLOAD PUSH1 0x20 DUP2 ADD PUSH8 0xFFFFFFFFFFFFFFFF DUP2 GT DUP3 DUP3 LT OR ISZERO PUSH2 0xB18 JUMPI PUSH2 0xB18 PUSH2 0x8D6 JUMP JUMPDEST PUSH1 0x40 MSTORE SWAP2 MLOAD DUP3 MSTORE POP SWAP2 SWAP1 POP JUMP JUMPDEST DUP1 MLOAD PUSH16 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP2 AND DUP2 EQ PUSH2 0xB44 JUMPI PUSH0 PUSH0 REVERT JUMPDEST SWAP2 SWAP1 POP JUMP JUMPDEST DUP1 MLOAD PUSH5 0xFFFFFFFFFF DUP2 AND DUP2 EQ PUSH2 0xB44 JUMPI PUSH0 PUSH0 REVERT JUMPDEST DUP1 MLOAD PUSH2 0xFFFF DUP2 AND DUP2 EQ PUSH2 0xB44 JUMPI PUSH0 PUSH0 REVERT JUMPDEST DUP1 MLOAD PUSH2 0xB44 DUP2 PUSH2 0xA3D JUMP JUMPDEST PUSH0 PUSH2 0x1E0 DUP3 DUP5 SUB SLT DUP1 ISZERO PUSH2 0xB8B JUMPI PUSH0 PUSH0 REVERT JUMPDEST POP PUSH2 0xB94 PUSH2 0x8EA JUMP JUMPDEST PUSH2 0xB9E DUP5 DUP5 PUSH2 0xAE5 JUMP JUMPDEST DUP2 MSTORE PUSH2 0xBAC PUSH1 0x20 DUP5 ADD PUSH2 0xB25 JUMP JUMPDEST PUSH1 0x20 DUP3 ADD MSTORE PUSH2 0xBBD PUSH1 0x40 DUP5 ADD PUSH2 0xB25 JUMP JUMPDEST PUSH1 0x40 DUP3 ADD MSTORE PUSH2 0xBCE PUSH1 0x60 DUP5 ADD PUSH2 0xB25 JUMP JUMPDEST PUSH1 0x60 DUP3 ADD MSTORE PUSH2 0xBDF PUSH1 0x80 DUP5 ADD PUSH2 0xB25 JUMP JUMPDEST PUSH1 0x80 DUP3 ADD MSTORE PUSH2 0xBF0 PUSH1 0xA0 DUP5 ADD PUSH2 0xB25 JUMP JUMPDEST PUSH1 0xA0 DUP3 ADD MSTORE PUSH2 0xC01 PUSH1 0xC0 DUP5 ADD PUSH2 0xB49 JUMP JUMPDEST PUSH1 0xC0 DUP3 ADD MSTORE PUSH2 0xC12 PUSH1 0xE0 DUP5 ADD PUSH2 0xB5D JUMP JUMPDEST PUSH1 0xE0 DUP3 ADD MSTORE PUSH2 0xC24 PUSH2 0x100 DUP5 ADD PUSH2 0xB6E JUMP JUMPDEST PUSH2 0x100 DUP3 ADD MSTORE PUSH2 0xC37 PUSH2 0x120 DUP5 ADD PUSH2 0xB6E JUMP JUMPDEST PUSH2 0x120 DUP3 ADD MSTORE PUSH2 0xC4A PUSH2 0x140 DUP5 ADD PUSH2 0xB6E JUMP JUMPDEST PUSH2 0x140 DUP3 ADD MSTORE PUSH2 0xC5D PUSH2 0x160 DUP5 ADD PUSH2 0xB6E JUMP JUMPDEST PUSH2 0x160 DUP3 ADD MSTORE PUSH2 0xC70 PUSH2 0x180 DUP5 ADD PUSH2 0xB25 JUMP JUMPDEST PUSH2 0x180 DUP3 ADD MSTORE PUSH2 0xC83 PUSH2 0x1A0 DUP5 ADD PUSH2 0xB25 JUMP JUMPDEST PUSH2 0x1A0 DUP3 ADD MSTORE PUSH2 0xC96 PUSH2 0x1C0 DUP5 ADD PUSH2 0xB25 JUMP JUMPDEST PUSH2 0x1C0 DUP3 ADD MSTORE SWAP4 SWAP3 POP POP POP JUMP JUMPDEST PUSH0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0xCB3 JUMPI PUSH0 PUSH0 REVERT JUMPDEST DUP2 MLOAD PUSH2 0x5C8 DUP2 PUSH2 0xA6C JUMP INVALID LOG2 PUSH5 0x6970667358 0x22 SLT KECCAK256 GASLIMIT SWAP15 PUSH1 0xC0 BASEFEE SSTORE MSIZE 0xE 0x2A 0x26 0xEB PUSH2 0x4F7C CODESIZE SLOAD NUMBER 0xF 0xCD PUSH6 0xBF7000BC3D01 SHR 0xE8 PUSH24 0x59B09664736F6C634300081E003300000000000000000000 ","sourceMap":"665:3183:76:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;3663:183;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;3151:156;;;;;;:::i;:::-;;:::i;:::-;;2420:344;;;;;;:::i;:::-;;:::i;:::-;;;2770:25:87;;;2758:2;2743:18;2420:344:76;2624:177:87;1811:228:76;;;;;;:::i;:::-;;:::i;839:81::-;;;;;2802:104;;;;;;:::i;:::-;-1:-1:-1;2894:6:76;;2802:104;;;;-1:-1:-1;;;;;3521:32:87;;;3503:51;;3491:2;3476:18;2802:104:76;3357:203:87;1629:144:76;;;;;;:::i;:::-;;:::i;3345:116::-;;;;;;:::i;:::-;;:::i;2077:305::-;;;;;;:::i;:::-;;:::i;2944:169::-;;;;;;:::i;:::-;;:::i;3663:183::-;3748:12;-1:-1:-1;;;;;1196:6:76;1179:23;1187:4;1179:23;1175:72;;1211:36;;-1:-1:-1;;;1211:36:76;;;;;;;;;;;3151:156;-1:-1:-1;;;;;1196:6:76;1179:23;1187:4;1179:23;1175:72;;1211:36;;-1:-1:-1;;;1211:36:76;;;;;;;;;;;1175:72;3235:11;;3231:71:::1;;3248:54;::::0;-1:-1:-1;;;3248:54:76;;-1:-1:-1;;;;;3271:6:76::1;4110:32:87::0;;3248:54:76::1;::::0;::::1;4092:51:87::0;4159:18;;;4152:34;;;3296:4:76::1;4202:18:87::0;;;4195:60;3248:5:76::1;:14;::::0;::::1;::::0;4065:18:87;;3248:54:76::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;3231:71;3151:156:::0;:::o;2420:344::-;2501:7;2516:36;2555:14;:12;:14::i;:::-;2580:21;;9029:9:60;2580:21:76;;-1:-1:-1;;;;9029:24:60;9028:31;;2579:71:76;;-1:-1:-1;2617:21:76;;10311:9:60;-1:-1:-1;;;10311:24:60;10310:31;;2617:33:76;2579:108;;;-1:-1:-1;2654:21:76;;9670:9:60;9682:12;9670:24;9669:31;;2654:33:76;2575:128;;;-1:-1:-1;2702:1:76;;2420:344;-1:-1:-1;;2420:344:76:o;2575:128::-;-1:-1:-1;;;2742:17:76;2420:344;-1:-1:-1;;2420:344:76:o;1811:228::-;-1:-1:-1;;;;;1196:6:76;1179:23;1187:4;1179:23;1175:72;;1211:36;;-1:-1:-1;;;1211:36:76;;;;;;;;;;;1175:72;1889:13:::1;1912:14;:12;:14::i;:::-;:28;;;1889:52;;1952:5;1951:6;:46;;;;-1:-1:-1::0;1961:31:76::1;::::0;-1:-1:-1;;;1961:31:76;;1986:4:::1;1961:31;::::0;::::1;3503:51:87::0;-1:-1:-1;;;;;1961:16:76;::::1;::::0;::::1;::::0;3476:18:87;;1961:31:76::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;:36:::0;::::1;1951:46;1947:87;;;2006:28;;-1:-1:-1::0;;;2006:28:76::1;;;;;;;;;;;1629:144:::0;-1:-1:-1;;;;;1196:6:76;1179:23;1187:4;1179:23;1175:72;;1211:36;;-1:-1:-1;;;1211:36:76;;;;;;;;;;;1175:72;1719:15;;:20;1715:53:::1;;1748:20;;-1:-1:-1::0;;;1748:20:76::1;;;;;;;;;;;3345:116:::0;-1:-1:-1;;;;;1196:6:76;1179:23;1187:4;1179:23;1175:72;;1211:36;;-1:-1:-1;;;1211:36:76;;;;;;;;;;;1175:72;3428:11;;3424:32:::1;;3441:15;3449:6;3441:7;:15::i;2077:305::-:0;2155:7;2170:36;2209:14;:12;:14::i;:::-;2234:21;;9029:9:60;2234:21:76;;-1:-1:-1;;;;9029:24:60;9028:31;;2233:71:76;;-1:-1:-1;2271:21:76;;10311:9:60;-1:-1:-1;;;10311:24:60;10310:31;;2271:33:76;2229:85;;;-1:-1:-1;2313:1:76;;2077:305;-1:-1:-1;;2077:305:76:o;2229:85::-;2334:21;;;;2327:50;;-1:-1:-1;;;2327:50:76;;-1:-1:-1;;;;;3521:32:87;;;2327:50:76;;;3503:51:87;2327:39:76;;;;;;3476:18:87;;2327:50:76;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;2320:57;2077:305;-1:-1:-1;;;2077:305:76:o;2944:169::-;3022:14;3058;:12;:14::i;:::-;:28;;;3051:57;;-1:-1:-1;;;3051:57:76;;-1:-1:-1;;;;;3521:32:87;;;3051:57:76;;;3503:51:87;3051:46:76;;;;;;3476:18:87;;3051:57:76;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;3044:64;2944:169;-1:-1:-1;;2944:169:76:o;1459:132::-;-1:-1:-1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1549:37:76;;-1:-1:-1;;;1549:37:76;;-1:-1:-1;;;;;1578:6:76;3521:32:87;;1549:37:76;;;3503:51:87;1549:5:76;:20;;;;3476:18:87;;1549:37:76;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;1542:44;;1459:132;:::o;3465:160::-;3513:46;;-1:-1:-1;;;3513:46:76;;-1:-1:-1;;;;;3544:5:76;7427:32:87;;3513:46:76;;;7409:51:87;7476:18;;;7469:34;;;3520:6:76;3513:22;;;;7382:18:87;;3513:46:76;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;-1:-1:-1;3565:55:76;;-1:-1:-1;;;3565:55:76;;-1:-1:-1;;;;;3586:6:76;8020:32:87;;3565:55:76;;;8002:51:87;8069:18;;;8062:34;;;3611:4:76;8112:18:87;;;8105:60;-1:-1:-1;8181:18:87;;;8174:47;3565:5:76;:12;;;;7974:19:87;;3565:55:76;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;3465:160;:::o;14:127:87:-;75:10;70:3;66:20;63:1;56:31;106:4;103:1;96:15;130:4;127:1;120:15;146:247;213:2;207:9;255:3;243:16;;289:18;274:34;;310:22;;;271:62;268:88;;;336:18;;:::i;:::-;372:2;365:22;146:247;:::o;398:745::-;440:5;493:3;486:4;478:6;474:17;470:27;460:55;;511:1;508;501:12;460:55;551:6;538:20;581:18;573:6;570:30;567:56;;;603:18;;:::i;:::-;672:2;666:9;764:2;726:17;;-1:-1:-1;;722:31:87;;;755:2;718:40;714:54;702:67;;799:18;784:34;;820:22;;;781:62;778:88;;;846:18;;:::i;:::-;882:2;875:22;906;;;947:19;;;968:4;943:30;940:39;-1:-1:-1;937:59:87;;;992:1;989;982:12;937:59;1056:6;1049:4;1041:6;1037:17;1030:4;1022:6;1018:17;1005:58;1111:1;1083:19;;;1104:4;1079:30;1072:41;;;;1087:6;398:745;-1:-1:-1;;;398:745:87:o;1148:477::-;1223:6;1231;1284:2;1272:9;1263:7;1259:23;1255:32;1252:52;;;1300:1;1297;1290:12;1252:52;1339:9;1326:23;1389:4;1382:5;1378:16;1371:5;1368:27;1358:55;;1409:1;1406;1399:12;1358:55;1432:5;-1:-1:-1;1488:2:87;1473:18;;1460:32;1515:18;1504:30;;1501:50;;;1547:1;1544;1537:12;1501:50;1570:49;1611:7;1602:6;1591:9;1587:22;1570:49;:::i;:::-;1560:59;;;1148:477;;;;;:::o;1630:416::-;1777:2;1766:9;1759:21;1740:4;1809:6;1803:13;1852:6;1847:2;1836:9;1832:18;1825:34;1911:6;1906:2;1898:6;1894:15;1889:2;1878:9;1874:18;1868:50;1967:1;1962:2;1953:6;1942:9;1938:22;1934:31;1927:42;2037:2;2030;2026:7;2021:2;2013:6;2009:15;2005:29;1994:9;1990:45;1986:54;1978:62;;;1630:416;;;;:::o;2051:180::-;2110:6;2163:2;2151:9;2142:7;2138:23;2134:32;2131:52;;;2179:1;2176;2169:12;2131:52;-1:-1:-1;2202:23:87;;2051:180;-1:-1:-1;2051:180:87:o;2236:131::-;-1:-1:-1;;;;;2311:31:87;;2301:42;;2291:70;;2357:1;2354;2347:12;2372:247;2431:6;2484:2;2472:9;2463:7;2459:23;2455:32;2452:52;;;2500:1;2497;2490:12;2452:52;2539:9;2526:23;2558:31;2583:5;2558:31;:::i;2806:118::-;2892:5;2885:13;2878:21;2871:5;2868:32;2858:60;;2914:1;2911;2904:12;2929:241;2985:6;3038:2;3026:9;3017:7;3013:23;3009:32;3006:52;;;3054:1;3051;3044:12;3006:52;3093:9;3080:23;3112:28;3134:5;3112:28;:::i;3565:320::-;3633:6;3686:2;3674:9;3665:7;3661:23;3657:32;3654:52;;;3702:1;3699;3692:12;3654:52;3742:9;3729:23;3775:18;3767:6;3764:30;3761:50;;;3807:1;3804;3797:12;3761:50;3830:49;3871:7;3862:6;3851:9;3847:22;3830:49;:::i;:::-;3820:59;3565:320;-1:-1:-1;;;;3565:320:87:o;4266:230::-;4336:6;4389:2;4377:9;4368:7;4364:23;4360:32;4357:52;;;4405:1;4402;4395:12;4357:52;-1:-1:-1;4450:16:87;;4266:230;-1:-1:-1;4266:230:87:o;4501:498::-;4582:5;4630:4;4618:9;4613:3;4609:19;4605:30;4602:50;;;4648:1;4645;4638:12;4602:50;4701:2;4695:9;4743:4;4731:17;;4778:18;4763:34;;4799:22;;;4760:62;4757:88;;;4825:18;;:::i;:::-;4861:2;4854:22;4945:16;;4970:23;;-1:-1:-1;4894:6:87;4501:498;-1:-1:-1;4501:498:87:o;5004:192::-;5083:13;;5136:34;5125:46;;5115:57;;5105:85;;5186:1;5183;5176:12;5105:85;5004:192;;;:::o;5201:169::-;5279:13;;5332:12;5321:24;;5311:35;;5301:63;;5360:1;5357;5350:12;5375:163;5453:13;;5506:6;5495:18;;5485:29;;5475:57;;5528:1;5525;5518:12;5543:138;5622:13;;5644:31;5622:13;5644:31;:::i;5686:1544::-;5786:6;5846:3;5834:9;5825:7;5821:23;5817:33;5862:2;5859:22;;;5877:1;5874;5867:12;5859:22;-1:-1:-1;5919:17:87;;:::i;:::-;5959:72;6023:7;6012:9;5959:72;:::i;:::-;5952:5;5945:87;6064:49;6109:2;6098:9;6094:18;6064:49;:::i;:::-;6059:2;6052:5;6048:14;6041:73;6146:49;6191:2;6180:9;6176:18;6146:49;:::i;:::-;6141:2;6134:5;6130:14;6123:73;6228:49;6273:2;6262:9;6258:18;6228:49;:::i;:::-;6223:2;6216:5;6212:14;6205:73;6311:50;6356:3;6345:9;6341:19;6311:50;:::i;:::-;6305:3;6298:5;6294:15;6287:75;6395:50;6440:3;6429:9;6425:19;6395:50;:::i;:::-;6389:3;6382:5;6378:15;6371:75;6479:49;6523:3;6512:9;6508:19;6479:49;:::i;:::-;6473:3;6466:5;6462:15;6455:74;6562:49;6606:3;6595:9;6591:19;6562:49;:::i;:::-;6556:3;6549:5;6545:15;6538:74;6645:50;6690:3;6679:9;6675:19;6645:50;:::i;:::-;6639:3;6632:5;6628:15;6621:75;6729:50;6774:3;6763:9;6759:19;6729:50;:::i;:::-;6723:3;6716:5;6712:15;6705:75;6813:50;6858:3;6847:9;6843:19;6813:50;:::i;:::-;6807:3;6800:5;6796:15;6789:75;6897:50;6942:3;6931:9;6927:19;6897:50;:::i;:::-;6891:3;6884:5;6880:15;6873:75;6981:50;7026:3;7015:9;7011:19;6981:50;:::i;:::-;6975:3;6968:5;6964:15;6957:75;7065:50;7110:3;7099:9;7095:19;7065:50;:::i;:::-;7059:3;7052:5;7048:15;7041:75;7149:50;7194:3;7183:9;7179:19;7149:50;:::i;:::-;7143:3;7132:15;;7125:75;7136:5;5686:1544;-1:-1:-1;;;5686:1544:87:o;7514:245::-;7581:6;7634:2;7622:9;7613:7;7609:23;7605:32;7602:52;;;7650:1;7647;7640:12;7602:52;7682:9;7676:16;7701:28;7723:5;7701:28;:::i"},"methodIdentifiers":{"asset(address)":"9c4667a2","connect(bytes)":"9cd47128","deposit(uint256)":"b6b55f25","disconnect(bool)":"5a117456","forwardEntryPoint(uint8,bytes)":"0981b1c2","maxDeposit(address)":"402d267d","maxWithdraw(address)":"ce96cb77","storageSlot()":"5b9a4c35","totalAssets(address)":"f3e0ffbf","withdraw(uint256)":"2e1a7d4d"}},"metadata":"{\"compiler\":{\"version\":\"0.8.30+commit.73712a01\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"inputs\":[{\"internalType\":\"contract IERC20\",\"name\":\"asset_\",\"type\":\"address\"},{\"internalType\":\"contract IPool\",\"name\":\"aave_\",\"type\":\"address\"}],\"stateMutability\":\"nonpayable\",\"type\":\"constructor\"},{\"inputs\":[],\"name\":\"CanBeCalledOnlyThroughDelegateCall\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"CannotDisconnectWithAssets\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"NoExtraDataAllowed\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"ReserveNotFoundInAave\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"name\":\"asset\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes\",\"name\":\"initData\",\"type\":\"bytes\"}],\"name\":\"connect\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"assets\",\"type\":\"uint256\"}],\"name\":\"deposit\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bool\",\"name\":\"force\",\"type\":\"bool\"}],\"name\":\"disconnect\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint8\",\"name\":\"\",\"type\":\"uint8\"},{\"internalType\":\"bytes\",\"name\":\"\",\"type\":\"bytes\"}],\"name\":\"forwardEntryPoint\",\"outputs\":[{\"internalType\":\"bytes\",\"name\":\"\",\"type\":\"bytes\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"name\":\"maxDeposit\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"contract_\",\"type\":\"address\"}],\"name\":\"maxWithdraw\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"storageSlot\",\"outputs\":[{\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"contract_\",\"type\":\"address\"}],\"name\":\"totalAssets\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"assets\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"assets\",\"type\":\"uint256\"}],\"name\":\"withdraw\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"}],\"devdoc\":{\"author\":\"Ensuro\",\"custom:security-contact\":\"security@ensuro.co\",\"details\":\"Strategy that invests/deinvests into AaveV3 on each deposit/withdraw.\",\"kind\":\"dev\",\"methods\":{\"asset(address)\":{\"details\":\"The address of the underlying token used for accounting, depositing, and withdrawing. It must be the same      as `IERC4626(contract_).asset()` when dealing with vaults.\",\"params\":{\"contract_\":\"The address of the vault contract that owns the assets.\"}},\"connect(bytes)\":{\"details\":\"Called when the strategy is plugged into the vault. Initializes the strategy storage and can do validations\",\"params\":{\"initData\":\"Initialization data for the strategy. Must be parsed by the strategy, since the format is                 strategy specific\"}},\"deposit(uint256)\":{\"details\":\"Deposits a given amount of assets into the strategy. It MUST revert if it can't deposit the specified amount.      It assumes the assets are already in the contract (owned by address(this)).\",\"params\":{\"assets\":\"The amount of assets to deposit. Should be <= maxDeposit.\"}},\"disconnect(bool)\":{\"details\":\"Called when the strategy is un-plugged from the vault. Should revert if there are still assets in the      strategy, unless force==true.\",\"params\":{\"force\":\"If true, disconnect should not fail if assets remain in the strategy. Otherwise, disconnect              MUST fail if totalAssets() != 0.\"}},\"forwardEntryPoint(uint8,bytes)\":{\"details\":\"Receives an external call to execute a custom method of action in the strategy. Can be used for harvesting      rewards or other tasks. It's called with delegatecall from the calling vault. The calling vault SHOULD      do the access control validation, since the strategy normally won't do it.\",\"params\":{\"method\":\"An id of the method or action to call/execute. It's recommended to define an enum and convert the               the uint8 value into the enum.\",\"params\":\"Params for the method or action. Parsed by the strategy, it might differ from one or other method.\"}},\"maxDeposit(address)\":{\"details\":\"Returns the max amount that can be deposited into the strategy.\",\"params\":{\"contract_\":\"The address of the vault contract that owns the assets and where the strategy is plugged\"}},\"maxWithdraw(address)\":{\"details\":\"Returns the max amount that can be withdrawn from the strategy.\",\"params\":{\"contract_\":\"The address of the vault contract that owns the assets and where the strategy is plugged\"}},\"totalAssets(address)\":{\"details\":\"Returns the number of assets under management of the investment strategy for a given contract.\",\"params\":{\"contract_\":\"The address of the vault contract that owns the assets and where the strategy is plugged\"}},\"withdraw(uint256)\":{\"details\":\"Withdraws a given amount of assets from the strategy. It MUST revert if it can't withdraw the specified amount.      Leaves the withdrawn assets in the contract (owned by address(this)).\",\"params\":{\"assets\":\"The amount of assets to withdraw. Should be <= maxWithdraw.\"}}},\"stateVariables\":{\"storageSlot\":{\"details\":\"Returns the slot where the data of the strategy can be stored.       Typically it would return `InvestStrategyClient.makeStorageSlot(<strategyAddress>)`\"}},\"title\":\"AaveV3InvestStrategy\",\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{},\"version\":1}},\"settings\":{\"compilationTarget\":{\"contracts/strategies/AaveV3InvestStrategy.sol\":\"AaveV3InvestStrategy\"},\"evmVersion\":\"prague\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"enabled\":true,\"runs\":200},\"remappings\":[]},\"sources\":{\"@openzeppelin/contracts/interfaces/IERC20.sol\":{\"keccak256\":\"0x1a6221315ce0307746c2c4827c125d821ee796c74a676787762f4778671d4f44\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://1bb2332a7ee26dd0b0de9b7fe266749f54820c99ab6a3bcb6f7e6b751d47ee2d\",\"dweb:/ipfs/QmcRWpaBeCYkhy68PR3B4AgD7asuQk7PwkWxrvJbZcikLF\"]},\"@openzeppelin/contracts/token/ERC20/IERC20.sol\":{\"keccak256\":\"0x74ed01eb66b923d0d0cfe3be84604ac04b76482a55f9dd655e1ef4d367f95bc2\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://5282825a626cfe924e504274b864a652b0023591fa66f06a067b25b51ba9b303\",\"dweb:/ipfs/QmeCfPykghhMc81VJTrHTC7sF6CRvaA1FXVq2pJhwYp1dV\"]},\"@openzeppelin/contracts/token/ERC20/extensions/IERC20Metadata.sol\":{\"keccak256\":\"0xd6fa4088198f04eef10c5bce8a2f4d60554b7ec4b987f684393c01bf79b94d9f\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://f95ee0bbd4dd3ac730d066ba3e785ded4565e890dbec2fa7d3b9fe3bad9d0d6e\",\"dweb:/ipfs/QmSLr6bHkPFWT7ntj34jmwfyskpwo97T9jZUrk5sz3sdtR\"]},\"@openzeppelin/contracts/utils/Address.sol\":{\"keccak256\":\"0x0fa9e0d3a859900b5a46f70a03c73adf259603d5e05027a37fe0b45529d85346\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://c2add4da0240c9f2ce47649c8bb6b11b40e98cf6f88b8bdc76b2704e89391710\",\"dweb:/ipfs/QmNQTwF2uVzu4CRtNxr8bxyP9XuW6VsZuo2Nr4KR2bZr3d\"]},\"@openzeppelin/contracts/utils/Errors.sol\":{\"keccak256\":\"0x6afa713bfd42cf0f7656efa91201007ac465e42049d7de1d50753a373648c123\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://ba1d02f4847670a1b83dec9f7d37f0b0418d6043447b69f3a29a5f9efc547fcf\",\"dweb:/ipfs/QmQ7iH2keLNUKgq2xSWcRmuBE5eZ3F5whYAkAGzCNNoEWB\"]},\"@openzeppelin/contracts/utils/LowLevelCall.sol\":{\"keccak256\":\"0x5b4802a4352474792df3107e961d1cc593e47b820c14f69d3505cb28f5a6a583\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://a6f86fd01f829499fe0545ff5dda07d4521988e88bfe0bf801fc15650921ed56\",\"dweb:/ipfs/QmUUKu4ZDffHAmfkf3asuQfmLTyfpuy2Amdncc3SqfzKPG\"]},\"contracts/InvestStrategyClient.sol\":{\"keccak256\":\"0x3c8fff73042023381eb750ba13a9066475d208e99bde568e1243f0e1e282c894\",\"license\":\"Apache-2.0\",\"urls\":[\"bzz-raw://3f8283ffa5c512e482b0065d9391c7060ebc1fa5968c55e6a05958480b7facb6\",\"dweb:/ipfs/QmT4N9Z19b6AUXpXtg23d3ijBExyKuRJBeQ3o8WCobgpfT\"]},\"contracts/dependencies/aave-v3/DataTypes.sol\":{\"keccak256\":\"0x771cb99fd8519c974f7e12130387c4d9a997a6e8d0ac10e4303b842fe53efa88\",\"license\":\"BUSL-1.1\",\"urls\":[\"bzz-raw://0f41689d1d58bc13678c749bae8830f5a8b19b89cd135e962bf07d483350f828\",\"dweb:/ipfs/QmQSNGDxjYGqT1GU2CZzsWUTNcAtcfkg1jDGTH516nCAfN\"]},\"contracts/dependencies/aave-v3/Errors.sol\":{\"keccak256\":\"0x61757945ed506349f2cec8b99806124ef17f70644faba9860fb134df8ca34e86\",\"license\":\"BUSL-1.1\",\"urls\":[\"bzz-raw://a405589e8bb12568d3d4dbf936bcf40c43964170f3bbf380483e9df4d73f2cf7\",\"dweb:/ipfs/QmXCtAp2iom96rZnQWGDehxuPszgn6SMuB3mJcHzCq9uwx\"]},\"contracts/dependencies/aave-v3/IPool.sol\":{\"keccak256\":\"0x9672a8147a2f72600b78b0f08a0f9f6ea67c7a855905ad5cd0a5254cd47be3f3\",\"license\":\"AGPL-3.0\",\"urls\":[\"bzz-raw://2abd09105b2578424a83151d1cb16fbb043b9368884e1136c8edf28ecd71ebb0\",\"dweb:/ipfs/QmSU8JuTMypx1Abr7gyyAchWKwNYKkZrKWW8Kd8qHVCrXs\"]},\"contracts/dependencies/aave-v3/IPoolAddressesProvider.sol\":{\"keccak256\":\"0x2f70daa98416d61fd3128b1ee05f96852d84074689a2c2132a7fd587c5c9e3f0\",\"license\":\"AGPL-3.0\",\"urls\":[\"bzz-raw://7843e6da934079a714ab1d4a67a81108d3722067bde86ae2a36b6a288ab4e353\",\"dweb:/ipfs/QmWa6zUZsKJa7wKY5msQCuN7vYxi5H4QJwnp6gF2QTWfPH\"]},\"contracts/dependencies/aave-v3/ReserveConfiguration.sol\":{\"keccak256\":\"0x5b10e425dc3964b2c0add1d965ec9bfd51b5d4287f0fa060203e8822c8050ba4\",\"license\":\"BUSL-1.1\",\"urls\":[\"bzz-raw://f2ed401c261e8e0e6c455f16a941c28f7bb49c5f2b51e0e169b4003c72bbd1c3\",\"dweb:/ipfs/QmYtuHT71SgASLKWNydM89qrPvEApiEDyiw3xm3EzgUX7x\"]},\"contracts/interfaces/IInvestStrategy.sol\":{\"keccak256\":\"0x6800a1f147def2252b79629150ce9cd87e914ca5a966f1035fbca6328bbc9c4b\",\"license\":\"Apache-2.0\",\"urls\":[\"bzz-raw://2e9260604e0ffcf405819f85fee4124d9a090cf716f389ff92cf76a2837a2e42\",\"dweb:/ipfs/QmVdKEW8C6MDyiiUfjBxEMTWjfPrBJadptpxh9L2uCebDK\"]},\"contracts/strategies/AaveV3InvestStrategy.sol\":{\"keccak256\":\"0x004a45c890f36838133a7b3ebd8e551509743e6240f311009af07744734f8774\",\"license\":\"Apache-2.0\",\"urls\":[\"bzz-raw://baa2b151c0ee7d58681b421b1af64805ec141052f74bace8e05096707caa21a5\",\"dweb:/ipfs/QmV1UDC12fR6FMqcszVdJp3rd2f9TVRzdseDVnhZVkVKXz\"]}},\"version\":1}","storageLayout":{"storage":[],"types":null}}},"contracts/strategies/ChainlinkSwapAssetInvestStrategy.sol":{"ChainlinkSwapAssetInvestStrategy":{"abi":[{"inputs":[{"internalType":"contract IERC20Metadata","name":"asset_","type":"address"},{"internalType":"contract IERC20Metadata","name":"investAsset_","type":"address"},{"internalType":"contract AggregatorV3Interface","name":"assetOracle_","type":"address"},{"internalType":"contract AggregatorV3Interface","name":"investAssetOracle_","type":"address"},{"internalType":"uint256","name":"priceTolerance_","type":"uint256"}],"stateMutability":"nonpayable","type":"constructor"},{"inputs":[],"name":"CanBeCalledOnlyThroughDelegateCall","type":"error"},{"inputs":[],"name":"CannotDisconnectWithAssets","type":"error"},{"inputs":[],"name":"InvalidAsset","type":"error"},{"inputs":[{"internalType":"int256","name":"chainlinkAnswer","type":"int256"}],"name":"InvalidPrice","type":"error"},{"inputs":[],"name":"NoExtraDataAllowed","type":"error"},{"inputs":[{"internalType":"uint256","name":"minUpdateAt","type":"uint256"},{"internalType":"uint256","name":"updatedAt","type":"uint256"}],"name":"PriceTooOld","type":"error"},{"anonymous":false,"inputs":[{"components":[{"internalType":"enum SwapLibrary.SwapProtocol","name":"protocol","type":"uint8"},{"internalType":"uint256","name":"maxSlippage","type":"uint256"},{"internalType":"bytes","name":"customParams","type":"bytes"}],"indexed":false,"internalType":"struct SwapLibrary.SwapConfig","name":"oldConfig","type":"tuple"},{"components":[{"internalType":"enum SwapLibrary.SwapProtocol","name":"protocol","type":"uint8"},{"internalType":"uint256","name":"maxSlippage","type":"uint256"},{"internalType":"bytes","name":"customParams","type":"bytes"}],"indexed":false,"internalType":"struct SwapLibrary.SwapConfig","name":"newConfig","type":"tuple"}],"name":"SwapConfigChanged","type":"event"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"asset","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"assetOracle","outputs":[{"internalType":"contract AggregatorV3Interface","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"bytes","name":"initData","type":"bytes"}],"name":"connect","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"assets","type":"uint256"}],"name":"deposit","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bool","name":"force","type":"bool"}],"name":"disconnect","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint8","name":"method","type":"uint8"},{"internalType":"bytes","name":"params","type":"bytes"}],"name":"forwardEntryPoint","outputs":[{"internalType":"bytes","name":"","type":"bytes"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"contract_","type":"address"}],"name":"getSwapConfig","outputs":[{"components":[{"internalType":"enum SwapLibrary.SwapProtocol","name":"protocol","type":"uint8"},{"internalType":"uint256","name":"maxSlippage","type":"uint256"},{"internalType":"bytes","name":"customParams","type":"bytes"}],"internalType":"struct SwapLibrary.SwapConfig","name":"","type":"tuple"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"investAsset","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"investAssetOracle","outputs":[{"internalType":"contract AggregatorV3Interface","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"investAssetPrice","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"maxDeposit","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"contract_","type":"address"}],"name":"maxWithdraw","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"priceTolerance","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"storageSlot","outputs":[{"internalType":"bytes32","name":"","type":"bytes32"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"contract_","type":"address"}],"name":"totalAssets","outputs":[{"internalType":"uint256","name":"assets","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"assets","type":"uint256"}],"name":"withdraw","outputs":[],"stateMutability":"nonpayable","type":"function"}],"evm":{"bytecode":{"functionDebugData":{"@_22273":{"entryPoint":null,"id":22273,"parameterSlots":5,"returnSlots":0},"@_24037":{"entryPoint":null,"id":24037,"parameterSlots":2,"returnSlots":0},"@makeStorageSlot_15638":{"entryPoint":null,"id":15638,"parameterSlots":1,"returnSlots":1},"abi_decode_tuple_t_contract$_IERC20Metadata_$9411t_contract$_IERC20Metadata_$9411t_contract$_AggregatorV3Interface_$20542t_contract$_AggregatorV3Interface_$20542t_uint256_fromMemory":{"entryPoint":504,"id":null,"parameterSlots":2,"returnSlots":5},"abi_decode_tuple_t_uint8_fromMemory":{"entryPoint":607,"id":null,"parameterSlots":2,"returnSlots":1},"abi_encode_tuple_t_stringliteral_4fed0cd3539a36e00a34a6c026c2615824c9ad47da5ef65e8372c7e721c05d79_t_contract$_IInvestStrategy_$20725__to_t_string_memory_ptr_t_address__fromStack_reversed":{"entryPoint":null,"id":null,"parameterSlots":2,"returnSlots":1},"validator_revert_contract_IERC20Metadata":{"entryPoint":481,"id":null,"parameterSlots":1,"returnSlots":0}},"generatedSources":[{"ast":{"nativeSrc":"0:1818:87","nodeType":"YulBlock","src":"0:1818:87","statements":[{"nativeSrc":"6:3:87","nodeType":"YulBlock","src":"6:3:87","statements":[]},{"body":{"nativeSrc":"75:86:87","nodeType":"YulBlock","src":"75:86:87","statements":[{"body":{"nativeSrc":"139:16:87","nodeType":"YulBlock","src":"139:16:87","statements":[{"expression":{"arguments":[{"kind":"number","nativeSrc":"148:1:87","nodeType":"YulLiteral","src":"148:1:87","type":"","value":"0"},{"kind":"number","nativeSrc":"151:1:87","nodeType":"YulLiteral","src":"151:1:87","type":"","value":"0"}],"functionName":{"name":"revert","nativeSrc":"141:6:87","nodeType":"YulIdentifier","src":"141:6:87"},"nativeSrc":"141:12:87","nodeType":"YulFunctionCall","src":"141:12:87"},"nativeSrc":"141:12:87","nodeType":"YulExpressionStatement","src":"141:12:87"}]},"condition":{"arguments":[{"arguments":[{"name":"value","nativeSrc":"98:5:87","nodeType":"YulIdentifier","src":"98:5:87"},{"arguments":[{"name":"value","nativeSrc":"109:5:87","nodeType":"YulIdentifier","src":"109:5:87"},{"arguments":[{"arguments":[{"kind":"number","nativeSrc":"124:3:87","nodeType":"YulLiteral","src":"124:3:87","type":"","value":"160"},{"kind":"number","nativeSrc":"129:1:87","nodeType":"YulLiteral","src":"129:1:87","type":"","value":"1"}],"functionName":{"name":"shl","nativeSrc":"120:3:87","nodeType":"YulIdentifier","src":"120:3:87"},"nativeSrc":"120:11:87","nodeType":"YulFunctionCall","src":"120:11:87"},{"kind":"number","nativeSrc":"133:1:87","nodeType":"YulLiteral","src":"133:1:87","type":"","value":"1"}],"functionName":{"name":"sub","nativeSrc":"116:3:87","nodeType":"YulIdentifier","src":"116:3:87"},"nativeSrc":"116:19:87","nodeType":"YulFunctionCall","src":"116:19:87"}],"functionName":{"name":"and","nativeSrc":"105:3:87","nodeType":"YulIdentifier","src":"105:3:87"},"nativeSrc":"105:31:87","nodeType":"YulFunctionCall","src":"105:31:87"}],"functionName":{"name":"eq","nativeSrc":"95:2:87","nodeType":"YulIdentifier","src":"95:2:87"},"nativeSrc":"95:42:87","nodeType":"YulFunctionCall","src":"95:42:87"}],"functionName":{"name":"iszero","nativeSrc":"88:6:87","nodeType":"YulIdentifier","src":"88:6:87"},"nativeSrc":"88:50:87","nodeType":"YulFunctionCall","src":"88:50:87"},"nativeSrc":"85:70:87","nodeType":"YulIf","src":"85:70:87"}]},"name":"validator_revert_contract_IERC20Metadata","nativeSrc":"14:147:87","nodeType":"YulFunctionDefinition","parameters":[{"name":"value","nativeSrc":"64:5:87","nodeType":"YulTypedName","src":"64:5:87","type":""}],"src":"14:147:87"},{"body":{"nativeSrc":"423:631:87","nodeType":"YulBlock","src":"423:631:87","statements":[{"body":{"nativeSrc":"470:16:87","nodeType":"YulBlock","src":"470:16:87","statements":[{"expression":{"arguments":[{"kind":"number","nativeSrc":"479:1:87","nodeType":"YulLiteral","src":"479:1:87","type":"","value":"0"},{"kind":"number","nativeSrc":"482:1:87","nodeType":"YulLiteral","src":"482:1:87","type":"","value":"0"}],"functionName":{"name":"revert","nativeSrc":"472:6:87","nodeType":"YulIdentifier","src":"472:6:87"},"nativeSrc":"472:12:87","nodeType":"YulFunctionCall","src":"472:12:87"},"nativeSrc":"472:12:87","nodeType":"YulExpressionStatement","src":"472:12:87"}]},"condition":{"arguments":[{"arguments":[{"name":"dataEnd","nativeSrc":"444:7:87","nodeType":"YulIdentifier","src":"444:7:87"},{"name":"headStart","nativeSrc":"453:9:87","nodeType":"YulIdentifier","src":"453:9:87"}],"functionName":{"name":"sub","nativeSrc":"440:3:87","nodeType":"YulIdentifier","src":"440:3:87"},"nativeSrc":"440:23:87","nodeType":"YulFunctionCall","src":"440:23:87"},{"kind":"number","nativeSrc":"465:3:87","nodeType":"YulLiteral","src":"465:3:87","type":"","value":"160"}],"functionName":{"name":"slt","nativeSrc":"436:3:87","nodeType":"YulIdentifier","src":"436:3:87"},"nativeSrc":"436:33:87","nodeType":"YulFunctionCall","src":"436:33:87"},"nativeSrc":"433:53:87","nodeType":"YulIf","src":"433:53:87"},{"nativeSrc":"495:29:87","nodeType":"YulVariableDeclaration","src":"495:29:87","value":{"arguments":[{"name":"headStart","nativeSrc":"514:9:87","nodeType":"YulIdentifier","src":"514:9:87"}],"functionName":{"name":"mload","nativeSrc":"508:5:87","nodeType":"YulIdentifier","src":"508:5:87"},"nativeSrc":"508:16:87","nodeType":"YulFunctionCall","src":"508:16:87"},"variables":[{"name":"value","nativeSrc":"499:5:87","nodeType":"YulTypedName","src":"499:5:87","type":""}]},{"expression":{"arguments":[{"name":"value","nativeSrc":"574:5:87","nodeType":"YulIdentifier","src":"574:5:87"}],"functionName":{"name":"validator_revert_contract_IERC20Metadata","nativeSrc":"533:40:87","nodeType":"YulIdentifier","src":"533:40:87"},"nativeSrc":"533:47:87","nodeType":"YulFunctionCall","src":"533:47:87"},"nativeSrc":"533:47:87","nodeType":"YulExpressionStatement","src":"533:47:87"},{"nativeSrc":"589:15:87","nodeType":"YulAssignment","src":"589:15:87","value":{"name":"value","nativeSrc":"599:5:87","nodeType":"YulIdentifier","src":"599:5:87"},"variableNames":[{"name":"value0","nativeSrc":"589:6:87","nodeType":"YulIdentifier","src":"589:6:87"}]},{"nativeSrc":"613:40:87","nodeType":"YulVariableDeclaration","src":"613:40:87","value":{"arguments":[{"arguments":[{"name":"headStart","nativeSrc":"638:9:87","nodeType":"YulIdentifier","src":"638:9:87"},{"kind":"number","nativeSrc":"649:2:87","nodeType":"YulLiteral","src":"649:2:87","type":"","value":"32"}],"functionName":{"name":"add","nativeSrc":"634:3:87","nodeType":"YulIdentifier","src":"634:3:87"},"nativeSrc":"634:18:87","nodeType":"YulFunctionCall","src":"634:18:87"}],"functionName":{"name":"mload","nativeSrc":"628:5:87","nodeType":"YulIdentifier","src":"628:5:87"},"nativeSrc":"628:25:87","nodeType":"YulFunctionCall","src":"628:25:87"},"variables":[{"name":"value_1","nativeSrc":"617:7:87","nodeType":"YulTypedName","src":"617:7:87","type":""}]},{"expression":{"arguments":[{"name":"value_1","nativeSrc":"703:7:87","nodeType":"YulIdentifier","src":"703:7:87"}],"functionName":{"name":"validator_revert_contract_IERC20Metadata","nativeSrc":"662:40:87","nodeType":"YulIdentifier","src":"662:40:87"},"nativeSrc":"662:49:87","nodeType":"YulFunctionCall","src":"662:49:87"},"nativeSrc":"662:49:87","nodeType":"YulExpressionStatement","src":"662:49:87"},{"nativeSrc":"720:17:87","nodeType":"YulAssignment","src":"720:17:87","value":{"name":"value_1","nativeSrc":"730:7:87","nodeType":"YulIdentifier","src":"730:7:87"},"variableNames":[{"name":"value1","nativeSrc":"720:6:87","nodeType":"YulIdentifier","src":"720:6:87"}]},{"nativeSrc":"746:40:87","nodeType":"YulVariableDeclaration","src":"746:40:87","value":{"arguments":[{"arguments":[{"name":"headStart","nativeSrc":"771:9:87","nodeType":"YulIdentifier","src":"771:9:87"},{"kind":"number","nativeSrc":"782:2:87","nodeType":"YulLiteral","src":"782:2:87","type":"","value":"64"}],"functionName":{"name":"add","nativeSrc":"767:3:87","nodeType":"YulIdentifier","src":"767:3:87"},"nativeSrc":"767:18:87","nodeType":"YulFunctionCall","src":"767:18:87"}],"functionName":{"name":"mload","nativeSrc":"761:5:87","nodeType":"YulIdentifier","src":"761:5:87"},"nativeSrc":"761:25:87","nodeType":"YulFunctionCall","src":"761:25:87"},"variables":[{"name":"value_2","nativeSrc":"750:7:87","nodeType":"YulTypedName","src":"750:7:87","type":""}]},{"expression":{"arguments":[{"name":"value_2","nativeSrc":"836:7:87","nodeType":"YulIdentifier","src":"836:7:87"}],"functionName":{"name":"validator_revert_contract_IERC20Metadata","nativeSrc":"795:40:87","nodeType":"YulIdentifier","src":"795:40:87"},"nativeSrc":"795:49:87","nodeType":"YulFunctionCall","src":"795:49:87"},"nativeSrc":"795:49:87","nodeType":"YulExpressionStatement","src":"795:49:87"},{"nativeSrc":"853:17:87","nodeType":"YulAssignment","src":"853:17:87","value":{"name":"value_2","nativeSrc":"863:7:87","nodeType":"YulIdentifier","src":"863:7:87"},"variableNames":[{"name":"value2","nativeSrc":"853:6:87","nodeType":"YulIdentifier","src":"853:6:87"}]},{"nativeSrc":"879:40:87","nodeType":"YulVariableDeclaration","src":"879:40:87","value":{"arguments":[{"arguments":[{"name":"headStart","nativeSrc":"904:9:87","nodeType":"YulIdentifier","src":"904:9:87"},{"kind":"number","nativeSrc":"915:2:87","nodeType":"YulLiteral","src":"915:2:87","type":"","value":"96"}],"functionName":{"name":"add","nativeSrc":"900:3:87","nodeType":"YulIdentifier","src":"900:3:87"},"nativeSrc":"900:18:87","nodeType":"YulFunctionCall","src":"900:18:87"}],"functionName":{"name":"mload","nativeSrc":"894:5:87","nodeType":"YulIdentifier","src":"894:5:87"},"nativeSrc":"894:25:87","nodeType":"YulFunctionCall","src":"894:25:87"},"variables":[{"name":"value_3","nativeSrc":"883:7:87","nodeType":"YulTypedName","src":"883:7:87","type":""}]},{"expression":{"arguments":[{"name":"value_3","nativeSrc":"969:7:87","nodeType":"YulIdentifier","src":"969:7:87"}],"functionName":{"name":"validator_revert_contract_IERC20Metadata","nativeSrc":"928:40:87","nodeType":"YulIdentifier","src":"928:40:87"},"nativeSrc":"928:49:87","nodeType":"YulFunctionCall","src":"928:49:87"},"nativeSrc":"928:49:87","nodeType":"YulExpressionStatement","src":"928:49:87"},{"nativeSrc":"986:17:87","nodeType":"YulAssignment","src":"986:17:87","value":{"name":"value_3","nativeSrc":"996:7:87","nodeType":"YulIdentifier","src":"996:7:87"},"variableNames":[{"name":"value3","nativeSrc":"986:6:87","nodeType":"YulIdentifier","src":"986:6:87"}]},{"nativeSrc":"1012:36:87","nodeType":"YulAssignment","src":"1012:36:87","value":{"arguments":[{"arguments":[{"name":"headStart","nativeSrc":"1032:9:87","nodeType":"YulIdentifier","src":"1032:9:87"},{"kind":"number","nativeSrc":"1043:3:87","nodeType":"YulLiteral","src":"1043:3:87","type":"","value":"128"}],"functionName":{"name":"add","nativeSrc":"1028:3:87","nodeType":"YulIdentifier","src":"1028:3:87"},"nativeSrc":"1028:19:87","nodeType":"YulFunctionCall","src":"1028:19:87"}],"functionName":{"name":"mload","nativeSrc":"1022:5:87","nodeType":"YulIdentifier","src":"1022:5:87"},"nativeSrc":"1022:26:87","nodeType":"YulFunctionCall","src":"1022:26:87"},"variableNames":[{"name":"value4","nativeSrc":"1012:6:87","nodeType":"YulIdentifier","src":"1012:6:87"}]}]},"name":"abi_decode_tuple_t_contract$_IERC20Metadata_$9411t_contract$_IERC20Metadata_$9411t_contract$_AggregatorV3Interface_$20542t_contract$_AggregatorV3Interface_$20542t_uint256_fromMemory","nativeSrc":"166:888:87","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nativeSrc":"357:9:87","nodeType":"YulTypedName","src":"357:9:87","type":""},{"name":"dataEnd","nativeSrc":"368:7:87","nodeType":"YulTypedName","src":"368:7:87","type":""}],"returnVariables":[{"name":"value0","nativeSrc":"380:6:87","nodeType":"YulTypedName","src":"380:6:87","type":""},{"name":"value1","nativeSrc":"388:6:87","nodeType":"YulTypedName","src":"388:6:87","type":""},{"name":"value2","nativeSrc":"396:6:87","nodeType":"YulTypedName","src":"396:6:87","type":""},{"name":"value3","nativeSrc":"404:6:87","nodeType":"YulTypedName","src":"404:6:87","type":""},{"name":"value4","nativeSrc":"412:6:87","nodeType":"YulTypedName","src":"412:6:87","type":""}],"src":"166:888:87"},{"body":{"nativeSrc":"1138:194:87","nodeType":"YulBlock","src":"1138:194:87","statements":[{"body":{"nativeSrc":"1184:16:87","nodeType":"YulBlock","src":"1184:16:87","statements":[{"expression":{"arguments":[{"kind":"number","nativeSrc":"1193:1:87","nodeType":"YulLiteral","src":"1193:1:87","type":"","value":"0"},{"kind":"number","nativeSrc":"1196:1:87","nodeType":"YulLiteral","src":"1196:1:87","type":"","value":"0"}],"functionName":{"name":"revert","nativeSrc":"1186:6:87","nodeType":"YulIdentifier","src":"1186:6:87"},"nativeSrc":"1186:12:87","nodeType":"YulFunctionCall","src":"1186:12:87"},"nativeSrc":"1186:12:87","nodeType":"YulExpressionStatement","src":"1186:12:87"}]},"condition":{"arguments":[{"arguments":[{"name":"dataEnd","nativeSrc":"1159:7:87","nodeType":"YulIdentifier","src":"1159:7:87"},{"name":"headStart","nativeSrc":"1168:9:87","nodeType":"YulIdentifier","src":"1168:9:87"}],"functionName":{"name":"sub","nativeSrc":"1155:3:87","nodeType":"YulIdentifier","src":"1155:3:87"},"nativeSrc":"1155:23:87","nodeType":"YulFunctionCall","src":"1155:23:87"},{"kind":"number","nativeSrc":"1180:2:87","nodeType":"YulLiteral","src":"1180:2:87","type":"","value":"32"}],"functionName":{"name":"slt","nativeSrc":"1151:3:87","nodeType":"YulIdentifier","src":"1151:3:87"},"nativeSrc":"1151:32:87","nodeType":"YulFunctionCall","src":"1151:32:87"},"nativeSrc":"1148:52:87","nodeType":"YulIf","src":"1148:52:87"},{"nativeSrc":"1209:29:87","nodeType":"YulVariableDeclaration","src":"1209:29:87","value":{"arguments":[{"name":"headStart","nativeSrc":"1228:9:87","nodeType":"YulIdentifier","src":"1228:9:87"}],"functionName":{"name":"mload","nativeSrc":"1222:5:87","nodeType":"YulIdentifier","src":"1222:5:87"},"nativeSrc":"1222:16:87","nodeType":"YulFunctionCall","src":"1222:16:87"},"variables":[{"name":"value","nativeSrc":"1213:5:87","nodeType":"YulTypedName","src":"1213:5:87","type":""}]},{"body":{"nativeSrc":"1286:16:87","nodeType":"YulBlock","src":"1286:16:87","statements":[{"expression":{"arguments":[{"kind":"number","nativeSrc":"1295:1:87","nodeType":"YulLiteral","src":"1295:1:87","type":"","value":"0"},{"kind":"number","nativeSrc":"1298:1:87","nodeType":"YulLiteral","src":"1298:1:87","type":"","value":"0"}],"functionName":{"name":"revert","nativeSrc":"1288:6:87","nodeType":"YulIdentifier","src":"1288:6:87"},"nativeSrc":"1288:12:87","nodeType":"YulFunctionCall","src":"1288:12:87"},"nativeSrc":"1288:12:87","nodeType":"YulExpressionStatement","src":"1288:12:87"}]},"condition":{"arguments":[{"arguments":[{"name":"value","nativeSrc":"1260:5:87","nodeType":"YulIdentifier","src":"1260:5:87"},{"arguments":[{"name":"value","nativeSrc":"1271:5:87","nodeType":"YulIdentifier","src":"1271:5:87"},{"kind":"number","nativeSrc":"1278:4:87","nodeType":"YulLiteral","src":"1278:4:87","type":"","value":"0xff"}],"functionName":{"name":"and","nativeSrc":"1267:3:87","nodeType":"YulIdentifier","src":"1267:3:87"},"nativeSrc":"1267:16:87","nodeType":"YulFunctionCall","src":"1267:16:87"}],"functionName":{"name":"eq","nativeSrc":"1257:2:87","nodeType":"YulIdentifier","src":"1257:2:87"},"nativeSrc":"1257:27:87","nodeType":"YulFunctionCall","src":"1257:27:87"}],"functionName":{"name":"iszero","nativeSrc":"1250:6:87","nodeType":"YulIdentifier","src":"1250:6:87"},"nativeSrc":"1250:35:87","nodeType":"YulFunctionCall","src":"1250:35:87"},"nativeSrc":"1247:55:87","nodeType":"YulIf","src":"1247:55:87"},{"nativeSrc":"1311:15:87","nodeType":"YulAssignment","src":"1311:15:87","value":{"name":"value","nativeSrc":"1321:5:87","nodeType":"YulIdentifier","src":"1321:5:87"},"variableNames":[{"name":"value0","nativeSrc":"1311:6:87","nodeType":"YulIdentifier","src":"1311:6:87"}]}]},"name":"abi_decode_tuple_t_uint8_fromMemory","nativeSrc":"1059:273:87","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nativeSrc":"1104:9:87","nodeType":"YulTypedName","src":"1104:9:87","type":""},{"name":"dataEnd","nativeSrc":"1115:7:87","nodeType":"YulTypedName","src":"1115:7:87","type":""}],"returnVariables":[{"name":"value0","nativeSrc":"1127:6:87","nodeType":"YulTypedName","src":"1127:6:87","type":""}],"src":"1059:273:87"},{"body":{"nativeSrc":"1564:252:87","nodeType":"YulBlock","src":"1564:252:87","statements":[{"expression":{"arguments":[{"name":"headStart","nativeSrc":"1581:9:87","nodeType":"YulIdentifier","src":"1581:9:87"},{"kind":"number","nativeSrc":"1592:2:87","nodeType":"YulLiteral","src":"1592:2:87","type":"","value":"64"}],"functionName":{"name":"mstore","nativeSrc":"1574:6:87","nodeType":"YulIdentifier","src":"1574:6:87"},"nativeSrc":"1574:21:87","nodeType":"YulFunctionCall","src":"1574:21:87"},"nativeSrc":"1574:21:87","nodeType":"YulExpressionStatement","src":"1574:21:87"},{"expression":{"arguments":[{"arguments":[{"name":"headStart","nativeSrc":"1615:9:87","nodeType":"YulIdentifier","src":"1615:9:87"},{"kind":"number","nativeSrc":"1626:2:87","nodeType":"YulLiteral","src":"1626:2:87","type":"","value":"64"}],"functionName":{"name":"add","nativeSrc":"1611:3:87","nodeType":"YulIdentifier","src":"1611:3:87"},"nativeSrc":"1611:18:87","nodeType":"YulFunctionCall","src":"1611:18:87"},{"kind":"number","nativeSrc":"1631:2:87","nodeType":"YulLiteral","src":"1631:2:87","type":"","value":"30"}],"functionName":{"name":"mstore","nativeSrc":"1604:6:87","nodeType":"YulIdentifier","src":"1604:6:87"},"nativeSrc":"1604:30:87","nodeType":"YulFunctionCall","src":"1604:30:87"},"nativeSrc":"1604:30:87","nodeType":"YulExpressionStatement","src":"1604:30:87"},{"expression":{"arguments":[{"arguments":[{"name":"headStart","nativeSrc":"1654:9:87","nodeType":"YulIdentifier","src":"1654:9:87"},{"kind":"number","nativeSrc":"1665:2:87","nodeType":"YulLiteral","src":"1665:2:87","type":"","value":"96"}],"functionName":{"name":"add","nativeSrc":"1650:3:87","nodeType":"YulIdentifier","src":"1650:3:87"},"nativeSrc":"1650:18:87","nodeType":"YulFunctionCall","src":"1650:18:87"},{"hexValue":"636f2e656e7375726f2e496e766573745374726174656779436c69656e74","kind":"string","nativeSrc":"1670:32:87","nodeType":"YulLiteral","src":"1670:32:87","type":"","value":"co.ensuro.InvestStrategyClient"}],"functionName":{"name":"mstore","nativeSrc":"1643:6:87","nodeType":"YulIdentifier","src":"1643:6:87"},"nativeSrc":"1643:60:87","nodeType":"YulFunctionCall","src":"1643:60:87"},"nativeSrc":"1643:60:87","nodeType":"YulExpressionStatement","src":"1643:60:87"},{"nativeSrc":"1712:27:87","nodeType":"YulAssignment","src":"1712:27:87","value":{"arguments":[{"name":"headStart","nativeSrc":"1724:9:87","nodeType":"YulIdentifier","src":"1724:9:87"},{"kind":"number","nativeSrc":"1735:3:87","nodeType":"YulLiteral","src":"1735:3:87","type":"","value":"128"}],"functionName":{"name":"add","nativeSrc":"1720:3:87","nodeType":"YulIdentifier","src":"1720:3:87"},"nativeSrc":"1720:19:87","nodeType":"YulFunctionCall","src":"1720:19:87"},"variableNames":[{"name":"tail","nativeSrc":"1712:4:87","nodeType":"YulIdentifier","src":"1712:4:87"}]},{"expression":{"arguments":[{"arguments":[{"name":"headStart","nativeSrc":"1759:9:87","nodeType":"YulIdentifier","src":"1759:9:87"},{"kind":"number","nativeSrc":"1770:4:87","nodeType":"YulLiteral","src":"1770:4:87","type":"","value":"0x20"}],"functionName":{"name":"add","nativeSrc":"1755:3:87","nodeType":"YulIdentifier","src":"1755:3:87"},"nativeSrc":"1755:20:87","nodeType":"YulFunctionCall","src":"1755:20:87"},{"arguments":[{"name":"value0","nativeSrc":"1781:6:87","nodeType":"YulIdentifier","src":"1781:6:87"},{"arguments":[{"arguments":[{"kind":"number","nativeSrc":"1797:3:87","nodeType":"YulLiteral","src":"1797:3:87","type":"","value":"160"},{"kind":"number","nativeSrc":"1802:1:87","nodeType":"YulLiteral","src":"1802:1:87","type":"","value":"1"}],"functionName":{"name":"shl","nativeSrc":"1793:3:87","nodeType":"YulIdentifier","src":"1793:3:87"},"nativeSrc":"1793:11:87","nodeType":"YulFunctionCall","src":"1793:11:87"},{"kind":"number","nativeSrc":"1806:1:87","nodeType":"YulLiteral","src":"1806:1:87","type":"","value":"1"}],"functionName":{"name":"sub","nativeSrc":"1789:3:87","nodeType":"YulIdentifier","src":"1789:3:87"},"nativeSrc":"1789:19:87","nodeType":"YulFunctionCall","src":"1789:19:87"}],"functionName":{"name":"and","nativeSrc":"1777:3:87","nodeType":"YulIdentifier","src":"1777:3:87"},"nativeSrc":"1777:32:87","nodeType":"YulFunctionCall","src":"1777:32:87"}],"functionName":{"name":"mstore","nativeSrc":"1748:6:87","nodeType":"YulIdentifier","src":"1748:6:87"},"nativeSrc":"1748:62:87","nodeType":"YulFunctionCall","src":"1748:62:87"},"nativeSrc":"1748:62:87","nodeType":"YulExpressionStatement","src":"1748:62:87"}]},"name":"abi_encode_tuple_t_stringliteral_4fed0cd3539a36e00a34a6c026c2615824c9ad47da5ef65e8372c7e721c05d79_t_contract$_IInvestStrategy_$20725__to_t_string_memory_ptr_t_address__fromStack_reversed","nativeSrc":"1337:479:87","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nativeSrc":"1533:9:87","nodeType":"YulTypedName","src":"1533:9:87","type":""},{"name":"value0","nativeSrc":"1544:6:87","nodeType":"YulTypedName","src":"1544:6:87","type":""}],"returnVariables":[{"name":"tail","nativeSrc":"1555:4:87","nodeType":"YulTypedName","src":"1555:4:87","type":""}],"src":"1337:479:87"}]},"contents":"{\n    { }\n    function validator_revert_contract_IERC20Metadata(value)\n    {\n        if iszero(eq(value, and(value, sub(shl(160, 1), 1)))) { revert(0, 0) }\n    }\n    function abi_decode_tuple_t_contract$_IERC20Metadata_$9411t_contract$_IERC20Metadata_$9411t_contract$_AggregatorV3Interface_$20542t_contract$_AggregatorV3Interface_$20542t_uint256_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_contract_IERC20Metadata(value)\n        value0 := value\n        let value_1 := mload(add(headStart, 32))\n        validator_revert_contract_IERC20Metadata(value_1)\n        value1 := value_1\n        let value_2 := mload(add(headStart, 64))\n        validator_revert_contract_IERC20Metadata(value_2)\n        value2 := value_2\n        let value_3 := mload(add(headStart, 96))\n        validator_revert_contract_IERC20Metadata(value_3)\n        value3 := value_3\n        value4 := mload(add(headStart, 128))\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_stringliteral_4fed0cd3539a36e00a34a6c026c2615824c9ad47da5ef65e8372c7e721c05d79_t_contract$_IInvestStrategy_$20725__to_t_string_memory_ptr_t_address__fromStack_reversed(headStart, value0) -> tail\n    {\n        mstore(headStart, 64)\n        mstore(add(headStart, 64), 30)\n        mstore(add(headStart, 96), \"co.ensuro.InvestStrategyClient\")\n        tail := add(headStart, 128)\n        mstore(add(headStart, 0x20), and(value0, sub(shl(160, 1), 1)))\n    }\n}","id":87,"language":"Yul","name":"#utility.yul"}],"linkReferences":{"@ensuro/swaplibrary/contracts/SwapLibrary.sol":{"SwapLibrary":[{"length":20,"start":2178},{"length":20,"start":2474},{"length":20,"start":3031},{"length":20,"start":3618}]}},"object":"3060808181526040610180818152601e6101c0527f636f2e656e7375726f2e496e766573745374726174656779436c69656e7400006101e0526101a0939093526101608290526102009052902060a05234801561005a575f5ffd5b50604051611b3a380380611b3a833981016040819052610079916101f8565b84846012826001600160a01b031663313ce5676040518163ffffffff1660e01b8152600401602060405180830381865afa1580156100b9573d5f5f3e3d5ffd5b505050506040513d601f19601f820116820180604052508101906100dd919061025f565b60ff1611156100ff57604051636448d6e960e11b815260040160405180910390fd5b6012816001600160a01b031663313ce5676040518163ffffffff1660e01b8152600401602060405180830381865afa15801561013d573d5f5f3e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610161919061025f565b60ff16111561018357604051636448d6e960e11b815260040160405180910390fd5b806001600160a01b0316826001600160a01b0316036101b557604051636448d6e960e11b815260040160405180910390fd5b6001600160a01b0391821660c052811660e0529182166101205291166101005261014052506102869050565b6001600160a01b03811681146101f5575f5ffd5b50565b5f5f5f5f5f60a0868803121561020c575f5ffd5b8551610217816101e1565b6020870151909550610228816101e1565b6040870151909450610239816101e1565b606087015190935061024a816101e1565b80925050608086015190509295509295909350565b5f6020828403121561026f575f5ffd5b815160ff8116811461027f575f5ffd5b9392505050565b60805160a05160c05160e0516101005161012051610140516117d061036a5f395f81816101f201528181610c3a0152610c6b01525f81816101cb01526103a701525f818161014301526103d901525f81816102cb0152818161048e0152818161053601528181610662015281816108aa015281816109600152610f3f01525f818161025f0152818161055801528181610684015281816108890152610f1001525f818161022c015281816109f901528181610b880152610e3b01525f818161030c0152818161041101528181610725015281816107a1015261081e01526117d05ff3fe608060405234801561000f575f5ffd5b50600436106100fb575f3560e01c80635a11745611610093578063b6b55f2511610063578063b6b55f2514610294578063ce96cb77146102a7578063de846ae4146102ba578063f3e0ffbf146102ed575f5ffd5b80635a117456146102145780635b9a4c35146102275780639c4667a21461024e5780639cd4712814610281575f5ffd5b8063402d267d116100ce578063402d267d1461019257806342b054f0146101a657806352ebfa29146101c657806359011cd1146101ed575f5ffd5b80630981b1c2146100ff5780631418983b146101285780631d4d3a5d1461013e5780632e1a7d4d1461017d575b5f5ffd5b61011261010d366004611145565b610300565b60405161011f91906111c0565b60405180910390f35b61013061039e565b60405190815260200161011f565b6101657f000000000000000000000000000000000000000000000000000000000000000081565b6040516001600160a01b03909116815260200161011f565b61019061018b3660046111d2565b610407565b005b6101306101a03660046111e9565b505f1990565b6101b96101b43660046111e9565b6106f7565b60405161011f9190611269565b6101657f000000000000000000000000000000000000000000000000000000000000000081565b6101307f000000000000000000000000000000000000000000000000000000000000000081565b61019061022236600461127b565b61071b565b6101307f000000000000000000000000000000000000000000000000000000000000000081565b61016561025c3660046111e9565b507f000000000000000000000000000000000000000000000000000000000000000090565b61019061028f36600461129a565b610797565b6101906102a23660046111d2565b610814565b6101306102b53660046111e9565b610935565b6101656102c83660046111e9565b507f000000000000000000000000000000000000000000000000000000000000000090565b6101306102fb3660046111e9565b61093b565b60606001600160a01b037f000000000000000000000000000000000000000000000000000000000000000016300361034b57604051632abf118b60e21b815260040160405180910390fd5b5f60ff8416801561035e5761035e61120f565b90505f8180156103705761037061120f565b036100fb57610387610381306109cf565b84610a91565b505060408051602081019091525f81525b92915050565b5f6104026103cb7f0000000000000000000000000000000000000000000000000000000000000000610bb1565b670de0b6b3a76400006103fd7f0000000000000000000000000000000000000000000000000000000000000000610bb1565b610d6e565b905090565b6001600160a01b037f000000000000000000000000000000000000000000000000000000000000000016300361045057604051632abf118b60e21b815260040160405180910390fd5b80156106f4575f61045f610e1e565b90505f61046a610ef4565b6040516370a0823160e01b81523060048201529091506104fd906001600160a01b037f000000000000000000000000000000000000000000000000000000000000000016906370a0823190602401602060405180830381865afa1580156104d3573d5f5f3e3d5ffd5b505050506040513d601f19601f820116820180604052508101906104f791906112cc565b30610f0a565b8310610631576040516370a0823160e01b815230600482015273__$acbb9ece542dcf2065f41aa3c8cca5827e$__9063775669159084907f0000000000000000000000000000000000000000000000000000000000000000907f0000000000000000000000000000000000000000000000000000000000000000906001600160a01b038316906370a0823190602401602060405180830381865afa1580156105a7573d5f5f3e3d5ffd5b505050506040513d601f19601f820116820180604052508101906105cb91906112cc565b866040518663ffffffff1660e01b81526004016105ec9594939291906112e3565b602060405180830381865af4158015610607573d5f5f3e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061062b91906112cc565b506106f1565b60405163581e517d60e01b815273__$acbb9ece542dcf2065f41aa3c8cca5827e$__9063581e517d906106b09085907f0000000000000000000000000000000000000000000000000000000000000000907f000000000000000000000000000000000000000000000000000000000000000090899088906004016112e3565b602060405180830381865af41580156106cb573d5f5f3e3d5ffd5b505050506040513d601f19601f820116820180604052508101906106ef91906112cc565b505b50505b50565b60408051606080820183525f808352602083015291810191909152610398826109cf565b6001600160a01b037f000000000000000000000000000000000000000000000000000000000000000016300361076457604051632abf118b60e21b815260040160405180910390fd5b8015801561077957506107763061093b565b15155b156106f4576040516342a176d160e11b815260040160405180910390fd5b6001600160a01b037f00000000000000000000000000000000000000000000000000000000000000001630036107e057604051632abf118b60e21b815260040160405180910390fd5b60408051606081019091526106f490805f81526020015f815260200160405180602001604052805f81525081525082610a91565b6001600160a01b037f000000000000000000000000000000000000000000000000000000000000000016300361085d57604051632abf118b60e21b815260040160405180910390fd5b80156106f45761086b610e1e565b73__$acbb9ece542dcf2065f41aa3c8cca5827e$__637756691590917f00000000000000000000000000000000000000000000000000000000000000007f0000000000000000000000000000000000000000000000000000000000000000856108d261039e565b6040518663ffffffff1660e01b81526004016108f29594939291906112e3565b602060405180830381865af415801561090d573d5f5f3e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061093191906112cc565b5050565b5f610398825b6040516370a0823160e01b81526001600160a01b0382811660048301525f91610398917f000000000000000000000000000000000000000000000000000000000000000016906370a0823190602401602060405180830381865afa1580156109a5573d5f5f3e3d5ffd5b505050506040513d601f19601f820116820180604052508101906109c991906112cc565b83610f0a565b60408051606080820183525f8083526020830152918101919091526040516347e5753360e01b81527f000000000000000000000000000000000000000000000000000000000000000060048201525f906001600160a01b038416906347e57533906024015f60405180830381865afa158015610a4d573d5f5f3e3d5ffd5b505050506040513d5f823e601f3d908101601f19168201604052610a74919081019061136f565b905080806020019051810190610a8a91906113a1565b9392505050565b5f81806020019051810190610aa691906113a1565b604051632cbf28cb60e21b815290915073__$acbb9ece542dcf2065f41aa3c8cca5827e$__9063b2fca32c90610ae0908490600401611269565b5f6040518083038186803b158015610af6575f5ffd5b505af4158015610b08573d5f5f3e3d5ffd5b50505050815181604051602001610b1f9190611269565b6040516020818303038152906040525114610b4d576040516350701b6160e01b815260040160405180910390fd5b7fca7f7aa563866a1d31c74deba224724d1da9c35cbb6f783f2ccf0182f91e34f88382604051610b7e92919061142d565b60405180910390a17f00000000000000000000000000000000000000000000000000000000000000006106ef83826114dd565b5f6001600160a01b038216610bcf5750670de0b6b3a7640000919050565b5f5f836001600160a01b031663feaf968c6040518163ffffffff1660e01b815260040160a060405180830381865afa158015610c0d573d5f5f3e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610c3191906115b6565b509350509250507f000000000000000000000000000000000000000000000000000000000000000042610c649190611618565b8111610c907f000000000000000000000000000000000000000000000000000000000000000042611618565b829091610cbe57604051633156ea9360e01b8152600481019290925260248201526044015b60405180910390fd5b50505f82138290610ce5576040516338ee04a760e01b8152600401610cb591815260200190565b50836001600160a01b031663313ce5676040518163ffffffff1660e01b8152600401602060405180830381865afa158015610d22573d5f5f3e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610d46919061162b565b610d51906012611646565b610d5c90600a611742565b610d669083611750565b949350505050565b5f5f5f610d7b8686610fac565b91509150815f03610d9f57838181610d9557610d95611767565b0492505050610a8a565b818411610db657610db66003851502601118610fc8565b5f848688095f868103871696879004966002600389028118808a02820302808a02820302808a02820302808a02820302808a02820302808a02909103029181900381900460010185841190960395909502919093039390930492909217029150509392505050565b60408051606080820183525f8083526020830152918101919091527f00000000000000000000000000000000000000000000000000000000000000008054610e659061145a565b80601f0160208091040260200160405190810160405280929190818152602001828054610e919061145a565b8015610edc5780601f10610eb357610100808354040283529160200191610edc565b820191905f5260205f20905b815481529060010190602001808311610ebf57829003601f168201915b505050505080602001905181019061040291906113a1565b5f610402670de0b6b3a7640000806103fd61039e565b5f610f347f0000000000000000000000000000000000000000000000000000000000000000610fd9565b610fa2610f83610f637f0000000000000000000000000000000000000000000000000000000000000000610fd9565b610f6d9087611750565b610f7561039e565b670de0b6b3a7640000610d6e565b610f8c856109cf565b60200151610f7590670de0b6b3a7640000611618565b610a8a919061177b565b5f805f1983850993909202808410938190039390930393915050565b634e487b715f52806020526024601cfd5b5f816001600160a01b031663313ce5676040518163ffffffff1660e01b8152600401602060405180830381865afa158015611016573d5f5f3e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061103a919061162b565b611045906012611646565b61039890600a611742565b60ff811681146106f4575f5ffd5b634e487b7160e01b5f52604160045260245ffd5b6040516060810167ffffffffffffffff811182821017156110955761109561105e565b60405290565b604051601f8201601f1916810167ffffffffffffffff811182821017156110c4576110c461105e565b604052919050565b5f67ffffffffffffffff8211156110e5576110e561105e565b50601f01601f191660200190565b5f82601f830112611102575f5ffd5b8135611115611110826110cc565b61109b565b818152846020838601011115611129575f5ffd5b816020850160208301375f918101602001919091529392505050565b5f5f60408385031215611156575f5ffd5b823561116181611050565b9150602083013567ffffffffffffffff81111561117c575f5ffd5b611188858286016110f3565b9150509250929050565b5f81518084528060208401602086015e5f602082860101526020601f19601f83011685010191505092915050565b602081525f610a8a6020830184611192565b5f602082840312156111e2575f5ffd5b5035919050565b5f602082840312156111f9575f5ffd5b81356001600160a01b0381168114610a8a575f5ffd5b634e487b7160e01b5f52602160045260245ffd5b5f81516003811061124257634e487b7160e01b5f52602160045260245ffd5b8084525060208201516020840152604082015160606040850152610d666060850182611192565b602081525f610a8a6020830184611223565b5f6020828403121561128b575f5ffd5b81358015158114610a8a575f5ffd5b5f602082840312156112aa575f5ffd5b813567ffffffffffffffff8111156112c0575f5ffd5b610d66848285016110f3565b5f602082840312156112dc575f5ffd5b5051919050565b60a081525f6112f560a0830188611223565b6001600160a01b039687166020840152949095166040820152606081019290925260809091015292915050565b5f82601f830112611331575f5ffd5b815161133f611110826110cc565b818152846020838601011115611353575f5ffd5b8160208501602083015e5f918101602001919091529392505050565b5f6020828403121561137f575f5ffd5b815167ffffffffffffffff811115611395575f5ffd5b610d6684828501611322565b5f602082840312156113b1575f5ffd5b815167ffffffffffffffff8111156113c7575f5ffd5b8201606081850312156113d8575f5ffd5b6113e0611072565b8151600381106113ee575f5ffd5b815260208281015190820152604082015167ffffffffffffffff811115611413575f5ffd5b61141f86828501611322565b604083015250949350505050565b604081525f61143f6040830185611223565b82810360208401526114518185611223565b95945050505050565b600181811c9082168061146e57607f821691505b60208210810361148c57634e487b7160e01b5f52602260045260245ffd5b50919050565b601f8211156106f157805f5260205f20601f840160051c810160208510156114b75750805b601f840160051c820191505b818110156114d6575f81556001016114c3565b5050505050565b815167ffffffffffffffff8111156114f7576114f761105e565b61150b81611505845461145a565b84611492565b6020601f82116001811461153d575f83156115265750848201515b5f19600385901b1c1916600184901b1784556114d6565b5f84815260208120601f198516915b8281101561156c578785015182556020948501946001909201910161154c565b508482101561158957868401515f19600387901b60f8161c191681555b50505050600190811b01905550565b805169ffffffffffffffffffff811681146115b1575f5ffd5b919050565b5f5f5f5f5f60a086880312156115ca575f5ffd5b6115d386611598565b602087015160408801516060890151929750909550935091506115f860808701611598565b90509295509295909350565b634e487b7160e01b5f52601160045260245ffd5b8181038181111561039857610398611604565b5f6020828403121561163b575f5ffd5b8151610a8a81611050565b60ff828116828216039081111561039857610398611604565b6001815b600184111561169a5780850481111561167e5761167e611604565b600184161561168c57908102905b60019390931c928002611663565b935093915050565b5f826116b057506001610398565b816116bc57505f610398565b81600181146116d257600281146116dc576116f8565b6001915050610398565b60ff8411156116ed576116ed611604565b50506001821b610398565b5060208310610133831016604e8410600b841016171561171b575081810a610398565b6117275f19848461165f565b805f190482111561173a5761173a611604565b029392505050565b5f610a8a60ff8416836116a2565b808202811582820484141761039857610398611604565b634e487b7160e01b5f52601260045260245ffd5b5f8261179557634e487b7160e01b5f52601260045260245ffd5b50049056fea2646970667358221220fc08a7893d23afda4c3cb4a81930e87c3cc290d1b17c4f92b0c50fe828dfa09664736f6c634300081e0033","opcodes":"ADDRESS PUSH1 0x80 DUP2 DUP2 MSTORE PUSH1 0x40 PUSH2 0x180 DUP2 DUP2 MSTORE PUSH1 0x1E PUSH2 0x1C0 MSTORE PUSH32 0x636F2E656E7375726F2E496E766573745374726174656779436C69656E740000 PUSH2 0x1E0 MSTORE PUSH2 0x1A0 SWAP4 SWAP1 SWAP4 MSTORE PUSH2 0x160 DUP3 SWAP1 MSTORE PUSH2 0x200 SWAP1 MSTORE SWAP1 KECCAK256 PUSH1 0xA0 MSTORE CALLVALUE DUP1 ISZERO PUSH2 0x5A JUMPI PUSH0 PUSH0 REVERT JUMPDEST POP PUSH1 0x40 MLOAD PUSH2 0x1B3A CODESIZE SUB DUP1 PUSH2 0x1B3A DUP4 CODECOPY DUP2 ADD PUSH1 0x40 DUP2 SWAP1 MSTORE PUSH2 0x79 SWAP2 PUSH2 0x1F8 JUMP JUMPDEST DUP5 DUP5 PUSH1 0x12 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 GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0xB9 JUMPI RETURNDATASIZE PUSH0 PUSH0 RETURNDATACOPY RETURNDATASIZE PUSH0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP3 ADD DUP1 PUSH1 0x40 MSTORE POP DUP2 ADD SWAP1 PUSH2 0xDD SWAP2 SWAP1 PUSH2 0x25F JUMP JUMPDEST PUSH1 0xFF AND GT ISZERO PUSH2 0xFF JUMPI PUSH1 0x40 MLOAD PUSH4 0x6448D6E9 PUSH1 0xE1 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH1 0x12 DUP2 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 GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x13D JUMPI RETURNDATASIZE PUSH0 PUSH0 RETURNDATACOPY RETURNDATASIZE PUSH0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP3 ADD DUP1 PUSH1 0x40 MSTORE POP DUP2 ADD SWAP1 PUSH2 0x161 SWAP2 SWAP1 PUSH2 0x25F JUMP JUMPDEST PUSH1 0xFF AND GT ISZERO PUSH2 0x183 JUMPI PUSH1 0x40 MLOAD PUSH4 0x6448D6E9 PUSH1 0xE1 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST DUP1 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP3 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND SUB PUSH2 0x1B5 JUMPI PUSH1 0x40 MLOAD PUSH4 0x6448D6E9 PUSH1 0xE1 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP2 DUP3 AND PUSH1 0xC0 MSTORE DUP2 AND PUSH1 0xE0 MSTORE SWAP2 DUP3 AND PUSH2 0x120 MSTORE SWAP2 AND PUSH2 0x100 MSTORE PUSH2 0x140 MSTORE POP PUSH2 0x286 SWAP1 POP JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 AND DUP2 EQ PUSH2 0x1F5 JUMPI PUSH0 PUSH0 REVERT JUMPDEST POP JUMP JUMPDEST PUSH0 PUSH0 PUSH0 PUSH0 PUSH0 PUSH1 0xA0 DUP7 DUP9 SUB SLT ISZERO PUSH2 0x20C JUMPI PUSH0 PUSH0 REVERT JUMPDEST DUP6 MLOAD PUSH2 0x217 DUP2 PUSH2 0x1E1 JUMP JUMPDEST PUSH1 0x20 DUP8 ADD MLOAD SWAP1 SWAP6 POP PUSH2 0x228 DUP2 PUSH2 0x1E1 JUMP JUMPDEST PUSH1 0x40 DUP8 ADD MLOAD SWAP1 SWAP5 POP PUSH2 0x239 DUP2 PUSH2 0x1E1 JUMP JUMPDEST PUSH1 0x60 DUP8 ADD MLOAD SWAP1 SWAP4 POP PUSH2 0x24A DUP2 PUSH2 0x1E1 JUMP JUMPDEST DUP1 SWAP3 POP POP PUSH1 0x80 DUP7 ADD MLOAD SWAP1 POP SWAP3 SWAP6 POP SWAP3 SWAP6 SWAP1 SWAP4 POP JUMP JUMPDEST PUSH0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x26F JUMPI PUSH0 PUSH0 REVERT JUMPDEST DUP2 MLOAD PUSH1 0xFF DUP2 AND DUP2 EQ PUSH2 0x27F JUMPI PUSH0 PUSH0 REVERT JUMPDEST SWAP4 SWAP3 POP POP POP JUMP JUMPDEST PUSH1 0x80 MLOAD PUSH1 0xA0 MLOAD PUSH1 0xC0 MLOAD PUSH1 0xE0 MLOAD PUSH2 0x100 MLOAD PUSH2 0x120 MLOAD PUSH2 0x140 MLOAD PUSH2 0x17D0 PUSH2 0x36A PUSH0 CODECOPY PUSH0 DUP2 DUP2 PUSH2 0x1F2 ADD MSTORE DUP2 DUP2 PUSH2 0xC3A ADD MSTORE PUSH2 0xC6B ADD MSTORE PUSH0 DUP2 DUP2 PUSH2 0x1CB ADD MSTORE PUSH2 0x3A7 ADD MSTORE PUSH0 DUP2 DUP2 PUSH2 0x143 ADD MSTORE PUSH2 0x3D9 ADD MSTORE PUSH0 DUP2 DUP2 PUSH2 0x2CB ADD MSTORE DUP2 DUP2 PUSH2 0x48E ADD MSTORE DUP2 DUP2 PUSH2 0x536 ADD MSTORE DUP2 DUP2 PUSH2 0x662 ADD MSTORE DUP2 DUP2 PUSH2 0x8AA ADD MSTORE DUP2 DUP2 PUSH2 0x960 ADD MSTORE PUSH2 0xF3F ADD MSTORE PUSH0 DUP2 DUP2 PUSH2 0x25F ADD MSTORE DUP2 DUP2 PUSH2 0x558 ADD MSTORE DUP2 DUP2 PUSH2 0x684 ADD MSTORE DUP2 DUP2 PUSH2 0x889 ADD MSTORE PUSH2 0xF10 ADD MSTORE PUSH0 DUP2 DUP2 PUSH2 0x22C ADD MSTORE DUP2 DUP2 PUSH2 0x9F9 ADD MSTORE DUP2 DUP2 PUSH2 0xB88 ADD MSTORE PUSH2 0xE3B ADD MSTORE PUSH0 DUP2 DUP2 PUSH2 0x30C ADD MSTORE DUP2 DUP2 PUSH2 0x411 ADD MSTORE DUP2 DUP2 PUSH2 0x725 ADD MSTORE DUP2 DUP2 PUSH2 0x7A1 ADD MSTORE PUSH2 0x81E ADD MSTORE PUSH2 0x17D0 PUSH0 RETURN INVALID PUSH1 0x80 PUSH1 0x40 MSTORE CALLVALUE DUP1 ISZERO PUSH2 0xF JUMPI PUSH0 PUSH0 REVERT JUMPDEST POP PUSH1 0x4 CALLDATASIZE LT PUSH2 0xFB JUMPI PUSH0 CALLDATALOAD PUSH1 0xE0 SHR DUP1 PUSH4 0x5A117456 GT PUSH2 0x93 JUMPI DUP1 PUSH4 0xB6B55F25 GT PUSH2 0x63 JUMPI DUP1 PUSH4 0xB6B55F25 EQ PUSH2 0x294 JUMPI DUP1 PUSH4 0xCE96CB77 EQ PUSH2 0x2A7 JUMPI DUP1 PUSH4 0xDE846AE4 EQ PUSH2 0x2BA JUMPI DUP1 PUSH4 0xF3E0FFBF EQ PUSH2 0x2ED JUMPI PUSH0 PUSH0 REVERT JUMPDEST DUP1 PUSH4 0x5A117456 EQ PUSH2 0x214 JUMPI DUP1 PUSH4 0x5B9A4C35 EQ PUSH2 0x227 JUMPI DUP1 PUSH4 0x9C4667A2 EQ PUSH2 0x24E JUMPI DUP1 PUSH4 0x9CD47128 EQ PUSH2 0x281 JUMPI PUSH0 PUSH0 REVERT JUMPDEST DUP1 PUSH4 0x402D267D GT PUSH2 0xCE JUMPI DUP1 PUSH4 0x402D267D EQ PUSH2 0x192 JUMPI DUP1 PUSH4 0x42B054F0 EQ PUSH2 0x1A6 JUMPI DUP1 PUSH4 0x52EBFA29 EQ PUSH2 0x1C6 JUMPI DUP1 PUSH4 0x59011CD1 EQ PUSH2 0x1ED JUMPI PUSH0 PUSH0 REVERT JUMPDEST DUP1 PUSH4 0x981B1C2 EQ PUSH2 0xFF JUMPI DUP1 PUSH4 0x1418983B EQ PUSH2 0x128 JUMPI DUP1 PUSH4 0x1D4D3A5D EQ PUSH2 0x13E JUMPI DUP1 PUSH4 0x2E1A7D4D EQ PUSH2 0x17D JUMPI JUMPDEST PUSH0 PUSH0 REVERT JUMPDEST PUSH2 0x112 PUSH2 0x10D CALLDATASIZE PUSH1 0x4 PUSH2 0x1145 JUMP JUMPDEST PUSH2 0x300 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0x11F SWAP2 SWAP1 PUSH2 0x11C0 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST PUSH2 0x130 PUSH2 0x39E JUMP JUMPDEST PUSH1 0x40 MLOAD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH2 0x11F JUMP JUMPDEST PUSH2 0x165 PUSH32 0x0 DUP2 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP1 SWAP2 AND DUP2 MSTORE PUSH1 0x20 ADD PUSH2 0x11F JUMP JUMPDEST PUSH2 0x190 PUSH2 0x18B CALLDATASIZE PUSH1 0x4 PUSH2 0x11D2 JUMP JUMPDEST PUSH2 0x407 JUMP JUMPDEST STOP JUMPDEST PUSH2 0x130 PUSH2 0x1A0 CALLDATASIZE PUSH1 0x4 PUSH2 0x11E9 JUMP JUMPDEST POP PUSH0 NOT SWAP1 JUMP JUMPDEST PUSH2 0x1B9 PUSH2 0x1B4 CALLDATASIZE PUSH1 0x4 PUSH2 0x11E9 JUMP JUMPDEST PUSH2 0x6F7 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0x11F SWAP2 SWAP1 PUSH2 0x1269 JUMP JUMPDEST PUSH2 0x165 PUSH32 0x0 DUP2 JUMP JUMPDEST PUSH2 0x130 PUSH32 0x0 DUP2 JUMP JUMPDEST PUSH2 0x190 PUSH2 0x222 CALLDATASIZE PUSH1 0x4 PUSH2 0x127B JUMP JUMPDEST PUSH2 0x71B JUMP JUMPDEST PUSH2 0x130 PUSH32 0x0 DUP2 JUMP JUMPDEST PUSH2 0x165 PUSH2 0x25C CALLDATASIZE PUSH1 0x4 PUSH2 0x11E9 JUMP JUMPDEST POP PUSH32 0x0 SWAP1 JUMP JUMPDEST PUSH2 0x190 PUSH2 0x28F CALLDATASIZE PUSH1 0x4 PUSH2 0x129A JUMP JUMPDEST PUSH2 0x797 JUMP JUMPDEST PUSH2 0x190 PUSH2 0x2A2 CALLDATASIZE PUSH1 0x4 PUSH2 0x11D2 JUMP JUMPDEST PUSH2 0x814 JUMP JUMPDEST PUSH2 0x130 PUSH2 0x2B5 CALLDATASIZE PUSH1 0x4 PUSH2 0x11E9 JUMP JUMPDEST PUSH2 0x935 JUMP JUMPDEST PUSH2 0x165 PUSH2 0x2C8 CALLDATASIZE PUSH1 0x4 PUSH2 0x11E9 JUMP JUMPDEST POP PUSH32 0x0 SWAP1 JUMP JUMPDEST PUSH2 0x130 PUSH2 0x2FB CALLDATASIZE PUSH1 0x4 PUSH2 0x11E9 JUMP JUMPDEST PUSH2 0x93B JUMP JUMPDEST PUSH1 0x60 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB PUSH32 0x0 AND ADDRESS SUB PUSH2 0x34B JUMPI PUSH1 0x40 MLOAD PUSH4 0x2ABF118B PUSH1 0xE2 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH0 PUSH1 0xFF DUP5 AND DUP1 ISZERO PUSH2 0x35E JUMPI PUSH2 0x35E PUSH2 0x120F JUMP JUMPDEST SWAP1 POP PUSH0 DUP2 DUP1 ISZERO PUSH2 0x370 JUMPI PUSH2 0x370 PUSH2 0x120F JUMP JUMPDEST SUB PUSH2 0xFB JUMPI PUSH2 0x387 PUSH2 0x381 ADDRESS PUSH2 0x9CF JUMP JUMPDEST DUP5 PUSH2 0xA91 JUMP JUMPDEST POP POP PUSH1 0x40 DUP1 MLOAD PUSH1 0x20 DUP2 ADD SWAP1 SWAP2 MSTORE PUSH0 DUP2 MSTORE JUMPDEST SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH0 PUSH2 0x402 PUSH2 0x3CB PUSH32 0x0 PUSH2 0xBB1 JUMP JUMPDEST PUSH8 0xDE0B6B3A7640000 PUSH2 0x3FD PUSH32 0x0 PUSH2 0xBB1 JUMP JUMPDEST PUSH2 0xD6E JUMP JUMPDEST SWAP1 POP SWAP1 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB PUSH32 0x0 AND ADDRESS SUB PUSH2 0x450 JUMPI PUSH1 0x40 MLOAD PUSH4 0x2ABF118B PUSH1 0xE2 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST DUP1 ISZERO PUSH2 0x6F4 JUMPI PUSH0 PUSH2 0x45F PUSH2 0xE1E JUMP JUMPDEST SWAP1 POP PUSH0 PUSH2 0x46A PUSH2 0xEF4 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH4 0x70A08231 PUSH1 0xE0 SHL DUP2 MSTORE ADDRESS PUSH1 0x4 DUP3 ADD MSTORE SWAP1 SWAP2 POP PUSH2 0x4FD SWAP1 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB PUSH32 0x0 AND SWAP1 PUSH4 0x70A08231 SWAP1 PUSH1 0x24 ADD PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x4D3 JUMPI RETURNDATASIZE PUSH0 PUSH0 RETURNDATACOPY RETURNDATASIZE PUSH0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP3 ADD DUP1 PUSH1 0x40 MSTORE POP DUP2 ADD SWAP1 PUSH2 0x4F7 SWAP2 SWAP1 PUSH2 0x12CC JUMP JUMPDEST ADDRESS PUSH2 0xF0A JUMP JUMPDEST DUP4 LT PUSH2 0x631 JUMPI PUSH1 0x40 MLOAD PUSH4 0x70A08231 PUSH1 0xE0 SHL DUP2 MSTORE ADDRESS PUSH1 0x4 DUP3 ADD MSTORE PUSH20 0x0 SWAP1 PUSH4 0x77566915 SWAP1 DUP5 SWAP1 PUSH32 0x0 SWAP1 PUSH32 0x0 SWAP1 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP4 AND SWAP1 PUSH4 0x70A08231 SWAP1 PUSH1 0x24 ADD PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x5A7 JUMPI RETURNDATASIZE PUSH0 PUSH0 RETURNDATACOPY RETURNDATASIZE PUSH0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP3 ADD DUP1 PUSH1 0x40 MSTORE POP DUP2 ADD SWAP1 PUSH2 0x5CB SWAP2 SWAP1 PUSH2 0x12CC JUMP JUMPDEST DUP7 PUSH1 0x40 MLOAD DUP7 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x5EC SWAP6 SWAP5 SWAP4 SWAP3 SWAP2 SWAP1 PUSH2 0x12E3 JUMP JUMPDEST PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 GAS DELEGATECALL ISZERO DUP1 ISZERO PUSH2 0x607 JUMPI RETURNDATASIZE PUSH0 PUSH0 RETURNDATACOPY RETURNDATASIZE PUSH0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP3 ADD DUP1 PUSH1 0x40 MSTORE POP DUP2 ADD SWAP1 PUSH2 0x62B SWAP2 SWAP1 PUSH2 0x12CC JUMP JUMPDEST POP PUSH2 0x6F1 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH4 0x581E517D PUSH1 0xE0 SHL DUP2 MSTORE PUSH20 0x0 SWAP1 PUSH4 0x581E517D SWAP1 PUSH2 0x6B0 SWAP1 DUP6 SWAP1 PUSH32 0x0 SWAP1 PUSH32 0x0 SWAP1 DUP10 SWAP1 DUP9 SWAP1 PUSH1 0x4 ADD PUSH2 0x12E3 JUMP JUMPDEST PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 GAS DELEGATECALL ISZERO DUP1 ISZERO PUSH2 0x6CB JUMPI RETURNDATASIZE PUSH0 PUSH0 RETURNDATACOPY RETURNDATASIZE PUSH0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP3 ADD DUP1 PUSH1 0x40 MSTORE POP DUP2 ADD SWAP1 PUSH2 0x6EF SWAP2 SWAP1 PUSH2 0x12CC JUMP JUMPDEST POP JUMPDEST POP POP JUMPDEST POP JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH1 0x60 DUP1 DUP3 ADD DUP4 MSTORE PUSH0 DUP1 DUP4 MSTORE PUSH1 0x20 DUP4 ADD MSTORE SWAP2 DUP2 ADD SWAP2 SWAP1 SWAP2 MSTORE PUSH2 0x398 DUP3 PUSH2 0x9CF JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB PUSH32 0x0 AND ADDRESS SUB PUSH2 0x764 JUMPI PUSH1 0x40 MLOAD PUSH4 0x2ABF118B PUSH1 0xE2 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST DUP1 ISZERO DUP1 ISZERO PUSH2 0x779 JUMPI POP PUSH2 0x776 ADDRESS PUSH2 0x93B JUMP JUMPDEST ISZERO ISZERO JUMPDEST ISZERO PUSH2 0x6F4 JUMPI PUSH1 0x40 MLOAD PUSH4 0x42A176D1 PUSH1 0xE1 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB PUSH32 0x0 AND ADDRESS SUB PUSH2 0x7E0 JUMPI PUSH1 0x40 MLOAD PUSH4 0x2ABF118B PUSH1 0xE2 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH1 0x60 DUP2 ADD SWAP1 SWAP2 MSTORE PUSH2 0x6F4 SWAP1 DUP1 PUSH0 DUP2 MSTORE PUSH1 0x20 ADD PUSH0 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x40 MLOAD DUP1 PUSH1 0x20 ADD PUSH1 0x40 MSTORE DUP1 PUSH0 DUP2 MSTORE POP DUP2 MSTORE POP DUP3 PUSH2 0xA91 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB PUSH32 0x0 AND ADDRESS SUB PUSH2 0x85D JUMPI PUSH1 0x40 MLOAD PUSH4 0x2ABF118B PUSH1 0xE2 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST DUP1 ISZERO PUSH2 0x6F4 JUMPI PUSH2 0x86B PUSH2 0xE1E JUMP JUMPDEST PUSH20 0x0 PUSH4 0x77566915 SWAP1 SWAP2 PUSH32 0x0 PUSH32 0x0 DUP6 PUSH2 0x8D2 PUSH2 0x39E JUMP JUMPDEST PUSH1 0x40 MLOAD DUP7 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x8F2 SWAP6 SWAP5 SWAP4 SWAP3 SWAP2 SWAP1 PUSH2 0x12E3 JUMP JUMPDEST PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 GAS DELEGATECALL ISZERO DUP1 ISZERO PUSH2 0x90D JUMPI RETURNDATASIZE PUSH0 PUSH0 RETURNDATACOPY RETURNDATASIZE PUSH0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP3 ADD DUP1 PUSH1 0x40 MSTORE POP DUP2 ADD SWAP1 PUSH2 0x931 SWAP2 SWAP1 PUSH2 0x12CC JUMP JUMPDEST POP POP JUMP JUMPDEST PUSH0 PUSH2 0x398 DUP3 JUMPDEST PUSH1 0x40 MLOAD PUSH4 0x70A08231 PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP3 DUP2 AND PUSH1 0x4 DUP4 ADD MSTORE PUSH0 SWAP2 PUSH2 0x398 SWAP2 PUSH32 0x0 AND SWAP1 PUSH4 0x70A08231 SWAP1 PUSH1 0x24 ADD PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x9A5 JUMPI RETURNDATASIZE PUSH0 PUSH0 RETURNDATACOPY RETURNDATASIZE PUSH0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP3 ADD DUP1 PUSH1 0x40 MSTORE POP DUP2 ADD SWAP1 PUSH2 0x9C9 SWAP2 SWAP1 PUSH2 0x12CC JUMP JUMPDEST DUP4 PUSH2 0xF0A JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH1 0x60 DUP1 DUP3 ADD DUP4 MSTORE PUSH0 DUP1 DUP4 MSTORE PUSH1 0x20 DUP4 ADD MSTORE SWAP2 DUP2 ADD SWAP2 SWAP1 SWAP2 MSTORE PUSH1 0x40 MLOAD PUSH4 0x47E57533 PUSH1 0xE0 SHL DUP2 MSTORE PUSH32 0x0 PUSH1 0x4 DUP3 ADD MSTORE PUSH0 SWAP1 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP5 AND SWAP1 PUSH4 0x47E57533 SWAP1 PUSH1 0x24 ADD PUSH0 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0xA4D JUMPI RETURNDATASIZE PUSH0 PUSH0 RETURNDATACOPY RETURNDATASIZE PUSH0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH0 DUP3 RETURNDATACOPY PUSH1 0x1F RETURNDATASIZE SWAP1 DUP2 ADD PUSH1 0x1F NOT AND DUP3 ADD PUSH1 0x40 MSTORE PUSH2 0xA74 SWAP2 SWAP1 DUP2 ADD SWAP1 PUSH2 0x136F JUMP JUMPDEST SWAP1 POP DUP1 DUP1 PUSH1 0x20 ADD SWAP1 MLOAD DUP2 ADD SWAP1 PUSH2 0xA8A SWAP2 SWAP1 PUSH2 0x13A1 JUMP JUMPDEST SWAP4 SWAP3 POP POP POP JUMP JUMPDEST PUSH0 DUP2 DUP1 PUSH1 0x20 ADD SWAP1 MLOAD DUP2 ADD SWAP1 PUSH2 0xAA6 SWAP2 SWAP1 PUSH2 0x13A1 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH4 0x2CBF28CB PUSH1 0xE2 SHL DUP2 MSTORE SWAP1 SWAP2 POP PUSH20 0x0 SWAP1 PUSH4 0xB2FCA32C SWAP1 PUSH2 0xAE0 SWAP1 DUP5 SWAP1 PUSH1 0x4 ADD PUSH2 0x1269 JUMP JUMPDEST PUSH0 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0xAF6 JUMPI PUSH0 PUSH0 REVERT JUMPDEST POP GAS DELEGATECALL ISZERO DUP1 ISZERO PUSH2 0xB08 JUMPI RETURNDATASIZE PUSH0 PUSH0 RETURNDATACOPY RETURNDATASIZE PUSH0 REVERT JUMPDEST POP POP POP POP DUP2 MLOAD DUP2 PUSH1 0x40 MLOAD PUSH1 0x20 ADD PUSH2 0xB1F SWAP2 SWAP1 PUSH2 0x1269 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH1 0x20 DUP2 DUP4 SUB SUB DUP2 MSTORE SWAP1 PUSH1 0x40 MSTORE MLOAD EQ PUSH2 0xB4D JUMPI PUSH1 0x40 MLOAD PUSH4 0x50701B61 PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH32 0xCA7F7AA563866A1D31C74DEBA224724D1DA9C35CBB6F783F2CCF0182F91E34F8 DUP4 DUP3 PUSH1 0x40 MLOAD PUSH2 0xB7E SWAP3 SWAP2 SWAP1 PUSH2 0x142D JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 LOG1 PUSH32 0x0 PUSH2 0x6EF DUP4 DUP3 PUSH2 0x14DD JUMP JUMPDEST PUSH0 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP3 AND PUSH2 0xBCF JUMPI POP PUSH8 0xDE0B6B3A7640000 SWAP2 SWAP1 POP JUMP JUMPDEST PUSH0 PUSH0 DUP4 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH4 0xFEAF968C PUSH1 0x40 MLOAD DUP2 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH1 0xA0 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0xC0D JUMPI RETURNDATASIZE PUSH0 PUSH0 RETURNDATACOPY RETURNDATASIZE PUSH0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP3 ADD DUP1 PUSH1 0x40 MSTORE POP DUP2 ADD SWAP1 PUSH2 0xC31 SWAP2 SWAP1 PUSH2 0x15B6 JUMP JUMPDEST POP SWAP4 POP POP SWAP3 POP POP PUSH32 0x0 TIMESTAMP PUSH2 0xC64 SWAP2 SWAP1 PUSH2 0x1618 JUMP JUMPDEST DUP2 GT PUSH2 0xC90 PUSH32 0x0 TIMESTAMP PUSH2 0x1618 JUMP JUMPDEST DUP3 SWAP1 SWAP2 PUSH2 0xCBE JUMPI PUSH1 0x40 MLOAD PUSH4 0x3156EA93 PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 DUP2 ADD SWAP3 SWAP1 SWAP3 MSTORE PUSH1 0x24 DUP3 ADD MSTORE PUSH1 0x44 ADD JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST POP POP PUSH0 DUP3 SGT DUP3 SWAP1 PUSH2 0xCE5 JUMPI PUSH1 0x40 MLOAD PUSH4 0x38EE04A7 PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0xCB5 SWAP2 DUP2 MSTORE PUSH1 0x20 ADD SWAP1 JUMP JUMPDEST 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 GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0xD22 JUMPI RETURNDATASIZE PUSH0 PUSH0 RETURNDATACOPY RETURNDATASIZE PUSH0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP3 ADD DUP1 PUSH1 0x40 MSTORE POP DUP2 ADD SWAP1 PUSH2 0xD46 SWAP2 SWAP1 PUSH2 0x162B JUMP JUMPDEST PUSH2 0xD51 SWAP1 PUSH1 0x12 PUSH2 0x1646 JUMP JUMPDEST PUSH2 0xD5C SWAP1 PUSH1 0xA PUSH2 0x1742 JUMP JUMPDEST PUSH2 0xD66 SWAP1 DUP4 PUSH2 0x1750 JUMP JUMPDEST SWAP5 SWAP4 POP POP POP POP JUMP JUMPDEST PUSH0 PUSH0 PUSH0 PUSH2 0xD7B DUP7 DUP7 PUSH2 0xFAC JUMP JUMPDEST SWAP2 POP SWAP2 POP DUP2 PUSH0 SUB PUSH2 0xD9F JUMPI DUP4 DUP2 DUP2 PUSH2 0xD95 JUMPI PUSH2 0xD95 PUSH2 0x1767 JUMP JUMPDEST DIV SWAP3 POP POP POP PUSH2 0xA8A JUMP JUMPDEST DUP2 DUP5 GT PUSH2 0xDB6 JUMPI PUSH2 0xDB6 PUSH1 0x3 DUP6 ISZERO MUL PUSH1 0x11 XOR PUSH2 0xFC8 JUMP JUMPDEST PUSH0 DUP5 DUP7 DUP9 MULMOD PUSH0 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 DUP6 DUP5 GT SWAP1 SWAP7 SUB SWAP6 SWAP1 SWAP6 MUL SWAP2 SWAP1 SWAP4 SUB SWAP4 SWAP1 SWAP4 DIV SWAP3 SWAP1 SWAP3 OR MUL SWAP2 POP POP SWAP4 SWAP3 POP POP POP JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH1 0x60 DUP1 DUP3 ADD DUP4 MSTORE PUSH0 DUP1 DUP4 MSTORE PUSH1 0x20 DUP4 ADD MSTORE SWAP2 DUP2 ADD SWAP2 SWAP1 SWAP2 MSTORE PUSH32 0x0 DUP1 SLOAD PUSH2 0xE65 SWAP1 PUSH2 0x145A 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 0xE91 SWAP1 PUSH2 0x145A JUMP JUMPDEST DUP1 ISZERO PUSH2 0xEDC JUMPI DUP1 PUSH1 0x1F LT PUSH2 0xEB3 JUMPI PUSH2 0x100 DUP1 DUP4 SLOAD DIV MUL DUP4 MSTORE SWAP2 PUSH1 0x20 ADD SWAP2 PUSH2 0xEDC JUMP JUMPDEST DUP3 ADD SWAP2 SWAP1 PUSH0 MSTORE PUSH1 0x20 PUSH0 KECCAK256 SWAP1 JUMPDEST DUP2 SLOAD DUP2 MSTORE SWAP1 PUSH1 0x1 ADD SWAP1 PUSH1 0x20 ADD DUP1 DUP4 GT PUSH2 0xEBF JUMPI DUP3 SWAP1 SUB PUSH1 0x1F AND DUP3 ADD SWAP2 JUMPDEST POP POP POP POP POP DUP1 PUSH1 0x20 ADD SWAP1 MLOAD DUP2 ADD SWAP1 PUSH2 0x402 SWAP2 SWAP1 PUSH2 0x13A1 JUMP JUMPDEST PUSH0 PUSH2 0x402 PUSH8 0xDE0B6B3A7640000 DUP1 PUSH2 0x3FD PUSH2 0x39E JUMP JUMPDEST PUSH0 PUSH2 0xF34 PUSH32 0x0 PUSH2 0xFD9 JUMP JUMPDEST PUSH2 0xFA2 PUSH2 0xF83 PUSH2 0xF63 PUSH32 0x0 PUSH2 0xFD9 JUMP JUMPDEST PUSH2 0xF6D SWAP1 DUP8 PUSH2 0x1750 JUMP JUMPDEST PUSH2 0xF75 PUSH2 0x39E JUMP JUMPDEST PUSH8 0xDE0B6B3A7640000 PUSH2 0xD6E JUMP JUMPDEST PUSH2 0xF8C DUP6 PUSH2 0x9CF JUMP JUMPDEST PUSH1 0x20 ADD MLOAD PUSH2 0xF75 SWAP1 PUSH8 0xDE0B6B3A7640000 PUSH2 0x1618 JUMP JUMPDEST PUSH2 0xA8A SWAP2 SWAP1 PUSH2 0x177B JUMP JUMPDEST PUSH0 DUP1 PUSH0 NOT DUP4 DUP6 MULMOD SWAP4 SWAP1 SWAP3 MUL DUP1 DUP5 LT SWAP4 DUP2 SWAP1 SUB SWAP4 SWAP1 SWAP4 SUB SWAP4 SWAP2 POP POP JUMP JUMPDEST PUSH4 0x4E487B71 PUSH0 MSTORE DUP1 PUSH1 0x20 MSTORE PUSH1 0x24 PUSH1 0x1C REVERT JUMPDEST PUSH0 DUP2 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 GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x1016 JUMPI RETURNDATASIZE PUSH0 PUSH0 RETURNDATACOPY RETURNDATASIZE PUSH0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP3 ADD DUP1 PUSH1 0x40 MSTORE POP DUP2 ADD SWAP1 PUSH2 0x103A SWAP2 SWAP1 PUSH2 0x162B JUMP JUMPDEST PUSH2 0x1045 SWAP1 PUSH1 0x12 PUSH2 0x1646 JUMP JUMPDEST PUSH2 0x398 SWAP1 PUSH1 0xA PUSH2 0x1742 JUMP JUMPDEST PUSH1 0xFF DUP2 AND DUP2 EQ PUSH2 0x6F4 JUMPI PUSH0 PUSH0 REVERT JUMPDEST PUSH4 0x4E487B71 PUSH1 0xE0 SHL PUSH0 MSTORE PUSH1 0x41 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH0 REVERT JUMPDEST PUSH1 0x40 MLOAD PUSH1 0x60 DUP2 ADD PUSH8 0xFFFFFFFFFFFFFFFF DUP2 GT DUP3 DUP3 LT OR ISZERO PUSH2 0x1095 JUMPI PUSH2 0x1095 PUSH2 0x105E JUMP JUMPDEST PUSH1 0x40 MSTORE SWAP1 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH1 0x1F DUP3 ADD PUSH1 0x1F NOT AND DUP2 ADD PUSH8 0xFFFFFFFFFFFFFFFF DUP2 GT DUP3 DUP3 LT OR ISZERO PUSH2 0x10C4 JUMPI PUSH2 0x10C4 PUSH2 0x105E JUMP JUMPDEST PUSH1 0x40 MSTORE SWAP2 SWAP1 POP JUMP JUMPDEST PUSH0 PUSH8 0xFFFFFFFFFFFFFFFF DUP3 GT ISZERO PUSH2 0x10E5 JUMPI PUSH2 0x10E5 PUSH2 0x105E JUMP JUMPDEST POP PUSH1 0x1F ADD PUSH1 0x1F NOT AND PUSH1 0x20 ADD SWAP1 JUMP JUMPDEST PUSH0 DUP3 PUSH1 0x1F DUP4 ADD SLT PUSH2 0x1102 JUMPI PUSH0 PUSH0 REVERT JUMPDEST DUP2 CALLDATALOAD PUSH2 0x1115 PUSH2 0x1110 DUP3 PUSH2 0x10CC JUMP JUMPDEST PUSH2 0x109B JUMP JUMPDEST DUP2 DUP2 MSTORE DUP5 PUSH1 0x20 DUP4 DUP7 ADD ADD GT ISZERO PUSH2 0x1129 JUMPI PUSH0 PUSH0 REVERT JUMPDEST DUP2 PUSH1 0x20 DUP6 ADD PUSH1 0x20 DUP4 ADD CALLDATACOPY PUSH0 SWAP2 DUP2 ADD PUSH1 0x20 ADD SWAP2 SWAP1 SWAP2 MSTORE SWAP4 SWAP3 POP POP POP JUMP JUMPDEST PUSH0 PUSH0 PUSH1 0x40 DUP4 DUP6 SUB SLT ISZERO PUSH2 0x1156 JUMPI PUSH0 PUSH0 REVERT JUMPDEST DUP3 CALLDATALOAD PUSH2 0x1161 DUP2 PUSH2 0x1050 JUMP JUMPDEST SWAP2 POP PUSH1 0x20 DUP4 ADD CALLDATALOAD PUSH8 0xFFFFFFFFFFFFFFFF DUP2 GT ISZERO PUSH2 0x117C JUMPI PUSH0 PUSH0 REVERT JUMPDEST PUSH2 0x1188 DUP6 DUP3 DUP7 ADD PUSH2 0x10F3 JUMP JUMPDEST SWAP2 POP POP SWAP3 POP SWAP3 SWAP1 POP JUMP JUMPDEST PUSH0 DUP2 MLOAD DUP1 DUP5 MSTORE DUP1 PUSH1 0x20 DUP5 ADD PUSH1 0x20 DUP7 ADD MCOPY PUSH0 PUSH1 0x20 DUP3 DUP7 ADD ADD MSTORE PUSH1 0x20 PUSH1 0x1F NOT PUSH1 0x1F DUP4 ADD AND DUP6 ADD ADD SWAP2 POP POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x20 DUP2 MSTORE PUSH0 PUSH2 0xA8A PUSH1 0x20 DUP4 ADD DUP5 PUSH2 0x1192 JUMP JUMPDEST PUSH0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x11E2 JUMPI PUSH0 PUSH0 REVERT JUMPDEST POP CALLDATALOAD SWAP2 SWAP1 POP JUMP JUMPDEST PUSH0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x11F9 JUMPI PUSH0 PUSH0 REVERT JUMPDEST DUP2 CALLDATALOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 AND DUP2 EQ PUSH2 0xA8A JUMPI PUSH0 PUSH0 REVERT JUMPDEST PUSH4 0x4E487B71 PUSH1 0xE0 SHL PUSH0 MSTORE PUSH1 0x21 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH0 REVERT JUMPDEST PUSH0 DUP2 MLOAD PUSH1 0x3 DUP2 LT PUSH2 0x1242 JUMPI PUSH4 0x4E487B71 PUSH1 0xE0 SHL PUSH0 MSTORE PUSH1 0x21 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH0 REVERT JUMPDEST DUP1 DUP5 MSTORE POP PUSH1 0x20 DUP3 ADD MLOAD PUSH1 0x20 DUP5 ADD MSTORE PUSH1 0x40 DUP3 ADD MLOAD PUSH1 0x60 PUSH1 0x40 DUP6 ADD MSTORE PUSH2 0xD66 PUSH1 0x60 DUP6 ADD DUP3 PUSH2 0x1192 JUMP JUMPDEST PUSH1 0x20 DUP2 MSTORE PUSH0 PUSH2 0xA8A PUSH1 0x20 DUP4 ADD DUP5 PUSH2 0x1223 JUMP JUMPDEST PUSH0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x128B JUMPI PUSH0 PUSH0 REVERT JUMPDEST DUP2 CALLDATALOAD DUP1 ISZERO ISZERO DUP2 EQ PUSH2 0xA8A JUMPI PUSH0 PUSH0 REVERT JUMPDEST PUSH0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x12AA JUMPI PUSH0 PUSH0 REVERT JUMPDEST DUP2 CALLDATALOAD PUSH8 0xFFFFFFFFFFFFFFFF DUP2 GT ISZERO PUSH2 0x12C0 JUMPI PUSH0 PUSH0 REVERT JUMPDEST PUSH2 0xD66 DUP5 DUP3 DUP6 ADD PUSH2 0x10F3 JUMP JUMPDEST PUSH0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x12DC JUMPI PUSH0 PUSH0 REVERT JUMPDEST POP MLOAD SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0xA0 DUP2 MSTORE PUSH0 PUSH2 0x12F5 PUSH1 0xA0 DUP4 ADD DUP9 PUSH2 0x1223 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP7 DUP8 AND PUSH1 0x20 DUP5 ADD MSTORE SWAP5 SWAP1 SWAP6 AND PUSH1 0x40 DUP3 ADD MSTORE PUSH1 0x60 DUP2 ADD SWAP3 SWAP1 SWAP3 MSTORE PUSH1 0x80 SWAP1 SWAP2 ADD MSTORE SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH0 DUP3 PUSH1 0x1F DUP4 ADD SLT PUSH2 0x1331 JUMPI PUSH0 PUSH0 REVERT JUMPDEST DUP2 MLOAD PUSH2 0x133F PUSH2 0x1110 DUP3 PUSH2 0x10CC JUMP JUMPDEST DUP2 DUP2 MSTORE DUP5 PUSH1 0x20 DUP4 DUP7 ADD ADD GT ISZERO PUSH2 0x1353 JUMPI PUSH0 PUSH0 REVERT JUMPDEST DUP2 PUSH1 0x20 DUP6 ADD PUSH1 0x20 DUP4 ADD MCOPY PUSH0 SWAP2 DUP2 ADD PUSH1 0x20 ADD SWAP2 SWAP1 SWAP2 MSTORE SWAP4 SWAP3 POP POP POP JUMP JUMPDEST PUSH0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x137F JUMPI PUSH0 PUSH0 REVERT JUMPDEST DUP2 MLOAD PUSH8 0xFFFFFFFFFFFFFFFF DUP2 GT ISZERO PUSH2 0x1395 JUMPI PUSH0 PUSH0 REVERT JUMPDEST PUSH2 0xD66 DUP5 DUP3 DUP6 ADD PUSH2 0x1322 JUMP JUMPDEST PUSH0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x13B1 JUMPI PUSH0 PUSH0 REVERT JUMPDEST DUP2 MLOAD PUSH8 0xFFFFFFFFFFFFFFFF DUP2 GT ISZERO PUSH2 0x13C7 JUMPI PUSH0 PUSH0 REVERT JUMPDEST DUP3 ADD PUSH1 0x60 DUP2 DUP6 SUB SLT ISZERO PUSH2 0x13D8 JUMPI PUSH0 PUSH0 REVERT JUMPDEST PUSH2 0x13E0 PUSH2 0x1072 JUMP JUMPDEST DUP2 MLOAD PUSH1 0x3 DUP2 LT PUSH2 0x13EE JUMPI PUSH0 PUSH0 REVERT JUMPDEST DUP2 MSTORE PUSH1 0x20 DUP3 DUP2 ADD MLOAD SWAP1 DUP3 ADD MSTORE PUSH1 0x40 DUP3 ADD MLOAD PUSH8 0xFFFFFFFFFFFFFFFF DUP2 GT ISZERO PUSH2 0x1413 JUMPI PUSH0 PUSH0 REVERT JUMPDEST PUSH2 0x141F DUP7 DUP3 DUP6 ADD PUSH2 0x1322 JUMP JUMPDEST PUSH1 0x40 DUP4 ADD MSTORE POP SWAP5 SWAP4 POP POP POP POP JUMP JUMPDEST PUSH1 0x40 DUP2 MSTORE PUSH0 PUSH2 0x143F PUSH1 0x40 DUP4 ADD DUP6 PUSH2 0x1223 JUMP JUMPDEST DUP3 DUP2 SUB PUSH1 0x20 DUP5 ADD MSTORE PUSH2 0x1451 DUP2 DUP6 PUSH2 0x1223 JUMP JUMPDEST SWAP6 SWAP5 POP POP POP POP POP JUMP JUMPDEST PUSH1 0x1 DUP2 DUP2 SHR SWAP1 DUP3 AND DUP1 PUSH2 0x146E JUMPI PUSH1 0x7F DUP3 AND SWAP2 POP JUMPDEST PUSH1 0x20 DUP3 LT DUP2 SUB PUSH2 0x148C JUMPI PUSH4 0x4E487B71 PUSH1 0xE0 SHL PUSH0 MSTORE PUSH1 0x22 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH0 REVERT JUMPDEST POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x1F DUP3 GT ISZERO PUSH2 0x6F1 JUMPI DUP1 PUSH0 MSTORE PUSH1 0x20 PUSH0 KECCAK256 PUSH1 0x1F DUP5 ADD PUSH1 0x5 SHR DUP2 ADD PUSH1 0x20 DUP6 LT ISZERO PUSH2 0x14B7 JUMPI POP DUP1 JUMPDEST PUSH1 0x1F DUP5 ADD PUSH1 0x5 SHR DUP3 ADD SWAP2 POP JUMPDEST DUP2 DUP2 LT ISZERO PUSH2 0x14D6 JUMPI PUSH0 DUP2 SSTORE PUSH1 0x1 ADD PUSH2 0x14C3 JUMP JUMPDEST POP POP POP POP POP JUMP JUMPDEST DUP2 MLOAD PUSH8 0xFFFFFFFFFFFFFFFF DUP2 GT ISZERO PUSH2 0x14F7 JUMPI PUSH2 0x14F7 PUSH2 0x105E JUMP JUMPDEST PUSH2 0x150B DUP2 PUSH2 0x1505 DUP5 SLOAD PUSH2 0x145A JUMP JUMPDEST DUP5 PUSH2 0x1492 JUMP JUMPDEST PUSH1 0x20 PUSH1 0x1F DUP3 GT PUSH1 0x1 DUP2 EQ PUSH2 0x153D JUMPI PUSH0 DUP4 ISZERO PUSH2 0x1526 JUMPI POP DUP5 DUP3 ADD MLOAD JUMPDEST PUSH0 NOT PUSH1 0x3 DUP6 SWAP1 SHL SHR NOT AND PUSH1 0x1 DUP5 SWAP1 SHL OR DUP5 SSTORE PUSH2 0x14D6 JUMP JUMPDEST PUSH0 DUP5 DUP2 MSTORE PUSH1 0x20 DUP2 KECCAK256 PUSH1 0x1F NOT DUP6 AND SWAP2 JUMPDEST DUP3 DUP2 LT ISZERO PUSH2 0x156C JUMPI DUP8 DUP6 ADD MLOAD DUP3 SSTORE PUSH1 0x20 SWAP5 DUP6 ADD SWAP5 PUSH1 0x1 SWAP1 SWAP3 ADD SWAP2 ADD PUSH2 0x154C JUMP JUMPDEST POP DUP5 DUP3 LT ISZERO PUSH2 0x1589 JUMPI DUP7 DUP5 ADD MLOAD PUSH0 NOT PUSH1 0x3 DUP8 SWAP1 SHL PUSH1 0xF8 AND SHR NOT AND DUP2 SSTORE JUMPDEST POP POP POP POP PUSH1 0x1 SWAP1 DUP2 SHL ADD SWAP1 SSTORE POP JUMP JUMPDEST DUP1 MLOAD PUSH10 0xFFFFFFFFFFFFFFFFFFFF DUP2 AND DUP2 EQ PUSH2 0x15B1 JUMPI PUSH0 PUSH0 REVERT JUMPDEST SWAP2 SWAP1 POP JUMP JUMPDEST PUSH0 PUSH0 PUSH0 PUSH0 PUSH0 PUSH1 0xA0 DUP7 DUP9 SUB SLT ISZERO PUSH2 0x15CA JUMPI PUSH0 PUSH0 REVERT JUMPDEST PUSH2 0x15D3 DUP7 PUSH2 0x1598 JUMP JUMPDEST PUSH1 0x20 DUP8 ADD MLOAD PUSH1 0x40 DUP9 ADD MLOAD PUSH1 0x60 DUP10 ADD MLOAD SWAP3 SWAP8 POP SWAP1 SWAP6 POP SWAP4 POP SWAP2 POP PUSH2 0x15F8 PUSH1 0x80 DUP8 ADD PUSH2 0x1598 JUMP JUMPDEST SWAP1 POP SWAP3 SWAP6 POP SWAP3 SWAP6 SWAP1 SWAP4 POP JUMP JUMPDEST PUSH4 0x4E487B71 PUSH1 0xE0 SHL PUSH0 MSTORE PUSH1 0x11 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH0 REVERT JUMPDEST DUP2 DUP2 SUB DUP2 DUP2 GT ISZERO PUSH2 0x398 JUMPI PUSH2 0x398 PUSH2 0x1604 JUMP JUMPDEST PUSH0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x163B JUMPI PUSH0 PUSH0 REVERT JUMPDEST DUP2 MLOAD PUSH2 0xA8A DUP2 PUSH2 0x1050 JUMP JUMPDEST PUSH1 0xFF DUP3 DUP2 AND DUP3 DUP3 AND SUB SWAP1 DUP2 GT ISZERO PUSH2 0x398 JUMPI PUSH2 0x398 PUSH2 0x1604 JUMP JUMPDEST PUSH1 0x1 DUP2 JUMPDEST PUSH1 0x1 DUP5 GT ISZERO PUSH2 0x169A JUMPI DUP1 DUP6 DIV DUP2 GT ISZERO PUSH2 0x167E JUMPI PUSH2 0x167E PUSH2 0x1604 JUMP JUMPDEST PUSH1 0x1 DUP5 AND ISZERO PUSH2 0x168C JUMPI SWAP1 DUP2 MUL SWAP1 JUMPDEST PUSH1 0x1 SWAP4 SWAP1 SWAP4 SHR SWAP3 DUP1 MUL PUSH2 0x1663 JUMP JUMPDEST SWAP4 POP SWAP4 SWAP2 POP POP JUMP JUMPDEST PUSH0 DUP3 PUSH2 0x16B0 JUMPI POP PUSH1 0x1 PUSH2 0x398 JUMP JUMPDEST DUP2 PUSH2 0x16BC JUMPI POP PUSH0 PUSH2 0x398 JUMP JUMPDEST DUP2 PUSH1 0x1 DUP2 EQ PUSH2 0x16D2 JUMPI PUSH1 0x2 DUP2 EQ PUSH2 0x16DC JUMPI PUSH2 0x16F8 JUMP JUMPDEST PUSH1 0x1 SWAP2 POP POP PUSH2 0x398 JUMP JUMPDEST PUSH1 0xFF DUP5 GT ISZERO PUSH2 0x16ED JUMPI PUSH2 0x16ED PUSH2 0x1604 JUMP JUMPDEST POP POP PUSH1 0x1 DUP3 SHL PUSH2 0x398 JUMP JUMPDEST POP PUSH1 0x20 DUP4 LT PUSH2 0x133 DUP4 LT AND PUSH1 0x4E DUP5 LT PUSH1 0xB DUP5 LT AND OR ISZERO PUSH2 0x171B JUMPI POP DUP2 DUP2 EXP PUSH2 0x398 JUMP JUMPDEST PUSH2 0x1727 PUSH0 NOT DUP5 DUP5 PUSH2 0x165F JUMP JUMPDEST DUP1 PUSH0 NOT DIV DUP3 GT ISZERO PUSH2 0x173A JUMPI PUSH2 0x173A PUSH2 0x1604 JUMP JUMPDEST MUL SWAP4 SWAP3 POP POP POP JUMP JUMPDEST PUSH0 PUSH2 0xA8A PUSH1 0xFF DUP5 AND DUP4 PUSH2 0x16A2 JUMP JUMPDEST DUP1 DUP3 MUL DUP2 ISZERO DUP3 DUP3 DIV DUP5 EQ OR PUSH2 0x398 JUMPI PUSH2 0x398 PUSH2 0x1604 JUMP JUMPDEST PUSH4 0x4E487B71 PUSH1 0xE0 SHL PUSH0 MSTORE PUSH1 0x12 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH0 REVERT JUMPDEST PUSH0 DUP3 PUSH2 0x1795 JUMPI PUSH4 0x4E487B71 PUSH1 0xE0 SHL PUSH0 MSTORE PUSH1 0x12 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH0 REVERT JUMPDEST POP DIV SWAP1 JUMP INVALID LOG2 PUSH5 0x6970667358 0x22 SLT KECCAK256 0xFC ADDMOD 0xA7 DUP10 RETURNDATASIZE 0x23 0xAF 0xDA 0x4C EXTCODECOPY 0xB4 0xA8 NOT ADDRESS 0xE8 PUSH29 0x3CC290D1B17C4F92B0C50FE828DFA09664736F6C634300081E00330000 ","sourceMap":"1019:4:83:-:0;975:49;;;;999:1817:77;7309:54:53;1574:21:87;;;1631:2;1611:18;1604:30;1670:32;1650:18;1643:60;1755:20;1748:62;;;;999:1817:77;7309:54:53;;;1720:19:87;7309:54:53;;7299:65;;1028:81:83;;1834:356:77;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;2049:6;2057:12;1983:2:83;1962:6;-1:-1:-1;;;;;1962:15:83;;:17;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;:23;;;;1954:48;;;;-1:-1:-1;;;1954:48:83;;;;;;;;;;;;2043:2;2016:12;-1:-1:-1;;;;;2016:21:83;;:23;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;:29;;;;2008:54;;;;-1:-1:-1;;;2008:54:83;;;;;;;;;;;;2086:12;-1:-1:-1;;;;;2076:22:83;:6;-1:-1:-1;;;;;2076:22:83;;2068:47;;;;-1:-1:-1;;;2068:47:83;;;;;;;;;;;;-1:-1:-1;;;;;2121:15:83;;;;;2142:27;;;;2077:38:77;;::::1;;::::0;2121:26;::::1;;::::0;2153:32:::1;::::0;-1:-1:-1;999:1817:77;;-1:-1:-1;999:1817:77;14:147:87;-1:-1:-1;;;;;105:31:87;;95:42;;85:70;;151:1;148;141:12;85:70;14:147;:::o;166:888::-;380:6;388;396;404;412;465:3;453:9;444:7;440:23;436:33;433:53;;;482:1;479;472:12;433:53;514:9;508:16;533:47;574:5;533:47;:::i;:::-;649:2;634:18;;628:25;599:5;;-1:-1:-1;662:49:87;628:25;662:49;:::i;:::-;782:2;767:18;;761:25;730:7;;-1:-1:-1;795:49:87;761:25;795:49;:::i;:::-;915:2;900:18;;894:25;863:7;;-1:-1:-1;928:49:87;894:25;928:49;:::i;:::-;996:7;986:17;;;1043:3;1032:9;1028:19;1022:26;1012:36;;166:888;;;;;;;;:::o;1059:273::-;1127:6;1180:2;1168:9;1159:7;1155:23;1151:32;1148:52;;;1196:1;1193;1186:12;1148:52;1228:9;1222:16;1278:4;1271:5;1267:16;1260:5;1257:27;1247:55;;1298:1;1295;1288:12;1247:55;1321:5;1059:273;-1:-1:-1;;;1059:273:87:o;1337:479::-;999:1817:77;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;"},"deployedBytecode":{"functionDebugData":{"@_convertAssets_24221":{"entryPoint":3850,"id":24221,"parameterSlots":2,"returnSlots":1},"@_getOraclePrice_22359":{"entryPoint":2993,"id":22359,"parameterSlots":1,"returnSlots":1},"@_getSwapConfigSelf_24494":{"entryPoint":3614,"id":24494,"parameterSlots":0,"returnSlots":1},"@_getSwapConfig_24475":{"entryPoint":2511,"id":24475,"parameterSlots":1,"returnSlots":1},"@_setSwapConfig_24405":{"entryPoint":2705,"id":24405,"parameterSlots":2,"returnSlots":0},"@_toWadFactor_24055":{"entryPoint":4057,"id":24055,"parameterSlots":1,"returnSlots":1},"@assetOracle_22223":{"entryPoint":null,"id":22223,"parameterSlots":0,"returnSlots":0},"@asset_24150":{"entryPoint":null,"id":24150,"parameterSlots":1,"returnSlots":1},"@connect_24080":{"entryPoint":1943,"id":24080,"parameterSlots":1,"returnSlots":0},"@deposit_24352":{"entryPoint":2068,"id":24352,"parameterSlots":1,"returnSlots":0},"@disconnect_24105":{"entryPoint":1819,"id":24105,"parameterSlots":1,"returnSlots":0},"@forwardEntryPoint_24449":{"entryPoint":768,"id":24449,"parameterSlots":2,"returnSlots":1},"@getBytesSlot_11020":{"entryPoint":null,"id":11020,"parameterSlots":1,"returnSlots":1},"@getSwapConfig_24508":{"entryPoint":1783,"id":24508,"parameterSlots":1,"returnSlots":1},"@investAssetOracle_22226":{"entryPoint":null,"id":22226,"parameterSlots":0,"returnSlots":0},"@investAssetPrice_22291":{"entryPoint":926,"id":22291,"parameterSlots":0,"returnSlots":1},"@investAsset_24164":{"entryPoint":null,"id":24164,"parameterSlots":1,"returnSlots":1},"@maxDeposit_24135":{"entryPoint":null,"id":24135,"parameterSlots":1,"returnSlots":1},"@maxWithdraw_24119":{"entryPoint":2357,"id":24119,"parameterSlots":1,"returnSlots":1},"@mul512_11124":{"entryPoint":4012,"id":11124,"parameterSlots":2,"returnSlots":2},"@mulDiv_11611":{"entryPoint":3438,"id":11611,"parameterSlots":3,"returnSlots":1},"@panic_10907":{"entryPoint":4040,"id":10907,"parameterSlots":1,"returnSlots":0},"@priceTolerance_22228":{"entryPoint":null,"id":22228,"parameterSlots":0,"returnSlots":0},"@sellInvestAssetPrice_24184":{"entryPoint":3828,"id":24184,"parameterSlots":0,"returnSlots":1},"@storageSlot_23952":{"entryPoint":null,"id":23952,"parameterSlots":0,"returnSlots":0},"@ternary_11373":{"entryPoint":null,"id":11373,"parameterSlots":3,"returnSlots":1},"@toUint_14490":{"entryPoint":null,"id":14490,"parameterSlots":1,"returnSlots":1},"@totalAssets_24239":{"entryPoint":2363,"id":24239,"parameterSlots":1,"returnSlots":1},"@withdraw_24321":{"entryPoint":1031,"id":24321,"parameterSlots":1,"returnSlots":0},"abi_decode_bytes":{"entryPoint":4339,"id":null,"parameterSlots":2,"returnSlots":1},"abi_decode_bytes_fromMemory":{"entryPoint":4898,"id":null,"parameterSlots":2,"returnSlots":1},"abi_decode_tuple_t_address":{"entryPoint":4585,"id":null,"parameterSlots":2,"returnSlots":1},"abi_decode_tuple_t_bool":{"entryPoint":4731,"id":null,"parameterSlots":2,"returnSlots":1},"abi_decode_tuple_t_bytes_memory_ptr":{"entryPoint":4762,"id":null,"parameterSlots":2,"returnSlots":1},"abi_decode_tuple_t_bytes_memory_ptr_fromMemory":{"entryPoint":4975,"id":null,"parameterSlots":2,"returnSlots":1},"abi_decode_tuple_t_struct$_SwapConfig_$1113_memory_ptr_fromMemory":{"entryPoint":5025,"id":null,"parameterSlots":2,"returnSlots":1},"abi_decode_tuple_t_uint256":{"entryPoint":4562,"id":null,"parameterSlots":2,"returnSlots":1},"abi_decode_tuple_t_uint256_fromMemory":{"entryPoint":4812,"id":null,"parameterSlots":2,"returnSlots":1},"abi_decode_tuple_t_uint80t_int256t_uint256t_uint256t_uint80_fromMemory":{"entryPoint":5558,"id":null,"parameterSlots":2,"returnSlots":5},"abi_decode_tuple_t_uint8_fromMemory":{"entryPoint":5675,"id":null,"parameterSlots":2,"returnSlots":1},"abi_decode_tuple_t_uint8t_bytes_memory_ptr":{"entryPoint":4421,"id":null,"parameterSlots":2,"returnSlots":2},"abi_decode_uint80_fromMemory":{"entryPoint":5528,"id":null,"parameterSlots":1,"returnSlots":1},"abi_encode_bytes":{"entryPoint":4498,"id":null,"parameterSlots":2,"returnSlots":1},"abi_encode_struct_SwapConfig":{"entryPoint":4643,"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_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":4544,"id":null,"parameterSlots":2,"returnSlots":1},"abi_encode_tuple_t_contract$_AggregatorV3Interface_$20542__to_t_address__fromStack_reversed":{"entryPoint":null,"id":null,"parameterSlots":2,"returnSlots":1},"abi_encode_tuple_t_int256__to_t_int256__fromStack_reversed":{"entryPoint":null,"id":null,"parameterSlots":2,"returnSlots":1},"abi_encode_tuple_t_struct$_SwapConfig_$1113_memory_ptr__to_t_struct$_SwapConfig_$1113_memory_ptr__fromStack_library_reversed":{"entryPoint":null,"id":null,"parameterSlots":2,"returnSlots":1},"abi_encode_tuple_t_struct$_SwapConfig_$1113_memory_ptr__to_t_struct$_SwapConfig_$1113_memory_ptr__fromStack_reversed":{"entryPoint":4713,"id":null,"parameterSlots":2,"returnSlots":1},"abi_encode_tuple_t_struct$_SwapConfig_$1113_memory_ptr_t_address_t_address_t_uint256_t_uint256__to_t_struct$_SwapConfig_$1113_memory_ptr_t_address_t_address_t_uint256_t_uint256__fromStack_library_reversed":{"entryPoint":4835,"id":null,"parameterSlots":6,"returnSlots":1},"abi_encode_tuple_t_struct$_SwapConfig_$1113_memory_ptr_t_struct$_SwapConfig_$1113_memory_ptr__to_t_struct$_SwapConfig_$1113_memory_ptr_t_struct$_SwapConfig_$1113_memory_ptr__fromStack_reversed":{"entryPoint":5165,"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},"allocate_memory":{"entryPoint":4251,"id":null,"parameterSlots":1,"returnSlots":1},"allocate_memory_1712":{"entryPoint":4210,"id":null,"parameterSlots":0,"returnSlots":1},"array_allocation_size_bytes":{"entryPoint":4300,"id":null,"parameterSlots":1,"returnSlots":1},"array_dataslot_bytes_storage":{"entryPoint":null,"id":null,"parameterSlots":1,"returnSlots":1},"checked_div_t_uint256":{"entryPoint":6011,"id":null,"parameterSlots":2,"returnSlots":1},"checked_exp_helper":{"entryPoint":5727,"id":null,"parameterSlots":3,"returnSlots":2},"checked_exp_t_uint256_t_uint8":{"entryPoint":5954,"id":null,"parameterSlots":2,"returnSlots":1},"checked_exp_unsigned":{"entryPoint":5794,"id":null,"parameterSlots":2,"returnSlots":1},"checked_mul_t_uint256":{"entryPoint":5968,"id":null,"parameterSlots":2,"returnSlots":1},"checked_sub_t_uint256":{"entryPoint":5656,"id":null,"parameterSlots":2,"returnSlots":1},"checked_sub_t_uint8":{"entryPoint":5702,"id":null,"parameterSlots":2,"returnSlots":1},"clean_up_bytearray_end_slots_bytes_storage":{"entryPoint":5266,"id":null,"parameterSlots":3,"returnSlots":0},"copy_byte_array_to_storage_from_t_bytes_memory_ptr_to_t_bytes_storage":{"entryPoint":5341,"id":null,"parameterSlots":2,"returnSlots":0},"extract_byte_array_length":{"entryPoint":5210,"id":null,"parameterSlots":1,"returnSlots":1},"extract_used_part_and_set_length_of_short_byte_array":{"entryPoint":null,"id":null,"parameterSlots":2,"returnSlots":1},"panic_error_0x11":{"entryPoint":5636,"id":null,"parameterSlots":0,"returnSlots":0},"panic_error_0x12":{"entryPoint":5991,"id":null,"parameterSlots":0,"returnSlots":0},"panic_error_0x21":{"entryPoint":4623,"id":null,"parameterSlots":0,"returnSlots":0},"panic_error_0x41":{"entryPoint":4190,"id":null,"parameterSlots":0,"returnSlots":0},"validator_revert_uint8":{"entryPoint":4176,"id":null,"parameterSlots":1,"returnSlots":0}},"generatedSources":[{"ast":{"nativeSrc":"0:14858:87","nodeType":"YulBlock","src":"0:14858:87","statements":[{"nativeSrc":"6:3:87","nodeType":"YulBlock","src":"6:3:87","statements":[]},{"body":{"nativeSrc":"57:71:87","nodeType":"YulBlock","src":"57:71:87","statements":[{"body":{"nativeSrc":"106:16:87","nodeType":"YulBlock","src":"106:16:87","statements":[{"expression":{"arguments":[{"kind":"number","nativeSrc":"115:1:87","nodeType":"YulLiteral","src":"115:1:87","type":"","value":"0"},{"kind":"number","nativeSrc":"118:1:87","nodeType":"YulLiteral","src":"118:1:87","type":"","value":"0"}],"functionName":{"name":"revert","nativeSrc":"108:6:87","nodeType":"YulIdentifier","src":"108:6:87"},"nativeSrc":"108:12:87","nodeType":"YulFunctionCall","src":"108:12:87"},"nativeSrc":"108:12:87","nodeType":"YulExpressionStatement","src":"108:12:87"}]},"condition":{"arguments":[{"arguments":[{"name":"value","nativeSrc":"80:5:87","nodeType":"YulIdentifier","src":"80:5:87"},{"arguments":[{"name":"value","nativeSrc":"91:5:87","nodeType":"YulIdentifier","src":"91:5:87"},{"kind":"number","nativeSrc":"98:4:87","nodeType":"YulLiteral","src":"98:4:87","type":"","value":"0xff"}],"functionName":{"name":"and","nativeSrc":"87:3:87","nodeType":"YulIdentifier","src":"87:3:87"},"nativeSrc":"87:16:87","nodeType":"YulFunctionCall","src":"87:16:87"}],"functionName":{"name":"eq","nativeSrc":"77:2:87","nodeType":"YulIdentifier","src":"77:2:87"},"nativeSrc":"77:27:87","nodeType":"YulFunctionCall","src":"77:27:87"}],"functionName":{"name":"iszero","nativeSrc":"70:6:87","nodeType":"YulIdentifier","src":"70:6:87"},"nativeSrc":"70:35:87","nodeType":"YulFunctionCall","src":"70:35:87"},"nativeSrc":"67:55:87","nodeType":"YulIf","src":"67:55:87"}]},"name":"validator_revert_uint8","nativeSrc":"14:114:87","nodeType":"YulFunctionDefinition","parameters":[{"name":"value","nativeSrc":"46:5:87","nodeType":"YulTypedName","src":"46:5:87","type":""}],"src":"14:114:87"},{"body":{"nativeSrc":"165:95:87","nodeType":"YulBlock","src":"165:95:87","statements":[{"expression":{"arguments":[{"kind":"number","nativeSrc":"182:1:87","nodeType":"YulLiteral","src":"182:1:87","type":"","value":"0"},{"arguments":[{"kind":"number","nativeSrc":"189:3:87","nodeType":"YulLiteral","src":"189:3:87","type":"","value":"224"},{"kind":"number","nativeSrc":"194:10:87","nodeType":"YulLiteral","src":"194:10:87","type":"","value":"0x4e487b71"}],"functionName":{"name":"shl","nativeSrc":"185:3:87","nodeType":"YulIdentifier","src":"185:3:87"},"nativeSrc":"185:20:87","nodeType":"YulFunctionCall","src":"185:20:87"}],"functionName":{"name":"mstore","nativeSrc":"175:6:87","nodeType":"YulIdentifier","src":"175:6:87"},"nativeSrc":"175:31:87","nodeType":"YulFunctionCall","src":"175:31:87"},"nativeSrc":"175:31:87","nodeType":"YulExpressionStatement","src":"175:31:87"},{"expression":{"arguments":[{"kind":"number","nativeSrc":"222:1:87","nodeType":"YulLiteral","src":"222:1:87","type":"","value":"4"},{"kind":"number","nativeSrc":"225:4:87","nodeType":"YulLiteral","src":"225:4:87","type":"","value":"0x41"}],"functionName":{"name":"mstore","nativeSrc":"215:6:87","nodeType":"YulIdentifier","src":"215:6:87"},"nativeSrc":"215:15:87","nodeType":"YulFunctionCall","src":"215:15:87"},"nativeSrc":"215:15:87","nodeType":"YulExpressionStatement","src":"215:15:87"},{"expression":{"arguments":[{"kind":"number","nativeSrc":"246:1:87","nodeType":"YulLiteral","src":"246:1:87","type":"","value":"0"},{"kind":"number","nativeSrc":"249:4:87","nodeType":"YulLiteral","src":"249:4:87","type":"","value":"0x24"}],"functionName":{"name":"revert","nativeSrc":"239:6:87","nodeType":"YulIdentifier","src":"239:6:87"},"nativeSrc":"239:15:87","nodeType":"YulFunctionCall","src":"239:15:87"},"nativeSrc":"239:15:87","nodeType":"YulExpressionStatement","src":"239:15:87"}]},"name":"panic_error_0x41","nativeSrc":"133:127:87","nodeType":"YulFunctionDefinition","src":"133:127:87"},{"body":{"nativeSrc":"311:207:87","nodeType":"YulBlock","src":"311:207:87","statements":[{"nativeSrc":"321:19:87","nodeType":"YulAssignment","src":"321:19:87","value":{"arguments":[{"kind":"number","nativeSrc":"337:2:87","nodeType":"YulLiteral","src":"337:2:87","type":"","value":"64"}],"functionName":{"name":"mload","nativeSrc":"331:5:87","nodeType":"YulIdentifier","src":"331:5:87"},"nativeSrc":"331:9:87","nodeType":"YulFunctionCall","src":"331:9:87"},"variableNames":[{"name":"memPtr","nativeSrc":"321:6:87","nodeType":"YulIdentifier","src":"321:6:87"}]},{"nativeSrc":"349:35:87","nodeType":"YulVariableDeclaration","src":"349:35:87","value":{"arguments":[{"name":"memPtr","nativeSrc":"371:6:87","nodeType":"YulIdentifier","src":"371:6:87"},{"kind":"number","nativeSrc":"379:4:87","nodeType":"YulLiteral","src":"379:4:87","type":"","value":"0x60"}],"functionName":{"name":"add","nativeSrc":"367:3:87","nodeType":"YulIdentifier","src":"367:3:87"},"nativeSrc":"367:17:87","nodeType":"YulFunctionCall","src":"367:17:87"},"variables":[{"name":"newFreePtr","nativeSrc":"353:10:87","nodeType":"YulTypedName","src":"353:10:87","type":""}]},{"body":{"nativeSrc":"459:22:87","nodeType":"YulBlock","src":"459:22:87","statements":[{"expression":{"arguments":[],"functionName":{"name":"panic_error_0x41","nativeSrc":"461:16:87","nodeType":"YulIdentifier","src":"461:16:87"},"nativeSrc":"461:18:87","nodeType":"YulFunctionCall","src":"461:18:87"},"nativeSrc":"461:18:87","nodeType":"YulExpressionStatement","src":"461:18:87"}]},"condition":{"arguments":[{"arguments":[{"name":"newFreePtr","nativeSrc":"402:10:87","nodeType":"YulIdentifier","src":"402:10:87"},{"kind":"number","nativeSrc":"414:18:87","nodeType":"YulLiteral","src":"414:18:87","type":"","value":"0xffffffffffffffff"}],"functionName":{"name":"gt","nativeSrc":"399:2:87","nodeType":"YulIdentifier","src":"399:2:87"},"nativeSrc":"399:34:87","nodeType":"YulFunctionCall","src":"399:34:87"},{"arguments":[{"name":"newFreePtr","nativeSrc":"438:10:87","nodeType":"YulIdentifier","src":"438:10:87"},{"name":"memPtr","nativeSrc":"450:6:87","nodeType":"YulIdentifier","src":"450:6:87"}],"functionName":{"name":"lt","nativeSrc":"435:2:87","nodeType":"YulIdentifier","src":"435:2:87"},"nativeSrc":"435:22:87","nodeType":"YulFunctionCall","src":"435:22:87"}],"functionName":{"name":"or","nativeSrc":"396:2:87","nodeType":"YulIdentifier","src":"396:2:87"},"nativeSrc":"396:62:87","nodeType":"YulFunctionCall","src":"396:62:87"},"nativeSrc":"393:88:87","nodeType":"YulIf","src":"393:88:87"},{"expression":{"arguments":[{"kind":"number","nativeSrc":"497:2:87","nodeType":"YulLiteral","src":"497:2:87","type":"","value":"64"},{"name":"newFreePtr","nativeSrc":"501:10:87","nodeType":"YulIdentifier","src":"501:10:87"}],"functionName":{"name":"mstore","nativeSrc":"490:6:87","nodeType":"YulIdentifier","src":"490:6:87"},"nativeSrc":"490:22:87","nodeType":"YulFunctionCall","src":"490:22:87"},"nativeSrc":"490:22:87","nodeType":"YulExpressionStatement","src":"490:22:87"}]},"name":"allocate_memory_1712","nativeSrc":"265:253:87","nodeType":"YulFunctionDefinition","returnVariables":[{"name":"memPtr","nativeSrc":"300:6:87","nodeType":"YulTypedName","src":"300:6:87","type":""}],"src":"265:253:87"},{"body":{"nativeSrc":"568:230:87","nodeType":"YulBlock","src":"568:230:87","statements":[{"nativeSrc":"578:19:87","nodeType":"YulAssignment","src":"578:19:87","value":{"arguments":[{"kind":"number","nativeSrc":"594:2:87","nodeType":"YulLiteral","src":"594:2:87","type":"","value":"64"}],"functionName":{"name":"mload","nativeSrc":"588:5:87","nodeType":"YulIdentifier","src":"588:5:87"},"nativeSrc":"588:9:87","nodeType":"YulFunctionCall","src":"588:9:87"},"variableNames":[{"name":"memPtr","nativeSrc":"578:6:87","nodeType":"YulIdentifier","src":"578:6:87"}]},{"nativeSrc":"606:58:87","nodeType":"YulVariableDeclaration","src":"606:58:87","value":{"arguments":[{"name":"memPtr","nativeSrc":"628:6:87","nodeType":"YulIdentifier","src":"628:6:87"},{"arguments":[{"arguments":[{"name":"size","nativeSrc":"644:4:87","nodeType":"YulIdentifier","src":"644:4:87"},{"kind":"number","nativeSrc":"650:2:87","nodeType":"YulLiteral","src":"650:2:87","type":"","value":"31"}],"functionName":{"name":"add","nativeSrc":"640:3:87","nodeType":"YulIdentifier","src":"640:3:87"},"nativeSrc":"640:13:87","nodeType":"YulFunctionCall","src":"640:13:87"},{"arguments":[{"kind":"number","nativeSrc":"659:2:87","nodeType":"YulLiteral","src":"659:2:87","type":"","value":"31"}],"functionName":{"name":"not","nativeSrc":"655:3:87","nodeType":"YulIdentifier","src":"655:3:87"},"nativeSrc":"655:7:87","nodeType":"YulFunctionCall","src":"655:7:87"}],"functionName":{"name":"and","nativeSrc":"636:3:87","nodeType":"YulIdentifier","src":"636:3:87"},"nativeSrc":"636:27:87","nodeType":"YulFunctionCall","src":"636:27:87"}],"functionName":{"name":"add","nativeSrc":"624:3:87","nodeType":"YulIdentifier","src":"624:3:87"},"nativeSrc":"624:40:87","nodeType":"YulFunctionCall","src":"624:40:87"},"variables":[{"name":"newFreePtr","nativeSrc":"610:10:87","nodeType":"YulTypedName","src":"610:10:87","type":""}]},{"body":{"nativeSrc":"739:22:87","nodeType":"YulBlock","src":"739:22:87","statements":[{"expression":{"arguments":[],"functionName":{"name":"panic_error_0x41","nativeSrc":"741:16:87","nodeType":"YulIdentifier","src":"741:16:87"},"nativeSrc":"741:18:87","nodeType":"YulFunctionCall","src":"741:18:87"},"nativeSrc":"741:18:87","nodeType":"YulExpressionStatement","src":"741:18:87"}]},"condition":{"arguments":[{"arguments":[{"name":"newFreePtr","nativeSrc":"682:10:87","nodeType":"YulIdentifier","src":"682:10:87"},{"kind":"number","nativeSrc":"694:18:87","nodeType":"YulLiteral","src":"694:18:87","type":"","value":"0xffffffffffffffff"}],"functionName":{"name":"gt","nativeSrc":"679:2:87","nodeType":"YulIdentifier","src":"679:2:87"},"nativeSrc":"679:34:87","nodeType":"YulFunctionCall","src":"679:34:87"},{"arguments":[{"name":"newFreePtr","nativeSrc":"718:10:87","nodeType":"YulIdentifier","src":"718:10:87"},{"name":"memPtr","nativeSrc":"730:6:87","nodeType":"YulIdentifier","src":"730:6:87"}],"functionName":{"name":"lt","nativeSrc":"715:2:87","nodeType":"YulIdentifier","src":"715:2:87"},"nativeSrc":"715:22:87","nodeType":"YulFunctionCall","src":"715:22:87"}],"functionName":{"name":"or","nativeSrc":"676:2:87","nodeType":"YulIdentifier","src":"676:2:87"},"nativeSrc":"676:62:87","nodeType":"YulFunctionCall","src":"676:62:87"},"nativeSrc":"673:88:87","nodeType":"YulIf","src":"673:88:87"},{"expression":{"arguments":[{"kind":"number","nativeSrc":"777:2:87","nodeType":"YulLiteral","src":"777:2:87","type":"","value":"64"},{"name":"newFreePtr","nativeSrc":"781:10:87","nodeType":"YulIdentifier","src":"781:10:87"}],"functionName":{"name":"mstore","nativeSrc":"770:6:87","nodeType":"YulIdentifier","src":"770:6:87"},"nativeSrc":"770:22:87","nodeType":"YulFunctionCall","src":"770:22:87"},"nativeSrc":"770:22:87","nodeType":"YulExpressionStatement","src":"770:22:87"}]},"name":"allocate_memory","nativeSrc":"523:275:87","nodeType":"YulFunctionDefinition","parameters":[{"name":"size","nativeSrc":"548:4:87","nodeType":"YulTypedName","src":"548:4:87","type":""}],"returnVariables":[{"name":"memPtr","nativeSrc":"557:6:87","nodeType":"YulTypedName","src":"557:6:87","type":""}],"src":"523:275:87"},{"body":{"nativeSrc":"860:129:87","nodeType":"YulBlock","src":"860:129:87","statements":[{"body":{"nativeSrc":"904:22:87","nodeType":"YulBlock","src":"904:22:87","statements":[{"expression":{"arguments":[],"functionName":{"name":"panic_error_0x41","nativeSrc":"906:16:87","nodeType":"YulIdentifier","src":"906:16:87"},"nativeSrc":"906:18:87","nodeType":"YulFunctionCall","src":"906:18:87"},"nativeSrc":"906:18:87","nodeType":"YulExpressionStatement","src":"906:18:87"}]},"condition":{"arguments":[{"name":"length","nativeSrc":"876:6:87","nodeType":"YulIdentifier","src":"876:6:87"},{"kind":"number","nativeSrc":"884:18:87","nodeType":"YulLiteral","src":"884:18:87","type":"","value":"0xffffffffffffffff"}],"functionName":{"name":"gt","nativeSrc":"873:2:87","nodeType":"YulIdentifier","src":"873:2:87"},"nativeSrc":"873:30:87","nodeType":"YulFunctionCall","src":"873:30:87"},"nativeSrc":"870:56:87","nodeType":"YulIf","src":"870:56:87"},{"nativeSrc":"935:48:87","nodeType":"YulAssignment","src":"935:48:87","value":{"arguments":[{"arguments":[{"arguments":[{"name":"length","nativeSrc":"955:6:87","nodeType":"YulIdentifier","src":"955:6:87"},{"kind":"number","nativeSrc":"963:2:87","nodeType":"YulLiteral","src":"963:2:87","type":"","value":"31"}],"functionName":{"name":"add","nativeSrc":"951:3:87","nodeType":"YulIdentifier","src":"951:3:87"},"nativeSrc":"951:15:87","nodeType":"YulFunctionCall","src":"951:15:87"},{"arguments":[{"kind":"number","nativeSrc":"972:2:87","nodeType":"YulLiteral","src":"972:2:87","type":"","value":"31"}],"functionName":{"name":"not","nativeSrc":"968:3:87","nodeType":"YulIdentifier","src":"968:3:87"},"nativeSrc":"968:7:87","nodeType":"YulFunctionCall","src":"968:7:87"}],"functionName":{"name":"and","nativeSrc":"947:3:87","nodeType":"YulIdentifier","src":"947:3:87"},"nativeSrc":"947:29:87","nodeType":"YulFunctionCall","src":"947:29:87"},{"kind":"number","nativeSrc":"978:4:87","nodeType":"YulLiteral","src":"978:4:87","type":"","value":"0x20"}],"functionName":{"name":"add","nativeSrc":"943:3:87","nodeType":"YulIdentifier","src":"943:3:87"},"nativeSrc":"943:40:87","nodeType":"YulFunctionCall","src":"943:40:87"},"variableNames":[{"name":"size","nativeSrc":"935:4:87","nodeType":"YulIdentifier","src":"935:4:87"}]}]},"name":"array_allocation_size_bytes","nativeSrc":"803:186:87","nodeType":"YulFunctionDefinition","parameters":[{"name":"length","nativeSrc":"840:6:87","nodeType":"YulTypedName","src":"840:6:87","type":""}],"returnVariables":[{"name":"size","nativeSrc":"851:4:87","nodeType":"YulTypedName","src":"851:4:87","type":""}],"src":"803:186:87"},{"body":{"nativeSrc":"1046:434:87","nodeType":"YulBlock","src":"1046:434:87","statements":[{"body":{"nativeSrc":"1095:16:87","nodeType":"YulBlock","src":"1095:16:87","statements":[{"expression":{"arguments":[{"kind":"number","nativeSrc":"1104:1:87","nodeType":"YulLiteral","src":"1104:1:87","type":"","value":"0"},{"kind":"number","nativeSrc":"1107:1:87","nodeType":"YulLiteral","src":"1107:1:87","type":"","value":"0"}],"functionName":{"name":"revert","nativeSrc":"1097:6:87","nodeType":"YulIdentifier","src":"1097:6:87"},"nativeSrc":"1097:12:87","nodeType":"YulFunctionCall","src":"1097:12:87"},"nativeSrc":"1097:12:87","nodeType":"YulExpressionStatement","src":"1097:12:87"}]},"condition":{"arguments":[{"arguments":[{"arguments":[{"name":"offset","nativeSrc":"1074:6:87","nodeType":"YulIdentifier","src":"1074:6:87"},{"kind":"number","nativeSrc":"1082:4:87","nodeType":"YulLiteral","src":"1082:4:87","type":"","value":"0x1f"}],"functionName":{"name":"add","nativeSrc":"1070:3:87","nodeType":"YulIdentifier","src":"1070:3:87"},"nativeSrc":"1070:17:87","nodeType":"YulFunctionCall","src":"1070:17:87"},{"name":"end","nativeSrc":"1089:3:87","nodeType":"YulIdentifier","src":"1089:3:87"}],"functionName":{"name":"slt","nativeSrc":"1066:3:87","nodeType":"YulIdentifier","src":"1066:3:87"},"nativeSrc":"1066:27:87","nodeType":"YulFunctionCall","src":"1066:27:87"}],"functionName":{"name":"iszero","nativeSrc":"1059:6:87","nodeType":"YulIdentifier","src":"1059:6:87"},"nativeSrc":"1059:35:87","nodeType":"YulFunctionCall","src":"1059:35:87"},"nativeSrc":"1056:55:87","nodeType":"YulIf","src":"1056:55:87"},{"nativeSrc":"1120:34:87","nodeType":"YulVariableDeclaration","src":"1120:34:87","value":{"arguments":[{"name":"offset","nativeSrc":"1147:6:87","nodeType":"YulIdentifier","src":"1147:6:87"}],"functionName":{"name":"calldataload","nativeSrc":"1134:12:87","nodeType":"YulIdentifier","src":"1134:12:87"},"nativeSrc":"1134:20:87","nodeType":"YulFunctionCall","src":"1134:20:87"},"variables":[{"name":"length","nativeSrc":"1124:6:87","nodeType":"YulTypedName","src":"1124:6:87","type":""}]},{"nativeSrc":"1163:67:87","nodeType":"YulVariableDeclaration","src":"1163:67:87","value":{"arguments":[{"arguments":[{"name":"length","nativeSrc":"1222:6:87","nodeType":"YulIdentifier","src":"1222:6:87"}],"functionName":{"name":"array_allocation_size_bytes","nativeSrc":"1194:27:87","nodeType":"YulIdentifier","src":"1194:27:87"},"nativeSrc":"1194:35:87","nodeType":"YulFunctionCall","src":"1194:35:87"}],"functionName":{"name":"allocate_memory","nativeSrc":"1178:15:87","nodeType":"YulIdentifier","src":"1178:15:87"},"nativeSrc":"1178:52:87","nodeType":"YulFunctionCall","src":"1178:52:87"},"variables":[{"name":"array_1","nativeSrc":"1167:7:87","nodeType":"YulTypedName","src":"1167:7:87","type":""}]},{"expression":{"arguments":[{"name":"array_1","nativeSrc":"1246:7:87","nodeType":"YulIdentifier","src":"1246:7:87"},{"name":"length","nativeSrc":"1255:6:87","nodeType":"YulIdentifier","src":"1255:6:87"}],"functionName":{"name":"mstore","nativeSrc":"1239:6:87","nodeType":"YulIdentifier","src":"1239:6:87"},"nativeSrc":"1239:23:87","nodeType":"YulFunctionCall","src":"1239:23:87"},"nativeSrc":"1239:23:87","nodeType":"YulExpressionStatement","src":"1239:23:87"},{"body":{"nativeSrc":"1314:16:87","nodeType":"YulBlock","src":"1314:16:87","statements":[{"expression":{"arguments":[{"kind":"number","nativeSrc":"1323:1:87","nodeType":"YulLiteral","src":"1323:1:87","type":"","value":"0"},{"kind":"number","nativeSrc":"1326:1:87","nodeType":"YulLiteral","src":"1326:1:87","type":"","value":"0"}],"functionName":{"name":"revert","nativeSrc":"1316:6:87","nodeType":"YulIdentifier","src":"1316:6:87"},"nativeSrc":"1316:12:87","nodeType":"YulFunctionCall","src":"1316:12:87"},"nativeSrc":"1316:12:87","nodeType":"YulExpressionStatement","src":"1316:12:87"}]},"condition":{"arguments":[{"arguments":[{"arguments":[{"name":"offset","nativeSrc":"1285:6:87","nodeType":"YulIdentifier","src":"1285:6:87"},{"name":"length","nativeSrc":"1293:6:87","nodeType":"YulIdentifier","src":"1293:6:87"}],"functionName":{"name":"add","nativeSrc":"1281:3:87","nodeType":"YulIdentifier","src":"1281:3:87"},"nativeSrc":"1281:19:87","nodeType":"YulFunctionCall","src":"1281:19:87"},{"kind":"number","nativeSrc":"1302:4:87","nodeType":"YulLiteral","src":"1302:4:87","type":"","value":"0x20"}],"functionName":{"name":"add","nativeSrc":"1277:3:87","nodeType":"YulIdentifier","src":"1277:3:87"},"nativeSrc":"1277:30:87","nodeType":"YulFunctionCall","src":"1277:30:87"},{"name":"end","nativeSrc":"1309:3:87","nodeType":"YulIdentifier","src":"1309:3:87"}],"functionName":{"name":"gt","nativeSrc":"1274:2:87","nodeType":"YulIdentifier","src":"1274:2:87"},"nativeSrc":"1274:39:87","nodeType":"YulFunctionCall","src":"1274:39:87"},"nativeSrc":"1271:59:87","nodeType":"YulIf","src":"1271:59:87"},{"expression":{"arguments":[{"arguments":[{"name":"array_1","nativeSrc":"1356:7:87","nodeType":"YulIdentifier","src":"1356:7:87"},{"kind":"number","nativeSrc":"1365:4:87","nodeType":"YulLiteral","src":"1365:4:87","type":"","value":"0x20"}],"functionName":{"name":"add","nativeSrc":"1352:3:87","nodeType":"YulIdentifier","src":"1352:3:87"},"nativeSrc":"1352:18:87","nodeType":"YulFunctionCall","src":"1352:18:87"},{"arguments":[{"name":"offset","nativeSrc":"1376:6:87","nodeType":"YulIdentifier","src":"1376:6:87"},{"kind":"number","nativeSrc":"1384:4:87","nodeType":"YulLiteral","src":"1384:4:87","type":"","value":"0x20"}],"functionName":{"name":"add","nativeSrc":"1372:3:87","nodeType":"YulIdentifier","src":"1372:3:87"},"nativeSrc":"1372:17:87","nodeType":"YulFunctionCall","src":"1372:17:87"},{"name":"length","nativeSrc":"1391:6:87","nodeType":"YulIdentifier","src":"1391:6:87"}],"functionName":{"name":"calldatacopy","nativeSrc":"1339:12:87","nodeType":"YulIdentifier","src":"1339:12:87"},"nativeSrc":"1339:59:87","nodeType":"YulFunctionCall","src":"1339:59:87"},"nativeSrc":"1339:59:87","nodeType":"YulExpressionStatement","src":"1339:59:87"},{"expression":{"arguments":[{"arguments":[{"arguments":[{"name":"array_1","nativeSrc":"1422:7:87","nodeType":"YulIdentifier","src":"1422:7:87"},{"name":"length","nativeSrc":"1431:6:87","nodeType":"YulIdentifier","src":"1431:6:87"}],"functionName":{"name":"add","nativeSrc":"1418:3:87","nodeType":"YulIdentifier","src":"1418:3:87"},"nativeSrc":"1418:20:87","nodeType":"YulFunctionCall","src":"1418:20:87"},{"kind":"number","nativeSrc":"1440:4:87","nodeType":"YulLiteral","src":"1440:4:87","type":"","value":"0x20"}],"functionName":{"name":"add","nativeSrc":"1414:3:87","nodeType":"YulIdentifier","src":"1414:3:87"},"nativeSrc":"1414:31:87","nodeType":"YulFunctionCall","src":"1414:31:87"},{"kind":"number","nativeSrc":"1447:1:87","nodeType":"YulLiteral","src":"1447:1:87","type":"","value":"0"}],"functionName":{"name":"mstore","nativeSrc":"1407:6:87","nodeType":"YulIdentifier","src":"1407:6:87"},"nativeSrc":"1407:42:87","nodeType":"YulFunctionCall","src":"1407:42:87"},"nativeSrc":"1407:42:87","nodeType":"YulExpressionStatement","src":"1407:42:87"},{"nativeSrc":"1458:16:87","nodeType":"YulAssignment","src":"1458:16:87","value":{"name":"array_1","nativeSrc":"1467:7:87","nodeType":"YulIdentifier","src":"1467:7:87"},"variableNames":[{"name":"array","nativeSrc":"1458:5:87","nodeType":"YulIdentifier","src":"1458:5:87"}]}]},"name":"abi_decode_bytes","nativeSrc":"994:486:87","nodeType":"YulFunctionDefinition","parameters":[{"name":"offset","nativeSrc":"1020:6:87","nodeType":"YulTypedName","src":"1020:6:87","type":""},{"name":"end","nativeSrc":"1028:3:87","nodeType":"YulTypedName","src":"1028:3:87","type":""}],"returnVariables":[{"name":"array","nativeSrc":"1036:5:87","nodeType":"YulTypedName","src":"1036:5:87","type":""}],"src":"994:486:87"},{"body":{"nativeSrc":"1579:357:87","nodeType":"YulBlock","src":"1579:357:87","statements":[{"body":{"nativeSrc":"1625:16:87","nodeType":"YulBlock","src":"1625:16:87","statements":[{"expression":{"arguments":[{"kind":"number","nativeSrc":"1634:1:87","nodeType":"YulLiteral","src":"1634:1:87","type":"","value":"0"},{"kind":"number","nativeSrc":"1637:1:87","nodeType":"YulLiteral","src":"1637:1:87","type":"","value":"0"}],"functionName":{"name":"revert","nativeSrc":"1627:6:87","nodeType":"YulIdentifier","src":"1627:6:87"},"nativeSrc":"1627:12:87","nodeType":"YulFunctionCall","src":"1627:12:87"},"nativeSrc":"1627:12:87","nodeType":"YulExpressionStatement","src":"1627:12:87"}]},"condition":{"arguments":[{"arguments":[{"name":"dataEnd","nativeSrc":"1600:7:87","nodeType":"YulIdentifier","src":"1600:7:87"},{"name":"headStart","nativeSrc":"1609:9:87","nodeType":"YulIdentifier","src":"1609:9:87"}],"functionName":{"name":"sub","nativeSrc":"1596:3:87","nodeType":"YulIdentifier","src":"1596:3:87"},"nativeSrc":"1596:23:87","nodeType":"YulFunctionCall","src":"1596:23:87"},{"kind":"number","nativeSrc":"1621:2:87","nodeType":"YulLiteral","src":"1621:2:87","type":"","value":"64"}],"functionName":{"name":"slt","nativeSrc":"1592:3:87","nodeType":"YulIdentifier","src":"1592:3:87"},"nativeSrc":"1592:32:87","nodeType":"YulFunctionCall","src":"1592:32:87"},"nativeSrc":"1589:52:87","nodeType":"YulIf","src":"1589:52:87"},{"nativeSrc":"1650:36:87","nodeType":"YulVariableDeclaration","src":"1650:36:87","value":{"arguments":[{"name":"headStart","nativeSrc":"1676:9:87","nodeType":"YulIdentifier","src":"1676:9:87"}],"functionName":{"name":"calldataload","nativeSrc":"1663:12:87","nodeType":"YulIdentifier","src":"1663:12:87"},"nativeSrc":"1663:23:87","nodeType":"YulFunctionCall","src":"1663:23:87"},"variables":[{"name":"value","nativeSrc":"1654:5:87","nodeType":"YulTypedName","src":"1654:5:87","type":""}]},{"expression":{"arguments":[{"name":"value","nativeSrc":"1718:5:87","nodeType":"YulIdentifier","src":"1718:5:87"}],"functionName":{"name":"validator_revert_uint8","nativeSrc":"1695:22:87","nodeType":"YulIdentifier","src":"1695:22:87"},"nativeSrc":"1695:29:87","nodeType":"YulFunctionCall","src":"1695:29:87"},"nativeSrc":"1695:29:87","nodeType":"YulExpressionStatement","src":"1695:29:87"},{"nativeSrc":"1733:15:87","nodeType":"YulAssignment","src":"1733:15:87","value":{"name":"value","nativeSrc":"1743:5:87","nodeType":"YulIdentifier","src":"1743:5:87"},"variableNames":[{"name":"value0","nativeSrc":"1733:6:87","nodeType":"YulIdentifier","src":"1733:6:87"}]},{"nativeSrc":"1757:46:87","nodeType":"YulVariableDeclaration","src":"1757:46:87","value":{"arguments":[{"arguments":[{"name":"headStart","nativeSrc":"1788:9:87","nodeType":"YulIdentifier","src":"1788:9:87"},{"kind":"number","nativeSrc":"1799:2:87","nodeType":"YulLiteral","src":"1799:2:87","type":"","value":"32"}],"functionName":{"name":"add","nativeSrc":"1784:3:87","nodeType":"YulIdentifier","src":"1784:3:87"},"nativeSrc":"1784:18:87","nodeType":"YulFunctionCall","src":"1784:18:87"}],"functionName":{"name":"calldataload","nativeSrc":"1771:12:87","nodeType":"YulIdentifier","src":"1771:12:87"},"nativeSrc":"1771:32:87","nodeType":"YulFunctionCall","src":"1771:32:87"},"variables":[{"name":"offset","nativeSrc":"1761:6:87","nodeType":"YulTypedName","src":"1761:6:87","type":""}]},{"body":{"nativeSrc":"1846:16:87","nodeType":"YulBlock","src":"1846:16:87","statements":[{"expression":{"arguments":[{"kind":"number","nativeSrc":"1855:1:87","nodeType":"YulLiteral","src":"1855:1:87","type":"","value":"0"},{"kind":"number","nativeSrc":"1858:1:87","nodeType":"YulLiteral","src":"1858:1:87","type":"","value":"0"}],"functionName":{"name":"revert","nativeSrc":"1848:6:87","nodeType":"YulIdentifier","src":"1848:6:87"},"nativeSrc":"1848:12:87","nodeType":"YulFunctionCall","src":"1848:12:87"},"nativeSrc":"1848:12:87","nodeType":"YulExpressionStatement","src":"1848:12:87"}]},"condition":{"arguments":[{"name":"offset","nativeSrc":"1818:6:87","nodeType":"YulIdentifier","src":"1818:6:87"},{"kind":"number","nativeSrc":"1826:18:87","nodeType":"YulLiteral","src":"1826:18:87","type":"","value":"0xffffffffffffffff"}],"functionName":{"name":"gt","nativeSrc":"1815:2:87","nodeType":"YulIdentifier","src":"1815:2:87"},"nativeSrc":"1815:30:87","nodeType":"YulFunctionCall","src":"1815:30:87"},"nativeSrc":"1812:50:87","nodeType":"YulIf","src":"1812:50:87"},{"nativeSrc":"1871:59:87","nodeType":"YulAssignment","src":"1871:59:87","value":{"arguments":[{"arguments":[{"name":"headStart","nativeSrc":"1902:9:87","nodeType":"YulIdentifier","src":"1902:9:87"},{"name":"offset","nativeSrc":"1913:6:87","nodeType":"YulIdentifier","src":"1913:6:87"}],"functionName":{"name":"add","nativeSrc":"1898:3:87","nodeType":"YulIdentifier","src":"1898:3:87"},"nativeSrc":"1898:22:87","nodeType":"YulFunctionCall","src":"1898:22:87"},{"name":"dataEnd","nativeSrc":"1922:7:87","nodeType":"YulIdentifier","src":"1922:7:87"}],"functionName":{"name":"abi_decode_bytes","nativeSrc":"1881:16:87","nodeType":"YulIdentifier","src":"1881:16:87"},"nativeSrc":"1881:49:87","nodeType":"YulFunctionCall","src":"1881:49:87"},"variableNames":[{"name":"value1","nativeSrc":"1871:6:87","nodeType":"YulIdentifier","src":"1871:6:87"}]}]},"name":"abi_decode_tuple_t_uint8t_bytes_memory_ptr","nativeSrc":"1485:451:87","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nativeSrc":"1537:9:87","nodeType":"YulTypedName","src":"1537:9:87","type":""},{"name":"dataEnd","nativeSrc":"1548:7:87","nodeType":"YulTypedName","src":"1548:7:87","type":""}],"returnVariables":[{"name":"value0","nativeSrc":"1560:6:87","nodeType":"YulTypedName","src":"1560:6:87","type":""},{"name":"value1","nativeSrc":"1568:6:87","nodeType":"YulTypedName","src":"1568:6:87","type":""}],"src":"1485:451:87"},{"body":{"nativeSrc":"1990:239:87","nodeType":"YulBlock","src":"1990:239:87","statements":[{"nativeSrc":"2000:26:87","nodeType":"YulVariableDeclaration","src":"2000:26:87","value":{"arguments":[{"name":"value","nativeSrc":"2020:5:87","nodeType":"YulIdentifier","src":"2020:5:87"}],"functionName":{"name":"mload","nativeSrc":"2014:5:87","nodeType":"YulIdentifier","src":"2014:5:87"},"nativeSrc":"2014:12:87","nodeType":"YulFunctionCall","src":"2014:12:87"},"variables":[{"name":"length","nativeSrc":"2004:6:87","nodeType":"YulTypedName","src":"2004:6:87","type":""}]},{"expression":{"arguments":[{"name":"pos","nativeSrc":"2042:3:87","nodeType":"YulIdentifier","src":"2042:3:87"},{"name":"length","nativeSrc":"2047:6:87","nodeType":"YulIdentifier","src":"2047:6:87"}],"functionName":{"name":"mstore","nativeSrc":"2035:6:87","nodeType":"YulIdentifier","src":"2035:6:87"},"nativeSrc":"2035:19:87","nodeType":"YulFunctionCall","src":"2035:19:87"},"nativeSrc":"2035:19:87","nodeType":"YulExpressionStatement","src":"2035:19:87"},{"expression":{"arguments":[{"arguments":[{"name":"pos","nativeSrc":"2073:3:87","nodeType":"YulIdentifier","src":"2073:3:87"},{"kind":"number","nativeSrc":"2078:4:87","nodeType":"YulLiteral","src":"2078:4:87","type":"","value":"0x20"}],"functionName":{"name":"add","nativeSrc":"2069:3:87","nodeType":"YulIdentifier","src":"2069:3:87"},"nativeSrc":"2069:14:87","nodeType":"YulFunctionCall","src":"2069:14:87"},{"arguments":[{"name":"value","nativeSrc":"2089:5:87","nodeType":"YulIdentifier","src":"2089:5:87"},{"kind":"number","nativeSrc":"2096:4:87","nodeType":"YulLiteral","src":"2096:4:87","type":"","value":"0x20"}],"functionName":{"name":"add","nativeSrc":"2085:3:87","nodeType":"YulIdentifier","src":"2085:3:87"},"nativeSrc":"2085:16:87","nodeType":"YulFunctionCall","src":"2085:16:87"},{"name":"length","nativeSrc":"2103:6:87","nodeType":"YulIdentifier","src":"2103:6:87"}],"functionName":{"name":"mcopy","nativeSrc":"2063:5:87","nodeType":"YulIdentifier","src":"2063:5:87"},"nativeSrc":"2063:47:87","nodeType":"YulFunctionCall","src":"2063:47:87"},"nativeSrc":"2063:47:87","nodeType":"YulExpressionStatement","src":"2063:47:87"},{"expression":{"arguments":[{"arguments":[{"arguments":[{"name":"pos","nativeSrc":"2134:3:87","nodeType":"YulIdentifier","src":"2134:3:87"},{"name":"length","nativeSrc":"2139:6:87","nodeType":"YulIdentifier","src":"2139:6:87"}],"functionName":{"name":"add","nativeSrc":"2130:3:87","nodeType":"YulIdentifier","src":"2130:3:87"},"nativeSrc":"2130:16:87","nodeType":"YulFunctionCall","src":"2130:16:87"},{"kind":"number","nativeSrc":"2148:4:87","nodeType":"YulLiteral","src":"2148:4:87","type":"","value":"0x20"}],"functionName":{"name":"add","nativeSrc":"2126:3:87","nodeType":"YulIdentifier","src":"2126:3:87"},"nativeSrc":"2126:27:87","nodeType":"YulFunctionCall","src":"2126:27:87"},{"kind":"number","nativeSrc":"2155:1:87","nodeType":"YulLiteral","src":"2155:1:87","type":"","value":"0"}],"functionName":{"name":"mstore","nativeSrc":"2119:6:87","nodeType":"YulIdentifier","src":"2119:6:87"},"nativeSrc":"2119:38:87","nodeType":"YulFunctionCall","src":"2119:38:87"},"nativeSrc":"2119:38:87","nodeType":"YulExpressionStatement","src":"2119:38:87"},{"nativeSrc":"2166:57:87","nodeType":"YulAssignment","src":"2166:57:87","value":{"arguments":[{"arguments":[{"name":"pos","nativeSrc":"2181:3:87","nodeType":"YulIdentifier","src":"2181:3:87"},{"arguments":[{"arguments":[{"name":"length","nativeSrc":"2194:6:87","nodeType":"YulIdentifier","src":"2194:6:87"},{"kind":"number","nativeSrc":"2202:2:87","nodeType":"YulLiteral","src":"2202:2:87","type":"","value":"31"}],"functionName":{"name":"add","nativeSrc":"2190:3:87","nodeType":"YulIdentifier","src":"2190:3:87"},"nativeSrc":"2190:15:87","nodeType":"YulFunctionCall","src":"2190:15:87"},{"arguments":[{"kind":"number","nativeSrc":"2211:2:87","nodeType":"YulLiteral","src":"2211:2:87","type":"","value":"31"}],"functionName":{"name":"not","nativeSrc":"2207:3:87","nodeType":"YulIdentifier","src":"2207:3:87"},"nativeSrc":"2207:7:87","nodeType":"YulFunctionCall","src":"2207:7:87"}],"functionName":{"name":"and","nativeSrc":"2186:3:87","nodeType":"YulIdentifier","src":"2186:3:87"},"nativeSrc":"2186:29:87","nodeType":"YulFunctionCall","src":"2186:29:87"}],"functionName":{"name":"add","nativeSrc":"2177:3:87","nodeType":"YulIdentifier","src":"2177:3:87"},"nativeSrc":"2177:39:87","nodeType":"YulFunctionCall","src":"2177:39:87"},{"kind":"number","nativeSrc":"2218:4:87","nodeType":"YulLiteral","src":"2218:4:87","type":"","value":"0x20"}],"functionName":{"name":"add","nativeSrc":"2173:3:87","nodeType":"YulIdentifier","src":"2173:3:87"},"nativeSrc":"2173:50:87","nodeType":"YulFunctionCall","src":"2173:50:87"},"variableNames":[{"name":"end","nativeSrc":"2166:3:87","nodeType":"YulIdentifier","src":"2166:3:87"}]}]},"name":"abi_encode_bytes","nativeSrc":"1941:288:87","nodeType":"YulFunctionDefinition","parameters":[{"name":"value","nativeSrc":"1967:5:87","nodeType":"YulTypedName","src":"1967:5:87","type":""},{"name":"pos","nativeSrc":"1974:3:87","nodeType":"YulTypedName","src":"1974:3:87","type":""}],"returnVariables":[{"name":"end","nativeSrc":"1982:3:87","nodeType":"YulTypedName","src":"1982:3:87","type":""}],"src":"1941:288:87"},{"body":{"nativeSrc":"2353:98:87","nodeType":"YulBlock","src":"2353:98:87","statements":[{"expression":{"arguments":[{"name":"headStart","nativeSrc":"2370:9:87","nodeType":"YulIdentifier","src":"2370:9:87"},{"kind":"number","nativeSrc":"2381:2:87","nodeType":"YulLiteral","src":"2381:2:87","type":"","value":"32"}],"functionName":{"name":"mstore","nativeSrc":"2363:6:87","nodeType":"YulIdentifier","src":"2363:6:87"},"nativeSrc":"2363:21:87","nodeType":"YulFunctionCall","src":"2363:21:87"},"nativeSrc":"2363:21:87","nodeType":"YulExpressionStatement","src":"2363:21:87"},{"nativeSrc":"2393:52:87","nodeType":"YulAssignment","src":"2393:52:87","value":{"arguments":[{"name":"value0","nativeSrc":"2418:6:87","nodeType":"YulIdentifier","src":"2418:6:87"},{"arguments":[{"name":"headStart","nativeSrc":"2430:9:87","nodeType":"YulIdentifier","src":"2430:9:87"},{"kind":"number","nativeSrc":"2441:2:87","nodeType":"YulLiteral","src":"2441:2:87","type":"","value":"32"}],"functionName":{"name":"add","nativeSrc":"2426:3:87","nodeType":"YulIdentifier","src":"2426:3:87"},"nativeSrc":"2426:18:87","nodeType":"YulFunctionCall","src":"2426:18:87"}],"functionName":{"name":"abi_encode_bytes","nativeSrc":"2401:16:87","nodeType":"YulIdentifier","src":"2401:16:87"},"nativeSrc":"2401:44:87","nodeType":"YulFunctionCall","src":"2401:44:87"},"variableNames":[{"name":"tail","nativeSrc":"2393:4:87","nodeType":"YulIdentifier","src":"2393:4:87"}]}]},"name":"abi_encode_tuple_t_bytes_memory_ptr__to_t_bytes_memory_ptr__fromStack_reversed","nativeSrc":"2234:217:87","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nativeSrc":"2322:9:87","nodeType":"YulTypedName","src":"2322:9:87","type":""},{"name":"value0","nativeSrc":"2333:6:87","nodeType":"YulTypedName","src":"2333:6:87","type":""}],"returnVariables":[{"name":"tail","nativeSrc":"2344:4:87","nodeType":"YulTypedName","src":"2344:4:87","type":""}],"src":"2234:217:87"},{"body":{"nativeSrc":"2557:76:87","nodeType":"YulBlock","src":"2557:76:87","statements":[{"nativeSrc":"2567:26:87","nodeType":"YulAssignment","src":"2567:26:87","value":{"arguments":[{"name":"headStart","nativeSrc":"2579:9:87","nodeType":"YulIdentifier","src":"2579:9:87"},{"kind":"number","nativeSrc":"2590:2:87","nodeType":"YulLiteral","src":"2590:2:87","type":"","value":"32"}],"functionName":{"name":"add","nativeSrc":"2575:3:87","nodeType":"YulIdentifier","src":"2575:3:87"},"nativeSrc":"2575:18:87","nodeType":"YulFunctionCall","src":"2575:18:87"},"variableNames":[{"name":"tail","nativeSrc":"2567:4:87","nodeType":"YulIdentifier","src":"2567:4:87"}]},{"expression":{"arguments":[{"name":"headStart","nativeSrc":"2609:9:87","nodeType":"YulIdentifier","src":"2609:9:87"},{"name":"value0","nativeSrc":"2620:6:87","nodeType":"YulIdentifier","src":"2620:6:87"}],"functionName":{"name":"mstore","nativeSrc":"2602:6:87","nodeType":"YulIdentifier","src":"2602:6:87"},"nativeSrc":"2602:25:87","nodeType":"YulFunctionCall","src":"2602:25:87"},"nativeSrc":"2602:25:87","nodeType":"YulExpressionStatement","src":"2602:25:87"}]},"name":"abi_encode_tuple_t_uint256__to_t_uint256__fromStack_reversed","nativeSrc":"2456:177:87","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nativeSrc":"2526:9:87","nodeType":"YulTypedName","src":"2526:9:87","type":""},{"name":"value0","nativeSrc":"2537:6:87","nodeType":"YulTypedName","src":"2537:6:87","type":""}],"returnVariables":[{"name":"tail","nativeSrc":"2548:4:87","nodeType":"YulTypedName","src":"2548:4:87","type":""}],"src":"2456:177:87"},{"body":{"nativeSrc":"2770:102:87","nodeType":"YulBlock","src":"2770:102:87","statements":[{"nativeSrc":"2780:26:87","nodeType":"YulAssignment","src":"2780:26:87","value":{"arguments":[{"name":"headStart","nativeSrc":"2792:9:87","nodeType":"YulIdentifier","src":"2792:9:87"},{"kind":"number","nativeSrc":"2803:2:87","nodeType":"YulLiteral","src":"2803:2:87","type":"","value":"32"}],"functionName":{"name":"add","nativeSrc":"2788:3:87","nodeType":"YulIdentifier","src":"2788:3:87"},"nativeSrc":"2788:18:87","nodeType":"YulFunctionCall","src":"2788:18:87"},"variableNames":[{"name":"tail","nativeSrc":"2780:4:87","nodeType":"YulIdentifier","src":"2780:4:87"}]},{"expression":{"arguments":[{"name":"headStart","nativeSrc":"2822:9:87","nodeType":"YulIdentifier","src":"2822:9:87"},{"arguments":[{"name":"value0","nativeSrc":"2837:6:87","nodeType":"YulIdentifier","src":"2837:6:87"},{"arguments":[{"arguments":[{"kind":"number","nativeSrc":"2853:3:87","nodeType":"YulLiteral","src":"2853:3:87","type":"","value":"160"},{"kind":"number","nativeSrc":"2858:1:87","nodeType":"YulLiteral","src":"2858:1:87","type":"","value":"1"}],"functionName":{"name":"shl","nativeSrc":"2849:3:87","nodeType":"YulIdentifier","src":"2849:3:87"},"nativeSrc":"2849:11:87","nodeType":"YulFunctionCall","src":"2849:11:87"},{"kind":"number","nativeSrc":"2862:1:87","nodeType":"YulLiteral","src":"2862:1:87","type":"","value":"1"}],"functionName":{"name":"sub","nativeSrc":"2845:3:87","nodeType":"YulIdentifier","src":"2845:3:87"},"nativeSrc":"2845:19:87","nodeType":"YulFunctionCall","src":"2845:19:87"}],"functionName":{"name":"and","nativeSrc":"2833:3:87","nodeType":"YulIdentifier","src":"2833:3:87"},"nativeSrc":"2833:32:87","nodeType":"YulFunctionCall","src":"2833:32:87"}],"functionName":{"name":"mstore","nativeSrc":"2815:6:87","nodeType":"YulIdentifier","src":"2815:6:87"},"nativeSrc":"2815:51:87","nodeType":"YulFunctionCall","src":"2815:51:87"},"nativeSrc":"2815:51:87","nodeType":"YulExpressionStatement","src":"2815:51:87"}]},"name":"abi_encode_tuple_t_contract$_AggregatorV3Interface_$20542__to_t_address__fromStack_reversed","nativeSrc":"2638:234:87","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nativeSrc":"2739:9:87","nodeType":"YulTypedName","src":"2739:9:87","type":""},{"name":"value0","nativeSrc":"2750:6:87","nodeType":"YulTypedName","src":"2750:6:87","type":""}],"returnVariables":[{"name":"tail","nativeSrc":"2761:4:87","nodeType":"YulTypedName","src":"2761:4:87","type":""}],"src":"2638:234:87"},{"body":{"nativeSrc":"2947:110:87","nodeType":"YulBlock","src":"2947:110:87","statements":[{"body":{"nativeSrc":"2993:16:87","nodeType":"YulBlock","src":"2993:16:87","statements":[{"expression":{"arguments":[{"kind":"number","nativeSrc":"3002:1:87","nodeType":"YulLiteral","src":"3002:1:87","type":"","value":"0"},{"kind":"number","nativeSrc":"3005:1:87","nodeType":"YulLiteral","src":"3005:1:87","type":"","value":"0"}],"functionName":{"name":"revert","nativeSrc":"2995:6:87","nodeType":"YulIdentifier","src":"2995:6:87"},"nativeSrc":"2995:12:87","nodeType":"YulFunctionCall","src":"2995:12:87"},"nativeSrc":"2995:12:87","nodeType":"YulExpressionStatement","src":"2995:12:87"}]},"condition":{"arguments":[{"arguments":[{"name":"dataEnd","nativeSrc":"2968:7:87","nodeType":"YulIdentifier","src":"2968:7:87"},{"name":"headStart","nativeSrc":"2977:9:87","nodeType":"YulIdentifier","src":"2977:9:87"}],"functionName":{"name":"sub","nativeSrc":"2964:3:87","nodeType":"YulIdentifier","src":"2964:3:87"},"nativeSrc":"2964:23:87","nodeType":"YulFunctionCall","src":"2964:23:87"},{"kind":"number","nativeSrc":"2989:2:87","nodeType":"YulLiteral","src":"2989:2:87","type":"","value":"32"}],"functionName":{"name":"slt","nativeSrc":"2960:3:87","nodeType":"YulIdentifier","src":"2960:3:87"},"nativeSrc":"2960:32:87","nodeType":"YulFunctionCall","src":"2960:32:87"},"nativeSrc":"2957:52:87","nodeType":"YulIf","src":"2957:52:87"},{"nativeSrc":"3018:33:87","nodeType":"YulAssignment","src":"3018:33:87","value":{"arguments":[{"name":"headStart","nativeSrc":"3041:9:87","nodeType":"YulIdentifier","src":"3041:9:87"}],"functionName":{"name":"calldataload","nativeSrc":"3028:12:87","nodeType":"YulIdentifier","src":"3028:12:87"},"nativeSrc":"3028:23:87","nodeType":"YulFunctionCall","src":"3028:23:87"},"variableNames":[{"name":"value0","nativeSrc":"3018:6:87","nodeType":"YulIdentifier","src":"3018:6:87"}]}]},"name":"abi_decode_tuple_t_uint256","nativeSrc":"2877:180:87","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nativeSrc":"2913:9:87","nodeType":"YulTypedName","src":"2913:9:87","type":""},{"name":"dataEnd","nativeSrc":"2924:7:87","nodeType":"YulTypedName","src":"2924:7:87","type":""}],"returnVariables":[{"name":"value0","nativeSrc":"2936:6:87","nodeType":"YulTypedName","src":"2936:6:87","type":""}],"src":"2877:180:87"},{"body":{"nativeSrc":"3132:216:87","nodeType":"YulBlock","src":"3132:216:87","statements":[{"body":{"nativeSrc":"3178:16:87","nodeType":"YulBlock","src":"3178:16:87","statements":[{"expression":{"arguments":[{"kind":"number","nativeSrc":"3187:1:87","nodeType":"YulLiteral","src":"3187:1:87","type":"","value":"0"},{"kind":"number","nativeSrc":"3190:1:87","nodeType":"YulLiteral","src":"3190:1:87","type":"","value":"0"}],"functionName":{"name":"revert","nativeSrc":"3180:6:87","nodeType":"YulIdentifier","src":"3180:6:87"},"nativeSrc":"3180:12:87","nodeType":"YulFunctionCall","src":"3180:12:87"},"nativeSrc":"3180:12:87","nodeType":"YulExpressionStatement","src":"3180:12:87"}]},"condition":{"arguments":[{"arguments":[{"name":"dataEnd","nativeSrc":"3153:7:87","nodeType":"YulIdentifier","src":"3153:7:87"},{"name":"headStart","nativeSrc":"3162:9:87","nodeType":"YulIdentifier","src":"3162:9:87"}],"functionName":{"name":"sub","nativeSrc":"3149:3:87","nodeType":"YulIdentifier","src":"3149:3:87"},"nativeSrc":"3149:23:87","nodeType":"YulFunctionCall","src":"3149:23:87"},{"kind":"number","nativeSrc":"3174:2:87","nodeType":"YulLiteral","src":"3174:2:87","type":"","value":"32"}],"functionName":{"name":"slt","nativeSrc":"3145:3:87","nodeType":"YulIdentifier","src":"3145:3:87"},"nativeSrc":"3145:32:87","nodeType":"YulFunctionCall","src":"3145:32:87"},"nativeSrc":"3142:52:87","nodeType":"YulIf","src":"3142:52:87"},{"nativeSrc":"3203:36:87","nodeType":"YulVariableDeclaration","src":"3203:36:87","value":{"arguments":[{"name":"headStart","nativeSrc":"3229:9:87","nodeType":"YulIdentifier","src":"3229:9:87"}],"functionName":{"name":"calldataload","nativeSrc":"3216:12:87","nodeType":"YulIdentifier","src":"3216:12:87"},"nativeSrc":"3216:23:87","nodeType":"YulFunctionCall","src":"3216:23:87"},"variables":[{"name":"value","nativeSrc":"3207:5:87","nodeType":"YulTypedName","src":"3207:5:87","type":""}]},{"body":{"nativeSrc":"3302:16:87","nodeType":"YulBlock","src":"3302:16:87","statements":[{"expression":{"arguments":[{"kind":"number","nativeSrc":"3311:1:87","nodeType":"YulLiteral","src":"3311:1:87","type":"","value":"0"},{"kind":"number","nativeSrc":"3314:1:87","nodeType":"YulLiteral","src":"3314:1:87","type":"","value":"0"}],"functionName":{"name":"revert","nativeSrc":"3304:6:87","nodeType":"YulIdentifier","src":"3304:6:87"},"nativeSrc":"3304:12:87","nodeType":"YulFunctionCall","src":"3304:12:87"},"nativeSrc":"3304:12:87","nodeType":"YulExpressionStatement","src":"3304:12:87"}]},"condition":{"arguments":[{"arguments":[{"name":"value","nativeSrc":"3261:5:87","nodeType":"YulIdentifier","src":"3261:5:87"},{"arguments":[{"name":"value","nativeSrc":"3272:5:87","nodeType":"YulIdentifier","src":"3272:5:87"},{"arguments":[{"arguments":[{"kind":"number","nativeSrc":"3287:3:87","nodeType":"YulLiteral","src":"3287:3:87","type":"","value":"160"},{"kind":"number","nativeSrc":"3292:1:87","nodeType":"YulLiteral","src":"3292:1:87","type":"","value":"1"}],"functionName":{"name":"shl","nativeSrc":"3283:3:87","nodeType":"YulIdentifier","src":"3283:3:87"},"nativeSrc":"3283:11:87","nodeType":"YulFunctionCall","src":"3283:11:87"},{"kind":"number","nativeSrc":"3296:1:87","nodeType":"YulLiteral","src":"3296:1:87","type":"","value":"1"}],"functionName":{"name":"sub","nativeSrc":"3279:3:87","nodeType":"YulIdentifier","src":"3279:3:87"},"nativeSrc":"3279:19:87","nodeType":"YulFunctionCall","src":"3279:19:87"}],"functionName":{"name":"and","nativeSrc":"3268:3:87","nodeType":"YulIdentifier","src":"3268:3:87"},"nativeSrc":"3268:31:87","nodeType":"YulFunctionCall","src":"3268:31:87"}],"functionName":{"name":"eq","nativeSrc":"3258:2:87","nodeType":"YulIdentifier","src":"3258:2:87"},"nativeSrc":"3258:42:87","nodeType":"YulFunctionCall","src":"3258:42:87"}],"functionName":{"name":"iszero","nativeSrc":"3251:6:87","nodeType":"YulIdentifier","src":"3251:6:87"},"nativeSrc":"3251:50:87","nodeType":"YulFunctionCall","src":"3251:50:87"},"nativeSrc":"3248:70:87","nodeType":"YulIf","src":"3248:70:87"},{"nativeSrc":"3327:15:87","nodeType":"YulAssignment","src":"3327:15:87","value":{"name":"value","nativeSrc":"3337:5:87","nodeType":"YulIdentifier","src":"3337:5:87"},"variableNames":[{"name":"value0","nativeSrc":"3327:6:87","nodeType":"YulIdentifier","src":"3327:6:87"}]}]},"name":"abi_decode_tuple_t_address","nativeSrc":"3062:286:87","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nativeSrc":"3098:9:87","nodeType":"YulTypedName","src":"3098:9:87","type":""},{"name":"dataEnd","nativeSrc":"3109:7:87","nodeType":"YulTypedName","src":"3109:7:87","type":""}],"returnVariables":[{"name":"value0","nativeSrc":"3121:6:87","nodeType":"YulTypedName","src":"3121:6:87","type":""}],"src":"3062:286:87"},{"body":{"nativeSrc":"3385:95:87","nodeType":"YulBlock","src":"3385:95:87","statements":[{"expression":{"arguments":[{"kind":"number","nativeSrc":"3402:1:87","nodeType":"YulLiteral","src":"3402:1:87","type":"","value":"0"},{"arguments":[{"kind":"number","nativeSrc":"3409:3:87","nodeType":"YulLiteral","src":"3409:3:87","type":"","value":"224"},{"kind":"number","nativeSrc":"3414:10:87","nodeType":"YulLiteral","src":"3414:10:87","type":"","value":"0x4e487b71"}],"functionName":{"name":"shl","nativeSrc":"3405:3:87","nodeType":"YulIdentifier","src":"3405:3:87"},"nativeSrc":"3405:20:87","nodeType":"YulFunctionCall","src":"3405:20:87"}],"functionName":{"name":"mstore","nativeSrc":"3395:6:87","nodeType":"YulIdentifier","src":"3395:6:87"},"nativeSrc":"3395:31:87","nodeType":"YulFunctionCall","src":"3395:31:87"},"nativeSrc":"3395:31:87","nodeType":"YulExpressionStatement","src":"3395:31:87"},{"expression":{"arguments":[{"kind":"number","nativeSrc":"3442:1:87","nodeType":"YulLiteral","src":"3442:1:87","type":"","value":"4"},{"kind":"number","nativeSrc":"3445:4:87","nodeType":"YulLiteral","src":"3445:4:87","type":"","value":"0x21"}],"functionName":{"name":"mstore","nativeSrc":"3435:6:87","nodeType":"YulIdentifier","src":"3435:6:87"},"nativeSrc":"3435:15:87","nodeType":"YulFunctionCall","src":"3435:15:87"},"nativeSrc":"3435:15:87","nodeType":"YulExpressionStatement","src":"3435:15:87"},{"expression":{"arguments":[{"kind":"number","nativeSrc":"3466:1:87","nodeType":"YulLiteral","src":"3466:1:87","type":"","value":"0"},{"kind":"number","nativeSrc":"3469:4:87","nodeType":"YulLiteral","src":"3469:4:87","type":"","value":"0x24"}],"functionName":{"name":"revert","nativeSrc":"3459:6:87","nodeType":"YulIdentifier","src":"3459:6:87"},"nativeSrc":"3459:15:87","nodeType":"YulFunctionCall","src":"3459:15:87"},"nativeSrc":"3459:15:87","nodeType":"YulExpressionStatement","src":"3459:15:87"}]},"name":"panic_error_0x21","nativeSrc":"3353:127:87","nodeType":"YulFunctionDefinition","src":"3353:127:87"},{"body":{"nativeSrc":"3546:418:87","nodeType":"YulBlock","src":"3546:418:87","statements":[{"nativeSrc":"3556:22:87","nodeType":"YulVariableDeclaration","src":"3556:22:87","value":{"arguments":[{"name":"value","nativeSrc":"3572:5:87","nodeType":"YulIdentifier","src":"3572:5:87"}],"functionName":{"name":"mload","nativeSrc":"3566:5:87","nodeType":"YulIdentifier","src":"3566:5:87"},"nativeSrc":"3566:12:87","nodeType":"YulFunctionCall","src":"3566:12:87"},"variables":[{"name":"_1","nativeSrc":"3560:2:87","nodeType":"YulTypedName","src":"3560:2:87","type":""}]},{"body":{"nativeSrc":"3616:111:87","nodeType":"YulBlock","src":"3616:111:87","statements":[{"expression":{"arguments":[{"kind":"number","nativeSrc":"3637:1:87","nodeType":"YulLiteral","src":"3637:1:87","type":"","value":"0"},{"arguments":[{"kind":"number","nativeSrc":"3644:3:87","nodeType":"YulLiteral","src":"3644:3:87","type":"","value":"224"},{"kind":"number","nativeSrc":"3649:10:87","nodeType":"YulLiteral","src":"3649:10:87","type":"","value":"0x4e487b71"}],"functionName":{"name":"shl","nativeSrc":"3640:3:87","nodeType":"YulIdentifier","src":"3640:3:87"},"nativeSrc":"3640:20:87","nodeType":"YulFunctionCall","src":"3640:20:87"}],"functionName":{"name":"mstore","nativeSrc":"3630:6:87","nodeType":"YulIdentifier","src":"3630:6:87"},"nativeSrc":"3630:31:87","nodeType":"YulFunctionCall","src":"3630:31:87"},"nativeSrc":"3630:31:87","nodeType":"YulExpressionStatement","src":"3630:31:87"},{"expression":{"arguments":[{"kind":"number","nativeSrc":"3681:1:87","nodeType":"YulLiteral","src":"3681:1:87","type":"","value":"4"},{"kind":"number","nativeSrc":"3684:4:87","nodeType":"YulLiteral","src":"3684:4:87","type":"","value":"0x21"}],"functionName":{"name":"mstore","nativeSrc":"3674:6:87","nodeType":"YulIdentifier","src":"3674:6:87"},"nativeSrc":"3674:15:87","nodeType":"YulFunctionCall","src":"3674:15:87"},"nativeSrc":"3674:15:87","nodeType":"YulExpressionStatement","src":"3674:15:87"},{"expression":{"arguments":[{"kind":"number","nativeSrc":"3709:1:87","nodeType":"YulLiteral","src":"3709:1:87","type":"","value":"0"},{"kind":"number","nativeSrc":"3712:4:87","nodeType":"YulLiteral","src":"3712:4:87","type":"","value":"0x24"}],"functionName":{"name":"revert","nativeSrc":"3702:6:87","nodeType":"YulIdentifier","src":"3702:6:87"},"nativeSrc":"3702:15:87","nodeType":"YulFunctionCall","src":"3702:15:87"},"nativeSrc":"3702:15:87","nodeType":"YulExpressionStatement","src":"3702:15:87"}]},"condition":{"arguments":[{"arguments":[{"name":"_1","nativeSrc":"3600:2:87","nodeType":"YulIdentifier","src":"3600:2:87"},{"kind":"number","nativeSrc":"3604:1:87","nodeType":"YulLiteral","src":"3604:1:87","type":"","value":"3"}],"functionName":{"name":"lt","nativeSrc":"3597:2:87","nodeType":"YulIdentifier","src":"3597:2:87"},"nativeSrc":"3597:9:87","nodeType":"YulFunctionCall","src":"3597:9:87"}],"functionName":{"name":"iszero","nativeSrc":"3590:6:87","nodeType":"YulIdentifier","src":"3590:6:87"},"nativeSrc":"3590:17:87","nodeType":"YulFunctionCall","src":"3590:17:87"},"nativeSrc":"3587:140:87","nodeType":"YulIf","src":"3587:140:87"},{"expression":{"arguments":[{"name":"pos","nativeSrc":"3743:3:87","nodeType":"YulIdentifier","src":"3743:3:87"},{"name":"_1","nativeSrc":"3748:2:87","nodeType":"YulIdentifier","src":"3748:2:87"}],"functionName":{"name":"mstore","nativeSrc":"3736:6:87","nodeType":"YulIdentifier","src":"3736:6:87"},"nativeSrc":"3736:15:87","nodeType":"YulFunctionCall","src":"3736:15:87"},"nativeSrc":"3736:15:87","nodeType":"YulExpressionStatement","src":"3736:15:87"},{"expression":{"arguments":[{"arguments":[{"name":"pos","nativeSrc":"3771:3:87","nodeType":"YulIdentifier","src":"3771:3:87"},{"kind":"number","nativeSrc":"3776:4:87","nodeType":"YulLiteral","src":"3776:4:87","type":"","value":"0x20"}],"functionName":{"name":"add","nativeSrc":"3767:3:87","nodeType":"YulIdentifier","src":"3767:3:87"},"nativeSrc":"3767:14:87","nodeType":"YulFunctionCall","src":"3767:14:87"},{"arguments":[{"arguments":[{"name":"value","nativeSrc":"3793:5:87","nodeType":"YulIdentifier","src":"3793:5:87"},{"kind":"number","nativeSrc":"3800:4:87","nodeType":"YulLiteral","src":"3800:4:87","type":"","value":"0x20"}],"functionName":{"name":"add","nativeSrc":"3789:3:87","nodeType":"YulIdentifier","src":"3789:3:87"},"nativeSrc":"3789:16:87","nodeType":"YulFunctionCall","src":"3789:16:87"}],"functionName":{"name":"mload","nativeSrc":"3783:5:87","nodeType":"YulIdentifier","src":"3783:5:87"},"nativeSrc":"3783:23:87","nodeType":"YulFunctionCall","src":"3783:23:87"}],"functionName":{"name":"mstore","nativeSrc":"3760:6:87","nodeType":"YulIdentifier","src":"3760:6:87"},"nativeSrc":"3760:47:87","nodeType":"YulFunctionCall","src":"3760:47:87"},"nativeSrc":"3760:47:87","nodeType":"YulExpressionStatement","src":"3760:47:87"},{"nativeSrc":"3816:43:87","nodeType":"YulVariableDeclaration","src":"3816:43:87","value":{"arguments":[{"arguments":[{"name":"value","nativeSrc":"3846:5:87","nodeType":"YulIdentifier","src":"3846:5:87"},{"kind":"number","nativeSrc":"3853:4:87","nodeType":"YulLiteral","src":"3853:4:87","type":"","value":"0x40"}],"functionName":{"name":"add","nativeSrc":"3842:3:87","nodeType":"YulIdentifier","src":"3842:3:87"},"nativeSrc":"3842:16:87","nodeType":"YulFunctionCall","src":"3842:16:87"}],"functionName":{"name":"mload","nativeSrc":"3836:5:87","nodeType":"YulIdentifier","src":"3836:5:87"},"nativeSrc":"3836:23:87","nodeType":"YulFunctionCall","src":"3836:23:87"},"variables":[{"name":"memberValue0","nativeSrc":"3820:12:87","nodeType":"YulTypedName","src":"3820:12:87","type":""}]},{"expression":{"arguments":[{"arguments":[{"name":"pos","nativeSrc":"3879:3:87","nodeType":"YulIdentifier","src":"3879:3:87"},{"kind":"number","nativeSrc":"3884:4:87","nodeType":"YulLiteral","src":"3884:4:87","type":"","value":"0x40"}],"functionName":{"name":"add","nativeSrc":"3875:3:87","nodeType":"YulIdentifier","src":"3875:3:87"},"nativeSrc":"3875:14:87","nodeType":"YulFunctionCall","src":"3875:14:87"},{"kind":"number","nativeSrc":"3891:4:87","nodeType":"YulLiteral","src":"3891:4:87","type":"","value":"0x60"}],"functionName":{"name":"mstore","nativeSrc":"3868:6:87","nodeType":"YulIdentifier","src":"3868:6:87"},"nativeSrc":"3868:28:87","nodeType":"YulFunctionCall","src":"3868:28:87"},"nativeSrc":"3868:28:87","nodeType":"YulExpressionStatement","src":"3868:28:87"},{"nativeSrc":"3905:53:87","nodeType":"YulAssignment","src":"3905:53:87","value":{"arguments":[{"name":"memberValue0","nativeSrc":"3929:12:87","nodeType":"YulIdentifier","src":"3929:12:87"},{"arguments":[{"name":"pos","nativeSrc":"3947:3:87","nodeType":"YulIdentifier","src":"3947:3:87"},{"kind":"number","nativeSrc":"3952:4:87","nodeType":"YulLiteral","src":"3952:4:87","type":"","value":"0x60"}],"functionName":{"name":"add","nativeSrc":"3943:3:87","nodeType":"YulIdentifier","src":"3943:3:87"},"nativeSrc":"3943:14:87","nodeType":"YulFunctionCall","src":"3943:14:87"}],"functionName":{"name":"abi_encode_bytes","nativeSrc":"3912:16:87","nodeType":"YulIdentifier","src":"3912:16:87"},"nativeSrc":"3912:46:87","nodeType":"YulFunctionCall","src":"3912:46:87"},"variableNames":[{"name":"end","nativeSrc":"3905:3:87","nodeType":"YulIdentifier","src":"3905:3:87"}]}]},"name":"abi_encode_struct_SwapConfig","nativeSrc":"3485:479:87","nodeType":"YulFunctionDefinition","parameters":[{"name":"value","nativeSrc":"3523:5:87","nodeType":"YulTypedName","src":"3523:5:87","type":""},{"name":"pos","nativeSrc":"3530:3:87","nodeType":"YulTypedName","src":"3530:3:87","type":""}],"returnVariables":[{"name":"end","nativeSrc":"3538:3:87","nodeType":"YulTypedName","src":"3538:3:87","type":""}],"src":"3485:479:87"},{"body":{"nativeSrc":"4126:110:87","nodeType":"YulBlock","src":"4126:110:87","statements":[{"expression":{"arguments":[{"name":"headStart","nativeSrc":"4143:9:87","nodeType":"YulIdentifier","src":"4143:9:87"},{"kind":"number","nativeSrc":"4154:2:87","nodeType":"YulLiteral","src":"4154:2:87","type":"","value":"32"}],"functionName":{"name":"mstore","nativeSrc":"4136:6:87","nodeType":"YulIdentifier","src":"4136:6:87"},"nativeSrc":"4136:21:87","nodeType":"YulFunctionCall","src":"4136:21:87"},"nativeSrc":"4136:21:87","nodeType":"YulExpressionStatement","src":"4136:21:87"},{"nativeSrc":"4166:64:87","nodeType":"YulAssignment","src":"4166:64:87","value":{"arguments":[{"name":"value0","nativeSrc":"4203:6:87","nodeType":"YulIdentifier","src":"4203:6:87"},{"arguments":[{"name":"headStart","nativeSrc":"4215:9:87","nodeType":"YulIdentifier","src":"4215:9:87"},{"kind":"number","nativeSrc":"4226:2:87","nodeType":"YulLiteral","src":"4226:2:87","type":"","value":"32"}],"functionName":{"name":"add","nativeSrc":"4211:3:87","nodeType":"YulIdentifier","src":"4211:3:87"},"nativeSrc":"4211:18:87","nodeType":"YulFunctionCall","src":"4211:18:87"}],"functionName":{"name":"abi_encode_struct_SwapConfig","nativeSrc":"4174:28:87","nodeType":"YulIdentifier","src":"4174:28:87"},"nativeSrc":"4174:56:87","nodeType":"YulFunctionCall","src":"4174:56:87"},"variableNames":[{"name":"tail","nativeSrc":"4166:4:87","nodeType":"YulIdentifier","src":"4166:4:87"}]}]},"name":"abi_encode_tuple_t_struct$_SwapConfig_$1113_memory_ptr__to_t_struct$_SwapConfig_$1113_memory_ptr__fromStack_reversed","nativeSrc":"3969:267:87","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nativeSrc":"4095:9:87","nodeType":"YulTypedName","src":"4095:9:87","type":""},{"name":"value0","nativeSrc":"4106:6:87","nodeType":"YulTypedName","src":"4106:6:87","type":""}],"returnVariables":[{"name":"tail","nativeSrc":"4117:4:87","nodeType":"YulTypedName","src":"4117:4:87","type":""}],"src":"3969:267:87"},{"body":{"nativeSrc":"4308:206:87","nodeType":"YulBlock","src":"4308:206:87","statements":[{"body":{"nativeSrc":"4354:16:87","nodeType":"YulBlock","src":"4354:16:87","statements":[{"expression":{"arguments":[{"kind":"number","nativeSrc":"4363:1:87","nodeType":"YulLiteral","src":"4363:1:87","type":"","value":"0"},{"kind":"number","nativeSrc":"4366:1:87","nodeType":"YulLiteral","src":"4366:1:87","type":"","value":"0"}],"functionName":{"name":"revert","nativeSrc":"4356:6:87","nodeType":"YulIdentifier","src":"4356:6:87"},"nativeSrc":"4356:12:87","nodeType":"YulFunctionCall","src":"4356:12:87"},"nativeSrc":"4356:12:87","nodeType":"YulExpressionStatement","src":"4356:12:87"}]},"condition":{"arguments":[{"arguments":[{"name":"dataEnd","nativeSrc":"4329:7:87","nodeType":"YulIdentifier","src":"4329:7:87"},{"name":"headStart","nativeSrc":"4338:9:87","nodeType":"YulIdentifier","src":"4338:9:87"}],"functionName":{"name":"sub","nativeSrc":"4325:3:87","nodeType":"YulIdentifier","src":"4325:3:87"},"nativeSrc":"4325:23:87","nodeType":"YulFunctionCall","src":"4325:23:87"},{"kind":"number","nativeSrc":"4350:2:87","nodeType":"YulLiteral","src":"4350:2:87","type":"","value":"32"}],"functionName":{"name":"slt","nativeSrc":"4321:3:87","nodeType":"YulIdentifier","src":"4321:3:87"},"nativeSrc":"4321:32:87","nodeType":"YulFunctionCall","src":"4321:32:87"},"nativeSrc":"4318:52:87","nodeType":"YulIf","src":"4318:52:87"},{"nativeSrc":"4379:36:87","nodeType":"YulVariableDeclaration","src":"4379:36:87","value":{"arguments":[{"name":"headStart","nativeSrc":"4405:9:87","nodeType":"YulIdentifier","src":"4405:9:87"}],"functionName":{"name":"calldataload","nativeSrc":"4392:12:87","nodeType":"YulIdentifier","src":"4392:12:87"},"nativeSrc":"4392:23:87","nodeType":"YulFunctionCall","src":"4392:23:87"},"variables":[{"name":"value","nativeSrc":"4383:5:87","nodeType":"YulTypedName","src":"4383:5:87","type":""}]},{"body":{"nativeSrc":"4468:16:87","nodeType":"YulBlock","src":"4468:16:87","statements":[{"expression":{"arguments":[{"kind":"number","nativeSrc":"4477:1:87","nodeType":"YulLiteral","src":"4477:1:87","type":"","value":"0"},{"kind":"number","nativeSrc":"4480:1:87","nodeType":"YulLiteral","src":"4480:1:87","type":"","value":"0"}],"functionName":{"name":"revert","nativeSrc":"4470:6:87","nodeType":"YulIdentifier","src":"4470:6:87"},"nativeSrc":"4470:12:87","nodeType":"YulFunctionCall","src":"4470:12:87"},"nativeSrc":"4470:12:87","nodeType":"YulExpressionStatement","src":"4470:12:87"}]},"condition":{"arguments":[{"arguments":[{"name":"value","nativeSrc":"4437:5:87","nodeType":"YulIdentifier","src":"4437:5:87"},{"arguments":[{"arguments":[{"name":"value","nativeSrc":"4458:5:87","nodeType":"YulIdentifier","src":"4458:5:87"}],"functionName":{"name":"iszero","nativeSrc":"4451:6:87","nodeType":"YulIdentifier","src":"4451:6:87"},"nativeSrc":"4451:13:87","nodeType":"YulFunctionCall","src":"4451:13:87"}],"functionName":{"name":"iszero","nativeSrc":"4444:6:87","nodeType":"YulIdentifier","src":"4444:6:87"},"nativeSrc":"4444:21:87","nodeType":"YulFunctionCall","src":"4444:21:87"}],"functionName":{"name":"eq","nativeSrc":"4434:2:87","nodeType":"YulIdentifier","src":"4434:2:87"},"nativeSrc":"4434:32:87","nodeType":"YulFunctionCall","src":"4434:32:87"}],"functionName":{"name":"iszero","nativeSrc":"4427:6:87","nodeType":"YulIdentifier","src":"4427:6:87"},"nativeSrc":"4427:40:87","nodeType":"YulFunctionCall","src":"4427:40:87"},"nativeSrc":"4424:60:87","nodeType":"YulIf","src":"4424:60:87"},{"nativeSrc":"4493:15:87","nodeType":"YulAssignment","src":"4493:15:87","value":{"name":"value","nativeSrc":"4503:5:87","nodeType":"YulIdentifier","src":"4503:5:87"},"variableNames":[{"name":"value0","nativeSrc":"4493:6:87","nodeType":"YulIdentifier","src":"4493:6:87"}]}]},"name":"abi_decode_tuple_t_bool","nativeSrc":"4241:273:87","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nativeSrc":"4274:9:87","nodeType":"YulTypedName","src":"4274:9:87","type":""},{"name":"dataEnd","nativeSrc":"4285:7:87","nodeType":"YulTypedName","src":"4285:7:87","type":""}],"returnVariables":[{"name":"value0","nativeSrc":"4297:6:87","nodeType":"YulTypedName","src":"4297:6:87","type":""}],"src":"4241:273:87"},{"body":{"nativeSrc":"4620:76:87","nodeType":"YulBlock","src":"4620:76:87","statements":[{"nativeSrc":"4630:26:87","nodeType":"YulAssignment","src":"4630:26:87","value":{"arguments":[{"name":"headStart","nativeSrc":"4642:9:87","nodeType":"YulIdentifier","src":"4642:9:87"},{"kind":"number","nativeSrc":"4653:2:87","nodeType":"YulLiteral","src":"4653:2:87","type":"","value":"32"}],"functionName":{"name":"add","nativeSrc":"4638:3:87","nodeType":"YulIdentifier","src":"4638:3:87"},"nativeSrc":"4638:18:87","nodeType":"YulFunctionCall","src":"4638:18:87"},"variableNames":[{"name":"tail","nativeSrc":"4630:4:87","nodeType":"YulIdentifier","src":"4630:4:87"}]},{"expression":{"arguments":[{"name":"headStart","nativeSrc":"4672:9:87","nodeType":"YulIdentifier","src":"4672:9:87"},{"name":"value0","nativeSrc":"4683:6:87","nodeType":"YulIdentifier","src":"4683:6:87"}],"functionName":{"name":"mstore","nativeSrc":"4665:6:87","nodeType":"YulIdentifier","src":"4665:6:87"},"nativeSrc":"4665:25:87","nodeType":"YulFunctionCall","src":"4665:25:87"},"nativeSrc":"4665:25:87","nodeType":"YulExpressionStatement","src":"4665:25:87"}]},"name":"abi_encode_tuple_t_bytes32__to_t_bytes32__fromStack_reversed","nativeSrc":"4519:177:87","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nativeSrc":"4589:9:87","nodeType":"YulTypedName","src":"4589:9:87","type":""},{"name":"value0","nativeSrc":"4600:6:87","nodeType":"YulTypedName","src":"4600:6:87","type":""}],"returnVariables":[{"name":"tail","nativeSrc":"4611:4:87","nodeType":"YulTypedName","src":"4611:4:87","type":""}],"src":"4519:177:87"},{"body":{"nativeSrc":"4802:102:87","nodeType":"YulBlock","src":"4802:102:87","statements":[{"nativeSrc":"4812:26:87","nodeType":"YulAssignment","src":"4812:26:87","value":{"arguments":[{"name":"headStart","nativeSrc":"4824:9:87","nodeType":"YulIdentifier","src":"4824:9:87"},{"kind":"number","nativeSrc":"4835:2:87","nodeType":"YulLiteral","src":"4835:2:87","type":"","value":"32"}],"functionName":{"name":"add","nativeSrc":"4820:3:87","nodeType":"YulIdentifier","src":"4820:3:87"},"nativeSrc":"4820:18:87","nodeType":"YulFunctionCall","src":"4820:18:87"},"variableNames":[{"name":"tail","nativeSrc":"4812:4:87","nodeType":"YulIdentifier","src":"4812:4:87"}]},{"expression":{"arguments":[{"name":"headStart","nativeSrc":"4854:9:87","nodeType":"YulIdentifier","src":"4854:9:87"},{"arguments":[{"name":"value0","nativeSrc":"4869:6:87","nodeType":"YulIdentifier","src":"4869:6:87"},{"arguments":[{"arguments":[{"kind":"number","nativeSrc":"4885:3:87","nodeType":"YulLiteral","src":"4885:3:87","type":"","value":"160"},{"kind":"number","nativeSrc":"4890:1:87","nodeType":"YulLiteral","src":"4890:1:87","type":"","value":"1"}],"functionName":{"name":"shl","nativeSrc":"4881:3:87","nodeType":"YulIdentifier","src":"4881:3:87"},"nativeSrc":"4881:11:87","nodeType":"YulFunctionCall","src":"4881:11:87"},{"kind":"number","nativeSrc":"4894:1:87","nodeType":"YulLiteral","src":"4894:1:87","type":"","value":"1"}],"functionName":{"name":"sub","nativeSrc":"4877:3:87","nodeType":"YulIdentifier","src":"4877:3:87"},"nativeSrc":"4877:19:87","nodeType":"YulFunctionCall","src":"4877:19:87"}],"functionName":{"name":"and","nativeSrc":"4865:3:87","nodeType":"YulIdentifier","src":"4865:3:87"},"nativeSrc":"4865:32:87","nodeType":"YulFunctionCall","src":"4865:32:87"}],"functionName":{"name":"mstore","nativeSrc":"4847:6:87","nodeType":"YulIdentifier","src":"4847:6:87"},"nativeSrc":"4847:51:87","nodeType":"YulFunctionCall","src":"4847:51:87"},"nativeSrc":"4847:51:87","nodeType":"YulExpressionStatement","src":"4847:51:87"}]},"name":"abi_encode_tuple_t_address__to_t_address__fromStack_reversed","nativeSrc":"4701:203:87","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nativeSrc":"4771:9:87","nodeType":"YulTypedName","src":"4771:9:87","type":""},{"name":"value0","nativeSrc":"4782:6:87","nodeType":"YulTypedName","src":"4782:6:87","type":""}],"returnVariables":[{"name":"tail","nativeSrc":"4793:4:87","nodeType":"YulTypedName","src":"4793:4:87","type":""}],"src":"4701:203:87"},{"body":{"nativeSrc":"4988:241:87","nodeType":"YulBlock","src":"4988:241:87","statements":[{"body":{"nativeSrc":"5034:16:87","nodeType":"YulBlock","src":"5034:16:87","statements":[{"expression":{"arguments":[{"kind":"number","nativeSrc":"5043:1:87","nodeType":"YulLiteral","src":"5043:1:87","type":"","value":"0"},{"kind":"number","nativeSrc":"5046:1:87","nodeType":"YulLiteral","src":"5046:1:87","type":"","value":"0"}],"functionName":{"name":"revert","nativeSrc":"5036:6:87","nodeType":"YulIdentifier","src":"5036:6:87"},"nativeSrc":"5036:12:87","nodeType":"YulFunctionCall","src":"5036:12:87"},"nativeSrc":"5036:12:87","nodeType":"YulExpressionStatement","src":"5036:12:87"}]},"condition":{"arguments":[{"arguments":[{"name":"dataEnd","nativeSrc":"5009:7:87","nodeType":"YulIdentifier","src":"5009:7:87"},{"name":"headStart","nativeSrc":"5018:9:87","nodeType":"YulIdentifier","src":"5018:9:87"}],"functionName":{"name":"sub","nativeSrc":"5005:3:87","nodeType":"YulIdentifier","src":"5005:3:87"},"nativeSrc":"5005:23:87","nodeType":"YulFunctionCall","src":"5005:23:87"},{"kind":"number","nativeSrc":"5030:2:87","nodeType":"YulLiteral","src":"5030:2:87","type":"","value":"32"}],"functionName":{"name":"slt","nativeSrc":"5001:3:87","nodeType":"YulIdentifier","src":"5001:3:87"},"nativeSrc":"5001:32:87","nodeType":"YulFunctionCall","src":"5001:32:87"},"nativeSrc":"4998:52:87","nodeType":"YulIf","src":"4998:52:87"},{"nativeSrc":"5059:37:87","nodeType":"YulVariableDeclaration","src":"5059:37:87","value":{"arguments":[{"name":"headStart","nativeSrc":"5086:9:87","nodeType":"YulIdentifier","src":"5086:9:87"}],"functionName":{"name":"calldataload","nativeSrc":"5073:12:87","nodeType":"YulIdentifier","src":"5073:12:87"},"nativeSrc":"5073:23:87","nodeType":"YulFunctionCall","src":"5073:23:87"},"variables":[{"name":"offset","nativeSrc":"5063:6:87","nodeType":"YulTypedName","src":"5063:6:87","type":""}]},{"body":{"nativeSrc":"5139:16:87","nodeType":"YulBlock","src":"5139:16:87","statements":[{"expression":{"arguments":[{"kind":"number","nativeSrc":"5148:1:87","nodeType":"YulLiteral","src":"5148:1:87","type":"","value":"0"},{"kind":"number","nativeSrc":"5151:1:87","nodeType":"YulLiteral","src":"5151:1:87","type":"","value":"0"}],"functionName":{"name":"revert","nativeSrc":"5141:6:87","nodeType":"YulIdentifier","src":"5141:6:87"},"nativeSrc":"5141:12:87","nodeType":"YulFunctionCall","src":"5141:12:87"},"nativeSrc":"5141:12:87","nodeType":"YulExpressionStatement","src":"5141:12:87"}]},"condition":{"arguments":[{"name":"offset","nativeSrc":"5111:6:87","nodeType":"YulIdentifier","src":"5111:6:87"},{"kind":"number","nativeSrc":"5119:18:87","nodeType":"YulLiteral","src":"5119:18:87","type":"","value":"0xffffffffffffffff"}],"functionName":{"name":"gt","nativeSrc":"5108:2:87","nodeType":"YulIdentifier","src":"5108:2:87"},"nativeSrc":"5108:30:87","nodeType":"YulFunctionCall","src":"5108:30:87"},"nativeSrc":"5105:50:87","nodeType":"YulIf","src":"5105:50:87"},{"nativeSrc":"5164:59:87","nodeType":"YulAssignment","src":"5164:59:87","value":{"arguments":[{"arguments":[{"name":"headStart","nativeSrc":"5195:9:87","nodeType":"YulIdentifier","src":"5195:9:87"},{"name":"offset","nativeSrc":"5206:6:87","nodeType":"YulIdentifier","src":"5206:6:87"}],"functionName":{"name":"add","nativeSrc":"5191:3:87","nodeType":"YulIdentifier","src":"5191:3:87"},"nativeSrc":"5191:22:87","nodeType":"YulFunctionCall","src":"5191:22:87"},{"name":"dataEnd","nativeSrc":"5215:7:87","nodeType":"YulIdentifier","src":"5215:7:87"}],"functionName":{"name":"abi_decode_bytes","nativeSrc":"5174:16:87","nodeType":"YulIdentifier","src":"5174:16:87"},"nativeSrc":"5174:49:87","nodeType":"YulFunctionCall","src":"5174:49:87"},"variableNames":[{"name":"value0","nativeSrc":"5164:6:87","nodeType":"YulIdentifier","src":"5164:6:87"}]}]},"name":"abi_decode_tuple_t_bytes_memory_ptr","nativeSrc":"4909:320:87","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nativeSrc":"4954:9:87","nodeType":"YulTypedName","src":"4954:9:87","type":""},{"name":"dataEnd","nativeSrc":"4965:7:87","nodeType":"YulTypedName","src":"4965:7:87","type":""}],"returnVariables":[{"name":"value0","nativeSrc":"4977:6:87","nodeType":"YulTypedName","src":"4977:6:87","type":""}],"src":"4909:320:87"},{"body":{"nativeSrc":"5315:149:87","nodeType":"YulBlock","src":"5315:149:87","statements":[{"body":{"nativeSrc":"5361:16:87","nodeType":"YulBlock","src":"5361:16:87","statements":[{"expression":{"arguments":[{"kind":"number","nativeSrc":"5370:1:87","nodeType":"YulLiteral","src":"5370:1:87","type":"","value":"0"},{"kind":"number","nativeSrc":"5373:1:87","nodeType":"YulLiteral","src":"5373:1:87","type":"","value":"0"}],"functionName":{"name":"revert","nativeSrc":"5363:6:87","nodeType":"YulIdentifier","src":"5363:6:87"},"nativeSrc":"5363:12:87","nodeType":"YulFunctionCall","src":"5363:12:87"},"nativeSrc":"5363:12:87","nodeType":"YulExpressionStatement","src":"5363:12:87"}]},"condition":{"arguments":[{"arguments":[{"name":"dataEnd","nativeSrc":"5336:7:87","nodeType":"YulIdentifier","src":"5336:7:87"},{"name":"headStart","nativeSrc":"5345:9:87","nodeType":"YulIdentifier","src":"5345:9:87"}],"functionName":{"name":"sub","nativeSrc":"5332:3:87","nodeType":"YulIdentifier","src":"5332:3:87"},"nativeSrc":"5332:23:87","nodeType":"YulFunctionCall","src":"5332:23:87"},{"kind":"number","nativeSrc":"5357:2:87","nodeType":"YulLiteral","src":"5357:2:87","type":"","value":"32"}],"functionName":{"name":"slt","nativeSrc":"5328:3:87","nodeType":"YulIdentifier","src":"5328:3:87"},"nativeSrc":"5328:32:87","nodeType":"YulFunctionCall","src":"5328:32:87"},"nativeSrc":"5325:52:87","nodeType":"YulIf","src":"5325:52:87"},{"nativeSrc":"5386:14:87","nodeType":"YulVariableDeclaration","src":"5386:14:87","value":{"kind":"number","nativeSrc":"5399:1:87","nodeType":"YulLiteral","src":"5399:1:87","type":"","value":"0"},"variables":[{"name":"value","nativeSrc":"5390:5:87","nodeType":"YulTypedName","src":"5390:5:87","type":""}]},{"nativeSrc":"5409:25:87","nodeType":"YulAssignment","src":"5409:25:87","value":{"arguments":[{"name":"headStart","nativeSrc":"5424:9:87","nodeType":"YulIdentifier","src":"5424:9:87"}],"functionName":{"name":"mload","nativeSrc":"5418:5:87","nodeType":"YulIdentifier","src":"5418:5:87"},"nativeSrc":"5418:16:87","nodeType":"YulFunctionCall","src":"5418:16:87"},"variableNames":[{"name":"value","nativeSrc":"5409:5:87","nodeType":"YulIdentifier","src":"5409:5:87"}]},{"nativeSrc":"5443:15:87","nodeType":"YulAssignment","src":"5443:15:87","value":{"name":"value","nativeSrc":"5453:5:87","nodeType":"YulIdentifier","src":"5453:5:87"},"variableNames":[{"name":"value0","nativeSrc":"5443:6:87","nodeType":"YulIdentifier","src":"5443:6:87"}]}]},"name":"abi_decode_tuple_t_uint256_fromMemory","nativeSrc":"5234:230:87","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nativeSrc":"5281:9:87","nodeType":"YulTypedName","src":"5281:9:87","type":""},{"name":"dataEnd","nativeSrc":"5292:7:87","nodeType":"YulTypedName","src":"5292:7:87","type":""}],"returnVariables":[{"name":"value0","nativeSrc":"5304:6:87","nodeType":"YulTypedName","src":"5304:6:87","type":""}],"src":"5234:230:87"},{"body":{"nativeSrc":"5746:337:87","nodeType":"YulBlock","src":"5746:337:87","statements":[{"expression":{"arguments":[{"name":"headStart","nativeSrc":"5763:9:87","nodeType":"YulIdentifier","src":"5763:9:87"},{"kind":"number","nativeSrc":"5774:3:87","nodeType":"YulLiteral","src":"5774:3:87","type":"","value":"160"}],"functionName":{"name":"mstore","nativeSrc":"5756:6:87","nodeType":"YulIdentifier","src":"5756:6:87"},"nativeSrc":"5756:22:87","nodeType":"YulFunctionCall","src":"5756:22:87"},"nativeSrc":"5756:22:87","nodeType":"YulExpressionStatement","src":"5756:22:87"},{"nativeSrc":"5787:65:87","nodeType":"YulAssignment","src":"5787:65:87","value":{"arguments":[{"name":"value0","nativeSrc":"5824:6:87","nodeType":"YulIdentifier","src":"5824:6:87"},{"arguments":[{"name":"headStart","nativeSrc":"5836:9:87","nodeType":"YulIdentifier","src":"5836:9:87"},{"kind":"number","nativeSrc":"5847:3:87","nodeType":"YulLiteral","src":"5847:3:87","type":"","value":"160"}],"functionName":{"name":"add","nativeSrc":"5832:3:87","nodeType":"YulIdentifier","src":"5832:3:87"},"nativeSrc":"5832:19:87","nodeType":"YulFunctionCall","src":"5832:19:87"}],"functionName":{"name":"abi_encode_struct_SwapConfig","nativeSrc":"5795:28:87","nodeType":"YulIdentifier","src":"5795:28:87"},"nativeSrc":"5795:57:87","nodeType":"YulFunctionCall","src":"5795:57:87"},"variableNames":[{"name":"tail","nativeSrc":"5787:4:87","nodeType":"YulIdentifier","src":"5787:4:87"}]},{"expression":{"arguments":[{"arguments":[{"name":"headStart","nativeSrc":"5872:9:87","nodeType":"YulIdentifier","src":"5872:9:87"},{"kind":"number","nativeSrc":"5883:2:87","nodeType":"YulLiteral","src":"5883:2:87","type":"","value":"32"}],"functionName":{"name":"add","nativeSrc":"5868:3:87","nodeType":"YulIdentifier","src":"5868:3:87"},"nativeSrc":"5868:18:87","nodeType":"YulFunctionCall","src":"5868:18:87"},{"arguments":[{"name":"value1","nativeSrc":"5892:6:87","nodeType":"YulIdentifier","src":"5892:6:87"},{"arguments":[{"arguments":[{"kind":"number","nativeSrc":"5908:3:87","nodeType":"YulLiteral","src":"5908:3:87","type":"","value":"160"},{"kind":"number","nativeSrc":"5913:1:87","nodeType":"YulLiteral","src":"5913:1:87","type":"","value":"1"}],"functionName":{"name":"shl","nativeSrc":"5904:3:87","nodeType":"YulIdentifier","src":"5904:3:87"},"nativeSrc":"5904:11:87","nodeType":"YulFunctionCall","src":"5904:11:87"},{"kind":"number","nativeSrc":"5917:1:87","nodeType":"YulLiteral","src":"5917:1:87","type":"","value":"1"}],"functionName":{"name":"sub","nativeSrc":"5900:3:87","nodeType":"YulIdentifier","src":"5900:3:87"},"nativeSrc":"5900:19:87","nodeType":"YulFunctionCall","src":"5900:19:87"}],"functionName":{"name":"and","nativeSrc":"5888:3:87","nodeType":"YulIdentifier","src":"5888:3:87"},"nativeSrc":"5888:32:87","nodeType":"YulFunctionCall","src":"5888:32:87"}],"functionName":{"name":"mstore","nativeSrc":"5861:6:87","nodeType":"YulIdentifier","src":"5861:6:87"},"nativeSrc":"5861:60:87","nodeType":"YulFunctionCall","src":"5861:60:87"},"nativeSrc":"5861:60:87","nodeType":"YulExpressionStatement","src":"5861:60:87"},{"expression":{"arguments":[{"arguments":[{"name":"headStart","nativeSrc":"5941:9:87","nodeType":"YulIdentifier","src":"5941:9:87"},{"kind":"number","nativeSrc":"5952:2:87","nodeType":"YulLiteral","src":"5952:2:87","type":"","value":"64"}],"functionName":{"name":"add","nativeSrc":"5937:3:87","nodeType":"YulIdentifier","src":"5937:3:87"},"nativeSrc":"5937:18:87","nodeType":"YulFunctionCall","src":"5937:18:87"},{"arguments":[{"name":"value2","nativeSrc":"5961:6:87","nodeType":"YulIdentifier","src":"5961:6:87"},{"arguments":[{"arguments":[{"kind":"number","nativeSrc":"5977:3:87","nodeType":"YulLiteral","src":"5977:3:87","type":"","value":"160"},{"kind":"number","nativeSrc":"5982:1:87","nodeType":"YulLiteral","src":"5982:1:87","type":"","value":"1"}],"functionName":{"name":"shl","nativeSrc":"5973:3:87","nodeType":"YulIdentifier","src":"5973:3:87"},"nativeSrc":"5973:11:87","nodeType":"YulFunctionCall","src":"5973:11:87"},{"kind":"number","nativeSrc":"5986:1:87","nodeType":"YulLiteral","src":"5986:1:87","type":"","value":"1"}],"functionName":{"name":"sub","nativeSrc":"5969:3:87","nodeType":"YulIdentifier","src":"5969:3:87"},"nativeSrc":"5969:19:87","nodeType":"YulFunctionCall","src":"5969:19:87"}],"functionName":{"name":"and","nativeSrc":"5957:3:87","nodeType":"YulIdentifier","src":"5957:3:87"},"nativeSrc":"5957:32:87","nodeType":"YulFunctionCall","src":"5957:32:87"}],"functionName":{"name":"mstore","nativeSrc":"5930:6:87","nodeType":"YulIdentifier","src":"5930:6:87"},"nativeSrc":"5930:60:87","nodeType":"YulFunctionCall","src":"5930:60:87"},"nativeSrc":"5930:60:87","nodeType":"YulExpressionStatement","src":"5930:60:87"},{"expression":{"arguments":[{"arguments":[{"name":"headStart","nativeSrc":"6010:9:87","nodeType":"YulIdentifier","src":"6010:9:87"},{"kind":"number","nativeSrc":"6021:2:87","nodeType":"YulLiteral","src":"6021:2:87","type":"","value":"96"}],"functionName":{"name":"add","nativeSrc":"6006:3:87","nodeType":"YulIdentifier","src":"6006:3:87"},"nativeSrc":"6006:18:87","nodeType":"YulFunctionCall","src":"6006:18:87"},{"name":"value3","nativeSrc":"6026:6:87","nodeType":"YulIdentifier","src":"6026:6:87"}],"functionName":{"name":"mstore","nativeSrc":"5999:6:87","nodeType":"YulIdentifier","src":"5999:6:87"},"nativeSrc":"5999:34:87","nodeType":"YulFunctionCall","src":"5999:34:87"},"nativeSrc":"5999:34:87","nodeType":"YulExpressionStatement","src":"5999:34:87"},{"expression":{"arguments":[{"arguments":[{"name":"headStart","nativeSrc":"6053:9:87","nodeType":"YulIdentifier","src":"6053:9:87"},{"kind":"number","nativeSrc":"6064:3:87","nodeType":"YulLiteral","src":"6064:3:87","type":"","value":"128"}],"functionName":{"name":"add","nativeSrc":"6049:3:87","nodeType":"YulIdentifier","src":"6049:3:87"},"nativeSrc":"6049:19:87","nodeType":"YulFunctionCall","src":"6049:19:87"},{"name":"value4","nativeSrc":"6070:6:87","nodeType":"YulIdentifier","src":"6070:6:87"}],"functionName":{"name":"mstore","nativeSrc":"6042:6:87","nodeType":"YulIdentifier","src":"6042:6:87"},"nativeSrc":"6042:35:87","nodeType":"YulFunctionCall","src":"6042:35:87"},"nativeSrc":"6042:35:87","nodeType":"YulExpressionStatement","src":"6042:35:87"}]},"name":"abi_encode_tuple_t_struct$_SwapConfig_$1113_memory_ptr_t_address_t_address_t_uint256_t_uint256__to_t_struct$_SwapConfig_$1113_memory_ptr_t_address_t_address_t_uint256_t_uint256__fromStack_library_reversed","nativeSrc":"5469:614:87","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nativeSrc":"5683:9:87","nodeType":"YulTypedName","src":"5683:9:87","type":""},{"name":"value4","nativeSrc":"5694:6:87","nodeType":"YulTypedName","src":"5694:6:87","type":""},{"name":"value3","nativeSrc":"5702:6:87","nodeType":"YulTypedName","src":"5702:6:87","type":""},{"name":"value2","nativeSrc":"5710:6:87","nodeType":"YulTypedName","src":"5710:6:87","type":""},{"name":"value1","nativeSrc":"5718:6:87","nodeType":"YulTypedName","src":"5718:6:87","type":""},{"name":"value0","nativeSrc":"5726:6:87","nodeType":"YulTypedName","src":"5726:6:87","type":""}],"returnVariables":[{"name":"tail","nativeSrc":"5737:4:87","nodeType":"YulTypedName","src":"5737:4:87","type":""}],"src":"5469:614:87"},{"body":{"nativeSrc":"6151:420:87","nodeType":"YulBlock","src":"6151:420:87","statements":[{"body":{"nativeSrc":"6200:16:87","nodeType":"YulBlock","src":"6200:16:87","statements":[{"expression":{"arguments":[{"kind":"number","nativeSrc":"6209:1:87","nodeType":"YulLiteral","src":"6209:1:87","type":"","value":"0"},{"kind":"number","nativeSrc":"6212:1:87","nodeType":"YulLiteral","src":"6212:1:87","type":"","value":"0"}],"functionName":{"name":"revert","nativeSrc":"6202:6:87","nodeType":"YulIdentifier","src":"6202:6:87"},"nativeSrc":"6202:12:87","nodeType":"YulFunctionCall","src":"6202:12:87"},"nativeSrc":"6202:12:87","nodeType":"YulExpressionStatement","src":"6202:12:87"}]},"condition":{"arguments":[{"arguments":[{"arguments":[{"name":"offset","nativeSrc":"6179:6:87","nodeType":"YulIdentifier","src":"6179:6:87"},{"kind":"number","nativeSrc":"6187:4:87","nodeType":"YulLiteral","src":"6187:4:87","type":"","value":"0x1f"}],"functionName":{"name":"add","nativeSrc":"6175:3:87","nodeType":"YulIdentifier","src":"6175:3:87"},"nativeSrc":"6175:17:87","nodeType":"YulFunctionCall","src":"6175:17:87"},{"name":"end","nativeSrc":"6194:3:87","nodeType":"YulIdentifier","src":"6194:3:87"}],"functionName":{"name":"slt","nativeSrc":"6171:3:87","nodeType":"YulIdentifier","src":"6171:3:87"},"nativeSrc":"6171:27:87","nodeType":"YulFunctionCall","src":"6171:27:87"}],"functionName":{"name":"iszero","nativeSrc":"6164:6:87","nodeType":"YulIdentifier","src":"6164:6:87"},"nativeSrc":"6164:35:87","nodeType":"YulFunctionCall","src":"6164:35:87"},"nativeSrc":"6161:55:87","nodeType":"YulIf","src":"6161:55:87"},{"nativeSrc":"6225:27:87","nodeType":"YulVariableDeclaration","src":"6225:27:87","value":{"arguments":[{"name":"offset","nativeSrc":"6245:6:87","nodeType":"YulIdentifier","src":"6245:6:87"}],"functionName":{"name":"mload","nativeSrc":"6239:5:87","nodeType":"YulIdentifier","src":"6239:5:87"},"nativeSrc":"6239:13:87","nodeType":"YulFunctionCall","src":"6239:13:87"},"variables":[{"name":"length","nativeSrc":"6229:6:87","nodeType":"YulTypedName","src":"6229:6:87","type":""}]},{"nativeSrc":"6261:67:87","nodeType":"YulVariableDeclaration","src":"6261:67:87","value":{"arguments":[{"arguments":[{"name":"length","nativeSrc":"6320:6:87","nodeType":"YulIdentifier","src":"6320:6:87"}],"functionName":{"name":"array_allocation_size_bytes","nativeSrc":"6292:27:87","nodeType":"YulIdentifier","src":"6292:27:87"},"nativeSrc":"6292:35:87","nodeType":"YulFunctionCall","src":"6292:35:87"}],"functionName":{"name":"allocate_memory","nativeSrc":"6276:15:87","nodeType":"YulIdentifier","src":"6276:15:87"},"nativeSrc":"6276:52:87","nodeType":"YulFunctionCall","src":"6276:52:87"},"variables":[{"name":"array_1","nativeSrc":"6265:7:87","nodeType":"YulTypedName","src":"6265:7:87","type":""}]},{"expression":{"arguments":[{"name":"array_1","nativeSrc":"6344:7:87","nodeType":"YulIdentifier","src":"6344:7:87"},{"name":"length","nativeSrc":"6353:6:87","nodeType":"YulIdentifier","src":"6353:6:87"}],"functionName":{"name":"mstore","nativeSrc":"6337:6:87","nodeType":"YulIdentifier","src":"6337:6:87"},"nativeSrc":"6337:23:87","nodeType":"YulFunctionCall","src":"6337:23:87"},"nativeSrc":"6337:23:87","nodeType":"YulExpressionStatement","src":"6337:23:87"},{"body":{"nativeSrc":"6412:16:87","nodeType":"YulBlock","src":"6412:16:87","statements":[{"expression":{"arguments":[{"kind":"number","nativeSrc":"6421:1:87","nodeType":"YulLiteral","src":"6421:1:87","type":"","value":"0"},{"kind":"number","nativeSrc":"6424:1:87","nodeType":"YulLiteral","src":"6424:1:87","type":"","value":"0"}],"functionName":{"name":"revert","nativeSrc":"6414:6:87","nodeType":"YulIdentifier","src":"6414:6:87"},"nativeSrc":"6414:12:87","nodeType":"YulFunctionCall","src":"6414:12:87"},"nativeSrc":"6414:12:87","nodeType":"YulExpressionStatement","src":"6414:12:87"}]},"condition":{"arguments":[{"arguments":[{"arguments":[{"name":"offset","nativeSrc":"6383:6:87","nodeType":"YulIdentifier","src":"6383:6:87"},{"name":"length","nativeSrc":"6391:6:87","nodeType":"YulIdentifier","src":"6391:6:87"}],"functionName":{"name":"add","nativeSrc":"6379:3:87","nodeType":"YulIdentifier","src":"6379:3:87"},"nativeSrc":"6379:19:87","nodeType":"YulFunctionCall","src":"6379:19:87"},{"kind":"number","nativeSrc":"6400:4:87","nodeType":"YulLiteral","src":"6400:4:87","type":"","value":"0x20"}],"functionName":{"name":"add","nativeSrc":"6375:3:87","nodeType":"YulIdentifier","src":"6375:3:87"},"nativeSrc":"6375:30:87","nodeType":"YulFunctionCall","src":"6375:30:87"},{"name":"end","nativeSrc":"6407:3:87","nodeType":"YulIdentifier","src":"6407:3:87"}],"functionName":{"name":"gt","nativeSrc":"6372:2:87","nodeType":"YulIdentifier","src":"6372:2:87"},"nativeSrc":"6372:39:87","nodeType":"YulFunctionCall","src":"6372:39:87"},"nativeSrc":"6369:59:87","nodeType":"YulIf","src":"6369:59:87"},{"expression":{"arguments":[{"arguments":[{"name":"array_1","nativeSrc":"6447:7:87","nodeType":"YulIdentifier","src":"6447:7:87"},{"kind":"number","nativeSrc":"6456:4:87","nodeType":"YulLiteral","src":"6456:4:87","type":"","value":"0x20"}],"functionName":{"name":"add","nativeSrc":"6443:3:87","nodeType":"YulIdentifier","src":"6443:3:87"},"nativeSrc":"6443:18:87","nodeType":"YulFunctionCall","src":"6443:18:87"},{"arguments":[{"name":"offset","nativeSrc":"6467:6:87","nodeType":"YulIdentifier","src":"6467:6:87"},{"kind":"number","nativeSrc":"6475:4:87","nodeType":"YulLiteral","src":"6475:4:87","type":"","value":"0x20"}],"functionName":{"name":"add","nativeSrc":"6463:3:87","nodeType":"YulIdentifier","src":"6463:3:87"},"nativeSrc":"6463:17:87","nodeType":"YulFunctionCall","src":"6463:17:87"},{"name":"length","nativeSrc":"6482:6:87","nodeType":"YulIdentifier","src":"6482:6:87"}],"functionName":{"name":"mcopy","nativeSrc":"6437:5:87","nodeType":"YulIdentifier","src":"6437:5:87"},"nativeSrc":"6437:52:87","nodeType":"YulFunctionCall","src":"6437:52:87"},"nativeSrc":"6437:52:87","nodeType":"YulExpressionStatement","src":"6437:52:87"},{"expression":{"arguments":[{"arguments":[{"arguments":[{"name":"array_1","nativeSrc":"6513:7:87","nodeType":"YulIdentifier","src":"6513:7:87"},{"name":"length","nativeSrc":"6522:6:87","nodeType":"YulIdentifier","src":"6522:6:87"}],"functionName":{"name":"add","nativeSrc":"6509:3:87","nodeType":"YulIdentifier","src":"6509:3:87"},"nativeSrc":"6509:20:87","nodeType":"YulFunctionCall","src":"6509:20:87"},{"kind":"number","nativeSrc":"6531:4:87","nodeType":"YulLiteral","src":"6531:4:87","type":"","value":"0x20"}],"functionName":{"name":"add","nativeSrc":"6505:3:87","nodeType":"YulIdentifier","src":"6505:3:87"},"nativeSrc":"6505:31:87","nodeType":"YulFunctionCall","src":"6505:31:87"},{"kind":"number","nativeSrc":"6538:1:87","nodeType":"YulLiteral","src":"6538:1:87","type":"","value":"0"}],"functionName":{"name":"mstore","nativeSrc":"6498:6:87","nodeType":"YulIdentifier","src":"6498:6:87"},"nativeSrc":"6498:42:87","nodeType":"YulFunctionCall","src":"6498:42:87"},"nativeSrc":"6498:42:87","nodeType":"YulExpressionStatement","src":"6498:42:87"},{"nativeSrc":"6549:16:87","nodeType":"YulAssignment","src":"6549:16:87","value":{"name":"array_1","nativeSrc":"6558:7:87","nodeType":"YulIdentifier","src":"6558:7:87"},"variableNames":[{"name":"array","nativeSrc":"6549:5:87","nodeType":"YulIdentifier","src":"6549:5:87"}]}]},"name":"abi_decode_bytes_fromMemory","nativeSrc":"6088:483:87","nodeType":"YulFunctionDefinition","parameters":[{"name":"offset","nativeSrc":"6125:6:87","nodeType":"YulTypedName","src":"6125:6:87","type":""},{"name":"end","nativeSrc":"6133:3:87","nodeType":"YulTypedName","src":"6133:3:87","type":""}],"returnVariables":[{"name":"array","nativeSrc":"6141:5:87","nodeType":"YulTypedName","src":"6141:5:87","type":""}],"src":"6088:483:87"},{"body":{"nativeSrc":"6666:245:87","nodeType":"YulBlock","src":"6666:245:87","statements":[{"body":{"nativeSrc":"6712:16:87","nodeType":"YulBlock","src":"6712:16:87","statements":[{"expression":{"arguments":[{"kind":"number","nativeSrc":"6721:1:87","nodeType":"YulLiteral","src":"6721:1:87","type":"","value":"0"},{"kind":"number","nativeSrc":"6724:1:87","nodeType":"YulLiteral","src":"6724:1:87","type":"","value":"0"}],"functionName":{"name":"revert","nativeSrc":"6714:6:87","nodeType":"YulIdentifier","src":"6714:6:87"},"nativeSrc":"6714:12:87","nodeType":"YulFunctionCall","src":"6714:12:87"},"nativeSrc":"6714:12:87","nodeType":"YulExpressionStatement","src":"6714:12:87"}]},"condition":{"arguments":[{"arguments":[{"name":"dataEnd","nativeSrc":"6687:7:87","nodeType":"YulIdentifier","src":"6687:7:87"},{"name":"headStart","nativeSrc":"6696:9:87","nodeType":"YulIdentifier","src":"6696:9:87"}],"functionName":{"name":"sub","nativeSrc":"6683:3:87","nodeType":"YulIdentifier","src":"6683:3:87"},"nativeSrc":"6683:23:87","nodeType":"YulFunctionCall","src":"6683:23:87"},{"kind":"number","nativeSrc":"6708:2:87","nodeType":"YulLiteral","src":"6708:2:87","type":"","value":"32"}],"functionName":{"name":"slt","nativeSrc":"6679:3:87","nodeType":"YulIdentifier","src":"6679:3:87"},"nativeSrc":"6679:32:87","nodeType":"YulFunctionCall","src":"6679:32:87"},"nativeSrc":"6676:52:87","nodeType":"YulIf","src":"6676:52:87"},{"nativeSrc":"6737:30:87","nodeType":"YulVariableDeclaration","src":"6737:30:87","value":{"arguments":[{"name":"headStart","nativeSrc":"6757:9:87","nodeType":"YulIdentifier","src":"6757:9:87"}],"functionName":{"name":"mload","nativeSrc":"6751:5:87","nodeType":"YulIdentifier","src":"6751:5:87"},"nativeSrc":"6751:16:87","nodeType":"YulFunctionCall","src":"6751:16:87"},"variables":[{"name":"offset","nativeSrc":"6741:6:87","nodeType":"YulTypedName","src":"6741:6:87","type":""}]},{"body":{"nativeSrc":"6810:16:87","nodeType":"YulBlock","src":"6810:16:87","statements":[{"expression":{"arguments":[{"kind":"number","nativeSrc":"6819:1:87","nodeType":"YulLiteral","src":"6819:1:87","type":"","value":"0"},{"kind":"number","nativeSrc":"6822:1:87","nodeType":"YulLiteral","src":"6822:1:87","type":"","value":"0"}],"functionName":{"name":"revert","nativeSrc":"6812:6:87","nodeType":"YulIdentifier","src":"6812:6:87"},"nativeSrc":"6812:12:87","nodeType":"YulFunctionCall","src":"6812:12:87"},"nativeSrc":"6812:12:87","nodeType":"YulExpressionStatement","src":"6812:12:87"}]},"condition":{"arguments":[{"name":"offset","nativeSrc":"6782:6:87","nodeType":"YulIdentifier","src":"6782:6:87"},{"kind":"number","nativeSrc":"6790:18:87","nodeType":"YulLiteral","src":"6790:18:87","type":"","value":"0xffffffffffffffff"}],"functionName":{"name":"gt","nativeSrc":"6779:2:87","nodeType":"YulIdentifier","src":"6779:2:87"},"nativeSrc":"6779:30:87","nodeType":"YulFunctionCall","src":"6779:30:87"},"nativeSrc":"6776:50:87","nodeType":"YulIf","src":"6776:50:87"},{"nativeSrc":"6835:70:87","nodeType":"YulAssignment","src":"6835:70:87","value":{"arguments":[{"arguments":[{"name":"headStart","nativeSrc":"6877:9:87","nodeType":"YulIdentifier","src":"6877:9:87"},{"name":"offset","nativeSrc":"6888:6:87","nodeType":"YulIdentifier","src":"6888:6:87"}],"functionName":{"name":"add","nativeSrc":"6873:3:87","nodeType":"YulIdentifier","src":"6873:3:87"},"nativeSrc":"6873:22:87","nodeType":"YulFunctionCall","src":"6873:22:87"},{"name":"dataEnd","nativeSrc":"6897:7:87","nodeType":"YulIdentifier","src":"6897:7:87"}],"functionName":{"name":"abi_decode_bytes_fromMemory","nativeSrc":"6845:27:87","nodeType":"YulIdentifier","src":"6845:27:87"},"nativeSrc":"6845:60:87","nodeType":"YulFunctionCall","src":"6845:60:87"},"variableNames":[{"name":"value0","nativeSrc":"6835:6:87","nodeType":"YulIdentifier","src":"6835:6:87"}]}]},"name":"abi_decode_tuple_t_bytes_memory_ptr_fromMemory","nativeSrc":"6576:335:87","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nativeSrc":"6632:9:87","nodeType":"YulTypedName","src":"6632:9:87","type":""},{"name":"dataEnd","nativeSrc":"6643:7:87","nodeType":"YulTypedName","src":"6643:7:87","type":""}],"returnVariables":[{"name":"value0","nativeSrc":"6655:6:87","nodeType":"YulTypedName","src":"6655:6:87","type":""}],"src":"6576:335:87"},{"body":{"nativeSrc":"7025:741:87","nodeType":"YulBlock","src":"7025:741:87","statements":[{"body":{"nativeSrc":"7071:16:87","nodeType":"YulBlock","src":"7071:16:87","statements":[{"expression":{"arguments":[{"kind":"number","nativeSrc":"7080:1:87","nodeType":"YulLiteral","src":"7080:1:87","type":"","value":"0"},{"kind":"number","nativeSrc":"7083:1:87","nodeType":"YulLiteral","src":"7083:1:87","type":"","value":"0"}],"functionName":{"name":"revert","nativeSrc":"7073:6:87","nodeType":"YulIdentifier","src":"7073:6:87"},"nativeSrc":"7073:12:87","nodeType":"YulFunctionCall","src":"7073:12:87"},"nativeSrc":"7073:12:87","nodeType":"YulExpressionStatement","src":"7073:12:87"}]},"condition":{"arguments":[{"arguments":[{"name":"dataEnd","nativeSrc":"7046:7:87","nodeType":"YulIdentifier","src":"7046:7:87"},{"name":"headStart","nativeSrc":"7055:9:87","nodeType":"YulIdentifier","src":"7055:9:87"}],"functionName":{"name":"sub","nativeSrc":"7042:3:87","nodeType":"YulIdentifier","src":"7042:3:87"},"nativeSrc":"7042:23:87","nodeType":"YulFunctionCall","src":"7042:23:87"},{"kind":"number","nativeSrc":"7067:2:87","nodeType":"YulLiteral","src":"7067:2:87","type":"","value":"32"}],"functionName":{"name":"slt","nativeSrc":"7038:3:87","nodeType":"YulIdentifier","src":"7038:3:87"},"nativeSrc":"7038:32:87","nodeType":"YulFunctionCall","src":"7038:32:87"},"nativeSrc":"7035:52:87","nodeType":"YulIf","src":"7035:52:87"},{"nativeSrc":"7096:30:87","nodeType":"YulVariableDeclaration","src":"7096:30:87","value":{"arguments":[{"name":"headStart","nativeSrc":"7116:9:87","nodeType":"YulIdentifier","src":"7116:9:87"}],"functionName":{"name":"mload","nativeSrc":"7110:5:87","nodeType":"YulIdentifier","src":"7110:5:87"},"nativeSrc":"7110:16:87","nodeType":"YulFunctionCall","src":"7110:16:87"},"variables":[{"name":"offset","nativeSrc":"7100:6:87","nodeType":"YulTypedName","src":"7100:6:87","type":""}]},{"body":{"nativeSrc":"7169:16:87","nodeType":"YulBlock","src":"7169:16:87","statements":[{"expression":{"arguments":[{"kind":"number","nativeSrc":"7178:1:87","nodeType":"YulLiteral","src":"7178:1:87","type":"","value":"0"},{"kind":"number","nativeSrc":"7181:1:87","nodeType":"YulLiteral","src":"7181:1:87","type":"","value":"0"}],"functionName":{"name":"revert","nativeSrc":"7171:6:87","nodeType":"YulIdentifier","src":"7171:6:87"},"nativeSrc":"7171:12:87","nodeType":"YulFunctionCall","src":"7171:12:87"},"nativeSrc":"7171:12:87","nodeType":"YulExpressionStatement","src":"7171:12:87"}]},"condition":{"arguments":[{"name":"offset","nativeSrc":"7141:6:87","nodeType":"YulIdentifier","src":"7141:6:87"},{"kind":"number","nativeSrc":"7149:18:87","nodeType":"YulLiteral","src":"7149:18:87","type":"","value":"0xffffffffffffffff"}],"functionName":{"name":"gt","nativeSrc":"7138:2:87","nodeType":"YulIdentifier","src":"7138:2:87"},"nativeSrc":"7138:30:87","nodeType":"YulFunctionCall","src":"7138:30:87"},"nativeSrc":"7135:50:87","nodeType":"YulIf","src":"7135:50:87"},{"nativeSrc":"7194:32:87","nodeType":"YulVariableDeclaration","src":"7194:32:87","value":{"arguments":[{"name":"headStart","nativeSrc":"7208:9:87","nodeType":"YulIdentifier","src":"7208:9:87"},{"name":"offset","nativeSrc":"7219:6:87","nodeType":"YulIdentifier","src":"7219:6:87"}],"functionName":{"name":"add","nativeSrc":"7204:3:87","nodeType":"YulIdentifier","src":"7204:3:87"},"nativeSrc":"7204:22:87","nodeType":"YulFunctionCall","src":"7204:22:87"},"variables":[{"name":"_1","nativeSrc":"7198:2:87","nodeType":"YulTypedName","src":"7198:2:87","type":""}]},{"body":{"nativeSrc":"7266:16:87","nodeType":"YulBlock","src":"7266:16:87","statements":[{"expression":{"arguments":[{"kind":"number","nativeSrc":"7275:1:87","nodeType":"YulLiteral","src":"7275:1:87","type":"","value":"0"},{"kind":"number","nativeSrc":"7278:1:87","nodeType":"YulLiteral","src":"7278:1:87","type":"","value":"0"}],"functionName":{"name":"revert","nativeSrc":"7268:6:87","nodeType":"YulIdentifier","src":"7268:6:87"},"nativeSrc":"7268:12:87","nodeType":"YulFunctionCall","src":"7268:12:87"},"nativeSrc":"7268:12:87","nodeType":"YulExpressionStatement","src":"7268:12:87"}]},"condition":{"arguments":[{"arguments":[{"name":"dataEnd","nativeSrc":"7246:7:87","nodeType":"YulIdentifier","src":"7246:7:87"},{"name":"_1","nativeSrc":"7255:2:87","nodeType":"YulIdentifier","src":"7255:2:87"}],"functionName":{"name":"sub","nativeSrc":"7242:3:87","nodeType":"YulIdentifier","src":"7242:3:87"},"nativeSrc":"7242:16:87","nodeType":"YulFunctionCall","src":"7242:16:87"},{"kind":"number","nativeSrc":"7260:4:87","nodeType":"YulLiteral","src":"7260:4:87","type":"","value":"0x60"}],"functionName":{"name":"slt","nativeSrc":"7238:3:87","nodeType":"YulIdentifier","src":"7238:3:87"},"nativeSrc":"7238:27:87","nodeType":"YulFunctionCall","src":"7238:27:87"},"nativeSrc":"7235:47:87","nodeType":"YulIf","src":"7235:47:87"},{"nativeSrc":"7291:35:87","nodeType":"YulVariableDeclaration","src":"7291:35:87","value":{"arguments":[],"functionName":{"name":"allocate_memory_1712","nativeSrc":"7304:20:87","nodeType":"YulIdentifier","src":"7304:20:87"},"nativeSrc":"7304:22:87","nodeType":"YulFunctionCall","src":"7304:22:87"},"variables":[{"name":"value","nativeSrc":"7295:5:87","nodeType":"YulTypedName","src":"7295:5:87","type":""}]},{"nativeSrc":"7335:24:87","nodeType":"YulVariableDeclaration","src":"7335:24:87","value":{"arguments":[{"name":"_1","nativeSrc":"7356:2:87","nodeType":"YulIdentifier","src":"7356:2:87"}],"functionName":{"name":"mload","nativeSrc":"7350:5:87","nodeType":"YulIdentifier","src":"7350:5:87"},"nativeSrc":"7350:9:87","nodeType":"YulFunctionCall","src":"7350:9:87"},"variables":[{"name":"value_1","nativeSrc":"7339:7:87","nodeType":"YulTypedName","src":"7339:7:87","type":""}]},{"body":{"nativeSrc":"7394:16:87","nodeType":"YulBlock","src":"7394:16:87","statements":[{"expression":{"arguments":[{"kind":"number","nativeSrc":"7403:1:87","nodeType":"YulLiteral","src":"7403:1:87","type":"","value":"0"},{"kind":"number","nativeSrc":"7406:1:87","nodeType":"YulLiteral","src":"7406:1:87","type":"","value":"0"}],"functionName":{"name":"revert","nativeSrc":"7396:6:87","nodeType":"YulIdentifier","src":"7396:6:87"},"nativeSrc":"7396:12:87","nodeType":"YulFunctionCall","src":"7396:12:87"},"nativeSrc":"7396:12:87","nodeType":"YulExpressionStatement","src":"7396:12:87"}]},"condition":{"arguments":[{"arguments":[{"name":"value_1","nativeSrc":"7381:7:87","nodeType":"YulIdentifier","src":"7381:7:87"},{"kind":"number","nativeSrc":"7390:1:87","nodeType":"YulLiteral","src":"7390:1:87","type":"","value":"3"}],"functionName":{"name":"lt","nativeSrc":"7378:2:87","nodeType":"YulIdentifier","src":"7378:2:87"},"nativeSrc":"7378:14:87","nodeType":"YulFunctionCall","src":"7378:14:87"}],"functionName":{"name":"iszero","nativeSrc":"7371:6:87","nodeType":"YulIdentifier","src":"7371:6:87"},"nativeSrc":"7371:22:87","nodeType":"YulFunctionCall","src":"7371:22:87"},"nativeSrc":"7368:42:87","nodeType":"YulIf","src":"7368:42:87"},{"expression":{"arguments":[{"name":"value","nativeSrc":"7426:5:87","nodeType":"YulIdentifier","src":"7426:5:87"},{"name":"value_1","nativeSrc":"7433:7:87","nodeType":"YulIdentifier","src":"7433:7:87"}],"functionName":{"name":"mstore","nativeSrc":"7419:6:87","nodeType":"YulIdentifier","src":"7419:6:87"},"nativeSrc":"7419:22:87","nodeType":"YulFunctionCall","src":"7419:22:87"},"nativeSrc":"7419:22:87","nodeType":"YulExpressionStatement","src":"7419:22:87"},{"nativeSrc":"7450:16:87","nodeType":"YulVariableDeclaration","src":"7450:16:87","value":{"kind":"number","nativeSrc":"7465:1:87","nodeType":"YulLiteral","src":"7465:1:87","type":"","value":"0"},"variables":[{"name":"value_2","nativeSrc":"7454:7:87","nodeType":"YulTypedName","src":"7454:7:87","type":""}]},{"nativeSrc":"7475:29:87","nodeType":"YulAssignment","src":"7475:29:87","value":{"arguments":[{"arguments":[{"name":"_1","nativeSrc":"7496:2:87","nodeType":"YulIdentifier","src":"7496:2:87"},{"kind":"number","nativeSrc":"7500:2:87","nodeType":"YulLiteral","src":"7500:2:87","type":"","value":"32"}],"functionName":{"name":"add","nativeSrc":"7492:3:87","nodeType":"YulIdentifier","src":"7492:3:87"},"nativeSrc":"7492:11:87","nodeType":"YulFunctionCall","src":"7492:11:87"}],"functionName":{"name":"mload","nativeSrc":"7486:5:87","nodeType":"YulIdentifier","src":"7486:5:87"},"nativeSrc":"7486:18:87","nodeType":"YulFunctionCall","src":"7486:18:87"},"variableNames":[{"name":"value_2","nativeSrc":"7475:7:87","nodeType":"YulIdentifier","src":"7475:7:87"}]},{"expression":{"arguments":[{"arguments":[{"name":"value","nativeSrc":"7524:5:87","nodeType":"YulIdentifier","src":"7524:5:87"},{"kind":"number","nativeSrc":"7531:2:87","nodeType":"YulLiteral","src":"7531:2:87","type":"","value":"32"}],"functionName":{"name":"add","nativeSrc":"7520:3:87","nodeType":"YulIdentifier","src":"7520:3:87"},"nativeSrc":"7520:14:87","nodeType":"YulFunctionCall","src":"7520:14:87"},{"name":"value_2","nativeSrc":"7536:7:87","nodeType":"YulIdentifier","src":"7536:7:87"}],"functionName":{"name":"mstore","nativeSrc":"7513:6:87","nodeType":"YulIdentifier","src":"7513:6:87"},"nativeSrc":"7513:31:87","nodeType":"YulFunctionCall","src":"7513:31:87"},"nativeSrc":"7513:31:87","nodeType":"YulExpressionStatement","src":"7513:31:87"},{"nativeSrc":"7553:34:87","nodeType":"YulVariableDeclaration","src":"7553:34:87","value":{"arguments":[{"arguments":[{"name":"_1","nativeSrc":"7579:2:87","nodeType":"YulIdentifier","src":"7579:2:87"},{"kind":"number","nativeSrc":"7583:2:87","nodeType":"YulLiteral","src":"7583:2:87","type":"","value":"64"}],"functionName":{"name":"add","nativeSrc":"7575:3:87","nodeType":"YulIdentifier","src":"7575:3:87"},"nativeSrc":"7575:11:87","nodeType":"YulFunctionCall","src":"7575:11:87"}],"functionName":{"name":"mload","nativeSrc":"7569:5:87","nodeType":"YulIdentifier","src":"7569:5:87"},"nativeSrc":"7569:18:87","nodeType":"YulFunctionCall","src":"7569:18:87"},"variables":[{"name":"offset_1","nativeSrc":"7557:8:87","nodeType":"YulTypedName","src":"7557:8:87","type":""}]},{"body":{"nativeSrc":"7632:16:87","nodeType":"YulBlock","src":"7632:16:87","statements":[{"expression":{"arguments":[{"kind":"number","nativeSrc":"7641:1:87","nodeType":"YulLiteral","src":"7641:1:87","type":"","value":"0"},{"kind":"number","nativeSrc":"7644:1:87","nodeType":"YulLiteral","src":"7644:1:87","type":"","value":"0"}],"functionName":{"name":"revert","nativeSrc":"7634:6:87","nodeType":"YulIdentifier","src":"7634:6:87"},"nativeSrc":"7634:12:87","nodeType":"YulFunctionCall","src":"7634:12:87"},"nativeSrc":"7634:12:87","nodeType":"YulExpressionStatement","src":"7634:12:87"}]},"condition":{"arguments":[{"name":"offset_1","nativeSrc":"7602:8:87","nodeType":"YulIdentifier","src":"7602:8:87"},{"kind":"number","nativeSrc":"7612:18:87","nodeType":"YulLiteral","src":"7612:18:87","type":"","value":"0xffffffffffffffff"}],"functionName":{"name":"gt","nativeSrc":"7599:2:87","nodeType":"YulIdentifier","src":"7599:2:87"},"nativeSrc":"7599:32:87","nodeType":"YulFunctionCall","src":"7599:32:87"},"nativeSrc":"7596:52:87","nodeType":"YulIf","src":"7596:52:87"},{"expression":{"arguments":[{"arguments":[{"name":"value","nativeSrc":"7668:5:87","nodeType":"YulIdentifier","src":"7668:5:87"},{"kind":"number","nativeSrc":"7675:2:87","nodeType":"YulLiteral","src":"7675:2:87","type":"","value":"64"}],"functionName":{"name":"add","nativeSrc":"7664:3:87","nodeType":"YulIdentifier","src":"7664:3:87"},"nativeSrc":"7664:14:87","nodeType":"YulFunctionCall","src":"7664:14:87"},{"arguments":[{"arguments":[{"name":"_1","nativeSrc":"7712:2:87","nodeType":"YulIdentifier","src":"7712:2:87"},{"name":"offset_1","nativeSrc":"7716:8:87","nodeType":"YulIdentifier","src":"7716:8:87"}],"functionName":{"name":"add","nativeSrc":"7708:3:87","nodeType":"YulIdentifier","src":"7708:3:87"},"nativeSrc":"7708:17:87","nodeType":"YulFunctionCall","src":"7708:17:87"},{"name":"dataEnd","nativeSrc":"7727:7:87","nodeType":"YulIdentifier","src":"7727:7:87"}],"functionName":{"name":"abi_decode_bytes_fromMemory","nativeSrc":"7680:27:87","nodeType":"YulIdentifier","src":"7680:27:87"},"nativeSrc":"7680:55:87","nodeType":"YulFunctionCall","src":"7680:55:87"}],"functionName":{"name":"mstore","nativeSrc":"7657:6:87","nodeType":"YulIdentifier","src":"7657:6:87"},"nativeSrc":"7657:79:87","nodeType":"YulFunctionCall","src":"7657:79:87"},"nativeSrc":"7657:79:87","nodeType":"YulExpressionStatement","src":"7657:79:87"},{"nativeSrc":"7745:15:87","nodeType":"YulAssignment","src":"7745:15:87","value":{"name":"value","nativeSrc":"7755:5:87","nodeType":"YulIdentifier","src":"7755:5:87"},"variableNames":[{"name":"value0","nativeSrc":"7745:6:87","nodeType":"YulIdentifier","src":"7745:6:87"}]}]},"name":"abi_decode_tuple_t_struct$_SwapConfig_$1113_memory_ptr_fromMemory","nativeSrc":"6916:850:87","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nativeSrc":"6991:9:87","nodeType":"YulTypedName","src":"6991:9:87","type":""},{"name":"dataEnd","nativeSrc":"7002:7:87","nodeType":"YulTypedName","src":"7002:7:87","type":""}],"returnVariables":[{"name":"value0","nativeSrc":"7014:6:87","nodeType":"YulTypedName","src":"7014:6:87","type":""}],"src":"6916:850:87"},{"body":{"nativeSrc":"7936:110:87","nodeType":"YulBlock","src":"7936:110:87","statements":[{"expression":{"arguments":[{"name":"headStart","nativeSrc":"7953:9:87","nodeType":"YulIdentifier","src":"7953:9:87"},{"kind":"number","nativeSrc":"7964:2:87","nodeType":"YulLiteral","src":"7964:2:87","type":"","value":"32"}],"functionName":{"name":"mstore","nativeSrc":"7946:6:87","nodeType":"YulIdentifier","src":"7946:6:87"},"nativeSrc":"7946:21:87","nodeType":"YulFunctionCall","src":"7946:21:87"},"nativeSrc":"7946:21:87","nodeType":"YulExpressionStatement","src":"7946:21:87"},{"nativeSrc":"7976:64:87","nodeType":"YulAssignment","src":"7976:64:87","value":{"arguments":[{"name":"value0","nativeSrc":"8013:6:87","nodeType":"YulIdentifier","src":"8013:6:87"},{"arguments":[{"name":"headStart","nativeSrc":"8025:9:87","nodeType":"YulIdentifier","src":"8025:9:87"},{"kind":"number","nativeSrc":"8036:2:87","nodeType":"YulLiteral","src":"8036:2:87","type":"","value":"32"}],"functionName":{"name":"add","nativeSrc":"8021:3:87","nodeType":"YulIdentifier","src":"8021:3:87"},"nativeSrc":"8021:18:87","nodeType":"YulFunctionCall","src":"8021:18:87"}],"functionName":{"name":"abi_encode_struct_SwapConfig","nativeSrc":"7984:28:87","nodeType":"YulIdentifier","src":"7984:28:87"},"nativeSrc":"7984:56:87","nodeType":"YulFunctionCall","src":"7984:56:87"},"variableNames":[{"name":"tail","nativeSrc":"7976:4:87","nodeType":"YulIdentifier","src":"7976:4:87"}]}]},"name":"abi_encode_tuple_t_struct$_SwapConfig_$1113_memory_ptr__to_t_struct$_SwapConfig_$1113_memory_ptr__fromStack_library_reversed","nativeSrc":"7771:275:87","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nativeSrc":"7905:9:87","nodeType":"YulTypedName","src":"7905:9:87","type":""},{"name":"value0","nativeSrc":"7916:6:87","nodeType":"YulTypedName","src":"7916:6:87","type":""}],"returnVariables":[{"name":"tail","nativeSrc":"7927:4:87","nodeType":"YulTypedName","src":"7927:4:87","type":""}],"src":"7771:275:87"},{"body":{"nativeSrc":"8292:236:87","nodeType":"YulBlock","src":"8292:236:87","statements":[{"expression":{"arguments":[{"name":"headStart","nativeSrc":"8309:9:87","nodeType":"YulIdentifier","src":"8309:9:87"},{"kind":"number","nativeSrc":"8320:2:87","nodeType":"YulLiteral","src":"8320:2:87","type":"","value":"64"}],"functionName":{"name":"mstore","nativeSrc":"8302:6:87","nodeType":"YulIdentifier","src":"8302:6:87"},"nativeSrc":"8302:21:87","nodeType":"YulFunctionCall","src":"8302:21:87"},"nativeSrc":"8302:21:87","nodeType":"YulExpressionStatement","src":"8302:21:87"},{"nativeSrc":"8332:70:87","nodeType":"YulVariableDeclaration","src":"8332:70:87","value":{"arguments":[{"name":"value0","nativeSrc":"8375:6:87","nodeType":"YulIdentifier","src":"8375:6:87"},{"arguments":[{"name":"headStart","nativeSrc":"8387:9:87","nodeType":"YulIdentifier","src":"8387:9:87"},{"kind":"number","nativeSrc":"8398:2:87","nodeType":"YulLiteral","src":"8398:2:87","type":"","value":"64"}],"functionName":{"name":"add","nativeSrc":"8383:3:87","nodeType":"YulIdentifier","src":"8383:3:87"},"nativeSrc":"8383:18:87","nodeType":"YulFunctionCall","src":"8383:18:87"}],"functionName":{"name":"abi_encode_struct_SwapConfig","nativeSrc":"8346:28:87","nodeType":"YulIdentifier","src":"8346:28:87"},"nativeSrc":"8346:56:87","nodeType":"YulFunctionCall","src":"8346:56:87"},"variables":[{"name":"tail_1","nativeSrc":"8336:6:87","nodeType":"YulTypedName","src":"8336:6:87","type":""}]},{"expression":{"arguments":[{"arguments":[{"name":"headStart","nativeSrc":"8422:9:87","nodeType":"YulIdentifier","src":"8422:9:87"},{"kind":"number","nativeSrc":"8433:2:87","nodeType":"YulLiteral","src":"8433:2:87","type":"","value":"32"}],"functionName":{"name":"add","nativeSrc":"8418:3:87","nodeType":"YulIdentifier","src":"8418:3:87"},"nativeSrc":"8418:18:87","nodeType":"YulFunctionCall","src":"8418:18:87"},{"arguments":[{"name":"tail_1","nativeSrc":"8442:6:87","nodeType":"YulIdentifier","src":"8442:6:87"},{"name":"headStart","nativeSrc":"8450:9:87","nodeType":"YulIdentifier","src":"8450:9:87"}],"functionName":{"name":"sub","nativeSrc":"8438:3:87","nodeType":"YulIdentifier","src":"8438:3:87"},"nativeSrc":"8438:22:87","nodeType":"YulFunctionCall","src":"8438:22:87"}],"functionName":{"name":"mstore","nativeSrc":"8411:6:87","nodeType":"YulIdentifier","src":"8411:6:87"},"nativeSrc":"8411:50:87","nodeType":"YulFunctionCall","src":"8411:50:87"},"nativeSrc":"8411:50:87","nodeType":"YulExpressionStatement","src":"8411:50:87"},{"nativeSrc":"8470:52:87","nodeType":"YulAssignment","src":"8470:52:87","value":{"arguments":[{"name":"value1","nativeSrc":"8507:6:87","nodeType":"YulIdentifier","src":"8507:6:87"},{"name":"tail_1","nativeSrc":"8515:6:87","nodeType":"YulIdentifier","src":"8515:6:87"}],"functionName":{"name":"abi_encode_struct_SwapConfig","nativeSrc":"8478:28:87","nodeType":"YulIdentifier","src":"8478:28:87"},"nativeSrc":"8478:44:87","nodeType":"YulFunctionCall","src":"8478:44:87"},"variableNames":[{"name":"tail","nativeSrc":"8470:4:87","nodeType":"YulIdentifier","src":"8470:4:87"}]}]},"name":"abi_encode_tuple_t_struct$_SwapConfig_$1113_memory_ptr_t_struct$_SwapConfig_$1113_memory_ptr__to_t_struct$_SwapConfig_$1113_memory_ptr_t_struct$_SwapConfig_$1113_memory_ptr__fromStack_reversed","nativeSrc":"8051:477:87","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nativeSrc":"8253:9:87","nodeType":"YulTypedName","src":"8253:9:87","type":""},{"name":"value1","nativeSrc":"8264:6:87","nodeType":"YulTypedName","src":"8264:6:87","type":""},{"name":"value0","nativeSrc":"8272:6:87","nodeType":"YulTypedName","src":"8272:6:87","type":""}],"returnVariables":[{"name":"tail","nativeSrc":"8283:4:87","nodeType":"YulTypedName","src":"8283:4:87","type":""}],"src":"8051:477:87"},{"body":{"nativeSrc":"8588:325:87","nodeType":"YulBlock","src":"8588:325:87","statements":[{"nativeSrc":"8598:22:87","nodeType":"YulAssignment","src":"8598:22:87","value":{"arguments":[{"kind":"number","nativeSrc":"8612:1:87","nodeType":"YulLiteral","src":"8612:1:87","type":"","value":"1"},{"name":"data","nativeSrc":"8615:4:87","nodeType":"YulIdentifier","src":"8615:4:87"}],"functionName":{"name":"shr","nativeSrc":"8608:3:87","nodeType":"YulIdentifier","src":"8608:3:87"},"nativeSrc":"8608:12:87","nodeType":"YulFunctionCall","src":"8608:12:87"},"variableNames":[{"name":"length","nativeSrc":"8598:6:87","nodeType":"YulIdentifier","src":"8598:6:87"}]},{"nativeSrc":"8629:38:87","nodeType":"YulVariableDeclaration","src":"8629:38:87","value":{"arguments":[{"name":"data","nativeSrc":"8659:4:87","nodeType":"YulIdentifier","src":"8659:4:87"},{"kind":"number","nativeSrc":"8665:1:87","nodeType":"YulLiteral","src":"8665:1:87","type":"","value":"1"}],"functionName":{"name":"and","nativeSrc":"8655:3:87","nodeType":"YulIdentifier","src":"8655:3:87"},"nativeSrc":"8655:12:87","nodeType":"YulFunctionCall","src":"8655:12:87"},"variables":[{"name":"outOfPlaceEncoding","nativeSrc":"8633:18:87","nodeType":"YulTypedName","src":"8633:18:87","type":""}]},{"body":{"nativeSrc":"8706:31:87","nodeType":"YulBlock","src":"8706:31:87","statements":[{"nativeSrc":"8708:27:87","nodeType":"YulAssignment","src":"8708:27:87","value":{"arguments":[{"name":"length","nativeSrc":"8722:6:87","nodeType":"YulIdentifier","src":"8722:6:87"},{"kind":"number","nativeSrc":"8730:4:87","nodeType":"YulLiteral","src":"8730:4:87","type":"","value":"0x7f"}],"functionName":{"name":"and","nativeSrc":"8718:3:87","nodeType":"YulIdentifier","src":"8718:3:87"},"nativeSrc":"8718:17:87","nodeType":"YulFunctionCall","src":"8718:17:87"},"variableNames":[{"name":"length","nativeSrc":"8708:6:87","nodeType":"YulIdentifier","src":"8708:6:87"}]}]},"condition":{"arguments":[{"name":"outOfPlaceEncoding","nativeSrc":"8686:18:87","nodeType":"YulIdentifier","src":"8686:18:87"}],"functionName":{"name":"iszero","nativeSrc":"8679:6:87","nodeType":"YulIdentifier","src":"8679:6:87"},"nativeSrc":"8679:26:87","nodeType":"YulFunctionCall","src":"8679:26:87"},"nativeSrc":"8676:61:87","nodeType":"YulIf","src":"8676:61:87"},{"body":{"nativeSrc":"8796:111:87","nodeType":"YulBlock","src":"8796:111:87","statements":[{"expression":{"arguments":[{"kind":"number","nativeSrc":"8817:1:87","nodeType":"YulLiteral","src":"8817:1:87","type":"","value":"0"},{"arguments":[{"kind":"number","nativeSrc":"8824:3:87","nodeType":"YulLiteral","src":"8824:3:87","type":"","value":"224"},{"kind":"number","nativeSrc":"8829:10:87","nodeType":"YulLiteral","src":"8829:10:87","type":"","value":"0x4e487b71"}],"functionName":{"name":"shl","nativeSrc":"8820:3:87","nodeType":"YulIdentifier","src":"8820:3:87"},"nativeSrc":"8820:20:87","nodeType":"YulFunctionCall","src":"8820:20:87"}],"functionName":{"name":"mstore","nativeSrc":"8810:6:87","nodeType":"YulIdentifier","src":"8810:6:87"},"nativeSrc":"8810:31:87","nodeType":"YulFunctionCall","src":"8810:31:87"},"nativeSrc":"8810:31:87","nodeType":"YulExpressionStatement","src":"8810:31:87"},{"expression":{"arguments":[{"kind":"number","nativeSrc":"8861:1:87","nodeType":"YulLiteral","src":"8861:1:87","type":"","value":"4"},{"kind":"number","nativeSrc":"8864:4:87","nodeType":"YulLiteral","src":"8864:4:87","type":"","value":"0x22"}],"functionName":{"name":"mstore","nativeSrc":"8854:6:87","nodeType":"YulIdentifier","src":"8854:6:87"},"nativeSrc":"8854:15:87","nodeType":"YulFunctionCall","src":"8854:15:87"},"nativeSrc":"8854:15:87","nodeType":"YulExpressionStatement","src":"8854:15:87"},{"expression":{"arguments":[{"kind":"number","nativeSrc":"8889:1:87","nodeType":"YulLiteral","src":"8889:1:87","type":"","value":"0"},{"kind":"number","nativeSrc":"8892:4:87","nodeType":"YulLiteral","src":"8892:4:87","type":"","value":"0x24"}],"functionName":{"name":"revert","nativeSrc":"8882:6:87","nodeType":"YulIdentifier","src":"8882:6:87"},"nativeSrc":"8882:15:87","nodeType":"YulFunctionCall","src":"8882:15:87"},"nativeSrc":"8882:15:87","nodeType":"YulExpressionStatement","src":"8882:15:87"}]},"condition":{"arguments":[{"name":"outOfPlaceEncoding","nativeSrc":"8752:18:87","nodeType":"YulIdentifier","src":"8752:18:87"},{"arguments":[{"name":"length","nativeSrc":"8775:6:87","nodeType":"YulIdentifier","src":"8775:6:87"},{"kind":"number","nativeSrc":"8783:2:87","nodeType":"YulLiteral","src":"8783:2:87","type":"","value":"32"}],"functionName":{"name":"lt","nativeSrc":"8772:2:87","nodeType":"YulIdentifier","src":"8772:2:87"},"nativeSrc":"8772:14:87","nodeType":"YulFunctionCall","src":"8772:14:87"}],"functionName":{"name":"eq","nativeSrc":"8749:2:87","nodeType":"YulIdentifier","src":"8749:2:87"},"nativeSrc":"8749:38:87","nodeType":"YulFunctionCall","src":"8749:38:87"},"nativeSrc":"8746:161:87","nodeType":"YulIf","src":"8746:161:87"}]},"name":"extract_byte_array_length","nativeSrc":"8533:380:87","nodeType":"YulFunctionDefinition","parameters":[{"name":"data","nativeSrc":"8568:4:87","nodeType":"YulTypedName","src":"8568:4:87","type":""}],"returnVariables":[{"name":"length","nativeSrc":"8577:6:87","nodeType":"YulTypedName","src":"8577:6:87","type":""}],"src":"8533:380:87"},{"body":{"nativeSrc":"8973:65:87","nodeType":"YulBlock","src":"8973:65:87","statements":[{"expression":{"arguments":[{"kind":"number","nativeSrc":"8990:1:87","nodeType":"YulLiteral","src":"8990:1:87","type":"","value":"0"},{"name":"ptr","nativeSrc":"8993:3:87","nodeType":"YulIdentifier","src":"8993:3:87"}],"functionName":{"name":"mstore","nativeSrc":"8983:6:87","nodeType":"YulIdentifier","src":"8983:6:87"},"nativeSrc":"8983:14:87","nodeType":"YulFunctionCall","src":"8983:14:87"},"nativeSrc":"8983:14:87","nodeType":"YulExpressionStatement","src":"8983:14:87"},{"nativeSrc":"9006:26:87","nodeType":"YulAssignment","src":"9006:26:87","value":{"arguments":[{"kind":"number","nativeSrc":"9024:1:87","nodeType":"YulLiteral","src":"9024:1:87","type":"","value":"0"},{"kind":"number","nativeSrc":"9027:4:87","nodeType":"YulLiteral","src":"9027:4:87","type":"","value":"0x20"}],"functionName":{"name":"keccak256","nativeSrc":"9014:9:87","nodeType":"YulIdentifier","src":"9014:9:87"},"nativeSrc":"9014:18:87","nodeType":"YulFunctionCall","src":"9014:18:87"},"variableNames":[{"name":"data","nativeSrc":"9006:4:87","nodeType":"YulIdentifier","src":"9006:4:87"}]}]},"name":"array_dataslot_bytes_storage","nativeSrc":"8918:120:87","nodeType":"YulFunctionDefinition","parameters":[{"name":"ptr","nativeSrc":"8956:3:87","nodeType":"YulTypedName","src":"8956:3:87","type":""}],"returnVariables":[{"name":"data","nativeSrc":"8964:4:87","nodeType":"YulTypedName","src":"8964:4:87","type":""}],"src":"8918:120:87"},{"body":{"nativeSrc":"9123:437:87","nodeType":"YulBlock","src":"9123:437:87","statements":[{"body":{"nativeSrc":"9156:398:87","nodeType":"YulBlock","src":"9156:398:87","statements":[{"expression":{"arguments":[{"kind":"number","nativeSrc":"9177:1:87","nodeType":"YulLiteral","src":"9177:1:87","type":"","value":"0"},{"name":"array","nativeSrc":"9180:5:87","nodeType":"YulIdentifier","src":"9180:5:87"}],"functionName":{"name":"mstore","nativeSrc":"9170:6:87","nodeType":"YulIdentifier","src":"9170:6:87"},"nativeSrc":"9170:16:87","nodeType":"YulFunctionCall","src":"9170:16:87"},"nativeSrc":"9170:16:87","nodeType":"YulExpressionStatement","src":"9170:16:87"},{"nativeSrc":"9199:30:87","nodeType":"YulVariableDeclaration","src":"9199:30:87","value":{"arguments":[{"kind":"number","nativeSrc":"9221:1:87","nodeType":"YulLiteral","src":"9221:1:87","type":"","value":"0"},{"kind":"number","nativeSrc":"9224:4:87","nodeType":"YulLiteral","src":"9224:4:87","type":"","value":"0x20"}],"functionName":{"name":"keccak256","nativeSrc":"9211:9:87","nodeType":"YulIdentifier","src":"9211:9:87"},"nativeSrc":"9211:18:87","nodeType":"YulFunctionCall","src":"9211:18:87"},"variables":[{"name":"data","nativeSrc":"9203:4:87","nodeType":"YulTypedName","src":"9203:4:87","type":""}]},{"nativeSrc":"9242:57:87","nodeType":"YulVariableDeclaration","src":"9242:57:87","value":{"arguments":[{"name":"data","nativeSrc":"9265:4:87","nodeType":"YulIdentifier","src":"9265:4:87"},{"arguments":[{"kind":"number","nativeSrc":"9275:1:87","nodeType":"YulLiteral","src":"9275:1:87","type":"","value":"5"},{"arguments":[{"name":"startIndex","nativeSrc":"9282:10:87","nodeType":"YulIdentifier","src":"9282:10:87"},{"kind":"number","nativeSrc":"9294:2:87","nodeType":"YulLiteral","src":"9294:2:87","type":"","value":"31"}],"functionName":{"name":"add","nativeSrc":"9278:3:87","nodeType":"YulIdentifier","src":"9278:3:87"},"nativeSrc":"9278:19:87","nodeType":"YulFunctionCall","src":"9278:19:87"}],"functionName":{"name":"shr","nativeSrc":"9271:3:87","nodeType":"YulIdentifier","src":"9271:3:87"},"nativeSrc":"9271:27:87","nodeType":"YulFunctionCall","src":"9271:27:87"}],"functionName":{"name":"add","nativeSrc":"9261:3:87","nodeType":"YulIdentifier","src":"9261:3:87"},"nativeSrc":"9261:38:87","nodeType":"YulFunctionCall","src":"9261:38:87"},"variables":[{"name":"deleteStart","nativeSrc":"9246:11:87","nodeType":"YulTypedName","src":"9246:11:87","type":""}]},{"body":{"nativeSrc":"9336:23:87","nodeType":"YulBlock","src":"9336:23:87","statements":[{"nativeSrc":"9338:19:87","nodeType":"YulAssignment","src":"9338:19:87","value":{"name":"data","nativeSrc":"9353:4:87","nodeType":"YulIdentifier","src":"9353:4:87"},"variableNames":[{"name":"deleteStart","nativeSrc":"9338:11:87","nodeType":"YulIdentifier","src":"9338:11:87"}]}]},"condition":{"arguments":[{"name":"startIndex","nativeSrc":"9318:10:87","nodeType":"YulIdentifier","src":"9318:10:87"},{"kind":"number","nativeSrc":"9330:4:87","nodeType":"YulLiteral","src":"9330:4:87","type":"","value":"0x20"}],"functionName":{"name":"lt","nativeSrc":"9315:2:87","nodeType":"YulIdentifier","src":"9315:2:87"},"nativeSrc":"9315:20:87","nodeType":"YulFunctionCall","src":"9315:20:87"},"nativeSrc":"9312:47:87","nodeType":"YulIf","src":"9312:47:87"},{"nativeSrc":"9372:41:87","nodeType":"YulVariableDeclaration","src":"9372:41:87","value":{"arguments":[{"name":"data","nativeSrc":"9386:4:87","nodeType":"YulIdentifier","src":"9386:4:87"},{"arguments":[{"kind":"number","nativeSrc":"9396:1:87","nodeType":"YulLiteral","src":"9396:1:87","type":"","value":"5"},{"arguments":[{"name":"len","nativeSrc":"9403:3:87","nodeType":"YulIdentifier","src":"9403:3:87"},{"kind":"number","nativeSrc":"9408:2:87","nodeType":"YulLiteral","src":"9408:2:87","type":"","value":"31"}],"functionName":{"name":"add","nativeSrc":"9399:3:87","nodeType":"YulIdentifier","src":"9399:3:87"},"nativeSrc":"9399:12:87","nodeType":"YulFunctionCall","src":"9399:12:87"}],"functionName":{"name":"shr","nativeSrc":"9392:3:87","nodeType":"YulIdentifier","src":"9392:3:87"},"nativeSrc":"9392:20:87","nodeType":"YulFunctionCall","src":"9392:20:87"}],"functionName":{"name":"add","nativeSrc":"9382:3:87","nodeType":"YulIdentifier","src":"9382:3:87"},"nativeSrc":"9382:31:87","nodeType":"YulFunctionCall","src":"9382:31:87"},"variables":[{"name":"_1","nativeSrc":"9376:2:87","nodeType":"YulTypedName","src":"9376:2:87","type":""}]},{"nativeSrc":"9426:24:87","nodeType":"YulVariableDeclaration","src":"9426:24:87","value":{"name":"deleteStart","nativeSrc":"9439:11:87","nodeType":"YulIdentifier","src":"9439:11:87"},"variables":[{"name":"start","nativeSrc":"9430:5:87","nodeType":"YulTypedName","src":"9430:5:87","type":""}]},{"body":{"nativeSrc":"9524:20:87","nodeType":"YulBlock","src":"9524:20:87","statements":[{"expression":{"arguments":[{"name":"start","nativeSrc":"9533:5:87","nodeType":"YulIdentifier","src":"9533:5:87"},{"kind":"number","nativeSrc":"9540:1:87","nodeType":"YulLiteral","src":"9540:1:87","type":"","value":"0"}],"functionName":{"name":"sstore","nativeSrc":"9526:6:87","nodeType":"YulIdentifier","src":"9526:6:87"},"nativeSrc":"9526:16:87","nodeType":"YulFunctionCall","src":"9526:16:87"},"nativeSrc":"9526:16:87","nodeType":"YulExpressionStatement","src":"9526:16:87"}]},"condition":{"arguments":[{"name":"start","nativeSrc":"9474:5:87","nodeType":"YulIdentifier","src":"9474:5:87"},{"name":"_1","nativeSrc":"9481:2:87","nodeType":"YulIdentifier","src":"9481:2:87"}],"functionName":{"name":"lt","nativeSrc":"9471:2:87","nodeType":"YulIdentifier","src":"9471:2:87"},"nativeSrc":"9471:13:87","nodeType":"YulFunctionCall","src":"9471:13:87"},"nativeSrc":"9463:81:87","nodeType":"YulForLoop","post":{"nativeSrc":"9485:26:87","nodeType":"YulBlock","src":"9485:26:87","statements":[{"nativeSrc":"9487:22:87","nodeType":"YulAssignment","src":"9487:22:87","value":{"arguments":[{"name":"start","nativeSrc":"9500:5:87","nodeType":"YulIdentifier","src":"9500:5:87"},{"kind":"number","nativeSrc":"9507:1:87","nodeType":"YulLiteral","src":"9507:1:87","type":"","value":"1"}],"functionName":{"name":"add","nativeSrc":"9496:3:87","nodeType":"YulIdentifier","src":"9496:3:87"},"nativeSrc":"9496:13:87","nodeType":"YulFunctionCall","src":"9496:13:87"},"variableNames":[{"name":"start","nativeSrc":"9487:5:87","nodeType":"YulIdentifier","src":"9487:5:87"}]}]},"pre":{"nativeSrc":"9467:3:87","nodeType":"YulBlock","src":"9467:3:87","statements":[]},"src":"9463:81:87"}]},"condition":{"arguments":[{"name":"len","nativeSrc":"9139:3:87","nodeType":"YulIdentifier","src":"9139:3:87"},{"kind":"number","nativeSrc":"9144:2:87","nodeType":"YulLiteral","src":"9144:2:87","type":"","value":"31"}],"functionName":{"name":"gt","nativeSrc":"9136:2:87","nodeType":"YulIdentifier","src":"9136:2:87"},"nativeSrc":"9136:11:87","nodeType":"YulFunctionCall","src":"9136:11:87"},"nativeSrc":"9133:421:87","nodeType":"YulIf","src":"9133:421:87"}]},"name":"clean_up_bytearray_end_slots_bytes_storage","nativeSrc":"9043:517:87","nodeType":"YulFunctionDefinition","parameters":[{"name":"array","nativeSrc":"9095:5:87","nodeType":"YulTypedName","src":"9095:5:87","type":""},{"name":"len","nativeSrc":"9102:3:87","nodeType":"YulTypedName","src":"9102:3:87","type":""},{"name":"startIndex","nativeSrc":"9107:10:87","nodeType":"YulTypedName","src":"9107:10:87","type":""}],"src":"9043:517:87"},{"body":{"nativeSrc":"9650:81:87","nodeType":"YulBlock","src":"9650:81:87","statements":[{"nativeSrc":"9660:65:87","nodeType":"YulAssignment","src":"9660:65:87","value":{"arguments":[{"arguments":[{"name":"data","nativeSrc":"9675:4:87","nodeType":"YulIdentifier","src":"9675:4:87"},{"arguments":[{"arguments":[{"arguments":[{"kind":"number","nativeSrc":"9693:1:87","nodeType":"YulLiteral","src":"9693:1:87","type":"","value":"3"},{"name":"len","nativeSrc":"9696:3:87","nodeType":"YulIdentifier","src":"9696:3:87"}],"functionName":{"name":"shl","nativeSrc":"9689:3:87","nodeType":"YulIdentifier","src":"9689:3:87"},"nativeSrc":"9689:11:87","nodeType":"YulFunctionCall","src":"9689:11:87"},{"arguments":[{"kind":"number","nativeSrc":"9706:1:87","nodeType":"YulLiteral","src":"9706:1:87","type":"","value":"0"}],"functionName":{"name":"not","nativeSrc":"9702:3:87","nodeType":"YulIdentifier","src":"9702:3:87"},"nativeSrc":"9702:6:87","nodeType":"YulFunctionCall","src":"9702:6:87"}],"functionName":{"name":"shr","nativeSrc":"9685:3:87","nodeType":"YulIdentifier","src":"9685:3:87"},"nativeSrc":"9685:24:87","nodeType":"YulFunctionCall","src":"9685:24:87"}],"functionName":{"name":"not","nativeSrc":"9681:3:87","nodeType":"YulIdentifier","src":"9681:3:87"},"nativeSrc":"9681:29:87","nodeType":"YulFunctionCall","src":"9681:29:87"}],"functionName":{"name":"and","nativeSrc":"9671:3:87","nodeType":"YulIdentifier","src":"9671:3:87"},"nativeSrc":"9671:40:87","nodeType":"YulFunctionCall","src":"9671:40:87"},{"arguments":[{"kind":"number","nativeSrc":"9717:1:87","nodeType":"YulLiteral","src":"9717:1:87","type":"","value":"1"},{"name":"len","nativeSrc":"9720:3:87","nodeType":"YulIdentifier","src":"9720:3:87"}],"functionName":{"name":"shl","nativeSrc":"9713:3:87","nodeType":"YulIdentifier","src":"9713:3:87"},"nativeSrc":"9713:11:87","nodeType":"YulFunctionCall","src":"9713:11:87"}],"functionName":{"name":"or","nativeSrc":"9668:2:87","nodeType":"YulIdentifier","src":"9668:2:87"},"nativeSrc":"9668:57:87","nodeType":"YulFunctionCall","src":"9668:57:87"},"variableNames":[{"name":"used","nativeSrc":"9660:4:87","nodeType":"YulIdentifier","src":"9660:4:87"}]}]},"name":"extract_used_part_and_set_length_of_short_byte_array","nativeSrc":"9565:166:87","nodeType":"YulFunctionDefinition","parameters":[{"name":"data","nativeSrc":"9627:4:87","nodeType":"YulTypedName","src":"9627:4:87","type":""},{"name":"len","nativeSrc":"9633:3:87","nodeType":"YulTypedName","src":"9633:3:87","type":""}],"returnVariables":[{"name":"used","nativeSrc":"9641:4:87","nodeType":"YulTypedName","src":"9641:4:87","type":""}],"src":"9565:166:87"},{"body":{"nativeSrc":"9830:1201:87","nodeType":"YulBlock","src":"9830:1201:87","statements":[{"nativeSrc":"9840:24:87","nodeType":"YulVariableDeclaration","src":"9840:24:87","value":{"arguments":[{"name":"src","nativeSrc":"9860:3:87","nodeType":"YulIdentifier","src":"9860:3:87"}],"functionName":{"name":"mload","nativeSrc":"9854:5:87","nodeType":"YulIdentifier","src":"9854:5:87"},"nativeSrc":"9854:10:87","nodeType":"YulFunctionCall","src":"9854:10:87"},"variables":[{"name":"newLen","nativeSrc":"9844:6:87","nodeType":"YulTypedName","src":"9844:6:87","type":""}]},{"body":{"nativeSrc":"9907:22:87","nodeType":"YulBlock","src":"9907:22:87","statements":[{"expression":{"arguments":[],"functionName":{"name":"panic_error_0x41","nativeSrc":"9909:16:87","nodeType":"YulIdentifier","src":"9909:16:87"},"nativeSrc":"9909:18:87","nodeType":"YulFunctionCall","src":"9909:18:87"},"nativeSrc":"9909:18:87","nodeType":"YulExpressionStatement","src":"9909:18:87"}]},"condition":{"arguments":[{"name":"newLen","nativeSrc":"9879:6:87","nodeType":"YulIdentifier","src":"9879:6:87"},{"kind":"number","nativeSrc":"9887:18:87","nodeType":"YulLiteral","src":"9887:18:87","type":"","value":"0xffffffffffffffff"}],"functionName":{"name":"gt","nativeSrc":"9876:2:87","nodeType":"YulIdentifier","src":"9876:2:87"},"nativeSrc":"9876:30:87","nodeType":"YulFunctionCall","src":"9876:30:87"},"nativeSrc":"9873:56:87","nodeType":"YulIf","src":"9873:56:87"},{"expression":{"arguments":[{"name":"slot","nativeSrc":"9981:4:87","nodeType":"YulIdentifier","src":"9981:4:87"},{"arguments":[{"arguments":[{"name":"slot","nativeSrc":"10019:4:87","nodeType":"YulIdentifier","src":"10019:4:87"}],"functionName":{"name":"sload","nativeSrc":"10013:5:87","nodeType":"YulIdentifier","src":"10013:5:87"},"nativeSrc":"10013:11:87","nodeType":"YulFunctionCall","src":"10013:11:87"}],"functionName":{"name":"extract_byte_array_length","nativeSrc":"9987:25:87","nodeType":"YulIdentifier","src":"9987:25:87"},"nativeSrc":"9987:38:87","nodeType":"YulFunctionCall","src":"9987:38:87"},{"name":"newLen","nativeSrc":"10027:6:87","nodeType":"YulIdentifier","src":"10027:6:87"}],"functionName":{"name":"clean_up_bytearray_end_slots_bytes_storage","nativeSrc":"9938:42:87","nodeType":"YulIdentifier","src":"9938:42:87"},"nativeSrc":"9938:96:87","nodeType":"YulFunctionCall","src":"9938:96:87"},"nativeSrc":"9938:96:87","nodeType":"YulExpressionStatement","src":"9938:96:87"},{"nativeSrc":"10043:18:87","nodeType":"YulVariableDeclaration","src":"10043:18:87","value":{"kind":"number","nativeSrc":"10060:1:87","nodeType":"YulLiteral","src":"10060:1:87","type":"","value":"0"},"variables":[{"name":"srcOffset","nativeSrc":"10047:9:87","nodeType":"YulTypedName","src":"10047:9:87","type":""}]},{"nativeSrc":"10070:17:87","nodeType":"YulAssignment","src":"10070:17:87","value":{"kind":"number","nativeSrc":"10083:4:87","nodeType":"YulLiteral","src":"10083:4:87","type":"","value":"0x20"},"variableNames":[{"name":"srcOffset","nativeSrc":"10070:9:87","nodeType":"YulIdentifier","src":"10070:9:87"}]},{"cases":[{"body":{"nativeSrc":"10133:641:87","nodeType":"YulBlock","src":"10133:641:87","statements":[{"nativeSrc":"10147:35:87","nodeType":"YulVariableDeclaration","src":"10147:35:87","value":{"arguments":[{"name":"newLen","nativeSrc":"10166:6:87","nodeType":"YulIdentifier","src":"10166:6:87"},{"arguments":[{"kind":"number","nativeSrc":"10178:2:87","nodeType":"YulLiteral","src":"10178:2:87","type":"","value":"31"}],"functionName":{"name":"not","nativeSrc":"10174:3:87","nodeType":"YulIdentifier","src":"10174:3:87"},"nativeSrc":"10174:7:87","nodeType":"YulFunctionCall","src":"10174:7:87"}],"functionName":{"name":"and","nativeSrc":"10162:3:87","nodeType":"YulIdentifier","src":"10162:3:87"},"nativeSrc":"10162:20:87","nodeType":"YulFunctionCall","src":"10162:20:87"},"variables":[{"name":"loopEnd","nativeSrc":"10151:7:87","nodeType":"YulTypedName","src":"10151:7:87","type":""}]},{"nativeSrc":"10195:48:87","nodeType":"YulVariableDeclaration","src":"10195:48:87","value":{"arguments":[{"name":"slot","nativeSrc":"10238:4:87","nodeType":"YulIdentifier","src":"10238:4:87"}],"functionName":{"name":"array_dataslot_bytes_storage","nativeSrc":"10209:28:87","nodeType":"YulIdentifier","src":"10209:28:87"},"nativeSrc":"10209:34:87","nodeType":"YulFunctionCall","src":"10209:34:87"},"variables":[{"name":"dstPtr","nativeSrc":"10199:6:87","nodeType":"YulTypedName","src":"10199:6:87","type":""}]},{"nativeSrc":"10256:10:87","nodeType":"YulVariableDeclaration","src":"10256:10:87","value":{"kind":"number","nativeSrc":"10265:1:87","nodeType":"YulLiteral","src":"10265:1:87","type":"","value":"0"},"variables":[{"name":"i","nativeSrc":"10260:1:87","nodeType":"YulTypedName","src":"10260:1:87","type":""}]},{"body":{"nativeSrc":"10336:165:87","nodeType":"YulBlock","src":"10336:165:87","statements":[{"expression":{"arguments":[{"name":"dstPtr","nativeSrc":"10361:6:87","nodeType":"YulIdentifier","src":"10361:6:87"},{"arguments":[{"arguments":[{"name":"src","nativeSrc":"10379:3:87","nodeType":"YulIdentifier","src":"10379:3:87"},{"name":"srcOffset","nativeSrc":"10384:9:87","nodeType":"YulIdentifier","src":"10384:9:87"}],"functionName":{"name":"add","nativeSrc":"10375:3:87","nodeType":"YulIdentifier","src":"10375:3:87"},"nativeSrc":"10375:19:87","nodeType":"YulFunctionCall","src":"10375:19:87"}],"functionName":{"name":"mload","nativeSrc":"10369:5:87","nodeType":"YulIdentifier","src":"10369:5:87"},"nativeSrc":"10369:26:87","nodeType":"YulFunctionCall","src":"10369:26:87"}],"functionName":{"name":"sstore","nativeSrc":"10354:6:87","nodeType":"YulIdentifier","src":"10354:6:87"},"nativeSrc":"10354:42:87","nodeType":"YulFunctionCall","src":"10354:42:87"},"nativeSrc":"10354:42:87","nodeType":"YulExpressionStatement","src":"10354:42:87"},{"nativeSrc":"10413:24:87","nodeType":"YulAssignment","src":"10413:24:87","value":{"arguments":[{"name":"dstPtr","nativeSrc":"10427:6:87","nodeType":"YulIdentifier","src":"10427:6:87"},{"kind":"number","nativeSrc":"10435:1:87","nodeType":"YulLiteral","src":"10435:1:87","type":"","value":"1"}],"functionName":{"name":"add","nativeSrc":"10423:3:87","nodeType":"YulIdentifier","src":"10423:3:87"},"nativeSrc":"10423:14:87","nodeType":"YulFunctionCall","src":"10423:14:87"},"variableNames":[{"name":"dstPtr","nativeSrc":"10413:6:87","nodeType":"YulIdentifier","src":"10413:6:87"}]},{"nativeSrc":"10454:33:87","nodeType":"YulAssignment","src":"10454:33:87","value":{"arguments":[{"name":"srcOffset","nativeSrc":"10471:9:87","nodeType":"YulIdentifier","src":"10471:9:87"},{"kind":"number","nativeSrc":"10482:4:87","nodeType":"YulLiteral","src":"10482:4:87","type":"","value":"0x20"}],"functionName":{"name":"add","nativeSrc":"10467:3:87","nodeType":"YulIdentifier","src":"10467:3:87"},"nativeSrc":"10467:20:87","nodeType":"YulFunctionCall","src":"10467:20:87"},"variableNames":[{"name":"srcOffset","nativeSrc":"10454:9:87","nodeType":"YulIdentifier","src":"10454:9:87"}]}]},"condition":{"arguments":[{"name":"i","nativeSrc":"10290:1:87","nodeType":"YulIdentifier","src":"10290:1:87"},{"name":"loopEnd","nativeSrc":"10293:7:87","nodeType":"YulIdentifier","src":"10293:7:87"}],"functionName":{"name":"lt","nativeSrc":"10287:2:87","nodeType":"YulIdentifier","src":"10287:2:87"},"nativeSrc":"10287:14:87","nodeType":"YulFunctionCall","src":"10287:14:87"},"nativeSrc":"10279:222:87","nodeType":"YulForLoop","post":{"nativeSrc":"10302:21:87","nodeType":"YulBlock","src":"10302:21:87","statements":[{"nativeSrc":"10304:17:87","nodeType":"YulAssignment","src":"10304:17:87","value":{"arguments":[{"name":"i","nativeSrc":"10313:1:87","nodeType":"YulIdentifier","src":"10313:1:87"},{"kind":"number","nativeSrc":"10316:4:87","nodeType":"YulLiteral","src":"10316:4:87","type":"","value":"0x20"}],"functionName":{"name":"add","nativeSrc":"10309:3:87","nodeType":"YulIdentifier","src":"10309:3:87"},"nativeSrc":"10309:12:87","nodeType":"YulFunctionCall","src":"10309:12:87"},"variableNames":[{"name":"i","nativeSrc":"10304:1:87","nodeType":"YulIdentifier","src":"10304:1:87"}]}]},"pre":{"nativeSrc":"10283:3:87","nodeType":"YulBlock","src":"10283:3:87","statements":[]},"src":"10279:222:87"},{"body":{"nativeSrc":"10549:166:87","nodeType":"YulBlock","src":"10549:166:87","statements":[{"nativeSrc":"10567:43:87","nodeType":"YulVariableDeclaration","src":"10567:43:87","value":{"arguments":[{"arguments":[{"name":"src","nativeSrc":"10594:3:87","nodeType":"YulIdentifier","src":"10594:3:87"},{"name":"srcOffset","nativeSrc":"10599:9:87","nodeType":"YulIdentifier","src":"10599:9:87"}],"functionName":{"name":"add","nativeSrc":"10590:3:87","nodeType":"YulIdentifier","src":"10590:3:87"},"nativeSrc":"10590:19:87","nodeType":"YulFunctionCall","src":"10590:19:87"}],"functionName":{"name":"mload","nativeSrc":"10584:5:87","nodeType":"YulIdentifier","src":"10584:5:87"},"nativeSrc":"10584:26:87","nodeType":"YulFunctionCall","src":"10584:26:87"},"variables":[{"name":"lastValue","nativeSrc":"10571:9:87","nodeType":"YulTypedName","src":"10571:9:87","type":""}]},{"expression":{"arguments":[{"name":"dstPtr","nativeSrc":"10634:6:87","nodeType":"YulIdentifier","src":"10634:6:87"},{"arguments":[{"name":"lastValue","nativeSrc":"10646:9:87","nodeType":"YulIdentifier","src":"10646:9:87"},{"arguments":[{"arguments":[{"arguments":[{"arguments":[{"kind":"number","nativeSrc":"10673:1:87","nodeType":"YulLiteral","src":"10673:1:87","type":"","value":"3"},{"name":"newLen","nativeSrc":"10676:6:87","nodeType":"YulIdentifier","src":"10676:6:87"}],"functionName":{"name":"shl","nativeSrc":"10669:3:87","nodeType":"YulIdentifier","src":"10669:3:87"},"nativeSrc":"10669:14:87","nodeType":"YulFunctionCall","src":"10669:14:87"},{"kind":"number","nativeSrc":"10685:3:87","nodeType":"YulLiteral","src":"10685:3:87","type":"","value":"248"}],"functionName":{"name":"and","nativeSrc":"10665:3:87","nodeType":"YulIdentifier","src":"10665:3:87"},"nativeSrc":"10665:24:87","nodeType":"YulFunctionCall","src":"10665:24:87"},{"arguments":[{"kind":"number","nativeSrc":"10695:1:87","nodeType":"YulLiteral","src":"10695:1:87","type":"","value":"0"}],"functionName":{"name":"not","nativeSrc":"10691:3:87","nodeType":"YulIdentifier","src":"10691:3:87"},"nativeSrc":"10691:6:87","nodeType":"YulFunctionCall","src":"10691:6:87"}],"functionName":{"name":"shr","nativeSrc":"10661:3:87","nodeType":"YulIdentifier","src":"10661:3:87"},"nativeSrc":"10661:37:87","nodeType":"YulFunctionCall","src":"10661:37:87"}],"functionName":{"name":"not","nativeSrc":"10657:3:87","nodeType":"YulIdentifier","src":"10657:3:87"},"nativeSrc":"10657:42:87","nodeType":"YulFunctionCall","src":"10657:42:87"}],"functionName":{"name":"and","nativeSrc":"10642:3:87","nodeType":"YulIdentifier","src":"10642:3:87"},"nativeSrc":"10642:58:87","nodeType":"YulFunctionCall","src":"10642:58:87"}],"functionName":{"name":"sstore","nativeSrc":"10627:6:87","nodeType":"YulIdentifier","src":"10627:6:87"},"nativeSrc":"10627:74:87","nodeType":"YulFunctionCall","src":"10627:74:87"},"nativeSrc":"10627:74:87","nodeType":"YulExpressionStatement","src":"10627:74:87"}]},"condition":{"arguments":[{"name":"loopEnd","nativeSrc":"10520:7:87","nodeType":"YulIdentifier","src":"10520:7:87"},{"name":"newLen","nativeSrc":"10529:6:87","nodeType":"YulIdentifier","src":"10529:6:87"}],"functionName":{"name":"lt","nativeSrc":"10517:2:87","nodeType":"YulIdentifier","src":"10517:2:87"},"nativeSrc":"10517:19:87","nodeType":"YulFunctionCall","src":"10517:19:87"},"nativeSrc":"10514:201:87","nodeType":"YulIf","src":"10514:201:87"},{"expression":{"arguments":[{"name":"slot","nativeSrc":"10735:4:87","nodeType":"YulIdentifier","src":"10735:4:87"},{"arguments":[{"arguments":[{"kind":"number","nativeSrc":"10749:1:87","nodeType":"YulLiteral","src":"10749:1:87","type":"","value":"1"},{"name":"newLen","nativeSrc":"10752:6:87","nodeType":"YulIdentifier","src":"10752:6:87"}],"functionName":{"name":"shl","nativeSrc":"10745:3:87","nodeType":"YulIdentifier","src":"10745:3:87"},"nativeSrc":"10745:14:87","nodeType":"YulFunctionCall","src":"10745:14:87"},{"kind":"number","nativeSrc":"10761:1:87","nodeType":"YulLiteral","src":"10761:1:87","type":"","value":"1"}],"functionName":{"name":"add","nativeSrc":"10741:3:87","nodeType":"YulIdentifier","src":"10741:3:87"},"nativeSrc":"10741:22:87","nodeType":"YulFunctionCall","src":"10741:22:87"}],"functionName":{"name":"sstore","nativeSrc":"10728:6:87","nodeType":"YulIdentifier","src":"10728:6:87"},"nativeSrc":"10728:36:87","nodeType":"YulFunctionCall","src":"10728:36:87"},"nativeSrc":"10728:36:87","nodeType":"YulExpressionStatement","src":"10728:36:87"}]},"nativeSrc":"10126:648:87","nodeType":"YulCase","src":"10126:648:87","value":{"kind":"number","nativeSrc":"10131:1:87","nodeType":"YulLiteral","src":"10131:1:87","type":"","value":"1"}},{"body":{"nativeSrc":"10791:234:87","nodeType":"YulBlock","src":"10791:234:87","statements":[{"nativeSrc":"10805:14:87","nodeType":"YulVariableDeclaration","src":"10805:14:87","value":{"kind":"number","nativeSrc":"10818:1:87","nodeType":"YulLiteral","src":"10818:1:87","type":"","value":"0"},"variables":[{"name":"value","nativeSrc":"10809:5:87","nodeType":"YulTypedName","src":"10809:5:87","type":""}]},{"body":{"nativeSrc":"10854:67:87","nodeType":"YulBlock","src":"10854:67:87","statements":[{"nativeSrc":"10872:35:87","nodeType":"YulAssignment","src":"10872:35:87","value":{"arguments":[{"arguments":[{"name":"src","nativeSrc":"10891:3:87","nodeType":"YulIdentifier","src":"10891:3:87"},{"name":"srcOffset","nativeSrc":"10896:9:87","nodeType":"YulIdentifier","src":"10896:9:87"}],"functionName":{"name":"add","nativeSrc":"10887:3:87","nodeType":"YulIdentifier","src":"10887:3:87"},"nativeSrc":"10887:19:87","nodeType":"YulFunctionCall","src":"10887:19:87"}],"functionName":{"name":"mload","nativeSrc":"10881:5:87","nodeType":"YulIdentifier","src":"10881:5:87"},"nativeSrc":"10881:26:87","nodeType":"YulFunctionCall","src":"10881:26:87"},"variableNames":[{"name":"value","nativeSrc":"10872:5:87","nodeType":"YulIdentifier","src":"10872:5:87"}]}]},"condition":{"name":"newLen","nativeSrc":"10835:6:87","nodeType":"YulIdentifier","src":"10835:6:87"},"nativeSrc":"10832:89:87","nodeType":"YulIf","src":"10832:89:87"},{"expression":{"arguments":[{"name":"slot","nativeSrc":"10941:4:87","nodeType":"YulIdentifier","src":"10941:4:87"},{"arguments":[{"name":"value","nativeSrc":"11000:5:87","nodeType":"YulIdentifier","src":"11000:5:87"},{"name":"newLen","nativeSrc":"11007:6:87","nodeType":"YulIdentifier","src":"11007:6:87"}],"functionName":{"name":"extract_used_part_and_set_length_of_short_byte_array","nativeSrc":"10947:52:87","nodeType":"YulIdentifier","src":"10947:52:87"},"nativeSrc":"10947:67:87","nodeType":"YulFunctionCall","src":"10947:67:87"}],"functionName":{"name":"sstore","nativeSrc":"10934:6:87","nodeType":"YulIdentifier","src":"10934:6:87"},"nativeSrc":"10934:81:87","nodeType":"YulFunctionCall","src":"10934:81:87"},"nativeSrc":"10934:81:87","nodeType":"YulExpressionStatement","src":"10934:81:87"}]},"nativeSrc":"10783:242:87","nodeType":"YulCase","src":"10783:242:87","value":"default"}],"expression":{"arguments":[{"name":"newLen","nativeSrc":"10106:6:87","nodeType":"YulIdentifier","src":"10106:6:87"},{"kind":"number","nativeSrc":"10114:2:87","nodeType":"YulLiteral","src":"10114:2:87","type":"","value":"31"}],"functionName":{"name":"gt","nativeSrc":"10103:2:87","nodeType":"YulIdentifier","src":"10103:2:87"},"nativeSrc":"10103:14:87","nodeType":"YulFunctionCall","src":"10103:14:87"},"nativeSrc":"10096:929:87","nodeType":"YulSwitch","src":"10096:929:87"}]},"name":"copy_byte_array_to_storage_from_t_bytes_memory_ptr_to_t_bytes_storage","nativeSrc":"9736:1295:87","nodeType":"YulFunctionDefinition","parameters":[{"name":"slot","nativeSrc":"9815:4:87","nodeType":"YulTypedName","src":"9815:4:87","type":""},{"name":"src","nativeSrc":"9821:3:87","nodeType":"YulTypedName","src":"9821:3:87","type":""}],"src":"9736:1295:87"},{"body":{"nativeSrc":"11095:120:87","nodeType":"YulBlock","src":"11095:120:87","statements":[{"nativeSrc":"11105:22:87","nodeType":"YulAssignment","src":"11105:22:87","value":{"arguments":[{"name":"offset","nativeSrc":"11120:6:87","nodeType":"YulIdentifier","src":"11120:6:87"}],"functionName":{"name":"mload","nativeSrc":"11114:5:87","nodeType":"YulIdentifier","src":"11114:5:87"},"nativeSrc":"11114:13:87","nodeType":"YulFunctionCall","src":"11114:13:87"},"variableNames":[{"name":"value","nativeSrc":"11105:5:87","nodeType":"YulIdentifier","src":"11105:5:87"}]},{"body":{"nativeSrc":"11193:16:87","nodeType":"YulBlock","src":"11193:16:87","statements":[{"expression":{"arguments":[{"kind":"number","nativeSrc":"11202:1:87","nodeType":"YulLiteral","src":"11202:1:87","type":"","value":"0"},{"kind":"number","nativeSrc":"11205:1:87","nodeType":"YulLiteral","src":"11205:1:87","type":"","value":"0"}],"functionName":{"name":"revert","nativeSrc":"11195:6:87","nodeType":"YulIdentifier","src":"11195:6:87"},"nativeSrc":"11195:12:87","nodeType":"YulFunctionCall","src":"11195:12:87"},"nativeSrc":"11195:12:87","nodeType":"YulExpressionStatement","src":"11195:12:87"}]},"condition":{"arguments":[{"arguments":[{"name":"value","nativeSrc":"11149:5:87","nodeType":"YulIdentifier","src":"11149:5:87"},{"arguments":[{"name":"value","nativeSrc":"11160:5:87","nodeType":"YulIdentifier","src":"11160:5:87"},{"kind":"number","nativeSrc":"11167:22:87","nodeType":"YulLiteral","src":"11167:22:87","type":"","value":"0xffffffffffffffffffff"}],"functionName":{"name":"and","nativeSrc":"11156:3:87","nodeType":"YulIdentifier","src":"11156:3:87"},"nativeSrc":"11156:34:87","nodeType":"YulFunctionCall","src":"11156:34:87"}],"functionName":{"name":"eq","nativeSrc":"11146:2:87","nodeType":"YulIdentifier","src":"11146:2:87"},"nativeSrc":"11146:45:87","nodeType":"YulFunctionCall","src":"11146:45:87"}],"functionName":{"name":"iszero","nativeSrc":"11139:6:87","nodeType":"YulIdentifier","src":"11139:6:87"},"nativeSrc":"11139:53:87","nodeType":"YulFunctionCall","src":"11139:53:87"},"nativeSrc":"11136:73:87","nodeType":"YulIf","src":"11136:73:87"}]},"name":"abi_decode_uint80_fromMemory","nativeSrc":"11036:179:87","nodeType":"YulFunctionDefinition","parameters":[{"name":"offset","nativeSrc":"11074:6:87","nodeType":"YulTypedName","src":"11074:6:87","type":""}],"returnVariables":[{"name":"value","nativeSrc":"11085:5:87","nodeType":"YulTypedName","src":"11085:5:87","type":""}],"src":"11036:179:87"},{"body":{"nativeSrc":"11366:425:87","nodeType":"YulBlock","src":"11366:425:87","statements":[{"body":{"nativeSrc":"11413:16:87","nodeType":"YulBlock","src":"11413:16:87","statements":[{"expression":{"arguments":[{"kind":"number","nativeSrc":"11422:1:87","nodeType":"YulLiteral","src":"11422:1:87","type":"","value":"0"},{"kind":"number","nativeSrc":"11425:1:87","nodeType":"YulLiteral","src":"11425:1:87","type":"","value":"0"}],"functionName":{"name":"revert","nativeSrc":"11415:6:87","nodeType":"YulIdentifier","src":"11415:6:87"},"nativeSrc":"11415:12:87","nodeType":"YulFunctionCall","src":"11415:12:87"},"nativeSrc":"11415:12:87","nodeType":"YulExpressionStatement","src":"11415:12:87"}]},"condition":{"arguments":[{"arguments":[{"name":"dataEnd","nativeSrc":"11387:7:87","nodeType":"YulIdentifier","src":"11387:7:87"},{"name":"headStart","nativeSrc":"11396:9:87","nodeType":"YulIdentifier","src":"11396:9:87"}],"functionName":{"name":"sub","nativeSrc":"11383:3:87","nodeType":"YulIdentifier","src":"11383:3:87"},"nativeSrc":"11383:23:87","nodeType":"YulFunctionCall","src":"11383:23:87"},{"kind":"number","nativeSrc":"11408:3:87","nodeType":"YulLiteral","src":"11408:3:87","type":"","value":"160"}],"functionName":{"name":"slt","nativeSrc":"11379:3:87","nodeType":"YulIdentifier","src":"11379:3:87"},"nativeSrc":"11379:33:87","nodeType":"YulFunctionCall","src":"11379:33:87"},"nativeSrc":"11376:53:87","nodeType":"YulIf","src":"11376:53:87"},{"nativeSrc":"11438:49:87","nodeType":"YulAssignment","src":"11438:49:87","value":{"arguments":[{"name":"headStart","nativeSrc":"11477:9:87","nodeType":"YulIdentifier","src":"11477:9:87"}],"functionName":{"name":"abi_decode_uint80_fromMemory","nativeSrc":"11448:28:87","nodeType":"YulIdentifier","src":"11448:28:87"},"nativeSrc":"11448:39:87","nodeType":"YulFunctionCall","src":"11448:39:87"},"variableNames":[{"name":"value0","nativeSrc":"11438:6:87","nodeType":"YulIdentifier","src":"11438:6:87"}]},{"nativeSrc":"11496:35:87","nodeType":"YulAssignment","src":"11496:35:87","value":{"arguments":[{"arguments":[{"name":"headStart","nativeSrc":"11516:9:87","nodeType":"YulIdentifier","src":"11516:9:87"},{"kind":"number","nativeSrc":"11527:2:87","nodeType":"YulLiteral","src":"11527:2:87","type":"","value":"32"}],"functionName":{"name":"add","nativeSrc":"11512:3:87","nodeType":"YulIdentifier","src":"11512:3:87"},"nativeSrc":"11512:18:87","nodeType":"YulFunctionCall","src":"11512:18:87"}],"functionName":{"name":"mload","nativeSrc":"11506:5:87","nodeType":"YulIdentifier","src":"11506:5:87"},"nativeSrc":"11506:25:87","nodeType":"YulFunctionCall","src":"11506:25:87"},"variableNames":[{"name":"value1","nativeSrc":"11496:6:87","nodeType":"YulIdentifier","src":"11496:6:87"}]},{"nativeSrc":"11540:14:87","nodeType":"YulVariableDeclaration","src":"11540:14:87","value":{"kind":"number","nativeSrc":"11553:1:87","nodeType":"YulLiteral","src":"11553:1:87","type":"","value":"0"},"variables":[{"name":"value","nativeSrc":"11544:5:87","nodeType":"YulTypedName","src":"11544:5:87","type":""}]},{"nativeSrc":"11563:34:87","nodeType":"YulAssignment","src":"11563:34:87","value":{"arguments":[{"arguments":[{"name":"headStart","nativeSrc":"11582:9:87","nodeType":"YulIdentifier","src":"11582:9:87"},{"kind":"number","nativeSrc":"11593:2:87","nodeType":"YulLiteral","src":"11593:2:87","type":"","value":"64"}],"functionName":{"name":"add","nativeSrc":"11578:3:87","nodeType":"YulIdentifier","src":"11578:3:87"},"nativeSrc":"11578:18:87","nodeType":"YulFunctionCall","src":"11578:18:87"}],"functionName":{"name":"mload","nativeSrc":"11572:5:87","nodeType":"YulIdentifier","src":"11572:5:87"},"nativeSrc":"11572:25:87","nodeType":"YulFunctionCall","src":"11572:25:87"},"variableNames":[{"name":"value","nativeSrc":"11563:5:87","nodeType":"YulIdentifier","src":"11563:5:87"}]},{"nativeSrc":"11606:15:87","nodeType":"YulAssignment","src":"11606:15:87","value":{"name":"value","nativeSrc":"11616:5:87","nodeType":"YulIdentifier","src":"11616:5:87"},"variableNames":[{"name":"value2","nativeSrc":"11606:6:87","nodeType":"YulIdentifier","src":"11606:6:87"}]},{"nativeSrc":"11630:16:87","nodeType":"YulVariableDeclaration","src":"11630:16:87","value":{"kind":"number","nativeSrc":"11645:1:87","nodeType":"YulLiteral","src":"11645:1:87","type":"","value":"0"},"variables":[{"name":"value_1","nativeSrc":"11634:7:87","nodeType":"YulTypedName","src":"11634:7:87","type":""}]},{"nativeSrc":"11655:36:87","nodeType":"YulAssignment","src":"11655:36:87","value":{"arguments":[{"arguments":[{"name":"headStart","nativeSrc":"11676:9:87","nodeType":"YulIdentifier","src":"11676:9:87"},{"kind":"number","nativeSrc":"11687:2:87","nodeType":"YulLiteral","src":"11687:2:87","type":"","value":"96"}],"functionName":{"name":"add","nativeSrc":"11672:3:87","nodeType":"YulIdentifier","src":"11672:3:87"},"nativeSrc":"11672:18:87","nodeType":"YulFunctionCall","src":"11672:18:87"}],"functionName":{"name":"mload","nativeSrc":"11666:5:87","nodeType":"YulIdentifier","src":"11666:5:87"},"nativeSrc":"11666:25:87","nodeType":"YulFunctionCall","src":"11666:25:87"},"variableNames":[{"name":"value_1","nativeSrc":"11655:7:87","nodeType":"YulIdentifier","src":"11655:7:87"}]},{"nativeSrc":"11700:17:87","nodeType":"YulAssignment","src":"11700:17:87","value":{"name":"value_1","nativeSrc":"11710:7:87","nodeType":"YulIdentifier","src":"11710:7:87"},"variableNames":[{"name":"value3","nativeSrc":"11700:6:87","nodeType":"YulIdentifier","src":"11700:6:87"}]},{"nativeSrc":"11726:59:87","nodeType":"YulAssignment","src":"11726:59:87","value":{"arguments":[{"arguments":[{"name":"headStart","nativeSrc":"11769:9:87","nodeType":"YulIdentifier","src":"11769:9:87"},{"kind":"number","nativeSrc":"11780:3:87","nodeType":"YulLiteral","src":"11780:3:87","type":"","value":"128"}],"functionName":{"name":"add","nativeSrc":"11765:3:87","nodeType":"YulIdentifier","src":"11765:3:87"},"nativeSrc":"11765:19:87","nodeType":"YulFunctionCall","src":"11765:19:87"}],"functionName":{"name":"abi_decode_uint80_fromMemory","nativeSrc":"11736:28:87","nodeType":"YulIdentifier","src":"11736:28:87"},"nativeSrc":"11736:49:87","nodeType":"YulFunctionCall","src":"11736:49:87"},"variableNames":[{"name":"value4","nativeSrc":"11726:6:87","nodeType":"YulIdentifier","src":"11726:6:87"}]}]},"name":"abi_decode_tuple_t_uint80t_int256t_uint256t_uint256t_uint80_fromMemory","nativeSrc":"11220:571:87","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nativeSrc":"11300:9:87","nodeType":"YulTypedName","src":"11300:9:87","type":""},{"name":"dataEnd","nativeSrc":"11311:7:87","nodeType":"YulTypedName","src":"11311:7:87","type":""}],"returnVariables":[{"name":"value0","nativeSrc":"11323:6:87","nodeType":"YulTypedName","src":"11323:6:87","type":""},{"name":"value1","nativeSrc":"11331:6:87","nodeType":"YulTypedName","src":"11331:6:87","type":""},{"name":"value2","nativeSrc":"11339:6:87","nodeType":"YulTypedName","src":"11339:6:87","type":""},{"name":"value3","nativeSrc":"11347:6:87","nodeType":"YulTypedName","src":"11347:6:87","type":""},{"name":"value4","nativeSrc":"11355:6:87","nodeType":"YulTypedName","src":"11355:6:87","type":""}],"src":"11220:571:87"},{"body":{"nativeSrc":"11828:95:87","nodeType":"YulBlock","src":"11828:95:87","statements":[{"expression":{"arguments":[{"kind":"number","nativeSrc":"11845:1:87","nodeType":"YulLiteral","src":"11845:1:87","type":"","value":"0"},{"arguments":[{"kind":"number","nativeSrc":"11852:3:87","nodeType":"YulLiteral","src":"11852:3:87","type":"","value":"224"},{"kind":"number","nativeSrc":"11857:10:87","nodeType":"YulLiteral","src":"11857:10:87","type":"","value":"0x4e487b71"}],"functionName":{"name":"shl","nativeSrc":"11848:3:87","nodeType":"YulIdentifier","src":"11848:3:87"},"nativeSrc":"11848:20:87","nodeType":"YulFunctionCall","src":"11848:20:87"}],"functionName":{"name":"mstore","nativeSrc":"11838:6:87","nodeType":"YulIdentifier","src":"11838:6:87"},"nativeSrc":"11838:31:87","nodeType":"YulFunctionCall","src":"11838:31:87"},"nativeSrc":"11838:31:87","nodeType":"YulExpressionStatement","src":"11838:31:87"},{"expression":{"arguments":[{"kind":"number","nativeSrc":"11885:1:87","nodeType":"YulLiteral","src":"11885:1:87","type":"","value":"4"},{"kind":"number","nativeSrc":"11888:4:87","nodeType":"YulLiteral","src":"11888:4:87","type":"","value":"0x11"}],"functionName":{"name":"mstore","nativeSrc":"11878:6:87","nodeType":"YulIdentifier","src":"11878:6:87"},"nativeSrc":"11878:15:87","nodeType":"YulFunctionCall","src":"11878:15:87"},"nativeSrc":"11878:15:87","nodeType":"YulExpressionStatement","src":"11878:15:87"},{"expression":{"arguments":[{"kind":"number","nativeSrc":"11909:1:87","nodeType":"YulLiteral","src":"11909:1:87","type":"","value":"0"},{"kind":"number","nativeSrc":"11912:4:87","nodeType":"YulLiteral","src":"11912:4:87","type":"","value":"0x24"}],"functionName":{"name":"revert","nativeSrc":"11902:6:87","nodeType":"YulIdentifier","src":"11902:6:87"},"nativeSrc":"11902:15:87","nodeType":"YulFunctionCall","src":"11902:15:87"},"nativeSrc":"11902:15:87","nodeType":"YulExpressionStatement","src":"11902:15:87"}]},"name":"panic_error_0x11","nativeSrc":"11796:127:87","nodeType":"YulFunctionDefinition","src":"11796:127:87"},{"body":{"nativeSrc":"11977:79:87","nodeType":"YulBlock","src":"11977:79:87","statements":[{"nativeSrc":"11987:17:87","nodeType":"YulAssignment","src":"11987:17:87","value":{"arguments":[{"name":"x","nativeSrc":"11999:1:87","nodeType":"YulIdentifier","src":"11999:1:87"},{"name":"y","nativeSrc":"12002:1:87","nodeType":"YulIdentifier","src":"12002:1:87"}],"functionName":{"name":"sub","nativeSrc":"11995:3:87","nodeType":"YulIdentifier","src":"11995:3:87"},"nativeSrc":"11995:9:87","nodeType":"YulFunctionCall","src":"11995:9:87"},"variableNames":[{"name":"diff","nativeSrc":"11987:4:87","nodeType":"YulIdentifier","src":"11987:4:87"}]},{"body":{"nativeSrc":"12028:22:87","nodeType":"YulBlock","src":"12028:22:87","statements":[{"expression":{"arguments":[],"functionName":{"name":"panic_error_0x11","nativeSrc":"12030:16:87","nodeType":"YulIdentifier","src":"12030:16:87"},"nativeSrc":"12030:18:87","nodeType":"YulFunctionCall","src":"12030:18:87"},"nativeSrc":"12030:18:87","nodeType":"YulExpressionStatement","src":"12030:18:87"}]},"condition":{"arguments":[{"name":"diff","nativeSrc":"12019:4:87","nodeType":"YulIdentifier","src":"12019:4:87"},{"name":"x","nativeSrc":"12025:1:87","nodeType":"YulIdentifier","src":"12025:1:87"}],"functionName":{"name":"gt","nativeSrc":"12016:2:87","nodeType":"YulIdentifier","src":"12016:2:87"},"nativeSrc":"12016:11:87","nodeType":"YulFunctionCall","src":"12016:11:87"},"nativeSrc":"12013:37:87","nodeType":"YulIf","src":"12013:37:87"}]},"name":"checked_sub_t_uint256","nativeSrc":"11928:128:87","nodeType":"YulFunctionDefinition","parameters":[{"name":"x","nativeSrc":"11959:1:87","nodeType":"YulTypedName","src":"11959:1:87","type":""},{"name":"y","nativeSrc":"11962:1:87","nodeType":"YulTypedName","src":"11962:1:87","type":""}],"returnVariables":[{"name":"diff","nativeSrc":"11968:4:87","nodeType":"YulTypedName","src":"11968:4:87","type":""}],"src":"11928:128:87"},{"body":{"nativeSrc":"12190:119:87","nodeType":"YulBlock","src":"12190:119:87","statements":[{"nativeSrc":"12200:26:87","nodeType":"YulAssignment","src":"12200:26:87","value":{"arguments":[{"name":"headStart","nativeSrc":"12212:9:87","nodeType":"YulIdentifier","src":"12212:9:87"},{"kind":"number","nativeSrc":"12223:2:87","nodeType":"YulLiteral","src":"12223:2:87","type":"","value":"64"}],"functionName":{"name":"add","nativeSrc":"12208:3:87","nodeType":"YulIdentifier","src":"12208:3:87"},"nativeSrc":"12208:18:87","nodeType":"YulFunctionCall","src":"12208:18:87"},"variableNames":[{"name":"tail","nativeSrc":"12200:4:87","nodeType":"YulIdentifier","src":"12200:4:87"}]},{"expression":{"arguments":[{"name":"headStart","nativeSrc":"12242:9:87","nodeType":"YulIdentifier","src":"12242:9:87"},{"name":"value0","nativeSrc":"12253:6:87","nodeType":"YulIdentifier","src":"12253:6:87"}],"functionName":{"name":"mstore","nativeSrc":"12235:6:87","nodeType":"YulIdentifier","src":"12235:6:87"},"nativeSrc":"12235:25:87","nodeType":"YulFunctionCall","src":"12235:25:87"},"nativeSrc":"12235:25:87","nodeType":"YulExpressionStatement","src":"12235:25:87"},{"expression":{"arguments":[{"arguments":[{"name":"headStart","nativeSrc":"12280:9:87","nodeType":"YulIdentifier","src":"12280:9:87"},{"kind":"number","nativeSrc":"12291:2:87","nodeType":"YulLiteral","src":"12291:2:87","type":"","value":"32"}],"functionName":{"name":"add","nativeSrc":"12276:3:87","nodeType":"YulIdentifier","src":"12276:3:87"},"nativeSrc":"12276:18:87","nodeType":"YulFunctionCall","src":"12276:18:87"},{"name":"value1","nativeSrc":"12296:6:87","nodeType":"YulIdentifier","src":"12296:6:87"}],"functionName":{"name":"mstore","nativeSrc":"12269:6:87","nodeType":"YulIdentifier","src":"12269:6:87"},"nativeSrc":"12269:34:87","nodeType":"YulFunctionCall","src":"12269:34:87"},"nativeSrc":"12269:34:87","nodeType":"YulExpressionStatement","src":"12269:34:87"}]},"name":"abi_encode_tuple_t_uint256_t_uint256__to_t_uint256_t_uint256__fromStack_reversed","nativeSrc":"12061:248:87","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nativeSrc":"12151:9:87","nodeType":"YulTypedName","src":"12151:9:87","type":""},{"name":"value1","nativeSrc":"12162:6:87","nodeType":"YulTypedName","src":"12162:6:87","type":""},{"name":"value0","nativeSrc":"12170:6:87","nodeType":"YulTypedName","src":"12170:6:87","type":""}],"returnVariables":[{"name":"tail","nativeSrc":"12181:4:87","nodeType":"YulTypedName","src":"12181:4:87","type":""}],"src":"12061:248:87"},{"body":{"nativeSrc":"12413:76:87","nodeType":"YulBlock","src":"12413:76:87","statements":[{"nativeSrc":"12423:26:87","nodeType":"YulAssignment","src":"12423:26:87","value":{"arguments":[{"name":"headStart","nativeSrc":"12435:9:87","nodeType":"YulIdentifier","src":"12435:9:87"},{"kind":"number","nativeSrc":"12446:2:87","nodeType":"YulLiteral","src":"12446:2:87","type":"","value":"32"}],"functionName":{"name":"add","nativeSrc":"12431:3:87","nodeType":"YulIdentifier","src":"12431:3:87"},"nativeSrc":"12431:18:87","nodeType":"YulFunctionCall","src":"12431:18:87"},"variableNames":[{"name":"tail","nativeSrc":"12423:4:87","nodeType":"YulIdentifier","src":"12423:4:87"}]},{"expression":{"arguments":[{"name":"headStart","nativeSrc":"12465:9:87","nodeType":"YulIdentifier","src":"12465:9:87"},{"name":"value0","nativeSrc":"12476:6:87","nodeType":"YulIdentifier","src":"12476:6:87"}],"functionName":{"name":"mstore","nativeSrc":"12458:6:87","nodeType":"YulIdentifier","src":"12458:6:87"},"nativeSrc":"12458:25:87","nodeType":"YulFunctionCall","src":"12458:25:87"},"nativeSrc":"12458:25:87","nodeType":"YulExpressionStatement","src":"12458:25:87"}]},"name":"abi_encode_tuple_t_int256__to_t_int256__fromStack_reversed","nativeSrc":"12314:175:87","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nativeSrc":"12382:9:87","nodeType":"YulTypedName","src":"12382:9:87","type":""},{"name":"value0","nativeSrc":"12393:6:87","nodeType":"YulTypedName","src":"12393:6:87","type":""}],"returnVariables":[{"name":"tail","nativeSrc":"12404:4:87","nodeType":"YulTypedName","src":"12404:4:87","type":""}],"src":"12314:175:87"},{"body":{"nativeSrc":"12573:168:87","nodeType":"YulBlock","src":"12573:168:87","statements":[{"body":{"nativeSrc":"12619:16:87","nodeType":"YulBlock","src":"12619:16:87","statements":[{"expression":{"arguments":[{"kind":"number","nativeSrc":"12628:1:87","nodeType":"YulLiteral","src":"12628:1:87","type":"","value":"0"},{"kind":"number","nativeSrc":"12631:1:87","nodeType":"YulLiteral","src":"12631:1:87","type":"","value":"0"}],"functionName":{"name":"revert","nativeSrc":"12621:6:87","nodeType":"YulIdentifier","src":"12621:6:87"},"nativeSrc":"12621:12:87","nodeType":"YulFunctionCall","src":"12621:12:87"},"nativeSrc":"12621:12:87","nodeType":"YulExpressionStatement","src":"12621:12:87"}]},"condition":{"arguments":[{"arguments":[{"name":"dataEnd","nativeSrc":"12594:7:87","nodeType":"YulIdentifier","src":"12594:7:87"},{"name":"headStart","nativeSrc":"12603:9:87","nodeType":"YulIdentifier","src":"12603:9:87"}],"functionName":{"name":"sub","nativeSrc":"12590:3:87","nodeType":"YulIdentifier","src":"12590:3:87"},"nativeSrc":"12590:23:87","nodeType":"YulFunctionCall","src":"12590:23:87"},{"kind":"number","nativeSrc":"12615:2:87","nodeType":"YulLiteral","src":"12615:2:87","type":"","value":"32"}],"functionName":{"name":"slt","nativeSrc":"12586:3:87","nodeType":"YulIdentifier","src":"12586:3:87"},"nativeSrc":"12586:32:87","nodeType":"YulFunctionCall","src":"12586:32:87"},"nativeSrc":"12583:52:87","nodeType":"YulIf","src":"12583:52:87"},{"nativeSrc":"12644:29:87","nodeType":"YulVariableDeclaration","src":"12644:29:87","value":{"arguments":[{"name":"headStart","nativeSrc":"12663:9:87","nodeType":"YulIdentifier","src":"12663:9:87"}],"functionName":{"name":"mload","nativeSrc":"12657:5:87","nodeType":"YulIdentifier","src":"12657:5:87"},"nativeSrc":"12657:16:87","nodeType":"YulFunctionCall","src":"12657:16:87"},"variables":[{"name":"value","nativeSrc":"12648:5:87","nodeType":"YulTypedName","src":"12648:5:87","type":""}]},{"expression":{"arguments":[{"name":"value","nativeSrc":"12705:5:87","nodeType":"YulIdentifier","src":"12705:5:87"}],"functionName":{"name":"validator_revert_uint8","nativeSrc":"12682:22:87","nodeType":"YulIdentifier","src":"12682:22:87"},"nativeSrc":"12682:29:87","nodeType":"YulFunctionCall","src":"12682:29:87"},"nativeSrc":"12682:29:87","nodeType":"YulExpressionStatement","src":"12682:29:87"},{"nativeSrc":"12720:15:87","nodeType":"YulAssignment","src":"12720:15:87","value":{"name":"value","nativeSrc":"12730:5:87","nodeType":"YulIdentifier","src":"12730:5:87"},"variableNames":[{"name":"value0","nativeSrc":"12720:6:87","nodeType":"YulIdentifier","src":"12720:6:87"}]}]},"name":"abi_decode_tuple_t_uint8_fromMemory","nativeSrc":"12494:247:87","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nativeSrc":"12539:9:87","nodeType":"YulTypedName","src":"12539:9:87","type":""},{"name":"dataEnd","nativeSrc":"12550:7:87","nodeType":"YulTypedName","src":"12550:7:87","type":""}],"returnVariables":[{"name":"value0","nativeSrc":"12562:6:87","nodeType":"YulTypedName","src":"12562:6:87","type":""}],"src":"12494:247:87"},{"body":{"nativeSrc":"12793:104:87","nodeType":"YulBlock","src":"12793:104:87","statements":[{"nativeSrc":"12803:39:87","nodeType":"YulAssignment","src":"12803:39:87","value":{"arguments":[{"arguments":[{"name":"x","nativeSrc":"12819:1:87","nodeType":"YulIdentifier","src":"12819:1:87"},{"kind":"number","nativeSrc":"12822:4:87","nodeType":"YulLiteral","src":"12822:4:87","type":"","value":"0xff"}],"functionName":{"name":"and","nativeSrc":"12815:3:87","nodeType":"YulIdentifier","src":"12815:3:87"},"nativeSrc":"12815:12:87","nodeType":"YulFunctionCall","src":"12815:12:87"},{"arguments":[{"name":"y","nativeSrc":"12833:1:87","nodeType":"YulIdentifier","src":"12833:1:87"},{"kind":"number","nativeSrc":"12836:4:87","nodeType":"YulLiteral","src":"12836:4:87","type":"","value":"0xff"}],"functionName":{"name":"and","nativeSrc":"12829:3:87","nodeType":"YulIdentifier","src":"12829:3:87"},"nativeSrc":"12829:12:87","nodeType":"YulFunctionCall","src":"12829:12:87"}],"functionName":{"name":"sub","nativeSrc":"12811:3:87","nodeType":"YulIdentifier","src":"12811:3:87"},"nativeSrc":"12811:31:87","nodeType":"YulFunctionCall","src":"12811:31:87"},"variableNames":[{"name":"diff","nativeSrc":"12803:4:87","nodeType":"YulIdentifier","src":"12803:4:87"}]},{"body":{"nativeSrc":"12869:22:87","nodeType":"YulBlock","src":"12869:22:87","statements":[{"expression":{"arguments":[],"functionName":{"name":"panic_error_0x11","nativeSrc":"12871:16:87","nodeType":"YulIdentifier","src":"12871:16:87"},"nativeSrc":"12871:18:87","nodeType":"YulFunctionCall","src":"12871:18:87"},"nativeSrc":"12871:18:87","nodeType":"YulExpressionStatement","src":"12871:18:87"}]},"condition":{"arguments":[{"name":"diff","nativeSrc":"12857:4:87","nodeType":"YulIdentifier","src":"12857:4:87"},{"kind":"number","nativeSrc":"12863:4:87","nodeType":"YulLiteral","src":"12863:4:87","type":"","value":"0xff"}],"functionName":{"name":"gt","nativeSrc":"12854:2:87","nodeType":"YulIdentifier","src":"12854:2:87"},"nativeSrc":"12854:14:87","nodeType":"YulFunctionCall","src":"12854:14:87"},"nativeSrc":"12851:40:87","nodeType":"YulIf","src":"12851:40:87"}]},"name":"checked_sub_t_uint8","nativeSrc":"12746:151:87","nodeType":"YulFunctionDefinition","parameters":[{"name":"x","nativeSrc":"12775:1:87","nodeType":"YulTypedName","src":"12775:1:87","type":""},{"name":"y","nativeSrc":"12778:1:87","nodeType":"YulTypedName","src":"12778:1:87","type":""}],"returnVariables":[{"name":"diff","nativeSrc":"12784:4:87","nodeType":"YulTypedName","src":"12784:4:87","type":""}],"src":"12746:151:87"},{"body":{"nativeSrc":"12971:306:87","nodeType":"YulBlock","src":"12971:306:87","statements":[{"nativeSrc":"12981:10:87","nodeType":"YulAssignment","src":"12981:10:87","value":{"kind":"number","nativeSrc":"12990:1:87","nodeType":"YulLiteral","src":"12990:1:87","type":"","value":"1"},"variableNames":[{"name":"power","nativeSrc":"12981:5:87","nodeType":"YulIdentifier","src":"12981:5:87"}]},{"nativeSrc":"13000:13:87","nodeType":"YulAssignment","src":"13000:13:87","value":{"name":"_base","nativeSrc":"13008:5:87","nodeType":"YulIdentifier","src":"13008:5:87"},"variableNames":[{"name":"base","nativeSrc":"13000:4:87","nodeType":"YulIdentifier","src":"13000:4:87"}]},{"body":{"nativeSrc":"13058:213:87","nodeType":"YulBlock","src":"13058:213:87","statements":[{"body":{"nativeSrc":"13100:22:87","nodeType":"YulBlock","src":"13100:22:87","statements":[{"expression":{"arguments":[],"functionName":{"name":"panic_error_0x11","nativeSrc":"13102:16:87","nodeType":"YulIdentifier","src":"13102:16:87"},"nativeSrc":"13102:18:87","nodeType":"YulFunctionCall","src":"13102:18:87"},"nativeSrc":"13102:18:87","nodeType":"YulExpressionStatement","src":"13102:18:87"}]},"condition":{"arguments":[{"name":"base","nativeSrc":"13078:4:87","nodeType":"YulIdentifier","src":"13078:4:87"},{"arguments":[{"name":"max","nativeSrc":"13088:3:87","nodeType":"YulIdentifier","src":"13088:3:87"},{"name":"base","nativeSrc":"13093:4:87","nodeType":"YulIdentifier","src":"13093:4:87"}],"functionName":{"name":"div","nativeSrc":"13084:3:87","nodeType":"YulIdentifier","src":"13084:3:87"},"nativeSrc":"13084:14:87","nodeType":"YulFunctionCall","src":"13084:14:87"}],"functionName":{"name":"gt","nativeSrc":"13075:2:87","nodeType":"YulIdentifier","src":"13075:2:87"},"nativeSrc":"13075:24:87","nodeType":"YulFunctionCall","src":"13075:24:87"},"nativeSrc":"13072:50:87","nodeType":"YulIf","src":"13072:50:87"},{"body":{"nativeSrc":"13155:29:87","nodeType":"YulBlock","src":"13155:29:87","statements":[{"nativeSrc":"13157:25:87","nodeType":"YulAssignment","src":"13157:25:87","value":{"arguments":[{"name":"power","nativeSrc":"13170:5:87","nodeType":"YulIdentifier","src":"13170:5:87"},{"name":"base","nativeSrc":"13177:4:87","nodeType":"YulIdentifier","src":"13177:4:87"}],"functionName":{"name":"mul","nativeSrc":"13166:3:87","nodeType":"YulIdentifier","src":"13166:3:87"},"nativeSrc":"13166:16:87","nodeType":"YulFunctionCall","src":"13166:16:87"},"variableNames":[{"name":"power","nativeSrc":"13157:5:87","nodeType":"YulIdentifier","src":"13157:5:87"}]}]},"condition":{"arguments":[{"name":"exponent","nativeSrc":"13142:8:87","nodeType":"YulIdentifier","src":"13142:8:87"},{"kind":"number","nativeSrc":"13152:1:87","nodeType":"YulLiteral","src":"13152:1:87","type":"","value":"1"}],"functionName":{"name":"and","nativeSrc":"13138:3:87","nodeType":"YulIdentifier","src":"13138:3:87"},"nativeSrc":"13138:16:87","nodeType":"YulFunctionCall","src":"13138:16:87"},"nativeSrc":"13135:49:87","nodeType":"YulIf","src":"13135:49:87"},{"nativeSrc":"13197:23:87","nodeType":"YulAssignment","src":"13197:23:87","value":{"arguments":[{"name":"base","nativeSrc":"13209:4:87","nodeType":"YulIdentifier","src":"13209:4:87"},{"name":"base","nativeSrc":"13215:4:87","nodeType":"YulIdentifier","src":"13215:4:87"}],"functionName":{"name":"mul","nativeSrc":"13205:3:87","nodeType":"YulIdentifier","src":"13205:3:87"},"nativeSrc":"13205:15:87","nodeType":"YulFunctionCall","src":"13205:15:87"},"variableNames":[{"name":"base","nativeSrc":"13197:4:87","nodeType":"YulIdentifier","src":"13197:4:87"}]},{"nativeSrc":"13233:28:87","nodeType":"YulAssignment","src":"13233:28:87","value":{"arguments":[{"kind":"number","nativeSrc":"13249:1:87","nodeType":"YulLiteral","src":"13249:1:87","type":"","value":"1"},{"name":"exponent","nativeSrc":"13252:8:87","nodeType":"YulIdentifier","src":"13252:8:87"}],"functionName":{"name":"shr","nativeSrc":"13245:3:87","nodeType":"YulIdentifier","src":"13245:3:87"},"nativeSrc":"13245:16:87","nodeType":"YulFunctionCall","src":"13245:16:87"},"variableNames":[{"name":"exponent","nativeSrc":"13233:8:87","nodeType":"YulIdentifier","src":"13233:8:87"}]}]},"condition":{"arguments":[{"name":"exponent","nativeSrc":"13033:8:87","nodeType":"YulIdentifier","src":"13033:8:87"},{"kind":"number","nativeSrc":"13043:1:87","nodeType":"YulLiteral","src":"13043:1:87","type":"","value":"1"}],"functionName":{"name":"gt","nativeSrc":"13030:2:87","nodeType":"YulIdentifier","src":"13030:2:87"},"nativeSrc":"13030:15:87","nodeType":"YulFunctionCall","src":"13030:15:87"},"nativeSrc":"13022:249:87","nodeType":"YulForLoop","post":{"nativeSrc":"13046:3:87","nodeType":"YulBlock","src":"13046:3:87","statements":[]},"pre":{"nativeSrc":"13026:3:87","nodeType":"YulBlock","src":"13026:3:87","statements":[]},"src":"13022:249:87"}]},"name":"checked_exp_helper","nativeSrc":"12902:375:87","nodeType":"YulFunctionDefinition","parameters":[{"name":"_base","nativeSrc":"12930:5:87","nodeType":"YulTypedName","src":"12930:5:87","type":""},{"name":"exponent","nativeSrc":"12937:8:87","nodeType":"YulTypedName","src":"12937:8:87","type":""},{"name":"max","nativeSrc":"12947:3:87","nodeType":"YulTypedName","src":"12947:3:87","type":""}],"returnVariables":[{"name":"power","nativeSrc":"12955:5:87","nodeType":"YulTypedName","src":"12955:5:87","type":""},{"name":"base","nativeSrc":"12962:4:87","nodeType":"YulTypedName","src":"12962:4:87","type":""}],"src":"12902:375:87"},{"body":{"nativeSrc":"13341:843:87","nodeType":"YulBlock","src":"13341:843:87","statements":[{"body":{"nativeSrc":"13379:52:87","nodeType":"YulBlock","src":"13379:52:87","statements":[{"nativeSrc":"13393:10:87","nodeType":"YulAssignment","src":"13393:10:87","value":{"kind":"number","nativeSrc":"13402:1:87","nodeType":"YulLiteral","src":"13402:1:87","type":"","value":"1"},"variableNames":[{"name":"power","nativeSrc":"13393:5:87","nodeType":"YulIdentifier","src":"13393:5:87"}]},{"nativeSrc":"13416:5:87","nodeType":"YulLeave","src":"13416:5:87"}]},"condition":{"arguments":[{"name":"exponent","nativeSrc":"13361:8:87","nodeType":"YulIdentifier","src":"13361:8:87"}],"functionName":{"name":"iszero","nativeSrc":"13354:6:87","nodeType":"YulIdentifier","src":"13354:6:87"},"nativeSrc":"13354:16:87","nodeType":"YulFunctionCall","src":"13354:16:87"},"nativeSrc":"13351:80:87","nodeType":"YulIf","src":"13351:80:87"},{"body":{"nativeSrc":"13464:52:87","nodeType":"YulBlock","src":"13464:52:87","statements":[{"nativeSrc":"13478:10:87","nodeType":"YulAssignment","src":"13478:10:87","value":{"kind":"number","nativeSrc":"13487:1:87","nodeType":"YulLiteral","src":"13487:1:87","type":"","value":"0"},"variableNames":[{"name":"power","nativeSrc":"13478:5:87","nodeType":"YulIdentifier","src":"13478:5:87"}]},{"nativeSrc":"13501:5:87","nodeType":"YulLeave","src":"13501:5:87"}]},"condition":{"arguments":[{"name":"base","nativeSrc":"13450:4:87","nodeType":"YulIdentifier","src":"13450:4:87"}],"functionName":{"name":"iszero","nativeSrc":"13443:6:87","nodeType":"YulIdentifier","src":"13443:6:87"},"nativeSrc":"13443:12:87","nodeType":"YulFunctionCall","src":"13443:12:87"},"nativeSrc":"13440:76:87","nodeType":"YulIf","src":"13440:76:87"},{"cases":[{"body":{"nativeSrc":"13552:52:87","nodeType":"YulBlock","src":"13552:52:87","statements":[{"nativeSrc":"13566:10:87","nodeType":"YulAssignment","src":"13566:10:87","value":{"kind":"number","nativeSrc":"13575:1:87","nodeType":"YulLiteral","src":"13575:1:87","type":"","value":"1"},"variableNames":[{"name":"power","nativeSrc":"13566:5:87","nodeType":"YulIdentifier","src":"13566:5:87"}]},{"nativeSrc":"13589:5:87","nodeType":"YulLeave","src":"13589:5:87"}]},"nativeSrc":"13545:59:87","nodeType":"YulCase","src":"13545:59:87","value":{"kind":"number","nativeSrc":"13550:1:87","nodeType":"YulLiteral","src":"13550:1:87","type":"","value":"1"}},{"body":{"nativeSrc":"13620:167:87","nodeType":"YulBlock","src":"13620:167:87","statements":[{"body":{"nativeSrc":"13655:22:87","nodeType":"YulBlock","src":"13655:22:87","statements":[{"expression":{"arguments":[],"functionName":{"name":"panic_error_0x11","nativeSrc":"13657:16:87","nodeType":"YulIdentifier","src":"13657:16:87"},"nativeSrc":"13657:18:87","nodeType":"YulFunctionCall","src":"13657:18:87"},"nativeSrc":"13657:18:87","nodeType":"YulExpressionStatement","src":"13657:18:87"}]},"condition":{"arguments":[{"name":"exponent","nativeSrc":"13640:8:87","nodeType":"YulIdentifier","src":"13640:8:87"},{"kind":"number","nativeSrc":"13650:3:87","nodeType":"YulLiteral","src":"13650:3:87","type":"","value":"255"}],"functionName":{"name":"gt","nativeSrc":"13637:2:87","nodeType":"YulIdentifier","src":"13637:2:87"},"nativeSrc":"13637:17:87","nodeType":"YulFunctionCall","src":"13637:17:87"},"nativeSrc":"13634:43:87","nodeType":"YulIf","src":"13634:43:87"},{"nativeSrc":"13690:25:87","nodeType":"YulAssignment","src":"13690:25:87","value":{"arguments":[{"name":"exponent","nativeSrc":"13703:8:87","nodeType":"YulIdentifier","src":"13703:8:87"},{"kind":"number","nativeSrc":"13713:1:87","nodeType":"YulLiteral","src":"13713:1:87","type":"","value":"1"}],"functionName":{"name":"shl","nativeSrc":"13699:3:87","nodeType":"YulIdentifier","src":"13699:3:87"},"nativeSrc":"13699:16:87","nodeType":"YulFunctionCall","src":"13699:16:87"},"variableNames":[{"name":"power","nativeSrc":"13690:5:87","nodeType":"YulIdentifier","src":"13690:5:87"}]},{"nativeSrc":"13728:11:87","nodeType":"YulVariableDeclaration","src":"13728:11:87","value":{"kind":"number","nativeSrc":"13738:1:87","nodeType":"YulLiteral","src":"13738:1:87","type":"","value":"0"},"variables":[{"name":"_1","nativeSrc":"13732:2:87","nodeType":"YulTypedName","src":"13732:2:87","type":""}]},{"nativeSrc":"13752:7:87","nodeType":"YulAssignment","src":"13752:7:87","value":{"kind":"number","nativeSrc":"13758:1:87","nodeType":"YulLiteral","src":"13758:1:87","type":"","value":"0"},"variableNames":[{"name":"_1","nativeSrc":"13752:2:87","nodeType":"YulIdentifier","src":"13752:2:87"}]},{"nativeSrc":"13772:5:87","nodeType":"YulLeave","src":"13772:5:87"}]},"nativeSrc":"13613:174:87","nodeType":"YulCase","src":"13613:174:87","value":{"kind":"number","nativeSrc":"13618:1:87","nodeType":"YulLiteral","src":"13618:1:87","type":"","value":"2"}}],"expression":{"name":"base","nativeSrc":"13532:4:87","nodeType":"YulIdentifier","src":"13532:4:87"},"nativeSrc":"13525:262:87","nodeType":"YulSwitch","src":"13525:262:87"},{"body":{"nativeSrc":"13885:114:87","nodeType":"YulBlock","src":"13885:114:87","statements":[{"nativeSrc":"13899:28:87","nodeType":"YulAssignment","src":"13899:28:87","value":{"arguments":[{"name":"base","nativeSrc":"13912:4:87","nodeType":"YulIdentifier","src":"13912:4:87"},{"name":"exponent","nativeSrc":"13918:8:87","nodeType":"YulIdentifier","src":"13918:8:87"}],"functionName":{"name":"exp","nativeSrc":"13908:3:87","nodeType":"YulIdentifier","src":"13908:3:87"},"nativeSrc":"13908:19:87","nodeType":"YulFunctionCall","src":"13908:19:87"},"variableNames":[{"name":"power","nativeSrc":"13899:5:87","nodeType":"YulIdentifier","src":"13899:5:87"}]},{"nativeSrc":"13940:11:87","nodeType":"YulVariableDeclaration","src":"13940:11:87","value":{"kind":"number","nativeSrc":"13950:1:87","nodeType":"YulLiteral","src":"13950:1:87","type":"","value":"0"},"variables":[{"name":"_2","nativeSrc":"13944:2:87","nodeType":"YulTypedName","src":"13944:2:87","type":""}]},{"nativeSrc":"13964:7:87","nodeType":"YulAssignment","src":"13964:7:87","value":{"kind":"number","nativeSrc":"13970:1:87","nodeType":"YulLiteral","src":"13970:1:87","type":"","value":"0"},"variableNames":[{"name":"_2","nativeSrc":"13964:2:87","nodeType":"YulIdentifier","src":"13964:2:87"}]},{"nativeSrc":"13984:5:87","nodeType":"YulLeave","src":"13984:5:87"}]},"condition":{"arguments":[{"arguments":[{"arguments":[{"name":"base","nativeSrc":"13809:4:87","nodeType":"YulIdentifier","src":"13809:4:87"},{"kind":"number","nativeSrc":"13815:2:87","nodeType":"YulLiteral","src":"13815:2:87","type":"","value":"11"}],"functionName":{"name":"lt","nativeSrc":"13806:2:87","nodeType":"YulIdentifier","src":"13806:2:87"},"nativeSrc":"13806:12:87","nodeType":"YulFunctionCall","src":"13806:12:87"},{"arguments":[{"name":"exponent","nativeSrc":"13823:8:87","nodeType":"YulIdentifier","src":"13823:8:87"},{"kind":"number","nativeSrc":"13833:2:87","nodeType":"YulLiteral","src":"13833:2:87","type":"","value":"78"}],"functionName":{"name":"lt","nativeSrc":"13820:2:87","nodeType":"YulIdentifier","src":"13820:2:87"},"nativeSrc":"13820:16:87","nodeType":"YulFunctionCall","src":"13820:16:87"}],"functionName":{"name":"and","nativeSrc":"13802:3:87","nodeType":"YulIdentifier","src":"13802:3:87"},"nativeSrc":"13802:35:87","nodeType":"YulFunctionCall","src":"13802:35:87"},{"arguments":[{"arguments":[{"name":"base","nativeSrc":"13846:4:87","nodeType":"YulIdentifier","src":"13846:4:87"},{"kind":"number","nativeSrc":"13852:3:87","nodeType":"YulLiteral","src":"13852:3:87","type":"","value":"307"}],"functionName":{"name":"lt","nativeSrc":"13843:2:87","nodeType":"YulIdentifier","src":"13843:2:87"},"nativeSrc":"13843:13:87","nodeType":"YulFunctionCall","src":"13843:13:87"},{"arguments":[{"name":"exponent","nativeSrc":"13861:8:87","nodeType":"YulIdentifier","src":"13861:8:87"},{"kind":"number","nativeSrc":"13871:2:87","nodeType":"YulLiteral","src":"13871:2:87","type":"","value":"32"}],"functionName":{"name":"lt","nativeSrc":"13858:2:87","nodeType":"YulIdentifier","src":"13858:2:87"},"nativeSrc":"13858:16:87","nodeType":"YulFunctionCall","src":"13858:16:87"}],"functionName":{"name":"and","nativeSrc":"13839:3:87","nodeType":"YulIdentifier","src":"13839:3:87"},"nativeSrc":"13839:36:87","nodeType":"YulFunctionCall","src":"13839:36:87"}],"functionName":{"name":"or","nativeSrc":"13799:2:87","nodeType":"YulIdentifier","src":"13799:2:87"},"nativeSrc":"13799:77:87","nodeType":"YulFunctionCall","src":"13799:77:87"},"nativeSrc":"13796:203:87","nodeType":"YulIf","src":"13796:203:87"},{"nativeSrc":"14008:65:87","nodeType":"YulVariableDeclaration","src":"14008:65:87","value":{"arguments":[{"name":"base","nativeSrc":"14050:4:87","nodeType":"YulIdentifier","src":"14050:4:87"},{"name":"exponent","nativeSrc":"14056:8:87","nodeType":"YulIdentifier","src":"14056:8:87"},{"arguments":[{"kind":"number","nativeSrc":"14070:1:87","nodeType":"YulLiteral","src":"14070:1:87","type":"","value":"0"}],"functionName":{"name":"not","nativeSrc":"14066:3:87","nodeType":"YulIdentifier","src":"14066:3:87"},"nativeSrc":"14066:6:87","nodeType":"YulFunctionCall","src":"14066:6:87"}],"functionName":{"name":"checked_exp_helper","nativeSrc":"14031:18:87","nodeType":"YulIdentifier","src":"14031:18:87"},"nativeSrc":"14031:42:87","nodeType":"YulFunctionCall","src":"14031:42:87"},"variables":[{"name":"power_1","nativeSrc":"14012:7:87","nodeType":"YulTypedName","src":"14012:7:87","type":""},{"name":"base_1","nativeSrc":"14021:6:87","nodeType":"YulTypedName","src":"14021:6:87","type":""}]},{"body":{"nativeSrc":"14118:22:87","nodeType":"YulBlock","src":"14118:22:87","statements":[{"expression":{"arguments":[],"functionName":{"name":"panic_error_0x11","nativeSrc":"14120:16:87","nodeType":"YulIdentifier","src":"14120:16:87"},"nativeSrc":"14120:18:87","nodeType":"YulFunctionCall","src":"14120:18:87"},"nativeSrc":"14120:18:87","nodeType":"YulExpressionStatement","src":"14120:18:87"}]},"condition":{"arguments":[{"name":"power_1","nativeSrc":"14088:7:87","nodeType":"YulIdentifier","src":"14088:7:87"},{"arguments":[{"arguments":[{"kind":"number","nativeSrc":"14105:1:87","nodeType":"YulLiteral","src":"14105:1:87","type":"","value":"0"}],"functionName":{"name":"not","nativeSrc":"14101:3:87","nodeType":"YulIdentifier","src":"14101:3:87"},"nativeSrc":"14101:6:87","nodeType":"YulFunctionCall","src":"14101:6:87"},{"name":"base_1","nativeSrc":"14109:6:87","nodeType":"YulIdentifier","src":"14109:6:87"}],"functionName":{"name":"div","nativeSrc":"14097:3:87","nodeType":"YulIdentifier","src":"14097:3:87"},"nativeSrc":"14097:19:87","nodeType":"YulFunctionCall","src":"14097:19:87"}],"functionName":{"name":"gt","nativeSrc":"14085:2:87","nodeType":"YulIdentifier","src":"14085:2:87"},"nativeSrc":"14085:32:87","nodeType":"YulFunctionCall","src":"14085:32:87"},"nativeSrc":"14082:58:87","nodeType":"YulIf","src":"14082:58:87"},{"nativeSrc":"14149:29:87","nodeType":"YulAssignment","src":"14149:29:87","value":{"arguments":[{"name":"power_1","nativeSrc":"14162:7:87","nodeType":"YulIdentifier","src":"14162:7:87"},{"name":"base_1","nativeSrc":"14171:6:87","nodeType":"YulIdentifier","src":"14171:6:87"}],"functionName":{"name":"mul","nativeSrc":"14158:3:87","nodeType":"YulIdentifier","src":"14158:3:87"},"nativeSrc":"14158:20:87","nodeType":"YulFunctionCall","src":"14158:20:87"},"variableNames":[{"name":"power","nativeSrc":"14149:5:87","nodeType":"YulIdentifier","src":"14149:5:87"}]}]},"name":"checked_exp_unsigned","nativeSrc":"13282:902:87","nodeType":"YulFunctionDefinition","parameters":[{"name":"base","nativeSrc":"13312:4:87","nodeType":"YulTypedName","src":"13312:4:87","type":""},{"name":"exponent","nativeSrc":"13318:8:87","nodeType":"YulTypedName","src":"13318:8:87","type":""}],"returnVariables":[{"name":"power","nativeSrc":"13331:5:87","nodeType":"YulTypedName","src":"13331:5:87","type":""}],"src":"13282:902:87"},{"body":{"nativeSrc":"14257:72:87","nodeType":"YulBlock","src":"14257:72:87","statements":[{"nativeSrc":"14267:56:87","nodeType":"YulAssignment","src":"14267:56:87","value":{"arguments":[{"name":"base","nativeSrc":"14297:4:87","nodeType":"YulIdentifier","src":"14297:4:87"},{"arguments":[{"name":"exponent","nativeSrc":"14307:8:87","nodeType":"YulIdentifier","src":"14307:8:87"},{"kind":"number","nativeSrc":"14317:4:87","nodeType":"YulLiteral","src":"14317:4:87","type":"","value":"0xff"}],"functionName":{"name":"and","nativeSrc":"14303:3:87","nodeType":"YulIdentifier","src":"14303:3:87"},"nativeSrc":"14303:19:87","nodeType":"YulFunctionCall","src":"14303:19:87"}],"functionName":{"name":"checked_exp_unsigned","nativeSrc":"14276:20:87","nodeType":"YulIdentifier","src":"14276:20:87"},"nativeSrc":"14276:47:87","nodeType":"YulFunctionCall","src":"14276:47:87"},"variableNames":[{"name":"power","nativeSrc":"14267:5:87","nodeType":"YulIdentifier","src":"14267:5:87"}]}]},"name":"checked_exp_t_uint256_t_uint8","nativeSrc":"14189:140:87","nodeType":"YulFunctionDefinition","parameters":[{"name":"base","nativeSrc":"14228:4:87","nodeType":"YulTypedName","src":"14228:4:87","type":""},{"name":"exponent","nativeSrc":"14234:8:87","nodeType":"YulTypedName","src":"14234:8:87","type":""}],"returnVariables":[{"name":"power","nativeSrc":"14247:5:87","nodeType":"YulTypedName","src":"14247:5:87","type":""}],"src":"14189:140:87"},{"body":{"nativeSrc":"14386:116:87","nodeType":"YulBlock","src":"14386:116:87","statements":[{"nativeSrc":"14396:20:87","nodeType":"YulAssignment","src":"14396:20:87","value":{"arguments":[{"name":"x","nativeSrc":"14411:1:87","nodeType":"YulIdentifier","src":"14411:1:87"},{"name":"y","nativeSrc":"14414:1:87","nodeType":"YulIdentifier","src":"14414:1:87"}],"functionName":{"name":"mul","nativeSrc":"14407:3:87","nodeType":"YulIdentifier","src":"14407:3:87"},"nativeSrc":"14407:9:87","nodeType":"YulFunctionCall","src":"14407:9:87"},"variableNames":[{"name":"product","nativeSrc":"14396:7:87","nodeType":"YulIdentifier","src":"14396:7:87"}]},{"body":{"nativeSrc":"14474:22:87","nodeType":"YulBlock","src":"14474:22:87","statements":[{"expression":{"arguments":[],"functionName":{"name":"panic_error_0x11","nativeSrc":"14476:16:87","nodeType":"YulIdentifier","src":"14476:16:87"},"nativeSrc":"14476:18:87","nodeType":"YulFunctionCall","src":"14476:18:87"},"nativeSrc":"14476:18:87","nodeType":"YulExpressionStatement","src":"14476:18:87"}]},"condition":{"arguments":[{"arguments":[{"arguments":[{"name":"x","nativeSrc":"14445:1:87","nodeType":"YulIdentifier","src":"14445:1:87"}],"functionName":{"name":"iszero","nativeSrc":"14438:6:87","nodeType":"YulIdentifier","src":"14438:6:87"},"nativeSrc":"14438:9:87","nodeType":"YulFunctionCall","src":"14438:9:87"},{"arguments":[{"name":"y","nativeSrc":"14452:1:87","nodeType":"YulIdentifier","src":"14452:1:87"},{"arguments":[{"name":"product","nativeSrc":"14459:7:87","nodeType":"YulIdentifier","src":"14459:7:87"},{"name":"x","nativeSrc":"14468:1:87","nodeType":"YulIdentifier","src":"14468:1:87"}],"functionName":{"name":"div","nativeSrc":"14455:3:87","nodeType":"YulIdentifier","src":"14455:3:87"},"nativeSrc":"14455:15:87","nodeType":"YulFunctionCall","src":"14455:15:87"}],"functionName":{"name":"eq","nativeSrc":"14449:2:87","nodeType":"YulIdentifier","src":"14449:2:87"},"nativeSrc":"14449:22:87","nodeType":"YulFunctionCall","src":"14449:22:87"}],"functionName":{"name":"or","nativeSrc":"14435:2:87","nodeType":"YulIdentifier","src":"14435:2:87"},"nativeSrc":"14435:37:87","nodeType":"YulFunctionCall","src":"14435:37:87"}],"functionName":{"name":"iszero","nativeSrc":"14428:6:87","nodeType":"YulIdentifier","src":"14428:6:87"},"nativeSrc":"14428:45:87","nodeType":"YulFunctionCall","src":"14428:45:87"},"nativeSrc":"14425:71:87","nodeType":"YulIf","src":"14425:71:87"}]},"name":"checked_mul_t_uint256","nativeSrc":"14334:168:87","nodeType":"YulFunctionDefinition","parameters":[{"name":"x","nativeSrc":"14365:1:87","nodeType":"YulTypedName","src":"14365:1:87","type":""},{"name":"y","nativeSrc":"14368:1:87","nodeType":"YulTypedName","src":"14368:1:87","type":""}],"returnVariables":[{"name":"product","nativeSrc":"14374:7:87","nodeType":"YulTypedName","src":"14374:7:87","type":""}],"src":"14334:168:87"},{"body":{"nativeSrc":"14539:95:87","nodeType":"YulBlock","src":"14539:95:87","statements":[{"expression":{"arguments":[{"kind":"number","nativeSrc":"14556:1:87","nodeType":"YulLiteral","src":"14556:1:87","type":"","value":"0"},{"arguments":[{"kind":"number","nativeSrc":"14563:3:87","nodeType":"YulLiteral","src":"14563:3:87","type":"","value":"224"},{"kind":"number","nativeSrc":"14568:10:87","nodeType":"YulLiteral","src":"14568:10:87","type":"","value":"0x4e487b71"}],"functionName":{"name":"shl","nativeSrc":"14559:3:87","nodeType":"YulIdentifier","src":"14559:3:87"},"nativeSrc":"14559:20:87","nodeType":"YulFunctionCall","src":"14559:20:87"}],"functionName":{"name":"mstore","nativeSrc":"14549:6:87","nodeType":"YulIdentifier","src":"14549:6:87"},"nativeSrc":"14549:31:87","nodeType":"YulFunctionCall","src":"14549:31:87"},"nativeSrc":"14549:31:87","nodeType":"YulExpressionStatement","src":"14549:31:87"},{"expression":{"arguments":[{"kind":"number","nativeSrc":"14596:1:87","nodeType":"YulLiteral","src":"14596:1:87","type":"","value":"4"},{"kind":"number","nativeSrc":"14599:4:87","nodeType":"YulLiteral","src":"14599:4:87","type":"","value":"0x12"}],"functionName":{"name":"mstore","nativeSrc":"14589:6:87","nodeType":"YulIdentifier","src":"14589:6:87"},"nativeSrc":"14589:15:87","nodeType":"YulFunctionCall","src":"14589:15:87"},"nativeSrc":"14589:15:87","nodeType":"YulExpressionStatement","src":"14589:15:87"},{"expression":{"arguments":[{"kind":"number","nativeSrc":"14620:1:87","nodeType":"YulLiteral","src":"14620:1:87","type":"","value":"0"},{"kind":"number","nativeSrc":"14623:4:87","nodeType":"YulLiteral","src":"14623:4:87","type":"","value":"0x24"}],"functionName":{"name":"revert","nativeSrc":"14613:6:87","nodeType":"YulIdentifier","src":"14613:6:87"},"nativeSrc":"14613:15:87","nodeType":"YulFunctionCall","src":"14613:15:87"},"nativeSrc":"14613:15:87","nodeType":"YulExpressionStatement","src":"14613:15:87"}]},"name":"panic_error_0x12","nativeSrc":"14507:127:87","nodeType":"YulFunctionDefinition","src":"14507:127:87"},{"body":{"nativeSrc":"14685:171:87","nodeType":"YulBlock","src":"14685:171:87","statements":[{"body":{"nativeSrc":"14716:111:87","nodeType":"YulBlock","src":"14716:111:87","statements":[{"expression":{"arguments":[{"kind":"number","nativeSrc":"14737:1:87","nodeType":"YulLiteral","src":"14737:1:87","type":"","value":"0"},{"arguments":[{"kind":"number","nativeSrc":"14744:3:87","nodeType":"YulLiteral","src":"14744:3:87","type":"","value":"224"},{"kind":"number","nativeSrc":"14749:10:87","nodeType":"YulLiteral","src":"14749:10:87","type":"","value":"0x4e487b71"}],"functionName":{"name":"shl","nativeSrc":"14740:3:87","nodeType":"YulIdentifier","src":"14740:3:87"},"nativeSrc":"14740:20:87","nodeType":"YulFunctionCall","src":"14740:20:87"}],"functionName":{"name":"mstore","nativeSrc":"14730:6:87","nodeType":"YulIdentifier","src":"14730:6:87"},"nativeSrc":"14730:31:87","nodeType":"YulFunctionCall","src":"14730:31:87"},"nativeSrc":"14730:31:87","nodeType":"YulExpressionStatement","src":"14730:31:87"},{"expression":{"arguments":[{"kind":"number","nativeSrc":"14781:1:87","nodeType":"YulLiteral","src":"14781:1:87","type":"","value":"4"},{"kind":"number","nativeSrc":"14784:4:87","nodeType":"YulLiteral","src":"14784:4:87","type":"","value":"0x12"}],"functionName":{"name":"mstore","nativeSrc":"14774:6:87","nodeType":"YulIdentifier","src":"14774:6:87"},"nativeSrc":"14774:15:87","nodeType":"YulFunctionCall","src":"14774:15:87"},"nativeSrc":"14774:15:87","nodeType":"YulExpressionStatement","src":"14774:15:87"},{"expression":{"arguments":[{"kind":"number","nativeSrc":"14809:1:87","nodeType":"YulLiteral","src":"14809:1:87","type":"","value":"0"},{"kind":"number","nativeSrc":"14812:4:87","nodeType":"YulLiteral","src":"14812:4:87","type":"","value":"0x24"}],"functionName":{"name":"revert","nativeSrc":"14802:6:87","nodeType":"YulIdentifier","src":"14802:6:87"},"nativeSrc":"14802:15:87","nodeType":"YulFunctionCall","src":"14802:15:87"},"nativeSrc":"14802:15:87","nodeType":"YulExpressionStatement","src":"14802:15:87"}]},"condition":{"arguments":[{"name":"y","nativeSrc":"14705:1:87","nodeType":"YulIdentifier","src":"14705:1:87"}],"functionName":{"name":"iszero","nativeSrc":"14698:6:87","nodeType":"YulIdentifier","src":"14698:6:87"},"nativeSrc":"14698:9:87","nodeType":"YulFunctionCall","src":"14698:9:87"},"nativeSrc":"14695:132:87","nodeType":"YulIf","src":"14695:132:87"},{"nativeSrc":"14836:14:87","nodeType":"YulAssignment","src":"14836:14:87","value":{"arguments":[{"name":"x","nativeSrc":"14845:1:87","nodeType":"YulIdentifier","src":"14845:1:87"},{"name":"y","nativeSrc":"14848:1:87","nodeType":"YulIdentifier","src":"14848:1:87"}],"functionName":{"name":"div","nativeSrc":"14841:3:87","nodeType":"YulIdentifier","src":"14841:3:87"},"nativeSrc":"14841:9:87","nodeType":"YulFunctionCall","src":"14841:9:87"},"variableNames":[{"name":"r","nativeSrc":"14836:1:87","nodeType":"YulIdentifier","src":"14836:1:87"}]}]},"name":"checked_div_t_uint256","nativeSrc":"14639:217:87","nodeType":"YulFunctionDefinition","parameters":[{"name":"x","nativeSrc":"14670:1:87","nodeType":"YulTypedName","src":"14670:1:87","type":""},{"name":"y","nativeSrc":"14673:1:87","nodeType":"YulTypedName","src":"14673:1:87","type":""}],"returnVariables":[{"name":"r","nativeSrc":"14679:1:87","nodeType":"YulTypedName","src":"14679:1:87","type":""}],"src":"14639:217:87"}]},"contents":"{\n    { }\n    function validator_revert_uint8(value)\n    {\n        if iszero(eq(value, and(value, 0xff))) { revert(0, 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 allocate_memory_1712() -> memPtr\n    {\n        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    }\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, 0xffffffffffffffff), lt(newFreePtr, memPtr)) { panic_error_0x41() }\n        mstore(64, newFreePtr)\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), not(31)), 0x20)\n    }\n    function abi_decode_bytes(offset, end) -> array\n    {\n        if iszero(slt(add(offset, 0x1f), end)) { revert(0, 0) }\n        let length := calldataload(offset)\n        let array_1 := allocate_memory(array_allocation_size_bytes(length))\n        mstore(array_1, length)\n        if gt(add(add(offset, length), 0x20), end) { revert(0, 0) }\n        calldatacopy(add(array_1, 0x20), add(offset, 0x20), length)\n        mstore(add(add(array_1, length), 0x20), 0)\n        array := array_1\n    }\n    function abi_decode_tuple_t_uint8t_bytes_memory_ptr(headStart, dataEnd) -> value0, value1\n    {\n        if slt(sub(dataEnd, headStart), 64) { revert(0, 0) }\n        let value := calldataload(headStart)\n        validator_revert_uint8(value)\n        value0 := value\n        let offset := calldataload(add(headStart, 32))\n        if gt(offset, 0xffffffffffffffff) { revert(0, 0) }\n        value1 := abi_decode_bytes(add(headStart, offset), dataEnd)\n    }\n    function abi_encode_bytes(value, pos) -> end\n    {\n        let length := mload(value)\n        mstore(pos, length)\n        mcopy(add(pos, 0x20), add(value, 0x20), length)\n        mstore(add(add(pos, length), 0x20), 0)\n        end := add(add(pos, and(add(length, 31), not(31))), 0x20)\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_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_contract$_AggregatorV3Interface_$20542__to_t_address__fromStack_reversed(headStart, value0) -> tail\n    {\n        tail := add(headStart, 32)\n        mstore(headStart, and(value0, sub(shl(160, 1), 1)))\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_address(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, sub(shl(160, 1), 1)))) { revert(0, 0) }\n        value0 := value\n    }\n    function panic_error_0x21()\n    {\n        mstore(0, shl(224, 0x4e487b71))\n        mstore(4, 0x21)\n        revert(0, 0x24)\n    }\n    function abi_encode_struct_SwapConfig(value, pos) -> end\n    {\n        let _1 := mload(value)\n        if iszero(lt(_1, 3))\n        {\n            mstore(0, shl(224, 0x4e487b71))\n            mstore(4, 0x21)\n            revert(0, 0x24)\n        }\n        mstore(pos, _1)\n        mstore(add(pos, 0x20), mload(add(value, 0x20)))\n        let memberValue0 := mload(add(value, 0x40))\n        mstore(add(pos, 0x40), 0x60)\n        end := abi_encode_bytes(memberValue0, add(pos, 0x60))\n    }\n    function abi_encode_tuple_t_struct$_SwapConfig_$1113_memory_ptr__to_t_struct$_SwapConfig_$1113_memory_ptr__fromStack_reversed(headStart, value0) -> tail\n    {\n        mstore(headStart, 32)\n        tail := abi_encode_struct_SwapConfig(value0, add(headStart, 32))\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        if iszero(eq(value, iszero(iszero(value)))) { revert(0, 0) }\n        value0 := value\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_address__to_t_address__fromStack_reversed(headStart, value0) -> tail\n    {\n        tail := add(headStart, 32)\n        mstore(headStart, and(value0, sub(shl(160, 1), 1)))\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        if gt(offset, 0xffffffffffffffff) { revert(0, 0) }\n        value0 := abi_decode_bytes(add(headStart, offset), 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        let value := 0\n        value := mload(headStart)\n        value0 := value\n    }\n    function abi_encode_tuple_t_struct$_SwapConfig_$1113_memory_ptr_t_address_t_address_t_uint256_t_uint256__to_t_struct$_SwapConfig_$1113_memory_ptr_t_address_t_address_t_uint256_t_uint256__fromStack_library_reversed(headStart, value4, value3, value2, value1, value0) -> tail\n    {\n        mstore(headStart, 160)\n        tail := abi_encode_struct_SwapConfig(value0, add(headStart, 160))\n        mstore(add(headStart, 32), and(value1, sub(shl(160, 1), 1)))\n        mstore(add(headStart, 64), and(value2, sub(shl(160, 1), 1)))\n        mstore(add(headStart, 96), value3)\n        mstore(add(headStart, 128), value4)\n    }\n    function abi_decode_bytes_fromMemory(offset, end) -> array\n    {\n        if iszero(slt(add(offset, 0x1f), end)) { revert(0, 0) }\n        let length := mload(offset)\n        let array_1 := allocate_memory(array_allocation_size_bytes(length))\n        mstore(array_1, length)\n        if gt(add(add(offset, length), 0x20), end) { revert(0, 0) }\n        mcopy(add(array_1, 0x20), add(offset, 0x20), length)\n        mstore(add(add(array_1, length), 0x20), 0)\n        array := array_1\n    }\n    function abi_decode_tuple_t_bytes_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        value0 := abi_decode_bytes_fromMemory(add(headStart, offset), dataEnd)\n    }\n    function abi_decode_tuple_t_struct$_SwapConfig_$1113_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 slt(sub(dataEnd, _1), 0x60) { revert(0, 0) }\n        let value := allocate_memory_1712()\n        let value_1 := mload(_1)\n        if iszero(lt(value_1, 3)) { revert(0, 0) }\n        mstore(value, value_1)\n        let value_2 := 0\n        value_2 := mload(add(_1, 32))\n        mstore(add(value, 32), value_2)\n        let offset_1 := mload(add(_1, 64))\n        if gt(offset_1, 0xffffffffffffffff) { revert(0, 0) }\n        mstore(add(value, 64), abi_decode_bytes_fromMemory(add(_1, offset_1), dataEnd))\n        value0 := value\n    }\n    function abi_encode_tuple_t_struct$_SwapConfig_$1113_memory_ptr__to_t_struct$_SwapConfig_$1113_memory_ptr__fromStack_library_reversed(headStart, value0) -> tail\n    {\n        mstore(headStart, 32)\n        tail := abi_encode_struct_SwapConfig(value0, add(headStart, 32))\n    }\n    function abi_encode_tuple_t_struct$_SwapConfig_$1113_memory_ptr_t_struct$_SwapConfig_$1113_memory_ptr__to_t_struct$_SwapConfig_$1113_memory_ptr_t_struct$_SwapConfig_$1113_memory_ptr__fromStack_reversed(headStart, value1, value0) -> tail\n    {\n        mstore(headStart, 64)\n        let tail_1 := abi_encode_struct_SwapConfig(value0, add(headStart, 64))\n        mstore(add(headStart, 32), sub(tail_1, headStart))\n        tail := abi_encode_struct_SwapConfig(value1, tail_1)\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 array_dataslot_bytes_storage(ptr) -> data\n    {\n        mstore(0, ptr)\n        data := keccak256(0, 0x20)\n    }\n    function clean_up_bytearray_end_slots_bytes_storage(array, len, startIndex)\n    {\n        if gt(len, 31)\n        {\n            mstore(0, array)\n            let data := keccak256(0, 0x20)\n            let deleteStart := add(data, shr(5, add(startIndex, 31)))\n            if lt(startIndex, 0x20) { deleteStart := data }\n            let _1 := add(data, shr(5, add(len, 31)))\n            let start := deleteStart\n            for { } lt(start, _1) { start := add(start, 1) }\n            { sstore(start, 0) }\n        }\n    }\n    function extract_used_part_and_set_length_of_short_byte_array(data, len) -> used\n    {\n        used := or(and(data, not(shr(shl(3, len), not(0)))), shl(1, len))\n    }\n    function copy_byte_array_to_storage_from_t_bytes_memory_ptr_to_t_bytes_storage(slot, src)\n    {\n        let newLen := mload(src)\n        if gt(newLen, 0xffffffffffffffff) { panic_error_0x41() }\n        clean_up_bytearray_end_slots_bytes_storage(slot, extract_byte_array_length(sload(slot)), newLen)\n        let srcOffset := 0\n        srcOffset := 0x20\n        switch gt(newLen, 31)\n        case 1 {\n            let loopEnd := and(newLen, not(31))\n            let dstPtr := array_dataslot_bytes_storage(slot)\n            let i := 0\n            for { } lt(i, loopEnd) { i := add(i, 0x20) }\n            {\n                sstore(dstPtr, mload(add(src, srcOffset)))\n                dstPtr := add(dstPtr, 1)\n                srcOffset := add(srcOffset, 0x20)\n            }\n            if lt(loopEnd, newLen)\n            {\n                let lastValue := mload(add(src, srcOffset))\n                sstore(dstPtr, and(lastValue, not(shr(and(shl(3, newLen), 248), not(0)))))\n            }\n            sstore(slot, add(shl(1, newLen), 1))\n        }\n        default {\n            let value := 0\n            if newLen\n            {\n                value := mload(add(src, srcOffset))\n            }\n            sstore(slot, extract_used_part_and_set_length_of_short_byte_array(value, newLen))\n        }\n    }\n    function abi_decode_uint80_fromMemory(offset) -> value\n    {\n        value := mload(offset)\n        if iszero(eq(value, and(value, 0xffffffffffffffffffff))) { revert(0, 0) }\n    }\n    function abi_decode_tuple_t_uint80t_int256t_uint256t_uint256t_uint80_fromMemory(headStart, dataEnd) -> value0, value1, value2, value3, value4\n    {\n        if slt(sub(dataEnd, headStart), 160) { revert(0, 0) }\n        value0 := abi_decode_uint80_fromMemory(headStart)\n        value1 := mload(add(headStart, 32))\n        let value := 0\n        value := mload(add(headStart, 64))\n        value2 := value\n        let value_1 := 0\n        value_1 := mload(add(headStart, 96))\n        value3 := value_1\n        value4 := abi_decode_uint80_fromMemory(add(headStart, 128))\n    }\n    function panic_error_0x11()\n    {\n        mstore(0, shl(224, 0x4e487b71))\n        mstore(4, 0x11)\n        revert(0, 0x24)\n    }\n    function checked_sub_t_uint256(x, y) -> diff\n    {\n        diff := sub(x, y)\n        if gt(diff, x) { panic_error_0x11() }\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_int256__to_t_int256__fromStack_reversed(headStart, value0) -> tail\n    {\n        tail := add(headStart, 32)\n        mstore(headStart, value0)\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        validator_revert_uint8(value)\n        value0 := value\n    }\n    function checked_sub_t_uint8(x, y) -> diff\n    {\n        diff := sub(and(x, 0xff), and(y, 0xff))\n        if gt(diff, 0xff) { panic_error_0x11() }\n    }\n    function checked_exp_helper(_base, exponent, max) -> power, base\n    {\n        power := 1\n        base := _base\n        for { } gt(exponent, 1) { }\n        {\n            if gt(base, div(max, base)) { panic_error_0x11() }\n            if and(exponent, 1) { power := mul(power, base) }\n            base := mul(base, base)\n            exponent := shr(1, exponent)\n        }\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            let _1 := 0\n            _1 := 0\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            let _2 := 0\n            _2 := 0\n            leave\n        }\n        let power_1, base_1 := checked_exp_helper(base, exponent, not(0))\n        if gt(power_1, div(not(0), base_1)) { panic_error_0x11() }\n        power := mul(power_1, base_1)\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_mul_t_uint256(x, y) -> product\n    {\n        product := mul(x, y)\n        if iszero(or(iszero(x), eq(y, div(product, x)))) { panic_error_0x11() }\n    }\n    function panic_error_0x12()\n    {\n        mstore(0, shl(224, 0x4e487b71))\n        mstore(4, 0x12)\n        revert(0, 0x24)\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}","id":87,"language":"Yul","name":"#utility.yul"}],"immutableReferences":{"22223":[{"length":32,"start":323},{"length":32,"start":985}],"22226":[{"length":32,"start":459},{"length":32,"start":935}],"22228":[{"length":32,"start":498},{"length":32,"start":3130},{"length":32,"start":3179}],"23946":[{"length":32,"start":780},{"length":32,"start":1041},{"length":32,"start":1829},{"length":32,"start":1953},{"length":32,"start":2078}],"23952":[{"length":32,"start":556},{"length":32,"start":2553},{"length":32,"start":2952},{"length":32,"start":3643}],"23955":[{"length":32,"start":607},{"length":32,"start":1368},{"length":32,"start":1668},{"length":32,"start":2185},{"length":32,"start":3856}],"23958":[{"length":32,"start":715},{"length":32,"start":1166},{"length":32,"start":1334},{"length":32,"start":1634},{"length":32,"start":2218},{"length":32,"start":2400},{"length":32,"start":3903}]},"linkReferences":{"@ensuro/swaplibrary/contracts/SwapLibrary.sol":{"SwapLibrary":[{"length":20,"start":1304},{"length":20,"start":1600},{"length":20,"start":2157},{"length":20,"start":2744}]}},"object":"608060405234801561000f575f5ffd5b50600436106100fb575f3560e01c80635a11745611610093578063b6b55f2511610063578063b6b55f2514610294578063ce96cb77146102a7578063de846ae4146102ba578063f3e0ffbf146102ed575f5ffd5b80635a117456146102145780635b9a4c35146102275780639c4667a21461024e5780639cd4712814610281575f5ffd5b8063402d267d116100ce578063402d267d1461019257806342b054f0146101a657806352ebfa29146101c657806359011cd1146101ed575f5ffd5b80630981b1c2146100ff5780631418983b146101285780631d4d3a5d1461013e5780632e1a7d4d1461017d575b5f5ffd5b61011261010d366004611145565b610300565b60405161011f91906111c0565b60405180910390f35b61013061039e565b60405190815260200161011f565b6101657f000000000000000000000000000000000000000000000000000000000000000081565b6040516001600160a01b03909116815260200161011f565b61019061018b3660046111d2565b610407565b005b6101306101a03660046111e9565b505f1990565b6101b96101b43660046111e9565b6106f7565b60405161011f9190611269565b6101657f000000000000000000000000000000000000000000000000000000000000000081565b6101307f000000000000000000000000000000000000000000000000000000000000000081565b61019061022236600461127b565b61071b565b6101307f000000000000000000000000000000000000000000000000000000000000000081565b61016561025c3660046111e9565b507f000000000000000000000000000000000000000000000000000000000000000090565b61019061028f36600461129a565b610797565b6101906102a23660046111d2565b610814565b6101306102b53660046111e9565b610935565b6101656102c83660046111e9565b507f000000000000000000000000000000000000000000000000000000000000000090565b6101306102fb3660046111e9565b61093b565b60606001600160a01b037f000000000000000000000000000000000000000000000000000000000000000016300361034b57604051632abf118b60e21b815260040160405180910390fd5b5f60ff8416801561035e5761035e61120f565b90505f8180156103705761037061120f565b036100fb57610387610381306109cf565b84610a91565b505060408051602081019091525f81525b92915050565b5f6104026103cb7f0000000000000000000000000000000000000000000000000000000000000000610bb1565b670de0b6b3a76400006103fd7f0000000000000000000000000000000000000000000000000000000000000000610bb1565b610d6e565b905090565b6001600160a01b037f000000000000000000000000000000000000000000000000000000000000000016300361045057604051632abf118b60e21b815260040160405180910390fd5b80156106f4575f61045f610e1e565b90505f61046a610ef4565b6040516370a0823160e01b81523060048201529091506104fd906001600160a01b037f000000000000000000000000000000000000000000000000000000000000000016906370a0823190602401602060405180830381865afa1580156104d3573d5f5f3e3d5ffd5b505050506040513d601f19601f820116820180604052508101906104f791906112cc565b30610f0a565b8310610631576040516370a0823160e01b815230600482015273__$acbb9ece542dcf2065f41aa3c8cca5827e$__9063775669159084907f0000000000000000000000000000000000000000000000000000000000000000907f0000000000000000000000000000000000000000000000000000000000000000906001600160a01b038316906370a0823190602401602060405180830381865afa1580156105a7573d5f5f3e3d5ffd5b505050506040513d601f19601f820116820180604052508101906105cb91906112cc565b866040518663ffffffff1660e01b81526004016105ec9594939291906112e3565b602060405180830381865af4158015610607573d5f5f3e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061062b91906112cc565b506106f1565b60405163581e517d60e01b815273__$acbb9ece542dcf2065f41aa3c8cca5827e$__9063581e517d906106b09085907f0000000000000000000000000000000000000000000000000000000000000000907f000000000000000000000000000000000000000000000000000000000000000090899088906004016112e3565b602060405180830381865af41580156106cb573d5f5f3e3d5ffd5b505050506040513d601f19601f820116820180604052508101906106ef91906112cc565b505b50505b50565b60408051606080820183525f808352602083015291810191909152610398826109cf565b6001600160a01b037f000000000000000000000000000000000000000000000000000000000000000016300361076457604051632abf118b60e21b815260040160405180910390fd5b8015801561077957506107763061093b565b15155b156106f4576040516342a176d160e11b815260040160405180910390fd5b6001600160a01b037f00000000000000000000000000000000000000000000000000000000000000001630036107e057604051632abf118b60e21b815260040160405180910390fd5b60408051606081019091526106f490805f81526020015f815260200160405180602001604052805f81525081525082610a91565b6001600160a01b037f000000000000000000000000000000000000000000000000000000000000000016300361085d57604051632abf118b60e21b815260040160405180910390fd5b80156106f45761086b610e1e565b73__$acbb9ece542dcf2065f41aa3c8cca5827e$__637756691590917f00000000000000000000000000000000000000000000000000000000000000007f0000000000000000000000000000000000000000000000000000000000000000856108d261039e565b6040518663ffffffff1660e01b81526004016108f29594939291906112e3565b602060405180830381865af415801561090d573d5f5f3e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061093191906112cc565b5050565b5f610398825b6040516370a0823160e01b81526001600160a01b0382811660048301525f91610398917f000000000000000000000000000000000000000000000000000000000000000016906370a0823190602401602060405180830381865afa1580156109a5573d5f5f3e3d5ffd5b505050506040513d601f19601f820116820180604052508101906109c991906112cc565b83610f0a565b60408051606080820183525f8083526020830152918101919091526040516347e5753360e01b81527f000000000000000000000000000000000000000000000000000000000000000060048201525f906001600160a01b038416906347e57533906024015f60405180830381865afa158015610a4d573d5f5f3e3d5ffd5b505050506040513d5f823e601f3d908101601f19168201604052610a74919081019061136f565b905080806020019051810190610a8a91906113a1565b9392505050565b5f81806020019051810190610aa691906113a1565b604051632cbf28cb60e21b815290915073__$acbb9ece542dcf2065f41aa3c8cca5827e$__9063b2fca32c90610ae0908490600401611269565b5f6040518083038186803b158015610af6575f5ffd5b505af4158015610b08573d5f5f3e3d5ffd5b50505050815181604051602001610b1f9190611269565b6040516020818303038152906040525114610b4d576040516350701b6160e01b815260040160405180910390fd5b7fca7f7aa563866a1d31c74deba224724d1da9c35cbb6f783f2ccf0182f91e34f88382604051610b7e92919061142d565b60405180910390a17f00000000000000000000000000000000000000000000000000000000000000006106ef83826114dd565b5f6001600160a01b038216610bcf5750670de0b6b3a7640000919050565b5f5f836001600160a01b031663feaf968c6040518163ffffffff1660e01b815260040160a060405180830381865afa158015610c0d573d5f5f3e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610c3191906115b6565b509350509250507f000000000000000000000000000000000000000000000000000000000000000042610c649190611618565b8111610c907f000000000000000000000000000000000000000000000000000000000000000042611618565b829091610cbe57604051633156ea9360e01b8152600481019290925260248201526044015b60405180910390fd5b50505f82138290610ce5576040516338ee04a760e01b8152600401610cb591815260200190565b50836001600160a01b031663313ce5676040518163ffffffff1660e01b8152600401602060405180830381865afa158015610d22573d5f5f3e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610d46919061162b565b610d51906012611646565b610d5c90600a611742565b610d669083611750565b949350505050565b5f5f5f610d7b8686610fac565b91509150815f03610d9f57838181610d9557610d95611767565b0492505050610a8a565b818411610db657610db66003851502601118610fc8565b5f848688095f868103871696879004966002600389028118808a02820302808a02820302808a02820302808a02820302808a02820302808a02909103029181900381900460010185841190960395909502919093039390930492909217029150509392505050565b60408051606080820183525f8083526020830152918101919091527f00000000000000000000000000000000000000000000000000000000000000008054610e659061145a565b80601f0160208091040260200160405190810160405280929190818152602001828054610e919061145a565b8015610edc5780601f10610eb357610100808354040283529160200191610edc565b820191905f5260205f20905b815481529060010190602001808311610ebf57829003601f168201915b505050505080602001905181019061040291906113a1565b5f610402670de0b6b3a7640000806103fd61039e565b5f610f347f0000000000000000000000000000000000000000000000000000000000000000610fd9565b610fa2610f83610f637f0000000000000000000000000000000000000000000000000000000000000000610fd9565b610f6d9087611750565b610f7561039e565b670de0b6b3a7640000610d6e565b610f8c856109cf565b60200151610f7590670de0b6b3a7640000611618565b610a8a919061177b565b5f805f1983850993909202808410938190039390930393915050565b634e487b715f52806020526024601cfd5b5f816001600160a01b031663313ce5676040518163ffffffff1660e01b8152600401602060405180830381865afa158015611016573d5f5f3e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061103a919061162b565b611045906012611646565b61039890600a611742565b60ff811681146106f4575f5ffd5b634e487b7160e01b5f52604160045260245ffd5b6040516060810167ffffffffffffffff811182821017156110955761109561105e565b60405290565b604051601f8201601f1916810167ffffffffffffffff811182821017156110c4576110c461105e565b604052919050565b5f67ffffffffffffffff8211156110e5576110e561105e565b50601f01601f191660200190565b5f82601f830112611102575f5ffd5b8135611115611110826110cc565b61109b565b818152846020838601011115611129575f5ffd5b816020850160208301375f918101602001919091529392505050565b5f5f60408385031215611156575f5ffd5b823561116181611050565b9150602083013567ffffffffffffffff81111561117c575f5ffd5b611188858286016110f3565b9150509250929050565b5f81518084528060208401602086015e5f602082860101526020601f19601f83011685010191505092915050565b602081525f610a8a6020830184611192565b5f602082840312156111e2575f5ffd5b5035919050565b5f602082840312156111f9575f5ffd5b81356001600160a01b0381168114610a8a575f5ffd5b634e487b7160e01b5f52602160045260245ffd5b5f81516003811061124257634e487b7160e01b5f52602160045260245ffd5b8084525060208201516020840152604082015160606040850152610d666060850182611192565b602081525f610a8a6020830184611223565b5f6020828403121561128b575f5ffd5b81358015158114610a8a575f5ffd5b5f602082840312156112aa575f5ffd5b813567ffffffffffffffff8111156112c0575f5ffd5b610d66848285016110f3565b5f602082840312156112dc575f5ffd5b5051919050565b60a081525f6112f560a0830188611223565b6001600160a01b039687166020840152949095166040820152606081019290925260809091015292915050565b5f82601f830112611331575f5ffd5b815161133f611110826110cc565b818152846020838601011115611353575f5ffd5b8160208501602083015e5f918101602001919091529392505050565b5f6020828403121561137f575f5ffd5b815167ffffffffffffffff811115611395575f5ffd5b610d6684828501611322565b5f602082840312156113b1575f5ffd5b815167ffffffffffffffff8111156113c7575f5ffd5b8201606081850312156113d8575f5ffd5b6113e0611072565b8151600381106113ee575f5ffd5b815260208281015190820152604082015167ffffffffffffffff811115611413575f5ffd5b61141f86828501611322565b604083015250949350505050565b604081525f61143f6040830185611223565b82810360208401526114518185611223565b95945050505050565b600181811c9082168061146e57607f821691505b60208210810361148c57634e487b7160e01b5f52602260045260245ffd5b50919050565b601f8211156106f157805f5260205f20601f840160051c810160208510156114b75750805b601f840160051c820191505b818110156114d6575f81556001016114c3565b5050505050565b815167ffffffffffffffff8111156114f7576114f761105e565b61150b81611505845461145a565b84611492565b6020601f82116001811461153d575f83156115265750848201515b5f19600385901b1c1916600184901b1784556114d6565b5f84815260208120601f198516915b8281101561156c578785015182556020948501946001909201910161154c565b508482101561158957868401515f19600387901b60f8161c191681555b50505050600190811b01905550565b805169ffffffffffffffffffff811681146115b1575f5ffd5b919050565b5f5f5f5f5f60a086880312156115ca575f5ffd5b6115d386611598565b602087015160408801516060890151929750909550935091506115f860808701611598565b90509295509295909350565b634e487b7160e01b5f52601160045260245ffd5b8181038181111561039857610398611604565b5f6020828403121561163b575f5ffd5b8151610a8a81611050565b60ff828116828216039081111561039857610398611604565b6001815b600184111561169a5780850481111561167e5761167e611604565b600184161561168c57908102905b60019390931c928002611663565b935093915050565b5f826116b057506001610398565b816116bc57505f610398565b81600181146116d257600281146116dc576116f8565b6001915050610398565b60ff8411156116ed576116ed611604565b50506001821b610398565b5060208310610133831016604e8410600b841016171561171b575081810a610398565b6117275f19848461165f565b805f190482111561173a5761173a611604565b029392505050565b5f610a8a60ff8416836116a2565b808202811582820484141761039857610398611604565b634e487b7160e01b5f52601260045260245ffd5b5f8261179557634e487b7160e01b5f52601260045260245ffd5b50049056fea2646970667358221220fc08a7893d23afda4c3cb4a81930e87c3cc290d1b17c4f92b0c50fe828dfa09664736f6c634300081e0033","opcodes":"PUSH1 0x80 PUSH1 0x40 MSTORE CALLVALUE DUP1 ISZERO PUSH2 0xF JUMPI PUSH0 PUSH0 REVERT JUMPDEST POP PUSH1 0x4 CALLDATASIZE LT PUSH2 0xFB JUMPI PUSH0 CALLDATALOAD PUSH1 0xE0 SHR DUP1 PUSH4 0x5A117456 GT PUSH2 0x93 JUMPI DUP1 PUSH4 0xB6B55F25 GT PUSH2 0x63 JUMPI DUP1 PUSH4 0xB6B55F25 EQ PUSH2 0x294 JUMPI DUP1 PUSH4 0xCE96CB77 EQ PUSH2 0x2A7 JUMPI DUP1 PUSH4 0xDE846AE4 EQ PUSH2 0x2BA JUMPI DUP1 PUSH4 0xF3E0FFBF EQ PUSH2 0x2ED JUMPI PUSH0 PUSH0 REVERT JUMPDEST DUP1 PUSH4 0x5A117456 EQ PUSH2 0x214 JUMPI DUP1 PUSH4 0x5B9A4C35 EQ PUSH2 0x227 JUMPI DUP1 PUSH4 0x9C4667A2 EQ PUSH2 0x24E JUMPI DUP1 PUSH4 0x9CD47128 EQ PUSH2 0x281 JUMPI PUSH0 PUSH0 REVERT JUMPDEST DUP1 PUSH4 0x402D267D GT PUSH2 0xCE JUMPI DUP1 PUSH4 0x402D267D EQ PUSH2 0x192 JUMPI DUP1 PUSH4 0x42B054F0 EQ PUSH2 0x1A6 JUMPI DUP1 PUSH4 0x52EBFA29 EQ PUSH2 0x1C6 JUMPI DUP1 PUSH4 0x59011CD1 EQ PUSH2 0x1ED JUMPI PUSH0 PUSH0 REVERT JUMPDEST DUP1 PUSH4 0x981B1C2 EQ PUSH2 0xFF JUMPI DUP1 PUSH4 0x1418983B EQ PUSH2 0x128 JUMPI DUP1 PUSH4 0x1D4D3A5D EQ PUSH2 0x13E JUMPI DUP1 PUSH4 0x2E1A7D4D EQ PUSH2 0x17D JUMPI JUMPDEST PUSH0 PUSH0 REVERT JUMPDEST PUSH2 0x112 PUSH2 0x10D CALLDATASIZE PUSH1 0x4 PUSH2 0x1145 JUMP JUMPDEST PUSH2 0x300 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0x11F SWAP2 SWAP1 PUSH2 0x11C0 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST PUSH2 0x130 PUSH2 0x39E JUMP JUMPDEST PUSH1 0x40 MLOAD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH2 0x11F JUMP JUMPDEST PUSH2 0x165 PUSH32 0x0 DUP2 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP1 SWAP2 AND DUP2 MSTORE PUSH1 0x20 ADD PUSH2 0x11F JUMP JUMPDEST PUSH2 0x190 PUSH2 0x18B CALLDATASIZE PUSH1 0x4 PUSH2 0x11D2 JUMP JUMPDEST PUSH2 0x407 JUMP JUMPDEST STOP JUMPDEST PUSH2 0x130 PUSH2 0x1A0 CALLDATASIZE PUSH1 0x4 PUSH2 0x11E9 JUMP JUMPDEST POP PUSH0 NOT SWAP1 JUMP JUMPDEST PUSH2 0x1B9 PUSH2 0x1B4 CALLDATASIZE PUSH1 0x4 PUSH2 0x11E9 JUMP JUMPDEST PUSH2 0x6F7 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0x11F SWAP2 SWAP1 PUSH2 0x1269 JUMP JUMPDEST PUSH2 0x165 PUSH32 0x0 DUP2 JUMP JUMPDEST PUSH2 0x130 PUSH32 0x0 DUP2 JUMP JUMPDEST PUSH2 0x190 PUSH2 0x222 CALLDATASIZE PUSH1 0x4 PUSH2 0x127B JUMP JUMPDEST PUSH2 0x71B JUMP JUMPDEST PUSH2 0x130 PUSH32 0x0 DUP2 JUMP JUMPDEST PUSH2 0x165 PUSH2 0x25C CALLDATASIZE PUSH1 0x4 PUSH2 0x11E9 JUMP JUMPDEST POP PUSH32 0x0 SWAP1 JUMP JUMPDEST PUSH2 0x190 PUSH2 0x28F CALLDATASIZE PUSH1 0x4 PUSH2 0x129A JUMP JUMPDEST PUSH2 0x797 JUMP JUMPDEST PUSH2 0x190 PUSH2 0x2A2 CALLDATASIZE PUSH1 0x4 PUSH2 0x11D2 JUMP JUMPDEST PUSH2 0x814 JUMP JUMPDEST PUSH2 0x130 PUSH2 0x2B5 CALLDATASIZE PUSH1 0x4 PUSH2 0x11E9 JUMP JUMPDEST PUSH2 0x935 JUMP JUMPDEST PUSH2 0x165 PUSH2 0x2C8 CALLDATASIZE PUSH1 0x4 PUSH2 0x11E9 JUMP JUMPDEST POP PUSH32 0x0 SWAP1 JUMP JUMPDEST PUSH2 0x130 PUSH2 0x2FB CALLDATASIZE PUSH1 0x4 PUSH2 0x11E9 JUMP JUMPDEST PUSH2 0x93B JUMP JUMPDEST PUSH1 0x60 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB PUSH32 0x0 AND ADDRESS SUB PUSH2 0x34B JUMPI PUSH1 0x40 MLOAD PUSH4 0x2ABF118B PUSH1 0xE2 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH0 PUSH1 0xFF DUP5 AND DUP1 ISZERO PUSH2 0x35E JUMPI PUSH2 0x35E PUSH2 0x120F JUMP JUMPDEST SWAP1 POP PUSH0 DUP2 DUP1 ISZERO PUSH2 0x370 JUMPI PUSH2 0x370 PUSH2 0x120F JUMP JUMPDEST SUB PUSH2 0xFB JUMPI PUSH2 0x387 PUSH2 0x381 ADDRESS PUSH2 0x9CF JUMP JUMPDEST DUP5 PUSH2 0xA91 JUMP JUMPDEST POP POP PUSH1 0x40 DUP1 MLOAD PUSH1 0x20 DUP2 ADD SWAP1 SWAP2 MSTORE PUSH0 DUP2 MSTORE JUMPDEST SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH0 PUSH2 0x402 PUSH2 0x3CB PUSH32 0x0 PUSH2 0xBB1 JUMP JUMPDEST PUSH8 0xDE0B6B3A7640000 PUSH2 0x3FD PUSH32 0x0 PUSH2 0xBB1 JUMP JUMPDEST PUSH2 0xD6E JUMP JUMPDEST SWAP1 POP SWAP1 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB PUSH32 0x0 AND ADDRESS SUB PUSH2 0x450 JUMPI PUSH1 0x40 MLOAD PUSH4 0x2ABF118B PUSH1 0xE2 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST DUP1 ISZERO PUSH2 0x6F4 JUMPI PUSH0 PUSH2 0x45F PUSH2 0xE1E JUMP JUMPDEST SWAP1 POP PUSH0 PUSH2 0x46A PUSH2 0xEF4 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH4 0x70A08231 PUSH1 0xE0 SHL DUP2 MSTORE ADDRESS PUSH1 0x4 DUP3 ADD MSTORE SWAP1 SWAP2 POP PUSH2 0x4FD SWAP1 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB PUSH32 0x0 AND SWAP1 PUSH4 0x70A08231 SWAP1 PUSH1 0x24 ADD PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x4D3 JUMPI RETURNDATASIZE PUSH0 PUSH0 RETURNDATACOPY RETURNDATASIZE PUSH0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP3 ADD DUP1 PUSH1 0x40 MSTORE POP DUP2 ADD SWAP1 PUSH2 0x4F7 SWAP2 SWAP1 PUSH2 0x12CC JUMP JUMPDEST ADDRESS PUSH2 0xF0A JUMP JUMPDEST DUP4 LT PUSH2 0x631 JUMPI PUSH1 0x40 MLOAD PUSH4 0x70A08231 PUSH1 0xE0 SHL DUP2 MSTORE ADDRESS PUSH1 0x4 DUP3 ADD MSTORE PUSH20 0x0 SWAP1 PUSH4 0x77566915 SWAP1 DUP5 SWAP1 PUSH32 0x0 SWAP1 PUSH32 0x0 SWAP1 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP4 AND SWAP1 PUSH4 0x70A08231 SWAP1 PUSH1 0x24 ADD PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x5A7 JUMPI RETURNDATASIZE PUSH0 PUSH0 RETURNDATACOPY RETURNDATASIZE PUSH0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP3 ADD DUP1 PUSH1 0x40 MSTORE POP DUP2 ADD SWAP1 PUSH2 0x5CB SWAP2 SWAP1 PUSH2 0x12CC JUMP JUMPDEST DUP7 PUSH1 0x40 MLOAD DUP7 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x5EC SWAP6 SWAP5 SWAP4 SWAP3 SWAP2 SWAP1 PUSH2 0x12E3 JUMP JUMPDEST PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 GAS DELEGATECALL ISZERO DUP1 ISZERO PUSH2 0x607 JUMPI RETURNDATASIZE PUSH0 PUSH0 RETURNDATACOPY RETURNDATASIZE PUSH0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP3 ADD DUP1 PUSH1 0x40 MSTORE POP DUP2 ADD SWAP1 PUSH2 0x62B SWAP2 SWAP1 PUSH2 0x12CC JUMP JUMPDEST POP PUSH2 0x6F1 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH4 0x581E517D PUSH1 0xE0 SHL DUP2 MSTORE PUSH20 0x0 SWAP1 PUSH4 0x581E517D SWAP1 PUSH2 0x6B0 SWAP1 DUP6 SWAP1 PUSH32 0x0 SWAP1 PUSH32 0x0 SWAP1 DUP10 SWAP1 DUP9 SWAP1 PUSH1 0x4 ADD PUSH2 0x12E3 JUMP JUMPDEST PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 GAS DELEGATECALL ISZERO DUP1 ISZERO PUSH2 0x6CB JUMPI RETURNDATASIZE PUSH0 PUSH0 RETURNDATACOPY RETURNDATASIZE PUSH0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP3 ADD DUP1 PUSH1 0x40 MSTORE POP DUP2 ADD SWAP1 PUSH2 0x6EF SWAP2 SWAP1 PUSH2 0x12CC JUMP JUMPDEST POP JUMPDEST POP POP JUMPDEST POP JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH1 0x60 DUP1 DUP3 ADD DUP4 MSTORE PUSH0 DUP1 DUP4 MSTORE PUSH1 0x20 DUP4 ADD MSTORE SWAP2 DUP2 ADD SWAP2 SWAP1 SWAP2 MSTORE PUSH2 0x398 DUP3 PUSH2 0x9CF JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB PUSH32 0x0 AND ADDRESS SUB PUSH2 0x764 JUMPI PUSH1 0x40 MLOAD PUSH4 0x2ABF118B PUSH1 0xE2 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST DUP1 ISZERO DUP1 ISZERO PUSH2 0x779 JUMPI POP PUSH2 0x776 ADDRESS PUSH2 0x93B JUMP JUMPDEST ISZERO ISZERO JUMPDEST ISZERO PUSH2 0x6F4 JUMPI PUSH1 0x40 MLOAD PUSH4 0x42A176D1 PUSH1 0xE1 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB PUSH32 0x0 AND ADDRESS SUB PUSH2 0x7E0 JUMPI PUSH1 0x40 MLOAD PUSH4 0x2ABF118B PUSH1 0xE2 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH1 0x60 DUP2 ADD SWAP1 SWAP2 MSTORE PUSH2 0x6F4 SWAP1 DUP1 PUSH0 DUP2 MSTORE PUSH1 0x20 ADD PUSH0 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x40 MLOAD DUP1 PUSH1 0x20 ADD PUSH1 0x40 MSTORE DUP1 PUSH0 DUP2 MSTORE POP DUP2 MSTORE POP DUP3 PUSH2 0xA91 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB PUSH32 0x0 AND ADDRESS SUB PUSH2 0x85D JUMPI PUSH1 0x40 MLOAD PUSH4 0x2ABF118B PUSH1 0xE2 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST DUP1 ISZERO PUSH2 0x6F4 JUMPI PUSH2 0x86B PUSH2 0xE1E JUMP JUMPDEST PUSH20 0x0 PUSH4 0x77566915 SWAP1 SWAP2 PUSH32 0x0 PUSH32 0x0 DUP6 PUSH2 0x8D2 PUSH2 0x39E JUMP JUMPDEST PUSH1 0x40 MLOAD DUP7 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x8F2 SWAP6 SWAP5 SWAP4 SWAP3 SWAP2 SWAP1 PUSH2 0x12E3 JUMP JUMPDEST PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 GAS DELEGATECALL ISZERO DUP1 ISZERO PUSH2 0x90D JUMPI RETURNDATASIZE PUSH0 PUSH0 RETURNDATACOPY RETURNDATASIZE PUSH0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP3 ADD DUP1 PUSH1 0x40 MSTORE POP DUP2 ADD SWAP1 PUSH2 0x931 SWAP2 SWAP1 PUSH2 0x12CC JUMP JUMPDEST POP POP JUMP JUMPDEST PUSH0 PUSH2 0x398 DUP3 JUMPDEST PUSH1 0x40 MLOAD PUSH4 0x70A08231 PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP3 DUP2 AND PUSH1 0x4 DUP4 ADD MSTORE PUSH0 SWAP2 PUSH2 0x398 SWAP2 PUSH32 0x0 AND SWAP1 PUSH4 0x70A08231 SWAP1 PUSH1 0x24 ADD PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x9A5 JUMPI RETURNDATASIZE PUSH0 PUSH0 RETURNDATACOPY RETURNDATASIZE PUSH0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP3 ADD DUP1 PUSH1 0x40 MSTORE POP DUP2 ADD SWAP1 PUSH2 0x9C9 SWAP2 SWAP1 PUSH2 0x12CC JUMP JUMPDEST DUP4 PUSH2 0xF0A JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH1 0x60 DUP1 DUP3 ADD DUP4 MSTORE PUSH0 DUP1 DUP4 MSTORE PUSH1 0x20 DUP4 ADD MSTORE SWAP2 DUP2 ADD SWAP2 SWAP1 SWAP2 MSTORE PUSH1 0x40 MLOAD PUSH4 0x47E57533 PUSH1 0xE0 SHL DUP2 MSTORE PUSH32 0x0 PUSH1 0x4 DUP3 ADD MSTORE PUSH0 SWAP1 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP5 AND SWAP1 PUSH4 0x47E57533 SWAP1 PUSH1 0x24 ADD PUSH0 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0xA4D JUMPI RETURNDATASIZE PUSH0 PUSH0 RETURNDATACOPY RETURNDATASIZE PUSH0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH0 DUP3 RETURNDATACOPY PUSH1 0x1F RETURNDATASIZE SWAP1 DUP2 ADD PUSH1 0x1F NOT AND DUP3 ADD PUSH1 0x40 MSTORE PUSH2 0xA74 SWAP2 SWAP1 DUP2 ADD SWAP1 PUSH2 0x136F JUMP JUMPDEST SWAP1 POP DUP1 DUP1 PUSH1 0x20 ADD SWAP1 MLOAD DUP2 ADD SWAP1 PUSH2 0xA8A SWAP2 SWAP1 PUSH2 0x13A1 JUMP JUMPDEST SWAP4 SWAP3 POP POP POP JUMP JUMPDEST PUSH0 DUP2 DUP1 PUSH1 0x20 ADD SWAP1 MLOAD DUP2 ADD SWAP1 PUSH2 0xAA6 SWAP2 SWAP1 PUSH2 0x13A1 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH4 0x2CBF28CB PUSH1 0xE2 SHL DUP2 MSTORE SWAP1 SWAP2 POP PUSH20 0x0 SWAP1 PUSH4 0xB2FCA32C SWAP1 PUSH2 0xAE0 SWAP1 DUP5 SWAP1 PUSH1 0x4 ADD PUSH2 0x1269 JUMP JUMPDEST PUSH0 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0xAF6 JUMPI PUSH0 PUSH0 REVERT JUMPDEST POP GAS DELEGATECALL ISZERO DUP1 ISZERO PUSH2 0xB08 JUMPI RETURNDATASIZE PUSH0 PUSH0 RETURNDATACOPY RETURNDATASIZE PUSH0 REVERT JUMPDEST POP POP POP POP DUP2 MLOAD DUP2 PUSH1 0x40 MLOAD PUSH1 0x20 ADD PUSH2 0xB1F SWAP2 SWAP1 PUSH2 0x1269 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH1 0x20 DUP2 DUP4 SUB SUB DUP2 MSTORE SWAP1 PUSH1 0x40 MSTORE MLOAD EQ PUSH2 0xB4D JUMPI PUSH1 0x40 MLOAD PUSH4 0x50701B61 PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH32 0xCA7F7AA563866A1D31C74DEBA224724D1DA9C35CBB6F783F2CCF0182F91E34F8 DUP4 DUP3 PUSH1 0x40 MLOAD PUSH2 0xB7E SWAP3 SWAP2 SWAP1 PUSH2 0x142D JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 LOG1 PUSH32 0x0 PUSH2 0x6EF DUP4 DUP3 PUSH2 0x14DD JUMP JUMPDEST PUSH0 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP3 AND PUSH2 0xBCF JUMPI POP PUSH8 0xDE0B6B3A7640000 SWAP2 SWAP1 POP JUMP JUMPDEST PUSH0 PUSH0 DUP4 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH4 0xFEAF968C PUSH1 0x40 MLOAD DUP2 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH1 0xA0 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0xC0D JUMPI RETURNDATASIZE PUSH0 PUSH0 RETURNDATACOPY RETURNDATASIZE PUSH0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP3 ADD DUP1 PUSH1 0x40 MSTORE POP DUP2 ADD SWAP1 PUSH2 0xC31 SWAP2 SWAP1 PUSH2 0x15B6 JUMP JUMPDEST POP SWAP4 POP POP SWAP3 POP POP PUSH32 0x0 TIMESTAMP PUSH2 0xC64 SWAP2 SWAP1 PUSH2 0x1618 JUMP JUMPDEST DUP2 GT PUSH2 0xC90 PUSH32 0x0 TIMESTAMP PUSH2 0x1618 JUMP JUMPDEST DUP3 SWAP1 SWAP2 PUSH2 0xCBE JUMPI PUSH1 0x40 MLOAD PUSH4 0x3156EA93 PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 DUP2 ADD SWAP3 SWAP1 SWAP3 MSTORE PUSH1 0x24 DUP3 ADD MSTORE PUSH1 0x44 ADD JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST POP POP PUSH0 DUP3 SGT DUP3 SWAP1 PUSH2 0xCE5 JUMPI PUSH1 0x40 MLOAD PUSH4 0x38EE04A7 PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0xCB5 SWAP2 DUP2 MSTORE PUSH1 0x20 ADD SWAP1 JUMP JUMPDEST 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 GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0xD22 JUMPI RETURNDATASIZE PUSH0 PUSH0 RETURNDATACOPY RETURNDATASIZE PUSH0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP3 ADD DUP1 PUSH1 0x40 MSTORE POP DUP2 ADD SWAP1 PUSH2 0xD46 SWAP2 SWAP1 PUSH2 0x162B JUMP JUMPDEST PUSH2 0xD51 SWAP1 PUSH1 0x12 PUSH2 0x1646 JUMP JUMPDEST PUSH2 0xD5C SWAP1 PUSH1 0xA PUSH2 0x1742 JUMP JUMPDEST PUSH2 0xD66 SWAP1 DUP4 PUSH2 0x1750 JUMP JUMPDEST SWAP5 SWAP4 POP POP POP POP JUMP JUMPDEST PUSH0 PUSH0 PUSH0 PUSH2 0xD7B DUP7 DUP7 PUSH2 0xFAC JUMP JUMPDEST SWAP2 POP SWAP2 POP DUP2 PUSH0 SUB PUSH2 0xD9F JUMPI DUP4 DUP2 DUP2 PUSH2 0xD95 JUMPI PUSH2 0xD95 PUSH2 0x1767 JUMP JUMPDEST DIV SWAP3 POP POP POP PUSH2 0xA8A JUMP JUMPDEST DUP2 DUP5 GT PUSH2 0xDB6 JUMPI PUSH2 0xDB6 PUSH1 0x3 DUP6 ISZERO MUL PUSH1 0x11 XOR PUSH2 0xFC8 JUMP JUMPDEST PUSH0 DUP5 DUP7 DUP9 MULMOD PUSH0 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 DUP6 DUP5 GT SWAP1 SWAP7 SUB SWAP6 SWAP1 SWAP6 MUL SWAP2 SWAP1 SWAP4 SUB SWAP4 SWAP1 SWAP4 DIV SWAP3 SWAP1 SWAP3 OR MUL SWAP2 POP POP SWAP4 SWAP3 POP POP POP JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH1 0x60 DUP1 DUP3 ADD DUP4 MSTORE PUSH0 DUP1 DUP4 MSTORE PUSH1 0x20 DUP4 ADD MSTORE SWAP2 DUP2 ADD SWAP2 SWAP1 SWAP2 MSTORE PUSH32 0x0 DUP1 SLOAD PUSH2 0xE65 SWAP1 PUSH2 0x145A 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 0xE91 SWAP1 PUSH2 0x145A JUMP JUMPDEST DUP1 ISZERO PUSH2 0xEDC JUMPI DUP1 PUSH1 0x1F LT PUSH2 0xEB3 JUMPI PUSH2 0x100 DUP1 DUP4 SLOAD DIV MUL DUP4 MSTORE SWAP2 PUSH1 0x20 ADD SWAP2 PUSH2 0xEDC JUMP JUMPDEST DUP3 ADD SWAP2 SWAP1 PUSH0 MSTORE PUSH1 0x20 PUSH0 KECCAK256 SWAP1 JUMPDEST DUP2 SLOAD DUP2 MSTORE SWAP1 PUSH1 0x1 ADD SWAP1 PUSH1 0x20 ADD DUP1 DUP4 GT PUSH2 0xEBF JUMPI DUP3 SWAP1 SUB PUSH1 0x1F AND DUP3 ADD SWAP2 JUMPDEST POP POP POP POP POP DUP1 PUSH1 0x20 ADD SWAP1 MLOAD DUP2 ADD SWAP1 PUSH2 0x402 SWAP2 SWAP1 PUSH2 0x13A1 JUMP JUMPDEST PUSH0 PUSH2 0x402 PUSH8 0xDE0B6B3A7640000 DUP1 PUSH2 0x3FD PUSH2 0x39E JUMP JUMPDEST PUSH0 PUSH2 0xF34 PUSH32 0x0 PUSH2 0xFD9 JUMP JUMPDEST PUSH2 0xFA2 PUSH2 0xF83 PUSH2 0xF63 PUSH32 0x0 PUSH2 0xFD9 JUMP JUMPDEST PUSH2 0xF6D SWAP1 DUP8 PUSH2 0x1750 JUMP JUMPDEST PUSH2 0xF75 PUSH2 0x39E JUMP JUMPDEST PUSH8 0xDE0B6B3A7640000 PUSH2 0xD6E JUMP JUMPDEST PUSH2 0xF8C DUP6 PUSH2 0x9CF JUMP JUMPDEST PUSH1 0x20 ADD MLOAD PUSH2 0xF75 SWAP1 PUSH8 0xDE0B6B3A7640000 PUSH2 0x1618 JUMP JUMPDEST PUSH2 0xA8A SWAP2 SWAP1 PUSH2 0x177B JUMP JUMPDEST PUSH0 DUP1 PUSH0 NOT DUP4 DUP6 MULMOD SWAP4 SWAP1 SWAP3 MUL DUP1 DUP5 LT SWAP4 DUP2 SWAP1 SUB SWAP4 SWAP1 SWAP4 SUB SWAP4 SWAP2 POP POP JUMP JUMPDEST PUSH4 0x4E487B71 PUSH0 MSTORE DUP1 PUSH1 0x20 MSTORE PUSH1 0x24 PUSH1 0x1C REVERT JUMPDEST PUSH0 DUP2 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 GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x1016 JUMPI RETURNDATASIZE PUSH0 PUSH0 RETURNDATACOPY RETURNDATASIZE PUSH0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP3 ADD DUP1 PUSH1 0x40 MSTORE POP DUP2 ADD SWAP1 PUSH2 0x103A SWAP2 SWAP1 PUSH2 0x162B JUMP JUMPDEST PUSH2 0x1045 SWAP1 PUSH1 0x12 PUSH2 0x1646 JUMP JUMPDEST PUSH2 0x398 SWAP1 PUSH1 0xA PUSH2 0x1742 JUMP JUMPDEST PUSH1 0xFF DUP2 AND DUP2 EQ PUSH2 0x6F4 JUMPI PUSH0 PUSH0 REVERT JUMPDEST PUSH4 0x4E487B71 PUSH1 0xE0 SHL PUSH0 MSTORE PUSH1 0x41 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH0 REVERT JUMPDEST PUSH1 0x40 MLOAD PUSH1 0x60 DUP2 ADD PUSH8 0xFFFFFFFFFFFFFFFF DUP2 GT DUP3 DUP3 LT OR ISZERO PUSH2 0x1095 JUMPI PUSH2 0x1095 PUSH2 0x105E JUMP JUMPDEST PUSH1 0x40 MSTORE SWAP1 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH1 0x1F DUP3 ADD PUSH1 0x1F NOT AND DUP2 ADD PUSH8 0xFFFFFFFFFFFFFFFF DUP2 GT DUP3 DUP3 LT OR ISZERO PUSH2 0x10C4 JUMPI PUSH2 0x10C4 PUSH2 0x105E JUMP JUMPDEST PUSH1 0x40 MSTORE SWAP2 SWAP1 POP JUMP JUMPDEST PUSH0 PUSH8 0xFFFFFFFFFFFFFFFF DUP3 GT ISZERO PUSH2 0x10E5 JUMPI PUSH2 0x10E5 PUSH2 0x105E JUMP JUMPDEST POP PUSH1 0x1F ADD PUSH1 0x1F NOT AND PUSH1 0x20 ADD SWAP1 JUMP JUMPDEST PUSH0 DUP3 PUSH1 0x1F DUP4 ADD SLT PUSH2 0x1102 JUMPI PUSH0 PUSH0 REVERT JUMPDEST DUP2 CALLDATALOAD PUSH2 0x1115 PUSH2 0x1110 DUP3 PUSH2 0x10CC JUMP JUMPDEST PUSH2 0x109B JUMP JUMPDEST DUP2 DUP2 MSTORE DUP5 PUSH1 0x20 DUP4 DUP7 ADD ADD GT ISZERO PUSH2 0x1129 JUMPI PUSH0 PUSH0 REVERT JUMPDEST DUP2 PUSH1 0x20 DUP6 ADD PUSH1 0x20 DUP4 ADD CALLDATACOPY PUSH0 SWAP2 DUP2 ADD PUSH1 0x20 ADD SWAP2 SWAP1 SWAP2 MSTORE SWAP4 SWAP3 POP POP POP JUMP JUMPDEST PUSH0 PUSH0 PUSH1 0x40 DUP4 DUP6 SUB SLT ISZERO PUSH2 0x1156 JUMPI PUSH0 PUSH0 REVERT JUMPDEST DUP3 CALLDATALOAD PUSH2 0x1161 DUP2 PUSH2 0x1050 JUMP JUMPDEST SWAP2 POP PUSH1 0x20 DUP4 ADD CALLDATALOAD PUSH8 0xFFFFFFFFFFFFFFFF DUP2 GT ISZERO PUSH2 0x117C JUMPI PUSH0 PUSH0 REVERT JUMPDEST PUSH2 0x1188 DUP6 DUP3 DUP7 ADD PUSH2 0x10F3 JUMP JUMPDEST SWAP2 POP POP SWAP3 POP SWAP3 SWAP1 POP JUMP JUMPDEST PUSH0 DUP2 MLOAD DUP1 DUP5 MSTORE DUP1 PUSH1 0x20 DUP5 ADD PUSH1 0x20 DUP7 ADD MCOPY PUSH0 PUSH1 0x20 DUP3 DUP7 ADD ADD MSTORE PUSH1 0x20 PUSH1 0x1F NOT PUSH1 0x1F DUP4 ADD AND DUP6 ADD ADD SWAP2 POP POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x20 DUP2 MSTORE PUSH0 PUSH2 0xA8A PUSH1 0x20 DUP4 ADD DUP5 PUSH2 0x1192 JUMP JUMPDEST PUSH0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x11E2 JUMPI PUSH0 PUSH0 REVERT JUMPDEST POP CALLDATALOAD SWAP2 SWAP1 POP JUMP JUMPDEST PUSH0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x11F9 JUMPI PUSH0 PUSH0 REVERT JUMPDEST DUP2 CALLDATALOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 AND DUP2 EQ PUSH2 0xA8A JUMPI PUSH0 PUSH0 REVERT JUMPDEST PUSH4 0x4E487B71 PUSH1 0xE0 SHL PUSH0 MSTORE PUSH1 0x21 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH0 REVERT JUMPDEST PUSH0 DUP2 MLOAD PUSH1 0x3 DUP2 LT PUSH2 0x1242 JUMPI PUSH4 0x4E487B71 PUSH1 0xE0 SHL PUSH0 MSTORE PUSH1 0x21 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH0 REVERT JUMPDEST DUP1 DUP5 MSTORE POP PUSH1 0x20 DUP3 ADD MLOAD PUSH1 0x20 DUP5 ADD MSTORE PUSH1 0x40 DUP3 ADD MLOAD PUSH1 0x60 PUSH1 0x40 DUP6 ADD MSTORE PUSH2 0xD66 PUSH1 0x60 DUP6 ADD DUP3 PUSH2 0x1192 JUMP JUMPDEST PUSH1 0x20 DUP2 MSTORE PUSH0 PUSH2 0xA8A PUSH1 0x20 DUP4 ADD DUP5 PUSH2 0x1223 JUMP JUMPDEST PUSH0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x128B JUMPI PUSH0 PUSH0 REVERT JUMPDEST DUP2 CALLDATALOAD DUP1 ISZERO ISZERO DUP2 EQ PUSH2 0xA8A JUMPI PUSH0 PUSH0 REVERT JUMPDEST PUSH0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x12AA JUMPI PUSH0 PUSH0 REVERT JUMPDEST DUP2 CALLDATALOAD PUSH8 0xFFFFFFFFFFFFFFFF DUP2 GT ISZERO PUSH2 0x12C0 JUMPI PUSH0 PUSH0 REVERT JUMPDEST PUSH2 0xD66 DUP5 DUP3 DUP6 ADD PUSH2 0x10F3 JUMP JUMPDEST PUSH0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x12DC JUMPI PUSH0 PUSH0 REVERT JUMPDEST POP MLOAD SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0xA0 DUP2 MSTORE PUSH0 PUSH2 0x12F5 PUSH1 0xA0 DUP4 ADD DUP9 PUSH2 0x1223 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP7 DUP8 AND PUSH1 0x20 DUP5 ADD MSTORE SWAP5 SWAP1 SWAP6 AND PUSH1 0x40 DUP3 ADD MSTORE PUSH1 0x60 DUP2 ADD SWAP3 SWAP1 SWAP3 MSTORE PUSH1 0x80 SWAP1 SWAP2 ADD MSTORE SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH0 DUP3 PUSH1 0x1F DUP4 ADD SLT PUSH2 0x1331 JUMPI PUSH0 PUSH0 REVERT JUMPDEST DUP2 MLOAD PUSH2 0x133F PUSH2 0x1110 DUP3 PUSH2 0x10CC JUMP JUMPDEST DUP2 DUP2 MSTORE DUP5 PUSH1 0x20 DUP4 DUP7 ADD ADD GT ISZERO PUSH2 0x1353 JUMPI PUSH0 PUSH0 REVERT JUMPDEST DUP2 PUSH1 0x20 DUP6 ADD PUSH1 0x20 DUP4 ADD MCOPY PUSH0 SWAP2 DUP2 ADD PUSH1 0x20 ADD SWAP2 SWAP1 SWAP2 MSTORE SWAP4 SWAP3 POP POP POP JUMP JUMPDEST PUSH0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x137F JUMPI PUSH0 PUSH0 REVERT JUMPDEST DUP2 MLOAD PUSH8 0xFFFFFFFFFFFFFFFF DUP2 GT ISZERO PUSH2 0x1395 JUMPI PUSH0 PUSH0 REVERT JUMPDEST PUSH2 0xD66 DUP5 DUP3 DUP6 ADD PUSH2 0x1322 JUMP JUMPDEST PUSH0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x13B1 JUMPI PUSH0 PUSH0 REVERT JUMPDEST DUP2 MLOAD PUSH8 0xFFFFFFFFFFFFFFFF DUP2 GT ISZERO PUSH2 0x13C7 JUMPI PUSH0 PUSH0 REVERT JUMPDEST DUP3 ADD PUSH1 0x60 DUP2 DUP6 SUB SLT ISZERO PUSH2 0x13D8 JUMPI PUSH0 PUSH0 REVERT JUMPDEST PUSH2 0x13E0 PUSH2 0x1072 JUMP JUMPDEST DUP2 MLOAD PUSH1 0x3 DUP2 LT PUSH2 0x13EE JUMPI PUSH0 PUSH0 REVERT JUMPDEST DUP2 MSTORE PUSH1 0x20 DUP3 DUP2 ADD MLOAD SWAP1 DUP3 ADD MSTORE PUSH1 0x40 DUP3 ADD MLOAD PUSH8 0xFFFFFFFFFFFFFFFF DUP2 GT ISZERO PUSH2 0x1413 JUMPI PUSH0 PUSH0 REVERT JUMPDEST PUSH2 0x141F DUP7 DUP3 DUP6 ADD PUSH2 0x1322 JUMP JUMPDEST PUSH1 0x40 DUP4 ADD MSTORE POP SWAP5 SWAP4 POP POP POP POP JUMP JUMPDEST PUSH1 0x40 DUP2 MSTORE PUSH0 PUSH2 0x143F PUSH1 0x40 DUP4 ADD DUP6 PUSH2 0x1223 JUMP JUMPDEST DUP3 DUP2 SUB PUSH1 0x20 DUP5 ADD MSTORE PUSH2 0x1451 DUP2 DUP6 PUSH2 0x1223 JUMP JUMPDEST SWAP6 SWAP5 POP POP POP POP POP JUMP JUMPDEST PUSH1 0x1 DUP2 DUP2 SHR SWAP1 DUP3 AND DUP1 PUSH2 0x146E JUMPI PUSH1 0x7F DUP3 AND SWAP2 POP JUMPDEST PUSH1 0x20 DUP3 LT DUP2 SUB PUSH2 0x148C JUMPI PUSH4 0x4E487B71 PUSH1 0xE0 SHL PUSH0 MSTORE PUSH1 0x22 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH0 REVERT JUMPDEST POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x1F DUP3 GT ISZERO PUSH2 0x6F1 JUMPI DUP1 PUSH0 MSTORE PUSH1 0x20 PUSH0 KECCAK256 PUSH1 0x1F DUP5 ADD PUSH1 0x5 SHR DUP2 ADD PUSH1 0x20 DUP6 LT ISZERO PUSH2 0x14B7 JUMPI POP DUP1 JUMPDEST PUSH1 0x1F DUP5 ADD PUSH1 0x5 SHR DUP3 ADD SWAP2 POP JUMPDEST DUP2 DUP2 LT ISZERO PUSH2 0x14D6 JUMPI PUSH0 DUP2 SSTORE PUSH1 0x1 ADD PUSH2 0x14C3 JUMP JUMPDEST POP POP POP POP POP JUMP JUMPDEST DUP2 MLOAD PUSH8 0xFFFFFFFFFFFFFFFF DUP2 GT ISZERO PUSH2 0x14F7 JUMPI PUSH2 0x14F7 PUSH2 0x105E JUMP JUMPDEST PUSH2 0x150B DUP2 PUSH2 0x1505 DUP5 SLOAD PUSH2 0x145A JUMP JUMPDEST DUP5 PUSH2 0x1492 JUMP JUMPDEST PUSH1 0x20 PUSH1 0x1F DUP3 GT PUSH1 0x1 DUP2 EQ PUSH2 0x153D JUMPI PUSH0 DUP4 ISZERO PUSH2 0x1526 JUMPI POP DUP5 DUP3 ADD MLOAD JUMPDEST PUSH0 NOT PUSH1 0x3 DUP6 SWAP1 SHL SHR NOT AND PUSH1 0x1 DUP5 SWAP1 SHL OR DUP5 SSTORE PUSH2 0x14D6 JUMP JUMPDEST PUSH0 DUP5 DUP2 MSTORE PUSH1 0x20 DUP2 KECCAK256 PUSH1 0x1F NOT DUP6 AND SWAP2 JUMPDEST DUP3 DUP2 LT ISZERO PUSH2 0x156C JUMPI DUP8 DUP6 ADD MLOAD DUP3 SSTORE PUSH1 0x20 SWAP5 DUP6 ADD SWAP5 PUSH1 0x1 SWAP1 SWAP3 ADD SWAP2 ADD PUSH2 0x154C JUMP JUMPDEST POP DUP5 DUP3 LT ISZERO PUSH2 0x1589 JUMPI DUP7 DUP5 ADD MLOAD PUSH0 NOT PUSH1 0x3 DUP8 SWAP1 SHL PUSH1 0xF8 AND SHR NOT AND DUP2 SSTORE JUMPDEST POP POP POP POP PUSH1 0x1 SWAP1 DUP2 SHL ADD SWAP1 SSTORE POP JUMP JUMPDEST DUP1 MLOAD PUSH10 0xFFFFFFFFFFFFFFFFFFFF DUP2 AND DUP2 EQ PUSH2 0x15B1 JUMPI PUSH0 PUSH0 REVERT JUMPDEST SWAP2 SWAP1 POP JUMP JUMPDEST PUSH0 PUSH0 PUSH0 PUSH0 PUSH0 PUSH1 0xA0 DUP7 DUP9 SUB SLT ISZERO PUSH2 0x15CA JUMPI PUSH0 PUSH0 REVERT JUMPDEST PUSH2 0x15D3 DUP7 PUSH2 0x1598 JUMP JUMPDEST PUSH1 0x20 DUP8 ADD MLOAD PUSH1 0x40 DUP9 ADD MLOAD PUSH1 0x60 DUP10 ADD MLOAD SWAP3 SWAP8 POP SWAP1 SWAP6 POP SWAP4 POP SWAP2 POP PUSH2 0x15F8 PUSH1 0x80 DUP8 ADD PUSH2 0x1598 JUMP JUMPDEST SWAP1 POP SWAP3 SWAP6 POP SWAP3 SWAP6 SWAP1 SWAP4 POP JUMP JUMPDEST PUSH4 0x4E487B71 PUSH1 0xE0 SHL PUSH0 MSTORE PUSH1 0x11 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH0 REVERT JUMPDEST DUP2 DUP2 SUB DUP2 DUP2 GT ISZERO PUSH2 0x398 JUMPI PUSH2 0x398 PUSH2 0x1604 JUMP JUMPDEST PUSH0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x163B JUMPI PUSH0 PUSH0 REVERT JUMPDEST DUP2 MLOAD PUSH2 0xA8A DUP2 PUSH2 0x1050 JUMP JUMPDEST PUSH1 0xFF DUP3 DUP2 AND DUP3 DUP3 AND SUB SWAP1 DUP2 GT ISZERO PUSH2 0x398 JUMPI PUSH2 0x398 PUSH2 0x1604 JUMP JUMPDEST PUSH1 0x1 DUP2 JUMPDEST PUSH1 0x1 DUP5 GT ISZERO PUSH2 0x169A JUMPI DUP1 DUP6 DIV DUP2 GT ISZERO PUSH2 0x167E JUMPI PUSH2 0x167E PUSH2 0x1604 JUMP JUMPDEST PUSH1 0x1 DUP5 AND ISZERO PUSH2 0x168C JUMPI SWAP1 DUP2 MUL SWAP1 JUMPDEST PUSH1 0x1 SWAP4 SWAP1 SWAP4 SHR SWAP3 DUP1 MUL PUSH2 0x1663 JUMP JUMPDEST SWAP4 POP SWAP4 SWAP2 POP POP JUMP JUMPDEST PUSH0 DUP3 PUSH2 0x16B0 JUMPI POP PUSH1 0x1 PUSH2 0x398 JUMP JUMPDEST DUP2 PUSH2 0x16BC JUMPI POP PUSH0 PUSH2 0x398 JUMP JUMPDEST DUP2 PUSH1 0x1 DUP2 EQ PUSH2 0x16D2 JUMPI PUSH1 0x2 DUP2 EQ PUSH2 0x16DC JUMPI PUSH2 0x16F8 JUMP JUMPDEST PUSH1 0x1 SWAP2 POP POP PUSH2 0x398 JUMP JUMPDEST PUSH1 0xFF DUP5 GT ISZERO PUSH2 0x16ED JUMPI PUSH2 0x16ED PUSH2 0x1604 JUMP JUMPDEST POP POP PUSH1 0x1 DUP3 SHL PUSH2 0x398 JUMP JUMPDEST POP PUSH1 0x20 DUP4 LT PUSH2 0x133 DUP4 LT AND PUSH1 0x4E DUP5 LT PUSH1 0xB DUP5 LT AND OR ISZERO PUSH2 0x171B JUMPI POP DUP2 DUP2 EXP PUSH2 0x398 JUMP JUMPDEST PUSH2 0x1727 PUSH0 NOT DUP5 DUP5 PUSH2 0x165F JUMP JUMPDEST DUP1 PUSH0 NOT DIV DUP3 GT ISZERO PUSH2 0x173A JUMPI PUSH2 0x173A PUSH2 0x1604 JUMP JUMPDEST MUL SWAP4 SWAP3 POP POP POP JUMP JUMPDEST PUSH0 PUSH2 0xA8A PUSH1 0xFF DUP5 AND DUP4 PUSH2 0x16A2 JUMP JUMPDEST DUP1 DUP3 MUL DUP2 ISZERO DUP3 DUP3 DIV DUP5 EQ OR PUSH2 0x398 JUMPI PUSH2 0x398 PUSH2 0x1604 JUMP JUMPDEST PUSH4 0x4E487B71 PUSH1 0xE0 SHL PUSH0 MSTORE PUSH1 0x12 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH0 REVERT JUMPDEST PUSH0 DUP3 PUSH2 0x1795 JUMPI PUSH4 0x4E487B71 PUSH1 0xE0 SHL PUSH0 MSTORE PUSH1 0x12 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH0 REVERT JUMPDEST POP DIV SWAP1 JUMP INVALID LOG2 PUSH5 0x6970667358 0x22 SLT KECCAK256 0xFC ADDMOD 0xA7 DUP10 RETURNDATASIZE 0x23 0xAF 0xDA 0x4C EXTCODECOPY 0xB4 0xA8 NOT ADDRESS 0xE8 PUSH29 0x3CC290D1B17C4F92B0C50FE828DFA09664736F6C634300081E00330000 ","sourceMap":"999:1817:77:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;7096:855:83;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;2194:175:77;;;:::i;:::-;;;2602:25:87;;;2590:2;2575:18;2194:175:77;2456:177:87;1072:50:77;;;;;;;;-1:-1:-1;;;;;2833:32:87;;;2815:51;;2803:2;2788:18;1072:50:77;2638:234:87;5298:741:83;;;;;;:::i;:::-;;:::i;:::-;;3003:194;;;;;;:::i;:::-;-1:-1:-1;;;3106:17:83;3003:194;8539:137;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;1126:56:77:-;;;;;1186:39;;;;;2566:165:83;;;;;;:::i;:::-;;:::i;1028:81::-;;;;;3235:104;;;;;;:::i;:::-;-1:-1:-1;3327:6:83;;3235:104;2339:189;;;;;;:::i;:::-;;:::i;6245:331::-;;;;;;:::i;:::-;;:::i;2769:196::-;;;;;;:::i;:::-;;:::i;3424:99::-;;;;;;:::i;:::-;-1:-1:-1;3505:12:83;;3424:99;4921:172;;;;;;:::i;:::-;;:::i;7096:855::-;7196:12;-1:-1:-1;;;;;1543:6:83;1526:23;1534:4;1526:23;1522:72;;1558:36;;-1:-1:-1;;;1558:36:83;;;;;;;;;;;1522:72;7216:28:::1;7247:22;::::0;::::1;::::0;;::::1;;;;:::i;:::-;7216:53:::0;-1:-1:-1;7296:28:83::1;7279:13:::0;:45;;::::1;;;;:::i;:::-;::::0;7275:648:::1;;7603:53;7618:29;7641:4;7618:14;:29::i;:::-;7649:6;7603:14;:53::i;:::-;-1:-1:-1::0;;7937:9:83::1;::::0;;::::1;::::0;::::1;::::0;;;-1:-1:-1;7937:9:83;;1600:1:::1;7096:855:::0;;;;:::o;2194:175:77:-;2260:7;2282:82;2294:34;2310:17;2294:15;:34::i;:::-;966:4:83;2335:28:77;2351:11;2335:15;:28::i;:::-;2282:11;:82::i;:::-;2275:89;;2194:175;:::o;5298:741:83:-;-1:-1:-1;;;;;1543:6:83;1526:23;1534:4;1526:23;1522:72;;1558:36;;-1:-1:-1;;;1558:36:83;;;;;;;;;;;1522:72;5376:24;;5393:7:::1;5376:24;5405:40;5448:20;:18;:20::i;:::-;5405:63;;5474:13;5490:22;:20;:22::i;:::-;5547:37;::::0;-1:-1:-1;;;5547:37:83;;5578:4:::1;5547:37;::::0;::::1;2815:51:87::0;5474:38:83;;-1:-1:-1;5532:68:83::1;::::0;-1:-1:-1;;;;;5547:12:83::1;:22;::::0;::::1;::::0;2788:18:87;;5547:37:83::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;5594:4;5532:14;:68::i;:::-;5522:6;:78;5518:517;;5885:37;::::0;-1:-1:-1;;;5885:37:83;;5916:4:::1;5885:37;::::0;::::1;2815:51:87::0;5823:21:83::1;::::0;::::1;::::0;:10;;5853:12:::1;::::0;5876:6:::1;::::0;-1:-1:-1;;;;;5885:22:83;::::1;::::0;::::1;::::0;2788:18:87;;5885:37:83::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;5924:5;5823:107;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;5518:517;;;5951:77;::::0;-1:-1:-1;;;5951:77:83;;:22:::1;::::0;::::1;::::0;:77:::1;::::0;:10;;5982:12:::1;::::0;6005:6:::1;::::0;6014;;6022:5;;5951:77:::1;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;5518:517;5370:669;;1600:1;5298:741:::0;:::o;8539:137::-;-1:-1:-1;;;;;;;;;;;;;;;;;;;;;;;;8646:25:83;8661:9;8646:14;:25::i;2566:165::-;-1:-1:-1;;;;;1543:6:83;1526:23;1534:4;1526:23;1522:72;;1558:36;;-1:-1:-1;;;1558:36:83;;;;;;;;;;;1522:72;2649:5:::1;2648:6;:41;;;;;2658:26;2678:4;2658:11;:26::i;:::-;:31:::0;::::1;2648:41;2644:82;;;2698:28;;-1:-1:-1::0;;;2698:28:83::1;;;;;;;;;;;2339:189:::0;-1:-1:-1;;;;;1543:6:83;1526:23;1534:4;1526:23;1522:72;;1558:36;;-1:-1:-1;;;1558:36:83;;;;;;;;;;;1522:72;2440::::1;::::0;;::::1;::::0;::::1;::::0;;;2425:98:::1;::::0;2440:72;-1:-1:-1;2440:72:83::1;;;;2499:1;2440:72;;;;2502:9;;;;;;;;;;;::::0;2440:72:::1;;::::0;2514:8:::1;2425:14;:98::i;6245:331::-:0;-1:-1:-1;;;;;1543:6:83;1526:23;1534:4;1526:23;1522:72;;1558:36;;-1:-1:-1;;;1558:36:83;;;;;;;;;;;1522:72;6322:24;;6339:7:::1;6322:24;6472:20;:18;:20::i;:::-;:31;;;;6512:6;6529:12;6544:6;6552:18;:16;:18::i;:::-;6472:99;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;6245:331:::0;:::o;2769:196::-;2847:7;2869:22;2881:9;4921:172;5043:33;;-1:-1:-1;;;5043:33:83;;-1:-1:-1;;;;;2833:32:87;;;5043:33:83;;;2815:51:87;4999:14:83;;5028:60;;5043:12;:22;;;;2788:18:87;;5043:33:83;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;5078:9;5028:14;:60::i;7955:260::-;-1:-1:-1;;;;;;;;;;;;;;;;;;;;;;;;8091:51:83;;-1:-1:-1;;;8091:51:83;;8130:11;8091:51;;;2602:25:87;8058:30:83;;-1:-1:-1;;;;;8091:38:83;;;;;2575:18:87;;8091:51:83;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;8091:51:83;;;;;;;;;;;;:::i;:::-;8058:84;;8166:17;8155:55;;;;;;;;;;;;:::i;:::-;8148:62;7955:260;-1:-1:-1;;;7955:260:83:o;6580:478::-;6699:40;6753:20;6742:58;;;;;;;;;;;;:::i;:::-;6806:21;;-1:-1:-1;;;6806:21:83;;6699:101;;-1:-1:-1;6806:19:83;;;;:21;;6699:101;;6806:21;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;6870:20;:27;6848:10;6837:22;;;;;;;;:::i;:::-;;;;;;;;;;;;;:29;:60;6833:93;;6906:20;;-1:-1:-1;;;6906:20:83;;;;;;;;;;;6833:93;6937:44;6955:13;6970:10;6937:44;;;;;;;:::i;:::-;;;;;;;;7012:11;6987:66;7033:20;7012:11;6987:66;:::i;2373:441:77:-;2451:7;-1:-1:-1;;;;;2470:29:77;;2466:45;;-1:-1:-1;966:4:83;;2373:441:77;-1:-1:-1;2373:441:77:o;2466:45::-;2520:13;2537:17;2560:6;-1:-1:-1;;;;;2560:22:77;;:24;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;2517:67;;;;;;;2628:14;2610:15;:32;;;;:::i;:::-;2598:44;;2656:32;2674:14;2656:15;:32;:::i;:::-;2690:9;2590:111;;;;;;-1:-1:-1;;;2590:111:77;;;;;12235:25:87;;;;12276:18;;;12269:34;12208:18;;2590:111:77;;;;;;;;;;;2724:1;2715:6;:10;2740:6;2707:41;;;;;-1:-1:-1;;;2707:41:77;;;;;;2602:25:87;;2590:2;2575:18;;2456:177;2707:41:77;;2791:6;-1:-1:-1;;;;;2791:15:77;;:17;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;2786:22;;:2;:22;:::i;:::-;2779:30;;:2;:30;:::i;:::-;2761:48;;2769:6;2761:48;:::i;:::-;2754:55;2373:441;-1:-1:-1;;;;2373:441:77:o;7258:3683:47:-;7340:14;7391:12;7405:11;7420:12;7427:1;7430;7420:6;:12::i;:::-;7390:42;;;;7514:4;7522:1;7514:9;7510:365;;7849:11;7843:3;:17;;;;;:::i;:::-;;7836:24;;;;;;7510:365;8000:4;7985:11;:19;7981:142;;8024:84;5328:5;8044:16;;5327:36;940:4:43;5322:42:47;8024:11;:84::i;:::-;8375:17;8526:11;8523:1;8520;8513:25;8918:12;8948:15;;;8933:31;;9083:22;;;;;9816:1;9797;:15;;9796:21;;10049;;;10045:25;;10034:36;10119:21;;;10115:25;;10104:36;10191:21;;;10187:25;;10176:36;10262:21;;;10258:25;;10247:36;10335:21;;;10331:25;;10320:36;10409:21;;;10405:25;;;10394:36;9325:12;;;;9321:23;;;9346:1;9317:31;8638:18;;;8628:29;;;9432:11;;;;8681:19;;;;9176:14;;;;9425:18;;;;10884:13;;-1:-1:-1;;7258:3683:47;;;;;:::o;8219:183:83:-;-1:-1:-1;;;;;;;;;;;;;;;;;;;;;;;;8352:11:83;8316:81;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;3919:174::-;3974:7;3996:41;966:4;;4018:18;:16;:18::i;4550:333::-;4646:14;4858:20;4871:6;4858:12;:20::i;:::-;4681:174;4702:79;4729:26;4742:12;4729;:26::i;:::-;4714:41;;:12;:41;:::i;:::-;4757:18;:16;:18::i;:::-;966:4;4702:11;:79::i;:::-;4797:25;4812:9;4797:14;:25::i;:::-;:37;;;4791:43;;966:4;4791:43;:::i;4681:174::-;:197;;;;:::i;1027:550:47:-;1088:12;;-1:-1:-1;;1471:1:47;1468;1461:20;1501:9;;;;1549:11;;;1535:12;;;;1531:30;;;;;1027:550;-1:-1:-1;;1027:550:47:o;1776:194:43:-;1881:10;1875:4;1868:24;1918:4;1912;1905:18;1949:4;1943;1936:18;2178:123:83;2245:7;2279:5;-1:-1:-1;;;;;2279:14:83;;:16;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;2274:21;;:2;:21;:::i;:::-;2267:29;;:2;:29;:::i;14:114:87:-;98:4;91:5;87:16;80:5;77:27;67:55;;118:1;115;108:12;133:127;194:10;189:3;185:20;182:1;175:31;225:4;222:1;215:15;249:4;246:1;239:15;265:253;337:2;331:9;379:4;367:17;;414:18;399:34;;435:22;;;396:62;393:88;;;461:18;;:::i;:::-;497:2;490:22;265:253;:::o;523:275::-;594:2;588:9;659:2;640:13;;-1:-1:-1;;636:27:87;624:40;;694:18;679:34;;715:22;;;676:62;673:88;;;741:18;;:::i;:::-;777:2;770:22;523:275;;-1:-1:-1;523:275:87:o;803:186::-;851:4;884:18;876:6;873:30;870:56;;;906:18;;:::i;:::-;-1:-1:-1;972:2:87;951:15;-1:-1:-1;;947:29:87;978:4;943:40;;803:186::o;994:486::-;1036:5;1089:3;1082:4;1074:6;1070:17;1066:27;1056:55;;1107:1;1104;1097:12;1056:55;1147:6;1134:20;1178:52;1194:35;1222:6;1194:35;:::i;:::-;1178:52;:::i;:::-;1255:6;1246:7;1239:23;1309:3;1302:4;1293:6;1285;1281:19;1277:30;1274:39;1271:59;;;1326:1;1323;1316:12;1271:59;1391:6;1384:4;1376:6;1372:17;1365:4;1356:7;1352:18;1339:59;1447:1;1418:20;;;1440:4;1414:31;1407:42;;;;1422:7;994:486;-1:-1:-1;;;994:486:87:o;1485:451::-;1560:6;1568;1621:2;1609:9;1600:7;1596:23;1592:32;1589:52;;;1637:1;1634;1627:12;1589:52;1676:9;1663:23;1695:29;1718:5;1695:29;:::i;:::-;1743:5;-1:-1:-1;1799:2:87;1784:18;;1771:32;1826:18;1815:30;;1812:50;;;1858:1;1855;1848:12;1812:50;1881:49;1922:7;1913:6;1902:9;1898:22;1881:49;:::i;:::-;1871:59;;;1485:451;;;;;:::o;1941:288::-;1982:3;2020:5;2014:12;2047:6;2042:3;2035:19;2103:6;2096:4;2089:5;2085:16;2078:4;2073:3;2069:14;2063:47;2155:1;2148:4;2139:6;2134:3;2130:16;2126:27;2119:38;2218:4;2211:2;2207:7;2202:2;2194:6;2190:15;2186:29;2181:3;2177:39;2173:50;2166:57;;;1941:288;;;;:::o;2234:217::-;2381:2;2370:9;2363:21;2344:4;2401:44;2441:2;2430:9;2426:18;2418:6;2401:44;:::i;2877:180::-;2936:6;2989:2;2977:9;2968:7;2964:23;2960:32;2957:52;;;3005:1;3002;2995:12;2957:52;-1:-1:-1;3028:23:87;;2877:180;-1:-1:-1;2877:180:87:o;3062:286::-;3121:6;3174:2;3162:9;3153:7;3149:23;3145:32;3142:52;;;3190:1;3187;3180:12;3142:52;3216:23;;-1:-1:-1;;;;;3268:31:87;;3258:42;;3248:70;;3314:1;3311;3304:12;3353:127;3414:10;3409:3;3405:20;3402:1;3395:31;3445:4;3442:1;3435:15;3469:4;3466:1;3459:15;3485:479;3538:3;3572:5;3566:12;3604:1;3600:2;3597:9;3587:140;;3649:10;3644:3;3640:20;3637:1;3630:31;3684:4;3681:1;3674:15;3712:4;3709:1;3702:15;3587:140;3748:2;3743:3;3736:15;;3800:4;3793:5;3789:16;3783:23;3776:4;3771:3;3767:14;3760:47;3853:4;3846:5;3842:16;3836:23;3891:4;3884;3879:3;3875:14;3868:28;3912:46;3952:4;3947:3;3943:14;3929:12;3912:46;:::i;3969:267::-;4154:2;4143:9;4136:21;4117:4;4174:56;4226:2;4215:9;4211:18;4203:6;4174:56;:::i;4241:273::-;4297:6;4350:2;4338:9;4329:7;4325:23;4321:32;4318:52;;;4366:1;4363;4356:12;4318:52;4405:9;4392:23;4458:5;4451:13;4444:21;4437:5;4434:32;4424:60;;4480:1;4477;4470:12;4909:320;4977:6;5030:2;5018:9;5009:7;5005:23;5001:32;4998:52;;;5046:1;5043;5036:12;4998:52;5086:9;5073:23;5119:18;5111:6;5108:30;5105:50;;;5151:1;5148;5141:12;5105:50;5174:49;5215:7;5206:6;5195:9;5191:22;5174:49;:::i;5234:230::-;5304:6;5357:2;5345:9;5336:7;5332:23;5328:32;5325:52;;;5373:1;5370;5363:12;5325:52;-1:-1:-1;5418:16:87;;5234:230;-1:-1:-1;5234:230:87:o;5469:614::-;5774:3;5763:9;5756:22;5737:4;5795:57;5847:3;5836:9;5832:19;5824:6;5795:57;:::i;:::-;-1:-1:-1;;;;;5888:32:87;;;5883:2;5868:18;;5861:60;5957:32;;;;5952:2;5937:18;;5930:60;6021:2;6006:18;;5999:34;;;;6064:3;6049:19;;;6042:35;5787:65;5469:614;-1:-1:-1;;5469:614:87:o;6088:483::-;6141:5;6194:3;6187:4;6179:6;6175:17;6171:27;6161:55;;6212:1;6209;6202:12;6161:55;6245:6;6239:13;6276:52;6292:35;6320:6;6292:35;:::i;6276:52::-;6353:6;6344:7;6337:23;6407:3;6400:4;6391:6;6383;6379:19;6375:30;6372:39;6369:59;;;6424:1;6421;6414:12;6369:59;6482:6;6475:4;6467:6;6463:17;6456:4;6447:7;6443:18;6437:52;6538:1;6509:20;;;6531:4;6505:31;6498:42;;;;6513:7;6088:483;-1:-1:-1;;;6088:483:87:o;6576:335::-;6655:6;6708:2;6696:9;6687:7;6683:23;6679:32;6676:52;;;6724:1;6721;6714:12;6676:52;6757:9;6751:16;6790:18;6782:6;6779:30;6776:50;;;6822:1;6819;6812:12;6776:50;6845:60;6897:7;6888:6;6877:9;6873:22;6845:60;:::i;6916:850::-;7014:6;7067:2;7055:9;7046:7;7042:23;7038:32;7035:52;;;7083:1;7080;7073:12;7035:52;7116:9;7110:16;7149:18;7141:6;7138:30;7135:50;;;7181:1;7178;7171:12;7135:50;7204:22;;7260:4;7242:16;;;7238:27;7235:47;;;7278:1;7275;7268:12;7235:47;7304:22;;:::i;:::-;7356:2;7350:9;7390:1;7381:7;7378:14;7368:42;;7406:1;7403;7396:12;7368:42;7419:22;;7500:2;7492:11;;;7486:18;7520:14;;;7513:31;7583:2;7575:11;;7569:18;7612;7599:32;;7596:52;;;7644:1;7641;7634:12;7596:52;7680:55;7727:7;7716:8;7712:2;7708:17;7680:55;:::i;:::-;7675:2;7664:14;;7657:79;-1:-1:-1;7668:5:87;6916:850;-1:-1:-1;;;;6916:850:87:o;8051:477::-;8320:2;8309:9;8302:21;8283:4;8346:56;8398:2;8387:9;8383:18;8375:6;8346:56;:::i;:::-;8450:9;8442:6;8438:22;8433:2;8422:9;8418:18;8411:50;8478:44;8515:6;8507;8478:44;:::i;:::-;8470:52;8051:477;-1:-1:-1;;;;;8051:477:87:o;8533:380::-;8612:1;8608:12;;;;8655;;;8676:61;;8730:4;8722:6;8718:17;8708:27;;8676:61;8783:2;8775:6;8772:14;8752:18;8749:38;8746:161;;8829:10;8824:3;8820:20;8817:1;8810:31;8864:4;8861:1;8854:15;8892:4;8889:1;8882:15;8746:161;;8533:380;;;:::o;9043:517::-;9144:2;9139:3;9136:11;9133:421;;;9180:5;9177:1;9170:16;9224:4;9221:1;9211:18;9294:2;9282:10;9278:19;9275:1;9271:27;9265:4;9261:38;9330:4;9318:10;9315:20;9312:47;;;-1:-1:-1;9353:4:87;9312:47;9408:2;9403:3;9399:12;9396:1;9392:20;9386:4;9382:31;9372:41;;9463:81;9481:2;9474:5;9471:13;9463:81;;;9540:1;9526:16;;9507:1;9496:13;9463:81;;;9467:3;;9043:517;;;:::o;9736:1295::-;9860:3;9854:10;9887:18;9879:6;9876:30;9873:56;;;9909:18;;:::i;:::-;9938:96;10027:6;9987:38;10019:4;10013:11;9987:38;:::i;:::-;9981:4;9938:96;:::i;:::-;10083:4;10114:2;10103:14;;10131:1;10126:648;;;;10818:1;10835:6;10832:89;;;-1:-1:-1;10887:19:87;;;10881:26;10832:89;-1:-1:-1;;9693:1:87;9689:11;;;9685:24;9681:29;9671:40;9717:1;9713:11;;;9668:57;10934:81;;10096:929;;10126:648;8990:1;8983:14;;;9027:4;9014:18;;-1:-1:-1;;10162:20:87;;;10279:222;10293:7;10290:1;10287:14;10279:222;;;10375:19;;;10369:26;10354:42;;10482:4;10467:20;;;;10435:1;10423:14;;;;10309:12;10279:222;;;10283:3;10529:6;10520:7;10517:19;10514:201;;;10590:19;;;10584:26;-1:-1:-1;;10673:1:87;10669:14;;;10685:3;10665:24;10661:37;10657:42;10642:58;10627:74;;10514:201;-1:-1:-1;;;;10761:1:87;10745:14;;;10741:22;10728:36;;-1:-1:-1;9736:1295:87:o;11036:179::-;11114:13;;11167:22;11156:34;;11146:45;;11136:73;;11205:1;11202;11195:12;11136:73;11036:179;;;:::o;11220:571::-;11323:6;11331;11339;11347;11355;11408:3;11396:9;11387:7;11383:23;11379:33;11376:53;;;11425:1;11422;11415:12;11376:53;11448:39;11477:9;11448:39;:::i;:::-;11527:2;11512:18;;11506:25;11593:2;11578:18;;11572:25;11687:2;11672:18;;11666:25;11438:49;;-1:-1:-1;11506:25:87;;-1:-1:-1;11572:25:87;-1:-1:-1;11666:25:87;-1:-1:-1;11736:49:87;11780:3;11765:19;;11736:49;:::i;:::-;11726:59;;11220:571;;;;;;;;:::o;11796:127::-;11857:10;11852:3;11848:20;11845:1;11838:31;11888:4;11885:1;11878:15;11912:4;11909:1;11902:15;11928:128;11995:9;;;12016:11;;;12013:37;;;12030:18;;:::i;12494:247::-;12562:6;12615:2;12603:9;12594:7;12590:23;12586:32;12583:52;;;12631:1;12628;12621:12;12583:52;12663:9;12657:16;12682:29;12705:5;12682:29;:::i;12746:151::-;12836:4;12829:12;;;12815;;;12811:31;;12854:14;;12851:40;;;12871:18;;:::i;12902:375::-;12990:1;13008:5;13022:249;13043:1;13033:8;13030:15;13022:249;;;13093:4;13088:3;13084:14;13078:4;13075:24;13072:50;;;13102:18;;:::i;:::-;13152:1;13142:8;13138:16;13135:49;;;13166:16;;;;13135:49;13249:1;13245:16;;;;;13205:15;;13022:249;;;12902:375;;;;;;:::o;13282:902::-;13331:5;13361:8;13351:80;;-1:-1:-1;13402:1:87;13416:5;;13351:80;13450:4;13440:76;;-1:-1:-1;13487:1:87;13501:5;;13440:76;13532:4;13550:1;13545:59;;;;13618:1;13613:174;;;;13525:262;;13545:59;13575:1;13566:10;;13589:5;;;13613:174;13650:3;13640:8;13637:17;13634:43;;;13657:18;;:::i;:::-;-1:-1:-1;;13713:1:87;13699:16;;13772:5;;13525:262;;13871:2;13861:8;13858:16;13852:3;13846:4;13843:13;13839:36;13833:2;13823:8;13820:16;13815:2;13809:4;13806:12;13802:35;13799:77;13796:203;;;-1:-1:-1;13908:19:87;;;13984:5;;13796:203;14031:42;-1:-1:-1;;14056:8:87;14050:4;14031:42;:::i;:::-;14109:6;14105:1;14101:6;14097:19;14088:7;14085:32;14082:58;;;14120:18;;:::i;:::-;14158:20;;13282:902;-1:-1:-1;;;13282:902:87:o;14189:140::-;14247:5;14276:47;14317:4;14307:8;14303:19;14297:4;14276:47;:::i;14334:168::-;14407:9;;;14438;;14455:15;;;14449:22;;14435:37;14425:71;;14476:18;;:::i;14507:127::-;14568:10;14563:3;14559:20;14556:1;14549:31;14599:4;14596:1;14589:15;14623:4;14620:1;14613:15;14639:217;14679:1;14705;14695:132;;14749:10;14744:3;14740:20;14737:1;14730:31;14784:4;14781:1;14774:15;14812:4;14809:1;14802:15;14695:132;-1:-1:-1;14841:9:87;;14639:217::o"},"methodIdentifiers":{"asset(address)":"9c4667a2","assetOracle()":"1d4d3a5d","connect(bytes)":"9cd47128","deposit(uint256)":"b6b55f25","disconnect(bool)":"5a117456","forwardEntryPoint(uint8,bytes)":"0981b1c2","getSwapConfig(address)":"42b054f0","investAsset(address)":"de846ae4","investAssetOracle()":"52ebfa29","investAssetPrice()":"1418983b","maxDeposit(address)":"402d267d","maxWithdraw(address)":"ce96cb77","priceTolerance()":"59011cd1","storageSlot()":"5b9a4c35","totalAssets(address)":"f3e0ffbf","withdraw(uint256)":"2e1a7d4d"}},"metadata":"{\"compiler\":{\"version\":\"0.8.30+commit.73712a01\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"inputs\":[{\"internalType\":\"contract IERC20Metadata\",\"name\":\"asset_\",\"type\":\"address\"},{\"internalType\":\"contract IERC20Metadata\",\"name\":\"investAsset_\",\"type\":\"address\"},{\"internalType\":\"contract AggregatorV3Interface\",\"name\":\"assetOracle_\",\"type\":\"address\"},{\"internalType\":\"contract AggregatorV3Interface\",\"name\":\"investAssetOracle_\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"priceTolerance_\",\"type\":\"uint256\"}],\"stateMutability\":\"nonpayable\",\"type\":\"constructor\"},{\"inputs\":[],\"name\":\"CanBeCalledOnlyThroughDelegateCall\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"CannotDisconnectWithAssets\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"InvalidAsset\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"int256\",\"name\":\"chainlinkAnswer\",\"type\":\"int256\"}],\"name\":\"InvalidPrice\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"NoExtraDataAllowed\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"minUpdateAt\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"updatedAt\",\"type\":\"uint256\"}],\"name\":\"PriceTooOld\",\"type\":\"error\"},{\"anonymous\":false,\"inputs\":[{\"components\":[{\"internalType\":\"enum SwapLibrary.SwapProtocol\",\"name\":\"protocol\",\"type\":\"uint8\"},{\"internalType\":\"uint256\",\"name\":\"maxSlippage\",\"type\":\"uint256\"},{\"internalType\":\"bytes\",\"name\":\"customParams\",\"type\":\"bytes\"}],\"indexed\":false,\"internalType\":\"struct SwapLibrary.SwapConfig\",\"name\":\"oldConfig\",\"type\":\"tuple\"},{\"components\":[{\"internalType\":\"enum SwapLibrary.SwapProtocol\",\"name\":\"protocol\",\"type\":\"uint8\"},{\"internalType\":\"uint256\",\"name\":\"maxSlippage\",\"type\":\"uint256\"},{\"internalType\":\"bytes\",\"name\":\"customParams\",\"type\":\"bytes\"}],\"indexed\":false,\"internalType\":\"struct SwapLibrary.SwapConfig\",\"name\":\"newConfig\",\"type\":\"tuple\"}],\"name\":\"SwapConfigChanged\",\"type\":\"event\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"name\":\"asset\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"assetOracle\",\"outputs\":[{\"internalType\":\"contract AggregatorV3Interface\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes\",\"name\":\"initData\",\"type\":\"bytes\"}],\"name\":\"connect\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"assets\",\"type\":\"uint256\"}],\"name\":\"deposit\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bool\",\"name\":\"force\",\"type\":\"bool\"}],\"name\":\"disconnect\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint8\",\"name\":\"method\",\"type\":\"uint8\"},{\"internalType\":\"bytes\",\"name\":\"params\",\"type\":\"bytes\"}],\"name\":\"forwardEntryPoint\",\"outputs\":[{\"internalType\":\"bytes\",\"name\":\"\",\"type\":\"bytes\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"contract_\",\"type\":\"address\"}],\"name\":\"getSwapConfig\",\"outputs\":[{\"components\":[{\"internalType\":\"enum SwapLibrary.SwapProtocol\",\"name\":\"protocol\",\"type\":\"uint8\"},{\"internalType\":\"uint256\",\"name\":\"maxSlippage\",\"type\":\"uint256\"},{\"internalType\":\"bytes\",\"name\":\"customParams\",\"type\":\"bytes\"}],\"internalType\":\"struct SwapLibrary.SwapConfig\",\"name\":\"\",\"type\":\"tuple\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"name\":\"investAsset\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"investAssetOracle\",\"outputs\":[{\"internalType\":\"contract AggregatorV3Interface\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"investAssetPrice\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"name\":\"maxDeposit\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"contract_\",\"type\":\"address\"}],\"name\":\"maxWithdraw\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"priceTolerance\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"storageSlot\",\"outputs\":[{\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"contract_\",\"type\":\"address\"}],\"name\":\"totalAssets\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"assets\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"assets\",\"type\":\"uint256\"}],\"name\":\"withdraw\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"}],\"devdoc\":{\"author\":\"Ensuro\",\"custom:security-contact\":\"security@ensuro.co\",\"details\":\"Strategy that invests/deinvests by swapping into another token, where the price of both tokens is obtained      from chainlink oracles.      The oracles should express the prices in the same base. For example if asset=USDC and investAsset=WPOL,      then `assetOracle()` is an oracle that returns the price of USDC in USD (or other base) and      `investAssetOracle()` is an oracle that returns the price of WPOL in USD (or other base, but the same as      `assetOracle()`).\",\"kind\":\"dev\",\"methods\":{\"asset(address)\":{\"details\":\"The address of the underlying token used for accounting, depositing, and withdrawing. It must be the same      as `IERC4626(contract_).asset()` when dealing with vaults.\",\"params\":{\"contract_\":\"The address of the vault contract that owns the assets.\"}},\"connect(bytes)\":{\"details\":\"Called when the strategy is plugged into the vault. Initializes the strategy storage and can do validations\",\"params\":{\"initData\":\"Initialization data for the strategy. Must be parsed by the strategy, since the format is                 strategy specific\"}},\"constructor\":{\"details\":\"Constructor of the strategy\",\"params\":{\"assetOracle_\":\"The chainlink oracle to obtain the price of the asset. If address(0) the price is 1.\",\"asset_\":\"The address of the underlying token used for accounting, depositing, and withdrawing.\",\"investAssetOracle_\":\"The chainlink oracle to obtain the price of the invest asset. If address(0) => 1\",\"investAsset_\":\"The address of the tokens hold by the strategy. Typically a rebasing yield bearing token\"}},\"deposit(uint256)\":{\"details\":\"Deposit the amount of assets given into the strategy by swapping _asset to _investAsset\",\"params\":{\"assets\":\"Amount of assets to be deposited.\"}},\"disconnect(bool)\":{\"details\":\"Called when the strategy is un-plugged from the vault. Should revert if there are still assets in the      strategy, unless force==true.\",\"params\":{\"force\":\"If true, disconnect should not fail if assets remain in the strategy. Otherwise, disconnect              MUST fail if totalAssets() != 0.\"}},\"forwardEntryPoint(uint8,bytes)\":{\"details\":\"Receives an external call to execute a custom method of action in the strategy. Can be used for harvesting      rewards or other tasks. It's called with delegatecall from the calling vault. The calling vault SHOULD      do the access control validation, since the strategy normally won't do it.\",\"params\":{\"method\":\"An id of the method or action to call/execute. It's recommended to define an enum and convert the               the uint8 value into the enum.\",\"params\":\"Params for the method or action. Parsed by the strategy, it might differ from one or other method.\"}},\"getSwapConfig(address)\":{\"details\":\"Returns the swap configuration of the given contract.\",\"params\":{\"contract_\":\"Address of the vault contract\"}},\"investAsset(address)\":{\"details\":\"Returns the address of the asset invested in the strategy.\"},\"investAssetPrice()\":{\"details\":\"Returns the amount of `asset()` required to acquire one unit of `investAsset()` or the amount of `asset()`      that should be received by selling a unit of `investAsset()`. It doesn't consider slippage.\",\"returns\":{\"_0\":\"The amount is expressed in WAD (18 decimals), units: (asset/investAsset)\"}},\"maxDeposit(address)\":{\"details\":\"Returns the max amount that can be deposited into the strategy.\",\"params\":{\"contract_\":\"The address of the vault contract that owns the assets and where the strategy is plugged\"}},\"maxWithdraw(address)\":{\"details\":\"Returns the max amount that can be withdrawn from the strategy.\",\"params\":{\"contract_\":\"The address of the vault contract that owns the assets and where the strategy is plugged\"}},\"totalAssets(address)\":{\"details\":\"Returns the number of assets under management of the investment strategy for a given contract.\",\"params\":{\"contract_\":\"The address of the vault contract that owns the assets and where the strategy is plugged\"}},\"withdraw(uint256)\":{\"details\":\"Withdraws the amount of assets given from the strategy swapping _investAsset to _asset\",\"params\":{\"assets\":\"Amount of assets to be withdrawn.\"}}},\"title\":\"ChainlinkSwapAssetInvestStrategy\",\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{},\"version\":1}},\"settings\":{\"compilationTarget\":{\"contracts/strategies/ChainlinkSwapAssetInvestStrategy.sol\":\"ChainlinkSwapAssetInvestStrategy\"},\"evmVersion\":\"prague\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"enabled\":true,\"runs\":200},\"remappings\":[]},\"sources\":{\"@ensuro/swaplibrary/contracts/CurveRoutes.sol\":{\"keccak256\":\"0x631af8ec291043d7eef34b97a427a4f53eb46d852088f6620c46a36a7e851963\",\"license\":\"Apache-2.0\",\"urls\":[\"bzz-raw://fbaf0f64980572d977b87b83e8bfc9c79fd1d2dc49a21e77e2a11fb8dec2413a\",\"dweb:/ipfs/QmYTpv2BroRz8PpWXYRp5KaaCXRy3tkZ95DeXybP4j3ti4\"]},\"@ensuro/swaplibrary/contracts/SwapLibrary.sol\":{\"keccak256\":\"0x3b1db1690ce8fa74972e4b4a57de41f4a880c8566b279316113d7398ea711812\",\"license\":\"Apache-2.0\",\"urls\":[\"bzz-raw://2746b500f5916604c16589fdbabf94b4d97689dcb96095376ed4956f9de663a6\",\"dweb:/ipfs/QmepecwnwauXsLuQmmoFNbH5XbZYEHH4bjnshQRRUeyH4r\"]},\"@ensuro/swaplibrary/contracts/dependencies/ICurveRouter.sol\":{\"keccak256\":\"0xf8c39f61b7459cfe6ba74d88fee74efd6d3d05d5cd64dc9eb6d08fbe0361affd\",\"license\":\"UNLICENSED\",\"urls\":[\"bzz-raw://55f11ef7e1cc66fa2c6c2aec436ccf00a835acf4281bff4ee9b4d2cb8980c92f\",\"dweb:/ipfs/QmPfvjcbLbHwoFRFGkM5zvM25vrEvZxjwbxSUL5jm5n3pZ\"]},\"@openzeppelin/contracts/interfaces/IERC20Metadata.sol\":{\"keccak256\":\"0xd735962e3d6660884153ba8a972b5f100dde4c482f2ff1c525ba7fdefb154cbd\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://5a264d17b093f585844b0d977e9f60555b8c8d6513b304fde863cdf652a0d336\",\"dweb:/ipfs/QmWXfaJisjVnrjTUjZGryZpMob9wKivvtbodLS3PTc1ttq\"]},\"@openzeppelin/contracts/token/ERC20/IERC20.sol\":{\"keccak256\":\"0x74ed01eb66b923d0d0cfe3be84604ac04b76482a55f9dd655e1ef4d367f95bc2\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://5282825a626cfe924e504274b864a652b0023591fa66f06a067b25b51ba9b303\",\"dweb:/ipfs/QmeCfPykghhMc81VJTrHTC7sF6CRvaA1FXVq2pJhwYp1dV\"]},\"@openzeppelin/contracts/token/ERC20/extensions/IERC20Metadata.sol\":{\"keccak256\":\"0xd6fa4088198f04eef10c5bce8a2f4d60554b7ec4b987f684393c01bf79b94d9f\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://f95ee0bbd4dd3ac730d066ba3e785ded4565e890dbec2fa7d3b9fe3bad9d0d6e\",\"dweb:/ipfs/QmSLr6bHkPFWT7ntj34jmwfyskpwo97T9jZUrk5sz3sdtR\"]},\"@openzeppelin/contracts/utils/Address.sol\":{\"keccak256\":\"0x0fa9e0d3a859900b5a46f70a03c73adf259603d5e05027a37fe0b45529d85346\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://c2add4da0240c9f2ce47649c8bb6b11b40e98cf6f88b8bdc76b2704e89391710\",\"dweb:/ipfs/QmNQTwF2uVzu4CRtNxr8bxyP9XuW6VsZuo2Nr4KR2bZr3d\"]},\"@openzeppelin/contracts/utils/Errors.sol\":{\"keccak256\":\"0x6afa713bfd42cf0f7656efa91201007ac465e42049d7de1d50753a373648c123\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://ba1d02f4847670a1b83dec9f7d37f0b0418d6043447b69f3a29a5f9efc547fcf\",\"dweb:/ipfs/QmQ7iH2keLNUKgq2xSWcRmuBE5eZ3F5whYAkAGzCNNoEWB\"]},\"@openzeppelin/contracts/utils/LowLevelCall.sol\":{\"keccak256\":\"0x5b4802a4352474792df3107e961d1cc593e47b820c14f69d3505cb28f5a6a583\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://a6f86fd01f829499fe0545ff5dda07d4521988e88bfe0bf801fc15650921ed56\",\"dweb:/ipfs/QmUUKu4ZDffHAmfkf3asuQfmLTyfpuy2Amdncc3SqfzKPG\"]},\"@openzeppelin/contracts/utils/Panic.sol\":{\"keccak256\":\"0xf7fe324703a64fc51702311dc51562d5cb1497734f074e4f483bfb6717572d7a\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://c6a5ff4f9fd8649b7ee20800b7fa387d3465bd77cf20c2d1068cd5c98e1ed57a\",\"dweb:/ipfs/QmVSaVJf9FXFhdYEYeCEfjMVHrxDh5qL4CGkxdMWpQCrqG\"]},\"@openzeppelin/contracts/utils/StorageSlot.sol\":{\"keccak256\":\"0xcf74f855663ce2ae00ed8352666b7935f6cddea2932fdf2c3ecd30a9b1cd0e97\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://9f660b1f351b757dfe01438e59888f31f33ded3afcf5cb5b0d9bf9aa6f320a8b\",\"dweb:/ipfs/QmarDJ5hZEgBtCmmrVzEZWjub9769eD686jmzb2XpSU1cM\"]},\"@openzeppelin/contracts/utils/math/Math.sol\":{\"keccak256\":\"0x09e3f1c72d4c5cbe8e2644ab7313f8f7177533ae2f4c24cdcbbeaf520a73734c\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://93208401215d539fa2d81626b207c1f611def7883d0e447b3b5969ebaa7b3c2c\",\"dweb:/ipfs/QmXPxDnQPx8LAweX5ZJqEcwkvs59kP4c64VVDG1Jjq1mef\"]},\"@openzeppelin/contracts/utils/math/SafeCast.sol\":{\"keccak256\":\"0x195533c86d0ef72bcc06456a4f66a9b941f38eb403739b00f21fd7c1abd1ae54\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://b1d578337048cad08c1c03041cca5978eff5428aa130c781b271ad9e5566e1f8\",\"dweb:/ipfs/QmPFKL2r9CBsMwmUqqdcFPfHZB2qcs9g1HDrPxzWSxomvy\"]},\"@uniswap/v3-core/contracts/interfaces/callback/IUniswapV3SwapCallback.sol\":{\"keccak256\":\"0x3f485fb1a44e8fbeadefb5da07d66edab3cfe809f0ac4074b1e54e3eb3c4cf69\",\"license\":\"GPL-2.0-or-later\",\"urls\":[\"bzz-raw://095ce0626b41318c772b3ebf19d548282607f6a8f3d6c41c13edfbd5370c8652\",\"dweb:/ipfs/QmVDZfJJ89UUCE1hMyzqpkZAtQ8jUsBgZNE5AMRG7RzRFS\"]},\"@uniswap/v3-periphery/contracts/interfaces/ISwapRouter.sol\":{\"keccak256\":\"0x9bfaf1feb32814623e627ab70f2409760b15d95f1f9b058e2b3399a8bb732975\",\"license\":\"GPL-2.0-or-later\",\"urls\":[\"bzz-raw://a8a2c3e55965b61bcd91993d8e1d5d34b8b8a63e0fdfce87a85f6af92526fd53\",\"dweb:/ipfs/QmQj2CSCSwqDSU4KMNWxGsN2336Cy64WgpV1X1EHXNZWxM\"]},\"contracts/InvestStrategyClient.sol\":{\"keccak256\":\"0x3c8fff73042023381eb750ba13a9066475d208e99bde568e1243f0e1e282c894\",\"license\":\"Apache-2.0\",\"urls\":[\"bzz-raw://3f8283ffa5c512e482b0065d9391c7060ebc1fa5968c55e6a05958480b7facb6\",\"dweb:/ipfs/QmT4N9Z19b6AUXpXtg23d3ijBExyKuRJBeQ3o8WCobgpfT\"]},\"contracts/dependencies/chainlink/AggregatorV3Interface.sol\":{\"keccak256\":\"0x257a8d28fa83d3d942547c8e129ef465e4b5f3f31171e7be4739a4c98da6b4f0\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://6d39e11b1dc7b9b8ccdabbc9be442ab7cda4a81c748f57e316dcb1bcb4a28bf9\",\"dweb:/ipfs/QmaG6vz6W6iEUBsbHSBob5mdcitYxWjoygxREHpsJHfWrS\"]},\"contracts/interfaces/IExposeStorage.sol\":{\"keccak256\":\"0x68d4dbc7e135ac949f5f557a1f071b96d1639262188f91957bf082be7e72b1c7\",\"license\":\"Apache-2.0\",\"urls\":[\"bzz-raw://29fc549ef136e19275bb9225c8e7f02e0cc3b274acef4e6d7002c6f3f74e5c13\",\"dweb:/ipfs/QmVzrn7Cbxe8xzLwy4ZpzxP6CBEKsegXG8VusNYqssCe3d\"]},\"contracts/interfaces/IInvestStrategy.sol\":{\"keccak256\":\"0x6800a1f147def2252b79629150ce9cd87e914ca5a966f1035fbca6328bbc9c4b\",\"license\":\"Apache-2.0\",\"urls\":[\"bzz-raw://2e9260604e0ffcf405819f85fee4124d9a090cf716f389ff92cf76a2837a2e42\",\"dweb:/ipfs/QmVdKEW8C6MDyiiUfjBxEMTWjfPrBJadptpxh9L2uCebDK\"]},\"contracts/strategies/ChainlinkSwapAssetInvestStrategy.sol\":{\"keccak256\":\"0x384ae661c732b72d24748b913e472f66870f80dc3cabf06ab818b6696b355216\",\"license\":\"Apache-2.0\",\"urls\":[\"bzz-raw://45bac1a281d2c15f1ec50e9aac1ecdcf0b0447e8b982709626b738f218b562e9\",\"dweb:/ipfs/QmQkfhQoQDpA47oJEES5RH3nYmbqifMwyeqCj9GGeiDhkv\"]},\"contracts/strategies/SwapAssetInvestStrategy.sol\":{\"keccak256\":\"0xcbe222638e775ca5e6d7cd2e864bdb35fa13afe6c648f682ef3c7a8f6439d4c6\",\"license\":\"Apache-2.0\",\"urls\":[\"bzz-raw://e9ea100bc7cf8aa1d848fad0ade54b3c636790a90dea10fd829ac5c5cabf4763\",\"dweb:/ipfs/QmYm6d3bZh39VTucf9aGuRPYFnMecx2jnUoE9ZtqLM9Lbo\"]},\"solidity-bytes-utils/contracts/BytesLib.sol\":{\"keccak256\":\"0xf4b07e5d8f69407bb43c6db224adfcf6c73b512dd64e85008ac3c222910c3555\",\"license\":\"Unlicense\",\"urls\":[\"bzz-raw://db020721e59008f7159b65962cc24038c92ac1c2ee8b7cfaa28a1771ced663f5\",\"dweb:/ipfs/QmQ8rznRTYc3AoVCJno8tY6vQVKCbhDJ3husfytUUvMrSN\"]}},\"version\":1}","storageLayout":{"storage":[],"types":null}}},"contracts/strategies/CompoundV3InvestStrategy.sol":{"CompoundV3InvestStrategy":{"abi":[{"inputs":[{"internalType":"contract ICompoundV3","name":"cToken_","type":"address"},{"internalType":"contract ICometRewards","name":"rewardsManager_","type":"address"}],"stateMutability":"nonpayable","type":"constructor"},{"inputs":[],"name":"CanBeCalledOnlyThroughDelegateCall","type":"error"},{"inputs":[],"name":"CannotDisconnectWithAssets","type":"error"},{"inputs":[],"name":"NoExtraDataAllowed","type":"error"},{"inputs":[],"name":"RewardsManagerRequired","type":"error"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"address","name":"token","type":"address"},{"indexed":false,"internalType":"uint256","name":"rewards","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"receivedInAsset","type":"uint256"}],"name":"RewardsClaimed","type":"event"},{"anonymous":false,"inputs":[{"components":[{"internalType":"enum SwapLibrary.SwapProtocol","name":"protocol","type":"uint8"},{"internalType":"uint256","name":"maxSlippage","type":"uint256"},{"internalType":"bytes","name":"customParams","type":"bytes"}],"indexed":false,"internalType":"struct SwapLibrary.SwapConfig","name":"oldConfig","type":"tuple"},{"components":[{"internalType":"enum SwapLibrary.SwapProtocol","name":"protocol","type":"uint8"},{"internalType":"uint256","name":"maxSlippage","type":"uint256"},{"internalType":"bytes","name":"customParams","type":"bytes"}],"indexed":false,"internalType":"struct SwapLibrary.SwapConfig","name":"newConfig","type":"tuple"}],"name":"SwapConfigChanged","type":"event"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"asset","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"bytes","name":"initData","type":"bytes"}],"name":"connect","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"assets","type":"uint256"}],"name":"deposit","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bool","name":"force","type":"bool"}],"name":"disconnect","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint8","name":"method","type":"uint8"},{"internalType":"bytes","name":"params","type":"bytes"}],"name":"forwardEntryPoint","outputs":[{"internalType":"bytes","name":"","type":"bytes"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"contract_","type":"address"}],"name":"getSwapConfig","outputs":[{"components":[{"internalType":"enum SwapLibrary.SwapProtocol","name":"protocol","type":"uint8"},{"internalType":"uint256","name":"maxSlippage","type":"uint256"},{"internalType":"bytes","name":"customParams","type":"bytes"}],"internalType":"struct SwapLibrary.SwapConfig","name":"","type":"tuple"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"maxDeposit","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"contract_","type":"address"}],"name":"maxWithdraw","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"storageSlot","outputs":[{"internalType":"bytes32","name":"","type":"bytes32"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"contract_","type":"address"}],"name":"totalAssets","outputs":[{"internalType":"uint256","name":"assets","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"assets","type":"uint256"}],"name":"withdraw","outputs":[],"stateMutability":"nonpayable","type":"function"}],"evm":{"bytecode":{"functionDebugData":{"@_22490":{"entryPoint":null,"id":22490,"parameterSlots":2,"returnSlots":0},"@makeStorageSlot_15638":{"entryPoint":null,"id":15638,"parameterSlots":1,"returnSlots":1},"abi_decode_tuple_t_address_fromMemory":{"entryPoint":375,"id":null,"parameterSlots":2,"returnSlots":1},"abi_decode_tuple_t_contract$_ICompoundV3_$20619t_contract$_ICometRewards_$20581_fromMemory":{"entryPoint":319,"id":null,"parameterSlots":2,"returnSlots":2},"abi_encode_tuple_t_stringliteral_4fed0cd3539a36e00a34a6c026c2615824c9ad47da5ef65e8372c7e721c05d79_t_contract$_IInvestStrategy_$20725__to_t_string_memory_ptr_t_address__fromStack_reversed":{"entryPoint":null,"id":null,"parameterSlots":2,"returnSlots":1},"validator_revert_contract_ICompoundV3":{"entryPoint":296,"id":null,"parameterSlots":1,"returnSlots":0}},"generatedSources":[{"ast":{"nativeSrc":"0:1373:87","nodeType":"YulBlock","src":"0:1373:87","statements":[{"nativeSrc":"6:3:87","nodeType":"YulBlock","src":"6:3:87","statements":[]},{"body":{"nativeSrc":"72:86:87","nodeType":"YulBlock","src":"72:86:87","statements":[{"body":{"nativeSrc":"136:16:87","nodeType":"YulBlock","src":"136:16:87","statements":[{"expression":{"arguments":[{"kind":"number","nativeSrc":"145:1:87","nodeType":"YulLiteral","src":"145:1:87","type":"","value":"0"},{"kind":"number","nativeSrc":"148:1:87","nodeType":"YulLiteral","src":"148:1:87","type":"","value":"0"}],"functionName":{"name":"revert","nativeSrc":"138:6:87","nodeType":"YulIdentifier","src":"138:6:87"},"nativeSrc":"138:12:87","nodeType":"YulFunctionCall","src":"138:12:87"},"nativeSrc":"138:12:87","nodeType":"YulExpressionStatement","src":"138:12:87"}]},"condition":{"arguments":[{"arguments":[{"name":"value","nativeSrc":"95:5:87","nodeType":"YulIdentifier","src":"95:5:87"},{"arguments":[{"name":"value","nativeSrc":"106:5:87","nodeType":"YulIdentifier","src":"106:5:87"},{"arguments":[{"arguments":[{"kind":"number","nativeSrc":"121:3:87","nodeType":"YulLiteral","src":"121:3:87","type":"","value":"160"},{"kind":"number","nativeSrc":"126:1:87","nodeType":"YulLiteral","src":"126:1:87","type":"","value":"1"}],"functionName":{"name":"shl","nativeSrc":"117:3:87","nodeType":"YulIdentifier","src":"117:3:87"},"nativeSrc":"117:11:87","nodeType":"YulFunctionCall","src":"117:11:87"},{"kind":"number","nativeSrc":"130:1:87","nodeType":"YulLiteral","src":"130:1:87","type":"","value":"1"}],"functionName":{"name":"sub","nativeSrc":"113:3:87","nodeType":"YulIdentifier","src":"113:3:87"},"nativeSrc":"113:19:87","nodeType":"YulFunctionCall","src":"113:19:87"}],"functionName":{"name":"and","nativeSrc":"102:3:87","nodeType":"YulIdentifier","src":"102:3:87"},"nativeSrc":"102:31:87","nodeType":"YulFunctionCall","src":"102:31:87"}],"functionName":{"name":"eq","nativeSrc":"92:2:87","nodeType":"YulIdentifier","src":"92:2:87"},"nativeSrc":"92:42:87","nodeType":"YulFunctionCall","src":"92:42:87"}],"functionName":{"name":"iszero","nativeSrc":"85:6:87","nodeType":"YulIdentifier","src":"85:6:87"},"nativeSrc":"85:50:87","nodeType":"YulFunctionCall","src":"85:50:87"},"nativeSrc":"82:70:87","nodeType":"YulIf","src":"82:70:87"}]},"name":"validator_revert_contract_ICompoundV3","nativeSrc":"14:144:87","nodeType":"YulFunctionDefinition","parameters":[{"name":"value","nativeSrc":"61:5:87","nodeType":"YulTypedName","src":"61:5:87","type":""}],"src":"14:144:87"},{"body":{"nativeSrc":"305:313:87","nodeType":"YulBlock","src":"305:313:87","statements":[{"body":{"nativeSrc":"351:16:87","nodeType":"YulBlock","src":"351:16:87","statements":[{"expression":{"arguments":[{"kind":"number","nativeSrc":"360:1:87","nodeType":"YulLiteral","src":"360:1:87","type":"","value":"0"},{"kind":"number","nativeSrc":"363:1:87","nodeType":"YulLiteral","src":"363:1:87","type":"","value":"0"}],"functionName":{"name":"revert","nativeSrc":"353:6:87","nodeType":"YulIdentifier","src":"353:6:87"},"nativeSrc":"353:12:87","nodeType":"YulFunctionCall","src":"353:12:87"},"nativeSrc":"353:12:87","nodeType":"YulExpressionStatement","src":"353:12:87"}]},"condition":{"arguments":[{"arguments":[{"name":"dataEnd","nativeSrc":"326:7:87","nodeType":"YulIdentifier","src":"326:7:87"},{"name":"headStart","nativeSrc":"335:9:87","nodeType":"YulIdentifier","src":"335:9:87"}],"functionName":{"name":"sub","nativeSrc":"322:3:87","nodeType":"YulIdentifier","src":"322:3:87"},"nativeSrc":"322:23:87","nodeType":"YulFunctionCall","src":"322:23:87"},{"kind":"number","nativeSrc":"347:2:87","nodeType":"YulLiteral","src":"347:2:87","type":"","value":"64"}],"functionName":{"name":"slt","nativeSrc":"318:3:87","nodeType":"YulIdentifier","src":"318:3:87"},"nativeSrc":"318:32:87","nodeType":"YulFunctionCall","src":"318:32:87"},"nativeSrc":"315:52:87","nodeType":"YulIf","src":"315:52:87"},{"nativeSrc":"376:29:87","nodeType":"YulVariableDeclaration","src":"376:29:87","value":{"arguments":[{"name":"headStart","nativeSrc":"395:9:87","nodeType":"YulIdentifier","src":"395:9:87"}],"functionName":{"name":"mload","nativeSrc":"389:5:87","nodeType":"YulIdentifier","src":"389:5:87"},"nativeSrc":"389:16:87","nodeType":"YulFunctionCall","src":"389:16:87"},"variables":[{"name":"value","nativeSrc":"380:5:87","nodeType":"YulTypedName","src":"380:5:87","type":""}]},{"expression":{"arguments":[{"name":"value","nativeSrc":"452:5:87","nodeType":"YulIdentifier","src":"452:5:87"}],"functionName":{"name":"validator_revert_contract_ICompoundV3","nativeSrc":"414:37:87","nodeType":"YulIdentifier","src":"414:37:87"},"nativeSrc":"414:44:87","nodeType":"YulFunctionCall","src":"414:44:87"},"nativeSrc":"414:44:87","nodeType":"YulExpressionStatement","src":"414:44:87"},{"nativeSrc":"467:15:87","nodeType":"YulAssignment","src":"467:15:87","value":{"name":"value","nativeSrc":"477:5:87","nodeType":"YulIdentifier","src":"477:5:87"},"variableNames":[{"name":"value0","nativeSrc":"467:6:87","nodeType":"YulIdentifier","src":"467:6:87"}]},{"nativeSrc":"491:40:87","nodeType":"YulVariableDeclaration","src":"491:40:87","value":{"arguments":[{"arguments":[{"name":"headStart","nativeSrc":"516:9:87","nodeType":"YulIdentifier","src":"516:9:87"},{"kind":"number","nativeSrc":"527:2:87","nodeType":"YulLiteral","src":"527:2:87","type":"","value":"32"}],"functionName":{"name":"add","nativeSrc":"512:3:87","nodeType":"YulIdentifier","src":"512:3:87"},"nativeSrc":"512:18:87","nodeType":"YulFunctionCall","src":"512:18:87"}],"functionName":{"name":"mload","nativeSrc":"506:5:87","nodeType":"YulIdentifier","src":"506:5:87"},"nativeSrc":"506:25:87","nodeType":"YulFunctionCall","src":"506:25:87"},"variables":[{"name":"value_1","nativeSrc":"495:7:87","nodeType":"YulTypedName","src":"495:7:87","type":""}]},{"expression":{"arguments":[{"name":"value_1","nativeSrc":"578:7:87","nodeType":"YulIdentifier","src":"578:7:87"}],"functionName":{"name":"validator_revert_contract_ICompoundV3","nativeSrc":"540:37:87","nodeType":"YulIdentifier","src":"540:37:87"},"nativeSrc":"540:46:87","nodeType":"YulFunctionCall","src":"540:46:87"},"nativeSrc":"540:46:87","nodeType":"YulExpressionStatement","src":"540:46:87"},{"nativeSrc":"595:17:87","nodeType":"YulAssignment","src":"595:17:87","value":{"name":"value_1","nativeSrc":"605:7:87","nodeType":"YulIdentifier","src":"605:7:87"},"variableNames":[{"name":"value1","nativeSrc":"595:6:87","nodeType":"YulIdentifier","src":"595:6:87"}]}]},"name":"abi_decode_tuple_t_contract$_ICompoundV3_$20619t_contract$_ICometRewards_$20581_fromMemory","nativeSrc":"163:455:87","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nativeSrc":"263:9:87","nodeType":"YulTypedName","src":"263:9:87","type":""},{"name":"dataEnd","nativeSrc":"274:7:87","nodeType":"YulTypedName","src":"274:7:87","type":""}],"returnVariables":[{"name":"value0","nativeSrc":"286:6:87","nodeType":"YulTypedName","src":"286:6:87","type":""},{"name":"value1","nativeSrc":"294:6:87","nodeType":"YulTypedName","src":"294:6:87","type":""}],"src":"163:455:87"},{"body":{"nativeSrc":"704:183:87","nodeType":"YulBlock","src":"704:183:87","statements":[{"body":{"nativeSrc":"750:16:87","nodeType":"YulBlock","src":"750:16:87","statements":[{"expression":{"arguments":[{"kind":"number","nativeSrc":"759:1:87","nodeType":"YulLiteral","src":"759:1:87","type":"","value":"0"},{"kind":"number","nativeSrc":"762:1:87","nodeType":"YulLiteral","src":"762:1:87","type":"","value":"0"}],"functionName":{"name":"revert","nativeSrc":"752:6:87","nodeType":"YulIdentifier","src":"752:6:87"},"nativeSrc":"752:12:87","nodeType":"YulFunctionCall","src":"752:12:87"},"nativeSrc":"752:12:87","nodeType":"YulExpressionStatement","src":"752:12:87"}]},"condition":{"arguments":[{"arguments":[{"name":"dataEnd","nativeSrc":"725:7:87","nodeType":"YulIdentifier","src":"725:7:87"},{"name":"headStart","nativeSrc":"734:9:87","nodeType":"YulIdentifier","src":"734:9:87"}],"functionName":{"name":"sub","nativeSrc":"721:3:87","nodeType":"YulIdentifier","src":"721:3:87"},"nativeSrc":"721:23:87","nodeType":"YulFunctionCall","src":"721:23:87"},{"kind":"number","nativeSrc":"746:2:87","nodeType":"YulLiteral","src":"746:2:87","type":"","value":"32"}],"functionName":{"name":"slt","nativeSrc":"717:3:87","nodeType":"YulIdentifier","src":"717:3:87"},"nativeSrc":"717:32:87","nodeType":"YulFunctionCall","src":"717:32:87"},"nativeSrc":"714:52:87","nodeType":"YulIf","src":"714:52:87"},{"nativeSrc":"775:29:87","nodeType":"YulVariableDeclaration","src":"775:29:87","value":{"arguments":[{"name":"headStart","nativeSrc":"794:9:87","nodeType":"YulIdentifier","src":"794:9:87"}],"functionName":{"name":"mload","nativeSrc":"788:5:87","nodeType":"YulIdentifier","src":"788:5:87"},"nativeSrc":"788:16:87","nodeType":"YulFunctionCall","src":"788:16:87"},"variables":[{"name":"value","nativeSrc":"779:5:87","nodeType":"YulTypedName","src":"779:5:87","type":""}]},{"expression":{"arguments":[{"name":"value","nativeSrc":"851:5:87","nodeType":"YulIdentifier","src":"851:5:87"}],"functionName":{"name":"validator_revert_contract_ICompoundV3","nativeSrc":"813:37:87","nodeType":"YulIdentifier","src":"813:37:87"},"nativeSrc":"813:44:87","nodeType":"YulFunctionCall","src":"813:44:87"},"nativeSrc":"813:44:87","nodeType":"YulExpressionStatement","src":"813:44:87"},{"nativeSrc":"866:15:87","nodeType":"YulAssignment","src":"866:15:87","value":{"name":"value","nativeSrc":"876:5:87","nodeType":"YulIdentifier","src":"876:5:87"},"variableNames":[{"name":"value0","nativeSrc":"866:6:87","nodeType":"YulIdentifier","src":"866:6:87"}]}]},"name":"abi_decode_tuple_t_address_fromMemory","nativeSrc":"623:264:87","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nativeSrc":"670:9:87","nodeType":"YulTypedName","src":"670:9:87","type":""},{"name":"dataEnd","nativeSrc":"681:7:87","nodeType":"YulTypedName","src":"681:7:87","type":""}],"returnVariables":[{"name":"value0","nativeSrc":"693:6:87","nodeType":"YulTypedName","src":"693:6:87","type":""}],"src":"623:264:87"},{"body":{"nativeSrc":"1119:252:87","nodeType":"YulBlock","src":"1119:252:87","statements":[{"expression":{"arguments":[{"name":"headStart","nativeSrc":"1136:9:87","nodeType":"YulIdentifier","src":"1136:9:87"},{"kind":"number","nativeSrc":"1147:2:87","nodeType":"YulLiteral","src":"1147:2:87","type":"","value":"64"}],"functionName":{"name":"mstore","nativeSrc":"1129:6:87","nodeType":"YulIdentifier","src":"1129:6:87"},"nativeSrc":"1129:21:87","nodeType":"YulFunctionCall","src":"1129:21:87"},"nativeSrc":"1129:21:87","nodeType":"YulExpressionStatement","src":"1129:21:87"},{"expression":{"arguments":[{"arguments":[{"name":"headStart","nativeSrc":"1170:9:87","nodeType":"YulIdentifier","src":"1170:9:87"},{"kind":"number","nativeSrc":"1181:2:87","nodeType":"YulLiteral","src":"1181:2:87","type":"","value":"64"}],"functionName":{"name":"add","nativeSrc":"1166:3:87","nodeType":"YulIdentifier","src":"1166:3:87"},"nativeSrc":"1166:18:87","nodeType":"YulFunctionCall","src":"1166:18:87"},{"kind":"number","nativeSrc":"1186:2:87","nodeType":"YulLiteral","src":"1186:2:87","type":"","value":"30"}],"functionName":{"name":"mstore","nativeSrc":"1159:6:87","nodeType":"YulIdentifier","src":"1159:6:87"},"nativeSrc":"1159:30:87","nodeType":"YulFunctionCall","src":"1159:30:87"},"nativeSrc":"1159:30:87","nodeType":"YulExpressionStatement","src":"1159:30:87"},{"expression":{"arguments":[{"arguments":[{"name":"headStart","nativeSrc":"1209:9:87","nodeType":"YulIdentifier","src":"1209:9:87"},{"kind":"number","nativeSrc":"1220:2:87","nodeType":"YulLiteral","src":"1220:2:87","type":"","value":"96"}],"functionName":{"name":"add","nativeSrc":"1205:3:87","nodeType":"YulIdentifier","src":"1205:3:87"},"nativeSrc":"1205:18:87","nodeType":"YulFunctionCall","src":"1205:18:87"},{"hexValue":"636f2e656e7375726f2e496e766573745374726174656779436c69656e74","kind":"string","nativeSrc":"1225:32:87","nodeType":"YulLiteral","src":"1225:32:87","type":"","value":"co.ensuro.InvestStrategyClient"}],"functionName":{"name":"mstore","nativeSrc":"1198:6:87","nodeType":"YulIdentifier","src":"1198:6:87"},"nativeSrc":"1198:60:87","nodeType":"YulFunctionCall","src":"1198:60:87"},"nativeSrc":"1198:60:87","nodeType":"YulExpressionStatement","src":"1198:60:87"},{"nativeSrc":"1267:27:87","nodeType":"YulAssignment","src":"1267:27:87","value":{"arguments":[{"name":"headStart","nativeSrc":"1279:9:87","nodeType":"YulIdentifier","src":"1279:9:87"},{"kind":"number","nativeSrc":"1290:3:87","nodeType":"YulLiteral","src":"1290:3:87","type":"","value":"128"}],"functionName":{"name":"add","nativeSrc":"1275:3:87","nodeType":"YulIdentifier","src":"1275:3:87"},"nativeSrc":"1275:19:87","nodeType":"YulFunctionCall","src":"1275:19:87"},"variableNames":[{"name":"tail","nativeSrc":"1267:4:87","nodeType":"YulIdentifier","src":"1267:4:87"}]},{"expression":{"arguments":[{"arguments":[{"name":"headStart","nativeSrc":"1314:9:87","nodeType":"YulIdentifier","src":"1314:9:87"},{"kind":"number","nativeSrc":"1325:4:87","nodeType":"YulLiteral","src":"1325:4:87","type":"","value":"0x20"}],"functionName":{"name":"add","nativeSrc":"1310:3:87","nodeType":"YulIdentifier","src":"1310:3:87"},"nativeSrc":"1310:20:87","nodeType":"YulFunctionCall","src":"1310:20:87"},{"arguments":[{"name":"value0","nativeSrc":"1336:6:87","nodeType":"YulIdentifier","src":"1336:6:87"},{"arguments":[{"arguments":[{"kind":"number","nativeSrc":"1352:3:87","nodeType":"YulLiteral","src":"1352:3:87","type":"","value":"160"},{"kind":"number","nativeSrc":"1357:1:87","nodeType":"YulLiteral","src":"1357:1:87","type":"","value":"1"}],"functionName":{"name":"shl","nativeSrc":"1348:3:87","nodeType":"YulIdentifier","src":"1348:3:87"},"nativeSrc":"1348:11:87","nodeType":"YulFunctionCall","src":"1348:11:87"},{"kind":"number","nativeSrc":"1361:1:87","nodeType":"YulLiteral","src":"1361:1:87","type":"","value":"1"}],"functionName":{"name":"sub","nativeSrc":"1344:3:87","nodeType":"YulIdentifier","src":"1344:3:87"},"nativeSrc":"1344:19:87","nodeType":"YulFunctionCall","src":"1344:19:87"}],"functionName":{"name":"and","nativeSrc":"1332:3:87","nodeType":"YulIdentifier","src":"1332:3:87"},"nativeSrc":"1332:32:87","nodeType":"YulFunctionCall","src":"1332:32:87"}],"functionName":{"name":"mstore","nativeSrc":"1303:6:87","nodeType":"YulIdentifier","src":"1303:6:87"},"nativeSrc":"1303:62:87","nodeType":"YulFunctionCall","src":"1303:62:87"},"nativeSrc":"1303:62:87","nodeType":"YulExpressionStatement","src":"1303:62:87"}]},"name":"abi_encode_tuple_t_stringliteral_4fed0cd3539a36e00a34a6c026c2615824c9ad47da5ef65e8372c7e721c05d79_t_contract$_IInvestStrategy_$20725__to_t_string_memory_ptr_t_address__fromStack_reversed","nativeSrc":"892:479:87","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nativeSrc":"1088:9:87","nodeType":"YulTypedName","src":"1088:9:87","type":""},{"name":"value0","nativeSrc":"1099:6:87","nodeType":"YulTypedName","src":"1099:6:87","type":""}],"returnVariables":[{"name":"tail","nativeSrc":"1110:4:87","nodeType":"YulTypedName","src":"1110:4:87","type":""}],"src":"892:479:87"}]},"contents":"{\n    { }\n    function validator_revert_contract_ICompoundV3(value)\n    {\n        if iszero(eq(value, and(value, sub(shl(160, 1), 1)))) { revert(0, 0) }\n    }\n    function abi_decode_tuple_t_contract$_ICompoundV3_$20619t_contract$_ICometRewards_$20581_fromMemory(headStart, dataEnd) -> value0, value1\n    {\n        if slt(sub(dataEnd, headStart), 64) { revert(0, 0) }\n        let value := mload(headStart)\n        validator_revert_contract_ICompoundV3(value)\n        value0 := value\n        let value_1 := mload(add(headStart, 32))\n        validator_revert_contract_ICompoundV3(value_1)\n        value1 := value_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        let value := mload(headStart)\n        validator_revert_contract_ICompoundV3(value)\n        value0 := value\n    }\n    function abi_encode_tuple_t_stringliteral_4fed0cd3539a36e00a34a6c026c2615824c9ad47da5ef65e8372c7e721c05d79_t_contract$_IInvestStrategy_$20725__to_t_string_memory_ptr_t_address__fromStack_reversed(headStart, value0) -> tail\n    {\n        mstore(headStart, 64)\n        mstore(add(headStart, 64), 30)\n        mstore(add(headStart, 96), \"co.ensuro.InvestStrategyClient\")\n        tail := add(headStart, 128)\n        mstore(add(headStart, 0x20), and(value0, sub(shl(160, 1), 1)))\n    }\n}","id":87,"language":"Yul","name":"#utility.yul"}],"linkReferences":{"@ensuro/swaplibrary/contracts/SwapLibrary.sol":{"SwapLibrary":[{"length":20,"start":3521},{"length":20,"start":4058}]}},"object":"3060808181526040610140818152601e610180527f636f2e656e7375726f2e496e766573745374726174656779436c69656e7400006101a052610160939093526101208290526101c09052902060a05234801561005a575f5ffd5b506040516118553803806118558339810160408190526100799161013f565b6001600160a01b0381166100a05760405163a74363cd60e01b815260040160405180910390fd5b6001600160a01b0380831660c081905290821660e0526040805163c55dae6360e01b8152905163c55dae63916004808201926020929091908290030181865afa1580156100ef573d5f5f3e3d5ffd5b505050506040513d601f19601f820116820180604052508101906101139190610177565b6001600160a01b031661010052506101999050565b6001600160a01b038116811461013c575f5ffd5b50565b5f5f60408385031215610150575f5ffd5b825161015b81610128565b602084015190925061016c81610128565b809150509250929050565b5f60208284031215610187575f5ffd5b815161019281610128565b9392505050565b60805160a05160c05160e051610100516115de6102775f395f81816101740152818161033c01528181610b6e01528181610ea80152610f2a01525f81816105be015281816108e301526109b201525f818161036b015281816103c9015281816104e80152818161058e0152818161073d015281816107e601528181610871015281816108b90152818161097d01528181610e790152610f5901525f818161014101528181610a0f01528181610ca40152610e3301525f8181610206015281816102e60152818161048f0152818161067501526106f201526115de5ff3fe608060405234801561000f575f5ffd5b50600436106100a6575f3560e01c80635b9a4c351161006e5780635b9a4c351461013c5780639c4667a2146101635780639cd47128146101ae578063b6b55f25146101c1578063ce96cb77146101d4578063f3e0ffbf146101e7575f5ffd5b80630981b1c2146100aa5780632e1a7d4d146100d3578063402d267d146100e857806342b054f0146101095780635a11745614610129575b5f5ffd5b6100bd6100b836600461106f565b6101fa565b6040516100ca91906110ef565b60405180910390f35b6100e66100e1366004611101565b6102dc565b005b6100fb6100f636600461112c565b6103c6565b6040519081526020016100ca565b61011c61011736600461112c565b61045b565b6040516100ca91906111a9565b6100e66101373660046111c8565b610485565b6100fb7f000000000000000000000000000000000000000000000000000000000000000081565b61019661017136600461112c565b507f000000000000000000000000000000000000000000000000000000000000000090565b6040516001600160a01b0390911681526020016100ca565b6100e66101bc3660046111e3565b61066b565b6100e66101cf366004611101565b6106e8565b6100fb6101e236600461112c565b61073a565b6100fb6101f536600461112c565b610850565b60606001600160a01b037f000000000000000000000000000000000000000000000000000000000000000016300361024557604051632abf118b60e21b815260040160405180910390fd5b5f8360ff16600181111561025b5761025b611147565b90505f81600181111561027057610270611147565b0361029b575f8380602001905181019061028a9190611215565b9050610295816108a2565b506102c6565b60018160018111156102af576102af611147565b036100a6576102c66102c030610c7a565b84610d3c565b505060408051602081019091525f815292915050565b6001600160a01b037f000000000000000000000000000000000000000000000000000000000000000016300361032557604051632abf118b60e21b815260040160405180910390fd5b60405163f3fef3a360e01b81526001600160a01b037f000000000000000000000000000000000000000000000000000000000000000081166004830152602482018390527f0000000000000000000000000000000000000000000000000000000000000000169063f3fef3a3906044015b5f604051808303815f87803b1580156103ad575f5ffd5b505af11580156103bf573d5f5f3e3d5ffd5b5050505050565b5f7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316630bc47ad16040518163ffffffff1660e01b8152600401602060405180830381865afa158015610423573d5f5f3e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610447919061122c565b1561045357505f919050565b505f19919050565b60408051606080820183525f80835260208301529181019190915261047f82610c7a565b92915050565b6001600160a01b037f00000000000000000000000000000000000000000000000000000000000000001630036104ce57604051632abf118b60e21b815260040160405180910390fd5b80610668576040516370a0823160e01b81523060048201527f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316906370a0823190602401602060405180830381865afa158015610535573d5f5f3e3d5ffd5b505050506040513d601f19601f820116820180604052508101906105599190611215565b15610577576040516342a176d160e11b815260040160405180910390fd5b6040516320f0656b60e11b81526001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000811660048301523060248301525f917f0000000000000000000000000000000000000000000000000000000000000000909116906341e0cad69060440160408051808303815f875af1158015610605573d5f5f3e3d5ffd5b505050506040513d601f19601f820116820180604052508101906106299190611247565b80519091506001600160a01b0316158015906106485750602081015115155b15610666576040516342a176d160e11b815260040160405180910390fd5b505b50565b6001600160a01b037f00000000000000000000000000000000000000000000000000000000000000001630036106b457604051632abf118b60e21b815260040160405180910390fd5b604080516060810190915261066890805f81526020015f815260200160405180602001604052805f81525081525082610d3c565b6001600160a01b037f000000000000000000000000000000000000000000000000000000000000000016300361073157604051632abf118b60e21b815260040160405180910390fd5b61066881610e62565b5f7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03166367800b5f6040518163ffffffff1660e01b8152600401602060405180830381865afa158015610797573d5f5f3e3d5ffd5b505050506040513d601f19601f820116820180604052508101906107bb919061122c565b156107c757505f919050565b6040516370a0823160e01b81526001600160a01b0383811660048301527f000000000000000000000000000000000000000000000000000000000000000016906370a08231906024015b602060405180830381865afa15801561082c573d5f5f3e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061047f9190611215565b6040516370a0823160e01b81526001600160a01b0382811660048301525f917f0000000000000000000000000000000000000000000000000000000000000000909116906370a0823190602401610811565b60405163045136d760e31b81526001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000811660048301525f917f000000000000000000000000000000000000000000000000000000000000000090911690632289b6b8906024016060604051808303815f875af115801561092b573d5f5f3e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061094f919061129f565b50909150506001600160a01b038116610966575050565b604051635b81a7bf60e11b81526001600160a01b037f000000000000000000000000000000000000000000000000000000000000000081166004830152306024830152600160448301527f0000000000000000000000000000000000000000000000000000000000000000169063b7034f7e906064015f604051808303815f87803b1580156109f3575f5ffd5b505af1158015610a05573d5f5f3e3d5ffd5b505050505f610a317f000000000000000000000000000000000000000000000000000000000000000090565b8054610a3c906112f5565b80601f0160208091040260200160405190810160405280929190818152602001828054610a68906112f5565b8015610ab35780601f10610a8a57610100808354040283529160200191610ab3565b820191905f5260205f20905b815481529060010190602001808311610a9657829003601f168201915b5050505050806020019051810190610acb919061137a565b6040516370a0823160e01b81523060048201529091505f906001600160a01b038416906370a0823190602401602060405180830381865afa158015610b12573d5f5f3e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610b369190611215565b604051637756691560e01b81529091505f9073__$acbb9ece542dcf2065f41aa3c8cca5827e$__90637756691590610b9a90869088907f00000000000000000000000000000000000000000000000000000000000000009088908c90600401611406565b602060405180830381865af4158015610bb5573d5f5f3e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610bd99190611215565b60405163230a5c4b60e11b8152600481018290529091503090634614b896906024015f604051808303815f87803b158015610c12575f5ffd5b505af1158015610c24573d5f5f3e3d5ffd5b5050604080516001600160a01b0388168152602081018690529081018490527fdacbdde355ba930696a362ea6738feb9f8bd52dfb3d81947558fd3217e23e3259250606001905060405180910390a15050505050565b60408051606080820183525f8083526020830152918101919091526040516347e5753360e01b81527f000000000000000000000000000000000000000000000000000000000000000060048201525f906001600160a01b038416906347e57533906024015f60405180830381865afa158015610cf8573d5f5f3e3d5ffd5b505050506040513d5f823e601f3d908101601f19168201604052610d1f9190810190611445565b905080806020019051810190610d35919061137a565b9392505050565b5f81806020019051810190610d51919061137a565b604051632cbf28cb60e21b815290915073__$acbb9ece542dcf2065f41aa3c8cca5827e$__9063b2fca32c90610d8b9084906004016111a9565b5f6040518083038186803b158015610da1575f5ffd5b505af4158015610db3573d5f5f3e3d5ffd5b50505050815181604051602001610dca91906111a9565b6040516020818303038152906040525114610df8576040516350701b6160e01b815260040160405180910390fd5b7fca7f7aa563866a1d31c74deba224724d1da9c35cbb6f783f2ccf0182f91e34f88382604051610e29929190611477565b60405180910390a17f0000000000000000000000000000000000000000000000000000000000000000610e5c83826114ed565b50505050565b60405163095ea7b360e01b81526001600160a01b037f000000000000000000000000000000000000000000000000000000000000000081166004830152602482018390527f0000000000000000000000000000000000000000000000000000000000000000169063095ea7b3906044016020604051808303815f875af1158015610eee573d5f5f3e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610f12919061122c565b50604051631e573fb760e31b81526001600160a01b037f000000000000000000000000000000000000000000000000000000000000000081166004830152602482018390527f0000000000000000000000000000000000000000000000000000000000000000169063f2b9fdb890604401610396565b634e487b7160e01b5f52604160045260245ffd5b6040516060810167ffffffffffffffff81118282101715610fbf57610fbf610f88565b60405290565b604051601f8201601f1916810167ffffffffffffffff81118282101715610fee57610fee610f88565b604052919050565b5f67ffffffffffffffff82111561100f5761100f610f88565b50601f01601f191660200190565b5f82601f83011261102c575f5ffd5b813561103f61103a82610ff6565b610fc5565b818152846020838601011115611053575f5ffd5b816020850160208301375f918101602001919091529392505050565b5f5f60408385031215611080575f5ffd5b823560ff81168114611090575f5ffd5b9150602083013567ffffffffffffffff8111156110ab575f5ffd5b6110b78582860161101d565b9150509250929050565b5f81518084528060208401602086015e5f602082860101526020601f19601f83011685010191505092915050565b602081525f610d3560208301846110c1565b5f60208284031215611111575f5ffd5b5035919050565b6001600160a01b0381168114610668575f5ffd5b5f6020828403121561113c575f5ffd5b8135610d3581611118565b634e487b7160e01b5f52602160045260245ffd5b5f81516003811061117a57634e487b7160e01b5f52602160045260245ffd5b80845250602082015160208401526040820151606060408501526111a160608501826110c1565b949350505050565b602081525f610d35602083018461115b565b8015158114610668575f5ffd5b5f602082840312156111d8575f5ffd5b8135610d35816111bb565b5f602082840312156111f3575f5ffd5b813567ffffffffffffffff811115611209575f5ffd5b6111a18482850161101d565b5f60208284031215611225575f5ffd5b5051919050565b5f6020828403121561123c575f5ffd5b8151610d35816111bb565b5f6040828403128015611258575f5ffd5b506040805190810167ffffffffffffffff8111828210171561127c5761127c610f88565b604052825161128a81611118565b81526020928301519281019290925250919050565b5f5f5f606084860312156112b1575f5ffd5b83516112bc81611118565b602085015190935067ffffffffffffffff811681146112d9575f5ffd5b60408501519092506112ea816111bb565b809150509250925092565b600181811c9082168061130957607f821691505b60208210810361132757634e487b7160e01b5f52602260045260245ffd5b50919050565b5f82601f83011261133c575f5ffd5b815161134a61103a82610ff6565b81815284602083860101111561135e575f5ffd5b8160208501602083015e5f918101602001919091529392505050565b5f6020828403121561138a575f5ffd5b815167ffffffffffffffff8111156113a0575f5ffd5b8201606081850312156113b1575f5ffd5b6113b9610f9c565b8151600381106113c7575f5ffd5b815260208281015190820152604082015167ffffffffffffffff8111156113ec575f5ffd5b6113f88682850161132d565b604083015250949350505050565b60a081525f61141860a083018861115b565b6001600160a01b039687166020840152949095166040820152606081019290925260809091015292915050565b5f60208284031215611455575f5ffd5b815167ffffffffffffffff81111561146b575f5ffd5b6111a18482850161132d565b604081525f611489604083018561115b565b828103602084015261149b818561115b565b95945050505050565b601f8211156114e857805f5260205f20601f840160051c810160208510156114c95750805b601f840160051c820191505b818110156103bf575f81556001016114d5565b505050565b815167ffffffffffffffff81111561150757611507610f88565b61151b8161151584546112f5565b846114a4565b6020601f82116001811461154d575f83156115365750848201515b5f19600385901b1c1916600184901b1784556103bf565b5f84815260208120601f198516915b8281101561157c578785015182556020948501946001909201910161155c565b508482101561159957868401515f19600387901b60f8161c191681555b50505050600190811b0190555056fea26469706673582212200a6b73387ad4d40371649b2fab8fb2184925b05e3bd3f3c3de9fb2633b5dbfc264736f6c634300081e0033","opcodes":"ADDRESS PUSH1 0x80 DUP2 DUP2 MSTORE PUSH1 0x40 PUSH2 0x140 DUP2 DUP2 MSTORE PUSH1 0x1E PUSH2 0x180 MSTORE PUSH32 0x636F2E656E7375726F2E496E766573745374726174656779436C69656E740000 PUSH2 0x1A0 MSTORE PUSH2 0x160 SWAP4 SWAP1 SWAP4 MSTORE PUSH2 0x120 DUP3 SWAP1 MSTORE PUSH2 0x1C0 SWAP1 MSTORE SWAP1 KECCAK256 PUSH1 0xA0 MSTORE CALLVALUE DUP1 ISZERO PUSH2 0x5A JUMPI PUSH0 PUSH0 REVERT JUMPDEST POP PUSH1 0x40 MLOAD PUSH2 0x1855 CODESIZE SUB DUP1 PUSH2 0x1855 DUP4 CODECOPY DUP2 ADD PUSH1 0x40 DUP2 SWAP1 MSTORE PUSH2 0x79 SWAP2 PUSH2 0x13F JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 AND PUSH2 0xA0 JUMPI PUSH1 0x40 MLOAD PUSH4 0xA74363CD 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 DUP1 DUP4 AND PUSH1 0xC0 DUP2 SWAP1 MSTORE SWAP1 DUP3 AND PUSH1 0xE0 MSTORE PUSH1 0x40 DUP1 MLOAD PUSH4 0xC55DAE63 PUSH1 0xE0 SHL DUP2 MSTORE SWAP1 MLOAD PUSH4 0xC55DAE63 SWAP2 PUSH1 0x4 DUP1 DUP3 ADD SWAP3 PUSH1 0x20 SWAP3 SWAP1 SWAP2 SWAP1 DUP3 SWAP1 SUB ADD DUP2 DUP7 GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0xEF JUMPI RETURNDATASIZE PUSH0 PUSH0 RETURNDATACOPY RETURNDATASIZE PUSH0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP3 ADD DUP1 PUSH1 0x40 MSTORE POP DUP2 ADD SWAP1 PUSH2 0x113 SWAP2 SWAP1 PUSH2 0x177 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH2 0x100 MSTORE POP PUSH2 0x199 SWAP1 POP JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 AND DUP2 EQ PUSH2 0x13C JUMPI PUSH0 PUSH0 REVERT JUMPDEST POP JUMP JUMPDEST PUSH0 PUSH0 PUSH1 0x40 DUP4 DUP6 SUB SLT ISZERO PUSH2 0x150 JUMPI PUSH0 PUSH0 REVERT JUMPDEST DUP3 MLOAD PUSH2 0x15B DUP2 PUSH2 0x128 JUMP JUMPDEST PUSH1 0x20 DUP5 ADD MLOAD SWAP1 SWAP3 POP PUSH2 0x16C DUP2 PUSH2 0x128 JUMP JUMPDEST DUP1 SWAP2 POP POP SWAP3 POP SWAP3 SWAP1 POP JUMP JUMPDEST PUSH0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x187 JUMPI PUSH0 PUSH0 REVERT JUMPDEST DUP2 MLOAD PUSH2 0x192 DUP2 PUSH2 0x128 JUMP JUMPDEST SWAP4 SWAP3 POP POP POP JUMP JUMPDEST PUSH1 0x80 MLOAD PUSH1 0xA0 MLOAD PUSH1 0xC0 MLOAD PUSH1 0xE0 MLOAD PUSH2 0x100 MLOAD PUSH2 0x15DE PUSH2 0x277 PUSH0 CODECOPY PUSH0 DUP2 DUP2 PUSH2 0x174 ADD MSTORE DUP2 DUP2 PUSH2 0x33C ADD MSTORE DUP2 DUP2 PUSH2 0xB6E ADD MSTORE DUP2 DUP2 PUSH2 0xEA8 ADD MSTORE PUSH2 0xF2A ADD MSTORE PUSH0 DUP2 DUP2 PUSH2 0x5BE ADD MSTORE DUP2 DUP2 PUSH2 0x8E3 ADD MSTORE PUSH2 0x9B2 ADD MSTORE PUSH0 DUP2 DUP2 PUSH2 0x36B ADD MSTORE DUP2 DUP2 PUSH2 0x3C9 ADD MSTORE DUP2 DUP2 PUSH2 0x4E8 ADD MSTORE DUP2 DUP2 PUSH2 0x58E ADD MSTORE DUP2 DUP2 PUSH2 0x73D ADD MSTORE DUP2 DUP2 PUSH2 0x7E6 ADD MSTORE DUP2 DUP2 PUSH2 0x871 ADD MSTORE DUP2 DUP2 PUSH2 0x8B9 ADD MSTORE DUP2 DUP2 PUSH2 0x97D ADD MSTORE DUP2 DUP2 PUSH2 0xE79 ADD MSTORE PUSH2 0xF59 ADD MSTORE PUSH0 DUP2 DUP2 PUSH2 0x141 ADD MSTORE DUP2 DUP2 PUSH2 0xA0F ADD MSTORE DUP2 DUP2 PUSH2 0xCA4 ADD MSTORE PUSH2 0xE33 ADD MSTORE PUSH0 DUP2 DUP2 PUSH2 0x206 ADD MSTORE DUP2 DUP2 PUSH2 0x2E6 ADD MSTORE DUP2 DUP2 PUSH2 0x48F ADD MSTORE DUP2 DUP2 PUSH2 0x675 ADD MSTORE PUSH2 0x6F2 ADD MSTORE PUSH2 0x15DE PUSH0 RETURN INVALID PUSH1 0x80 PUSH1 0x40 MSTORE CALLVALUE DUP1 ISZERO PUSH2 0xF JUMPI PUSH0 PUSH0 REVERT JUMPDEST POP PUSH1 0x4 CALLDATASIZE LT PUSH2 0xA6 JUMPI PUSH0 CALLDATALOAD PUSH1 0xE0 SHR DUP1 PUSH4 0x5B9A4C35 GT PUSH2 0x6E JUMPI DUP1 PUSH4 0x5B9A4C35 EQ PUSH2 0x13C JUMPI DUP1 PUSH4 0x9C4667A2 EQ PUSH2 0x163 JUMPI DUP1 PUSH4 0x9CD47128 EQ PUSH2 0x1AE JUMPI DUP1 PUSH4 0xB6B55F25 EQ PUSH2 0x1C1 JUMPI DUP1 PUSH4 0xCE96CB77 EQ PUSH2 0x1D4 JUMPI DUP1 PUSH4 0xF3E0FFBF EQ PUSH2 0x1E7 JUMPI PUSH0 PUSH0 REVERT JUMPDEST DUP1 PUSH4 0x981B1C2 EQ PUSH2 0xAA JUMPI DUP1 PUSH4 0x2E1A7D4D EQ PUSH2 0xD3 JUMPI DUP1 PUSH4 0x402D267D EQ PUSH2 0xE8 JUMPI DUP1 PUSH4 0x42B054F0 EQ PUSH2 0x109 JUMPI DUP1 PUSH4 0x5A117456 EQ PUSH2 0x129 JUMPI JUMPDEST PUSH0 PUSH0 REVERT JUMPDEST PUSH2 0xBD PUSH2 0xB8 CALLDATASIZE PUSH1 0x4 PUSH2 0x106F JUMP JUMPDEST PUSH2 0x1FA JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0xCA SWAP2 SWAP1 PUSH2 0x10EF JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST PUSH2 0xE6 PUSH2 0xE1 CALLDATASIZE PUSH1 0x4 PUSH2 0x1101 JUMP JUMPDEST PUSH2 0x2DC JUMP JUMPDEST STOP JUMPDEST PUSH2 0xFB PUSH2 0xF6 CALLDATASIZE PUSH1 0x4 PUSH2 0x112C JUMP JUMPDEST PUSH2 0x3C6 JUMP JUMPDEST PUSH1 0x40 MLOAD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH2 0xCA JUMP JUMPDEST PUSH2 0x11C PUSH2 0x117 CALLDATASIZE PUSH1 0x4 PUSH2 0x112C JUMP JUMPDEST PUSH2 0x45B JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0xCA SWAP2 SWAP1 PUSH2 0x11A9 JUMP JUMPDEST PUSH2 0xE6 PUSH2 0x137 CALLDATASIZE PUSH1 0x4 PUSH2 0x11C8 JUMP JUMPDEST PUSH2 0x485 JUMP JUMPDEST PUSH2 0xFB PUSH32 0x0 DUP2 JUMP JUMPDEST PUSH2 0x196 PUSH2 0x171 CALLDATASIZE PUSH1 0x4 PUSH2 0x112C JUMP JUMPDEST POP PUSH32 0x0 SWAP1 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP1 SWAP2 AND DUP2 MSTORE PUSH1 0x20 ADD PUSH2 0xCA JUMP JUMPDEST PUSH2 0xE6 PUSH2 0x1BC CALLDATASIZE PUSH1 0x4 PUSH2 0x11E3 JUMP JUMPDEST PUSH2 0x66B JUMP JUMPDEST PUSH2 0xE6 PUSH2 0x1CF CALLDATASIZE PUSH1 0x4 PUSH2 0x1101 JUMP JUMPDEST PUSH2 0x6E8 JUMP JUMPDEST PUSH2 0xFB PUSH2 0x1E2 CALLDATASIZE PUSH1 0x4 PUSH2 0x112C JUMP JUMPDEST PUSH2 0x73A JUMP JUMPDEST PUSH2 0xFB PUSH2 0x1F5 CALLDATASIZE PUSH1 0x4 PUSH2 0x112C JUMP JUMPDEST PUSH2 0x850 JUMP JUMPDEST PUSH1 0x60 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB PUSH32 0x0 AND ADDRESS SUB PUSH2 0x245 JUMPI PUSH1 0x40 MLOAD PUSH4 0x2ABF118B PUSH1 0xE2 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH0 DUP4 PUSH1 0xFF AND PUSH1 0x1 DUP2 GT ISZERO PUSH2 0x25B JUMPI PUSH2 0x25B PUSH2 0x1147 JUMP JUMPDEST SWAP1 POP PUSH0 DUP2 PUSH1 0x1 DUP2 GT ISZERO PUSH2 0x270 JUMPI PUSH2 0x270 PUSH2 0x1147 JUMP JUMPDEST SUB PUSH2 0x29B JUMPI PUSH0 DUP4 DUP1 PUSH1 0x20 ADD SWAP1 MLOAD DUP2 ADD SWAP1 PUSH2 0x28A SWAP2 SWAP1 PUSH2 0x1215 JUMP JUMPDEST SWAP1 POP PUSH2 0x295 DUP2 PUSH2 0x8A2 JUMP JUMPDEST POP PUSH2 0x2C6 JUMP JUMPDEST PUSH1 0x1 DUP2 PUSH1 0x1 DUP2 GT ISZERO PUSH2 0x2AF JUMPI PUSH2 0x2AF PUSH2 0x1147 JUMP JUMPDEST SUB PUSH2 0xA6 JUMPI PUSH2 0x2C6 PUSH2 0x2C0 ADDRESS PUSH2 0xC7A JUMP JUMPDEST DUP5 PUSH2 0xD3C JUMP JUMPDEST POP POP PUSH1 0x40 DUP1 MLOAD PUSH1 0x20 DUP2 ADD SWAP1 SWAP2 MSTORE PUSH0 DUP2 MSTORE SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB PUSH32 0x0 AND ADDRESS SUB PUSH2 0x325 JUMPI PUSH1 0x40 MLOAD PUSH4 0x2ABF118B PUSH1 0xE2 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH1 0x40 MLOAD PUSH4 0xF3FEF3A3 PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB PUSH32 0x0 DUP2 AND PUSH1 0x4 DUP4 ADD MSTORE PUSH1 0x24 DUP3 ADD DUP4 SWAP1 MSTORE PUSH32 0x0 AND SWAP1 PUSH4 0xF3FEF3A3 SWAP1 PUSH1 0x44 ADD JUMPDEST PUSH0 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 PUSH0 DUP8 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x3AD JUMPI PUSH0 PUSH0 REVERT JUMPDEST POP GAS CALL ISZERO DUP1 ISZERO PUSH2 0x3BF JUMPI RETURNDATASIZE PUSH0 PUSH0 RETURNDATACOPY RETURNDATASIZE PUSH0 REVERT JUMPDEST POP POP POP POP POP JUMP JUMPDEST PUSH0 PUSH32 0x0 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH4 0xBC47AD1 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 GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x423 JUMPI RETURNDATASIZE PUSH0 PUSH0 RETURNDATACOPY RETURNDATASIZE PUSH0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP3 ADD DUP1 PUSH1 0x40 MSTORE POP DUP2 ADD SWAP1 PUSH2 0x447 SWAP2 SWAP1 PUSH2 0x122C JUMP JUMPDEST ISZERO PUSH2 0x453 JUMPI POP PUSH0 SWAP2 SWAP1 POP JUMP JUMPDEST POP PUSH0 NOT SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH1 0x60 DUP1 DUP3 ADD DUP4 MSTORE PUSH0 DUP1 DUP4 MSTORE PUSH1 0x20 DUP4 ADD MSTORE SWAP2 DUP2 ADD SWAP2 SWAP1 SWAP2 MSTORE PUSH2 0x47F DUP3 PUSH2 0xC7A JUMP JUMPDEST SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB PUSH32 0x0 AND ADDRESS SUB PUSH2 0x4CE JUMPI PUSH1 0x40 MLOAD PUSH4 0x2ABF118B PUSH1 0xE2 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST DUP1 PUSH2 0x668 JUMPI PUSH1 0x40 MLOAD PUSH4 0x70A08231 PUSH1 0xE0 SHL DUP2 MSTORE ADDRESS PUSH1 0x4 DUP3 ADD MSTORE PUSH32 0x0 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND SWAP1 PUSH4 0x70A08231 SWAP1 PUSH1 0x24 ADD PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x535 JUMPI RETURNDATASIZE PUSH0 PUSH0 RETURNDATACOPY RETURNDATASIZE PUSH0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP3 ADD DUP1 PUSH1 0x40 MSTORE POP DUP2 ADD SWAP1 PUSH2 0x559 SWAP2 SWAP1 PUSH2 0x1215 JUMP JUMPDEST ISZERO PUSH2 0x577 JUMPI PUSH1 0x40 MLOAD PUSH4 0x42A176D1 PUSH1 0xE1 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH1 0x40 MLOAD PUSH4 0x20F0656B PUSH1 0xE1 SHL DUP2 MSTORE PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB PUSH32 0x0 DUP2 AND PUSH1 0x4 DUP4 ADD MSTORE ADDRESS PUSH1 0x24 DUP4 ADD MSTORE PUSH0 SWAP2 PUSH32 0x0 SWAP1 SWAP2 AND SWAP1 PUSH4 0x41E0CAD6 SWAP1 PUSH1 0x44 ADD PUSH1 0x40 DUP1 MLOAD DUP1 DUP4 SUB DUP2 PUSH0 DUP8 GAS CALL ISZERO DUP1 ISZERO PUSH2 0x605 JUMPI RETURNDATASIZE PUSH0 PUSH0 RETURNDATACOPY RETURNDATASIZE PUSH0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP3 ADD DUP1 PUSH1 0x40 MSTORE POP DUP2 ADD SWAP1 PUSH2 0x629 SWAP2 SWAP1 PUSH2 0x1247 JUMP JUMPDEST DUP1 MLOAD SWAP1 SWAP2 POP PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND ISZERO DUP1 ISZERO SWAP1 PUSH2 0x648 JUMPI POP PUSH1 0x20 DUP2 ADD MLOAD ISZERO ISZERO JUMPDEST ISZERO PUSH2 0x666 JUMPI PUSH1 0x40 MLOAD PUSH4 0x42A176D1 PUSH1 0xE1 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST POP JUMPDEST POP JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB PUSH32 0x0 AND ADDRESS SUB PUSH2 0x6B4 JUMPI PUSH1 0x40 MLOAD PUSH4 0x2ABF118B PUSH1 0xE2 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH1 0x60 DUP2 ADD SWAP1 SWAP2 MSTORE PUSH2 0x668 SWAP1 DUP1 PUSH0 DUP2 MSTORE PUSH1 0x20 ADD PUSH0 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x40 MLOAD DUP1 PUSH1 0x20 ADD PUSH1 0x40 MSTORE DUP1 PUSH0 DUP2 MSTORE POP DUP2 MSTORE POP DUP3 PUSH2 0xD3C JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB PUSH32 0x0 AND ADDRESS SUB PUSH2 0x731 JUMPI PUSH1 0x40 MLOAD PUSH4 0x2ABF118B PUSH1 0xE2 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH2 0x668 DUP2 PUSH2 0xE62 JUMP JUMPDEST PUSH0 PUSH32 0x0 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH4 0x67800B5F 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 GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x797 JUMPI RETURNDATASIZE PUSH0 PUSH0 RETURNDATACOPY RETURNDATASIZE PUSH0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP3 ADD DUP1 PUSH1 0x40 MSTORE POP DUP2 ADD SWAP1 PUSH2 0x7BB SWAP2 SWAP1 PUSH2 0x122C JUMP JUMPDEST ISZERO PUSH2 0x7C7 JUMPI POP PUSH0 SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH4 0x70A08231 PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP4 DUP2 AND PUSH1 0x4 DUP4 ADD MSTORE PUSH32 0x0 AND SWAP1 PUSH4 0x70A08231 SWAP1 PUSH1 0x24 ADD JUMPDEST PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x82C JUMPI RETURNDATASIZE PUSH0 PUSH0 RETURNDATACOPY RETURNDATASIZE PUSH0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP3 ADD DUP1 PUSH1 0x40 MSTORE POP DUP2 ADD SWAP1 PUSH2 0x47F SWAP2 SWAP1 PUSH2 0x1215 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH4 0x70A08231 PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP3 DUP2 AND PUSH1 0x4 DUP4 ADD MSTORE PUSH0 SWAP2 PUSH32 0x0 SWAP1 SWAP2 AND SWAP1 PUSH4 0x70A08231 SWAP1 PUSH1 0x24 ADD PUSH2 0x811 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH4 0x45136D7 PUSH1 0xE3 SHL DUP2 MSTORE PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB PUSH32 0x0 DUP2 AND PUSH1 0x4 DUP4 ADD MSTORE PUSH0 SWAP2 PUSH32 0x0 SWAP1 SWAP2 AND SWAP1 PUSH4 0x2289B6B8 SWAP1 PUSH1 0x24 ADD PUSH1 0x60 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 PUSH0 DUP8 GAS CALL ISZERO DUP1 ISZERO PUSH2 0x92B JUMPI RETURNDATASIZE PUSH0 PUSH0 RETURNDATACOPY RETURNDATASIZE PUSH0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP3 ADD DUP1 PUSH1 0x40 MSTORE POP DUP2 ADD SWAP1 PUSH2 0x94F SWAP2 SWAP1 PUSH2 0x129F JUMP JUMPDEST POP SWAP1 SWAP2 POP POP PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 AND PUSH2 0x966 JUMPI POP POP JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH4 0x5B81A7BF PUSH1 0xE1 SHL DUP2 MSTORE PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB PUSH32 0x0 DUP2 AND PUSH1 0x4 DUP4 ADD MSTORE ADDRESS PUSH1 0x24 DUP4 ADD MSTORE PUSH1 0x1 PUSH1 0x44 DUP4 ADD MSTORE PUSH32 0x0 AND SWAP1 PUSH4 0xB7034F7E SWAP1 PUSH1 0x64 ADD PUSH0 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 PUSH0 DUP8 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x9F3 JUMPI PUSH0 PUSH0 REVERT JUMPDEST POP GAS CALL ISZERO DUP1 ISZERO PUSH2 0xA05 JUMPI RETURNDATASIZE PUSH0 PUSH0 RETURNDATACOPY RETURNDATASIZE PUSH0 REVERT JUMPDEST POP POP POP POP PUSH0 PUSH2 0xA31 PUSH32 0x0 SWAP1 JUMP JUMPDEST DUP1 SLOAD PUSH2 0xA3C SWAP1 PUSH2 0x12F5 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 0xA68 SWAP1 PUSH2 0x12F5 JUMP JUMPDEST DUP1 ISZERO PUSH2 0xAB3 JUMPI DUP1 PUSH1 0x1F LT PUSH2 0xA8A JUMPI PUSH2 0x100 DUP1 DUP4 SLOAD DIV MUL DUP4 MSTORE SWAP2 PUSH1 0x20 ADD SWAP2 PUSH2 0xAB3 JUMP JUMPDEST DUP3 ADD SWAP2 SWAP1 PUSH0 MSTORE PUSH1 0x20 PUSH0 KECCAK256 SWAP1 JUMPDEST DUP2 SLOAD DUP2 MSTORE SWAP1 PUSH1 0x1 ADD SWAP1 PUSH1 0x20 ADD DUP1 DUP4 GT PUSH2 0xA96 JUMPI DUP3 SWAP1 SUB PUSH1 0x1F AND DUP3 ADD SWAP2 JUMPDEST POP POP POP POP POP DUP1 PUSH1 0x20 ADD SWAP1 MLOAD DUP2 ADD SWAP1 PUSH2 0xACB SWAP2 SWAP1 PUSH2 0x137A JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH4 0x70A08231 PUSH1 0xE0 SHL DUP2 MSTORE ADDRESS PUSH1 0x4 DUP3 ADD MSTORE SWAP1 SWAP2 POP PUSH0 SWAP1 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP5 AND SWAP1 PUSH4 0x70A08231 SWAP1 PUSH1 0x24 ADD PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0xB12 JUMPI RETURNDATASIZE PUSH0 PUSH0 RETURNDATACOPY RETURNDATASIZE PUSH0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP3 ADD DUP1 PUSH1 0x40 MSTORE POP DUP2 ADD SWAP1 PUSH2 0xB36 SWAP2 SWAP1 PUSH2 0x1215 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH4 0x77566915 PUSH1 0xE0 SHL DUP2 MSTORE SWAP1 SWAP2 POP PUSH0 SWAP1 PUSH20 0x0 SWAP1 PUSH4 0x77566915 SWAP1 PUSH2 0xB9A SWAP1 DUP7 SWAP1 DUP9 SWAP1 PUSH32 0x0 SWAP1 DUP9 SWAP1 DUP13 SWAP1 PUSH1 0x4 ADD PUSH2 0x1406 JUMP JUMPDEST PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 GAS DELEGATECALL ISZERO DUP1 ISZERO PUSH2 0xBB5 JUMPI RETURNDATASIZE PUSH0 PUSH0 RETURNDATACOPY RETURNDATASIZE PUSH0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP3 ADD DUP1 PUSH1 0x40 MSTORE POP DUP2 ADD SWAP1 PUSH2 0xBD9 SWAP2 SWAP1 PUSH2 0x1215 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH4 0x230A5C4B PUSH1 0xE1 SHL DUP2 MSTORE PUSH1 0x4 DUP2 ADD DUP3 SWAP1 MSTORE SWAP1 SWAP2 POP ADDRESS SWAP1 PUSH4 0x4614B896 SWAP1 PUSH1 0x24 ADD PUSH0 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 PUSH0 DUP8 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0xC12 JUMPI PUSH0 PUSH0 REVERT JUMPDEST POP GAS CALL ISZERO DUP1 ISZERO PUSH2 0xC24 JUMPI RETURNDATASIZE PUSH0 PUSH0 RETURNDATACOPY RETURNDATASIZE PUSH0 REVERT JUMPDEST POP POP PUSH1 0x40 DUP1 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP9 AND DUP2 MSTORE PUSH1 0x20 DUP2 ADD DUP7 SWAP1 MSTORE SWAP1 DUP2 ADD DUP5 SWAP1 MSTORE PUSH32 0xDACBDDE355BA930696A362EA6738FEB9F8BD52DFB3D81947558FD3217E23E325 SWAP3 POP PUSH1 0x60 ADD SWAP1 POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 LOG1 POP POP POP POP POP JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH1 0x60 DUP1 DUP3 ADD DUP4 MSTORE PUSH0 DUP1 DUP4 MSTORE PUSH1 0x20 DUP4 ADD MSTORE SWAP2 DUP2 ADD SWAP2 SWAP1 SWAP2 MSTORE PUSH1 0x40 MLOAD PUSH4 0x47E57533 PUSH1 0xE0 SHL DUP2 MSTORE PUSH32 0x0 PUSH1 0x4 DUP3 ADD MSTORE PUSH0 SWAP1 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP5 AND SWAP1 PUSH4 0x47E57533 SWAP1 PUSH1 0x24 ADD PUSH0 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0xCF8 JUMPI RETURNDATASIZE PUSH0 PUSH0 RETURNDATACOPY RETURNDATASIZE PUSH0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH0 DUP3 RETURNDATACOPY PUSH1 0x1F RETURNDATASIZE SWAP1 DUP2 ADD PUSH1 0x1F NOT AND DUP3 ADD PUSH1 0x40 MSTORE PUSH2 0xD1F SWAP2 SWAP1 DUP2 ADD SWAP1 PUSH2 0x1445 JUMP JUMPDEST SWAP1 POP DUP1 DUP1 PUSH1 0x20 ADD SWAP1 MLOAD DUP2 ADD SWAP1 PUSH2 0xD35 SWAP2 SWAP1 PUSH2 0x137A JUMP JUMPDEST SWAP4 SWAP3 POP POP POP JUMP JUMPDEST PUSH0 DUP2 DUP1 PUSH1 0x20 ADD SWAP1 MLOAD DUP2 ADD SWAP1 PUSH2 0xD51 SWAP2 SWAP1 PUSH2 0x137A JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH4 0x2CBF28CB PUSH1 0xE2 SHL DUP2 MSTORE SWAP1 SWAP2 POP PUSH20 0x0 SWAP1 PUSH4 0xB2FCA32C SWAP1 PUSH2 0xD8B SWAP1 DUP5 SWAP1 PUSH1 0x4 ADD PUSH2 0x11A9 JUMP JUMPDEST PUSH0 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0xDA1 JUMPI PUSH0 PUSH0 REVERT JUMPDEST POP GAS DELEGATECALL ISZERO DUP1 ISZERO PUSH2 0xDB3 JUMPI RETURNDATASIZE PUSH0 PUSH0 RETURNDATACOPY RETURNDATASIZE PUSH0 REVERT JUMPDEST POP POP POP POP DUP2 MLOAD DUP2 PUSH1 0x40 MLOAD PUSH1 0x20 ADD PUSH2 0xDCA SWAP2 SWAP1 PUSH2 0x11A9 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH1 0x20 DUP2 DUP4 SUB SUB DUP2 MSTORE SWAP1 PUSH1 0x40 MSTORE MLOAD EQ PUSH2 0xDF8 JUMPI PUSH1 0x40 MLOAD PUSH4 0x50701B61 PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH32 0xCA7F7AA563866A1D31C74DEBA224724D1DA9C35CBB6F783F2CCF0182F91E34F8 DUP4 DUP3 PUSH1 0x40 MLOAD PUSH2 0xE29 SWAP3 SWAP2 SWAP1 PUSH2 0x1477 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 LOG1 PUSH32 0x0 PUSH2 0xE5C DUP4 DUP3 PUSH2 0x14ED JUMP JUMPDEST POP POP POP POP JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH4 0x95EA7B3 PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB PUSH32 0x0 DUP2 AND PUSH1 0x4 DUP4 ADD MSTORE PUSH1 0x24 DUP3 ADD DUP4 SWAP1 MSTORE PUSH32 0x0 AND SWAP1 PUSH4 0x95EA7B3 SWAP1 PUSH1 0x44 ADD PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 PUSH0 DUP8 GAS CALL ISZERO DUP1 ISZERO PUSH2 0xEEE JUMPI RETURNDATASIZE PUSH0 PUSH0 RETURNDATACOPY RETURNDATASIZE PUSH0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP3 ADD DUP1 PUSH1 0x40 MSTORE POP DUP2 ADD SWAP1 PUSH2 0xF12 SWAP2 SWAP1 PUSH2 0x122C JUMP JUMPDEST POP PUSH1 0x40 MLOAD PUSH4 0x1E573FB7 PUSH1 0xE3 SHL DUP2 MSTORE PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB PUSH32 0x0 DUP2 AND PUSH1 0x4 DUP4 ADD MSTORE PUSH1 0x24 DUP3 ADD DUP4 SWAP1 MSTORE PUSH32 0x0 AND SWAP1 PUSH4 0xF2B9FDB8 SWAP1 PUSH1 0x44 ADD PUSH2 0x396 JUMP JUMPDEST PUSH4 0x4E487B71 PUSH1 0xE0 SHL PUSH0 MSTORE PUSH1 0x41 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH0 REVERT JUMPDEST PUSH1 0x40 MLOAD PUSH1 0x60 DUP2 ADD PUSH8 0xFFFFFFFFFFFFFFFF DUP2 GT DUP3 DUP3 LT OR ISZERO PUSH2 0xFBF JUMPI PUSH2 0xFBF PUSH2 0xF88 JUMP JUMPDEST PUSH1 0x40 MSTORE SWAP1 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH1 0x1F DUP3 ADD PUSH1 0x1F NOT AND DUP2 ADD PUSH8 0xFFFFFFFFFFFFFFFF DUP2 GT DUP3 DUP3 LT OR ISZERO PUSH2 0xFEE JUMPI PUSH2 0xFEE PUSH2 0xF88 JUMP JUMPDEST PUSH1 0x40 MSTORE SWAP2 SWAP1 POP JUMP JUMPDEST PUSH0 PUSH8 0xFFFFFFFFFFFFFFFF DUP3 GT ISZERO PUSH2 0x100F JUMPI PUSH2 0x100F PUSH2 0xF88 JUMP JUMPDEST POP PUSH1 0x1F ADD PUSH1 0x1F NOT AND PUSH1 0x20 ADD SWAP1 JUMP JUMPDEST PUSH0 DUP3 PUSH1 0x1F DUP4 ADD SLT PUSH2 0x102C JUMPI PUSH0 PUSH0 REVERT JUMPDEST DUP2 CALLDATALOAD PUSH2 0x103F PUSH2 0x103A DUP3 PUSH2 0xFF6 JUMP JUMPDEST PUSH2 0xFC5 JUMP JUMPDEST DUP2 DUP2 MSTORE DUP5 PUSH1 0x20 DUP4 DUP7 ADD ADD GT ISZERO PUSH2 0x1053 JUMPI PUSH0 PUSH0 REVERT JUMPDEST DUP2 PUSH1 0x20 DUP6 ADD PUSH1 0x20 DUP4 ADD CALLDATACOPY PUSH0 SWAP2 DUP2 ADD PUSH1 0x20 ADD SWAP2 SWAP1 SWAP2 MSTORE SWAP4 SWAP3 POP POP POP JUMP JUMPDEST PUSH0 PUSH0 PUSH1 0x40 DUP4 DUP6 SUB SLT ISZERO PUSH2 0x1080 JUMPI PUSH0 PUSH0 REVERT JUMPDEST DUP3 CALLDATALOAD PUSH1 0xFF DUP2 AND DUP2 EQ PUSH2 0x1090 JUMPI PUSH0 PUSH0 REVERT JUMPDEST SWAP2 POP PUSH1 0x20 DUP4 ADD CALLDATALOAD PUSH8 0xFFFFFFFFFFFFFFFF DUP2 GT ISZERO PUSH2 0x10AB JUMPI PUSH0 PUSH0 REVERT JUMPDEST PUSH2 0x10B7 DUP6 DUP3 DUP7 ADD PUSH2 0x101D JUMP JUMPDEST SWAP2 POP POP SWAP3 POP SWAP3 SWAP1 POP JUMP JUMPDEST PUSH0 DUP2 MLOAD DUP1 DUP5 MSTORE DUP1 PUSH1 0x20 DUP5 ADD PUSH1 0x20 DUP7 ADD MCOPY PUSH0 PUSH1 0x20 DUP3 DUP7 ADD ADD MSTORE PUSH1 0x20 PUSH1 0x1F NOT PUSH1 0x1F DUP4 ADD AND DUP6 ADD ADD SWAP2 POP POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x20 DUP2 MSTORE PUSH0 PUSH2 0xD35 PUSH1 0x20 DUP4 ADD DUP5 PUSH2 0x10C1 JUMP JUMPDEST PUSH0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x1111 JUMPI PUSH0 PUSH0 REVERT JUMPDEST POP CALLDATALOAD SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 AND DUP2 EQ PUSH2 0x668 JUMPI PUSH0 PUSH0 REVERT JUMPDEST PUSH0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x113C JUMPI PUSH0 PUSH0 REVERT JUMPDEST DUP2 CALLDATALOAD PUSH2 0xD35 DUP2 PUSH2 0x1118 JUMP JUMPDEST PUSH4 0x4E487B71 PUSH1 0xE0 SHL PUSH0 MSTORE PUSH1 0x21 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH0 REVERT JUMPDEST PUSH0 DUP2 MLOAD PUSH1 0x3 DUP2 LT PUSH2 0x117A JUMPI PUSH4 0x4E487B71 PUSH1 0xE0 SHL PUSH0 MSTORE PUSH1 0x21 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH0 REVERT JUMPDEST DUP1 DUP5 MSTORE POP PUSH1 0x20 DUP3 ADD MLOAD PUSH1 0x20 DUP5 ADD MSTORE PUSH1 0x40 DUP3 ADD MLOAD PUSH1 0x60 PUSH1 0x40 DUP6 ADD MSTORE PUSH2 0x11A1 PUSH1 0x60 DUP6 ADD DUP3 PUSH2 0x10C1 JUMP JUMPDEST SWAP5 SWAP4 POP POP POP POP JUMP JUMPDEST PUSH1 0x20 DUP2 MSTORE PUSH0 PUSH2 0xD35 PUSH1 0x20 DUP4 ADD DUP5 PUSH2 0x115B JUMP JUMPDEST DUP1 ISZERO ISZERO DUP2 EQ PUSH2 0x668 JUMPI PUSH0 PUSH0 REVERT JUMPDEST PUSH0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x11D8 JUMPI PUSH0 PUSH0 REVERT JUMPDEST DUP2 CALLDATALOAD PUSH2 0xD35 DUP2 PUSH2 0x11BB JUMP JUMPDEST PUSH0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x11F3 JUMPI PUSH0 PUSH0 REVERT JUMPDEST DUP2 CALLDATALOAD PUSH8 0xFFFFFFFFFFFFFFFF DUP2 GT ISZERO PUSH2 0x1209 JUMPI PUSH0 PUSH0 REVERT JUMPDEST PUSH2 0x11A1 DUP5 DUP3 DUP6 ADD PUSH2 0x101D JUMP JUMPDEST PUSH0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x1225 JUMPI PUSH0 PUSH0 REVERT JUMPDEST POP MLOAD SWAP2 SWAP1 POP JUMP JUMPDEST PUSH0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x123C JUMPI PUSH0 PUSH0 REVERT JUMPDEST DUP2 MLOAD PUSH2 0xD35 DUP2 PUSH2 0x11BB JUMP JUMPDEST PUSH0 PUSH1 0x40 DUP3 DUP5 SUB SLT DUP1 ISZERO PUSH2 0x1258 JUMPI PUSH0 PUSH0 REVERT JUMPDEST POP PUSH1 0x40 DUP1 MLOAD SWAP1 DUP2 ADD PUSH8 0xFFFFFFFFFFFFFFFF DUP2 GT DUP3 DUP3 LT OR ISZERO PUSH2 0x127C JUMPI PUSH2 0x127C PUSH2 0xF88 JUMP JUMPDEST PUSH1 0x40 MSTORE DUP3 MLOAD PUSH2 0x128A DUP2 PUSH2 0x1118 JUMP JUMPDEST DUP2 MSTORE PUSH1 0x20 SWAP3 DUP4 ADD MLOAD SWAP3 DUP2 ADD SWAP3 SWAP1 SWAP3 MSTORE POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH0 PUSH0 PUSH0 PUSH1 0x60 DUP5 DUP7 SUB SLT ISZERO PUSH2 0x12B1 JUMPI PUSH0 PUSH0 REVERT JUMPDEST DUP4 MLOAD PUSH2 0x12BC DUP2 PUSH2 0x1118 JUMP JUMPDEST PUSH1 0x20 DUP6 ADD MLOAD SWAP1 SWAP4 POP PUSH8 0xFFFFFFFFFFFFFFFF DUP2 AND DUP2 EQ PUSH2 0x12D9 JUMPI PUSH0 PUSH0 REVERT JUMPDEST PUSH1 0x40 DUP6 ADD MLOAD SWAP1 SWAP3 POP PUSH2 0x12EA DUP2 PUSH2 0x11BB JUMP JUMPDEST DUP1 SWAP2 POP POP SWAP3 POP SWAP3 POP SWAP3 JUMP JUMPDEST PUSH1 0x1 DUP2 DUP2 SHR SWAP1 DUP3 AND DUP1 PUSH2 0x1309 JUMPI PUSH1 0x7F DUP3 AND SWAP2 POP JUMPDEST PUSH1 0x20 DUP3 LT DUP2 SUB PUSH2 0x1327 JUMPI PUSH4 0x4E487B71 PUSH1 0xE0 SHL PUSH0 MSTORE PUSH1 0x22 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH0 REVERT JUMPDEST POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH0 DUP3 PUSH1 0x1F DUP4 ADD SLT PUSH2 0x133C JUMPI PUSH0 PUSH0 REVERT JUMPDEST DUP2 MLOAD PUSH2 0x134A PUSH2 0x103A DUP3 PUSH2 0xFF6 JUMP JUMPDEST DUP2 DUP2 MSTORE DUP5 PUSH1 0x20 DUP4 DUP7 ADD ADD GT ISZERO PUSH2 0x135E JUMPI PUSH0 PUSH0 REVERT JUMPDEST DUP2 PUSH1 0x20 DUP6 ADD PUSH1 0x20 DUP4 ADD MCOPY PUSH0 SWAP2 DUP2 ADD PUSH1 0x20 ADD SWAP2 SWAP1 SWAP2 MSTORE SWAP4 SWAP3 POP POP POP JUMP JUMPDEST PUSH0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x138A JUMPI PUSH0 PUSH0 REVERT JUMPDEST DUP2 MLOAD PUSH8 0xFFFFFFFFFFFFFFFF DUP2 GT ISZERO PUSH2 0x13A0 JUMPI PUSH0 PUSH0 REVERT JUMPDEST DUP3 ADD PUSH1 0x60 DUP2 DUP6 SUB SLT ISZERO PUSH2 0x13B1 JUMPI PUSH0 PUSH0 REVERT JUMPDEST PUSH2 0x13B9 PUSH2 0xF9C JUMP JUMPDEST DUP2 MLOAD PUSH1 0x3 DUP2 LT PUSH2 0x13C7 JUMPI PUSH0 PUSH0 REVERT JUMPDEST DUP2 MSTORE PUSH1 0x20 DUP3 DUP2 ADD MLOAD SWAP1 DUP3 ADD MSTORE PUSH1 0x40 DUP3 ADD MLOAD PUSH8 0xFFFFFFFFFFFFFFFF DUP2 GT ISZERO PUSH2 0x13EC JUMPI PUSH0 PUSH0 REVERT JUMPDEST PUSH2 0x13F8 DUP7 DUP3 DUP6 ADD PUSH2 0x132D JUMP JUMPDEST PUSH1 0x40 DUP4 ADD MSTORE POP SWAP5 SWAP4 POP POP POP POP JUMP JUMPDEST PUSH1 0xA0 DUP2 MSTORE PUSH0 PUSH2 0x1418 PUSH1 0xA0 DUP4 ADD DUP9 PUSH2 0x115B JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP7 DUP8 AND PUSH1 0x20 DUP5 ADD MSTORE SWAP5 SWAP1 SWAP6 AND PUSH1 0x40 DUP3 ADD MSTORE PUSH1 0x60 DUP2 ADD SWAP3 SWAP1 SWAP3 MSTORE PUSH1 0x80 SWAP1 SWAP2 ADD MSTORE SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x1455 JUMPI PUSH0 PUSH0 REVERT JUMPDEST DUP2 MLOAD PUSH8 0xFFFFFFFFFFFFFFFF DUP2 GT ISZERO PUSH2 0x146B JUMPI PUSH0 PUSH0 REVERT JUMPDEST PUSH2 0x11A1 DUP5 DUP3 DUP6 ADD PUSH2 0x132D JUMP JUMPDEST PUSH1 0x40 DUP2 MSTORE PUSH0 PUSH2 0x1489 PUSH1 0x40 DUP4 ADD DUP6 PUSH2 0x115B JUMP JUMPDEST DUP3 DUP2 SUB PUSH1 0x20 DUP5 ADD MSTORE PUSH2 0x149B DUP2 DUP6 PUSH2 0x115B JUMP JUMPDEST SWAP6 SWAP5 POP POP POP POP POP JUMP JUMPDEST PUSH1 0x1F DUP3 GT ISZERO PUSH2 0x14E8 JUMPI DUP1 PUSH0 MSTORE PUSH1 0x20 PUSH0 KECCAK256 PUSH1 0x1F DUP5 ADD PUSH1 0x5 SHR DUP2 ADD PUSH1 0x20 DUP6 LT ISZERO PUSH2 0x14C9 JUMPI POP DUP1 JUMPDEST PUSH1 0x1F DUP5 ADD PUSH1 0x5 SHR DUP3 ADD SWAP2 POP JUMPDEST DUP2 DUP2 LT ISZERO PUSH2 0x3BF JUMPI PUSH0 DUP2 SSTORE PUSH1 0x1 ADD PUSH2 0x14D5 JUMP JUMPDEST POP POP POP JUMP JUMPDEST DUP2 MLOAD PUSH8 0xFFFFFFFFFFFFFFFF DUP2 GT ISZERO PUSH2 0x1507 JUMPI PUSH2 0x1507 PUSH2 0xF88 JUMP JUMPDEST PUSH2 0x151B DUP2 PUSH2 0x1515 DUP5 SLOAD PUSH2 0x12F5 JUMP JUMPDEST DUP5 PUSH2 0x14A4 JUMP JUMPDEST PUSH1 0x20 PUSH1 0x1F DUP3 GT PUSH1 0x1 DUP2 EQ PUSH2 0x154D JUMPI PUSH0 DUP4 ISZERO PUSH2 0x1536 JUMPI POP DUP5 DUP3 ADD MLOAD JUMPDEST PUSH0 NOT PUSH1 0x3 DUP6 SWAP1 SHL SHR NOT AND PUSH1 0x1 DUP5 SWAP1 SHL OR DUP5 SSTORE PUSH2 0x3BF JUMP JUMPDEST PUSH0 DUP5 DUP2 MSTORE PUSH1 0x20 DUP2 KECCAK256 PUSH1 0x1F NOT DUP6 AND SWAP2 JUMPDEST DUP3 DUP2 LT ISZERO PUSH2 0x157C JUMPI DUP8 DUP6 ADD MLOAD DUP3 SSTORE PUSH1 0x20 SWAP5 DUP6 ADD SWAP5 PUSH1 0x1 SWAP1 SWAP3 ADD SWAP2 ADD PUSH2 0x155C JUMP JUMPDEST POP DUP5 DUP3 LT ISZERO PUSH2 0x1599 JUMPI DUP7 DUP5 ADD MLOAD PUSH0 NOT PUSH1 0x3 DUP8 SWAP1 SHL PUSH1 0xF8 AND SHR NOT AND DUP2 SSTORE JUMPDEST POP POP POP POP PUSH1 0x1 SWAP1 DUP2 SHL ADD SWAP1 SSTORE POP JUMP INVALID LOG2 PUSH5 0x6970667358 0x22 SLT KECCAK256 EXP PUSH12 0x73387AD4D40371649B2FAB8F 0xB2 XOR BLOBHASH 0x25 0xB0 MCOPY EXTCODESIZE 0xD3 RETURN 0xC3 0xDE SWAP16 0xB2 PUSH4 0x3B5DBFC2 PUSH5 0x736F6C6343 STOP ADDMOD 0x1E STOP CALLER ","sourceMap":"1464:4:78:-:0;1421:48;;;;1315:7464;7309:54:53;1129:21:87;;;1186:2;1166:18;1159:30;1225:32;1205:18;1198:60;1310:20;1303:62;;;;1315:7464:78;7309:54:53;;;1275:19:87;7309:54:53;;7299:65;;1473:81:78;;3371:248;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;-1:-1:-1;;;;;3449:38:78;;3441:73;;;;-1:-1:-1;;;3441:73:78;;;;;;;;;;;;-1:-1:-1;;;;;3520:17:78;;;;;;;3543:33;;;;;3595:19;;;-1:-1:-1;;;3595:19:78;;;;:17;;:19;;;;;;;;;;;;;;;3520:17;3595:19;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;-1:-1:-1;;;;;3582:32:78;;;-1:-1:-1;1315:7464:78;;-1:-1:-1;1315:7464:78;14:144:87;-1:-1:-1;;;;;102:31:87;;92:42;;82:70;;148:1;145;138:12;82:70;14:144;:::o;163:455::-;286:6;294;347:2;335:9;326:7;322:23;318:32;315:52;;;363:1;360;353:12;315:52;395:9;389:16;414:44;452:5;414:44;:::i;:::-;527:2;512:18;;506:25;477:5;;-1:-1:-1;540:46:87;506:25;540:46;:::i;:::-;605:7;595:17;;;163:455;;;;;:::o;623:264::-;693:6;746:2;734:9;725:7;721:23;717:32;714:52;;;762:1;759;752:12;714:52;794:9;788:16;813:44;851:5;813:44;:::i;:::-;876:5;623:264;-1:-1:-1;;;623:264:87:o;892:479::-;1315:7464:78;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;"},"deployedBytecode":{"functionDebugData":{"@_getSwapConfig_22936":{"entryPoint":3194,"id":22936,"parameterSlots":1,"returnSlots":1},"@_harvestRewards_22793":{"entryPoint":2210,"id":22793,"parameterSlots":1,"returnSlots":0},"@_setSwapConfig_22846":{"entryPoint":3388,"id":22846,"parameterSlots":2,"returnSlots":0},"@_supply_22700":{"entryPoint":3682,"id":22700,"parameterSlots":1,"returnSlots":0},"@asset_22630":{"entryPoint":null,"id":22630,"parameterSlots":1,"returnSlots":1},"@connect_22515":{"entryPoint":1643,"id":22515,"parameterSlots":1,"returnSlots":0},"@deposit_22676":{"entryPoint":1768,"id":22676,"parameterSlots":1,"returnSlots":0},"@disconnect_22575":{"entryPoint":1157,"id":22575,"parameterSlots":1,"returnSlots":0},"@forwardEntryPoint_22910":{"entryPoint":506,"id":22910,"parameterSlots":2,"returnSlots":1},"@getBytesSlot_11020":{"entryPoint":null,"id":11020,"parameterSlots":1,"returnSlots":1},"@getSwapConfig_22950":{"entryPoint":1115,"id":22950,"parameterSlots":1,"returnSlots":1},"@maxDeposit_22618":{"entryPoint":966,"id":22618,"parameterSlots":1,"returnSlots":1},"@maxWithdraw_22596":{"entryPoint":1850,"id":22596,"parameterSlots":1,"returnSlots":1},"@storageSlot_22399":{"entryPoint":null,"id":22399,"parameterSlots":0,"returnSlots":0},"@totalAssets_22645":{"entryPoint":2128,"id":22645,"parameterSlots":1,"returnSlots":1},"@withdraw_22662":{"entryPoint":732,"id":22662,"parameterSlots":1,"returnSlots":0},"abi_decode_bytes":{"entryPoint":4125,"id":null,"parameterSlots":2,"returnSlots":1},"abi_decode_bytes_fromMemory":{"entryPoint":4909,"id":null,"parameterSlots":2,"returnSlots":1},"abi_decode_tuple_t_address":{"entryPoint":4396,"id":null,"parameterSlots":2,"returnSlots":1},"abi_decode_tuple_t_addresst_uint64t_bool_fromMemory":{"entryPoint":4767,"id":null,"parameterSlots":2,"returnSlots":3},"abi_decode_tuple_t_bool":{"entryPoint":4552,"id":null,"parameterSlots":2,"returnSlots":1},"abi_decode_tuple_t_bool_fromMemory":{"entryPoint":4652,"id":null,"parameterSlots":2,"returnSlots":1},"abi_decode_tuple_t_bytes_memory_ptr":{"entryPoint":4579,"id":null,"parameterSlots":2,"returnSlots":1},"abi_decode_tuple_t_bytes_memory_ptr_fromMemory":{"entryPoint":5189,"id":null,"parameterSlots":2,"returnSlots":1},"abi_decode_tuple_t_struct$_RewardOwed_$20550_memory_ptr_fromMemory":{"entryPoint":4679,"id":null,"parameterSlots":2,"returnSlots":1},"abi_decode_tuple_t_struct$_SwapConfig_$1113_memory_ptr_fromMemory":{"entryPoint":4986,"id":null,"parameterSlots":2,"returnSlots":1},"abi_decode_tuple_t_uint256":{"entryPoint":4353,"id":null,"parameterSlots":2,"returnSlots":1},"abi_decode_tuple_t_uint256_fromMemory":{"entryPoint":4629,"id":null,"parameterSlots":2,"returnSlots":1},"abi_decode_tuple_t_uint8t_bytes_memory_ptr":{"entryPoint":4207,"id":null,"parameterSlots":2,"returnSlots":2},"abi_encode_bytes":{"entryPoint":4289,"id":null,"parameterSlots":2,"returnSlots":1},"abi_encode_struct_SwapConfig":{"entryPoint":4443,"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__to_t_address_t_address__fromStack_reversed":{"entryPoint":null,"id":null,"parameterSlots":3,"returnSlots":1},"abi_encode_tuple_t_address_t_address_t_bool__to_t_address_t_address_t_bool__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_address_t_uint256_t_uint256__to_t_address_t_uint256_t_uint256__fromStack_reversed":{"entryPoint":null,"id":null,"parameterSlots":4,"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":4335,"id":null,"parameterSlots":2,"returnSlots":1},"abi_encode_tuple_t_struct$_SwapConfig_$1113_memory_ptr__to_t_struct$_SwapConfig_$1113_memory_ptr__fromStack_library_reversed":{"entryPoint":null,"id":null,"parameterSlots":2,"returnSlots":1},"abi_encode_tuple_t_struct$_SwapConfig_$1113_memory_ptr__to_t_struct$_SwapConfig_$1113_memory_ptr__fromStack_reversed":{"entryPoint":4521,"id":null,"parameterSlots":2,"returnSlots":1},"abi_encode_tuple_t_struct$_SwapConfig_$1113_memory_ptr_t_address_t_address_t_uint256_t_uint256__to_t_struct$_SwapConfig_$1113_memory_ptr_t_address_t_address_t_uint256_t_uint256__fromStack_library_reversed":{"entryPoint":5126,"id":null,"parameterSlots":6,"returnSlots":1},"abi_encode_tuple_t_struct$_SwapConfig_$1113_memory_ptr_t_struct$_SwapConfig_$1113_memory_ptr__to_t_struct$_SwapConfig_$1113_memory_ptr_t_struct$_SwapConfig_$1113_memory_ptr__fromStack_reversed":{"entryPoint":5239,"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":4037,"id":null,"parameterSlots":1,"returnSlots":1},"allocate_memory_1590":{"entryPoint":3996,"id":null,"parameterSlots":0,"returnSlots":1},"array_allocation_size_bytes":{"entryPoint":4086,"id":null,"parameterSlots":1,"returnSlots":1},"array_dataslot_bytes_storage":{"entryPoint":null,"id":null,"parameterSlots":1,"returnSlots":1},"clean_up_bytearray_end_slots_bytes_storage":{"entryPoint":5284,"id":null,"parameterSlots":3,"returnSlots":0},"copy_byte_array_to_storage_from_t_bytes_memory_ptr_to_t_bytes_storage":{"entryPoint":5357,"id":null,"parameterSlots":2,"returnSlots":0},"extract_byte_array_length":{"entryPoint":4853,"id":null,"parameterSlots":1,"returnSlots":1},"extract_used_part_and_set_length_of_short_byte_array":{"entryPoint":null,"id":null,"parameterSlots":2,"returnSlots":1},"panic_error_0x21":{"entryPoint":4423,"id":null,"parameterSlots":0,"returnSlots":0},"panic_error_0x41":{"entryPoint":3976,"id":null,"parameterSlots":0,"returnSlots":0},"validator_revert_address":{"entryPoint":4376,"id":null,"parameterSlots":1,"returnSlots":0},"validator_revert_bool":{"entryPoint":4539,"id":null,"parameterSlots":1,"returnSlots":0}},"generatedSources":[{"ast":{"nativeSrc":"0:13702:87","nodeType":"YulBlock","src":"0:13702:87","statements":[{"nativeSrc":"6:3:87","nodeType":"YulBlock","src":"6:3:87","statements":[]},{"body":{"nativeSrc":"46:95:87","nodeType":"YulBlock","src":"46:95:87","statements":[{"expression":{"arguments":[{"kind":"number","nativeSrc":"63:1:87","nodeType":"YulLiteral","src":"63:1:87","type":"","value":"0"},{"arguments":[{"kind":"number","nativeSrc":"70:3:87","nodeType":"YulLiteral","src":"70:3:87","type":"","value":"224"},{"kind":"number","nativeSrc":"75:10:87","nodeType":"YulLiteral","src":"75:10:87","type":"","value":"0x4e487b71"}],"functionName":{"name":"shl","nativeSrc":"66:3:87","nodeType":"YulIdentifier","src":"66:3:87"},"nativeSrc":"66:20:87","nodeType":"YulFunctionCall","src":"66:20:87"}],"functionName":{"name":"mstore","nativeSrc":"56:6:87","nodeType":"YulIdentifier","src":"56:6:87"},"nativeSrc":"56:31:87","nodeType":"YulFunctionCall","src":"56:31:87"},"nativeSrc":"56:31:87","nodeType":"YulExpressionStatement","src":"56:31:87"},{"expression":{"arguments":[{"kind":"number","nativeSrc":"103:1:87","nodeType":"YulLiteral","src":"103:1:87","type":"","value":"4"},{"kind":"number","nativeSrc":"106:4:87","nodeType":"YulLiteral","src":"106:4:87","type":"","value":"0x41"}],"functionName":{"name":"mstore","nativeSrc":"96:6:87","nodeType":"YulIdentifier","src":"96:6:87"},"nativeSrc":"96:15:87","nodeType":"YulFunctionCall","src":"96:15:87"},"nativeSrc":"96:15:87","nodeType":"YulExpressionStatement","src":"96:15:87"},{"expression":{"arguments":[{"kind":"number","nativeSrc":"127:1:87","nodeType":"YulLiteral","src":"127:1:87","type":"","value":"0"},{"kind":"number","nativeSrc":"130:4:87","nodeType":"YulLiteral","src":"130:4:87","type":"","value":"0x24"}],"functionName":{"name":"revert","nativeSrc":"120:6:87","nodeType":"YulIdentifier","src":"120:6:87"},"nativeSrc":"120:15:87","nodeType":"YulFunctionCall","src":"120:15:87"},"nativeSrc":"120:15:87","nodeType":"YulExpressionStatement","src":"120:15:87"}]},"name":"panic_error_0x41","nativeSrc":"14:127:87","nodeType":"YulFunctionDefinition","src":"14:127:87"},{"body":{"nativeSrc":"192:207:87","nodeType":"YulBlock","src":"192:207:87","statements":[{"nativeSrc":"202:19:87","nodeType":"YulAssignment","src":"202:19:87","value":{"arguments":[{"kind":"number","nativeSrc":"218:2:87","nodeType":"YulLiteral","src":"218:2:87","type":"","value":"64"}],"functionName":{"name":"mload","nativeSrc":"212:5:87","nodeType":"YulIdentifier","src":"212:5:87"},"nativeSrc":"212:9:87","nodeType":"YulFunctionCall","src":"212:9:87"},"variableNames":[{"name":"memPtr","nativeSrc":"202:6:87","nodeType":"YulIdentifier","src":"202:6:87"}]},{"nativeSrc":"230:35:87","nodeType":"YulVariableDeclaration","src":"230:35:87","value":{"arguments":[{"name":"memPtr","nativeSrc":"252:6:87","nodeType":"YulIdentifier","src":"252:6:87"},{"kind":"number","nativeSrc":"260:4:87","nodeType":"YulLiteral","src":"260:4:87","type":"","value":"0x60"}],"functionName":{"name":"add","nativeSrc":"248:3:87","nodeType":"YulIdentifier","src":"248:3:87"},"nativeSrc":"248:17:87","nodeType":"YulFunctionCall","src":"248:17:87"},"variables":[{"name":"newFreePtr","nativeSrc":"234:10:87","nodeType":"YulTypedName","src":"234:10:87","type":""}]},{"body":{"nativeSrc":"340:22:87","nodeType":"YulBlock","src":"340:22:87","statements":[{"expression":{"arguments":[],"functionName":{"name":"panic_error_0x41","nativeSrc":"342:16:87","nodeType":"YulIdentifier","src":"342:16:87"},"nativeSrc":"342:18:87","nodeType":"YulFunctionCall","src":"342:18:87"},"nativeSrc":"342:18:87","nodeType":"YulExpressionStatement","src":"342:18:87"}]},"condition":{"arguments":[{"arguments":[{"name":"newFreePtr","nativeSrc":"283:10:87","nodeType":"YulIdentifier","src":"283:10:87"},{"kind":"number","nativeSrc":"295:18:87","nodeType":"YulLiteral","src":"295:18:87","type":"","value":"0xffffffffffffffff"}],"functionName":{"name":"gt","nativeSrc":"280:2:87","nodeType":"YulIdentifier","src":"280:2:87"},"nativeSrc":"280:34:87","nodeType":"YulFunctionCall","src":"280:34:87"},{"arguments":[{"name":"newFreePtr","nativeSrc":"319:10:87","nodeType":"YulIdentifier","src":"319:10:87"},{"name":"memPtr","nativeSrc":"331:6:87","nodeType":"YulIdentifier","src":"331:6:87"}],"functionName":{"name":"lt","nativeSrc":"316:2:87","nodeType":"YulIdentifier","src":"316:2:87"},"nativeSrc":"316:22:87","nodeType":"YulFunctionCall","src":"316:22:87"}],"functionName":{"name":"or","nativeSrc":"277:2:87","nodeType":"YulIdentifier","src":"277:2:87"},"nativeSrc":"277:62:87","nodeType":"YulFunctionCall","src":"277:62:87"},"nativeSrc":"274:88:87","nodeType":"YulIf","src":"274:88:87"},{"expression":{"arguments":[{"kind":"number","nativeSrc":"378:2:87","nodeType":"YulLiteral","src":"378:2:87","type":"","value":"64"},{"name":"newFreePtr","nativeSrc":"382:10:87","nodeType":"YulIdentifier","src":"382:10:87"}],"functionName":{"name":"mstore","nativeSrc":"371:6:87","nodeType":"YulIdentifier","src":"371:6:87"},"nativeSrc":"371:22:87","nodeType":"YulFunctionCall","src":"371:22:87"},"nativeSrc":"371:22:87","nodeType":"YulExpressionStatement","src":"371:22:87"}]},"name":"allocate_memory_1590","nativeSrc":"146:253:87","nodeType":"YulFunctionDefinition","returnVariables":[{"name":"memPtr","nativeSrc":"181:6:87","nodeType":"YulTypedName","src":"181:6:87","type":""}],"src":"146:253:87"},{"body":{"nativeSrc":"449:230:87","nodeType":"YulBlock","src":"449:230:87","statements":[{"nativeSrc":"459:19:87","nodeType":"YulAssignment","src":"459:19:87","value":{"arguments":[{"kind":"number","nativeSrc":"475:2:87","nodeType":"YulLiteral","src":"475:2:87","type":"","value":"64"}],"functionName":{"name":"mload","nativeSrc":"469:5:87","nodeType":"YulIdentifier","src":"469:5:87"},"nativeSrc":"469:9:87","nodeType":"YulFunctionCall","src":"469:9:87"},"variableNames":[{"name":"memPtr","nativeSrc":"459:6:87","nodeType":"YulIdentifier","src":"459:6:87"}]},{"nativeSrc":"487:58:87","nodeType":"YulVariableDeclaration","src":"487:58:87","value":{"arguments":[{"name":"memPtr","nativeSrc":"509:6:87","nodeType":"YulIdentifier","src":"509:6:87"},{"arguments":[{"arguments":[{"name":"size","nativeSrc":"525:4:87","nodeType":"YulIdentifier","src":"525:4:87"},{"kind":"number","nativeSrc":"531:2:87","nodeType":"YulLiteral","src":"531:2:87","type":"","value":"31"}],"functionName":{"name":"add","nativeSrc":"521:3:87","nodeType":"YulIdentifier","src":"521:3:87"},"nativeSrc":"521:13:87","nodeType":"YulFunctionCall","src":"521:13:87"},{"arguments":[{"kind":"number","nativeSrc":"540:2:87","nodeType":"YulLiteral","src":"540:2:87","type":"","value":"31"}],"functionName":{"name":"not","nativeSrc":"536:3:87","nodeType":"YulIdentifier","src":"536:3:87"},"nativeSrc":"536:7:87","nodeType":"YulFunctionCall","src":"536:7:87"}],"functionName":{"name":"and","nativeSrc":"517:3:87","nodeType":"YulIdentifier","src":"517:3:87"},"nativeSrc":"517:27:87","nodeType":"YulFunctionCall","src":"517:27:87"}],"functionName":{"name":"add","nativeSrc":"505:3:87","nodeType":"YulIdentifier","src":"505:3:87"},"nativeSrc":"505:40:87","nodeType":"YulFunctionCall","src":"505:40:87"},"variables":[{"name":"newFreePtr","nativeSrc":"491:10:87","nodeType":"YulTypedName","src":"491:10:87","type":""}]},{"body":{"nativeSrc":"620:22:87","nodeType":"YulBlock","src":"620:22:87","statements":[{"expression":{"arguments":[],"functionName":{"name":"panic_error_0x41","nativeSrc":"622:16:87","nodeType":"YulIdentifier","src":"622:16:87"},"nativeSrc":"622:18:87","nodeType":"YulFunctionCall","src":"622:18:87"},"nativeSrc":"622:18:87","nodeType":"YulExpressionStatement","src":"622:18:87"}]},"condition":{"arguments":[{"arguments":[{"name":"newFreePtr","nativeSrc":"563:10:87","nodeType":"YulIdentifier","src":"563:10:87"},{"kind":"number","nativeSrc":"575:18:87","nodeType":"YulLiteral","src":"575:18:87","type":"","value":"0xffffffffffffffff"}],"functionName":{"name":"gt","nativeSrc":"560:2:87","nodeType":"YulIdentifier","src":"560:2:87"},"nativeSrc":"560:34:87","nodeType":"YulFunctionCall","src":"560:34:87"},{"arguments":[{"name":"newFreePtr","nativeSrc":"599:10:87","nodeType":"YulIdentifier","src":"599:10:87"},{"name":"memPtr","nativeSrc":"611:6:87","nodeType":"YulIdentifier","src":"611:6:87"}],"functionName":{"name":"lt","nativeSrc":"596:2:87","nodeType":"YulIdentifier","src":"596:2:87"},"nativeSrc":"596:22:87","nodeType":"YulFunctionCall","src":"596:22:87"}],"functionName":{"name":"or","nativeSrc":"557:2:87","nodeType":"YulIdentifier","src":"557:2:87"},"nativeSrc":"557:62:87","nodeType":"YulFunctionCall","src":"557:62:87"},"nativeSrc":"554:88:87","nodeType":"YulIf","src":"554:88:87"},{"expression":{"arguments":[{"kind":"number","nativeSrc":"658:2:87","nodeType":"YulLiteral","src":"658:2:87","type":"","value":"64"},{"name":"newFreePtr","nativeSrc":"662:10:87","nodeType":"YulIdentifier","src":"662:10:87"}],"functionName":{"name":"mstore","nativeSrc":"651:6:87","nodeType":"YulIdentifier","src":"651:6:87"},"nativeSrc":"651:22:87","nodeType":"YulFunctionCall","src":"651:22:87"},"nativeSrc":"651:22:87","nodeType":"YulExpressionStatement","src":"651:22:87"}]},"name":"allocate_memory","nativeSrc":"404:275:87","nodeType":"YulFunctionDefinition","parameters":[{"name":"size","nativeSrc":"429:4:87","nodeType":"YulTypedName","src":"429:4:87","type":""}],"returnVariables":[{"name":"memPtr","nativeSrc":"438:6:87","nodeType":"YulTypedName","src":"438:6:87","type":""}],"src":"404:275:87"},{"body":{"nativeSrc":"741:129:87","nodeType":"YulBlock","src":"741:129:87","statements":[{"body":{"nativeSrc":"785:22:87","nodeType":"YulBlock","src":"785:22:87","statements":[{"expression":{"arguments":[],"functionName":{"name":"panic_error_0x41","nativeSrc":"787:16:87","nodeType":"YulIdentifier","src":"787:16:87"},"nativeSrc":"787:18:87","nodeType":"YulFunctionCall","src":"787:18:87"},"nativeSrc":"787:18:87","nodeType":"YulExpressionStatement","src":"787:18:87"}]},"condition":{"arguments":[{"name":"length","nativeSrc":"757:6:87","nodeType":"YulIdentifier","src":"757:6:87"},{"kind":"number","nativeSrc":"765:18:87","nodeType":"YulLiteral","src":"765:18:87","type":"","value":"0xffffffffffffffff"}],"functionName":{"name":"gt","nativeSrc":"754:2:87","nodeType":"YulIdentifier","src":"754:2:87"},"nativeSrc":"754:30:87","nodeType":"YulFunctionCall","src":"754:30:87"},"nativeSrc":"751:56:87","nodeType":"YulIf","src":"751:56:87"},{"nativeSrc":"816:48:87","nodeType":"YulAssignment","src":"816:48:87","value":{"arguments":[{"arguments":[{"arguments":[{"name":"length","nativeSrc":"836:6:87","nodeType":"YulIdentifier","src":"836:6:87"},{"kind":"number","nativeSrc":"844:2:87","nodeType":"YulLiteral","src":"844:2:87","type":"","value":"31"}],"functionName":{"name":"add","nativeSrc":"832:3:87","nodeType":"YulIdentifier","src":"832:3:87"},"nativeSrc":"832:15:87","nodeType":"YulFunctionCall","src":"832:15:87"},{"arguments":[{"kind":"number","nativeSrc":"853:2:87","nodeType":"YulLiteral","src":"853:2:87","type":"","value":"31"}],"functionName":{"name":"not","nativeSrc":"849:3:87","nodeType":"YulIdentifier","src":"849:3:87"},"nativeSrc":"849:7:87","nodeType":"YulFunctionCall","src":"849:7:87"}],"functionName":{"name":"and","nativeSrc":"828:3:87","nodeType":"YulIdentifier","src":"828:3:87"},"nativeSrc":"828:29:87","nodeType":"YulFunctionCall","src":"828:29:87"},{"kind":"number","nativeSrc":"859:4:87","nodeType":"YulLiteral","src":"859:4:87","type":"","value":"0x20"}],"functionName":{"name":"add","nativeSrc":"824:3:87","nodeType":"YulIdentifier","src":"824:3:87"},"nativeSrc":"824:40:87","nodeType":"YulFunctionCall","src":"824:40:87"},"variableNames":[{"name":"size","nativeSrc":"816:4:87","nodeType":"YulIdentifier","src":"816:4:87"}]}]},"name":"array_allocation_size_bytes","nativeSrc":"684:186:87","nodeType":"YulFunctionDefinition","parameters":[{"name":"length","nativeSrc":"721:6:87","nodeType":"YulTypedName","src":"721:6:87","type":""}],"returnVariables":[{"name":"size","nativeSrc":"732:4:87","nodeType":"YulTypedName","src":"732:4:87","type":""}],"src":"684:186:87"},{"body":{"nativeSrc":"927:434:87","nodeType":"YulBlock","src":"927:434:87","statements":[{"body":{"nativeSrc":"976:16:87","nodeType":"YulBlock","src":"976:16:87","statements":[{"expression":{"arguments":[{"kind":"number","nativeSrc":"985:1:87","nodeType":"YulLiteral","src":"985:1:87","type":"","value":"0"},{"kind":"number","nativeSrc":"988:1:87","nodeType":"YulLiteral","src":"988:1:87","type":"","value":"0"}],"functionName":{"name":"revert","nativeSrc":"978:6:87","nodeType":"YulIdentifier","src":"978:6:87"},"nativeSrc":"978:12:87","nodeType":"YulFunctionCall","src":"978:12:87"},"nativeSrc":"978:12:87","nodeType":"YulExpressionStatement","src":"978:12:87"}]},"condition":{"arguments":[{"arguments":[{"arguments":[{"name":"offset","nativeSrc":"955:6:87","nodeType":"YulIdentifier","src":"955:6:87"},{"kind":"number","nativeSrc":"963:4:87","nodeType":"YulLiteral","src":"963:4:87","type":"","value":"0x1f"}],"functionName":{"name":"add","nativeSrc":"951:3:87","nodeType":"YulIdentifier","src":"951:3:87"},"nativeSrc":"951:17:87","nodeType":"YulFunctionCall","src":"951:17:87"},{"name":"end","nativeSrc":"970:3:87","nodeType":"YulIdentifier","src":"970:3:87"}],"functionName":{"name":"slt","nativeSrc":"947:3:87","nodeType":"YulIdentifier","src":"947:3:87"},"nativeSrc":"947:27:87","nodeType":"YulFunctionCall","src":"947:27:87"}],"functionName":{"name":"iszero","nativeSrc":"940:6:87","nodeType":"YulIdentifier","src":"940:6:87"},"nativeSrc":"940:35:87","nodeType":"YulFunctionCall","src":"940:35:87"},"nativeSrc":"937:55:87","nodeType":"YulIf","src":"937:55:87"},{"nativeSrc":"1001:34:87","nodeType":"YulVariableDeclaration","src":"1001:34:87","value":{"arguments":[{"name":"offset","nativeSrc":"1028:6:87","nodeType":"YulIdentifier","src":"1028:6:87"}],"functionName":{"name":"calldataload","nativeSrc":"1015:12:87","nodeType":"YulIdentifier","src":"1015:12:87"},"nativeSrc":"1015:20:87","nodeType":"YulFunctionCall","src":"1015:20:87"},"variables":[{"name":"length","nativeSrc":"1005:6:87","nodeType":"YulTypedName","src":"1005:6:87","type":""}]},{"nativeSrc":"1044:67:87","nodeType":"YulVariableDeclaration","src":"1044:67:87","value":{"arguments":[{"arguments":[{"name":"length","nativeSrc":"1103:6:87","nodeType":"YulIdentifier","src":"1103:6:87"}],"functionName":{"name":"array_allocation_size_bytes","nativeSrc":"1075:27:87","nodeType":"YulIdentifier","src":"1075:27:87"},"nativeSrc":"1075:35:87","nodeType":"YulFunctionCall","src":"1075:35:87"}],"functionName":{"name":"allocate_memory","nativeSrc":"1059:15:87","nodeType":"YulIdentifier","src":"1059:15:87"},"nativeSrc":"1059:52:87","nodeType":"YulFunctionCall","src":"1059:52:87"},"variables":[{"name":"array_1","nativeSrc":"1048:7:87","nodeType":"YulTypedName","src":"1048:7:87","type":""}]},{"expression":{"arguments":[{"name":"array_1","nativeSrc":"1127:7:87","nodeType":"YulIdentifier","src":"1127:7:87"},{"name":"length","nativeSrc":"1136:6:87","nodeType":"YulIdentifier","src":"1136:6:87"}],"functionName":{"name":"mstore","nativeSrc":"1120:6:87","nodeType":"YulIdentifier","src":"1120:6:87"},"nativeSrc":"1120:23:87","nodeType":"YulFunctionCall","src":"1120:23:87"},"nativeSrc":"1120:23:87","nodeType":"YulExpressionStatement","src":"1120:23:87"},{"body":{"nativeSrc":"1195:16:87","nodeType":"YulBlock","src":"1195:16:87","statements":[{"expression":{"arguments":[{"kind":"number","nativeSrc":"1204:1:87","nodeType":"YulLiteral","src":"1204:1:87","type":"","value":"0"},{"kind":"number","nativeSrc":"1207:1:87","nodeType":"YulLiteral","src":"1207:1:87","type":"","value":"0"}],"functionName":{"name":"revert","nativeSrc":"1197:6:87","nodeType":"YulIdentifier","src":"1197:6:87"},"nativeSrc":"1197:12:87","nodeType":"YulFunctionCall","src":"1197:12:87"},"nativeSrc":"1197:12:87","nodeType":"YulExpressionStatement","src":"1197:12:87"}]},"condition":{"arguments":[{"arguments":[{"arguments":[{"name":"offset","nativeSrc":"1166:6:87","nodeType":"YulIdentifier","src":"1166:6:87"},{"name":"length","nativeSrc":"1174:6:87","nodeType":"YulIdentifier","src":"1174:6:87"}],"functionName":{"name":"add","nativeSrc":"1162:3:87","nodeType":"YulIdentifier","src":"1162:3:87"},"nativeSrc":"1162:19:87","nodeType":"YulFunctionCall","src":"1162:19:87"},{"kind":"number","nativeSrc":"1183:4:87","nodeType":"YulLiteral","src":"1183:4:87","type":"","value":"0x20"}],"functionName":{"name":"add","nativeSrc":"1158:3:87","nodeType":"YulIdentifier","src":"1158:3:87"},"nativeSrc":"1158:30:87","nodeType":"YulFunctionCall","src":"1158:30:87"},{"name":"end","nativeSrc":"1190:3:87","nodeType":"YulIdentifier","src":"1190:3:87"}],"functionName":{"name":"gt","nativeSrc":"1155:2:87","nodeType":"YulIdentifier","src":"1155:2:87"},"nativeSrc":"1155:39:87","nodeType":"YulFunctionCall","src":"1155:39:87"},"nativeSrc":"1152:59:87","nodeType":"YulIf","src":"1152:59:87"},{"expression":{"arguments":[{"arguments":[{"name":"array_1","nativeSrc":"1237:7:87","nodeType":"YulIdentifier","src":"1237:7:87"},{"kind":"number","nativeSrc":"1246:4:87","nodeType":"YulLiteral","src":"1246:4:87","type":"","value":"0x20"}],"functionName":{"name":"add","nativeSrc":"1233:3:87","nodeType":"YulIdentifier","src":"1233:3:87"},"nativeSrc":"1233:18:87","nodeType":"YulFunctionCall","src":"1233:18:87"},{"arguments":[{"name":"offset","nativeSrc":"1257:6:87","nodeType":"YulIdentifier","src":"1257:6:87"},{"kind":"number","nativeSrc":"1265:4:87","nodeType":"YulLiteral","src":"1265:4:87","type":"","value":"0x20"}],"functionName":{"name":"add","nativeSrc":"1253:3:87","nodeType":"YulIdentifier","src":"1253:3:87"},"nativeSrc":"1253:17:87","nodeType":"YulFunctionCall","src":"1253:17:87"},{"name":"length","nativeSrc":"1272:6:87","nodeType":"YulIdentifier","src":"1272:6:87"}],"functionName":{"name":"calldatacopy","nativeSrc":"1220:12:87","nodeType":"YulIdentifier","src":"1220:12:87"},"nativeSrc":"1220:59:87","nodeType":"YulFunctionCall","src":"1220:59:87"},"nativeSrc":"1220:59:87","nodeType":"YulExpressionStatement","src":"1220:59:87"},{"expression":{"arguments":[{"arguments":[{"arguments":[{"name":"array_1","nativeSrc":"1303:7:87","nodeType":"YulIdentifier","src":"1303:7:87"},{"name":"length","nativeSrc":"1312:6:87","nodeType":"YulIdentifier","src":"1312:6:87"}],"functionName":{"name":"add","nativeSrc":"1299:3:87","nodeType":"YulIdentifier","src":"1299:3:87"},"nativeSrc":"1299:20:87","nodeType":"YulFunctionCall","src":"1299:20:87"},{"kind":"number","nativeSrc":"1321:4:87","nodeType":"YulLiteral","src":"1321:4:87","type":"","value":"0x20"}],"functionName":{"name":"add","nativeSrc":"1295:3:87","nodeType":"YulIdentifier","src":"1295:3:87"},"nativeSrc":"1295:31:87","nodeType":"YulFunctionCall","src":"1295:31:87"},{"kind":"number","nativeSrc":"1328:1:87","nodeType":"YulLiteral","src":"1328:1:87","type":"","value":"0"}],"functionName":{"name":"mstore","nativeSrc":"1288:6:87","nodeType":"YulIdentifier","src":"1288:6:87"},"nativeSrc":"1288:42:87","nodeType":"YulFunctionCall","src":"1288:42:87"},"nativeSrc":"1288:42:87","nodeType":"YulExpressionStatement","src":"1288:42:87"},{"nativeSrc":"1339:16:87","nodeType":"YulAssignment","src":"1339:16:87","value":{"name":"array_1","nativeSrc":"1348:7:87","nodeType":"YulIdentifier","src":"1348:7:87"},"variableNames":[{"name":"array","nativeSrc":"1339:5:87","nodeType":"YulIdentifier","src":"1339:5:87"}]}]},"name":"abi_decode_bytes","nativeSrc":"875:486:87","nodeType":"YulFunctionDefinition","parameters":[{"name":"offset","nativeSrc":"901:6:87","nodeType":"YulTypedName","src":"901:6:87","type":""},{"name":"end","nativeSrc":"909:3:87","nodeType":"YulTypedName","src":"909:3:87","type":""}],"returnVariables":[{"name":"array","nativeSrc":"917:5:87","nodeType":"YulTypedName","src":"917:5:87","type":""}],"src":"875:486:87"},{"body":{"nativeSrc":"1460:383:87","nodeType":"YulBlock","src":"1460:383:87","statements":[{"body":{"nativeSrc":"1506:16:87","nodeType":"YulBlock","src":"1506:16:87","statements":[{"expression":{"arguments":[{"kind":"number","nativeSrc":"1515:1:87","nodeType":"YulLiteral","src":"1515:1:87","type":"","value":"0"},{"kind":"number","nativeSrc":"1518:1:87","nodeType":"YulLiteral","src":"1518:1:87","type":"","value":"0"}],"functionName":{"name":"revert","nativeSrc":"1508:6:87","nodeType":"YulIdentifier","src":"1508:6:87"},"nativeSrc":"1508:12:87","nodeType":"YulFunctionCall","src":"1508:12:87"},"nativeSrc":"1508:12:87","nodeType":"YulExpressionStatement","src":"1508:12:87"}]},"condition":{"arguments":[{"arguments":[{"name":"dataEnd","nativeSrc":"1481:7:87","nodeType":"YulIdentifier","src":"1481:7:87"},{"name":"headStart","nativeSrc":"1490:9:87","nodeType":"YulIdentifier","src":"1490:9:87"}],"functionName":{"name":"sub","nativeSrc":"1477:3:87","nodeType":"YulIdentifier","src":"1477:3:87"},"nativeSrc":"1477:23:87","nodeType":"YulFunctionCall","src":"1477:23:87"},{"kind":"number","nativeSrc":"1502:2:87","nodeType":"YulLiteral","src":"1502:2:87","type":"","value":"64"}],"functionName":{"name":"slt","nativeSrc":"1473:3:87","nodeType":"YulIdentifier","src":"1473:3:87"},"nativeSrc":"1473:32:87","nodeType":"YulFunctionCall","src":"1473:32:87"},"nativeSrc":"1470:52:87","nodeType":"YulIf","src":"1470:52:87"},{"nativeSrc":"1531:36:87","nodeType":"YulVariableDeclaration","src":"1531:36:87","value":{"arguments":[{"name":"headStart","nativeSrc":"1557:9:87","nodeType":"YulIdentifier","src":"1557:9:87"}],"functionName":{"name":"calldataload","nativeSrc":"1544:12:87","nodeType":"YulIdentifier","src":"1544:12:87"},"nativeSrc":"1544:23:87","nodeType":"YulFunctionCall","src":"1544:23:87"},"variables":[{"name":"value","nativeSrc":"1535:5:87","nodeType":"YulTypedName","src":"1535:5:87","type":""}]},{"body":{"nativeSrc":"1615:16:87","nodeType":"YulBlock","src":"1615:16:87","statements":[{"expression":{"arguments":[{"kind":"number","nativeSrc":"1624:1:87","nodeType":"YulLiteral","src":"1624:1:87","type":"","value":"0"},{"kind":"number","nativeSrc":"1627:1:87","nodeType":"YulLiteral","src":"1627:1:87","type":"","value":"0"}],"functionName":{"name":"revert","nativeSrc":"1617:6:87","nodeType":"YulIdentifier","src":"1617:6:87"},"nativeSrc":"1617:12:87","nodeType":"YulFunctionCall","src":"1617:12:87"},"nativeSrc":"1617:12:87","nodeType":"YulExpressionStatement","src":"1617:12:87"}]},"condition":{"arguments":[{"arguments":[{"name":"value","nativeSrc":"1589:5:87","nodeType":"YulIdentifier","src":"1589:5:87"},{"arguments":[{"name":"value","nativeSrc":"1600:5:87","nodeType":"YulIdentifier","src":"1600:5:87"},{"kind":"number","nativeSrc":"1607:4:87","nodeType":"YulLiteral","src":"1607:4:87","type":"","value":"0xff"}],"functionName":{"name":"and","nativeSrc":"1596:3:87","nodeType":"YulIdentifier","src":"1596:3:87"},"nativeSrc":"1596:16:87","nodeType":"YulFunctionCall","src":"1596:16:87"}],"functionName":{"name":"eq","nativeSrc":"1586:2:87","nodeType":"YulIdentifier","src":"1586:2:87"},"nativeSrc":"1586:27:87","nodeType":"YulFunctionCall","src":"1586:27:87"}],"functionName":{"name":"iszero","nativeSrc":"1579:6:87","nodeType":"YulIdentifier","src":"1579:6:87"},"nativeSrc":"1579:35:87","nodeType":"YulFunctionCall","src":"1579:35:87"},"nativeSrc":"1576:55:87","nodeType":"YulIf","src":"1576:55:87"},{"nativeSrc":"1640:15:87","nodeType":"YulAssignment","src":"1640:15:87","value":{"name":"value","nativeSrc":"1650:5:87","nodeType":"YulIdentifier","src":"1650:5:87"},"variableNames":[{"name":"value0","nativeSrc":"1640:6:87","nodeType":"YulIdentifier","src":"1640:6:87"}]},{"nativeSrc":"1664:46:87","nodeType":"YulVariableDeclaration","src":"1664:46:87","value":{"arguments":[{"arguments":[{"name":"headStart","nativeSrc":"1695:9:87","nodeType":"YulIdentifier","src":"1695:9:87"},{"kind":"number","nativeSrc":"1706:2:87","nodeType":"YulLiteral","src":"1706:2:87","type":"","value":"32"}],"functionName":{"name":"add","nativeSrc":"1691:3:87","nodeType":"YulIdentifier","src":"1691:3:87"},"nativeSrc":"1691:18:87","nodeType":"YulFunctionCall","src":"1691:18:87"}],"functionName":{"name":"calldataload","nativeSrc":"1678:12:87","nodeType":"YulIdentifier","src":"1678:12:87"},"nativeSrc":"1678:32:87","nodeType":"YulFunctionCall","src":"1678:32:87"},"variables":[{"name":"offset","nativeSrc":"1668:6:87","nodeType":"YulTypedName","src":"1668:6:87","type":""}]},{"body":{"nativeSrc":"1753:16:87","nodeType":"YulBlock","src":"1753:16:87","statements":[{"expression":{"arguments":[{"kind":"number","nativeSrc":"1762:1:87","nodeType":"YulLiteral","src":"1762:1:87","type":"","value":"0"},{"kind":"number","nativeSrc":"1765:1:87","nodeType":"YulLiteral","src":"1765:1:87","type":"","value":"0"}],"functionName":{"name":"revert","nativeSrc":"1755:6:87","nodeType":"YulIdentifier","src":"1755:6:87"},"nativeSrc":"1755:12:87","nodeType":"YulFunctionCall","src":"1755:12:87"},"nativeSrc":"1755:12:87","nodeType":"YulExpressionStatement","src":"1755:12:87"}]},"condition":{"arguments":[{"name":"offset","nativeSrc":"1725:6:87","nodeType":"YulIdentifier","src":"1725:6:87"},{"kind":"number","nativeSrc":"1733:18:87","nodeType":"YulLiteral","src":"1733:18:87","type":"","value":"0xffffffffffffffff"}],"functionName":{"name":"gt","nativeSrc":"1722:2:87","nodeType":"YulIdentifier","src":"1722:2:87"},"nativeSrc":"1722:30:87","nodeType":"YulFunctionCall","src":"1722:30:87"},"nativeSrc":"1719:50:87","nodeType":"YulIf","src":"1719:50:87"},{"nativeSrc":"1778:59:87","nodeType":"YulAssignment","src":"1778:59:87","value":{"arguments":[{"arguments":[{"name":"headStart","nativeSrc":"1809:9:87","nodeType":"YulIdentifier","src":"1809:9:87"},{"name":"offset","nativeSrc":"1820:6:87","nodeType":"YulIdentifier","src":"1820:6:87"}],"functionName":{"name":"add","nativeSrc":"1805:3:87","nodeType":"YulIdentifier","src":"1805:3:87"},"nativeSrc":"1805:22:87","nodeType":"YulFunctionCall","src":"1805:22:87"},{"name":"dataEnd","nativeSrc":"1829:7:87","nodeType":"YulIdentifier","src":"1829:7:87"}],"functionName":{"name":"abi_decode_bytes","nativeSrc":"1788:16:87","nodeType":"YulIdentifier","src":"1788:16:87"},"nativeSrc":"1788:49:87","nodeType":"YulFunctionCall","src":"1788:49:87"},"variableNames":[{"name":"value1","nativeSrc":"1778:6:87","nodeType":"YulIdentifier","src":"1778:6:87"}]}]},"name":"abi_decode_tuple_t_uint8t_bytes_memory_ptr","nativeSrc":"1366:477:87","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nativeSrc":"1418:9:87","nodeType":"YulTypedName","src":"1418:9:87","type":""},{"name":"dataEnd","nativeSrc":"1429:7:87","nodeType":"YulTypedName","src":"1429:7:87","type":""}],"returnVariables":[{"name":"value0","nativeSrc":"1441:6:87","nodeType":"YulTypedName","src":"1441:6:87","type":""},{"name":"value1","nativeSrc":"1449:6:87","nodeType":"YulTypedName","src":"1449:6:87","type":""}],"src":"1366:477:87"},{"body":{"nativeSrc":"1897:239:87","nodeType":"YulBlock","src":"1897:239:87","statements":[{"nativeSrc":"1907:26:87","nodeType":"YulVariableDeclaration","src":"1907:26:87","value":{"arguments":[{"name":"value","nativeSrc":"1927:5:87","nodeType":"YulIdentifier","src":"1927:5:87"}],"functionName":{"name":"mload","nativeSrc":"1921:5:87","nodeType":"YulIdentifier","src":"1921:5:87"},"nativeSrc":"1921:12:87","nodeType":"YulFunctionCall","src":"1921:12:87"},"variables":[{"name":"length","nativeSrc":"1911:6:87","nodeType":"YulTypedName","src":"1911:6:87","type":""}]},{"expression":{"arguments":[{"name":"pos","nativeSrc":"1949:3:87","nodeType":"YulIdentifier","src":"1949:3:87"},{"name":"length","nativeSrc":"1954:6:87","nodeType":"YulIdentifier","src":"1954:6:87"}],"functionName":{"name":"mstore","nativeSrc":"1942:6:87","nodeType":"YulIdentifier","src":"1942:6:87"},"nativeSrc":"1942:19:87","nodeType":"YulFunctionCall","src":"1942:19:87"},"nativeSrc":"1942:19:87","nodeType":"YulExpressionStatement","src":"1942:19:87"},{"expression":{"arguments":[{"arguments":[{"name":"pos","nativeSrc":"1980:3:87","nodeType":"YulIdentifier","src":"1980:3:87"},{"kind":"number","nativeSrc":"1985:4:87","nodeType":"YulLiteral","src":"1985:4:87","type":"","value":"0x20"}],"functionName":{"name":"add","nativeSrc":"1976:3:87","nodeType":"YulIdentifier","src":"1976:3:87"},"nativeSrc":"1976:14:87","nodeType":"YulFunctionCall","src":"1976:14:87"},{"arguments":[{"name":"value","nativeSrc":"1996:5:87","nodeType":"YulIdentifier","src":"1996:5:87"},{"kind":"number","nativeSrc":"2003:4:87","nodeType":"YulLiteral","src":"2003:4:87","type":"","value":"0x20"}],"functionName":{"name":"add","nativeSrc":"1992:3:87","nodeType":"YulIdentifier","src":"1992:3:87"},"nativeSrc":"1992:16:87","nodeType":"YulFunctionCall","src":"1992:16:87"},{"name":"length","nativeSrc":"2010:6:87","nodeType":"YulIdentifier","src":"2010:6:87"}],"functionName":{"name":"mcopy","nativeSrc":"1970:5:87","nodeType":"YulIdentifier","src":"1970:5:87"},"nativeSrc":"1970:47:87","nodeType":"YulFunctionCall","src":"1970:47:87"},"nativeSrc":"1970:47:87","nodeType":"YulExpressionStatement","src":"1970:47:87"},{"expression":{"arguments":[{"arguments":[{"arguments":[{"name":"pos","nativeSrc":"2041:3:87","nodeType":"YulIdentifier","src":"2041:3:87"},{"name":"length","nativeSrc":"2046:6:87","nodeType":"YulIdentifier","src":"2046:6:87"}],"functionName":{"name":"add","nativeSrc":"2037:3:87","nodeType":"YulIdentifier","src":"2037:3:87"},"nativeSrc":"2037:16:87","nodeType":"YulFunctionCall","src":"2037:16:87"},{"kind":"number","nativeSrc":"2055:4:87","nodeType":"YulLiteral","src":"2055:4:87","type":"","value":"0x20"}],"functionName":{"name":"add","nativeSrc":"2033:3:87","nodeType":"YulIdentifier","src":"2033:3:87"},"nativeSrc":"2033:27:87","nodeType":"YulFunctionCall","src":"2033:27:87"},{"kind":"number","nativeSrc":"2062:1:87","nodeType":"YulLiteral","src":"2062:1:87","type":"","value":"0"}],"functionName":{"name":"mstore","nativeSrc":"2026:6:87","nodeType":"YulIdentifier","src":"2026:6:87"},"nativeSrc":"2026:38:87","nodeType":"YulFunctionCall","src":"2026:38:87"},"nativeSrc":"2026:38:87","nodeType":"YulExpressionStatement","src":"2026:38:87"},{"nativeSrc":"2073:57:87","nodeType":"YulAssignment","src":"2073:57:87","value":{"arguments":[{"arguments":[{"name":"pos","nativeSrc":"2088:3:87","nodeType":"YulIdentifier","src":"2088:3:87"},{"arguments":[{"arguments":[{"name":"length","nativeSrc":"2101:6:87","nodeType":"YulIdentifier","src":"2101:6:87"},{"kind":"number","nativeSrc":"2109:2:87","nodeType":"YulLiteral","src":"2109:2:87","type":"","value":"31"}],"functionName":{"name":"add","nativeSrc":"2097:3:87","nodeType":"YulIdentifier","src":"2097:3:87"},"nativeSrc":"2097:15:87","nodeType":"YulFunctionCall","src":"2097:15:87"},{"arguments":[{"kind":"number","nativeSrc":"2118:2:87","nodeType":"YulLiteral","src":"2118:2:87","type":"","value":"31"}],"functionName":{"name":"not","nativeSrc":"2114:3:87","nodeType":"YulIdentifier","src":"2114:3:87"},"nativeSrc":"2114:7:87","nodeType":"YulFunctionCall","src":"2114:7:87"}],"functionName":{"name":"and","nativeSrc":"2093:3:87","nodeType":"YulIdentifier","src":"2093:3:87"},"nativeSrc":"2093:29:87","nodeType":"YulFunctionCall","src":"2093:29:87"}],"functionName":{"name":"add","nativeSrc":"2084:3:87","nodeType":"YulIdentifier","src":"2084:3:87"},"nativeSrc":"2084:39:87","nodeType":"YulFunctionCall","src":"2084:39:87"},{"kind":"number","nativeSrc":"2125:4:87","nodeType":"YulLiteral","src":"2125:4:87","type":"","value":"0x20"}],"functionName":{"name":"add","nativeSrc":"2080:3:87","nodeType":"YulIdentifier","src":"2080:3:87"},"nativeSrc":"2080:50:87","nodeType":"YulFunctionCall","src":"2080:50:87"},"variableNames":[{"name":"end","nativeSrc":"2073:3:87","nodeType":"YulIdentifier","src":"2073:3:87"}]}]},"name":"abi_encode_bytes","nativeSrc":"1848:288:87","nodeType":"YulFunctionDefinition","parameters":[{"name":"value","nativeSrc":"1874:5:87","nodeType":"YulTypedName","src":"1874:5:87","type":""},{"name":"pos","nativeSrc":"1881:3:87","nodeType":"YulTypedName","src":"1881:3:87","type":""}],"returnVariables":[{"name":"end","nativeSrc":"1889:3:87","nodeType":"YulTypedName","src":"1889:3:87","type":""}],"src":"1848:288:87"},{"body":{"nativeSrc":"2260:98:87","nodeType":"YulBlock","src":"2260:98:87","statements":[{"expression":{"arguments":[{"name":"headStart","nativeSrc":"2277:9:87","nodeType":"YulIdentifier","src":"2277:9:87"},{"kind":"number","nativeSrc":"2288:2:87","nodeType":"YulLiteral","src":"2288:2:87","type":"","value":"32"}],"functionName":{"name":"mstore","nativeSrc":"2270:6:87","nodeType":"YulIdentifier","src":"2270:6:87"},"nativeSrc":"2270:21:87","nodeType":"YulFunctionCall","src":"2270:21:87"},"nativeSrc":"2270:21:87","nodeType":"YulExpressionStatement","src":"2270:21:87"},{"nativeSrc":"2300:52:87","nodeType":"YulAssignment","src":"2300:52:87","value":{"arguments":[{"name":"value0","nativeSrc":"2325:6:87","nodeType":"YulIdentifier","src":"2325:6:87"},{"arguments":[{"name":"headStart","nativeSrc":"2337:9:87","nodeType":"YulIdentifier","src":"2337:9:87"},{"kind":"number","nativeSrc":"2348:2:87","nodeType":"YulLiteral","src":"2348:2:87","type":"","value":"32"}],"functionName":{"name":"add","nativeSrc":"2333:3:87","nodeType":"YulIdentifier","src":"2333:3:87"},"nativeSrc":"2333:18:87","nodeType":"YulFunctionCall","src":"2333:18:87"}],"functionName":{"name":"abi_encode_bytes","nativeSrc":"2308:16:87","nodeType":"YulIdentifier","src":"2308:16:87"},"nativeSrc":"2308:44:87","nodeType":"YulFunctionCall","src":"2308:44:87"},"variableNames":[{"name":"tail","nativeSrc":"2300:4:87","nodeType":"YulIdentifier","src":"2300:4:87"}]}]},"name":"abi_encode_tuple_t_bytes_memory_ptr__to_t_bytes_memory_ptr__fromStack_reversed","nativeSrc":"2141:217:87","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nativeSrc":"2229:9:87","nodeType":"YulTypedName","src":"2229:9:87","type":""},{"name":"value0","nativeSrc":"2240:6:87","nodeType":"YulTypedName","src":"2240:6:87","type":""}],"returnVariables":[{"name":"tail","nativeSrc":"2251:4:87","nodeType":"YulTypedName","src":"2251:4:87","type":""}],"src":"2141:217:87"},{"body":{"nativeSrc":"2433:110:87","nodeType":"YulBlock","src":"2433:110:87","statements":[{"body":{"nativeSrc":"2479:16:87","nodeType":"YulBlock","src":"2479:16:87","statements":[{"expression":{"arguments":[{"kind":"number","nativeSrc":"2488:1:87","nodeType":"YulLiteral","src":"2488:1:87","type":"","value":"0"},{"kind":"number","nativeSrc":"2491:1:87","nodeType":"YulLiteral","src":"2491:1:87","type":"","value":"0"}],"functionName":{"name":"revert","nativeSrc":"2481:6:87","nodeType":"YulIdentifier","src":"2481:6:87"},"nativeSrc":"2481:12:87","nodeType":"YulFunctionCall","src":"2481:12:87"},"nativeSrc":"2481:12:87","nodeType":"YulExpressionStatement","src":"2481:12:87"}]},"condition":{"arguments":[{"arguments":[{"name":"dataEnd","nativeSrc":"2454:7:87","nodeType":"YulIdentifier","src":"2454:7:87"},{"name":"headStart","nativeSrc":"2463:9:87","nodeType":"YulIdentifier","src":"2463:9:87"}],"functionName":{"name":"sub","nativeSrc":"2450:3:87","nodeType":"YulIdentifier","src":"2450:3:87"},"nativeSrc":"2450:23:87","nodeType":"YulFunctionCall","src":"2450:23:87"},{"kind":"number","nativeSrc":"2475:2:87","nodeType":"YulLiteral","src":"2475:2:87","type":"","value":"32"}],"functionName":{"name":"slt","nativeSrc":"2446:3:87","nodeType":"YulIdentifier","src":"2446:3:87"},"nativeSrc":"2446:32:87","nodeType":"YulFunctionCall","src":"2446:32:87"},"nativeSrc":"2443:52:87","nodeType":"YulIf","src":"2443:52:87"},{"nativeSrc":"2504:33:87","nodeType":"YulAssignment","src":"2504:33:87","value":{"arguments":[{"name":"headStart","nativeSrc":"2527:9:87","nodeType":"YulIdentifier","src":"2527:9:87"}],"functionName":{"name":"calldataload","nativeSrc":"2514:12:87","nodeType":"YulIdentifier","src":"2514:12:87"},"nativeSrc":"2514:23:87","nodeType":"YulFunctionCall","src":"2514:23:87"},"variableNames":[{"name":"value0","nativeSrc":"2504:6:87","nodeType":"YulIdentifier","src":"2504:6:87"}]}]},"name":"abi_decode_tuple_t_uint256","nativeSrc":"2363:180:87","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nativeSrc":"2399:9:87","nodeType":"YulTypedName","src":"2399:9:87","type":""},{"name":"dataEnd","nativeSrc":"2410:7:87","nodeType":"YulTypedName","src":"2410:7:87","type":""}],"returnVariables":[{"name":"value0","nativeSrc":"2422:6:87","nodeType":"YulTypedName","src":"2422:6:87","type":""}],"src":"2363:180:87"},{"body":{"nativeSrc":"2593:86:87","nodeType":"YulBlock","src":"2593:86:87","statements":[{"body":{"nativeSrc":"2657:16:87","nodeType":"YulBlock","src":"2657:16:87","statements":[{"expression":{"arguments":[{"kind":"number","nativeSrc":"2666:1:87","nodeType":"YulLiteral","src":"2666:1:87","type":"","value":"0"},{"kind":"number","nativeSrc":"2669:1:87","nodeType":"YulLiteral","src":"2669:1:87","type":"","value":"0"}],"functionName":{"name":"revert","nativeSrc":"2659:6:87","nodeType":"YulIdentifier","src":"2659:6:87"},"nativeSrc":"2659:12:87","nodeType":"YulFunctionCall","src":"2659:12:87"},"nativeSrc":"2659:12:87","nodeType":"YulExpressionStatement","src":"2659:12:87"}]},"condition":{"arguments":[{"arguments":[{"name":"value","nativeSrc":"2616:5:87","nodeType":"YulIdentifier","src":"2616:5:87"},{"arguments":[{"name":"value","nativeSrc":"2627:5:87","nodeType":"YulIdentifier","src":"2627:5:87"},{"arguments":[{"arguments":[{"kind":"number","nativeSrc":"2642:3:87","nodeType":"YulLiteral","src":"2642:3:87","type":"","value":"160"},{"kind":"number","nativeSrc":"2647:1:87","nodeType":"YulLiteral","src":"2647:1:87","type":"","value":"1"}],"functionName":{"name":"shl","nativeSrc":"2638:3:87","nodeType":"YulIdentifier","src":"2638:3:87"},"nativeSrc":"2638:11:87","nodeType":"YulFunctionCall","src":"2638:11:87"},{"kind":"number","nativeSrc":"2651:1:87","nodeType":"YulLiteral","src":"2651:1:87","type":"","value":"1"}],"functionName":{"name":"sub","nativeSrc":"2634:3:87","nodeType":"YulIdentifier","src":"2634:3:87"},"nativeSrc":"2634:19:87","nodeType":"YulFunctionCall","src":"2634:19:87"}],"functionName":{"name":"and","nativeSrc":"2623:3:87","nodeType":"YulIdentifier","src":"2623:3:87"},"nativeSrc":"2623:31:87","nodeType":"YulFunctionCall","src":"2623:31:87"}],"functionName":{"name":"eq","nativeSrc":"2613:2:87","nodeType":"YulIdentifier","src":"2613:2:87"},"nativeSrc":"2613:42:87","nodeType":"YulFunctionCall","src":"2613:42:87"}],"functionName":{"name":"iszero","nativeSrc":"2606:6:87","nodeType":"YulIdentifier","src":"2606:6:87"},"nativeSrc":"2606:50:87","nodeType":"YulFunctionCall","src":"2606:50:87"},"nativeSrc":"2603:70:87","nodeType":"YulIf","src":"2603:70:87"}]},"name":"validator_revert_address","nativeSrc":"2548:131:87","nodeType":"YulFunctionDefinition","parameters":[{"name":"value","nativeSrc":"2582:5:87","nodeType":"YulTypedName","src":"2582:5:87","type":""}],"src":"2548:131:87"},{"body":{"nativeSrc":"2754:177:87","nodeType":"YulBlock","src":"2754:177:87","statements":[{"body":{"nativeSrc":"2800:16:87","nodeType":"YulBlock","src":"2800:16:87","statements":[{"expression":{"arguments":[{"kind":"number","nativeSrc":"2809:1:87","nodeType":"YulLiteral","src":"2809:1:87","type":"","value":"0"},{"kind":"number","nativeSrc":"2812:1:87","nodeType":"YulLiteral","src":"2812:1:87","type":"","value":"0"}],"functionName":{"name":"revert","nativeSrc":"2802:6:87","nodeType":"YulIdentifier","src":"2802:6:87"},"nativeSrc":"2802:12:87","nodeType":"YulFunctionCall","src":"2802:12:87"},"nativeSrc":"2802:12:87","nodeType":"YulExpressionStatement","src":"2802:12:87"}]},"condition":{"arguments":[{"arguments":[{"name":"dataEnd","nativeSrc":"2775:7:87","nodeType":"YulIdentifier","src":"2775:7:87"},{"name":"headStart","nativeSrc":"2784:9:87","nodeType":"YulIdentifier","src":"2784:9:87"}],"functionName":{"name":"sub","nativeSrc":"2771:3:87","nodeType":"YulIdentifier","src":"2771:3:87"},"nativeSrc":"2771:23:87","nodeType":"YulFunctionCall","src":"2771:23:87"},{"kind":"number","nativeSrc":"2796:2:87","nodeType":"YulLiteral","src":"2796:2:87","type":"","value":"32"}],"functionName":{"name":"slt","nativeSrc":"2767:3:87","nodeType":"YulIdentifier","src":"2767:3:87"},"nativeSrc":"2767:32:87","nodeType":"YulFunctionCall","src":"2767:32:87"},"nativeSrc":"2764:52:87","nodeType":"YulIf","src":"2764:52:87"},{"nativeSrc":"2825:36:87","nodeType":"YulVariableDeclaration","src":"2825:36:87","value":{"arguments":[{"name":"headStart","nativeSrc":"2851:9:87","nodeType":"YulIdentifier","src":"2851:9:87"}],"functionName":{"name":"calldataload","nativeSrc":"2838:12:87","nodeType":"YulIdentifier","src":"2838:12:87"},"nativeSrc":"2838:23:87","nodeType":"YulFunctionCall","src":"2838:23:87"},"variables":[{"name":"value","nativeSrc":"2829:5:87","nodeType":"YulTypedName","src":"2829:5:87","type":""}]},{"expression":{"arguments":[{"name":"value","nativeSrc":"2895:5:87","nodeType":"YulIdentifier","src":"2895:5:87"}],"functionName":{"name":"validator_revert_address","nativeSrc":"2870:24:87","nodeType":"YulIdentifier","src":"2870:24:87"},"nativeSrc":"2870:31:87","nodeType":"YulFunctionCall","src":"2870:31:87"},"nativeSrc":"2870:31:87","nodeType":"YulExpressionStatement","src":"2870:31:87"},{"nativeSrc":"2910:15:87","nodeType":"YulAssignment","src":"2910:15:87","value":{"name":"value","nativeSrc":"2920:5:87","nodeType":"YulIdentifier","src":"2920:5:87"},"variableNames":[{"name":"value0","nativeSrc":"2910:6:87","nodeType":"YulIdentifier","src":"2910:6:87"}]}]},"name":"abi_decode_tuple_t_address","nativeSrc":"2684:247:87","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nativeSrc":"2720:9:87","nodeType":"YulTypedName","src":"2720:9:87","type":""},{"name":"dataEnd","nativeSrc":"2731:7:87","nodeType":"YulTypedName","src":"2731:7:87","type":""}],"returnVariables":[{"name":"value0","nativeSrc":"2743:6:87","nodeType":"YulTypedName","src":"2743:6:87","type":""}],"src":"2684:247:87"},{"body":{"nativeSrc":"3037:76:87","nodeType":"YulBlock","src":"3037:76:87","statements":[{"nativeSrc":"3047:26:87","nodeType":"YulAssignment","src":"3047:26:87","value":{"arguments":[{"name":"headStart","nativeSrc":"3059:9:87","nodeType":"YulIdentifier","src":"3059:9:87"},{"kind":"number","nativeSrc":"3070:2:87","nodeType":"YulLiteral","src":"3070:2:87","type":"","value":"32"}],"functionName":{"name":"add","nativeSrc":"3055:3:87","nodeType":"YulIdentifier","src":"3055:3:87"},"nativeSrc":"3055:18:87","nodeType":"YulFunctionCall","src":"3055:18:87"},"variableNames":[{"name":"tail","nativeSrc":"3047:4:87","nodeType":"YulIdentifier","src":"3047:4:87"}]},{"expression":{"arguments":[{"name":"headStart","nativeSrc":"3089:9:87","nodeType":"YulIdentifier","src":"3089:9:87"},{"name":"value0","nativeSrc":"3100:6:87","nodeType":"YulIdentifier","src":"3100:6:87"}],"functionName":{"name":"mstore","nativeSrc":"3082:6:87","nodeType":"YulIdentifier","src":"3082:6:87"},"nativeSrc":"3082:25:87","nodeType":"YulFunctionCall","src":"3082:25:87"},"nativeSrc":"3082:25:87","nodeType":"YulExpressionStatement","src":"3082:25:87"}]},"name":"abi_encode_tuple_t_uint256__to_t_uint256__fromStack_reversed","nativeSrc":"2936:177:87","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nativeSrc":"3006:9:87","nodeType":"YulTypedName","src":"3006:9:87","type":""},{"name":"value0","nativeSrc":"3017:6:87","nodeType":"YulTypedName","src":"3017:6:87","type":""}],"returnVariables":[{"name":"tail","nativeSrc":"3028:4:87","nodeType":"YulTypedName","src":"3028:4:87","type":""}],"src":"2936:177:87"},{"body":{"nativeSrc":"3150:95:87","nodeType":"YulBlock","src":"3150:95:87","statements":[{"expression":{"arguments":[{"kind":"number","nativeSrc":"3167:1:87","nodeType":"YulLiteral","src":"3167:1:87","type":"","value":"0"},{"arguments":[{"kind":"number","nativeSrc":"3174:3:87","nodeType":"YulLiteral","src":"3174:3:87","type":"","value":"224"},{"kind":"number","nativeSrc":"3179:10:87","nodeType":"YulLiteral","src":"3179:10:87","type":"","value":"0x4e487b71"}],"functionName":{"name":"shl","nativeSrc":"3170:3:87","nodeType":"YulIdentifier","src":"3170:3:87"},"nativeSrc":"3170:20:87","nodeType":"YulFunctionCall","src":"3170:20:87"}],"functionName":{"name":"mstore","nativeSrc":"3160:6:87","nodeType":"YulIdentifier","src":"3160:6:87"},"nativeSrc":"3160:31:87","nodeType":"YulFunctionCall","src":"3160:31:87"},"nativeSrc":"3160:31:87","nodeType":"YulExpressionStatement","src":"3160:31:87"},{"expression":{"arguments":[{"kind":"number","nativeSrc":"3207:1:87","nodeType":"YulLiteral","src":"3207:1:87","type":"","value":"4"},{"kind":"number","nativeSrc":"3210:4:87","nodeType":"YulLiteral","src":"3210:4:87","type":"","value":"0x21"}],"functionName":{"name":"mstore","nativeSrc":"3200:6:87","nodeType":"YulIdentifier","src":"3200:6:87"},"nativeSrc":"3200:15:87","nodeType":"YulFunctionCall","src":"3200:15:87"},"nativeSrc":"3200:15:87","nodeType":"YulExpressionStatement","src":"3200:15:87"},{"expression":{"arguments":[{"kind":"number","nativeSrc":"3231:1:87","nodeType":"YulLiteral","src":"3231:1:87","type":"","value":"0"},{"kind":"number","nativeSrc":"3234:4:87","nodeType":"YulLiteral","src":"3234:4:87","type":"","value":"0x24"}],"functionName":{"name":"revert","nativeSrc":"3224:6:87","nodeType":"YulIdentifier","src":"3224:6:87"},"nativeSrc":"3224:15:87","nodeType":"YulFunctionCall","src":"3224:15:87"},"nativeSrc":"3224:15:87","nodeType":"YulExpressionStatement","src":"3224:15:87"}]},"name":"panic_error_0x21","nativeSrc":"3118:127:87","nodeType":"YulFunctionDefinition","src":"3118:127:87"},{"body":{"nativeSrc":"3311:418:87","nodeType":"YulBlock","src":"3311:418:87","statements":[{"nativeSrc":"3321:22:87","nodeType":"YulVariableDeclaration","src":"3321:22:87","value":{"arguments":[{"name":"value","nativeSrc":"3337:5:87","nodeType":"YulIdentifier","src":"3337:5:87"}],"functionName":{"name":"mload","nativeSrc":"3331:5:87","nodeType":"YulIdentifier","src":"3331:5:87"},"nativeSrc":"3331:12:87","nodeType":"YulFunctionCall","src":"3331:12:87"},"variables":[{"name":"_1","nativeSrc":"3325:2:87","nodeType":"YulTypedName","src":"3325:2:87","type":""}]},{"body":{"nativeSrc":"3381:111:87","nodeType":"YulBlock","src":"3381:111:87","statements":[{"expression":{"arguments":[{"kind":"number","nativeSrc":"3402:1:87","nodeType":"YulLiteral","src":"3402:1:87","type":"","value":"0"},{"arguments":[{"kind":"number","nativeSrc":"3409:3:87","nodeType":"YulLiteral","src":"3409:3:87","type":"","value":"224"},{"kind":"number","nativeSrc":"3414:10:87","nodeType":"YulLiteral","src":"3414:10:87","type":"","value":"0x4e487b71"}],"functionName":{"name":"shl","nativeSrc":"3405:3:87","nodeType":"YulIdentifier","src":"3405:3:87"},"nativeSrc":"3405:20:87","nodeType":"YulFunctionCall","src":"3405:20:87"}],"functionName":{"name":"mstore","nativeSrc":"3395:6:87","nodeType":"YulIdentifier","src":"3395:6:87"},"nativeSrc":"3395:31:87","nodeType":"YulFunctionCall","src":"3395:31:87"},"nativeSrc":"3395:31:87","nodeType":"YulExpressionStatement","src":"3395:31:87"},{"expression":{"arguments":[{"kind":"number","nativeSrc":"3446:1:87","nodeType":"YulLiteral","src":"3446:1:87","type":"","value":"4"},{"kind":"number","nativeSrc":"3449:4:87","nodeType":"YulLiteral","src":"3449:4:87","type":"","value":"0x21"}],"functionName":{"name":"mstore","nativeSrc":"3439:6:87","nodeType":"YulIdentifier","src":"3439:6:87"},"nativeSrc":"3439:15:87","nodeType":"YulFunctionCall","src":"3439:15:87"},"nativeSrc":"3439:15:87","nodeType":"YulExpressionStatement","src":"3439:15:87"},{"expression":{"arguments":[{"kind":"number","nativeSrc":"3474:1:87","nodeType":"YulLiteral","src":"3474:1:87","type":"","value":"0"},{"kind":"number","nativeSrc":"3477:4:87","nodeType":"YulLiteral","src":"3477:4:87","type":"","value":"0x24"}],"functionName":{"name":"revert","nativeSrc":"3467:6:87","nodeType":"YulIdentifier","src":"3467:6:87"},"nativeSrc":"3467:15:87","nodeType":"YulFunctionCall","src":"3467:15:87"},"nativeSrc":"3467:15:87","nodeType":"YulExpressionStatement","src":"3467:15:87"}]},"condition":{"arguments":[{"arguments":[{"name":"_1","nativeSrc":"3365:2:87","nodeType":"YulIdentifier","src":"3365:2:87"},{"kind":"number","nativeSrc":"3369:1:87","nodeType":"YulLiteral","src":"3369:1:87","type":"","value":"3"}],"functionName":{"name":"lt","nativeSrc":"3362:2:87","nodeType":"YulIdentifier","src":"3362:2:87"},"nativeSrc":"3362:9:87","nodeType":"YulFunctionCall","src":"3362:9:87"}],"functionName":{"name":"iszero","nativeSrc":"3355:6:87","nodeType":"YulIdentifier","src":"3355:6:87"},"nativeSrc":"3355:17:87","nodeType":"YulFunctionCall","src":"3355:17:87"},"nativeSrc":"3352:140:87","nodeType":"YulIf","src":"3352:140:87"},{"expression":{"arguments":[{"name":"pos","nativeSrc":"3508:3:87","nodeType":"YulIdentifier","src":"3508:3:87"},{"name":"_1","nativeSrc":"3513:2:87","nodeType":"YulIdentifier","src":"3513:2:87"}],"functionName":{"name":"mstore","nativeSrc":"3501:6:87","nodeType":"YulIdentifier","src":"3501:6:87"},"nativeSrc":"3501:15:87","nodeType":"YulFunctionCall","src":"3501:15:87"},"nativeSrc":"3501:15:87","nodeType":"YulExpressionStatement","src":"3501:15:87"},{"expression":{"arguments":[{"arguments":[{"name":"pos","nativeSrc":"3536:3:87","nodeType":"YulIdentifier","src":"3536:3:87"},{"kind":"number","nativeSrc":"3541:4:87","nodeType":"YulLiteral","src":"3541:4:87","type":"","value":"0x20"}],"functionName":{"name":"add","nativeSrc":"3532:3:87","nodeType":"YulIdentifier","src":"3532:3:87"},"nativeSrc":"3532:14:87","nodeType":"YulFunctionCall","src":"3532:14:87"},{"arguments":[{"arguments":[{"name":"value","nativeSrc":"3558:5:87","nodeType":"YulIdentifier","src":"3558:5:87"},{"kind":"number","nativeSrc":"3565:4:87","nodeType":"YulLiteral","src":"3565:4:87","type":"","value":"0x20"}],"functionName":{"name":"add","nativeSrc":"3554:3:87","nodeType":"YulIdentifier","src":"3554:3:87"},"nativeSrc":"3554:16:87","nodeType":"YulFunctionCall","src":"3554:16:87"}],"functionName":{"name":"mload","nativeSrc":"3548:5:87","nodeType":"YulIdentifier","src":"3548:5:87"},"nativeSrc":"3548:23:87","nodeType":"YulFunctionCall","src":"3548:23:87"}],"functionName":{"name":"mstore","nativeSrc":"3525:6:87","nodeType":"YulIdentifier","src":"3525:6:87"},"nativeSrc":"3525:47:87","nodeType":"YulFunctionCall","src":"3525:47:87"},"nativeSrc":"3525:47:87","nodeType":"YulExpressionStatement","src":"3525:47:87"},{"nativeSrc":"3581:43:87","nodeType":"YulVariableDeclaration","src":"3581:43:87","value":{"arguments":[{"arguments":[{"name":"value","nativeSrc":"3611:5:87","nodeType":"YulIdentifier","src":"3611:5:87"},{"kind":"number","nativeSrc":"3618:4:87","nodeType":"YulLiteral","src":"3618:4:87","type":"","value":"0x40"}],"functionName":{"name":"add","nativeSrc":"3607:3:87","nodeType":"YulIdentifier","src":"3607:3:87"},"nativeSrc":"3607:16:87","nodeType":"YulFunctionCall","src":"3607:16:87"}],"functionName":{"name":"mload","nativeSrc":"3601:5:87","nodeType":"YulIdentifier","src":"3601:5:87"},"nativeSrc":"3601:23:87","nodeType":"YulFunctionCall","src":"3601:23:87"},"variables":[{"name":"memberValue0","nativeSrc":"3585:12:87","nodeType":"YulTypedName","src":"3585:12:87","type":""}]},{"expression":{"arguments":[{"arguments":[{"name":"pos","nativeSrc":"3644:3:87","nodeType":"YulIdentifier","src":"3644:3:87"},{"kind":"number","nativeSrc":"3649:4:87","nodeType":"YulLiteral","src":"3649:4:87","type":"","value":"0x40"}],"functionName":{"name":"add","nativeSrc":"3640:3:87","nodeType":"YulIdentifier","src":"3640:3:87"},"nativeSrc":"3640:14:87","nodeType":"YulFunctionCall","src":"3640:14:87"},{"kind":"number","nativeSrc":"3656:4:87","nodeType":"YulLiteral","src":"3656:4:87","type":"","value":"0x60"}],"functionName":{"name":"mstore","nativeSrc":"3633:6:87","nodeType":"YulIdentifier","src":"3633:6:87"},"nativeSrc":"3633:28:87","nodeType":"YulFunctionCall","src":"3633:28:87"},"nativeSrc":"3633:28:87","nodeType":"YulExpressionStatement","src":"3633:28:87"},{"nativeSrc":"3670:53:87","nodeType":"YulAssignment","src":"3670:53:87","value":{"arguments":[{"name":"memberValue0","nativeSrc":"3694:12:87","nodeType":"YulIdentifier","src":"3694:12:87"},{"arguments":[{"name":"pos","nativeSrc":"3712:3:87","nodeType":"YulIdentifier","src":"3712:3:87"},{"kind":"number","nativeSrc":"3717:4:87","nodeType":"YulLiteral","src":"3717:4:87","type":"","value":"0x60"}],"functionName":{"name":"add","nativeSrc":"3708:3:87","nodeType":"YulIdentifier","src":"3708:3:87"},"nativeSrc":"3708:14:87","nodeType":"YulFunctionCall","src":"3708:14:87"}],"functionName":{"name":"abi_encode_bytes","nativeSrc":"3677:16:87","nodeType":"YulIdentifier","src":"3677:16:87"},"nativeSrc":"3677:46:87","nodeType":"YulFunctionCall","src":"3677:46:87"},"variableNames":[{"name":"end","nativeSrc":"3670:3:87","nodeType":"YulIdentifier","src":"3670:3:87"}]}]},"name":"abi_encode_struct_SwapConfig","nativeSrc":"3250:479:87","nodeType":"YulFunctionDefinition","parameters":[{"name":"value","nativeSrc":"3288:5:87","nodeType":"YulTypedName","src":"3288:5:87","type":""},{"name":"pos","nativeSrc":"3295:3:87","nodeType":"YulTypedName","src":"3295:3:87","type":""}],"returnVariables":[{"name":"end","nativeSrc":"3303:3:87","nodeType":"YulTypedName","src":"3303:3:87","type":""}],"src":"3250:479:87"},{"body":{"nativeSrc":"3891:110:87","nodeType":"YulBlock","src":"3891:110:87","statements":[{"expression":{"arguments":[{"name":"headStart","nativeSrc":"3908:9:87","nodeType":"YulIdentifier","src":"3908:9:87"},{"kind":"number","nativeSrc":"3919:2:87","nodeType":"YulLiteral","src":"3919:2:87","type":"","value":"32"}],"functionName":{"name":"mstore","nativeSrc":"3901:6:87","nodeType":"YulIdentifier","src":"3901:6:87"},"nativeSrc":"3901:21:87","nodeType":"YulFunctionCall","src":"3901:21:87"},"nativeSrc":"3901:21:87","nodeType":"YulExpressionStatement","src":"3901:21:87"},{"nativeSrc":"3931:64:87","nodeType":"YulAssignment","src":"3931:64:87","value":{"arguments":[{"name":"value0","nativeSrc":"3968:6:87","nodeType":"YulIdentifier","src":"3968:6:87"},{"arguments":[{"name":"headStart","nativeSrc":"3980:9:87","nodeType":"YulIdentifier","src":"3980:9:87"},{"kind":"number","nativeSrc":"3991:2:87","nodeType":"YulLiteral","src":"3991:2:87","type":"","value":"32"}],"functionName":{"name":"add","nativeSrc":"3976:3:87","nodeType":"YulIdentifier","src":"3976:3:87"},"nativeSrc":"3976:18:87","nodeType":"YulFunctionCall","src":"3976:18:87"}],"functionName":{"name":"abi_encode_struct_SwapConfig","nativeSrc":"3939:28:87","nodeType":"YulIdentifier","src":"3939:28:87"},"nativeSrc":"3939:56:87","nodeType":"YulFunctionCall","src":"3939:56:87"},"variableNames":[{"name":"tail","nativeSrc":"3931:4:87","nodeType":"YulIdentifier","src":"3931:4:87"}]}]},"name":"abi_encode_tuple_t_struct$_SwapConfig_$1113_memory_ptr__to_t_struct$_SwapConfig_$1113_memory_ptr__fromStack_reversed","nativeSrc":"3734:267:87","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nativeSrc":"3860:9:87","nodeType":"YulTypedName","src":"3860:9:87","type":""},{"name":"value0","nativeSrc":"3871:6:87","nodeType":"YulTypedName","src":"3871:6:87","type":""}],"returnVariables":[{"name":"tail","nativeSrc":"3882:4:87","nodeType":"YulTypedName","src":"3882:4:87","type":""}],"src":"3734:267:87"},{"body":{"nativeSrc":"4048:76:87","nodeType":"YulBlock","src":"4048:76:87","statements":[{"body":{"nativeSrc":"4102:16:87","nodeType":"YulBlock","src":"4102:16:87","statements":[{"expression":{"arguments":[{"kind":"number","nativeSrc":"4111:1:87","nodeType":"YulLiteral","src":"4111:1:87","type":"","value":"0"},{"kind":"number","nativeSrc":"4114:1:87","nodeType":"YulLiteral","src":"4114:1:87","type":"","value":"0"}],"functionName":{"name":"revert","nativeSrc":"4104:6:87","nodeType":"YulIdentifier","src":"4104:6:87"},"nativeSrc":"4104:12:87","nodeType":"YulFunctionCall","src":"4104:12:87"},"nativeSrc":"4104:12:87","nodeType":"YulExpressionStatement","src":"4104:12:87"}]},"condition":{"arguments":[{"arguments":[{"name":"value","nativeSrc":"4071:5:87","nodeType":"YulIdentifier","src":"4071:5:87"},{"arguments":[{"arguments":[{"name":"value","nativeSrc":"4092:5:87","nodeType":"YulIdentifier","src":"4092:5:87"}],"functionName":{"name":"iszero","nativeSrc":"4085:6:87","nodeType":"YulIdentifier","src":"4085:6:87"},"nativeSrc":"4085:13:87","nodeType":"YulFunctionCall","src":"4085:13:87"}],"functionName":{"name":"iszero","nativeSrc":"4078:6:87","nodeType":"YulIdentifier","src":"4078:6:87"},"nativeSrc":"4078:21:87","nodeType":"YulFunctionCall","src":"4078:21:87"}],"functionName":{"name":"eq","nativeSrc":"4068:2:87","nodeType":"YulIdentifier","src":"4068:2:87"},"nativeSrc":"4068:32:87","nodeType":"YulFunctionCall","src":"4068:32:87"}],"functionName":{"name":"iszero","nativeSrc":"4061:6:87","nodeType":"YulIdentifier","src":"4061:6:87"},"nativeSrc":"4061:40:87","nodeType":"YulFunctionCall","src":"4061:40:87"},"nativeSrc":"4058:60:87","nodeType":"YulIf","src":"4058:60:87"}]},"name":"validator_revert_bool","nativeSrc":"4006:118:87","nodeType":"YulFunctionDefinition","parameters":[{"name":"value","nativeSrc":"4037:5:87","nodeType":"YulTypedName","src":"4037:5:87","type":""}],"src":"4006:118:87"},{"body":{"nativeSrc":"4196:174:87","nodeType":"YulBlock","src":"4196:174:87","statements":[{"body":{"nativeSrc":"4242:16:87","nodeType":"YulBlock","src":"4242:16:87","statements":[{"expression":{"arguments":[{"kind":"number","nativeSrc":"4251:1:87","nodeType":"YulLiteral","src":"4251:1:87","type":"","value":"0"},{"kind":"number","nativeSrc":"4254:1:87","nodeType":"YulLiteral","src":"4254:1:87","type":"","value":"0"}],"functionName":{"name":"revert","nativeSrc":"4244:6:87","nodeType":"YulIdentifier","src":"4244:6:87"},"nativeSrc":"4244:12:87","nodeType":"YulFunctionCall","src":"4244:12:87"},"nativeSrc":"4244:12:87","nodeType":"YulExpressionStatement","src":"4244:12:87"}]},"condition":{"arguments":[{"arguments":[{"name":"dataEnd","nativeSrc":"4217:7:87","nodeType":"YulIdentifier","src":"4217:7:87"},{"name":"headStart","nativeSrc":"4226:9:87","nodeType":"YulIdentifier","src":"4226:9:87"}],"functionName":{"name":"sub","nativeSrc":"4213:3:87","nodeType":"YulIdentifier","src":"4213:3:87"},"nativeSrc":"4213:23:87","nodeType":"YulFunctionCall","src":"4213:23:87"},{"kind":"number","nativeSrc":"4238:2:87","nodeType":"YulLiteral","src":"4238:2:87","type":"","value":"32"}],"functionName":{"name":"slt","nativeSrc":"4209:3:87","nodeType":"YulIdentifier","src":"4209:3:87"},"nativeSrc":"4209:32:87","nodeType":"YulFunctionCall","src":"4209:32:87"},"nativeSrc":"4206:52:87","nodeType":"YulIf","src":"4206:52:87"},{"nativeSrc":"4267:36:87","nodeType":"YulVariableDeclaration","src":"4267:36:87","value":{"arguments":[{"name":"headStart","nativeSrc":"4293:9:87","nodeType":"YulIdentifier","src":"4293:9:87"}],"functionName":{"name":"calldataload","nativeSrc":"4280:12:87","nodeType":"YulIdentifier","src":"4280:12:87"},"nativeSrc":"4280:23:87","nodeType":"YulFunctionCall","src":"4280:23:87"},"variables":[{"name":"value","nativeSrc":"4271:5:87","nodeType":"YulTypedName","src":"4271:5:87","type":""}]},{"expression":{"arguments":[{"name":"value","nativeSrc":"4334:5:87","nodeType":"YulIdentifier","src":"4334:5:87"}],"functionName":{"name":"validator_revert_bool","nativeSrc":"4312:21:87","nodeType":"YulIdentifier","src":"4312:21:87"},"nativeSrc":"4312:28:87","nodeType":"YulFunctionCall","src":"4312:28:87"},"nativeSrc":"4312:28:87","nodeType":"YulExpressionStatement","src":"4312:28:87"},{"nativeSrc":"4349:15:87","nodeType":"YulAssignment","src":"4349:15:87","value":{"name":"value","nativeSrc":"4359:5:87","nodeType":"YulIdentifier","src":"4359:5:87"},"variableNames":[{"name":"value0","nativeSrc":"4349:6:87","nodeType":"YulIdentifier","src":"4349:6:87"}]}]},"name":"abi_decode_tuple_t_bool","nativeSrc":"4129:241:87","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nativeSrc":"4162:9:87","nodeType":"YulTypedName","src":"4162:9:87","type":""},{"name":"dataEnd","nativeSrc":"4173:7:87","nodeType":"YulTypedName","src":"4173:7:87","type":""}],"returnVariables":[{"name":"value0","nativeSrc":"4185:6:87","nodeType":"YulTypedName","src":"4185:6:87","type":""}],"src":"4129:241:87"},{"body":{"nativeSrc":"4476:76:87","nodeType":"YulBlock","src":"4476:76:87","statements":[{"nativeSrc":"4486:26:87","nodeType":"YulAssignment","src":"4486:26:87","value":{"arguments":[{"name":"headStart","nativeSrc":"4498:9:87","nodeType":"YulIdentifier","src":"4498:9:87"},{"kind":"number","nativeSrc":"4509:2:87","nodeType":"YulLiteral","src":"4509:2:87","type":"","value":"32"}],"functionName":{"name":"add","nativeSrc":"4494:3:87","nodeType":"YulIdentifier","src":"4494:3:87"},"nativeSrc":"4494:18:87","nodeType":"YulFunctionCall","src":"4494:18:87"},"variableNames":[{"name":"tail","nativeSrc":"4486:4:87","nodeType":"YulIdentifier","src":"4486:4:87"}]},{"expression":{"arguments":[{"name":"headStart","nativeSrc":"4528:9:87","nodeType":"YulIdentifier","src":"4528:9:87"},{"name":"value0","nativeSrc":"4539:6:87","nodeType":"YulIdentifier","src":"4539:6:87"}],"functionName":{"name":"mstore","nativeSrc":"4521:6:87","nodeType":"YulIdentifier","src":"4521:6:87"},"nativeSrc":"4521:25:87","nodeType":"YulFunctionCall","src":"4521:25:87"},"nativeSrc":"4521:25:87","nodeType":"YulExpressionStatement","src":"4521:25:87"}]},"name":"abi_encode_tuple_t_bytes32__to_t_bytes32__fromStack_reversed","nativeSrc":"4375:177:87","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nativeSrc":"4445:9:87","nodeType":"YulTypedName","src":"4445:9:87","type":""},{"name":"value0","nativeSrc":"4456:6:87","nodeType":"YulTypedName","src":"4456:6:87","type":""}],"returnVariables":[{"name":"tail","nativeSrc":"4467:4:87","nodeType":"YulTypedName","src":"4467:4:87","type":""}],"src":"4375:177:87"},{"body":{"nativeSrc":"4658:102:87","nodeType":"YulBlock","src":"4658:102:87","statements":[{"nativeSrc":"4668:26:87","nodeType":"YulAssignment","src":"4668:26:87","value":{"arguments":[{"name":"headStart","nativeSrc":"4680:9:87","nodeType":"YulIdentifier","src":"4680:9:87"},{"kind":"number","nativeSrc":"4691:2:87","nodeType":"YulLiteral","src":"4691:2:87","type":"","value":"32"}],"functionName":{"name":"add","nativeSrc":"4676:3:87","nodeType":"YulIdentifier","src":"4676:3:87"},"nativeSrc":"4676:18:87","nodeType":"YulFunctionCall","src":"4676:18:87"},"variableNames":[{"name":"tail","nativeSrc":"4668:4:87","nodeType":"YulIdentifier","src":"4668:4:87"}]},{"expression":{"arguments":[{"name":"headStart","nativeSrc":"4710:9:87","nodeType":"YulIdentifier","src":"4710:9:87"},{"arguments":[{"name":"value0","nativeSrc":"4725:6:87","nodeType":"YulIdentifier","src":"4725:6:87"},{"arguments":[{"arguments":[{"kind":"number","nativeSrc":"4741:3:87","nodeType":"YulLiteral","src":"4741:3:87","type":"","value":"160"},{"kind":"number","nativeSrc":"4746:1:87","nodeType":"YulLiteral","src":"4746:1:87","type":"","value":"1"}],"functionName":{"name":"shl","nativeSrc":"4737:3:87","nodeType":"YulIdentifier","src":"4737:3:87"},"nativeSrc":"4737:11:87","nodeType":"YulFunctionCall","src":"4737:11:87"},{"kind":"number","nativeSrc":"4750:1:87","nodeType":"YulLiteral","src":"4750:1:87","type":"","value":"1"}],"functionName":{"name":"sub","nativeSrc":"4733:3:87","nodeType":"YulIdentifier","src":"4733:3:87"},"nativeSrc":"4733:19:87","nodeType":"YulFunctionCall","src":"4733:19:87"}],"functionName":{"name":"and","nativeSrc":"4721:3:87","nodeType":"YulIdentifier","src":"4721:3:87"},"nativeSrc":"4721:32:87","nodeType":"YulFunctionCall","src":"4721:32:87"}],"functionName":{"name":"mstore","nativeSrc":"4703:6:87","nodeType":"YulIdentifier","src":"4703:6:87"},"nativeSrc":"4703:51:87","nodeType":"YulFunctionCall","src":"4703:51:87"},"nativeSrc":"4703:51:87","nodeType":"YulExpressionStatement","src":"4703:51:87"}]},"name":"abi_encode_tuple_t_address__to_t_address__fromStack_reversed","nativeSrc":"4557:203:87","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nativeSrc":"4627:9:87","nodeType":"YulTypedName","src":"4627:9:87","type":""},{"name":"value0","nativeSrc":"4638:6:87","nodeType":"YulTypedName","src":"4638:6:87","type":""}],"returnVariables":[{"name":"tail","nativeSrc":"4649:4:87","nodeType":"YulTypedName","src":"4649:4:87","type":""}],"src":"4557:203:87"},{"body":{"nativeSrc":"4844:241:87","nodeType":"YulBlock","src":"4844:241:87","statements":[{"body":{"nativeSrc":"4890:16:87","nodeType":"YulBlock","src":"4890:16:87","statements":[{"expression":{"arguments":[{"kind":"number","nativeSrc":"4899:1:87","nodeType":"YulLiteral","src":"4899:1:87","type":"","value":"0"},{"kind":"number","nativeSrc":"4902:1:87","nodeType":"YulLiteral","src":"4902:1:87","type":"","value":"0"}],"functionName":{"name":"revert","nativeSrc":"4892:6:87","nodeType":"YulIdentifier","src":"4892:6:87"},"nativeSrc":"4892:12:87","nodeType":"YulFunctionCall","src":"4892:12:87"},"nativeSrc":"4892:12:87","nodeType":"YulExpressionStatement","src":"4892:12:87"}]},"condition":{"arguments":[{"arguments":[{"name":"dataEnd","nativeSrc":"4865:7:87","nodeType":"YulIdentifier","src":"4865:7:87"},{"name":"headStart","nativeSrc":"4874:9:87","nodeType":"YulIdentifier","src":"4874:9:87"}],"functionName":{"name":"sub","nativeSrc":"4861:3:87","nodeType":"YulIdentifier","src":"4861:3:87"},"nativeSrc":"4861:23:87","nodeType":"YulFunctionCall","src":"4861:23:87"},{"kind":"number","nativeSrc":"4886:2:87","nodeType":"YulLiteral","src":"4886:2:87","type":"","value":"32"}],"functionName":{"name":"slt","nativeSrc":"4857:3:87","nodeType":"YulIdentifier","src":"4857:3:87"},"nativeSrc":"4857:32:87","nodeType":"YulFunctionCall","src":"4857:32:87"},"nativeSrc":"4854:52:87","nodeType":"YulIf","src":"4854:52:87"},{"nativeSrc":"4915:37:87","nodeType":"YulVariableDeclaration","src":"4915:37:87","value":{"arguments":[{"name":"headStart","nativeSrc":"4942:9:87","nodeType":"YulIdentifier","src":"4942:9:87"}],"functionName":{"name":"calldataload","nativeSrc":"4929:12:87","nodeType":"YulIdentifier","src":"4929:12:87"},"nativeSrc":"4929:23:87","nodeType":"YulFunctionCall","src":"4929:23:87"},"variables":[{"name":"offset","nativeSrc":"4919:6:87","nodeType":"YulTypedName","src":"4919:6:87","type":""}]},{"body":{"nativeSrc":"4995:16:87","nodeType":"YulBlock","src":"4995:16:87","statements":[{"expression":{"arguments":[{"kind":"number","nativeSrc":"5004:1:87","nodeType":"YulLiteral","src":"5004:1:87","type":"","value":"0"},{"kind":"number","nativeSrc":"5007:1:87","nodeType":"YulLiteral","src":"5007:1:87","type":"","value":"0"}],"functionName":{"name":"revert","nativeSrc":"4997:6:87","nodeType":"YulIdentifier","src":"4997:6:87"},"nativeSrc":"4997:12:87","nodeType":"YulFunctionCall","src":"4997:12:87"},"nativeSrc":"4997:12:87","nodeType":"YulExpressionStatement","src":"4997:12:87"}]},"condition":{"arguments":[{"name":"offset","nativeSrc":"4967:6:87","nodeType":"YulIdentifier","src":"4967:6:87"},{"kind":"number","nativeSrc":"4975:18:87","nodeType":"YulLiteral","src":"4975:18:87","type":"","value":"0xffffffffffffffff"}],"functionName":{"name":"gt","nativeSrc":"4964:2:87","nodeType":"YulIdentifier","src":"4964:2:87"},"nativeSrc":"4964:30:87","nodeType":"YulFunctionCall","src":"4964:30:87"},"nativeSrc":"4961:50:87","nodeType":"YulIf","src":"4961:50:87"},{"nativeSrc":"5020:59:87","nodeType":"YulAssignment","src":"5020:59:87","value":{"arguments":[{"arguments":[{"name":"headStart","nativeSrc":"5051:9:87","nodeType":"YulIdentifier","src":"5051:9:87"},{"name":"offset","nativeSrc":"5062:6:87","nodeType":"YulIdentifier","src":"5062:6:87"}],"functionName":{"name":"add","nativeSrc":"5047:3:87","nodeType":"YulIdentifier","src":"5047:3:87"},"nativeSrc":"5047:22:87","nodeType":"YulFunctionCall","src":"5047:22:87"},{"name":"dataEnd","nativeSrc":"5071:7:87","nodeType":"YulIdentifier","src":"5071:7:87"}],"functionName":{"name":"abi_decode_bytes","nativeSrc":"5030:16:87","nodeType":"YulIdentifier","src":"5030:16:87"},"nativeSrc":"5030:49:87","nodeType":"YulFunctionCall","src":"5030:49:87"},"variableNames":[{"name":"value0","nativeSrc":"5020:6:87","nodeType":"YulIdentifier","src":"5020:6:87"}]}]},"name":"abi_decode_tuple_t_bytes_memory_ptr","nativeSrc":"4765:320:87","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nativeSrc":"4810:9:87","nodeType":"YulTypedName","src":"4810:9:87","type":""},{"name":"dataEnd","nativeSrc":"4821:7:87","nodeType":"YulTypedName","src":"4821:7:87","type":""}],"returnVariables":[{"name":"value0","nativeSrc":"4833:6:87","nodeType":"YulTypedName","src":"4833:6:87","type":""}],"src":"4765:320:87"},{"body":{"nativeSrc":"5171:149:87","nodeType":"YulBlock","src":"5171:149:87","statements":[{"body":{"nativeSrc":"5217:16:87","nodeType":"YulBlock","src":"5217:16:87","statements":[{"expression":{"arguments":[{"kind":"number","nativeSrc":"5226:1:87","nodeType":"YulLiteral","src":"5226:1:87","type":"","value":"0"},{"kind":"number","nativeSrc":"5229:1:87","nodeType":"YulLiteral","src":"5229:1:87","type":"","value":"0"}],"functionName":{"name":"revert","nativeSrc":"5219:6:87","nodeType":"YulIdentifier","src":"5219:6:87"},"nativeSrc":"5219:12:87","nodeType":"YulFunctionCall","src":"5219:12:87"},"nativeSrc":"5219:12:87","nodeType":"YulExpressionStatement","src":"5219:12:87"}]},"condition":{"arguments":[{"arguments":[{"name":"dataEnd","nativeSrc":"5192:7:87","nodeType":"YulIdentifier","src":"5192:7:87"},{"name":"headStart","nativeSrc":"5201:9:87","nodeType":"YulIdentifier","src":"5201:9:87"}],"functionName":{"name":"sub","nativeSrc":"5188:3:87","nodeType":"YulIdentifier","src":"5188:3:87"},"nativeSrc":"5188:23:87","nodeType":"YulFunctionCall","src":"5188:23:87"},{"kind":"number","nativeSrc":"5213:2:87","nodeType":"YulLiteral","src":"5213:2:87","type":"","value":"32"}],"functionName":{"name":"slt","nativeSrc":"5184:3:87","nodeType":"YulIdentifier","src":"5184:3:87"},"nativeSrc":"5184:32:87","nodeType":"YulFunctionCall","src":"5184:32:87"},"nativeSrc":"5181:52:87","nodeType":"YulIf","src":"5181:52:87"},{"nativeSrc":"5242:14:87","nodeType":"YulVariableDeclaration","src":"5242:14:87","value":{"kind":"number","nativeSrc":"5255:1:87","nodeType":"YulLiteral","src":"5255:1:87","type":"","value":"0"},"variables":[{"name":"value","nativeSrc":"5246:5:87","nodeType":"YulTypedName","src":"5246:5:87","type":""}]},{"nativeSrc":"5265:25:87","nodeType":"YulAssignment","src":"5265:25:87","value":{"arguments":[{"name":"headStart","nativeSrc":"5280:9:87","nodeType":"YulIdentifier","src":"5280:9:87"}],"functionName":{"name":"mload","nativeSrc":"5274:5:87","nodeType":"YulIdentifier","src":"5274:5:87"},"nativeSrc":"5274:16:87","nodeType":"YulFunctionCall","src":"5274:16:87"},"variableNames":[{"name":"value","nativeSrc":"5265:5:87","nodeType":"YulIdentifier","src":"5265:5:87"}]},{"nativeSrc":"5299:15:87","nodeType":"YulAssignment","src":"5299:15:87","value":{"name":"value","nativeSrc":"5309:5:87","nodeType":"YulIdentifier","src":"5309:5:87"},"variableNames":[{"name":"value0","nativeSrc":"5299:6:87","nodeType":"YulIdentifier","src":"5299:6:87"}]}]},"name":"abi_decode_tuple_t_uint256_fromMemory","nativeSrc":"5090:230:87","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nativeSrc":"5137:9:87","nodeType":"YulTypedName","src":"5137:9:87","type":""},{"name":"dataEnd","nativeSrc":"5148:7:87","nodeType":"YulTypedName","src":"5148:7:87","type":""}],"returnVariables":[{"name":"value0","nativeSrc":"5160:6:87","nodeType":"YulTypedName","src":"5160:6:87","type":""}],"src":"5090:230:87"},{"body":{"nativeSrc":"5454:145:87","nodeType":"YulBlock","src":"5454:145:87","statements":[{"nativeSrc":"5464:26:87","nodeType":"YulAssignment","src":"5464:26:87","value":{"arguments":[{"name":"headStart","nativeSrc":"5476:9:87","nodeType":"YulIdentifier","src":"5476:9:87"},{"kind":"number","nativeSrc":"5487:2:87","nodeType":"YulLiteral","src":"5487:2:87","type":"","value":"64"}],"functionName":{"name":"add","nativeSrc":"5472:3:87","nodeType":"YulIdentifier","src":"5472:3:87"},"nativeSrc":"5472:18:87","nodeType":"YulFunctionCall","src":"5472:18:87"},"variableNames":[{"name":"tail","nativeSrc":"5464:4:87","nodeType":"YulIdentifier","src":"5464:4:87"}]},{"expression":{"arguments":[{"name":"headStart","nativeSrc":"5506:9:87","nodeType":"YulIdentifier","src":"5506:9:87"},{"arguments":[{"name":"value0","nativeSrc":"5521:6:87","nodeType":"YulIdentifier","src":"5521:6:87"},{"arguments":[{"arguments":[{"kind":"number","nativeSrc":"5537:3:87","nodeType":"YulLiteral","src":"5537:3:87","type":"","value":"160"},{"kind":"number","nativeSrc":"5542:1:87","nodeType":"YulLiteral","src":"5542:1:87","type":"","value":"1"}],"functionName":{"name":"shl","nativeSrc":"5533:3:87","nodeType":"YulIdentifier","src":"5533:3:87"},"nativeSrc":"5533:11:87","nodeType":"YulFunctionCall","src":"5533:11:87"},{"kind":"number","nativeSrc":"5546:1:87","nodeType":"YulLiteral","src":"5546:1:87","type":"","value":"1"}],"functionName":{"name":"sub","nativeSrc":"5529:3:87","nodeType":"YulIdentifier","src":"5529:3:87"},"nativeSrc":"5529:19:87","nodeType":"YulFunctionCall","src":"5529:19:87"}],"functionName":{"name":"and","nativeSrc":"5517:3:87","nodeType":"YulIdentifier","src":"5517:3:87"},"nativeSrc":"5517:32:87","nodeType":"YulFunctionCall","src":"5517:32:87"}],"functionName":{"name":"mstore","nativeSrc":"5499:6:87","nodeType":"YulIdentifier","src":"5499:6:87"},"nativeSrc":"5499:51:87","nodeType":"YulFunctionCall","src":"5499:51:87"},"nativeSrc":"5499:51:87","nodeType":"YulExpressionStatement","src":"5499:51:87"},{"expression":{"arguments":[{"arguments":[{"name":"headStart","nativeSrc":"5570:9:87","nodeType":"YulIdentifier","src":"5570:9:87"},{"kind":"number","nativeSrc":"5581:2:87","nodeType":"YulLiteral","src":"5581:2:87","type":"","value":"32"}],"functionName":{"name":"add","nativeSrc":"5566:3:87","nodeType":"YulIdentifier","src":"5566:3:87"},"nativeSrc":"5566:18:87","nodeType":"YulFunctionCall","src":"5566:18:87"},{"name":"value1","nativeSrc":"5586:6:87","nodeType":"YulIdentifier","src":"5586:6:87"}],"functionName":{"name":"mstore","nativeSrc":"5559:6:87","nodeType":"YulIdentifier","src":"5559:6:87"},"nativeSrc":"5559:34:87","nodeType":"YulFunctionCall","src":"5559:34:87"},"nativeSrc":"5559:34:87","nodeType":"YulExpressionStatement","src":"5559:34:87"}]},"name":"abi_encode_tuple_t_address_t_uint256__to_t_address_t_uint256__fromStack_reversed","nativeSrc":"5325:274:87","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nativeSrc":"5415:9:87","nodeType":"YulTypedName","src":"5415:9:87","type":""},{"name":"value1","nativeSrc":"5426:6:87","nodeType":"YulTypedName","src":"5426:6:87","type":""},{"name":"value0","nativeSrc":"5434:6:87","nodeType":"YulTypedName","src":"5434:6:87","type":""}],"returnVariables":[{"name":"tail","nativeSrc":"5445:4:87","nodeType":"YulTypedName","src":"5445:4:87","type":""}],"src":"5325:274:87"},{"body":{"nativeSrc":"5682:167:87","nodeType":"YulBlock","src":"5682:167:87","statements":[{"body":{"nativeSrc":"5728:16:87","nodeType":"YulBlock","src":"5728:16:87","statements":[{"expression":{"arguments":[{"kind":"number","nativeSrc":"5737:1:87","nodeType":"YulLiteral","src":"5737:1:87","type":"","value":"0"},{"kind":"number","nativeSrc":"5740:1:87","nodeType":"YulLiteral","src":"5740:1:87","type":"","value":"0"}],"functionName":{"name":"revert","nativeSrc":"5730:6:87","nodeType":"YulIdentifier","src":"5730:6:87"},"nativeSrc":"5730:12:87","nodeType":"YulFunctionCall","src":"5730:12:87"},"nativeSrc":"5730:12:87","nodeType":"YulExpressionStatement","src":"5730:12:87"}]},"condition":{"arguments":[{"arguments":[{"name":"dataEnd","nativeSrc":"5703:7:87","nodeType":"YulIdentifier","src":"5703:7:87"},{"name":"headStart","nativeSrc":"5712:9:87","nodeType":"YulIdentifier","src":"5712:9:87"}],"functionName":{"name":"sub","nativeSrc":"5699:3:87","nodeType":"YulIdentifier","src":"5699:3:87"},"nativeSrc":"5699:23:87","nodeType":"YulFunctionCall","src":"5699:23:87"},{"kind":"number","nativeSrc":"5724:2:87","nodeType":"YulLiteral","src":"5724:2:87","type":"","value":"32"}],"functionName":{"name":"slt","nativeSrc":"5695:3:87","nodeType":"YulIdentifier","src":"5695:3:87"},"nativeSrc":"5695:32:87","nodeType":"YulFunctionCall","src":"5695:32:87"},"nativeSrc":"5692:52:87","nodeType":"YulIf","src":"5692:52:87"},{"nativeSrc":"5753:29:87","nodeType":"YulVariableDeclaration","src":"5753:29:87","value":{"arguments":[{"name":"headStart","nativeSrc":"5772:9:87","nodeType":"YulIdentifier","src":"5772:9:87"}],"functionName":{"name":"mload","nativeSrc":"5766:5:87","nodeType":"YulIdentifier","src":"5766:5:87"},"nativeSrc":"5766:16:87","nodeType":"YulFunctionCall","src":"5766:16:87"},"variables":[{"name":"value","nativeSrc":"5757:5:87","nodeType":"YulTypedName","src":"5757:5:87","type":""}]},{"expression":{"arguments":[{"name":"value","nativeSrc":"5813:5:87","nodeType":"YulIdentifier","src":"5813:5:87"}],"functionName":{"name":"validator_revert_bool","nativeSrc":"5791:21:87","nodeType":"YulIdentifier","src":"5791:21:87"},"nativeSrc":"5791:28:87","nodeType":"YulFunctionCall","src":"5791:28:87"},"nativeSrc":"5791:28:87","nodeType":"YulExpressionStatement","src":"5791:28:87"},{"nativeSrc":"5828:15:87","nodeType":"YulAssignment","src":"5828:15:87","value":{"name":"value","nativeSrc":"5838:5:87","nodeType":"YulIdentifier","src":"5838:5:87"},"variableNames":[{"name":"value0","nativeSrc":"5828:6:87","nodeType":"YulIdentifier","src":"5828:6:87"}]}]},"name":"abi_decode_tuple_t_bool_fromMemory","nativeSrc":"5604:245:87","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nativeSrc":"5648:9:87","nodeType":"YulTypedName","src":"5648:9:87","type":""},{"name":"dataEnd","nativeSrc":"5659:7:87","nodeType":"YulTypedName","src":"5659:7:87","type":""}],"returnVariables":[{"name":"value0","nativeSrc":"5671:6:87","nodeType":"YulTypedName","src":"5671:6:87","type":""}],"src":"5604:245:87"},{"body":{"nativeSrc":"5983:171:87","nodeType":"YulBlock","src":"5983:171:87","statements":[{"nativeSrc":"5993:26:87","nodeType":"YulAssignment","src":"5993:26:87","value":{"arguments":[{"name":"headStart","nativeSrc":"6005:9:87","nodeType":"YulIdentifier","src":"6005:9:87"},{"kind":"number","nativeSrc":"6016:2:87","nodeType":"YulLiteral","src":"6016:2:87","type":"","value":"64"}],"functionName":{"name":"add","nativeSrc":"6001:3:87","nodeType":"YulIdentifier","src":"6001:3:87"},"nativeSrc":"6001:18:87","nodeType":"YulFunctionCall","src":"6001:18:87"},"variableNames":[{"name":"tail","nativeSrc":"5993:4:87","nodeType":"YulIdentifier","src":"5993:4:87"}]},{"expression":{"arguments":[{"name":"headStart","nativeSrc":"6035:9:87","nodeType":"YulIdentifier","src":"6035:9:87"},{"arguments":[{"name":"value0","nativeSrc":"6050:6:87","nodeType":"YulIdentifier","src":"6050:6:87"},{"arguments":[{"arguments":[{"kind":"number","nativeSrc":"6066:3:87","nodeType":"YulLiteral","src":"6066:3:87","type":"","value":"160"},{"kind":"number","nativeSrc":"6071:1:87","nodeType":"YulLiteral","src":"6071:1:87","type":"","value":"1"}],"functionName":{"name":"shl","nativeSrc":"6062:3:87","nodeType":"YulIdentifier","src":"6062:3:87"},"nativeSrc":"6062:11:87","nodeType":"YulFunctionCall","src":"6062:11:87"},{"kind":"number","nativeSrc":"6075:1:87","nodeType":"YulLiteral","src":"6075:1:87","type":"","value":"1"}],"functionName":{"name":"sub","nativeSrc":"6058:3:87","nodeType":"YulIdentifier","src":"6058:3:87"},"nativeSrc":"6058:19:87","nodeType":"YulFunctionCall","src":"6058:19:87"}],"functionName":{"name":"and","nativeSrc":"6046:3:87","nodeType":"YulIdentifier","src":"6046:3:87"},"nativeSrc":"6046:32:87","nodeType":"YulFunctionCall","src":"6046:32:87"}],"functionName":{"name":"mstore","nativeSrc":"6028:6:87","nodeType":"YulIdentifier","src":"6028:6:87"},"nativeSrc":"6028:51:87","nodeType":"YulFunctionCall","src":"6028:51:87"},"nativeSrc":"6028:51:87","nodeType":"YulExpressionStatement","src":"6028:51:87"},{"expression":{"arguments":[{"arguments":[{"name":"headStart","nativeSrc":"6099:9:87","nodeType":"YulIdentifier","src":"6099:9:87"},{"kind":"number","nativeSrc":"6110:2:87","nodeType":"YulLiteral","src":"6110:2:87","type":"","value":"32"}],"functionName":{"name":"add","nativeSrc":"6095:3:87","nodeType":"YulIdentifier","src":"6095:3:87"},"nativeSrc":"6095:18:87","nodeType":"YulFunctionCall","src":"6095:18:87"},{"arguments":[{"name":"value1","nativeSrc":"6119:6:87","nodeType":"YulIdentifier","src":"6119:6:87"},{"arguments":[{"arguments":[{"kind":"number","nativeSrc":"6135:3:87","nodeType":"YulLiteral","src":"6135:3:87","type":"","value":"160"},{"kind":"number","nativeSrc":"6140:1:87","nodeType":"YulLiteral","src":"6140:1:87","type":"","value":"1"}],"functionName":{"name":"shl","nativeSrc":"6131:3:87","nodeType":"YulIdentifier","src":"6131:3:87"},"nativeSrc":"6131:11:87","nodeType":"YulFunctionCall","src":"6131:11:87"},{"kind":"number","nativeSrc":"6144:1:87","nodeType":"YulLiteral","src":"6144:1:87","type":"","value":"1"}],"functionName":{"name":"sub","nativeSrc":"6127:3:87","nodeType":"YulIdentifier","src":"6127:3:87"},"nativeSrc":"6127:19:87","nodeType":"YulFunctionCall","src":"6127:19:87"}],"functionName":{"name":"and","nativeSrc":"6115:3:87","nodeType":"YulIdentifier","src":"6115:3:87"},"nativeSrc":"6115:32:87","nodeType":"YulFunctionCall","src":"6115:32:87"}],"functionName":{"name":"mstore","nativeSrc":"6088:6:87","nodeType":"YulIdentifier","src":"6088:6:87"},"nativeSrc":"6088:60:87","nodeType":"YulFunctionCall","src":"6088:60:87"},"nativeSrc":"6088:60:87","nodeType":"YulExpressionStatement","src":"6088:60:87"}]},"name":"abi_encode_tuple_t_address_t_address__to_t_address_t_address__fromStack_reversed","nativeSrc":"5854:300:87","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nativeSrc":"5944:9:87","nodeType":"YulTypedName","src":"5944:9:87","type":""},{"name":"value1","nativeSrc":"5955:6:87","nodeType":"YulTypedName","src":"5955:6:87","type":""},{"name":"value0","nativeSrc":"5963:6:87","nodeType":"YulTypedName","src":"5963:6:87","type":""}],"returnVariables":[{"name":"tail","nativeSrc":"5974:4:87","nodeType":"YulTypedName","src":"5974:4:87","type":""}],"src":"5854:300:87"},{"body":{"nativeSrc":"6269:571:87","nodeType":"YulBlock","src":"6269:571:87","statements":[{"nativeSrc":"6279:42:87","nodeType":"YulVariableDeclaration","src":"6279:42:87","value":{"arguments":[{"arguments":[{"name":"dataEnd","nativeSrc":"6297:7:87","nodeType":"YulIdentifier","src":"6297:7:87"},{"name":"headStart","nativeSrc":"6306:9:87","nodeType":"YulIdentifier","src":"6306:9:87"}],"functionName":{"name":"sub","nativeSrc":"6293:3:87","nodeType":"YulIdentifier","src":"6293:3:87"},"nativeSrc":"6293:23:87","nodeType":"YulFunctionCall","src":"6293:23:87"},{"kind":"number","nativeSrc":"6318:2:87","nodeType":"YulLiteral","src":"6318:2:87","type":"","value":"64"}],"functionName":{"name":"slt","nativeSrc":"6289:3:87","nodeType":"YulIdentifier","src":"6289:3:87"},"nativeSrc":"6289:32:87","nodeType":"YulFunctionCall","src":"6289:32:87"},"variables":[{"name":"_1","nativeSrc":"6283:2:87","nodeType":"YulTypedName","src":"6283:2:87","type":""}]},{"body":{"nativeSrc":"6336:16:87","nodeType":"YulBlock","src":"6336:16:87","statements":[{"expression":{"arguments":[{"kind":"number","nativeSrc":"6345:1:87","nodeType":"YulLiteral","src":"6345:1:87","type":"","value":"0"},{"kind":"number","nativeSrc":"6348:1:87","nodeType":"YulLiteral","src":"6348:1:87","type":"","value":"0"}],"functionName":{"name":"revert","nativeSrc":"6338:6:87","nodeType":"YulIdentifier","src":"6338:6:87"},"nativeSrc":"6338:12:87","nodeType":"YulFunctionCall","src":"6338:12:87"},"nativeSrc":"6338:12:87","nodeType":"YulExpressionStatement","src":"6338:12:87"}]},"condition":{"name":"_1","nativeSrc":"6333:2:87","nodeType":"YulIdentifier","src":"6333:2:87"},"nativeSrc":"6330:22:87","nodeType":"YulIf","src":"6330:22:87"},{"nativeSrc":"6361:7:87","nodeType":"YulAssignment","src":"6361:7:87","value":{"kind":"number","nativeSrc":"6367:1:87","nodeType":"YulLiteral","src":"6367:1:87","type":"","value":"0"},"variableNames":[{"name":"_1","nativeSrc":"6361:2:87","nodeType":"YulIdentifier","src":"6361:2:87"}]},{"nativeSrc":"6377:15:87","nodeType":"YulVariableDeclaration","src":"6377:15:87","value":{"kind":"number","nativeSrc":"6391:1:87","nodeType":"YulLiteral","src":"6391:1:87","type":"","value":"0"},"variables":[{"name":"memPtr","nativeSrc":"6381:6:87","nodeType":"YulTypedName","src":"6381:6:87","type":""}]},{"nativeSrc":"6401:19:87","nodeType":"YulAssignment","src":"6401:19:87","value":{"arguments":[{"kind":"number","nativeSrc":"6417:2:87","nodeType":"YulLiteral","src":"6417:2:87","type":"","value":"64"}],"functionName":{"name":"mload","nativeSrc":"6411:5:87","nodeType":"YulIdentifier","src":"6411:5:87"},"nativeSrc":"6411:9:87","nodeType":"YulFunctionCall","src":"6411:9:87"},"variableNames":[{"name":"memPtr","nativeSrc":"6401:6:87","nodeType":"YulIdentifier","src":"6401:6:87"}]},{"nativeSrc":"6429:33:87","nodeType":"YulVariableDeclaration","src":"6429:33:87","value":{"arguments":[{"name":"memPtr","nativeSrc":"6451:6:87","nodeType":"YulIdentifier","src":"6451:6:87"},{"kind":"number","nativeSrc":"6459:2:87","nodeType":"YulLiteral","src":"6459:2:87","type":"","value":"64"}],"functionName":{"name":"add","nativeSrc":"6447:3:87","nodeType":"YulIdentifier","src":"6447:3:87"},"nativeSrc":"6447:15:87","nodeType":"YulFunctionCall","src":"6447:15:87"},"variables":[{"name":"newFreePtr","nativeSrc":"6433:10:87","nodeType":"YulTypedName","src":"6433:10:87","type":""}]},{"body":{"nativeSrc":"6537:22:87","nodeType":"YulBlock","src":"6537:22:87","statements":[{"expression":{"arguments":[],"functionName":{"name":"panic_error_0x41","nativeSrc":"6539:16:87","nodeType":"YulIdentifier","src":"6539:16:87"},"nativeSrc":"6539:18:87","nodeType":"YulFunctionCall","src":"6539:18:87"},"nativeSrc":"6539:18:87","nodeType":"YulExpressionStatement","src":"6539:18:87"}]},"condition":{"arguments":[{"arguments":[{"name":"newFreePtr","nativeSrc":"6480:10:87","nodeType":"YulIdentifier","src":"6480:10:87"},{"kind":"number","nativeSrc":"6492:18:87","nodeType":"YulLiteral","src":"6492:18:87","type":"","value":"0xffffffffffffffff"}],"functionName":{"name":"gt","nativeSrc":"6477:2:87","nodeType":"YulIdentifier","src":"6477:2:87"},"nativeSrc":"6477:34:87","nodeType":"YulFunctionCall","src":"6477:34:87"},{"arguments":[{"name":"newFreePtr","nativeSrc":"6516:10:87","nodeType":"YulIdentifier","src":"6516:10:87"},{"name":"memPtr","nativeSrc":"6528:6:87","nodeType":"YulIdentifier","src":"6528:6:87"}],"functionName":{"name":"lt","nativeSrc":"6513:2:87","nodeType":"YulIdentifier","src":"6513:2:87"},"nativeSrc":"6513:22:87","nodeType":"YulFunctionCall","src":"6513:22:87"}],"functionName":{"name":"or","nativeSrc":"6474:2:87","nodeType":"YulIdentifier","src":"6474:2:87"},"nativeSrc":"6474:62:87","nodeType":"YulFunctionCall","src":"6474:62:87"},"nativeSrc":"6471:88:87","nodeType":"YulIf","src":"6471:88:87"},{"expression":{"arguments":[{"kind":"number","nativeSrc":"6575:2:87","nodeType":"YulLiteral","src":"6575:2:87","type":"","value":"64"},{"name":"newFreePtr","nativeSrc":"6579:10:87","nodeType":"YulIdentifier","src":"6579:10:87"}],"functionName":{"name":"mstore","nativeSrc":"6568:6:87","nodeType":"YulIdentifier","src":"6568:6:87"},"nativeSrc":"6568:22:87","nodeType":"YulFunctionCall","src":"6568:22:87"},"nativeSrc":"6568:22:87","nodeType":"YulExpressionStatement","src":"6568:22:87"},{"nativeSrc":"6599:29:87","nodeType":"YulVariableDeclaration","src":"6599:29:87","value":{"arguments":[{"name":"headStart","nativeSrc":"6618:9:87","nodeType":"YulIdentifier","src":"6618:9:87"}],"functionName":{"name":"mload","nativeSrc":"6612:5:87","nodeType":"YulIdentifier","src":"6612:5:87"},"nativeSrc":"6612:16:87","nodeType":"YulFunctionCall","src":"6612:16:87"},"variables":[{"name":"value","nativeSrc":"6603:5:87","nodeType":"YulTypedName","src":"6603:5:87","type":""}]},{"expression":{"arguments":[{"name":"value","nativeSrc":"6662:5:87","nodeType":"YulIdentifier","src":"6662:5:87"}],"functionName":{"name":"validator_revert_address","nativeSrc":"6637:24:87","nodeType":"YulIdentifier","src":"6637:24:87"},"nativeSrc":"6637:31:87","nodeType":"YulFunctionCall","src":"6637:31:87"},"nativeSrc":"6637:31:87","nodeType":"YulExpressionStatement","src":"6637:31:87"},{"expression":{"arguments":[{"name":"memPtr","nativeSrc":"6684:6:87","nodeType":"YulIdentifier","src":"6684:6:87"},{"name":"value","nativeSrc":"6692:5:87","nodeType":"YulIdentifier","src":"6692:5:87"}],"functionName":{"name":"mstore","nativeSrc":"6677:6:87","nodeType":"YulIdentifier","src":"6677:6:87"},"nativeSrc":"6677:21:87","nodeType":"YulFunctionCall","src":"6677:21:87"},"nativeSrc":"6677:21:87","nodeType":"YulExpressionStatement","src":"6677:21:87"},{"nativeSrc":"6707:16:87","nodeType":"YulVariableDeclaration","src":"6707:16:87","value":{"kind":"number","nativeSrc":"6722:1:87","nodeType":"YulLiteral","src":"6722:1:87","type":"","value":"0"},"variables":[{"name":"value_1","nativeSrc":"6711:7:87","nodeType":"YulTypedName","src":"6711:7:87","type":""}]},{"nativeSrc":"6732:36:87","nodeType":"YulAssignment","src":"6732:36:87","value":{"arguments":[{"arguments":[{"name":"headStart","nativeSrc":"6753:9:87","nodeType":"YulIdentifier","src":"6753:9:87"},{"kind":"number","nativeSrc":"6764:2:87","nodeType":"YulLiteral","src":"6764:2:87","type":"","value":"32"}],"functionName":{"name":"add","nativeSrc":"6749:3:87","nodeType":"YulIdentifier","src":"6749:3:87"},"nativeSrc":"6749:18:87","nodeType":"YulFunctionCall","src":"6749:18:87"}],"functionName":{"name":"mload","nativeSrc":"6743:5:87","nodeType":"YulIdentifier","src":"6743:5:87"},"nativeSrc":"6743:25:87","nodeType":"YulFunctionCall","src":"6743:25:87"},"variableNames":[{"name":"value_1","nativeSrc":"6732:7:87","nodeType":"YulIdentifier","src":"6732:7:87"}]},{"expression":{"arguments":[{"arguments":[{"name":"memPtr","nativeSrc":"6788:6:87","nodeType":"YulIdentifier","src":"6788:6:87"},{"kind":"number","nativeSrc":"6796:2:87","nodeType":"YulLiteral","src":"6796:2:87","type":"","value":"32"}],"functionName":{"name":"add","nativeSrc":"6784:3:87","nodeType":"YulIdentifier","src":"6784:3:87"},"nativeSrc":"6784:15:87","nodeType":"YulFunctionCall","src":"6784:15:87"},{"name":"value_1","nativeSrc":"6801:7:87","nodeType":"YulIdentifier","src":"6801:7:87"}],"functionName":{"name":"mstore","nativeSrc":"6777:6:87","nodeType":"YulIdentifier","src":"6777:6:87"},"nativeSrc":"6777:32:87","nodeType":"YulFunctionCall","src":"6777:32:87"},"nativeSrc":"6777:32:87","nodeType":"YulExpressionStatement","src":"6777:32:87"},{"nativeSrc":"6818:16:87","nodeType":"YulAssignment","src":"6818:16:87","value":{"name":"memPtr","nativeSrc":"6828:6:87","nodeType":"YulIdentifier","src":"6828:6:87"},"variableNames":[{"name":"value0","nativeSrc":"6818:6:87","nodeType":"YulIdentifier","src":"6818:6:87"}]}]},"name":"abi_decode_tuple_t_struct$_RewardOwed_$20550_memory_ptr_fromMemory","nativeSrc":"6159:681:87","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nativeSrc":"6235:9:87","nodeType":"YulTypedName","src":"6235:9:87","type":""},{"name":"dataEnd","nativeSrc":"6246:7:87","nodeType":"YulTypedName","src":"6246:7:87","type":""}],"returnVariables":[{"name":"value0","nativeSrc":"6258:6:87","nodeType":"YulTypedName","src":"6258:6:87","type":""}],"src":"6159:681:87"},{"body":{"nativeSrc":"6956:441:87","nodeType":"YulBlock","src":"6956:441:87","statements":[{"body":{"nativeSrc":"7002:16:87","nodeType":"YulBlock","src":"7002:16:87","statements":[{"expression":{"arguments":[{"kind":"number","nativeSrc":"7011:1:87","nodeType":"YulLiteral","src":"7011:1:87","type":"","value":"0"},{"kind":"number","nativeSrc":"7014:1:87","nodeType":"YulLiteral","src":"7014:1:87","type":"","value":"0"}],"functionName":{"name":"revert","nativeSrc":"7004:6:87","nodeType":"YulIdentifier","src":"7004:6:87"},"nativeSrc":"7004:12:87","nodeType":"YulFunctionCall","src":"7004:12:87"},"nativeSrc":"7004:12:87","nodeType":"YulExpressionStatement","src":"7004:12:87"}]},"condition":{"arguments":[{"arguments":[{"name":"dataEnd","nativeSrc":"6977:7:87","nodeType":"YulIdentifier","src":"6977:7:87"},{"name":"headStart","nativeSrc":"6986:9:87","nodeType":"YulIdentifier","src":"6986:9:87"}],"functionName":{"name":"sub","nativeSrc":"6973:3:87","nodeType":"YulIdentifier","src":"6973:3:87"},"nativeSrc":"6973:23:87","nodeType":"YulFunctionCall","src":"6973:23:87"},{"kind":"number","nativeSrc":"6998:2:87","nodeType":"YulLiteral","src":"6998:2:87","type":"","value":"96"}],"functionName":{"name":"slt","nativeSrc":"6969:3:87","nodeType":"YulIdentifier","src":"6969:3:87"},"nativeSrc":"6969:32:87","nodeType":"YulFunctionCall","src":"6969:32:87"},"nativeSrc":"6966:52:87","nodeType":"YulIf","src":"6966:52:87"},{"nativeSrc":"7027:29:87","nodeType":"YulVariableDeclaration","src":"7027:29:87","value":{"arguments":[{"name":"headStart","nativeSrc":"7046:9:87","nodeType":"YulIdentifier","src":"7046:9:87"}],"functionName":{"name":"mload","nativeSrc":"7040:5:87","nodeType":"YulIdentifier","src":"7040:5:87"},"nativeSrc":"7040:16:87","nodeType":"YulFunctionCall","src":"7040:16:87"},"variables":[{"name":"value","nativeSrc":"7031:5:87","nodeType":"YulTypedName","src":"7031:5:87","type":""}]},{"expression":{"arguments":[{"name":"value","nativeSrc":"7090:5:87","nodeType":"YulIdentifier","src":"7090:5:87"}],"functionName":{"name":"validator_revert_address","nativeSrc":"7065:24:87","nodeType":"YulIdentifier","src":"7065:24:87"},"nativeSrc":"7065:31:87","nodeType":"YulFunctionCall","src":"7065:31:87"},"nativeSrc":"7065:31:87","nodeType":"YulExpressionStatement","src":"7065:31:87"},{"nativeSrc":"7105:15:87","nodeType":"YulAssignment","src":"7105:15:87","value":{"name":"value","nativeSrc":"7115:5:87","nodeType":"YulIdentifier","src":"7115:5:87"},"variableNames":[{"name":"value0","nativeSrc":"7105:6:87","nodeType":"YulIdentifier","src":"7105:6:87"}]},{"nativeSrc":"7129:40:87","nodeType":"YulVariableDeclaration","src":"7129:40:87","value":{"arguments":[{"arguments":[{"name":"headStart","nativeSrc":"7154:9:87","nodeType":"YulIdentifier","src":"7154:9:87"},{"kind":"number","nativeSrc":"7165:2:87","nodeType":"YulLiteral","src":"7165:2:87","type":"","value":"32"}],"functionName":{"name":"add","nativeSrc":"7150:3:87","nodeType":"YulIdentifier","src":"7150:3:87"},"nativeSrc":"7150:18:87","nodeType":"YulFunctionCall","src":"7150:18:87"}],"functionName":{"name":"mload","nativeSrc":"7144:5:87","nodeType":"YulIdentifier","src":"7144:5:87"},"nativeSrc":"7144:25:87","nodeType":"YulFunctionCall","src":"7144:25:87"},"variables":[{"name":"value_1","nativeSrc":"7133:7:87","nodeType":"YulTypedName","src":"7133:7:87","type":""}]},{"body":{"nativeSrc":"7235:16:87","nodeType":"YulBlock","src":"7235:16:87","statements":[{"expression":{"arguments":[{"kind":"number","nativeSrc":"7244:1:87","nodeType":"YulLiteral","src":"7244:1:87","type":"","value":"0"},{"kind":"number","nativeSrc":"7247:1:87","nodeType":"YulLiteral","src":"7247:1:87","type":"","value":"0"}],"functionName":{"name":"revert","nativeSrc":"7237:6:87","nodeType":"YulIdentifier","src":"7237:6:87"},"nativeSrc":"7237:12:87","nodeType":"YulFunctionCall","src":"7237:12:87"},"nativeSrc":"7237:12:87","nodeType":"YulExpressionStatement","src":"7237:12:87"}]},"condition":{"arguments":[{"arguments":[{"name":"value_1","nativeSrc":"7191:7:87","nodeType":"YulIdentifier","src":"7191:7:87"},{"arguments":[{"name":"value_1","nativeSrc":"7204:7:87","nodeType":"YulIdentifier","src":"7204:7:87"},{"kind":"number","nativeSrc":"7213:18:87","nodeType":"YulLiteral","src":"7213:18:87","type":"","value":"0xffffffffffffffff"}],"functionName":{"name":"and","nativeSrc":"7200:3:87","nodeType":"YulIdentifier","src":"7200:3:87"},"nativeSrc":"7200:32:87","nodeType":"YulFunctionCall","src":"7200:32:87"}],"functionName":{"name":"eq","nativeSrc":"7188:2:87","nodeType":"YulIdentifier","src":"7188:2:87"},"nativeSrc":"7188:45:87","nodeType":"YulFunctionCall","src":"7188:45:87"}],"functionName":{"name":"iszero","nativeSrc":"7181:6:87","nodeType":"YulIdentifier","src":"7181:6:87"},"nativeSrc":"7181:53:87","nodeType":"YulFunctionCall","src":"7181:53:87"},"nativeSrc":"7178:73:87","nodeType":"YulIf","src":"7178:73:87"},{"nativeSrc":"7260:17:87","nodeType":"YulAssignment","src":"7260:17:87","value":{"name":"value_1","nativeSrc":"7270:7:87","nodeType":"YulIdentifier","src":"7270:7:87"},"variableNames":[{"name":"value1","nativeSrc":"7260:6:87","nodeType":"YulIdentifier","src":"7260:6:87"}]},{"nativeSrc":"7286:40:87","nodeType":"YulVariableDeclaration","src":"7286:40:87","value":{"arguments":[{"arguments":[{"name":"headStart","nativeSrc":"7311:9:87","nodeType":"YulIdentifier","src":"7311:9:87"},{"kind":"number","nativeSrc":"7322:2:87","nodeType":"YulLiteral","src":"7322:2:87","type":"","value":"64"}],"functionName":{"name":"add","nativeSrc":"7307:3:87","nodeType":"YulIdentifier","src":"7307:3:87"},"nativeSrc":"7307:18:87","nodeType":"YulFunctionCall","src":"7307:18:87"}],"functionName":{"name":"mload","nativeSrc":"7301:5:87","nodeType":"YulIdentifier","src":"7301:5:87"},"nativeSrc":"7301:25:87","nodeType":"YulFunctionCall","src":"7301:25:87"},"variables":[{"name":"value_2","nativeSrc":"7290:7:87","nodeType":"YulTypedName","src":"7290:7:87","type":""}]},{"expression":{"arguments":[{"name":"value_2","nativeSrc":"7357:7:87","nodeType":"YulIdentifier","src":"7357:7:87"}],"functionName":{"name":"validator_revert_bool","nativeSrc":"7335:21:87","nodeType":"YulIdentifier","src":"7335:21:87"},"nativeSrc":"7335:30:87","nodeType":"YulFunctionCall","src":"7335:30:87"},"nativeSrc":"7335:30:87","nodeType":"YulExpressionStatement","src":"7335:30:87"},{"nativeSrc":"7374:17:87","nodeType":"YulAssignment","src":"7374:17:87","value":{"name":"value_2","nativeSrc":"7384:7:87","nodeType":"YulIdentifier","src":"7384:7:87"},"variableNames":[{"name":"value2","nativeSrc":"7374:6:87","nodeType":"YulIdentifier","src":"7374:6:87"}]}]},"name":"abi_decode_tuple_t_addresst_uint64t_bool_fromMemory","nativeSrc":"6845:552:87","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nativeSrc":"6906:9:87","nodeType":"YulTypedName","src":"6906:9:87","type":""},{"name":"dataEnd","nativeSrc":"6917:7:87","nodeType":"YulTypedName","src":"6917:7:87","type":""}],"returnVariables":[{"name":"value0","nativeSrc":"6929:6:87","nodeType":"YulTypedName","src":"6929:6:87","type":""},{"name":"value1","nativeSrc":"6937:6:87","nodeType":"YulTypedName","src":"6937:6:87","type":""},{"name":"value2","nativeSrc":"6945:6:87","nodeType":"YulTypedName","src":"6945:6:87","type":""}],"src":"6845:552:87"},{"body":{"nativeSrc":"7553:230:87","nodeType":"YulBlock","src":"7553:230:87","statements":[{"nativeSrc":"7563:26:87","nodeType":"YulAssignment","src":"7563:26:87","value":{"arguments":[{"name":"headStart","nativeSrc":"7575:9:87","nodeType":"YulIdentifier","src":"7575:9:87"},{"kind":"number","nativeSrc":"7586:2:87","nodeType":"YulLiteral","src":"7586:2:87","type":"","value":"96"}],"functionName":{"name":"add","nativeSrc":"7571:3:87","nodeType":"YulIdentifier","src":"7571:3:87"},"nativeSrc":"7571:18:87","nodeType":"YulFunctionCall","src":"7571:18:87"},"variableNames":[{"name":"tail","nativeSrc":"7563:4:87","nodeType":"YulIdentifier","src":"7563:4:87"}]},{"expression":{"arguments":[{"name":"headStart","nativeSrc":"7605:9:87","nodeType":"YulIdentifier","src":"7605:9:87"},{"arguments":[{"name":"value0","nativeSrc":"7620:6:87","nodeType":"YulIdentifier","src":"7620:6:87"},{"arguments":[{"arguments":[{"kind":"number","nativeSrc":"7636:3:87","nodeType":"YulLiteral","src":"7636:3:87","type":"","value":"160"},{"kind":"number","nativeSrc":"7641:1:87","nodeType":"YulLiteral","src":"7641:1:87","type":"","value":"1"}],"functionName":{"name":"shl","nativeSrc":"7632:3:87","nodeType":"YulIdentifier","src":"7632:3:87"},"nativeSrc":"7632:11:87","nodeType":"YulFunctionCall","src":"7632:11:87"},{"kind":"number","nativeSrc":"7645:1:87","nodeType":"YulLiteral","src":"7645:1:87","type":"","value":"1"}],"functionName":{"name":"sub","nativeSrc":"7628:3:87","nodeType":"YulIdentifier","src":"7628:3:87"},"nativeSrc":"7628:19:87","nodeType":"YulFunctionCall","src":"7628:19:87"}],"functionName":{"name":"and","nativeSrc":"7616:3:87","nodeType":"YulIdentifier","src":"7616:3:87"},"nativeSrc":"7616:32:87","nodeType":"YulFunctionCall","src":"7616:32:87"}],"functionName":{"name":"mstore","nativeSrc":"7598:6:87","nodeType":"YulIdentifier","src":"7598:6:87"},"nativeSrc":"7598:51:87","nodeType":"YulFunctionCall","src":"7598:51:87"},"nativeSrc":"7598:51:87","nodeType":"YulExpressionStatement","src":"7598:51:87"},{"expression":{"arguments":[{"arguments":[{"name":"headStart","nativeSrc":"7669:9:87","nodeType":"YulIdentifier","src":"7669:9:87"},{"kind":"number","nativeSrc":"7680:2:87","nodeType":"YulLiteral","src":"7680:2:87","type":"","value":"32"}],"functionName":{"name":"add","nativeSrc":"7665:3:87","nodeType":"YulIdentifier","src":"7665:3:87"},"nativeSrc":"7665:18:87","nodeType":"YulFunctionCall","src":"7665:18:87"},{"arguments":[{"name":"value1","nativeSrc":"7689:6:87","nodeType":"YulIdentifier","src":"7689:6:87"},{"arguments":[{"arguments":[{"kind":"number","nativeSrc":"7705:3:87","nodeType":"YulLiteral","src":"7705:3:87","type":"","value":"160"},{"kind":"number","nativeSrc":"7710:1:87","nodeType":"YulLiteral","src":"7710:1:87","type":"","value":"1"}],"functionName":{"name":"shl","nativeSrc":"7701:3:87","nodeType":"YulIdentifier","src":"7701:3:87"},"nativeSrc":"7701:11:87","nodeType":"YulFunctionCall","src":"7701:11:87"},{"kind":"number","nativeSrc":"7714:1:87","nodeType":"YulLiteral","src":"7714:1:87","type":"","value":"1"}],"functionName":{"name":"sub","nativeSrc":"7697:3:87","nodeType":"YulIdentifier","src":"7697:3:87"},"nativeSrc":"7697:19:87","nodeType":"YulFunctionCall","src":"7697:19:87"}],"functionName":{"name":"and","nativeSrc":"7685:3:87","nodeType":"YulIdentifier","src":"7685:3:87"},"nativeSrc":"7685:32:87","nodeType":"YulFunctionCall","src":"7685:32:87"}],"functionName":{"name":"mstore","nativeSrc":"7658:6:87","nodeType":"YulIdentifier","src":"7658:6:87"},"nativeSrc":"7658:60:87","nodeType":"YulFunctionCall","src":"7658:60:87"},"nativeSrc":"7658:60:87","nodeType":"YulExpressionStatement","src":"7658:60:87"},{"expression":{"arguments":[{"arguments":[{"name":"headStart","nativeSrc":"7738:9:87","nodeType":"YulIdentifier","src":"7738:9:87"},{"kind":"number","nativeSrc":"7749:2:87","nodeType":"YulLiteral","src":"7749:2:87","type":"","value":"64"}],"functionName":{"name":"add","nativeSrc":"7734:3:87","nodeType":"YulIdentifier","src":"7734:3:87"},"nativeSrc":"7734:18:87","nodeType":"YulFunctionCall","src":"7734:18:87"},{"arguments":[{"arguments":[{"name":"value2","nativeSrc":"7768:6:87","nodeType":"YulIdentifier","src":"7768:6:87"}],"functionName":{"name":"iszero","nativeSrc":"7761:6:87","nodeType":"YulIdentifier","src":"7761:6:87"},"nativeSrc":"7761:14:87","nodeType":"YulFunctionCall","src":"7761:14:87"}],"functionName":{"name":"iszero","nativeSrc":"7754:6:87","nodeType":"YulIdentifier","src":"7754:6:87"},"nativeSrc":"7754:22:87","nodeType":"YulFunctionCall","src":"7754:22:87"}],"functionName":{"name":"mstore","nativeSrc":"7727:6:87","nodeType":"YulIdentifier","src":"7727:6:87"},"nativeSrc":"7727:50:87","nodeType":"YulFunctionCall","src":"7727:50:87"},"nativeSrc":"7727:50:87","nodeType":"YulExpressionStatement","src":"7727:50:87"}]},"name":"abi_encode_tuple_t_address_t_address_t_bool__to_t_address_t_address_t_bool__fromStack_reversed","nativeSrc":"7402:381:87","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nativeSrc":"7506:9:87","nodeType":"YulTypedName","src":"7506:9:87","type":""},{"name":"value2","nativeSrc":"7517:6:87","nodeType":"YulTypedName","src":"7517:6:87","type":""},{"name":"value1","nativeSrc":"7525:6:87","nodeType":"YulTypedName","src":"7525:6:87","type":""},{"name":"value0","nativeSrc":"7533:6:87","nodeType":"YulTypedName","src":"7533:6:87","type":""}],"returnVariables":[{"name":"tail","nativeSrc":"7544:4:87","nodeType":"YulTypedName","src":"7544:4:87","type":""}],"src":"7402:381:87"},{"body":{"nativeSrc":"7843:325:87","nodeType":"YulBlock","src":"7843:325:87","statements":[{"nativeSrc":"7853:22:87","nodeType":"YulAssignment","src":"7853:22:87","value":{"arguments":[{"kind":"number","nativeSrc":"7867:1:87","nodeType":"YulLiteral","src":"7867:1:87","type":"","value":"1"},{"name":"data","nativeSrc":"7870:4:87","nodeType":"YulIdentifier","src":"7870:4:87"}],"functionName":{"name":"shr","nativeSrc":"7863:3:87","nodeType":"YulIdentifier","src":"7863:3:87"},"nativeSrc":"7863:12:87","nodeType":"YulFunctionCall","src":"7863:12:87"},"variableNames":[{"name":"length","nativeSrc":"7853:6:87","nodeType":"YulIdentifier","src":"7853:6:87"}]},{"nativeSrc":"7884:38:87","nodeType":"YulVariableDeclaration","src":"7884:38:87","value":{"arguments":[{"name":"data","nativeSrc":"7914:4:87","nodeType":"YulIdentifier","src":"7914:4:87"},{"kind":"number","nativeSrc":"7920:1:87","nodeType":"YulLiteral","src":"7920:1:87","type":"","value":"1"}],"functionName":{"name":"and","nativeSrc":"7910:3:87","nodeType":"YulIdentifier","src":"7910:3:87"},"nativeSrc":"7910:12:87","nodeType":"YulFunctionCall","src":"7910:12:87"},"variables":[{"name":"outOfPlaceEncoding","nativeSrc":"7888:18:87","nodeType":"YulTypedName","src":"7888:18:87","type":""}]},{"body":{"nativeSrc":"7961:31:87","nodeType":"YulBlock","src":"7961:31:87","statements":[{"nativeSrc":"7963:27:87","nodeType":"YulAssignment","src":"7963:27:87","value":{"arguments":[{"name":"length","nativeSrc":"7977:6:87","nodeType":"YulIdentifier","src":"7977:6:87"},{"kind":"number","nativeSrc":"7985:4:87","nodeType":"YulLiteral","src":"7985:4:87","type":"","value":"0x7f"}],"functionName":{"name":"and","nativeSrc":"7973:3:87","nodeType":"YulIdentifier","src":"7973:3:87"},"nativeSrc":"7973:17:87","nodeType":"YulFunctionCall","src":"7973:17:87"},"variableNames":[{"name":"length","nativeSrc":"7963:6:87","nodeType":"YulIdentifier","src":"7963:6:87"}]}]},"condition":{"arguments":[{"name":"outOfPlaceEncoding","nativeSrc":"7941:18:87","nodeType":"YulIdentifier","src":"7941:18:87"}],"functionName":{"name":"iszero","nativeSrc":"7934:6:87","nodeType":"YulIdentifier","src":"7934:6:87"},"nativeSrc":"7934:26:87","nodeType":"YulFunctionCall","src":"7934:26:87"},"nativeSrc":"7931:61:87","nodeType":"YulIf","src":"7931:61:87"},{"body":{"nativeSrc":"8051:111:87","nodeType":"YulBlock","src":"8051:111:87","statements":[{"expression":{"arguments":[{"kind":"number","nativeSrc":"8072:1:87","nodeType":"YulLiteral","src":"8072:1:87","type":"","value":"0"},{"arguments":[{"kind":"number","nativeSrc":"8079:3:87","nodeType":"YulLiteral","src":"8079:3:87","type":"","value":"224"},{"kind":"number","nativeSrc":"8084:10:87","nodeType":"YulLiteral","src":"8084:10:87","type":"","value":"0x4e487b71"}],"functionName":{"name":"shl","nativeSrc":"8075:3:87","nodeType":"YulIdentifier","src":"8075:3:87"},"nativeSrc":"8075:20:87","nodeType":"YulFunctionCall","src":"8075:20:87"}],"functionName":{"name":"mstore","nativeSrc":"8065:6:87","nodeType":"YulIdentifier","src":"8065:6:87"},"nativeSrc":"8065:31:87","nodeType":"YulFunctionCall","src":"8065:31:87"},"nativeSrc":"8065:31:87","nodeType":"YulExpressionStatement","src":"8065:31:87"},{"expression":{"arguments":[{"kind":"number","nativeSrc":"8116:1:87","nodeType":"YulLiteral","src":"8116:1:87","type":"","value":"4"},{"kind":"number","nativeSrc":"8119:4:87","nodeType":"YulLiteral","src":"8119:4:87","type":"","value":"0x22"}],"functionName":{"name":"mstore","nativeSrc":"8109:6:87","nodeType":"YulIdentifier","src":"8109:6:87"},"nativeSrc":"8109:15:87","nodeType":"YulFunctionCall","src":"8109:15:87"},"nativeSrc":"8109:15:87","nodeType":"YulExpressionStatement","src":"8109:15:87"},{"expression":{"arguments":[{"kind":"number","nativeSrc":"8144:1:87","nodeType":"YulLiteral","src":"8144:1:87","type":"","value":"0"},{"kind":"number","nativeSrc":"8147:4:87","nodeType":"YulLiteral","src":"8147:4:87","type":"","value":"0x24"}],"functionName":{"name":"revert","nativeSrc":"8137:6:87","nodeType":"YulIdentifier","src":"8137:6:87"},"nativeSrc":"8137:15:87","nodeType":"YulFunctionCall","src":"8137:15:87"},"nativeSrc":"8137:15:87","nodeType":"YulExpressionStatement","src":"8137:15:87"}]},"condition":{"arguments":[{"name":"outOfPlaceEncoding","nativeSrc":"8007:18:87","nodeType":"YulIdentifier","src":"8007:18:87"},{"arguments":[{"name":"length","nativeSrc":"8030:6:87","nodeType":"YulIdentifier","src":"8030:6:87"},{"kind":"number","nativeSrc":"8038:2:87","nodeType":"YulLiteral","src":"8038:2:87","type":"","value":"32"}],"functionName":{"name":"lt","nativeSrc":"8027:2:87","nodeType":"YulIdentifier","src":"8027:2:87"},"nativeSrc":"8027:14:87","nodeType":"YulFunctionCall","src":"8027:14:87"}],"functionName":{"name":"eq","nativeSrc":"8004:2:87","nodeType":"YulIdentifier","src":"8004:2:87"},"nativeSrc":"8004:38:87","nodeType":"YulFunctionCall","src":"8004:38:87"},"nativeSrc":"8001:161:87","nodeType":"YulIf","src":"8001:161:87"}]},"name":"extract_byte_array_length","nativeSrc":"7788:380:87","nodeType":"YulFunctionDefinition","parameters":[{"name":"data","nativeSrc":"7823:4:87","nodeType":"YulTypedName","src":"7823:4:87","type":""}],"returnVariables":[{"name":"length","nativeSrc":"7832:6:87","nodeType":"YulTypedName","src":"7832:6:87","type":""}],"src":"7788:380:87"},{"body":{"nativeSrc":"8236:420:87","nodeType":"YulBlock","src":"8236:420:87","statements":[{"body":{"nativeSrc":"8285:16:87","nodeType":"YulBlock","src":"8285:16:87","statements":[{"expression":{"arguments":[{"kind":"number","nativeSrc":"8294:1:87","nodeType":"YulLiteral","src":"8294:1:87","type":"","value":"0"},{"kind":"number","nativeSrc":"8297:1:87","nodeType":"YulLiteral","src":"8297:1:87","type":"","value":"0"}],"functionName":{"name":"revert","nativeSrc":"8287:6:87","nodeType":"YulIdentifier","src":"8287:6:87"},"nativeSrc":"8287:12:87","nodeType":"YulFunctionCall","src":"8287:12:87"},"nativeSrc":"8287:12:87","nodeType":"YulExpressionStatement","src":"8287:12:87"}]},"condition":{"arguments":[{"arguments":[{"arguments":[{"name":"offset","nativeSrc":"8264:6:87","nodeType":"YulIdentifier","src":"8264:6:87"},{"kind":"number","nativeSrc":"8272:4:87","nodeType":"YulLiteral","src":"8272:4:87","type":"","value":"0x1f"}],"functionName":{"name":"add","nativeSrc":"8260:3:87","nodeType":"YulIdentifier","src":"8260:3:87"},"nativeSrc":"8260:17:87","nodeType":"YulFunctionCall","src":"8260:17:87"},{"name":"end","nativeSrc":"8279:3:87","nodeType":"YulIdentifier","src":"8279:3:87"}],"functionName":{"name":"slt","nativeSrc":"8256:3:87","nodeType":"YulIdentifier","src":"8256:3:87"},"nativeSrc":"8256:27:87","nodeType":"YulFunctionCall","src":"8256:27:87"}],"functionName":{"name":"iszero","nativeSrc":"8249:6:87","nodeType":"YulIdentifier","src":"8249:6:87"},"nativeSrc":"8249:35:87","nodeType":"YulFunctionCall","src":"8249:35:87"},"nativeSrc":"8246:55:87","nodeType":"YulIf","src":"8246:55:87"},{"nativeSrc":"8310:27:87","nodeType":"YulVariableDeclaration","src":"8310:27:87","value":{"arguments":[{"name":"offset","nativeSrc":"8330:6:87","nodeType":"YulIdentifier","src":"8330:6:87"}],"functionName":{"name":"mload","nativeSrc":"8324:5:87","nodeType":"YulIdentifier","src":"8324:5:87"},"nativeSrc":"8324:13:87","nodeType":"YulFunctionCall","src":"8324:13:87"},"variables":[{"name":"length","nativeSrc":"8314:6:87","nodeType":"YulTypedName","src":"8314:6:87","type":""}]},{"nativeSrc":"8346:67:87","nodeType":"YulVariableDeclaration","src":"8346:67:87","value":{"arguments":[{"arguments":[{"name":"length","nativeSrc":"8405:6:87","nodeType":"YulIdentifier","src":"8405:6:87"}],"functionName":{"name":"array_allocation_size_bytes","nativeSrc":"8377:27:87","nodeType":"YulIdentifier","src":"8377:27:87"},"nativeSrc":"8377:35:87","nodeType":"YulFunctionCall","src":"8377:35:87"}],"functionName":{"name":"allocate_memory","nativeSrc":"8361:15:87","nodeType":"YulIdentifier","src":"8361:15:87"},"nativeSrc":"8361:52:87","nodeType":"YulFunctionCall","src":"8361:52:87"},"variables":[{"name":"array_1","nativeSrc":"8350:7:87","nodeType":"YulTypedName","src":"8350:7:87","type":""}]},{"expression":{"arguments":[{"name":"array_1","nativeSrc":"8429:7:87","nodeType":"YulIdentifier","src":"8429:7:87"},{"name":"length","nativeSrc":"8438:6:87","nodeType":"YulIdentifier","src":"8438:6:87"}],"functionName":{"name":"mstore","nativeSrc":"8422:6:87","nodeType":"YulIdentifier","src":"8422:6:87"},"nativeSrc":"8422:23:87","nodeType":"YulFunctionCall","src":"8422:23:87"},"nativeSrc":"8422:23:87","nodeType":"YulExpressionStatement","src":"8422:23:87"},{"body":{"nativeSrc":"8497:16:87","nodeType":"YulBlock","src":"8497:16:87","statements":[{"expression":{"arguments":[{"kind":"number","nativeSrc":"8506:1:87","nodeType":"YulLiteral","src":"8506:1:87","type":"","value":"0"},{"kind":"number","nativeSrc":"8509:1:87","nodeType":"YulLiteral","src":"8509:1:87","type":"","value":"0"}],"functionName":{"name":"revert","nativeSrc":"8499:6:87","nodeType":"YulIdentifier","src":"8499:6:87"},"nativeSrc":"8499:12:87","nodeType":"YulFunctionCall","src":"8499:12:87"},"nativeSrc":"8499:12:87","nodeType":"YulExpressionStatement","src":"8499:12:87"}]},"condition":{"arguments":[{"arguments":[{"arguments":[{"name":"offset","nativeSrc":"8468:6:87","nodeType":"YulIdentifier","src":"8468:6:87"},{"name":"length","nativeSrc":"8476:6:87","nodeType":"YulIdentifier","src":"8476:6:87"}],"functionName":{"name":"add","nativeSrc":"8464:3:87","nodeType":"YulIdentifier","src":"8464:3:87"},"nativeSrc":"8464:19:87","nodeType":"YulFunctionCall","src":"8464:19:87"},{"kind":"number","nativeSrc":"8485:4:87","nodeType":"YulLiteral","src":"8485:4:87","type":"","value":"0x20"}],"functionName":{"name":"add","nativeSrc":"8460:3:87","nodeType":"YulIdentifier","src":"8460:3:87"},"nativeSrc":"8460:30:87","nodeType":"YulFunctionCall","src":"8460:30:87"},{"name":"end","nativeSrc":"8492:3:87","nodeType":"YulIdentifier","src":"8492:3:87"}],"functionName":{"name":"gt","nativeSrc":"8457:2:87","nodeType":"YulIdentifier","src":"8457:2:87"},"nativeSrc":"8457:39:87","nodeType":"YulFunctionCall","src":"8457:39:87"},"nativeSrc":"8454:59:87","nodeType":"YulIf","src":"8454:59:87"},{"expression":{"arguments":[{"arguments":[{"name":"array_1","nativeSrc":"8532:7:87","nodeType":"YulIdentifier","src":"8532:7:87"},{"kind":"number","nativeSrc":"8541:4:87","nodeType":"YulLiteral","src":"8541:4:87","type":"","value":"0x20"}],"functionName":{"name":"add","nativeSrc":"8528:3:87","nodeType":"YulIdentifier","src":"8528:3:87"},"nativeSrc":"8528:18:87","nodeType":"YulFunctionCall","src":"8528:18:87"},{"arguments":[{"name":"offset","nativeSrc":"8552:6:87","nodeType":"YulIdentifier","src":"8552:6:87"},{"kind":"number","nativeSrc":"8560:4:87","nodeType":"YulLiteral","src":"8560:4:87","type":"","value":"0x20"}],"functionName":{"name":"add","nativeSrc":"8548:3:87","nodeType":"YulIdentifier","src":"8548:3:87"},"nativeSrc":"8548:17:87","nodeType":"YulFunctionCall","src":"8548:17:87"},{"name":"length","nativeSrc":"8567:6:87","nodeType":"YulIdentifier","src":"8567:6:87"}],"functionName":{"name":"mcopy","nativeSrc":"8522:5:87","nodeType":"YulIdentifier","src":"8522:5:87"},"nativeSrc":"8522:52:87","nodeType":"YulFunctionCall","src":"8522:52:87"},"nativeSrc":"8522:52:87","nodeType":"YulExpressionStatement","src":"8522:52:87"},{"expression":{"arguments":[{"arguments":[{"arguments":[{"name":"array_1","nativeSrc":"8598:7:87","nodeType":"YulIdentifier","src":"8598:7:87"},{"name":"length","nativeSrc":"8607:6:87","nodeType":"YulIdentifier","src":"8607:6:87"}],"functionName":{"name":"add","nativeSrc":"8594:3:87","nodeType":"YulIdentifier","src":"8594:3:87"},"nativeSrc":"8594:20:87","nodeType":"YulFunctionCall","src":"8594:20:87"},{"kind":"number","nativeSrc":"8616:4:87","nodeType":"YulLiteral","src":"8616:4:87","type":"","value":"0x20"}],"functionName":{"name":"add","nativeSrc":"8590:3:87","nodeType":"YulIdentifier","src":"8590:3:87"},"nativeSrc":"8590:31:87","nodeType":"YulFunctionCall","src":"8590:31:87"},{"kind":"number","nativeSrc":"8623:1:87","nodeType":"YulLiteral","src":"8623:1:87","type":"","value":"0"}],"functionName":{"name":"mstore","nativeSrc":"8583:6:87","nodeType":"YulIdentifier","src":"8583:6:87"},"nativeSrc":"8583:42:87","nodeType":"YulFunctionCall","src":"8583:42:87"},"nativeSrc":"8583:42:87","nodeType":"YulExpressionStatement","src":"8583:42:87"},{"nativeSrc":"8634:16:87","nodeType":"YulAssignment","src":"8634:16:87","value":{"name":"array_1","nativeSrc":"8643:7:87","nodeType":"YulIdentifier","src":"8643:7:87"},"variableNames":[{"name":"array","nativeSrc":"8634:5:87","nodeType":"YulIdentifier","src":"8634:5:87"}]}]},"name":"abi_decode_bytes_fromMemory","nativeSrc":"8173:483:87","nodeType":"YulFunctionDefinition","parameters":[{"name":"offset","nativeSrc":"8210:6:87","nodeType":"YulTypedName","src":"8210:6:87","type":""},{"name":"end","nativeSrc":"8218:3:87","nodeType":"YulTypedName","src":"8218:3:87","type":""}],"returnVariables":[{"name":"array","nativeSrc":"8226:5:87","nodeType":"YulTypedName","src":"8226:5:87","type":""}],"src":"8173:483:87"},{"body":{"nativeSrc":"8770:741:87","nodeType":"YulBlock","src":"8770:741:87","statements":[{"body":{"nativeSrc":"8816:16:87","nodeType":"YulBlock","src":"8816:16:87","statements":[{"expression":{"arguments":[{"kind":"number","nativeSrc":"8825:1:87","nodeType":"YulLiteral","src":"8825:1:87","type":"","value":"0"},{"kind":"number","nativeSrc":"8828:1:87","nodeType":"YulLiteral","src":"8828:1:87","type":"","value":"0"}],"functionName":{"name":"revert","nativeSrc":"8818:6:87","nodeType":"YulIdentifier","src":"8818:6:87"},"nativeSrc":"8818:12:87","nodeType":"YulFunctionCall","src":"8818:12:87"},"nativeSrc":"8818:12:87","nodeType":"YulExpressionStatement","src":"8818:12:87"}]},"condition":{"arguments":[{"arguments":[{"name":"dataEnd","nativeSrc":"8791:7:87","nodeType":"YulIdentifier","src":"8791:7:87"},{"name":"headStart","nativeSrc":"8800:9:87","nodeType":"YulIdentifier","src":"8800:9:87"}],"functionName":{"name":"sub","nativeSrc":"8787:3:87","nodeType":"YulIdentifier","src":"8787:3:87"},"nativeSrc":"8787:23:87","nodeType":"YulFunctionCall","src":"8787:23:87"},{"kind":"number","nativeSrc":"8812:2:87","nodeType":"YulLiteral","src":"8812:2:87","type":"","value":"32"}],"functionName":{"name":"slt","nativeSrc":"8783:3:87","nodeType":"YulIdentifier","src":"8783:3:87"},"nativeSrc":"8783:32:87","nodeType":"YulFunctionCall","src":"8783:32:87"},"nativeSrc":"8780:52:87","nodeType":"YulIf","src":"8780:52:87"},{"nativeSrc":"8841:30:87","nodeType":"YulVariableDeclaration","src":"8841:30:87","value":{"arguments":[{"name":"headStart","nativeSrc":"8861:9:87","nodeType":"YulIdentifier","src":"8861:9:87"}],"functionName":{"name":"mload","nativeSrc":"8855:5:87","nodeType":"YulIdentifier","src":"8855:5:87"},"nativeSrc":"8855:16:87","nodeType":"YulFunctionCall","src":"8855:16:87"},"variables":[{"name":"offset","nativeSrc":"8845:6:87","nodeType":"YulTypedName","src":"8845:6:87","type":""}]},{"body":{"nativeSrc":"8914:16:87","nodeType":"YulBlock","src":"8914:16:87","statements":[{"expression":{"arguments":[{"kind":"number","nativeSrc":"8923:1:87","nodeType":"YulLiteral","src":"8923:1:87","type":"","value":"0"},{"kind":"number","nativeSrc":"8926:1:87","nodeType":"YulLiteral","src":"8926:1:87","type":"","value":"0"}],"functionName":{"name":"revert","nativeSrc":"8916:6:87","nodeType":"YulIdentifier","src":"8916:6:87"},"nativeSrc":"8916:12:87","nodeType":"YulFunctionCall","src":"8916:12:87"},"nativeSrc":"8916:12:87","nodeType":"YulExpressionStatement","src":"8916:12:87"}]},"condition":{"arguments":[{"name":"offset","nativeSrc":"8886:6:87","nodeType":"YulIdentifier","src":"8886:6:87"},{"kind":"number","nativeSrc":"8894:18:87","nodeType":"YulLiteral","src":"8894:18:87","type":"","value":"0xffffffffffffffff"}],"functionName":{"name":"gt","nativeSrc":"8883:2:87","nodeType":"YulIdentifier","src":"8883:2:87"},"nativeSrc":"8883:30:87","nodeType":"YulFunctionCall","src":"8883:30:87"},"nativeSrc":"8880:50:87","nodeType":"YulIf","src":"8880:50:87"},{"nativeSrc":"8939:32:87","nodeType":"YulVariableDeclaration","src":"8939:32:87","value":{"arguments":[{"name":"headStart","nativeSrc":"8953:9:87","nodeType":"YulIdentifier","src":"8953:9:87"},{"name":"offset","nativeSrc":"8964:6:87","nodeType":"YulIdentifier","src":"8964:6:87"}],"functionName":{"name":"add","nativeSrc":"8949:3:87","nodeType":"YulIdentifier","src":"8949:3:87"},"nativeSrc":"8949:22:87","nodeType":"YulFunctionCall","src":"8949:22:87"},"variables":[{"name":"_1","nativeSrc":"8943:2:87","nodeType":"YulTypedName","src":"8943:2:87","type":""}]},{"body":{"nativeSrc":"9011:16:87","nodeType":"YulBlock","src":"9011:16:87","statements":[{"expression":{"arguments":[{"kind":"number","nativeSrc":"9020:1:87","nodeType":"YulLiteral","src":"9020:1:87","type":"","value":"0"},{"kind":"number","nativeSrc":"9023:1:87","nodeType":"YulLiteral","src":"9023:1:87","type":"","value":"0"}],"functionName":{"name":"revert","nativeSrc":"9013:6:87","nodeType":"YulIdentifier","src":"9013:6:87"},"nativeSrc":"9013:12:87","nodeType":"YulFunctionCall","src":"9013:12:87"},"nativeSrc":"9013:12:87","nodeType":"YulExpressionStatement","src":"9013:12:87"}]},"condition":{"arguments":[{"arguments":[{"name":"dataEnd","nativeSrc":"8991:7:87","nodeType":"YulIdentifier","src":"8991:7:87"},{"name":"_1","nativeSrc":"9000:2:87","nodeType":"YulIdentifier","src":"9000:2:87"}],"functionName":{"name":"sub","nativeSrc":"8987:3:87","nodeType":"YulIdentifier","src":"8987:3:87"},"nativeSrc":"8987:16:87","nodeType":"YulFunctionCall","src":"8987:16:87"},{"kind":"number","nativeSrc":"9005:4:87","nodeType":"YulLiteral","src":"9005:4:87","type":"","value":"0x60"}],"functionName":{"name":"slt","nativeSrc":"8983:3:87","nodeType":"YulIdentifier","src":"8983:3:87"},"nativeSrc":"8983:27:87","nodeType":"YulFunctionCall","src":"8983:27:87"},"nativeSrc":"8980:47:87","nodeType":"YulIf","src":"8980:47:87"},{"nativeSrc":"9036:35:87","nodeType":"YulVariableDeclaration","src":"9036:35:87","value":{"arguments":[],"functionName":{"name":"allocate_memory_1590","nativeSrc":"9049:20:87","nodeType":"YulIdentifier","src":"9049:20:87"},"nativeSrc":"9049:22:87","nodeType":"YulFunctionCall","src":"9049:22:87"},"variables":[{"name":"value","nativeSrc":"9040:5:87","nodeType":"YulTypedName","src":"9040:5:87","type":""}]},{"nativeSrc":"9080:24:87","nodeType":"YulVariableDeclaration","src":"9080:24:87","value":{"arguments":[{"name":"_1","nativeSrc":"9101:2:87","nodeType":"YulIdentifier","src":"9101:2:87"}],"functionName":{"name":"mload","nativeSrc":"9095:5:87","nodeType":"YulIdentifier","src":"9095:5:87"},"nativeSrc":"9095:9:87","nodeType":"YulFunctionCall","src":"9095:9:87"},"variables":[{"name":"value_1","nativeSrc":"9084:7:87","nodeType":"YulTypedName","src":"9084:7:87","type":""}]},{"body":{"nativeSrc":"9139:16:87","nodeType":"YulBlock","src":"9139:16:87","statements":[{"expression":{"arguments":[{"kind":"number","nativeSrc":"9148:1:87","nodeType":"YulLiteral","src":"9148:1:87","type":"","value":"0"},{"kind":"number","nativeSrc":"9151:1:87","nodeType":"YulLiteral","src":"9151:1:87","type":"","value":"0"}],"functionName":{"name":"revert","nativeSrc":"9141:6:87","nodeType":"YulIdentifier","src":"9141:6:87"},"nativeSrc":"9141:12:87","nodeType":"YulFunctionCall","src":"9141:12:87"},"nativeSrc":"9141:12:87","nodeType":"YulExpressionStatement","src":"9141:12:87"}]},"condition":{"arguments":[{"arguments":[{"name":"value_1","nativeSrc":"9126:7:87","nodeType":"YulIdentifier","src":"9126:7:87"},{"kind":"number","nativeSrc":"9135:1:87","nodeType":"YulLiteral","src":"9135:1:87","type":"","value":"3"}],"functionName":{"name":"lt","nativeSrc":"9123:2:87","nodeType":"YulIdentifier","src":"9123:2:87"},"nativeSrc":"9123:14:87","nodeType":"YulFunctionCall","src":"9123:14:87"}],"functionName":{"name":"iszero","nativeSrc":"9116:6:87","nodeType":"YulIdentifier","src":"9116:6:87"},"nativeSrc":"9116:22:87","nodeType":"YulFunctionCall","src":"9116:22:87"},"nativeSrc":"9113:42:87","nodeType":"YulIf","src":"9113:42:87"},{"expression":{"arguments":[{"name":"value","nativeSrc":"9171:5:87","nodeType":"YulIdentifier","src":"9171:5:87"},{"name":"value_1","nativeSrc":"9178:7:87","nodeType":"YulIdentifier","src":"9178:7:87"}],"functionName":{"name":"mstore","nativeSrc":"9164:6:87","nodeType":"YulIdentifier","src":"9164:6:87"},"nativeSrc":"9164:22:87","nodeType":"YulFunctionCall","src":"9164:22:87"},"nativeSrc":"9164:22:87","nodeType":"YulExpressionStatement","src":"9164:22:87"},{"nativeSrc":"9195:16:87","nodeType":"YulVariableDeclaration","src":"9195:16:87","value":{"kind":"number","nativeSrc":"9210:1:87","nodeType":"YulLiteral","src":"9210:1:87","type":"","value":"0"},"variables":[{"name":"value_2","nativeSrc":"9199:7:87","nodeType":"YulTypedName","src":"9199:7:87","type":""}]},{"nativeSrc":"9220:29:87","nodeType":"YulAssignment","src":"9220:29:87","value":{"arguments":[{"arguments":[{"name":"_1","nativeSrc":"9241:2:87","nodeType":"YulIdentifier","src":"9241:2:87"},{"kind":"number","nativeSrc":"9245:2:87","nodeType":"YulLiteral","src":"9245:2:87","type":"","value":"32"}],"functionName":{"name":"add","nativeSrc":"9237:3:87","nodeType":"YulIdentifier","src":"9237:3:87"},"nativeSrc":"9237:11:87","nodeType":"YulFunctionCall","src":"9237:11:87"}],"functionName":{"name":"mload","nativeSrc":"9231:5:87","nodeType":"YulIdentifier","src":"9231:5:87"},"nativeSrc":"9231:18:87","nodeType":"YulFunctionCall","src":"9231:18:87"},"variableNames":[{"name":"value_2","nativeSrc":"9220:7:87","nodeType":"YulIdentifier","src":"9220:7:87"}]},{"expression":{"arguments":[{"arguments":[{"name":"value","nativeSrc":"9269:5:87","nodeType":"YulIdentifier","src":"9269:5:87"},{"kind":"number","nativeSrc":"9276:2:87","nodeType":"YulLiteral","src":"9276:2:87","type":"","value":"32"}],"functionName":{"name":"add","nativeSrc":"9265:3:87","nodeType":"YulIdentifier","src":"9265:3:87"},"nativeSrc":"9265:14:87","nodeType":"YulFunctionCall","src":"9265:14:87"},{"name":"value_2","nativeSrc":"9281:7:87","nodeType":"YulIdentifier","src":"9281:7:87"}],"functionName":{"name":"mstore","nativeSrc":"9258:6:87","nodeType":"YulIdentifier","src":"9258:6:87"},"nativeSrc":"9258:31:87","nodeType":"YulFunctionCall","src":"9258:31:87"},"nativeSrc":"9258:31:87","nodeType":"YulExpressionStatement","src":"9258:31:87"},{"nativeSrc":"9298:34:87","nodeType":"YulVariableDeclaration","src":"9298:34:87","value":{"arguments":[{"arguments":[{"name":"_1","nativeSrc":"9324:2:87","nodeType":"YulIdentifier","src":"9324:2:87"},{"kind":"number","nativeSrc":"9328:2:87","nodeType":"YulLiteral","src":"9328:2:87","type":"","value":"64"}],"functionName":{"name":"add","nativeSrc":"9320:3:87","nodeType":"YulIdentifier","src":"9320:3:87"},"nativeSrc":"9320:11:87","nodeType":"YulFunctionCall","src":"9320:11:87"}],"functionName":{"name":"mload","nativeSrc":"9314:5:87","nodeType":"YulIdentifier","src":"9314:5:87"},"nativeSrc":"9314:18:87","nodeType":"YulFunctionCall","src":"9314:18:87"},"variables":[{"name":"offset_1","nativeSrc":"9302:8:87","nodeType":"YulTypedName","src":"9302:8:87","type":""}]},{"body":{"nativeSrc":"9377:16:87","nodeType":"YulBlock","src":"9377:16:87","statements":[{"expression":{"arguments":[{"kind":"number","nativeSrc":"9386:1:87","nodeType":"YulLiteral","src":"9386:1:87","type":"","value":"0"},{"kind":"number","nativeSrc":"9389:1:87","nodeType":"YulLiteral","src":"9389:1:87","type":"","value":"0"}],"functionName":{"name":"revert","nativeSrc":"9379:6:87","nodeType":"YulIdentifier","src":"9379:6:87"},"nativeSrc":"9379:12:87","nodeType":"YulFunctionCall","src":"9379:12:87"},"nativeSrc":"9379:12:87","nodeType":"YulExpressionStatement","src":"9379:12:87"}]},"condition":{"arguments":[{"name":"offset_1","nativeSrc":"9347:8:87","nodeType":"YulIdentifier","src":"9347:8:87"},{"kind":"number","nativeSrc":"9357:18:87","nodeType":"YulLiteral","src":"9357:18:87","type":"","value":"0xffffffffffffffff"}],"functionName":{"name":"gt","nativeSrc":"9344:2:87","nodeType":"YulIdentifier","src":"9344:2:87"},"nativeSrc":"9344:32:87","nodeType":"YulFunctionCall","src":"9344:32:87"},"nativeSrc":"9341:52:87","nodeType":"YulIf","src":"9341:52:87"},{"expression":{"arguments":[{"arguments":[{"name":"value","nativeSrc":"9413:5:87","nodeType":"YulIdentifier","src":"9413:5:87"},{"kind":"number","nativeSrc":"9420:2:87","nodeType":"YulLiteral","src":"9420:2:87","type":"","value":"64"}],"functionName":{"name":"add","nativeSrc":"9409:3:87","nodeType":"YulIdentifier","src":"9409:3:87"},"nativeSrc":"9409:14:87","nodeType":"YulFunctionCall","src":"9409:14:87"},{"arguments":[{"arguments":[{"name":"_1","nativeSrc":"9457:2:87","nodeType":"YulIdentifier","src":"9457:2:87"},{"name":"offset_1","nativeSrc":"9461:8:87","nodeType":"YulIdentifier","src":"9461:8:87"}],"functionName":{"name":"add","nativeSrc":"9453:3:87","nodeType":"YulIdentifier","src":"9453:3:87"},"nativeSrc":"9453:17:87","nodeType":"YulFunctionCall","src":"9453:17:87"},{"name":"dataEnd","nativeSrc":"9472:7:87","nodeType":"YulIdentifier","src":"9472:7:87"}],"functionName":{"name":"abi_decode_bytes_fromMemory","nativeSrc":"9425:27:87","nodeType":"YulIdentifier","src":"9425:27:87"},"nativeSrc":"9425:55:87","nodeType":"YulFunctionCall","src":"9425:55:87"}],"functionName":{"name":"mstore","nativeSrc":"9402:6:87","nodeType":"YulIdentifier","src":"9402:6:87"},"nativeSrc":"9402:79:87","nodeType":"YulFunctionCall","src":"9402:79:87"},"nativeSrc":"9402:79:87","nodeType":"YulExpressionStatement","src":"9402:79:87"},{"nativeSrc":"9490:15:87","nodeType":"YulAssignment","src":"9490:15:87","value":{"name":"value","nativeSrc":"9500:5:87","nodeType":"YulIdentifier","src":"9500:5:87"},"variableNames":[{"name":"value0","nativeSrc":"9490:6:87","nodeType":"YulIdentifier","src":"9490:6:87"}]}]},"name":"abi_decode_tuple_t_struct$_SwapConfig_$1113_memory_ptr_fromMemory","nativeSrc":"8661:850:87","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nativeSrc":"8736:9:87","nodeType":"YulTypedName","src":"8736:9:87","type":""},{"name":"dataEnd","nativeSrc":"8747:7:87","nodeType":"YulTypedName","src":"8747:7:87","type":""}],"returnVariables":[{"name":"value0","nativeSrc":"8759:6:87","nodeType":"YulTypedName","src":"8759:6:87","type":""}],"src":"8661:850:87"},{"body":{"nativeSrc":"9793:337:87","nodeType":"YulBlock","src":"9793:337:87","statements":[{"expression":{"arguments":[{"name":"headStart","nativeSrc":"9810:9:87","nodeType":"YulIdentifier","src":"9810:9:87"},{"kind":"number","nativeSrc":"9821:3:87","nodeType":"YulLiteral","src":"9821:3:87","type":"","value":"160"}],"functionName":{"name":"mstore","nativeSrc":"9803:6:87","nodeType":"YulIdentifier","src":"9803:6:87"},"nativeSrc":"9803:22:87","nodeType":"YulFunctionCall","src":"9803:22:87"},"nativeSrc":"9803:22:87","nodeType":"YulExpressionStatement","src":"9803:22:87"},{"nativeSrc":"9834:65:87","nodeType":"YulAssignment","src":"9834:65:87","value":{"arguments":[{"name":"value0","nativeSrc":"9871:6:87","nodeType":"YulIdentifier","src":"9871:6:87"},{"arguments":[{"name":"headStart","nativeSrc":"9883:9:87","nodeType":"YulIdentifier","src":"9883:9:87"},{"kind":"number","nativeSrc":"9894:3:87","nodeType":"YulLiteral","src":"9894:3:87","type":"","value":"160"}],"functionName":{"name":"add","nativeSrc":"9879:3:87","nodeType":"YulIdentifier","src":"9879:3:87"},"nativeSrc":"9879:19:87","nodeType":"YulFunctionCall","src":"9879:19:87"}],"functionName":{"name":"abi_encode_struct_SwapConfig","nativeSrc":"9842:28:87","nodeType":"YulIdentifier","src":"9842:28:87"},"nativeSrc":"9842:57:87","nodeType":"YulFunctionCall","src":"9842:57:87"},"variableNames":[{"name":"tail","nativeSrc":"9834:4:87","nodeType":"YulIdentifier","src":"9834:4:87"}]},{"expression":{"arguments":[{"arguments":[{"name":"headStart","nativeSrc":"9919:9:87","nodeType":"YulIdentifier","src":"9919:9:87"},{"kind":"number","nativeSrc":"9930:2:87","nodeType":"YulLiteral","src":"9930:2:87","type":"","value":"32"}],"functionName":{"name":"add","nativeSrc":"9915:3:87","nodeType":"YulIdentifier","src":"9915:3:87"},"nativeSrc":"9915:18:87","nodeType":"YulFunctionCall","src":"9915:18:87"},{"arguments":[{"name":"value1","nativeSrc":"9939:6:87","nodeType":"YulIdentifier","src":"9939:6:87"},{"arguments":[{"arguments":[{"kind":"number","nativeSrc":"9955:3:87","nodeType":"YulLiteral","src":"9955:3:87","type":"","value":"160"},{"kind":"number","nativeSrc":"9960:1:87","nodeType":"YulLiteral","src":"9960:1:87","type":"","value":"1"}],"functionName":{"name":"shl","nativeSrc":"9951:3:87","nodeType":"YulIdentifier","src":"9951:3:87"},"nativeSrc":"9951:11:87","nodeType":"YulFunctionCall","src":"9951:11:87"},{"kind":"number","nativeSrc":"9964:1:87","nodeType":"YulLiteral","src":"9964:1:87","type":"","value":"1"}],"functionName":{"name":"sub","nativeSrc":"9947:3:87","nodeType":"YulIdentifier","src":"9947:3:87"},"nativeSrc":"9947:19:87","nodeType":"YulFunctionCall","src":"9947:19:87"}],"functionName":{"name":"and","nativeSrc":"9935:3:87","nodeType":"YulIdentifier","src":"9935:3:87"},"nativeSrc":"9935:32:87","nodeType":"YulFunctionCall","src":"9935:32:87"}],"functionName":{"name":"mstore","nativeSrc":"9908:6:87","nodeType":"YulIdentifier","src":"9908:6:87"},"nativeSrc":"9908:60:87","nodeType":"YulFunctionCall","src":"9908:60:87"},"nativeSrc":"9908:60:87","nodeType":"YulExpressionStatement","src":"9908:60:87"},{"expression":{"arguments":[{"arguments":[{"name":"headStart","nativeSrc":"9988:9:87","nodeType":"YulIdentifier","src":"9988:9:87"},{"kind":"number","nativeSrc":"9999:2:87","nodeType":"YulLiteral","src":"9999:2:87","type":"","value":"64"}],"functionName":{"name":"add","nativeSrc":"9984:3:87","nodeType":"YulIdentifier","src":"9984:3:87"},"nativeSrc":"9984:18:87","nodeType":"YulFunctionCall","src":"9984:18:87"},{"arguments":[{"name":"value2","nativeSrc":"10008:6:87","nodeType":"YulIdentifier","src":"10008:6:87"},{"arguments":[{"arguments":[{"kind":"number","nativeSrc":"10024:3:87","nodeType":"YulLiteral","src":"10024:3:87","type":"","value":"160"},{"kind":"number","nativeSrc":"10029:1:87","nodeType":"YulLiteral","src":"10029:1:87","type":"","value":"1"}],"functionName":{"name":"shl","nativeSrc":"10020:3:87","nodeType":"YulIdentifier","src":"10020:3:87"},"nativeSrc":"10020:11:87","nodeType":"YulFunctionCall","src":"10020:11:87"},{"kind":"number","nativeSrc":"10033:1:87","nodeType":"YulLiteral","src":"10033:1:87","type":"","value":"1"}],"functionName":{"name":"sub","nativeSrc":"10016:3:87","nodeType":"YulIdentifier","src":"10016:3:87"},"nativeSrc":"10016:19:87","nodeType":"YulFunctionCall","src":"10016:19:87"}],"functionName":{"name":"and","nativeSrc":"10004:3:87","nodeType":"YulIdentifier","src":"10004:3:87"},"nativeSrc":"10004:32:87","nodeType":"YulFunctionCall","src":"10004:32:87"}],"functionName":{"name":"mstore","nativeSrc":"9977:6:87","nodeType":"YulIdentifier","src":"9977:6:87"},"nativeSrc":"9977:60:87","nodeType":"YulFunctionCall","src":"9977:60:87"},"nativeSrc":"9977:60:87","nodeType":"YulExpressionStatement","src":"9977:60:87"},{"expression":{"arguments":[{"arguments":[{"name":"headStart","nativeSrc":"10057:9:87","nodeType":"YulIdentifier","src":"10057:9:87"},{"kind":"number","nativeSrc":"10068:2:87","nodeType":"YulLiteral","src":"10068:2:87","type":"","value":"96"}],"functionName":{"name":"add","nativeSrc":"10053:3:87","nodeType":"YulIdentifier","src":"10053:3:87"},"nativeSrc":"10053:18:87","nodeType":"YulFunctionCall","src":"10053:18:87"},{"name":"value3","nativeSrc":"10073:6:87","nodeType":"YulIdentifier","src":"10073:6:87"}],"functionName":{"name":"mstore","nativeSrc":"10046:6:87","nodeType":"YulIdentifier","src":"10046:6:87"},"nativeSrc":"10046:34:87","nodeType":"YulFunctionCall","src":"10046:34:87"},"nativeSrc":"10046:34:87","nodeType":"YulExpressionStatement","src":"10046:34:87"},{"expression":{"arguments":[{"arguments":[{"name":"headStart","nativeSrc":"10100:9:87","nodeType":"YulIdentifier","src":"10100:9:87"},{"kind":"number","nativeSrc":"10111:3:87","nodeType":"YulLiteral","src":"10111:3:87","type":"","value":"128"}],"functionName":{"name":"add","nativeSrc":"10096:3:87","nodeType":"YulIdentifier","src":"10096:3:87"},"nativeSrc":"10096:19:87","nodeType":"YulFunctionCall","src":"10096:19:87"},{"name":"value4","nativeSrc":"10117:6:87","nodeType":"YulIdentifier","src":"10117:6:87"}],"functionName":{"name":"mstore","nativeSrc":"10089:6:87","nodeType":"YulIdentifier","src":"10089:6:87"},"nativeSrc":"10089:35:87","nodeType":"YulFunctionCall","src":"10089:35:87"},"nativeSrc":"10089:35:87","nodeType":"YulExpressionStatement","src":"10089:35:87"}]},"name":"abi_encode_tuple_t_struct$_SwapConfig_$1113_memory_ptr_t_address_t_address_t_uint256_t_uint256__to_t_struct$_SwapConfig_$1113_memory_ptr_t_address_t_address_t_uint256_t_uint256__fromStack_library_reversed","nativeSrc":"9516:614:87","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nativeSrc":"9730:9:87","nodeType":"YulTypedName","src":"9730:9:87","type":""},{"name":"value4","nativeSrc":"9741:6:87","nodeType":"YulTypedName","src":"9741:6:87","type":""},{"name":"value3","nativeSrc":"9749:6:87","nodeType":"YulTypedName","src":"9749:6:87","type":""},{"name":"value2","nativeSrc":"9757:6:87","nodeType":"YulTypedName","src":"9757:6:87","type":""},{"name":"value1","nativeSrc":"9765:6:87","nodeType":"YulTypedName","src":"9765:6:87","type":""},{"name":"value0","nativeSrc":"9773:6:87","nodeType":"YulTypedName","src":"9773:6:87","type":""}],"returnVariables":[{"name":"tail","nativeSrc":"9784:4:87","nodeType":"YulTypedName","src":"9784:4:87","type":""}],"src":"9516:614:87"},{"body":{"nativeSrc":"10292:188:87","nodeType":"YulBlock","src":"10292:188:87","statements":[{"nativeSrc":"10302:26:87","nodeType":"YulAssignment","src":"10302:26:87","value":{"arguments":[{"name":"headStart","nativeSrc":"10314:9:87","nodeType":"YulIdentifier","src":"10314:9:87"},{"kind":"number","nativeSrc":"10325:2:87","nodeType":"YulLiteral","src":"10325:2:87","type":"","value":"96"}],"functionName":{"name":"add","nativeSrc":"10310:3:87","nodeType":"YulIdentifier","src":"10310:3:87"},"nativeSrc":"10310:18:87","nodeType":"YulFunctionCall","src":"10310:18:87"},"variableNames":[{"name":"tail","nativeSrc":"10302:4:87","nodeType":"YulIdentifier","src":"10302:4:87"}]},{"expression":{"arguments":[{"name":"headStart","nativeSrc":"10344:9:87","nodeType":"YulIdentifier","src":"10344:9:87"},{"arguments":[{"name":"value0","nativeSrc":"10359:6:87","nodeType":"YulIdentifier","src":"10359:6:87"},{"arguments":[{"arguments":[{"kind":"number","nativeSrc":"10375:3:87","nodeType":"YulLiteral","src":"10375:3:87","type":"","value":"160"},{"kind":"number","nativeSrc":"10380:1:87","nodeType":"YulLiteral","src":"10380:1:87","type":"","value":"1"}],"functionName":{"name":"shl","nativeSrc":"10371:3:87","nodeType":"YulIdentifier","src":"10371:3:87"},"nativeSrc":"10371:11:87","nodeType":"YulFunctionCall","src":"10371:11:87"},{"kind":"number","nativeSrc":"10384:1:87","nodeType":"YulLiteral","src":"10384:1:87","type":"","value":"1"}],"functionName":{"name":"sub","nativeSrc":"10367:3:87","nodeType":"YulIdentifier","src":"10367:3:87"},"nativeSrc":"10367:19:87","nodeType":"YulFunctionCall","src":"10367:19:87"}],"functionName":{"name":"and","nativeSrc":"10355:3:87","nodeType":"YulIdentifier","src":"10355:3:87"},"nativeSrc":"10355:32:87","nodeType":"YulFunctionCall","src":"10355:32:87"}],"functionName":{"name":"mstore","nativeSrc":"10337:6:87","nodeType":"YulIdentifier","src":"10337:6:87"},"nativeSrc":"10337:51:87","nodeType":"YulFunctionCall","src":"10337:51:87"},"nativeSrc":"10337:51:87","nodeType":"YulExpressionStatement","src":"10337:51:87"},{"expression":{"arguments":[{"arguments":[{"name":"headStart","nativeSrc":"10408:9:87","nodeType":"YulIdentifier","src":"10408:9:87"},{"kind":"number","nativeSrc":"10419:2:87","nodeType":"YulLiteral","src":"10419:2:87","type":"","value":"32"}],"functionName":{"name":"add","nativeSrc":"10404:3:87","nodeType":"YulIdentifier","src":"10404:3:87"},"nativeSrc":"10404:18:87","nodeType":"YulFunctionCall","src":"10404:18:87"},{"name":"value1","nativeSrc":"10424:6:87","nodeType":"YulIdentifier","src":"10424:6:87"}],"functionName":{"name":"mstore","nativeSrc":"10397:6:87","nodeType":"YulIdentifier","src":"10397:6:87"},"nativeSrc":"10397:34:87","nodeType":"YulFunctionCall","src":"10397:34:87"},"nativeSrc":"10397:34:87","nodeType":"YulExpressionStatement","src":"10397:34:87"},{"expression":{"arguments":[{"arguments":[{"name":"headStart","nativeSrc":"10451:9:87","nodeType":"YulIdentifier","src":"10451:9:87"},{"kind":"number","nativeSrc":"10462:2:87","nodeType":"YulLiteral","src":"10462:2:87","type":"","value":"64"}],"functionName":{"name":"add","nativeSrc":"10447:3:87","nodeType":"YulIdentifier","src":"10447:3:87"},"nativeSrc":"10447:18:87","nodeType":"YulFunctionCall","src":"10447:18:87"},{"name":"value2","nativeSrc":"10467:6:87","nodeType":"YulIdentifier","src":"10467:6:87"}],"functionName":{"name":"mstore","nativeSrc":"10440:6:87","nodeType":"YulIdentifier","src":"10440:6:87"},"nativeSrc":"10440:34:87","nodeType":"YulFunctionCall","src":"10440:34:87"},"nativeSrc":"10440:34:87","nodeType":"YulExpressionStatement","src":"10440:34:87"}]},"name":"abi_encode_tuple_t_address_t_uint256_t_uint256__to_t_address_t_uint256_t_uint256__fromStack_reversed","nativeSrc":"10135:345:87","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nativeSrc":"10245:9:87","nodeType":"YulTypedName","src":"10245:9:87","type":""},{"name":"value2","nativeSrc":"10256:6:87","nodeType":"YulTypedName","src":"10256:6:87","type":""},{"name":"value1","nativeSrc":"10264:6:87","nodeType":"YulTypedName","src":"10264:6:87","type":""},{"name":"value0","nativeSrc":"10272:6:87","nodeType":"YulTypedName","src":"10272:6:87","type":""}],"returnVariables":[{"name":"tail","nativeSrc":"10283:4:87","nodeType":"YulTypedName","src":"10283:4:87","type":""}],"src":"10135:345:87"},{"body":{"nativeSrc":"10575:245:87","nodeType":"YulBlock","src":"10575:245:87","statements":[{"body":{"nativeSrc":"10621:16:87","nodeType":"YulBlock","src":"10621:16:87","statements":[{"expression":{"arguments":[{"kind":"number","nativeSrc":"10630:1:87","nodeType":"YulLiteral","src":"10630:1:87","type":"","value":"0"},{"kind":"number","nativeSrc":"10633:1:87","nodeType":"YulLiteral","src":"10633:1:87","type":"","value":"0"}],"functionName":{"name":"revert","nativeSrc":"10623:6:87","nodeType":"YulIdentifier","src":"10623:6:87"},"nativeSrc":"10623:12:87","nodeType":"YulFunctionCall","src":"10623:12:87"},"nativeSrc":"10623:12:87","nodeType":"YulExpressionStatement","src":"10623:12:87"}]},"condition":{"arguments":[{"arguments":[{"name":"dataEnd","nativeSrc":"10596:7:87","nodeType":"YulIdentifier","src":"10596:7:87"},{"name":"headStart","nativeSrc":"10605:9:87","nodeType":"YulIdentifier","src":"10605:9:87"}],"functionName":{"name":"sub","nativeSrc":"10592:3:87","nodeType":"YulIdentifier","src":"10592:3:87"},"nativeSrc":"10592:23:87","nodeType":"YulFunctionCall","src":"10592:23:87"},{"kind":"number","nativeSrc":"10617:2:87","nodeType":"YulLiteral","src":"10617:2:87","type":"","value":"32"}],"functionName":{"name":"slt","nativeSrc":"10588:3:87","nodeType":"YulIdentifier","src":"10588:3:87"},"nativeSrc":"10588:32:87","nodeType":"YulFunctionCall","src":"10588:32:87"},"nativeSrc":"10585:52:87","nodeType":"YulIf","src":"10585:52:87"},{"nativeSrc":"10646:30:87","nodeType":"YulVariableDeclaration","src":"10646:30:87","value":{"arguments":[{"name":"headStart","nativeSrc":"10666:9:87","nodeType":"YulIdentifier","src":"10666:9:87"}],"functionName":{"name":"mload","nativeSrc":"10660:5:87","nodeType":"YulIdentifier","src":"10660:5:87"},"nativeSrc":"10660:16:87","nodeType":"YulFunctionCall","src":"10660:16:87"},"variables":[{"name":"offset","nativeSrc":"10650:6:87","nodeType":"YulTypedName","src":"10650:6:87","type":""}]},{"body":{"nativeSrc":"10719:16:87","nodeType":"YulBlock","src":"10719:16:87","statements":[{"expression":{"arguments":[{"kind":"number","nativeSrc":"10728:1:87","nodeType":"YulLiteral","src":"10728:1:87","type":"","value":"0"},{"kind":"number","nativeSrc":"10731:1:87","nodeType":"YulLiteral","src":"10731:1:87","type":"","value":"0"}],"functionName":{"name":"revert","nativeSrc":"10721:6:87","nodeType":"YulIdentifier","src":"10721:6:87"},"nativeSrc":"10721:12:87","nodeType":"YulFunctionCall","src":"10721:12:87"},"nativeSrc":"10721:12:87","nodeType":"YulExpressionStatement","src":"10721:12:87"}]},"condition":{"arguments":[{"name":"offset","nativeSrc":"10691:6:87","nodeType":"YulIdentifier","src":"10691:6:87"},{"kind":"number","nativeSrc":"10699:18:87","nodeType":"YulLiteral","src":"10699:18:87","type":"","value":"0xffffffffffffffff"}],"functionName":{"name":"gt","nativeSrc":"10688:2:87","nodeType":"YulIdentifier","src":"10688:2:87"},"nativeSrc":"10688:30:87","nodeType":"YulFunctionCall","src":"10688:30:87"},"nativeSrc":"10685:50:87","nodeType":"YulIf","src":"10685:50:87"},{"nativeSrc":"10744:70:87","nodeType":"YulAssignment","src":"10744:70:87","value":{"arguments":[{"arguments":[{"name":"headStart","nativeSrc":"10786:9:87","nodeType":"YulIdentifier","src":"10786:9:87"},{"name":"offset","nativeSrc":"10797:6:87","nodeType":"YulIdentifier","src":"10797:6:87"}],"functionName":{"name":"add","nativeSrc":"10782:3:87","nodeType":"YulIdentifier","src":"10782:3:87"},"nativeSrc":"10782:22:87","nodeType":"YulFunctionCall","src":"10782:22:87"},{"name":"dataEnd","nativeSrc":"10806:7:87","nodeType":"YulIdentifier","src":"10806:7:87"}],"functionName":{"name":"abi_decode_bytes_fromMemory","nativeSrc":"10754:27:87","nodeType":"YulIdentifier","src":"10754:27:87"},"nativeSrc":"10754:60:87","nodeType":"YulFunctionCall","src":"10754:60:87"},"variableNames":[{"name":"value0","nativeSrc":"10744:6:87","nodeType":"YulIdentifier","src":"10744:6:87"}]}]},"name":"abi_decode_tuple_t_bytes_memory_ptr_fromMemory","nativeSrc":"10485:335:87","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nativeSrc":"10541:9:87","nodeType":"YulTypedName","src":"10541:9:87","type":""},{"name":"dataEnd","nativeSrc":"10552:7:87","nodeType":"YulTypedName","src":"10552:7:87","type":""}],"returnVariables":[{"name":"value0","nativeSrc":"10564:6:87","nodeType":"YulTypedName","src":"10564:6:87","type":""}],"src":"10485:335:87"},{"body":{"nativeSrc":"10990:110:87","nodeType":"YulBlock","src":"10990:110:87","statements":[{"expression":{"arguments":[{"name":"headStart","nativeSrc":"11007:9:87","nodeType":"YulIdentifier","src":"11007:9:87"},{"kind":"number","nativeSrc":"11018:2:87","nodeType":"YulLiteral","src":"11018:2:87","type":"","value":"32"}],"functionName":{"name":"mstore","nativeSrc":"11000:6:87","nodeType":"YulIdentifier","src":"11000:6:87"},"nativeSrc":"11000:21:87","nodeType":"YulFunctionCall","src":"11000:21:87"},"nativeSrc":"11000:21:87","nodeType":"YulExpressionStatement","src":"11000:21:87"},{"nativeSrc":"11030:64:87","nodeType":"YulAssignment","src":"11030:64:87","value":{"arguments":[{"name":"value0","nativeSrc":"11067:6:87","nodeType":"YulIdentifier","src":"11067:6:87"},{"arguments":[{"name":"headStart","nativeSrc":"11079:9:87","nodeType":"YulIdentifier","src":"11079:9:87"},{"kind":"number","nativeSrc":"11090:2:87","nodeType":"YulLiteral","src":"11090:2:87","type":"","value":"32"}],"functionName":{"name":"add","nativeSrc":"11075:3:87","nodeType":"YulIdentifier","src":"11075:3:87"},"nativeSrc":"11075:18:87","nodeType":"YulFunctionCall","src":"11075:18:87"}],"functionName":{"name":"abi_encode_struct_SwapConfig","nativeSrc":"11038:28:87","nodeType":"YulIdentifier","src":"11038:28:87"},"nativeSrc":"11038:56:87","nodeType":"YulFunctionCall","src":"11038:56:87"},"variableNames":[{"name":"tail","nativeSrc":"11030:4:87","nodeType":"YulIdentifier","src":"11030:4:87"}]}]},"name":"abi_encode_tuple_t_struct$_SwapConfig_$1113_memory_ptr__to_t_struct$_SwapConfig_$1113_memory_ptr__fromStack_library_reversed","nativeSrc":"10825:275:87","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nativeSrc":"10959:9:87","nodeType":"YulTypedName","src":"10959:9:87","type":""},{"name":"value0","nativeSrc":"10970:6:87","nodeType":"YulTypedName","src":"10970:6:87","type":""}],"returnVariables":[{"name":"tail","nativeSrc":"10981:4:87","nodeType":"YulTypedName","src":"10981:4:87","type":""}],"src":"10825:275:87"},{"body":{"nativeSrc":"11346:236:87","nodeType":"YulBlock","src":"11346:236:87","statements":[{"expression":{"arguments":[{"name":"headStart","nativeSrc":"11363:9:87","nodeType":"YulIdentifier","src":"11363:9:87"},{"kind":"number","nativeSrc":"11374:2:87","nodeType":"YulLiteral","src":"11374:2:87","type":"","value":"64"}],"functionName":{"name":"mstore","nativeSrc":"11356:6:87","nodeType":"YulIdentifier","src":"11356:6:87"},"nativeSrc":"11356:21:87","nodeType":"YulFunctionCall","src":"11356:21:87"},"nativeSrc":"11356:21:87","nodeType":"YulExpressionStatement","src":"11356:21:87"},{"nativeSrc":"11386:70:87","nodeType":"YulVariableDeclaration","src":"11386:70:87","value":{"arguments":[{"name":"value0","nativeSrc":"11429:6:87","nodeType":"YulIdentifier","src":"11429:6:87"},{"arguments":[{"name":"headStart","nativeSrc":"11441:9:87","nodeType":"YulIdentifier","src":"11441:9:87"},{"kind":"number","nativeSrc":"11452:2:87","nodeType":"YulLiteral","src":"11452:2:87","type":"","value":"64"}],"functionName":{"name":"add","nativeSrc":"11437:3:87","nodeType":"YulIdentifier","src":"11437:3:87"},"nativeSrc":"11437:18:87","nodeType":"YulFunctionCall","src":"11437:18:87"}],"functionName":{"name":"abi_encode_struct_SwapConfig","nativeSrc":"11400:28:87","nodeType":"YulIdentifier","src":"11400:28:87"},"nativeSrc":"11400:56:87","nodeType":"YulFunctionCall","src":"11400:56:87"},"variables":[{"name":"tail_1","nativeSrc":"11390:6:87","nodeType":"YulTypedName","src":"11390:6:87","type":""}]},{"expression":{"arguments":[{"arguments":[{"name":"headStart","nativeSrc":"11476:9:87","nodeType":"YulIdentifier","src":"11476:9:87"},{"kind":"number","nativeSrc":"11487:2:87","nodeType":"YulLiteral","src":"11487:2:87","type":"","value":"32"}],"functionName":{"name":"add","nativeSrc":"11472:3:87","nodeType":"YulIdentifier","src":"11472:3:87"},"nativeSrc":"11472:18:87","nodeType":"YulFunctionCall","src":"11472:18:87"},{"arguments":[{"name":"tail_1","nativeSrc":"11496:6:87","nodeType":"YulIdentifier","src":"11496:6:87"},{"name":"headStart","nativeSrc":"11504:9:87","nodeType":"YulIdentifier","src":"11504:9:87"}],"functionName":{"name":"sub","nativeSrc":"11492:3:87","nodeType":"YulIdentifier","src":"11492:3:87"},"nativeSrc":"11492:22:87","nodeType":"YulFunctionCall","src":"11492:22:87"}],"functionName":{"name":"mstore","nativeSrc":"11465:6:87","nodeType":"YulIdentifier","src":"11465:6:87"},"nativeSrc":"11465:50:87","nodeType":"YulFunctionCall","src":"11465:50:87"},"nativeSrc":"11465:50:87","nodeType":"YulExpressionStatement","src":"11465:50:87"},{"nativeSrc":"11524:52:87","nodeType":"YulAssignment","src":"11524:52:87","value":{"arguments":[{"name":"value1","nativeSrc":"11561:6:87","nodeType":"YulIdentifier","src":"11561:6:87"},{"name":"tail_1","nativeSrc":"11569:6:87","nodeType":"YulIdentifier","src":"11569:6:87"}],"functionName":{"name":"abi_encode_struct_SwapConfig","nativeSrc":"11532:28:87","nodeType":"YulIdentifier","src":"11532:28:87"},"nativeSrc":"11532:44:87","nodeType":"YulFunctionCall","src":"11532:44:87"},"variableNames":[{"name":"tail","nativeSrc":"11524:4:87","nodeType":"YulIdentifier","src":"11524:4:87"}]}]},"name":"abi_encode_tuple_t_struct$_SwapConfig_$1113_memory_ptr_t_struct$_SwapConfig_$1113_memory_ptr__to_t_struct$_SwapConfig_$1113_memory_ptr_t_struct$_SwapConfig_$1113_memory_ptr__fromStack_reversed","nativeSrc":"11105:477:87","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nativeSrc":"11307:9:87","nodeType":"YulTypedName","src":"11307:9:87","type":""},{"name":"value1","nativeSrc":"11318:6:87","nodeType":"YulTypedName","src":"11318:6:87","type":""},{"name":"value0","nativeSrc":"11326:6:87","nodeType":"YulTypedName","src":"11326:6:87","type":""}],"returnVariables":[{"name":"tail","nativeSrc":"11337:4:87","nodeType":"YulTypedName","src":"11337:4:87","type":""}],"src":"11105:477:87"},{"body":{"nativeSrc":"11642:65:87","nodeType":"YulBlock","src":"11642:65:87","statements":[{"expression":{"arguments":[{"kind":"number","nativeSrc":"11659:1:87","nodeType":"YulLiteral","src":"11659:1:87","type":"","value":"0"},{"name":"ptr","nativeSrc":"11662:3:87","nodeType":"YulIdentifier","src":"11662:3:87"}],"functionName":{"name":"mstore","nativeSrc":"11652:6:87","nodeType":"YulIdentifier","src":"11652:6:87"},"nativeSrc":"11652:14:87","nodeType":"YulFunctionCall","src":"11652:14:87"},"nativeSrc":"11652:14:87","nodeType":"YulExpressionStatement","src":"11652:14:87"},{"nativeSrc":"11675:26:87","nodeType":"YulAssignment","src":"11675:26:87","value":{"arguments":[{"kind":"number","nativeSrc":"11693:1:87","nodeType":"YulLiteral","src":"11693:1:87","type":"","value":"0"},{"kind":"number","nativeSrc":"11696:4:87","nodeType":"YulLiteral","src":"11696:4:87","type":"","value":"0x20"}],"functionName":{"name":"keccak256","nativeSrc":"11683:9:87","nodeType":"YulIdentifier","src":"11683:9:87"},"nativeSrc":"11683:18:87","nodeType":"YulFunctionCall","src":"11683:18:87"},"variableNames":[{"name":"data","nativeSrc":"11675:4:87","nodeType":"YulIdentifier","src":"11675:4:87"}]}]},"name":"array_dataslot_bytes_storage","nativeSrc":"11587:120:87","nodeType":"YulFunctionDefinition","parameters":[{"name":"ptr","nativeSrc":"11625:3:87","nodeType":"YulTypedName","src":"11625:3:87","type":""}],"returnVariables":[{"name":"data","nativeSrc":"11633:4:87","nodeType":"YulTypedName","src":"11633:4:87","type":""}],"src":"11587:120:87"},{"body":{"nativeSrc":"11792:437:87","nodeType":"YulBlock","src":"11792:437:87","statements":[{"body":{"nativeSrc":"11825:398:87","nodeType":"YulBlock","src":"11825:398:87","statements":[{"expression":{"arguments":[{"kind":"number","nativeSrc":"11846:1:87","nodeType":"YulLiteral","src":"11846:1:87","type":"","value":"0"},{"name":"array","nativeSrc":"11849:5:87","nodeType":"YulIdentifier","src":"11849:5:87"}],"functionName":{"name":"mstore","nativeSrc":"11839:6:87","nodeType":"YulIdentifier","src":"11839:6:87"},"nativeSrc":"11839:16:87","nodeType":"YulFunctionCall","src":"11839:16:87"},"nativeSrc":"11839:16:87","nodeType":"YulExpressionStatement","src":"11839:16:87"},{"nativeSrc":"11868:30:87","nodeType":"YulVariableDeclaration","src":"11868:30:87","value":{"arguments":[{"kind":"number","nativeSrc":"11890:1:87","nodeType":"YulLiteral","src":"11890:1:87","type":"","value":"0"},{"kind":"number","nativeSrc":"11893:4:87","nodeType":"YulLiteral","src":"11893:4:87","type":"","value":"0x20"}],"functionName":{"name":"keccak256","nativeSrc":"11880:9:87","nodeType":"YulIdentifier","src":"11880:9:87"},"nativeSrc":"11880:18:87","nodeType":"YulFunctionCall","src":"11880:18:87"},"variables":[{"name":"data","nativeSrc":"11872:4:87","nodeType":"YulTypedName","src":"11872:4:87","type":""}]},{"nativeSrc":"11911:57:87","nodeType":"YulVariableDeclaration","src":"11911:57:87","value":{"arguments":[{"name":"data","nativeSrc":"11934:4:87","nodeType":"YulIdentifier","src":"11934:4:87"},{"arguments":[{"kind":"number","nativeSrc":"11944:1:87","nodeType":"YulLiteral","src":"11944:1:87","type":"","value":"5"},{"arguments":[{"name":"startIndex","nativeSrc":"11951:10:87","nodeType":"YulIdentifier","src":"11951:10:87"},{"kind":"number","nativeSrc":"11963:2:87","nodeType":"YulLiteral","src":"11963:2:87","type":"","value":"31"}],"functionName":{"name":"add","nativeSrc":"11947:3:87","nodeType":"YulIdentifier","src":"11947:3:87"},"nativeSrc":"11947:19:87","nodeType":"YulFunctionCall","src":"11947:19:87"}],"functionName":{"name":"shr","nativeSrc":"11940:3:87","nodeType":"YulIdentifier","src":"11940:3:87"},"nativeSrc":"11940:27:87","nodeType":"YulFunctionCall","src":"11940:27:87"}],"functionName":{"name":"add","nativeSrc":"11930:3:87","nodeType":"YulIdentifier","src":"11930:3:87"},"nativeSrc":"11930:38:87","nodeType":"YulFunctionCall","src":"11930:38:87"},"variables":[{"name":"deleteStart","nativeSrc":"11915:11:87","nodeType":"YulTypedName","src":"11915:11:87","type":""}]},{"body":{"nativeSrc":"12005:23:87","nodeType":"YulBlock","src":"12005:23:87","statements":[{"nativeSrc":"12007:19:87","nodeType":"YulAssignment","src":"12007:19:87","value":{"name":"data","nativeSrc":"12022:4:87","nodeType":"YulIdentifier","src":"12022:4:87"},"variableNames":[{"name":"deleteStart","nativeSrc":"12007:11:87","nodeType":"YulIdentifier","src":"12007:11:87"}]}]},"condition":{"arguments":[{"name":"startIndex","nativeSrc":"11987:10:87","nodeType":"YulIdentifier","src":"11987:10:87"},{"kind":"number","nativeSrc":"11999:4:87","nodeType":"YulLiteral","src":"11999:4:87","type":"","value":"0x20"}],"functionName":{"name":"lt","nativeSrc":"11984:2:87","nodeType":"YulIdentifier","src":"11984:2:87"},"nativeSrc":"11984:20:87","nodeType":"YulFunctionCall","src":"11984:20:87"},"nativeSrc":"11981:47:87","nodeType":"YulIf","src":"11981:47:87"},{"nativeSrc":"12041:41:87","nodeType":"YulVariableDeclaration","src":"12041:41:87","value":{"arguments":[{"name":"data","nativeSrc":"12055:4:87","nodeType":"YulIdentifier","src":"12055:4:87"},{"arguments":[{"kind":"number","nativeSrc":"12065:1:87","nodeType":"YulLiteral","src":"12065:1:87","type":"","value":"5"},{"arguments":[{"name":"len","nativeSrc":"12072:3:87","nodeType":"YulIdentifier","src":"12072:3:87"},{"kind":"number","nativeSrc":"12077:2:87","nodeType":"YulLiteral","src":"12077:2:87","type":"","value":"31"}],"functionName":{"name":"add","nativeSrc":"12068:3:87","nodeType":"YulIdentifier","src":"12068:3:87"},"nativeSrc":"12068:12:87","nodeType":"YulFunctionCall","src":"12068:12:87"}],"functionName":{"name":"shr","nativeSrc":"12061:3:87","nodeType":"YulIdentifier","src":"12061:3:87"},"nativeSrc":"12061:20:87","nodeType":"YulFunctionCall","src":"12061:20:87"}],"functionName":{"name":"add","nativeSrc":"12051:3:87","nodeType":"YulIdentifier","src":"12051:3:87"},"nativeSrc":"12051:31:87","nodeType":"YulFunctionCall","src":"12051:31:87"},"variables":[{"name":"_1","nativeSrc":"12045:2:87","nodeType":"YulTypedName","src":"12045:2:87","type":""}]},{"nativeSrc":"12095:24:87","nodeType":"YulVariableDeclaration","src":"12095:24:87","value":{"name":"deleteStart","nativeSrc":"12108:11:87","nodeType":"YulIdentifier","src":"12108:11:87"},"variables":[{"name":"start","nativeSrc":"12099:5:87","nodeType":"YulTypedName","src":"12099:5:87","type":""}]},{"body":{"nativeSrc":"12193:20:87","nodeType":"YulBlock","src":"12193:20:87","statements":[{"expression":{"arguments":[{"name":"start","nativeSrc":"12202:5:87","nodeType":"YulIdentifier","src":"12202:5:87"},{"kind":"number","nativeSrc":"12209:1:87","nodeType":"YulLiteral","src":"12209:1:87","type":"","value":"0"}],"functionName":{"name":"sstore","nativeSrc":"12195:6:87","nodeType":"YulIdentifier","src":"12195:6:87"},"nativeSrc":"12195:16:87","nodeType":"YulFunctionCall","src":"12195:16:87"},"nativeSrc":"12195:16:87","nodeType":"YulExpressionStatement","src":"12195:16:87"}]},"condition":{"arguments":[{"name":"start","nativeSrc":"12143:5:87","nodeType":"YulIdentifier","src":"12143:5:87"},{"name":"_1","nativeSrc":"12150:2:87","nodeType":"YulIdentifier","src":"12150:2:87"}],"functionName":{"name":"lt","nativeSrc":"12140:2:87","nodeType":"YulIdentifier","src":"12140:2:87"},"nativeSrc":"12140:13:87","nodeType":"YulFunctionCall","src":"12140:13:87"},"nativeSrc":"12132:81:87","nodeType":"YulForLoop","post":{"nativeSrc":"12154:26:87","nodeType":"YulBlock","src":"12154:26:87","statements":[{"nativeSrc":"12156:22:87","nodeType":"YulAssignment","src":"12156:22:87","value":{"arguments":[{"name":"start","nativeSrc":"12169:5:87","nodeType":"YulIdentifier","src":"12169:5:87"},{"kind":"number","nativeSrc":"12176:1:87","nodeType":"YulLiteral","src":"12176:1:87","type":"","value":"1"}],"functionName":{"name":"add","nativeSrc":"12165:3:87","nodeType":"YulIdentifier","src":"12165:3:87"},"nativeSrc":"12165:13:87","nodeType":"YulFunctionCall","src":"12165:13:87"},"variableNames":[{"name":"start","nativeSrc":"12156:5:87","nodeType":"YulIdentifier","src":"12156:5:87"}]}]},"pre":{"nativeSrc":"12136:3:87","nodeType":"YulBlock","src":"12136:3:87","statements":[]},"src":"12132:81:87"}]},"condition":{"arguments":[{"name":"len","nativeSrc":"11808:3:87","nodeType":"YulIdentifier","src":"11808:3:87"},{"kind":"number","nativeSrc":"11813:2:87","nodeType":"YulLiteral","src":"11813:2:87","type":"","value":"31"}],"functionName":{"name":"gt","nativeSrc":"11805:2:87","nodeType":"YulIdentifier","src":"11805:2:87"},"nativeSrc":"11805:11:87","nodeType":"YulFunctionCall","src":"11805:11:87"},"nativeSrc":"11802:421:87","nodeType":"YulIf","src":"11802:421:87"}]},"name":"clean_up_bytearray_end_slots_bytes_storage","nativeSrc":"11712:517:87","nodeType":"YulFunctionDefinition","parameters":[{"name":"array","nativeSrc":"11764:5:87","nodeType":"YulTypedName","src":"11764:5:87","type":""},{"name":"len","nativeSrc":"11771:3:87","nodeType":"YulTypedName","src":"11771:3:87","type":""},{"name":"startIndex","nativeSrc":"11776:10:87","nodeType":"YulTypedName","src":"11776:10:87","type":""}],"src":"11712:517:87"},{"body":{"nativeSrc":"12319:81:87","nodeType":"YulBlock","src":"12319:81:87","statements":[{"nativeSrc":"12329:65:87","nodeType":"YulAssignment","src":"12329:65:87","value":{"arguments":[{"arguments":[{"name":"data","nativeSrc":"12344:4:87","nodeType":"YulIdentifier","src":"12344:4:87"},{"arguments":[{"arguments":[{"arguments":[{"kind":"number","nativeSrc":"12362:1:87","nodeType":"YulLiteral","src":"12362:1:87","type":"","value":"3"},{"name":"len","nativeSrc":"12365:3:87","nodeType":"YulIdentifier","src":"12365:3:87"}],"functionName":{"name":"shl","nativeSrc":"12358:3:87","nodeType":"YulIdentifier","src":"12358:3:87"},"nativeSrc":"12358:11:87","nodeType":"YulFunctionCall","src":"12358:11:87"},{"arguments":[{"kind":"number","nativeSrc":"12375:1:87","nodeType":"YulLiteral","src":"12375:1:87","type":"","value":"0"}],"functionName":{"name":"not","nativeSrc":"12371:3:87","nodeType":"YulIdentifier","src":"12371:3:87"},"nativeSrc":"12371:6:87","nodeType":"YulFunctionCall","src":"12371:6:87"}],"functionName":{"name":"shr","nativeSrc":"12354:3:87","nodeType":"YulIdentifier","src":"12354:3:87"},"nativeSrc":"12354:24:87","nodeType":"YulFunctionCall","src":"12354:24:87"}],"functionName":{"name":"not","nativeSrc":"12350:3:87","nodeType":"YulIdentifier","src":"12350:3:87"},"nativeSrc":"12350:29:87","nodeType":"YulFunctionCall","src":"12350:29:87"}],"functionName":{"name":"and","nativeSrc":"12340:3:87","nodeType":"YulIdentifier","src":"12340:3:87"},"nativeSrc":"12340:40:87","nodeType":"YulFunctionCall","src":"12340:40:87"},{"arguments":[{"kind":"number","nativeSrc":"12386:1:87","nodeType":"YulLiteral","src":"12386:1:87","type":"","value":"1"},{"name":"len","nativeSrc":"12389:3:87","nodeType":"YulIdentifier","src":"12389:3:87"}],"functionName":{"name":"shl","nativeSrc":"12382:3:87","nodeType":"YulIdentifier","src":"12382:3:87"},"nativeSrc":"12382:11:87","nodeType":"YulFunctionCall","src":"12382:11:87"}],"functionName":{"name":"or","nativeSrc":"12337:2:87","nodeType":"YulIdentifier","src":"12337:2:87"},"nativeSrc":"12337:57:87","nodeType":"YulFunctionCall","src":"12337:57:87"},"variableNames":[{"name":"used","nativeSrc":"12329:4:87","nodeType":"YulIdentifier","src":"12329:4:87"}]}]},"name":"extract_used_part_and_set_length_of_short_byte_array","nativeSrc":"12234:166:87","nodeType":"YulFunctionDefinition","parameters":[{"name":"data","nativeSrc":"12296:4:87","nodeType":"YulTypedName","src":"12296:4:87","type":""},{"name":"len","nativeSrc":"12302:3:87","nodeType":"YulTypedName","src":"12302:3:87","type":""}],"returnVariables":[{"name":"used","nativeSrc":"12310:4:87","nodeType":"YulTypedName","src":"12310:4:87","type":""}],"src":"12234:166:87"},{"body":{"nativeSrc":"12499:1201:87","nodeType":"YulBlock","src":"12499:1201:87","statements":[{"nativeSrc":"12509:24:87","nodeType":"YulVariableDeclaration","src":"12509:24:87","value":{"arguments":[{"name":"src","nativeSrc":"12529:3:87","nodeType":"YulIdentifier","src":"12529:3:87"}],"functionName":{"name":"mload","nativeSrc":"12523:5:87","nodeType":"YulIdentifier","src":"12523:5:87"},"nativeSrc":"12523:10:87","nodeType":"YulFunctionCall","src":"12523:10:87"},"variables":[{"name":"newLen","nativeSrc":"12513:6:87","nodeType":"YulTypedName","src":"12513:6:87","type":""}]},{"body":{"nativeSrc":"12576:22:87","nodeType":"YulBlock","src":"12576:22:87","statements":[{"expression":{"arguments":[],"functionName":{"name":"panic_error_0x41","nativeSrc":"12578:16:87","nodeType":"YulIdentifier","src":"12578:16:87"},"nativeSrc":"12578:18:87","nodeType":"YulFunctionCall","src":"12578:18:87"},"nativeSrc":"12578:18:87","nodeType":"YulExpressionStatement","src":"12578:18:87"}]},"condition":{"arguments":[{"name":"newLen","nativeSrc":"12548:6:87","nodeType":"YulIdentifier","src":"12548:6:87"},{"kind":"number","nativeSrc":"12556:18:87","nodeType":"YulLiteral","src":"12556:18:87","type":"","value":"0xffffffffffffffff"}],"functionName":{"name":"gt","nativeSrc":"12545:2:87","nodeType":"YulIdentifier","src":"12545:2:87"},"nativeSrc":"12545:30:87","nodeType":"YulFunctionCall","src":"12545:30:87"},"nativeSrc":"12542:56:87","nodeType":"YulIf","src":"12542:56:87"},{"expression":{"arguments":[{"name":"slot","nativeSrc":"12650:4:87","nodeType":"YulIdentifier","src":"12650:4:87"},{"arguments":[{"arguments":[{"name":"slot","nativeSrc":"12688:4:87","nodeType":"YulIdentifier","src":"12688:4:87"}],"functionName":{"name":"sload","nativeSrc":"12682:5:87","nodeType":"YulIdentifier","src":"12682:5:87"},"nativeSrc":"12682:11:87","nodeType":"YulFunctionCall","src":"12682:11:87"}],"functionName":{"name":"extract_byte_array_length","nativeSrc":"12656:25:87","nodeType":"YulIdentifier","src":"12656:25:87"},"nativeSrc":"12656:38:87","nodeType":"YulFunctionCall","src":"12656:38:87"},{"name":"newLen","nativeSrc":"12696:6:87","nodeType":"YulIdentifier","src":"12696:6:87"}],"functionName":{"name":"clean_up_bytearray_end_slots_bytes_storage","nativeSrc":"12607:42:87","nodeType":"YulIdentifier","src":"12607:42:87"},"nativeSrc":"12607:96:87","nodeType":"YulFunctionCall","src":"12607:96:87"},"nativeSrc":"12607:96:87","nodeType":"YulExpressionStatement","src":"12607:96:87"},{"nativeSrc":"12712:18:87","nodeType":"YulVariableDeclaration","src":"12712:18:87","value":{"kind":"number","nativeSrc":"12729:1:87","nodeType":"YulLiteral","src":"12729:1:87","type":"","value":"0"},"variables":[{"name":"srcOffset","nativeSrc":"12716:9:87","nodeType":"YulTypedName","src":"12716:9:87","type":""}]},{"nativeSrc":"12739:17:87","nodeType":"YulAssignment","src":"12739:17:87","value":{"kind":"number","nativeSrc":"12752:4:87","nodeType":"YulLiteral","src":"12752:4:87","type":"","value":"0x20"},"variableNames":[{"name":"srcOffset","nativeSrc":"12739:9:87","nodeType":"YulIdentifier","src":"12739:9:87"}]},{"cases":[{"body":{"nativeSrc":"12802:641:87","nodeType":"YulBlock","src":"12802:641:87","statements":[{"nativeSrc":"12816:35:87","nodeType":"YulVariableDeclaration","src":"12816:35:87","value":{"arguments":[{"name":"newLen","nativeSrc":"12835:6:87","nodeType":"YulIdentifier","src":"12835:6:87"},{"arguments":[{"kind":"number","nativeSrc":"12847:2:87","nodeType":"YulLiteral","src":"12847:2:87","type":"","value":"31"}],"functionName":{"name":"not","nativeSrc":"12843:3:87","nodeType":"YulIdentifier","src":"12843:3:87"},"nativeSrc":"12843:7:87","nodeType":"YulFunctionCall","src":"12843:7:87"}],"functionName":{"name":"and","nativeSrc":"12831:3:87","nodeType":"YulIdentifier","src":"12831:3:87"},"nativeSrc":"12831:20:87","nodeType":"YulFunctionCall","src":"12831:20:87"},"variables":[{"name":"loopEnd","nativeSrc":"12820:7:87","nodeType":"YulTypedName","src":"12820:7:87","type":""}]},{"nativeSrc":"12864:48:87","nodeType":"YulVariableDeclaration","src":"12864:48:87","value":{"arguments":[{"name":"slot","nativeSrc":"12907:4:87","nodeType":"YulIdentifier","src":"12907:4:87"}],"functionName":{"name":"array_dataslot_bytes_storage","nativeSrc":"12878:28:87","nodeType":"YulIdentifier","src":"12878:28:87"},"nativeSrc":"12878:34:87","nodeType":"YulFunctionCall","src":"12878:34:87"},"variables":[{"name":"dstPtr","nativeSrc":"12868:6:87","nodeType":"YulTypedName","src":"12868:6:87","type":""}]},{"nativeSrc":"12925:10:87","nodeType":"YulVariableDeclaration","src":"12925:10:87","value":{"kind":"number","nativeSrc":"12934:1:87","nodeType":"YulLiteral","src":"12934:1:87","type":"","value":"0"},"variables":[{"name":"i","nativeSrc":"12929:1:87","nodeType":"YulTypedName","src":"12929:1:87","type":""}]},{"body":{"nativeSrc":"13005:165:87","nodeType":"YulBlock","src":"13005:165:87","statements":[{"expression":{"arguments":[{"name":"dstPtr","nativeSrc":"13030:6:87","nodeType":"YulIdentifier","src":"13030:6:87"},{"arguments":[{"arguments":[{"name":"src","nativeSrc":"13048:3:87","nodeType":"YulIdentifier","src":"13048:3:87"},{"name":"srcOffset","nativeSrc":"13053:9:87","nodeType":"YulIdentifier","src":"13053:9:87"}],"functionName":{"name":"add","nativeSrc":"13044:3:87","nodeType":"YulIdentifier","src":"13044:3:87"},"nativeSrc":"13044:19:87","nodeType":"YulFunctionCall","src":"13044:19:87"}],"functionName":{"name":"mload","nativeSrc":"13038:5:87","nodeType":"YulIdentifier","src":"13038:5:87"},"nativeSrc":"13038:26:87","nodeType":"YulFunctionCall","src":"13038:26:87"}],"functionName":{"name":"sstore","nativeSrc":"13023:6:87","nodeType":"YulIdentifier","src":"13023:6:87"},"nativeSrc":"13023:42:87","nodeType":"YulFunctionCall","src":"13023:42:87"},"nativeSrc":"13023:42:87","nodeType":"YulExpressionStatement","src":"13023:42:87"},{"nativeSrc":"13082:24:87","nodeType":"YulAssignment","src":"13082:24:87","value":{"arguments":[{"name":"dstPtr","nativeSrc":"13096:6:87","nodeType":"YulIdentifier","src":"13096:6:87"},{"kind":"number","nativeSrc":"13104:1:87","nodeType":"YulLiteral","src":"13104:1:87","type":"","value":"1"}],"functionName":{"name":"add","nativeSrc":"13092:3:87","nodeType":"YulIdentifier","src":"13092:3:87"},"nativeSrc":"13092:14:87","nodeType":"YulFunctionCall","src":"13092:14:87"},"variableNames":[{"name":"dstPtr","nativeSrc":"13082:6:87","nodeType":"YulIdentifier","src":"13082:6:87"}]},{"nativeSrc":"13123:33:87","nodeType":"YulAssignment","src":"13123:33:87","value":{"arguments":[{"name":"srcOffset","nativeSrc":"13140:9:87","nodeType":"YulIdentifier","src":"13140:9:87"},{"kind":"number","nativeSrc":"13151:4:87","nodeType":"YulLiteral","src":"13151:4:87","type":"","value":"0x20"}],"functionName":{"name":"add","nativeSrc":"13136:3:87","nodeType":"YulIdentifier","src":"13136:3:87"},"nativeSrc":"13136:20:87","nodeType":"YulFunctionCall","src":"13136:20:87"},"variableNames":[{"name":"srcOffset","nativeSrc":"13123:9:87","nodeType":"YulIdentifier","src":"13123:9:87"}]}]},"condition":{"arguments":[{"name":"i","nativeSrc":"12959:1:87","nodeType":"YulIdentifier","src":"12959:1:87"},{"name":"loopEnd","nativeSrc":"12962:7:87","nodeType":"YulIdentifier","src":"12962:7:87"}],"functionName":{"name":"lt","nativeSrc":"12956:2:87","nodeType":"YulIdentifier","src":"12956:2:87"},"nativeSrc":"12956:14:87","nodeType":"YulFunctionCall","src":"12956:14:87"},"nativeSrc":"12948:222:87","nodeType":"YulForLoop","post":{"nativeSrc":"12971:21:87","nodeType":"YulBlock","src":"12971:21:87","statements":[{"nativeSrc":"12973:17:87","nodeType":"YulAssignment","src":"12973:17:87","value":{"arguments":[{"name":"i","nativeSrc":"12982:1:87","nodeType":"YulIdentifier","src":"12982:1:87"},{"kind":"number","nativeSrc":"12985:4:87","nodeType":"YulLiteral","src":"12985:4:87","type":"","value":"0x20"}],"functionName":{"name":"add","nativeSrc":"12978:3:87","nodeType":"YulIdentifier","src":"12978:3:87"},"nativeSrc":"12978:12:87","nodeType":"YulFunctionCall","src":"12978:12:87"},"variableNames":[{"name":"i","nativeSrc":"12973:1:87","nodeType":"YulIdentifier","src":"12973:1:87"}]}]},"pre":{"nativeSrc":"12952:3:87","nodeType":"YulBlock","src":"12952:3:87","statements":[]},"src":"12948:222:87"},{"body":{"nativeSrc":"13218:166:87","nodeType":"YulBlock","src":"13218:166:87","statements":[{"nativeSrc":"13236:43:87","nodeType":"YulVariableDeclaration","src":"13236:43:87","value":{"arguments":[{"arguments":[{"name":"src","nativeSrc":"13263:3:87","nodeType":"YulIdentifier","src":"13263:3:87"},{"name":"srcOffset","nativeSrc":"13268:9:87","nodeType":"YulIdentifier","src":"13268:9:87"}],"functionName":{"name":"add","nativeSrc":"13259:3:87","nodeType":"YulIdentifier","src":"13259:3:87"},"nativeSrc":"13259:19:87","nodeType":"YulFunctionCall","src":"13259:19:87"}],"functionName":{"name":"mload","nativeSrc":"13253:5:87","nodeType":"YulIdentifier","src":"13253:5:87"},"nativeSrc":"13253:26:87","nodeType":"YulFunctionCall","src":"13253:26:87"},"variables":[{"name":"lastValue","nativeSrc":"13240:9:87","nodeType":"YulTypedName","src":"13240:9:87","type":""}]},{"expression":{"arguments":[{"name":"dstPtr","nativeSrc":"13303:6:87","nodeType":"YulIdentifier","src":"13303:6:87"},{"arguments":[{"name":"lastValue","nativeSrc":"13315:9:87","nodeType":"YulIdentifier","src":"13315:9:87"},{"arguments":[{"arguments":[{"arguments":[{"arguments":[{"kind":"number","nativeSrc":"13342:1:87","nodeType":"YulLiteral","src":"13342:1:87","type":"","value":"3"},{"name":"newLen","nativeSrc":"13345:6:87","nodeType":"YulIdentifier","src":"13345:6:87"}],"functionName":{"name":"shl","nativeSrc":"13338:3:87","nodeType":"YulIdentifier","src":"13338:3:87"},"nativeSrc":"13338:14:87","nodeType":"YulFunctionCall","src":"13338:14:87"},{"kind":"number","nativeSrc":"13354:3:87","nodeType":"YulLiteral","src":"13354:3:87","type":"","value":"248"}],"functionName":{"name":"and","nativeSrc":"13334:3:87","nodeType":"YulIdentifier","src":"13334:3:87"},"nativeSrc":"13334:24:87","nodeType":"YulFunctionCall","src":"13334:24:87"},{"arguments":[{"kind":"number","nativeSrc":"13364:1:87","nodeType":"YulLiteral","src":"13364:1:87","type":"","value":"0"}],"functionName":{"name":"not","nativeSrc":"13360:3:87","nodeType":"YulIdentifier","src":"13360:3:87"},"nativeSrc":"13360:6:87","nodeType":"YulFunctionCall","src":"13360:6:87"}],"functionName":{"name":"shr","nativeSrc":"13330:3:87","nodeType":"YulIdentifier","src":"13330:3:87"},"nativeSrc":"13330:37:87","nodeType":"YulFunctionCall","src":"13330:37:87"}],"functionName":{"name":"not","nativeSrc":"13326:3:87","nodeType":"YulIdentifier","src":"13326:3:87"},"nativeSrc":"13326:42:87","nodeType":"YulFunctionCall","src":"13326:42:87"}],"functionName":{"name":"and","nativeSrc":"13311:3:87","nodeType":"YulIdentifier","src":"13311:3:87"},"nativeSrc":"13311:58:87","nodeType":"YulFunctionCall","src":"13311:58:87"}],"functionName":{"name":"sstore","nativeSrc":"13296:6:87","nodeType":"YulIdentifier","src":"13296:6:87"},"nativeSrc":"13296:74:87","nodeType":"YulFunctionCall","src":"13296:74:87"},"nativeSrc":"13296:74:87","nodeType":"YulExpressionStatement","src":"13296:74:87"}]},"condition":{"arguments":[{"name":"loopEnd","nativeSrc":"13189:7:87","nodeType":"YulIdentifier","src":"13189:7:87"},{"name":"newLen","nativeSrc":"13198:6:87","nodeType":"YulIdentifier","src":"13198:6:87"}],"functionName":{"name":"lt","nativeSrc":"13186:2:87","nodeType":"YulIdentifier","src":"13186:2:87"},"nativeSrc":"13186:19:87","nodeType":"YulFunctionCall","src":"13186:19:87"},"nativeSrc":"13183:201:87","nodeType":"YulIf","src":"13183:201:87"},{"expression":{"arguments":[{"name":"slot","nativeSrc":"13404:4:87","nodeType":"YulIdentifier","src":"13404:4:87"},{"arguments":[{"arguments":[{"kind":"number","nativeSrc":"13418:1:87","nodeType":"YulLiteral","src":"13418:1:87","type":"","value":"1"},{"name":"newLen","nativeSrc":"13421:6:87","nodeType":"YulIdentifier","src":"13421:6:87"}],"functionName":{"name":"shl","nativeSrc":"13414:3:87","nodeType":"YulIdentifier","src":"13414:3:87"},"nativeSrc":"13414:14:87","nodeType":"YulFunctionCall","src":"13414:14:87"},{"kind":"number","nativeSrc":"13430:1:87","nodeType":"YulLiteral","src":"13430:1:87","type":"","value":"1"}],"functionName":{"name":"add","nativeSrc":"13410:3:87","nodeType":"YulIdentifier","src":"13410:3:87"},"nativeSrc":"13410:22:87","nodeType":"YulFunctionCall","src":"13410:22:87"}],"functionName":{"name":"sstore","nativeSrc":"13397:6:87","nodeType":"YulIdentifier","src":"13397:6:87"},"nativeSrc":"13397:36:87","nodeType":"YulFunctionCall","src":"13397:36:87"},"nativeSrc":"13397:36:87","nodeType":"YulExpressionStatement","src":"13397:36:87"}]},"nativeSrc":"12795:648:87","nodeType":"YulCase","src":"12795:648:87","value":{"kind":"number","nativeSrc":"12800:1:87","nodeType":"YulLiteral","src":"12800:1:87","type":"","value":"1"}},{"body":{"nativeSrc":"13460:234:87","nodeType":"YulBlock","src":"13460:234:87","statements":[{"nativeSrc":"13474:14:87","nodeType":"YulVariableDeclaration","src":"13474:14:87","value":{"kind":"number","nativeSrc":"13487:1:87","nodeType":"YulLiteral","src":"13487:1:87","type":"","value":"0"},"variables":[{"name":"value","nativeSrc":"13478:5:87","nodeType":"YulTypedName","src":"13478:5:87","type":""}]},{"body":{"nativeSrc":"13523:67:87","nodeType":"YulBlock","src":"13523:67:87","statements":[{"nativeSrc":"13541:35:87","nodeType":"YulAssignment","src":"13541:35:87","value":{"arguments":[{"arguments":[{"name":"src","nativeSrc":"13560:3:87","nodeType":"YulIdentifier","src":"13560:3:87"},{"name":"srcOffset","nativeSrc":"13565:9:87","nodeType":"YulIdentifier","src":"13565:9:87"}],"functionName":{"name":"add","nativeSrc":"13556:3:87","nodeType":"YulIdentifier","src":"13556:3:87"},"nativeSrc":"13556:19:87","nodeType":"YulFunctionCall","src":"13556:19:87"}],"functionName":{"name":"mload","nativeSrc":"13550:5:87","nodeType":"YulIdentifier","src":"13550:5:87"},"nativeSrc":"13550:26:87","nodeType":"YulFunctionCall","src":"13550:26:87"},"variableNames":[{"name":"value","nativeSrc":"13541:5:87","nodeType":"YulIdentifier","src":"13541:5:87"}]}]},"condition":{"name":"newLen","nativeSrc":"13504:6:87","nodeType":"YulIdentifier","src":"13504:6:87"},"nativeSrc":"13501:89:87","nodeType":"YulIf","src":"13501:89:87"},{"expression":{"arguments":[{"name":"slot","nativeSrc":"13610:4:87","nodeType":"YulIdentifier","src":"13610:4:87"},{"arguments":[{"name":"value","nativeSrc":"13669:5:87","nodeType":"YulIdentifier","src":"13669:5:87"},{"name":"newLen","nativeSrc":"13676:6:87","nodeType":"YulIdentifier","src":"13676:6:87"}],"functionName":{"name":"extract_used_part_and_set_length_of_short_byte_array","nativeSrc":"13616:52:87","nodeType":"YulIdentifier","src":"13616:52:87"},"nativeSrc":"13616:67:87","nodeType":"YulFunctionCall","src":"13616:67:87"}],"functionName":{"name":"sstore","nativeSrc":"13603:6:87","nodeType":"YulIdentifier","src":"13603:6:87"},"nativeSrc":"13603:81:87","nodeType":"YulFunctionCall","src":"13603:81:87"},"nativeSrc":"13603:81:87","nodeType":"YulExpressionStatement","src":"13603:81:87"}]},"nativeSrc":"13452:242:87","nodeType":"YulCase","src":"13452:242:87","value":"default"}],"expression":{"arguments":[{"name":"newLen","nativeSrc":"12775:6:87","nodeType":"YulIdentifier","src":"12775:6:87"},{"kind":"number","nativeSrc":"12783:2:87","nodeType":"YulLiteral","src":"12783:2:87","type":"","value":"31"}],"functionName":{"name":"gt","nativeSrc":"12772:2:87","nodeType":"YulIdentifier","src":"12772:2:87"},"nativeSrc":"12772:14:87","nodeType":"YulFunctionCall","src":"12772:14:87"},"nativeSrc":"12765:929:87","nodeType":"YulSwitch","src":"12765:929:87"}]},"name":"copy_byte_array_to_storage_from_t_bytes_memory_ptr_to_t_bytes_storage","nativeSrc":"12405:1295:87","nodeType":"YulFunctionDefinition","parameters":[{"name":"slot","nativeSrc":"12484:4:87","nodeType":"YulTypedName","src":"12484:4:87","type":""},{"name":"src","nativeSrc":"12490:3:87","nodeType":"YulTypedName","src":"12490:3:87","type":""}],"src":"12405:1295:87"}]},"contents":"{\n    { }\n    function panic_error_0x41()\n    {\n        mstore(0, shl(224, 0x4e487b71))\n        mstore(4, 0x41)\n        revert(0, 0x24)\n    }\n    function allocate_memory_1590() -> memPtr\n    {\n        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    }\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, 0xffffffffffffffff), lt(newFreePtr, memPtr)) { panic_error_0x41() }\n        mstore(64, newFreePtr)\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), not(31)), 0x20)\n    }\n    function abi_decode_bytes(offset, end) -> array\n    {\n        if iszero(slt(add(offset, 0x1f), end)) { revert(0, 0) }\n        let length := calldataload(offset)\n        let array_1 := allocate_memory(array_allocation_size_bytes(length))\n        mstore(array_1, length)\n        if gt(add(add(offset, length), 0x20), end) { revert(0, 0) }\n        calldatacopy(add(array_1, 0x20), add(offset, 0x20), length)\n        mstore(add(add(array_1, length), 0x20), 0)\n        array := array_1\n    }\n    function abi_decode_tuple_t_uint8t_bytes_memory_ptr(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, 0xff))) { revert(0, 0) }\n        value0 := value\n        let offset := calldataload(add(headStart, 32))\n        if gt(offset, 0xffffffffffffffff) { revert(0, 0) }\n        value1 := abi_decode_bytes(add(headStart, offset), dataEnd)\n    }\n    function abi_encode_bytes(value, pos) -> end\n    {\n        let length := mload(value)\n        mstore(pos, length)\n        mcopy(add(pos, 0x20), add(value, 0x20), length)\n        mstore(add(add(pos, length), 0x20), 0)\n        end := add(add(pos, and(add(length, 31), not(31))), 0x20)\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_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 validator_revert_address(value)\n    {\n        if iszero(eq(value, and(value, sub(shl(160, 1), 1)))) { 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_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_0x21()\n    {\n        mstore(0, shl(224, 0x4e487b71))\n        mstore(4, 0x21)\n        revert(0, 0x24)\n    }\n    function abi_encode_struct_SwapConfig(value, pos) -> end\n    {\n        let _1 := mload(value)\n        if iszero(lt(_1, 3))\n        {\n            mstore(0, shl(224, 0x4e487b71))\n            mstore(4, 0x21)\n            revert(0, 0x24)\n        }\n        mstore(pos, _1)\n        mstore(add(pos, 0x20), mload(add(value, 0x20)))\n        let memberValue0 := mload(add(value, 0x40))\n        mstore(add(pos, 0x40), 0x60)\n        end := abi_encode_bytes(memberValue0, add(pos, 0x60))\n    }\n    function abi_encode_tuple_t_struct$_SwapConfig_$1113_memory_ptr__to_t_struct$_SwapConfig_$1113_memory_ptr__fromStack_reversed(headStart, value0) -> tail\n    {\n        mstore(headStart, 32)\n        tail := abi_encode_struct_SwapConfig(value0, add(headStart, 32))\n    }\n    function validator_revert_bool(value)\n    {\n        if iszero(eq(value, iszero(iszero(value)))) { revert(0, 0) }\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_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_address__to_t_address__fromStack_reversed(headStart, value0) -> tail\n    {\n        tail := add(headStart, 32)\n        mstore(headStart, and(value0, sub(shl(160, 1), 1)))\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        if gt(offset, 0xffffffffffffffff) { revert(0, 0) }\n        value0 := abi_decode_bytes(add(headStart, offset), 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        let value := 0\n        value := mload(headStart)\n        value0 := value\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, sub(shl(160, 1), 1)))\n        mstore(add(headStart, 32), value1)\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_encode_tuple_t_address_t_address__to_t_address_t_address__fromStack_reversed(headStart, value1, value0) -> tail\n    {\n        tail := add(headStart, 64)\n        mstore(headStart, and(value0, sub(shl(160, 1), 1)))\n        mstore(add(headStart, 32), and(value1, sub(shl(160, 1), 1)))\n    }\n    function abi_decode_tuple_t_struct$_RewardOwed_$20550_memory_ptr_fromMemory(headStart, dataEnd) -> value0\n    {\n        let _1 := slt(sub(dataEnd, headStart), 64)\n        if _1 { revert(0, 0) }\n        _1 := 0\n        let memPtr := 0\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        let value := mload(headStart)\n        validator_revert_address(value)\n        mstore(memPtr, value)\n        let value_1 := 0\n        value_1 := mload(add(headStart, 32))\n        mstore(add(memPtr, 32), value_1)\n        value0 := memPtr\n    }\n    function abi_decode_tuple_t_addresst_uint64t_bool_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        if iszero(eq(value_1, and(value_1, 0xffffffffffffffff))) { revert(0, 0) }\n        value1 := value_1\n        let value_2 := mload(add(headStart, 64))\n        validator_revert_bool(value_2)\n        value2 := value_2\n    }\n    function abi_encode_tuple_t_address_t_address_t_bool__to_t_address_t_address_t_bool__fromStack_reversed(headStart, value2, value1, value0) -> tail\n    {\n        tail := add(headStart, 96)\n        mstore(headStart, and(value0, sub(shl(160, 1), 1)))\n        mstore(add(headStart, 32), and(value1, sub(shl(160, 1), 1)))\n        mstore(add(headStart, 64), iszero(iszero(value2)))\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 abi_decode_bytes_fromMemory(offset, end) -> array\n    {\n        if iszero(slt(add(offset, 0x1f), end)) { revert(0, 0) }\n        let length := mload(offset)\n        let array_1 := allocate_memory(array_allocation_size_bytes(length))\n        mstore(array_1, length)\n        if gt(add(add(offset, length), 0x20), end) { revert(0, 0) }\n        mcopy(add(array_1, 0x20), add(offset, 0x20), length)\n        mstore(add(add(array_1, length), 0x20), 0)\n        array := array_1\n    }\n    function abi_decode_tuple_t_struct$_SwapConfig_$1113_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 slt(sub(dataEnd, _1), 0x60) { revert(0, 0) }\n        let value := allocate_memory_1590()\n        let value_1 := mload(_1)\n        if iszero(lt(value_1, 3)) { revert(0, 0) }\n        mstore(value, value_1)\n        let value_2 := 0\n        value_2 := mload(add(_1, 32))\n        mstore(add(value, 32), value_2)\n        let offset_1 := mload(add(_1, 64))\n        if gt(offset_1, 0xffffffffffffffff) { revert(0, 0) }\n        mstore(add(value, 64), abi_decode_bytes_fromMemory(add(_1, offset_1), dataEnd))\n        value0 := value\n    }\n    function abi_encode_tuple_t_struct$_SwapConfig_$1113_memory_ptr_t_address_t_address_t_uint256_t_uint256__to_t_struct$_SwapConfig_$1113_memory_ptr_t_address_t_address_t_uint256_t_uint256__fromStack_library_reversed(headStart, value4, value3, value2, value1, value0) -> tail\n    {\n        mstore(headStart, 160)\n        tail := abi_encode_struct_SwapConfig(value0, add(headStart, 160))\n        mstore(add(headStart, 32), and(value1, sub(shl(160, 1), 1)))\n        mstore(add(headStart, 64), and(value2, sub(shl(160, 1), 1)))\n        mstore(add(headStart, 96), value3)\n        mstore(add(headStart, 128), value4)\n    }\n    function abi_encode_tuple_t_address_t_uint256_t_uint256__to_t_address_t_uint256_t_uint256__fromStack_reversed(headStart, value2, value1, value0) -> tail\n    {\n        tail := add(headStart, 96)\n        mstore(headStart, and(value0, sub(shl(160, 1), 1)))\n        mstore(add(headStart, 32), value1)\n        mstore(add(headStart, 64), value2)\n    }\n    function abi_decode_tuple_t_bytes_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        value0 := abi_decode_bytes_fromMemory(add(headStart, offset), dataEnd)\n    }\n    function abi_encode_tuple_t_struct$_SwapConfig_$1113_memory_ptr__to_t_struct$_SwapConfig_$1113_memory_ptr__fromStack_library_reversed(headStart, value0) -> tail\n    {\n        mstore(headStart, 32)\n        tail := abi_encode_struct_SwapConfig(value0, add(headStart, 32))\n    }\n    function abi_encode_tuple_t_struct$_SwapConfig_$1113_memory_ptr_t_struct$_SwapConfig_$1113_memory_ptr__to_t_struct$_SwapConfig_$1113_memory_ptr_t_struct$_SwapConfig_$1113_memory_ptr__fromStack_reversed(headStart, value1, value0) -> tail\n    {\n        mstore(headStart, 64)\n        let tail_1 := abi_encode_struct_SwapConfig(value0, add(headStart, 64))\n        mstore(add(headStart, 32), sub(tail_1, headStart))\n        tail := abi_encode_struct_SwapConfig(value1, tail_1)\n    }\n    function array_dataslot_bytes_storage(ptr) -> data\n    {\n        mstore(0, ptr)\n        data := keccak256(0, 0x20)\n    }\n    function clean_up_bytearray_end_slots_bytes_storage(array, len, startIndex)\n    {\n        if gt(len, 31)\n        {\n            mstore(0, array)\n            let data := keccak256(0, 0x20)\n            let deleteStart := add(data, shr(5, add(startIndex, 31)))\n            if lt(startIndex, 0x20) { deleteStart := data }\n            let _1 := add(data, shr(5, add(len, 31)))\n            let start := deleteStart\n            for { } lt(start, _1) { start := add(start, 1) }\n            { sstore(start, 0) }\n        }\n    }\n    function extract_used_part_and_set_length_of_short_byte_array(data, len) -> used\n    {\n        used := or(and(data, not(shr(shl(3, len), not(0)))), shl(1, len))\n    }\n    function copy_byte_array_to_storage_from_t_bytes_memory_ptr_to_t_bytes_storage(slot, src)\n    {\n        let newLen := mload(src)\n        if gt(newLen, 0xffffffffffffffff) { panic_error_0x41() }\n        clean_up_bytearray_end_slots_bytes_storage(slot, extract_byte_array_length(sload(slot)), newLen)\n        let srcOffset := 0\n        srcOffset := 0x20\n        switch gt(newLen, 31)\n        case 1 {\n            let loopEnd := and(newLen, not(31))\n            let dstPtr := array_dataslot_bytes_storage(slot)\n            let i := 0\n            for { } lt(i, loopEnd) { i := add(i, 0x20) }\n            {\n                sstore(dstPtr, mload(add(src, srcOffset)))\n                dstPtr := add(dstPtr, 1)\n                srcOffset := add(srcOffset, 0x20)\n            }\n            if lt(loopEnd, newLen)\n            {\n                let lastValue := mload(add(src, srcOffset))\n                sstore(dstPtr, and(lastValue, not(shr(and(shl(3, newLen), 248), not(0)))))\n            }\n            sstore(slot, add(shl(1, newLen), 1))\n        }\n        default {\n            let value := 0\n            if newLen\n            {\n                value := mload(add(src, srcOffset))\n            }\n            sstore(slot, extract_used_part_and_set_length_of_short_byte_array(value, newLen))\n        }\n    }\n}","id":87,"language":"Yul","name":"#utility.yul"}],"immutableReferences":{"22393":[{"length":32,"start":518},{"length":32,"start":742},{"length":32,"start":1167},{"length":32,"start":1653},{"length":32,"start":1778}],"22399":[{"length":32,"start":321},{"length":32,"start":2575},{"length":32,"start":3236},{"length":32,"start":3635}],"22402":[{"length":32,"start":875},{"length":32,"start":969},{"length":32,"start":1256},{"length":32,"start":1422},{"length":32,"start":1853},{"length":32,"start":2022},{"length":32,"start":2161},{"length":32,"start":2233},{"length":32,"start":2429},{"length":32,"start":3705},{"length":32,"start":3929}],"22405":[{"length":32,"start":1470},{"length":32,"start":2275},{"length":32,"start":2482}],"22407":[{"length":32,"start":372},{"length":32,"start":828},{"length":32,"start":2926},{"length":32,"start":3752},{"length":32,"start":3882}]},"linkReferences":{"@ensuro/swaplibrary/contracts/SwapLibrary.sol":{"SwapLibrary":[{"length":20,"start":2890},{"length":20,"start":3427}]}},"object":"608060405234801561000f575f5ffd5b50600436106100a6575f3560e01c80635b9a4c351161006e5780635b9a4c351461013c5780639c4667a2146101635780639cd47128146101ae578063b6b55f25146101c1578063ce96cb77146101d4578063f3e0ffbf146101e7575f5ffd5b80630981b1c2146100aa5780632e1a7d4d146100d3578063402d267d146100e857806342b054f0146101095780635a11745614610129575b5f5ffd5b6100bd6100b836600461106f565b6101fa565b6040516100ca91906110ef565b60405180910390f35b6100e66100e1366004611101565b6102dc565b005b6100fb6100f636600461112c565b6103c6565b6040519081526020016100ca565b61011c61011736600461112c565b61045b565b6040516100ca91906111a9565b6100e66101373660046111c8565b610485565b6100fb7f000000000000000000000000000000000000000000000000000000000000000081565b61019661017136600461112c565b507f000000000000000000000000000000000000000000000000000000000000000090565b6040516001600160a01b0390911681526020016100ca565b6100e66101bc3660046111e3565b61066b565b6100e66101cf366004611101565b6106e8565b6100fb6101e236600461112c565b61073a565b6100fb6101f536600461112c565b610850565b60606001600160a01b037f000000000000000000000000000000000000000000000000000000000000000016300361024557604051632abf118b60e21b815260040160405180910390fd5b5f8360ff16600181111561025b5761025b611147565b90505f81600181111561027057610270611147565b0361029b575f8380602001905181019061028a9190611215565b9050610295816108a2565b506102c6565b60018160018111156102af576102af611147565b036100a6576102c66102c030610c7a565b84610d3c565b505060408051602081019091525f815292915050565b6001600160a01b037f000000000000000000000000000000000000000000000000000000000000000016300361032557604051632abf118b60e21b815260040160405180910390fd5b60405163f3fef3a360e01b81526001600160a01b037f000000000000000000000000000000000000000000000000000000000000000081166004830152602482018390527f0000000000000000000000000000000000000000000000000000000000000000169063f3fef3a3906044015b5f604051808303815f87803b1580156103ad575f5ffd5b505af11580156103bf573d5f5f3e3d5ffd5b5050505050565b5f7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316630bc47ad16040518163ffffffff1660e01b8152600401602060405180830381865afa158015610423573d5f5f3e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610447919061122c565b1561045357505f919050565b505f19919050565b60408051606080820183525f80835260208301529181019190915261047f82610c7a565b92915050565b6001600160a01b037f00000000000000000000000000000000000000000000000000000000000000001630036104ce57604051632abf118b60e21b815260040160405180910390fd5b80610668576040516370a0823160e01b81523060048201527f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316906370a0823190602401602060405180830381865afa158015610535573d5f5f3e3d5ffd5b505050506040513d601f19601f820116820180604052508101906105599190611215565b15610577576040516342a176d160e11b815260040160405180910390fd5b6040516320f0656b60e11b81526001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000811660048301523060248301525f917f0000000000000000000000000000000000000000000000000000000000000000909116906341e0cad69060440160408051808303815f875af1158015610605573d5f5f3e3d5ffd5b505050506040513d601f19601f820116820180604052508101906106299190611247565b80519091506001600160a01b0316158015906106485750602081015115155b15610666576040516342a176d160e11b815260040160405180910390fd5b505b50565b6001600160a01b037f00000000000000000000000000000000000000000000000000000000000000001630036106b457604051632abf118b60e21b815260040160405180910390fd5b604080516060810190915261066890805f81526020015f815260200160405180602001604052805f81525081525082610d3c565b6001600160a01b037f000000000000000000000000000000000000000000000000000000000000000016300361073157604051632abf118b60e21b815260040160405180910390fd5b61066881610e62565b5f7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03166367800b5f6040518163ffffffff1660e01b8152600401602060405180830381865afa158015610797573d5f5f3e3d5ffd5b505050506040513d601f19601f820116820180604052508101906107bb919061122c565b156107c757505f919050565b6040516370a0823160e01b81526001600160a01b0383811660048301527f000000000000000000000000000000000000000000000000000000000000000016906370a08231906024015b602060405180830381865afa15801561082c573d5f5f3e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061047f9190611215565b6040516370a0823160e01b81526001600160a01b0382811660048301525f917f0000000000000000000000000000000000000000000000000000000000000000909116906370a0823190602401610811565b60405163045136d760e31b81526001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000811660048301525f917f000000000000000000000000000000000000000000000000000000000000000090911690632289b6b8906024016060604051808303815f875af115801561092b573d5f5f3e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061094f919061129f565b50909150506001600160a01b038116610966575050565b604051635b81a7bf60e11b81526001600160a01b037f000000000000000000000000000000000000000000000000000000000000000081166004830152306024830152600160448301527f0000000000000000000000000000000000000000000000000000000000000000169063b7034f7e906064015f604051808303815f87803b1580156109f3575f5ffd5b505af1158015610a05573d5f5f3e3d5ffd5b505050505f610a317f000000000000000000000000000000000000000000000000000000000000000090565b8054610a3c906112f5565b80601f0160208091040260200160405190810160405280929190818152602001828054610a68906112f5565b8015610ab35780601f10610a8a57610100808354040283529160200191610ab3565b820191905f5260205f20905b815481529060010190602001808311610a9657829003601f168201915b5050505050806020019051810190610acb919061137a565b6040516370a0823160e01b81523060048201529091505f906001600160a01b038416906370a0823190602401602060405180830381865afa158015610b12573d5f5f3e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610b369190611215565b604051637756691560e01b81529091505f9073__$acbb9ece542dcf2065f41aa3c8cca5827e$__90637756691590610b9a90869088907f00000000000000000000000000000000000000000000000000000000000000009088908c90600401611406565b602060405180830381865af4158015610bb5573d5f5f3e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610bd99190611215565b60405163230a5c4b60e11b8152600481018290529091503090634614b896906024015f604051808303815f87803b158015610c12575f5ffd5b505af1158015610c24573d5f5f3e3d5ffd5b5050604080516001600160a01b0388168152602081018690529081018490527fdacbdde355ba930696a362ea6738feb9f8bd52dfb3d81947558fd3217e23e3259250606001905060405180910390a15050505050565b60408051606080820183525f8083526020830152918101919091526040516347e5753360e01b81527f000000000000000000000000000000000000000000000000000000000000000060048201525f906001600160a01b038416906347e57533906024015f60405180830381865afa158015610cf8573d5f5f3e3d5ffd5b505050506040513d5f823e601f3d908101601f19168201604052610d1f9190810190611445565b905080806020019051810190610d35919061137a565b9392505050565b5f81806020019051810190610d51919061137a565b604051632cbf28cb60e21b815290915073__$acbb9ece542dcf2065f41aa3c8cca5827e$__9063b2fca32c90610d8b9084906004016111a9565b5f6040518083038186803b158015610da1575f5ffd5b505af4158015610db3573d5f5f3e3d5ffd5b50505050815181604051602001610dca91906111a9565b6040516020818303038152906040525114610df8576040516350701b6160e01b815260040160405180910390fd5b7fca7f7aa563866a1d31c74deba224724d1da9c35cbb6f783f2ccf0182f91e34f88382604051610e29929190611477565b60405180910390a17f0000000000000000000000000000000000000000000000000000000000000000610e5c83826114ed565b50505050565b60405163095ea7b360e01b81526001600160a01b037f000000000000000000000000000000000000000000000000000000000000000081166004830152602482018390527f0000000000000000000000000000000000000000000000000000000000000000169063095ea7b3906044016020604051808303815f875af1158015610eee573d5f5f3e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610f12919061122c565b50604051631e573fb760e31b81526001600160a01b037f000000000000000000000000000000000000000000000000000000000000000081166004830152602482018390527f0000000000000000000000000000000000000000000000000000000000000000169063f2b9fdb890604401610396565b634e487b7160e01b5f52604160045260245ffd5b6040516060810167ffffffffffffffff81118282101715610fbf57610fbf610f88565b60405290565b604051601f8201601f1916810167ffffffffffffffff81118282101715610fee57610fee610f88565b604052919050565b5f67ffffffffffffffff82111561100f5761100f610f88565b50601f01601f191660200190565b5f82601f83011261102c575f5ffd5b813561103f61103a82610ff6565b610fc5565b818152846020838601011115611053575f5ffd5b816020850160208301375f918101602001919091529392505050565b5f5f60408385031215611080575f5ffd5b823560ff81168114611090575f5ffd5b9150602083013567ffffffffffffffff8111156110ab575f5ffd5b6110b78582860161101d565b9150509250929050565b5f81518084528060208401602086015e5f602082860101526020601f19601f83011685010191505092915050565b602081525f610d3560208301846110c1565b5f60208284031215611111575f5ffd5b5035919050565b6001600160a01b0381168114610668575f5ffd5b5f6020828403121561113c575f5ffd5b8135610d3581611118565b634e487b7160e01b5f52602160045260245ffd5b5f81516003811061117a57634e487b7160e01b5f52602160045260245ffd5b80845250602082015160208401526040820151606060408501526111a160608501826110c1565b949350505050565b602081525f610d35602083018461115b565b8015158114610668575f5ffd5b5f602082840312156111d8575f5ffd5b8135610d35816111bb565b5f602082840312156111f3575f5ffd5b813567ffffffffffffffff811115611209575f5ffd5b6111a18482850161101d565b5f60208284031215611225575f5ffd5b5051919050565b5f6020828403121561123c575f5ffd5b8151610d35816111bb565b5f6040828403128015611258575f5ffd5b506040805190810167ffffffffffffffff8111828210171561127c5761127c610f88565b604052825161128a81611118565b81526020928301519281019290925250919050565b5f5f5f606084860312156112b1575f5ffd5b83516112bc81611118565b602085015190935067ffffffffffffffff811681146112d9575f5ffd5b60408501519092506112ea816111bb565b809150509250925092565b600181811c9082168061130957607f821691505b60208210810361132757634e487b7160e01b5f52602260045260245ffd5b50919050565b5f82601f83011261133c575f5ffd5b815161134a61103a82610ff6565b81815284602083860101111561135e575f5ffd5b8160208501602083015e5f918101602001919091529392505050565b5f6020828403121561138a575f5ffd5b815167ffffffffffffffff8111156113a0575f5ffd5b8201606081850312156113b1575f5ffd5b6113b9610f9c565b8151600381106113c7575f5ffd5b815260208281015190820152604082015167ffffffffffffffff8111156113ec575f5ffd5b6113f88682850161132d565b604083015250949350505050565b60a081525f61141860a083018861115b565b6001600160a01b039687166020840152949095166040820152606081019290925260809091015292915050565b5f60208284031215611455575f5ffd5b815167ffffffffffffffff81111561146b575f5ffd5b6111a18482850161132d565b604081525f611489604083018561115b565b828103602084015261149b818561115b565b95945050505050565b601f8211156114e857805f5260205f20601f840160051c810160208510156114c95750805b601f840160051c820191505b818110156103bf575f81556001016114d5565b505050565b815167ffffffffffffffff81111561150757611507610f88565b61151b8161151584546112f5565b846114a4565b6020601f82116001811461154d575f83156115365750848201515b5f19600385901b1c1916600184901b1784556103bf565b5f84815260208120601f198516915b8281101561157c578785015182556020948501946001909201910161155c565b508482101561159957868401515f19600387901b60f8161c191681555b50505050600190811b0190555056fea26469706673582212200a6b73387ad4d40371649b2fab8fb2184925b05e3bd3f3c3de9fb2633b5dbfc264736f6c634300081e0033","opcodes":"PUSH1 0x80 PUSH1 0x40 MSTORE CALLVALUE DUP1 ISZERO PUSH2 0xF JUMPI PUSH0 PUSH0 REVERT JUMPDEST POP PUSH1 0x4 CALLDATASIZE LT PUSH2 0xA6 JUMPI PUSH0 CALLDATALOAD PUSH1 0xE0 SHR DUP1 PUSH4 0x5B9A4C35 GT PUSH2 0x6E JUMPI DUP1 PUSH4 0x5B9A4C35 EQ PUSH2 0x13C JUMPI DUP1 PUSH4 0x9C4667A2 EQ PUSH2 0x163 JUMPI DUP1 PUSH4 0x9CD47128 EQ PUSH2 0x1AE JUMPI DUP1 PUSH4 0xB6B55F25 EQ PUSH2 0x1C1 JUMPI DUP1 PUSH4 0xCE96CB77 EQ PUSH2 0x1D4 JUMPI DUP1 PUSH4 0xF3E0FFBF EQ PUSH2 0x1E7 JUMPI PUSH0 PUSH0 REVERT JUMPDEST DUP1 PUSH4 0x981B1C2 EQ PUSH2 0xAA JUMPI DUP1 PUSH4 0x2E1A7D4D EQ PUSH2 0xD3 JUMPI DUP1 PUSH4 0x402D267D EQ PUSH2 0xE8 JUMPI DUP1 PUSH4 0x42B054F0 EQ PUSH2 0x109 JUMPI DUP1 PUSH4 0x5A117456 EQ PUSH2 0x129 JUMPI JUMPDEST PUSH0 PUSH0 REVERT JUMPDEST PUSH2 0xBD PUSH2 0xB8 CALLDATASIZE PUSH1 0x4 PUSH2 0x106F JUMP JUMPDEST PUSH2 0x1FA JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0xCA SWAP2 SWAP1 PUSH2 0x10EF JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST PUSH2 0xE6 PUSH2 0xE1 CALLDATASIZE PUSH1 0x4 PUSH2 0x1101 JUMP JUMPDEST PUSH2 0x2DC JUMP JUMPDEST STOP JUMPDEST PUSH2 0xFB PUSH2 0xF6 CALLDATASIZE PUSH1 0x4 PUSH2 0x112C JUMP JUMPDEST PUSH2 0x3C6 JUMP JUMPDEST PUSH1 0x40 MLOAD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH2 0xCA JUMP JUMPDEST PUSH2 0x11C PUSH2 0x117 CALLDATASIZE PUSH1 0x4 PUSH2 0x112C JUMP JUMPDEST PUSH2 0x45B JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0xCA SWAP2 SWAP1 PUSH2 0x11A9 JUMP JUMPDEST PUSH2 0xE6 PUSH2 0x137 CALLDATASIZE PUSH1 0x4 PUSH2 0x11C8 JUMP JUMPDEST PUSH2 0x485 JUMP JUMPDEST PUSH2 0xFB PUSH32 0x0 DUP2 JUMP JUMPDEST PUSH2 0x196 PUSH2 0x171 CALLDATASIZE PUSH1 0x4 PUSH2 0x112C JUMP JUMPDEST POP PUSH32 0x0 SWAP1 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP1 SWAP2 AND DUP2 MSTORE PUSH1 0x20 ADD PUSH2 0xCA JUMP JUMPDEST PUSH2 0xE6 PUSH2 0x1BC CALLDATASIZE PUSH1 0x4 PUSH2 0x11E3 JUMP JUMPDEST PUSH2 0x66B JUMP JUMPDEST PUSH2 0xE6 PUSH2 0x1CF CALLDATASIZE PUSH1 0x4 PUSH2 0x1101 JUMP JUMPDEST PUSH2 0x6E8 JUMP JUMPDEST PUSH2 0xFB PUSH2 0x1E2 CALLDATASIZE PUSH1 0x4 PUSH2 0x112C JUMP JUMPDEST PUSH2 0x73A JUMP JUMPDEST PUSH2 0xFB PUSH2 0x1F5 CALLDATASIZE PUSH1 0x4 PUSH2 0x112C JUMP JUMPDEST PUSH2 0x850 JUMP JUMPDEST PUSH1 0x60 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB PUSH32 0x0 AND ADDRESS SUB PUSH2 0x245 JUMPI PUSH1 0x40 MLOAD PUSH4 0x2ABF118B PUSH1 0xE2 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH0 DUP4 PUSH1 0xFF AND PUSH1 0x1 DUP2 GT ISZERO PUSH2 0x25B JUMPI PUSH2 0x25B PUSH2 0x1147 JUMP JUMPDEST SWAP1 POP PUSH0 DUP2 PUSH1 0x1 DUP2 GT ISZERO PUSH2 0x270 JUMPI PUSH2 0x270 PUSH2 0x1147 JUMP JUMPDEST SUB PUSH2 0x29B JUMPI PUSH0 DUP4 DUP1 PUSH1 0x20 ADD SWAP1 MLOAD DUP2 ADD SWAP1 PUSH2 0x28A SWAP2 SWAP1 PUSH2 0x1215 JUMP JUMPDEST SWAP1 POP PUSH2 0x295 DUP2 PUSH2 0x8A2 JUMP JUMPDEST POP PUSH2 0x2C6 JUMP JUMPDEST PUSH1 0x1 DUP2 PUSH1 0x1 DUP2 GT ISZERO PUSH2 0x2AF JUMPI PUSH2 0x2AF PUSH2 0x1147 JUMP JUMPDEST SUB PUSH2 0xA6 JUMPI PUSH2 0x2C6 PUSH2 0x2C0 ADDRESS PUSH2 0xC7A JUMP JUMPDEST DUP5 PUSH2 0xD3C JUMP JUMPDEST POP POP PUSH1 0x40 DUP1 MLOAD PUSH1 0x20 DUP2 ADD SWAP1 SWAP2 MSTORE PUSH0 DUP2 MSTORE SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB PUSH32 0x0 AND ADDRESS SUB PUSH2 0x325 JUMPI PUSH1 0x40 MLOAD PUSH4 0x2ABF118B PUSH1 0xE2 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH1 0x40 MLOAD PUSH4 0xF3FEF3A3 PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB PUSH32 0x0 DUP2 AND PUSH1 0x4 DUP4 ADD MSTORE PUSH1 0x24 DUP3 ADD DUP4 SWAP1 MSTORE PUSH32 0x0 AND SWAP1 PUSH4 0xF3FEF3A3 SWAP1 PUSH1 0x44 ADD JUMPDEST PUSH0 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 PUSH0 DUP8 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x3AD JUMPI PUSH0 PUSH0 REVERT JUMPDEST POP GAS CALL ISZERO DUP1 ISZERO PUSH2 0x3BF JUMPI RETURNDATASIZE PUSH0 PUSH0 RETURNDATACOPY RETURNDATASIZE PUSH0 REVERT JUMPDEST POP POP POP POP POP JUMP JUMPDEST PUSH0 PUSH32 0x0 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH4 0xBC47AD1 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 GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x423 JUMPI RETURNDATASIZE PUSH0 PUSH0 RETURNDATACOPY RETURNDATASIZE PUSH0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP3 ADD DUP1 PUSH1 0x40 MSTORE POP DUP2 ADD SWAP1 PUSH2 0x447 SWAP2 SWAP1 PUSH2 0x122C JUMP JUMPDEST ISZERO PUSH2 0x453 JUMPI POP PUSH0 SWAP2 SWAP1 POP JUMP JUMPDEST POP PUSH0 NOT SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH1 0x60 DUP1 DUP3 ADD DUP4 MSTORE PUSH0 DUP1 DUP4 MSTORE PUSH1 0x20 DUP4 ADD MSTORE SWAP2 DUP2 ADD SWAP2 SWAP1 SWAP2 MSTORE PUSH2 0x47F DUP3 PUSH2 0xC7A JUMP JUMPDEST SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB PUSH32 0x0 AND ADDRESS SUB PUSH2 0x4CE JUMPI PUSH1 0x40 MLOAD PUSH4 0x2ABF118B PUSH1 0xE2 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST DUP1 PUSH2 0x668 JUMPI PUSH1 0x40 MLOAD PUSH4 0x70A08231 PUSH1 0xE0 SHL DUP2 MSTORE ADDRESS PUSH1 0x4 DUP3 ADD MSTORE PUSH32 0x0 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND SWAP1 PUSH4 0x70A08231 SWAP1 PUSH1 0x24 ADD PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x535 JUMPI RETURNDATASIZE PUSH0 PUSH0 RETURNDATACOPY RETURNDATASIZE PUSH0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP3 ADD DUP1 PUSH1 0x40 MSTORE POP DUP2 ADD SWAP1 PUSH2 0x559 SWAP2 SWAP1 PUSH2 0x1215 JUMP JUMPDEST ISZERO PUSH2 0x577 JUMPI PUSH1 0x40 MLOAD PUSH4 0x42A176D1 PUSH1 0xE1 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH1 0x40 MLOAD PUSH4 0x20F0656B PUSH1 0xE1 SHL DUP2 MSTORE PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB PUSH32 0x0 DUP2 AND PUSH1 0x4 DUP4 ADD MSTORE ADDRESS PUSH1 0x24 DUP4 ADD MSTORE PUSH0 SWAP2 PUSH32 0x0 SWAP1 SWAP2 AND SWAP1 PUSH4 0x41E0CAD6 SWAP1 PUSH1 0x44 ADD PUSH1 0x40 DUP1 MLOAD DUP1 DUP4 SUB DUP2 PUSH0 DUP8 GAS CALL ISZERO DUP1 ISZERO PUSH2 0x605 JUMPI RETURNDATASIZE PUSH0 PUSH0 RETURNDATACOPY RETURNDATASIZE PUSH0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP3 ADD DUP1 PUSH1 0x40 MSTORE POP DUP2 ADD SWAP1 PUSH2 0x629 SWAP2 SWAP1 PUSH2 0x1247 JUMP JUMPDEST DUP1 MLOAD SWAP1 SWAP2 POP PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND ISZERO DUP1 ISZERO SWAP1 PUSH2 0x648 JUMPI POP PUSH1 0x20 DUP2 ADD MLOAD ISZERO ISZERO JUMPDEST ISZERO PUSH2 0x666 JUMPI PUSH1 0x40 MLOAD PUSH4 0x42A176D1 PUSH1 0xE1 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST POP JUMPDEST POP JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB PUSH32 0x0 AND ADDRESS SUB PUSH2 0x6B4 JUMPI PUSH1 0x40 MLOAD PUSH4 0x2ABF118B PUSH1 0xE2 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH1 0x60 DUP2 ADD SWAP1 SWAP2 MSTORE PUSH2 0x668 SWAP1 DUP1 PUSH0 DUP2 MSTORE PUSH1 0x20 ADD PUSH0 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x40 MLOAD DUP1 PUSH1 0x20 ADD PUSH1 0x40 MSTORE DUP1 PUSH0 DUP2 MSTORE POP DUP2 MSTORE POP DUP3 PUSH2 0xD3C JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB PUSH32 0x0 AND ADDRESS SUB PUSH2 0x731 JUMPI PUSH1 0x40 MLOAD PUSH4 0x2ABF118B PUSH1 0xE2 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH2 0x668 DUP2 PUSH2 0xE62 JUMP JUMPDEST PUSH0 PUSH32 0x0 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH4 0x67800B5F 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 GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x797 JUMPI RETURNDATASIZE PUSH0 PUSH0 RETURNDATACOPY RETURNDATASIZE PUSH0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP3 ADD DUP1 PUSH1 0x40 MSTORE POP DUP2 ADD SWAP1 PUSH2 0x7BB SWAP2 SWAP1 PUSH2 0x122C JUMP JUMPDEST ISZERO PUSH2 0x7C7 JUMPI POP PUSH0 SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH4 0x70A08231 PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP4 DUP2 AND PUSH1 0x4 DUP4 ADD MSTORE PUSH32 0x0 AND SWAP1 PUSH4 0x70A08231 SWAP1 PUSH1 0x24 ADD JUMPDEST PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x82C JUMPI RETURNDATASIZE PUSH0 PUSH0 RETURNDATACOPY RETURNDATASIZE PUSH0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP3 ADD DUP1 PUSH1 0x40 MSTORE POP DUP2 ADD SWAP1 PUSH2 0x47F SWAP2 SWAP1 PUSH2 0x1215 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH4 0x70A08231 PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP3 DUP2 AND PUSH1 0x4 DUP4 ADD MSTORE PUSH0 SWAP2 PUSH32 0x0 SWAP1 SWAP2 AND SWAP1 PUSH4 0x70A08231 SWAP1 PUSH1 0x24 ADD PUSH2 0x811 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH4 0x45136D7 PUSH1 0xE3 SHL DUP2 MSTORE PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB PUSH32 0x0 DUP2 AND PUSH1 0x4 DUP4 ADD MSTORE PUSH0 SWAP2 PUSH32 0x0 SWAP1 SWAP2 AND SWAP1 PUSH4 0x2289B6B8 SWAP1 PUSH1 0x24 ADD PUSH1 0x60 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 PUSH0 DUP8 GAS CALL ISZERO DUP1 ISZERO PUSH2 0x92B JUMPI RETURNDATASIZE PUSH0 PUSH0 RETURNDATACOPY RETURNDATASIZE PUSH0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP3 ADD DUP1 PUSH1 0x40 MSTORE POP DUP2 ADD SWAP1 PUSH2 0x94F SWAP2 SWAP1 PUSH2 0x129F JUMP JUMPDEST POP SWAP1 SWAP2 POP POP PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 AND PUSH2 0x966 JUMPI POP POP JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH4 0x5B81A7BF PUSH1 0xE1 SHL DUP2 MSTORE PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB PUSH32 0x0 DUP2 AND PUSH1 0x4 DUP4 ADD MSTORE ADDRESS PUSH1 0x24 DUP4 ADD MSTORE PUSH1 0x1 PUSH1 0x44 DUP4 ADD MSTORE PUSH32 0x0 AND SWAP1 PUSH4 0xB7034F7E SWAP1 PUSH1 0x64 ADD PUSH0 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 PUSH0 DUP8 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x9F3 JUMPI PUSH0 PUSH0 REVERT JUMPDEST POP GAS CALL ISZERO DUP1 ISZERO PUSH2 0xA05 JUMPI RETURNDATASIZE PUSH0 PUSH0 RETURNDATACOPY RETURNDATASIZE PUSH0 REVERT JUMPDEST POP POP POP POP PUSH0 PUSH2 0xA31 PUSH32 0x0 SWAP1 JUMP JUMPDEST DUP1 SLOAD PUSH2 0xA3C SWAP1 PUSH2 0x12F5 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 0xA68 SWAP1 PUSH2 0x12F5 JUMP JUMPDEST DUP1 ISZERO PUSH2 0xAB3 JUMPI DUP1 PUSH1 0x1F LT PUSH2 0xA8A JUMPI PUSH2 0x100 DUP1 DUP4 SLOAD DIV MUL DUP4 MSTORE SWAP2 PUSH1 0x20 ADD SWAP2 PUSH2 0xAB3 JUMP JUMPDEST DUP3 ADD SWAP2 SWAP1 PUSH0 MSTORE PUSH1 0x20 PUSH0 KECCAK256 SWAP1 JUMPDEST DUP2 SLOAD DUP2 MSTORE SWAP1 PUSH1 0x1 ADD SWAP1 PUSH1 0x20 ADD DUP1 DUP4 GT PUSH2 0xA96 JUMPI DUP3 SWAP1 SUB PUSH1 0x1F AND DUP3 ADD SWAP2 JUMPDEST POP POP POP POP POP DUP1 PUSH1 0x20 ADD SWAP1 MLOAD DUP2 ADD SWAP1 PUSH2 0xACB SWAP2 SWAP1 PUSH2 0x137A JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH4 0x70A08231 PUSH1 0xE0 SHL DUP2 MSTORE ADDRESS PUSH1 0x4 DUP3 ADD MSTORE SWAP1 SWAP2 POP PUSH0 SWAP1 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP5 AND SWAP1 PUSH4 0x70A08231 SWAP1 PUSH1 0x24 ADD PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0xB12 JUMPI RETURNDATASIZE PUSH0 PUSH0 RETURNDATACOPY RETURNDATASIZE PUSH0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP3 ADD DUP1 PUSH1 0x40 MSTORE POP DUP2 ADD SWAP1 PUSH2 0xB36 SWAP2 SWAP1 PUSH2 0x1215 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH4 0x77566915 PUSH1 0xE0 SHL DUP2 MSTORE SWAP1 SWAP2 POP PUSH0 SWAP1 PUSH20 0x0 SWAP1 PUSH4 0x77566915 SWAP1 PUSH2 0xB9A SWAP1 DUP7 SWAP1 DUP9 SWAP1 PUSH32 0x0 SWAP1 DUP9 SWAP1 DUP13 SWAP1 PUSH1 0x4 ADD PUSH2 0x1406 JUMP JUMPDEST PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 GAS DELEGATECALL ISZERO DUP1 ISZERO PUSH2 0xBB5 JUMPI RETURNDATASIZE PUSH0 PUSH0 RETURNDATACOPY RETURNDATASIZE PUSH0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP3 ADD DUP1 PUSH1 0x40 MSTORE POP DUP2 ADD SWAP1 PUSH2 0xBD9 SWAP2 SWAP1 PUSH2 0x1215 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH4 0x230A5C4B PUSH1 0xE1 SHL DUP2 MSTORE PUSH1 0x4 DUP2 ADD DUP3 SWAP1 MSTORE SWAP1 SWAP2 POP ADDRESS SWAP1 PUSH4 0x4614B896 SWAP1 PUSH1 0x24 ADD PUSH0 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 PUSH0 DUP8 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0xC12 JUMPI PUSH0 PUSH0 REVERT JUMPDEST POP GAS CALL ISZERO DUP1 ISZERO PUSH2 0xC24 JUMPI RETURNDATASIZE PUSH0 PUSH0 RETURNDATACOPY RETURNDATASIZE PUSH0 REVERT JUMPDEST POP POP PUSH1 0x40 DUP1 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP9 AND DUP2 MSTORE PUSH1 0x20 DUP2 ADD DUP7 SWAP1 MSTORE SWAP1 DUP2 ADD DUP5 SWAP1 MSTORE PUSH32 0xDACBDDE355BA930696A362EA6738FEB9F8BD52DFB3D81947558FD3217E23E325 SWAP3 POP PUSH1 0x60 ADD SWAP1 POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 LOG1 POP POP POP POP POP JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH1 0x60 DUP1 DUP3 ADD DUP4 MSTORE PUSH0 DUP1 DUP4 MSTORE PUSH1 0x20 DUP4 ADD MSTORE SWAP2 DUP2 ADD SWAP2 SWAP1 SWAP2 MSTORE PUSH1 0x40 MLOAD PUSH4 0x47E57533 PUSH1 0xE0 SHL DUP2 MSTORE PUSH32 0x0 PUSH1 0x4 DUP3 ADD MSTORE PUSH0 SWAP1 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP5 AND SWAP1 PUSH4 0x47E57533 SWAP1 PUSH1 0x24 ADD PUSH0 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0xCF8 JUMPI RETURNDATASIZE PUSH0 PUSH0 RETURNDATACOPY RETURNDATASIZE PUSH0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH0 DUP3 RETURNDATACOPY PUSH1 0x1F RETURNDATASIZE SWAP1 DUP2 ADD PUSH1 0x1F NOT AND DUP3 ADD PUSH1 0x40 MSTORE PUSH2 0xD1F SWAP2 SWAP1 DUP2 ADD SWAP1 PUSH2 0x1445 JUMP JUMPDEST SWAP1 POP DUP1 DUP1 PUSH1 0x20 ADD SWAP1 MLOAD DUP2 ADD SWAP1 PUSH2 0xD35 SWAP2 SWAP1 PUSH2 0x137A JUMP JUMPDEST SWAP4 SWAP3 POP POP POP JUMP JUMPDEST PUSH0 DUP2 DUP1 PUSH1 0x20 ADD SWAP1 MLOAD DUP2 ADD SWAP1 PUSH2 0xD51 SWAP2 SWAP1 PUSH2 0x137A JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH4 0x2CBF28CB PUSH1 0xE2 SHL DUP2 MSTORE SWAP1 SWAP2 POP PUSH20 0x0 SWAP1 PUSH4 0xB2FCA32C SWAP1 PUSH2 0xD8B SWAP1 DUP5 SWAP1 PUSH1 0x4 ADD PUSH2 0x11A9 JUMP JUMPDEST PUSH0 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0xDA1 JUMPI PUSH0 PUSH0 REVERT JUMPDEST POP GAS DELEGATECALL ISZERO DUP1 ISZERO PUSH2 0xDB3 JUMPI RETURNDATASIZE PUSH0 PUSH0 RETURNDATACOPY RETURNDATASIZE PUSH0 REVERT JUMPDEST POP POP POP POP DUP2 MLOAD DUP2 PUSH1 0x40 MLOAD PUSH1 0x20 ADD PUSH2 0xDCA SWAP2 SWAP1 PUSH2 0x11A9 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH1 0x20 DUP2 DUP4 SUB SUB DUP2 MSTORE SWAP1 PUSH1 0x40 MSTORE MLOAD EQ PUSH2 0xDF8 JUMPI PUSH1 0x40 MLOAD PUSH4 0x50701B61 PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH32 0xCA7F7AA563866A1D31C74DEBA224724D1DA9C35CBB6F783F2CCF0182F91E34F8 DUP4 DUP3 PUSH1 0x40 MLOAD PUSH2 0xE29 SWAP3 SWAP2 SWAP1 PUSH2 0x1477 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 LOG1 PUSH32 0x0 PUSH2 0xE5C DUP4 DUP3 PUSH2 0x14ED JUMP JUMPDEST POP POP POP POP JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH4 0x95EA7B3 PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB PUSH32 0x0 DUP2 AND PUSH1 0x4 DUP4 ADD MSTORE PUSH1 0x24 DUP3 ADD DUP4 SWAP1 MSTORE PUSH32 0x0 AND SWAP1 PUSH4 0x95EA7B3 SWAP1 PUSH1 0x44 ADD PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 PUSH0 DUP8 GAS CALL ISZERO DUP1 ISZERO PUSH2 0xEEE JUMPI RETURNDATASIZE PUSH0 PUSH0 RETURNDATACOPY RETURNDATASIZE PUSH0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP3 ADD DUP1 PUSH1 0x40 MSTORE POP DUP2 ADD SWAP1 PUSH2 0xF12 SWAP2 SWAP1 PUSH2 0x122C JUMP JUMPDEST POP PUSH1 0x40 MLOAD PUSH4 0x1E573FB7 PUSH1 0xE3 SHL DUP2 MSTORE PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB PUSH32 0x0 DUP2 AND PUSH1 0x4 DUP4 ADD MSTORE PUSH1 0x24 DUP3 ADD DUP4 SWAP1 MSTORE PUSH32 0x0 AND SWAP1 PUSH4 0xF2B9FDB8 SWAP1 PUSH1 0x44 ADD PUSH2 0x396 JUMP JUMPDEST PUSH4 0x4E487B71 PUSH1 0xE0 SHL PUSH0 MSTORE PUSH1 0x41 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH0 REVERT JUMPDEST PUSH1 0x40 MLOAD PUSH1 0x60 DUP2 ADD PUSH8 0xFFFFFFFFFFFFFFFF DUP2 GT DUP3 DUP3 LT OR ISZERO PUSH2 0xFBF JUMPI PUSH2 0xFBF PUSH2 0xF88 JUMP JUMPDEST PUSH1 0x40 MSTORE SWAP1 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH1 0x1F DUP3 ADD PUSH1 0x1F NOT AND DUP2 ADD PUSH8 0xFFFFFFFFFFFFFFFF DUP2 GT DUP3 DUP3 LT OR ISZERO PUSH2 0xFEE JUMPI PUSH2 0xFEE PUSH2 0xF88 JUMP JUMPDEST PUSH1 0x40 MSTORE SWAP2 SWAP1 POP JUMP JUMPDEST PUSH0 PUSH8 0xFFFFFFFFFFFFFFFF DUP3 GT ISZERO PUSH2 0x100F JUMPI PUSH2 0x100F PUSH2 0xF88 JUMP JUMPDEST POP PUSH1 0x1F ADD PUSH1 0x1F NOT AND PUSH1 0x20 ADD SWAP1 JUMP JUMPDEST PUSH0 DUP3 PUSH1 0x1F DUP4 ADD SLT PUSH2 0x102C JUMPI PUSH0 PUSH0 REVERT JUMPDEST DUP2 CALLDATALOAD PUSH2 0x103F PUSH2 0x103A DUP3 PUSH2 0xFF6 JUMP JUMPDEST PUSH2 0xFC5 JUMP JUMPDEST DUP2 DUP2 MSTORE DUP5 PUSH1 0x20 DUP4 DUP7 ADD ADD GT ISZERO PUSH2 0x1053 JUMPI PUSH0 PUSH0 REVERT JUMPDEST DUP2 PUSH1 0x20 DUP6 ADD PUSH1 0x20 DUP4 ADD CALLDATACOPY PUSH0 SWAP2 DUP2 ADD PUSH1 0x20 ADD SWAP2 SWAP1 SWAP2 MSTORE SWAP4 SWAP3 POP POP POP JUMP JUMPDEST PUSH0 PUSH0 PUSH1 0x40 DUP4 DUP6 SUB SLT ISZERO PUSH2 0x1080 JUMPI PUSH0 PUSH0 REVERT JUMPDEST DUP3 CALLDATALOAD PUSH1 0xFF DUP2 AND DUP2 EQ PUSH2 0x1090 JUMPI PUSH0 PUSH0 REVERT JUMPDEST SWAP2 POP PUSH1 0x20 DUP4 ADD CALLDATALOAD PUSH8 0xFFFFFFFFFFFFFFFF DUP2 GT ISZERO PUSH2 0x10AB JUMPI PUSH0 PUSH0 REVERT JUMPDEST PUSH2 0x10B7 DUP6 DUP3 DUP7 ADD PUSH2 0x101D JUMP JUMPDEST SWAP2 POP POP SWAP3 POP SWAP3 SWAP1 POP JUMP JUMPDEST PUSH0 DUP2 MLOAD DUP1 DUP5 MSTORE DUP1 PUSH1 0x20 DUP5 ADD PUSH1 0x20 DUP7 ADD MCOPY PUSH0 PUSH1 0x20 DUP3 DUP7 ADD ADD MSTORE PUSH1 0x20 PUSH1 0x1F NOT PUSH1 0x1F DUP4 ADD AND DUP6 ADD ADD SWAP2 POP POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x20 DUP2 MSTORE PUSH0 PUSH2 0xD35 PUSH1 0x20 DUP4 ADD DUP5 PUSH2 0x10C1 JUMP JUMPDEST PUSH0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x1111 JUMPI PUSH0 PUSH0 REVERT JUMPDEST POP CALLDATALOAD SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 AND DUP2 EQ PUSH2 0x668 JUMPI PUSH0 PUSH0 REVERT JUMPDEST PUSH0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x113C JUMPI PUSH0 PUSH0 REVERT JUMPDEST DUP2 CALLDATALOAD PUSH2 0xD35 DUP2 PUSH2 0x1118 JUMP JUMPDEST PUSH4 0x4E487B71 PUSH1 0xE0 SHL PUSH0 MSTORE PUSH1 0x21 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH0 REVERT JUMPDEST PUSH0 DUP2 MLOAD PUSH1 0x3 DUP2 LT PUSH2 0x117A JUMPI PUSH4 0x4E487B71 PUSH1 0xE0 SHL PUSH0 MSTORE PUSH1 0x21 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH0 REVERT JUMPDEST DUP1 DUP5 MSTORE POP PUSH1 0x20 DUP3 ADD MLOAD PUSH1 0x20 DUP5 ADD MSTORE PUSH1 0x40 DUP3 ADD MLOAD PUSH1 0x60 PUSH1 0x40 DUP6 ADD MSTORE PUSH2 0x11A1 PUSH1 0x60 DUP6 ADD DUP3 PUSH2 0x10C1 JUMP JUMPDEST SWAP5 SWAP4 POP POP POP POP JUMP JUMPDEST PUSH1 0x20 DUP2 MSTORE PUSH0 PUSH2 0xD35 PUSH1 0x20 DUP4 ADD DUP5 PUSH2 0x115B JUMP JUMPDEST DUP1 ISZERO ISZERO DUP2 EQ PUSH2 0x668 JUMPI PUSH0 PUSH0 REVERT JUMPDEST PUSH0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x11D8 JUMPI PUSH0 PUSH0 REVERT JUMPDEST DUP2 CALLDATALOAD PUSH2 0xD35 DUP2 PUSH2 0x11BB JUMP JUMPDEST PUSH0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x11F3 JUMPI PUSH0 PUSH0 REVERT JUMPDEST DUP2 CALLDATALOAD PUSH8 0xFFFFFFFFFFFFFFFF DUP2 GT ISZERO PUSH2 0x1209 JUMPI PUSH0 PUSH0 REVERT JUMPDEST PUSH2 0x11A1 DUP5 DUP3 DUP6 ADD PUSH2 0x101D JUMP JUMPDEST PUSH0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x1225 JUMPI PUSH0 PUSH0 REVERT JUMPDEST POP MLOAD SWAP2 SWAP1 POP JUMP JUMPDEST PUSH0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x123C JUMPI PUSH0 PUSH0 REVERT JUMPDEST DUP2 MLOAD PUSH2 0xD35 DUP2 PUSH2 0x11BB JUMP JUMPDEST PUSH0 PUSH1 0x40 DUP3 DUP5 SUB SLT DUP1 ISZERO PUSH2 0x1258 JUMPI PUSH0 PUSH0 REVERT JUMPDEST POP PUSH1 0x40 DUP1 MLOAD SWAP1 DUP2 ADD PUSH8 0xFFFFFFFFFFFFFFFF DUP2 GT DUP3 DUP3 LT OR ISZERO PUSH2 0x127C JUMPI PUSH2 0x127C PUSH2 0xF88 JUMP JUMPDEST PUSH1 0x40 MSTORE DUP3 MLOAD PUSH2 0x128A DUP2 PUSH2 0x1118 JUMP JUMPDEST DUP2 MSTORE PUSH1 0x20 SWAP3 DUP4 ADD MLOAD SWAP3 DUP2 ADD SWAP3 SWAP1 SWAP3 MSTORE POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH0 PUSH0 PUSH0 PUSH1 0x60 DUP5 DUP7 SUB SLT ISZERO PUSH2 0x12B1 JUMPI PUSH0 PUSH0 REVERT JUMPDEST DUP4 MLOAD PUSH2 0x12BC DUP2 PUSH2 0x1118 JUMP JUMPDEST PUSH1 0x20 DUP6 ADD MLOAD SWAP1 SWAP4 POP PUSH8 0xFFFFFFFFFFFFFFFF DUP2 AND DUP2 EQ PUSH2 0x12D9 JUMPI PUSH0 PUSH0 REVERT JUMPDEST PUSH1 0x40 DUP6 ADD MLOAD SWAP1 SWAP3 POP PUSH2 0x12EA DUP2 PUSH2 0x11BB JUMP JUMPDEST DUP1 SWAP2 POP POP SWAP3 POP SWAP3 POP SWAP3 JUMP JUMPDEST PUSH1 0x1 DUP2 DUP2 SHR SWAP1 DUP3 AND DUP1 PUSH2 0x1309 JUMPI PUSH1 0x7F DUP3 AND SWAP2 POP JUMPDEST PUSH1 0x20 DUP3 LT DUP2 SUB PUSH2 0x1327 JUMPI PUSH4 0x4E487B71 PUSH1 0xE0 SHL PUSH0 MSTORE PUSH1 0x22 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH0 REVERT JUMPDEST POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH0 DUP3 PUSH1 0x1F DUP4 ADD SLT PUSH2 0x133C JUMPI PUSH0 PUSH0 REVERT JUMPDEST DUP2 MLOAD PUSH2 0x134A PUSH2 0x103A DUP3 PUSH2 0xFF6 JUMP JUMPDEST DUP2 DUP2 MSTORE DUP5 PUSH1 0x20 DUP4 DUP7 ADD ADD GT ISZERO PUSH2 0x135E JUMPI PUSH0 PUSH0 REVERT JUMPDEST DUP2 PUSH1 0x20 DUP6 ADD PUSH1 0x20 DUP4 ADD MCOPY PUSH0 SWAP2 DUP2 ADD PUSH1 0x20 ADD SWAP2 SWAP1 SWAP2 MSTORE SWAP4 SWAP3 POP POP POP JUMP JUMPDEST PUSH0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x138A JUMPI PUSH0 PUSH0 REVERT JUMPDEST DUP2 MLOAD PUSH8 0xFFFFFFFFFFFFFFFF DUP2 GT ISZERO PUSH2 0x13A0 JUMPI PUSH0 PUSH0 REVERT JUMPDEST DUP3 ADD PUSH1 0x60 DUP2 DUP6 SUB SLT ISZERO PUSH2 0x13B1 JUMPI PUSH0 PUSH0 REVERT JUMPDEST PUSH2 0x13B9 PUSH2 0xF9C JUMP JUMPDEST DUP2 MLOAD PUSH1 0x3 DUP2 LT PUSH2 0x13C7 JUMPI PUSH0 PUSH0 REVERT JUMPDEST DUP2 MSTORE PUSH1 0x20 DUP3 DUP2 ADD MLOAD SWAP1 DUP3 ADD MSTORE PUSH1 0x40 DUP3 ADD MLOAD PUSH8 0xFFFFFFFFFFFFFFFF DUP2 GT ISZERO PUSH2 0x13EC JUMPI PUSH0 PUSH0 REVERT JUMPDEST PUSH2 0x13F8 DUP7 DUP3 DUP6 ADD PUSH2 0x132D JUMP JUMPDEST PUSH1 0x40 DUP4 ADD MSTORE POP SWAP5 SWAP4 POP POP POP POP JUMP JUMPDEST PUSH1 0xA0 DUP2 MSTORE PUSH0 PUSH2 0x1418 PUSH1 0xA0 DUP4 ADD DUP9 PUSH2 0x115B JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP7 DUP8 AND PUSH1 0x20 DUP5 ADD MSTORE SWAP5 SWAP1 SWAP6 AND PUSH1 0x40 DUP3 ADD MSTORE PUSH1 0x60 DUP2 ADD SWAP3 SWAP1 SWAP3 MSTORE PUSH1 0x80 SWAP1 SWAP2 ADD MSTORE SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x1455 JUMPI PUSH0 PUSH0 REVERT JUMPDEST DUP2 MLOAD PUSH8 0xFFFFFFFFFFFFFFFF DUP2 GT ISZERO PUSH2 0x146B JUMPI PUSH0 PUSH0 REVERT JUMPDEST PUSH2 0x11A1 DUP5 DUP3 DUP6 ADD PUSH2 0x132D JUMP JUMPDEST PUSH1 0x40 DUP2 MSTORE PUSH0 PUSH2 0x1489 PUSH1 0x40 DUP4 ADD DUP6 PUSH2 0x115B JUMP JUMPDEST DUP3 DUP2 SUB PUSH1 0x20 DUP5 ADD MSTORE PUSH2 0x149B DUP2 DUP6 PUSH2 0x115B JUMP JUMPDEST SWAP6 SWAP5 POP POP POP POP POP JUMP JUMPDEST PUSH1 0x1F DUP3 GT ISZERO PUSH2 0x14E8 JUMPI DUP1 PUSH0 MSTORE PUSH1 0x20 PUSH0 KECCAK256 PUSH1 0x1F DUP5 ADD PUSH1 0x5 SHR DUP2 ADD PUSH1 0x20 DUP6 LT ISZERO PUSH2 0x14C9 JUMPI POP DUP1 JUMPDEST PUSH1 0x1F DUP5 ADD PUSH1 0x5 SHR DUP3 ADD SWAP2 POP JUMPDEST DUP2 DUP2 LT ISZERO PUSH2 0x3BF JUMPI PUSH0 DUP2 SSTORE PUSH1 0x1 ADD PUSH2 0x14D5 JUMP JUMPDEST POP POP POP JUMP JUMPDEST DUP2 MLOAD PUSH8 0xFFFFFFFFFFFFFFFF DUP2 GT ISZERO PUSH2 0x1507 JUMPI PUSH2 0x1507 PUSH2 0xF88 JUMP JUMPDEST PUSH2 0x151B DUP2 PUSH2 0x1515 DUP5 SLOAD PUSH2 0x12F5 JUMP JUMPDEST DUP5 PUSH2 0x14A4 JUMP JUMPDEST PUSH1 0x20 PUSH1 0x1F DUP3 GT PUSH1 0x1 DUP2 EQ PUSH2 0x154D JUMPI PUSH0 DUP4 ISZERO PUSH2 0x1536 JUMPI POP DUP5 DUP3 ADD MLOAD JUMPDEST PUSH0 NOT PUSH1 0x3 DUP6 SWAP1 SHL SHR NOT AND PUSH1 0x1 DUP5 SWAP1 SHL OR DUP5 SSTORE PUSH2 0x3BF JUMP JUMPDEST PUSH0 DUP5 DUP2 MSTORE PUSH1 0x20 DUP2 KECCAK256 PUSH1 0x1F NOT DUP6 AND SWAP2 JUMPDEST DUP3 DUP2 LT ISZERO PUSH2 0x157C JUMPI DUP8 DUP6 ADD MLOAD DUP3 SSTORE PUSH1 0x20 SWAP5 DUP6 ADD SWAP5 PUSH1 0x1 SWAP1 SWAP3 ADD SWAP2 ADD PUSH2 0x155C JUMP JUMPDEST POP DUP5 DUP3 LT ISZERO PUSH2 0x1599 JUMPI DUP7 DUP5 ADD MLOAD PUSH0 NOT PUSH1 0x3 DUP8 SWAP1 SHL PUSH1 0xF8 AND SHR NOT AND DUP2 SSTORE JUMPDEST POP POP POP POP PUSH1 0x1 SWAP1 DUP2 SHL ADD SWAP1 SSTORE POP JUMP INVALID LOG2 PUSH5 0x6970667358 0x22 SLT KECCAK256 EXP PUSH12 0x73387AD4D40371649B2FAB8F 0xB2 XOR BLOBHASH 0x25 0xB0 MCOPY EXTCODESIZE 0xD3 RETURN 0xC3 0xDE SWAP16 0xB2 PUSH4 0x3B5DBFC2 PUSH5 0x736F6C6343 STOP ADDMOD 0x1E STOP CALLER ","sourceMap":"1315:7464:78:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;6633:1481;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;5048:121;;;;;;:::i;:::-;;:::i;:::-;;4526:169;;;;;;:::i;:::-;;:::i;:::-;;;3082:25:87;;;3070:2;3055:18;4526:169:78;2936:177:87;8640:137:78;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;3884:387::-;;;;;;:::i;:::-;;:::i;1473:81::-;;;;;4733:99;;;;;;:::i;:::-;-1:-1:-1;4817:10:78;;4733:99;;;;-1:-1:-1;;;;;4721:32:87;;;4703:51;;4691:2;4676:18;4733:99:78;4557:203:87;3657:189:78;;;;;;:::i;:::-;;:::i;5207:99::-;;;;;;:::i;:::-;;:::i;4309:179::-;;;;;;:::i;:::-;;:::i;4870:140::-;;;;;;:::i;:::-;;:::i;6633:1481::-;6727:12;-1:-1:-1;;;;;2973:6:78;2956:23;2964:4;2956:23;2952:72;;2988:36;;-1:-1:-1;;;2988:36:78;;;;;;;;;;;2952:72;6747:28:::1;6793:6;6778:22;;;;;;;;;;:::i;:::-;6747:53:::0;-1:-1:-1;6827:29:78::1;6810:13;:46;;;;;;;;:::i;:::-;::::0;6806:1280:::1;;7415:13;7442:6;7431:29;;;;;;;;;;;;:::i;:::-;7415:45;;7468:22;7484:5;7468:15;:22::i;:::-;6858:639;6806:1280;;;7524:28;7507:13;:45;;;;;;;;:::i;:::-;::::0;7503:583:::1;;7768:53;7783:29;7806:4;7783:14;:29::i;:::-;7814:6;7768:14;:53::i;:::-;-1:-1:-1::0;;8100:9:78::1;::::0;;::::1;::::0;::::1;::::0;;;-1:-1:-1;8100:9:78;;6633:1481;;;;:::o;5048:121::-;-1:-1:-1;;;;;2973:6:78;2956:23;2964:4;2956:23;2952:72;;2988:36;;-1:-1:-1;;;2988:36:78;;;;;;;;;;;2952:72;5128:36:::1;::::0;-1:-1:-1;;;5128:36:78;;-1:-1:-1;;;;;5145:10:78::1;5517:32:87::0;;5128:36:78::1;::::0;::::1;5499:51:87::0;5566:18;;;5559:34;;;5128:7:78::1;:16;::::0;::::1;::::0;5472:18:87;;5128:36:78::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;5048:121:::0;:::o;4526:169::-;4607:7;4626;-1:-1:-1;;;;;4626:22:78;;:24;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;4622:38;;;-1:-1:-1;4659:1:78;;4526:169;-1:-1:-1;4526:169:78:o;4622:38::-;-1:-1:-1;;;4673:17:78;4526:169;-1:-1:-1;4526:169:78:o;8640:137::-;-1:-1:-1;;;;;;;;;;;;;;;;;;;;;;;;8747:25:78;8762:9;8747:14;:25::i;:::-;8740:32;8640:137;-1:-1:-1;;8640:137:78:o;3884:387::-;-1:-1:-1;;;;;2973:6:78;2956:23;2964:4;2956:23;2952:72;;2988:36;;-1:-1:-1;;;2988:36:78;;;;;;;;;;;2952:72;3967:5:::1;3962:305;;3986:32;::::0;-1:-1:-1;;;3986:32:78;;4012:4:::1;3986:32;::::0;::::1;4703:51:87::0;3986:7:78::1;-1:-1:-1::0;;;;;3986:17:78::1;::::0;::::1;::::0;4676:18:87;;3986:32:78::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;:37:::0;3982:78:::1;;4032:28;;-1:-1:-1::0;;;4032:28:78::1;;;;;;;;;;;3982:78;4107:62;::::0;-1:-1:-1;;;4107:62:78;;-1:-1:-1;;;;;4145:7:78::1;6046:32:87::0;;4107:62:78::1;::::0;::::1;6028:51:87::0;4163:4:78::1;6095:18:87::0;;;6088:60;-1:-1:-1;;4107:15:78::1;:29:::0;;::::1;::::0;::::1;::::0;6001:18:87;;4107:62:78::1;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;4181:10:::0;;4068:101;;-1:-1:-1;;;;;;4181:24:78::1;::::0;;::::1;::::0;:42:::1;;-1:-1:-1::0;4209:9:78::1;::::0;::::1;::::0;:14;::::1;4181:42;4177:83;;;4232:28;;-1:-1:-1::0;;;4232:28:78::1;;;;;;;;;;;4177:83;3974:293;3962:305;3884:387:::0;:::o;3657:189::-;-1:-1:-1;;;;;2973:6:78;2956:23;2964:4;2956:23;2952:72;;2988:36;;-1:-1:-1;;;2988:36:78;;;;;;;;;;;2952:72;3758::::1;::::0;;::::1;::::0;::::1;::::0;;;3743:98:::1;::::0;3758:72;-1:-1:-1;3758:72:78::1;;;;3817:1;3758:72;;;;3820:9;;;;;;;;;;;::::0;3758:72:::1;;::::0;3832:8:::1;3743:14;:98::i;5207:99::-:0;-1:-1:-1;;;;;2973:6:78;2956:23;2964:4;2956:23;2952:72;;2988:36;;-1:-1:-1;;;2988:36:78;;;;;;;;;;;2952:72;5286:15:::1;5294:6;5286:7;:15::i;4309:179::-:0;4387:7;4406;-1:-1:-1;;;;;4406:24:78;;:26;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;4402:40;;;-1:-1:-1;4441:1:78;;4309:179;-1:-1:-1;4309:179:78:o;4402:40::-;4455:28;;-1:-1:-1;;;4455:28:78;;-1:-1:-1;;;;;4721:32:87;;;4455:28:78;;;4703:51:87;4455:7:78;:17;;;;4676:18:87;;4455:28:78;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;4870:140::-;4977:28;;-1:-1:-1;;;4977:28:78;;-1:-1:-1;;;;;4721:32:87;;;4977:28:78;;;4703:51:87;4948:14:78;;4977:7;:17;;;;;;4676:18:87;;4977:28:78;4557:203:87;5459:654:78;5537:46;;-1:-1:-1;;;5537:46:78;;-1:-1:-1;;;;;5574:7:78;4721:32:87;;5537:46:78;;;4703:51:87;-1:-1:-1;;5537:15:78;:28;;;;;;4676:18:87;;5537:46:78;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;-1:-1:-1;5514:69:78;;-1:-1:-1;;;;;;;5593:20:78;;5589:33;;5615:7;5459:654;:::o;5589:33::-;5627:60;;-1:-1:-1;;;5627:60:78;;-1:-1:-1;;;;;5657:7:78;7616:32:87;;5627:60:78;;;7598:51:87;5675:4:78;7665:18:87;;;7658:60;5682:4:78;7734:18:87;;;7727:50;5627:15:78;:21;;;;7571:18:87;;5627:60:78;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;5694:40;5755:37;5780:11;3877:4:44;3738:159;5755:37:78;5737:99;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;5860:39;;-1:-1:-1;;;5860:39:78;;5893:4;5860:39;;;4703:51:87;5694:142:78;;-1:-1:-1;5843:14:78;;-1:-1:-1;;;;;5860:24:78;;;;;4676:18:87;;5860:39:78;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;5930:56;;-1:-1:-1;;;5930:56:78;;5843;;-1:-1:-1;5905:22:78;;5930:21;;;;:56;;:10;;5952:6;;5960:10;;5843:56;;5980:5;;5930:56;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;5993:58;;-1:-1:-1;;;5993:58:78;;;;;3082:25:87;;;5905:81:78;;-1:-1:-1;6009:4:78;;5993:42;;3055:18:87;;5993:58:78;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;6062:46:78;;;-1:-1:-1;;;;;10355:32:87;;10337:51;;10419:2;10404:18;;10397:34;;;10447:18;;;10440:34;;;6062:46:78;;-1:-1:-1;10325:2:87;10310:18;;-1:-1:-1;6062:46:78;;;;;;;5508:605;;;;5459:654;:::o;8118:260::-;-1:-1:-1;;;;;;;;;;;;;;;;;;;;;;;;8254:51:78;;-1:-1:-1;;;8254:51:78;;8293:11;8254:51;;;3082:25:87;8221:30:78;;-1:-1:-1;;;;;8254:38:78;;;;;3055:18:87;;8254:51:78;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;8254:51:78;;;;;;;;;;;;:::i;:::-;8221:84;;8329:17;8318:55;;;;;;;;;;;;:::i;:::-;8311:62;8118:260;-1:-1:-1;;;8118:260:78:o;6117:478::-;6236:40;6290:20;6279:58;;;;;;;;;;;;:::i;:::-;6343:21;;-1:-1:-1;;;6343:21:78;;6236:101;;-1:-1:-1;6343:19:78;;;;:21;;6236:101;;6343:21;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;6407:20;:27;6385:10;6374:22;;;;;;;;:::i;:::-;;;;;;;;;;;;;:29;:60;6370:93;;6443:20;;-1:-1:-1;;;6443:20:78;;;;;;;;;;;6370:93;6474:44;6492:13;6507:10;6474:44;;;;;;;:::i;:::-;;;;;;;;6549:11;6524:66;6570:20;6549:11;6524:66;:::i;:::-;;6230:365;6117:478;;:::o;5310:145::-;5358:52;;-1:-1:-1;;;5358:52:78;;-1:-1:-1;;;;;5393:7:78;5517:32:87;;5358:52:78;;;5499:51:87;5566:18;;;5559:34;;;5365:10:78;5358:26;;;;5472:18:87;;5358:52:78;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;-1:-1:-1;5416:34:78;;-1:-1:-1;;;5416:34:78;;-1:-1:-1;;;;;5431:10:78;5517:32:87;;5416:34:78;;;5499:51:87;5566:18;;;5559:34;;;5416:7:78;:14;;;;5472:18:87;;5416:34:78;5325:274:87;14:127;75:10;70:3;66:20;63:1;56:31;106:4;103:1;96:15;130:4;127:1;120:15;146:253;218:2;212:9;260:4;248:17;;295:18;280:34;;316:22;;;277:62;274:88;;;342:18;;:::i;:::-;378:2;371:22;146:253;:::o;404:275::-;475:2;469:9;540:2;521:13;;-1:-1:-1;;517:27:87;505:40;;575:18;560:34;;596:22;;;557:62;554:88;;;622:18;;:::i;:::-;658:2;651:22;404:275;;-1:-1:-1;404:275:87:o;684:186::-;732:4;765:18;757:6;754:30;751:56;;;787:18;;:::i;:::-;-1:-1:-1;853:2:87;832:15;-1:-1:-1;;828:29:87;859:4;824:40;;684:186::o;875:486::-;917:5;970:3;963:4;955:6;951:17;947:27;937:55;;988:1;985;978:12;937:55;1028:6;1015:20;1059:52;1075:35;1103:6;1075:35;:::i;:::-;1059:52;:::i;:::-;1136:6;1127:7;1120:23;1190:3;1183:4;1174:6;1166;1162:19;1158:30;1155:39;1152:59;;;1207:1;1204;1197:12;1152:59;1272:6;1265:4;1257:6;1253:17;1246:4;1237:7;1233:18;1220:59;1328:1;1299:20;;;1321:4;1295:31;1288:42;;;;1303:7;875:486;-1:-1:-1;;;875:486:87:o;1366:477::-;1441:6;1449;1502:2;1490:9;1481:7;1477:23;1473:32;1470:52;;;1518:1;1515;1508:12;1470:52;1557:9;1544:23;1607:4;1600:5;1596:16;1589:5;1586:27;1576:55;;1627:1;1624;1617:12;1576:55;1650:5;-1:-1:-1;1706:2:87;1691:18;;1678:32;1733:18;1722:30;;1719:50;;;1765:1;1762;1755:12;1719:50;1788:49;1829:7;1820:6;1809:9;1805:22;1788:49;:::i;:::-;1778:59;;;1366:477;;;;;:::o;1848:288::-;1889:3;1927:5;1921:12;1954:6;1949:3;1942:19;2010:6;2003:4;1996:5;1992:16;1985:4;1980:3;1976:14;1970:47;2062:1;2055:4;2046:6;2041:3;2037:16;2033:27;2026:38;2125:4;2118:2;2114:7;2109:2;2101:6;2097:15;2093:29;2088:3;2084:39;2080:50;2073:57;;;1848:288;;;;:::o;2141:217::-;2288:2;2277:9;2270:21;2251:4;2308:44;2348:2;2337:9;2333:18;2325:6;2308:44;:::i;2363:180::-;2422:6;2475:2;2463:9;2454:7;2450:23;2446:32;2443:52;;;2491:1;2488;2481:12;2443:52;-1:-1:-1;2514:23:87;;2363:180;-1:-1:-1;2363:180:87:o;2548:131::-;-1:-1:-1;;;;;2623:31:87;;2613:42;;2603:70;;2669:1;2666;2659:12;2684:247;2743:6;2796:2;2784:9;2775:7;2771:23;2767:32;2764:52;;;2812:1;2809;2802:12;2764:52;2851:9;2838:23;2870:31;2895:5;2870:31;:::i;3118:127::-;3179:10;3174:3;3170:20;3167:1;3160:31;3210:4;3207:1;3200:15;3234:4;3231:1;3224:15;3250:479;3303:3;3337:5;3331:12;3369:1;3365:2;3362:9;3352:140;;3414:10;3409:3;3405:20;3402:1;3395:31;3449:4;3446:1;3439:15;3477:4;3474:1;3467:15;3352:140;3513:2;3508:3;3501:15;;3565:4;3558:5;3554:16;3548:23;3541:4;3536:3;3532:14;3525:47;3618:4;3611:5;3607:16;3601:23;3656:4;3649;3644:3;3640:14;3633:28;3677:46;3717:4;3712:3;3708:14;3694:12;3677:46;:::i;:::-;3670:53;3250:479;-1:-1:-1;;;;3250:479:87:o;3734:267::-;3919:2;3908:9;3901:21;3882:4;3939:56;3991:2;3980:9;3976:18;3968:6;3939:56;:::i;4006:118::-;4092:5;4085:13;4078:21;4071:5;4068:32;4058:60;;4114:1;4111;4104:12;4129:241;4185:6;4238:2;4226:9;4217:7;4213:23;4209:32;4206:52;;;4254:1;4251;4244:12;4206:52;4293:9;4280:23;4312:28;4334:5;4312:28;:::i;4765:320::-;4833:6;4886:2;4874:9;4865:7;4861:23;4857:32;4854:52;;;4902:1;4899;4892:12;4854:52;4942:9;4929:23;4975:18;4967:6;4964:30;4961:50;;;5007:1;5004;4997:12;4961:50;5030:49;5071:7;5062:6;5051:9;5047:22;5030:49;:::i;5090:230::-;5160:6;5213:2;5201:9;5192:7;5188:23;5184:32;5181:52;;;5229:1;5226;5219:12;5181:52;-1:-1:-1;5274:16:87;;5090:230;-1:-1:-1;5090:230:87:o;5604:245::-;5671:6;5724:2;5712:9;5703:7;5699:23;5695:32;5692:52;;;5740:1;5737;5730:12;5692:52;5772:9;5766:16;5791:28;5813:5;5791:28;:::i;6159:681::-;6258:6;6318:2;6306:9;6297:7;6293:23;6289:32;6333:2;6330:22;;;6348:1;6345;6338:12;6330:22;-1:-1:-1;6417:2:87;6411:9;;;6447:15;;6492:18;6477:34;;6513:22;;;6474:62;6471:88;;;6539:18;;:::i;:::-;6575:2;6568:22;6612:16;;6637:31;6612:16;6637:31;:::i;:::-;6677:21;;6764:2;6749:18;;;6743:25;6784:15;;;6777:32;;;;-1:-1:-1;6684:6:87;6159:681;-1:-1:-1;6159:681:87:o;6845:552::-;6929:6;6937;6945;6998:2;6986:9;6977:7;6973:23;6969:32;6966:52;;;7014:1;7011;7004:12;6966:52;7046:9;7040:16;7065:31;7090:5;7065:31;:::i;:::-;7165:2;7150:18;;7144:25;7115:5;;-1:-1:-1;7213:18:87;7200:32;;7188:45;;7178:73;;7247:1;7244;7237:12;7178:73;7322:2;7307:18;;7301:25;7270:7;;-1:-1:-1;7335:30:87;7301:25;7335:30;:::i;:::-;7384:7;7374:17;;;6845:552;;;;;:::o;7788:380::-;7867:1;7863:12;;;;7910;;;7931:61;;7985:4;7977:6;7973:17;7963:27;;7931:61;8038:2;8030:6;8027:14;8007:18;8004:38;8001:161;;8084:10;8079:3;8075:20;8072:1;8065:31;8119:4;8116:1;8109:15;8147:4;8144:1;8137:15;8001:161;;7788:380;;;:::o;8173:483::-;8226:5;8279:3;8272:4;8264:6;8260:17;8256:27;8246:55;;8297:1;8294;8287:12;8246:55;8330:6;8324:13;8361:52;8377:35;8405:6;8377:35;:::i;8361:52::-;8438:6;8429:7;8422:23;8492:3;8485:4;8476:6;8468;8464:19;8460:30;8457:39;8454:59;;;8509:1;8506;8499:12;8454:59;8567:6;8560:4;8552:6;8548:17;8541:4;8532:7;8528:18;8522:52;8623:1;8594:20;;;8616:4;8590:31;8583:42;;;;8598:7;8173:483;-1:-1:-1;;;8173:483:87:o;8661:850::-;8759:6;8812:2;8800:9;8791:7;8787:23;8783:32;8780:52;;;8828:1;8825;8818:12;8780:52;8861:9;8855:16;8894:18;8886:6;8883:30;8880:50;;;8926:1;8923;8916:12;8880:50;8949:22;;9005:4;8987:16;;;8983:27;8980:47;;;9023:1;9020;9013:12;8980:47;9049:22;;:::i;:::-;9101:2;9095:9;9135:1;9126:7;9123:14;9113:42;;9151:1;9148;9141:12;9113:42;9164:22;;9245:2;9237:11;;;9231:18;9265:14;;;9258:31;9328:2;9320:11;;9314:18;9357;9344:32;;9341:52;;;9389:1;9386;9379:12;9341:52;9425:55;9472:7;9461:8;9457:2;9453:17;9425:55;:::i;:::-;9420:2;9409:14;;9402:79;-1:-1:-1;9413:5:87;8661:850;-1:-1:-1;;;;8661:850:87:o;9516:614::-;9821:3;9810:9;9803:22;9784:4;9842:57;9894:3;9883:9;9879:19;9871:6;9842:57;:::i;:::-;-1:-1:-1;;;;;9935:32:87;;;9930:2;9915:18;;9908:60;10004:32;;;;9999:2;9984:18;;9977:60;10068:2;10053:18;;10046:34;;;;10111:3;10096:19;;;10089:35;9834:65;9516:614;-1:-1:-1;;9516:614:87:o;10485:335::-;10564:6;10617:2;10605:9;10596:7;10592:23;10588:32;10585:52;;;10633:1;10630;10623:12;10585:52;10666:9;10660:16;10699:18;10691:6;10688:30;10685:50;;;10731:1;10728;10721:12;10685:50;10754:60;10806:7;10797:6;10786:9;10782:22;10754:60;:::i;11105:477::-;11374:2;11363:9;11356:21;11337:4;11400:56;11452:2;11441:9;11437:18;11429:6;11400:56;:::i;:::-;11504:9;11496:6;11492:22;11487:2;11476:9;11472:18;11465:50;11532:44;11569:6;11561;11532:44;:::i;:::-;11524:52;11105:477;-1:-1:-1;;;;;11105:477:87:o;11712:517::-;11813:2;11808:3;11805:11;11802:421;;;11849:5;11846:1;11839:16;11893:4;11890:1;11880:18;11963:2;11951:10;11947:19;11944:1;11940:27;11934:4;11930:38;11999:4;11987:10;11984:20;11981:47;;;-1:-1:-1;12022:4:87;11981:47;12077:2;12072:3;12068:12;12065:1;12061:20;12055:4;12051:31;12041:41;;12132:81;12150:2;12143:5;12140:13;12132:81;;;12209:1;12195:16;;12176:1;12165:13;12132:81;;11802:421;11712:517;;;:::o;12405:1295::-;12529:3;12523:10;12556:18;12548:6;12545:30;12542:56;;;12578:18;;:::i;:::-;12607:96;12696:6;12656:38;12688:4;12682:11;12656:38;:::i;:::-;12650:4;12607:96;:::i;:::-;12752:4;12783:2;12772:14;;12800:1;12795:648;;;;13487:1;13504:6;13501:89;;;-1:-1:-1;13556:19:87;;;13550:26;13501:89;-1:-1:-1;;12362:1:87;12358:11;;;12354:24;12350:29;12340:40;12386:1;12382:11;;;12337:57;13603:81;;12765:929;;12795:648;11659:1;11652:14;;;11696:4;11683:18;;-1:-1:-1;;12831:20:87;;;12948:222;12962:7;12959:1;12956:14;12948:222;;;13044:19;;;13038:26;13023:42;;13151:4;13136:20;;;;13104:1;13092:14;;;;12978:12;12948:222;;;12952:3;13198:6;13189:7;13186:19;13183:201;;;13259:19;;;13253:26;-1:-1:-1;;13342:1:87;13338:14;;;13354:3;13334:24;13330:37;13326:42;13311:58;13296:74;;13183:201;-1:-1:-1;;;;13430:1:87;13414:14;;;13410:22;13397:36;;-1:-1:-1;12405:1295:87:o"},"methodIdentifiers":{"asset(address)":"9c4667a2","connect(bytes)":"9cd47128","deposit(uint256)":"b6b55f25","disconnect(bool)":"5a117456","forwardEntryPoint(uint8,bytes)":"0981b1c2","getSwapConfig(address)":"42b054f0","maxDeposit(address)":"402d267d","maxWithdraw(address)":"ce96cb77","storageSlot()":"5b9a4c35","totalAssets(address)":"f3e0ffbf","withdraw(uint256)":"2e1a7d4d"}},"metadata":"{\"compiler\":{\"version\":\"0.8.30+commit.73712a01\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"inputs\":[{\"internalType\":\"contract ICompoundV3\",\"name\":\"cToken_\",\"type\":\"address\"},{\"internalType\":\"contract ICometRewards\",\"name\":\"rewardsManager_\",\"type\":\"address\"}],\"stateMutability\":\"nonpayable\",\"type\":\"constructor\"},{\"inputs\":[],\"name\":\"CanBeCalledOnlyThroughDelegateCall\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"CannotDisconnectWithAssets\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"NoExtraDataAllowed\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"RewardsManagerRequired\",\"type\":\"error\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"address\",\"name\":\"token\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"rewards\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"receivedInAsset\",\"type\":\"uint256\"}],\"name\":\"RewardsClaimed\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"components\":[{\"internalType\":\"enum SwapLibrary.SwapProtocol\",\"name\":\"protocol\",\"type\":\"uint8\"},{\"internalType\":\"uint256\",\"name\":\"maxSlippage\",\"type\":\"uint256\"},{\"internalType\":\"bytes\",\"name\":\"customParams\",\"type\":\"bytes\"}],\"indexed\":false,\"internalType\":\"struct SwapLibrary.SwapConfig\",\"name\":\"oldConfig\",\"type\":\"tuple\"},{\"components\":[{\"internalType\":\"enum SwapLibrary.SwapProtocol\",\"name\":\"protocol\",\"type\":\"uint8\"},{\"internalType\":\"uint256\",\"name\":\"maxSlippage\",\"type\":\"uint256\"},{\"internalType\":\"bytes\",\"name\":\"customParams\",\"type\":\"bytes\"}],\"indexed\":false,\"internalType\":\"struct SwapLibrary.SwapConfig\",\"name\":\"newConfig\",\"type\":\"tuple\"}],\"name\":\"SwapConfigChanged\",\"type\":\"event\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"name\":\"asset\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes\",\"name\":\"initData\",\"type\":\"bytes\"}],\"name\":\"connect\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"assets\",\"type\":\"uint256\"}],\"name\":\"deposit\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bool\",\"name\":\"force\",\"type\":\"bool\"}],\"name\":\"disconnect\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint8\",\"name\":\"method\",\"type\":\"uint8\"},{\"internalType\":\"bytes\",\"name\":\"params\",\"type\":\"bytes\"}],\"name\":\"forwardEntryPoint\",\"outputs\":[{\"internalType\":\"bytes\",\"name\":\"\",\"type\":\"bytes\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"contract_\",\"type\":\"address\"}],\"name\":\"getSwapConfig\",\"outputs\":[{\"components\":[{\"internalType\":\"enum SwapLibrary.SwapProtocol\",\"name\":\"protocol\",\"type\":\"uint8\"},{\"internalType\":\"uint256\",\"name\":\"maxSlippage\",\"type\":\"uint256\"},{\"internalType\":\"bytes\",\"name\":\"customParams\",\"type\":\"bytes\"}],\"internalType\":\"struct SwapLibrary.SwapConfig\",\"name\":\"\",\"type\":\"tuple\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"name\":\"maxDeposit\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"contract_\",\"type\":\"address\"}],\"name\":\"maxWithdraw\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"storageSlot\",\"outputs\":[{\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"contract_\",\"type\":\"address\"}],\"name\":\"totalAssets\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"assets\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"assets\",\"type\":\"uint256\"}],\"name\":\"withdraw\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"}],\"devdoc\":{\"author\":\"Ensuro\",\"custom:security-contact\":\"security@ensuro.co\",\"details\":\"Strategy that invests/deinvests into CompoundV3 on each deposit/withdraw. Also, has a method to claim the      rewards, swap them, and reinvests the result into CompoundV3.      The rewards are not accounted in the totalAssets() until they are claimed. It's advised to claim the rewards      frequently, to avoid discrete variations on the returns.      This strategy as the other IInvestStrategy are supposed to be called with delegateCall by a vault, managing      the assets on behalf of the vault.\",\"events\":{\"RewardsClaimed(address,uint256,uint256)\":{\"details\":\"Emitted when the rewards are claimed\",\"params\":{\"receivedInAsset\":\"Amount of `asset()` received in exchange of the rewards sold\",\"rewards\":\"Amount of rewards received (in units of token)\",\"token\":\"The token in which the rewards are denominated\"}},\"SwapConfigChanged((uint8,uint256,bytes),(uint8,uint256,bytes))\":{\"details\":\"Emitted when the swap config is changed. This swap config is used to swap the rewards for assets``\",\"params\":{\"newConfig\":\"The swap configuration after the change\",\"oldConfig\":\"The swap configuration before the change\"}}},\"kind\":\"dev\",\"methods\":{\"asset(address)\":{\"details\":\"The address of the underlying token used for accounting, depositing, and withdrawing. It must be the same      as `IERC4626(contract_).asset()` when dealing with vaults.\",\"params\":{\"contract_\":\"The address of the vault contract that owns the assets.\"}},\"connect(bytes)\":{\"details\":\"Called when the strategy is plugged into the vault. Initializes the strategy storage and can do validations\",\"params\":{\"initData\":\"Initialization data for the strategy. Must be parsed by the strategy, since the format is                 strategy specific\"}},\"constructor\":{\"details\":\"Constructor of the strategy.\",\"params\":{\"cToken_\":\"The address of the cToken (compound pool) where funds will be supplied. The strategy asset()                will be `cToken_.baseToken()`.\",\"rewardsManager_\":\"The address of the rewards manager contract that will be used to claim the rewards\"}},\"deposit(uint256)\":{\"details\":\"Deposits a given amount of assets into the strategy. It MUST revert if it can't deposit the specified amount.      It assumes the assets are already in the contract (owned by address(this)).\",\"params\":{\"assets\":\"The amount of assets to deposit. Should be <= maxDeposit.\"}},\"disconnect(bool)\":{\"details\":\"Called when the strategy is un-plugged from the vault. Should revert if there are still assets in the      strategy, unless force==true.\",\"params\":{\"force\":\"If true, disconnect should not fail if assets remain in the strategy. Otherwise, disconnect              MUST fail if totalAssets() != 0.\"}},\"forwardEntryPoint(uint8,bytes)\":{\"details\":\"Receives an external call to execute a custom method of action in the strategy. Can be used for harvesting      rewards or other tasks. It's called with delegatecall from the calling vault. The calling vault SHOULD      do the access control validation, since the strategy normally won't do it.\",\"params\":{\"method\":\"An id of the method or action to call/execute. It's recommended to define an enum and convert the               the uint8 value into the enum.\",\"params\":\"Params for the method or action. Parsed by the strategy, it might differ from one or other method.\"}},\"getSwapConfig(address)\":{\"details\":\"Returns the swap configuration of the given contract. It uses the internal function _getSwapConfig that returns the decoded swap configuration structure.\",\"params\":{\"contract_\":\"Address of the contract configuration being requested.\"}},\"maxDeposit(address)\":{\"details\":\"Returns the max amount that can be deposited into the strategy.\",\"params\":{\"contract_\":\"The address of the vault contract that owns the assets and where the strategy is plugged\"}},\"maxWithdraw(address)\":{\"details\":\"Returns the max amount that can be withdrawn from the strategy.\",\"params\":{\"contract_\":\"The address of the vault contract that owns the assets and where the strategy is plugged\"}},\"totalAssets(address)\":{\"details\":\"Returns the number of assets under management of the investment strategy for a given contract.\",\"params\":{\"contract_\":\"The address of the vault contract that owns the assets and where the strategy is plugged\"}},\"withdraw(uint256)\":{\"details\":\"Withdraws a given amount of assets from the strategy. It MUST revert if it can't withdraw the specified amount.      Leaves the withdrawn assets in the contract (owned by address(this)).\",\"params\":{\"assets\":\"The amount of assets to withdraw. Should be <= maxWithdraw.\"}}},\"stateVariables\":{\"storageSlot\":{\"details\":\"Returns the slot where the data of the strategy can be stored.       Typically it would return `InvestStrategyClient.makeStorageSlot(<strategyAddress>)`\"}},\"title\":\"CompoundV3InvestStrategy\",\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{},\"version\":1}},\"settings\":{\"compilationTarget\":{\"contracts/strategies/CompoundV3InvestStrategy.sol\":\"CompoundV3InvestStrategy\"},\"evmVersion\":\"prague\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"enabled\":true,\"runs\":200},\"remappings\":[]},\"sources\":{\"@ensuro/swaplibrary/contracts/CurveRoutes.sol\":{\"keccak256\":\"0x631af8ec291043d7eef34b97a427a4f53eb46d852088f6620c46a36a7e851963\",\"license\":\"Apache-2.0\",\"urls\":[\"bzz-raw://fbaf0f64980572d977b87b83e8bfc9c79fd1d2dc49a21e77e2a11fb8dec2413a\",\"dweb:/ipfs/QmYTpv2BroRz8PpWXYRp5KaaCXRy3tkZ95DeXybP4j3ti4\"]},\"@ensuro/swaplibrary/contracts/SwapLibrary.sol\":{\"keccak256\":\"0x3b1db1690ce8fa74972e4b4a57de41f4a880c8566b279316113d7398ea711812\",\"license\":\"Apache-2.0\",\"urls\":[\"bzz-raw://2746b500f5916604c16589fdbabf94b4d97689dcb96095376ed4956f9de663a6\",\"dweb:/ipfs/QmepecwnwauXsLuQmmoFNbH5XbZYEHH4bjnshQRRUeyH4r\"]},\"@ensuro/swaplibrary/contracts/dependencies/ICurveRouter.sol\":{\"keccak256\":\"0xf8c39f61b7459cfe6ba74d88fee74efd6d3d05d5cd64dc9eb6d08fbe0361affd\",\"license\":\"UNLICENSED\",\"urls\":[\"bzz-raw://55f11ef7e1cc66fa2c6c2aec436ccf00a835acf4281bff4ee9b4d2cb8980c92f\",\"dweb:/ipfs/QmPfvjcbLbHwoFRFGkM5zvM25vrEvZxjwbxSUL5jm5n3pZ\"]},\"@openzeppelin/contracts/interfaces/IERC20.sol\":{\"keccak256\":\"0x1a6221315ce0307746c2c4827c125d821ee796c74a676787762f4778671d4f44\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://1bb2332a7ee26dd0b0de9b7fe266749f54820c99ab6a3bcb6f7e6b751d47ee2d\",\"dweb:/ipfs/QmcRWpaBeCYkhy68PR3B4AgD7asuQk7PwkWxrvJbZcikLF\"]},\"@openzeppelin/contracts/token/ERC20/IERC20.sol\":{\"keccak256\":\"0x74ed01eb66b923d0d0cfe3be84604ac04b76482a55f9dd655e1ef4d367f95bc2\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://5282825a626cfe924e504274b864a652b0023591fa66f06a067b25b51ba9b303\",\"dweb:/ipfs/QmeCfPykghhMc81VJTrHTC7sF6CRvaA1FXVq2pJhwYp1dV\"]},\"@openzeppelin/contracts/token/ERC20/extensions/IERC20Metadata.sol\":{\"keccak256\":\"0xd6fa4088198f04eef10c5bce8a2f4d60554b7ec4b987f684393c01bf79b94d9f\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://f95ee0bbd4dd3ac730d066ba3e785ded4565e890dbec2fa7d3b9fe3bad9d0d6e\",\"dweb:/ipfs/QmSLr6bHkPFWT7ntj34jmwfyskpwo97T9jZUrk5sz3sdtR\"]},\"@openzeppelin/contracts/utils/Address.sol\":{\"keccak256\":\"0x0fa9e0d3a859900b5a46f70a03c73adf259603d5e05027a37fe0b45529d85346\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://c2add4da0240c9f2ce47649c8bb6b11b40e98cf6f88b8bdc76b2704e89391710\",\"dweb:/ipfs/QmNQTwF2uVzu4CRtNxr8bxyP9XuW6VsZuo2Nr4KR2bZr3d\"]},\"@openzeppelin/contracts/utils/Errors.sol\":{\"keccak256\":\"0x6afa713bfd42cf0f7656efa91201007ac465e42049d7de1d50753a373648c123\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://ba1d02f4847670a1b83dec9f7d37f0b0418d6043447b69f3a29a5f9efc547fcf\",\"dweb:/ipfs/QmQ7iH2keLNUKgq2xSWcRmuBE5eZ3F5whYAkAGzCNNoEWB\"]},\"@openzeppelin/contracts/utils/LowLevelCall.sol\":{\"keccak256\":\"0x5b4802a4352474792df3107e961d1cc593e47b820c14f69d3505cb28f5a6a583\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://a6f86fd01f829499fe0545ff5dda07d4521988e88bfe0bf801fc15650921ed56\",\"dweb:/ipfs/QmUUKu4ZDffHAmfkf3asuQfmLTyfpuy2Amdncc3SqfzKPG\"]},\"@openzeppelin/contracts/utils/Panic.sol\":{\"keccak256\":\"0xf7fe324703a64fc51702311dc51562d5cb1497734f074e4f483bfb6717572d7a\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://c6a5ff4f9fd8649b7ee20800b7fa387d3465bd77cf20c2d1068cd5c98e1ed57a\",\"dweb:/ipfs/QmVSaVJf9FXFhdYEYeCEfjMVHrxDh5qL4CGkxdMWpQCrqG\"]},\"@openzeppelin/contracts/utils/StorageSlot.sol\":{\"keccak256\":\"0xcf74f855663ce2ae00ed8352666b7935f6cddea2932fdf2c3ecd30a9b1cd0e97\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://9f660b1f351b757dfe01438e59888f31f33ded3afcf5cb5b0d9bf9aa6f320a8b\",\"dweb:/ipfs/QmarDJ5hZEgBtCmmrVzEZWjub9769eD686jmzb2XpSU1cM\"]},\"@openzeppelin/contracts/utils/math/Math.sol\":{\"keccak256\":\"0x09e3f1c72d4c5cbe8e2644ab7313f8f7177533ae2f4c24cdcbbeaf520a73734c\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://93208401215d539fa2d81626b207c1f611def7883d0e447b3b5969ebaa7b3c2c\",\"dweb:/ipfs/QmXPxDnQPx8LAweX5ZJqEcwkvs59kP4c64VVDG1Jjq1mef\"]},\"@openzeppelin/contracts/utils/math/SafeCast.sol\":{\"keccak256\":\"0x195533c86d0ef72bcc06456a4f66a9b941f38eb403739b00f21fd7c1abd1ae54\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://b1d578337048cad08c1c03041cca5978eff5428aa130c781b271ad9e5566e1f8\",\"dweb:/ipfs/QmPFKL2r9CBsMwmUqqdcFPfHZB2qcs9g1HDrPxzWSxomvy\"]},\"@uniswap/v3-core/contracts/interfaces/callback/IUniswapV3SwapCallback.sol\":{\"keccak256\":\"0x3f485fb1a44e8fbeadefb5da07d66edab3cfe809f0ac4074b1e54e3eb3c4cf69\",\"license\":\"GPL-2.0-or-later\",\"urls\":[\"bzz-raw://095ce0626b41318c772b3ebf19d548282607f6a8f3d6c41c13edfbd5370c8652\",\"dweb:/ipfs/QmVDZfJJ89UUCE1hMyzqpkZAtQ8jUsBgZNE5AMRG7RzRFS\"]},\"@uniswap/v3-periphery/contracts/interfaces/ISwapRouter.sol\":{\"keccak256\":\"0x9bfaf1feb32814623e627ab70f2409760b15d95f1f9b058e2b3399a8bb732975\",\"license\":\"GPL-2.0-or-later\",\"urls\":[\"bzz-raw://a8a2c3e55965b61bcd91993d8e1d5d34b8b8a63e0fdfce87a85f6af92526fd53\",\"dweb:/ipfs/QmQj2CSCSwqDSU4KMNWxGsN2336Cy64WgpV1X1EHXNZWxM\"]},\"contracts/InvestStrategyClient.sol\":{\"keccak256\":\"0x3c8fff73042023381eb750ba13a9066475d208e99bde568e1243f0e1e282c894\",\"license\":\"Apache-2.0\",\"urls\":[\"bzz-raw://3f8283ffa5c512e482b0065d9391c7060ebc1fa5968c55e6a05958480b7facb6\",\"dweb:/ipfs/QmT4N9Z19b6AUXpXtg23d3ijBExyKuRJBeQ3o8WCobgpfT\"]},\"contracts/MSVBase.sol\":{\"keccak256\":\"0x5c77645d099729ec7f37fdddf61a21aa1ce479ba1770da5694564687d436942f\",\"license\":\"Apache-2.0\",\"urls\":[\"bzz-raw://496ee230293f8ac7216e6300d568b29bbf1f7d5a4c9b68ea58baaae02f55e267\",\"dweb:/ipfs/QmVYH6gLLCrVpeKSHGxAeVVDQcVPgSiwhDB2i8uLPnPHaJ\"]},\"contracts/dependencies/compound-v3/ICometRewards.sol\":{\"keccak256\":\"0x7b836a5c98b60f59ebbe73386ecf736ab25bd241ab0d79c31f899a08e08b9bb9\",\"license\":\"Apache-2.0\",\"urls\":[\"bzz-raw://28cab8be5e0f049460437c87ce657b3e857e68099ffad5be1b2cee9c95a14dd8\",\"dweb:/ipfs/QmZN2TXor5Pesm1vSqYfmWcdE52VxAoNixtStLXxdbnHEb\"]},\"contracts/dependencies/compound-v3/ICompoundV3.sol\":{\"keccak256\":\"0x491b3cb1bbfba85cb7e8757fa2b5904b7d0e1d9abcb9cbcad8e4eb36854c13a2\",\"license\":\"Apache-2.0\",\"urls\":[\"bzz-raw://009c7702f91354376b6da7bff08301e80f4836e674ad0b56e7edf52a4131498a\",\"dweb:/ipfs/QmXL4raWtqQzs6y1RUNDUZ54zWSBjQd7PujwYpsMqUZRm9\"]},\"contracts/interfaces/IExposeStorage.sol\":{\"keccak256\":\"0x68d4dbc7e135ac949f5f557a1f071b96d1639262188f91957bf082be7e72b1c7\",\"license\":\"Apache-2.0\",\"urls\":[\"bzz-raw://29fc549ef136e19275bb9225c8e7f02e0cc3b274acef4e6d7002c6f3f74e5c13\",\"dweb:/ipfs/QmVzrn7Cbxe8xzLwy4ZpzxP6CBEKsegXG8VusNYqssCe3d\"]},\"contracts/interfaces/IInvestStrategy.sol\":{\"keccak256\":\"0x6800a1f147def2252b79629150ce9cd87e914ca5a966f1035fbca6328bbc9c4b\",\"license\":\"Apache-2.0\",\"urls\":[\"bzz-raw://2e9260604e0ffcf405819f85fee4124d9a090cf716f389ff92cf76a2837a2e42\",\"dweb:/ipfs/QmVdKEW8C6MDyiiUfjBxEMTWjfPrBJadptpxh9L2uCebDK\"]},\"contracts/strategies/CompoundV3InvestStrategy.sol\":{\"keccak256\":\"0xa2af4bcc05d0d179b902ebae0fea211e177b6eb405fc10e1fc8fcdca3afb7fa3\",\"license\":\"Apache-2.0\",\"urls\":[\"bzz-raw://7df70ea0d0cb0d34569a05e963f58021b2fdeacb87d6b488e088f203461c654b\",\"dweb:/ipfs/QmQxrk9ovcoMhrw2ENY3DHx8smEJpAyihnm9PUdRvv3NtG\"]},\"solidity-bytes-utils/contracts/BytesLib.sol\":{\"keccak256\":\"0xf4b07e5d8f69407bb43c6db224adfcf6c73b512dd64e85008ac3c222910c3555\",\"license\":\"Unlicense\",\"urls\":[\"bzz-raw://db020721e59008f7159b65962cc24038c92ac1c2ee8b7cfaa28a1771ced663f5\",\"dweb:/ipfs/QmQ8rznRTYc3AoVCJno8tY6vQVKCbhDJ3husfytUUvMrSN\"]}},\"version\":1}","storageLayout":{"storage":[],"types":null}}},"contracts/strategies/ERC4626InvestStrategy.sol":{"ERC4626InvestStrategy":{"abi":[{"inputs":[{"internalType":"contract IERC4626","name":"vault_","type":"address"}],"stateMutability":"nonpayable","type":"constructor"},{"inputs":[],"name":"CanBeCalledOnlyThroughDelegateCall","type":"error"},{"inputs":[],"name":"CannotDisconnectWithAssets","type":"error"},{"inputs":[],"name":"NoExtraDataAllowed","type":"error"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"asset","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"bytes","name":"initData","type":"bytes"}],"name":"connect","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"assets","type":"uint256"}],"name":"deposit","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bool","name":"force","type":"bool"}],"name":"disconnect","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint8","name":"","type":"uint8"},{"internalType":"bytes","name":"","type":"bytes"}],"name":"forwardEntryPoint","outputs":[{"internalType":"bytes","name":"","type":"bytes"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"investVault","outputs":[{"internalType":"contract IERC4626","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"contract_","type":"address"}],"name":"maxDeposit","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"contract_","type":"address"}],"name":"maxWithdraw","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"storageSlot","outputs":[{"internalType":"bytes32","name":"","type":"bytes32"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"contract_","type":"address"}],"name":"totalAssets","outputs":[{"internalType":"uint256","name":"assets","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"assets","type":"uint256"}],"name":"withdraw","outputs":[],"stateMutability":"nonpayable","type":"function"}],"evm":{"bytecode":{"functionDebugData":{"@_23021":{"entryPoint":null,"id":23021,"parameterSlots":1,"returnSlots":0},"@makeStorageSlot_15638":{"entryPoint":null,"id":15638,"parameterSlots":1,"returnSlots":1},"abi_decode_tuple_t_address_fromMemory":{"entryPoint":null,"id":null,"parameterSlots":2,"returnSlots":1},"abi_decode_tuple_t_contract$_IERC4626_$7127_fromMemory":{"entryPoint":270,"id":null,"parameterSlots":2,"returnSlots":1},"abi_encode_tuple_t_stringliteral_4fed0cd3539a36e00a34a6c026c2615824c9ad47da5ef65e8372c7e721c05d79_t_contract$_IInvestStrategy_$20725__to_t_string_memory_ptr_t_address__fromStack_reversed":{"entryPoint":null,"id":null,"parameterSlots":2,"returnSlots":1},"validator_revert_contract_IERC4626":{"entryPoint":247,"id":null,"parameterSlots":1,"returnSlots":0}},"generatedSources":[{"ast":{"nativeSrc":"0:1190:87","nodeType":"YulBlock","src":"0:1190:87","statements":[{"nativeSrc":"6:3:87","nodeType":"YulBlock","src":"6:3:87","statements":[]},{"body":{"nativeSrc":"69:86:87","nodeType":"YulBlock","src":"69:86:87","statements":[{"body":{"nativeSrc":"133:16:87","nodeType":"YulBlock","src":"133:16:87","statements":[{"expression":{"arguments":[{"kind":"number","nativeSrc":"142:1:87","nodeType":"YulLiteral","src":"142:1:87","type":"","value":"0"},{"kind":"number","nativeSrc":"145:1:87","nodeType":"YulLiteral","src":"145:1:87","type":"","value":"0"}],"functionName":{"name":"revert","nativeSrc":"135:6:87","nodeType":"YulIdentifier","src":"135:6:87"},"nativeSrc":"135:12:87","nodeType":"YulFunctionCall","src":"135:12:87"},"nativeSrc":"135:12:87","nodeType":"YulExpressionStatement","src":"135:12:87"}]},"condition":{"arguments":[{"arguments":[{"name":"value","nativeSrc":"92:5:87","nodeType":"YulIdentifier","src":"92:5:87"},{"arguments":[{"name":"value","nativeSrc":"103:5:87","nodeType":"YulIdentifier","src":"103:5:87"},{"arguments":[{"arguments":[{"kind":"number","nativeSrc":"118:3:87","nodeType":"YulLiteral","src":"118:3:87","type":"","value":"160"},{"kind":"number","nativeSrc":"123:1:87","nodeType":"YulLiteral","src":"123:1:87","type":"","value":"1"}],"functionName":{"name":"shl","nativeSrc":"114:3:87","nodeType":"YulIdentifier","src":"114:3:87"},"nativeSrc":"114:11:87","nodeType":"YulFunctionCall","src":"114:11:87"},{"kind":"number","nativeSrc":"127:1:87","nodeType":"YulLiteral","src":"127:1:87","type":"","value":"1"}],"functionName":{"name":"sub","nativeSrc":"110:3:87","nodeType":"YulIdentifier","src":"110:3:87"},"nativeSrc":"110:19:87","nodeType":"YulFunctionCall","src":"110:19:87"}],"functionName":{"name":"and","nativeSrc":"99:3:87","nodeType":"YulIdentifier","src":"99:3:87"},"nativeSrc":"99:31:87","nodeType":"YulFunctionCall","src":"99:31:87"}],"functionName":{"name":"eq","nativeSrc":"89:2:87","nodeType":"YulIdentifier","src":"89:2:87"},"nativeSrc":"89:42:87","nodeType":"YulFunctionCall","src":"89:42:87"}],"functionName":{"name":"iszero","nativeSrc":"82:6:87","nodeType":"YulIdentifier","src":"82:6:87"},"nativeSrc":"82:50:87","nodeType":"YulFunctionCall","src":"82:50:87"},"nativeSrc":"79:70:87","nodeType":"YulIf","src":"79:70:87"}]},"name":"validator_revert_contract_IERC4626","nativeSrc":"14:141:87","nodeType":"YulFunctionDefinition","parameters":[{"name":"value","nativeSrc":"58:5:87","nodeType":"YulTypedName","src":"58:5:87","type":""}],"src":"14:141:87"},{"body":{"nativeSrc":"258:180:87","nodeType":"YulBlock","src":"258:180:87","statements":[{"body":{"nativeSrc":"304:16:87","nodeType":"YulBlock","src":"304:16:87","statements":[{"expression":{"arguments":[{"kind":"number","nativeSrc":"313:1:87","nodeType":"YulLiteral","src":"313:1:87","type":"","value":"0"},{"kind":"number","nativeSrc":"316:1:87","nodeType":"YulLiteral","src":"316:1:87","type":"","value":"0"}],"functionName":{"name":"revert","nativeSrc":"306:6:87","nodeType":"YulIdentifier","src":"306:6:87"},"nativeSrc":"306:12:87","nodeType":"YulFunctionCall","src":"306:12:87"},"nativeSrc":"306:12:87","nodeType":"YulExpressionStatement","src":"306:12:87"}]},"condition":{"arguments":[{"arguments":[{"name":"dataEnd","nativeSrc":"279:7:87","nodeType":"YulIdentifier","src":"279:7:87"},{"name":"headStart","nativeSrc":"288:9:87","nodeType":"YulIdentifier","src":"288:9:87"}],"functionName":{"name":"sub","nativeSrc":"275:3:87","nodeType":"YulIdentifier","src":"275:3:87"},"nativeSrc":"275:23:87","nodeType":"YulFunctionCall","src":"275:23:87"},{"kind":"number","nativeSrc":"300:2:87","nodeType":"YulLiteral","src":"300:2:87","type":"","value":"32"}],"functionName":{"name":"slt","nativeSrc":"271:3:87","nodeType":"YulIdentifier","src":"271:3:87"},"nativeSrc":"271:32:87","nodeType":"YulFunctionCall","src":"271:32:87"},"nativeSrc":"268:52:87","nodeType":"YulIf","src":"268:52:87"},{"nativeSrc":"329:29:87","nodeType":"YulVariableDeclaration","src":"329:29:87","value":{"arguments":[{"name":"headStart","nativeSrc":"348:9:87","nodeType":"YulIdentifier","src":"348:9:87"}],"functionName":{"name":"mload","nativeSrc":"342:5:87","nodeType":"YulIdentifier","src":"342:5:87"},"nativeSrc":"342:16:87","nodeType":"YulFunctionCall","src":"342:16:87"},"variables":[{"name":"value","nativeSrc":"333:5:87","nodeType":"YulTypedName","src":"333:5:87","type":""}]},{"expression":{"arguments":[{"name":"value","nativeSrc":"402:5:87","nodeType":"YulIdentifier","src":"402:5:87"}],"functionName":{"name":"validator_revert_contract_IERC4626","nativeSrc":"367:34:87","nodeType":"YulIdentifier","src":"367:34:87"},"nativeSrc":"367:41:87","nodeType":"YulFunctionCall","src":"367:41:87"},"nativeSrc":"367:41:87","nodeType":"YulExpressionStatement","src":"367:41:87"},{"nativeSrc":"417:15:87","nodeType":"YulAssignment","src":"417:15:87","value":{"name":"value","nativeSrc":"427:5:87","nodeType":"YulIdentifier","src":"427:5:87"},"variableNames":[{"name":"value0","nativeSrc":"417:6:87","nodeType":"YulIdentifier","src":"417:6:87"}]}]},"name":"abi_decode_tuple_t_contract$_IERC4626_$7127_fromMemory","nativeSrc":"160:278:87","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nativeSrc":"224:9:87","nodeType":"YulTypedName","src":"224:9:87","type":""},{"name":"dataEnd","nativeSrc":"235:7:87","nodeType":"YulTypedName","src":"235:7:87","type":""}],"returnVariables":[{"name":"value0","nativeSrc":"247:6:87","nodeType":"YulTypedName","src":"247:6:87","type":""}],"src":"160:278:87"},{"body":{"nativeSrc":"524:180:87","nodeType":"YulBlock","src":"524:180:87","statements":[{"body":{"nativeSrc":"570:16:87","nodeType":"YulBlock","src":"570:16:87","statements":[{"expression":{"arguments":[{"kind":"number","nativeSrc":"579:1:87","nodeType":"YulLiteral","src":"579:1:87","type":"","value":"0"},{"kind":"number","nativeSrc":"582:1:87","nodeType":"YulLiteral","src":"582:1:87","type":"","value":"0"}],"functionName":{"name":"revert","nativeSrc":"572:6:87","nodeType":"YulIdentifier","src":"572:6:87"},"nativeSrc":"572:12:87","nodeType":"YulFunctionCall","src":"572:12:87"},"nativeSrc":"572:12:87","nodeType":"YulExpressionStatement","src":"572:12:87"}]},"condition":{"arguments":[{"arguments":[{"name":"dataEnd","nativeSrc":"545:7:87","nodeType":"YulIdentifier","src":"545:7:87"},{"name":"headStart","nativeSrc":"554:9:87","nodeType":"YulIdentifier","src":"554:9:87"}],"functionName":{"name":"sub","nativeSrc":"541:3:87","nodeType":"YulIdentifier","src":"541:3:87"},"nativeSrc":"541:23:87","nodeType":"YulFunctionCall","src":"541:23:87"},{"kind":"number","nativeSrc":"566:2:87","nodeType":"YulLiteral","src":"566:2:87","type":"","value":"32"}],"functionName":{"name":"slt","nativeSrc":"537:3:87","nodeType":"YulIdentifier","src":"537:3:87"},"nativeSrc":"537:32:87","nodeType":"YulFunctionCall","src":"537:32:87"},"nativeSrc":"534:52:87","nodeType":"YulIf","src":"534:52:87"},{"nativeSrc":"595:29:87","nodeType":"YulVariableDeclaration","src":"595:29:87","value":{"arguments":[{"name":"headStart","nativeSrc":"614:9:87","nodeType":"YulIdentifier","src":"614:9:87"}],"functionName":{"name":"mload","nativeSrc":"608:5:87","nodeType":"YulIdentifier","src":"608:5:87"},"nativeSrc":"608:16:87","nodeType":"YulFunctionCall","src":"608:16:87"},"variables":[{"name":"value","nativeSrc":"599:5:87","nodeType":"YulTypedName","src":"599:5:87","type":""}]},{"expression":{"arguments":[{"name":"value","nativeSrc":"668:5:87","nodeType":"YulIdentifier","src":"668:5:87"}],"functionName":{"name":"validator_revert_contract_IERC4626","nativeSrc":"633:34:87","nodeType":"YulIdentifier","src":"633:34:87"},"nativeSrc":"633:41:87","nodeType":"YulFunctionCall","src":"633:41:87"},"nativeSrc":"633:41:87","nodeType":"YulExpressionStatement","src":"633:41:87"},{"nativeSrc":"683:15:87","nodeType":"YulAssignment","src":"683:15:87","value":{"name":"value","nativeSrc":"693:5:87","nodeType":"YulIdentifier","src":"693:5:87"},"variableNames":[{"name":"value0","nativeSrc":"683:6:87","nodeType":"YulIdentifier","src":"683:6:87"}]}]},"name":"abi_decode_tuple_t_address_fromMemory","nativeSrc":"443:261:87","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nativeSrc":"490:9:87","nodeType":"YulTypedName","src":"490:9:87","type":""},{"name":"dataEnd","nativeSrc":"501:7:87","nodeType":"YulTypedName","src":"501:7:87","type":""}],"returnVariables":[{"name":"value0","nativeSrc":"513:6:87","nodeType":"YulTypedName","src":"513:6:87","type":""}],"src":"443:261:87"},{"body":{"nativeSrc":"936:252:87","nodeType":"YulBlock","src":"936:252:87","statements":[{"expression":{"arguments":[{"name":"headStart","nativeSrc":"953:9:87","nodeType":"YulIdentifier","src":"953:9:87"},{"kind":"number","nativeSrc":"964:2:87","nodeType":"YulLiteral","src":"964:2:87","type":"","value":"64"}],"functionName":{"name":"mstore","nativeSrc":"946:6:87","nodeType":"YulIdentifier","src":"946:6:87"},"nativeSrc":"946:21:87","nodeType":"YulFunctionCall","src":"946:21:87"},"nativeSrc":"946:21:87","nodeType":"YulExpressionStatement","src":"946:21:87"},{"expression":{"arguments":[{"arguments":[{"name":"headStart","nativeSrc":"987:9:87","nodeType":"YulIdentifier","src":"987:9:87"},{"kind":"number","nativeSrc":"998:2:87","nodeType":"YulLiteral","src":"998:2:87","type":"","value":"64"}],"functionName":{"name":"add","nativeSrc":"983:3:87","nodeType":"YulIdentifier","src":"983:3:87"},"nativeSrc":"983:18:87","nodeType":"YulFunctionCall","src":"983:18:87"},{"kind":"number","nativeSrc":"1003:2:87","nodeType":"YulLiteral","src":"1003:2:87","type":"","value":"30"}],"functionName":{"name":"mstore","nativeSrc":"976:6:87","nodeType":"YulIdentifier","src":"976:6:87"},"nativeSrc":"976:30:87","nodeType":"YulFunctionCall","src":"976:30:87"},"nativeSrc":"976:30:87","nodeType":"YulExpressionStatement","src":"976:30:87"},{"expression":{"arguments":[{"arguments":[{"name":"headStart","nativeSrc":"1026:9:87","nodeType":"YulIdentifier","src":"1026:9:87"},{"kind":"number","nativeSrc":"1037:2:87","nodeType":"YulLiteral","src":"1037:2:87","type":"","value":"96"}],"functionName":{"name":"add","nativeSrc":"1022:3:87","nodeType":"YulIdentifier","src":"1022:3:87"},"nativeSrc":"1022:18:87","nodeType":"YulFunctionCall","src":"1022:18:87"},{"hexValue":"636f2e656e7375726f2e496e766573745374726174656779436c69656e74","kind":"string","nativeSrc":"1042:32:87","nodeType":"YulLiteral","src":"1042:32:87","type":"","value":"co.ensuro.InvestStrategyClient"}],"functionName":{"name":"mstore","nativeSrc":"1015:6:87","nodeType":"YulIdentifier","src":"1015:6:87"},"nativeSrc":"1015:60:87","nodeType":"YulFunctionCall","src":"1015:60:87"},"nativeSrc":"1015:60:87","nodeType":"YulExpressionStatement","src":"1015:60:87"},{"nativeSrc":"1084:27:87","nodeType":"YulAssignment","src":"1084:27:87","value":{"arguments":[{"name":"headStart","nativeSrc":"1096:9:87","nodeType":"YulIdentifier","src":"1096:9:87"},{"kind":"number","nativeSrc":"1107:3:87","nodeType":"YulLiteral","src":"1107:3:87","type":"","value":"128"}],"functionName":{"name":"add","nativeSrc":"1092:3:87","nodeType":"YulIdentifier","src":"1092:3:87"},"nativeSrc":"1092:19:87","nodeType":"YulFunctionCall","src":"1092:19:87"},"variableNames":[{"name":"tail","nativeSrc":"1084:4:87","nodeType":"YulIdentifier","src":"1084:4:87"}]},{"expression":{"arguments":[{"arguments":[{"name":"headStart","nativeSrc":"1131:9:87","nodeType":"YulIdentifier","src":"1131:9:87"},{"kind":"number","nativeSrc":"1142:4:87","nodeType":"YulLiteral","src":"1142:4:87","type":"","value":"0x20"}],"functionName":{"name":"add","nativeSrc":"1127:3:87","nodeType":"YulIdentifier","src":"1127:3:87"},"nativeSrc":"1127:20:87","nodeType":"YulFunctionCall","src":"1127:20:87"},{"arguments":[{"name":"value0","nativeSrc":"1153:6:87","nodeType":"YulIdentifier","src":"1153:6:87"},{"arguments":[{"arguments":[{"kind":"number","nativeSrc":"1169:3:87","nodeType":"YulLiteral","src":"1169:3:87","type":"","value":"160"},{"kind":"number","nativeSrc":"1174:1:87","nodeType":"YulLiteral","src":"1174:1:87","type":"","value":"1"}],"functionName":{"name":"shl","nativeSrc":"1165:3:87","nodeType":"YulIdentifier","src":"1165:3:87"},"nativeSrc":"1165:11:87","nodeType":"YulFunctionCall","src":"1165:11:87"},{"kind":"number","nativeSrc":"1178:1:87","nodeType":"YulLiteral","src":"1178:1:87","type":"","value":"1"}],"functionName":{"name":"sub","nativeSrc":"1161:3:87","nodeType":"YulIdentifier","src":"1161:3:87"},"nativeSrc":"1161:19:87","nodeType":"YulFunctionCall","src":"1161:19:87"}],"functionName":{"name":"and","nativeSrc":"1149:3:87","nodeType":"YulIdentifier","src":"1149:3:87"},"nativeSrc":"1149:32:87","nodeType":"YulFunctionCall","src":"1149:32:87"}],"functionName":{"name":"mstore","nativeSrc":"1120:6:87","nodeType":"YulIdentifier","src":"1120:6:87"},"nativeSrc":"1120:62:87","nodeType":"YulFunctionCall","src":"1120:62:87"},"nativeSrc":"1120:62:87","nodeType":"YulExpressionStatement","src":"1120:62:87"}]},"name":"abi_encode_tuple_t_stringliteral_4fed0cd3539a36e00a34a6c026c2615824c9ad47da5ef65e8372c7e721c05d79_t_contract$_IInvestStrategy_$20725__to_t_string_memory_ptr_t_address__fromStack_reversed","nativeSrc":"709:479:87","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nativeSrc":"905:9:87","nodeType":"YulTypedName","src":"905:9:87","type":""},{"name":"value0","nativeSrc":"916:6:87","nodeType":"YulTypedName","src":"916:6:87","type":""}],"returnVariables":[{"name":"tail","nativeSrc":"927:4:87","nodeType":"YulTypedName","src":"927:4:87","type":""}],"src":"709:479:87"}]},"contents":"{\n    { }\n    function validator_revert_contract_IERC4626(value)\n    {\n        if iszero(eq(value, and(value, sub(shl(160, 1), 1)))) { revert(0, 0) }\n    }\n    function abi_decode_tuple_t_contract$_IERC4626_$7127_fromMemory(headStart, dataEnd) -> value0\n    {\n        if slt(sub(dataEnd, headStart), 32) { revert(0, 0) }\n        let value := mload(headStart)\n        validator_revert_contract_IERC4626(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_contract_IERC4626(value)\n        value0 := value\n    }\n    function abi_encode_tuple_t_stringliteral_4fed0cd3539a36e00a34a6c026c2615824c9ad47da5ef65e8372c7e721c05d79_t_contract$_IInvestStrategy_$20725__to_t_string_memory_ptr_t_address__fromStack_reversed(headStart, value0) -> tail\n    {\n        mstore(headStart, 64)\n        mstore(add(headStart, 64), 30)\n        mstore(add(headStart, 96), \"co.ensuro.InvestStrategyClient\")\n        tail := add(headStart, 128)\n        mstore(add(headStart, 0x20), and(value0, sub(shl(160, 1), 1)))\n    }\n}","id":87,"language":"Yul","name":"#utility.yul"}],"linkReferences":{},"object":"3060808181526040610120818152601e610160527f636f2e656e7375726f2e496e766573745374726174656779436c69656e74000061018052610140939093526101008290526101a09052902060a05234801561005a575f5ffd5b50604051610b62380380610b628339810160408190526100799161010e565b6001600160a01b03811660c0819052604080516338d52e0f60e01b815290516338d52e0f916004808201926020929091908290030181865afa1580156100c1573d5f5f3e3d5ffd5b505050506040513d601f19601f820116820180604052508101906100e5919061010e565b6001600160a01b031660e05250610130565b6001600160a01b038116811461010b575f5ffd5b50565b5f6020828403121561011e575f5ffd5b8151610129816100f7565b9392505050565b60805160a05160c05160e0516109ab6101b75f395f818161015401526105b501525f81816101c9015281816102b70152818161034f01528181610428015281816105860152818161063c0152818161069401526106e601525f61012101525f818161020c01528181610255015281816103cb015281816104c7015261053001526109ab5ff3fe608060405234801561000f575f5ffd5b50600436106100a6575f3560e01c80639c4667a21161006e5780639c4667a2146101435780639cd471281461018e578063b6b55f25146101a1578063ce96cb77146101b4578063de2a87b5146101c7578063f3e0ffbf146101ed575f5ffd5b80630981b1c2146100aa5780632e1a7d4d146100d3578063402d267d146100e85780635a117456146101095780635b9a4c351461011c575b5f5ffd5b6100bd6100b8366004610816565b610200565b6040516100ca9190610868565b60405180910390f35b6100e66100e136600461089d565b61024b565b005b6100fb6100f63660046108b4565b61032e565b6040519081526020016100ca565b6100e66101173660046108ee565b6103c1565b6100fb7f000000000000000000000000000000000000000000000000000000000000000081565b6101766101513660046108b4565b507f000000000000000000000000000000000000000000000000000000000000000090565b6040516001600160a01b0390911681526020016100ca565b6100e661019c366004610909565b6104bd565b6100e66101af36600461089d565b610526565b6100fb6101c23660046108b4565b610673565b7f0000000000000000000000000000000000000000000000000000000000000000610176565b6100fb6101fb3660046108b4565b6106c5565b60606001600160a01b037f00000000000000000000000000000000000000000000000000000000000000001630036100a657604051632abf118b60e21b815260040160405180910390fd5b6001600160a01b037f000000000000000000000000000000000000000000000000000000000000000016300361029457604051632abf118b60e21b815260040160405180910390fd5b604051632d182be560e21b815260048101829052306024820181905260448201527f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03169063b460af94906064015b6020604051808303815f875af1158015610306573d5f5f3e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061032a9190610943565b5050565b60405163402d267d60e01b81526001600160a01b0382811660048301525f917f00000000000000000000000000000000000000000000000000000000000000009091169063402d267d906024015b602060405180830381865afa158015610397573d5f5f3e3d5ffd5b505050506040513d601f19601f820116820180604052508101906103bb9190610943565b92915050565b6001600160a01b037f000000000000000000000000000000000000000000000000000000000000000016300361040a57604051632abf118b60e21b815260040160405180910390fd5b8015801561049c57506040516370a0823160e01b81523060048201527f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316906370a0823190602401602060405180830381865afa158015610475573d5f5f3e3d5ffd5b505050506040513d601f19601f820116820180604052508101906104999190610943565b15155b156104ba576040516342a176d160e11b815260040160405180910390fd5b50565b6001600160a01b037f000000000000000000000000000000000000000000000000000000000000000016300361050657604051632abf118b60e21b815260040160405180910390fd5b8051156104ba576040516350701b6160e01b815260040160405180910390fd5b6001600160a01b037f000000000000000000000000000000000000000000000000000000000000000016300361056f57604051632abf118b60e21b815260040160405180910390fd5b60405163095ea7b360e01b81526001600160a01b037f000000000000000000000000000000000000000000000000000000000000000081166004830152602482018390527f0000000000000000000000000000000000000000000000000000000000000000169063095ea7b3906044016020604051808303815f875af11580156105fb573d5f5f3e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061061f919061095a565b50604051636e553f6560e01b8152600481018290523060248201527f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031690636e553f65906044016102ea565b60405163ce96cb7760e01b81526001600160a01b0382811660048301525f917f00000000000000000000000000000000000000000000000000000000000000009091169063ce96cb779060240161037c565b6040516370a0823160e01b81526001600160a01b0382811660048301525f917f0000000000000000000000000000000000000000000000000000000000000000909116906307a2d13a9082906370a0823190602401602060405180830381865afa158015610735573d5f5f3e3d5ffd5b505050506040513d601f19601f820116820180604052508101906107599190610943565b6040518263ffffffff1660e01b815260040161037c91815260200190565b634e487b7160e01b5f52604160045260245ffd5b5f82601f83011261079a575f5ffd5b813567ffffffffffffffff8111156107b4576107b4610777565b604051601f8201601f19908116603f0116810167ffffffffffffffff811182821017156107e3576107e3610777565b6040528181528382016020018510156107fa575f5ffd5b816020850160208301375f918101602001919091529392505050565b5f5f60408385031215610827575f5ffd5b823560ff81168114610837575f5ffd5b9150602083013567ffffffffffffffff811115610852575f5ffd5b61085e8582860161078b565b9150509250929050565b602081525f82518060208401528060208501604085015e5f604082850101526040601f19601f83011684010191505092915050565b5f602082840312156108ad575f5ffd5b5035919050565b5f602082840312156108c4575f5ffd5b81356001600160a01b03811681146108da575f5ffd5b9392505050565b80151581146104ba575f5ffd5b5f602082840312156108fe575f5ffd5b81356108da816108e1565b5f60208284031215610919575f5ffd5b813567ffffffffffffffff81111561092f575f5ffd5b61093b8482850161078b565b949350505050565b5f60208284031215610953575f5ffd5b5051919050565b5f6020828403121561096a575f5ffd5b81516108da816108e156fea26469706673582212206211cf4f4a2c3f65954bbdb6d146b5b47a7a47c53a2b6567ee3200d8aa651b2864736f6c634300081e0033","opcodes":"ADDRESS PUSH1 0x80 DUP2 DUP2 MSTORE PUSH1 0x40 PUSH2 0x120 DUP2 DUP2 MSTORE PUSH1 0x1E PUSH2 0x160 MSTORE PUSH32 0x636F2E656E7375726F2E496E766573745374726174656779436C69656E740000 PUSH2 0x180 MSTORE PUSH2 0x140 SWAP4 SWAP1 SWAP4 MSTORE PUSH2 0x100 DUP3 SWAP1 MSTORE PUSH2 0x1A0 SWAP1 MSTORE SWAP1 KECCAK256 PUSH1 0xA0 MSTORE CALLVALUE DUP1 ISZERO PUSH2 0x5A JUMPI PUSH0 PUSH0 REVERT JUMPDEST POP PUSH1 0x40 MLOAD PUSH2 0xB62 CODESIZE SUB DUP1 PUSH2 0xB62 DUP4 CODECOPY DUP2 ADD PUSH1 0x40 DUP2 SWAP1 MSTORE PUSH2 0x79 SWAP2 PUSH2 0x10E JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 AND PUSH1 0xC0 DUP2 SWAP1 MSTORE PUSH1 0x40 DUP1 MLOAD PUSH4 0x38D52E0F PUSH1 0xE0 SHL DUP2 MSTORE SWAP1 MLOAD PUSH4 0x38D52E0F SWAP2 PUSH1 0x4 DUP1 DUP3 ADD SWAP3 PUSH1 0x20 SWAP3 SWAP1 SWAP2 SWAP1 DUP3 SWAP1 SUB ADD DUP2 DUP7 GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0xC1 JUMPI RETURNDATASIZE PUSH0 PUSH0 RETURNDATACOPY RETURNDATASIZE PUSH0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP3 ADD DUP1 PUSH1 0x40 MSTORE POP DUP2 ADD SWAP1 PUSH2 0xE5 SWAP2 SWAP1 PUSH2 0x10E JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH1 0xE0 MSTORE POP PUSH2 0x130 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 AND DUP2 EQ PUSH2 0x10B JUMPI PUSH0 PUSH0 REVERT JUMPDEST POP JUMP JUMPDEST PUSH0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x11E JUMPI PUSH0 PUSH0 REVERT JUMPDEST DUP2 MLOAD PUSH2 0x129 DUP2 PUSH2 0xF7 JUMP JUMPDEST SWAP4 SWAP3 POP POP POP JUMP JUMPDEST PUSH1 0x80 MLOAD PUSH1 0xA0 MLOAD PUSH1 0xC0 MLOAD PUSH1 0xE0 MLOAD PUSH2 0x9AB PUSH2 0x1B7 PUSH0 CODECOPY PUSH0 DUP2 DUP2 PUSH2 0x154 ADD MSTORE PUSH2 0x5B5 ADD MSTORE PUSH0 DUP2 DUP2 PUSH2 0x1C9 ADD MSTORE DUP2 DUP2 PUSH2 0x2B7 ADD MSTORE DUP2 DUP2 PUSH2 0x34F ADD MSTORE DUP2 DUP2 PUSH2 0x428 ADD MSTORE DUP2 DUP2 PUSH2 0x586 ADD MSTORE DUP2 DUP2 PUSH2 0x63C ADD MSTORE DUP2 DUP2 PUSH2 0x694 ADD MSTORE PUSH2 0x6E6 ADD MSTORE PUSH0 PUSH2 0x121 ADD MSTORE PUSH0 DUP2 DUP2 PUSH2 0x20C ADD MSTORE DUP2 DUP2 PUSH2 0x255 ADD MSTORE DUP2 DUP2 PUSH2 0x3CB ADD MSTORE DUP2 DUP2 PUSH2 0x4C7 ADD MSTORE PUSH2 0x530 ADD MSTORE PUSH2 0x9AB PUSH0 RETURN INVALID PUSH1 0x80 PUSH1 0x40 MSTORE CALLVALUE DUP1 ISZERO PUSH2 0xF JUMPI PUSH0 PUSH0 REVERT JUMPDEST POP PUSH1 0x4 CALLDATASIZE LT PUSH2 0xA6 JUMPI PUSH0 CALLDATALOAD PUSH1 0xE0 SHR DUP1 PUSH4 0x9C4667A2 GT PUSH2 0x6E JUMPI DUP1 PUSH4 0x9C4667A2 EQ PUSH2 0x143 JUMPI DUP1 PUSH4 0x9CD47128 EQ PUSH2 0x18E JUMPI DUP1 PUSH4 0xB6B55F25 EQ PUSH2 0x1A1 JUMPI DUP1 PUSH4 0xCE96CB77 EQ PUSH2 0x1B4 JUMPI DUP1 PUSH4 0xDE2A87B5 EQ PUSH2 0x1C7 JUMPI DUP1 PUSH4 0xF3E0FFBF EQ PUSH2 0x1ED JUMPI PUSH0 PUSH0 REVERT JUMPDEST DUP1 PUSH4 0x981B1C2 EQ PUSH2 0xAA JUMPI DUP1 PUSH4 0x2E1A7D4D EQ PUSH2 0xD3 JUMPI DUP1 PUSH4 0x402D267D EQ PUSH2 0xE8 JUMPI DUP1 PUSH4 0x5A117456 EQ PUSH2 0x109 JUMPI DUP1 PUSH4 0x5B9A4C35 EQ PUSH2 0x11C JUMPI JUMPDEST PUSH0 PUSH0 REVERT JUMPDEST PUSH2 0xBD PUSH2 0xB8 CALLDATASIZE PUSH1 0x4 PUSH2 0x816 JUMP JUMPDEST PUSH2 0x200 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0xCA SWAP2 SWAP1 PUSH2 0x868 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST PUSH2 0xE6 PUSH2 0xE1 CALLDATASIZE PUSH1 0x4 PUSH2 0x89D JUMP JUMPDEST PUSH2 0x24B JUMP JUMPDEST STOP JUMPDEST PUSH2 0xFB PUSH2 0xF6 CALLDATASIZE PUSH1 0x4 PUSH2 0x8B4 JUMP JUMPDEST PUSH2 0x32E JUMP JUMPDEST PUSH1 0x40 MLOAD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH2 0xCA JUMP JUMPDEST PUSH2 0xE6 PUSH2 0x117 CALLDATASIZE PUSH1 0x4 PUSH2 0x8EE JUMP JUMPDEST PUSH2 0x3C1 JUMP JUMPDEST PUSH2 0xFB PUSH32 0x0 DUP2 JUMP JUMPDEST PUSH2 0x176 PUSH2 0x151 CALLDATASIZE PUSH1 0x4 PUSH2 0x8B4 JUMP JUMPDEST POP PUSH32 0x0 SWAP1 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP1 SWAP2 AND DUP2 MSTORE PUSH1 0x20 ADD PUSH2 0xCA JUMP JUMPDEST PUSH2 0xE6 PUSH2 0x19C CALLDATASIZE PUSH1 0x4 PUSH2 0x909 JUMP JUMPDEST PUSH2 0x4BD JUMP JUMPDEST PUSH2 0xE6 PUSH2 0x1AF CALLDATASIZE PUSH1 0x4 PUSH2 0x89D JUMP JUMPDEST PUSH2 0x526 JUMP JUMPDEST PUSH2 0xFB PUSH2 0x1C2 CALLDATASIZE PUSH1 0x4 PUSH2 0x8B4 JUMP JUMPDEST PUSH2 0x673 JUMP JUMPDEST PUSH32 0x0 PUSH2 0x176 JUMP JUMPDEST PUSH2 0xFB PUSH2 0x1FB CALLDATASIZE PUSH1 0x4 PUSH2 0x8B4 JUMP JUMPDEST PUSH2 0x6C5 JUMP JUMPDEST PUSH1 0x60 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB PUSH32 0x0 AND ADDRESS SUB PUSH2 0xA6 JUMPI PUSH1 0x40 MLOAD PUSH4 0x2ABF118B PUSH1 0xE2 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB PUSH32 0x0 AND ADDRESS SUB PUSH2 0x294 JUMPI PUSH1 0x40 MLOAD PUSH4 0x2ABF118B PUSH1 0xE2 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH1 0x40 MLOAD PUSH4 0x2D182BE5 PUSH1 0xE2 SHL DUP2 MSTORE PUSH1 0x4 DUP2 ADD DUP3 SWAP1 MSTORE ADDRESS PUSH1 0x24 DUP3 ADD DUP2 SWAP1 MSTORE PUSH1 0x44 DUP3 ADD MSTORE PUSH32 0x0 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND SWAP1 PUSH4 0xB460AF94 SWAP1 PUSH1 0x64 ADD JUMPDEST PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 PUSH0 DUP8 GAS CALL ISZERO DUP1 ISZERO PUSH2 0x306 JUMPI RETURNDATASIZE PUSH0 PUSH0 RETURNDATACOPY RETURNDATASIZE PUSH0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP3 ADD DUP1 PUSH1 0x40 MSTORE POP DUP2 ADD SWAP1 PUSH2 0x32A SWAP2 SWAP1 PUSH2 0x943 JUMP JUMPDEST POP POP JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH4 0x402D267D PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP3 DUP2 AND PUSH1 0x4 DUP4 ADD MSTORE PUSH0 SWAP2 PUSH32 0x0 SWAP1 SWAP2 AND SWAP1 PUSH4 0x402D267D SWAP1 PUSH1 0x24 ADD JUMPDEST PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x397 JUMPI RETURNDATASIZE PUSH0 PUSH0 RETURNDATACOPY RETURNDATASIZE PUSH0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP3 ADD DUP1 PUSH1 0x40 MSTORE POP DUP2 ADD SWAP1 PUSH2 0x3BB SWAP2 SWAP1 PUSH2 0x943 JUMP JUMPDEST SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB PUSH32 0x0 AND ADDRESS SUB PUSH2 0x40A JUMPI PUSH1 0x40 MLOAD PUSH4 0x2ABF118B PUSH1 0xE2 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST DUP1 ISZERO DUP1 ISZERO PUSH2 0x49C JUMPI POP PUSH1 0x40 MLOAD PUSH4 0x70A08231 PUSH1 0xE0 SHL DUP2 MSTORE ADDRESS PUSH1 0x4 DUP3 ADD MSTORE PUSH32 0x0 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND SWAP1 PUSH4 0x70A08231 SWAP1 PUSH1 0x24 ADD PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x475 JUMPI RETURNDATASIZE PUSH0 PUSH0 RETURNDATACOPY RETURNDATASIZE PUSH0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP3 ADD DUP1 PUSH1 0x40 MSTORE POP DUP2 ADD SWAP1 PUSH2 0x499 SWAP2 SWAP1 PUSH2 0x943 JUMP JUMPDEST ISZERO ISZERO JUMPDEST ISZERO PUSH2 0x4BA JUMPI PUSH1 0x40 MLOAD PUSH4 0x42A176D1 PUSH1 0xE1 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST POP JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB PUSH32 0x0 AND ADDRESS SUB PUSH2 0x506 JUMPI PUSH1 0x40 MLOAD PUSH4 0x2ABF118B PUSH1 0xE2 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST DUP1 MLOAD ISZERO PUSH2 0x4BA JUMPI PUSH1 0x40 MLOAD PUSH4 0x50701B61 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 PUSH32 0x0 AND ADDRESS SUB PUSH2 0x56F JUMPI PUSH1 0x40 MLOAD PUSH4 0x2ABF118B PUSH1 0xE2 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH1 0x40 MLOAD PUSH4 0x95EA7B3 PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB PUSH32 0x0 DUP2 AND PUSH1 0x4 DUP4 ADD MSTORE PUSH1 0x24 DUP3 ADD DUP4 SWAP1 MSTORE PUSH32 0x0 AND SWAP1 PUSH4 0x95EA7B3 SWAP1 PUSH1 0x44 ADD PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 PUSH0 DUP8 GAS CALL ISZERO DUP1 ISZERO PUSH2 0x5FB JUMPI RETURNDATASIZE PUSH0 PUSH0 RETURNDATACOPY RETURNDATASIZE PUSH0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP3 ADD DUP1 PUSH1 0x40 MSTORE POP DUP2 ADD SWAP1 PUSH2 0x61F SWAP2 SWAP1 PUSH2 0x95A JUMP JUMPDEST POP PUSH1 0x40 MLOAD PUSH4 0x6E553F65 PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 DUP2 ADD DUP3 SWAP1 MSTORE ADDRESS PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x0 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND SWAP1 PUSH4 0x6E553F65 SWAP1 PUSH1 0x44 ADD PUSH2 0x2EA JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH4 0xCE96CB77 PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP3 DUP2 AND PUSH1 0x4 DUP4 ADD MSTORE PUSH0 SWAP2 PUSH32 0x0 SWAP1 SWAP2 AND SWAP1 PUSH4 0xCE96CB77 SWAP1 PUSH1 0x24 ADD PUSH2 0x37C JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH4 0x70A08231 PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP3 DUP2 AND PUSH1 0x4 DUP4 ADD MSTORE PUSH0 SWAP2 PUSH32 0x0 SWAP1 SWAP2 AND SWAP1 PUSH4 0x7A2D13A SWAP1 DUP3 SWAP1 PUSH4 0x70A08231 SWAP1 PUSH1 0x24 ADD PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x735 JUMPI RETURNDATASIZE PUSH0 PUSH0 RETURNDATACOPY RETURNDATASIZE PUSH0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP3 ADD DUP1 PUSH1 0x40 MSTORE POP DUP2 ADD SWAP1 PUSH2 0x759 SWAP2 SWAP1 PUSH2 0x943 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP3 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x37C SWAP2 DUP2 MSTORE PUSH1 0x20 ADD SWAP1 JUMP JUMPDEST PUSH4 0x4E487B71 PUSH1 0xE0 SHL PUSH0 MSTORE PUSH1 0x41 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH0 REVERT JUMPDEST PUSH0 DUP3 PUSH1 0x1F DUP4 ADD SLT PUSH2 0x79A JUMPI PUSH0 PUSH0 REVERT JUMPDEST DUP2 CALLDATALOAD PUSH8 0xFFFFFFFFFFFFFFFF DUP2 GT ISZERO PUSH2 0x7B4 JUMPI PUSH2 0x7B4 PUSH2 0x777 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH1 0x1F DUP3 ADD PUSH1 0x1F NOT SWAP1 DUP2 AND PUSH1 0x3F ADD AND DUP2 ADD PUSH8 0xFFFFFFFFFFFFFFFF DUP2 GT DUP3 DUP3 LT OR ISZERO PUSH2 0x7E3 JUMPI PUSH2 0x7E3 PUSH2 0x777 JUMP JUMPDEST PUSH1 0x40 MSTORE DUP2 DUP2 MSTORE DUP4 DUP3 ADD PUSH1 0x20 ADD DUP6 LT ISZERO PUSH2 0x7FA JUMPI PUSH0 PUSH0 REVERT JUMPDEST DUP2 PUSH1 0x20 DUP6 ADD PUSH1 0x20 DUP4 ADD CALLDATACOPY PUSH0 SWAP2 DUP2 ADD PUSH1 0x20 ADD SWAP2 SWAP1 SWAP2 MSTORE SWAP4 SWAP3 POP POP POP JUMP JUMPDEST PUSH0 PUSH0 PUSH1 0x40 DUP4 DUP6 SUB SLT ISZERO PUSH2 0x827 JUMPI PUSH0 PUSH0 REVERT JUMPDEST DUP3 CALLDATALOAD PUSH1 0xFF DUP2 AND DUP2 EQ PUSH2 0x837 JUMPI PUSH0 PUSH0 REVERT JUMPDEST SWAP2 POP PUSH1 0x20 DUP4 ADD CALLDATALOAD PUSH8 0xFFFFFFFFFFFFFFFF DUP2 GT ISZERO PUSH2 0x852 JUMPI PUSH0 PUSH0 REVERT JUMPDEST PUSH2 0x85E DUP6 DUP3 DUP7 ADD PUSH2 0x78B JUMP JUMPDEST SWAP2 POP POP SWAP3 POP SWAP3 SWAP1 POP JUMP JUMPDEST PUSH1 0x20 DUP2 MSTORE PUSH0 DUP3 MLOAD DUP1 PUSH1 0x20 DUP5 ADD MSTORE DUP1 PUSH1 0x20 DUP6 ADD PUSH1 0x40 DUP6 ADD MCOPY PUSH0 PUSH1 0x40 DUP3 DUP6 ADD ADD MSTORE PUSH1 0x40 PUSH1 0x1F NOT PUSH1 0x1F DUP4 ADD AND DUP5 ADD ADD SWAP2 POP POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x8AD JUMPI PUSH0 PUSH0 REVERT JUMPDEST POP CALLDATALOAD SWAP2 SWAP1 POP JUMP JUMPDEST PUSH0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x8C4 JUMPI PUSH0 PUSH0 REVERT JUMPDEST DUP2 CALLDATALOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 AND DUP2 EQ PUSH2 0x8DA JUMPI PUSH0 PUSH0 REVERT JUMPDEST SWAP4 SWAP3 POP POP POP JUMP JUMPDEST DUP1 ISZERO ISZERO DUP2 EQ PUSH2 0x4BA JUMPI PUSH0 PUSH0 REVERT JUMPDEST PUSH0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x8FE JUMPI PUSH0 PUSH0 REVERT JUMPDEST DUP2 CALLDATALOAD PUSH2 0x8DA DUP2 PUSH2 0x8E1 JUMP JUMPDEST PUSH0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x919 JUMPI PUSH0 PUSH0 REVERT JUMPDEST DUP2 CALLDATALOAD PUSH8 0xFFFFFFFFFFFFFFFF DUP2 GT ISZERO PUSH2 0x92F JUMPI PUSH0 PUSH0 REVERT JUMPDEST PUSH2 0x93B DUP5 DUP3 DUP6 ADD PUSH2 0x78B JUMP JUMPDEST SWAP5 SWAP4 POP POP POP POP JUMP JUMPDEST PUSH0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x953 JUMPI PUSH0 PUSH0 REVERT JUMPDEST POP MLOAD SWAP2 SWAP1 POP JUMP JUMPDEST PUSH0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x96A JUMPI PUSH0 PUSH0 REVERT JUMPDEST DUP2 MLOAD PUSH2 0x8DA DUP2 PUSH2 0x8E1 JUMP INVALID LOG2 PUSH5 0x6970667358 0x22 SLT KECCAK256 PUSH3 0x11CF4F BLOBBASEFEE 0x2C EXTCODEHASH PUSH6 0x954BBDB6D146 0xB5 0xB4 PUSH27 0x7A47C53A2B6567EE3200D8AA651B2864736F6C634300081E003300 ","sourceMap":"608:4:79:-:0;565:48;;;;511:2657;7309:54:53;946:21:87;;;1003:2;983:18;976:30;1042:32;1022:18;1015:60;1127:20;1120:62;;;;511:2657:79;7309:54:53;;;1092:19:87;7309:54:53;;7299:65;;617:81:79;;1012:92;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;-1:-1:-1;;;;;1047:15:79;;;;;;1084:14;;;-1:-1:-1;;;1084:14:79;;;;:12;;:14;;;;;;;;;;;;;;;1047:15;1084:14;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;-1:-1:-1;;;;;1068:31:79;;;-1:-1:-1;511:2657:79;;14:141:87;-1:-1:-1;;;;;99:31:87;;89:42;;79:70;;145:1;142;135:12;79:70;14:141;:::o;160:278::-;247:6;300:2;288:9;279:7;275:23;271:32;268:52;;;316:1;313;306:12;268:52;348:9;342:16;367:41;402:5;367:41;:::i;:::-;427:5;160:278;-1:-1:-1;;;160:278:87:o;709:479::-;511:2657:79;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;"},"deployedBytecode":{"functionDebugData":{"@asset_23110":{"entryPoint":null,"id":23110,"parameterSlots":1,"returnSlots":1},"@connect_23039":{"entryPoint":1213,"id":23039,"parameterSlots":1,"returnSlots":0},"@deposit_23192":{"entryPoint":1318,"id":23192,"parameterSlots":1,"returnSlots":0},"@disconnect_23065":{"entryPoint":961,"id":23065,"parameterSlots":1,"returnSlots":0},"@forwardEntryPoint_23208":{"entryPoint":512,"id":23208,"parameterSlots":2,"returnSlots":1},"@investVault_23120":{"entryPoint":null,"id":23120,"parameterSlots":0,"returnSlots":1},"@maxDeposit_23095":{"entryPoint":814,"id":23095,"parameterSlots":1,"returnSlots":1},"@maxWithdraw_23080":{"entryPoint":1651,"id":23080,"parameterSlots":1,"returnSlots":1},"@storageSlot_22976":{"entryPoint":null,"id":22976,"parameterSlots":0,"returnSlots":0},"@totalAssets_23138":{"entryPoint":1733,"id":23138,"parameterSlots":1,"returnSlots":1},"@withdraw_23162":{"entryPoint":587,"id":23162,"parameterSlots":1,"returnSlots":0},"abi_decode_bytes":{"entryPoint":1931,"id":null,"parameterSlots":2,"returnSlots":1},"abi_decode_tuple_t_address":{"entryPoint":2228,"id":null,"parameterSlots":2,"returnSlots":1},"abi_decode_tuple_t_bool":{"entryPoint":2286,"id":null,"parameterSlots":2,"returnSlots":1},"abi_decode_tuple_t_bool_fromMemory":{"entryPoint":2394,"id":null,"parameterSlots":2,"returnSlots":1},"abi_decode_tuple_t_bytes_memory_ptr":{"entryPoint":2313,"id":null,"parameterSlots":2,"returnSlots":1},"abi_decode_tuple_t_uint256":{"entryPoint":2205,"id":null,"parameterSlots":2,"returnSlots":1},"abi_decode_tuple_t_uint256_fromMemory":{"entryPoint":2371,"id":null,"parameterSlots":2,"returnSlots":1},"abi_decode_tuple_t_uint8t_bytes_memory_ptr":{"entryPoint":2070,"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_address_t_uint256__to_t_address_t_uint256__fromStack_reversed":{"entryPoint":null,"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":2152,"id":null,"parameterSlots":2,"returnSlots":1},"abi_encode_tuple_t_contract$_IERC4626_$7127__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},"abi_encode_tuple_t_uint256_t_address__to_t_uint256_t_address__fromStack_reversed":{"entryPoint":null,"id":null,"parameterSlots":3,"returnSlots":1},"abi_encode_tuple_t_uint256_t_address_t_address__to_t_uint256_t_address_t_address__fromStack_reversed":{"entryPoint":null,"id":null,"parameterSlots":4,"returnSlots":1},"panic_error_0x41":{"entryPoint":1911,"id":null,"parameterSlots":0,"returnSlots":0},"validator_revert_bool":{"entryPoint":2273,"id":null,"parameterSlots":1,"returnSlots":0}},"generatedSources":[{"ast":{"nativeSrc":"0:5116:87","nodeType":"YulBlock","src":"0:5116:87","statements":[{"nativeSrc":"6:3:87","nodeType":"YulBlock","src":"6:3:87","statements":[]},{"body":{"nativeSrc":"46:95:87","nodeType":"YulBlock","src":"46:95:87","statements":[{"expression":{"arguments":[{"kind":"number","nativeSrc":"63:1:87","nodeType":"YulLiteral","src":"63:1:87","type":"","value":"0"},{"arguments":[{"kind":"number","nativeSrc":"70:3:87","nodeType":"YulLiteral","src":"70:3:87","type":"","value":"224"},{"kind":"number","nativeSrc":"75:10:87","nodeType":"YulLiteral","src":"75:10:87","type":"","value":"0x4e487b71"}],"functionName":{"name":"shl","nativeSrc":"66:3:87","nodeType":"YulIdentifier","src":"66:3:87"},"nativeSrc":"66:20:87","nodeType":"YulFunctionCall","src":"66:20:87"}],"functionName":{"name":"mstore","nativeSrc":"56:6:87","nodeType":"YulIdentifier","src":"56:6:87"},"nativeSrc":"56:31:87","nodeType":"YulFunctionCall","src":"56:31:87"},"nativeSrc":"56:31:87","nodeType":"YulExpressionStatement","src":"56:31:87"},{"expression":{"arguments":[{"kind":"number","nativeSrc":"103:1:87","nodeType":"YulLiteral","src":"103:1:87","type":"","value":"4"},{"kind":"number","nativeSrc":"106:4:87","nodeType":"YulLiteral","src":"106:4:87","type":"","value":"0x41"}],"functionName":{"name":"mstore","nativeSrc":"96:6:87","nodeType":"YulIdentifier","src":"96:6:87"},"nativeSrc":"96:15:87","nodeType":"YulFunctionCall","src":"96:15:87"},"nativeSrc":"96:15:87","nodeType":"YulExpressionStatement","src":"96:15:87"},{"expression":{"arguments":[{"kind":"number","nativeSrc":"127:1:87","nodeType":"YulLiteral","src":"127:1:87","type":"","value":"0"},{"kind":"number","nativeSrc":"130:4:87","nodeType":"YulLiteral","src":"130:4:87","type":"","value":"0x24"}],"functionName":{"name":"revert","nativeSrc":"120:6:87","nodeType":"YulIdentifier","src":"120:6:87"},"nativeSrc":"120:15:87","nodeType":"YulFunctionCall","src":"120:15:87"},"nativeSrc":"120:15:87","nodeType":"YulExpressionStatement","src":"120:15:87"}]},"name":"panic_error_0x41","nativeSrc":"14:127:87","nodeType":"YulFunctionDefinition","src":"14:127:87"},{"body":{"nativeSrc":"198:673:87","nodeType":"YulBlock","src":"198:673:87","statements":[{"body":{"nativeSrc":"247:16:87","nodeType":"YulBlock","src":"247:16:87","statements":[{"expression":{"arguments":[{"kind":"number","nativeSrc":"256:1:87","nodeType":"YulLiteral","src":"256:1:87","type":"","value":"0"},{"kind":"number","nativeSrc":"259:1:87","nodeType":"YulLiteral","src":"259:1:87","type":"","value":"0"}],"functionName":{"name":"revert","nativeSrc":"249:6:87","nodeType":"YulIdentifier","src":"249:6:87"},"nativeSrc":"249:12:87","nodeType":"YulFunctionCall","src":"249:12:87"},"nativeSrc":"249:12:87","nodeType":"YulExpressionStatement","src":"249:12:87"}]},"condition":{"arguments":[{"arguments":[{"arguments":[{"name":"offset","nativeSrc":"226:6:87","nodeType":"YulIdentifier","src":"226:6:87"},{"kind":"number","nativeSrc":"234:4:87","nodeType":"YulLiteral","src":"234:4:87","type":"","value":"0x1f"}],"functionName":{"name":"add","nativeSrc":"222:3:87","nodeType":"YulIdentifier","src":"222:3:87"},"nativeSrc":"222:17:87","nodeType":"YulFunctionCall","src":"222:17:87"},{"name":"end","nativeSrc":"241:3:87","nodeType":"YulIdentifier","src":"241:3:87"}],"functionName":{"name":"slt","nativeSrc":"218:3:87","nodeType":"YulIdentifier","src":"218:3:87"},"nativeSrc":"218:27:87","nodeType":"YulFunctionCall","src":"218:27:87"}],"functionName":{"name":"iszero","nativeSrc":"211:6:87","nodeType":"YulIdentifier","src":"211:6:87"},"nativeSrc":"211:35:87","nodeType":"YulFunctionCall","src":"211:35:87"},"nativeSrc":"208:55:87","nodeType":"YulIf","src":"208:55:87"},{"nativeSrc":"272:34:87","nodeType":"YulVariableDeclaration","src":"272:34:87","value":{"arguments":[{"name":"offset","nativeSrc":"299:6:87","nodeType":"YulIdentifier","src":"299:6:87"}],"functionName":{"name":"calldataload","nativeSrc":"286:12:87","nodeType":"YulIdentifier","src":"286:12:87"},"nativeSrc":"286:20:87","nodeType":"YulFunctionCall","src":"286:20:87"},"variables":[{"name":"length","nativeSrc":"276:6:87","nodeType":"YulTypedName","src":"276:6:87","type":""}]},{"body":{"nativeSrc":"349:22:87","nodeType":"YulBlock","src":"349:22:87","statements":[{"expression":{"arguments":[],"functionName":{"name":"panic_error_0x41","nativeSrc":"351:16:87","nodeType":"YulIdentifier","src":"351:16:87"},"nativeSrc":"351:18:87","nodeType":"YulFunctionCall","src":"351:18:87"},"nativeSrc":"351:18:87","nodeType":"YulExpressionStatement","src":"351:18:87"}]},"condition":{"arguments":[{"name":"length","nativeSrc":"321:6:87","nodeType":"YulIdentifier","src":"321:6:87"},{"kind":"number","nativeSrc":"329:18:87","nodeType":"YulLiteral","src":"329:18:87","type":"","value":"0xffffffffffffffff"}],"functionName":{"name":"gt","nativeSrc":"318:2:87","nodeType":"YulIdentifier","src":"318:2:87"},"nativeSrc":"318:30:87","nodeType":"YulFunctionCall","src":"318:30:87"},"nativeSrc":"315:56:87","nodeType":"YulIf","src":"315:56:87"},{"nativeSrc":"380:23:87","nodeType":"YulVariableDeclaration","src":"380:23:87","value":{"arguments":[{"kind":"number","nativeSrc":"400:2:87","nodeType":"YulLiteral","src":"400:2:87","type":"","value":"64"}],"functionName":{"name":"mload","nativeSrc":"394:5:87","nodeType":"YulIdentifier","src":"394:5:87"},"nativeSrc":"394:9:87","nodeType":"YulFunctionCall","src":"394:9:87"},"variables":[{"name":"memPtr","nativeSrc":"384:6:87","nodeType":"YulTypedName","src":"384:6:87","type":""}]},{"nativeSrc":"412:85:87","nodeType":"YulVariableDeclaration","src":"412:85:87","value":{"arguments":[{"name":"memPtr","nativeSrc":"434:6:87","nodeType":"YulIdentifier","src":"434:6:87"},{"arguments":[{"arguments":[{"arguments":[{"arguments":[{"name":"length","nativeSrc":"458:6:87","nodeType":"YulIdentifier","src":"458:6:87"},{"kind":"number","nativeSrc":"466:4:87","nodeType":"YulLiteral","src":"466:4:87","type":"","value":"0x1f"}],"functionName":{"name":"add","nativeSrc":"454:3:87","nodeType":"YulIdentifier","src":"454:3:87"},"nativeSrc":"454:17:87","nodeType":"YulFunctionCall","src":"454:17:87"},{"arguments":[{"kind":"number","nativeSrc":"477:2:87","nodeType":"YulLiteral","src":"477:2:87","type":"","value":"31"}],"functionName":{"name":"not","nativeSrc":"473:3:87","nodeType":"YulIdentifier","src":"473:3:87"},"nativeSrc":"473:7:87","nodeType":"YulFunctionCall","src":"473:7:87"}],"functionName":{"name":"and","nativeSrc":"450:3:87","nodeType":"YulIdentifier","src":"450:3:87"},"nativeSrc":"450:31:87","nodeType":"YulFunctionCall","src":"450:31:87"},{"kind":"number","nativeSrc":"483:2:87","nodeType":"YulLiteral","src":"483:2:87","type":"","value":"63"}],"functionName":{"name":"add","nativeSrc":"446:3:87","nodeType":"YulIdentifier","src":"446:3:87"},"nativeSrc":"446:40:87","nodeType":"YulFunctionCall","src":"446:40:87"},{"arguments":[{"kind":"number","nativeSrc":"492:2:87","nodeType":"YulLiteral","src":"492:2:87","type":"","value":"31"}],"functionName":{"name":"not","nativeSrc":"488:3:87","nodeType":"YulIdentifier","src":"488:3:87"},"nativeSrc":"488:7:87","nodeType":"YulFunctionCall","src":"488:7:87"}],"functionName":{"name":"and","nativeSrc":"442:3:87","nodeType":"YulIdentifier","src":"442:3:87"},"nativeSrc":"442:54:87","nodeType":"YulFunctionCall","src":"442:54:87"}],"functionName":{"name":"add","nativeSrc":"430:3:87","nodeType":"YulIdentifier","src":"430:3:87"},"nativeSrc":"430:67:87","nodeType":"YulFunctionCall","src":"430:67:87"},"variables":[{"name":"newFreePtr","nativeSrc":"416:10:87","nodeType":"YulTypedName","src":"416:10:87","type":""}]},{"body":{"nativeSrc":"572:22:87","nodeType":"YulBlock","src":"572:22:87","statements":[{"expression":{"arguments":[],"functionName":{"name":"panic_error_0x41","nativeSrc":"574:16:87","nodeType":"YulIdentifier","src":"574:16:87"},"nativeSrc":"574:18:87","nodeType":"YulFunctionCall","src":"574:18:87"},"nativeSrc":"574:18:87","nodeType":"YulExpressionStatement","src":"574:18:87"}]},"condition":{"arguments":[{"arguments":[{"name":"newFreePtr","nativeSrc":"515:10:87","nodeType":"YulIdentifier","src":"515:10:87"},{"kind":"number","nativeSrc":"527:18:87","nodeType":"YulLiteral","src":"527:18:87","type":"","value":"0xffffffffffffffff"}],"functionName":{"name":"gt","nativeSrc":"512:2:87","nodeType":"YulIdentifier","src":"512:2:87"},"nativeSrc":"512:34:87","nodeType":"YulFunctionCall","src":"512:34:87"},{"arguments":[{"name":"newFreePtr","nativeSrc":"551:10:87","nodeType":"YulIdentifier","src":"551:10:87"},{"name":"memPtr","nativeSrc":"563:6:87","nodeType":"YulIdentifier","src":"563:6:87"}],"functionName":{"name":"lt","nativeSrc":"548:2:87","nodeType":"YulIdentifier","src":"548:2:87"},"nativeSrc":"548:22:87","nodeType":"YulFunctionCall","src":"548:22:87"}],"functionName":{"name":"or","nativeSrc":"509:2:87","nodeType":"YulIdentifier","src":"509:2:87"},"nativeSrc":"509:62:87","nodeType":"YulFunctionCall","src":"509:62:87"},"nativeSrc":"506:88:87","nodeType":"YulIf","src":"506:88:87"},{"expression":{"arguments":[{"kind":"number","nativeSrc":"610:2:87","nodeType":"YulLiteral","src":"610:2:87","type":"","value":"64"},{"name":"newFreePtr","nativeSrc":"614:10:87","nodeType":"YulIdentifier","src":"614:10:87"}],"functionName":{"name":"mstore","nativeSrc":"603:6:87","nodeType":"YulIdentifier","src":"603:6:87"},"nativeSrc":"603:22:87","nodeType":"YulFunctionCall","src":"603:22:87"},"nativeSrc":"603:22:87","nodeType":"YulExpressionStatement","src":"603:22:87"},{"expression":{"arguments":[{"name":"memPtr","nativeSrc":"641:6:87","nodeType":"YulIdentifier","src":"641:6:87"},{"name":"length","nativeSrc":"649:6:87","nodeType":"YulIdentifier","src":"649:6:87"}],"functionName":{"name":"mstore","nativeSrc":"634:6:87","nodeType":"YulIdentifier","src":"634:6:87"},"nativeSrc":"634:22:87","nodeType":"YulFunctionCall","src":"634:22:87"},"nativeSrc":"634:22:87","nodeType":"YulExpressionStatement","src":"634:22:87"},{"body":{"nativeSrc":"708:16:87","nodeType":"YulBlock","src":"708:16:87","statements":[{"expression":{"arguments":[{"kind":"number","nativeSrc":"717:1:87","nodeType":"YulLiteral","src":"717:1:87","type":"","value":"0"},{"kind":"number","nativeSrc":"720:1:87","nodeType":"YulLiteral","src":"720:1:87","type":"","value":"0"}],"functionName":{"name":"revert","nativeSrc":"710:6:87","nodeType":"YulIdentifier","src":"710:6:87"},"nativeSrc":"710:12:87","nodeType":"YulFunctionCall","src":"710:12:87"},"nativeSrc":"710:12:87","nodeType":"YulExpressionStatement","src":"710:12:87"}]},"condition":{"arguments":[{"arguments":[{"arguments":[{"name":"offset","nativeSrc":"679:6:87","nodeType":"YulIdentifier","src":"679:6:87"},{"name":"length","nativeSrc":"687:6:87","nodeType":"YulIdentifier","src":"687:6:87"}],"functionName":{"name":"add","nativeSrc":"675:3:87","nodeType":"YulIdentifier","src":"675:3:87"},"nativeSrc":"675:19:87","nodeType":"YulFunctionCall","src":"675:19:87"},{"kind":"number","nativeSrc":"696:4:87","nodeType":"YulLiteral","src":"696:4:87","type":"","value":"0x20"}],"functionName":{"name":"add","nativeSrc":"671:3:87","nodeType":"YulIdentifier","src":"671:3:87"},"nativeSrc":"671:30:87","nodeType":"YulFunctionCall","src":"671:30:87"},{"name":"end","nativeSrc":"703:3:87","nodeType":"YulIdentifier","src":"703:3:87"}],"functionName":{"name":"gt","nativeSrc":"668:2:87","nodeType":"YulIdentifier","src":"668:2:87"},"nativeSrc":"668:39:87","nodeType":"YulFunctionCall","src":"668:39:87"},"nativeSrc":"665:59:87","nodeType":"YulIf","src":"665:59:87"},{"expression":{"arguments":[{"arguments":[{"name":"memPtr","nativeSrc":"750:6:87","nodeType":"YulIdentifier","src":"750:6:87"},{"kind":"number","nativeSrc":"758:4:87","nodeType":"YulLiteral","src":"758:4:87","type":"","value":"0x20"}],"functionName":{"name":"add","nativeSrc":"746:3:87","nodeType":"YulIdentifier","src":"746:3:87"},"nativeSrc":"746:17:87","nodeType":"YulFunctionCall","src":"746:17:87"},{"arguments":[{"name":"offset","nativeSrc":"769:6:87","nodeType":"YulIdentifier","src":"769:6:87"},{"kind":"number","nativeSrc":"777:4:87","nodeType":"YulLiteral","src":"777:4:87","type":"","value":"0x20"}],"functionName":{"name":"add","nativeSrc":"765:3:87","nodeType":"YulIdentifier","src":"765:3:87"},"nativeSrc":"765:17:87","nodeType":"YulFunctionCall","src":"765:17:87"},{"name":"length","nativeSrc":"784:6:87","nodeType":"YulIdentifier","src":"784:6:87"}],"functionName":{"name":"calldatacopy","nativeSrc":"733:12:87","nodeType":"YulIdentifier","src":"733:12:87"},"nativeSrc":"733:58:87","nodeType":"YulFunctionCall","src":"733:58:87"},"nativeSrc":"733:58:87","nodeType":"YulExpressionStatement","src":"733:58:87"},{"expression":{"arguments":[{"arguments":[{"arguments":[{"name":"memPtr","nativeSrc":"815:6:87","nodeType":"YulIdentifier","src":"815:6:87"},{"name":"length","nativeSrc":"823:6:87","nodeType":"YulIdentifier","src":"823:6:87"}],"functionName":{"name":"add","nativeSrc":"811:3:87","nodeType":"YulIdentifier","src":"811:3:87"},"nativeSrc":"811:19:87","nodeType":"YulFunctionCall","src":"811:19:87"},{"kind":"number","nativeSrc":"832:4:87","nodeType":"YulLiteral","src":"832:4:87","type":"","value":"0x20"}],"functionName":{"name":"add","nativeSrc":"807:3:87","nodeType":"YulIdentifier","src":"807:3:87"},"nativeSrc":"807:30:87","nodeType":"YulFunctionCall","src":"807:30:87"},{"kind":"number","nativeSrc":"839:1:87","nodeType":"YulLiteral","src":"839:1:87","type":"","value":"0"}],"functionName":{"name":"mstore","nativeSrc":"800:6:87","nodeType":"YulIdentifier","src":"800:6:87"},"nativeSrc":"800:41:87","nodeType":"YulFunctionCall","src":"800:41:87"},"nativeSrc":"800:41:87","nodeType":"YulExpressionStatement","src":"800:41:87"},{"nativeSrc":"850:15:87","nodeType":"YulAssignment","src":"850:15:87","value":{"name":"memPtr","nativeSrc":"859:6:87","nodeType":"YulIdentifier","src":"859:6:87"},"variableNames":[{"name":"array","nativeSrc":"850:5:87","nodeType":"YulIdentifier","src":"850:5:87"}]}]},"name":"abi_decode_bytes","nativeSrc":"146:725:87","nodeType":"YulFunctionDefinition","parameters":[{"name":"offset","nativeSrc":"172:6:87","nodeType":"YulTypedName","src":"172:6:87","type":""},{"name":"end","nativeSrc":"180:3:87","nodeType":"YulTypedName","src":"180:3:87","type":""}],"returnVariables":[{"name":"array","nativeSrc":"188:5:87","nodeType":"YulTypedName","src":"188:5:87","type":""}],"src":"146:725:87"},{"body":{"nativeSrc":"970:383:87","nodeType":"YulBlock","src":"970:383:87","statements":[{"body":{"nativeSrc":"1016:16:87","nodeType":"YulBlock","src":"1016:16:87","statements":[{"expression":{"arguments":[{"kind":"number","nativeSrc":"1025:1:87","nodeType":"YulLiteral","src":"1025:1:87","type":"","value":"0"},{"kind":"number","nativeSrc":"1028:1:87","nodeType":"YulLiteral","src":"1028:1:87","type":"","value":"0"}],"functionName":{"name":"revert","nativeSrc":"1018:6:87","nodeType":"YulIdentifier","src":"1018:6:87"},"nativeSrc":"1018:12:87","nodeType":"YulFunctionCall","src":"1018:12:87"},"nativeSrc":"1018:12:87","nodeType":"YulExpressionStatement","src":"1018:12:87"}]},"condition":{"arguments":[{"arguments":[{"name":"dataEnd","nativeSrc":"991:7:87","nodeType":"YulIdentifier","src":"991:7:87"},{"name":"headStart","nativeSrc":"1000:9:87","nodeType":"YulIdentifier","src":"1000:9:87"}],"functionName":{"name":"sub","nativeSrc":"987:3:87","nodeType":"YulIdentifier","src":"987:3:87"},"nativeSrc":"987:23:87","nodeType":"YulFunctionCall","src":"987:23:87"},{"kind":"number","nativeSrc":"1012:2:87","nodeType":"YulLiteral","src":"1012:2:87","type":"","value":"64"}],"functionName":{"name":"slt","nativeSrc":"983:3:87","nodeType":"YulIdentifier","src":"983:3:87"},"nativeSrc":"983:32:87","nodeType":"YulFunctionCall","src":"983:32:87"},"nativeSrc":"980:52:87","nodeType":"YulIf","src":"980:52:87"},{"nativeSrc":"1041:36:87","nodeType":"YulVariableDeclaration","src":"1041:36:87","value":{"arguments":[{"name":"headStart","nativeSrc":"1067:9:87","nodeType":"YulIdentifier","src":"1067:9:87"}],"functionName":{"name":"calldataload","nativeSrc":"1054:12:87","nodeType":"YulIdentifier","src":"1054:12:87"},"nativeSrc":"1054:23:87","nodeType":"YulFunctionCall","src":"1054:23:87"},"variables":[{"name":"value","nativeSrc":"1045:5:87","nodeType":"YulTypedName","src":"1045:5:87","type":""}]},{"body":{"nativeSrc":"1125:16:87","nodeType":"YulBlock","src":"1125:16:87","statements":[{"expression":{"arguments":[{"kind":"number","nativeSrc":"1134:1:87","nodeType":"YulLiteral","src":"1134:1:87","type":"","value":"0"},{"kind":"number","nativeSrc":"1137:1:87","nodeType":"YulLiteral","src":"1137:1:87","type":"","value":"0"}],"functionName":{"name":"revert","nativeSrc":"1127:6:87","nodeType":"YulIdentifier","src":"1127:6:87"},"nativeSrc":"1127:12:87","nodeType":"YulFunctionCall","src":"1127:12:87"},"nativeSrc":"1127:12:87","nodeType":"YulExpressionStatement","src":"1127:12:87"}]},"condition":{"arguments":[{"arguments":[{"name":"value","nativeSrc":"1099:5:87","nodeType":"YulIdentifier","src":"1099:5:87"},{"arguments":[{"name":"value","nativeSrc":"1110:5:87","nodeType":"YulIdentifier","src":"1110:5:87"},{"kind":"number","nativeSrc":"1117:4:87","nodeType":"YulLiteral","src":"1117:4:87","type":"","value":"0xff"}],"functionName":{"name":"and","nativeSrc":"1106:3:87","nodeType":"YulIdentifier","src":"1106:3:87"},"nativeSrc":"1106:16:87","nodeType":"YulFunctionCall","src":"1106:16:87"}],"functionName":{"name":"eq","nativeSrc":"1096:2:87","nodeType":"YulIdentifier","src":"1096:2:87"},"nativeSrc":"1096:27:87","nodeType":"YulFunctionCall","src":"1096:27:87"}],"functionName":{"name":"iszero","nativeSrc":"1089:6:87","nodeType":"YulIdentifier","src":"1089:6:87"},"nativeSrc":"1089:35:87","nodeType":"YulFunctionCall","src":"1089:35:87"},"nativeSrc":"1086:55:87","nodeType":"YulIf","src":"1086:55:87"},{"nativeSrc":"1150:15:87","nodeType":"YulAssignment","src":"1150:15:87","value":{"name":"value","nativeSrc":"1160:5:87","nodeType":"YulIdentifier","src":"1160:5:87"},"variableNames":[{"name":"value0","nativeSrc":"1150:6:87","nodeType":"YulIdentifier","src":"1150:6:87"}]},{"nativeSrc":"1174:46:87","nodeType":"YulVariableDeclaration","src":"1174:46:87","value":{"arguments":[{"arguments":[{"name":"headStart","nativeSrc":"1205:9:87","nodeType":"YulIdentifier","src":"1205:9:87"},{"kind":"number","nativeSrc":"1216:2:87","nodeType":"YulLiteral","src":"1216:2:87","type":"","value":"32"}],"functionName":{"name":"add","nativeSrc":"1201:3:87","nodeType":"YulIdentifier","src":"1201:3:87"},"nativeSrc":"1201:18:87","nodeType":"YulFunctionCall","src":"1201:18:87"}],"functionName":{"name":"calldataload","nativeSrc":"1188:12:87","nodeType":"YulIdentifier","src":"1188:12:87"},"nativeSrc":"1188:32:87","nodeType":"YulFunctionCall","src":"1188:32:87"},"variables":[{"name":"offset","nativeSrc":"1178:6:87","nodeType":"YulTypedName","src":"1178:6:87","type":""}]},{"body":{"nativeSrc":"1263:16:87","nodeType":"YulBlock","src":"1263:16:87","statements":[{"expression":{"arguments":[{"kind":"number","nativeSrc":"1272:1:87","nodeType":"YulLiteral","src":"1272:1:87","type":"","value":"0"},{"kind":"number","nativeSrc":"1275:1:87","nodeType":"YulLiteral","src":"1275:1:87","type":"","value":"0"}],"functionName":{"name":"revert","nativeSrc":"1265:6:87","nodeType":"YulIdentifier","src":"1265:6:87"},"nativeSrc":"1265:12:87","nodeType":"YulFunctionCall","src":"1265:12:87"},"nativeSrc":"1265:12:87","nodeType":"YulExpressionStatement","src":"1265:12:87"}]},"condition":{"arguments":[{"name":"offset","nativeSrc":"1235:6:87","nodeType":"YulIdentifier","src":"1235:6:87"},{"kind":"number","nativeSrc":"1243:18:87","nodeType":"YulLiteral","src":"1243:18:87","type":"","value":"0xffffffffffffffff"}],"functionName":{"name":"gt","nativeSrc":"1232:2:87","nodeType":"YulIdentifier","src":"1232:2:87"},"nativeSrc":"1232:30:87","nodeType":"YulFunctionCall","src":"1232:30:87"},"nativeSrc":"1229:50:87","nodeType":"YulIf","src":"1229:50:87"},{"nativeSrc":"1288:59:87","nodeType":"YulAssignment","src":"1288:59:87","value":{"arguments":[{"arguments":[{"name":"headStart","nativeSrc":"1319:9:87","nodeType":"YulIdentifier","src":"1319:9:87"},{"name":"offset","nativeSrc":"1330:6:87","nodeType":"YulIdentifier","src":"1330:6:87"}],"functionName":{"name":"add","nativeSrc":"1315:3:87","nodeType":"YulIdentifier","src":"1315:3:87"},"nativeSrc":"1315:22:87","nodeType":"YulFunctionCall","src":"1315:22:87"},{"name":"dataEnd","nativeSrc":"1339:7:87","nodeType":"YulIdentifier","src":"1339:7:87"}],"functionName":{"name":"abi_decode_bytes","nativeSrc":"1298:16:87","nodeType":"YulIdentifier","src":"1298:16:87"},"nativeSrc":"1298:49:87","nodeType":"YulFunctionCall","src":"1298:49:87"},"variableNames":[{"name":"value1","nativeSrc":"1288:6:87","nodeType":"YulIdentifier","src":"1288:6:87"}]}]},"name":"abi_decode_tuple_t_uint8t_bytes_memory_ptr","nativeSrc":"876:477:87","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nativeSrc":"928:9:87","nodeType":"YulTypedName","src":"928:9:87","type":""},{"name":"dataEnd","nativeSrc":"939:7:87","nodeType":"YulTypedName","src":"939:7:87","type":""}],"returnVariables":[{"name":"value0","nativeSrc":"951:6:87","nodeType":"YulTypedName","src":"951:6:87","type":""},{"name":"value1","nativeSrc":"959:6:87","nodeType":"YulTypedName","src":"959:6:87","type":""}],"src":"876:477:87"},{"body":{"nativeSrc":"1477:297:87","nodeType":"YulBlock","src":"1477:297:87","statements":[{"expression":{"arguments":[{"name":"headStart","nativeSrc":"1494:9:87","nodeType":"YulIdentifier","src":"1494:9:87"},{"kind":"number","nativeSrc":"1505:2:87","nodeType":"YulLiteral","src":"1505:2:87","type":"","value":"32"}],"functionName":{"name":"mstore","nativeSrc":"1487:6:87","nodeType":"YulIdentifier","src":"1487:6:87"},"nativeSrc":"1487:21:87","nodeType":"YulFunctionCall","src":"1487:21:87"},"nativeSrc":"1487:21:87","nodeType":"YulExpressionStatement","src":"1487:21:87"},{"nativeSrc":"1517:27:87","nodeType":"YulVariableDeclaration","src":"1517:27:87","value":{"arguments":[{"name":"value0","nativeSrc":"1537:6:87","nodeType":"YulIdentifier","src":"1537:6:87"}],"functionName":{"name":"mload","nativeSrc":"1531:5:87","nodeType":"YulIdentifier","src":"1531:5:87"},"nativeSrc":"1531:13:87","nodeType":"YulFunctionCall","src":"1531:13:87"},"variables":[{"name":"length","nativeSrc":"1521:6:87","nodeType":"YulTypedName","src":"1521:6:87","type":""}]},{"expression":{"arguments":[{"arguments":[{"name":"headStart","nativeSrc":"1564:9:87","nodeType":"YulIdentifier","src":"1564:9:87"},{"kind":"number","nativeSrc":"1575:2:87","nodeType":"YulLiteral","src":"1575:2:87","type":"","value":"32"}],"functionName":{"name":"add","nativeSrc":"1560:3:87","nodeType":"YulIdentifier","src":"1560:3:87"},"nativeSrc":"1560:18:87","nodeType":"YulFunctionCall","src":"1560:18:87"},{"name":"length","nativeSrc":"1580:6:87","nodeType":"YulIdentifier","src":"1580:6:87"}],"functionName":{"name":"mstore","nativeSrc":"1553:6:87","nodeType":"YulIdentifier","src":"1553:6:87"},"nativeSrc":"1553:34:87","nodeType":"YulFunctionCall","src":"1553:34:87"},"nativeSrc":"1553:34:87","nodeType":"YulExpressionStatement","src":"1553:34:87"},{"expression":{"arguments":[{"arguments":[{"name":"headStart","nativeSrc":"1606:9:87","nodeType":"YulIdentifier","src":"1606:9:87"},{"kind":"number","nativeSrc":"1617:2:87","nodeType":"YulLiteral","src":"1617:2:87","type":"","value":"64"}],"functionName":{"name":"add","nativeSrc":"1602:3:87","nodeType":"YulIdentifier","src":"1602:3:87"},"nativeSrc":"1602:18:87","nodeType":"YulFunctionCall","src":"1602:18:87"},{"arguments":[{"name":"value0","nativeSrc":"1626:6:87","nodeType":"YulIdentifier","src":"1626:6:87"},{"kind":"number","nativeSrc":"1634:2:87","nodeType":"YulLiteral","src":"1634:2:87","type":"","value":"32"}],"functionName":{"name":"add","nativeSrc":"1622:3:87","nodeType":"YulIdentifier","src":"1622:3:87"},"nativeSrc":"1622:15:87","nodeType":"YulFunctionCall","src":"1622:15:87"},{"name":"length","nativeSrc":"1639:6:87","nodeType":"YulIdentifier","src":"1639:6:87"}],"functionName":{"name":"mcopy","nativeSrc":"1596:5:87","nodeType":"YulIdentifier","src":"1596:5:87"},"nativeSrc":"1596:50:87","nodeType":"YulFunctionCall","src":"1596:50:87"},"nativeSrc":"1596:50:87","nodeType":"YulExpressionStatement","src":"1596:50:87"},{"expression":{"arguments":[{"arguments":[{"arguments":[{"name":"headStart","nativeSrc":"1670:9:87","nodeType":"YulIdentifier","src":"1670:9:87"},{"name":"length","nativeSrc":"1681:6:87","nodeType":"YulIdentifier","src":"1681:6:87"}],"functionName":{"name":"add","nativeSrc":"1666:3:87","nodeType":"YulIdentifier","src":"1666:3:87"},"nativeSrc":"1666:22:87","nodeType":"YulFunctionCall","src":"1666:22:87"},{"kind":"number","nativeSrc":"1690:2:87","nodeType":"YulLiteral","src":"1690:2:87","type":"","value":"64"}],"functionName":{"name":"add","nativeSrc":"1662:3:87","nodeType":"YulIdentifier","src":"1662:3:87"},"nativeSrc":"1662:31:87","nodeType":"YulFunctionCall","src":"1662:31:87"},{"kind":"number","nativeSrc":"1695:1:87","nodeType":"YulLiteral","src":"1695:1:87","type":"","value":"0"}],"functionName":{"name":"mstore","nativeSrc":"1655:6:87","nodeType":"YulIdentifier","src":"1655:6:87"},"nativeSrc":"1655:42:87","nodeType":"YulFunctionCall","src":"1655:42:87"},"nativeSrc":"1655:42:87","nodeType":"YulExpressionStatement","src":"1655:42:87"},{"nativeSrc":"1706:62:87","nodeType":"YulAssignment","src":"1706:62:87","value":{"arguments":[{"arguments":[{"name":"headStart","nativeSrc":"1722:9:87","nodeType":"YulIdentifier","src":"1722:9:87"},{"arguments":[{"arguments":[{"name":"length","nativeSrc":"1741:6:87","nodeType":"YulIdentifier","src":"1741:6:87"},{"kind":"number","nativeSrc":"1749:2:87","nodeType":"YulLiteral","src":"1749:2:87","type":"","value":"31"}],"functionName":{"name":"add","nativeSrc":"1737:3:87","nodeType":"YulIdentifier","src":"1737:3:87"},"nativeSrc":"1737:15:87","nodeType":"YulFunctionCall","src":"1737:15:87"},{"arguments":[{"kind":"number","nativeSrc":"1758:2:87","nodeType":"YulLiteral","src":"1758:2:87","type":"","value":"31"}],"functionName":{"name":"not","nativeSrc":"1754:3:87","nodeType":"YulIdentifier","src":"1754:3:87"},"nativeSrc":"1754:7:87","nodeType":"YulFunctionCall","src":"1754:7:87"}],"functionName":{"name":"and","nativeSrc":"1733:3:87","nodeType":"YulIdentifier","src":"1733:3:87"},"nativeSrc":"1733:29:87","nodeType":"YulFunctionCall","src":"1733:29:87"}],"functionName":{"name":"add","nativeSrc":"1718:3:87","nodeType":"YulIdentifier","src":"1718:3:87"},"nativeSrc":"1718:45:87","nodeType":"YulFunctionCall","src":"1718:45:87"},{"kind":"number","nativeSrc":"1765:2:87","nodeType":"YulLiteral","src":"1765:2:87","type":"","value":"64"}],"functionName":{"name":"add","nativeSrc":"1714:3:87","nodeType":"YulIdentifier","src":"1714:3:87"},"nativeSrc":"1714:54:87","nodeType":"YulFunctionCall","src":"1714:54:87"},"variableNames":[{"name":"tail","nativeSrc":"1706:4:87","nodeType":"YulIdentifier","src":"1706:4:87"}]}]},"name":"abi_encode_tuple_t_bytes_memory_ptr__to_t_bytes_memory_ptr__fromStack_reversed","nativeSrc":"1358:416:87","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nativeSrc":"1446:9:87","nodeType":"YulTypedName","src":"1446:9:87","type":""},{"name":"value0","nativeSrc":"1457:6:87","nodeType":"YulTypedName","src":"1457:6:87","type":""}],"returnVariables":[{"name":"tail","nativeSrc":"1468:4:87","nodeType":"YulTypedName","src":"1468:4:87","type":""}],"src":"1358:416:87"},{"body":{"nativeSrc":"1849:110:87","nodeType":"YulBlock","src":"1849:110:87","statements":[{"body":{"nativeSrc":"1895:16:87","nodeType":"YulBlock","src":"1895:16:87","statements":[{"expression":{"arguments":[{"kind":"number","nativeSrc":"1904:1:87","nodeType":"YulLiteral","src":"1904:1:87","type":"","value":"0"},{"kind":"number","nativeSrc":"1907:1:87","nodeType":"YulLiteral","src":"1907:1:87","type":"","value":"0"}],"functionName":{"name":"revert","nativeSrc":"1897:6:87","nodeType":"YulIdentifier","src":"1897:6:87"},"nativeSrc":"1897:12:87","nodeType":"YulFunctionCall","src":"1897:12:87"},"nativeSrc":"1897:12:87","nodeType":"YulExpressionStatement","src":"1897:12:87"}]},"condition":{"arguments":[{"arguments":[{"name":"dataEnd","nativeSrc":"1870:7:87","nodeType":"YulIdentifier","src":"1870:7:87"},{"name":"headStart","nativeSrc":"1879:9:87","nodeType":"YulIdentifier","src":"1879:9:87"}],"functionName":{"name":"sub","nativeSrc":"1866:3:87","nodeType":"YulIdentifier","src":"1866:3:87"},"nativeSrc":"1866:23:87","nodeType":"YulFunctionCall","src":"1866:23:87"},{"kind":"number","nativeSrc":"1891:2:87","nodeType":"YulLiteral","src":"1891:2:87","type":"","value":"32"}],"functionName":{"name":"slt","nativeSrc":"1862:3:87","nodeType":"YulIdentifier","src":"1862:3:87"},"nativeSrc":"1862:32:87","nodeType":"YulFunctionCall","src":"1862:32:87"},"nativeSrc":"1859:52:87","nodeType":"YulIf","src":"1859:52:87"},{"nativeSrc":"1920:33:87","nodeType":"YulAssignment","src":"1920:33:87","value":{"arguments":[{"name":"headStart","nativeSrc":"1943:9:87","nodeType":"YulIdentifier","src":"1943:9:87"}],"functionName":{"name":"calldataload","nativeSrc":"1930:12:87","nodeType":"YulIdentifier","src":"1930:12:87"},"nativeSrc":"1930:23:87","nodeType":"YulFunctionCall","src":"1930:23:87"},"variableNames":[{"name":"value0","nativeSrc":"1920:6:87","nodeType":"YulIdentifier","src":"1920:6:87"}]}]},"name":"abi_decode_tuple_t_uint256","nativeSrc":"1779:180:87","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nativeSrc":"1815:9:87","nodeType":"YulTypedName","src":"1815:9:87","type":""},{"name":"dataEnd","nativeSrc":"1826:7:87","nodeType":"YulTypedName","src":"1826:7:87","type":""}],"returnVariables":[{"name":"value0","nativeSrc":"1838:6:87","nodeType":"YulTypedName","src":"1838:6:87","type":""}],"src":"1779:180:87"},{"body":{"nativeSrc":"2034:216:87","nodeType":"YulBlock","src":"2034:216:87","statements":[{"body":{"nativeSrc":"2080:16:87","nodeType":"YulBlock","src":"2080:16:87","statements":[{"expression":{"arguments":[{"kind":"number","nativeSrc":"2089:1:87","nodeType":"YulLiteral","src":"2089:1:87","type":"","value":"0"},{"kind":"number","nativeSrc":"2092:1:87","nodeType":"YulLiteral","src":"2092:1:87","type":"","value":"0"}],"functionName":{"name":"revert","nativeSrc":"2082:6:87","nodeType":"YulIdentifier","src":"2082:6:87"},"nativeSrc":"2082:12:87","nodeType":"YulFunctionCall","src":"2082:12:87"},"nativeSrc":"2082:12:87","nodeType":"YulExpressionStatement","src":"2082:12:87"}]},"condition":{"arguments":[{"arguments":[{"name":"dataEnd","nativeSrc":"2055:7:87","nodeType":"YulIdentifier","src":"2055:7:87"},{"name":"headStart","nativeSrc":"2064:9:87","nodeType":"YulIdentifier","src":"2064:9:87"}],"functionName":{"name":"sub","nativeSrc":"2051:3:87","nodeType":"YulIdentifier","src":"2051:3:87"},"nativeSrc":"2051:23:87","nodeType":"YulFunctionCall","src":"2051:23:87"},{"kind":"number","nativeSrc":"2076:2:87","nodeType":"YulLiteral","src":"2076:2:87","type":"","value":"32"}],"functionName":{"name":"slt","nativeSrc":"2047:3:87","nodeType":"YulIdentifier","src":"2047:3:87"},"nativeSrc":"2047:32:87","nodeType":"YulFunctionCall","src":"2047:32:87"},"nativeSrc":"2044:52:87","nodeType":"YulIf","src":"2044:52:87"},{"nativeSrc":"2105:36:87","nodeType":"YulVariableDeclaration","src":"2105:36:87","value":{"arguments":[{"name":"headStart","nativeSrc":"2131:9:87","nodeType":"YulIdentifier","src":"2131:9:87"}],"functionName":{"name":"calldataload","nativeSrc":"2118:12:87","nodeType":"YulIdentifier","src":"2118:12:87"},"nativeSrc":"2118:23:87","nodeType":"YulFunctionCall","src":"2118:23:87"},"variables":[{"name":"value","nativeSrc":"2109:5:87","nodeType":"YulTypedName","src":"2109:5:87","type":""}]},{"body":{"nativeSrc":"2204:16:87","nodeType":"YulBlock","src":"2204:16:87","statements":[{"expression":{"arguments":[{"kind":"number","nativeSrc":"2213:1:87","nodeType":"YulLiteral","src":"2213:1:87","type":"","value":"0"},{"kind":"number","nativeSrc":"2216:1:87","nodeType":"YulLiteral","src":"2216:1:87","type":"","value":"0"}],"functionName":{"name":"revert","nativeSrc":"2206:6:87","nodeType":"YulIdentifier","src":"2206:6:87"},"nativeSrc":"2206:12:87","nodeType":"YulFunctionCall","src":"2206:12:87"},"nativeSrc":"2206:12:87","nodeType":"YulExpressionStatement","src":"2206:12:87"}]},"condition":{"arguments":[{"arguments":[{"name":"value","nativeSrc":"2163:5:87","nodeType":"YulIdentifier","src":"2163:5:87"},{"arguments":[{"name":"value","nativeSrc":"2174:5:87","nodeType":"YulIdentifier","src":"2174:5:87"},{"arguments":[{"arguments":[{"kind":"number","nativeSrc":"2189:3:87","nodeType":"YulLiteral","src":"2189:3:87","type":"","value":"160"},{"kind":"number","nativeSrc":"2194:1:87","nodeType":"YulLiteral","src":"2194:1:87","type":"","value":"1"}],"functionName":{"name":"shl","nativeSrc":"2185:3:87","nodeType":"YulIdentifier","src":"2185:3:87"},"nativeSrc":"2185:11:87","nodeType":"YulFunctionCall","src":"2185:11:87"},{"kind":"number","nativeSrc":"2198:1:87","nodeType":"YulLiteral","src":"2198:1:87","type":"","value":"1"}],"functionName":{"name":"sub","nativeSrc":"2181:3:87","nodeType":"YulIdentifier","src":"2181:3:87"},"nativeSrc":"2181:19:87","nodeType":"YulFunctionCall","src":"2181:19:87"}],"functionName":{"name":"and","nativeSrc":"2170:3:87","nodeType":"YulIdentifier","src":"2170:3:87"},"nativeSrc":"2170:31:87","nodeType":"YulFunctionCall","src":"2170:31:87"}],"functionName":{"name":"eq","nativeSrc":"2160:2:87","nodeType":"YulIdentifier","src":"2160:2:87"},"nativeSrc":"2160:42:87","nodeType":"YulFunctionCall","src":"2160:42:87"}],"functionName":{"name":"iszero","nativeSrc":"2153:6:87","nodeType":"YulIdentifier","src":"2153:6:87"},"nativeSrc":"2153:50:87","nodeType":"YulFunctionCall","src":"2153:50:87"},"nativeSrc":"2150:70:87","nodeType":"YulIf","src":"2150:70:87"},{"nativeSrc":"2229:15:87","nodeType":"YulAssignment","src":"2229:15:87","value":{"name":"value","nativeSrc":"2239:5:87","nodeType":"YulIdentifier","src":"2239:5:87"},"variableNames":[{"name":"value0","nativeSrc":"2229:6:87","nodeType":"YulIdentifier","src":"2229:6:87"}]}]},"name":"abi_decode_tuple_t_address","nativeSrc":"1964:286:87","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nativeSrc":"2000:9:87","nodeType":"YulTypedName","src":"2000:9:87","type":""},{"name":"dataEnd","nativeSrc":"2011:7:87","nodeType":"YulTypedName","src":"2011:7:87","type":""}],"returnVariables":[{"name":"value0","nativeSrc":"2023:6:87","nodeType":"YulTypedName","src":"2023:6:87","type":""}],"src":"1964:286:87"},{"body":{"nativeSrc":"2356:76:87","nodeType":"YulBlock","src":"2356:76:87","statements":[{"nativeSrc":"2366:26:87","nodeType":"YulAssignment","src":"2366:26:87","value":{"arguments":[{"name":"headStart","nativeSrc":"2378:9:87","nodeType":"YulIdentifier","src":"2378:9:87"},{"kind":"number","nativeSrc":"2389:2:87","nodeType":"YulLiteral","src":"2389:2:87","type":"","value":"32"}],"functionName":{"name":"add","nativeSrc":"2374:3:87","nodeType":"YulIdentifier","src":"2374:3:87"},"nativeSrc":"2374:18:87","nodeType":"YulFunctionCall","src":"2374:18:87"},"variableNames":[{"name":"tail","nativeSrc":"2366:4:87","nodeType":"YulIdentifier","src":"2366:4:87"}]},{"expression":{"arguments":[{"name":"headStart","nativeSrc":"2408:9:87","nodeType":"YulIdentifier","src":"2408:9:87"},{"name":"value0","nativeSrc":"2419:6:87","nodeType":"YulIdentifier","src":"2419:6:87"}],"functionName":{"name":"mstore","nativeSrc":"2401:6:87","nodeType":"YulIdentifier","src":"2401:6:87"},"nativeSrc":"2401:25:87","nodeType":"YulFunctionCall","src":"2401:25:87"},"nativeSrc":"2401:25:87","nodeType":"YulExpressionStatement","src":"2401:25:87"}]},"name":"abi_encode_tuple_t_uint256__to_t_uint256__fromStack_reversed","nativeSrc":"2255:177:87","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nativeSrc":"2325:9:87","nodeType":"YulTypedName","src":"2325:9:87","type":""},{"name":"value0","nativeSrc":"2336:6:87","nodeType":"YulTypedName","src":"2336:6:87","type":""}],"returnVariables":[{"name":"tail","nativeSrc":"2347:4:87","nodeType":"YulTypedName","src":"2347:4:87","type":""}],"src":"2255:177:87"},{"body":{"nativeSrc":"2479:76:87","nodeType":"YulBlock","src":"2479:76:87","statements":[{"body":{"nativeSrc":"2533:16:87","nodeType":"YulBlock","src":"2533:16:87","statements":[{"expression":{"arguments":[{"kind":"number","nativeSrc":"2542:1:87","nodeType":"YulLiteral","src":"2542:1:87","type":"","value":"0"},{"kind":"number","nativeSrc":"2545:1:87","nodeType":"YulLiteral","src":"2545:1:87","type":"","value":"0"}],"functionName":{"name":"revert","nativeSrc":"2535:6:87","nodeType":"YulIdentifier","src":"2535:6:87"},"nativeSrc":"2535:12:87","nodeType":"YulFunctionCall","src":"2535:12:87"},"nativeSrc":"2535:12:87","nodeType":"YulExpressionStatement","src":"2535:12:87"}]},"condition":{"arguments":[{"arguments":[{"name":"value","nativeSrc":"2502:5:87","nodeType":"YulIdentifier","src":"2502:5:87"},{"arguments":[{"arguments":[{"name":"value","nativeSrc":"2523:5:87","nodeType":"YulIdentifier","src":"2523:5:87"}],"functionName":{"name":"iszero","nativeSrc":"2516:6:87","nodeType":"YulIdentifier","src":"2516:6:87"},"nativeSrc":"2516:13:87","nodeType":"YulFunctionCall","src":"2516:13:87"}],"functionName":{"name":"iszero","nativeSrc":"2509:6:87","nodeType":"YulIdentifier","src":"2509:6:87"},"nativeSrc":"2509:21:87","nodeType":"YulFunctionCall","src":"2509:21:87"}],"functionName":{"name":"eq","nativeSrc":"2499:2:87","nodeType":"YulIdentifier","src":"2499:2:87"},"nativeSrc":"2499:32:87","nodeType":"YulFunctionCall","src":"2499:32:87"}],"functionName":{"name":"iszero","nativeSrc":"2492:6:87","nodeType":"YulIdentifier","src":"2492:6:87"},"nativeSrc":"2492:40:87","nodeType":"YulFunctionCall","src":"2492:40:87"},"nativeSrc":"2489:60:87","nodeType":"YulIf","src":"2489:60:87"}]},"name":"validator_revert_bool","nativeSrc":"2437:118:87","nodeType":"YulFunctionDefinition","parameters":[{"name":"value","nativeSrc":"2468:5:87","nodeType":"YulTypedName","src":"2468:5:87","type":""}],"src":"2437:118:87"},{"body":{"nativeSrc":"2627:174:87","nodeType":"YulBlock","src":"2627:174:87","statements":[{"body":{"nativeSrc":"2673:16:87","nodeType":"YulBlock","src":"2673:16:87","statements":[{"expression":{"arguments":[{"kind":"number","nativeSrc":"2682:1:87","nodeType":"YulLiteral","src":"2682:1:87","type":"","value":"0"},{"kind":"number","nativeSrc":"2685:1:87","nodeType":"YulLiteral","src":"2685:1:87","type":"","value":"0"}],"functionName":{"name":"revert","nativeSrc":"2675:6:87","nodeType":"YulIdentifier","src":"2675:6:87"},"nativeSrc":"2675:12:87","nodeType":"YulFunctionCall","src":"2675:12:87"},"nativeSrc":"2675:12:87","nodeType":"YulExpressionStatement","src":"2675:12:87"}]},"condition":{"arguments":[{"arguments":[{"name":"dataEnd","nativeSrc":"2648:7:87","nodeType":"YulIdentifier","src":"2648:7:87"},{"name":"headStart","nativeSrc":"2657:9:87","nodeType":"YulIdentifier","src":"2657:9:87"}],"functionName":{"name":"sub","nativeSrc":"2644:3:87","nodeType":"YulIdentifier","src":"2644:3:87"},"nativeSrc":"2644:23:87","nodeType":"YulFunctionCall","src":"2644:23:87"},{"kind":"number","nativeSrc":"2669:2:87","nodeType":"YulLiteral","src":"2669:2:87","type":"","value":"32"}],"functionName":{"name":"slt","nativeSrc":"2640:3:87","nodeType":"YulIdentifier","src":"2640:3:87"},"nativeSrc":"2640:32:87","nodeType":"YulFunctionCall","src":"2640:32:87"},"nativeSrc":"2637:52:87","nodeType":"YulIf","src":"2637:52:87"},{"nativeSrc":"2698:36:87","nodeType":"YulVariableDeclaration","src":"2698:36:87","value":{"arguments":[{"name":"headStart","nativeSrc":"2724:9:87","nodeType":"YulIdentifier","src":"2724:9:87"}],"functionName":{"name":"calldataload","nativeSrc":"2711:12:87","nodeType":"YulIdentifier","src":"2711:12:87"},"nativeSrc":"2711:23:87","nodeType":"YulFunctionCall","src":"2711:23:87"},"variables":[{"name":"value","nativeSrc":"2702:5:87","nodeType":"YulTypedName","src":"2702:5:87","type":""}]},{"expression":{"arguments":[{"name":"value","nativeSrc":"2765:5:87","nodeType":"YulIdentifier","src":"2765:5:87"}],"functionName":{"name":"validator_revert_bool","nativeSrc":"2743:21:87","nodeType":"YulIdentifier","src":"2743:21:87"},"nativeSrc":"2743:28:87","nodeType":"YulFunctionCall","src":"2743:28:87"},"nativeSrc":"2743:28:87","nodeType":"YulExpressionStatement","src":"2743:28:87"},{"nativeSrc":"2780:15:87","nodeType":"YulAssignment","src":"2780:15:87","value":{"name":"value","nativeSrc":"2790:5:87","nodeType":"YulIdentifier","src":"2790:5:87"},"variableNames":[{"name":"value0","nativeSrc":"2780:6:87","nodeType":"YulIdentifier","src":"2780:6:87"}]}]},"name":"abi_decode_tuple_t_bool","nativeSrc":"2560:241:87","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nativeSrc":"2593:9:87","nodeType":"YulTypedName","src":"2593:9:87","type":""},{"name":"dataEnd","nativeSrc":"2604:7:87","nodeType":"YulTypedName","src":"2604:7:87","type":""}],"returnVariables":[{"name":"value0","nativeSrc":"2616:6:87","nodeType":"YulTypedName","src":"2616:6:87","type":""}],"src":"2560:241:87"},{"body":{"nativeSrc":"2907:76:87","nodeType":"YulBlock","src":"2907:76:87","statements":[{"nativeSrc":"2917:26:87","nodeType":"YulAssignment","src":"2917:26:87","value":{"arguments":[{"name":"headStart","nativeSrc":"2929:9:87","nodeType":"YulIdentifier","src":"2929:9:87"},{"kind":"number","nativeSrc":"2940:2:87","nodeType":"YulLiteral","src":"2940:2:87","type":"","value":"32"}],"functionName":{"name":"add","nativeSrc":"2925:3:87","nodeType":"YulIdentifier","src":"2925:3:87"},"nativeSrc":"2925:18:87","nodeType":"YulFunctionCall","src":"2925:18:87"},"variableNames":[{"name":"tail","nativeSrc":"2917:4:87","nodeType":"YulIdentifier","src":"2917:4:87"}]},{"expression":{"arguments":[{"name":"headStart","nativeSrc":"2959:9:87","nodeType":"YulIdentifier","src":"2959:9:87"},{"name":"value0","nativeSrc":"2970:6:87","nodeType":"YulIdentifier","src":"2970:6:87"}],"functionName":{"name":"mstore","nativeSrc":"2952:6:87","nodeType":"YulIdentifier","src":"2952:6:87"},"nativeSrc":"2952:25:87","nodeType":"YulFunctionCall","src":"2952:25:87"},"nativeSrc":"2952:25:87","nodeType":"YulExpressionStatement","src":"2952:25:87"}]},"name":"abi_encode_tuple_t_bytes32__to_t_bytes32__fromStack_reversed","nativeSrc":"2806:177:87","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nativeSrc":"2876:9:87","nodeType":"YulTypedName","src":"2876:9:87","type":""},{"name":"value0","nativeSrc":"2887:6:87","nodeType":"YulTypedName","src":"2887:6:87","type":""}],"returnVariables":[{"name":"tail","nativeSrc":"2898:4:87","nodeType":"YulTypedName","src":"2898:4:87","type":""}],"src":"2806:177:87"},{"body":{"nativeSrc":"3089:102:87","nodeType":"YulBlock","src":"3089:102:87","statements":[{"nativeSrc":"3099:26:87","nodeType":"YulAssignment","src":"3099:26:87","value":{"arguments":[{"name":"headStart","nativeSrc":"3111:9:87","nodeType":"YulIdentifier","src":"3111:9:87"},{"kind":"number","nativeSrc":"3122:2:87","nodeType":"YulLiteral","src":"3122:2:87","type":"","value":"32"}],"functionName":{"name":"add","nativeSrc":"3107:3:87","nodeType":"YulIdentifier","src":"3107:3:87"},"nativeSrc":"3107:18:87","nodeType":"YulFunctionCall","src":"3107:18:87"},"variableNames":[{"name":"tail","nativeSrc":"3099:4:87","nodeType":"YulIdentifier","src":"3099:4:87"}]},{"expression":{"arguments":[{"name":"headStart","nativeSrc":"3141:9:87","nodeType":"YulIdentifier","src":"3141:9:87"},{"arguments":[{"name":"value0","nativeSrc":"3156:6:87","nodeType":"YulIdentifier","src":"3156:6:87"},{"arguments":[{"arguments":[{"kind":"number","nativeSrc":"3172:3:87","nodeType":"YulLiteral","src":"3172:3:87","type":"","value":"160"},{"kind":"number","nativeSrc":"3177:1:87","nodeType":"YulLiteral","src":"3177:1:87","type":"","value":"1"}],"functionName":{"name":"shl","nativeSrc":"3168:3:87","nodeType":"YulIdentifier","src":"3168:3:87"},"nativeSrc":"3168:11:87","nodeType":"YulFunctionCall","src":"3168:11:87"},{"kind":"number","nativeSrc":"3181:1:87","nodeType":"YulLiteral","src":"3181:1:87","type":"","value":"1"}],"functionName":{"name":"sub","nativeSrc":"3164:3:87","nodeType":"YulIdentifier","src":"3164:3:87"},"nativeSrc":"3164:19:87","nodeType":"YulFunctionCall","src":"3164:19:87"}],"functionName":{"name":"and","nativeSrc":"3152:3:87","nodeType":"YulIdentifier","src":"3152:3:87"},"nativeSrc":"3152:32:87","nodeType":"YulFunctionCall","src":"3152:32:87"}],"functionName":{"name":"mstore","nativeSrc":"3134:6:87","nodeType":"YulIdentifier","src":"3134:6:87"},"nativeSrc":"3134:51:87","nodeType":"YulFunctionCall","src":"3134:51:87"},"nativeSrc":"3134:51:87","nodeType":"YulExpressionStatement","src":"3134:51:87"}]},"name":"abi_encode_tuple_t_address__to_t_address__fromStack_reversed","nativeSrc":"2988:203:87","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nativeSrc":"3058:9:87","nodeType":"YulTypedName","src":"3058:9:87","type":""},{"name":"value0","nativeSrc":"3069:6:87","nodeType":"YulTypedName","src":"3069:6:87","type":""}],"returnVariables":[{"name":"tail","nativeSrc":"3080:4:87","nodeType":"YulTypedName","src":"3080:4:87","type":""}],"src":"2988:203:87"},{"body":{"nativeSrc":"3275:241:87","nodeType":"YulBlock","src":"3275:241:87","statements":[{"body":{"nativeSrc":"3321:16:87","nodeType":"YulBlock","src":"3321:16:87","statements":[{"expression":{"arguments":[{"kind":"number","nativeSrc":"3330:1:87","nodeType":"YulLiteral","src":"3330:1:87","type":"","value":"0"},{"kind":"number","nativeSrc":"3333:1:87","nodeType":"YulLiteral","src":"3333:1:87","type":"","value":"0"}],"functionName":{"name":"revert","nativeSrc":"3323:6:87","nodeType":"YulIdentifier","src":"3323:6:87"},"nativeSrc":"3323:12:87","nodeType":"YulFunctionCall","src":"3323:12:87"},"nativeSrc":"3323:12:87","nodeType":"YulExpressionStatement","src":"3323:12:87"}]},"condition":{"arguments":[{"arguments":[{"name":"dataEnd","nativeSrc":"3296:7:87","nodeType":"YulIdentifier","src":"3296:7:87"},{"name":"headStart","nativeSrc":"3305:9:87","nodeType":"YulIdentifier","src":"3305:9:87"}],"functionName":{"name":"sub","nativeSrc":"3292:3:87","nodeType":"YulIdentifier","src":"3292:3:87"},"nativeSrc":"3292:23:87","nodeType":"YulFunctionCall","src":"3292:23:87"},{"kind":"number","nativeSrc":"3317:2:87","nodeType":"YulLiteral","src":"3317:2:87","type":"","value":"32"}],"functionName":{"name":"slt","nativeSrc":"3288:3:87","nodeType":"YulIdentifier","src":"3288:3:87"},"nativeSrc":"3288:32:87","nodeType":"YulFunctionCall","src":"3288:32:87"},"nativeSrc":"3285:52:87","nodeType":"YulIf","src":"3285:52:87"},{"nativeSrc":"3346:37:87","nodeType":"YulVariableDeclaration","src":"3346:37:87","value":{"arguments":[{"name":"headStart","nativeSrc":"3373:9:87","nodeType":"YulIdentifier","src":"3373:9:87"}],"functionName":{"name":"calldataload","nativeSrc":"3360:12:87","nodeType":"YulIdentifier","src":"3360:12:87"},"nativeSrc":"3360:23:87","nodeType":"YulFunctionCall","src":"3360:23:87"},"variables":[{"name":"offset","nativeSrc":"3350:6:87","nodeType":"YulTypedName","src":"3350:6:87","type":""}]},{"body":{"nativeSrc":"3426:16:87","nodeType":"YulBlock","src":"3426:16:87","statements":[{"expression":{"arguments":[{"kind":"number","nativeSrc":"3435:1:87","nodeType":"YulLiteral","src":"3435:1:87","type":"","value":"0"},{"kind":"number","nativeSrc":"3438:1:87","nodeType":"YulLiteral","src":"3438:1:87","type":"","value":"0"}],"functionName":{"name":"revert","nativeSrc":"3428:6:87","nodeType":"YulIdentifier","src":"3428:6:87"},"nativeSrc":"3428:12:87","nodeType":"YulFunctionCall","src":"3428:12:87"},"nativeSrc":"3428:12:87","nodeType":"YulExpressionStatement","src":"3428:12:87"}]},"condition":{"arguments":[{"name":"offset","nativeSrc":"3398:6:87","nodeType":"YulIdentifier","src":"3398:6:87"},{"kind":"number","nativeSrc":"3406:18:87","nodeType":"YulLiteral","src":"3406:18:87","type":"","value":"0xffffffffffffffff"}],"functionName":{"name":"gt","nativeSrc":"3395:2:87","nodeType":"YulIdentifier","src":"3395:2:87"},"nativeSrc":"3395:30:87","nodeType":"YulFunctionCall","src":"3395:30:87"},"nativeSrc":"3392:50:87","nodeType":"YulIf","src":"3392:50:87"},{"nativeSrc":"3451:59:87","nodeType":"YulAssignment","src":"3451:59:87","value":{"arguments":[{"arguments":[{"name":"headStart","nativeSrc":"3482:9:87","nodeType":"YulIdentifier","src":"3482:9:87"},{"name":"offset","nativeSrc":"3493:6:87","nodeType":"YulIdentifier","src":"3493:6:87"}],"functionName":{"name":"add","nativeSrc":"3478:3:87","nodeType":"YulIdentifier","src":"3478:3:87"},"nativeSrc":"3478:22:87","nodeType":"YulFunctionCall","src":"3478:22:87"},{"name":"dataEnd","nativeSrc":"3502:7:87","nodeType":"YulIdentifier","src":"3502:7:87"}],"functionName":{"name":"abi_decode_bytes","nativeSrc":"3461:16:87","nodeType":"YulIdentifier","src":"3461:16:87"},"nativeSrc":"3461:49:87","nodeType":"YulFunctionCall","src":"3461:49:87"},"variableNames":[{"name":"value0","nativeSrc":"3451:6:87","nodeType":"YulIdentifier","src":"3451:6:87"}]}]},"name":"abi_decode_tuple_t_bytes_memory_ptr","nativeSrc":"3196:320:87","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nativeSrc":"3241:9:87","nodeType":"YulTypedName","src":"3241:9:87","type":""},{"name":"dataEnd","nativeSrc":"3252:7:87","nodeType":"YulTypedName","src":"3252:7:87","type":""}],"returnVariables":[{"name":"value0","nativeSrc":"3264:6:87","nodeType":"YulTypedName","src":"3264:6:87","type":""}],"src":"3196:320:87"},{"body":{"nativeSrc":"3639:102:87","nodeType":"YulBlock","src":"3639:102:87","statements":[{"nativeSrc":"3649:26:87","nodeType":"YulAssignment","src":"3649:26:87","value":{"arguments":[{"name":"headStart","nativeSrc":"3661:9:87","nodeType":"YulIdentifier","src":"3661:9:87"},{"kind":"number","nativeSrc":"3672:2:87","nodeType":"YulLiteral","src":"3672:2:87","type":"","value":"32"}],"functionName":{"name":"add","nativeSrc":"3657:3:87","nodeType":"YulIdentifier","src":"3657:3:87"},"nativeSrc":"3657:18:87","nodeType":"YulFunctionCall","src":"3657:18:87"},"variableNames":[{"name":"tail","nativeSrc":"3649:4:87","nodeType":"YulIdentifier","src":"3649:4:87"}]},{"expression":{"arguments":[{"name":"headStart","nativeSrc":"3691:9:87","nodeType":"YulIdentifier","src":"3691:9:87"},{"arguments":[{"name":"value0","nativeSrc":"3706:6:87","nodeType":"YulIdentifier","src":"3706:6:87"},{"arguments":[{"arguments":[{"kind":"number","nativeSrc":"3722:3:87","nodeType":"YulLiteral","src":"3722:3:87","type":"","value":"160"},{"kind":"number","nativeSrc":"3727:1:87","nodeType":"YulLiteral","src":"3727:1:87","type":"","value":"1"}],"functionName":{"name":"shl","nativeSrc":"3718:3:87","nodeType":"YulIdentifier","src":"3718:3:87"},"nativeSrc":"3718:11:87","nodeType":"YulFunctionCall","src":"3718:11:87"},{"kind":"number","nativeSrc":"3731:1:87","nodeType":"YulLiteral","src":"3731:1:87","type":"","value":"1"}],"functionName":{"name":"sub","nativeSrc":"3714:3:87","nodeType":"YulIdentifier","src":"3714:3:87"},"nativeSrc":"3714:19:87","nodeType":"YulFunctionCall","src":"3714:19:87"}],"functionName":{"name":"and","nativeSrc":"3702:3:87","nodeType":"YulIdentifier","src":"3702:3:87"},"nativeSrc":"3702:32:87","nodeType":"YulFunctionCall","src":"3702:32:87"}],"functionName":{"name":"mstore","nativeSrc":"3684:6:87","nodeType":"YulIdentifier","src":"3684:6:87"},"nativeSrc":"3684:51:87","nodeType":"YulFunctionCall","src":"3684:51:87"},"nativeSrc":"3684:51:87","nodeType":"YulExpressionStatement","src":"3684:51:87"}]},"name":"abi_encode_tuple_t_contract$_IERC4626_$7127__to_t_address__fromStack_reversed","nativeSrc":"3521:220:87","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nativeSrc":"3608:9:87","nodeType":"YulTypedName","src":"3608:9:87","type":""},{"name":"value0","nativeSrc":"3619:6:87","nodeType":"YulTypedName","src":"3619:6:87","type":""}],"returnVariables":[{"name":"tail","nativeSrc":"3630:4:87","nodeType":"YulTypedName","src":"3630:4:87","type":""}],"src":"3521:220:87"},{"body":{"nativeSrc":"3903:214:87","nodeType":"YulBlock","src":"3903:214:87","statements":[{"nativeSrc":"3913:26:87","nodeType":"YulAssignment","src":"3913:26:87","value":{"arguments":[{"name":"headStart","nativeSrc":"3925:9:87","nodeType":"YulIdentifier","src":"3925:9:87"},{"kind":"number","nativeSrc":"3936:2:87","nodeType":"YulLiteral","src":"3936:2:87","type":"","value":"96"}],"functionName":{"name":"add","nativeSrc":"3921:3:87","nodeType":"YulIdentifier","src":"3921:3:87"},"nativeSrc":"3921:18:87","nodeType":"YulFunctionCall","src":"3921:18:87"},"variableNames":[{"name":"tail","nativeSrc":"3913:4:87","nodeType":"YulIdentifier","src":"3913:4:87"}]},{"expression":{"arguments":[{"name":"headStart","nativeSrc":"3955:9:87","nodeType":"YulIdentifier","src":"3955:9:87"},{"name":"value0","nativeSrc":"3966:6:87","nodeType":"YulIdentifier","src":"3966:6:87"}],"functionName":{"name":"mstore","nativeSrc":"3948:6:87","nodeType":"YulIdentifier","src":"3948:6:87"},"nativeSrc":"3948:25:87","nodeType":"YulFunctionCall","src":"3948:25:87"},"nativeSrc":"3948:25:87","nodeType":"YulExpressionStatement","src":"3948:25:87"},{"expression":{"arguments":[{"arguments":[{"name":"headStart","nativeSrc":"3993:9:87","nodeType":"YulIdentifier","src":"3993:9:87"},{"kind":"number","nativeSrc":"4004:2:87","nodeType":"YulLiteral","src":"4004:2:87","type":"","value":"32"}],"functionName":{"name":"add","nativeSrc":"3989:3:87","nodeType":"YulIdentifier","src":"3989:3:87"},"nativeSrc":"3989:18:87","nodeType":"YulFunctionCall","src":"3989:18:87"},{"arguments":[{"name":"value1","nativeSrc":"4013:6:87","nodeType":"YulIdentifier","src":"4013:6:87"},{"arguments":[{"arguments":[{"kind":"number","nativeSrc":"4029:3:87","nodeType":"YulLiteral","src":"4029:3:87","type":"","value":"160"},{"kind":"number","nativeSrc":"4034:1:87","nodeType":"YulLiteral","src":"4034:1:87","type":"","value":"1"}],"functionName":{"name":"shl","nativeSrc":"4025:3:87","nodeType":"YulIdentifier","src":"4025:3:87"},"nativeSrc":"4025:11:87","nodeType":"YulFunctionCall","src":"4025:11:87"},{"kind":"number","nativeSrc":"4038:1:87","nodeType":"YulLiteral","src":"4038:1:87","type":"","value":"1"}],"functionName":{"name":"sub","nativeSrc":"4021:3:87","nodeType":"YulIdentifier","src":"4021:3:87"},"nativeSrc":"4021:19:87","nodeType":"YulFunctionCall","src":"4021:19:87"}],"functionName":{"name":"and","nativeSrc":"4009:3:87","nodeType":"YulIdentifier","src":"4009:3:87"},"nativeSrc":"4009:32:87","nodeType":"YulFunctionCall","src":"4009:32:87"}],"functionName":{"name":"mstore","nativeSrc":"3982:6:87","nodeType":"YulIdentifier","src":"3982:6:87"},"nativeSrc":"3982:60:87","nodeType":"YulFunctionCall","src":"3982:60:87"},"nativeSrc":"3982:60:87","nodeType":"YulExpressionStatement","src":"3982:60:87"},{"expression":{"arguments":[{"arguments":[{"name":"headStart","nativeSrc":"4062:9:87","nodeType":"YulIdentifier","src":"4062:9:87"},{"kind":"number","nativeSrc":"4073:2:87","nodeType":"YulLiteral","src":"4073:2:87","type":"","value":"64"}],"functionName":{"name":"add","nativeSrc":"4058:3:87","nodeType":"YulIdentifier","src":"4058:3:87"},"nativeSrc":"4058:18:87","nodeType":"YulFunctionCall","src":"4058:18:87"},{"arguments":[{"name":"value2","nativeSrc":"4082:6:87","nodeType":"YulIdentifier","src":"4082:6:87"},{"arguments":[{"arguments":[{"kind":"number","nativeSrc":"4098:3:87","nodeType":"YulLiteral","src":"4098:3:87","type":"","value":"160"},{"kind":"number","nativeSrc":"4103:1:87","nodeType":"YulLiteral","src":"4103:1:87","type":"","value":"1"}],"functionName":{"name":"shl","nativeSrc":"4094:3:87","nodeType":"YulIdentifier","src":"4094:3:87"},"nativeSrc":"4094:11:87","nodeType":"YulFunctionCall","src":"4094:11:87"},{"kind":"number","nativeSrc":"4107:1:87","nodeType":"YulLiteral","src":"4107:1:87","type":"","value":"1"}],"functionName":{"name":"sub","nativeSrc":"4090:3:87","nodeType":"YulIdentifier","src":"4090:3:87"},"nativeSrc":"4090:19:87","nodeType":"YulFunctionCall","src":"4090:19:87"}],"functionName":{"name":"and","nativeSrc":"4078:3:87","nodeType":"YulIdentifier","src":"4078:3:87"},"nativeSrc":"4078:32:87","nodeType":"YulFunctionCall","src":"4078:32:87"}],"functionName":{"name":"mstore","nativeSrc":"4051:6:87","nodeType":"YulIdentifier","src":"4051:6:87"},"nativeSrc":"4051:60:87","nodeType":"YulFunctionCall","src":"4051:60:87"},"nativeSrc":"4051:60:87","nodeType":"YulExpressionStatement","src":"4051:60:87"}]},"name":"abi_encode_tuple_t_uint256_t_address_t_address__to_t_uint256_t_address_t_address__fromStack_reversed","nativeSrc":"3746:371:87","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nativeSrc":"3856:9:87","nodeType":"YulTypedName","src":"3856:9:87","type":""},{"name":"value2","nativeSrc":"3867:6:87","nodeType":"YulTypedName","src":"3867:6:87","type":""},{"name":"value1","nativeSrc":"3875:6:87","nodeType":"YulTypedName","src":"3875:6:87","type":""},{"name":"value0","nativeSrc":"3883:6:87","nodeType":"YulTypedName","src":"3883:6:87","type":""}],"returnVariables":[{"name":"tail","nativeSrc":"3894:4:87","nodeType":"YulTypedName","src":"3894:4:87","type":""}],"src":"3746:371:87"},{"body":{"nativeSrc":"4203:103:87","nodeType":"YulBlock","src":"4203:103:87","statements":[{"body":{"nativeSrc":"4249:16:87","nodeType":"YulBlock","src":"4249:16:87","statements":[{"expression":{"arguments":[{"kind":"number","nativeSrc":"4258:1:87","nodeType":"YulLiteral","src":"4258:1:87","type":"","value":"0"},{"kind":"number","nativeSrc":"4261:1:87","nodeType":"YulLiteral","src":"4261:1:87","type":"","value":"0"}],"functionName":{"name":"revert","nativeSrc":"4251:6:87","nodeType":"YulIdentifier","src":"4251:6:87"},"nativeSrc":"4251:12:87","nodeType":"YulFunctionCall","src":"4251:12:87"},"nativeSrc":"4251:12:87","nodeType":"YulExpressionStatement","src":"4251:12:87"}]},"condition":{"arguments":[{"arguments":[{"name":"dataEnd","nativeSrc":"4224:7:87","nodeType":"YulIdentifier","src":"4224:7:87"},{"name":"headStart","nativeSrc":"4233:9:87","nodeType":"YulIdentifier","src":"4233:9:87"}],"functionName":{"name":"sub","nativeSrc":"4220:3:87","nodeType":"YulIdentifier","src":"4220:3:87"},"nativeSrc":"4220:23:87","nodeType":"YulFunctionCall","src":"4220:23:87"},{"kind":"number","nativeSrc":"4245:2:87","nodeType":"YulLiteral","src":"4245:2:87","type":"","value":"32"}],"functionName":{"name":"slt","nativeSrc":"4216:3:87","nodeType":"YulIdentifier","src":"4216:3:87"},"nativeSrc":"4216:32:87","nodeType":"YulFunctionCall","src":"4216:32:87"},"nativeSrc":"4213:52:87","nodeType":"YulIf","src":"4213:52:87"},{"nativeSrc":"4274:26:87","nodeType":"YulAssignment","src":"4274:26:87","value":{"arguments":[{"name":"headStart","nativeSrc":"4290:9:87","nodeType":"YulIdentifier","src":"4290:9:87"}],"functionName":{"name":"mload","nativeSrc":"4284:5:87","nodeType":"YulIdentifier","src":"4284:5:87"},"nativeSrc":"4284:16:87","nodeType":"YulFunctionCall","src":"4284:16:87"},"variableNames":[{"name":"value0","nativeSrc":"4274:6:87","nodeType":"YulIdentifier","src":"4274:6:87"}]}]},"name":"abi_decode_tuple_t_uint256_fromMemory","nativeSrc":"4122:184:87","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nativeSrc":"4169:9:87","nodeType":"YulTypedName","src":"4169:9:87","type":""},{"name":"dataEnd","nativeSrc":"4180:7:87","nodeType":"YulTypedName","src":"4180:7:87","type":""}],"returnVariables":[{"name":"value0","nativeSrc":"4192:6:87","nodeType":"YulTypedName","src":"4192:6:87","type":""}],"src":"4122:184:87"},{"body":{"nativeSrc":"4440:145:87","nodeType":"YulBlock","src":"4440:145:87","statements":[{"nativeSrc":"4450:26:87","nodeType":"YulAssignment","src":"4450:26:87","value":{"arguments":[{"name":"headStart","nativeSrc":"4462:9:87","nodeType":"YulIdentifier","src":"4462:9:87"},{"kind":"number","nativeSrc":"4473:2:87","nodeType":"YulLiteral","src":"4473:2:87","type":"","value":"64"}],"functionName":{"name":"add","nativeSrc":"4458:3:87","nodeType":"YulIdentifier","src":"4458:3:87"},"nativeSrc":"4458:18:87","nodeType":"YulFunctionCall","src":"4458:18:87"},"variableNames":[{"name":"tail","nativeSrc":"4450:4:87","nodeType":"YulIdentifier","src":"4450:4:87"}]},{"expression":{"arguments":[{"name":"headStart","nativeSrc":"4492:9:87","nodeType":"YulIdentifier","src":"4492:9:87"},{"arguments":[{"name":"value0","nativeSrc":"4507:6:87","nodeType":"YulIdentifier","src":"4507:6:87"},{"arguments":[{"arguments":[{"kind":"number","nativeSrc":"4523:3:87","nodeType":"YulLiteral","src":"4523:3:87","type":"","value":"160"},{"kind":"number","nativeSrc":"4528:1:87","nodeType":"YulLiteral","src":"4528:1:87","type":"","value":"1"}],"functionName":{"name":"shl","nativeSrc":"4519:3:87","nodeType":"YulIdentifier","src":"4519:3:87"},"nativeSrc":"4519:11:87","nodeType":"YulFunctionCall","src":"4519:11:87"},{"kind":"number","nativeSrc":"4532:1:87","nodeType":"YulLiteral","src":"4532:1:87","type":"","value":"1"}],"functionName":{"name":"sub","nativeSrc":"4515:3:87","nodeType":"YulIdentifier","src":"4515:3:87"},"nativeSrc":"4515:19:87","nodeType":"YulFunctionCall","src":"4515:19:87"}],"functionName":{"name":"and","nativeSrc":"4503:3:87","nodeType":"YulIdentifier","src":"4503:3:87"},"nativeSrc":"4503:32:87","nodeType":"YulFunctionCall","src":"4503:32:87"}],"functionName":{"name":"mstore","nativeSrc":"4485:6:87","nodeType":"YulIdentifier","src":"4485:6:87"},"nativeSrc":"4485:51:87","nodeType":"YulFunctionCall","src":"4485:51:87"},"nativeSrc":"4485:51:87","nodeType":"YulExpressionStatement","src":"4485:51:87"},{"expression":{"arguments":[{"arguments":[{"name":"headStart","nativeSrc":"4556:9:87","nodeType":"YulIdentifier","src":"4556:9:87"},{"kind":"number","nativeSrc":"4567:2:87","nodeType":"YulLiteral","src":"4567:2:87","type":"","value":"32"}],"functionName":{"name":"add","nativeSrc":"4552:3:87","nodeType":"YulIdentifier","src":"4552:3:87"},"nativeSrc":"4552:18:87","nodeType":"YulFunctionCall","src":"4552:18:87"},{"name":"value1","nativeSrc":"4572:6:87","nodeType":"YulIdentifier","src":"4572:6:87"}],"functionName":{"name":"mstore","nativeSrc":"4545:6:87","nodeType":"YulIdentifier","src":"4545:6:87"},"nativeSrc":"4545:34:87","nodeType":"YulFunctionCall","src":"4545:34:87"},"nativeSrc":"4545:34:87","nodeType":"YulExpressionStatement","src":"4545:34:87"}]},"name":"abi_encode_tuple_t_address_t_uint256__to_t_address_t_uint256__fromStack_reversed","nativeSrc":"4311:274:87","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nativeSrc":"4401:9:87","nodeType":"YulTypedName","src":"4401:9:87","type":""},{"name":"value1","nativeSrc":"4412:6:87","nodeType":"YulTypedName","src":"4412:6:87","type":""},{"name":"value0","nativeSrc":"4420:6:87","nodeType":"YulTypedName","src":"4420:6:87","type":""}],"returnVariables":[{"name":"tail","nativeSrc":"4431:4:87","nodeType":"YulTypedName","src":"4431:4:87","type":""}],"src":"4311:274:87"},{"body":{"nativeSrc":"4668:167:87","nodeType":"YulBlock","src":"4668:167:87","statements":[{"body":{"nativeSrc":"4714:16:87","nodeType":"YulBlock","src":"4714:16:87","statements":[{"expression":{"arguments":[{"kind":"number","nativeSrc":"4723:1:87","nodeType":"YulLiteral","src":"4723:1:87","type":"","value":"0"},{"kind":"number","nativeSrc":"4726:1:87","nodeType":"YulLiteral","src":"4726:1:87","type":"","value":"0"}],"functionName":{"name":"revert","nativeSrc":"4716:6:87","nodeType":"YulIdentifier","src":"4716:6:87"},"nativeSrc":"4716:12:87","nodeType":"YulFunctionCall","src":"4716:12:87"},"nativeSrc":"4716:12:87","nodeType":"YulExpressionStatement","src":"4716:12:87"}]},"condition":{"arguments":[{"arguments":[{"name":"dataEnd","nativeSrc":"4689:7:87","nodeType":"YulIdentifier","src":"4689:7:87"},{"name":"headStart","nativeSrc":"4698:9:87","nodeType":"YulIdentifier","src":"4698:9:87"}],"functionName":{"name":"sub","nativeSrc":"4685:3:87","nodeType":"YulIdentifier","src":"4685:3:87"},"nativeSrc":"4685:23:87","nodeType":"YulFunctionCall","src":"4685:23:87"},{"kind":"number","nativeSrc":"4710:2:87","nodeType":"YulLiteral","src":"4710:2:87","type":"","value":"32"}],"functionName":{"name":"slt","nativeSrc":"4681:3:87","nodeType":"YulIdentifier","src":"4681:3:87"},"nativeSrc":"4681:32:87","nodeType":"YulFunctionCall","src":"4681:32:87"},"nativeSrc":"4678:52:87","nodeType":"YulIf","src":"4678:52:87"},{"nativeSrc":"4739:29:87","nodeType":"YulVariableDeclaration","src":"4739:29:87","value":{"arguments":[{"name":"headStart","nativeSrc":"4758:9:87","nodeType":"YulIdentifier","src":"4758:9:87"}],"functionName":{"name":"mload","nativeSrc":"4752:5:87","nodeType":"YulIdentifier","src":"4752:5:87"},"nativeSrc":"4752:16:87","nodeType":"YulFunctionCall","src":"4752:16:87"},"variables":[{"name":"value","nativeSrc":"4743:5:87","nodeType":"YulTypedName","src":"4743:5:87","type":""}]},{"expression":{"arguments":[{"name":"value","nativeSrc":"4799:5:87","nodeType":"YulIdentifier","src":"4799:5:87"}],"functionName":{"name":"validator_revert_bool","nativeSrc":"4777:21:87","nodeType":"YulIdentifier","src":"4777:21:87"},"nativeSrc":"4777:28:87","nodeType":"YulFunctionCall","src":"4777:28:87"},"nativeSrc":"4777:28:87","nodeType":"YulExpressionStatement","src":"4777:28:87"},{"nativeSrc":"4814:15:87","nodeType":"YulAssignment","src":"4814:15:87","value":{"name":"value","nativeSrc":"4824:5:87","nodeType":"YulIdentifier","src":"4824:5:87"},"variableNames":[{"name":"value0","nativeSrc":"4814:6:87","nodeType":"YulIdentifier","src":"4814:6:87"}]}]},"name":"abi_decode_tuple_t_bool_fromMemory","nativeSrc":"4590:245:87","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nativeSrc":"4634:9:87","nodeType":"YulTypedName","src":"4634:9:87","type":""},{"name":"dataEnd","nativeSrc":"4645:7:87","nodeType":"YulTypedName","src":"4645:7:87","type":""}],"returnVariables":[{"name":"value0","nativeSrc":"4657:6:87","nodeType":"YulTypedName","src":"4657:6:87","type":""}],"src":"4590:245:87"},{"body":{"nativeSrc":"4969:145:87","nodeType":"YulBlock","src":"4969:145:87","statements":[{"nativeSrc":"4979:26:87","nodeType":"YulAssignment","src":"4979:26:87","value":{"arguments":[{"name":"headStart","nativeSrc":"4991:9:87","nodeType":"YulIdentifier","src":"4991:9:87"},{"kind":"number","nativeSrc":"5002:2:87","nodeType":"YulLiteral","src":"5002:2:87","type":"","value":"64"}],"functionName":{"name":"add","nativeSrc":"4987:3:87","nodeType":"YulIdentifier","src":"4987:3:87"},"nativeSrc":"4987:18:87","nodeType":"YulFunctionCall","src":"4987:18:87"},"variableNames":[{"name":"tail","nativeSrc":"4979:4:87","nodeType":"YulIdentifier","src":"4979:4:87"}]},{"expression":{"arguments":[{"name":"headStart","nativeSrc":"5021:9:87","nodeType":"YulIdentifier","src":"5021:9:87"},{"name":"value0","nativeSrc":"5032:6:87","nodeType":"YulIdentifier","src":"5032:6:87"}],"functionName":{"name":"mstore","nativeSrc":"5014:6:87","nodeType":"YulIdentifier","src":"5014:6:87"},"nativeSrc":"5014:25:87","nodeType":"YulFunctionCall","src":"5014:25:87"},"nativeSrc":"5014:25:87","nodeType":"YulExpressionStatement","src":"5014:25:87"},{"expression":{"arguments":[{"arguments":[{"name":"headStart","nativeSrc":"5059:9:87","nodeType":"YulIdentifier","src":"5059:9:87"},{"kind":"number","nativeSrc":"5070:2:87","nodeType":"YulLiteral","src":"5070:2:87","type":"","value":"32"}],"functionName":{"name":"add","nativeSrc":"5055:3:87","nodeType":"YulIdentifier","src":"5055:3:87"},"nativeSrc":"5055:18:87","nodeType":"YulFunctionCall","src":"5055:18:87"},{"arguments":[{"name":"value1","nativeSrc":"5079:6:87","nodeType":"YulIdentifier","src":"5079:6:87"},{"arguments":[{"arguments":[{"kind":"number","nativeSrc":"5095:3:87","nodeType":"YulLiteral","src":"5095:3:87","type":"","value":"160"},{"kind":"number","nativeSrc":"5100:1:87","nodeType":"YulLiteral","src":"5100:1:87","type":"","value":"1"}],"functionName":{"name":"shl","nativeSrc":"5091:3:87","nodeType":"YulIdentifier","src":"5091:3:87"},"nativeSrc":"5091:11:87","nodeType":"YulFunctionCall","src":"5091:11:87"},{"kind":"number","nativeSrc":"5104:1:87","nodeType":"YulLiteral","src":"5104:1:87","type":"","value":"1"}],"functionName":{"name":"sub","nativeSrc":"5087:3:87","nodeType":"YulIdentifier","src":"5087:3:87"},"nativeSrc":"5087:19:87","nodeType":"YulFunctionCall","src":"5087:19:87"}],"functionName":{"name":"and","nativeSrc":"5075:3:87","nodeType":"YulIdentifier","src":"5075:3:87"},"nativeSrc":"5075:32:87","nodeType":"YulFunctionCall","src":"5075:32:87"}],"functionName":{"name":"mstore","nativeSrc":"5048:6:87","nodeType":"YulIdentifier","src":"5048:6:87"},"nativeSrc":"5048:60:87","nodeType":"YulFunctionCall","src":"5048:60:87"},"nativeSrc":"5048:60:87","nodeType":"YulExpressionStatement","src":"5048:60:87"}]},"name":"abi_encode_tuple_t_uint256_t_address__to_t_uint256_t_address__fromStack_reversed","nativeSrc":"4840:274:87","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nativeSrc":"4930:9:87","nodeType":"YulTypedName","src":"4930:9:87","type":""},{"name":"value1","nativeSrc":"4941:6:87","nodeType":"YulTypedName","src":"4941:6:87","type":""},{"name":"value0","nativeSrc":"4949:6:87","nodeType":"YulTypedName","src":"4949:6:87","type":""}],"returnVariables":[{"name":"tail","nativeSrc":"4960:4:87","nodeType":"YulTypedName","src":"4960:4:87","type":""}],"src":"4840:274:87"}]},"contents":"{\n    { }\n    function panic_error_0x41()\n    {\n        mstore(0, shl(224, 0x4e487b71))\n        mstore(4, 0x41)\n        revert(0, 0x24)\n    }\n    function abi_decode_bytes(offset, end) -> array\n    {\n        if iszero(slt(add(offset, 0x1f), end)) { revert(0, 0) }\n        let length := calldataload(offset)\n        if gt(length, 0xffffffffffffffff) { panic_error_0x41() }\n        let memPtr := mload(64)\n        let newFreePtr := add(memPtr, and(add(and(add(length, 0x1f), not(31)), 63), not(31)))\n        if or(gt(newFreePtr, 0xffffffffffffffff), lt(newFreePtr, memPtr)) { panic_error_0x41() }\n        mstore(64, newFreePtr)\n        mstore(memPtr, length)\n        if gt(add(add(offset, length), 0x20), end) { revert(0, 0) }\n        calldatacopy(add(memPtr, 0x20), add(offset, 0x20), length)\n        mstore(add(add(memPtr, length), 0x20), 0)\n        array := memPtr\n    }\n    function abi_decode_tuple_t_uint8t_bytes_memory_ptr(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, 0xff))) { revert(0, 0) }\n        value0 := value\n        let offset := calldataload(add(headStart, 32))\n        if gt(offset, 0xffffffffffffffff) { revert(0, 0) }\n        value1 := abi_decode_bytes(add(headStart, offset), dataEnd)\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        let length := mload(value0)\n        mstore(add(headStart, 32), length)\n        mcopy(add(headStart, 64), add(value0, 32), length)\n        mstore(add(add(headStart, length), 64), 0)\n        tail := add(add(headStart, and(add(length, 31), not(31))), 64)\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_address(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, sub(shl(160, 1), 1)))) { revert(0, 0) }\n        value0 := value\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_bool(value)\n    {\n        if iszero(eq(value, iszero(iszero(value)))) { revert(0, 0) }\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_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_address__to_t_address__fromStack_reversed(headStart, value0) -> tail\n    {\n        tail := add(headStart, 32)\n        mstore(headStart, and(value0, sub(shl(160, 1), 1)))\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        if gt(offset, 0xffffffffffffffff) { revert(0, 0) }\n        value0 := abi_decode_bytes(add(headStart, offset), dataEnd)\n    }\n    function abi_encode_tuple_t_contract$_IERC4626_$7127__to_t_address__fromStack_reversed(headStart, value0) -> tail\n    {\n        tail := add(headStart, 32)\n        mstore(headStart, and(value0, sub(shl(160, 1), 1)))\n    }\n    function abi_encode_tuple_t_uint256_t_address_t_address__to_t_uint256_t_address_t_address__fromStack_reversed(headStart, value2, value1, value0) -> tail\n    {\n        tail := add(headStart, 96)\n        mstore(headStart, value0)\n        mstore(add(headStart, 32), and(value1, sub(shl(160, 1), 1)))\n        mstore(add(headStart, 64), and(value2, sub(shl(160, 1), 1)))\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_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, sub(shl(160, 1), 1)))\n        mstore(add(headStart, 32), value1)\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_encode_tuple_t_uint256_t_address__to_t_uint256_t_address__fromStack_reversed(headStart, value1, value0) -> tail\n    {\n        tail := add(headStart, 64)\n        mstore(headStart, value0)\n        mstore(add(headStart, 32), and(value1, sub(shl(160, 1), 1)))\n    }\n}","id":87,"language":"Yul","name":"#utility.yul"}],"immutableReferences":{"22970":[{"length":32,"start":524},{"length":32,"start":597},{"length":32,"start":971},{"length":32,"start":1223},{"length":32,"start":1328}],"22976":[{"length":32,"start":289}],"22979":[{"length":32,"start":457},{"length":32,"start":695},{"length":32,"start":847},{"length":32,"start":1064},{"length":32,"start":1414},{"length":32,"start":1596},{"length":32,"start":1684},{"length":32,"start":1766}],"22982":[{"length":32,"start":340},{"length":32,"start":1461}]},"linkReferences":{},"object":"608060405234801561000f575f5ffd5b50600436106100a6575f3560e01c80639c4667a21161006e5780639c4667a2146101435780639cd471281461018e578063b6b55f25146101a1578063ce96cb77146101b4578063de2a87b5146101c7578063f3e0ffbf146101ed575f5ffd5b80630981b1c2146100aa5780632e1a7d4d146100d3578063402d267d146100e85780635a117456146101095780635b9a4c351461011c575b5f5ffd5b6100bd6100b8366004610816565b610200565b6040516100ca9190610868565b60405180910390f35b6100e66100e136600461089d565b61024b565b005b6100fb6100f63660046108b4565b61032e565b6040519081526020016100ca565b6100e66101173660046108ee565b6103c1565b6100fb7f000000000000000000000000000000000000000000000000000000000000000081565b6101766101513660046108b4565b507f000000000000000000000000000000000000000000000000000000000000000090565b6040516001600160a01b0390911681526020016100ca565b6100e661019c366004610909565b6104bd565b6100e66101af36600461089d565b610526565b6100fb6101c23660046108b4565b610673565b7f0000000000000000000000000000000000000000000000000000000000000000610176565b6100fb6101fb3660046108b4565b6106c5565b60606001600160a01b037f00000000000000000000000000000000000000000000000000000000000000001630036100a657604051632abf118b60e21b815260040160405180910390fd5b6001600160a01b037f000000000000000000000000000000000000000000000000000000000000000016300361029457604051632abf118b60e21b815260040160405180910390fd5b604051632d182be560e21b815260048101829052306024820181905260448201527f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03169063b460af94906064015b6020604051808303815f875af1158015610306573d5f5f3e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061032a9190610943565b5050565b60405163402d267d60e01b81526001600160a01b0382811660048301525f917f00000000000000000000000000000000000000000000000000000000000000009091169063402d267d906024015b602060405180830381865afa158015610397573d5f5f3e3d5ffd5b505050506040513d601f19601f820116820180604052508101906103bb9190610943565b92915050565b6001600160a01b037f000000000000000000000000000000000000000000000000000000000000000016300361040a57604051632abf118b60e21b815260040160405180910390fd5b8015801561049c57506040516370a0823160e01b81523060048201527f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316906370a0823190602401602060405180830381865afa158015610475573d5f5f3e3d5ffd5b505050506040513d601f19601f820116820180604052508101906104999190610943565b15155b156104ba576040516342a176d160e11b815260040160405180910390fd5b50565b6001600160a01b037f000000000000000000000000000000000000000000000000000000000000000016300361050657604051632abf118b60e21b815260040160405180910390fd5b8051156104ba576040516350701b6160e01b815260040160405180910390fd5b6001600160a01b037f000000000000000000000000000000000000000000000000000000000000000016300361056f57604051632abf118b60e21b815260040160405180910390fd5b60405163095ea7b360e01b81526001600160a01b037f000000000000000000000000000000000000000000000000000000000000000081166004830152602482018390527f0000000000000000000000000000000000000000000000000000000000000000169063095ea7b3906044016020604051808303815f875af11580156105fb573d5f5f3e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061061f919061095a565b50604051636e553f6560e01b8152600481018290523060248201527f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031690636e553f65906044016102ea565b60405163ce96cb7760e01b81526001600160a01b0382811660048301525f917f00000000000000000000000000000000000000000000000000000000000000009091169063ce96cb779060240161037c565b6040516370a0823160e01b81526001600160a01b0382811660048301525f917f0000000000000000000000000000000000000000000000000000000000000000909116906307a2d13a9082906370a0823190602401602060405180830381865afa158015610735573d5f5f3e3d5ffd5b505050506040513d601f19601f820116820180604052508101906107599190610943565b6040518263ffffffff1660e01b815260040161037c91815260200190565b634e487b7160e01b5f52604160045260245ffd5b5f82601f83011261079a575f5ffd5b813567ffffffffffffffff8111156107b4576107b4610777565b604051601f8201601f19908116603f0116810167ffffffffffffffff811182821017156107e3576107e3610777565b6040528181528382016020018510156107fa575f5ffd5b816020850160208301375f918101602001919091529392505050565b5f5f60408385031215610827575f5ffd5b823560ff81168114610837575f5ffd5b9150602083013567ffffffffffffffff811115610852575f5ffd5b61085e8582860161078b565b9150509250929050565b602081525f82518060208401528060208501604085015e5f604082850101526040601f19601f83011684010191505092915050565b5f602082840312156108ad575f5ffd5b5035919050565b5f602082840312156108c4575f5ffd5b81356001600160a01b03811681146108da575f5ffd5b9392505050565b80151581146104ba575f5ffd5b5f602082840312156108fe575f5ffd5b81356108da816108e1565b5f60208284031215610919575f5ffd5b813567ffffffffffffffff81111561092f575f5ffd5b61093b8482850161078b565b949350505050565b5f60208284031215610953575f5ffd5b5051919050565b5f6020828403121561096a575f5ffd5b81516108da816108e156fea26469706673582212206211cf4f4a2c3f65954bbdb6d146b5b47a7a47c53a2b6567ee3200d8aa651b2864736f6c634300081e0033","opcodes":"PUSH1 0x80 PUSH1 0x40 MSTORE CALLVALUE DUP1 ISZERO PUSH2 0xF JUMPI PUSH0 PUSH0 REVERT JUMPDEST POP PUSH1 0x4 CALLDATASIZE LT PUSH2 0xA6 JUMPI PUSH0 CALLDATALOAD PUSH1 0xE0 SHR DUP1 PUSH4 0x9C4667A2 GT PUSH2 0x6E JUMPI DUP1 PUSH4 0x9C4667A2 EQ PUSH2 0x143 JUMPI DUP1 PUSH4 0x9CD47128 EQ PUSH2 0x18E JUMPI DUP1 PUSH4 0xB6B55F25 EQ PUSH2 0x1A1 JUMPI DUP1 PUSH4 0xCE96CB77 EQ PUSH2 0x1B4 JUMPI DUP1 PUSH4 0xDE2A87B5 EQ PUSH2 0x1C7 JUMPI DUP1 PUSH4 0xF3E0FFBF EQ PUSH2 0x1ED JUMPI PUSH0 PUSH0 REVERT JUMPDEST DUP1 PUSH4 0x981B1C2 EQ PUSH2 0xAA JUMPI DUP1 PUSH4 0x2E1A7D4D EQ PUSH2 0xD3 JUMPI DUP1 PUSH4 0x402D267D EQ PUSH2 0xE8 JUMPI DUP1 PUSH4 0x5A117456 EQ PUSH2 0x109 JUMPI DUP1 PUSH4 0x5B9A4C35 EQ PUSH2 0x11C JUMPI JUMPDEST PUSH0 PUSH0 REVERT JUMPDEST PUSH2 0xBD PUSH2 0xB8 CALLDATASIZE PUSH1 0x4 PUSH2 0x816 JUMP JUMPDEST PUSH2 0x200 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0xCA SWAP2 SWAP1 PUSH2 0x868 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST PUSH2 0xE6 PUSH2 0xE1 CALLDATASIZE PUSH1 0x4 PUSH2 0x89D JUMP JUMPDEST PUSH2 0x24B JUMP JUMPDEST STOP JUMPDEST PUSH2 0xFB PUSH2 0xF6 CALLDATASIZE PUSH1 0x4 PUSH2 0x8B4 JUMP JUMPDEST PUSH2 0x32E JUMP JUMPDEST PUSH1 0x40 MLOAD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH2 0xCA JUMP JUMPDEST PUSH2 0xE6 PUSH2 0x117 CALLDATASIZE PUSH1 0x4 PUSH2 0x8EE JUMP JUMPDEST PUSH2 0x3C1 JUMP JUMPDEST PUSH2 0xFB PUSH32 0x0 DUP2 JUMP JUMPDEST PUSH2 0x176 PUSH2 0x151 CALLDATASIZE PUSH1 0x4 PUSH2 0x8B4 JUMP JUMPDEST POP PUSH32 0x0 SWAP1 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP1 SWAP2 AND DUP2 MSTORE PUSH1 0x20 ADD PUSH2 0xCA JUMP JUMPDEST PUSH2 0xE6 PUSH2 0x19C CALLDATASIZE PUSH1 0x4 PUSH2 0x909 JUMP JUMPDEST PUSH2 0x4BD JUMP JUMPDEST PUSH2 0xE6 PUSH2 0x1AF CALLDATASIZE PUSH1 0x4 PUSH2 0x89D JUMP JUMPDEST PUSH2 0x526 JUMP JUMPDEST PUSH2 0xFB PUSH2 0x1C2 CALLDATASIZE PUSH1 0x4 PUSH2 0x8B4 JUMP JUMPDEST PUSH2 0x673 JUMP JUMPDEST PUSH32 0x0 PUSH2 0x176 JUMP JUMPDEST PUSH2 0xFB PUSH2 0x1FB CALLDATASIZE PUSH1 0x4 PUSH2 0x8B4 JUMP JUMPDEST PUSH2 0x6C5 JUMP JUMPDEST PUSH1 0x60 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB PUSH32 0x0 AND ADDRESS SUB PUSH2 0xA6 JUMPI PUSH1 0x40 MLOAD PUSH4 0x2ABF118B PUSH1 0xE2 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB PUSH32 0x0 AND ADDRESS SUB PUSH2 0x294 JUMPI PUSH1 0x40 MLOAD PUSH4 0x2ABF118B PUSH1 0xE2 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH1 0x40 MLOAD PUSH4 0x2D182BE5 PUSH1 0xE2 SHL DUP2 MSTORE PUSH1 0x4 DUP2 ADD DUP3 SWAP1 MSTORE ADDRESS PUSH1 0x24 DUP3 ADD DUP2 SWAP1 MSTORE PUSH1 0x44 DUP3 ADD MSTORE PUSH32 0x0 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND SWAP1 PUSH4 0xB460AF94 SWAP1 PUSH1 0x64 ADD JUMPDEST PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 PUSH0 DUP8 GAS CALL ISZERO DUP1 ISZERO PUSH2 0x306 JUMPI RETURNDATASIZE PUSH0 PUSH0 RETURNDATACOPY RETURNDATASIZE PUSH0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP3 ADD DUP1 PUSH1 0x40 MSTORE POP DUP2 ADD SWAP1 PUSH2 0x32A SWAP2 SWAP1 PUSH2 0x943 JUMP JUMPDEST POP POP JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH4 0x402D267D PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP3 DUP2 AND PUSH1 0x4 DUP4 ADD MSTORE PUSH0 SWAP2 PUSH32 0x0 SWAP1 SWAP2 AND SWAP1 PUSH4 0x402D267D SWAP1 PUSH1 0x24 ADD JUMPDEST PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x397 JUMPI RETURNDATASIZE PUSH0 PUSH0 RETURNDATACOPY RETURNDATASIZE PUSH0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP3 ADD DUP1 PUSH1 0x40 MSTORE POP DUP2 ADD SWAP1 PUSH2 0x3BB SWAP2 SWAP1 PUSH2 0x943 JUMP JUMPDEST SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB PUSH32 0x0 AND ADDRESS SUB PUSH2 0x40A JUMPI PUSH1 0x40 MLOAD PUSH4 0x2ABF118B PUSH1 0xE2 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST DUP1 ISZERO DUP1 ISZERO PUSH2 0x49C JUMPI POP PUSH1 0x40 MLOAD PUSH4 0x70A08231 PUSH1 0xE0 SHL DUP2 MSTORE ADDRESS PUSH1 0x4 DUP3 ADD MSTORE PUSH32 0x0 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND SWAP1 PUSH4 0x70A08231 SWAP1 PUSH1 0x24 ADD PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x475 JUMPI RETURNDATASIZE PUSH0 PUSH0 RETURNDATACOPY RETURNDATASIZE PUSH0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP3 ADD DUP1 PUSH1 0x40 MSTORE POP DUP2 ADD SWAP1 PUSH2 0x499 SWAP2 SWAP1 PUSH2 0x943 JUMP JUMPDEST ISZERO ISZERO JUMPDEST ISZERO PUSH2 0x4BA JUMPI PUSH1 0x40 MLOAD PUSH4 0x42A176D1 PUSH1 0xE1 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST POP JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB PUSH32 0x0 AND ADDRESS SUB PUSH2 0x506 JUMPI PUSH1 0x40 MLOAD PUSH4 0x2ABF118B PUSH1 0xE2 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST DUP1 MLOAD ISZERO PUSH2 0x4BA JUMPI PUSH1 0x40 MLOAD PUSH4 0x50701B61 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 PUSH32 0x0 AND ADDRESS SUB PUSH2 0x56F JUMPI PUSH1 0x40 MLOAD PUSH4 0x2ABF118B PUSH1 0xE2 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH1 0x40 MLOAD PUSH4 0x95EA7B3 PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB PUSH32 0x0 DUP2 AND PUSH1 0x4 DUP4 ADD MSTORE PUSH1 0x24 DUP3 ADD DUP4 SWAP1 MSTORE PUSH32 0x0 AND SWAP1 PUSH4 0x95EA7B3 SWAP1 PUSH1 0x44 ADD PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 PUSH0 DUP8 GAS CALL ISZERO DUP1 ISZERO PUSH2 0x5FB JUMPI RETURNDATASIZE PUSH0 PUSH0 RETURNDATACOPY RETURNDATASIZE PUSH0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP3 ADD DUP1 PUSH1 0x40 MSTORE POP DUP2 ADD SWAP1 PUSH2 0x61F SWAP2 SWAP1 PUSH2 0x95A JUMP JUMPDEST POP PUSH1 0x40 MLOAD PUSH4 0x6E553F65 PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 DUP2 ADD DUP3 SWAP1 MSTORE ADDRESS PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x0 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND SWAP1 PUSH4 0x6E553F65 SWAP1 PUSH1 0x44 ADD PUSH2 0x2EA JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH4 0xCE96CB77 PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP3 DUP2 AND PUSH1 0x4 DUP4 ADD MSTORE PUSH0 SWAP2 PUSH32 0x0 SWAP1 SWAP2 AND SWAP1 PUSH4 0xCE96CB77 SWAP1 PUSH1 0x24 ADD PUSH2 0x37C JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH4 0x70A08231 PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP3 DUP2 AND PUSH1 0x4 DUP4 ADD MSTORE PUSH0 SWAP2 PUSH32 0x0 SWAP1 SWAP2 AND SWAP1 PUSH4 0x7A2D13A SWAP1 DUP3 SWAP1 PUSH4 0x70A08231 SWAP1 PUSH1 0x24 ADD PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x735 JUMPI RETURNDATASIZE PUSH0 PUSH0 RETURNDATACOPY RETURNDATASIZE PUSH0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP3 ADD DUP1 PUSH1 0x40 MSTORE POP DUP2 ADD SWAP1 PUSH2 0x759 SWAP2 SWAP1 PUSH2 0x943 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP3 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x37C SWAP2 DUP2 MSTORE PUSH1 0x20 ADD SWAP1 JUMP JUMPDEST PUSH4 0x4E487B71 PUSH1 0xE0 SHL PUSH0 MSTORE PUSH1 0x41 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH0 REVERT JUMPDEST PUSH0 DUP3 PUSH1 0x1F DUP4 ADD SLT PUSH2 0x79A JUMPI PUSH0 PUSH0 REVERT JUMPDEST DUP2 CALLDATALOAD PUSH8 0xFFFFFFFFFFFFFFFF DUP2 GT ISZERO PUSH2 0x7B4 JUMPI PUSH2 0x7B4 PUSH2 0x777 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH1 0x1F DUP3 ADD PUSH1 0x1F NOT SWAP1 DUP2 AND PUSH1 0x3F ADD AND DUP2 ADD PUSH8 0xFFFFFFFFFFFFFFFF DUP2 GT DUP3 DUP3 LT OR ISZERO PUSH2 0x7E3 JUMPI PUSH2 0x7E3 PUSH2 0x777 JUMP JUMPDEST PUSH1 0x40 MSTORE DUP2 DUP2 MSTORE DUP4 DUP3 ADD PUSH1 0x20 ADD DUP6 LT ISZERO PUSH2 0x7FA JUMPI PUSH0 PUSH0 REVERT JUMPDEST DUP2 PUSH1 0x20 DUP6 ADD PUSH1 0x20 DUP4 ADD CALLDATACOPY PUSH0 SWAP2 DUP2 ADD PUSH1 0x20 ADD SWAP2 SWAP1 SWAP2 MSTORE SWAP4 SWAP3 POP POP POP JUMP JUMPDEST PUSH0 PUSH0 PUSH1 0x40 DUP4 DUP6 SUB SLT ISZERO PUSH2 0x827 JUMPI PUSH0 PUSH0 REVERT JUMPDEST DUP3 CALLDATALOAD PUSH1 0xFF DUP2 AND DUP2 EQ PUSH2 0x837 JUMPI PUSH0 PUSH0 REVERT JUMPDEST SWAP2 POP PUSH1 0x20 DUP4 ADD CALLDATALOAD PUSH8 0xFFFFFFFFFFFFFFFF DUP2 GT ISZERO PUSH2 0x852 JUMPI PUSH0 PUSH0 REVERT JUMPDEST PUSH2 0x85E DUP6 DUP3 DUP7 ADD PUSH2 0x78B JUMP JUMPDEST SWAP2 POP POP SWAP3 POP SWAP3 SWAP1 POP JUMP JUMPDEST PUSH1 0x20 DUP2 MSTORE PUSH0 DUP3 MLOAD DUP1 PUSH1 0x20 DUP5 ADD MSTORE DUP1 PUSH1 0x20 DUP6 ADD PUSH1 0x40 DUP6 ADD MCOPY PUSH0 PUSH1 0x40 DUP3 DUP6 ADD ADD MSTORE PUSH1 0x40 PUSH1 0x1F NOT PUSH1 0x1F DUP4 ADD AND DUP5 ADD ADD SWAP2 POP POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x8AD JUMPI PUSH0 PUSH0 REVERT JUMPDEST POP CALLDATALOAD SWAP2 SWAP1 POP JUMP JUMPDEST PUSH0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x8C4 JUMPI PUSH0 PUSH0 REVERT JUMPDEST DUP2 CALLDATALOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 AND DUP2 EQ PUSH2 0x8DA JUMPI PUSH0 PUSH0 REVERT JUMPDEST SWAP4 SWAP3 POP POP POP JUMP JUMPDEST DUP1 ISZERO ISZERO DUP2 EQ PUSH2 0x4BA JUMPI PUSH0 PUSH0 REVERT JUMPDEST PUSH0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x8FE JUMPI PUSH0 PUSH0 REVERT JUMPDEST DUP2 CALLDATALOAD PUSH2 0x8DA DUP2 PUSH2 0x8E1 JUMP JUMPDEST PUSH0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x919 JUMPI PUSH0 PUSH0 REVERT JUMPDEST DUP2 CALLDATALOAD PUSH8 0xFFFFFFFFFFFFFFFF DUP2 GT ISZERO PUSH2 0x92F JUMPI PUSH0 PUSH0 REVERT JUMPDEST PUSH2 0x93B DUP5 DUP3 DUP6 ADD PUSH2 0x78B JUMP JUMPDEST SWAP5 SWAP4 POP POP POP POP JUMP JUMPDEST PUSH0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x953 JUMPI PUSH0 PUSH0 REVERT JUMPDEST POP MLOAD SWAP2 SWAP1 POP JUMP JUMPDEST PUSH0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x96A JUMPI PUSH0 PUSH0 REVERT JUMPDEST DUP2 MLOAD PUSH2 0x8DA DUP2 PUSH2 0x8E1 JUMP INVALID LOG2 PUSH5 0x6970667358 0x22 SLT KECCAK256 PUSH3 0x11CF4F BLOBBASEFEE 0x2C EXTCODEHASH PUSH6 0x954BBDB6D146 0xB5 0xB4 PUSH27 0x7A47C53A2B6567EE3200D8AA651B2864736F6C634300081E003300 ","sourceMap":"511:2657:79:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2983:183;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;2603:138;;;;;;:::i;:::-;;:::i;:::-;;1928:132;;;;;;:::i;:::-;;:::i;:::-;;;2401:25:87;;;2389:2;2374:18;1928:132:79;2255:177:87;1324:394:79;;;;;;:::i;:::-;;:::i;617:81::-;;;;;2098:104;;;;;;:::i;:::-;-1:-1:-1;2190:6:79;;2098:104;;;;-1:-1:-1;;;;;3152:32:87;;;3134:51;;3122:2;3107:18;2098:104:79;2988:203:87;1142:144:79;;;;;;:::i;:::-;;:::i;2779:166::-;;;;;;:::i;:::-;;:::i;1756:134::-;;;;;;:::i;:::-;;:::i;2286:78::-;2353:6;2286:78;;2402:163;;;;;;:::i;:::-;;:::i;2983:183::-;3068:12;-1:-1:-1;;;;;945:6:79;928:23;936:4;928:23;924:72;;960:36;;-1:-1:-1;;;960:36:79;;;;;;;;;;;2603:138;-1:-1:-1;;;;;945:6:79;928:23;936:4;928:23;924:72;;960:36;;-1:-1:-1;;;960:36:79;;;;;;;;;;;924:72;2683:53:::1;::::0;-1:-1:-1;;;2683:53:79;;::::1;::::0;::::1;3948:25:87::0;;;2715:4:79::1;3989:18:87::0;;;3982:60;;;4058:18;;;4051:60;2683:6:79::1;-1:-1:-1::0;;;;;2683:15:79::1;::::0;::::1;::::0;3921:18:87;;2683:53:79::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;2603:138:::0;:::o;1928:132::-;2027:28;;-1:-1:-1;;;2027:28:79;;-1:-1:-1;;;;;3152:32:87;;;2027:28:79;;;3134:51:87;2005:7:79;;2027:6;:17;;;;;;3107:18:87;;2027:28:79;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;2020:35;1928:132;-1:-1:-1;;1928:132:79:o;1324:394::-;-1:-1:-1;;;;;945:6:79;928:23;936:4;928:23;924:72;;960:36;;-1:-1:-1;;;960:36:79;;;;;;;;;;;924:72;1631:5:::1;1630:6;:46;;;;-1:-1:-1::0;1640:31:79::1;::::0;-1:-1:-1;;;1640:31:79;;1665:4:::1;1640:31;::::0;::::1;3134:51:87::0;1640:6:79::1;-1:-1:-1::0;;;;;1640:16:79::1;::::0;::::1;::::0;3107:18:87;;1640:31:79::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;:36:::0;::::1;1630:46;1626:87;;;1685:28;;-1:-1:-1::0;;;1685:28:79::1;;;;;;;;;;;1626:87;1324:394:::0;:::o;1142:144::-;-1:-1:-1;;;;;945:6:79;928:23;936:4;928:23;924:72;;960:36;;-1:-1:-1;;;960:36:79;;;;;;;;;;;924:72;1232:15;;:20;1228:53:::1;;1261:20;;-1:-1:-1::0;;;1261:20:79::1;;;;;;;;;;;2779:166:::0;-1:-1:-1;;;;;945:6:79;928:23;936:4;928:23;924:72;;960:36;;-1:-1:-1;;;960:36:79;;;;;;;;;;;924:72;2858:39:::1;::::0;-1:-1:-1;;;2858:39:79;;-1:-1:-1;;;;;2881:6:79::1;4503:32:87::0;;2858:39:79::1;::::0;::::1;4485:51:87::0;4552:18;;;4545:34;;;2858:6:79::1;:14;::::0;::::1;::::0;4458:18:87;;2858:39:79::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;-1:-1:-1::0;2903:37:79::1;::::0;-1:-1:-1;;;2903:37:79;;::::1;::::0;::::1;5014:25:87::0;;;2934:4:79::1;5055:18:87::0;;;5048:60;2903:6:79::1;-1:-1:-1::0;;;;;2903:14:79::1;::::0;::::1;::::0;4987:18:87;;2903:37:79::1;4840:274:87::0;1756:134:79;1856:29;;-1:-1:-1;;;1856:29:79;;-1:-1:-1;;;;;3152:32:87;;;1856:29:79;;;3134:51:87;1834:7:79;;1856:6;:18;;;;;;3107::87;;1856:29:79;2988:203:87;2402:163:79;2532:27;;-1:-1:-1;;;2532:27:79;;-1:-1:-1;;;;;3152:32:87;;;2532:27:79;;;3134:51:87;2480:14:79;;2509:6;:22;;;;;;;;2532:16;;3107:18:87;;2532:27:79;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;2509:51;;;;;;;;;;;;;2401:25:87;;2389:2;2374:18;;2255:177;14:127;75:10;70:3;66:20;63:1;56:31;106:4;103:1;96:15;130:4;127:1;120:15;146:725;188:5;241:3;234:4;226:6;222:17;218:27;208:55;;259:1;256;249:12;208:55;299:6;286:20;329:18;321:6;318:30;315:56;;;351:18;;:::i;:::-;400:2;394:9;492:2;454:17;;-1:-1:-1;;450:31:87;;;483:2;446:40;442:54;430:67;;527:18;512:34;;548:22;;;509:62;506:88;;;574:18;;:::i;:::-;610:2;603:22;634;;;675:19;;;696:4;671:30;668:39;-1:-1:-1;665:59:87;;;720:1;717;710:12;665:59;784:6;777:4;769:6;765:17;758:4;750:6;746:17;733:58;839:1;811:19;;;832:4;807:30;800:41;;;;815:6;146:725;-1:-1:-1;;;146:725:87:o;876:477::-;951:6;959;1012:2;1000:9;991:7;987:23;983:32;980:52;;;1028:1;1025;1018:12;980:52;1067:9;1054:23;1117:4;1110:5;1106:16;1099:5;1096:27;1086:55;;1137:1;1134;1127:12;1086:55;1160:5;-1:-1:-1;1216:2:87;1201:18;;1188:32;1243:18;1232:30;;1229:50;;;1275:1;1272;1265:12;1229:50;1298:49;1339:7;1330:6;1319:9;1315:22;1298:49;:::i;:::-;1288:59;;;876:477;;;;;:::o;1358:416::-;1505:2;1494:9;1487:21;1468:4;1537:6;1531:13;1580:6;1575:2;1564:9;1560:18;1553:34;1639:6;1634:2;1626:6;1622:15;1617:2;1606:9;1602:18;1596:50;1695:1;1690:2;1681:6;1670:9;1666:22;1662:31;1655:42;1765:2;1758;1754:7;1749:2;1741:6;1737:15;1733:29;1722:9;1718:45;1714:54;1706:62;;;1358:416;;;;:::o;1779:180::-;1838:6;1891:2;1879:9;1870:7;1866:23;1862:32;1859:52;;;1907:1;1904;1897:12;1859:52;-1:-1:-1;1930:23:87;;1779:180;-1:-1:-1;1779:180:87:o;1964:286::-;2023:6;2076:2;2064:9;2055:7;2051:23;2047:32;2044:52;;;2092:1;2089;2082:12;2044:52;2118:23;;-1:-1:-1;;;;;2170:31:87;;2160:42;;2150:70;;2216:1;2213;2206:12;2150:70;2239:5;1964:286;-1:-1:-1;;;1964:286:87:o;2437:118::-;2523:5;2516:13;2509:21;2502:5;2499:32;2489:60;;2545:1;2542;2535:12;2560:241;2616:6;2669:2;2657:9;2648:7;2644:23;2640:32;2637:52;;;2685:1;2682;2675:12;2637:52;2724:9;2711:23;2743:28;2765:5;2743:28;:::i;3196:320::-;3264:6;3317:2;3305:9;3296:7;3292:23;3288:32;3285:52;;;3333:1;3330;3323:12;3285:52;3373:9;3360:23;3406:18;3398:6;3395:30;3392:50;;;3438:1;3435;3428:12;3392:50;3461:49;3502:7;3493:6;3482:9;3478:22;3461:49;:::i;:::-;3451:59;3196:320;-1:-1:-1;;;;3196:320:87:o;4122:184::-;4192:6;4245:2;4233:9;4224:7;4220:23;4216:32;4213:52;;;4261:1;4258;4251:12;4213:52;-1:-1:-1;4284:16:87;;4122:184;-1:-1:-1;4122:184:87:o;4590:245::-;4657:6;4710:2;4698:9;4689:7;4685:23;4681:32;4678:52;;;4726:1;4723;4716:12;4678:52;4758:9;4752:16;4777:28;4799:5;4777:28;:::i"},"methodIdentifiers":{"asset(address)":"9c4667a2","connect(bytes)":"9cd47128","deposit(uint256)":"b6b55f25","disconnect(bool)":"5a117456","forwardEntryPoint(uint8,bytes)":"0981b1c2","investVault()":"de2a87b5","maxDeposit(address)":"402d267d","maxWithdraw(address)":"ce96cb77","storageSlot()":"5b9a4c35","totalAssets(address)":"f3e0ffbf","withdraw(uint256)":"2e1a7d4d"}},"metadata":"{\"compiler\":{\"version\":\"0.8.30+commit.73712a01\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"inputs\":[{\"internalType\":\"contract IERC4626\",\"name\":\"vault_\",\"type\":\"address\"}],\"stateMutability\":\"nonpayable\",\"type\":\"constructor\"},{\"inputs\":[],\"name\":\"CanBeCalledOnlyThroughDelegateCall\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"CannotDisconnectWithAssets\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"NoExtraDataAllowed\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"name\":\"asset\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes\",\"name\":\"initData\",\"type\":\"bytes\"}],\"name\":\"connect\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"assets\",\"type\":\"uint256\"}],\"name\":\"deposit\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bool\",\"name\":\"force\",\"type\":\"bool\"}],\"name\":\"disconnect\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint8\",\"name\":\"\",\"type\":\"uint8\"},{\"internalType\":\"bytes\",\"name\":\"\",\"type\":\"bytes\"}],\"name\":\"forwardEntryPoint\",\"outputs\":[{\"internalType\":\"bytes\",\"name\":\"\",\"type\":\"bytes\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"investVault\",\"outputs\":[{\"internalType\":\"contract IERC4626\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"contract_\",\"type\":\"address\"}],\"name\":\"maxDeposit\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"contract_\",\"type\":\"address\"}],\"name\":\"maxWithdraw\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"storageSlot\",\"outputs\":[{\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"contract_\",\"type\":\"address\"}],\"name\":\"totalAssets\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"assets\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"assets\",\"type\":\"uint256\"}],\"name\":\"withdraw\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"}],\"devdoc\":{\"author\":\"Ensuro\",\"custom:security-contact\":\"security@ensuro.co\",\"details\":\"Strategy that invests/deinvests into a 4626 vault\",\"kind\":\"dev\",\"methods\":{\"asset(address)\":{\"details\":\"The address of the underlying token used for accounting, depositing, and withdrawing. It must be the same      as `IERC4626(contract_).asset()` when dealing with vaults.\",\"params\":{\"contract_\":\"The address of the vault contract that owns the assets.\"}},\"connect(bytes)\":{\"details\":\"Called when the strategy is plugged into the vault. Initializes the strategy storage and can do validations\",\"params\":{\"initData\":\"Initialization data for the strategy. Must be parsed by the strategy, since the format is                 strategy specific\"}},\"deposit(uint256)\":{\"details\":\"Deposits a given amount of assets into the strategy. It MUST revert if it can't deposit the specified amount.      It assumes the assets are already in the contract (owned by address(this)).\",\"params\":{\"assets\":\"The amount of assets to deposit. Should be <= maxDeposit.\"}},\"disconnect(bool)\":{\"details\":\"Called when the strategy is un-plugged from the vault. Should revert if there are still assets in the      strategy, unless force==true.\",\"params\":{\"force\":\"If true, disconnect should not fail if assets remain in the strategy. Otherwise, disconnect              MUST fail if totalAssets() != 0.\"}},\"forwardEntryPoint(uint8,bytes)\":{\"details\":\"Receives an external call to execute a custom method of action in the strategy. Can be used for harvesting      rewards or other tasks. It's called with delegatecall from the calling vault. The calling vault SHOULD      do the access control validation, since the strategy normally won't do it.\",\"params\":{\"method\":\"An id of the method or action to call/execute. It's recommended to define an enum and convert the               the uint8 value into the enum.\",\"params\":\"Params for the method or action. Parsed by the strategy, it might differ from one or other method.\"}},\"investVault()\":{\"details\":\"Returns the ERC4626 where this strategy invests the funds\"},\"maxDeposit(address)\":{\"details\":\"Returns the max amount that can be deposited into the strategy.\",\"params\":{\"contract_\":\"The address of the vault contract that owns the assets and where the strategy is plugged\"}},\"maxWithdraw(address)\":{\"details\":\"Returns the max amount that can be withdrawn from the strategy.\",\"params\":{\"contract_\":\"The address of the vault contract that owns the assets and where the strategy is plugged\"}},\"totalAssets(address)\":{\"details\":\"Returns the number of assets under management of the investment strategy for a given contract.\",\"params\":{\"contract_\":\"The address of the vault contract that owns the assets and where the strategy is plugged\"}},\"withdraw(uint256)\":{\"details\":\"Withdraws a given amount of assets from the strategy. It MUST revert if it can't withdraw the specified amount.      Leaves the withdrawn assets in the contract (owned by address(this)).\",\"params\":{\"assets\":\"The amount of assets to withdraw. Should be <= maxWithdraw.\"}}},\"stateVariables\":{\"storageSlot\":{\"details\":\"Returns the slot where the data of the strategy can be stored.       Typically it would return `InvestStrategyClient.makeStorageSlot(<strategyAddress>)`\"}},\"title\":\"ERC4626InvestStrategy\",\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{},\"version\":1}},\"settings\":{\"compilationTarget\":{\"contracts/strategies/ERC4626InvestStrategy.sol\":\"ERC4626InvestStrategy\"},\"evmVersion\":\"prague\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"enabled\":true,\"runs\":200},\"remappings\":[]},\"sources\":{\"@openzeppelin/contracts/interfaces/IERC20.sol\":{\"keccak256\":\"0x1a6221315ce0307746c2c4827c125d821ee796c74a676787762f4778671d4f44\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://1bb2332a7ee26dd0b0de9b7fe266749f54820c99ab6a3bcb6f7e6b751d47ee2d\",\"dweb:/ipfs/QmcRWpaBeCYkhy68PR3B4AgD7asuQk7PwkWxrvJbZcikLF\"]},\"@openzeppelin/contracts/interfaces/IERC4626.sol\":{\"keccak256\":\"0xece5cbf726293ae6be1fbfade2936f052e1b399ed395ba1e221540ab82b62628\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://a9b97e58e90799e681dccbd4a8e469c6ebc2baf11312ad08f14332646123dd4b\",\"dweb:/ipfs/QmdamCQfxcuYinSNd3Et7VNo3oY98XSv4XCUQyq9xfMNUy\"]},\"@openzeppelin/contracts/token/ERC20/IERC20.sol\":{\"keccak256\":\"0x74ed01eb66b923d0d0cfe3be84604ac04b76482a55f9dd655e1ef4d367f95bc2\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://5282825a626cfe924e504274b864a652b0023591fa66f06a067b25b51ba9b303\",\"dweb:/ipfs/QmeCfPykghhMc81VJTrHTC7sF6CRvaA1FXVq2pJhwYp1dV\"]},\"@openzeppelin/contracts/token/ERC20/extensions/IERC20Metadata.sol\":{\"keccak256\":\"0xd6fa4088198f04eef10c5bce8a2f4d60554b7ec4b987f684393c01bf79b94d9f\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://f95ee0bbd4dd3ac730d066ba3e785ded4565e890dbec2fa7d3b9fe3bad9d0d6e\",\"dweb:/ipfs/QmSLr6bHkPFWT7ntj34jmwfyskpwo97T9jZUrk5sz3sdtR\"]},\"@openzeppelin/contracts/utils/Address.sol\":{\"keccak256\":\"0x0fa9e0d3a859900b5a46f70a03c73adf259603d5e05027a37fe0b45529d85346\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://c2add4da0240c9f2ce47649c8bb6b11b40e98cf6f88b8bdc76b2704e89391710\",\"dweb:/ipfs/QmNQTwF2uVzu4CRtNxr8bxyP9XuW6VsZuo2Nr4KR2bZr3d\"]},\"@openzeppelin/contracts/utils/Errors.sol\":{\"keccak256\":\"0x6afa713bfd42cf0f7656efa91201007ac465e42049d7de1d50753a373648c123\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://ba1d02f4847670a1b83dec9f7d37f0b0418d6043447b69f3a29a5f9efc547fcf\",\"dweb:/ipfs/QmQ7iH2keLNUKgq2xSWcRmuBE5eZ3F5whYAkAGzCNNoEWB\"]},\"@openzeppelin/contracts/utils/LowLevelCall.sol\":{\"keccak256\":\"0x5b4802a4352474792df3107e961d1cc593e47b820c14f69d3505cb28f5a6a583\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://a6f86fd01f829499fe0545ff5dda07d4521988e88bfe0bf801fc15650921ed56\",\"dweb:/ipfs/QmUUKu4ZDffHAmfkf3asuQfmLTyfpuy2Amdncc3SqfzKPG\"]},\"contracts/InvestStrategyClient.sol\":{\"keccak256\":\"0x3c8fff73042023381eb750ba13a9066475d208e99bde568e1243f0e1e282c894\",\"license\":\"Apache-2.0\",\"urls\":[\"bzz-raw://3f8283ffa5c512e482b0065d9391c7060ebc1fa5968c55e6a05958480b7facb6\",\"dweb:/ipfs/QmT4N9Z19b6AUXpXtg23d3ijBExyKuRJBeQ3o8WCobgpfT\"]},\"contracts/interfaces/IInvestStrategy.sol\":{\"keccak256\":\"0x6800a1f147def2252b79629150ce9cd87e914ca5a966f1035fbca6328bbc9c4b\",\"license\":\"Apache-2.0\",\"urls\":[\"bzz-raw://2e9260604e0ffcf405819f85fee4124d9a090cf716f389ff92cf76a2837a2e42\",\"dweb:/ipfs/QmVdKEW8C6MDyiiUfjBxEMTWjfPrBJadptpxh9L2uCebDK\"]},\"contracts/strategies/ERC4626InvestStrategy.sol\":{\"keccak256\":\"0x85bf06587e2b83dc42e4899517af4bd662437840ba8e3a47b45ec8e1bbe8d0bc\",\"license\":\"Apache-2.0\",\"urls\":[\"bzz-raw://7c06c295d3f7e518981890367208e488b1089fdc36b551f6c715ae66007f4cc0\",\"dweb:/ipfs/QmdBoy6Fc4gB2fpgRfeCDLSWZY23T6yqgbQv6yVcaVGogB\"]}},\"version\":1}","storageLayout":{"storage":[],"types":null}}},"contracts/strategies/IdleInvestStrategy.sol":{"IdleInvestStrategy":{"abi":[{"inputs":[{"internalType":"contract IERC20Metadata","name":"asset_","type":"address"}],"stateMutability":"nonpayable","type":"constructor"},{"inputs":[],"name":"CanBeCalledOnlyThroughDelegateCall","type":"error"},{"inputs":[],"name":"CannotDisconnectWithAssets","type":"error"},{"inputs":[],"name":"NoExtraDataAllowed","type":"error"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"asset","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"bytes","name":"initData","type":"bytes"}],"name":"connect","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"assets","type":"uint256"}],"name":"deposit","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bool","name":"force","type":"bool"}],"name":"disconnect","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint8","name":"","type":"uint8"},{"internalType":"bytes","name":"","type":"bytes"}],"name":"forwardEntryPoint","outputs":[{"internalType":"bytes","name":"","type":"bytes"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"maxDeposit","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"contract_","type":"address"}],"name":"maxWithdraw","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"storageSlot","outputs":[{"internalType":"bytes32","name":"","type":"bytes32"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"contract_","type":"address"}],"name":"totalAssets","outputs":[{"internalType":"uint256","name":"assets","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"assets","type":"uint256"}],"name":"withdraw","outputs":[],"stateMutability":"nonpayable","type":"function"}],"evm":{"bytecode":{"functionDebugData":{"@_23267":{"entryPoint":null,"id":23267,"parameterSlots":1,"returnSlots":0},"@makeStorageSlot_15638":{"entryPoint":null,"id":15638,"parameterSlots":1,"returnSlots":1},"abi_decode_tuple_t_contract$_IERC20Metadata_$9411_fromMemory":{"entryPoint":137,"id":null,"parameterSlots":2,"returnSlots":1},"abi_encode_tuple_t_stringliteral_4fed0cd3539a36e00a34a6c026c2615824c9ad47da5ef65e8372c7e721c05d79_t_contract$_IInvestStrategy_$20725__to_t_string_memory_ptr_t_address__fromStack_reversed":{"entryPoint":null,"id":null,"parameterSlots":2,"returnSlots":1}},"generatedSources":[{"ast":{"nativeSrc":"0:813:87","nodeType":"YulBlock","src":"0:813:87","statements":[{"nativeSrc":"6:3:87","nodeType":"YulBlock","src":"6:3:87","statements":[]},{"body":{"nativeSrc":"118:209:87","nodeType":"YulBlock","src":"118:209:87","statements":[{"body":{"nativeSrc":"164:16:87","nodeType":"YulBlock","src":"164:16:87","statements":[{"expression":{"arguments":[{"kind":"number","nativeSrc":"173:1:87","nodeType":"YulLiteral","src":"173:1:87","type":"","value":"0"},{"kind":"number","nativeSrc":"176:1:87","nodeType":"YulLiteral","src":"176:1:87","type":"","value":"0"}],"functionName":{"name":"revert","nativeSrc":"166:6:87","nodeType":"YulIdentifier","src":"166:6:87"},"nativeSrc":"166:12:87","nodeType":"YulFunctionCall","src":"166:12:87"},"nativeSrc":"166:12:87","nodeType":"YulExpressionStatement","src":"166:12:87"}]},"condition":{"arguments":[{"arguments":[{"name":"dataEnd","nativeSrc":"139:7:87","nodeType":"YulIdentifier","src":"139:7:87"},{"name":"headStart","nativeSrc":"148:9:87","nodeType":"YulIdentifier","src":"148:9:87"}],"functionName":{"name":"sub","nativeSrc":"135:3:87","nodeType":"YulIdentifier","src":"135:3:87"},"nativeSrc":"135:23:87","nodeType":"YulFunctionCall","src":"135:23:87"},{"kind":"number","nativeSrc":"160:2:87","nodeType":"YulLiteral","src":"160:2:87","type":"","value":"32"}],"functionName":{"name":"slt","nativeSrc":"131:3:87","nodeType":"YulIdentifier","src":"131:3:87"},"nativeSrc":"131:32:87","nodeType":"YulFunctionCall","src":"131:32:87"},"nativeSrc":"128:52:87","nodeType":"YulIf","src":"128:52:87"},{"nativeSrc":"189:29:87","nodeType":"YulVariableDeclaration","src":"189:29:87","value":{"arguments":[{"name":"headStart","nativeSrc":"208:9:87","nodeType":"YulIdentifier","src":"208:9:87"}],"functionName":{"name":"mload","nativeSrc":"202:5:87","nodeType":"YulIdentifier","src":"202:5:87"},"nativeSrc":"202:16:87","nodeType":"YulFunctionCall","src":"202:16:87"},"variables":[{"name":"value","nativeSrc":"193:5:87","nodeType":"YulTypedName","src":"193:5:87","type":""}]},{"body":{"nativeSrc":"281:16:87","nodeType":"YulBlock","src":"281:16:87","statements":[{"expression":{"arguments":[{"kind":"number","nativeSrc":"290:1:87","nodeType":"YulLiteral","src":"290:1:87","type":"","value":"0"},{"kind":"number","nativeSrc":"293:1:87","nodeType":"YulLiteral","src":"293:1:87","type":"","value":"0"}],"functionName":{"name":"revert","nativeSrc":"283:6:87","nodeType":"YulIdentifier","src":"283:6:87"},"nativeSrc":"283:12:87","nodeType":"YulFunctionCall","src":"283:12:87"},"nativeSrc":"283:12:87","nodeType":"YulExpressionStatement","src":"283:12:87"}]},"condition":{"arguments":[{"arguments":[{"name":"value","nativeSrc":"240:5:87","nodeType":"YulIdentifier","src":"240:5:87"},{"arguments":[{"name":"value","nativeSrc":"251:5:87","nodeType":"YulIdentifier","src":"251:5:87"},{"arguments":[{"arguments":[{"kind":"number","nativeSrc":"266:3:87","nodeType":"YulLiteral","src":"266:3:87","type":"","value":"160"},{"kind":"number","nativeSrc":"271:1:87","nodeType":"YulLiteral","src":"271:1:87","type":"","value":"1"}],"functionName":{"name":"shl","nativeSrc":"262:3:87","nodeType":"YulIdentifier","src":"262:3:87"},"nativeSrc":"262:11:87","nodeType":"YulFunctionCall","src":"262:11:87"},{"kind":"number","nativeSrc":"275:1:87","nodeType":"YulLiteral","src":"275:1:87","type":"","value":"1"}],"functionName":{"name":"sub","nativeSrc":"258:3:87","nodeType":"YulIdentifier","src":"258:3:87"},"nativeSrc":"258:19:87","nodeType":"YulFunctionCall","src":"258:19:87"}],"functionName":{"name":"and","nativeSrc":"247:3:87","nodeType":"YulIdentifier","src":"247:3:87"},"nativeSrc":"247:31:87","nodeType":"YulFunctionCall","src":"247:31:87"}],"functionName":{"name":"eq","nativeSrc":"237:2:87","nodeType":"YulIdentifier","src":"237:2:87"},"nativeSrc":"237:42:87","nodeType":"YulFunctionCall","src":"237:42:87"}],"functionName":{"name":"iszero","nativeSrc":"230:6:87","nodeType":"YulIdentifier","src":"230:6:87"},"nativeSrc":"230:50:87","nodeType":"YulFunctionCall","src":"230:50:87"},"nativeSrc":"227:70:87","nodeType":"YulIf","src":"227:70:87"},{"nativeSrc":"306:15:87","nodeType":"YulAssignment","src":"306:15:87","value":{"name":"value","nativeSrc":"316:5:87","nodeType":"YulIdentifier","src":"316:5:87"},"variableNames":[{"name":"value0","nativeSrc":"306:6:87","nodeType":"YulIdentifier","src":"306:6:87"}]}]},"name":"abi_decode_tuple_t_contract$_IERC20Metadata_$9411_fromMemory","nativeSrc":"14:313:87","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nativeSrc":"84:9:87","nodeType":"YulTypedName","src":"84:9:87","type":""},{"name":"dataEnd","nativeSrc":"95:7:87","nodeType":"YulTypedName","src":"95:7:87","type":""}],"returnVariables":[{"name":"value0","nativeSrc":"107:6:87","nodeType":"YulTypedName","src":"107:6:87","type":""}],"src":"14:313:87"},{"body":{"nativeSrc":"559:252:87","nodeType":"YulBlock","src":"559:252:87","statements":[{"expression":{"arguments":[{"name":"headStart","nativeSrc":"576:9:87","nodeType":"YulIdentifier","src":"576:9:87"},{"kind":"number","nativeSrc":"587:2:87","nodeType":"YulLiteral","src":"587:2:87","type":"","value":"64"}],"functionName":{"name":"mstore","nativeSrc":"569:6:87","nodeType":"YulIdentifier","src":"569:6:87"},"nativeSrc":"569:21:87","nodeType":"YulFunctionCall","src":"569:21:87"},"nativeSrc":"569:21:87","nodeType":"YulExpressionStatement","src":"569:21:87"},{"expression":{"arguments":[{"arguments":[{"name":"headStart","nativeSrc":"610:9:87","nodeType":"YulIdentifier","src":"610:9:87"},{"kind":"number","nativeSrc":"621:2:87","nodeType":"YulLiteral","src":"621:2:87","type":"","value":"64"}],"functionName":{"name":"add","nativeSrc":"606:3:87","nodeType":"YulIdentifier","src":"606:3:87"},"nativeSrc":"606:18:87","nodeType":"YulFunctionCall","src":"606:18:87"},{"kind":"number","nativeSrc":"626:2:87","nodeType":"YulLiteral","src":"626:2:87","type":"","value":"30"}],"functionName":{"name":"mstore","nativeSrc":"599:6:87","nodeType":"YulIdentifier","src":"599:6:87"},"nativeSrc":"599:30:87","nodeType":"YulFunctionCall","src":"599:30:87"},"nativeSrc":"599:30:87","nodeType":"YulExpressionStatement","src":"599:30:87"},{"expression":{"arguments":[{"arguments":[{"name":"headStart","nativeSrc":"649:9:87","nodeType":"YulIdentifier","src":"649:9:87"},{"kind":"number","nativeSrc":"660:2:87","nodeType":"YulLiteral","src":"660:2:87","type":"","value":"96"}],"functionName":{"name":"add","nativeSrc":"645:3:87","nodeType":"YulIdentifier","src":"645:3:87"},"nativeSrc":"645:18:87","nodeType":"YulFunctionCall","src":"645:18:87"},{"hexValue":"636f2e656e7375726f2e496e766573745374726174656779436c69656e74","kind":"string","nativeSrc":"665:32:87","nodeType":"YulLiteral","src":"665:32:87","type":"","value":"co.ensuro.InvestStrategyClient"}],"functionName":{"name":"mstore","nativeSrc":"638:6:87","nodeType":"YulIdentifier","src":"638:6:87"},"nativeSrc":"638:60:87","nodeType":"YulFunctionCall","src":"638:60:87"},"nativeSrc":"638:60:87","nodeType":"YulExpressionStatement","src":"638:60:87"},{"nativeSrc":"707:27:87","nodeType":"YulAssignment","src":"707:27:87","value":{"arguments":[{"name":"headStart","nativeSrc":"719:9:87","nodeType":"YulIdentifier","src":"719:9:87"},{"kind":"number","nativeSrc":"730:3:87","nodeType":"YulLiteral","src":"730:3:87","type":"","value":"128"}],"functionName":{"name":"add","nativeSrc":"715:3:87","nodeType":"YulIdentifier","src":"715:3:87"},"nativeSrc":"715:19:87","nodeType":"YulFunctionCall","src":"715:19:87"},"variableNames":[{"name":"tail","nativeSrc":"707:4:87","nodeType":"YulIdentifier","src":"707:4:87"}]},{"expression":{"arguments":[{"arguments":[{"name":"headStart","nativeSrc":"754:9:87","nodeType":"YulIdentifier","src":"754:9:87"},{"kind":"number","nativeSrc":"765:4:87","nodeType":"YulLiteral","src":"765:4:87","type":"","value":"0x20"}],"functionName":{"name":"add","nativeSrc":"750:3:87","nodeType":"YulIdentifier","src":"750:3:87"},"nativeSrc":"750:20:87","nodeType":"YulFunctionCall","src":"750:20:87"},{"arguments":[{"name":"value0","nativeSrc":"776:6:87","nodeType":"YulIdentifier","src":"776:6:87"},{"arguments":[{"arguments":[{"kind":"number","nativeSrc":"792:3:87","nodeType":"YulLiteral","src":"792:3:87","type":"","value":"160"},{"kind":"number","nativeSrc":"797:1:87","nodeType":"YulLiteral","src":"797:1:87","type":"","value":"1"}],"functionName":{"name":"shl","nativeSrc":"788:3:87","nodeType":"YulIdentifier","src":"788:3:87"},"nativeSrc":"788:11:87","nodeType":"YulFunctionCall","src":"788:11:87"},{"kind":"number","nativeSrc":"801:1:87","nodeType":"YulLiteral","src":"801:1:87","type":"","value":"1"}],"functionName":{"name":"sub","nativeSrc":"784:3:87","nodeType":"YulIdentifier","src":"784:3:87"},"nativeSrc":"784:19:87","nodeType":"YulFunctionCall","src":"784:19:87"}],"functionName":{"name":"and","nativeSrc":"772:3:87","nodeType":"YulIdentifier","src":"772:3:87"},"nativeSrc":"772:32:87","nodeType":"YulFunctionCall","src":"772:32:87"}],"functionName":{"name":"mstore","nativeSrc":"743:6:87","nodeType":"YulIdentifier","src":"743:6:87"},"nativeSrc":"743:62:87","nodeType":"YulFunctionCall","src":"743:62:87"},"nativeSrc":"743:62:87","nodeType":"YulExpressionStatement","src":"743:62:87"}]},"name":"abi_encode_tuple_t_stringliteral_4fed0cd3539a36e00a34a6c026c2615824c9ad47da5ef65e8372c7e721c05d79_t_contract$_IInvestStrategy_$20725__to_t_string_memory_ptr_t_address__fromStack_reversed","nativeSrc":"332:479:87","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nativeSrc":"528:9:87","nodeType":"YulTypedName","src":"528:9:87","type":""},{"name":"value0","nativeSrc":"539:6:87","nodeType":"YulTypedName","src":"539:6:87","type":""}],"returnVariables":[{"name":"tail","nativeSrc":"550:4:87","nodeType":"YulTypedName","src":"550:4:87","type":""}],"src":"332:479:87"}]},"contents":"{\n    { }\n    function abi_decode_tuple_t_contract$_IERC20Metadata_$9411_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_stringliteral_4fed0cd3539a36e00a34a6c026c2615824c9ad47da5ef65e8372c7e721c05d79_t_contract$_IInvestStrategy_$20725__to_t_string_memory_ptr_t_address__fromStack_reversed(headStart, value0) -> tail\n    {\n        mstore(headStart, 64)\n        mstore(add(headStart, 64), 30)\n        mstore(add(headStart, 96), \"co.ensuro.InvestStrategyClient\")\n        tail := add(headStart, 128)\n        mstore(add(headStart, 0x20), and(value0, sub(shl(160, 1), 1)))\n    }\n}","id":87,"language":"Yul","name":"#utility.yul"}],"linkReferences":{},"object":"3060808181526040610100818152601e610140527f636f2e656e7375726f2e496e766573745374726174656779436c69656e740000610160526101209390935260e08290526101809052902060a052348015610059575f5ffd5b506040516106e13803806106e183398101604081905261007891610089565b6001600160a01b031660c0526100b6565b5f60208284031215610099575f5ffd5b81516001600160a01b03811681146100af575f5ffd5b9392505050565b60805160a05160c0516105e56100fc5f395f818161014a015261036a01525f61011701525f81816101c9015281816102120152818161025e01526102da01526105e55ff3fe608060405234801561000f575f5ffd5b506004361061009b575f3560e01c80639c4667a2116100635780639c4667a2146101395780639cd4712814610184578063b6b55f25146100c8578063ce96cb7714610197578063f3e0ffbf146101aa575f5ffd5b80630981b1c21461009f5780632e1a7d4d146100c8578063402d267d146100dd5780635a117456146100ff5780635b9a4c3514610112575b5f5ffd5b6100b26100ad366004610474565b6101bd565b6040516100bf91906104c6565b60405180910390f35b6100db6100d63660046104fb565b610208565b005b6100f16100eb366004610512565b505f1990565b6040519081526020016100bf565b6100db61010d36600461053f565b610254565b6100f17f000000000000000000000000000000000000000000000000000000000000000081565b61016c610147366004610512565b507f000000000000000000000000000000000000000000000000000000000000000090565b6040516001600160a01b0390911681526020016100bf565b6100db61019236600461055e565b6102d0565b6100f16101a5366004610512565b610339565b6100f16101b8366004610512565b610349565b60606001600160a01b037f000000000000000000000000000000000000000000000000000000000000000016300361009b57604051632abf118b60e21b815260040160405180910390fd5b6001600160a01b037f000000000000000000000000000000000000000000000000000000000000000016300361025157604051632abf118b60e21b815260040160405180910390fd5b50565b6001600160a01b037f000000000000000000000000000000000000000000000000000000000000000016300361029d57604051632abf118b60e21b815260040160405180910390fd5b801580156102b257506102af30610349565b15155b15610251576040516342a176d160e11b815260040160405180910390fd5b6001600160a01b037f000000000000000000000000000000000000000000000000000000000000000016300361031957604051632abf118b60e21b815260040160405180910390fd5b805115610251576040516350701b6160e01b815260040160405180910390fd5b5f61034382610349565b92915050565b6040516370a0823160e01b81526001600160a01b0382811660048301525f917f0000000000000000000000000000000000000000000000000000000000000000909116906370a0823190602401602060405180830381865afa1580156103b1573d5f5f3e3d5ffd5b505050506040513d601f19601f820116820180604052508101906103439190610598565b634e487b7160e01b5f52604160045260245ffd5b5f82601f8301126103f8575f5ffd5b813567ffffffffffffffff811115610412576104126103d5565b604051601f8201601f19908116603f0116810167ffffffffffffffff81118282101715610441576104416103d5565b604052818152838201602001851015610458575f5ffd5b816020850160208301375f918101602001919091529392505050565b5f5f60408385031215610485575f5ffd5b823560ff81168114610495575f5ffd5b9150602083013567ffffffffffffffff8111156104b0575f5ffd5b6104bc858286016103e9565b9150509250929050565b602081525f82518060208401528060208501604085015e5f604082850101526040601f19601f83011684010191505092915050565b5f6020828403121561050b575f5ffd5b5035919050565b5f60208284031215610522575f5ffd5b81356001600160a01b0381168114610538575f5ffd5b9392505050565b5f6020828403121561054f575f5ffd5b81358015158114610538575f5ffd5b5f6020828403121561056e575f5ffd5b813567ffffffffffffffff811115610584575f5ffd5b610590848285016103e9565b949350505050565b5f602082840312156105a8575f5ffd5b505191905056fea26469706673582212204bb7ca8908fb12a1ce9ee20d463fc4caaa1b0f114490bfeaa5835157ee53448d64736f6c634300081e0033","opcodes":"ADDRESS PUSH1 0x80 DUP2 DUP2 MSTORE PUSH1 0x40 PUSH2 0x100 DUP2 DUP2 MSTORE PUSH1 0x1E PUSH2 0x140 MSTORE PUSH32 0x636F2E656E7375726F2E496E766573745374726174656779436C69656E740000 PUSH2 0x160 MSTORE PUSH2 0x120 SWAP4 SWAP1 SWAP4 MSTORE PUSH1 0xE0 DUP3 SWAP1 MSTORE PUSH2 0x180 SWAP1 MSTORE SWAP1 KECCAK256 PUSH1 0xA0 MSTORE CALLVALUE DUP1 ISZERO PUSH2 0x59 JUMPI PUSH0 PUSH0 REVERT JUMPDEST POP PUSH1 0x40 MLOAD PUSH2 0x6E1 CODESIZE SUB DUP1 PUSH2 0x6E1 DUP4 CODECOPY DUP2 ADD PUSH1 0x40 DUP2 SWAP1 MSTORE PUSH2 0x78 SWAP2 PUSH2 0x89 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH1 0xC0 MSTORE PUSH2 0xB6 JUMP JUMPDEST PUSH0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x99 JUMPI PUSH0 PUSH0 REVERT JUMPDEST DUP2 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 AND DUP2 EQ PUSH2 0xAF JUMPI PUSH0 PUSH0 REVERT JUMPDEST SWAP4 SWAP3 POP POP POP JUMP JUMPDEST PUSH1 0x80 MLOAD PUSH1 0xA0 MLOAD PUSH1 0xC0 MLOAD PUSH2 0x5E5 PUSH2 0xFC PUSH0 CODECOPY PUSH0 DUP2 DUP2 PUSH2 0x14A ADD MSTORE PUSH2 0x36A ADD MSTORE PUSH0 PUSH2 0x117 ADD MSTORE PUSH0 DUP2 DUP2 PUSH2 0x1C9 ADD MSTORE DUP2 DUP2 PUSH2 0x212 ADD MSTORE DUP2 DUP2 PUSH2 0x25E ADD MSTORE PUSH2 0x2DA ADD MSTORE PUSH2 0x5E5 PUSH0 RETURN INVALID PUSH1 0x80 PUSH1 0x40 MSTORE CALLVALUE DUP1 ISZERO PUSH2 0xF JUMPI PUSH0 PUSH0 REVERT JUMPDEST POP PUSH1 0x4 CALLDATASIZE LT PUSH2 0x9B JUMPI PUSH0 CALLDATALOAD PUSH1 0xE0 SHR DUP1 PUSH4 0x9C4667A2 GT PUSH2 0x63 JUMPI DUP1 PUSH4 0x9C4667A2 EQ PUSH2 0x139 JUMPI DUP1 PUSH4 0x9CD47128 EQ PUSH2 0x184 JUMPI DUP1 PUSH4 0xB6B55F25 EQ PUSH2 0xC8 JUMPI DUP1 PUSH4 0xCE96CB77 EQ PUSH2 0x197 JUMPI DUP1 PUSH4 0xF3E0FFBF EQ PUSH2 0x1AA JUMPI PUSH0 PUSH0 REVERT JUMPDEST DUP1 PUSH4 0x981B1C2 EQ PUSH2 0x9F JUMPI DUP1 PUSH4 0x2E1A7D4D EQ PUSH2 0xC8 JUMPI DUP1 PUSH4 0x402D267D EQ PUSH2 0xDD JUMPI DUP1 PUSH4 0x5A117456 EQ PUSH2 0xFF JUMPI DUP1 PUSH4 0x5B9A4C35 EQ PUSH2 0x112 JUMPI JUMPDEST PUSH0 PUSH0 REVERT JUMPDEST PUSH2 0xB2 PUSH2 0xAD CALLDATASIZE PUSH1 0x4 PUSH2 0x474 JUMP JUMPDEST PUSH2 0x1BD JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0xBF SWAP2 SWAP1 PUSH2 0x4C6 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST PUSH2 0xDB PUSH2 0xD6 CALLDATASIZE PUSH1 0x4 PUSH2 0x4FB JUMP JUMPDEST PUSH2 0x208 JUMP JUMPDEST STOP JUMPDEST PUSH2 0xF1 PUSH2 0xEB CALLDATASIZE PUSH1 0x4 PUSH2 0x512 JUMP JUMPDEST POP PUSH0 NOT SWAP1 JUMP JUMPDEST PUSH1 0x40 MLOAD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH2 0xBF JUMP JUMPDEST PUSH2 0xDB PUSH2 0x10D CALLDATASIZE PUSH1 0x4 PUSH2 0x53F JUMP JUMPDEST PUSH2 0x254 JUMP JUMPDEST PUSH2 0xF1 PUSH32 0x0 DUP2 JUMP JUMPDEST PUSH2 0x16C PUSH2 0x147 CALLDATASIZE PUSH1 0x4 PUSH2 0x512 JUMP JUMPDEST POP PUSH32 0x0 SWAP1 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP1 SWAP2 AND DUP2 MSTORE PUSH1 0x20 ADD PUSH2 0xBF JUMP JUMPDEST PUSH2 0xDB PUSH2 0x192 CALLDATASIZE PUSH1 0x4 PUSH2 0x55E JUMP JUMPDEST PUSH2 0x2D0 JUMP JUMPDEST PUSH2 0xF1 PUSH2 0x1A5 CALLDATASIZE PUSH1 0x4 PUSH2 0x512 JUMP JUMPDEST PUSH2 0x339 JUMP JUMPDEST PUSH2 0xF1 PUSH2 0x1B8 CALLDATASIZE PUSH1 0x4 PUSH2 0x512 JUMP JUMPDEST PUSH2 0x349 JUMP JUMPDEST PUSH1 0x60 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB PUSH32 0x0 AND ADDRESS SUB PUSH2 0x9B JUMPI PUSH1 0x40 MLOAD PUSH4 0x2ABF118B PUSH1 0xE2 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB PUSH32 0x0 AND ADDRESS SUB PUSH2 0x251 JUMPI PUSH1 0x40 MLOAD PUSH4 0x2ABF118B PUSH1 0xE2 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST POP JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB PUSH32 0x0 AND ADDRESS SUB PUSH2 0x29D JUMPI PUSH1 0x40 MLOAD PUSH4 0x2ABF118B PUSH1 0xE2 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST DUP1 ISZERO DUP1 ISZERO PUSH2 0x2B2 JUMPI POP PUSH2 0x2AF ADDRESS PUSH2 0x349 JUMP JUMPDEST ISZERO ISZERO JUMPDEST ISZERO PUSH2 0x251 JUMPI PUSH1 0x40 MLOAD PUSH4 0x42A176D1 PUSH1 0xE1 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB PUSH32 0x0 AND ADDRESS SUB PUSH2 0x319 JUMPI PUSH1 0x40 MLOAD PUSH4 0x2ABF118B PUSH1 0xE2 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST DUP1 MLOAD ISZERO PUSH2 0x251 JUMPI PUSH1 0x40 MLOAD PUSH4 0x50701B61 PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH0 PUSH2 0x343 DUP3 PUSH2 0x349 JUMP JUMPDEST SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH4 0x70A08231 PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP3 DUP2 AND PUSH1 0x4 DUP4 ADD MSTORE PUSH0 SWAP2 PUSH32 0x0 SWAP1 SWAP2 AND SWAP1 PUSH4 0x70A08231 SWAP1 PUSH1 0x24 ADD PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x3B1 JUMPI RETURNDATASIZE PUSH0 PUSH0 RETURNDATACOPY RETURNDATASIZE PUSH0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP3 ADD DUP1 PUSH1 0x40 MSTORE POP DUP2 ADD SWAP1 PUSH2 0x343 SWAP2 SWAP1 PUSH2 0x598 JUMP JUMPDEST PUSH4 0x4E487B71 PUSH1 0xE0 SHL PUSH0 MSTORE PUSH1 0x41 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH0 REVERT JUMPDEST PUSH0 DUP3 PUSH1 0x1F DUP4 ADD SLT PUSH2 0x3F8 JUMPI PUSH0 PUSH0 REVERT JUMPDEST DUP2 CALLDATALOAD PUSH8 0xFFFFFFFFFFFFFFFF DUP2 GT ISZERO PUSH2 0x412 JUMPI PUSH2 0x412 PUSH2 0x3D5 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH1 0x1F DUP3 ADD PUSH1 0x1F NOT SWAP1 DUP2 AND PUSH1 0x3F ADD AND DUP2 ADD PUSH8 0xFFFFFFFFFFFFFFFF DUP2 GT DUP3 DUP3 LT OR ISZERO PUSH2 0x441 JUMPI PUSH2 0x441 PUSH2 0x3D5 JUMP JUMPDEST PUSH1 0x40 MSTORE DUP2 DUP2 MSTORE DUP4 DUP3 ADD PUSH1 0x20 ADD DUP6 LT ISZERO PUSH2 0x458 JUMPI PUSH0 PUSH0 REVERT JUMPDEST DUP2 PUSH1 0x20 DUP6 ADD PUSH1 0x20 DUP4 ADD CALLDATACOPY PUSH0 SWAP2 DUP2 ADD PUSH1 0x20 ADD SWAP2 SWAP1 SWAP2 MSTORE SWAP4 SWAP3 POP POP POP JUMP JUMPDEST PUSH0 PUSH0 PUSH1 0x40 DUP4 DUP6 SUB SLT ISZERO PUSH2 0x485 JUMPI PUSH0 PUSH0 REVERT JUMPDEST DUP3 CALLDATALOAD PUSH1 0xFF DUP2 AND DUP2 EQ PUSH2 0x495 JUMPI PUSH0 PUSH0 REVERT JUMPDEST SWAP2 POP PUSH1 0x20 DUP4 ADD CALLDATALOAD PUSH8 0xFFFFFFFFFFFFFFFF DUP2 GT ISZERO PUSH2 0x4B0 JUMPI PUSH0 PUSH0 REVERT JUMPDEST PUSH2 0x4BC DUP6 DUP3 DUP7 ADD PUSH2 0x3E9 JUMP JUMPDEST SWAP2 POP POP SWAP3 POP SWAP3 SWAP1 POP JUMP JUMPDEST PUSH1 0x20 DUP2 MSTORE PUSH0 DUP3 MLOAD DUP1 PUSH1 0x20 DUP5 ADD MSTORE DUP1 PUSH1 0x20 DUP6 ADD PUSH1 0x40 DUP6 ADD MCOPY PUSH0 PUSH1 0x40 DUP3 DUP6 ADD ADD MSTORE PUSH1 0x40 PUSH1 0x1F NOT PUSH1 0x1F DUP4 ADD AND DUP5 ADD ADD SWAP2 POP POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x50B JUMPI PUSH0 PUSH0 REVERT JUMPDEST POP CALLDATALOAD SWAP2 SWAP1 POP JUMP JUMPDEST PUSH0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x522 JUMPI PUSH0 PUSH0 REVERT JUMPDEST DUP2 CALLDATALOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 AND DUP2 EQ PUSH2 0x538 JUMPI PUSH0 PUSH0 REVERT JUMPDEST SWAP4 SWAP3 POP POP POP JUMP JUMPDEST PUSH0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x54F JUMPI PUSH0 PUSH0 REVERT JUMPDEST DUP2 CALLDATALOAD DUP1 ISZERO ISZERO DUP2 EQ PUSH2 0x538 JUMPI PUSH0 PUSH0 REVERT JUMPDEST PUSH0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x56E JUMPI PUSH0 PUSH0 REVERT JUMPDEST DUP2 CALLDATALOAD PUSH8 0xFFFFFFFFFFFFFFFF DUP2 GT ISZERO PUSH2 0x584 JUMPI PUSH0 PUSH0 REVERT JUMPDEST PUSH2 0x590 DUP5 DUP3 DUP6 ADD PUSH2 0x3E9 JUMP JUMPDEST SWAP5 SWAP4 POP POP POP POP JUMP JUMPDEST PUSH0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x5A8 JUMPI PUSH0 PUSH0 REVERT JUMPDEST POP MLOAD SWAP2 SWAP1 POP JUMP INVALID LOG2 PUSH5 0x6970667358 0x22 SLT KECCAK256 0x4B 0xB7 0xCA DUP10 ADDMOD EXTSTATICCALL SLT LOG1 0xCE SWAP15 0xE2 0xD CHAINID EXTCODEHASH 0xC4 0xCA 0xAA SHL 0xF GT PREVRANDAO SWAP1 0xBF 0xEA 0xA5 DUP4 MLOAD JUMPI RETURNCONTRACT 0x53 PREVRANDAO DUP14 PUSH5 0x736F6C6343 STOP ADDMOD 0x1E STOP CALLER ","sourceMap":"578:4:80:-:0;534:49;;;;483:2262;7309:54:53;569:21:87;;;626:2;606:18;599:30;665:32;645:18;638:60;750:20;743:62;;;;483:2262:80;7309:54:53;;;715:19:87;7309:54:53;;7299:65;;587:81:80;;1112:61;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;-1:-1:-1;;;;;1153:15:80;;;483:2262;;14:313:87;107:6;160:2;148:9;139:7;135:23;131:32;128:52;;;176:1;173;166:12;128:52;202:16;;-1:-1:-1;;;;;247:31:87;;237:42;;227:70;;293:1;290;283:12;227:70;316:5;14:313;-1:-1:-1;;;14:313:87:o;332:479::-;483:2262:80;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;"},"deployedBytecode":{"functionDebugData":{"@asset_23355":{"entryPoint":null,"id":23355,"parameterSlots":1,"returnSlots":1},"@connect_23285":{"entryPoint":720,"id":23285,"parameterSlots":1,"returnSlots":0},"@deposit_23390":{"entryPoint":null,"id":23390,"parameterSlots":1,"returnSlots":0},"@disconnect_23310":{"entryPoint":596,"id":23310,"parameterSlots":1,"returnSlots":0},"@forwardEntryPoint_23406":{"entryPoint":445,"id":23406,"parameterSlots":2,"returnSlots":1},"@maxDeposit_23340":{"entryPoint":null,"id":23340,"parameterSlots":1,"returnSlots":1},"@maxWithdraw_23324":{"entryPoint":825,"id":23324,"parameterSlots":1,"returnSlots":1},"@storageSlot_23232":{"entryPoint":null,"id":23232,"parameterSlots":0,"returnSlots":0},"@totalAssets_23370":{"entryPoint":841,"id":23370,"parameterSlots":1,"returnSlots":1},"@withdraw_23380":{"entryPoint":520,"id":23380,"parameterSlots":1,"returnSlots":0},"abi_decode_bytes":{"entryPoint":1001,"id":null,"parameterSlots":2,"returnSlots":1},"abi_decode_tuple_t_address":{"entryPoint":1298,"id":null,"parameterSlots":2,"returnSlots":1},"abi_decode_tuple_t_bool":{"entryPoint":1343,"id":null,"parameterSlots":2,"returnSlots":1},"abi_decode_tuple_t_bytes_memory_ptr":{"entryPoint":1374,"id":null,"parameterSlots":2,"returnSlots":1},"abi_decode_tuple_t_uint256":{"entryPoint":1275,"id":null,"parameterSlots":2,"returnSlots":1},"abi_decode_tuple_t_uint256_fromMemory":{"entryPoint":1432,"id":null,"parameterSlots":2,"returnSlots":1},"abi_decode_tuple_t_uint8t_bytes_memory_ptr":{"entryPoint":1140,"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_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":1222,"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_0x41":{"entryPoint":981,"id":null,"parameterSlots":0,"returnSlots":0}},"generatedSources":[{"ast":{"nativeSrc":"0:3616:87","nodeType":"YulBlock","src":"0:3616:87","statements":[{"nativeSrc":"6:3:87","nodeType":"YulBlock","src":"6:3:87","statements":[]},{"body":{"nativeSrc":"46:95:87","nodeType":"YulBlock","src":"46:95:87","statements":[{"expression":{"arguments":[{"kind":"number","nativeSrc":"63:1:87","nodeType":"YulLiteral","src":"63:1:87","type":"","value":"0"},{"arguments":[{"kind":"number","nativeSrc":"70:3:87","nodeType":"YulLiteral","src":"70:3:87","type":"","value":"224"},{"kind":"number","nativeSrc":"75:10:87","nodeType":"YulLiteral","src":"75:10:87","type":"","value":"0x4e487b71"}],"functionName":{"name":"shl","nativeSrc":"66:3:87","nodeType":"YulIdentifier","src":"66:3:87"},"nativeSrc":"66:20:87","nodeType":"YulFunctionCall","src":"66:20:87"}],"functionName":{"name":"mstore","nativeSrc":"56:6:87","nodeType":"YulIdentifier","src":"56:6:87"},"nativeSrc":"56:31:87","nodeType":"YulFunctionCall","src":"56:31:87"},"nativeSrc":"56:31:87","nodeType":"YulExpressionStatement","src":"56:31:87"},{"expression":{"arguments":[{"kind":"number","nativeSrc":"103:1:87","nodeType":"YulLiteral","src":"103:1:87","type":"","value":"4"},{"kind":"number","nativeSrc":"106:4:87","nodeType":"YulLiteral","src":"106:4:87","type":"","value":"0x41"}],"functionName":{"name":"mstore","nativeSrc":"96:6:87","nodeType":"YulIdentifier","src":"96:6:87"},"nativeSrc":"96:15:87","nodeType":"YulFunctionCall","src":"96:15:87"},"nativeSrc":"96:15:87","nodeType":"YulExpressionStatement","src":"96:15:87"},{"expression":{"arguments":[{"kind":"number","nativeSrc":"127:1:87","nodeType":"YulLiteral","src":"127:1:87","type":"","value":"0"},{"kind":"number","nativeSrc":"130:4:87","nodeType":"YulLiteral","src":"130:4:87","type":"","value":"0x24"}],"functionName":{"name":"revert","nativeSrc":"120:6:87","nodeType":"YulIdentifier","src":"120:6:87"},"nativeSrc":"120:15:87","nodeType":"YulFunctionCall","src":"120:15:87"},"nativeSrc":"120:15:87","nodeType":"YulExpressionStatement","src":"120:15:87"}]},"name":"panic_error_0x41","nativeSrc":"14:127:87","nodeType":"YulFunctionDefinition","src":"14:127:87"},{"body":{"nativeSrc":"198:673:87","nodeType":"YulBlock","src":"198:673:87","statements":[{"body":{"nativeSrc":"247:16:87","nodeType":"YulBlock","src":"247:16:87","statements":[{"expression":{"arguments":[{"kind":"number","nativeSrc":"256:1:87","nodeType":"YulLiteral","src":"256:1:87","type":"","value":"0"},{"kind":"number","nativeSrc":"259:1:87","nodeType":"YulLiteral","src":"259:1:87","type":"","value":"0"}],"functionName":{"name":"revert","nativeSrc":"249:6:87","nodeType":"YulIdentifier","src":"249:6:87"},"nativeSrc":"249:12:87","nodeType":"YulFunctionCall","src":"249:12:87"},"nativeSrc":"249:12:87","nodeType":"YulExpressionStatement","src":"249:12:87"}]},"condition":{"arguments":[{"arguments":[{"arguments":[{"name":"offset","nativeSrc":"226:6:87","nodeType":"YulIdentifier","src":"226:6:87"},{"kind":"number","nativeSrc":"234:4:87","nodeType":"YulLiteral","src":"234:4:87","type":"","value":"0x1f"}],"functionName":{"name":"add","nativeSrc":"222:3:87","nodeType":"YulIdentifier","src":"222:3:87"},"nativeSrc":"222:17:87","nodeType":"YulFunctionCall","src":"222:17:87"},{"name":"end","nativeSrc":"241:3:87","nodeType":"YulIdentifier","src":"241:3:87"}],"functionName":{"name":"slt","nativeSrc":"218:3:87","nodeType":"YulIdentifier","src":"218:3:87"},"nativeSrc":"218:27:87","nodeType":"YulFunctionCall","src":"218:27:87"}],"functionName":{"name":"iszero","nativeSrc":"211:6:87","nodeType":"YulIdentifier","src":"211:6:87"},"nativeSrc":"211:35:87","nodeType":"YulFunctionCall","src":"211:35:87"},"nativeSrc":"208:55:87","nodeType":"YulIf","src":"208:55:87"},{"nativeSrc":"272:34:87","nodeType":"YulVariableDeclaration","src":"272:34:87","value":{"arguments":[{"name":"offset","nativeSrc":"299:6:87","nodeType":"YulIdentifier","src":"299:6:87"}],"functionName":{"name":"calldataload","nativeSrc":"286:12:87","nodeType":"YulIdentifier","src":"286:12:87"},"nativeSrc":"286:20:87","nodeType":"YulFunctionCall","src":"286:20:87"},"variables":[{"name":"length","nativeSrc":"276:6:87","nodeType":"YulTypedName","src":"276:6:87","type":""}]},{"body":{"nativeSrc":"349:22:87","nodeType":"YulBlock","src":"349:22:87","statements":[{"expression":{"arguments":[],"functionName":{"name":"panic_error_0x41","nativeSrc":"351:16:87","nodeType":"YulIdentifier","src":"351:16:87"},"nativeSrc":"351:18:87","nodeType":"YulFunctionCall","src":"351:18:87"},"nativeSrc":"351:18:87","nodeType":"YulExpressionStatement","src":"351:18:87"}]},"condition":{"arguments":[{"name":"length","nativeSrc":"321:6:87","nodeType":"YulIdentifier","src":"321:6:87"},{"kind":"number","nativeSrc":"329:18:87","nodeType":"YulLiteral","src":"329:18:87","type":"","value":"0xffffffffffffffff"}],"functionName":{"name":"gt","nativeSrc":"318:2:87","nodeType":"YulIdentifier","src":"318:2:87"},"nativeSrc":"318:30:87","nodeType":"YulFunctionCall","src":"318:30:87"},"nativeSrc":"315:56:87","nodeType":"YulIf","src":"315:56:87"},{"nativeSrc":"380:23:87","nodeType":"YulVariableDeclaration","src":"380:23:87","value":{"arguments":[{"kind":"number","nativeSrc":"400:2:87","nodeType":"YulLiteral","src":"400:2:87","type":"","value":"64"}],"functionName":{"name":"mload","nativeSrc":"394:5:87","nodeType":"YulIdentifier","src":"394:5:87"},"nativeSrc":"394:9:87","nodeType":"YulFunctionCall","src":"394:9:87"},"variables":[{"name":"memPtr","nativeSrc":"384:6:87","nodeType":"YulTypedName","src":"384:6:87","type":""}]},{"nativeSrc":"412:85:87","nodeType":"YulVariableDeclaration","src":"412:85:87","value":{"arguments":[{"name":"memPtr","nativeSrc":"434:6:87","nodeType":"YulIdentifier","src":"434:6:87"},{"arguments":[{"arguments":[{"arguments":[{"arguments":[{"name":"length","nativeSrc":"458:6:87","nodeType":"YulIdentifier","src":"458:6:87"},{"kind":"number","nativeSrc":"466:4:87","nodeType":"YulLiteral","src":"466:4:87","type":"","value":"0x1f"}],"functionName":{"name":"add","nativeSrc":"454:3:87","nodeType":"YulIdentifier","src":"454:3:87"},"nativeSrc":"454:17:87","nodeType":"YulFunctionCall","src":"454:17:87"},{"arguments":[{"kind":"number","nativeSrc":"477:2:87","nodeType":"YulLiteral","src":"477:2:87","type":"","value":"31"}],"functionName":{"name":"not","nativeSrc":"473:3:87","nodeType":"YulIdentifier","src":"473:3:87"},"nativeSrc":"473:7:87","nodeType":"YulFunctionCall","src":"473:7:87"}],"functionName":{"name":"and","nativeSrc":"450:3:87","nodeType":"YulIdentifier","src":"450:3:87"},"nativeSrc":"450:31:87","nodeType":"YulFunctionCall","src":"450:31:87"},{"kind":"number","nativeSrc":"483:2:87","nodeType":"YulLiteral","src":"483:2:87","type":"","value":"63"}],"functionName":{"name":"add","nativeSrc":"446:3:87","nodeType":"YulIdentifier","src":"446:3:87"},"nativeSrc":"446:40:87","nodeType":"YulFunctionCall","src":"446:40:87"},{"arguments":[{"kind":"number","nativeSrc":"492:2:87","nodeType":"YulLiteral","src":"492:2:87","type":"","value":"31"}],"functionName":{"name":"not","nativeSrc":"488:3:87","nodeType":"YulIdentifier","src":"488:3:87"},"nativeSrc":"488:7:87","nodeType":"YulFunctionCall","src":"488:7:87"}],"functionName":{"name":"and","nativeSrc":"442:3:87","nodeType":"YulIdentifier","src":"442:3:87"},"nativeSrc":"442:54:87","nodeType":"YulFunctionCall","src":"442:54:87"}],"functionName":{"name":"add","nativeSrc":"430:3:87","nodeType":"YulIdentifier","src":"430:3:87"},"nativeSrc":"430:67:87","nodeType":"YulFunctionCall","src":"430:67:87"},"variables":[{"name":"newFreePtr","nativeSrc":"416:10:87","nodeType":"YulTypedName","src":"416:10:87","type":""}]},{"body":{"nativeSrc":"572:22:87","nodeType":"YulBlock","src":"572:22:87","statements":[{"expression":{"arguments":[],"functionName":{"name":"panic_error_0x41","nativeSrc":"574:16:87","nodeType":"YulIdentifier","src":"574:16:87"},"nativeSrc":"574:18:87","nodeType":"YulFunctionCall","src":"574:18:87"},"nativeSrc":"574:18:87","nodeType":"YulExpressionStatement","src":"574:18:87"}]},"condition":{"arguments":[{"arguments":[{"name":"newFreePtr","nativeSrc":"515:10:87","nodeType":"YulIdentifier","src":"515:10:87"},{"kind":"number","nativeSrc":"527:18:87","nodeType":"YulLiteral","src":"527:18:87","type":"","value":"0xffffffffffffffff"}],"functionName":{"name":"gt","nativeSrc":"512:2:87","nodeType":"YulIdentifier","src":"512:2:87"},"nativeSrc":"512:34:87","nodeType":"YulFunctionCall","src":"512:34:87"},{"arguments":[{"name":"newFreePtr","nativeSrc":"551:10:87","nodeType":"YulIdentifier","src":"551:10:87"},{"name":"memPtr","nativeSrc":"563:6:87","nodeType":"YulIdentifier","src":"563:6:87"}],"functionName":{"name":"lt","nativeSrc":"548:2:87","nodeType":"YulIdentifier","src":"548:2:87"},"nativeSrc":"548:22:87","nodeType":"YulFunctionCall","src":"548:22:87"}],"functionName":{"name":"or","nativeSrc":"509:2:87","nodeType":"YulIdentifier","src":"509:2:87"},"nativeSrc":"509:62:87","nodeType":"YulFunctionCall","src":"509:62:87"},"nativeSrc":"506:88:87","nodeType":"YulIf","src":"506:88:87"},{"expression":{"arguments":[{"kind":"number","nativeSrc":"610:2:87","nodeType":"YulLiteral","src":"610:2:87","type":"","value":"64"},{"name":"newFreePtr","nativeSrc":"614:10:87","nodeType":"YulIdentifier","src":"614:10:87"}],"functionName":{"name":"mstore","nativeSrc":"603:6:87","nodeType":"YulIdentifier","src":"603:6:87"},"nativeSrc":"603:22:87","nodeType":"YulFunctionCall","src":"603:22:87"},"nativeSrc":"603:22:87","nodeType":"YulExpressionStatement","src":"603:22:87"},{"expression":{"arguments":[{"name":"memPtr","nativeSrc":"641:6:87","nodeType":"YulIdentifier","src":"641:6:87"},{"name":"length","nativeSrc":"649:6:87","nodeType":"YulIdentifier","src":"649:6:87"}],"functionName":{"name":"mstore","nativeSrc":"634:6:87","nodeType":"YulIdentifier","src":"634:6:87"},"nativeSrc":"634:22:87","nodeType":"YulFunctionCall","src":"634:22:87"},"nativeSrc":"634:22:87","nodeType":"YulExpressionStatement","src":"634:22:87"},{"body":{"nativeSrc":"708:16:87","nodeType":"YulBlock","src":"708:16:87","statements":[{"expression":{"arguments":[{"kind":"number","nativeSrc":"717:1:87","nodeType":"YulLiteral","src":"717:1:87","type":"","value":"0"},{"kind":"number","nativeSrc":"720:1:87","nodeType":"YulLiteral","src":"720:1:87","type":"","value":"0"}],"functionName":{"name":"revert","nativeSrc":"710:6:87","nodeType":"YulIdentifier","src":"710:6:87"},"nativeSrc":"710:12:87","nodeType":"YulFunctionCall","src":"710:12:87"},"nativeSrc":"710:12:87","nodeType":"YulExpressionStatement","src":"710:12:87"}]},"condition":{"arguments":[{"arguments":[{"arguments":[{"name":"offset","nativeSrc":"679:6:87","nodeType":"YulIdentifier","src":"679:6:87"},{"name":"length","nativeSrc":"687:6:87","nodeType":"YulIdentifier","src":"687:6:87"}],"functionName":{"name":"add","nativeSrc":"675:3:87","nodeType":"YulIdentifier","src":"675:3:87"},"nativeSrc":"675:19:87","nodeType":"YulFunctionCall","src":"675:19:87"},{"kind":"number","nativeSrc":"696:4:87","nodeType":"YulLiteral","src":"696:4:87","type":"","value":"0x20"}],"functionName":{"name":"add","nativeSrc":"671:3:87","nodeType":"YulIdentifier","src":"671:3:87"},"nativeSrc":"671:30:87","nodeType":"YulFunctionCall","src":"671:30:87"},{"name":"end","nativeSrc":"703:3:87","nodeType":"YulIdentifier","src":"703:3:87"}],"functionName":{"name":"gt","nativeSrc":"668:2:87","nodeType":"YulIdentifier","src":"668:2:87"},"nativeSrc":"668:39:87","nodeType":"YulFunctionCall","src":"668:39:87"},"nativeSrc":"665:59:87","nodeType":"YulIf","src":"665:59:87"},{"expression":{"arguments":[{"arguments":[{"name":"memPtr","nativeSrc":"750:6:87","nodeType":"YulIdentifier","src":"750:6:87"},{"kind":"number","nativeSrc":"758:4:87","nodeType":"YulLiteral","src":"758:4:87","type":"","value":"0x20"}],"functionName":{"name":"add","nativeSrc":"746:3:87","nodeType":"YulIdentifier","src":"746:3:87"},"nativeSrc":"746:17:87","nodeType":"YulFunctionCall","src":"746:17:87"},{"arguments":[{"name":"offset","nativeSrc":"769:6:87","nodeType":"YulIdentifier","src":"769:6:87"},{"kind":"number","nativeSrc":"777:4:87","nodeType":"YulLiteral","src":"777:4:87","type":"","value":"0x20"}],"functionName":{"name":"add","nativeSrc":"765:3:87","nodeType":"YulIdentifier","src":"765:3:87"},"nativeSrc":"765:17:87","nodeType":"YulFunctionCall","src":"765:17:87"},{"name":"length","nativeSrc":"784:6:87","nodeType":"YulIdentifier","src":"784:6:87"}],"functionName":{"name":"calldatacopy","nativeSrc":"733:12:87","nodeType":"YulIdentifier","src":"733:12:87"},"nativeSrc":"733:58:87","nodeType":"YulFunctionCall","src":"733:58:87"},"nativeSrc":"733:58:87","nodeType":"YulExpressionStatement","src":"733:58:87"},{"expression":{"arguments":[{"arguments":[{"arguments":[{"name":"memPtr","nativeSrc":"815:6:87","nodeType":"YulIdentifier","src":"815:6:87"},{"name":"length","nativeSrc":"823:6:87","nodeType":"YulIdentifier","src":"823:6:87"}],"functionName":{"name":"add","nativeSrc":"811:3:87","nodeType":"YulIdentifier","src":"811:3:87"},"nativeSrc":"811:19:87","nodeType":"YulFunctionCall","src":"811:19:87"},{"kind":"number","nativeSrc":"832:4:87","nodeType":"YulLiteral","src":"832:4:87","type":"","value":"0x20"}],"functionName":{"name":"add","nativeSrc":"807:3:87","nodeType":"YulIdentifier","src":"807:3:87"},"nativeSrc":"807:30:87","nodeType":"YulFunctionCall","src":"807:30:87"},{"kind":"number","nativeSrc":"839:1:87","nodeType":"YulLiteral","src":"839:1:87","type":"","value":"0"}],"functionName":{"name":"mstore","nativeSrc":"800:6:87","nodeType":"YulIdentifier","src":"800:6:87"},"nativeSrc":"800:41:87","nodeType":"YulFunctionCall","src":"800:41:87"},"nativeSrc":"800:41:87","nodeType":"YulExpressionStatement","src":"800:41:87"},{"nativeSrc":"850:15:87","nodeType":"YulAssignment","src":"850:15:87","value":{"name":"memPtr","nativeSrc":"859:6:87","nodeType":"YulIdentifier","src":"859:6:87"},"variableNames":[{"name":"array","nativeSrc":"850:5:87","nodeType":"YulIdentifier","src":"850:5:87"}]}]},"name":"abi_decode_bytes","nativeSrc":"146:725:87","nodeType":"YulFunctionDefinition","parameters":[{"name":"offset","nativeSrc":"172:6:87","nodeType":"YulTypedName","src":"172:6:87","type":""},{"name":"end","nativeSrc":"180:3:87","nodeType":"YulTypedName","src":"180:3:87","type":""}],"returnVariables":[{"name":"array","nativeSrc":"188:5:87","nodeType":"YulTypedName","src":"188:5:87","type":""}],"src":"146:725:87"},{"body":{"nativeSrc":"970:383:87","nodeType":"YulBlock","src":"970:383:87","statements":[{"body":{"nativeSrc":"1016:16:87","nodeType":"YulBlock","src":"1016:16:87","statements":[{"expression":{"arguments":[{"kind":"number","nativeSrc":"1025:1:87","nodeType":"YulLiteral","src":"1025:1:87","type":"","value":"0"},{"kind":"number","nativeSrc":"1028:1:87","nodeType":"YulLiteral","src":"1028:1:87","type":"","value":"0"}],"functionName":{"name":"revert","nativeSrc":"1018:6:87","nodeType":"YulIdentifier","src":"1018:6:87"},"nativeSrc":"1018:12:87","nodeType":"YulFunctionCall","src":"1018:12:87"},"nativeSrc":"1018:12:87","nodeType":"YulExpressionStatement","src":"1018:12:87"}]},"condition":{"arguments":[{"arguments":[{"name":"dataEnd","nativeSrc":"991:7:87","nodeType":"YulIdentifier","src":"991:7:87"},{"name":"headStart","nativeSrc":"1000:9:87","nodeType":"YulIdentifier","src":"1000:9:87"}],"functionName":{"name":"sub","nativeSrc":"987:3:87","nodeType":"YulIdentifier","src":"987:3:87"},"nativeSrc":"987:23:87","nodeType":"YulFunctionCall","src":"987:23:87"},{"kind":"number","nativeSrc":"1012:2:87","nodeType":"YulLiteral","src":"1012:2:87","type":"","value":"64"}],"functionName":{"name":"slt","nativeSrc":"983:3:87","nodeType":"YulIdentifier","src":"983:3:87"},"nativeSrc":"983:32:87","nodeType":"YulFunctionCall","src":"983:32:87"},"nativeSrc":"980:52:87","nodeType":"YulIf","src":"980:52:87"},{"nativeSrc":"1041:36:87","nodeType":"YulVariableDeclaration","src":"1041:36:87","value":{"arguments":[{"name":"headStart","nativeSrc":"1067:9:87","nodeType":"YulIdentifier","src":"1067:9:87"}],"functionName":{"name":"calldataload","nativeSrc":"1054:12:87","nodeType":"YulIdentifier","src":"1054:12:87"},"nativeSrc":"1054:23:87","nodeType":"YulFunctionCall","src":"1054:23:87"},"variables":[{"name":"value","nativeSrc":"1045:5:87","nodeType":"YulTypedName","src":"1045:5:87","type":""}]},{"body":{"nativeSrc":"1125:16:87","nodeType":"YulBlock","src":"1125:16:87","statements":[{"expression":{"arguments":[{"kind":"number","nativeSrc":"1134:1:87","nodeType":"YulLiteral","src":"1134:1:87","type":"","value":"0"},{"kind":"number","nativeSrc":"1137:1:87","nodeType":"YulLiteral","src":"1137:1:87","type":"","value":"0"}],"functionName":{"name":"revert","nativeSrc":"1127:6:87","nodeType":"YulIdentifier","src":"1127:6:87"},"nativeSrc":"1127:12:87","nodeType":"YulFunctionCall","src":"1127:12:87"},"nativeSrc":"1127:12:87","nodeType":"YulExpressionStatement","src":"1127:12:87"}]},"condition":{"arguments":[{"arguments":[{"name":"value","nativeSrc":"1099:5:87","nodeType":"YulIdentifier","src":"1099:5:87"},{"arguments":[{"name":"value","nativeSrc":"1110:5:87","nodeType":"YulIdentifier","src":"1110:5:87"},{"kind":"number","nativeSrc":"1117:4:87","nodeType":"YulLiteral","src":"1117:4:87","type":"","value":"0xff"}],"functionName":{"name":"and","nativeSrc":"1106:3:87","nodeType":"YulIdentifier","src":"1106:3:87"},"nativeSrc":"1106:16:87","nodeType":"YulFunctionCall","src":"1106:16:87"}],"functionName":{"name":"eq","nativeSrc":"1096:2:87","nodeType":"YulIdentifier","src":"1096:2:87"},"nativeSrc":"1096:27:87","nodeType":"YulFunctionCall","src":"1096:27:87"}],"functionName":{"name":"iszero","nativeSrc":"1089:6:87","nodeType":"YulIdentifier","src":"1089:6:87"},"nativeSrc":"1089:35:87","nodeType":"YulFunctionCall","src":"1089:35:87"},"nativeSrc":"1086:55:87","nodeType":"YulIf","src":"1086:55:87"},{"nativeSrc":"1150:15:87","nodeType":"YulAssignment","src":"1150:15:87","value":{"name":"value","nativeSrc":"1160:5:87","nodeType":"YulIdentifier","src":"1160:5:87"},"variableNames":[{"name":"value0","nativeSrc":"1150:6:87","nodeType":"YulIdentifier","src":"1150:6:87"}]},{"nativeSrc":"1174:46:87","nodeType":"YulVariableDeclaration","src":"1174:46:87","value":{"arguments":[{"arguments":[{"name":"headStart","nativeSrc":"1205:9:87","nodeType":"YulIdentifier","src":"1205:9:87"},{"kind":"number","nativeSrc":"1216:2:87","nodeType":"YulLiteral","src":"1216:2:87","type":"","value":"32"}],"functionName":{"name":"add","nativeSrc":"1201:3:87","nodeType":"YulIdentifier","src":"1201:3:87"},"nativeSrc":"1201:18:87","nodeType":"YulFunctionCall","src":"1201:18:87"}],"functionName":{"name":"calldataload","nativeSrc":"1188:12:87","nodeType":"YulIdentifier","src":"1188:12:87"},"nativeSrc":"1188:32:87","nodeType":"YulFunctionCall","src":"1188:32:87"},"variables":[{"name":"offset","nativeSrc":"1178:6:87","nodeType":"YulTypedName","src":"1178:6:87","type":""}]},{"body":{"nativeSrc":"1263:16:87","nodeType":"YulBlock","src":"1263:16:87","statements":[{"expression":{"arguments":[{"kind":"number","nativeSrc":"1272:1:87","nodeType":"YulLiteral","src":"1272:1:87","type":"","value":"0"},{"kind":"number","nativeSrc":"1275:1:87","nodeType":"YulLiteral","src":"1275:1:87","type":"","value":"0"}],"functionName":{"name":"revert","nativeSrc":"1265:6:87","nodeType":"YulIdentifier","src":"1265:6:87"},"nativeSrc":"1265:12:87","nodeType":"YulFunctionCall","src":"1265:12:87"},"nativeSrc":"1265:12:87","nodeType":"YulExpressionStatement","src":"1265:12:87"}]},"condition":{"arguments":[{"name":"offset","nativeSrc":"1235:6:87","nodeType":"YulIdentifier","src":"1235:6:87"},{"kind":"number","nativeSrc":"1243:18:87","nodeType":"YulLiteral","src":"1243:18:87","type":"","value":"0xffffffffffffffff"}],"functionName":{"name":"gt","nativeSrc":"1232:2:87","nodeType":"YulIdentifier","src":"1232:2:87"},"nativeSrc":"1232:30:87","nodeType":"YulFunctionCall","src":"1232:30:87"},"nativeSrc":"1229:50:87","nodeType":"YulIf","src":"1229:50:87"},{"nativeSrc":"1288:59:87","nodeType":"YulAssignment","src":"1288:59:87","value":{"arguments":[{"arguments":[{"name":"headStart","nativeSrc":"1319:9:87","nodeType":"YulIdentifier","src":"1319:9:87"},{"name":"offset","nativeSrc":"1330:6:87","nodeType":"YulIdentifier","src":"1330:6:87"}],"functionName":{"name":"add","nativeSrc":"1315:3:87","nodeType":"YulIdentifier","src":"1315:3:87"},"nativeSrc":"1315:22:87","nodeType":"YulFunctionCall","src":"1315:22:87"},{"name":"dataEnd","nativeSrc":"1339:7:87","nodeType":"YulIdentifier","src":"1339:7:87"}],"functionName":{"name":"abi_decode_bytes","nativeSrc":"1298:16:87","nodeType":"YulIdentifier","src":"1298:16:87"},"nativeSrc":"1298:49:87","nodeType":"YulFunctionCall","src":"1298:49:87"},"variableNames":[{"name":"value1","nativeSrc":"1288:6:87","nodeType":"YulIdentifier","src":"1288:6:87"}]}]},"name":"abi_decode_tuple_t_uint8t_bytes_memory_ptr","nativeSrc":"876:477:87","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nativeSrc":"928:9:87","nodeType":"YulTypedName","src":"928:9:87","type":""},{"name":"dataEnd","nativeSrc":"939:7:87","nodeType":"YulTypedName","src":"939:7:87","type":""}],"returnVariables":[{"name":"value0","nativeSrc":"951:6:87","nodeType":"YulTypedName","src":"951:6:87","type":""},{"name":"value1","nativeSrc":"959:6:87","nodeType":"YulTypedName","src":"959:6:87","type":""}],"src":"876:477:87"},{"body":{"nativeSrc":"1477:297:87","nodeType":"YulBlock","src":"1477:297:87","statements":[{"expression":{"arguments":[{"name":"headStart","nativeSrc":"1494:9:87","nodeType":"YulIdentifier","src":"1494:9:87"},{"kind":"number","nativeSrc":"1505:2:87","nodeType":"YulLiteral","src":"1505:2:87","type":"","value":"32"}],"functionName":{"name":"mstore","nativeSrc":"1487:6:87","nodeType":"YulIdentifier","src":"1487:6:87"},"nativeSrc":"1487:21:87","nodeType":"YulFunctionCall","src":"1487:21:87"},"nativeSrc":"1487:21:87","nodeType":"YulExpressionStatement","src":"1487:21:87"},{"nativeSrc":"1517:27:87","nodeType":"YulVariableDeclaration","src":"1517:27:87","value":{"arguments":[{"name":"value0","nativeSrc":"1537:6:87","nodeType":"YulIdentifier","src":"1537:6:87"}],"functionName":{"name":"mload","nativeSrc":"1531:5:87","nodeType":"YulIdentifier","src":"1531:5:87"},"nativeSrc":"1531:13:87","nodeType":"YulFunctionCall","src":"1531:13:87"},"variables":[{"name":"length","nativeSrc":"1521:6:87","nodeType":"YulTypedName","src":"1521:6:87","type":""}]},{"expression":{"arguments":[{"arguments":[{"name":"headStart","nativeSrc":"1564:9:87","nodeType":"YulIdentifier","src":"1564:9:87"},{"kind":"number","nativeSrc":"1575:2:87","nodeType":"YulLiteral","src":"1575:2:87","type":"","value":"32"}],"functionName":{"name":"add","nativeSrc":"1560:3:87","nodeType":"YulIdentifier","src":"1560:3:87"},"nativeSrc":"1560:18:87","nodeType":"YulFunctionCall","src":"1560:18:87"},{"name":"length","nativeSrc":"1580:6:87","nodeType":"YulIdentifier","src":"1580:6:87"}],"functionName":{"name":"mstore","nativeSrc":"1553:6:87","nodeType":"YulIdentifier","src":"1553:6:87"},"nativeSrc":"1553:34:87","nodeType":"YulFunctionCall","src":"1553:34:87"},"nativeSrc":"1553:34:87","nodeType":"YulExpressionStatement","src":"1553:34:87"},{"expression":{"arguments":[{"arguments":[{"name":"headStart","nativeSrc":"1606:9:87","nodeType":"YulIdentifier","src":"1606:9:87"},{"kind":"number","nativeSrc":"1617:2:87","nodeType":"YulLiteral","src":"1617:2:87","type":"","value":"64"}],"functionName":{"name":"add","nativeSrc":"1602:3:87","nodeType":"YulIdentifier","src":"1602:3:87"},"nativeSrc":"1602:18:87","nodeType":"YulFunctionCall","src":"1602:18:87"},{"arguments":[{"name":"value0","nativeSrc":"1626:6:87","nodeType":"YulIdentifier","src":"1626:6:87"},{"kind":"number","nativeSrc":"1634:2:87","nodeType":"YulLiteral","src":"1634:2:87","type":"","value":"32"}],"functionName":{"name":"add","nativeSrc":"1622:3:87","nodeType":"YulIdentifier","src":"1622:3:87"},"nativeSrc":"1622:15:87","nodeType":"YulFunctionCall","src":"1622:15:87"},{"name":"length","nativeSrc":"1639:6:87","nodeType":"YulIdentifier","src":"1639:6:87"}],"functionName":{"name":"mcopy","nativeSrc":"1596:5:87","nodeType":"YulIdentifier","src":"1596:5:87"},"nativeSrc":"1596:50:87","nodeType":"YulFunctionCall","src":"1596:50:87"},"nativeSrc":"1596:50:87","nodeType":"YulExpressionStatement","src":"1596:50:87"},{"expression":{"arguments":[{"arguments":[{"arguments":[{"name":"headStart","nativeSrc":"1670:9:87","nodeType":"YulIdentifier","src":"1670:9:87"},{"name":"length","nativeSrc":"1681:6:87","nodeType":"YulIdentifier","src":"1681:6:87"}],"functionName":{"name":"add","nativeSrc":"1666:3:87","nodeType":"YulIdentifier","src":"1666:3:87"},"nativeSrc":"1666:22:87","nodeType":"YulFunctionCall","src":"1666:22:87"},{"kind":"number","nativeSrc":"1690:2:87","nodeType":"YulLiteral","src":"1690:2:87","type":"","value":"64"}],"functionName":{"name":"add","nativeSrc":"1662:3:87","nodeType":"YulIdentifier","src":"1662:3:87"},"nativeSrc":"1662:31:87","nodeType":"YulFunctionCall","src":"1662:31:87"},{"kind":"number","nativeSrc":"1695:1:87","nodeType":"YulLiteral","src":"1695:1:87","type":"","value":"0"}],"functionName":{"name":"mstore","nativeSrc":"1655:6:87","nodeType":"YulIdentifier","src":"1655:6:87"},"nativeSrc":"1655:42:87","nodeType":"YulFunctionCall","src":"1655:42:87"},"nativeSrc":"1655:42:87","nodeType":"YulExpressionStatement","src":"1655:42:87"},{"nativeSrc":"1706:62:87","nodeType":"YulAssignment","src":"1706:62:87","value":{"arguments":[{"arguments":[{"name":"headStart","nativeSrc":"1722:9:87","nodeType":"YulIdentifier","src":"1722:9:87"},{"arguments":[{"arguments":[{"name":"length","nativeSrc":"1741:6:87","nodeType":"YulIdentifier","src":"1741:6:87"},{"kind":"number","nativeSrc":"1749:2:87","nodeType":"YulLiteral","src":"1749:2:87","type":"","value":"31"}],"functionName":{"name":"add","nativeSrc":"1737:3:87","nodeType":"YulIdentifier","src":"1737:3:87"},"nativeSrc":"1737:15:87","nodeType":"YulFunctionCall","src":"1737:15:87"},{"arguments":[{"kind":"number","nativeSrc":"1758:2:87","nodeType":"YulLiteral","src":"1758:2:87","type":"","value":"31"}],"functionName":{"name":"not","nativeSrc":"1754:3:87","nodeType":"YulIdentifier","src":"1754:3:87"},"nativeSrc":"1754:7:87","nodeType":"YulFunctionCall","src":"1754:7:87"}],"functionName":{"name":"and","nativeSrc":"1733:3:87","nodeType":"YulIdentifier","src":"1733:3:87"},"nativeSrc":"1733:29:87","nodeType":"YulFunctionCall","src":"1733:29:87"}],"functionName":{"name":"add","nativeSrc":"1718:3:87","nodeType":"YulIdentifier","src":"1718:3:87"},"nativeSrc":"1718:45:87","nodeType":"YulFunctionCall","src":"1718:45:87"},{"kind":"number","nativeSrc":"1765:2:87","nodeType":"YulLiteral","src":"1765:2:87","type":"","value":"64"}],"functionName":{"name":"add","nativeSrc":"1714:3:87","nodeType":"YulIdentifier","src":"1714:3:87"},"nativeSrc":"1714:54:87","nodeType":"YulFunctionCall","src":"1714:54:87"},"variableNames":[{"name":"tail","nativeSrc":"1706:4:87","nodeType":"YulIdentifier","src":"1706:4:87"}]}]},"name":"abi_encode_tuple_t_bytes_memory_ptr__to_t_bytes_memory_ptr__fromStack_reversed","nativeSrc":"1358:416:87","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nativeSrc":"1446:9:87","nodeType":"YulTypedName","src":"1446:9:87","type":""},{"name":"value0","nativeSrc":"1457:6:87","nodeType":"YulTypedName","src":"1457:6:87","type":""}],"returnVariables":[{"name":"tail","nativeSrc":"1468:4:87","nodeType":"YulTypedName","src":"1468:4:87","type":""}],"src":"1358:416:87"},{"body":{"nativeSrc":"1849:110:87","nodeType":"YulBlock","src":"1849:110:87","statements":[{"body":{"nativeSrc":"1895:16:87","nodeType":"YulBlock","src":"1895:16:87","statements":[{"expression":{"arguments":[{"kind":"number","nativeSrc":"1904:1:87","nodeType":"YulLiteral","src":"1904:1:87","type":"","value":"0"},{"kind":"number","nativeSrc":"1907:1:87","nodeType":"YulLiteral","src":"1907:1:87","type":"","value":"0"}],"functionName":{"name":"revert","nativeSrc":"1897:6:87","nodeType":"YulIdentifier","src":"1897:6:87"},"nativeSrc":"1897:12:87","nodeType":"YulFunctionCall","src":"1897:12:87"},"nativeSrc":"1897:12:87","nodeType":"YulExpressionStatement","src":"1897:12:87"}]},"condition":{"arguments":[{"arguments":[{"name":"dataEnd","nativeSrc":"1870:7:87","nodeType":"YulIdentifier","src":"1870:7:87"},{"name":"headStart","nativeSrc":"1879:9:87","nodeType":"YulIdentifier","src":"1879:9:87"}],"functionName":{"name":"sub","nativeSrc":"1866:3:87","nodeType":"YulIdentifier","src":"1866:3:87"},"nativeSrc":"1866:23:87","nodeType":"YulFunctionCall","src":"1866:23:87"},{"kind":"number","nativeSrc":"1891:2:87","nodeType":"YulLiteral","src":"1891:2:87","type":"","value":"32"}],"functionName":{"name":"slt","nativeSrc":"1862:3:87","nodeType":"YulIdentifier","src":"1862:3:87"},"nativeSrc":"1862:32:87","nodeType":"YulFunctionCall","src":"1862:32:87"},"nativeSrc":"1859:52:87","nodeType":"YulIf","src":"1859:52:87"},{"nativeSrc":"1920:33:87","nodeType":"YulAssignment","src":"1920:33:87","value":{"arguments":[{"name":"headStart","nativeSrc":"1943:9:87","nodeType":"YulIdentifier","src":"1943:9:87"}],"functionName":{"name":"calldataload","nativeSrc":"1930:12:87","nodeType":"YulIdentifier","src":"1930:12:87"},"nativeSrc":"1930:23:87","nodeType":"YulFunctionCall","src":"1930:23:87"},"variableNames":[{"name":"value0","nativeSrc":"1920:6:87","nodeType":"YulIdentifier","src":"1920:6:87"}]}]},"name":"abi_decode_tuple_t_uint256","nativeSrc":"1779:180:87","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nativeSrc":"1815:9:87","nodeType":"YulTypedName","src":"1815:9:87","type":""},{"name":"dataEnd","nativeSrc":"1826:7:87","nodeType":"YulTypedName","src":"1826:7:87","type":""}],"returnVariables":[{"name":"value0","nativeSrc":"1838:6:87","nodeType":"YulTypedName","src":"1838:6:87","type":""}],"src":"1779:180:87"},{"body":{"nativeSrc":"2034:216:87","nodeType":"YulBlock","src":"2034:216:87","statements":[{"body":{"nativeSrc":"2080:16:87","nodeType":"YulBlock","src":"2080:16:87","statements":[{"expression":{"arguments":[{"kind":"number","nativeSrc":"2089:1:87","nodeType":"YulLiteral","src":"2089:1:87","type":"","value":"0"},{"kind":"number","nativeSrc":"2092:1:87","nodeType":"YulLiteral","src":"2092:1:87","type":"","value":"0"}],"functionName":{"name":"revert","nativeSrc":"2082:6:87","nodeType":"YulIdentifier","src":"2082:6:87"},"nativeSrc":"2082:12:87","nodeType":"YulFunctionCall","src":"2082:12:87"},"nativeSrc":"2082:12:87","nodeType":"YulExpressionStatement","src":"2082:12:87"}]},"condition":{"arguments":[{"arguments":[{"name":"dataEnd","nativeSrc":"2055:7:87","nodeType":"YulIdentifier","src":"2055:7:87"},{"name":"headStart","nativeSrc":"2064:9:87","nodeType":"YulIdentifier","src":"2064:9:87"}],"functionName":{"name":"sub","nativeSrc":"2051:3:87","nodeType":"YulIdentifier","src":"2051:3:87"},"nativeSrc":"2051:23:87","nodeType":"YulFunctionCall","src":"2051:23:87"},{"kind":"number","nativeSrc":"2076:2:87","nodeType":"YulLiteral","src":"2076:2:87","type":"","value":"32"}],"functionName":{"name":"slt","nativeSrc":"2047:3:87","nodeType":"YulIdentifier","src":"2047:3:87"},"nativeSrc":"2047:32:87","nodeType":"YulFunctionCall","src":"2047:32:87"},"nativeSrc":"2044:52:87","nodeType":"YulIf","src":"2044:52:87"},{"nativeSrc":"2105:36:87","nodeType":"YulVariableDeclaration","src":"2105:36:87","value":{"arguments":[{"name":"headStart","nativeSrc":"2131:9:87","nodeType":"YulIdentifier","src":"2131:9:87"}],"functionName":{"name":"calldataload","nativeSrc":"2118:12:87","nodeType":"YulIdentifier","src":"2118:12:87"},"nativeSrc":"2118:23:87","nodeType":"YulFunctionCall","src":"2118:23:87"},"variables":[{"name":"value","nativeSrc":"2109:5:87","nodeType":"YulTypedName","src":"2109:5:87","type":""}]},{"body":{"nativeSrc":"2204:16:87","nodeType":"YulBlock","src":"2204:16:87","statements":[{"expression":{"arguments":[{"kind":"number","nativeSrc":"2213:1:87","nodeType":"YulLiteral","src":"2213:1:87","type":"","value":"0"},{"kind":"number","nativeSrc":"2216:1:87","nodeType":"YulLiteral","src":"2216:1:87","type":"","value":"0"}],"functionName":{"name":"revert","nativeSrc":"2206:6:87","nodeType":"YulIdentifier","src":"2206:6:87"},"nativeSrc":"2206:12:87","nodeType":"YulFunctionCall","src":"2206:12:87"},"nativeSrc":"2206:12:87","nodeType":"YulExpressionStatement","src":"2206:12:87"}]},"condition":{"arguments":[{"arguments":[{"name":"value","nativeSrc":"2163:5:87","nodeType":"YulIdentifier","src":"2163:5:87"},{"arguments":[{"name":"value","nativeSrc":"2174:5:87","nodeType":"YulIdentifier","src":"2174:5:87"},{"arguments":[{"arguments":[{"kind":"number","nativeSrc":"2189:3:87","nodeType":"YulLiteral","src":"2189:3:87","type":"","value":"160"},{"kind":"number","nativeSrc":"2194:1:87","nodeType":"YulLiteral","src":"2194:1:87","type":"","value":"1"}],"functionName":{"name":"shl","nativeSrc":"2185:3:87","nodeType":"YulIdentifier","src":"2185:3:87"},"nativeSrc":"2185:11:87","nodeType":"YulFunctionCall","src":"2185:11:87"},{"kind":"number","nativeSrc":"2198:1:87","nodeType":"YulLiteral","src":"2198:1:87","type":"","value":"1"}],"functionName":{"name":"sub","nativeSrc":"2181:3:87","nodeType":"YulIdentifier","src":"2181:3:87"},"nativeSrc":"2181:19:87","nodeType":"YulFunctionCall","src":"2181:19:87"}],"functionName":{"name":"and","nativeSrc":"2170:3:87","nodeType":"YulIdentifier","src":"2170:3:87"},"nativeSrc":"2170:31:87","nodeType":"YulFunctionCall","src":"2170:31:87"}],"functionName":{"name":"eq","nativeSrc":"2160:2:87","nodeType":"YulIdentifier","src":"2160:2:87"},"nativeSrc":"2160:42:87","nodeType":"YulFunctionCall","src":"2160:42:87"}],"functionName":{"name":"iszero","nativeSrc":"2153:6:87","nodeType":"YulIdentifier","src":"2153:6:87"},"nativeSrc":"2153:50:87","nodeType":"YulFunctionCall","src":"2153:50:87"},"nativeSrc":"2150:70:87","nodeType":"YulIf","src":"2150:70:87"},{"nativeSrc":"2229:15:87","nodeType":"YulAssignment","src":"2229:15:87","value":{"name":"value","nativeSrc":"2239:5:87","nodeType":"YulIdentifier","src":"2239:5:87"},"variableNames":[{"name":"value0","nativeSrc":"2229:6:87","nodeType":"YulIdentifier","src":"2229:6:87"}]}]},"name":"abi_decode_tuple_t_address","nativeSrc":"1964:286:87","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nativeSrc":"2000:9:87","nodeType":"YulTypedName","src":"2000:9:87","type":""},{"name":"dataEnd","nativeSrc":"2011:7:87","nodeType":"YulTypedName","src":"2011:7:87","type":""}],"returnVariables":[{"name":"value0","nativeSrc":"2023:6:87","nodeType":"YulTypedName","src":"2023:6:87","type":""}],"src":"1964:286:87"},{"body":{"nativeSrc":"2356:76:87","nodeType":"YulBlock","src":"2356:76:87","statements":[{"nativeSrc":"2366:26:87","nodeType":"YulAssignment","src":"2366:26:87","value":{"arguments":[{"name":"headStart","nativeSrc":"2378:9:87","nodeType":"YulIdentifier","src":"2378:9:87"},{"kind":"number","nativeSrc":"2389:2:87","nodeType":"YulLiteral","src":"2389:2:87","type":"","value":"32"}],"functionName":{"name":"add","nativeSrc":"2374:3:87","nodeType":"YulIdentifier","src":"2374:3:87"},"nativeSrc":"2374:18:87","nodeType":"YulFunctionCall","src":"2374:18:87"},"variableNames":[{"name":"tail","nativeSrc":"2366:4:87","nodeType":"YulIdentifier","src":"2366:4:87"}]},{"expression":{"arguments":[{"name":"headStart","nativeSrc":"2408:9:87","nodeType":"YulIdentifier","src":"2408:9:87"},{"name":"value0","nativeSrc":"2419:6:87","nodeType":"YulIdentifier","src":"2419:6:87"}],"functionName":{"name":"mstore","nativeSrc":"2401:6:87","nodeType":"YulIdentifier","src":"2401:6:87"},"nativeSrc":"2401:25:87","nodeType":"YulFunctionCall","src":"2401:25:87"},"nativeSrc":"2401:25:87","nodeType":"YulExpressionStatement","src":"2401:25:87"}]},"name":"abi_encode_tuple_t_uint256__to_t_uint256__fromStack_reversed","nativeSrc":"2255:177:87","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nativeSrc":"2325:9:87","nodeType":"YulTypedName","src":"2325:9:87","type":""},{"name":"value0","nativeSrc":"2336:6:87","nodeType":"YulTypedName","src":"2336:6:87","type":""}],"returnVariables":[{"name":"tail","nativeSrc":"2347:4:87","nodeType":"YulTypedName","src":"2347:4:87","type":""}],"src":"2255:177:87"},{"body":{"nativeSrc":"2504:206:87","nodeType":"YulBlock","src":"2504:206:87","statements":[{"body":{"nativeSrc":"2550:16:87","nodeType":"YulBlock","src":"2550:16:87","statements":[{"expression":{"arguments":[{"kind":"number","nativeSrc":"2559:1:87","nodeType":"YulLiteral","src":"2559:1:87","type":"","value":"0"},{"kind":"number","nativeSrc":"2562:1:87","nodeType":"YulLiteral","src":"2562:1:87","type":"","value":"0"}],"functionName":{"name":"revert","nativeSrc":"2552:6:87","nodeType":"YulIdentifier","src":"2552:6:87"},"nativeSrc":"2552:12:87","nodeType":"YulFunctionCall","src":"2552:12:87"},"nativeSrc":"2552:12:87","nodeType":"YulExpressionStatement","src":"2552:12:87"}]},"condition":{"arguments":[{"arguments":[{"name":"dataEnd","nativeSrc":"2525:7:87","nodeType":"YulIdentifier","src":"2525:7:87"},{"name":"headStart","nativeSrc":"2534:9:87","nodeType":"YulIdentifier","src":"2534:9:87"}],"functionName":{"name":"sub","nativeSrc":"2521:3:87","nodeType":"YulIdentifier","src":"2521:3:87"},"nativeSrc":"2521:23:87","nodeType":"YulFunctionCall","src":"2521:23:87"},{"kind":"number","nativeSrc":"2546:2:87","nodeType":"YulLiteral","src":"2546:2:87","type":"","value":"32"}],"functionName":{"name":"slt","nativeSrc":"2517:3:87","nodeType":"YulIdentifier","src":"2517:3:87"},"nativeSrc":"2517:32:87","nodeType":"YulFunctionCall","src":"2517:32:87"},"nativeSrc":"2514:52:87","nodeType":"YulIf","src":"2514:52:87"},{"nativeSrc":"2575:36:87","nodeType":"YulVariableDeclaration","src":"2575:36:87","value":{"arguments":[{"name":"headStart","nativeSrc":"2601:9:87","nodeType":"YulIdentifier","src":"2601:9:87"}],"functionName":{"name":"calldataload","nativeSrc":"2588:12:87","nodeType":"YulIdentifier","src":"2588:12:87"},"nativeSrc":"2588:23:87","nodeType":"YulFunctionCall","src":"2588:23:87"},"variables":[{"name":"value","nativeSrc":"2579:5:87","nodeType":"YulTypedName","src":"2579:5:87","type":""}]},{"body":{"nativeSrc":"2664:16:87","nodeType":"YulBlock","src":"2664:16:87","statements":[{"expression":{"arguments":[{"kind":"number","nativeSrc":"2673:1:87","nodeType":"YulLiteral","src":"2673:1:87","type":"","value":"0"},{"kind":"number","nativeSrc":"2676:1:87","nodeType":"YulLiteral","src":"2676:1:87","type":"","value":"0"}],"functionName":{"name":"revert","nativeSrc":"2666:6:87","nodeType":"YulIdentifier","src":"2666:6:87"},"nativeSrc":"2666:12:87","nodeType":"YulFunctionCall","src":"2666:12:87"},"nativeSrc":"2666:12:87","nodeType":"YulExpressionStatement","src":"2666:12:87"}]},"condition":{"arguments":[{"arguments":[{"name":"value","nativeSrc":"2633:5:87","nodeType":"YulIdentifier","src":"2633:5:87"},{"arguments":[{"arguments":[{"name":"value","nativeSrc":"2654:5:87","nodeType":"YulIdentifier","src":"2654:5:87"}],"functionName":{"name":"iszero","nativeSrc":"2647:6:87","nodeType":"YulIdentifier","src":"2647:6:87"},"nativeSrc":"2647:13:87","nodeType":"YulFunctionCall","src":"2647:13:87"}],"functionName":{"name":"iszero","nativeSrc":"2640:6:87","nodeType":"YulIdentifier","src":"2640:6:87"},"nativeSrc":"2640:21:87","nodeType":"YulFunctionCall","src":"2640:21:87"}],"functionName":{"name":"eq","nativeSrc":"2630:2:87","nodeType":"YulIdentifier","src":"2630:2:87"},"nativeSrc":"2630:32:87","nodeType":"YulFunctionCall","src":"2630:32:87"}],"functionName":{"name":"iszero","nativeSrc":"2623:6:87","nodeType":"YulIdentifier","src":"2623:6:87"},"nativeSrc":"2623:40:87","nodeType":"YulFunctionCall","src":"2623:40:87"},"nativeSrc":"2620:60:87","nodeType":"YulIf","src":"2620:60:87"},{"nativeSrc":"2689:15:87","nodeType":"YulAssignment","src":"2689:15:87","value":{"name":"value","nativeSrc":"2699:5:87","nodeType":"YulIdentifier","src":"2699:5:87"},"variableNames":[{"name":"value0","nativeSrc":"2689:6:87","nodeType":"YulIdentifier","src":"2689:6:87"}]}]},"name":"abi_decode_tuple_t_bool","nativeSrc":"2437:273:87","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nativeSrc":"2470:9:87","nodeType":"YulTypedName","src":"2470:9:87","type":""},{"name":"dataEnd","nativeSrc":"2481:7:87","nodeType":"YulTypedName","src":"2481:7:87","type":""}],"returnVariables":[{"name":"value0","nativeSrc":"2493:6:87","nodeType":"YulTypedName","src":"2493:6:87","type":""}],"src":"2437:273:87"},{"body":{"nativeSrc":"2816:76:87","nodeType":"YulBlock","src":"2816:76:87","statements":[{"nativeSrc":"2826:26:87","nodeType":"YulAssignment","src":"2826:26:87","value":{"arguments":[{"name":"headStart","nativeSrc":"2838:9:87","nodeType":"YulIdentifier","src":"2838:9:87"},{"kind":"number","nativeSrc":"2849:2:87","nodeType":"YulLiteral","src":"2849:2:87","type":"","value":"32"}],"functionName":{"name":"add","nativeSrc":"2834:3:87","nodeType":"YulIdentifier","src":"2834:3:87"},"nativeSrc":"2834:18:87","nodeType":"YulFunctionCall","src":"2834:18:87"},"variableNames":[{"name":"tail","nativeSrc":"2826:4:87","nodeType":"YulIdentifier","src":"2826:4:87"}]},{"expression":{"arguments":[{"name":"headStart","nativeSrc":"2868:9:87","nodeType":"YulIdentifier","src":"2868:9:87"},{"name":"value0","nativeSrc":"2879:6:87","nodeType":"YulIdentifier","src":"2879:6:87"}],"functionName":{"name":"mstore","nativeSrc":"2861:6:87","nodeType":"YulIdentifier","src":"2861:6:87"},"nativeSrc":"2861:25:87","nodeType":"YulFunctionCall","src":"2861:25:87"},"nativeSrc":"2861:25:87","nodeType":"YulExpressionStatement","src":"2861:25:87"}]},"name":"abi_encode_tuple_t_bytes32__to_t_bytes32__fromStack_reversed","nativeSrc":"2715:177:87","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nativeSrc":"2785:9:87","nodeType":"YulTypedName","src":"2785:9:87","type":""},{"name":"value0","nativeSrc":"2796:6:87","nodeType":"YulTypedName","src":"2796:6:87","type":""}],"returnVariables":[{"name":"tail","nativeSrc":"2807:4:87","nodeType":"YulTypedName","src":"2807:4:87","type":""}],"src":"2715:177:87"},{"body":{"nativeSrc":"2998:102:87","nodeType":"YulBlock","src":"2998:102:87","statements":[{"nativeSrc":"3008:26:87","nodeType":"YulAssignment","src":"3008:26:87","value":{"arguments":[{"name":"headStart","nativeSrc":"3020:9:87","nodeType":"YulIdentifier","src":"3020:9:87"},{"kind":"number","nativeSrc":"3031:2:87","nodeType":"YulLiteral","src":"3031:2:87","type":"","value":"32"}],"functionName":{"name":"add","nativeSrc":"3016:3:87","nodeType":"YulIdentifier","src":"3016:3:87"},"nativeSrc":"3016:18:87","nodeType":"YulFunctionCall","src":"3016:18:87"},"variableNames":[{"name":"tail","nativeSrc":"3008:4:87","nodeType":"YulIdentifier","src":"3008:4:87"}]},{"expression":{"arguments":[{"name":"headStart","nativeSrc":"3050:9:87","nodeType":"YulIdentifier","src":"3050:9:87"},{"arguments":[{"name":"value0","nativeSrc":"3065:6:87","nodeType":"YulIdentifier","src":"3065:6:87"},{"arguments":[{"arguments":[{"kind":"number","nativeSrc":"3081:3:87","nodeType":"YulLiteral","src":"3081:3:87","type":"","value":"160"},{"kind":"number","nativeSrc":"3086:1:87","nodeType":"YulLiteral","src":"3086:1:87","type":"","value":"1"}],"functionName":{"name":"shl","nativeSrc":"3077:3:87","nodeType":"YulIdentifier","src":"3077:3:87"},"nativeSrc":"3077:11:87","nodeType":"YulFunctionCall","src":"3077:11:87"},{"kind":"number","nativeSrc":"3090:1:87","nodeType":"YulLiteral","src":"3090:1:87","type":"","value":"1"}],"functionName":{"name":"sub","nativeSrc":"3073:3:87","nodeType":"YulIdentifier","src":"3073:3:87"},"nativeSrc":"3073:19:87","nodeType":"YulFunctionCall","src":"3073:19:87"}],"functionName":{"name":"and","nativeSrc":"3061:3:87","nodeType":"YulIdentifier","src":"3061:3:87"},"nativeSrc":"3061:32:87","nodeType":"YulFunctionCall","src":"3061:32:87"}],"functionName":{"name":"mstore","nativeSrc":"3043:6:87","nodeType":"YulIdentifier","src":"3043:6:87"},"nativeSrc":"3043:51:87","nodeType":"YulFunctionCall","src":"3043:51:87"},"nativeSrc":"3043:51:87","nodeType":"YulExpressionStatement","src":"3043:51:87"}]},"name":"abi_encode_tuple_t_address__to_t_address__fromStack_reversed","nativeSrc":"2897:203:87","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nativeSrc":"2967:9:87","nodeType":"YulTypedName","src":"2967:9:87","type":""},{"name":"value0","nativeSrc":"2978:6:87","nodeType":"YulTypedName","src":"2978:6:87","type":""}],"returnVariables":[{"name":"tail","nativeSrc":"2989:4:87","nodeType":"YulTypedName","src":"2989:4:87","type":""}],"src":"2897:203:87"},{"body":{"nativeSrc":"3184:241:87","nodeType":"YulBlock","src":"3184:241:87","statements":[{"body":{"nativeSrc":"3230:16:87","nodeType":"YulBlock","src":"3230:16:87","statements":[{"expression":{"arguments":[{"kind":"number","nativeSrc":"3239:1:87","nodeType":"YulLiteral","src":"3239:1:87","type":"","value":"0"},{"kind":"number","nativeSrc":"3242:1:87","nodeType":"YulLiteral","src":"3242:1:87","type":"","value":"0"}],"functionName":{"name":"revert","nativeSrc":"3232:6:87","nodeType":"YulIdentifier","src":"3232:6:87"},"nativeSrc":"3232:12:87","nodeType":"YulFunctionCall","src":"3232:12:87"},"nativeSrc":"3232:12:87","nodeType":"YulExpressionStatement","src":"3232:12:87"}]},"condition":{"arguments":[{"arguments":[{"name":"dataEnd","nativeSrc":"3205:7:87","nodeType":"YulIdentifier","src":"3205:7:87"},{"name":"headStart","nativeSrc":"3214:9:87","nodeType":"YulIdentifier","src":"3214:9:87"}],"functionName":{"name":"sub","nativeSrc":"3201:3:87","nodeType":"YulIdentifier","src":"3201:3:87"},"nativeSrc":"3201:23:87","nodeType":"YulFunctionCall","src":"3201:23:87"},{"kind":"number","nativeSrc":"3226:2:87","nodeType":"YulLiteral","src":"3226:2:87","type":"","value":"32"}],"functionName":{"name":"slt","nativeSrc":"3197:3:87","nodeType":"YulIdentifier","src":"3197:3:87"},"nativeSrc":"3197:32:87","nodeType":"YulFunctionCall","src":"3197:32:87"},"nativeSrc":"3194:52:87","nodeType":"YulIf","src":"3194:52:87"},{"nativeSrc":"3255:37:87","nodeType":"YulVariableDeclaration","src":"3255:37:87","value":{"arguments":[{"name":"headStart","nativeSrc":"3282:9:87","nodeType":"YulIdentifier","src":"3282:9:87"}],"functionName":{"name":"calldataload","nativeSrc":"3269:12:87","nodeType":"YulIdentifier","src":"3269:12:87"},"nativeSrc":"3269:23:87","nodeType":"YulFunctionCall","src":"3269:23:87"},"variables":[{"name":"offset","nativeSrc":"3259:6:87","nodeType":"YulTypedName","src":"3259:6:87","type":""}]},{"body":{"nativeSrc":"3335:16:87","nodeType":"YulBlock","src":"3335:16:87","statements":[{"expression":{"arguments":[{"kind":"number","nativeSrc":"3344:1:87","nodeType":"YulLiteral","src":"3344:1:87","type":"","value":"0"},{"kind":"number","nativeSrc":"3347:1:87","nodeType":"YulLiteral","src":"3347:1:87","type":"","value":"0"}],"functionName":{"name":"revert","nativeSrc":"3337:6:87","nodeType":"YulIdentifier","src":"3337:6:87"},"nativeSrc":"3337:12:87","nodeType":"YulFunctionCall","src":"3337:12:87"},"nativeSrc":"3337:12:87","nodeType":"YulExpressionStatement","src":"3337:12:87"}]},"condition":{"arguments":[{"name":"offset","nativeSrc":"3307:6:87","nodeType":"YulIdentifier","src":"3307:6:87"},{"kind":"number","nativeSrc":"3315:18:87","nodeType":"YulLiteral","src":"3315:18:87","type":"","value":"0xffffffffffffffff"}],"functionName":{"name":"gt","nativeSrc":"3304:2:87","nodeType":"YulIdentifier","src":"3304:2:87"},"nativeSrc":"3304:30:87","nodeType":"YulFunctionCall","src":"3304:30:87"},"nativeSrc":"3301:50:87","nodeType":"YulIf","src":"3301:50:87"},{"nativeSrc":"3360:59:87","nodeType":"YulAssignment","src":"3360:59:87","value":{"arguments":[{"arguments":[{"name":"headStart","nativeSrc":"3391:9:87","nodeType":"YulIdentifier","src":"3391:9:87"},{"name":"offset","nativeSrc":"3402:6:87","nodeType":"YulIdentifier","src":"3402:6:87"}],"functionName":{"name":"add","nativeSrc":"3387:3:87","nodeType":"YulIdentifier","src":"3387:3:87"},"nativeSrc":"3387:22:87","nodeType":"YulFunctionCall","src":"3387:22:87"},{"name":"dataEnd","nativeSrc":"3411:7:87","nodeType":"YulIdentifier","src":"3411:7:87"}],"functionName":{"name":"abi_decode_bytes","nativeSrc":"3370:16:87","nodeType":"YulIdentifier","src":"3370:16:87"},"nativeSrc":"3370:49:87","nodeType":"YulFunctionCall","src":"3370:49:87"},"variableNames":[{"name":"value0","nativeSrc":"3360:6:87","nodeType":"YulIdentifier","src":"3360:6:87"}]}]},"name":"abi_decode_tuple_t_bytes_memory_ptr","nativeSrc":"3105:320:87","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nativeSrc":"3150:9:87","nodeType":"YulTypedName","src":"3150:9:87","type":""},{"name":"dataEnd","nativeSrc":"3161:7:87","nodeType":"YulTypedName","src":"3161:7:87","type":""}],"returnVariables":[{"name":"value0","nativeSrc":"3173:6:87","nodeType":"YulTypedName","src":"3173:6:87","type":""}],"src":"3105:320:87"},{"body":{"nativeSrc":"3511:103:87","nodeType":"YulBlock","src":"3511:103:87","statements":[{"body":{"nativeSrc":"3557:16:87","nodeType":"YulBlock","src":"3557:16:87","statements":[{"expression":{"arguments":[{"kind":"number","nativeSrc":"3566:1:87","nodeType":"YulLiteral","src":"3566:1:87","type":"","value":"0"},{"kind":"number","nativeSrc":"3569:1:87","nodeType":"YulLiteral","src":"3569:1:87","type":"","value":"0"}],"functionName":{"name":"revert","nativeSrc":"3559:6:87","nodeType":"YulIdentifier","src":"3559:6:87"},"nativeSrc":"3559:12:87","nodeType":"YulFunctionCall","src":"3559:12:87"},"nativeSrc":"3559:12:87","nodeType":"YulExpressionStatement","src":"3559:12:87"}]},"condition":{"arguments":[{"arguments":[{"name":"dataEnd","nativeSrc":"3532:7:87","nodeType":"YulIdentifier","src":"3532:7:87"},{"name":"headStart","nativeSrc":"3541:9:87","nodeType":"YulIdentifier","src":"3541:9:87"}],"functionName":{"name":"sub","nativeSrc":"3528:3:87","nodeType":"YulIdentifier","src":"3528:3:87"},"nativeSrc":"3528:23:87","nodeType":"YulFunctionCall","src":"3528:23:87"},{"kind":"number","nativeSrc":"3553:2:87","nodeType":"YulLiteral","src":"3553:2:87","type":"","value":"32"}],"functionName":{"name":"slt","nativeSrc":"3524:3:87","nodeType":"YulIdentifier","src":"3524:3:87"},"nativeSrc":"3524:32:87","nodeType":"YulFunctionCall","src":"3524:32:87"},"nativeSrc":"3521:52:87","nodeType":"YulIf","src":"3521:52:87"},{"nativeSrc":"3582:26:87","nodeType":"YulAssignment","src":"3582:26:87","value":{"arguments":[{"name":"headStart","nativeSrc":"3598:9:87","nodeType":"YulIdentifier","src":"3598:9:87"}],"functionName":{"name":"mload","nativeSrc":"3592:5:87","nodeType":"YulIdentifier","src":"3592:5:87"},"nativeSrc":"3592:16:87","nodeType":"YulFunctionCall","src":"3592:16:87"},"variableNames":[{"name":"value0","nativeSrc":"3582:6:87","nodeType":"YulIdentifier","src":"3582:6:87"}]}]},"name":"abi_decode_tuple_t_uint256_fromMemory","nativeSrc":"3430:184:87","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nativeSrc":"3477:9:87","nodeType":"YulTypedName","src":"3477:9:87","type":""},{"name":"dataEnd","nativeSrc":"3488:7:87","nodeType":"YulTypedName","src":"3488:7:87","type":""}],"returnVariables":[{"name":"value0","nativeSrc":"3500:6:87","nodeType":"YulTypedName","src":"3500:6:87","type":""}],"src":"3430:184:87"}]},"contents":"{\n    { }\n    function panic_error_0x41()\n    {\n        mstore(0, shl(224, 0x4e487b71))\n        mstore(4, 0x41)\n        revert(0, 0x24)\n    }\n    function abi_decode_bytes(offset, end) -> array\n    {\n        if iszero(slt(add(offset, 0x1f), end)) { revert(0, 0) }\n        let length := calldataload(offset)\n        if gt(length, 0xffffffffffffffff) { panic_error_0x41() }\n        let memPtr := mload(64)\n        let newFreePtr := add(memPtr, and(add(and(add(length, 0x1f), not(31)), 63), not(31)))\n        if or(gt(newFreePtr, 0xffffffffffffffff), lt(newFreePtr, memPtr)) { panic_error_0x41() }\n        mstore(64, newFreePtr)\n        mstore(memPtr, length)\n        if gt(add(add(offset, length), 0x20), end) { revert(0, 0) }\n        calldatacopy(add(memPtr, 0x20), add(offset, 0x20), length)\n        mstore(add(add(memPtr, length), 0x20), 0)\n        array := memPtr\n    }\n    function abi_decode_tuple_t_uint8t_bytes_memory_ptr(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, 0xff))) { revert(0, 0) }\n        value0 := value\n        let offset := calldataload(add(headStart, 32))\n        if gt(offset, 0xffffffffffffffff) { revert(0, 0) }\n        value1 := abi_decode_bytes(add(headStart, offset), dataEnd)\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        let length := mload(value0)\n        mstore(add(headStart, 32), length)\n        mcopy(add(headStart, 64), add(value0, 32), length)\n        mstore(add(add(headStart, length), 64), 0)\n        tail := add(add(headStart, and(add(length, 31), not(31))), 64)\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_address(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, sub(shl(160, 1), 1)))) { revert(0, 0) }\n        value0 := value\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_decode_tuple_t_bool(headStart, dataEnd) -> value0\n    {\n        if slt(sub(dataEnd, headStart), 32) { revert(0, 0) }\n        let value := calldataload(headStart)\n        if iszero(eq(value, iszero(iszero(value)))) { revert(0, 0) }\n        value0 := value\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_address__to_t_address__fromStack_reversed(headStart, value0) -> tail\n    {\n        tail := add(headStart, 32)\n        mstore(headStart, and(value0, sub(shl(160, 1), 1)))\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        if gt(offset, 0xffffffffffffffff) { revert(0, 0) }\n        value0 := abi_decode_bytes(add(headStart, offset), 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}","id":87,"language":"Yul","name":"#utility.yul"}],"immutableReferences":{"23226":[{"length":32,"start":457},{"length":32,"start":530},{"length":32,"start":606},{"length":32,"start":730}],"23232":[{"length":32,"start":279}],"23235":[{"length":32,"start":330},{"length":32,"start":874}]},"linkReferences":{},"object":"608060405234801561000f575f5ffd5b506004361061009b575f3560e01c80639c4667a2116100635780639c4667a2146101395780639cd4712814610184578063b6b55f25146100c8578063ce96cb7714610197578063f3e0ffbf146101aa575f5ffd5b80630981b1c21461009f5780632e1a7d4d146100c8578063402d267d146100dd5780635a117456146100ff5780635b9a4c3514610112575b5f5ffd5b6100b26100ad366004610474565b6101bd565b6040516100bf91906104c6565b60405180910390f35b6100db6100d63660046104fb565b610208565b005b6100f16100eb366004610512565b505f1990565b6040519081526020016100bf565b6100db61010d36600461053f565b610254565b6100f17f000000000000000000000000000000000000000000000000000000000000000081565b61016c610147366004610512565b507f000000000000000000000000000000000000000000000000000000000000000090565b6040516001600160a01b0390911681526020016100bf565b6100db61019236600461055e565b6102d0565b6100f16101a5366004610512565b610339565b6100f16101b8366004610512565b610349565b60606001600160a01b037f000000000000000000000000000000000000000000000000000000000000000016300361009b57604051632abf118b60e21b815260040160405180910390fd5b6001600160a01b037f000000000000000000000000000000000000000000000000000000000000000016300361025157604051632abf118b60e21b815260040160405180910390fd5b50565b6001600160a01b037f000000000000000000000000000000000000000000000000000000000000000016300361029d57604051632abf118b60e21b815260040160405180910390fd5b801580156102b257506102af30610349565b15155b15610251576040516342a176d160e11b815260040160405180910390fd5b6001600160a01b037f000000000000000000000000000000000000000000000000000000000000000016300361031957604051632abf118b60e21b815260040160405180910390fd5b805115610251576040516350701b6160e01b815260040160405180910390fd5b5f61034382610349565b92915050565b6040516370a0823160e01b81526001600160a01b0382811660048301525f917f0000000000000000000000000000000000000000000000000000000000000000909116906370a0823190602401602060405180830381865afa1580156103b1573d5f5f3e3d5ffd5b505050506040513d601f19601f820116820180604052508101906103439190610598565b634e487b7160e01b5f52604160045260245ffd5b5f82601f8301126103f8575f5ffd5b813567ffffffffffffffff811115610412576104126103d5565b604051601f8201601f19908116603f0116810167ffffffffffffffff81118282101715610441576104416103d5565b604052818152838201602001851015610458575f5ffd5b816020850160208301375f918101602001919091529392505050565b5f5f60408385031215610485575f5ffd5b823560ff81168114610495575f5ffd5b9150602083013567ffffffffffffffff8111156104b0575f5ffd5b6104bc858286016103e9565b9150509250929050565b602081525f82518060208401528060208501604085015e5f604082850101526040601f19601f83011684010191505092915050565b5f6020828403121561050b575f5ffd5b5035919050565b5f60208284031215610522575f5ffd5b81356001600160a01b0381168114610538575f5ffd5b9392505050565b5f6020828403121561054f575f5ffd5b81358015158114610538575f5ffd5b5f6020828403121561056e575f5ffd5b813567ffffffffffffffff811115610584575f5ffd5b610590848285016103e9565b949350505050565b5f602082840312156105a8575f5ffd5b505191905056fea26469706673582212204bb7ca8908fb12a1ce9ee20d463fc4caaa1b0f114490bfeaa5835157ee53448d64736f6c634300081e0033","opcodes":"PUSH1 0x80 PUSH1 0x40 MSTORE CALLVALUE DUP1 ISZERO PUSH2 0xF JUMPI PUSH0 PUSH0 REVERT JUMPDEST POP PUSH1 0x4 CALLDATASIZE LT PUSH2 0x9B JUMPI PUSH0 CALLDATALOAD PUSH1 0xE0 SHR DUP1 PUSH4 0x9C4667A2 GT PUSH2 0x63 JUMPI DUP1 PUSH4 0x9C4667A2 EQ PUSH2 0x139 JUMPI DUP1 PUSH4 0x9CD47128 EQ PUSH2 0x184 JUMPI DUP1 PUSH4 0xB6B55F25 EQ PUSH2 0xC8 JUMPI DUP1 PUSH4 0xCE96CB77 EQ PUSH2 0x197 JUMPI DUP1 PUSH4 0xF3E0FFBF EQ PUSH2 0x1AA JUMPI PUSH0 PUSH0 REVERT JUMPDEST DUP1 PUSH4 0x981B1C2 EQ PUSH2 0x9F JUMPI DUP1 PUSH4 0x2E1A7D4D EQ PUSH2 0xC8 JUMPI DUP1 PUSH4 0x402D267D EQ PUSH2 0xDD JUMPI DUP1 PUSH4 0x5A117456 EQ PUSH2 0xFF JUMPI DUP1 PUSH4 0x5B9A4C35 EQ PUSH2 0x112 JUMPI JUMPDEST PUSH0 PUSH0 REVERT JUMPDEST PUSH2 0xB2 PUSH2 0xAD CALLDATASIZE PUSH1 0x4 PUSH2 0x474 JUMP JUMPDEST PUSH2 0x1BD JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0xBF SWAP2 SWAP1 PUSH2 0x4C6 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST PUSH2 0xDB PUSH2 0xD6 CALLDATASIZE PUSH1 0x4 PUSH2 0x4FB JUMP JUMPDEST PUSH2 0x208 JUMP JUMPDEST STOP JUMPDEST PUSH2 0xF1 PUSH2 0xEB CALLDATASIZE PUSH1 0x4 PUSH2 0x512 JUMP JUMPDEST POP PUSH0 NOT SWAP1 JUMP JUMPDEST PUSH1 0x40 MLOAD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH2 0xBF JUMP JUMPDEST PUSH2 0xDB PUSH2 0x10D CALLDATASIZE PUSH1 0x4 PUSH2 0x53F JUMP JUMPDEST PUSH2 0x254 JUMP JUMPDEST PUSH2 0xF1 PUSH32 0x0 DUP2 JUMP JUMPDEST PUSH2 0x16C PUSH2 0x147 CALLDATASIZE PUSH1 0x4 PUSH2 0x512 JUMP JUMPDEST POP PUSH32 0x0 SWAP1 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP1 SWAP2 AND DUP2 MSTORE PUSH1 0x20 ADD PUSH2 0xBF JUMP JUMPDEST PUSH2 0xDB PUSH2 0x192 CALLDATASIZE PUSH1 0x4 PUSH2 0x55E JUMP JUMPDEST PUSH2 0x2D0 JUMP JUMPDEST PUSH2 0xF1 PUSH2 0x1A5 CALLDATASIZE PUSH1 0x4 PUSH2 0x512 JUMP JUMPDEST PUSH2 0x339 JUMP JUMPDEST PUSH2 0xF1 PUSH2 0x1B8 CALLDATASIZE PUSH1 0x4 PUSH2 0x512 JUMP JUMPDEST PUSH2 0x349 JUMP JUMPDEST PUSH1 0x60 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB PUSH32 0x0 AND ADDRESS SUB PUSH2 0x9B JUMPI PUSH1 0x40 MLOAD PUSH4 0x2ABF118B PUSH1 0xE2 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB PUSH32 0x0 AND ADDRESS SUB PUSH2 0x251 JUMPI PUSH1 0x40 MLOAD PUSH4 0x2ABF118B PUSH1 0xE2 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST POP JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB PUSH32 0x0 AND ADDRESS SUB PUSH2 0x29D JUMPI PUSH1 0x40 MLOAD PUSH4 0x2ABF118B PUSH1 0xE2 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST DUP1 ISZERO DUP1 ISZERO PUSH2 0x2B2 JUMPI POP PUSH2 0x2AF ADDRESS PUSH2 0x349 JUMP JUMPDEST ISZERO ISZERO JUMPDEST ISZERO PUSH2 0x251 JUMPI PUSH1 0x40 MLOAD PUSH4 0x42A176D1 PUSH1 0xE1 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB PUSH32 0x0 AND ADDRESS SUB PUSH2 0x319 JUMPI PUSH1 0x40 MLOAD PUSH4 0x2ABF118B PUSH1 0xE2 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST DUP1 MLOAD ISZERO PUSH2 0x251 JUMPI PUSH1 0x40 MLOAD PUSH4 0x50701B61 PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH0 PUSH2 0x343 DUP3 PUSH2 0x349 JUMP JUMPDEST SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH4 0x70A08231 PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP3 DUP2 AND PUSH1 0x4 DUP4 ADD MSTORE PUSH0 SWAP2 PUSH32 0x0 SWAP1 SWAP2 AND SWAP1 PUSH4 0x70A08231 SWAP1 PUSH1 0x24 ADD PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x3B1 JUMPI RETURNDATASIZE PUSH0 PUSH0 RETURNDATACOPY RETURNDATASIZE PUSH0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP3 ADD DUP1 PUSH1 0x40 MSTORE POP DUP2 ADD SWAP1 PUSH2 0x343 SWAP2 SWAP1 PUSH2 0x598 JUMP JUMPDEST PUSH4 0x4E487B71 PUSH1 0xE0 SHL PUSH0 MSTORE PUSH1 0x41 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH0 REVERT JUMPDEST PUSH0 DUP3 PUSH1 0x1F DUP4 ADD SLT PUSH2 0x3F8 JUMPI PUSH0 PUSH0 REVERT JUMPDEST DUP2 CALLDATALOAD PUSH8 0xFFFFFFFFFFFFFFFF DUP2 GT ISZERO PUSH2 0x412 JUMPI PUSH2 0x412 PUSH2 0x3D5 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH1 0x1F DUP3 ADD PUSH1 0x1F NOT SWAP1 DUP2 AND PUSH1 0x3F ADD AND DUP2 ADD PUSH8 0xFFFFFFFFFFFFFFFF DUP2 GT DUP3 DUP3 LT OR ISZERO PUSH2 0x441 JUMPI PUSH2 0x441 PUSH2 0x3D5 JUMP JUMPDEST PUSH1 0x40 MSTORE DUP2 DUP2 MSTORE DUP4 DUP3 ADD PUSH1 0x20 ADD DUP6 LT ISZERO PUSH2 0x458 JUMPI PUSH0 PUSH0 REVERT JUMPDEST DUP2 PUSH1 0x20 DUP6 ADD PUSH1 0x20 DUP4 ADD CALLDATACOPY PUSH0 SWAP2 DUP2 ADD PUSH1 0x20 ADD SWAP2 SWAP1 SWAP2 MSTORE SWAP4 SWAP3 POP POP POP JUMP JUMPDEST PUSH0 PUSH0 PUSH1 0x40 DUP4 DUP6 SUB SLT ISZERO PUSH2 0x485 JUMPI PUSH0 PUSH0 REVERT JUMPDEST DUP3 CALLDATALOAD PUSH1 0xFF DUP2 AND DUP2 EQ PUSH2 0x495 JUMPI PUSH0 PUSH0 REVERT JUMPDEST SWAP2 POP PUSH1 0x20 DUP4 ADD CALLDATALOAD PUSH8 0xFFFFFFFFFFFFFFFF DUP2 GT ISZERO PUSH2 0x4B0 JUMPI PUSH0 PUSH0 REVERT JUMPDEST PUSH2 0x4BC DUP6 DUP3 DUP7 ADD PUSH2 0x3E9 JUMP JUMPDEST SWAP2 POP POP SWAP3 POP SWAP3 SWAP1 POP JUMP JUMPDEST PUSH1 0x20 DUP2 MSTORE PUSH0 DUP3 MLOAD DUP1 PUSH1 0x20 DUP5 ADD MSTORE DUP1 PUSH1 0x20 DUP6 ADD PUSH1 0x40 DUP6 ADD MCOPY PUSH0 PUSH1 0x40 DUP3 DUP6 ADD ADD MSTORE PUSH1 0x40 PUSH1 0x1F NOT PUSH1 0x1F DUP4 ADD AND DUP5 ADD ADD SWAP2 POP POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x50B JUMPI PUSH0 PUSH0 REVERT JUMPDEST POP CALLDATALOAD SWAP2 SWAP1 POP JUMP JUMPDEST PUSH0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x522 JUMPI PUSH0 PUSH0 REVERT JUMPDEST DUP2 CALLDATALOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 AND DUP2 EQ PUSH2 0x538 JUMPI PUSH0 PUSH0 REVERT JUMPDEST SWAP4 SWAP3 POP POP POP JUMP JUMPDEST PUSH0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x54F JUMPI PUSH0 PUSH0 REVERT JUMPDEST DUP2 CALLDATALOAD DUP1 ISZERO ISZERO DUP2 EQ PUSH2 0x538 JUMPI PUSH0 PUSH0 REVERT JUMPDEST PUSH0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x56E JUMPI PUSH0 PUSH0 REVERT JUMPDEST DUP2 CALLDATALOAD PUSH8 0xFFFFFFFFFFFFFFFF DUP2 GT ISZERO PUSH2 0x584 JUMPI PUSH0 PUSH0 REVERT JUMPDEST PUSH2 0x590 DUP5 DUP3 DUP6 ADD PUSH2 0x3E9 JUMP JUMPDEST SWAP5 SWAP4 POP POP POP POP JUMP JUMPDEST PUSH0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x5A8 JUMPI PUSH0 PUSH0 REVERT JUMPDEST POP MLOAD SWAP2 SWAP1 POP JUMP INVALID LOG2 PUSH5 0x6970667358 0x22 SLT KECCAK256 0x4B 0xB7 0xCA DUP10 ADDMOD EXTSTATICCALL SLT LOG1 0xCE SWAP15 0xE2 0xD CHAINID EXTCODEHASH 0xC4 0xCA 0xAA SHL 0xF GT PREVRANDAO SWAP1 0xBF 0xEA 0xA5 DUP4 MLOAD JUMPI RETURNCONTRACT 0x53 PREVRANDAO DUP14 PUSH5 0x736F6C6343 STOP ADDMOD 0x1E STOP CALLER ","sourceMap":"483:2262:80:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2560:183;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;2290:74;;;;;;:::i;:::-;;:::i;:::-;;1761:125;;;;;;:::i;:::-;-1:-1:-1;;;1864:17:80;1761:125;;;;2401:25:87;;;2389:2;2374:18;1761:125:80;2255:177:87;1393:165:80;;;;;;:::i;:::-;;:::i;587:81::-;;;;;1924:104;;;;;;:::i;:::-;-1:-1:-1;2016:6:80;;1924:104;;;;-1:-1:-1;;;;;3061:32:87;;;3043:51;;3031:2;3016:18;1924:104:80;2897:203:87;1211:144:80;;;;;;:::i;:::-;;:::i;1596:127::-;;;;;;:::i;:::-;;:::i;2066:139::-;;;;;;:::i;:::-;;:::i;2560:183::-;2645:12;-1:-1:-1;;;;;885:6:80;868:23;876:4;868:23;864:72;;900:36;;-1:-1:-1;;;900:36:80;;;;;;;;;;;2290:74;-1:-1:-1;;;;;885:6:80;868:23;876:4;868:23;864:72;;900:36;;-1:-1:-1;;;900:36:80;;;;;;;;;;;864:72;2290:74;:::o;1393:165::-;-1:-1:-1;;;;;885:6:80;868:23;876:4;868:23;864:72;;900:36;;-1:-1:-1;;;900:36:80;;;;;;;;;;;864:72;1476:5:::1;1475:6;:41;;;;;1485:26;1505:4;1485:11;:26::i;:::-;:31:::0;::::1;1475:41;1471:82;;;1525:28;;-1:-1:-1::0;;;1525:28:80::1;;;;;;;;;;;1211:144:::0;-1:-1:-1;;;;;885:6:80;868:23;876:4;868:23;864:72;;900:36;;-1:-1:-1;;;900:36:80;;;;;;;;;;;864:72;1301:15;;:20;1297:53:::1;;1330:20;;-1:-1:-1::0;;;1330:20:80::1;;;;;;;;;;;1596:127:::0;1674:7;1696:22;1708:9;1696:11;:22::i;:::-;1689:29;1596:127;-1:-1:-1;;1596:127:80:o;2066:139::-;2173:27;;-1:-1:-1;;;2173:27:80;;-1:-1:-1;;;;;3061:32:87;;;2173:27:80;;;3043:51:87;2144:14:80;;2173:6;:16;;;;;;3016:18:87;;2173:27:80;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;14:127:87:-;75:10;70:3;66:20;63:1;56:31;106:4;103:1;96:15;130:4;127:1;120:15;146:725;188:5;241:3;234:4;226:6;222:17;218:27;208:55;;259:1;256;249:12;208:55;299:6;286:20;329:18;321:6;318:30;315:56;;;351:18;;:::i;:::-;400:2;394:9;492:2;454:17;;-1:-1:-1;;450:31:87;;;483:2;446:40;442:54;430:67;;527:18;512:34;;548:22;;;509:62;506:88;;;574:18;;:::i;:::-;610:2;603:22;634;;;675:19;;;696:4;671:30;668:39;-1:-1:-1;665:59:87;;;720:1;717;710:12;665:59;784:6;777:4;769:6;765:17;758:4;750:6;746:17;733:58;839:1;811:19;;;832:4;807:30;800:41;;;;815:6;146:725;-1:-1:-1;;;146:725:87:o;876:477::-;951:6;959;1012:2;1000:9;991:7;987:23;983:32;980:52;;;1028:1;1025;1018:12;980:52;1067:9;1054:23;1117:4;1110:5;1106:16;1099:5;1096:27;1086:55;;1137:1;1134;1127:12;1086:55;1160:5;-1:-1:-1;1216:2:87;1201:18;;1188:32;1243:18;1232:30;;1229:50;;;1275:1;1272;1265:12;1229:50;1298:49;1339:7;1330:6;1319:9;1315:22;1298:49;:::i;:::-;1288:59;;;876:477;;;;;:::o;1358:416::-;1505:2;1494:9;1487:21;1468:4;1537:6;1531:13;1580:6;1575:2;1564:9;1560:18;1553:34;1639:6;1634:2;1626:6;1622:15;1617:2;1606:9;1602:18;1596:50;1695:1;1690:2;1681:6;1670:9;1666:22;1662:31;1655:42;1765:2;1758;1754:7;1749:2;1741:6;1737:15;1733:29;1722:9;1718:45;1714:54;1706:62;;;1358:416;;;;:::o;1779:180::-;1838:6;1891:2;1879:9;1870:7;1866:23;1862:32;1859:52;;;1907:1;1904;1897:12;1859:52;-1:-1:-1;1930:23:87;;1779:180;-1:-1:-1;1779:180:87:o;1964:286::-;2023:6;2076:2;2064:9;2055:7;2051:23;2047:32;2044:52;;;2092:1;2089;2082:12;2044:52;2118:23;;-1:-1:-1;;;;;2170:31:87;;2160:42;;2150:70;;2216:1;2213;2206:12;2150:70;2239:5;1964:286;-1:-1:-1;;;1964:286:87:o;2437:273::-;2493:6;2546:2;2534:9;2525:7;2521:23;2517:32;2514:52;;;2562:1;2559;2552:12;2514:52;2601:9;2588:23;2654:5;2647:13;2640:21;2633:5;2630:32;2620:60;;2676:1;2673;2666:12;3105:320;3173:6;3226:2;3214:9;3205:7;3201:23;3197:32;3194:52;;;3242:1;3239;3232:12;3194:52;3282:9;3269:23;3315:18;3307:6;3304:30;3301:50;;;3347:1;3344;3337:12;3301:50;3370:49;3411:7;3402:6;3391:9;3387:22;3370:49;:::i;:::-;3360:59;3105:320;-1:-1:-1;;;;3105:320:87:o;3430:184::-;3500:6;3553:2;3541:9;3532:7;3528:23;3524:32;3521:52;;;3569:1;3566;3559:12;3521:52;-1:-1:-1;3592:16:87;;3430:184;-1:-1:-1;3430:184:87:o"},"methodIdentifiers":{"asset(address)":"9c4667a2","connect(bytes)":"9cd47128","deposit(uint256)":"b6b55f25","disconnect(bool)":"5a117456","forwardEntryPoint(uint8,bytes)":"0981b1c2","maxDeposit(address)":"402d267d","maxWithdraw(address)":"ce96cb77","storageSlot()":"5b9a4c35","totalAssets(address)":"f3e0ffbf","withdraw(uint256)":"2e1a7d4d"}},"metadata":"{\"compiler\":{\"version\":\"0.8.30+commit.73712a01\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"inputs\":[{\"internalType\":\"contract IERC20Metadata\",\"name\":\"asset_\",\"type\":\"address\"}],\"stateMutability\":\"nonpayable\",\"type\":\"constructor\"},{\"inputs\":[],\"name\":\"CanBeCalledOnlyThroughDelegateCall\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"CannotDisconnectWithAssets\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"NoExtraDataAllowed\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"name\":\"asset\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes\",\"name\":\"initData\",\"type\":\"bytes\"}],\"name\":\"connect\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"assets\",\"type\":\"uint256\"}],\"name\":\"deposit\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bool\",\"name\":\"force\",\"type\":\"bool\"}],\"name\":\"disconnect\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint8\",\"name\":\"\",\"type\":\"uint8\"},{\"internalType\":\"bytes\",\"name\":\"\",\"type\":\"bytes\"}],\"name\":\"forwardEntryPoint\",\"outputs\":[{\"internalType\":\"bytes\",\"name\":\"\",\"type\":\"bytes\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"name\":\"maxDeposit\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"contract_\",\"type\":\"address\"}],\"name\":\"maxWithdraw\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"storageSlot\",\"outputs\":[{\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"contract_\",\"type\":\"address\"}],\"name\":\"totalAssets\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"assets\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"assets\",\"type\":\"uint256\"}],\"name\":\"withdraw\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"}],\"devdoc\":{\"author\":\"Ensuro\",\"custom:security-contact\":\"security@ensuro.co\",\"details\":\"Strategy that keeps the funds idle, in vault's asset(), without generating any yield.\",\"kind\":\"dev\",\"methods\":{\"asset(address)\":{\"details\":\"The address of the underlying token used for accounting, depositing, and withdrawing. It must be the same      as `IERC4626(contract_).asset()` when dealing with vaults.\",\"params\":{\"contract_\":\"The address of the vault contract that owns the assets.\"}},\"connect(bytes)\":{\"details\":\"Called when the strategy is plugged into the vault. Initializes the strategy storage and can do validations\",\"params\":{\"initData\":\"Initialization data for the strategy. Must be parsed by the strategy, since the format is                 strategy specific\"}},\"constructor\":{\"details\":\"Constructor of the strategy\",\"params\":{\"asset_\":\"The address of the underlying token used for accounting, depositing, and withdrawing.\"}},\"deposit(uint256)\":{\"details\":\"Deposits a given amount of assets into the strategy. It MUST revert if it can't deposit the specified amount.      It assumes the assets are already in the contract (owned by address(this)).\",\"params\":{\"assets\":\"The amount of assets to deposit. Should be <= maxDeposit.\"}},\"disconnect(bool)\":{\"details\":\"Called when the strategy is un-plugged from the vault. Should revert if there are still assets in the      strategy, unless force==true.\",\"params\":{\"force\":\"If true, disconnect should not fail if assets remain in the strategy. Otherwise, disconnect              MUST fail if totalAssets() != 0.\"}},\"forwardEntryPoint(uint8,bytes)\":{\"details\":\"Receives an external call to execute a custom method of action in the strategy. Can be used for harvesting      rewards or other tasks. It's called with delegatecall from the calling vault. The calling vault SHOULD      do the access control validation, since the strategy normally won't do it.\",\"params\":{\"method\":\"An id of the method or action to call/execute. It's recommended to define an enum and convert the               the uint8 value into the enum.\",\"params\":\"Params for the method or action. Parsed by the strategy, it might differ from one or other method.\"}},\"maxDeposit(address)\":{\"details\":\"Returns the max amount that can be deposited into the strategy.\",\"params\":{\"contract_\":\"The address of the vault contract that owns the assets and where the strategy is plugged\"}},\"maxWithdraw(address)\":{\"details\":\"Returns the max amount that can be withdrawn from the strategy.\",\"params\":{\"contract_\":\"The address of the vault contract that owns the assets and where the strategy is plugged\"}},\"totalAssets(address)\":{\"details\":\"Returns the number of assets under management of the investment strategy for a given contract.\",\"params\":{\"contract_\":\"The address of the vault contract that owns the assets and where the strategy is plugged\"}},\"withdraw(uint256)\":{\"details\":\"Withdraws a given amount of assets from the strategy. It MUST revert if it can't withdraw the specified amount.      Leaves the withdrawn assets in the contract (owned by address(this)).\",\"params\":{\"assets\":\"The amount of assets to withdraw. Should be <= maxWithdraw.\"}}},\"stateVariables\":{\"storageSlot\":{\"details\":\"Returns the slot where the data of the strategy can be stored.       Typically it would return `InvestStrategyClient.makeStorageSlot(<strategyAddress>)`\"}},\"title\":\"IdleInvestStrategy\",\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{},\"version\":1}},\"settings\":{\"compilationTarget\":{\"contracts/strategies/IdleInvestStrategy.sol\":\"IdleInvestStrategy\"},\"evmVersion\":\"prague\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"enabled\":true,\"runs\":200},\"remappings\":[]},\"sources\":{\"@openzeppelin/contracts/interfaces/IERC20Metadata.sol\":{\"keccak256\":\"0xd735962e3d6660884153ba8a972b5f100dde4c482f2ff1c525ba7fdefb154cbd\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://5a264d17b093f585844b0d977e9f60555b8c8d6513b304fde863cdf652a0d336\",\"dweb:/ipfs/QmWXfaJisjVnrjTUjZGryZpMob9wKivvtbodLS3PTc1ttq\"]},\"@openzeppelin/contracts/token/ERC20/IERC20.sol\":{\"keccak256\":\"0x74ed01eb66b923d0d0cfe3be84604ac04b76482a55f9dd655e1ef4d367f95bc2\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://5282825a626cfe924e504274b864a652b0023591fa66f06a067b25b51ba9b303\",\"dweb:/ipfs/QmeCfPykghhMc81VJTrHTC7sF6CRvaA1FXVq2pJhwYp1dV\"]},\"@openzeppelin/contracts/token/ERC20/extensions/IERC20Metadata.sol\":{\"keccak256\":\"0xd6fa4088198f04eef10c5bce8a2f4d60554b7ec4b987f684393c01bf79b94d9f\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://f95ee0bbd4dd3ac730d066ba3e785ded4565e890dbec2fa7d3b9fe3bad9d0d6e\",\"dweb:/ipfs/QmSLr6bHkPFWT7ntj34jmwfyskpwo97T9jZUrk5sz3sdtR\"]},\"@openzeppelin/contracts/utils/Address.sol\":{\"keccak256\":\"0x0fa9e0d3a859900b5a46f70a03c73adf259603d5e05027a37fe0b45529d85346\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://c2add4da0240c9f2ce47649c8bb6b11b40e98cf6f88b8bdc76b2704e89391710\",\"dweb:/ipfs/QmNQTwF2uVzu4CRtNxr8bxyP9XuW6VsZuo2Nr4KR2bZr3d\"]},\"@openzeppelin/contracts/utils/Errors.sol\":{\"keccak256\":\"0x6afa713bfd42cf0f7656efa91201007ac465e42049d7de1d50753a373648c123\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://ba1d02f4847670a1b83dec9f7d37f0b0418d6043447b69f3a29a5f9efc547fcf\",\"dweb:/ipfs/QmQ7iH2keLNUKgq2xSWcRmuBE5eZ3F5whYAkAGzCNNoEWB\"]},\"@openzeppelin/contracts/utils/LowLevelCall.sol\":{\"keccak256\":\"0x5b4802a4352474792df3107e961d1cc593e47b820c14f69d3505cb28f5a6a583\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://a6f86fd01f829499fe0545ff5dda07d4521988e88bfe0bf801fc15650921ed56\",\"dweb:/ipfs/QmUUKu4ZDffHAmfkf3asuQfmLTyfpuy2Amdncc3SqfzKPG\"]},\"contracts/InvestStrategyClient.sol\":{\"keccak256\":\"0x3c8fff73042023381eb750ba13a9066475d208e99bde568e1243f0e1e282c894\",\"license\":\"Apache-2.0\",\"urls\":[\"bzz-raw://3f8283ffa5c512e482b0065d9391c7060ebc1fa5968c55e6a05958480b7facb6\",\"dweb:/ipfs/QmT4N9Z19b6AUXpXtg23d3ijBExyKuRJBeQ3o8WCobgpfT\"]},\"contracts/interfaces/IInvestStrategy.sol\":{\"keccak256\":\"0x6800a1f147def2252b79629150ce9cd87e914ca5a966f1035fbca6328bbc9c4b\",\"license\":\"Apache-2.0\",\"urls\":[\"bzz-raw://2e9260604e0ffcf405819f85fee4124d9a090cf716f389ff92cf76a2837a2e42\",\"dweb:/ipfs/QmVdKEW8C6MDyiiUfjBxEMTWjfPrBJadptpxh9L2uCebDK\"]},\"contracts/strategies/IdleInvestStrategy.sol\":{\"keccak256\":\"0xca29b267bdb0fb29ea121fa03ac8855f1e72b583811492e7c9be560aea987761\",\"license\":\"Apache-2.0\",\"urls\":[\"bzz-raw://5660810d596b0dfbd836078ef97165395168498f8089eeaf6d06bbd57f94a250\",\"dweb:/ipfs/QmaDxFtqMQf59vvhsJfTWctmuTXh7Rnk5BA2NbnGRF4cyk\"]}},\"version\":1}","storageLayout":{"storage":[],"types":null}}},"contracts/strategies/MerklRewardsInvestStrategy.sol":{"IMerklDistributor":{"abi":[{"inputs":[{"internalType":"address[]","name":"users","type":"address[]"},{"internalType":"address[]","name":"tokens","type":"address[]"},{"internalType":"uint256[]","name":"amounts","type":"uint256[]"},{"internalType":"bytes32[][]","name":"proofs","type":"bytes32[][]"}],"name":"claim","outputs":[],"stateMutability":"nonpayable","type":"function"}],"evm":{"bytecode":{"functionDebugData":{},"generatedSources":[],"linkReferences":{},"object":"","opcodes":"","sourceMap":""},"deployedBytecode":{"functionDebugData":{},"generatedSources":[],"immutableReferences":{},"linkReferences":{},"object":"","opcodes":"","sourceMap":""},"methodIdentifiers":{"claim(address[],address[],uint256[],bytes32[][])":"71ee95c0"}},"metadata":"{\"compiler\":{\"version\":\"0.8.30+commit.73712a01\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"inputs\":[{\"internalType\":\"address[]\",\"name\":\"users\",\"type\":\"address[]\"},{\"internalType\":\"address[]\",\"name\":\"tokens\",\"type\":\"address[]\"},{\"internalType\":\"uint256[]\",\"name\":\"amounts\",\"type\":\"uint256[]\"},{\"internalType\":\"bytes32[][]\",\"name\":\"proofs\",\"type\":\"bytes32[][]\"}],\"name\":\"claim\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"}],\"devdoc\":{\"kind\":\"dev\",\"methods\":{},\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{},\"version\":1}},\"settings\":{\"compilationTarget\":{\"contracts/strategies/MerklRewardsInvestStrategy.sol\":\"IMerklDistributor\"},\"evmVersion\":\"prague\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"enabled\":true,\"runs\":200},\"remappings\":[]},\"sources\":{\"@ensuro/swaplibrary/contracts/CurveRoutes.sol\":{\"keccak256\":\"0x631af8ec291043d7eef34b97a427a4f53eb46d852088f6620c46a36a7e851963\",\"license\":\"Apache-2.0\",\"urls\":[\"bzz-raw://fbaf0f64980572d977b87b83e8bfc9c79fd1d2dc49a21e77e2a11fb8dec2413a\",\"dweb:/ipfs/QmYTpv2BroRz8PpWXYRp5KaaCXRy3tkZ95DeXybP4j3ti4\"]},\"@ensuro/swaplibrary/contracts/SwapLibrary.sol\":{\"keccak256\":\"0x3b1db1690ce8fa74972e4b4a57de41f4a880c8566b279316113d7398ea711812\",\"license\":\"Apache-2.0\",\"urls\":[\"bzz-raw://2746b500f5916604c16589fdbabf94b4d97689dcb96095376ed4956f9de663a6\",\"dweb:/ipfs/QmepecwnwauXsLuQmmoFNbH5XbZYEHH4bjnshQRRUeyH4r\"]},\"@ensuro/swaplibrary/contracts/dependencies/ICurveRouter.sol\":{\"keccak256\":\"0xf8c39f61b7459cfe6ba74d88fee74efd6d3d05d5cd64dc9eb6d08fbe0361affd\",\"license\":\"UNLICENSED\",\"urls\":[\"bzz-raw://55f11ef7e1cc66fa2c6c2aec436ccf00a835acf4281bff4ee9b4d2cb8980c92f\",\"dweb:/ipfs/QmPfvjcbLbHwoFRFGkM5zvM25vrEvZxjwbxSUL5jm5n3pZ\"]},\"@openzeppelin/contracts/interfaces/IERC1967.sol\":{\"keccak256\":\"0xbf2aefe54b76d7f7bcd4f6da1080b7b1662611937d870b880db584d09cea56b5\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://f5e7e2f12e0feec75296e57f51f82fdaa8bd1551f4b8cc6560442c0bf60f818c\",\"dweb:/ipfs/QmcW9wDMaQ8RbQibMarfp17a3bABzY5KraWe2YDwuUrUoz\"]},\"@openzeppelin/contracts/interfaces/IERC20Metadata.sol\":{\"keccak256\":\"0xd735962e3d6660884153ba8a972b5f100dde4c482f2ff1c525ba7fdefb154cbd\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://5a264d17b093f585844b0d977e9f60555b8c8d6513b304fde863cdf652a0d336\",\"dweb:/ipfs/QmWXfaJisjVnrjTUjZGryZpMob9wKivvtbodLS3PTc1ttq\"]},\"@openzeppelin/contracts/proxy/ERC1967/ERC1967Utils.sol\":{\"keccak256\":\"0xa1ad192cd45317c788618bef5cb1fb3ca4ce8b230f6433ac68cc1d850fb81618\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://b43447bb85a53679d269a403c693b9d88d6c74177dfb35eddca63abaf7cf110a\",\"dweb:/ipfs/QmXSDmpd4bNZj1PDgegr6C4w1jDaWHXCconC3rYiw9TSkQ\"]},\"@openzeppelin/contracts/proxy/beacon/IBeacon.sol\":{\"keccak256\":\"0x20462ddb2665e9521372c76b001d0ce196e59dbbd989de9af5576cad0bd5628b\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://f417fd12aeec8fbfaceaa30e3a08a0724c0bc39de363e2acf6773c897abbaf6d\",\"dweb:/ipfs/QmU4Hko6sApdweVM92CsiuLKkCk8HfyBeutF89PCTz5Tye\"]},\"@openzeppelin/contracts/token/ERC20/IERC20.sol\":{\"keccak256\":\"0x74ed01eb66b923d0d0cfe3be84604ac04b76482a55f9dd655e1ef4d367f95bc2\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://5282825a626cfe924e504274b864a652b0023591fa66f06a067b25b51ba9b303\",\"dweb:/ipfs/QmeCfPykghhMc81VJTrHTC7sF6CRvaA1FXVq2pJhwYp1dV\"]},\"@openzeppelin/contracts/token/ERC20/extensions/IERC20Metadata.sol\":{\"keccak256\":\"0xd6fa4088198f04eef10c5bce8a2f4d60554b7ec4b987f684393c01bf79b94d9f\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://f95ee0bbd4dd3ac730d066ba3e785ded4565e890dbec2fa7d3b9fe3bad9d0d6e\",\"dweb:/ipfs/QmSLr6bHkPFWT7ntj34jmwfyskpwo97T9jZUrk5sz3sdtR\"]},\"@openzeppelin/contracts/utils/Address.sol\":{\"keccak256\":\"0x0fa9e0d3a859900b5a46f70a03c73adf259603d5e05027a37fe0b45529d85346\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://c2add4da0240c9f2ce47649c8bb6b11b40e98cf6f88b8bdc76b2704e89391710\",\"dweb:/ipfs/QmNQTwF2uVzu4CRtNxr8bxyP9XuW6VsZuo2Nr4KR2bZr3d\"]},\"@openzeppelin/contracts/utils/Errors.sol\":{\"keccak256\":\"0x6afa713bfd42cf0f7656efa91201007ac465e42049d7de1d50753a373648c123\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://ba1d02f4847670a1b83dec9f7d37f0b0418d6043447b69f3a29a5f9efc547fcf\",\"dweb:/ipfs/QmQ7iH2keLNUKgq2xSWcRmuBE5eZ3F5whYAkAGzCNNoEWB\"]},\"@openzeppelin/contracts/utils/LowLevelCall.sol\":{\"keccak256\":\"0x5b4802a4352474792df3107e961d1cc593e47b820c14f69d3505cb28f5a6a583\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://a6f86fd01f829499fe0545ff5dda07d4521988e88bfe0bf801fc15650921ed56\",\"dweb:/ipfs/QmUUKu4ZDffHAmfkf3asuQfmLTyfpuy2Amdncc3SqfzKPG\"]},\"@openzeppelin/contracts/utils/Panic.sol\":{\"keccak256\":\"0xf7fe324703a64fc51702311dc51562d5cb1497734f074e4f483bfb6717572d7a\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://c6a5ff4f9fd8649b7ee20800b7fa387d3465bd77cf20c2d1068cd5c98e1ed57a\",\"dweb:/ipfs/QmVSaVJf9FXFhdYEYeCEfjMVHrxDh5qL4CGkxdMWpQCrqG\"]},\"@openzeppelin/contracts/utils/StorageSlot.sol\":{\"keccak256\":\"0xcf74f855663ce2ae00ed8352666b7935f6cddea2932fdf2c3ecd30a9b1cd0e97\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://9f660b1f351b757dfe01438e59888f31f33ded3afcf5cb5b0d9bf9aa6f320a8b\",\"dweb:/ipfs/QmarDJ5hZEgBtCmmrVzEZWjub9769eD686jmzb2XpSU1cM\"]},\"@openzeppelin/contracts/utils/math/Math.sol\":{\"keccak256\":\"0x09e3f1c72d4c5cbe8e2644ab7313f8f7177533ae2f4c24cdcbbeaf520a73734c\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://93208401215d539fa2d81626b207c1f611def7883d0e447b3b5969ebaa7b3c2c\",\"dweb:/ipfs/QmXPxDnQPx8LAweX5ZJqEcwkvs59kP4c64VVDG1Jjq1mef\"]},\"@openzeppelin/contracts/utils/math/SafeCast.sol\":{\"keccak256\":\"0x195533c86d0ef72bcc06456a4f66a9b941f38eb403739b00f21fd7c1abd1ae54\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://b1d578337048cad08c1c03041cca5978eff5428aa130c781b271ad9e5566e1f8\",\"dweb:/ipfs/QmPFKL2r9CBsMwmUqqdcFPfHZB2qcs9g1HDrPxzWSxomvy\"]},\"@uniswap/v3-core/contracts/interfaces/callback/IUniswapV3SwapCallback.sol\":{\"keccak256\":\"0x3f485fb1a44e8fbeadefb5da07d66edab3cfe809f0ac4074b1e54e3eb3c4cf69\",\"license\":\"GPL-2.0-or-later\",\"urls\":[\"bzz-raw://095ce0626b41318c772b3ebf19d548282607f6a8f3d6c41c13edfbd5370c8652\",\"dweb:/ipfs/QmVDZfJJ89UUCE1hMyzqpkZAtQ8jUsBgZNE5AMRG7RzRFS\"]},\"@uniswap/v3-periphery/contracts/interfaces/ISwapRouter.sol\":{\"keccak256\":\"0x9bfaf1feb32814623e627ab70f2409760b15d95f1f9b058e2b3399a8bb732975\",\"license\":\"GPL-2.0-or-later\",\"urls\":[\"bzz-raw://a8a2c3e55965b61bcd91993d8e1d5d34b8b8a63e0fdfce87a85f6af92526fd53\",\"dweb:/ipfs/QmQj2CSCSwqDSU4KMNWxGsN2336Cy64WgpV1X1EHXNZWxM\"]},\"contracts/InvestStrategyClient.sol\":{\"keccak256\":\"0x3c8fff73042023381eb750ba13a9066475d208e99bde568e1243f0e1e282c894\",\"license\":\"Apache-2.0\",\"urls\":[\"bzz-raw://3f8283ffa5c512e482b0065d9391c7060ebc1fa5968c55e6a05958480b7facb6\",\"dweb:/ipfs/QmT4N9Z19b6AUXpXtg23d3ijBExyKuRJBeQ3o8WCobgpfT\"]},\"contracts/MSVBase.sol\":{\"keccak256\":\"0x5c77645d099729ec7f37fdddf61a21aa1ce479ba1770da5694564687d436942f\",\"license\":\"Apache-2.0\",\"urls\":[\"bzz-raw://496ee230293f8ac7216e6300d568b29bbf1f7d5a4c9b68ea58baaae02f55e267\",\"dweb:/ipfs/QmVYH6gLLCrVpeKSHGxAeVVDQcVPgSiwhDB2i8uLPnPHaJ\"]},\"contracts/dependencies/chainlink/AggregatorV3Interface.sol\":{\"keccak256\":\"0x257a8d28fa83d3d942547c8e129ef465e4b5f3f31171e7be4739a4c98da6b4f0\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://6d39e11b1dc7b9b8ccdabbc9be442ab7cda4a81c748f57e316dcb1bcb4a28bf9\",\"dweb:/ipfs/QmaG6vz6W6iEUBsbHSBob5mdcitYxWjoygxREHpsJHfWrS\"]},\"contracts/interfaces/IExposeStorage.sol\":{\"keccak256\":\"0x68d4dbc7e135ac949f5f557a1f071b96d1639262188f91957bf082be7e72b1c7\",\"license\":\"Apache-2.0\",\"urls\":[\"bzz-raw://29fc549ef136e19275bb9225c8e7f02e0cc3b274acef4e6d7002c6f3f74e5c13\",\"dweb:/ipfs/QmVzrn7Cbxe8xzLwy4ZpzxP6CBEKsegXG8VusNYqssCe3d\"]},\"contracts/interfaces/IInvestStrategy.sol\":{\"keccak256\":\"0x6800a1f147def2252b79629150ce9cd87e914ca5a966f1035fbca6328bbc9c4b\",\"license\":\"Apache-2.0\",\"urls\":[\"bzz-raw://2e9260604e0ffcf405819f85fee4124d9a090cf716f389ff92cf76a2837a2e42\",\"dweb:/ipfs/QmVdKEW8C6MDyiiUfjBxEMTWjfPrBJadptpxh9L2uCebDK\"]},\"contracts/strategies/ChainlinkSwapAssetInvestStrategy.sol\":{\"keccak256\":\"0x384ae661c732b72d24748b913e472f66870f80dc3cabf06ab818b6696b355216\",\"license\":\"Apache-2.0\",\"urls\":[\"bzz-raw://45bac1a281d2c15f1ec50e9aac1ecdcf0b0447e8b982709626b738f218b562e9\",\"dweb:/ipfs/QmQkfhQoQDpA47oJEES5RH3nYmbqifMwyeqCj9GGeiDhkv\"]},\"contracts/strategies/MerklRewardsInvestStrategy.sol\":{\"keccak256\":\"0x9de3879f4d0542beba28424bf6bf10cc4b5e8abc36ef19f2ba5ac4979293a7ed\",\"license\":\"Apache-2.0\",\"urls\":[\"bzz-raw://983a320f926746db995ddcfbc4d70340be8a46eb6b2f62bc129dec213489be34\",\"dweb:/ipfs/QmUSBogcgwgJ1TE3PzPPf1fN15M4xagrA7J1uiHvFePTZo\"]},\"contracts/strategies/SwapAssetInvestStrategy.sol\":{\"keccak256\":\"0xcbe222638e775ca5e6d7cd2e864bdb35fa13afe6c648f682ef3c7a8f6439d4c6\",\"license\":\"Apache-2.0\",\"urls\":[\"bzz-raw://e9ea100bc7cf8aa1d848fad0ade54b3c636790a90dea10fd829ac5c5cabf4763\",\"dweb:/ipfs/QmYm6d3bZh39VTucf9aGuRPYFnMecx2jnUoE9ZtqLM9Lbo\"]},\"solidity-bytes-utils/contracts/BytesLib.sol\":{\"keccak256\":\"0xf4b07e5d8f69407bb43c6db224adfcf6c73b512dd64e85008ac3c222910c3555\",\"license\":\"Unlicense\",\"urls\":[\"bzz-raw://db020721e59008f7159b65962cc24038c92ac1c2ee8b7cfaa28a1771ced663f5\",\"dweb:/ipfs/QmQ8rznRTYc3AoVCJno8tY6vQVKCbhDJ3husfytUUvMrSN\"]}},\"version\":1}","storageLayout":{"storage":[],"types":null}},"MerklRewardsInvestStrategy":{"abi":[{"inputs":[{"internalType":"contract IERC20Metadata","name":"asset_","type":"address"},{"internalType":"contract IERC20Metadata","name":"investAsset_","type":"address"},{"internalType":"contract AggregatorV3Interface","name":"assetOracle_","type":"address"},{"internalType":"contract AggregatorV3Interface","name":"investAssetOracle_","type":"address"},{"internalType":"uint256","name":"priceTolerance_","type":"uint256"},{"internalType":"contract IMerklDistributor","name":"distributor_","type":"address"}],"stateMutability":"nonpayable","type":"constructor"},{"inputs":[{"internalType":"address","name":"target","type":"address"}],"name":"AddressEmptyCode","type":"error"},{"inputs":[],"name":"CanBeCalledOnlyThroughDelegateCall","type":"error"},{"inputs":[],"name":"CannotDisconnectWithAssets","type":"error"},{"inputs":[],"name":"FailedCall","type":"error"},{"inputs":[],"name":"InvalidAsset","type":"error"},{"inputs":[{"internalType":"int256","name":"chainlinkAnswer","type":"int256"}],"name":"InvalidPrice","type":"error"},{"inputs":[],"name":"NoExtraDataAllowed","type":"error"},{"inputs":[{"internalType":"uint256","name":"minUpdateAt","type":"uint256"},{"internalType":"uint256","name":"updatedAt","type":"uint256"}],"name":"PriceTooOld","type":"error"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"token","type":"address"},{"indexed":false,"internalType":"uint256","name":"amount","type":"uint256"}],"name":"RewardsClaimed","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"token","type":"address"},{"indexed":false,"internalType":"uint256","name":"amountIn","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"amountOut","type":"uint256"}],"name":"RewardsSwapped","type":"event"},{"anonymous":false,"inputs":[{"components":[{"internalType":"enum SwapLibrary.SwapProtocol","name":"protocol","type":"uint8"},{"internalType":"uint256","name":"maxSlippage","type":"uint256"},{"internalType":"bytes","name":"customParams","type":"bytes"}],"indexed":false,"internalType":"struct SwapLibrary.SwapConfig","name":"oldConfig","type":"tuple"},{"components":[{"internalType":"enum SwapLibrary.SwapProtocol","name":"protocol","type":"uint8"},{"internalType":"uint256","name":"maxSlippage","type":"uint256"},{"internalType":"bytes","name":"customParams","type":"bytes"}],"indexed":false,"internalType":"struct SwapLibrary.SwapConfig","name":"newConfig","type":"tuple"}],"name":"SwapConfigChanged","type":"event"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"asset","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"assetOracle","outputs":[{"internalType":"contract AggregatorV3Interface","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"bytes","name":"initData","type":"bytes"}],"name":"connect","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"assets","type":"uint256"}],"name":"deposit","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bool","name":"force","type":"bool"}],"name":"disconnect","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"distributor","outputs":[{"internalType":"contract IMerklDistributor","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint8","name":"method","type":"uint8"},{"internalType":"bytes","name":"params","type":"bytes"}],"name":"forwardEntryPoint","outputs":[{"internalType":"bytes","name":"result","type":"bytes"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"contract_","type":"address"}],"name":"getSwapConfig","outputs":[{"components":[{"internalType":"enum SwapLibrary.SwapProtocol","name":"protocol","type":"uint8"},{"internalType":"uint256","name":"maxSlippage","type":"uint256"},{"internalType":"bytes","name":"customParams","type":"bytes"}],"internalType":"struct SwapLibrary.SwapConfig","name":"","type":"tuple"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"investAsset","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"investAssetOracle","outputs":[{"internalType":"contract AggregatorV3Interface","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"investAssetPrice","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"maxDeposit","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"contract_","type":"address"}],"name":"maxWithdraw","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"priceTolerance","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"storageSlot","outputs":[{"internalType":"bytes32","name":"","type":"bytes32"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"contract_","type":"address"}],"name":"totalAssets","outputs":[{"internalType":"uint256","name":"assets","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"assets","type":"uint256"}],"name":"withdraw","outputs":[],"stateMutability":"nonpayable","type":"function"}],"evm":{"bytecode":{"functionDebugData":{"@_22273":{"entryPoint":null,"id":22273,"parameterSlots":5,"returnSlots":0},"@_23507":{"entryPoint":null,"id":23507,"parameterSlots":6,"returnSlots":0},"@_24037":{"entryPoint":null,"id":24037,"parameterSlots":2,"returnSlots":0},"@makeStorageSlot_15638":{"entryPoint":null,"id":15638,"parameterSlots":1,"returnSlots":1},"abi_decode_tuple_t_contract$_IERC20Metadata_$9411t_contract$_IERC20Metadata_$9411t_contract$_AggregatorV3Interface_$20542t_contract$_AggregatorV3Interface_$20542t_uint256t_contract$_IMerklDistributor_$23442_fromMemory":{"entryPoint":526,"id":null,"parameterSlots":2,"returnSlots":6},"abi_decode_tuple_t_uint8_fromMemory":{"entryPoint":647,"id":null,"parameterSlots":2,"returnSlots":1},"abi_encode_tuple_t_stringliteral_4fed0cd3539a36e00a34a6c026c2615824c9ad47da5ef65e8372c7e721c05d79_t_contract$_IInvestStrategy_$20725__to_t_string_memory_ptr_t_address__fromStack_reversed":{"entryPoint":null,"id":null,"parameterSlots":2,"returnSlots":1},"validator_revert_contract_IERC20Metadata":{"entryPoint":503,"id":null,"parameterSlots":1,"returnSlots":0}},"generatedSources":[{"ast":{"nativeSrc":"0:1996:87","nodeType":"YulBlock","src":"0:1996:87","statements":[{"nativeSrc":"6:3:87","nodeType":"YulBlock","src":"6:3:87","statements":[]},{"body":{"nativeSrc":"75:86:87","nodeType":"YulBlock","src":"75:86:87","statements":[{"body":{"nativeSrc":"139:16:87","nodeType":"YulBlock","src":"139:16:87","statements":[{"expression":{"arguments":[{"kind":"number","nativeSrc":"148:1:87","nodeType":"YulLiteral","src":"148:1:87","type":"","value":"0"},{"kind":"number","nativeSrc":"151:1:87","nodeType":"YulLiteral","src":"151:1:87","type":"","value":"0"}],"functionName":{"name":"revert","nativeSrc":"141:6:87","nodeType":"YulIdentifier","src":"141:6:87"},"nativeSrc":"141:12:87","nodeType":"YulFunctionCall","src":"141:12:87"},"nativeSrc":"141:12:87","nodeType":"YulExpressionStatement","src":"141:12:87"}]},"condition":{"arguments":[{"arguments":[{"name":"value","nativeSrc":"98:5:87","nodeType":"YulIdentifier","src":"98:5:87"},{"arguments":[{"name":"value","nativeSrc":"109:5:87","nodeType":"YulIdentifier","src":"109:5:87"},{"arguments":[{"arguments":[{"kind":"number","nativeSrc":"124:3:87","nodeType":"YulLiteral","src":"124:3:87","type":"","value":"160"},{"kind":"number","nativeSrc":"129:1:87","nodeType":"YulLiteral","src":"129:1:87","type":"","value":"1"}],"functionName":{"name":"shl","nativeSrc":"120:3:87","nodeType":"YulIdentifier","src":"120:3:87"},"nativeSrc":"120:11:87","nodeType":"YulFunctionCall","src":"120:11:87"},{"kind":"number","nativeSrc":"133:1:87","nodeType":"YulLiteral","src":"133:1:87","type":"","value":"1"}],"functionName":{"name":"sub","nativeSrc":"116:3:87","nodeType":"YulIdentifier","src":"116:3:87"},"nativeSrc":"116:19:87","nodeType":"YulFunctionCall","src":"116:19:87"}],"functionName":{"name":"and","nativeSrc":"105:3:87","nodeType":"YulIdentifier","src":"105:3:87"},"nativeSrc":"105:31:87","nodeType":"YulFunctionCall","src":"105:31:87"}],"functionName":{"name":"eq","nativeSrc":"95:2:87","nodeType":"YulIdentifier","src":"95:2:87"},"nativeSrc":"95:42:87","nodeType":"YulFunctionCall","src":"95:42:87"}],"functionName":{"name":"iszero","nativeSrc":"88:6:87","nodeType":"YulIdentifier","src":"88:6:87"},"nativeSrc":"88:50:87","nodeType":"YulFunctionCall","src":"88:50:87"},"nativeSrc":"85:70:87","nodeType":"YulIf","src":"85:70:87"}]},"name":"validator_revert_contract_IERC20Metadata","nativeSrc":"14:147:87","nodeType":"YulFunctionDefinition","parameters":[{"name":"value","nativeSrc":"64:5:87","nodeType":"YulTypedName","src":"64:5:87","type":""}],"src":"14:147:87"},{"body":{"nativeSrc":"467:765:87","nodeType":"YulBlock","src":"467:765:87","statements":[{"body":{"nativeSrc":"514:16:87","nodeType":"YulBlock","src":"514:16:87","statements":[{"expression":{"arguments":[{"kind":"number","nativeSrc":"523:1:87","nodeType":"YulLiteral","src":"523:1:87","type":"","value":"0"},{"kind":"number","nativeSrc":"526:1:87","nodeType":"YulLiteral","src":"526:1:87","type":"","value":"0"}],"functionName":{"name":"revert","nativeSrc":"516:6:87","nodeType":"YulIdentifier","src":"516:6:87"},"nativeSrc":"516:12:87","nodeType":"YulFunctionCall","src":"516:12:87"},"nativeSrc":"516:12:87","nodeType":"YulExpressionStatement","src":"516:12:87"}]},"condition":{"arguments":[{"arguments":[{"name":"dataEnd","nativeSrc":"488:7:87","nodeType":"YulIdentifier","src":"488:7:87"},{"name":"headStart","nativeSrc":"497:9:87","nodeType":"YulIdentifier","src":"497:9:87"}],"functionName":{"name":"sub","nativeSrc":"484:3:87","nodeType":"YulIdentifier","src":"484:3:87"},"nativeSrc":"484:23:87","nodeType":"YulFunctionCall","src":"484:23:87"},{"kind":"number","nativeSrc":"509:3:87","nodeType":"YulLiteral","src":"509:3:87","type":"","value":"192"}],"functionName":{"name":"slt","nativeSrc":"480:3:87","nodeType":"YulIdentifier","src":"480:3:87"},"nativeSrc":"480:33:87","nodeType":"YulFunctionCall","src":"480:33:87"},"nativeSrc":"477:53:87","nodeType":"YulIf","src":"477:53:87"},{"nativeSrc":"539:29:87","nodeType":"YulVariableDeclaration","src":"539:29:87","value":{"arguments":[{"name":"headStart","nativeSrc":"558:9:87","nodeType":"YulIdentifier","src":"558:9:87"}],"functionName":{"name":"mload","nativeSrc":"552:5:87","nodeType":"YulIdentifier","src":"552:5:87"},"nativeSrc":"552:16:87","nodeType":"YulFunctionCall","src":"552:16:87"},"variables":[{"name":"value","nativeSrc":"543:5:87","nodeType":"YulTypedName","src":"543:5:87","type":""}]},{"expression":{"arguments":[{"name":"value","nativeSrc":"618:5:87","nodeType":"YulIdentifier","src":"618:5:87"}],"functionName":{"name":"validator_revert_contract_IERC20Metadata","nativeSrc":"577:40:87","nodeType":"YulIdentifier","src":"577:40:87"},"nativeSrc":"577:47:87","nodeType":"YulFunctionCall","src":"577:47:87"},"nativeSrc":"577:47:87","nodeType":"YulExpressionStatement","src":"577:47:87"},{"nativeSrc":"633:15:87","nodeType":"YulAssignment","src":"633:15:87","value":{"name":"value","nativeSrc":"643:5:87","nodeType":"YulIdentifier","src":"643:5:87"},"variableNames":[{"name":"value0","nativeSrc":"633:6:87","nodeType":"YulIdentifier","src":"633:6:87"}]},{"nativeSrc":"657:40:87","nodeType":"YulVariableDeclaration","src":"657:40:87","value":{"arguments":[{"arguments":[{"name":"headStart","nativeSrc":"682:9:87","nodeType":"YulIdentifier","src":"682:9:87"},{"kind":"number","nativeSrc":"693:2:87","nodeType":"YulLiteral","src":"693:2:87","type":"","value":"32"}],"functionName":{"name":"add","nativeSrc":"678:3:87","nodeType":"YulIdentifier","src":"678:3:87"},"nativeSrc":"678:18:87","nodeType":"YulFunctionCall","src":"678:18:87"}],"functionName":{"name":"mload","nativeSrc":"672:5:87","nodeType":"YulIdentifier","src":"672:5:87"},"nativeSrc":"672:25:87","nodeType":"YulFunctionCall","src":"672:25:87"},"variables":[{"name":"value_1","nativeSrc":"661:7:87","nodeType":"YulTypedName","src":"661:7:87","type":""}]},{"expression":{"arguments":[{"name":"value_1","nativeSrc":"747:7:87","nodeType":"YulIdentifier","src":"747:7:87"}],"functionName":{"name":"validator_revert_contract_IERC20Metadata","nativeSrc":"706:40:87","nodeType":"YulIdentifier","src":"706:40:87"},"nativeSrc":"706:49:87","nodeType":"YulFunctionCall","src":"706:49:87"},"nativeSrc":"706:49:87","nodeType":"YulExpressionStatement","src":"706:49:87"},{"nativeSrc":"764:17:87","nodeType":"YulAssignment","src":"764:17:87","value":{"name":"value_1","nativeSrc":"774:7:87","nodeType":"YulIdentifier","src":"774:7:87"},"variableNames":[{"name":"value1","nativeSrc":"764:6:87","nodeType":"YulIdentifier","src":"764:6:87"}]},{"nativeSrc":"790:40:87","nodeType":"YulVariableDeclaration","src":"790:40:87","value":{"arguments":[{"arguments":[{"name":"headStart","nativeSrc":"815:9:87","nodeType":"YulIdentifier","src":"815:9:87"},{"kind":"number","nativeSrc":"826:2:87","nodeType":"YulLiteral","src":"826:2:87","type":"","value":"64"}],"functionName":{"name":"add","nativeSrc":"811:3:87","nodeType":"YulIdentifier","src":"811:3:87"},"nativeSrc":"811:18:87","nodeType":"YulFunctionCall","src":"811:18:87"}],"functionName":{"name":"mload","nativeSrc":"805:5:87","nodeType":"YulIdentifier","src":"805:5:87"},"nativeSrc":"805:25:87","nodeType":"YulFunctionCall","src":"805:25:87"},"variables":[{"name":"value_2","nativeSrc":"794:7:87","nodeType":"YulTypedName","src":"794:7:87","type":""}]},{"expression":{"arguments":[{"name":"value_2","nativeSrc":"880:7:87","nodeType":"YulIdentifier","src":"880:7:87"}],"functionName":{"name":"validator_revert_contract_IERC20Metadata","nativeSrc":"839:40:87","nodeType":"YulIdentifier","src":"839:40:87"},"nativeSrc":"839:49:87","nodeType":"YulFunctionCall","src":"839:49:87"},"nativeSrc":"839:49:87","nodeType":"YulExpressionStatement","src":"839:49:87"},{"nativeSrc":"897:17:87","nodeType":"YulAssignment","src":"897:17:87","value":{"name":"value_2","nativeSrc":"907:7:87","nodeType":"YulIdentifier","src":"907:7:87"},"variableNames":[{"name":"value2","nativeSrc":"897:6:87","nodeType":"YulIdentifier","src":"897:6:87"}]},{"nativeSrc":"923:40:87","nodeType":"YulVariableDeclaration","src":"923:40:87","value":{"arguments":[{"arguments":[{"name":"headStart","nativeSrc":"948:9:87","nodeType":"YulIdentifier","src":"948:9:87"},{"kind":"number","nativeSrc":"959:2:87","nodeType":"YulLiteral","src":"959:2:87","type":"","value":"96"}],"functionName":{"name":"add","nativeSrc":"944:3:87","nodeType":"YulIdentifier","src":"944:3:87"},"nativeSrc":"944:18:87","nodeType":"YulFunctionCall","src":"944:18:87"}],"functionName":{"name":"mload","nativeSrc":"938:5:87","nodeType":"YulIdentifier","src":"938:5:87"},"nativeSrc":"938:25:87","nodeType":"YulFunctionCall","src":"938:25:87"},"variables":[{"name":"value_3","nativeSrc":"927:7:87","nodeType":"YulTypedName","src":"927:7:87","type":""}]},{"expression":{"arguments":[{"name":"value_3","nativeSrc":"1013:7:87","nodeType":"YulIdentifier","src":"1013:7:87"}],"functionName":{"name":"validator_revert_contract_IERC20Metadata","nativeSrc":"972:40:87","nodeType":"YulIdentifier","src":"972:40:87"},"nativeSrc":"972:49:87","nodeType":"YulFunctionCall","src":"972:49:87"},"nativeSrc":"972:49:87","nodeType":"YulExpressionStatement","src":"972:49:87"},{"nativeSrc":"1030:17:87","nodeType":"YulAssignment","src":"1030:17:87","value":{"name":"value_3","nativeSrc":"1040:7:87","nodeType":"YulIdentifier","src":"1040:7:87"},"variableNames":[{"name":"value3","nativeSrc":"1030:6:87","nodeType":"YulIdentifier","src":"1030:6:87"}]},{"nativeSrc":"1056:36:87","nodeType":"YulAssignment","src":"1056:36:87","value":{"arguments":[{"arguments":[{"name":"headStart","nativeSrc":"1076:9:87","nodeType":"YulIdentifier","src":"1076:9:87"},{"kind":"number","nativeSrc":"1087:3:87","nodeType":"YulLiteral","src":"1087:3:87","type":"","value":"128"}],"functionName":{"name":"add","nativeSrc":"1072:3:87","nodeType":"YulIdentifier","src":"1072:3:87"},"nativeSrc":"1072:19:87","nodeType":"YulFunctionCall","src":"1072:19:87"}],"functionName":{"name":"mload","nativeSrc":"1066:5:87","nodeType":"YulIdentifier","src":"1066:5:87"},"nativeSrc":"1066:26:87","nodeType":"YulFunctionCall","src":"1066:26:87"},"variableNames":[{"name":"value4","nativeSrc":"1056:6:87","nodeType":"YulIdentifier","src":"1056:6:87"}]},{"nativeSrc":"1101:41:87","nodeType":"YulVariableDeclaration","src":"1101:41:87","value":{"arguments":[{"arguments":[{"name":"headStart","nativeSrc":"1126:9:87","nodeType":"YulIdentifier","src":"1126:9:87"},{"kind":"number","nativeSrc":"1137:3:87","nodeType":"YulLiteral","src":"1137:3:87","type":"","value":"160"}],"functionName":{"name":"add","nativeSrc":"1122:3:87","nodeType":"YulIdentifier","src":"1122:3:87"},"nativeSrc":"1122:19:87","nodeType":"YulFunctionCall","src":"1122:19:87"}],"functionName":{"name":"mload","nativeSrc":"1116:5:87","nodeType":"YulIdentifier","src":"1116:5:87"},"nativeSrc":"1116:26:87","nodeType":"YulFunctionCall","src":"1116:26:87"},"variables":[{"name":"value_4","nativeSrc":"1105:7:87","nodeType":"YulTypedName","src":"1105:7:87","type":""}]},{"expression":{"arguments":[{"name":"value_4","nativeSrc":"1192:7:87","nodeType":"YulIdentifier","src":"1192:7:87"}],"functionName":{"name":"validator_revert_contract_IERC20Metadata","nativeSrc":"1151:40:87","nodeType":"YulIdentifier","src":"1151:40:87"},"nativeSrc":"1151:49:87","nodeType":"YulFunctionCall","src":"1151:49:87"},"nativeSrc":"1151:49:87","nodeType":"YulExpressionStatement","src":"1151:49:87"},{"nativeSrc":"1209:17:87","nodeType":"YulAssignment","src":"1209:17:87","value":{"name":"value_4","nativeSrc":"1219:7:87","nodeType":"YulIdentifier","src":"1219:7:87"},"variableNames":[{"name":"value5","nativeSrc":"1209:6:87","nodeType":"YulIdentifier","src":"1209:6:87"}]}]},"name":"abi_decode_tuple_t_contract$_IERC20Metadata_$9411t_contract$_IERC20Metadata_$9411t_contract$_AggregatorV3Interface_$20542t_contract$_AggregatorV3Interface_$20542t_uint256t_contract$_IMerklDistributor_$23442_fromMemory","nativeSrc":"166:1066:87","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nativeSrc":"393:9:87","nodeType":"YulTypedName","src":"393:9:87","type":""},{"name":"dataEnd","nativeSrc":"404:7:87","nodeType":"YulTypedName","src":"404:7:87","type":""}],"returnVariables":[{"name":"value0","nativeSrc":"416:6:87","nodeType":"YulTypedName","src":"416:6:87","type":""},{"name":"value1","nativeSrc":"424:6:87","nodeType":"YulTypedName","src":"424:6:87","type":""},{"name":"value2","nativeSrc":"432:6:87","nodeType":"YulTypedName","src":"432:6:87","type":""},{"name":"value3","nativeSrc":"440:6:87","nodeType":"YulTypedName","src":"440:6:87","type":""},{"name":"value4","nativeSrc":"448:6:87","nodeType":"YulTypedName","src":"448:6:87","type":""},{"name":"value5","nativeSrc":"456:6:87","nodeType":"YulTypedName","src":"456:6:87","type":""}],"src":"166:1066:87"},{"body":{"nativeSrc":"1316:194:87","nodeType":"YulBlock","src":"1316:194:87","statements":[{"body":{"nativeSrc":"1362:16:87","nodeType":"YulBlock","src":"1362:16:87","statements":[{"expression":{"arguments":[{"kind":"number","nativeSrc":"1371:1:87","nodeType":"YulLiteral","src":"1371:1:87","type":"","value":"0"},{"kind":"number","nativeSrc":"1374:1:87","nodeType":"YulLiteral","src":"1374:1:87","type":"","value":"0"}],"functionName":{"name":"revert","nativeSrc":"1364:6:87","nodeType":"YulIdentifier","src":"1364:6:87"},"nativeSrc":"1364:12:87","nodeType":"YulFunctionCall","src":"1364:12:87"},"nativeSrc":"1364:12:87","nodeType":"YulExpressionStatement","src":"1364:12:87"}]},"condition":{"arguments":[{"arguments":[{"name":"dataEnd","nativeSrc":"1337:7:87","nodeType":"YulIdentifier","src":"1337:7:87"},{"name":"headStart","nativeSrc":"1346:9:87","nodeType":"YulIdentifier","src":"1346:9:87"}],"functionName":{"name":"sub","nativeSrc":"1333:3:87","nodeType":"YulIdentifier","src":"1333:3:87"},"nativeSrc":"1333:23:87","nodeType":"YulFunctionCall","src":"1333:23:87"},{"kind":"number","nativeSrc":"1358:2:87","nodeType":"YulLiteral","src":"1358:2:87","type":"","value":"32"}],"functionName":{"name":"slt","nativeSrc":"1329:3:87","nodeType":"YulIdentifier","src":"1329:3:87"},"nativeSrc":"1329:32:87","nodeType":"YulFunctionCall","src":"1329:32:87"},"nativeSrc":"1326:52:87","nodeType":"YulIf","src":"1326:52:87"},{"nativeSrc":"1387:29:87","nodeType":"YulVariableDeclaration","src":"1387:29:87","value":{"arguments":[{"name":"headStart","nativeSrc":"1406:9:87","nodeType":"YulIdentifier","src":"1406:9:87"}],"functionName":{"name":"mload","nativeSrc":"1400:5:87","nodeType":"YulIdentifier","src":"1400:5:87"},"nativeSrc":"1400:16:87","nodeType":"YulFunctionCall","src":"1400:16:87"},"variables":[{"name":"value","nativeSrc":"1391:5:87","nodeType":"YulTypedName","src":"1391:5:87","type":""}]},{"body":{"nativeSrc":"1464:16:87","nodeType":"YulBlock","src":"1464:16:87","statements":[{"expression":{"arguments":[{"kind":"number","nativeSrc":"1473:1:87","nodeType":"YulLiteral","src":"1473:1:87","type":"","value":"0"},{"kind":"number","nativeSrc":"1476:1:87","nodeType":"YulLiteral","src":"1476:1:87","type":"","value":"0"}],"functionName":{"name":"revert","nativeSrc":"1466:6:87","nodeType":"YulIdentifier","src":"1466:6:87"},"nativeSrc":"1466:12:87","nodeType":"YulFunctionCall","src":"1466:12:87"},"nativeSrc":"1466:12:87","nodeType":"YulExpressionStatement","src":"1466:12:87"}]},"condition":{"arguments":[{"arguments":[{"name":"value","nativeSrc":"1438:5:87","nodeType":"YulIdentifier","src":"1438:5:87"},{"arguments":[{"name":"value","nativeSrc":"1449:5:87","nodeType":"YulIdentifier","src":"1449:5:87"},{"kind":"number","nativeSrc":"1456:4:87","nodeType":"YulLiteral","src":"1456:4:87","type":"","value":"0xff"}],"functionName":{"name":"and","nativeSrc":"1445:3:87","nodeType":"YulIdentifier","src":"1445:3:87"},"nativeSrc":"1445:16:87","nodeType":"YulFunctionCall","src":"1445:16:87"}],"functionName":{"name":"eq","nativeSrc":"1435:2:87","nodeType":"YulIdentifier","src":"1435:2:87"},"nativeSrc":"1435:27:87","nodeType":"YulFunctionCall","src":"1435:27:87"}],"functionName":{"name":"iszero","nativeSrc":"1428:6:87","nodeType":"YulIdentifier","src":"1428:6:87"},"nativeSrc":"1428:35:87","nodeType":"YulFunctionCall","src":"1428:35:87"},"nativeSrc":"1425:55:87","nodeType":"YulIf","src":"1425:55:87"},{"nativeSrc":"1489:15:87","nodeType":"YulAssignment","src":"1489:15:87","value":{"name":"value","nativeSrc":"1499:5:87","nodeType":"YulIdentifier","src":"1499:5:87"},"variableNames":[{"name":"value0","nativeSrc":"1489:6:87","nodeType":"YulIdentifier","src":"1489:6:87"}]}]},"name":"abi_decode_tuple_t_uint8_fromMemory","nativeSrc":"1237:273:87","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nativeSrc":"1282:9:87","nodeType":"YulTypedName","src":"1282:9:87","type":""},{"name":"dataEnd","nativeSrc":"1293:7:87","nodeType":"YulTypedName","src":"1293:7:87","type":""}],"returnVariables":[{"name":"value0","nativeSrc":"1305:6:87","nodeType":"YulTypedName","src":"1305:6:87","type":""}],"src":"1237:273:87"},{"body":{"nativeSrc":"1742:252:87","nodeType":"YulBlock","src":"1742:252:87","statements":[{"expression":{"arguments":[{"name":"headStart","nativeSrc":"1759:9:87","nodeType":"YulIdentifier","src":"1759:9:87"},{"kind":"number","nativeSrc":"1770:2:87","nodeType":"YulLiteral","src":"1770:2:87","type":"","value":"64"}],"functionName":{"name":"mstore","nativeSrc":"1752:6:87","nodeType":"YulIdentifier","src":"1752:6:87"},"nativeSrc":"1752:21:87","nodeType":"YulFunctionCall","src":"1752:21:87"},"nativeSrc":"1752:21:87","nodeType":"YulExpressionStatement","src":"1752:21:87"},{"expression":{"arguments":[{"arguments":[{"name":"headStart","nativeSrc":"1793:9:87","nodeType":"YulIdentifier","src":"1793:9:87"},{"kind":"number","nativeSrc":"1804:2:87","nodeType":"YulLiteral","src":"1804:2:87","type":"","value":"64"}],"functionName":{"name":"add","nativeSrc":"1789:3:87","nodeType":"YulIdentifier","src":"1789:3:87"},"nativeSrc":"1789:18:87","nodeType":"YulFunctionCall","src":"1789:18:87"},{"kind":"number","nativeSrc":"1809:2:87","nodeType":"YulLiteral","src":"1809:2:87","type":"","value":"30"}],"functionName":{"name":"mstore","nativeSrc":"1782:6:87","nodeType":"YulIdentifier","src":"1782:6:87"},"nativeSrc":"1782:30:87","nodeType":"YulFunctionCall","src":"1782:30:87"},"nativeSrc":"1782:30:87","nodeType":"YulExpressionStatement","src":"1782:30:87"},{"expression":{"arguments":[{"arguments":[{"name":"headStart","nativeSrc":"1832:9:87","nodeType":"YulIdentifier","src":"1832:9:87"},{"kind":"number","nativeSrc":"1843:2:87","nodeType":"YulLiteral","src":"1843:2:87","type":"","value":"96"}],"functionName":{"name":"add","nativeSrc":"1828:3:87","nodeType":"YulIdentifier","src":"1828:3:87"},"nativeSrc":"1828:18:87","nodeType":"YulFunctionCall","src":"1828:18:87"},{"hexValue":"636f2e656e7375726f2e496e766573745374726174656779436c69656e74","kind":"string","nativeSrc":"1848:32:87","nodeType":"YulLiteral","src":"1848:32:87","type":"","value":"co.ensuro.InvestStrategyClient"}],"functionName":{"name":"mstore","nativeSrc":"1821:6:87","nodeType":"YulIdentifier","src":"1821:6:87"},"nativeSrc":"1821:60:87","nodeType":"YulFunctionCall","src":"1821:60:87"},"nativeSrc":"1821:60:87","nodeType":"YulExpressionStatement","src":"1821:60:87"},{"nativeSrc":"1890:27:87","nodeType":"YulAssignment","src":"1890:27:87","value":{"arguments":[{"name":"headStart","nativeSrc":"1902:9:87","nodeType":"YulIdentifier","src":"1902:9:87"},{"kind":"number","nativeSrc":"1913:3:87","nodeType":"YulLiteral","src":"1913:3:87","type":"","value":"128"}],"functionName":{"name":"add","nativeSrc":"1898:3:87","nodeType":"YulIdentifier","src":"1898:3:87"},"nativeSrc":"1898:19:87","nodeType":"YulFunctionCall","src":"1898:19:87"},"variableNames":[{"name":"tail","nativeSrc":"1890:4:87","nodeType":"YulIdentifier","src":"1890:4:87"}]},{"expression":{"arguments":[{"arguments":[{"name":"headStart","nativeSrc":"1937:9:87","nodeType":"YulIdentifier","src":"1937:9:87"},{"kind":"number","nativeSrc":"1948:4:87","nodeType":"YulLiteral","src":"1948:4:87","type":"","value":"0x20"}],"functionName":{"name":"add","nativeSrc":"1933:3:87","nodeType":"YulIdentifier","src":"1933:3:87"},"nativeSrc":"1933:20:87","nodeType":"YulFunctionCall","src":"1933:20:87"},{"arguments":[{"name":"value0","nativeSrc":"1959:6:87","nodeType":"YulIdentifier","src":"1959:6:87"},{"arguments":[{"arguments":[{"kind":"number","nativeSrc":"1975:3:87","nodeType":"YulLiteral","src":"1975:3:87","type":"","value":"160"},{"kind":"number","nativeSrc":"1980:1:87","nodeType":"YulLiteral","src":"1980:1:87","type":"","value":"1"}],"functionName":{"name":"shl","nativeSrc":"1971:3:87","nodeType":"YulIdentifier","src":"1971:3:87"},"nativeSrc":"1971:11:87","nodeType":"YulFunctionCall","src":"1971:11:87"},{"kind":"number","nativeSrc":"1984:1:87","nodeType":"YulLiteral","src":"1984:1:87","type":"","value":"1"}],"functionName":{"name":"sub","nativeSrc":"1967:3:87","nodeType":"YulIdentifier","src":"1967:3:87"},"nativeSrc":"1967:19:87","nodeType":"YulFunctionCall","src":"1967:19:87"}],"functionName":{"name":"and","nativeSrc":"1955:3:87","nodeType":"YulIdentifier","src":"1955:3:87"},"nativeSrc":"1955:32:87","nodeType":"YulFunctionCall","src":"1955:32:87"}],"functionName":{"name":"mstore","nativeSrc":"1926:6:87","nodeType":"YulIdentifier","src":"1926:6:87"},"nativeSrc":"1926:62:87","nodeType":"YulFunctionCall","src":"1926:62:87"},"nativeSrc":"1926:62:87","nodeType":"YulExpressionStatement","src":"1926:62:87"}]},"name":"abi_encode_tuple_t_stringliteral_4fed0cd3539a36e00a34a6c026c2615824c9ad47da5ef65e8372c7e721c05d79_t_contract$_IInvestStrategy_$20725__to_t_string_memory_ptr_t_address__fromStack_reversed","nativeSrc":"1515:479:87","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nativeSrc":"1711:9:87","nodeType":"YulTypedName","src":"1711:9:87","type":""},{"name":"value0","nativeSrc":"1722:6:87","nodeType":"YulTypedName","src":"1722:6:87","type":""}],"returnVariables":[{"name":"tail","nativeSrc":"1733:4:87","nodeType":"YulTypedName","src":"1733:4:87","type":""}],"src":"1515:479:87"}]},"contents":"{\n    { }\n    function validator_revert_contract_IERC20Metadata(value)\n    {\n        if iszero(eq(value, and(value, sub(shl(160, 1), 1)))) { revert(0, 0) }\n    }\n    function abi_decode_tuple_t_contract$_IERC20Metadata_$9411t_contract$_IERC20Metadata_$9411t_contract$_AggregatorV3Interface_$20542t_contract$_AggregatorV3Interface_$20542t_uint256t_contract$_IMerklDistributor_$23442_fromMemory(headStart, dataEnd) -> value0, value1, value2, value3, value4, value5\n    {\n        if slt(sub(dataEnd, headStart), 192) { revert(0, 0) }\n        let value := mload(headStart)\n        validator_revert_contract_IERC20Metadata(value)\n        value0 := value\n        let value_1 := mload(add(headStart, 32))\n        validator_revert_contract_IERC20Metadata(value_1)\n        value1 := value_1\n        let value_2 := mload(add(headStart, 64))\n        validator_revert_contract_IERC20Metadata(value_2)\n        value2 := value_2\n        let value_3 := mload(add(headStart, 96))\n        validator_revert_contract_IERC20Metadata(value_3)\n        value3 := value_3\n        value4 := mload(add(headStart, 128))\n        let value_4 := mload(add(headStart, 160))\n        validator_revert_contract_IERC20Metadata(value_4)\n        value5 := value_4\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_stringliteral_4fed0cd3539a36e00a34a6c026c2615824c9ad47da5ef65e8372c7e721c05d79_t_contract$_IInvestStrategy_$20725__to_t_string_memory_ptr_t_address__fromStack_reversed(headStart, value0) -> tail\n    {\n        mstore(headStart, 64)\n        mstore(add(headStart, 64), 30)\n        mstore(add(headStart, 96), \"co.ensuro.InvestStrategyClient\")\n        tail := add(headStart, 128)\n        mstore(add(headStart, 0x20), and(value0, sub(shl(160, 1), 1)))\n    }\n}","id":87,"language":"Yul","name":"#utility.yul"}],"linkReferences":{"@ensuro/swaplibrary/contracts/SwapLibrary.sol":{"SwapLibrary":[{"length":20,"start":2429},{"length":20,"start":2725},{"length":20,"start":3282},{"length":20,"start":4379},{"length":20,"start":6213}]}},"object":"30608081815260406101a0818152601e6101e0527f636f2e656e7375726f2e496e766573745374726174656779436c69656e740000610200526101c0939093526101808290526102209052902060a05234801561005a575f5ffd5b5060405161241b38038061241b8339810160408190526100799161020e565b858585858584846012826001600160a01b031663313ce5676040518163ffffffff1660e01b8152600401602060405180830381865afa1580156100be573d5f5f3e3d5ffd5b505050506040513d601f19601f820116820180604052508101906100e29190610287565b60ff16111561010457604051636448d6e960e11b815260040160405180910390fd5b6012816001600160a01b031663313ce5676040518163ffffffff1660e01b8152600401602060405180830381865afa158015610142573d5f5f3e3d5ffd5b505050506040513d601f19601f820116820180604052508101906101669190610287565b60ff16111561018857604051636448d6e960e11b815260040160405180910390fd5b806001600160a01b0316826001600160a01b0316036101ba57604051636448d6e960e11b815260040160405180910390fd5b6001600160a01b0391821660c052811660e0529182166101205291811661010052610140919091529290921661016052506102ae95505050505050565b6001600160a01b038116811461020b575f5ffd5b50565b5f5f5f5f5f5f60c08789031215610223575f5ffd5b865161022e816101f7565b602088015190965061023f816101f7565b6040880151909550610250816101f7565b6060880151909450610261816101f7565b608088015160a08901519194509250610279816101f7565b809150509295509295509295565b5f60208284031215610297575f5ffd5b815160ff811681146102a7575f5ffd5b9392505050565b60805160a05160c05160e0516101005161012051610140516101605161204e6103cd5f395f81816102b60152610bcc01525f81816101fc01528181611023015261105401525f81816101d5015261043f01525f818161014e015261047101525f81816102fc01528181610526015281816105ce015281816106fa01528181610942015281816109f801528181610b7601528181610ccf01528181610d6a01528181610ead015261132901525f8181610269015281816105f00152818161071c0152818161092101528181610d8b01526112fa01525f818161023601528181611225015281816113c0015261154801525f818161033d015281816104a9015281816107bd01528181610839015281816108b60152610f09015261204e5ff3fe608060405234801561000f575f5ffd5b5060043610610106575f3560e01c80635a1174561161009e578063b6b55f251161006e578063b6b55f251461029e578063bfe10928146102b1578063ce96cb77146102d8578063de846ae4146102eb578063f3e0ffbf1461031e575f5ffd5b80635a1174561461021e5780635b9a4c35146102315780639c4667a2146102585780639cd471281461028b575f5ffd5b8063402d267d116100d9578063402d267d1461019d57806342b054f0146101b057806352ebfa29146101d057806359011cd1146101f7575f5ffd5b80630981b1c21461010a5780631418983b146101335780631d4d3a5d146101495780632e1a7d4d14610188575b5f5ffd5b61011d6101183660046117cd565b610331565b60405161012a9190611848565b60405180910390f35b61013b610436565b60405190815260200161012a565b6101707f000000000000000000000000000000000000000000000000000000000000000081565b6040516001600160a01b03909116815260200161012a565b61019b61019636600461185a565b61049f565b005b61013b6101ab366004611871565b505f90565b6101c36101be366004611871565b61078f565b60405161012a91906118f1565b6101707f000000000000000000000000000000000000000000000000000000000000000081565b61013b7f000000000000000000000000000000000000000000000000000000000000000081565b61019b61022c366004611903565b6107b3565b61013b7f000000000000000000000000000000000000000000000000000000000000000081565b610170610266366004611871565b507f000000000000000000000000000000000000000000000000000000000000000090565b61019b610299366004611922565b61082f565b61019b6102ac36600461185a565b6108ac565b6101707f000000000000000000000000000000000000000000000000000000000000000081565b61013b6102e6366004611871565b6109cd565b6101706102f9366004611871565b507f000000000000000000000000000000000000000000000000000000000000000090565b61013b61032c366004611871565b6109d3565b60606001600160a01b037f000000000000000000000000000000000000000000000000000000000000000016300361037c57604051632abf118b60e21b815260040160405180910390fd5b5f8360ff16600381111561039257610392611897565b905060018160038111156103a8576103a8611897565b036103bb576103b683610a67565b61042e565b60028160038111156103cf576103cf611897565b036103e7576103dd83610a67565b6103b65f19610cb2565b60038160038111156103fb576103fb611897565b0361041c576103b6838060200190518101906104179190611954565b610cb2565b6104268484610efd565b915050610430565b505b92915050565b5f61049a6104637f0000000000000000000000000000000000000000000000000000000000000000610f9a565b670de0b6b3a76400006104957f0000000000000000000000000000000000000000000000000000000000000000610f9a565b611157565b905090565b6001600160a01b037f00000000000000000000000000000000000000000000000000000000000000001630036104e857604051632abf118b60e21b815260040160405180910390fd5b801561078c575f6104f7611208565b90505f6105026112de565b6040516370a0823160e01b8152306004820152909150610595906001600160a01b037f000000000000000000000000000000000000000000000000000000000000000016906370a0823190602401602060405180830381865afa15801561056b573d5f5f3e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061058f9190611954565b306112f4565b83106106c9576040516370a0823160e01b815230600482015273__$acbb9ece542dcf2065f41aa3c8cca5827e$__9063775669159084907f0000000000000000000000000000000000000000000000000000000000000000907f0000000000000000000000000000000000000000000000000000000000000000906001600160a01b038316906370a0823190602401602060405180830381865afa15801561063f573d5f5f3e3d5ffd5b505050506040513d601f19601f820116820180604052508101906106639190611954565b866040518663ffffffff1660e01b815260040161068495949392919061196b565b602060405180830381865af415801561069f573d5f5f3e3d5ffd5b505050506040513d601f19601f820116820180604052508101906106c39190611954565b50610789565b60405163581e517d60e01b815273__$acbb9ece542dcf2065f41aa3c8cca5827e$__9063581e517d906107489085907f0000000000000000000000000000000000000000000000000000000000000000907f0000000000000000000000000000000000000000000000000000000000000000908990889060040161196b565b602060405180830381865af4158015610763573d5f5f3e3d5ffd5b505050506040513d601f19601f820116820180604052508101906107879190611954565b505b50505b50565b60408051606080820183525f80835260208301529181019190915261043082611396565b6001600160a01b037f00000000000000000000000000000000000000000000000000000000000000001630036107fc57604051632abf118b60e21b815260040160405180910390fd5b80158015610811575061080e306109d3565b15155b1561078c576040516342a176d160e11b815260040160405180910390fd5b6001600160a01b037f000000000000000000000000000000000000000000000000000000000000000016300361087857604051632abf118b60e21b815260040160405180910390fd5b604080516060810190915261078c90805f81526020015f815260200160405180602001604052805f81525081525082611451565b6001600160a01b037f00000000000000000000000000000000000000000000000000000000000000001630036108f557604051632abf118b60e21b815260040160405180910390fd5b801561078c57610903611208565b73__$acbb9ece542dcf2065f41aa3c8cca5827e$__637756691590917f00000000000000000000000000000000000000000000000000000000000000007f00000000000000000000000000000000000000000000000000000000000000008561096a610436565b6040518663ffffffff1660e01b815260040161098a95949392919061196b565b602060405180830381865af41580156109a5573d5f5f3e3d5ffd5b505050506040513d601f19601f820116820180604052508101906109c99190611954565b5050565b5f610430825b6040516370a0823160e01b81526001600160a01b0382811660048301525f91610430917f000000000000000000000000000000000000000000000000000000000000000016906370a0823190602401602060405180830381865afa158015610a3d573d5f5f3e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610a619190611954565b836112f4565b6040805160018082528183019092525f916020808301908036833750506040805160018082528183019092529293505f9291506020808301908036833750506040805160018082528183019092529293505f9291506020808301908036833750506040805160018082528183019092529293505f929150602082015b6060815260200190600190039081610ae357905050905084806020019051810190610b0e91906119aa565b855f81518110610b2057610b20611a5f565b60200260200101835f81518110610b3957610b39611a5f565b6020026020010182905282815250505030835f81518110610b5c57610b5c611a5f565b6001600160a01b03909216602092830291909101909101527f0000000000000000000000000000000000000000000000000000000000000000825f81518110610ba757610ba7611a5f565b6001600160a01b0392831660209182029290920101526040516301c7ba5760e61b81527f0000000000000000000000000000000000000000000000000000000000000000909116906371ee95c090610c09908690869089908790600401611ab6565b5f604051808303815f87803b158015610c20575f5ffd5b505af1158015610c32573d5f5f3e3d5ffd5b50505050815f81518110610c4857610c48611a5f565b60200260200101516001600160a01b03167ffc30cddea38e2bf4d6ea7d3f9ed3b6ad7f176419f4963bd81318067a4aee73fe855f81518110610c8c57610c8c611a5f565b6020026020010151604051610ca391815260200190565b60405180910390a25050505050565b5f198103610d43576040516370a0823160e01b81523060048201527f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316906370a0823190602401602060405180830381865afa158015610d1c573d5f5f3e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610d409190611954565b90505b5f610d4c611208565b73__$acbb9ece542dcf2065f41aa3c8cca5827e$__637756691590917f00000000000000000000000000000000000000000000000000000000000000007f000000000000000000000000000000000000000000000000000000000000000086610db36112de565b6040518663ffffffff1660e01b8152600401610dd395949392919061196b565b602060405180830381865af4158015610dee573d5f5f3e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610e129190611954565b9050610e9481604051602401610e2a91815260200190565b60408051601f198184030181529190526020810180516001600160e01b031663230a5c4b60e11b179052610e857f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc546001600160a01b031690565b6001600160a01b031690611571565b5060408051838152602081018390526001600160a01b037f000000000000000000000000000000000000000000000000000000000000000016917f1704c39241bc5ffa667c69806b5ba3acd0d4637515695bab7a812e01e5ee27eb910160405180910390a25050565b60606001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000163003610f4857604051632abf118b60e21b815260040160405180910390fd5b5f60ff84168015610f5b57610f5b611897565b90505f818015610f6d57610f6d611897565b0361010657610f84610f7e30611396565b84611451565b505060408051602081019091525f815292915050565b5f6001600160a01b038216610fb85750670de0b6b3a7640000919050565b5f5f836001600160a01b031663feaf968c6040518163ffffffff1660e01b815260040160a060405180830381865afa158015610ff6573d5f5f3e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061101a9190611bbe565b509350509250507f00000000000000000000000000000000000000000000000000000000000000004261104d9190611c20565b81116110797f000000000000000000000000000000000000000000000000000000000000000042611c20565b8290916110a757604051633156ea9360e01b8152600481019290925260248201526044015b60405180910390fd5b50505f821382906110ce576040516338ee04a760e01b815260040161109e91815260200190565b50836001600160a01b031663313ce5676040518163ffffffff1660e01b8152600401602060405180830381865afa15801561110b573d5f5f3e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061112f9190611c33565b61113a906012611c4e565b61114590600a611d4a565b61114f9083611d58565b949350505050565b5f5f5f61116486866115fd565b91509150815f036111885783818161117e5761117e611d6f565b0492505050611201565b81841161119f5761119f6003851502601118611619565b5f848688095f868103871696879004966002600389028118808a02820302808a02820302808a02820302808a02820302808a02820302808a02909103029181900381900460010185841190960395909502919093039390930492909217029150505b9392505050565b60408051606080820183525f8083526020830152918101919091527f0000000000000000000000000000000000000000000000000000000000000000805461124f90611d83565b80601f016020809104026020016040519081016040528092919081815260200182805461127b90611d83565b80156112c65780601f1061129d576101008083540402835291602001916112c6565b820191905f5260205f20905b8154815290600101906020018083116112a957829003601f168201915b505050505080602001905181019061049a9190611e08565b5f61049a670de0b6b3a764000080610495610436565b5f61131e7f000000000000000000000000000000000000000000000000000000000000000061162a565b61138c61136d61134d7f000000000000000000000000000000000000000000000000000000000000000061162a565b6113579087611d58565b61135f610436565b670de0b6b3a7640000611157565b61137685611396565b6020015161135f90670de0b6b3a7640000611c20565b6112019190611e94565b60408051606080820183525f8083526020830152918101919091526040516347e5753360e01b81527f000000000000000000000000000000000000000000000000000000000000000060048201525f906001600160a01b038416906347e57533906024015f60405180830381865afa158015611414573d5f5f3e3d5ffd5b505050506040513d5f823e601f3d908101601f1916820160405261143b9190810190611eb3565b9050808060200190518101906112019190611e08565b5f818060200190518101906114669190611e08565b604051632cbf28cb60e21b815290915073__$acbb9ece542dcf2065f41aa3c8cca5827e$__9063b2fca32c906114a09084906004016118f1565b5f6040518083038186803b1580156114b6575f5ffd5b505af41580156114c8573d5f5f3e3d5ffd5b505050508151816040516020016114df91906118f1565b604051602081830303815290604052511461150d576040516350701b6160e01b815260040160405180910390fd5b7fca7f7aa563866a1d31c74deba224724d1da9c35cbb6f783f2ccf0182f91e34f8838260405161153e929190611ee5565b60405180910390a17f00000000000000000000000000000000000000000000000000000000000000006107878382611f5d565b60605f61157e84846116a1565b905080801561159f57505f3d118061159f57505f846001600160a01b03163b115b156115ac576104266116b4565b80156115d657604051639996b31560e01b81526001600160a01b038516600482015260240161109e565b3d156115e4576103b66116cd565b60405163d6bda27560e01b815260040160405180910390fd5b5f805f1983850993909202808410938190039390930393915050565b634e487b715f52806020526024601cfd5b5f816001600160a01b031663313ce5676040518163ffffffff1660e01b8152600401602060405180830381865afa158015611667573d5f5f3e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061168b9190611c33565b611696906012611c4e565b61043090600a611d4a565b5f5f5f835160208501865af49392505050565b6040513d81523d5f602083013e3d602001810160405290565b6040513d5f823e3d81fd5b60ff8116811461078c575f5ffd5b634e487b7160e01b5f52604160045260245ffd5b6040516060810167ffffffffffffffff8111828210171561171d5761171d6116e6565b60405290565b604051601f8201601f1916810167ffffffffffffffff8111828210171561174c5761174c6116e6565b604052919050565b5f67ffffffffffffffff82111561176d5761176d6116e6565b50601f01601f191660200190565b5f82601f83011261178a575f5ffd5b813561179d61179882611754565b611723565b8181528460208386010111156117b1575f5ffd5b816020850160208301375f918101602001919091529392505050565b5f5f604083850312156117de575f5ffd5b82356117e9816116d8565b9150602083013567ffffffffffffffff811115611804575f5ffd5b6118108582860161177b565b9150509250929050565b5f81518084528060208401602086015e5f602082860101526020601f19601f83011685010191505092915050565b602081525f611201602083018461181a565b5f6020828403121561186a575f5ffd5b5035919050565b5f60208284031215611881575f5ffd5b81356001600160a01b0381168114611201575f5ffd5b634e487b7160e01b5f52602160045260245ffd5b5f8151600381106118ca57634e487b7160e01b5f52602160045260245ffd5b808452506020820151602084015260408201516060604085015261114f606085018261181a565b602081525f61120160208301846118ab565b5f60208284031215611913575f5ffd5b81358015158114611201575f5ffd5b5f60208284031215611932575f5ffd5b813567ffffffffffffffff811115611948575f5ffd5b61114f8482850161177b565b5f60208284031215611964575f5ffd5b5051919050565b60a081525f61197d60a08301886118ab565b6001600160a01b039687166020840152949095166040820152606081019290925260809091015292915050565b5f5f604083850312156119bb575f5ffd5b8251602084015190925067ffffffffffffffff8111156119d9575f5ffd5b8301601f810185136119e9575f5ffd5b805167ffffffffffffffff811115611a0357611a036116e6565b8060051b611a1360208201611723565b91825260208184018101929081019088841115611a2e575f5ffd5b6020850194505b83851015611a50578451825260209485019490910190611a35565b80955050505050509250929050565b634e487b7160e01b5f52603260045260245ffd5b5f8151808452602084019350602083015f5b82811015611aac5781516001600160a01b0316865260209586019590910190600101611a85565b5093949350505050565b608081525f611ac86080830187611a73565b8281036020840152611ada8187611a73565b8381036040850152855180825260208088019350909101905f5b81811015611b12578351835260209384019390920191600101611af4565b50508381036060850152845180825260208083019350600582901b830181019087015f5b83811015611b9057848303601f19018652815180518085526020918201918501905f5b81811015611b77578351835260209384019390920191600101611b59565b5050602097880197909450929092019150600101611b36565b50909a9950505050505050505050565b805169ffffffffffffffffffff81168114611bb9575f5ffd5b919050565b5f5f5f5f5f60a08688031215611bd2575f5ffd5b611bdb86611ba0565b60208701516040880151606089015192975090955093509150611c0060808701611ba0565b90509295509295909350565b634e487b7160e01b5f52601160045260245ffd5b8181038181111561043057610430611c0c565b5f60208284031215611c43575f5ffd5b8151611201816116d8565b60ff828116828216039081111561043057610430611c0c565b6001815b6001841115611ca257808504811115611c8657611c86611c0c565b6001841615611c9457908102905b60019390931c928002611c6b565b935093915050565b5f82611cb857506001610430565b81611cc457505f610430565b8160018114611cda5760028114611ce457611d00565b6001915050610430565b60ff841115611cf557611cf5611c0c565b50506001821b610430565b5060208310610133831016604e8410600b8410161715611d23575081810a610430565b611d2f5f198484611c67565b805f1904821115611d4257611d42611c0c565b029392505050565b5f61120160ff841683611caa565b808202811582820484141761043057610430611c0c565b634e487b7160e01b5f52601260045260245ffd5b600181811c90821680611d9757607f821691505b602082108103611db557634e487b7160e01b5f52602260045260245ffd5b50919050565b5f82601f830112611dca575f5ffd5b8151611dd861179882611754565b818152846020838601011115611dec575f5ffd5b8160208501602083015e5f918101602001919091529392505050565b5f60208284031215611e18575f5ffd5b815167ffffffffffffffff811115611e2e575f5ffd5b820160608185031215611e3f575f5ffd5b611e476116fa565b815160038110611e55575f5ffd5b815260208281015190820152604082015167ffffffffffffffff811115611e7a575f5ffd5b611e8686828501611dbb565b604083015250949350505050565b5f82611eae57634e487b7160e01b5f52601260045260245ffd5b500490565b5f60208284031215611ec3575f5ffd5b815167ffffffffffffffff811115611ed9575f5ffd5b61114f84828501611dbb565b604081525f611ef760408301856118ab565b8281036020840152611f0981856118ab565b95945050505050565b601f82111561078957805f5260205f20601f840160051c81016020851015611f375750805b601f840160051c820191505b81811015611f56575f8155600101611f43565b5050505050565b815167ffffffffffffffff811115611f7757611f776116e6565b611f8b81611f858454611d83565b84611f12565b6020601f821160018114611fbd575f8315611fa65750848201515b5f19600385901b1c1916600184901b178455611f56565b5f84815260208120601f198516915b82811015611fec5787850151825560209485019460019092019101611fcc565b508482101561200957868401515f19600387901b60f8161c191681555b50505050600190811b0190555056fea2646970667358221220faf55cf420a6e719d8e774740eb363472a4a8053149b036fc24657c55265417164736f6c634300081e0033","opcodes":"ADDRESS PUSH1 0x80 DUP2 DUP2 MSTORE PUSH1 0x40 PUSH2 0x1A0 DUP2 DUP2 MSTORE PUSH1 0x1E PUSH2 0x1E0 MSTORE PUSH32 0x636F2E656E7375726F2E496E766573745374726174656779436C69656E740000 PUSH2 0x200 MSTORE PUSH2 0x1C0 SWAP4 SWAP1 SWAP4 MSTORE PUSH2 0x180 DUP3 SWAP1 MSTORE PUSH2 0x220 SWAP1 MSTORE SWAP1 KECCAK256 PUSH1 0xA0 MSTORE CALLVALUE DUP1 ISZERO PUSH2 0x5A JUMPI PUSH0 PUSH0 REVERT JUMPDEST POP PUSH1 0x40 MLOAD PUSH2 0x241B CODESIZE SUB DUP1 PUSH2 0x241B DUP4 CODECOPY DUP2 ADD PUSH1 0x40 DUP2 SWAP1 MSTORE PUSH2 0x79 SWAP2 PUSH2 0x20E JUMP JUMPDEST DUP6 DUP6 DUP6 DUP6 DUP6 DUP5 DUP5 PUSH1 0x12 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 GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0xBE JUMPI RETURNDATASIZE PUSH0 PUSH0 RETURNDATACOPY RETURNDATASIZE PUSH0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP3 ADD DUP1 PUSH1 0x40 MSTORE POP DUP2 ADD SWAP1 PUSH2 0xE2 SWAP2 SWAP1 PUSH2 0x287 JUMP JUMPDEST PUSH1 0xFF AND GT ISZERO PUSH2 0x104 JUMPI PUSH1 0x40 MLOAD PUSH4 0x6448D6E9 PUSH1 0xE1 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH1 0x12 DUP2 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 GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x142 JUMPI RETURNDATASIZE PUSH0 PUSH0 RETURNDATACOPY RETURNDATASIZE PUSH0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP3 ADD DUP1 PUSH1 0x40 MSTORE POP DUP2 ADD SWAP1 PUSH2 0x166 SWAP2 SWAP1 PUSH2 0x287 JUMP JUMPDEST PUSH1 0xFF AND GT ISZERO PUSH2 0x188 JUMPI PUSH1 0x40 MLOAD PUSH4 0x6448D6E9 PUSH1 0xE1 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST DUP1 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP3 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND SUB PUSH2 0x1BA JUMPI PUSH1 0x40 MLOAD PUSH4 0x6448D6E9 PUSH1 0xE1 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP2 DUP3 AND PUSH1 0xC0 MSTORE DUP2 AND PUSH1 0xE0 MSTORE SWAP2 DUP3 AND PUSH2 0x120 MSTORE SWAP2 DUP2 AND PUSH2 0x100 MSTORE PUSH2 0x140 SWAP2 SWAP1 SWAP2 MSTORE SWAP3 SWAP1 SWAP3 AND PUSH2 0x160 MSTORE POP PUSH2 0x2AE SWAP6 POP POP POP POP POP POP JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 AND DUP2 EQ PUSH2 0x20B JUMPI PUSH0 PUSH0 REVERT JUMPDEST POP JUMP JUMPDEST PUSH0 PUSH0 PUSH0 PUSH0 PUSH0 PUSH0 PUSH1 0xC0 DUP8 DUP10 SUB SLT ISZERO PUSH2 0x223 JUMPI PUSH0 PUSH0 REVERT JUMPDEST DUP7 MLOAD PUSH2 0x22E DUP2 PUSH2 0x1F7 JUMP JUMPDEST PUSH1 0x20 DUP9 ADD MLOAD SWAP1 SWAP7 POP PUSH2 0x23F DUP2 PUSH2 0x1F7 JUMP JUMPDEST PUSH1 0x40 DUP9 ADD MLOAD SWAP1 SWAP6 POP PUSH2 0x250 DUP2 PUSH2 0x1F7 JUMP JUMPDEST PUSH1 0x60 DUP9 ADD MLOAD SWAP1 SWAP5 POP PUSH2 0x261 DUP2 PUSH2 0x1F7 JUMP JUMPDEST PUSH1 0x80 DUP9 ADD MLOAD PUSH1 0xA0 DUP10 ADD MLOAD SWAP2 SWAP5 POP SWAP3 POP PUSH2 0x279 DUP2 PUSH2 0x1F7 JUMP JUMPDEST DUP1 SWAP2 POP POP SWAP3 SWAP6 POP SWAP3 SWAP6 POP SWAP3 SWAP6 JUMP JUMPDEST PUSH0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x297 JUMPI PUSH0 PUSH0 REVERT JUMPDEST DUP2 MLOAD PUSH1 0xFF DUP2 AND DUP2 EQ PUSH2 0x2A7 JUMPI PUSH0 PUSH0 REVERT JUMPDEST SWAP4 SWAP3 POP POP POP JUMP JUMPDEST PUSH1 0x80 MLOAD PUSH1 0xA0 MLOAD PUSH1 0xC0 MLOAD PUSH1 0xE0 MLOAD PUSH2 0x100 MLOAD PUSH2 0x120 MLOAD PUSH2 0x140 MLOAD PUSH2 0x160 MLOAD PUSH2 0x204E PUSH2 0x3CD PUSH0 CODECOPY PUSH0 DUP2 DUP2 PUSH2 0x2B6 ADD MSTORE PUSH2 0xBCC ADD MSTORE PUSH0 DUP2 DUP2 PUSH2 0x1FC ADD MSTORE DUP2 DUP2 PUSH2 0x1023 ADD MSTORE PUSH2 0x1054 ADD MSTORE PUSH0 DUP2 DUP2 PUSH2 0x1D5 ADD MSTORE PUSH2 0x43F ADD MSTORE PUSH0 DUP2 DUP2 PUSH2 0x14E ADD MSTORE PUSH2 0x471 ADD MSTORE PUSH0 DUP2 DUP2 PUSH2 0x2FC ADD MSTORE DUP2 DUP2 PUSH2 0x526 ADD MSTORE DUP2 DUP2 PUSH2 0x5CE ADD MSTORE DUP2 DUP2 PUSH2 0x6FA ADD MSTORE DUP2 DUP2 PUSH2 0x942 ADD MSTORE DUP2 DUP2 PUSH2 0x9F8 ADD MSTORE DUP2 DUP2 PUSH2 0xB76 ADD MSTORE DUP2 DUP2 PUSH2 0xCCF ADD MSTORE DUP2 DUP2 PUSH2 0xD6A ADD MSTORE DUP2 DUP2 PUSH2 0xEAD ADD MSTORE PUSH2 0x1329 ADD MSTORE PUSH0 DUP2 DUP2 PUSH2 0x269 ADD MSTORE DUP2 DUP2 PUSH2 0x5F0 ADD MSTORE DUP2 DUP2 PUSH2 0x71C ADD MSTORE DUP2 DUP2 PUSH2 0x921 ADD MSTORE DUP2 DUP2 PUSH2 0xD8B ADD MSTORE PUSH2 0x12FA ADD MSTORE PUSH0 DUP2 DUP2 PUSH2 0x236 ADD MSTORE DUP2 DUP2 PUSH2 0x1225 ADD MSTORE DUP2 DUP2 PUSH2 0x13C0 ADD MSTORE PUSH2 0x1548 ADD MSTORE PUSH0 DUP2 DUP2 PUSH2 0x33D ADD MSTORE DUP2 DUP2 PUSH2 0x4A9 ADD MSTORE DUP2 DUP2 PUSH2 0x7BD ADD MSTORE DUP2 DUP2 PUSH2 0x839 ADD MSTORE DUP2 DUP2 PUSH2 0x8B6 ADD MSTORE PUSH2 0xF09 ADD MSTORE PUSH2 0x204E PUSH0 RETURN INVALID PUSH1 0x80 PUSH1 0x40 MSTORE CALLVALUE DUP1 ISZERO PUSH2 0xF JUMPI PUSH0 PUSH0 REVERT JUMPDEST POP PUSH1 0x4 CALLDATASIZE LT PUSH2 0x106 JUMPI PUSH0 CALLDATALOAD PUSH1 0xE0 SHR DUP1 PUSH4 0x5A117456 GT PUSH2 0x9E JUMPI DUP1 PUSH4 0xB6B55F25 GT PUSH2 0x6E JUMPI DUP1 PUSH4 0xB6B55F25 EQ PUSH2 0x29E JUMPI DUP1 PUSH4 0xBFE10928 EQ PUSH2 0x2B1 JUMPI DUP1 PUSH4 0xCE96CB77 EQ PUSH2 0x2D8 JUMPI DUP1 PUSH4 0xDE846AE4 EQ PUSH2 0x2EB JUMPI DUP1 PUSH4 0xF3E0FFBF EQ PUSH2 0x31E JUMPI PUSH0 PUSH0 REVERT JUMPDEST DUP1 PUSH4 0x5A117456 EQ PUSH2 0x21E JUMPI DUP1 PUSH4 0x5B9A4C35 EQ PUSH2 0x231 JUMPI DUP1 PUSH4 0x9C4667A2 EQ PUSH2 0x258 JUMPI DUP1 PUSH4 0x9CD47128 EQ PUSH2 0x28B JUMPI PUSH0 PUSH0 REVERT JUMPDEST DUP1 PUSH4 0x402D267D GT PUSH2 0xD9 JUMPI DUP1 PUSH4 0x402D267D EQ PUSH2 0x19D JUMPI DUP1 PUSH4 0x42B054F0 EQ PUSH2 0x1B0 JUMPI DUP1 PUSH4 0x52EBFA29 EQ PUSH2 0x1D0 JUMPI DUP1 PUSH4 0x59011CD1 EQ PUSH2 0x1F7 JUMPI PUSH0 PUSH0 REVERT JUMPDEST DUP1 PUSH4 0x981B1C2 EQ PUSH2 0x10A JUMPI DUP1 PUSH4 0x1418983B EQ PUSH2 0x133 JUMPI DUP1 PUSH4 0x1D4D3A5D EQ PUSH2 0x149 JUMPI DUP1 PUSH4 0x2E1A7D4D EQ PUSH2 0x188 JUMPI JUMPDEST PUSH0 PUSH0 REVERT JUMPDEST PUSH2 0x11D PUSH2 0x118 CALLDATASIZE PUSH1 0x4 PUSH2 0x17CD JUMP JUMPDEST PUSH2 0x331 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0x12A SWAP2 SWAP1 PUSH2 0x1848 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST PUSH2 0x13B PUSH2 0x436 JUMP JUMPDEST PUSH1 0x40 MLOAD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH2 0x12A JUMP JUMPDEST PUSH2 0x170 PUSH32 0x0 DUP2 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP1 SWAP2 AND DUP2 MSTORE PUSH1 0x20 ADD PUSH2 0x12A JUMP JUMPDEST PUSH2 0x19B PUSH2 0x196 CALLDATASIZE PUSH1 0x4 PUSH2 0x185A JUMP JUMPDEST PUSH2 0x49F JUMP JUMPDEST STOP JUMPDEST PUSH2 0x13B PUSH2 0x1AB CALLDATASIZE PUSH1 0x4 PUSH2 0x1871 JUMP JUMPDEST POP PUSH0 SWAP1 JUMP JUMPDEST PUSH2 0x1C3 PUSH2 0x1BE CALLDATASIZE PUSH1 0x4 PUSH2 0x1871 JUMP JUMPDEST PUSH2 0x78F JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0x12A SWAP2 SWAP1 PUSH2 0x18F1 JUMP JUMPDEST PUSH2 0x170 PUSH32 0x0 DUP2 JUMP JUMPDEST PUSH2 0x13B PUSH32 0x0 DUP2 JUMP JUMPDEST PUSH2 0x19B PUSH2 0x22C CALLDATASIZE PUSH1 0x4 PUSH2 0x1903 JUMP JUMPDEST PUSH2 0x7B3 JUMP JUMPDEST PUSH2 0x13B PUSH32 0x0 DUP2 JUMP JUMPDEST PUSH2 0x170 PUSH2 0x266 CALLDATASIZE PUSH1 0x4 PUSH2 0x1871 JUMP JUMPDEST POP PUSH32 0x0 SWAP1 JUMP JUMPDEST PUSH2 0x19B PUSH2 0x299 CALLDATASIZE PUSH1 0x4 PUSH2 0x1922 JUMP JUMPDEST PUSH2 0x82F JUMP JUMPDEST PUSH2 0x19B PUSH2 0x2AC CALLDATASIZE PUSH1 0x4 PUSH2 0x185A JUMP JUMPDEST PUSH2 0x8AC JUMP JUMPDEST PUSH2 0x170 PUSH32 0x0 DUP2 JUMP JUMPDEST PUSH2 0x13B PUSH2 0x2E6 CALLDATASIZE PUSH1 0x4 PUSH2 0x1871 JUMP JUMPDEST PUSH2 0x9CD JUMP JUMPDEST PUSH2 0x170 PUSH2 0x2F9 CALLDATASIZE PUSH1 0x4 PUSH2 0x1871 JUMP JUMPDEST POP PUSH32 0x0 SWAP1 JUMP JUMPDEST PUSH2 0x13B PUSH2 0x32C CALLDATASIZE PUSH1 0x4 PUSH2 0x1871 JUMP JUMPDEST PUSH2 0x9D3 JUMP JUMPDEST PUSH1 0x60 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB PUSH32 0x0 AND ADDRESS SUB PUSH2 0x37C JUMPI PUSH1 0x40 MLOAD PUSH4 0x2ABF118B PUSH1 0xE2 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH0 DUP4 PUSH1 0xFF AND PUSH1 0x3 DUP2 GT ISZERO PUSH2 0x392 JUMPI PUSH2 0x392 PUSH2 0x1897 JUMP JUMPDEST SWAP1 POP PUSH1 0x1 DUP2 PUSH1 0x3 DUP2 GT ISZERO PUSH2 0x3A8 JUMPI PUSH2 0x3A8 PUSH2 0x1897 JUMP JUMPDEST SUB PUSH2 0x3BB JUMPI PUSH2 0x3B6 DUP4 PUSH2 0xA67 JUMP JUMPDEST PUSH2 0x42E JUMP JUMPDEST PUSH1 0x2 DUP2 PUSH1 0x3 DUP2 GT ISZERO PUSH2 0x3CF JUMPI PUSH2 0x3CF PUSH2 0x1897 JUMP JUMPDEST SUB PUSH2 0x3E7 JUMPI PUSH2 0x3DD DUP4 PUSH2 0xA67 JUMP JUMPDEST PUSH2 0x3B6 PUSH0 NOT PUSH2 0xCB2 JUMP JUMPDEST PUSH1 0x3 DUP2 PUSH1 0x3 DUP2 GT ISZERO PUSH2 0x3FB JUMPI PUSH2 0x3FB PUSH2 0x1897 JUMP JUMPDEST SUB PUSH2 0x41C JUMPI PUSH2 0x3B6 DUP4 DUP1 PUSH1 0x20 ADD SWAP1 MLOAD DUP2 ADD SWAP1 PUSH2 0x417 SWAP2 SWAP1 PUSH2 0x1954 JUMP JUMPDEST PUSH2 0xCB2 JUMP JUMPDEST PUSH2 0x426 DUP5 DUP5 PUSH2 0xEFD JUMP JUMPDEST SWAP2 POP POP PUSH2 0x430 JUMP JUMPDEST POP JUMPDEST SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH0 PUSH2 0x49A PUSH2 0x463 PUSH32 0x0 PUSH2 0xF9A JUMP JUMPDEST PUSH8 0xDE0B6B3A7640000 PUSH2 0x495 PUSH32 0x0 PUSH2 0xF9A JUMP JUMPDEST PUSH2 0x1157 JUMP JUMPDEST SWAP1 POP SWAP1 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB PUSH32 0x0 AND ADDRESS SUB PUSH2 0x4E8 JUMPI PUSH1 0x40 MLOAD PUSH4 0x2ABF118B PUSH1 0xE2 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST DUP1 ISZERO PUSH2 0x78C JUMPI PUSH0 PUSH2 0x4F7 PUSH2 0x1208 JUMP JUMPDEST SWAP1 POP PUSH0 PUSH2 0x502 PUSH2 0x12DE JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH4 0x70A08231 PUSH1 0xE0 SHL DUP2 MSTORE ADDRESS PUSH1 0x4 DUP3 ADD MSTORE SWAP1 SWAP2 POP PUSH2 0x595 SWAP1 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB PUSH32 0x0 AND SWAP1 PUSH4 0x70A08231 SWAP1 PUSH1 0x24 ADD PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x56B JUMPI RETURNDATASIZE PUSH0 PUSH0 RETURNDATACOPY RETURNDATASIZE PUSH0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP3 ADD DUP1 PUSH1 0x40 MSTORE POP DUP2 ADD SWAP1 PUSH2 0x58F SWAP2 SWAP1 PUSH2 0x1954 JUMP JUMPDEST ADDRESS PUSH2 0x12F4 JUMP JUMPDEST DUP4 LT PUSH2 0x6C9 JUMPI PUSH1 0x40 MLOAD PUSH4 0x70A08231 PUSH1 0xE0 SHL DUP2 MSTORE ADDRESS PUSH1 0x4 DUP3 ADD MSTORE PUSH20 0x0 SWAP1 PUSH4 0x77566915 SWAP1 DUP5 SWAP1 PUSH32 0x0 SWAP1 PUSH32 0x0 SWAP1 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP4 AND SWAP1 PUSH4 0x70A08231 SWAP1 PUSH1 0x24 ADD PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x63F JUMPI RETURNDATASIZE PUSH0 PUSH0 RETURNDATACOPY RETURNDATASIZE PUSH0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP3 ADD DUP1 PUSH1 0x40 MSTORE POP DUP2 ADD SWAP1 PUSH2 0x663 SWAP2 SWAP1 PUSH2 0x1954 JUMP JUMPDEST DUP7 PUSH1 0x40 MLOAD DUP7 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x684 SWAP6 SWAP5 SWAP4 SWAP3 SWAP2 SWAP1 PUSH2 0x196B JUMP JUMPDEST PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 GAS DELEGATECALL ISZERO DUP1 ISZERO PUSH2 0x69F JUMPI RETURNDATASIZE PUSH0 PUSH0 RETURNDATACOPY RETURNDATASIZE PUSH0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP3 ADD DUP1 PUSH1 0x40 MSTORE POP DUP2 ADD SWAP1 PUSH2 0x6C3 SWAP2 SWAP1 PUSH2 0x1954 JUMP JUMPDEST POP PUSH2 0x789 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH4 0x581E517D PUSH1 0xE0 SHL DUP2 MSTORE PUSH20 0x0 SWAP1 PUSH4 0x581E517D SWAP1 PUSH2 0x748 SWAP1 DUP6 SWAP1 PUSH32 0x0 SWAP1 PUSH32 0x0 SWAP1 DUP10 SWAP1 DUP9 SWAP1 PUSH1 0x4 ADD PUSH2 0x196B JUMP JUMPDEST PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 GAS DELEGATECALL ISZERO DUP1 ISZERO PUSH2 0x763 JUMPI RETURNDATASIZE PUSH0 PUSH0 RETURNDATACOPY RETURNDATASIZE PUSH0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP3 ADD DUP1 PUSH1 0x40 MSTORE POP DUP2 ADD SWAP1 PUSH2 0x787 SWAP2 SWAP1 PUSH2 0x1954 JUMP JUMPDEST POP JUMPDEST POP POP JUMPDEST POP JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH1 0x60 DUP1 DUP3 ADD DUP4 MSTORE PUSH0 DUP1 DUP4 MSTORE PUSH1 0x20 DUP4 ADD MSTORE SWAP2 DUP2 ADD SWAP2 SWAP1 SWAP2 MSTORE PUSH2 0x430 DUP3 PUSH2 0x1396 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB PUSH32 0x0 AND ADDRESS SUB PUSH2 0x7FC JUMPI PUSH1 0x40 MLOAD PUSH4 0x2ABF118B PUSH1 0xE2 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST DUP1 ISZERO DUP1 ISZERO PUSH2 0x811 JUMPI POP PUSH2 0x80E ADDRESS PUSH2 0x9D3 JUMP JUMPDEST ISZERO ISZERO JUMPDEST ISZERO PUSH2 0x78C JUMPI PUSH1 0x40 MLOAD PUSH4 0x42A176D1 PUSH1 0xE1 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB PUSH32 0x0 AND ADDRESS SUB PUSH2 0x878 JUMPI PUSH1 0x40 MLOAD PUSH4 0x2ABF118B PUSH1 0xE2 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH1 0x60 DUP2 ADD SWAP1 SWAP2 MSTORE PUSH2 0x78C SWAP1 DUP1 PUSH0 DUP2 MSTORE PUSH1 0x20 ADD PUSH0 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x40 MLOAD DUP1 PUSH1 0x20 ADD PUSH1 0x40 MSTORE DUP1 PUSH0 DUP2 MSTORE POP DUP2 MSTORE POP DUP3 PUSH2 0x1451 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB PUSH32 0x0 AND ADDRESS SUB PUSH2 0x8F5 JUMPI PUSH1 0x40 MLOAD PUSH4 0x2ABF118B PUSH1 0xE2 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST DUP1 ISZERO PUSH2 0x78C JUMPI PUSH2 0x903 PUSH2 0x1208 JUMP JUMPDEST PUSH20 0x0 PUSH4 0x77566915 SWAP1 SWAP2 PUSH32 0x0 PUSH32 0x0 DUP6 PUSH2 0x96A PUSH2 0x436 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP7 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x98A SWAP6 SWAP5 SWAP4 SWAP3 SWAP2 SWAP1 PUSH2 0x196B JUMP JUMPDEST PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 GAS DELEGATECALL ISZERO DUP1 ISZERO PUSH2 0x9A5 JUMPI RETURNDATASIZE PUSH0 PUSH0 RETURNDATACOPY RETURNDATASIZE PUSH0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP3 ADD DUP1 PUSH1 0x40 MSTORE POP DUP2 ADD SWAP1 PUSH2 0x9C9 SWAP2 SWAP1 PUSH2 0x1954 JUMP JUMPDEST POP POP JUMP JUMPDEST PUSH0 PUSH2 0x430 DUP3 JUMPDEST PUSH1 0x40 MLOAD PUSH4 0x70A08231 PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP3 DUP2 AND PUSH1 0x4 DUP4 ADD MSTORE PUSH0 SWAP2 PUSH2 0x430 SWAP2 PUSH32 0x0 AND SWAP1 PUSH4 0x70A08231 SWAP1 PUSH1 0x24 ADD PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0xA3D JUMPI RETURNDATASIZE PUSH0 PUSH0 RETURNDATACOPY RETURNDATASIZE PUSH0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP3 ADD DUP1 PUSH1 0x40 MSTORE POP DUP2 ADD SWAP1 PUSH2 0xA61 SWAP2 SWAP1 PUSH2 0x1954 JUMP JUMPDEST DUP4 PUSH2 0x12F4 JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH1 0x1 DUP1 DUP3 MSTORE DUP2 DUP4 ADD SWAP1 SWAP3 MSTORE PUSH0 SWAP2 PUSH1 0x20 DUP1 DUP4 ADD SWAP1 DUP1 CALLDATASIZE DUP4 CALLDATACOPY POP POP PUSH1 0x40 DUP1 MLOAD PUSH1 0x1 DUP1 DUP3 MSTORE DUP2 DUP4 ADD SWAP1 SWAP3 MSTORE SWAP3 SWAP4 POP PUSH0 SWAP3 SWAP2 POP PUSH1 0x20 DUP1 DUP4 ADD SWAP1 DUP1 CALLDATASIZE DUP4 CALLDATACOPY POP POP PUSH1 0x40 DUP1 MLOAD PUSH1 0x1 DUP1 DUP3 MSTORE DUP2 DUP4 ADD SWAP1 SWAP3 MSTORE SWAP3 SWAP4 POP PUSH0 SWAP3 SWAP2 POP PUSH1 0x20 DUP1 DUP4 ADD SWAP1 DUP1 CALLDATASIZE DUP4 CALLDATACOPY POP POP PUSH1 0x40 DUP1 MLOAD PUSH1 0x1 DUP1 DUP3 MSTORE DUP2 DUP4 ADD SWAP1 SWAP3 MSTORE SWAP3 SWAP4 POP PUSH0 SWAP3 SWAP2 POP PUSH1 0x20 DUP3 ADD JUMPDEST PUSH1 0x60 DUP2 MSTORE PUSH1 0x20 ADD SWAP1 PUSH1 0x1 SWAP1 SUB SWAP1 DUP2 PUSH2 0xAE3 JUMPI SWAP1 POP POP SWAP1 POP DUP5 DUP1 PUSH1 0x20 ADD SWAP1 MLOAD DUP2 ADD SWAP1 PUSH2 0xB0E SWAP2 SWAP1 PUSH2 0x19AA JUMP JUMPDEST DUP6 PUSH0 DUP2 MLOAD DUP2 LT PUSH2 0xB20 JUMPI PUSH2 0xB20 PUSH2 0x1A5F JUMP JUMPDEST PUSH1 0x20 MUL PUSH1 0x20 ADD ADD DUP4 PUSH0 DUP2 MLOAD DUP2 LT PUSH2 0xB39 JUMPI PUSH2 0xB39 PUSH2 0x1A5F JUMP JUMPDEST PUSH1 0x20 MUL PUSH1 0x20 ADD ADD DUP3 SWAP1 MSTORE DUP3 DUP2 MSTORE POP POP POP ADDRESS DUP4 PUSH0 DUP2 MLOAD DUP2 LT PUSH2 0xB5C JUMPI PUSH2 0xB5C PUSH2 0x1A5F JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP1 SWAP3 AND PUSH1 0x20 SWAP3 DUP4 MUL SWAP2 SWAP1 SWAP2 ADD SWAP1 SWAP2 ADD MSTORE PUSH32 0x0 DUP3 PUSH0 DUP2 MLOAD DUP2 LT PUSH2 0xBA7 JUMPI PUSH2 0xBA7 PUSH2 0x1A5F JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP3 DUP4 AND PUSH1 0x20 SWAP2 DUP3 MUL SWAP3 SWAP1 SWAP3 ADD ADD MSTORE PUSH1 0x40 MLOAD PUSH4 0x1C7BA57 PUSH1 0xE6 SHL DUP2 MSTORE PUSH32 0x0 SWAP1 SWAP2 AND SWAP1 PUSH4 0x71EE95C0 SWAP1 PUSH2 0xC09 SWAP1 DUP7 SWAP1 DUP7 SWAP1 DUP10 SWAP1 DUP8 SWAP1 PUSH1 0x4 ADD PUSH2 0x1AB6 JUMP JUMPDEST PUSH0 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 PUSH0 DUP8 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0xC20 JUMPI PUSH0 PUSH0 REVERT JUMPDEST POP GAS CALL ISZERO DUP1 ISZERO PUSH2 0xC32 JUMPI RETURNDATASIZE PUSH0 PUSH0 RETURNDATACOPY RETURNDATASIZE PUSH0 REVERT JUMPDEST POP POP POP POP DUP2 PUSH0 DUP2 MLOAD DUP2 LT PUSH2 0xC48 JUMPI PUSH2 0xC48 PUSH2 0x1A5F JUMP JUMPDEST PUSH1 0x20 MUL PUSH1 0x20 ADD ADD MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH32 0xFC30CDDEA38E2BF4D6EA7D3F9ED3B6AD7F176419F4963BD81318067A4AEE73FE DUP6 PUSH0 DUP2 MLOAD DUP2 LT PUSH2 0xC8C JUMPI PUSH2 0xC8C PUSH2 0x1A5F JUMP JUMPDEST PUSH1 0x20 MUL PUSH1 0x20 ADD ADD MLOAD PUSH1 0x40 MLOAD PUSH2 0xCA3 SWAP2 DUP2 MSTORE PUSH1 0x20 ADD SWAP1 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 LOG2 POP POP POP POP POP JUMP JUMPDEST PUSH0 NOT DUP2 SUB PUSH2 0xD43 JUMPI PUSH1 0x40 MLOAD PUSH4 0x70A08231 PUSH1 0xE0 SHL DUP2 MSTORE ADDRESS PUSH1 0x4 DUP3 ADD MSTORE PUSH32 0x0 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND SWAP1 PUSH4 0x70A08231 SWAP1 PUSH1 0x24 ADD PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0xD1C JUMPI RETURNDATASIZE PUSH0 PUSH0 RETURNDATACOPY RETURNDATASIZE PUSH0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP3 ADD DUP1 PUSH1 0x40 MSTORE POP DUP2 ADD SWAP1 PUSH2 0xD40 SWAP2 SWAP1 PUSH2 0x1954 JUMP JUMPDEST SWAP1 POP JUMPDEST PUSH0 PUSH2 0xD4C PUSH2 0x1208 JUMP JUMPDEST PUSH20 0x0 PUSH4 0x77566915 SWAP1 SWAP2 PUSH32 0x0 PUSH32 0x0 DUP7 PUSH2 0xDB3 PUSH2 0x12DE JUMP JUMPDEST PUSH1 0x40 MLOAD DUP7 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0xDD3 SWAP6 SWAP5 SWAP4 SWAP3 SWAP2 SWAP1 PUSH2 0x196B JUMP JUMPDEST PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 GAS DELEGATECALL ISZERO DUP1 ISZERO PUSH2 0xDEE JUMPI RETURNDATASIZE PUSH0 PUSH0 RETURNDATACOPY RETURNDATASIZE PUSH0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP3 ADD DUP1 PUSH1 0x40 MSTORE POP DUP2 ADD SWAP1 PUSH2 0xE12 SWAP2 SWAP1 PUSH2 0x1954 JUMP JUMPDEST SWAP1 POP PUSH2 0xE94 DUP2 PUSH1 0x40 MLOAD PUSH1 0x24 ADD PUSH2 0xE2A SWAP2 DUP2 MSTORE PUSH1 0x20 ADD SWAP1 JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH1 0x1F NOT DUP2 DUP5 SUB ADD DUP2 MSTORE SWAP2 SWAP1 MSTORE PUSH1 0x20 DUP2 ADD DUP1 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xE0 SHL SUB AND PUSH4 0x230A5C4B PUSH1 0xE1 SHL OR SWAP1 MSTORE PUSH2 0xE85 PUSH32 0x360894A13BA1A3210667C828492DB98DCA3E2076CC3735A920A3CA505D382BBC SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND SWAP1 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND SWAP1 PUSH2 0x1571 JUMP JUMPDEST POP PUSH1 0x40 DUP1 MLOAD DUP4 DUP2 MSTORE PUSH1 0x20 DUP2 ADD DUP4 SWAP1 MSTORE PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB PUSH32 0x0 AND SWAP2 PUSH32 0x1704C39241BC5FFA667C69806B5BA3ACD0D4637515695BAB7A812E01E5EE27EB SWAP2 ADD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 LOG2 POP POP JUMP JUMPDEST PUSH1 0x60 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB PUSH32 0x0 AND ADDRESS SUB PUSH2 0xF48 JUMPI PUSH1 0x40 MLOAD PUSH4 0x2ABF118B PUSH1 0xE2 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH0 PUSH1 0xFF DUP5 AND DUP1 ISZERO PUSH2 0xF5B JUMPI PUSH2 0xF5B PUSH2 0x1897 JUMP JUMPDEST SWAP1 POP PUSH0 DUP2 DUP1 ISZERO PUSH2 0xF6D JUMPI PUSH2 0xF6D PUSH2 0x1897 JUMP JUMPDEST SUB PUSH2 0x106 JUMPI PUSH2 0xF84 PUSH2 0xF7E ADDRESS PUSH2 0x1396 JUMP JUMPDEST DUP5 PUSH2 0x1451 JUMP JUMPDEST POP POP PUSH1 0x40 DUP1 MLOAD PUSH1 0x20 DUP2 ADD SWAP1 SWAP2 MSTORE PUSH0 DUP2 MSTORE SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH0 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP3 AND PUSH2 0xFB8 JUMPI POP PUSH8 0xDE0B6B3A7640000 SWAP2 SWAP1 POP JUMP JUMPDEST PUSH0 PUSH0 DUP4 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH4 0xFEAF968C PUSH1 0x40 MLOAD DUP2 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH1 0xA0 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0xFF6 JUMPI RETURNDATASIZE PUSH0 PUSH0 RETURNDATACOPY RETURNDATASIZE PUSH0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP3 ADD DUP1 PUSH1 0x40 MSTORE POP DUP2 ADD SWAP1 PUSH2 0x101A SWAP2 SWAP1 PUSH2 0x1BBE JUMP JUMPDEST POP SWAP4 POP POP SWAP3 POP POP PUSH32 0x0 TIMESTAMP PUSH2 0x104D SWAP2 SWAP1 PUSH2 0x1C20 JUMP JUMPDEST DUP2 GT PUSH2 0x1079 PUSH32 0x0 TIMESTAMP PUSH2 0x1C20 JUMP JUMPDEST DUP3 SWAP1 SWAP2 PUSH2 0x10A7 JUMPI PUSH1 0x40 MLOAD PUSH4 0x3156EA93 PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 DUP2 ADD SWAP3 SWAP1 SWAP3 MSTORE PUSH1 0x24 DUP3 ADD MSTORE PUSH1 0x44 ADD JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST POP POP PUSH0 DUP3 SGT DUP3 SWAP1 PUSH2 0x10CE JUMPI PUSH1 0x40 MLOAD PUSH4 0x38EE04A7 PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x109E SWAP2 DUP2 MSTORE PUSH1 0x20 ADD SWAP1 JUMP JUMPDEST 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 GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x110B JUMPI RETURNDATASIZE PUSH0 PUSH0 RETURNDATACOPY RETURNDATASIZE PUSH0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP3 ADD DUP1 PUSH1 0x40 MSTORE POP DUP2 ADD SWAP1 PUSH2 0x112F SWAP2 SWAP1 PUSH2 0x1C33 JUMP JUMPDEST PUSH2 0x113A SWAP1 PUSH1 0x12 PUSH2 0x1C4E JUMP JUMPDEST PUSH2 0x1145 SWAP1 PUSH1 0xA PUSH2 0x1D4A JUMP JUMPDEST PUSH2 0x114F SWAP1 DUP4 PUSH2 0x1D58 JUMP JUMPDEST SWAP5 SWAP4 POP POP POP POP JUMP JUMPDEST PUSH0 PUSH0 PUSH0 PUSH2 0x1164 DUP7 DUP7 PUSH2 0x15FD JUMP JUMPDEST SWAP2 POP SWAP2 POP DUP2 PUSH0 SUB PUSH2 0x1188 JUMPI DUP4 DUP2 DUP2 PUSH2 0x117E JUMPI PUSH2 0x117E PUSH2 0x1D6F JUMP JUMPDEST DIV SWAP3 POP POP POP PUSH2 0x1201 JUMP JUMPDEST DUP2 DUP5 GT PUSH2 0x119F JUMPI PUSH2 0x119F PUSH1 0x3 DUP6 ISZERO MUL PUSH1 0x11 XOR PUSH2 0x1619 JUMP JUMPDEST PUSH0 DUP5 DUP7 DUP9 MULMOD PUSH0 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 DUP6 DUP5 GT SWAP1 SWAP7 SUB SWAP6 SWAP1 SWAP6 MUL SWAP2 SWAP1 SWAP4 SUB SWAP4 SWAP1 SWAP4 DIV SWAP3 SWAP1 SWAP3 OR MUL SWAP2 POP POP JUMPDEST SWAP4 SWAP3 POP POP POP JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH1 0x60 DUP1 DUP3 ADD DUP4 MSTORE PUSH0 DUP1 DUP4 MSTORE PUSH1 0x20 DUP4 ADD MSTORE SWAP2 DUP2 ADD SWAP2 SWAP1 SWAP2 MSTORE PUSH32 0x0 DUP1 SLOAD PUSH2 0x124F SWAP1 PUSH2 0x1D83 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 0x127B SWAP1 PUSH2 0x1D83 JUMP JUMPDEST DUP1 ISZERO PUSH2 0x12C6 JUMPI DUP1 PUSH1 0x1F LT PUSH2 0x129D JUMPI PUSH2 0x100 DUP1 DUP4 SLOAD DIV MUL DUP4 MSTORE SWAP2 PUSH1 0x20 ADD SWAP2 PUSH2 0x12C6 JUMP JUMPDEST DUP3 ADD SWAP2 SWAP1 PUSH0 MSTORE PUSH1 0x20 PUSH0 KECCAK256 SWAP1 JUMPDEST DUP2 SLOAD DUP2 MSTORE SWAP1 PUSH1 0x1 ADD SWAP1 PUSH1 0x20 ADD DUP1 DUP4 GT PUSH2 0x12A9 JUMPI DUP3 SWAP1 SUB PUSH1 0x1F AND DUP3 ADD SWAP2 JUMPDEST POP POP POP POP POP DUP1 PUSH1 0x20 ADD SWAP1 MLOAD DUP2 ADD SWAP1 PUSH2 0x49A SWAP2 SWAP1 PUSH2 0x1E08 JUMP JUMPDEST PUSH0 PUSH2 0x49A PUSH8 0xDE0B6B3A7640000 DUP1 PUSH2 0x495 PUSH2 0x436 JUMP JUMPDEST PUSH0 PUSH2 0x131E PUSH32 0x0 PUSH2 0x162A JUMP JUMPDEST PUSH2 0x138C PUSH2 0x136D PUSH2 0x134D PUSH32 0x0 PUSH2 0x162A JUMP JUMPDEST PUSH2 0x1357 SWAP1 DUP8 PUSH2 0x1D58 JUMP JUMPDEST PUSH2 0x135F PUSH2 0x436 JUMP JUMPDEST PUSH8 0xDE0B6B3A7640000 PUSH2 0x1157 JUMP JUMPDEST PUSH2 0x1376 DUP6 PUSH2 0x1396 JUMP JUMPDEST PUSH1 0x20 ADD MLOAD PUSH2 0x135F SWAP1 PUSH8 0xDE0B6B3A7640000 PUSH2 0x1C20 JUMP JUMPDEST PUSH2 0x1201 SWAP2 SWAP1 PUSH2 0x1E94 JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH1 0x60 DUP1 DUP3 ADD DUP4 MSTORE PUSH0 DUP1 DUP4 MSTORE PUSH1 0x20 DUP4 ADD MSTORE SWAP2 DUP2 ADD SWAP2 SWAP1 SWAP2 MSTORE PUSH1 0x40 MLOAD PUSH4 0x47E57533 PUSH1 0xE0 SHL DUP2 MSTORE PUSH32 0x0 PUSH1 0x4 DUP3 ADD MSTORE PUSH0 SWAP1 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP5 AND SWAP1 PUSH4 0x47E57533 SWAP1 PUSH1 0x24 ADD PUSH0 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x1414 JUMPI RETURNDATASIZE PUSH0 PUSH0 RETURNDATACOPY RETURNDATASIZE PUSH0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH0 DUP3 RETURNDATACOPY PUSH1 0x1F RETURNDATASIZE SWAP1 DUP2 ADD PUSH1 0x1F NOT AND DUP3 ADD PUSH1 0x40 MSTORE PUSH2 0x143B SWAP2 SWAP1 DUP2 ADD SWAP1 PUSH2 0x1EB3 JUMP JUMPDEST SWAP1 POP DUP1 DUP1 PUSH1 0x20 ADD SWAP1 MLOAD DUP2 ADD SWAP1 PUSH2 0x1201 SWAP2 SWAP1 PUSH2 0x1E08 JUMP JUMPDEST PUSH0 DUP2 DUP1 PUSH1 0x20 ADD SWAP1 MLOAD DUP2 ADD SWAP1 PUSH2 0x1466 SWAP2 SWAP1 PUSH2 0x1E08 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH4 0x2CBF28CB PUSH1 0xE2 SHL DUP2 MSTORE SWAP1 SWAP2 POP PUSH20 0x0 SWAP1 PUSH4 0xB2FCA32C SWAP1 PUSH2 0x14A0 SWAP1 DUP5 SWAP1 PUSH1 0x4 ADD PUSH2 0x18F1 JUMP JUMPDEST PUSH0 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x14B6 JUMPI PUSH0 PUSH0 REVERT JUMPDEST POP GAS DELEGATECALL ISZERO DUP1 ISZERO PUSH2 0x14C8 JUMPI RETURNDATASIZE PUSH0 PUSH0 RETURNDATACOPY RETURNDATASIZE PUSH0 REVERT JUMPDEST POP POP POP POP DUP2 MLOAD DUP2 PUSH1 0x40 MLOAD PUSH1 0x20 ADD PUSH2 0x14DF SWAP2 SWAP1 PUSH2 0x18F1 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH1 0x20 DUP2 DUP4 SUB SUB DUP2 MSTORE SWAP1 PUSH1 0x40 MSTORE MLOAD EQ PUSH2 0x150D JUMPI PUSH1 0x40 MLOAD PUSH4 0x50701B61 PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH32 0xCA7F7AA563866A1D31C74DEBA224724D1DA9C35CBB6F783F2CCF0182F91E34F8 DUP4 DUP3 PUSH1 0x40 MLOAD PUSH2 0x153E SWAP3 SWAP2 SWAP1 PUSH2 0x1EE5 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 LOG1 PUSH32 0x0 PUSH2 0x787 DUP4 DUP3 PUSH2 0x1F5D JUMP JUMPDEST PUSH1 0x60 PUSH0 PUSH2 0x157E DUP5 DUP5 PUSH2 0x16A1 JUMP JUMPDEST SWAP1 POP DUP1 DUP1 ISZERO PUSH2 0x159F JUMPI POP PUSH0 RETURNDATASIZE GT DUP1 PUSH2 0x159F JUMPI POP PUSH0 DUP5 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND EXTCODESIZE GT JUMPDEST ISZERO PUSH2 0x15AC JUMPI PUSH2 0x426 PUSH2 0x16B4 JUMP JUMPDEST DUP1 ISZERO PUSH2 0x15D6 JUMPI PUSH1 0x40 MLOAD PUSH4 0x9996B315 PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP6 AND PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x24 ADD PUSH2 0x109E JUMP JUMPDEST RETURNDATASIZE ISZERO PUSH2 0x15E4 JUMPI PUSH2 0x3B6 PUSH2 0x16CD JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH4 0xD6BDA275 PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH0 DUP1 PUSH0 NOT DUP4 DUP6 MULMOD SWAP4 SWAP1 SWAP3 MUL DUP1 DUP5 LT SWAP4 DUP2 SWAP1 SUB SWAP4 SWAP1 SWAP4 SUB SWAP4 SWAP2 POP POP JUMP JUMPDEST PUSH4 0x4E487B71 PUSH0 MSTORE DUP1 PUSH1 0x20 MSTORE PUSH1 0x24 PUSH1 0x1C REVERT JUMPDEST PUSH0 DUP2 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 GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x1667 JUMPI RETURNDATASIZE PUSH0 PUSH0 RETURNDATACOPY RETURNDATASIZE PUSH0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP3 ADD DUP1 PUSH1 0x40 MSTORE POP DUP2 ADD SWAP1 PUSH2 0x168B SWAP2 SWAP1 PUSH2 0x1C33 JUMP JUMPDEST PUSH2 0x1696 SWAP1 PUSH1 0x12 PUSH2 0x1C4E JUMP JUMPDEST PUSH2 0x430 SWAP1 PUSH1 0xA PUSH2 0x1D4A JUMP JUMPDEST PUSH0 PUSH0 PUSH0 DUP4 MLOAD PUSH1 0x20 DUP6 ADD DUP7 GAS DELEGATECALL SWAP4 SWAP3 POP POP POP JUMP JUMPDEST PUSH1 0x40 MLOAD RETURNDATASIZE DUP2 MSTORE RETURNDATASIZE PUSH0 PUSH1 0x20 DUP4 ADD RETURNDATACOPY RETURNDATASIZE PUSH1 0x20 ADD DUP2 ADD PUSH1 0x40 MSTORE SWAP1 JUMP JUMPDEST PUSH1 0x40 MLOAD RETURNDATASIZE PUSH0 DUP3 RETURNDATACOPY RETURNDATASIZE DUP2 REVERT JUMPDEST PUSH1 0xFF DUP2 AND DUP2 EQ PUSH2 0x78C JUMPI PUSH0 PUSH0 REVERT JUMPDEST PUSH4 0x4E487B71 PUSH1 0xE0 SHL PUSH0 MSTORE PUSH1 0x41 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH0 REVERT JUMPDEST PUSH1 0x40 MLOAD PUSH1 0x60 DUP2 ADD PUSH8 0xFFFFFFFFFFFFFFFF DUP2 GT DUP3 DUP3 LT OR ISZERO PUSH2 0x171D JUMPI PUSH2 0x171D PUSH2 0x16E6 JUMP JUMPDEST PUSH1 0x40 MSTORE SWAP1 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH1 0x1F DUP3 ADD PUSH1 0x1F NOT AND DUP2 ADD PUSH8 0xFFFFFFFFFFFFFFFF DUP2 GT DUP3 DUP3 LT OR ISZERO PUSH2 0x174C JUMPI PUSH2 0x174C PUSH2 0x16E6 JUMP JUMPDEST PUSH1 0x40 MSTORE SWAP2 SWAP1 POP JUMP JUMPDEST PUSH0 PUSH8 0xFFFFFFFFFFFFFFFF DUP3 GT ISZERO PUSH2 0x176D JUMPI PUSH2 0x176D PUSH2 0x16E6 JUMP JUMPDEST POP PUSH1 0x1F ADD PUSH1 0x1F NOT AND PUSH1 0x20 ADD SWAP1 JUMP JUMPDEST PUSH0 DUP3 PUSH1 0x1F DUP4 ADD SLT PUSH2 0x178A JUMPI PUSH0 PUSH0 REVERT JUMPDEST DUP2 CALLDATALOAD PUSH2 0x179D PUSH2 0x1798 DUP3 PUSH2 0x1754 JUMP JUMPDEST PUSH2 0x1723 JUMP JUMPDEST DUP2 DUP2 MSTORE DUP5 PUSH1 0x20 DUP4 DUP7 ADD ADD GT ISZERO PUSH2 0x17B1 JUMPI PUSH0 PUSH0 REVERT JUMPDEST DUP2 PUSH1 0x20 DUP6 ADD PUSH1 0x20 DUP4 ADD CALLDATACOPY PUSH0 SWAP2 DUP2 ADD PUSH1 0x20 ADD SWAP2 SWAP1 SWAP2 MSTORE SWAP4 SWAP3 POP POP POP JUMP JUMPDEST PUSH0 PUSH0 PUSH1 0x40 DUP4 DUP6 SUB SLT ISZERO PUSH2 0x17DE JUMPI PUSH0 PUSH0 REVERT JUMPDEST DUP3 CALLDATALOAD PUSH2 0x17E9 DUP2 PUSH2 0x16D8 JUMP JUMPDEST SWAP2 POP PUSH1 0x20 DUP4 ADD CALLDATALOAD PUSH8 0xFFFFFFFFFFFFFFFF DUP2 GT ISZERO PUSH2 0x1804 JUMPI PUSH0 PUSH0 REVERT JUMPDEST PUSH2 0x1810 DUP6 DUP3 DUP7 ADD PUSH2 0x177B JUMP JUMPDEST SWAP2 POP POP SWAP3 POP SWAP3 SWAP1 POP JUMP JUMPDEST PUSH0 DUP2 MLOAD DUP1 DUP5 MSTORE DUP1 PUSH1 0x20 DUP5 ADD PUSH1 0x20 DUP7 ADD MCOPY PUSH0 PUSH1 0x20 DUP3 DUP7 ADD ADD MSTORE PUSH1 0x20 PUSH1 0x1F NOT PUSH1 0x1F DUP4 ADD AND DUP6 ADD ADD SWAP2 POP POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x20 DUP2 MSTORE PUSH0 PUSH2 0x1201 PUSH1 0x20 DUP4 ADD DUP5 PUSH2 0x181A JUMP JUMPDEST PUSH0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x186A JUMPI PUSH0 PUSH0 REVERT JUMPDEST POP CALLDATALOAD SWAP2 SWAP1 POP JUMP JUMPDEST PUSH0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x1881 JUMPI PUSH0 PUSH0 REVERT JUMPDEST DUP2 CALLDATALOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 AND DUP2 EQ PUSH2 0x1201 JUMPI PUSH0 PUSH0 REVERT JUMPDEST PUSH4 0x4E487B71 PUSH1 0xE0 SHL PUSH0 MSTORE PUSH1 0x21 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH0 REVERT JUMPDEST PUSH0 DUP2 MLOAD PUSH1 0x3 DUP2 LT PUSH2 0x18CA JUMPI PUSH4 0x4E487B71 PUSH1 0xE0 SHL PUSH0 MSTORE PUSH1 0x21 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH0 REVERT JUMPDEST DUP1 DUP5 MSTORE POP PUSH1 0x20 DUP3 ADD MLOAD PUSH1 0x20 DUP5 ADD MSTORE PUSH1 0x40 DUP3 ADD MLOAD PUSH1 0x60 PUSH1 0x40 DUP6 ADD MSTORE PUSH2 0x114F PUSH1 0x60 DUP6 ADD DUP3 PUSH2 0x181A JUMP JUMPDEST PUSH1 0x20 DUP2 MSTORE PUSH0 PUSH2 0x1201 PUSH1 0x20 DUP4 ADD DUP5 PUSH2 0x18AB JUMP JUMPDEST PUSH0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x1913 JUMPI PUSH0 PUSH0 REVERT JUMPDEST DUP2 CALLDATALOAD DUP1 ISZERO ISZERO DUP2 EQ PUSH2 0x1201 JUMPI PUSH0 PUSH0 REVERT JUMPDEST PUSH0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x1932 JUMPI PUSH0 PUSH0 REVERT JUMPDEST DUP2 CALLDATALOAD PUSH8 0xFFFFFFFFFFFFFFFF DUP2 GT ISZERO PUSH2 0x1948 JUMPI PUSH0 PUSH0 REVERT JUMPDEST PUSH2 0x114F DUP5 DUP3 DUP6 ADD PUSH2 0x177B JUMP JUMPDEST PUSH0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x1964 JUMPI PUSH0 PUSH0 REVERT JUMPDEST POP MLOAD SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0xA0 DUP2 MSTORE PUSH0 PUSH2 0x197D PUSH1 0xA0 DUP4 ADD DUP9 PUSH2 0x18AB JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP7 DUP8 AND PUSH1 0x20 DUP5 ADD MSTORE SWAP5 SWAP1 SWAP6 AND PUSH1 0x40 DUP3 ADD MSTORE PUSH1 0x60 DUP2 ADD SWAP3 SWAP1 SWAP3 MSTORE PUSH1 0x80 SWAP1 SWAP2 ADD MSTORE SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH0 PUSH0 PUSH1 0x40 DUP4 DUP6 SUB SLT ISZERO PUSH2 0x19BB JUMPI PUSH0 PUSH0 REVERT JUMPDEST DUP3 MLOAD PUSH1 0x20 DUP5 ADD MLOAD SWAP1 SWAP3 POP PUSH8 0xFFFFFFFFFFFFFFFF DUP2 GT ISZERO PUSH2 0x19D9 JUMPI PUSH0 PUSH0 REVERT JUMPDEST DUP4 ADD PUSH1 0x1F DUP2 ADD DUP6 SGT PUSH2 0x19E9 JUMPI PUSH0 PUSH0 REVERT JUMPDEST DUP1 MLOAD PUSH8 0xFFFFFFFFFFFFFFFF DUP2 GT ISZERO PUSH2 0x1A03 JUMPI PUSH2 0x1A03 PUSH2 0x16E6 JUMP JUMPDEST DUP1 PUSH1 0x5 SHL PUSH2 0x1A13 PUSH1 0x20 DUP3 ADD PUSH2 0x1723 JUMP JUMPDEST SWAP2 DUP3 MSTORE PUSH1 0x20 DUP2 DUP5 ADD DUP2 ADD SWAP3 SWAP1 DUP2 ADD SWAP1 DUP9 DUP5 GT ISZERO PUSH2 0x1A2E JUMPI PUSH0 PUSH0 REVERT JUMPDEST PUSH1 0x20 DUP6 ADD SWAP5 POP JUMPDEST DUP4 DUP6 LT ISZERO PUSH2 0x1A50 JUMPI DUP5 MLOAD DUP3 MSTORE PUSH1 0x20 SWAP5 DUP6 ADD SWAP5 SWAP1 SWAP2 ADD SWAP1 PUSH2 0x1A35 JUMP JUMPDEST DUP1 SWAP6 POP POP POP POP POP POP SWAP3 POP SWAP3 SWAP1 POP JUMP JUMPDEST PUSH4 0x4E487B71 PUSH1 0xE0 SHL PUSH0 MSTORE PUSH1 0x32 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH0 REVERT JUMPDEST PUSH0 DUP2 MLOAD DUP1 DUP5 MSTORE PUSH1 0x20 DUP5 ADD SWAP4 POP PUSH1 0x20 DUP4 ADD PUSH0 JUMPDEST DUP3 DUP2 LT ISZERO PUSH2 0x1AAC JUMPI DUP2 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP7 MSTORE PUSH1 0x20 SWAP6 DUP7 ADD SWAP6 SWAP1 SWAP2 ADD SWAP1 PUSH1 0x1 ADD PUSH2 0x1A85 JUMP JUMPDEST POP SWAP4 SWAP5 SWAP4 POP POP POP POP JUMP JUMPDEST PUSH1 0x80 DUP2 MSTORE PUSH0 PUSH2 0x1AC8 PUSH1 0x80 DUP4 ADD DUP8 PUSH2 0x1A73 JUMP JUMPDEST DUP3 DUP2 SUB PUSH1 0x20 DUP5 ADD MSTORE PUSH2 0x1ADA DUP2 DUP8 PUSH2 0x1A73 JUMP JUMPDEST DUP4 DUP2 SUB PUSH1 0x40 DUP6 ADD MSTORE DUP6 MLOAD DUP1 DUP3 MSTORE PUSH1 0x20 DUP1 DUP9 ADD SWAP4 POP SWAP1 SWAP2 ADD SWAP1 PUSH0 JUMPDEST DUP2 DUP2 LT ISZERO PUSH2 0x1B12 JUMPI DUP4 MLOAD DUP4 MSTORE PUSH1 0x20 SWAP4 DUP5 ADD SWAP4 SWAP1 SWAP3 ADD SWAP2 PUSH1 0x1 ADD PUSH2 0x1AF4 JUMP JUMPDEST POP POP DUP4 DUP2 SUB PUSH1 0x60 DUP6 ADD MSTORE DUP5 MLOAD DUP1 DUP3 MSTORE PUSH1 0x20 DUP1 DUP4 ADD SWAP4 POP PUSH1 0x5 DUP3 SWAP1 SHL DUP4 ADD DUP2 ADD SWAP1 DUP8 ADD PUSH0 JUMPDEST DUP4 DUP2 LT ISZERO PUSH2 0x1B90 JUMPI DUP5 DUP4 SUB PUSH1 0x1F NOT ADD DUP7 MSTORE DUP2 MLOAD DUP1 MLOAD DUP1 DUP6 MSTORE PUSH1 0x20 SWAP2 DUP3 ADD SWAP2 DUP6 ADD SWAP1 PUSH0 JUMPDEST DUP2 DUP2 LT ISZERO PUSH2 0x1B77 JUMPI DUP4 MLOAD DUP4 MSTORE PUSH1 0x20 SWAP4 DUP5 ADD SWAP4 SWAP1 SWAP3 ADD SWAP2 PUSH1 0x1 ADD PUSH2 0x1B59 JUMP JUMPDEST POP POP PUSH1 0x20 SWAP8 DUP9 ADD SWAP8 SWAP1 SWAP5 POP SWAP3 SWAP1 SWAP3 ADD SWAP2 POP PUSH1 0x1 ADD PUSH2 0x1B36 JUMP JUMPDEST POP SWAP1 SWAP11 SWAP10 POP POP POP POP POP POP POP POP POP POP JUMP JUMPDEST DUP1 MLOAD PUSH10 0xFFFFFFFFFFFFFFFFFFFF DUP2 AND DUP2 EQ PUSH2 0x1BB9 JUMPI PUSH0 PUSH0 REVERT JUMPDEST SWAP2 SWAP1 POP JUMP JUMPDEST PUSH0 PUSH0 PUSH0 PUSH0 PUSH0 PUSH1 0xA0 DUP7 DUP9 SUB SLT ISZERO PUSH2 0x1BD2 JUMPI PUSH0 PUSH0 REVERT JUMPDEST PUSH2 0x1BDB DUP7 PUSH2 0x1BA0 JUMP JUMPDEST PUSH1 0x20 DUP8 ADD MLOAD PUSH1 0x40 DUP9 ADD MLOAD PUSH1 0x60 DUP10 ADD MLOAD SWAP3 SWAP8 POP SWAP1 SWAP6 POP SWAP4 POP SWAP2 POP PUSH2 0x1C00 PUSH1 0x80 DUP8 ADD PUSH2 0x1BA0 JUMP JUMPDEST SWAP1 POP SWAP3 SWAP6 POP SWAP3 SWAP6 SWAP1 SWAP4 POP JUMP JUMPDEST PUSH4 0x4E487B71 PUSH1 0xE0 SHL PUSH0 MSTORE PUSH1 0x11 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH0 REVERT JUMPDEST DUP2 DUP2 SUB DUP2 DUP2 GT ISZERO PUSH2 0x430 JUMPI PUSH2 0x430 PUSH2 0x1C0C JUMP JUMPDEST PUSH0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x1C43 JUMPI PUSH0 PUSH0 REVERT JUMPDEST DUP2 MLOAD PUSH2 0x1201 DUP2 PUSH2 0x16D8 JUMP JUMPDEST PUSH1 0xFF DUP3 DUP2 AND DUP3 DUP3 AND SUB SWAP1 DUP2 GT ISZERO PUSH2 0x430 JUMPI PUSH2 0x430 PUSH2 0x1C0C JUMP JUMPDEST PUSH1 0x1 DUP2 JUMPDEST PUSH1 0x1 DUP5 GT ISZERO PUSH2 0x1CA2 JUMPI DUP1 DUP6 DIV DUP2 GT ISZERO PUSH2 0x1C86 JUMPI PUSH2 0x1C86 PUSH2 0x1C0C JUMP JUMPDEST PUSH1 0x1 DUP5 AND ISZERO PUSH2 0x1C94 JUMPI SWAP1 DUP2 MUL SWAP1 JUMPDEST PUSH1 0x1 SWAP4 SWAP1 SWAP4 SHR SWAP3 DUP1 MUL PUSH2 0x1C6B JUMP JUMPDEST SWAP4 POP SWAP4 SWAP2 POP POP JUMP JUMPDEST PUSH0 DUP3 PUSH2 0x1CB8 JUMPI POP PUSH1 0x1 PUSH2 0x430 JUMP JUMPDEST DUP2 PUSH2 0x1CC4 JUMPI POP PUSH0 PUSH2 0x430 JUMP JUMPDEST DUP2 PUSH1 0x1 DUP2 EQ PUSH2 0x1CDA JUMPI PUSH1 0x2 DUP2 EQ PUSH2 0x1CE4 JUMPI PUSH2 0x1D00 JUMP JUMPDEST PUSH1 0x1 SWAP2 POP POP PUSH2 0x430 JUMP JUMPDEST PUSH1 0xFF DUP5 GT ISZERO PUSH2 0x1CF5 JUMPI PUSH2 0x1CF5 PUSH2 0x1C0C JUMP JUMPDEST POP POP PUSH1 0x1 DUP3 SHL PUSH2 0x430 JUMP JUMPDEST POP PUSH1 0x20 DUP4 LT PUSH2 0x133 DUP4 LT AND PUSH1 0x4E DUP5 LT PUSH1 0xB DUP5 LT AND OR ISZERO PUSH2 0x1D23 JUMPI POP DUP2 DUP2 EXP PUSH2 0x430 JUMP JUMPDEST PUSH2 0x1D2F PUSH0 NOT DUP5 DUP5 PUSH2 0x1C67 JUMP JUMPDEST DUP1 PUSH0 NOT DIV DUP3 GT ISZERO PUSH2 0x1D42 JUMPI PUSH2 0x1D42 PUSH2 0x1C0C JUMP JUMPDEST MUL SWAP4 SWAP3 POP POP POP JUMP JUMPDEST PUSH0 PUSH2 0x1201 PUSH1 0xFF DUP5 AND DUP4 PUSH2 0x1CAA JUMP JUMPDEST DUP1 DUP3 MUL DUP2 ISZERO DUP3 DUP3 DIV DUP5 EQ OR PUSH2 0x430 JUMPI PUSH2 0x430 PUSH2 0x1C0C JUMP JUMPDEST PUSH4 0x4E487B71 PUSH1 0xE0 SHL PUSH0 MSTORE PUSH1 0x12 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH0 REVERT JUMPDEST PUSH1 0x1 DUP2 DUP2 SHR SWAP1 DUP3 AND DUP1 PUSH2 0x1D97 JUMPI PUSH1 0x7F DUP3 AND SWAP2 POP JUMPDEST PUSH1 0x20 DUP3 LT DUP2 SUB PUSH2 0x1DB5 JUMPI PUSH4 0x4E487B71 PUSH1 0xE0 SHL PUSH0 MSTORE PUSH1 0x22 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH0 REVERT JUMPDEST POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH0 DUP3 PUSH1 0x1F DUP4 ADD SLT PUSH2 0x1DCA JUMPI PUSH0 PUSH0 REVERT JUMPDEST DUP2 MLOAD PUSH2 0x1DD8 PUSH2 0x1798 DUP3 PUSH2 0x1754 JUMP JUMPDEST DUP2 DUP2 MSTORE DUP5 PUSH1 0x20 DUP4 DUP7 ADD ADD GT ISZERO PUSH2 0x1DEC JUMPI PUSH0 PUSH0 REVERT JUMPDEST DUP2 PUSH1 0x20 DUP6 ADD PUSH1 0x20 DUP4 ADD MCOPY PUSH0 SWAP2 DUP2 ADD PUSH1 0x20 ADD SWAP2 SWAP1 SWAP2 MSTORE SWAP4 SWAP3 POP POP POP JUMP JUMPDEST PUSH0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x1E18 JUMPI PUSH0 PUSH0 REVERT JUMPDEST DUP2 MLOAD PUSH8 0xFFFFFFFFFFFFFFFF DUP2 GT ISZERO PUSH2 0x1E2E JUMPI PUSH0 PUSH0 REVERT JUMPDEST DUP3 ADD PUSH1 0x60 DUP2 DUP6 SUB SLT ISZERO PUSH2 0x1E3F JUMPI PUSH0 PUSH0 REVERT JUMPDEST PUSH2 0x1E47 PUSH2 0x16FA JUMP JUMPDEST DUP2 MLOAD PUSH1 0x3 DUP2 LT PUSH2 0x1E55 JUMPI PUSH0 PUSH0 REVERT JUMPDEST DUP2 MSTORE PUSH1 0x20 DUP3 DUP2 ADD MLOAD SWAP1 DUP3 ADD MSTORE PUSH1 0x40 DUP3 ADD MLOAD PUSH8 0xFFFFFFFFFFFFFFFF DUP2 GT ISZERO PUSH2 0x1E7A JUMPI PUSH0 PUSH0 REVERT JUMPDEST PUSH2 0x1E86 DUP7 DUP3 DUP6 ADD PUSH2 0x1DBB JUMP JUMPDEST PUSH1 0x40 DUP4 ADD MSTORE POP SWAP5 SWAP4 POP POP POP POP JUMP JUMPDEST PUSH0 DUP3 PUSH2 0x1EAE JUMPI PUSH4 0x4E487B71 PUSH1 0xE0 SHL PUSH0 MSTORE PUSH1 0x12 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH0 REVERT JUMPDEST POP DIV SWAP1 JUMP JUMPDEST PUSH0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x1EC3 JUMPI PUSH0 PUSH0 REVERT JUMPDEST DUP2 MLOAD PUSH8 0xFFFFFFFFFFFFFFFF DUP2 GT ISZERO PUSH2 0x1ED9 JUMPI PUSH0 PUSH0 REVERT JUMPDEST PUSH2 0x114F DUP5 DUP3 DUP6 ADD PUSH2 0x1DBB JUMP JUMPDEST PUSH1 0x40 DUP2 MSTORE PUSH0 PUSH2 0x1EF7 PUSH1 0x40 DUP4 ADD DUP6 PUSH2 0x18AB JUMP JUMPDEST DUP3 DUP2 SUB PUSH1 0x20 DUP5 ADD MSTORE PUSH2 0x1F09 DUP2 DUP6 PUSH2 0x18AB JUMP JUMPDEST SWAP6 SWAP5 POP POP POP POP POP JUMP JUMPDEST PUSH1 0x1F DUP3 GT ISZERO PUSH2 0x789 JUMPI DUP1 PUSH0 MSTORE PUSH1 0x20 PUSH0 KECCAK256 PUSH1 0x1F DUP5 ADD PUSH1 0x5 SHR DUP2 ADD PUSH1 0x20 DUP6 LT ISZERO PUSH2 0x1F37 JUMPI POP DUP1 JUMPDEST PUSH1 0x1F DUP5 ADD PUSH1 0x5 SHR DUP3 ADD SWAP2 POP JUMPDEST DUP2 DUP2 LT ISZERO PUSH2 0x1F56 JUMPI PUSH0 DUP2 SSTORE PUSH1 0x1 ADD PUSH2 0x1F43 JUMP JUMPDEST POP POP POP POP POP JUMP JUMPDEST DUP2 MLOAD PUSH8 0xFFFFFFFFFFFFFFFF DUP2 GT ISZERO PUSH2 0x1F77 JUMPI PUSH2 0x1F77 PUSH2 0x16E6 JUMP JUMPDEST PUSH2 0x1F8B DUP2 PUSH2 0x1F85 DUP5 SLOAD PUSH2 0x1D83 JUMP JUMPDEST DUP5 PUSH2 0x1F12 JUMP JUMPDEST PUSH1 0x20 PUSH1 0x1F DUP3 GT PUSH1 0x1 DUP2 EQ PUSH2 0x1FBD JUMPI PUSH0 DUP4 ISZERO PUSH2 0x1FA6 JUMPI POP DUP5 DUP3 ADD MLOAD JUMPDEST PUSH0 NOT PUSH1 0x3 DUP6 SWAP1 SHL SHR NOT AND PUSH1 0x1 DUP5 SWAP1 SHL OR DUP5 SSTORE PUSH2 0x1F56 JUMP JUMPDEST PUSH0 DUP5 DUP2 MSTORE PUSH1 0x20 DUP2 KECCAK256 PUSH1 0x1F NOT DUP6 AND SWAP2 JUMPDEST DUP3 DUP2 LT ISZERO PUSH2 0x1FEC JUMPI DUP8 DUP6 ADD MLOAD DUP3 SSTORE PUSH1 0x20 SWAP5 DUP6 ADD SWAP5 PUSH1 0x1 SWAP1 SWAP3 ADD SWAP2 ADD PUSH2 0x1FCC JUMP JUMPDEST POP DUP5 DUP3 LT ISZERO PUSH2 0x2009 JUMPI DUP7 DUP5 ADD MLOAD PUSH0 NOT PUSH1 0x3 DUP8 SWAP1 SHL PUSH1 0xF8 AND SHR NOT AND DUP2 SSTORE JUMPDEST POP POP POP POP PUSH1 0x1 SWAP1 DUP2 SHL ADD SWAP1 SSTORE POP JUMP INVALID LOG2 PUSH5 0x6970667358 0x22 SLT KECCAK256 STATICCALL CREATE2 TLOAD DELEGATECALL KECCAK256 0xA6 SWAPN 0x19 0xD8 SWAPN 0x74 PUSH21 0xEB363472A4A8053149B036FC24657C55265417164 PUSH20 0x6F6C634300081E00330000000000000000000000 ","sourceMap":"1019:4:83:-:0;975:49;;;;1161:3378:81;7309:54:53;1752:21:87;;;1809:2;1789:18;1782:30;1848:32;1828:18;1821:60;1933:20;1926:62;;;;1161:3378:81;7309:54:53;;;1898:19:87;7309:54:53;;7299:65;;1028:81:83;;2234:370:81;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;2494:6;2502:12;2516;2530:18;2550:15;2049:6:77;2057:12;1983:2:83;1962:6;-1:-1:-1;;;;;1962:15:83;;:17;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;:23;;;;1954:48;;;;-1:-1:-1;;;1954:48:83;;;;;;;;;;;;2043:2;2016:12;-1:-1:-1;;;;;2016:21:83;;:23;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;:29;;;;2008:54;;;;-1:-1:-1;;;2008:54:83;;;;;;;;;;;;2086:12;-1:-1:-1;;;;;2076:22:83;:6;-1:-1:-1;;;;;2076:22:83;;2068:47;;;;-1:-1:-1;;;2068:47:83;;;;;;;;;;;;-1:-1:-1;;;;;2121:15:83;;;;;2142:27;;;;2077:38:77;;::::1;;::::0;2121:26;;::::1;;::::0;2153:32:::1;::::0;;;;2573:26:81;;;::::1;;::::0;-1:-1:-1;1161:3378:81;;-1:-1:-1;;;;;;1161:3378:81;14:147:87;-1:-1:-1;;;;;105:31:87;;95:42;;85:70;;151:1;148;141:12;85:70;14:147;:::o;166:1066::-;416:6;424;432;440;448;456;509:3;497:9;488:7;484:23;480:33;477:53;;;526:1;523;516:12;477:53;558:9;552:16;577:47;618:5;577:47;:::i;:::-;693:2;678:18;;672:25;643:5;;-1:-1:-1;706:49:87;672:25;706:49;:::i;:::-;826:2;811:18;;805:25;774:7;;-1:-1:-1;839:49:87;805:25;839:49;:::i;:::-;959:2;944:18;;938:25;907:7;;-1:-1:-1;972:49:87;938:25;972:49;:::i;:::-;1087:3;1072:19;;1066:26;1137:3;1122:19;;1116:26;1040:7;;-1:-1:-1;1066:26:87;-1:-1:-1;1151:49:87;1116:26;1151:49;:::i;:::-;1219:7;1209:17;;;166:1066;;;;;;;;:::o;1237:273::-;1305:6;1358:2;1346:9;1337:7;1333:23;1329:32;1326:52;;;1374:1;1371;1364:12;1326:52;1406:9;1400:16;1456:4;1449:5;1445:16;1438:5;1435:27;1425:55;;1476:1;1473;1466:12;1425:55;1499:5;1237:273;-1:-1:-1;;;1237:273:87:o;1515:479::-;1161:3378:81;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;"},"deployedBytecode":{"functionDebugData":{"@_claimRewards_23628":{"entryPoint":2663,"id":23628,"parameterSlots":1,"returnSlots":0},"@_convertAssets_24221":{"entryPoint":4852,"id":24221,"parameterSlots":2,"returnSlots":1},"@_getOraclePrice_22359":{"entryPoint":3994,"id":22359,"parameterSlots":1,"returnSlots":1},"@_getSwapConfigSelf_24494":{"entryPoint":4616,"id":24494,"parameterSlots":0,"returnSlots":1},"@_getSwapConfig_24475":{"entryPoint":5014,"id":24475,"parameterSlots":1,"returnSlots":1},"@_setSwapConfig_24405":{"entryPoint":5201,"id":24405,"parameterSlots":2,"returnSlots":0},"@_swapRewards_23694":{"entryPoint":3250,"id":23694,"parameterSlots":1,"returnSlots":0},"@_toWadFactor_24055":{"entryPoint":5674,"id":24055,"parameterSlots":1,"returnSlots":1},"@assetOracle_22223":{"entryPoint":null,"id":22223,"parameterSlots":0,"returnSlots":0},"@asset_24150":{"entryPoint":null,"id":24150,"parameterSlots":1,"returnSlots":1},"@bubbleRevert_10459":{"entryPoint":5837,"id":10459,"parameterSlots":0,"returnSlots":0},"@connect_24080":{"entryPoint":2095,"id":24080,"parameterSlots":1,"returnSlots":0},"@delegatecallNoReturn_10421":{"entryPoint":5793,"id":10421,"parameterSlots":2,"returnSlots":1},"@deposit_24352":{"entryPoint":2220,"id":24352,"parameterSlots":1,"returnSlots":0},"@disconnect_24105":{"entryPoint":1971,"id":24105,"parameterSlots":1,"returnSlots":0},"@distributor_23455":{"entryPoint":null,"id":23455,"parameterSlots":0,"returnSlots":0},"@forwardEntryPoint_23765":{"entryPoint":817,"id":23765,"parameterSlots":2,"returnSlots":1},"@forwardEntryPoint_24449":{"entryPoint":3837,"id":24449,"parameterSlots":2,"returnSlots":1},"@functionDelegateCall_10166":{"entryPoint":5489,"id":10166,"parameterSlots":2,"returnSlots":1},"@getAddressSlot_10943":{"entryPoint":null,"id":10943,"parameterSlots":1,"returnSlots":1},"@getBytesSlot_11020":{"entryPoint":null,"id":11020,"parameterSlots":1,"returnSlots":1},"@getImplementation_7358":{"entryPoint":null,"id":7358,"parameterSlots":0,"returnSlots":1},"@getSwapConfig_24508":{"entryPoint":1935,"id":24508,"parameterSlots":1,"returnSlots":1},"@investAssetOracle_22226":{"entryPoint":null,"id":22226,"parameterSlots":0,"returnSlots":0},"@investAssetPrice_22291":{"entryPoint":1078,"id":22291,"parameterSlots":0,"returnSlots":1},"@investAsset_24164":{"entryPoint":null,"id":24164,"parameterSlots":1,"returnSlots":1},"@maxDeposit_23519":{"entryPoint":null,"id":23519,"parameterSlots":1,"returnSlots":1},"@maxWithdraw_24119":{"entryPoint":2509,"id":24119,"parameterSlots":1,"returnSlots":1},"@mul512_11124":{"entryPoint":5629,"id":11124,"parameterSlots":2,"returnSlots":2},"@mulDiv_11611":{"entryPoint":4439,"id":11611,"parameterSlots":3,"returnSlots":1},"@panic_10907":{"entryPoint":5657,"id":10907,"parameterSlots":1,"returnSlots":0},"@priceTolerance_22228":{"entryPoint":null,"id":22228,"parameterSlots":0,"returnSlots":0},"@returnDataSize_10445":{"entryPoint":null,"id":10445,"parameterSlots":0,"returnSlots":1},"@returnData_10453":{"entryPoint":5812,"id":10453,"parameterSlots":0,"returnSlots":1},"@sellInvestAssetPrice_24184":{"entryPoint":4830,"id":24184,"parameterSlots":0,"returnSlots":1},"@storageSlot_23952":{"entryPoint":null,"id":23952,"parameterSlots":0,"returnSlots":0},"@ternary_11373":{"entryPoint":null,"id":11373,"parameterSlots":3,"returnSlots":1},"@toUint_14490":{"entryPoint":null,"id":14490,"parameterSlots":1,"returnSlots":1},"@totalAssets_24239":{"entryPoint":2515,"id":24239,"parameterSlots":1,"returnSlots":1},"@withdraw_24321":{"entryPoint":1183,"id":24321,"parameterSlots":1,"returnSlots":0},"abi_decode_bytes":{"entryPoint":6011,"id":null,"parameterSlots":2,"returnSlots":1},"abi_decode_bytes_fromMemory":{"entryPoint":7611,"id":null,"parameterSlots":2,"returnSlots":1},"abi_decode_tuple_t_address":{"entryPoint":6257,"id":null,"parameterSlots":2,"returnSlots":1},"abi_decode_tuple_t_bool":{"entryPoint":6403,"id":null,"parameterSlots":2,"returnSlots":1},"abi_decode_tuple_t_bytes_memory_ptr":{"entryPoint":6434,"id":null,"parameterSlots":2,"returnSlots":1},"abi_decode_tuple_t_bytes_memory_ptr_fromMemory":{"entryPoint":7859,"id":null,"parameterSlots":2,"returnSlots":1},"abi_decode_tuple_t_struct$_SwapConfig_$1113_memory_ptr_fromMemory":{"entryPoint":7688,"id":null,"parameterSlots":2,"returnSlots":1},"abi_decode_tuple_t_uint256":{"entryPoint":6234,"id":null,"parameterSlots":2,"returnSlots":1},"abi_decode_tuple_t_uint256_fromMemory":{"entryPoint":6484,"id":null,"parameterSlots":2,"returnSlots":1},"abi_decode_tuple_t_uint256t_array$_t_bytes32_$dyn_memory_ptr_fromMemory":{"entryPoint":6570,"id":null,"parameterSlots":2,"returnSlots":2},"abi_decode_tuple_t_uint80t_int256t_uint256t_uint256t_uint80_fromMemory":{"entryPoint":7102,"id":null,"parameterSlots":2,"returnSlots":5},"abi_decode_tuple_t_uint8_fromMemory":{"entryPoint":7219,"id":null,"parameterSlots":2,"returnSlots":1},"abi_decode_tuple_t_uint8t_bytes_memory_ptr":{"entryPoint":6093,"id":null,"parameterSlots":2,"returnSlots":2},"abi_decode_uint80_fromMemory":{"entryPoint":7072,"id":null,"parameterSlots":1,"returnSlots":1},"abi_encode_array_address_dyn":{"entryPoint":6771,"id":null,"parameterSlots":2,"returnSlots":1},"abi_encode_bytes":{"entryPoint":6170,"id":null,"parameterSlots":2,"returnSlots":1},"abi_encode_struct_SwapConfig":{"entryPoint":6315,"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_t_array$_t_address_$dyn_memory_ptr_t_array$_t_uint256_$dyn_memory_ptr_t_array$_t_array$_t_bytes32_$dyn_memory_ptr_$dyn_memory_ptr__to_t_array$_t_address_$dyn_memory_ptr_t_array$_t_address_$dyn_memory_ptr_t_array$_t_uint256_$dyn_memory_ptr_t_array$_t_array$_t_bytes32_$dyn_memory_ptr_$dyn_memory_ptr__fromStack_reversed":{"entryPoint":6838,"id":null,"parameterSlots":5,"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":6216,"id":null,"parameterSlots":2,"returnSlots":1},"abi_encode_tuple_t_contract$_AggregatorV3Interface_$20542__to_t_address__fromStack_reversed":{"entryPoint":null,"id":null,"parameterSlots":2,"returnSlots":1},"abi_encode_tuple_t_contract$_IMerklDistributor_$23442__to_t_address__fromStack_reversed":{"entryPoint":null,"id":null,"parameterSlots":2,"returnSlots":1},"abi_encode_tuple_t_int256__to_t_int256__fromStack_reversed":{"entryPoint":null,"id":null,"parameterSlots":2,"returnSlots":1},"abi_encode_tuple_t_struct$_SwapConfig_$1113_memory_ptr__to_t_struct$_SwapConfig_$1113_memory_ptr__fromStack_library_reversed":{"entryPoint":null,"id":null,"parameterSlots":2,"returnSlots":1},"abi_encode_tuple_t_struct$_SwapConfig_$1113_memory_ptr__to_t_struct$_SwapConfig_$1113_memory_ptr__fromStack_reversed":{"entryPoint":6385,"id":null,"parameterSlots":2,"returnSlots":1},"abi_encode_tuple_t_struct$_SwapConfig_$1113_memory_ptr_t_address_t_address_t_uint256_t_uint256__to_t_struct$_SwapConfig_$1113_memory_ptr_t_address_t_address_t_uint256_t_uint256__fromStack_library_reversed":{"entryPoint":6507,"id":null,"parameterSlots":6,"returnSlots":1},"abi_encode_tuple_t_struct$_SwapConfig_$1113_memory_ptr_t_struct$_SwapConfig_$1113_memory_ptr__to_t_struct$_SwapConfig_$1113_memory_ptr_t_struct$_SwapConfig_$1113_memory_ptr__fromStack_reversed":{"entryPoint":7909,"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},"allocate_memory":{"entryPoint":5923,"id":null,"parameterSlots":1,"returnSlots":1},"allocate_memory_2750":{"entryPoint":5882,"id":null,"parameterSlots":0,"returnSlots":1},"array_allocation_size_bytes":{"entryPoint":5972,"id":null,"parameterSlots":1,"returnSlots":1},"array_dataslot_bytes_storage":{"entryPoint":null,"id":null,"parameterSlots":1,"returnSlots":1},"checked_div_t_uint256":{"entryPoint":7828,"id":null,"parameterSlots":2,"returnSlots":1},"checked_exp_helper":{"entryPoint":7271,"id":null,"parameterSlots":3,"returnSlots":2},"checked_exp_t_uint256_t_uint8":{"entryPoint":7498,"id":null,"parameterSlots":2,"returnSlots":1},"checked_exp_unsigned":{"entryPoint":7338,"id":null,"parameterSlots":2,"returnSlots":1},"checked_mul_t_uint256":{"entryPoint":7512,"id":null,"parameterSlots":2,"returnSlots":1},"checked_sub_t_uint256":{"entryPoint":7200,"id":null,"parameterSlots":2,"returnSlots":1},"checked_sub_t_uint8":{"entryPoint":7246,"id":null,"parameterSlots":2,"returnSlots":1},"clean_up_bytearray_end_slots_bytes_storage":{"entryPoint":7954,"id":null,"parameterSlots":3,"returnSlots":0},"copy_byte_array_to_storage_from_t_bytes_memory_ptr_to_t_bytes_storage":{"entryPoint":8029,"id":null,"parameterSlots":2,"returnSlots":0},"extract_byte_array_length":{"entryPoint":7555,"id":null,"parameterSlots":1,"returnSlots":1},"extract_used_part_and_set_length_of_short_byte_array":{"entryPoint":null,"id":null,"parameterSlots":2,"returnSlots":1},"panic_error_0x11":{"entryPoint":7180,"id":null,"parameterSlots":0,"returnSlots":0},"panic_error_0x12":{"entryPoint":7535,"id":null,"parameterSlots":0,"returnSlots":0},"panic_error_0x21":{"entryPoint":6295,"id":null,"parameterSlots":0,"returnSlots":0},"panic_error_0x32":{"entryPoint":6751,"id":null,"parameterSlots":0,"returnSlots":0},"panic_error_0x41":{"entryPoint":5862,"id":null,"parameterSlots":0,"returnSlots":0},"validator_revert_uint8":{"entryPoint":5848,"id":null,"parameterSlots":1,"returnSlots":0}},"generatedSources":[{"ast":{"nativeSrc":"0:18847:87","nodeType":"YulBlock","src":"0:18847:87","statements":[{"nativeSrc":"6:3:87","nodeType":"YulBlock","src":"6:3:87","statements":[]},{"body":{"nativeSrc":"57:71:87","nodeType":"YulBlock","src":"57:71:87","statements":[{"body":{"nativeSrc":"106:16:87","nodeType":"YulBlock","src":"106:16:87","statements":[{"expression":{"arguments":[{"kind":"number","nativeSrc":"115:1:87","nodeType":"YulLiteral","src":"115:1:87","type":"","value":"0"},{"kind":"number","nativeSrc":"118:1:87","nodeType":"YulLiteral","src":"118:1:87","type":"","value":"0"}],"functionName":{"name":"revert","nativeSrc":"108:6:87","nodeType":"YulIdentifier","src":"108:6:87"},"nativeSrc":"108:12:87","nodeType":"YulFunctionCall","src":"108:12:87"},"nativeSrc":"108:12:87","nodeType":"YulExpressionStatement","src":"108:12:87"}]},"condition":{"arguments":[{"arguments":[{"name":"value","nativeSrc":"80:5:87","nodeType":"YulIdentifier","src":"80:5:87"},{"arguments":[{"name":"value","nativeSrc":"91:5:87","nodeType":"YulIdentifier","src":"91:5:87"},{"kind":"number","nativeSrc":"98:4:87","nodeType":"YulLiteral","src":"98:4:87","type":"","value":"0xff"}],"functionName":{"name":"and","nativeSrc":"87:3:87","nodeType":"YulIdentifier","src":"87:3:87"},"nativeSrc":"87:16:87","nodeType":"YulFunctionCall","src":"87:16:87"}],"functionName":{"name":"eq","nativeSrc":"77:2:87","nodeType":"YulIdentifier","src":"77:2:87"},"nativeSrc":"77:27:87","nodeType":"YulFunctionCall","src":"77:27:87"}],"functionName":{"name":"iszero","nativeSrc":"70:6:87","nodeType":"YulIdentifier","src":"70:6:87"},"nativeSrc":"70:35:87","nodeType":"YulFunctionCall","src":"70:35:87"},"nativeSrc":"67:55:87","nodeType":"YulIf","src":"67:55:87"}]},"name":"validator_revert_uint8","nativeSrc":"14:114:87","nodeType":"YulFunctionDefinition","parameters":[{"name":"value","nativeSrc":"46:5:87","nodeType":"YulTypedName","src":"46:5:87","type":""}],"src":"14:114:87"},{"body":{"nativeSrc":"165:95:87","nodeType":"YulBlock","src":"165:95:87","statements":[{"expression":{"arguments":[{"kind":"number","nativeSrc":"182:1:87","nodeType":"YulLiteral","src":"182:1:87","type":"","value":"0"},{"arguments":[{"kind":"number","nativeSrc":"189:3:87","nodeType":"YulLiteral","src":"189:3:87","type":"","value":"224"},{"kind":"number","nativeSrc":"194:10:87","nodeType":"YulLiteral","src":"194:10:87","type":"","value":"0x4e487b71"}],"functionName":{"name":"shl","nativeSrc":"185:3:87","nodeType":"YulIdentifier","src":"185:3:87"},"nativeSrc":"185:20:87","nodeType":"YulFunctionCall","src":"185:20:87"}],"functionName":{"name":"mstore","nativeSrc":"175:6:87","nodeType":"YulIdentifier","src":"175:6:87"},"nativeSrc":"175:31:87","nodeType":"YulFunctionCall","src":"175:31:87"},"nativeSrc":"175:31:87","nodeType":"YulExpressionStatement","src":"175:31:87"},{"expression":{"arguments":[{"kind":"number","nativeSrc":"222:1:87","nodeType":"YulLiteral","src":"222:1:87","type":"","value":"4"},{"kind":"number","nativeSrc":"225:4:87","nodeType":"YulLiteral","src":"225:4:87","type":"","value":"0x41"}],"functionName":{"name":"mstore","nativeSrc":"215:6:87","nodeType":"YulIdentifier","src":"215:6:87"},"nativeSrc":"215:15:87","nodeType":"YulFunctionCall","src":"215:15:87"},"nativeSrc":"215:15:87","nodeType":"YulExpressionStatement","src":"215:15:87"},{"expression":{"arguments":[{"kind":"number","nativeSrc":"246:1:87","nodeType":"YulLiteral","src":"246:1:87","type":"","value":"0"},{"kind":"number","nativeSrc":"249:4:87","nodeType":"YulLiteral","src":"249:4:87","type":"","value":"0x24"}],"functionName":{"name":"revert","nativeSrc":"239:6:87","nodeType":"YulIdentifier","src":"239:6:87"},"nativeSrc":"239:15:87","nodeType":"YulFunctionCall","src":"239:15:87"},"nativeSrc":"239:15:87","nodeType":"YulExpressionStatement","src":"239:15:87"}]},"name":"panic_error_0x41","nativeSrc":"133:127:87","nodeType":"YulFunctionDefinition","src":"133:127:87"},{"body":{"nativeSrc":"311:207:87","nodeType":"YulBlock","src":"311:207:87","statements":[{"nativeSrc":"321:19:87","nodeType":"YulAssignment","src":"321:19:87","value":{"arguments":[{"kind":"number","nativeSrc":"337:2:87","nodeType":"YulLiteral","src":"337:2:87","type":"","value":"64"}],"functionName":{"name":"mload","nativeSrc":"331:5:87","nodeType":"YulIdentifier","src":"331:5:87"},"nativeSrc":"331:9:87","nodeType":"YulFunctionCall","src":"331:9:87"},"variableNames":[{"name":"memPtr","nativeSrc":"321:6:87","nodeType":"YulIdentifier","src":"321:6:87"}]},{"nativeSrc":"349:35:87","nodeType":"YulVariableDeclaration","src":"349:35:87","value":{"arguments":[{"name":"memPtr","nativeSrc":"371:6:87","nodeType":"YulIdentifier","src":"371:6:87"},{"kind":"number","nativeSrc":"379:4:87","nodeType":"YulLiteral","src":"379:4:87","type":"","value":"0x60"}],"functionName":{"name":"add","nativeSrc":"367:3:87","nodeType":"YulIdentifier","src":"367:3:87"},"nativeSrc":"367:17:87","nodeType":"YulFunctionCall","src":"367:17:87"},"variables":[{"name":"newFreePtr","nativeSrc":"353:10:87","nodeType":"YulTypedName","src":"353:10:87","type":""}]},{"body":{"nativeSrc":"459:22:87","nodeType":"YulBlock","src":"459:22:87","statements":[{"expression":{"arguments":[],"functionName":{"name":"panic_error_0x41","nativeSrc":"461:16:87","nodeType":"YulIdentifier","src":"461:16:87"},"nativeSrc":"461:18:87","nodeType":"YulFunctionCall","src":"461:18:87"},"nativeSrc":"461:18:87","nodeType":"YulExpressionStatement","src":"461:18:87"}]},"condition":{"arguments":[{"arguments":[{"name":"newFreePtr","nativeSrc":"402:10:87","nodeType":"YulIdentifier","src":"402:10:87"},{"kind":"number","nativeSrc":"414:18:87","nodeType":"YulLiteral","src":"414:18:87","type":"","value":"0xffffffffffffffff"}],"functionName":{"name":"gt","nativeSrc":"399:2:87","nodeType":"YulIdentifier","src":"399:2:87"},"nativeSrc":"399:34:87","nodeType":"YulFunctionCall","src":"399:34:87"},{"arguments":[{"name":"newFreePtr","nativeSrc":"438:10:87","nodeType":"YulIdentifier","src":"438:10:87"},{"name":"memPtr","nativeSrc":"450:6:87","nodeType":"YulIdentifier","src":"450:6:87"}],"functionName":{"name":"lt","nativeSrc":"435:2:87","nodeType":"YulIdentifier","src":"435:2:87"},"nativeSrc":"435:22:87","nodeType":"YulFunctionCall","src":"435:22:87"}],"functionName":{"name":"or","nativeSrc":"396:2:87","nodeType":"YulIdentifier","src":"396:2:87"},"nativeSrc":"396:62:87","nodeType":"YulFunctionCall","src":"396:62:87"},"nativeSrc":"393:88:87","nodeType":"YulIf","src":"393:88:87"},{"expression":{"arguments":[{"kind":"number","nativeSrc":"497:2:87","nodeType":"YulLiteral","src":"497:2:87","type":"","value":"64"},{"name":"newFreePtr","nativeSrc":"501:10:87","nodeType":"YulIdentifier","src":"501:10:87"}],"functionName":{"name":"mstore","nativeSrc":"490:6:87","nodeType":"YulIdentifier","src":"490:6:87"},"nativeSrc":"490:22:87","nodeType":"YulFunctionCall","src":"490:22:87"},"nativeSrc":"490:22:87","nodeType":"YulExpressionStatement","src":"490:22:87"}]},"name":"allocate_memory_2750","nativeSrc":"265:253:87","nodeType":"YulFunctionDefinition","returnVariables":[{"name":"memPtr","nativeSrc":"300:6:87","nodeType":"YulTypedName","src":"300:6:87","type":""}],"src":"265:253:87"},{"body":{"nativeSrc":"568:230:87","nodeType":"YulBlock","src":"568:230:87","statements":[{"nativeSrc":"578:19:87","nodeType":"YulAssignment","src":"578:19:87","value":{"arguments":[{"kind":"number","nativeSrc":"594:2:87","nodeType":"YulLiteral","src":"594:2:87","type":"","value":"64"}],"functionName":{"name":"mload","nativeSrc":"588:5:87","nodeType":"YulIdentifier","src":"588:5:87"},"nativeSrc":"588:9:87","nodeType":"YulFunctionCall","src":"588:9:87"},"variableNames":[{"name":"memPtr","nativeSrc":"578:6:87","nodeType":"YulIdentifier","src":"578:6:87"}]},{"nativeSrc":"606:58:87","nodeType":"YulVariableDeclaration","src":"606:58:87","value":{"arguments":[{"name":"memPtr","nativeSrc":"628:6:87","nodeType":"YulIdentifier","src":"628:6:87"},{"arguments":[{"arguments":[{"name":"size","nativeSrc":"644:4:87","nodeType":"YulIdentifier","src":"644:4:87"},{"kind":"number","nativeSrc":"650:2:87","nodeType":"YulLiteral","src":"650:2:87","type":"","value":"31"}],"functionName":{"name":"add","nativeSrc":"640:3:87","nodeType":"YulIdentifier","src":"640:3:87"},"nativeSrc":"640:13:87","nodeType":"YulFunctionCall","src":"640:13:87"},{"arguments":[{"kind":"number","nativeSrc":"659:2:87","nodeType":"YulLiteral","src":"659:2:87","type":"","value":"31"}],"functionName":{"name":"not","nativeSrc":"655:3:87","nodeType":"YulIdentifier","src":"655:3:87"},"nativeSrc":"655:7:87","nodeType":"YulFunctionCall","src":"655:7:87"}],"functionName":{"name":"and","nativeSrc":"636:3:87","nodeType":"YulIdentifier","src":"636:3:87"},"nativeSrc":"636:27:87","nodeType":"YulFunctionCall","src":"636:27:87"}],"functionName":{"name":"add","nativeSrc":"624:3:87","nodeType":"YulIdentifier","src":"624:3:87"},"nativeSrc":"624:40:87","nodeType":"YulFunctionCall","src":"624:40:87"},"variables":[{"name":"newFreePtr","nativeSrc":"610:10:87","nodeType":"YulTypedName","src":"610:10:87","type":""}]},{"body":{"nativeSrc":"739:22:87","nodeType":"YulBlock","src":"739:22:87","statements":[{"expression":{"arguments":[],"functionName":{"name":"panic_error_0x41","nativeSrc":"741:16:87","nodeType":"YulIdentifier","src":"741:16:87"},"nativeSrc":"741:18:87","nodeType":"YulFunctionCall","src":"741:18:87"},"nativeSrc":"741:18:87","nodeType":"YulExpressionStatement","src":"741:18:87"}]},"condition":{"arguments":[{"arguments":[{"name":"newFreePtr","nativeSrc":"682:10:87","nodeType":"YulIdentifier","src":"682:10:87"},{"kind":"number","nativeSrc":"694:18:87","nodeType":"YulLiteral","src":"694:18:87","type":"","value":"0xffffffffffffffff"}],"functionName":{"name":"gt","nativeSrc":"679:2:87","nodeType":"YulIdentifier","src":"679:2:87"},"nativeSrc":"679:34:87","nodeType":"YulFunctionCall","src":"679:34:87"},{"arguments":[{"name":"newFreePtr","nativeSrc":"718:10:87","nodeType":"YulIdentifier","src":"718:10:87"},{"name":"memPtr","nativeSrc":"730:6:87","nodeType":"YulIdentifier","src":"730:6:87"}],"functionName":{"name":"lt","nativeSrc":"715:2:87","nodeType":"YulIdentifier","src":"715:2:87"},"nativeSrc":"715:22:87","nodeType":"YulFunctionCall","src":"715:22:87"}],"functionName":{"name":"or","nativeSrc":"676:2:87","nodeType":"YulIdentifier","src":"676:2:87"},"nativeSrc":"676:62:87","nodeType":"YulFunctionCall","src":"676:62:87"},"nativeSrc":"673:88:87","nodeType":"YulIf","src":"673:88:87"},{"expression":{"arguments":[{"kind":"number","nativeSrc":"777:2:87","nodeType":"YulLiteral","src":"777:2:87","type":"","value":"64"},{"name":"newFreePtr","nativeSrc":"781:10:87","nodeType":"YulIdentifier","src":"781:10:87"}],"functionName":{"name":"mstore","nativeSrc":"770:6:87","nodeType":"YulIdentifier","src":"770:6:87"},"nativeSrc":"770:22:87","nodeType":"YulFunctionCall","src":"770:22:87"},"nativeSrc":"770:22:87","nodeType":"YulExpressionStatement","src":"770:22:87"}]},"name":"allocate_memory","nativeSrc":"523:275:87","nodeType":"YulFunctionDefinition","parameters":[{"name":"size","nativeSrc":"548:4:87","nodeType":"YulTypedName","src":"548:4:87","type":""}],"returnVariables":[{"name":"memPtr","nativeSrc":"557:6:87","nodeType":"YulTypedName","src":"557:6:87","type":""}],"src":"523:275:87"},{"body":{"nativeSrc":"860:129:87","nodeType":"YulBlock","src":"860:129:87","statements":[{"body":{"nativeSrc":"904:22:87","nodeType":"YulBlock","src":"904:22:87","statements":[{"expression":{"arguments":[],"functionName":{"name":"panic_error_0x41","nativeSrc":"906:16:87","nodeType":"YulIdentifier","src":"906:16:87"},"nativeSrc":"906:18:87","nodeType":"YulFunctionCall","src":"906:18:87"},"nativeSrc":"906:18:87","nodeType":"YulExpressionStatement","src":"906:18:87"}]},"condition":{"arguments":[{"name":"length","nativeSrc":"876:6:87","nodeType":"YulIdentifier","src":"876:6:87"},{"kind":"number","nativeSrc":"884:18:87","nodeType":"YulLiteral","src":"884:18:87","type":"","value":"0xffffffffffffffff"}],"functionName":{"name":"gt","nativeSrc":"873:2:87","nodeType":"YulIdentifier","src":"873:2:87"},"nativeSrc":"873:30:87","nodeType":"YulFunctionCall","src":"873:30:87"},"nativeSrc":"870:56:87","nodeType":"YulIf","src":"870:56:87"},{"nativeSrc":"935:48:87","nodeType":"YulAssignment","src":"935:48:87","value":{"arguments":[{"arguments":[{"arguments":[{"name":"length","nativeSrc":"955:6:87","nodeType":"YulIdentifier","src":"955:6:87"},{"kind":"number","nativeSrc":"963:2:87","nodeType":"YulLiteral","src":"963:2:87","type":"","value":"31"}],"functionName":{"name":"add","nativeSrc":"951:3:87","nodeType":"YulIdentifier","src":"951:3:87"},"nativeSrc":"951:15:87","nodeType":"YulFunctionCall","src":"951:15:87"},{"arguments":[{"kind":"number","nativeSrc":"972:2:87","nodeType":"YulLiteral","src":"972:2:87","type":"","value":"31"}],"functionName":{"name":"not","nativeSrc":"968:3:87","nodeType":"YulIdentifier","src":"968:3:87"},"nativeSrc":"968:7:87","nodeType":"YulFunctionCall","src":"968:7:87"}],"functionName":{"name":"and","nativeSrc":"947:3:87","nodeType":"YulIdentifier","src":"947:3:87"},"nativeSrc":"947:29:87","nodeType":"YulFunctionCall","src":"947:29:87"},{"kind":"number","nativeSrc":"978:4:87","nodeType":"YulLiteral","src":"978:4:87","type":"","value":"0x20"}],"functionName":{"name":"add","nativeSrc":"943:3:87","nodeType":"YulIdentifier","src":"943:3:87"},"nativeSrc":"943:40:87","nodeType":"YulFunctionCall","src":"943:40:87"},"variableNames":[{"name":"size","nativeSrc":"935:4:87","nodeType":"YulIdentifier","src":"935:4:87"}]}]},"name":"array_allocation_size_bytes","nativeSrc":"803:186:87","nodeType":"YulFunctionDefinition","parameters":[{"name":"length","nativeSrc":"840:6:87","nodeType":"YulTypedName","src":"840:6:87","type":""}],"returnVariables":[{"name":"size","nativeSrc":"851:4:87","nodeType":"YulTypedName","src":"851:4:87","type":""}],"src":"803:186:87"},{"body":{"nativeSrc":"1046:434:87","nodeType":"YulBlock","src":"1046:434:87","statements":[{"body":{"nativeSrc":"1095:16:87","nodeType":"YulBlock","src":"1095:16:87","statements":[{"expression":{"arguments":[{"kind":"number","nativeSrc":"1104:1:87","nodeType":"YulLiteral","src":"1104:1:87","type":"","value":"0"},{"kind":"number","nativeSrc":"1107:1:87","nodeType":"YulLiteral","src":"1107:1:87","type":"","value":"0"}],"functionName":{"name":"revert","nativeSrc":"1097:6:87","nodeType":"YulIdentifier","src":"1097:6:87"},"nativeSrc":"1097:12:87","nodeType":"YulFunctionCall","src":"1097:12:87"},"nativeSrc":"1097:12:87","nodeType":"YulExpressionStatement","src":"1097:12:87"}]},"condition":{"arguments":[{"arguments":[{"arguments":[{"name":"offset","nativeSrc":"1074:6:87","nodeType":"YulIdentifier","src":"1074:6:87"},{"kind":"number","nativeSrc":"1082:4:87","nodeType":"YulLiteral","src":"1082:4:87","type":"","value":"0x1f"}],"functionName":{"name":"add","nativeSrc":"1070:3:87","nodeType":"YulIdentifier","src":"1070:3:87"},"nativeSrc":"1070:17:87","nodeType":"YulFunctionCall","src":"1070:17:87"},{"name":"end","nativeSrc":"1089:3:87","nodeType":"YulIdentifier","src":"1089:3:87"}],"functionName":{"name":"slt","nativeSrc":"1066:3:87","nodeType":"YulIdentifier","src":"1066:3:87"},"nativeSrc":"1066:27:87","nodeType":"YulFunctionCall","src":"1066:27:87"}],"functionName":{"name":"iszero","nativeSrc":"1059:6:87","nodeType":"YulIdentifier","src":"1059:6:87"},"nativeSrc":"1059:35:87","nodeType":"YulFunctionCall","src":"1059:35:87"},"nativeSrc":"1056:55:87","nodeType":"YulIf","src":"1056:55:87"},{"nativeSrc":"1120:34:87","nodeType":"YulVariableDeclaration","src":"1120:34:87","value":{"arguments":[{"name":"offset","nativeSrc":"1147:6:87","nodeType":"YulIdentifier","src":"1147:6:87"}],"functionName":{"name":"calldataload","nativeSrc":"1134:12:87","nodeType":"YulIdentifier","src":"1134:12:87"},"nativeSrc":"1134:20:87","nodeType":"YulFunctionCall","src":"1134:20:87"},"variables":[{"name":"length","nativeSrc":"1124:6:87","nodeType":"YulTypedName","src":"1124:6:87","type":""}]},{"nativeSrc":"1163:67:87","nodeType":"YulVariableDeclaration","src":"1163:67:87","value":{"arguments":[{"arguments":[{"name":"length","nativeSrc":"1222:6:87","nodeType":"YulIdentifier","src":"1222:6:87"}],"functionName":{"name":"array_allocation_size_bytes","nativeSrc":"1194:27:87","nodeType":"YulIdentifier","src":"1194:27:87"},"nativeSrc":"1194:35:87","nodeType":"YulFunctionCall","src":"1194:35:87"}],"functionName":{"name":"allocate_memory","nativeSrc":"1178:15:87","nodeType":"YulIdentifier","src":"1178:15:87"},"nativeSrc":"1178:52:87","nodeType":"YulFunctionCall","src":"1178:52:87"},"variables":[{"name":"array_1","nativeSrc":"1167:7:87","nodeType":"YulTypedName","src":"1167:7:87","type":""}]},{"expression":{"arguments":[{"name":"array_1","nativeSrc":"1246:7:87","nodeType":"YulIdentifier","src":"1246:7:87"},{"name":"length","nativeSrc":"1255:6:87","nodeType":"YulIdentifier","src":"1255:6:87"}],"functionName":{"name":"mstore","nativeSrc":"1239:6:87","nodeType":"YulIdentifier","src":"1239:6:87"},"nativeSrc":"1239:23:87","nodeType":"YulFunctionCall","src":"1239:23:87"},"nativeSrc":"1239:23:87","nodeType":"YulExpressionStatement","src":"1239:23:87"},{"body":{"nativeSrc":"1314:16:87","nodeType":"YulBlock","src":"1314:16:87","statements":[{"expression":{"arguments":[{"kind":"number","nativeSrc":"1323:1:87","nodeType":"YulLiteral","src":"1323:1:87","type":"","value":"0"},{"kind":"number","nativeSrc":"1326:1:87","nodeType":"YulLiteral","src":"1326:1:87","type":"","value":"0"}],"functionName":{"name":"revert","nativeSrc":"1316:6:87","nodeType":"YulIdentifier","src":"1316:6:87"},"nativeSrc":"1316:12:87","nodeType":"YulFunctionCall","src":"1316:12:87"},"nativeSrc":"1316:12:87","nodeType":"YulExpressionStatement","src":"1316:12:87"}]},"condition":{"arguments":[{"arguments":[{"arguments":[{"name":"offset","nativeSrc":"1285:6:87","nodeType":"YulIdentifier","src":"1285:6:87"},{"name":"length","nativeSrc":"1293:6:87","nodeType":"YulIdentifier","src":"1293:6:87"}],"functionName":{"name":"add","nativeSrc":"1281:3:87","nodeType":"YulIdentifier","src":"1281:3:87"},"nativeSrc":"1281:19:87","nodeType":"YulFunctionCall","src":"1281:19:87"},{"kind":"number","nativeSrc":"1302:4:87","nodeType":"YulLiteral","src":"1302:4:87","type":"","value":"0x20"}],"functionName":{"name":"add","nativeSrc":"1277:3:87","nodeType":"YulIdentifier","src":"1277:3:87"},"nativeSrc":"1277:30:87","nodeType":"YulFunctionCall","src":"1277:30:87"},{"name":"end","nativeSrc":"1309:3:87","nodeType":"YulIdentifier","src":"1309:3:87"}],"functionName":{"name":"gt","nativeSrc":"1274:2:87","nodeType":"YulIdentifier","src":"1274:2:87"},"nativeSrc":"1274:39:87","nodeType":"YulFunctionCall","src":"1274:39:87"},"nativeSrc":"1271:59:87","nodeType":"YulIf","src":"1271:59:87"},{"expression":{"arguments":[{"arguments":[{"name":"array_1","nativeSrc":"1356:7:87","nodeType":"YulIdentifier","src":"1356:7:87"},{"kind":"number","nativeSrc":"1365:4:87","nodeType":"YulLiteral","src":"1365:4:87","type":"","value":"0x20"}],"functionName":{"name":"add","nativeSrc":"1352:3:87","nodeType":"YulIdentifier","src":"1352:3:87"},"nativeSrc":"1352:18:87","nodeType":"YulFunctionCall","src":"1352:18:87"},{"arguments":[{"name":"offset","nativeSrc":"1376:6:87","nodeType":"YulIdentifier","src":"1376:6:87"},{"kind":"number","nativeSrc":"1384:4:87","nodeType":"YulLiteral","src":"1384:4:87","type":"","value":"0x20"}],"functionName":{"name":"add","nativeSrc":"1372:3:87","nodeType":"YulIdentifier","src":"1372:3:87"},"nativeSrc":"1372:17:87","nodeType":"YulFunctionCall","src":"1372:17:87"},{"name":"length","nativeSrc":"1391:6:87","nodeType":"YulIdentifier","src":"1391:6:87"}],"functionName":{"name":"calldatacopy","nativeSrc":"1339:12:87","nodeType":"YulIdentifier","src":"1339:12:87"},"nativeSrc":"1339:59:87","nodeType":"YulFunctionCall","src":"1339:59:87"},"nativeSrc":"1339:59:87","nodeType":"YulExpressionStatement","src":"1339:59:87"},{"expression":{"arguments":[{"arguments":[{"arguments":[{"name":"array_1","nativeSrc":"1422:7:87","nodeType":"YulIdentifier","src":"1422:7:87"},{"name":"length","nativeSrc":"1431:6:87","nodeType":"YulIdentifier","src":"1431:6:87"}],"functionName":{"name":"add","nativeSrc":"1418:3:87","nodeType":"YulIdentifier","src":"1418:3:87"},"nativeSrc":"1418:20:87","nodeType":"YulFunctionCall","src":"1418:20:87"},{"kind":"number","nativeSrc":"1440:4:87","nodeType":"YulLiteral","src":"1440:4:87","type":"","value":"0x20"}],"functionName":{"name":"add","nativeSrc":"1414:3:87","nodeType":"YulIdentifier","src":"1414:3:87"},"nativeSrc":"1414:31:87","nodeType":"YulFunctionCall","src":"1414:31:87"},{"kind":"number","nativeSrc":"1447:1:87","nodeType":"YulLiteral","src":"1447:1:87","type":"","value":"0"}],"functionName":{"name":"mstore","nativeSrc":"1407:6:87","nodeType":"YulIdentifier","src":"1407:6:87"},"nativeSrc":"1407:42:87","nodeType":"YulFunctionCall","src":"1407:42:87"},"nativeSrc":"1407:42:87","nodeType":"YulExpressionStatement","src":"1407:42:87"},{"nativeSrc":"1458:16:87","nodeType":"YulAssignment","src":"1458:16:87","value":{"name":"array_1","nativeSrc":"1467:7:87","nodeType":"YulIdentifier","src":"1467:7:87"},"variableNames":[{"name":"array","nativeSrc":"1458:5:87","nodeType":"YulIdentifier","src":"1458:5:87"}]}]},"name":"abi_decode_bytes","nativeSrc":"994:486:87","nodeType":"YulFunctionDefinition","parameters":[{"name":"offset","nativeSrc":"1020:6:87","nodeType":"YulTypedName","src":"1020:6:87","type":""},{"name":"end","nativeSrc":"1028:3:87","nodeType":"YulTypedName","src":"1028:3:87","type":""}],"returnVariables":[{"name":"array","nativeSrc":"1036:5:87","nodeType":"YulTypedName","src":"1036:5:87","type":""}],"src":"994:486:87"},{"body":{"nativeSrc":"1579:357:87","nodeType":"YulBlock","src":"1579:357:87","statements":[{"body":{"nativeSrc":"1625:16:87","nodeType":"YulBlock","src":"1625:16:87","statements":[{"expression":{"arguments":[{"kind":"number","nativeSrc":"1634:1:87","nodeType":"YulLiteral","src":"1634:1:87","type":"","value":"0"},{"kind":"number","nativeSrc":"1637:1:87","nodeType":"YulLiteral","src":"1637:1:87","type":"","value":"0"}],"functionName":{"name":"revert","nativeSrc":"1627:6:87","nodeType":"YulIdentifier","src":"1627:6:87"},"nativeSrc":"1627:12:87","nodeType":"YulFunctionCall","src":"1627:12:87"},"nativeSrc":"1627:12:87","nodeType":"YulExpressionStatement","src":"1627:12:87"}]},"condition":{"arguments":[{"arguments":[{"name":"dataEnd","nativeSrc":"1600:7:87","nodeType":"YulIdentifier","src":"1600:7:87"},{"name":"headStart","nativeSrc":"1609:9:87","nodeType":"YulIdentifier","src":"1609:9:87"}],"functionName":{"name":"sub","nativeSrc":"1596:3:87","nodeType":"YulIdentifier","src":"1596:3:87"},"nativeSrc":"1596:23:87","nodeType":"YulFunctionCall","src":"1596:23:87"},{"kind":"number","nativeSrc":"1621:2:87","nodeType":"YulLiteral","src":"1621:2:87","type":"","value":"64"}],"functionName":{"name":"slt","nativeSrc":"1592:3:87","nodeType":"YulIdentifier","src":"1592:3:87"},"nativeSrc":"1592:32:87","nodeType":"YulFunctionCall","src":"1592:32:87"},"nativeSrc":"1589:52:87","nodeType":"YulIf","src":"1589:52:87"},{"nativeSrc":"1650:36:87","nodeType":"YulVariableDeclaration","src":"1650:36:87","value":{"arguments":[{"name":"headStart","nativeSrc":"1676:9:87","nodeType":"YulIdentifier","src":"1676:9:87"}],"functionName":{"name":"calldataload","nativeSrc":"1663:12:87","nodeType":"YulIdentifier","src":"1663:12:87"},"nativeSrc":"1663:23:87","nodeType":"YulFunctionCall","src":"1663:23:87"},"variables":[{"name":"value","nativeSrc":"1654:5:87","nodeType":"YulTypedName","src":"1654:5:87","type":""}]},{"expression":{"arguments":[{"name":"value","nativeSrc":"1718:5:87","nodeType":"YulIdentifier","src":"1718:5:87"}],"functionName":{"name":"validator_revert_uint8","nativeSrc":"1695:22:87","nodeType":"YulIdentifier","src":"1695:22:87"},"nativeSrc":"1695:29:87","nodeType":"YulFunctionCall","src":"1695:29:87"},"nativeSrc":"1695:29:87","nodeType":"YulExpressionStatement","src":"1695:29:87"},{"nativeSrc":"1733:15:87","nodeType":"YulAssignment","src":"1733:15:87","value":{"name":"value","nativeSrc":"1743:5:87","nodeType":"YulIdentifier","src":"1743:5:87"},"variableNames":[{"name":"value0","nativeSrc":"1733:6:87","nodeType":"YulIdentifier","src":"1733:6:87"}]},{"nativeSrc":"1757:46:87","nodeType":"YulVariableDeclaration","src":"1757:46:87","value":{"arguments":[{"arguments":[{"name":"headStart","nativeSrc":"1788:9:87","nodeType":"YulIdentifier","src":"1788:9:87"},{"kind":"number","nativeSrc":"1799:2:87","nodeType":"YulLiteral","src":"1799:2:87","type":"","value":"32"}],"functionName":{"name":"add","nativeSrc":"1784:3:87","nodeType":"YulIdentifier","src":"1784:3:87"},"nativeSrc":"1784:18:87","nodeType":"YulFunctionCall","src":"1784:18:87"}],"functionName":{"name":"calldataload","nativeSrc":"1771:12:87","nodeType":"YulIdentifier","src":"1771:12:87"},"nativeSrc":"1771:32:87","nodeType":"YulFunctionCall","src":"1771:32:87"},"variables":[{"name":"offset","nativeSrc":"1761:6:87","nodeType":"YulTypedName","src":"1761:6:87","type":""}]},{"body":{"nativeSrc":"1846:16:87","nodeType":"YulBlock","src":"1846:16:87","statements":[{"expression":{"arguments":[{"kind":"number","nativeSrc":"1855:1:87","nodeType":"YulLiteral","src":"1855:1:87","type":"","value":"0"},{"kind":"number","nativeSrc":"1858:1:87","nodeType":"YulLiteral","src":"1858:1:87","type":"","value":"0"}],"functionName":{"name":"revert","nativeSrc":"1848:6:87","nodeType":"YulIdentifier","src":"1848:6:87"},"nativeSrc":"1848:12:87","nodeType":"YulFunctionCall","src":"1848:12:87"},"nativeSrc":"1848:12:87","nodeType":"YulExpressionStatement","src":"1848:12:87"}]},"condition":{"arguments":[{"name":"offset","nativeSrc":"1818:6:87","nodeType":"YulIdentifier","src":"1818:6:87"},{"kind":"number","nativeSrc":"1826:18:87","nodeType":"YulLiteral","src":"1826:18:87","type":"","value":"0xffffffffffffffff"}],"functionName":{"name":"gt","nativeSrc":"1815:2:87","nodeType":"YulIdentifier","src":"1815:2:87"},"nativeSrc":"1815:30:87","nodeType":"YulFunctionCall","src":"1815:30:87"},"nativeSrc":"1812:50:87","nodeType":"YulIf","src":"1812:50:87"},{"nativeSrc":"1871:59:87","nodeType":"YulAssignment","src":"1871:59:87","value":{"arguments":[{"arguments":[{"name":"headStart","nativeSrc":"1902:9:87","nodeType":"YulIdentifier","src":"1902:9:87"},{"name":"offset","nativeSrc":"1913:6:87","nodeType":"YulIdentifier","src":"1913:6:87"}],"functionName":{"name":"add","nativeSrc":"1898:3:87","nodeType":"YulIdentifier","src":"1898:3:87"},"nativeSrc":"1898:22:87","nodeType":"YulFunctionCall","src":"1898:22:87"},{"name":"dataEnd","nativeSrc":"1922:7:87","nodeType":"YulIdentifier","src":"1922:7:87"}],"functionName":{"name":"abi_decode_bytes","nativeSrc":"1881:16:87","nodeType":"YulIdentifier","src":"1881:16:87"},"nativeSrc":"1881:49:87","nodeType":"YulFunctionCall","src":"1881:49:87"},"variableNames":[{"name":"value1","nativeSrc":"1871:6:87","nodeType":"YulIdentifier","src":"1871:6:87"}]}]},"name":"abi_decode_tuple_t_uint8t_bytes_memory_ptr","nativeSrc":"1485:451:87","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nativeSrc":"1537:9:87","nodeType":"YulTypedName","src":"1537:9:87","type":""},{"name":"dataEnd","nativeSrc":"1548:7:87","nodeType":"YulTypedName","src":"1548:7:87","type":""}],"returnVariables":[{"name":"value0","nativeSrc":"1560:6:87","nodeType":"YulTypedName","src":"1560:6:87","type":""},{"name":"value1","nativeSrc":"1568:6:87","nodeType":"YulTypedName","src":"1568:6:87","type":""}],"src":"1485:451:87"},{"body":{"nativeSrc":"1990:239:87","nodeType":"YulBlock","src":"1990:239:87","statements":[{"nativeSrc":"2000:26:87","nodeType":"YulVariableDeclaration","src":"2000:26:87","value":{"arguments":[{"name":"value","nativeSrc":"2020:5:87","nodeType":"YulIdentifier","src":"2020:5:87"}],"functionName":{"name":"mload","nativeSrc":"2014:5:87","nodeType":"YulIdentifier","src":"2014:5:87"},"nativeSrc":"2014:12:87","nodeType":"YulFunctionCall","src":"2014:12:87"},"variables":[{"name":"length","nativeSrc":"2004:6:87","nodeType":"YulTypedName","src":"2004:6:87","type":""}]},{"expression":{"arguments":[{"name":"pos","nativeSrc":"2042:3:87","nodeType":"YulIdentifier","src":"2042:3:87"},{"name":"length","nativeSrc":"2047:6:87","nodeType":"YulIdentifier","src":"2047:6:87"}],"functionName":{"name":"mstore","nativeSrc":"2035:6:87","nodeType":"YulIdentifier","src":"2035:6:87"},"nativeSrc":"2035:19:87","nodeType":"YulFunctionCall","src":"2035:19:87"},"nativeSrc":"2035:19:87","nodeType":"YulExpressionStatement","src":"2035:19:87"},{"expression":{"arguments":[{"arguments":[{"name":"pos","nativeSrc":"2073:3:87","nodeType":"YulIdentifier","src":"2073:3:87"},{"kind":"number","nativeSrc":"2078:4:87","nodeType":"YulLiteral","src":"2078:4:87","type":"","value":"0x20"}],"functionName":{"name":"add","nativeSrc":"2069:3:87","nodeType":"YulIdentifier","src":"2069:3:87"},"nativeSrc":"2069:14:87","nodeType":"YulFunctionCall","src":"2069:14:87"},{"arguments":[{"name":"value","nativeSrc":"2089:5:87","nodeType":"YulIdentifier","src":"2089:5:87"},{"kind":"number","nativeSrc":"2096:4:87","nodeType":"YulLiteral","src":"2096:4:87","type":"","value":"0x20"}],"functionName":{"name":"add","nativeSrc":"2085:3:87","nodeType":"YulIdentifier","src":"2085:3:87"},"nativeSrc":"2085:16:87","nodeType":"YulFunctionCall","src":"2085:16:87"},{"name":"length","nativeSrc":"2103:6:87","nodeType":"YulIdentifier","src":"2103:6:87"}],"functionName":{"name":"mcopy","nativeSrc":"2063:5:87","nodeType":"YulIdentifier","src":"2063:5:87"},"nativeSrc":"2063:47:87","nodeType":"YulFunctionCall","src":"2063:47:87"},"nativeSrc":"2063:47:87","nodeType":"YulExpressionStatement","src":"2063:47:87"},{"expression":{"arguments":[{"arguments":[{"arguments":[{"name":"pos","nativeSrc":"2134:3:87","nodeType":"YulIdentifier","src":"2134:3:87"},{"name":"length","nativeSrc":"2139:6:87","nodeType":"YulIdentifier","src":"2139:6:87"}],"functionName":{"name":"add","nativeSrc":"2130:3:87","nodeType":"YulIdentifier","src":"2130:3:87"},"nativeSrc":"2130:16:87","nodeType":"YulFunctionCall","src":"2130:16:87"},{"kind":"number","nativeSrc":"2148:4:87","nodeType":"YulLiteral","src":"2148:4:87","type":"","value":"0x20"}],"functionName":{"name":"add","nativeSrc":"2126:3:87","nodeType":"YulIdentifier","src":"2126:3:87"},"nativeSrc":"2126:27:87","nodeType":"YulFunctionCall","src":"2126:27:87"},{"kind":"number","nativeSrc":"2155:1:87","nodeType":"YulLiteral","src":"2155:1:87","type":"","value":"0"}],"functionName":{"name":"mstore","nativeSrc":"2119:6:87","nodeType":"YulIdentifier","src":"2119:6:87"},"nativeSrc":"2119:38:87","nodeType":"YulFunctionCall","src":"2119:38:87"},"nativeSrc":"2119:38:87","nodeType":"YulExpressionStatement","src":"2119:38:87"},{"nativeSrc":"2166:57:87","nodeType":"YulAssignment","src":"2166:57:87","value":{"arguments":[{"arguments":[{"name":"pos","nativeSrc":"2181:3:87","nodeType":"YulIdentifier","src":"2181:3:87"},{"arguments":[{"arguments":[{"name":"length","nativeSrc":"2194:6:87","nodeType":"YulIdentifier","src":"2194:6:87"},{"kind":"number","nativeSrc":"2202:2:87","nodeType":"YulLiteral","src":"2202:2:87","type":"","value":"31"}],"functionName":{"name":"add","nativeSrc":"2190:3:87","nodeType":"YulIdentifier","src":"2190:3:87"},"nativeSrc":"2190:15:87","nodeType":"YulFunctionCall","src":"2190:15:87"},{"arguments":[{"kind":"number","nativeSrc":"2211:2:87","nodeType":"YulLiteral","src":"2211:2:87","type":"","value":"31"}],"functionName":{"name":"not","nativeSrc":"2207:3:87","nodeType":"YulIdentifier","src":"2207:3:87"},"nativeSrc":"2207:7:87","nodeType":"YulFunctionCall","src":"2207:7:87"}],"functionName":{"name":"and","nativeSrc":"2186:3:87","nodeType":"YulIdentifier","src":"2186:3:87"},"nativeSrc":"2186:29:87","nodeType":"YulFunctionCall","src":"2186:29:87"}],"functionName":{"name":"add","nativeSrc":"2177:3:87","nodeType":"YulIdentifier","src":"2177:3:87"},"nativeSrc":"2177:39:87","nodeType":"YulFunctionCall","src":"2177:39:87"},{"kind":"number","nativeSrc":"2218:4:87","nodeType":"YulLiteral","src":"2218:4:87","type":"","value":"0x20"}],"functionName":{"name":"add","nativeSrc":"2173:3:87","nodeType":"YulIdentifier","src":"2173:3:87"},"nativeSrc":"2173:50:87","nodeType":"YulFunctionCall","src":"2173:50:87"},"variableNames":[{"name":"end","nativeSrc":"2166:3:87","nodeType":"YulIdentifier","src":"2166:3:87"}]}]},"name":"abi_encode_bytes","nativeSrc":"1941:288:87","nodeType":"YulFunctionDefinition","parameters":[{"name":"value","nativeSrc":"1967:5:87","nodeType":"YulTypedName","src":"1967:5:87","type":""},{"name":"pos","nativeSrc":"1974:3:87","nodeType":"YulTypedName","src":"1974:3:87","type":""}],"returnVariables":[{"name":"end","nativeSrc":"1982:3:87","nodeType":"YulTypedName","src":"1982:3:87","type":""}],"src":"1941:288:87"},{"body":{"nativeSrc":"2353:98:87","nodeType":"YulBlock","src":"2353:98:87","statements":[{"expression":{"arguments":[{"name":"headStart","nativeSrc":"2370:9:87","nodeType":"YulIdentifier","src":"2370:9:87"},{"kind":"number","nativeSrc":"2381:2:87","nodeType":"YulLiteral","src":"2381:2:87","type":"","value":"32"}],"functionName":{"name":"mstore","nativeSrc":"2363:6:87","nodeType":"YulIdentifier","src":"2363:6:87"},"nativeSrc":"2363:21:87","nodeType":"YulFunctionCall","src":"2363:21:87"},"nativeSrc":"2363:21:87","nodeType":"YulExpressionStatement","src":"2363:21:87"},{"nativeSrc":"2393:52:87","nodeType":"YulAssignment","src":"2393:52:87","value":{"arguments":[{"name":"value0","nativeSrc":"2418:6:87","nodeType":"YulIdentifier","src":"2418:6:87"},{"arguments":[{"name":"headStart","nativeSrc":"2430:9:87","nodeType":"YulIdentifier","src":"2430:9:87"},{"kind":"number","nativeSrc":"2441:2:87","nodeType":"YulLiteral","src":"2441:2:87","type":"","value":"32"}],"functionName":{"name":"add","nativeSrc":"2426:3:87","nodeType":"YulIdentifier","src":"2426:3:87"},"nativeSrc":"2426:18:87","nodeType":"YulFunctionCall","src":"2426:18:87"}],"functionName":{"name":"abi_encode_bytes","nativeSrc":"2401:16:87","nodeType":"YulIdentifier","src":"2401:16:87"},"nativeSrc":"2401:44:87","nodeType":"YulFunctionCall","src":"2401:44:87"},"variableNames":[{"name":"tail","nativeSrc":"2393:4:87","nodeType":"YulIdentifier","src":"2393:4:87"}]}]},"name":"abi_encode_tuple_t_bytes_memory_ptr__to_t_bytes_memory_ptr__fromStack_reversed","nativeSrc":"2234:217:87","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nativeSrc":"2322:9:87","nodeType":"YulTypedName","src":"2322:9:87","type":""},{"name":"value0","nativeSrc":"2333:6:87","nodeType":"YulTypedName","src":"2333:6:87","type":""}],"returnVariables":[{"name":"tail","nativeSrc":"2344:4:87","nodeType":"YulTypedName","src":"2344:4:87","type":""}],"src":"2234:217:87"},{"body":{"nativeSrc":"2557:76:87","nodeType":"YulBlock","src":"2557:76:87","statements":[{"nativeSrc":"2567:26:87","nodeType":"YulAssignment","src":"2567:26:87","value":{"arguments":[{"name":"headStart","nativeSrc":"2579:9:87","nodeType":"YulIdentifier","src":"2579:9:87"},{"kind":"number","nativeSrc":"2590:2:87","nodeType":"YulLiteral","src":"2590:2:87","type":"","value":"32"}],"functionName":{"name":"add","nativeSrc":"2575:3:87","nodeType":"YulIdentifier","src":"2575:3:87"},"nativeSrc":"2575:18:87","nodeType":"YulFunctionCall","src":"2575:18:87"},"variableNames":[{"name":"tail","nativeSrc":"2567:4:87","nodeType":"YulIdentifier","src":"2567:4:87"}]},{"expression":{"arguments":[{"name":"headStart","nativeSrc":"2609:9:87","nodeType":"YulIdentifier","src":"2609:9:87"},{"name":"value0","nativeSrc":"2620:6:87","nodeType":"YulIdentifier","src":"2620:6:87"}],"functionName":{"name":"mstore","nativeSrc":"2602:6:87","nodeType":"YulIdentifier","src":"2602:6:87"},"nativeSrc":"2602:25:87","nodeType":"YulFunctionCall","src":"2602:25:87"},"nativeSrc":"2602:25:87","nodeType":"YulExpressionStatement","src":"2602:25:87"}]},"name":"abi_encode_tuple_t_uint256__to_t_uint256__fromStack_reversed","nativeSrc":"2456:177:87","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nativeSrc":"2526:9:87","nodeType":"YulTypedName","src":"2526:9:87","type":""},{"name":"value0","nativeSrc":"2537:6:87","nodeType":"YulTypedName","src":"2537:6:87","type":""}],"returnVariables":[{"name":"tail","nativeSrc":"2548:4:87","nodeType":"YulTypedName","src":"2548:4:87","type":""}],"src":"2456:177:87"},{"body":{"nativeSrc":"2770:102:87","nodeType":"YulBlock","src":"2770:102:87","statements":[{"nativeSrc":"2780:26:87","nodeType":"YulAssignment","src":"2780:26:87","value":{"arguments":[{"name":"headStart","nativeSrc":"2792:9:87","nodeType":"YulIdentifier","src":"2792:9:87"},{"kind":"number","nativeSrc":"2803:2:87","nodeType":"YulLiteral","src":"2803:2:87","type":"","value":"32"}],"functionName":{"name":"add","nativeSrc":"2788:3:87","nodeType":"YulIdentifier","src":"2788:3:87"},"nativeSrc":"2788:18:87","nodeType":"YulFunctionCall","src":"2788:18:87"},"variableNames":[{"name":"tail","nativeSrc":"2780:4:87","nodeType":"YulIdentifier","src":"2780:4:87"}]},{"expression":{"arguments":[{"name":"headStart","nativeSrc":"2822:9:87","nodeType":"YulIdentifier","src":"2822:9:87"},{"arguments":[{"name":"value0","nativeSrc":"2837:6:87","nodeType":"YulIdentifier","src":"2837:6:87"},{"arguments":[{"arguments":[{"kind":"number","nativeSrc":"2853:3:87","nodeType":"YulLiteral","src":"2853:3:87","type":"","value":"160"},{"kind":"number","nativeSrc":"2858:1:87","nodeType":"YulLiteral","src":"2858:1:87","type":"","value":"1"}],"functionName":{"name":"shl","nativeSrc":"2849:3:87","nodeType":"YulIdentifier","src":"2849:3:87"},"nativeSrc":"2849:11:87","nodeType":"YulFunctionCall","src":"2849:11:87"},{"kind":"number","nativeSrc":"2862:1:87","nodeType":"YulLiteral","src":"2862:1:87","type":"","value":"1"}],"functionName":{"name":"sub","nativeSrc":"2845:3:87","nodeType":"YulIdentifier","src":"2845:3:87"},"nativeSrc":"2845:19:87","nodeType":"YulFunctionCall","src":"2845:19:87"}],"functionName":{"name":"and","nativeSrc":"2833:3:87","nodeType":"YulIdentifier","src":"2833:3:87"},"nativeSrc":"2833:32:87","nodeType":"YulFunctionCall","src":"2833:32:87"}],"functionName":{"name":"mstore","nativeSrc":"2815:6:87","nodeType":"YulIdentifier","src":"2815:6:87"},"nativeSrc":"2815:51:87","nodeType":"YulFunctionCall","src":"2815:51:87"},"nativeSrc":"2815:51:87","nodeType":"YulExpressionStatement","src":"2815:51:87"}]},"name":"abi_encode_tuple_t_contract$_AggregatorV3Interface_$20542__to_t_address__fromStack_reversed","nativeSrc":"2638:234:87","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nativeSrc":"2739:9:87","nodeType":"YulTypedName","src":"2739:9:87","type":""},{"name":"value0","nativeSrc":"2750:6:87","nodeType":"YulTypedName","src":"2750:6:87","type":""}],"returnVariables":[{"name":"tail","nativeSrc":"2761:4:87","nodeType":"YulTypedName","src":"2761:4:87","type":""}],"src":"2638:234:87"},{"body":{"nativeSrc":"2947:110:87","nodeType":"YulBlock","src":"2947:110:87","statements":[{"body":{"nativeSrc":"2993:16:87","nodeType":"YulBlock","src":"2993:16:87","statements":[{"expression":{"arguments":[{"kind":"number","nativeSrc":"3002:1:87","nodeType":"YulLiteral","src":"3002:1:87","type":"","value":"0"},{"kind":"number","nativeSrc":"3005:1:87","nodeType":"YulLiteral","src":"3005:1:87","type":"","value":"0"}],"functionName":{"name":"revert","nativeSrc":"2995:6:87","nodeType":"YulIdentifier","src":"2995:6:87"},"nativeSrc":"2995:12:87","nodeType":"YulFunctionCall","src":"2995:12:87"},"nativeSrc":"2995:12:87","nodeType":"YulExpressionStatement","src":"2995:12:87"}]},"condition":{"arguments":[{"arguments":[{"name":"dataEnd","nativeSrc":"2968:7:87","nodeType":"YulIdentifier","src":"2968:7:87"},{"name":"headStart","nativeSrc":"2977:9:87","nodeType":"YulIdentifier","src":"2977:9:87"}],"functionName":{"name":"sub","nativeSrc":"2964:3:87","nodeType":"YulIdentifier","src":"2964:3:87"},"nativeSrc":"2964:23:87","nodeType":"YulFunctionCall","src":"2964:23:87"},{"kind":"number","nativeSrc":"2989:2:87","nodeType":"YulLiteral","src":"2989:2:87","type":"","value":"32"}],"functionName":{"name":"slt","nativeSrc":"2960:3:87","nodeType":"YulIdentifier","src":"2960:3:87"},"nativeSrc":"2960:32:87","nodeType":"YulFunctionCall","src":"2960:32:87"},"nativeSrc":"2957:52:87","nodeType":"YulIf","src":"2957:52:87"},{"nativeSrc":"3018:33:87","nodeType":"YulAssignment","src":"3018:33:87","value":{"arguments":[{"name":"headStart","nativeSrc":"3041:9:87","nodeType":"YulIdentifier","src":"3041:9:87"}],"functionName":{"name":"calldataload","nativeSrc":"3028:12:87","nodeType":"YulIdentifier","src":"3028:12:87"},"nativeSrc":"3028:23:87","nodeType":"YulFunctionCall","src":"3028:23:87"},"variableNames":[{"name":"value0","nativeSrc":"3018:6:87","nodeType":"YulIdentifier","src":"3018:6:87"}]}]},"name":"abi_decode_tuple_t_uint256","nativeSrc":"2877:180:87","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nativeSrc":"2913:9:87","nodeType":"YulTypedName","src":"2913:9:87","type":""},{"name":"dataEnd","nativeSrc":"2924:7:87","nodeType":"YulTypedName","src":"2924:7:87","type":""}],"returnVariables":[{"name":"value0","nativeSrc":"2936:6:87","nodeType":"YulTypedName","src":"2936:6:87","type":""}],"src":"2877:180:87"},{"body":{"nativeSrc":"3132:216:87","nodeType":"YulBlock","src":"3132:216:87","statements":[{"body":{"nativeSrc":"3178:16:87","nodeType":"YulBlock","src":"3178:16:87","statements":[{"expression":{"arguments":[{"kind":"number","nativeSrc":"3187:1:87","nodeType":"YulLiteral","src":"3187:1:87","type":"","value":"0"},{"kind":"number","nativeSrc":"3190:1:87","nodeType":"YulLiteral","src":"3190:1:87","type":"","value":"0"}],"functionName":{"name":"revert","nativeSrc":"3180:6:87","nodeType":"YulIdentifier","src":"3180:6:87"},"nativeSrc":"3180:12:87","nodeType":"YulFunctionCall","src":"3180:12:87"},"nativeSrc":"3180:12:87","nodeType":"YulExpressionStatement","src":"3180:12:87"}]},"condition":{"arguments":[{"arguments":[{"name":"dataEnd","nativeSrc":"3153:7:87","nodeType":"YulIdentifier","src":"3153:7:87"},{"name":"headStart","nativeSrc":"3162:9:87","nodeType":"YulIdentifier","src":"3162:9:87"}],"functionName":{"name":"sub","nativeSrc":"3149:3:87","nodeType":"YulIdentifier","src":"3149:3:87"},"nativeSrc":"3149:23:87","nodeType":"YulFunctionCall","src":"3149:23:87"},{"kind":"number","nativeSrc":"3174:2:87","nodeType":"YulLiteral","src":"3174:2:87","type":"","value":"32"}],"functionName":{"name":"slt","nativeSrc":"3145:3:87","nodeType":"YulIdentifier","src":"3145:3:87"},"nativeSrc":"3145:32:87","nodeType":"YulFunctionCall","src":"3145:32:87"},"nativeSrc":"3142:52:87","nodeType":"YulIf","src":"3142:52:87"},{"nativeSrc":"3203:36:87","nodeType":"YulVariableDeclaration","src":"3203:36:87","value":{"arguments":[{"name":"headStart","nativeSrc":"3229:9:87","nodeType":"YulIdentifier","src":"3229:9:87"}],"functionName":{"name":"calldataload","nativeSrc":"3216:12:87","nodeType":"YulIdentifier","src":"3216:12:87"},"nativeSrc":"3216:23:87","nodeType":"YulFunctionCall","src":"3216:23:87"},"variables":[{"name":"value","nativeSrc":"3207:5:87","nodeType":"YulTypedName","src":"3207:5:87","type":""}]},{"body":{"nativeSrc":"3302:16:87","nodeType":"YulBlock","src":"3302:16:87","statements":[{"expression":{"arguments":[{"kind":"number","nativeSrc":"3311:1:87","nodeType":"YulLiteral","src":"3311:1:87","type":"","value":"0"},{"kind":"number","nativeSrc":"3314:1:87","nodeType":"YulLiteral","src":"3314:1:87","type":"","value":"0"}],"functionName":{"name":"revert","nativeSrc":"3304:6:87","nodeType":"YulIdentifier","src":"3304:6:87"},"nativeSrc":"3304:12:87","nodeType":"YulFunctionCall","src":"3304:12:87"},"nativeSrc":"3304:12:87","nodeType":"YulExpressionStatement","src":"3304:12:87"}]},"condition":{"arguments":[{"arguments":[{"name":"value","nativeSrc":"3261:5:87","nodeType":"YulIdentifier","src":"3261:5:87"},{"arguments":[{"name":"value","nativeSrc":"3272:5:87","nodeType":"YulIdentifier","src":"3272:5:87"},{"arguments":[{"arguments":[{"kind":"number","nativeSrc":"3287:3:87","nodeType":"YulLiteral","src":"3287:3:87","type":"","value":"160"},{"kind":"number","nativeSrc":"3292:1:87","nodeType":"YulLiteral","src":"3292:1:87","type":"","value":"1"}],"functionName":{"name":"shl","nativeSrc":"3283:3:87","nodeType":"YulIdentifier","src":"3283:3:87"},"nativeSrc":"3283:11:87","nodeType":"YulFunctionCall","src":"3283:11:87"},{"kind":"number","nativeSrc":"3296:1:87","nodeType":"YulLiteral","src":"3296:1:87","type":"","value":"1"}],"functionName":{"name":"sub","nativeSrc":"3279:3:87","nodeType":"YulIdentifier","src":"3279:3:87"},"nativeSrc":"3279:19:87","nodeType":"YulFunctionCall","src":"3279:19:87"}],"functionName":{"name":"and","nativeSrc":"3268:3:87","nodeType":"YulIdentifier","src":"3268:3:87"},"nativeSrc":"3268:31:87","nodeType":"YulFunctionCall","src":"3268:31:87"}],"functionName":{"name":"eq","nativeSrc":"3258:2:87","nodeType":"YulIdentifier","src":"3258:2:87"},"nativeSrc":"3258:42:87","nodeType":"YulFunctionCall","src":"3258:42:87"}],"functionName":{"name":"iszero","nativeSrc":"3251:6:87","nodeType":"YulIdentifier","src":"3251:6:87"},"nativeSrc":"3251:50:87","nodeType":"YulFunctionCall","src":"3251:50:87"},"nativeSrc":"3248:70:87","nodeType":"YulIf","src":"3248:70:87"},{"nativeSrc":"3327:15:87","nodeType":"YulAssignment","src":"3327:15:87","value":{"name":"value","nativeSrc":"3337:5:87","nodeType":"YulIdentifier","src":"3337:5:87"},"variableNames":[{"name":"value0","nativeSrc":"3327:6:87","nodeType":"YulIdentifier","src":"3327:6:87"}]}]},"name":"abi_decode_tuple_t_address","nativeSrc":"3062:286:87","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nativeSrc":"3098:9:87","nodeType":"YulTypedName","src":"3098:9:87","type":""},{"name":"dataEnd","nativeSrc":"3109:7:87","nodeType":"YulTypedName","src":"3109:7:87","type":""}],"returnVariables":[{"name":"value0","nativeSrc":"3121:6:87","nodeType":"YulTypedName","src":"3121:6:87","type":""}],"src":"3062:286:87"},{"body":{"nativeSrc":"3385:95:87","nodeType":"YulBlock","src":"3385:95:87","statements":[{"expression":{"arguments":[{"kind":"number","nativeSrc":"3402:1:87","nodeType":"YulLiteral","src":"3402:1:87","type":"","value":"0"},{"arguments":[{"kind":"number","nativeSrc":"3409:3:87","nodeType":"YulLiteral","src":"3409:3:87","type":"","value":"224"},{"kind":"number","nativeSrc":"3414:10:87","nodeType":"YulLiteral","src":"3414:10:87","type":"","value":"0x4e487b71"}],"functionName":{"name":"shl","nativeSrc":"3405:3:87","nodeType":"YulIdentifier","src":"3405:3:87"},"nativeSrc":"3405:20:87","nodeType":"YulFunctionCall","src":"3405:20:87"}],"functionName":{"name":"mstore","nativeSrc":"3395:6:87","nodeType":"YulIdentifier","src":"3395:6:87"},"nativeSrc":"3395:31:87","nodeType":"YulFunctionCall","src":"3395:31:87"},"nativeSrc":"3395:31:87","nodeType":"YulExpressionStatement","src":"3395:31:87"},{"expression":{"arguments":[{"kind":"number","nativeSrc":"3442:1:87","nodeType":"YulLiteral","src":"3442:1:87","type":"","value":"4"},{"kind":"number","nativeSrc":"3445:4:87","nodeType":"YulLiteral","src":"3445:4:87","type":"","value":"0x21"}],"functionName":{"name":"mstore","nativeSrc":"3435:6:87","nodeType":"YulIdentifier","src":"3435:6:87"},"nativeSrc":"3435:15:87","nodeType":"YulFunctionCall","src":"3435:15:87"},"nativeSrc":"3435:15:87","nodeType":"YulExpressionStatement","src":"3435:15:87"},{"expression":{"arguments":[{"kind":"number","nativeSrc":"3466:1:87","nodeType":"YulLiteral","src":"3466:1:87","type":"","value":"0"},{"kind":"number","nativeSrc":"3469:4:87","nodeType":"YulLiteral","src":"3469:4:87","type":"","value":"0x24"}],"functionName":{"name":"revert","nativeSrc":"3459:6:87","nodeType":"YulIdentifier","src":"3459:6:87"},"nativeSrc":"3459:15:87","nodeType":"YulFunctionCall","src":"3459:15:87"},"nativeSrc":"3459:15:87","nodeType":"YulExpressionStatement","src":"3459:15:87"}]},"name":"panic_error_0x21","nativeSrc":"3353:127:87","nodeType":"YulFunctionDefinition","src":"3353:127:87"},{"body":{"nativeSrc":"3546:418:87","nodeType":"YulBlock","src":"3546:418:87","statements":[{"nativeSrc":"3556:22:87","nodeType":"YulVariableDeclaration","src":"3556:22:87","value":{"arguments":[{"name":"value","nativeSrc":"3572:5:87","nodeType":"YulIdentifier","src":"3572:5:87"}],"functionName":{"name":"mload","nativeSrc":"3566:5:87","nodeType":"YulIdentifier","src":"3566:5:87"},"nativeSrc":"3566:12:87","nodeType":"YulFunctionCall","src":"3566:12:87"},"variables":[{"name":"_1","nativeSrc":"3560:2:87","nodeType":"YulTypedName","src":"3560:2:87","type":""}]},{"body":{"nativeSrc":"3616:111:87","nodeType":"YulBlock","src":"3616:111:87","statements":[{"expression":{"arguments":[{"kind":"number","nativeSrc":"3637:1:87","nodeType":"YulLiteral","src":"3637:1:87","type":"","value":"0"},{"arguments":[{"kind":"number","nativeSrc":"3644:3:87","nodeType":"YulLiteral","src":"3644:3:87","type":"","value":"224"},{"kind":"number","nativeSrc":"3649:10:87","nodeType":"YulLiteral","src":"3649:10:87","type":"","value":"0x4e487b71"}],"functionName":{"name":"shl","nativeSrc":"3640:3:87","nodeType":"YulIdentifier","src":"3640:3:87"},"nativeSrc":"3640:20:87","nodeType":"YulFunctionCall","src":"3640:20:87"}],"functionName":{"name":"mstore","nativeSrc":"3630:6:87","nodeType":"YulIdentifier","src":"3630:6:87"},"nativeSrc":"3630:31:87","nodeType":"YulFunctionCall","src":"3630:31:87"},"nativeSrc":"3630:31:87","nodeType":"YulExpressionStatement","src":"3630:31:87"},{"expression":{"arguments":[{"kind":"number","nativeSrc":"3681:1:87","nodeType":"YulLiteral","src":"3681:1:87","type":"","value":"4"},{"kind":"number","nativeSrc":"3684:4:87","nodeType":"YulLiteral","src":"3684:4:87","type":"","value":"0x21"}],"functionName":{"name":"mstore","nativeSrc":"3674:6:87","nodeType":"YulIdentifier","src":"3674:6:87"},"nativeSrc":"3674:15:87","nodeType":"YulFunctionCall","src":"3674:15:87"},"nativeSrc":"3674:15:87","nodeType":"YulExpressionStatement","src":"3674:15:87"},{"expression":{"arguments":[{"kind":"number","nativeSrc":"3709:1:87","nodeType":"YulLiteral","src":"3709:1:87","type":"","value":"0"},{"kind":"number","nativeSrc":"3712:4:87","nodeType":"YulLiteral","src":"3712:4:87","type":"","value":"0x24"}],"functionName":{"name":"revert","nativeSrc":"3702:6:87","nodeType":"YulIdentifier","src":"3702:6:87"},"nativeSrc":"3702:15:87","nodeType":"YulFunctionCall","src":"3702:15:87"},"nativeSrc":"3702:15:87","nodeType":"YulExpressionStatement","src":"3702:15:87"}]},"condition":{"arguments":[{"arguments":[{"name":"_1","nativeSrc":"3600:2:87","nodeType":"YulIdentifier","src":"3600:2:87"},{"kind":"number","nativeSrc":"3604:1:87","nodeType":"YulLiteral","src":"3604:1:87","type":"","value":"3"}],"functionName":{"name":"lt","nativeSrc":"3597:2:87","nodeType":"YulIdentifier","src":"3597:2:87"},"nativeSrc":"3597:9:87","nodeType":"YulFunctionCall","src":"3597:9:87"}],"functionName":{"name":"iszero","nativeSrc":"3590:6:87","nodeType":"YulIdentifier","src":"3590:6:87"},"nativeSrc":"3590:17:87","nodeType":"YulFunctionCall","src":"3590:17:87"},"nativeSrc":"3587:140:87","nodeType":"YulIf","src":"3587:140:87"},{"expression":{"arguments":[{"name":"pos","nativeSrc":"3743:3:87","nodeType":"YulIdentifier","src":"3743:3:87"},{"name":"_1","nativeSrc":"3748:2:87","nodeType":"YulIdentifier","src":"3748:2:87"}],"functionName":{"name":"mstore","nativeSrc":"3736:6:87","nodeType":"YulIdentifier","src":"3736:6:87"},"nativeSrc":"3736:15:87","nodeType":"YulFunctionCall","src":"3736:15:87"},"nativeSrc":"3736:15:87","nodeType":"YulExpressionStatement","src":"3736:15:87"},{"expression":{"arguments":[{"arguments":[{"name":"pos","nativeSrc":"3771:3:87","nodeType":"YulIdentifier","src":"3771:3:87"},{"kind":"number","nativeSrc":"3776:4:87","nodeType":"YulLiteral","src":"3776:4:87","type":"","value":"0x20"}],"functionName":{"name":"add","nativeSrc":"3767:3:87","nodeType":"YulIdentifier","src":"3767:3:87"},"nativeSrc":"3767:14:87","nodeType":"YulFunctionCall","src":"3767:14:87"},{"arguments":[{"arguments":[{"name":"value","nativeSrc":"3793:5:87","nodeType":"YulIdentifier","src":"3793:5:87"},{"kind":"number","nativeSrc":"3800:4:87","nodeType":"YulLiteral","src":"3800:4:87","type":"","value":"0x20"}],"functionName":{"name":"add","nativeSrc":"3789:3:87","nodeType":"YulIdentifier","src":"3789:3:87"},"nativeSrc":"3789:16:87","nodeType":"YulFunctionCall","src":"3789:16:87"}],"functionName":{"name":"mload","nativeSrc":"3783:5:87","nodeType":"YulIdentifier","src":"3783:5:87"},"nativeSrc":"3783:23:87","nodeType":"YulFunctionCall","src":"3783:23:87"}],"functionName":{"name":"mstore","nativeSrc":"3760:6:87","nodeType":"YulIdentifier","src":"3760:6:87"},"nativeSrc":"3760:47:87","nodeType":"YulFunctionCall","src":"3760:47:87"},"nativeSrc":"3760:47:87","nodeType":"YulExpressionStatement","src":"3760:47:87"},{"nativeSrc":"3816:43:87","nodeType":"YulVariableDeclaration","src":"3816:43:87","value":{"arguments":[{"arguments":[{"name":"value","nativeSrc":"3846:5:87","nodeType":"YulIdentifier","src":"3846:5:87"},{"kind":"number","nativeSrc":"3853:4:87","nodeType":"YulLiteral","src":"3853:4:87","type":"","value":"0x40"}],"functionName":{"name":"add","nativeSrc":"3842:3:87","nodeType":"YulIdentifier","src":"3842:3:87"},"nativeSrc":"3842:16:87","nodeType":"YulFunctionCall","src":"3842:16:87"}],"functionName":{"name":"mload","nativeSrc":"3836:5:87","nodeType":"YulIdentifier","src":"3836:5:87"},"nativeSrc":"3836:23:87","nodeType":"YulFunctionCall","src":"3836:23:87"},"variables":[{"name":"memberValue0","nativeSrc":"3820:12:87","nodeType":"YulTypedName","src":"3820:12:87","type":""}]},{"expression":{"arguments":[{"arguments":[{"name":"pos","nativeSrc":"3879:3:87","nodeType":"YulIdentifier","src":"3879:3:87"},{"kind":"number","nativeSrc":"3884:4:87","nodeType":"YulLiteral","src":"3884:4:87","type":"","value":"0x40"}],"functionName":{"name":"add","nativeSrc":"3875:3:87","nodeType":"YulIdentifier","src":"3875:3:87"},"nativeSrc":"3875:14:87","nodeType":"YulFunctionCall","src":"3875:14:87"},{"kind":"number","nativeSrc":"3891:4:87","nodeType":"YulLiteral","src":"3891:4:87","type":"","value":"0x60"}],"functionName":{"name":"mstore","nativeSrc":"3868:6:87","nodeType":"YulIdentifier","src":"3868:6:87"},"nativeSrc":"3868:28:87","nodeType":"YulFunctionCall","src":"3868:28:87"},"nativeSrc":"3868:28:87","nodeType":"YulExpressionStatement","src":"3868:28:87"},{"nativeSrc":"3905:53:87","nodeType":"YulAssignment","src":"3905:53:87","value":{"arguments":[{"name":"memberValue0","nativeSrc":"3929:12:87","nodeType":"YulIdentifier","src":"3929:12:87"},{"arguments":[{"name":"pos","nativeSrc":"3947:3:87","nodeType":"YulIdentifier","src":"3947:3:87"},{"kind":"number","nativeSrc":"3952:4:87","nodeType":"YulLiteral","src":"3952:4:87","type":"","value":"0x60"}],"functionName":{"name":"add","nativeSrc":"3943:3:87","nodeType":"YulIdentifier","src":"3943:3:87"},"nativeSrc":"3943:14:87","nodeType":"YulFunctionCall","src":"3943:14:87"}],"functionName":{"name":"abi_encode_bytes","nativeSrc":"3912:16:87","nodeType":"YulIdentifier","src":"3912:16:87"},"nativeSrc":"3912:46:87","nodeType":"YulFunctionCall","src":"3912:46:87"},"variableNames":[{"name":"end","nativeSrc":"3905:3:87","nodeType":"YulIdentifier","src":"3905:3:87"}]}]},"name":"abi_encode_struct_SwapConfig","nativeSrc":"3485:479:87","nodeType":"YulFunctionDefinition","parameters":[{"name":"value","nativeSrc":"3523:5:87","nodeType":"YulTypedName","src":"3523:5:87","type":""},{"name":"pos","nativeSrc":"3530:3:87","nodeType":"YulTypedName","src":"3530:3:87","type":""}],"returnVariables":[{"name":"end","nativeSrc":"3538:3:87","nodeType":"YulTypedName","src":"3538:3:87","type":""}],"src":"3485:479:87"},{"body":{"nativeSrc":"4126:110:87","nodeType":"YulBlock","src":"4126:110:87","statements":[{"expression":{"arguments":[{"name":"headStart","nativeSrc":"4143:9:87","nodeType":"YulIdentifier","src":"4143:9:87"},{"kind":"number","nativeSrc":"4154:2:87","nodeType":"YulLiteral","src":"4154:2:87","type":"","value":"32"}],"functionName":{"name":"mstore","nativeSrc":"4136:6:87","nodeType":"YulIdentifier","src":"4136:6:87"},"nativeSrc":"4136:21:87","nodeType":"YulFunctionCall","src":"4136:21:87"},"nativeSrc":"4136:21:87","nodeType":"YulExpressionStatement","src":"4136:21:87"},{"nativeSrc":"4166:64:87","nodeType":"YulAssignment","src":"4166:64:87","value":{"arguments":[{"name":"value0","nativeSrc":"4203:6:87","nodeType":"YulIdentifier","src":"4203:6:87"},{"arguments":[{"name":"headStart","nativeSrc":"4215:9:87","nodeType":"YulIdentifier","src":"4215:9:87"},{"kind":"number","nativeSrc":"4226:2:87","nodeType":"YulLiteral","src":"4226:2:87","type":"","value":"32"}],"functionName":{"name":"add","nativeSrc":"4211:3:87","nodeType":"YulIdentifier","src":"4211:3:87"},"nativeSrc":"4211:18:87","nodeType":"YulFunctionCall","src":"4211:18:87"}],"functionName":{"name":"abi_encode_struct_SwapConfig","nativeSrc":"4174:28:87","nodeType":"YulIdentifier","src":"4174:28:87"},"nativeSrc":"4174:56:87","nodeType":"YulFunctionCall","src":"4174:56:87"},"variableNames":[{"name":"tail","nativeSrc":"4166:4:87","nodeType":"YulIdentifier","src":"4166:4:87"}]}]},"name":"abi_encode_tuple_t_struct$_SwapConfig_$1113_memory_ptr__to_t_struct$_SwapConfig_$1113_memory_ptr__fromStack_reversed","nativeSrc":"3969:267:87","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nativeSrc":"4095:9:87","nodeType":"YulTypedName","src":"4095:9:87","type":""},{"name":"value0","nativeSrc":"4106:6:87","nodeType":"YulTypedName","src":"4106:6:87","type":""}],"returnVariables":[{"name":"tail","nativeSrc":"4117:4:87","nodeType":"YulTypedName","src":"4117:4:87","type":""}],"src":"3969:267:87"},{"body":{"nativeSrc":"4308:206:87","nodeType":"YulBlock","src":"4308:206:87","statements":[{"body":{"nativeSrc":"4354:16:87","nodeType":"YulBlock","src":"4354:16:87","statements":[{"expression":{"arguments":[{"kind":"number","nativeSrc":"4363:1:87","nodeType":"YulLiteral","src":"4363:1:87","type":"","value":"0"},{"kind":"number","nativeSrc":"4366:1:87","nodeType":"YulLiteral","src":"4366:1:87","type":"","value":"0"}],"functionName":{"name":"revert","nativeSrc":"4356:6:87","nodeType":"YulIdentifier","src":"4356:6:87"},"nativeSrc":"4356:12:87","nodeType":"YulFunctionCall","src":"4356:12:87"},"nativeSrc":"4356:12:87","nodeType":"YulExpressionStatement","src":"4356:12:87"}]},"condition":{"arguments":[{"arguments":[{"name":"dataEnd","nativeSrc":"4329:7:87","nodeType":"YulIdentifier","src":"4329:7:87"},{"name":"headStart","nativeSrc":"4338:9:87","nodeType":"YulIdentifier","src":"4338:9:87"}],"functionName":{"name":"sub","nativeSrc":"4325:3:87","nodeType":"YulIdentifier","src":"4325:3:87"},"nativeSrc":"4325:23:87","nodeType":"YulFunctionCall","src":"4325:23:87"},{"kind":"number","nativeSrc":"4350:2:87","nodeType":"YulLiteral","src":"4350:2:87","type":"","value":"32"}],"functionName":{"name":"slt","nativeSrc":"4321:3:87","nodeType":"YulIdentifier","src":"4321:3:87"},"nativeSrc":"4321:32:87","nodeType":"YulFunctionCall","src":"4321:32:87"},"nativeSrc":"4318:52:87","nodeType":"YulIf","src":"4318:52:87"},{"nativeSrc":"4379:36:87","nodeType":"YulVariableDeclaration","src":"4379:36:87","value":{"arguments":[{"name":"headStart","nativeSrc":"4405:9:87","nodeType":"YulIdentifier","src":"4405:9:87"}],"functionName":{"name":"calldataload","nativeSrc":"4392:12:87","nodeType":"YulIdentifier","src":"4392:12:87"},"nativeSrc":"4392:23:87","nodeType":"YulFunctionCall","src":"4392:23:87"},"variables":[{"name":"value","nativeSrc":"4383:5:87","nodeType":"YulTypedName","src":"4383:5:87","type":""}]},{"body":{"nativeSrc":"4468:16:87","nodeType":"YulBlock","src":"4468:16:87","statements":[{"expression":{"arguments":[{"kind":"number","nativeSrc":"4477:1:87","nodeType":"YulLiteral","src":"4477:1:87","type":"","value":"0"},{"kind":"number","nativeSrc":"4480:1:87","nodeType":"YulLiteral","src":"4480:1:87","type":"","value":"0"}],"functionName":{"name":"revert","nativeSrc":"4470:6:87","nodeType":"YulIdentifier","src":"4470:6:87"},"nativeSrc":"4470:12:87","nodeType":"YulFunctionCall","src":"4470:12:87"},"nativeSrc":"4470:12:87","nodeType":"YulExpressionStatement","src":"4470:12:87"}]},"condition":{"arguments":[{"arguments":[{"name":"value","nativeSrc":"4437:5:87","nodeType":"YulIdentifier","src":"4437:5:87"},{"arguments":[{"arguments":[{"name":"value","nativeSrc":"4458:5:87","nodeType":"YulIdentifier","src":"4458:5:87"}],"functionName":{"name":"iszero","nativeSrc":"4451:6:87","nodeType":"YulIdentifier","src":"4451:6:87"},"nativeSrc":"4451:13:87","nodeType":"YulFunctionCall","src":"4451:13:87"}],"functionName":{"name":"iszero","nativeSrc":"4444:6:87","nodeType":"YulIdentifier","src":"4444:6:87"},"nativeSrc":"4444:21:87","nodeType":"YulFunctionCall","src":"4444:21:87"}],"functionName":{"name":"eq","nativeSrc":"4434:2:87","nodeType":"YulIdentifier","src":"4434:2:87"},"nativeSrc":"4434:32:87","nodeType":"YulFunctionCall","src":"4434:32:87"}],"functionName":{"name":"iszero","nativeSrc":"4427:6:87","nodeType":"YulIdentifier","src":"4427:6:87"},"nativeSrc":"4427:40:87","nodeType":"YulFunctionCall","src":"4427:40:87"},"nativeSrc":"4424:60:87","nodeType":"YulIf","src":"4424:60:87"},{"nativeSrc":"4493:15:87","nodeType":"YulAssignment","src":"4493:15:87","value":{"name":"value","nativeSrc":"4503:5:87","nodeType":"YulIdentifier","src":"4503:5:87"},"variableNames":[{"name":"value0","nativeSrc":"4493:6:87","nodeType":"YulIdentifier","src":"4493:6:87"}]}]},"name":"abi_decode_tuple_t_bool","nativeSrc":"4241:273:87","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nativeSrc":"4274:9:87","nodeType":"YulTypedName","src":"4274:9:87","type":""},{"name":"dataEnd","nativeSrc":"4285:7:87","nodeType":"YulTypedName","src":"4285:7:87","type":""}],"returnVariables":[{"name":"value0","nativeSrc":"4297:6:87","nodeType":"YulTypedName","src":"4297:6:87","type":""}],"src":"4241:273:87"},{"body":{"nativeSrc":"4620:76:87","nodeType":"YulBlock","src":"4620:76:87","statements":[{"nativeSrc":"4630:26:87","nodeType":"YulAssignment","src":"4630:26:87","value":{"arguments":[{"name":"headStart","nativeSrc":"4642:9:87","nodeType":"YulIdentifier","src":"4642:9:87"},{"kind":"number","nativeSrc":"4653:2:87","nodeType":"YulLiteral","src":"4653:2:87","type":"","value":"32"}],"functionName":{"name":"add","nativeSrc":"4638:3:87","nodeType":"YulIdentifier","src":"4638:3:87"},"nativeSrc":"4638:18:87","nodeType":"YulFunctionCall","src":"4638:18:87"},"variableNames":[{"name":"tail","nativeSrc":"4630:4:87","nodeType":"YulIdentifier","src":"4630:4:87"}]},{"expression":{"arguments":[{"name":"headStart","nativeSrc":"4672:9:87","nodeType":"YulIdentifier","src":"4672:9:87"},{"name":"value0","nativeSrc":"4683:6:87","nodeType":"YulIdentifier","src":"4683:6:87"}],"functionName":{"name":"mstore","nativeSrc":"4665:6:87","nodeType":"YulIdentifier","src":"4665:6:87"},"nativeSrc":"4665:25:87","nodeType":"YulFunctionCall","src":"4665:25:87"},"nativeSrc":"4665:25:87","nodeType":"YulExpressionStatement","src":"4665:25:87"}]},"name":"abi_encode_tuple_t_bytes32__to_t_bytes32__fromStack_reversed","nativeSrc":"4519:177:87","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nativeSrc":"4589:9:87","nodeType":"YulTypedName","src":"4589:9:87","type":""},{"name":"value0","nativeSrc":"4600:6:87","nodeType":"YulTypedName","src":"4600:6:87","type":""}],"returnVariables":[{"name":"tail","nativeSrc":"4611:4:87","nodeType":"YulTypedName","src":"4611:4:87","type":""}],"src":"4519:177:87"},{"body":{"nativeSrc":"4802:102:87","nodeType":"YulBlock","src":"4802:102:87","statements":[{"nativeSrc":"4812:26:87","nodeType":"YulAssignment","src":"4812:26:87","value":{"arguments":[{"name":"headStart","nativeSrc":"4824:9:87","nodeType":"YulIdentifier","src":"4824:9:87"},{"kind":"number","nativeSrc":"4835:2:87","nodeType":"YulLiteral","src":"4835:2:87","type":"","value":"32"}],"functionName":{"name":"add","nativeSrc":"4820:3:87","nodeType":"YulIdentifier","src":"4820:3:87"},"nativeSrc":"4820:18:87","nodeType":"YulFunctionCall","src":"4820:18:87"},"variableNames":[{"name":"tail","nativeSrc":"4812:4:87","nodeType":"YulIdentifier","src":"4812:4:87"}]},{"expression":{"arguments":[{"name":"headStart","nativeSrc":"4854:9:87","nodeType":"YulIdentifier","src":"4854:9:87"},{"arguments":[{"name":"value0","nativeSrc":"4869:6:87","nodeType":"YulIdentifier","src":"4869:6:87"},{"arguments":[{"arguments":[{"kind":"number","nativeSrc":"4885:3:87","nodeType":"YulLiteral","src":"4885:3:87","type":"","value":"160"},{"kind":"number","nativeSrc":"4890:1:87","nodeType":"YulLiteral","src":"4890:1:87","type":"","value":"1"}],"functionName":{"name":"shl","nativeSrc":"4881:3:87","nodeType":"YulIdentifier","src":"4881:3:87"},"nativeSrc":"4881:11:87","nodeType":"YulFunctionCall","src":"4881:11:87"},{"kind":"number","nativeSrc":"4894:1:87","nodeType":"YulLiteral","src":"4894:1:87","type":"","value":"1"}],"functionName":{"name":"sub","nativeSrc":"4877:3:87","nodeType":"YulIdentifier","src":"4877:3:87"},"nativeSrc":"4877:19:87","nodeType":"YulFunctionCall","src":"4877:19:87"}],"functionName":{"name":"and","nativeSrc":"4865:3:87","nodeType":"YulIdentifier","src":"4865:3:87"},"nativeSrc":"4865:32:87","nodeType":"YulFunctionCall","src":"4865:32:87"}],"functionName":{"name":"mstore","nativeSrc":"4847:6:87","nodeType":"YulIdentifier","src":"4847:6:87"},"nativeSrc":"4847:51:87","nodeType":"YulFunctionCall","src":"4847:51:87"},"nativeSrc":"4847:51:87","nodeType":"YulExpressionStatement","src":"4847:51:87"}]},"name":"abi_encode_tuple_t_address__to_t_address__fromStack_reversed","nativeSrc":"4701:203:87","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nativeSrc":"4771:9:87","nodeType":"YulTypedName","src":"4771:9:87","type":""},{"name":"value0","nativeSrc":"4782:6:87","nodeType":"YulTypedName","src":"4782:6:87","type":""}],"returnVariables":[{"name":"tail","nativeSrc":"4793:4:87","nodeType":"YulTypedName","src":"4793:4:87","type":""}],"src":"4701:203:87"},{"body":{"nativeSrc":"4988:241:87","nodeType":"YulBlock","src":"4988:241:87","statements":[{"body":{"nativeSrc":"5034:16:87","nodeType":"YulBlock","src":"5034:16:87","statements":[{"expression":{"arguments":[{"kind":"number","nativeSrc":"5043:1:87","nodeType":"YulLiteral","src":"5043:1:87","type":"","value":"0"},{"kind":"number","nativeSrc":"5046:1:87","nodeType":"YulLiteral","src":"5046:1:87","type":"","value":"0"}],"functionName":{"name":"revert","nativeSrc":"5036:6:87","nodeType":"YulIdentifier","src":"5036:6:87"},"nativeSrc":"5036:12:87","nodeType":"YulFunctionCall","src":"5036:12:87"},"nativeSrc":"5036:12:87","nodeType":"YulExpressionStatement","src":"5036:12:87"}]},"condition":{"arguments":[{"arguments":[{"name":"dataEnd","nativeSrc":"5009:7:87","nodeType":"YulIdentifier","src":"5009:7:87"},{"name":"headStart","nativeSrc":"5018:9:87","nodeType":"YulIdentifier","src":"5018:9:87"}],"functionName":{"name":"sub","nativeSrc":"5005:3:87","nodeType":"YulIdentifier","src":"5005:3:87"},"nativeSrc":"5005:23:87","nodeType":"YulFunctionCall","src":"5005:23:87"},{"kind":"number","nativeSrc":"5030:2:87","nodeType":"YulLiteral","src":"5030:2:87","type":"","value":"32"}],"functionName":{"name":"slt","nativeSrc":"5001:3:87","nodeType":"YulIdentifier","src":"5001:3:87"},"nativeSrc":"5001:32:87","nodeType":"YulFunctionCall","src":"5001:32:87"},"nativeSrc":"4998:52:87","nodeType":"YulIf","src":"4998:52:87"},{"nativeSrc":"5059:37:87","nodeType":"YulVariableDeclaration","src":"5059:37:87","value":{"arguments":[{"name":"headStart","nativeSrc":"5086:9:87","nodeType":"YulIdentifier","src":"5086:9:87"}],"functionName":{"name":"calldataload","nativeSrc":"5073:12:87","nodeType":"YulIdentifier","src":"5073:12:87"},"nativeSrc":"5073:23:87","nodeType":"YulFunctionCall","src":"5073:23:87"},"variables":[{"name":"offset","nativeSrc":"5063:6:87","nodeType":"YulTypedName","src":"5063:6:87","type":""}]},{"body":{"nativeSrc":"5139:16:87","nodeType":"YulBlock","src":"5139:16:87","statements":[{"expression":{"arguments":[{"kind":"number","nativeSrc":"5148:1:87","nodeType":"YulLiteral","src":"5148:1:87","type":"","value":"0"},{"kind":"number","nativeSrc":"5151:1:87","nodeType":"YulLiteral","src":"5151:1:87","type":"","value":"0"}],"functionName":{"name":"revert","nativeSrc":"5141:6:87","nodeType":"YulIdentifier","src":"5141:6:87"},"nativeSrc":"5141:12:87","nodeType":"YulFunctionCall","src":"5141:12:87"},"nativeSrc":"5141:12:87","nodeType":"YulExpressionStatement","src":"5141:12:87"}]},"condition":{"arguments":[{"name":"offset","nativeSrc":"5111:6:87","nodeType":"YulIdentifier","src":"5111:6:87"},{"kind":"number","nativeSrc":"5119:18:87","nodeType":"YulLiteral","src":"5119:18:87","type":"","value":"0xffffffffffffffff"}],"functionName":{"name":"gt","nativeSrc":"5108:2:87","nodeType":"YulIdentifier","src":"5108:2:87"},"nativeSrc":"5108:30:87","nodeType":"YulFunctionCall","src":"5108:30:87"},"nativeSrc":"5105:50:87","nodeType":"YulIf","src":"5105:50:87"},{"nativeSrc":"5164:59:87","nodeType":"YulAssignment","src":"5164:59:87","value":{"arguments":[{"arguments":[{"name":"headStart","nativeSrc":"5195:9:87","nodeType":"YulIdentifier","src":"5195:9:87"},{"name":"offset","nativeSrc":"5206:6:87","nodeType":"YulIdentifier","src":"5206:6:87"}],"functionName":{"name":"add","nativeSrc":"5191:3:87","nodeType":"YulIdentifier","src":"5191:3:87"},"nativeSrc":"5191:22:87","nodeType":"YulFunctionCall","src":"5191:22:87"},{"name":"dataEnd","nativeSrc":"5215:7:87","nodeType":"YulIdentifier","src":"5215:7:87"}],"functionName":{"name":"abi_decode_bytes","nativeSrc":"5174:16:87","nodeType":"YulIdentifier","src":"5174:16:87"},"nativeSrc":"5174:49:87","nodeType":"YulFunctionCall","src":"5174:49:87"},"variableNames":[{"name":"value0","nativeSrc":"5164:6:87","nodeType":"YulIdentifier","src":"5164:6:87"}]}]},"name":"abi_decode_tuple_t_bytes_memory_ptr","nativeSrc":"4909:320:87","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nativeSrc":"4954:9:87","nodeType":"YulTypedName","src":"4954:9:87","type":""},{"name":"dataEnd","nativeSrc":"4965:7:87","nodeType":"YulTypedName","src":"4965:7:87","type":""}],"returnVariables":[{"name":"value0","nativeSrc":"4977:6:87","nodeType":"YulTypedName","src":"4977:6:87","type":""}],"src":"4909:320:87"},{"body":{"nativeSrc":"5362:102:87","nodeType":"YulBlock","src":"5362:102:87","statements":[{"nativeSrc":"5372:26:87","nodeType":"YulAssignment","src":"5372:26:87","value":{"arguments":[{"name":"headStart","nativeSrc":"5384:9:87","nodeType":"YulIdentifier","src":"5384:9:87"},{"kind":"number","nativeSrc":"5395:2:87","nodeType":"YulLiteral","src":"5395:2:87","type":"","value":"32"}],"functionName":{"name":"add","nativeSrc":"5380:3:87","nodeType":"YulIdentifier","src":"5380:3:87"},"nativeSrc":"5380:18:87","nodeType":"YulFunctionCall","src":"5380:18:87"},"variableNames":[{"name":"tail","nativeSrc":"5372:4:87","nodeType":"YulIdentifier","src":"5372:4:87"}]},{"expression":{"arguments":[{"name":"headStart","nativeSrc":"5414:9:87","nodeType":"YulIdentifier","src":"5414:9:87"},{"arguments":[{"name":"value0","nativeSrc":"5429:6:87","nodeType":"YulIdentifier","src":"5429:6:87"},{"arguments":[{"arguments":[{"kind":"number","nativeSrc":"5445:3:87","nodeType":"YulLiteral","src":"5445:3:87","type":"","value":"160"},{"kind":"number","nativeSrc":"5450:1:87","nodeType":"YulLiteral","src":"5450:1:87","type":"","value":"1"}],"functionName":{"name":"shl","nativeSrc":"5441:3:87","nodeType":"YulIdentifier","src":"5441:3:87"},"nativeSrc":"5441:11:87","nodeType":"YulFunctionCall","src":"5441:11:87"},{"kind":"number","nativeSrc":"5454:1:87","nodeType":"YulLiteral","src":"5454:1:87","type":"","value":"1"}],"functionName":{"name":"sub","nativeSrc":"5437:3:87","nodeType":"YulIdentifier","src":"5437:3:87"},"nativeSrc":"5437:19:87","nodeType":"YulFunctionCall","src":"5437:19:87"}],"functionName":{"name":"and","nativeSrc":"5425:3:87","nodeType":"YulIdentifier","src":"5425:3:87"},"nativeSrc":"5425:32:87","nodeType":"YulFunctionCall","src":"5425:32:87"}],"functionName":{"name":"mstore","nativeSrc":"5407:6:87","nodeType":"YulIdentifier","src":"5407:6:87"},"nativeSrc":"5407:51:87","nodeType":"YulFunctionCall","src":"5407:51:87"},"nativeSrc":"5407:51:87","nodeType":"YulExpressionStatement","src":"5407:51:87"}]},"name":"abi_encode_tuple_t_contract$_IMerklDistributor_$23442__to_t_address__fromStack_reversed","nativeSrc":"5234:230:87","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nativeSrc":"5331:9:87","nodeType":"YulTypedName","src":"5331:9:87","type":""},{"name":"value0","nativeSrc":"5342:6:87","nodeType":"YulTypedName","src":"5342:6:87","type":""}],"returnVariables":[{"name":"tail","nativeSrc":"5353:4:87","nodeType":"YulTypedName","src":"5353:4:87","type":""}],"src":"5234:230:87"},{"body":{"nativeSrc":"5550:149:87","nodeType":"YulBlock","src":"5550:149:87","statements":[{"body":{"nativeSrc":"5596:16:87","nodeType":"YulBlock","src":"5596:16:87","statements":[{"expression":{"arguments":[{"kind":"number","nativeSrc":"5605:1:87","nodeType":"YulLiteral","src":"5605:1:87","type":"","value":"0"},{"kind":"number","nativeSrc":"5608:1:87","nodeType":"YulLiteral","src":"5608:1:87","type":"","value":"0"}],"functionName":{"name":"revert","nativeSrc":"5598:6:87","nodeType":"YulIdentifier","src":"5598:6:87"},"nativeSrc":"5598:12:87","nodeType":"YulFunctionCall","src":"5598:12:87"},"nativeSrc":"5598:12:87","nodeType":"YulExpressionStatement","src":"5598:12:87"}]},"condition":{"arguments":[{"arguments":[{"name":"dataEnd","nativeSrc":"5571:7:87","nodeType":"YulIdentifier","src":"5571:7:87"},{"name":"headStart","nativeSrc":"5580:9:87","nodeType":"YulIdentifier","src":"5580:9:87"}],"functionName":{"name":"sub","nativeSrc":"5567:3:87","nodeType":"YulIdentifier","src":"5567:3:87"},"nativeSrc":"5567:23:87","nodeType":"YulFunctionCall","src":"5567:23:87"},{"kind":"number","nativeSrc":"5592:2:87","nodeType":"YulLiteral","src":"5592:2:87","type":"","value":"32"}],"functionName":{"name":"slt","nativeSrc":"5563:3:87","nodeType":"YulIdentifier","src":"5563:3:87"},"nativeSrc":"5563:32:87","nodeType":"YulFunctionCall","src":"5563:32:87"},"nativeSrc":"5560:52:87","nodeType":"YulIf","src":"5560:52:87"},{"nativeSrc":"5621:14:87","nodeType":"YulVariableDeclaration","src":"5621:14:87","value":{"kind":"number","nativeSrc":"5634:1:87","nodeType":"YulLiteral","src":"5634:1:87","type":"","value":"0"},"variables":[{"name":"value","nativeSrc":"5625:5:87","nodeType":"YulTypedName","src":"5625:5:87","type":""}]},{"nativeSrc":"5644:25:87","nodeType":"YulAssignment","src":"5644:25:87","value":{"arguments":[{"name":"headStart","nativeSrc":"5659:9:87","nodeType":"YulIdentifier","src":"5659:9:87"}],"functionName":{"name":"mload","nativeSrc":"5653:5:87","nodeType":"YulIdentifier","src":"5653:5:87"},"nativeSrc":"5653:16:87","nodeType":"YulFunctionCall","src":"5653:16:87"},"variableNames":[{"name":"value","nativeSrc":"5644:5:87","nodeType":"YulIdentifier","src":"5644:5:87"}]},{"nativeSrc":"5678:15:87","nodeType":"YulAssignment","src":"5678:15:87","value":{"name":"value","nativeSrc":"5688:5:87","nodeType":"YulIdentifier","src":"5688:5:87"},"variableNames":[{"name":"value0","nativeSrc":"5678:6:87","nodeType":"YulIdentifier","src":"5678:6:87"}]}]},"name":"abi_decode_tuple_t_uint256_fromMemory","nativeSrc":"5469:230:87","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nativeSrc":"5516:9:87","nodeType":"YulTypedName","src":"5516:9:87","type":""},{"name":"dataEnd","nativeSrc":"5527:7:87","nodeType":"YulTypedName","src":"5527:7:87","type":""}],"returnVariables":[{"name":"value0","nativeSrc":"5539:6:87","nodeType":"YulTypedName","src":"5539:6:87","type":""}],"src":"5469:230:87"},{"body":{"nativeSrc":"5981:337:87","nodeType":"YulBlock","src":"5981:337:87","statements":[{"expression":{"arguments":[{"name":"headStart","nativeSrc":"5998:9:87","nodeType":"YulIdentifier","src":"5998:9:87"},{"kind":"number","nativeSrc":"6009:3:87","nodeType":"YulLiteral","src":"6009:3:87","type":"","value":"160"}],"functionName":{"name":"mstore","nativeSrc":"5991:6:87","nodeType":"YulIdentifier","src":"5991:6:87"},"nativeSrc":"5991:22:87","nodeType":"YulFunctionCall","src":"5991:22:87"},"nativeSrc":"5991:22:87","nodeType":"YulExpressionStatement","src":"5991:22:87"},{"nativeSrc":"6022:65:87","nodeType":"YulAssignment","src":"6022:65:87","value":{"arguments":[{"name":"value0","nativeSrc":"6059:6:87","nodeType":"YulIdentifier","src":"6059:6:87"},{"arguments":[{"name":"headStart","nativeSrc":"6071:9:87","nodeType":"YulIdentifier","src":"6071:9:87"},{"kind":"number","nativeSrc":"6082:3:87","nodeType":"YulLiteral","src":"6082:3:87","type":"","value":"160"}],"functionName":{"name":"add","nativeSrc":"6067:3:87","nodeType":"YulIdentifier","src":"6067:3:87"},"nativeSrc":"6067:19:87","nodeType":"YulFunctionCall","src":"6067:19:87"}],"functionName":{"name":"abi_encode_struct_SwapConfig","nativeSrc":"6030:28:87","nodeType":"YulIdentifier","src":"6030:28:87"},"nativeSrc":"6030:57:87","nodeType":"YulFunctionCall","src":"6030:57:87"},"variableNames":[{"name":"tail","nativeSrc":"6022:4:87","nodeType":"YulIdentifier","src":"6022:4:87"}]},{"expression":{"arguments":[{"arguments":[{"name":"headStart","nativeSrc":"6107:9:87","nodeType":"YulIdentifier","src":"6107:9:87"},{"kind":"number","nativeSrc":"6118:2:87","nodeType":"YulLiteral","src":"6118:2:87","type":"","value":"32"}],"functionName":{"name":"add","nativeSrc":"6103:3:87","nodeType":"YulIdentifier","src":"6103:3:87"},"nativeSrc":"6103:18:87","nodeType":"YulFunctionCall","src":"6103:18:87"},{"arguments":[{"name":"value1","nativeSrc":"6127:6:87","nodeType":"YulIdentifier","src":"6127:6:87"},{"arguments":[{"arguments":[{"kind":"number","nativeSrc":"6143:3:87","nodeType":"YulLiteral","src":"6143:3:87","type":"","value":"160"},{"kind":"number","nativeSrc":"6148:1:87","nodeType":"YulLiteral","src":"6148:1:87","type":"","value":"1"}],"functionName":{"name":"shl","nativeSrc":"6139:3:87","nodeType":"YulIdentifier","src":"6139:3:87"},"nativeSrc":"6139:11:87","nodeType":"YulFunctionCall","src":"6139:11:87"},{"kind":"number","nativeSrc":"6152:1:87","nodeType":"YulLiteral","src":"6152:1:87","type":"","value":"1"}],"functionName":{"name":"sub","nativeSrc":"6135:3:87","nodeType":"YulIdentifier","src":"6135:3:87"},"nativeSrc":"6135:19:87","nodeType":"YulFunctionCall","src":"6135:19:87"}],"functionName":{"name":"and","nativeSrc":"6123:3:87","nodeType":"YulIdentifier","src":"6123:3:87"},"nativeSrc":"6123:32:87","nodeType":"YulFunctionCall","src":"6123:32:87"}],"functionName":{"name":"mstore","nativeSrc":"6096:6:87","nodeType":"YulIdentifier","src":"6096:6:87"},"nativeSrc":"6096:60:87","nodeType":"YulFunctionCall","src":"6096:60:87"},"nativeSrc":"6096:60:87","nodeType":"YulExpressionStatement","src":"6096:60:87"},{"expression":{"arguments":[{"arguments":[{"name":"headStart","nativeSrc":"6176:9:87","nodeType":"YulIdentifier","src":"6176:9:87"},{"kind":"number","nativeSrc":"6187:2:87","nodeType":"YulLiteral","src":"6187:2:87","type":"","value":"64"}],"functionName":{"name":"add","nativeSrc":"6172:3:87","nodeType":"YulIdentifier","src":"6172:3:87"},"nativeSrc":"6172:18:87","nodeType":"YulFunctionCall","src":"6172:18:87"},{"arguments":[{"name":"value2","nativeSrc":"6196:6:87","nodeType":"YulIdentifier","src":"6196:6:87"},{"arguments":[{"arguments":[{"kind":"number","nativeSrc":"6212:3:87","nodeType":"YulLiteral","src":"6212:3:87","type":"","value":"160"},{"kind":"number","nativeSrc":"6217:1:87","nodeType":"YulLiteral","src":"6217:1:87","type":"","value":"1"}],"functionName":{"name":"shl","nativeSrc":"6208:3:87","nodeType":"YulIdentifier","src":"6208:3:87"},"nativeSrc":"6208:11:87","nodeType":"YulFunctionCall","src":"6208:11:87"},{"kind":"number","nativeSrc":"6221:1:87","nodeType":"YulLiteral","src":"6221:1:87","type":"","value":"1"}],"functionName":{"name":"sub","nativeSrc":"6204:3:87","nodeType":"YulIdentifier","src":"6204:3:87"},"nativeSrc":"6204:19:87","nodeType":"YulFunctionCall","src":"6204:19:87"}],"functionName":{"name":"and","nativeSrc":"6192:3:87","nodeType":"YulIdentifier","src":"6192:3:87"},"nativeSrc":"6192:32:87","nodeType":"YulFunctionCall","src":"6192:32:87"}],"functionName":{"name":"mstore","nativeSrc":"6165:6:87","nodeType":"YulIdentifier","src":"6165:6:87"},"nativeSrc":"6165:60:87","nodeType":"YulFunctionCall","src":"6165:60:87"},"nativeSrc":"6165:60:87","nodeType":"YulExpressionStatement","src":"6165:60:87"},{"expression":{"arguments":[{"arguments":[{"name":"headStart","nativeSrc":"6245:9:87","nodeType":"YulIdentifier","src":"6245:9:87"},{"kind":"number","nativeSrc":"6256:2:87","nodeType":"YulLiteral","src":"6256:2:87","type":"","value":"96"}],"functionName":{"name":"add","nativeSrc":"6241:3:87","nodeType":"YulIdentifier","src":"6241:3:87"},"nativeSrc":"6241:18:87","nodeType":"YulFunctionCall","src":"6241:18:87"},{"name":"value3","nativeSrc":"6261:6:87","nodeType":"YulIdentifier","src":"6261:6:87"}],"functionName":{"name":"mstore","nativeSrc":"6234:6:87","nodeType":"YulIdentifier","src":"6234:6:87"},"nativeSrc":"6234:34:87","nodeType":"YulFunctionCall","src":"6234:34:87"},"nativeSrc":"6234:34:87","nodeType":"YulExpressionStatement","src":"6234:34:87"},{"expression":{"arguments":[{"arguments":[{"name":"headStart","nativeSrc":"6288:9:87","nodeType":"YulIdentifier","src":"6288:9:87"},{"kind":"number","nativeSrc":"6299:3:87","nodeType":"YulLiteral","src":"6299:3:87","type":"","value":"128"}],"functionName":{"name":"add","nativeSrc":"6284:3:87","nodeType":"YulIdentifier","src":"6284:3:87"},"nativeSrc":"6284:19:87","nodeType":"YulFunctionCall","src":"6284:19:87"},{"name":"value4","nativeSrc":"6305:6:87","nodeType":"YulIdentifier","src":"6305:6:87"}],"functionName":{"name":"mstore","nativeSrc":"6277:6:87","nodeType":"YulIdentifier","src":"6277:6:87"},"nativeSrc":"6277:35:87","nodeType":"YulFunctionCall","src":"6277:35:87"},"nativeSrc":"6277:35:87","nodeType":"YulExpressionStatement","src":"6277:35:87"}]},"name":"abi_encode_tuple_t_struct$_SwapConfig_$1113_memory_ptr_t_address_t_address_t_uint256_t_uint256__to_t_struct$_SwapConfig_$1113_memory_ptr_t_address_t_address_t_uint256_t_uint256__fromStack_library_reversed","nativeSrc":"5704:614:87","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nativeSrc":"5918:9:87","nodeType":"YulTypedName","src":"5918:9:87","type":""},{"name":"value4","nativeSrc":"5929:6:87","nodeType":"YulTypedName","src":"5929:6:87","type":""},{"name":"value3","nativeSrc":"5937:6:87","nodeType":"YulTypedName","src":"5937:6:87","type":""},{"name":"value2","nativeSrc":"5945:6:87","nodeType":"YulTypedName","src":"5945:6:87","type":""},{"name":"value1","nativeSrc":"5953:6:87","nodeType":"YulTypedName","src":"5953:6:87","type":""},{"name":"value0","nativeSrc":"5961:6:87","nodeType":"YulTypedName","src":"5961:6:87","type":""}],"returnVariables":[{"name":"tail","nativeSrc":"5972:4:87","nodeType":"YulTypedName","src":"5972:4:87","type":""}],"src":"5704:614:87"},{"body":{"nativeSrc":"6446:910:87","nodeType":"YulBlock","src":"6446:910:87","statements":[{"body":{"nativeSrc":"6492:16:87","nodeType":"YulBlock","src":"6492:16:87","statements":[{"expression":{"arguments":[{"kind":"number","nativeSrc":"6501:1:87","nodeType":"YulLiteral","src":"6501:1:87","type":"","value":"0"},{"kind":"number","nativeSrc":"6504:1:87","nodeType":"YulLiteral","src":"6504:1:87","type":"","value":"0"}],"functionName":{"name":"revert","nativeSrc":"6494:6:87","nodeType":"YulIdentifier","src":"6494:6:87"},"nativeSrc":"6494:12:87","nodeType":"YulFunctionCall","src":"6494:12:87"},"nativeSrc":"6494:12:87","nodeType":"YulExpressionStatement","src":"6494:12:87"}]},"condition":{"arguments":[{"arguments":[{"name":"dataEnd","nativeSrc":"6467:7:87","nodeType":"YulIdentifier","src":"6467:7:87"},{"name":"headStart","nativeSrc":"6476:9:87","nodeType":"YulIdentifier","src":"6476:9:87"}],"functionName":{"name":"sub","nativeSrc":"6463:3:87","nodeType":"YulIdentifier","src":"6463:3:87"},"nativeSrc":"6463:23:87","nodeType":"YulFunctionCall","src":"6463:23:87"},{"kind":"number","nativeSrc":"6488:2:87","nodeType":"YulLiteral","src":"6488:2:87","type":"","value":"64"}],"functionName":{"name":"slt","nativeSrc":"6459:3:87","nodeType":"YulIdentifier","src":"6459:3:87"},"nativeSrc":"6459:32:87","nodeType":"YulFunctionCall","src":"6459:32:87"},"nativeSrc":"6456:52:87","nodeType":"YulIf","src":"6456:52:87"},{"nativeSrc":"6517:14:87","nodeType":"YulVariableDeclaration","src":"6517:14:87","value":{"kind":"number","nativeSrc":"6530:1:87","nodeType":"YulLiteral","src":"6530:1:87","type":"","value":"0"},"variables":[{"name":"value","nativeSrc":"6521:5:87","nodeType":"YulTypedName","src":"6521:5:87","type":""}]},{"nativeSrc":"6540:25:87","nodeType":"YulAssignment","src":"6540:25:87","value":{"arguments":[{"name":"headStart","nativeSrc":"6555:9:87","nodeType":"YulIdentifier","src":"6555:9:87"}],"functionName":{"name":"mload","nativeSrc":"6549:5:87","nodeType":"YulIdentifier","src":"6549:5:87"},"nativeSrc":"6549:16:87","nodeType":"YulFunctionCall","src":"6549:16:87"},"variableNames":[{"name":"value","nativeSrc":"6540:5:87","nodeType":"YulIdentifier","src":"6540:5:87"}]},{"nativeSrc":"6574:15:87","nodeType":"YulAssignment","src":"6574:15:87","value":{"name":"value","nativeSrc":"6584:5:87","nodeType":"YulIdentifier","src":"6584:5:87"},"variableNames":[{"name":"value0","nativeSrc":"6574:6:87","nodeType":"YulIdentifier","src":"6574:6:87"}]},{"nativeSrc":"6598:39:87","nodeType":"YulVariableDeclaration","src":"6598:39:87","value":{"arguments":[{"arguments":[{"name":"headStart","nativeSrc":"6622:9:87","nodeType":"YulIdentifier","src":"6622:9:87"},{"kind":"number","nativeSrc":"6633:2:87","nodeType":"YulLiteral","src":"6633:2:87","type":"","value":"32"}],"functionName":{"name":"add","nativeSrc":"6618:3:87","nodeType":"YulIdentifier","src":"6618:3:87"},"nativeSrc":"6618:18:87","nodeType":"YulFunctionCall","src":"6618:18:87"}],"functionName":{"name":"mload","nativeSrc":"6612:5:87","nodeType":"YulIdentifier","src":"6612:5:87"},"nativeSrc":"6612:25:87","nodeType":"YulFunctionCall","src":"6612:25:87"},"variables":[{"name":"offset","nativeSrc":"6602:6:87","nodeType":"YulTypedName","src":"6602:6:87","type":""}]},{"body":{"nativeSrc":"6680:16:87","nodeType":"YulBlock","src":"6680:16:87","statements":[{"expression":{"arguments":[{"kind":"number","nativeSrc":"6689:1:87","nodeType":"YulLiteral","src":"6689:1:87","type":"","value":"0"},{"kind":"number","nativeSrc":"6692:1:87","nodeType":"YulLiteral","src":"6692:1:87","type":"","value":"0"}],"functionName":{"name":"revert","nativeSrc":"6682:6:87","nodeType":"YulIdentifier","src":"6682:6:87"},"nativeSrc":"6682:12:87","nodeType":"YulFunctionCall","src":"6682:12:87"},"nativeSrc":"6682:12:87","nodeType":"YulExpressionStatement","src":"6682:12:87"}]},"condition":{"arguments":[{"name":"offset","nativeSrc":"6652:6:87","nodeType":"YulIdentifier","src":"6652:6:87"},{"kind":"number","nativeSrc":"6660:18:87","nodeType":"YulLiteral","src":"6660:18:87","type":"","value":"0xffffffffffffffff"}],"functionName":{"name":"gt","nativeSrc":"6649:2:87","nodeType":"YulIdentifier","src":"6649:2:87"},"nativeSrc":"6649:30:87","nodeType":"YulFunctionCall","src":"6649:30:87"},"nativeSrc":"6646:50:87","nodeType":"YulIf","src":"6646:50:87"},{"nativeSrc":"6705:32:87","nodeType":"YulVariableDeclaration","src":"6705:32:87","value":{"arguments":[{"name":"headStart","nativeSrc":"6719:9:87","nodeType":"YulIdentifier","src":"6719:9:87"},{"name":"offset","nativeSrc":"6730:6:87","nodeType":"YulIdentifier","src":"6730:6:87"}],"functionName":{"name":"add","nativeSrc":"6715:3:87","nodeType":"YulIdentifier","src":"6715:3:87"},"nativeSrc":"6715:22:87","nodeType":"YulFunctionCall","src":"6715:22:87"},"variables":[{"name":"_1","nativeSrc":"6709:2:87","nodeType":"YulTypedName","src":"6709:2:87","type":""}]},{"body":{"nativeSrc":"6785:16:87","nodeType":"YulBlock","src":"6785:16:87","statements":[{"expression":{"arguments":[{"kind":"number","nativeSrc":"6794:1:87","nodeType":"YulLiteral","src":"6794:1:87","type":"","value":"0"},{"kind":"number","nativeSrc":"6797:1:87","nodeType":"YulLiteral","src":"6797:1:87","type":"","value":"0"}],"functionName":{"name":"revert","nativeSrc":"6787:6:87","nodeType":"YulIdentifier","src":"6787:6:87"},"nativeSrc":"6787:12:87","nodeType":"YulFunctionCall","src":"6787:12:87"},"nativeSrc":"6787:12:87","nodeType":"YulExpressionStatement","src":"6787:12:87"}]},"condition":{"arguments":[{"arguments":[{"arguments":[{"name":"_1","nativeSrc":"6764:2:87","nodeType":"YulIdentifier","src":"6764:2:87"},{"kind":"number","nativeSrc":"6768:4:87","nodeType":"YulLiteral","src":"6768:4:87","type":"","value":"0x1f"}],"functionName":{"name":"add","nativeSrc":"6760:3:87","nodeType":"YulIdentifier","src":"6760:3:87"},"nativeSrc":"6760:13:87","nodeType":"YulFunctionCall","src":"6760:13:87"},{"name":"dataEnd","nativeSrc":"6775:7:87","nodeType":"YulIdentifier","src":"6775:7:87"}],"functionName":{"name":"slt","nativeSrc":"6756:3:87","nodeType":"YulIdentifier","src":"6756:3:87"},"nativeSrc":"6756:27:87","nodeType":"YulFunctionCall","src":"6756:27:87"}],"functionName":{"name":"iszero","nativeSrc":"6749:6:87","nodeType":"YulIdentifier","src":"6749:6:87"},"nativeSrc":"6749:35:87","nodeType":"YulFunctionCall","src":"6749:35:87"},"nativeSrc":"6746:55:87","nodeType":"YulIf","src":"6746:55:87"},{"nativeSrc":"6810:23:87","nodeType":"YulVariableDeclaration","src":"6810:23:87","value":{"arguments":[{"name":"_1","nativeSrc":"6830:2:87","nodeType":"YulIdentifier","src":"6830:2:87"}],"functionName":{"name":"mload","nativeSrc":"6824:5:87","nodeType":"YulIdentifier","src":"6824:5:87"},"nativeSrc":"6824:9:87","nodeType":"YulFunctionCall","src":"6824:9:87"},"variables":[{"name":"length","nativeSrc":"6814:6:87","nodeType":"YulTypedName","src":"6814:6:87","type":""}]},{"body":{"nativeSrc":"6876:22:87","nodeType":"YulBlock","src":"6876:22:87","statements":[{"expression":{"arguments":[],"functionName":{"name":"panic_error_0x41","nativeSrc":"6878:16:87","nodeType":"YulIdentifier","src":"6878:16:87"},"nativeSrc":"6878:18:87","nodeType":"YulFunctionCall","src":"6878:18:87"},"nativeSrc":"6878:18:87","nodeType":"YulExpressionStatement","src":"6878:18:87"}]},"condition":{"arguments":[{"name":"length","nativeSrc":"6848:6:87","nodeType":"YulIdentifier","src":"6848:6:87"},{"kind":"number","nativeSrc":"6856:18:87","nodeType":"YulLiteral","src":"6856:18:87","type":"","value":"0xffffffffffffffff"}],"functionName":{"name":"gt","nativeSrc":"6845:2:87","nodeType":"YulIdentifier","src":"6845:2:87"},"nativeSrc":"6845:30:87","nodeType":"YulFunctionCall","src":"6845:30:87"},"nativeSrc":"6842:56:87","nodeType":"YulIf","src":"6842:56:87"},{"nativeSrc":"6907:24:87","nodeType":"YulVariableDeclaration","src":"6907:24:87","value":{"arguments":[{"kind":"number","nativeSrc":"6921:1:87","nodeType":"YulLiteral","src":"6921:1:87","type":"","value":"5"},{"name":"length","nativeSrc":"6924:6:87","nodeType":"YulIdentifier","src":"6924:6:87"}],"functionName":{"name":"shl","nativeSrc":"6917:3:87","nodeType":"YulIdentifier","src":"6917:3:87"},"nativeSrc":"6917:14:87","nodeType":"YulFunctionCall","src":"6917:14:87"},"variables":[{"name":"_2","nativeSrc":"6911:2:87","nodeType":"YulTypedName","src":"6911:2:87","type":""}]},{"nativeSrc":"6940:39:87","nodeType":"YulVariableDeclaration","src":"6940:39:87","value":{"arguments":[{"arguments":[{"name":"_2","nativeSrc":"6971:2:87","nodeType":"YulIdentifier","src":"6971:2:87"},{"kind":"number","nativeSrc":"6975:2:87","nodeType":"YulLiteral","src":"6975:2:87","type":"","value":"32"}],"functionName":{"name":"add","nativeSrc":"6967:3:87","nodeType":"YulIdentifier","src":"6967:3:87"},"nativeSrc":"6967:11:87","nodeType":"YulFunctionCall","src":"6967:11:87"}],"functionName":{"name":"allocate_memory","nativeSrc":"6951:15:87","nodeType":"YulIdentifier","src":"6951:15:87"},"nativeSrc":"6951:28:87","nodeType":"YulFunctionCall","src":"6951:28:87"},"variables":[{"name":"dst","nativeSrc":"6944:3:87","nodeType":"YulTypedName","src":"6944:3:87","type":""}]},{"nativeSrc":"6988:16:87","nodeType":"YulVariableDeclaration","src":"6988:16:87","value":{"name":"dst","nativeSrc":"7001:3:87","nodeType":"YulIdentifier","src":"7001:3:87"},"variables":[{"name":"array","nativeSrc":"6992:5:87","nodeType":"YulTypedName","src":"6992:5:87","type":""}]},{"expression":{"arguments":[{"name":"dst","nativeSrc":"7020:3:87","nodeType":"YulIdentifier","src":"7020:3:87"},{"name":"length","nativeSrc":"7025:6:87","nodeType":"YulIdentifier","src":"7025:6:87"}],"functionName":{"name":"mstore","nativeSrc":"7013:6:87","nodeType":"YulIdentifier","src":"7013:6:87"},"nativeSrc":"7013:19:87","nodeType":"YulFunctionCall","src":"7013:19:87"},"nativeSrc":"7013:19:87","nodeType":"YulExpressionStatement","src":"7013:19:87"},{"nativeSrc":"7041:19:87","nodeType":"YulAssignment","src":"7041:19:87","value":{"arguments":[{"name":"dst","nativeSrc":"7052:3:87","nodeType":"YulIdentifier","src":"7052:3:87"},{"kind":"number","nativeSrc":"7057:2:87","nodeType":"YulLiteral","src":"7057:2:87","type":"","value":"32"}],"functionName":{"name":"add","nativeSrc":"7048:3:87","nodeType":"YulIdentifier","src":"7048:3:87"},"nativeSrc":"7048:12:87","nodeType":"YulFunctionCall","src":"7048:12:87"},"variableNames":[{"name":"dst","nativeSrc":"7041:3:87","nodeType":"YulIdentifier","src":"7041:3:87"}]},{"nativeSrc":"7069:34:87","nodeType":"YulVariableDeclaration","src":"7069:34:87","value":{"arguments":[{"arguments":[{"name":"_1","nativeSrc":"7091:2:87","nodeType":"YulIdentifier","src":"7091:2:87"},{"name":"_2","nativeSrc":"7095:2:87","nodeType":"YulIdentifier","src":"7095:2:87"}],"functionName":{"name":"add","nativeSrc":"7087:3:87","nodeType":"YulIdentifier","src":"7087:3:87"},"nativeSrc":"7087:11:87","nodeType":"YulFunctionCall","src":"7087:11:87"},{"kind":"number","nativeSrc":"7100:2:87","nodeType":"YulLiteral","src":"7100:2:87","type":"","value":"32"}],"functionName":{"name":"add","nativeSrc":"7083:3:87","nodeType":"YulIdentifier","src":"7083:3:87"},"nativeSrc":"7083:20:87","nodeType":"YulFunctionCall","src":"7083:20:87"},"variables":[{"name":"srcEnd","nativeSrc":"7073:6:87","nodeType":"YulTypedName","src":"7073:6:87","type":""}]},{"body":{"nativeSrc":"7135:16:87","nodeType":"YulBlock","src":"7135:16:87","statements":[{"expression":{"arguments":[{"kind":"number","nativeSrc":"7144:1:87","nodeType":"YulLiteral","src":"7144:1:87","type":"","value":"0"},{"kind":"number","nativeSrc":"7147:1:87","nodeType":"YulLiteral","src":"7147:1:87","type":"","value":"0"}],"functionName":{"name":"revert","nativeSrc":"7137:6:87","nodeType":"YulIdentifier","src":"7137:6:87"},"nativeSrc":"7137:12:87","nodeType":"YulFunctionCall","src":"7137:12:87"},"nativeSrc":"7137:12:87","nodeType":"YulExpressionStatement","src":"7137:12:87"}]},"condition":{"arguments":[{"name":"srcEnd","nativeSrc":"7118:6:87","nodeType":"YulIdentifier","src":"7118:6:87"},{"name":"dataEnd","nativeSrc":"7126:7:87","nodeType":"YulIdentifier","src":"7126:7:87"}],"functionName":{"name":"gt","nativeSrc":"7115:2:87","nodeType":"YulIdentifier","src":"7115:2:87"},"nativeSrc":"7115:19:87","nodeType":"YulFunctionCall","src":"7115:19:87"},"nativeSrc":"7112:39:87","nodeType":"YulIf","src":"7112:39:87"},{"nativeSrc":"7160:22:87","nodeType":"YulVariableDeclaration","src":"7160:22:87","value":{"arguments":[{"name":"_1","nativeSrc":"7175:2:87","nodeType":"YulIdentifier","src":"7175:2:87"},{"kind":"number","nativeSrc":"7179:2:87","nodeType":"YulLiteral","src":"7179:2:87","type":"","value":"32"}],"functionName":{"name":"add","nativeSrc":"7171:3:87","nodeType":"YulIdentifier","src":"7171:3:87"},"nativeSrc":"7171:11:87","nodeType":"YulFunctionCall","src":"7171:11:87"},"variables":[{"name":"src","nativeSrc":"7164:3:87","nodeType":"YulTypedName","src":"7164:3:87","type":""}]},{"body":{"nativeSrc":"7247:79:87","nodeType":"YulBlock","src":"7247:79:87","statements":[{"expression":{"arguments":[{"name":"dst","nativeSrc":"7268:3:87","nodeType":"YulIdentifier","src":"7268:3:87"},{"arguments":[{"name":"src","nativeSrc":"7279:3:87","nodeType":"YulIdentifier","src":"7279:3:87"}],"functionName":{"name":"mload","nativeSrc":"7273:5:87","nodeType":"YulIdentifier","src":"7273:5:87"},"nativeSrc":"7273:10:87","nodeType":"YulFunctionCall","src":"7273:10:87"}],"functionName":{"name":"mstore","nativeSrc":"7261:6:87","nodeType":"YulIdentifier","src":"7261:6:87"},"nativeSrc":"7261:23:87","nodeType":"YulFunctionCall","src":"7261:23:87"},"nativeSrc":"7261:23:87","nodeType":"YulExpressionStatement","src":"7261:23:87"},{"nativeSrc":"7297:19:87","nodeType":"YulAssignment","src":"7297:19:87","value":{"arguments":[{"name":"dst","nativeSrc":"7308:3:87","nodeType":"YulIdentifier","src":"7308:3:87"},{"kind":"number","nativeSrc":"7313:2:87","nodeType":"YulLiteral","src":"7313:2:87","type":"","value":"32"}],"functionName":{"name":"add","nativeSrc":"7304:3:87","nodeType":"YulIdentifier","src":"7304:3:87"},"nativeSrc":"7304:12:87","nodeType":"YulFunctionCall","src":"7304:12:87"},"variableNames":[{"name":"dst","nativeSrc":"7297:3:87","nodeType":"YulIdentifier","src":"7297:3:87"}]}]},"condition":{"arguments":[{"name":"src","nativeSrc":"7202:3:87","nodeType":"YulIdentifier","src":"7202:3:87"},{"name":"srcEnd","nativeSrc":"7207:6:87","nodeType":"YulIdentifier","src":"7207:6:87"}],"functionName":{"name":"lt","nativeSrc":"7199:2:87","nodeType":"YulIdentifier","src":"7199:2:87"},"nativeSrc":"7199:15:87","nodeType":"YulFunctionCall","src":"7199:15:87"},"nativeSrc":"7191:135:87","nodeType":"YulForLoop","post":{"nativeSrc":"7215:23:87","nodeType":"YulBlock","src":"7215:23:87","statements":[{"nativeSrc":"7217:19:87","nodeType":"YulAssignment","src":"7217:19:87","value":{"arguments":[{"name":"src","nativeSrc":"7228:3:87","nodeType":"YulIdentifier","src":"7228:3:87"},{"kind":"number","nativeSrc":"7233:2:87","nodeType":"YulLiteral","src":"7233:2:87","type":"","value":"32"}],"functionName":{"name":"add","nativeSrc":"7224:3:87","nodeType":"YulIdentifier","src":"7224:3:87"},"nativeSrc":"7224:12:87","nodeType":"YulFunctionCall","src":"7224:12:87"},"variableNames":[{"name":"src","nativeSrc":"7217:3:87","nodeType":"YulIdentifier","src":"7217:3:87"}]}]},"pre":{"nativeSrc":"7195:3:87","nodeType":"YulBlock","src":"7195:3:87","statements":[]},"src":"7191:135:87"},{"nativeSrc":"7335:15:87","nodeType":"YulAssignment","src":"7335:15:87","value":{"name":"array","nativeSrc":"7345:5:87","nodeType":"YulIdentifier","src":"7345:5:87"},"variableNames":[{"name":"value1","nativeSrc":"7335:6:87","nodeType":"YulIdentifier","src":"7335:6:87"}]}]},"name":"abi_decode_tuple_t_uint256t_array$_t_bytes32_$dyn_memory_ptr_fromMemory","nativeSrc":"6323:1033:87","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nativeSrc":"6404:9:87","nodeType":"YulTypedName","src":"6404:9:87","type":""},{"name":"dataEnd","nativeSrc":"6415:7:87","nodeType":"YulTypedName","src":"6415:7:87","type":""}],"returnVariables":[{"name":"value0","nativeSrc":"6427:6:87","nodeType":"YulTypedName","src":"6427:6:87","type":""},{"name":"value1","nativeSrc":"6435:6:87","nodeType":"YulTypedName","src":"6435:6:87","type":""}],"src":"6323:1033:87"},{"body":{"nativeSrc":"7393:95:87","nodeType":"YulBlock","src":"7393:95:87","statements":[{"expression":{"arguments":[{"kind":"number","nativeSrc":"7410:1:87","nodeType":"YulLiteral","src":"7410:1:87","type":"","value":"0"},{"arguments":[{"kind":"number","nativeSrc":"7417:3:87","nodeType":"YulLiteral","src":"7417:3:87","type":"","value":"224"},{"kind":"number","nativeSrc":"7422:10:87","nodeType":"YulLiteral","src":"7422:10:87","type":"","value":"0x4e487b71"}],"functionName":{"name":"shl","nativeSrc":"7413:3:87","nodeType":"YulIdentifier","src":"7413:3:87"},"nativeSrc":"7413:20:87","nodeType":"YulFunctionCall","src":"7413:20:87"}],"functionName":{"name":"mstore","nativeSrc":"7403:6:87","nodeType":"YulIdentifier","src":"7403:6:87"},"nativeSrc":"7403:31:87","nodeType":"YulFunctionCall","src":"7403:31:87"},"nativeSrc":"7403:31:87","nodeType":"YulExpressionStatement","src":"7403:31:87"},{"expression":{"arguments":[{"kind":"number","nativeSrc":"7450:1:87","nodeType":"YulLiteral","src":"7450:1:87","type":"","value":"4"},{"kind":"number","nativeSrc":"7453:4:87","nodeType":"YulLiteral","src":"7453:4:87","type":"","value":"0x32"}],"functionName":{"name":"mstore","nativeSrc":"7443:6:87","nodeType":"YulIdentifier","src":"7443:6:87"},"nativeSrc":"7443:15:87","nodeType":"YulFunctionCall","src":"7443:15:87"},"nativeSrc":"7443:15:87","nodeType":"YulExpressionStatement","src":"7443:15:87"},{"expression":{"arguments":[{"kind":"number","nativeSrc":"7474:1:87","nodeType":"YulLiteral","src":"7474:1:87","type":"","value":"0"},{"kind":"number","nativeSrc":"7477:4:87","nodeType":"YulLiteral","src":"7477:4:87","type":"","value":"0x24"}],"functionName":{"name":"revert","nativeSrc":"7467:6:87","nodeType":"YulIdentifier","src":"7467:6:87"},"nativeSrc":"7467:15:87","nodeType":"YulFunctionCall","src":"7467:15:87"},"nativeSrc":"7467:15:87","nodeType":"YulExpressionStatement","src":"7467:15:87"}]},"name":"panic_error_0x32","nativeSrc":"7361:127:87","nodeType":"YulFunctionDefinition","src":"7361:127:87"},{"body":{"nativeSrc":"7554:385:87","nodeType":"YulBlock","src":"7554:385:87","statements":[{"nativeSrc":"7564:26:87","nodeType":"YulVariableDeclaration","src":"7564:26:87","value":{"arguments":[{"name":"value","nativeSrc":"7584:5:87","nodeType":"YulIdentifier","src":"7584:5:87"}],"functionName":{"name":"mload","nativeSrc":"7578:5:87","nodeType":"YulIdentifier","src":"7578:5:87"},"nativeSrc":"7578:12:87","nodeType":"YulFunctionCall","src":"7578:12:87"},"variables":[{"name":"length","nativeSrc":"7568:6:87","nodeType":"YulTypedName","src":"7568:6:87","type":""}]},{"expression":{"arguments":[{"name":"pos","nativeSrc":"7606:3:87","nodeType":"YulIdentifier","src":"7606:3:87"},{"name":"length","nativeSrc":"7611:6:87","nodeType":"YulIdentifier","src":"7611:6:87"}],"functionName":{"name":"mstore","nativeSrc":"7599:6:87","nodeType":"YulIdentifier","src":"7599:6:87"},"nativeSrc":"7599:19:87","nodeType":"YulFunctionCall","src":"7599:19:87"},"nativeSrc":"7599:19:87","nodeType":"YulExpressionStatement","src":"7599:19:87"},{"nativeSrc":"7627:21:87","nodeType":"YulAssignment","src":"7627:21:87","value":{"arguments":[{"name":"pos","nativeSrc":"7638:3:87","nodeType":"YulIdentifier","src":"7638:3:87"},{"kind":"number","nativeSrc":"7643:4:87","nodeType":"YulLiteral","src":"7643:4:87","type":"","value":"0x20"}],"functionName":{"name":"add","nativeSrc":"7634:3:87","nodeType":"YulIdentifier","src":"7634:3:87"},"nativeSrc":"7634:14:87","nodeType":"YulFunctionCall","src":"7634:14:87"},"variableNames":[{"name":"pos","nativeSrc":"7627:3:87","nodeType":"YulIdentifier","src":"7627:3:87"}]},{"nativeSrc":"7657:30:87","nodeType":"YulVariableDeclaration","src":"7657:30:87","value":{"arguments":[{"name":"value","nativeSrc":"7675:5:87","nodeType":"YulIdentifier","src":"7675:5:87"},{"kind":"number","nativeSrc":"7682:4:87","nodeType":"YulLiteral","src":"7682:4:87","type":"","value":"0x20"}],"functionName":{"name":"add","nativeSrc":"7671:3:87","nodeType":"YulIdentifier","src":"7671:3:87"},"nativeSrc":"7671:16:87","nodeType":"YulFunctionCall","src":"7671:16:87"},"variables":[{"name":"srcPtr","nativeSrc":"7661:6:87","nodeType":"YulTypedName","src":"7661:6:87","type":""}]},{"nativeSrc":"7696:10:87","nodeType":"YulVariableDeclaration","src":"7696:10:87","value":{"kind":"number","nativeSrc":"7705:1:87","nodeType":"YulLiteral","src":"7705:1:87","type":"","value":"0"},"variables":[{"name":"i","nativeSrc":"7700:1:87","nodeType":"YulTypedName","src":"7700:1:87","type":""}]},{"body":{"nativeSrc":"7764:150:87","nodeType":"YulBlock","src":"7764:150:87","statements":[{"expression":{"arguments":[{"name":"pos","nativeSrc":"7785:3:87","nodeType":"YulIdentifier","src":"7785:3:87"},{"arguments":[{"arguments":[{"name":"srcPtr","nativeSrc":"7800:6:87","nodeType":"YulIdentifier","src":"7800:6:87"}],"functionName":{"name":"mload","nativeSrc":"7794:5:87","nodeType":"YulIdentifier","src":"7794:5:87"},"nativeSrc":"7794:13:87","nodeType":"YulFunctionCall","src":"7794:13:87"},{"arguments":[{"arguments":[{"kind":"number","nativeSrc":"7817:3:87","nodeType":"YulLiteral","src":"7817:3:87","type":"","value":"160"},{"kind":"number","nativeSrc":"7822:1:87","nodeType":"YulLiteral","src":"7822:1:87","type":"","value":"1"}],"functionName":{"name":"shl","nativeSrc":"7813:3:87","nodeType":"YulIdentifier","src":"7813:3:87"},"nativeSrc":"7813:11:87","nodeType":"YulFunctionCall","src":"7813:11:87"},{"kind":"number","nativeSrc":"7826:1:87","nodeType":"YulLiteral","src":"7826:1:87","type":"","value":"1"}],"functionName":{"name":"sub","nativeSrc":"7809:3:87","nodeType":"YulIdentifier","src":"7809:3:87"},"nativeSrc":"7809:19:87","nodeType":"YulFunctionCall","src":"7809:19:87"}],"functionName":{"name":"and","nativeSrc":"7790:3:87","nodeType":"YulIdentifier","src":"7790:3:87"},"nativeSrc":"7790:39:87","nodeType":"YulFunctionCall","src":"7790:39:87"}],"functionName":{"name":"mstore","nativeSrc":"7778:6:87","nodeType":"YulIdentifier","src":"7778:6:87"},"nativeSrc":"7778:52:87","nodeType":"YulFunctionCall","src":"7778:52:87"},"nativeSrc":"7778:52:87","nodeType":"YulExpressionStatement","src":"7778:52:87"},{"nativeSrc":"7843:21:87","nodeType":"YulAssignment","src":"7843:21:87","value":{"arguments":[{"name":"pos","nativeSrc":"7854:3:87","nodeType":"YulIdentifier","src":"7854:3:87"},{"kind":"number","nativeSrc":"7859:4:87","nodeType":"YulLiteral","src":"7859:4:87","type":"","value":"0x20"}],"functionName":{"name":"add","nativeSrc":"7850:3:87","nodeType":"YulIdentifier","src":"7850:3:87"},"nativeSrc":"7850:14:87","nodeType":"YulFunctionCall","src":"7850:14:87"},"variableNames":[{"name":"pos","nativeSrc":"7843:3:87","nodeType":"YulIdentifier","src":"7843:3:87"}]},{"nativeSrc":"7877:27:87","nodeType":"YulAssignment","src":"7877:27:87","value":{"arguments":[{"name":"srcPtr","nativeSrc":"7891:6:87","nodeType":"YulIdentifier","src":"7891:6:87"},{"kind":"number","nativeSrc":"7899:4:87","nodeType":"YulLiteral","src":"7899:4:87","type":"","value":"0x20"}],"functionName":{"name":"add","nativeSrc":"7887:3:87","nodeType":"YulIdentifier","src":"7887:3:87"},"nativeSrc":"7887:17:87","nodeType":"YulFunctionCall","src":"7887:17:87"},"variableNames":[{"name":"srcPtr","nativeSrc":"7877:6:87","nodeType":"YulIdentifier","src":"7877:6:87"}]}]},"condition":{"arguments":[{"name":"i","nativeSrc":"7726:1:87","nodeType":"YulIdentifier","src":"7726:1:87"},{"name":"length","nativeSrc":"7729:6:87","nodeType":"YulIdentifier","src":"7729:6:87"}],"functionName":{"name":"lt","nativeSrc":"7723:2:87","nodeType":"YulIdentifier","src":"7723:2:87"},"nativeSrc":"7723:13:87","nodeType":"YulFunctionCall","src":"7723:13:87"},"nativeSrc":"7715:199:87","nodeType":"YulForLoop","post":{"nativeSrc":"7737:18:87","nodeType":"YulBlock","src":"7737:18:87","statements":[{"nativeSrc":"7739:14:87","nodeType":"YulAssignment","src":"7739:14:87","value":{"arguments":[{"name":"i","nativeSrc":"7748:1:87","nodeType":"YulIdentifier","src":"7748:1:87"},{"kind":"number","nativeSrc":"7751:1:87","nodeType":"YulLiteral","src":"7751:1:87","type":"","value":"1"}],"functionName":{"name":"add","nativeSrc":"7744:3:87","nodeType":"YulIdentifier","src":"7744:3:87"},"nativeSrc":"7744:9:87","nodeType":"YulFunctionCall","src":"7744:9:87"},"variableNames":[{"name":"i","nativeSrc":"7739:1:87","nodeType":"YulIdentifier","src":"7739:1:87"}]}]},"pre":{"nativeSrc":"7719:3:87","nodeType":"YulBlock","src":"7719:3:87","statements":[]},"src":"7715:199:87"},{"nativeSrc":"7923:10:87","nodeType":"YulAssignment","src":"7923:10:87","value":{"name":"pos","nativeSrc":"7930:3:87","nodeType":"YulIdentifier","src":"7930:3:87"},"variableNames":[{"name":"end","nativeSrc":"7923:3:87","nodeType":"YulIdentifier","src":"7923:3:87"}]}]},"name":"abi_encode_array_address_dyn","nativeSrc":"7493:446:87","nodeType":"YulFunctionDefinition","parameters":[{"name":"value","nativeSrc":"7531:5:87","nodeType":"YulTypedName","src":"7531:5:87","type":""},{"name":"pos","nativeSrc":"7538:3:87","nodeType":"YulTypedName","src":"7538:3:87","type":""}],"returnVariables":[{"name":"end","nativeSrc":"7546:3:87","nodeType":"YulTypedName","src":"7546:3:87","type":""}],"src":"7493:446:87"},{"body":{"nativeSrc":"8379:1693:87","nodeType":"YulBlock","src":"8379:1693:87","statements":[{"expression":{"arguments":[{"name":"headStart","nativeSrc":"8396:9:87","nodeType":"YulIdentifier","src":"8396:9:87"},{"kind":"number","nativeSrc":"8407:3:87","nodeType":"YulLiteral","src":"8407:3:87","type":"","value":"128"}],"functionName":{"name":"mstore","nativeSrc":"8389:6:87","nodeType":"YulIdentifier","src":"8389:6:87"},"nativeSrc":"8389:22:87","nodeType":"YulFunctionCall","src":"8389:22:87"},"nativeSrc":"8389:22:87","nodeType":"YulExpressionStatement","src":"8389:22:87"},{"nativeSrc":"8420:71:87","nodeType":"YulVariableDeclaration","src":"8420:71:87","value":{"arguments":[{"name":"value0","nativeSrc":"8463:6:87","nodeType":"YulIdentifier","src":"8463:6:87"},{"arguments":[{"name":"headStart","nativeSrc":"8475:9:87","nodeType":"YulIdentifier","src":"8475:9:87"},{"kind":"number","nativeSrc":"8486:3:87","nodeType":"YulLiteral","src":"8486:3:87","type":"","value":"128"}],"functionName":{"name":"add","nativeSrc":"8471:3:87","nodeType":"YulIdentifier","src":"8471:3:87"},"nativeSrc":"8471:19:87","nodeType":"YulFunctionCall","src":"8471:19:87"}],"functionName":{"name":"abi_encode_array_address_dyn","nativeSrc":"8434:28:87","nodeType":"YulIdentifier","src":"8434:28:87"},"nativeSrc":"8434:57:87","nodeType":"YulFunctionCall","src":"8434:57:87"},"variables":[{"name":"tail_1","nativeSrc":"8424:6:87","nodeType":"YulTypedName","src":"8424:6:87","type":""}]},{"expression":{"arguments":[{"arguments":[{"name":"headStart","nativeSrc":"8511:9:87","nodeType":"YulIdentifier","src":"8511:9:87"},{"kind":"number","nativeSrc":"8522:2:87","nodeType":"YulLiteral","src":"8522:2:87","type":"","value":"32"}],"functionName":{"name":"add","nativeSrc":"8507:3:87","nodeType":"YulIdentifier","src":"8507:3:87"},"nativeSrc":"8507:18:87","nodeType":"YulFunctionCall","src":"8507:18:87"},{"arguments":[{"name":"tail_1","nativeSrc":"8531:6:87","nodeType":"YulIdentifier","src":"8531:6:87"},{"name":"headStart","nativeSrc":"8539:9:87","nodeType":"YulIdentifier","src":"8539:9:87"}],"functionName":{"name":"sub","nativeSrc":"8527:3:87","nodeType":"YulIdentifier","src":"8527:3:87"},"nativeSrc":"8527:22:87","nodeType":"YulFunctionCall","src":"8527:22:87"}],"functionName":{"name":"mstore","nativeSrc":"8500:6:87","nodeType":"YulIdentifier","src":"8500:6:87"},"nativeSrc":"8500:50:87","nodeType":"YulFunctionCall","src":"8500:50:87"},"nativeSrc":"8500:50:87","nodeType":"YulExpressionStatement","src":"8500:50:87"},{"nativeSrc":"8559:58:87","nodeType":"YulVariableDeclaration","src":"8559:58:87","value":{"arguments":[{"name":"value1","nativeSrc":"8602:6:87","nodeType":"YulIdentifier","src":"8602:6:87"},{"name":"tail_1","nativeSrc":"8610:6:87","nodeType":"YulIdentifier","src":"8610:6:87"}],"functionName":{"name":"abi_encode_array_address_dyn","nativeSrc":"8573:28:87","nodeType":"YulIdentifier","src":"8573:28:87"},"nativeSrc":"8573:44:87","nodeType":"YulFunctionCall","src":"8573:44:87"},"variables":[{"name":"tail_2","nativeSrc":"8563:6:87","nodeType":"YulTypedName","src":"8563:6:87","type":""}]},{"expression":{"arguments":[{"arguments":[{"name":"headStart","nativeSrc":"8637:9:87","nodeType":"YulIdentifier","src":"8637:9:87"},{"kind":"number","nativeSrc":"8648:2:87","nodeType":"YulLiteral","src":"8648:2:87","type":"","value":"64"}],"functionName":{"name":"add","nativeSrc":"8633:3:87","nodeType":"YulIdentifier","src":"8633:3:87"},"nativeSrc":"8633:18:87","nodeType":"YulFunctionCall","src":"8633:18:87"},{"arguments":[{"name":"tail_2","nativeSrc":"8657:6:87","nodeType":"YulIdentifier","src":"8657:6:87"},{"name":"headStart","nativeSrc":"8665:9:87","nodeType":"YulIdentifier","src":"8665:9:87"}],"functionName":{"name":"sub","nativeSrc":"8653:3:87","nodeType":"YulIdentifier","src":"8653:3:87"},"nativeSrc":"8653:22:87","nodeType":"YulFunctionCall","src":"8653:22:87"}],"functionName":{"name":"mstore","nativeSrc":"8626:6:87","nodeType":"YulIdentifier","src":"8626:6:87"},"nativeSrc":"8626:50:87","nodeType":"YulFunctionCall","src":"8626:50:87"},"nativeSrc":"8626:50:87","nodeType":"YulExpressionStatement","src":"8626:50:87"},{"nativeSrc":"8685:17:87","nodeType":"YulVariableDeclaration","src":"8685:17:87","value":{"name":"tail_2","nativeSrc":"8696:6:87","nodeType":"YulIdentifier","src":"8696:6:87"},"variables":[{"name":"pos","nativeSrc":"8689:3:87","nodeType":"YulTypedName","src":"8689:3:87","type":""}]},{"nativeSrc":"8711:27:87","nodeType":"YulVariableDeclaration","src":"8711:27:87","value":{"arguments":[{"name":"value2","nativeSrc":"8731:6:87","nodeType":"YulIdentifier","src":"8731:6:87"}],"functionName":{"name":"mload","nativeSrc":"8725:5:87","nodeType":"YulIdentifier","src":"8725:5:87"},"nativeSrc":"8725:13:87","nodeType":"YulFunctionCall","src":"8725:13:87"},"variables":[{"name":"length","nativeSrc":"8715:6:87","nodeType":"YulTypedName","src":"8715:6:87","type":""}]},{"expression":{"arguments":[{"name":"tail_2","nativeSrc":"8754:6:87","nodeType":"YulIdentifier","src":"8754:6:87"},{"name":"length","nativeSrc":"8762:6:87","nodeType":"YulIdentifier","src":"8762:6:87"}],"functionName":{"name":"mstore","nativeSrc":"8747:6:87","nodeType":"YulIdentifier","src":"8747:6:87"},"nativeSrc":"8747:22:87","nodeType":"YulFunctionCall","src":"8747:22:87"},"nativeSrc":"8747:22:87","nodeType":"YulExpressionStatement","src":"8747:22:87"},{"nativeSrc":"8778:22:87","nodeType":"YulAssignment","src":"8778:22:87","value":{"arguments":[{"name":"tail_2","nativeSrc":"8789:6:87","nodeType":"YulIdentifier","src":"8789:6:87"},{"kind":"number","nativeSrc":"8797:2:87","nodeType":"YulLiteral","src":"8797:2:87","type":"","value":"32"}],"functionName":{"name":"add","nativeSrc":"8785:3:87","nodeType":"YulIdentifier","src":"8785:3:87"},"nativeSrc":"8785:15:87","nodeType":"YulFunctionCall","src":"8785:15:87"},"variableNames":[{"name":"pos","nativeSrc":"8778:3:87","nodeType":"YulIdentifier","src":"8778:3:87"}]},{"nativeSrc":"8809:29:87","nodeType":"YulVariableDeclaration","src":"8809:29:87","value":{"arguments":[{"name":"value2","nativeSrc":"8827:6:87","nodeType":"YulIdentifier","src":"8827:6:87"},{"kind":"number","nativeSrc":"8835:2:87","nodeType":"YulLiteral","src":"8835:2:87","type":"","value":"32"}],"functionName":{"name":"add","nativeSrc":"8823:3:87","nodeType":"YulIdentifier","src":"8823:3:87"},"nativeSrc":"8823:15:87","nodeType":"YulFunctionCall","src":"8823:15:87"},"variables":[{"name":"srcPtr","nativeSrc":"8813:6:87","nodeType":"YulTypedName","src":"8813:6:87","type":""}]},{"nativeSrc":"8847:10:87","nodeType":"YulVariableDeclaration","src":"8847:10:87","value":{"kind":"number","nativeSrc":"8856:1:87","nodeType":"YulLiteral","src":"8856:1:87","type":"","value":"0"},"variables":[{"name":"i","nativeSrc":"8851:1:87","nodeType":"YulTypedName","src":"8851:1:87","type":""}]},{"body":{"nativeSrc":"8915:120:87","nodeType":"YulBlock","src":"8915:120:87","statements":[{"expression":{"arguments":[{"name":"pos","nativeSrc":"8936:3:87","nodeType":"YulIdentifier","src":"8936:3:87"},{"arguments":[{"name":"srcPtr","nativeSrc":"8947:6:87","nodeType":"YulIdentifier","src":"8947:6:87"}],"functionName":{"name":"mload","nativeSrc":"8941:5:87","nodeType":"YulIdentifier","src":"8941:5:87"},"nativeSrc":"8941:13:87","nodeType":"YulFunctionCall","src":"8941:13:87"}],"functionName":{"name":"mstore","nativeSrc":"8929:6:87","nodeType":"YulIdentifier","src":"8929:6:87"},"nativeSrc":"8929:26:87","nodeType":"YulFunctionCall","src":"8929:26:87"},"nativeSrc":"8929:26:87","nodeType":"YulExpressionStatement","src":"8929:26:87"},{"nativeSrc":"8968:19:87","nodeType":"YulAssignment","src":"8968:19:87","value":{"arguments":[{"name":"pos","nativeSrc":"8979:3:87","nodeType":"YulIdentifier","src":"8979:3:87"},{"kind":"number","nativeSrc":"8984:2:87","nodeType":"YulLiteral","src":"8984:2:87","type":"","value":"32"}],"functionName":{"name":"add","nativeSrc":"8975:3:87","nodeType":"YulIdentifier","src":"8975:3:87"},"nativeSrc":"8975:12:87","nodeType":"YulFunctionCall","src":"8975:12:87"},"variableNames":[{"name":"pos","nativeSrc":"8968:3:87","nodeType":"YulIdentifier","src":"8968:3:87"}]},{"nativeSrc":"9000:25:87","nodeType":"YulAssignment","src":"9000:25:87","value":{"arguments":[{"name":"srcPtr","nativeSrc":"9014:6:87","nodeType":"YulIdentifier","src":"9014:6:87"},{"kind":"number","nativeSrc":"9022:2:87","nodeType":"YulLiteral","src":"9022:2:87","type":"","value":"32"}],"functionName":{"name":"add","nativeSrc":"9010:3:87","nodeType":"YulIdentifier","src":"9010:3:87"},"nativeSrc":"9010:15:87","nodeType":"YulFunctionCall","src":"9010:15:87"},"variableNames":[{"name":"srcPtr","nativeSrc":"9000:6:87","nodeType":"YulIdentifier","src":"9000:6:87"}]}]},"condition":{"arguments":[{"name":"i","nativeSrc":"8877:1:87","nodeType":"YulIdentifier","src":"8877:1:87"},{"name":"length","nativeSrc":"8880:6:87","nodeType":"YulIdentifier","src":"8880:6:87"}],"functionName":{"name":"lt","nativeSrc":"8874:2:87","nodeType":"YulIdentifier","src":"8874:2:87"},"nativeSrc":"8874:13:87","nodeType":"YulFunctionCall","src":"8874:13:87"},"nativeSrc":"8866:169:87","nodeType":"YulForLoop","post":{"nativeSrc":"8888:18:87","nodeType":"YulBlock","src":"8888:18:87","statements":[{"nativeSrc":"8890:14:87","nodeType":"YulAssignment","src":"8890:14:87","value":{"arguments":[{"name":"i","nativeSrc":"8899:1:87","nodeType":"YulIdentifier","src":"8899:1:87"},{"kind":"number","nativeSrc":"8902:1:87","nodeType":"YulLiteral","src":"8902:1:87","type":"","value":"1"}],"functionName":{"name":"add","nativeSrc":"8895:3:87","nodeType":"YulIdentifier","src":"8895:3:87"},"nativeSrc":"8895:9:87","nodeType":"YulFunctionCall","src":"8895:9:87"},"variableNames":[{"name":"i","nativeSrc":"8890:1:87","nodeType":"YulIdentifier","src":"8890:1:87"}]}]},"pre":{"nativeSrc":"8870:3:87","nodeType":"YulBlock","src":"8870:3:87","statements":[]},"src":"8866:169:87"},{"expression":{"arguments":[{"arguments":[{"name":"headStart","nativeSrc":"9055:9:87","nodeType":"YulIdentifier","src":"9055:9:87"},{"kind":"number","nativeSrc":"9066:2:87","nodeType":"YulLiteral","src":"9066:2:87","type":"","value":"96"}],"functionName":{"name":"add","nativeSrc":"9051:3:87","nodeType":"YulIdentifier","src":"9051:3:87"},"nativeSrc":"9051:18:87","nodeType":"YulFunctionCall","src":"9051:18:87"},{"arguments":[{"name":"pos","nativeSrc":"9075:3:87","nodeType":"YulIdentifier","src":"9075:3:87"},{"name":"headStart","nativeSrc":"9080:9:87","nodeType":"YulIdentifier","src":"9080:9:87"}],"functionName":{"name":"sub","nativeSrc":"9071:3:87","nodeType":"YulIdentifier","src":"9071:3:87"},"nativeSrc":"9071:19:87","nodeType":"YulFunctionCall","src":"9071:19:87"}],"functionName":{"name":"mstore","nativeSrc":"9044:6:87","nodeType":"YulIdentifier","src":"9044:6:87"},"nativeSrc":"9044:47:87","nodeType":"YulFunctionCall","src":"9044:47:87"},"nativeSrc":"9044:47:87","nodeType":"YulExpressionStatement","src":"9044:47:87"},{"nativeSrc":"9100:16:87","nodeType":"YulVariableDeclaration","src":"9100:16:87","value":{"name":"pos","nativeSrc":"9113:3:87","nodeType":"YulIdentifier","src":"9113:3:87"},"variables":[{"name":"pos_1","nativeSrc":"9104:5:87","nodeType":"YulTypedName","src":"9104:5:87","type":""}]},{"nativeSrc":"9125:29:87","nodeType":"YulVariableDeclaration","src":"9125:29:87","value":{"arguments":[{"name":"value3","nativeSrc":"9147:6:87","nodeType":"YulIdentifier","src":"9147:6:87"}],"functionName":{"name":"mload","nativeSrc":"9141:5:87","nodeType":"YulIdentifier","src":"9141:5:87"},"nativeSrc":"9141:13:87","nodeType":"YulFunctionCall","src":"9141:13:87"},"variables":[{"name":"length_1","nativeSrc":"9129:8:87","nodeType":"YulTypedName","src":"9129:8:87","type":""}]},{"expression":{"arguments":[{"name":"pos","nativeSrc":"9170:3:87","nodeType":"YulIdentifier","src":"9170:3:87"},{"name":"length_1","nativeSrc":"9175:8:87","nodeType":"YulIdentifier","src":"9175:8:87"}],"functionName":{"name":"mstore","nativeSrc":"9163:6:87","nodeType":"YulIdentifier","src":"9163:6:87"},"nativeSrc":"9163:21:87","nodeType":"YulFunctionCall","src":"9163:21:87"},"nativeSrc":"9163:21:87","nodeType":"YulExpressionStatement","src":"9163:21:87"},{"nativeSrc":"9193:21:87","nodeType":"YulAssignment","src":"9193:21:87","value":{"arguments":[{"name":"pos","nativeSrc":"9206:3:87","nodeType":"YulIdentifier","src":"9206:3:87"},{"kind":"number","nativeSrc":"9211:2:87","nodeType":"YulLiteral","src":"9211:2:87","type":"","value":"32"}],"functionName":{"name":"add","nativeSrc":"9202:3:87","nodeType":"YulIdentifier","src":"9202:3:87"},"nativeSrc":"9202:12:87","nodeType":"YulFunctionCall","src":"9202:12:87"},"variableNames":[{"name":"pos_1","nativeSrc":"9193:5:87","nodeType":"YulIdentifier","src":"9193:5:87"}]},{"nativeSrc":"9223:49:87","nodeType":"YulVariableDeclaration","src":"9223:49:87","value":{"arguments":[{"arguments":[{"name":"pos","nativeSrc":"9245:3:87","nodeType":"YulIdentifier","src":"9245:3:87"},{"arguments":[{"kind":"number","nativeSrc":"9254:1:87","nodeType":"YulLiteral","src":"9254:1:87","type":"","value":"5"},{"name":"length_1","nativeSrc":"9257:8:87","nodeType":"YulIdentifier","src":"9257:8:87"}],"functionName":{"name":"shl","nativeSrc":"9250:3:87","nodeType":"YulIdentifier","src":"9250:3:87"},"nativeSrc":"9250:16:87","nodeType":"YulFunctionCall","src":"9250:16:87"}],"functionName":{"name":"add","nativeSrc":"9241:3:87","nodeType":"YulIdentifier","src":"9241:3:87"},"nativeSrc":"9241:26:87","nodeType":"YulFunctionCall","src":"9241:26:87"},{"kind":"number","nativeSrc":"9269:2:87","nodeType":"YulLiteral","src":"9269:2:87","type":"","value":"32"}],"functionName":{"name":"add","nativeSrc":"9237:3:87","nodeType":"YulIdentifier","src":"9237:3:87"},"nativeSrc":"9237:35:87","nodeType":"YulFunctionCall","src":"9237:35:87"},"variables":[{"name":"tail_3","nativeSrc":"9227:6:87","nodeType":"YulTypedName","src":"9227:6:87","type":""}]},{"nativeSrc":"9281:31:87","nodeType":"YulVariableDeclaration","src":"9281:31:87","value":{"arguments":[{"name":"value3","nativeSrc":"9301:6:87","nodeType":"YulIdentifier","src":"9301:6:87"},{"kind":"number","nativeSrc":"9309:2:87","nodeType":"YulLiteral","src":"9309:2:87","type":"","value":"32"}],"functionName":{"name":"add","nativeSrc":"9297:3:87","nodeType":"YulIdentifier","src":"9297:3:87"},"nativeSrc":"9297:15:87","nodeType":"YulFunctionCall","src":"9297:15:87"},"variables":[{"name":"srcPtr_1","nativeSrc":"9285:8:87","nodeType":"YulTypedName","src":"9285:8:87","type":""}]},{"nativeSrc":"9321:12:87","nodeType":"YulVariableDeclaration","src":"9321:12:87","value":{"kind":"number","nativeSrc":"9332:1:87","nodeType":"YulLiteral","src":"9332:1:87","type":"","value":"0"},"variables":[{"name":"i_1","nativeSrc":"9325:3:87","nodeType":"YulTypedName","src":"9325:3:87","type":""}]},{"body":{"nativeSrc":"9399:644:87","nodeType":"YulBlock","src":"9399:644:87","statements":[{"expression":{"arguments":[{"name":"pos_1","nativeSrc":"9420:5:87","nodeType":"YulIdentifier","src":"9420:5:87"},{"arguments":[{"arguments":[{"name":"tail_3","nativeSrc":"9435:6:87","nodeType":"YulIdentifier","src":"9435:6:87"},{"name":"pos","nativeSrc":"9443:3:87","nodeType":"YulIdentifier","src":"9443:3:87"}],"functionName":{"name":"sub","nativeSrc":"9431:3:87","nodeType":"YulIdentifier","src":"9431:3:87"},"nativeSrc":"9431:16:87","nodeType":"YulFunctionCall","src":"9431:16:87"},{"arguments":[{"kind":"number","nativeSrc":"9453:2:87","nodeType":"YulLiteral","src":"9453:2:87","type":"","value":"31"}],"functionName":{"name":"not","nativeSrc":"9449:3:87","nodeType":"YulIdentifier","src":"9449:3:87"},"nativeSrc":"9449:7:87","nodeType":"YulFunctionCall","src":"9449:7:87"}],"functionName":{"name":"add","nativeSrc":"9427:3:87","nodeType":"YulIdentifier","src":"9427:3:87"},"nativeSrc":"9427:30:87","nodeType":"YulFunctionCall","src":"9427:30:87"}],"functionName":{"name":"mstore","nativeSrc":"9413:6:87","nodeType":"YulIdentifier","src":"9413:6:87"},"nativeSrc":"9413:45:87","nodeType":"YulFunctionCall","src":"9413:45:87"},"nativeSrc":"9413:45:87","nodeType":"YulExpressionStatement","src":"9413:45:87"},{"nativeSrc":"9471:25:87","nodeType":"YulVariableDeclaration","src":"9471:25:87","value":{"arguments":[{"name":"srcPtr_1","nativeSrc":"9487:8:87","nodeType":"YulIdentifier","src":"9487:8:87"}],"functionName":{"name":"mload","nativeSrc":"9481:5:87","nodeType":"YulIdentifier","src":"9481:5:87"},"nativeSrc":"9481:15:87","nodeType":"YulFunctionCall","src":"9481:15:87"},"variables":[{"name":"_1","nativeSrc":"9475:2:87","nodeType":"YulTypedName","src":"9475:2:87","type":""}]},{"nativeSrc":"9509:19:87","nodeType":"YulVariableDeclaration","src":"9509:19:87","value":{"name":"tail_3","nativeSrc":"9522:6:87","nodeType":"YulIdentifier","src":"9522:6:87"},"variables":[{"name":"pos_2","nativeSrc":"9513:5:87","nodeType":"YulTypedName","src":"9513:5:87","type":""}]},{"nativeSrc":"9541:25:87","nodeType":"YulVariableDeclaration","src":"9541:25:87","value":{"arguments":[{"name":"_1","nativeSrc":"9563:2:87","nodeType":"YulIdentifier","src":"9563:2:87"}],"functionName":{"name":"mload","nativeSrc":"9557:5:87","nodeType":"YulIdentifier","src":"9557:5:87"},"nativeSrc":"9557:9:87","nodeType":"YulFunctionCall","src":"9557:9:87"},"variables":[{"name":"length_2","nativeSrc":"9545:8:87","nodeType":"YulTypedName","src":"9545:8:87","type":""}]},{"expression":{"arguments":[{"name":"tail_3","nativeSrc":"9586:6:87","nodeType":"YulIdentifier","src":"9586:6:87"},{"name":"length_2","nativeSrc":"9594:8:87","nodeType":"YulIdentifier","src":"9594:8:87"}],"functionName":{"name":"mstore","nativeSrc":"9579:6:87","nodeType":"YulIdentifier","src":"9579:6:87"},"nativeSrc":"9579:24:87","nodeType":"YulFunctionCall","src":"9579:24:87"},"nativeSrc":"9579:24:87","nodeType":"YulExpressionStatement","src":"9579:24:87"},{"nativeSrc":"9616:24:87","nodeType":"YulAssignment","src":"9616:24:87","value":{"arguments":[{"name":"tail_3","nativeSrc":"9629:6:87","nodeType":"YulIdentifier","src":"9629:6:87"},{"kind":"number","nativeSrc":"9637:2:87","nodeType":"YulLiteral","src":"9637:2:87","type":"","value":"32"}],"functionName":{"name":"add","nativeSrc":"9625:3:87","nodeType":"YulIdentifier","src":"9625:3:87"},"nativeSrc":"9625:15:87","nodeType":"YulFunctionCall","src":"9625:15:87"},"variableNames":[{"name":"pos_2","nativeSrc":"9616:5:87","nodeType":"YulIdentifier","src":"9616:5:87"}]},{"nativeSrc":"9653:27:87","nodeType":"YulVariableDeclaration","src":"9653:27:87","value":{"arguments":[{"name":"_1","nativeSrc":"9673:2:87","nodeType":"YulIdentifier","src":"9673:2:87"},{"kind":"number","nativeSrc":"9677:2:87","nodeType":"YulLiteral","src":"9677:2:87","type":"","value":"32"}],"functionName":{"name":"add","nativeSrc":"9669:3:87","nodeType":"YulIdentifier","src":"9669:3:87"},"nativeSrc":"9669:11:87","nodeType":"YulFunctionCall","src":"9669:11:87"},"variables":[{"name":"srcPtr_2","nativeSrc":"9657:8:87","nodeType":"YulTypedName","src":"9657:8:87","type":""}]},{"nativeSrc":"9693:12:87","nodeType":"YulVariableDeclaration","src":"9693:12:87","value":{"kind":"number","nativeSrc":"9704:1:87","nodeType":"YulLiteral","src":"9704:1:87","type":"","value":"0"},"variables":[{"name":"i_2","nativeSrc":"9697:3:87","nodeType":"YulTypedName","src":"9697:3:87","type":""}]},{"body":{"nativeSrc":"9779:148:87","nodeType":"YulBlock","src":"9779:148:87","statements":[{"expression":{"arguments":[{"name":"pos_2","nativeSrc":"9804:5:87","nodeType":"YulIdentifier","src":"9804:5:87"},{"arguments":[{"name":"srcPtr_2","nativeSrc":"9817:8:87","nodeType":"YulIdentifier","src":"9817:8:87"}],"functionName":{"name":"mload","nativeSrc":"9811:5:87","nodeType":"YulIdentifier","src":"9811:5:87"},"nativeSrc":"9811:15:87","nodeType":"YulFunctionCall","src":"9811:15:87"}],"functionName":{"name":"mstore","nativeSrc":"9797:6:87","nodeType":"YulIdentifier","src":"9797:6:87"},"nativeSrc":"9797:30:87","nodeType":"YulFunctionCall","src":"9797:30:87"},"nativeSrc":"9797:30:87","nodeType":"YulExpressionStatement","src":"9797:30:87"},{"nativeSrc":"9844:23:87","nodeType":"YulAssignment","src":"9844:23:87","value":{"arguments":[{"name":"pos_2","nativeSrc":"9857:5:87","nodeType":"YulIdentifier","src":"9857:5:87"},{"kind":"number","nativeSrc":"9864:2:87","nodeType":"YulLiteral","src":"9864:2:87","type":"","value":"32"}],"functionName":{"name":"add","nativeSrc":"9853:3:87","nodeType":"YulIdentifier","src":"9853:3:87"},"nativeSrc":"9853:14:87","nodeType":"YulFunctionCall","src":"9853:14:87"},"variableNames":[{"name":"pos_2","nativeSrc":"9844:5:87","nodeType":"YulIdentifier","src":"9844:5:87"}]},{"nativeSrc":"9884:29:87","nodeType":"YulAssignment","src":"9884:29:87","value":{"arguments":[{"name":"srcPtr_2","nativeSrc":"9900:8:87","nodeType":"YulIdentifier","src":"9900:8:87"},{"kind":"number","nativeSrc":"9910:2:87","nodeType":"YulLiteral","src":"9910:2:87","type":"","value":"32"}],"functionName":{"name":"add","nativeSrc":"9896:3:87","nodeType":"YulIdentifier","src":"9896:3:87"},"nativeSrc":"9896:17:87","nodeType":"YulFunctionCall","src":"9896:17:87"},"variableNames":[{"name":"srcPtr_2","nativeSrc":"9884:8:87","nodeType":"YulIdentifier","src":"9884:8:87"}]}]},"condition":{"arguments":[{"name":"i_2","nativeSrc":"9729:3:87","nodeType":"YulIdentifier","src":"9729:3:87"},{"name":"length_2","nativeSrc":"9734:8:87","nodeType":"YulIdentifier","src":"9734:8:87"}],"functionName":{"name":"lt","nativeSrc":"9726:2:87","nodeType":"YulIdentifier","src":"9726:2:87"},"nativeSrc":"9726:17:87","nodeType":"YulFunctionCall","src":"9726:17:87"},"nativeSrc":"9718:209:87","nodeType":"YulForLoop","post":{"nativeSrc":"9744:22:87","nodeType":"YulBlock","src":"9744:22:87","statements":[{"nativeSrc":"9746:18:87","nodeType":"YulAssignment","src":"9746:18:87","value":{"arguments":[{"name":"i_2","nativeSrc":"9757:3:87","nodeType":"YulIdentifier","src":"9757:3:87"},{"kind":"number","nativeSrc":"9762:1:87","nodeType":"YulLiteral","src":"9762:1:87","type":"","value":"1"}],"functionName":{"name":"add","nativeSrc":"9753:3:87","nodeType":"YulIdentifier","src":"9753:3:87"},"nativeSrc":"9753:11:87","nodeType":"YulFunctionCall","src":"9753:11:87"},"variableNames":[{"name":"i_2","nativeSrc":"9746:3:87","nodeType":"YulIdentifier","src":"9746:3:87"}]}]},"pre":{"nativeSrc":"9722:3:87","nodeType":"YulBlock","src":"9722:3:87","statements":[]},"src":"9718:209:87"},{"nativeSrc":"9940:15:87","nodeType":"YulAssignment","src":"9940:15:87","value":{"name":"pos_2","nativeSrc":"9950:5:87","nodeType":"YulIdentifier","src":"9950:5:87"},"variableNames":[{"name":"tail_3","nativeSrc":"9940:6:87","nodeType":"YulIdentifier","src":"9940:6:87"}]},{"nativeSrc":"9968:29:87","nodeType":"YulAssignment","src":"9968:29:87","value":{"arguments":[{"name":"srcPtr_1","nativeSrc":"9984:8:87","nodeType":"YulIdentifier","src":"9984:8:87"},{"kind":"number","nativeSrc":"9994:2:87","nodeType":"YulLiteral","src":"9994:2:87","type":"","value":"32"}],"functionName":{"name":"add","nativeSrc":"9980:3:87","nodeType":"YulIdentifier","src":"9980:3:87"},"nativeSrc":"9980:17:87","nodeType":"YulFunctionCall","src":"9980:17:87"},"variableNames":[{"name":"srcPtr_1","nativeSrc":"9968:8:87","nodeType":"YulIdentifier","src":"9968:8:87"}]},{"nativeSrc":"10010:23:87","nodeType":"YulAssignment","src":"10010:23:87","value":{"arguments":[{"name":"pos_1","nativeSrc":"10023:5:87","nodeType":"YulIdentifier","src":"10023:5:87"},{"kind":"number","nativeSrc":"10030:2:87","nodeType":"YulLiteral","src":"10030:2:87","type":"","value":"32"}],"functionName":{"name":"add","nativeSrc":"10019:3:87","nodeType":"YulIdentifier","src":"10019:3:87"},"nativeSrc":"10019:14:87","nodeType":"YulFunctionCall","src":"10019:14:87"},"variableNames":[{"name":"pos_1","nativeSrc":"10010:5:87","nodeType":"YulIdentifier","src":"10010:5:87"}]}]},"condition":{"arguments":[{"name":"i_1","nativeSrc":"9353:3:87","nodeType":"YulIdentifier","src":"9353:3:87"},{"name":"length_1","nativeSrc":"9358:8:87","nodeType":"YulIdentifier","src":"9358:8:87"}],"functionName":{"name":"lt","nativeSrc":"9350:2:87","nodeType":"YulIdentifier","src":"9350:2:87"},"nativeSrc":"9350:17:87","nodeType":"YulFunctionCall","src":"9350:17:87"},"nativeSrc":"9342:701:87","nodeType":"YulForLoop","post":{"nativeSrc":"9368:22:87","nodeType":"YulBlock","src":"9368:22:87","statements":[{"nativeSrc":"9370:18:87","nodeType":"YulAssignment","src":"9370:18:87","value":{"arguments":[{"name":"i_1","nativeSrc":"9381:3:87","nodeType":"YulIdentifier","src":"9381:3:87"},{"kind":"number","nativeSrc":"9386:1:87","nodeType":"YulLiteral","src":"9386:1:87","type":"","value":"1"}],"functionName":{"name":"add","nativeSrc":"9377:3:87","nodeType":"YulIdentifier","src":"9377:3:87"},"nativeSrc":"9377:11:87","nodeType":"YulFunctionCall","src":"9377:11:87"},"variableNames":[{"name":"i_1","nativeSrc":"9370:3:87","nodeType":"YulIdentifier","src":"9370:3:87"}]}]},"pre":{"nativeSrc":"9346:3:87","nodeType":"YulBlock","src":"9346:3:87","statements":[]},"src":"9342:701:87"},{"nativeSrc":"10052:14:87","nodeType":"YulAssignment","src":"10052:14:87","value":{"name":"tail_3","nativeSrc":"10060:6:87","nodeType":"YulIdentifier","src":"10060:6:87"},"variableNames":[{"name":"tail","nativeSrc":"10052:4:87","nodeType":"YulIdentifier","src":"10052:4:87"}]}]},"name":"abi_encode_tuple_t_array$_t_address_$dyn_memory_ptr_t_array$_t_address_$dyn_memory_ptr_t_array$_t_uint256_$dyn_memory_ptr_t_array$_t_array$_t_bytes32_$dyn_memory_ptr_$dyn_memory_ptr__to_t_array$_t_address_$dyn_memory_ptr_t_array$_t_address_$dyn_memory_ptr_t_array$_t_uint256_$dyn_memory_ptr_t_array$_t_array$_t_bytes32_$dyn_memory_ptr_$dyn_memory_ptr__fromStack_reversed","nativeSrc":"7944:2128:87","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nativeSrc":"8324:9:87","nodeType":"YulTypedName","src":"8324:9:87","type":""},{"name":"value3","nativeSrc":"8335:6:87","nodeType":"YulTypedName","src":"8335:6:87","type":""},{"name":"value2","nativeSrc":"8343:6:87","nodeType":"YulTypedName","src":"8343:6:87","type":""},{"name":"value1","nativeSrc":"8351:6:87","nodeType":"YulTypedName","src":"8351:6:87","type":""},{"name":"value0","nativeSrc":"8359:6:87","nodeType":"YulTypedName","src":"8359:6:87","type":""}],"returnVariables":[{"name":"tail","nativeSrc":"8370:4:87","nodeType":"YulTypedName","src":"8370:4:87","type":""}],"src":"7944:2128:87"},{"body":{"nativeSrc":"10206:119:87","nodeType":"YulBlock","src":"10206:119:87","statements":[{"nativeSrc":"10216:26:87","nodeType":"YulAssignment","src":"10216:26:87","value":{"arguments":[{"name":"headStart","nativeSrc":"10228:9:87","nodeType":"YulIdentifier","src":"10228:9:87"},{"kind":"number","nativeSrc":"10239:2:87","nodeType":"YulLiteral","src":"10239:2:87","type":"","value":"64"}],"functionName":{"name":"add","nativeSrc":"10224:3:87","nodeType":"YulIdentifier","src":"10224:3:87"},"nativeSrc":"10224:18:87","nodeType":"YulFunctionCall","src":"10224:18:87"},"variableNames":[{"name":"tail","nativeSrc":"10216:4:87","nodeType":"YulIdentifier","src":"10216:4:87"}]},{"expression":{"arguments":[{"name":"headStart","nativeSrc":"10258:9:87","nodeType":"YulIdentifier","src":"10258:9:87"},{"name":"value0","nativeSrc":"10269:6:87","nodeType":"YulIdentifier","src":"10269:6:87"}],"functionName":{"name":"mstore","nativeSrc":"10251:6:87","nodeType":"YulIdentifier","src":"10251:6:87"},"nativeSrc":"10251:25:87","nodeType":"YulFunctionCall","src":"10251:25:87"},"nativeSrc":"10251:25:87","nodeType":"YulExpressionStatement","src":"10251:25:87"},{"expression":{"arguments":[{"arguments":[{"name":"headStart","nativeSrc":"10296:9:87","nodeType":"YulIdentifier","src":"10296:9:87"},{"kind":"number","nativeSrc":"10307:2:87","nodeType":"YulLiteral","src":"10307:2:87","type":"","value":"32"}],"functionName":{"name":"add","nativeSrc":"10292:3:87","nodeType":"YulIdentifier","src":"10292:3:87"},"nativeSrc":"10292:18:87","nodeType":"YulFunctionCall","src":"10292:18:87"},{"name":"value1","nativeSrc":"10312:6:87","nodeType":"YulIdentifier","src":"10312:6:87"}],"functionName":{"name":"mstore","nativeSrc":"10285:6:87","nodeType":"YulIdentifier","src":"10285:6:87"},"nativeSrc":"10285:34:87","nodeType":"YulFunctionCall","src":"10285:34:87"},"nativeSrc":"10285:34:87","nodeType":"YulExpressionStatement","src":"10285:34:87"}]},"name":"abi_encode_tuple_t_uint256_t_uint256__to_t_uint256_t_uint256__fromStack_reversed","nativeSrc":"10077:248:87","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nativeSrc":"10167:9:87","nodeType":"YulTypedName","src":"10167:9:87","type":""},{"name":"value1","nativeSrc":"10178:6:87","nodeType":"YulTypedName","src":"10178:6:87","type":""},{"name":"value0","nativeSrc":"10186:6:87","nodeType":"YulTypedName","src":"10186:6:87","type":""}],"returnVariables":[{"name":"tail","nativeSrc":"10197:4:87","nodeType":"YulTypedName","src":"10197:4:87","type":""}],"src":"10077:248:87"},{"body":{"nativeSrc":"10389:120:87","nodeType":"YulBlock","src":"10389:120:87","statements":[{"nativeSrc":"10399:22:87","nodeType":"YulAssignment","src":"10399:22:87","value":{"arguments":[{"name":"offset","nativeSrc":"10414:6:87","nodeType":"YulIdentifier","src":"10414:6:87"}],"functionName":{"name":"mload","nativeSrc":"10408:5:87","nodeType":"YulIdentifier","src":"10408:5:87"},"nativeSrc":"10408:13:87","nodeType":"YulFunctionCall","src":"10408:13:87"},"variableNames":[{"name":"value","nativeSrc":"10399:5:87","nodeType":"YulIdentifier","src":"10399:5:87"}]},{"body":{"nativeSrc":"10487:16:87","nodeType":"YulBlock","src":"10487:16:87","statements":[{"expression":{"arguments":[{"kind":"number","nativeSrc":"10496:1:87","nodeType":"YulLiteral","src":"10496:1:87","type":"","value":"0"},{"kind":"number","nativeSrc":"10499:1:87","nodeType":"YulLiteral","src":"10499:1:87","type":"","value":"0"}],"functionName":{"name":"revert","nativeSrc":"10489:6:87","nodeType":"YulIdentifier","src":"10489:6:87"},"nativeSrc":"10489:12:87","nodeType":"YulFunctionCall","src":"10489:12:87"},"nativeSrc":"10489:12:87","nodeType":"YulExpressionStatement","src":"10489:12:87"}]},"condition":{"arguments":[{"arguments":[{"name":"value","nativeSrc":"10443:5:87","nodeType":"YulIdentifier","src":"10443:5:87"},{"arguments":[{"name":"value","nativeSrc":"10454:5:87","nodeType":"YulIdentifier","src":"10454:5:87"},{"kind":"number","nativeSrc":"10461:22:87","nodeType":"YulLiteral","src":"10461:22:87","type":"","value":"0xffffffffffffffffffff"}],"functionName":{"name":"and","nativeSrc":"10450:3:87","nodeType":"YulIdentifier","src":"10450:3:87"},"nativeSrc":"10450:34:87","nodeType":"YulFunctionCall","src":"10450:34:87"}],"functionName":{"name":"eq","nativeSrc":"10440:2:87","nodeType":"YulIdentifier","src":"10440:2:87"},"nativeSrc":"10440:45:87","nodeType":"YulFunctionCall","src":"10440:45:87"}],"functionName":{"name":"iszero","nativeSrc":"10433:6:87","nodeType":"YulIdentifier","src":"10433:6:87"},"nativeSrc":"10433:53:87","nodeType":"YulFunctionCall","src":"10433:53:87"},"nativeSrc":"10430:73:87","nodeType":"YulIf","src":"10430:73:87"}]},"name":"abi_decode_uint80_fromMemory","nativeSrc":"10330:179:87","nodeType":"YulFunctionDefinition","parameters":[{"name":"offset","nativeSrc":"10368:6:87","nodeType":"YulTypedName","src":"10368:6:87","type":""}],"returnVariables":[{"name":"value","nativeSrc":"10379:5:87","nodeType":"YulTypedName","src":"10379:5:87","type":""}],"src":"10330:179:87"},{"body":{"nativeSrc":"10660:425:87","nodeType":"YulBlock","src":"10660:425:87","statements":[{"body":{"nativeSrc":"10707:16:87","nodeType":"YulBlock","src":"10707:16:87","statements":[{"expression":{"arguments":[{"kind":"number","nativeSrc":"10716:1:87","nodeType":"YulLiteral","src":"10716:1:87","type":"","value":"0"},{"kind":"number","nativeSrc":"10719:1:87","nodeType":"YulLiteral","src":"10719:1:87","type":"","value":"0"}],"functionName":{"name":"revert","nativeSrc":"10709:6:87","nodeType":"YulIdentifier","src":"10709:6:87"},"nativeSrc":"10709:12:87","nodeType":"YulFunctionCall","src":"10709:12:87"},"nativeSrc":"10709:12:87","nodeType":"YulExpressionStatement","src":"10709:12:87"}]},"condition":{"arguments":[{"arguments":[{"name":"dataEnd","nativeSrc":"10681:7:87","nodeType":"YulIdentifier","src":"10681:7:87"},{"name":"headStart","nativeSrc":"10690:9:87","nodeType":"YulIdentifier","src":"10690:9:87"}],"functionName":{"name":"sub","nativeSrc":"10677:3:87","nodeType":"YulIdentifier","src":"10677:3:87"},"nativeSrc":"10677:23:87","nodeType":"YulFunctionCall","src":"10677:23:87"},{"kind":"number","nativeSrc":"10702:3:87","nodeType":"YulLiteral","src":"10702:3:87","type":"","value":"160"}],"functionName":{"name":"slt","nativeSrc":"10673:3:87","nodeType":"YulIdentifier","src":"10673:3:87"},"nativeSrc":"10673:33:87","nodeType":"YulFunctionCall","src":"10673:33:87"},"nativeSrc":"10670:53:87","nodeType":"YulIf","src":"10670:53:87"},{"nativeSrc":"10732:49:87","nodeType":"YulAssignment","src":"10732:49:87","value":{"arguments":[{"name":"headStart","nativeSrc":"10771:9:87","nodeType":"YulIdentifier","src":"10771:9:87"}],"functionName":{"name":"abi_decode_uint80_fromMemory","nativeSrc":"10742:28:87","nodeType":"YulIdentifier","src":"10742:28:87"},"nativeSrc":"10742:39:87","nodeType":"YulFunctionCall","src":"10742:39:87"},"variableNames":[{"name":"value0","nativeSrc":"10732:6:87","nodeType":"YulIdentifier","src":"10732:6:87"}]},{"nativeSrc":"10790:35:87","nodeType":"YulAssignment","src":"10790:35:87","value":{"arguments":[{"arguments":[{"name":"headStart","nativeSrc":"10810:9:87","nodeType":"YulIdentifier","src":"10810:9:87"},{"kind":"number","nativeSrc":"10821:2:87","nodeType":"YulLiteral","src":"10821:2:87","type":"","value":"32"}],"functionName":{"name":"add","nativeSrc":"10806:3:87","nodeType":"YulIdentifier","src":"10806:3:87"},"nativeSrc":"10806:18:87","nodeType":"YulFunctionCall","src":"10806:18:87"}],"functionName":{"name":"mload","nativeSrc":"10800:5:87","nodeType":"YulIdentifier","src":"10800:5:87"},"nativeSrc":"10800:25:87","nodeType":"YulFunctionCall","src":"10800:25:87"},"variableNames":[{"name":"value1","nativeSrc":"10790:6:87","nodeType":"YulIdentifier","src":"10790:6:87"}]},{"nativeSrc":"10834:14:87","nodeType":"YulVariableDeclaration","src":"10834:14:87","value":{"kind":"number","nativeSrc":"10847:1:87","nodeType":"YulLiteral","src":"10847:1:87","type":"","value":"0"},"variables":[{"name":"value","nativeSrc":"10838:5:87","nodeType":"YulTypedName","src":"10838:5:87","type":""}]},{"nativeSrc":"10857:34:87","nodeType":"YulAssignment","src":"10857:34:87","value":{"arguments":[{"arguments":[{"name":"headStart","nativeSrc":"10876:9:87","nodeType":"YulIdentifier","src":"10876:9:87"},{"kind":"number","nativeSrc":"10887:2:87","nodeType":"YulLiteral","src":"10887:2:87","type":"","value":"64"}],"functionName":{"name":"add","nativeSrc":"10872:3:87","nodeType":"YulIdentifier","src":"10872:3:87"},"nativeSrc":"10872:18:87","nodeType":"YulFunctionCall","src":"10872:18:87"}],"functionName":{"name":"mload","nativeSrc":"10866:5:87","nodeType":"YulIdentifier","src":"10866:5:87"},"nativeSrc":"10866:25:87","nodeType":"YulFunctionCall","src":"10866:25:87"},"variableNames":[{"name":"value","nativeSrc":"10857:5:87","nodeType":"YulIdentifier","src":"10857:5:87"}]},{"nativeSrc":"10900:15:87","nodeType":"YulAssignment","src":"10900:15:87","value":{"name":"value","nativeSrc":"10910:5:87","nodeType":"YulIdentifier","src":"10910:5:87"},"variableNames":[{"name":"value2","nativeSrc":"10900:6:87","nodeType":"YulIdentifier","src":"10900:6:87"}]},{"nativeSrc":"10924:16:87","nodeType":"YulVariableDeclaration","src":"10924:16:87","value":{"kind":"number","nativeSrc":"10939:1:87","nodeType":"YulLiteral","src":"10939:1:87","type":"","value":"0"},"variables":[{"name":"value_1","nativeSrc":"10928:7:87","nodeType":"YulTypedName","src":"10928:7:87","type":""}]},{"nativeSrc":"10949:36:87","nodeType":"YulAssignment","src":"10949:36:87","value":{"arguments":[{"arguments":[{"name":"headStart","nativeSrc":"10970:9:87","nodeType":"YulIdentifier","src":"10970:9:87"},{"kind":"number","nativeSrc":"10981:2:87","nodeType":"YulLiteral","src":"10981:2:87","type":"","value":"96"}],"functionName":{"name":"add","nativeSrc":"10966:3:87","nodeType":"YulIdentifier","src":"10966:3:87"},"nativeSrc":"10966:18:87","nodeType":"YulFunctionCall","src":"10966:18:87"}],"functionName":{"name":"mload","nativeSrc":"10960:5:87","nodeType":"YulIdentifier","src":"10960:5:87"},"nativeSrc":"10960:25:87","nodeType":"YulFunctionCall","src":"10960:25:87"},"variableNames":[{"name":"value_1","nativeSrc":"10949:7:87","nodeType":"YulIdentifier","src":"10949:7:87"}]},{"nativeSrc":"10994:17:87","nodeType":"YulAssignment","src":"10994:17:87","value":{"name":"value_1","nativeSrc":"11004:7:87","nodeType":"YulIdentifier","src":"11004:7:87"},"variableNames":[{"name":"value3","nativeSrc":"10994:6:87","nodeType":"YulIdentifier","src":"10994:6:87"}]},{"nativeSrc":"11020:59:87","nodeType":"YulAssignment","src":"11020:59:87","value":{"arguments":[{"arguments":[{"name":"headStart","nativeSrc":"11063:9:87","nodeType":"YulIdentifier","src":"11063:9:87"},{"kind":"number","nativeSrc":"11074:3:87","nodeType":"YulLiteral","src":"11074:3:87","type":"","value":"128"}],"functionName":{"name":"add","nativeSrc":"11059:3:87","nodeType":"YulIdentifier","src":"11059:3:87"},"nativeSrc":"11059:19:87","nodeType":"YulFunctionCall","src":"11059:19:87"}],"functionName":{"name":"abi_decode_uint80_fromMemory","nativeSrc":"11030:28:87","nodeType":"YulIdentifier","src":"11030:28:87"},"nativeSrc":"11030:49:87","nodeType":"YulFunctionCall","src":"11030:49:87"},"variableNames":[{"name":"value4","nativeSrc":"11020:6:87","nodeType":"YulIdentifier","src":"11020:6:87"}]}]},"name":"abi_decode_tuple_t_uint80t_int256t_uint256t_uint256t_uint80_fromMemory","nativeSrc":"10514:571:87","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nativeSrc":"10594:9:87","nodeType":"YulTypedName","src":"10594:9:87","type":""},{"name":"dataEnd","nativeSrc":"10605:7:87","nodeType":"YulTypedName","src":"10605:7:87","type":""}],"returnVariables":[{"name":"value0","nativeSrc":"10617:6:87","nodeType":"YulTypedName","src":"10617:6:87","type":""},{"name":"value1","nativeSrc":"10625:6:87","nodeType":"YulTypedName","src":"10625:6:87","type":""},{"name":"value2","nativeSrc":"10633:6:87","nodeType":"YulTypedName","src":"10633:6:87","type":""},{"name":"value3","nativeSrc":"10641:6:87","nodeType":"YulTypedName","src":"10641:6:87","type":""},{"name":"value4","nativeSrc":"10649:6:87","nodeType":"YulTypedName","src":"10649:6:87","type":""}],"src":"10514:571:87"},{"body":{"nativeSrc":"11122:95:87","nodeType":"YulBlock","src":"11122:95:87","statements":[{"expression":{"arguments":[{"kind":"number","nativeSrc":"11139:1:87","nodeType":"YulLiteral","src":"11139:1:87","type":"","value":"0"},{"arguments":[{"kind":"number","nativeSrc":"11146:3:87","nodeType":"YulLiteral","src":"11146:3:87","type":"","value":"224"},{"kind":"number","nativeSrc":"11151:10:87","nodeType":"YulLiteral","src":"11151:10:87","type":"","value":"0x4e487b71"}],"functionName":{"name":"shl","nativeSrc":"11142:3:87","nodeType":"YulIdentifier","src":"11142:3:87"},"nativeSrc":"11142:20:87","nodeType":"YulFunctionCall","src":"11142:20:87"}],"functionName":{"name":"mstore","nativeSrc":"11132:6:87","nodeType":"YulIdentifier","src":"11132:6:87"},"nativeSrc":"11132:31:87","nodeType":"YulFunctionCall","src":"11132:31:87"},"nativeSrc":"11132:31:87","nodeType":"YulExpressionStatement","src":"11132:31:87"},{"expression":{"arguments":[{"kind":"number","nativeSrc":"11179:1:87","nodeType":"YulLiteral","src":"11179:1:87","type":"","value":"4"},{"kind":"number","nativeSrc":"11182:4:87","nodeType":"YulLiteral","src":"11182:4:87","type":"","value":"0x11"}],"functionName":{"name":"mstore","nativeSrc":"11172:6:87","nodeType":"YulIdentifier","src":"11172:6:87"},"nativeSrc":"11172:15:87","nodeType":"YulFunctionCall","src":"11172:15:87"},"nativeSrc":"11172:15:87","nodeType":"YulExpressionStatement","src":"11172:15:87"},{"expression":{"arguments":[{"kind":"number","nativeSrc":"11203:1:87","nodeType":"YulLiteral","src":"11203:1:87","type":"","value":"0"},{"kind":"number","nativeSrc":"11206:4:87","nodeType":"YulLiteral","src":"11206:4:87","type":"","value":"0x24"}],"functionName":{"name":"revert","nativeSrc":"11196:6:87","nodeType":"YulIdentifier","src":"11196:6:87"},"nativeSrc":"11196:15:87","nodeType":"YulFunctionCall","src":"11196:15:87"},"nativeSrc":"11196:15:87","nodeType":"YulExpressionStatement","src":"11196:15:87"}]},"name":"panic_error_0x11","nativeSrc":"11090:127:87","nodeType":"YulFunctionDefinition","src":"11090:127:87"},{"body":{"nativeSrc":"11271:79:87","nodeType":"YulBlock","src":"11271:79:87","statements":[{"nativeSrc":"11281:17:87","nodeType":"YulAssignment","src":"11281:17:87","value":{"arguments":[{"name":"x","nativeSrc":"11293:1:87","nodeType":"YulIdentifier","src":"11293:1:87"},{"name":"y","nativeSrc":"11296:1:87","nodeType":"YulIdentifier","src":"11296:1:87"}],"functionName":{"name":"sub","nativeSrc":"11289:3:87","nodeType":"YulIdentifier","src":"11289:3:87"},"nativeSrc":"11289:9:87","nodeType":"YulFunctionCall","src":"11289:9:87"},"variableNames":[{"name":"diff","nativeSrc":"11281:4:87","nodeType":"YulIdentifier","src":"11281:4:87"}]},{"body":{"nativeSrc":"11322:22:87","nodeType":"YulBlock","src":"11322:22:87","statements":[{"expression":{"arguments":[],"functionName":{"name":"panic_error_0x11","nativeSrc":"11324:16:87","nodeType":"YulIdentifier","src":"11324:16:87"},"nativeSrc":"11324:18:87","nodeType":"YulFunctionCall","src":"11324:18:87"},"nativeSrc":"11324:18:87","nodeType":"YulExpressionStatement","src":"11324:18:87"}]},"condition":{"arguments":[{"name":"diff","nativeSrc":"11313:4:87","nodeType":"YulIdentifier","src":"11313:4:87"},{"name":"x","nativeSrc":"11319:1:87","nodeType":"YulIdentifier","src":"11319:1:87"}],"functionName":{"name":"gt","nativeSrc":"11310:2:87","nodeType":"YulIdentifier","src":"11310:2:87"},"nativeSrc":"11310:11:87","nodeType":"YulFunctionCall","src":"11310:11:87"},"nativeSrc":"11307:37:87","nodeType":"YulIf","src":"11307:37:87"}]},"name":"checked_sub_t_uint256","nativeSrc":"11222:128:87","nodeType":"YulFunctionDefinition","parameters":[{"name":"x","nativeSrc":"11253:1:87","nodeType":"YulTypedName","src":"11253:1:87","type":""},{"name":"y","nativeSrc":"11256:1:87","nodeType":"YulTypedName","src":"11256:1:87","type":""}],"returnVariables":[{"name":"diff","nativeSrc":"11262:4:87","nodeType":"YulTypedName","src":"11262:4:87","type":""}],"src":"11222:128:87"},{"body":{"nativeSrc":"11454:76:87","nodeType":"YulBlock","src":"11454:76:87","statements":[{"nativeSrc":"11464:26:87","nodeType":"YulAssignment","src":"11464:26:87","value":{"arguments":[{"name":"headStart","nativeSrc":"11476:9:87","nodeType":"YulIdentifier","src":"11476:9:87"},{"kind":"number","nativeSrc":"11487:2:87","nodeType":"YulLiteral","src":"11487:2:87","type":"","value":"32"}],"functionName":{"name":"add","nativeSrc":"11472:3:87","nodeType":"YulIdentifier","src":"11472:3:87"},"nativeSrc":"11472:18:87","nodeType":"YulFunctionCall","src":"11472:18:87"},"variableNames":[{"name":"tail","nativeSrc":"11464:4:87","nodeType":"YulIdentifier","src":"11464:4:87"}]},{"expression":{"arguments":[{"name":"headStart","nativeSrc":"11506:9:87","nodeType":"YulIdentifier","src":"11506:9:87"},{"name":"value0","nativeSrc":"11517:6:87","nodeType":"YulIdentifier","src":"11517:6:87"}],"functionName":{"name":"mstore","nativeSrc":"11499:6:87","nodeType":"YulIdentifier","src":"11499:6:87"},"nativeSrc":"11499:25:87","nodeType":"YulFunctionCall","src":"11499:25:87"},"nativeSrc":"11499:25:87","nodeType":"YulExpressionStatement","src":"11499:25:87"}]},"name":"abi_encode_tuple_t_int256__to_t_int256__fromStack_reversed","nativeSrc":"11355:175:87","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nativeSrc":"11423:9:87","nodeType":"YulTypedName","src":"11423:9:87","type":""},{"name":"value0","nativeSrc":"11434:6:87","nodeType":"YulTypedName","src":"11434:6:87","type":""}],"returnVariables":[{"name":"tail","nativeSrc":"11445:4:87","nodeType":"YulTypedName","src":"11445:4:87","type":""}],"src":"11355:175:87"},{"body":{"nativeSrc":"11614:168:87","nodeType":"YulBlock","src":"11614:168:87","statements":[{"body":{"nativeSrc":"11660:16:87","nodeType":"YulBlock","src":"11660:16:87","statements":[{"expression":{"arguments":[{"kind":"number","nativeSrc":"11669:1:87","nodeType":"YulLiteral","src":"11669:1:87","type":"","value":"0"},{"kind":"number","nativeSrc":"11672:1:87","nodeType":"YulLiteral","src":"11672:1:87","type":"","value":"0"}],"functionName":{"name":"revert","nativeSrc":"11662:6:87","nodeType":"YulIdentifier","src":"11662:6:87"},"nativeSrc":"11662:12:87","nodeType":"YulFunctionCall","src":"11662:12:87"},"nativeSrc":"11662:12:87","nodeType":"YulExpressionStatement","src":"11662:12:87"}]},"condition":{"arguments":[{"arguments":[{"name":"dataEnd","nativeSrc":"11635:7:87","nodeType":"YulIdentifier","src":"11635:7:87"},{"name":"headStart","nativeSrc":"11644:9:87","nodeType":"YulIdentifier","src":"11644:9:87"}],"functionName":{"name":"sub","nativeSrc":"11631:3:87","nodeType":"YulIdentifier","src":"11631:3:87"},"nativeSrc":"11631:23:87","nodeType":"YulFunctionCall","src":"11631:23:87"},{"kind":"number","nativeSrc":"11656:2:87","nodeType":"YulLiteral","src":"11656:2:87","type":"","value":"32"}],"functionName":{"name":"slt","nativeSrc":"11627:3:87","nodeType":"YulIdentifier","src":"11627:3:87"},"nativeSrc":"11627:32:87","nodeType":"YulFunctionCall","src":"11627:32:87"},"nativeSrc":"11624:52:87","nodeType":"YulIf","src":"11624:52:87"},{"nativeSrc":"11685:29:87","nodeType":"YulVariableDeclaration","src":"11685:29:87","value":{"arguments":[{"name":"headStart","nativeSrc":"11704:9:87","nodeType":"YulIdentifier","src":"11704:9:87"}],"functionName":{"name":"mload","nativeSrc":"11698:5:87","nodeType":"YulIdentifier","src":"11698:5:87"},"nativeSrc":"11698:16:87","nodeType":"YulFunctionCall","src":"11698:16:87"},"variables":[{"name":"value","nativeSrc":"11689:5:87","nodeType":"YulTypedName","src":"11689:5:87","type":""}]},{"expression":{"arguments":[{"name":"value","nativeSrc":"11746:5:87","nodeType":"YulIdentifier","src":"11746:5:87"}],"functionName":{"name":"validator_revert_uint8","nativeSrc":"11723:22:87","nodeType":"YulIdentifier","src":"11723:22:87"},"nativeSrc":"11723:29:87","nodeType":"YulFunctionCall","src":"11723:29:87"},"nativeSrc":"11723:29:87","nodeType":"YulExpressionStatement","src":"11723:29:87"},{"nativeSrc":"11761:15:87","nodeType":"YulAssignment","src":"11761:15:87","value":{"name":"value","nativeSrc":"11771:5:87","nodeType":"YulIdentifier","src":"11771:5:87"},"variableNames":[{"name":"value0","nativeSrc":"11761:6:87","nodeType":"YulIdentifier","src":"11761:6:87"}]}]},"name":"abi_decode_tuple_t_uint8_fromMemory","nativeSrc":"11535:247:87","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nativeSrc":"11580:9:87","nodeType":"YulTypedName","src":"11580:9:87","type":""},{"name":"dataEnd","nativeSrc":"11591:7:87","nodeType":"YulTypedName","src":"11591:7:87","type":""}],"returnVariables":[{"name":"value0","nativeSrc":"11603:6:87","nodeType":"YulTypedName","src":"11603:6:87","type":""}],"src":"11535:247:87"},{"body":{"nativeSrc":"11834:104:87","nodeType":"YulBlock","src":"11834:104:87","statements":[{"nativeSrc":"11844:39:87","nodeType":"YulAssignment","src":"11844:39:87","value":{"arguments":[{"arguments":[{"name":"x","nativeSrc":"11860:1:87","nodeType":"YulIdentifier","src":"11860:1:87"},{"kind":"number","nativeSrc":"11863:4:87","nodeType":"YulLiteral","src":"11863:4:87","type":"","value":"0xff"}],"functionName":{"name":"and","nativeSrc":"11856:3:87","nodeType":"YulIdentifier","src":"11856:3:87"},"nativeSrc":"11856:12:87","nodeType":"YulFunctionCall","src":"11856:12:87"},{"arguments":[{"name":"y","nativeSrc":"11874:1:87","nodeType":"YulIdentifier","src":"11874:1:87"},{"kind":"number","nativeSrc":"11877:4:87","nodeType":"YulLiteral","src":"11877:4:87","type":"","value":"0xff"}],"functionName":{"name":"and","nativeSrc":"11870:3:87","nodeType":"YulIdentifier","src":"11870:3:87"},"nativeSrc":"11870:12:87","nodeType":"YulFunctionCall","src":"11870:12:87"}],"functionName":{"name":"sub","nativeSrc":"11852:3:87","nodeType":"YulIdentifier","src":"11852:3:87"},"nativeSrc":"11852:31:87","nodeType":"YulFunctionCall","src":"11852:31:87"},"variableNames":[{"name":"diff","nativeSrc":"11844:4:87","nodeType":"YulIdentifier","src":"11844:4:87"}]},{"body":{"nativeSrc":"11910:22:87","nodeType":"YulBlock","src":"11910:22:87","statements":[{"expression":{"arguments":[],"functionName":{"name":"panic_error_0x11","nativeSrc":"11912:16:87","nodeType":"YulIdentifier","src":"11912:16:87"},"nativeSrc":"11912:18:87","nodeType":"YulFunctionCall","src":"11912:18:87"},"nativeSrc":"11912:18:87","nodeType":"YulExpressionStatement","src":"11912:18:87"}]},"condition":{"arguments":[{"name":"diff","nativeSrc":"11898:4:87","nodeType":"YulIdentifier","src":"11898:4:87"},{"kind":"number","nativeSrc":"11904:4:87","nodeType":"YulLiteral","src":"11904:4:87","type":"","value":"0xff"}],"functionName":{"name":"gt","nativeSrc":"11895:2:87","nodeType":"YulIdentifier","src":"11895:2:87"},"nativeSrc":"11895:14:87","nodeType":"YulFunctionCall","src":"11895:14:87"},"nativeSrc":"11892:40:87","nodeType":"YulIf","src":"11892:40:87"}]},"name":"checked_sub_t_uint8","nativeSrc":"11787:151:87","nodeType":"YulFunctionDefinition","parameters":[{"name":"x","nativeSrc":"11816:1:87","nodeType":"YulTypedName","src":"11816:1:87","type":""},{"name":"y","nativeSrc":"11819:1:87","nodeType":"YulTypedName","src":"11819:1:87","type":""}],"returnVariables":[{"name":"diff","nativeSrc":"11825:4:87","nodeType":"YulTypedName","src":"11825:4:87","type":""}],"src":"11787:151:87"},{"body":{"nativeSrc":"12012:306:87","nodeType":"YulBlock","src":"12012:306:87","statements":[{"nativeSrc":"12022:10:87","nodeType":"YulAssignment","src":"12022:10:87","value":{"kind":"number","nativeSrc":"12031:1:87","nodeType":"YulLiteral","src":"12031:1:87","type":"","value":"1"},"variableNames":[{"name":"power","nativeSrc":"12022:5:87","nodeType":"YulIdentifier","src":"12022:5:87"}]},{"nativeSrc":"12041:13:87","nodeType":"YulAssignment","src":"12041:13:87","value":{"name":"_base","nativeSrc":"12049:5:87","nodeType":"YulIdentifier","src":"12049:5:87"},"variableNames":[{"name":"base","nativeSrc":"12041:4:87","nodeType":"YulIdentifier","src":"12041:4:87"}]},{"body":{"nativeSrc":"12099:213:87","nodeType":"YulBlock","src":"12099:213:87","statements":[{"body":{"nativeSrc":"12141:22:87","nodeType":"YulBlock","src":"12141:22:87","statements":[{"expression":{"arguments":[],"functionName":{"name":"panic_error_0x11","nativeSrc":"12143:16:87","nodeType":"YulIdentifier","src":"12143:16:87"},"nativeSrc":"12143:18:87","nodeType":"YulFunctionCall","src":"12143:18:87"},"nativeSrc":"12143:18:87","nodeType":"YulExpressionStatement","src":"12143:18:87"}]},"condition":{"arguments":[{"name":"base","nativeSrc":"12119:4:87","nodeType":"YulIdentifier","src":"12119:4:87"},{"arguments":[{"name":"max","nativeSrc":"12129:3:87","nodeType":"YulIdentifier","src":"12129:3:87"},{"name":"base","nativeSrc":"12134:4:87","nodeType":"YulIdentifier","src":"12134:4:87"}],"functionName":{"name":"div","nativeSrc":"12125:3:87","nodeType":"YulIdentifier","src":"12125:3:87"},"nativeSrc":"12125:14:87","nodeType":"YulFunctionCall","src":"12125:14:87"}],"functionName":{"name":"gt","nativeSrc":"12116:2:87","nodeType":"YulIdentifier","src":"12116:2:87"},"nativeSrc":"12116:24:87","nodeType":"YulFunctionCall","src":"12116:24:87"},"nativeSrc":"12113:50:87","nodeType":"YulIf","src":"12113:50:87"},{"body":{"nativeSrc":"12196:29:87","nodeType":"YulBlock","src":"12196:29:87","statements":[{"nativeSrc":"12198:25:87","nodeType":"YulAssignment","src":"12198:25:87","value":{"arguments":[{"name":"power","nativeSrc":"12211:5:87","nodeType":"YulIdentifier","src":"12211:5:87"},{"name":"base","nativeSrc":"12218:4:87","nodeType":"YulIdentifier","src":"12218:4:87"}],"functionName":{"name":"mul","nativeSrc":"12207:3:87","nodeType":"YulIdentifier","src":"12207:3:87"},"nativeSrc":"12207:16:87","nodeType":"YulFunctionCall","src":"12207:16:87"},"variableNames":[{"name":"power","nativeSrc":"12198:5:87","nodeType":"YulIdentifier","src":"12198:5:87"}]}]},"condition":{"arguments":[{"name":"exponent","nativeSrc":"12183:8:87","nodeType":"YulIdentifier","src":"12183:8:87"},{"kind":"number","nativeSrc":"12193:1:87","nodeType":"YulLiteral","src":"12193:1:87","type":"","value":"1"}],"functionName":{"name":"and","nativeSrc":"12179:3:87","nodeType":"YulIdentifier","src":"12179:3:87"},"nativeSrc":"12179:16:87","nodeType":"YulFunctionCall","src":"12179:16:87"},"nativeSrc":"12176:49:87","nodeType":"YulIf","src":"12176:49:87"},{"nativeSrc":"12238:23:87","nodeType":"YulAssignment","src":"12238:23:87","value":{"arguments":[{"name":"base","nativeSrc":"12250:4:87","nodeType":"YulIdentifier","src":"12250:4:87"},{"name":"base","nativeSrc":"12256:4:87","nodeType":"YulIdentifier","src":"12256:4:87"}],"functionName":{"name":"mul","nativeSrc":"12246:3:87","nodeType":"YulIdentifier","src":"12246:3:87"},"nativeSrc":"12246:15:87","nodeType":"YulFunctionCall","src":"12246:15:87"},"variableNames":[{"name":"base","nativeSrc":"12238:4:87","nodeType":"YulIdentifier","src":"12238:4:87"}]},{"nativeSrc":"12274:28:87","nodeType":"YulAssignment","src":"12274:28:87","value":{"arguments":[{"kind":"number","nativeSrc":"12290:1:87","nodeType":"YulLiteral","src":"12290:1:87","type":"","value":"1"},{"name":"exponent","nativeSrc":"12293:8:87","nodeType":"YulIdentifier","src":"12293:8:87"}],"functionName":{"name":"shr","nativeSrc":"12286:3:87","nodeType":"YulIdentifier","src":"12286:3:87"},"nativeSrc":"12286:16:87","nodeType":"YulFunctionCall","src":"12286:16:87"},"variableNames":[{"name":"exponent","nativeSrc":"12274:8:87","nodeType":"YulIdentifier","src":"12274:8:87"}]}]},"condition":{"arguments":[{"name":"exponent","nativeSrc":"12074:8:87","nodeType":"YulIdentifier","src":"12074:8:87"},{"kind":"number","nativeSrc":"12084:1:87","nodeType":"YulLiteral","src":"12084:1:87","type":"","value":"1"}],"functionName":{"name":"gt","nativeSrc":"12071:2:87","nodeType":"YulIdentifier","src":"12071:2:87"},"nativeSrc":"12071:15:87","nodeType":"YulFunctionCall","src":"12071:15:87"},"nativeSrc":"12063:249:87","nodeType":"YulForLoop","post":{"nativeSrc":"12087:3:87","nodeType":"YulBlock","src":"12087:3:87","statements":[]},"pre":{"nativeSrc":"12067:3:87","nodeType":"YulBlock","src":"12067:3:87","statements":[]},"src":"12063:249:87"}]},"name":"checked_exp_helper","nativeSrc":"11943:375:87","nodeType":"YulFunctionDefinition","parameters":[{"name":"_base","nativeSrc":"11971:5:87","nodeType":"YulTypedName","src":"11971:5:87","type":""},{"name":"exponent","nativeSrc":"11978:8:87","nodeType":"YulTypedName","src":"11978:8:87","type":""},{"name":"max","nativeSrc":"11988:3:87","nodeType":"YulTypedName","src":"11988:3:87","type":""}],"returnVariables":[{"name":"power","nativeSrc":"11996:5:87","nodeType":"YulTypedName","src":"11996:5:87","type":""},{"name":"base","nativeSrc":"12003:4:87","nodeType":"YulTypedName","src":"12003:4:87","type":""}],"src":"11943:375:87"},{"body":{"nativeSrc":"12382:843:87","nodeType":"YulBlock","src":"12382:843:87","statements":[{"body":{"nativeSrc":"12420:52:87","nodeType":"YulBlock","src":"12420:52:87","statements":[{"nativeSrc":"12434:10:87","nodeType":"YulAssignment","src":"12434:10:87","value":{"kind":"number","nativeSrc":"12443:1:87","nodeType":"YulLiteral","src":"12443:1:87","type":"","value":"1"},"variableNames":[{"name":"power","nativeSrc":"12434:5:87","nodeType":"YulIdentifier","src":"12434:5:87"}]},{"nativeSrc":"12457:5:87","nodeType":"YulLeave","src":"12457:5:87"}]},"condition":{"arguments":[{"name":"exponent","nativeSrc":"12402:8:87","nodeType":"YulIdentifier","src":"12402:8:87"}],"functionName":{"name":"iszero","nativeSrc":"12395:6:87","nodeType":"YulIdentifier","src":"12395:6:87"},"nativeSrc":"12395:16:87","nodeType":"YulFunctionCall","src":"12395:16:87"},"nativeSrc":"12392:80:87","nodeType":"YulIf","src":"12392:80:87"},{"body":{"nativeSrc":"12505:52:87","nodeType":"YulBlock","src":"12505:52:87","statements":[{"nativeSrc":"12519:10:87","nodeType":"YulAssignment","src":"12519:10:87","value":{"kind":"number","nativeSrc":"12528:1:87","nodeType":"YulLiteral","src":"12528:1:87","type":"","value":"0"},"variableNames":[{"name":"power","nativeSrc":"12519:5:87","nodeType":"YulIdentifier","src":"12519:5:87"}]},{"nativeSrc":"12542:5:87","nodeType":"YulLeave","src":"12542:5:87"}]},"condition":{"arguments":[{"name":"base","nativeSrc":"12491:4:87","nodeType":"YulIdentifier","src":"12491:4:87"}],"functionName":{"name":"iszero","nativeSrc":"12484:6:87","nodeType":"YulIdentifier","src":"12484:6:87"},"nativeSrc":"12484:12:87","nodeType":"YulFunctionCall","src":"12484:12:87"},"nativeSrc":"12481:76:87","nodeType":"YulIf","src":"12481:76:87"},{"cases":[{"body":{"nativeSrc":"12593:52:87","nodeType":"YulBlock","src":"12593:52:87","statements":[{"nativeSrc":"12607:10:87","nodeType":"YulAssignment","src":"12607:10:87","value":{"kind":"number","nativeSrc":"12616:1:87","nodeType":"YulLiteral","src":"12616:1:87","type":"","value":"1"},"variableNames":[{"name":"power","nativeSrc":"12607:5:87","nodeType":"YulIdentifier","src":"12607:5:87"}]},{"nativeSrc":"12630:5:87","nodeType":"YulLeave","src":"12630:5:87"}]},"nativeSrc":"12586:59:87","nodeType":"YulCase","src":"12586:59:87","value":{"kind":"number","nativeSrc":"12591:1:87","nodeType":"YulLiteral","src":"12591:1:87","type":"","value":"1"}},{"body":{"nativeSrc":"12661:167:87","nodeType":"YulBlock","src":"12661:167:87","statements":[{"body":{"nativeSrc":"12696:22:87","nodeType":"YulBlock","src":"12696:22:87","statements":[{"expression":{"arguments":[],"functionName":{"name":"panic_error_0x11","nativeSrc":"12698:16:87","nodeType":"YulIdentifier","src":"12698:16:87"},"nativeSrc":"12698:18:87","nodeType":"YulFunctionCall","src":"12698:18:87"},"nativeSrc":"12698:18:87","nodeType":"YulExpressionStatement","src":"12698:18:87"}]},"condition":{"arguments":[{"name":"exponent","nativeSrc":"12681:8:87","nodeType":"YulIdentifier","src":"12681:8:87"},{"kind":"number","nativeSrc":"12691:3:87","nodeType":"YulLiteral","src":"12691:3:87","type":"","value":"255"}],"functionName":{"name":"gt","nativeSrc":"12678:2:87","nodeType":"YulIdentifier","src":"12678:2:87"},"nativeSrc":"12678:17:87","nodeType":"YulFunctionCall","src":"12678:17:87"},"nativeSrc":"12675:43:87","nodeType":"YulIf","src":"12675:43:87"},{"nativeSrc":"12731:25:87","nodeType":"YulAssignment","src":"12731:25:87","value":{"arguments":[{"name":"exponent","nativeSrc":"12744:8:87","nodeType":"YulIdentifier","src":"12744:8:87"},{"kind":"number","nativeSrc":"12754:1:87","nodeType":"YulLiteral","src":"12754:1:87","type":"","value":"1"}],"functionName":{"name":"shl","nativeSrc":"12740:3:87","nodeType":"YulIdentifier","src":"12740:3:87"},"nativeSrc":"12740:16:87","nodeType":"YulFunctionCall","src":"12740:16:87"},"variableNames":[{"name":"power","nativeSrc":"12731:5:87","nodeType":"YulIdentifier","src":"12731:5:87"}]},{"nativeSrc":"12769:11:87","nodeType":"YulVariableDeclaration","src":"12769:11:87","value":{"kind":"number","nativeSrc":"12779:1:87","nodeType":"YulLiteral","src":"12779:1:87","type":"","value":"0"},"variables":[{"name":"_1","nativeSrc":"12773:2:87","nodeType":"YulTypedName","src":"12773:2:87","type":""}]},{"nativeSrc":"12793:7:87","nodeType":"YulAssignment","src":"12793:7:87","value":{"kind":"number","nativeSrc":"12799:1:87","nodeType":"YulLiteral","src":"12799:1:87","type":"","value":"0"},"variableNames":[{"name":"_1","nativeSrc":"12793:2:87","nodeType":"YulIdentifier","src":"12793:2:87"}]},{"nativeSrc":"12813:5:87","nodeType":"YulLeave","src":"12813:5:87"}]},"nativeSrc":"12654:174:87","nodeType":"YulCase","src":"12654:174:87","value":{"kind":"number","nativeSrc":"12659:1:87","nodeType":"YulLiteral","src":"12659:1:87","type":"","value":"2"}}],"expression":{"name":"base","nativeSrc":"12573:4:87","nodeType":"YulIdentifier","src":"12573:4:87"},"nativeSrc":"12566:262:87","nodeType":"YulSwitch","src":"12566:262:87"},{"body":{"nativeSrc":"12926:114:87","nodeType":"YulBlock","src":"12926:114:87","statements":[{"nativeSrc":"12940:28:87","nodeType":"YulAssignment","src":"12940:28:87","value":{"arguments":[{"name":"base","nativeSrc":"12953:4:87","nodeType":"YulIdentifier","src":"12953:4:87"},{"name":"exponent","nativeSrc":"12959:8:87","nodeType":"YulIdentifier","src":"12959:8:87"}],"functionName":{"name":"exp","nativeSrc":"12949:3:87","nodeType":"YulIdentifier","src":"12949:3:87"},"nativeSrc":"12949:19:87","nodeType":"YulFunctionCall","src":"12949:19:87"},"variableNames":[{"name":"power","nativeSrc":"12940:5:87","nodeType":"YulIdentifier","src":"12940:5:87"}]},{"nativeSrc":"12981:11:87","nodeType":"YulVariableDeclaration","src":"12981:11:87","value":{"kind":"number","nativeSrc":"12991:1:87","nodeType":"YulLiteral","src":"12991:1:87","type":"","value":"0"},"variables":[{"name":"_2","nativeSrc":"12985:2:87","nodeType":"YulTypedName","src":"12985:2:87","type":""}]},{"nativeSrc":"13005:7:87","nodeType":"YulAssignment","src":"13005:7:87","value":{"kind":"number","nativeSrc":"13011:1:87","nodeType":"YulLiteral","src":"13011:1:87","type":"","value":"0"},"variableNames":[{"name":"_2","nativeSrc":"13005:2:87","nodeType":"YulIdentifier","src":"13005:2:87"}]},{"nativeSrc":"13025:5:87","nodeType":"YulLeave","src":"13025:5:87"}]},"condition":{"arguments":[{"arguments":[{"arguments":[{"name":"base","nativeSrc":"12850:4:87","nodeType":"YulIdentifier","src":"12850:4:87"},{"kind":"number","nativeSrc":"12856:2:87","nodeType":"YulLiteral","src":"12856:2:87","type":"","value":"11"}],"functionName":{"name":"lt","nativeSrc":"12847:2:87","nodeType":"YulIdentifier","src":"12847:2:87"},"nativeSrc":"12847:12:87","nodeType":"YulFunctionCall","src":"12847:12:87"},{"arguments":[{"name":"exponent","nativeSrc":"12864:8:87","nodeType":"YulIdentifier","src":"12864:8:87"},{"kind":"number","nativeSrc":"12874:2:87","nodeType":"YulLiteral","src":"12874:2:87","type":"","value":"78"}],"functionName":{"name":"lt","nativeSrc":"12861:2:87","nodeType":"YulIdentifier","src":"12861:2:87"},"nativeSrc":"12861:16:87","nodeType":"YulFunctionCall","src":"12861:16:87"}],"functionName":{"name":"and","nativeSrc":"12843:3:87","nodeType":"YulIdentifier","src":"12843:3:87"},"nativeSrc":"12843:35:87","nodeType":"YulFunctionCall","src":"12843:35:87"},{"arguments":[{"arguments":[{"name":"base","nativeSrc":"12887:4:87","nodeType":"YulIdentifier","src":"12887:4:87"},{"kind":"number","nativeSrc":"12893:3:87","nodeType":"YulLiteral","src":"12893:3:87","type":"","value":"307"}],"functionName":{"name":"lt","nativeSrc":"12884:2:87","nodeType":"YulIdentifier","src":"12884:2:87"},"nativeSrc":"12884:13:87","nodeType":"YulFunctionCall","src":"12884:13:87"},{"arguments":[{"name":"exponent","nativeSrc":"12902:8:87","nodeType":"YulIdentifier","src":"12902:8:87"},{"kind":"number","nativeSrc":"12912:2:87","nodeType":"YulLiteral","src":"12912:2:87","type":"","value":"32"}],"functionName":{"name":"lt","nativeSrc":"12899:2:87","nodeType":"YulIdentifier","src":"12899:2:87"},"nativeSrc":"12899:16:87","nodeType":"YulFunctionCall","src":"12899:16:87"}],"functionName":{"name":"and","nativeSrc":"12880:3:87","nodeType":"YulIdentifier","src":"12880:3:87"},"nativeSrc":"12880:36:87","nodeType":"YulFunctionCall","src":"12880:36:87"}],"functionName":{"name":"or","nativeSrc":"12840:2:87","nodeType":"YulIdentifier","src":"12840:2:87"},"nativeSrc":"12840:77:87","nodeType":"YulFunctionCall","src":"12840:77:87"},"nativeSrc":"12837:203:87","nodeType":"YulIf","src":"12837:203:87"},{"nativeSrc":"13049:65:87","nodeType":"YulVariableDeclaration","src":"13049:65:87","value":{"arguments":[{"name":"base","nativeSrc":"13091:4:87","nodeType":"YulIdentifier","src":"13091:4:87"},{"name":"exponent","nativeSrc":"13097:8:87","nodeType":"YulIdentifier","src":"13097:8:87"},{"arguments":[{"kind":"number","nativeSrc":"13111:1:87","nodeType":"YulLiteral","src":"13111:1:87","type":"","value":"0"}],"functionName":{"name":"not","nativeSrc":"13107:3:87","nodeType":"YulIdentifier","src":"13107:3:87"},"nativeSrc":"13107:6:87","nodeType":"YulFunctionCall","src":"13107:6:87"}],"functionName":{"name":"checked_exp_helper","nativeSrc":"13072:18:87","nodeType":"YulIdentifier","src":"13072:18:87"},"nativeSrc":"13072:42:87","nodeType":"YulFunctionCall","src":"13072:42:87"},"variables":[{"name":"power_1","nativeSrc":"13053:7:87","nodeType":"YulTypedName","src":"13053:7:87","type":""},{"name":"base_1","nativeSrc":"13062:6:87","nodeType":"YulTypedName","src":"13062:6:87","type":""}]},{"body":{"nativeSrc":"13159:22:87","nodeType":"YulBlock","src":"13159:22:87","statements":[{"expression":{"arguments":[],"functionName":{"name":"panic_error_0x11","nativeSrc":"13161:16:87","nodeType":"YulIdentifier","src":"13161:16:87"},"nativeSrc":"13161:18:87","nodeType":"YulFunctionCall","src":"13161:18:87"},"nativeSrc":"13161:18:87","nodeType":"YulExpressionStatement","src":"13161:18:87"}]},"condition":{"arguments":[{"name":"power_1","nativeSrc":"13129:7:87","nodeType":"YulIdentifier","src":"13129:7:87"},{"arguments":[{"arguments":[{"kind":"number","nativeSrc":"13146:1:87","nodeType":"YulLiteral","src":"13146:1:87","type":"","value":"0"}],"functionName":{"name":"not","nativeSrc":"13142:3:87","nodeType":"YulIdentifier","src":"13142:3:87"},"nativeSrc":"13142:6:87","nodeType":"YulFunctionCall","src":"13142:6:87"},{"name":"base_1","nativeSrc":"13150:6:87","nodeType":"YulIdentifier","src":"13150:6:87"}],"functionName":{"name":"div","nativeSrc":"13138:3:87","nodeType":"YulIdentifier","src":"13138:3:87"},"nativeSrc":"13138:19:87","nodeType":"YulFunctionCall","src":"13138:19:87"}],"functionName":{"name":"gt","nativeSrc":"13126:2:87","nodeType":"YulIdentifier","src":"13126:2:87"},"nativeSrc":"13126:32:87","nodeType":"YulFunctionCall","src":"13126:32:87"},"nativeSrc":"13123:58:87","nodeType":"YulIf","src":"13123:58:87"},{"nativeSrc":"13190:29:87","nodeType":"YulAssignment","src":"13190:29:87","value":{"arguments":[{"name":"power_1","nativeSrc":"13203:7:87","nodeType":"YulIdentifier","src":"13203:7:87"},{"name":"base_1","nativeSrc":"13212:6:87","nodeType":"YulIdentifier","src":"13212:6:87"}],"functionName":{"name":"mul","nativeSrc":"13199:3:87","nodeType":"YulIdentifier","src":"13199:3:87"},"nativeSrc":"13199:20:87","nodeType":"YulFunctionCall","src":"13199:20:87"},"variableNames":[{"name":"power","nativeSrc":"13190:5:87","nodeType":"YulIdentifier","src":"13190:5:87"}]}]},"name":"checked_exp_unsigned","nativeSrc":"12323:902:87","nodeType":"YulFunctionDefinition","parameters":[{"name":"base","nativeSrc":"12353:4:87","nodeType":"YulTypedName","src":"12353:4:87","type":""},{"name":"exponent","nativeSrc":"12359:8:87","nodeType":"YulTypedName","src":"12359:8:87","type":""}],"returnVariables":[{"name":"power","nativeSrc":"12372:5:87","nodeType":"YulTypedName","src":"12372:5:87","type":""}],"src":"12323:902:87"},{"body":{"nativeSrc":"13298:72:87","nodeType":"YulBlock","src":"13298:72:87","statements":[{"nativeSrc":"13308:56:87","nodeType":"YulAssignment","src":"13308:56:87","value":{"arguments":[{"name":"base","nativeSrc":"13338:4:87","nodeType":"YulIdentifier","src":"13338:4:87"},{"arguments":[{"name":"exponent","nativeSrc":"13348:8:87","nodeType":"YulIdentifier","src":"13348:8:87"},{"kind":"number","nativeSrc":"13358:4:87","nodeType":"YulLiteral","src":"13358:4:87","type":"","value":"0xff"}],"functionName":{"name":"and","nativeSrc":"13344:3:87","nodeType":"YulIdentifier","src":"13344:3:87"},"nativeSrc":"13344:19:87","nodeType":"YulFunctionCall","src":"13344:19:87"}],"functionName":{"name":"checked_exp_unsigned","nativeSrc":"13317:20:87","nodeType":"YulIdentifier","src":"13317:20:87"},"nativeSrc":"13317:47:87","nodeType":"YulFunctionCall","src":"13317:47:87"},"variableNames":[{"name":"power","nativeSrc":"13308:5:87","nodeType":"YulIdentifier","src":"13308:5:87"}]}]},"name":"checked_exp_t_uint256_t_uint8","nativeSrc":"13230:140:87","nodeType":"YulFunctionDefinition","parameters":[{"name":"base","nativeSrc":"13269:4:87","nodeType":"YulTypedName","src":"13269:4:87","type":""},{"name":"exponent","nativeSrc":"13275:8:87","nodeType":"YulTypedName","src":"13275:8:87","type":""}],"returnVariables":[{"name":"power","nativeSrc":"13288:5:87","nodeType":"YulTypedName","src":"13288:5:87","type":""}],"src":"13230:140:87"},{"body":{"nativeSrc":"13427:116:87","nodeType":"YulBlock","src":"13427:116:87","statements":[{"nativeSrc":"13437:20:87","nodeType":"YulAssignment","src":"13437:20:87","value":{"arguments":[{"name":"x","nativeSrc":"13452:1:87","nodeType":"YulIdentifier","src":"13452:1:87"},{"name":"y","nativeSrc":"13455:1:87","nodeType":"YulIdentifier","src":"13455:1:87"}],"functionName":{"name":"mul","nativeSrc":"13448:3:87","nodeType":"YulIdentifier","src":"13448:3:87"},"nativeSrc":"13448:9:87","nodeType":"YulFunctionCall","src":"13448:9:87"},"variableNames":[{"name":"product","nativeSrc":"13437:7:87","nodeType":"YulIdentifier","src":"13437:7:87"}]},{"body":{"nativeSrc":"13515:22:87","nodeType":"YulBlock","src":"13515:22:87","statements":[{"expression":{"arguments":[],"functionName":{"name":"panic_error_0x11","nativeSrc":"13517:16:87","nodeType":"YulIdentifier","src":"13517:16:87"},"nativeSrc":"13517:18:87","nodeType":"YulFunctionCall","src":"13517:18:87"},"nativeSrc":"13517:18:87","nodeType":"YulExpressionStatement","src":"13517:18:87"}]},"condition":{"arguments":[{"arguments":[{"arguments":[{"name":"x","nativeSrc":"13486:1:87","nodeType":"YulIdentifier","src":"13486:1:87"}],"functionName":{"name":"iszero","nativeSrc":"13479:6:87","nodeType":"YulIdentifier","src":"13479:6:87"},"nativeSrc":"13479:9:87","nodeType":"YulFunctionCall","src":"13479:9:87"},{"arguments":[{"name":"y","nativeSrc":"13493:1:87","nodeType":"YulIdentifier","src":"13493:1:87"},{"arguments":[{"name":"product","nativeSrc":"13500:7:87","nodeType":"YulIdentifier","src":"13500:7:87"},{"name":"x","nativeSrc":"13509:1:87","nodeType":"YulIdentifier","src":"13509:1:87"}],"functionName":{"name":"div","nativeSrc":"13496:3:87","nodeType":"YulIdentifier","src":"13496:3:87"},"nativeSrc":"13496:15:87","nodeType":"YulFunctionCall","src":"13496:15:87"}],"functionName":{"name":"eq","nativeSrc":"13490:2:87","nodeType":"YulIdentifier","src":"13490:2:87"},"nativeSrc":"13490:22:87","nodeType":"YulFunctionCall","src":"13490:22:87"}],"functionName":{"name":"or","nativeSrc":"13476:2:87","nodeType":"YulIdentifier","src":"13476:2:87"},"nativeSrc":"13476:37:87","nodeType":"YulFunctionCall","src":"13476:37:87"}],"functionName":{"name":"iszero","nativeSrc":"13469:6:87","nodeType":"YulIdentifier","src":"13469:6:87"},"nativeSrc":"13469:45:87","nodeType":"YulFunctionCall","src":"13469:45:87"},"nativeSrc":"13466:71:87","nodeType":"YulIf","src":"13466:71:87"}]},"name":"checked_mul_t_uint256","nativeSrc":"13375:168:87","nodeType":"YulFunctionDefinition","parameters":[{"name":"x","nativeSrc":"13406:1:87","nodeType":"YulTypedName","src":"13406:1:87","type":""},{"name":"y","nativeSrc":"13409:1:87","nodeType":"YulTypedName","src":"13409:1:87","type":""}],"returnVariables":[{"name":"product","nativeSrc":"13415:7:87","nodeType":"YulTypedName","src":"13415:7:87","type":""}],"src":"13375:168:87"},{"body":{"nativeSrc":"13580:95:87","nodeType":"YulBlock","src":"13580:95:87","statements":[{"expression":{"arguments":[{"kind":"number","nativeSrc":"13597:1:87","nodeType":"YulLiteral","src":"13597:1:87","type":"","value":"0"},{"arguments":[{"kind":"number","nativeSrc":"13604:3:87","nodeType":"YulLiteral","src":"13604:3:87","type":"","value":"224"},{"kind":"number","nativeSrc":"13609:10:87","nodeType":"YulLiteral","src":"13609:10:87","type":"","value":"0x4e487b71"}],"functionName":{"name":"shl","nativeSrc":"13600:3:87","nodeType":"YulIdentifier","src":"13600:3:87"},"nativeSrc":"13600:20:87","nodeType":"YulFunctionCall","src":"13600:20:87"}],"functionName":{"name":"mstore","nativeSrc":"13590:6:87","nodeType":"YulIdentifier","src":"13590:6:87"},"nativeSrc":"13590:31:87","nodeType":"YulFunctionCall","src":"13590:31:87"},"nativeSrc":"13590:31:87","nodeType":"YulExpressionStatement","src":"13590:31:87"},{"expression":{"arguments":[{"kind":"number","nativeSrc":"13637:1:87","nodeType":"YulLiteral","src":"13637:1:87","type":"","value":"4"},{"kind":"number","nativeSrc":"13640:4:87","nodeType":"YulLiteral","src":"13640:4:87","type":"","value":"0x12"}],"functionName":{"name":"mstore","nativeSrc":"13630:6:87","nodeType":"YulIdentifier","src":"13630:6:87"},"nativeSrc":"13630:15:87","nodeType":"YulFunctionCall","src":"13630:15:87"},"nativeSrc":"13630:15:87","nodeType":"YulExpressionStatement","src":"13630:15:87"},{"expression":{"arguments":[{"kind":"number","nativeSrc":"13661:1:87","nodeType":"YulLiteral","src":"13661:1:87","type":"","value":"0"},{"kind":"number","nativeSrc":"13664:4:87","nodeType":"YulLiteral","src":"13664:4:87","type":"","value":"0x24"}],"functionName":{"name":"revert","nativeSrc":"13654:6:87","nodeType":"YulIdentifier","src":"13654:6:87"},"nativeSrc":"13654:15:87","nodeType":"YulFunctionCall","src":"13654:15:87"},"nativeSrc":"13654:15:87","nodeType":"YulExpressionStatement","src":"13654:15:87"}]},"name":"panic_error_0x12","nativeSrc":"13548:127:87","nodeType":"YulFunctionDefinition","src":"13548:127:87"},{"body":{"nativeSrc":"13735:325:87","nodeType":"YulBlock","src":"13735:325:87","statements":[{"nativeSrc":"13745:22:87","nodeType":"YulAssignment","src":"13745:22:87","value":{"arguments":[{"kind":"number","nativeSrc":"13759:1:87","nodeType":"YulLiteral","src":"13759:1:87","type":"","value":"1"},{"name":"data","nativeSrc":"13762:4:87","nodeType":"YulIdentifier","src":"13762:4:87"}],"functionName":{"name":"shr","nativeSrc":"13755:3:87","nodeType":"YulIdentifier","src":"13755:3:87"},"nativeSrc":"13755:12:87","nodeType":"YulFunctionCall","src":"13755:12:87"},"variableNames":[{"name":"length","nativeSrc":"13745:6:87","nodeType":"YulIdentifier","src":"13745:6:87"}]},{"nativeSrc":"13776:38:87","nodeType":"YulVariableDeclaration","src":"13776:38:87","value":{"arguments":[{"name":"data","nativeSrc":"13806:4:87","nodeType":"YulIdentifier","src":"13806:4:87"},{"kind":"number","nativeSrc":"13812:1:87","nodeType":"YulLiteral","src":"13812:1:87","type":"","value":"1"}],"functionName":{"name":"and","nativeSrc":"13802:3:87","nodeType":"YulIdentifier","src":"13802:3:87"},"nativeSrc":"13802:12:87","nodeType":"YulFunctionCall","src":"13802:12:87"},"variables":[{"name":"outOfPlaceEncoding","nativeSrc":"13780:18:87","nodeType":"YulTypedName","src":"13780:18:87","type":""}]},{"body":{"nativeSrc":"13853:31:87","nodeType":"YulBlock","src":"13853:31:87","statements":[{"nativeSrc":"13855:27:87","nodeType":"YulAssignment","src":"13855:27:87","value":{"arguments":[{"name":"length","nativeSrc":"13869:6:87","nodeType":"YulIdentifier","src":"13869:6:87"},{"kind":"number","nativeSrc":"13877:4:87","nodeType":"YulLiteral","src":"13877:4:87","type":"","value":"0x7f"}],"functionName":{"name":"and","nativeSrc":"13865:3:87","nodeType":"YulIdentifier","src":"13865:3:87"},"nativeSrc":"13865:17:87","nodeType":"YulFunctionCall","src":"13865:17:87"},"variableNames":[{"name":"length","nativeSrc":"13855:6:87","nodeType":"YulIdentifier","src":"13855:6:87"}]}]},"condition":{"arguments":[{"name":"outOfPlaceEncoding","nativeSrc":"13833:18:87","nodeType":"YulIdentifier","src":"13833:18:87"}],"functionName":{"name":"iszero","nativeSrc":"13826:6:87","nodeType":"YulIdentifier","src":"13826:6:87"},"nativeSrc":"13826:26:87","nodeType":"YulFunctionCall","src":"13826:26:87"},"nativeSrc":"13823:61:87","nodeType":"YulIf","src":"13823:61:87"},{"body":{"nativeSrc":"13943:111:87","nodeType":"YulBlock","src":"13943:111:87","statements":[{"expression":{"arguments":[{"kind":"number","nativeSrc":"13964:1:87","nodeType":"YulLiteral","src":"13964:1:87","type":"","value":"0"},{"arguments":[{"kind":"number","nativeSrc":"13971:3:87","nodeType":"YulLiteral","src":"13971:3:87","type":"","value":"224"},{"kind":"number","nativeSrc":"13976:10:87","nodeType":"YulLiteral","src":"13976:10:87","type":"","value":"0x4e487b71"}],"functionName":{"name":"shl","nativeSrc":"13967:3:87","nodeType":"YulIdentifier","src":"13967:3:87"},"nativeSrc":"13967:20:87","nodeType":"YulFunctionCall","src":"13967:20:87"}],"functionName":{"name":"mstore","nativeSrc":"13957:6:87","nodeType":"YulIdentifier","src":"13957:6:87"},"nativeSrc":"13957:31:87","nodeType":"YulFunctionCall","src":"13957:31:87"},"nativeSrc":"13957:31:87","nodeType":"YulExpressionStatement","src":"13957:31:87"},{"expression":{"arguments":[{"kind":"number","nativeSrc":"14008:1:87","nodeType":"YulLiteral","src":"14008:1:87","type":"","value":"4"},{"kind":"number","nativeSrc":"14011:4:87","nodeType":"YulLiteral","src":"14011:4:87","type":"","value":"0x22"}],"functionName":{"name":"mstore","nativeSrc":"14001:6:87","nodeType":"YulIdentifier","src":"14001:6:87"},"nativeSrc":"14001:15:87","nodeType":"YulFunctionCall","src":"14001:15:87"},"nativeSrc":"14001:15:87","nodeType":"YulExpressionStatement","src":"14001:15:87"},{"expression":{"arguments":[{"kind":"number","nativeSrc":"14036:1:87","nodeType":"YulLiteral","src":"14036:1:87","type":"","value":"0"},{"kind":"number","nativeSrc":"14039:4:87","nodeType":"YulLiteral","src":"14039:4:87","type":"","value":"0x24"}],"functionName":{"name":"revert","nativeSrc":"14029:6:87","nodeType":"YulIdentifier","src":"14029:6:87"},"nativeSrc":"14029:15:87","nodeType":"YulFunctionCall","src":"14029:15:87"},"nativeSrc":"14029:15:87","nodeType":"YulExpressionStatement","src":"14029:15:87"}]},"condition":{"arguments":[{"name":"outOfPlaceEncoding","nativeSrc":"13899:18:87","nodeType":"YulIdentifier","src":"13899:18:87"},{"arguments":[{"name":"length","nativeSrc":"13922:6:87","nodeType":"YulIdentifier","src":"13922:6:87"},{"kind":"number","nativeSrc":"13930:2:87","nodeType":"YulLiteral","src":"13930:2:87","type":"","value":"32"}],"functionName":{"name":"lt","nativeSrc":"13919:2:87","nodeType":"YulIdentifier","src":"13919:2:87"},"nativeSrc":"13919:14:87","nodeType":"YulFunctionCall","src":"13919:14:87"}],"functionName":{"name":"eq","nativeSrc":"13896:2:87","nodeType":"YulIdentifier","src":"13896:2:87"},"nativeSrc":"13896:38:87","nodeType":"YulFunctionCall","src":"13896:38:87"},"nativeSrc":"13893:161:87","nodeType":"YulIf","src":"13893:161:87"}]},"name":"extract_byte_array_length","nativeSrc":"13680:380:87","nodeType":"YulFunctionDefinition","parameters":[{"name":"data","nativeSrc":"13715:4:87","nodeType":"YulTypedName","src":"13715:4:87","type":""}],"returnVariables":[{"name":"length","nativeSrc":"13724:6:87","nodeType":"YulTypedName","src":"13724:6:87","type":""}],"src":"13680:380:87"},{"body":{"nativeSrc":"14128:420:87","nodeType":"YulBlock","src":"14128:420:87","statements":[{"body":{"nativeSrc":"14177:16:87","nodeType":"YulBlock","src":"14177:16:87","statements":[{"expression":{"arguments":[{"kind":"number","nativeSrc":"14186:1:87","nodeType":"YulLiteral","src":"14186:1:87","type":"","value":"0"},{"kind":"number","nativeSrc":"14189:1:87","nodeType":"YulLiteral","src":"14189:1:87","type":"","value":"0"}],"functionName":{"name":"revert","nativeSrc":"14179:6:87","nodeType":"YulIdentifier","src":"14179:6:87"},"nativeSrc":"14179:12:87","nodeType":"YulFunctionCall","src":"14179:12:87"},"nativeSrc":"14179:12:87","nodeType":"YulExpressionStatement","src":"14179:12:87"}]},"condition":{"arguments":[{"arguments":[{"arguments":[{"name":"offset","nativeSrc":"14156:6:87","nodeType":"YulIdentifier","src":"14156:6:87"},{"kind":"number","nativeSrc":"14164:4:87","nodeType":"YulLiteral","src":"14164:4:87","type":"","value":"0x1f"}],"functionName":{"name":"add","nativeSrc":"14152:3:87","nodeType":"YulIdentifier","src":"14152:3:87"},"nativeSrc":"14152:17:87","nodeType":"YulFunctionCall","src":"14152:17:87"},{"name":"end","nativeSrc":"14171:3:87","nodeType":"YulIdentifier","src":"14171:3:87"}],"functionName":{"name":"slt","nativeSrc":"14148:3:87","nodeType":"YulIdentifier","src":"14148:3:87"},"nativeSrc":"14148:27:87","nodeType":"YulFunctionCall","src":"14148:27:87"}],"functionName":{"name":"iszero","nativeSrc":"14141:6:87","nodeType":"YulIdentifier","src":"14141:6:87"},"nativeSrc":"14141:35:87","nodeType":"YulFunctionCall","src":"14141:35:87"},"nativeSrc":"14138:55:87","nodeType":"YulIf","src":"14138:55:87"},{"nativeSrc":"14202:27:87","nodeType":"YulVariableDeclaration","src":"14202:27:87","value":{"arguments":[{"name":"offset","nativeSrc":"14222:6:87","nodeType":"YulIdentifier","src":"14222:6:87"}],"functionName":{"name":"mload","nativeSrc":"14216:5:87","nodeType":"YulIdentifier","src":"14216:5:87"},"nativeSrc":"14216:13:87","nodeType":"YulFunctionCall","src":"14216:13:87"},"variables":[{"name":"length","nativeSrc":"14206:6:87","nodeType":"YulTypedName","src":"14206:6:87","type":""}]},{"nativeSrc":"14238:67:87","nodeType":"YulVariableDeclaration","src":"14238:67:87","value":{"arguments":[{"arguments":[{"name":"length","nativeSrc":"14297:6:87","nodeType":"YulIdentifier","src":"14297:6:87"}],"functionName":{"name":"array_allocation_size_bytes","nativeSrc":"14269:27:87","nodeType":"YulIdentifier","src":"14269:27:87"},"nativeSrc":"14269:35:87","nodeType":"YulFunctionCall","src":"14269:35:87"}],"functionName":{"name":"allocate_memory","nativeSrc":"14253:15:87","nodeType":"YulIdentifier","src":"14253:15:87"},"nativeSrc":"14253:52:87","nodeType":"YulFunctionCall","src":"14253:52:87"},"variables":[{"name":"array_1","nativeSrc":"14242:7:87","nodeType":"YulTypedName","src":"14242:7:87","type":""}]},{"expression":{"arguments":[{"name":"array_1","nativeSrc":"14321:7:87","nodeType":"YulIdentifier","src":"14321:7:87"},{"name":"length","nativeSrc":"14330:6:87","nodeType":"YulIdentifier","src":"14330:6:87"}],"functionName":{"name":"mstore","nativeSrc":"14314:6:87","nodeType":"YulIdentifier","src":"14314:6:87"},"nativeSrc":"14314:23:87","nodeType":"YulFunctionCall","src":"14314:23:87"},"nativeSrc":"14314:23:87","nodeType":"YulExpressionStatement","src":"14314:23:87"},{"body":{"nativeSrc":"14389:16:87","nodeType":"YulBlock","src":"14389:16:87","statements":[{"expression":{"arguments":[{"kind":"number","nativeSrc":"14398:1:87","nodeType":"YulLiteral","src":"14398:1:87","type":"","value":"0"},{"kind":"number","nativeSrc":"14401:1:87","nodeType":"YulLiteral","src":"14401:1:87","type":"","value":"0"}],"functionName":{"name":"revert","nativeSrc":"14391:6:87","nodeType":"YulIdentifier","src":"14391:6:87"},"nativeSrc":"14391:12:87","nodeType":"YulFunctionCall","src":"14391:12:87"},"nativeSrc":"14391:12:87","nodeType":"YulExpressionStatement","src":"14391:12:87"}]},"condition":{"arguments":[{"arguments":[{"arguments":[{"name":"offset","nativeSrc":"14360:6:87","nodeType":"YulIdentifier","src":"14360:6:87"},{"name":"length","nativeSrc":"14368:6:87","nodeType":"YulIdentifier","src":"14368:6:87"}],"functionName":{"name":"add","nativeSrc":"14356:3:87","nodeType":"YulIdentifier","src":"14356:3:87"},"nativeSrc":"14356:19:87","nodeType":"YulFunctionCall","src":"14356:19:87"},{"kind":"number","nativeSrc":"14377:4:87","nodeType":"YulLiteral","src":"14377:4:87","type":"","value":"0x20"}],"functionName":{"name":"add","nativeSrc":"14352:3:87","nodeType":"YulIdentifier","src":"14352:3:87"},"nativeSrc":"14352:30:87","nodeType":"YulFunctionCall","src":"14352:30:87"},{"name":"end","nativeSrc":"14384:3:87","nodeType":"YulIdentifier","src":"14384:3:87"}],"functionName":{"name":"gt","nativeSrc":"14349:2:87","nodeType":"YulIdentifier","src":"14349:2:87"},"nativeSrc":"14349:39:87","nodeType":"YulFunctionCall","src":"14349:39:87"},"nativeSrc":"14346:59:87","nodeType":"YulIf","src":"14346:59:87"},{"expression":{"arguments":[{"arguments":[{"name":"array_1","nativeSrc":"14424:7:87","nodeType":"YulIdentifier","src":"14424:7:87"},{"kind":"number","nativeSrc":"14433:4:87","nodeType":"YulLiteral","src":"14433:4:87","type":"","value":"0x20"}],"functionName":{"name":"add","nativeSrc":"14420:3:87","nodeType":"YulIdentifier","src":"14420:3:87"},"nativeSrc":"14420:18:87","nodeType":"YulFunctionCall","src":"14420:18:87"},{"arguments":[{"name":"offset","nativeSrc":"14444:6:87","nodeType":"YulIdentifier","src":"14444:6:87"},{"kind":"number","nativeSrc":"14452:4:87","nodeType":"YulLiteral","src":"14452:4:87","type":"","value":"0x20"}],"functionName":{"name":"add","nativeSrc":"14440:3:87","nodeType":"YulIdentifier","src":"14440:3:87"},"nativeSrc":"14440:17:87","nodeType":"YulFunctionCall","src":"14440:17:87"},{"name":"length","nativeSrc":"14459:6:87","nodeType":"YulIdentifier","src":"14459:6:87"}],"functionName":{"name":"mcopy","nativeSrc":"14414:5:87","nodeType":"YulIdentifier","src":"14414:5:87"},"nativeSrc":"14414:52:87","nodeType":"YulFunctionCall","src":"14414:52:87"},"nativeSrc":"14414:52:87","nodeType":"YulExpressionStatement","src":"14414:52:87"},{"expression":{"arguments":[{"arguments":[{"arguments":[{"name":"array_1","nativeSrc":"14490:7:87","nodeType":"YulIdentifier","src":"14490:7:87"},{"name":"length","nativeSrc":"14499:6:87","nodeType":"YulIdentifier","src":"14499:6:87"}],"functionName":{"name":"add","nativeSrc":"14486:3:87","nodeType":"YulIdentifier","src":"14486:3:87"},"nativeSrc":"14486:20:87","nodeType":"YulFunctionCall","src":"14486:20:87"},{"kind":"number","nativeSrc":"14508:4:87","nodeType":"YulLiteral","src":"14508:4:87","type":"","value":"0x20"}],"functionName":{"name":"add","nativeSrc":"14482:3:87","nodeType":"YulIdentifier","src":"14482:3:87"},"nativeSrc":"14482:31:87","nodeType":"YulFunctionCall","src":"14482:31:87"},{"kind":"number","nativeSrc":"14515:1:87","nodeType":"YulLiteral","src":"14515:1:87","type":"","value":"0"}],"functionName":{"name":"mstore","nativeSrc":"14475:6:87","nodeType":"YulIdentifier","src":"14475:6:87"},"nativeSrc":"14475:42:87","nodeType":"YulFunctionCall","src":"14475:42:87"},"nativeSrc":"14475:42:87","nodeType":"YulExpressionStatement","src":"14475:42:87"},{"nativeSrc":"14526:16:87","nodeType":"YulAssignment","src":"14526:16:87","value":{"name":"array_1","nativeSrc":"14535:7:87","nodeType":"YulIdentifier","src":"14535:7:87"},"variableNames":[{"name":"array","nativeSrc":"14526:5:87","nodeType":"YulIdentifier","src":"14526:5:87"}]}]},"name":"abi_decode_bytes_fromMemory","nativeSrc":"14065:483:87","nodeType":"YulFunctionDefinition","parameters":[{"name":"offset","nativeSrc":"14102:6:87","nodeType":"YulTypedName","src":"14102:6:87","type":""},{"name":"end","nativeSrc":"14110:3:87","nodeType":"YulTypedName","src":"14110:3:87","type":""}],"returnVariables":[{"name":"array","nativeSrc":"14118:5:87","nodeType":"YulTypedName","src":"14118:5:87","type":""}],"src":"14065:483:87"},{"body":{"nativeSrc":"14662:741:87","nodeType":"YulBlock","src":"14662:741:87","statements":[{"body":{"nativeSrc":"14708:16:87","nodeType":"YulBlock","src":"14708:16:87","statements":[{"expression":{"arguments":[{"kind":"number","nativeSrc":"14717:1:87","nodeType":"YulLiteral","src":"14717:1:87","type":"","value":"0"},{"kind":"number","nativeSrc":"14720:1:87","nodeType":"YulLiteral","src":"14720:1:87","type":"","value":"0"}],"functionName":{"name":"revert","nativeSrc":"14710:6:87","nodeType":"YulIdentifier","src":"14710:6:87"},"nativeSrc":"14710:12:87","nodeType":"YulFunctionCall","src":"14710:12:87"},"nativeSrc":"14710:12:87","nodeType":"YulExpressionStatement","src":"14710:12:87"}]},"condition":{"arguments":[{"arguments":[{"name":"dataEnd","nativeSrc":"14683:7:87","nodeType":"YulIdentifier","src":"14683:7:87"},{"name":"headStart","nativeSrc":"14692:9:87","nodeType":"YulIdentifier","src":"14692:9:87"}],"functionName":{"name":"sub","nativeSrc":"14679:3:87","nodeType":"YulIdentifier","src":"14679:3:87"},"nativeSrc":"14679:23:87","nodeType":"YulFunctionCall","src":"14679:23:87"},{"kind":"number","nativeSrc":"14704:2:87","nodeType":"YulLiteral","src":"14704:2:87","type":"","value":"32"}],"functionName":{"name":"slt","nativeSrc":"14675:3:87","nodeType":"YulIdentifier","src":"14675:3:87"},"nativeSrc":"14675:32:87","nodeType":"YulFunctionCall","src":"14675:32:87"},"nativeSrc":"14672:52:87","nodeType":"YulIf","src":"14672:52:87"},{"nativeSrc":"14733:30:87","nodeType":"YulVariableDeclaration","src":"14733:30:87","value":{"arguments":[{"name":"headStart","nativeSrc":"14753:9:87","nodeType":"YulIdentifier","src":"14753:9:87"}],"functionName":{"name":"mload","nativeSrc":"14747:5:87","nodeType":"YulIdentifier","src":"14747:5:87"},"nativeSrc":"14747:16:87","nodeType":"YulFunctionCall","src":"14747:16:87"},"variables":[{"name":"offset","nativeSrc":"14737:6:87","nodeType":"YulTypedName","src":"14737:6:87","type":""}]},{"body":{"nativeSrc":"14806:16:87","nodeType":"YulBlock","src":"14806:16:87","statements":[{"expression":{"arguments":[{"kind":"number","nativeSrc":"14815:1:87","nodeType":"YulLiteral","src":"14815:1:87","type":"","value":"0"},{"kind":"number","nativeSrc":"14818:1:87","nodeType":"YulLiteral","src":"14818:1:87","type":"","value":"0"}],"functionName":{"name":"revert","nativeSrc":"14808:6:87","nodeType":"YulIdentifier","src":"14808:6:87"},"nativeSrc":"14808:12:87","nodeType":"YulFunctionCall","src":"14808:12:87"},"nativeSrc":"14808:12:87","nodeType":"YulExpressionStatement","src":"14808:12:87"}]},"condition":{"arguments":[{"name":"offset","nativeSrc":"14778:6:87","nodeType":"YulIdentifier","src":"14778:6:87"},{"kind":"number","nativeSrc":"14786:18:87","nodeType":"YulLiteral","src":"14786:18:87","type":"","value":"0xffffffffffffffff"}],"functionName":{"name":"gt","nativeSrc":"14775:2:87","nodeType":"YulIdentifier","src":"14775:2:87"},"nativeSrc":"14775:30:87","nodeType":"YulFunctionCall","src":"14775:30:87"},"nativeSrc":"14772:50:87","nodeType":"YulIf","src":"14772:50:87"},{"nativeSrc":"14831:32:87","nodeType":"YulVariableDeclaration","src":"14831:32:87","value":{"arguments":[{"name":"headStart","nativeSrc":"14845:9:87","nodeType":"YulIdentifier","src":"14845:9:87"},{"name":"offset","nativeSrc":"14856:6:87","nodeType":"YulIdentifier","src":"14856:6:87"}],"functionName":{"name":"add","nativeSrc":"14841:3:87","nodeType":"YulIdentifier","src":"14841:3:87"},"nativeSrc":"14841:22:87","nodeType":"YulFunctionCall","src":"14841:22:87"},"variables":[{"name":"_1","nativeSrc":"14835:2:87","nodeType":"YulTypedName","src":"14835:2:87","type":""}]},{"body":{"nativeSrc":"14903:16:87","nodeType":"YulBlock","src":"14903:16:87","statements":[{"expression":{"arguments":[{"kind":"number","nativeSrc":"14912:1:87","nodeType":"YulLiteral","src":"14912:1:87","type":"","value":"0"},{"kind":"number","nativeSrc":"14915:1:87","nodeType":"YulLiteral","src":"14915:1:87","type":"","value":"0"}],"functionName":{"name":"revert","nativeSrc":"14905:6:87","nodeType":"YulIdentifier","src":"14905:6:87"},"nativeSrc":"14905:12:87","nodeType":"YulFunctionCall","src":"14905:12:87"},"nativeSrc":"14905:12:87","nodeType":"YulExpressionStatement","src":"14905:12:87"}]},"condition":{"arguments":[{"arguments":[{"name":"dataEnd","nativeSrc":"14883:7:87","nodeType":"YulIdentifier","src":"14883:7:87"},{"name":"_1","nativeSrc":"14892:2:87","nodeType":"YulIdentifier","src":"14892:2:87"}],"functionName":{"name":"sub","nativeSrc":"14879:3:87","nodeType":"YulIdentifier","src":"14879:3:87"},"nativeSrc":"14879:16:87","nodeType":"YulFunctionCall","src":"14879:16:87"},{"kind":"number","nativeSrc":"14897:4:87","nodeType":"YulLiteral","src":"14897:4:87","type":"","value":"0x60"}],"functionName":{"name":"slt","nativeSrc":"14875:3:87","nodeType":"YulIdentifier","src":"14875:3:87"},"nativeSrc":"14875:27:87","nodeType":"YulFunctionCall","src":"14875:27:87"},"nativeSrc":"14872:47:87","nodeType":"YulIf","src":"14872:47:87"},{"nativeSrc":"14928:35:87","nodeType":"YulVariableDeclaration","src":"14928:35:87","value":{"arguments":[],"functionName":{"name":"allocate_memory_2750","nativeSrc":"14941:20:87","nodeType":"YulIdentifier","src":"14941:20:87"},"nativeSrc":"14941:22:87","nodeType":"YulFunctionCall","src":"14941:22:87"},"variables":[{"name":"value","nativeSrc":"14932:5:87","nodeType":"YulTypedName","src":"14932:5:87","type":""}]},{"nativeSrc":"14972:24:87","nodeType":"YulVariableDeclaration","src":"14972:24:87","value":{"arguments":[{"name":"_1","nativeSrc":"14993:2:87","nodeType":"YulIdentifier","src":"14993:2:87"}],"functionName":{"name":"mload","nativeSrc":"14987:5:87","nodeType":"YulIdentifier","src":"14987:5:87"},"nativeSrc":"14987:9:87","nodeType":"YulFunctionCall","src":"14987:9:87"},"variables":[{"name":"value_1","nativeSrc":"14976:7:87","nodeType":"YulTypedName","src":"14976:7:87","type":""}]},{"body":{"nativeSrc":"15031:16:87","nodeType":"YulBlock","src":"15031:16:87","statements":[{"expression":{"arguments":[{"kind":"number","nativeSrc":"15040:1:87","nodeType":"YulLiteral","src":"15040:1:87","type":"","value":"0"},{"kind":"number","nativeSrc":"15043:1:87","nodeType":"YulLiteral","src":"15043:1:87","type":"","value":"0"}],"functionName":{"name":"revert","nativeSrc":"15033:6:87","nodeType":"YulIdentifier","src":"15033:6:87"},"nativeSrc":"15033:12:87","nodeType":"YulFunctionCall","src":"15033:12:87"},"nativeSrc":"15033:12:87","nodeType":"YulExpressionStatement","src":"15033:12:87"}]},"condition":{"arguments":[{"arguments":[{"name":"value_1","nativeSrc":"15018:7:87","nodeType":"YulIdentifier","src":"15018:7:87"},{"kind":"number","nativeSrc":"15027:1:87","nodeType":"YulLiteral","src":"15027:1:87","type":"","value":"3"}],"functionName":{"name":"lt","nativeSrc":"15015:2:87","nodeType":"YulIdentifier","src":"15015:2:87"},"nativeSrc":"15015:14:87","nodeType":"YulFunctionCall","src":"15015:14:87"}],"functionName":{"name":"iszero","nativeSrc":"15008:6:87","nodeType":"YulIdentifier","src":"15008:6:87"},"nativeSrc":"15008:22:87","nodeType":"YulFunctionCall","src":"15008:22:87"},"nativeSrc":"15005:42:87","nodeType":"YulIf","src":"15005:42:87"},{"expression":{"arguments":[{"name":"value","nativeSrc":"15063:5:87","nodeType":"YulIdentifier","src":"15063:5:87"},{"name":"value_1","nativeSrc":"15070:7:87","nodeType":"YulIdentifier","src":"15070:7:87"}],"functionName":{"name":"mstore","nativeSrc":"15056:6:87","nodeType":"YulIdentifier","src":"15056:6:87"},"nativeSrc":"15056:22:87","nodeType":"YulFunctionCall","src":"15056:22:87"},"nativeSrc":"15056:22:87","nodeType":"YulExpressionStatement","src":"15056:22:87"},{"nativeSrc":"15087:16:87","nodeType":"YulVariableDeclaration","src":"15087:16:87","value":{"kind":"number","nativeSrc":"15102:1:87","nodeType":"YulLiteral","src":"15102:1:87","type":"","value":"0"},"variables":[{"name":"value_2","nativeSrc":"15091:7:87","nodeType":"YulTypedName","src":"15091:7:87","type":""}]},{"nativeSrc":"15112:29:87","nodeType":"YulAssignment","src":"15112:29:87","value":{"arguments":[{"arguments":[{"name":"_1","nativeSrc":"15133:2:87","nodeType":"YulIdentifier","src":"15133:2:87"},{"kind":"number","nativeSrc":"15137:2:87","nodeType":"YulLiteral","src":"15137:2:87","type":"","value":"32"}],"functionName":{"name":"add","nativeSrc":"15129:3:87","nodeType":"YulIdentifier","src":"15129:3:87"},"nativeSrc":"15129:11:87","nodeType":"YulFunctionCall","src":"15129:11:87"}],"functionName":{"name":"mload","nativeSrc":"15123:5:87","nodeType":"YulIdentifier","src":"15123:5:87"},"nativeSrc":"15123:18:87","nodeType":"YulFunctionCall","src":"15123:18:87"},"variableNames":[{"name":"value_2","nativeSrc":"15112:7:87","nodeType":"YulIdentifier","src":"15112:7:87"}]},{"expression":{"arguments":[{"arguments":[{"name":"value","nativeSrc":"15161:5:87","nodeType":"YulIdentifier","src":"15161:5:87"},{"kind":"number","nativeSrc":"15168:2:87","nodeType":"YulLiteral","src":"15168:2:87","type":"","value":"32"}],"functionName":{"name":"add","nativeSrc":"15157:3:87","nodeType":"YulIdentifier","src":"15157:3:87"},"nativeSrc":"15157:14:87","nodeType":"YulFunctionCall","src":"15157:14:87"},{"name":"value_2","nativeSrc":"15173:7:87","nodeType":"YulIdentifier","src":"15173:7:87"}],"functionName":{"name":"mstore","nativeSrc":"15150:6:87","nodeType":"YulIdentifier","src":"15150:6:87"},"nativeSrc":"15150:31:87","nodeType":"YulFunctionCall","src":"15150:31:87"},"nativeSrc":"15150:31:87","nodeType":"YulExpressionStatement","src":"15150:31:87"},{"nativeSrc":"15190:34:87","nodeType":"YulVariableDeclaration","src":"15190:34:87","value":{"arguments":[{"arguments":[{"name":"_1","nativeSrc":"15216:2:87","nodeType":"YulIdentifier","src":"15216:2:87"},{"kind":"number","nativeSrc":"15220:2:87","nodeType":"YulLiteral","src":"15220:2:87","type":"","value":"64"}],"functionName":{"name":"add","nativeSrc":"15212:3:87","nodeType":"YulIdentifier","src":"15212:3:87"},"nativeSrc":"15212:11:87","nodeType":"YulFunctionCall","src":"15212:11:87"}],"functionName":{"name":"mload","nativeSrc":"15206:5:87","nodeType":"YulIdentifier","src":"15206:5:87"},"nativeSrc":"15206:18:87","nodeType":"YulFunctionCall","src":"15206:18:87"},"variables":[{"name":"offset_1","nativeSrc":"15194:8:87","nodeType":"YulTypedName","src":"15194:8:87","type":""}]},{"body":{"nativeSrc":"15269:16:87","nodeType":"YulBlock","src":"15269:16:87","statements":[{"expression":{"arguments":[{"kind":"number","nativeSrc":"15278:1:87","nodeType":"YulLiteral","src":"15278:1:87","type":"","value":"0"},{"kind":"number","nativeSrc":"15281:1:87","nodeType":"YulLiteral","src":"15281:1:87","type":"","value":"0"}],"functionName":{"name":"revert","nativeSrc":"15271:6:87","nodeType":"YulIdentifier","src":"15271:6:87"},"nativeSrc":"15271:12:87","nodeType":"YulFunctionCall","src":"15271:12:87"},"nativeSrc":"15271:12:87","nodeType":"YulExpressionStatement","src":"15271:12:87"}]},"condition":{"arguments":[{"name":"offset_1","nativeSrc":"15239:8:87","nodeType":"YulIdentifier","src":"15239:8:87"},{"kind":"number","nativeSrc":"15249:18:87","nodeType":"YulLiteral","src":"15249:18:87","type":"","value":"0xffffffffffffffff"}],"functionName":{"name":"gt","nativeSrc":"15236:2:87","nodeType":"YulIdentifier","src":"15236:2:87"},"nativeSrc":"15236:32:87","nodeType":"YulFunctionCall","src":"15236:32:87"},"nativeSrc":"15233:52:87","nodeType":"YulIf","src":"15233:52:87"},{"expression":{"arguments":[{"arguments":[{"name":"value","nativeSrc":"15305:5:87","nodeType":"YulIdentifier","src":"15305:5:87"},{"kind":"number","nativeSrc":"15312:2:87","nodeType":"YulLiteral","src":"15312:2:87","type":"","value":"64"}],"functionName":{"name":"add","nativeSrc":"15301:3:87","nodeType":"YulIdentifier","src":"15301:3:87"},"nativeSrc":"15301:14:87","nodeType":"YulFunctionCall","src":"15301:14:87"},{"arguments":[{"arguments":[{"name":"_1","nativeSrc":"15349:2:87","nodeType":"YulIdentifier","src":"15349:2:87"},{"name":"offset_1","nativeSrc":"15353:8:87","nodeType":"YulIdentifier","src":"15353:8:87"}],"functionName":{"name":"add","nativeSrc":"15345:3:87","nodeType":"YulIdentifier","src":"15345:3:87"},"nativeSrc":"15345:17:87","nodeType":"YulFunctionCall","src":"15345:17:87"},{"name":"dataEnd","nativeSrc":"15364:7:87","nodeType":"YulIdentifier","src":"15364:7:87"}],"functionName":{"name":"abi_decode_bytes_fromMemory","nativeSrc":"15317:27:87","nodeType":"YulIdentifier","src":"15317:27:87"},"nativeSrc":"15317:55:87","nodeType":"YulFunctionCall","src":"15317:55:87"}],"functionName":{"name":"mstore","nativeSrc":"15294:6:87","nodeType":"YulIdentifier","src":"15294:6:87"},"nativeSrc":"15294:79:87","nodeType":"YulFunctionCall","src":"15294:79:87"},"nativeSrc":"15294:79:87","nodeType":"YulExpressionStatement","src":"15294:79:87"},{"nativeSrc":"15382:15:87","nodeType":"YulAssignment","src":"15382:15:87","value":{"name":"value","nativeSrc":"15392:5:87","nodeType":"YulIdentifier","src":"15392:5:87"},"variableNames":[{"name":"value0","nativeSrc":"15382:6:87","nodeType":"YulIdentifier","src":"15382:6:87"}]}]},"name":"abi_decode_tuple_t_struct$_SwapConfig_$1113_memory_ptr_fromMemory","nativeSrc":"14553:850:87","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nativeSrc":"14628:9:87","nodeType":"YulTypedName","src":"14628:9:87","type":""},{"name":"dataEnd","nativeSrc":"14639:7:87","nodeType":"YulTypedName","src":"14639:7:87","type":""}],"returnVariables":[{"name":"value0","nativeSrc":"14651:6:87","nodeType":"YulTypedName","src":"14651:6:87","type":""}],"src":"14553:850:87"},{"body":{"nativeSrc":"15454:171:87","nodeType":"YulBlock","src":"15454:171:87","statements":[{"body":{"nativeSrc":"15485:111:87","nodeType":"YulBlock","src":"15485:111:87","statements":[{"expression":{"arguments":[{"kind":"number","nativeSrc":"15506:1:87","nodeType":"YulLiteral","src":"15506:1:87","type":"","value":"0"},{"arguments":[{"kind":"number","nativeSrc":"15513:3:87","nodeType":"YulLiteral","src":"15513:3:87","type":"","value":"224"},{"kind":"number","nativeSrc":"15518:10:87","nodeType":"YulLiteral","src":"15518:10:87","type":"","value":"0x4e487b71"}],"functionName":{"name":"shl","nativeSrc":"15509:3:87","nodeType":"YulIdentifier","src":"15509:3:87"},"nativeSrc":"15509:20:87","nodeType":"YulFunctionCall","src":"15509:20:87"}],"functionName":{"name":"mstore","nativeSrc":"15499:6:87","nodeType":"YulIdentifier","src":"15499:6:87"},"nativeSrc":"15499:31:87","nodeType":"YulFunctionCall","src":"15499:31:87"},"nativeSrc":"15499:31:87","nodeType":"YulExpressionStatement","src":"15499:31:87"},{"expression":{"arguments":[{"kind":"number","nativeSrc":"15550:1:87","nodeType":"YulLiteral","src":"15550:1:87","type":"","value":"4"},{"kind":"number","nativeSrc":"15553:4:87","nodeType":"YulLiteral","src":"15553:4:87","type":"","value":"0x12"}],"functionName":{"name":"mstore","nativeSrc":"15543:6:87","nodeType":"YulIdentifier","src":"15543:6:87"},"nativeSrc":"15543:15:87","nodeType":"YulFunctionCall","src":"15543:15:87"},"nativeSrc":"15543:15:87","nodeType":"YulExpressionStatement","src":"15543:15:87"},{"expression":{"arguments":[{"kind":"number","nativeSrc":"15578:1:87","nodeType":"YulLiteral","src":"15578:1:87","type":"","value":"0"},{"kind":"number","nativeSrc":"15581:4:87","nodeType":"YulLiteral","src":"15581:4:87","type":"","value":"0x24"}],"functionName":{"name":"revert","nativeSrc":"15571:6:87","nodeType":"YulIdentifier","src":"15571:6:87"},"nativeSrc":"15571:15:87","nodeType":"YulFunctionCall","src":"15571:15:87"},"nativeSrc":"15571:15:87","nodeType":"YulExpressionStatement","src":"15571:15:87"}]},"condition":{"arguments":[{"name":"y","nativeSrc":"15474:1:87","nodeType":"YulIdentifier","src":"15474:1:87"}],"functionName":{"name":"iszero","nativeSrc":"15467:6:87","nodeType":"YulIdentifier","src":"15467:6:87"},"nativeSrc":"15467:9:87","nodeType":"YulFunctionCall","src":"15467:9:87"},"nativeSrc":"15464:132:87","nodeType":"YulIf","src":"15464:132:87"},{"nativeSrc":"15605:14:87","nodeType":"YulAssignment","src":"15605:14:87","value":{"arguments":[{"name":"x","nativeSrc":"15614:1:87","nodeType":"YulIdentifier","src":"15614:1:87"},{"name":"y","nativeSrc":"15617:1:87","nodeType":"YulIdentifier","src":"15617:1:87"}],"functionName":{"name":"div","nativeSrc":"15610:3:87","nodeType":"YulIdentifier","src":"15610:3:87"},"nativeSrc":"15610:9:87","nodeType":"YulFunctionCall","src":"15610:9:87"},"variableNames":[{"name":"r","nativeSrc":"15605:1:87","nodeType":"YulIdentifier","src":"15605:1:87"}]}]},"name":"checked_div_t_uint256","nativeSrc":"15408:217:87","nodeType":"YulFunctionDefinition","parameters":[{"name":"x","nativeSrc":"15439:1:87","nodeType":"YulTypedName","src":"15439:1:87","type":""},{"name":"y","nativeSrc":"15442:1:87","nodeType":"YulTypedName","src":"15442:1:87","type":""}],"returnVariables":[{"name":"r","nativeSrc":"15448:1:87","nodeType":"YulTypedName","src":"15448:1:87","type":""}],"src":"15408:217:87"},{"body":{"nativeSrc":"15720:245:87","nodeType":"YulBlock","src":"15720:245:87","statements":[{"body":{"nativeSrc":"15766:16:87","nodeType":"YulBlock","src":"15766:16:87","statements":[{"expression":{"arguments":[{"kind":"number","nativeSrc":"15775:1:87","nodeType":"YulLiteral","src":"15775:1:87","type":"","value":"0"},{"kind":"number","nativeSrc":"15778:1:87","nodeType":"YulLiteral","src":"15778:1:87","type":"","value":"0"}],"functionName":{"name":"revert","nativeSrc":"15768:6:87","nodeType":"YulIdentifier","src":"15768:6:87"},"nativeSrc":"15768:12:87","nodeType":"YulFunctionCall","src":"15768:12:87"},"nativeSrc":"15768:12:87","nodeType":"YulExpressionStatement","src":"15768:12:87"}]},"condition":{"arguments":[{"arguments":[{"name":"dataEnd","nativeSrc":"15741:7:87","nodeType":"YulIdentifier","src":"15741:7:87"},{"name":"headStart","nativeSrc":"15750:9:87","nodeType":"YulIdentifier","src":"15750:9:87"}],"functionName":{"name":"sub","nativeSrc":"15737:3:87","nodeType":"YulIdentifier","src":"15737:3:87"},"nativeSrc":"15737:23:87","nodeType":"YulFunctionCall","src":"15737:23:87"},{"kind":"number","nativeSrc":"15762:2:87","nodeType":"YulLiteral","src":"15762:2:87","type":"","value":"32"}],"functionName":{"name":"slt","nativeSrc":"15733:3:87","nodeType":"YulIdentifier","src":"15733:3:87"},"nativeSrc":"15733:32:87","nodeType":"YulFunctionCall","src":"15733:32:87"},"nativeSrc":"15730:52:87","nodeType":"YulIf","src":"15730:52:87"},{"nativeSrc":"15791:30:87","nodeType":"YulVariableDeclaration","src":"15791:30:87","value":{"arguments":[{"name":"headStart","nativeSrc":"15811:9:87","nodeType":"YulIdentifier","src":"15811:9:87"}],"functionName":{"name":"mload","nativeSrc":"15805:5:87","nodeType":"YulIdentifier","src":"15805:5:87"},"nativeSrc":"15805:16:87","nodeType":"YulFunctionCall","src":"15805:16:87"},"variables":[{"name":"offset","nativeSrc":"15795:6:87","nodeType":"YulTypedName","src":"15795:6:87","type":""}]},{"body":{"nativeSrc":"15864:16:87","nodeType":"YulBlock","src":"15864:16:87","statements":[{"expression":{"arguments":[{"kind":"number","nativeSrc":"15873:1:87","nodeType":"YulLiteral","src":"15873:1:87","type":"","value":"0"},{"kind":"number","nativeSrc":"15876:1:87","nodeType":"YulLiteral","src":"15876:1:87","type":"","value":"0"}],"functionName":{"name":"revert","nativeSrc":"15866:6:87","nodeType":"YulIdentifier","src":"15866:6:87"},"nativeSrc":"15866:12:87","nodeType":"YulFunctionCall","src":"15866:12:87"},"nativeSrc":"15866:12:87","nodeType":"YulExpressionStatement","src":"15866:12:87"}]},"condition":{"arguments":[{"name":"offset","nativeSrc":"15836:6:87","nodeType":"YulIdentifier","src":"15836:6:87"},{"kind":"number","nativeSrc":"15844:18:87","nodeType":"YulLiteral","src":"15844:18:87","type":"","value":"0xffffffffffffffff"}],"functionName":{"name":"gt","nativeSrc":"15833:2:87","nodeType":"YulIdentifier","src":"15833:2:87"},"nativeSrc":"15833:30:87","nodeType":"YulFunctionCall","src":"15833:30:87"},"nativeSrc":"15830:50:87","nodeType":"YulIf","src":"15830:50:87"},{"nativeSrc":"15889:70:87","nodeType":"YulAssignment","src":"15889:70:87","value":{"arguments":[{"arguments":[{"name":"headStart","nativeSrc":"15931:9:87","nodeType":"YulIdentifier","src":"15931:9:87"},{"name":"offset","nativeSrc":"15942:6:87","nodeType":"YulIdentifier","src":"15942:6:87"}],"functionName":{"name":"add","nativeSrc":"15927:3:87","nodeType":"YulIdentifier","src":"15927:3:87"},"nativeSrc":"15927:22:87","nodeType":"YulFunctionCall","src":"15927:22:87"},{"name":"dataEnd","nativeSrc":"15951:7:87","nodeType":"YulIdentifier","src":"15951:7:87"}],"functionName":{"name":"abi_decode_bytes_fromMemory","nativeSrc":"15899:27:87","nodeType":"YulIdentifier","src":"15899:27:87"},"nativeSrc":"15899:60:87","nodeType":"YulFunctionCall","src":"15899:60:87"},"variableNames":[{"name":"value0","nativeSrc":"15889:6:87","nodeType":"YulIdentifier","src":"15889:6:87"}]}]},"name":"abi_decode_tuple_t_bytes_memory_ptr_fromMemory","nativeSrc":"15630:335:87","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nativeSrc":"15686:9:87","nodeType":"YulTypedName","src":"15686:9:87","type":""},{"name":"dataEnd","nativeSrc":"15697:7:87","nodeType":"YulTypedName","src":"15697:7:87","type":""}],"returnVariables":[{"name":"value0","nativeSrc":"15709:6:87","nodeType":"YulTypedName","src":"15709:6:87","type":""}],"src":"15630:335:87"},{"body":{"nativeSrc":"16135:110:87","nodeType":"YulBlock","src":"16135:110:87","statements":[{"expression":{"arguments":[{"name":"headStart","nativeSrc":"16152:9:87","nodeType":"YulIdentifier","src":"16152:9:87"},{"kind":"number","nativeSrc":"16163:2:87","nodeType":"YulLiteral","src":"16163:2:87","type":"","value":"32"}],"functionName":{"name":"mstore","nativeSrc":"16145:6:87","nodeType":"YulIdentifier","src":"16145:6:87"},"nativeSrc":"16145:21:87","nodeType":"YulFunctionCall","src":"16145:21:87"},"nativeSrc":"16145:21:87","nodeType":"YulExpressionStatement","src":"16145:21:87"},{"nativeSrc":"16175:64:87","nodeType":"YulAssignment","src":"16175:64:87","value":{"arguments":[{"name":"value0","nativeSrc":"16212:6:87","nodeType":"YulIdentifier","src":"16212:6:87"},{"arguments":[{"name":"headStart","nativeSrc":"16224:9:87","nodeType":"YulIdentifier","src":"16224:9:87"},{"kind":"number","nativeSrc":"16235:2:87","nodeType":"YulLiteral","src":"16235:2:87","type":"","value":"32"}],"functionName":{"name":"add","nativeSrc":"16220:3:87","nodeType":"YulIdentifier","src":"16220:3:87"},"nativeSrc":"16220:18:87","nodeType":"YulFunctionCall","src":"16220:18:87"}],"functionName":{"name":"abi_encode_struct_SwapConfig","nativeSrc":"16183:28:87","nodeType":"YulIdentifier","src":"16183:28:87"},"nativeSrc":"16183:56:87","nodeType":"YulFunctionCall","src":"16183:56:87"},"variableNames":[{"name":"tail","nativeSrc":"16175:4:87","nodeType":"YulIdentifier","src":"16175:4:87"}]}]},"name":"abi_encode_tuple_t_struct$_SwapConfig_$1113_memory_ptr__to_t_struct$_SwapConfig_$1113_memory_ptr__fromStack_library_reversed","nativeSrc":"15970:275:87","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nativeSrc":"16104:9:87","nodeType":"YulTypedName","src":"16104:9:87","type":""},{"name":"value0","nativeSrc":"16115:6:87","nodeType":"YulTypedName","src":"16115:6:87","type":""}],"returnVariables":[{"name":"tail","nativeSrc":"16126:4:87","nodeType":"YulTypedName","src":"16126:4:87","type":""}],"src":"15970:275:87"},{"body":{"nativeSrc":"16491:236:87","nodeType":"YulBlock","src":"16491:236:87","statements":[{"expression":{"arguments":[{"name":"headStart","nativeSrc":"16508:9:87","nodeType":"YulIdentifier","src":"16508:9:87"},{"kind":"number","nativeSrc":"16519:2:87","nodeType":"YulLiteral","src":"16519:2:87","type":"","value":"64"}],"functionName":{"name":"mstore","nativeSrc":"16501:6:87","nodeType":"YulIdentifier","src":"16501:6:87"},"nativeSrc":"16501:21:87","nodeType":"YulFunctionCall","src":"16501:21:87"},"nativeSrc":"16501:21:87","nodeType":"YulExpressionStatement","src":"16501:21:87"},{"nativeSrc":"16531:70:87","nodeType":"YulVariableDeclaration","src":"16531:70:87","value":{"arguments":[{"name":"value0","nativeSrc":"16574:6:87","nodeType":"YulIdentifier","src":"16574:6:87"},{"arguments":[{"name":"headStart","nativeSrc":"16586:9:87","nodeType":"YulIdentifier","src":"16586:9:87"},{"kind":"number","nativeSrc":"16597:2:87","nodeType":"YulLiteral","src":"16597:2:87","type":"","value":"64"}],"functionName":{"name":"add","nativeSrc":"16582:3:87","nodeType":"YulIdentifier","src":"16582:3:87"},"nativeSrc":"16582:18:87","nodeType":"YulFunctionCall","src":"16582:18:87"}],"functionName":{"name":"abi_encode_struct_SwapConfig","nativeSrc":"16545:28:87","nodeType":"YulIdentifier","src":"16545:28:87"},"nativeSrc":"16545:56:87","nodeType":"YulFunctionCall","src":"16545:56:87"},"variables":[{"name":"tail_1","nativeSrc":"16535:6:87","nodeType":"YulTypedName","src":"16535:6:87","type":""}]},{"expression":{"arguments":[{"arguments":[{"name":"headStart","nativeSrc":"16621:9:87","nodeType":"YulIdentifier","src":"16621:9:87"},{"kind":"number","nativeSrc":"16632:2:87","nodeType":"YulLiteral","src":"16632:2:87","type":"","value":"32"}],"functionName":{"name":"add","nativeSrc":"16617:3:87","nodeType":"YulIdentifier","src":"16617:3:87"},"nativeSrc":"16617:18:87","nodeType":"YulFunctionCall","src":"16617:18:87"},{"arguments":[{"name":"tail_1","nativeSrc":"16641:6:87","nodeType":"YulIdentifier","src":"16641:6:87"},{"name":"headStart","nativeSrc":"16649:9:87","nodeType":"YulIdentifier","src":"16649:9:87"}],"functionName":{"name":"sub","nativeSrc":"16637:3:87","nodeType":"YulIdentifier","src":"16637:3:87"},"nativeSrc":"16637:22:87","nodeType":"YulFunctionCall","src":"16637:22:87"}],"functionName":{"name":"mstore","nativeSrc":"16610:6:87","nodeType":"YulIdentifier","src":"16610:6:87"},"nativeSrc":"16610:50:87","nodeType":"YulFunctionCall","src":"16610:50:87"},"nativeSrc":"16610:50:87","nodeType":"YulExpressionStatement","src":"16610:50:87"},{"nativeSrc":"16669:52:87","nodeType":"YulAssignment","src":"16669:52:87","value":{"arguments":[{"name":"value1","nativeSrc":"16706:6:87","nodeType":"YulIdentifier","src":"16706:6:87"},{"name":"tail_1","nativeSrc":"16714:6:87","nodeType":"YulIdentifier","src":"16714:6:87"}],"functionName":{"name":"abi_encode_struct_SwapConfig","nativeSrc":"16677:28:87","nodeType":"YulIdentifier","src":"16677:28:87"},"nativeSrc":"16677:44:87","nodeType":"YulFunctionCall","src":"16677:44:87"},"variableNames":[{"name":"tail","nativeSrc":"16669:4:87","nodeType":"YulIdentifier","src":"16669:4:87"}]}]},"name":"abi_encode_tuple_t_struct$_SwapConfig_$1113_memory_ptr_t_struct$_SwapConfig_$1113_memory_ptr__to_t_struct$_SwapConfig_$1113_memory_ptr_t_struct$_SwapConfig_$1113_memory_ptr__fromStack_reversed","nativeSrc":"16250:477:87","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nativeSrc":"16452:9:87","nodeType":"YulTypedName","src":"16452:9:87","type":""},{"name":"value1","nativeSrc":"16463:6:87","nodeType":"YulTypedName","src":"16463:6:87","type":""},{"name":"value0","nativeSrc":"16471:6:87","nodeType":"YulTypedName","src":"16471:6:87","type":""}],"returnVariables":[{"name":"tail","nativeSrc":"16482:4:87","nodeType":"YulTypedName","src":"16482:4:87","type":""}],"src":"16250:477:87"},{"body":{"nativeSrc":"16787:65:87","nodeType":"YulBlock","src":"16787:65:87","statements":[{"expression":{"arguments":[{"kind":"number","nativeSrc":"16804:1:87","nodeType":"YulLiteral","src":"16804:1:87","type":"","value":"0"},{"name":"ptr","nativeSrc":"16807:3:87","nodeType":"YulIdentifier","src":"16807:3:87"}],"functionName":{"name":"mstore","nativeSrc":"16797:6:87","nodeType":"YulIdentifier","src":"16797:6:87"},"nativeSrc":"16797:14:87","nodeType":"YulFunctionCall","src":"16797:14:87"},"nativeSrc":"16797:14:87","nodeType":"YulExpressionStatement","src":"16797:14:87"},{"nativeSrc":"16820:26:87","nodeType":"YulAssignment","src":"16820:26:87","value":{"arguments":[{"kind":"number","nativeSrc":"16838:1:87","nodeType":"YulLiteral","src":"16838:1:87","type":"","value":"0"},{"kind":"number","nativeSrc":"16841:4:87","nodeType":"YulLiteral","src":"16841:4:87","type":"","value":"0x20"}],"functionName":{"name":"keccak256","nativeSrc":"16828:9:87","nodeType":"YulIdentifier","src":"16828:9:87"},"nativeSrc":"16828:18:87","nodeType":"YulFunctionCall","src":"16828:18:87"},"variableNames":[{"name":"data","nativeSrc":"16820:4:87","nodeType":"YulIdentifier","src":"16820:4:87"}]}]},"name":"array_dataslot_bytes_storage","nativeSrc":"16732:120:87","nodeType":"YulFunctionDefinition","parameters":[{"name":"ptr","nativeSrc":"16770:3:87","nodeType":"YulTypedName","src":"16770:3:87","type":""}],"returnVariables":[{"name":"data","nativeSrc":"16778:4:87","nodeType":"YulTypedName","src":"16778:4:87","type":""}],"src":"16732:120:87"},{"body":{"nativeSrc":"16937:437:87","nodeType":"YulBlock","src":"16937:437:87","statements":[{"body":{"nativeSrc":"16970:398:87","nodeType":"YulBlock","src":"16970:398:87","statements":[{"expression":{"arguments":[{"kind":"number","nativeSrc":"16991:1:87","nodeType":"YulLiteral","src":"16991:1:87","type":"","value":"0"},{"name":"array","nativeSrc":"16994:5:87","nodeType":"YulIdentifier","src":"16994:5:87"}],"functionName":{"name":"mstore","nativeSrc":"16984:6:87","nodeType":"YulIdentifier","src":"16984:6:87"},"nativeSrc":"16984:16:87","nodeType":"YulFunctionCall","src":"16984:16:87"},"nativeSrc":"16984:16:87","nodeType":"YulExpressionStatement","src":"16984:16:87"},{"nativeSrc":"17013:30:87","nodeType":"YulVariableDeclaration","src":"17013:30:87","value":{"arguments":[{"kind":"number","nativeSrc":"17035:1:87","nodeType":"YulLiteral","src":"17035:1:87","type":"","value":"0"},{"kind":"number","nativeSrc":"17038:4:87","nodeType":"YulLiteral","src":"17038:4:87","type":"","value":"0x20"}],"functionName":{"name":"keccak256","nativeSrc":"17025:9:87","nodeType":"YulIdentifier","src":"17025:9:87"},"nativeSrc":"17025:18:87","nodeType":"YulFunctionCall","src":"17025:18:87"},"variables":[{"name":"data","nativeSrc":"17017:4:87","nodeType":"YulTypedName","src":"17017:4:87","type":""}]},{"nativeSrc":"17056:57:87","nodeType":"YulVariableDeclaration","src":"17056:57:87","value":{"arguments":[{"name":"data","nativeSrc":"17079:4:87","nodeType":"YulIdentifier","src":"17079:4:87"},{"arguments":[{"kind":"number","nativeSrc":"17089:1:87","nodeType":"YulLiteral","src":"17089:1:87","type":"","value":"5"},{"arguments":[{"name":"startIndex","nativeSrc":"17096:10:87","nodeType":"YulIdentifier","src":"17096:10:87"},{"kind":"number","nativeSrc":"17108:2:87","nodeType":"YulLiteral","src":"17108:2:87","type":"","value":"31"}],"functionName":{"name":"add","nativeSrc":"17092:3:87","nodeType":"YulIdentifier","src":"17092:3:87"},"nativeSrc":"17092:19:87","nodeType":"YulFunctionCall","src":"17092:19:87"}],"functionName":{"name":"shr","nativeSrc":"17085:3:87","nodeType":"YulIdentifier","src":"17085:3:87"},"nativeSrc":"17085:27:87","nodeType":"YulFunctionCall","src":"17085:27:87"}],"functionName":{"name":"add","nativeSrc":"17075:3:87","nodeType":"YulIdentifier","src":"17075:3:87"},"nativeSrc":"17075:38:87","nodeType":"YulFunctionCall","src":"17075:38:87"},"variables":[{"name":"deleteStart","nativeSrc":"17060:11:87","nodeType":"YulTypedName","src":"17060:11:87","type":""}]},{"body":{"nativeSrc":"17150:23:87","nodeType":"YulBlock","src":"17150:23:87","statements":[{"nativeSrc":"17152:19:87","nodeType":"YulAssignment","src":"17152:19:87","value":{"name":"data","nativeSrc":"17167:4:87","nodeType":"YulIdentifier","src":"17167:4:87"},"variableNames":[{"name":"deleteStart","nativeSrc":"17152:11:87","nodeType":"YulIdentifier","src":"17152:11:87"}]}]},"condition":{"arguments":[{"name":"startIndex","nativeSrc":"17132:10:87","nodeType":"YulIdentifier","src":"17132:10:87"},{"kind":"number","nativeSrc":"17144:4:87","nodeType":"YulLiteral","src":"17144:4:87","type":"","value":"0x20"}],"functionName":{"name":"lt","nativeSrc":"17129:2:87","nodeType":"YulIdentifier","src":"17129:2:87"},"nativeSrc":"17129:20:87","nodeType":"YulFunctionCall","src":"17129:20:87"},"nativeSrc":"17126:47:87","nodeType":"YulIf","src":"17126:47:87"},{"nativeSrc":"17186:41:87","nodeType":"YulVariableDeclaration","src":"17186:41:87","value":{"arguments":[{"name":"data","nativeSrc":"17200:4:87","nodeType":"YulIdentifier","src":"17200:4:87"},{"arguments":[{"kind":"number","nativeSrc":"17210:1:87","nodeType":"YulLiteral","src":"17210:1:87","type":"","value":"5"},{"arguments":[{"name":"len","nativeSrc":"17217:3:87","nodeType":"YulIdentifier","src":"17217:3:87"},{"kind":"number","nativeSrc":"17222:2:87","nodeType":"YulLiteral","src":"17222:2:87","type":"","value":"31"}],"functionName":{"name":"add","nativeSrc":"17213:3:87","nodeType":"YulIdentifier","src":"17213:3:87"},"nativeSrc":"17213:12:87","nodeType":"YulFunctionCall","src":"17213:12:87"}],"functionName":{"name":"shr","nativeSrc":"17206:3:87","nodeType":"YulIdentifier","src":"17206:3:87"},"nativeSrc":"17206:20:87","nodeType":"YulFunctionCall","src":"17206:20:87"}],"functionName":{"name":"add","nativeSrc":"17196:3:87","nodeType":"YulIdentifier","src":"17196:3:87"},"nativeSrc":"17196:31:87","nodeType":"YulFunctionCall","src":"17196:31:87"},"variables":[{"name":"_1","nativeSrc":"17190:2:87","nodeType":"YulTypedName","src":"17190:2:87","type":""}]},{"nativeSrc":"17240:24:87","nodeType":"YulVariableDeclaration","src":"17240:24:87","value":{"name":"deleteStart","nativeSrc":"17253:11:87","nodeType":"YulIdentifier","src":"17253:11:87"},"variables":[{"name":"start","nativeSrc":"17244:5:87","nodeType":"YulTypedName","src":"17244:5:87","type":""}]},{"body":{"nativeSrc":"17338:20:87","nodeType":"YulBlock","src":"17338:20:87","statements":[{"expression":{"arguments":[{"name":"start","nativeSrc":"17347:5:87","nodeType":"YulIdentifier","src":"17347:5:87"},{"kind":"number","nativeSrc":"17354:1:87","nodeType":"YulLiteral","src":"17354:1:87","type":"","value":"0"}],"functionName":{"name":"sstore","nativeSrc":"17340:6:87","nodeType":"YulIdentifier","src":"17340:6:87"},"nativeSrc":"17340:16:87","nodeType":"YulFunctionCall","src":"17340:16:87"},"nativeSrc":"17340:16:87","nodeType":"YulExpressionStatement","src":"17340:16:87"}]},"condition":{"arguments":[{"name":"start","nativeSrc":"17288:5:87","nodeType":"YulIdentifier","src":"17288:5:87"},{"name":"_1","nativeSrc":"17295:2:87","nodeType":"YulIdentifier","src":"17295:2:87"}],"functionName":{"name":"lt","nativeSrc":"17285:2:87","nodeType":"YulIdentifier","src":"17285:2:87"},"nativeSrc":"17285:13:87","nodeType":"YulFunctionCall","src":"17285:13:87"},"nativeSrc":"17277:81:87","nodeType":"YulForLoop","post":{"nativeSrc":"17299:26:87","nodeType":"YulBlock","src":"17299:26:87","statements":[{"nativeSrc":"17301:22:87","nodeType":"YulAssignment","src":"17301:22:87","value":{"arguments":[{"name":"start","nativeSrc":"17314:5:87","nodeType":"YulIdentifier","src":"17314:5:87"},{"kind":"number","nativeSrc":"17321:1:87","nodeType":"YulLiteral","src":"17321:1:87","type":"","value":"1"}],"functionName":{"name":"add","nativeSrc":"17310:3:87","nodeType":"YulIdentifier","src":"17310:3:87"},"nativeSrc":"17310:13:87","nodeType":"YulFunctionCall","src":"17310:13:87"},"variableNames":[{"name":"start","nativeSrc":"17301:5:87","nodeType":"YulIdentifier","src":"17301:5:87"}]}]},"pre":{"nativeSrc":"17281:3:87","nodeType":"YulBlock","src":"17281:3:87","statements":[]},"src":"17277:81:87"}]},"condition":{"arguments":[{"name":"len","nativeSrc":"16953:3:87","nodeType":"YulIdentifier","src":"16953:3:87"},{"kind":"number","nativeSrc":"16958:2:87","nodeType":"YulLiteral","src":"16958:2:87","type":"","value":"31"}],"functionName":{"name":"gt","nativeSrc":"16950:2:87","nodeType":"YulIdentifier","src":"16950:2:87"},"nativeSrc":"16950:11:87","nodeType":"YulFunctionCall","src":"16950:11:87"},"nativeSrc":"16947:421:87","nodeType":"YulIf","src":"16947:421:87"}]},"name":"clean_up_bytearray_end_slots_bytes_storage","nativeSrc":"16857:517:87","nodeType":"YulFunctionDefinition","parameters":[{"name":"array","nativeSrc":"16909:5:87","nodeType":"YulTypedName","src":"16909:5:87","type":""},{"name":"len","nativeSrc":"16916:3:87","nodeType":"YulTypedName","src":"16916:3:87","type":""},{"name":"startIndex","nativeSrc":"16921:10:87","nodeType":"YulTypedName","src":"16921:10:87","type":""}],"src":"16857:517:87"},{"body":{"nativeSrc":"17464:81:87","nodeType":"YulBlock","src":"17464:81:87","statements":[{"nativeSrc":"17474:65:87","nodeType":"YulAssignment","src":"17474:65:87","value":{"arguments":[{"arguments":[{"name":"data","nativeSrc":"17489:4:87","nodeType":"YulIdentifier","src":"17489:4:87"},{"arguments":[{"arguments":[{"arguments":[{"kind":"number","nativeSrc":"17507:1:87","nodeType":"YulLiteral","src":"17507:1:87","type":"","value":"3"},{"name":"len","nativeSrc":"17510:3:87","nodeType":"YulIdentifier","src":"17510:3:87"}],"functionName":{"name":"shl","nativeSrc":"17503:3:87","nodeType":"YulIdentifier","src":"17503:3:87"},"nativeSrc":"17503:11:87","nodeType":"YulFunctionCall","src":"17503:11:87"},{"arguments":[{"kind":"number","nativeSrc":"17520:1:87","nodeType":"YulLiteral","src":"17520:1:87","type":"","value":"0"}],"functionName":{"name":"not","nativeSrc":"17516:3:87","nodeType":"YulIdentifier","src":"17516:3:87"},"nativeSrc":"17516:6:87","nodeType":"YulFunctionCall","src":"17516:6:87"}],"functionName":{"name":"shr","nativeSrc":"17499:3:87","nodeType":"YulIdentifier","src":"17499:3:87"},"nativeSrc":"17499:24:87","nodeType":"YulFunctionCall","src":"17499:24:87"}],"functionName":{"name":"not","nativeSrc":"17495:3:87","nodeType":"YulIdentifier","src":"17495:3:87"},"nativeSrc":"17495:29:87","nodeType":"YulFunctionCall","src":"17495:29:87"}],"functionName":{"name":"and","nativeSrc":"17485:3:87","nodeType":"YulIdentifier","src":"17485:3:87"},"nativeSrc":"17485:40:87","nodeType":"YulFunctionCall","src":"17485:40:87"},{"arguments":[{"kind":"number","nativeSrc":"17531:1:87","nodeType":"YulLiteral","src":"17531:1:87","type":"","value":"1"},{"name":"len","nativeSrc":"17534:3:87","nodeType":"YulIdentifier","src":"17534:3:87"}],"functionName":{"name":"shl","nativeSrc":"17527:3:87","nodeType":"YulIdentifier","src":"17527:3:87"},"nativeSrc":"17527:11:87","nodeType":"YulFunctionCall","src":"17527:11:87"}],"functionName":{"name":"or","nativeSrc":"17482:2:87","nodeType":"YulIdentifier","src":"17482:2:87"},"nativeSrc":"17482:57:87","nodeType":"YulFunctionCall","src":"17482:57:87"},"variableNames":[{"name":"used","nativeSrc":"17474:4:87","nodeType":"YulIdentifier","src":"17474:4:87"}]}]},"name":"extract_used_part_and_set_length_of_short_byte_array","nativeSrc":"17379:166:87","nodeType":"YulFunctionDefinition","parameters":[{"name":"data","nativeSrc":"17441:4:87","nodeType":"YulTypedName","src":"17441:4:87","type":""},{"name":"len","nativeSrc":"17447:3:87","nodeType":"YulTypedName","src":"17447:3:87","type":""}],"returnVariables":[{"name":"used","nativeSrc":"17455:4:87","nodeType":"YulTypedName","src":"17455:4:87","type":""}],"src":"17379:166:87"},{"body":{"nativeSrc":"17644:1201:87","nodeType":"YulBlock","src":"17644:1201:87","statements":[{"nativeSrc":"17654:24:87","nodeType":"YulVariableDeclaration","src":"17654:24:87","value":{"arguments":[{"name":"src","nativeSrc":"17674:3:87","nodeType":"YulIdentifier","src":"17674:3:87"}],"functionName":{"name":"mload","nativeSrc":"17668:5:87","nodeType":"YulIdentifier","src":"17668:5:87"},"nativeSrc":"17668:10:87","nodeType":"YulFunctionCall","src":"17668:10:87"},"variables":[{"name":"newLen","nativeSrc":"17658:6:87","nodeType":"YulTypedName","src":"17658:6:87","type":""}]},{"body":{"nativeSrc":"17721:22:87","nodeType":"YulBlock","src":"17721:22:87","statements":[{"expression":{"arguments":[],"functionName":{"name":"panic_error_0x41","nativeSrc":"17723:16:87","nodeType":"YulIdentifier","src":"17723:16:87"},"nativeSrc":"17723:18:87","nodeType":"YulFunctionCall","src":"17723:18:87"},"nativeSrc":"17723:18:87","nodeType":"YulExpressionStatement","src":"17723:18:87"}]},"condition":{"arguments":[{"name":"newLen","nativeSrc":"17693:6:87","nodeType":"YulIdentifier","src":"17693:6:87"},{"kind":"number","nativeSrc":"17701:18:87","nodeType":"YulLiteral","src":"17701:18:87","type":"","value":"0xffffffffffffffff"}],"functionName":{"name":"gt","nativeSrc":"17690:2:87","nodeType":"YulIdentifier","src":"17690:2:87"},"nativeSrc":"17690:30:87","nodeType":"YulFunctionCall","src":"17690:30:87"},"nativeSrc":"17687:56:87","nodeType":"YulIf","src":"17687:56:87"},{"expression":{"arguments":[{"name":"slot","nativeSrc":"17795:4:87","nodeType":"YulIdentifier","src":"17795:4:87"},{"arguments":[{"arguments":[{"name":"slot","nativeSrc":"17833:4:87","nodeType":"YulIdentifier","src":"17833:4:87"}],"functionName":{"name":"sload","nativeSrc":"17827:5:87","nodeType":"YulIdentifier","src":"17827:5:87"},"nativeSrc":"17827:11:87","nodeType":"YulFunctionCall","src":"17827:11:87"}],"functionName":{"name":"extract_byte_array_length","nativeSrc":"17801:25:87","nodeType":"YulIdentifier","src":"17801:25:87"},"nativeSrc":"17801:38:87","nodeType":"YulFunctionCall","src":"17801:38:87"},{"name":"newLen","nativeSrc":"17841:6:87","nodeType":"YulIdentifier","src":"17841:6:87"}],"functionName":{"name":"clean_up_bytearray_end_slots_bytes_storage","nativeSrc":"17752:42:87","nodeType":"YulIdentifier","src":"17752:42:87"},"nativeSrc":"17752:96:87","nodeType":"YulFunctionCall","src":"17752:96:87"},"nativeSrc":"17752:96:87","nodeType":"YulExpressionStatement","src":"17752:96:87"},{"nativeSrc":"17857:18:87","nodeType":"YulVariableDeclaration","src":"17857:18:87","value":{"kind":"number","nativeSrc":"17874:1:87","nodeType":"YulLiteral","src":"17874:1:87","type":"","value":"0"},"variables":[{"name":"srcOffset","nativeSrc":"17861:9:87","nodeType":"YulTypedName","src":"17861:9:87","type":""}]},{"nativeSrc":"17884:17:87","nodeType":"YulAssignment","src":"17884:17:87","value":{"kind":"number","nativeSrc":"17897:4:87","nodeType":"YulLiteral","src":"17897:4:87","type":"","value":"0x20"},"variableNames":[{"name":"srcOffset","nativeSrc":"17884:9:87","nodeType":"YulIdentifier","src":"17884:9:87"}]},{"cases":[{"body":{"nativeSrc":"17947:641:87","nodeType":"YulBlock","src":"17947:641:87","statements":[{"nativeSrc":"17961:35:87","nodeType":"YulVariableDeclaration","src":"17961:35:87","value":{"arguments":[{"name":"newLen","nativeSrc":"17980:6:87","nodeType":"YulIdentifier","src":"17980:6:87"},{"arguments":[{"kind":"number","nativeSrc":"17992:2:87","nodeType":"YulLiteral","src":"17992:2:87","type":"","value":"31"}],"functionName":{"name":"not","nativeSrc":"17988:3:87","nodeType":"YulIdentifier","src":"17988:3:87"},"nativeSrc":"17988:7:87","nodeType":"YulFunctionCall","src":"17988:7:87"}],"functionName":{"name":"and","nativeSrc":"17976:3:87","nodeType":"YulIdentifier","src":"17976:3:87"},"nativeSrc":"17976:20:87","nodeType":"YulFunctionCall","src":"17976:20:87"},"variables":[{"name":"loopEnd","nativeSrc":"17965:7:87","nodeType":"YulTypedName","src":"17965:7:87","type":""}]},{"nativeSrc":"18009:48:87","nodeType":"YulVariableDeclaration","src":"18009:48:87","value":{"arguments":[{"name":"slot","nativeSrc":"18052:4:87","nodeType":"YulIdentifier","src":"18052:4:87"}],"functionName":{"name":"array_dataslot_bytes_storage","nativeSrc":"18023:28:87","nodeType":"YulIdentifier","src":"18023:28:87"},"nativeSrc":"18023:34:87","nodeType":"YulFunctionCall","src":"18023:34:87"},"variables":[{"name":"dstPtr","nativeSrc":"18013:6:87","nodeType":"YulTypedName","src":"18013:6:87","type":""}]},{"nativeSrc":"18070:10:87","nodeType":"YulVariableDeclaration","src":"18070:10:87","value":{"kind":"number","nativeSrc":"18079:1:87","nodeType":"YulLiteral","src":"18079:1:87","type":"","value":"0"},"variables":[{"name":"i","nativeSrc":"18074:1:87","nodeType":"YulTypedName","src":"18074:1:87","type":""}]},{"body":{"nativeSrc":"18150:165:87","nodeType":"YulBlock","src":"18150:165:87","statements":[{"expression":{"arguments":[{"name":"dstPtr","nativeSrc":"18175:6:87","nodeType":"YulIdentifier","src":"18175:6:87"},{"arguments":[{"arguments":[{"name":"src","nativeSrc":"18193:3:87","nodeType":"YulIdentifier","src":"18193:3:87"},{"name":"srcOffset","nativeSrc":"18198:9:87","nodeType":"YulIdentifier","src":"18198:9:87"}],"functionName":{"name":"add","nativeSrc":"18189:3:87","nodeType":"YulIdentifier","src":"18189:3:87"},"nativeSrc":"18189:19:87","nodeType":"YulFunctionCall","src":"18189:19:87"}],"functionName":{"name":"mload","nativeSrc":"18183:5:87","nodeType":"YulIdentifier","src":"18183:5:87"},"nativeSrc":"18183:26:87","nodeType":"YulFunctionCall","src":"18183:26:87"}],"functionName":{"name":"sstore","nativeSrc":"18168:6:87","nodeType":"YulIdentifier","src":"18168:6:87"},"nativeSrc":"18168:42:87","nodeType":"YulFunctionCall","src":"18168:42:87"},"nativeSrc":"18168:42:87","nodeType":"YulExpressionStatement","src":"18168:42:87"},{"nativeSrc":"18227:24:87","nodeType":"YulAssignment","src":"18227:24:87","value":{"arguments":[{"name":"dstPtr","nativeSrc":"18241:6:87","nodeType":"YulIdentifier","src":"18241:6:87"},{"kind":"number","nativeSrc":"18249:1:87","nodeType":"YulLiteral","src":"18249:1:87","type":"","value":"1"}],"functionName":{"name":"add","nativeSrc":"18237:3:87","nodeType":"YulIdentifier","src":"18237:3:87"},"nativeSrc":"18237:14:87","nodeType":"YulFunctionCall","src":"18237:14:87"},"variableNames":[{"name":"dstPtr","nativeSrc":"18227:6:87","nodeType":"YulIdentifier","src":"18227:6:87"}]},{"nativeSrc":"18268:33:87","nodeType":"YulAssignment","src":"18268:33:87","value":{"arguments":[{"name":"srcOffset","nativeSrc":"18285:9:87","nodeType":"YulIdentifier","src":"18285:9:87"},{"kind":"number","nativeSrc":"18296:4:87","nodeType":"YulLiteral","src":"18296:4:87","type":"","value":"0x20"}],"functionName":{"name":"add","nativeSrc":"18281:3:87","nodeType":"YulIdentifier","src":"18281:3:87"},"nativeSrc":"18281:20:87","nodeType":"YulFunctionCall","src":"18281:20:87"},"variableNames":[{"name":"srcOffset","nativeSrc":"18268:9:87","nodeType":"YulIdentifier","src":"18268:9:87"}]}]},"condition":{"arguments":[{"name":"i","nativeSrc":"18104:1:87","nodeType":"YulIdentifier","src":"18104:1:87"},{"name":"loopEnd","nativeSrc":"18107:7:87","nodeType":"YulIdentifier","src":"18107:7:87"}],"functionName":{"name":"lt","nativeSrc":"18101:2:87","nodeType":"YulIdentifier","src":"18101:2:87"},"nativeSrc":"18101:14:87","nodeType":"YulFunctionCall","src":"18101:14:87"},"nativeSrc":"18093:222:87","nodeType":"YulForLoop","post":{"nativeSrc":"18116:21:87","nodeType":"YulBlock","src":"18116:21:87","statements":[{"nativeSrc":"18118:17:87","nodeType":"YulAssignment","src":"18118:17:87","value":{"arguments":[{"name":"i","nativeSrc":"18127:1:87","nodeType":"YulIdentifier","src":"18127:1:87"},{"kind":"number","nativeSrc":"18130:4:87","nodeType":"YulLiteral","src":"18130:4:87","type":"","value":"0x20"}],"functionName":{"name":"add","nativeSrc":"18123:3:87","nodeType":"YulIdentifier","src":"18123:3:87"},"nativeSrc":"18123:12:87","nodeType":"YulFunctionCall","src":"18123:12:87"},"variableNames":[{"name":"i","nativeSrc":"18118:1:87","nodeType":"YulIdentifier","src":"18118:1:87"}]}]},"pre":{"nativeSrc":"18097:3:87","nodeType":"YulBlock","src":"18097:3:87","statements":[]},"src":"18093:222:87"},{"body":{"nativeSrc":"18363:166:87","nodeType":"YulBlock","src":"18363:166:87","statements":[{"nativeSrc":"18381:43:87","nodeType":"YulVariableDeclaration","src":"18381:43:87","value":{"arguments":[{"arguments":[{"name":"src","nativeSrc":"18408:3:87","nodeType":"YulIdentifier","src":"18408:3:87"},{"name":"srcOffset","nativeSrc":"18413:9:87","nodeType":"YulIdentifier","src":"18413:9:87"}],"functionName":{"name":"add","nativeSrc":"18404:3:87","nodeType":"YulIdentifier","src":"18404:3:87"},"nativeSrc":"18404:19:87","nodeType":"YulFunctionCall","src":"18404:19:87"}],"functionName":{"name":"mload","nativeSrc":"18398:5:87","nodeType":"YulIdentifier","src":"18398:5:87"},"nativeSrc":"18398:26:87","nodeType":"YulFunctionCall","src":"18398:26:87"},"variables":[{"name":"lastValue","nativeSrc":"18385:9:87","nodeType":"YulTypedName","src":"18385:9:87","type":""}]},{"expression":{"arguments":[{"name":"dstPtr","nativeSrc":"18448:6:87","nodeType":"YulIdentifier","src":"18448:6:87"},{"arguments":[{"name":"lastValue","nativeSrc":"18460:9:87","nodeType":"YulIdentifier","src":"18460:9:87"},{"arguments":[{"arguments":[{"arguments":[{"arguments":[{"kind":"number","nativeSrc":"18487:1:87","nodeType":"YulLiteral","src":"18487:1:87","type":"","value":"3"},{"name":"newLen","nativeSrc":"18490:6:87","nodeType":"YulIdentifier","src":"18490:6:87"}],"functionName":{"name":"shl","nativeSrc":"18483:3:87","nodeType":"YulIdentifier","src":"18483:3:87"},"nativeSrc":"18483:14:87","nodeType":"YulFunctionCall","src":"18483:14:87"},{"kind":"number","nativeSrc":"18499:3:87","nodeType":"YulLiteral","src":"18499:3:87","type":"","value":"248"}],"functionName":{"name":"and","nativeSrc":"18479:3:87","nodeType":"YulIdentifier","src":"18479:3:87"},"nativeSrc":"18479:24:87","nodeType":"YulFunctionCall","src":"18479:24:87"},{"arguments":[{"kind":"number","nativeSrc":"18509:1:87","nodeType":"YulLiteral","src":"18509:1:87","type":"","value":"0"}],"functionName":{"name":"not","nativeSrc":"18505:3:87","nodeType":"YulIdentifier","src":"18505:3:87"},"nativeSrc":"18505:6:87","nodeType":"YulFunctionCall","src":"18505:6:87"}],"functionName":{"name":"shr","nativeSrc":"18475:3:87","nodeType":"YulIdentifier","src":"18475:3:87"},"nativeSrc":"18475:37:87","nodeType":"YulFunctionCall","src":"18475:37:87"}],"functionName":{"name":"not","nativeSrc":"18471:3:87","nodeType":"YulIdentifier","src":"18471:3:87"},"nativeSrc":"18471:42:87","nodeType":"YulFunctionCall","src":"18471:42:87"}],"functionName":{"name":"and","nativeSrc":"18456:3:87","nodeType":"YulIdentifier","src":"18456:3:87"},"nativeSrc":"18456:58:87","nodeType":"YulFunctionCall","src":"18456:58:87"}],"functionName":{"name":"sstore","nativeSrc":"18441:6:87","nodeType":"YulIdentifier","src":"18441:6:87"},"nativeSrc":"18441:74:87","nodeType":"YulFunctionCall","src":"18441:74:87"},"nativeSrc":"18441:74:87","nodeType":"YulExpressionStatement","src":"18441:74:87"}]},"condition":{"arguments":[{"name":"loopEnd","nativeSrc":"18334:7:87","nodeType":"YulIdentifier","src":"18334:7:87"},{"name":"newLen","nativeSrc":"18343:6:87","nodeType":"YulIdentifier","src":"18343:6:87"}],"functionName":{"name":"lt","nativeSrc":"18331:2:87","nodeType":"YulIdentifier","src":"18331:2:87"},"nativeSrc":"18331:19:87","nodeType":"YulFunctionCall","src":"18331:19:87"},"nativeSrc":"18328:201:87","nodeType":"YulIf","src":"18328:201:87"},{"expression":{"arguments":[{"name":"slot","nativeSrc":"18549:4:87","nodeType":"YulIdentifier","src":"18549:4:87"},{"arguments":[{"arguments":[{"kind":"number","nativeSrc":"18563:1:87","nodeType":"YulLiteral","src":"18563:1:87","type":"","value":"1"},{"name":"newLen","nativeSrc":"18566:6:87","nodeType":"YulIdentifier","src":"18566:6:87"}],"functionName":{"name":"shl","nativeSrc":"18559:3:87","nodeType":"YulIdentifier","src":"18559:3:87"},"nativeSrc":"18559:14:87","nodeType":"YulFunctionCall","src":"18559:14:87"},{"kind":"number","nativeSrc":"18575:1:87","nodeType":"YulLiteral","src":"18575:1:87","type":"","value":"1"}],"functionName":{"name":"add","nativeSrc":"18555:3:87","nodeType":"YulIdentifier","src":"18555:3:87"},"nativeSrc":"18555:22:87","nodeType":"YulFunctionCall","src":"18555:22:87"}],"functionName":{"name":"sstore","nativeSrc":"18542:6:87","nodeType":"YulIdentifier","src":"18542:6:87"},"nativeSrc":"18542:36:87","nodeType":"YulFunctionCall","src":"18542:36:87"},"nativeSrc":"18542:36:87","nodeType":"YulExpressionStatement","src":"18542:36:87"}]},"nativeSrc":"17940:648:87","nodeType":"YulCase","src":"17940:648:87","value":{"kind":"number","nativeSrc":"17945:1:87","nodeType":"YulLiteral","src":"17945:1:87","type":"","value":"1"}},{"body":{"nativeSrc":"18605:234:87","nodeType":"YulBlock","src":"18605:234:87","statements":[{"nativeSrc":"18619:14:87","nodeType":"YulVariableDeclaration","src":"18619:14:87","value":{"kind":"number","nativeSrc":"18632:1:87","nodeType":"YulLiteral","src":"18632:1:87","type":"","value":"0"},"variables":[{"name":"value","nativeSrc":"18623:5:87","nodeType":"YulTypedName","src":"18623:5:87","type":""}]},{"body":{"nativeSrc":"18668:67:87","nodeType":"YulBlock","src":"18668:67:87","statements":[{"nativeSrc":"18686:35:87","nodeType":"YulAssignment","src":"18686:35:87","value":{"arguments":[{"arguments":[{"name":"src","nativeSrc":"18705:3:87","nodeType":"YulIdentifier","src":"18705:3:87"},{"name":"srcOffset","nativeSrc":"18710:9:87","nodeType":"YulIdentifier","src":"18710:9:87"}],"functionName":{"name":"add","nativeSrc":"18701:3:87","nodeType":"YulIdentifier","src":"18701:3:87"},"nativeSrc":"18701:19:87","nodeType":"YulFunctionCall","src":"18701:19:87"}],"functionName":{"name":"mload","nativeSrc":"18695:5:87","nodeType":"YulIdentifier","src":"18695:5:87"},"nativeSrc":"18695:26:87","nodeType":"YulFunctionCall","src":"18695:26:87"},"variableNames":[{"name":"value","nativeSrc":"18686:5:87","nodeType":"YulIdentifier","src":"18686:5:87"}]}]},"condition":{"name":"newLen","nativeSrc":"18649:6:87","nodeType":"YulIdentifier","src":"18649:6:87"},"nativeSrc":"18646:89:87","nodeType":"YulIf","src":"18646:89:87"},{"expression":{"arguments":[{"name":"slot","nativeSrc":"18755:4:87","nodeType":"YulIdentifier","src":"18755:4:87"},{"arguments":[{"name":"value","nativeSrc":"18814:5:87","nodeType":"YulIdentifier","src":"18814:5:87"},{"name":"newLen","nativeSrc":"18821:6:87","nodeType":"YulIdentifier","src":"18821:6:87"}],"functionName":{"name":"extract_used_part_and_set_length_of_short_byte_array","nativeSrc":"18761:52:87","nodeType":"YulIdentifier","src":"18761:52:87"},"nativeSrc":"18761:67:87","nodeType":"YulFunctionCall","src":"18761:67:87"}],"functionName":{"name":"sstore","nativeSrc":"18748:6:87","nodeType":"YulIdentifier","src":"18748:6:87"},"nativeSrc":"18748:81:87","nodeType":"YulFunctionCall","src":"18748:81:87"},"nativeSrc":"18748:81:87","nodeType":"YulExpressionStatement","src":"18748:81:87"}]},"nativeSrc":"18597:242:87","nodeType":"YulCase","src":"18597:242:87","value":"default"}],"expression":{"arguments":[{"name":"newLen","nativeSrc":"17920:6:87","nodeType":"YulIdentifier","src":"17920:6:87"},{"kind":"number","nativeSrc":"17928:2:87","nodeType":"YulLiteral","src":"17928:2:87","type":"","value":"31"}],"functionName":{"name":"gt","nativeSrc":"17917:2:87","nodeType":"YulIdentifier","src":"17917:2:87"},"nativeSrc":"17917:14:87","nodeType":"YulFunctionCall","src":"17917:14:87"},"nativeSrc":"17910:929:87","nodeType":"YulSwitch","src":"17910:929:87"}]},"name":"copy_byte_array_to_storage_from_t_bytes_memory_ptr_to_t_bytes_storage","nativeSrc":"17550:1295:87","nodeType":"YulFunctionDefinition","parameters":[{"name":"slot","nativeSrc":"17629:4:87","nodeType":"YulTypedName","src":"17629:4:87","type":""},{"name":"src","nativeSrc":"17635:3:87","nodeType":"YulTypedName","src":"17635:3:87","type":""}],"src":"17550:1295:87"}]},"contents":"{\n    { }\n    function validator_revert_uint8(value)\n    {\n        if iszero(eq(value, and(value, 0xff))) { revert(0, 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 allocate_memory_2750() -> memPtr\n    {\n        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    }\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, 0xffffffffffffffff), lt(newFreePtr, memPtr)) { panic_error_0x41() }\n        mstore(64, newFreePtr)\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), not(31)), 0x20)\n    }\n    function abi_decode_bytes(offset, end) -> array\n    {\n        if iszero(slt(add(offset, 0x1f), end)) { revert(0, 0) }\n        let length := calldataload(offset)\n        let array_1 := allocate_memory(array_allocation_size_bytes(length))\n        mstore(array_1, length)\n        if gt(add(add(offset, length), 0x20), end) { revert(0, 0) }\n        calldatacopy(add(array_1, 0x20), add(offset, 0x20), length)\n        mstore(add(add(array_1, length), 0x20), 0)\n        array := array_1\n    }\n    function abi_decode_tuple_t_uint8t_bytes_memory_ptr(headStart, dataEnd) -> value0, value1\n    {\n        if slt(sub(dataEnd, headStart), 64) { revert(0, 0) }\n        let value := calldataload(headStart)\n        validator_revert_uint8(value)\n        value0 := value\n        let offset := calldataload(add(headStart, 32))\n        if gt(offset, 0xffffffffffffffff) { revert(0, 0) }\n        value1 := abi_decode_bytes(add(headStart, offset), dataEnd)\n    }\n    function abi_encode_bytes(value, pos) -> end\n    {\n        let length := mload(value)\n        mstore(pos, length)\n        mcopy(add(pos, 0x20), add(value, 0x20), length)\n        mstore(add(add(pos, length), 0x20), 0)\n        end := add(add(pos, and(add(length, 31), not(31))), 0x20)\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_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_contract$_AggregatorV3Interface_$20542__to_t_address__fromStack_reversed(headStart, value0) -> tail\n    {\n        tail := add(headStart, 32)\n        mstore(headStart, and(value0, sub(shl(160, 1), 1)))\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_address(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, sub(shl(160, 1), 1)))) { revert(0, 0) }\n        value0 := value\n    }\n    function panic_error_0x21()\n    {\n        mstore(0, shl(224, 0x4e487b71))\n        mstore(4, 0x21)\n        revert(0, 0x24)\n    }\n    function abi_encode_struct_SwapConfig(value, pos) -> end\n    {\n        let _1 := mload(value)\n        if iszero(lt(_1, 3))\n        {\n            mstore(0, shl(224, 0x4e487b71))\n            mstore(4, 0x21)\n            revert(0, 0x24)\n        }\n        mstore(pos, _1)\n        mstore(add(pos, 0x20), mload(add(value, 0x20)))\n        let memberValue0 := mload(add(value, 0x40))\n        mstore(add(pos, 0x40), 0x60)\n        end := abi_encode_bytes(memberValue0, add(pos, 0x60))\n    }\n    function abi_encode_tuple_t_struct$_SwapConfig_$1113_memory_ptr__to_t_struct$_SwapConfig_$1113_memory_ptr__fromStack_reversed(headStart, value0) -> tail\n    {\n        mstore(headStart, 32)\n        tail := abi_encode_struct_SwapConfig(value0, add(headStart, 32))\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        if iszero(eq(value, iszero(iszero(value)))) { revert(0, 0) }\n        value0 := value\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_address__to_t_address__fromStack_reversed(headStart, value0) -> tail\n    {\n        tail := add(headStart, 32)\n        mstore(headStart, and(value0, sub(shl(160, 1), 1)))\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        if gt(offset, 0xffffffffffffffff) { revert(0, 0) }\n        value0 := abi_decode_bytes(add(headStart, offset), dataEnd)\n    }\n    function abi_encode_tuple_t_contract$_IMerklDistributor_$23442__to_t_address__fromStack_reversed(headStart, value0) -> tail\n    {\n        tail := add(headStart, 32)\n        mstore(headStart, and(value0, sub(shl(160, 1), 1)))\n    }\n    function abi_decode_tuple_t_uint256_fromMemory(headStart, dataEnd) -> value0\n    {\n        if slt(sub(dataEnd, headStart), 32) { revert(0, 0) }\n        let value := 0\n        value := mload(headStart)\n        value0 := value\n    }\n    function abi_encode_tuple_t_struct$_SwapConfig_$1113_memory_ptr_t_address_t_address_t_uint256_t_uint256__to_t_struct$_SwapConfig_$1113_memory_ptr_t_address_t_address_t_uint256_t_uint256__fromStack_library_reversed(headStart, value4, value3, value2, value1, value0) -> tail\n    {\n        mstore(headStart, 160)\n        tail := abi_encode_struct_SwapConfig(value0, add(headStart, 160))\n        mstore(add(headStart, 32), and(value1, sub(shl(160, 1), 1)))\n        mstore(add(headStart, 64), and(value2, sub(shl(160, 1), 1)))\n        mstore(add(headStart, 96), value3)\n        mstore(add(headStart, 128), value4)\n    }\n    function abi_decode_tuple_t_uint256t_array$_t_bytes32_$dyn_memory_ptr_fromMemory(headStart, dataEnd) -> value0, value1\n    {\n        if slt(sub(dataEnd, headStart), 64) { revert(0, 0) }\n        let value := 0\n        value := mload(headStart)\n        value0 := value\n        let offset := mload(add(headStart, 32))\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 length := mload(_1)\n        if gt(length, 0xffffffffffffffff) { panic_error_0x41() }\n        let _2 := shl(5, length)\n        let dst := allocate_memory(add(_2, 32))\n        let array := dst\n        mstore(dst, length)\n        dst := add(dst, 32)\n        let srcEnd := add(add(_1, _2), 32)\n        if gt(srcEnd, dataEnd) { revert(0, 0) }\n        let src := add(_1, 32)\n        for { } lt(src, srcEnd) { src := add(src, 32) }\n        {\n            mstore(dst, mload(src))\n            dst := add(dst, 32)\n        }\n        value1 := array\n    }\n    function panic_error_0x32()\n    {\n        mstore(0, shl(224, 0x4e487b71))\n        mstore(4, 0x32)\n        revert(0, 0x24)\n    }\n    function abi_encode_array_address_dyn(value, pos) -> end\n    {\n        let length := mload(value)\n        mstore(pos, length)\n        pos := add(pos, 0x20)\n        let srcPtr := add(value, 0x20)\n        let i := 0\n        for { } lt(i, length) { i := add(i, 1) }\n        {\n            mstore(pos, and(mload(srcPtr), sub(shl(160, 1), 1)))\n            pos := add(pos, 0x20)\n            srcPtr := add(srcPtr, 0x20)\n        }\n        end := pos\n    }\n    function abi_encode_tuple_t_array$_t_address_$dyn_memory_ptr_t_array$_t_address_$dyn_memory_ptr_t_array$_t_uint256_$dyn_memory_ptr_t_array$_t_array$_t_bytes32_$dyn_memory_ptr_$dyn_memory_ptr__to_t_array$_t_address_$dyn_memory_ptr_t_array$_t_address_$dyn_memory_ptr_t_array$_t_uint256_$dyn_memory_ptr_t_array$_t_array$_t_bytes32_$dyn_memory_ptr_$dyn_memory_ptr__fromStack_reversed(headStart, value3, value2, value1, value0) -> tail\n    {\n        mstore(headStart, 128)\n        let tail_1 := abi_encode_array_address_dyn(value0, add(headStart, 128))\n        mstore(add(headStart, 32), sub(tail_1, headStart))\n        let tail_2 := abi_encode_array_address_dyn(value1, tail_1)\n        mstore(add(headStart, 64), sub(tail_2, headStart))\n        let pos := tail_2\n        let length := mload(value2)\n        mstore(tail_2, length)\n        pos := add(tail_2, 32)\n        let srcPtr := add(value2, 32)\n        let i := 0\n        for { } lt(i, length) { i := add(i, 1) }\n        {\n            mstore(pos, mload(srcPtr))\n            pos := add(pos, 32)\n            srcPtr := add(srcPtr, 32)\n        }\n        mstore(add(headStart, 96), sub(pos, headStart))\n        let pos_1 := pos\n        let length_1 := mload(value3)\n        mstore(pos, length_1)\n        pos_1 := add(pos, 32)\n        let tail_3 := add(add(pos, shl(5, length_1)), 32)\n        let srcPtr_1 := add(value3, 32)\n        let i_1 := 0\n        for { } lt(i_1, length_1) { i_1 := add(i_1, 1) }\n        {\n            mstore(pos_1, add(sub(tail_3, pos), not(31)))\n            let _1 := mload(srcPtr_1)\n            let pos_2 := tail_3\n            let length_2 := mload(_1)\n            mstore(tail_3, length_2)\n            pos_2 := add(tail_3, 32)\n            let srcPtr_2 := add(_1, 32)\n            let i_2 := 0\n            for { } lt(i_2, length_2) { i_2 := add(i_2, 1) }\n            {\n                mstore(pos_2, mload(srcPtr_2))\n                pos_2 := add(pos_2, 32)\n                srcPtr_2 := add(srcPtr_2, 32)\n            }\n            tail_3 := pos_2\n            srcPtr_1 := add(srcPtr_1, 32)\n            pos_1 := add(pos_1, 32)\n        }\n        tail := tail_3\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_decode_uint80_fromMemory(offset) -> value\n    {\n        value := mload(offset)\n        if iszero(eq(value, and(value, 0xffffffffffffffffffff))) { revert(0, 0) }\n    }\n    function abi_decode_tuple_t_uint80t_int256t_uint256t_uint256t_uint80_fromMemory(headStart, dataEnd) -> value0, value1, value2, value3, value4\n    {\n        if slt(sub(dataEnd, headStart), 160) { revert(0, 0) }\n        value0 := abi_decode_uint80_fromMemory(headStart)\n        value1 := mload(add(headStart, 32))\n        let value := 0\n        value := mload(add(headStart, 64))\n        value2 := value\n        let value_1 := 0\n        value_1 := mload(add(headStart, 96))\n        value3 := value_1\n        value4 := abi_decode_uint80_fromMemory(add(headStart, 128))\n    }\n    function panic_error_0x11()\n    {\n        mstore(0, shl(224, 0x4e487b71))\n        mstore(4, 0x11)\n        revert(0, 0x24)\n    }\n    function checked_sub_t_uint256(x, y) -> diff\n    {\n        diff := sub(x, y)\n        if gt(diff, x) { panic_error_0x11() }\n    }\n    function abi_encode_tuple_t_int256__to_t_int256__fromStack_reversed(headStart, value0) -> tail\n    {\n        tail := add(headStart, 32)\n        mstore(headStart, value0)\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        validator_revert_uint8(value)\n        value0 := value\n    }\n    function checked_sub_t_uint8(x, y) -> diff\n    {\n        diff := sub(and(x, 0xff), and(y, 0xff))\n        if gt(diff, 0xff) { panic_error_0x11() }\n    }\n    function checked_exp_helper(_base, exponent, max) -> power, base\n    {\n        power := 1\n        base := _base\n        for { } gt(exponent, 1) { }\n        {\n            if gt(base, div(max, base)) { panic_error_0x11() }\n            if and(exponent, 1) { power := mul(power, base) }\n            base := mul(base, base)\n            exponent := shr(1, exponent)\n        }\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            let _1 := 0\n            _1 := 0\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            let _2 := 0\n            _2 := 0\n            leave\n        }\n        let power_1, base_1 := checked_exp_helper(base, exponent, not(0))\n        if gt(power_1, div(not(0), base_1)) { panic_error_0x11() }\n        power := mul(power_1, base_1)\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_mul_t_uint256(x, y) -> product\n    {\n        product := mul(x, y)\n        if iszero(or(iszero(x), eq(y, div(product, x)))) { panic_error_0x11() }\n    }\n    function panic_error_0x12()\n    {\n        mstore(0, shl(224, 0x4e487b71))\n        mstore(4, 0x12)\n        revert(0, 0x24)\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 abi_decode_bytes_fromMemory(offset, end) -> array\n    {\n        if iszero(slt(add(offset, 0x1f), end)) { revert(0, 0) }\n        let length := mload(offset)\n        let array_1 := allocate_memory(array_allocation_size_bytes(length))\n        mstore(array_1, length)\n        if gt(add(add(offset, length), 0x20), end) { revert(0, 0) }\n        mcopy(add(array_1, 0x20), add(offset, 0x20), length)\n        mstore(add(add(array_1, length), 0x20), 0)\n        array := array_1\n    }\n    function abi_decode_tuple_t_struct$_SwapConfig_$1113_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 slt(sub(dataEnd, _1), 0x60) { revert(0, 0) }\n        let value := allocate_memory_2750()\n        let value_1 := mload(_1)\n        if iszero(lt(value_1, 3)) { revert(0, 0) }\n        mstore(value, value_1)\n        let value_2 := 0\n        value_2 := mload(add(_1, 32))\n        mstore(add(value, 32), value_2)\n        let offset_1 := mload(add(_1, 64))\n        if gt(offset_1, 0xffffffffffffffff) { revert(0, 0) }\n        mstore(add(value, 64), abi_decode_bytes_fromMemory(add(_1, offset_1), dataEnd))\n        value0 := value\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 abi_decode_tuple_t_bytes_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        value0 := abi_decode_bytes_fromMemory(add(headStart, offset), dataEnd)\n    }\n    function abi_encode_tuple_t_struct$_SwapConfig_$1113_memory_ptr__to_t_struct$_SwapConfig_$1113_memory_ptr__fromStack_library_reversed(headStart, value0) -> tail\n    {\n        mstore(headStart, 32)\n        tail := abi_encode_struct_SwapConfig(value0, add(headStart, 32))\n    }\n    function abi_encode_tuple_t_struct$_SwapConfig_$1113_memory_ptr_t_struct$_SwapConfig_$1113_memory_ptr__to_t_struct$_SwapConfig_$1113_memory_ptr_t_struct$_SwapConfig_$1113_memory_ptr__fromStack_reversed(headStart, value1, value0) -> tail\n    {\n        mstore(headStart, 64)\n        let tail_1 := abi_encode_struct_SwapConfig(value0, add(headStart, 64))\n        mstore(add(headStart, 32), sub(tail_1, headStart))\n        tail := abi_encode_struct_SwapConfig(value1, tail_1)\n    }\n    function array_dataslot_bytes_storage(ptr) -> data\n    {\n        mstore(0, ptr)\n        data := keccak256(0, 0x20)\n    }\n    function clean_up_bytearray_end_slots_bytes_storage(array, len, startIndex)\n    {\n        if gt(len, 31)\n        {\n            mstore(0, array)\n            let data := keccak256(0, 0x20)\n            let deleteStart := add(data, shr(5, add(startIndex, 31)))\n            if lt(startIndex, 0x20) { deleteStart := data }\n            let _1 := add(data, shr(5, add(len, 31)))\n            let start := deleteStart\n            for { } lt(start, _1) { start := add(start, 1) }\n            { sstore(start, 0) }\n        }\n    }\n    function extract_used_part_and_set_length_of_short_byte_array(data, len) -> used\n    {\n        used := or(and(data, not(shr(shl(3, len), not(0)))), shl(1, len))\n    }\n    function copy_byte_array_to_storage_from_t_bytes_memory_ptr_to_t_bytes_storage(slot, src)\n    {\n        let newLen := mload(src)\n        if gt(newLen, 0xffffffffffffffff) { panic_error_0x41() }\n        clean_up_bytearray_end_slots_bytes_storage(slot, extract_byte_array_length(sload(slot)), newLen)\n        let srcOffset := 0\n        srcOffset := 0x20\n        switch gt(newLen, 31)\n        case 1 {\n            let loopEnd := and(newLen, not(31))\n            let dstPtr := array_dataslot_bytes_storage(slot)\n            let i := 0\n            for { } lt(i, loopEnd) { i := add(i, 0x20) }\n            {\n                sstore(dstPtr, mload(add(src, srcOffset)))\n                dstPtr := add(dstPtr, 1)\n                srcOffset := add(srcOffset, 0x20)\n            }\n            if lt(loopEnd, newLen)\n            {\n                let lastValue := mload(add(src, srcOffset))\n                sstore(dstPtr, and(lastValue, not(shr(and(shl(3, newLen), 248), not(0)))))\n            }\n            sstore(slot, add(shl(1, newLen), 1))\n        }\n        default {\n            let value := 0\n            if newLen\n            {\n                value := mload(add(src, srcOffset))\n            }\n            sstore(slot, extract_used_part_and_set_length_of_short_byte_array(value, newLen))\n        }\n    }\n}","id":87,"language":"Yul","name":"#utility.yul"}],"immutableReferences":{"22223":[{"length":32,"start":334},{"length":32,"start":1137}],"22226":[{"length":32,"start":469},{"length":32,"start":1087}],"22228":[{"length":32,"start":508},{"length":32,"start":4131},{"length":32,"start":4180}],"23455":[{"length":32,"start":694},{"length":32,"start":3020}],"23946":[{"length":32,"start":829},{"length":32,"start":1193},{"length":32,"start":1981},{"length":32,"start":2105},{"length":32,"start":2230},{"length":32,"start":3849}],"23952":[{"length":32,"start":566},{"length":32,"start":4645},{"length":32,"start":5056},{"length":32,"start":5448}],"23955":[{"length":32,"start":617},{"length":32,"start":1520},{"length":32,"start":1820},{"length":32,"start":2337},{"length":32,"start":3467},{"length":32,"start":4858}],"23958":[{"length":32,"start":764},{"length":32,"start":1318},{"length":32,"start":1486},{"length":32,"start":1786},{"length":32,"start":2370},{"length":32,"start":2552},{"length":32,"start":2934},{"length":32,"start":3279},{"length":32,"start":3434},{"length":32,"start":3757},{"length":32,"start":4905}]},"linkReferences":{"@ensuro/swaplibrary/contracts/SwapLibrary.sol":{"SwapLibrary":[{"length":20,"start":1456},{"length":20,"start":1752},{"length":20,"start":2309},{"length":20,"start":3406},{"length":20,"start":5240}]}},"object":"608060405234801561000f575f5ffd5b5060043610610106575f3560e01c80635a1174561161009e578063b6b55f251161006e578063b6b55f251461029e578063bfe10928146102b1578063ce96cb77146102d8578063de846ae4146102eb578063f3e0ffbf1461031e575f5ffd5b80635a1174561461021e5780635b9a4c35146102315780639c4667a2146102585780639cd471281461028b575f5ffd5b8063402d267d116100d9578063402d267d1461019d57806342b054f0146101b057806352ebfa29146101d057806359011cd1146101f7575f5ffd5b80630981b1c21461010a5780631418983b146101335780631d4d3a5d146101495780632e1a7d4d14610188575b5f5ffd5b61011d6101183660046117cd565b610331565b60405161012a9190611848565b60405180910390f35b61013b610436565b60405190815260200161012a565b6101707f000000000000000000000000000000000000000000000000000000000000000081565b6040516001600160a01b03909116815260200161012a565b61019b61019636600461185a565b61049f565b005b61013b6101ab366004611871565b505f90565b6101c36101be366004611871565b61078f565b60405161012a91906118f1565b6101707f000000000000000000000000000000000000000000000000000000000000000081565b61013b7f000000000000000000000000000000000000000000000000000000000000000081565b61019b61022c366004611903565b6107b3565b61013b7f000000000000000000000000000000000000000000000000000000000000000081565b610170610266366004611871565b507f000000000000000000000000000000000000000000000000000000000000000090565b61019b610299366004611922565b61082f565b61019b6102ac36600461185a565b6108ac565b6101707f000000000000000000000000000000000000000000000000000000000000000081565b61013b6102e6366004611871565b6109cd565b6101706102f9366004611871565b507f000000000000000000000000000000000000000000000000000000000000000090565b61013b61032c366004611871565b6109d3565b60606001600160a01b037f000000000000000000000000000000000000000000000000000000000000000016300361037c57604051632abf118b60e21b815260040160405180910390fd5b5f8360ff16600381111561039257610392611897565b905060018160038111156103a8576103a8611897565b036103bb576103b683610a67565b61042e565b60028160038111156103cf576103cf611897565b036103e7576103dd83610a67565b6103b65f19610cb2565b60038160038111156103fb576103fb611897565b0361041c576103b6838060200190518101906104179190611954565b610cb2565b6104268484610efd565b915050610430565b505b92915050565b5f61049a6104637f0000000000000000000000000000000000000000000000000000000000000000610f9a565b670de0b6b3a76400006104957f0000000000000000000000000000000000000000000000000000000000000000610f9a565b611157565b905090565b6001600160a01b037f00000000000000000000000000000000000000000000000000000000000000001630036104e857604051632abf118b60e21b815260040160405180910390fd5b801561078c575f6104f7611208565b90505f6105026112de565b6040516370a0823160e01b8152306004820152909150610595906001600160a01b037f000000000000000000000000000000000000000000000000000000000000000016906370a0823190602401602060405180830381865afa15801561056b573d5f5f3e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061058f9190611954565b306112f4565b83106106c9576040516370a0823160e01b815230600482015273__$acbb9ece542dcf2065f41aa3c8cca5827e$__9063775669159084907f0000000000000000000000000000000000000000000000000000000000000000907f0000000000000000000000000000000000000000000000000000000000000000906001600160a01b038316906370a0823190602401602060405180830381865afa15801561063f573d5f5f3e3d5ffd5b505050506040513d601f19601f820116820180604052508101906106639190611954565b866040518663ffffffff1660e01b815260040161068495949392919061196b565b602060405180830381865af415801561069f573d5f5f3e3d5ffd5b505050506040513d601f19601f820116820180604052508101906106c39190611954565b50610789565b60405163581e517d60e01b815273__$acbb9ece542dcf2065f41aa3c8cca5827e$__9063581e517d906107489085907f0000000000000000000000000000000000000000000000000000000000000000907f0000000000000000000000000000000000000000000000000000000000000000908990889060040161196b565b602060405180830381865af4158015610763573d5f5f3e3d5ffd5b505050506040513d601f19601f820116820180604052508101906107879190611954565b505b50505b50565b60408051606080820183525f80835260208301529181019190915261043082611396565b6001600160a01b037f00000000000000000000000000000000000000000000000000000000000000001630036107fc57604051632abf118b60e21b815260040160405180910390fd5b80158015610811575061080e306109d3565b15155b1561078c576040516342a176d160e11b815260040160405180910390fd5b6001600160a01b037f000000000000000000000000000000000000000000000000000000000000000016300361087857604051632abf118b60e21b815260040160405180910390fd5b604080516060810190915261078c90805f81526020015f815260200160405180602001604052805f81525081525082611451565b6001600160a01b037f00000000000000000000000000000000000000000000000000000000000000001630036108f557604051632abf118b60e21b815260040160405180910390fd5b801561078c57610903611208565b73__$acbb9ece542dcf2065f41aa3c8cca5827e$__637756691590917f00000000000000000000000000000000000000000000000000000000000000007f00000000000000000000000000000000000000000000000000000000000000008561096a610436565b6040518663ffffffff1660e01b815260040161098a95949392919061196b565b602060405180830381865af41580156109a5573d5f5f3e3d5ffd5b505050506040513d601f19601f820116820180604052508101906109c99190611954565b5050565b5f610430825b6040516370a0823160e01b81526001600160a01b0382811660048301525f91610430917f000000000000000000000000000000000000000000000000000000000000000016906370a0823190602401602060405180830381865afa158015610a3d573d5f5f3e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610a619190611954565b836112f4565b6040805160018082528183019092525f916020808301908036833750506040805160018082528183019092529293505f9291506020808301908036833750506040805160018082528183019092529293505f9291506020808301908036833750506040805160018082528183019092529293505f929150602082015b6060815260200190600190039081610ae357905050905084806020019051810190610b0e91906119aa565b855f81518110610b2057610b20611a5f565b60200260200101835f81518110610b3957610b39611a5f565b6020026020010182905282815250505030835f81518110610b5c57610b5c611a5f565b6001600160a01b03909216602092830291909101909101527f0000000000000000000000000000000000000000000000000000000000000000825f81518110610ba757610ba7611a5f565b6001600160a01b0392831660209182029290920101526040516301c7ba5760e61b81527f0000000000000000000000000000000000000000000000000000000000000000909116906371ee95c090610c09908690869089908790600401611ab6565b5f604051808303815f87803b158015610c20575f5ffd5b505af1158015610c32573d5f5f3e3d5ffd5b50505050815f81518110610c4857610c48611a5f565b60200260200101516001600160a01b03167ffc30cddea38e2bf4d6ea7d3f9ed3b6ad7f176419f4963bd81318067a4aee73fe855f81518110610c8c57610c8c611a5f565b6020026020010151604051610ca391815260200190565b60405180910390a25050505050565b5f198103610d43576040516370a0823160e01b81523060048201527f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316906370a0823190602401602060405180830381865afa158015610d1c573d5f5f3e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610d409190611954565b90505b5f610d4c611208565b73__$acbb9ece542dcf2065f41aa3c8cca5827e$__637756691590917f00000000000000000000000000000000000000000000000000000000000000007f000000000000000000000000000000000000000000000000000000000000000086610db36112de565b6040518663ffffffff1660e01b8152600401610dd395949392919061196b565b602060405180830381865af4158015610dee573d5f5f3e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610e129190611954565b9050610e9481604051602401610e2a91815260200190565b60408051601f198184030181529190526020810180516001600160e01b031663230a5c4b60e11b179052610e857f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc546001600160a01b031690565b6001600160a01b031690611571565b5060408051838152602081018390526001600160a01b037f000000000000000000000000000000000000000000000000000000000000000016917f1704c39241bc5ffa667c69806b5ba3acd0d4637515695bab7a812e01e5ee27eb910160405180910390a25050565b60606001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000163003610f4857604051632abf118b60e21b815260040160405180910390fd5b5f60ff84168015610f5b57610f5b611897565b90505f818015610f6d57610f6d611897565b0361010657610f84610f7e30611396565b84611451565b505060408051602081019091525f815292915050565b5f6001600160a01b038216610fb85750670de0b6b3a7640000919050565b5f5f836001600160a01b031663feaf968c6040518163ffffffff1660e01b815260040160a060405180830381865afa158015610ff6573d5f5f3e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061101a9190611bbe565b509350509250507f00000000000000000000000000000000000000000000000000000000000000004261104d9190611c20565b81116110797f000000000000000000000000000000000000000000000000000000000000000042611c20565b8290916110a757604051633156ea9360e01b8152600481019290925260248201526044015b60405180910390fd5b50505f821382906110ce576040516338ee04a760e01b815260040161109e91815260200190565b50836001600160a01b031663313ce5676040518163ffffffff1660e01b8152600401602060405180830381865afa15801561110b573d5f5f3e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061112f9190611c33565b61113a906012611c4e565b61114590600a611d4a565b61114f9083611d58565b949350505050565b5f5f5f61116486866115fd565b91509150815f036111885783818161117e5761117e611d6f565b0492505050611201565b81841161119f5761119f6003851502601118611619565b5f848688095f868103871696879004966002600389028118808a02820302808a02820302808a02820302808a02820302808a02820302808a02909103029181900381900460010185841190960395909502919093039390930492909217029150505b9392505050565b60408051606080820183525f8083526020830152918101919091527f0000000000000000000000000000000000000000000000000000000000000000805461124f90611d83565b80601f016020809104026020016040519081016040528092919081815260200182805461127b90611d83565b80156112c65780601f1061129d576101008083540402835291602001916112c6565b820191905f5260205f20905b8154815290600101906020018083116112a957829003601f168201915b505050505080602001905181019061049a9190611e08565b5f61049a670de0b6b3a764000080610495610436565b5f61131e7f000000000000000000000000000000000000000000000000000000000000000061162a565b61138c61136d61134d7f000000000000000000000000000000000000000000000000000000000000000061162a565b6113579087611d58565b61135f610436565b670de0b6b3a7640000611157565b61137685611396565b6020015161135f90670de0b6b3a7640000611c20565b6112019190611e94565b60408051606080820183525f8083526020830152918101919091526040516347e5753360e01b81527f000000000000000000000000000000000000000000000000000000000000000060048201525f906001600160a01b038416906347e57533906024015f60405180830381865afa158015611414573d5f5f3e3d5ffd5b505050506040513d5f823e601f3d908101601f1916820160405261143b9190810190611eb3565b9050808060200190518101906112019190611e08565b5f818060200190518101906114669190611e08565b604051632cbf28cb60e21b815290915073__$acbb9ece542dcf2065f41aa3c8cca5827e$__9063b2fca32c906114a09084906004016118f1565b5f6040518083038186803b1580156114b6575f5ffd5b505af41580156114c8573d5f5f3e3d5ffd5b505050508151816040516020016114df91906118f1565b604051602081830303815290604052511461150d576040516350701b6160e01b815260040160405180910390fd5b7fca7f7aa563866a1d31c74deba224724d1da9c35cbb6f783f2ccf0182f91e34f8838260405161153e929190611ee5565b60405180910390a17f00000000000000000000000000000000000000000000000000000000000000006107878382611f5d565b60605f61157e84846116a1565b905080801561159f57505f3d118061159f57505f846001600160a01b03163b115b156115ac576104266116b4565b80156115d657604051639996b31560e01b81526001600160a01b038516600482015260240161109e565b3d156115e4576103b66116cd565b60405163d6bda27560e01b815260040160405180910390fd5b5f805f1983850993909202808410938190039390930393915050565b634e487b715f52806020526024601cfd5b5f816001600160a01b031663313ce5676040518163ffffffff1660e01b8152600401602060405180830381865afa158015611667573d5f5f3e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061168b9190611c33565b611696906012611c4e565b61043090600a611d4a565b5f5f5f835160208501865af49392505050565b6040513d81523d5f602083013e3d602001810160405290565b6040513d5f823e3d81fd5b60ff8116811461078c575f5ffd5b634e487b7160e01b5f52604160045260245ffd5b6040516060810167ffffffffffffffff8111828210171561171d5761171d6116e6565b60405290565b604051601f8201601f1916810167ffffffffffffffff8111828210171561174c5761174c6116e6565b604052919050565b5f67ffffffffffffffff82111561176d5761176d6116e6565b50601f01601f191660200190565b5f82601f83011261178a575f5ffd5b813561179d61179882611754565b611723565b8181528460208386010111156117b1575f5ffd5b816020850160208301375f918101602001919091529392505050565b5f5f604083850312156117de575f5ffd5b82356117e9816116d8565b9150602083013567ffffffffffffffff811115611804575f5ffd5b6118108582860161177b565b9150509250929050565b5f81518084528060208401602086015e5f602082860101526020601f19601f83011685010191505092915050565b602081525f611201602083018461181a565b5f6020828403121561186a575f5ffd5b5035919050565b5f60208284031215611881575f5ffd5b81356001600160a01b0381168114611201575f5ffd5b634e487b7160e01b5f52602160045260245ffd5b5f8151600381106118ca57634e487b7160e01b5f52602160045260245ffd5b808452506020820151602084015260408201516060604085015261114f606085018261181a565b602081525f61120160208301846118ab565b5f60208284031215611913575f5ffd5b81358015158114611201575f5ffd5b5f60208284031215611932575f5ffd5b813567ffffffffffffffff811115611948575f5ffd5b61114f8482850161177b565b5f60208284031215611964575f5ffd5b5051919050565b60a081525f61197d60a08301886118ab565b6001600160a01b039687166020840152949095166040820152606081019290925260809091015292915050565b5f5f604083850312156119bb575f5ffd5b8251602084015190925067ffffffffffffffff8111156119d9575f5ffd5b8301601f810185136119e9575f5ffd5b805167ffffffffffffffff811115611a0357611a036116e6565b8060051b611a1360208201611723565b91825260208184018101929081019088841115611a2e575f5ffd5b6020850194505b83851015611a50578451825260209485019490910190611a35565b80955050505050509250929050565b634e487b7160e01b5f52603260045260245ffd5b5f8151808452602084019350602083015f5b82811015611aac5781516001600160a01b0316865260209586019590910190600101611a85565b5093949350505050565b608081525f611ac86080830187611a73565b8281036020840152611ada8187611a73565b8381036040850152855180825260208088019350909101905f5b81811015611b12578351835260209384019390920191600101611af4565b50508381036060850152845180825260208083019350600582901b830181019087015f5b83811015611b9057848303601f19018652815180518085526020918201918501905f5b81811015611b77578351835260209384019390920191600101611b59565b5050602097880197909450929092019150600101611b36565b50909a9950505050505050505050565b805169ffffffffffffffffffff81168114611bb9575f5ffd5b919050565b5f5f5f5f5f60a08688031215611bd2575f5ffd5b611bdb86611ba0565b60208701516040880151606089015192975090955093509150611c0060808701611ba0565b90509295509295909350565b634e487b7160e01b5f52601160045260245ffd5b8181038181111561043057610430611c0c565b5f60208284031215611c43575f5ffd5b8151611201816116d8565b60ff828116828216039081111561043057610430611c0c565b6001815b6001841115611ca257808504811115611c8657611c86611c0c565b6001841615611c9457908102905b60019390931c928002611c6b565b935093915050565b5f82611cb857506001610430565b81611cc457505f610430565b8160018114611cda5760028114611ce457611d00565b6001915050610430565b60ff841115611cf557611cf5611c0c565b50506001821b610430565b5060208310610133831016604e8410600b8410161715611d23575081810a610430565b611d2f5f198484611c67565b805f1904821115611d4257611d42611c0c565b029392505050565b5f61120160ff841683611caa565b808202811582820484141761043057610430611c0c565b634e487b7160e01b5f52601260045260245ffd5b600181811c90821680611d9757607f821691505b602082108103611db557634e487b7160e01b5f52602260045260245ffd5b50919050565b5f82601f830112611dca575f5ffd5b8151611dd861179882611754565b818152846020838601011115611dec575f5ffd5b8160208501602083015e5f918101602001919091529392505050565b5f60208284031215611e18575f5ffd5b815167ffffffffffffffff811115611e2e575f5ffd5b820160608185031215611e3f575f5ffd5b611e476116fa565b815160038110611e55575f5ffd5b815260208281015190820152604082015167ffffffffffffffff811115611e7a575f5ffd5b611e8686828501611dbb565b604083015250949350505050565b5f82611eae57634e487b7160e01b5f52601260045260245ffd5b500490565b5f60208284031215611ec3575f5ffd5b815167ffffffffffffffff811115611ed9575f5ffd5b61114f84828501611dbb565b604081525f611ef760408301856118ab565b8281036020840152611f0981856118ab565b95945050505050565b601f82111561078957805f5260205f20601f840160051c81016020851015611f375750805b601f840160051c820191505b81811015611f56575f8155600101611f43565b5050505050565b815167ffffffffffffffff811115611f7757611f776116e6565b611f8b81611f858454611d83565b84611f12565b6020601f821160018114611fbd575f8315611fa65750848201515b5f19600385901b1c1916600184901b178455611f56565b5f84815260208120601f198516915b82811015611fec5787850151825560209485019460019092019101611fcc565b508482101561200957868401515f19600387901b60f8161c191681555b50505050600190811b0190555056fea2646970667358221220faf55cf420a6e719d8e774740eb363472a4a8053149b036fc24657c55265417164736f6c634300081e0033","opcodes":"PUSH1 0x80 PUSH1 0x40 MSTORE CALLVALUE DUP1 ISZERO PUSH2 0xF JUMPI PUSH0 PUSH0 REVERT JUMPDEST POP PUSH1 0x4 CALLDATASIZE LT PUSH2 0x106 JUMPI PUSH0 CALLDATALOAD PUSH1 0xE0 SHR DUP1 PUSH4 0x5A117456 GT PUSH2 0x9E JUMPI DUP1 PUSH4 0xB6B55F25 GT PUSH2 0x6E JUMPI DUP1 PUSH4 0xB6B55F25 EQ PUSH2 0x29E JUMPI DUP1 PUSH4 0xBFE10928 EQ PUSH2 0x2B1 JUMPI DUP1 PUSH4 0xCE96CB77 EQ PUSH2 0x2D8 JUMPI DUP1 PUSH4 0xDE846AE4 EQ PUSH2 0x2EB JUMPI DUP1 PUSH4 0xF3E0FFBF EQ PUSH2 0x31E JUMPI PUSH0 PUSH0 REVERT JUMPDEST DUP1 PUSH4 0x5A117456 EQ PUSH2 0x21E JUMPI DUP1 PUSH4 0x5B9A4C35 EQ PUSH2 0x231 JUMPI DUP1 PUSH4 0x9C4667A2 EQ PUSH2 0x258 JUMPI DUP1 PUSH4 0x9CD47128 EQ PUSH2 0x28B JUMPI PUSH0 PUSH0 REVERT JUMPDEST DUP1 PUSH4 0x402D267D GT PUSH2 0xD9 JUMPI DUP1 PUSH4 0x402D267D EQ PUSH2 0x19D JUMPI DUP1 PUSH4 0x42B054F0 EQ PUSH2 0x1B0 JUMPI DUP1 PUSH4 0x52EBFA29 EQ PUSH2 0x1D0 JUMPI DUP1 PUSH4 0x59011CD1 EQ PUSH2 0x1F7 JUMPI PUSH0 PUSH0 REVERT JUMPDEST DUP1 PUSH4 0x981B1C2 EQ PUSH2 0x10A JUMPI DUP1 PUSH4 0x1418983B EQ PUSH2 0x133 JUMPI DUP1 PUSH4 0x1D4D3A5D EQ PUSH2 0x149 JUMPI DUP1 PUSH4 0x2E1A7D4D EQ PUSH2 0x188 JUMPI JUMPDEST PUSH0 PUSH0 REVERT JUMPDEST PUSH2 0x11D PUSH2 0x118 CALLDATASIZE PUSH1 0x4 PUSH2 0x17CD JUMP JUMPDEST PUSH2 0x331 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0x12A SWAP2 SWAP1 PUSH2 0x1848 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST PUSH2 0x13B PUSH2 0x436 JUMP JUMPDEST PUSH1 0x40 MLOAD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH2 0x12A JUMP JUMPDEST PUSH2 0x170 PUSH32 0x0 DUP2 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP1 SWAP2 AND DUP2 MSTORE PUSH1 0x20 ADD PUSH2 0x12A JUMP JUMPDEST PUSH2 0x19B PUSH2 0x196 CALLDATASIZE PUSH1 0x4 PUSH2 0x185A JUMP JUMPDEST PUSH2 0x49F JUMP JUMPDEST STOP JUMPDEST PUSH2 0x13B PUSH2 0x1AB CALLDATASIZE PUSH1 0x4 PUSH2 0x1871 JUMP JUMPDEST POP PUSH0 SWAP1 JUMP JUMPDEST PUSH2 0x1C3 PUSH2 0x1BE CALLDATASIZE PUSH1 0x4 PUSH2 0x1871 JUMP JUMPDEST PUSH2 0x78F JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0x12A SWAP2 SWAP1 PUSH2 0x18F1 JUMP JUMPDEST PUSH2 0x170 PUSH32 0x0 DUP2 JUMP JUMPDEST PUSH2 0x13B PUSH32 0x0 DUP2 JUMP JUMPDEST PUSH2 0x19B PUSH2 0x22C CALLDATASIZE PUSH1 0x4 PUSH2 0x1903 JUMP JUMPDEST PUSH2 0x7B3 JUMP JUMPDEST PUSH2 0x13B PUSH32 0x0 DUP2 JUMP JUMPDEST PUSH2 0x170 PUSH2 0x266 CALLDATASIZE PUSH1 0x4 PUSH2 0x1871 JUMP JUMPDEST POP PUSH32 0x0 SWAP1 JUMP JUMPDEST PUSH2 0x19B PUSH2 0x299 CALLDATASIZE PUSH1 0x4 PUSH2 0x1922 JUMP JUMPDEST PUSH2 0x82F JUMP JUMPDEST PUSH2 0x19B PUSH2 0x2AC CALLDATASIZE PUSH1 0x4 PUSH2 0x185A JUMP JUMPDEST PUSH2 0x8AC JUMP JUMPDEST PUSH2 0x170 PUSH32 0x0 DUP2 JUMP JUMPDEST PUSH2 0x13B PUSH2 0x2E6 CALLDATASIZE PUSH1 0x4 PUSH2 0x1871 JUMP JUMPDEST PUSH2 0x9CD JUMP JUMPDEST PUSH2 0x170 PUSH2 0x2F9 CALLDATASIZE PUSH1 0x4 PUSH2 0x1871 JUMP JUMPDEST POP PUSH32 0x0 SWAP1 JUMP JUMPDEST PUSH2 0x13B PUSH2 0x32C CALLDATASIZE PUSH1 0x4 PUSH2 0x1871 JUMP JUMPDEST PUSH2 0x9D3 JUMP JUMPDEST PUSH1 0x60 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB PUSH32 0x0 AND ADDRESS SUB PUSH2 0x37C JUMPI PUSH1 0x40 MLOAD PUSH4 0x2ABF118B PUSH1 0xE2 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH0 DUP4 PUSH1 0xFF AND PUSH1 0x3 DUP2 GT ISZERO PUSH2 0x392 JUMPI PUSH2 0x392 PUSH2 0x1897 JUMP JUMPDEST SWAP1 POP PUSH1 0x1 DUP2 PUSH1 0x3 DUP2 GT ISZERO PUSH2 0x3A8 JUMPI PUSH2 0x3A8 PUSH2 0x1897 JUMP JUMPDEST SUB PUSH2 0x3BB JUMPI PUSH2 0x3B6 DUP4 PUSH2 0xA67 JUMP JUMPDEST PUSH2 0x42E JUMP JUMPDEST PUSH1 0x2 DUP2 PUSH1 0x3 DUP2 GT ISZERO PUSH2 0x3CF JUMPI PUSH2 0x3CF PUSH2 0x1897 JUMP JUMPDEST SUB PUSH2 0x3E7 JUMPI PUSH2 0x3DD DUP4 PUSH2 0xA67 JUMP JUMPDEST PUSH2 0x3B6 PUSH0 NOT PUSH2 0xCB2 JUMP JUMPDEST PUSH1 0x3 DUP2 PUSH1 0x3 DUP2 GT ISZERO PUSH2 0x3FB JUMPI PUSH2 0x3FB PUSH2 0x1897 JUMP JUMPDEST SUB PUSH2 0x41C JUMPI PUSH2 0x3B6 DUP4 DUP1 PUSH1 0x20 ADD SWAP1 MLOAD DUP2 ADD SWAP1 PUSH2 0x417 SWAP2 SWAP1 PUSH2 0x1954 JUMP JUMPDEST PUSH2 0xCB2 JUMP JUMPDEST PUSH2 0x426 DUP5 DUP5 PUSH2 0xEFD JUMP JUMPDEST SWAP2 POP POP PUSH2 0x430 JUMP JUMPDEST POP JUMPDEST SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH0 PUSH2 0x49A PUSH2 0x463 PUSH32 0x0 PUSH2 0xF9A JUMP JUMPDEST PUSH8 0xDE0B6B3A7640000 PUSH2 0x495 PUSH32 0x0 PUSH2 0xF9A JUMP JUMPDEST PUSH2 0x1157 JUMP JUMPDEST SWAP1 POP SWAP1 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB PUSH32 0x0 AND ADDRESS SUB PUSH2 0x4E8 JUMPI PUSH1 0x40 MLOAD PUSH4 0x2ABF118B PUSH1 0xE2 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST DUP1 ISZERO PUSH2 0x78C JUMPI PUSH0 PUSH2 0x4F7 PUSH2 0x1208 JUMP JUMPDEST SWAP1 POP PUSH0 PUSH2 0x502 PUSH2 0x12DE JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH4 0x70A08231 PUSH1 0xE0 SHL DUP2 MSTORE ADDRESS PUSH1 0x4 DUP3 ADD MSTORE SWAP1 SWAP2 POP PUSH2 0x595 SWAP1 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB PUSH32 0x0 AND SWAP1 PUSH4 0x70A08231 SWAP1 PUSH1 0x24 ADD PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x56B JUMPI RETURNDATASIZE PUSH0 PUSH0 RETURNDATACOPY RETURNDATASIZE PUSH0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP3 ADD DUP1 PUSH1 0x40 MSTORE POP DUP2 ADD SWAP1 PUSH2 0x58F SWAP2 SWAP1 PUSH2 0x1954 JUMP JUMPDEST ADDRESS PUSH2 0x12F4 JUMP JUMPDEST DUP4 LT PUSH2 0x6C9 JUMPI PUSH1 0x40 MLOAD PUSH4 0x70A08231 PUSH1 0xE0 SHL DUP2 MSTORE ADDRESS PUSH1 0x4 DUP3 ADD MSTORE PUSH20 0x0 SWAP1 PUSH4 0x77566915 SWAP1 DUP5 SWAP1 PUSH32 0x0 SWAP1 PUSH32 0x0 SWAP1 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP4 AND SWAP1 PUSH4 0x70A08231 SWAP1 PUSH1 0x24 ADD PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x63F JUMPI RETURNDATASIZE PUSH0 PUSH0 RETURNDATACOPY RETURNDATASIZE PUSH0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP3 ADD DUP1 PUSH1 0x40 MSTORE POP DUP2 ADD SWAP1 PUSH2 0x663 SWAP2 SWAP1 PUSH2 0x1954 JUMP JUMPDEST DUP7 PUSH1 0x40 MLOAD DUP7 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x684 SWAP6 SWAP5 SWAP4 SWAP3 SWAP2 SWAP1 PUSH2 0x196B JUMP JUMPDEST PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 GAS DELEGATECALL ISZERO DUP1 ISZERO PUSH2 0x69F JUMPI RETURNDATASIZE PUSH0 PUSH0 RETURNDATACOPY RETURNDATASIZE PUSH0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP3 ADD DUP1 PUSH1 0x40 MSTORE POP DUP2 ADD SWAP1 PUSH2 0x6C3 SWAP2 SWAP1 PUSH2 0x1954 JUMP JUMPDEST POP PUSH2 0x789 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH4 0x581E517D PUSH1 0xE0 SHL DUP2 MSTORE PUSH20 0x0 SWAP1 PUSH4 0x581E517D SWAP1 PUSH2 0x748 SWAP1 DUP6 SWAP1 PUSH32 0x0 SWAP1 PUSH32 0x0 SWAP1 DUP10 SWAP1 DUP9 SWAP1 PUSH1 0x4 ADD PUSH2 0x196B JUMP JUMPDEST PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 GAS DELEGATECALL ISZERO DUP1 ISZERO PUSH2 0x763 JUMPI RETURNDATASIZE PUSH0 PUSH0 RETURNDATACOPY RETURNDATASIZE PUSH0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP3 ADD DUP1 PUSH1 0x40 MSTORE POP DUP2 ADD SWAP1 PUSH2 0x787 SWAP2 SWAP1 PUSH2 0x1954 JUMP JUMPDEST POP JUMPDEST POP POP JUMPDEST POP JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH1 0x60 DUP1 DUP3 ADD DUP4 MSTORE PUSH0 DUP1 DUP4 MSTORE PUSH1 0x20 DUP4 ADD MSTORE SWAP2 DUP2 ADD SWAP2 SWAP1 SWAP2 MSTORE PUSH2 0x430 DUP3 PUSH2 0x1396 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB PUSH32 0x0 AND ADDRESS SUB PUSH2 0x7FC JUMPI PUSH1 0x40 MLOAD PUSH4 0x2ABF118B PUSH1 0xE2 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST DUP1 ISZERO DUP1 ISZERO PUSH2 0x811 JUMPI POP PUSH2 0x80E ADDRESS PUSH2 0x9D3 JUMP JUMPDEST ISZERO ISZERO JUMPDEST ISZERO PUSH2 0x78C JUMPI PUSH1 0x40 MLOAD PUSH4 0x42A176D1 PUSH1 0xE1 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB PUSH32 0x0 AND ADDRESS SUB PUSH2 0x878 JUMPI PUSH1 0x40 MLOAD PUSH4 0x2ABF118B PUSH1 0xE2 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH1 0x60 DUP2 ADD SWAP1 SWAP2 MSTORE PUSH2 0x78C SWAP1 DUP1 PUSH0 DUP2 MSTORE PUSH1 0x20 ADD PUSH0 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x40 MLOAD DUP1 PUSH1 0x20 ADD PUSH1 0x40 MSTORE DUP1 PUSH0 DUP2 MSTORE POP DUP2 MSTORE POP DUP3 PUSH2 0x1451 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB PUSH32 0x0 AND ADDRESS SUB PUSH2 0x8F5 JUMPI PUSH1 0x40 MLOAD PUSH4 0x2ABF118B PUSH1 0xE2 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST DUP1 ISZERO PUSH2 0x78C JUMPI PUSH2 0x903 PUSH2 0x1208 JUMP JUMPDEST PUSH20 0x0 PUSH4 0x77566915 SWAP1 SWAP2 PUSH32 0x0 PUSH32 0x0 DUP6 PUSH2 0x96A PUSH2 0x436 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP7 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x98A SWAP6 SWAP5 SWAP4 SWAP3 SWAP2 SWAP1 PUSH2 0x196B JUMP JUMPDEST PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 GAS DELEGATECALL ISZERO DUP1 ISZERO PUSH2 0x9A5 JUMPI RETURNDATASIZE PUSH0 PUSH0 RETURNDATACOPY RETURNDATASIZE PUSH0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP3 ADD DUP1 PUSH1 0x40 MSTORE POP DUP2 ADD SWAP1 PUSH2 0x9C9 SWAP2 SWAP1 PUSH2 0x1954 JUMP JUMPDEST POP POP JUMP JUMPDEST PUSH0 PUSH2 0x430 DUP3 JUMPDEST PUSH1 0x40 MLOAD PUSH4 0x70A08231 PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP3 DUP2 AND PUSH1 0x4 DUP4 ADD MSTORE PUSH0 SWAP2 PUSH2 0x430 SWAP2 PUSH32 0x0 AND SWAP1 PUSH4 0x70A08231 SWAP1 PUSH1 0x24 ADD PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0xA3D JUMPI RETURNDATASIZE PUSH0 PUSH0 RETURNDATACOPY RETURNDATASIZE PUSH0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP3 ADD DUP1 PUSH1 0x40 MSTORE POP DUP2 ADD SWAP1 PUSH2 0xA61 SWAP2 SWAP1 PUSH2 0x1954 JUMP JUMPDEST DUP4 PUSH2 0x12F4 JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH1 0x1 DUP1 DUP3 MSTORE DUP2 DUP4 ADD SWAP1 SWAP3 MSTORE PUSH0 SWAP2 PUSH1 0x20 DUP1 DUP4 ADD SWAP1 DUP1 CALLDATASIZE DUP4 CALLDATACOPY POP POP PUSH1 0x40 DUP1 MLOAD PUSH1 0x1 DUP1 DUP3 MSTORE DUP2 DUP4 ADD SWAP1 SWAP3 MSTORE SWAP3 SWAP4 POP PUSH0 SWAP3 SWAP2 POP PUSH1 0x20 DUP1 DUP4 ADD SWAP1 DUP1 CALLDATASIZE DUP4 CALLDATACOPY POP POP PUSH1 0x40 DUP1 MLOAD PUSH1 0x1 DUP1 DUP3 MSTORE DUP2 DUP4 ADD SWAP1 SWAP3 MSTORE SWAP3 SWAP4 POP PUSH0 SWAP3 SWAP2 POP PUSH1 0x20 DUP1 DUP4 ADD SWAP1 DUP1 CALLDATASIZE DUP4 CALLDATACOPY POP POP PUSH1 0x40 DUP1 MLOAD PUSH1 0x1 DUP1 DUP3 MSTORE DUP2 DUP4 ADD SWAP1 SWAP3 MSTORE SWAP3 SWAP4 POP PUSH0 SWAP3 SWAP2 POP PUSH1 0x20 DUP3 ADD JUMPDEST PUSH1 0x60 DUP2 MSTORE PUSH1 0x20 ADD SWAP1 PUSH1 0x1 SWAP1 SUB SWAP1 DUP2 PUSH2 0xAE3 JUMPI SWAP1 POP POP SWAP1 POP DUP5 DUP1 PUSH1 0x20 ADD SWAP1 MLOAD DUP2 ADD SWAP1 PUSH2 0xB0E SWAP2 SWAP1 PUSH2 0x19AA JUMP JUMPDEST DUP6 PUSH0 DUP2 MLOAD DUP2 LT PUSH2 0xB20 JUMPI PUSH2 0xB20 PUSH2 0x1A5F JUMP JUMPDEST PUSH1 0x20 MUL PUSH1 0x20 ADD ADD DUP4 PUSH0 DUP2 MLOAD DUP2 LT PUSH2 0xB39 JUMPI PUSH2 0xB39 PUSH2 0x1A5F JUMP JUMPDEST PUSH1 0x20 MUL PUSH1 0x20 ADD ADD DUP3 SWAP1 MSTORE DUP3 DUP2 MSTORE POP POP POP ADDRESS DUP4 PUSH0 DUP2 MLOAD DUP2 LT PUSH2 0xB5C JUMPI PUSH2 0xB5C PUSH2 0x1A5F JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP1 SWAP3 AND PUSH1 0x20 SWAP3 DUP4 MUL SWAP2 SWAP1 SWAP2 ADD SWAP1 SWAP2 ADD MSTORE PUSH32 0x0 DUP3 PUSH0 DUP2 MLOAD DUP2 LT PUSH2 0xBA7 JUMPI PUSH2 0xBA7 PUSH2 0x1A5F JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP3 DUP4 AND PUSH1 0x20 SWAP2 DUP3 MUL SWAP3 SWAP1 SWAP3 ADD ADD MSTORE PUSH1 0x40 MLOAD PUSH4 0x1C7BA57 PUSH1 0xE6 SHL DUP2 MSTORE PUSH32 0x0 SWAP1 SWAP2 AND SWAP1 PUSH4 0x71EE95C0 SWAP1 PUSH2 0xC09 SWAP1 DUP7 SWAP1 DUP7 SWAP1 DUP10 SWAP1 DUP8 SWAP1 PUSH1 0x4 ADD PUSH2 0x1AB6 JUMP JUMPDEST PUSH0 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 PUSH0 DUP8 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0xC20 JUMPI PUSH0 PUSH0 REVERT JUMPDEST POP GAS CALL ISZERO DUP1 ISZERO PUSH2 0xC32 JUMPI RETURNDATASIZE PUSH0 PUSH0 RETURNDATACOPY RETURNDATASIZE PUSH0 REVERT JUMPDEST POP POP POP POP DUP2 PUSH0 DUP2 MLOAD DUP2 LT PUSH2 0xC48 JUMPI PUSH2 0xC48 PUSH2 0x1A5F JUMP JUMPDEST PUSH1 0x20 MUL PUSH1 0x20 ADD ADD MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH32 0xFC30CDDEA38E2BF4D6EA7D3F9ED3B6AD7F176419F4963BD81318067A4AEE73FE DUP6 PUSH0 DUP2 MLOAD DUP2 LT PUSH2 0xC8C JUMPI PUSH2 0xC8C PUSH2 0x1A5F JUMP JUMPDEST PUSH1 0x20 MUL PUSH1 0x20 ADD ADD MLOAD PUSH1 0x40 MLOAD PUSH2 0xCA3 SWAP2 DUP2 MSTORE PUSH1 0x20 ADD SWAP1 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 LOG2 POP POP POP POP POP JUMP JUMPDEST PUSH0 NOT DUP2 SUB PUSH2 0xD43 JUMPI PUSH1 0x40 MLOAD PUSH4 0x70A08231 PUSH1 0xE0 SHL DUP2 MSTORE ADDRESS PUSH1 0x4 DUP3 ADD MSTORE PUSH32 0x0 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND SWAP1 PUSH4 0x70A08231 SWAP1 PUSH1 0x24 ADD PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0xD1C JUMPI RETURNDATASIZE PUSH0 PUSH0 RETURNDATACOPY RETURNDATASIZE PUSH0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP3 ADD DUP1 PUSH1 0x40 MSTORE POP DUP2 ADD SWAP1 PUSH2 0xD40 SWAP2 SWAP1 PUSH2 0x1954 JUMP JUMPDEST SWAP1 POP JUMPDEST PUSH0 PUSH2 0xD4C PUSH2 0x1208 JUMP JUMPDEST PUSH20 0x0 PUSH4 0x77566915 SWAP1 SWAP2 PUSH32 0x0 PUSH32 0x0 DUP7 PUSH2 0xDB3 PUSH2 0x12DE JUMP JUMPDEST PUSH1 0x40 MLOAD DUP7 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0xDD3 SWAP6 SWAP5 SWAP4 SWAP3 SWAP2 SWAP1 PUSH2 0x196B JUMP JUMPDEST PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 GAS DELEGATECALL ISZERO DUP1 ISZERO PUSH2 0xDEE JUMPI RETURNDATASIZE PUSH0 PUSH0 RETURNDATACOPY RETURNDATASIZE PUSH0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP3 ADD DUP1 PUSH1 0x40 MSTORE POP DUP2 ADD SWAP1 PUSH2 0xE12 SWAP2 SWAP1 PUSH2 0x1954 JUMP JUMPDEST SWAP1 POP PUSH2 0xE94 DUP2 PUSH1 0x40 MLOAD PUSH1 0x24 ADD PUSH2 0xE2A SWAP2 DUP2 MSTORE PUSH1 0x20 ADD SWAP1 JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH1 0x1F NOT DUP2 DUP5 SUB ADD DUP2 MSTORE SWAP2 SWAP1 MSTORE PUSH1 0x20 DUP2 ADD DUP1 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xE0 SHL SUB AND PUSH4 0x230A5C4B PUSH1 0xE1 SHL OR SWAP1 MSTORE PUSH2 0xE85 PUSH32 0x360894A13BA1A3210667C828492DB98DCA3E2076CC3735A920A3CA505D382BBC SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND SWAP1 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND SWAP1 PUSH2 0x1571 JUMP JUMPDEST POP PUSH1 0x40 DUP1 MLOAD DUP4 DUP2 MSTORE PUSH1 0x20 DUP2 ADD DUP4 SWAP1 MSTORE PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB PUSH32 0x0 AND SWAP2 PUSH32 0x1704C39241BC5FFA667C69806B5BA3ACD0D4637515695BAB7A812E01E5EE27EB SWAP2 ADD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 LOG2 POP POP JUMP JUMPDEST PUSH1 0x60 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB PUSH32 0x0 AND ADDRESS SUB PUSH2 0xF48 JUMPI PUSH1 0x40 MLOAD PUSH4 0x2ABF118B PUSH1 0xE2 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH0 PUSH1 0xFF DUP5 AND DUP1 ISZERO PUSH2 0xF5B JUMPI PUSH2 0xF5B PUSH2 0x1897 JUMP JUMPDEST SWAP1 POP PUSH0 DUP2 DUP1 ISZERO PUSH2 0xF6D JUMPI PUSH2 0xF6D PUSH2 0x1897 JUMP JUMPDEST SUB PUSH2 0x106 JUMPI PUSH2 0xF84 PUSH2 0xF7E ADDRESS PUSH2 0x1396 JUMP JUMPDEST DUP5 PUSH2 0x1451 JUMP JUMPDEST POP POP PUSH1 0x40 DUP1 MLOAD PUSH1 0x20 DUP2 ADD SWAP1 SWAP2 MSTORE PUSH0 DUP2 MSTORE SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH0 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP3 AND PUSH2 0xFB8 JUMPI POP PUSH8 0xDE0B6B3A7640000 SWAP2 SWAP1 POP JUMP JUMPDEST PUSH0 PUSH0 DUP4 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH4 0xFEAF968C PUSH1 0x40 MLOAD DUP2 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH1 0xA0 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0xFF6 JUMPI RETURNDATASIZE PUSH0 PUSH0 RETURNDATACOPY RETURNDATASIZE PUSH0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP3 ADD DUP1 PUSH1 0x40 MSTORE POP DUP2 ADD SWAP1 PUSH2 0x101A SWAP2 SWAP1 PUSH2 0x1BBE JUMP JUMPDEST POP SWAP4 POP POP SWAP3 POP POP PUSH32 0x0 TIMESTAMP PUSH2 0x104D SWAP2 SWAP1 PUSH2 0x1C20 JUMP JUMPDEST DUP2 GT PUSH2 0x1079 PUSH32 0x0 TIMESTAMP PUSH2 0x1C20 JUMP JUMPDEST DUP3 SWAP1 SWAP2 PUSH2 0x10A7 JUMPI PUSH1 0x40 MLOAD PUSH4 0x3156EA93 PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 DUP2 ADD SWAP3 SWAP1 SWAP3 MSTORE PUSH1 0x24 DUP3 ADD MSTORE PUSH1 0x44 ADD JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST POP POP PUSH0 DUP3 SGT DUP3 SWAP1 PUSH2 0x10CE JUMPI PUSH1 0x40 MLOAD PUSH4 0x38EE04A7 PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x109E SWAP2 DUP2 MSTORE PUSH1 0x20 ADD SWAP1 JUMP JUMPDEST 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 GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x110B JUMPI RETURNDATASIZE PUSH0 PUSH0 RETURNDATACOPY RETURNDATASIZE PUSH0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP3 ADD DUP1 PUSH1 0x40 MSTORE POP DUP2 ADD SWAP1 PUSH2 0x112F SWAP2 SWAP1 PUSH2 0x1C33 JUMP JUMPDEST PUSH2 0x113A SWAP1 PUSH1 0x12 PUSH2 0x1C4E JUMP JUMPDEST PUSH2 0x1145 SWAP1 PUSH1 0xA PUSH2 0x1D4A JUMP JUMPDEST PUSH2 0x114F SWAP1 DUP4 PUSH2 0x1D58 JUMP JUMPDEST SWAP5 SWAP4 POP POP POP POP JUMP JUMPDEST PUSH0 PUSH0 PUSH0 PUSH2 0x1164 DUP7 DUP7 PUSH2 0x15FD JUMP JUMPDEST SWAP2 POP SWAP2 POP DUP2 PUSH0 SUB PUSH2 0x1188 JUMPI DUP4 DUP2 DUP2 PUSH2 0x117E JUMPI PUSH2 0x117E PUSH2 0x1D6F JUMP JUMPDEST DIV SWAP3 POP POP POP PUSH2 0x1201 JUMP JUMPDEST DUP2 DUP5 GT PUSH2 0x119F JUMPI PUSH2 0x119F PUSH1 0x3 DUP6 ISZERO MUL PUSH1 0x11 XOR PUSH2 0x1619 JUMP JUMPDEST PUSH0 DUP5 DUP7 DUP9 MULMOD PUSH0 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 DUP6 DUP5 GT SWAP1 SWAP7 SUB SWAP6 SWAP1 SWAP6 MUL SWAP2 SWAP1 SWAP4 SUB SWAP4 SWAP1 SWAP4 DIV SWAP3 SWAP1 SWAP3 OR MUL SWAP2 POP POP JUMPDEST SWAP4 SWAP3 POP POP POP JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH1 0x60 DUP1 DUP3 ADD DUP4 MSTORE PUSH0 DUP1 DUP4 MSTORE PUSH1 0x20 DUP4 ADD MSTORE SWAP2 DUP2 ADD SWAP2 SWAP1 SWAP2 MSTORE PUSH32 0x0 DUP1 SLOAD PUSH2 0x124F SWAP1 PUSH2 0x1D83 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 0x127B SWAP1 PUSH2 0x1D83 JUMP JUMPDEST DUP1 ISZERO PUSH2 0x12C6 JUMPI DUP1 PUSH1 0x1F LT PUSH2 0x129D JUMPI PUSH2 0x100 DUP1 DUP4 SLOAD DIV MUL DUP4 MSTORE SWAP2 PUSH1 0x20 ADD SWAP2 PUSH2 0x12C6 JUMP JUMPDEST DUP3 ADD SWAP2 SWAP1 PUSH0 MSTORE PUSH1 0x20 PUSH0 KECCAK256 SWAP1 JUMPDEST DUP2 SLOAD DUP2 MSTORE SWAP1 PUSH1 0x1 ADD SWAP1 PUSH1 0x20 ADD DUP1 DUP4 GT PUSH2 0x12A9 JUMPI DUP3 SWAP1 SUB PUSH1 0x1F AND DUP3 ADD SWAP2 JUMPDEST POP POP POP POP POP DUP1 PUSH1 0x20 ADD SWAP1 MLOAD DUP2 ADD SWAP1 PUSH2 0x49A SWAP2 SWAP1 PUSH2 0x1E08 JUMP JUMPDEST PUSH0 PUSH2 0x49A PUSH8 0xDE0B6B3A7640000 DUP1 PUSH2 0x495 PUSH2 0x436 JUMP JUMPDEST PUSH0 PUSH2 0x131E PUSH32 0x0 PUSH2 0x162A JUMP JUMPDEST PUSH2 0x138C PUSH2 0x136D PUSH2 0x134D PUSH32 0x0 PUSH2 0x162A JUMP JUMPDEST PUSH2 0x1357 SWAP1 DUP8 PUSH2 0x1D58 JUMP JUMPDEST PUSH2 0x135F PUSH2 0x436 JUMP JUMPDEST PUSH8 0xDE0B6B3A7640000 PUSH2 0x1157 JUMP JUMPDEST PUSH2 0x1376 DUP6 PUSH2 0x1396 JUMP JUMPDEST PUSH1 0x20 ADD MLOAD PUSH2 0x135F SWAP1 PUSH8 0xDE0B6B3A7640000 PUSH2 0x1C20 JUMP JUMPDEST PUSH2 0x1201 SWAP2 SWAP1 PUSH2 0x1E94 JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH1 0x60 DUP1 DUP3 ADD DUP4 MSTORE PUSH0 DUP1 DUP4 MSTORE PUSH1 0x20 DUP4 ADD MSTORE SWAP2 DUP2 ADD SWAP2 SWAP1 SWAP2 MSTORE PUSH1 0x40 MLOAD PUSH4 0x47E57533 PUSH1 0xE0 SHL DUP2 MSTORE PUSH32 0x0 PUSH1 0x4 DUP3 ADD MSTORE PUSH0 SWAP1 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP5 AND SWAP1 PUSH4 0x47E57533 SWAP1 PUSH1 0x24 ADD PUSH0 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x1414 JUMPI RETURNDATASIZE PUSH0 PUSH0 RETURNDATACOPY RETURNDATASIZE PUSH0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH0 DUP3 RETURNDATACOPY PUSH1 0x1F RETURNDATASIZE SWAP1 DUP2 ADD PUSH1 0x1F NOT AND DUP3 ADD PUSH1 0x40 MSTORE PUSH2 0x143B SWAP2 SWAP1 DUP2 ADD SWAP1 PUSH2 0x1EB3 JUMP JUMPDEST SWAP1 POP DUP1 DUP1 PUSH1 0x20 ADD SWAP1 MLOAD DUP2 ADD SWAP1 PUSH2 0x1201 SWAP2 SWAP1 PUSH2 0x1E08 JUMP JUMPDEST PUSH0 DUP2 DUP1 PUSH1 0x20 ADD SWAP1 MLOAD DUP2 ADD SWAP1 PUSH2 0x1466 SWAP2 SWAP1 PUSH2 0x1E08 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH4 0x2CBF28CB PUSH1 0xE2 SHL DUP2 MSTORE SWAP1 SWAP2 POP PUSH20 0x0 SWAP1 PUSH4 0xB2FCA32C SWAP1 PUSH2 0x14A0 SWAP1 DUP5 SWAP1 PUSH1 0x4 ADD PUSH2 0x18F1 JUMP JUMPDEST PUSH0 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x14B6 JUMPI PUSH0 PUSH0 REVERT JUMPDEST POP GAS DELEGATECALL ISZERO DUP1 ISZERO PUSH2 0x14C8 JUMPI RETURNDATASIZE PUSH0 PUSH0 RETURNDATACOPY RETURNDATASIZE PUSH0 REVERT JUMPDEST POP POP POP POP DUP2 MLOAD DUP2 PUSH1 0x40 MLOAD PUSH1 0x20 ADD PUSH2 0x14DF SWAP2 SWAP1 PUSH2 0x18F1 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH1 0x20 DUP2 DUP4 SUB SUB DUP2 MSTORE SWAP1 PUSH1 0x40 MSTORE MLOAD EQ PUSH2 0x150D JUMPI PUSH1 0x40 MLOAD PUSH4 0x50701B61 PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH32 0xCA7F7AA563866A1D31C74DEBA224724D1DA9C35CBB6F783F2CCF0182F91E34F8 DUP4 DUP3 PUSH1 0x40 MLOAD PUSH2 0x153E SWAP3 SWAP2 SWAP1 PUSH2 0x1EE5 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 LOG1 PUSH32 0x0 PUSH2 0x787 DUP4 DUP3 PUSH2 0x1F5D JUMP JUMPDEST PUSH1 0x60 PUSH0 PUSH2 0x157E DUP5 DUP5 PUSH2 0x16A1 JUMP JUMPDEST SWAP1 POP DUP1 DUP1 ISZERO PUSH2 0x159F JUMPI POP PUSH0 RETURNDATASIZE GT DUP1 PUSH2 0x159F JUMPI POP PUSH0 DUP5 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND EXTCODESIZE GT JUMPDEST ISZERO PUSH2 0x15AC JUMPI PUSH2 0x426 PUSH2 0x16B4 JUMP JUMPDEST DUP1 ISZERO PUSH2 0x15D6 JUMPI PUSH1 0x40 MLOAD PUSH4 0x9996B315 PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP6 AND PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x24 ADD PUSH2 0x109E JUMP JUMPDEST RETURNDATASIZE ISZERO PUSH2 0x15E4 JUMPI PUSH2 0x3B6 PUSH2 0x16CD JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH4 0xD6BDA275 PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH0 DUP1 PUSH0 NOT DUP4 DUP6 MULMOD SWAP4 SWAP1 SWAP3 MUL DUP1 DUP5 LT SWAP4 DUP2 SWAP1 SUB SWAP4 SWAP1 SWAP4 SUB SWAP4 SWAP2 POP POP JUMP JUMPDEST PUSH4 0x4E487B71 PUSH0 MSTORE DUP1 PUSH1 0x20 MSTORE PUSH1 0x24 PUSH1 0x1C REVERT JUMPDEST PUSH0 DUP2 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 GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x1667 JUMPI RETURNDATASIZE PUSH0 PUSH0 RETURNDATACOPY RETURNDATASIZE PUSH0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP3 ADD DUP1 PUSH1 0x40 MSTORE POP DUP2 ADD SWAP1 PUSH2 0x168B SWAP2 SWAP1 PUSH2 0x1C33 JUMP JUMPDEST PUSH2 0x1696 SWAP1 PUSH1 0x12 PUSH2 0x1C4E JUMP JUMPDEST PUSH2 0x430 SWAP1 PUSH1 0xA PUSH2 0x1D4A JUMP JUMPDEST PUSH0 PUSH0 PUSH0 DUP4 MLOAD PUSH1 0x20 DUP6 ADD DUP7 GAS DELEGATECALL SWAP4 SWAP3 POP POP POP JUMP JUMPDEST PUSH1 0x40 MLOAD RETURNDATASIZE DUP2 MSTORE RETURNDATASIZE PUSH0 PUSH1 0x20 DUP4 ADD RETURNDATACOPY RETURNDATASIZE PUSH1 0x20 ADD DUP2 ADD PUSH1 0x40 MSTORE SWAP1 JUMP JUMPDEST PUSH1 0x40 MLOAD RETURNDATASIZE PUSH0 DUP3 RETURNDATACOPY RETURNDATASIZE DUP2 REVERT JUMPDEST PUSH1 0xFF DUP2 AND DUP2 EQ PUSH2 0x78C JUMPI PUSH0 PUSH0 REVERT JUMPDEST PUSH4 0x4E487B71 PUSH1 0xE0 SHL PUSH0 MSTORE PUSH1 0x41 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH0 REVERT JUMPDEST PUSH1 0x40 MLOAD PUSH1 0x60 DUP2 ADD PUSH8 0xFFFFFFFFFFFFFFFF DUP2 GT DUP3 DUP3 LT OR ISZERO PUSH2 0x171D JUMPI PUSH2 0x171D PUSH2 0x16E6 JUMP JUMPDEST PUSH1 0x40 MSTORE SWAP1 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH1 0x1F DUP3 ADD PUSH1 0x1F NOT AND DUP2 ADD PUSH8 0xFFFFFFFFFFFFFFFF DUP2 GT DUP3 DUP3 LT OR ISZERO PUSH2 0x174C JUMPI PUSH2 0x174C PUSH2 0x16E6 JUMP JUMPDEST PUSH1 0x40 MSTORE SWAP2 SWAP1 POP JUMP JUMPDEST PUSH0 PUSH8 0xFFFFFFFFFFFFFFFF DUP3 GT ISZERO PUSH2 0x176D JUMPI PUSH2 0x176D PUSH2 0x16E6 JUMP JUMPDEST POP PUSH1 0x1F ADD PUSH1 0x1F NOT AND PUSH1 0x20 ADD SWAP1 JUMP JUMPDEST PUSH0 DUP3 PUSH1 0x1F DUP4 ADD SLT PUSH2 0x178A JUMPI PUSH0 PUSH0 REVERT JUMPDEST DUP2 CALLDATALOAD PUSH2 0x179D PUSH2 0x1798 DUP3 PUSH2 0x1754 JUMP JUMPDEST PUSH2 0x1723 JUMP JUMPDEST DUP2 DUP2 MSTORE DUP5 PUSH1 0x20 DUP4 DUP7 ADD ADD GT ISZERO PUSH2 0x17B1 JUMPI PUSH0 PUSH0 REVERT JUMPDEST DUP2 PUSH1 0x20 DUP6 ADD PUSH1 0x20 DUP4 ADD CALLDATACOPY PUSH0 SWAP2 DUP2 ADD PUSH1 0x20 ADD SWAP2 SWAP1 SWAP2 MSTORE SWAP4 SWAP3 POP POP POP JUMP JUMPDEST PUSH0 PUSH0 PUSH1 0x40 DUP4 DUP6 SUB SLT ISZERO PUSH2 0x17DE JUMPI PUSH0 PUSH0 REVERT JUMPDEST DUP3 CALLDATALOAD PUSH2 0x17E9 DUP2 PUSH2 0x16D8 JUMP JUMPDEST SWAP2 POP PUSH1 0x20 DUP4 ADD CALLDATALOAD PUSH8 0xFFFFFFFFFFFFFFFF DUP2 GT ISZERO PUSH2 0x1804 JUMPI PUSH0 PUSH0 REVERT JUMPDEST PUSH2 0x1810 DUP6 DUP3 DUP7 ADD PUSH2 0x177B JUMP JUMPDEST SWAP2 POP POP SWAP3 POP SWAP3 SWAP1 POP JUMP JUMPDEST PUSH0 DUP2 MLOAD DUP1 DUP5 MSTORE DUP1 PUSH1 0x20 DUP5 ADD PUSH1 0x20 DUP7 ADD MCOPY PUSH0 PUSH1 0x20 DUP3 DUP7 ADD ADD MSTORE PUSH1 0x20 PUSH1 0x1F NOT PUSH1 0x1F DUP4 ADD AND DUP6 ADD ADD SWAP2 POP POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x20 DUP2 MSTORE PUSH0 PUSH2 0x1201 PUSH1 0x20 DUP4 ADD DUP5 PUSH2 0x181A JUMP JUMPDEST PUSH0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x186A JUMPI PUSH0 PUSH0 REVERT JUMPDEST POP CALLDATALOAD SWAP2 SWAP1 POP JUMP JUMPDEST PUSH0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x1881 JUMPI PUSH0 PUSH0 REVERT JUMPDEST DUP2 CALLDATALOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 AND DUP2 EQ PUSH2 0x1201 JUMPI PUSH0 PUSH0 REVERT JUMPDEST PUSH4 0x4E487B71 PUSH1 0xE0 SHL PUSH0 MSTORE PUSH1 0x21 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH0 REVERT JUMPDEST PUSH0 DUP2 MLOAD PUSH1 0x3 DUP2 LT PUSH2 0x18CA JUMPI PUSH4 0x4E487B71 PUSH1 0xE0 SHL PUSH0 MSTORE PUSH1 0x21 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH0 REVERT JUMPDEST DUP1 DUP5 MSTORE POP PUSH1 0x20 DUP3 ADD MLOAD PUSH1 0x20 DUP5 ADD MSTORE PUSH1 0x40 DUP3 ADD MLOAD PUSH1 0x60 PUSH1 0x40 DUP6 ADD MSTORE PUSH2 0x114F PUSH1 0x60 DUP6 ADD DUP3 PUSH2 0x181A JUMP JUMPDEST PUSH1 0x20 DUP2 MSTORE PUSH0 PUSH2 0x1201 PUSH1 0x20 DUP4 ADD DUP5 PUSH2 0x18AB JUMP JUMPDEST PUSH0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x1913 JUMPI PUSH0 PUSH0 REVERT JUMPDEST DUP2 CALLDATALOAD DUP1 ISZERO ISZERO DUP2 EQ PUSH2 0x1201 JUMPI PUSH0 PUSH0 REVERT JUMPDEST PUSH0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x1932 JUMPI PUSH0 PUSH0 REVERT JUMPDEST DUP2 CALLDATALOAD PUSH8 0xFFFFFFFFFFFFFFFF DUP2 GT ISZERO PUSH2 0x1948 JUMPI PUSH0 PUSH0 REVERT JUMPDEST PUSH2 0x114F DUP5 DUP3 DUP6 ADD PUSH2 0x177B JUMP JUMPDEST PUSH0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x1964 JUMPI PUSH0 PUSH0 REVERT JUMPDEST POP MLOAD SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0xA0 DUP2 MSTORE PUSH0 PUSH2 0x197D PUSH1 0xA0 DUP4 ADD DUP9 PUSH2 0x18AB JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP7 DUP8 AND PUSH1 0x20 DUP5 ADD MSTORE SWAP5 SWAP1 SWAP6 AND PUSH1 0x40 DUP3 ADD MSTORE PUSH1 0x60 DUP2 ADD SWAP3 SWAP1 SWAP3 MSTORE PUSH1 0x80 SWAP1 SWAP2 ADD MSTORE SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH0 PUSH0 PUSH1 0x40 DUP4 DUP6 SUB SLT ISZERO PUSH2 0x19BB JUMPI PUSH0 PUSH0 REVERT JUMPDEST DUP3 MLOAD PUSH1 0x20 DUP5 ADD MLOAD SWAP1 SWAP3 POP PUSH8 0xFFFFFFFFFFFFFFFF DUP2 GT ISZERO PUSH2 0x19D9 JUMPI PUSH0 PUSH0 REVERT JUMPDEST DUP4 ADD PUSH1 0x1F DUP2 ADD DUP6 SGT PUSH2 0x19E9 JUMPI PUSH0 PUSH0 REVERT JUMPDEST DUP1 MLOAD PUSH8 0xFFFFFFFFFFFFFFFF DUP2 GT ISZERO PUSH2 0x1A03 JUMPI PUSH2 0x1A03 PUSH2 0x16E6 JUMP JUMPDEST DUP1 PUSH1 0x5 SHL PUSH2 0x1A13 PUSH1 0x20 DUP3 ADD PUSH2 0x1723 JUMP JUMPDEST SWAP2 DUP3 MSTORE PUSH1 0x20 DUP2 DUP5 ADD DUP2 ADD SWAP3 SWAP1 DUP2 ADD SWAP1 DUP9 DUP5 GT ISZERO PUSH2 0x1A2E JUMPI PUSH0 PUSH0 REVERT JUMPDEST PUSH1 0x20 DUP6 ADD SWAP5 POP JUMPDEST DUP4 DUP6 LT ISZERO PUSH2 0x1A50 JUMPI DUP5 MLOAD DUP3 MSTORE PUSH1 0x20 SWAP5 DUP6 ADD SWAP5 SWAP1 SWAP2 ADD SWAP1 PUSH2 0x1A35 JUMP JUMPDEST DUP1 SWAP6 POP POP POP POP POP POP SWAP3 POP SWAP3 SWAP1 POP JUMP JUMPDEST PUSH4 0x4E487B71 PUSH1 0xE0 SHL PUSH0 MSTORE PUSH1 0x32 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH0 REVERT JUMPDEST PUSH0 DUP2 MLOAD DUP1 DUP5 MSTORE PUSH1 0x20 DUP5 ADD SWAP4 POP PUSH1 0x20 DUP4 ADD PUSH0 JUMPDEST DUP3 DUP2 LT ISZERO PUSH2 0x1AAC JUMPI DUP2 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP7 MSTORE PUSH1 0x20 SWAP6 DUP7 ADD SWAP6 SWAP1 SWAP2 ADD SWAP1 PUSH1 0x1 ADD PUSH2 0x1A85 JUMP JUMPDEST POP SWAP4 SWAP5 SWAP4 POP POP POP POP JUMP JUMPDEST PUSH1 0x80 DUP2 MSTORE PUSH0 PUSH2 0x1AC8 PUSH1 0x80 DUP4 ADD DUP8 PUSH2 0x1A73 JUMP JUMPDEST DUP3 DUP2 SUB PUSH1 0x20 DUP5 ADD MSTORE PUSH2 0x1ADA DUP2 DUP8 PUSH2 0x1A73 JUMP JUMPDEST DUP4 DUP2 SUB PUSH1 0x40 DUP6 ADD MSTORE DUP6 MLOAD DUP1 DUP3 MSTORE PUSH1 0x20 DUP1 DUP9 ADD SWAP4 POP SWAP1 SWAP2 ADD SWAP1 PUSH0 JUMPDEST DUP2 DUP2 LT ISZERO PUSH2 0x1B12 JUMPI DUP4 MLOAD DUP4 MSTORE PUSH1 0x20 SWAP4 DUP5 ADD SWAP4 SWAP1 SWAP3 ADD SWAP2 PUSH1 0x1 ADD PUSH2 0x1AF4 JUMP JUMPDEST POP POP DUP4 DUP2 SUB PUSH1 0x60 DUP6 ADD MSTORE DUP5 MLOAD DUP1 DUP3 MSTORE PUSH1 0x20 DUP1 DUP4 ADD SWAP4 POP PUSH1 0x5 DUP3 SWAP1 SHL DUP4 ADD DUP2 ADD SWAP1 DUP8 ADD PUSH0 JUMPDEST DUP4 DUP2 LT ISZERO PUSH2 0x1B90 JUMPI DUP5 DUP4 SUB PUSH1 0x1F NOT ADD DUP7 MSTORE DUP2 MLOAD DUP1 MLOAD DUP1 DUP6 MSTORE PUSH1 0x20 SWAP2 DUP3 ADD SWAP2 DUP6 ADD SWAP1 PUSH0 JUMPDEST DUP2 DUP2 LT ISZERO PUSH2 0x1B77 JUMPI DUP4 MLOAD DUP4 MSTORE PUSH1 0x20 SWAP4 DUP5 ADD SWAP4 SWAP1 SWAP3 ADD SWAP2 PUSH1 0x1 ADD PUSH2 0x1B59 JUMP JUMPDEST POP POP PUSH1 0x20 SWAP8 DUP9 ADD SWAP8 SWAP1 SWAP5 POP SWAP3 SWAP1 SWAP3 ADD SWAP2 POP PUSH1 0x1 ADD PUSH2 0x1B36 JUMP JUMPDEST POP SWAP1 SWAP11 SWAP10 POP POP POP POP POP POP POP POP POP POP JUMP JUMPDEST DUP1 MLOAD PUSH10 0xFFFFFFFFFFFFFFFFFFFF DUP2 AND DUP2 EQ PUSH2 0x1BB9 JUMPI PUSH0 PUSH0 REVERT JUMPDEST SWAP2 SWAP1 POP JUMP JUMPDEST PUSH0 PUSH0 PUSH0 PUSH0 PUSH0 PUSH1 0xA0 DUP7 DUP9 SUB SLT ISZERO PUSH2 0x1BD2 JUMPI PUSH0 PUSH0 REVERT JUMPDEST PUSH2 0x1BDB DUP7 PUSH2 0x1BA0 JUMP JUMPDEST PUSH1 0x20 DUP8 ADD MLOAD PUSH1 0x40 DUP9 ADD MLOAD PUSH1 0x60 DUP10 ADD MLOAD SWAP3 SWAP8 POP SWAP1 SWAP6 POP SWAP4 POP SWAP2 POP PUSH2 0x1C00 PUSH1 0x80 DUP8 ADD PUSH2 0x1BA0 JUMP JUMPDEST SWAP1 POP SWAP3 SWAP6 POP SWAP3 SWAP6 SWAP1 SWAP4 POP JUMP JUMPDEST PUSH4 0x4E487B71 PUSH1 0xE0 SHL PUSH0 MSTORE PUSH1 0x11 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH0 REVERT JUMPDEST DUP2 DUP2 SUB DUP2 DUP2 GT ISZERO PUSH2 0x430 JUMPI PUSH2 0x430 PUSH2 0x1C0C JUMP JUMPDEST PUSH0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x1C43 JUMPI PUSH0 PUSH0 REVERT JUMPDEST DUP2 MLOAD PUSH2 0x1201 DUP2 PUSH2 0x16D8 JUMP JUMPDEST PUSH1 0xFF DUP3 DUP2 AND DUP3 DUP3 AND SUB SWAP1 DUP2 GT ISZERO PUSH2 0x430 JUMPI PUSH2 0x430 PUSH2 0x1C0C JUMP JUMPDEST PUSH1 0x1 DUP2 JUMPDEST PUSH1 0x1 DUP5 GT ISZERO PUSH2 0x1CA2 JUMPI DUP1 DUP6 DIV DUP2 GT ISZERO PUSH2 0x1C86 JUMPI PUSH2 0x1C86 PUSH2 0x1C0C JUMP JUMPDEST PUSH1 0x1 DUP5 AND ISZERO PUSH2 0x1C94 JUMPI SWAP1 DUP2 MUL SWAP1 JUMPDEST PUSH1 0x1 SWAP4 SWAP1 SWAP4 SHR SWAP3 DUP1 MUL PUSH2 0x1C6B JUMP JUMPDEST SWAP4 POP SWAP4 SWAP2 POP POP JUMP JUMPDEST PUSH0 DUP3 PUSH2 0x1CB8 JUMPI POP PUSH1 0x1 PUSH2 0x430 JUMP JUMPDEST DUP2 PUSH2 0x1CC4 JUMPI POP PUSH0 PUSH2 0x430 JUMP JUMPDEST DUP2 PUSH1 0x1 DUP2 EQ PUSH2 0x1CDA JUMPI PUSH1 0x2 DUP2 EQ PUSH2 0x1CE4 JUMPI PUSH2 0x1D00 JUMP JUMPDEST PUSH1 0x1 SWAP2 POP POP PUSH2 0x430 JUMP JUMPDEST PUSH1 0xFF DUP5 GT ISZERO PUSH2 0x1CF5 JUMPI PUSH2 0x1CF5 PUSH2 0x1C0C JUMP JUMPDEST POP POP PUSH1 0x1 DUP3 SHL PUSH2 0x430 JUMP JUMPDEST POP PUSH1 0x20 DUP4 LT PUSH2 0x133 DUP4 LT AND PUSH1 0x4E DUP5 LT PUSH1 0xB DUP5 LT AND OR ISZERO PUSH2 0x1D23 JUMPI POP DUP2 DUP2 EXP PUSH2 0x430 JUMP JUMPDEST PUSH2 0x1D2F PUSH0 NOT DUP5 DUP5 PUSH2 0x1C67 JUMP JUMPDEST DUP1 PUSH0 NOT DIV DUP3 GT ISZERO PUSH2 0x1D42 JUMPI PUSH2 0x1D42 PUSH2 0x1C0C JUMP JUMPDEST MUL SWAP4 SWAP3 POP POP POP JUMP JUMPDEST PUSH0 PUSH2 0x1201 PUSH1 0xFF DUP5 AND DUP4 PUSH2 0x1CAA JUMP JUMPDEST DUP1 DUP3 MUL DUP2 ISZERO DUP3 DUP3 DIV DUP5 EQ OR PUSH2 0x430 JUMPI PUSH2 0x430 PUSH2 0x1C0C JUMP JUMPDEST PUSH4 0x4E487B71 PUSH1 0xE0 SHL PUSH0 MSTORE PUSH1 0x12 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH0 REVERT JUMPDEST PUSH1 0x1 DUP2 DUP2 SHR SWAP1 DUP3 AND DUP1 PUSH2 0x1D97 JUMPI PUSH1 0x7F DUP3 AND SWAP2 POP JUMPDEST PUSH1 0x20 DUP3 LT DUP2 SUB PUSH2 0x1DB5 JUMPI PUSH4 0x4E487B71 PUSH1 0xE0 SHL PUSH0 MSTORE PUSH1 0x22 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH0 REVERT JUMPDEST POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH0 DUP3 PUSH1 0x1F DUP4 ADD SLT PUSH2 0x1DCA JUMPI PUSH0 PUSH0 REVERT JUMPDEST DUP2 MLOAD PUSH2 0x1DD8 PUSH2 0x1798 DUP3 PUSH2 0x1754 JUMP JUMPDEST DUP2 DUP2 MSTORE DUP5 PUSH1 0x20 DUP4 DUP7 ADD ADD GT ISZERO PUSH2 0x1DEC JUMPI PUSH0 PUSH0 REVERT JUMPDEST DUP2 PUSH1 0x20 DUP6 ADD PUSH1 0x20 DUP4 ADD MCOPY PUSH0 SWAP2 DUP2 ADD PUSH1 0x20 ADD SWAP2 SWAP1 SWAP2 MSTORE SWAP4 SWAP3 POP POP POP JUMP JUMPDEST PUSH0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x1E18 JUMPI PUSH0 PUSH0 REVERT JUMPDEST DUP2 MLOAD PUSH8 0xFFFFFFFFFFFFFFFF DUP2 GT ISZERO PUSH2 0x1E2E JUMPI PUSH0 PUSH0 REVERT JUMPDEST DUP3 ADD PUSH1 0x60 DUP2 DUP6 SUB SLT ISZERO PUSH2 0x1E3F JUMPI PUSH0 PUSH0 REVERT JUMPDEST PUSH2 0x1E47 PUSH2 0x16FA JUMP JUMPDEST DUP2 MLOAD PUSH1 0x3 DUP2 LT PUSH2 0x1E55 JUMPI PUSH0 PUSH0 REVERT JUMPDEST DUP2 MSTORE PUSH1 0x20 DUP3 DUP2 ADD MLOAD SWAP1 DUP3 ADD MSTORE PUSH1 0x40 DUP3 ADD MLOAD PUSH8 0xFFFFFFFFFFFFFFFF DUP2 GT ISZERO PUSH2 0x1E7A JUMPI PUSH0 PUSH0 REVERT JUMPDEST PUSH2 0x1E86 DUP7 DUP3 DUP6 ADD PUSH2 0x1DBB JUMP JUMPDEST PUSH1 0x40 DUP4 ADD MSTORE POP SWAP5 SWAP4 POP POP POP POP JUMP JUMPDEST PUSH0 DUP3 PUSH2 0x1EAE JUMPI PUSH4 0x4E487B71 PUSH1 0xE0 SHL PUSH0 MSTORE PUSH1 0x12 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH0 REVERT JUMPDEST POP DIV SWAP1 JUMP JUMPDEST PUSH0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x1EC3 JUMPI PUSH0 PUSH0 REVERT JUMPDEST DUP2 MLOAD PUSH8 0xFFFFFFFFFFFFFFFF DUP2 GT ISZERO PUSH2 0x1ED9 JUMPI PUSH0 PUSH0 REVERT JUMPDEST PUSH2 0x114F DUP5 DUP3 DUP6 ADD PUSH2 0x1DBB JUMP JUMPDEST PUSH1 0x40 DUP2 MSTORE PUSH0 PUSH2 0x1EF7 PUSH1 0x40 DUP4 ADD DUP6 PUSH2 0x18AB JUMP JUMPDEST DUP3 DUP2 SUB PUSH1 0x20 DUP5 ADD MSTORE PUSH2 0x1F09 DUP2 DUP6 PUSH2 0x18AB JUMP JUMPDEST SWAP6 SWAP5 POP POP POP POP POP JUMP JUMPDEST PUSH1 0x1F DUP3 GT ISZERO PUSH2 0x789 JUMPI DUP1 PUSH0 MSTORE PUSH1 0x20 PUSH0 KECCAK256 PUSH1 0x1F DUP5 ADD PUSH1 0x5 SHR DUP2 ADD PUSH1 0x20 DUP6 LT ISZERO PUSH2 0x1F37 JUMPI POP DUP1 JUMPDEST PUSH1 0x1F DUP5 ADD PUSH1 0x5 SHR DUP3 ADD SWAP2 POP JUMPDEST DUP2 DUP2 LT ISZERO PUSH2 0x1F56 JUMPI PUSH0 DUP2 SSTORE PUSH1 0x1 ADD PUSH2 0x1F43 JUMP JUMPDEST POP POP POP POP POP JUMP JUMPDEST DUP2 MLOAD PUSH8 0xFFFFFFFFFFFFFFFF DUP2 GT ISZERO PUSH2 0x1F77 JUMPI PUSH2 0x1F77 PUSH2 0x16E6 JUMP JUMPDEST PUSH2 0x1F8B DUP2 PUSH2 0x1F85 DUP5 SLOAD PUSH2 0x1D83 JUMP JUMPDEST DUP5 PUSH2 0x1F12 JUMP JUMPDEST PUSH1 0x20 PUSH1 0x1F DUP3 GT PUSH1 0x1 DUP2 EQ PUSH2 0x1FBD JUMPI PUSH0 DUP4 ISZERO PUSH2 0x1FA6 JUMPI POP DUP5 DUP3 ADD MLOAD JUMPDEST PUSH0 NOT PUSH1 0x3 DUP6 SWAP1 SHL SHR NOT AND PUSH1 0x1 DUP5 SWAP1 SHL OR DUP5 SSTORE PUSH2 0x1F56 JUMP JUMPDEST PUSH0 DUP5 DUP2 MSTORE PUSH1 0x20 DUP2 KECCAK256 PUSH1 0x1F NOT DUP6 AND SWAP2 JUMPDEST DUP3 DUP2 LT ISZERO PUSH2 0x1FEC JUMPI DUP8 DUP6 ADD MLOAD DUP3 SSTORE PUSH1 0x20 SWAP5 DUP6 ADD SWAP5 PUSH1 0x1 SWAP1 SWAP3 ADD SWAP2 ADD PUSH2 0x1FCC JUMP JUMPDEST POP DUP5 DUP3 LT ISZERO PUSH2 0x2009 JUMPI DUP7 DUP5 ADD MLOAD PUSH0 NOT PUSH1 0x3 DUP8 SWAP1 SHL PUSH1 0xF8 AND SHR NOT AND DUP2 SSTORE JUMPDEST POP POP POP POP PUSH1 0x1 SWAP1 DUP2 SHL ADD SWAP1 SSTORE POP JUMP INVALID LOG2 PUSH5 0x6970667358 0x22 SLT KECCAK256 STATICCALL CREATE2 TLOAD DELEGATECALL KECCAK256 0xA6 SWAPN 0x19 0xD8 SWAPN 0x74 PUSH21 0xEB363472A4A8053149B036FC24657C55265417164 PUSH20 0x6F6C634300081E00330000000000000000000000 ","sourceMap":"1161:3378:81:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;3911:626;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;2194:175:77;;;:::i;:::-;;;2602:25:87;;;2590:2;2575:18;2194:175:77;2456:177:87;1072:50:77;;;;;;;;-1:-1:-1;;;;;2833:32:87;;;2815:51;;2803:2;2788:18;1072:50:77;2638:234:87;5298:741:83;;;;;;:::i;:::-;;:::i;:::-;;2642:133:81;;;;;;:::i;:::-;-1:-1:-1;2723:7:81;;2642:133;8539:137:83;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;1126:56:77:-;;;;;1186:39;;;;;2566:165:83;;;;;;:::i;:::-;;:::i;1028:81::-;;;;;3235:104;;;;;;:::i;:::-;-1:-1:-1;3327:6:83;;3235:104;2339:189;;;;;;:::i;:::-;;:::i;6245:331::-;;;;;;:::i;:::-;;:::i;1315:46:81:-;;;;;2769:196:83;;;;;;:::i;:::-;;:::i;3424:99::-;;;;;;:::i;:::-;-1:-1:-1;3505:12:83;;3424:99;4921:172;;;;;;:::i;:::-;;:::i;3911:626:81:-;4032:19;-1:-1:-1;;;;;1543:6:83;1526:23;1534:4;1526:23;1522:72;;1558:36;;-1:-1:-1;;;1558:36:83;;;;;;;;;;;1522:72;4059:33:81::1;4115:6;4095:27;;;;;;;;;;:::i;:::-;4059:63:::0;-1:-1:-1;4149:32:81::1;4132:13;:49;;;;;;;;:::i;:::-;::::0;4128:404:::1;;4191:21;4205:6;4191:13;:21::i;:::-;4128:404;;;4246:39;4229:13;:56;;;;;;;;:::i;:::-;::::0;4225:307:::1;;4295:21;4309:6;4295:13;:21::i;:::-;4324:31;-1:-1:-1::0;;4324:12:81::1;:31::i;4225:307::-;4389:31;4372:13;:48;;;;;;;;:::i;:::-;::::0;4368:164:::1;;4430:43;4454:6;4443:29;;;;;;;;;;;;:::i;:::-;4430:12;:43::i;4368:164::-;4493:39;4517:6;4525;4493:23;:39::i;:::-;4486:46;;;;;4368:164;4053:484;1600:1:83;3911:626:81::0;;;;:::o;2194:175:77:-;2260:7;2282:82;2294:34;2310:17;2294:15;:34::i;:::-;966:4:83;2335:28:77;2351:11;2335:15;:28::i;:::-;2282:11;:82::i;:::-;2275:89;;2194:175;:::o;5298:741:83:-;-1:-1:-1;;;;;1543:6:83;1526:23;1534:4;1526:23;1522:72;;1558:36;;-1:-1:-1;;;1558:36:83;;;;;;;;;;;1522:72;5376:24;;5393:7:::1;5376:24;5405:40;5448:20;:18;:20::i;:::-;5405:63;;5474:13;5490:22;:20;:22::i;:::-;5547:37;::::0;-1:-1:-1;;;5547:37:83;;5578:4:::1;5547:37;::::0;::::1;2815:51:87::0;5474:38:83;;-1:-1:-1;5532:68:83::1;::::0;-1:-1:-1;;;;;5547:12:83::1;:22;::::0;::::1;::::0;2788:18:87;;5547:37:83::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;5594:4;5532:14;:68::i;:::-;5522:6;:78;5518:517;;5885:37;::::0;-1:-1:-1;;;5885:37:83;;5916:4:::1;5885:37;::::0;::::1;2815:51:87::0;5823:21:83::1;::::0;::::1;::::0;:10;;5853:12:::1;::::0;5876:6:::1;::::0;-1:-1:-1;;;;;5885:22:83;::::1;::::0;::::1;::::0;2788:18:87;;5885:37:83::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;5924:5;5823:107;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;5518:517;;;5951:77;::::0;-1:-1:-1;;;5951:77:83;;:22:::1;::::0;::::1;::::0;:77:::1;::::0;:10;;5982:12:::1;::::0;6005:6:::1;::::0;6014;;6022:5;;5951:77:::1;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;5518:517;5370:669;;1600:1;5298:741:::0;:::o;8539:137::-;-1:-1:-1;;;;;;;;;;;;;;;;;;;;;;;;8646:25:83;8661:9;8646:14;:25::i;2566:165::-;-1:-1:-1;;;;;1543:6:83;1526:23;1534:4;1526:23;1522:72;;1558:36;;-1:-1:-1;;;1558:36:83;;;;;;;;;;;1522:72;2649:5:::1;2648:6;:41;;;;;2658:26;2678:4;2658:11;:26::i;:::-;:31:::0;::::1;2648:41;2644:82;;;2698:28;;-1:-1:-1::0;;;2698:28:83::1;;;;;;;;;;;2339:189:::0;-1:-1:-1;;;;;1543:6:83;1526:23;1534:4;1526:23;1522:72;;1558:36;;-1:-1:-1;;;1558:36:83;;;;;;;;;;;1522:72;2440::::1;::::0;;::::1;::::0;::::1;::::0;;;2425:98:::1;::::0;2440:72;-1:-1:-1;2440:72:83::1;;;;2499:1;2440:72;;;;2502:9;;;;;;;;;;;::::0;2440:72:::1;;::::0;2514:8:::1;2425:14;:98::i;6245:331::-:0;-1:-1:-1;;;;;1543:6:83;1526:23;1534:4;1526:23;1522:72;;1558:36;;-1:-1:-1;;;1558:36:83;;;;;;;;;;;1522:72;6322:24;;6339:7:::1;6322:24;6472:20;:18;:20::i;:::-;:31;;;;6512:6;6529:12;6544:6;6552:18;:16;:18::i;:::-;6472:99;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;6245:331:::0;:::o;2769:196::-;2847:7;2869:22;2881:9;4921:172;5043:33;;-1:-1:-1;;;5043:33:83;;-1:-1:-1;;;;;2833:32:87;;;5043:33:83;;;2815:51:87;4999:14:83;;5028:60;;5043:12;:22;;;;2788:18:87;;5043:33:83;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;5078:9;5028:14;:60::i;2779:503:81:-;2865:16;;;2879:1;2865:16;;;;;;;;;2838:24;;2865:16;;;;;;;;;-1:-1:-1;;2912:16:81;;;2926:1;2912:16;;;;;;;;;2838:43;;-1:-1:-1;2887:22:81;;2912:16;-1:-1:-1;2912:16:81;;;;;;;;;-1:-1:-1;;2960:16:81;;;2974:1;2960:16;;;;;;;;;2887:41;;-1:-1:-1;2934:23:81;;2960:16;-1:-1:-1;2960:16:81;;;;;;;;;-1:-1:-1;;3010:18:81;;;3026:1;3010:18;;;;;;;;;2934:42;;-1:-1:-1;2982:25:81;;3010:18;-1:-1:-1;3010:18:81;;;;;;;;;;;;;;;;;;;;2982:46;;3071:6;3060:40;;;;;;;;;;;;:::i;:::-;3035:7;3043:1;3035:10;;;;;;;;:::i;:::-;;;;;;3047:6;3054:1;3047:9;;;;;;;;:::i;:::-;;;;;;3034:66;;;;;;;;;3125:4;3106:5;3112:1;3106:8;;;;;;;;:::i;:::-;-1:-1:-1;;;;;3106:24:81;;;:8;;;;;;;;;;;:24;3505:12:83;3136:6:81;3143:1;3136:9;;;;;;;;:::i;:::-;-1:-1:-1;;;;;3136:38:81;;;:9;;;;;;;;;:38;3180:49;;-1:-1:-1;;;3180:49:81;;:11;:17;;;;;;:49;;3198:5;;3205:6;;3213:7;;3222:6;;3180:49;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;3255:6;3262:1;3255:9;;;;;;;;:::i;:::-;;;;;;;-1:-1:-1;;;;;3240:37:81;;3266:7;3274:1;3266:10;;;;;;;;:::i;:::-;;;;;;;3240:37;;;;2602:25:87;;2590:2;2575:18;;2456:177;3240:37:81;;;;;;;;2832:450;;;;2779:503;:::o;3286:587::-;-1:-1:-1;;3343:6:81;:27;3339:79;;3381:37;;-1:-1:-1;;;3381:37:81;;3412:4;3381:37;;;2815:51:87;3381:12:81;-1:-1:-1;;;;;3381:22:81;;;;2788:18:87;;3381:37:81;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;3372:46;;3339:79;3424:17;3444:20;:18;:20::i;:::-;:31;;;;3491:12;3520:6;3535;3549:22;:20;:22::i;:::-;3444:133;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;3424:153;;3687:109;3785:9;3741:54;;;;;;2602:25:87;;2590:2;2575:18;;2456:177;3741:54:81;;;;-1:-1:-1;;3741:54:81;;;;;;;;;;;;;;-1:-1:-1;;;;;3741:54:81;-1:-1:-1;;;3741:54:81;;;3687:32;811:66:27;1519:53;-1:-1:-1;;;;;1519:53:27;;1441:138;3687:32:81;-1:-1:-1;;;;;3687:53:81;;;:109::i;:::-;-1:-1:-1;3807:61:81;;;10251:25:87;;;10307:2;10292:18;;10285:34;;;-1:-1:-1;;;;;3505:12:83;3807:61:81;;;;10224:18:87;3807:61:81;;;;;;;3333:540;3286:587;:::o;7096:855:83:-;7196:12;-1:-1:-1;;;;;1543:6:83;1526:23;1534:4;1526:23;1522:72;;1558:36;;-1:-1:-1;;;1558:36:83;;;;;;;;;;;1522:72;7216:28:::1;7247:22;::::0;::::1;::::0;;::::1;;;;:::i;:::-;7216:53:::0;-1:-1:-1;7296:28:83::1;7279:13:::0;:45;;::::1;;;;:::i;:::-;::::0;7275:648:::1;;7603:53;7618:29;7641:4;7618:14;:29::i;:::-;7649:6;7603:14;:53::i;:::-;-1:-1:-1::0;;7937:9:83::1;::::0;;::::1;::::0;::::1;::::0;;;-1:-1:-1;7937:9:83;;7096:855;;;;:::o;2373:441:77:-;2451:7;-1:-1:-1;;;;;2470:29:77;;2466:45;;-1:-1:-1;966:4:83;;2373:441:77;-1:-1:-1;2373:441:77:o;2466:45::-;2520:13;2537:17;2560:6;-1:-1:-1;;;;;2560:22:77;;:24;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;2517:67;;;;;;;2628:14;2610:15;:32;;;;:::i;:::-;2598:44;;2656:32;2674:14;2656:15;:32;:::i;:::-;2690:9;2590:111;;;;;;-1:-1:-1;;;2590:111:77;;;;;10251:25:87;;;;10292:18;;;10285:34;10224:18;;2590:111:77;;;;;;;;;;;2724:1;2715:6;:10;2740:6;2707:41;;;;;-1:-1:-1;;;2707:41:77;;;;;;2602:25:87;;2590:2;2575:18;;2456:177;2707:41:77;;2791:6;-1:-1:-1;;;;;2791:15:77;;:17;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;2786:22;;:2;:22;:::i;:::-;2779:30;;:2;:30;:::i;:::-;2761:48;;2769:6;2761:48;:::i;:::-;2754:55;2373:441;-1:-1:-1;;;;2373:441:77:o;7258:3683:47:-;7340:14;7391:12;7405:11;7420:12;7427:1;7430;7420:6;:12::i;:::-;7390:42;;;;7514:4;7522:1;7514:9;7510:365;;7849:11;7843:3;:17;;;;;:::i;:::-;;7836:24;;;;;;7510:365;8000:4;7985:11;:19;7981:142;;8024:84;5328:5;8044:16;;5327:36;940:4:43;5322:42:47;8024:11;:84::i;:::-;8375:17;8526:11;8523:1;8520;8513:25;8918:12;8948:15;;;8933:31;;9083:22;;;;;9816:1;9797;:15;;9796:21;;10049;;;10045:25;;10034:36;10119:21;;;10115:25;;10104:36;10191:21;;;10187:25;;10176:36;10262:21;;;10258:25;;10247:36;10335:21;;;10331:25;;10320:36;10409:21;;;10405:25;;;10394:36;9325:12;;;;9321:23;;;9346:1;9317:31;8638:18;;;8628:29;;;9432:11;;;;8681:19;;;;9176:14;;;;9425:18;;;;10884:13;;-1:-1:-1;;7258:3683:47;;;;;;:::o;8219:183:83:-;-1:-1:-1;;;;;;;;;;;;;;;;;;;;;;;;8352:11:83;8316:81;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;3919:174::-;3974:7;3996:41;966:4;;4018:18;:16;:18::i;4550:333::-;4646:14;4858:20;4871:6;4858:12;:20::i;:::-;4681:174;4702:79;4729:26;4742:12;4729;:26::i;:::-;4714:41;;:12;:41;:::i;:::-;4757:18;:16;:18::i;:::-;966:4;4702:11;:79::i;:::-;4797:25;4812:9;4797:14;:25::i;:::-;:37;;;4791:43;;966:4;4791:43;:::i;4681:174::-;:197;;;;:::i;7955:260::-;-1:-1:-1;;;;;;;;;;;;;;;;;;;;;;;;8091:51:83;;-1:-1:-1;;;8091:51:83;;8130:11;8091:51;;;2602:25:87;8058:30:83;;-1:-1:-1;;;;;8091:38:83;;;;;2575:18:87;;8091:51:83;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;8091:51:83;;;;;;;;;;;;:::i;:::-;8058:84;;8166:17;8155:55;;;;;;;;;;;;:::i;6580:478::-;6699:40;6753:20;6742:58;;;;;;;;;;;;:::i;:::-;6806:21;;-1:-1:-1;;;6806:21:83;;6699:101;;-1:-1:-1;6806:19:83;;;;:21;;6699:101;;6806:21;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;6870:20;:27;6848:10;6837:22;;;;;;;;:::i;:::-;;;;;;;;;;;;;:29;:60;6833:93;;6906:20;;-1:-1:-1;;;6906:20:83;;;;;;;;;;;6833:93;6937:44;6955:13;6970:10;6937:44;;;;;;;:::i;:::-;;;;;;;;7012:11;6987:66;7033:20;7012:11;6987:66;:::i;4691:549:37:-;4774:12;4798;4813:47;4847:6;4855:4;4813:33;:47::i;:::-;4798:62;;4874:7;:72;;;;-1:-1:-1;4918:1:37;4583:16:40;4886:33:37;:59;;;;4944:1;4923:6;-1:-1:-1;;;;;4923:18:37;;:22;4886:59;4870:364;;;4969:25;:23;:25::i;4870:364::-;5015:7;5011:223;;;5045:24;;-1:-1:-1;;;5045:24:37;;-1:-1:-1;;;;;2833:32:87;;5045:24:37;;;2815:51:87;2788:18;;5045:24:37;2638:234:87;5011:223:37;4583:16:40;5090:33:37;5086:148;;5139:27;:25;:27::i;5086:148::-;5204:19;;-1:-1:-1;;;5204:19:37;;;;;;;;;;;1027:550:47;1088:12;;-1:-1:-1;;1471:1:47;1468;1461:20;1501:9;;;;1549:11;;;1535:12;;;;1531:30;;;;;1027:550;-1:-1:-1;;1027:550:47:o;1776:194:43:-;1881:10;1875:4;1868:24;1918:4;1912;1905:18;1949:4;1943;1936:18;2178:123:83;2245:7;2279:5;-1:-1:-1;;;;;2279:14:83;;:16;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;2274:21;;:2;:21;:::i;:::-;2267:29;;:2;:29;:::i;3383:242:40:-;3466:12;3604:4;3598;3591;3585:11;3578:4;3572;3568:15;3560:6;3553:5;3540:69;3529:80;3383:242;-1:-1:-1;;;3383:242:40:o;4698:334::-;4829:4;4823:11;4862:16;4847:32;;4932:16;4926:4;4919;4907:17;;4892:57;4997:16;4991:4;4987:27;4979:6;4975:40;4969:4;4962:54;4698:334;:::o;5099:223::-;5203:4;5197:11;5247:16;5241:4;5236:3;5221:43;5289:16;5284:3;5277:29;14:114:87;98:4;91:5;87:16;80:5;77:27;67:55;;118:1;115;108:12;133:127;194:10;189:3;185:20;182:1;175:31;225:4;222:1;215:15;249:4;246:1;239:15;265:253;337:2;331:9;379:4;367:17;;414:18;399:34;;435:22;;;396:62;393:88;;;461:18;;:::i;:::-;497:2;490:22;265:253;:::o;523:275::-;594:2;588:9;659:2;640:13;;-1:-1:-1;;636:27:87;624:40;;694:18;679:34;;715:22;;;676:62;673:88;;;741:18;;:::i;:::-;777:2;770:22;523:275;;-1:-1:-1;523:275:87:o;803:186::-;851:4;884:18;876:6;873:30;870:56;;;906:18;;:::i;:::-;-1:-1:-1;972:2:87;951:15;-1:-1:-1;;947:29:87;978:4;943:40;;803:186::o;994:486::-;1036:5;1089:3;1082:4;1074:6;1070:17;1066:27;1056:55;;1107:1;1104;1097:12;1056:55;1147:6;1134:20;1178:52;1194:35;1222:6;1194:35;:::i;:::-;1178:52;:::i;:::-;1255:6;1246:7;1239:23;1309:3;1302:4;1293:6;1285;1281:19;1277:30;1274:39;1271:59;;;1326:1;1323;1316:12;1271:59;1391:6;1384:4;1376:6;1372:17;1365:4;1356:7;1352:18;1339:59;1447:1;1418:20;;;1440:4;1414:31;1407:42;;;;1422:7;994:486;-1:-1:-1;;;994:486:87:o;1485:451::-;1560:6;1568;1621:2;1609:9;1600:7;1596:23;1592:32;1589:52;;;1637:1;1634;1627:12;1589:52;1676:9;1663:23;1695:29;1718:5;1695:29;:::i;:::-;1743:5;-1:-1:-1;1799:2:87;1784:18;;1771:32;1826:18;1815:30;;1812:50;;;1858:1;1855;1848:12;1812:50;1881:49;1922:7;1913:6;1902:9;1898:22;1881:49;:::i;:::-;1871:59;;;1485:451;;;;;:::o;1941:288::-;1982:3;2020:5;2014:12;2047:6;2042:3;2035:19;2103:6;2096:4;2089:5;2085:16;2078:4;2073:3;2069:14;2063:47;2155:1;2148:4;2139:6;2134:3;2130:16;2126:27;2119:38;2218:4;2211:2;2207:7;2202:2;2194:6;2190:15;2186:29;2181:3;2177:39;2173:50;2166:57;;;1941:288;;;;:::o;2234:217::-;2381:2;2370:9;2363:21;2344:4;2401:44;2441:2;2430:9;2426:18;2418:6;2401:44;:::i;2877:180::-;2936:6;2989:2;2977:9;2968:7;2964:23;2960:32;2957:52;;;3005:1;3002;2995:12;2957:52;-1:-1:-1;3028:23:87;;2877:180;-1:-1:-1;2877:180:87:o;3062:286::-;3121:6;3174:2;3162:9;3153:7;3149:23;3145:32;3142:52;;;3190:1;3187;3180:12;3142:52;3216:23;;-1:-1:-1;;;;;3268:31:87;;3258:42;;3248:70;;3314:1;3311;3304:12;3353:127;3414:10;3409:3;3405:20;3402:1;3395:31;3445:4;3442:1;3435:15;3469:4;3466:1;3459:15;3485:479;3538:3;3572:5;3566:12;3604:1;3600:2;3597:9;3587:140;;3649:10;3644:3;3640:20;3637:1;3630:31;3684:4;3681:1;3674:15;3712:4;3709:1;3702:15;3587:140;3748:2;3743:3;3736:15;;3800:4;3793:5;3789:16;3783:23;3776:4;3771:3;3767:14;3760:47;3853:4;3846:5;3842:16;3836:23;3891:4;3884;3879:3;3875:14;3868:28;3912:46;3952:4;3947:3;3943:14;3929:12;3912:46;:::i;3969:267::-;4154:2;4143:9;4136:21;4117:4;4174:56;4226:2;4215:9;4211:18;4203:6;4174:56;:::i;4241:273::-;4297:6;4350:2;4338:9;4329:7;4325:23;4321:32;4318:52;;;4366:1;4363;4356:12;4318:52;4405:9;4392:23;4458:5;4451:13;4444:21;4437:5;4434:32;4424:60;;4480:1;4477;4470:12;4909:320;4977:6;5030:2;5018:9;5009:7;5005:23;5001:32;4998:52;;;5046:1;5043;5036:12;4998:52;5086:9;5073:23;5119:18;5111:6;5108:30;5105:50;;;5151:1;5148;5141:12;5105:50;5174:49;5215:7;5206:6;5195:9;5191:22;5174:49;:::i;5469:230::-;5539:6;5592:2;5580:9;5571:7;5567:23;5563:32;5560:52;;;5608:1;5605;5598:12;5560:52;-1:-1:-1;5653:16:87;;5469:230;-1:-1:-1;5469:230:87:o;5704:614::-;6009:3;5998:9;5991:22;5972:4;6030:57;6082:3;6071:9;6067:19;6059:6;6030:57;:::i;:::-;-1:-1:-1;;;;;6123:32:87;;;6118:2;6103:18;;6096:60;6192:32;;;;6187:2;6172:18;;6165:60;6256:2;6241:18;;6234:34;;;;6299:3;6284:19;;;6277:35;6022:65;5704:614;-1:-1:-1;;5704:614:87:o;6323:1033::-;6427:6;6435;6488:2;6476:9;6467:7;6463:23;6459:32;6456:52;;;6504:1;6501;6494:12;6456:52;6549:16;;6633:2;6618:18;;6612:25;6549:16;;-1:-1:-1;6660:18:87;6649:30;;6646:50;;;6692:1;6689;6682:12;6646:50;6715:22;;6768:4;6760:13;;6756:27;-1:-1:-1;6746:55:87;;6797:1;6794;6787:12;6746:55;6830:2;6824:9;6856:18;6848:6;6845:30;6842:56;;;6878:18;;:::i;:::-;6924:6;6921:1;6917:14;6951:28;6975:2;6971;6967:11;6951:28;:::i;:::-;7013:19;;;7057:2;7087:11;;;7083:20;;;7048:12;;;;7115:19;;;7112:39;;;7147:1;7144;7137:12;7112:39;7179:2;7175;7171:11;7160:22;;7191:135;7207:6;7202:3;7199:15;7191:135;;;7273:10;;7261:23;;7313:2;7224:12;;;;7304;;;;7191:135;;;7345:5;7335:15;;;;;;;6323:1033;;;;;:::o;7361:127::-;7422:10;7417:3;7413:20;7410:1;7403:31;7453:4;7450:1;7443:15;7477:4;7474:1;7467:15;7493:446;7546:3;7584:5;7578:12;7611:6;7606:3;7599:19;7643:4;7638:3;7634:14;7627:21;;7682:4;7675:5;7671:16;7705:1;7715:199;7729:6;7726:1;7723:13;7715:199;;;7794:13;;-1:-1:-1;;;;;7790:39:87;7778:52;;7859:4;7850:14;;;;7887:17;;;;7826:1;7744:9;7715:199;;;-1:-1:-1;7930:3:87;;7493:446;-1:-1:-1;;;;7493:446:87:o;7944:2128::-;8407:3;8396:9;8389:22;8370:4;8434:57;8486:3;8475:9;8471:19;8463:6;8434:57;:::i;:::-;8539:9;8531:6;8527:22;8522:2;8511:9;8507:18;8500:50;8573:44;8610:6;8602;8573:44;:::i;:::-;8653:22;;;8648:2;8633:18;;8626:50;8725:13;;8747:22;;;8797:2;8823:15;;;;-1:-1:-1;8785:15:87;;;;8856:1;8866:169;8880:6;8877:1;8874:13;8866:169;;;8941:13;;8929:26;;8984:2;9010:15;;;;8975:12;;;;8902:1;8895:9;8866:169;;;-1:-1:-1;;9071:19:87;;;9066:2;9051:18;;9044:47;9141:13;;9163:21;;;9211:2;9202:12;;;;-1:-1:-1;9254:1:87;9250:16;;;9241:26;;9237:35;;;9297:15;;9332:1;9342:701;9358:8;9353:3;9350:17;9342:701;;;9431:16;;;-1:-1:-1;;9427:30:87;9413:45;;9481:15;;9557:9;;9579:24;;;9637:2;9669:11;;;;9625:15;;;9704:1;9718:209;9734:8;9729:3;9726:17;9718:209;;;9811:15;;9797:30;;9864:2;9896:17;;;;9853:14;;;;9762:1;9753:11;9718:209;;;-1:-1:-1;;9994:2:87;10019:14;;;;9950:5;;-1:-1:-1;9980:17:87;;;;;-1:-1:-1;9386:1:87;9377:11;9342:701;;;-1:-1:-1;10060:6:87;;7944:2128;-1:-1:-1;;;;;;;;;;7944:2128:87:o;10330:179::-;10408:13;;10461:22;10450:34;;10440:45;;10430:73;;10499:1;10496;10489:12;10430:73;10330:179;;;:::o;10514:571::-;10617:6;10625;10633;10641;10649;10702:3;10690:9;10681:7;10677:23;10673:33;10670:53;;;10719:1;10716;10709:12;10670:53;10742:39;10771:9;10742:39;:::i;:::-;10821:2;10806:18;;10800:25;10887:2;10872:18;;10866:25;10981:2;10966:18;;10960:25;10732:49;;-1:-1:-1;10800:25:87;;-1:-1:-1;10866:25:87;-1:-1:-1;10960:25:87;-1:-1:-1;11030:49:87;11074:3;11059:19;;11030:49;:::i;:::-;11020:59;;10514:571;;;;;;;;:::o;11090:127::-;11151:10;11146:3;11142:20;11139:1;11132:31;11182:4;11179:1;11172:15;11206:4;11203:1;11196:15;11222:128;11289:9;;;11310:11;;;11307:37;;;11324:18;;:::i;11535:247::-;11603:6;11656:2;11644:9;11635:7;11631:23;11627:32;11624:52;;;11672:1;11669;11662:12;11624:52;11704:9;11698:16;11723:29;11746:5;11723:29;:::i;11787:151::-;11877:4;11870:12;;;11856;;;11852:31;;11895:14;;11892:40;;;11912:18;;:::i;11943:375::-;12031:1;12049:5;12063:249;12084:1;12074:8;12071:15;12063:249;;;12134:4;12129:3;12125:14;12119:4;12116:24;12113:50;;;12143:18;;:::i;:::-;12193:1;12183:8;12179:16;12176:49;;;12207:16;;;;12176:49;12290:1;12286:16;;;;;12246:15;;12063:249;;;11943:375;;;;;;:::o;12323:902::-;12372:5;12402:8;12392:80;;-1:-1:-1;12443:1:87;12457:5;;12392:80;12491:4;12481:76;;-1:-1:-1;12528:1:87;12542:5;;12481:76;12573:4;12591:1;12586:59;;;;12659:1;12654:174;;;;12566:262;;12586:59;12616:1;12607:10;;12630:5;;;12654:174;12691:3;12681:8;12678:17;12675:43;;;12698:18;;:::i;:::-;-1:-1:-1;;12754:1:87;12740:16;;12813:5;;12566:262;;12912:2;12902:8;12899:16;12893:3;12887:4;12884:13;12880:36;12874:2;12864:8;12861:16;12856:2;12850:4;12847:12;12843:35;12840:77;12837:203;;;-1:-1:-1;12949:19:87;;;13025:5;;12837:203;13072:42;-1:-1:-1;;13097:8:87;13091:4;13072:42;:::i;:::-;13150:6;13146:1;13142:6;13138:19;13129:7;13126:32;13123:58;;;13161:18;;:::i;:::-;13199:20;;12323:902;-1:-1:-1;;;12323:902:87:o;13230:140::-;13288:5;13317:47;13358:4;13348:8;13344:19;13338:4;13317:47;:::i;13375:168::-;13448:9;;;13479;;13496:15;;;13490:22;;13476:37;13466:71;;13517:18;;:::i;13548:127::-;13609:10;13604:3;13600:20;13597:1;13590:31;13640:4;13637:1;13630:15;13664:4;13661:1;13654:15;13680:380;13759:1;13755:12;;;;13802;;;13823:61;;13877:4;13869:6;13865:17;13855:27;;13823:61;13930:2;13922:6;13919:14;13899:18;13896:38;13893:161;;13976:10;13971:3;13967:20;13964:1;13957:31;14011:4;14008:1;14001:15;14039:4;14036:1;14029:15;13893:161;;13680:380;;;:::o;14065:483::-;14118:5;14171:3;14164:4;14156:6;14152:17;14148:27;14138:55;;14189:1;14186;14179:12;14138:55;14222:6;14216:13;14253:52;14269:35;14297:6;14269:35;:::i;14253:52::-;14330:6;14321:7;14314:23;14384:3;14377:4;14368:6;14360;14356:19;14352:30;14349:39;14346:59;;;14401:1;14398;14391:12;14346:59;14459:6;14452:4;14444:6;14440:17;14433:4;14424:7;14420:18;14414:52;14515:1;14486:20;;;14508:4;14482:31;14475:42;;;;14490:7;14065:483;-1:-1:-1;;;14065:483:87:o;14553:850::-;14651:6;14704:2;14692:9;14683:7;14679:23;14675:32;14672:52;;;14720:1;14717;14710:12;14672:52;14753:9;14747:16;14786:18;14778:6;14775:30;14772:50;;;14818:1;14815;14808:12;14772:50;14841:22;;14897:4;14879:16;;;14875:27;14872:47;;;14915:1;14912;14905:12;14872:47;14941:22;;:::i;:::-;14993:2;14987:9;15027:1;15018:7;15015:14;15005:42;;15043:1;15040;15033:12;15005:42;15056:22;;15137:2;15129:11;;;15123:18;15157:14;;;15150:31;15220:2;15212:11;;15206:18;15249;15236:32;;15233:52;;;15281:1;15278;15271:12;15233:52;15317:55;15364:7;15353:8;15349:2;15345:17;15317:55;:::i;:::-;15312:2;15301:14;;15294:79;-1:-1:-1;15305:5:87;14553:850;-1:-1:-1;;;;14553:850:87:o;15408:217::-;15448:1;15474;15464:132;;15518:10;15513:3;15509:20;15506:1;15499:31;15553:4;15550:1;15543:15;15581:4;15578:1;15571:15;15464:132;-1:-1:-1;15610:9:87;;15408:217::o;15630:335::-;15709:6;15762:2;15750:9;15741:7;15737:23;15733:32;15730:52;;;15778:1;15775;15768:12;15730:52;15811:9;15805:16;15844:18;15836:6;15833:30;15830:50;;;15876:1;15873;15866:12;15830:50;15899:60;15951:7;15942:6;15931:9;15927:22;15899:60;:::i;16250:477::-;16519:2;16508:9;16501:21;16482:4;16545:56;16597:2;16586:9;16582:18;16574:6;16545:56;:::i;:::-;16649:9;16641:6;16637:22;16632:2;16621:9;16617:18;16610:50;16677:44;16714:6;16706;16677:44;:::i;:::-;16669:52;16250:477;-1:-1:-1;;;;;16250:477:87:o;16857:517::-;16958:2;16953:3;16950:11;16947:421;;;16994:5;16991:1;16984:16;17038:4;17035:1;17025:18;17108:2;17096:10;17092:19;17089:1;17085:27;17079:4;17075:38;17144:4;17132:10;17129:20;17126:47;;;-1:-1:-1;17167:4:87;17126:47;17222:2;17217:3;17213:12;17210:1;17206:20;17200:4;17196:31;17186:41;;17277:81;17295:2;17288:5;17285:13;17277:81;;;17354:1;17340:16;;17321:1;17310:13;17277:81;;;17281:3;;16857:517;;;:::o;17550:1295::-;17674:3;17668:10;17701:18;17693:6;17690:30;17687:56;;;17723:18;;:::i;:::-;17752:96;17841:6;17801:38;17833:4;17827:11;17801:38;:::i;:::-;17795:4;17752:96;:::i;:::-;17897:4;17928:2;17917:14;;17945:1;17940:648;;;;18632:1;18649:6;18646:89;;;-1:-1:-1;18701:19:87;;;18695:26;18646:89;-1:-1:-1;;17507:1:87;17503:11;;;17499:24;17495:29;17485:40;17531:1;17527:11;;;17482:57;18748:81;;17910:929;;17940:648;16804:1;16797:14;;;16841:4;16828:18;;-1:-1:-1;;17976:20:87;;;18093:222;18107:7;18104:1;18101:14;18093:222;;;18189:19;;;18183:26;18168:42;;18296:4;18281:20;;;;18249:1;18237:14;;;;18123:12;18093:222;;;18097:3;18343:6;18334:7;18331:19;18328:201;;;18404:19;;;18398:26;-1:-1:-1;;18487:1:87;18483:14;;;18499:3;18479:24;18475:37;18471:42;18456:58;18441:74;;18328:201;-1:-1:-1;;;;18575:1:87;18559:14;;;18555:22;18542:36;;-1:-1:-1;17550:1295:87:o"},"methodIdentifiers":{"asset(address)":"9c4667a2","assetOracle()":"1d4d3a5d","connect(bytes)":"9cd47128","deposit(uint256)":"b6b55f25","disconnect(bool)":"5a117456","distributor()":"bfe10928","forwardEntryPoint(uint8,bytes)":"0981b1c2","getSwapConfig(address)":"42b054f0","investAsset(address)":"de846ae4","investAssetOracle()":"52ebfa29","investAssetPrice()":"1418983b","maxDeposit(address)":"402d267d","maxWithdraw(address)":"ce96cb77","priceTolerance()":"59011cd1","storageSlot()":"5b9a4c35","totalAssets(address)":"f3e0ffbf","withdraw(uint256)":"2e1a7d4d"}},"metadata":"{\"compiler\":{\"version\":\"0.8.30+commit.73712a01\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"inputs\":[{\"internalType\":\"contract IERC20Metadata\",\"name\":\"asset_\",\"type\":\"address\"},{\"internalType\":\"contract IERC20Metadata\",\"name\":\"investAsset_\",\"type\":\"address\"},{\"internalType\":\"contract AggregatorV3Interface\",\"name\":\"assetOracle_\",\"type\":\"address\"},{\"internalType\":\"contract AggregatorV3Interface\",\"name\":\"investAssetOracle_\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"priceTolerance_\",\"type\":\"uint256\"},{\"internalType\":\"contract IMerklDistributor\",\"name\":\"distributor_\",\"type\":\"address\"}],\"stateMutability\":\"nonpayable\",\"type\":\"constructor\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"target\",\"type\":\"address\"}],\"name\":\"AddressEmptyCode\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"CanBeCalledOnlyThroughDelegateCall\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"CannotDisconnectWithAssets\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"FailedCall\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"InvalidAsset\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"int256\",\"name\":\"chainlinkAnswer\",\"type\":\"int256\"}],\"name\":\"InvalidPrice\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"NoExtraDataAllowed\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"minUpdateAt\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"updatedAt\",\"type\":\"uint256\"}],\"name\":\"PriceTooOld\",\"type\":\"error\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"token\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"}],\"name\":\"RewardsClaimed\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"token\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"amountIn\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"amountOut\",\"type\":\"uint256\"}],\"name\":\"RewardsSwapped\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"components\":[{\"internalType\":\"enum SwapLibrary.SwapProtocol\",\"name\":\"protocol\",\"type\":\"uint8\"},{\"internalType\":\"uint256\",\"name\":\"maxSlippage\",\"type\":\"uint256\"},{\"internalType\":\"bytes\",\"name\":\"customParams\",\"type\":\"bytes\"}],\"indexed\":false,\"internalType\":\"struct SwapLibrary.SwapConfig\",\"name\":\"oldConfig\",\"type\":\"tuple\"},{\"components\":[{\"internalType\":\"enum SwapLibrary.SwapProtocol\",\"name\":\"protocol\",\"type\":\"uint8\"},{\"internalType\":\"uint256\",\"name\":\"maxSlippage\",\"type\":\"uint256\"},{\"internalType\":\"bytes\",\"name\":\"customParams\",\"type\":\"bytes\"}],\"indexed\":false,\"internalType\":\"struct SwapLibrary.SwapConfig\",\"name\":\"newConfig\",\"type\":\"tuple\"}],\"name\":\"SwapConfigChanged\",\"type\":\"event\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"name\":\"asset\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"assetOracle\",\"outputs\":[{\"internalType\":\"contract AggregatorV3Interface\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes\",\"name\":\"initData\",\"type\":\"bytes\"}],\"name\":\"connect\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"assets\",\"type\":\"uint256\"}],\"name\":\"deposit\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bool\",\"name\":\"force\",\"type\":\"bool\"}],\"name\":\"disconnect\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"distributor\",\"outputs\":[{\"internalType\":\"contract IMerklDistributor\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint8\",\"name\":\"method\",\"type\":\"uint8\"},{\"internalType\":\"bytes\",\"name\":\"params\",\"type\":\"bytes\"}],\"name\":\"forwardEntryPoint\",\"outputs\":[{\"internalType\":\"bytes\",\"name\":\"result\",\"type\":\"bytes\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"contract_\",\"type\":\"address\"}],\"name\":\"getSwapConfig\",\"outputs\":[{\"components\":[{\"internalType\":\"enum SwapLibrary.SwapProtocol\",\"name\":\"protocol\",\"type\":\"uint8\"},{\"internalType\":\"uint256\",\"name\":\"maxSlippage\",\"type\":\"uint256\"},{\"internalType\":\"bytes\",\"name\":\"customParams\",\"type\":\"bytes\"}],\"internalType\":\"struct SwapLibrary.SwapConfig\",\"name\":\"\",\"type\":\"tuple\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"name\":\"investAsset\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"investAssetOracle\",\"outputs\":[{\"internalType\":\"contract AggregatorV3Interface\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"investAssetPrice\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"name\":\"maxDeposit\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"contract_\",\"type\":\"address\"}],\"name\":\"maxWithdraw\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"priceTolerance\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"storageSlot\",\"outputs\":[{\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"contract_\",\"type\":\"address\"}],\"name\":\"totalAssets\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"assets\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"assets\",\"type\":\"uint256\"}],\"name\":\"withdraw\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"}],\"devdoc\":{\"author\":\"Ensuro\",\"custom:security-contact\":\"security@ensuro.co\",\"details\":\"Strategy that collects the Merkl Rewards and accounts them. Also supports swapping them in reinjecting      them into the vault.      Uses Chainlink oracles to price the asset\",\"errors\":{\"AddressEmptyCode(address)\":[{\"details\":\"There's no code at `target` (it is not a contract).\"}],\"FailedCall()\":[{\"details\":\"A call to an address target failed. The target may have reverted.\"}]},\"kind\":\"dev\",\"methods\":{\"asset(address)\":{\"details\":\"The address of the underlying token used for accounting, depositing, and withdrawing. It must be the same      as `IERC4626(contract_).asset()` when dealing with vaults.\",\"params\":{\"contract_\":\"The address of the vault contract that owns the assets.\"}},\"connect(bytes)\":{\"details\":\"Called when the strategy is plugged into the vault. Initializes the strategy storage and can do validations\",\"params\":{\"initData\":\"Initialization data for the strategy. Must be parsed by the strategy, since the format is                 strategy specific\"}},\"constructor\":{\"details\":\"Constructor of the strategy\",\"params\":{\"assetOracle_\":\"The chainlink oracle to obtain the price of the asset. If address(0) the price is 1.\",\"asset_\":\"The address of the underlying token used for accounting, depositing, and withdrawing.\",\"investAssetOracle_\":\"The chainlink oracle to obtain the price of the invest asset. If address(0) => 1\",\"investAsset_\":\"The address of the tokens hold by the strategy. Typically a rebasing yield bearing token\"}},\"deposit(uint256)\":{\"details\":\"Deposit the amount of assets given into the strategy by swapping _asset to _investAsset\",\"params\":{\"assets\":\"Amount of assets to be deposited.\"}},\"disconnect(bool)\":{\"details\":\"Called when the strategy is un-plugged from the vault. Should revert if there are still assets in the      strategy, unless force==true.\",\"params\":{\"force\":\"If true, disconnect should not fail if assets remain in the strategy. Otherwise, disconnect              MUST fail if totalAssets() != 0.\"}},\"forwardEntryPoint(uint8,bytes)\":{\"details\":\"Receives an external call to execute a custom method of action in the strategy. Can be used for harvesting      rewards or other tasks. It's called with delegatecall from the calling vault. The calling vault SHOULD      do the access control validation, since the strategy normally won't do it.\",\"params\":{\"method\":\"An id of the method or action to call/execute. It's recommended to define an enum and convert the               the uint8 value into the enum.\",\"params\":\"Params for the method or action. Parsed by the strategy, it might differ from one or other method.\"}},\"getSwapConfig(address)\":{\"details\":\"Returns the swap configuration of the given contract.\",\"params\":{\"contract_\":\"Address of the vault contract\"}},\"investAsset(address)\":{\"details\":\"Returns the address of the asset invested in the strategy.\"},\"investAssetPrice()\":{\"details\":\"Returns the amount of `asset()` required to acquire one unit of `investAsset()` or the amount of `asset()`      that should be received by selling a unit of `investAsset()`. It doesn't consider slippage.\",\"returns\":{\"_0\":\"The amount is expressed in WAD (18 decimals), units: (asset/investAsset)\"}},\"maxDeposit(address)\":{\"details\":\"Returns the max amount that can be deposited into the strategy.\",\"params\":{\"contract_\":\"The address of the vault contract that owns the assets and where the strategy is plugged\"}},\"maxWithdraw(address)\":{\"details\":\"Returns the max amount that can be withdrawn from the strategy.\",\"params\":{\"contract_\":\"The address of the vault contract that owns the assets and where the strategy is plugged\"}},\"totalAssets(address)\":{\"details\":\"Returns the number of assets under management of the investment strategy for a given contract.\",\"params\":{\"contract_\":\"The address of the vault contract that owns the assets and where the strategy is plugged\"}},\"withdraw(uint256)\":{\"details\":\"Withdraws the amount of assets given from the strategy swapping _investAsset to _asset\",\"params\":{\"assets\":\"Amount of assets to be withdrawn.\"}}},\"title\":\"MerklRewardsInvestStrategy\",\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{},\"version\":1}},\"settings\":{\"compilationTarget\":{\"contracts/strategies/MerklRewardsInvestStrategy.sol\":\"MerklRewardsInvestStrategy\"},\"evmVersion\":\"prague\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"enabled\":true,\"runs\":200},\"remappings\":[]},\"sources\":{\"@ensuro/swaplibrary/contracts/CurveRoutes.sol\":{\"keccak256\":\"0x631af8ec291043d7eef34b97a427a4f53eb46d852088f6620c46a36a7e851963\",\"license\":\"Apache-2.0\",\"urls\":[\"bzz-raw://fbaf0f64980572d977b87b83e8bfc9c79fd1d2dc49a21e77e2a11fb8dec2413a\",\"dweb:/ipfs/QmYTpv2BroRz8PpWXYRp5KaaCXRy3tkZ95DeXybP4j3ti4\"]},\"@ensuro/swaplibrary/contracts/SwapLibrary.sol\":{\"keccak256\":\"0x3b1db1690ce8fa74972e4b4a57de41f4a880c8566b279316113d7398ea711812\",\"license\":\"Apache-2.0\",\"urls\":[\"bzz-raw://2746b500f5916604c16589fdbabf94b4d97689dcb96095376ed4956f9de663a6\",\"dweb:/ipfs/QmepecwnwauXsLuQmmoFNbH5XbZYEHH4bjnshQRRUeyH4r\"]},\"@ensuro/swaplibrary/contracts/dependencies/ICurveRouter.sol\":{\"keccak256\":\"0xf8c39f61b7459cfe6ba74d88fee74efd6d3d05d5cd64dc9eb6d08fbe0361affd\",\"license\":\"UNLICENSED\",\"urls\":[\"bzz-raw://55f11ef7e1cc66fa2c6c2aec436ccf00a835acf4281bff4ee9b4d2cb8980c92f\",\"dweb:/ipfs/QmPfvjcbLbHwoFRFGkM5zvM25vrEvZxjwbxSUL5jm5n3pZ\"]},\"@openzeppelin/contracts/interfaces/IERC1967.sol\":{\"keccak256\":\"0xbf2aefe54b76d7f7bcd4f6da1080b7b1662611937d870b880db584d09cea56b5\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://f5e7e2f12e0feec75296e57f51f82fdaa8bd1551f4b8cc6560442c0bf60f818c\",\"dweb:/ipfs/QmcW9wDMaQ8RbQibMarfp17a3bABzY5KraWe2YDwuUrUoz\"]},\"@openzeppelin/contracts/interfaces/IERC20Metadata.sol\":{\"keccak256\":\"0xd735962e3d6660884153ba8a972b5f100dde4c482f2ff1c525ba7fdefb154cbd\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://5a264d17b093f585844b0d977e9f60555b8c8d6513b304fde863cdf652a0d336\",\"dweb:/ipfs/QmWXfaJisjVnrjTUjZGryZpMob9wKivvtbodLS3PTc1ttq\"]},\"@openzeppelin/contracts/proxy/ERC1967/ERC1967Utils.sol\":{\"keccak256\":\"0xa1ad192cd45317c788618bef5cb1fb3ca4ce8b230f6433ac68cc1d850fb81618\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://b43447bb85a53679d269a403c693b9d88d6c74177dfb35eddca63abaf7cf110a\",\"dweb:/ipfs/QmXSDmpd4bNZj1PDgegr6C4w1jDaWHXCconC3rYiw9TSkQ\"]},\"@openzeppelin/contracts/proxy/beacon/IBeacon.sol\":{\"keccak256\":\"0x20462ddb2665e9521372c76b001d0ce196e59dbbd989de9af5576cad0bd5628b\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://f417fd12aeec8fbfaceaa30e3a08a0724c0bc39de363e2acf6773c897abbaf6d\",\"dweb:/ipfs/QmU4Hko6sApdweVM92CsiuLKkCk8HfyBeutF89PCTz5Tye\"]},\"@openzeppelin/contracts/token/ERC20/IERC20.sol\":{\"keccak256\":\"0x74ed01eb66b923d0d0cfe3be84604ac04b76482a55f9dd655e1ef4d367f95bc2\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://5282825a626cfe924e504274b864a652b0023591fa66f06a067b25b51ba9b303\",\"dweb:/ipfs/QmeCfPykghhMc81VJTrHTC7sF6CRvaA1FXVq2pJhwYp1dV\"]},\"@openzeppelin/contracts/token/ERC20/extensions/IERC20Metadata.sol\":{\"keccak256\":\"0xd6fa4088198f04eef10c5bce8a2f4d60554b7ec4b987f684393c01bf79b94d9f\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://f95ee0bbd4dd3ac730d066ba3e785ded4565e890dbec2fa7d3b9fe3bad9d0d6e\",\"dweb:/ipfs/QmSLr6bHkPFWT7ntj34jmwfyskpwo97T9jZUrk5sz3sdtR\"]},\"@openzeppelin/contracts/utils/Address.sol\":{\"keccak256\":\"0x0fa9e0d3a859900b5a46f70a03c73adf259603d5e05027a37fe0b45529d85346\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://c2add4da0240c9f2ce47649c8bb6b11b40e98cf6f88b8bdc76b2704e89391710\",\"dweb:/ipfs/QmNQTwF2uVzu4CRtNxr8bxyP9XuW6VsZuo2Nr4KR2bZr3d\"]},\"@openzeppelin/contracts/utils/Errors.sol\":{\"keccak256\":\"0x6afa713bfd42cf0f7656efa91201007ac465e42049d7de1d50753a373648c123\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://ba1d02f4847670a1b83dec9f7d37f0b0418d6043447b69f3a29a5f9efc547fcf\",\"dweb:/ipfs/QmQ7iH2keLNUKgq2xSWcRmuBE5eZ3F5whYAkAGzCNNoEWB\"]},\"@openzeppelin/contracts/utils/LowLevelCall.sol\":{\"keccak256\":\"0x5b4802a4352474792df3107e961d1cc593e47b820c14f69d3505cb28f5a6a583\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://a6f86fd01f829499fe0545ff5dda07d4521988e88bfe0bf801fc15650921ed56\",\"dweb:/ipfs/QmUUKu4ZDffHAmfkf3asuQfmLTyfpuy2Amdncc3SqfzKPG\"]},\"@openzeppelin/contracts/utils/Panic.sol\":{\"keccak256\":\"0xf7fe324703a64fc51702311dc51562d5cb1497734f074e4f483bfb6717572d7a\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://c6a5ff4f9fd8649b7ee20800b7fa387d3465bd77cf20c2d1068cd5c98e1ed57a\",\"dweb:/ipfs/QmVSaVJf9FXFhdYEYeCEfjMVHrxDh5qL4CGkxdMWpQCrqG\"]},\"@openzeppelin/contracts/utils/StorageSlot.sol\":{\"keccak256\":\"0xcf74f855663ce2ae00ed8352666b7935f6cddea2932fdf2c3ecd30a9b1cd0e97\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://9f660b1f351b757dfe01438e59888f31f33ded3afcf5cb5b0d9bf9aa6f320a8b\",\"dweb:/ipfs/QmarDJ5hZEgBtCmmrVzEZWjub9769eD686jmzb2XpSU1cM\"]},\"@openzeppelin/contracts/utils/math/Math.sol\":{\"keccak256\":\"0x09e3f1c72d4c5cbe8e2644ab7313f8f7177533ae2f4c24cdcbbeaf520a73734c\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://93208401215d539fa2d81626b207c1f611def7883d0e447b3b5969ebaa7b3c2c\",\"dweb:/ipfs/QmXPxDnQPx8LAweX5ZJqEcwkvs59kP4c64VVDG1Jjq1mef\"]},\"@openzeppelin/contracts/utils/math/SafeCast.sol\":{\"keccak256\":\"0x195533c86d0ef72bcc06456a4f66a9b941f38eb403739b00f21fd7c1abd1ae54\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://b1d578337048cad08c1c03041cca5978eff5428aa130c781b271ad9e5566e1f8\",\"dweb:/ipfs/QmPFKL2r9CBsMwmUqqdcFPfHZB2qcs9g1HDrPxzWSxomvy\"]},\"@uniswap/v3-core/contracts/interfaces/callback/IUniswapV3SwapCallback.sol\":{\"keccak256\":\"0x3f485fb1a44e8fbeadefb5da07d66edab3cfe809f0ac4074b1e54e3eb3c4cf69\",\"license\":\"GPL-2.0-or-later\",\"urls\":[\"bzz-raw://095ce0626b41318c772b3ebf19d548282607f6a8f3d6c41c13edfbd5370c8652\",\"dweb:/ipfs/QmVDZfJJ89UUCE1hMyzqpkZAtQ8jUsBgZNE5AMRG7RzRFS\"]},\"@uniswap/v3-periphery/contracts/interfaces/ISwapRouter.sol\":{\"keccak256\":\"0x9bfaf1feb32814623e627ab70f2409760b15d95f1f9b058e2b3399a8bb732975\",\"license\":\"GPL-2.0-or-later\",\"urls\":[\"bzz-raw://a8a2c3e55965b61bcd91993d8e1d5d34b8b8a63e0fdfce87a85f6af92526fd53\",\"dweb:/ipfs/QmQj2CSCSwqDSU4KMNWxGsN2336Cy64WgpV1X1EHXNZWxM\"]},\"contracts/InvestStrategyClient.sol\":{\"keccak256\":\"0x3c8fff73042023381eb750ba13a9066475d208e99bde568e1243f0e1e282c894\",\"license\":\"Apache-2.0\",\"urls\":[\"bzz-raw://3f8283ffa5c512e482b0065d9391c7060ebc1fa5968c55e6a05958480b7facb6\",\"dweb:/ipfs/QmT4N9Z19b6AUXpXtg23d3ijBExyKuRJBeQ3o8WCobgpfT\"]},\"contracts/MSVBase.sol\":{\"keccak256\":\"0x5c77645d099729ec7f37fdddf61a21aa1ce479ba1770da5694564687d436942f\",\"license\":\"Apache-2.0\",\"urls\":[\"bzz-raw://496ee230293f8ac7216e6300d568b29bbf1f7d5a4c9b68ea58baaae02f55e267\",\"dweb:/ipfs/QmVYH6gLLCrVpeKSHGxAeVVDQcVPgSiwhDB2i8uLPnPHaJ\"]},\"contracts/dependencies/chainlink/AggregatorV3Interface.sol\":{\"keccak256\":\"0x257a8d28fa83d3d942547c8e129ef465e4b5f3f31171e7be4739a4c98da6b4f0\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://6d39e11b1dc7b9b8ccdabbc9be442ab7cda4a81c748f57e316dcb1bcb4a28bf9\",\"dweb:/ipfs/QmaG6vz6W6iEUBsbHSBob5mdcitYxWjoygxREHpsJHfWrS\"]},\"contracts/interfaces/IExposeStorage.sol\":{\"keccak256\":\"0x68d4dbc7e135ac949f5f557a1f071b96d1639262188f91957bf082be7e72b1c7\",\"license\":\"Apache-2.0\",\"urls\":[\"bzz-raw://29fc549ef136e19275bb9225c8e7f02e0cc3b274acef4e6d7002c6f3f74e5c13\",\"dweb:/ipfs/QmVzrn7Cbxe8xzLwy4ZpzxP6CBEKsegXG8VusNYqssCe3d\"]},\"contracts/interfaces/IInvestStrategy.sol\":{\"keccak256\":\"0x6800a1f147def2252b79629150ce9cd87e914ca5a966f1035fbca6328bbc9c4b\",\"license\":\"Apache-2.0\",\"urls\":[\"bzz-raw://2e9260604e0ffcf405819f85fee4124d9a090cf716f389ff92cf76a2837a2e42\",\"dweb:/ipfs/QmVdKEW8C6MDyiiUfjBxEMTWjfPrBJadptpxh9L2uCebDK\"]},\"contracts/strategies/ChainlinkSwapAssetInvestStrategy.sol\":{\"keccak256\":\"0x384ae661c732b72d24748b913e472f66870f80dc3cabf06ab818b6696b355216\",\"license\":\"Apache-2.0\",\"urls\":[\"bzz-raw://45bac1a281d2c15f1ec50e9aac1ecdcf0b0447e8b982709626b738f218b562e9\",\"dweb:/ipfs/QmQkfhQoQDpA47oJEES5RH3nYmbqifMwyeqCj9GGeiDhkv\"]},\"contracts/strategies/MerklRewardsInvestStrategy.sol\":{\"keccak256\":\"0x9de3879f4d0542beba28424bf6bf10cc4b5e8abc36ef19f2ba5ac4979293a7ed\",\"license\":\"Apache-2.0\",\"urls\":[\"bzz-raw://983a320f926746db995ddcfbc4d70340be8a46eb6b2f62bc129dec213489be34\",\"dweb:/ipfs/QmUSBogcgwgJ1TE3PzPPf1fN15M4xagrA7J1uiHvFePTZo\"]},\"contracts/strategies/SwapAssetInvestStrategy.sol\":{\"keccak256\":\"0xcbe222638e775ca5e6d7cd2e864bdb35fa13afe6c648f682ef3c7a8f6439d4c6\",\"license\":\"Apache-2.0\",\"urls\":[\"bzz-raw://e9ea100bc7cf8aa1d848fad0ade54b3c636790a90dea10fd829ac5c5cabf4763\",\"dweb:/ipfs/QmYm6d3bZh39VTucf9aGuRPYFnMecx2jnUoE9ZtqLM9Lbo\"]},\"solidity-bytes-utils/contracts/BytesLib.sol\":{\"keccak256\":\"0xf4b07e5d8f69407bb43c6db224adfcf6c73b512dd64e85008ac3c222910c3555\",\"license\":\"Unlicense\",\"urls\":[\"bzz-raw://db020721e59008f7159b65962cc24038c92ac1c2ee8b7cfaa28a1771ced663f5\",\"dweb:/ipfs/QmQ8rznRTYc3AoVCJno8tY6vQVKCbhDJ3husfytUUvMrSN\"]}},\"version\":1}","storageLayout":{"storage":[],"types":null}}},"contracts/strategies/MorphoVaultV2InvestStrategy.sol":{"IVaultV2":{"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":"sender","type":"address"},{"indexed":true,"internalType":"address","name":"owner","type":"address"},{"indexed":false,"internalType":"uint256","name":"assets","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"shares","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":"sender","type":"address"},{"indexed":true,"internalType":"address","name":"receiver","type":"address"},{"indexed":true,"internalType":"address","name":"owner","type":"address"},{"indexed":false,"internalType":"uint256","name":"assets","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"shares","type":"uint256"}],"name":"Withdraw","type":"event"},{"inputs":[],"name":"_totalAssets","outputs":[{"internalType":"uint128","name":"","type":"uint128"}],"stateMutability":"view","type":"function"},{"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":"value","type":"uint256"}],"name":"approve","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"asset","outputs":[{"internalType":"address","name":"assetTokenAddress","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"balanceOf","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"shares","type":"uint256"}],"name":"convertToAssets","outputs":[{"internalType":"uint256","name":"assets","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"assets","type":"uint256"}],"name":"convertToShares","outputs":[{"internalType":"uint256","name":"shares","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"decimals","outputs":[{"internalType":"uint8","name":"","type":"uint8"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"assets","type":"uint256"},{"internalType":"address","name":"receiver","type":"address"}],"name":"deposit","outputs":[{"internalType":"uint256","name":"shares","type":"uint256"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"lastUpdate","outputs":[{"internalType":"uint64","name":"","type":"uint64"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"receiver","type":"address"}],"name":"maxDeposit","outputs":[{"internalType":"uint256","name":"maxAssets","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"receiver","type":"address"}],"name":"maxMint","outputs":[{"internalType":"uint256","name":"maxShares","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"owner","type":"address"}],"name":"maxRedeem","outputs":[{"internalType":"uint256","name":"maxShares","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"owner","type":"address"}],"name":"maxWithdraw","outputs":[{"internalType":"uint256","name":"maxAssets","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"shares","type":"uint256"},{"internalType":"address","name":"receiver","type":"address"}],"name":"mint","outputs":[{"internalType":"uint256","name":"assets","type":"uint256"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"name","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"assets","type":"uint256"}],"name":"previewDeposit","outputs":[{"internalType":"uint256","name":"shares","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"shares","type":"uint256"}],"name":"previewMint","outputs":[{"internalType":"uint256","name":"assets","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"shares","type":"uint256"}],"name":"previewRedeem","outputs":[{"internalType":"uint256","name":"assets","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"assets","type":"uint256"}],"name":"previewWithdraw","outputs":[{"internalType":"uint256","name":"shares","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"shares","type":"uint256"},{"internalType":"address","name":"receiver","type":"address"},{"internalType":"address","name":"owner","type":"address"}],"name":"redeem","outputs":[{"internalType":"uint256","name":"assets","type":"uint256"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"symbol","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"totalAssets","outputs":[{"internalType":"uint256","name":"totalManagedAssets","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"totalSupply","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"to","type":"address"},{"internalType":"uint256","name":"value","type":"uint256"}],"name":"transfer","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"from","type":"address"},{"internalType":"address","name":"to","type":"address"},{"internalType":"uint256","name":"value","type":"uint256"}],"name":"transferFrom","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"assets","type":"uint256"},{"internalType":"address","name":"receiver","type":"address"},{"internalType":"address","name":"owner","type":"address"}],"name":"withdraw","outputs":[{"internalType":"uint256","name":"shares","type":"uint256"}],"stateMutability":"nonpayable","type":"function"}],"evm":{"bytecode":{"functionDebugData":{},"generatedSources":[],"linkReferences":{},"object":"","opcodes":"","sourceMap":""},"deployedBytecode":{"functionDebugData":{},"generatedSources":[],"immutableReferences":{},"linkReferences":{},"object":"","opcodes":"","sourceMap":""},"methodIdentifiers":{"_totalAssets()":"ce04bebb","allowance(address,address)":"dd62ed3e","approve(address,uint256)":"095ea7b3","asset()":"38d52e0f","balanceOf(address)":"70a08231","convertToAssets(uint256)":"07a2d13a","convertToShares(uint256)":"c6e6f592","decimals()":"313ce567","deposit(uint256,address)":"6e553f65","lastUpdate()":"c0463711","maxDeposit(address)":"402d267d","maxMint(address)":"c63d75b6","maxRedeem(address)":"d905777e","maxWithdraw(address)":"ce96cb77","mint(uint256,address)":"94bf804d","name()":"06fdde03","previewDeposit(uint256)":"ef8b30f7","previewMint(uint256)":"b3d7f6b9","previewRedeem(uint256)":"4cdad506","previewWithdraw(uint256)":"0a28a477","redeem(uint256,address,address)":"ba087652","symbol()":"95d89b41","totalAssets()":"01e1d114","totalSupply()":"18160ddd","transfer(address,uint256)":"a9059cbb","transferFrom(address,address,uint256)":"23b872dd","withdraw(uint256,address,address)":"b460af94"}},"metadata":"{\"compiler\":{\"version\":\"0.8.30+commit.73712a01\"},\"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\":\"sender\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"assets\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"shares\",\"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\":\"sender\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"receiver\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"assets\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"shares\",\"type\":\"uint256\"}],\"name\":\"Withdraw\",\"type\":\"event\"},{\"inputs\":[],\"name\":\"_totalAssets\",\"outputs\":[{\"internalType\":\"uint128\",\"name\":\"\",\"type\":\"uint128\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"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\":\"value\",\"type\":\"uint256\"}],\"name\":\"approve\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"asset\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"assetTokenAddress\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"}],\"name\":\"balanceOf\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"shares\",\"type\":\"uint256\"}],\"name\":\"convertToAssets\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"assets\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"assets\",\"type\":\"uint256\"}],\"name\":\"convertToShares\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"shares\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"decimals\",\"outputs\":[{\"internalType\":\"uint8\",\"name\":\"\",\"type\":\"uint8\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"assets\",\"type\":\"uint256\"},{\"internalType\":\"address\",\"name\":\"receiver\",\"type\":\"address\"}],\"name\":\"deposit\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"shares\",\"type\":\"uint256\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"lastUpdate\",\"outputs\":[{\"internalType\":\"uint64\",\"name\":\"\",\"type\":\"uint64\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"receiver\",\"type\":\"address\"}],\"name\":\"maxDeposit\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"maxAssets\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"receiver\",\"type\":\"address\"}],\"name\":\"maxMint\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"maxShares\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"}],\"name\":\"maxRedeem\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"maxShares\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"}],\"name\":\"maxWithdraw\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"maxAssets\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"shares\",\"type\":\"uint256\"},{\"internalType\":\"address\",\"name\":\"receiver\",\"type\":\"address\"}],\"name\":\"mint\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"assets\",\"type\":\"uint256\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"name\",\"outputs\":[{\"internalType\":\"string\",\"name\":\"\",\"type\":\"string\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"assets\",\"type\":\"uint256\"}],\"name\":\"previewDeposit\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"shares\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"shares\",\"type\":\"uint256\"}],\"name\":\"previewMint\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"assets\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"shares\",\"type\":\"uint256\"}],\"name\":\"previewRedeem\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"assets\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"assets\",\"type\":\"uint256\"}],\"name\":\"previewWithdraw\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"shares\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"shares\",\"type\":\"uint256\"},{\"internalType\":\"address\",\"name\":\"receiver\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"}],\"name\":\"redeem\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"assets\",\"type\":\"uint256\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"symbol\",\"outputs\":[{\"internalType\":\"string\",\"name\":\"\",\"type\":\"string\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"totalAssets\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"totalManagedAssets\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"totalSupply\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"value\",\"type\":\"uint256\"}],\"name\":\"transfer\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"from\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"value\",\"type\":\"uint256\"}],\"name\":\"transferFrom\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"assets\",\"type\":\"uint256\"},{\"internalType\":\"address\",\"name\":\"receiver\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"}],\"name\":\"withdraw\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"shares\",\"type\":\"uint256\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"}],\"devdoc\":{\"details\":\"See https://github.com/morpho-org/vault-v2/blob/main/src/interfaces/IVaultV2.sol\",\"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 a `value` amount of tokens 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.\"},\"asset()\":{\"details\":\"Returns the address of the underlying token used for the Vault for accounting, depositing, and withdrawing. - MUST be an ERC-20 token contract. - MUST NOT revert.\"},\"balanceOf(address)\":{\"details\":\"Returns the value of tokens owned by `account`.\"},\"convertToAssets(uint256)\":{\"details\":\"Returns the amount of assets that the Vault would exchange for the amount of shares provided, in an ideal scenario where all the conditions are met. - MUST NOT be inclusive of any fees that are charged against assets in the Vault. - MUST NOT show any variations depending on the caller. - MUST NOT reflect slippage or other on-chain conditions, when performing the actual exchange. - MUST NOT revert. NOTE: This calculation MAY NOT reflect the \\u201cper-user\\u201d price-per-share, and instead should reflect the \\u201caverage-user\\u2019s\\u201d price-per-share, meaning what the average user should expect to see when exchanging to and from.\"},\"convertToShares(uint256)\":{\"details\":\"Returns the amount of shares that the Vault would exchange for the amount of assets provided, in an ideal scenario where all the conditions are met. - MUST NOT be inclusive of any fees that are charged against assets in the Vault. - MUST NOT show any variations depending on the caller. - MUST NOT reflect slippage or other on-chain conditions, when performing the actual exchange. - MUST NOT revert. NOTE: This calculation MAY NOT reflect the \\u201cper-user\\u201d price-per-share, and instead should reflect the \\u201caverage-user\\u2019s\\u201d price-per-share, meaning what the average user should expect to see when exchanging to and from.\"},\"decimals()\":{\"details\":\"Returns the decimals places of the token.\"},\"deposit(uint256,address)\":{\"details\":\"Deposit `assets` underlying tokens and send the corresponding number of vault shares (`shares`) to `receiver`. - MUST emit the Deposit event. - MAY support an additional flow in which the underlying tokens are owned by the Vault contract before the   deposit execution, and are accounted for during deposit. - MUST revert if all of assets cannot be deposited (due to deposit limit being reached, slippage, the user not   approving enough underlying tokens to the Vault contract, etc). NOTE: most implementations will require pre-approval of the Vault with the Vault\\u2019s underlying asset token.\"},\"maxDeposit(address)\":{\"details\":\"Returns the maximum amount of the underlying asset that can be deposited into the Vault for the receiver, through a deposit call. - MUST return a limited value if receiver is subject to some deposit limit. - MUST return 2 ** 256 - 1 if there is no limit on the maximum amount of assets that may be deposited. - MUST NOT revert.\"},\"maxMint(address)\":{\"details\":\"Returns the maximum amount of the Vault shares that can be minted for the receiver, through a mint call. - MUST return a limited value if receiver is subject to some mint limit. - MUST return 2 ** 256 - 1 if there is no limit on the maximum amount of shares that may be minted. - MUST NOT revert.\"},\"maxRedeem(address)\":{\"details\":\"Returns the maximum amount of Vault shares that can be redeemed from the owner balance in the Vault, through a redeem call. - MUST return a limited value if owner is subject to some withdrawal limit or timelock. - MUST return balanceOf(owner) if owner is not subject to any withdrawal limit or timelock. - MUST NOT revert.\"},\"maxWithdraw(address)\":{\"details\":\"Returns the maximum amount of the underlying asset that can be withdrawn from the owner balance in the Vault, through a withdraw call. - MUST return a limited value if owner is subject to some withdrawal limit or timelock. - MUST NOT revert.\"},\"mint(uint256,address)\":{\"details\":\"Mints exactly `shares` vault shares to `receiver` in exchange for `assets` underlying tokens. - MUST emit the Deposit event. - MAY support an additional flow in which the underlying tokens are owned by the Vault contract before the mint   execution, and are accounted for during mint. - MUST revert if all of shares cannot be minted (due to deposit limit being reached, slippage, the user not   approving enough underlying tokens to the Vault contract, etc). NOTE: most implementations will require pre-approval of the Vault with the Vault\\u2019s underlying asset token.\"},\"name()\":{\"details\":\"Returns the name of the token.\"},\"previewDeposit(uint256)\":{\"details\":\"Allows an on-chain or off-chain user to simulate the effects of their deposit at the current block, given current on-chain conditions. - MUST return as close to and no more than the exact amount of Vault shares that would be minted in a deposit   call in the same transaction. I.e. deposit should return the same or more shares as previewDeposit if called   in the same transaction. - MUST NOT account for deposit limits like those returned from maxDeposit and should always act as though the   deposit would be accepted, regardless if the user has enough tokens approved, etc. - MUST be inclusive of deposit fees. Integrators should be aware of the existence of deposit fees. - MUST NOT revert. NOTE: any unfavorable discrepancy between convertToShares and previewDeposit SHOULD be considered slippage in share price or some other type of condition, meaning the depositor will lose assets by depositing.\"},\"previewMint(uint256)\":{\"details\":\"Allows an on-chain or off-chain user to simulate the effects of their mint at the current block, given current on-chain conditions. - MUST return as close to and no fewer than the exact amount of assets that would be deposited in a mint call   in the same transaction. I.e. mint should return the same or fewer assets as previewMint if called in the   same transaction. - MUST NOT account for mint limits like those returned from maxMint and should always act as though the mint   would be accepted, regardless if the user has enough tokens approved, etc. - MUST be inclusive of deposit fees. Integrators should be aware of the existence of deposit fees. - MUST NOT revert. NOTE: any unfavorable discrepancy between convertToAssets and previewMint SHOULD be considered slippage in share price or some other type of condition, meaning the depositor will lose assets by minting.\"},\"previewRedeem(uint256)\":{\"details\":\"Allows an on-chain or off-chain user to simulate the effects of their redemption at the current block, given current on-chain conditions. - MUST return as close to and no more than the exact amount of assets that would be withdrawn in a redeem call   in the same transaction. I.e. redeem should return the same or more assets as previewRedeem if called in the   same transaction. - MUST NOT account for redemption limits like those returned from maxRedeem and should always act as though the   redemption would be accepted, regardless if the user has enough shares, etc. - MUST be inclusive of withdrawal fees. Integrators should be aware of the existence of withdrawal fees. - MUST NOT revert. NOTE: any unfavorable discrepancy between convertToAssets and previewRedeem SHOULD be considered slippage in share price or some other type of condition, meaning the depositor will lose assets by redeeming.\"},\"previewWithdraw(uint256)\":{\"details\":\"Allows an on-chain or off-chain user to simulate the effects of their withdrawal at the current block, given current on-chain conditions. - MUST return as close to and no fewer than the exact amount of Vault shares that would be burned in a withdraw   call in the same transaction. I.e. withdraw should return the same or fewer shares as previewWithdraw if   called   in the same transaction. - MUST NOT account for withdrawal limits like those returned from maxWithdraw and should always act as though   the withdrawal would be accepted, regardless if the user has enough shares, etc. - MUST be inclusive of withdrawal fees. Integrators should be aware of the existence of withdrawal fees. - MUST NOT revert. NOTE: any unfavorable discrepancy between convertToShares and previewWithdraw SHOULD be considered slippage in share price or some other type of condition, meaning the depositor will lose assets by depositing.\"},\"redeem(uint256,address,address)\":{\"details\":\"Burns exactly shares from owner and sends assets of underlying tokens to receiver. - MUST emit the Withdraw event. - MAY support an additional flow in which the underlying tokens are owned by the Vault contract before the   redeem execution, and are accounted for during redeem. - MUST revert if all of shares cannot be redeemed (due to withdrawal limit being reached, slippage, the owner   not having enough shares, etc). NOTE: some implementations will require pre-requesting to the Vault before a withdrawal may be performed. Those methods should be performed separately.\"},\"symbol()\":{\"details\":\"Returns the symbol of the token.\"},\"totalAssets()\":{\"details\":\"Returns the total amount of the underlying asset that is \\u201cmanaged\\u201d by Vault. - SHOULD include any compounding that occurs from yield. - MUST be inclusive of any fees that are charged against assets in the Vault. - MUST NOT revert.\"},\"totalSupply()\":{\"details\":\"Returns the value of tokens in existence.\"},\"transfer(address,uint256)\":{\"details\":\"Moves a `value` amount of tokens from the caller's account to `to`. Returns a boolean value indicating whether the operation succeeded. Emits a {Transfer} event.\"},\"transferFrom(address,address,uint256)\":{\"details\":\"Moves a `value` amount of tokens from `from` to `to` using the allowance mechanism. `value` is then deducted from the caller's allowance. Returns a boolean value indicating whether the operation succeeded. Emits a {Transfer} event.\"},\"withdraw(uint256,address,address)\":{\"details\":\"Burns shares from owner and sends exactly assets of underlying tokens to receiver. - MUST emit the Withdraw event. - MAY support an additional flow in which the underlying tokens are owned by the Vault contract before the   withdraw execution, and are accounted for during withdraw. - MUST revert if all of assets cannot be withdrawn (due to withdrawal limit being reached, slippage, the owner   not having enough shares, etc). Note that some implementations will require pre-requesting to the Vault before a withdrawal may be performed. Those methods should be performed separately.\"}},\"title\":\"IVaultV2\",\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{},\"notice\":\"Interface of VaultV2 Morpho contracts, only relevant methods.\",\"version\":1}},\"settings\":{\"compilationTarget\":{\"contracts/strategies/MorphoVaultV2InvestStrategy.sol\":\"IVaultV2\"},\"evmVersion\":\"prague\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"enabled\":true,\"runs\":200},\"remappings\":[]},\"sources\":{\"@openzeppelin/contracts/interfaces/IERC20.sol\":{\"keccak256\":\"0x1a6221315ce0307746c2c4827c125d821ee796c74a676787762f4778671d4f44\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://1bb2332a7ee26dd0b0de9b7fe266749f54820c99ab6a3bcb6f7e6b751d47ee2d\",\"dweb:/ipfs/QmcRWpaBeCYkhy68PR3B4AgD7asuQk7PwkWxrvJbZcikLF\"]},\"@openzeppelin/contracts/interfaces/IERC4626.sol\":{\"keccak256\":\"0xece5cbf726293ae6be1fbfade2936f052e1b399ed395ba1e221540ab82b62628\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://a9b97e58e90799e681dccbd4a8e469c6ebc2baf11312ad08f14332646123dd4b\",\"dweb:/ipfs/QmdamCQfxcuYinSNd3Et7VNo3oY98XSv4XCUQyq9xfMNUy\"]},\"@openzeppelin/contracts/token/ERC20/IERC20.sol\":{\"keccak256\":\"0x74ed01eb66b923d0d0cfe3be84604ac04b76482a55f9dd655e1ef4d367f95bc2\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://5282825a626cfe924e504274b864a652b0023591fa66f06a067b25b51ba9b303\",\"dweb:/ipfs/QmeCfPykghhMc81VJTrHTC7sF6CRvaA1FXVq2pJhwYp1dV\"]},\"@openzeppelin/contracts/token/ERC20/extensions/IERC20Metadata.sol\":{\"keccak256\":\"0xd6fa4088198f04eef10c5bce8a2f4d60554b7ec4b987f684393c01bf79b94d9f\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://f95ee0bbd4dd3ac730d066ba3e785ded4565e890dbec2fa7d3b9fe3bad9d0d6e\",\"dweb:/ipfs/QmSLr6bHkPFWT7ntj34jmwfyskpwo97T9jZUrk5sz3sdtR\"]},\"@openzeppelin/contracts/utils/Address.sol\":{\"keccak256\":\"0x0fa9e0d3a859900b5a46f70a03c73adf259603d5e05027a37fe0b45529d85346\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://c2add4da0240c9f2ce47649c8bb6b11b40e98cf6f88b8bdc76b2704e89391710\",\"dweb:/ipfs/QmNQTwF2uVzu4CRtNxr8bxyP9XuW6VsZuo2Nr4KR2bZr3d\"]},\"@openzeppelin/contracts/utils/Errors.sol\":{\"keccak256\":\"0x6afa713bfd42cf0f7656efa91201007ac465e42049d7de1d50753a373648c123\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://ba1d02f4847670a1b83dec9f7d37f0b0418d6043447b69f3a29a5f9efc547fcf\",\"dweb:/ipfs/QmQ7iH2keLNUKgq2xSWcRmuBE5eZ3F5whYAkAGzCNNoEWB\"]},\"@openzeppelin/contracts/utils/LowLevelCall.sol\":{\"keccak256\":\"0x5b4802a4352474792df3107e961d1cc593e47b820c14f69d3505cb28f5a6a583\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://a6f86fd01f829499fe0545ff5dda07d4521988e88bfe0bf801fc15650921ed56\",\"dweb:/ipfs/QmUUKu4ZDffHAmfkf3asuQfmLTyfpuy2Amdncc3SqfzKPG\"]},\"@openzeppelin/contracts/utils/Panic.sol\":{\"keccak256\":\"0xf7fe324703a64fc51702311dc51562d5cb1497734f074e4f483bfb6717572d7a\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://c6a5ff4f9fd8649b7ee20800b7fa387d3465bd77cf20c2d1068cd5c98e1ed57a\",\"dweb:/ipfs/QmVSaVJf9FXFhdYEYeCEfjMVHrxDh5qL4CGkxdMWpQCrqG\"]},\"@openzeppelin/contracts/utils/math/Math.sol\":{\"keccak256\":\"0x09e3f1c72d4c5cbe8e2644ab7313f8f7177533ae2f4c24cdcbbeaf520a73734c\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://93208401215d539fa2d81626b207c1f611def7883d0e447b3b5969ebaa7b3c2c\",\"dweb:/ipfs/QmXPxDnQPx8LAweX5ZJqEcwkvs59kP4c64VVDG1Jjq1mef\"]},\"@openzeppelin/contracts/utils/math/SafeCast.sol\":{\"keccak256\":\"0x195533c86d0ef72bcc06456a4f66a9b941f38eb403739b00f21fd7c1abd1ae54\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://b1d578337048cad08c1c03041cca5978eff5428aa130c781b271ad9e5566e1f8\",\"dweb:/ipfs/QmPFKL2r9CBsMwmUqqdcFPfHZB2qcs9g1HDrPxzWSxomvy\"]},\"contracts/InvestStrategyClient.sol\":{\"keccak256\":\"0x3c8fff73042023381eb750ba13a9066475d208e99bde568e1243f0e1e282c894\",\"license\":\"Apache-2.0\",\"urls\":[\"bzz-raw://3f8283ffa5c512e482b0065d9391c7060ebc1fa5968c55e6a05958480b7facb6\",\"dweb:/ipfs/QmT4N9Z19b6AUXpXtg23d3ijBExyKuRJBeQ3o8WCobgpfT\"]},\"contracts/interfaces/IInvestStrategy.sol\":{\"keccak256\":\"0x6800a1f147def2252b79629150ce9cd87e914ca5a966f1035fbca6328bbc9c4b\",\"license\":\"Apache-2.0\",\"urls\":[\"bzz-raw://2e9260604e0ffcf405819f85fee4124d9a090cf716f389ff92cf76a2837a2e42\",\"dweb:/ipfs/QmVdKEW8C6MDyiiUfjBxEMTWjfPrBJadptpxh9L2uCebDK\"]},\"contracts/strategies/ERC4626InvestStrategy.sol\":{\"keccak256\":\"0x85bf06587e2b83dc42e4899517af4bd662437840ba8e3a47b45ec8e1bbe8d0bc\",\"license\":\"Apache-2.0\",\"urls\":[\"bzz-raw://7c06c295d3f7e518981890367208e488b1089fdc36b551f6c715ae66007f4cc0\",\"dweb:/ipfs/QmdBoy6Fc4gB2fpgRfeCDLSWZY23T6yqgbQv6yVcaVGogB\"]},\"contracts/strategies/MorphoVaultV2InvestStrategy.sol\":{\"keccak256\":\"0xc3b80ff015663e5efce8643fce2a8a1ff70fda93a25297babc2557d2928968bc\",\"license\":\"Apache-2.0\",\"urls\":[\"bzz-raw://90a50da05b083daab252cb8a9a6bc1cd842bf2f112a9c102625696e672f328ee\",\"dweb:/ipfs/QmeiuPc8xSKyv9ZmfWGWMHnLBH2HcnVJwh8QGMcBZjhNfU\"]}},\"version\":1}","storageLayout":{"storage":[],"types":null}},"MorphoVaultV2InvestStrategy":{"abi":[{"inputs":[{"internalType":"contract IERC4626","name":"vault_","type":"address"}],"stateMutability":"nonpayable","type":"constructor"},{"inputs":[],"name":"CanBeCalledOnlyThroughDelegateCall","type":"error"},{"inputs":[],"name":"CannotDisconnectWithAssets","type":"error"},{"inputs":[],"name":"NoExtraDataAllowed","type":"error"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"asset","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"bytes","name":"initData","type":"bytes"}],"name":"connect","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"assets","type":"uint256"}],"name":"deposit","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bool","name":"force","type":"bool"}],"name":"disconnect","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint8","name":"","type":"uint8"},{"internalType":"bytes","name":"","type":"bytes"}],"name":"forwardEntryPoint","outputs":[{"internalType":"bytes","name":"","type":"bytes"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"investVault","outputs":[{"internalType":"contract IERC4626","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"maxDeposit","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"contract_","type":"address"}],"name":"maxWithdraw","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"storageSlot","outputs":[{"internalType":"bytes32","name":"","type":"bytes32"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"contract_","type":"address"}],"name":"totalAssets","outputs":[{"internalType":"uint256","name":"assets","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"assets","type":"uint256"}],"name":"withdraw","outputs":[],"stateMutability":"nonpayable","type":"function"}],"evm":{"bytecode":{"functionDebugData":{"@_23021":{"entryPoint":null,"id":23021,"parameterSlots":1,"returnSlots":0},"@_23809":{"entryPoint":null,"id":23809,"parameterSlots":1,"returnSlots":0},"@makeStorageSlot_15638":{"entryPoint":null,"id":15638,"parameterSlots":1,"returnSlots":1},"abi_decode_tuple_t_address_fromMemory":{"entryPoint":null,"id":null,"parameterSlots":2,"returnSlots":1},"abi_decode_tuple_t_contract$_IERC4626_$7127_fromMemory":{"entryPoint":287,"id":null,"parameterSlots":2,"returnSlots":1},"abi_encode_tuple_t_stringliteral_4fed0cd3539a36e00a34a6c026c2615824c9ad47da5ef65e8372c7e721c05d79_t_contract$_IInvestStrategy_$20725__to_t_string_memory_ptr_t_address__fromStack_reversed":{"entryPoint":null,"id":null,"parameterSlots":2,"returnSlots":1},"validator_revert_contract_IERC4626":{"entryPoint":264,"id":null,"parameterSlots":1,"returnSlots":0}},"generatedSources":[{"ast":{"nativeSrc":"0:1190:87","nodeType":"YulBlock","src":"0:1190:87","statements":[{"nativeSrc":"6:3:87","nodeType":"YulBlock","src":"6:3:87","statements":[]},{"body":{"nativeSrc":"69:86:87","nodeType":"YulBlock","src":"69:86:87","statements":[{"body":{"nativeSrc":"133:16:87","nodeType":"YulBlock","src":"133:16:87","statements":[{"expression":{"arguments":[{"kind":"number","nativeSrc":"142:1:87","nodeType":"YulLiteral","src":"142:1:87","type":"","value":"0"},{"kind":"number","nativeSrc":"145:1:87","nodeType":"YulLiteral","src":"145:1:87","type":"","value":"0"}],"functionName":{"name":"revert","nativeSrc":"135:6:87","nodeType":"YulIdentifier","src":"135:6:87"},"nativeSrc":"135:12:87","nodeType":"YulFunctionCall","src":"135:12:87"},"nativeSrc":"135:12:87","nodeType":"YulExpressionStatement","src":"135:12:87"}]},"condition":{"arguments":[{"arguments":[{"name":"value","nativeSrc":"92:5:87","nodeType":"YulIdentifier","src":"92:5:87"},{"arguments":[{"name":"value","nativeSrc":"103:5:87","nodeType":"YulIdentifier","src":"103:5:87"},{"arguments":[{"arguments":[{"kind":"number","nativeSrc":"118:3:87","nodeType":"YulLiteral","src":"118:3:87","type":"","value":"160"},{"kind":"number","nativeSrc":"123:1:87","nodeType":"YulLiteral","src":"123:1:87","type":"","value":"1"}],"functionName":{"name":"shl","nativeSrc":"114:3:87","nodeType":"YulIdentifier","src":"114:3:87"},"nativeSrc":"114:11:87","nodeType":"YulFunctionCall","src":"114:11:87"},{"kind":"number","nativeSrc":"127:1:87","nodeType":"YulLiteral","src":"127:1:87","type":"","value":"1"}],"functionName":{"name":"sub","nativeSrc":"110:3:87","nodeType":"YulIdentifier","src":"110:3:87"},"nativeSrc":"110:19:87","nodeType":"YulFunctionCall","src":"110:19:87"}],"functionName":{"name":"and","nativeSrc":"99:3:87","nodeType":"YulIdentifier","src":"99:3:87"},"nativeSrc":"99:31:87","nodeType":"YulFunctionCall","src":"99:31:87"}],"functionName":{"name":"eq","nativeSrc":"89:2:87","nodeType":"YulIdentifier","src":"89:2:87"},"nativeSrc":"89:42:87","nodeType":"YulFunctionCall","src":"89:42:87"}],"functionName":{"name":"iszero","nativeSrc":"82:6:87","nodeType":"YulIdentifier","src":"82:6:87"},"nativeSrc":"82:50:87","nodeType":"YulFunctionCall","src":"82:50:87"},"nativeSrc":"79:70:87","nodeType":"YulIf","src":"79:70:87"}]},"name":"validator_revert_contract_IERC4626","nativeSrc":"14:141:87","nodeType":"YulFunctionDefinition","parameters":[{"name":"value","nativeSrc":"58:5:87","nodeType":"YulTypedName","src":"58:5:87","type":""}],"src":"14:141:87"},{"body":{"nativeSrc":"258:180:87","nodeType":"YulBlock","src":"258:180:87","statements":[{"body":{"nativeSrc":"304:16:87","nodeType":"YulBlock","src":"304:16:87","statements":[{"expression":{"arguments":[{"kind":"number","nativeSrc":"313:1:87","nodeType":"YulLiteral","src":"313:1:87","type":"","value":"0"},{"kind":"number","nativeSrc":"316:1:87","nodeType":"YulLiteral","src":"316:1:87","type":"","value":"0"}],"functionName":{"name":"revert","nativeSrc":"306:6:87","nodeType":"YulIdentifier","src":"306:6:87"},"nativeSrc":"306:12:87","nodeType":"YulFunctionCall","src":"306:12:87"},"nativeSrc":"306:12:87","nodeType":"YulExpressionStatement","src":"306:12:87"}]},"condition":{"arguments":[{"arguments":[{"name":"dataEnd","nativeSrc":"279:7:87","nodeType":"YulIdentifier","src":"279:7:87"},{"name":"headStart","nativeSrc":"288:9:87","nodeType":"YulIdentifier","src":"288:9:87"}],"functionName":{"name":"sub","nativeSrc":"275:3:87","nodeType":"YulIdentifier","src":"275:3:87"},"nativeSrc":"275:23:87","nodeType":"YulFunctionCall","src":"275:23:87"},{"kind":"number","nativeSrc":"300:2:87","nodeType":"YulLiteral","src":"300:2:87","type":"","value":"32"}],"functionName":{"name":"slt","nativeSrc":"271:3:87","nodeType":"YulIdentifier","src":"271:3:87"},"nativeSrc":"271:32:87","nodeType":"YulFunctionCall","src":"271:32:87"},"nativeSrc":"268:52:87","nodeType":"YulIf","src":"268:52:87"},{"nativeSrc":"329:29:87","nodeType":"YulVariableDeclaration","src":"329:29:87","value":{"arguments":[{"name":"headStart","nativeSrc":"348:9:87","nodeType":"YulIdentifier","src":"348:9:87"}],"functionName":{"name":"mload","nativeSrc":"342:5:87","nodeType":"YulIdentifier","src":"342:5:87"},"nativeSrc":"342:16:87","nodeType":"YulFunctionCall","src":"342:16:87"},"variables":[{"name":"value","nativeSrc":"333:5:87","nodeType":"YulTypedName","src":"333:5:87","type":""}]},{"expression":{"arguments":[{"name":"value","nativeSrc":"402:5:87","nodeType":"YulIdentifier","src":"402:5:87"}],"functionName":{"name":"validator_revert_contract_IERC4626","nativeSrc":"367:34:87","nodeType":"YulIdentifier","src":"367:34:87"},"nativeSrc":"367:41:87","nodeType":"YulFunctionCall","src":"367:41:87"},"nativeSrc":"367:41:87","nodeType":"YulExpressionStatement","src":"367:41:87"},{"nativeSrc":"417:15:87","nodeType":"YulAssignment","src":"417:15:87","value":{"name":"value","nativeSrc":"427:5:87","nodeType":"YulIdentifier","src":"427:5:87"},"variableNames":[{"name":"value0","nativeSrc":"417:6:87","nodeType":"YulIdentifier","src":"417:6:87"}]}]},"name":"abi_decode_tuple_t_contract$_IERC4626_$7127_fromMemory","nativeSrc":"160:278:87","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nativeSrc":"224:9:87","nodeType":"YulTypedName","src":"224:9:87","type":""},{"name":"dataEnd","nativeSrc":"235:7:87","nodeType":"YulTypedName","src":"235:7:87","type":""}],"returnVariables":[{"name":"value0","nativeSrc":"247:6:87","nodeType":"YulTypedName","src":"247:6:87","type":""}],"src":"160:278:87"},{"body":{"nativeSrc":"524:180:87","nodeType":"YulBlock","src":"524:180:87","statements":[{"body":{"nativeSrc":"570:16:87","nodeType":"YulBlock","src":"570:16:87","statements":[{"expression":{"arguments":[{"kind":"number","nativeSrc":"579:1:87","nodeType":"YulLiteral","src":"579:1:87","type":"","value":"0"},{"kind":"number","nativeSrc":"582:1:87","nodeType":"YulLiteral","src":"582:1:87","type":"","value":"0"}],"functionName":{"name":"revert","nativeSrc":"572:6:87","nodeType":"YulIdentifier","src":"572:6:87"},"nativeSrc":"572:12:87","nodeType":"YulFunctionCall","src":"572:12:87"},"nativeSrc":"572:12:87","nodeType":"YulExpressionStatement","src":"572:12:87"}]},"condition":{"arguments":[{"arguments":[{"name":"dataEnd","nativeSrc":"545:7:87","nodeType":"YulIdentifier","src":"545:7:87"},{"name":"headStart","nativeSrc":"554:9:87","nodeType":"YulIdentifier","src":"554:9:87"}],"functionName":{"name":"sub","nativeSrc":"541:3:87","nodeType":"YulIdentifier","src":"541:3:87"},"nativeSrc":"541:23:87","nodeType":"YulFunctionCall","src":"541:23:87"},{"kind":"number","nativeSrc":"566:2:87","nodeType":"YulLiteral","src":"566:2:87","type":"","value":"32"}],"functionName":{"name":"slt","nativeSrc":"537:3:87","nodeType":"YulIdentifier","src":"537:3:87"},"nativeSrc":"537:32:87","nodeType":"YulFunctionCall","src":"537:32:87"},"nativeSrc":"534:52:87","nodeType":"YulIf","src":"534:52:87"},{"nativeSrc":"595:29:87","nodeType":"YulVariableDeclaration","src":"595:29:87","value":{"arguments":[{"name":"headStart","nativeSrc":"614:9:87","nodeType":"YulIdentifier","src":"614:9:87"}],"functionName":{"name":"mload","nativeSrc":"608:5:87","nodeType":"YulIdentifier","src":"608:5:87"},"nativeSrc":"608:16:87","nodeType":"YulFunctionCall","src":"608:16:87"},"variables":[{"name":"value","nativeSrc":"599:5:87","nodeType":"YulTypedName","src":"599:5:87","type":""}]},{"expression":{"arguments":[{"name":"value","nativeSrc":"668:5:87","nodeType":"YulIdentifier","src":"668:5:87"}],"functionName":{"name":"validator_revert_contract_IERC4626","nativeSrc":"633:34:87","nodeType":"YulIdentifier","src":"633:34:87"},"nativeSrc":"633:41:87","nodeType":"YulFunctionCall","src":"633:41:87"},"nativeSrc":"633:41:87","nodeType":"YulExpressionStatement","src":"633:41:87"},{"nativeSrc":"683:15:87","nodeType":"YulAssignment","src":"683:15:87","value":{"name":"value","nativeSrc":"693:5:87","nodeType":"YulIdentifier","src":"693:5:87"},"variableNames":[{"name":"value0","nativeSrc":"683:6:87","nodeType":"YulIdentifier","src":"683:6:87"}]}]},"name":"abi_decode_tuple_t_address_fromMemory","nativeSrc":"443:261:87","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nativeSrc":"490:9:87","nodeType":"YulTypedName","src":"490:9:87","type":""},{"name":"dataEnd","nativeSrc":"501:7:87","nodeType":"YulTypedName","src":"501:7:87","type":""}],"returnVariables":[{"name":"value0","nativeSrc":"513:6:87","nodeType":"YulTypedName","src":"513:6:87","type":""}],"src":"443:261:87"},{"body":{"nativeSrc":"936:252:87","nodeType":"YulBlock","src":"936:252:87","statements":[{"expression":{"arguments":[{"name":"headStart","nativeSrc":"953:9:87","nodeType":"YulIdentifier","src":"953:9:87"},{"kind":"number","nativeSrc":"964:2:87","nodeType":"YulLiteral","src":"964:2:87","type":"","value":"64"}],"functionName":{"name":"mstore","nativeSrc":"946:6:87","nodeType":"YulIdentifier","src":"946:6:87"},"nativeSrc":"946:21:87","nodeType":"YulFunctionCall","src":"946:21:87"},"nativeSrc":"946:21:87","nodeType":"YulExpressionStatement","src":"946:21:87"},{"expression":{"arguments":[{"arguments":[{"name":"headStart","nativeSrc":"987:9:87","nodeType":"YulIdentifier","src":"987:9:87"},{"kind":"number","nativeSrc":"998:2:87","nodeType":"YulLiteral","src":"998:2:87","type":"","value":"64"}],"functionName":{"name":"add","nativeSrc":"983:3:87","nodeType":"YulIdentifier","src":"983:3:87"},"nativeSrc":"983:18:87","nodeType":"YulFunctionCall","src":"983:18:87"},{"kind":"number","nativeSrc":"1003:2:87","nodeType":"YulLiteral","src":"1003:2:87","type":"","value":"30"}],"functionName":{"name":"mstore","nativeSrc":"976:6:87","nodeType":"YulIdentifier","src":"976:6:87"},"nativeSrc":"976:30:87","nodeType":"YulFunctionCall","src":"976:30:87"},"nativeSrc":"976:30:87","nodeType":"YulExpressionStatement","src":"976:30:87"},{"expression":{"arguments":[{"arguments":[{"name":"headStart","nativeSrc":"1026:9:87","nodeType":"YulIdentifier","src":"1026:9:87"},{"kind":"number","nativeSrc":"1037:2:87","nodeType":"YulLiteral","src":"1037:2:87","type":"","value":"96"}],"functionName":{"name":"add","nativeSrc":"1022:3:87","nodeType":"YulIdentifier","src":"1022:3:87"},"nativeSrc":"1022:18:87","nodeType":"YulFunctionCall","src":"1022:18:87"},{"hexValue":"636f2e656e7375726f2e496e766573745374726174656779436c69656e74","kind":"string","nativeSrc":"1042:32:87","nodeType":"YulLiteral","src":"1042:32:87","type":"","value":"co.ensuro.InvestStrategyClient"}],"functionName":{"name":"mstore","nativeSrc":"1015:6:87","nodeType":"YulIdentifier","src":"1015:6:87"},"nativeSrc":"1015:60:87","nodeType":"YulFunctionCall","src":"1015:60:87"},"nativeSrc":"1015:60:87","nodeType":"YulExpressionStatement","src":"1015:60:87"},{"nativeSrc":"1084:27:87","nodeType":"YulAssignment","src":"1084:27:87","value":{"arguments":[{"name":"headStart","nativeSrc":"1096:9:87","nodeType":"YulIdentifier","src":"1096:9:87"},{"kind":"number","nativeSrc":"1107:3:87","nodeType":"YulLiteral","src":"1107:3:87","type":"","value":"128"}],"functionName":{"name":"add","nativeSrc":"1092:3:87","nodeType":"YulIdentifier","src":"1092:3:87"},"nativeSrc":"1092:19:87","nodeType":"YulFunctionCall","src":"1092:19:87"},"variableNames":[{"name":"tail","nativeSrc":"1084:4:87","nodeType":"YulIdentifier","src":"1084:4:87"}]},{"expression":{"arguments":[{"arguments":[{"name":"headStart","nativeSrc":"1131:9:87","nodeType":"YulIdentifier","src":"1131:9:87"},{"kind":"number","nativeSrc":"1142:4:87","nodeType":"YulLiteral","src":"1142:4:87","type":"","value":"0x20"}],"functionName":{"name":"add","nativeSrc":"1127:3:87","nodeType":"YulIdentifier","src":"1127:3:87"},"nativeSrc":"1127:20:87","nodeType":"YulFunctionCall","src":"1127:20:87"},{"arguments":[{"name":"value0","nativeSrc":"1153:6:87","nodeType":"YulIdentifier","src":"1153:6:87"},{"arguments":[{"arguments":[{"kind":"number","nativeSrc":"1169:3:87","nodeType":"YulLiteral","src":"1169:3:87","type":"","value":"160"},{"kind":"number","nativeSrc":"1174:1:87","nodeType":"YulLiteral","src":"1174:1:87","type":"","value":"1"}],"functionName":{"name":"shl","nativeSrc":"1165:3:87","nodeType":"YulIdentifier","src":"1165:3:87"},"nativeSrc":"1165:11:87","nodeType":"YulFunctionCall","src":"1165:11:87"},{"kind":"number","nativeSrc":"1178:1:87","nodeType":"YulLiteral","src":"1178:1:87","type":"","value":"1"}],"functionName":{"name":"sub","nativeSrc":"1161:3:87","nodeType":"YulIdentifier","src":"1161:3:87"},"nativeSrc":"1161:19:87","nodeType":"YulFunctionCall","src":"1161:19:87"}],"functionName":{"name":"and","nativeSrc":"1149:3:87","nodeType":"YulIdentifier","src":"1149:3:87"},"nativeSrc":"1149:32:87","nodeType":"YulFunctionCall","src":"1149:32:87"}],"functionName":{"name":"mstore","nativeSrc":"1120:6:87","nodeType":"YulIdentifier","src":"1120:6:87"},"nativeSrc":"1120:62:87","nodeType":"YulFunctionCall","src":"1120:62:87"},"nativeSrc":"1120:62:87","nodeType":"YulExpressionStatement","src":"1120:62:87"}]},"name":"abi_encode_tuple_t_stringliteral_4fed0cd3539a36e00a34a6c026c2615824c9ad47da5ef65e8372c7e721c05d79_t_contract$_IInvestStrategy_$20725__to_t_string_memory_ptr_t_address__fromStack_reversed","nativeSrc":"709:479:87","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nativeSrc":"905:9:87","nodeType":"YulTypedName","src":"905:9:87","type":""},{"name":"value0","nativeSrc":"916:6:87","nodeType":"YulTypedName","src":"916:6:87","type":""}],"returnVariables":[{"name":"tail","nativeSrc":"927:4:87","nodeType":"YulTypedName","src":"927:4:87","type":""}],"src":"709:479:87"}]},"contents":"{\n    { }\n    function validator_revert_contract_IERC4626(value)\n    {\n        if iszero(eq(value, and(value, sub(shl(160, 1), 1)))) { revert(0, 0) }\n    }\n    function abi_decode_tuple_t_contract$_IERC4626_$7127_fromMemory(headStart, dataEnd) -> value0\n    {\n        if slt(sub(dataEnd, headStart), 32) { revert(0, 0) }\n        let value := mload(headStart)\n        validator_revert_contract_IERC4626(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_contract_IERC4626(value)\n        value0 := value\n    }\n    function abi_encode_tuple_t_stringliteral_4fed0cd3539a36e00a34a6c026c2615824c9ad47da5ef65e8372c7e721c05d79_t_contract$_IInvestStrategy_$20725__to_t_string_memory_ptr_t_address__fromStack_reversed(headStart, value0) -> tail\n    {\n        mstore(headStart, 64)\n        mstore(add(headStart, 64), 30)\n        mstore(add(headStart, 96), \"co.ensuro.InvestStrategyClient\")\n        tail := add(headStart, 128)\n        mstore(add(headStart, 0x20), and(value0, sub(shl(160, 1), 1)))\n    }\n}","id":87,"language":"Yul","name":"#utility.yul"}],"linkReferences":{},"object":"3060808181526040610120818152601e610160527f636f2e656e7375726f2e496e766573745374726174656779436c69656e74000061018052610140939093526101008290526101a09052902060a05234801561005a575f5ffd5b50604051610de1380380610de18339810160408190526100799161011f565b80806001600160a01b031660c0816001600160a01b031681525050806001600160a01b03166338d52e0f6040518163ffffffff1660e01b8152600401602060405180830381865afa1580156100d0573d5f5f3e3d5ffd5b505050506040513d601f19601f820116820180604052508101906100f4919061011f565b6001600160a01b031660e052506101419050565b6001600160a01b038116811461011c575f5ffd5b50565b5f6020828403121561012f575f5ffd5b815161013a81610108565b9392505050565b60805160a05160c05160e051610c206101c15f395f8181610155015261052301525f81816101ca015281816102b801528181610396015281816104f4015281816105aa01528181610614015261069101525f61012201525f818161020d015281816102560152818161033901528181610435015261049e0152610c205ff3fe608060405234801561000f575f5ffd5b50600436106100a6575f3560e01c80639c4667a21161006e5780639c4667a2146101445780639cd471281461018f578063b6b55f25146101a2578063ce96cb77146101b5578063de2a87b5146101c8578063f3e0ffbf146101ee575f5ffd5b80630981b1c2146100aa5780632e1a7d4d146100d3578063402d267d146100e85780635a1174561461010a5780635b9a4c351461011d575b5f5ffd5b6100bd6100b8366004610a05565b610201565b6040516100ca9190610a57565b60405180910390f35b6100e66100e1366004610a8c565b61024c565b005b6100fc6100f6366004610aa3565b505f1990565b6040519081526020016100ca565b6100e6610118366004610ad6565b61032f565b6100fc7f000000000000000000000000000000000000000000000000000000000000000081565b610177610152366004610aa3565b507f000000000000000000000000000000000000000000000000000000000000000090565b6040516001600160a01b0390911681526020016100ca565b6100e661019d366004610af1565b61042b565b6100e66101b0366004610a8c565b610494565b6100fc6101c3366004610aa3565b6105e1565b7f0000000000000000000000000000000000000000000000000000000000000000610177565b6100fc6101fc366004610aa3565b6105f1565b60606001600160a01b037f00000000000000000000000000000000000000000000000000000000000000001630036100a657604051632abf118b60e21b815260040160405180910390fd5b6001600160a01b037f000000000000000000000000000000000000000000000000000000000000000016300361029557604051632abf118b60e21b815260040160405180910390fd5b604051632d182be560e21b815260048101829052306024820181905260448201527f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03169063b460af94906064015b6020604051808303815f875af1158015610307573d5f5f3e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061032b9190610b2b565b5050565b6001600160a01b037f000000000000000000000000000000000000000000000000000000000000000016300361037857604051632abf118b60e21b815260040160405180910390fd5b8015801561040a57506040516370a0823160e01b81523060048201527f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316906370a0823190602401602060405180830381865afa1580156103e3573d5f5f3e3d5ffd5b505050506040513d601f19601f820116820180604052508101906104079190610b2b565b15155b15610428576040516342a176d160e11b815260040160405180910390fd5b50565b6001600160a01b037f000000000000000000000000000000000000000000000000000000000000000016300361047457604051632abf118b60e21b815260040160405180910390fd5b805115610428576040516350701b6160e01b815260040160405180910390fd5b6001600160a01b037f00000000000000000000000000000000000000000000000000000000000000001630036104dd57604051632abf118b60e21b815260040160405180910390fd5b60405163095ea7b360e01b81526001600160a01b037f000000000000000000000000000000000000000000000000000000000000000081166004830152602482018390527f0000000000000000000000000000000000000000000000000000000000000000169063095ea7b3906044016020604051808303815f875af1158015610569573d5f5f3e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061058d9190610b42565b50604051636e553f6560e01b8152600481018290523060248201527f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031690636e553f65906044016102eb565b5f6105eb826105f1565b92915050565b6040516370a0823160e01b81526001600160a01b0382811660048301525f9182917f000000000000000000000000000000000000000000000000000000000000000016906370a0823190602401602060405180830381865afa158015610659573d5f5f3e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061067d9190610b2b565b9050805f0361068e57505f92915050565b5f7f000000000000000000000000000000000000000000000000000000000000000090505f816001600160a01b031663c04637116040518163ffffffff1660e01b8152600401602060405180830381865afa1580156106ef573d5f5f3e3d5ffd5b505050506040513d601f19601f820116820180604052508101906107139190610b5d565b9050426107236201518083610b84565b67ffffffffffffffff1610156107a35760405163266d6a8360e11b8152600481018490526001600160a01b03831690634cdad50690602401602060405180830381865afa158015610776573d5f5f3e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061079a9190610b2b565b95945050505050565b5f826001600160a01b031663ce04bebb6040518163ffffffff1660e01b8152600401602060405180830381865afa1580156107e0573d5f5f3e3d5ffd5b505050506040513d601f19601f820116820180604052508101906108049190610bb0565b6001600160801b031690505f836001600160a01b03166318160ddd6040518163ffffffff1660e01b8152600401602060405180830381865afa15801561084c573d5f5f3e3d5ffd5b505050506040513d601f19601f820116820180604052508101906108709190610b2b565b905061087d828683610888565b979650505050505050565b5f5f5f6108958686610939565b91509150815f036108b9578381816108af576108af610bd6565b0492505050610932565b8184116108d0576108d06003851502601118610955565b5f848688095f868103871696879004966002600389028118808a02820302808a02820302808a02820302808a02820302808a02820302808a02909103029181900381900460010185841190960395909502919093039390930492909217029150505b9392505050565b5f805f1983850993909202808410938190039390930393915050565b634e487b715f52806020526024601cfd5b634e487b7160e01b5f52604160045260245ffd5b5f82601f830112610989575f5ffd5b813567ffffffffffffffff8111156109a3576109a3610966565b604051601f8201601f19908116603f0116810167ffffffffffffffff811182821017156109d2576109d2610966565b6040528181528382016020018510156109e9575f5ffd5b816020850160208301375f918101602001919091529392505050565b5f5f60408385031215610a16575f5ffd5b823560ff81168114610a26575f5ffd5b9150602083013567ffffffffffffffff811115610a41575f5ffd5b610a4d8582860161097a565b9150509250929050565b602081525f82518060208401528060208501604085015e5f604082850101526040601f19601f83011684010191505092915050565b5f60208284031215610a9c575f5ffd5b5035919050565b5f60208284031215610ab3575f5ffd5b81356001600160a01b0381168114610932575f5ffd5b8015158114610428575f5ffd5b5f60208284031215610ae6575f5ffd5b813561093281610ac9565b5f60208284031215610b01575f5ffd5b813567ffffffffffffffff811115610b17575f5ffd5b610b238482850161097a565b949350505050565b5f60208284031215610b3b575f5ffd5b5051919050565b5f60208284031215610b52575f5ffd5b815161093281610ac9565b5f60208284031215610b6d575f5ffd5b815167ffffffffffffffff81168114610932575f5ffd5b67ffffffffffffffff81811683821601908111156105eb57634e487b7160e01b5f52601160045260245ffd5b5f60208284031215610bc0575f5ffd5b81516001600160801b0381168114610932575f5ffd5b634e487b7160e01b5f52601260045260245ffdfea2646970667358221220b4b0df43d7d49945f418e15cd1c11d67cf53f400c66c3ced1ec1b7822b7a754364736f6c634300081e0033","opcodes":"ADDRESS PUSH1 0x80 DUP2 DUP2 MSTORE PUSH1 0x40 PUSH2 0x120 DUP2 DUP2 MSTORE PUSH1 0x1E PUSH2 0x160 MSTORE PUSH32 0x636F2E656E7375726F2E496E766573745374726174656779436C69656E740000 PUSH2 0x180 MSTORE PUSH2 0x140 SWAP4 SWAP1 SWAP4 MSTORE PUSH2 0x100 DUP3 SWAP1 MSTORE PUSH2 0x1A0 SWAP1 MSTORE SWAP1 KECCAK256 PUSH1 0xA0 MSTORE CALLVALUE DUP1 ISZERO PUSH2 0x5A JUMPI PUSH0 PUSH0 REVERT JUMPDEST POP PUSH1 0x40 MLOAD PUSH2 0xDE1 CODESIZE SUB DUP1 PUSH2 0xDE1 DUP4 CODECOPY DUP2 ADD PUSH1 0x40 DUP2 SWAP1 MSTORE PUSH2 0x79 SWAP2 PUSH2 0x11F JUMP JUMPDEST DUP1 DUP1 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH1 0xC0 DUP2 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP2 MSTORE POP POP DUP1 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH4 0x38D52E0F 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 GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0xD0 JUMPI RETURNDATASIZE PUSH0 PUSH0 RETURNDATACOPY RETURNDATASIZE PUSH0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP3 ADD DUP1 PUSH1 0x40 MSTORE POP DUP2 ADD SWAP1 PUSH2 0xF4 SWAP2 SWAP1 PUSH2 0x11F JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH1 0xE0 MSTORE POP PUSH2 0x141 SWAP1 POP JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 AND DUP2 EQ PUSH2 0x11C JUMPI PUSH0 PUSH0 REVERT JUMPDEST POP JUMP JUMPDEST PUSH0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x12F JUMPI PUSH0 PUSH0 REVERT JUMPDEST DUP2 MLOAD PUSH2 0x13A DUP2 PUSH2 0x108 JUMP JUMPDEST SWAP4 SWAP3 POP POP POP JUMP JUMPDEST PUSH1 0x80 MLOAD PUSH1 0xA0 MLOAD PUSH1 0xC0 MLOAD PUSH1 0xE0 MLOAD PUSH2 0xC20 PUSH2 0x1C1 PUSH0 CODECOPY PUSH0 DUP2 DUP2 PUSH2 0x155 ADD MSTORE PUSH2 0x523 ADD MSTORE PUSH0 DUP2 DUP2 PUSH2 0x1CA ADD MSTORE DUP2 DUP2 PUSH2 0x2B8 ADD MSTORE DUP2 DUP2 PUSH2 0x396 ADD MSTORE DUP2 DUP2 PUSH2 0x4F4 ADD MSTORE DUP2 DUP2 PUSH2 0x5AA ADD MSTORE DUP2 DUP2 PUSH2 0x614 ADD MSTORE PUSH2 0x691 ADD MSTORE PUSH0 PUSH2 0x122 ADD MSTORE PUSH0 DUP2 DUP2 PUSH2 0x20D ADD MSTORE DUP2 DUP2 PUSH2 0x256 ADD MSTORE DUP2 DUP2 PUSH2 0x339 ADD MSTORE DUP2 DUP2 PUSH2 0x435 ADD MSTORE PUSH2 0x49E ADD MSTORE PUSH2 0xC20 PUSH0 RETURN INVALID PUSH1 0x80 PUSH1 0x40 MSTORE CALLVALUE DUP1 ISZERO PUSH2 0xF JUMPI PUSH0 PUSH0 REVERT JUMPDEST POP PUSH1 0x4 CALLDATASIZE LT PUSH2 0xA6 JUMPI PUSH0 CALLDATALOAD PUSH1 0xE0 SHR DUP1 PUSH4 0x9C4667A2 GT PUSH2 0x6E JUMPI DUP1 PUSH4 0x9C4667A2 EQ PUSH2 0x144 JUMPI DUP1 PUSH4 0x9CD47128 EQ PUSH2 0x18F JUMPI DUP1 PUSH4 0xB6B55F25 EQ PUSH2 0x1A2 JUMPI DUP1 PUSH4 0xCE96CB77 EQ PUSH2 0x1B5 JUMPI DUP1 PUSH4 0xDE2A87B5 EQ PUSH2 0x1C8 JUMPI DUP1 PUSH4 0xF3E0FFBF EQ PUSH2 0x1EE JUMPI PUSH0 PUSH0 REVERT JUMPDEST DUP1 PUSH4 0x981B1C2 EQ PUSH2 0xAA JUMPI DUP1 PUSH4 0x2E1A7D4D EQ PUSH2 0xD3 JUMPI DUP1 PUSH4 0x402D267D EQ PUSH2 0xE8 JUMPI DUP1 PUSH4 0x5A117456 EQ PUSH2 0x10A JUMPI DUP1 PUSH4 0x5B9A4C35 EQ PUSH2 0x11D JUMPI JUMPDEST PUSH0 PUSH0 REVERT JUMPDEST PUSH2 0xBD PUSH2 0xB8 CALLDATASIZE PUSH1 0x4 PUSH2 0xA05 JUMP JUMPDEST PUSH2 0x201 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0xCA SWAP2 SWAP1 PUSH2 0xA57 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST PUSH2 0xE6 PUSH2 0xE1 CALLDATASIZE PUSH1 0x4 PUSH2 0xA8C JUMP JUMPDEST PUSH2 0x24C JUMP JUMPDEST STOP JUMPDEST PUSH2 0xFC PUSH2 0xF6 CALLDATASIZE PUSH1 0x4 PUSH2 0xAA3 JUMP JUMPDEST POP PUSH0 NOT SWAP1 JUMP JUMPDEST PUSH1 0x40 MLOAD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH2 0xCA JUMP JUMPDEST PUSH2 0xE6 PUSH2 0x118 CALLDATASIZE PUSH1 0x4 PUSH2 0xAD6 JUMP JUMPDEST PUSH2 0x32F JUMP JUMPDEST PUSH2 0xFC PUSH32 0x0 DUP2 JUMP JUMPDEST PUSH2 0x177 PUSH2 0x152 CALLDATASIZE PUSH1 0x4 PUSH2 0xAA3 JUMP JUMPDEST POP PUSH32 0x0 SWAP1 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP1 SWAP2 AND DUP2 MSTORE PUSH1 0x20 ADD PUSH2 0xCA JUMP JUMPDEST PUSH2 0xE6 PUSH2 0x19D CALLDATASIZE PUSH1 0x4 PUSH2 0xAF1 JUMP JUMPDEST PUSH2 0x42B JUMP JUMPDEST PUSH2 0xE6 PUSH2 0x1B0 CALLDATASIZE PUSH1 0x4 PUSH2 0xA8C JUMP JUMPDEST PUSH2 0x494 JUMP JUMPDEST PUSH2 0xFC PUSH2 0x1C3 CALLDATASIZE PUSH1 0x4 PUSH2 0xAA3 JUMP JUMPDEST PUSH2 0x5E1 JUMP JUMPDEST PUSH32 0x0 PUSH2 0x177 JUMP JUMPDEST PUSH2 0xFC PUSH2 0x1FC CALLDATASIZE PUSH1 0x4 PUSH2 0xAA3 JUMP JUMPDEST PUSH2 0x5F1 JUMP JUMPDEST PUSH1 0x60 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB PUSH32 0x0 AND ADDRESS SUB PUSH2 0xA6 JUMPI PUSH1 0x40 MLOAD PUSH4 0x2ABF118B PUSH1 0xE2 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB PUSH32 0x0 AND ADDRESS SUB PUSH2 0x295 JUMPI PUSH1 0x40 MLOAD PUSH4 0x2ABF118B PUSH1 0xE2 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH1 0x40 MLOAD PUSH4 0x2D182BE5 PUSH1 0xE2 SHL DUP2 MSTORE PUSH1 0x4 DUP2 ADD DUP3 SWAP1 MSTORE ADDRESS PUSH1 0x24 DUP3 ADD DUP2 SWAP1 MSTORE PUSH1 0x44 DUP3 ADD MSTORE PUSH32 0x0 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND SWAP1 PUSH4 0xB460AF94 SWAP1 PUSH1 0x64 ADD JUMPDEST PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 PUSH0 DUP8 GAS CALL ISZERO DUP1 ISZERO PUSH2 0x307 JUMPI RETURNDATASIZE PUSH0 PUSH0 RETURNDATACOPY RETURNDATASIZE PUSH0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP3 ADD DUP1 PUSH1 0x40 MSTORE POP DUP2 ADD SWAP1 PUSH2 0x32B SWAP2 SWAP1 PUSH2 0xB2B JUMP JUMPDEST POP POP JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB PUSH32 0x0 AND ADDRESS SUB PUSH2 0x378 JUMPI PUSH1 0x40 MLOAD PUSH4 0x2ABF118B PUSH1 0xE2 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST DUP1 ISZERO DUP1 ISZERO PUSH2 0x40A JUMPI POP PUSH1 0x40 MLOAD PUSH4 0x70A08231 PUSH1 0xE0 SHL DUP2 MSTORE ADDRESS PUSH1 0x4 DUP3 ADD MSTORE PUSH32 0x0 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND SWAP1 PUSH4 0x70A08231 SWAP1 PUSH1 0x24 ADD PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x3E3 JUMPI RETURNDATASIZE PUSH0 PUSH0 RETURNDATACOPY RETURNDATASIZE PUSH0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP3 ADD DUP1 PUSH1 0x40 MSTORE POP DUP2 ADD SWAP1 PUSH2 0x407 SWAP2 SWAP1 PUSH2 0xB2B JUMP JUMPDEST ISZERO ISZERO JUMPDEST ISZERO PUSH2 0x428 JUMPI PUSH1 0x40 MLOAD PUSH4 0x42A176D1 PUSH1 0xE1 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST POP JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB PUSH32 0x0 AND ADDRESS SUB PUSH2 0x474 JUMPI PUSH1 0x40 MLOAD PUSH4 0x2ABF118B PUSH1 0xE2 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST DUP1 MLOAD ISZERO PUSH2 0x428 JUMPI PUSH1 0x40 MLOAD PUSH4 0x50701B61 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 PUSH32 0x0 AND ADDRESS SUB PUSH2 0x4DD JUMPI PUSH1 0x40 MLOAD PUSH4 0x2ABF118B PUSH1 0xE2 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH1 0x40 MLOAD PUSH4 0x95EA7B3 PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB PUSH32 0x0 DUP2 AND PUSH1 0x4 DUP4 ADD MSTORE PUSH1 0x24 DUP3 ADD DUP4 SWAP1 MSTORE PUSH32 0x0 AND SWAP1 PUSH4 0x95EA7B3 SWAP1 PUSH1 0x44 ADD PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 PUSH0 DUP8 GAS CALL ISZERO DUP1 ISZERO PUSH2 0x569 JUMPI RETURNDATASIZE PUSH0 PUSH0 RETURNDATACOPY RETURNDATASIZE PUSH0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP3 ADD DUP1 PUSH1 0x40 MSTORE POP DUP2 ADD SWAP1 PUSH2 0x58D SWAP2 SWAP1 PUSH2 0xB42 JUMP JUMPDEST POP PUSH1 0x40 MLOAD PUSH4 0x6E553F65 PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 DUP2 ADD DUP3 SWAP1 MSTORE ADDRESS PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x0 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND SWAP1 PUSH4 0x6E553F65 SWAP1 PUSH1 0x44 ADD PUSH2 0x2EB JUMP JUMPDEST PUSH0 PUSH2 0x5EB DUP3 PUSH2 0x5F1 JUMP JUMPDEST SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH4 0x70A08231 PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP3 DUP2 AND PUSH1 0x4 DUP4 ADD MSTORE PUSH0 SWAP2 DUP3 SWAP2 PUSH32 0x0 AND SWAP1 PUSH4 0x70A08231 SWAP1 PUSH1 0x24 ADD PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x659 JUMPI RETURNDATASIZE PUSH0 PUSH0 RETURNDATACOPY RETURNDATASIZE PUSH0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP3 ADD DUP1 PUSH1 0x40 MSTORE POP DUP2 ADD SWAP1 PUSH2 0x67D SWAP2 SWAP1 PUSH2 0xB2B JUMP JUMPDEST SWAP1 POP DUP1 PUSH0 SUB PUSH2 0x68E JUMPI POP PUSH0 SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH0 PUSH32 0x0 SWAP1 POP PUSH0 DUP2 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH4 0xC0463711 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 GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x6EF JUMPI RETURNDATASIZE PUSH0 PUSH0 RETURNDATACOPY RETURNDATASIZE PUSH0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP3 ADD DUP1 PUSH1 0x40 MSTORE POP DUP2 ADD SWAP1 PUSH2 0x713 SWAP2 SWAP1 PUSH2 0xB5D JUMP JUMPDEST SWAP1 POP TIMESTAMP PUSH2 0x723 PUSH3 0x15180 DUP4 PUSH2 0xB84 JUMP JUMPDEST PUSH8 0xFFFFFFFFFFFFFFFF AND LT ISZERO PUSH2 0x7A3 JUMPI PUSH1 0x40 MLOAD PUSH4 0x266D6A83 PUSH1 0xE1 SHL DUP2 MSTORE PUSH1 0x4 DUP2 ADD DUP5 SWAP1 MSTORE PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP4 AND SWAP1 PUSH4 0x4CDAD506 SWAP1 PUSH1 0x24 ADD PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x776 JUMPI RETURNDATASIZE PUSH0 PUSH0 RETURNDATACOPY RETURNDATASIZE PUSH0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP3 ADD DUP1 PUSH1 0x40 MSTORE POP DUP2 ADD SWAP1 PUSH2 0x79A SWAP2 SWAP1 PUSH2 0xB2B JUMP JUMPDEST SWAP6 SWAP5 POP POP POP POP POP JUMP JUMPDEST PUSH0 DUP3 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH4 0xCE04BEBB 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 GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x7E0 JUMPI RETURNDATASIZE PUSH0 PUSH0 RETURNDATACOPY RETURNDATASIZE PUSH0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP3 ADD DUP1 PUSH1 0x40 MSTORE POP DUP2 ADD SWAP1 PUSH2 0x804 SWAP2 SWAP1 PUSH2 0xBB0 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0x80 SHL SUB AND SWAP1 POP PUSH0 DUP4 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB 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 GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x84C JUMPI RETURNDATASIZE PUSH0 PUSH0 RETURNDATACOPY RETURNDATASIZE PUSH0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP3 ADD DUP1 PUSH1 0x40 MSTORE POP DUP2 ADD SWAP1 PUSH2 0x870 SWAP2 SWAP1 PUSH2 0xB2B JUMP JUMPDEST SWAP1 POP PUSH2 0x87D DUP3 DUP7 DUP4 PUSH2 0x888 JUMP JUMPDEST SWAP8 SWAP7 POP POP POP POP POP POP POP JUMP JUMPDEST PUSH0 PUSH0 PUSH0 PUSH2 0x895 DUP7 DUP7 PUSH2 0x939 JUMP JUMPDEST SWAP2 POP SWAP2 POP DUP2 PUSH0 SUB PUSH2 0x8B9 JUMPI DUP4 DUP2 DUP2 PUSH2 0x8AF JUMPI PUSH2 0x8AF PUSH2 0xBD6 JUMP JUMPDEST DIV SWAP3 POP POP POP PUSH2 0x932 JUMP JUMPDEST DUP2 DUP5 GT PUSH2 0x8D0 JUMPI PUSH2 0x8D0 PUSH1 0x3 DUP6 ISZERO MUL PUSH1 0x11 XOR PUSH2 0x955 JUMP JUMPDEST PUSH0 DUP5 DUP7 DUP9 MULMOD PUSH0 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 DUP6 DUP5 GT SWAP1 SWAP7 SUB SWAP6 SWAP1 SWAP6 MUL SWAP2 SWAP1 SWAP4 SUB SWAP4 SWAP1 SWAP4 DIV SWAP3 SWAP1 SWAP3 OR MUL SWAP2 POP POP JUMPDEST SWAP4 SWAP3 POP POP POP JUMP JUMPDEST PUSH0 DUP1 PUSH0 NOT DUP4 DUP6 MULMOD SWAP4 SWAP1 SWAP3 MUL DUP1 DUP5 LT SWAP4 DUP2 SWAP1 SUB SWAP4 SWAP1 SWAP4 SUB SWAP4 SWAP2 POP POP JUMP JUMPDEST PUSH4 0x4E487B71 PUSH0 MSTORE DUP1 PUSH1 0x20 MSTORE PUSH1 0x24 PUSH1 0x1C REVERT JUMPDEST PUSH4 0x4E487B71 PUSH1 0xE0 SHL PUSH0 MSTORE PUSH1 0x41 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH0 REVERT JUMPDEST PUSH0 DUP3 PUSH1 0x1F DUP4 ADD SLT PUSH2 0x989 JUMPI PUSH0 PUSH0 REVERT JUMPDEST DUP2 CALLDATALOAD PUSH8 0xFFFFFFFFFFFFFFFF DUP2 GT ISZERO PUSH2 0x9A3 JUMPI PUSH2 0x9A3 PUSH2 0x966 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH1 0x1F DUP3 ADD PUSH1 0x1F NOT SWAP1 DUP2 AND PUSH1 0x3F ADD AND DUP2 ADD PUSH8 0xFFFFFFFFFFFFFFFF DUP2 GT DUP3 DUP3 LT OR ISZERO PUSH2 0x9D2 JUMPI PUSH2 0x9D2 PUSH2 0x966 JUMP JUMPDEST PUSH1 0x40 MSTORE DUP2 DUP2 MSTORE DUP4 DUP3 ADD PUSH1 0x20 ADD DUP6 LT ISZERO PUSH2 0x9E9 JUMPI PUSH0 PUSH0 REVERT JUMPDEST DUP2 PUSH1 0x20 DUP6 ADD PUSH1 0x20 DUP4 ADD CALLDATACOPY PUSH0 SWAP2 DUP2 ADD PUSH1 0x20 ADD SWAP2 SWAP1 SWAP2 MSTORE SWAP4 SWAP3 POP POP POP JUMP JUMPDEST PUSH0 PUSH0 PUSH1 0x40 DUP4 DUP6 SUB SLT ISZERO PUSH2 0xA16 JUMPI PUSH0 PUSH0 REVERT JUMPDEST DUP3 CALLDATALOAD PUSH1 0xFF DUP2 AND DUP2 EQ PUSH2 0xA26 JUMPI PUSH0 PUSH0 REVERT JUMPDEST SWAP2 POP PUSH1 0x20 DUP4 ADD CALLDATALOAD PUSH8 0xFFFFFFFFFFFFFFFF DUP2 GT ISZERO PUSH2 0xA41 JUMPI PUSH0 PUSH0 REVERT JUMPDEST PUSH2 0xA4D DUP6 DUP3 DUP7 ADD PUSH2 0x97A JUMP JUMPDEST SWAP2 POP POP SWAP3 POP SWAP3 SWAP1 POP JUMP JUMPDEST PUSH1 0x20 DUP2 MSTORE PUSH0 DUP3 MLOAD DUP1 PUSH1 0x20 DUP5 ADD MSTORE DUP1 PUSH1 0x20 DUP6 ADD PUSH1 0x40 DUP6 ADD MCOPY PUSH0 PUSH1 0x40 DUP3 DUP6 ADD ADD MSTORE PUSH1 0x40 PUSH1 0x1F NOT PUSH1 0x1F DUP4 ADD AND DUP5 ADD ADD SWAP2 POP POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0xA9C JUMPI PUSH0 PUSH0 REVERT JUMPDEST POP CALLDATALOAD SWAP2 SWAP1 POP JUMP JUMPDEST PUSH0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0xAB3 JUMPI PUSH0 PUSH0 REVERT JUMPDEST DUP2 CALLDATALOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 AND DUP2 EQ PUSH2 0x932 JUMPI PUSH0 PUSH0 REVERT JUMPDEST DUP1 ISZERO ISZERO DUP2 EQ PUSH2 0x428 JUMPI PUSH0 PUSH0 REVERT JUMPDEST PUSH0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0xAE6 JUMPI PUSH0 PUSH0 REVERT JUMPDEST DUP2 CALLDATALOAD PUSH2 0x932 DUP2 PUSH2 0xAC9 JUMP JUMPDEST PUSH0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0xB01 JUMPI PUSH0 PUSH0 REVERT JUMPDEST DUP2 CALLDATALOAD PUSH8 0xFFFFFFFFFFFFFFFF DUP2 GT ISZERO PUSH2 0xB17 JUMPI PUSH0 PUSH0 REVERT JUMPDEST PUSH2 0xB23 DUP5 DUP3 DUP6 ADD PUSH2 0x97A JUMP JUMPDEST SWAP5 SWAP4 POP POP POP POP JUMP JUMPDEST PUSH0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0xB3B JUMPI PUSH0 PUSH0 REVERT JUMPDEST POP MLOAD SWAP2 SWAP1 POP JUMP JUMPDEST PUSH0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0xB52 JUMPI PUSH0 PUSH0 REVERT JUMPDEST DUP2 MLOAD PUSH2 0x932 DUP2 PUSH2 0xAC9 JUMP JUMPDEST PUSH0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0xB6D JUMPI PUSH0 PUSH0 REVERT JUMPDEST DUP2 MLOAD PUSH8 0xFFFFFFFFFFFFFFFF DUP2 AND DUP2 EQ PUSH2 0x932 JUMPI PUSH0 PUSH0 REVERT JUMPDEST PUSH8 0xFFFFFFFFFFFFFFFF DUP2 DUP2 AND DUP4 DUP3 AND ADD SWAP1 DUP2 GT ISZERO PUSH2 0x5EB JUMPI PUSH4 0x4E487B71 PUSH1 0xE0 SHL PUSH0 MSTORE PUSH1 0x11 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH0 REVERT JUMPDEST PUSH0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0xBC0 JUMPI PUSH0 PUSH0 REVERT JUMPDEST DUP2 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0x80 SHL SUB DUP2 AND DUP2 EQ PUSH2 0x932 JUMPI PUSH0 PUSH0 REVERT JUMPDEST PUSH4 0x4E487B71 PUSH1 0xE0 SHL PUSH0 MSTORE PUSH1 0x12 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH0 REVERT INVALID LOG2 PUSH5 0x6970667358 0x22 SLT KECCAK256 0xB4 0xB0 0xDF NUMBER 0xD7 0xD4 SWAP10 GASLIMIT DELEGATECALL XOR RJUMPI 0x5CD1 0xC1 SAR PUSH8 0xCF53F400C66C3CED 0x1E 0xC1 0xB7 DUP3 0x2B PUSH27 0x754364736F6C634300081E00330000000000000000000000000000 ","sourceMap":"608:4:79:-:0;565:48;;;;941:1210:82;7309:54:53;946:21:87;;;1003:2;983:18;976:30;1042:32;1022:18;1015:60;1127:20;1120:62;;;;941:1210:82;7309:54:53;;;1092:19:87;7309:54:53;;7299:65;;617:81:79;;1098:61:82;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;1149:6;1056::79;-1:-1:-1;;;;;1047:15:79;;;-1:-1:-1;;;;;1047:15:79;;;;;1084:6;-1:-1:-1;;;;;1084:12:79;;:14;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;-1:-1:-1;;;;;1068:31:79;;;-1:-1:-1;941:1210:82;;-1:-1:-1;941:1210:82;14:141:87;-1:-1:-1;;;;;99:31:87;;89:42;;79:70;;145:1;142;135:12;79:70;14:141;:::o;160:278::-;247:6;300:2;288:9;279:7;275:23;271:32;268:52;;;316:1;313;306:12;268:52;348:9;342:16;367:41;402:5;367:41;:::i;:::-;427:5;160:278;-1:-1:-1;;;160:278:87:o;709:479::-;941:1210:82;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;"},"deployedBytecode":{"functionDebugData":{"@asset_23110":{"entryPoint":null,"id":23110,"parameterSlots":1,"returnSlots":1},"@connect_23039":{"entryPoint":1067,"id":23039,"parameterSlots":1,"returnSlots":0},"@deposit_23192":{"entryPoint":1172,"id":23192,"parameterSlots":1,"returnSlots":0},"@disconnect_23065":{"entryPoint":815,"id":23065,"parameterSlots":1,"returnSlots":0},"@forwardEntryPoint_23208":{"entryPoint":513,"id":23208,"parameterSlots":2,"returnSlots":1},"@investVault_23120":{"entryPoint":null,"id":23120,"parameterSlots":0,"returnSlots":1},"@maxDeposit_23839":{"entryPoint":null,"id":23839,"parameterSlots":1,"returnSlots":1},"@maxWithdraw_23823":{"entryPoint":1505,"id":23823,"parameterSlots":1,"returnSlots":1},"@mul512_11124":{"entryPoint":2361,"id":11124,"parameterSlots":2,"returnSlots":2},"@mulDiv_11611":{"entryPoint":2184,"id":11611,"parameterSlots":3,"returnSlots":1},"@panic_10907":{"entryPoint":2389,"id":10907,"parameterSlots":1,"returnSlots":0},"@storageSlot_22976":{"entryPoint":null,"id":22976,"parameterSlots":0,"returnSlots":0},"@ternary_11373":{"entryPoint":null,"id":11373,"parameterSlots":3,"returnSlots":1},"@toUint_14490":{"entryPoint":null,"id":14490,"parameterSlots":1,"returnSlots":1},"@totalAssets_23913":{"entryPoint":1521,"id":23913,"parameterSlots":1,"returnSlots":1},"@withdraw_23162":{"entryPoint":588,"id":23162,"parameterSlots":1,"returnSlots":0},"abi_decode_bytes":{"entryPoint":2426,"id":null,"parameterSlots":2,"returnSlots":1},"abi_decode_tuple_t_address":{"entryPoint":2723,"id":null,"parameterSlots":2,"returnSlots":1},"abi_decode_tuple_t_bool":{"entryPoint":2774,"id":null,"parameterSlots":2,"returnSlots":1},"abi_decode_tuple_t_bool_fromMemory":{"entryPoint":2882,"id":null,"parameterSlots":2,"returnSlots":1},"abi_decode_tuple_t_bytes_memory_ptr":{"entryPoint":2801,"id":null,"parameterSlots":2,"returnSlots":1},"abi_decode_tuple_t_uint128_fromMemory":{"entryPoint":2992,"id":null,"parameterSlots":2,"returnSlots":1},"abi_decode_tuple_t_uint256":{"entryPoint":2700,"id":null,"parameterSlots":2,"returnSlots":1},"abi_decode_tuple_t_uint256_fromMemory":{"entryPoint":2859,"id":null,"parameterSlots":2,"returnSlots":1},"abi_decode_tuple_t_uint64_fromMemory":{"entryPoint":2909,"id":null,"parameterSlots":2,"returnSlots":1},"abi_decode_tuple_t_uint8t_bytes_memory_ptr":{"entryPoint":2565,"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_address_t_uint256__to_t_address_t_uint256__fromStack_reversed":{"entryPoint":null,"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":2647,"id":null,"parameterSlots":2,"returnSlots":1},"abi_encode_tuple_t_contract$_IERC4626_$7127__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},"abi_encode_tuple_t_uint256_t_address__to_t_uint256_t_address__fromStack_reversed":{"entryPoint":null,"id":null,"parameterSlots":3,"returnSlots":1},"abi_encode_tuple_t_uint256_t_address_t_address__to_t_uint256_t_address_t_address__fromStack_reversed":{"entryPoint":null,"id":null,"parameterSlots":4,"returnSlots":1},"checked_add_t_uint64":{"entryPoint":2948,"id":null,"parameterSlots":2,"returnSlots":1},"panic_error_0x12":{"entryPoint":3030,"id":null,"parameterSlots":0,"returnSlots":0},"panic_error_0x41":{"entryPoint":2406,"id":null,"parameterSlots":0,"returnSlots":0},"validator_revert_bool":{"entryPoint":2761,"id":null,"parameterSlots":1,"returnSlots":0}},"generatedSources":[{"ast":{"nativeSrc":"0:6144:87","nodeType":"YulBlock","src":"0:6144:87","statements":[{"nativeSrc":"6:3:87","nodeType":"YulBlock","src":"6:3:87","statements":[]},{"body":{"nativeSrc":"46:95:87","nodeType":"YulBlock","src":"46:95:87","statements":[{"expression":{"arguments":[{"kind":"number","nativeSrc":"63:1:87","nodeType":"YulLiteral","src":"63:1:87","type":"","value":"0"},{"arguments":[{"kind":"number","nativeSrc":"70:3:87","nodeType":"YulLiteral","src":"70:3:87","type":"","value":"224"},{"kind":"number","nativeSrc":"75:10:87","nodeType":"YulLiteral","src":"75:10:87","type":"","value":"0x4e487b71"}],"functionName":{"name":"shl","nativeSrc":"66:3:87","nodeType":"YulIdentifier","src":"66:3:87"},"nativeSrc":"66:20:87","nodeType":"YulFunctionCall","src":"66:20:87"}],"functionName":{"name":"mstore","nativeSrc":"56:6:87","nodeType":"YulIdentifier","src":"56:6:87"},"nativeSrc":"56:31:87","nodeType":"YulFunctionCall","src":"56:31:87"},"nativeSrc":"56:31:87","nodeType":"YulExpressionStatement","src":"56:31:87"},{"expression":{"arguments":[{"kind":"number","nativeSrc":"103:1:87","nodeType":"YulLiteral","src":"103:1:87","type":"","value":"4"},{"kind":"number","nativeSrc":"106:4:87","nodeType":"YulLiteral","src":"106:4:87","type":"","value":"0x41"}],"functionName":{"name":"mstore","nativeSrc":"96:6:87","nodeType":"YulIdentifier","src":"96:6:87"},"nativeSrc":"96:15:87","nodeType":"YulFunctionCall","src":"96:15:87"},"nativeSrc":"96:15:87","nodeType":"YulExpressionStatement","src":"96:15:87"},{"expression":{"arguments":[{"kind":"number","nativeSrc":"127:1:87","nodeType":"YulLiteral","src":"127:1:87","type":"","value":"0"},{"kind":"number","nativeSrc":"130:4:87","nodeType":"YulLiteral","src":"130:4:87","type":"","value":"0x24"}],"functionName":{"name":"revert","nativeSrc":"120:6:87","nodeType":"YulIdentifier","src":"120:6:87"},"nativeSrc":"120:15:87","nodeType":"YulFunctionCall","src":"120:15:87"},"nativeSrc":"120:15:87","nodeType":"YulExpressionStatement","src":"120:15:87"}]},"name":"panic_error_0x41","nativeSrc":"14:127:87","nodeType":"YulFunctionDefinition","src":"14:127:87"},{"body":{"nativeSrc":"198:673:87","nodeType":"YulBlock","src":"198:673:87","statements":[{"body":{"nativeSrc":"247:16:87","nodeType":"YulBlock","src":"247:16:87","statements":[{"expression":{"arguments":[{"kind":"number","nativeSrc":"256:1:87","nodeType":"YulLiteral","src":"256:1:87","type":"","value":"0"},{"kind":"number","nativeSrc":"259:1:87","nodeType":"YulLiteral","src":"259:1:87","type":"","value":"0"}],"functionName":{"name":"revert","nativeSrc":"249:6:87","nodeType":"YulIdentifier","src":"249:6:87"},"nativeSrc":"249:12:87","nodeType":"YulFunctionCall","src":"249:12:87"},"nativeSrc":"249:12:87","nodeType":"YulExpressionStatement","src":"249:12:87"}]},"condition":{"arguments":[{"arguments":[{"arguments":[{"name":"offset","nativeSrc":"226:6:87","nodeType":"YulIdentifier","src":"226:6:87"},{"kind":"number","nativeSrc":"234:4:87","nodeType":"YulLiteral","src":"234:4:87","type":"","value":"0x1f"}],"functionName":{"name":"add","nativeSrc":"222:3:87","nodeType":"YulIdentifier","src":"222:3:87"},"nativeSrc":"222:17:87","nodeType":"YulFunctionCall","src":"222:17:87"},{"name":"end","nativeSrc":"241:3:87","nodeType":"YulIdentifier","src":"241:3:87"}],"functionName":{"name":"slt","nativeSrc":"218:3:87","nodeType":"YulIdentifier","src":"218:3:87"},"nativeSrc":"218:27:87","nodeType":"YulFunctionCall","src":"218:27:87"}],"functionName":{"name":"iszero","nativeSrc":"211:6:87","nodeType":"YulIdentifier","src":"211:6:87"},"nativeSrc":"211:35:87","nodeType":"YulFunctionCall","src":"211:35:87"},"nativeSrc":"208:55:87","nodeType":"YulIf","src":"208:55:87"},{"nativeSrc":"272:34:87","nodeType":"YulVariableDeclaration","src":"272:34:87","value":{"arguments":[{"name":"offset","nativeSrc":"299:6:87","nodeType":"YulIdentifier","src":"299:6:87"}],"functionName":{"name":"calldataload","nativeSrc":"286:12:87","nodeType":"YulIdentifier","src":"286:12:87"},"nativeSrc":"286:20:87","nodeType":"YulFunctionCall","src":"286:20:87"},"variables":[{"name":"length","nativeSrc":"276:6:87","nodeType":"YulTypedName","src":"276:6:87","type":""}]},{"body":{"nativeSrc":"349:22:87","nodeType":"YulBlock","src":"349:22:87","statements":[{"expression":{"arguments":[],"functionName":{"name":"panic_error_0x41","nativeSrc":"351:16:87","nodeType":"YulIdentifier","src":"351:16:87"},"nativeSrc":"351:18:87","nodeType":"YulFunctionCall","src":"351:18:87"},"nativeSrc":"351:18:87","nodeType":"YulExpressionStatement","src":"351:18:87"}]},"condition":{"arguments":[{"name":"length","nativeSrc":"321:6:87","nodeType":"YulIdentifier","src":"321:6:87"},{"kind":"number","nativeSrc":"329:18:87","nodeType":"YulLiteral","src":"329:18:87","type":"","value":"0xffffffffffffffff"}],"functionName":{"name":"gt","nativeSrc":"318:2:87","nodeType":"YulIdentifier","src":"318:2:87"},"nativeSrc":"318:30:87","nodeType":"YulFunctionCall","src":"318:30:87"},"nativeSrc":"315:56:87","nodeType":"YulIf","src":"315:56:87"},{"nativeSrc":"380:23:87","nodeType":"YulVariableDeclaration","src":"380:23:87","value":{"arguments":[{"kind":"number","nativeSrc":"400:2:87","nodeType":"YulLiteral","src":"400:2:87","type":"","value":"64"}],"functionName":{"name":"mload","nativeSrc":"394:5:87","nodeType":"YulIdentifier","src":"394:5:87"},"nativeSrc":"394:9:87","nodeType":"YulFunctionCall","src":"394:9:87"},"variables":[{"name":"memPtr","nativeSrc":"384:6:87","nodeType":"YulTypedName","src":"384:6:87","type":""}]},{"nativeSrc":"412:85:87","nodeType":"YulVariableDeclaration","src":"412:85:87","value":{"arguments":[{"name":"memPtr","nativeSrc":"434:6:87","nodeType":"YulIdentifier","src":"434:6:87"},{"arguments":[{"arguments":[{"arguments":[{"arguments":[{"name":"length","nativeSrc":"458:6:87","nodeType":"YulIdentifier","src":"458:6:87"},{"kind":"number","nativeSrc":"466:4:87","nodeType":"YulLiteral","src":"466:4:87","type":"","value":"0x1f"}],"functionName":{"name":"add","nativeSrc":"454:3:87","nodeType":"YulIdentifier","src":"454:3:87"},"nativeSrc":"454:17:87","nodeType":"YulFunctionCall","src":"454:17:87"},{"arguments":[{"kind":"number","nativeSrc":"477:2:87","nodeType":"YulLiteral","src":"477:2:87","type":"","value":"31"}],"functionName":{"name":"not","nativeSrc":"473:3:87","nodeType":"YulIdentifier","src":"473:3:87"},"nativeSrc":"473:7:87","nodeType":"YulFunctionCall","src":"473:7:87"}],"functionName":{"name":"and","nativeSrc":"450:3:87","nodeType":"YulIdentifier","src":"450:3:87"},"nativeSrc":"450:31:87","nodeType":"YulFunctionCall","src":"450:31:87"},{"kind":"number","nativeSrc":"483:2:87","nodeType":"YulLiteral","src":"483:2:87","type":"","value":"63"}],"functionName":{"name":"add","nativeSrc":"446:3:87","nodeType":"YulIdentifier","src":"446:3:87"},"nativeSrc":"446:40:87","nodeType":"YulFunctionCall","src":"446:40:87"},{"arguments":[{"kind":"number","nativeSrc":"492:2:87","nodeType":"YulLiteral","src":"492:2:87","type":"","value":"31"}],"functionName":{"name":"not","nativeSrc":"488:3:87","nodeType":"YulIdentifier","src":"488:3:87"},"nativeSrc":"488:7:87","nodeType":"YulFunctionCall","src":"488:7:87"}],"functionName":{"name":"and","nativeSrc":"442:3:87","nodeType":"YulIdentifier","src":"442:3:87"},"nativeSrc":"442:54:87","nodeType":"YulFunctionCall","src":"442:54:87"}],"functionName":{"name":"add","nativeSrc":"430:3:87","nodeType":"YulIdentifier","src":"430:3:87"},"nativeSrc":"430:67:87","nodeType":"YulFunctionCall","src":"430:67:87"},"variables":[{"name":"newFreePtr","nativeSrc":"416:10:87","nodeType":"YulTypedName","src":"416:10:87","type":""}]},{"body":{"nativeSrc":"572:22:87","nodeType":"YulBlock","src":"572:22:87","statements":[{"expression":{"arguments":[],"functionName":{"name":"panic_error_0x41","nativeSrc":"574:16:87","nodeType":"YulIdentifier","src":"574:16:87"},"nativeSrc":"574:18:87","nodeType":"YulFunctionCall","src":"574:18:87"},"nativeSrc":"574:18:87","nodeType":"YulExpressionStatement","src":"574:18:87"}]},"condition":{"arguments":[{"arguments":[{"name":"newFreePtr","nativeSrc":"515:10:87","nodeType":"YulIdentifier","src":"515:10:87"},{"kind":"number","nativeSrc":"527:18:87","nodeType":"YulLiteral","src":"527:18:87","type":"","value":"0xffffffffffffffff"}],"functionName":{"name":"gt","nativeSrc":"512:2:87","nodeType":"YulIdentifier","src":"512:2:87"},"nativeSrc":"512:34:87","nodeType":"YulFunctionCall","src":"512:34:87"},{"arguments":[{"name":"newFreePtr","nativeSrc":"551:10:87","nodeType":"YulIdentifier","src":"551:10:87"},{"name":"memPtr","nativeSrc":"563:6:87","nodeType":"YulIdentifier","src":"563:6:87"}],"functionName":{"name":"lt","nativeSrc":"548:2:87","nodeType":"YulIdentifier","src":"548:2:87"},"nativeSrc":"548:22:87","nodeType":"YulFunctionCall","src":"548:22:87"}],"functionName":{"name":"or","nativeSrc":"509:2:87","nodeType":"YulIdentifier","src":"509:2:87"},"nativeSrc":"509:62:87","nodeType":"YulFunctionCall","src":"509:62:87"},"nativeSrc":"506:88:87","nodeType":"YulIf","src":"506:88:87"},{"expression":{"arguments":[{"kind":"number","nativeSrc":"610:2:87","nodeType":"YulLiteral","src":"610:2:87","type":"","value":"64"},{"name":"newFreePtr","nativeSrc":"614:10:87","nodeType":"YulIdentifier","src":"614:10:87"}],"functionName":{"name":"mstore","nativeSrc":"603:6:87","nodeType":"YulIdentifier","src":"603:6:87"},"nativeSrc":"603:22:87","nodeType":"YulFunctionCall","src":"603:22:87"},"nativeSrc":"603:22:87","nodeType":"YulExpressionStatement","src":"603:22:87"},{"expression":{"arguments":[{"name":"memPtr","nativeSrc":"641:6:87","nodeType":"YulIdentifier","src":"641:6:87"},{"name":"length","nativeSrc":"649:6:87","nodeType":"YulIdentifier","src":"649:6:87"}],"functionName":{"name":"mstore","nativeSrc":"634:6:87","nodeType":"YulIdentifier","src":"634:6:87"},"nativeSrc":"634:22:87","nodeType":"YulFunctionCall","src":"634:22:87"},"nativeSrc":"634:22:87","nodeType":"YulExpressionStatement","src":"634:22:87"},{"body":{"nativeSrc":"708:16:87","nodeType":"YulBlock","src":"708:16:87","statements":[{"expression":{"arguments":[{"kind":"number","nativeSrc":"717:1:87","nodeType":"YulLiteral","src":"717:1:87","type":"","value":"0"},{"kind":"number","nativeSrc":"720:1:87","nodeType":"YulLiteral","src":"720:1:87","type":"","value":"0"}],"functionName":{"name":"revert","nativeSrc":"710:6:87","nodeType":"YulIdentifier","src":"710:6:87"},"nativeSrc":"710:12:87","nodeType":"YulFunctionCall","src":"710:12:87"},"nativeSrc":"710:12:87","nodeType":"YulExpressionStatement","src":"710:12:87"}]},"condition":{"arguments":[{"arguments":[{"arguments":[{"name":"offset","nativeSrc":"679:6:87","nodeType":"YulIdentifier","src":"679:6:87"},{"name":"length","nativeSrc":"687:6:87","nodeType":"YulIdentifier","src":"687:6:87"}],"functionName":{"name":"add","nativeSrc":"675:3:87","nodeType":"YulIdentifier","src":"675:3:87"},"nativeSrc":"675:19:87","nodeType":"YulFunctionCall","src":"675:19:87"},{"kind":"number","nativeSrc":"696:4:87","nodeType":"YulLiteral","src":"696:4:87","type":"","value":"0x20"}],"functionName":{"name":"add","nativeSrc":"671:3:87","nodeType":"YulIdentifier","src":"671:3:87"},"nativeSrc":"671:30:87","nodeType":"YulFunctionCall","src":"671:30:87"},{"name":"end","nativeSrc":"703:3:87","nodeType":"YulIdentifier","src":"703:3:87"}],"functionName":{"name":"gt","nativeSrc":"668:2:87","nodeType":"YulIdentifier","src":"668:2:87"},"nativeSrc":"668:39:87","nodeType":"YulFunctionCall","src":"668:39:87"},"nativeSrc":"665:59:87","nodeType":"YulIf","src":"665:59:87"},{"expression":{"arguments":[{"arguments":[{"name":"memPtr","nativeSrc":"750:6:87","nodeType":"YulIdentifier","src":"750:6:87"},{"kind":"number","nativeSrc":"758:4:87","nodeType":"YulLiteral","src":"758:4:87","type":"","value":"0x20"}],"functionName":{"name":"add","nativeSrc":"746:3:87","nodeType":"YulIdentifier","src":"746:3:87"},"nativeSrc":"746:17:87","nodeType":"YulFunctionCall","src":"746:17:87"},{"arguments":[{"name":"offset","nativeSrc":"769:6:87","nodeType":"YulIdentifier","src":"769:6:87"},{"kind":"number","nativeSrc":"777:4:87","nodeType":"YulLiteral","src":"777:4:87","type":"","value":"0x20"}],"functionName":{"name":"add","nativeSrc":"765:3:87","nodeType":"YulIdentifier","src":"765:3:87"},"nativeSrc":"765:17:87","nodeType":"YulFunctionCall","src":"765:17:87"},{"name":"length","nativeSrc":"784:6:87","nodeType":"YulIdentifier","src":"784:6:87"}],"functionName":{"name":"calldatacopy","nativeSrc":"733:12:87","nodeType":"YulIdentifier","src":"733:12:87"},"nativeSrc":"733:58:87","nodeType":"YulFunctionCall","src":"733:58:87"},"nativeSrc":"733:58:87","nodeType":"YulExpressionStatement","src":"733:58:87"},{"expression":{"arguments":[{"arguments":[{"arguments":[{"name":"memPtr","nativeSrc":"815:6:87","nodeType":"YulIdentifier","src":"815:6:87"},{"name":"length","nativeSrc":"823:6:87","nodeType":"YulIdentifier","src":"823:6:87"}],"functionName":{"name":"add","nativeSrc":"811:3:87","nodeType":"YulIdentifier","src":"811:3:87"},"nativeSrc":"811:19:87","nodeType":"YulFunctionCall","src":"811:19:87"},{"kind":"number","nativeSrc":"832:4:87","nodeType":"YulLiteral","src":"832:4:87","type":"","value":"0x20"}],"functionName":{"name":"add","nativeSrc":"807:3:87","nodeType":"YulIdentifier","src":"807:3:87"},"nativeSrc":"807:30:87","nodeType":"YulFunctionCall","src":"807:30:87"},{"kind":"number","nativeSrc":"839:1:87","nodeType":"YulLiteral","src":"839:1:87","type":"","value":"0"}],"functionName":{"name":"mstore","nativeSrc":"800:6:87","nodeType":"YulIdentifier","src":"800:6:87"},"nativeSrc":"800:41:87","nodeType":"YulFunctionCall","src":"800:41:87"},"nativeSrc":"800:41:87","nodeType":"YulExpressionStatement","src":"800:41:87"},{"nativeSrc":"850:15:87","nodeType":"YulAssignment","src":"850:15:87","value":{"name":"memPtr","nativeSrc":"859:6:87","nodeType":"YulIdentifier","src":"859:6:87"},"variableNames":[{"name":"array","nativeSrc":"850:5:87","nodeType":"YulIdentifier","src":"850:5:87"}]}]},"name":"abi_decode_bytes","nativeSrc":"146:725:87","nodeType":"YulFunctionDefinition","parameters":[{"name":"offset","nativeSrc":"172:6:87","nodeType":"YulTypedName","src":"172:6:87","type":""},{"name":"end","nativeSrc":"180:3:87","nodeType":"YulTypedName","src":"180:3:87","type":""}],"returnVariables":[{"name":"array","nativeSrc":"188:5:87","nodeType":"YulTypedName","src":"188:5:87","type":""}],"src":"146:725:87"},{"body":{"nativeSrc":"970:383:87","nodeType":"YulBlock","src":"970:383:87","statements":[{"body":{"nativeSrc":"1016:16:87","nodeType":"YulBlock","src":"1016:16:87","statements":[{"expression":{"arguments":[{"kind":"number","nativeSrc":"1025:1:87","nodeType":"YulLiteral","src":"1025:1:87","type":"","value":"0"},{"kind":"number","nativeSrc":"1028:1:87","nodeType":"YulLiteral","src":"1028:1:87","type":"","value":"0"}],"functionName":{"name":"revert","nativeSrc":"1018:6:87","nodeType":"YulIdentifier","src":"1018:6:87"},"nativeSrc":"1018:12:87","nodeType":"YulFunctionCall","src":"1018:12:87"},"nativeSrc":"1018:12:87","nodeType":"YulExpressionStatement","src":"1018:12:87"}]},"condition":{"arguments":[{"arguments":[{"name":"dataEnd","nativeSrc":"991:7:87","nodeType":"YulIdentifier","src":"991:7:87"},{"name":"headStart","nativeSrc":"1000:9:87","nodeType":"YulIdentifier","src":"1000:9:87"}],"functionName":{"name":"sub","nativeSrc":"987:3:87","nodeType":"YulIdentifier","src":"987:3:87"},"nativeSrc":"987:23:87","nodeType":"YulFunctionCall","src":"987:23:87"},{"kind":"number","nativeSrc":"1012:2:87","nodeType":"YulLiteral","src":"1012:2:87","type":"","value":"64"}],"functionName":{"name":"slt","nativeSrc":"983:3:87","nodeType":"YulIdentifier","src":"983:3:87"},"nativeSrc":"983:32:87","nodeType":"YulFunctionCall","src":"983:32:87"},"nativeSrc":"980:52:87","nodeType":"YulIf","src":"980:52:87"},{"nativeSrc":"1041:36:87","nodeType":"YulVariableDeclaration","src":"1041:36:87","value":{"arguments":[{"name":"headStart","nativeSrc":"1067:9:87","nodeType":"YulIdentifier","src":"1067:9:87"}],"functionName":{"name":"calldataload","nativeSrc":"1054:12:87","nodeType":"YulIdentifier","src":"1054:12:87"},"nativeSrc":"1054:23:87","nodeType":"YulFunctionCall","src":"1054:23:87"},"variables":[{"name":"value","nativeSrc":"1045:5:87","nodeType":"YulTypedName","src":"1045:5:87","type":""}]},{"body":{"nativeSrc":"1125:16:87","nodeType":"YulBlock","src":"1125:16:87","statements":[{"expression":{"arguments":[{"kind":"number","nativeSrc":"1134:1:87","nodeType":"YulLiteral","src":"1134:1:87","type":"","value":"0"},{"kind":"number","nativeSrc":"1137:1:87","nodeType":"YulLiteral","src":"1137:1:87","type":"","value":"0"}],"functionName":{"name":"revert","nativeSrc":"1127:6:87","nodeType":"YulIdentifier","src":"1127:6:87"},"nativeSrc":"1127:12:87","nodeType":"YulFunctionCall","src":"1127:12:87"},"nativeSrc":"1127:12:87","nodeType":"YulExpressionStatement","src":"1127:12:87"}]},"condition":{"arguments":[{"arguments":[{"name":"value","nativeSrc":"1099:5:87","nodeType":"YulIdentifier","src":"1099:5:87"},{"arguments":[{"name":"value","nativeSrc":"1110:5:87","nodeType":"YulIdentifier","src":"1110:5:87"},{"kind":"number","nativeSrc":"1117:4:87","nodeType":"YulLiteral","src":"1117:4:87","type":"","value":"0xff"}],"functionName":{"name":"and","nativeSrc":"1106:3:87","nodeType":"YulIdentifier","src":"1106:3:87"},"nativeSrc":"1106:16:87","nodeType":"YulFunctionCall","src":"1106:16:87"}],"functionName":{"name":"eq","nativeSrc":"1096:2:87","nodeType":"YulIdentifier","src":"1096:2:87"},"nativeSrc":"1096:27:87","nodeType":"YulFunctionCall","src":"1096:27:87"}],"functionName":{"name":"iszero","nativeSrc":"1089:6:87","nodeType":"YulIdentifier","src":"1089:6:87"},"nativeSrc":"1089:35:87","nodeType":"YulFunctionCall","src":"1089:35:87"},"nativeSrc":"1086:55:87","nodeType":"YulIf","src":"1086:55:87"},{"nativeSrc":"1150:15:87","nodeType":"YulAssignment","src":"1150:15:87","value":{"name":"value","nativeSrc":"1160:5:87","nodeType":"YulIdentifier","src":"1160:5:87"},"variableNames":[{"name":"value0","nativeSrc":"1150:6:87","nodeType":"YulIdentifier","src":"1150:6:87"}]},{"nativeSrc":"1174:46:87","nodeType":"YulVariableDeclaration","src":"1174:46:87","value":{"arguments":[{"arguments":[{"name":"headStart","nativeSrc":"1205:9:87","nodeType":"YulIdentifier","src":"1205:9:87"},{"kind":"number","nativeSrc":"1216:2:87","nodeType":"YulLiteral","src":"1216:2:87","type":"","value":"32"}],"functionName":{"name":"add","nativeSrc":"1201:3:87","nodeType":"YulIdentifier","src":"1201:3:87"},"nativeSrc":"1201:18:87","nodeType":"YulFunctionCall","src":"1201:18:87"}],"functionName":{"name":"calldataload","nativeSrc":"1188:12:87","nodeType":"YulIdentifier","src":"1188:12:87"},"nativeSrc":"1188:32:87","nodeType":"YulFunctionCall","src":"1188:32:87"},"variables":[{"name":"offset","nativeSrc":"1178:6:87","nodeType":"YulTypedName","src":"1178:6:87","type":""}]},{"body":{"nativeSrc":"1263:16:87","nodeType":"YulBlock","src":"1263:16:87","statements":[{"expression":{"arguments":[{"kind":"number","nativeSrc":"1272:1:87","nodeType":"YulLiteral","src":"1272:1:87","type":"","value":"0"},{"kind":"number","nativeSrc":"1275:1:87","nodeType":"YulLiteral","src":"1275:1:87","type":"","value":"0"}],"functionName":{"name":"revert","nativeSrc":"1265:6:87","nodeType":"YulIdentifier","src":"1265:6:87"},"nativeSrc":"1265:12:87","nodeType":"YulFunctionCall","src":"1265:12:87"},"nativeSrc":"1265:12:87","nodeType":"YulExpressionStatement","src":"1265:12:87"}]},"condition":{"arguments":[{"name":"offset","nativeSrc":"1235:6:87","nodeType":"YulIdentifier","src":"1235:6:87"},{"kind":"number","nativeSrc":"1243:18:87","nodeType":"YulLiteral","src":"1243:18:87","type":"","value":"0xffffffffffffffff"}],"functionName":{"name":"gt","nativeSrc":"1232:2:87","nodeType":"YulIdentifier","src":"1232:2:87"},"nativeSrc":"1232:30:87","nodeType":"YulFunctionCall","src":"1232:30:87"},"nativeSrc":"1229:50:87","nodeType":"YulIf","src":"1229:50:87"},{"nativeSrc":"1288:59:87","nodeType":"YulAssignment","src":"1288:59:87","value":{"arguments":[{"arguments":[{"name":"headStart","nativeSrc":"1319:9:87","nodeType":"YulIdentifier","src":"1319:9:87"},{"name":"offset","nativeSrc":"1330:6:87","nodeType":"YulIdentifier","src":"1330:6:87"}],"functionName":{"name":"add","nativeSrc":"1315:3:87","nodeType":"YulIdentifier","src":"1315:3:87"},"nativeSrc":"1315:22:87","nodeType":"YulFunctionCall","src":"1315:22:87"},{"name":"dataEnd","nativeSrc":"1339:7:87","nodeType":"YulIdentifier","src":"1339:7:87"}],"functionName":{"name":"abi_decode_bytes","nativeSrc":"1298:16:87","nodeType":"YulIdentifier","src":"1298:16:87"},"nativeSrc":"1298:49:87","nodeType":"YulFunctionCall","src":"1298:49:87"},"variableNames":[{"name":"value1","nativeSrc":"1288:6:87","nodeType":"YulIdentifier","src":"1288:6:87"}]}]},"name":"abi_decode_tuple_t_uint8t_bytes_memory_ptr","nativeSrc":"876:477:87","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nativeSrc":"928:9:87","nodeType":"YulTypedName","src":"928:9:87","type":""},{"name":"dataEnd","nativeSrc":"939:7:87","nodeType":"YulTypedName","src":"939:7:87","type":""}],"returnVariables":[{"name":"value0","nativeSrc":"951:6:87","nodeType":"YulTypedName","src":"951:6:87","type":""},{"name":"value1","nativeSrc":"959:6:87","nodeType":"YulTypedName","src":"959:6:87","type":""}],"src":"876:477:87"},{"body":{"nativeSrc":"1477:297:87","nodeType":"YulBlock","src":"1477:297:87","statements":[{"expression":{"arguments":[{"name":"headStart","nativeSrc":"1494:9:87","nodeType":"YulIdentifier","src":"1494:9:87"},{"kind":"number","nativeSrc":"1505:2:87","nodeType":"YulLiteral","src":"1505:2:87","type":"","value":"32"}],"functionName":{"name":"mstore","nativeSrc":"1487:6:87","nodeType":"YulIdentifier","src":"1487:6:87"},"nativeSrc":"1487:21:87","nodeType":"YulFunctionCall","src":"1487:21:87"},"nativeSrc":"1487:21:87","nodeType":"YulExpressionStatement","src":"1487:21:87"},{"nativeSrc":"1517:27:87","nodeType":"YulVariableDeclaration","src":"1517:27:87","value":{"arguments":[{"name":"value0","nativeSrc":"1537:6:87","nodeType":"YulIdentifier","src":"1537:6:87"}],"functionName":{"name":"mload","nativeSrc":"1531:5:87","nodeType":"YulIdentifier","src":"1531:5:87"},"nativeSrc":"1531:13:87","nodeType":"YulFunctionCall","src":"1531:13:87"},"variables":[{"name":"length","nativeSrc":"1521:6:87","nodeType":"YulTypedName","src":"1521:6:87","type":""}]},{"expression":{"arguments":[{"arguments":[{"name":"headStart","nativeSrc":"1564:9:87","nodeType":"YulIdentifier","src":"1564:9:87"},{"kind":"number","nativeSrc":"1575:2:87","nodeType":"YulLiteral","src":"1575:2:87","type":"","value":"32"}],"functionName":{"name":"add","nativeSrc":"1560:3:87","nodeType":"YulIdentifier","src":"1560:3:87"},"nativeSrc":"1560:18:87","nodeType":"YulFunctionCall","src":"1560:18:87"},{"name":"length","nativeSrc":"1580:6:87","nodeType":"YulIdentifier","src":"1580:6:87"}],"functionName":{"name":"mstore","nativeSrc":"1553:6:87","nodeType":"YulIdentifier","src":"1553:6:87"},"nativeSrc":"1553:34:87","nodeType":"YulFunctionCall","src":"1553:34:87"},"nativeSrc":"1553:34:87","nodeType":"YulExpressionStatement","src":"1553:34:87"},{"expression":{"arguments":[{"arguments":[{"name":"headStart","nativeSrc":"1606:9:87","nodeType":"YulIdentifier","src":"1606:9:87"},{"kind":"number","nativeSrc":"1617:2:87","nodeType":"YulLiteral","src":"1617:2:87","type":"","value":"64"}],"functionName":{"name":"add","nativeSrc":"1602:3:87","nodeType":"YulIdentifier","src":"1602:3:87"},"nativeSrc":"1602:18:87","nodeType":"YulFunctionCall","src":"1602:18:87"},{"arguments":[{"name":"value0","nativeSrc":"1626:6:87","nodeType":"YulIdentifier","src":"1626:6:87"},{"kind":"number","nativeSrc":"1634:2:87","nodeType":"YulLiteral","src":"1634:2:87","type":"","value":"32"}],"functionName":{"name":"add","nativeSrc":"1622:3:87","nodeType":"YulIdentifier","src":"1622:3:87"},"nativeSrc":"1622:15:87","nodeType":"YulFunctionCall","src":"1622:15:87"},{"name":"length","nativeSrc":"1639:6:87","nodeType":"YulIdentifier","src":"1639:6:87"}],"functionName":{"name":"mcopy","nativeSrc":"1596:5:87","nodeType":"YulIdentifier","src":"1596:5:87"},"nativeSrc":"1596:50:87","nodeType":"YulFunctionCall","src":"1596:50:87"},"nativeSrc":"1596:50:87","nodeType":"YulExpressionStatement","src":"1596:50:87"},{"expression":{"arguments":[{"arguments":[{"arguments":[{"name":"headStart","nativeSrc":"1670:9:87","nodeType":"YulIdentifier","src":"1670:9:87"},{"name":"length","nativeSrc":"1681:6:87","nodeType":"YulIdentifier","src":"1681:6:87"}],"functionName":{"name":"add","nativeSrc":"1666:3:87","nodeType":"YulIdentifier","src":"1666:3:87"},"nativeSrc":"1666:22:87","nodeType":"YulFunctionCall","src":"1666:22:87"},{"kind":"number","nativeSrc":"1690:2:87","nodeType":"YulLiteral","src":"1690:2:87","type":"","value":"64"}],"functionName":{"name":"add","nativeSrc":"1662:3:87","nodeType":"YulIdentifier","src":"1662:3:87"},"nativeSrc":"1662:31:87","nodeType":"YulFunctionCall","src":"1662:31:87"},{"kind":"number","nativeSrc":"1695:1:87","nodeType":"YulLiteral","src":"1695:1:87","type":"","value":"0"}],"functionName":{"name":"mstore","nativeSrc":"1655:6:87","nodeType":"YulIdentifier","src":"1655:6:87"},"nativeSrc":"1655:42:87","nodeType":"YulFunctionCall","src":"1655:42:87"},"nativeSrc":"1655:42:87","nodeType":"YulExpressionStatement","src":"1655:42:87"},{"nativeSrc":"1706:62:87","nodeType":"YulAssignment","src":"1706:62:87","value":{"arguments":[{"arguments":[{"name":"headStart","nativeSrc":"1722:9:87","nodeType":"YulIdentifier","src":"1722:9:87"},{"arguments":[{"arguments":[{"name":"length","nativeSrc":"1741:6:87","nodeType":"YulIdentifier","src":"1741:6:87"},{"kind":"number","nativeSrc":"1749:2:87","nodeType":"YulLiteral","src":"1749:2:87","type":"","value":"31"}],"functionName":{"name":"add","nativeSrc":"1737:3:87","nodeType":"YulIdentifier","src":"1737:3:87"},"nativeSrc":"1737:15:87","nodeType":"YulFunctionCall","src":"1737:15:87"},{"arguments":[{"kind":"number","nativeSrc":"1758:2:87","nodeType":"YulLiteral","src":"1758:2:87","type":"","value":"31"}],"functionName":{"name":"not","nativeSrc":"1754:3:87","nodeType":"YulIdentifier","src":"1754:3:87"},"nativeSrc":"1754:7:87","nodeType":"YulFunctionCall","src":"1754:7:87"}],"functionName":{"name":"and","nativeSrc":"1733:3:87","nodeType":"YulIdentifier","src":"1733:3:87"},"nativeSrc":"1733:29:87","nodeType":"YulFunctionCall","src":"1733:29:87"}],"functionName":{"name":"add","nativeSrc":"1718:3:87","nodeType":"YulIdentifier","src":"1718:3:87"},"nativeSrc":"1718:45:87","nodeType":"YulFunctionCall","src":"1718:45:87"},{"kind":"number","nativeSrc":"1765:2:87","nodeType":"YulLiteral","src":"1765:2:87","type":"","value":"64"}],"functionName":{"name":"add","nativeSrc":"1714:3:87","nodeType":"YulIdentifier","src":"1714:3:87"},"nativeSrc":"1714:54:87","nodeType":"YulFunctionCall","src":"1714:54:87"},"variableNames":[{"name":"tail","nativeSrc":"1706:4:87","nodeType":"YulIdentifier","src":"1706:4:87"}]}]},"name":"abi_encode_tuple_t_bytes_memory_ptr__to_t_bytes_memory_ptr__fromStack_reversed","nativeSrc":"1358:416:87","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nativeSrc":"1446:9:87","nodeType":"YulTypedName","src":"1446:9:87","type":""},{"name":"value0","nativeSrc":"1457:6:87","nodeType":"YulTypedName","src":"1457:6:87","type":""}],"returnVariables":[{"name":"tail","nativeSrc":"1468:4:87","nodeType":"YulTypedName","src":"1468:4:87","type":""}],"src":"1358:416:87"},{"body":{"nativeSrc":"1849:110:87","nodeType":"YulBlock","src":"1849:110:87","statements":[{"body":{"nativeSrc":"1895:16:87","nodeType":"YulBlock","src":"1895:16:87","statements":[{"expression":{"arguments":[{"kind":"number","nativeSrc":"1904:1:87","nodeType":"YulLiteral","src":"1904:1:87","type":"","value":"0"},{"kind":"number","nativeSrc":"1907:1:87","nodeType":"YulLiteral","src":"1907:1:87","type":"","value":"0"}],"functionName":{"name":"revert","nativeSrc":"1897:6:87","nodeType":"YulIdentifier","src":"1897:6:87"},"nativeSrc":"1897:12:87","nodeType":"YulFunctionCall","src":"1897:12:87"},"nativeSrc":"1897:12:87","nodeType":"YulExpressionStatement","src":"1897:12:87"}]},"condition":{"arguments":[{"arguments":[{"name":"dataEnd","nativeSrc":"1870:7:87","nodeType":"YulIdentifier","src":"1870:7:87"},{"name":"headStart","nativeSrc":"1879:9:87","nodeType":"YulIdentifier","src":"1879:9:87"}],"functionName":{"name":"sub","nativeSrc":"1866:3:87","nodeType":"YulIdentifier","src":"1866:3:87"},"nativeSrc":"1866:23:87","nodeType":"YulFunctionCall","src":"1866:23:87"},{"kind":"number","nativeSrc":"1891:2:87","nodeType":"YulLiteral","src":"1891:2:87","type":"","value":"32"}],"functionName":{"name":"slt","nativeSrc":"1862:3:87","nodeType":"YulIdentifier","src":"1862:3:87"},"nativeSrc":"1862:32:87","nodeType":"YulFunctionCall","src":"1862:32:87"},"nativeSrc":"1859:52:87","nodeType":"YulIf","src":"1859:52:87"},{"nativeSrc":"1920:33:87","nodeType":"YulAssignment","src":"1920:33:87","value":{"arguments":[{"name":"headStart","nativeSrc":"1943:9:87","nodeType":"YulIdentifier","src":"1943:9:87"}],"functionName":{"name":"calldataload","nativeSrc":"1930:12:87","nodeType":"YulIdentifier","src":"1930:12:87"},"nativeSrc":"1930:23:87","nodeType":"YulFunctionCall","src":"1930:23:87"},"variableNames":[{"name":"value0","nativeSrc":"1920:6:87","nodeType":"YulIdentifier","src":"1920:6:87"}]}]},"name":"abi_decode_tuple_t_uint256","nativeSrc":"1779:180:87","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nativeSrc":"1815:9:87","nodeType":"YulTypedName","src":"1815:9:87","type":""},{"name":"dataEnd","nativeSrc":"1826:7:87","nodeType":"YulTypedName","src":"1826:7:87","type":""}],"returnVariables":[{"name":"value0","nativeSrc":"1838:6:87","nodeType":"YulTypedName","src":"1838:6:87","type":""}],"src":"1779:180:87"},{"body":{"nativeSrc":"2034:216:87","nodeType":"YulBlock","src":"2034:216:87","statements":[{"body":{"nativeSrc":"2080:16:87","nodeType":"YulBlock","src":"2080:16:87","statements":[{"expression":{"arguments":[{"kind":"number","nativeSrc":"2089:1:87","nodeType":"YulLiteral","src":"2089:1:87","type":"","value":"0"},{"kind":"number","nativeSrc":"2092:1:87","nodeType":"YulLiteral","src":"2092:1:87","type":"","value":"0"}],"functionName":{"name":"revert","nativeSrc":"2082:6:87","nodeType":"YulIdentifier","src":"2082:6:87"},"nativeSrc":"2082:12:87","nodeType":"YulFunctionCall","src":"2082:12:87"},"nativeSrc":"2082:12:87","nodeType":"YulExpressionStatement","src":"2082:12:87"}]},"condition":{"arguments":[{"arguments":[{"name":"dataEnd","nativeSrc":"2055:7:87","nodeType":"YulIdentifier","src":"2055:7:87"},{"name":"headStart","nativeSrc":"2064:9:87","nodeType":"YulIdentifier","src":"2064:9:87"}],"functionName":{"name":"sub","nativeSrc":"2051:3:87","nodeType":"YulIdentifier","src":"2051:3:87"},"nativeSrc":"2051:23:87","nodeType":"YulFunctionCall","src":"2051:23:87"},{"kind":"number","nativeSrc":"2076:2:87","nodeType":"YulLiteral","src":"2076:2:87","type":"","value":"32"}],"functionName":{"name":"slt","nativeSrc":"2047:3:87","nodeType":"YulIdentifier","src":"2047:3:87"},"nativeSrc":"2047:32:87","nodeType":"YulFunctionCall","src":"2047:32:87"},"nativeSrc":"2044:52:87","nodeType":"YulIf","src":"2044:52:87"},{"nativeSrc":"2105:36:87","nodeType":"YulVariableDeclaration","src":"2105:36:87","value":{"arguments":[{"name":"headStart","nativeSrc":"2131:9:87","nodeType":"YulIdentifier","src":"2131:9:87"}],"functionName":{"name":"calldataload","nativeSrc":"2118:12:87","nodeType":"YulIdentifier","src":"2118:12:87"},"nativeSrc":"2118:23:87","nodeType":"YulFunctionCall","src":"2118:23:87"},"variables":[{"name":"value","nativeSrc":"2109:5:87","nodeType":"YulTypedName","src":"2109:5:87","type":""}]},{"body":{"nativeSrc":"2204:16:87","nodeType":"YulBlock","src":"2204:16:87","statements":[{"expression":{"arguments":[{"kind":"number","nativeSrc":"2213:1:87","nodeType":"YulLiteral","src":"2213:1:87","type":"","value":"0"},{"kind":"number","nativeSrc":"2216:1:87","nodeType":"YulLiteral","src":"2216:1:87","type":"","value":"0"}],"functionName":{"name":"revert","nativeSrc":"2206:6:87","nodeType":"YulIdentifier","src":"2206:6:87"},"nativeSrc":"2206:12:87","nodeType":"YulFunctionCall","src":"2206:12:87"},"nativeSrc":"2206:12:87","nodeType":"YulExpressionStatement","src":"2206:12:87"}]},"condition":{"arguments":[{"arguments":[{"name":"value","nativeSrc":"2163:5:87","nodeType":"YulIdentifier","src":"2163:5:87"},{"arguments":[{"name":"value","nativeSrc":"2174:5:87","nodeType":"YulIdentifier","src":"2174:5:87"},{"arguments":[{"arguments":[{"kind":"number","nativeSrc":"2189:3:87","nodeType":"YulLiteral","src":"2189:3:87","type":"","value":"160"},{"kind":"number","nativeSrc":"2194:1:87","nodeType":"YulLiteral","src":"2194:1:87","type":"","value":"1"}],"functionName":{"name":"shl","nativeSrc":"2185:3:87","nodeType":"YulIdentifier","src":"2185:3:87"},"nativeSrc":"2185:11:87","nodeType":"YulFunctionCall","src":"2185:11:87"},{"kind":"number","nativeSrc":"2198:1:87","nodeType":"YulLiteral","src":"2198:1:87","type":"","value":"1"}],"functionName":{"name":"sub","nativeSrc":"2181:3:87","nodeType":"YulIdentifier","src":"2181:3:87"},"nativeSrc":"2181:19:87","nodeType":"YulFunctionCall","src":"2181:19:87"}],"functionName":{"name":"and","nativeSrc":"2170:3:87","nodeType":"YulIdentifier","src":"2170:3:87"},"nativeSrc":"2170:31:87","nodeType":"YulFunctionCall","src":"2170:31:87"}],"functionName":{"name":"eq","nativeSrc":"2160:2:87","nodeType":"YulIdentifier","src":"2160:2:87"},"nativeSrc":"2160:42:87","nodeType":"YulFunctionCall","src":"2160:42:87"}],"functionName":{"name":"iszero","nativeSrc":"2153:6:87","nodeType":"YulIdentifier","src":"2153:6:87"},"nativeSrc":"2153:50:87","nodeType":"YulFunctionCall","src":"2153:50:87"},"nativeSrc":"2150:70:87","nodeType":"YulIf","src":"2150:70:87"},{"nativeSrc":"2229:15:87","nodeType":"YulAssignment","src":"2229:15:87","value":{"name":"value","nativeSrc":"2239:5:87","nodeType":"YulIdentifier","src":"2239:5:87"},"variableNames":[{"name":"value0","nativeSrc":"2229:6:87","nodeType":"YulIdentifier","src":"2229:6:87"}]}]},"name":"abi_decode_tuple_t_address","nativeSrc":"1964:286:87","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nativeSrc":"2000:9:87","nodeType":"YulTypedName","src":"2000:9:87","type":""},{"name":"dataEnd","nativeSrc":"2011:7:87","nodeType":"YulTypedName","src":"2011:7:87","type":""}],"returnVariables":[{"name":"value0","nativeSrc":"2023:6:87","nodeType":"YulTypedName","src":"2023:6:87","type":""}],"src":"1964:286:87"},{"body":{"nativeSrc":"2356:76:87","nodeType":"YulBlock","src":"2356:76:87","statements":[{"nativeSrc":"2366:26:87","nodeType":"YulAssignment","src":"2366:26:87","value":{"arguments":[{"name":"headStart","nativeSrc":"2378:9:87","nodeType":"YulIdentifier","src":"2378:9:87"},{"kind":"number","nativeSrc":"2389:2:87","nodeType":"YulLiteral","src":"2389:2:87","type":"","value":"32"}],"functionName":{"name":"add","nativeSrc":"2374:3:87","nodeType":"YulIdentifier","src":"2374:3:87"},"nativeSrc":"2374:18:87","nodeType":"YulFunctionCall","src":"2374:18:87"},"variableNames":[{"name":"tail","nativeSrc":"2366:4:87","nodeType":"YulIdentifier","src":"2366:4:87"}]},{"expression":{"arguments":[{"name":"headStart","nativeSrc":"2408:9:87","nodeType":"YulIdentifier","src":"2408:9:87"},{"name":"value0","nativeSrc":"2419:6:87","nodeType":"YulIdentifier","src":"2419:6:87"}],"functionName":{"name":"mstore","nativeSrc":"2401:6:87","nodeType":"YulIdentifier","src":"2401:6:87"},"nativeSrc":"2401:25:87","nodeType":"YulFunctionCall","src":"2401:25:87"},"nativeSrc":"2401:25:87","nodeType":"YulExpressionStatement","src":"2401:25:87"}]},"name":"abi_encode_tuple_t_uint256__to_t_uint256__fromStack_reversed","nativeSrc":"2255:177:87","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nativeSrc":"2325:9:87","nodeType":"YulTypedName","src":"2325:9:87","type":""},{"name":"value0","nativeSrc":"2336:6:87","nodeType":"YulTypedName","src":"2336:6:87","type":""}],"returnVariables":[{"name":"tail","nativeSrc":"2347:4:87","nodeType":"YulTypedName","src":"2347:4:87","type":""}],"src":"2255:177:87"},{"body":{"nativeSrc":"2479:76:87","nodeType":"YulBlock","src":"2479:76:87","statements":[{"body":{"nativeSrc":"2533:16:87","nodeType":"YulBlock","src":"2533:16:87","statements":[{"expression":{"arguments":[{"kind":"number","nativeSrc":"2542:1:87","nodeType":"YulLiteral","src":"2542:1:87","type":"","value":"0"},{"kind":"number","nativeSrc":"2545:1:87","nodeType":"YulLiteral","src":"2545:1:87","type":"","value":"0"}],"functionName":{"name":"revert","nativeSrc":"2535:6:87","nodeType":"YulIdentifier","src":"2535:6:87"},"nativeSrc":"2535:12:87","nodeType":"YulFunctionCall","src":"2535:12:87"},"nativeSrc":"2535:12:87","nodeType":"YulExpressionStatement","src":"2535:12:87"}]},"condition":{"arguments":[{"arguments":[{"name":"value","nativeSrc":"2502:5:87","nodeType":"YulIdentifier","src":"2502:5:87"},{"arguments":[{"arguments":[{"name":"value","nativeSrc":"2523:5:87","nodeType":"YulIdentifier","src":"2523:5:87"}],"functionName":{"name":"iszero","nativeSrc":"2516:6:87","nodeType":"YulIdentifier","src":"2516:6:87"},"nativeSrc":"2516:13:87","nodeType":"YulFunctionCall","src":"2516:13:87"}],"functionName":{"name":"iszero","nativeSrc":"2509:6:87","nodeType":"YulIdentifier","src":"2509:6:87"},"nativeSrc":"2509:21:87","nodeType":"YulFunctionCall","src":"2509:21:87"}],"functionName":{"name":"eq","nativeSrc":"2499:2:87","nodeType":"YulIdentifier","src":"2499:2:87"},"nativeSrc":"2499:32:87","nodeType":"YulFunctionCall","src":"2499:32:87"}],"functionName":{"name":"iszero","nativeSrc":"2492:6:87","nodeType":"YulIdentifier","src":"2492:6:87"},"nativeSrc":"2492:40:87","nodeType":"YulFunctionCall","src":"2492:40:87"},"nativeSrc":"2489:60:87","nodeType":"YulIf","src":"2489:60:87"}]},"name":"validator_revert_bool","nativeSrc":"2437:118:87","nodeType":"YulFunctionDefinition","parameters":[{"name":"value","nativeSrc":"2468:5:87","nodeType":"YulTypedName","src":"2468:5:87","type":""}],"src":"2437:118:87"},{"body":{"nativeSrc":"2627:174:87","nodeType":"YulBlock","src":"2627:174:87","statements":[{"body":{"nativeSrc":"2673:16:87","nodeType":"YulBlock","src":"2673:16:87","statements":[{"expression":{"arguments":[{"kind":"number","nativeSrc":"2682:1:87","nodeType":"YulLiteral","src":"2682:1:87","type":"","value":"0"},{"kind":"number","nativeSrc":"2685:1:87","nodeType":"YulLiteral","src":"2685:1:87","type":"","value":"0"}],"functionName":{"name":"revert","nativeSrc":"2675:6:87","nodeType":"YulIdentifier","src":"2675:6:87"},"nativeSrc":"2675:12:87","nodeType":"YulFunctionCall","src":"2675:12:87"},"nativeSrc":"2675:12:87","nodeType":"YulExpressionStatement","src":"2675:12:87"}]},"condition":{"arguments":[{"arguments":[{"name":"dataEnd","nativeSrc":"2648:7:87","nodeType":"YulIdentifier","src":"2648:7:87"},{"name":"headStart","nativeSrc":"2657:9:87","nodeType":"YulIdentifier","src":"2657:9:87"}],"functionName":{"name":"sub","nativeSrc":"2644:3:87","nodeType":"YulIdentifier","src":"2644:3:87"},"nativeSrc":"2644:23:87","nodeType":"YulFunctionCall","src":"2644:23:87"},{"kind":"number","nativeSrc":"2669:2:87","nodeType":"YulLiteral","src":"2669:2:87","type":"","value":"32"}],"functionName":{"name":"slt","nativeSrc":"2640:3:87","nodeType":"YulIdentifier","src":"2640:3:87"},"nativeSrc":"2640:32:87","nodeType":"YulFunctionCall","src":"2640:32:87"},"nativeSrc":"2637:52:87","nodeType":"YulIf","src":"2637:52:87"},{"nativeSrc":"2698:36:87","nodeType":"YulVariableDeclaration","src":"2698:36:87","value":{"arguments":[{"name":"headStart","nativeSrc":"2724:9:87","nodeType":"YulIdentifier","src":"2724:9:87"}],"functionName":{"name":"calldataload","nativeSrc":"2711:12:87","nodeType":"YulIdentifier","src":"2711:12:87"},"nativeSrc":"2711:23:87","nodeType":"YulFunctionCall","src":"2711:23:87"},"variables":[{"name":"value","nativeSrc":"2702:5:87","nodeType":"YulTypedName","src":"2702:5:87","type":""}]},{"expression":{"arguments":[{"name":"value","nativeSrc":"2765:5:87","nodeType":"YulIdentifier","src":"2765:5:87"}],"functionName":{"name":"validator_revert_bool","nativeSrc":"2743:21:87","nodeType":"YulIdentifier","src":"2743:21:87"},"nativeSrc":"2743:28:87","nodeType":"YulFunctionCall","src":"2743:28:87"},"nativeSrc":"2743:28:87","nodeType":"YulExpressionStatement","src":"2743:28:87"},{"nativeSrc":"2780:15:87","nodeType":"YulAssignment","src":"2780:15:87","value":{"name":"value","nativeSrc":"2790:5:87","nodeType":"YulIdentifier","src":"2790:5:87"},"variableNames":[{"name":"value0","nativeSrc":"2780:6:87","nodeType":"YulIdentifier","src":"2780:6:87"}]}]},"name":"abi_decode_tuple_t_bool","nativeSrc":"2560:241:87","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nativeSrc":"2593:9:87","nodeType":"YulTypedName","src":"2593:9:87","type":""},{"name":"dataEnd","nativeSrc":"2604:7:87","nodeType":"YulTypedName","src":"2604:7:87","type":""}],"returnVariables":[{"name":"value0","nativeSrc":"2616:6:87","nodeType":"YulTypedName","src":"2616:6:87","type":""}],"src":"2560:241:87"},{"body":{"nativeSrc":"2907:76:87","nodeType":"YulBlock","src":"2907:76:87","statements":[{"nativeSrc":"2917:26:87","nodeType":"YulAssignment","src":"2917:26:87","value":{"arguments":[{"name":"headStart","nativeSrc":"2929:9:87","nodeType":"YulIdentifier","src":"2929:9:87"},{"kind":"number","nativeSrc":"2940:2:87","nodeType":"YulLiteral","src":"2940:2:87","type":"","value":"32"}],"functionName":{"name":"add","nativeSrc":"2925:3:87","nodeType":"YulIdentifier","src":"2925:3:87"},"nativeSrc":"2925:18:87","nodeType":"YulFunctionCall","src":"2925:18:87"},"variableNames":[{"name":"tail","nativeSrc":"2917:4:87","nodeType":"YulIdentifier","src":"2917:4:87"}]},{"expression":{"arguments":[{"name":"headStart","nativeSrc":"2959:9:87","nodeType":"YulIdentifier","src":"2959:9:87"},{"name":"value0","nativeSrc":"2970:6:87","nodeType":"YulIdentifier","src":"2970:6:87"}],"functionName":{"name":"mstore","nativeSrc":"2952:6:87","nodeType":"YulIdentifier","src":"2952:6:87"},"nativeSrc":"2952:25:87","nodeType":"YulFunctionCall","src":"2952:25:87"},"nativeSrc":"2952:25:87","nodeType":"YulExpressionStatement","src":"2952:25:87"}]},"name":"abi_encode_tuple_t_bytes32__to_t_bytes32__fromStack_reversed","nativeSrc":"2806:177:87","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nativeSrc":"2876:9:87","nodeType":"YulTypedName","src":"2876:9:87","type":""},{"name":"value0","nativeSrc":"2887:6:87","nodeType":"YulTypedName","src":"2887:6:87","type":""}],"returnVariables":[{"name":"tail","nativeSrc":"2898:4:87","nodeType":"YulTypedName","src":"2898:4:87","type":""}],"src":"2806:177:87"},{"body":{"nativeSrc":"3089:102:87","nodeType":"YulBlock","src":"3089:102:87","statements":[{"nativeSrc":"3099:26:87","nodeType":"YulAssignment","src":"3099:26:87","value":{"arguments":[{"name":"headStart","nativeSrc":"3111:9:87","nodeType":"YulIdentifier","src":"3111:9:87"},{"kind":"number","nativeSrc":"3122:2:87","nodeType":"YulLiteral","src":"3122:2:87","type":"","value":"32"}],"functionName":{"name":"add","nativeSrc":"3107:3:87","nodeType":"YulIdentifier","src":"3107:3:87"},"nativeSrc":"3107:18:87","nodeType":"YulFunctionCall","src":"3107:18:87"},"variableNames":[{"name":"tail","nativeSrc":"3099:4:87","nodeType":"YulIdentifier","src":"3099:4:87"}]},{"expression":{"arguments":[{"name":"headStart","nativeSrc":"3141:9:87","nodeType":"YulIdentifier","src":"3141:9:87"},{"arguments":[{"name":"value0","nativeSrc":"3156:6:87","nodeType":"YulIdentifier","src":"3156:6:87"},{"arguments":[{"arguments":[{"kind":"number","nativeSrc":"3172:3:87","nodeType":"YulLiteral","src":"3172:3:87","type":"","value":"160"},{"kind":"number","nativeSrc":"3177:1:87","nodeType":"YulLiteral","src":"3177:1:87","type":"","value":"1"}],"functionName":{"name":"shl","nativeSrc":"3168:3:87","nodeType":"YulIdentifier","src":"3168:3:87"},"nativeSrc":"3168:11:87","nodeType":"YulFunctionCall","src":"3168:11:87"},{"kind":"number","nativeSrc":"3181:1:87","nodeType":"YulLiteral","src":"3181:1:87","type":"","value":"1"}],"functionName":{"name":"sub","nativeSrc":"3164:3:87","nodeType":"YulIdentifier","src":"3164:3:87"},"nativeSrc":"3164:19:87","nodeType":"YulFunctionCall","src":"3164:19:87"}],"functionName":{"name":"and","nativeSrc":"3152:3:87","nodeType":"YulIdentifier","src":"3152:3:87"},"nativeSrc":"3152:32:87","nodeType":"YulFunctionCall","src":"3152:32:87"}],"functionName":{"name":"mstore","nativeSrc":"3134:6:87","nodeType":"YulIdentifier","src":"3134:6:87"},"nativeSrc":"3134:51:87","nodeType":"YulFunctionCall","src":"3134:51:87"},"nativeSrc":"3134:51:87","nodeType":"YulExpressionStatement","src":"3134:51:87"}]},"name":"abi_encode_tuple_t_address__to_t_address__fromStack_reversed","nativeSrc":"2988:203:87","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nativeSrc":"3058:9:87","nodeType":"YulTypedName","src":"3058:9:87","type":""},{"name":"value0","nativeSrc":"3069:6:87","nodeType":"YulTypedName","src":"3069:6:87","type":""}],"returnVariables":[{"name":"tail","nativeSrc":"3080:4:87","nodeType":"YulTypedName","src":"3080:4:87","type":""}],"src":"2988:203:87"},{"body":{"nativeSrc":"3275:241:87","nodeType":"YulBlock","src":"3275:241:87","statements":[{"body":{"nativeSrc":"3321:16:87","nodeType":"YulBlock","src":"3321:16:87","statements":[{"expression":{"arguments":[{"kind":"number","nativeSrc":"3330:1:87","nodeType":"YulLiteral","src":"3330:1:87","type":"","value":"0"},{"kind":"number","nativeSrc":"3333:1:87","nodeType":"YulLiteral","src":"3333:1:87","type":"","value":"0"}],"functionName":{"name":"revert","nativeSrc":"3323:6:87","nodeType":"YulIdentifier","src":"3323:6:87"},"nativeSrc":"3323:12:87","nodeType":"YulFunctionCall","src":"3323:12:87"},"nativeSrc":"3323:12:87","nodeType":"YulExpressionStatement","src":"3323:12:87"}]},"condition":{"arguments":[{"arguments":[{"name":"dataEnd","nativeSrc":"3296:7:87","nodeType":"YulIdentifier","src":"3296:7:87"},{"name":"headStart","nativeSrc":"3305:9:87","nodeType":"YulIdentifier","src":"3305:9:87"}],"functionName":{"name":"sub","nativeSrc":"3292:3:87","nodeType":"YulIdentifier","src":"3292:3:87"},"nativeSrc":"3292:23:87","nodeType":"YulFunctionCall","src":"3292:23:87"},{"kind":"number","nativeSrc":"3317:2:87","nodeType":"YulLiteral","src":"3317:2:87","type":"","value":"32"}],"functionName":{"name":"slt","nativeSrc":"3288:3:87","nodeType":"YulIdentifier","src":"3288:3:87"},"nativeSrc":"3288:32:87","nodeType":"YulFunctionCall","src":"3288:32:87"},"nativeSrc":"3285:52:87","nodeType":"YulIf","src":"3285:52:87"},{"nativeSrc":"3346:37:87","nodeType":"YulVariableDeclaration","src":"3346:37:87","value":{"arguments":[{"name":"headStart","nativeSrc":"3373:9:87","nodeType":"YulIdentifier","src":"3373:9:87"}],"functionName":{"name":"calldataload","nativeSrc":"3360:12:87","nodeType":"YulIdentifier","src":"3360:12:87"},"nativeSrc":"3360:23:87","nodeType":"YulFunctionCall","src":"3360:23:87"},"variables":[{"name":"offset","nativeSrc":"3350:6:87","nodeType":"YulTypedName","src":"3350:6:87","type":""}]},{"body":{"nativeSrc":"3426:16:87","nodeType":"YulBlock","src":"3426:16:87","statements":[{"expression":{"arguments":[{"kind":"number","nativeSrc":"3435:1:87","nodeType":"YulLiteral","src":"3435:1:87","type":"","value":"0"},{"kind":"number","nativeSrc":"3438:1:87","nodeType":"YulLiteral","src":"3438:1:87","type":"","value":"0"}],"functionName":{"name":"revert","nativeSrc":"3428:6:87","nodeType":"YulIdentifier","src":"3428:6:87"},"nativeSrc":"3428:12:87","nodeType":"YulFunctionCall","src":"3428:12:87"},"nativeSrc":"3428:12:87","nodeType":"YulExpressionStatement","src":"3428:12:87"}]},"condition":{"arguments":[{"name":"offset","nativeSrc":"3398:6:87","nodeType":"YulIdentifier","src":"3398:6:87"},{"kind":"number","nativeSrc":"3406:18:87","nodeType":"YulLiteral","src":"3406:18:87","type":"","value":"0xffffffffffffffff"}],"functionName":{"name":"gt","nativeSrc":"3395:2:87","nodeType":"YulIdentifier","src":"3395:2:87"},"nativeSrc":"3395:30:87","nodeType":"YulFunctionCall","src":"3395:30:87"},"nativeSrc":"3392:50:87","nodeType":"YulIf","src":"3392:50:87"},{"nativeSrc":"3451:59:87","nodeType":"YulAssignment","src":"3451:59:87","value":{"arguments":[{"arguments":[{"name":"headStart","nativeSrc":"3482:9:87","nodeType":"YulIdentifier","src":"3482:9:87"},{"name":"offset","nativeSrc":"3493:6:87","nodeType":"YulIdentifier","src":"3493:6:87"}],"functionName":{"name":"add","nativeSrc":"3478:3:87","nodeType":"YulIdentifier","src":"3478:3:87"},"nativeSrc":"3478:22:87","nodeType":"YulFunctionCall","src":"3478:22:87"},{"name":"dataEnd","nativeSrc":"3502:7:87","nodeType":"YulIdentifier","src":"3502:7:87"}],"functionName":{"name":"abi_decode_bytes","nativeSrc":"3461:16:87","nodeType":"YulIdentifier","src":"3461:16:87"},"nativeSrc":"3461:49:87","nodeType":"YulFunctionCall","src":"3461:49:87"},"variableNames":[{"name":"value0","nativeSrc":"3451:6:87","nodeType":"YulIdentifier","src":"3451:6:87"}]}]},"name":"abi_decode_tuple_t_bytes_memory_ptr","nativeSrc":"3196:320:87","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nativeSrc":"3241:9:87","nodeType":"YulTypedName","src":"3241:9:87","type":""},{"name":"dataEnd","nativeSrc":"3252:7:87","nodeType":"YulTypedName","src":"3252:7:87","type":""}],"returnVariables":[{"name":"value0","nativeSrc":"3264:6:87","nodeType":"YulTypedName","src":"3264:6:87","type":""}],"src":"3196:320:87"},{"body":{"nativeSrc":"3639:102:87","nodeType":"YulBlock","src":"3639:102:87","statements":[{"nativeSrc":"3649:26:87","nodeType":"YulAssignment","src":"3649:26:87","value":{"arguments":[{"name":"headStart","nativeSrc":"3661:9:87","nodeType":"YulIdentifier","src":"3661:9:87"},{"kind":"number","nativeSrc":"3672:2:87","nodeType":"YulLiteral","src":"3672:2:87","type":"","value":"32"}],"functionName":{"name":"add","nativeSrc":"3657:3:87","nodeType":"YulIdentifier","src":"3657:3:87"},"nativeSrc":"3657:18:87","nodeType":"YulFunctionCall","src":"3657:18:87"},"variableNames":[{"name":"tail","nativeSrc":"3649:4:87","nodeType":"YulIdentifier","src":"3649:4:87"}]},{"expression":{"arguments":[{"name":"headStart","nativeSrc":"3691:9:87","nodeType":"YulIdentifier","src":"3691:9:87"},{"arguments":[{"name":"value0","nativeSrc":"3706:6:87","nodeType":"YulIdentifier","src":"3706:6:87"},{"arguments":[{"arguments":[{"kind":"number","nativeSrc":"3722:3:87","nodeType":"YulLiteral","src":"3722:3:87","type":"","value":"160"},{"kind":"number","nativeSrc":"3727:1:87","nodeType":"YulLiteral","src":"3727:1:87","type":"","value":"1"}],"functionName":{"name":"shl","nativeSrc":"3718:3:87","nodeType":"YulIdentifier","src":"3718:3:87"},"nativeSrc":"3718:11:87","nodeType":"YulFunctionCall","src":"3718:11:87"},{"kind":"number","nativeSrc":"3731:1:87","nodeType":"YulLiteral","src":"3731:1:87","type":"","value":"1"}],"functionName":{"name":"sub","nativeSrc":"3714:3:87","nodeType":"YulIdentifier","src":"3714:3:87"},"nativeSrc":"3714:19:87","nodeType":"YulFunctionCall","src":"3714:19:87"}],"functionName":{"name":"and","nativeSrc":"3702:3:87","nodeType":"YulIdentifier","src":"3702:3:87"},"nativeSrc":"3702:32:87","nodeType":"YulFunctionCall","src":"3702:32:87"}],"functionName":{"name":"mstore","nativeSrc":"3684:6:87","nodeType":"YulIdentifier","src":"3684:6:87"},"nativeSrc":"3684:51:87","nodeType":"YulFunctionCall","src":"3684:51:87"},"nativeSrc":"3684:51:87","nodeType":"YulExpressionStatement","src":"3684:51:87"}]},"name":"abi_encode_tuple_t_contract$_IERC4626_$7127__to_t_address__fromStack_reversed","nativeSrc":"3521:220:87","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nativeSrc":"3608:9:87","nodeType":"YulTypedName","src":"3608:9:87","type":""},{"name":"value0","nativeSrc":"3619:6:87","nodeType":"YulTypedName","src":"3619:6:87","type":""}],"returnVariables":[{"name":"tail","nativeSrc":"3630:4:87","nodeType":"YulTypedName","src":"3630:4:87","type":""}],"src":"3521:220:87"},{"body":{"nativeSrc":"3903:214:87","nodeType":"YulBlock","src":"3903:214:87","statements":[{"nativeSrc":"3913:26:87","nodeType":"YulAssignment","src":"3913:26:87","value":{"arguments":[{"name":"headStart","nativeSrc":"3925:9:87","nodeType":"YulIdentifier","src":"3925:9:87"},{"kind":"number","nativeSrc":"3936:2:87","nodeType":"YulLiteral","src":"3936:2:87","type":"","value":"96"}],"functionName":{"name":"add","nativeSrc":"3921:3:87","nodeType":"YulIdentifier","src":"3921:3:87"},"nativeSrc":"3921:18:87","nodeType":"YulFunctionCall","src":"3921:18:87"},"variableNames":[{"name":"tail","nativeSrc":"3913:4:87","nodeType":"YulIdentifier","src":"3913:4:87"}]},{"expression":{"arguments":[{"name":"headStart","nativeSrc":"3955:9:87","nodeType":"YulIdentifier","src":"3955:9:87"},{"name":"value0","nativeSrc":"3966:6:87","nodeType":"YulIdentifier","src":"3966:6:87"}],"functionName":{"name":"mstore","nativeSrc":"3948:6:87","nodeType":"YulIdentifier","src":"3948:6:87"},"nativeSrc":"3948:25:87","nodeType":"YulFunctionCall","src":"3948:25:87"},"nativeSrc":"3948:25:87","nodeType":"YulExpressionStatement","src":"3948:25:87"},{"expression":{"arguments":[{"arguments":[{"name":"headStart","nativeSrc":"3993:9:87","nodeType":"YulIdentifier","src":"3993:9:87"},{"kind":"number","nativeSrc":"4004:2:87","nodeType":"YulLiteral","src":"4004:2:87","type":"","value":"32"}],"functionName":{"name":"add","nativeSrc":"3989:3:87","nodeType":"YulIdentifier","src":"3989:3:87"},"nativeSrc":"3989:18:87","nodeType":"YulFunctionCall","src":"3989:18:87"},{"arguments":[{"name":"value1","nativeSrc":"4013:6:87","nodeType":"YulIdentifier","src":"4013:6:87"},{"arguments":[{"arguments":[{"kind":"number","nativeSrc":"4029:3:87","nodeType":"YulLiteral","src":"4029:3:87","type":"","value":"160"},{"kind":"number","nativeSrc":"4034:1:87","nodeType":"YulLiteral","src":"4034:1:87","type":"","value":"1"}],"functionName":{"name":"shl","nativeSrc":"4025:3:87","nodeType":"YulIdentifier","src":"4025:3:87"},"nativeSrc":"4025:11:87","nodeType":"YulFunctionCall","src":"4025:11:87"},{"kind":"number","nativeSrc":"4038:1:87","nodeType":"YulLiteral","src":"4038:1:87","type":"","value":"1"}],"functionName":{"name":"sub","nativeSrc":"4021:3:87","nodeType":"YulIdentifier","src":"4021:3:87"},"nativeSrc":"4021:19:87","nodeType":"YulFunctionCall","src":"4021:19:87"}],"functionName":{"name":"and","nativeSrc":"4009:3:87","nodeType":"YulIdentifier","src":"4009:3:87"},"nativeSrc":"4009:32:87","nodeType":"YulFunctionCall","src":"4009:32:87"}],"functionName":{"name":"mstore","nativeSrc":"3982:6:87","nodeType":"YulIdentifier","src":"3982:6:87"},"nativeSrc":"3982:60:87","nodeType":"YulFunctionCall","src":"3982:60:87"},"nativeSrc":"3982:60:87","nodeType":"YulExpressionStatement","src":"3982:60:87"},{"expression":{"arguments":[{"arguments":[{"name":"headStart","nativeSrc":"4062:9:87","nodeType":"YulIdentifier","src":"4062:9:87"},{"kind":"number","nativeSrc":"4073:2:87","nodeType":"YulLiteral","src":"4073:2:87","type":"","value":"64"}],"functionName":{"name":"add","nativeSrc":"4058:3:87","nodeType":"YulIdentifier","src":"4058:3:87"},"nativeSrc":"4058:18:87","nodeType":"YulFunctionCall","src":"4058:18:87"},{"arguments":[{"name":"value2","nativeSrc":"4082:6:87","nodeType":"YulIdentifier","src":"4082:6:87"},{"arguments":[{"arguments":[{"kind":"number","nativeSrc":"4098:3:87","nodeType":"YulLiteral","src":"4098:3:87","type":"","value":"160"},{"kind":"number","nativeSrc":"4103:1:87","nodeType":"YulLiteral","src":"4103:1:87","type":"","value":"1"}],"functionName":{"name":"shl","nativeSrc":"4094:3:87","nodeType":"YulIdentifier","src":"4094:3:87"},"nativeSrc":"4094:11:87","nodeType":"YulFunctionCall","src":"4094:11:87"},{"kind":"number","nativeSrc":"4107:1:87","nodeType":"YulLiteral","src":"4107:1:87","type":"","value":"1"}],"functionName":{"name":"sub","nativeSrc":"4090:3:87","nodeType":"YulIdentifier","src":"4090:3:87"},"nativeSrc":"4090:19:87","nodeType":"YulFunctionCall","src":"4090:19:87"}],"functionName":{"name":"and","nativeSrc":"4078:3:87","nodeType":"YulIdentifier","src":"4078:3:87"},"nativeSrc":"4078:32:87","nodeType":"YulFunctionCall","src":"4078:32:87"}],"functionName":{"name":"mstore","nativeSrc":"4051:6:87","nodeType":"YulIdentifier","src":"4051:6:87"},"nativeSrc":"4051:60:87","nodeType":"YulFunctionCall","src":"4051:60:87"},"nativeSrc":"4051:60:87","nodeType":"YulExpressionStatement","src":"4051:60:87"}]},"name":"abi_encode_tuple_t_uint256_t_address_t_address__to_t_uint256_t_address_t_address__fromStack_reversed","nativeSrc":"3746:371:87","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nativeSrc":"3856:9:87","nodeType":"YulTypedName","src":"3856:9:87","type":""},{"name":"value2","nativeSrc":"3867:6:87","nodeType":"YulTypedName","src":"3867:6:87","type":""},{"name":"value1","nativeSrc":"3875:6:87","nodeType":"YulTypedName","src":"3875:6:87","type":""},{"name":"value0","nativeSrc":"3883:6:87","nodeType":"YulTypedName","src":"3883:6:87","type":""}],"returnVariables":[{"name":"tail","nativeSrc":"3894:4:87","nodeType":"YulTypedName","src":"3894:4:87","type":""}],"src":"3746:371:87"},{"body":{"nativeSrc":"4203:103:87","nodeType":"YulBlock","src":"4203:103:87","statements":[{"body":{"nativeSrc":"4249:16:87","nodeType":"YulBlock","src":"4249:16:87","statements":[{"expression":{"arguments":[{"kind":"number","nativeSrc":"4258:1:87","nodeType":"YulLiteral","src":"4258:1:87","type":"","value":"0"},{"kind":"number","nativeSrc":"4261:1:87","nodeType":"YulLiteral","src":"4261:1:87","type":"","value":"0"}],"functionName":{"name":"revert","nativeSrc":"4251:6:87","nodeType":"YulIdentifier","src":"4251:6:87"},"nativeSrc":"4251:12:87","nodeType":"YulFunctionCall","src":"4251:12:87"},"nativeSrc":"4251:12:87","nodeType":"YulExpressionStatement","src":"4251:12:87"}]},"condition":{"arguments":[{"arguments":[{"name":"dataEnd","nativeSrc":"4224:7:87","nodeType":"YulIdentifier","src":"4224:7:87"},{"name":"headStart","nativeSrc":"4233:9:87","nodeType":"YulIdentifier","src":"4233:9:87"}],"functionName":{"name":"sub","nativeSrc":"4220:3:87","nodeType":"YulIdentifier","src":"4220:3:87"},"nativeSrc":"4220:23:87","nodeType":"YulFunctionCall","src":"4220:23:87"},{"kind":"number","nativeSrc":"4245:2:87","nodeType":"YulLiteral","src":"4245:2:87","type":"","value":"32"}],"functionName":{"name":"slt","nativeSrc":"4216:3:87","nodeType":"YulIdentifier","src":"4216:3:87"},"nativeSrc":"4216:32:87","nodeType":"YulFunctionCall","src":"4216:32:87"},"nativeSrc":"4213:52:87","nodeType":"YulIf","src":"4213:52:87"},{"nativeSrc":"4274:26:87","nodeType":"YulAssignment","src":"4274:26:87","value":{"arguments":[{"name":"headStart","nativeSrc":"4290:9:87","nodeType":"YulIdentifier","src":"4290:9:87"}],"functionName":{"name":"mload","nativeSrc":"4284:5:87","nodeType":"YulIdentifier","src":"4284:5:87"},"nativeSrc":"4284:16:87","nodeType":"YulFunctionCall","src":"4284:16:87"},"variableNames":[{"name":"value0","nativeSrc":"4274:6:87","nodeType":"YulIdentifier","src":"4274:6:87"}]}]},"name":"abi_decode_tuple_t_uint256_fromMemory","nativeSrc":"4122:184:87","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nativeSrc":"4169:9:87","nodeType":"YulTypedName","src":"4169:9:87","type":""},{"name":"dataEnd","nativeSrc":"4180:7:87","nodeType":"YulTypedName","src":"4180:7:87","type":""}],"returnVariables":[{"name":"value0","nativeSrc":"4192:6:87","nodeType":"YulTypedName","src":"4192:6:87","type":""}],"src":"4122:184:87"},{"body":{"nativeSrc":"4440:145:87","nodeType":"YulBlock","src":"4440:145:87","statements":[{"nativeSrc":"4450:26:87","nodeType":"YulAssignment","src":"4450:26:87","value":{"arguments":[{"name":"headStart","nativeSrc":"4462:9:87","nodeType":"YulIdentifier","src":"4462:9:87"},{"kind":"number","nativeSrc":"4473:2:87","nodeType":"YulLiteral","src":"4473:2:87","type":"","value":"64"}],"functionName":{"name":"add","nativeSrc":"4458:3:87","nodeType":"YulIdentifier","src":"4458:3:87"},"nativeSrc":"4458:18:87","nodeType":"YulFunctionCall","src":"4458:18:87"},"variableNames":[{"name":"tail","nativeSrc":"4450:4:87","nodeType":"YulIdentifier","src":"4450:4:87"}]},{"expression":{"arguments":[{"name":"headStart","nativeSrc":"4492:9:87","nodeType":"YulIdentifier","src":"4492:9:87"},{"arguments":[{"name":"value0","nativeSrc":"4507:6:87","nodeType":"YulIdentifier","src":"4507:6:87"},{"arguments":[{"arguments":[{"kind":"number","nativeSrc":"4523:3:87","nodeType":"YulLiteral","src":"4523:3:87","type":"","value":"160"},{"kind":"number","nativeSrc":"4528:1:87","nodeType":"YulLiteral","src":"4528:1:87","type":"","value":"1"}],"functionName":{"name":"shl","nativeSrc":"4519:3:87","nodeType":"YulIdentifier","src":"4519:3:87"},"nativeSrc":"4519:11:87","nodeType":"YulFunctionCall","src":"4519:11:87"},{"kind":"number","nativeSrc":"4532:1:87","nodeType":"YulLiteral","src":"4532:1:87","type":"","value":"1"}],"functionName":{"name":"sub","nativeSrc":"4515:3:87","nodeType":"YulIdentifier","src":"4515:3:87"},"nativeSrc":"4515:19:87","nodeType":"YulFunctionCall","src":"4515:19:87"}],"functionName":{"name":"and","nativeSrc":"4503:3:87","nodeType":"YulIdentifier","src":"4503:3:87"},"nativeSrc":"4503:32:87","nodeType":"YulFunctionCall","src":"4503:32:87"}],"functionName":{"name":"mstore","nativeSrc":"4485:6:87","nodeType":"YulIdentifier","src":"4485:6:87"},"nativeSrc":"4485:51:87","nodeType":"YulFunctionCall","src":"4485:51:87"},"nativeSrc":"4485:51:87","nodeType":"YulExpressionStatement","src":"4485:51:87"},{"expression":{"arguments":[{"arguments":[{"name":"headStart","nativeSrc":"4556:9:87","nodeType":"YulIdentifier","src":"4556:9:87"},{"kind":"number","nativeSrc":"4567:2:87","nodeType":"YulLiteral","src":"4567:2:87","type":"","value":"32"}],"functionName":{"name":"add","nativeSrc":"4552:3:87","nodeType":"YulIdentifier","src":"4552:3:87"},"nativeSrc":"4552:18:87","nodeType":"YulFunctionCall","src":"4552:18:87"},{"name":"value1","nativeSrc":"4572:6:87","nodeType":"YulIdentifier","src":"4572:6:87"}],"functionName":{"name":"mstore","nativeSrc":"4545:6:87","nodeType":"YulIdentifier","src":"4545:6:87"},"nativeSrc":"4545:34:87","nodeType":"YulFunctionCall","src":"4545:34:87"},"nativeSrc":"4545:34:87","nodeType":"YulExpressionStatement","src":"4545:34:87"}]},"name":"abi_encode_tuple_t_address_t_uint256__to_t_address_t_uint256__fromStack_reversed","nativeSrc":"4311:274:87","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nativeSrc":"4401:9:87","nodeType":"YulTypedName","src":"4401:9:87","type":""},{"name":"value1","nativeSrc":"4412:6:87","nodeType":"YulTypedName","src":"4412:6:87","type":""},{"name":"value0","nativeSrc":"4420:6:87","nodeType":"YulTypedName","src":"4420:6:87","type":""}],"returnVariables":[{"name":"tail","nativeSrc":"4431:4:87","nodeType":"YulTypedName","src":"4431:4:87","type":""}],"src":"4311:274:87"},{"body":{"nativeSrc":"4668:167:87","nodeType":"YulBlock","src":"4668:167:87","statements":[{"body":{"nativeSrc":"4714:16:87","nodeType":"YulBlock","src":"4714:16:87","statements":[{"expression":{"arguments":[{"kind":"number","nativeSrc":"4723:1:87","nodeType":"YulLiteral","src":"4723:1:87","type":"","value":"0"},{"kind":"number","nativeSrc":"4726:1:87","nodeType":"YulLiteral","src":"4726:1:87","type":"","value":"0"}],"functionName":{"name":"revert","nativeSrc":"4716:6:87","nodeType":"YulIdentifier","src":"4716:6:87"},"nativeSrc":"4716:12:87","nodeType":"YulFunctionCall","src":"4716:12:87"},"nativeSrc":"4716:12:87","nodeType":"YulExpressionStatement","src":"4716:12:87"}]},"condition":{"arguments":[{"arguments":[{"name":"dataEnd","nativeSrc":"4689:7:87","nodeType":"YulIdentifier","src":"4689:7:87"},{"name":"headStart","nativeSrc":"4698:9:87","nodeType":"YulIdentifier","src":"4698:9:87"}],"functionName":{"name":"sub","nativeSrc":"4685:3:87","nodeType":"YulIdentifier","src":"4685:3:87"},"nativeSrc":"4685:23:87","nodeType":"YulFunctionCall","src":"4685:23:87"},{"kind":"number","nativeSrc":"4710:2:87","nodeType":"YulLiteral","src":"4710:2:87","type":"","value":"32"}],"functionName":{"name":"slt","nativeSrc":"4681:3:87","nodeType":"YulIdentifier","src":"4681:3:87"},"nativeSrc":"4681:32:87","nodeType":"YulFunctionCall","src":"4681:32:87"},"nativeSrc":"4678:52:87","nodeType":"YulIf","src":"4678:52:87"},{"nativeSrc":"4739:29:87","nodeType":"YulVariableDeclaration","src":"4739:29:87","value":{"arguments":[{"name":"headStart","nativeSrc":"4758:9:87","nodeType":"YulIdentifier","src":"4758:9:87"}],"functionName":{"name":"mload","nativeSrc":"4752:5:87","nodeType":"YulIdentifier","src":"4752:5:87"},"nativeSrc":"4752:16:87","nodeType":"YulFunctionCall","src":"4752:16:87"},"variables":[{"name":"value","nativeSrc":"4743:5:87","nodeType":"YulTypedName","src":"4743:5:87","type":""}]},{"expression":{"arguments":[{"name":"value","nativeSrc":"4799:5:87","nodeType":"YulIdentifier","src":"4799:5:87"}],"functionName":{"name":"validator_revert_bool","nativeSrc":"4777:21:87","nodeType":"YulIdentifier","src":"4777:21:87"},"nativeSrc":"4777:28:87","nodeType":"YulFunctionCall","src":"4777:28:87"},"nativeSrc":"4777:28:87","nodeType":"YulExpressionStatement","src":"4777:28:87"},{"nativeSrc":"4814:15:87","nodeType":"YulAssignment","src":"4814:15:87","value":{"name":"value","nativeSrc":"4824:5:87","nodeType":"YulIdentifier","src":"4824:5:87"},"variableNames":[{"name":"value0","nativeSrc":"4814:6:87","nodeType":"YulIdentifier","src":"4814:6:87"}]}]},"name":"abi_decode_tuple_t_bool_fromMemory","nativeSrc":"4590:245:87","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nativeSrc":"4634:9:87","nodeType":"YulTypedName","src":"4634:9:87","type":""},{"name":"dataEnd","nativeSrc":"4645:7:87","nodeType":"YulTypedName","src":"4645:7:87","type":""}],"returnVariables":[{"name":"value0","nativeSrc":"4657:6:87","nodeType":"YulTypedName","src":"4657:6:87","type":""}],"src":"4590:245:87"},{"body":{"nativeSrc":"4969:145:87","nodeType":"YulBlock","src":"4969:145:87","statements":[{"nativeSrc":"4979:26:87","nodeType":"YulAssignment","src":"4979:26:87","value":{"arguments":[{"name":"headStart","nativeSrc":"4991:9:87","nodeType":"YulIdentifier","src":"4991:9:87"},{"kind":"number","nativeSrc":"5002:2:87","nodeType":"YulLiteral","src":"5002:2:87","type":"","value":"64"}],"functionName":{"name":"add","nativeSrc":"4987:3:87","nodeType":"YulIdentifier","src":"4987:3:87"},"nativeSrc":"4987:18:87","nodeType":"YulFunctionCall","src":"4987:18:87"},"variableNames":[{"name":"tail","nativeSrc":"4979:4:87","nodeType":"YulIdentifier","src":"4979:4:87"}]},{"expression":{"arguments":[{"name":"headStart","nativeSrc":"5021:9:87","nodeType":"YulIdentifier","src":"5021:9:87"},{"name":"value0","nativeSrc":"5032:6:87","nodeType":"YulIdentifier","src":"5032:6:87"}],"functionName":{"name":"mstore","nativeSrc":"5014:6:87","nodeType":"YulIdentifier","src":"5014:6:87"},"nativeSrc":"5014:25:87","nodeType":"YulFunctionCall","src":"5014:25:87"},"nativeSrc":"5014:25:87","nodeType":"YulExpressionStatement","src":"5014:25:87"},{"expression":{"arguments":[{"arguments":[{"name":"headStart","nativeSrc":"5059:9:87","nodeType":"YulIdentifier","src":"5059:9:87"},{"kind":"number","nativeSrc":"5070:2:87","nodeType":"YulLiteral","src":"5070:2:87","type":"","value":"32"}],"functionName":{"name":"add","nativeSrc":"5055:3:87","nodeType":"YulIdentifier","src":"5055:3:87"},"nativeSrc":"5055:18:87","nodeType":"YulFunctionCall","src":"5055:18:87"},{"arguments":[{"name":"value1","nativeSrc":"5079:6:87","nodeType":"YulIdentifier","src":"5079:6:87"},{"arguments":[{"arguments":[{"kind":"number","nativeSrc":"5095:3:87","nodeType":"YulLiteral","src":"5095:3:87","type":"","value":"160"},{"kind":"number","nativeSrc":"5100:1:87","nodeType":"YulLiteral","src":"5100:1:87","type":"","value":"1"}],"functionName":{"name":"shl","nativeSrc":"5091:3:87","nodeType":"YulIdentifier","src":"5091:3:87"},"nativeSrc":"5091:11:87","nodeType":"YulFunctionCall","src":"5091:11:87"},{"kind":"number","nativeSrc":"5104:1:87","nodeType":"YulLiteral","src":"5104:1:87","type":"","value":"1"}],"functionName":{"name":"sub","nativeSrc":"5087:3:87","nodeType":"YulIdentifier","src":"5087:3:87"},"nativeSrc":"5087:19:87","nodeType":"YulFunctionCall","src":"5087:19:87"}],"functionName":{"name":"and","nativeSrc":"5075:3:87","nodeType":"YulIdentifier","src":"5075:3:87"},"nativeSrc":"5075:32:87","nodeType":"YulFunctionCall","src":"5075:32:87"}],"functionName":{"name":"mstore","nativeSrc":"5048:6:87","nodeType":"YulIdentifier","src":"5048:6:87"},"nativeSrc":"5048:60:87","nodeType":"YulFunctionCall","src":"5048:60:87"},"nativeSrc":"5048:60:87","nodeType":"YulExpressionStatement","src":"5048:60:87"}]},"name":"abi_encode_tuple_t_uint256_t_address__to_t_uint256_t_address__fromStack_reversed","nativeSrc":"4840:274:87","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nativeSrc":"4930:9:87","nodeType":"YulTypedName","src":"4930:9:87","type":""},{"name":"value1","nativeSrc":"4941:6:87","nodeType":"YulTypedName","src":"4941:6:87","type":""},{"name":"value0","nativeSrc":"4949:6:87","nodeType":"YulTypedName","src":"4949:6:87","type":""}],"returnVariables":[{"name":"tail","nativeSrc":"4960:4:87","nodeType":"YulTypedName","src":"4960:4:87","type":""}],"src":"4840:274:87"},{"body":{"nativeSrc":"5199:208:87","nodeType":"YulBlock","src":"5199:208:87","statements":[{"body":{"nativeSrc":"5245:16:87","nodeType":"YulBlock","src":"5245:16:87","statements":[{"expression":{"arguments":[{"kind":"number","nativeSrc":"5254:1:87","nodeType":"YulLiteral","src":"5254:1:87","type":"","value":"0"},{"kind":"number","nativeSrc":"5257:1:87","nodeType":"YulLiteral","src":"5257:1:87","type":"","value":"0"}],"functionName":{"name":"revert","nativeSrc":"5247:6:87","nodeType":"YulIdentifier","src":"5247:6:87"},"nativeSrc":"5247:12:87","nodeType":"YulFunctionCall","src":"5247:12:87"},"nativeSrc":"5247:12:87","nodeType":"YulExpressionStatement","src":"5247:12:87"}]},"condition":{"arguments":[{"arguments":[{"name":"dataEnd","nativeSrc":"5220:7:87","nodeType":"YulIdentifier","src":"5220:7:87"},{"name":"headStart","nativeSrc":"5229:9:87","nodeType":"YulIdentifier","src":"5229:9:87"}],"functionName":{"name":"sub","nativeSrc":"5216:3:87","nodeType":"YulIdentifier","src":"5216:3:87"},"nativeSrc":"5216:23:87","nodeType":"YulFunctionCall","src":"5216:23:87"},{"kind":"number","nativeSrc":"5241:2:87","nodeType":"YulLiteral","src":"5241:2:87","type":"","value":"32"}],"functionName":{"name":"slt","nativeSrc":"5212:3:87","nodeType":"YulIdentifier","src":"5212:3:87"},"nativeSrc":"5212:32:87","nodeType":"YulFunctionCall","src":"5212:32:87"},"nativeSrc":"5209:52:87","nodeType":"YulIf","src":"5209:52:87"},{"nativeSrc":"5270:29:87","nodeType":"YulVariableDeclaration","src":"5270:29:87","value":{"arguments":[{"name":"headStart","nativeSrc":"5289:9:87","nodeType":"YulIdentifier","src":"5289:9:87"}],"functionName":{"name":"mload","nativeSrc":"5283:5:87","nodeType":"YulIdentifier","src":"5283:5:87"},"nativeSrc":"5283:16:87","nodeType":"YulFunctionCall","src":"5283:16:87"},"variables":[{"name":"value","nativeSrc":"5274:5:87","nodeType":"YulTypedName","src":"5274:5:87","type":""}]},{"body":{"nativeSrc":"5361:16:87","nodeType":"YulBlock","src":"5361:16:87","statements":[{"expression":{"arguments":[{"kind":"number","nativeSrc":"5370:1:87","nodeType":"YulLiteral","src":"5370:1:87","type":"","value":"0"},{"kind":"number","nativeSrc":"5373:1:87","nodeType":"YulLiteral","src":"5373:1:87","type":"","value":"0"}],"functionName":{"name":"revert","nativeSrc":"5363:6:87","nodeType":"YulIdentifier","src":"5363:6:87"},"nativeSrc":"5363:12:87","nodeType":"YulFunctionCall","src":"5363:12:87"},"nativeSrc":"5363:12:87","nodeType":"YulExpressionStatement","src":"5363:12:87"}]},"condition":{"arguments":[{"arguments":[{"name":"value","nativeSrc":"5321:5:87","nodeType":"YulIdentifier","src":"5321:5:87"},{"arguments":[{"name":"value","nativeSrc":"5332:5:87","nodeType":"YulIdentifier","src":"5332:5:87"},{"kind":"number","nativeSrc":"5339:18:87","nodeType":"YulLiteral","src":"5339:18:87","type":"","value":"0xffffffffffffffff"}],"functionName":{"name":"and","nativeSrc":"5328:3:87","nodeType":"YulIdentifier","src":"5328:3:87"},"nativeSrc":"5328:30:87","nodeType":"YulFunctionCall","src":"5328:30:87"}],"functionName":{"name":"eq","nativeSrc":"5318:2:87","nodeType":"YulIdentifier","src":"5318:2:87"},"nativeSrc":"5318:41:87","nodeType":"YulFunctionCall","src":"5318:41:87"}],"functionName":{"name":"iszero","nativeSrc":"5311:6:87","nodeType":"YulIdentifier","src":"5311:6:87"},"nativeSrc":"5311:49:87","nodeType":"YulFunctionCall","src":"5311:49:87"},"nativeSrc":"5308:69:87","nodeType":"YulIf","src":"5308:69:87"},{"nativeSrc":"5386:15:87","nodeType":"YulAssignment","src":"5386:15:87","value":{"name":"value","nativeSrc":"5396:5:87","nodeType":"YulIdentifier","src":"5396:5:87"},"variableNames":[{"name":"value0","nativeSrc":"5386:6:87","nodeType":"YulIdentifier","src":"5386:6:87"}]}]},"name":"abi_decode_tuple_t_uint64_fromMemory","nativeSrc":"5119:288:87","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nativeSrc":"5165:9:87","nodeType":"YulTypedName","src":"5165:9:87","type":""},{"name":"dataEnd","nativeSrc":"5176:7:87","nodeType":"YulTypedName","src":"5176:7:87","type":""}],"returnVariables":[{"name":"value0","nativeSrc":"5188:6:87","nodeType":"YulTypedName","src":"5188:6:87","type":""}],"src":"5119:288:87"},{"body":{"nativeSrc":"5459:241:87","nodeType":"YulBlock","src":"5459:241:87","statements":[{"nativeSrc":"5469:66:87","nodeType":"YulAssignment","src":"5469:66:87","value":{"arguments":[{"arguments":[{"name":"x","nativeSrc":"5484:1:87","nodeType":"YulIdentifier","src":"5484:1:87"},{"kind":"number","nativeSrc":"5487:18:87","nodeType":"YulLiteral","src":"5487:18:87","type":"","value":"0xffffffffffffffff"}],"functionName":{"name":"and","nativeSrc":"5480:3:87","nodeType":"YulIdentifier","src":"5480:3:87"},"nativeSrc":"5480:26:87","nodeType":"YulFunctionCall","src":"5480:26:87"},{"arguments":[{"name":"y","nativeSrc":"5512:1:87","nodeType":"YulIdentifier","src":"5512:1:87"},{"kind":"number","nativeSrc":"5515:18:87","nodeType":"YulLiteral","src":"5515:18:87","type":"","value":"0xffffffffffffffff"}],"functionName":{"name":"and","nativeSrc":"5508:3:87","nodeType":"YulIdentifier","src":"5508:3:87"},"nativeSrc":"5508:26:87","nodeType":"YulFunctionCall","src":"5508:26:87"}],"functionName":{"name":"add","nativeSrc":"5476:3:87","nodeType":"YulIdentifier","src":"5476:3:87"},"nativeSrc":"5476:59:87","nodeType":"YulFunctionCall","src":"5476:59:87"},"variableNames":[{"name":"sum","nativeSrc":"5469:3:87","nodeType":"YulIdentifier","src":"5469:3:87"}]},{"body":{"nativeSrc":"5583:111:87","nodeType":"YulBlock","src":"5583:111:87","statements":[{"expression":{"arguments":[{"kind":"number","nativeSrc":"5604:1:87","nodeType":"YulLiteral","src":"5604:1:87","type":"","value":"0"},{"arguments":[{"kind":"number","nativeSrc":"5611:3:87","nodeType":"YulLiteral","src":"5611:3:87","type":"","value":"224"},{"kind":"number","nativeSrc":"5616:10:87","nodeType":"YulLiteral","src":"5616:10:87","type":"","value":"0x4e487b71"}],"functionName":{"name":"shl","nativeSrc":"5607:3:87","nodeType":"YulIdentifier","src":"5607:3:87"},"nativeSrc":"5607:20:87","nodeType":"YulFunctionCall","src":"5607:20:87"}],"functionName":{"name":"mstore","nativeSrc":"5597:6:87","nodeType":"YulIdentifier","src":"5597:6:87"},"nativeSrc":"5597:31:87","nodeType":"YulFunctionCall","src":"5597:31:87"},"nativeSrc":"5597:31:87","nodeType":"YulExpressionStatement","src":"5597:31:87"},{"expression":{"arguments":[{"kind":"number","nativeSrc":"5648:1:87","nodeType":"YulLiteral","src":"5648:1:87","type":"","value":"4"},{"kind":"number","nativeSrc":"5651:4:87","nodeType":"YulLiteral","src":"5651:4:87","type":"","value":"0x11"}],"functionName":{"name":"mstore","nativeSrc":"5641:6:87","nodeType":"YulIdentifier","src":"5641:6:87"},"nativeSrc":"5641:15:87","nodeType":"YulFunctionCall","src":"5641:15:87"},"nativeSrc":"5641:15:87","nodeType":"YulExpressionStatement","src":"5641:15:87"},{"expression":{"arguments":[{"kind":"number","nativeSrc":"5676:1:87","nodeType":"YulLiteral","src":"5676:1:87","type":"","value":"0"},{"kind":"number","nativeSrc":"5679:4:87","nodeType":"YulLiteral","src":"5679:4:87","type":"","value":"0x24"}],"functionName":{"name":"revert","nativeSrc":"5669:6:87","nodeType":"YulIdentifier","src":"5669:6:87"},"nativeSrc":"5669:15:87","nodeType":"YulFunctionCall","src":"5669:15:87"},"nativeSrc":"5669:15:87","nodeType":"YulExpressionStatement","src":"5669:15:87"}]},"condition":{"arguments":[{"name":"sum","nativeSrc":"5550:3:87","nodeType":"YulIdentifier","src":"5550:3:87"},{"kind":"number","nativeSrc":"5555:18:87","nodeType":"YulLiteral","src":"5555:18:87","type":"","value":"0xffffffffffffffff"}],"functionName":{"name":"gt","nativeSrc":"5547:2:87","nodeType":"YulIdentifier","src":"5547:2:87"},"nativeSrc":"5547:27:87","nodeType":"YulFunctionCall","src":"5547:27:87"},"nativeSrc":"5544:150:87","nodeType":"YulIf","src":"5544:150:87"}]},"name":"checked_add_t_uint64","nativeSrc":"5412:288:87","nodeType":"YulFunctionDefinition","parameters":[{"name":"x","nativeSrc":"5442:1:87","nodeType":"YulTypedName","src":"5442:1:87","type":""},{"name":"y","nativeSrc":"5445:1:87","nodeType":"YulTypedName","src":"5445:1:87","type":""}],"returnVariables":[{"name":"sum","nativeSrc":"5451:3:87","nodeType":"YulTypedName","src":"5451:3:87","type":""}],"src":"5412:288:87"},{"body":{"nativeSrc":"5786:224:87","nodeType":"YulBlock","src":"5786:224:87","statements":[{"body":{"nativeSrc":"5832:16:87","nodeType":"YulBlock","src":"5832:16:87","statements":[{"expression":{"arguments":[{"kind":"number","nativeSrc":"5841:1:87","nodeType":"YulLiteral","src":"5841:1:87","type":"","value":"0"},{"kind":"number","nativeSrc":"5844:1:87","nodeType":"YulLiteral","src":"5844:1:87","type":"","value":"0"}],"functionName":{"name":"revert","nativeSrc":"5834:6:87","nodeType":"YulIdentifier","src":"5834:6:87"},"nativeSrc":"5834:12:87","nodeType":"YulFunctionCall","src":"5834:12:87"},"nativeSrc":"5834:12:87","nodeType":"YulExpressionStatement","src":"5834:12:87"}]},"condition":{"arguments":[{"arguments":[{"name":"dataEnd","nativeSrc":"5807:7:87","nodeType":"YulIdentifier","src":"5807:7:87"},{"name":"headStart","nativeSrc":"5816:9:87","nodeType":"YulIdentifier","src":"5816:9:87"}],"functionName":{"name":"sub","nativeSrc":"5803:3:87","nodeType":"YulIdentifier","src":"5803:3:87"},"nativeSrc":"5803:23:87","nodeType":"YulFunctionCall","src":"5803:23:87"},{"kind":"number","nativeSrc":"5828:2:87","nodeType":"YulLiteral","src":"5828:2:87","type":"","value":"32"}],"functionName":{"name":"slt","nativeSrc":"5799:3:87","nodeType":"YulIdentifier","src":"5799:3:87"},"nativeSrc":"5799:32:87","nodeType":"YulFunctionCall","src":"5799:32:87"},"nativeSrc":"5796:52:87","nodeType":"YulIf","src":"5796:52:87"},{"nativeSrc":"5857:29:87","nodeType":"YulVariableDeclaration","src":"5857:29:87","value":{"arguments":[{"name":"headStart","nativeSrc":"5876:9:87","nodeType":"YulIdentifier","src":"5876:9:87"}],"functionName":{"name":"mload","nativeSrc":"5870:5:87","nodeType":"YulIdentifier","src":"5870:5:87"},"nativeSrc":"5870:16:87","nodeType":"YulFunctionCall","src":"5870:16:87"},"variables":[{"name":"value","nativeSrc":"5861:5:87","nodeType":"YulTypedName","src":"5861:5:87","type":""}]},{"body":{"nativeSrc":"5964:16:87","nodeType":"YulBlock","src":"5964:16:87","statements":[{"expression":{"arguments":[{"kind":"number","nativeSrc":"5973:1:87","nodeType":"YulLiteral","src":"5973:1:87","type":"","value":"0"},{"kind":"number","nativeSrc":"5976:1:87","nodeType":"YulLiteral","src":"5976:1:87","type":"","value":"0"}],"functionName":{"name":"revert","nativeSrc":"5966:6:87","nodeType":"YulIdentifier","src":"5966:6:87"},"nativeSrc":"5966:12:87","nodeType":"YulFunctionCall","src":"5966:12:87"},"nativeSrc":"5966:12:87","nodeType":"YulExpressionStatement","src":"5966:12:87"}]},"condition":{"arguments":[{"arguments":[{"name":"value","nativeSrc":"5908:5:87","nodeType":"YulIdentifier","src":"5908:5:87"},{"arguments":[{"name":"value","nativeSrc":"5919:5:87","nodeType":"YulIdentifier","src":"5919:5:87"},{"kind":"number","nativeSrc":"5926:34:87","nodeType":"YulLiteral","src":"5926:34:87","type":"","value":"0xffffffffffffffffffffffffffffffff"}],"functionName":{"name":"and","nativeSrc":"5915:3:87","nodeType":"YulIdentifier","src":"5915:3:87"},"nativeSrc":"5915:46:87","nodeType":"YulFunctionCall","src":"5915:46:87"}],"functionName":{"name":"eq","nativeSrc":"5905:2:87","nodeType":"YulIdentifier","src":"5905:2:87"},"nativeSrc":"5905:57:87","nodeType":"YulFunctionCall","src":"5905:57:87"}],"functionName":{"name":"iszero","nativeSrc":"5898:6:87","nodeType":"YulIdentifier","src":"5898:6:87"},"nativeSrc":"5898:65:87","nodeType":"YulFunctionCall","src":"5898:65:87"},"nativeSrc":"5895:85:87","nodeType":"YulIf","src":"5895:85:87"},{"nativeSrc":"5989:15:87","nodeType":"YulAssignment","src":"5989:15:87","value":{"name":"value","nativeSrc":"5999:5:87","nodeType":"YulIdentifier","src":"5999:5:87"},"variableNames":[{"name":"value0","nativeSrc":"5989:6:87","nodeType":"YulIdentifier","src":"5989:6:87"}]}]},"name":"abi_decode_tuple_t_uint128_fromMemory","nativeSrc":"5705:305:87","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nativeSrc":"5752:9:87","nodeType":"YulTypedName","src":"5752:9:87","type":""},{"name":"dataEnd","nativeSrc":"5763:7:87","nodeType":"YulTypedName","src":"5763:7:87","type":""}],"returnVariables":[{"name":"value0","nativeSrc":"5775:6:87","nodeType":"YulTypedName","src":"5775:6:87","type":""}],"src":"5705:305:87"},{"body":{"nativeSrc":"6047:95:87","nodeType":"YulBlock","src":"6047:95:87","statements":[{"expression":{"arguments":[{"kind":"number","nativeSrc":"6064:1:87","nodeType":"YulLiteral","src":"6064:1:87","type":"","value":"0"},{"arguments":[{"kind":"number","nativeSrc":"6071:3:87","nodeType":"YulLiteral","src":"6071:3:87","type":"","value":"224"},{"kind":"number","nativeSrc":"6076:10:87","nodeType":"YulLiteral","src":"6076:10:87","type":"","value":"0x4e487b71"}],"functionName":{"name":"shl","nativeSrc":"6067:3:87","nodeType":"YulIdentifier","src":"6067:3:87"},"nativeSrc":"6067:20:87","nodeType":"YulFunctionCall","src":"6067:20:87"}],"functionName":{"name":"mstore","nativeSrc":"6057:6:87","nodeType":"YulIdentifier","src":"6057:6:87"},"nativeSrc":"6057:31:87","nodeType":"YulFunctionCall","src":"6057:31:87"},"nativeSrc":"6057:31:87","nodeType":"YulExpressionStatement","src":"6057:31:87"},{"expression":{"arguments":[{"kind":"number","nativeSrc":"6104:1:87","nodeType":"YulLiteral","src":"6104:1:87","type":"","value":"4"},{"kind":"number","nativeSrc":"6107:4:87","nodeType":"YulLiteral","src":"6107:4:87","type":"","value":"0x12"}],"functionName":{"name":"mstore","nativeSrc":"6097:6:87","nodeType":"YulIdentifier","src":"6097:6:87"},"nativeSrc":"6097:15:87","nodeType":"YulFunctionCall","src":"6097:15:87"},"nativeSrc":"6097:15:87","nodeType":"YulExpressionStatement","src":"6097:15:87"},{"expression":{"arguments":[{"kind":"number","nativeSrc":"6128:1:87","nodeType":"YulLiteral","src":"6128:1:87","type":"","value":"0"},{"kind":"number","nativeSrc":"6131:4:87","nodeType":"YulLiteral","src":"6131:4:87","type":"","value":"0x24"}],"functionName":{"name":"revert","nativeSrc":"6121:6:87","nodeType":"YulIdentifier","src":"6121:6:87"},"nativeSrc":"6121:15:87","nodeType":"YulFunctionCall","src":"6121:15:87"},"nativeSrc":"6121:15:87","nodeType":"YulExpressionStatement","src":"6121:15:87"}]},"name":"panic_error_0x12","nativeSrc":"6015:127:87","nodeType":"YulFunctionDefinition","src":"6015:127:87"}]},"contents":"{\n    { }\n    function panic_error_0x41()\n    {\n        mstore(0, shl(224, 0x4e487b71))\n        mstore(4, 0x41)\n        revert(0, 0x24)\n    }\n    function abi_decode_bytes(offset, end) -> array\n    {\n        if iszero(slt(add(offset, 0x1f), end)) { revert(0, 0) }\n        let length := calldataload(offset)\n        if gt(length, 0xffffffffffffffff) { panic_error_0x41() }\n        let memPtr := mload(64)\n        let newFreePtr := add(memPtr, and(add(and(add(length, 0x1f), not(31)), 63), not(31)))\n        if or(gt(newFreePtr, 0xffffffffffffffff), lt(newFreePtr, memPtr)) { panic_error_0x41() }\n        mstore(64, newFreePtr)\n        mstore(memPtr, length)\n        if gt(add(add(offset, length), 0x20), end) { revert(0, 0) }\n        calldatacopy(add(memPtr, 0x20), add(offset, 0x20), length)\n        mstore(add(add(memPtr, length), 0x20), 0)\n        array := memPtr\n    }\n    function abi_decode_tuple_t_uint8t_bytes_memory_ptr(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, 0xff))) { revert(0, 0) }\n        value0 := value\n        let offset := calldataload(add(headStart, 32))\n        if gt(offset, 0xffffffffffffffff) { revert(0, 0) }\n        value1 := abi_decode_bytes(add(headStart, offset), dataEnd)\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        let length := mload(value0)\n        mstore(add(headStart, 32), length)\n        mcopy(add(headStart, 64), add(value0, 32), length)\n        mstore(add(add(headStart, length), 64), 0)\n        tail := add(add(headStart, and(add(length, 31), not(31))), 64)\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_address(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, sub(shl(160, 1), 1)))) { revert(0, 0) }\n        value0 := value\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_bool(value)\n    {\n        if iszero(eq(value, iszero(iszero(value)))) { revert(0, 0) }\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_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_address__to_t_address__fromStack_reversed(headStart, value0) -> tail\n    {\n        tail := add(headStart, 32)\n        mstore(headStart, and(value0, sub(shl(160, 1), 1)))\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        if gt(offset, 0xffffffffffffffff) { revert(0, 0) }\n        value0 := abi_decode_bytes(add(headStart, offset), dataEnd)\n    }\n    function abi_encode_tuple_t_contract$_IERC4626_$7127__to_t_address__fromStack_reversed(headStart, value0) -> tail\n    {\n        tail := add(headStart, 32)\n        mstore(headStart, and(value0, sub(shl(160, 1), 1)))\n    }\n    function abi_encode_tuple_t_uint256_t_address_t_address__to_t_uint256_t_address_t_address__fromStack_reversed(headStart, value2, value1, value0) -> tail\n    {\n        tail := add(headStart, 96)\n        mstore(headStart, value0)\n        mstore(add(headStart, 32), and(value1, sub(shl(160, 1), 1)))\n        mstore(add(headStart, 64), and(value2, sub(shl(160, 1), 1)))\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_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, sub(shl(160, 1), 1)))\n        mstore(add(headStart, 32), value1)\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_encode_tuple_t_uint256_t_address__to_t_uint256_t_address__fromStack_reversed(headStart, value1, value0) -> tail\n    {\n        tail := add(headStart, 64)\n        mstore(headStart, value0)\n        mstore(add(headStart, 32), and(value1, sub(shl(160, 1), 1)))\n    }\n    function abi_decode_tuple_t_uint64_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, 0xffffffffffffffff))) { revert(0, 0) }\n        value0 := value\n    }\n    function checked_add_t_uint64(x, y) -> sum\n    {\n        sum := add(and(x, 0xffffffffffffffff), and(y, 0xffffffffffffffff))\n        if gt(sum, 0xffffffffffffffff)\n        {\n            mstore(0, shl(224, 0x4e487b71))\n            mstore(4, 0x11)\n            revert(0, 0x24)\n        }\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, 0xffffffffffffffffffffffffffffffff))) { revert(0, 0) }\n        value0 := value\n    }\n    function panic_error_0x12()\n    {\n        mstore(0, shl(224, 0x4e487b71))\n        mstore(4, 0x12)\n        revert(0, 0x24)\n    }\n}","id":87,"language":"Yul","name":"#utility.yul"}],"immutableReferences":{"22970":[{"length":32,"start":525},{"length":32,"start":598},{"length":32,"start":825},{"length":32,"start":1077},{"length":32,"start":1182}],"22976":[{"length":32,"start":290}],"22979":[{"length":32,"start":458},{"length":32,"start":696},{"length":32,"start":918},{"length":32,"start":1268},{"length":32,"start":1450},{"length":32,"start":1556},{"length":32,"start":1681}],"22982":[{"length":32,"start":341},{"length":32,"start":1315}]},"linkReferences":{},"object":"608060405234801561000f575f5ffd5b50600436106100a6575f3560e01c80639c4667a21161006e5780639c4667a2146101445780639cd471281461018f578063b6b55f25146101a2578063ce96cb77146101b5578063de2a87b5146101c8578063f3e0ffbf146101ee575f5ffd5b80630981b1c2146100aa5780632e1a7d4d146100d3578063402d267d146100e85780635a1174561461010a5780635b9a4c351461011d575b5f5ffd5b6100bd6100b8366004610a05565b610201565b6040516100ca9190610a57565b60405180910390f35b6100e66100e1366004610a8c565b61024c565b005b6100fc6100f6366004610aa3565b505f1990565b6040519081526020016100ca565b6100e6610118366004610ad6565b61032f565b6100fc7f000000000000000000000000000000000000000000000000000000000000000081565b610177610152366004610aa3565b507f000000000000000000000000000000000000000000000000000000000000000090565b6040516001600160a01b0390911681526020016100ca565b6100e661019d366004610af1565b61042b565b6100e66101b0366004610a8c565b610494565b6100fc6101c3366004610aa3565b6105e1565b7f0000000000000000000000000000000000000000000000000000000000000000610177565b6100fc6101fc366004610aa3565b6105f1565b60606001600160a01b037f00000000000000000000000000000000000000000000000000000000000000001630036100a657604051632abf118b60e21b815260040160405180910390fd5b6001600160a01b037f000000000000000000000000000000000000000000000000000000000000000016300361029557604051632abf118b60e21b815260040160405180910390fd5b604051632d182be560e21b815260048101829052306024820181905260448201527f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03169063b460af94906064015b6020604051808303815f875af1158015610307573d5f5f3e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061032b9190610b2b565b5050565b6001600160a01b037f000000000000000000000000000000000000000000000000000000000000000016300361037857604051632abf118b60e21b815260040160405180910390fd5b8015801561040a57506040516370a0823160e01b81523060048201527f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316906370a0823190602401602060405180830381865afa1580156103e3573d5f5f3e3d5ffd5b505050506040513d601f19601f820116820180604052508101906104079190610b2b565b15155b15610428576040516342a176d160e11b815260040160405180910390fd5b50565b6001600160a01b037f000000000000000000000000000000000000000000000000000000000000000016300361047457604051632abf118b60e21b815260040160405180910390fd5b805115610428576040516350701b6160e01b815260040160405180910390fd5b6001600160a01b037f00000000000000000000000000000000000000000000000000000000000000001630036104dd57604051632abf118b60e21b815260040160405180910390fd5b60405163095ea7b360e01b81526001600160a01b037f000000000000000000000000000000000000000000000000000000000000000081166004830152602482018390527f0000000000000000000000000000000000000000000000000000000000000000169063095ea7b3906044016020604051808303815f875af1158015610569573d5f5f3e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061058d9190610b42565b50604051636e553f6560e01b8152600481018290523060248201527f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031690636e553f65906044016102eb565b5f6105eb826105f1565b92915050565b6040516370a0823160e01b81526001600160a01b0382811660048301525f9182917f000000000000000000000000000000000000000000000000000000000000000016906370a0823190602401602060405180830381865afa158015610659573d5f5f3e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061067d9190610b2b565b9050805f0361068e57505f92915050565b5f7f000000000000000000000000000000000000000000000000000000000000000090505f816001600160a01b031663c04637116040518163ffffffff1660e01b8152600401602060405180830381865afa1580156106ef573d5f5f3e3d5ffd5b505050506040513d601f19601f820116820180604052508101906107139190610b5d565b9050426107236201518083610b84565b67ffffffffffffffff1610156107a35760405163266d6a8360e11b8152600481018490526001600160a01b03831690634cdad50690602401602060405180830381865afa158015610776573d5f5f3e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061079a9190610b2b565b95945050505050565b5f826001600160a01b031663ce04bebb6040518163ffffffff1660e01b8152600401602060405180830381865afa1580156107e0573d5f5f3e3d5ffd5b505050506040513d601f19601f820116820180604052508101906108049190610bb0565b6001600160801b031690505f836001600160a01b03166318160ddd6040518163ffffffff1660e01b8152600401602060405180830381865afa15801561084c573d5f5f3e3d5ffd5b505050506040513d601f19601f820116820180604052508101906108709190610b2b565b905061087d828683610888565b979650505050505050565b5f5f5f6108958686610939565b91509150815f036108b9578381816108af576108af610bd6565b0492505050610932565b8184116108d0576108d06003851502601118610955565b5f848688095f868103871696879004966002600389028118808a02820302808a02820302808a02820302808a02820302808a02820302808a02909103029181900381900460010185841190960395909502919093039390930492909217029150505b9392505050565b5f805f1983850993909202808410938190039390930393915050565b634e487b715f52806020526024601cfd5b634e487b7160e01b5f52604160045260245ffd5b5f82601f830112610989575f5ffd5b813567ffffffffffffffff8111156109a3576109a3610966565b604051601f8201601f19908116603f0116810167ffffffffffffffff811182821017156109d2576109d2610966565b6040528181528382016020018510156109e9575f5ffd5b816020850160208301375f918101602001919091529392505050565b5f5f60408385031215610a16575f5ffd5b823560ff81168114610a26575f5ffd5b9150602083013567ffffffffffffffff811115610a41575f5ffd5b610a4d8582860161097a565b9150509250929050565b602081525f82518060208401528060208501604085015e5f604082850101526040601f19601f83011684010191505092915050565b5f60208284031215610a9c575f5ffd5b5035919050565b5f60208284031215610ab3575f5ffd5b81356001600160a01b0381168114610932575f5ffd5b8015158114610428575f5ffd5b5f60208284031215610ae6575f5ffd5b813561093281610ac9565b5f60208284031215610b01575f5ffd5b813567ffffffffffffffff811115610b17575f5ffd5b610b238482850161097a565b949350505050565b5f60208284031215610b3b575f5ffd5b5051919050565b5f60208284031215610b52575f5ffd5b815161093281610ac9565b5f60208284031215610b6d575f5ffd5b815167ffffffffffffffff81168114610932575f5ffd5b67ffffffffffffffff81811683821601908111156105eb57634e487b7160e01b5f52601160045260245ffd5b5f60208284031215610bc0575f5ffd5b81516001600160801b0381168114610932575f5ffd5b634e487b7160e01b5f52601260045260245ffdfea2646970667358221220b4b0df43d7d49945f418e15cd1c11d67cf53f400c66c3ced1ec1b7822b7a754364736f6c634300081e0033","opcodes":"PUSH1 0x80 PUSH1 0x40 MSTORE CALLVALUE DUP1 ISZERO PUSH2 0xF JUMPI PUSH0 PUSH0 REVERT JUMPDEST POP PUSH1 0x4 CALLDATASIZE LT PUSH2 0xA6 JUMPI PUSH0 CALLDATALOAD PUSH1 0xE0 SHR DUP1 PUSH4 0x9C4667A2 GT PUSH2 0x6E JUMPI DUP1 PUSH4 0x9C4667A2 EQ PUSH2 0x144 JUMPI DUP1 PUSH4 0x9CD47128 EQ PUSH2 0x18F JUMPI DUP1 PUSH4 0xB6B55F25 EQ PUSH2 0x1A2 JUMPI DUP1 PUSH4 0xCE96CB77 EQ PUSH2 0x1B5 JUMPI DUP1 PUSH4 0xDE2A87B5 EQ PUSH2 0x1C8 JUMPI DUP1 PUSH4 0xF3E0FFBF EQ PUSH2 0x1EE JUMPI PUSH0 PUSH0 REVERT JUMPDEST DUP1 PUSH4 0x981B1C2 EQ PUSH2 0xAA JUMPI DUP1 PUSH4 0x2E1A7D4D EQ PUSH2 0xD3 JUMPI DUP1 PUSH4 0x402D267D EQ PUSH2 0xE8 JUMPI DUP1 PUSH4 0x5A117456 EQ PUSH2 0x10A JUMPI DUP1 PUSH4 0x5B9A4C35 EQ PUSH2 0x11D JUMPI JUMPDEST PUSH0 PUSH0 REVERT JUMPDEST PUSH2 0xBD PUSH2 0xB8 CALLDATASIZE PUSH1 0x4 PUSH2 0xA05 JUMP JUMPDEST PUSH2 0x201 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0xCA SWAP2 SWAP1 PUSH2 0xA57 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST PUSH2 0xE6 PUSH2 0xE1 CALLDATASIZE PUSH1 0x4 PUSH2 0xA8C JUMP JUMPDEST PUSH2 0x24C JUMP JUMPDEST STOP JUMPDEST PUSH2 0xFC PUSH2 0xF6 CALLDATASIZE PUSH1 0x4 PUSH2 0xAA3 JUMP JUMPDEST POP PUSH0 NOT SWAP1 JUMP JUMPDEST PUSH1 0x40 MLOAD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH2 0xCA JUMP JUMPDEST PUSH2 0xE6 PUSH2 0x118 CALLDATASIZE PUSH1 0x4 PUSH2 0xAD6 JUMP JUMPDEST PUSH2 0x32F JUMP JUMPDEST PUSH2 0xFC PUSH32 0x0 DUP2 JUMP JUMPDEST PUSH2 0x177 PUSH2 0x152 CALLDATASIZE PUSH1 0x4 PUSH2 0xAA3 JUMP JUMPDEST POP PUSH32 0x0 SWAP1 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP1 SWAP2 AND DUP2 MSTORE PUSH1 0x20 ADD PUSH2 0xCA JUMP JUMPDEST PUSH2 0xE6 PUSH2 0x19D CALLDATASIZE PUSH1 0x4 PUSH2 0xAF1 JUMP JUMPDEST PUSH2 0x42B JUMP JUMPDEST PUSH2 0xE6 PUSH2 0x1B0 CALLDATASIZE PUSH1 0x4 PUSH2 0xA8C JUMP JUMPDEST PUSH2 0x494 JUMP JUMPDEST PUSH2 0xFC PUSH2 0x1C3 CALLDATASIZE PUSH1 0x4 PUSH2 0xAA3 JUMP JUMPDEST PUSH2 0x5E1 JUMP JUMPDEST PUSH32 0x0 PUSH2 0x177 JUMP JUMPDEST PUSH2 0xFC PUSH2 0x1FC CALLDATASIZE PUSH1 0x4 PUSH2 0xAA3 JUMP JUMPDEST PUSH2 0x5F1 JUMP JUMPDEST PUSH1 0x60 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB PUSH32 0x0 AND ADDRESS SUB PUSH2 0xA6 JUMPI PUSH1 0x40 MLOAD PUSH4 0x2ABF118B PUSH1 0xE2 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB PUSH32 0x0 AND ADDRESS SUB PUSH2 0x295 JUMPI PUSH1 0x40 MLOAD PUSH4 0x2ABF118B PUSH1 0xE2 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH1 0x40 MLOAD PUSH4 0x2D182BE5 PUSH1 0xE2 SHL DUP2 MSTORE PUSH1 0x4 DUP2 ADD DUP3 SWAP1 MSTORE ADDRESS PUSH1 0x24 DUP3 ADD DUP2 SWAP1 MSTORE PUSH1 0x44 DUP3 ADD MSTORE PUSH32 0x0 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND SWAP1 PUSH4 0xB460AF94 SWAP1 PUSH1 0x64 ADD JUMPDEST PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 PUSH0 DUP8 GAS CALL ISZERO DUP1 ISZERO PUSH2 0x307 JUMPI RETURNDATASIZE PUSH0 PUSH0 RETURNDATACOPY RETURNDATASIZE PUSH0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP3 ADD DUP1 PUSH1 0x40 MSTORE POP DUP2 ADD SWAP1 PUSH2 0x32B SWAP2 SWAP1 PUSH2 0xB2B JUMP JUMPDEST POP POP JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB PUSH32 0x0 AND ADDRESS SUB PUSH2 0x378 JUMPI PUSH1 0x40 MLOAD PUSH4 0x2ABF118B PUSH1 0xE2 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST DUP1 ISZERO DUP1 ISZERO PUSH2 0x40A JUMPI POP PUSH1 0x40 MLOAD PUSH4 0x70A08231 PUSH1 0xE0 SHL DUP2 MSTORE ADDRESS PUSH1 0x4 DUP3 ADD MSTORE PUSH32 0x0 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND SWAP1 PUSH4 0x70A08231 SWAP1 PUSH1 0x24 ADD PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x3E3 JUMPI RETURNDATASIZE PUSH0 PUSH0 RETURNDATACOPY RETURNDATASIZE PUSH0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP3 ADD DUP1 PUSH1 0x40 MSTORE POP DUP2 ADD SWAP1 PUSH2 0x407 SWAP2 SWAP1 PUSH2 0xB2B JUMP JUMPDEST ISZERO ISZERO JUMPDEST ISZERO PUSH2 0x428 JUMPI PUSH1 0x40 MLOAD PUSH4 0x42A176D1 PUSH1 0xE1 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST POP JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB PUSH32 0x0 AND ADDRESS SUB PUSH2 0x474 JUMPI PUSH1 0x40 MLOAD PUSH4 0x2ABF118B PUSH1 0xE2 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST DUP1 MLOAD ISZERO PUSH2 0x428 JUMPI PUSH1 0x40 MLOAD PUSH4 0x50701B61 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 PUSH32 0x0 AND ADDRESS SUB PUSH2 0x4DD JUMPI PUSH1 0x40 MLOAD PUSH4 0x2ABF118B PUSH1 0xE2 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH1 0x40 MLOAD PUSH4 0x95EA7B3 PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB PUSH32 0x0 DUP2 AND PUSH1 0x4 DUP4 ADD MSTORE PUSH1 0x24 DUP3 ADD DUP4 SWAP1 MSTORE PUSH32 0x0 AND SWAP1 PUSH4 0x95EA7B3 SWAP1 PUSH1 0x44 ADD PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 PUSH0 DUP8 GAS CALL ISZERO DUP1 ISZERO PUSH2 0x569 JUMPI RETURNDATASIZE PUSH0 PUSH0 RETURNDATACOPY RETURNDATASIZE PUSH0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP3 ADD DUP1 PUSH1 0x40 MSTORE POP DUP2 ADD SWAP1 PUSH2 0x58D SWAP2 SWAP1 PUSH2 0xB42 JUMP JUMPDEST POP PUSH1 0x40 MLOAD PUSH4 0x6E553F65 PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 DUP2 ADD DUP3 SWAP1 MSTORE ADDRESS PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x0 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND SWAP1 PUSH4 0x6E553F65 SWAP1 PUSH1 0x44 ADD PUSH2 0x2EB JUMP JUMPDEST PUSH0 PUSH2 0x5EB DUP3 PUSH2 0x5F1 JUMP JUMPDEST SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH4 0x70A08231 PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP3 DUP2 AND PUSH1 0x4 DUP4 ADD MSTORE PUSH0 SWAP2 DUP3 SWAP2 PUSH32 0x0 AND SWAP1 PUSH4 0x70A08231 SWAP1 PUSH1 0x24 ADD PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x659 JUMPI RETURNDATASIZE PUSH0 PUSH0 RETURNDATACOPY RETURNDATASIZE PUSH0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP3 ADD DUP1 PUSH1 0x40 MSTORE POP DUP2 ADD SWAP1 PUSH2 0x67D SWAP2 SWAP1 PUSH2 0xB2B JUMP JUMPDEST SWAP1 POP DUP1 PUSH0 SUB PUSH2 0x68E JUMPI POP PUSH0 SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH0 PUSH32 0x0 SWAP1 POP PUSH0 DUP2 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH4 0xC0463711 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 GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x6EF JUMPI RETURNDATASIZE PUSH0 PUSH0 RETURNDATACOPY RETURNDATASIZE PUSH0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP3 ADD DUP1 PUSH1 0x40 MSTORE POP DUP2 ADD SWAP1 PUSH2 0x713 SWAP2 SWAP1 PUSH2 0xB5D JUMP JUMPDEST SWAP1 POP TIMESTAMP PUSH2 0x723 PUSH3 0x15180 DUP4 PUSH2 0xB84 JUMP JUMPDEST PUSH8 0xFFFFFFFFFFFFFFFF AND LT ISZERO PUSH2 0x7A3 JUMPI PUSH1 0x40 MLOAD PUSH4 0x266D6A83 PUSH1 0xE1 SHL DUP2 MSTORE PUSH1 0x4 DUP2 ADD DUP5 SWAP1 MSTORE PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP4 AND SWAP1 PUSH4 0x4CDAD506 SWAP1 PUSH1 0x24 ADD PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x776 JUMPI RETURNDATASIZE PUSH0 PUSH0 RETURNDATACOPY RETURNDATASIZE PUSH0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP3 ADD DUP1 PUSH1 0x40 MSTORE POP DUP2 ADD SWAP1 PUSH2 0x79A SWAP2 SWAP1 PUSH2 0xB2B JUMP JUMPDEST SWAP6 SWAP5 POP POP POP POP POP JUMP JUMPDEST PUSH0 DUP3 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH4 0xCE04BEBB 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 GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x7E0 JUMPI RETURNDATASIZE PUSH0 PUSH0 RETURNDATACOPY RETURNDATASIZE PUSH0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP3 ADD DUP1 PUSH1 0x40 MSTORE POP DUP2 ADD SWAP1 PUSH2 0x804 SWAP2 SWAP1 PUSH2 0xBB0 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0x80 SHL SUB AND SWAP1 POP PUSH0 DUP4 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB 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 GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x84C JUMPI RETURNDATASIZE PUSH0 PUSH0 RETURNDATACOPY RETURNDATASIZE PUSH0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP3 ADD DUP1 PUSH1 0x40 MSTORE POP DUP2 ADD SWAP1 PUSH2 0x870 SWAP2 SWAP1 PUSH2 0xB2B JUMP JUMPDEST SWAP1 POP PUSH2 0x87D DUP3 DUP7 DUP4 PUSH2 0x888 JUMP JUMPDEST SWAP8 SWAP7 POP POP POP POP POP POP POP JUMP JUMPDEST PUSH0 PUSH0 PUSH0 PUSH2 0x895 DUP7 DUP7 PUSH2 0x939 JUMP JUMPDEST SWAP2 POP SWAP2 POP DUP2 PUSH0 SUB PUSH2 0x8B9 JUMPI DUP4 DUP2 DUP2 PUSH2 0x8AF JUMPI PUSH2 0x8AF PUSH2 0xBD6 JUMP JUMPDEST DIV SWAP3 POP POP POP PUSH2 0x932 JUMP JUMPDEST DUP2 DUP5 GT PUSH2 0x8D0 JUMPI PUSH2 0x8D0 PUSH1 0x3 DUP6 ISZERO MUL PUSH1 0x11 XOR PUSH2 0x955 JUMP JUMPDEST PUSH0 DUP5 DUP7 DUP9 MULMOD PUSH0 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 DUP6 DUP5 GT SWAP1 SWAP7 SUB SWAP6 SWAP1 SWAP6 MUL SWAP2 SWAP1 SWAP4 SUB SWAP4 SWAP1 SWAP4 DIV SWAP3 SWAP1 SWAP3 OR MUL SWAP2 POP POP JUMPDEST SWAP4 SWAP3 POP POP POP JUMP JUMPDEST PUSH0 DUP1 PUSH0 NOT DUP4 DUP6 MULMOD SWAP4 SWAP1 SWAP3 MUL DUP1 DUP5 LT SWAP4 DUP2 SWAP1 SUB SWAP4 SWAP1 SWAP4 SUB SWAP4 SWAP2 POP POP JUMP JUMPDEST PUSH4 0x4E487B71 PUSH0 MSTORE DUP1 PUSH1 0x20 MSTORE PUSH1 0x24 PUSH1 0x1C REVERT JUMPDEST PUSH4 0x4E487B71 PUSH1 0xE0 SHL PUSH0 MSTORE PUSH1 0x41 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH0 REVERT JUMPDEST PUSH0 DUP3 PUSH1 0x1F DUP4 ADD SLT PUSH2 0x989 JUMPI PUSH0 PUSH0 REVERT JUMPDEST DUP2 CALLDATALOAD PUSH8 0xFFFFFFFFFFFFFFFF DUP2 GT ISZERO PUSH2 0x9A3 JUMPI PUSH2 0x9A3 PUSH2 0x966 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH1 0x1F DUP3 ADD PUSH1 0x1F NOT SWAP1 DUP2 AND PUSH1 0x3F ADD AND DUP2 ADD PUSH8 0xFFFFFFFFFFFFFFFF DUP2 GT DUP3 DUP3 LT OR ISZERO PUSH2 0x9D2 JUMPI PUSH2 0x9D2 PUSH2 0x966 JUMP JUMPDEST PUSH1 0x40 MSTORE DUP2 DUP2 MSTORE DUP4 DUP3 ADD PUSH1 0x20 ADD DUP6 LT ISZERO PUSH2 0x9E9 JUMPI PUSH0 PUSH0 REVERT JUMPDEST DUP2 PUSH1 0x20 DUP6 ADD PUSH1 0x20 DUP4 ADD CALLDATACOPY PUSH0 SWAP2 DUP2 ADD PUSH1 0x20 ADD SWAP2 SWAP1 SWAP2 MSTORE SWAP4 SWAP3 POP POP POP JUMP JUMPDEST PUSH0 PUSH0 PUSH1 0x40 DUP4 DUP6 SUB SLT ISZERO PUSH2 0xA16 JUMPI PUSH0 PUSH0 REVERT JUMPDEST DUP3 CALLDATALOAD PUSH1 0xFF DUP2 AND DUP2 EQ PUSH2 0xA26 JUMPI PUSH0 PUSH0 REVERT JUMPDEST SWAP2 POP PUSH1 0x20 DUP4 ADD CALLDATALOAD PUSH8 0xFFFFFFFFFFFFFFFF DUP2 GT ISZERO PUSH2 0xA41 JUMPI PUSH0 PUSH0 REVERT JUMPDEST PUSH2 0xA4D DUP6 DUP3 DUP7 ADD PUSH2 0x97A JUMP JUMPDEST SWAP2 POP POP SWAP3 POP SWAP3 SWAP1 POP JUMP JUMPDEST PUSH1 0x20 DUP2 MSTORE PUSH0 DUP3 MLOAD DUP1 PUSH1 0x20 DUP5 ADD MSTORE DUP1 PUSH1 0x20 DUP6 ADD PUSH1 0x40 DUP6 ADD MCOPY PUSH0 PUSH1 0x40 DUP3 DUP6 ADD ADD MSTORE PUSH1 0x40 PUSH1 0x1F NOT PUSH1 0x1F DUP4 ADD AND DUP5 ADD ADD SWAP2 POP POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0xA9C JUMPI PUSH0 PUSH0 REVERT JUMPDEST POP CALLDATALOAD SWAP2 SWAP1 POP JUMP JUMPDEST PUSH0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0xAB3 JUMPI PUSH0 PUSH0 REVERT JUMPDEST DUP2 CALLDATALOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 AND DUP2 EQ PUSH2 0x932 JUMPI PUSH0 PUSH0 REVERT JUMPDEST DUP1 ISZERO ISZERO DUP2 EQ PUSH2 0x428 JUMPI PUSH0 PUSH0 REVERT JUMPDEST PUSH0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0xAE6 JUMPI PUSH0 PUSH0 REVERT JUMPDEST DUP2 CALLDATALOAD PUSH2 0x932 DUP2 PUSH2 0xAC9 JUMP JUMPDEST PUSH0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0xB01 JUMPI PUSH0 PUSH0 REVERT JUMPDEST DUP2 CALLDATALOAD PUSH8 0xFFFFFFFFFFFFFFFF DUP2 GT ISZERO PUSH2 0xB17 JUMPI PUSH0 PUSH0 REVERT JUMPDEST PUSH2 0xB23 DUP5 DUP3 DUP6 ADD PUSH2 0x97A JUMP JUMPDEST SWAP5 SWAP4 POP POP POP POP JUMP JUMPDEST PUSH0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0xB3B JUMPI PUSH0 PUSH0 REVERT JUMPDEST POP MLOAD SWAP2 SWAP1 POP JUMP JUMPDEST PUSH0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0xB52 JUMPI PUSH0 PUSH0 REVERT JUMPDEST DUP2 MLOAD PUSH2 0x932 DUP2 PUSH2 0xAC9 JUMP JUMPDEST PUSH0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0xB6D JUMPI PUSH0 PUSH0 REVERT JUMPDEST DUP2 MLOAD PUSH8 0xFFFFFFFFFFFFFFFF DUP2 AND DUP2 EQ PUSH2 0x932 JUMPI PUSH0 PUSH0 REVERT JUMPDEST PUSH8 0xFFFFFFFFFFFFFFFF DUP2 DUP2 AND DUP4 DUP3 AND ADD SWAP1 DUP2 GT ISZERO PUSH2 0x5EB JUMPI PUSH4 0x4E487B71 PUSH1 0xE0 SHL PUSH0 MSTORE PUSH1 0x11 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH0 REVERT JUMPDEST PUSH0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0xBC0 JUMPI PUSH0 PUSH0 REVERT JUMPDEST DUP2 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0x80 SHL SUB DUP2 AND DUP2 EQ PUSH2 0x932 JUMPI PUSH0 PUSH0 REVERT JUMPDEST PUSH4 0x4E487B71 PUSH1 0xE0 SHL PUSH0 MSTORE PUSH1 0x12 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH0 REVERT INVALID LOG2 PUSH5 0x6970667358 0x22 SLT KECCAK256 0xB4 0xB0 0xDF NUMBER 0xD7 0xD4 SWAP10 GASLIMIT DELEGATECALL XOR RJUMPI 0x5CD1 0xC1 SAR PUSH8 0xCF53F400C66C3CED 0x1E 0xC1 0xB7 DUP3 0x2B PUSH27 0x754364736F6C634300081E00330000000000000000000000000000 ","sourceMap":"941:1210:82:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2983:183:79;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;2603:138;;;;;;:::i;:::-;;:::i;:::-;;1362:111:82;;;;;;:::i;:::-;-1:-1:-1;;;1451:17:82;1362:111;;;;2401:25:87;;;2389:2;2374:18;1362:111:82;2255:177:87;1324:394:79;;;;;;:::i;:::-;;:::i;617:81::-;;;;;2098:104;;;;;;:::i;:::-;-1:-1:-1;2190:6:79;;2098:104;;;;-1:-1:-1;;;;;3152:32:87;;;3134:51;;3122:2;3107:18;2098:104:79;2988:203:87;1142:144:79;;;;;;:::i;:::-;;:::i;2779:166::-;;;;;;:::i;:::-;;:::i;1197:127:82:-;;;;;;:::i;:::-;;:::i;2286:78:79:-;2353:6;2286:78;;1511:638:82;;;;;;:::i;:::-;;:::i;2983:183:79:-;3068:12;-1:-1:-1;;;;;945:6:79;928:23;936:4;928:23;924:72;;960:36;;-1:-1:-1;;;960:36:79;;;;;;;;;;;2603:138;-1:-1:-1;;;;;945:6:79;928:23;936:4;928:23;924:72;;960:36;;-1:-1:-1;;;960:36:79;;;;;;;;;;;924:72;2683:53:::1;::::0;-1:-1:-1;;;2683:53:79;;::::1;::::0;::::1;3948:25:87::0;;;2715:4:79::1;3989:18:87::0;;;3982:60;;;4058:18;;;4051:60;2683:6:79::1;-1:-1:-1::0;;;;;2683:15:79::1;::::0;::::1;::::0;3921:18:87;;2683:53:79::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;2603:138:::0;:::o;1324:394::-;-1:-1:-1;;;;;945:6:79;928:23;936:4;928:23;924:72;;960:36;;-1:-1:-1;;;960:36:79;;;;;;;;;;;924:72;1631:5:::1;1630:6;:46;;;;-1:-1:-1::0;1640:31:79::1;::::0;-1:-1:-1;;;1640:31:79;;1665:4:::1;1640:31;::::0;::::1;3134:51:87::0;1640:6:79::1;-1:-1:-1::0;;;;;1640:16:79::1;::::0;::::1;::::0;3107:18:87;;1640:31:79::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;:36:::0;::::1;1630:46;1626:87;;;1685:28;;-1:-1:-1::0;;;1685:28:79::1;;;;;;;;;;;1626:87;1324:394:::0;:::o;1142:144::-;-1:-1:-1;;;;;945:6:79;928:23;936:4;928:23;924:72;;960:36;;-1:-1:-1;;;960:36:79;;;;;;;;;;;924:72;1232:15;;:20;1228:53:::1;;1261:20;;-1:-1:-1::0;;;1261:20:79::1;;;;;;;;;;;2779:166:::0;-1:-1:-1;;;;;945:6:79;928:23;936:4;928:23;924:72;;960:36;;-1:-1:-1;;;960:36:79;;;;;;;;;;;924:72;2858:39:::1;::::0;-1:-1:-1;;;2858:39:79;;-1:-1:-1;;;;;2881:6:79::1;4503:32:87::0;;2858:39:79::1;::::0;::::1;4485:51:87::0;4552:18;;;4545:34;;;2858:6:79::1;:14;::::0;::::1;::::0;4458:18:87;;2858:39:79::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;-1:-1:-1::0;2903:37:79::1;::::0;-1:-1:-1;;;2903:37:79;;::::1;::::0;::::1;5014:25:87::0;;;2934:4:79::1;5055:18:87::0;;;5048:60;2903:6:79::1;-1:-1:-1::0;;;;;2903:14:79::1;::::0;::::1;::::0;4987:18:87;;2903:37:79::1;4840:274:87::0;1197:127:82;1275:7;1297:22;1309:9;1297:11;:22::i;:::-;1290:29;1197:127;-1:-1:-1;;1197:127:82:o;1511:638::-;1628:27;;-1:-1:-1;;;1628:27:82;;-1:-1:-1;;;;;3152:32:87;;;1628:27:82;;;3134:51:87;1589:14:82;;;;1628:6;:16;;;;3107:18:87;;1628:27:82;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;1611:44;;1665:6;1675:1;1665:11;1661:25;;-1:-1:-1;1685:1:82;;1511:638;-1:-1:-1;;1511:638:82:o;1661:25::-;1692:16;1728:6;1692:44;;1742:17;1762:7;-1:-1:-1;;;;;1762:18:82;;:20;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;1742:40;-1:-1:-1;1835:15:82;1792:40;1087:6;1742:40;1792;:::i;:::-;:58;;;1788:357;;;1938:29;;-1:-1:-1;;;1938:29:82;;;;;2401:25:87;;;-1:-1:-1;;;;;1938:21:82;;;;;2374:18:87;;1938:29:82;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;1931:36;1511:638;-1:-1:-1;;;;;1511:638:82:o;1788:357::-;1988:17;2016:7;-1:-1:-1;;;;;2016:20:82;;:22;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;-1:-1:-1;;;;;2008:31:82;1988:51;;2047:17;2067:7;-1:-1:-1;;;;;2067:19:82;;:21;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;2047:41;-1:-1:-1;2103:35:82;:9;2120:6;2047:41;2103:16;:35::i;:::-;2096:42;1511:638;-1:-1:-1;;;;;;;1511:638:82:o;7258:3683:47:-;7340:14;7391:12;7405:11;7420:12;7427:1;7430;7420:6;:12::i;:::-;7390:42;;;;7514:4;7522:1;7514:9;7510:365;;7849:11;7843:3;:17;;;;;:::i;:::-;;7836:24;;;;;;7510:365;8000:4;7985:11;:19;7981:142;;8024:84;5328:5;8044:16;;5327:36;940:4:43;5322:42:47;8024:11;:84::i;:::-;8375:17;8526:11;8523:1;8520;8513:25;8918:12;8948:15;;;8933:31;;9083:22;;;;;9816:1;9797;:15;;9796:21;;10049;;;10045:25;;10034:36;10119:21;;;10115:25;;10104:36;10191:21;;;10187:25;;10176:36;10262:21;;;10258:25;;10247:36;10335:21;;;10331:25;;10320:36;10409:21;;;10405:25;;;10394:36;9325:12;;;;9321:23;;;9346:1;9317:31;8638:18;;;8628:29;;;9432:11;;;;8681:19;;;;9176:14;;;;9425:18;;;;10884:13;;-1:-1:-1;;7258:3683:47;;;;;;:::o;1027:550::-;1088:12;;-1:-1:-1;;1471:1:47;1468;1461:20;1501:9;;;;1549:11;;;1535:12;;;;1531:30;;;;;1027:550;-1:-1:-1;;1027:550:47:o;1776:194:43:-;1881:10;1875:4;1868:24;1918:4;1912;1905:18;1949:4;1943;1936:18;14:127:87;75:10;70:3;66:20;63:1;56:31;106:4;103:1;96:15;130:4;127:1;120:15;146:725;188:5;241:3;234:4;226:6;222:17;218:27;208:55;;259:1;256;249:12;208:55;299:6;286:20;329:18;321:6;318:30;315:56;;;351:18;;:::i;:::-;400:2;394:9;492:2;454:17;;-1:-1:-1;;450:31:87;;;483:2;446:40;442:54;430:67;;527:18;512:34;;548:22;;;509:62;506:88;;;574:18;;:::i;:::-;610:2;603:22;634;;;675:19;;;696:4;671:30;668:39;-1:-1:-1;665:59:87;;;720:1;717;710:12;665:59;784:6;777:4;769:6;765:17;758:4;750:6;746:17;733:58;839:1;811:19;;;832:4;807:30;800:41;;;;815:6;146:725;-1:-1:-1;;;146:725:87:o;876:477::-;951:6;959;1012:2;1000:9;991:7;987:23;983:32;980:52;;;1028:1;1025;1018:12;980:52;1067:9;1054:23;1117:4;1110:5;1106:16;1099:5;1096:27;1086:55;;1137:1;1134;1127:12;1086:55;1160:5;-1:-1:-1;1216:2:87;1201:18;;1188:32;1243:18;1232:30;;1229:50;;;1275:1;1272;1265:12;1229:50;1298:49;1339:7;1330:6;1319:9;1315:22;1298:49;:::i;:::-;1288:59;;;876:477;;;;;:::o;1358:416::-;1505:2;1494:9;1487:21;1468:4;1537:6;1531:13;1580:6;1575:2;1564:9;1560:18;1553:34;1639:6;1634:2;1626:6;1622:15;1617:2;1606:9;1602:18;1596:50;1695:1;1690:2;1681:6;1670:9;1666:22;1662:31;1655:42;1765:2;1758;1754:7;1749:2;1741:6;1737:15;1733:29;1722:9;1718:45;1714:54;1706:62;;;1358:416;;;;:::o;1779:180::-;1838:6;1891:2;1879:9;1870:7;1866:23;1862:32;1859:52;;;1907:1;1904;1897:12;1859:52;-1:-1:-1;1930:23:87;;1779:180;-1:-1:-1;1779:180:87:o;1964:286::-;2023:6;2076:2;2064:9;2055:7;2051:23;2047:32;2044:52;;;2092:1;2089;2082:12;2044:52;2118:23;;-1:-1:-1;;;;;2170:31:87;;2160:42;;2150:70;;2216:1;2213;2206:12;2437:118;2523:5;2516:13;2509:21;2502:5;2499:32;2489:60;;2545:1;2542;2535:12;2560:241;2616:6;2669:2;2657:9;2648:7;2644:23;2640:32;2637:52;;;2685:1;2682;2675:12;2637:52;2724:9;2711:23;2743:28;2765:5;2743:28;:::i;3196:320::-;3264:6;3317:2;3305:9;3296:7;3292:23;3288:32;3285:52;;;3333:1;3330;3323:12;3285:52;3373:9;3360:23;3406:18;3398:6;3395:30;3392:50;;;3438:1;3435;3428:12;3392:50;3461:49;3502:7;3493:6;3482:9;3478:22;3461:49;:::i;:::-;3451:59;3196:320;-1:-1:-1;;;;3196:320:87:o;4122:184::-;4192:6;4245:2;4233:9;4224:7;4220:23;4216:32;4213:52;;;4261:1;4258;4251:12;4213:52;-1:-1:-1;4284:16:87;;4122:184;-1:-1:-1;4122:184:87:o;4590:245::-;4657:6;4710:2;4698:9;4689:7;4685:23;4681:32;4678:52;;;4726:1;4723;4716:12;4678:52;4758:9;4752:16;4777:28;4799:5;4777:28;:::i;5119:288::-;5188:6;5241:2;5229:9;5220:7;5216:23;5212:32;5209:52;;;5257:1;5254;5247:12;5209:52;5289:9;5283:16;5339:18;5332:5;5328:30;5321:5;5318:41;5308:69;;5373:1;5370;5363:12;5412:288;5515:18;5480:26;;;5508;;;5476:59;;5547:27;;5544:150;;;5616:10;5611:3;5607:20;5604:1;5597:31;5651:4;5648:1;5641:15;5679:4;5676:1;5669:15;5705:305;5775:6;5828:2;5816:9;5807:7;5803:23;5799:32;5796:52;;;5844:1;5841;5834:12;5796:52;5876:9;5870:16;-1:-1:-1;;;;;5919:5:87;5915:46;5908:5;5905:57;5895:85;;5976:1;5973;5966:12;6015:127;6076:10;6071:3;6067:20;6064:1;6057:31;6107:4;6104:1;6097:15;6131:4;6128:1;6121:15"},"methodIdentifiers":{"asset(address)":"9c4667a2","connect(bytes)":"9cd47128","deposit(uint256)":"b6b55f25","disconnect(bool)":"5a117456","forwardEntryPoint(uint8,bytes)":"0981b1c2","investVault()":"de2a87b5","maxDeposit(address)":"402d267d","maxWithdraw(address)":"ce96cb77","storageSlot()":"5b9a4c35","totalAssets(address)":"f3e0ffbf","withdraw(uint256)":"2e1a7d4d"}},"metadata":"{\"compiler\":{\"version\":\"0.8.30+commit.73712a01\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"inputs\":[{\"internalType\":\"contract IERC4626\",\"name\":\"vault_\",\"type\":\"address\"}],\"stateMutability\":\"nonpayable\",\"type\":\"constructor\"},{\"inputs\":[],\"name\":\"CanBeCalledOnlyThroughDelegateCall\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"CannotDisconnectWithAssets\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"NoExtraDataAllowed\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"name\":\"asset\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes\",\"name\":\"initData\",\"type\":\"bytes\"}],\"name\":\"connect\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"assets\",\"type\":\"uint256\"}],\"name\":\"deposit\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bool\",\"name\":\"force\",\"type\":\"bool\"}],\"name\":\"disconnect\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint8\",\"name\":\"\",\"type\":\"uint8\"},{\"internalType\":\"bytes\",\"name\":\"\",\"type\":\"bytes\"}],\"name\":\"forwardEntryPoint\",\"outputs\":[{\"internalType\":\"bytes\",\"name\":\"\",\"type\":\"bytes\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"investVault\",\"outputs\":[{\"internalType\":\"contract IERC4626\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"name\":\"maxDeposit\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"contract_\",\"type\":\"address\"}],\"name\":\"maxWithdraw\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"storageSlot\",\"outputs\":[{\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"contract_\",\"type\":\"address\"}],\"name\":\"totalAssets\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"assets\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"assets\",\"type\":\"uint256\"}],\"name\":\"withdraw\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"}],\"devdoc\":{\"author\":\"Ensuro\",\"custom:security-contact\":\"security@ensuro.co\",\"details\":\"Strategy that invests/deinvests into a MorphoV2 vault      See https://github.com/morpho-org/vault-v2/blob/main/src/VaultV2.sol\",\"kind\":\"dev\",\"methods\":{\"asset(address)\":{\"details\":\"The address of the underlying token used for accounting, depositing, and withdrawing. It must be the same      as `IERC4626(contract_).asset()` when dealing with vaults.\",\"params\":{\"contract_\":\"The address of the vault contract that owns the assets.\"}},\"connect(bytes)\":{\"details\":\"Called when the strategy is plugged into the vault. Initializes the strategy storage and can do validations\",\"params\":{\"initData\":\"Initialization data for the strategy. Must be parsed by the strategy, since the format is                 strategy specific\"}},\"deposit(uint256)\":{\"details\":\"Deposits a given amount of assets into the strategy. It MUST revert if it can't deposit the specified amount.      It assumes the assets are already in the contract (owned by address(this)).\",\"params\":{\"assets\":\"The amount of assets to deposit. Should be <= maxDeposit.\"}},\"disconnect(bool)\":{\"details\":\"Called when the strategy is un-plugged from the vault. Should revert if there are still assets in the      strategy, unless force==true.\",\"params\":{\"force\":\"If true, disconnect should not fail if assets remain in the strategy. Otherwise, disconnect              MUST fail if totalAssets() != 0.\"}},\"forwardEntryPoint(uint8,bytes)\":{\"details\":\"Receives an external call to execute a custom method of action in the strategy. Can be used for harvesting      rewards or other tasks. It's called with delegatecall from the calling vault. The calling vault SHOULD      do the access control validation, since the strategy normally won't do it.\",\"params\":{\"method\":\"An id of the method or action to call/execute. It's recommended to define an enum and convert the               the uint8 value into the enum.\",\"params\":\"Params for the method or action. Parsed by the strategy, it might differ from one or other method.\"}},\"investVault()\":{\"details\":\"Returns the ERC4626 where this strategy invests the funds\"},\"maxDeposit(address)\":{\"details\":\"Returns the max amount that can be deposited into the strategy.\",\"params\":{\"contract_\":\"The address of the vault contract that owns the assets and where the strategy is plugged\"}},\"maxWithdraw(address)\":{\"details\":\"Returns the max amount that can be withdrawn from the strategy.\",\"params\":{\"contract_\":\"The address of the vault contract that owns the assets and where the strategy is plugged\"}},\"totalAssets(address)\":{\"details\":\"Returns the number of assets under management of the investment strategy for a given contract.\",\"params\":{\"contract_\":\"The address of the vault contract that owns the assets and where the strategy is plugged\"}},\"withdraw(uint256)\":{\"details\":\"Withdraws a given amount of assets from the strategy. It MUST revert if it can't withdraw the specified amount.      Leaves the withdrawn assets in the contract (owned by address(this)).\",\"params\":{\"assets\":\"The amount of assets to withdraw. Should be <= maxWithdraw.\"}}},\"title\":\"MorphoVaultV2InvestStrategy\",\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{},\"version\":1}},\"settings\":{\"compilationTarget\":{\"contracts/strategies/MorphoVaultV2InvestStrategy.sol\":\"MorphoVaultV2InvestStrategy\"},\"evmVersion\":\"prague\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"enabled\":true,\"runs\":200},\"remappings\":[]},\"sources\":{\"@openzeppelin/contracts/interfaces/IERC20.sol\":{\"keccak256\":\"0x1a6221315ce0307746c2c4827c125d821ee796c74a676787762f4778671d4f44\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://1bb2332a7ee26dd0b0de9b7fe266749f54820c99ab6a3bcb6f7e6b751d47ee2d\",\"dweb:/ipfs/QmcRWpaBeCYkhy68PR3B4AgD7asuQk7PwkWxrvJbZcikLF\"]},\"@openzeppelin/contracts/interfaces/IERC4626.sol\":{\"keccak256\":\"0xece5cbf726293ae6be1fbfade2936f052e1b399ed395ba1e221540ab82b62628\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://a9b97e58e90799e681dccbd4a8e469c6ebc2baf11312ad08f14332646123dd4b\",\"dweb:/ipfs/QmdamCQfxcuYinSNd3Et7VNo3oY98XSv4XCUQyq9xfMNUy\"]},\"@openzeppelin/contracts/token/ERC20/IERC20.sol\":{\"keccak256\":\"0x74ed01eb66b923d0d0cfe3be84604ac04b76482a55f9dd655e1ef4d367f95bc2\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://5282825a626cfe924e504274b864a652b0023591fa66f06a067b25b51ba9b303\",\"dweb:/ipfs/QmeCfPykghhMc81VJTrHTC7sF6CRvaA1FXVq2pJhwYp1dV\"]},\"@openzeppelin/contracts/token/ERC20/extensions/IERC20Metadata.sol\":{\"keccak256\":\"0xd6fa4088198f04eef10c5bce8a2f4d60554b7ec4b987f684393c01bf79b94d9f\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://f95ee0bbd4dd3ac730d066ba3e785ded4565e890dbec2fa7d3b9fe3bad9d0d6e\",\"dweb:/ipfs/QmSLr6bHkPFWT7ntj34jmwfyskpwo97T9jZUrk5sz3sdtR\"]},\"@openzeppelin/contracts/utils/Address.sol\":{\"keccak256\":\"0x0fa9e0d3a859900b5a46f70a03c73adf259603d5e05027a37fe0b45529d85346\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://c2add4da0240c9f2ce47649c8bb6b11b40e98cf6f88b8bdc76b2704e89391710\",\"dweb:/ipfs/QmNQTwF2uVzu4CRtNxr8bxyP9XuW6VsZuo2Nr4KR2bZr3d\"]},\"@openzeppelin/contracts/utils/Errors.sol\":{\"keccak256\":\"0x6afa713bfd42cf0f7656efa91201007ac465e42049d7de1d50753a373648c123\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://ba1d02f4847670a1b83dec9f7d37f0b0418d6043447b69f3a29a5f9efc547fcf\",\"dweb:/ipfs/QmQ7iH2keLNUKgq2xSWcRmuBE5eZ3F5whYAkAGzCNNoEWB\"]},\"@openzeppelin/contracts/utils/LowLevelCall.sol\":{\"keccak256\":\"0x5b4802a4352474792df3107e961d1cc593e47b820c14f69d3505cb28f5a6a583\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://a6f86fd01f829499fe0545ff5dda07d4521988e88bfe0bf801fc15650921ed56\",\"dweb:/ipfs/QmUUKu4ZDffHAmfkf3asuQfmLTyfpuy2Amdncc3SqfzKPG\"]},\"@openzeppelin/contracts/utils/Panic.sol\":{\"keccak256\":\"0xf7fe324703a64fc51702311dc51562d5cb1497734f074e4f483bfb6717572d7a\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://c6a5ff4f9fd8649b7ee20800b7fa387d3465bd77cf20c2d1068cd5c98e1ed57a\",\"dweb:/ipfs/QmVSaVJf9FXFhdYEYeCEfjMVHrxDh5qL4CGkxdMWpQCrqG\"]},\"@openzeppelin/contracts/utils/math/Math.sol\":{\"keccak256\":\"0x09e3f1c72d4c5cbe8e2644ab7313f8f7177533ae2f4c24cdcbbeaf520a73734c\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://93208401215d539fa2d81626b207c1f611def7883d0e447b3b5969ebaa7b3c2c\",\"dweb:/ipfs/QmXPxDnQPx8LAweX5ZJqEcwkvs59kP4c64VVDG1Jjq1mef\"]},\"@openzeppelin/contracts/utils/math/SafeCast.sol\":{\"keccak256\":\"0x195533c86d0ef72bcc06456a4f66a9b941f38eb403739b00f21fd7c1abd1ae54\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://b1d578337048cad08c1c03041cca5978eff5428aa130c781b271ad9e5566e1f8\",\"dweb:/ipfs/QmPFKL2r9CBsMwmUqqdcFPfHZB2qcs9g1HDrPxzWSxomvy\"]},\"contracts/InvestStrategyClient.sol\":{\"keccak256\":\"0x3c8fff73042023381eb750ba13a9066475d208e99bde568e1243f0e1e282c894\",\"license\":\"Apache-2.0\",\"urls\":[\"bzz-raw://3f8283ffa5c512e482b0065d9391c7060ebc1fa5968c55e6a05958480b7facb6\",\"dweb:/ipfs/QmT4N9Z19b6AUXpXtg23d3ijBExyKuRJBeQ3o8WCobgpfT\"]},\"contracts/interfaces/IInvestStrategy.sol\":{\"keccak256\":\"0x6800a1f147def2252b79629150ce9cd87e914ca5a966f1035fbca6328bbc9c4b\",\"license\":\"Apache-2.0\",\"urls\":[\"bzz-raw://2e9260604e0ffcf405819f85fee4124d9a090cf716f389ff92cf76a2837a2e42\",\"dweb:/ipfs/QmVdKEW8C6MDyiiUfjBxEMTWjfPrBJadptpxh9L2uCebDK\"]},\"contracts/strategies/ERC4626InvestStrategy.sol\":{\"keccak256\":\"0x85bf06587e2b83dc42e4899517af4bd662437840ba8e3a47b45ec8e1bbe8d0bc\",\"license\":\"Apache-2.0\",\"urls\":[\"bzz-raw://7c06c295d3f7e518981890367208e488b1089fdc36b551f6c715ae66007f4cc0\",\"dweb:/ipfs/QmdBoy6Fc4gB2fpgRfeCDLSWZY23T6yqgbQv6yVcaVGogB\"]},\"contracts/strategies/MorphoVaultV2InvestStrategy.sol\":{\"keccak256\":\"0xc3b80ff015663e5efce8643fce2a8a1ff70fda93a25297babc2557d2928968bc\",\"license\":\"Apache-2.0\",\"urls\":[\"bzz-raw://90a50da05b083daab252cb8a9a6bc1cd842bf2f112a9c102625696e672f328ee\",\"dweb:/ipfs/QmeiuPc8xSKyv9ZmfWGWMHnLBH2HcnVJwh8QGMcBZjhNfU\"]}},\"version\":1}","storageLayout":{"storage":[],"types":null}}},"contracts/strategies/SwapAssetInvestStrategy.sol":{"SwapAssetInvestStrategy":{"abi":[{"inputs":[],"name":"CanBeCalledOnlyThroughDelegateCall","type":"error"},{"inputs":[],"name":"CannotDisconnectWithAssets","type":"error"},{"inputs":[],"name":"InvalidAsset","type":"error"},{"inputs":[],"name":"NoExtraDataAllowed","type":"error"},{"anonymous":false,"inputs":[{"components":[{"internalType":"enum SwapLibrary.SwapProtocol","name":"protocol","type":"uint8"},{"internalType":"uint256","name":"maxSlippage","type":"uint256"},{"internalType":"bytes","name":"customParams","type":"bytes"}],"indexed":false,"internalType":"struct SwapLibrary.SwapConfig","name":"oldConfig","type":"tuple"},{"components":[{"internalType":"enum SwapLibrary.SwapProtocol","name":"protocol","type":"uint8"},{"internalType":"uint256","name":"maxSlippage","type":"uint256"},{"internalType":"bytes","name":"customParams","type":"bytes"}],"indexed":false,"internalType":"struct SwapLibrary.SwapConfig","name":"newConfig","type":"tuple"}],"name":"SwapConfigChanged","type":"event"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"asset","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"bytes","name":"initData","type":"bytes"}],"name":"connect","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"assets","type":"uint256"}],"name":"deposit","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bool","name":"force","type":"bool"}],"name":"disconnect","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint8","name":"method","type":"uint8"},{"internalType":"bytes","name":"params","type":"bytes"}],"name":"forwardEntryPoint","outputs":[{"internalType":"bytes","name":"","type":"bytes"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"contract_","type":"address"}],"name":"getSwapConfig","outputs":[{"components":[{"internalType":"enum SwapLibrary.SwapProtocol","name":"protocol","type":"uint8"},{"internalType":"uint256","name":"maxSlippage","type":"uint256"},{"internalType":"bytes","name":"customParams","type":"bytes"}],"internalType":"struct SwapLibrary.SwapConfig","name":"","type":"tuple"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"investAsset","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"investAssetPrice","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"maxDeposit","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"contract_","type":"address"}],"name":"maxWithdraw","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"storageSlot","outputs":[{"internalType":"bytes32","name":"","type":"bytes32"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"contract_","type":"address"}],"name":"totalAssets","outputs":[{"internalType":"uint256","name":"assets","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"assets","type":"uint256"}],"name":"withdraw","outputs":[],"stateMutability":"nonpayable","type":"function"}],"evm":{"bytecode":{"functionDebugData":{},"generatedSources":[],"linkReferences":{},"object":"","opcodes":"","sourceMap":""},"deployedBytecode":{"functionDebugData":{},"generatedSources":[],"immutableReferences":{},"linkReferences":{},"object":"","opcodes":"","sourceMap":""},"methodIdentifiers":{"asset(address)":"9c4667a2","connect(bytes)":"9cd47128","deposit(uint256)":"b6b55f25","disconnect(bool)":"5a117456","forwardEntryPoint(uint8,bytes)":"0981b1c2","getSwapConfig(address)":"42b054f0","investAsset(address)":"de846ae4","investAssetPrice()":"1418983b","maxDeposit(address)":"402d267d","maxWithdraw(address)":"ce96cb77","storageSlot()":"5b9a4c35","totalAssets(address)":"f3e0ffbf","withdraw(uint256)":"2e1a7d4d"}},"metadata":"{\"compiler\":{\"version\":\"0.8.30+commit.73712a01\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"inputs\":[],\"name\":\"CanBeCalledOnlyThroughDelegateCall\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"CannotDisconnectWithAssets\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"InvalidAsset\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"NoExtraDataAllowed\",\"type\":\"error\"},{\"anonymous\":false,\"inputs\":[{\"components\":[{\"internalType\":\"enum SwapLibrary.SwapProtocol\",\"name\":\"protocol\",\"type\":\"uint8\"},{\"internalType\":\"uint256\",\"name\":\"maxSlippage\",\"type\":\"uint256\"},{\"internalType\":\"bytes\",\"name\":\"customParams\",\"type\":\"bytes\"}],\"indexed\":false,\"internalType\":\"struct SwapLibrary.SwapConfig\",\"name\":\"oldConfig\",\"type\":\"tuple\"},{\"components\":[{\"internalType\":\"enum SwapLibrary.SwapProtocol\",\"name\":\"protocol\",\"type\":\"uint8\"},{\"internalType\":\"uint256\",\"name\":\"maxSlippage\",\"type\":\"uint256\"},{\"internalType\":\"bytes\",\"name\":\"customParams\",\"type\":\"bytes\"}],\"indexed\":false,\"internalType\":\"struct SwapLibrary.SwapConfig\",\"name\":\"newConfig\",\"type\":\"tuple\"}],\"name\":\"SwapConfigChanged\",\"type\":\"event\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"name\":\"asset\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes\",\"name\":\"initData\",\"type\":\"bytes\"}],\"name\":\"connect\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"assets\",\"type\":\"uint256\"}],\"name\":\"deposit\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bool\",\"name\":\"force\",\"type\":\"bool\"}],\"name\":\"disconnect\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint8\",\"name\":\"method\",\"type\":\"uint8\"},{\"internalType\":\"bytes\",\"name\":\"params\",\"type\":\"bytes\"}],\"name\":\"forwardEntryPoint\",\"outputs\":[{\"internalType\":\"bytes\",\"name\":\"\",\"type\":\"bytes\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"contract_\",\"type\":\"address\"}],\"name\":\"getSwapConfig\",\"outputs\":[{\"components\":[{\"internalType\":\"enum SwapLibrary.SwapProtocol\",\"name\":\"protocol\",\"type\":\"uint8\"},{\"internalType\":\"uint256\",\"name\":\"maxSlippage\",\"type\":\"uint256\"},{\"internalType\":\"bytes\",\"name\":\"customParams\",\"type\":\"bytes\"}],\"internalType\":\"struct SwapLibrary.SwapConfig\",\"name\":\"\",\"type\":\"tuple\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"name\":\"investAsset\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"investAssetPrice\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"name\":\"maxDeposit\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"contract_\",\"type\":\"address\"}],\"name\":\"maxWithdraw\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"storageSlot\",\"outputs\":[{\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"contract_\",\"type\":\"address\"}],\"name\":\"totalAssets\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"assets\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"assets\",\"type\":\"uint256\"}],\"name\":\"withdraw\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"}],\"devdoc\":{\"author\":\"Ensuro\",\"custom:security-contact\":\"security@ensuro.co\",\"details\":\"Strategy that invests/deinvests by swapping into another token. Abstract contract, childs must define how      to get the swap price.\",\"kind\":\"dev\",\"methods\":{\"asset(address)\":{\"details\":\"The address of the underlying token used for accounting, depositing, and withdrawing. It must be the same      as `IERC4626(contract_).asset()` when dealing with vaults.\",\"params\":{\"contract_\":\"The address of the vault contract that owns the assets.\"}},\"connect(bytes)\":{\"details\":\"Called when the strategy is plugged into the vault. Initializes the strategy storage and can do validations\",\"params\":{\"initData\":\"Initialization data for the strategy. Must be parsed by the strategy, since the format is                 strategy specific\"}},\"constructor\":{\"details\":\"Constructor of the strategy\",\"params\":{\"asset_\":\"The address of the underlying token used for accounting, depositing, and withdrawing.\",\"investAsset_\":\"The address of the tokens hold by the strategy. Typically a rebasing yield bearing token\"}},\"deposit(uint256)\":{\"details\":\"Deposit the amount of assets given into the strategy by swapping _asset to _investAsset\",\"params\":{\"assets\":\"Amount of assets to be deposited.\"}},\"disconnect(bool)\":{\"details\":\"Called when the strategy is un-plugged from the vault. Should revert if there are still assets in the      strategy, unless force==true.\",\"params\":{\"force\":\"If true, disconnect should not fail if assets remain in the strategy. Otherwise, disconnect              MUST fail if totalAssets() != 0.\"}},\"forwardEntryPoint(uint8,bytes)\":{\"details\":\"Receives an external call to execute a custom method of action in the strategy. Can be used for harvesting      rewards or other tasks. It's called with delegatecall from the calling vault. The calling vault SHOULD      do the access control validation, since the strategy normally won't do it.\",\"params\":{\"method\":\"An id of the method or action to call/execute. It's recommended to define an enum and convert the               the uint8 value into the enum.\",\"params\":\"Params for the method or action. Parsed by the strategy, it might differ from one or other method.\"}},\"getSwapConfig(address)\":{\"details\":\"Returns the swap configuration of the given contract.\",\"params\":{\"contract_\":\"Address of the vault contract\"}},\"investAsset(address)\":{\"details\":\"Returns the address of the asset invested in the strategy.\"},\"investAssetPrice()\":{\"details\":\"Returns the amount of `asset()` required to acquire one unit of `investAsset()` or the amount of `asset()`      that should be received by selling a unit of `investAsset()`. It doesn't consider slippage.\",\"returns\":{\"_0\":\"The amount is expressed in WAD (18 decimals), units: (asset/investAsset)\"}},\"maxDeposit(address)\":{\"details\":\"Returns the max amount that can be deposited into the strategy.\",\"params\":{\"contract_\":\"The address of the vault contract that owns the assets and where the strategy is plugged\"}},\"maxWithdraw(address)\":{\"details\":\"Returns the max amount that can be withdrawn from the strategy.\",\"params\":{\"contract_\":\"The address of the vault contract that owns the assets and where the strategy is plugged\"}},\"totalAssets(address)\":{\"details\":\"Returns the number of assets under management of the investment strategy for a given contract.\",\"params\":{\"contract_\":\"The address of the vault contract that owns the assets and where the strategy is plugged\"}},\"withdraw(uint256)\":{\"details\":\"Withdraws the amount of assets given from the strategy swapping _investAsset to _asset\",\"params\":{\"assets\":\"Amount of assets to be withdrawn.\"}}},\"stateVariables\":{\"storageSlot\":{\"details\":\"Returns the slot where the data of the strategy can be stored.       Typically it would return `InvestStrategyClient.makeStorageSlot(<strategyAddress>)`\"}},\"title\":\"SwapAssetInvestStrategy\",\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{},\"version\":1}},\"settings\":{\"compilationTarget\":{\"contracts/strategies/SwapAssetInvestStrategy.sol\":\"SwapAssetInvestStrategy\"},\"evmVersion\":\"prague\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"enabled\":true,\"runs\":200},\"remappings\":[]},\"sources\":{\"@ensuro/swaplibrary/contracts/CurveRoutes.sol\":{\"keccak256\":\"0x631af8ec291043d7eef34b97a427a4f53eb46d852088f6620c46a36a7e851963\",\"license\":\"Apache-2.0\",\"urls\":[\"bzz-raw://fbaf0f64980572d977b87b83e8bfc9c79fd1d2dc49a21e77e2a11fb8dec2413a\",\"dweb:/ipfs/QmYTpv2BroRz8PpWXYRp5KaaCXRy3tkZ95DeXybP4j3ti4\"]},\"@ensuro/swaplibrary/contracts/SwapLibrary.sol\":{\"keccak256\":\"0x3b1db1690ce8fa74972e4b4a57de41f4a880c8566b279316113d7398ea711812\",\"license\":\"Apache-2.0\",\"urls\":[\"bzz-raw://2746b500f5916604c16589fdbabf94b4d97689dcb96095376ed4956f9de663a6\",\"dweb:/ipfs/QmepecwnwauXsLuQmmoFNbH5XbZYEHH4bjnshQRRUeyH4r\"]},\"@ensuro/swaplibrary/contracts/dependencies/ICurveRouter.sol\":{\"keccak256\":\"0xf8c39f61b7459cfe6ba74d88fee74efd6d3d05d5cd64dc9eb6d08fbe0361affd\",\"license\":\"UNLICENSED\",\"urls\":[\"bzz-raw://55f11ef7e1cc66fa2c6c2aec436ccf00a835acf4281bff4ee9b4d2cb8980c92f\",\"dweb:/ipfs/QmPfvjcbLbHwoFRFGkM5zvM25vrEvZxjwbxSUL5jm5n3pZ\"]},\"@openzeppelin/contracts/interfaces/IERC20Metadata.sol\":{\"keccak256\":\"0xd735962e3d6660884153ba8a972b5f100dde4c482f2ff1c525ba7fdefb154cbd\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://5a264d17b093f585844b0d977e9f60555b8c8d6513b304fde863cdf652a0d336\",\"dweb:/ipfs/QmWXfaJisjVnrjTUjZGryZpMob9wKivvtbodLS3PTc1ttq\"]},\"@openzeppelin/contracts/token/ERC20/IERC20.sol\":{\"keccak256\":\"0x74ed01eb66b923d0d0cfe3be84604ac04b76482a55f9dd655e1ef4d367f95bc2\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://5282825a626cfe924e504274b864a652b0023591fa66f06a067b25b51ba9b303\",\"dweb:/ipfs/QmeCfPykghhMc81VJTrHTC7sF6CRvaA1FXVq2pJhwYp1dV\"]},\"@openzeppelin/contracts/token/ERC20/extensions/IERC20Metadata.sol\":{\"keccak256\":\"0xd6fa4088198f04eef10c5bce8a2f4d60554b7ec4b987f684393c01bf79b94d9f\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://f95ee0bbd4dd3ac730d066ba3e785ded4565e890dbec2fa7d3b9fe3bad9d0d6e\",\"dweb:/ipfs/QmSLr6bHkPFWT7ntj34jmwfyskpwo97T9jZUrk5sz3sdtR\"]},\"@openzeppelin/contracts/utils/Address.sol\":{\"keccak256\":\"0x0fa9e0d3a859900b5a46f70a03c73adf259603d5e05027a37fe0b45529d85346\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://c2add4da0240c9f2ce47649c8bb6b11b40e98cf6f88b8bdc76b2704e89391710\",\"dweb:/ipfs/QmNQTwF2uVzu4CRtNxr8bxyP9XuW6VsZuo2Nr4KR2bZr3d\"]},\"@openzeppelin/contracts/utils/Errors.sol\":{\"keccak256\":\"0x6afa713bfd42cf0f7656efa91201007ac465e42049d7de1d50753a373648c123\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://ba1d02f4847670a1b83dec9f7d37f0b0418d6043447b69f3a29a5f9efc547fcf\",\"dweb:/ipfs/QmQ7iH2keLNUKgq2xSWcRmuBE5eZ3F5whYAkAGzCNNoEWB\"]},\"@openzeppelin/contracts/utils/LowLevelCall.sol\":{\"keccak256\":\"0x5b4802a4352474792df3107e961d1cc593e47b820c14f69d3505cb28f5a6a583\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://a6f86fd01f829499fe0545ff5dda07d4521988e88bfe0bf801fc15650921ed56\",\"dweb:/ipfs/QmUUKu4ZDffHAmfkf3asuQfmLTyfpuy2Amdncc3SqfzKPG\"]},\"@openzeppelin/contracts/utils/Panic.sol\":{\"keccak256\":\"0xf7fe324703a64fc51702311dc51562d5cb1497734f074e4f483bfb6717572d7a\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://c6a5ff4f9fd8649b7ee20800b7fa387d3465bd77cf20c2d1068cd5c98e1ed57a\",\"dweb:/ipfs/QmVSaVJf9FXFhdYEYeCEfjMVHrxDh5qL4CGkxdMWpQCrqG\"]},\"@openzeppelin/contracts/utils/StorageSlot.sol\":{\"keccak256\":\"0xcf74f855663ce2ae00ed8352666b7935f6cddea2932fdf2c3ecd30a9b1cd0e97\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://9f660b1f351b757dfe01438e59888f31f33ded3afcf5cb5b0d9bf9aa6f320a8b\",\"dweb:/ipfs/QmarDJ5hZEgBtCmmrVzEZWjub9769eD686jmzb2XpSU1cM\"]},\"@openzeppelin/contracts/utils/math/Math.sol\":{\"keccak256\":\"0x09e3f1c72d4c5cbe8e2644ab7313f8f7177533ae2f4c24cdcbbeaf520a73734c\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://93208401215d539fa2d81626b207c1f611def7883d0e447b3b5969ebaa7b3c2c\",\"dweb:/ipfs/QmXPxDnQPx8LAweX5ZJqEcwkvs59kP4c64VVDG1Jjq1mef\"]},\"@openzeppelin/contracts/utils/math/SafeCast.sol\":{\"keccak256\":\"0x195533c86d0ef72bcc06456a4f66a9b941f38eb403739b00f21fd7c1abd1ae54\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://b1d578337048cad08c1c03041cca5978eff5428aa130c781b271ad9e5566e1f8\",\"dweb:/ipfs/QmPFKL2r9CBsMwmUqqdcFPfHZB2qcs9g1HDrPxzWSxomvy\"]},\"@uniswap/v3-core/contracts/interfaces/callback/IUniswapV3SwapCallback.sol\":{\"keccak256\":\"0x3f485fb1a44e8fbeadefb5da07d66edab3cfe809f0ac4074b1e54e3eb3c4cf69\",\"license\":\"GPL-2.0-or-later\",\"urls\":[\"bzz-raw://095ce0626b41318c772b3ebf19d548282607f6a8f3d6c41c13edfbd5370c8652\",\"dweb:/ipfs/QmVDZfJJ89UUCE1hMyzqpkZAtQ8jUsBgZNE5AMRG7RzRFS\"]},\"@uniswap/v3-periphery/contracts/interfaces/ISwapRouter.sol\":{\"keccak256\":\"0x9bfaf1feb32814623e627ab70f2409760b15d95f1f9b058e2b3399a8bb732975\",\"license\":\"GPL-2.0-or-later\",\"urls\":[\"bzz-raw://a8a2c3e55965b61bcd91993d8e1d5d34b8b8a63e0fdfce87a85f6af92526fd53\",\"dweb:/ipfs/QmQj2CSCSwqDSU4KMNWxGsN2336Cy64WgpV1X1EHXNZWxM\"]},\"contracts/InvestStrategyClient.sol\":{\"keccak256\":\"0x3c8fff73042023381eb750ba13a9066475d208e99bde568e1243f0e1e282c894\",\"license\":\"Apache-2.0\",\"urls\":[\"bzz-raw://3f8283ffa5c512e482b0065d9391c7060ebc1fa5968c55e6a05958480b7facb6\",\"dweb:/ipfs/QmT4N9Z19b6AUXpXtg23d3ijBExyKuRJBeQ3o8WCobgpfT\"]},\"contracts/interfaces/IExposeStorage.sol\":{\"keccak256\":\"0x68d4dbc7e135ac949f5f557a1f071b96d1639262188f91957bf082be7e72b1c7\",\"license\":\"Apache-2.0\",\"urls\":[\"bzz-raw://29fc549ef136e19275bb9225c8e7f02e0cc3b274acef4e6d7002c6f3f74e5c13\",\"dweb:/ipfs/QmVzrn7Cbxe8xzLwy4ZpzxP6CBEKsegXG8VusNYqssCe3d\"]},\"contracts/interfaces/IInvestStrategy.sol\":{\"keccak256\":\"0x6800a1f147def2252b79629150ce9cd87e914ca5a966f1035fbca6328bbc9c4b\",\"license\":\"Apache-2.0\",\"urls\":[\"bzz-raw://2e9260604e0ffcf405819f85fee4124d9a090cf716f389ff92cf76a2837a2e42\",\"dweb:/ipfs/QmVdKEW8C6MDyiiUfjBxEMTWjfPrBJadptpxh9L2uCebDK\"]},\"contracts/strategies/SwapAssetInvestStrategy.sol\":{\"keccak256\":\"0xcbe222638e775ca5e6d7cd2e864bdb35fa13afe6c648f682ef3c7a8f6439d4c6\",\"license\":\"Apache-2.0\",\"urls\":[\"bzz-raw://e9ea100bc7cf8aa1d848fad0ade54b3c636790a90dea10fd829ac5c5cabf4763\",\"dweb:/ipfs/QmYm6d3bZh39VTucf9aGuRPYFnMecx2jnUoE9ZtqLM9Lbo\"]},\"solidity-bytes-utils/contracts/BytesLib.sol\":{\"keccak256\":\"0xf4b07e5d8f69407bb43c6db224adfcf6c73b512dd64e85008ac3c222910c3555\",\"license\":\"Unlicense\",\"urls\":[\"bzz-raw://db020721e59008f7159b65962cc24038c92ac1c2ee8b7cfaa28a1771ced663f5\",\"dweb:/ipfs/QmQ8rznRTYc3AoVCJno8tY6vQVKCbhDJ3husfytUUvMrSN\"]}},\"version\":1}","storageLayout":{"storage":[],"types":null}}},"contracts/strategies/SwapStableAaveV3InvestStrategy.sol":{"SwapStableAaveV3InvestStrategy":{"abi":[{"inputs":[{"internalType":"contract IERC20Metadata","name":"asset_","type":"address"},{"internalType":"contract IERC20Metadata","name":"investAsset_","type":"address"},{"internalType":"uint256","name":"price_","type":"uint256"},{"internalType":"contract IPool","name":"aave_","type":"address"}],"stateMutability":"nonpayable","type":"constructor"},{"inputs":[],"name":"CanBeCalledOnlyThroughDelegateCall","type":"error"},{"inputs":[],"name":"CannotDisconnectWithAssets","type":"error"},{"inputs":[],"name":"InvalidAsset","type":"error"},{"inputs":[],"name":"NoExtraDataAllowed","type":"error"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint256","name":"assets","type":"uint256"}],"name":"ResupplyFailed","type":"event"},{"anonymous":false,"inputs":[{"components":[{"internalType":"enum SwapLibrary.SwapProtocol","name":"protocol","type":"uint8"},{"internalType":"uint256","name":"maxSlippage","type":"uint256"},{"internalType":"bytes","name":"customParams","type":"bytes"}],"indexed":false,"internalType":"struct SwapLibrary.SwapConfig","name":"oldConfig","type":"tuple"},{"components":[{"internalType":"enum SwapLibrary.SwapProtocol","name":"protocol","type":"uint8"},{"internalType":"uint256","name":"maxSlippage","type":"uint256"},{"internalType":"bytes","name":"customParams","type":"bytes"}],"indexed":false,"internalType":"struct SwapLibrary.SwapConfig","name":"newConfig","type":"tuple"}],"name":"SwapConfigChanged","type":"event"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"asset","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"bytes","name":"initData","type":"bytes"}],"name":"connect","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"assets","type":"uint256"}],"name":"deposit","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bool","name":"force","type":"bool"}],"name":"disconnect","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint8","name":"method","type":"uint8"},{"internalType":"bytes","name":"params","type":"bytes"}],"name":"forwardEntryPoint","outputs":[{"internalType":"bytes","name":"","type":"bytes"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"contract_","type":"address"}],"name":"getSwapConfig","outputs":[{"components":[{"internalType":"enum SwapLibrary.SwapProtocol","name":"protocol","type":"uint8"},{"internalType":"uint256","name":"maxSlippage","type":"uint256"},{"internalType":"bytes","name":"customParams","type":"bytes"}],"internalType":"struct SwapLibrary.SwapConfig","name":"","type":"tuple"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"investAsset","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"investAssetPrice","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"maxDeposit","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"contract_","type":"address"}],"name":"maxWithdraw","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"storageSlot","outputs":[{"internalType":"bytes32","name":"","type":"bytes32"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"contract_","type":"address"}],"name":"totalAssets","outputs":[{"internalType":"uint256","name":"assets","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"assets","type":"uint256"}],"name":"withdraw","outputs":[],"stateMutability":"nonpayable","type":"function"}],"evm":{"bytecode":{"functionDebugData":{"@_24037":{"entryPoint":null,"id":24037,"parameterSlots":2,"returnSlots":0},"@_24560":{"entryPoint":null,"id":24560,"parameterSlots":4,"returnSlots":0},"@_24877":{"entryPoint":null,"id":24877,"parameterSlots":3,"returnSlots":0},"@makeStorageSlot_15638":{"entryPoint":null,"id":15638,"parameterSlots":1,"returnSlots":1},"abi_decode_tuple_t_contract$_IERC20Metadata_$9411t_contract$_IERC20Metadata_$9411t_uint256t_contract$_IPool_$19003_fromMemory":{"entryPoint":508,"id":null,"parameterSlots":2,"returnSlots":4},"abi_decode_tuple_t_uint8_fromMemory":{"entryPoint":590,"id":null,"parameterSlots":2,"returnSlots":1},"abi_encode_tuple_t_stringliteral_4fed0cd3539a36e00a34a6c026c2615824c9ad47da5ef65e8372c7e721c05d79_t_contract$_IInvestStrategy_$20725__to_t_string_memory_ptr_t_address__fromStack_reversed":{"entryPoint":null,"id":null,"parameterSlots":2,"returnSlots":1},"validator_revert_contract_IERC20Metadata":{"entryPoint":485,"id":null,"parameterSlots":1,"returnSlots":0}},"generatedSources":[{"ast":{"nativeSrc":"0:1620:87","nodeType":"YulBlock","src":"0:1620:87","statements":[{"nativeSrc":"6:3:87","nodeType":"YulBlock","src":"6:3:87","statements":[]},{"body":{"nativeSrc":"75:86:87","nodeType":"YulBlock","src":"75:86:87","statements":[{"body":{"nativeSrc":"139:16:87","nodeType":"YulBlock","src":"139:16:87","statements":[{"expression":{"arguments":[{"kind":"number","nativeSrc":"148:1:87","nodeType":"YulLiteral","src":"148:1:87","type":"","value":"0"},{"kind":"number","nativeSrc":"151:1:87","nodeType":"YulLiteral","src":"151:1:87","type":"","value":"0"}],"functionName":{"name":"revert","nativeSrc":"141:6:87","nodeType":"YulIdentifier","src":"141:6:87"},"nativeSrc":"141:12:87","nodeType":"YulFunctionCall","src":"141:12:87"},"nativeSrc":"141:12:87","nodeType":"YulExpressionStatement","src":"141:12:87"}]},"condition":{"arguments":[{"arguments":[{"name":"value","nativeSrc":"98:5:87","nodeType":"YulIdentifier","src":"98:5:87"},{"arguments":[{"name":"value","nativeSrc":"109:5:87","nodeType":"YulIdentifier","src":"109:5:87"},{"arguments":[{"arguments":[{"kind":"number","nativeSrc":"124:3:87","nodeType":"YulLiteral","src":"124:3:87","type":"","value":"160"},{"kind":"number","nativeSrc":"129:1:87","nodeType":"YulLiteral","src":"129:1:87","type":"","value":"1"}],"functionName":{"name":"shl","nativeSrc":"120:3:87","nodeType":"YulIdentifier","src":"120:3:87"},"nativeSrc":"120:11:87","nodeType":"YulFunctionCall","src":"120:11:87"},{"kind":"number","nativeSrc":"133:1:87","nodeType":"YulLiteral","src":"133:1:87","type":"","value":"1"}],"functionName":{"name":"sub","nativeSrc":"116:3:87","nodeType":"YulIdentifier","src":"116:3:87"},"nativeSrc":"116:19:87","nodeType":"YulFunctionCall","src":"116:19:87"}],"functionName":{"name":"and","nativeSrc":"105:3:87","nodeType":"YulIdentifier","src":"105:3:87"},"nativeSrc":"105:31:87","nodeType":"YulFunctionCall","src":"105:31:87"}],"functionName":{"name":"eq","nativeSrc":"95:2:87","nodeType":"YulIdentifier","src":"95:2:87"},"nativeSrc":"95:42:87","nodeType":"YulFunctionCall","src":"95:42:87"}],"functionName":{"name":"iszero","nativeSrc":"88:6:87","nodeType":"YulIdentifier","src":"88:6:87"},"nativeSrc":"88:50:87","nodeType":"YulFunctionCall","src":"88:50:87"},"nativeSrc":"85:70:87","nodeType":"YulIf","src":"85:70:87"}]},"name":"validator_revert_contract_IERC20Metadata","nativeSrc":"14:147:87","nodeType":"YulFunctionDefinition","parameters":[{"name":"value","nativeSrc":"64:5:87","nodeType":"YulTypedName","src":"64:5:87","type":""}],"src":"14:147:87"},{"body":{"nativeSrc":"359:497:87","nodeType":"YulBlock","src":"359:497:87","statements":[{"body":{"nativeSrc":"406:16:87","nodeType":"YulBlock","src":"406:16:87","statements":[{"expression":{"arguments":[{"kind":"number","nativeSrc":"415:1:87","nodeType":"YulLiteral","src":"415:1:87","type":"","value":"0"},{"kind":"number","nativeSrc":"418:1:87","nodeType":"YulLiteral","src":"418:1:87","type":"","value":"0"}],"functionName":{"name":"revert","nativeSrc":"408:6:87","nodeType":"YulIdentifier","src":"408:6:87"},"nativeSrc":"408:12:87","nodeType":"YulFunctionCall","src":"408:12:87"},"nativeSrc":"408:12:87","nodeType":"YulExpressionStatement","src":"408:12:87"}]},"condition":{"arguments":[{"arguments":[{"name":"dataEnd","nativeSrc":"380:7:87","nodeType":"YulIdentifier","src":"380:7:87"},{"name":"headStart","nativeSrc":"389:9:87","nodeType":"YulIdentifier","src":"389:9:87"}],"functionName":{"name":"sub","nativeSrc":"376:3:87","nodeType":"YulIdentifier","src":"376:3:87"},"nativeSrc":"376:23:87","nodeType":"YulFunctionCall","src":"376:23:87"},{"kind":"number","nativeSrc":"401:3:87","nodeType":"YulLiteral","src":"401:3:87","type":"","value":"128"}],"functionName":{"name":"slt","nativeSrc":"372:3:87","nodeType":"YulIdentifier","src":"372:3:87"},"nativeSrc":"372:33:87","nodeType":"YulFunctionCall","src":"372:33:87"},"nativeSrc":"369:53:87","nodeType":"YulIf","src":"369:53:87"},{"nativeSrc":"431:29:87","nodeType":"YulVariableDeclaration","src":"431:29:87","value":{"arguments":[{"name":"headStart","nativeSrc":"450:9:87","nodeType":"YulIdentifier","src":"450:9:87"}],"functionName":{"name":"mload","nativeSrc":"444:5:87","nodeType":"YulIdentifier","src":"444:5:87"},"nativeSrc":"444:16:87","nodeType":"YulFunctionCall","src":"444:16:87"},"variables":[{"name":"value","nativeSrc":"435:5:87","nodeType":"YulTypedName","src":"435:5:87","type":""}]},{"expression":{"arguments":[{"name":"value","nativeSrc":"510:5:87","nodeType":"YulIdentifier","src":"510:5:87"}],"functionName":{"name":"validator_revert_contract_IERC20Metadata","nativeSrc":"469:40:87","nodeType":"YulIdentifier","src":"469:40:87"},"nativeSrc":"469:47:87","nodeType":"YulFunctionCall","src":"469:47:87"},"nativeSrc":"469:47:87","nodeType":"YulExpressionStatement","src":"469:47:87"},{"nativeSrc":"525:15:87","nodeType":"YulAssignment","src":"525:15:87","value":{"name":"value","nativeSrc":"535:5:87","nodeType":"YulIdentifier","src":"535:5:87"},"variableNames":[{"name":"value0","nativeSrc":"525:6:87","nodeType":"YulIdentifier","src":"525:6:87"}]},{"nativeSrc":"549:40:87","nodeType":"YulVariableDeclaration","src":"549:40:87","value":{"arguments":[{"arguments":[{"name":"headStart","nativeSrc":"574:9:87","nodeType":"YulIdentifier","src":"574:9:87"},{"kind":"number","nativeSrc":"585:2:87","nodeType":"YulLiteral","src":"585:2:87","type":"","value":"32"}],"functionName":{"name":"add","nativeSrc":"570:3:87","nodeType":"YulIdentifier","src":"570:3:87"},"nativeSrc":"570:18:87","nodeType":"YulFunctionCall","src":"570:18:87"}],"functionName":{"name":"mload","nativeSrc":"564:5:87","nodeType":"YulIdentifier","src":"564:5:87"},"nativeSrc":"564:25:87","nodeType":"YulFunctionCall","src":"564:25:87"},"variables":[{"name":"value_1","nativeSrc":"553:7:87","nodeType":"YulTypedName","src":"553:7:87","type":""}]},{"expression":{"arguments":[{"name":"value_1","nativeSrc":"639:7:87","nodeType":"YulIdentifier","src":"639:7:87"}],"functionName":{"name":"validator_revert_contract_IERC20Metadata","nativeSrc":"598:40:87","nodeType":"YulIdentifier","src":"598:40:87"},"nativeSrc":"598:49:87","nodeType":"YulFunctionCall","src":"598:49:87"},"nativeSrc":"598:49:87","nodeType":"YulExpressionStatement","src":"598:49:87"},{"nativeSrc":"656:17:87","nodeType":"YulAssignment","src":"656:17:87","value":{"name":"value_1","nativeSrc":"666:7:87","nodeType":"YulIdentifier","src":"666:7:87"},"variableNames":[{"name":"value1","nativeSrc":"656:6:87","nodeType":"YulIdentifier","src":"656:6:87"}]},{"nativeSrc":"682:35:87","nodeType":"YulAssignment","src":"682:35:87","value":{"arguments":[{"arguments":[{"name":"headStart","nativeSrc":"702:9:87","nodeType":"YulIdentifier","src":"702:9:87"},{"kind":"number","nativeSrc":"713:2:87","nodeType":"YulLiteral","src":"713:2:87","type":"","value":"64"}],"functionName":{"name":"add","nativeSrc":"698:3:87","nodeType":"YulIdentifier","src":"698:3:87"},"nativeSrc":"698:18:87","nodeType":"YulFunctionCall","src":"698:18:87"}],"functionName":{"name":"mload","nativeSrc":"692:5:87","nodeType":"YulIdentifier","src":"692:5:87"},"nativeSrc":"692:25:87","nodeType":"YulFunctionCall","src":"692:25:87"},"variableNames":[{"name":"value2","nativeSrc":"682:6:87","nodeType":"YulIdentifier","src":"682:6:87"}]},{"nativeSrc":"726:40:87","nodeType":"YulVariableDeclaration","src":"726:40:87","value":{"arguments":[{"arguments":[{"name":"headStart","nativeSrc":"751:9:87","nodeType":"YulIdentifier","src":"751:9:87"},{"kind":"number","nativeSrc":"762:2:87","nodeType":"YulLiteral","src":"762:2:87","type":"","value":"96"}],"functionName":{"name":"add","nativeSrc":"747:3:87","nodeType":"YulIdentifier","src":"747:3:87"},"nativeSrc":"747:18:87","nodeType":"YulFunctionCall","src":"747:18:87"}],"functionName":{"name":"mload","nativeSrc":"741:5:87","nodeType":"YulIdentifier","src":"741:5:87"},"nativeSrc":"741:25:87","nodeType":"YulFunctionCall","src":"741:25:87"},"variables":[{"name":"value_2","nativeSrc":"730:7:87","nodeType":"YulTypedName","src":"730:7:87","type":""}]},{"expression":{"arguments":[{"name":"value_2","nativeSrc":"816:7:87","nodeType":"YulIdentifier","src":"816:7:87"}],"functionName":{"name":"validator_revert_contract_IERC20Metadata","nativeSrc":"775:40:87","nodeType":"YulIdentifier","src":"775:40:87"},"nativeSrc":"775:49:87","nodeType":"YulFunctionCall","src":"775:49:87"},"nativeSrc":"775:49:87","nodeType":"YulExpressionStatement","src":"775:49:87"},{"nativeSrc":"833:17:87","nodeType":"YulAssignment","src":"833:17:87","value":{"name":"value_2","nativeSrc":"843:7:87","nodeType":"YulIdentifier","src":"843:7:87"},"variableNames":[{"name":"value3","nativeSrc":"833:6:87","nodeType":"YulIdentifier","src":"833:6:87"}]}]},"name":"abi_decode_tuple_t_contract$_IERC20Metadata_$9411t_contract$_IERC20Metadata_$9411t_uint256t_contract$_IPool_$19003_fromMemory","nativeSrc":"166:690:87","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nativeSrc":"301:9:87","nodeType":"YulTypedName","src":"301:9:87","type":""},{"name":"dataEnd","nativeSrc":"312:7:87","nodeType":"YulTypedName","src":"312:7:87","type":""}],"returnVariables":[{"name":"value0","nativeSrc":"324:6:87","nodeType":"YulTypedName","src":"324:6:87","type":""},{"name":"value1","nativeSrc":"332:6:87","nodeType":"YulTypedName","src":"332:6:87","type":""},{"name":"value2","nativeSrc":"340:6:87","nodeType":"YulTypedName","src":"340:6:87","type":""},{"name":"value3","nativeSrc":"348:6:87","nodeType":"YulTypedName","src":"348:6:87","type":""}],"src":"166:690:87"},{"body":{"nativeSrc":"940:194:87","nodeType":"YulBlock","src":"940:194:87","statements":[{"body":{"nativeSrc":"986:16:87","nodeType":"YulBlock","src":"986:16:87","statements":[{"expression":{"arguments":[{"kind":"number","nativeSrc":"995:1:87","nodeType":"YulLiteral","src":"995:1:87","type":"","value":"0"},{"kind":"number","nativeSrc":"998:1:87","nodeType":"YulLiteral","src":"998:1:87","type":"","value":"0"}],"functionName":{"name":"revert","nativeSrc":"988:6:87","nodeType":"YulIdentifier","src":"988:6:87"},"nativeSrc":"988:12:87","nodeType":"YulFunctionCall","src":"988:12:87"},"nativeSrc":"988:12:87","nodeType":"YulExpressionStatement","src":"988:12:87"}]},"condition":{"arguments":[{"arguments":[{"name":"dataEnd","nativeSrc":"961:7:87","nodeType":"YulIdentifier","src":"961:7:87"},{"name":"headStart","nativeSrc":"970:9:87","nodeType":"YulIdentifier","src":"970:9:87"}],"functionName":{"name":"sub","nativeSrc":"957:3:87","nodeType":"YulIdentifier","src":"957:3:87"},"nativeSrc":"957:23:87","nodeType":"YulFunctionCall","src":"957:23:87"},{"kind":"number","nativeSrc":"982:2:87","nodeType":"YulLiteral","src":"982:2:87","type":"","value":"32"}],"functionName":{"name":"slt","nativeSrc":"953:3:87","nodeType":"YulIdentifier","src":"953:3:87"},"nativeSrc":"953:32:87","nodeType":"YulFunctionCall","src":"953:32:87"},"nativeSrc":"950:52:87","nodeType":"YulIf","src":"950:52:87"},{"nativeSrc":"1011:29:87","nodeType":"YulVariableDeclaration","src":"1011:29:87","value":{"arguments":[{"name":"headStart","nativeSrc":"1030:9:87","nodeType":"YulIdentifier","src":"1030:9:87"}],"functionName":{"name":"mload","nativeSrc":"1024:5:87","nodeType":"YulIdentifier","src":"1024:5:87"},"nativeSrc":"1024:16:87","nodeType":"YulFunctionCall","src":"1024:16:87"},"variables":[{"name":"value","nativeSrc":"1015:5:87","nodeType":"YulTypedName","src":"1015:5:87","type":""}]},{"body":{"nativeSrc":"1088:16:87","nodeType":"YulBlock","src":"1088:16:87","statements":[{"expression":{"arguments":[{"kind":"number","nativeSrc":"1097:1:87","nodeType":"YulLiteral","src":"1097:1:87","type":"","value":"0"},{"kind":"number","nativeSrc":"1100:1:87","nodeType":"YulLiteral","src":"1100:1:87","type":"","value":"0"}],"functionName":{"name":"revert","nativeSrc":"1090:6:87","nodeType":"YulIdentifier","src":"1090:6:87"},"nativeSrc":"1090:12:87","nodeType":"YulFunctionCall","src":"1090:12:87"},"nativeSrc":"1090:12:87","nodeType":"YulExpressionStatement","src":"1090:12:87"}]},"condition":{"arguments":[{"arguments":[{"name":"value","nativeSrc":"1062:5:87","nodeType":"YulIdentifier","src":"1062:5:87"},{"arguments":[{"name":"value","nativeSrc":"1073:5:87","nodeType":"YulIdentifier","src":"1073:5:87"},{"kind":"number","nativeSrc":"1080:4:87","nodeType":"YulLiteral","src":"1080:4:87","type":"","value":"0xff"}],"functionName":{"name":"and","nativeSrc":"1069:3:87","nodeType":"YulIdentifier","src":"1069:3:87"},"nativeSrc":"1069:16:87","nodeType":"YulFunctionCall","src":"1069:16:87"}],"functionName":{"name":"eq","nativeSrc":"1059:2:87","nodeType":"YulIdentifier","src":"1059:2:87"},"nativeSrc":"1059:27:87","nodeType":"YulFunctionCall","src":"1059:27:87"}],"functionName":{"name":"iszero","nativeSrc":"1052:6:87","nodeType":"YulIdentifier","src":"1052:6:87"},"nativeSrc":"1052:35:87","nodeType":"YulFunctionCall","src":"1052:35:87"},"nativeSrc":"1049:55:87","nodeType":"YulIf","src":"1049:55:87"},{"nativeSrc":"1113:15:87","nodeType":"YulAssignment","src":"1113:15:87","value":{"name":"value","nativeSrc":"1123:5:87","nodeType":"YulIdentifier","src":"1123:5:87"},"variableNames":[{"name":"value0","nativeSrc":"1113:6:87","nodeType":"YulIdentifier","src":"1113:6:87"}]}]},"name":"abi_decode_tuple_t_uint8_fromMemory","nativeSrc":"861:273:87","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nativeSrc":"906:9:87","nodeType":"YulTypedName","src":"906:9:87","type":""},{"name":"dataEnd","nativeSrc":"917:7:87","nodeType":"YulTypedName","src":"917:7:87","type":""}],"returnVariables":[{"name":"value0","nativeSrc":"929:6:87","nodeType":"YulTypedName","src":"929:6:87","type":""}],"src":"861:273:87"},{"body":{"nativeSrc":"1366:252:87","nodeType":"YulBlock","src":"1366:252:87","statements":[{"expression":{"arguments":[{"name":"headStart","nativeSrc":"1383:9:87","nodeType":"YulIdentifier","src":"1383:9:87"},{"kind":"number","nativeSrc":"1394:2:87","nodeType":"YulLiteral","src":"1394:2:87","type":"","value":"64"}],"functionName":{"name":"mstore","nativeSrc":"1376:6:87","nodeType":"YulIdentifier","src":"1376:6:87"},"nativeSrc":"1376:21:87","nodeType":"YulFunctionCall","src":"1376:21:87"},"nativeSrc":"1376:21:87","nodeType":"YulExpressionStatement","src":"1376:21:87"},{"expression":{"arguments":[{"arguments":[{"name":"headStart","nativeSrc":"1417:9:87","nodeType":"YulIdentifier","src":"1417:9:87"},{"kind":"number","nativeSrc":"1428:2:87","nodeType":"YulLiteral","src":"1428:2:87","type":"","value":"64"}],"functionName":{"name":"add","nativeSrc":"1413:3:87","nodeType":"YulIdentifier","src":"1413:3:87"},"nativeSrc":"1413:18:87","nodeType":"YulFunctionCall","src":"1413:18:87"},{"kind":"number","nativeSrc":"1433:2:87","nodeType":"YulLiteral","src":"1433:2:87","type":"","value":"30"}],"functionName":{"name":"mstore","nativeSrc":"1406:6:87","nodeType":"YulIdentifier","src":"1406:6:87"},"nativeSrc":"1406:30:87","nodeType":"YulFunctionCall","src":"1406:30:87"},"nativeSrc":"1406:30:87","nodeType":"YulExpressionStatement","src":"1406:30:87"},{"expression":{"arguments":[{"arguments":[{"name":"headStart","nativeSrc":"1456:9:87","nodeType":"YulIdentifier","src":"1456:9:87"},{"kind":"number","nativeSrc":"1467:2:87","nodeType":"YulLiteral","src":"1467:2:87","type":"","value":"96"}],"functionName":{"name":"add","nativeSrc":"1452:3:87","nodeType":"YulIdentifier","src":"1452:3:87"},"nativeSrc":"1452:18:87","nodeType":"YulFunctionCall","src":"1452:18:87"},{"hexValue":"636f2e656e7375726f2e496e766573745374726174656779436c69656e74","kind":"string","nativeSrc":"1472:32:87","nodeType":"YulLiteral","src":"1472:32:87","type":"","value":"co.ensuro.InvestStrategyClient"}],"functionName":{"name":"mstore","nativeSrc":"1445:6:87","nodeType":"YulIdentifier","src":"1445:6:87"},"nativeSrc":"1445:60:87","nodeType":"YulFunctionCall","src":"1445:60:87"},"nativeSrc":"1445:60:87","nodeType":"YulExpressionStatement","src":"1445:60:87"},{"nativeSrc":"1514:27:87","nodeType":"YulAssignment","src":"1514:27:87","value":{"arguments":[{"name":"headStart","nativeSrc":"1526:9:87","nodeType":"YulIdentifier","src":"1526:9:87"},{"kind":"number","nativeSrc":"1537:3:87","nodeType":"YulLiteral","src":"1537:3:87","type":"","value":"128"}],"functionName":{"name":"add","nativeSrc":"1522:3:87","nodeType":"YulIdentifier","src":"1522:3:87"},"nativeSrc":"1522:19:87","nodeType":"YulFunctionCall","src":"1522:19:87"},"variableNames":[{"name":"tail","nativeSrc":"1514:4:87","nodeType":"YulIdentifier","src":"1514:4:87"}]},{"expression":{"arguments":[{"arguments":[{"name":"headStart","nativeSrc":"1561:9:87","nodeType":"YulIdentifier","src":"1561:9:87"},{"kind":"number","nativeSrc":"1572:4:87","nodeType":"YulLiteral","src":"1572:4:87","type":"","value":"0x20"}],"functionName":{"name":"add","nativeSrc":"1557:3:87","nodeType":"YulIdentifier","src":"1557:3:87"},"nativeSrc":"1557:20:87","nodeType":"YulFunctionCall","src":"1557:20:87"},{"arguments":[{"name":"value0","nativeSrc":"1583:6:87","nodeType":"YulIdentifier","src":"1583:6:87"},{"arguments":[{"arguments":[{"kind":"number","nativeSrc":"1599:3:87","nodeType":"YulLiteral","src":"1599:3:87","type":"","value":"160"},{"kind":"number","nativeSrc":"1604:1:87","nodeType":"YulLiteral","src":"1604:1:87","type":"","value":"1"}],"functionName":{"name":"shl","nativeSrc":"1595:3:87","nodeType":"YulIdentifier","src":"1595:3:87"},"nativeSrc":"1595:11:87","nodeType":"YulFunctionCall","src":"1595:11:87"},{"kind":"number","nativeSrc":"1608:1:87","nodeType":"YulLiteral","src":"1608:1:87","type":"","value":"1"}],"functionName":{"name":"sub","nativeSrc":"1591:3:87","nodeType":"YulIdentifier","src":"1591:3:87"},"nativeSrc":"1591:19:87","nodeType":"YulFunctionCall","src":"1591:19:87"}],"functionName":{"name":"and","nativeSrc":"1579:3:87","nodeType":"YulIdentifier","src":"1579:3:87"},"nativeSrc":"1579:32:87","nodeType":"YulFunctionCall","src":"1579:32:87"}],"functionName":{"name":"mstore","nativeSrc":"1550:6:87","nodeType":"YulIdentifier","src":"1550:6:87"},"nativeSrc":"1550:62:87","nodeType":"YulFunctionCall","src":"1550:62:87"},"nativeSrc":"1550:62:87","nodeType":"YulExpressionStatement","src":"1550:62:87"}]},"name":"abi_encode_tuple_t_stringliteral_4fed0cd3539a36e00a34a6c026c2615824c9ad47da5ef65e8372c7e721c05d79_t_contract$_IInvestStrategy_$20725__to_t_string_memory_ptr_t_address__fromStack_reversed","nativeSrc":"1139:479:87","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nativeSrc":"1335:9:87","nodeType":"YulTypedName","src":"1335:9:87","type":""},{"name":"value0","nativeSrc":"1346:6:87","nodeType":"YulTypedName","src":"1346:6:87","type":""}],"returnVariables":[{"name":"tail","nativeSrc":"1357:4:87","nodeType":"YulTypedName","src":"1357:4:87","type":""}],"src":"1139:479:87"}]},"contents":"{\n    { }\n    function validator_revert_contract_IERC20Metadata(value)\n    {\n        if iszero(eq(value, and(value, sub(shl(160, 1), 1)))) { revert(0, 0) }\n    }\n    function abi_decode_tuple_t_contract$_IERC20Metadata_$9411t_contract$_IERC20Metadata_$9411t_uint256t_contract$_IPool_$19003_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_contract_IERC20Metadata(value)\n        value0 := value\n        let value_1 := mload(add(headStart, 32))\n        validator_revert_contract_IERC20Metadata(value_1)\n        value1 := value_1\n        value2 := mload(add(headStart, 64))\n        let value_2 := mload(add(headStart, 96))\n        validator_revert_contract_IERC20Metadata(value_2)\n        value3 := value_2\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_stringliteral_4fed0cd3539a36e00a34a6c026c2615824c9ad47da5ef65e8372c7e721c05d79_t_contract$_IInvestStrategy_$20725__to_t_string_memory_ptr_t_address__fromStack_reversed(headStart, value0) -> tail\n    {\n        mstore(headStart, 64)\n        mstore(add(headStart, 64), 30)\n        mstore(add(headStart, 96), \"co.ensuro.InvestStrategyClient\")\n        tail := add(headStart, 128)\n        mstore(add(headStart, 0x20), and(value0, sub(shl(160, 1), 1)))\n    }\n}","id":87,"language":"Yul","name":"#utility.yul"}],"linkReferences":{"@ensuro/swaplibrary/contracts/SwapLibrary.sol":{"SwapLibrary":[{"length":20,"start":3261},{"length":20,"start":3789},{"length":20,"start":4079},{"length":20,"start":5189}]}},"object":"3060808181526040610160818152601e6101a0527f636f2e656e7375726f2e496e766573745374726174656779436c69656e7400006101c052610180939093526101408290526101e09052902060a05234801561005a575f5ffd5b50604051612158380380612158833981016040819052610079916101fc565b83838382826012826001600160a01b031663313ce5676040518163ffffffff1660e01b8152600401602060405180830381865afa1580156100bc573d5f5f3e3d5ffd5b505050506040513d601f19601f820116820180604052508101906100e0919061024e565b60ff16111561010257604051636448d6e960e11b815260040160405180910390fd5b6012816001600160a01b031663313ce5676040518163ffffffff1660e01b8152600401602060405180830381865afa158015610140573d5f5f3e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610164919061024e565b60ff16111561018657604051636448d6e960e11b815260040160405180910390fd5b806001600160a01b0316826001600160a01b0316036101b857604051636448d6e960e11b815260040160405180910390fd5b6001600160a01b0391821660c052811660e052610100919091529290921661012052506102759350505050565b6001600160a01b03811681146101f9575f5ffd5b50565b5f5f5f5f6080858703121561020f575f5ffd5b845161021a816101e5565b602086015190945061022b816101e5565b604086015160608701519194509250610243816101e5565b939692955090935050565b5f6020828403121561025e575f5ffd5b815160ff8116811461026e575f5ffd5b9392505050565b60805160a05160c05160e0516101005161012051611dbd61039b5f395f81816103ad01528181610ceb01528181610ddd01528181610ebc0152610fd501525f818160fa01528181611111015281816111dd015261131a01525f818161023f015281816103780152818161043a0152818161070301528181610aa801528181610b5001528181610c7601528181610d1a01528181610da201528181610e8101528181610fad015281816110ed01526111ad01525f81816101bb01528181610b7201528181610c98015281816110cb015261117e01525f81816101880152818161086a015281816109f2015261125101525f81816102800152818161031c0152818161053801528181610625015281816106a201528181610a2b015261104e0152611dbd5ff3fe608060405234801561000f575f5ffd5b50600436106100cb575f3560e01c80635b9a4c3511610088578063b6b55f2511610063578063b6b55f2514610208578063ce96cb771461021b578063de846ae41461022e578063f3e0ffbf14610261575f5ffd5b80635b9a4c35146101835780639c4667a2146101aa5780639cd47128146101f5575f5ffd5b80630981b1c2146100cf5780631418983b146100f85780632e1a7d4d14610128578063402d267d1461013d57806342b054f0146101505780635a11745614610170575b5f5ffd5b6100e26100dd3660046115ab565b610274565b6040516100ef9190611626565b60405180910390f35b7f00000000000000000000000000000000000000000000000000000000000000005b6040519081526020016100ef565b61013b610136366004611638565b610312565b005b61011a61014b366004611663565b6104b5565b61016361015e366004611663565b61050a565b6040516100ef91906116e0565b61013b61017e3660046116ff565b61052e565b61011a7f000000000000000000000000000000000000000000000000000000000000000081565b6101dd6101b8366004611663565b507f000000000000000000000000000000000000000000000000000000000000000090565b6040516001600160a01b0390911681526020016100ef565b61013b61020336600461171a565b61061b565b61013b610216366004611638565b610698565b61011a610229366004611663565b61077a565b6101dd61023c366004611663565b507f000000000000000000000000000000000000000000000000000000000000000090565b61011a61026f366004611663565b6107c0565b60606001600160a01b037f00000000000000000000000000000000000000000000000000000000000000001630036102bf57604051632abf118b60e21b815260040160405180910390fd5b5f60ff841680156102d2576102d261167e565b90505f8180156102e4576102e461167e565b036100cb576102fb6102f530610840565b846108fb565b505060408051602081019091525f81525b92915050565b6001600160a01b037f000000000000000000000000000000000000000000000000000000000000000016300361035b57604051632abf118b60e21b815260040160405180910390fd5b80156104b257604051631a4ca37b60e21b81526001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000811660048301525f1960248301523060448301527f000000000000000000000000000000000000000000000000000000000000000016906369328dec906064016020604051808303815f875af11580156103f3573d5f5f3e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610417919061174c565b5061042181610a21565b6040516370a0823160e01b81523060048201526104b2907f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316906370a0823190602401602060405180830381865afa158015610487573d5f5f3e3d5ffd5b505050506040513d601f19601f820116820180604052508101906104ab919061174c565b6001610cc9565b50565b5f5f6104bf610f17565b805151909150600160381b1615806104de57508051516001603c1b1615155b806104f457508051516702000000000000001615155b1561050157505f92915050565b505f1992915050565b60408051606080820183525f80835260208301529181019190915261030c82610840565b6001600160a01b037f000000000000000000000000000000000000000000000000000000000000000016300361057757604051632abf118b60e21b815260040160405180910390fd5b5f610580610f17565b61010001519050811580156105f957506040516370a0823160e01b81523060048201526001600160a01b038216906370a0823190602401602060405180830381865afa1580156105d2573d5f5f3e3d5ffd5b505050506040513d601f19601f820116820180604052508101906105f6919061174c565b15155b15610617576040516342a176d160e11b815260040160405180910390fd5b5050565b6001600160a01b037f000000000000000000000000000000000000000000000000000000000000000016300361066457604051632abf118b60e21b815260040160405180910390fd5b60408051606081019091526104b290805f81526020015f815260200160405180602001604052805f815250815250826108fb565b6001600160a01b037f00000000000000000000000000000000000000000000000000000000000000001630036106e157604051632abf118b60e21b815260040160405180910390fd5b6106ea81611044565b6040516370a0823160e01b81523060048201526104b2907f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316906370a0823190602401602060405180830381865afa158015610750573d5f5f3e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610774919061174c565b5f610cc9565b5f5f610784610f17565b805151909150600160381b1615806107a357508051516001603c1b1615155b156107b057505f92915050565b6107b9836107c0565b9392505050565b5f61030c6107cc610f17565b61010001516040516370a0823160e01b81526001600160a01b038581166004830152909116906370a0823190602401602060405180830381865afa158015610816573d5f5f3e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061083a919061174c565b83611178565b60408051606080820183525f8083526020830152918101919091526040516347e5753360e01b81527f000000000000000000000000000000000000000000000000000000000000000060048201525f906001600160a01b038416906347e57533906024015f60405180830381865afa1580156108be573d5f5f3e3d5ffd5b505050506040513d5f823e601f3d908101601f191682016040526108e591908101906117b0565b9050808060200190518101906107b991906117e2565b5f8180602001905181019061091091906117e2565b604051632cbf28cb60e21b815290915073__$acbb9ece542dcf2065f41aa3c8cca5827e$__9063b2fca32c9061094a9084906004016116e0565b5f6040518083038186803b158015610960575f5ffd5b505af4158015610972573d5f5f3e3d5ffd5b5050505081518160405160200161098991906116e0565b60405160208183030381529060405251146109b7576040516350701b6160e01b815260040160405180910390fd5b7fca7f7aa563866a1d31c74deba224724d1da9c35cbb6f783f2ccf0182f91e34f883826040516109e892919061186e565b60405180910390a17f0000000000000000000000000000000000000000000000000000000000000000610a1b838261191e565b50505050565b6001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000163003610a6a57604051632abf118b60e21b815260040160405180910390fd5b80156104b2575f610a79611234565b90505f610a8461130a565b6040516370a0823160e01b8152306004820152909150610b17906001600160a01b037f000000000000000000000000000000000000000000000000000000000000000016906370a0823190602401602060405180830381865afa158015610aed573d5f5f3e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610b11919061174c565b30611178565b8310610c45576040516370a0823160e01b815230600482015273__$acbb9ece542dcf2065f41aa3c8cca5827e$__9063775669159084907f0000000000000000000000000000000000000000000000000000000000000000907f0000000000000000000000000000000000000000000000000000000000000000906001600160a01b038316906370a0823190602401602060405180830381865afa158015610bc1573d5f5f3e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610be5919061174c565b866040518663ffffffff1660e01b8152600401610c069594939291906119d9565b602060405180830381865af4158015610c21573d5f5f3e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610a1b919061174c565b60405163581e517d60e01b815273__$acbb9ece542dcf2065f41aa3c8cca5827e$__9063581e517d90610c069085907f0000000000000000000000000000000000000000000000000000000000000000907f000000000000000000000000000000000000000000000000000000000000000090899088906004016119d9565b505050565b815f03610cd4575050565b60405163095ea7b360e01b81526001600160a01b037f000000000000000000000000000000000000000000000000000000000000000081166004830152602482018490527f0000000000000000000000000000000000000000000000000000000000000000169063095ea7b3906044016020604051808303815f875af1158015610d60573d5f5f3e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610d849190611a18565b508015610e6a5760405163617ba03760e01b81526001600160a01b037f000000000000000000000000000000000000000000000000000000000000000081166004830152602482018490523060448301525f60648301527f0000000000000000000000000000000000000000000000000000000000000000169063617ba037906084015f604051808303815f87803b158015610e1e575f5ffd5b505af1925050508015610e2f575060015b610617576040518281527f323f803ab99bd4b7b37bba0e83169793239f293cc8b9d11837997563c5902eac9060200160405180910390a15050565b60405163617ba03760e01b81526001600160a01b037f000000000000000000000000000000000000000000000000000000000000000081166004830152602482018490523060448301525f60648301527f0000000000000000000000000000000000000000000000000000000000000000169063617ba037906084015f604051808303815f87803b158015610efd575f5ffd5b505af1158015610f0f573d5f5f3e3d5ffd5b505050505050565b60408051610200810182525f6101e08201818152825260208201819052918101829052606081018290526080810182905260a0810182905260c0810182905260e08101829052610100810182905261012081018290526101408101829052610160810182905261018081018290526101a081018290526101c08101919091526040516335ea6a7560e01b81526001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000811660048301527f000000000000000000000000000000000000000000000000000000000000000016906335ea6a75906024016101e060405180830381865afa15801561101b573d5f5f3e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061103f9190611ac7565b905090565b6001600160a01b037f000000000000000000000000000000000000000000000000000000000000000016300361108d57604051632abf118b60e21b815260040160405180910390fd5b80156104b25761109b611234565b604051637756691560e01b815273__$acbb9ece542dcf2065f41aa3c8cca5827e$__9163775669159161113991907f0000000000000000000000000000000000000000000000000000000000000000907f00000000000000000000000000000000000000000000000000000000000000009087907f0000000000000000000000000000000000000000000000000000000000000000906004016119d9565b602060405180830381865af4158015611154573d5f5f3e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610617919061174c565b5f6111a27f000000000000000000000000000000000000000000000000000000000000000061133e565b61122a61120b6111d17f000000000000000000000000000000000000000000000000000000000000000061133e565b6111db9087611c05565b7f00000000000000000000000000000000000000000000000000000000000000005b670de0b6b3a76400006113b5565b61121485610840565b602001516111fd90670de0b6b3a7640000611c1c565b6107b99190611c43565b60408051606080820183525f8083526020830152918101919091527f0000000000000000000000000000000000000000000000000000000000000000805461127b9061189b565b80601f01602080910402602001604051908101604052809291908181526020018280546112a79061189b565b80156112f25780601f106112c9576101008083540402835291602001916112f2565b820191905f5260205f20905b8154815290600101906020018083116112d557829003601f168201915b505050505080602001905181019061103f91906117e2565b5f61103f670de0b6b3a7640000807f00000000000000000000000000000000000000000000000000000000000000006113b5565b5f816001600160a01b031663313ce5676040518163ffffffff1660e01b8152600401602060405180830381865afa15801561137b573d5f5f3e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061139f9190611c62565b6113aa906012611c7d565b61030c90600a611d79565b5f5f5f6113c28686611465565b91509150815f036113e6578381816113dc576113dc611c2f565b04925050506107b9565b8184116113fd576113fd6003851502601118611481565b5f848688095f868103871696879004966002600389028118808a02820302808a02820302808a02820302808a02820302808a02820302808a02909103029181900381900460010185841190960395909502919093039390930492909217029150509392505050565b5f805f1983850993909202808410938190039390930393915050565b634e487b715f52806020526024601cfd5b60ff811681146104b2575f5ffd5b634e487b7160e01b5f52604160045260245ffd5b6040516060810167ffffffffffffffff811182821017156114d7576114d76114a0565b60405290565b6040516101e0810167ffffffffffffffff811182821017156114d7576114d76114a0565b604051601f8201601f1916810167ffffffffffffffff8111828210171561152a5761152a6114a0565b604052919050565b5f67ffffffffffffffff82111561154b5761154b6114a0565b50601f01601f191660200190565b5f82601f830112611568575f5ffd5b813561157b61157682611532565b611501565b81815284602083860101111561158f575f5ffd5b816020850160208301375f918101602001919091529392505050565b5f5f604083850312156115bc575f5ffd5b82356115c781611492565b9150602083013567ffffffffffffffff8111156115e2575f5ffd5b6115ee85828601611559565b9150509250929050565b5f81518084528060208401602086015e5f602082860101526020601f19601f83011685010191505092915050565b602081525f6107b960208301846115f8565b5f60208284031215611648575f5ffd5b5035919050565b6001600160a01b03811681146104b2575f5ffd5b5f60208284031215611673575f5ffd5b81356107b98161164f565b634e487b7160e01b5f52602160045260245ffd5b5f8151600381106116b157634e487b7160e01b5f52602160045260245ffd5b80845250602082015160208401526040820151606060408501526116d860608501826115f8565b949350505050565b602081525f6107b96020830184611692565b80151581146104b2575f5ffd5b5f6020828403121561170f575f5ffd5b81356107b9816116f2565b5f6020828403121561172a575f5ffd5b813567ffffffffffffffff811115611740575f5ffd5b6116d884828501611559565b5f6020828403121561175c575f5ffd5b5051919050565b5f82601f830112611772575f5ffd5b815161178061157682611532565b818152846020838601011115611794575f5ffd5b8160208501602083015e5f918101602001919091529392505050565b5f602082840312156117c0575f5ffd5b815167ffffffffffffffff8111156117d6575f5ffd5b6116d884828501611763565b5f602082840312156117f2575f5ffd5b815167ffffffffffffffff811115611808575f5ffd5b820160608185031215611819575f5ffd5b6118216114b4565b81516003811061182f575f5ffd5b815260208281015190820152604082015167ffffffffffffffff811115611854575f5ffd5b61186086828501611763565b604083015250949350505050565b604081525f6118806040830185611692565b82810360208401526118928185611692565b95945050505050565b600181811c908216806118af57607f821691505b6020821081036118cd57634e487b7160e01b5f52602260045260245ffd5b50919050565b601f821115610cc457805f5260205f20601f840160051c810160208510156118f85750805b601f840160051c820191505b81811015611917575f8155600101611904565b5050505050565b815167ffffffffffffffff811115611938576119386114a0565b61194c81611946845461189b565b846118d3565b6020601f82116001811461197e575f83156119675750848201515b5f19600385901b1c1916600184901b178455611917565b5f84815260208120601f198516915b828110156119ad578785015182556020948501946001909201910161198d565b50848210156119ca57868401515f19600387901b60f8161c191681555b50505050600190811b01905550565b60a081525f6119eb60a0830188611692565b6001600160a01b039687166020840152949095166040820152606081019290925260809091015292915050565b5f60208284031215611a28575f5ffd5b81516107b9816116f2565b5f60208284031215611a43575f5ffd5b6040516020810167ffffffffffffffff81118282101715611a6657611a666114a0565b6040529151825250919050565b80516fffffffffffffffffffffffffffffffff81168114611a92575f5ffd5b919050565b805164ffffffffff81168114611a92575f5ffd5b805161ffff81168114611a92575f5ffd5b8051611a928161164f565b5f6101e0828403128015611ad9575f5ffd5b50611ae26114dd565b611aec8484611a33565b8152611afa60208401611a73565b6020820152611b0b60408401611a73565b6040820152611b1c60608401611a73565b6060820152611b2d60808401611a73565b6080820152611b3e60a08401611a73565b60a0820152611b4f60c08401611a97565b60c0820152611b6060e08401611aab565b60e0820152611b726101008401611abc565b610100820152611b856101208401611abc565b610120820152611b986101408401611abc565b610140820152611bab6101608401611abc565b610160820152611bbe6101808401611a73565b610180820152611bd16101a08401611a73565b6101a0820152611be46101c08401611a73565b6101c08201529392505050565b634e487b7160e01b5f52601160045260245ffd5b808202811582820484141761030c5761030c611bf1565b8181038181111561030c5761030c611bf1565b634e487b7160e01b5f52601260045260245ffd5b5f82611c5d57634e487b7160e01b5f52601260045260245ffd5b500490565b5f60208284031215611c72575f5ffd5b81516107b981611492565b60ff828116828216039081111561030c5761030c611bf1565b6001815b6001841115611cd157808504811115611cb557611cb5611bf1565b6001841615611cc357908102905b60019390931c928002611c9a565b935093915050565b5f82611ce75750600161030c565b81611cf357505f61030c565b8160018114611d095760028114611d1357611d2f565b600191505061030c565b60ff841115611d2457611d24611bf1565b50506001821b61030c565b5060208310610133831016604e8410600b8410161715611d52575081810a61030c565b611d5e5f198484611c96565b805f1904821115611d7157611d71611bf1565b029392505050565b5f6107b960ff841683611cd956fea26469706673582212200486cae3c8362248f1f209d3ecb8c8f0b2bc0d1f37ef0231456377b0a69c227b64736f6c634300081e0033","opcodes":"ADDRESS PUSH1 0x80 DUP2 DUP2 MSTORE PUSH1 0x40 PUSH2 0x160 DUP2 DUP2 MSTORE PUSH1 0x1E PUSH2 0x1A0 MSTORE PUSH32 0x636F2E656E7375726F2E496E766573745374726174656779436C69656E740000 PUSH2 0x1C0 MSTORE PUSH2 0x180 SWAP4 SWAP1 SWAP4 MSTORE PUSH2 0x140 DUP3 SWAP1 MSTORE PUSH2 0x1E0 SWAP1 MSTORE SWAP1 KECCAK256 PUSH1 0xA0 MSTORE CALLVALUE DUP1 ISZERO PUSH2 0x5A JUMPI PUSH0 PUSH0 REVERT JUMPDEST POP PUSH1 0x40 MLOAD PUSH2 0x2158 CODESIZE SUB DUP1 PUSH2 0x2158 DUP4 CODECOPY DUP2 ADD PUSH1 0x40 DUP2 SWAP1 MSTORE PUSH2 0x79 SWAP2 PUSH2 0x1FC JUMP JUMPDEST DUP4 DUP4 DUP4 DUP3 DUP3 PUSH1 0x12 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 GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0xBC JUMPI RETURNDATASIZE PUSH0 PUSH0 RETURNDATACOPY RETURNDATASIZE PUSH0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP3 ADD DUP1 PUSH1 0x40 MSTORE POP DUP2 ADD SWAP1 PUSH2 0xE0 SWAP2 SWAP1 PUSH2 0x24E JUMP JUMPDEST PUSH1 0xFF AND GT ISZERO PUSH2 0x102 JUMPI PUSH1 0x40 MLOAD PUSH4 0x6448D6E9 PUSH1 0xE1 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH1 0x12 DUP2 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 GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x140 JUMPI RETURNDATASIZE PUSH0 PUSH0 RETURNDATACOPY RETURNDATASIZE PUSH0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP3 ADD DUP1 PUSH1 0x40 MSTORE POP DUP2 ADD SWAP1 PUSH2 0x164 SWAP2 SWAP1 PUSH2 0x24E JUMP JUMPDEST PUSH1 0xFF AND GT ISZERO PUSH2 0x186 JUMPI PUSH1 0x40 MLOAD PUSH4 0x6448D6E9 PUSH1 0xE1 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST DUP1 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP3 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND SUB PUSH2 0x1B8 JUMPI PUSH1 0x40 MLOAD PUSH4 0x6448D6E9 PUSH1 0xE1 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP2 DUP3 AND PUSH1 0xC0 MSTORE DUP2 AND PUSH1 0xE0 MSTORE PUSH2 0x100 SWAP2 SWAP1 SWAP2 MSTORE SWAP3 SWAP1 SWAP3 AND PUSH2 0x120 MSTORE POP PUSH2 0x275 SWAP4 POP POP POP POP JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 AND DUP2 EQ PUSH2 0x1F9 JUMPI PUSH0 PUSH0 REVERT JUMPDEST POP JUMP JUMPDEST PUSH0 PUSH0 PUSH0 PUSH0 PUSH1 0x80 DUP6 DUP8 SUB SLT ISZERO PUSH2 0x20F JUMPI PUSH0 PUSH0 REVERT JUMPDEST DUP5 MLOAD PUSH2 0x21A DUP2 PUSH2 0x1E5 JUMP JUMPDEST PUSH1 0x20 DUP7 ADD MLOAD SWAP1 SWAP5 POP PUSH2 0x22B DUP2 PUSH2 0x1E5 JUMP JUMPDEST PUSH1 0x40 DUP7 ADD MLOAD PUSH1 0x60 DUP8 ADD MLOAD SWAP2 SWAP5 POP SWAP3 POP PUSH2 0x243 DUP2 PUSH2 0x1E5 JUMP JUMPDEST SWAP4 SWAP7 SWAP3 SWAP6 POP SWAP1 SWAP4 POP POP JUMP JUMPDEST PUSH0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x25E JUMPI PUSH0 PUSH0 REVERT JUMPDEST DUP2 MLOAD PUSH1 0xFF DUP2 AND DUP2 EQ PUSH2 0x26E JUMPI PUSH0 PUSH0 REVERT JUMPDEST SWAP4 SWAP3 POP POP POP JUMP JUMPDEST PUSH1 0x80 MLOAD PUSH1 0xA0 MLOAD PUSH1 0xC0 MLOAD PUSH1 0xE0 MLOAD PUSH2 0x100 MLOAD PUSH2 0x120 MLOAD PUSH2 0x1DBD PUSH2 0x39B PUSH0 CODECOPY PUSH0 DUP2 DUP2 PUSH2 0x3AD ADD MSTORE DUP2 DUP2 PUSH2 0xCEB ADD MSTORE DUP2 DUP2 PUSH2 0xDDD ADD MSTORE DUP2 DUP2 PUSH2 0xEBC ADD MSTORE PUSH2 0xFD5 ADD MSTORE PUSH0 DUP2 DUP2 PUSH1 0xFA ADD MSTORE DUP2 DUP2 PUSH2 0x1111 ADD MSTORE DUP2 DUP2 PUSH2 0x11DD ADD MSTORE PUSH2 0x131A ADD MSTORE PUSH0 DUP2 DUP2 PUSH2 0x23F ADD MSTORE DUP2 DUP2 PUSH2 0x378 ADD MSTORE DUP2 DUP2 PUSH2 0x43A ADD MSTORE DUP2 DUP2 PUSH2 0x703 ADD MSTORE DUP2 DUP2 PUSH2 0xAA8 ADD MSTORE DUP2 DUP2 PUSH2 0xB50 ADD MSTORE DUP2 DUP2 PUSH2 0xC76 ADD MSTORE DUP2 DUP2 PUSH2 0xD1A ADD MSTORE DUP2 DUP2 PUSH2 0xDA2 ADD MSTORE DUP2 DUP2 PUSH2 0xE81 ADD MSTORE DUP2 DUP2 PUSH2 0xFAD ADD MSTORE DUP2 DUP2 PUSH2 0x10ED ADD MSTORE PUSH2 0x11AD ADD MSTORE PUSH0 DUP2 DUP2 PUSH2 0x1BB ADD MSTORE DUP2 DUP2 PUSH2 0xB72 ADD MSTORE DUP2 DUP2 PUSH2 0xC98 ADD MSTORE DUP2 DUP2 PUSH2 0x10CB ADD MSTORE PUSH2 0x117E ADD MSTORE PUSH0 DUP2 DUP2 PUSH2 0x188 ADD MSTORE DUP2 DUP2 PUSH2 0x86A ADD MSTORE DUP2 DUP2 PUSH2 0x9F2 ADD MSTORE PUSH2 0x1251 ADD MSTORE PUSH0 DUP2 DUP2 PUSH2 0x280 ADD MSTORE DUP2 DUP2 PUSH2 0x31C ADD MSTORE DUP2 DUP2 PUSH2 0x538 ADD MSTORE DUP2 DUP2 PUSH2 0x625 ADD MSTORE DUP2 DUP2 PUSH2 0x6A2 ADD MSTORE DUP2 DUP2 PUSH2 0xA2B ADD MSTORE PUSH2 0x104E ADD MSTORE PUSH2 0x1DBD PUSH0 RETURN INVALID PUSH1 0x80 PUSH1 0x40 MSTORE CALLVALUE DUP1 ISZERO PUSH2 0xF JUMPI PUSH0 PUSH0 REVERT JUMPDEST POP PUSH1 0x4 CALLDATASIZE LT PUSH2 0xCB JUMPI PUSH0 CALLDATALOAD PUSH1 0xE0 SHR DUP1 PUSH4 0x5B9A4C35 GT PUSH2 0x88 JUMPI DUP1 PUSH4 0xB6B55F25 GT PUSH2 0x63 JUMPI DUP1 PUSH4 0xB6B55F25 EQ PUSH2 0x208 JUMPI DUP1 PUSH4 0xCE96CB77 EQ PUSH2 0x21B JUMPI DUP1 PUSH4 0xDE846AE4 EQ PUSH2 0x22E JUMPI DUP1 PUSH4 0xF3E0FFBF EQ PUSH2 0x261 JUMPI PUSH0 PUSH0 REVERT JUMPDEST DUP1 PUSH4 0x5B9A4C35 EQ PUSH2 0x183 JUMPI DUP1 PUSH4 0x9C4667A2 EQ PUSH2 0x1AA JUMPI DUP1 PUSH4 0x9CD47128 EQ PUSH2 0x1F5 JUMPI PUSH0 PUSH0 REVERT JUMPDEST DUP1 PUSH4 0x981B1C2 EQ PUSH2 0xCF JUMPI DUP1 PUSH4 0x1418983B EQ PUSH2 0xF8 JUMPI DUP1 PUSH4 0x2E1A7D4D EQ PUSH2 0x128 JUMPI DUP1 PUSH4 0x402D267D EQ PUSH2 0x13D JUMPI DUP1 PUSH4 0x42B054F0 EQ PUSH2 0x150 JUMPI DUP1 PUSH4 0x5A117456 EQ PUSH2 0x170 JUMPI JUMPDEST PUSH0 PUSH0 REVERT JUMPDEST PUSH2 0xE2 PUSH2 0xDD CALLDATASIZE PUSH1 0x4 PUSH2 0x15AB JUMP JUMPDEST PUSH2 0x274 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0xEF SWAP2 SWAP1 PUSH2 0x1626 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST PUSH32 0x0 JUMPDEST PUSH1 0x40 MLOAD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH2 0xEF JUMP JUMPDEST PUSH2 0x13B PUSH2 0x136 CALLDATASIZE PUSH1 0x4 PUSH2 0x1638 JUMP JUMPDEST PUSH2 0x312 JUMP JUMPDEST STOP JUMPDEST PUSH2 0x11A PUSH2 0x14B CALLDATASIZE PUSH1 0x4 PUSH2 0x1663 JUMP JUMPDEST PUSH2 0x4B5 JUMP JUMPDEST PUSH2 0x163 PUSH2 0x15E CALLDATASIZE PUSH1 0x4 PUSH2 0x1663 JUMP JUMPDEST PUSH2 0x50A JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0xEF SWAP2 SWAP1 PUSH2 0x16E0 JUMP JUMPDEST PUSH2 0x13B PUSH2 0x17E CALLDATASIZE PUSH1 0x4 PUSH2 0x16FF JUMP JUMPDEST PUSH2 0x52E JUMP JUMPDEST PUSH2 0x11A PUSH32 0x0 DUP2 JUMP JUMPDEST PUSH2 0x1DD PUSH2 0x1B8 CALLDATASIZE PUSH1 0x4 PUSH2 0x1663 JUMP JUMPDEST POP PUSH32 0x0 SWAP1 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP1 SWAP2 AND DUP2 MSTORE PUSH1 0x20 ADD PUSH2 0xEF JUMP JUMPDEST PUSH2 0x13B PUSH2 0x203 CALLDATASIZE PUSH1 0x4 PUSH2 0x171A JUMP JUMPDEST PUSH2 0x61B JUMP JUMPDEST PUSH2 0x13B PUSH2 0x216 CALLDATASIZE PUSH1 0x4 PUSH2 0x1638 JUMP JUMPDEST PUSH2 0x698 JUMP JUMPDEST PUSH2 0x11A PUSH2 0x229 CALLDATASIZE PUSH1 0x4 PUSH2 0x1663 JUMP JUMPDEST PUSH2 0x77A JUMP JUMPDEST PUSH2 0x1DD PUSH2 0x23C CALLDATASIZE PUSH1 0x4 PUSH2 0x1663 JUMP JUMPDEST POP PUSH32 0x0 SWAP1 JUMP JUMPDEST PUSH2 0x11A PUSH2 0x26F CALLDATASIZE PUSH1 0x4 PUSH2 0x1663 JUMP JUMPDEST PUSH2 0x7C0 JUMP JUMPDEST PUSH1 0x60 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB PUSH32 0x0 AND ADDRESS SUB PUSH2 0x2BF JUMPI PUSH1 0x40 MLOAD PUSH4 0x2ABF118B PUSH1 0xE2 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH0 PUSH1 0xFF DUP5 AND DUP1 ISZERO PUSH2 0x2D2 JUMPI PUSH2 0x2D2 PUSH2 0x167E JUMP JUMPDEST SWAP1 POP PUSH0 DUP2 DUP1 ISZERO PUSH2 0x2E4 JUMPI PUSH2 0x2E4 PUSH2 0x167E JUMP JUMPDEST SUB PUSH2 0xCB JUMPI PUSH2 0x2FB PUSH2 0x2F5 ADDRESS PUSH2 0x840 JUMP JUMPDEST DUP5 PUSH2 0x8FB JUMP JUMPDEST POP POP PUSH1 0x40 DUP1 MLOAD PUSH1 0x20 DUP2 ADD SWAP1 SWAP2 MSTORE PUSH0 DUP2 MSTORE JUMPDEST SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB PUSH32 0x0 AND ADDRESS SUB PUSH2 0x35B JUMPI PUSH1 0x40 MLOAD PUSH4 0x2ABF118B PUSH1 0xE2 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST DUP1 ISZERO PUSH2 0x4B2 JUMPI PUSH1 0x40 MLOAD PUSH4 0x1A4CA37B PUSH1 0xE2 SHL DUP2 MSTORE PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB PUSH32 0x0 DUP2 AND PUSH1 0x4 DUP4 ADD MSTORE PUSH0 NOT PUSH1 0x24 DUP4 ADD MSTORE ADDRESS PUSH1 0x44 DUP4 ADD MSTORE PUSH32 0x0 AND SWAP1 PUSH4 0x69328DEC SWAP1 PUSH1 0x64 ADD PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 PUSH0 DUP8 GAS CALL ISZERO DUP1 ISZERO PUSH2 0x3F3 JUMPI RETURNDATASIZE PUSH0 PUSH0 RETURNDATACOPY RETURNDATASIZE PUSH0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP3 ADD DUP1 PUSH1 0x40 MSTORE POP DUP2 ADD SWAP1 PUSH2 0x417 SWAP2 SWAP1 PUSH2 0x174C JUMP JUMPDEST POP PUSH2 0x421 DUP2 PUSH2 0xA21 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH4 0x70A08231 PUSH1 0xE0 SHL DUP2 MSTORE ADDRESS PUSH1 0x4 DUP3 ADD MSTORE PUSH2 0x4B2 SWAP1 PUSH32 0x0 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND SWAP1 PUSH4 0x70A08231 SWAP1 PUSH1 0x24 ADD PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x487 JUMPI RETURNDATASIZE PUSH0 PUSH0 RETURNDATACOPY RETURNDATASIZE PUSH0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP3 ADD DUP1 PUSH1 0x40 MSTORE POP DUP2 ADD SWAP1 PUSH2 0x4AB SWAP2 SWAP1 PUSH2 0x174C JUMP JUMPDEST PUSH1 0x1 PUSH2 0xCC9 JUMP JUMPDEST POP JUMP JUMPDEST PUSH0 PUSH0 PUSH2 0x4BF PUSH2 0xF17 JUMP JUMPDEST DUP1 MLOAD MLOAD SWAP1 SWAP2 POP PUSH1 0x1 PUSH1 0x38 SHL AND ISZERO DUP1 PUSH2 0x4DE JUMPI POP DUP1 MLOAD MLOAD PUSH1 0x1 PUSH1 0x3C SHL AND ISZERO ISZERO JUMPDEST DUP1 PUSH2 0x4F4 JUMPI POP DUP1 MLOAD MLOAD PUSH8 0x200000000000000 AND ISZERO ISZERO JUMPDEST ISZERO PUSH2 0x501 JUMPI POP PUSH0 SWAP3 SWAP2 POP POP JUMP JUMPDEST POP PUSH0 NOT SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH1 0x60 DUP1 DUP3 ADD DUP4 MSTORE PUSH0 DUP1 DUP4 MSTORE PUSH1 0x20 DUP4 ADD MSTORE SWAP2 DUP2 ADD SWAP2 SWAP1 SWAP2 MSTORE PUSH2 0x30C DUP3 PUSH2 0x840 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB PUSH32 0x0 AND ADDRESS SUB PUSH2 0x577 JUMPI PUSH1 0x40 MLOAD PUSH4 0x2ABF118B PUSH1 0xE2 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH0 PUSH2 0x580 PUSH2 0xF17 JUMP JUMPDEST PUSH2 0x100 ADD MLOAD SWAP1 POP DUP2 ISZERO DUP1 ISZERO PUSH2 0x5F9 JUMPI POP PUSH1 0x40 MLOAD PUSH4 0x70A08231 PUSH1 0xE0 SHL DUP2 MSTORE ADDRESS PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP3 AND SWAP1 PUSH4 0x70A08231 SWAP1 PUSH1 0x24 ADD PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x5D2 JUMPI RETURNDATASIZE PUSH0 PUSH0 RETURNDATACOPY RETURNDATASIZE PUSH0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP3 ADD DUP1 PUSH1 0x40 MSTORE POP DUP2 ADD SWAP1 PUSH2 0x5F6 SWAP2 SWAP1 PUSH2 0x174C JUMP JUMPDEST ISZERO ISZERO JUMPDEST ISZERO PUSH2 0x617 JUMPI PUSH1 0x40 MLOAD PUSH4 0x42A176D1 PUSH1 0xE1 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST POP POP JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB PUSH32 0x0 AND ADDRESS SUB PUSH2 0x664 JUMPI PUSH1 0x40 MLOAD PUSH4 0x2ABF118B PUSH1 0xE2 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH1 0x60 DUP2 ADD SWAP1 SWAP2 MSTORE PUSH2 0x4B2 SWAP1 DUP1 PUSH0 DUP2 MSTORE PUSH1 0x20 ADD PUSH0 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x40 MLOAD DUP1 PUSH1 0x20 ADD PUSH1 0x40 MSTORE DUP1 PUSH0 DUP2 MSTORE POP DUP2 MSTORE POP DUP3 PUSH2 0x8FB JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB PUSH32 0x0 AND ADDRESS SUB PUSH2 0x6E1 JUMPI PUSH1 0x40 MLOAD PUSH4 0x2ABF118B PUSH1 0xE2 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH2 0x6EA DUP2 PUSH2 0x1044 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH4 0x70A08231 PUSH1 0xE0 SHL DUP2 MSTORE ADDRESS PUSH1 0x4 DUP3 ADD MSTORE PUSH2 0x4B2 SWAP1 PUSH32 0x0 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND SWAP1 PUSH4 0x70A08231 SWAP1 PUSH1 0x24 ADD PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x750 JUMPI RETURNDATASIZE PUSH0 PUSH0 RETURNDATACOPY RETURNDATASIZE PUSH0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP3 ADD DUP1 PUSH1 0x40 MSTORE POP DUP2 ADD SWAP1 PUSH2 0x774 SWAP2 SWAP1 PUSH2 0x174C JUMP JUMPDEST PUSH0 PUSH2 0xCC9 JUMP JUMPDEST PUSH0 PUSH0 PUSH2 0x784 PUSH2 0xF17 JUMP JUMPDEST DUP1 MLOAD MLOAD SWAP1 SWAP2 POP PUSH1 0x1 PUSH1 0x38 SHL AND ISZERO DUP1 PUSH2 0x7A3 JUMPI POP DUP1 MLOAD MLOAD PUSH1 0x1 PUSH1 0x3C SHL AND ISZERO ISZERO JUMPDEST ISZERO PUSH2 0x7B0 JUMPI POP PUSH0 SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH2 0x7B9 DUP4 PUSH2 0x7C0 JUMP JUMPDEST SWAP4 SWAP3 POP POP POP JUMP JUMPDEST PUSH0 PUSH2 0x30C PUSH2 0x7CC PUSH2 0xF17 JUMP JUMPDEST PUSH2 0x100 ADD MLOAD PUSH1 0x40 MLOAD PUSH4 0x70A08231 PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP6 DUP2 AND PUSH1 0x4 DUP4 ADD MSTORE SWAP1 SWAP2 AND SWAP1 PUSH4 0x70A08231 SWAP1 PUSH1 0x24 ADD PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x816 JUMPI RETURNDATASIZE PUSH0 PUSH0 RETURNDATACOPY RETURNDATASIZE PUSH0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP3 ADD DUP1 PUSH1 0x40 MSTORE POP DUP2 ADD SWAP1 PUSH2 0x83A SWAP2 SWAP1 PUSH2 0x174C JUMP JUMPDEST DUP4 PUSH2 0x1178 JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH1 0x60 DUP1 DUP3 ADD DUP4 MSTORE PUSH0 DUP1 DUP4 MSTORE PUSH1 0x20 DUP4 ADD MSTORE SWAP2 DUP2 ADD SWAP2 SWAP1 SWAP2 MSTORE PUSH1 0x40 MLOAD PUSH4 0x47E57533 PUSH1 0xE0 SHL DUP2 MSTORE PUSH32 0x0 PUSH1 0x4 DUP3 ADD MSTORE PUSH0 SWAP1 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP5 AND SWAP1 PUSH4 0x47E57533 SWAP1 PUSH1 0x24 ADD PUSH0 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x8BE JUMPI RETURNDATASIZE PUSH0 PUSH0 RETURNDATACOPY RETURNDATASIZE PUSH0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH0 DUP3 RETURNDATACOPY PUSH1 0x1F RETURNDATASIZE SWAP1 DUP2 ADD PUSH1 0x1F NOT AND DUP3 ADD PUSH1 0x40 MSTORE PUSH2 0x8E5 SWAP2 SWAP1 DUP2 ADD SWAP1 PUSH2 0x17B0 JUMP JUMPDEST SWAP1 POP DUP1 DUP1 PUSH1 0x20 ADD SWAP1 MLOAD DUP2 ADD SWAP1 PUSH2 0x7B9 SWAP2 SWAP1 PUSH2 0x17E2 JUMP JUMPDEST PUSH0 DUP2 DUP1 PUSH1 0x20 ADD SWAP1 MLOAD DUP2 ADD SWAP1 PUSH2 0x910 SWAP2 SWAP1 PUSH2 0x17E2 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH4 0x2CBF28CB PUSH1 0xE2 SHL DUP2 MSTORE SWAP1 SWAP2 POP PUSH20 0x0 SWAP1 PUSH4 0xB2FCA32C SWAP1 PUSH2 0x94A SWAP1 DUP5 SWAP1 PUSH1 0x4 ADD PUSH2 0x16E0 JUMP JUMPDEST PUSH0 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x960 JUMPI PUSH0 PUSH0 REVERT JUMPDEST POP GAS DELEGATECALL ISZERO DUP1 ISZERO PUSH2 0x972 JUMPI RETURNDATASIZE PUSH0 PUSH0 RETURNDATACOPY RETURNDATASIZE PUSH0 REVERT JUMPDEST POP POP POP POP DUP2 MLOAD DUP2 PUSH1 0x40 MLOAD PUSH1 0x20 ADD PUSH2 0x989 SWAP2 SWAP1 PUSH2 0x16E0 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH1 0x20 DUP2 DUP4 SUB SUB DUP2 MSTORE SWAP1 PUSH1 0x40 MSTORE MLOAD EQ PUSH2 0x9B7 JUMPI PUSH1 0x40 MLOAD PUSH4 0x50701B61 PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH32 0xCA7F7AA563866A1D31C74DEBA224724D1DA9C35CBB6F783F2CCF0182F91E34F8 DUP4 DUP3 PUSH1 0x40 MLOAD PUSH2 0x9E8 SWAP3 SWAP2 SWAP1 PUSH2 0x186E JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 LOG1 PUSH32 0x0 PUSH2 0xA1B DUP4 DUP3 PUSH2 0x191E JUMP JUMPDEST POP POP POP POP JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB PUSH32 0x0 AND ADDRESS SUB PUSH2 0xA6A JUMPI PUSH1 0x40 MLOAD PUSH4 0x2ABF118B PUSH1 0xE2 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST DUP1 ISZERO PUSH2 0x4B2 JUMPI PUSH0 PUSH2 0xA79 PUSH2 0x1234 JUMP JUMPDEST SWAP1 POP PUSH0 PUSH2 0xA84 PUSH2 0x130A JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH4 0x70A08231 PUSH1 0xE0 SHL DUP2 MSTORE ADDRESS PUSH1 0x4 DUP3 ADD MSTORE SWAP1 SWAP2 POP PUSH2 0xB17 SWAP1 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB PUSH32 0x0 AND SWAP1 PUSH4 0x70A08231 SWAP1 PUSH1 0x24 ADD PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0xAED JUMPI RETURNDATASIZE PUSH0 PUSH0 RETURNDATACOPY RETURNDATASIZE PUSH0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP3 ADD DUP1 PUSH1 0x40 MSTORE POP DUP2 ADD SWAP1 PUSH2 0xB11 SWAP2 SWAP1 PUSH2 0x174C JUMP JUMPDEST ADDRESS PUSH2 0x1178 JUMP JUMPDEST DUP4 LT PUSH2 0xC45 JUMPI PUSH1 0x40 MLOAD PUSH4 0x70A08231 PUSH1 0xE0 SHL DUP2 MSTORE ADDRESS PUSH1 0x4 DUP3 ADD MSTORE PUSH20 0x0 SWAP1 PUSH4 0x77566915 SWAP1 DUP5 SWAP1 PUSH32 0x0 SWAP1 PUSH32 0x0 SWAP1 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP4 AND SWAP1 PUSH4 0x70A08231 SWAP1 PUSH1 0x24 ADD PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0xBC1 JUMPI RETURNDATASIZE PUSH0 PUSH0 RETURNDATACOPY RETURNDATASIZE PUSH0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP3 ADD DUP1 PUSH1 0x40 MSTORE POP DUP2 ADD SWAP1 PUSH2 0xBE5 SWAP2 SWAP1 PUSH2 0x174C JUMP JUMPDEST DUP7 PUSH1 0x40 MLOAD DUP7 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0xC06 SWAP6 SWAP5 SWAP4 SWAP3 SWAP2 SWAP1 PUSH2 0x19D9 JUMP JUMPDEST PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 GAS DELEGATECALL ISZERO DUP1 ISZERO PUSH2 0xC21 JUMPI RETURNDATASIZE PUSH0 PUSH0 RETURNDATACOPY RETURNDATASIZE PUSH0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP3 ADD DUP1 PUSH1 0x40 MSTORE POP DUP2 ADD SWAP1 PUSH2 0xA1B SWAP2 SWAP1 PUSH2 0x174C JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH4 0x581E517D PUSH1 0xE0 SHL DUP2 MSTORE PUSH20 0x0 SWAP1 PUSH4 0x581E517D SWAP1 PUSH2 0xC06 SWAP1 DUP6 SWAP1 PUSH32 0x0 SWAP1 PUSH32 0x0 SWAP1 DUP10 SWAP1 DUP9 SWAP1 PUSH1 0x4 ADD PUSH2 0x19D9 JUMP JUMPDEST POP POP POP JUMP JUMPDEST DUP2 PUSH0 SUB PUSH2 0xCD4 JUMPI POP POP JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH4 0x95EA7B3 PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB PUSH32 0x0 DUP2 AND PUSH1 0x4 DUP4 ADD MSTORE PUSH1 0x24 DUP3 ADD DUP5 SWAP1 MSTORE PUSH32 0x0 AND SWAP1 PUSH4 0x95EA7B3 SWAP1 PUSH1 0x44 ADD PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 PUSH0 DUP8 GAS CALL ISZERO DUP1 ISZERO PUSH2 0xD60 JUMPI RETURNDATASIZE PUSH0 PUSH0 RETURNDATACOPY RETURNDATASIZE PUSH0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP3 ADD DUP1 PUSH1 0x40 MSTORE POP DUP2 ADD SWAP1 PUSH2 0xD84 SWAP2 SWAP1 PUSH2 0x1A18 JUMP JUMPDEST POP DUP1 ISZERO PUSH2 0xE6A JUMPI PUSH1 0x40 MLOAD PUSH4 0x617BA037 PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB PUSH32 0x0 DUP2 AND PUSH1 0x4 DUP4 ADD MSTORE PUSH1 0x24 DUP3 ADD DUP5 SWAP1 MSTORE ADDRESS PUSH1 0x44 DUP4 ADD MSTORE PUSH0 PUSH1 0x64 DUP4 ADD MSTORE PUSH32 0x0 AND SWAP1 PUSH4 0x617BA037 SWAP1 PUSH1 0x84 ADD PUSH0 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 PUSH0 DUP8 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0xE1E JUMPI PUSH0 PUSH0 REVERT JUMPDEST POP GAS CALL SWAP3 POP POP POP DUP1 ISZERO PUSH2 0xE2F JUMPI POP PUSH1 0x1 JUMPDEST PUSH2 0x617 JUMPI PUSH1 0x40 MLOAD DUP3 DUP2 MSTORE PUSH32 0x323F803AB99BD4B7B37BBA0E83169793239F293CC8B9D11837997563C5902EAC SWAP1 PUSH1 0x20 ADD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 LOG1 POP POP JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH4 0x617BA037 PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB PUSH32 0x0 DUP2 AND PUSH1 0x4 DUP4 ADD MSTORE PUSH1 0x24 DUP3 ADD DUP5 SWAP1 MSTORE ADDRESS PUSH1 0x44 DUP4 ADD MSTORE PUSH0 PUSH1 0x64 DUP4 ADD MSTORE PUSH32 0x0 AND SWAP1 PUSH4 0x617BA037 SWAP1 PUSH1 0x84 ADD PUSH0 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 PUSH0 DUP8 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0xEFD JUMPI PUSH0 PUSH0 REVERT JUMPDEST POP GAS CALL ISZERO DUP1 ISZERO PUSH2 0xF0F JUMPI RETURNDATASIZE PUSH0 PUSH0 RETURNDATACOPY RETURNDATASIZE PUSH0 REVERT JUMPDEST POP POP POP POP POP POP JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH2 0x200 DUP2 ADD DUP3 MSTORE PUSH0 PUSH2 0x1E0 DUP3 ADD DUP2 DUP2 MSTORE 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 PUSH1 0xC0 DUP2 ADD DUP3 SWAP1 MSTORE PUSH1 0xE0 DUP2 ADD DUP3 SWAP1 MSTORE PUSH2 0x100 DUP2 ADD DUP3 SWAP1 MSTORE PUSH2 0x120 DUP2 ADD DUP3 SWAP1 MSTORE PUSH2 0x140 DUP2 ADD DUP3 SWAP1 MSTORE PUSH2 0x160 DUP2 ADD DUP3 SWAP1 MSTORE PUSH2 0x180 DUP2 ADD DUP3 SWAP1 MSTORE PUSH2 0x1A0 DUP2 ADD DUP3 SWAP1 MSTORE PUSH2 0x1C0 DUP2 ADD SWAP2 SWAP1 SWAP2 MSTORE PUSH1 0x40 MLOAD PUSH4 0x35EA6A75 PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB PUSH32 0x0 DUP2 AND PUSH1 0x4 DUP4 ADD MSTORE PUSH32 0x0 AND SWAP1 PUSH4 0x35EA6A75 SWAP1 PUSH1 0x24 ADD PUSH2 0x1E0 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x101B JUMPI RETURNDATASIZE PUSH0 PUSH0 RETURNDATACOPY RETURNDATASIZE PUSH0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP3 ADD DUP1 PUSH1 0x40 MSTORE POP DUP2 ADD SWAP1 PUSH2 0x103F SWAP2 SWAP1 PUSH2 0x1AC7 JUMP JUMPDEST SWAP1 POP SWAP1 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB PUSH32 0x0 AND ADDRESS SUB PUSH2 0x108D JUMPI PUSH1 0x40 MLOAD PUSH4 0x2ABF118B PUSH1 0xE2 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST DUP1 ISZERO PUSH2 0x4B2 JUMPI PUSH2 0x109B PUSH2 0x1234 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH4 0x77566915 PUSH1 0xE0 SHL DUP2 MSTORE PUSH20 0x0 SWAP2 PUSH4 0x77566915 SWAP2 PUSH2 0x1139 SWAP2 SWAP1 PUSH32 0x0 SWAP1 PUSH32 0x0 SWAP1 DUP8 SWAP1 PUSH32 0x0 SWAP1 PUSH1 0x4 ADD PUSH2 0x19D9 JUMP JUMPDEST PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 GAS DELEGATECALL ISZERO DUP1 ISZERO PUSH2 0x1154 JUMPI RETURNDATASIZE PUSH0 PUSH0 RETURNDATACOPY RETURNDATASIZE PUSH0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP3 ADD DUP1 PUSH1 0x40 MSTORE POP DUP2 ADD SWAP1 PUSH2 0x617 SWAP2 SWAP1 PUSH2 0x174C JUMP JUMPDEST PUSH0 PUSH2 0x11A2 PUSH32 0x0 PUSH2 0x133E JUMP JUMPDEST PUSH2 0x122A PUSH2 0x120B PUSH2 0x11D1 PUSH32 0x0 PUSH2 0x133E JUMP JUMPDEST PUSH2 0x11DB SWAP1 DUP8 PUSH2 0x1C05 JUMP JUMPDEST PUSH32 0x0 JUMPDEST PUSH8 0xDE0B6B3A7640000 PUSH2 0x13B5 JUMP JUMPDEST PUSH2 0x1214 DUP6 PUSH2 0x840 JUMP JUMPDEST PUSH1 0x20 ADD MLOAD PUSH2 0x11FD SWAP1 PUSH8 0xDE0B6B3A7640000 PUSH2 0x1C1C JUMP JUMPDEST PUSH2 0x7B9 SWAP2 SWAP1 PUSH2 0x1C43 JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH1 0x60 DUP1 DUP3 ADD DUP4 MSTORE PUSH0 DUP1 DUP4 MSTORE PUSH1 0x20 DUP4 ADD MSTORE SWAP2 DUP2 ADD SWAP2 SWAP1 SWAP2 MSTORE PUSH32 0x0 DUP1 SLOAD PUSH2 0x127B SWAP1 PUSH2 0x189B 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 0x12A7 SWAP1 PUSH2 0x189B JUMP JUMPDEST DUP1 ISZERO PUSH2 0x12F2 JUMPI DUP1 PUSH1 0x1F LT PUSH2 0x12C9 JUMPI PUSH2 0x100 DUP1 DUP4 SLOAD DIV MUL DUP4 MSTORE SWAP2 PUSH1 0x20 ADD SWAP2 PUSH2 0x12F2 JUMP JUMPDEST DUP3 ADD SWAP2 SWAP1 PUSH0 MSTORE PUSH1 0x20 PUSH0 KECCAK256 SWAP1 JUMPDEST DUP2 SLOAD DUP2 MSTORE SWAP1 PUSH1 0x1 ADD SWAP1 PUSH1 0x20 ADD DUP1 DUP4 GT PUSH2 0x12D5 JUMPI DUP3 SWAP1 SUB PUSH1 0x1F AND DUP3 ADD SWAP2 JUMPDEST POP POP POP POP POP DUP1 PUSH1 0x20 ADD SWAP1 MLOAD DUP2 ADD SWAP1 PUSH2 0x103F SWAP2 SWAP1 PUSH2 0x17E2 JUMP JUMPDEST PUSH0 PUSH2 0x103F PUSH8 0xDE0B6B3A7640000 DUP1 PUSH32 0x0 PUSH2 0x13B5 JUMP JUMPDEST PUSH0 DUP2 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 GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x137B JUMPI RETURNDATASIZE PUSH0 PUSH0 RETURNDATACOPY RETURNDATASIZE PUSH0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP3 ADD DUP1 PUSH1 0x40 MSTORE POP DUP2 ADD SWAP1 PUSH2 0x139F SWAP2 SWAP1 PUSH2 0x1C62 JUMP JUMPDEST PUSH2 0x13AA SWAP1 PUSH1 0x12 PUSH2 0x1C7D JUMP JUMPDEST PUSH2 0x30C SWAP1 PUSH1 0xA PUSH2 0x1D79 JUMP JUMPDEST PUSH0 PUSH0 PUSH0 PUSH2 0x13C2 DUP7 DUP7 PUSH2 0x1465 JUMP JUMPDEST SWAP2 POP SWAP2 POP DUP2 PUSH0 SUB PUSH2 0x13E6 JUMPI DUP4 DUP2 DUP2 PUSH2 0x13DC JUMPI PUSH2 0x13DC PUSH2 0x1C2F JUMP JUMPDEST DIV SWAP3 POP POP POP PUSH2 0x7B9 JUMP JUMPDEST DUP2 DUP5 GT PUSH2 0x13FD JUMPI PUSH2 0x13FD PUSH1 0x3 DUP6 ISZERO MUL PUSH1 0x11 XOR PUSH2 0x1481 JUMP JUMPDEST PUSH0 DUP5 DUP7 DUP9 MULMOD PUSH0 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 DUP6 DUP5 GT SWAP1 SWAP7 SUB SWAP6 SWAP1 SWAP6 MUL SWAP2 SWAP1 SWAP4 SUB SWAP4 SWAP1 SWAP4 DIV SWAP3 SWAP1 SWAP3 OR MUL SWAP2 POP POP SWAP4 SWAP3 POP POP POP JUMP JUMPDEST PUSH0 DUP1 PUSH0 NOT DUP4 DUP6 MULMOD SWAP4 SWAP1 SWAP3 MUL DUP1 DUP5 LT SWAP4 DUP2 SWAP1 SUB SWAP4 SWAP1 SWAP4 SUB SWAP4 SWAP2 POP POP JUMP JUMPDEST PUSH4 0x4E487B71 PUSH0 MSTORE DUP1 PUSH1 0x20 MSTORE PUSH1 0x24 PUSH1 0x1C REVERT JUMPDEST PUSH1 0xFF DUP2 AND DUP2 EQ PUSH2 0x4B2 JUMPI PUSH0 PUSH0 REVERT JUMPDEST PUSH4 0x4E487B71 PUSH1 0xE0 SHL PUSH0 MSTORE PUSH1 0x41 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH0 REVERT JUMPDEST PUSH1 0x40 MLOAD PUSH1 0x60 DUP2 ADD PUSH8 0xFFFFFFFFFFFFFFFF DUP2 GT DUP3 DUP3 LT OR ISZERO PUSH2 0x14D7 JUMPI PUSH2 0x14D7 PUSH2 0x14A0 JUMP JUMPDEST PUSH1 0x40 MSTORE SWAP1 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0x1E0 DUP2 ADD PUSH8 0xFFFFFFFFFFFFFFFF DUP2 GT DUP3 DUP3 LT OR ISZERO PUSH2 0x14D7 JUMPI PUSH2 0x14D7 PUSH2 0x14A0 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH1 0x1F DUP3 ADD PUSH1 0x1F NOT AND DUP2 ADD PUSH8 0xFFFFFFFFFFFFFFFF DUP2 GT DUP3 DUP3 LT OR ISZERO PUSH2 0x152A JUMPI PUSH2 0x152A PUSH2 0x14A0 JUMP JUMPDEST PUSH1 0x40 MSTORE SWAP2 SWAP1 POP JUMP JUMPDEST PUSH0 PUSH8 0xFFFFFFFFFFFFFFFF DUP3 GT ISZERO PUSH2 0x154B JUMPI PUSH2 0x154B PUSH2 0x14A0 JUMP JUMPDEST POP PUSH1 0x1F ADD PUSH1 0x1F NOT AND PUSH1 0x20 ADD SWAP1 JUMP JUMPDEST PUSH0 DUP3 PUSH1 0x1F DUP4 ADD SLT PUSH2 0x1568 JUMPI PUSH0 PUSH0 REVERT JUMPDEST DUP2 CALLDATALOAD PUSH2 0x157B PUSH2 0x1576 DUP3 PUSH2 0x1532 JUMP JUMPDEST PUSH2 0x1501 JUMP JUMPDEST DUP2 DUP2 MSTORE DUP5 PUSH1 0x20 DUP4 DUP7 ADD ADD GT ISZERO PUSH2 0x158F JUMPI PUSH0 PUSH0 REVERT JUMPDEST DUP2 PUSH1 0x20 DUP6 ADD PUSH1 0x20 DUP4 ADD CALLDATACOPY PUSH0 SWAP2 DUP2 ADD PUSH1 0x20 ADD SWAP2 SWAP1 SWAP2 MSTORE SWAP4 SWAP3 POP POP POP JUMP JUMPDEST PUSH0 PUSH0 PUSH1 0x40 DUP4 DUP6 SUB SLT ISZERO PUSH2 0x15BC JUMPI PUSH0 PUSH0 REVERT JUMPDEST DUP3 CALLDATALOAD PUSH2 0x15C7 DUP2 PUSH2 0x1492 JUMP JUMPDEST SWAP2 POP PUSH1 0x20 DUP4 ADD CALLDATALOAD PUSH8 0xFFFFFFFFFFFFFFFF DUP2 GT ISZERO PUSH2 0x15E2 JUMPI PUSH0 PUSH0 REVERT JUMPDEST PUSH2 0x15EE DUP6 DUP3 DUP7 ADD PUSH2 0x1559 JUMP JUMPDEST SWAP2 POP POP SWAP3 POP SWAP3 SWAP1 POP JUMP JUMPDEST PUSH0 DUP2 MLOAD DUP1 DUP5 MSTORE DUP1 PUSH1 0x20 DUP5 ADD PUSH1 0x20 DUP7 ADD MCOPY PUSH0 PUSH1 0x20 DUP3 DUP7 ADD ADD MSTORE PUSH1 0x20 PUSH1 0x1F NOT PUSH1 0x1F DUP4 ADD AND DUP6 ADD ADD SWAP2 POP POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x20 DUP2 MSTORE PUSH0 PUSH2 0x7B9 PUSH1 0x20 DUP4 ADD DUP5 PUSH2 0x15F8 JUMP JUMPDEST PUSH0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x1648 JUMPI PUSH0 PUSH0 REVERT JUMPDEST POP CALLDATALOAD SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 AND DUP2 EQ PUSH2 0x4B2 JUMPI PUSH0 PUSH0 REVERT JUMPDEST PUSH0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x1673 JUMPI PUSH0 PUSH0 REVERT JUMPDEST DUP2 CALLDATALOAD PUSH2 0x7B9 DUP2 PUSH2 0x164F JUMP JUMPDEST PUSH4 0x4E487B71 PUSH1 0xE0 SHL PUSH0 MSTORE PUSH1 0x21 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH0 REVERT JUMPDEST PUSH0 DUP2 MLOAD PUSH1 0x3 DUP2 LT PUSH2 0x16B1 JUMPI PUSH4 0x4E487B71 PUSH1 0xE0 SHL PUSH0 MSTORE PUSH1 0x21 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH0 REVERT JUMPDEST DUP1 DUP5 MSTORE POP PUSH1 0x20 DUP3 ADD MLOAD PUSH1 0x20 DUP5 ADD MSTORE PUSH1 0x40 DUP3 ADD MLOAD PUSH1 0x60 PUSH1 0x40 DUP6 ADD MSTORE PUSH2 0x16D8 PUSH1 0x60 DUP6 ADD DUP3 PUSH2 0x15F8 JUMP JUMPDEST SWAP5 SWAP4 POP POP POP POP JUMP JUMPDEST PUSH1 0x20 DUP2 MSTORE PUSH0 PUSH2 0x7B9 PUSH1 0x20 DUP4 ADD DUP5 PUSH2 0x1692 JUMP JUMPDEST DUP1 ISZERO ISZERO DUP2 EQ PUSH2 0x4B2 JUMPI PUSH0 PUSH0 REVERT JUMPDEST PUSH0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x170F JUMPI PUSH0 PUSH0 REVERT JUMPDEST DUP2 CALLDATALOAD PUSH2 0x7B9 DUP2 PUSH2 0x16F2 JUMP JUMPDEST PUSH0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x172A JUMPI PUSH0 PUSH0 REVERT JUMPDEST DUP2 CALLDATALOAD PUSH8 0xFFFFFFFFFFFFFFFF DUP2 GT ISZERO PUSH2 0x1740 JUMPI PUSH0 PUSH0 REVERT JUMPDEST PUSH2 0x16D8 DUP5 DUP3 DUP6 ADD PUSH2 0x1559 JUMP JUMPDEST PUSH0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x175C JUMPI PUSH0 PUSH0 REVERT JUMPDEST POP MLOAD SWAP2 SWAP1 POP JUMP JUMPDEST PUSH0 DUP3 PUSH1 0x1F DUP4 ADD SLT PUSH2 0x1772 JUMPI PUSH0 PUSH0 REVERT JUMPDEST DUP2 MLOAD PUSH2 0x1780 PUSH2 0x1576 DUP3 PUSH2 0x1532 JUMP JUMPDEST DUP2 DUP2 MSTORE DUP5 PUSH1 0x20 DUP4 DUP7 ADD ADD GT ISZERO PUSH2 0x1794 JUMPI PUSH0 PUSH0 REVERT JUMPDEST DUP2 PUSH1 0x20 DUP6 ADD PUSH1 0x20 DUP4 ADD MCOPY PUSH0 SWAP2 DUP2 ADD PUSH1 0x20 ADD SWAP2 SWAP1 SWAP2 MSTORE SWAP4 SWAP3 POP POP POP JUMP JUMPDEST PUSH0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x17C0 JUMPI PUSH0 PUSH0 REVERT JUMPDEST DUP2 MLOAD PUSH8 0xFFFFFFFFFFFFFFFF DUP2 GT ISZERO PUSH2 0x17D6 JUMPI PUSH0 PUSH0 REVERT JUMPDEST PUSH2 0x16D8 DUP5 DUP3 DUP6 ADD PUSH2 0x1763 JUMP JUMPDEST PUSH0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x17F2 JUMPI PUSH0 PUSH0 REVERT JUMPDEST DUP2 MLOAD PUSH8 0xFFFFFFFFFFFFFFFF DUP2 GT ISZERO PUSH2 0x1808 JUMPI PUSH0 PUSH0 REVERT JUMPDEST DUP3 ADD PUSH1 0x60 DUP2 DUP6 SUB SLT ISZERO PUSH2 0x1819 JUMPI PUSH0 PUSH0 REVERT JUMPDEST PUSH2 0x1821 PUSH2 0x14B4 JUMP JUMPDEST DUP2 MLOAD PUSH1 0x3 DUP2 LT PUSH2 0x182F JUMPI PUSH0 PUSH0 REVERT JUMPDEST DUP2 MSTORE PUSH1 0x20 DUP3 DUP2 ADD MLOAD SWAP1 DUP3 ADD MSTORE PUSH1 0x40 DUP3 ADD MLOAD PUSH8 0xFFFFFFFFFFFFFFFF DUP2 GT ISZERO PUSH2 0x1854 JUMPI PUSH0 PUSH0 REVERT JUMPDEST PUSH2 0x1860 DUP7 DUP3 DUP6 ADD PUSH2 0x1763 JUMP JUMPDEST PUSH1 0x40 DUP4 ADD MSTORE POP SWAP5 SWAP4 POP POP POP POP JUMP JUMPDEST PUSH1 0x40 DUP2 MSTORE PUSH0 PUSH2 0x1880 PUSH1 0x40 DUP4 ADD DUP6 PUSH2 0x1692 JUMP JUMPDEST DUP3 DUP2 SUB PUSH1 0x20 DUP5 ADD MSTORE PUSH2 0x1892 DUP2 DUP6 PUSH2 0x1692 JUMP JUMPDEST SWAP6 SWAP5 POP POP POP POP POP JUMP JUMPDEST PUSH1 0x1 DUP2 DUP2 SHR SWAP1 DUP3 AND DUP1 PUSH2 0x18AF JUMPI PUSH1 0x7F DUP3 AND SWAP2 POP JUMPDEST PUSH1 0x20 DUP3 LT DUP2 SUB PUSH2 0x18CD JUMPI PUSH4 0x4E487B71 PUSH1 0xE0 SHL PUSH0 MSTORE PUSH1 0x22 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH0 REVERT JUMPDEST POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x1F DUP3 GT ISZERO PUSH2 0xCC4 JUMPI DUP1 PUSH0 MSTORE PUSH1 0x20 PUSH0 KECCAK256 PUSH1 0x1F DUP5 ADD PUSH1 0x5 SHR DUP2 ADD PUSH1 0x20 DUP6 LT ISZERO PUSH2 0x18F8 JUMPI POP DUP1 JUMPDEST PUSH1 0x1F DUP5 ADD PUSH1 0x5 SHR DUP3 ADD SWAP2 POP JUMPDEST DUP2 DUP2 LT ISZERO PUSH2 0x1917 JUMPI PUSH0 DUP2 SSTORE PUSH1 0x1 ADD PUSH2 0x1904 JUMP JUMPDEST POP POP POP POP POP JUMP JUMPDEST DUP2 MLOAD PUSH8 0xFFFFFFFFFFFFFFFF DUP2 GT ISZERO PUSH2 0x1938 JUMPI PUSH2 0x1938 PUSH2 0x14A0 JUMP JUMPDEST PUSH2 0x194C DUP2 PUSH2 0x1946 DUP5 SLOAD PUSH2 0x189B JUMP JUMPDEST DUP5 PUSH2 0x18D3 JUMP JUMPDEST PUSH1 0x20 PUSH1 0x1F DUP3 GT PUSH1 0x1 DUP2 EQ PUSH2 0x197E JUMPI PUSH0 DUP4 ISZERO PUSH2 0x1967 JUMPI POP DUP5 DUP3 ADD MLOAD JUMPDEST PUSH0 NOT PUSH1 0x3 DUP6 SWAP1 SHL SHR NOT AND PUSH1 0x1 DUP5 SWAP1 SHL OR DUP5 SSTORE PUSH2 0x1917 JUMP JUMPDEST PUSH0 DUP5 DUP2 MSTORE PUSH1 0x20 DUP2 KECCAK256 PUSH1 0x1F NOT DUP6 AND SWAP2 JUMPDEST DUP3 DUP2 LT ISZERO PUSH2 0x19AD JUMPI DUP8 DUP6 ADD MLOAD DUP3 SSTORE PUSH1 0x20 SWAP5 DUP6 ADD SWAP5 PUSH1 0x1 SWAP1 SWAP3 ADD SWAP2 ADD PUSH2 0x198D JUMP JUMPDEST POP DUP5 DUP3 LT ISZERO PUSH2 0x19CA JUMPI DUP7 DUP5 ADD MLOAD PUSH0 NOT PUSH1 0x3 DUP8 SWAP1 SHL PUSH1 0xF8 AND SHR NOT AND DUP2 SSTORE JUMPDEST POP POP POP POP PUSH1 0x1 SWAP1 DUP2 SHL ADD SWAP1 SSTORE POP JUMP JUMPDEST PUSH1 0xA0 DUP2 MSTORE PUSH0 PUSH2 0x19EB PUSH1 0xA0 DUP4 ADD DUP9 PUSH2 0x1692 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP7 DUP8 AND PUSH1 0x20 DUP5 ADD MSTORE SWAP5 SWAP1 SWAP6 AND PUSH1 0x40 DUP3 ADD MSTORE PUSH1 0x60 DUP2 ADD SWAP3 SWAP1 SWAP3 MSTORE PUSH1 0x80 SWAP1 SWAP2 ADD MSTORE SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x1A28 JUMPI PUSH0 PUSH0 REVERT JUMPDEST DUP2 MLOAD PUSH2 0x7B9 DUP2 PUSH2 0x16F2 JUMP JUMPDEST PUSH0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x1A43 JUMPI PUSH0 PUSH0 REVERT JUMPDEST PUSH1 0x40 MLOAD PUSH1 0x20 DUP2 ADD PUSH8 0xFFFFFFFFFFFFFFFF DUP2 GT DUP3 DUP3 LT OR ISZERO PUSH2 0x1A66 JUMPI PUSH2 0x1A66 PUSH2 0x14A0 JUMP JUMPDEST PUSH1 0x40 MSTORE SWAP2 MLOAD DUP3 MSTORE POP SWAP2 SWAP1 POP JUMP JUMPDEST DUP1 MLOAD PUSH16 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP2 AND DUP2 EQ PUSH2 0x1A92 JUMPI PUSH0 PUSH0 REVERT JUMPDEST SWAP2 SWAP1 POP JUMP JUMPDEST DUP1 MLOAD PUSH5 0xFFFFFFFFFF DUP2 AND DUP2 EQ PUSH2 0x1A92 JUMPI PUSH0 PUSH0 REVERT JUMPDEST DUP1 MLOAD PUSH2 0xFFFF DUP2 AND DUP2 EQ PUSH2 0x1A92 JUMPI PUSH0 PUSH0 REVERT JUMPDEST DUP1 MLOAD PUSH2 0x1A92 DUP2 PUSH2 0x164F JUMP JUMPDEST PUSH0 PUSH2 0x1E0 DUP3 DUP5 SUB SLT DUP1 ISZERO PUSH2 0x1AD9 JUMPI PUSH0 PUSH0 REVERT JUMPDEST POP PUSH2 0x1AE2 PUSH2 0x14DD JUMP JUMPDEST PUSH2 0x1AEC DUP5 DUP5 PUSH2 0x1A33 JUMP JUMPDEST DUP2 MSTORE PUSH2 0x1AFA PUSH1 0x20 DUP5 ADD PUSH2 0x1A73 JUMP JUMPDEST PUSH1 0x20 DUP3 ADD MSTORE PUSH2 0x1B0B PUSH1 0x40 DUP5 ADD PUSH2 0x1A73 JUMP JUMPDEST PUSH1 0x40 DUP3 ADD MSTORE PUSH2 0x1B1C PUSH1 0x60 DUP5 ADD PUSH2 0x1A73 JUMP JUMPDEST PUSH1 0x60 DUP3 ADD MSTORE PUSH2 0x1B2D PUSH1 0x80 DUP5 ADD PUSH2 0x1A73 JUMP JUMPDEST PUSH1 0x80 DUP3 ADD MSTORE PUSH2 0x1B3E PUSH1 0xA0 DUP5 ADD PUSH2 0x1A73 JUMP JUMPDEST PUSH1 0xA0 DUP3 ADD MSTORE PUSH2 0x1B4F PUSH1 0xC0 DUP5 ADD PUSH2 0x1A97 JUMP JUMPDEST PUSH1 0xC0 DUP3 ADD MSTORE PUSH2 0x1B60 PUSH1 0xE0 DUP5 ADD PUSH2 0x1AAB JUMP JUMPDEST PUSH1 0xE0 DUP3 ADD MSTORE PUSH2 0x1B72 PUSH2 0x100 DUP5 ADD PUSH2 0x1ABC JUMP JUMPDEST PUSH2 0x100 DUP3 ADD MSTORE PUSH2 0x1B85 PUSH2 0x120 DUP5 ADD PUSH2 0x1ABC JUMP JUMPDEST PUSH2 0x120 DUP3 ADD MSTORE PUSH2 0x1B98 PUSH2 0x140 DUP5 ADD PUSH2 0x1ABC JUMP JUMPDEST PUSH2 0x140 DUP3 ADD MSTORE PUSH2 0x1BAB PUSH2 0x160 DUP5 ADD PUSH2 0x1ABC JUMP JUMPDEST PUSH2 0x160 DUP3 ADD MSTORE PUSH2 0x1BBE PUSH2 0x180 DUP5 ADD PUSH2 0x1A73 JUMP JUMPDEST PUSH2 0x180 DUP3 ADD MSTORE PUSH2 0x1BD1 PUSH2 0x1A0 DUP5 ADD PUSH2 0x1A73 JUMP JUMPDEST PUSH2 0x1A0 DUP3 ADD MSTORE PUSH2 0x1BE4 PUSH2 0x1C0 DUP5 ADD PUSH2 0x1A73 JUMP JUMPDEST PUSH2 0x1C0 DUP3 ADD MSTORE SWAP4 SWAP3 POP POP POP JUMP JUMPDEST PUSH4 0x4E487B71 PUSH1 0xE0 SHL PUSH0 MSTORE PUSH1 0x11 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH0 REVERT JUMPDEST DUP1 DUP3 MUL DUP2 ISZERO DUP3 DUP3 DIV DUP5 EQ OR PUSH2 0x30C JUMPI PUSH2 0x30C PUSH2 0x1BF1 JUMP JUMPDEST DUP2 DUP2 SUB DUP2 DUP2 GT ISZERO PUSH2 0x30C JUMPI PUSH2 0x30C PUSH2 0x1BF1 JUMP JUMPDEST PUSH4 0x4E487B71 PUSH1 0xE0 SHL PUSH0 MSTORE PUSH1 0x12 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH0 REVERT JUMPDEST PUSH0 DUP3 PUSH2 0x1C5D JUMPI PUSH4 0x4E487B71 PUSH1 0xE0 SHL PUSH0 MSTORE PUSH1 0x12 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH0 REVERT JUMPDEST POP DIV SWAP1 JUMP JUMPDEST PUSH0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x1C72 JUMPI PUSH0 PUSH0 REVERT JUMPDEST DUP2 MLOAD PUSH2 0x7B9 DUP2 PUSH2 0x1492 JUMP JUMPDEST PUSH1 0xFF DUP3 DUP2 AND DUP3 DUP3 AND SUB SWAP1 DUP2 GT ISZERO PUSH2 0x30C JUMPI PUSH2 0x30C PUSH2 0x1BF1 JUMP JUMPDEST PUSH1 0x1 DUP2 JUMPDEST PUSH1 0x1 DUP5 GT ISZERO PUSH2 0x1CD1 JUMPI DUP1 DUP6 DIV DUP2 GT ISZERO PUSH2 0x1CB5 JUMPI PUSH2 0x1CB5 PUSH2 0x1BF1 JUMP JUMPDEST PUSH1 0x1 DUP5 AND ISZERO PUSH2 0x1CC3 JUMPI SWAP1 DUP2 MUL SWAP1 JUMPDEST PUSH1 0x1 SWAP4 SWAP1 SWAP4 SHR SWAP3 DUP1 MUL PUSH2 0x1C9A JUMP JUMPDEST SWAP4 POP SWAP4 SWAP2 POP POP JUMP JUMPDEST PUSH0 DUP3 PUSH2 0x1CE7 JUMPI POP PUSH1 0x1 PUSH2 0x30C JUMP JUMPDEST DUP2 PUSH2 0x1CF3 JUMPI POP PUSH0 PUSH2 0x30C JUMP JUMPDEST DUP2 PUSH1 0x1 DUP2 EQ PUSH2 0x1D09 JUMPI PUSH1 0x2 DUP2 EQ PUSH2 0x1D13 JUMPI PUSH2 0x1D2F JUMP JUMPDEST PUSH1 0x1 SWAP2 POP POP PUSH2 0x30C JUMP JUMPDEST PUSH1 0xFF DUP5 GT ISZERO PUSH2 0x1D24 JUMPI PUSH2 0x1D24 PUSH2 0x1BF1 JUMP JUMPDEST POP POP PUSH1 0x1 DUP3 SHL PUSH2 0x30C JUMP JUMPDEST POP PUSH1 0x20 DUP4 LT PUSH2 0x133 DUP4 LT AND PUSH1 0x4E DUP5 LT PUSH1 0xB DUP5 LT AND OR ISZERO PUSH2 0x1D52 JUMPI POP DUP2 DUP2 EXP PUSH2 0x30C JUMP JUMPDEST PUSH2 0x1D5E PUSH0 NOT DUP5 DUP5 PUSH2 0x1C96 JUMP JUMPDEST DUP1 PUSH0 NOT DIV DUP3 GT ISZERO PUSH2 0x1D71 JUMPI PUSH2 0x1D71 PUSH2 0x1BF1 JUMP JUMPDEST MUL SWAP4 SWAP3 POP POP POP JUMP JUMPDEST PUSH0 PUSH2 0x7B9 PUSH1 0xFF DUP5 AND DUP4 PUSH2 0x1CD9 JUMP INVALID LOG2 PUSH5 0x6970667358 0x22 SLT KECCAK256 DIV DUP7 0xCA CALLF 0xC836 0x22 BASEFEE CALL CALLCODE MULMOD 0xD3 EOFCREATE 0xB8 0xC8 CREATE 0xB2 0xBC 0xD 0x1F CALLDATACOPY 0xEF MUL BALANCE GASLIMIT PUSH4 0x77B0A69C 0x22 PUSH28 0x64736F6C634300081E00330000000000000000000000000000000000 ","sourceMap":"1019:4:83:-:0;975:49;;;;826:3242:84;7309:54:53;1376:21:87;;;1433:2;1413:18;1406:30;1472:32;1452:18;1445:60;1557:20;1550:62;;;;826:3242:84;7309:54:53;;;1522:19:87;7309:54:53;;7299:65;;1028:81:83;;1433:192:84;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;1571:6;1579:12;1593:6;1190::85;1198:12;1983:2:83;1962:6;-1:-1:-1;;;;;1962:15:83;;:17;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;:23;;;;1954:48;;;;-1:-1:-1;;;1954:48:83;;;;;;;;;;;;2043:2;2016:12;-1:-1:-1;;;;;2016:21:83;;:23;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;:29;;;;2008:54;;;;-1:-1:-1;;;2008:54:83;;;;;;;;;;;;2086:12;-1:-1:-1;;;;;2076:22:83;:6;-1:-1:-1;;;;;2076:22:83;;2068:47;;;;-1:-1:-1;;;2068:47:83;;;;;;;;;;;;-1:-1:-1;;;;;2121:15:83;;;;;2142:27;;;;1218:15:85::1;::::0;;;;1607:13:84;;;::::1;;::::0;-1:-1:-1;826:3242:84;;-1:-1:-1;;;;826:3242:84;14:147:87;-1:-1:-1;;;;;105:31:87;;95:42;;85:70;;151:1;148;141:12;85:70;14:147;:::o;166:690::-;324:6;332;340;348;401:3;389:9;380:7;376:23;372:33;369:53;;;418:1;415;408:12;369:53;450:9;444:16;469:47;510:5;469:47;:::i;:::-;585:2;570:18;;564:25;535:5;;-1:-1:-1;598:49:87;564:25;598:49;:::i;:::-;713:2;698:18;;692:25;762:2;747:18;;741:25;666:7;;-1:-1:-1;692:25:87;-1:-1:-1;775:49:87;741:25;775:49;:::i;:::-;166:690;;;;-1:-1:-1;166:690:87;;-1:-1:-1;;166:690:87:o;861:273::-;929:6;982:2;970:9;961:7;957:23;953:32;950:52;;;998:1;995;988:12;950:52;1030:9;1024:16;1080:4;1073:5;1069:16;1062:5;1059:27;1049:55;;1100:1;1097;1090:12;1049:55;1123:5;861:273;-1:-1:-1;;;861:273:87:o;1139:479::-;826:3242:84;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;"},"deployedBytecode":{"functionDebugData":{"@_convertAssets_24221":{"entryPoint":4472,"id":24221,"parameterSlots":2,"returnSlots":1},"@_getSwapConfigSelf_24494":{"entryPoint":4660,"id":24494,"parameterSlots":0,"returnSlots":1},"@_getSwapConfig_24475":{"entryPoint":2112,"id":24475,"parameterSlots":1,"returnSlots":1},"@_reserveData_24575":{"entryPoint":3863,"id":24575,"parameterSlots":0,"returnSlots":1},"@_setSwapConfig_24405":{"entryPoint":2299,"id":24405,"parameterSlots":2,"returnSlots":0},"@_supply_24844":{"entryPoint":3273,"id":24844,"parameterSlots":2,"returnSlots":0},"@_toWadFactor_24055":{"entryPoint":4926,"id":24055,"parameterSlots":1,"returnSlots":1},"@asset_24150":{"entryPoint":null,"id":24150,"parameterSlots":1,"returnSlots":1},"@connect_24080":{"entryPoint":1563,"id":24080,"parameterSlots":1,"returnSlots":0},"@deposit_24352":{"entryPoint":4164,"id":24352,"parameterSlots":1,"returnSlots":0},"@deposit_24780":{"entryPoint":1688,"id":24780,"parameterSlots":1,"returnSlots":0},"@disconnect_24609":{"entryPoint":1326,"id":24609,"parameterSlots":1,"returnSlots":0},"@forwardEntryPoint_24449":{"entryPoint":628,"id":24449,"parameterSlots":2,"returnSlots":1},"@getActive_19622":{"entryPoint":null,"id":19622,"parameterSlots":1,"returnSlots":1},"@getBytesSlot_11020":{"entryPoint":null,"id":11020,"parameterSlots":1,"returnSlots":1},"@getFrozen_19672":{"entryPoint":null,"id":19672,"parameterSlots":1,"returnSlots":1},"@getPaused_19722":{"entryPoint":null,"id":19722,"parameterSlots":1,"returnSlots":1},"@getSwapConfig_24508":{"entryPoint":1290,"id":24508,"parameterSlots":1,"returnSlots":1},"@investAssetPrice_24886":{"entryPoint":null,"id":24886,"parameterSlots":0,"returnSlots":1},"@investAsset_24164":{"entryPoint":null,"id":24164,"parameterSlots":1,"returnSlots":1},"@maxDeposit_24684":{"entryPoint":1205,"id":24684,"parameterSlots":1,"returnSlots":1},"@maxWithdraw_24643":{"entryPoint":1914,"id":24643,"parameterSlots":1,"returnSlots":1},"@mul512_11124":{"entryPoint":5221,"id":11124,"parameterSlots":2,"returnSlots":2},"@mulDiv_11611":{"entryPoint":5045,"id":11611,"parameterSlots":3,"returnSlots":1},"@panic_10907":{"entryPoint":5249,"id":10907,"parameterSlots":1,"returnSlots":0},"@sellInvestAssetPrice_24184":{"entryPoint":4874,"id":24184,"parameterSlots":0,"returnSlots":1},"@storageSlot_23952":{"entryPoint":null,"id":23952,"parameterSlots":0,"returnSlots":0},"@ternary_11373":{"entryPoint":null,"id":11373,"parameterSlots":3,"returnSlots":1},"@toUint_14490":{"entryPoint":null,"id":14490,"parameterSlots":1,"returnSlots":1},"@totalAssets_24705":{"entryPoint":1984,"id":24705,"parameterSlots":1,"returnSlots":1},"@withdraw_24321":{"entryPoint":2593,"id":24321,"parameterSlots":1,"returnSlots":0},"@withdraw_24754":{"entryPoint":786,"id":24754,"parameterSlots":1,"returnSlots":0},"abi_decode_address_fromMemory":{"entryPoint":6844,"id":null,"parameterSlots":1,"returnSlots":1},"abi_decode_bytes":{"entryPoint":5465,"id":null,"parameterSlots":2,"returnSlots":1},"abi_decode_bytes_fromMemory":{"entryPoint":5987,"id":null,"parameterSlots":2,"returnSlots":1},"abi_decode_struct_ReserveConfigurationMap_fromMemory":{"entryPoint":6707,"id":null,"parameterSlots":2,"returnSlots":1},"abi_decode_tuple_t_address":{"entryPoint":5731,"id":null,"parameterSlots":2,"returnSlots":1},"abi_decode_tuple_t_bool":{"entryPoint":5887,"id":null,"parameterSlots":2,"returnSlots":1},"abi_decode_tuple_t_bool_fromMemory":{"entryPoint":6680,"id":null,"parameterSlots":2,"returnSlots":1},"abi_decode_tuple_t_bytes_memory_ptr":{"entryPoint":5914,"id":null,"parameterSlots":2,"returnSlots":1},"abi_decode_tuple_t_bytes_memory_ptr_fromMemory":{"entryPoint":6064,"id":null,"parameterSlots":2,"returnSlots":1},"abi_decode_tuple_t_struct$_ReserveData_$17774_memory_ptr_fromMemory":{"entryPoint":6855,"id":null,"parameterSlots":2,"returnSlots":1},"abi_decode_tuple_t_struct$_SwapConfig_$1113_memory_ptr_fromMemory":{"entryPoint":6114,"id":null,"parameterSlots":2,"returnSlots":1},"abi_decode_tuple_t_uint256":{"entryPoint":5688,"id":null,"parameterSlots":2,"returnSlots":1},"abi_decode_tuple_t_uint256_fromMemory":{"entryPoint":5964,"id":null,"parameterSlots":2,"returnSlots":1},"abi_decode_tuple_t_uint8_fromMemory":{"entryPoint":7266,"id":null,"parameterSlots":2,"returnSlots":1},"abi_decode_tuple_t_uint8t_bytes_memory_ptr":{"entryPoint":5547,"id":null,"parameterSlots":2,"returnSlots":2},"abi_decode_uint128_fromMemory":{"entryPoint":6771,"id":null,"parameterSlots":1,"returnSlots":1},"abi_decode_uint16_fromMemory":{"entryPoint":6827,"id":null,"parameterSlots":1,"returnSlots":1},"abi_decode_uint40_fromMemory":{"entryPoint":6807,"id":null,"parameterSlots":1,"returnSlots":1},"abi_encode_bytes":{"entryPoint":5624,"id":null,"parameterSlots":2,"returnSlots":1},"abi_encode_struct_SwapConfig":{"entryPoint":5778,"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_uint256__to_t_address_t_uint256__fromStack_reversed":{"entryPoint":null,"id":null,"parameterSlots":3,"returnSlots":1},"abi_encode_tuple_t_address_t_uint256_t_address__to_t_address_t_uint256_t_address__fromStack_reversed":{"entryPoint":null,"id":null,"parameterSlots":4,"returnSlots":1},"abi_encode_tuple_t_address_t_uint256_t_address_t_rational_0_by_1__to_t_address_t_uint256_t_address_t_uint16__fromStack_reversed":{"entryPoint":null,"id":null,"parameterSlots":5,"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":5670,"id":null,"parameterSlots":2,"returnSlots":1},"abi_encode_tuple_t_struct$_SwapConfig_$1113_memory_ptr__to_t_struct$_SwapConfig_$1113_memory_ptr__fromStack_library_reversed":{"entryPoint":null,"id":null,"parameterSlots":2,"returnSlots":1},"abi_encode_tuple_t_struct$_SwapConfig_$1113_memory_ptr__to_t_struct$_SwapConfig_$1113_memory_ptr__fromStack_reversed":{"entryPoint":5856,"id":null,"parameterSlots":2,"returnSlots":1},"abi_encode_tuple_t_struct$_SwapConfig_$1113_memory_ptr_t_address_t_address_t_uint256_t_uint256__to_t_struct$_SwapConfig_$1113_memory_ptr_t_address_t_address_t_uint256_t_uint256__fromStack_library_reversed":{"entryPoint":6617,"id":null,"parameterSlots":6,"returnSlots":1},"abi_encode_tuple_t_struct$_SwapConfig_$1113_memory_ptr_t_struct$_SwapConfig_$1113_memory_ptr__to_t_struct$_SwapConfig_$1113_memory_ptr_t_struct$_SwapConfig_$1113_memory_ptr__fromStack_reversed":{"entryPoint":6254,"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":5377,"id":null,"parameterSlots":1,"returnSlots":1},"allocate_memory_2005":{"entryPoint":5300,"id":null,"parameterSlots":0,"returnSlots":1},"allocate_memory_2008":{"entryPoint":5341,"id":null,"parameterSlots":0,"returnSlots":1},"array_allocation_size_bytes":{"entryPoint":5426,"id":null,"parameterSlots":1,"returnSlots":1},"array_dataslot_bytes_storage":{"entryPoint":null,"id":null,"parameterSlots":1,"returnSlots":1},"checked_div_t_uint256":{"entryPoint":7235,"id":null,"parameterSlots":2,"returnSlots":1},"checked_exp_helper":{"entryPoint":7318,"id":null,"parameterSlots":3,"returnSlots":2},"checked_exp_t_uint256_t_uint8":{"entryPoint":7545,"id":null,"parameterSlots":2,"returnSlots":1},"checked_exp_unsigned":{"entryPoint":7385,"id":null,"parameterSlots":2,"returnSlots":1},"checked_mul_t_uint256":{"entryPoint":7173,"id":null,"parameterSlots":2,"returnSlots":1},"checked_sub_t_uint256":{"entryPoint":7196,"id":null,"parameterSlots":2,"returnSlots":1},"checked_sub_t_uint8":{"entryPoint":7293,"id":null,"parameterSlots":2,"returnSlots":1},"clean_up_bytearray_end_slots_bytes_storage":{"entryPoint":6355,"id":null,"parameterSlots":3,"returnSlots":0},"copy_byte_array_to_storage_from_t_bytes_memory_ptr_to_t_bytes_storage":{"entryPoint":6430,"id":null,"parameterSlots":2,"returnSlots":0},"extract_byte_array_length":{"entryPoint":6299,"id":null,"parameterSlots":1,"returnSlots":1},"extract_used_part_and_set_length_of_short_byte_array":{"entryPoint":null,"id":null,"parameterSlots":2,"returnSlots":1},"panic_error_0x11":{"entryPoint":7153,"id":null,"parameterSlots":0,"returnSlots":0},"panic_error_0x12":{"entryPoint":7215,"id":null,"parameterSlots":0,"returnSlots":0},"panic_error_0x21":{"entryPoint":5758,"id":null,"parameterSlots":0,"returnSlots":0},"panic_error_0x41":{"entryPoint":5280,"id":null,"parameterSlots":0,"returnSlots":0},"validator_revert_address":{"entryPoint":5711,"id":null,"parameterSlots":1,"returnSlots":0},"validator_revert_bool":{"entryPoint":5874,"id":null,"parameterSlots":1,"returnSlots":0},"validator_revert_uint8":{"entryPoint":5266,"id":null,"parameterSlots":1,"returnSlots":0}},"generatedSources":[{"ast":{"nativeSrc":"0:17983:87","nodeType":"YulBlock","src":"0:17983:87","statements":[{"nativeSrc":"6:3:87","nodeType":"YulBlock","src":"6:3:87","statements":[]},{"body":{"nativeSrc":"57:71:87","nodeType":"YulBlock","src":"57:71:87","statements":[{"body":{"nativeSrc":"106:16:87","nodeType":"YulBlock","src":"106:16:87","statements":[{"expression":{"arguments":[{"kind":"number","nativeSrc":"115:1:87","nodeType":"YulLiteral","src":"115:1:87","type":"","value":"0"},{"kind":"number","nativeSrc":"118:1:87","nodeType":"YulLiteral","src":"118:1:87","type":"","value":"0"}],"functionName":{"name":"revert","nativeSrc":"108:6:87","nodeType":"YulIdentifier","src":"108:6:87"},"nativeSrc":"108:12:87","nodeType":"YulFunctionCall","src":"108:12:87"},"nativeSrc":"108:12:87","nodeType":"YulExpressionStatement","src":"108:12:87"}]},"condition":{"arguments":[{"arguments":[{"name":"value","nativeSrc":"80:5:87","nodeType":"YulIdentifier","src":"80:5:87"},{"arguments":[{"name":"value","nativeSrc":"91:5:87","nodeType":"YulIdentifier","src":"91:5:87"},{"kind":"number","nativeSrc":"98:4:87","nodeType":"YulLiteral","src":"98:4:87","type":"","value":"0xff"}],"functionName":{"name":"and","nativeSrc":"87:3:87","nodeType":"YulIdentifier","src":"87:3:87"},"nativeSrc":"87:16:87","nodeType":"YulFunctionCall","src":"87:16:87"}],"functionName":{"name":"eq","nativeSrc":"77:2:87","nodeType":"YulIdentifier","src":"77:2:87"},"nativeSrc":"77:27:87","nodeType":"YulFunctionCall","src":"77:27:87"}],"functionName":{"name":"iszero","nativeSrc":"70:6:87","nodeType":"YulIdentifier","src":"70:6:87"},"nativeSrc":"70:35:87","nodeType":"YulFunctionCall","src":"70:35:87"},"nativeSrc":"67:55:87","nodeType":"YulIf","src":"67:55:87"}]},"name":"validator_revert_uint8","nativeSrc":"14:114:87","nodeType":"YulFunctionDefinition","parameters":[{"name":"value","nativeSrc":"46:5:87","nodeType":"YulTypedName","src":"46:5:87","type":""}],"src":"14:114:87"},{"body":{"nativeSrc":"165:95:87","nodeType":"YulBlock","src":"165:95:87","statements":[{"expression":{"arguments":[{"kind":"number","nativeSrc":"182:1:87","nodeType":"YulLiteral","src":"182:1:87","type":"","value":"0"},{"arguments":[{"kind":"number","nativeSrc":"189:3:87","nodeType":"YulLiteral","src":"189:3:87","type":"","value":"224"},{"kind":"number","nativeSrc":"194:10:87","nodeType":"YulLiteral","src":"194:10:87","type":"","value":"0x4e487b71"}],"functionName":{"name":"shl","nativeSrc":"185:3:87","nodeType":"YulIdentifier","src":"185:3:87"},"nativeSrc":"185:20:87","nodeType":"YulFunctionCall","src":"185:20:87"}],"functionName":{"name":"mstore","nativeSrc":"175:6:87","nodeType":"YulIdentifier","src":"175:6:87"},"nativeSrc":"175:31:87","nodeType":"YulFunctionCall","src":"175:31:87"},"nativeSrc":"175:31:87","nodeType":"YulExpressionStatement","src":"175:31:87"},{"expression":{"arguments":[{"kind":"number","nativeSrc":"222:1:87","nodeType":"YulLiteral","src":"222:1:87","type":"","value":"4"},{"kind":"number","nativeSrc":"225:4:87","nodeType":"YulLiteral","src":"225:4:87","type":"","value":"0x41"}],"functionName":{"name":"mstore","nativeSrc":"215:6:87","nodeType":"YulIdentifier","src":"215:6:87"},"nativeSrc":"215:15:87","nodeType":"YulFunctionCall","src":"215:15:87"},"nativeSrc":"215:15:87","nodeType":"YulExpressionStatement","src":"215:15:87"},{"expression":{"arguments":[{"kind":"number","nativeSrc":"246:1:87","nodeType":"YulLiteral","src":"246:1:87","type":"","value":"0"},{"kind":"number","nativeSrc":"249:4:87","nodeType":"YulLiteral","src":"249:4:87","type":"","value":"0x24"}],"functionName":{"name":"revert","nativeSrc":"239:6:87","nodeType":"YulIdentifier","src":"239:6:87"},"nativeSrc":"239:15:87","nodeType":"YulFunctionCall","src":"239:15:87"},"nativeSrc":"239:15:87","nodeType":"YulExpressionStatement","src":"239:15:87"}]},"name":"panic_error_0x41","nativeSrc":"133:127:87","nodeType":"YulFunctionDefinition","src":"133:127:87"},{"body":{"nativeSrc":"311:207:87","nodeType":"YulBlock","src":"311:207:87","statements":[{"nativeSrc":"321:19:87","nodeType":"YulAssignment","src":"321:19:87","value":{"arguments":[{"kind":"number","nativeSrc":"337:2:87","nodeType":"YulLiteral","src":"337:2:87","type":"","value":"64"}],"functionName":{"name":"mload","nativeSrc":"331:5:87","nodeType":"YulIdentifier","src":"331:5:87"},"nativeSrc":"331:9:87","nodeType":"YulFunctionCall","src":"331:9:87"},"variableNames":[{"name":"memPtr","nativeSrc":"321:6:87","nodeType":"YulIdentifier","src":"321:6:87"}]},{"nativeSrc":"349:35:87","nodeType":"YulVariableDeclaration","src":"349:35:87","value":{"arguments":[{"name":"memPtr","nativeSrc":"371:6:87","nodeType":"YulIdentifier","src":"371:6:87"},{"kind":"number","nativeSrc":"379:4:87","nodeType":"YulLiteral","src":"379:4:87","type":"","value":"0x60"}],"functionName":{"name":"add","nativeSrc":"367:3:87","nodeType":"YulIdentifier","src":"367:3:87"},"nativeSrc":"367:17:87","nodeType":"YulFunctionCall","src":"367:17:87"},"variables":[{"name":"newFreePtr","nativeSrc":"353:10:87","nodeType":"YulTypedName","src":"353:10:87","type":""}]},{"body":{"nativeSrc":"459:22:87","nodeType":"YulBlock","src":"459:22:87","statements":[{"expression":{"arguments":[],"functionName":{"name":"panic_error_0x41","nativeSrc":"461:16:87","nodeType":"YulIdentifier","src":"461:16:87"},"nativeSrc":"461:18:87","nodeType":"YulFunctionCall","src":"461:18:87"},"nativeSrc":"461:18:87","nodeType":"YulExpressionStatement","src":"461:18:87"}]},"condition":{"arguments":[{"arguments":[{"name":"newFreePtr","nativeSrc":"402:10:87","nodeType":"YulIdentifier","src":"402:10:87"},{"kind":"number","nativeSrc":"414:18:87","nodeType":"YulLiteral","src":"414:18:87","type":"","value":"0xffffffffffffffff"}],"functionName":{"name":"gt","nativeSrc":"399:2:87","nodeType":"YulIdentifier","src":"399:2:87"},"nativeSrc":"399:34:87","nodeType":"YulFunctionCall","src":"399:34:87"},{"arguments":[{"name":"newFreePtr","nativeSrc":"438:10:87","nodeType":"YulIdentifier","src":"438:10:87"},{"name":"memPtr","nativeSrc":"450:6:87","nodeType":"YulIdentifier","src":"450:6:87"}],"functionName":{"name":"lt","nativeSrc":"435:2:87","nodeType":"YulIdentifier","src":"435:2:87"},"nativeSrc":"435:22:87","nodeType":"YulFunctionCall","src":"435:22:87"}],"functionName":{"name":"or","nativeSrc":"396:2:87","nodeType":"YulIdentifier","src":"396:2:87"},"nativeSrc":"396:62:87","nodeType":"YulFunctionCall","src":"396:62:87"},"nativeSrc":"393:88:87","nodeType":"YulIf","src":"393:88:87"},{"expression":{"arguments":[{"kind":"number","nativeSrc":"497:2:87","nodeType":"YulLiteral","src":"497:2:87","type":"","value":"64"},{"name":"newFreePtr","nativeSrc":"501:10:87","nodeType":"YulIdentifier","src":"501:10:87"}],"functionName":{"name":"mstore","nativeSrc":"490:6:87","nodeType":"YulIdentifier","src":"490:6:87"},"nativeSrc":"490:22:87","nodeType":"YulFunctionCall","src":"490:22:87"},"nativeSrc":"490:22:87","nodeType":"YulExpressionStatement","src":"490:22:87"}]},"name":"allocate_memory_2005","nativeSrc":"265:253:87","nodeType":"YulFunctionDefinition","returnVariables":[{"name":"memPtr","nativeSrc":"300:6:87","nodeType":"YulTypedName","src":"300:6:87","type":""}],"src":"265:253:87"},{"body":{"nativeSrc":"569:206:87","nodeType":"YulBlock","src":"569:206:87","statements":[{"nativeSrc":"579:19:87","nodeType":"YulAssignment","src":"579:19:87","value":{"arguments":[{"kind":"number","nativeSrc":"595:2:87","nodeType":"YulLiteral","src":"595:2:87","type":"","value":"64"}],"functionName":{"name":"mload","nativeSrc":"589:5:87","nodeType":"YulIdentifier","src":"589:5:87"},"nativeSrc":"589:9:87","nodeType":"YulFunctionCall","src":"589:9:87"},"variableNames":[{"name":"memPtr","nativeSrc":"579:6:87","nodeType":"YulIdentifier","src":"579:6:87"}]},{"nativeSrc":"607:34:87","nodeType":"YulVariableDeclaration","src":"607:34:87","value":{"arguments":[{"name":"memPtr","nativeSrc":"629:6:87","nodeType":"YulIdentifier","src":"629:6:87"},{"kind":"number","nativeSrc":"637:3:87","nodeType":"YulLiteral","src":"637:3:87","type":"","value":"480"}],"functionName":{"name":"add","nativeSrc":"625:3:87","nodeType":"YulIdentifier","src":"625:3:87"},"nativeSrc":"625:16:87","nodeType":"YulFunctionCall","src":"625:16:87"},"variables":[{"name":"newFreePtr","nativeSrc":"611:10:87","nodeType":"YulTypedName","src":"611:10:87","type":""}]},{"body":{"nativeSrc":"716:22:87","nodeType":"YulBlock","src":"716:22:87","statements":[{"expression":{"arguments":[],"functionName":{"name":"panic_error_0x41","nativeSrc":"718:16:87","nodeType":"YulIdentifier","src":"718:16:87"},"nativeSrc":"718:18:87","nodeType":"YulFunctionCall","src":"718:18:87"},"nativeSrc":"718:18:87","nodeType":"YulExpressionStatement","src":"718:18:87"}]},"condition":{"arguments":[{"arguments":[{"name":"newFreePtr","nativeSrc":"659:10:87","nodeType":"YulIdentifier","src":"659:10:87"},{"kind":"number","nativeSrc":"671:18:87","nodeType":"YulLiteral","src":"671:18:87","type":"","value":"0xffffffffffffffff"}],"functionName":{"name":"gt","nativeSrc":"656:2:87","nodeType":"YulIdentifier","src":"656:2:87"},"nativeSrc":"656:34:87","nodeType":"YulFunctionCall","src":"656:34:87"},{"arguments":[{"name":"newFreePtr","nativeSrc":"695:10:87","nodeType":"YulIdentifier","src":"695:10:87"},{"name":"memPtr","nativeSrc":"707:6:87","nodeType":"YulIdentifier","src":"707:6:87"}],"functionName":{"name":"lt","nativeSrc":"692:2:87","nodeType":"YulIdentifier","src":"692:2:87"},"nativeSrc":"692:22:87","nodeType":"YulFunctionCall","src":"692:22:87"}],"functionName":{"name":"or","nativeSrc":"653:2:87","nodeType":"YulIdentifier","src":"653:2:87"},"nativeSrc":"653:62:87","nodeType":"YulFunctionCall","src":"653:62:87"},"nativeSrc":"650:88:87","nodeType":"YulIf","src":"650:88:87"},{"expression":{"arguments":[{"kind":"number","nativeSrc":"754:2:87","nodeType":"YulLiteral","src":"754:2:87","type":"","value":"64"},{"name":"newFreePtr","nativeSrc":"758:10:87","nodeType":"YulIdentifier","src":"758:10:87"}],"functionName":{"name":"mstore","nativeSrc":"747:6:87","nodeType":"YulIdentifier","src":"747:6:87"},"nativeSrc":"747:22:87","nodeType":"YulFunctionCall","src":"747:22:87"},"nativeSrc":"747:22:87","nodeType":"YulExpressionStatement","src":"747:22:87"}]},"name":"allocate_memory_2008","nativeSrc":"523:252:87","nodeType":"YulFunctionDefinition","returnVariables":[{"name":"memPtr","nativeSrc":"558:6:87","nodeType":"YulTypedName","src":"558:6:87","type":""}],"src":"523:252:87"},{"body":{"nativeSrc":"825:230:87","nodeType":"YulBlock","src":"825:230:87","statements":[{"nativeSrc":"835:19:87","nodeType":"YulAssignment","src":"835:19:87","value":{"arguments":[{"kind":"number","nativeSrc":"851:2:87","nodeType":"YulLiteral","src":"851:2:87","type":"","value":"64"}],"functionName":{"name":"mload","nativeSrc":"845:5:87","nodeType":"YulIdentifier","src":"845:5:87"},"nativeSrc":"845:9:87","nodeType":"YulFunctionCall","src":"845:9:87"},"variableNames":[{"name":"memPtr","nativeSrc":"835:6:87","nodeType":"YulIdentifier","src":"835:6:87"}]},{"nativeSrc":"863:58:87","nodeType":"YulVariableDeclaration","src":"863:58:87","value":{"arguments":[{"name":"memPtr","nativeSrc":"885:6:87","nodeType":"YulIdentifier","src":"885:6:87"},{"arguments":[{"arguments":[{"name":"size","nativeSrc":"901:4:87","nodeType":"YulIdentifier","src":"901:4:87"},{"kind":"number","nativeSrc":"907:2:87","nodeType":"YulLiteral","src":"907:2:87","type":"","value":"31"}],"functionName":{"name":"add","nativeSrc":"897:3:87","nodeType":"YulIdentifier","src":"897:3:87"},"nativeSrc":"897:13:87","nodeType":"YulFunctionCall","src":"897:13:87"},{"arguments":[{"kind":"number","nativeSrc":"916:2:87","nodeType":"YulLiteral","src":"916:2:87","type":"","value":"31"}],"functionName":{"name":"not","nativeSrc":"912:3:87","nodeType":"YulIdentifier","src":"912:3:87"},"nativeSrc":"912:7:87","nodeType":"YulFunctionCall","src":"912:7:87"}],"functionName":{"name":"and","nativeSrc":"893:3:87","nodeType":"YulIdentifier","src":"893:3:87"},"nativeSrc":"893:27:87","nodeType":"YulFunctionCall","src":"893:27:87"}],"functionName":{"name":"add","nativeSrc":"881:3:87","nodeType":"YulIdentifier","src":"881:3:87"},"nativeSrc":"881:40:87","nodeType":"YulFunctionCall","src":"881:40:87"},"variables":[{"name":"newFreePtr","nativeSrc":"867:10:87","nodeType":"YulTypedName","src":"867:10:87","type":""}]},{"body":{"nativeSrc":"996:22:87","nodeType":"YulBlock","src":"996:22:87","statements":[{"expression":{"arguments":[],"functionName":{"name":"panic_error_0x41","nativeSrc":"998:16:87","nodeType":"YulIdentifier","src":"998:16:87"},"nativeSrc":"998:18:87","nodeType":"YulFunctionCall","src":"998:18:87"},"nativeSrc":"998:18:87","nodeType":"YulExpressionStatement","src":"998:18:87"}]},"condition":{"arguments":[{"arguments":[{"name":"newFreePtr","nativeSrc":"939:10:87","nodeType":"YulIdentifier","src":"939:10:87"},{"kind":"number","nativeSrc":"951:18:87","nodeType":"YulLiteral","src":"951:18:87","type":"","value":"0xffffffffffffffff"}],"functionName":{"name":"gt","nativeSrc":"936:2:87","nodeType":"YulIdentifier","src":"936:2:87"},"nativeSrc":"936:34:87","nodeType":"YulFunctionCall","src":"936:34:87"},{"arguments":[{"name":"newFreePtr","nativeSrc":"975:10:87","nodeType":"YulIdentifier","src":"975:10:87"},{"name":"memPtr","nativeSrc":"987:6:87","nodeType":"YulIdentifier","src":"987:6:87"}],"functionName":{"name":"lt","nativeSrc":"972:2:87","nodeType":"YulIdentifier","src":"972:2:87"},"nativeSrc":"972:22:87","nodeType":"YulFunctionCall","src":"972:22:87"}],"functionName":{"name":"or","nativeSrc":"933:2:87","nodeType":"YulIdentifier","src":"933:2:87"},"nativeSrc":"933:62:87","nodeType":"YulFunctionCall","src":"933:62:87"},"nativeSrc":"930:88:87","nodeType":"YulIf","src":"930:88:87"},{"expression":{"arguments":[{"kind":"number","nativeSrc":"1034:2:87","nodeType":"YulLiteral","src":"1034:2:87","type":"","value":"64"},{"name":"newFreePtr","nativeSrc":"1038:10:87","nodeType":"YulIdentifier","src":"1038:10:87"}],"functionName":{"name":"mstore","nativeSrc":"1027:6:87","nodeType":"YulIdentifier","src":"1027:6:87"},"nativeSrc":"1027:22:87","nodeType":"YulFunctionCall","src":"1027:22:87"},"nativeSrc":"1027:22:87","nodeType":"YulExpressionStatement","src":"1027:22:87"}]},"name":"allocate_memory","nativeSrc":"780:275:87","nodeType":"YulFunctionDefinition","parameters":[{"name":"size","nativeSrc":"805:4:87","nodeType":"YulTypedName","src":"805:4:87","type":""}],"returnVariables":[{"name":"memPtr","nativeSrc":"814:6:87","nodeType":"YulTypedName","src":"814:6:87","type":""}],"src":"780:275:87"},{"body":{"nativeSrc":"1117:129:87","nodeType":"YulBlock","src":"1117:129:87","statements":[{"body":{"nativeSrc":"1161:22:87","nodeType":"YulBlock","src":"1161:22:87","statements":[{"expression":{"arguments":[],"functionName":{"name":"panic_error_0x41","nativeSrc":"1163:16:87","nodeType":"YulIdentifier","src":"1163:16:87"},"nativeSrc":"1163:18:87","nodeType":"YulFunctionCall","src":"1163:18:87"},"nativeSrc":"1163:18:87","nodeType":"YulExpressionStatement","src":"1163:18:87"}]},"condition":{"arguments":[{"name":"length","nativeSrc":"1133:6:87","nodeType":"YulIdentifier","src":"1133:6:87"},{"kind":"number","nativeSrc":"1141:18:87","nodeType":"YulLiteral","src":"1141:18:87","type":"","value":"0xffffffffffffffff"}],"functionName":{"name":"gt","nativeSrc":"1130:2:87","nodeType":"YulIdentifier","src":"1130:2:87"},"nativeSrc":"1130:30:87","nodeType":"YulFunctionCall","src":"1130:30:87"},"nativeSrc":"1127:56:87","nodeType":"YulIf","src":"1127:56:87"},{"nativeSrc":"1192:48:87","nodeType":"YulAssignment","src":"1192:48:87","value":{"arguments":[{"arguments":[{"arguments":[{"name":"length","nativeSrc":"1212:6:87","nodeType":"YulIdentifier","src":"1212:6:87"},{"kind":"number","nativeSrc":"1220:2:87","nodeType":"YulLiteral","src":"1220:2:87","type":"","value":"31"}],"functionName":{"name":"add","nativeSrc":"1208:3:87","nodeType":"YulIdentifier","src":"1208:3:87"},"nativeSrc":"1208:15:87","nodeType":"YulFunctionCall","src":"1208:15:87"},{"arguments":[{"kind":"number","nativeSrc":"1229:2:87","nodeType":"YulLiteral","src":"1229:2:87","type":"","value":"31"}],"functionName":{"name":"not","nativeSrc":"1225:3:87","nodeType":"YulIdentifier","src":"1225:3:87"},"nativeSrc":"1225:7:87","nodeType":"YulFunctionCall","src":"1225:7:87"}],"functionName":{"name":"and","nativeSrc":"1204:3:87","nodeType":"YulIdentifier","src":"1204:3:87"},"nativeSrc":"1204:29:87","nodeType":"YulFunctionCall","src":"1204:29:87"},{"kind":"number","nativeSrc":"1235:4:87","nodeType":"YulLiteral","src":"1235:4:87","type":"","value":"0x20"}],"functionName":{"name":"add","nativeSrc":"1200:3:87","nodeType":"YulIdentifier","src":"1200:3:87"},"nativeSrc":"1200:40:87","nodeType":"YulFunctionCall","src":"1200:40:87"},"variableNames":[{"name":"size","nativeSrc":"1192:4:87","nodeType":"YulIdentifier","src":"1192:4:87"}]}]},"name":"array_allocation_size_bytes","nativeSrc":"1060:186:87","nodeType":"YulFunctionDefinition","parameters":[{"name":"length","nativeSrc":"1097:6:87","nodeType":"YulTypedName","src":"1097:6:87","type":""}],"returnVariables":[{"name":"size","nativeSrc":"1108:4:87","nodeType":"YulTypedName","src":"1108:4:87","type":""}],"src":"1060:186:87"},{"body":{"nativeSrc":"1303:434:87","nodeType":"YulBlock","src":"1303:434:87","statements":[{"body":{"nativeSrc":"1352:16:87","nodeType":"YulBlock","src":"1352:16:87","statements":[{"expression":{"arguments":[{"kind":"number","nativeSrc":"1361:1:87","nodeType":"YulLiteral","src":"1361:1:87","type":"","value":"0"},{"kind":"number","nativeSrc":"1364:1:87","nodeType":"YulLiteral","src":"1364:1:87","type":"","value":"0"}],"functionName":{"name":"revert","nativeSrc":"1354:6:87","nodeType":"YulIdentifier","src":"1354:6:87"},"nativeSrc":"1354:12:87","nodeType":"YulFunctionCall","src":"1354:12:87"},"nativeSrc":"1354:12:87","nodeType":"YulExpressionStatement","src":"1354:12:87"}]},"condition":{"arguments":[{"arguments":[{"arguments":[{"name":"offset","nativeSrc":"1331:6:87","nodeType":"YulIdentifier","src":"1331:6:87"},{"kind":"number","nativeSrc":"1339:4:87","nodeType":"YulLiteral","src":"1339:4:87","type":"","value":"0x1f"}],"functionName":{"name":"add","nativeSrc":"1327:3:87","nodeType":"YulIdentifier","src":"1327:3:87"},"nativeSrc":"1327:17:87","nodeType":"YulFunctionCall","src":"1327:17:87"},{"name":"end","nativeSrc":"1346:3:87","nodeType":"YulIdentifier","src":"1346:3:87"}],"functionName":{"name":"slt","nativeSrc":"1323:3:87","nodeType":"YulIdentifier","src":"1323:3:87"},"nativeSrc":"1323:27:87","nodeType":"YulFunctionCall","src":"1323:27:87"}],"functionName":{"name":"iszero","nativeSrc":"1316:6:87","nodeType":"YulIdentifier","src":"1316:6:87"},"nativeSrc":"1316:35:87","nodeType":"YulFunctionCall","src":"1316:35:87"},"nativeSrc":"1313:55:87","nodeType":"YulIf","src":"1313:55:87"},{"nativeSrc":"1377:34:87","nodeType":"YulVariableDeclaration","src":"1377:34:87","value":{"arguments":[{"name":"offset","nativeSrc":"1404:6:87","nodeType":"YulIdentifier","src":"1404:6:87"}],"functionName":{"name":"calldataload","nativeSrc":"1391:12:87","nodeType":"YulIdentifier","src":"1391:12:87"},"nativeSrc":"1391:20:87","nodeType":"YulFunctionCall","src":"1391:20:87"},"variables":[{"name":"length","nativeSrc":"1381:6:87","nodeType":"YulTypedName","src":"1381:6:87","type":""}]},{"nativeSrc":"1420:67:87","nodeType":"YulVariableDeclaration","src":"1420:67:87","value":{"arguments":[{"arguments":[{"name":"length","nativeSrc":"1479:6:87","nodeType":"YulIdentifier","src":"1479:6:87"}],"functionName":{"name":"array_allocation_size_bytes","nativeSrc":"1451:27:87","nodeType":"YulIdentifier","src":"1451:27:87"},"nativeSrc":"1451:35:87","nodeType":"YulFunctionCall","src":"1451:35:87"}],"functionName":{"name":"allocate_memory","nativeSrc":"1435:15:87","nodeType":"YulIdentifier","src":"1435:15:87"},"nativeSrc":"1435:52:87","nodeType":"YulFunctionCall","src":"1435:52:87"},"variables":[{"name":"array_1","nativeSrc":"1424:7:87","nodeType":"YulTypedName","src":"1424:7:87","type":""}]},{"expression":{"arguments":[{"name":"array_1","nativeSrc":"1503:7:87","nodeType":"YulIdentifier","src":"1503:7:87"},{"name":"length","nativeSrc":"1512:6:87","nodeType":"YulIdentifier","src":"1512:6:87"}],"functionName":{"name":"mstore","nativeSrc":"1496:6:87","nodeType":"YulIdentifier","src":"1496:6:87"},"nativeSrc":"1496:23:87","nodeType":"YulFunctionCall","src":"1496:23:87"},"nativeSrc":"1496:23:87","nodeType":"YulExpressionStatement","src":"1496:23:87"},{"body":{"nativeSrc":"1571:16:87","nodeType":"YulBlock","src":"1571:16:87","statements":[{"expression":{"arguments":[{"kind":"number","nativeSrc":"1580:1:87","nodeType":"YulLiteral","src":"1580:1:87","type":"","value":"0"},{"kind":"number","nativeSrc":"1583:1:87","nodeType":"YulLiteral","src":"1583:1:87","type":"","value":"0"}],"functionName":{"name":"revert","nativeSrc":"1573:6:87","nodeType":"YulIdentifier","src":"1573:6:87"},"nativeSrc":"1573:12:87","nodeType":"YulFunctionCall","src":"1573:12:87"},"nativeSrc":"1573:12:87","nodeType":"YulExpressionStatement","src":"1573:12:87"}]},"condition":{"arguments":[{"arguments":[{"arguments":[{"name":"offset","nativeSrc":"1542:6:87","nodeType":"YulIdentifier","src":"1542:6:87"},{"name":"length","nativeSrc":"1550:6:87","nodeType":"YulIdentifier","src":"1550:6:87"}],"functionName":{"name":"add","nativeSrc":"1538:3:87","nodeType":"YulIdentifier","src":"1538:3:87"},"nativeSrc":"1538:19:87","nodeType":"YulFunctionCall","src":"1538:19:87"},{"kind":"number","nativeSrc":"1559:4:87","nodeType":"YulLiteral","src":"1559:4:87","type":"","value":"0x20"}],"functionName":{"name":"add","nativeSrc":"1534:3:87","nodeType":"YulIdentifier","src":"1534:3:87"},"nativeSrc":"1534:30:87","nodeType":"YulFunctionCall","src":"1534:30:87"},{"name":"end","nativeSrc":"1566:3:87","nodeType":"YulIdentifier","src":"1566:3:87"}],"functionName":{"name":"gt","nativeSrc":"1531:2:87","nodeType":"YulIdentifier","src":"1531:2:87"},"nativeSrc":"1531:39:87","nodeType":"YulFunctionCall","src":"1531:39:87"},"nativeSrc":"1528:59:87","nodeType":"YulIf","src":"1528:59:87"},{"expression":{"arguments":[{"arguments":[{"name":"array_1","nativeSrc":"1613:7:87","nodeType":"YulIdentifier","src":"1613:7:87"},{"kind":"number","nativeSrc":"1622:4:87","nodeType":"YulLiteral","src":"1622:4:87","type":"","value":"0x20"}],"functionName":{"name":"add","nativeSrc":"1609:3:87","nodeType":"YulIdentifier","src":"1609:3:87"},"nativeSrc":"1609:18:87","nodeType":"YulFunctionCall","src":"1609:18:87"},{"arguments":[{"name":"offset","nativeSrc":"1633:6:87","nodeType":"YulIdentifier","src":"1633:6:87"},{"kind":"number","nativeSrc":"1641:4:87","nodeType":"YulLiteral","src":"1641:4:87","type":"","value":"0x20"}],"functionName":{"name":"add","nativeSrc":"1629:3:87","nodeType":"YulIdentifier","src":"1629:3:87"},"nativeSrc":"1629:17:87","nodeType":"YulFunctionCall","src":"1629:17:87"},{"name":"length","nativeSrc":"1648:6:87","nodeType":"YulIdentifier","src":"1648:6:87"}],"functionName":{"name":"calldatacopy","nativeSrc":"1596:12:87","nodeType":"YulIdentifier","src":"1596:12:87"},"nativeSrc":"1596:59:87","nodeType":"YulFunctionCall","src":"1596:59:87"},"nativeSrc":"1596:59:87","nodeType":"YulExpressionStatement","src":"1596:59:87"},{"expression":{"arguments":[{"arguments":[{"arguments":[{"name":"array_1","nativeSrc":"1679:7:87","nodeType":"YulIdentifier","src":"1679:7:87"},{"name":"length","nativeSrc":"1688:6:87","nodeType":"YulIdentifier","src":"1688:6:87"}],"functionName":{"name":"add","nativeSrc":"1675:3:87","nodeType":"YulIdentifier","src":"1675:3:87"},"nativeSrc":"1675:20:87","nodeType":"YulFunctionCall","src":"1675:20:87"},{"kind":"number","nativeSrc":"1697:4:87","nodeType":"YulLiteral","src":"1697:4:87","type":"","value":"0x20"}],"functionName":{"name":"add","nativeSrc":"1671:3:87","nodeType":"YulIdentifier","src":"1671:3:87"},"nativeSrc":"1671:31:87","nodeType":"YulFunctionCall","src":"1671:31:87"},{"kind":"number","nativeSrc":"1704:1:87","nodeType":"YulLiteral","src":"1704:1:87","type":"","value":"0"}],"functionName":{"name":"mstore","nativeSrc":"1664:6:87","nodeType":"YulIdentifier","src":"1664:6:87"},"nativeSrc":"1664:42:87","nodeType":"YulFunctionCall","src":"1664:42:87"},"nativeSrc":"1664:42:87","nodeType":"YulExpressionStatement","src":"1664:42:87"},{"nativeSrc":"1715:16:87","nodeType":"YulAssignment","src":"1715:16:87","value":{"name":"array_1","nativeSrc":"1724:7:87","nodeType":"YulIdentifier","src":"1724:7:87"},"variableNames":[{"name":"array","nativeSrc":"1715:5:87","nodeType":"YulIdentifier","src":"1715:5:87"}]}]},"name":"abi_decode_bytes","nativeSrc":"1251:486:87","nodeType":"YulFunctionDefinition","parameters":[{"name":"offset","nativeSrc":"1277:6:87","nodeType":"YulTypedName","src":"1277:6:87","type":""},{"name":"end","nativeSrc":"1285:3:87","nodeType":"YulTypedName","src":"1285:3:87","type":""}],"returnVariables":[{"name":"array","nativeSrc":"1293:5:87","nodeType":"YulTypedName","src":"1293:5:87","type":""}],"src":"1251:486:87"},{"body":{"nativeSrc":"1836:357:87","nodeType":"YulBlock","src":"1836:357:87","statements":[{"body":{"nativeSrc":"1882:16:87","nodeType":"YulBlock","src":"1882:16:87","statements":[{"expression":{"arguments":[{"kind":"number","nativeSrc":"1891:1:87","nodeType":"YulLiteral","src":"1891:1:87","type":"","value":"0"},{"kind":"number","nativeSrc":"1894:1:87","nodeType":"YulLiteral","src":"1894:1:87","type":"","value":"0"}],"functionName":{"name":"revert","nativeSrc":"1884:6:87","nodeType":"YulIdentifier","src":"1884:6:87"},"nativeSrc":"1884:12:87","nodeType":"YulFunctionCall","src":"1884:12:87"},"nativeSrc":"1884:12:87","nodeType":"YulExpressionStatement","src":"1884:12:87"}]},"condition":{"arguments":[{"arguments":[{"name":"dataEnd","nativeSrc":"1857:7:87","nodeType":"YulIdentifier","src":"1857:7:87"},{"name":"headStart","nativeSrc":"1866:9:87","nodeType":"YulIdentifier","src":"1866:9:87"}],"functionName":{"name":"sub","nativeSrc":"1853:3:87","nodeType":"YulIdentifier","src":"1853:3:87"},"nativeSrc":"1853:23:87","nodeType":"YulFunctionCall","src":"1853:23:87"},{"kind":"number","nativeSrc":"1878:2:87","nodeType":"YulLiteral","src":"1878:2:87","type":"","value":"64"}],"functionName":{"name":"slt","nativeSrc":"1849:3:87","nodeType":"YulIdentifier","src":"1849:3:87"},"nativeSrc":"1849:32:87","nodeType":"YulFunctionCall","src":"1849:32:87"},"nativeSrc":"1846:52:87","nodeType":"YulIf","src":"1846:52:87"},{"nativeSrc":"1907:36:87","nodeType":"YulVariableDeclaration","src":"1907:36:87","value":{"arguments":[{"name":"headStart","nativeSrc":"1933:9:87","nodeType":"YulIdentifier","src":"1933:9:87"}],"functionName":{"name":"calldataload","nativeSrc":"1920:12:87","nodeType":"YulIdentifier","src":"1920:12:87"},"nativeSrc":"1920:23:87","nodeType":"YulFunctionCall","src":"1920:23:87"},"variables":[{"name":"value","nativeSrc":"1911:5:87","nodeType":"YulTypedName","src":"1911:5:87","type":""}]},{"expression":{"arguments":[{"name":"value","nativeSrc":"1975:5:87","nodeType":"YulIdentifier","src":"1975:5:87"}],"functionName":{"name":"validator_revert_uint8","nativeSrc":"1952:22:87","nodeType":"YulIdentifier","src":"1952:22:87"},"nativeSrc":"1952:29:87","nodeType":"YulFunctionCall","src":"1952:29:87"},"nativeSrc":"1952:29:87","nodeType":"YulExpressionStatement","src":"1952:29:87"},{"nativeSrc":"1990:15:87","nodeType":"YulAssignment","src":"1990:15:87","value":{"name":"value","nativeSrc":"2000:5:87","nodeType":"YulIdentifier","src":"2000:5:87"},"variableNames":[{"name":"value0","nativeSrc":"1990:6:87","nodeType":"YulIdentifier","src":"1990:6:87"}]},{"nativeSrc":"2014:46:87","nodeType":"YulVariableDeclaration","src":"2014:46:87","value":{"arguments":[{"arguments":[{"name":"headStart","nativeSrc":"2045:9:87","nodeType":"YulIdentifier","src":"2045:9:87"},{"kind":"number","nativeSrc":"2056:2:87","nodeType":"YulLiteral","src":"2056:2:87","type":"","value":"32"}],"functionName":{"name":"add","nativeSrc":"2041:3:87","nodeType":"YulIdentifier","src":"2041:3:87"},"nativeSrc":"2041:18:87","nodeType":"YulFunctionCall","src":"2041:18:87"}],"functionName":{"name":"calldataload","nativeSrc":"2028:12:87","nodeType":"YulIdentifier","src":"2028:12:87"},"nativeSrc":"2028:32:87","nodeType":"YulFunctionCall","src":"2028:32:87"},"variables":[{"name":"offset","nativeSrc":"2018:6:87","nodeType":"YulTypedName","src":"2018:6:87","type":""}]},{"body":{"nativeSrc":"2103:16:87","nodeType":"YulBlock","src":"2103:16:87","statements":[{"expression":{"arguments":[{"kind":"number","nativeSrc":"2112:1:87","nodeType":"YulLiteral","src":"2112:1:87","type":"","value":"0"},{"kind":"number","nativeSrc":"2115:1:87","nodeType":"YulLiteral","src":"2115:1:87","type":"","value":"0"}],"functionName":{"name":"revert","nativeSrc":"2105:6:87","nodeType":"YulIdentifier","src":"2105:6:87"},"nativeSrc":"2105:12:87","nodeType":"YulFunctionCall","src":"2105:12:87"},"nativeSrc":"2105:12:87","nodeType":"YulExpressionStatement","src":"2105:12:87"}]},"condition":{"arguments":[{"name":"offset","nativeSrc":"2075:6:87","nodeType":"YulIdentifier","src":"2075:6:87"},{"kind":"number","nativeSrc":"2083:18:87","nodeType":"YulLiteral","src":"2083:18:87","type":"","value":"0xffffffffffffffff"}],"functionName":{"name":"gt","nativeSrc":"2072:2:87","nodeType":"YulIdentifier","src":"2072:2:87"},"nativeSrc":"2072:30:87","nodeType":"YulFunctionCall","src":"2072:30:87"},"nativeSrc":"2069:50:87","nodeType":"YulIf","src":"2069:50:87"},{"nativeSrc":"2128:59:87","nodeType":"YulAssignment","src":"2128:59:87","value":{"arguments":[{"arguments":[{"name":"headStart","nativeSrc":"2159:9:87","nodeType":"YulIdentifier","src":"2159:9:87"},{"name":"offset","nativeSrc":"2170:6:87","nodeType":"YulIdentifier","src":"2170:6:87"}],"functionName":{"name":"add","nativeSrc":"2155:3:87","nodeType":"YulIdentifier","src":"2155:3:87"},"nativeSrc":"2155:22:87","nodeType":"YulFunctionCall","src":"2155:22:87"},{"name":"dataEnd","nativeSrc":"2179:7:87","nodeType":"YulIdentifier","src":"2179:7:87"}],"functionName":{"name":"abi_decode_bytes","nativeSrc":"2138:16:87","nodeType":"YulIdentifier","src":"2138:16:87"},"nativeSrc":"2138:49:87","nodeType":"YulFunctionCall","src":"2138:49:87"},"variableNames":[{"name":"value1","nativeSrc":"2128:6:87","nodeType":"YulIdentifier","src":"2128:6:87"}]}]},"name":"abi_decode_tuple_t_uint8t_bytes_memory_ptr","nativeSrc":"1742:451:87","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nativeSrc":"1794:9:87","nodeType":"YulTypedName","src":"1794:9:87","type":""},{"name":"dataEnd","nativeSrc":"1805:7:87","nodeType":"YulTypedName","src":"1805:7:87","type":""}],"returnVariables":[{"name":"value0","nativeSrc":"1817:6:87","nodeType":"YulTypedName","src":"1817:6:87","type":""},{"name":"value1","nativeSrc":"1825:6:87","nodeType":"YulTypedName","src":"1825:6:87","type":""}],"src":"1742:451:87"},{"body":{"nativeSrc":"2247:239:87","nodeType":"YulBlock","src":"2247:239:87","statements":[{"nativeSrc":"2257:26:87","nodeType":"YulVariableDeclaration","src":"2257:26:87","value":{"arguments":[{"name":"value","nativeSrc":"2277:5:87","nodeType":"YulIdentifier","src":"2277:5:87"}],"functionName":{"name":"mload","nativeSrc":"2271:5:87","nodeType":"YulIdentifier","src":"2271:5:87"},"nativeSrc":"2271:12:87","nodeType":"YulFunctionCall","src":"2271:12:87"},"variables":[{"name":"length","nativeSrc":"2261:6:87","nodeType":"YulTypedName","src":"2261:6:87","type":""}]},{"expression":{"arguments":[{"name":"pos","nativeSrc":"2299:3:87","nodeType":"YulIdentifier","src":"2299:3:87"},{"name":"length","nativeSrc":"2304:6:87","nodeType":"YulIdentifier","src":"2304:6:87"}],"functionName":{"name":"mstore","nativeSrc":"2292:6:87","nodeType":"YulIdentifier","src":"2292:6:87"},"nativeSrc":"2292:19:87","nodeType":"YulFunctionCall","src":"2292:19:87"},"nativeSrc":"2292:19:87","nodeType":"YulExpressionStatement","src":"2292:19:87"},{"expression":{"arguments":[{"arguments":[{"name":"pos","nativeSrc":"2330:3:87","nodeType":"YulIdentifier","src":"2330:3:87"},{"kind":"number","nativeSrc":"2335:4:87","nodeType":"YulLiteral","src":"2335:4:87","type":"","value":"0x20"}],"functionName":{"name":"add","nativeSrc":"2326:3:87","nodeType":"YulIdentifier","src":"2326:3:87"},"nativeSrc":"2326:14:87","nodeType":"YulFunctionCall","src":"2326:14:87"},{"arguments":[{"name":"value","nativeSrc":"2346:5:87","nodeType":"YulIdentifier","src":"2346:5:87"},{"kind":"number","nativeSrc":"2353:4:87","nodeType":"YulLiteral","src":"2353:4:87","type":"","value":"0x20"}],"functionName":{"name":"add","nativeSrc":"2342:3:87","nodeType":"YulIdentifier","src":"2342:3:87"},"nativeSrc":"2342:16:87","nodeType":"YulFunctionCall","src":"2342:16:87"},{"name":"length","nativeSrc":"2360:6:87","nodeType":"YulIdentifier","src":"2360:6:87"}],"functionName":{"name":"mcopy","nativeSrc":"2320:5:87","nodeType":"YulIdentifier","src":"2320:5:87"},"nativeSrc":"2320:47:87","nodeType":"YulFunctionCall","src":"2320:47:87"},"nativeSrc":"2320:47:87","nodeType":"YulExpressionStatement","src":"2320:47:87"},{"expression":{"arguments":[{"arguments":[{"arguments":[{"name":"pos","nativeSrc":"2391:3:87","nodeType":"YulIdentifier","src":"2391:3:87"},{"name":"length","nativeSrc":"2396:6:87","nodeType":"YulIdentifier","src":"2396:6:87"}],"functionName":{"name":"add","nativeSrc":"2387:3:87","nodeType":"YulIdentifier","src":"2387:3:87"},"nativeSrc":"2387:16:87","nodeType":"YulFunctionCall","src":"2387:16:87"},{"kind":"number","nativeSrc":"2405:4:87","nodeType":"YulLiteral","src":"2405:4:87","type":"","value":"0x20"}],"functionName":{"name":"add","nativeSrc":"2383:3:87","nodeType":"YulIdentifier","src":"2383:3:87"},"nativeSrc":"2383:27:87","nodeType":"YulFunctionCall","src":"2383:27:87"},{"kind":"number","nativeSrc":"2412:1:87","nodeType":"YulLiteral","src":"2412:1:87","type":"","value":"0"}],"functionName":{"name":"mstore","nativeSrc":"2376:6:87","nodeType":"YulIdentifier","src":"2376:6:87"},"nativeSrc":"2376:38:87","nodeType":"YulFunctionCall","src":"2376:38:87"},"nativeSrc":"2376:38:87","nodeType":"YulExpressionStatement","src":"2376:38:87"},{"nativeSrc":"2423:57:87","nodeType":"YulAssignment","src":"2423:57:87","value":{"arguments":[{"arguments":[{"name":"pos","nativeSrc":"2438:3:87","nodeType":"YulIdentifier","src":"2438:3:87"},{"arguments":[{"arguments":[{"name":"length","nativeSrc":"2451:6:87","nodeType":"YulIdentifier","src":"2451:6:87"},{"kind":"number","nativeSrc":"2459:2:87","nodeType":"YulLiteral","src":"2459:2:87","type":"","value":"31"}],"functionName":{"name":"add","nativeSrc":"2447:3:87","nodeType":"YulIdentifier","src":"2447:3:87"},"nativeSrc":"2447:15:87","nodeType":"YulFunctionCall","src":"2447:15:87"},{"arguments":[{"kind":"number","nativeSrc":"2468:2:87","nodeType":"YulLiteral","src":"2468:2:87","type":"","value":"31"}],"functionName":{"name":"not","nativeSrc":"2464:3:87","nodeType":"YulIdentifier","src":"2464:3:87"},"nativeSrc":"2464:7:87","nodeType":"YulFunctionCall","src":"2464:7:87"}],"functionName":{"name":"and","nativeSrc":"2443:3:87","nodeType":"YulIdentifier","src":"2443:3:87"},"nativeSrc":"2443:29:87","nodeType":"YulFunctionCall","src":"2443:29:87"}],"functionName":{"name":"add","nativeSrc":"2434:3:87","nodeType":"YulIdentifier","src":"2434:3:87"},"nativeSrc":"2434:39:87","nodeType":"YulFunctionCall","src":"2434:39:87"},{"kind":"number","nativeSrc":"2475:4:87","nodeType":"YulLiteral","src":"2475:4:87","type":"","value":"0x20"}],"functionName":{"name":"add","nativeSrc":"2430:3:87","nodeType":"YulIdentifier","src":"2430:3:87"},"nativeSrc":"2430:50:87","nodeType":"YulFunctionCall","src":"2430:50:87"},"variableNames":[{"name":"end","nativeSrc":"2423:3:87","nodeType":"YulIdentifier","src":"2423:3:87"}]}]},"name":"abi_encode_bytes","nativeSrc":"2198:288:87","nodeType":"YulFunctionDefinition","parameters":[{"name":"value","nativeSrc":"2224:5:87","nodeType":"YulTypedName","src":"2224:5:87","type":""},{"name":"pos","nativeSrc":"2231:3:87","nodeType":"YulTypedName","src":"2231:3:87","type":""}],"returnVariables":[{"name":"end","nativeSrc":"2239:3:87","nodeType":"YulTypedName","src":"2239:3:87","type":""}],"src":"2198:288:87"},{"body":{"nativeSrc":"2610:98:87","nodeType":"YulBlock","src":"2610:98:87","statements":[{"expression":{"arguments":[{"name":"headStart","nativeSrc":"2627:9:87","nodeType":"YulIdentifier","src":"2627:9:87"},{"kind":"number","nativeSrc":"2638:2:87","nodeType":"YulLiteral","src":"2638:2:87","type":"","value":"32"}],"functionName":{"name":"mstore","nativeSrc":"2620:6:87","nodeType":"YulIdentifier","src":"2620:6:87"},"nativeSrc":"2620:21:87","nodeType":"YulFunctionCall","src":"2620:21:87"},"nativeSrc":"2620:21:87","nodeType":"YulExpressionStatement","src":"2620:21:87"},{"nativeSrc":"2650:52:87","nodeType":"YulAssignment","src":"2650:52:87","value":{"arguments":[{"name":"value0","nativeSrc":"2675:6:87","nodeType":"YulIdentifier","src":"2675:6:87"},{"arguments":[{"name":"headStart","nativeSrc":"2687:9:87","nodeType":"YulIdentifier","src":"2687:9:87"},{"kind":"number","nativeSrc":"2698:2:87","nodeType":"YulLiteral","src":"2698:2:87","type":"","value":"32"}],"functionName":{"name":"add","nativeSrc":"2683:3:87","nodeType":"YulIdentifier","src":"2683:3:87"},"nativeSrc":"2683:18:87","nodeType":"YulFunctionCall","src":"2683:18:87"}],"functionName":{"name":"abi_encode_bytes","nativeSrc":"2658:16:87","nodeType":"YulIdentifier","src":"2658:16:87"},"nativeSrc":"2658:44:87","nodeType":"YulFunctionCall","src":"2658:44:87"},"variableNames":[{"name":"tail","nativeSrc":"2650:4:87","nodeType":"YulIdentifier","src":"2650:4:87"}]}]},"name":"abi_encode_tuple_t_bytes_memory_ptr__to_t_bytes_memory_ptr__fromStack_reversed","nativeSrc":"2491:217:87","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nativeSrc":"2579:9:87","nodeType":"YulTypedName","src":"2579:9:87","type":""},{"name":"value0","nativeSrc":"2590:6:87","nodeType":"YulTypedName","src":"2590:6:87","type":""}],"returnVariables":[{"name":"tail","nativeSrc":"2601:4:87","nodeType":"YulTypedName","src":"2601:4:87","type":""}],"src":"2491:217:87"},{"body":{"nativeSrc":"2814:76:87","nodeType":"YulBlock","src":"2814:76:87","statements":[{"nativeSrc":"2824:26:87","nodeType":"YulAssignment","src":"2824:26:87","value":{"arguments":[{"name":"headStart","nativeSrc":"2836:9:87","nodeType":"YulIdentifier","src":"2836:9:87"},{"kind":"number","nativeSrc":"2847:2:87","nodeType":"YulLiteral","src":"2847:2:87","type":"","value":"32"}],"functionName":{"name":"add","nativeSrc":"2832:3:87","nodeType":"YulIdentifier","src":"2832:3:87"},"nativeSrc":"2832:18:87","nodeType":"YulFunctionCall","src":"2832:18:87"},"variableNames":[{"name":"tail","nativeSrc":"2824:4:87","nodeType":"YulIdentifier","src":"2824:4:87"}]},{"expression":{"arguments":[{"name":"headStart","nativeSrc":"2866:9:87","nodeType":"YulIdentifier","src":"2866:9:87"},{"name":"value0","nativeSrc":"2877:6:87","nodeType":"YulIdentifier","src":"2877:6:87"}],"functionName":{"name":"mstore","nativeSrc":"2859:6:87","nodeType":"YulIdentifier","src":"2859:6:87"},"nativeSrc":"2859:25:87","nodeType":"YulFunctionCall","src":"2859:25:87"},"nativeSrc":"2859:25:87","nodeType":"YulExpressionStatement","src":"2859:25:87"}]},"name":"abi_encode_tuple_t_uint256__to_t_uint256__fromStack_reversed","nativeSrc":"2713:177:87","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nativeSrc":"2783:9:87","nodeType":"YulTypedName","src":"2783:9:87","type":""},{"name":"value0","nativeSrc":"2794:6:87","nodeType":"YulTypedName","src":"2794:6:87","type":""}],"returnVariables":[{"name":"tail","nativeSrc":"2805:4:87","nodeType":"YulTypedName","src":"2805:4:87","type":""}],"src":"2713:177:87"},{"body":{"nativeSrc":"2965:110:87","nodeType":"YulBlock","src":"2965:110:87","statements":[{"body":{"nativeSrc":"3011:16:87","nodeType":"YulBlock","src":"3011:16:87","statements":[{"expression":{"arguments":[{"kind":"number","nativeSrc":"3020:1:87","nodeType":"YulLiteral","src":"3020:1:87","type":"","value":"0"},{"kind":"number","nativeSrc":"3023:1:87","nodeType":"YulLiteral","src":"3023:1:87","type":"","value":"0"}],"functionName":{"name":"revert","nativeSrc":"3013:6:87","nodeType":"YulIdentifier","src":"3013:6:87"},"nativeSrc":"3013:12:87","nodeType":"YulFunctionCall","src":"3013:12:87"},"nativeSrc":"3013:12:87","nodeType":"YulExpressionStatement","src":"3013:12:87"}]},"condition":{"arguments":[{"arguments":[{"name":"dataEnd","nativeSrc":"2986:7:87","nodeType":"YulIdentifier","src":"2986:7:87"},{"name":"headStart","nativeSrc":"2995:9:87","nodeType":"YulIdentifier","src":"2995:9:87"}],"functionName":{"name":"sub","nativeSrc":"2982:3:87","nodeType":"YulIdentifier","src":"2982:3:87"},"nativeSrc":"2982:23:87","nodeType":"YulFunctionCall","src":"2982:23:87"},{"kind":"number","nativeSrc":"3007:2:87","nodeType":"YulLiteral","src":"3007:2:87","type":"","value":"32"}],"functionName":{"name":"slt","nativeSrc":"2978:3:87","nodeType":"YulIdentifier","src":"2978:3:87"},"nativeSrc":"2978:32:87","nodeType":"YulFunctionCall","src":"2978:32:87"},"nativeSrc":"2975:52:87","nodeType":"YulIf","src":"2975:52:87"},{"nativeSrc":"3036:33:87","nodeType":"YulAssignment","src":"3036:33:87","value":{"arguments":[{"name":"headStart","nativeSrc":"3059:9:87","nodeType":"YulIdentifier","src":"3059:9:87"}],"functionName":{"name":"calldataload","nativeSrc":"3046:12:87","nodeType":"YulIdentifier","src":"3046:12:87"},"nativeSrc":"3046:23:87","nodeType":"YulFunctionCall","src":"3046:23:87"},"variableNames":[{"name":"value0","nativeSrc":"3036:6:87","nodeType":"YulIdentifier","src":"3036:6:87"}]}]},"name":"abi_decode_tuple_t_uint256","nativeSrc":"2895:180:87","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nativeSrc":"2931:9:87","nodeType":"YulTypedName","src":"2931:9:87","type":""},{"name":"dataEnd","nativeSrc":"2942:7:87","nodeType":"YulTypedName","src":"2942:7:87","type":""}],"returnVariables":[{"name":"value0","nativeSrc":"2954:6:87","nodeType":"YulTypedName","src":"2954:6:87","type":""}],"src":"2895:180:87"},{"body":{"nativeSrc":"3125:86:87","nodeType":"YulBlock","src":"3125:86:87","statements":[{"body":{"nativeSrc":"3189:16:87","nodeType":"YulBlock","src":"3189:16:87","statements":[{"expression":{"arguments":[{"kind":"number","nativeSrc":"3198:1:87","nodeType":"YulLiteral","src":"3198:1:87","type":"","value":"0"},{"kind":"number","nativeSrc":"3201:1:87","nodeType":"YulLiteral","src":"3201:1:87","type":"","value":"0"}],"functionName":{"name":"revert","nativeSrc":"3191:6:87","nodeType":"YulIdentifier","src":"3191:6:87"},"nativeSrc":"3191:12:87","nodeType":"YulFunctionCall","src":"3191:12:87"},"nativeSrc":"3191:12:87","nodeType":"YulExpressionStatement","src":"3191:12:87"}]},"condition":{"arguments":[{"arguments":[{"name":"value","nativeSrc":"3148:5:87","nodeType":"YulIdentifier","src":"3148:5:87"},{"arguments":[{"name":"value","nativeSrc":"3159:5:87","nodeType":"YulIdentifier","src":"3159:5:87"},{"arguments":[{"arguments":[{"kind":"number","nativeSrc":"3174:3:87","nodeType":"YulLiteral","src":"3174:3:87","type":"","value":"160"},{"kind":"number","nativeSrc":"3179:1:87","nodeType":"YulLiteral","src":"3179:1:87","type":"","value":"1"}],"functionName":{"name":"shl","nativeSrc":"3170:3:87","nodeType":"YulIdentifier","src":"3170:3:87"},"nativeSrc":"3170:11:87","nodeType":"YulFunctionCall","src":"3170:11:87"},{"kind":"number","nativeSrc":"3183:1:87","nodeType":"YulLiteral","src":"3183:1:87","type":"","value":"1"}],"functionName":{"name":"sub","nativeSrc":"3166:3:87","nodeType":"YulIdentifier","src":"3166:3:87"},"nativeSrc":"3166:19:87","nodeType":"YulFunctionCall","src":"3166:19:87"}],"functionName":{"name":"and","nativeSrc":"3155:3:87","nodeType":"YulIdentifier","src":"3155:3:87"},"nativeSrc":"3155:31:87","nodeType":"YulFunctionCall","src":"3155:31:87"}],"functionName":{"name":"eq","nativeSrc":"3145:2:87","nodeType":"YulIdentifier","src":"3145:2:87"},"nativeSrc":"3145:42:87","nodeType":"YulFunctionCall","src":"3145:42:87"}],"functionName":{"name":"iszero","nativeSrc":"3138:6:87","nodeType":"YulIdentifier","src":"3138:6:87"},"nativeSrc":"3138:50:87","nodeType":"YulFunctionCall","src":"3138:50:87"},"nativeSrc":"3135:70:87","nodeType":"YulIf","src":"3135:70:87"}]},"name":"validator_revert_address","nativeSrc":"3080:131:87","nodeType":"YulFunctionDefinition","parameters":[{"name":"value","nativeSrc":"3114:5:87","nodeType":"YulTypedName","src":"3114:5:87","type":""}],"src":"3080:131:87"},{"body":{"nativeSrc":"3286:177:87","nodeType":"YulBlock","src":"3286:177:87","statements":[{"body":{"nativeSrc":"3332:16:87","nodeType":"YulBlock","src":"3332:16:87","statements":[{"expression":{"arguments":[{"kind":"number","nativeSrc":"3341:1:87","nodeType":"YulLiteral","src":"3341:1:87","type":"","value":"0"},{"kind":"number","nativeSrc":"3344:1:87","nodeType":"YulLiteral","src":"3344:1:87","type":"","value":"0"}],"functionName":{"name":"revert","nativeSrc":"3334:6:87","nodeType":"YulIdentifier","src":"3334:6:87"},"nativeSrc":"3334:12:87","nodeType":"YulFunctionCall","src":"3334:12:87"},"nativeSrc":"3334:12:87","nodeType":"YulExpressionStatement","src":"3334:12:87"}]},"condition":{"arguments":[{"arguments":[{"name":"dataEnd","nativeSrc":"3307:7:87","nodeType":"YulIdentifier","src":"3307:7:87"},{"name":"headStart","nativeSrc":"3316:9:87","nodeType":"YulIdentifier","src":"3316:9:87"}],"functionName":{"name":"sub","nativeSrc":"3303:3:87","nodeType":"YulIdentifier","src":"3303:3:87"},"nativeSrc":"3303:23:87","nodeType":"YulFunctionCall","src":"3303:23:87"},{"kind":"number","nativeSrc":"3328:2:87","nodeType":"YulLiteral","src":"3328:2:87","type":"","value":"32"}],"functionName":{"name":"slt","nativeSrc":"3299:3:87","nodeType":"YulIdentifier","src":"3299:3:87"},"nativeSrc":"3299:32:87","nodeType":"YulFunctionCall","src":"3299:32:87"},"nativeSrc":"3296:52:87","nodeType":"YulIf","src":"3296:52:87"},{"nativeSrc":"3357:36:87","nodeType":"YulVariableDeclaration","src":"3357:36:87","value":{"arguments":[{"name":"headStart","nativeSrc":"3383:9:87","nodeType":"YulIdentifier","src":"3383:9:87"}],"functionName":{"name":"calldataload","nativeSrc":"3370:12:87","nodeType":"YulIdentifier","src":"3370:12:87"},"nativeSrc":"3370:23:87","nodeType":"YulFunctionCall","src":"3370:23:87"},"variables":[{"name":"value","nativeSrc":"3361:5:87","nodeType":"YulTypedName","src":"3361:5:87","type":""}]},{"expression":{"arguments":[{"name":"value","nativeSrc":"3427:5:87","nodeType":"YulIdentifier","src":"3427:5:87"}],"functionName":{"name":"validator_revert_address","nativeSrc":"3402:24:87","nodeType":"YulIdentifier","src":"3402:24:87"},"nativeSrc":"3402:31:87","nodeType":"YulFunctionCall","src":"3402:31:87"},"nativeSrc":"3402:31:87","nodeType":"YulExpressionStatement","src":"3402:31:87"},{"nativeSrc":"3442:15:87","nodeType":"YulAssignment","src":"3442:15:87","value":{"name":"value","nativeSrc":"3452:5:87","nodeType":"YulIdentifier","src":"3452:5:87"},"variableNames":[{"name":"value0","nativeSrc":"3442:6:87","nodeType":"YulIdentifier","src":"3442:6:87"}]}]},"name":"abi_decode_tuple_t_address","nativeSrc":"3216:247:87","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nativeSrc":"3252:9:87","nodeType":"YulTypedName","src":"3252:9:87","type":""},{"name":"dataEnd","nativeSrc":"3263:7:87","nodeType":"YulTypedName","src":"3263:7:87","type":""}],"returnVariables":[{"name":"value0","nativeSrc":"3275:6:87","nodeType":"YulTypedName","src":"3275:6:87","type":""}],"src":"3216:247:87"},{"body":{"nativeSrc":"3500:95:87","nodeType":"YulBlock","src":"3500:95:87","statements":[{"expression":{"arguments":[{"kind":"number","nativeSrc":"3517:1:87","nodeType":"YulLiteral","src":"3517:1:87","type":"","value":"0"},{"arguments":[{"kind":"number","nativeSrc":"3524:3:87","nodeType":"YulLiteral","src":"3524:3:87","type":"","value":"224"},{"kind":"number","nativeSrc":"3529:10:87","nodeType":"YulLiteral","src":"3529:10:87","type":"","value":"0x4e487b71"}],"functionName":{"name":"shl","nativeSrc":"3520:3:87","nodeType":"YulIdentifier","src":"3520:3:87"},"nativeSrc":"3520:20:87","nodeType":"YulFunctionCall","src":"3520:20:87"}],"functionName":{"name":"mstore","nativeSrc":"3510:6:87","nodeType":"YulIdentifier","src":"3510:6:87"},"nativeSrc":"3510:31:87","nodeType":"YulFunctionCall","src":"3510:31:87"},"nativeSrc":"3510:31:87","nodeType":"YulExpressionStatement","src":"3510:31:87"},{"expression":{"arguments":[{"kind":"number","nativeSrc":"3557:1:87","nodeType":"YulLiteral","src":"3557:1:87","type":"","value":"4"},{"kind":"number","nativeSrc":"3560:4:87","nodeType":"YulLiteral","src":"3560:4:87","type":"","value":"0x21"}],"functionName":{"name":"mstore","nativeSrc":"3550:6:87","nodeType":"YulIdentifier","src":"3550:6:87"},"nativeSrc":"3550:15:87","nodeType":"YulFunctionCall","src":"3550:15:87"},"nativeSrc":"3550:15:87","nodeType":"YulExpressionStatement","src":"3550:15:87"},{"expression":{"arguments":[{"kind":"number","nativeSrc":"3581:1:87","nodeType":"YulLiteral","src":"3581:1:87","type":"","value":"0"},{"kind":"number","nativeSrc":"3584:4:87","nodeType":"YulLiteral","src":"3584:4:87","type":"","value":"0x24"}],"functionName":{"name":"revert","nativeSrc":"3574:6:87","nodeType":"YulIdentifier","src":"3574:6:87"},"nativeSrc":"3574:15:87","nodeType":"YulFunctionCall","src":"3574:15:87"},"nativeSrc":"3574:15:87","nodeType":"YulExpressionStatement","src":"3574:15:87"}]},"name":"panic_error_0x21","nativeSrc":"3468:127:87","nodeType":"YulFunctionDefinition","src":"3468:127:87"},{"body":{"nativeSrc":"3661:418:87","nodeType":"YulBlock","src":"3661:418:87","statements":[{"nativeSrc":"3671:22:87","nodeType":"YulVariableDeclaration","src":"3671:22:87","value":{"arguments":[{"name":"value","nativeSrc":"3687:5:87","nodeType":"YulIdentifier","src":"3687:5:87"}],"functionName":{"name":"mload","nativeSrc":"3681:5:87","nodeType":"YulIdentifier","src":"3681:5:87"},"nativeSrc":"3681:12:87","nodeType":"YulFunctionCall","src":"3681:12:87"},"variables":[{"name":"_1","nativeSrc":"3675:2:87","nodeType":"YulTypedName","src":"3675:2:87","type":""}]},{"body":{"nativeSrc":"3731:111:87","nodeType":"YulBlock","src":"3731:111:87","statements":[{"expression":{"arguments":[{"kind":"number","nativeSrc":"3752:1:87","nodeType":"YulLiteral","src":"3752:1:87","type":"","value":"0"},{"arguments":[{"kind":"number","nativeSrc":"3759:3:87","nodeType":"YulLiteral","src":"3759:3:87","type":"","value":"224"},{"kind":"number","nativeSrc":"3764:10:87","nodeType":"YulLiteral","src":"3764:10:87","type":"","value":"0x4e487b71"}],"functionName":{"name":"shl","nativeSrc":"3755:3:87","nodeType":"YulIdentifier","src":"3755:3:87"},"nativeSrc":"3755:20:87","nodeType":"YulFunctionCall","src":"3755:20:87"}],"functionName":{"name":"mstore","nativeSrc":"3745:6:87","nodeType":"YulIdentifier","src":"3745:6:87"},"nativeSrc":"3745:31:87","nodeType":"YulFunctionCall","src":"3745:31:87"},"nativeSrc":"3745:31:87","nodeType":"YulExpressionStatement","src":"3745:31:87"},{"expression":{"arguments":[{"kind":"number","nativeSrc":"3796:1:87","nodeType":"YulLiteral","src":"3796:1:87","type":"","value":"4"},{"kind":"number","nativeSrc":"3799:4:87","nodeType":"YulLiteral","src":"3799:4:87","type":"","value":"0x21"}],"functionName":{"name":"mstore","nativeSrc":"3789:6:87","nodeType":"YulIdentifier","src":"3789:6:87"},"nativeSrc":"3789:15:87","nodeType":"YulFunctionCall","src":"3789:15:87"},"nativeSrc":"3789:15:87","nodeType":"YulExpressionStatement","src":"3789:15:87"},{"expression":{"arguments":[{"kind":"number","nativeSrc":"3824:1:87","nodeType":"YulLiteral","src":"3824:1:87","type":"","value":"0"},{"kind":"number","nativeSrc":"3827:4:87","nodeType":"YulLiteral","src":"3827:4:87","type":"","value":"0x24"}],"functionName":{"name":"revert","nativeSrc":"3817:6:87","nodeType":"YulIdentifier","src":"3817:6:87"},"nativeSrc":"3817:15:87","nodeType":"YulFunctionCall","src":"3817:15:87"},"nativeSrc":"3817:15:87","nodeType":"YulExpressionStatement","src":"3817:15:87"}]},"condition":{"arguments":[{"arguments":[{"name":"_1","nativeSrc":"3715:2:87","nodeType":"YulIdentifier","src":"3715:2:87"},{"kind":"number","nativeSrc":"3719:1:87","nodeType":"YulLiteral","src":"3719:1:87","type":"","value":"3"}],"functionName":{"name":"lt","nativeSrc":"3712:2:87","nodeType":"YulIdentifier","src":"3712:2:87"},"nativeSrc":"3712:9:87","nodeType":"YulFunctionCall","src":"3712:9:87"}],"functionName":{"name":"iszero","nativeSrc":"3705:6:87","nodeType":"YulIdentifier","src":"3705:6:87"},"nativeSrc":"3705:17:87","nodeType":"YulFunctionCall","src":"3705:17:87"},"nativeSrc":"3702:140:87","nodeType":"YulIf","src":"3702:140:87"},{"expression":{"arguments":[{"name":"pos","nativeSrc":"3858:3:87","nodeType":"YulIdentifier","src":"3858:3:87"},{"name":"_1","nativeSrc":"3863:2:87","nodeType":"YulIdentifier","src":"3863:2:87"}],"functionName":{"name":"mstore","nativeSrc":"3851:6:87","nodeType":"YulIdentifier","src":"3851:6:87"},"nativeSrc":"3851:15:87","nodeType":"YulFunctionCall","src":"3851:15:87"},"nativeSrc":"3851:15:87","nodeType":"YulExpressionStatement","src":"3851:15:87"},{"expression":{"arguments":[{"arguments":[{"name":"pos","nativeSrc":"3886:3:87","nodeType":"YulIdentifier","src":"3886:3:87"},{"kind":"number","nativeSrc":"3891:4:87","nodeType":"YulLiteral","src":"3891:4:87","type":"","value":"0x20"}],"functionName":{"name":"add","nativeSrc":"3882:3:87","nodeType":"YulIdentifier","src":"3882:3:87"},"nativeSrc":"3882:14:87","nodeType":"YulFunctionCall","src":"3882:14:87"},{"arguments":[{"arguments":[{"name":"value","nativeSrc":"3908:5:87","nodeType":"YulIdentifier","src":"3908:5:87"},{"kind":"number","nativeSrc":"3915:4:87","nodeType":"YulLiteral","src":"3915:4:87","type":"","value":"0x20"}],"functionName":{"name":"add","nativeSrc":"3904:3:87","nodeType":"YulIdentifier","src":"3904:3:87"},"nativeSrc":"3904:16:87","nodeType":"YulFunctionCall","src":"3904:16:87"}],"functionName":{"name":"mload","nativeSrc":"3898:5:87","nodeType":"YulIdentifier","src":"3898:5:87"},"nativeSrc":"3898:23:87","nodeType":"YulFunctionCall","src":"3898:23:87"}],"functionName":{"name":"mstore","nativeSrc":"3875:6:87","nodeType":"YulIdentifier","src":"3875:6:87"},"nativeSrc":"3875:47:87","nodeType":"YulFunctionCall","src":"3875:47:87"},"nativeSrc":"3875:47:87","nodeType":"YulExpressionStatement","src":"3875:47:87"},{"nativeSrc":"3931:43:87","nodeType":"YulVariableDeclaration","src":"3931:43:87","value":{"arguments":[{"arguments":[{"name":"value","nativeSrc":"3961:5:87","nodeType":"YulIdentifier","src":"3961:5:87"},{"kind":"number","nativeSrc":"3968:4:87","nodeType":"YulLiteral","src":"3968:4:87","type":"","value":"0x40"}],"functionName":{"name":"add","nativeSrc":"3957:3:87","nodeType":"YulIdentifier","src":"3957:3:87"},"nativeSrc":"3957:16:87","nodeType":"YulFunctionCall","src":"3957:16:87"}],"functionName":{"name":"mload","nativeSrc":"3951:5:87","nodeType":"YulIdentifier","src":"3951:5:87"},"nativeSrc":"3951:23:87","nodeType":"YulFunctionCall","src":"3951:23:87"},"variables":[{"name":"memberValue0","nativeSrc":"3935:12:87","nodeType":"YulTypedName","src":"3935:12:87","type":""}]},{"expression":{"arguments":[{"arguments":[{"name":"pos","nativeSrc":"3994:3:87","nodeType":"YulIdentifier","src":"3994:3:87"},{"kind":"number","nativeSrc":"3999:4:87","nodeType":"YulLiteral","src":"3999:4:87","type":"","value":"0x40"}],"functionName":{"name":"add","nativeSrc":"3990:3:87","nodeType":"YulIdentifier","src":"3990:3:87"},"nativeSrc":"3990:14:87","nodeType":"YulFunctionCall","src":"3990:14:87"},{"kind":"number","nativeSrc":"4006:4:87","nodeType":"YulLiteral","src":"4006:4:87","type":"","value":"0x60"}],"functionName":{"name":"mstore","nativeSrc":"3983:6:87","nodeType":"YulIdentifier","src":"3983:6:87"},"nativeSrc":"3983:28:87","nodeType":"YulFunctionCall","src":"3983:28:87"},"nativeSrc":"3983:28:87","nodeType":"YulExpressionStatement","src":"3983:28:87"},{"nativeSrc":"4020:53:87","nodeType":"YulAssignment","src":"4020:53:87","value":{"arguments":[{"name":"memberValue0","nativeSrc":"4044:12:87","nodeType":"YulIdentifier","src":"4044:12:87"},{"arguments":[{"name":"pos","nativeSrc":"4062:3:87","nodeType":"YulIdentifier","src":"4062:3:87"},{"kind":"number","nativeSrc":"4067:4:87","nodeType":"YulLiteral","src":"4067:4:87","type":"","value":"0x60"}],"functionName":{"name":"add","nativeSrc":"4058:3:87","nodeType":"YulIdentifier","src":"4058:3:87"},"nativeSrc":"4058:14:87","nodeType":"YulFunctionCall","src":"4058:14:87"}],"functionName":{"name":"abi_encode_bytes","nativeSrc":"4027:16:87","nodeType":"YulIdentifier","src":"4027:16:87"},"nativeSrc":"4027:46:87","nodeType":"YulFunctionCall","src":"4027:46:87"},"variableNames":[{"name":"end","nativeSrc":"4020:3:87","nodeType":"YulIdentifier","src":"4020:3:87"}]}]},"name":"abi_encode_struct_SwapConfig","nativeSrc":"3600:479:87","nodeType":"YulFunctionDefinition","parameters":[{"name":"value","nativeSrc":"3638:5:87","nodeType":"YulTypedName","src":"3638:5:87","type":""},{"name":"pos","nativeSrc":"3645:3:87","nodeType":"YulTypedName","src":"3645:3:87","type":""}],"returnVariables":[{"name":"end","nativeSrc":"3653:3:87","nodeType":"YulTypedName","src":"3653:3:87","type":""}],"src":"3600:479:87"},{"body":{"nativeSrc":"4241:110:87","nodeType":"YulBlock","src":"4241:110:87","statements":[{"expression":{"arguments":[{"name":"headStart","nativeSrc":"4258:9:87","nodeType":"YulIdentifier","src":"4258:9:87"},{"kind":"number","nativeSrc":"4269:2:87","nodeType":"YulLiteral","src":"4269:2:87","type":"","value":"32"}],"functionName":{"name":"mstore","nativeSrc":"4251:6:87","nodeType":"YulIdentifier","src":"4251:6:87"},"nativeSrc":"4251:21:87","nodeType":"YulFunctionCall","src":"4251:21:87"},"nativeSrc":"4251:21:87","nodeType":"YulExpressionStatement","src":"4251:21:87"},{"nativeSrc":"4281:64:87","nodeType":"YulAssignment","src":"4281:64:87","value":{"arguments":[{"name":"value0","nativeSrc":"4318:6:87","nodeType":"YulIdentifier","src":"4318:6:87"},{"arguments":[{"name":"headStart","nativeSrc":"4330:9:87","nodeType":"YulIdentifier","src":"4330:9:87"},{"kind":"number","nativeSrc":"4341:2:87","nodeType":"YulLiteral","src":"4341:2:87","type":"","value":"32"}],"functionName":{"name":"add","nativeSrc":"4326:3:87","nodeType":"YulIdentifier","src":"4326:3:87"},"nativeSrc":"4326:18:87","nodeType":"YulFunctionCall","src":"4326:18:87"}],"functionName":{"name":"abi_encode_struct_SwapConfig","nativeSrc":"4289:28:87","nodeType":"YulIdentifier","src":"4289:28:87"},"nativeSrc":"4289:56:87","nodeType":"YulFunctionCall","src":"4289:56:87"},"variableNames":[{"name":"tail","nativeSrc":"4281:4:87","nodeType":"YulIdentifier","src":"4281:4:87"}]}]},"name":"abi_encode_tuple_t_struct$_SwapConfig_$1113_memory_ptr__to_t_struct$_SwapConfig_$1113_memory_ptr__fromStack_reversed","nativeSrc":"4084:267:87","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nativeSrc":"4210:9:87","nodeType":"YulTypedName","src":"4210:9:87","type":""},{"name":"value0","nativeSrc":"4221:6:87","nodeType":"YulTypedName","src":"4221:6:87","type":""}],"returnVariables":[{"name":"tail","nativeSrc":"4232:4:87","nodeType":"YulTypedName","src":"4232:4:87","type":""}],"src":"4084:267:87"},{"body":{"nativeSrc":"4398:76:87","nodeType":"YulBlock","src":"4398:76:87","statements":[{"body":{"nativeSrc":"4452:16:87","nodeType":"YulBlock","src":"4452:16:87","statements":[{"expression":{"arguments":[{"kind":"number","nativeSrc":"4461:1:87","nodeType":"YulLiteral","src":"4461:1:87","type":"","value":"0"},{"kind":"number","nativeSrc":"4464:1:87","nodeType":"YulLiteral","src":"4464:1:87","type":"","value":"0"}],"functionName":{"name":"revert","nativeSrc":"4454:6:87","nodeType":"YulIdentifier","src":"4454:6:87"},"nativeSrc":"4454:12:87","nodeType":"YulFunctionCall","src":"4454:12:87"},"nativeSrc":"4454:12:87","nodeType":"YulExpressionStatement","src":"4454:12:87"}]},"condition":{"arguments":[{"arguments":[{"name":"value","nativeSrc":"4421:5:87","nodeType":"YulIdentifier","src":"4421:5:87"},{"arguments":[{"arguments":[{"name":"value","nativeSrc":"4442:5:87","nodeType":"YulIdentifier","src":"4442:5:87"}],"functionName":{"name":"iszero","nativeSrc":"4435:6:87","nodeType":"YulIdentifier","src":"4435:6:87"},"nativeSrc":"4435:13:87","nodeType":"YulFunctionCall","src":"4435:13:87"}],"functionName":{"name":"iszero","nativeSrc":"4428:6:87","nodeType":"YulIdentifier","src":"4428:6:87"},"nativeSrc":"4428:21:87","nodeType":"YulFunctionCall","src":"4428:21:87"}],"functionName":{"name":"eq","nativeSrc":"4418:2:87","nodeType":"YulIdentifier","src":"4418:2:87"},"nativeSrc":"4418:32:87","nodeType":"YulFunctionCall","src":"4418:32:87"}],"functionName":{"name":"iszero","nativeSrc":"4411:6:87","nodeType":"YulIdentifier","src":"4411:6:87"},"nativeSrc":"4411:40:87","nodeType":"YulFunctionCall","src":"4411:40:87"},"nativeSrc":"4408:60:87","nodeType":"YulIf","src":"4408:60:87"}]},"name":"validator_revert_bool","nativeSrc":"4356:118:87","nodeType":"YulFunctionDefinition","parameters":[{"name":"value","nativeSrc":"4387:5:87","nodeType":"YulTypedName","src":"4387:5:87","type":""}],"src":"4356:118:87"},{"body":{"nativeSrc":"4546:174:87","nodeType":"YulBlock","src":"4546:174:87","statements":[{"body":{"nativeSrc":"4592:16:87","nodeType":"YulBlock","src":"4592:16:87","statements":[{"expression":{"arguments":[{"kind":"number","nativeSrc":"4601:1:87","nodeType":"YulLiteral","src":"4601:1:87","type":"","value":"0"},{"kind":"number","nativeSrc":"4604:1:87","nodeType":"YulLiteral","src":"4604:1:87","type":"","value":"0"}],"functionName":{"name":"revert","nativeSrc":"4594:6:87","nodeType":"YulIdentifier","src":"4594:6:87"},"nativeSrc":"4594:12:87","nodeType":"YulFunctionCall","src":"4594:12:87"},"nativeSrc":"4594:12:87","nodeType":"YulExpressionStatement","src":"4594:12:87"}]},"condition":{"arguments":[{"arguments":[{"name":"dataEnd","nativeSrc":"4567:7:87","nodeType":"YulIdentifier","src":"4567:7:87"},{"name":"headStart","nativeSrc":"4576:9:87","nodeType":"YulIdentifier","src":"4576:9:87"}],"functionName":{"name":"sub","nativeSrc":"4563:3:87","nodeType":"YulIdentifier","src":"4563:3:87"},"nativeSrc":"4563:23:87","nodeType":"YulFunctionCall","src":"4563:23:87"},{"kind":"number","nativeSrc":"4588:2:87","nodeType":"YulLiteral","src":"4588:2:87","type":"","value":"32"}],"functionName":{"name":"slt","nativeSrc":"4559:3:87","nodeType":"YulIdentifier","src":"4559:3:87"},"nativeSrc":"4559:32:87","nodeType":"YulFunctionCall","src":"4559:32:87"},"nativeSrc":"4556:52:87","nodeType":"YulIf","src":"4556:52:87"},{"nativeSrc":"4617:36:87","nodeType":"YulVariableDeclaration","src":"4617:36:87","value":{"arguments":[{"name":"headStart","nativeSrc":"4643:9:87","nodeType":"YulIdentifier","src":"4643:9:87"}],"functionName":{"name":"calldataload","nativeSrc":"4630:12:87","nodeType":"YulIdentifier","src":"4630:12:87"},"nativeSrc":"4630:23:87","nodeType":"YulFunctionCall","src":"4630:23:87"},"variables":[{"name":"value","nativeSrc":"4621:5:87","nodeType":"YulTypedName","src":"4621:5:87","type":""}]},{"expression":{"arguments":[{"name":"value","nativeSrc":"4684:5:87","nodeType":"YulIdentifier","src":"4684:5:87"}],"functionName":{"name":"validator_revert_bool","nativeSrc":"4662:21:87","nodeType":"YulIdentifier","src":"4662:21:87"},"nativeSrc":"4662:28:87","nodeType":"YulFunctionCall","src":"4662:28:87"},"nativeSrc":"4662:28:87","nodeType":"YulExpressionStatement","src":"4662:28:87"},{"nativeSrc":"4699:15:87","nodeType":"YulAssignment","src":"4699:15:87","value":{"name":"value","nativeSrc":"4709:5:87","nodeType":"YulIdentifier","src":"4709:5:87"},"variableNames":[{"name":"value0","nativeSrc":"4699:6:87","nodeType":"YulIdentifier","src":"4699:6:87"}]}]},"name":"abi_decode_tuple_t_bool","nativeSrc":"4479:241:87","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nativeSrc":"4512:9:87","nodeType":"YulTypedName","src":"4512:9:87","type":""},{"name":"dataEnd","nativeSrc":"4523:7:87","nodeType":"YulTypedName","src":"4523:7:87","type":""}],"returnVariables":[{"name":"value0","nativeSrc":"4535:6:87","nodeType":"YulTypedName","src":"4535:6:87","type":""}],"src":"4479:241:87"},{"body":{"nativeSrc":"4826:76:87","nodeType":"YulBlock","src":"4826:76:87","statements":[{"nativeSrc":"4836:26:87","nodeType":"YulAssignment","src":"4836:26:87","value":{"arguments":[{"name":"headStart","nativeSrc":"4848:9:87","nodeType":"YulIdentifier","src":"4848:9:87"},{"kind":"number","nativeSrc":"4859:2:87","nodeType":"YulLiteral","src":"4859:2:87","type":"","value":"32"}],"functionName":{"name":"add","nativeSrc":"4844:3:87","nodeType":"YulIdentifier","src":"4844:3:87"},"nativeSrc":"4844:18:87","nodeType":"YulFunctionCall","src":"4844:18:87"},"variableNames":[{"name":"tail","nativeSrc":"4836:4:87","nodeType":"YulIdentifier","src":"4836:4:87"}]},{"expression":{"arguments":[{"name":"headStart","nativeSrc":"4878:9:87","nodeType":"YulIdentifier","src":"4878:9:87"},{"name":"value0","nativeSrc":"4889:6:87","nodeType":"YulIdentifier","src":"4889:6:87"}],"functionName":{"name":"mstore","nativeSrc":"4871:6:87","nodeType":"YulIdentifier","src":"4871:6:87"},"nativeSrc":"4871:25:87","nodeType":"YulFunctionCall","src":"4871:25:87"},"nativeSrc":"4871:25:87","nodeType":"YulExpressionStatement","src":"4871:25:87"}]},"name":"abi_encode_tuple_t_bytes32__to_t_bytes32__fromStack_reversed","nativeSrc":"4725:177:87","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nativeSrc":"4795:9:87","nodeType":"YulTypedName","src":"4795:9:87","type":""},{"name":"value0","nativeSrc":"4806:6:87","nodeType":"YulTypedName","src":"4806:6:87","type":""}],"returnVariables":[{"name":"tail","nativeSrc":"4817:4:87","nodeType":"YulTypedName","src":"4817:4:87","type":""}],"src":"4725:177:87"},{"body":{"nativeSrc":"5008:102:87","nodeType":"YulBlock","src":"5008:102:87","statements":[{"nativeSrc":"5018:26:87","nodeType":"YulAssignment","src":"5018:26:87","value":{"arguments":[{"name":"headStart","nativeSrc":"5030:9:87","nodeType":"YulIdentifier","src":"5030:9:87"},{"kind":"number","nativeSrc":"5041:2:87","nodeType":"YulLiteral","src":"5041:2:87","type":"","value":"32"}],"functionName":{"name":"add","nativeSrc":"5026:3:87","nodeType":"YulIdentifier","src":"5026:3:87"},"nativeSrc":"5026:18:87","nodeType":"YulFunctionCall","src":"5026:18:87"},"variableNames":[{"name":"tail","nativeSrc":"5018:4:87","nodeType":"YulIdentifier","src":"5018:4:87"}]},{"expression":{"arguments":[{"name":"headStart","nativeSrc":"5060:9:87","nodeType":"YulIdentifier","src":"5060:9:87"},{"arguments":[{"name":"value0","nativeSrc":"5075:6:87","nodeType":"YulIdentifier","src":"5075:6:87"},{"arguments":[{"arguments":[{"kind":"number","nativeSrc":"5091:3:87","nodeType":"YulLiteral","src":"5091:3:87","type":"","value":"160"},{"kind":"number","nativeSrc":"5096:1:87","nodeType":"YulLiteral","src":"5096:1:87","type":"","value":"1"}],"functionName":{"name":"shl","nativeSrc":"5087:3:87","nodeType":"YulIdentifier","src":"5087:3:87"},"nativeSrc":"5087:11:87","nodeType":"YulFunctionCall","src":"5087:11:87"},{"kind":"number","nativeSrc":"5100:1:87","nodeType":"YulLiteral","src":"5100:1:87","type":"","value":"1"}],"functionName":{"name":"sub","nativeSrc":"5083:3:87","nodeType":"YulIdentifier","src":"5083:3:87"},"nativeSrc":"5083:19:87","nodeType":"YulFunctionCall","src":"5083:19:87"}],"functionName":{"name":"and","nativeSrc":"5071:3:87","nodeType":"YulIdentifier","src":"5071:3:87"},"nativeSrc":"5071:32:87","nodeType":"YulFunctionCall","src":"5071:32:87"}],"functionName":{"name":"mstore","nativeSrc":"5053:6:87","nodeType":"YulIdentifier","src":"5053:6:87"},"nativeSrc":"5053:51:87","nodeType":"YulFunctionCall","src":"5053:51:87"},"nativeSrc":"5053:51:87","nodeType":"YulExpressionStatement","src":"5053:51:87"}]},"name":"abi_encode_tuple_t_address__to_t_address__fromStack_reversed","nativeSrc":"4907:203:87","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nativeSrc":"4977:9:87","nodeType":"YulTypedName","src":"4977:9:87","type":""},{"name":"value0","nativeSrc":"4988:6:87","nodeType":"YulTypedName","src":"4988:6:87","type":""}],"returnVariables":[{"name":"tail","nativeSrc":"4999:4:87","nodeType":"YulTypedName","src":"4999:4:87","type":""}],"src":"4907:203:87"},{"body":{"nativeSrc":"5194:241:87","nodeType":"YulBlock","src":"5194:241:87","statements":[{"body":{"nativeSrc":"5240:16:87","nodeType":"YulBlock","src":"5240:16:87","statements":[{"expression":{"arguments":[{"kind":"number","nativeSrc":"5249:1:87","nodeType":"YulLiteral","src":"5249:1:87","type":"","value":"0"},{"kind":"number","nativeSrc":"5252:1:87","nodeType":"YulLiteral","src":"5252:1:87","type":"","value":"0"}],"functionName":{"name":"revert","nativeSrc":"5242:6:87","nodeType":"YulIdentifier","src":"5242:6:87"},"nativeSrc":"5242:12:87","nodeType":"YulFunctionCall","src":"5242:12:87"},"nativeSrc":"5242:12:87","nodeType":"YulExpressionStatement","src":"5242:12:87"}]},"condition":{"arguments":[{"arguments":[{"name":"dataEnd","nativeSrc":"5215:7:87","nodeType":"YulIdentifier","src":"5215:7:87"},{"name":"headStart","nativeSrc":"5224:9:87","nodeType":"YulIdentifier","src":"5224:9:87"}],"functionName":{"name":"sub","nativeSrc":"5211:3:87","nodeType":"YulIdentifier","src":"5211:3:87"},"nativeSrc":"5211:23:87","nodeType":"YulFunctionCall","src":"5211:23:87"},{"kind":"number","nativeSrc":"5236:2:87","nodeType":"YulLiteral","src":"5236:2:87","type":"","value":"32"}],"functionName":{"name":"slt","nativeSrc":"5207:3:87","nodeType":"YulIdentifier","src":"5207:3:87"},"nativeSrc":"5207:32:87","nodeType":"YulFunctionCall","src":"5207:32:87"},"nativeSrc":"5204:52:87","nodeType":"YulIf","src":"5204:52:87"},{"nativeSrc":"5265:37:87","nodeType":"YulVariableDeclaration","src":"5265:37:87","value":{"arguments":[{"name":"headStart","nativeSrc":"5292:9:87","nodeType":"YulIdentifier","src":"5292:9:87"}],"functionName":{"name":"calldataload","nativeSrc":"5279:12:87","nodeType":"YulIdentifier","src":"5279:12:87"},"nativeSrc":"5279:23:87","nodeType":"YulFunctionCall","src":"5279:23:87"},"variables":[{"name":"offset","nativeSrc":"5269:6:87","nodeType":"YulTypedName","src":"5269:6:87","type":""}]},{"body":{"nativeSrc":"5345:16:87","nodeType":"YulBlock","src":"5345:16:87","statements":[{"expression":{"arguments":[{"kind":"number","nativeSrc":"5354:1:87","nodeType":"YulLiteral","src":"5354:1:87","type":"","value":"0"},{"kind":"number","nativeSrc":"5357:1:87","nodeType":"YulLiteral","src":"5357:1:87","type":"","value":"0"}],"functionName":{"name":"revert","nativeSrc":"5347:6:87","nodeType":"YulIdentifier","src":"5347:6:87"},"nativeSrc":"5347:12:87","nodeType":"YulFunctionCall","src":"5347:12:87"},"nativeSrc":"5347:12:87","nodeType":"YulExpressionStatement","src":"5347:12:87"}]},"condition":{"arguments":[{"name":"offset","nativeSrc":"5317:6:87","nodeType":"YulIdentifier","src":"5317:6:87"},{"kind":"number","nativeSrc":"5325:18:87","nodeType":"YulLiteral","src":"5325:18:87","type":"","value":"0xffffffffffffffff"}],"functionName":{"name":"gt","nativeSrc":"5314:2:87","nodeType":"YulIdentifier","src":"5314:2:87"},"nativeSrc":"5314:30:87","nodeType":"YulFunctionCall","src":"5314:30:87"},"nativeSrc":"5311:50:87","nodeType":"YulIf","src":"5311:50:87"},{"nativeSrc":"5370:59:87","nodeType":"YulAssignment","src":"5370:59:87","value":{"arguments":[{"arguments":[{"name":"headStart","nativeSrc":"5401:9:87","nodeType":"YulIdentifier","src":"5401:9:87"},{"name":"offset","nativeSrc":"5412:6:87","nodeType":"YulIdentifier","src":"5412:6:87"}],"functionName":{"name":"add","nativeSrc":"5397:3:87","nodeType":"YulIdentifier","src":"5397:3:87"},"nativeSrc":"5397:22:87","nodeType":"YulFunctionCall","src":"5397:22:87"},{"name":"dataEnd","nativeSrc":"5421:7:87","nodeType":"YulIdentifier","src":"5421:7:87"}],"functionName":{"name":"abi_decode_bytes","nativeSrc":"5380:16:87","nodeType":"YulIdentifier","src":"5380:16:87"},"nativeSrc":"5380:49:87","nodeType":"YulFunctionCall","src":"5380:49:87"},"variableNames":[{"name":"value0","nativeSrc":"5370:6:87","nodeType":"YulIdentifier","src":"5370:6:87"}]}]},"name":"abi_decode_tuple_t_bytes_memory_ptr","nativeSrc":"5115:320:87","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nativeSrc":"5160:9:87","nodeType":"YulTypedName","src":"5160:9:87","type":""},{"name":"dataEnd","nativeSrc":"5171:7:87","nodeType":"YulTypedName","src":"5171:7:87","type":""}],"returnVariables":[{"name":"value0","nativeSrc":"5183:6:87","nodeType":"YulTypedName","src":"5183:6:87","type":""}],"src":"5115:320:87"},{"body":{"nativeSrc":"5597:214:87","nodeType":"YulBlock","src":"5597:214:87","statements":[{"nativeSrc":"5607:26:87","nodeType":"YulAssignment","src":"5607:26:87","value":{"arguments":[{"name":"headStart","nativeSrc":"5619:9:87","nodeType":"YulIdentifier","src":"5619:9:87"},{"kind":"number","nativeSrc":"5630:2:87","nodeType":"YulLiteral","src":"5630:2:87","type":"","value":"96"}],"functionName":{"name":"add","nativeSrc":"5615:3:87","nodeType":"YulIdentifier","src":"5615:3:87"},"nativeSrc":"5615:18:87","nodeType":"YulFunctionCall","src":"5615:18:87"},"variableNames":[{"name":"tail","nativeSrc":"5607:4:87","nodeType":"YulIdentifier","src":"5607:4:87"}]},{"expression":{"arguments":[{"name":"headStart","nativeSrc":"5649:9:87","nodeType":"YulIdentifier","src":"5649:9:87"},{"arguments":[{"name":"value0","nativeSrc":"5664:6:87","nodeType":"YulIdentifier","src":"5664:6:87"},{"arguments":[{"arguments":[{"kind":"number","nativeSrc":"5680:3:87","nodeType":"YulLiteral","src":"5680:3:87","type":"","value":"160"},{"kind":"number","nativeSrc":"5685:1:87","nodeType":"YulLiteral","src":"5685:1:87","type":"","value":"1"}],"functionName":{"name":"shl","nativeSrc":"5676:3:87","nodeType":"YulIdentifier","src":"5676:3:87"},"nativeSrc":"5676:11:87","nodeType":"YulFunctionCall","src":"5676:11:87"},{"kind":"number","nativeSrc":"5689:1:87","nodeType":"YulLiteral","src":"5689:1:87","type":"","value":"1"}],"functionName":{"name":"sub","nativeSrc":"5672:3:87","nodeType":"YulIdentifier","src":"5672:3:87"},"nativeSrc":"5672:19:87","nodeType":"YulFunctionCall","src":"5672:19:87"}],"functionName":{"name":"and","nativeSrc":"5660:3:87","nodeType":"YulIdentifier","src":"5660:3:87"},"nativeSrc":"5660:32:87","nodeType":"YulFunctionCall","src":"5660:32:87"}],"functionName":{"name":"mstore","nativeSrc":"5642:6:87","nodeType":"YulIdentifier","src":"5642:6:87"},"nativeSrc":"5642:51:87","nodeType":"YulFunctionCall","src":"5642:51:87"},"nativeSrc":"5642:51:87","nodeType":"YulExpressionStatement","src":"5642:51:87"},{"expression":{"arguments":[{"arguments":[{"name":"headStart","nativeSrc":"5713:9:87","nodeType":"YulIdentifier","src":"5713:9:87"},{"kind":"number","nativeSrc":"5724:2:87","nodeType":"YulLiteral","src":"5724:2:87","type":"","value":"32"}],"functionName":{"name":"add","nativeSrc":"5709:3:87","nodeType":"YulIdentifier","src":"5709:3:87"},"nativeSrc":"5709:18:87","nodeType":"YulFunctionCall","src":"5709:18:87"},{"name":"value1","nativeSrc":"5729:6:87","nodeType":"YulIdentifier","src":"5729:6:87"}],"functionName":{"name":"mstore","nativeSrc":"5702:6:87","nodeType":"YulIdentifier","src":"5702:6:87"},"nativeSrc":"5702:34:87","nodeType":"YulFunctionCall","src":"5702:34:87"},"nativeSrc":"5702:34:87","nodeType":"YulExpressionStatement","src":"5702:34:87"},{"expression":{"arguments":[{"arguments":[{"name":"headStart","nativeSrc":"5756:9:87","nodeType":"YulIdentifier","src":"5756:9:87"},{"kind":"number","nativeSrc":"5767:2:87","nodeType":"YulLiteral","src":"5767:2:87","type":"","value":"64"}],"functionName":{"name":"add","nativeSrc":"5752:3:87","nodeType":"YulIdentifier","src":"5752:3:87"},"nativeSrc":"5752:18:87","nodeType":"YulFunctionCall","src":"5752:18:87"},{"arguments":[{"name":"value2","nativeSrc":"5776:6:87","nodeType":"YulIdentifier","src":"5776:6:87"},{"arguments":[{"arguments":[{"kind":"number","nativeSrc":"5792:3:87","nodeType":"YulLiteral","src":"5792:3:87","type":"","value":"160"},{"kind":"number","nativeSrc":"5797:1:87","nodeType":"YulLiteral","src":"5797:1:87","type":"","value":"1"}],"functionName":{"name":"shl","nativeSrc":"5788:3:87","nodeType":"YulIdentifier","src":"5788:3:87"},"nativeSrc":"5788:11:87","nodeType":"YulFunctionCall","src":"5788:11:87"},{"kind":"number","nativeSrc":"5801:1:87","nodeType":"YulLiteral","src":"5801:1:87","type":"","value":"1"}],"functionName":{"name":"sub","nativeSrc":"5784:3:87","nodeType":"YulIdentifier","src":"5784:3:87"},"nativeSrc":"5784:19:87","nodeType":"YulFunctionCall","src":"5784:19:87"}],"functionName":{"name":"and","nativeSrc":"5772:3:87","nodeType":"YulIdentifier","src":"5772:3:87"},"nativeSrc":"5772:32:87","nodeType":"YulFunctionCall","src":"5772:32:87"}],"functionName":{"name":"mstore","nativeSrc":"5745:6:87","nodeType":"YulIdentifier","src":"5745:6:87"},"nativeSrc":"5745:60:87","nodeType":"YulFunctionCall","src":"5745:60:87"},"nativeSrc":"5745:60:87","nodeType":"YulExpressionStatement","src":"5745:60:87"}]},"name":"abi_encode_tuple_t_address_t_uint256_t_address__to_t_address_t_uint256_t_address__fromStack_reversed","nativeSrc":"5440:371:87","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nativeSrc":"5550:9:87","nodeType":"YulTypedName","src":"5550:9:87","type":""},{"name":"value2","nativeSrc":"5561:6:87","nodeType":"YulTypedName","src":"5561:6:87","type":""},{"name":"value1","nativeSrc":"5569:6:87","nodeType":"YulTypedName","src":"5569:6:87","type":""},{"name":"value0","nativeSrc":"5577:6:87","nodeType":"YulTypedName","src":"5577:6:87","type":""}],"returnVariables":[{"name":"tail","nativeSrc":"5588:4:87","nodeType":"YulTypedName","src":"5588:4:87","type":""}],"src":"5440:371:87"},{"body":{"nativeSrc":"5897:149:87","nodeType":"YulBlock","src":"5897:149:87","statements":[{"body":{"nativeSrc":"5943:16:87","nodeType":"YulBlock","src":"5943:16:87","statements":[{"expression":{"arguments":[{"kind":"number","nativeSrc":"5952:1:87","nodeType":"YulLiteral","src":"5952:1:87","type":"","value":"0"},{"kind":"number","nativeSrc":"5955:1:87","nodeType":"YulLiteral","src":"5955:1:87","type":"","value":"0"}],"functionName":{"name":"revert","nativeSrc":"5945:6:87","nodeType":"YulIdentifier","src":"5945:6:87"},"nativeSrc":"5945:12:87","nodeType":"YulFunctionCall","src":"5945:12:87"},"nativeSrc":"5945:12:87","nodeType":"YulExpressionStatement","src":"5945:12:87"}]},"condition":{"arguments":[{"arguments":[{"name":"dataEnd","nativeSrc":"5918:7:87","nodeType":"YulIdentifier","src":"5918:7:87"},{"name":"headStart","nativeSrc":"5927:9:87","nodeType":"YulIdentifier","src":"5927:9:87"}],"functionName":{"name":"sub","nativeSrc":"5914:3:87","nodeType":"YulIdentifier","src":"5914:3:87"},"nativeSrc":"5914:23:87","nodeType":"YulFunctionCall","src":"5914:23:87"},{"kind":"number","nativeSrc":"5939:2:87","nodeType":"YulLiteral","src":"5939:2:87","type":"","value":"32"}],"functionName":{"name":"slt","nativeSrc":"5910:3:87","nodeType":"YulIdentifier","src":"5910:3:87"},"nativeSrc":"5910:32:87","nodeType":"YulFunctionCall","src":"5910:32:87"},"nativeSrc":"5907:52:87","nodeType":"YulIf","src":"5907:52:87"},{"nativeSrc":"5968:14:87","nodeType":"YulVariableDeclaration","src":"5968:14:87","value":{"kind":"number","nativeSrc":"5981:1:87","nodeType":"YulLiteral","src":"5981:1:87","type":"","value":"0"},"variables":[{"name":"value","nativeSrc":"5972:5:87","nodeType":"YulTypedName","src":"5972:5:87","type":""}]},{"nativeSrc":"5991:25:87","nodeType":"YulAssignment","src":"5991:25:87","value":{"arguments":[{"name":"headStart","nativeSrc":"6006:9:87","nodeType":"YulIdentifier","src":"6006:9:87"}],"functionName":{"name":"mload","nativeSrc":"6000:5:87","nodeType":"YulIdentifier","src":"6000:5:87"},"nativeSrc":"6000:16:87","nodeType":"YulFunctionCall","src":"6000:16:87"},"variableNames":[{"name":"value","nativeSrc":"5991:5:87","nodeType":"YulIdentifier","src":"5991:5:87"}]},{"nativeSrc":"6025:15:87","nodeType":"YulAssignment","src":"6025:15:87","value":{"name":"value","nativeSrc":"6035:5:87","nodeType":"YulIdentifier","src":"6035:5:87"},"variableNames":[{"name":"value0","nativeSrc":"6025:6:87","nodeType":"YulIdentifier","src":"6025:6:87"}]}]},"name":"abi_decode_tuple_t_uint256_fromMemory","nativeSrc":"5816:230:87","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nativeSrc":"5863:9:87","nodeType":"YulTypedName","src":"5863:9:87","type":""},{"name":"dataEnd","nativeSrc":"5874:7:87","nodeType":"YulTypedName","src":"5874:7:87","type":""}],"returnVariables":[{"name":"value0","nativeSrc":"5886:6:87","nodeType":"YulTypedName","src":"5886:6:87","type":""}],"src":"5816:230:87"},{"body":{"nativeSrc":"6114:420:87","nodeType":"YulBlock","src":"6114:420:87","statements":[{"body":{"nativeSrc":"6163:16:87","nodeType":"YulBlock","src":"6163:16:87","statements":[{"expression":{"arguments":[{"kind":"number","nativeSrc":"6172:1:87","nodeType":"YulLiteral","src":"6172:1:87","type":"","value":"0"},{"kind":"number","nativeSrc":"6175:1:87","nodeType":"YulLiteral","src":"6175:1:87","type":"","value":"0"}],"functionName":{"name":"revert","nativeSrc":"6165:6:87","nodeType":"YulIdentifier","src":"6165:6:87"},"nativeSrc":"6165:12:87","nodeType":"YulFunctionCall","src":"6165:12:87"},"nativeSrc":"6165:12:87","nodeType":"YulExpressionStatement","src":"6165:12:87"}]},"condition":{"arguments":[{"arguments":[{"arguments":[{"name":"offset","nativeSrc":"6142:6:87","nodeType":"YulIdentifier","src":"6142:6:87"},{"kind":"number","nativeSrc":"6150:4:87","nodeType":"YulLiteral","src":"6150:4:87","type":"","value":"0x1f"}],"functionName":{"name":"add","nativeSrc":"6138:3:87","nodeType":"YulIdentifier","src":"6138:3:87"},"nativeSrc":"6138:17:87","nodeType":"YulFunctionCall","src":"6138:17:87"},{"name":"end","nativeSrc":"6157:3:87","nodeType":"YulIdentifier","src":"6157:3:87"}],"functionName":{"name":"slt","nativeSrc":"6134:3:87","nodeType":"YulIdentifier","src":"6134:3:87"},"nativeSrc":"6134:27:87","nodeType":"YulFunctionCall","src":"6134:27:87"}],"functionName":{"name":"iszero","nativeSrc":"6127:6:87","nodeType":"YulIdentifier","src":"6127:6:87"},"nativeSrc":"6127:35:87","nodeType":"YulFunctionCall","src":"6127:35:87"},"nativeSrc":"6124:55:87","nodeType":"YulIf","src":"6124:55:87"},{"nativeSrc":"6188:27:87","nodeType":"YulVariableDeclaration","src":"6188:27:87","value":{"arguments":[{"name":"offset","nativeSrc":"6208:6:87","nodeType":"YulIdentifier","src":"6208:6:87"}],"functionName":{"name":"mload","nativeSrc":"6202:5:87","nodeType":"YulIdentifier","src":"6202:5:87"},"nativeSrc":"6202:13:87","nodeType":"YulFunctionCall","src":"6202:13:87"},"variables":[{"name":"length","nativeSrc":"6192:6:87","nodeType":"YulTypedName","src":"6192:6:87","type":""}]},{"nativeSrc":"6224:67:87","nodeType":"YulVariableDeclaration","src":"6224:67:87","value":{"arguments":[{"arguments":[{"name":"length","nativeSrc":"6283:6:87","nodeType":"YulIdentifier","src":"6283:6:87"}],"functionName":{"name":"array_allocation_size_bytes","nativeSrc":"6255:27:87","nodeType":"YulIdentifier","src":"6255:27:87"},"nativeSrc":"6255:35:87","nodeType":"YulFunctionCall","src":"6255:35:87"}],"functionName":{"name":"allocate_memory","nativeSrc":"6239:15:87","nodeType":"YulIdentifier","src":"6239:15:87"},"nativeSrc":"6239:52:87","nodeType":"YulFunctionCall","src":"6239:52:87"},"variables":[{"name":"array_1","nativeSrc":"6228:7:87","nodeType":"YulTypedName","src":"6228:7:87","type":""}]},{"expression":{"arguments":[{"name":"array_1","nativeSrc":"6307:7:87","nodeType":"YulIdentifier","src":"6307:7:87"},{"name":"length","nativeSrc":"6316:6:87","nodeType":"YulIdentifier","src":"6316:6:87"}],"functionName":{"name":"mstore","nativeSrc":"6300:6:87","nodeType":"YulIdentifier","src":"6300:6:87"},"nativeSrc":"6300:23:87","nodeType":"YulFunctionCall","src":"6300:23:87"},"nativeSrc":"6300:23:87","nodeType":"YulExpressionStatement","src":"6300:23:87"},{"body":{"nativeSrc":"6375:16:87","nodeType":"YulBlock","src":"6375:16:87","statements":[{"expression":{"arguments":[{"kind":"number","nativeSrc":"6384:1:87","nodeType":"YulLiteral","src":"6384:1:87","type":"","value":"0"},{"kind":"number","nativeSrc":"6387:1:87","nodeType":"YulLiteral","src":"6387:1:87","type":"","value":"0"}],"functionName":{"name":"revert","nativeSrc":"6377:6:87","nodeType":"YulIdentifier","src":"6377:6:87"},"nativeSrc":"6377:12:87","nodeType":"YulFunctionCall","src":"6377:12:87"},"nativeSrc":"6377:12:87","nodeType":"YulExpressionStatement","src":"6377:12:87"}]},"condition":{"arguments":[{"arguments":[{"arguments":[{"name":"offset","nativeSrc":"6346:6:87","nodeType":"YulIdentifier","src":"6346:6:87"},{"name":"length","nativeSrc":"6354:6:87","nodeType":"YulIdentifier","src":"6354:6:87"}],"functionName":{"name":"add","nativeSrc":"6342:3:87","nodeType":"YulIdentifier","src":"6342:3:87"},"nativeSrc":"6342:19:87","nodeType":"YulFunctionCall","src":"6342:19:87"},{"kind":"number","nativeSrc":"6363:4:87","nodeType":"YulLiteral","src":"6363:4:87","type":"","value":"0x20"}],"functionName":{"name":"add","nativeSrc":"6338:3:87","nodeType":"YulIdentifier","src":"6338:3:87"},"nativeSrc":"6338:30:87","nodeType":"YulFunctionCall","src":"6338:30:87"},{"name":"end","nativeSrc":"6370:3:87","nodeType":"YulIdentifier","src":"6370:3:87"}],"functionName":{"name":"gt","nativeSrc":"6335:2:87","nodeType":"YulIdentifier","src":"6335:2:87"},"nativeSrc":"6335:39:87","nodeType":"YulFunctionCall","src":"6335:39:87"},"nativeSrc":"6332:59:87","nodeType":"YulIf","src":"6332:59:87"},{"expression":{"arguments":[{"arguments":[{"name":"array_1","nativeSrc":"6410:7:87","nodeType":"YulIdentifier","src":"6410:7:87"},{"kind":"number","nativeSrc":"6419:4:87","nodeType":"YulLiteral","src":"6419:4:87","type":"","value":"0x20"}],"functionName":{"name":"add","nativeSrc":"6406:3:87","nodeType":"YulIdentifier","src":"6406:3:87"},"nativeSrc":"6406:18:87","nodeType":"YulFunctionCall","src":"6406:18:87"},{"arguments":[{"name":"offset","nativeSrc":"6430:6:87","nodeType":"YulIdentifier","src":"6430:6:87"},{"kind":"number","nativeSrc":"6438:4:87","nodeType":"YulLiteral","src":"6438:4:87","type":"","value":"0x20"}],"functionName":{"name":"add","nativeSrc":"6426:3:87","nodeType":"YulIdentifier","src":"6426:3:87"},"nativeSrc":"6426:17:87","nodeType":"YulFunctionCall","src":"6426:17:87"},{"name":"length","nativeSrc":"6445:6:87","nodeType":"YulIdentifier","src":"6445:6:87"}],"functionName":{"name":"mcopy","nativeSrc":"6400:5:87","nodeType":"YulIdentifier","src":"6400:5:87"},"nativeSrc":"6400:52:87","nodeType":"YulFunctionCall","src":"6400:52:87"},"nativeSrc":"6400:52:87","nodeType":"YulExpressionStatement","src":"6400:52:87"},{"expression":{"arguments":[{"arguments":[{"arguments":[{"name":"array_1","nativeSrc":"6476:7:87","nodeType":"YulIdentifier","src":"6476:7:87"},{"name":"length","nativeSrc":"6485:6:87","nodeType":"YulIdentifier","src":"6485:6:87"}],"functionName":{"name":"add","nativeSrc":"6472:3:87","nodeType":"YulIdentifier","src":"6472:3:87"},"nativeSrc":"6472:20:87","nodeType":"YulFunctionCall","src":"6472:20:87"},{"kind":"number","nativeSrc":"6494:4:87","nodeType":"YulLiteral","src":"6494:4:87","type":"","value":"0x20"}],"functionName":{"name":"add","nativeSrc":"6468:3:87","nodeType":"YulIdentifier","src":"6468:3:87"},"nativeSrc":"6468:31:87","nodeType":"YulFunctionCall","src":"6468:31:87"},{"kind":"number","nativeSrc":"6501:1:87","nodeType":"YulLiteral","src":"6501:1:87","type":"","value":"0"}],"functionName":{"name":"mstore","nativeSrc":"6461:6:87","nodeType":"YulIdentifier","src":"6461:6:87"},"nativeSrc":"6461:42:87","nodeType":"YulFunctionCall","src":"6461:42:87"},"nativeSrc":"6461:42:87","nodeType":"YulExpressionStatement","src":"6461:42:87"},{"nativeSrc":"6512:16:87","nodeType":"YulAssignment","src":"6512:16:87","value":{"name":"array_1","nativeSrc":"6521:7:87","nodeType":"YulIdentifier","src":"6521:7:87"},"variableNames":[{"name":"array","nativeSrc":"6512:5:87","nodeType":"YulIdentifier","src":"6512:5:87"}]}]},"name":"abi_decode_bytes_fromMemory","nativeSrc":"6051:483:87","nodeType":"YulFunctionDefinition","parameters":[{"name":"offset","nativeSrc":"6088:6:87","nodeType":"YulTypedName","src":"6088:6:87","type":""},{"name":"end","nativeSrc":"6096:3:87","nodeType":"YulTypedName","src":"6096:3:87","type":""}],"returnVariables":[{"name":"array","nativeSrc":"6104:5:87","nodeType":"YulTypedName","src":"6104:5:87","type":""}],"src":"6051:483:87"},{"body":{"nativeSrc":"6629:245:87","nodeType":"YulBlock","src":"6629:245:87","statements":[{"body":{"nativeSrc":"6675:16:87","nodeType":"YulBlock","src":"6675:16:87","statements":[{"expression":{"arguments":[{"kind":"number","nativeSrc":"6684:1:87","nodeType":"YulLiteral","src":"6684:1:87","type":"","value":"0"},{"kind":"number","nativeSrc":"6687:1:87","nodeType":"YulLiteral","src":"6687:1:87","type":"","value":"0"}],"functionName":{"name":"revert","nativeSrc":"6677:6:87","nodeType":"YulIdentifier","src":"6677:6:87"},"nativeSrc":"6677:12:87","nodeType":"YulFunctionCall","src":"6677:12:87"},"nativeSrc":"6677:12:87","nodeType":"YulExpressionStatement","src":"6677:12:87"}]},"condition":{"arguments":[{"arguments":[{"name":"dataEnd","nativeSrc":"6650:7:87","nodeType":"YulIdentifier","src":"6650:7:87"},{"name":"headStart","nativeSrc":"6659:9:87","nodeType":"YulIdentifier","src":"6659:9:87"}],"functionName":{"name":"sub","nativeSrc":"6646:3:87","nodeType":"YulIdentifier","src":"6646:3:87"},"nativeSrc":"6646:23:87","nodeType":"YulFunctionCall","src":"6646:23:87"},{"kind":"number","nativeSrc":"6671:2:87","nodeType":"YulLiteral","src":"6671:2:87","type":"","value":"32"}],"functionName":{"name":"slt","nativeSrc":"6642:3:87","nodeType":"YulIdentifier","src":"6642:3:87"},"nativeSrc":"6642:32:87","nodeType":"YulFunctionCall","src":"6642:32:87"},"nativeSrc":"6639:52:87","nodeType":"YulIf","src":"6639:52:87"},{"nativeSrc":"6700:30:87","nodeType":"YulVariableDeclaration","src":"6700:30:87","value":{"arguments":[{"name":"headStart","nativeSrc":"6720:9:87","nodeType":"YulIdentifier","src":"6720:9:87"}],"functionName":{"name":"mload","nativeSrc":"6714:5:87","nodeType":"YulIdentifier","src":"6714:5:87"},"nativeSrc":"6714:16:87","nodeType":"YulFunctionCall","src":"6714:16:87"},"variables":[{"name":"offset","nativeSrc":"6704:6:87","nodeType":"YulTypedName","src":"6704:6:87","type":""}]},{"body":{"nativeSrc":"6773:16:87","nodeType":"YulBlock","src":"6773:16:87","statements":[{"expression":{"arguments":[{"kind":"number","nativeSrc":"6782:1:87","nodeType":"YulLiteral","src":"6782:1:87","type":"","value":"0"},{"kind":"number","nativeSrc":"6785:1:87","nodeType":"YulLiteral","src":"6785:1:87","type":"","value":"0"}],"functionName":{"name":"revert","nativeSrc":"6775:6:87","nodeType":"YulIdentifier","src":"6775:6:87"},"nativeSrc":"6775:12:87","nodeType":"YulFunctionCall","src":"6775:12:87"},"nativeSrc":"6775:12:87","nodeType":"YulExpressionStatement","src":"6775:12:87"}]},"condition":{"arguments":[{"name":"offset","nativeSrc":"6745:6:87","nodeType":"YulIdentifier","src":"6745:6:87"},{"kind":"number","nativeSrc":"6753:18:87","nodeType":"YulLiteral","src":"6753:18:87","type":"","value":"0xffffffffffffffff"}],"functionName":{"name":"gt","nativeSrc":"6742:2:87","nodeType":"YulIdentifier","src":"6742:2:87"},"nativeSrc":"6742:30:87","nodeType":"YulFunctionCall","src":"6742:30:87"},"nativeSrc":"6739:50:87","nodeType":"YulIf","src":"6739:50:87"},{"nativeSrc":"6798:70:87","nodeType":"YulAssignment","src":"6798:70:87","value":{"arguments":[{"arguments":[{"name":"headStart","nativeSrc":"6840:9:87","nodeType":"YulIdentifier","src":"6840:9:87"},{"name":"offset","nativeSrc":"6851:6:87","nodeType":"YulIdentifier","src":"6851:6:87"}],"functionName":{"name":"add","nativeSrc":"6836:3:87","nodeType":"YulIdentifier","src":"6836:3:87"},"nativeSrc":"6836:22:87","nodeType":"YulFunctionCall","src":"6836:22:87"},{"name":"dataEnd","nativeSrc":"6860:7:87","nodeType":"YulIdentifier","src":"6860:7:87"}],"functionName":{"name":"abi_decode_bytes_fromMemory","nativeSrc":"6808:27:87","nodeType":"YulIdentifier","src":"6808:27:87"},"nativeSrc":"6808:60:87","nodeType":"YulFunctionCall","src":"6808:60:87"},"variableNames":[{"name":"value0","nativeSrc":"6798:6:87","nodeType":"YulIdentifier","src":"6798:6:87"}]}]},"name":"abi_decode_tuple_t_bytes_memory_ptr_fromMemory","nativeSrc":"6539:335:87","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nativeSrc":"6595:9:87","nodeType":"YulTypedName","src":"6595:9:87","type":""},{"name":"dataEnd","nativeSrc":"6606:7:87","nodeType":"YulTypedName","src":"6606:7:87","type":""}],"returnVariables":[{"name":"value0","nativeSrc":"6618:6:87","nodeType":"YulTypedName","src":"6618:6:87","type":""}],"src":"6539:335:87"},{"body":{"nativeSrc":"6988:741:87","nodeType":"YulBlock","src":"6988:741:87","statements":[{"body":{"nativeSrc":"7034:16:87","nodeType":"YulBlock","src":"7034:16:87","statements":[{"expression":{"arguments":[{"kind":"number","nativeSrc":"7043:1:87","nodeType":"YulLiteral","src":"7043:1:87","type":"","value":"0"},{"kind":"number","nativeSrc":"7046:1:87","nodeType":"YulLiteral","src":"7046:1:87","type":"","value":"0"}],"functionName":{"name":"revert","nativeSrc":"7036:6:87","nodeType":"YulIdentifier","src":"7036:6:87"},"nativeSrc":"7036:12:87","nodeType":"YulFunctionCall","src":"7036:12:87"},"nativeSrc":"7036:12:87","nodeType":"YulExpressionStatement","src":"7036:12:87"}]},"condition":{"arguments":[{"arguments":[{"name":"dataEnd","nativeSrc":"7009:7:87","nodeType":"YulIdentifier","src":"7009:7:87"},{"name":"headStart","nativeSrc":"7018:9:87","nodeType":"YulIdentifier","src":"7018:9:87"}],"functionName":{"name":"sub","nativeSrc":"7005:3:87","nodeType":"YulIdentifier","src":"7005:3:87"},"nativeSrc":"7005:23:87","nodeType":"YulFunctionCall","src":"7005:23:87"},{"kind":"number","nativeSrc":"7030:2:87","nodeType":"YulLiteral","src":"7030:2:87","type":"","value":"32"}],"functionName":{"name":"slt","nativeSrc":"7001:3:87","nodeType":"YulIdentifier","src":"7001:3:87"},"nativeSrc":"7001:32:87","nodeType":"YulFunctionCall","src":"7001:32:87"},"nativeSrc":"6998:52:87","nodeType":"YulIf","src":"6998:52:87"},{"nativeSrc":"7059:30:87","nodeType":"YulVariableDeclaration","src":"7059:30:87","value":{"arguments":[{"name":"headStart","nativeSrc":"7079:9:87","nodeType":"YulIdentifier","src":"7079:9:87"}],"functionName":{"name":"mload","nativeSrc":"7073:5:87","nodeType":"YulIdentifier","src":"7073:5:87"},"nativeSrc":"7073:16:87","nodeType":"YulFunctionCall","src":"7073:16:87"},"variables":[{"name":"offset","nativeSrc":"7063:6:87","nodeType":"YulTypedName","src":"7063:6:87","type":""}]},{"body":{"nativeSrc":"7132:16:87","nodeType":"YulBlock","src":"7132:16:87","statements":[{"expression":{"arguments":[{"kind":"number","nativeSrc":"7141:1:87","nodeType":"YulLiteral","src":"7141:1:87","type":"","value":"0"},{"kind":"number","nativeSrc":"7144:1:87","nodeType":"YulLiteral","src":"7144:1:87","type":"","value":"0"}],"functionName":{"name":"revert","nativeSrc":"7134:6:87","nodeType":"YulIdentifier","src":"7134:6:87"},"nativeSrc":"7134:12:87","nodeType":"YulFunctionCall","src":"7134:12:87"},"nativeSrc":"7134:12:87","nodeType":"YulExpressionStatement","src":"7134:12:87"}]},"condition":{"arguments":[{"name":"offset","nativeSrc":"7104:6:87","nodeType":"YulIdentifier","src":"7104:6:87"},{"kind":"number","nativeSrc":"7112:18:87","nodeType":"YulLiteral","src":"7112:18:87","type":"","value":"0xffffffffffffffff"}],"functionName":{"name":"gt","nativeSrc":"7101:2:87","nodeType":"YulIdentifier","src":"7101:2:87"},"nativeSrc":"7101:30:87","nodeType":"YulFunctionCall","src":"7101:30:87"},"nativeSrc":"7098:50:87","nodeType":"YulIf","src":"7098:50:87"},{"nativeSrc":"7157:32:87","nodeType":"YulVariableDeclaration","src":"7157:32:87","value":{"arguments":[{"name":"headStart","nativeSrc":"7171:9:87","nodeType":"YulIdentifier","src":"7171:9:87"},{"name":"offset","nativeSrc":"7182:6:87","nodeType":"YulIdentifier","src":"7182:6:87"}],"functionName":{"name":"add","nativeSrc":"7167:3:87","nodeType":"YulIdentifier","src":"7167:3:87"},"nativeSrc":"7167:22:87","nodeType":"YulFunctionCall","src":"7167:22:87"},"variables":[{"name":"_1","nativeSrc":"7161:2:87","nodeType":"YulTypedName","src":"7161:2:87","type":""}]},{"body":{"nativeSrc":"7229:16:87","nodeType":"YulBlock","src":"7229:16:87","statements":[{"expression":{"arguments":[{"kind":"number","nativeSrc":"7238:1:87","nodeType":"YulLiteral","src":"7238:1:87","type":"","value":"0"},{"kind":"number","nativeSrc":"7241:1:87","nodeType":"YulLiteral","src":"7241:1:87","type":"","value":"0"}],"functionName":{"name":"revert","nativeSrc":"7231:6:87","nodeType":"YulIdentifier","src":"7231:6:87"},"nativeSrc":"7231:12:87","nodeType":"YulFunctionCall","src":"7231:12:87"},"nativeSrc":"7231:12:87","nodeType":"YulExpressionStatement","src":"7231:12:87"}]},"condition":{"arguments":[{"arguments":[{"name":"dataEnd","nativeSrc":"7209:7:87","nodeType":"YulIdentifier","src":"7209:7:87"},{"name":"_1","nativeSrc":"7218:2:87","nodeType":"YulIdentifier","src":"7218:2:87"}],"functionName":{"name":"sub","nativeSrc":"7205:3:87","nodeType":"YulIdentifier","src":"7205:3:87"},"nativeSrc":"7205:16:87","nodeType":"YulFunctionCall","src":"7205:16:87"},{"kind":"number","nativeSrc":"7223:4:87","nodeType":"YulLiteral","src":"7223:4:87","type":"","value":"0x60"}],"functionName":{"name":"slt","nativeSrc":"7201:3:87","nodeType":"YulIdentifier","src":"7201:3:87"},"nativeSrc":"7201:27:87","nodeType":"YulFunctionCall","src":"7201:27:87"},"nativeSrc":"7198:47:87","nodeType":"YulIf","src":"7198:47:87"},{"nativeSrc":"7254:35:87","nodeType":"YulVariableDeclaration","src":"7254:35:87","value":{"arguments":[],"functionName":{"name":"allocate_memory_2005","nativeSrc":"7267:20:87","nodeType":"YulIdentifier","src":"7267:20:87"},"nativeSrc":"7267:22:87","nodeType":"YulFunctionCall","src":"7267:22:87"},"variables":[{"name":"value","nativeSrc":"7258:5:87","nodeType":"YulTypedName","src":"7258:5:87","type":""}]},{"nativeSrc":"7298:24:87","nodeType":"YulVariableDeclaration","src":"7298:24:87","value":{"arguments":[{"name":"_1","nativeSrc":"7319:2:87","nodeType":"YulIdentifier","src":"7319:2:87"}],"functionName":{"name":"mload","nativeSrc":"7313:5:87","nodeType":"YulIdentifier","src":"7313:5:87"},"nativeSrc":"7313:9:87","nodeType":"YulFunctionCall","src":"7313:9:87"},"variables":[{"name":"value_1","nativeSrc":"7302:7:87","nodeType":"YulTypedName","src":"7302:7:87","type":""}]},{"body":{"nativeSrc":"7357:16:87","nodeType":"YulBlock","src":"7357:16:87","statements":[{"expression":{"arguments":[{"kind":"number","nativeSrc":"7366:1:87","nodeType":"YulLiteral","src":"7366:1:87","type":"","value":"0"},{"kind":"number","nativeSrc":"7369:1:87","nodeType":"YulLiteral","src":"7369:1:87","type":"","value":"0"}],"functionName":{"name":"revert","nativeSrc":"7359:6:87","nodeType":"YulIdentifier","src":"7359:6:87"},"nativeSrc":"7359:12:87","nodeType":"YulFunctionCall","src":"7359:12:87"},"nativeSrc":"7359:12:87","nodeType":"YulExpressionStatement","src":"7359:12:87"}]},"condition":{"arguments":[{"arguments":[{"name":"value_1","nativeSrc":"7344:7:87","nodeType":"YulIdentifier","src":"7344:7:87"},{"kind":"number","nativeSrc":"7353:1:87","nodeType":"YulLiteral","src":"7353:1:87","type":"","value":"3"}],"functionName":{"name":"lt","nativeSrc":"7341:2:87","nodeType":"YulIdentifier","src":"7341:2:87"},"nativeSrc":"7341:14:87","nodeType":"YulFunctionCall","src":"7341:14:87"}],"functionName":{"name":"iszero","nativeSrc":"7334:6:87","nodeType":"YulIdentifier","src":"7334:6:87"},"nativeSrc":"7334:22:87","nodeType":"YulFunctionCall","src":"7334:22:87"},"nativeSrc":"7331:42:87","nodeType":"YulIf","src":"7331:42:87"},{"expression":{"arguments":[{"name":"value","nativeSrc":"7389:5:87","nodeType":"YulIdentifier","src":"7389:5:87"},{"name":"value_1","nativeSrc":"7396:7:87","nodeType":"YulIdentifier","src":"7396:7:87"}],"functionName":{"name":"mstore","nativeSrc":"7382:6:87","nodeType":"YulIdentifier","src":"7382:6:87"},"nativeSrc":"7382:22:87","nodeType":"YulFunctionCall","src":"7382:22:87"},"nativeSrc":"7382:22:87","nodeType":"YulExpressionStatement","src":"7382:22:87"},{"nativeSrc":"7413:16:87","nodeType":"YulVariableDeclaration","src":"7413:16:87","value":{"kind":"number","nativeSrc":"7428:1:87","nodeType":"YulLiteral","src":"7428:1:87","type":"","value":"0"},"variables":[{"name":"value_2","nativeSrc":"7417:7:87","nodeType":"YulTypedName","src":"7417:7:87","type":""}]},{"nativeSrc":"7438:29:87","nodeType":"YulAssignment","src":"7438:29:87","value":{"arguments":[{"arguments":[{"name":"_1","nativeSrc":"7459:2:87","nodeType":"YulIdentifier","src":"7459:2:87"},{"kind":"number","nativeSrc":"7463:2:87","nodeType":"YulLiteral","src":"7463:2:87","type":"","value":"32"}],"functionName":{"name":"add","nativeSrc":"7455:3:87","nodeType":"YulIdentifier","src":"7455:3:87"},"nativeSrc":"7455:11:87","nodeType":"YulFunctionCall","src":"7455:11:87"}],"functionName":{"name":"mload","nativeSrc":"7449:5:87","nodeType":"YulIdentifier","src":"7449:5:87"},"nativeSrc":"7449:18:87","nodeType":"YulFunctionCall","src":"7449:18:87"},"variableNames":[{"name":"value_2","nativeSrc":"7438:7:87","nodeType":"YulIdentifier","src":"7438:7:87"}]},{"expression":{"arguments":[{"arguments":[{"name":"value","nativeSrc":"7487:5:87","nodeType":"YulIdentifier","src":"7487:5:87"},{"kind":"number","nativeSrc":"7494:2:87","nodeType":"YulLiteral","src":"7494:2:87","type":"","value":"32"}],"functionName":{"name":"add","nativeSrc":"7483:3:87","nodeType":"YulIdentifier","src":"7483:3:87"},"nativeSrc":"7483:14:87","nodeType":"YulFunctionCall","src":"7483:14:87"},{"name":"value_2","nativeSrc":"7499:7:87","nodeType":"YulIdentifier","src":"7499:7:87"}],"functionName":{"name":"mstore","nativeSrc":"7476:6:87","nodeType":"YulIdentifier","src":"7476:6:87"},"nativeSrc":"7476:31:87","nodeType":"YulFunctionCall","src":"7476:31:87"},"nativeSrc":"7476:31:87","nodeType":"YulExpressionStatement","src":"7476:31:87"},{"nativeSrc":"7516:34:87","nodeType":"YulVariableDeclaration","src":"7516:34:87","value":{"arguments":[{"arguments":[{"name":"_1","nativeSrc":"7542:2:87","nodeType":"YulIdentifier","src":"7542:2:87"},{"kind":"number","nativeSrc":"7546:2:87","nodeType":"YulLiteral","src":"7546:2:87","type":"","value":"64"}],"functionName":{"name":"add","nativeSrc":"7538:3:87","nodeType":"YulIdentifier","src":"7538:3:87"},"nativeSrc":"7538:11:87","nodeType":"YulFunctionCall","src":"7538:11:87"}],"functionName":{"name":"mload","nativeSrc":"7532:5:87","nodeType":"YulIdentifier","src":"7532:5:87"},"nativeSrc":"7532:18:87","nodeType":"YulFunctionCall","src":"7532:18:87"},"variables":[{"name":"offset_1","nativeSrc":"7520:8:87","nodeType":"YulTypedName","src":"7520:8:87","type":""}]},{"body":{"nativeSrc":"7595:16:87","nodeType":"YulBlock","src":"7595:16:87","statements":[{"expression":{"arguments":[{"kind":"number","nativeSrc":"7604:1:87","nodeType":"YulLiteral","src":"7604:1:87","type":"","value":"0"},{"kind":"number","nativeSrc":"7607:1:87","nodeType":"YulLiteral","src":"7607:1:87","type":"","value":"0"}],"functionName":{"name":"revert","nativeSrc":"7597:6:87","nodeType":"YulIdentifier","src":"7597:6:87"},"nativeSrc":"7597:12:87","nodeType":"YulFunctionCall","src":"7597:12:87"},"nativeSrc":"7597:12:87","nodeType":"YulExpressionStatement","src":"7597:12:87"}]},"condition":{"arguments":[{"name":"offset_1","nativeSrc":"7565:8:87","nodeType":"YulIdentifier","src":"7565:8:87"},{"kind":"number","nativeSrc":"7575:18:87","nodeType":"YulLiteral","src":"7575:18:87","type":"","value":"0xffffffffffffffff"}],"functionName":{"name":"gt","nativeSrc":"7562:2:87","nodeType":"YulIdentifier","src":"7562:2:87"},"nativeSrc":"7562:32:87","nodeType":"YulFunctionCall","src":"7562:32:87"},"nativeSrc":"7559:52:87","nodeType":"YulIf","src":"7559:52:87"},{"expression":{"arguments":[{"arguments":[{"name":"value","nativeSrc":"7631:5:87","nodeType":"YulIdentifier","src":"7631:5:87"},{"kind":"number","nativeSrc":"7638:2:87","nodeType":"YulLiteral","src":"7638:2:87","type":"","value":"64"}],"functionName":{"name":"add","nativeSrc":"7627:3:87","nodeType":"YulIdentifier","src":"7627:3:87"},"nativeSrc":"7627:14:87","nodeType":"YulFunctionCall","src":"7627:14:87"},{"arguments":[{"arguments":[{"name":"_1","nativeSrc":"7675:2:87","nodeType":"YulIdentifier","src":"7675:2:87"},{"name":"offset_1","nativeSrc":"7679:8:87","nodeType":"YulIdentifier","src":"7679:8:87"}],"functionName":{"name":"add","nativeSrc":"7671:3:87","nodeType":"YulIdentifier","src":"7671:3:87"},"nativeSrc":"7671:17:87","nodeType":"YulFunctionCall","src":"7671:17:87"},{"name":"dataEnd","nativeSrc":"7690:7:87","nodeType":"YulIdentifier","src":"7690:7:87"}],"functionName":{"name":"abi_decode_bytes_fromMemory","nativeSrc":"7643:27:87","nodeType":"YulIdentifier","src":"7643:27:87"},"nativeSrc":"7643:55:87","nodeType":"YulFunctionCall","src":"7643:55:87"}],"functionName":{"name":"mstore","nativeSrc":"7620:6:87","nodeType":"YulIdentifier","src":"7620:6:87"},"nativeSrc":"7620:79:87","nodeType":"YulFunctionCall","src":"7620:79:87"},"nativeSrc":"7620:79:87","nodeType":"YulExpressionStatement","src":"7620:79:87"},{"nativeSrc":"7708:15:87","nodeType":"YulAssignment","src":"7708:15:87","value":{"name":"value","nativeSrc":"7718:5:87","nodeType":"YulIdentifier","src":"7718:5:87"},"variableNames":[{"name":"value0","nativeSrc":"7708:6:87","nodeType":"YulIdentifier","src":"7708:6:87"}]}]},"name":"abi_decode_tuple_t_struct$_SwapConfig_$1113_memory_ptr_fromMemory","nativeSrc":"6879:850:87","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nativeSrc":"6954:9:87","nodeType":"YulTypedName","src":"6954:9:87","type":""},{"name":"dataEnd","nativeSrc":"6965:7:87","nodeType":"YulTypedName","src":"6965:7:87","type":""}],"returnVariables":[{"name":"value0","nativeSrc":"6977:6:87","nodeType":"YulTypedName","src":"6977:6:87","type":""}],"src":"6879:850:87"},{"body":{"nativeSrc":"7899:110:87","nodeType":"YulBlock","src":"7899:110:87","statements":[{"expression":{"arguments":[{"name":"headStart","nativeSrc":"7916:9:87","nodeType":"YulIdentifier","src":"7916:9:87"},{"kind":"number","nativeSrc":"7927:2:87","nodeType":"YulLiteral","src":"7927:2:87","type":"","value":"32"}],"functionName":{"name":"mstore","nativeSrc":"7909:6:87","nodeType":"YulIdentifier","src":"7909:6:87"},"nativeSrc":"7909:21:87","nodeType":"YulFunctionCall","src":"7909:21:87"},"nativeSrc":"7909:21:87","nodeType":"YulExpressionStatement","src":"7909:21:87"},{"nativeSrc":"7939:64:87","nodeType":"YulAssignment","src":"7939:64:87","value":{"arguments":[{"name":"value0","nativeSrc":"7976:6:87","nodeType":"YulIdentifier","src":"7976:6:87"},{"arguments":[{"name":"headStart","nativeSrc":"7988:9:87","nodeType":"YulIdentifier","src":"7988:9:87"},{"kind":"number","nativeSrc":"7999:2:87","nodeType":"YulLiteral","src":"7999:2:87","type":"","value":"32"}],"functionName":{"name":"add","nativeSrc":"7984:3:87","nodeType":"YulIdentifier","src":"7984:3:87"},"nativeSrc":"7984:18:87","nodeType":"YulFunctionCall","src":"7984:18:87"}],"functionName":{"name":"abi_encode_struct_SwapConfig","nativeSrc":"7947:28:87","nodeType":"YulIdentifier","src":"7947:28:87"},"nativeSrc":"7947:56:87","nodeType":"YulFunctionCall","src":"7947:56:87"},"variableNames":[{"name":"tail","nativeSrc":"7939:4:87","nodeType":"YulIdentifier","src":"7939:4:87"}]}]},"name":"abi_encode_tuple_t_struct$_SwapConfig_$1113_memory_ptr__to_t_struct$_SwapConfig_$1113_memory_ptr__fromStack_library_reversed","nativeSrc":"7734:275:87","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nativeSrc":"7868:9:87","nodeType":"YulTypedName","src":"7868:9:87","type":""},{"name":"value0","nativeSrc":"7879:6:87","nodeType":"YulTypedName","src":"7879:6:87","type":""}],"returnVariables":[{"name":"tail","nativeSrc":"7890:4:87","nodeType":"YulTypedName","src":"7890:4:87","type":""}],"src":"7734:275:87"},{"body":{"nativeSrc":"8255:236:87","nodeType":"YulBlock","src":"8255:236:87","statements":[{"expression":{"arguments":[{"name":"headStart","nativeSrc":"8272:9:87","nodeType":"YulIdentifier","src":"8272:9:87"},{"kind":"number","nativeSrc":"8283:2:87","nodeType":"YulLiteral","src":"8283:2:87","type":"","value":"64"}],"functionName":{"name":"mstore","nativeSrc":"8265:6:87","nodeType":"YulIdentifier","src":"8265:6:87"},"nativeSrc":"8265:21:87","nodeType":"YulFunctionCall","src":"8265:21:87"},"nativeSrc":"8265:21:87","nodeType":"YulExpressionStatement","src":"8265:21:87"},{"nativeSrc":"8295:70:87","nodeType":"YulVariableDeclaration","src":"8295:70:87","value":{"arguments":[{"name":"value0","nativeSrc":"8338:6:87","nodeType":"YulIdentifier","src":"8338:6:87"},{"arguments":[{"name":"headStart","nativeSrc":"8350:9:87","nodeType":"YulIdentifier","src":"8350:9:87"},{"kind":"number","nativeSrc":"8361:2:87","nodeType":"YulLiteral","src":"8361:2:87","type":"","value":"64"}],"functionName":{"name":"add","nativeSrc":"8346:3:87","nodeType":"YulIdentifier","src":"8346:3:87"},"nativeSrc":"8346:18:87","nodeType":"YulFunctionCall","src":"8346:18:87"}],"functionName":{"name":"abi_encode_struct_SwapConfig","nativeSrc":"8309:28:87","nodeType":"YulIdentifier","src":"8309:28:87"},"nativeSrc":"8309:56:87","nodeType":"YulFunctionCall","src":"8309:56:87"},"variables":[{"name":"tail_1","nativeSrc":"8299:6:87","nodeType":"YulTypedName","src":"8299:6:87","type":""}]},{"expression":{"arguments":[{"arguments":[{"name":"headStart","nativeSrc":"8385:9:87","nodeType":"YulIdentifier","src":"8385:9:87"},{"kind":"number","nativeSrc":"8396:2:87","nodeType":"YulLiteral","src":"8396:2:87","type":"","value":"32"}],"functionName":{"name":"add","nativeSrc":"8381:3:87","nodeType":"YulIdentifier","src":"8381:3:87"},"nativeSrc":"8381:18:87","nodeType":"YulFunctionCall","src":"8381:18:87"},{"arguments":[{"name":"tail_1","nativeSrc":"8405:6:87","nodeType":"YulIdentifier","src":"8405:6:87"},{"name":"headStart","nativeSrc":"8413:9:87","nodeType":"YulIdentifier","src":"8413:9:87"}],"functionName":{"name":"sub","nativeSrc":"8401:3:87","nodeType":"YulIdentifier","src":"8401:3:87"},"nativeSrc":"8401:22:87","nodeType":"YulFunctionCall","src":"8401:22:87"}],"functionName":{"name":"mstore","nativeSrc":"8374:6:87","nodeType":"YulIdentifier","src":"8374:6:87"},"nativeSrc":"8374:50:87","nodeType":"YulFunctionCall","src":"8374:50:87"},"nativeSrc":"8374:50:87","nodeType":"YulExpressionStatement","src":"8374:50:87"},{"nativeSrc":"8433:52:87","nodeType":"YulAssignment","src":"8433:52:87","value":{"arguments":[{"name":"value1","nativeSrc":"8470:6:87","nodeType":"YulIdentifier","src":"8470:6:87"},{"name":"tail_1","nativeSrc":"8478:6:87","nodeType":"YulIdentifier","src":"8478:6:87"}],"functionName":{"name":"abi_encode_struct_SwapConfig","nativeSrc":"8441:28:87","nodeType":"YulIdentifier","src":"8441:28:87"},"nativeSrc":"8441:44:87","nodeType":"YulFunctionCall","src":"8441:44:87"},"variableNames":[{"name":"tail","nativeSrc":"8433:4:87","nodeType":"YulIdentifier","src":"8433:4:87"}]}]},"name":"abi_encode_tuple_t_struct$_SwapConfig_$1113_memory_ptr_t_struct$_SwapConfig_$1113_memory_ptr__to_t_struct$_SwapConfig_$1113_memory_ptr_t_struct$_SwapConfig_$1113_memory_ptr__fromStack_reversed","nativeSrc":"8014:477:87","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nativeSrc":"8216:9:87","nodeType":"YulTypedName","src":"8216:9:87","type":""},{"name":"value1","nativeSrc":"8227:6:87","nodeType":"YulTypedName","src":"8227:6:87","type":""},{"name":"value0","nativeSrc":"8235:6:87","nodeType":"YulTypedName","src":"8235:6:87","type":""}],"returnVariables":[{"name":"tail","nativeSrc":"8246:4:87","nodeType":"YulTypedName","src":"8246:4:87","type":""}],"src":"8014:477:87"},{"body":{"nativeSrc":"8551:325:87","nodeType":"YulBlock","src":"8551:325:87","statements":[{"nativeSrc":"8561:22:87","nodeType":"YulAssignment","src":"8561:22:87","value":{"arguments":[{"kind":"number","nativeSrc":"8575:1:87","nodeType":"YulLiteral","src":"8575:1:87","type":"","value":"1"},{"name":"data","nativeSrc":"8578:4:87","nodeType":"YulIdentifier","src":"8578:4:87"}],"functionName":{"name":"shr","nativeSrc":"8571:3:87","nodeType":"YulIdentifier","src":"8571:3:87"},"nativeSrc":"8571:12:87","nodeType":"YulFunctionCall","src":"8571:12:87"},"variableNames":[{"name":"length","nativeSrc":"8561:6:87","nodeType":"YulIdentifier","src":"8561:6:87"}]},{"nativeSrc":"8592:38:87","nodeType":"YulVariableDeclaration","src":"8592:38:87","value":{"arguments":[{"name":"data","nativeSrc":"8622:4:87","nodeType":"YulIdentifier","src":"8622:4:87"},{"kind":"number","nativeSrc":"8628:1:87","nodeType":"YulLiteral","src":"8628:1:87","type":"","value":"1"}],"functionName":{"name":"and","nativeSrc":"8618:3:87","nodeType":"YulIdentifier","src":"8618:3:87"},"nativeSrc":"8618:12:87","nodeType":"YulFunctionCall","src":"8618:12:87"},"variables":[{"name":"outOfPlaceEncoding","nativeSrc":"8596:18:87","nodeType":"YulTypedName","src":"8596:18:87","type":""}]},{"body":{"nativeSrc":"8669:31:87","nodeType":"YulBlock","src":"8669:31:87","statements":[{"nativeSrc":"8671:27:87","nodeType":"YulAssignment","src":"8671:27:87","value":{"arguments":[{"name":"length","nativeSrc":"8685:6:87","nodeType":"YulIdentifier","src":"8685:6:87"},{"kind":"number","nativeSrc":"8693:4:87","nodeType":"YulLiteral","src":"8693:4:87","type":"","value":"0x7f"}],"functionName":{"name":"and","nativeSrc":"8681:3:87","nodeType":"YulIdentifier","src":"8681:3:87"},"nativeSrc":"8681:17:87","nodeType":"YulFunctionCall","src":"8681:17:87"},"variableNames":[{"name":"length","nativeSrc":"8671:6:87","nodeType":"YulIdentifier","src":"8671:6:87"}]}]},"condition":{"arguments":[{"name":"outOfPlaceEncoding","nativeSrc":"8649:18:87","nodeType":"YulIdentifier","src":"8649:18:87"}],"functionName":{"name":"iszero","nativeSrc":"8642:6:87","nodeType":"YulIdentifier","src":"8642:6:87"},"nativeSrc":"8642:26:87","nodeType":"YulFunctionCall","src":"8642:26:87"},"nativeSrc":"8639:61:87","nodeType":"YulIf","src":"8639:61:87"},{"body":{"nativeSrc":"8759:111:87","nodeType":"YulBlock","src":"8759:111:87","statements":[{"expression":{"arguments":[{"kind":"number","nativeSrc":"8780:1:87","nodeType":"YulLiteral","src":"8780:1:87","type":"","value":"0"},{"arguments":[{"kind":"number","nativeSrc":"8787:3:87","nodeType":"YulLiteral","src":"8787:3:87","type":"","value":"224"},{"kind":"number","nativeSrc":"8792:10:87","nodeType":"YulLiteral","src":"8792:10:87","type":"","value":"0x4e487b71"}],"functionName":{"name":"shl","nativeSrc":"8783:3:87","nodeType":"YulIdentifier","src":"8783:3:87"},"nativeSrc":"8783:20:87","nodeType":"YulFunctionCall","src":"8783:20:87"}],"functionName":{"name":"mstore","nativeSrc":"8773:6:87","nodeType":"YulIdentifier","src":"8773:6:87"},"nativeSrc":"8773:31:87","nodeType":"YulFunctionCall","src":"8773:31:87"},"nativeSrc":"8773:31:87","nodeType":"YulExpressionStatement","src":"8773:31:87"},{"expression":{"arguments":[{"kind":"number","nativeSrc":"8824:1:87","nodeType":"YulLiteral","src":"8824:1:87","type":"","value":"4"},{"kind":"number","nativeSrc":"8827:4:87","nodeType":"YulLiteral","src":"8827:4:87","type":"","value":"0x22"}],"functionName":{"name":"mstore","nativeSrc":"8817:6:87","nodeType":"YulIdentifier","src":"8817:6:87"},"nativeSrc":"8817:15:87","nodeType":"YulFunctionCall","src":"8817:15:87"},"nativeSrc":"8817:15:87","nodeType":"YulExpressionStatement","src":"8817:15:87"},{"expression":{"arguments":[{"kind":"number","nativeSrc":"8852:1:87","nodeType":"YulLiteral","src":"8852:1:87","type":"","value":"0"},{"kind":"number","nativeSrc":"8855:4:87","nodeType":"YulLiteral","src":"8855:4:87","type":"","value":"0x24"}],"functionName":{"name":"revert","nativeSrc":"8845:6:87","nodeType":"YulIdentifier","src":"8845:6:87"},"nativeSrc":"8845:15:87","nodeType":"YulFunctionCall","src":"8845:15:87"},"nativeSrc":"8845:15:87","nodeType":"YulExpressionStatement","src":"8845:15:87"}]},"condition":{"arguments":[{"name":"outOfPlaceEncoding","nativeSrc":"8715:18:87","nodeType":"YulIdentifier","src":"8715:18:87"},{"arguments":[{"name":"length","nativeSrc":"8738:6:87","nodeType":"YulIdentifier","src":"8738:6:87"},{"kind":"number","nativeSrc":"8746:2:87","nodeType":"YulLiteral","src":"8746:2:87","type":"","value":"32"}],"functionName":{"name":"lt","nativeSrc":"8735:2:87","nodeType":"YulIdentifier","src":"8735:2:87"},"nativeSrc":"8735:14:87","nodeType":"YulFunctionCall","src":"8735:14:87"}],"functionName":{"name":"eq","nativeSrc":"8712:2:87","nodeType":"YulIdentifier","src":"8712:2:87"},"nativeSrc":"8712:38:87","nodeType":"YulFunctionCall","src":"8712:38:87"},"nativeSrc":"8709:161:87","nodeType":"YulIf","src":"8709:161:87"}]},"name":"extract_byte_array_length","nativeSrc":"8496:380:87","nodeType":"YulFunctionDefinition","parameters":[{"name":"data","nativeSrc":"8531:4:87","nodeType":"YulTypedName","src":"8531:4:87","type":""}],"returnVariables":[{"name":"length","nativeSrc":"8540:6:87","nodeType":"YulTypedName","src":"8540:6:87","type":""}],"src":"8496:380:87"},{"body":{"nativeSrc":"8936:65:87","nodeType":"YulBlock","src":"8936:65:87","statements":[{"expression":{"arguments":[{"kind":"number","nativeSrc":"8953:1:87","nodeType":"YulLiteral","src":"8953:1:87","type":"","value":"0"},{"name":"ptr","nativeSrc":"8956:3:87","nodeType":"YulIdentifier","src":"8956:3:87"}],"functionName":{"name":"mstore","nativeSrc":"8946:6:87","nodeType":"YulIdentifier","src":"8946:6:87"},"nativeSrc":"8946:14:87","nodeType":"YulFunctionCall","src":"8946:14:87"},"nativeSrc":"8946:14:87","nodeType":"YulExpressionStatement","src":"8946:14:87"},{"nativeSrc":"8969:26:87","nodeType":"YulAssignment","src":"8969:26:87","value":{"arguments":[{"kind":"number","nativeSrc":"8987:1:87","nodeType":"YulLiteral","src":"8987:1:87","type":"","value":"0"},{"kind":"number","nativeSrc":"8990:4:87","nodeType":"YulLiteral","src":"8990:4:87","type":"","value":"0x20"}],"functionName":{"name":"keccak256","nativeSrc":"8977:9:87","nodeType":"YulIdentifier","src":"8977:9:87"},"nativeSrc":"8977:18:87","nodeType":"YulFunctionCall","src":"8977:18:87"},"variableNames":[{"name":"data","nativeSrc":"8969:4:87","nodeType":"YulIdentifier","src":"8969:4:87"}]}]},"name":"array_dataslot_bytes_storage","nativeSrc":"8881:120:87","nodeType":"YulFunctionDefinition","parameters":[{"name":"ptr","nativeSrc":"8919:3:87","nodeType":"YulTypedName","src":"8919:3:87","type":""}],"returnVariables":[{"name":"data","nativeSrc":"8927:4:87","nodeType":"YulTypedName","src":"8927:4:87","type":""}],"src":"8881:120:87"},{"body":{"nativeSrc":"9086:437:87","nodeType":"YulBlock","src":"9086:437:87","statements":[{"body":{"nativeSrc":"9119:398:87","nodeType":"YulBlock","src":"9119:398:87","statements":[{"expression":{"arguments":[{"kind":"number","nativeSrc":"9140:1:87","nodeType":"YulLiteral","src":"9140:1:87","type":"","value":"0"},{"name":"array","nativeSrc":"9143:5:87","nodeType":"YulIdentifier","src":"9143:5:87"}],"functionName":{"name":"mstore","nativeSrc":"9133:6:87","nodeType":"YulIdentifier","src":"9133:6:87"},"nativeSrc":"9133:16:87","nodeType":"YulFunctionCall","src":"9133:16:87"},"nativeSrc":"9133:16:87","nodeType":"YulExpressionStatement","src":"9133:16:87"},{"nativeSrc":"9162:30:87","nodeType":"YulVariableDeclaration","src":"9162:30:87","value":{"arguments":[{"kind":"number","nativeSrc":"9184:1:87","nodeType":"YulLiteral","src":"9184:1:87","type":"","value":"0"},{"kind":"number","nativeSrc":"9187:4:87","nodeType":"YulLiteral","src":"9187:4:87","type":"","value":"0x20"}],"functionName":{"name":"keccak256","nativeSrc":"9174:9:87","nodeType":"YulIdentifier","src":"9174:9:87"},"nativeSrc":"9174:18:87","nodeType":"YulFunctionCall","src":"9174:18:87"},"variables":[{"name":"data","nativeSrc":"9166:4:87","nodeType":"YulTypedName","src":"9166:4:87","type":""}]},{"nativeSrc":"9205:57:87","nodeType":"YulVariableDeclaration","src":"9205:57:87","value":{"arguments":[{"name":"data","nativeSrc":"9228:4:87","nodeType":"YulIdentifier","src":"9228:4:87"},{"arguments":[{"kind":"number","nativeSrc":"9238:1:87","nodeType":"YulLiteral","src":"9238:1:87","type":"","value":"5"},{"arguments":[{"name":"startIndex","nativeSrc":"9245:10:87","nodeType":"YulIdentifier","src":"9245:10:87"},{"kind":"number","nativeSrc":"9257:2:87","nodeType":"YulLiteral","src":"9257:2:87","type":"","value":"31"}],"functionName":{"name":"add","nativeSrc":"9241:3:87","nodeType":"YulIdentifier","src":"9241:3:87"},"nativeSrc":"9241:19:87","nodeType":"YulFunctionCall","src":"9241:19:87"}],"functionName":{"name":"shr","nativeSrc":"9234:3:87","nodeType":"YulIdentifier","src":"9234:3:87"},"nativeSrc":"9234:27:87","nodeType":"YulFunctionCall","src":"9234:27:87"}],"functionName":{"name":"add","nativeSrc":"9224:3:87","nodeType":"YulIdentifier","src":"9224:3:87"},"nativeSrc":"9224:38:87","nodeType":"YulFunctionCall","src":"9224:38:87"},"variables":[{"name":"deleteStart","nativeSrc":"9209:11:87","nodeType":"YulTypedName","src":"9209:11:87","type":""}]},{"body":{"nativeSrc":"9299:23:87","nodeType":"YulBlock","src":"9299:23:87","statements":[{"nativeSrc":"9301:19:87","nodeType":"YulAssignment","src":"9301:19:87","value":{"name":"data","nativeSrc":"9316:4:87","nodeType":"YulIdentifier","src":"9316:4:87"},"variableNames":[{"name":"deleteStart","nativeSrc":"9301:11:87","nodeType":"YulIdentifier","src":"9301:11:87"}]}]},"condition":{"arguments":[{"name":"startIndex","nativeSrc":"9281:10:87","nodeType":"YulIdentifier","src":"9281:10:87"},{"kind":"number","nativeSrc":"9293:4:87","nodeType":"YulLiteral","src":"9293:4:87","type":"","value":"0x20"}],"functionName":{"name":"lt","nativeSrc":"9278:2:87","nodeType":"YulIdentifier","src":"9278:2:87"},"nativeSrc":"9278:20:87","nodeType":"YulFunctionCall","src":"9278:20:87"},"nativeSrc":"9275:47:87","nodeType":"YulIf","src":"9275:47:87"},{"nativeSrc":"9335:41:87","nodeType":"YulVariableDeclaration","src":"9335:41:87","value":{"arguments":[{"name":"data","nativeSrc":"9349:4:87","nodeType":"YulIdentifier","src":"9349:4:87"},{"arguments":[{"kind":"number","nativeSrc":"9359:1:87","nodeType":"YulLiteral","src":"9359:1:87","type":"","value":"5"},{"arguments":[{"name":"len","nativeSrc":"9366:3:87","nodeType":"YulIdentifier","src":"9366:3:87"},{"kind":"number","nativeSrc":"9371:2:87","nodeType":"YulLiteral","src":"9371:2:87","type":"","value":"31"}],"functionName":{"name":"add","nativeSrc":"9362:3:87","nodeType":"YulIdentifier","src":"9362:3:87"},"nativeSrc":"9362:12:87","nodeType":"YulFunctionCall","src":"9362:12:87"}],"functionName":{"name":"shr","nativeSrc":"9355:3:87","nodeType":"YulIdentifier","src":"9355:3:87"},"nativeSrc":"9355:20:87","nodeType":"YulFunctionCall","src":"9355:20:87"}],"functionName":{"name":"add","nativeSrc":"9345:3:87","nodeType":"YulIdentifier","src":"9345:3:87"},"nativeSrc":"9345:31:87","nodeType":"YulFunctionCall","src":"9345:31:87"},"variables":[{"name":"_1","nativeSrc":"9339:2:87","nodeType":"YulTypedName","src":"9339:2:87","type":""}]},{"nativeSrc":"9389:24:87","nodeType":"YulVariableDeclaration","src":"9389:24:87","value":{"name":"deleteStart","nativeSrc":"9402:11:87","nodeType":"YulIdentifier","src":"9402:11:87"},"variables":[{"name":"start","nativeSrc":"9393:5:87","nodeType":"YulTypedName","src":"9393:5:87","type":""}]},{"body":{"nativeSrc":"9487:20:87","nodeType":"YulBlock","src":"9487:20:87","statements":[{"expression":{"arguments":[{"name":"start","nativeSrc":"9496:5:87","nodeType":"YulIdentifier","src":"9496:5:87"},{"kind":"number","nativeSrc":"9503:1:87","nodeType":"YulLiteral","src":"9503:1:87","type":"","value":"0"}],"functionName":{"name":"sstore","nativeSrc":"9489:6:87","nodeType":"YulIdentifier","src":"9489:6:87"},"nativeSrc":"9489:16:87","nodeType":"YulFunctionCall","src":"9489:16:87"},"nativeSrc":"9489:16:87","nodeType":"YulExpressionStatement","src":"9489:16:87"}]},"condition":{"arguments":[{"name":"start","nativeSrc":"9437:5:87","nodeType":"YulIdentifier","src":"9437:5:87"},{"name":"_1","nativeSrc":"9444:2:87","nodeType":"YulIdentifier","src":"9444:2:87"}],"functionName":{"name":"lt","nativeSrc":"9434:2:87","nodeType":"YulIdentifier","src":"9434:2:87"},"nativeSrc":"9434:13:87","nodeType":"YulFunctionCall","src":"9434:13:87"},"nativeSrc":"9426:81:87","nodeType":"YulForLoop","post":{"nativeSrc":"9448:26:87","nodeType":"YulBlock","src":"9448:26:87","statements":[{"nativeSrc":"9450:22:87","nodeType":"YulAssignment","src":"9450:22:87","value":{"arguments":[{"name":"start","nativeSrc":"9463:5:87","nodeType":"YulIdentifier","src":"9463:5:87"},{"kind":"number","nativeSrc":"9470:1:87","nodeType":"YulLiteral","src":"9470:1:87","type":"","value":"1"}],"functionName":{"name":"add","nativeSrc":"9459:3:87","nodeType":"YulIdentifier","src":"9459:3:87"},"nativeSrc":"9459:13:87","nodeType":"YulFunctionCall","src":"9459:13:87"},"variableNames":[{"name":"start","nativeSrc":"9450:5:87","nodeType":"YulIdentifier","src":"9450:5:87"}]}]},"pre":{"nativeSrc":"9430:3:87","nodeType":"YulBlock","src":"9430:3:87","statements":[]},"src":"9426:81:87"}]},"condition":{"arguments":[{"name":"len","nativeSrc":"9102:3:87","nodeType":"YulIdentifier","src":"9102:3:87"},{"kind":"number","nativeSrc":"9107:2:87","nodeType":"YulLiteral","src":"9107:2:87","type":"","value":"31"}],"functionName":{"name":"gt","nativeSrc":"9099:2:87","nodeType":"YulIdentifier","src":"9099:2:87"},"nativeSrc":"9099:11:87","nodeType":"YulFunctionCall","src":"9099:11:87"},"nativeSrc":"9096:421:87","nodeType":"YulIf","src":"9096:421:87"}]},"name":"clean_up_bytearray_end_slots_bytes_storage","nativeSrc":"9006:517:87","nodeType":"YulFunctionDefinition","parameters":[{"name":"array","nativeSrc":"9058:5:87","nodeType":"YulTypedName","src":"9058:5:87","type":""},{"name":"len","nativeSrc":"9065:3:87","nodeType":"YulTypedName","src":"9065:3:87","type":""},{"name":"startIndex","nativeSrc":"9070:10:87","nodeType":"YulTypedName","src":"9070:10:87","type":""}],"src":"9006:517:87"},{"body":{"nativeSrc":"9613:81:87","nodeType":"YulBlock","src":"9613:81:87","statements":[{"nativeSrc":"9623:65:87","nodeType":"YulAssignment","src":"9623:65:87","value":{"arguments":[{"arguments":[{"name":"data","nativeSrc":"9638:4:87","nodeType":"YulIdentifier","src":"9638:4:87"},{"arguments":[{"arguments":[{"arguments":[{"kind":"number","nativeSrc":"9656:1:87","nodeType":"YulLiteral","src":"9656:1:87","type":"","value":"3"},{"name":"len","nativeSrc":"9659:3:87","nodeType":"YulIdentifier","src":"9659:3:87"}],"functionName":{"name":"shl","nativeSrc":"9652:3:87","nodeType":"YulIdentifier","src":"9652:3:87"},"nativeSrc":"9652:11:87","nodeType":"YulFunctionCall","src":"9652:11:87"},{"arguments":[{"kind":"number","nativeSrc":"9669:1:87","nodeType":"YulLiteral","src":"9669:1:87","type":"","value":"0"}],"functionName":{"name":"not","nativeSrc":"9665:3:87","nodeType":"YulIdentifier","src":"9665:3:87"},"nativeSrc":"9665:6:87","nodeType":"YulFunctionCall","src":"9665:6:87"}],"functionName":{"name":"shr","nativeSrc":"9648:3:87","nodeType":"YulIdentifier","src":"9648:3:87"},"nativeSrc":"9648:24:87","nodeType":"YulFunctionCall","src":"9648:24:87"}],"functionName":{"name":"not","nativeSrc":"9644:3:87","nodeType":"YulIdentifier","src":"9644:3:87"},"nativeSrc":"9644:29:87","nodeType":"YulFunctionCall","src":"9644:29:87"}],"functionName":{"name":"and","nativeSrc":"9634:3:87","nodeType":"YulIdentifier","src":"9634:3:87"},"nativeSrc":"9634:40:87","nodeType":"YulFunctionCall","src":"9634:40:87"},{"arguments":[{"kind":"number","nativeSrc":"9680:1:87","nodeType":"YulLiteral","src":"9680:1:87","type":"","value":"1"},{"name":"len","nativeSrc":"9683:3:87","nodeType":"YulIdentifier","src":"9683:3:87"}],"functionName":{"name":"shl","nativeSrc":"9676:3:87","nodeType":"YulIdentifier","src":"9676:3:87"},"nativeSrc":"9676:11:87","nodeType":"YulFunctionCall","src":"9676:11:87"}],"functionName":{"name":"or","nativeSrc":"9631:2:87","nodeType":"YulIdentifier","src":"9631:2:87"},"nativeSrc":"9631:57:87","nodeType":"YulFunctionCall","src":"9631:57:87"},"variableNames":[{"name":"used","nativeSrc":"9623:4:87","nodeType":"YulIdentifier","src":"9623:4:87"}]}]},"name":"extract_used_part_and_set_length_of_short_byte_array","nativeSrc":"9528:166:87","nodeType":"YulFunctionDefinition","parameters":[{"name":"data","nativeSrc":"9590:4:87","nodeType":"YulTypedName","src":"9590:4:87","type":""},{"name":"len","nativeSrc":"9596:3:87","nodeType":"YulTypedName","src":"9596:3:87","type":""}],"returnVariables":[{"name":"used","nativeSrc":"9604:4:87","nodeType":"YulTypedName","src":"9604:4:87","type":""}],"src":"9528:166:87"},{"body":{"nativeSrc":"9793:1201:87","nodeType":"YulBlock","src":"9793:1201:87","statements":[{"nativeSrc":"9803:24:87","nodeType":"YulVariableDeclaration","src":"9803:24:87","value":{"arguments":[{"name":"src","nativeSrc":"9823:3:87","nodeType":"YulIdentifier","src":"9823:3:87"}],"functionName":{"name":"mload","nativeSrc":"9817:5:87","nodeType":"YulIdentifier","src":"9817:5:87"},"nativeSrc":"9817:10:87","nodeType":"YulFunctionCall","src":"9817:10:87"},"variables":[{"name":"newLen","nativeSrc":"9807:6:87","nodeType":"YulTypedName","src":"9807:6:87","type":""}]},{"body":{"nativeSrc":"9870:22:87","nodeType":"YulBlock","src":"9870:22:87","statements":[{"expression":{"arguments":[],"functionName":{"name":"panic_error_0x41","nativeSrc":"9872:16:87","nodeType":"YulIdentifier","src":"9872:16:87"},"nativeSrc":"9872:18:87","nodeType":"YulFunctionCall","src":"9872:18:87"},"nativeSrc":"9872:18:87","nodeType":"YulExpressionStatement","src":"9872:18:87"}]},"condition":{"arguments":[{"name":"newLen","nativeSrc":"9842:6:87","nodeType":"YulIdentifier","src":"9842:6:87"},{"kind":"number","nativeSrc":"9850:18:87","nodeType":"YulLiteral","src":"9850:18:87","type":"","value":"0xffffffffffffffff"}],"functionName":{"name":"gt","nativeSrc":"9839:2:87","nodeType":"YulIdentifier","src":"9839:2:87"},"nativeSrc":"9839:30:87","nodeType":"YulFunctionCall","src":"9839:30:87"},"nativeSrc":"9836:56:87","nodeType":"YulIf","src":"9836:56:87"},{"expression":{"arguments":[{"name":"slot","nativeSrc":"9944:4:87","nodeType":"YulIdentifier","src":"9944:4:87"},{"arguments":[{"arguments":[{"name":"slot","nativeSrc":"9982:4:87","nodeType":"YulIdentifier","src":"9982:4:87"}],"functionName":{"name":"sload","nativeSrc":"9976:5:87","nodeType":"YulIdentifier","src":"9976:5:87"},"nativeSrc":"9976:11:87","nodeType":"YulFunctionCall","src":"9976:11:87"}],"functionName":{"name":"extract_byte_array_length","nativeSrc":"9950:25:87","nodeType":"YulIdentifier","src":"9950:25:87"},"nativeSrc":"9950:38:87","nodeType":"YulFunctionCall","src":"9950:38:87"},{"name":"newLen","nativeSrc":"9990:6:87","nodeType":"YulIdentifier","src":"9990:6:87"}],"functionName":{"name":"clean_up_bytearray_end_slots_bytes_storage","nativeSrc":"9901:42:87","nodeType":"YulIdentifier","src":"9901:42:87"},"nativeSrc":"9901:96:87","nodeType":"YulFunctionCall","src":"9901:96:87"},"nativeSrc":"9901:96:87","nodeType":"YulExpressionStatement","src":"9901:96:87"},{"nativeSrc":"10006:18:87","nodeType":"YulVariableDeclaration","src":"10006:18:87","value":{"kind":"number","nativeSrc":"10023:1:87","nodeType":"YulLiteral","src":"10023:1:87","type":"","value":"0"},"variables":[{"name":"srcOffset","nativeSrc":"10010:9:87","nodeType":"YulTypedName","src":"10010:9:87","type":""}]},{"nativeSrc":"10033:17:87","nodeType":"YulAssignment","src":"10033:17:87","value":{"kind":"number","nativeSrc":"10046:4:87","nodeType":"YulLiteral","src":"10046:4:87","type":"","value":"0x20"},"variableNames":[{"name":"srcOffset","nativeSrc":"10033:9:87","nodeType":"YulIdentifier","src":"10033:9:87"}]},{"cases":[{"body":{"nativeSrc":"10096:641:87","nodeType":"YulBlock","src":"10096:641:87","statements":[{"nativeSrc":"10110:35:87","nodeType":"YulVariableDeclaration","src":"10110:35:87","value":{"arguments":[{"name":"newLen","nativeSrc":"10129:6:87","nodeType":"YulIdentifier","src":"10129:6:87"},{"arguments":[{"kind":"number","nativeSrc":"10141:2:87","nodeType":"YulLiteral","src":"10141:2:87","type":"","value":"31"}],"functionName":{"name":"not","nativeSrc":"10137:3:87","nodeType":"YulIdentifier","src":"10137:3:87"},"nativeSrc":"10137:7:87","nodeType":"YulFunctionCall","src":"10137:7:87"}],"functionName":{"name":"and","nativeSrc":"10125:3:87","nodeType":"YulIdentifier","src":"10125:3:87"},"nativeSrc":"10125:20:87","nodeType":"YulFunctionCall","src":"10125:20:87"},"variables":[{"name":"loopEnd","nativeSrc":"10114:7:87","nodeType":"YulTypedName","src":"10114:7:87","type":""}]},{"nativeSrc":"10158:48:87","nodeType":"YulVariableDeclaration","src":"10158:48:87","value":{"arguments":[{"name":"slot","nativeSrc":"10201:4:87","nodeType":"YulIdentifier","src":"10201:4:87"}],"functionName":{"name":"array_dataslot_bytes_storage","nativeSrc":"10172:28:87","nodeType":"YulIdentifier","src":"10172:28:87"},"nativeSrc":"10172:34:87","nodeType":"YulFunctionCall","src":"10172:34:87"},"variables":[{"name":"dstPtr","nativeSrc":"10162:6:87","nodeType":"YulTypedName","src":"10162:6:87","type":""}]},{"nativeSrc":"10219:10:87","nodeType":"YulVariableDeclaration","src":"10219:10:87","value":{"kind":"number","nativeSrc":"10228:1:87","nodeType":"YulLiteral","src":"10228:1:87","type":"","value":"0"},"variables":[{"name":"i","nativeSrc":"10223:1:87","nodeType":"YulTypedName","src":"10223:1:87","type":""}]},{"body":{"nativeSrc":"10299:165:87","nodeType":"YulBlock","src":"10299:165:87","statements":[{"expression":{"arguments":[{"name":"dstPtr","nativeSrc":"10324:6:87","nodeType":"YulIdentifier","src":"10324:6:87"},{"arguments":[{"arguments":[{"name":"src","nativeSrc":"10342:3:87","nodeType":"YulIdentifier","src":"10342:3:87"},{"name":"srcOffset","nativeSrc":"10347:9:87","nodeType":"YulIdentifier","src":"10347:9:87"}],"functionName":{"name":"add","nativeSrc":"10338:3:87","nodeType":"YulIdentifier","src":"10338:3:87"},"nativeSrc":"10338:19:87","nodeType":"YulFunctionCall","src":"10338:19:87"}],"functionName":{"name":"mload","nativeSrc":"10332:5:87","nodeType":"YulIdentifier","src":"10332:5:87"},"nativeSrc":"10332:26:87","nodeType":"YulFunctionCall","src":"10332:26:87"}],"functionName":{"name":"sstore","nativeSrc":"10317:6:87","nodeType":"YulIdentifier","src":"10317:6:87"},"nativeSrc":"10317:42:87","nodeType":"YulFunctionCall","src":"10317:42:87"},"nativeSrc":"10317:42:87","nodeType":"YulExpressionStatement","src":"10317:42:87"},{"nativeSrc":"10376:24:87","nodeType":"YulAssignment","src":"10376:24:87","value":{"arguments":[{"name":"dstPtr","nativeSrc":"10390:6:87","nodeType":"YulIdentifier","src":"10390:6:87"},{"kind":"number","nativeSrc":"10398:1:87","nodeType":"YulLiteral","src":"10398:1:87","type":"","value":"1"}],"functionName":{"name":"add","nativeSrc":"10386:3:87","nodeType":"YulIdentifier","src":"10386:3:87"},"nativeSrc":"10386:14:87","nodeType":"YulFunctionCall","src":"10386:14:87"},"variableNames":[{"name":"dstPtr","nativeSrc":"10376:6:87","nodeType":"YulIdentifier","src":"10376:6:87"}]},{"nativeSrc":"10417:33:87","nodeType":"YulAssignment","src":"10417:33:87","value":{"arguments":[{"name":"srcOffset","nativeSrc":"10434:9:87","nodeType":"YulIdentifier","src":"10434:9:87"},{"kind":"number","nativeSrc":"10445:4:87","nodeType":"YulLiteral","src":"10445:4:87","type":"","value":"0x20"}],"functionName":{"name":"add","nativeSrc":"10430:3:87","nodeType":"YulIdentifier","src":"10430:3:87"},"nativeSrc":"10430:20:87","nodeType":"YulFunctionCall","src":"10430:20:87"},"variableNames":[{"name":"srcOffset","nativeSrc":"10417:9:87","nodeType":"YulIdentifier","src":"10417:9:87"}]}]},"condition":{"arguments":[{"name":"i","nativeSrc":"10253:1:87","nodeType":"YulIdentifier","src":"10253:1:87"},{"name":"loopEnd","nativeSrc":"10256:7:87","nodeType":"YulIdentifier","src":"10256:7:87"}],"functionName":{"name":"lt","nativeSrc":"10250:2:87","nodeType":"YulIdentifier","src":"10250:2:87"},"nativeSrc":"10250:14:87","nodeType":"YulFunctionCall","src":"10250:14:87"},"nativeSrc":"10242:222:87","nodeType":"YulForLoop","post":{"nativeSrc":"10265:21:87","nodeType":"YulBlock","src":"10265:21:87","statements":[{"nativeSrc":"10267:17:87","nodeType":"YulAssignment","src":"10267:17:87","value":{"arguments":[{"name":"i","nativeSrc":"10276:1:87","nodeType":"YulIdentifier","src":"10276:1:87"},{"kind":"number","nativeSrc":"10279:4:87","nodeType":"YulLiteral","src":"10279:4:87","type":"","value":"0x20"}],"functionName":{"name":"add","nativeSrc":"10272:3:87","nodeType":"YulIdentifier","src":"10272:3:87"},"nativeSrc":"10272:12:87","nodeType":"YulFunctionCall","src":"10272:12:87"},"variableNames":[{"name":"i","nativeSrc":"10267:1:87","nodeType":"YulIdentifier","src":"10267:1:87"}]}]},"pre":{"nativeSrc":"10246:3:87","nodeType":"YulBlock","src":"10246:3:87","statements":[]},"src":"10242:222:87"},{"body":{"nativeSrc":"10512:166:87","nodeType":"YulBlock","src":"10512:166:87","statements":[{"nativeSrc":"10530:43:87","nodeType":"YulVariableDeclaration","src":"10530:43:87","value":{"arguments":[{"arguments":[{"name":"src","nativeSrc":"10557:3:87","nodeType":"YulIdentifier","src":"10557:3:87"},{"name":"srcOffset","nativeSrc":"10562:9:87","nodeType":"YulIdentifier","src":"10562:9:87"}],"functionName":{"name":"add","nativeSrc":"10553:3:87","nodeType":"YulIdentifier","src":"10553:3:87"},"nativeSrc":"10553:19:87","nodeType":"YulFunctionCall","src":"10553:19:87"}],"functionName":{"name":"mload","nativeSrc":"10547:5:87","nodeType":"YulIdentifier","src":"10547:5:87"},"nativeSrc":"10547:26:87","nodeType":"YulFunctionCall","src":"10547:26:87"},"variables":[{"name":"lastValue","nativeSrc":"10534:9:87","nodeType":"YulTypedName","src":"10534:9:87","type":""}]},{"expression":{"arguments":[{"name":"dstPtr","nativeSrc":"10597:6:87","nodeType":"YulIdentifier","src":"10597:6:87"},{"arguments":[{"name":"lastValue","nativeSrc":"10609:9:87","nodeType":"YulIdentifier","src":"10609:9:87"},{"arguments":[{"arguments":[{"arguments":[{"arguments":[{"kind":"number","nativeSrc":"10636:1:87","nodeType":"YulLiteral","src":"10636:1:87","type":"","value":"3"},{"name":"newLen","nativeSrc":"10639:6:87","nodeType":"YulIdentifier","src":"10639:6:87"}],"functionName":{"name":"shl","nativeSrc":"10632:3:87","nodeType":"YulIdentifier","src":"10632:3:87"},"nativeSrc":"10632:14:87","nodeType":"YulFunctionCall","src":"10632:14:87"},{"kind":"number","nativeSrc":"10648:3:87","nodeType":"YulLiteral","src":"10648:3:87","type":"","value":"248"}],"functionName":{"name":"and","nativeSrc":"10628:3:87","nodeType":"YulIdentifier","src":"10628:3:87"},"nativeSrc":"10628:24:87","nodeType":"YulFunctionCall","src":"10628:24:87"},{"arguments":[{"kind":"number","nativeSrc":"10658:1:87","nodeType":"YulLiteral","src":"10658:1:87","type":"","value":"0"}],"functionName":{"name":"not","nativeSrc":"10654:3:87","nodeType":"YulIdentifier","src":"10654:3:87"},"nativeSrc":"10654:6:87","nodeType":"YulFunctionCall","src":"10654:6:87"}],"functionName":{"name":"shr","nativeSrc":"10624:3:87","nodeType":"YulIdentifier","src":"10624:3:87"},"nativeSrc":"10624:37:87","nodeType":"YulFunctionCall","src":"10624:37:87"}],"functionName":{"name":"not","nativeSrc":"10620:3:87","nodeType":"YulIdentifier","src":"10620:3:87"},"nativeSrc":"10620:42:87","nodeType":"YulFunctionCall","src":"10620:42:87"}],"functionName":{"name":"and","nativeSrc":"10605:3:87","nodeType":"YulIdentifier","src":"10605:3:87"},"nativeSrc":"10605:58:87","nodeType":"YulFunctionCall","src":"10605:58:87"}],"functionName":{"name":"sstore","nativeSrc":"10590:6:87","nodeType":"YulIdentifier","src":"10590:6:87"},"nativeSrc":"10590:74:87","nodeType":"YulFunctionCall","src":"10590:74:87"},"nativeSrc":"10590:74:87","nodeType":"YulExpressionStatement","src":"10590:74:87"}]},"condition":{"arguments":[{"name":"loopEnd","nativeSrc":"10483:7:87","nodeType":"YulIdentifier","src":"10483:7:87"},{"name":"newLen","nativeSrc":"10492:6:87","nodeType":"YulIdentifier","src":"10492:6:87"}],"functionName":{"name":"lt","nativeSrc":"10480:2:87","nodeType":"YulIdentifier","src":"10480:2:87"},"nativeSrc":"10480:19:87","nodeType":"YulFunctionCall","src":"10480:19:87"},"nativeSrc":"10477:201:87","nodeType":"YulIf","src":"10477:201:87"},{"expression":{"arguments":[{"name":"slot","nativeSrc":"10698:4:87","nodeType":"YulIdentifier","src":"10698:4:87"},{"arguments":[{"arguments":[{"kind":"number","nativeSrc":"10712:1:87","nodeType":"YulLiteral","src":"10712:1:87","type":"","value":"1"},{"name":"newLen","nativeSrc":"10715:6:87","nodeType":"YulIdentifier","src":"10715:6:87"}],"functionName":{"name":"shl","nativeSrc":"10708:3:87","nodeType":"YulIdentifier","src":"10708:3:87"},"nativeSrc":"10708:14:87","nodeType":"YulFunctionCall","src":"10708:14:87"},{"kind":"number","nativeSrc":"10724:1:87","nodeType":"YulLiteral","src":"10724:1:87","type":"","value":"1"}],"functionName":{"name":"add","nativeSrc":"10704:3:87","nodeType":"YulIdentifier","src":"10704:3:87"},"nativeSrc":"10704:22:87","nodeType":"YulFunctionCall","src":"10704:22:87"}],"functionName":{"name":"sstore","nativeSrc":"10691:6:87","nodeType":"YulIdentifier","src":"10691:6:87"},"nativeSrc":"10691:36:87","nodeType":"YulFunctionCall","src":"10691:36:87"},"nativeSrc":"10691:36:87","nodeType":"YulExpressionStatement","src":"10691:36:87"}]},"nativeSrc":"10089:648:87","nodeType":"YulCase","src":"10089:648:87","value":{"kind":"number","nativeSrc":"10094:1:87","nodeType":"YulLiteral","src":"10094:1:87","type":"","value":"1"}},{"body":{"nativeSrc":"10754:234:87","nodeType":"YulBlock","src":"10754:234:87","statements":[{"nativeSrc":"10768:14:87","nodeType":"YulVariableDeclaration","src":"10768:14:87","value":{"kind":"number","nativeSrc":"10781:1:87","nodeType":"YulLiteral","src":"10781:1:87","type":"","value":"0"},"variables":[{"name":"value","nativeSrc":"10772:5:87","nodeType":"YulTypedName","src":"10772:5:87","type":""}]},{"body":{"nativeSrc":"10817:67:87","nodeType":"YulBlock","src":"10817:67:87","statements":[{"nativeSrc":"10835:35:87","nodeType":"YulAssignment","src":"10835:35:87","value":{"arguments":[{"arguments":[{"name":"src","nativeSrc":"10854:3:87","nodeType":"YulIdentifier","src":"10854:3:87"},{"name":"srcOffset","nativeSrc":"10859:9:87","nodeType":"YulIdentifier","src":"10859:9:87"}],"functionName":{"name":"add","nativeSrc":"10850:3:87","nodeType":"YulIdentifier","src":"10850:3:87"},"nativeSrc":"10850:19:87","nodeType":"YulFunctionCall","src":"10850:19:87"}],"functionName":{"name":"mload","nativeSrc":"10844:5:87","nodeType":"YulIdentifier","src":"10844:5:87"},"nativeSrc":"10844:26:87","nodeType":"YulFunctionCall","src":"10844:26:87"},"variableNames":[{"name":"value","nativeSrc":"10835:5:87","nodeType":"YulIdentifier","src":"10835:5:87"}]}]},"condition":{"name":"newLen","nativeSrc":"10798:6:87","nodeType":"YulIdentifier","src":"10798:6:87"},"nativeSrc":"10795:89:87","nodeType":"YulIf","src":"10795:89:87"},{"expression":{"arguments":[{"name":"slot","nativeSrc":"10904:4:87","nodeType":"YulIdentifier","src":"10904:4:87"},{"arguments":[{"name":"value","nativeSrc":"10963:5:87","nodeType":"YulIdentifier","src":"10963:5:87"},{"name":"newLen","nativeSrc":"10970:6:87","nodeType":"YulIdentifier","src":"10970:6:87"}],"functionName":{"name":"extract_used_part_and_set_length_of_short_byte_array","nativeSrc":"10910:52:87","nodeType":"YulIdentifier","src":"10910:52:87"},"nativeSrc":"10910:67:87","nodeType":"YulFunctionCall","src":"10910:67:87"}],"functionName":{"name":"sstore","nativeSrc":"10897:6:87","nodeType":"YulIdentifier","src":"10897:6:87"},"nativeSrc":"10897:81:87","nodeType":"YulFunctionCall","src":"10897:81:87"},"nativeSrc":"10897:81:87","nodeType":"YulExpressionStatement","src":"10897:81:87"}]},"nativeSrc":"10746:242:87","nodeType":"YulCase","src":"10746:242:87","value":"default"}],"expression":{"arguments":[{"name":"newLen","nativeSrc":"10069:6:87","nodeType":"YulIdentifier","src":"10069:6:87"},{"kind":"number","nativeSrc":"10077:2:87","nodeType":"YulLiteral","src":"10077:2:87","type":"","value":"31"}],"functionName":{"name":"gt","nativeSrc":"10066:2:87","nodeType":"YulIdentifier","src":"10066:2:87"},"nativeSrc":"10066:14:87","nodeType":"YulFunctionCall","src":"10066:14:87"},"nativeSrc":"10059:929:87","nodeType":"YulSwitch","src":"10059:929:87"}]},"name":"copy_byte_array_to_storage_from_t_bytes_memory_ptr_to_t_bytes_storage","nativeSrc":"9699:1295:87","nodeType":"YulFunctionDefinition","parameters":[{"name":"slot","nativeSrc":"9778:4:87","nodeType":"YulTypedName","src":"9778:4:87","type":""},{"name":"src","nativeSrc":"9784:3:87","nodeType":"YulTypedName","src":"9784:3:87","type":""}],"src":"9699:1295:87"},{"body":{"nativeSrc":"11276:337:87","nodeType":"YulBlock","src":"11276:337:87","statements":[{"expression":{"arguments":[{"name":"headStart","nativeSrc":"11293:9:87","nodeType":"YulIdentifier","src":"11293:9:87"},{"kind":"number","nativeSrc":"11304:3:87","nodeType":"YulLiteral","src":"11304:3:87","type":"","value":"160"}],"functionName":{"name":"mstore","nativeSrc":"11286:6:87","nodeType":"YulIdentifier","src":"11286:6:87"},"nativeSrc":"11286:22:87","nodeType":"YulFunctionCall","src":"11286:22:87"},"nativeSrc":"11286:22:87","nodeType":"YulExpressionStatement","src":"11286:22:87"},{"nativeSrc":"11317:65:87","nodeType":"YulAssignment","src":"11317:65:87","value":{"arguments":[{"name":"value0","nativeSrc":"11354:6:87","nodeType":"YulIdentifier","src":"11354:6:87"},{"arguments":[{"name":"headStart","nativeSrc":"11366:9:87","nodeType":"YulIdentifier","src":"11366:9:87"},{"kind":"number","nativeSrc":"11377:3:87","nodeType":"YulLiteral","src":"11377:3:87","type":"","value":"160"}],"functionName":{"name":"add","nativeSrc":"11362:3:87","nodeType":"YulIdentifier","src":"11362:3:87"},"nativeSrc":"11362:19:87","nodeType":"YulFunctionCall","src":"11362:19:87"}],"functionName":{"name":"abi_encode_struct_SwapConfig","nativeSrc":"11325:28:87","nodeType":"YulIdentifier","src":"11325:28:87"},"nativeSrc":"11325:57:87","nodeType":"YulFunctionCall","src":"11325:57:87"},"variableNames":[{"name":"tail","nativeSrc":"11317:4:87","nodeType":"YulIdentifier","src":"11317:4:87"}]},{"expression":{"arguments":[{"arguments":[{"name":"headStart","nativeSrc":"11402:9:87","nodeType":"YulIdentifier","src":"11402:9:87"},{"kind":"number","nativeSrc":"11413:2:87","nodeType":"YulLiteral","src":"11413:2:87","type":"","value":"32"}],"functionName":{"name":"add","nativeSrc":"11398:3:87","nodeType":"YulIdentifier","src":"11398:3:87"},"nativeSrc":"11398:18:87","nodeType":"YulFunctionCall","src":"11398:18:87"},{"arguments":[{"name":"value1","nativeSrc":"11422:6:87","nodeType":"YulIdentifier","src":"11422:6:87"},{"arguments":[{"arguments":[{"kind":"number","nativeSrc":"11438:3:87","nodeType":"YulLiteral","src":"11438:3:87","type":"","value":"160"},{"kind":"number","nativeSrc":"11443:1:87","nodeType":"YulLiteral","src":"11443:1:87","type":"","value":"1"}],"functionName":{"name":"shl","nativeSrc":"11434:3:87","nodeType":"YulIdentifier","src":"11434:3:87"},"nativeSrc":"11434:11:87","nodeType":"YulFunctionCall","src":"11434:11:87"},{"kind":"number","nativeSrc":"11447:1:87","nodeType":"YulLiteral","src":"11447:1:87","type":"","value":"1"}],"functionName":{"name":"sub","nativeSrc":"11430:3:87","nodeType":"YulIdentifier","src":"11430:3:87"},"nativeSrc":"11430:19:87","nodeType":"YulFunctionCall","src":"11430:19:87"}],"functionName":{"name":"and","nativeSrc":"11418:3:87","nodeType":"YulIdentifier","src":"11418:3:87"},"nativeSrc":"11418:32:87","nodeType":"YulFunctionCall","src":"11418:32:87"}],"functionName":{"name":"mstore","nativeSrc":"11391:6:87","nodeType":"YulIdentifier","src":"11391:6:87"},"nativeSrc":"11391:60:87","nodeType":"YulFunctionCall","src":"11391:60:87"},"nativeSrc":"11391:60:87","nodeType":"YulExpressionStatement","src":"11391:60:87"},{"expression":{"arguments":[{"arguments":[{"name":"headStart","nativeSrc":"11471:9:87","nodeType":"YulIdentifier","src":"11471:9:87"},{"kind":"number","nativeSrc":"11482:2:87","nodeType":"YulLiteral","src":"11482:2:87","type":"","value":"64"}],"functionName":{"name":"add","nativeSrc":"11467:3:87","nodeType":"YulIdentifier","src":"11467:3:87"},"nativeSrc":"11467:18:87","nodeType":"YulFunctionCall","src":"11467:18:87"},{"arguments":[{"name":"value2","nativeSrc":"11491:6:87","nodeType":"YulIdentifier","src":"11491:6:87"},{"arguments":[{"arguments":[{"kind":"number","nativeSrc":"11507:3:87","nodeType":"YulLiteral","src":"11507:3:87","type":"","value":"160"},{"kind":"number","nativeSrc":"11512:1:87","nodeType":"YulLiteral","src":"11512:1:87","type":"","value":"1"}],"functionName":{"name":"shl","nativeSrc":"11503:3:87","nodeType":"YulIdentifier","src":"11503:3:87"},"nativeSrc":"11503:11:87","nodeType":"YulFunctionCall","src":"11503:11:87"},{"kind":"number","nativeSrc":"11516:1:87","nodeType":"YulLiteral","src":"11516:1:87","type":"","value":"1"}],"functionName":{"name":"sub","nativeSrc":"11499:3:87","nodeType":"YulIdentifier","src":"11499:3:87"},"nativeSrc":"11499:19:87","nodeType":"YulFunctionCall","src":"11499:19:87"}],"functionName":{"name":"and","nativeSrc":"11487:3:87","nodeType":"YulIdentifier","src":"11487:3:87"},"nativeSrc":"11487:32:87","nodeType":"YulFunctionCall","src":"11487:32:87"}],"functionName":{"name":"mstore","nativeSrc":"11460:6:87","nodeType":"YulIdentifier","src":"11460:6:87"},"nativeSrc":"11460:60:87","nodeType":"YulFunctionCall","src":"11460:60:87"},"nativeSrc":"11460:60:87","nodeType":"YulExpressionStatement","src":"11460:60:87"},{"expression":{"arguments":[{"arguments":[{"name":"headStart","nativeSrc":"11540:9:87","nodeType":"YulIdentifier","src":"11540:9:87"},{"kind":"number","nativeSrc":"11551:2:87","nodeType":"YulLiteral","src":"11551:2:87","type":"","value":"96"}],"functionName":{"name":"add","nativeSrc":"11536:3:87","nodeType":"YulIdentifier","src":"11536:3:87"},"nativeSrc":"11536:18:87","nodeType":"YulFunctionCall","src":"11536:18:87"},{"name":"value3","nativeSrc":"11556:6:87","nodeType":"YulIdentifier","src":"11556:6:87"}],"functionName":{"name":"mstore","nativeSrc":"11529:6:87","nodeType":"YulIdentifier","src":"11529:6:87"},"nativeSrc":"11529:34:87","nodeType":"YulFunctionCall","src":"11529:34:87"},"nativeSrc":"11529:34:87","nodeType":"YulExpressionStatement","src":"11529:34:87"},{"expression":{"arguments":[{"arguments":[{"name":"headStart","nativeSrc":"11583:9:87","nodeType":"YulIdentifier","src":"11583:9:87"},{"kind":"number","nativeSrc":"11594:3:87","nodeType":"YulLiteral","src":"11594:3:87","type":"","value":"128"}],"functionName":{"name":"add","nativeSrc":"11579:3:87","nodeType":"YulIdentifier","src":"11579:3:87"},"nativeSrc":"11579:19:87","nodeType":"YulFunctionCall","src":"11579:19:87"},{"name":"value4","nativeSrc":"11600:6:87","nodeType":"YulIdentifier","src":"11600:6:87"}],"functionName":{"name":"mstore","nativeSrc":"11572:6:87","nodeType":"YulIdentifier","src":"11572:6:87"},"nativeSrc":"11572:35:87","nodeType":"YulFunctionCall","src":"11572:35:87"},"nativeSrc":"11572:35:87","nodeType":"YulExpressionStatement","src":"11572:35:87"}]},"name":"abi_encode_tuple_t_struct$_SwapConfig_$1113_memory_ptr_t_address_t_address_t_uint256_t_uint256__to_t_struct$_SwapConfig_$1113_memory_ptr_t_address_t_address_t_uint256_t_uint256__fromStack_library_reversed","nativeSrc":"10999:614:87","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nativeSrc":"11213:9:87","nodeType":"YulTypedName","src":"11213:9:87","type":""},{"name":"value4","nativeSrc":"11224:6:87","nodeType":"YulTypedName","src":"11224:6:87","type":""},{"name":"value3","nativeSrc":"11232:6:87","nodeType":"YulTypedName","src":"11232:6:87","type":""},{"name":"value2","nativeSrc":"11240:6:87","nodeType":"YulTypedName","src":"11240:6:87","type":""},{"name":"value1","nativeSrc":"11248:6:87","nodeType":"YulTypedName","src":"11248:6:87","type":""},{"name":"value0","nativeSrc":"11256:6:87","nodeType":"YulTypedName","src":"11256:6:87","type":""}],"returnVariables":[{"name":"tail","nativeSrc":"11267:4:87","nodeType":"YulTypedName","src":"11267:4:87","type":""}],"src":"10999:614:87"},{"body":{"nativeSrc":"11747:145:87","nodeType":"YulBlock","src":"11747:145:87","statements":[{"nativeSrc":"11757:26:87","nodeType":"YulAssignment","src":"11757:26:87","value":{"arguments":[{"name":"headStart","nativeSrc":"11769:9:87","nodeType":"YulIdentifier","src":"11769:9:87"},{"kind":"number","nativeSrc":"11780:2:87","nodeType":"YulLiteral","src":"11780:2:87","type":"","value":"64"}],"functionName":{"name":"add","nativeSrc":"11765:3:87","nodeType":"YulIdentifier","src":"11765:3:87"},"nativeSrc":"11765:18:87","nodeType":"YulFunctionCall","src":"11765:18:87"},"variableNames":[{"name":"tail","nativeSrc":"11757:4:87","nodeType":"YulIdentifier","src":"11757:4:87"}]},{"expression":{"arguments":[{"name":"headStart","nativeSrc":"11799:9:87","nodeType":"YulIdentifier","src":"11799:9:87"},{"arguments":[{"name":"value0","nativeSrc":"11814:6:87","nodeType":"YulIdentifier","src":"11814:6:87"},{"arguments":[{"arguments":[{"kind":"number","nativeSrc":"11830:3:87","nodeType":"YulLiteral","src":"11830:3:87","type":"","value":"160"},{"kind":"number","nativeSrc":"11835:1:87","nodeType":"YulLiteral","src":"11835:1:87","type":"","value":"1"}],"functionName":{"name":"shl","nativeSrc":"11826:3:87","nodeType":"YulIdentifier","src":"11826:3:87"},"nativeSrc":"11826:11:87","nodeType":"YulFunctionCall","src":"11826:11:87"},{"kind":"number","nativeSrc":"11839:1:87","nodeType":"YulLiteral","src":"11839:1:87","type":"","value":"1"}],"functionName":{"name":"sub","nativeSrc":"11822:3:87","nodeType":"YulIdentifier","src":"11822:3:87"},"nativeSrc":"11822:19:87","nodeType":"YulFunctionCall","src":"11822:19:87"}],"functionName":{"name":"and","nativeSrc":"11810:3:87","nodeType":"YulIdentifier","src":"11810:3:87"},"nativeSrc":"11810:32:87","nodeType":"YulFunctionCall","src":"11810:32:87"}],"functionName":{"name":"mstore","nativeSrc":"11792:6:87","nodeType":"YulIdentifier","src":"11792:6:87"},"nativeSrc":"11792:51:87","nodeType":"YulFunctionCall","src":"11792:51:87"},"nativeSrc":"11792:51:87","nodeType":"YulExpressionStatement","src":"11792:51:87"},{"expression":{"arguments":[{"arguments":[{"name":"headStart","nativeSrc":"11863:9:87","nodeType":"YulIdentifier","src":"11863:9:87"},{"kind":"number","nativeSrc":"11874:2:87","nodeType":"YulLiteral","src":"11874:2:87","type":"","value":"32"}],"functionName":{"name":"add","nativeSrc":"11859:3:87","nodeType":"YulIdentifier","src":"11859:3:87"},"nativeSrc":"11859:18:87","nodeType":"YulFunctionCall","src":"11859:18:87"},{"name":"value1","nativeSrc":"11879:6:87","nodeType":"YulIdentifier","src":"11879:6:87"}],"functionName":{"name":"mstore","nativeSrc":"11852:6:87","nodeType":"YulIdentifier","src":"11852:6:87"},"nativeSrc":"11852:34:87","nodeType":"YulFunctionCall","src":"11852:34:87"},"nativeSrc":"11852:34:87","nodeType":"YulExpressionStatement","src":"11852:34:87"}]},"name":"abi_encode_tuple_t_address_t_uint256__to_t_address_t_uint256__fromStack_reversed","nativeSrc":"11618:274:87","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nativeSrc":"11708:9:87","nodeType":"YulTypedName","src":"11708:9:87","type":""},{"name":"value1","nativeSrc":"11719:6:87","nodeType":"YulTypedName","src":"11719:6:87","type":""},{"name":"value0","nativeSrc":"11727:6:87","nodeType":"YulTypedName","src":"11727:6:87","type":""}],"returnVariables":[{"name":"tail","nativeSrc":"11738:4:87","nodeType":"YulTypedName","src":"11738:4:87","type":""}],"src":"11618:274:87"},{"body":{"nativeSrc":"11975:167:87","nodeType":"YulBlock","src":"11975:167:87","statements":[{"body":{"nativeSrc":"12021:16:87","nodeType":"YulBlock","src":"12021:16:87","statements":[{"expression":{"arguments":[{"kind":"number","nativeSrc":"12030:1:87","nodeType":"YulLiteral","src":"12030:1:87","type":"","value":"0"},{"kind":"number","nativeSrc":"12033:1:87","nodeType":"YulLiteral","src":"12033:1:87","type":"","value":"0"}],"functionName":{"name":"revert","nativeSrc":"12023:6:87","nodeType":"YulIdentifier","src":"12023:6:87"},"nativeSrc":"12023:12:87","nodeType":"YulFunctionCall","src":"12023:12:87"},"nativeSrc":"12023:12:87","nodeType":"YulExpressionStatement","src":"12023:12:87"}]},"condition":{"arguments":[{"arguments":[{"name":"dataEnd","nativeSrc":"11996:7:87","nodeType":"YulIdentifier","src":"11996:7:87"},{"name":"headStart","nativeSrc":"12005:9:87","nodeType":"YulIdentifier","src":"12005:9:87"}],"functionName":{"name":"sub","nativeSrc":"11992:3:87","nodeType":"YulIdentifier","src":"11992:3:87"},"nativeSrc":"11992:23:87","nodeType":"YulFunctionCall","src":"11992:23:87"},{"kind":"number","nativeSrc":"12017:2:87","nodeType":"YulLiteral","src":"12017:2:87","type":"","value":"32"}],"functionName":{"name":"slt","nativeSrc":"11988:3:87","nodeType":"YulIdentifier","src":"11988:3:87"},"nativeSrc":"11988:32:87","nodeType":"YulFunctionCall","src":"11988:32:87"},"nativeSrc":"11985:52:87","nodeType":"YulIf","src":"11985:52:87"},{"nativeSrc":"12046:29:87","nodeType":"YulVariableDeclaration","src":"12046:29:87","value":{"arguments":[{"name":"headStart","nativeSrc":"12065:9:87","nodeType":"YulIdentifier","src":"12065:9:87"}],"functionName":{"name":"mload","nativeSrc":"12059:5:87","nodeType":"YulIdentifier","src":"12059:5:87"},"nativeSrc":"12059:16:87","nodeType":"YulFunctionCall","src":"12059:16:87"},"variables":[{"name":"value","nativeSrc":"12050:5:87","nodeType":"YulTypedName","src":"12050:5:87","type":""}]},{"expression":{"arguments":[{"name":"value","nativeSrc":"12106:5:87","nodeType":"YulIdentifier","src":"12106:5:87"}],"functionName":{"name":"validator_revert_bool","nativeSrc":"12084:21:87","nodeType":"YulIdentifier","src":"12084:21:87"},"nativeSrc":"12084:28:87","nodeType":"YulFunctionCall","src":"12084:28:87"},"nativeSrc":"12084:28:87","nodeType":"YulExpressionStatement","src":"12084:28:87"},{"nativeSrc":"12121:15:87","nodeType":"YulAssignment","src":"12121:15:87","value":{"name":"value","nativeSrc":"12131:5:87","nodeType":"YulIdentifier","src":"12131:5:87"},"variableNames":[{"name":"value0","nativeSrc":"12121:6:87","nodeType":"YulIdentifier","src":"12121:6:87"}]}]},"name":"abi_decode_tuple_t_bool_fromMemory","nativeSrc":"11897:245:87","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nativeSrc":"11941:9:87","nodeType":"YulTypedName","src":"11941:9:87","type":""},{"name":"dataEnd","nativeSrc":"11952:7:87","nodeType":"YulTypedName","src":"11952:7:87","type":""}],"returnVariables":[{"name":"value0","nativeSrc":"11964:6:87","nodeType":"YulTypedName","src":"11964:6:87","type":""}],"src":"11897:245:87"},{"body":{"nativeSrc":"12339:271:87","nodeType":"YulBlock","src":"12339:271:87","statements":[{"nativeSrc":"12349:27:87","nodeType":"YulAssignment","src":"12349:27:87","value":{"arguments":[{"name":"headStart","nativeSrc":"12361:9:87","nodeType":"YulIdentifier","src":"12361:9:87"},{"kind":"number","nativeSrc":"12372:3:87","nodeType":"YulLiteral","src":"12372:3:87","type":"","value":"128"}],"functionName":{"name":"add","nativeSrc":"12357:3:87","nodeType":"YulIdentifier","src":"12357:3:87"},"nativeSrc":"12357:19:87","nodeType":"YulFunctionCall","src":"12357:19:87"},"variableNames":[{"name":"tail","nativeSrc":"12349:4:87","nodeType":"YulIdentifier","src":"12349:4:87"}]},{"expression":{"arguments":[{"name":"headStart","nativeSrc":"12392:9:87","nodeType":"YulIdentifier","src":"12392:9:87"},{"arguments":[{"name":"value0","nativeSrc":"12407:6:87","nodeType":"YulIdentifier","src":"12407:6:87"},{"arguments":[{"arguments":[{"kind":"number","nativeSrc":"12423:3:87","nodeType":"YulLiteral","src":"12423:3:87","type":"","value":"160"},{"kind":"number","nativeSrc":"12428:1:87","nodeType":"YulLiteral","src":"12428:1:87","type":"","value":"1"}],"functionName":{"name":"shl","nativeSrc":"12419:3:87","nodeType":"YulIdentifier","src":"12419:3:87"},"nativeSrc":"12419:11:87","nodeType":"YulFunctionCall","src":"12419:11:87"},{"kind":"number","nativeSrc":"12432:1:87","nodeType":"YulLiteral","src":"12432:1:87","type":"","value":"1"}],"functionName":{"name":"sub","nativeSrc":"12415:3:87","nodeType":"YulIdentifier","src":"12415:3:87"},"nativeSrc":"12415:19:87","nodeType":"YulFunctionCall","src":"12415:19:87"}],"functionName":{"name":"and","nativeSrc":"12403:3:87","nodeType":"YulIdentifier","src":"12403:3:87"},"nativeSrc":"12403:32:87","nodeType":"YulFunctionCall","src":"12403:32:87"}],"functionName":{"name":"mstore","nativeSrc":"12385:6:87","nodeType":"YulIdentifier","src":"12385:6:87"},"nativeSrc":"12385:51:87","nodeType":"YulFunctionCall","src":"12385:51:87"},"nativeSrc":"12385:51:87","nodeType":"YulExpressionStatement","src":"12385:51:87"},{"expression":{"arguments":[{"arguments":[{"name":"headStart","nativeSrc":"12456:9:87","nodeType":"YulIdentifier","src":"12456:9:87"},{"kind":"number","nativeSrc":"12467:2:87","nodeType":"YulLiteral","src":"12467:2:87","type":"","value":"32"}],"functionName":{"name":"add","nativeSrc":"12452:3:87","nodeType":"YulIdentifier","src":"12452:3:87"},"nativeSrc":"12452:18:87","nodeType":"YulFunctionCall","src":"12452:18:87"},{"name":"value1","nativeSrc":"12472:6:87","nodeType":"YulIdentifier","src":"12472:6:87"}],"functionName":{"name":"mstore","nativeSrc":"12445:6:87","nodeType":"YulIdentifier","src":"12445:6:87"},"nativeSrc":"12445:34:87","nodeType":"YulFunctionCall","src":"12445:34:87"},"nativeSrc":"12445:34:87","nodeType":"YulExpressionStatement","src":"12445:34:87"},{"expression":{"arguments":[{"arguments":[{"name":"headStart","nativeSrc":"12499:9:87","nodeType":"YulIdentifier","src":"12499:9:87"},{"kind":"number","nativeSrc":"12510:2:87","nodeType":"YulLiteral","src":"12510:2:87","type":"","value":"64"}],"functionName":{"name":"add","nativeSrc":"12495:3:87","nodeType":"YulIdentifier","src":"12495:3:87"},"nativeSrc":"12495:18:87","nodeType":"YulFunctionCall","src":"12495:18:87"},{"arguments":[{"name":"value2","nativeSrc":"12519:6:87","nodeType":"YulIdentifier","src":"12519:6:87"},{"arguments":[{"arguments":[{"kind":"number","nativeSrc":"12535:3:87","nodeType":"YulLiteral","src":"12535:3:87","type":"","value":"160"},{"kind":"number","nativeSrc":"12540:1:87","nodeType":"YulLiteral","src":"12540:1:87","type":"","value":"1"}],"functionName":{"name":"shl","nativeSrc":"12531:3:87","nodeType":"YulIdentifier","src":"12531:3:87"},"nativeSrc":"12531:11:87","nodeType":"YulFunctionCall","src":"12531:11:87"},{"kind":"number","nativeSrc":"12544:1:87","nodeType":"YulLiteral","src":"12544:1:87","type":"","value":"1"}],"functionName":{"name":"sub","nativeSrc":"12527:3:87","nodeType":"YulIdentifier","src":"12527:3:87"},"nativeSrc":"12527:19:87","nodeType":"YulFunctionCall","src":"12527:19:87"}],"functionName":{"name":"and","nativeSrc":"12515:3:87","nodeType":"YulIdentifier","src":"12515:3:87"},"nativeSrc":"12515:32:87","nodeType":"YulFunctionCall","src":"12515:32:87"}],"functionName":{"name":"mstore","nativeSrc":"12488:6:87","nodeType":"YulIdentifier","src":"12488:6:87"},"nativeSrc":"12488:60:87","nodeType":"YulFunctionCall","src":"12488:60:87"},"nativeSrc":"12488:60:87","nodeType":"YulExpressionStatement","src":"12488:60:87"},{"expression":{"arguments":[{"arguments":[{"name":"headStart","nativeSrc":"12568:9:87","nodeType":"YulIdentifier","src":"12568:9:87"},{"kind":"number","nativeSrc":"12579:2:87","nodeType":"YulLiteral","src":"12579:2:87","type":"","value":"96"}],"functionName":{"name":"add","nativeSrc":"12564:3:87","nodeType":"YulIdentifier","src":"12564:3:87"},"nativeSrc":"12564:18:87","nodeType":"YulFunctionCall","src":"12564:18:87"},{"arguments":[{"name":"value3","nativeSrc":"12588:6:87","nodeType":"YulIdentifier","src":"12588:6:87"},{"kind":"number","nativeSrc":"12596:6:87","nodeType":"YulLiteral","src":"12596:6:87","type":"","value":"0xffff"}],"functionName":{"name":"and","nativeSrc":"12584:3:87","nodeType":"YulIdentifier","src":"12584:3:87"},"nativeSrc":"12584:19:87","nodeType":"YulFunctionCall","src":"12584:19:87"}],"functionName":{"name":"mstore","nativeSrc":"12557:6:87","nodeType":"YulIdentifier","src":"12557:6:87"},"nativeSrc":"12557:47:87","nodeType":"YulFunctionCall","src":"12557:47:87"},"nativeSrc":"12557:47:87","nodeType":"YulExpressionStatement","src":"12557:47:87"}]},"name":"abi_encode_tuple_t_address_t_uint256_t_address_t_rational_0_by_1__to_t_address_t_uint256_t_address_t_uint16__fromStack_reversed","nativeSrc":"12147:463:87","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nativeSrc":"12284:9:87","nodeType":"YulTypedName","src":"12284:9:87","type":""},{"name":"value3","nativeSrc":"12295:6:87","nodeType":"YulTypedName","src":"12295:6:87","type":""},{"name":"value2","nativeSrc":"12303:6:87","nodeType":"YulTypedName","src":"12303:6:87","type":""},{"name":"value1","nativeSrc":"12311:6:87","nodeType":"YulTypedName","src":"12311:6:87","type":""},{"name":"value0","nativeSrc":"12319:6:87","nodeType":"YulTypedName","src":"12319:6:87","type":""}],"returnVariables":[{"name":"tail","nativeSrc":"12330:4:87","nodeType":"YulTypedName","src":"12330:4:87","type":""}],"src":"12147:463:87"},{"body":{"nativeSrc":"12706:407:87","nodeType":"YulBlock","src":"12706:407:87","statements":[{"body":{"nativeSrc":"12750:16:87","nodeType":"YulBlock","src":"12750:16:87","statements":[{"expression":{"arguments":[{"kind":"number","nativeSrc":"12759:1:87","nodeType":"YulLiteral","src":"12759:1:87","type":"","value":"0"},{"kind":"number","nativeSrc":"12762:1:87","nodeType":"YulLiteral","src":"12762:1:87","type":"","value":"0"}],"functionName":{"name":"revert","nativeSrc":"12752:6:87","nodeType":"YulIdentifier","src":"12752:6:87"},"nativeSrc":"12752:12:87","nodeType":"YulFunctionCall","src":"12752:12:87"},"nativeSrc":"12752:12:87","nodeType":"YulExpressionStatement","src":"12752:12:87"}]},"condition":{"arguments":[{"arguments":[{"name":"end","nativeSrc":"12727:3:87","nodeType":"YulIdentifier","src":"12727:3:87"},{"name":"headStart","nativeSrc":"12732:9:87","nodeType":"YulIdentifier","src":"12732:9:87"}],"functionName":{"name":"sub","nativeSrc":"12723:3:87","nodeType":"YulIdentifier","src":"12723:3:87"},"nativeSrc":"12723:19:87","nodeType":"YulFunctionCall","src":"12723:19:87"},{"kind":"number","nativeSrc":"12744:4:87","nodeType":"YulLiteral","src":"12744:4:87","type":"","value":"0x20"}],"functionName":{"name":"slt","nativeSrc":"12719:3:87","nodeType":"YulIdentifier","src":"12719:3:87"},"nativeSrc":"12719:30:87","nodeType":"YulFunctionCall","src":"12719:30:87"},"nativeSrc":"12716:50:87","nodeType":"YulIf","src":"12716:50:87"},{"nativeSrc":"12775:15:87","nodeType":"YulVariableDeclaration","src":"12775:15:87","value":{"kind":"number","nativeSrc":"12789:1:87","nodeType":"YulLiteral","src":"12789:1:87","type":"","value":"0"},"variables":[{"name":"memPtr","nativeSrc":"12779:6:87","nodeType":"YulTypedName","src":"12779:6:87","type":""}]},{"nativeSrc":"12799:19:87","nodeType":"YulAssignment","src":"12799:19:87","value":{"arguments":[{"kind":"number","nativeSrc":"12815:2:87","nodeType":"YulLiteral","src":"12815:2:87","type":"","value":"64"}],"functionName":{"name":"mload","nativeSrc":"12809:5:87","nodeType":"YulIdentifier","src":"12809:5:87"},"nativeSrc":"12809:9:87","nodeType":"YulFunctionCall","src":"12809:9:87"},"variableNames":[{"name":"memPtr","nativeSrc":"12799:6:87","nodeType":"YulIdentifier","src":"12799:6:87"}]},{"nativeSrc":"12827:35:87","nodeType":"YulVariableDeclaration","src":"12827:35:87","value":{"arguments":[{"name":"memPtr","nativeSrc":"12849:6:87","nodeType":"YulIdentifier","src":"12849:6:87"},{"kind":"number","nativeSrc":"12857:4:87","nodeType":"YulLiteral","src":"12857:4:87","type":"","value":"0x20"}],"functionName":{"name":"add","nativeSrc":"12845:3:87","nodeType":"YulIdentifier","src":"12845:3:87"},"nativeSrc":"12845:17:87","nodeType":"YulFunctionCall","src":"12845:17:87"},"variables":[{"name":"newFreePtr","nativeSrc":"12831:10:87","nodeType":"YulTypedName","src":"12831:10:87","type":""}]},{"body":{"nativeSrc":"12937:22:87","nodeType":"YulBlock","src":"12937:22:87","statements":[{"expression":{"arguments":[],"functionName":{"name":"panic_error_0x41","nativeSrc":"12939:16:87","nodeType":"YulIdentifier","src":"12939:16:87"},"nativeSrc":"12939:18:87","nodeType":"YulFunctionCall","src":"12939:18:87"},"nativeSrc":"12939:18:87","nodeType":"YulExpressionStatement","src":"12939:18:87"}]},"condition":{"arguments":[{"arguments":[{"name":"newFreePtr","nativeSrc":"12880:10:87","nodeType":"YulIdentifier","src":"12880:10:87"},{"kind":"number","nativeSrc":"12892:18:87","nodeType":"YulLiteral","src":"12892:18:87","type":"","value":"0xffffffffffffffff"}],"functionName":{"name":"gt","nativeSrc":"12877:2:87","nodeType":"YulIdentifier","src":"12877:2:87"},"nativeSrc":"12877:34:87","nodeType":"YulFunctionCall","src":"12877:34:87"},{"arguments":[{"name":"newFreePtr","nativeSrc":"12916:10:87","nodeType":"YulIdentifier","src":"12916:10:87"},{"name":"memPtr","nativeSrc":"12928:6:87","nodeType":"YulIdentifier","src":"12928:6:87"}],"functionName":{"name":"lt","nativeSrc":"12913:2:87","nodeType":"YulIdentifier","src":"12913:2:87"},"nativeSrc":"12913:22:87","nodeType":"YulFunctionCall","src":"12913:22:87"}],"functionName":{"name":"or","nativeSrc":"12874:2:87","nodeType":"YulIdentifier","src":"12874:2:87"},"nativeSrc":"12874:62:87","nodeType":"YulFunctionCall","src":"12874:62:87"},"nativeSrc":"12871:88:87","nodeType":"YulIf","src":"12871:88:87"},{"expression":{"arguments":[{"kind":"number","nativeSrc":"12975:2:87","nodeType":"YulLiteral","src":"12975:2:87","type":"","value":"64"},{"name":"newFreePtr","nativeSrc":"12979:10:87","nodeType":"YulIdentifier","src":"12979:10:87"}],"functionName":{"name":"mstore","nativeSrc":"12968:6:87","nodeType":"YulIdentifier","src":"12968:6:87"},"nativeSrc":"12968:22:87","nodeType":"YulFunctionCall","src":"12968:22:87"},"nativeSrc":"12968:22:87","nodeType":"YulExpressionStatement","src":"12968:22:87"},{"nativeSrc":"12999:15:87","nodeType":"YulAssignment","src":"12999:15:87","value":{"name":"memPtr","nativeSrc":"13008:6:87","nodeType":"YulIdentifier","src":"13008:6:87"},"variableNames":[{"name":"value","nativeSrc":"12999:5:87","nodeType":"YulIdentifier","src":"12999:5:87"}]},{"nativeSrc":"13023:16:87","nodeType":"YulVariableDeclaration","src":"13023:16:87","value":{"kind":"number","nativeSrc":"13038:1:87","nodeType":"YulLiteral","src":"13038:1:87","type":"","value":"0"},"variables":[{"name":"value_1","nativeSrc":"13027:7:87","nodeType":"YulTypedName","src":"13027:7:87","type":""}]},{"nativeSrc":"13048:27:87","nodeType":"YulAssignment","src":"13048:27:87","value":{"arguments":[{"name":"headStart","nativeSrc":"13065:9:87","nodeType":"YulIdentifier","src":"13065:9:87"}],"functionName":{"name":"mload","nativeSrc":"13059:5:87","nodeType":"YulIdentifier","src":"13059:5:87"},"nativeSrc":"13059:16:87","nodeType":"YulFunctionCall","src":"13059:16:87"},"variableNames":[{"name":"value_1","nativeSrc":"13048:7:87","nodeType":"YulIdentifier","src":"13048:7:87"}]},{"expression":{"arguments":[{"name":"memPtr","nativeSrc":"13091:6:87","nodeType":"YulIdentifier","src":"13091:6:87"},{"name":"value_1","nativeSrc":"13099:7:87","nodeType":"YulIdentifier","src":"13099:7:87"}],"functionName":{"name":"mstore","nativeSrc":"13084:6:87","nodeType":"YulIdentifier","src":"13084:6:87"},"nativeSrc":"13084:23:87","nodeType":"YulFunctionCall","src":"13084:23:87"},"nativeSrc":"13084:23:87","nodeType":"YulExpressionStatement","src":"13084:23:87"}]},"name":"abi_decode_struct_ReserveConfigurationMap_fromMemory","nativeSrc":"12615:498:87","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nativeSrc":"12677:9:87","nodeType":"YulTypedName","src":"12677:9:87","type":""},{"name":"end","nativeSrc":"12688:3:87","nodeType":"YulTypedName","src":"12688:3:87","type":""}],"returnVariables":[{"name":"value","nativeSrc":"12696:5:87","nodeType":"YulTypedName","src":"12696:5:87","type":""}],"src":"12615:498:87"},{"body":{"nativeSrc":"13178:132:87","nodeType":"YulBlock","src":"13178:132:87","statements":[{"nativeSrc":"13188:22:87","nodeType":"YulAssignment","src":"13188:22:87","value":{"arguments":[{"name":"offset","nativeSrc":"13203:6:87","nodeType":"YulIdentifier","src":"13203:6:87"}],"functionName":{"name":"mload","nativeSrc":"13197:5:87","nodeType":"YulIdentifier","src":"13197:5:87"},"nativeSrc":"13197:13:87","nodeType":"YulFunctionCall","src":"13197:13:87"},"variableNames":[{"name":"value","nativeSrc":"13188:5:87","nodeType":"YulIdentifier","src":"13188:5:87"}]},{"body":{"nativeSrc":"13288:16:87","nodeType":"YulBlock","src":"13288:16:87","statements":[{"expression":{"arguments":[{"kind":"number","nativeSrc":"13297:1:87","nodeType":"YulLiteral","src":"13297:1:87","type":"","value":"0"},{"kind":"number","nativeSrc":"13300:1:87","nodeType":"YulLiteral","src":"13300:1:87","type":"","value":"0"}],"functionName":{"name":"revert","nativeSrc":"13290:6:87","nodeType":"YulIdentifier","src":"13290:6:87"},"nativeSrc":"13290:12:87","nodeType":"YulFunctionCall","src":"13290:12:87"},"nativeSrc":"13290:12:87","nodeType":"YulExpressionStatement","src":"13290:12:87"}]},"condition":{"arguments":[{"arguments":[{"name":"value","nativeSrc":"13232:5:87","nodeType":"YulIdentifier","src":"13232:5:87"},{"arguments":[{"name":"value","nativeSrc":"13243:5:87","nodeType":"YulIdentifier","src":"13243:5:87"},{"kind":"number","nativeSrc":"13250:34:87","nodeType":"YulLiteral","src":"13250:34:87","type":"","value":"0xffffffffffffffffffffffffffffffff"}],"functionName":{"name":"and","nativeSrc":"13239:3:87","nodeType":"YulIdentifier","src":"13239:3:87"},"nativeSrc":"13239:46:87","nodeType":"YulFunctionCall","src":"13239:46:87"}],"functionName":{"name":"eq","nativeSrc":"13229:2:87","nodeType":"YulIdentifier","src":"13229:2:87"},"nativeSrc":"13229:57:87","nodeType":"YulFunctionCall","src":"13229:57:87"}],"functionName":{"name":"iszero","nativeSrc":"13222:6:87","nodeType":"YulIdentifier","src":"13222:6:87"},"nativeSrc":"13222:65:87","nodeType":"YulFunctionCall","src":"13222:65:87"},"nativeSrc":"13219:85:87","nodeType":"YulIf","src":"13219:85:87"}]},"name":"abi_decode_uint128_fromMemory","nativeSrc":"13118:192:87","nodeType":"YulFunctionDefinition","parameters":[{"name":"offset","nativeSrc":"13157:6:87","nodeType":"YulTypedName","src":"13157:6:87","type":""}],"returnVariables":[{"name":"value","nativeSrc":"13168:5:87","nodeType":"YulTypedName","src":"13168:5:87","type":""}],"src":"13118:192:87"},{"body":{"nativeSrc":"13374:110:87","nodeType":"YulBlock","src":"13374:110:87","statements":[{"nativeSrc":"13384:22:87","nodeType":"YulAssignment","src":"13384:22:87","value":{"arguments":[{"name":"offset","nativeSrc":"13399:6:87","nodeType":"YulIdentifier","src":"13399:6:87"}],"functionName":{"name":"mload","nativeSrc":"13393:5:87","nodeType":"YulIdentifier","src":"13393:5:87"},"nativeSrc":"13393:13:87","nodeType":"YulFunctionCall","src":"13393:13:87"},"variableNames":[{"name":"value","nativeSrc":"13384:5:87","nodeType":"YulIdentifier","src":"13384:5:87"}]},{"body":{"nativeSrc":"13462:16:87","nodeType":"YulBlock","src":"13462:16:87","statements":[{"expression":{"arguments":[{"kind":"number","nativeSrc":"13471:1:87","nodeType":"YulLiteral","src":"13471:1:87","type":"","value":"0"},{"kind":"number","nativeSrc":"13474:1:87","nodeType":"YulLiteral","src":"13474:1:87","type":"","value":"0"}],"functionName":{"name":"revert","nativeSrc":"13464:6:87","nodeType":"YulIdentifier","src":"13464:6:87"},"nativeSrc":"13464:12:87","nodeType":"YulFunctionCall","src":"13464:12:87"},"nativeSrc":"13464:12:87","nodeType":"YulExpressionStatement","src":"13464:12:87"}]},"condition":{"arguments":[{"arguments":[{"name":"value","nativeSrc":"13428:5:87","nodeType":"YulIdentifier","src":"13428:5:87"},{"arguments":[{"name":"value","nativeSrc":"13439:5:87","nodeType":"YulIdentifier","src":"13439:5:87"},{"kind":"number","nativeSrc":"13446:12:87","nodeType":"YulLiteral","src":"13446:12:87","type":"","value":"0xffffffffff"}],"functionName":{"name":"and","nativeSrc":"13435:3:87","nodeType":"YulIdentifier","src":"13435:3:87"},"nativeSrc":"13435:24:87","nodeType":"YulFunctionCall","src":"13435:24:87"}],"functionName":{"name":"eq","nativeSrc":"13425:2:87","nodeType":"YulIdentifier","src":"13425:2:87"},"nativeSrc":"13425:35:87","nodeType":"YulFunctionCall","src":"13425:35:87"}],"functionName":{"name":"iszero","nativeSrc":"13418:6:87","nodeType":"YulIdentifier","src":"13418:6:87"},"nativeSrc":"13418:43:87","nodeType":"YulFunctionCall","src":"13418:43:87"},"nativeSrc":"13415:63:87","nodeType":"YulIf","src":"13415:63:87"}]},"name":"abi_decode_uint40_fromMemory","nativeSrc":"13315:169:87","nodeType":"YulFunctionDefinition","parameters":[{"name":"offset","nativeSrc":"13353:6:87","nodeType":"YulTypedName","src":"13353:6:87","type":""}],"returnVariables":[{"name":"value","nativeSrc":"13364:5:87","nodeType":"YulTypedName","src":"13364:5:87","type":""}],"src":"13315:169:87"},{"body":{"nativeSrc":"13548:104:87","nodeType":"YulBlock","src":"13548:104:87","statements":[{"nativeSrc":"13558:22:87","nodeType":"YulAssignment","src":"13558:22:87","value":{"arguments":[{"name":"offset","nativeSrc":"13573:6:87","nodeType":"YulIdentifier","src":"13573:6:87"}],"functionName":{"name":"mload","nativeSrc":"13567:5:87","nodeType":"YulIdentifier","src":"13567:5:87"},"nativeSrc":"13567:13:87","nodeType":"YulFunctionCall","src":"13567:13:87"},"variableNames":[{"name":"value","nativeSrc":"13558:5:87","nodeType":"YulIdentifier","src":"13558:5:87"}]},{"body":{"nativeSrc":"13630:16:87","nodeType":"YulBlock","src":"13630:16:87","statements":[{"expression":{"arguments":[{"kind":"number","nativeSrc":"13639:1:87","nodeType":"YulLiteral","src":"13639:1:87","type":"","value":"0"},{"kind":"number","nativeSrc":"13642:1:87","nodeType":"YulLiteral","src":"13642:1:87","type":"","value":"0"}],"functionName":{"name":"revert","nativeSrc":"13632:6:87","nodeType":"YulIdentifier","src":"13632:6:87"},"nativeSrc":"13632:12:87","nodeType":"YulFunctionCall","src":"13632:12:87"},"nativeSrc":"13632:12:87","nodeType":"YulExpressionStatement","src":"13632:12:87"}]},"condition":{"arguments":[{"arguments":[{"name":"value","nativeSrc":"13602:5:87","nodeType":"YulIdentifier","src":"13602:5:87"},{"arguments":[{"name":"value","nativeSrc":"13613:5:87","nodeType":"YulIdentifier","src":"13613:5:87"},{"kind":"number","nativeSrc":"13620:6:87","nodeType":"YulLiteral","src":"13620:6:87","type":"","value":"0xffff"}],"functionName":{"name":"and","nativeSrc":"13609:3:87","nodeType":"YulIdentifier","src":"13609:3:87"},"nativeSrc":"13609:18:87","nodeType":"YulFunctionCall","src":"13609:18:87"}],"functionName":{"name":"eq","nativeSrc":"13599:2:87","nodeType":"YulIdentifier","src":"13599:2:87"},"nativeSrc":"13599:29:87","nodeType":"YulFunctionCall","src":"13599:29:87"}],"functionName":{"name":"iszero","nativeSrc":"13592:6:87","nodeType":"YulIdentifier","src":"13592:6:87"},"nativeSrc":"13592:37:87","nodeType":"YulFunctionCall","src":"13592:37:87"},"nativeSrc":"13589:57:87","nodeType":"YulIf","src":"13589:57:87"}]},"name":"abi_decode_uint16_fromMemory","nativeSrc":"13489:163:87","nodeType":"YulFunctionDefinition","parameters":[{"name":"offset","nativeSrc":"13527:6:87","nodeType":"YulTypedName","src":"13527:6:87","type":""}],"returnVariables":[{"name":"value","nativeSrc":"13538:5:87","nodeType":"YulTypedName","src":"13538:5:87","type":""}],"src":"13489:163:87"},{"body":{"nativeSrc":"13717:78:87","nodeType":"YulBlock","src":"13717:78:87","statements":[{"nativeSrc":"13727:22:87","nodeType":"YulAssignment","src":"13727:22:87","value":{"arguments":[{"name":"offset","nativeSrc":"13742:6:87","nodeType":"YulIdentifier","src":"13742:6:87"}],"functionName":{"name":"mload","nativeSrc":"13736:5:87","nodeType":"YulIdentifier","src":"13736:5:87"},"nativeSrc":"13736:13:87","nodeType":"YulFunctionCall","src":"13736:13:87"},"variableNames":[{"name":"value","nativeSrc":"13727:5:87","nodeType":"YulIdentifier","src":"13727:5:87"}]},{"expression":{"arguments":[{"name":"value","nativeSrc":"13783:5:87","nodeType":"YulIdentifier","src":"13783:5:87"}],"functionName":{"name":"validator_revert_address","nativeSrc":"13758:24:87","nodeType":"YulIdentifier","src":"13758:24:87"},"nativeSrc":"13758:31:87","nodeType":"YulFunctionCall","src":"13758:31:87"},"nativeSrc":"13758:31:87","nodeType":"YulExpressionStatement","src":"13758:31:87"}]},"name":"abi_decode_address_fromMemory","nativeSrc":"13657:138:87","nodeType":"YulFunctionDefinition","parameters":[{"name":"offset","nativeSrc":"13696:6:87","nodeType":"YulTypedName","src":"13696:6:87","type":""}],"returnVariables":[{"name":"value","nativeSrc":"13707:5:87","nodeType":"YulTypedName","src":"13707:5:87","type":""}],"src":"13657:138:87"},{"body":{"nativeSrc":"13911:1438:87","nodeType":"YulBlock","src":"13911:1438:87","statements":[{"nativeSrc":"13921:43:87","nodeType":"YulVariableDeclaration","src":"13921:43:87","value":{"arguments":[{"arguments":[{"name":"dataEnd","nativeSrc":"13939:7:87","nodeType":"YulIdentifier","src":"13939:7:87"},{"name":"headStart","nativeSrc":"13948:9:87","nodeType":"YulIdentifier","src":"13948:9:87"}],"functionName":{"name":"sub","nativeSrc":"13935:3:87","nodeType":"YulIdentifier","src":"13935:3:87"},"nativeSrc":"13935:23:87","nodeType":"YulFunctionCall","src":"13935:23:87"},{"kind":"number","nativeSrc":"13960:3:87","nodeType":"YulLiteral","src":"13960:3:87","type":"","value":"480"}],"functionName":{"name":"slt","nativeSrc":"13931:3:87","nodeType":"YulIdentifier","src":"13931:3:87"},"nativeSrc":"13931:33:87","nodeType":"YulFunctionCall","src":"13931:33:87"},"variables":[{"name":"_1","nativeSrc":"13925:2:87","nodeType":"YulTypedName","src":"13925:2:87","type":""}]},{"body":{"nativeSrc":"13979:16:87","nodeType":"YulBlock","src":"13979:16:87","statements":[{"expression":{"arguments":[{"kind":"number","nativeSrc":"13988:1:87","nodeType":"YulLiteral","src":"13988:1:87","type":"","value":"0"},{"kind":"number","nativeSrc":"13991:1:87","nodeType":"YulLiteral","src":"13991:1:87","type":"","value":"0"}],"functionName":{"name":"revert","nativeSrc":"13981:6:87","nodeType":"YulIdentifier","src":"13981:6:87"},"nativeSrc":"13981:12:87","nodeType":"YulFunctionCall","src":"13981:12:87"},"nativeSrc":"13981:12:87","nodeType":"YulExpressionStatement","src":"13981:12:87"}]},"condition":{"name":"_1","nativeSrc":"13976:2:87","nodeType":"YulIdentifier","src":"13976:2:87"},"nativeSrc":"13973:22:87","nodeType":"YulIf","src":"13973:22:87"},{"nativeSrc":"14004:7:87","nodeType":"YulAssignment","src":"14004:7:87","value":{"kind":"number","nativeSrc":"14010:1:87","nodeType":"YulLiteral","src":"14010:1:87","type":"","value":"0"},"variableNames":[{"name":"_1","nativeSrc":"14004:2:87","nodeType":"YulIdentifier","src":"14004:2:87"}]},{"nativeSrc":"14020:35:87","nodeType":"YulVariableDeclaration","src":"14020:35:87","value":{"arguments":[],"functionName":{"name":"allocate_memory_2008","nativeSrc":"14033:20:87","nodeType":"YulIdentifier","src":"14033:20:87"},"nativeSrc":"14033:22:87","nodeType":"YulFunctionCall","src":"14033:22:87"},"variables":[{"name":"value","nativeSrc":"14024:5:87","nodeType":"YulTypedName","src":"14024:5:87","type":""}]},{"expression":{"arguments":[{"name":"value","nativeSrc":"14071:5:87","nodeType":"YulIdentifier","src":"14071:5:87"},{"arguments":[{"name":"headStart","nativeSrc":"14131:9:87","nodeType":"YulIdentifier","src":"14131:9:87"},{"name":"dataEnd","nativeSrc":"14142:7:87","nodeType":"YulIdentifier","src":"14142:7:87"}],"functionName":{"name":"abi_decode_struct_ReserveConfigurationMap_fromMemory","nativeSrc":"14078:52:87","nodeType":"YulIdentifier","src":"14078:52:87"},"nativeSrc":"14078:72:87","nodeType":"YulFunctionCall","src":"14078:72:87"}],"functionName":{"name":"mstore","nativeSrc":"14064:6:87","nodeType":"YulIdentifier","src":"14064:6:87"},"nativeSrc":"14064:87:87","nodeType":"YulFunctionCall","src":"14064:87:87"},"nativeSrc":"14064:87:87","nodeType":"YulExpressionStatement","src":"14064:87:87"},{"expression":{"arguments":[{"arguments":[{"name":"value","nativeSrc":"14171:5:87","nodeType":"YulIdentifier","src":"14171:5:87"},{"kind":"number","nativeSrc":"14178:2:87","nodeType":"YulLiteral","src":"14178:2:87","type":"","value":"32"}],"functionName":{"name":"add","nativeSrc":"14167:3:87","nodeType":"YulIdentifier","src":"14167:3:87"},"nativeSrc":"14167:14:87","nodeType":"YulFunctionCall","src":"14167:14:87"},{"arguments":[{"arguments":[{"name":"headStart","nativeSrc":"14217:9:87","nodeType":"YulIdentifier","src":"14217:9:87"},{"kind":"number","nativeSrc":"14228:2:87","nodeType":"YulLiteral","src":"14228:2:87","type":"","value":"32"}],"functionName":{"name":"add","nativeSrc":"14213:3:87","nodeType":"YulIdentifier","src":"14213:3:87"},"nativeSrc":"14213:18:87","nodeType":"YulFunctionCall","src":"14213:18:87"}],"functionName":{"name":"abi_decode_uint128_fromMemory","nativeSrc":"14183:29:87","nodeType":"YulIdentifier","src":"14183:29:87"},"nativeSrc":"14183:49:87","nodeType":"YulFunctionCall","src":"14183:49:87"}],"functionName":{"name":"mstore","nativeSrc":"14160:6:87","nodeType":"YulIdentifier","src":"14160:6:87"},"nativeSrc":"14160:73:87","nodeType":"YulFunctionCall","src":"14160:73:87"},"nativeSrc":"14160:73:87","nodeType":"YulExpressionStatement","src":"14160:73:87"},{"expression":{"arguments":[{"arguments":[{"name":"value","nativeSrc":"14253:5:87","nodeType":"YulIdentifier","src":"14253:5:87"},{"kind":"number","nativeSrc":"14260:2:87","nodeType":"YulLiteral","src":"14260:2:87","type":"","value":"64"}],"functionName":{"name":"add","nativeSrc":"14249:3:87","nodeType":"YulIdentifier","src":"14249:3:87"},"nativeSrc":"14249:14:87","nodeType":"YulFunctionCall","src":"14249:14:87"},{"arguments":[{"arguments":[{"name":"headStart","nativeSrc":"14299:9:87","nodeType":"YulIdentifier","src":"14299:9:87"},{"kind":"number","nativeSrc":"14310:2:87","nodeType":"YulLiteral","src":"14310:2:87","type":"","value":"64"}],"functionName":{"name":"add","nativeSrc":"14295:3:87","nodeType":"YulIdentifier","src":"14295:3:87"},"nativeSrc":"14295:18:87","nodeType":"YulFunctionCall","src":"14295:18:87"}],"functionName":{"name":"abi_decode_uint128_fromMemory","nativeSrc":"14265:29:87","nodeType":"YulIdentifier","src":"14265:29:87"},"nativeSrc":"14265:49:87","nodeType":"YulFunctionCall","src":"14265:49:87"}],"functionName":{"name":"mstore","nativeSrc":"14242:6:87","nodeType":"YulIdentifier","src":"14242:6:87"},"nativeSrc":"14242:73:87","nodeType":"YulFunctionCall","src":"14242:73:87"},"nativeSrc":"14242:73:87","nodeType":"YulExpressionStatement","src":"14242:73:87"},{"expression":{"arguments":[{"arguments":[{"name":"value","nativeSrc":"14335:5:87","nodeType":"YulIdentifier","src":"14335:5:87"},{"kind":"number","nativeSrc":"14342:2:87","nodeType":"YulLiteral","src":"14342:2:87","type":"","value":"96"}],"functionName":{"name":"add","nativeSrc":"14331:3:87","nodeType":"YulIdentifier","src":"14331:3:87"},"nativeSrc":"14331:14:87","nodeType":"YulFunctionCall","src":"14331:14:87"},{"arguments":[{"arguments":[{"name":"headStart","nativeSrc":"14381:9:87","nodeType":"YulIdentifier","src":"14381:9:87"},{"kind":"number","nativeSrc":"14392:2:87","nodeType":"YulLiteral","src":"14392:2:87","type":"","value":"96"}],"functionName":{"name":"add","nativeSrc":"14377:3:87","nodeType":"YulIdentifier","src":"14377:3:87"},"nativeSrc":"14377:18:87","nodeType":"YulFunctionCall","src":"14377:18:87"}],"functionName":{"name":"abi_decode_uint128_fromMemory","nativeSrc":"14347:29:87","nodeType":"YulIdentifier","src":"14347:29:87"},"nativeSrc":"14347:49:87","nodeType":"YulFunctionCall","src":"14347:49:87"}],"functionName":{"name":"mstore","nativeSrc":"14324:6:87","nodeType":"YulIdentifier","src":"14324:6:87"},"nativeSrc":"14324:73:87","nodeType":"YulFunctionCall","src":"14324:73:87"},"nativeSrc":"14324:73:87","nodeType":"YulExpressionStatement","src":"14324:73:87"},{"expression":{"arguments":[{"arguments":[{"name":"value","nativeSrc":"14417:5:87","nodeType":"YulIdentifier","src":"14417:5:87"},{"kind":"number","nativeSrc":"14424:3:87","nodeType":"YulLiteral","src":"14424:3:87","type":"","value":"128"}],"functionName":{"name":"add","nativeSrc":"14413:3:87","nodeType":"YulIdentifier","src":"14413:3:87"},"nativeSrc":"14413:15:87","nodeType":"YulFunctionCall","src":"14413:15:87"},{"arguments":[{"arguments":[{"name":"headStart","nativeSrc":"14464:9:87","nodeType":"YulIdentifier","src":"14464:9:87"},{"kind":"number","nativeSrc":"14475:3:87","nodeType":"YulLiteral","src":"14475:3:87","type":"","value":"128"}],"functionName":{"name":"add","nativeSrc":"14460:3:87","nodeType":"YulIdentifier","src":"14460:3:87"},"nativeSrc":"14460:19:87","nodeType":"YulFunctionCall","src":"14460:19:87"}],"functionName":{"name":"abi_decode_uint128_fromMemory","nativeSrc":"14430:29:87","nodeType":"YulIdentifier","src":"14430:29:87"},"nativeSrc":"14430:50:87","nodeType":"YulFunctionCall","src":"14430:50:87"}],"functionName":{"name":"mstore","nativeSrc":"14406:6:87","nodeType":"YulIdentifier","src":"14406:6:87"},"nativeSrc":"14406:75:87","nodeType":"YulFunctionCall","src":"14406:75:87"},"nativeSrc":"14406:75:87","nodeType":"YulExpressionStatement","src":"14406:75:87"},{"expression":{"arguments":[{"arguments":[{"name":"value","nativeSrc":"14501:5:87","nodeType":"YulIdentifier","src":"14501:5:87"},{"kind":"number","nativeSrc":"14508:3:87","nodeType":"YulLiteral","src":"14508:3:87","type":"","value":"160"}],"functionName":{"name":"add","nativeSrc":"14497:3:87","nodeType":"YulIdentifier","src":"14497:3:87"},"nativeSrc":"14497:15:87","nodeType":"YulFunctionCall","src":"14497:15:87"},{"arguments":[{"arguments":[{"name":"headStart","nativeSrc":"14548:9:87","nodeType":"YulIdentifier","src":"14548:9:87"},{"kind":"number","nativeSrc":"14559:3:87","nodeType":"YulLiteral","src":"14559:3:87","type":"","value":"160"}],"functionName":{"name":"add","nativeSrc":"14544:3:87","nodeType":"YulIdentifier","src":"14544:3:87"},"nativeSrc":"14544:19:87","nodeType":"YulFunctionCall","src":"14544:19:87"}],"functionName":{"name":"abi_decode_uint128_fromMemory","nativeSrc":"14514:29:87","nodeType":"YulIdentifier","src":"14514:29:87"},"nativeSrc":"14514:50:87","nodeType":"YulFunctionCall","src":"14514:50:87"}],"functionName":{"name":"mstore","nativeSrc":"14490:6:87","nodeType":"YulIdentifier","src":"14490:6:87"},"nativeSrc":"14490:75:87","nodeType":"YulFunctionCall","src":"14490:75:87"},"nativeSrc":"14490:75:87","nodeType":"YulExpressionStatement","src":"14490:75:87"},{"expression":{"arguments":[{"arguments":[{"name":"value","nativeSrc":"14585:5:87","nodeType":"YulIdentifier","src":"14585:5:87"},{"kind":"number","nativeSrc":"14592:3:87","nodeType":"YulLiteral","src":"14592:3:87","type":"","value":"192"}],"functionName":{"name":"add","nativeSrc":"14581:3:87","nodeType":"YulIdentifier","src":"14581:3:87"},"nativeSrc":"14581:15:87","nodeType":"YulFunctionCall","src":"14581:15:87"},{"arguments":[{"arguments":[{"name":"headStart","nativeSrc":"14631:9:87","nodeType":"YulIdentifier","src":"14631:9:87"},{"kind":"number","nativeSrc":"14642:3:87","nodeType":"YulLiteral","src":"14642:3:87","type":"","value":"192"}],"functionName":{"name":"add","nativeSrc":"14627:3:87","nodeType":"YulIdentifier","src":"14627:3:87"},"nativeSrc":"14627:19:87","nodeType":"YulFunctionCall","src":"14627:19:87"}],"functionName":{"name":"abi_decode_uint40_fromMemory","nativeSrc":"14598:28:87","nodeType":"YulIdentifier","src":"14598:28:87"},"nativeSrc":"14598:49:87","nodeType":"YulFunctionCall","src":"14598:49:87"}],"functionName":{"name":"mstore","nativeSrc":"14574:6:87","nodeType":"YulIdentifier","src":"14574:6:87"},"nativeSrc":"14574:74:87","nodeType":"YulFunctionCall","src":"14574:74:87"},"nativeSrc":"14574:74:87","nodeType":"YulExpressionStatement","src":"14574:74:87"},{"expression":{"arguments":[{"arguments":[{"name":"value","nativeSrc":"14668:5:87","nodeType":"YulIdentifier","src":"14668:5:87"},{"kind":"number","nativeSrc":"14675:3:87","nodeType":"YulLiteral","src":"14675:3:87","type":"","value":"224"}],"functionName":{"name":"add","nativeSrc":"14664:3:87","nodeType":"YulIdentifier","src":"14664:3:87"},"nativeSrc":"14664:15:87","nodeType":"YulFunctionCall","src":"14664:15:87"},{"arguments":[{"arguments":[{"name":"headStart","nativeSrc":"14714:9:87","nodeType":"YulIdentifier","src":"14714:9:87"},{"kind":"number","nativeSrc":"14725:3:87","nodeType":"YulLiteral","src":"14725:3:87","type":"","value":"224"}],"functionName":{"name":"add","nativeSrc":"14710:3:87","nodeType":"YulIdentifier","src":"14710:3:87"},"nativeSrc":"14710:19:87","nodeType":"YulFunctionCall","src":"14710:19:87"}],"functionName":{"name":"abi_decode_uint16_fromMemory","nativeSrc":"14681:28:87","nodeType":"YulIdentifier","src":"14681:28:87"},"nativeSrc":"14681:49:87","nodeType":"YulFunctionCall","src":"14681:49:87"}],"functionName":{"name":"mstore","nativeSrc":"14657:6:87","nodeType":"YulIdentifier","src":"14657:6:87"},"nativeSrc":"14657:74:87","nodeType":"YulFunctionCall","src":"14657:74:87"},"nativeSrc":"14657:74:87","nodeType":"YulExpressionStatement","src":"14657:74:87"},{"expression":{"arguments":[{"arguments":[{"name":"value","nativeSrc":"14751:5:87","nodeType":"YulIdentifier","src":"14751:5:87"},{"kind":"number","nativeSrc":"14758:3:87","nodeType":"YulLiteral","src":"14758:3:87","type":"","value":"256"}],"functionName":{"name":"add","nativeSrc":"14747:3:87","nodeType":"YulIdentifier","src":"14747:3:87"},"nativeSrc":"14747:15:87","nodeType":"YulFunctionCall","src":"14747:15:87"},{"arguments":[{"arguments":[{"name":"headStart","nativeSrc":"14798:9:87","nodeType":"YulIdentifier","src":"14798:9:87"},{"kind":"number","nativeSrc":"14809:3:87","nodeType":"YulLiteral","src":"14809:3:87","type":"","value":"256"}],"functionName":{"name":"add","nativeSrc":"14794:3:87","nodeType":"YulIdentifier","src":"14794:3:87"},"nativeSrc":"14794:19:87","nodeType":"YulFunctionCall","src":"14794:19:87"}],"functionName":{"name":"abi_decode_address_fromMemory","nativeSrc":"14764:29:87","nodeType":"YulIdentifier","src":"14764:29:87"},"nativeSrc":"14764:50:87","nodeType":"YulFunctionCall","src":"14764:50:87"}],"functionName":{"name":"mstore","nativeSrc":"14740:6:87","nodeType":"YulIdentifier","src":"14740:6:87"},"nativeSrc":"14740:75:87","nodeType":"YulFunctionCall","src":"14740:75:87"},"nativeSrc":"14740:75:87","nodeType":"YulExpressionStatement","src":"14740:75:87"},{"expression":{"arguments":[{"arguments":[{"name":"value","nativeSrc":"14835:5:87","nodeType":"YulIdentifier","src":"14835:5:87"},{"kind":"number","nativeSrc":"14842:3:87","nodeType":"YulLiteral","src":"14842:3:87","type":"","value":"288"}],"functionName":{"name":"add","nativeSrc":"14831:3:87","nodeType":"YulIdentifier","src":"14831:3:87"},"nativeSrc":"14831:15:87","nodeType":"YulFunctionCall","src":"14831:15:87"},{"arguments":[{"arguments":[{"name":"headStart","nativeSrc":"14882:9:87","nodeType":"YulIdentifier","src":"14882:9:87"},{"kind":"number","nativeSrc":"14893:3:87","nodeType":"YulLiteral","src":"14893:3:87","type":"","value":"288"}],"functionName":{"name":"add","nativeSrc":"14878:3:87","nodeType":"YulIdentifier","src":"14878:3:87"},"nativeSrc":"14878:19:87","nodeType":"YulFunctionCall","src":"14878:19:87"}],"functionName":{"name":"abi_decode_address_fromMemory","nativeSrc":"14848:29:87","nodeType":"YulIdentifier","src":"14848:29:87"},"nativeSrc":"14848:50:87","nodeType":"YulFunctionCall","src":"14848:50:87"}],"functionName":{"name":"mstore","nativeSrc":"14824:6:87","nodeType":"YulIdentifier","src":"14824:6:87"},"nativeSrc":"14824:75:87","nodeType":"YulFunctionCall","src":"14824:75:87"},"nativeSrc":"14824:75:87","nodeType":"YulExpressionStatement","src":"14824:75:87"},{"expression":{"arguments":[{"arguments":[{"name":"value","nativeSrc":"14919:5:87","nodeType":"YulIdentifier","src":"14919:5:87"},{"kind":"number","nativeSrc":"14926:3:87","nodeType":"YulLiteral","src":"14926:3:87","type":"","value":"320"}],"functionName":{"name":"add","nativeSrc":"14915:3:87","nodeType":"YulIdentifier","src":"14915:3:87"},"nativeSrc":"14915:15:87","nodeType":"YulFunctionCall","src":"14915:15:87"},{"arguments":[{"arguments":[{"name":"headStart","nativeSrc":"14966:9:87","nodeType":"YulIdentifier","src":"14966:9:87"},{"kind":"number","nativeSrc":"14977:3:87","nodeType":"YulLiteral","src":"14977:3:87","type":"","value":"320"}],"functionName":{"name":"add","nativeSrc":"14962:3:87","nodeType":"YulIdentifier","src":"14962:3:87"},"nativeSrc":"14962:19:87","nodeType":"YulFunctionCall","src":"14962:19:87"}],"functionName":{"name":"abi_decode_address_fromMemory","nativeSrc":"14932:29:87","nodeType":"YulIdentifier","src":"14932:29:87"},"nativeSrc":"14932:50:87","nodeType":"YulFunctionCall","src":"14932:50:87"}],"functionName":{"name":"mstore","nativeSrc":"14908:6:87","nodeType":"YulIdentifier","src":"14908:6:87"},"nativeSrc":"14908:75:87","nodeType":"YulFunctionCall","src":"14908:75:87"},"nativeSrc":"14908:75:87","nodeType":"YulExpressionStatement","src":"14908:75:87"},{"expression":{"arguments":[{"arguments":[{"name":"value","nativeSrc":"15003:5:87","nodeType":"YulIdentifier","src":"15003:5:87"},{"kind":"number","nativeSrc":"15010:3:87","nodeType":"YulLiteral","src":"15010:3:87","type":"","value":"352"}],"functionName":{"name":"add","nativeSrc":"14999:3:87","nodeType":"YulIdentifier","src":"14999:3:87"},"nativeSrc":"14999:15:87","nodeType":"YulFunctionCall","src":"14999:15:87"},{"arguments":[{"arguments":[{"name":"headStart","nativeSrc":"15050:9:87","nodeType":"YulIdentifier","src":"15050:9:87"},{"kind":"number","nativeSrc":"15061:3:87","nodeType":"YulLiteral","src":"15061:3:87","type":"","value":"352"}],"functionName":{"name":"add","nativeSrc":"15046:3:87","nodeType":"YulIdentifier","src":"15046:3:87"},"nativeSrc":"15046:19:87","nodeType":"YulFunctionCall","src":"15046:19:87"}],"functionName":{"name":"abi_decode_address_fromMemory","nativeSrc":"15016:29:87","nodeType":"YulIdentifier","src":"15016:29:87"},"nativeSrc":"15016:50:87","nodeType":"YulFunctionCall","src":"15016:50:87"}],"functionName":{"name":"mstore","nativeSrc":"14992:6:87","nodeType":"YulIdentifier","src":"14992:6:87"},"nativeSrc":"14992:75:87","nodeType":"YulFunctionCall","src":"14992:75:87"},"nativeSrc":"14992:75:87","nodeType":"YulExpressionStatement","src":"14992:75:87"},{"expression":{"arguments":[{"arguments":[{"name":"value","nativeSrc":"15087:5:87","nodeType":"YulIdentifier","src":"15087:5:87"},{"kind":"number","nativeSrc":"15094:3:87","nodeType":"YulLiteral","src":"15094:3:87","type":"","value":"384"}],"functionName":{"name":"add","nativeSrc":"15083:3:87","nodeType":"YulIdentifier","src":"15083:3:87"},"nativeSrc":"15083:15:87","nodeType":"YulFunctionCall","src":"15083:15:87"},{"arguments":[{"arguments":[{"name":"headStart","nativeSrc":"15134:9:87","nodeType":"YulIdentifier","src":"15134:9:87"},{"kind":"number","nativeSrc":"15145:3:87","nodeType":"YulLiteral","src":"15145:3:87","type":"","value":"384"}],"functionName":{"name":"add","nativeSrc":"15130:3:87","nodeType":"YulIdentifier","src":"15130:3:87"},"nativeSrc":"15130:19:87","nodeType":"YulFunctionCall","src":"15130:19:87"}],"functionName":{"name":"abi_decode_uint128_fromMemory","nativeSrc":"15100:29:87","nodeType":"YulIdentifier","src":"15100:29:87"},"nativeSrc":"15100:50:87","nodeType":"YulFunctionCall","src":"15100:50:87"}],"functionName":{"name":"mstore","nativeSrc":"15076:6:87","nodeType":"YulIdentifier","src":"15076:6:87"},"nativeSrc":"15076:75:87","nodeType":"YulFunctionCall","src":"15076:75:87"},"nativeSrc":"15076:75:87","nodeType":"YulExpressionStatement","src":"15076:75:87"},{"expression":{"arguments":[{"arguments":[{"name":"value","nativeSrc":"15171:5:87","nodeType":"YulIdentifier","src":"15171:5:87"},{"kind":"number","nativeSrc":"15178:3:87","nodeType":"YulLiteral","src":"15178:3:87","type":"","value":"416"}],"functionName":{"name":"add","nativeSrc":"15167:3:87","nodeType":"YulIdentifier","src":"15167:3:87"},"nativeSrc":"15167:15:87","nodeType":"YulFunctionCall","src":"15167:15:87"},{"arguments":[{"arguments":[{"name":"headStart","nativeSrc":"15218:9:87","nodeType":"YulIdentifier","src":"15218:9:87"},{"kind":"number","nativeSrc":"15229:3:87","nodeType":"YulLiteral","src":"15229:3:87","type":"","value":"416"}],"functionName":{"name":"add","nativeSrc":"15214:3:87","nodeType":"YulIdentifier","src":"15214:3:87"},"nativeSrc":"15214:19:87","nodeType":"YulFunctionCall","src":"15214:19:87"}],"functionName":{"name":"abi_decode_uint128_fromMemory","nativeSrc":"15184:29:87","nodeType":"YulIdentifier","src":"15184:29:87"},"nativeSrc":"15184:50:87","nodeType":"YulFunctionCall","src":"15184:50:87"}],"functionName":{"name":"mstore","nativeSrc":"15160:6:87","nodeType":"YulIdentifier","src":"15160:6:87"},"nativeSrc":"15160:75:87","nodeType":"YulFunctionCall","src":"15160:75:87"},"nativeSrc":"15160:75:87","nodeType":"YulExpressionStatement","src":"15160:75:87"},{"expression":{"arguments":[{"arguments":[{"name":"value","nativeSrc":"15255:5:87","nodeType":"YulIdentifier","src":"15255:5:87"},{"kind":"number","nativeSrc":"15262:3:87","nodeType":"YulLiteral","src":"15262:3:87","type":"","value":"448"}],"functionName":{"name":"add","nativeSrc":"15251:3:87","nodeType":"YulIdentifier","src":"15251:3:87"},"nativeSrc":"15251:15:87","nodeType":"YulFunctionCall","src":"15251:15:87"},{"arguments":[{"arguments":[{"name":"headStart","nativeSrc":"15302:9:87","nodeType":"YulIdentifier","src":"15302:9:87"},{"kind":"number","nativeSrc":"15313:3:87","nodeType":"YulLiteral","src":"15313:3:87","type":"","value":"448"}],"functionName":{"name":"add","nativeSrc":"15298:3:87","nodeType":"YulIdentifier","src":"15298:3:87"},"nativeSrc":"15298:19:87","nodeType":"YulFunctionCall","src":"15298:19:87"}],"functionName":{"name":"abi_decode_uint128_fromMemory","nativeSrc":"15268:29:87","nodeType":"YulIdentifier","src":"15268:29:87"},"nativeSrc":"15268:50:87","nodeType":"YulFunctionCall","src":"15268:50:87"}],"functionName":{"name":"mstore","nativeSrc":"15244:6:87","nodeType":"YulIdentifier","src":"15244:6:87"},"nativeSrc":"15244:75:87","nodeType":"YulFunctionCall","src":"15244:75:87"},"nativeSrc":"15244:75:87","nodeType":"YulExpressionStatement","src":"15244:75:87"},{"nativeSrc":"15328:15:87","nodeType":"YulAssignment","src":"15328:15:87","value":{"name":"value","nativeSrc":"15338:5:87","nodeType":"YulIdentifier","src":"15338:5:87"},"variableNames":[{"name":"value0","nativeSrc":"15328:6:87","nodeType":"YulIdentifier","src":"15328:6:87"}]}]},"name":"abi_decode_tuple_t_struct$_ReserveData_$17774_memory_ptr_fromMemory","nativeSrc":"13800:1549:87","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nativeSrc":"13877:9:87","nodeType":"YulTypedName","src":"13877:9:87","type":""},{"name":"dataEnd","nativeSrc":"13888:7:87","nodeType":"YulTypedName","src":"13888:7:87","type":""}],"returnVariables":[{"name":"value0","nativeSrc":"13900:6:87","nodeType":"YulTypedName","src":"13900:6:87","type":""}],"src":"13800:1549:87"},{"body":{"nativeSrc":"15386:95:87","nodeType":"YulBlock","src":"15386:95:87","statements":[{"expression":{"arguments":[{"kind":"number","nativeSrc":"15403:1:87","nodeType":"YulLiteral","src":"15403:1:87","type":"","value":"0"},{"arguments":[{"kind":"number","nativeSrc":"15410:3:87","nodeType":"YulLiteral","src":"15410:3:87","type":"","value":"224"},{"kind":"number","nativeSrc":"15415:10:87","nodeType":"YulLiteral","src":"15415:10:87","type":"","value":"0x4e487b71"}],"functionName":{"name":"shl","nativeSrc":"15406:3:87","nodeType":"YulIdentifier","src":"15406:3:87"},"nativeSrc":"15406:20:87","nodeType":"YulFunctionCall","src":"15406:20:87"}],"functionName":{"name":"mstore","nativeSrc":"15396:6:87","nodeType":"YulIdentifier","src":"15396:6:87"},"nativeSrc":"15396:31:87","nodeType":"YulFunctionCall","src":"15396:31:87"},"nativeSrc":"15396:31:87","nodeType":"YulExpressionStatement","src":"15396:31:87"},{"expression":{"arguments":[{"kind":"number","nativeSrc":"15443:1:87","nodeType":"YulLiteral","src":"15443:1:87","type":"","value":"4"},{"kind":"number","nativeSrc":"15446:4:87","nodeType":"YulLiteral","src":"15446:4:87","type":"","value":"0x11"}],"functionName":{"name":"mstore","nativeSrc":"15436:6:87","nodeType":"YulIdentifier","src":"15436:6:87"},"nativeSrc":"15436:15:87","nodeType":"YulFunctionCall","src":"15436:15:87"},"nativeSrc":"15436:15:87","nodeType":"YulExpressionStatement","src":"15436:15:87"},{"expression":{"arguments":[{"kind":"number","nativeSrc":"15467:1:87","nodeType":"YulLiteral","src":"15467:1:87","type":"","value":"0"},{"kind":"number","nativeSrc":"15470:4:87","nodeType":"YulLiteral","src":"15470:4:87","type":"","value":"0x24"}],"functionName":{"name":"revert","nativeSrc":"15460:6:87","nodeType":"YulIdentifier","src":"15460:6:87"},"nativeSrc":"15460:15:87","nodeType":"YulFunctionCall","src":"15460:15:87"},"nativeSrc":"15460:15:87","nodeType":"YulExpressionStatement","src":"15460:15:87"}]},"name":"panic_error_0x11","nativeSrc":"15354:127:87","nodeType":"YulFunctionDefinition","src":"15354:127:87"},{"body":{"nativeSrc":"15538:116:87","nodeType":"YulBlock","src":"15538:116:87","statements":[{"nativeSrc":"15548:20:87","nodeType":"YulAssignment","src":"15548:20:87","value":{"arguments":[{"name":"x","nativeSrc":"15563:1:87","nodeType":"YulIdentifier","src":"15563:1:87"},{"name":"y","nativeSrc":"15566:1:87","nodeType":"YulIdentifier","src":"15566:1:87"}],"functionName":{"name":"mul","nativeSrc":"15559:3:87","nodeType":"YulIdentifier","src":"15559:3:87"},"nativeSrc":"15559:9:87","nodeType":"YulFunctionCall","src":"15559:9:87"},"variableNames":[{"name":"product","nativeSrc":"15548:7:87","nodeType":"YulIdentifier","src":"15548:7:87"}]},{"body":{"nativeSrc":"15626:22:87","nodeType":"YulBlock","src":"15626:22:87","statements":[{"expression":{"arguments":[],"functionName":{"name":"panic_error_0x11","nativeSrc":"15628:16:87","nodeType":"YulIdentifier","src":"15628:16:87"},"nativeSrc":"15628:18:87","nodeType":"YulFunctionCall","src":"15628:18:87"},"nativeSrc":"15628:18:87","nodeType":"YulExpressionStatement","src":"15628:18:87"}]},"condition":{"arguments":[{"arguments":[{"arguments":[{"name":"x","nativeSrc":"15597:1:87","nodeType":"YulIdentifier","src":"15597:1:87"}],"functionName":{"name":"iszero","nativeSrc":"15590:6:87","nodeType":"YulIdentifier","src":"15590:6:87"},"nativeSrc":"15590:9:87","nodeType":"YulFunctionCall","src":"15590:9:87"},{"arguments":[{"name":"y","nativeSrc":"15604:1:87","nodeType":"YulIdentifier","src":"15604:1:87"},{"arguments":[{"name":"product","nativeSrc":"15611:7:87","nodeType":"YulIdentifier","src":"15611:7:87"},{"name":"x","nativeSrc":"15620:1:87","nodeType":"YulIdentifier","src":"15620:1:87"}],"functionName":{"name":"div","nativeSrc":"15607:3:87","nodeType":"YulIdentifier","src":"15607:3:87"},"nativeSrc":"15607:15:87","nodeType":"YulFunctionCall","src":"15607:15:87"}],"functionName":{"name":"eq","nativeSrc":"15601:2:87","nodeType":"YulIdentifier","src":"15601:2:87"},"nativeSrc":"15601:22:87","nodeType":"YulFunctionCall","src":"15601:22:87"}],"functionName":{"name":"or","nativeSrc":"15587:2:87","nodeType":"YulIdentifier","src":"15587:2:87"},"nativeSrc":"15587:37:87","nodeType":"YulFunctionCall","src":"15587:37:87"}],"functionName":{"name":"iszero","nativeSrc":"15580:6:87","nodeType":"YulIdentifier","src":"15580:6:87"},"nativeSrc":"15580:45:87","nodeType":"YulFunctionCall","src":"15580:45:87"},"nativeSrc":"15577:71:87","nodeType":"YulIf","src":"15577:71:87"}]},"name":"checked_mul_t_uint256","nativeSrc":"15486:168:87","nodeType":"YulFunctionDefinition","parameters":[{"name":"x","nativeSrc":"15517:1:87","nodeType":"YulTypedName","src":"15517:1:87","type":""},{"name":"y","nativeSrc":"15520:1:87","nodeType":"YulTypedName","src":"15520:1:87","type":""}],"returnVariables":[{"name":"product","nativeSrc":"15526:7:87","nodeType":"YulTypedName","src":"15526:7:87","type":""}],"src":"15486:168:87"},{"body":{"nativeSrc":"15708:79:87","nodeType":"YulBlock","src":"15708:79:87","statements":[{"nativeSrc":"15718:17:87","nodeType":"YulAssignment","src":"15718:17:87","value":{"arguments":[{"name":"x","nativeSrc":"15730:1:87","nodeType":"YulIdentifier","src":"15730:1:87"},{"name":"y","nativeSrc":"15733:1:87","nodeType":"YulIdentifier","src":"15733:1:87"}],"functionName":{"name":"sub","nativeSrc":"15726:3:87","nodeType":"YulIdentifier","src":"15726:3:87"},"nativeSrc":"15726:9:87","nodeType":"YulFunctionCall","src":"15726:9:87"},"variableNames":[{"name":"diff","nativeSrc":"15718:4:87","nodeType":"YulIdentifier","src":"15718:4:87"}]},{"body":{"nativeSrc":"15759:22:87","nodeType":"YulBlock","src":"15759:22:87","statements":[{"expression":{"arguments":[],"functionName":{"name":"panic_error_0x11","nativeSrc":"15761:16:87","nodeType":"YulIdentifier","src":"15761:16:87"},"nativeSrc":"15761:18:87","nodeType":"YulFunctionCall","src":"15761:18:87"},"nativeSrc":"15761:18:87","nodeType":"YulExpressionStatement","src":"15761:18:87"}]},"condition":{"arguments":[{"name":"diff","nativeSrc":"15750:4:87","nodeType":"YulIdentifier","src":"15750:4:87"},{"name":"x","nativeSrc":"15756:1:87","nodeType":"YulIdentifier","src":"15756:1:87"}],"functionName":{"name":"gt","nativeSrc":"15747:2:87","nodeType":"YulIdentifier","src":"15747:2:87"},"nativeSrc":"15747:11:87","nodeType":"YulFunctionCall","src":"15747:11:87"},"nativeSrc":"15744:37:87","nodeType":"YulIf","src":"15744:37:87"}]},"name":"checked_sub_t_uint256","nativeSrc":"15659:128:87","nodeType":"YulFunctionDefinition","parameters":[{"name":"x","nativeSrc":"15690:1:87","nodeType":"YulTypedName","src":"15690:1:87","type":""},{"name":"y","nativeSrc":"15693:1:87","nodeType":"YulTypedName","src":"15693:1:87","type":""}],"returnVariables":[{"name":"diff","nativeSrc":"15699:4:87","nodeType":"YulTypedName","src":"15699:4:87","type":""}],"src":"15659:128:87"},{"body":{"nativeSrc":"15824:95:87","nodeType":"YulBlock","src":"15824:95:87","statements":[{"expression":{"arguments":[{"kind":"number","nativeSrc":"15841:1:87","nodeType":"YulLiteral","src":"15841:1:87","type":"","value":"0"},{"arguments":[{"kind":"number","nativeSrc":"15848:3:87","nodeType":"YulLiteral","src":"15848:3:87","type":"","value":"224"},{"kind":"number","nativeSrc":"15853:10:87","nodeType":"YulLiteral","src":"15853:10:87","type":"","value":"0x4e487b71"}],"functionName":{"name":"shl","nativeSrc":"15844:3:87","nodeType":"YulIdentifier","src":"15844:3:87"},"nativeSrc":"15844:20:87","nodeType":"YulFunctionCall","src":"15844:20:87"}],"functionName":{"name":"mstore","nativeSrc":"15834:6:87","nodeType":"YulIdentifier","src":"15834:6:87"},"nativeSrc":"15834:31:87","nodeType":"YulFunctionCall","src":"15834:31:87"},"nativeSrc":"15834:31:87","nodeType":"YulExpressionStatement","src":"15834:31:87"},{"expression":{"arguments":[{"kind":"number","nativeSrc":"15881:1:87","nodeType":"YulLiteral","src":"15881:1:87","type":"","value":"4"},{"kind":"number","nativeSrc":"15884:4:87","nodeType":"YulLiteral","src":"15884:4:87","type":"","value":"0x12"}],"functionName":{"name":"mstore","nativeSrc":"15874:6:87","nodeType":"YulIdentifier","src":"15874:6:87"},"nativeSrc":"15874:15:87","nodeType":"YulFunctionCall","src":"15874:15:87"},"nativeSrc":"15874:15:87","nodeType":"YulExpressionStatement","src":"15874:15:87"},{"expression":{"arguments":[{"kind":"number","nativeSrc":"15905:1:87","nodeType":"YulLiteral","src":"15905:1:87","type":"","value":"0"},{"kind":"number","nativeSrc":"15908:4:87","nodeType":"YulLiteral","src":"15908:4:87","type":"","value":"0x24"}],"functionName":{"name":"revert","nativeSrc":"15898:6:87","nodeType":"YulIdentifier","src":"15898:6:87"},"nativeSrc":"15898:15:87","nodeType":"YulFunctionCall","src":"15898:15:87"},"nativeSrc":"15898:15:87","nodeType":"YulExpressionStatement","src":"15898:15:87"}]},"name":"panic_error_0x12","nativeSrc":"15792:127:87","nodeType":"YulFunctionDefinition","src":"15792:127:87"},{"body":{"nativeSrc":"15970:171:87","nodeType":"YulBlock","src":"15970:171:87","statements":[{"body":{"nativeSrc":"16001:111:87","nodeType":"YulBlock","src":"16001:111:87","statements":[{"expression":{"arguments":[{"kind":"number","nativeSrc":"16022:1:87","nodeType":"YulLiteral","src":"16022:1:87","type":"","value":"0"},{"arguments":[{"kind":"number","nativeSrc":"16029:3:87","nodeType":"YulLiteral","src":"16029:3:87","type":"","value":"224"},{"kind":"number","nativeSrc":"16034:10:87","nodeType":"YulLiteral","src":"16034:10:87","type":"","value":"0x4e487b71"}],"functionName":{"name":"shl","nativeSrc":"16025:3:87","nodeType":"YulIdentifier","src":"16025:3:87"},"nativeSrc":"16025:20:87","nodeType":"YulFunctionCall","src":"16025:20:87"}],"functionName":{"name":"mstore","nativeSrc":"16015:6:87","nodeType":"YulIdentifier","src":"16015:6:87"},"nativeSrc":"16015:31:87","nodeType":"YulFunctionCall","src":"16015:31:87"},"nativeSrc":"16015:31:87","nodeType":"YulExpressionStatement","src":"16015:31:87"},{"expression":{"arguments":[{"kind":"number","nativeSrc":"16066:1:87","nodeType":"YulLiteral","src":"16066:1:87","type":"","value":"4"},{"kind":"number","nativeSrc":"16069:4:87","nodeType":"YulLiteral","src":"16069:4:87","type":"","value":"0x12"}],"functionName":{"name":"mstore","nativeSrc":"16059:6:87","nodeType":"YulIdentifier","src":"16059:6:87"},"nativeSrc":"16059:15:87","nodeType":"YulFunctionCall","src":"16059:15:87"},"nativeSrc":"16059:15:87","nodeType":"YulExpressionStatement","src":"16059:15:87"},{"expression":{"arguments":[{"kind":"number","nativeSrc":"16094:1:87","nodeType":"YulLiteral","src":"16094:1:87","type":"","value":"0"},{"kind":"number","nativeSrc":"16097:4:87","nodeType":"YulLiteral","src":"16097:4:87","type":"","value":"0x24"}],"functionName":{"name":"revert","nativeSrc":"16087:6:87","nodeType":"YulIdentifier","src":"16087:6:87"},"nativeSrc":"16087:15:87","nodeType":"YulFunctionCall","src":"16087:15:87"},"nativeSrc":"16087:15:87","nodeType":"YulExpressionStatement","src":"16087:15:87"}]},"condition":{"arguments":[{"name":"y","nativeSrc":"15990:1:87","nodeType":"YulIdentifier","src":"15990:1:87"}],"functionName":{"name":"iszero","nativeSrc":"15983:6:87","nodeType":"YulIdentifier","src":"15983:6:87"},"nativeSrc":"15983:9:87","nodeType":"YulFunctionCall","src":"15983:9:87"},"nativeSrc":"15980:132:87","nodeType":"YulIf","src":"15980:132:87"},{"nativeSrc":"16121:14:87","nodeType":"YulAssignment","src":"16121:14:87","value":{"arguments":[{"name":"x","nativeSrc":"16130:1:87","nodeType":"YulIdentifier","src":"16130:1:87"},{"name":"y","nativeSrc":"16133:1:87","nodeType":"YulIdentifier","src":"16133:1:87"}],"functionName":{"name":"div","nativeSrc":"16126:3:87","nodeType":"YulIdentifier","src":"16126:3:87"},"nativeSrc":"16126:9:87","nodeType":"YulFunctionCall","src":"16126:9:87"},"variableNames":[{"name":"r","nativeSrc":"16121:1:87","nodeType":"YulIdentifier","src":"16121:1:87"}]}]},"name":"checked_div_t_uint256","nativeSrc":"15924:217:87","nodeType":"YulFunctionDefinition","parameters":[{"name":"x","nativeSrc":"15955:1:87","nodeType":"YulTypedName","src":"15955:1:87","type":""},{"name":"y","nativeSrc":"15958:1:87","nodeType":"YulTypedName","src":"15958:1:87","type":""}],"returnVariables":[{"name":"r","nativeSrc":"15964:1:87","nodeType":"YulTypedName","src":"15964:1:87","type":""}],"src":"15924:217:87"},{"body":{"nativeSrc":"16225:168:87","nodeType":"YulBlock","src":"16225:168:87","statements":[{"body":{"nativeSrc":"16271:16:87","nodeType":"YulBlock","src":"16271:16:87","statements":[{"expression":{"arguments":[{"kind":"number","nativeSrc":"16280:1:87","nodeType":"YulLiteral","src":"16280:1:87","type":"","value":"0"},{"kind":"number","nativeSrc":"16283:1:87","nodeType":"YulLiteral","src":"16283:1:87","type":"","value":"0"}],"functionName":{"name":"revert","nativeSrc":"16273:6:87","nodeType":"YulIdentifier","src":"16273:6:87"},"nativeSrc":"16273:12:87","nodeType":"YulFunctionCall","src":"16273:12:87"},"nativeSrc":"16273:12:87","nodeType":"YulExpressionStatement","src":"16273:12:87"}]},"condition":{"arguments":[{"arguments":[{"name":"dataEnd","nativeSrc":"16246:7:87","nodeType":"YulIdentifier","src":"16246:7:87"},{"name":"headStart","nativeSrc":"16255:9:87","nodeType":"YulIdentifier","src":"16255:9:87"}],"functionName":{"name":"sub","nativeSrc":"16242:3:87","nodeType":"YulIdentifier","src":"16242:3:87"},"nativeSrc":"16242:23:87","nodeType":"YulFunctionCall","src":"16242:23:87"},{"kind":"number","nativeSrc":"16267:2:87","nodeType":"YulLiteral","src":"16267:2:87","type":"","value":"32"}],"functionName":{"name":"slt","nativeSrc":"16238:3:87","nodeType":"YulIdentifier","src":"16238:3:87"},"nativeSrc":"16238:32:87","nodeType":"YulFunctionCall","src":"16238:32:87"},"nativeSrc":"16235:52:87","nodeType":"YulIf","src":"16235:52:87"},{"nativeSrc":"16296:29:87","nodeType":"YulVariableDeclaration","src":"16296:29:87","value":{"arguments":[{"name":"headStart","nativeSrc":"16315:9:87","nodeType":"YulIdentifier","src":"16315:9:87"}],"functionName":{"name":"mload","nativeSrc":"16309:5:87","nodeType":"YulIdentifier","src":"16309:5:87"},"nativeSrc":"16309:16:87","nodeType":"YulFunctionCall","src":"16309:16:87"},"variables":[{"name":"value","nativeSrc":"16300:5:87","nodeType":"YulTypedName","src":"16300:5:87","type":""}]},{"expression":{"arguments":[{"name":"value","nativeSrc":"16357:5:87","nodeType":"YulIdentifier","src":"16357:5:87"}],"functionName":{"name":"validator_revert_uint8","nativeSrc":"16334:22:87","nodeType":"YulIdentifier","src":"16334:22:87"},"nativeSrc":"16334:29:87","nodeType":"YulFunctionCall","src":"16334:29:87"},"nativeSrc":"16334:29:87","nodeType":"YulExpressionStatement","src":"16334:29:87"},{"nativeSrc":"16372:15:87","nodeType":"YulAssignment","src":"16372:15:87","value":{"name":"value","nativeSrc":"16382:5:87","nodeType":"YulIdentifier","src":"16382:5:87"},"variableNames":[{"name":"value0","nativeSrc":"16372:6:87","nodeType":"YulIdentifier","src":"16372:6:87"}]}]},"name":"abi_decode_tuple_t_uint8_fromMemory","nativeSrc":"16146:247:87","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nativeSrc":"16191:9:87","nodeType":"YulTypedName","src":"16191:9:87","type":""},{"name":"dataEnd","nativeSrc":"16202:7:87","nodeType":"YulTypedName","src":"16202:7:87","type":""}],"returnVariables":[{"name":"value0","nativeSrc":"16214:6:87","nodeType":"YulTypedName","src":"16214:6:87","type":""}],"src":"16146:247:87"},{"body":{"nativeSrc":"16445:104:87","nodeType":"YulBlock","src":"16445:104:87","statements":[{"nativeSrc":"16455:39:87","nodeType":"YulAssignment","src":"16455:39:87","value":{"arguments":[{"arguments":[{"name":"x","nativeSrc":"16471:1:87","nodeType":"YulIdentifier","src":"16471:1:87"},{"kind":"number","nativeSrc":"16474:4:87","nodeType":"YulLiteral","src":"16474:4:87","type":"","value":"0xff"}],"functionName":{"name":"and","nativeSrc":"16467:3:87","nodeType":"YulIdentifier","src":"16467:3:87"},"nativeSrc":"16467:12:87","nodeType":"YulFunctionCall","src":"16467:12:87"},{"arguments":[{"name":"y","nativeSrc":"16485:1:87","nodeType":"YulIdentifier","src":"16485:1:87"},{"kind":"number","nativeSrc":"16488:4:87","nodeType":"YulLiteral","src":"16488:4:87","type":"","value":"0xff"}],"functionName":{"name":"and","nativeSrc":"16481:3:87","nodeType":"YulIdentifier","src":"16481:3:87"},"nativeSrc":"16481:12:87","nodeType":"YulFunctionCall","src":"16481:12:87"}],"functionName":{"name":"sub","nativeSrc":"16463:3:87","nodeType":"YulIdentifier","src":"16463:3:87"},"nativeSrc":"16463:31:87","nodeType":"YulFunctionCall","src":"16463:31:87"},"variableNames":[{"name":"diff","nativeSrc":"16455:4:87","nodeType":"YulIdentifier","src":"16455:4:87"}]},{"body":{"nativeSrc":"16521:22:87","nodeType":"YulBlock","src":"16521:22:87","statements":[{"expression":{"arguments":[],"functionName":{"name":"panic_error_0x11","nativeSrc":"16523:16:87","nodeType":"YulIdentifier","src":"16523:16:87"},"nativeSrc":"16523:18:87","nodeType":"YulFunctionCall","src":"16523:18:87"},"nativeSrc":"16523:18:87","nodeType":"YulExpressionStatement","src":"16523:18:87"}]},"condition":{"arguments":[{"name":"diff","nativeSrc":"16509:4:87","nodeType":"YulIdentifier","src":"16509:4:87"},{"kind":"number","nativeSrc":"16515:4:87","nodeType":"YulLiteral","src":"16515:4:87","type":"","value":"0xff"}],"functionName":{"name":"gt","nativeSrc":"16506:2:87","nodeType":"YulIdentifier","src":"16506:2:87"},"nativeSrc":"16506:14:87","nodeType":"YulFunctionCall","src":"16506:14:87"},"nativeSrc":"16503:40:87","nodeType":"YulIf","src":"16503:40:87"}]},"name":"checked_sub_t_uint8","nativeSrc":"16398:151:87","nodeType":"YulFunctionDefinition","parameters":[{"name":"x","nativeSrc":"16427:1:87","nodeType":"YulTypedName","src":"16427:1:87","type":""},{"name":"y","nativeSrc":"16430:1:87","nodeType":"YulTypedName","src":"16430:1:87","type":""}],"returnVariables":[{"name":"diff","nativeSrc":"16436:4:87","nodeType":"YulTypedName","src":"16436:4:87","type":""}],"src":"16398:151:87"},{"body":{"nativeSrc":"16623:306:87","nodeType":"YulBlock","src":"16623:306:87","statements":[{"nativeSrc":"16633:10:87","nodeType":"YulAssignment","src":"16633:10:87","value":{"kind":"number","nativeSrc":"16642:1:87","nodeType":"YulLiteral","src":"16642:1:87","type":"","value":"1"},"variableNames":[{"name":"power","nativeSrc":"16633:5:87","nodeType":"YulIdentifier","src":"16633:5:87"}]},{"nativeSrc":"16652:13:87","nodeType":"YulAssignment","src":"16652:13:87","value":{"name":"_base","nativeSrc":"16660:5:87","nodeType":"YulIdentifier","src":"16660:5:87"},"variableNames":[{"name":"base","nativeSrc":"16652:4:87","nodeType":"YulIdentifier","src":"16652:4:87"}]},{"body":{"nativeSrc":"16710:213:87","nodeType":"YulBlock","src":"16710:213:87","statements":[{"body":{"nativeSrc":"16752:22:87","nodeType":"YulBlock","src":"16752:22:87","statements":[{"expression":{"arguments":[],"functionName":{"name":"panic_error_0x11","nativeSrc":"16754:16:87","nodeType":"YulIdentifier","src":"16754:16:87"},"nativeSrc":"16754:18:87","nodeType":"YulFunctionCall","src":"16754:18:87"},"nativeSrc":"16754:18:87","nodeType":"YulExpressionStatement","src":"16754:18:87"}]},"condition":{"arguments":[{"name":"base","nativeSrc":"16730:4:87","nodeType":"YulIdentifier","src":"16730:4:87"},{"arguments":[{"name":"max","nativeSrc":"16740:3:87","nodeType":"YulIdentifier","src":"16740:3:87"},{"name":"base","nativeSrc":"16745:4:87","nodeType":"YulIdentifier","src":"16745:4:87"}],"functionName":{"name":"div","nativeSrc":"16736:3:87","nodeType":"YulIdentifier","src":"16736:3:87"},"nativeSrc":"16736:14:87","nodeType":"YulFunctionCall","src":"16736:14:87"}],"functionName":{"name":"gt","nativeSrc":"16727:2:87","nodeType":"YulIdentifier","src":"16727:2:87"},"nativeSrc":"16727:24:87","nodeType":"YulFunctionCall","src":"16727:24:87"},"nativeSrc":"16724:50:87","nodeType":"YulIf","src":"16724:50:87"},{"body":{"nativeSrc":"16807:29:87","nodeType":"YulBlock","src":"16807:29:87","statements":[{"nativeSrc":"16809:25:87","nodeType":"YulAssignment","src":"16809:25:87","value":{"arguments":[{"name":"power","nativeSrc":"16822:5:87","nodeType":"YulIdentifier","src":"16822:5:87"},{"name":"base","nativeSrc":"16829:4:87","nodeType":"YulIdentifier","src":"16829:4:87"}],"functionName":{"name":"mul","nativeSrc":"16818:3:87","nodeType":"YulIdentifier","src":"16818:3:87"},"nativeSrc":"16818:16:87","nodeType":"YulFunctionCall","src":"16818:16:87"},"variableNames":[{"name":"power","nativeSrc":"16809:5:87","nodeType":"YulIdentifier","src":"16809:5:87"}]}]},"condition":{"arguments":[{"name":"exponent","nativeSrc":"16794:8:87","nodeType":"YulIdentifier","src":"16794:8:87"},{"kind":"number","nativeSrc":"16804:1:87","nodeType":"YulLiteral","src":"16804:1:87","type":"","value":"1"}],"functionName":{"name":"and","nativeSrc":"16790:3:87","nodeType":"YulIdentifier","src":"16790:3:87"},"nativeSrc":"16790:16:87","nodeType":"YulFunctionCall","src":"16790:16:87"},"nativeSrc":"16787:49:87","nodeType":"YulIf","src":"16787:49:87"},{"nativeSrc":"16849:23:87","nodeType":"YulAssignment","src":"16849:23:87","value":{"arguments":[{"name":"base","nativeSrc":"16861:4:87","nodeType":"YulIdentifier","src":"16861:4:87"},{"name":"base","nativeSrc":"16867:4:87","nodeType":"YulIdentifier","src":"16867:4:87"}],"functionName":{"name":"mul","nativeSrc":"16857:3:87","nodeType":"YulIdentifier","src":"16857:3:87"},"nativeSrc":"16857:15:87","nodeType":"YulFunctionCall","src":"16857:15:87"},"variableNames":[{"name":"base","nativeSrc":"16849:4:87","nodeType":"YulIdentifier","src":"16849:4:87"}]},{"nativeSrc":"16885:28:87","nodeType":"YulAssignment","src":"16885:28:87","value":{"arguments":[{"kind":"number","nativeSrc":"16901:1:87","nodeType":"YulLiteral","src":"16901:1:87","type":"","value":"1"},{"name":"exponent","nativeSrc":"16904:8:87","nodeType":"YulIdentifier","src":"16904:8:87"}],"functionName":{"name":"shr","nativeSrc":"16897:3:87","nodeType":"YulIdentifier","src":"16897:3:87"},"nativeSrc":"16897:16:87","nodeType":"YulFunctionCall","src":"16897:16:87"},"variableNames":[{"name":"exponent","nativeSrc":"16885:8:87","nodeType":"YulIdentifier","src":"16885:8:87"}]}]},"condition":{"arguments":[{"name":"exponent","nativeSrc":"16685:8:87","nodeType":"YulIdentifier","src":"16685:8:87"},{"kind":"number","nativeSrc":"16695:1:87","nodeType":"YulLiteral","src":"16695:1:87","type":"","value":"1"}],"functionName":{"name":"gt","nativeSrc":"16682:2:87","nodeType":"YulIdentifier","src":"16682:2:87"},"nativeSrc":"16682:15:87","nodeType":"YulFunctionCall","src":"16682:15:87"},"nativeSrc":"16674:249:87","nodeType":"YulForLoop","post":{"nativeSrc":"16698:3:87","nodeType":"YulBlock","src":"16698:3:87","statements":[]},"pre":{"nativeSrc":"16678:3:87","nodeType":"YulBlock","src":"16678:3:87","statements":[]},"src":"16674:249:87"}]},"name":"checked_exp_helper","nativeSrc":"16554:375:87","nodeType":"YulFunctionDefinition","parameters":[{"name":"_base","nativeSrc":"16582:5:87","nodeType":"YulTypedName","src":"16582:5:87","type":""},{"name":"exponent","nativeSrc":"16589:8:87","nodeType":"YulTypedName","src":"16589:8:87","type":""},{"name":"max","nativeSrc":"16599:3:87","nodeType":"YulTypedName","src":"16599:3:87","type":""}],"returnVariables":[{"name":"power","nativeSrc":"16607:5:87","nodeType":"YulTypedName","src":"16607:5:87","type":""},{"name":"base","nativeSrc":"16614:4:87","nodeType":"YulTypedName","src":"16614:4:87","type":""}],"src":"16554:375:87"},{"body":{"nativeSrc":"16993:843:87","nodeType":"YulBlock","src":"16993:843:87","statements":[{"body":{"nativeSrc":"17031:52:87","nodeType":"YulBlock","src":"17031:52:87","statements":[{"nativeSrc":"17045:10:87","nodeType":"YulAssignment","src":"17045:10:87","value":{"kind":"number","nativeSrc":"17054:1:87","nodeType":"YulLiteral","src":"17054:1:87","type":"","value":"1"},"variableNames":[{"name":"power","nativeSrc":"17045:5:87","nodeType":"YulIdentifier","src":"17045:5:87"}]},{"nativeSrc":"17068:5:87","nodeType":"YulLeave","src":"17068:5:87"}]},"condition":{"arguments":[{"name":"exponent","nativeSrc":"17013:8:87","nodeType":"YulIdentifier","src":"17013:8:87"}],"functionName":{"name":"iszero","nativeSrc":"17006:6:87","nodeType":"YulIdentifier","src":"17006:6:87"},"nativeSrc":"17006:16:87","nodeType":"YulFunctionCall","src":"17006:16:87"},"nativeSrc":"17003:80:87","nodeType":"YulIf","src":"17003:80:87"},{"body":{"nativeSrc":"17116:52:87","nodeType":"YulBlock","src":"17116:52:87","statements":[{"nativeSrc":"17130:10:87","nodeType":"YulAssignment","src":"17130:10:87","value":{"kind":"number","nativeSrc":"17139:1:87","nodeType":"YulLiteral","src":"17139:1:87","type":"","value":"0"},"variableNames":[{"name":"power","nativeSrc":"17130:5:87","nodeType":"YulIdentifier","src":"17130:5:87"}]},{"nativeSrc":"17153:5:87","nodeType":"YulLeave","src":"17153:5:87"}]},"condition":{"arguments":[{"name":"base","nativeSrc":"17102:4:87","nodeType":"YulIdentifier","src":"17102:4:87"}],"functionName":{"name":"iszero","nativeSrc":"17095:6:87","nodeType":"YulIdentifier","src":"17095:6:87"},"nativeSrc":"17095:12:87","nodeType":"YulFunctionCall","src":"17095:12:87"},"nativeSrc":"17092:76:87","nodeType":"YulIf","src":"17092:76:87"},{"cases":[{"body":{"nativeSrc":"17204:52:87","nodeType":"YulBlock","src":"17204:52:87","statements":[{"nativeSrc":"17218:10:87","nodeType":"YulAssignment","src":"17218:10:87","value":{"kind":"number","nativeSrc":"17227:1:87","nodeType":"YulLiteral","src":"17227:1:87","type":"","value":"1"},"variableNames":[{"name":"power","nativeSrc":"17218:5:87","nodeType":"YulIdentifier","src":"17218:5:87"}]},{"nativeSrc":"17241:5:87","nodeType":"YulLeave","src":"17241:5:87"}]},"nativeSrc":"17197:59:87","nodeType":"YulCase","src":"17197:59:87","value":{"kind":"number","nativeSrc":"17202:1:87","nodeType":"YulLiteral","src":"17202:1:87","type":"","value":"1"}},{"body":{"nativeSrc":"17272:167:87","nodeType":"YulBlock","src":"17272:167:87","statements":[{"body":{"nativeSrc":"17307:22:87","nodeType":"YulBlock","src":"17307:22:87","statements":[{"expression":{"arguments":[],"functionName":{"name":"panic_error_0x11","nativeSrc":"17309:16:87","nodeType":"YulIdentifier","src":"17309:16:87"},"nativeSrc":"17309:18:87","nodeType":"YulFunctionCall","src":"17309:18:87"},"nativeSrc":"17309:18:87","nodeType":"YulExpressionStatement","src":"17309:18:87"}]},"condition":{"arguments":[{"name":"exponent","nativeSrc":"17292:8:87","nodeType":"YulIdentifier","src":"17292:8:87"},{"kind":"number","nativeSrc":"17302:3:87","nodeType":"YulLiteral","src":"17302:3:87","type":"","value":"255"}],"functionName":{"name":"gt","nativeSrc":"17289:2:87","nodeType":"YulIdentifier","src":"17289:2:87"},"nativeSrc":"17289:17:87","nodeType":"YulFunctionCall","src":"17289:17:87"},"nativeSrc":"17286:43:87","nodeType":"YulIf","src":"17286:43:87"},{"nativeSrc":"17342:25:87","nodeType":"YulAssignment","src":"17342:25:87","value":{"arguments":[{"name":"exponent","nativeSrc":"17355:8:87","nodeType":"YulIdentifier","src":"17355:8:87"},{"kind":"number","nativeSrc":"17365:1:87","nodeType":"YulLiteral","src":"17365:1:87","type":"","value":"1"}],"functionName":{"name":"shl","nativeSrc":"17351:3:87","nodeType":"YulIdentifier","src":"17351:3:87"},"nativeSrc":"17351:16:87","nodeType":"YulFunctionCall","src":"17351:16:87"},"variableNames":[{"name":"power","nativeSrc":"17342:5:87","nodeType":"YulIdentifier","src":"17342:5:87"}]},{"nativeSrc":"17380:11:87","nodeType":"YulVariableDeclaration","src":"17380:11:87","value":{"kind":"number","nativeSrc":"17390:1:87","nodeType":"YulLiteral","src":"17390:1:87","type":"","value":"0"},"variables":[{"name":"_1","nativeSrc":"17384:2:87","nodeType":"YulTypedName","src":"17384:2:87","type":""}]},{"nativeSrc":"17404:7:87","nodeType":"YulAssignment","src":"17404:7:87","value":{"kind":"number","nativeSrc":"17410:1:87","nodeType":"YulLiteral","src":"17410:1:87","type":"","value":"0"},"variableNames":[{"name":"_1","nativeSrc":"17404:2:87","nodeType":"YulIdentifier","src":"17404:2:87"}]},{"nativeSrc":"17424:5:87","nodeType":"YulLeave","src":"17424:5:87"}]},"nativeSrc":"17265:174:87","nodeType":"YulCase","src":"17265:174:87","value":{"kind":"number","nativeSrc":"17270:1:87","nodeType":"YulLiteral","src":"17270:1:87","type":"","value":"2"}}],"expression":{"name":"base","nativeSrc":"17184:4:87","nodeType":"YulIdentifier","src":"17184:4:87"},"nativeSrc":"17177:262:87","nodeType":"YulSwitch","src":"17177:262:87"},{"body":{"nativeSrc":"17537:114:87","nodeType":"YulBlock","src":"17537:114:87","statements":[{"nativeSrc":"17551:28:87","nodeType":"YulAssignment","src":"17551:28:87","value":{"arguments":[{"name":"base","nativeSrc":"17564:4:87","nodeType":"YulIdentifier","src":"17564:4:87"},{"name":"exponent","nativeSrc":"17570:8:87","nodeType":"YulIdentifier","src":"17570:8:87"}],"functionName":{"name":"exp","nativeSrc":"17560:3:87","nodeType":"YulIdentifier","src":"17560:3:87"},"nativeSrc":"17560:19:87","nodeType":"YulFunctionCall","src":"17560:19:87"},"variableNames":[{"name":"power","nativeSrc":"17551:5:87","nodeType":"YulIdentifier","src":"17551:5:87"}]},{"nativeSrc":"17592:11:87","nodeType":"YulVariableDeclaration","src":"17592:11:87","value":{"kind":"number","nativeSrc":"17602:1:87","nodeType":"YulLiteral","src":"17602:1:87","type":"","value":"0"},"variables":[{"name":"_2","nativeSrc":"17596:2:87","nodeType":"YulTypedName","src":"17596:2:87","type":""}]},{"nativeSrc":"17616:7:87","nodeType":"YulAssignment","src":"17616:7:87","value":{"kind":"number","nativeSrc":"17622:1:87","nodeType":"YulLiteral","src":"17622:1:87","type":"","value":"0"},"variableNames":[{"name":"_2","nativeSrc":"17616:2:87","nodeType":"YulIdentifier","src":"17616:2:87"}]},{"nativeSrc":"17636:5:87","nodeType":"YulLeave","src":"17636:5:87"}]},"condition":{"arguments":[{"arguments":[{"arguments":[{"name":"base","nativeSrc":"17461:4:87","nodeType":"YulIdentifier","src":"17461:4:87"},{"kind":"number","nativeSrc":"17467:2:87","nodeType":"YulLiteral","src":"17467:2:87","type":"","value":"11"}],"functionName":{"name":"lt","nativeSrc":"17458:2:87","nodeType":"YulIdentifier","src":"17458:2:87"},"nativeSrc":"17458:12:87","nodeType":"YulFunctionCall","src":"17458:12:87"},{"arguments":[{"name":"exponent","nativeSrc":"17475:8:87","nodeType":"YulIdentifier","src":"17475:8:87"},{"kind":"number","nativeSrc":"17485:2:87","nodeType":"YulLiteral","src":"17485:2:87","type":"","value":"78"}],"functionName":{"name":"lt","nativeSrc":"17472:2:87","nodeType":"YulIdentifier","src":"17472:2:87"},"nativeSrc":"17472:16:87","nodeType":"YulFunctionCall","src":"17472:16:87"}],"functionName":{"name":"and","nativeSrc":"17454:3:87","nodeType":"YulIdentifier","src":"17454:3:87"},"nativeSrc":"17454:35:87","nodeType":"YulFunctionCall","src":"17454:35:87"},{"arguments":[{"arguments":[{"name":"base","nativeSrc":"17498:4:87","nodeType":"YulIdentifier","src":"17498:4:87"},{"kind":"number","nativeSrc":"17504:3:87","nodeType":"YulLiteral","src":"17504:3:87","type":"","value":"307"}],"functionName":{"name":"lt","nativeSrc":"17495:2:87","nodeType":"YulIdentifier","src":"17495:2:87"},"nativeSrc":"17495:13:87","nodeType":"YulFunctionCall","src":"17495:13:87"},{"arguments":[{"name":"exponent","nativeSrc":"17513:8:87","nodeType":"YulIdentifier","src":"17513:8:87"},{"kind":"number","nativeSrc":"17523:2:87","nodeType":"YulLiteral","src":"17523:2:87","type":"","value":"32"}],"functionName":{"name":"lt","nativeSrc":"17510:2:87","nodeType":"YulIdentifier","src":"17510:2:87"},"nativeSrc":"17510:16:87","nodeType":"YulFunctionCall","src":"17510:16:87"}],"functionName":{"name":"and","nativeSrc":"17491:3:87","nodeType":"YulIdentifier","src":"17491:3:87"},"nativeSrc":"17491:36:87","nodeType":"YulFunctionCall","src":"17491:36:87"}],"functionName":{"name":"or","nativeSrc":"17451:2:87","nodeType":"YulIdentifier","src":"17451:2:87"},"nativeSrc":"17451:77:87","nodeType":"YulFunctionCall","src":"17451:77:87"},"nativeSrc":"17448:203:87","nodeType":"YulIf","src":"17448:203:87"},{"nativeSrc":"17660:65:87","nodeType":"YulVariableDeclaration","src":"17660:65:87","value":{"arguments":[{"name":"base","nativeSrc":"17702:4:87","nodeType":"YulIdentifier","src":"17702:4:87"},{"name":"exponent","nativeSrc":"17708:8:87","nodeType":"YulIdentifier","src":"17708:8:87"},{"arguments":[{"kind":"number","nativeSrc":"17722:1:87","nodeType":"YulLiteral","src":"17722:1:87","type":"","value":"0"}],"functionName":{"name":"not","nativeSrc":"17718:3:87","nodeType":"YulIdentifier","src":"17718:3:87"},"nativeSrc":"17718:6:87","nodeType":"YulFunctionCall","src":"17718:6:87"}],"functionName":{"name":"checked_exp_helper","nativeSrc":"17683:18:87","nodeType":"YulIdentifier","src":"17683:18:87"},"nativeSrc":"17683:42:87","nodeType":"YulFunctionCall","src":"17683:42:87"},"variables":[{"name":"power_1","nativeSrc":"17664:7:87","nodeType":"YulTypedName","src":"17664:7:87","type":""},{"name":"base_1","nativeSrc":"17673:6:87","nodeType":"YulTypedName","src":"17673:6:87","type":""}]},{"body":{"nativeSrc":"17770:22:87","nodeType":"YulBlock","src":"17770:22:87","statements":[{"expression":{"arguments":[],"functionName":{"name":"panic_error_0x11","nativeSrc":"17772:16:87","nodeType":"YulIdentifier","src":"17772:16:87"},"nativeSrc":"17772:18:87","nodeType":"YulFunctionCall","src":"17772:18:87"},"nativeSrc":"17772:18:87","nodeType":"YulExpressionStatement","src":"17772:18:87"}]},"condition":{"arguments":[{"name":"power_1","nativeSrc":"17740:7:87","nodeType":"YulIdentifier","src":"17740:7:87"},{"arguments":[{"arguments":[{"kind":"number","nativeSrc":"17757:1:87","nodeType":"YulLiteral","src":"17757:1:87","type":"","value":"0"}],"functionName":{"name":"not","nativeSrc":"17753:3:87","nodeType":"YulIdentifier","src":"17753:3:87"},"nativeSrc":"17753:6:87","nodeType":"YulFunctionCall","src":"17753:6:87"},{"name":"base_1","nativeSrc":"17761:6:87","nodeType":"YulIdentifier","src":"17761:6:87"}],"functionName":{"name":"div","nativeSrc":"17749:3:87","nodeType":"YulIdentifier","src":"17749:3:87"},"nativeSrc":"17749:19:87","nodeType":"YulFunctionCall","src":"17749:19:87"}],"functionName":{"name":"gt","nativeSrc":"17737:2:87","nodeType":"YulIdentifier","src":"17737:2:87"},"nativeSrc":"17737:32:87","nodeType":"YulFunctionCall","src":"17737:32:87"},"nativeSrc":"17734:58:87","nodeType":"YulIf","src":"17734:58:87"},{"nativeSrc":"17801:29:87","nodeType":"YulAssignment","src":"17801:29:87","value":{"arguments":[{"name":"power_1","nativeSrc":"17814:7:87","nodeType":"YulIdentifier","src":"17814:7:87"},{"name":"base_1","nativeSrc":"17823:6:87","nodeType":"YulIdentifier","src":"17823:6:87"}],"functionName":{"name":"mul","nativeSrc":"17810:3:87","nodeType":"YulIdentifier","src":"17810:3:87"},"nativeSrc":"17810:20:87","nodeType":"YulFunctionCall","src":"17810:20:87"},"variableNames":[{"name":"power","nativeSrc":"17801:5:87","nodeType":"YulIdentifier","src":"17801:5:87"}]}]},"name":"checked_exp_unsigned","nativeSrc":"16934:902:87","nodeType":"YulFunctionDefinition","parameters":[{"name":"base","nativeSrc":"16964:4:87","nodeType":"YulTypedName","src":"16964:4:87","type":""},{"name":"exponent","nativeSrc":"16970:8:87","nodeType":"YulTypedName","src":"16970:8:87","type":""}],"returnVariables":[{"name":"power","nativeSrc":"16983:5:87","nodeType":"YulTypedName","src":"16983:5:87","type":""}],"src":"16934:902:87"},{"body":{"nativeSrc":"17909:72:87","nodeType":"YulBlock","src":"17909:72:87","statements":[{"nativeSrc":"17919:56:87","nodeType":"YulAssignment","src":"17919:56:87","value":{"arguments":[{"name":"base","nativeSrc":"17949:4:87","nodeType":"YulIdentifier","src":"17949:4:87"},{"arguments":[{"name":"exponent","nativeSrc":"17959:8:87","nodeType":"YulIdentifier","src":"17959:8:87"},{"kind":"number","nativeSrc":"17969:4:87","nodeType":"YulLiteral","src":"17969:4:87","type":"","value":"0xff"}],"functionName":{"name":"and","nativeSrc":"17955:3:87","nodeType":"YulIdentifier","src":"17955:3:87"},"nativeSrc":"17955:19:87","nodeType":"YulFunctionCall","src":"17955:19:87"}],"functionName":{"name":"checked_exp_unsigned","nativeSrc":"17928:20:87","nodeType":"YulIdentifier","src":"17928:20:87"},"nativeSrc":"17928:47:87","nodeType":"YulFunctionCall","src":"17928:47:87"},"variableNames":[{"name":"power","nativeSrc":"17919:5:87","nodeType":"YulIdentifier","src":"17919:5:87"}]}]},"name":"checked_exp_t_uint256_t_uint8","nativeSrc":"17841:140:87","nodeType":"YulFunctionDefinition","parameters":[{"name":"base","nativeSrc":"17880:4:87","nodeType":"YulTypedName","src":"17880:4:87","type":""},{"name":"exponent","nativeSrc":"17886:8:87","nodeType":"YulTypedName","src":"17886:8:87","type":""}],"returnVariables":[{"name":"power","nativeSrc":"17899:5:87","nodeType":"YulTypedName","src":"17899:5:87","type":""}],"src":"17841:140:87"}]},"contents":"{\n    { }\n    function validator_revert_uint8(value)\n    {\n        if iszero(eq(value, and(value, 0xff))) { revert(0, 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 allocate_memory_2005() -> memPtr\n    {\n        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    }\n    function allocate_memory_2008() -> memPtr\n    {\n        memPtr := mload(64)\n        let newFreePtr := add(memPtr, 480)\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), not(31)))\n        if or(gt(newFreePtr, 0xffffffffffffffff), lt(newFreePtr, memPtr)) { panic_error_0x41() }\n        mstore(64, newFreePtr)\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), not(31)), 0x20)\n    }\n    function abi_decode_bytes(offset, end) -> array\n    {\n        if iszero(slt(add(offset, 0x1f), end)) { revert(0, 0) }\n        let length := calldataload(offset)\n        let array_1 := allocate_memory(array_allocation_size_bytes(length))\n        mstore(array_1, length)\n        if gt(add(add(offset, length), 0x20), end) { revert(0, 0) }\n        calldatacopy(add(array_1, 0x20), add(offset, 0x20), length)\n        mstore(add(add(array_1, length), 0x20), 0)\n        array := array_1\n    }\n    function abi_decode_tuple_t_uint8t_bytes_memory_ptr(headStart, dataEnd) -> value0, value1\n    {\n        if slt(sub(dataEnd, headStart), 64) { revert(0, 0) }\n        let value := calldataload(headStart)\n        validator_revert_uint8(value)\n        value0 := value\n        let offset := calldataload(add(headStart, 32))\n        if gt(offset, 0xffffffffffffffff) { revert(0, 0) }\n        value1 := abi_decode_bytes(add(headStart, offset), dataEnd)\n    }\n    function abi_encode_bytes(value, pos) -> end\n    {\n        let length := mload(value)\n        mstore(pos, length)\n        mcopy(add(pos, 0x20), add(value, 0x20), length)\n        mstore(add(add(pos, length), 0x20), 0)\n        end := add(add(pos, and(add(length, 31), not(31))), 0x20)\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_uint256__to_t_uint256__fromStack_reversed(headStart, value0) -> tail\n    {\n        tail := add(headStart, 32)\n        mstore(headStart, value0)\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 validator_revert_address(value)\n    {\n        if iszero(eq(value, and(value, sub(shl(160, 1), 1)))) { 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 panic_error_0x21()\n    {\n        mstore(0, shl(224, 0x4e487b71))\n        mstore(4, 0x21)\n        revert(0, 0x24)\n    }\n    function abi_encode_struct_SwapConfig(value, pos) -> end\n    {\n        let _1 := mload(value)\n        if iszero(lt(_1, 3))\n        {\n            mstore(0, shl(224, 0x4e487b71))\n            mstore(4, 0x21)\n            revert(0, 0x24)\n        }\n        mstore(pos, _1)\n        mstore(add(pos, 0x20), mload(add(value, 0x20)))\n        let memberValue0 := mload(add(value, 0x40))\n        mstore(add(pos, 0x40), 0x60)\n        end := abi_encode_bytes(memberValue0, add(pos, 0x60))\n    }\n    function abi_encode_tuple_t_struct$_SwapConfig_$1113_memory_ptr__to_t_struct$_SwapConfig_$1113_memory_ptr__fromStack_reversed(headStart, value0) -> tail\n    {\n        mstore(headStart, 32)\n        tail := abi_encode_struct_SwapConfig(value0, add(headStart, 32))\n    }\n    function validator_revert_bool(value)\n    {\n        if iszero(eq(value, iszero(iszero(value)))) { revert(0, 0) }\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_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_address__to_t_address__fromStack_reversed(headStart, value0) -> tail\n    {\n        tail := add(headStart, 32)\n        mstore(headStart, and(value0, sub(shl(160, 1), 1)))\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        if gt(offset, 0xffffffffffffffff) { revert(0, 0) }\n        value0 := abi_decode_bytes(add(headStart, offset), dataEnd)\n    }\n    function abi_encode_tuple_t_address_t_uint256_t_address__to_t_address_t_uint256_t_address__fromStack_reversed(headStart, value2, value1, value0) -> tail\n    {\n        tail := add(headStart, 96)\n        mstore(headStart, and(value0, sub(shl(160, 1), 1)))\n        mstore(add(headStart, 32), value1)\n        mstore(add(headStart, 64), and(value2, sub(shl(160, 1), 1)))\n    }\n    function abi_decode_tuple_t_uint256_fromMemory(headStart, dataEnd) -> value0\n    {\n        if slt(sub(dataEnd, headStart), 32) { revert(0, 0) }\n        let value := 0\n        value := mload(headStart)\n        value0 := value\n    }\n    function abi_decode_bytes_fromMemory(offset, end) -> array\n    {\n        if iszero(slt(add(offset, 0x1f), end)) { revert(0, 0) }\n        let length := mload(offset)\n        let array_1 := allocate_memory(array_allocation_size_bytes(length))\n        mstore(array_1, length)\n        if gt(add(add(offset, length), 0x20), end) { revert(0, 0) }\n        mcopy(add(array_1, 0x20), add(offset, 0x20), length)\n        mstore(add(add(array_1, length), 0x20), 0)\n        array := array_1\n    }\n    function abi_decode_tuple_t_bytes_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        value0 := abi_decode_bytes_fromMemory(add(headStart, offset), dataEnd)\n    }\n    function abi_decode_tuple_t_struct$_SwapConfig_$1113_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 slt(sub(dataEnd, _1), 0x60) { revert(0, 0) }\n        let value := allocate_memory_2005()\n        let value_1 := mload(_1)\n        if iszero(lt(value_1, 3)) { revert(0, 0) }\n        mstore(value, value_1)\n        let value_2 := 0\n        value_2 := mload(add(_1, 32))\n        mstore(add(value, 32), value_2)\n        let offset_1 := mload(add(_1, 64))\n        if gt(offset_1, 0xffffffffffffffff) { revert(0, 0) }\n        mstore(add(value, 64), abi_decode_bytes_fromMemory(add(_1, offset_1), dataEnd))\n        value0 := value\n    }\n    function abi_encode_tuple_t_struct$_SwapConfig_$1113_memory_ptr__to_t_struct$_SwapConfig_$1113_memory_ptr__fromStack_library_reversed(headStart, value0) -> tail\n    {\n        mstore(headStart, 32)\n        tail := abi_encode_struct_SwapConfig(value0, add(headStart, 32))\n    }\n    function abi_encode_tuple_t_struct$_SwapConfig_$1113_memory_ptr_t_struct$_SwapConfig_$1113_memory_ptr__to_t_struct$_SwapConfig_$1113_memory_ptr_t_struct$_SwapConfig_$1113_memory_ptr__fromStack_reversed(headStart, value1, value0) -> tail\n    {\n        mstore(headStart, 64)\n        let tail_1 := abi_encode_struct_SwapConfig(value0, add(headStart, 64))\n        mstore(add(headStart, 32), sub(tail_1, headStart))\n        tail := abi_encode_struct_SwapConfig(value1, tail_1)\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 array_dataslot_bytes_storage(ptr) -> data\n    {\n        mstore(0, ptr)\n        data := keccak256(0, 0x20)\n    }\n    function clean_up_bytearray_end_slots_bytes_storage(array, len, startIndex)\n    {\n        if gt(len, 31)\n        {\n            mstore(0, array)\n            let data := keccak256(0, 0x20)\n            let deleteStart := add(data, shr(5, add(startIndex, 31)))\n            if lt(startIndex, 0x20) { deleteStart := data }\n            let _1 := add(data, shr(5, add(len, 31)))\n            let start := deleteStart\n            for { } lt(start, _1) { start := add(start, 1) }\n            { sstore(start, 0) }\n        }\n    }\n    function extract_used_part_and_set_length_of_short_byte_array(data, len) -> used\n    {\n        used := or(and(data, not(shr(shl(3, len), not(0)))), shl(1, len))\n    }\n    function copy_byte_array_to_storage_from_t_bytes_memory_ptr_to_t_bytes_storage(slot, src)\n    {\n        let newLen := mload(src)\n        if gt(newLen, 0xffffffffffffffff) { panic_error_0x41() }\n        clean_up_bytearray_end_slots_bytes_storage(slot, extract_byte_array_length(sload(slot)), newLen)\n        let srcOffset := 0\n        srcOffset := 0x20\n        switch gt(newLen, 31)\n        case 1 {\n            let loopEnd := and(newLen, not(31))\n            let dstPtr := array_dataslot_bytes_storage(slot)\n            let i := 0\n            for { } lt(i, loopEnd) { i := add(i, 0x20) }\n            {\n                sstore(dstPtr, mload(add(src, srcOffset)))\n                dstPtr := add(dstPtr, 1)\n                srcOffset := add(srcOffset, 0x20)\n            }\n            if lt(loopEnd, newLen)\n            {\n                let lastValue := mload(add(src, srcOffset))\n                sstore(dstPtr, and(lastValue, not(shr(and(shl(3, newLen), 248), not(0)))))\n            }\n            sstore(slot, add(shl(1, newLen), 1))\n        }\n        default {\n            let value := 0\n            if newLen\n            {\n                value := mload(add(src, srcOffset))\n            }\n            sstore(slot, extract_used_part_and_set_length_of_short_byte_array(value, newLen))\n        }\n    }\n    function abi_encode_tuple_t_struct$_SwapConfig_$1113_memory_ptr_t_address_t_address_t_uint256_t_uint256__to_t_struct$_SwapConfig_$1113_memory_ptr_t_address_t_address_t_uint256_t_uint256__fromStack_library_reversed(headStart, value4, value3, value2, value1, value0) -> tail\n    {\n        mstore(headStart, 160)\n        tail := abi_encode_struct_SwapConfig(value0, add(headStart, 160))\n        mstore(add(headStart, 32), and(value1, sub(shl(160, 1), 1)))\n        mstore(add(headStart, 64), and(value2, sub(shl(160, 1), 1)))\n        mstore(add(headStart, 96), value3)\n        mstore(add(headStart, 128), value4)\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, sub(shl(160, 1), 1)))\n        mstore(add(headStart, 32), value1)\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_encode_tuple_t_address_t_uint256_t_address_t_rational_0_by_1__to_t_address_t_uint256_t_address_t_uint16__fromStack_reversed(headStart, value3, value2, value1, value0) -> tail\n    {\n        tail := add(headStart, 128)\n        mstore(headStart, and(value0, sub(shl(160, 1), 1)))\n        mstore(add(headStart, 32), value1)\n        mstore(add(headStart, 64), and(value2, sub(shl(160, 1), 1)))\n        mstore(add(headStart, 96), and(value3, 0xffff))\n    }\n    function abi_decode_struct_ReserveConfigurationMap_fromMemory(headStart, end) -> value\n    {\n        if slt(sub(end, headStart), 0x20) { revert(0, 0) }\n        let memPtr := 0\n        memPtr := mload(64)\n        let newFreePtr := add(memPtr, 0x20)\n        if or(gt(newFreePtr, 0xffffffffffffffff), lt(newFreePtr, memPtr)) { panic_error_0x41() }\n        mstore(64, newFreePtr)\n        value := memPtr\n        let value_1 := 0\n        value_1 := mload(headStart)\n        mstore(memPtr, value_1)\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_uint40_fromMemory(offset) -> value\n    {\n        value := mload(offset)\n        if iszero(eq(value, and(value, 0xffffffffff))) { revert(0, 0) }\n    }\n    function abi_decode_uint16_fromMemory(offset) -> value\n    {\n        value := mload(offset)\n        if iszero(eq(value, and(value, 0xffff))) { revert(0, 0) }\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_struct$_ReserveData_$17774_memory_ptr_fromMemory(headStart, dataEnd) -> value0\n    {\n        let _1 := slt(sub(dataEnd, headStart), 480)\n        if _1 { revert(0, 0) }\n        _1 := 0\n        let value := allocate_memory_2008()\n        mstore(value, abi_decode_struct_ReserveConfigurationMap_fromMemory(headStart, dataEnd))\n        mstore(add(value, 32), abi_decode_uint128_fromMemory(add(headStart, 32)))\n        mstore(add(value, 64), abi_decode_uint128_fromMemory(add(headStart, 64)))\n        mstore(add(value, 96), abi_decode_uint128_fromMemory(add(headStart, 96)))\n        mstore(add(value, 128), abi_decode_uint128_fromMemory(add(headStart, 128)))\n        mstore(add(value, 160), abi_decode_uint128_fromMemory(add(headStart, 160)))\n        mstore(add(value, 192), abi_decode_uint40_fromMemory(add(headStart, 192)))\n        mstore(add(value, 224), abi_decode_uint16_fromMemory(add(headStart, 224)))\n        mstore(add(value, 256), abi_decode_address_fromMemory(add(headStart, 256)))\n        mstore(add(value, 288), abi_decode_address_fromMemory(add(headStart, 288)))\n        mstore(add(value, 320), abi_decode_address_fromMemory(add(headStart, 320)))\n        mstore(add(value, 352), abi_decode_address_fromMemory(add(headStart, 352)))\n        mstore(add(value, 384), abi_decode_uint128_fromMemory(add(headStart, 384)))\n        mstore(add(value, 416), abi_decode_uint128_fromMemory(add(headStart, 416)))\n        mstore(add(value, 448), abi_decode_uint128_fromMemory(add(headStart, 448)))\n        value0 := value\n    }\n    function panic_error_0x11()\n    {\n        mstore(0, shl(224, 0x4e487b71))\n        mstore(4, 0x11)\n        revert(0, 0x24)\n    }\n    function checked_mul_t_uint256(x, y) -> product\n    {\n        product := mul(x, y)\n        if iszero(or(iszero(x), eq(y, div(product, x)))) { panic_error_0x11() }\n    }\n    function checked_sub_t_uint256(x, y) -> diff\n    {\n        diff := sub(x, y)\n        if gt(diff, x) { panic_error_0x11() }\n    }\n    function panic_error_0x12()\n    {\n        mstore(0, shl(224, 0x4e487b71))\n        mstore(4, 0x12)\n        revert(0, 0x24)\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 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        validator_revert_uint8(value)\n        value0 := value\n    }\n    function checked_sub_t_uint8(x, y) -> diff\n    {\n        diff := sub(and(x, 0xff), and(y, 0xff))\n        if gt(diff, 0xff) { panic_error_0x11() }\n    }\n    function checked_exp_helper(_base, exponent, max) -> power, base\n    {\n        power := 1\n        base := _base\n        for { } gt(exponent, 1) { }\n        {\n            if gt(base, div(max, base)) { panic_error_0x11() }\n            if and(exponent, 1) { power := mul(power, base) }\n            base := mul(base, base)\n            exponent := shr(1, exponent)\n        }\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            let _1 := 0\n            _1 := 0\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            let _2 := 0\n            _2 := 0\n            leave\n        }\n        let power_1, base_1 := checked_exp_helper(base, exponent, not(0))\n        if gt(power_1, div(not(0), base_1)) { panic_error_0x11() }\n        power := mul(power_1, base_1)\n    }\n    function checked_exp_t_uint256_t_uint8(base, exponent) -> power\n    {\n        power := checked_exp_unsigned(base, and(exponent, 0xff))\n    }\n}","id":87,"language":"Yul","name":"#utility.yul"}],"immutableReferences":{"23946":[{"length":32,"start":640},{"length":32,"start":796},{"length":32,"start":1336},{"length":32,"start":1573},{"length":32,"start":1698},{"length":32,"start":2603},{"length":32,"start":4174}],"23952":[{"length":32,"start":392},{"length":32,"start":2154},{"length":32,"start":2546},{"length":32,"start":4689}],"23955":[{"length":32,"start":443},{"length":32,"start":2930},{"length":32,"start":3224},{"length":32,"start":4299},{"length":32,"start":4478}],"23958":[{"length":32,"start":575},{"length":32,"start":888},{"length":32,"start":1082},{"length":32,"start":1795},{"length":32,"start":2728},{"length":32,"start":2896},{"length":32,"start":3190},{"length":32,"start":3354},{"length":32,"start":3490},{"length":32,"start":3713},{"length":32,"start":4013},{"length":32,"start":4333},{"length":32,"start":4525}],"24535":[{"length":32,"start":941},{"length":32,"start":3307},{"length":32,"start":3549},{"length":32,"start":3772},{"length":32,"start":4053}],"24856":[{"length":32,"start":250},{"length":32,"start":4369},{"length":32,"start":4573},{"length":32,"start":4890}]},"linkReferences":{"@ensuro/swaplibrary/contracts/SwapLibrary.sol":{"SwapLibrary":[{"length":20,"start":2338},{"length":20,"start":2866},{"length":20,"start":3156},{"length":20,"start":4266}]}},"object":"608060405234801561000f575f5ffd5b50600436106100cb575f3560e01c80635b9a4c3511610088578063b6b55f2511610063578063b6b55f2514610208578063ce96cb771461021b578063de846ae41461022e578063f3e0ffbf14610261575f5ffd5b80635b9a4c35146101835780639c4667a2146101aa5780639cd47128146101f5575f5ffd5b80630981b1c2146100cf5780631418983b146100f85780632e1a7d4d14610128578063402d267d1461013d57806342b054f0146101505780635a11745614610170575b5f5ffd5b6100e26100dd3660046115ab565b610274565b6040516100ef9190611626565b60405180910390f35b7f00000000000000000000000000000000000000000000000000000000000000005b6040519081526020016100ef565b61013b610136366004611638565b610312565b005b61011a61014b366004611663565b6104b5565b61016361015e366004611663565b61050a565b6040516100ef91906116e0565b61013b61017e3660046116ff565b61052e565b61011a7f000000000000000000000000000000000000000000000000000000000000000081565b6101dd6101b8366004611663565b507f000000000000000000000000000000000000000000000000000000000000000090565b6040516001600160a01b0390911681526020016100ef565b61013b61020336600461171a565b61061b565b61013b610216366004611638565b610698565b61011a610229366004611663565b61077a565b6101dd61023c366004611663565b507f000000000000000000000000000000000000000000000000000000000000000090565b61011a61026f366004611663565b6107c0565b60606001600160a01b037f00000000000000000000000000000000000000000000000000000000000000001630036102bf57604051632abf118b60e21b815260040160405180910390fd5b5f60ff841680156102d2576102d261167e565b90505f8180156102e4576102e461167e565b036100cb576102fb6102f530610840565b846108fb565b505060408051602081019091525f81525b92915050565b6001600160a01b037f000000000000000000000000000000000000000000000000000000000000000016300361035b57604051632abf118b60e21b815260040160405180910390fd5b80156104b257604051631a4ca37b60e21b81526001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000811660048301525f1960248301523060448301527f000000000000000000000000000000000000000000000000000000000000000016906369328dec906064016020604051808303815f875af11580156103f3573d5f5f3e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610417919061174c565b5061042181610a21565b6040516370a0823160e01b81523060048201526104b2907f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316906370a0823190602401602060405180830381865afa158015610487573d5f5f3e3d5ffd5b505050506040513d601f19601f820116820180604052508101906104ab919061174c565b6001610cc9565b50565b5f5f6104bf610f17565b805151909150600160381b1615806104de57508051516001603c1b1615155b806104f457508051516702000000000000001615155b1561050157505f92915050565b505f1992915050565b60408051606080820183525f80835260208301529181019190915261030c82610840565b6001600160a01b037f000000000000000000000000000000000000000000000000000000000000000016300361057757604051632abf118b60e21b815260040160405180910390fd5b5f610580610f17565b61010001519050811580156105f957506040516370a0823160e01b81523060048201526001600160a01b038216906370a0823190602401602060405180830381865afa1580156105d2573d5f5f3e3d5ffd5b505050506040513d601f19601f820116820180604052508101906105f6919061174c565b15155b15610617576040516342a176d160e11b815260040160405180910390fd5b5050565b6001600160a01b037f000000000000000000000000000000000000000000000000000000000000000016300361066457604051632abf118b60e21b815260040160405180910390fd5b60408051606081019091526104b290805f81526020015f815260200160405180602001604052805f815250815250826108fb565b6001600160a01b037f00000000000000000000000000000000000000000000000000000000000000001630036106e157604051632abf118b60e21b815260040160405180910390fd5b6106ea81611044565b6040516370a0823160e01b81523060048201526104b2907f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316906370a0823190602401602060405180830381865afa158015610750573d5f5f3e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610774919061174c565b5f610cc9565b5f5f610784610f17565b805151909150600160381b1615806107a357508051516001603c1b1615155b156107b057505f92915050565b6107b9836107c0565b9392505050565b5f61030c6107cc610f17565b61010001516040516370a0823160e01b81526001600160a01b038581166004830152909116906370a0823190602401602060405180830381865afa158015610816573d5f5f3e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061083a919061174c565b83611178565b60408051606080820183525f8083526020830152918101919091526040516347e5753360e01b81527f000000000000000000000000000000000000000000000000000000000000000060048201525f906001600160a01b038416906347e57533906024015f60405180830381865afa1580156108be573d5f5f3e3d5ffd5b505050506040513d5f823e601f3d908101601f191682016040526108e591908101906117b0565b9050808060200190518101906107b991906117e2565b5f8180602001905181019061091091906117e2565b604051632cbf28cb60e21b815290915073__$acbb9ece542dcf2065f41aa3c8cca5827e$__9063b2fca32c9061094a9084906004016116e0565b5f6040518083038186803b158015610960575f5ffd5b505af4158015610972573d5f5f3e3d5ffd5b5050505081518160405160200161098991906116e0565b60405160208183030381529060405251146109b7576040516350701b6160e01b815260040160405180910390fd5b7fca7f7aa563866a1d31c74deba224724d1da9c35cbb6f783f2ccf0182f91e34f883826040516109e892919061186e565b60405180910390a17f0000000000000000000000000000000000000000000000000000000000000000610a1b838261191e565b50505050565b6001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000163003610a6a57604051632abf118b60e21b815260040160405180910390fd5b80156104b2575f610a79611234565b90505f610a8461130a565b6040516370a0823160e01b8152306004820152909150610b17906001600160a01b037f000000000000000000000000000000000000000000000000000000000000000016906370a0823190602401602060405180830381865afa158015610aed573d5f5f3e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610b11919061174c565b30611178565b8310610c45576040516370a0823160e01b815230600482015273__$acbb9ece542dcf2065f41aa3c8cca5827e$__9063775669159084907f0000000000000000000000000000000000000000000000000000000000000000907f0000000000000000000000000000000000000000000000000000000000000000906001600160a01b038316906370a0823190602401602060405180830381865afa158015610bc1573d5f5f3e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610be5919061174c565b866040518663ffffffff1660e01b8152600401610c069594939291906119d9565b602060405180830381865af4158015610c21573d5f5f3e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610a1b919061174c565b60405163581e517d60e01b815273__$acbb9ece542dcf2065f41aa3c8cca5827e$__9063581e517d90610c069085907f0000000000000000000000000000000000000000000000000000000000000000907f000000000000000000000000000000000000000000000000000000000000000090899088906004016119d9565b505050565b815f03610cd4575050565b60405163095ea7b360e01b81526001600160a01b037f000000000000000000000000000000000000000000000000000000000000000081166004830152602482018490527f0000000000000000000000000000000000000000000000000000000000000000169063095ea7b3906044016020604051808303815f875af1158015610d60573d5f5f3e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610d849190611a18565b508015610e6a5760405163617ba03760e01b81526001600160a01b037f000000000000000000000000000000000000000000000000000000000000000081166004830152602482018490523060448301525f60648301527f0000000000000000000000000000000000000000000000000000000000000000169063617ba037906084015f604051808303815f87803b158015610e1e575f5ffd5b505af1925050508015610e2f575060015b610617576040518281527f323f803ab99bd4b7b37bba0e83169793239f293cc8b9d11837997563c5902eac9060200160405180910390a15050565b60405163617ba03760e01b81526001600160a01b037f000000000000000000000000000000000000000000000000000000000000000081166004830152602482018490523060448301525f60648301527f0000000000000000000000000000000000000000000000000000000000000000169063617ba037906084015f604051808303815f87803b158015610efd575f5ffd5b505af1158015610f0f573d5f5f3e3d5ffd5b505050505050565b60408051610200810182525f6101e08201818152825260208201819052918101829052606081018290526080810182905260a0810182905260c0810182905260e08101829052610100810182905261012081018290526101408101829052610160810182905261018081018290526101a081018290526101c08101919091526040516335ea6a7560e01b81526001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000811660048301527f000000000000000000000000000000000000000000000000000000000000000016906335ea6a75906024016101e060405180830381865afa15801561101b573d5f5f3e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061103f9190611ac7565b905090565b6001600160a01b037f000000000000000000000000000000000000000000000000000000000000000016300361108d57604051632abf118b60e21b815260040160405180910390fd5b80156104b25761109b611234565b604051637756691560e01b815273__$acbb9ece542dcf2065f41aa3c8cca5827e$__9163775669159161113991907f0000000000000000000000000000000000000000000000000000000000000000907f00000000000000000000000000000000000000000000000000000000000000009087907f0000000000000000000000000000000000000000000000000000000000000000906004016119d9565b602060405180830381865af4158015611154573d5f5f3e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610617919061174c565b5f6111a27f000000000000000000000000000000000000000000000000000000000000000061133e565b61122a61120b6111d17f000000000000000000000000000000000000000000000000000000000000000061133e565b6111db9087611c05565b7f00000000000000000000000000000000000000000000000000000000000000005b670de0b6b3a76400006113b5565b61121485610840565b602001516111fd90670de0b6b3a7640000611c1c565b6107b99190611c43565b60408051606080820183525f8083526020830152918101919091527f0000000000000000000000000000000000000000000000000000000000000000805461127b9061189b565b80601f01602080910402602001604051908101604052809291908181526020018280546112a79061189b565b80156112f25780601f106112c9576101008083540402835291602001916112f2565b820191905f5260205f20905b8154815290600101906020018083116112d557829003601f168201915b505050505080602001905181019061103f91906117e2565b5f61103f670de0b6b3a7640000807f00000000000000000000000000000000000000000000000000000000000000006113b5565b5f816001600160a01b031663313ce5676040518163ffffffff1660e01b8152600401602060405180830381865afa15801561137b573d5f5f3e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061139f9190611c62565b6113aa906012611c7d565b61030c90600a611d79565b5f5f5f6113c28686611465565b91509150815f036113e6578381816113dc576113dc611c2f565b04925050506107b9565b8184116113fd576113fd6003851502601118611481565b5f848688095f868103871696879004966002600389028118808a02820302808a02820302808a02820302808a02820302808a02820302808a02909103029181900381900460010185841190960395909502919093039390930492909217029150509392505050565b5f805f1983850993909202808410938190039390930393915050565b634e487b715f52806020526024601cfd5b60ff811681146104b2575f5ffd5b634e487b7160e01b5f52604160045260245ffd5b6040516060810167ffffffffffffffff811182821017156114d7576114d76114a0565b60405290565b6040516101e0810167ffffffffffffffff811182821017156114d7576114d76114a0565b604051601f8201601f1916810167ffffffffffffffff8111828210171561152a5761152a6114a0565b604052919050565b5f67ffffffffffffffff82111561154b5761154b6114a0565b50601f01601f191660200190565b5f82601f830112611568575f5ffd5b813561157b61157682611532565b611501565b81815284602083860101111561158f575f5ffd5b816020850160208301375f918101602001919091529392505050565b5f5f604083850312156115bc575f5ffd5b82356115c781611492565b9150602083013567ffffffffffffffff8111156115e2575f5ffd5b6115ee85828601611559565b9150509250929050565b5f81518084528060208401602086015e5f602082860101526020601f19601f83011685010191505092915050565b602081525f6107b960208301846115f8565b5f60208284031215611648575f5ffd5b5035919050565b6001600160a01b03811681146104b2575f5ffd5b5f60208284031215611673575f5ffd5b81356107b98161164f565b634e487b7160e01b5f52602160045260245ffd5b5f8151600381106116b157634e487b7160e01b5f52602160045260245ffd5b80845250602082015160208401526040820151606060408501526116d860608501826115f8565b949350505050565b602081525f6107b96020830184611692565b80151581146104b2575f5ffd5b5f6020828403121561170f575f5ffd5b81356107b9816116f2565b5f6020828403121561172a575f5ffd5b813567ffffffffffffffff811115611740575f5ffd5b6116d884828501611559565b5f6020828403121561175c575f5ffd5b5051919050565b5f82601f830112611772575f5ffd5b815161178061157682611532565b818152846020838601011115611794575f5ffd5b8160208501602083015e5f918101602001919091529392505050565b5f602082840312156117c0575f5ffd5b815167ffffffffffffffff8111156117d6575f5ffd5b6116d884828501611763565b5f602082840312156117f2575f5ffd5b815167ffffffffffffffff811115611808575f5ffd5b820160608185031215611819575f5ffd5b6118216114b4565b81516003811061182f575f5ffd5b815260208281015190820152604082015167ffffffffffffffff811115611854575f5ffd5b61186086828501611763565b604083015250949350505050565b604081525f6118806040830185611692565b82810360208401526118928185611692565b95945050505050565b600181811c908216806118af57607f821691505b6020821081036118cd57634e487b7160e01b5f52602260045260245ffd5b50919050565b601f821115610cc457805f5260205f20601f840160051c810160208510156118f85750805b601f840160051c820191505b81811015611917575f8155600101611904565b5050505050565b815167ffffffffffffffff811115611938576119386114a0565b61194c81611946845461189b565b846118d3565b6020601f82116001811461197e575f83156119675750848201515b5f19600385901b1c1916600184901b178455611917565b5f84815260208120601f198516915b828110156119ad578785015182556020948501946001909201910161198d565b50848210156119ca57868401515f19600387901b60f8161c191681555b50505050600190811b01905550565b60a081525f6119eb60a0830188611692565b6001600160a01b039687166020840152949095166040820152606081019290925260809091015292915050565b5f60208284031215611a28575f5ffd5b81516107b9816116f2565b5f60208284031215611a43575f5ffd5b6040516020810167ffffffffffffffff81118282101715611a6657611a666114a0565b6040529151825250919050565b80516fffffffffffffffffffffffffffffffff81168114611a92575f5ffd5b919050565b805164ffffffffff81168114611a92575f5ffd5b805161ffff81168114611a92575f5ffd5b8051611a928161164f565b5f6101e0828403128015611ad9575f5ffd5b50611ae26114dd565b611aec8484611a33565b8152611afa60208401611a73565b6020820152611b0b60408401611a73565b6040820152611b1c60608401611a73565b6060820152611b2d60808401611a73565b6080820152611b3e60a08401611a73565b60a0820152611b4f60c08401611a97565b60c0820152611b6060e08401611aab565b60e0820152611b726101008401611abc565b610100820152611b856101208401611abc565b610120820152611b986101408401611abc565b610140820152611bab6101608401611abc565b610160820152611bbe6101808401611a73565b610180820152611bd16101a08401611a73565b6101a0820152611be46101c08401611a73565b6101c08201529392505050565b634e487b7160e01b5f52601160045260245ffd5b808202811582820484141761030c5761030c611bf1565b8181038181111561030c5761030c611bf1565b634e487b7160e01b5f52601260045260245ffd5b5f82611c5d57634e487b7160e01b5f52601260045260245ffd5b500490565b5f60208284031215611c72575f5ffd5b81516107b981611492565b60ff828116828216039081111561030c5761030c611bf1565b6001815b6001841115611cd157808504811115611cb557611cb5611bf1565b6001841615611cc357908102905b60019390931c928002611c9a565b935093915050565b5f82611ce75750600161030c565b81611cf357505f61030c565b8160018114611d095760028114611d1357611d2f565b600191505061030c565b60ff841115611d2457611d24611bf1565b50506001821b61030c565b5060208310610133831016604e8410600b8410161715611d52575081810a61030c565b611d5e5f198484611c96565b805f1904821115611d7157611d71611bf1565b029392505050565b5f6107b960ff841683611cd956fea26469706673582212200486cae3c8362248f1f209d3ecb8c8f0b2bc0d1f37ef0231456377b0a69c227b64736f6c634300081e0033","opcodes":"PUSH1 0x80 PUSH1 0x40 MSTORE CALLVALUE DUP1 ISZERO PUSH2 0xF JUMPI PUSH0 PUSH0 REVERT JUMPDEST POP PUSH1 0x4 CALLDATASIZE LT PUSH2 0xCB JUMPI PUSH0 CALLDATALOAD PUSH1 0xE0 SHR DUP1 PUSH4 0x5B9A4C35 GT PUSH2 0x88 JUMPI DUP1 PUSH4 0xB6B55F25 GT PUSH2 0x63 JUMPI DUP1 PUSH4 0xB6B55F25 EQ PUSH2 0x208 JUMPI DUP1 PUSH4 0xCE96CB77 EQ PUSH2 0x21B JUMPI DUP1 PUSH4 0xDE846AE4 EQ PUSH2 0x22E JUMPI DUP1 PUSH4 0xF3E0FFBF EQ PUSH2 0x261 JUMPI PUSH0 PUSH0 REVERT JUMPDEST DUP1 PUSH4 0x5B9A4C35 EQ PUSH2 0x183 JUMPI DUP1 PUSH4 0x9C4667A2 EQ PUSH2 0x1AA JUMPI DUP1 PUSH4 0x9CD47128 EQ PUSH2 0x1F5 JUMPI PUSH0 PUSH0 REVERT JUMPDEST DUP1 PUSH4 0x981B1C2 EQ PUSH2 0xCF JUMPI DUP1 PUSH4 0x1418983B EQ PUSH2 0xF8 JUMPI DUP1 PUSH4 0x2E1A7D4D EQ PUSH2 0x128 JUMPI DUP1 PUSH4 0x402D267D EQ PUSH2 0x13D JUMPI DUP1 PUSH4 0x42B054F0 EQ PUSH2 0x150 JUMPI DUP1 PUSH4 0x5A117456 EQ PUSH2 0x170 JUMPI JUMPDEST PUSH0 PUSH0 REVERT JUMPDEST PUSH2 0xE2 PUSH2 0xDD CALLDATASIZE PUSH1 0x4 PUSH2 0x15AB JUMP JUMPDEST PUSH2 0x274 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0xEF SWAP2 SWAP1 PUSH2 0x1626 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST PUSH32 0x0 JUMPDEST PUSH1 0x40 MLOAD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH2 0xEF JUMP JUMPDEST PUSH2 0x13B PUSH2 0x136 CALLDATASIZE PUSH1 0x4 PUSH2 0x1638 JUMP JUMPDEST PUSH2 0x312 JUMP JUMPDEST STOP JUMPDEST PUSH2 0x11A PUSH2 0x14B CALLDATASIZE PUSH1 0x4 PUSH2 0x1663 JUMP JUMPDEST PUSH2 0x4B5 JUMP JUMPDEST PUSH2 0x163 PUSH2 0x15E CALLDATASIZE PUSH1 0x4 PUSH2 0x1663 JUMP JUMPDEST PUSH2 0x50A JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0xEF SWAP2 SWAP1 PUSH2 0x16E0 JUMP JUMPDEST PUSH2 0x13B PUSH2 0x17E CALLDATASIZE PUSH1 0x4 PUSH2 0x16FF JUMP JUMPDEST PUSH2 0x52E JUMP JUMPDEST PUSH2 0x11A PUSH32 0x0 DUP2 JUMP JUMPDEST PUSH2 0x1DD PUSH2 0x1B8 CALLDATASIZE PUSH1 0x4 PUSH2 0x1663 JUMP JUMPDEST POP PUSH32 0x0 SWAP1 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP1 SWAP2 AND DUP2 MSTORE PUSH1 0x20 ADD PUSH2 0xEF JUMP JUMPDEST PUSH2 0x13B PUSH2 0x203 CALLDATASIZE PUSH1 0x4 PUSH2 0x171A JUMP JUMPDEST PUSH2 0x61B JUMP JUMPDEST PUSH2 0x13B PUSH2 0x216 CALLDATASIZE PUSH1 0x4 PUSH2 0x1638 JUMP JUMPDEST PUSH2 0x698 JUMP JUMPDEST PUSH2 0x11A PUSH2 0x229 CALLDATASIZE PUSH1 0x4 PUSH2 0x1663 JUMP JUMPDEST PUSH2 0x77A JUMP JUMPDEST PUSH2 0x1DD PUSH2 0x23C CALLDATASIZE PUSH1 0x4 PUSH2 0x1663 JUMP JUMPDEST POP PUSH32 0x0 SWAP1 JUMP JUMPDEST PUSH2 0x11A PUSH2 0x26F CALLDATASIZE PUSH1 0x4 PUSH2 0x1663 JUMP JUMPDEST PUSH2 0x7C0 JUMP JUMPDEST PUSH1 0x60 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB PUSH32 0x0 AND ADDRESS SUB PUSH2 0x2BF JUMPI PUSH1 0x40 MLOAD PUSH4 0x2ABF118B PUSH1 0xE2 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH0 PUSH1 0xFF DUP5 AND DUP1 ISZERO PUSH2 0x2D2 JUMPI PUSH2 0x2D2 PUSH2 0x167E JUMP JUMPDEST SWAP1 POP PUSH0 DUP2 DUP1 ISZERO PUSH2 0x2E4 JUMPI PUSH2 0x2E4 PUSH2 0x167E JUMP JUMPDEST SUB PUSH2 0xCB JUMPI PUSH2 0x2FB PUSH2 0x2F5 ADDRESS PUSH2 0x840 JUMP JUMPDEST DUP5 PUSH2 0x8FB JUMP JUMPDEST POP POP PUSH1 0x40 DUP1 MLOAD PUSH1 0x20 DUP2 ADD SWAP1 SWAP2 MSTORE PUSH0 DUP2 MSTORE JUMPDEST SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB PUSH32 0x0 AND ADDRESS SUB PUSH2 0x35B JUMPI PUSH1 0x40 MLOAD PUSH4 0x2ABF118B PUSH1 0xE2 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST DUP1 ISZERO PUSH2 0x4B2 JUMPI PUSH1 0x40 MLOAD PUSH4 0x1A4CA37B PUSH1 0xE2 SHL DUP2 MSTORE PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB PUSH32 0x0 DUP2 AND PUSH1 0x4 DUP4 ADD MSTORE PUSH0 NOT PUSH1 0x24 DUP4 ADD MSTORE ADDRESS PUSH1 0x44 DUP4 ADD MSTORE PUSH32 0x0 AND SWAP1 PUSH4 0x69328DEC SWAP1 PUSH1 0x64 ADD PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 PUSH0 DUP8 GAS CALL ISZERO DUP1 ISZERO PUSH2 0x3F3 JUMPI RETURNDATASIZE PUSH0 PUSH0 RETURNDATACOPY RETURNDATASIZE PUSH0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP3 ADD DUP1 PUSH1 0x40 MSTORE POP DUP2 ADD SWAP1 PUSH2 0x417 SWAP2 SWAP1 PUSH2 0x174C JUMP JUMPDEST POP PUSH2 0x421 DUP2 PUSH2 0xA21 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH4 0x70A08231 PUSH1 0xE0 SHL DUP2 MSTORE ADDRESS PUSH1 0x4 DUP3 ADD MSTORE PUSH2 0x4B2 SWAP1 PUSH32 0x0 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND SWAP1 PUSH4 0x70A08231 SWAP1 PUSH1 0x24 ADD PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x487 JUMPI RETURNDATASIZE PUSH0 PUSH0 RETURNDATACOPY RETURNDATASIZE PUSH0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP3 ADD DUP1 PUSH1 0x40 MSTORE POP DUP2 ADD SWAP1 PUSH2 0x4AB SWAP2 SWAP1 PUSH2 0x174C JUMP JUMPDEST PUSH1 0x1 PUSH2 0xCC9 JUMP JUMPDEST POP JUMP JUMPDEST PUSH0 PUSH0 PUSH2 0x4BF PUSH2 0xF17 JUMP JUMPDEST DUP1 MLOAD MLOAD SWAP1 SWAP2 POP PUSH1 0x1 PUSH1 0x38 SHL AND ISZERO DUP1 PUSH2 0x4DE JUMPI POP DUP1 MLOAD MLOAD PUSH1 0x1 PUSH1 0x3C SHL AND ISZERO ISZERO JUMPDEST DUP1 PUSH2 0x4F4 JUMPI POP DUP1 MLOAD MLOAD PUSH8 0x200000000000000 AND ISZERO ISZERO JUMPDEST ISZERO PUSH2 0x501 JUMPI POP PUSH0 SWAP3 SWAP2 POP POP JUMP JUMPDEST POP PUSH0 NOT SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH1 0x60 DUP1 DUP3 ADD DUP4 MSTORE PUSH0 DUP1 DUP4 MSTORE PUSH1 0x20 DUP4 ADD MSTORE SWAP2 DUP2 ADD SWAP2 SWAP1 SWAP2 MSTORE PUSH2 0x30C DUP3 PUSH2 0x840 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB PUSH32 0x0 AND ADDRESS SUB PUSH2 0x577 JUMPI PUSH1 0x40 MLOAD PUSH4 0x2ABF118B PUSH1 0xE2 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH0 PUSH2 0x580 PUSH2 0xF17 JUMP JUMPDEST PUSH2 0x100 ADD MLOAD SWAP1 POP DUP2 ISZERO DUP1 ISZERO PUSH2 0x5F9 JUMPI POP PUSH1 0x40 MLOAD PUSH4 0x70A08231 PUSH1 0xE0 SHL DUP2 MSTORE ADDRESS PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP3 AND SWAP1 PUSH4 0x70A08231 SWAP1 PUSH1 0x24 ADD PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x5D2 JUMPI RETURNDATASIZE PUSH0 PUSH0 RETURNDATACOPY RETURNDATASIZE PUSH0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP3 ADD DUP1 PUSH1 0x40 MSTORE POP DUP2 ADD SWAP1 PUSH2 0x5F6 SWAP2 SWAP1 PUSH2 0x174C JUMP JUMPDEST ISZERO ISZERO JUMPDEST ISZERO PUSH2 0x617 JUMPI PUSH1 0x40 MLOAD PUSH4 0x42A176D1 PUSH1 0xE1 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST POP POP JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB PUSH32 0x0 AND ADDRESS SUB PUSH2 0x664 JUMPI PUSH1 0x40 MLOAD PUSH4 0x2ABF118B PUSH1 0xE2 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH1 0x60 DUP2 ADD SWAP1 SWAP2 MSTORE PUSH2 0x4B2 SWAP1 DUP1 PUSH0 DUP2 MSTORE PUSH1 0x20 ADD PUSH0 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x40 MLOAD DUP1 PUSH1 0x20 ADD PUSH1 0x40 MSTORE DUP1 PUSH0 DUP2 MSTORE POP DUP2 MSTORE POP DUP3 PUSH2 0x8FB JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB PUSH32 0x0 AND ADDRESS SUB PUSH2 0x6E1 JUMPI PUSH1 0x40 MLOAD PUSH4 0x2ABF118B PUSH1 0xE2 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH2 0x6EA DUP2 PUSH2 0x1044 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH4 0x70A08231 PUSH1 0xE0 SHL DUP2 MSTORE ADDRESS PUSH1 0x4 DUP3 ADD MSTORE PUSH2 0x4B2 SWAP1 PUSH32 0x0 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND SWAP1 PUSH4 0x70A08231 SWAP1 PUSH1 0x24 ADD PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x750 JUMPI RETURNDATASIZE PUSH0 PUSH0 RETURNDATACOPY RETURNDATASIZE PUSH0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP3 ADD DUP1 PUSH1 0x40 MSTORE POP DUP2 ADD SWAP1 PUSH2 0x774 SWAP2 SWAP1 PUSH2 0x174C JUMP JUMPDEST PUSH0 PUSH2 0xCC9 JUMP JUMPDEST PUSH0 PUSH0 PUSH2 0x784 PUSH2 0xF17 JUMP JUMPDEST DUP1 MLOAD MLOAD SWAP1 SWAP2 POP PUSH1 0x1 PUSH1 0x38 SHL AND ISZERO DUP1 PUSH2 0x7A3 JUMPI POP DUP1 MLOAD MLOAD PUSH1 0x1 PUSH1 0x3C SHL AND ISZERO ISZERO JUMPDEST ISZERO PUSH2 0x7B0 JUMPI POP PUSH0 SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH2 0x7B9 DUP4 PUSH2 0x7C0 JUMP JUMPDEST SWAP4 SWAP3 POP POP POP JUMP JUMPDEST PUSH0 PUSH2 0x30C PUSH2 0x7CC PUSH2 0xF17 JUMP JUMPDEST PUSH2 0x100 ADD MLOAD PUSH1 0x40 MLOAD PUSH4 0x70A08231 PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP6 DUP2 AND PUSH1 0x4 DUP4 ADD MSTORE SWAP1 SWAP2 AND SWAP1 PUSH4 0x70A08231 SWAP1 PUSH1 0x24 ADD PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x816 JUMPI RETURNDATASIZE PUSH0 PUSH0 RETURNDATACOPY RETURNDATASIZE PUSH0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP3 ADD DUP1 PUSH1 0x40 MSTORE POP DUP2 ADD SWAP1 PUSH2 0x83A SWAP2 SWAP1 PUSH2 0x174C JUMP JUMPDEST DUP4 PUSH2 0x1178 JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH1 0x60 DUP1 DUP3 ADD DUP4 MSTORE PUSH0 DUP1 DUP4 MSTORE PUSH1 0x20 DUP4 ADD MSTORE SWAP2 DUP2 ADD SWAP2 SWAP1 SWAP2 MSTORE PUSH1 0x40 MLOAD PUSH4 0x47E57533 PUSH1 0xE0 SHL DUP2 MSTORE PUSH32 0x0 PUSH1 0x4 DUP3 ADD MSTORE PUSH0 SWAP1 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP5 AND SWAP1 PUSH4 0x47E57533 SWAP1 PUSH1 0x24 ADD PUSH0 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x8BE JUMPI RETURNDATASIZE PUSH0 PUSH0 RETURNDATACOPY RETURNDATASIZE PUSH0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH0 DUP3 RETURNDATACOPY PUSH1 0x1F RETURNDATASIZE SWAP1 DUP2 ADD PUSH1 0x1F NOT AND DUP3 ADD PUSH1 0x40 MSTORE PUSH2 0x8E5 SWAP2 SWAP1 DUP2 ADD SWAP1 PUSH2 0x17B0 JUMP JUMPDEST SWAP1 POP DUP1 DUP1 PUSH1 0x20 ADD SWAP1 MLOAD DUP2 ADD SWAP1 PUSH2 0x7B9 SWAP2 SWAP1 PUSH2 0x17E2 JUMP JUMPDEST PUSH0 DUP2 DUP1 PUSH1 0x20 ADD SWAP1 MLOAD DUP2 ADD SWAP1 PUSH2 0x910 SWAP2 SWAP1 PUSH2 0x17E2 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH4 0x2CBF28CB PUSH1 0xE2 SHL DUP2 MSTORE SWAP1 SWAP2 POP PUSH20 0x0 SWAP1 PUSH4 0xB2FCA32C SWAP1 PUSH2 0x94A SWAP1 DUP5 SWAP1 PUSH1 0x4 ADD PUSH2 0x16E0 JUMP JUMPDEST PUSH0 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x960 JUMPI PUSH0 PUSH0 REVERT JUMPDEST POP GAS DELEGATECALL ISZERO DUP1 ISZERO PUSH2 0x972 JUMPI RETURNDATASIZE PUSH0 PUSH0 RETURNDATACOPY RETURNDATASIZE PUSH0 REVERT JUMPDEST POP POP POP POP DUP2 MLOAD DUP2 PUSH1 0x40 MLOAD PUSH1 0x20 ADD PUSH2 0x989 SWAP2 SWAP1 PUSH2 0x16E0 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH1 0x20 DUP2 DUP4 SUB SUB DUP2 MSTORE SWAP1 PUSH1 0x40 MSTORE MLOAD EQ PUSH2 0x9B7 JUMPI PUSH1 0x40 MLOAD PUSH4 0x50701B61 PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH32 0xCA7F7AA563866A1D31C74DEBA224724D1DA9C35CBB6F783F2CCF0182F91E34F8 DUP4 DUP3 PUSH1 0x40 MLOAD PUSH2 0x9E8 SWAP3 SWAP2 SWAP1 PUSH2 0x186E JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 LOG1 PUSH32 0x0 PUSH2 0xA1B DUP4 DUP3 PUSH2 0x191E JUMP JUMPDEST POP POP POP POP JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB PUSH32 0x0 AND ADDRESS SUB PUSH2 0xA6A JUMPI PUSH1 0x40 MLOAD PUSH4 0x2ABF118B PUSH1 0xE2 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST DUP1 ISZERO PUSH2 0x4B2 JUMPI PUSH0 PUSH2 0xA79 PUSH2 0x1234 JUMP JUMPDEST SWAP1 POP PUSH0 PUSH2 0xA84 PUSH2 0x130A JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH4 0x70A08231 PUSH1 0xE0 SHL DUP2 MSTORE ADDRESS PUSH1 0x4 DUP3 ADD MSTORE SWAP1 SWAP2 POP PUSH2 0xB17 SWAP1 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB PUSH32 0x0 AND SWAP1 PUSH4 0x70A08231 SWAP1 PUSH1 0x24 ADD PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0xAED JUMPI RETURNDATASIZE PUSH0 PUSH0 RETURNDATACOPY RETURNDATASIZE PUSH0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP3 ADD DUP1 PUSH1 0x40 MSTORE POP DUP2 ADD SWAP1 PUSH2 0xB11 SWAP2 SWAP1 PUSH2 0x174C JUMP JUMPDEST ADDRESS PUSH2 0x1178 JUMP JUMPDEST DUP4 LT PUSH2 0xC45 JUMPI PUSH1 0x40 MLOAD PUSH4 0x70A08231 PUSH1 0xE0 SHL DUP2 MSTORE ADDRESS PUSH1 0x4 DUP3 ADD MSTORE PUSH20 0x0 SWAP1 PUSH4 0x77566915 SWAP1 DUP5 SWAP1 PUSH32 0x0 SWAP1 PUSH32 0x0 SWAP1 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP4 AND SWAP1 PUSH4 0x70A08231 SWAP1 PUSH1 0x24 ADD PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0xBC1 JUMPI RETURNDATASIZE PUSH0 PUSH0 RETURNDATACOPY RETURNDATASIZE PUSH0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP3 ADD DUP1 PUSH1 0x40 MSTORE POP DUP2 ADD SWAP1 PUSH2 0xBE5 SWAP2 SWAP1 PUSH2 0x174C JUMP JUMPDEST DUP7 PUSH1 0x40 MLOAD DUP7 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0xC06 SWAP6 SWAP5 SWAP4 SWAP3 SWAP2 SWAP1 PUSH2 0x19D9 JUMP JUMPDEST PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 GAS DELEGATECALL ISZERO DUP1 ISZERO PUSH2 0xC21 JUMPI RETURNDATASIZE PUSH0 PUSH0 RETURNDATACOPY RETURNDATASIZE PUSH0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP3 ADD DUP1 PUSH1 0x40 MSTORE POP DUP2 ADD SWAP1 PUSH2 0xA1B SWAP2 SWAP1 PUSH2 0x174C JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH4 0x581E517D PUSH1 0xE0 SHL DUP2 MSTORE PUSH20 0x0 SWAP1 PUSH4 0x581E517D SWAP1 PUSH2 0xC06 SWAP1 DUP6 SWAP1 PUSH32 0x0 SWAP1 PUSH32 0x0 SWAP1 DUP10 SWAP1 DUP9 SWAP1 PUSH1 0x4 ADD PUSH2 0x19D9 JUMP JUMPDEST POP POP POP JUMP JUMPDEST DUP2 PUSH0 SUB PUSH2 0xCD4 JUMPI POP POP JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH4 0x95EA7B3 PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB PUSH32 0x0 DUP2 AND PUSH1 0x4 DUP4 ADD MSTORE PUSH1 0x24 DUP3 ADD DUP5 SWAP1 MSTORE PUSH32 0x0 AND SWAP1 PUSH4 0x95EA7B3 SWAP1 PUSH1 0x44 ADD PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 PUSH0 DUP8 GAS CALL ISZERO DUP1 ISZERO PUSH2 0xD60 JUMPI RETURNDATASIZE PUSH0 PUSH0 RETURNDATACOPY RETURNDATASIZE PUSH0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP3 ADD DUP1 PUSH1 0x40 MSTORE POP DUP2 ADD SWAP1 PUSH2 0xD84 SWAP2 SWAP1 PUSH2 0x1A18 JUMP JUMPDEST POP DUP1 ISZERO PUSH2 0xE6A JUMPI PUSH1 0x40 MLOAD PUSH4 0x617BA037 PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB PUSH32 0x0 DUP2 AND PUSH1 0x4 DUP4 ADD MSTORE PUSH1 0x24 DUP3 ADD DUP5 SWAP1 MSTORE ADDRESS PUSH1 0x44 DUP4 ADD MSTORE PUSH0 PUSH1 0x64 DUP4 ADD MSTORE PUSH32 0x0 AND SWAP1 PUSH4 0x617BA037 SWAP1 PUSH1 0x84 ADD PUSH0 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 PUSH0 DUP8 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0xE1E JUMPI PUSH0 PUSH0 REVERT JUMPDEST POP GAS CALL SWAP3 POP POP POP DUP1 ISZERO PUSH2 0xE2F JUMPI POP PUSH1 0x1 JUMPDEST PUSH2 0x617 JUMPI PUSH1 0x40 MLOAD DUP3 DUP2 MSTORE PUSH32 0x323F803AB99BD4B7B37BBA0E83169793239F293CC8B9D11837997563C5902EAC SWAP1 PUSH1 0x20 ADD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 LOG1 POP POP JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH4 0x617BA037 PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB PUSH32 0x0 DUP2 AND PUSH1 0x4 DUP4 ADD MSTORE PUSH1 0x24 DUP3 ADD DUP5 SWAP1 MSTORE ADDRESS PUSH1 0x44 DUP4 ADD MSTORE PUSH0 PUSH1 0x64 DUP4 ADD MSTORE PUSH32 0x0 AND SWAP1 PUSH4 0x617BA037 SWAP1 PUSH1 0x84 ADD PUSH0 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 PUSH0 DUP8 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0xEFD JUMPI PUSH0 PUSH0 REVERT JUMPDEST POP GAS CALL ISZERO DUP1 ISZERO PUSH2 0xF0F JUMPI RETURNDATASIZE PUSH0 PUSH0 RETURNDATACOPY RETURNDATASIZE PUSH0 REVERT JUMPDEST POP POP POP POP POP POP JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH2 0x200 DUP2 ADD DUP3 MSTORE PUSH0 PUSH2 0x1E0 DUP3 ADD DUP2 DUP2 MSTORE 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 PUSH1 0xC0 DUP2 ADD DUP3 SWAP1 MSTORE PUSH1 0xE0 DUP2 ADD DUP3 SWAP1 MSTORE PUSH2 0x100 DUP2 ADD DUP3 SWAP1 MSTORE PUSH2 0x120 DUP2 ADD DUP3 SWAP1 MSTORE PUSH2 0x140 DUP2 ADD DUP3 SWAP1 MSTORE PUSH2 0x160 DUP2 ADD DUP3 SWAP1 MSTORE PUSH2 0x180 DUP2 ADD DUP3 SWAP1 MSTORE PUSH2 0x1A0 DUP2 ADD DUP3 SWAP1 MSTORE PUSH2 0x1C0 DUP2 ADD SWAP2 SWAP1 SWAP2 MSTORE PUSH1 0x40 MLOAD PUSH4 0x35EA6A75 PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB PUSH32 0x0 DUP2 AND PUSH1 0x4 DUP4 ADD MSTORE PUSH32 0x0 AND SWAP1 PUSH4 0x35EA6A75 SWAP1 PUSH1 0x24 ADD PUSH2 0x1E0 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x101B JUMPI RETURNDATASIZE PUSH0 PUSH0 RETURNDATACOPY RETURNDATASIZE PUSH0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP3 ADD DUP1 PUSH1 0x40 MSTORE POP DUP2 ADD SWAP1 PUSH2 0x103F SWAP2 SWAP1 PUSH2 0x1AC7 JUMP JUMPDEST SWAP1 POP SWAP1 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB PUSH32 0x0 AND ADDRESS SUB PUSH2 0x108D JUMPI PUSH1 0x40 MLOAD PUSH4 0x2ABF118B PUSH1 0xE2 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST DUP1 ISZERO PUSH2 0x4B2 JUMPI PUSH2 0x109B PUSH2 0x1234 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH4 0x77566915 PUSH1 0xE0 SHL DUP2 MSTORE PUSH20 0x0 SWAP2 PUSH4 0x77566915 SWAP2 PUSH2 0x1139 SWAP2 SWAP1 PUSH32 0x0 SWAP1 PUSH32 0x0 SWAP1 DUP8 SWAP1 PUSH32 0x0 SWAP1 PUSH1 0x4 ADD PUSH2 0x19D9 JUMP JUMPDEST PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 GAS DELEGATECALL ISZERO DUP1 ISZERO PUSH2 0x1154 JUMPI RETURNDATASIZE PUSH0 PUSH0 RETURNDATACOPY RETURNDATASIZE PUSH0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP3 ADD DUP1 PUSH1 0x40 MSTORE POP DUP2 ADD SWAP1 PUSH2 0x617 SWAP2 SWAP1 PUSH2 0x174C JUMP JUMPDEST PUSH0 PUSH2 0x11A2 PUSH32 0x0 PUSH2 0x133E JUMP JUMPDEST PUSH2 0x122A PUSH2 0x120B PUSH2 0x11D1 PUSH32 0x0 PUSH2 0x133E JUMP JUMPDEST PUSH2 0x11DB SWAP1 DUP8 PUSH2 0x1C05 JUMP JUMPDEST PUSH32 0x0 JUMPDEST PUSH8 0xDE0B6B3A7640000 PUSH2 0x13B5 JUMP JUMPDEST PUSH2 0x1214 DUP6 PUSH2 0x840 JUMP JUMPDEST PUSH1 0x20 ADD MLOAD PUSH2 0x11FD SWAP1 PUSH8 0xDE0B6B3A7640000 PUSH2 0x1C1C JUMP JUMPDEST PUSH2 0x7B9 SWAP2 SWAP1 PUSH2 0x1C43 JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH1 0x60 DUP1 DUP3 ADD DUP4 MSTORE PUSH0 DUP1 DUP4 MSTORE PUSH1 0x20 DUP4 ADD MSTORE SWAP2 DUP2 ADD SWAP2 SWAP1 SWAP2 MSTORE PUSH32 0x0 DUP1 SLOAD PUSH2 0x127B SWAP1 PUSH2 0x189B 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 0x12A7 SWAP1 PUSH2 0x189B JUMP JUMPDEST DUP1 ISZERO PUSH2 0x12F2 JUMPI DUP1 PUSH1 0x1F LT PUSH2 0x12C9 JUMPI PUSH2 0x100 DUP1 DUP4 SLOAD DIV MUL DUP4 MSTORE SWAP2 PUSH1 0x20 ADD SWAP2 PUSH2 0x12F2 JUMP JUMPDEST DUP3 ADD SWAP2 SWAP1 PUSH0 MSTORE PUSH1 0x20 PUSH0 KECCAK256 SWAP1 JUMPDEST DUP2 SLOAD DUP2 MSTORE SWAP1 PUSH1 0x1 ADD SWAP1 PUSH1 0x20 ADD DUP1 DUP4 GT PUSH2 0x12D5 JUMPI DUP3 SWAP1 SUB PUSH1 0x1F AND DUP3 ADD SWAP2 JUMPDEST POP POP POP POP POP DUP1 PUSH1 0x20 ADD SWAP1 MLOAD DUP2 ADD SWAP1 PUSH2 0x103F SWAP2 SWAP1 PUSH2 0x17E2 JUMP JUMPDEST PUSH0 PUSH2 0x103F PUSH8 0xDE0B6B3A7640000 DUP1 PUSH32 0x0 PUSH2 0x13B5 JUMP JUMPDEST PUSH0 DUP2 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 GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x137B JUMPI RETURNDATASIZE PUSH0 PUSH0 RETURNDATACOPY RETURNDATASIZE PUSH0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP3 ADD DUP1 PUSH1 0x40 MSTORE POP DUP2 ADD SWAP1 PUSH2 0x139F SWAP2 SWAP1 PUSH2 0x1C62 JUMP JUMPDEST PUSH2 0x13AA SWAP1 PUSH1 0x12 PUSH2 0x1C7D JUMP JUMPDEST PUSH2 0x30C SWAP1 PUSH1 0xA PUSH2 0x1D79 JUMP JUMPDEST PUSH0 PUSH0 PUSH0 PUSH2 0x13C2 DUP7 DUP7 PUSH2 0x1465 JUMP JUMPDEST SWAP2 POP SWAP2 POP DUP2 PUSH0 SUB PUSH2 0x13E6 JUMPI DUP4 DUP2 DUP2 PUSH2 0x13DC JUMPI PUSH2 0x13DC PUSH2 0x1C2F JUMP JUMPDEST DIV SWAP3 POP POP POP PUSH2 0x7B9 JUMP JUMPDEST DUP2 DUP5 GT PUSH2 0x13FD JUMPI PUSH2 0x13FD PUSH1 0x3 DUP6 ISZERO MUL PUSH1 0x11 XOR PUSH2 0x1481 JUMP JUMPDEST PUSH0 DUP5 DUP7 DUP9 MULMOD PUSH0 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 DUP6 DUP5 GT SWAP1 SWAP7 SUB SWAP6 SWAP1 SWAP6 MUL SWAP2 SWAP1 SWAP4 SUB SWAP4 SWAP1 SWAP4 DIV SWAP3 SWAP1 SWAP3 OR MUL SWAP2 POP POP SWAP4 SWAP3 POP POP POP JUMP JUMPDEST PUSH0 DUP1 PUSH0 NOT DUP4 DUP6 MULMOD SWAP4 SWAP1 SWAP3 MUL DUP1 DUP5 LT SWAP4 DUP2 SWAP1 SUB SWAP4 SWAP1 SWAP4 SUB SWAP4 SWAP2 POP POP JUMP JUMPDEST PUSH4 0x4E487B71 PUSH0 MSTORE DUP1 PUSH1 0x20 MSTORE PUSH1 0x24 PUSH1 0x1C REVERT JUMPDEST PUSH1 0xFF DUP2 AND DUP2 EQ PUSH2 0x4B2 JUMPI PUSH0 PUSH0 REVERT JUMPDEST PUSH4 0x4E487B71 PUSH1 0xE0 SHL PUSH0 MSTORE PUSH1 0x41 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH0 REVERT JUMPDEST PUSH1 0x40 MLOAD PUSH1 0x60 DUP2 ADD PUSH8 0xFFFFFFFFFFFFFFFF DUP2 GT DUP3 DUP3 LT OR ISZERO PUSH2 0x14D7 JUMPI PUSH2 0x14D7 PUSH2 0x14A0 JUMP JUMPDEST PUSH1 0x40 MSTORE SWAP1 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0x1E0 DUP2 ADD PUSH8 0xFFFFFFFFFFFFFFFF DUP2 GT DUP3 DUP3 LT OR ISZERO PUSH2 0x14D7 JUMPI PUSH2 0x14D7 PUSH2 0x14A0 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH1 0x1F DUP3 ADD PUSH1 0x1F NOT AND DUP2 ADD PUSH8 0xFFFFFFFFFFFFFFFF DUP2 GT DUP3 DUP3 LT OR ISZERO PUSH2 0x152A JUMPI PUSH2 0x152A PUSH2 0x14A0 JUMP JUMPDEST PUSH1 0x40 MSTORE SWAP2 SWAP1 POP JUMP JUMPDEST PUSH0 PUSH8 0xFFFFFFFFFFFFFFFF DUP3 GT ISZERO PUSH2 0x154B JUMPI PUSH2 0x154B PUSH2 0x14A0 JUMP JUMPDEST POP PUSH1 0x1F ADD PUSH1 0x1F NOT AND PUSH1 0x20 ADD SWAP1 JUMP JUMPDEST PUSH0 DUP3 PUSH1 0x1F DUP4 ADD SLT PUSH2 0x1568 JUMPI PUSH0 PUSH0 REVERT JUMPDEST DUP2 CALLDATALOAD PUSH2 0x157B PUSH2 0x1576 DUP3 PUSH2 0x1532 JUMP JUMPDEST PUSH2 0x1501 JUMP JUMPDEST DUP2 DUP2 MSTORE DUP5 PUSH1 0x20 DUP4 DUP7 ADD ADD GT ISZERO PUSH2 0x158F JUMPI PUSH0 PUSH0 REVERT JUMPDEST DUP2 PUSH1 0x20 DUP6 ADD PUSH1 0x20 DUP4 ADD CALLDATACOPY PUSH0 SWAP2 DUP2 ADD PUSH1 0x20 ADD SWAP2 SWAP1 SWAP2 MSTORE SWAP4 SWAP3 POP POP POP JUMP JUMPDEST PUSH0 PUSH0 PUSH1 0x40 DUP4 DUP6 SUB SLT ISZERO PUSH2 0x15BC JUMPI PUSH0 PUSH0 REVERT JUMPDEST DUP3 CALLDATALOAD PUSH2 0x15C7 DUP2 PUSH2 0x1492 JUMP JUMPDEST SWAP2 POP PUSH1 0x20 DUP4 ADD CALLDATALOAD PUSH8 0xFFFFFFFFFFFFFFFF DUP2 GT ISZERO PUSH2 0x15E2 JUMPI PUSH0 PUSH0 REVERT JUMPDEST PUSH2 0x15EE DUP6 DUP3 DUP7 ADD PUSH2 0x1559 JUMP JUMPDEST SWAP2 POP POP SWAP3 POP SWAP3 SWAP1 POP JUMP JUMPDEST PUSH0 DUP2 MLOAD DUP1 DUP5 MSTORE DUP1 PUSH1 0x20 DUP5 ADD PUSH1 0x20 DUP7 ADD MCOPY PUSH0 PUSH1 0x20 DUP3 DUP7 ADD ADD MSTORE PUSH1 0x20 PUSH1 0x1F NOT PUSH1 0x1F DUP4 ADD AND DUP6 ADD ADD SWAP2 POP POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x20 DUP2 MSTORE PUSH0 PUSH2 0x7B9 PUSH1 0x20 DUP4 ADD DUP5 PUSH2 0x15F8 JUMP JUMPDEST PUSH0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x1648 JUMPI PUSH0 PUSH0 REVERT JUMPDEST POP CALLDATALOAD SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 AND DUP2 EQ PUSH2 0x4B2 JUMPI PUSH0 PUSH0 REVERT JUMPDEST PUSH0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x1673 JUMPI PUSH0 PUSH0 REVERT JUMPDEST DUP2 CALLDATALOAD PUSH2 0x7B9 DUP2 PUSH2 0x164F JUMP JUMPDEST PUSH4 0x4E487B71 PUSH1 0xE0 SHL PUSH0 MSTORE PUSH1 0x21 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH0 REVERT JUMPDEST PUSH0 DUP2 MLOAD PUSH1 0x3 DUP2 LT PUSH2 0x16B1 JUMPI PUSH4 0x4E487B71 PUSH1 0xE0 SHL PUSH0 MSTORE PUSH1 0x21 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH0 REVERT JUMPDEST DUP1 DUP5 MSTORE POP PUSH1 0x20 DUP3 ADD MLOAD PUSH1 0x20 DUP5 ADD MSTORE PUSH1 0x40 DUP3 ADD MLOAD PUSH1 0x60 PUSH1 0x40 DUP6 ADD MSTORE PUSH2 0x16D8 PUSH1 0x60 DUP6 ADD DUP3 PUSH2 0x15F8 JUMP JUMPDEST SWAP5 SWAP4 POP POP POP POP JUMP JUMPDEST PUSH1 0x20 DUP2 MSTORE PUSH0 PUSH2 0x7B9 PUSH1 0x20 DUP4 ADD DUP5 PUSH2 0x1692 JUMP JUMPDEST DUP1 ISZERO ISZERO DUP2 EQ PUSH2 0x4B2 JUMPI PUSH0 PUSH0 REVERT JUMPDEST PUSH0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x170F JUMPI PUSH0 PUSH0 REVERT JUMPDEST DUP2 CALLDATALOAD PUSH2 0x7B9 DUP2 PUSH2 0x16F2 JUMP JUMPDEST PUSH0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x172A JUMPI PUSH0 PUSH0 REVERT JUMPDEST DUP2 CALLDATALOAD PUSH8 0xFFFFFFFFFFFFFFFF DUP2 GT ISZERO PUSH2 0x1740 JUMPI PUSH0 PUSH0 REVERT JUMPDEST PUSH2 0x16D8 DUP5 DUP3 DUP6 ADD PUSH2 0x1559 JUMP JUMPDEST PUSH0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x175C JUMPI PUSH0 PUSH0 REVERT JUMPDEST POP MLOAD SWAP2 SWAP1 POP JUMP JUMPDEST PUSH0 DUP3 PUSH1 0x1F DUP4 ADD SLT PUSH2 0x1772 JUMPI PUSH0 PUSH0 REVERT JUMPDEST DUP2 MLOAD PUSH2 0x1780 PUSH2 0x1576 DUP3 PUSH2 0x1532 JUMP JUMPDEST DUP2 DUP2 MSTORE DUP5 PUSH1 0x20 DUP4 DUP7 ADD ADD GT ISZERO PUSH2 0x1794 JUMPI PUSH0 PUSH0 REVERT JUMPDEST DUP2 PUSH1 0x20 DUP6 ADD PUSH1 0x20 DUP4 ADD MCOPY PUSH0 SWAP2 DUP2 ADD PUSH1 0x20 ADD SWAP2 SWAP1 SWAP2 MSTORE SWAP4 SWAP3 POP POP POP JUMP JUMPDEST PUSH0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x17C0 JUMPI PUSH0 PUSH0 REVERT JUMPDEST DUP2 MLOAD PUSH8 0xFFFFFFFFFFFFFFFF DUP2 GT ISZERO PUSH2 0x17D6 JUMPI PUSH0 PUSH0 REVERT JUMPDEST PUSH2 0x16D8 DUP5 DUP3 DUP6 ADD PUSH2 0x1763 JUMP JUMPDEST PUSH0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x17F2 JUMPI PUSH0 PUSH0 REVERT JUMPDEST DUP2 MLOAD PUSH8 0xFFFFFFFFFFFFFFFF DUP2 GT ISZERO PUSH2 0x1808 JUMPI PUSH0 PUSH0 REVERT JUMPDEST DUP3 ADD PUSH1 0x60 DUP2 DUP6 SUB SLT ISZERO PUSH2 0x1819 JUMPI PUSH0 PUSH0 REVERT JUMPDEST PUSH2 0x1821 PUSH2 0x14B4 JUMP JUMPDEST DUP2 MLOAD PUSH1 0x3 DUP2 LT PUSH2 0x182F JUMPI PUSH0 PUSH0 REVERT JUMPDEST DUP2 MSTORE PUSH1 0x20 DUP3 DUP2 ADD MLOAD SWAP1 DUP3 ADD MSTORE PUSH1 0x40 DUP3 ADD MLOAD PUSH8 0xFFFFFFFFFFFFFFFF DUP2 GT ISZERO PUSH2 0x1854 JUMPI PUSH0 PUSH0 REVERT JUMPDEST PUSH2 0x1860 DUP7 DUP3 DUP6 ADD PUSH2 0x1763 JUMP JUMPDEST PUSH1 0x40 DUP4 ADD MSTORE POP SWAP5 SWAP4 POP POP POP POP JUMP JUMPDEST PUSH1 0x40 DUP2 MSTORE PUSH0 PUSH2 0x1880 PUSH1 0x40 DUP4 ADD DUP6 PUSH2 0x1692 JUMP JUMPDEST DUP3 DUP2 SUB PUSH1 0x20 DUP5 ADD MSTORE PUSH2 0x1892 DUP2 DUP6 PUSH2 0x1692 JUMP JUMPDEST SWAP6 SWAP5 POP POP POP POP POP JUMP JUMPDEST PUSH1 0x1 DUP2 DUP2 SHR SWAP1 DUP3 AND DUP1 PUSH2 0x18AF JUMPI PUSH1 0x7F DUP3 AND SWAP2 POP JUMPDEST PUSH1 0x20 DUP3 LT DUP2 SUB PUSH2 0x18CD JUMPI PUSH4 0x4E487B71 PUSH1 0xE0 SHL PUSH0 MSTORE PUSH1 0x22 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH0 REVERT JUMPDEST POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x1F DUP3 GT ISZERO PUSH2 0xCC4 JUMPI DUP1 PUSH0 MSTORE PUSH1 0x20 PUSH0 KECCAK256 PUSH1 0x1F DUP5 ADD PUSH1 0x5 SHR DUP2 ADD PUSH1 0x20 DUP6 LT ISZERO PUSH2 0x18F8 JUMPI POP DUP1 JUMPDEST PUSH1 0x1F DUP5 ADD PUSH1 0x5 SHR DUP3 ADD SWAP2 POP JUMPDEST DUP2 DUP2 LT ISZERO PUSH2 0x1917 JUMPI PUSH0 DUP2 SSTORE PUSH1 0x1 ADD PUSH2 0x1904 JUMP JUMPDEST POP POP POP POP POP JUMP JUMPDEST DUP2 MLOAD PUSH8 0xFFFFFFFFFFFFFFFF DUP2 GT ISZERO PUSH2 0x1938 JUMPI PUSH2 0x1938 PUSH2 0x14A0 JUMP JUMPDEST PUSH2 0x194C DUP2 PUSH2 0x1946 DUP5 SLOAD PUSH2 0x189B JUMP JUMPDEST DUP5 PUSH2 0x18D3 JUMP JUMPDEST PUSH1 0x20 PUSH1 0x1F DUP3 GT PUSH1 0x1 DUP2 EQ PUSH2 0x197E JUMPI PUSH0 DUP4 ISZERO PUSH2 0x1967 JUMPI POP DUP5 DUP3 ADD MLOAD JUMPDEST PUSH0 NOT PUSH1 0x3 DUP6 SWAP1 SHL SHR NOT AND PUSH1 0x1 DUP5 SWAP1 SHL OR DUP5 SSTORE PUSH2 0x1917 JUMP JUMPDEST PUSH0 DUP5 DUP2 MSTORE PUSH1 0x20 DUP2 KECCAK256 PUSH1 0x1F NOT DUP6 AND SWAP2 JUMPDEST DUP3 DUP2 LT ISZERO PUSH2 0x19AD JUMPI DUP8 DUP6 ADD MLOAD DUP3 SSTORE PUSH1 0x20 SWAP5 DUP6 ADD SWAP5 PUSH1 0x1 SWAP1 SWAP3 ADD SWAP2 ADD PUSH2 0x198D JUMP JUMPDEST POP DUP5 DUP3 LT ISZERO PUSH2 0x19CA JUMPI DUP7 DUP5 ADD MLOAD PUSH0 NOT PUSH1 0x3 DUP8 SWAP1 SHL PUSH1 0xF8 AND SHR NOT AND DUP2 SSTORE JUMPDEST POP POP POP POP PUSH1 0x1 SWAP1 DUP2 SHL ADD SWAP1 SSTORE POP JUMP JUMPDEST PUSH1 0xA0 DUP2 MSTORE PUSH0 PUSH2 0x19EB PUSH1 0xA0 DUP4 ADD DUP9 PUSH2 0x1692 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP7 DUP8 AND PUSH1 0x20 DUP5 ADD MSTORE SWAP5 SWAP1 SWAP6 AND PUSH1 0x40 DUP3 ADD MSTORE PUSH1 0x60 DUP2 ADD SWAP3 SWAP1 SWAP3 MSTORE PUSH1 0x80 SWAP1 SWAP2 ADD MSTORE SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x1A28 JUMPI PUSH0 PUSH0 REVERT JUMPDEST DUP2 MLOAD PUSH2 0x7B9 DUP2 PUSH2 0x16F2 JUMP JUMPDEST PUSH0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x1A43 JUMPI PUSH0 PUSH0 REVERT JUMPDEST PUSH1 0x40 MLOAD PUSH1 0x20 DUP2 ADD PUSH8 0xFFFFFFFFFFFFFFFF DUP2 GT DUP3 DUP3 LT OR ISZERO PUSH2 0x1A66 JUMPI PUSH2 0x1A66 PUSH2 0x14A0 JUMP JUMPDEST PUSH1 0x40 MSTORE SWAP2 MLOAD DUP3 MSTORE POP SWAP2 SWAP1 POP JUMP JUMPDEST DUP1 MLOAD PUSH16 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP2 AND DUP2 EQ PUSH2 0x1A92 JUMPI PUSH0 PUSH0 REVERT JUMPDEST SWAP2 SWAP1 POP JUMP JUMPDEST DUP1 MLOAD PUSH5 0xFFFFFFFFFF DUP2 AND DUP2 EQ PUSH2 0x1A92 JUMPI PUSH0 PUSH0 REVERT JUMPDEST DUP1 MLOAD PUSH2 0xFFFF DUP2 AND DUP2 EQ PUSH2 0x1A92 JUMPI PUSH0 PUSH0 REVERT JUMPDEST DUP1 MLOAD PUSH2 0x1A92 DUP2 PUSH2 0x164F JUMP JUMPDEST PUSH0 PUSH2 0x1E0 DUP3 DUP5 SUB SLT DUP1 ISZERO PUSH2 0x1AD9 JUMPI PUSH0 PUSH0 REVERT JUMPDEST POP PUSH2 0x1AE2 PUSH2 0x14DD JUMP JUMPDEST PUSH2 0x1AEC DUP5 DUP5 PUSH2 0x1A33 JUMP JUMPDEST DUP2 MSTORE PUSH2 0x1AFA PUSH1 0x20 DUP5 ADD PUSH2 0x1A73 JUMP JUMPDEST PUSH1 0x20 DUP3 ADD MSTORE PUSH2 0x1B0B PUSH1 0x40 DUP5 ADD PUSH2 0x1A73 JUMP JUMPDEST PUSH1 0x40 DUP3 ADD MSTORE PUSH2 0x1B1C PUSH1 0x60 DUP5 ADD PUSH2 0x1A73 JUMP JUMPDEST PUSH1 0x60 DUP3 ADD MSTORE PUSH2 0x1B2D PUSH1 0x80 DUP5 ADD PUSH2 0x1A73 JUMP JUMPDEST PUSH1 0x80 DUP3 ADD MSTORE PUSH2 0x1B3E PUSH1 0xA0 DUP5 ADD PUSH2 0x1A73 JUMP JUMPDEST PUSH1 0xA0 DUP3 ADD MSTORE PUSH2 0x1B4F PUSH1 0xC0 DUP5 ADD PUSH2 0x1A97 JUMP JUMPDEST PUSH1 0xC0 DUP3 ADD MSTORE PUSH2 0x1B60 PUSH1 0xE0 DUP5 ADD PUSH2 0x1AAB JUMP JUMPDEST PUSH1 0xE0 DUP3 ADD MSTORE PUSH2 0x1B72 PUSH2 0x100 DUP5 ADD PUSH2 0x1ABC JUMP JUMPDEST PUSH2 0x100 DUP3 ADD MSTORE PUSH2 0x1B85 PUSH2 0x120 DUP5 ADD PUSH2 0x1ABC JUMP JUMPDEST PUSH2 0x120 DUP3 ADD MSTORE PUSH2 0x1B98 PUSH2 0x140 DUP5 ADD PUSH2 0x1ABC JUMP JUMPDEST PUSH2 0x140 DUP3 ADD MSTORE PUSH2 0x1BAB PUSH2 0x160 DUP5 ADD PUSH2 0x1ABC JUMP JUMPDEST PUSH2 0x160 DUP3 ADD MSTORE PUSH2 0x1BBE PUSH2 0x180 DUP5 ADD PUSH2 0x1A73 JUMP JUMPDEST PUSH2 0x180 DUP3 ADD MSTORE PUSH2 0x1BD1 PUSH2 0x1A0 DUP5 ADD PUSH2 0x1A73 JUMP JUMPDEST PUSH2 0x1A0 DUP3 ADD MSTORE PUSH2 0x1BE4 PUSH2 0x1C0 DUP5 ADD PUSH2 0x1A73 JUMP JUMPDEST PUSH2 0x1C0 DUP3 ADD MSTORE SWAP4 SWAP3 POP POP POP JUMP JUMPDEST PUSH4 0x4E487B71 PUSH1 0xE0 SHL PUSH0 MSTORE PUSH1 0x11 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH0 REVERT JUMPDEST DUP1 DUP3 MUL DUP2 ISZERO DUP3 DUP3 DIV DUP5 EQ OR PUSH2 0x30C JUMPI PUSH2 0x30C PUSH2 0x1BF1 JUMP JUMPDEST DUP2 DUP2 SUB DUP2 DUP2 GT ISZERO PUSH2 0x30C JUMPI PUSH2 0x30C PUSH2 0x1BF1 JUMP JUMPDEST PUSH4 0x4E487B71 PUSH1 0xE0 SHL PUSH0 MSTORE PUSH1 0x12 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH0 REVERT JUMPDEST PUSH0 DUP3 PUSH2 0x1C5D JUMPI PUSH4 0x4E487B71 PUSH1 0xE0 SHL PUSH0 MSTORE PUSH1 0x12 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH0 REVERT JUMPDEST POP DIV SWAP1 JUMP JUMPDEST PUSH0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x1C72 JUMPI PUSH0 PUSH0 REVERT JUMPDEST DUP2 MLOAD PUSH2 0x7B9 DUP2 PUSH2 0x1492 JUMP JUMPDEST PUSH1 0xFF DUP3 DUP2 AND DUP3 DUP3 AND SUB SWAP1 DUP2 GT ISZERO PUSH2 0x30C JUMPI PUSH2 0x30C PUSH2 0x1BF1 JUMP JUMPDEST PUSH1 0x1 DUP2 JUMPDEST PUSH1 0x1 DUP5 GT ISZERO PUSH2 0x1CD1 JUMPI DUP1 DUP6 DIV DUP2 GT ISZERO PUSH2 0x1CB5 JUMPI PUSH2 0x1CB5 PUSH2 0x1BF1 JUMP JUMPDEST PUSH1 0x1 DUP5 AND ISZERO PUSH2 0x1CC3 JUMPI SWAP1 DUP2 MUL SWAP1 JUMPDEST PUSH1 0x1 SWAP4 SWAP1 SWAP4 SHR SWAP3 DUP1 MUL PUSH2 0x1C9A JUMP JUMPDEST SWAP4 POP SWAP4 SWAP2 POP POP JUMP JUMPDEST PUSH0 DUP3 PUSH2 0x1CE7 JUMPI POP PUSH1 0x1 PUSH2 0x30C JUMP JUMPDEST DUP2 PUSH2 0x1CF3 JUMPI POP PUSH0 PUSH2 0x30C JUMP JUMPDEST DUP2 PUSH1 0x1 DUP2 EQ PUSH2 0x1D09 JUMPI PUSH1 0x2 DUP2 EQ PUSH2 0x1D13 JUMPI PUSH2 0x1D2F JUMP JUMPDEST PUSH1 0x1 SWAP2 POP POP PUSH2 0x30C JUMP JUMPDEST PUSH1 0xFF DUP5 GT ISZERO PUSH2 0x1D24 JUMPI PUSH2 0x1D24 PUSH2 0x1BF1 JUMP JUMPDEST POP POP PUSH1 0x1 DUP3 SHL PUSH2 0x30C JUMP JUMPDEST POP PUSH1 0x20 DUP4 LT PUSH2 0x133 DUP4 LT AND PUSH1 0x4E DUP5 LT PUSH1 0xB DUP5 LT AND OR ISZERO PUSH2 0x1D52 JUMPI POP DUP2 DUP2 EXP PUSH2 0x30C JUMP JUMPDEST PUSH2 0x1D5E PUSH0 NOT DUP5 DUP5 PUSH2 0x1C96 JUMP JUMPDEST DUP1 PUSH0 NOT DIV DUP3 GT ISZERO PUSH2 0x1D71 JUMPI PUSH2 0x1D71 PUSH2 0x1BF1 JUMP JUMPDEST MUL SWAP4 SWAP3 POP POP POP JUMP JUMPDEST PUSH0 PUSH2 0x7B9 PUSH1 0xFF DUP5 AND DUP4 PUSH2 0x1CD9 JUMP INVALID LOG2 PUSH5 0x6970667358 0x22 SLT KECCAK256 DIV DUP7 0xCA CALLF 0xC836 0x22 BASEFEE CALL CALLCODE MULMOD 0xD3 EOFCREATE 0xB8 0xC8 CREATE 0xB2 0xBC 0xD 0x1F CALLDATACOPY 0xEF MUL BALANCE GASLIMIT PUSH4 0x77B0A69C 0x22 PUSH28 0x64736F6C634300081E00330000000000000000000000000000000000 ","sourceMap":"826:3242:84:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;7096:855:83;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;1242:99:85;1330:6;1242:99;;;2859:25:87;;;2847:2;2832:18;1242:99:85;2713:177:87;2925:550:84;;;;;;:::i;:::-;;:::i;:::-;;2369:344;;;;;;:::i;:::-;;:::i;8539:137:83:-;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;1771:244:84:-;;;;;;:::i;:::-;;:::i;1028:81:83:-;;;;;3235:104;;;;;;:::i;:::-;-1:-1:-1;3327:6:83;;3235:104;;;;-1:-1:-1;;;;;5071:32:87;;;5053:51;;5041:2;5026:18;3235:104:83;4907:203:87;2339:189:83;;;;;;:::i;:::-;;:::i;3479:197:84:-;;;;;;:::i;:::-;;:::i;2019:346::-;;;;;;:::i;:::-;;:::i;3424:99:83:-;;;;;;:::i;:::-;-1:-1:-1;3505:12:83;;3424:99;2717:204:84;;;;;;:::i;:::-;;:::i;7096:855:83:-;7196:12;-1:-1:-1;;;;;1543:6:83;1526:23;1534:4;1526:23;1522:72;;1558:36;;-1:-1:-1;;;1558:36:83;;;;;;;;;;;1522:72;7216:28:::1;7247:22;::::0;::::1;::::0;;::::1;;;;:::i;:::-;7216:53:::0;-1:-1:-1;7296:28:83::1;7279:13:::0;:45;;::::1;;;;:::i;:::-;::::0;7275:648:::1;;7603:53;7618:29;7641:4;7618:14;:29::i;:::-;7649:6;7603:14;:53::i;:::-;-1:-1:-1::0;;7937:9:83::1;::::0;;::::1;::::0;::::1;::::0;;;-1:-1:-1;7937:9:83;;1600:1:::1;7096:855:::0;;;;:::o;2925:550:84:-;-1:-1:-1;;;;;1543:6:83;1526:23;1534:4;1526:23;1522:72;;1558:36;;-1:-1:-1;;;1558:36:83;;;;;;;;;;;1522:72;3003:24:84;;3020:7:::1;3003:24;3086:71;::::0;-1:-1:-1;;;3086:71:84;;-1:-1:-1;;;;;3109:12:84::1;5660:32:87::0;;3086:71:84::1;::::0;::::1;5642:51:87::0;-1:-1:-1;;5709:18:87;;;5702:34;3151:4:84::1;5752:18:87::0;;;5745:60;3086:5:84::1;:14;::::0;::::1;::::0;5615:18:87;;3086:71:84::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;3216:22;3231:6;3216:14;:22::i;:::-;3426:37;::::0;-1:-1:-1;;;3426:37:84;;3457:4:::1;3426:37;::::0;::::1;5053:51:87::0;3418:52:84::1;::::0;3426:12:::1;-1:-1:-1::0;;;;;3426:22:84::1;::::0;::::1;::::0;5026:18:87;;3426:37:84::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;3465:4;3418:7;:52::i;:::-;2925:550:::0;:::o;2369:344::-;2450:7;2465:36;2504:14;:12;:14::i;:::-;2529:21;;9029:9:60;2529:21:84;;-1:-1:-1;;;;9029:24:60;9028:31;;2528:71:84;;-1:-1:-1;2566:21:84;;10311:9:60;-1:-1:-1;;;10311:24:60;10310:31;;2566:33:84;2528:108;;;-1:-1:-1;2603:21:84;;9670:9:60;9682:12;9670:24;9669:31;;2603:33:84;2524:128;;;-1:-1:-1;2651:1:84;;2369:344;-1:-1:-1;;2369:344:84:o;2524:128::-;-1:-1:-1;;;2691:17:84;2369:344;-1:-1:-1;;2369:344:84:o;8539:137:83:-;-1:-1:-1;;;;;;;;;;;;;;;;;;;;;;;;8646:25:83;8661:9;8646:14;:25::i;1771:244:84:-;-1:-1:-1;;;;;1543:6:83;1526:23;1534:4;1526:23;1522:72;;1558:36;;-1:-1:-1;;;1558:36:83;;;;;;;;;;;1522:72;1849:21:84::1;1888:14;:12;:14::i;:::-;:28;;;1849:68;;1928:5;1927:6;:46;;;;-1:-1:-1::0;1937:31:84::1;::::0;-1:-1:-1;;;1937:31:84;;1962:4:::1;1937:31;::::0;::::1;5053:51:87::0;-1:-1:-1;;;;;1937:16:84;::::1;::::0;::::1;::::0;5026:18:87;;1937:31:84::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;:36:::0;::::1;1927:46;1923:87;;;1982:28;;-1:-1:-1::0;;;1982:28:84::1;;;;;;;;;;;1923:87;1843:172;1771:244:::0;:::o;2339:189:83:-;-1:-1:-1;;;;;1543:6:83;1526:23;1534:4;1526:23;1522:72;;1558:36;;-1:-1:-1;;;1558:36:83;;;;;;;;;;;1522:72;2440::::1;::::0;;::::1;::::0;::::1;::::0;;;2425:98:::1;::::0;2440:72;-1:-1:-1;2440:72:83::1;;;;2499:1;2440:72;;;;2502:9;;;;;;;;;;;::::0;2440:72:::1;;::::0;2514:8:::1;2425:14;:98::i;3479:197:84:-:0;-1:-1:-1;;;;;1543:6:83;1526:23;1534:4;1526:23;1522:72;;1558:36;;-1:-1:-1;;;1558:36:83;;;;;;;;;;;1522:72;3556:21:84::1;3570:6;3556:13;:21::i;:::-;3626:37;::::0;-1:-1:-1;;;3626:37:84;;3657:4:::1;3626:37;::::0;::::1;5053:51:87::0;3618:53:84::1;::::0;3626:12:::1;-1:-1:-1::0;;;;;3626:22:84::1;::::0;::::1;::::0;5026:18:87;;3626:37:84::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;3665:5;3618:7;:53::i;2019:346::-:0;2097:7;2112:36;2151:14;:12;:14::i;:::-;2176:21;;9029:9:60;2176:21:84;;-1:-1:-1;;;;9029:24:60;9028:31;;2175:71:84;;-1:-1:-1;2213:21:84;;10311:9:60;-1:-1:-1;;;10311:24:60;10310:31;;2213:33:84;2171:85;;;-1:-1:-1;2255:1:84;;2019:346;-1:-1:-1;;2019:346:84:o;2171:85::-;2269:22;2281:9;2269:11;:22::i;:::-;2262:29;2019:346;-1:-1:-1;;;2019:346:84:o;2717:204::-;2795:14;2824:92;2854:14;:12;:14::i;:::-;:28;;;2839:65;;-1:-1:-1;;;2839:65:84;;-1:-1:-1;;;;;5071:32:87;;;2839:65:84;;;5053:51:87;2839:54:84;;;;;;5026:18:87;;2839:65:84;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;2906:9;2824:14;:92::i;7955:260:83:-;-1:-1:-1;;;;;;;;;;;;;;;;;;;;;;;;8091:51:83;;-1:-1:-1;;;8091:51:83;;8130:11;8091:51;;;2859:25:87;8058:30:83;;-1:-1:-1;;;;;8091:38:83;;;;;2832:18:87;;8091:51:83;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;8091:51:83;;;;;;;;;;;;:::i;:::-;8058:84;;8166:17;8155:55;;;;;;;;;;;;:::i;6580:478::-;6699:40;6753:20;6742:58;;;;;;;;;;;;:::i;:::-;6806:21;;-1:-1:-1;;;6806:21:83;;6699:101;;-1:-1:-1;6806:19:83;;;;:21;;6699:101;;6806:21;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;6870:20;:27;6848:10;6837:22;;;;;;;;:::i;:::-;;;;;;;;;;;;;:29;:60;6833:93;;6906:20;;-1:-1:-1;;;6906:20:83;;;;;;;;;;;6833:93;6937:44;6955:13;6970:10;6937:44;;;;;;;:::i;:::-;;;;;;;;7012:11;6987:66;7033:20;7012:11;6987:66;:::i;:::-;;6693:365;6580:478;;:::o;5298:741::-;-1:-1:-1;;;;;1543:6:83;1526:23;1534:4;1526:23;1522:72;;1558:36;;-1:-1:-1;;;1558:36:83;;;;;;;;;;;1522:72;5376:24;;5393:7:::1;5376:24;5405:40;5448:20;:18;:20::i;:::-;5405:63;;5474:13;5490:22;:20;:22::i;:::-;5547:37;::::0;-1:-1:-1;;;5547:37:83;;5578:4:::1;5547:37;::::0;::::1;5053:51:87::0;5474:38:83;;-1:-1:-1;5532:68:83::1;::::0;-1:-1:-1;;;;;5547:12:83::1;:22;::::0;::::1;::::0;5026:18:87;;5547:37:83::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;5594:4;5532:14;:68::i;:::-;5522:6;:78;5518:517;;5885:37;::::0;-1:-1:-1;;;5885:37:83;;5916:4:::1;5885:37;::::0;::::1;5053:51:87::0;5823:21:83::1;::::0;::::1;::::0;:10;;5853:12:::1;::::0;5876:6:::1;::::0;-1:-1:-1;;;;;5885:22:83;::::1;::::0;::::1;::::0;5026:18:87;;5885:37:83::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;5924:5;5823:107;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;5518:517::-;5951:77;::::0;-1:-1:-1;;;5951:77:83;;:22:::1;::::0;::::1;::::0;:77:::1;::::0;:10;;5982:12:::1;::::0;6005:6:::1;::::0;6014;;6022:5;;5951:77:::1;;;:::i;5518:517::-;5370:669;;5298:741:::0;:::o;3680:386:84:-;3747:6;3757:1;3747:11;3743:24;;3680:386;;:::o;3743:24::-;3772:44;;-1:-1:-1;;;3772:44:84;;-1:-1:-1;;;;;3801:5:84;11810:32:87;;3772:44:84;;;11792:51:87;11859:18;;;11852:34;;;3772:12:84;:20;;;;11765:18:87;;3772:44:84;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;3826:8;3822:239;;;3848:61;;-1:-1:-1;;;3848:61:84;;-1:-1:-1;;;;;3869:12:84;12403:32:87;;3848:61:84;;;12385:51:87;12452:18;;;12445:34;;;3900:4:84;12495:18:87;;;12488:60;-1:-1:-1;12564:18:87;;;12557:47;3848:5:84;:12;;;;12357:19:87;;3848:61:84;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;3844:144;;3957:22;;2859:25:87;;;3957:22:84;;2847:2:87;2832:18;3957:22:84;;;;;;;1843:172:::1;1771:244:::0;:::o;3822:239::-;4000:61;;-1:-1:-1;;;4000:61:84;;-1:-1:-1;;;;;4021:12:84;12403:32:87;;4000:61:84;;;12385:51:87;12452:18;;;12445:34;;;4052:4:84;12495:18:87;;;12488:60;-1:-1:-1;12564:18:87;;;12557:47;4000:5:84;:12;;;;12357:19:87;;4000:61:84;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;3680:386;;:::o;1629:138::-;-1:-1:-1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1719:43:84;;-1:-1:-1;;;1719:43:84;;-1:-1:-1;;;;;1748:12:84;5071:32:87;;1719:43:84;;;5053:51:87;1719:5:84;:20;;;;5026:18:87;;1719:43:84;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;1712:50;;1629:138;:::o;6245:331:83:-;-1:-1:-1;;;;;1543:6:83;1526:23;1534:4;1526:23;1522:72;;1558:36;;-1:-1:-1;;;1558:36:83;;;;;;;;;;;1522:72;6322:24;;6339:7:::1;6322:24;6472:20;:18;:20::i;:::-;:99;::::0;-1:-1:-1;;;6472:99:83;;:31:::1;::::0;::::1;::::0;:99:::1;::::0;:31;6512:6:::1;::::0;6529:12:::1;::::0;6544:6;;1330::85;;6472:99:83::1;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;4550:333::-:0;4646:14;4858:20;4871:6;4858:12;:20::i;:::-;4681:174;4702:79;4729:26;4742:12;4729;:26::i;:::-;4714:41;;:12;:41;:::i;:::-;1330:6:85;4757:18:83;966:4;4702:11;:79::i;:::-;4797:25;4812:9;4797:14;:25::i;:::-;:37;;;4791:43;;966:4;4791:43;:::i;4681:174::-;:197;;;;:::i;8219:183::-;-1:-1:-1;;;;;;;;;;;;;;;;;;;;;;;;8352:11:83;8316:81;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;3919:174::-;3974:7;3996:41;966:4;;1330:6:85;3996:11:83;:41::i;2178:123::-;2245:7;2279:5;-1:-1:-1;;;;;2279:14:83;;:16;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;2274:21;;:2;:21;:::i;:::-;2267:29;;:2;:29;:::i;7258:3683:47:-;7340:14;7391:12;7405:11;7420:12;7427:1;7430;7420:6;:12::i;:::-;7390:42;;;;7514:4;7522:1;7514:9;7510:365;;7849:11;7843:3;:17;;;;;:::i;:::-;;7836:24;;;;;;7510:365;8000:4;7985:11;:19;7981:142;;8024:84;5328:5;8044:16;;5327:36;940:4:43;5322:42:47;8024:11;:84::i;:::-;8375:17;8526:11;8523:1;8520;8513:25;8918:12;8948:15;;;8933:31;;9083:22;;;;;9816:1;9797;:15;;9796:21;;10049;;;10045:25;;10034:36;10119:21;;;10115:25;;10104:36;10191:21;;;10187:25;;10176:36;10262:21;;;10258:25;;10247:36;10335:21;;;10331:25;;10320:36;10409:21;;;10405:25;;;10394:36;9325:12;;;;9321:23;;;9346:1;9317:31;8638:18;;;8628:29;;;9432:11;;;;8681:19;;;;9176:14;;;;9425:18;;;;10884:13;;-1:-1:-1;;7258:3683:47;;;;;:::o;1027:550::-;1088:12;;-1:-1:-1;;1471:1:47;1468;1461:20;1501:9;;;;1549:11;;;1535:12;;;;1531:30;;;;;1027:550;-1:-1:-1;;1027:550:47:o;1776:194:43:-;1881:10;1875:4;1868:24;1918:4;1912;1905:18;1949:4;1943;1936:18;14:114:87;98:4;91:5;87:16;80:5;77:27;67:55;;118:1;115;108:12;133:127;194:10;189:3;185:20;182:1;175:31;225:4;222:1;215:15;249:4;246:1;239:15;265:253;337:2;331:9;379:4;367:17;;414:18;399:34;;435:22;;;396:62;393:88;;;461:18;;:::i;:::-;497:2;490:22;265:253;:::o;523:252::-;595:2;589:9;637:3;625:16;;671:18;656:34;;692:22;;;653:62;650:88;;;718:18;;:::i;780:275::-;851:2;845:9;916:2;897:13;;-1:-1:-1;;893:27:87;881:40;;951:18;936:34;;972:22;;;933:62;930:88;;;998:18;;:::i;:::-;1034:2;1027:22;780:275;;-1:-1:-1;780:275:87:o;1060:186::-;1108:4;1141:18;1133:6;1130:30;1127:56;;;1163:18;;:::i;:::-;-1:-1:-1;1229:2:87;1208:15;-1:-1:-1;;1204:29:87;1235:4;1200:40;;1060:186::o;1251:486::-;1293:5;1346:3;1339:4;1331:6;1327:17;1323:27;1313:55;;1364:1;1361;1354:12;1313:55;1404:6;1391:20;1435:52;1451:35;1479:6;1451:35;:::i;:::-;1435:52;:::i;:::-;1512:6;1503:7;1496:23;1566:3;1559:4;1550:6;1542;1538:19;1534:30;1531:39;1528:59;;;1583:1;1580;1573:12;1528:59;1648:6;1641:4;1633:6;1629:17;1622:4;1613:7;1609:18;1596:59;1704:1;1675:20;;;1697:4;1671:31;1664:42;;;;1679:7;1251:486;-1:-1:-1;;;1251:486:87:o;1742:451::-;1817:6;1825;1878:2;1866:9;1857:7;1853:23;1849:32;1846:52;;;1894:1;1891;1884:12;1846:52;1933:9;1920:23;1952:29;1975:5;1952:29;:::i;:::-;2000:5;-1:-1:-1;2056:2:87;2041:18;;2028:32;2083:18;2072:30;;2069:50;;;2115:1;2112;2105:12;2069:50;2138:49;2179:7;2170:6;2159:9;2155:22;2138:49;:::i;:::-;2128:59;;;1742:451;;;;;:::o;2198:288::-;2239:3;2277:5;2271:12;2304:6;2299:3;2292:19;2360:6;2353:4;2346:5;2342:16;2335:4;2330:3;2326:14;2320:47;2412:1;2405:4;2396:6;2391:3;2387:16;2383:27;2376:38;2475:4;2468:2;2464:7;2459:2;2451:6;2447:15;2443:29;2438:3;2434:39;2430:50;2423:57;;;2198:288;;;;:::o;2491:217::-;2638:2;2627:9;2620:21;2601:4;2658:44;2698:2;2687:9;2683:18;2675:6;2658:44;:::i;2895:180::-;2954:6;3007:2;2995:9;2986:7;2982:23;2978:32;2975:52;;;3023:1;3020;3013:12;2975:52;-1:-1:-1;3046:23:87;;2895:180;-1:-1:-1;2895:180:87:o;3080:131::-;-1:-1:-1;;;;;3155:31:87;;3145:42;;3135:70;;3201:1;3198;3191:12;3216:247;3275:6;3328:2;3316:9;3307:7;3303:23;3299:32;3296:52;;;3344:1;3341;3334:12;3296:52;3383:9;3370:23;3402:31;3427:5;3402:31;:::i;3468:127::-;3529:10;3524:3;3520:20;3517:1;3510:31;3560:4;3557:1;3550:15;3584:4;3581:1;3574:15;3600:479;3653:3;3687:5;3681:12;3719:1;3715:2;3712:9;3702:140;;3764:10;3759:3;3755:20;3752:1;3745:31;3799:4;3796:1;3789:15;3827:4;3824:1;3817:15;3702:140;3863:2;3858:3;3851:15;;3915:4;3908:5;3904:16;3898:23;3891:4;3886:3;3882:14;3875:47;3968:4;3961:5;3957:16;3951:23;4006:4;3999;3994:3;3990:14;3983:28;4027:46;4067:4;4062:3;4058:14;4044:12;4027:46;:::i;:::-;4020:53;3600:479;-1:-1:-1;;;;3600:479:87:o;4084:267::-;4269:2;4258:9;4251:21;4232:4;4289:56;4341:2;4330:9;4326:18;4318:6;4289:56;:::i;4356:118::-;4442:5;4435:13;4428:21;4421:5;4418:32;4408:60;;4464:1;4461;4454:12;4479:241;4535:6;4588:2;4576:9;4567:7;4563:23;4559:32;4556:52;;;4604:1;4601;4594:12;4556:52;4643:9;4630:23;4662:28;4684:5;4662:28;:::i;5115:320::-;5183:6;5236:2;5224:9;5215:7;5211:23;5207:32;5204:52;;;5252:1;5249;5242:12;5204:52;5292:9;5279:23;5325:18;5317:6;5314:30;5311:50;;;5357:1;5354;5347:12;5311:50;5380:49;5421:7;5412:6;5401:9;5397:22;5380:49;:::i;5816:230::-;5886:6;5939:2;5927:9;5918:7;5914:23;5910:32;5907:52;;;5955:1;5952;5945:12;5907:52;-1:-1:-1;6000:16:87;;5816:230;-1:-1:-1;5816:230:87:o;6051:483::-;6104:5;6157:3;6150:4;6142:6;6138:17;6134:27;6124:55;;6175:1;6172;6165:12;6124:55;6208:6;6202:13;6239:52;6255:35;6283:6;6255:35;:::i;6239:52::-;6316:6;6307:7;6300:23;6370:3;6363:4;6354:6;6346;6342:19;6338:30;6335:39;6332:59;;;6387:1;6384;6377:12;6332:59;6445:6;6438:4;6430:6;6426:17;6419:4;6410:7;6406:18;6400:52;6501:1;6472:20;;;6494:4;6468:31;6461:42;;;;6476:7;6051:483;-1:-1:-1;;;6051:483:87:o;6539:335::-;6618:6;6671:2;6659:9;6650:7;6646:23;6642:32;6639:52;;;6687:1;6684;6677:12;6639:52;6720:9;6714:16;6753:18;6745:6;6742:30;6739:50;;;6785:1;6782;6775:12;6739:50;6808:60;6860:7;6851:6;6840:9;6836:22;6808:60;:::i;6879:850::-;6977:6;7030:2;7018:9;7009:7;7005:23;7001:32;6998:52;;;7046:1;7043;7036:12;6998:52;7079:9;7073:16;7112:18;7104:6;7101:30;7098:50;;;7144:1;7141;7134:12;7098:50;7167:22;;7223:4;7205:16;;;7201:27;7198:47;;;7241:1;7238;7231:12;7198:47;7267:22;;:::i;:::-;7319:2;7313:9;7353:1;7344:7;7341:14;7331:42;;7369:1;7366;7359:12;7331:42;7382:22;;7463:2;7455:11;;;7449:18;7483:14;;;7476:31;7546:2;7538:11;;7532:18;7575;7562:32;;7559:52;;;7607:1;7604;7597:12;7559:52;7643:55;7690:7;7679:8;7675:2;7671:17;7643:55;:::i;:::-;7638:2;7627:14;;7620:79;-1:-1:-1;7631:5:87;6879:850;-1:-1:-1;;;;6879:850:87:o;8014:477::-;8283:2;8272:9;8265:21;8246:4;8309:56;8361:2;8350:9;8346:18;8338:6;8309:56;:::i;:::-;8413:9;8405:6;8401:22;8396:2;8385:9;8381:18;8374:50;8441:44;8478:6;8470;8441:44;:::i;:::-;8433:52;8014:477;-1:-1:-1;;;;;8014:477:87:o;8496:380::-;8575:1;8571:12;;;;8618;;;8639:61;;8693:4;8685:6;8681:17;8671:27;;8639:61;8746:2;8738:6;8735:14;8715:18;8712:38;8709:161;;8792:10;8787:3;8783:20;8780:1;8773:31;8827:4;8824:1;8817:15;8855:4;8852:1;8845:15;8709:161;;8496:380;;;:::o;9006:517::-;9107:2;9102:3;9099:11;9096:421;;;9143:5;9140:1;9133:16;9187:4;9184:1;9174:18;9257:2;9245:10;9241:19;9238:1;9234:27;9228:4;9224:38;9293:4;9281:10;9278:20;9275:47;;;-1:-1:-1;9316:4:87;9275:47;9371:2;9366:3;9362:12;9359:1;9355:20;9349:4;9345:31;9335:41;;9426:81;9444:2;9437:5;9434:13;9426:81;;;9503:1;9489:16;;9470:1;9459:13;9426:81;;;9430:3;;9006:517;;;:::o;9699:1295::-;9823:3;9817:10;9850:18;9842:6;9839:30;9836:56;;;9872:18;;:::i;:::-;9901:96;9990:6;9950:38;9982:4;9976:11;9950:38;:::i;:::-;9944:4;9901:96;:::i;:::-;10046:4;10077:2;10066:14;;10094:1;10089:648;;;;10781:1;10798:6;10795:89;;;-1:-1:-1;10850:19:87;;;10844:26;10795:89;-1:-1:-1;;9656:1:87;9652:11;;;9648:24;9644:29;9634:40;9680:1;9676:11;;;9631:57;10897:81;;10059:929;;10089:648;8953:1;8946:14;;;8990:4;8977:18;;-1:-1:-1;;10125:20:87;;;10242:222;10256:7;10253:1;10250:14;10242:222;;;10338:19;;;10332:26;10317:42;;10445:4;10430:20;;;;10398:1;10386:14;;;;10272:12;10242:222;;;10246:3;10492:6;10483:7;10480:19;10477:201;;;10553:19;;;10547:26;-1:-1:-1;;10636:1:87;10632:14;;;10648:3;10628:24;10624:37;10620:42;10605:58;10590:74;;10477:201;-1:-1:-1;;;;10724:1:87;10708:14;;;10704:22;10691:36;;-1:-1:-1;9699:1295:87:o;10999:614::-;11304:3;11293:9;11286:22;11267:4;11325:57;11377:3;11366:9;11362:19;11354:6;11325:57;:::i;:::-;-1:-1:-1;;;;;11418:32:87;;;11413:2;11398:18;;11391:60;11487:32;;;;11482:2;11467:18;;11460:60;11551:2;11536:18;;11529:34;;;;11594:3;11579:19;;;11572:35;11317:65;10999:614;-1:-1:-1;;10999:614:87:o;11897:245::-;11964:6;12017:2;12005:9;11996:7;11992:23;11988:32;11985:52;;;12033:1;12030;12023:12;11985:52;12065:9;12059:16;12084:28;12106:5;12084:28;:::i;12615:498::-;12696:5;12744:4;12732:9;12727:3;12723:19;12719:30;12716:50;;;12762:1;12759;12752:12;12716:50;12815:2;12809:9;12857:4;12845:17;;12892:18;12877:34;;12913:22;;;12874:62;12871:88;;;12939:18;;:::i;:::-;12975:2;12968:22;13059:16;;13084:23;;-1:-1:-1;13008:6:87;12615:498;-1:-1:-1;12615:498:87:o;13118:192::-;13197:13;;13250:34;13239:46;;13229:57;;13219:85;;13300:1;13297;13290:12;13219:85;13118:192;;;:::o;13315:169::-;13393:13;;13446:12;13435:24;;13425:35;;13415:63;;13474:1;13471;13464:12;13489:163;13567:13;;13620:6;13609:18;;13599:29;;13589:57;;13642:1;13639;13632:12;13657:138;13736:13;;13758:31;13736:13;13758:31;:::i;13800:1549::-;13900:6;13960:3;13948:9;13939:7;13935:23;13931:33;13976:2;13973:22;;;13991:1;13988;13981:12;13973:22;-1:-1:-1;14033:22:87;;:::i;:::-;14078:72;14142:7;14131:9;14078:72;:::i;:::-;14071:5;14064:87;14183:49;14228:2;14217:9;14213:18;14183:49;:::i;:::-;14178:2;14171:5;14167:14;14160:73;14265:49;14310:2;14299:9;14295:18;14265:49;:::i;:::-;14260:2;14253:5;14249:14;14242:73;14347:49;14392:2;14381:9;14377:18;14347:49;:::i;:::-;14342:2;14335:5;14331:14;14324:73;14430:50;14475:3;14464:9;14460:19;14430:50;:::i;:::-;14424:3;14417:5;14413:15;14406:75;14514:50;14559:3;14548:9;14544:19;14514:50;:::i;:::-;14508:3;14501:5;14497:15;14490:75;14598:49;14642:3;14631:9;14627:19;14598:49;:::i;:::-;14592:3;14585:5;14581:15;14574:74;14681:49;14725:3;14714:9;14710:19;14681:49;:::i;:::-;14675:3;14668:5;14664:15;14657:74;14764:50;14809:3;14798:9;14794:19;14764:50;:::i;:::-;14758:3;14751:5;14747:15;14740:75;14848:50;14893:3;14882:9;14878:19;14848:50;:::i;:::-;14842:3;14835:5;14831:15;14824:75;14932:50;14977:3;14966:9;14962:19;14932:50;:::i;:::-;14926:3;14919:5;14915:15;14908:75;15016:50;15061:3;15050:9;15046:19;15016:50;:::i;:::-;15010:3;15003:5;14999:15;14992:75;15100:50;15145:3;15134:9;15130:19;15100:50;:::i;:::-;15094:3;15087:5;15083:15;15076:75;15184:50;15229:3;15218:9;15214:19;15184:50;:::i;:::-;15178:3;15171:5;15167:15;15160:75;15268:50;15313:3;15302:9;15298:19;15268:50;:::i;:::-;15262:3;15251:15;;15244:75;15255:5;13800:1549;-1:-1:-1;;;13800:1549:87:o;15354:127::-;15415:10;15410:3;15406:20;15403:1;15396:31;15446:4;15443:1;15436:15;15470:4;15467:1;15460:15;15486:168;15559:9;;;15590;;15607:15;;;15601:22;;15587:37;15577:71;;15628:18;;:::i;15659:128::-;15726:9;;;15747:11;;;15744:37;;;15761:18;;:::i;15792:127::-;15853:10;15848:3;15844:20;15841:1;15834:31;15884:4;15881:1;15874:15;15908:4;15905:1;15898:15;15924:217;15964:1;15990;15980:132;;16034:10;16029:3;16025:20;16022:1;16015:31;16069:4;16066:1;16059:15;16097:4;16094:1;16087:15;15980:132;-1:-1:-1;16126:9:87;;15924:217::o;16146:247::-;16214:6;16267:2;16255:9;16246:7;16242:23;16238:32;16235:52;;;16283:1;16280;16273:12;16235:52;16315:9;16309:16;16334:29;16357:5;16334:29;:::i;16398:151::-;16488:4;16481:12;;;16467;;;16463:31;;16506:14;;16503:40;;;16523:18;;:::i;16554:375::-;16642:1;16660:5;16674:249;16695:1;16685:8;16682:15;16674:249;;;16745:4;16740:3;16736:14;16730:4;16727:24;16724:50;;;16754:18;;:::i;:::-;16804:1;16794:8;16790:16;16787:49;;;16818:16;;;;16787:49;16901:1;16897:16;;;;;16857:15;;16674:249;;;16554:375;;;;;;:::o;16934:902::-;16983:5;17013:8;17003:80;;-1:-1:-1;17054:1:87;17068:5;;17003:80;17102:4;17092:76;;-1:-1:-1;17139:1:87;17153:5;;17092:76;17184:4;17202:1;17197:59;;;;17270:1;17265:174;;;;17177:262;;17197:59;17227:1;17218:10;;17241:5;;;17265:174;17302:3;17292:8;17289:17;17286:43;;;17309:18;;:::i;:::-;-1:-1:-1;;17365:1:87;17351:16;;17424:5;;17177:262;;17523:2;17513:8;17510:16;17504:3;17498:4;17495:13;17491:36;17485:2;17475:8;17472:16;17467:2;17461:4;17458:12;17454:35;17451:77;17448:203;;;-1:-1:-1;17560:19:87;;;17636:5;;17448:203;17683:42;-1:-1:-1;;17708:8:87;17702:4;17683:42;:::i;:::-;17761:6;17757:1;17753:6;17749:19;17740:7;17737:32;17734:58;;;17772:18;;:::i;:::-;17810:20;;16934:902;-1:-1:-1;;;16934:902:87:o;17841:140::-;17899:5;17928:47;17969:4;17959:8;17955:19;17949:4;17928:47;:::i"},"methodIdentifiers":{"asset(address)":"9c4667a2","connect(bytes)":"9cd47128","deposit(uint256)":"b6b55f25","disconnect(bool)":"5a117456","forwardEntryPoint(uint8,bytes)":"0981b1c2","getSwapConfig(address)":"42b054f0","investAsset(address)":"de846ae4","investAssetPrice()":"1418983b","maxDeposit(address)":"402d267d","maxWithdraw(address)":"ce96cb77","storageSlot()":"5b9a4c35","totalAssets(address)":"f3e0ffbf","withdraw(uint256)":"2e1a7d4d"}},"metadata":"{\"compiler\":{\"version\":\"0.8.30+commit.73712a01\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"inputs\":[{\"internalType\":\"contract IERC20Metadata\",\"name\":\"asset_\",\"type\":\"address\"},{\"internalType\":\"contract IERC20Metadata\",\"name\":\"investAsset_\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"price_\",\"type\":\"uint256\"},{\"internalType\":\"contract IPool\",\"name\":\"aave_\",\"type\":\"address\"}],\"stateMutability\":\"nonpayable\",\"type\":\"constructor\"},{\"inputs\":[],\"name\":\"CanBeCalledOnlyThroughDelegateCall\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"CannotDisconnectWithAssets\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"InvalidAsset\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"NoExtraDataAllowed\",\"type\":\"error\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"assets\",\"type\":\"uint256\"}],\"name\":\"ResupplyFailed\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"components\":[{\"internalType\":\"enum SwapLibrary.SwapProtocol\",\"name\":\"protocol\",\"type\":\"uint8\"},{\"internalType\":\"uint256\",\"name\":\"maxSlippage\",\"type\":\"uint256\"},{\"internalType\":\"bytes\",\"name\":\"customParams\",\"type\":\"bytes\"}],\"indexed\":false,\"internalType\":\"struct SwapLibrary.SwapConfig\",\"name\":\"oldConfig\",\"type\":\"tuple\"},{\"components\":[{\"internalType\":\"enum SwapLibrary.SwapProtocol\",\"name\":\"protocol\",\"type\":\"uint8\"},{\"internalType\":\"uint256\",\"name\":\"maxSlippage\",\"type\":\"uint256\"},{\"internalType\":\"bytes\",\"name\":\"customParams\",\"type\":\"bytes\"}],\"indexed\":false,\"internalType\":\"struct SwapLibrary.SwapConfig\",\"name\":\"newConfig\",\"type\":\"tuple\"}],\"name\":\"SwapConfigChanged\",\"type\":\"event\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"name\":\"asset\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes\",\"name\":\"initData\",\"type\":\"bytes\"}],\"name\":\"connect\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"assets\",\"type\":\"uint256\"}],\"name\":\"deposit\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bool\",\"name\":\"force\",\"type\":\"bool\"}],\"name\":\"disconnect\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint8\",\"name\":\"method\",\"type\":\"uint8\"},{\"internalType\":\"bytes\",\"name\":\"params\",\"type\":\"bytes\"}],\"name\":\"forwardEntryPoint\",\"outputs\":[{\"internalType\":\"bytes\",\"name\":\"\",\"type\":\"bytes\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"contract_\",\"type\":\"address\"}],\"name\":\"getSwapConfig\",\"outputs\":[{\"components\":[{\"internalType\":\"enum SwapLibrary.SwapProtocol\",\"name\":\"protocol\",\"type\":\"uint8\"},{\"internalType\":\"uint256\",\"name\":\"maxSlippage\",\"type\":\"uint256\"},{\"internalType\":\"bytes\",\"name\":\"customParams\",\"type\":\"bytes\"}],\"internalType\":\"struct SwapLibrary.SwapConfig\",\"name\":\"\",\"type\":\"tuple\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"name\":\"investAsset\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"investAssetPrice\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"name\":\"maxDeposit\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"contract_\",\"type\":\"address\"}],\"name\":\"maxWithdraw\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"storageSlot\",\"outputs\":[{\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"contract_\",\"type\":\"address\"}],\"name\":\"totalAssets\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"assets\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"assets\",\"type\":\"uint256\"}],\"name\":\"withdraw\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"}],\"devdoc\":{\"author\":\"Ensuro\",\"custom:security-contact\":\"security@ensuro.co\",\"details\":\"Strategy that invests/deinvests by swapping into another token that has a stable price compared to the asset.      And then invests the resulting token in AAVE. Useful when equivalent assets like Bridged USDC and Native USDC      have different returns on AAVE.\",\"kind\":\"dev\",\"methods\":{\"asset(address)\":{\"details\":\"The address of the underlying token used for accounting, depositing, and withdrawing. It must be the same      as `IERC4626(contract_).asset()` when dealing with vaults.\",\"params\":{\"contract_\":\"The address of the vault contract that owns the assets.\"}},\"connect(bytes)\":{\"details\":\"Called when the strategy is plugged into the vault. Initializes the strategy storage and can do validations\",\"params\":{\"initData\":\"Initialization data for the strategy. Must be parsed by the strategy, since the format is                 strategy specific\"}},\"constructor\":{\"details\":\"Constructor of the strategy\",\"params\":{\"aave_\":\"Address of AAVE Pool contract\",\"asset_\":\"The address of the underlying token used for accounting, depositing, and withdrawing.\",\"investAsset_\":\"The address of the tokens that are later supplied to AAVE\",\"price_\":\"Approximate amount of units of _asset required to acquire a unit of _investAsset\"}},\"deposit(uint256)\":{\"details\":\"Deposit the amount of assets given into the strategy by swapping _asset to _investAsset\",\"params\":{\"assets\":\"Amount of assets to be deposited.\"}},\"disconnect(bool)\":{\"details\":\"Called when the strategy is un-plugged from the vault. Should revert if there are still assets in the      strategy, unless force==true.\",\"params\":{\"force\":\"If true, disconnect should not fail if assets remain in the strategy. Otherwise, disconnect              MUST fail if totalAssets() != 0.\"}},\"forwardEntryPoint(uint8,bytes)\":{\"details\":\"Receives an external call to execute a custom method of action in the strategy. Can be used for harvesting      rewards or other tasks. It's called with delegatecall from the calling vault. The calling vault SHOULD      do the access control validation, since the strategy normally won't do it.\",\"params\":{\"method\":\"An id of the method or action to call/execute. It's recommended to define an enum and convert the               the uint8 value into the enum.\",\"params\":\"Params for the method or action. Parsed by the strategy, it might differ from one or other method.\"}},\"getSwapConfig(address)\":{\"details\":\"Returns the swap configuration of the given contract.\",\"params\":{\"contract_\":\"Address of the vault contract\"}},\"investAsset(address)\":{\"details\":\"Returns the address of the asset invested in the strategy.\"},\"investAssetPrice()\":{\"details\":\"Returns the amount of `asset()` required to acquire one unit of `investAsset()` or the amount of `asset()`      that should be received by selling a unit of `investAsset()`. It doesn't consider slippage.\",\"returns\":{\"_0\":\"The amount is expressed in WAD (18 decimals), units: (asset/investAsset)\"}},\"maxDeposit(address)\":{\"details\":\"Returns the max amount that can be deposited into the strategy.\",\"params\":{\"contract_\":\"The address of the vault contract that owns the assets and where the strategy is plugged\"}},\"maxWithdraw(address)\":{\"details\":\"Returns the max amount that can be withdrawn from the strategy.\",\"params\":{\"contract_\":\"The address of the vault contract that owns the assets and where the strategy is plugged\"}},\"totalAssets(address)\":{\"details\":\"Returns the number of assets under management of the investment strategy for a given contract.\",\"params\":{\"contract_\":\"The address of the vault contract that owns the assets and where the strategy is plugged\"}},\"withdraw(uint256)\":{\"details\":\"Withdraws the amount of assets given from the strategy swapping _investAsset to _asset\",\"params\":{\"assets\":\"Amount of assets to be withdrawn.\"}}},\"title\":\"SwapStableAaveV3InvestStrategy\",\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{},\"version\":1}},\"settings\":{\"compilationTarget\":{\"contracts/strategies/SwapStableAaveV3InvestStrategy.sol\":\"SwapStableAaveV3InvestStrategy\"},\"evmVersion\":\"prague\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"enabled\":true,\"runs\":200},\"remappings\":[]},\"sources\":{\"@ensuro/swaplibrary/contracts/CurveRoutes.sol\":{\"keccak256\":\"0x631af8ec291043d7eef34b97a427a4f53eb46d852088f6620c46a36a7e851963\",\"license\":\"Apache-2.0\",\"urls\":[\"bzz-raw://fbaf0f64980572d977b87b83e8bfc9c79fd1d2dc49a21e77e2a11fb8dec2413a\",\"dweb:/ipfs/QmYTpv2BroRz8PpWXYRp5KaaCXRy3tkZ95DeXybP4j3ti4\"]},\"@ensuro/swaplibrary/contracts/SwapLibrary.sol\":{\"keccak256\":\"0x3b1db1690ce8fa74972e4b4a57de41f4a880c8566b279316113d7398ea711812\",\"license\":\"Apache-2.0\",\"urls\":[\"bzz-raw://2746b500f5916604c16589fdbabf94b4d97689dcb96095376ed4956f9de663a6\",\"dweb:/ipfs/QmepecwnwauXsLuQmmoFNbH5XbZYEHH4bjnshQRRUeyH4r\"]},\"@ensuro/swaplibrary/contracts/dependencies/ICurveRouter.sol\":{\"keccak256\":\"0xf8c39f61b7459cfe6ba74d88fee74efd6d3d05d5cd64dc9eb6d08fbe0361affd\",\"license\":\"UNLICENSED\",\"urls\":[\"bzz-raw://55f11ef7e1cc66fa2c6c2aec436ccf00a835acf4281bff4ee9b4d2cb8980c92f\",\"dweb:/ipfs/QmPfvjcbLbHwoFRFGkM5zvM25vrEvZxjwbxSUL5jm5n3pZ\"]},\"@openzeppelin/contracts/interfaces/IERC20Metadata.sol\":{\"keccak256\":\"0xd735962e3d6660884153ba8a972b5f100dde4c482f2ff1c525ba7fdefb154cbd\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://5a264d17b093f585844b0d977e9f60555b8c8d6513b304fde863cdf652a0d336\",\"dweb:/ipfs/QmWXfaJisjVnrjTUjZGryZpMob9wKivvtbodLS3PTc1ttq\"]},\"@openzeppelin/contracts/token/ERC20/IERC20.sol\":{\"keccak256\":\"0x74ed01eb66b923d0d0cfe3be84604ac04b76482a55f9dd655e1ef4d367f95bc2\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://5282825a626cfe924e504274b864a652b0023591fa66f06a067b25b51ba9b303\",\"dweb:/ipfs/QmeCfPykghhMc81VJTrHTC7sF6CRvaA1FXVq2pJhwYp1dV\"]},\"@openzeppelin/contracts/token/ERC20/extensions/IERC20Metadata.sol\":{\"keccak256\":\"0xd6fa4088198f04eef10c5bce8a2f4d60554b7ec4b987f684393c01bf79b94d9f\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://f95ee0bbd4dd3ac730d066ba3e785ded4565e890dbec2fa7d3b9fe3bad9d0d6e\",\"dweb:/ipfs/QmSLr6bHkPFWT7ntj34jmwfyskpwo97T9jZUrk5sz3sdtR\"]},\"@openzeppelin/contracts/utils/Address.sol\":{\"keccak256\":\"0x0fa9e0d3a859900b5a46f70a03c73adf259603d5e05027a37fe0b45529d85346\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://c2add4da0240c9f2ce47649c8bb6b11b40e98cf6f88b8bdc76b2704e89391710\",\"dweb:/ipfs/QmNQTwF2uVzu4CRtNxr8bxyP9XuW6VsZuo2Nr4KR2bZr3d\"]},\"@openzeppelin/contracts/utils/Errors.sol\":{\"keccak256\":\"0x6afa713bfd42cf0f7656efa91201007ac465e42049d7de1d50753a373648c123\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://ba1d02f4847670a1b83dec9f7d37f0b0418d6043447b69f3a29a5f9efc547fcf\",\"dweb:/ipfs/QmQ7iH2keLNUKgq2xSWcRmuBE5eZ3F5whYAkAGzCNNoEWB\"]},\"@openzeppelin/contracts/utils/LowLevelCall.sol\":{\"keccak256\":\"0x5b4802a4352474792df3107e961d1cc593e47b820c14f69d3505cb28f5a6a583\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://a6f86fd01f829499fe0545ff5dda07d4521988e88bfe0bf801fc15650921ed56\",\"dweb:/ipfs/QmUUKu4ZDffHAmfkf3asuQfmLTyfpuy2Amdncc3SqfzKPG\"]},\"@openzeppelin/contracts/utils/Panic.sol\":{\"keccak256\":\"0xf7fe324703a64fc51702311dc51562d5cb1497734f074e4f483bfb6717572d7a\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://c6a5ff4f9fd8649b7ee20800b7fa387d3465bd77cf20c2d1068cd5c98e1ed57a\",\"dweb:/ipfs/QmVSaVJf9FXFhdYEYeCEfjMVHrxDh5qL4CGkxdMWpQCrqG\"]},\"@openzeppelin/contracts/utils/StorageSlot.sol\":{\"keccak256\":\"0xcf74f855663ce2ae00ed8352666b7935f6cddea2932fdf2c3ecd30a9b1cd0e97\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://9f660b1f351b757dfe01438e59888f31f33ded3afcf5cb5b0d9bf9aa6f320a8b\",\"dweb:/ipfs/QmarDJ5hZEgBtCmmrVzEZWjub9769eD686jmzb2XpSU1cM\"]},\"@openzeppelin/contracts/utils/math/Math.sol\":{\"keccak256\":\"0x09e3f1c72d4c5cbe8e2644ab7313f8f7177533ae2f4c24cdcbbeaf520a73734c\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://93208401215d539fa2d81626b207c1f611def7883d0e447b3b5969ebaa7b3c2c\",\"dweb:/ipfs/QmXPxDnQPx8LAweX5ZJqEcwkvs59kP4c64VVDG1Jjq1mef\"]},\"@openzeppelin/contracts/utils/math/SafeCast.sol\":{\"keccak256\":\"0x195533c86d0ef72bcc06456a4f66a9b941f38eb403739b00f21fd7c1abd1ae54\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://b1d578337048cad08c1c03041cca5978eff5428aa130c781b271ad9e5566e1f8\",\"dweb:/ipfs/QmPFKL2r9CBsMwmUqqdcFPfHZB2qcs9g1HDrPxzWSxomvy\"]},\"@uniswap/v3-core/contracts/interfaces/callback/IUniswapV3SwapCallback.sol\":{\"keccak256\":\"0x3f485fb1a44e8fbeadefb5da07d66edab3cfe809f0ac4074b1e54e3eb3c4cf69\",\"license\":\"GPL-2.0-or-later\",\"urls\":[\"bzz-raw://095ce0626b41318c772b3ebf19d548282607f6a8f3d6c41c13edfbd5370c8652\",\"dweb:/ipfs/QmVDZfJJ89UUCE1hMyzqpkZAtQ8jUsBgZNE5AMRG7RzRFS\"]},\"@uniswap/v3-periphery/contracts/interfaces/ISwapRouter.sol\":{\"keccak256\":\"0x9bfaf1feb32814623e627ab70f2409760b15d95f1f9b058e2b3399a8bb732975\",\"license\":\"GPL-2.0-or-later\",\"urls\":[\"bzz-raw://a8a2c3e55965b61bcd91993d8e1d5d34b8b8a63e0fdfce87a85f6af92526fd53\",\"dweb:/ipfs/QmQj2CSCSwqDSU4KMNWxGsN2336Cy64WgpV1X1EHXNZWxM\"]},\"contracts/InvestStrategyClient.sol\":{\"keccak256\":\"0x3c8fff73042023381eb750ba13a9066475d208e99bde568e1243f0e1e282c894\",\"license\":\"Apache-2.0\",\"urls\":[\"bzz-raw://3f8283ffa5c512e482b0065d9391c7060ebc1fa5968c55e6a05958480b7facb6\",\"dweb:/ipfs/QmT4N9Z19b6AUXpXtg23d3ijBExyKuRJBeQ3o8WCobgpfT\"]},\"contracts/dependencies/aave-v3/DataTypes.sol\":{\"keccak256\":\"0x771cb99fd8519c974f7e12130387c4d9a997a6e8d0ac10e4303b842fe53efa88\",\"license\":\"BUSL-1.1\",\"urls\":[\"bzz-raw://0f41689d1d58bc13678c749bae8830f5a8b19b89cd135e962bf07d483350f828\",\"dweb:/ipfs/QmQSNGDxjYGqT1GU2CZzsWUTNcAtcfkg1jDGTH516nCAfN\"]},\"contracts/dependencies/aave-v3/Errors.sol\":{\"keccak256\":\"0x61757945ed506349f2cec8b99806124ef17f70644faba9860fb134df8ca34e86\",\"license\":\"BUSL-1.1\",\"urls\":[\"bzz-raw://a405589e8bb12568d3d4dbf936bcf40c43964170f3bbf380483e9df4d73f2cf7\",\"dweb:/ipfs/QmXCtAp2iom96rZnQWGDehxuPszgn6SMuB3mJcHzCq9uwx\"]},\"contracts/dependencies/aave-v3/IPool.sol\":{\"keccak256\":\"0x9672a8147a2f72600b78b0f08a0f9f6ea67c7a855905ad5cd0a5254cd47be3f3\",\"license\":\"AGPL-3.0\",\"urls\":[\"bzz-raw://2abd09105b2578424a83151d1cb16fbb043b9368884e1136c8edf28ecd71ebb0\",\"dweb:/ipfs/QmSU8JuTMypx1Abr7gyyAchWKwNYKkZrKWW8Kd8qHVCrXs\"]},\"contracts/dependencies/aave-v3/IPoolAddressesProvider.sol\":{\"keccak256\":\"0x2f70daa98416d61fd3128b1ee05f96852d84074689a2c2132a7fd587c5c9e3f0\",\"license\":\"AGPL-3.0\",\"urls\":[\"bzz-raw://7843e6da934079a714ab1d4a67a81108d3722067bde86ae2a36b6a288ab4e353\",\"dweb:/ipfs/QmWa6zUZsKJa7wKY5msQCuN7vYxi5H4QJwnp6gF2QTWfPH\"]},\"contracts/dependencies/aave-v3/ReserveConfiguration.sol\":{\"keccak256\":\"0x5b10e425dc3964b2c0add1d965ec9bfd51b5d4287f0fa060203e8822c8050ba4\",\"license\":\"BUSL-1.1\",\"urls\":[\"bzz-raw://f2ed401c261e8e0e6c455f16a941c28f7bb49c5f2b51e0e169b4003c72bbd1c3\",\"dweb:/ipfs/QmYtuHT71SgASLKWNydM89qrPvEApiEDyiw3xm3EzgUX7x\"]},\"contracts/interfaces/IExposeStorage.sol\":{\"keccak256\":\"0x68d4dbc7e135ac949f5f557a1f071b96d1639262188f91957bf082be7e72b1c7\",\"license\":\"Apache-2.0\",\"urls\":[\"bzz-raw://29fc549ef136e19275bb9225c8e7f02e0cc3b274acef4e6d7002c6f3f74e5c13\",\"dweb:/ipfs/QmVzrn7Cbxe8xzLwy4ZpzxP6CBEKsegXG8VusNYqssCe3d\"]},\"contracts/interfaces/IInvestStrategy.sol\":{\"keccak256\":\"0x6800a1f147def2252b79629150ce9cd87e914ca5a966f1035fbca6328bbc9c4b\",\"license\":\"Apache-2.0\",\"urls\":[\"bzz-raw://2e9260604e0ffcf405819f85fee4124d9a090cf716f389ff92cf76a2837a2e42\",\"dweb:/ipfs/QmVdKEW8C6MDyiiUfjBxEMTWjfPrBJadptpxh9L2uCebDK\"]},\"contracts/strategies/SwapAssetInvestStrategy.sol\":{\"keccak256\":\"0xcbe222638e775ca5e6d7cd2e864bdb35fa13afe6c648f682ef3c7a8f6439d4c6\",\"license\":\"Apache-2.0\",\"urls\":[\"bzz-raw://e9ea100bc7cf8aa1d848fad0ade54b3c636790a90dea10fd829ac5c5cabf4763\",\"dweb:/ipfs/QmYm6d3bZh39VTucf9aGuRPYFnMecx2jnUoE9ZtqLM9Lbo\"]},\"contracts/strategies/SwapStableAaveV3InvestStrategy.sol\":{\"keccak256\":\"0x0fcedbe6a87ec28df16046ba7b797008b5e38f351fa63a75abe0325b3e5d4eeb\",\"license\":\"Apache-2.0\",\"urls\":[\"bzz-raw://890cc94cd23171f0ae859df89078e4d8a73776acfbee61cd77346537c62e63b7\",\"dweb:/ipfs/QmWTTUiZVR188Fpnx1TtihVapMz8gDT9r77saSM96R1ZVx\"]},\"contracts/strategies/SwapStableInvestStrategy.sol\":{\"keccak256\":\"0xa67bd53413f150552488e4d03ba9380b82c04864ae0a61051a6c0fcd81b0bb98\",\"license\":\"Apache-2.0\",\"urls\":[\"bzz-raw://f0335981613b4884893f3716a4bbcbf0072565545328932dec3a7a9de4fe8f0a\",\"dweb:/ipfs/QmTc3rRhhCuBVx6XEMjwojSWgP8CmVNiZaAjA6S4XsJTc3\"]},\"solidity-bytes-utils/contracts/BytesLib.sol\":{\"keccak256\":\"0xf4b07e5d8f69407bb43c6db224adfcf6c73b512dd64e85008ac3c222910c3555\",\"license\":\"Unlicense\",\"urls\":[\"bzz-raw://db020721e59008f7159b65962cc24038c92ac1c2ee8b7cfaa28a1771ced663f5\",\"dweb:/ipfs/QmQ8rznRTYc3AoVCJno8tY6vQVKCbhDJ3husfytUUvMrSN\"]}},\"version\":1}","storageLayout":{"storage":[],"types":null}}},"contracts/strategies/SwapStableInvestStrategy.sol":{"SwapStableInvestStrategy":{"abi":[{"inputs":[{"internalType":"contract IERC20Metadata","name":"asset_","type":"address"},{"internalType":"contract IERC20Metadata","name":"investAsset_","type":"address"},{"internalType":"uint256","name":"price_","type":"uint256"}],"stateMutability":"nonpayable","type":"constructor"},{"inputs":[],"name":"CanBeCalledOnlyThroughDelegateCall","type":"error"},{"inputs":[],"name":"CannotDisconnectWithAssets","type":"error"},{"inputs":[],"name":"InvalidAsset","type":"error"},{"inputs":[],"name":"NoExtraDataAllowed","type":"error"},{"anonymous":false,"inputs":[{"components":[{"internalType":"enum SwapLibrary.SwapProtocol","name":"protocol","type":"uint8"},{"internalType":"uint256","name":"maxSlippage","type":"uint256"},{"internalType":"bytes","name":"customParams","type":"bytes"}],"indexed":false,"internalType":"struct SwapLibrary.SwapConfig","name":"oldConfig","type":"tuple"},{"components":[{"internalType":"enum SwapLibrary.SwapProtocol","name":"protocol","type":"uint8"},{"internalType":"uint256","name":"maxSlippage","type":"uint256"},{"internalType":"bytes","name":"customParams","type":"bytes"}],"indexed":false,"internalType":"struct SwapLibrary.SwapConfig","name":"newConfig","type":"tuple"}],"name":"SwapConfigChanged","type":"event"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"asset","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"bytes","name":"initData","type":"bytes"}],"name":"connect","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"assets","type":"uint256"}],"name":"deposit","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bool","name":"force","type":"bool"}],"name":"disconnect","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint8","name":"method","type":"uint8"},{"internalType":"bytes","name":"params","type":"bytes"}],"name":"forwardEntryPoint","outputs":[{"internalType":"bytes","name":"","type":"bytes"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"contract_","type":"address"}],"name":"getSwapConfig","outputs":[{"components":[{"internalType":"enum SwapLibrary.SwapProtocol","name":"protocol","type":"uint8"},{"internalType":"uint256","name":"maxSlippage","type":"uint256"},{"internalType":"bytes","name":"customParams","type":"bytes"}],"internalType":"struct SwapLibrary.SwapConfig","name":"","type":"tuple"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"investAsset","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"investAssetPrice","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"maxDeposit","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"contract_","type":"address"}],"name":"maxWithdraw","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"storageSlot","outputs":[{"internalType":"bytes32","name":"","type":"bytes32"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"contract_","type":"address"}],"name":"totalAssets","outputs":[{"internalType":"uint256","name":"assets","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"assets","type":"uint256"}],"name":"withdraw","outputs":[],"stateMutability":"nonpayable","type":"function"}],"evm":{"bytecode":{"functionDebugData":{"@_24037":{"entryPoint":null,"id":24037,"parameterSlots":2,"returnSlots":0},"@_24877":{"entryPoint":null,"id":24877,"parameterSlots":3,"returnSlots":0},"@makeStorageSlot_15638":{"entryPoint":null,"id":15638,"parameterSlots":1,"returnSlots":1},"abi_decode_contract_IERC20Metadata_fromMemory":{"entryPoint":467,"id":null,"parameterSlots":1,"returnSlots":1},"abi_decode_tuple_t_contract$_IERC20Metadata_$9411t_contract$_IERC20Metadata_$9411t_uint256_fromMemory":{"entryPoint":494,"id":null,"parameterSlots":2,"returnSlots":3},"abi_decode_tuple_t_uint8_fromMemory":{"entryPoint":551,"id":null,"parameterSlots":2,"returnSlots":1},"abi_encode_tuple_t_stringliteral_4fed0cd3539a36e00a34a6c026c2615824c9ad47da5ef65e8372c7e721c05d79_t_contract$_IInvestStrategy_$20725__to_t_string_memory_ptr_t_address__fromStack_reversed":{"entryPoint":null,"id":null,"parameterSlots":2,"returnSlots":1}},"generatedSources":[{"ast":{"nativeSrc":"0:1408:87","nodeType":"YulBlock","src":"0:1408:87","statements":[{"nativeSrc":"6:3:87","nodeType":"YulBlock","src":"6:3:87","statements":[]},{"body":{"nativeSrc":"90:117:87","nodeType":"YulBlock","src":"90:117:87","statements":[{"nativeSrc":"100:22:87","nodeType":"YulAssignment","src":"100:22:87","value":{"arguments":[{"name":"offset","nativeSrc":"115:6:87","nodeType":"YulIdentifier","src":"115:6:87"}],"functionName":{"name":"mload","nativeSrc":"109:5:87","nodeType":"YulIdentifier","src":"109:5:87"},"nativeSrc":"109:13:87","nodeType":"YulFunctionCall","src":"109:13:87"},"variableNames":[{"name":"value","nativeSrc":"100:5:87","nodeType":"YulIdentifier","src":"100:5:87"}]},{"body":{"nativeSrc":"185:16:87","nodeType":"YulBlock","src":"185:16:87","statements":[{"expression":{"arguments":[{"kind":"number","nativeSrc":"194:1:87","nodeType":"YulLiteral","src":"194:1:87","type":"","value":"0"},{"kind":"number","nativeSrc":"197:1:87","nodeType":"YulLiteral","src":"197:1:87","type":"","value":"0"}],"functionName":{"name":"revert","nativeSrc":"187:6:87","nodeType":"YulIdentifier","src":"187:6:87"},"nativeSrc":"187:12:87","nodeType":"YulFunctionCall","src":"187:12:87"},"nativeSrc":"187:12:87","nodeType":"YulExpressionStatement","src":"187:12:87"}]},"condition":{"arguments":[{"arguments":[{"name":"value","nativeSrc":"144:5:87","nodeType":"YulIdentifier","src":"144:5:87"},{"arguments":[{"name":"value","nativeSrc":"155:5:87","nodeType":"YulIdentifier","src":"155:5:87"},{"arguments":[{"arguments":[{"kind":"number","nativeSrc":"170:3:87","nodeType":"YulLiteral","src":"170:3:87","type":"","value":"160"},{"kind":"number","nativeSrc":"175:1:87","nodeType":"YulLiteral","src":"175:1:87","type":"","value":"1"}],"functionName":{"name":"shl","nativeSrc":"166:3:87","nodeType":"YulIdentifier","src":"166:3:87"},"nativeSrc":"166:11:87","nodeType":"YulFunctionCall","src":"166:11:87"},{"kind":"number","nativeSrc":"179:1:87","nodeType":"YulLiteral","src":"179:1:87","type":"","value":"1"}],"functionName":{"name":"sub","nativeSrc":"162:3:87","nodeType":"YulIdentifier","src":"162:3:87"},"nativeSrc":"162:19:87","nodeType":"YulFunctionCall","src":"162:19:87"}],"functionName":{"name":"and","nativeSrc":"151:3:87","nodeType":"YulIdentifier","src":"151:3:87"},"nativeSrc":"151:31:87","nodeType":"YulFunctionCall","src":"151:31:87"}],"functionName":{"name":"eq","nativeSrc":"141:2:87","nodeType":"YulIdentifier","src":"141:2:87"},"nativeSrc":"141:42:87","nodeType":"YulFunctionCall","src":"141:42:87"}],"functionName":{"name":"iszero","nativeSrc":"134:6:87","nodeType":"YulIdentifier","src":"134:6:87"},"nativeSrc":"134:50:87","nodeType":"YulFunctionCall","src":"134:50:87"},"nativeSrc":"131:70:87","nodeType":"YulIf","src":"131:70:87"}]},"name":"abi_decode_contract_IERC20Metadata_fromMemory","nativeSrc":"14:193:87","nodeType":"YulFunctionDefinition","parameters":[{"name":"offset","nativeSrc":"69:6:87","nodeType":"YulTypedName","src":"69:6:87","type":""}],"returnVariables":[{"name":"value","nativeSrc":"80:5:87","nodeType":"YulTypedName","src":"80:5:87","type":""}],"src":"14:193:87"},{"body":{"nativeSrc":"373:271:87","nodeType":"YulBlock","src":"373:271:87","statements":[{"body":{"nativeSrc":"419:16:87","nodeType":"YulBlock","src":"419:16:87","statements":[{"expression":{"arguments":[{"kind":"number","nativeSrc":"428:1:87","nodeType":"YulLiteral","src":"428:1:87","type":"","value":"0"},{"kind":"number","nativeSrc":"431:1:87","nodeType":"YulLiteral","src":"431:1:87","type":"","value":"0"}],"functionName":{"name":"revert","nativeSrc":"421:6:87","nodeType":"YulIdentifier","src":"421:6:87"},"nativeSrc":"421:12:87","nodeType":"YulFunctionCall","src":"421:12:87"},"nativeSrc":"421:12:87","nodeType":"YulExpressionStatement","src":"421:12:87"}]},"condition":{"arguments":[{"arguments":[{"name":"dataEnd","nativeSrc":"394:7:87","nodeType":"YulIdentifier","src":"394:7:87"},{"name":"headStart","nativeSrc":"403:9:87","nodeType":"YulIdentifier","src":"403:9:87"}],"functionName":{"name":"sub","nativeSrc":"390:3:87","nodeType":"YulIdentifier","src":"390:3:87"},"nativeSrc":"390:23:87","nodeType":"YulFunctionCall","src":"390:23:87"},{"kind":"number","nativeSrc":"415:2:87","nodeType":"YulLiteral","src":"415:2:87","type":"","value":"96"}],"functionName":{"name":"slt","nativeSrc":"386:3:87","nodeType":"YulIdentifier","src":"386:3:87"},"nativeSrc":"386:32:87","nodeType":"YulFunctionCall","src":"386:32:87"},"nativeSrc":"383:52:87","nodeType":"YulIf","src":"383:52:87"},{"nativeSrc":"444:66:87","nodeType":"YulAssignment","src":"444:66:87","value":{"arguments":[{"name":"headStart","nativeSrc":"500:9:87","nodeType":"YulIdentifier","src":"500:9:87"}],"functionName":{"name":"abi_decode_contract_IERC20Metadata_fromMemory","nativeSrc":"454:45:87","nodeType":"YulIdentifier","src":"454:45:87"},"nativeSrc":"454:56:87","nodeType":"YulFunctionCall","src":"454:56:87"},"variableNames":[{"name":"value0","nativeSrc":"444:6:87","nodeType":"YulIdentifier","src":"444:6:87"}]},{"nativeSrc":"519:75:87","nodeType":"YulAssignment","src":"519:75:87","value":{"arguments":[{"arguments":[{"name":"headStart","nativeSrc":"579:9:87","nodeType":"YulIdentifier","src":"579:9:87"},{"kind":"number","nativeSrc":"590:2:87","nodeType":"YulLiteral","src":"590:2:87","type":"","value":"32"}],"functionName":{"name":"add","nativeSrc":"575:3:87","nodeType":"YulIdentifier","src":"575:3:87"},"nativeSrc":"575:18:87","nodeType":"YulFunctionCall","src":"575:18:87"}],"functionName":{"name":"abi_decode_contract_IERC20Metadata_fromMemory","nativeSrc":"529:45:87","nodeType":"YulIdentifier","src":"529:45:87"},"nativeSrc":"529:65:87","nodeType":"YulFunctionCall","src":"529:65:87"},"variableNames":[{"name":"value1","nativeSrc":"519:6:87","nodeType":"YulIdentifier","src":"519:6:87"}]},{"nativeSrc":"603:35:87","nodeType":"YulAssignment","src":"603:35:87","value":{"arguments":[{"arguments":[{"name":"headStart","nativeSrc":"623:9:87","nodeType":"YulIdentifier","src":"623:9:87"},{"kind":"number","nativeSrc":"634:2:87","nodeType":"YulLiteral","src":"634:2:87","type":"","value":"64"}],"functionName":{"name":"add","nativeSrc":"619:3:87","nodeType":"YulIdentifier","src":"619:3:87"},"nativeSrc":"619:18:87","nodeType":"YulFunctionCall","src":"619:18:87"}],"functionName":{"name":"mload","nativeSrc":"613:5:87","nodeType":"YulIdentifier","src":"613:5:87"},"nativeSrc":"613:25:87","nodeType":"YulFunctionCall","src":"613:25:87"},"variableNames":[{"name":"value2","nativeSrc":"603:6:87","nodeType":"YulIdentifier","src":"603:6:87"}]}]},"name":"abi_decode_tuple_t_contract$_IERC20Metadata_$9411t_contract$_IERC20Metadata_$9411t_uint256_fromMemory","nativeSrc":"212:432:87","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nativeSrc":"323:9:87","nodeType":"YulTypedName","src":"323:9:87","type":""},{"name":"dataEnd","nativeSrc":"334:7:87","nodeType":"YulTypedName","src":"334:7:87","type":""}],"returnVariables":[{"name":"value0","nativeSrc":"346:6:87","nodeType":"YulTypedName","src":"346:6:87","type":""},{"name":"value1","nativeSrc":"354:6:87","nodeType":"YulTypedName","src":"354:6:87","type":""},{"name":"value2","nativeSrc":"362:6:87","nodeType":"YulTypedName","src":"362:6:87","type":""}],"src":"212:432:87"},{"body":{"nativeSrc":"728:194:87","nodeType":"YulBlock","src":"728:194:87","statements":[{"body":{"nativeSrc":"774:16:87","nodeType":"YulBlock","src":"774:16:87","statements":[{"expression":{"arguments":[{"kind":"number","nativeSrc":"783:1:87","nodeType":"YulLiteral","src":"783:1:87","type":"","value":"0"},{"kind":"number","nativeSrc":"786:1:87","nodeType":"YulLiteral","src":"786:1:87","type":"","value":"0"}],"functionName":{"name":"revert","nativeSrc":"776:6:87","nodeType":"YulIdentifier","src":"776:6:87"},"nativeSrc":"776:12:87","nodeType":"YulFunctionCall","src":"776:12:87"},"nativeSrc":"776:12:87","nodeType":"YulExpressionStatement","src":"776:12:87"}]},"condition":{"arguments":[{"arguments":[{"name":"dataEnd","nativeSrc":"749:7:87","nodeType":"YulIdentifier","src":"749:7:87"},{"name":"headStart","nativeSrc":"758:9:87","nodeType":"YulIdentifier","src":"758:9:87"}],"functionName":{"name":"sub","nativeSrc":"745:3:87","nodeType":"YulIdentifier","src":"745:3:87"},"nativeSrc":"745:23:87","nodeType":"YulFunctionCall","src":"745:23:87"},{"kind":"number","nativeSrc":"770:2:87","nodeType":"YulLiteral","src":"770:2:87","type":"","value":"32"}],"functionName":{"name":"slt","nativeSrc":"741:3:87","nodeType":"YulIdentifier","src":"741:3:87"},"nativeSrc":"741:32:87","nodeType":"YulFunctionCall","src":"741:32:87"},"nativeSrc":"738:52:87","nodeType":"YulIf","src":"738:52:87"},{"nativeSrc":"799:29:87","nodeType":"YulVariableDeclaration","src":"799:29:87","value":{"arguments":[{"name":"headStart","nativeSrc":"818:9:87","nodeType":"YulIdentifier","src":"818:9:87"}],"functionName":{"name":"mload","nativeSrc":"812:5:87","nodeType":"YulIdentifier","src":"812:5:87"},"nativeSrc":"812:16:87","nodeType":"YulFunctionCall","src":"812:16:87"},"variables":[{"name":"value","nativeSrc":"803:5:87","nodeType":"YulTypedName","src":"803:5:87","type":""}]},{"body":{"nativeSrc":"876:16:87","nodeType":"YulBlock","src":"876:16:87","statements":[{"expression":{"arguments":[{"kind":"number","nativeSrc":"885:1:87","nodeType":"YulLiteral","src":"885:1:87","type":"","value":"0"},{"kind":"number","nativeSrc":"888:1:87","nodeType":"YulLiteral","src":"888:1:87","type":"","value":"0"}],"functionName":{"name":"revert","nativeSrc":"878:6:87","nodeType":"YulIdentifier","src":"878:6:87"},"nativeSrc":"878:12:87","nodeType":"YulFunctionCall","src":"878:12:87"},"nativeSrc":"878:12:87","nodeType":"YulExpressionStatement","src":"878:12:87"}]},"condition":{"arguments":[{"arguments":[{"name":"value","nativeSrc":"850:5:87","nodeType":"YulIdentifier","src":"850:5:87"},{"arguments":[{"name":"value","nativeSrc":"861:5:87","nodeType":"YulIdentifier","src":"861:5:87"},{"kind":"number","nativeSrc":"868:4:87","nodeType":"YulLiteral","src":"868:4:87","type":"","value":"0xff"}],"functionName":{"name":"and","nativeSrc":"857:3:87","nodeType":"YulIdentifier","src":"857:3:87"},"nativeSrc":"857:16:87","nodeType":"YulFunctionCall","src":"857:16:87"}],"functionName":{"name":"eq","nativeSrc":"847:2:87","nodeType":"YulIdentifier","src":"847:2:87"},"nativeSrc":"847:27:87","nodeType":"YulFunctionCall","src":"847:27:87"}],"functionName":{"name":"iszero","nativeSrc":"840:6:87","nodeType":"YulIdentifier","src":"840:6:87"},"nativeSrc":"840:35:87","nodeType":"YulFunctionCall","src":"840:35:87"},"nativeSrc":"837:55:87","nodeType":"YulIf","src":"837:55:87"},{"nativeSrc":"901:15:87","nodeType":"YulAssignment","src":"901:15:87","value":{"name":"value","nativeSrc":"911:5:87","nodeType":"YulIdentifier","src":"911:5:87"},"variableNames":[{"name":"value0","nativeSrc":"901:6:87","nodeType":"YulIdentifier","src":"901:6:87"}]}]},"name":"abi_decode_tuple_t_uint8_fromMemory","nativeSrc":"649:273:87","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nativeSrc":"694:9:87","nodeType":"YulTypedName","src":"694:9:87","type":""},{"name":"dataEnd","nativeSrc":"705:7:87","nodeType":"YulTypedName","src":"705:7:87","type":""}],"returnVariables":[{"name":"value0","nativeSrc":"717:6:87","nodeType":"YulTypedName","src":"717:6:87","type":""}],"src":"649:273:87"},{"body":{"nativeSrc":"1154:252:87","nodeType":"YulBlock","src":"1154:252:87","statements":[{"expression":{"arguments":[{"name":"headStart","nativeSrc":"1171:9:87","nodeType":"YulIdentifier","src":"1171:9:87"},{"kind":"number","nativeSrc":"1182:2:87","nodeType":"YulLiteral","src":"1182:2:87","type":"","value":"64"}],"functionName":{"name":"mstore","nativeSrc":"1164:6:87","nodeType":"YulIdentifier","src":"1164:6:87"},"nativeSrc":"1164:21:87","nodeType":"YulFunctionCall","src":"1164:21:87"},"nativeSrc":"1164:21:87","nodeType":"YulExpressionStatement","src":"1164:21:87"},{"expression":{"arguments":[{"arguments":[{"name":"headStart","nativeSrc":"1205:9:87","nodeType":"YulIdentifier","src":"1205:9:87"},{"kind":"number","nativeSrc":"1216:2:87","nodeType":"YulLiteral","src":"1216:2:87","type":"","value":"64"}],"functionName":{"name":"add","nativeSrc":"1201:3:87","nodeType":"YulIdentifier","src":"1201:3:87"},"nativeSrc":"1201:18:87","nodeType":"YulFunctionCall","src":"1201:18:87"},{"kind":"number","nativeSrc":"1221:2:87","nodeType":"YulLiteral","src":"1221:2:87","type":"","value":"30"}],"functionName":{"name":"mstore","nativeSrc":"1194:6:87","nodeType":"YulIdentifier","src":"1194:6:87"},"nativeSrc":"1194:30:87","nodeType":"YulFunctionCall","src":"1194:30:87"},"nativeSrc":"1194:30:87","nodeType":"YulExpressionStatement","src":"1194:30:87"},{"expression":{"arguments":[{"arguments":[{"name":"headStart","nativeSrc":"1244:9:87","nodeType":"YulIdentifier","src":"1244:9:87"},{"kind":"number","nativeSrc":"1255:2:87","nodeType":"YulLiteral","src":"1255:2:87","type":"","value":"96"}],"functionName":{"name":"add","nativeSrc":"1240:3:87","nodeType":"YulIdentifier","src":"1240:3:87"},"nativeSrc":"1240:18:87","nodeType":"YulFunctionCall","src":"1240:18:87"},{"hexValue":"636f2e656e7375726f2e496e766573745374726174656779436c69656e74","kind":"string","nativeSrc":"1260:32:87","nodeType":"YulLiteral","src":"1260:32:87","type":"","value":"co.ensuro.InvestStrategyClient"}],"functionName":{"name":"mstore","nativeSrc":"1233:6:87","nodeType":"YulIdentifier","src":"1233:6:87"},"nativeSrc":"1233:60:87","nodeType":"YulFunctionCall","src":"1233:60:87"},"nativeSrc":"1233:60:87","nodeType":"YulExpressionStatement","src":"1233:60:87"},{"nativeSrc":"1302:27:87","nodeType":"YulAssignment","src":"1302:27:87","value":{"arguments":[{"name":"headStart","nativeSrc":"1314:9:87","nodeType":"YulIdentifier","src":"1314:9:87"},{"kind":"number","nativeSrc":"1325:3:87","nodeType":"YulLiteral","src":"1325:3:87","type":"","value":"128"}],"functionName":{"name":"add","nativeSrc":"1310:3:87","nodeType":"YulIdentifier","src":"1310:3:87"},"nativeSrc":"1310:19:87","nodeType":"YulFunctionCall","src":"1310:19:87"},"variableNames":[{"name":"tail","nativeSrc":"1302:4:87","nodeType":"YulIdentifier","src":"1302:4:87"}]},{"expression":{"arguments":[{"arguments":[{"name":"headStart","nativeSrc":"1349:9:87","nodeType":"YulIdentifier","src":"1349:9:87"},{"kind":"number","nativeSrc":"1360:4:87","nodeType":"YulLiteral","src":"1360:4:87","type":"","value":"0x20"}],"functionName":{"name":"add","nativeSrc":"1345:3:87","nodeType":"YulIdentifier","src":"1345:3:87"},"nativeSrc":"1345:20:87","nodeType":"YulFunctionCall","src":"1345:20:87"},{"arguments":[{"name":"value0","nativeSrc":"1371:6:87","nodeType":"YulIdentifier","src":"1371:6:87"},{"arguments":[{"arguments":[{"kind":"number","nativeSrc":"1387:3:87","nodeType":"YulLiteral","src":"1387:3:87","type":"","value":"160"},{"kind":"number","nativeSrc":"1392:1:87","nodeType":"YulLiteral","src":"1392:1:87","type":"","value":"1"}],"functionName":{"name":"shl","nativeSrc":"1383:3:87","nodeType":"YulIdentifier","src":"1383:3:87"},"nativeSrc":"1383:11:87","nodeType":"YulFunctionCall","src":"1383:11:87"},{"kind":"number","nativeSrc":"1396:1:87","nodeType":"YulLiteral","src":"1396:1:87","type":"","value":"1"}],"functionName":{"name":"sub","nativeSrc":"1379:3:87","nodeType":"YulIdentifier","src":"1379:3:87"},"nativeSrc":"1379:19:87","nodeType":"YulFunctionCall","src":"1379:19:87"}],"functionName":{"name":"and","nativeSrc":"1367:3:87","nodeType":"YulIdentifier","src":"1367:3:87"},"nativeSrc":"1367:32:87","nodeType":"YulFunctionCall","src":"1367:32:87"}],"functionName":{"name":"mstore","nativeSrc":"1338:6:87","nodeType":"YulIdentifier","src":"1338:6:87"},"nativeSrc":"1338:62:87","nodeType":"YulFunctionCall","src":"1338:62:87"},"nativeSrc":"1338:62:87","nodeType":"YulExpressionStatement","src":"1338:62:87"}]},"name":"abi_encode_tuple_t_stringliteral_4fed0cd3539a36e00a34a6c026c2615824c9ad47da5ef65e8372c7e721c05d79_t_contract$_IInvestStrategy_$20725__to_t_string_memory_ptr_t_address__fromStack_reversed","nativeSrc":"927:479:87","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nativeSrc":"1123:9:87","nodeType":"YulTypedName","src":"1123:9:87","type":""},{"name":"value0","nativeSrc":"1134:6:87","nodeType":"YulTypedName","src":"1134:6:87","type":""}],"returnVariables":[{"name":"tail","nativeSrc":"1145:4:87","nodeType":"YulTypedName","src":"1145:4:87","type":""}],"src":"927:479:87"}]},"contents":"{\n    { }\n    function abi_decode_contract_IERC20Metadata_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_contract$_IERC20Metadata_$9411t_contract$_IERC20Metadata_$9411t_uint256_fromMemory(headStart, dataEnd) -> value0, value1, value2\n    {\n        if slt(sub(dataEnd, headStart), 96) { revert(0, 0) }\n        value0 := abi_decode_contract_IERC20Metadata_fromMemory(headStart)\n        value1 := abi_decode_contract_IERC20Metadata_fromMemory(add(headStart, 32))\n        value2 := mload(add(headStart, 64))\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_stringliteral_4fed0cd3539a36e00a34a6c026c2615824c9ad47da5ef65e8372c7e721c05d79_t_contract$_IInvestStrategy_$20725__to_t_string_memory_ptr_t_address__fromStack_reversed(headStart, value0) -> tail\n    {\n        mstore(headStart, 64)\n        mstore(add(headStart, 64), 30)\n        mstore(add(headStart, 96), \"co.ensuro.InvestStrategyClient\")\n        tail := add(headStart, 128)\n        mstore(add(headStart, 0x20), and(value0, sub(shl(160, 1), 1)))\n    }\n}","id":87,"language":"Yul","name":"#utility.yul"}],"linkReferences":{"@ensuro/swaplibrary/contracts/SwapLibrary.sol":{"SwapLibrary":[{"length":20,"start":1850},{"length":20,"start":2146},{"length":20,"start":2716},{"length":20,"start":3313}]}},"object":"3060808181526040610140818152601e610180527f636f2e656e7375726f2e496e766573745374726174656779436c69656e7400006101a052610160939093526101208290526101c09052902060a05234801561005a575f5ffd5b50604051611825380380611825833981016040819052610079916101ee565b82826012826001600160a01b031663313ce5676040518163ffffffff1660e01b8152600401602060405180830381865afa1580156100b9573d5f5f3e3d5ffd5b505050506040513d601f19601f820116820180604052508101906100dd9190610227565b60ff1611156100ff57604051636448d6e960e11b815260040160405180910390fd5b6012816001600160a01b031663313ce5676040518163ffffffff1660e01b8152600401602060405180830381865afa15801561013d573d5f5f3e3d5ffd5b505050506040513d601f19601f820116820180604052508101906101619190610227565b60ff16111561018357604051636448d6e960e11b815260040160405180910390fd5b806001600160a01b0316826001600160a01b0316036101b557604051636448d6e960e11b815260040160405180910390fd5b6001600160a01b0391821660c0521660e052610100525061024e9050565b80516001600160a01b03811681146101e9575f5ffd5b919050565b5f5f5f60608486031215610200575f5ffd5b610209846101d3565b9250610217602085016101d3565b9150604084015190509250925092565b5f60208284031215610237575f5ffd5b815160ff81168114610247575f5ffd5b9392505050565b60805160a05160c05160e0516101005161150f6103165f395f818160fa015281816107ed01528181610bbf0152610c4801525f81816102400152818161039a015281816104420152818161056e015281816107c9015281816108830152610c1801525f81816101bc0152818161046401528181610590015281816107a70152610be901525f81816101890152818161091c01528181610aab0152610af101525f81816102810152818161031d01528181610631015281816106ad015261072a015261150f5ff3fe608060405234801561000f575f5ffd5b50600436106100cb575f3560e01c80635b9a4c3511610088578063b6b55f2511610063578063b6b55f2514610209578063ce96cb771461021c578063de846ae41461022f578063f3e0ffbf14610262575f5ffd5b80635b9a4c35146101845780639c4667a2146101ab5780639cd47128146101f6575f5ffd5b80630981b1c2146100cf5780631418983b146100f85780632e1a7d4d14610128578063402d267d1461013d57806342b054f0146101515780635a11745614610171575b5f5ffd5b6100e26100dd366004610ee8565b610275565b6040516100ef9190610f63565b60405180910390f35b7f00000000000000000000000000000000000000000000000000000000000000005b6040519081526020016100ef565b61013b610136366004610f75565b610313565b005b61011a61014b366004610f8c565b505f1990565b61016461015f366004610f8c565b610603565b6040516100ef9190611014565b61013b61017f366004611026565b610627565b61011a7f000000000000000000000000000000000000000000000000000000000000000081565b6101de6101b9366004610f8c565b507f000000000000000000000000000000000000000000000000000000000000000090565b6040516001600160a01b0390911681526020016100ef565b61013b610204366004611045565b6106a3565b61013b610217366004610f75565b610720565b61011a61022a366004610f8c565b610858565b6101de61023d366004610f8c565b507f000000000000000000000000000000000000000000000000000000000000000090565b61011a610270366004610f8c565b61085e565b60606001600160a01b037f00000000000000000000000000000000000000000000000000000000000000001630036102c057604051632abf118b60e21b815260040160405180910390fd5b5f60ff841680156102d3576102d3610fb2565b90505f8180156102e5576102e5610fb2565b036100cb576102fc6102f6306108f2565b846109b4565b505060408051602081019091525f81525b92915050565b6001600160a01b037f000000000000000000000000000000000000000000000000000000000000000016300361035c57604051632abf118b60e21b815260040160405180910390fd5b8015610600575f61036b610ad4565b90505f610376610baf565b6040516370a0823160e01b8152306004820152909150610409906001600160a01b037f000000000000000000000000000000000000000000000000000000000000000016906370a0823190602401602060405180830381865afa1580156103df573d5f5f3e3d5ffd5b505050506040513d601f19601f820116820180604052508101906104039190611077565b30610be3565b831061053d576040516370a0823160e01b815230600482015273__$acbb9ece542dcf2065f41aa3c8cca5827e$__9063775669159084907f0000000000000000000000000000000000000000000000000000000000000000907f0000000000000000000000000000000000000000000000000000000000000000906001600160a01b038316906370a0823190602401602060405180830381865afa1580156104b3573d5f5f3e3d5ffd5b505050506040513d601f19601f820116820180604052508101906104d79190611077565b866040518663ffffffff1660e01b81526004016104f895949392919061108e565b602060405180830381865af4158015610513573d5f5f3e3d5ffd5b505050506040513d601f19601f820116820180604052508101906105379190611077565b506105fd565b60405163581e517d60e01b815273__$acbb9ece542dcf2065f41aa3c8cca5827e$__9063581e517d906105bc9085907f0000000000000000000000000000000000000000000000000000000000000000907f0000000000000000000000000000000000000000000000000000000000000000908990889060040161108e565b602060405180830381865af41580156105d7573d5f5f3e3d5ffd5b505050506040513d601f19601f820116820180604052508101906105fb9190611077565b505b50505b50565b60408051606080820183525f80835260208301529181019190915261030d826108f2565b6001600160a01b037f000000000000000000000000000000000000000000000000000000000000000016300361067057604051632abf118b60e21b815260040160405180910390fd5b8015801561068557506106823061085e565b15155b15610600576040516342a176d160e11b815260040160405180910390fd5b6001600160a01b037f00000000000000000000000000000000000000000000000000000000000000001630036106ec57604051632abf118b60e21b815260040160405180910390fd5b604080516060810190915261060090805f81526020015f815260200160405180602001604052805f815250815250826109b4565b6001600160a01b037f000000000000000000000000000000000000000000000000000000000000000016300361076957604051632abf118b60e21b815260040160405180910390fd5b801561060057610777610ad4565b604051637756691560e01b815273__$acbb9ece542dcf2065f41aa3c8cca5827e$__9163775669159161081591907f0000000000000000000000000000000000000000000000000000000000000000907f00000000000000000000000000000000000000000000000000000000000000009087907f00000000000000000000000000000000000000000000000000000000000000009060040161108e565b602060405180830381865af4158015610830573d5f5f3e3d5ffd5b505050506040513d601f19601f820116820180604052508101906108549190611077565b5050565b5f61030d825b6040516370a0823160e01b81526001600160a01b0382811660048301525f9161030d917f000000000000000000000000000000000000000000000000000000000000000016906370a0823190602401602060405180830381865afa1580156108c8573d5f5f3e3d5ffd5b505050506040513d601f19601f820116820180604052508101906108ec9190611077565b83610be3565b60408051606080820183525f8083526020830152918101919091526040516347e5753360e01b81527f000000000000000000000000000000000000000000000000000000000000000060048201525f906001600160a01b038416906347e57533906024015f60405180830381865afa158015610970573d5f5f3e3d5ffd5b505050506040513d5f823e601f3d908101601f19168201604052610997919081019061111a565b9050808060200190518101906109ad919061114c565b9392505050565b5f818060200190518101906109c9919061114c565b604051632cbf28cb60e21b815290915073__$acbb9ece542dcf2065f41aa3c8cca5827e$__9063b2fca32c90610a03908490600401611014565b5f6040518083038186803b158015610a19575f5ffd5b505af4158015610a2b573d5f5f3e3d5ffd5b50505050815181604051602001610a429190611014565b6040516020818303038152906040525114610a70576040516350701b6160e01b815260040160405180910390fd5b7fca7f7aa563866a1d31c74deba224724d1da9c35cbb6f783f2ccf0182f91e34f88382604051610aa19291906111d8565b60405180910390a17f00000000000000000000000000000000000000000000000000000000000000006105fb8382611288565b60408051606080820183525f8083526020830152918101919091527f00000000000000000000000000000000000000000000000000000000000000008054610b1b90611205565b80601f0160208091040260200160405190810160405280929190818152602001828054610b4790611205565b8015610b925780601f10610b6957610100808354040283529160200191610b92565b820191905f5260205f20905b815481529060010190602001808311610b7557829003601f168201915b5050505050806020019051810190610baa919061114c565b905090565b5f610baa670de0b6b3a7640000807f0000000000000000000000000000000000000000000000000000000000000000610c9f565b5f610c0d7f0000000000000000000000000000000000000000000000000000000000000000610d4f565b610c95610c76610c3c7f0000000000000000000000000000000000000000000000000000000000000000610d4f565b610c469087611357565b7f00000000000000000000000000000000000000000000000000000000000000005b670de0b6b3a7640000610c9f565b610c7f856108f2565b60200151610c6890670de0b6b3a764000061136e565b6109ad9190611395565b5f5f5f610cac8686610dc6565b91509150815f03610cd057838181610cc657610cc6611381565b04925050506109ad565b818411610ce757610ce76003851502601118610de2565b5f848688095f868103871696879004966002600389028118808a02820302808a02820302808a02820302808a02820302808a02820302808a02909103029181900381900460010185841190960395909502919093039390930492909217029150509392505050565b5f816001600160a01b031663313ce5676040518163ffffffff1660e01b8152600401602060405180830381865afa158015610d8c573d5f5f3e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610db091906113b4565b610dbb9060126113cf565b61030d90600a6114cb565b5f805f1983850993909202808410938190039390930393915050565b634e487b715f52806020526024601cfd5b60ff81168114610600575f5ffd5b634e487b7160e01b5f52604160045260245ffd5b6040516060810167ffffffffffffffff81118282101715610e3857610e38610e01565b60405290565b604051601f8201601f1916810167ffffffffffffffff81118282101715610e6757610e67610e01565b604052919050565b5f67ffffffffffffffff821115610e8857610e88610e01565b50601f01601f191660200190565b5f82601f830112610ea5575f5ffd5b8135610eb8610eb382610e6f565b610e3e565b818152846020838601011115610ecc575f5ffd5b816020850160208301375f918101602001919091529392505050565b5f5f60408385031215610ef9575f5ffd5b8235610f0481610df3565b9150602083013567ffffffffffffffff811115610f1f575f5ffd5b610f2b85828601610e96565b9150509250929050565b5f81518084528060208401602086015e5f602082860101526020601f19601f83011685010191505092915050565b602081525f6109ad6020830184610f35565b5f60208284031215610f85575f5ffd5b5035919050565b5f60208284031215610f9c575f5ffd5b81356001600160a01b03811681146109ad575f5ffd5b634e487b7160e01b5f52602160045260245ffd5b5f815160038110610fe557634e487b7160e01b5f52602160045260245ffd5b808452506020820151602084015260408201516060604085015261100c6060850182610f35565b949350505050565b602081525f6109ad6020830184610fc6565b5f60208284031215611036575f5ffd5b813580151581146109ad575f5ffd5b5f60208284031215611055575f5ffd5b813567ffffffffffffffff81111561106b575f5ffd5b61100c84828501610e96565b5f60208284031215611087575f5ffd5b5051919050565b60a081525f6110a060a0830188610fc6565b6001600160a01b039687166020840152949095166040820152606081019290925260809091015292915050565b5f82601f8301126110dc575f5ffd5b81516110ea610eb382610e6f565b8181528460208386010111156110fe575f5ffd5b8160208501602083015e5f918101602001919091529392505050565b5f6020828403121561112a575f5ffd5b815167ffffffffffffffff811115611140575f5ffd5b61100c848285016110cd565b5f6020828403121561115c575f5ffd5b815167ffffffffffffffff811115611172575f5ffd5b820160608185031215611183575f5ffd5b61118b610e15565b815160038110611199575f5ffd5b815260208281015190820152604082015167ffffffffffffffff8111156111be575f5ffd5b6111ca868285016110cd565b604083015250949350505050565b604081525f6111ea6040830185610fc6565b82810360208401526111fc8185610fc6565b95945050505050565b600181811c9082168061121957607f821691505b60208210810361123757634e487b7160e01b5f52602260045260245ffd5b50919050565b601f8211156105fd57805f5260205f20601f840160051c810160208510156112625750805b601f840160051c820191505b81811015611281575f815560010161126e565b5050505050565b815167ffffffffffffffff8111156112a2576112a2610e01565b6112b6816112b08454611205565b8461123d565b6020601f8211600181146112e8575f83156112d15750848201515b5f19600385901b1c1916600184901b178455611281565b5f84815260208120601f198516915b8281101561131757878501518255602094850194600190920191016112f7565b508482101561133457868401515f19600387901b60f8161c191681555b50505050600190811b01905550565b634e487b7160e01b5f52601160045260245ffd5b808202811582820484141761030d5761030d611343565b8181038181111561030d5761030d611343565b634e487b7160e01b5f52601260045260245ffd5b5f826113af57634e487b7160e01b5f52601260045260245ffd5b500490565b5f602082840312156113c4575f5ffd5b81516109ad81610df3565b60ff828116828216039081111561030d5761030d611343565b6001815b60018411156114235780850481111561140757611407611343565b600184161561141557908102905b60019390931c9280026113ec565b935093915050565b5f826114395750600161030d565b8161144557505f61030d565b816001811461145b576002811461146557611481565b600191505061030d565b60ff84111561147657611476611343565b50506001821b61030d565b5060208310610133831016604e8410600b84101617156114a4575081810a61030d565b6114b05f1984846113e8565b805f19048211156114c3576114c3611343565b029392505050565b5f6109ad60ff84168361142b56fea2646970667358221220a0a23d761b87053be335ea25d765fe4df78c1379ebb0ef6ed139360180fadd2d64736f6c634300081e0033","opcodes":"ADDRESS PUSH1 0x80 DUP2 DUP2 MSTORE PUSH1 0x40 PUSH2 0x140 DUP2 DUP2 MSTORE PUSH1 0x1E PUSH2 0x180 MSTORE PUSH32 0x636F2E656E7375726F2E496E766573745374726174656779436C69656E740000 PUSH2 0x1A0 MSTORE PUSH2 0x160 SWAP4 SWAP1 SWAP4 MSTORE PUSH2 0x120 DUP3 SWAP1 MSTORE PUSH2 0x1C0 SWAP1 MSTORE SWAP1 KECCAK256 PUSH1 0xA0 MSTORE CALLVALUE DUP1 ISZERO PUSH2 0x5A JUMPI PUSH0 PUSH0 REVERT JUMPDEST POP PUSH1 0x40 MLOAD PUSH2 0x1825 CODESIZE SUB DUP1 PUSH2 0x1825 DUP4 CODECOPY DUP2 ADD PUSH1 0x40 DUP2 SWAP1 MSTORE PUSH2 0x79 SWAP2 PUSH2 0x1EE JUMP JUMPDEST DUP3 DUP3 PUSH1 0x12 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 GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0xB9 JUMPI RETURNDATASIZE PUSH0 PUSH0 RETURNDATACOPY RETURNDATASIZE PUSH0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP3 ADD DUP1 PUSH1 0x40 MSTORE POP DUP2 ADD SWAP1 PUSH2 0xDD SWAP2 SWAP1 PUSH2 0x227 JUMP JUMPDEST PUSH1 0xFF AND GT ISZERO PUSH2 0xFF JUMPI PUSH1 0x40 MLOAD PUSH4 0x6448D6E9 PUSH1 0xE1 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH1 0x12 DUP2 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 GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x13D JUMPI RETURNDATASIZE PUSH0 PUSH0 RETURNDATACOPY RETURNDATASIZE PUSH0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP3 ADD DUP1 PUSH1 0x40 MSTORE POP DUP2 ADD SWAP1 PUSH2 0x161 SWAP2 SWAP1 PUSH2 0x227 JUMP JUMPDEST PUSH1 0xFF AND GT ISZERO PUSH2 0x183 JUMPI PUSH1 0x40 MLOAD PUSH4 0x6448D6E9 PUSH1 0xE1 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST DUP1 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP3 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND SUB PUSH2 0x1B5 JUMPI PUSH1 0x40 MLOAD PUSH4 0x6448D6E9 PUSH1 0xE1 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP2 DUP3 AND PUSH1 0xC0 MSTORE AND PUSH1 0xE0 MSTORE PUSH2 0x100 MSTORE POP PUSH2 0x24E SWAP1 POP JUMP JUMPDEST DUP1 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 AND DUP2 EQ PUSH2 0x1E9 JUMPI PUSH0 PUSH0 REVERT JUMPDEST SWAP2 SWAP1 POP JUMP JUMPDEST PUSH0 PUSH0 PUSH0 PUSH1 0x60 DUP5 DUP7 SUB SLT ISZERO PUSH2 0x200 JUMPI PUSH0 PUSH0 REVERT JUMPDEST PUSH2 0x209 DUP5 PUSH2 0x1D3 JUMP JUMPDEST SWAP3 POP PUSH2 0x217 PUSH1 0x20 DUP6 ADD PUSH2 0x1D3 JUMP JUMPDEST SWAP2 POP PUSH1 0x40 DUP5 ADD MLOAD SWAP1 POP SWAP3 POP SWAP3 POP SWAP3 JUMP JUMPDEST PUSH0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x237 JUMPI PUSH0 PUSH0 REVERT JUMPDEST DUP2 MLOAD PUSH1 0xFF DUP2 AND DUP2 EQ PUSH2 0x247 JUMPI PUSH0 PUSH0 REVERT JUMPDEST SWAP4 SWAP3 POP POP POP JUMP JUMPDEST PUSH1 0x80 MLOAD PUSH1 0xA0 MLOAD PUSH1 0xC0 MLOAD PUSH1 0xE0 MLOAD PUSH2 0x100 MLOAD PUSH2 0x150F PUSH2 0x316 PUSH0 CODECOPY PUSH0 DUP2 DUP2 PUSH1 0xFA ADD MSTORE DUP2 DUP2 PUSH2 0x7ED ADD MSTORE DUP2 DUP2 PUSH2 0xBBF ADD MSTORE PUSH2 0xC48 ADD MSTORE PUSH0 DUP2 DUP2 PUSH2 0x240 ADD MSTORE DUP2 DUP2 PUSH2 0x39A ADD MSTORE DUP2 DUP2 PUSH2 0x442 ADD MSTORE DUP2 DUP2 PUSH2 0x56E ADD MSTORE DUP2 DUP2 PUSH2 0x7C9 ADD MSTORE DUP2 DUP2 PUSH2 0x883 ADD MSTORE PUSH2 0xC18 ADD MSTORE PUSH0 DUP2 DUP2 PUSH2 0x1BC ADD MSTORE DUP2 DUP2 PUSH2 0x464 ADD MSTORE DUP2 DUP2 PUSH2 0x590 ADD MSTORE DUP2 DUP2 PUSH2 0x7A7 ADD MSTORE PUSH2 0xBE9 ADD MSTORE PUSH0 DUP2 DUP2 PUSH2 0x189 ADD MSTORE DUP2 DUP2 PUSH2 0x91C ADD MSTORE DUP2 DUP2 PUSH2 0xAAB ADD MSTORE PUSH2 0xAF1 ADD MSTORE PUSH0 DUP2 DUP2 PUSH2 0x281 ADD MSTORE DUP2 DUP2 PUSH2 0x31D ADD MSTORE DUP2 DUP2 PUSH2 0x631 ADD MSTORE DUP2 DUP2 PUSH2 0x6AD ADD MSTORE PUSH2 0x72A ADD MSTORE PUSH2 0x150F PUSH0 RETURN INVALID PUSH1 0x80 PUSH1 0x40 MSTORE CALLVALUE DUP1 ISZERO PUSH2 0xF JUMPI PUSH0 PUSH0 REVERT JUMPDEST POP PUSH1 0x4 CALLDATASIZE LT PUSH2 0xCB JUMPI PUSH0 CALLDATALOAD PUSH1 0xE0 SHR DUP1 PUSH4 0x5B9A4C35 GT PUSH2 0x88 JUMPI DUP1 PUSH4 0xB6B55F25 GT PUSH2 0x63 JUMPI DUP1 PUSH4 0xB6B55F25 EQ PUSH2 0x209 JUMPI DUP1 PUSH4 0xCE96CB77 EQ PUSH2 0x21C JUMPI DUP1 PUSH4 0xDE846AE4 EQ PUSH2 0x22F JUMPI DUP1 PUSH4 0xF3E0FFBF EQ PUSH2 0x262 JUMPI PUSH0 PUSH0 REVERT JUMPDEST DUP1 PUSH4 0x5B9A4C35 EQ PUSH2 0x184 JUMPI DUP1 PUSH4 0x9C4667A2 EQ PUSH2 0x1AB JUMPI DUP1 PUSH4 0x9CD47128 EQ PUSH2 0x1F6 JUMPI PUSH0 PUSH0 REVERT JUMPDEST DUP1 PUSH4 0x981B1C2 EQ PUSH2 0xCF JUMPI DUP1 PUSH4 0x1418983B EQ PUSH2 0xF8 JUMPI DUP1 PUSH4 0x2E1A7D4D EQ PUSH2 0x128 JUMPI DUP1 PUSH4 0x402D267D EQ PUSH2 0x13D JUMPI DUP1 PUSH4 0x42B054F0 EQ PUSH2 0x151 JUMPI DUP1 PUSH4 0x5A117456 EQ PUSH2 0x171 JUMPI JUMPDEST PUSH0 PUSH0 REVERT JUMPDEST PUSH2 0xE2 PUSH2 0xDD CALLDATASIZE PUSH1 0x4 PUSH2 0xEE8 JUMP JUMPDEST PUSH2 0x275 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0xEF SWAP2 SWAP1 PUSH2 0xF63 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST PUSH32 0x0 JUMPDEST PUSH1 0x40 MLOAD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH2 0xEF JUMP JUMPDEST PUSH2 0x13B PUSH2 0x136 CALLDATASIZE PUSH1 0x4 PUSH2 0xF75 JUMP JUMPDEST PUSH2 0x313 JUMP JUMPDEST STOP JUMPDEST PUSH2 0x11A PUSH2 0x14B CALLDATASIZE PUSH1 0x4 PUSH2 0xF8C JUMP JUMPDEST POP PUSH0 NOT SWAP1 JUMP JUMPDEST PUSH2 0x164 PUSH2 0x15F CALLDATASIZE PUSH1 0x4 PUSH2 0xF8C JUMP JUMPDEST PUSH2 0x603 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0xEF SWAP2 SWAP1 PUSH2 0x1014 JUMP JUMPDEST PUSH2 0x13B PUSH2 0x17F CALLDATASIZE PUSH1 0x4 PUSH2 0x1026 JUMP JUMPDEST PUSH2 0x627 JUMP JUMPDEST PUSH2 0x11A PUSH32 0x0 DUP2 JUMP JUMPDEST PUSH2 0x1DE PUSH2 0x1B9 CALLDATASIZE PUSH1 0x4 PUSH2 0xF8C JUMP JUMPDEST POP PUSH32 0x0 SWAP1 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP1 SWAP2 AND DUP2 MSTORE PUSH1 0x20 ADD PUSH2 0xEF JUMP JUMPDEST PUSH2 0x13B PUSH2 0x204 CALLDATASIZE PUSH1 0x4 PUSH2 0x1045 JUMP JUMPDEST PUSH2 0x6A3 JUMP JUMPDEST PUSH2 0x13B PUSH2 0x217 CALLDATASIZE PUSH1 0x4 PUSH2 0xF75 JUMP JUMPDEST PUSH2 0x720 JUMP JUMPDEST PUSH2 0x11A PUSH2 0x22A CALLDATASIZE PUSH1 0x4 PUSH2 0xF8C JUMP JUMPDEST PUSH2 0x858 JUMP JUMPDEST PUSH2 0x1DE PUSH2 0x23D CALLDATASIZE PUSH1 0x4 PUSH2 0xF8C JUMP JUMPDEST POP PUSH32 0x0 SWAP1 JUMP JUMPDEST PUSH2 0x11A PUSH2 0x270 CALLDATASIZE PUSH1 0x4 PUSH2 0xF8C JUMP JUMPDEST PUSH2 0x85E JUMP JUMPDEST PUSH1 0x60 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB PUSH32 0x0 AND ADDRESS SUB PUSH2 0x2C0 JUMPI PUSH1 0x40 MLOAD PUSH4 0x2ABF118B PUSH1 0xE2 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH0 PUSH1 0xFF DUP5 AND DUP1 ISZERO PUSH2 0x2D3 JUMPI PUSH2 0x2D3 PUSH2 0xFB2 JUMP JUMPDEST SWAP1 POP PUSH0 DUP2 DUP1 ISZERO PUSH2 0x2E5 JUMPI PUSH2 0x2E5 PUSH2 0xFB2 JUMP JUMPDEST SUB PUSH2 0xCB JUMPI PUSH2 0x2FC PUSH2 0x2F6 ADDRESS PUSH2 0x8F2 JUMP JUMPDEST DUP5 PUSH2 0x9B4 JUMP JUMPDEST POP POP PUSH1 0x40 DUP1 MLOAD PUSH1 0x20 DUP2 ADD SWAP1 SWAP2 MSTORE PUSH0 DUP2 MSTORE JUMPDEST SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB PUSH32 0x0 AND ADDRESS SUB PUSH2 0x35C JUMPI PUSH1 0x40 MLOAD PUSH4 0x2ABF118B PUSH1 0xE2 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST DUP1 ISZERO PUSH2 0x600 JUMPI PUSH0 PUSH2 0x36B PUSH2 0xAD4 JUMP JUMPDEST SWAP1 POP PUSH0 PUSH2 0x376 PUSH2 0xBAF JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH4 0x70A08231 PUSH1 0xE0 SHL DUP2 MSTORE ADDRESS PUSH1 0x4 DUP3 ADD MSTORE SWAP1 SWAP2 POP PUSH2 0x409 SWAP1 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB PUSH32 0x0 AND SWAP1 PUSH4 0x70A08231 SWAP1 PUSH1 0x24 ADD PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x3DF JUMPI RETURNDATASIZE PUSH0 PUSH0 RETURNDATACOPY RETURNDATASIZE PUSH0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP3 ADD DUP1 PUSH1 0x40 MSTORE POP DUP2 ADD SWAP1 PUSH2 0x403 SWAP2 SWAP1 PUSH2 0x1077 JUMP JUMPDEST ADDRESS PUSH2 0xBE3 JUMP JUMPDEST DUP4 LT PUSH2 0x53D JUMPI PUSH1 0x40 MLOAD PUSH4 0x70A08231 PUSH1 0xE0 SHL DUP2 MSTORE ADDRESS PUSH1 0x4 DUP3 ADD MSTORE PUSH20 0x0 SWAP1 PUSH4 0x77566915 SWAP1 DUP5 SWAP1 PUSH32 0x0 SWAP1 PUSH32 0x0 SWAP1 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP4 AND SWAP1 PUSH4 0x70A08231 SWAP1 PUSH1 0x24 ADD PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x4B3 JUMPI RETURNDATASIZE PUSH0 PUSH0 RETURNDATACOPY RETURNDATASIZE PUSH0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP3 ADD DUP1 PUSH1 0x40 MSTORE POP DUP2 ADD SWAP1 PUSH2 0x4D7 SWAP2 SWAP1 PUSH2 0x1077 JUMP JUMPDEST DUP7 PUSH1 0x40 MLOAD DUP7 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x4F8 SWAP6 SWAP5 SWAP4 SWAP3 SWAP2 SWAP1 PUSH2 0x108E JUMP JUMPDEST PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 GAS DELEGATECALL ISZERO DUP1 ISZERO PUSH2 0x513 JUMPI RETURNDATASIZE PUSH0 PUSH0 RETURNDATACOPY RETURNDATASIZE PUSH0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP3 ADD DUP1 PUSH1 0x40 MSTORE POP DUP2 ADD SWAP1 PUSH2 0x537 SWAP2 SWAP1 PUSH2 0x1077 JUMP JUMPDEST POP PUSH2 0x5FD JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH4 0x581E517D PUSH1 0xE0 SHL DUP2 MSTORE PUSH20 0x0 SWAP1 PUSH4 0x581E517D SWAP1 PUSH2 0x5BC SWAP1 DUP6 SWAP1 PUSH32 0x0 SWAP1 PUSH32 0x0 SWAP1 DUP10 SWAP1 DUP9 SWAP1 PUSH1 0x4 ADD PUSH2 0x108E JUMP JUMPDEST PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 GAS DELEGATECALL ISZERO DUP1 ISZERO PUSH2 0x5D7 JUMPI RETURNDATASIZE PUSH0 PUSH0 RETURNDATACOPY RETURNDATASIZE PUSH0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP3 ADD DUP1 PUSH1 0x40 MSTORE POP DUP2 ADD SWAP1 PUSH2 0x5FB SWAP2 SWAP1 PUSH2 0x1077 JUMP JUMPDEST POP JUMPDEST POP POP JUMPDEST POP JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH1 0x60 DUP1 DUP3 ADD DUP4 MSTORE PUSH0 DUP1 DUP4 MSTORE PUSH1 0x20 DUP4 ADD MSTORE SWAP2 DUP2 ADD SWAP2 SWAP1 SWAP2 MSTORE PUSH2 0x30D DUP3 PUSH2 0x8F2 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB PUSH32 0x0 AND ADDRESS SUB PUSH2 0x670 JUMPI PUSH1 0x40 MLOAD PUSH4 0x2ABF118B PUSH1 0xE2 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST DUP1 ISZERO DUP1 ISZERO PUSH2 0x685 JUMPI POP PUSH2 0x682 ADDRESS PUSH2 0x85E JUMP JUMPDEST ISZERO ISZERO JUMPDEST ISZERO PUSH2 0x600 JUMPI PUSH1 0x40 MLOAD PUSH4 0x42A176D1 PUSH1 0xE1 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB PUSH32 0x0 AND ADDRESS SUB PUSH2 0x6EC JUMPI PUSH1 0x40 MLOAD PUSH4 0x2ABF118B PUSH1 0xE2 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH1 0x60 DUP2 ADD SWAP1 SWAP2 MSTORE PUSH2 0x600 SWAP1 DUP1 PUSH0 DUP2 MSTORE PUSH1 0x20 ADD PUSH0 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x40 MLOAD DUP1 PUSH1 0x20 ADD PUSH1 0x40 MSTORE DUP1 PUSH0 DUP2 MSTORE POP DUP2 MSTORE POP DUP3 PUSH2 0x9B4 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB PUSH32 0x0 AND ADDRESS SUB PUSH2 0x769 JUMPI PUSH1 0x40 MLOAD PUSH4 0x2ABF118B PUSH1 0xE2 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST DUP1 ISZERO PUSH2 0x600 JUMPI PUSH2 0x777 PUSH2 0xAD4 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH4 0x77566915 PUSH1 0xE0 SHL DUP2 MSTORE PUSH20 0x0 SWAP2 PUSH4 0x77566915 SWAP2 PUSH2 0x815 SWAP2 SWAP1 PUSH32 0x0 SWAP1 PUSH32 0x0 SWAP1 DUP8 SWAP1 PUSH32 0x0 SWAP1 PUSH1 0x4 ADD PUSH2 0x108E JUMP JUMPDEST PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 GAS DELEGATECALL ISZERO DUP1 ISZERO PUSH2 0x830 JUMPI RETURNDATASIZE PUSH0 PUSH0 RETURNDATACOPY RETURNDATASIZE PUSH0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP3 ADD DUP1 PUSH1 0x40 MSTORE POP DUP2 ADD SWAP1 PUSH2 0x854 SWAP2 SWAP1 PUSH2 0x1077 JUMP JUMPDEST POP POP JUMP JUMPDEST PUSH0 PUSH2 0x30D DUP3 JUMPDEST PUSH1 0x40 MLOAD PUSH4 0x70A08231 PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP3 DUP2 AND PUSH1 0x4 DUP4 ADD MSTORE PUSH0 SWAP2 PUSH2 0x30D SWAP2 PUSH32 0x0 AND SWAP1 PUSH4 0x70A08231 SWAP1 PUSH1 0x24 ADD PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x8C8 JUMPI RETURNDATASIZE PUSH0 PUSH0 RETURNDATACOPY RETURNDATASIZE PUSH0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP3 ADD DUP1 PUSH1 0x40 MSTORE POP DUP2 ADD SWAP1 PUSH2 0x8EC SWAP2 SWAP1 PUSH2 0x1077 JUMP JUMPDEST DUP4 PUSH2 0xBE3 JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH1 0x60 DUP1 DUP3 ADD DUP4 MSTORE PUSH0 DUP1 DUP4 MSTORE PUSH1 0x20 DUP4 ADD MSTORE SWAP2 DUP2 ADD SWAP2 SWAP1 SWAP2 MSTORE PUSH1 0x40 MLOAD PUSH4 0x47E57533 PUSH1 0xE0 SHL DUP2 MSTORE PUSH32 0x0 PUSH1 0x4 DUP3 ADD MSTORE PUSH0 SWAP1 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP5 AND SWAP1 PUSH4 0x47E57533 SWAP1 PUSH1 0x24 ADD PUSH0 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x970 JUMPI RETURNDATASIZE PUSH0 PUSH0 RETURNDATACOPY RETURNDATASIZE PUSH0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH0 DUP3 RETURNDATACOPY PUSH1 0x1F RETURNDATASIZE SWAP1 DUP2 ADD PUSH1 0x1F NOT AND DUP3 ADD PUSH1 0x40 MSTORE PUSH2 0x997 SWAP2 SWAP1 DUP2 ADD SWAP1 PUSH2 0x111A JUMP JUMPDEST SWAP1 POP DUP1 DUP1 PUSH1 0x20 ADD SWAP1 MLOAD DUP2 ADD SWAP1 PUSH2 0x9AD SWAP2 SWAP1 PUSH2 0x114C JUMP JUMPDEST SWAP4 SWAP3 POP POP POP JUMP JUMPDEST PUSH0 DUP2 DUP1 PUSH1 0x20 ADD SWAP1 MLOAD DUP2 ADD SWAP1 PUSH2 0x9C9 SWAP2 SWAP1 PUSH2 0x114C JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH4 0x2CBF28CB PUSH1 0xE2 SHL DUP2 MSTORE SWAP1 SWAP2 POP PUSH20 0x0 SWAP1 PUSH4 0xB2FCA32C SWAP1 PUSH2 0xA03 SWAP1 DUP5 SWAP1 PUSH1 0x4 ADD PUSH2 0x1014 JUMP JUMPDEST PUSH0 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0xA19 JUMPI PUSH0 PUSH0 REVERT JUMPDEST POP GAS DELEGATECALL ISZERO DUP1 ISZERO PUSH2 0xA2B JUMPI RETURNDATASIZE PUSH0 PUSH0 RETURNDATACOPY RETURNDATASIZE PUSH0 REVERT JUMPDEST POP POP POP POP DUP2 MLOAD DUP2 PUSH1 0x40 MLOAD PUSH1 0x20 ADD PUSH2 0xA42 SWAP2 SWAP1 PUSH2 0x1014 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH1 0x20 DUP2 DUP4 SUB SUB DUP2 MSTORE SWAP1 PUSH1 0x40 MSTORE MLOAD EQ PUSH2 0xA70 JUMPI PUSH1 0x40 MLOAD PUSH4 0x50701B61 PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH32 0xCA7F7AA563866A1D31C74DEBA224724D1DA9C35CBB6F783F2CCF0182F91E34F8 DUP4 DUP3 PUSH1 0x40 MLOAD PUSH2 0xAA1 SWAP3 SWAP2 SWAP1 PUSH2 0x11D8 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 LOG1 PUSH32 0x0 PUSH2 0x5FB DUP4 DUP3 PUSH2 0x1288 JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH1 0x60 DUP1 DUP3 ADD DUP4 MSTORE PUSH0 DUP1 DUP4 MSTORE PUSH1 0x20 DUP4 ADD MSTORE SWAP2 DUP2 ADD SWAP2 SWAP1 SWAP2 MSTORE PUSH32 0x0 DUP1 SLOAD PUSH2 0xB1B SWAP1 PUSH2 0x1205 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 0xB47 SWAP1 PUSH2 0x1205 JUMP JUMPDEST DUP1 ISZERO PUSH2 0xB92 JUMPI DUP1 PUSH1 0x1F LT PUSH2 0xB69 JUMPI PUSH2 0x100 DUP1 DUP4 SLOAD DIV MUL DUP4 MSTORE SWAP2 PUSH1 0x20 ADD SWAP2 PUSH2 0xB92 JUMP JUMPDEST DUP3 ADD SWAP2 SWAP1 PUSH0 MSTORE PUSH1 0x20 PUSH0 KECCAK256 SWAP1 JUMPDEST DUP2 SLOAD DUP2 MSTORE SWAP1 PUSH1 0x1 ADD SWAP1 PUSH1 0x20 ADD DUP1 DUP4 GT PUSH2 0xB75 JUMPI DUP3 SWAP1 SUB PUSH1 0x1F AND DUP3 ADD SWAP2 JUMPDEST POP POP POP POP POP DUP1 PUSH1 0x20 ADD SWAP1 MLOAD DUP2 ADD SWAP1 PUSH2 0xBAA SWAP2 SWAP1 PUSH2 0x114C JUMP JUMPDEST SWAP1 POP SWAP1 JUMP JUMPDEST PUSH0 PUSH2 0xBAA PUSH8 0xDE0B6B3A7640000 DUP1 PUSH32 0x0 PUSH2 0xC9F JUMP JUMPDEST PUSH0 PUSH2 0xC0D PUSH32 0x0 PUSH2 0xD4F JUMP JUMPDEST PUSH2 0xC95 PUSH2 0xC76 PUSH2 0xC3C PUSH32 0x0 PUSH2 0xD4F JUMP JUMPDEST PUSH2 0xC46 SWAP1 DUP8 PUSH2 0x1357 JUMP JUMPDEST PUSH32 0x0 JUMPDEST PUSH8 0xDE0B6B3A7640000 PUSH2 0xC9F JUMP JUMPDEST PUSH2 0xC7F DUP6 PUSH2 0x8F2 JUMP JUMPDEST PUSH1 0x20 ADD MLOAD PUSH2 0xC68 SWAP1 PUSH8 0xDE0B6B3A7640000 PUSH2 0x136E JUMP JUMPDEST PUSH2 0x9AD SWAP2 SWAP1 PUSH2 0x1395 JUMP JUMPDEST PUSH0 PUSH0 PUSH0 PUSH2 0xCAC DUP7 DUP7 PUSH2 0xDC6 JUMP JUMPDEST SWAP2 POP SWAP2 POP DUP2 PUSH0 SUB PUSH2 0xCD0 JUMPI DUP4 DUP2 DUP2 PUSH2 0xCC6 JUMPI PUSH2 0xCC6 PUSH2 0x1381 JUMP JUMPDEST DIV SWAP3 POP POP POP PUSH2 0x9AD JUMP JUMPDEST DUP2 DUP5 GT PUSH2 0xCE7 JUMPI PUSH2 0xCE7 PUSH1 0x3 DUP6 ISZERO MUL PUSH1 0x11 XOR PUSH2 0xDE2 JUMP JUMPDEST PUSH0 DUP5 DUP7 DUP9 MULMOD PUSH0 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 DUP6 DUP5 GT SWAP1 SWAP7 SUB SWAP6 SWAP1 SWAP6 MUL SWAP2 SWAP1 SWAP4 SUB SWAP4 SWAP1 SWAP4 DIV SWAP3 SWAP1 SWAP3 OR MUL SWAP2 POP POP SWAP4 SWAP3 POP POP POP JUMP JUMPDEST PUSH0 DUP2 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 GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0xD8C JUMPI RETURNDATASIZE PUSH0 PUSH0 RETURNDATACOPY RETURNDATASIZE PUSH0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP3 ADD DUP1 PUSH1 0x40 MSTORE POP DUP2 ADD SWAP1 PUSH2 0xDB0 SWAP2 SWAP1 PUSH2 0x13B4 JUMP JUMPDEST PUSH2 0xDBB SWAP1 PUSH1 0x12 PUSH2 0x13CF JUMP JUMPDEST PUSH2 0x30D SWAP1 PUSH1 0xA PUSH2 0x14CB JUMP JUMPDEST PUSH0 DUP1 PUSH0 NOT DUP4 DUP6 MULMOD SWAP4 SWAP1 SWAP3 MUL DUP1 DUP5 LT SWAP4 DUP2 SWAP1 SUB SWAP4 SWAP1 SWAP4 SUB SWAP4 SWAP2 POP POP JUMP JUMPDEST PUSH4 0x4E487B71 PUSH0 MSTORE DUP1 PUSH1 0x20 MSTORE PUSH1 0x24 PUSH1 0x1C REVERT JUMPDEST PUSH1 0xFF DUP2 AND DUP2 EQ PUSH2 0x600 JUMPI PUSH0 PUSH0 REVERT JUMPDEST PUSH4 0x4E487B71 PUSH1 0xE0 SHL PUSH0 MSTORE PUSH1 0x41 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH0 REVERT JUMPDEST PUSH1 0x40 MLOAD PUSH1 0x60 DUP2 ADD PUSH8 0xFFFFFFFFFFFFFFFF DUP2 GT DUP3 DUP3 LT OR ISZERO PUSH2 0xE38 JUMPI PUSH2 0xE38 PUSH2 0xE01 JUMP JUMPDEST PUSH1 0x40 MSTORE SWAP1 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH1 0x1F DUP3 ADD PUSH1 0x1F NOT AND DUP2 ADD PUSH8 0xFFFFFFFFFFFFFFFF DUP2 GT DUP3 DUP3 LT OR ISZERO PUSH2 0xE67 JUMPI PUSH2 0xE67 PUSH2 0xE01 JUMP JUMPDEST PUSH1 0x40 MSTORE SWAP2 SWAP1 POP JUMP JUMPDEST PUSH0 PUSH8 0xFFFFFFFFFFFFFFFF DUP3 GT ISZERO PUSH2 0xE88 JUMPI PUSH2 0xE88 PUSH2 0xE01 JUMP JUMPDEST POP PUSH1 0x1F ADD PUSH1 0x1F NOT AND PUSH1 0x20 ADD SWAP1 JUMP JUMPDEST PUSH0 DUP3 PUSH1 0x1F DUP4 ADD SLT PUSH2 0xEA5 JUMPI PUSH0 PUSH0 REVERT JUMPDEST DUP2 CALLDATALOAD PUSH2 0xEB8 PUSH2 0xEB3 DUP3 PUSH2 0xE6F JUMP JUMPDEST PUSH2 0xE3E JUMP JUMPDEST DUP2 DUP2 MSTORE DUP5 PUSH1 0x20 DUP4 DUP7 ADD ADD GT ISZERO PUSH2 0xECC JUMPI PUSH0 PUSH0 REVERT JUMPDEST DUP2 PUSH1 0x20 DUP6 ADD PUSH1 0x20 DUP4 ADD CALLDATACOPY PUSH0 SWAP2 DUP2 ADD PUSH1 0x20 ADD SWAP2 SWAP1 SWAP2 MSTORE SWAP4 SWAP3 POP POP POP JUMP JUMPDEST PUSH0 PUSH0 PUSH1 0x40 DUP4 DUP6 SUB SLT ISZERO PUSH2 0xEF9 JUMPI PUSH0 PUSH0 REVERT JUMPDEST DUP3 CALLDATALOAD PUSH2 0xF04 DUP2 PUSH2 0xDF3 JUMP JUMPDEST SWAP2 POP PUSH1 0x20 DUP4 ADD CALLDATALOAD PUSH8 0xFFFFFFFFFFFFFFFF DUP2 GT ISZERO PUSH2 0xF1F JUMPI PUSH0 PUSH0 REVERT JUMPDEST PUSH2 0xF2B DUP6 DUP3 DUP7 ADD PUSH2 0xE96 JUMP JUMPDEST SWAP2 POP POP SWAP3 POP SWAP3 SWAP1 POP JUMP JUMPDEST PUSH0 DUP2 MLOAD DUP1 DUP5 MSTORE DUP1 PUSH1 0x20 DUP5 ADD PUSH1 0x20 DUP7 ADD MCOPY PUSH0 PUSH1 0x20 DUP3 DUP7 ADD ADD MSTORE PUSH1 0x20 PUSH1 0x1F NOT PUSH1 0x1F DUP4 ADD AND DUP6 ADD ADD SWAP2 POP POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x20 DUP2 MSTORE PUSH0 PUSH2 0x9AD PUSH1 0x20 DUP4 ADD DUP5 PUSH2 0xF35 JUMP JUMPDEST PUSH0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0xF85 JUMPI PUSH0 PUSH0 REVERT JUMPDEST POP CALLDATALOAD SWAP2 SWAP1 POP JUMP JUMPDEST PUSH0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0xF9C JUMPI PUSH0 PUSH0 REVERT JUMPDEST DUP2 CALLDATALOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 AND DUP2 EQ PUSH2 0x9AD JUMPI PUSH0 PUSH0 REVERT JUMPDEST PUSH4 0x4E487B71 PUSH1 0xE0 SHL PUSH0 MSTORE PUSH1 0x21 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH0 REVERT JUMPDEST PUSH0 DUP2 MLOAD PUSH1 0x3 DUP2 LT PUSH2 0xFE5 JUMPI PUSH4 0x4E487B71 PUSH1 0xE0 SHL PUSH0 MSTORE PUSH1 0x21 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH0 REVERT JUMPDEST DUP1 DUP5 MSTORE POP PUSH1 0x20 DUP3 ADD MLOAD PUSH1 0x20 DUP5 ADD MSTORE PUSH1 0x40 DUP3 ADD MLOAD PUSH1 0x60 PUSH1 0x40 DUP6 ADD MSTORE PUSH2 0x100C PUSH1 0x60 DUP6 ADD DUP3 PUSH2 0xF35 JUMP JUMPDEST SWAP5 SWAP4 POP POP POP POP JUMP JUMPDEST PUSH1 0x20 DUP2 MSTORE PUSH0 PUSH2 0x9AD PUSH1 0x20 DUP4 ADD DUP5 PUSH2 0xFC6 JUMP JUMPDEST PUSH0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x1036 JUMPI PUSH0 PUSH0 REVERT JUMPDEST DUP2 CALLDATALOAD DUP1 ISZERO ISZERO DUP2 EQ PUSH2 0x9AD JUMPI PUSH0 PUSH0 REVERT JUMPDEST PUSH0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x1055 JUMPI PUSH0 PUSH0 REVERT JUMPDEST DUP2 CALLDATALOAD PUSH8 0xFFFFFFFFFFFFFFFF DUP2 GT ISZERO PUSH2 0x106B JUMPI PUSH0 PUSH0 REVERT JUMPDEST PUSH2 0x100C DUP5 DUP3 DUP6 ADD PUSH2 0xE96 JUMP JUMPDEST PUSH0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x1087 JUMPI PUSH0 PUSH0 REVERT JUMPDEST POP MLOAD SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0xA0 DUP2 MSTORE PUSH0 PUSH2 0x10A0 PUSH1 0xA0 DUP4 ADD DUP9 PUSH2 0xFC6 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP7 DUP8 AND PUSH1 0x20 DUP5 ADD MSTORE SWAP5 SWAP1 SWAP6 AND PUSH1 0x40 DUP3 ADD MSTORE PUSH1 0x60 DUP2 ADD SWAP3 SWAP1 SWAP3 MSTORE PUSH1 0x80 SWAP1 SWAP2 ADD MSTORE SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH0 DUP3 PUSH1 0x1F DUP4 ADD SLT PUSH2 0x10DC JUMPI PUSH0 PUSH0 REVERT JUMPDEST DUP2 MLOAD PUSH2 0x10EA PUSH2 0xEB3 DUP3 PUSH2 0xE6F JUMP JUMPDEST DUP2 DUP2 MSTORE DUP5 PUSH1 0x20 DUP4 DUP7 ADD ADD GT ISZERO PUSH2 0x10FE JUMPI PUSH0 PUSH0 REVERT JUMPDEST DUP2 PUSH1 0x20 DUP6 ADD PUSH1 0x20 DUP4 ADD MCOPY PUSH0 SWAP2 DUP2 ADD PUSH1 0x20 ADD SWAP2 SWAP1 SWAP2 MSTORE SWAP4 SWAP3 POP POP POP JUMP JUMPDEST PUSH0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x112A JUMPI PUSH0 PUSH0 REVERT JUMPDEST DUP2 MLOAD PUSH8 0xFFFFFFFFFFFFFFFF DUP2 GT ISZERO PUSH2 0x1140 JUMPI PUSH0 PUSH0 REVERT JUMPDEST PUSH2 0x100C DUP5 DUP3 DUP6 ADD PUSH2 0x10CD JUMP JUMPDEST PUSH0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x115C JUMPI PUSH0 PUSH0 REVERT JUMPDEST DUP2 MLOAD PUSH8 0xFFFFFFFFFFFFFFFF DUP2 GT ISZERO PUSH2 0x1172 JUMPI PUSH0 PUSH0 REVERT JUMPDEST DUP3 ADD PUSH1 0x60 DUP2 DUP6 SUB SLT ISZERO PUSH2 0x1183 JUMPI PUSH0 PUSH0 REVERT JUMPDEST PUSH2 0x118B PUSH2 0xE15 JUMP JUMPDEST DUP2 MLOAD PUSH1 0x3 DUP2 LT PUSH2 0x1199 JUMPI PUSH0 PUSH0 REVERT JUMPDEST DUP2 MSTORE PUSH1 0x20 DUP3 DUP2 ADD MLOAD SWAP1 DUP3 ADD MSTORE PUSH1 0x40 DUP3 ADD MLOAD PUSH8 0xFFFFFFFFFFFFFFFF DUP2 GT ISZERO PUSH2 0x11BE JUMPI PUSH0 PUSH0 REVERT JUMPDEST PUSH2 0x11CA DUP7 DUP3 DUP6 ADD PUSH2 0x10CD JUMP JUMPDEST PUSH1 0x40 DUP4 ADD MSTORE POP SWAP5 SWAP4 POP POP POP POP JUMP JUMPDEST PUSH1 0x40 DUP2 MSTORE PUSH0 PUSH2 0x11EA PUSH1 0x40 DUP4 ADD DUP6 PUSH2 0xFC6 JUMP JUMPDEST DUP3 DUP2 SUB PUSH1 0x20 DUP5 ADD MSTORE PUSH2 0x11FC DUP2 DUP6 PUSH2 0xFC6 JUMP JUMPDEST SWAP6 SWAP5 POP POP POP POP POP JUMP JUMPDEST PUSH1 0x1 DUP2 DUP2 SHR SWAP1 DUP3 AND DUP1 PUSH2 0x1219 JUMPI PUSH1 0x7F DUP3 AND SWAP2 POP JUMPDEST PUSH1 0x20 DUP3 LT DUP2 SUB PUSH2 0x1237 JUMPI PUSH4 0x4E487B71 PUSH1 0xE0 SHL PUSH0 MSTORE PUSH1 0x22 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH0 REVERT JUMPDEST POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x1F DUP3 GT ISZERO PUSH2 0x5FD JUMPI DUP1 PUSH0 MSTORE PUSH1 0x20 PUSH0 KECCAK256 PUSH1 0x1F DUP5 ADD PUSH1 0x5 SHR DUP2 ADD PUSH1 0x20 DUP6 LT ISZERO PUSH2 0x1262 JUMPI POP DUP1 JUMPDEST PUSH1 0x1F DUP5 ADD PUSH1 0x5 SHR DUP3 ADD SWAP2 POP JUMPDEST DUP2 DUP2 LT ISZERO PUSH2 0x1281 JUMPI PUSH0 DUP2 SSTORE PUSH1 0x1 ADD PUSH2 0x126E JUMP JUMPDEST POP POP POP POP POP JUMP JUMPDEST DUP2 MLOAD PUSH8 0xFFFFFFFFFFFFFFFF DUP2 GT ISZERO PUSH2 0x12A2 JUMPI PUSH2 0x12A2 PUSH2 0xE01 JUMP JUMPDEST PUSH2 0x12B6 DUP2 PUSH2 0x12B0 DUP5 SLOAD PUSH2 0x1205 JUMP JUMPDEST DUP5 PUSH2 0x123D JUMP JUMPDEST PUSH1 0x20 PUSH1 0x1F DUP3 GT PUSH1 0x1 DUP2 EQ PUSH2 0x12E8 JUMPI PUSH0 DUP4 ISZERO PUSH2 0x12D1 JUMPI POP DUP5 DUP3 ADD MLOAD JUMPDEST PUSH0 NOT PUSH1 0x3 DUP6 SWAP1 SHL SHR NOT AND PUSH1 0x1 DUP5 SWAP1 SHL OR DUP5 SSTORE PUSH2 0x1281 JUMP JUMPDEST PUSH0 DUP5 DUP2 MSTORE PUSH1 0x20 DUP2 KECCAK256 PUSH1 0x1F NOT DUP6 AND SWAP2 JUMPDEST DUP3 DUP2 LT ISZERO PUSH2 0x1317 JUMPI DUP8 DUP6 ADD MLOAD DUP3 SSTORE PUSH1 0x20 SWAP5 DUP6 ADD SWAP5 PUSH1 0x1 SWAP1 SWAP3 ADD SWAP2 ADD PUSH2 0x12F7 JUMP JUMPDEST POP DUP5 DUP3 LT ISZERO PUSH2 0x1334 JUMPI DUP7 DUP5 ADD MLOAD PUSH0 NOT PUSH1 0x3 DUP8 SWAP1 SHL PUSH1 0xF8 AND SHR NOT AND DUP2 SSTORE JUMPDEST POP POP POP POP PUSH1 0x1 SWAP1 DUP2 SHL ADD SWAP1 SSTORE POP JUMP JUMPDEST PUSH4 0x4E487B71 PUSH1 0xE0 SHL PUSH0 MSTORE PUSH1 0x11 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH0 REVERT JUMPDEST DUP1 DUP3 MUL DUP2 ISZERO DUP3 DUP3 DIV DUP5 EQ OR PUSH2 0x30D JUMPI PUSH2 0x30D PUSH2 0x1343 JUMP JUMPDEST DUP2 DUP2 SUB DUP2 DUP2 GT ISZERO PUSH2 0x30D JUMPI PUSH2 0x30D PUSH2 0x1343 JUMP JUMPDEST PUSH4 0x4E487B71 PUSH1 0xE0 SHL PUSH0 MSTORE PUSH1 0x12 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH0 REVERT JUMPDEST PUSH0 DUP3 PUSH2 0x13AF JUMPI PUSH4 0x4E487B71 PUSH1 0xE0 SHL PUSH0 MSTORE PUSH1 0x12 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH0 REVERT JUMPDEST POP DIV SWAP1 JUMP JUMPDEST PUSH0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x13C4 JUMPI PUSH0 PUSH0 REVERT JUMPDEST DUP2 MLOAD PUSH2 0x9AD DUP2 PUSH2 0xDF3 JUMP JUMPDEST PUSH1 0xFF DUP3 DUP2 AND DUP3 DUP3 AND SUB SWAP1 DUP2 GT ISZERO PUSH2 0x30D JUMPI PUSH2 0x30D PUSH2 0x1343 JUMP JUMPDEST PUSH1 0x1 DUP2 JUMPDEST PUSH1 0x1 DUP5 GT ISZERO PUSH2 0x1423 JUMPI DUP1 DUP6 DIV DUP2 GT ISZERO PUSH2 0x1407 JUMPI PUSH2 0x1407 PUSH2 0x1343 JUMP JUMPDEST PUSH1 0x1 DUP5 AND ISZERO PUSH2 0x1415 JUMPI SWAP1 DUP2 MUL SWAP1 JUMPDEST PUSH1 0x1 SWAP4 SWAP1 SWAP4 SHR SWAP3 DUP1 MUL PUSH2 0x13EC JUMP JUMPDEST SWAP4 POP SWAP4 SWAP2 POP POP JUMP JUMPDEST PUSH0 DUP3 PUSH2 0x1439 JUMPI POP PUSH1 0x1 PUSH2 0x30D JUMP JUMPDEST DUP2 PUSH2 0x1445 JUMPI POP PUSH0 PUSH2 0x30D JUMP JUMPDEST DUP2 PUSH1 0x1 DUP2 EQ PUSH2 0x145B JUMPI PUSH1 0x2 DUP2 EQ PUSH2 0x1465 JUMPI PUSH2 0x1481 JUMP JUMPDEST PUSH1 0x1 SWAP2 POP POP PUSH2 0x30D JUMP JUMPDEST PUSH1 0xFF DUP5 GT ISZERO PUSH2 0x1476 JUMPI PUSH2 0x1476 PUSH2 0x1343 JUMP JUMPDEST POP POP PUSH1 0x1 DUP3 SHL PUSH2 0x30D JUMP JUMPDEST POP PUSH1 0x20 DUP4 LT PUSH2 0x133 DUP4 LT AND PUSH1 0x4E DUP5 LT PUSH1 0xB DUP5 LT AND OR ISZERO PUSH2 0x14A4 JUMPI POP DUP2 DUP2 EXP PUSH2 0x30D JUMP JUMPDEST PUSH2 0x14B0 PUSH0 NOT DUP5 DUP5 PUSH2 0x13E8 JUMP JUMPDEST DUP1 PUSH0 NOT DIV DUP3 GT ISZERO PUSH2 0x14C3 JUMPI PUSH2 0x14C3 PUSH2 0x1343 JUMP JUMPDEST MUL SWAP4 SWAP3 POP POP POP JUMP JUMPDEST PUSH0 PUSH2 0x9AD PUSH1 0xFF DUP5 AND DUP4 PUSH2 0x142B JUMP INVALID LOG2 PUSH5 0x6970667358 0x22 SLT KECCAK256 LOG0 LOG2 RETURNDATASIZE PUSH23 0x1B87053BE335EA25D765FE4DF78C1379EBB0EF6ED13936 ADD DUP1 STATICCALL 0xDD 0x2D PUSH5 0x736F6C6343 STOP ADDMOD 0x1E STOP CALLER ","sourceMap":"1019:4:83:-:0;975:49;;;;517:826:85;7309:54:53;1164:21:87;;;1221:2;1201:18;1194:30;1260:32;1240:18;1233:60;1345:20;1338:62;;;;517:826:85;7309:54:53;;;1310:19:87;7309:54:53;;7299:65;;1028:81:83;;1070:168:85;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;1190:6;1198:12;1983:2:83;1962:6;-1:-1:-1;;;;;1962:15:83;;:17;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;:23;;;;1954:48;;;;-1:-1:-1;;;1954:48:83;;;;;;;;;;;;2043:2;2016:12;-1:-1:-1;;;;;2016:21:83;;:23;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;:29;;;;2008:54;;;;-1:-1:-1;;;2008:54:83;;;;;;;;;;;;2086:12;-1:-1:-1;;;;;2076:22:83;:6;-1:-1:-1;;;;;2076:22:83;;2068:47;;;;-1:-1:-1;;;2068:47:83;;;;;;;;;;;;-1:-1:-1;;;;;2121:15:83;;;;;2142:27;;;1218:15:85::1;::::0;-1:-1:-1;517:826:85;;-1:-1:-1;517:826:85;14:193:87;109:13;;-1:-1:-1;;;;;151:31:87;;141:42;;131:70;;197:1;194;187:12;131:70;14:193;;;:::o;212:432::-;346:6;354;362;415:2;403:9;394:7;390:23;386:32;383:52;;;431:1;428;421:12;383:52;454:56;500:9;454:56;:::i;:::-;444:66;;529:65;590:2;579:9;575:18;529:65;:::i;:::-;519:75;;634:2;623:9;619:18;613:25;603:35;;212:432;;;;;:::o;649:273::-;717:6;770:2;758:9;749:7;745:23;741:32;738:52;;;786:1;783;776:12;738:52;818:9;812:16;868:4;861:5;857:16;850:5;847:27;837:55;;888:1;885;878:12;837:55;911:5;649:273;-1:-1:-1;;;649:273:87:o;927:479::-;517:826:85;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;"},"deployedBytecode":{"functionDebugData":{"@_convertAssets_24221":{"entryPoint":3043,"id":24221,"parameterSlots":2,"returnSlots":1},"@_getSwapConfigSelf_24494":{"entryPoint":2772,"id":24494,"parameterSlots":0,"returnSlots":1},"@_getSwapConfig_24475":{"entryPoint":2290,"id":24475,"parameterSlots":1,"returnSlots":1},"@_setSwapConfig_24405":{"entryPoint":2484,"id":24405,"parameterSlots":2,"returnSlots":0},"@_toWadFactor_24055":{"entryPoint":3407,"id":24055,"parameterSlots":1,"returnSlots":1},"@asset_24150":{"entryPoint":null,"id":24150,"parameterSlots":1,"returnSlots":1},"@connect_24080":{"entryPoint":1699,"id":24080,"parameterSlots":1,"returnSlots":0},"@deposit_24352":{"entryPoint":1824,"id":24352,"parameterSlots":1,"returnSlots":0},"@disconnect_24105":{"entryPoint":1575,"id":24105,"parameterSlots":1,"returnSlots":0},"@forwardEntryPoint_24449":{"entryPoint":629,"id":24449,"parameterSlots":2,"returnSlots":1},"@getBytesSlot_11020":{"entryPoint":null,"id":11020,"parameterSlots":1,"returnSlots":1},"@getSwapConfig_24508":{"entryPoint":1539,"id":24508,"parameterSlots":1,"returnSlots":1},"@investAssetPrice_24886":{"entryPoint":null,"id":24886,"parameterSlots":0,"returnSlots":1},"@investAsset_24164":{"entryPoint":null,"id":24164,"parameterSlots":1,"returnSlots":1},"@maxDeposit_24135":{"entryPoint":null,"id":24135,"parameterSlots":1,"returnSlots":1},"@maxWithdraw_24119":{"entryPoint":2136,"id":24119,"parameterSlots":1,"returnSlots":1},"@mul512_11124":{"entryPoint":3526,"id":11124,"parameterSlots":2,"returnSlots":2},"@mulDiv_11611":{"entryPoint":3231,"id":11611,"parameterSlots":3,"returnSlots":1},"@panic_10907":{"entryPoint":3554,"id":10907,"parameterSlots":1,"returnSlots":0},"@sellInvestAssetPrice_24184":{"entryPoint":2991,"id":24184,"parameterSlots":0,"returnSlots":1},"@storageSlot_23952":{"entryPoint":null,"id":23952,"parameterSlots":0,"returnSlots":0},"@ternary_11373":{"entryPoint":null,"id":11373,"parameterSlots":3,"returnSlots":1},"@toUint_14490":{"entryPoint":null,"id":14490,"parameterSlots":1,"returnSlots":1},"@totalAssets_24239":{"entryPoint":2142,"id":24239,"parameterSlots":1,"returnSlots":1},"@withdraw_24321":{"entryPoint":787,"id":24321,"parameterSlots":1,"returnSlots":0},"abi_decode_bytes":{"entryPoint":3734,"id":null,"parameterSlots":2,"returnSlots":1},"abi_decode_bytes_fromMemory":{"entryPoint":4301,"id":null,"parameterSlots":2,"returnSlots":1},"abi_decode_tuple_t_address":{"entryPoint":3980,"id":null,"parameterSlots":2,"returnSlots":1},"abi_decode_tuple_t_bool":{"entryPoint":4134,"id":null,"parameterSlots":2,"returnSlots":1},"abi_decode_tuple_t_bytes_memory_ptr":{"entryPoint":4165,"id":null,"parameterSlots":2,"returnSlots":1},"abi_decode_tuple_t_bytes_memory_ptr_fromMemory":{"entryPoint":4378,"id":null,"parameterSlots":2,"returnSlots":1},"abi_decode_tuple_t_struct$_SwapConfig_$1113_memory_ptr_fromMemory":{"entryPoint":4428,"id":null,"parameterSlots":2,"returnSlots":1},"abi_decode_tuple_t_uint256":{"entryPoint":3957,"id":null,"parameterSlots":2,"returnSlots":1},"abi_decode_tuple_t_uint256_fromMemory":{"entryPoint":4215,"id":null,"parameterSlots":2,"returnSlots":1},"abi_decode_tuple_t_uint8_fromMemory":{"entryPoint":5044,"id":null,"parameterSlots":2,"returnSlots":1},"abi_decode_tuple_t_uint8t_bytes_memory_ptr":{"entryPoint":3816,"id":null,"parameterSlots":2,"returnSlots":2},"abi_encode_bytes":{"entryPoint":3893,"id":null,"parameterSlots":2,"returnSlots":1},"abi_encode_struct_SwapConfig":{"entryPoint":4038,"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_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":3939,"id":null,"parameterSlots":2,"returnSlots":1},"abi_encode_tuple_t_struct$_SwapConfig_$1113_memory_ptr__to_t_struct$_SwapConfig_$1113_memory_ptr__fromStack_library_reversed":{"entryPoint":null,"id":null,"parameterSlots":2,"returnSlots":1},"abi_encode_tuple_t_struct$_SwapConfig_$1113_memory_ptr__to_t_struct$_SwapConfig_$1113_memory_ptr__fromStack_reversed":{"entryPoint":4116,"id":null,"parameterSlots":2,"returnSlots":1},"abi_encode_tuple_t_struct$_SwapConfig_$1113_memory_ptr_t_address_t_address_t_uint256_t_uint256__to_t_struct$_SwapConfig_$1113_memory_ptr_t_address_t_address_t_uint256_t_uint256__fromStack_library_reversed":{"entryPoint":4238,"id":null,"parameterSlots":6,"returnSlots":1},"abi_encode_tuple_t_struct$_SwapConfig_$1113_memory_ptr_t_struct$_SwapConfig_$1113_memory_ptr__to_t_struct$_SwapConfig_$1113_memory_ptr_t_struct$_SwapConfig_$1113_memory_ptr__fromStack_reversed":{"entryPoint":4568,"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":3646,"id":null,"parameterSlots":1,"returnSlots":1},"allocate_memory_1565":{"entryPoint":3605,"id":null,"parameterSlots":0,"returnSlots":1},"array_allocation_size_bytes":{"entryPoint":3695,"id":null,"parameterSlots":1,"returnSlots":1},"array_dataslot_bytes_storage":{"entryPoint":null,"id":null,"parameterSlots":1,"returnSlots":1},"checked_div_t_uint256":{"entryPoint":5013,"id":null,"parameterSlots":2,"returnSlots":1},"checked_exp_helper":{"entryPoint":5096,"id":null,"parameterSlots":3,"returnSlots":2},"checked_exp_t_uint256_t_uint8":{"entryPoint":5323,"id":null,"parameterSlots":2,"returnSlots":1},"checked_exp_unsigned":{"entryPoint":5163,"id":null,"parameterSlots":2,"returnSlots":1},"checked_mul_t_uint256":{"entryPoint":4951,"id":null,"parameterSlots":2,"returnSlots":1},"checked_sub_t_uint256":{"entryPoint":4974,"id":null,"parameterSlots":2,"returnSlots":1},"checked_sub_t_uint8":{"entryPoint":5071,"id":null,"parameterSlots":2,"returnSlots":1},"clean_up_bytearray_end_slots_bytes_storage":{"entryPoint":4669,"id":null,"parameterSlots":3,"returnSlots":0},"copy_byte_array_to_storage_from_t_bytes_memory_ptr_to_t_bytes_storage":{"entryPoint":4744,"id":null,"parameterSlots":2,"returnSlots":0},"extract_byte_array_length":{"entryPoint":4613,"id":null,"parameterSlots":1,"returnSlots":1},"extract_used_part_and_set_length_of_short_byte_array":{"entryPoint":null,"id":null,"parameterSlots":2,"returnSlots":1},"panic_error_0x11":{"entryPoint":4931,"id":null,"parameterSlots":0,"returnSlots":0},"panic_error_0x12":{"entryPoint":4993,"id":null,"parameterSlots":0,"returnSlots":0},"panic_error_0x21":{"entryPoint":4018,"id":null,"parameterSlots":0,"returnSlots":0},"panic_error_0x41":{"entryPoint":3585,"id":null,"parameterSlots":0,"returnSlots":0},"validator_revert_uint8":{"entryPoint":3571,"id":null,"parameterSlots":1,"returnSlots":0}},"generatedSources":[{"ast":{"nativeSrc":"0:13426:87","nodeType":"YulBlock","src":"0:13426:87","statements":[{"nativeSrc":"6:3:87","nodeType":"YulBlock","src":"6:3:87","statements":[]},{"body":{"nativeSrc":"57:71:87","nodeType":"YulBlock","src":"57:71:87","statements":[{"body":{"nativeSrc":"106:16:87","nodeType":"YulBlock","src":"106:16:87","statements":[{"expression":{"arguments":[{"kind":"number","nativeSrc":"115:1:87","nodeType":"YulLiteral","src":"115:1:87","type":"","value":"0"},{"kind":"number","nativeSrc":"118:1:87","nodeType":"YulLiteral","src":"118:1:87","type":"","value":"0"}],"functionName":{"name":"revert","nativeSrc":"108:6:87","nodeType":"YulIdentifier","src":"108:6:87"},"nativeSrc":"108:12:87","nodeType":"YulFunctionCall","src":"108:12:87"},"nativeSrc":"108:12:87","nodeType":"YulExpressionStatement","src":"108:12:87"}]},"condition":{"arguments":[{"arguments":[{"name":"value","nativeSrc":"80:5:87","nodeType":"YulIdentifier","src":"80:5:87"},{"arguments":[{"name":"value","nativeSrc":"91:5:87","nodeType":"YulIdentifier","src":"91:5:87"},{"kind":"number","nativeSrc":"98:4:87","nodeType":"YulLiteral","src":"98:4:87","type":"","value":"0xff"}],"functionName":{"name":"and","nativeSrc":"87:3:87","nodeType":"YulIdentifier","src":"87:3:87"},"nativeSrc":"87:16:87","nodeType":"YulFunctionCall","src":"87:16:87"}],"functionName":{"name":"eq","nativeSrc":"77:2:87","nodeType":"YulIdentifier","src":"77:2:87"},"nativeSrc":"77:27:87","nodeType":"YulFunctionCall","src":"77:27:87"}],"functionName":{"name":"iszero","nativeSrc":"70:6:87","nodeType":"YulIdentifier","src":"70:6:87"},"nativeSrc":"70:35:87","nodeType":"YulFunctionCall","src":"70:35:87"},"nativeSrc":"67:55:87","nodeType":"YulIf","src":"67:55:87"}]},"name":"validator_revert_uint8","nativeSrc":"14:114:87","nodeType":"YulFunctionDefinition","parameters":[{"name":"value","nativeSrc":"46:5:87","nodeType":"YulTypedName","src":"46:5:87","type":""}],"src":"14:114:87"},{"body":{"nativeSrc":"165:95:87","nodeType":"YulBlock","src":"165:95:87","statements":[{"expression":{"arguments":[{"kind":"number","nativeSrc":"182:1:87","nodeType":"YulLiteral","src":"182:1:87","type":"","value":"0"},{"arguments":[{"kind":"number","nativeSrc":"189:3:87","nodeType":"YulLiteral","src":"189:3:87","type":"","value":"224"},{"kind":"number","nativeSrc":"194:10:87","nodeType":"YulLiteral","src":"194:10:87","type":"","value":"0x4e487b71"}],"functionName":{"name":"shl","nativeSrc":"185:3:87","nodeType":"YulIdentifier","src":"185:3:87"},"nativeSrc":"185:20:87","nodeType":"YulFunctionCall","src":"185:20:87"}],"functionName":{"name":"mstore","nativeSrc":"175:6:87","nodeType":"YulIdentifier","src":"175:6:87"},"nativeSrc":"175:31:87","nodeType":"YulFunctionCall","src":"175:31:87"},"nativeSrc":"175:31:87","nodeType":"YulExpressionStatement","src":"175:31:87"},{"expression":{"arguments":[{"kind":"number","nativeSrc":"222:1:87","nodeType":"YulLiteral","src":"222:1:87","type":"","value":"4"},{"kind":"number","nativeSrc":"225:4:87","nodeType":"YulLiteral","src":"225:4:87","type":"","value":"0x41"}],"functionName":{"name":"mstore","nativeSrc":"215:6:87","nodeType":"YulIdentifier","src":"215:6:87"},"nativeSrc":"215:15:87","nodeType":"YulFunctionCall","src":"215:15:87"},"nativeSrc":"215:15:87","nodeType":"YulExpressionStatement","src":"215:15:87"},{"expression":{"arguments":[{"kind":"number","nativeSrc":"246:1:87","nodeType":"YulLiteral","src":"246:1:87","type":"","value":"0"},{"kind":"number","nativeSrc":"249:4:87","nodeType":"YulLiteral","src":"249:4:87","type":"","value":"0x24"}],"functionName":{"name":"revert","nativeSrc":"239:6:87","nodeType":"YulIdentifier","src":"239:6:87"},"nativeSrc":"239:15:87","nodeType":"YulFunctionCall","src":"239:15:87"},"nativeSrc":"239:15:87","nodeType":"YulExpressionStatement","src":"239:15:87"}]},"name":"panic_error_0x41","nativeSrc":"133:127:87","nodeType":"YulFunctionDefinition","src":"133:127:87"},{"body":{"nativeSrc":"311:207:87","nodeType":"YulBlock","src":"311:207:87","statements":[{"nativeSrc":"321:19:87","nodeType":"YulAssignment","src":"321:19:87","value":{"arguments":[{"kind":"number","nativeSrc":"337:2:87","nodeType":"YulLiteral","src":"337:2:87","type":"","value":"64"}],"functionName":{"name":"mload","nativeSrc":"331:5:87","nodeType":"YulIdentifier","src":"331:5:87"},"nativeSrc":"331:9:87","nodeType":"YulFunctionCall","src":"331:9:87"},"variableNames":[{"name":"memPtr","nativeSrc":"321:6:87","nodeType":"YulIdentifier","src":"321:6:87"}]},{"nativeSrc":"349:35:87","nodeType":"YulVariableDeclaration","src":"349:35:87","value":{"arguments":[{"name":"memPtr","nativeSrc":"371:6:87","nodeType":"YulIdentifier","src":"371:6:87"},{"kind":"number","nativeSrc":"379:4:87","nodeType":"YulLiteral","src":"379:4:87","type":"","value":"0x60"}],"functionName":{"name":"add","nativeSrc":"367:3:87","nodeType":"YulIdentifier","src":"367:3:87"},"nativeSrc":"367:17:87","nodeType":"YulFunctionCall","src":"367:17:87"},"variables":[{"name":"newFreePtr","nativeSrc":"353:10:87","nodeType":"YulTypedName","src":"353:10:87","type":""}]},{"body":{"nativeSrc":"459:22:87","nodeType":"YulBlock","src":"459:22:87","statements":[{"expression":{"arguments":[],"functionName":{"name":"panic_error_0x41","nativeSrc":"461:16:87","nodeType":"YulIdentifier","src":"461:16:87"},"nativeSrc":"461:18:87","nodeType":"YulFunctionCall","src":"461:18:87"},"nativeSrc":"461:18:87","nodeType":"YulExpressionStatement","src":"461:18:87"}]},"condition":{"arguments":[{"arguments":[{"name":"newFreePtr","nativeSrc":"402:10:87","nodeType":"YulIdentifier","src":"402:10:87"},{"kind":"number","nativeSrc":"414:18:87","nodeType":"YulLiteral","src":"414:18:87","type":"","value":"0xffffffffffffffff"}],"functionName":{"name":"gt","nativeSrc":"399:2:87","nodeType":"YulIdentifier","src":"399:2:87"},"nativeSrc":"399:34:87","nodeType":"YulFunctionCall","src":"399:34:87"},{"arguments":[{"name":"newFreePtr","nativeSrc":"438:10:87","nodeType":"YulIdentifier","src":"438:10:87"},{"name":"memPtr","nativeSrc":"450:6:87","nodeType":"YulIdentifier","src":"450:6:87"}],"functionName":{"name":"lt","nativeSrc":"435:2:87","nodeType":"YulIdentifier","src":"435:2:87"},"nativeSrc":"435:22:87","nodeType":"YulFunctionCall","src":"435:22:87"}],"functionName":{"name":"or","nativeSrc":"396:2:87","nodeType":"YulIdentifier","src":"396:2:87"},"nativeSrc":"396:62:87","nodeType":"YulFunctionCall","src":"396:62:87"},"nativeSrc":"393:88:87","nodeType":"YulIf","src":"393:88:87"},{"expression":{"arguments":[{"kind":"number","nativeSrc":"497:2:87","nodeType":"YulLiteral","src":"497:2:87","type":"","value":"64"},{"name":"newFreePtr","nativeSrc":"501:10:87","nodeType":"YulIdentifier","src":"501:10:87"}],"functionName":{"name":"mstore","nativeSrc":"490:6:87","nodeType":"YulIdentifier","src":"490:6:87"},"nativeSrc":"490:22:87","nodeType":"YulFunctionCall","src":"490:22:87"},"nativeSrc":"490:22:87","nodeType":"YulExpressionStatement","src":"490:22:87"}]},"name":"allocate_memory_1565","nativeSrc":"265:253:87","nodeType":"YulFunctionDefinition","returnVariables":[{"name":"memPtr","nativeSrc":"300:6:87","nodeType":"YulTypedName","src":"300:6:87","type":""}],"src":"265:253:87"},{"body":{"nativeSrc":"568:230:87","nodeType":"YulBlock","src":"568:230:87","statements":[{"nativeSrc":"578:19:87","nodeType":"YulAssignment","src":"578:19:87","value":{"arguments":[{"kind":"number","nativeSrc":"594:2:87","nodeType":"YulLiteral","src":"594:2:87","type":"","value":"64"}],"functionName":{"name":"mload","nativeSrc":"588:5:87","nodeType":"YulIdentifier","src":"588:5:87"},"nativeSrc":"588:9:87","nodeType":"YulFunctionCall","src":"588:9:87"},"variableNames":[{"name":"memPtr","nativeSrc":"578:6:87","nodeType":"YulIdentifier","src":"578:6:87"}]},{"nativeSrc":"606:58:87","nodeType":"YulVariableDeclaration","src":"606:58:87","value":{"arguments":[{"name":"memPtr","nativeSrc":"628:6:87","nodeType":"YulIdentifier","src":"628:6:87"},{"arguments":[{"arguments":[{"name":"size","nativeSrc":"644:4:87","nodeType":"YulIdentifier","src":"644:4:87"},{"kind":"number","nativeSrc":"650:2:87","nodeType":"YulLiteral","src":"650:2:87","type":"","value":"31"}],"functionName":{"name":"add","nativeSrc":"640:3:87","nodeType":"YulIdentifier","src":"640:3:87"},"nativeSrc":"640:13:87","nodeType":"YulFunctionCall","src":"640:13:87"},{"arguments":[{"kind":"number","nativeSrc":"659:2:87","nodeType":"YulLiteral","src":"659:2:87","type":"","value":"31"}],"functionName":{"name":"not","nativeSrc":"655:3:87","nodeType":"YulIdentifier","src":"655:3:87"},"nativeSrc":"655:7:87","nodeType":"YulFunctionCall","src":"655:7:87"}],"functionName":{"name":"and","nativeSrc":"636:3:87","nodeType":"YulIdentifier","src":"636:3:87"},"nativeSrc":"636:27:87","nodeType":"YulFunctionCall","src":"636:27:87"}],"functionName":{"name":"add","nativeSrc":"624:3:87","nodeType":"YulIdentifier","src":"624:3:87"},"nativeSrc":"624:40:87","nodeType":"YulFunctionCall","src":"624:40:87"},"variables":[{"name":"newFreePtr","nativeSrc":"610:10:87","nodeType":"YulTypedName","src":"610:10:87","type":""}]},{"body":{"nativeSrc":"739:22:87","nodeType":"YulBlock","src":"739:22:87","statements":[{"expression":{"arguments":[],"functionName":{"name":"panic_error_0x41","nativeSrc":"741:16:87","nodeType":"YulIdentifier","src":"741:16:87"},"nativeSrc":"741:18:87","nodeType":"YulFunctionCall","src":"741:18:87"},"nativeSrc":"741:18:87","nodeType":"YulExpressionStatement","src":"741:18:87"}]},"condition":{"arguments":[{"arguments":[{"name":"newFreePtr","nativeSrc":"682:10:87","nodeType":"YulIdentifier","src":"682:10:87"},{"kind":"number","nativeSrc":"694:18:87","nodeType":"YulLiteral","src":"694:18:87","type":"","value":"0xffffffffffffffff"}],"functionName":{"name":"gt","nativeSrc":"679:2:87","nodeType":"YulIdentifier","src":"679:2:87"},"nativeSrc":"679:34:87","nodeType":"YulFunctionCall","src":"679:34:87"},{"arguments":[{"name":"newFreePtr","nativeSrc":"718:10:87","nodeType":"YulIdentifier","src":"718:10:87"},{"name":"memPtr","nativeSrc":"730:6:87","nodeType":"YulIdentifier","src":"730:6:87"}],"functionName":{"name":"lt","nativeSrc":"715:2:87","nodeType":"YulIdentifier","src":"715:2:87"},"nativeSrc":"715:22:87","nodeType":"YulFunctionCall","src":"715:22:87"}],"functionName":{"name":"or","nativeSrc":"676:2:87","nodeType":"YulIdentifier","src":"676:2:87"},"nativeSrc":"676:62:87","nodeType":"YulFunctionCall","src":"676:62:87"},"nativeSrc":"673:88:87","nodeType":"YulIf","src":"673:88:87"},{"expression":{"arguments":[{"kind":"number","nativeSrc":"777:2:87","nodeType":"YulLiteral","src":"777:2:87","type":"","value":"64"},{"name":"newFreePtr","nativeSrc":"781:10:87","nodeType":"YulIdentifier","src":"781:10:87"}],"functionName":{"name":"mstore","nativeSrc":"770:6:87","nodeType":"YulIdentifier","src":"770:6:87"},"nativeSrc":"770:22:87","nodeType":"YulFunctionCall","src":"770:22:87"},"nativeSrc":"770:22:87","nodeType":"YulExpressionStatement","src":"770:22:87"}]},"name":"allocate_memory","nativeSrc":"523:275:87","nodeType":"YulFunctionDefinition","parameters":[{"name":"size","nativeSrc":"548:4:87","nodeType":"YulTypedName","src":"548:4:87","type":""}],"returnVariables":[{"name":"memPtr","nativeSrc":"557:6:87","nodeType":"YulTypedName","src":"557:6:87","type":""}],"src":"523:275:87"},{"body":{"nativeSrc":"860:129:87","nodeType":"YulBlock","src":"860:129:87","statements":[{"body":{"nativeSrc":"904:22:87","nodeType":"YulBlock","src":"904:22:87","statements":[{"expression":{"arguments":[],"functionName":{"name":"panic_error_0x41","nativeSrc":"906:16:87","nodeType":"YulIdentifier","src":"906:16:87"},"nativeSrc":"906:18:87","nodeType":"YulFunctionCall","src":"906:18:87"},"nativeSrc":"906:18:87","nodeType":"YulExpressionStatement","src":"906:18:87"}]},"condition":{"arguments":[{"name":"length","nativeSrc":"876:6:87","nodeType":"YulIdentifier","src":"876:6:87"},{"kind":"number","nativeSrc":"884:18:87","nodeType":"YulLiteral","src":"884:18:87","type":"","value":"0xffffffffffffffff"}],"functionName":{"name":"gt","nativeSrc":"873:2:87","nodeType":"YulIdentifier","src":"873:2:87"},"nativeSrc":"873:30:87","nodeType":"YulFunctionCall","src":"873:30:87"},"nativeSrc":"870:56:87","nodeType":"YulIf","src":"870:56:87"},{"nativeSrc":"935:48:87","nodeType":"YulAssignment","src":"935:48:87","value":{"arguments":[{"arguments":[{"arguments":[{"name":"length","nativeSrc":"955:6:87","nodeType":"YulIdentifier","src":"955:6:87"},{"kind":"number","nativeSrc":"963:2:87","nodeType":"YulLiteral","src":"963:2:87","type":"","value":"31"}],"functionName":{"name":"add","nativeSrc":"951:3:87","nodeType":"YulIdentifier","src":"951:3:87"},"nativeSrc":"951:15:87","nodeType":"YulFunctionCall","src":"951:15:87"},{"arguments":[{"kind":"number","nativeSrc":"972:2:87","nodeType":"YulLiteral","src":"972:2:87","type":"","value":"31"}],"functionName":{"name":"not","nativeSrc":"968:3:87","nodeType":"YulIdentifier","src":"968:3:87"},"nativeSrc":"968:7:87","nodeType":"YulFunctionCall","src":"968:7:87"}],"functionName":{"name":"and","nativeSrc":"947:3:87","nodeType":"YulIdentifier","src":"947:3:87"},"nativeSrc":"947:29:87","nodeType":"YulFunctionCall","src":"947:29:87"},{"kind":"number","nativeSrc":"978:4:87","nodeType":"YulLiteral","src":"978:4:87","type":"","value":"0x20"}],"functionName":{"name":"add","nativeSrc":"943:3:87","nodeType":"YulIdentifier","src":"943:3:87"},"nativeSrc":"943:40:87","nodeType":"YulFunctionCall","src":"943:40:87"},"variableNames":[{"name":"size","nativeSrc":"935:4:87","nodeType":"YulIdentifier","src":"935:4:87"}]}]},"name":"array_allocation_size_bytes","nativeSrc":"803:186:87","nodeType":"YulFunctionDefinition","parameters":[{"name":"length","nativeSrc":"840:6:87","nodeType":"YulTypedName","src":"840:6:87","type":""}],"returnVariables":[{"name":"size","nativeSrc":"851:4:87","nodeType":"YulTypedName","src":"851:4:87","type":""}],"src":"803:186:87"},{"body":{"nativeSrc":"1046:434:87","nodeType":"YulBlock","src":"1046:434:87","statements":[{"body":{"nativeSrc":"1095:16:87","nodeType":"YulBlock","src":"1095:16:87","statements":[{"expression":{"arguments":[{"kind":"number","nativeSrc":"1104:1:87","nodeType":"YulLiteral","src":"1104:1:87","type":"","value":"0"},{"kind":"number","nativeSrc":"1107:1:87","nodeType":"YulLiteral","src":"1107:1:87","type":"","value":"0"}],"functionName":{"name":"revert","nativeSrc":"1097:6:87","nodeType":"YulIdentifier","src":"1097:6:87"},"nativeSrc":"1097:12:87","nodeType":"YulFunctionCall","src":"1097:12:87"},"nativeSrc":"1097:12:87","nodeType":"YulExpressionStatement","src":"1097:12:87"}]},"condition":{"arguments":[{"arguments":[{"arguments":[{"name":"offset","nativeSrc":"1074:6:87","nodeType":"YulIdentifier","src":"1074:6:87"},{"kind":"number","nativeSrc":"1082:4:87","nodeType":"YulLiteral","src":"1082:4:87","type":"","value":"0x1f"}],"functionName":{"name":"add","nativeSrc":"1070:3:87","nodeType":"YulIdentifier","src":"1070:3:87"},"nativeSrc":"1070:17:87","nodeType":"YulFunctionCall","src":"1070:17:87"},{"name":"end","nativeSrc":"1089:3:87","nodeType":"YulIdentifier","src":"1089:3:87"}],"functionName":{"name":"slt","nativeSrc":"1066:3:87","nodeType":"YulIdentifier","src":"1066:3:87"},"nativeSrc":"1066:27:87","nodeType":"YulFunctionCall","src":"1066:27:87"}],"functionName":{"name":"iszero","nativeSrc":"1059:6:87","nodeType":"YulIdentifier","src":"1059:6:87"},"nativeSrc":"1059:35:87","nodeType":"YulFunctionCall","src":"1059:35:87"},"nativeSrc":"1056:55:87","nodeType":"YulIf","src":"1056:55:87"},{"nativeSrc":"1120:34:87","nodeType":"YulVariableDeclaration","src":"1120:34:87","value":{"arguments":[{"name":"offset","nativeSrc":"1147:6:87","nodeType":"YulIdentifier","src":"1147:6:87"}],"functionName":{"name":"calldataload","nativeSrc":"1134:12:87","nodeType":"YulIdentifier","src":"1134:12:87"},"nativeSrc":"1134:20:87","nodeType":"YulFunctionCall","src":"1134:20:87"},"variables":[{"name":"length","nativeSrc":"1124:6:87","nodeType":"YulTypedName","src":"1124:6:87","type":""}]},{"nativeSrc":"1163:67:87","nodeType":"YulVariableDeclaration","src":"1163:67:87","value":{"arguments":[{"arguments":[{"name":"length","nativeSrc":"1222:6:87","nodeType":"YulIdentifier","src":"1222:6:87"}],"functionName":{"name":"array_allocation_size_bytes","nativeSrc":"1194:27:87","nodeType":"YulIdentifier","src":"1194:27:87"},"nativeSrc":"1194:35:87","nodeType":"YulFunctionCall","src":"1194:35:87"}],"functionName":{"name":"allocate_memory","nativeSrc":"1178:15:87","nodeType":"YulIdentifier","src":"1178:15:87"},"nativeSrc":"1178:52:87","nodeType":"YulFunctionCall","src":"1178:52:87"},"variables":[{"name":"array_1","nativeSrc":"1167:7:87","nodeType":"YulTypedName","src":"1167:7:87","type":""}]},{"expression":{"arguments":[{"name":"array_1","nativeSrc":"1246:7:87","nodeType":"YulIdentifier","src":"1246:7:87"},{"name":"length","nativeSrc":"1255:6:87","nodeType":"YulIdentifier","src":"1255:6:87"}],"functionName":{"name":"mstore","nativeSrc":"1239:6:87","nodeType":"YulIdentifier","src":"1239:6:87"},"nativeSrc":"1239:23:87","nodeType":"YulFunctionCall","src":"1239:23:87"},"nativeSrc":"1239:23:87","nodeType":"YulExpressionStatement","src":"1239:23:87"},{"body":{"nativeSrc":"1314:16:87","nodeType":"YulBlock","src":"1314:16:87","statements":[{"expression":{"arguments":[{"kind":"number","nativeSrc":"1323:1:87","nodeType":"YulLiteral","src":"1323:1:87","type":"","value":"0"},{"kind":"number","nativeSrc":"1326:1:87","nodeType":"YulLiteral","src":"1326:1:87","type":"","value":"0"}],"functionName":{"name":"revert","nativeSrc":"1316:6:87","nodeType":"YulIdentifier","src":"1316:6:87"},"nativeSrc":"1316:12:87","nodeType":"YulFunctionCall","src":"1316:12:87"},"nativeSrc":"1316:12:87","nodeType":"YulExpressionStatement","src":"1316:12:87"}]},"condition":{"arguments":[{"arguments":[{"arguments":[{"name":"offset","nativeSrc":"1285:6:87","nodeType":"YulIdentifier","src":"1285:6:87"},{"name":"length","nativeSrc":"1293:6:87","nodeType":"YulIdentifier","src":"1293:6:87"}],"functionName":{"name":"add","nativeSrc":"1281:3:87","nodeType":"YulIdentifier","src":"1281:3:87"},"nativeSrc":"1281:19:87","nodeType":"YulFunctionCall","src":"1281:19:87"},{"kind":"number","nativeSrc":"1302:4:87","nodeType":"YulLiteral","src":"1302:4:87","type":"","value":"0x20"}],"functionName":{"name":"add","nativeSrc":"1277:3:87","nodeType":"YulIdentifier","src":"1277:3:87"},"nativeSrc":"1277:30:87","nodeType":"YulFunctionCall","src":"1277:30:87"},{"name":"end","nativeSrc":"1309:3:87","nodeType":"YulIdentifier","src":"1309:3:87"}],"functionName":{"name":"gt","nativeSrc":"1274:2:87","nodeType":"YulIdentifier","src":"1274:2:87"},"nativeSrc":"1274:39:87","nodeType":"YulFunctionCall","src":"1274:39:87"},"nativeSrc":"1271:59:87","nodeType":"YulIf","src":"1271:59:87"},{"expression":{"arguments":[{"arguments":[{"name":"array_1","nativeSrc":"1356:7:87","nodeType":"YulIdentifier","src":"1356:7:87"},{"kind":"number","nativeSrc":"1365:4:87","nodeType":"YulLiteral","src":"1365:4:87","type":"","value":"0x20"}],"functionName":{"name":"add","nativeSrc":"1352:3:87","nodeType":"YulIdentifier","src":"1352:3:87"},"nativeSrc":"1352:18:87","nodeType":"YulFunctionCall","src":"1352:18:87"},{"arguments":[{"name":"offset","nativeSrc":"1376:6:87","nodeType":"YulIdentifier","src":"1376:6:87"},{"kind":"number","nativeSrc":"1384:4:87","nodeType":"YulLiteral","src":"1384:4:87","type":"","value":"0x20"}],"functionName":{"name":"add","nativeSrc":"1372:3:87","nodeType":"YulIdentifier","src":"1372:3:87"},"nativeSrc":"1372:17:87","nodeType":"YulFunctionCall","src":"1372:17:87"},{"name":"length","nativeSrc":"1391:6:87","nodeType":"YulIdentifier","src":"1391:6:87"}],"functionName":{"name":"calldatacopy","nativeSrc":"1339:12:87","nodeType":"YulIdentifier","src":"1339:12:87"},"nativeSrc":"1339:59:87","nodeType":"YulFunctionCall","src":"1339:59:87"},"nativeSrc":"1339:59:87","nodeType":"YulExpressionStatement","src":"1339:59:87"},{"expression":{"arguments":[{"arguments":[{"arguments":[{"name":"array_1","nativeSrc":"1422:7:87","nodeType":"YulIdentifier","src":"1422:7:87"},{"name":"length","nativeSrc":"1431:6:87","nodeType":"YulIdentifier","src":"1431:6:87"}],"functionName":{"name":"add","nativeSrc":"1418:3:87","nodeType":"YulIdentifier","src":"1418:3:87"},"nativeSrc":"1418:20:87","nodeType":"YulFunctionCall","src":"1418:20:87"},{"kind":"number","nativeSrc":"1440:4:87","nodeType":"YulLiteral","src":"1440:4:87","type":"","value":"0x20"}],"functionName":{"name":"add","nativeSrc":"1414:3:87","nodeType":"YulIdentifier","src":"1414:3:87"},"nativeSrc":"1414:31:87","nodeType":"YulFunctionCall","src":"1414:31:87"},{"kind":"number","nativeSrc":"1447:1:87","nodeType":"YulLiteral","src":"1447:1:87","type":"","value":"0"}],"functionName":{"name":"mstore","nativeSrc":"1407:6:87","nodeType":"YulIdentifier","src":"1407:6:87"},"nativeSrc":"1407:42:87","nodeType":"YulFunctionCall","src":"1407:42:87"},"nativeSrc":"1407:42:87","nodeType":"YulExpressionStatement","src":"1407:42:87"},{"nativeSrc":"1458:16:87","nodeType":"YulAssignment","src":"1458:16:87","value":{"name":"array_1","nativeSrc":"1467:7:87","nodeType":"YulIdentifier","src":"1467:7:87"},"variableNames":[{"name":"array","nativeSrc":"1458:5:87","nodeType":"YulIdentifier","src":"1458:5:87"}]}]},"name":"abi_decode_bytes","nativeSrc":"994:486:87","nodeType":"YulFunctionDefinition","parameters":[{"name":"offset","nativeSrc":"1020:6:87","nodeType":"YulTypedName","src":"1020:6:87","type":""},{"name":"end","nativeSrc":"1028:3:87","nodeType":"YulTypedName","src":"1028:3:87","type":""}],"returnVariables":[{"name":"array","nativeSrc":"1036:5:87","nodeType":"YulTypedName","src":"1036:5:87","type":""}],"src":"994:486:87"},{"body":{"nativeSrc":"1579:357:87","nodeType":"YulBlock","src":"1579:357:87","statements":[{"body":{"nativeSrc":"1625:16:87","nodeType":"YulBlock","src":"1625:16:87","statements":[{"expression":{"arguments":[{"kind":"number","nativeSrc":"1634:1:87","nodeType":"YulLiteral","src":"1634:1:87","type":"","value":"0"},{"kind":"number","nativeSrc":"1637:1:87","nodeType":"YulLiteral","src":"1637:1:87","type":"","value":"0"}],"functionName":{"name":"revert","nativeSrc":"1627:6:87","nodeType":"YulIdentifier","src":"1627:6:87"},"nativeSrc":"1627:12:87","nodeType":"YulFunctionCall","src":"1627:12:87"},"nativeSrc":"1627:12:87","nodeType":"YulExpressionStatement","src":"1627:12:87"}]},"condition":{"arguments":[{"arguments":[{"name":"dataEnd","nativeSrc":"1600:7:87","nodeType":"YulIdentifier","src":"1600:7:87"},{"name":"headStart","nativeSrc":"1609:9:87","nodeType":"YulIdentifier","src":"1609:9:87"}],"functionName":{"name":"sub","nativeSrc":"1596:3:87","nodeType":"YulIdentifier","src":"1596:3:87"},"nativeSrc":"1596:23:87","nodeType":"YulFunctionCall","src":"1596:23:87"},{"kind":"number","nativeSrc":"1621:2:87","nodeType":"YulLiteral","src":"1621:2:87","type":"","value":"64"}],"functionName":{"name":"slt","nativeSrc":"1592:3:87","nodeType":"YulIdentifier","src":"1592:3:87"},"nativeSrc":"1592:32:87","nodeType":"YulFunctionCall","src":"1592:32:87"},"nativeSrc":"1589:52:87","nodeType":"YulIf","src":"1589:52:87"},{"nativeSrc":"1650:36:87","nodeType":"YulVariableDeclaration","src":"1650:36:87","value":{"arguments":[{"name":"headStart","nativeSrc":"1676:9:87","nodeType":"YulIdentifier","src":"1676:9:87"}],"functionName":{"name":"calldataload","nativeSrc":"1663:12:87","nodeType":"YulIdentifier","src":"1663:12:87"},"nativeSrc":"1663:23:87","nodeType":"YulFunctionCall","src":"1663:23:87"},"variables":[{"name":"value","nativeSrc":"1654:5:87","nodeType":"YulTypedName","src":"1654:5:87","type":""}]},{"expression":{"arguments":[{"name":"value","nativeSrc":"1718:5:87","nodeType":"YulIdentifier","src":"1718:5:87"}],"functionName":{"name":"validator_revert_uint8","nativeSrc":"1695:22:87","nodeType":"YulIdentifier","src":"1695:22:87"},"nativeSrc":"1695:29:87","nodeType":"YulFunctionCall","src":"1695:29:87"},"nativeSrc":"1695:29:87","nodeType":"YulExpressionStatement","src":"1695:29:87"},{"nativeSrc":"1733:15:87","nodeType":"YulAssignment","src":"1733:15:87","value":{"name":"value","nativeSrc":"1743:5:87","nodeType":"YulIdentifier","src":"1743:5:87"},"variableNames":[{"name":"value0","nativeSrc":"1733:6:87","nodeType":"YulIdentifier","src":"1733:6:87"}]},{"nativeSrc":"1757:46:87","nodeType":"YulVariableDeclaration","src":"1757:46:87","value":{"arguments":[{"arguments":[{"name":"headStart","nativeSrc":"1788:9:87","nodeType":"YulIdentifier","src":"1788:9:87"},{"kind":"number","nativeSrc":"1799:2:87","nodeType":"YulLiteral","src":"1799:2:87","type":"","value":"32"}],"functionName":{"name":"add","nativeSrc":"1784:3:87","nodeType":"YulIdentifier","src":"1784:3:87"},"nativeSrc":"1784:18:87","nodeType":"YulFunctionCall","src":"1784:18:87"}],"functionName":{"name":"calldataload","nativeSrc":"1771:12:87","nodeType":"YulIdentifier","src":"1771:12:87"},"nativeSrc":"1771:32:87","nodeType":"YulFunctionCall","src":"1771:32:87"},"variables":[{"name":"offset","nativeSrc":"1761:6:87","nodeType":"YulTypedName","src":"1761:6:87","type":""}]},{"body":{"nativeSrc":"1846:16:87","nodeType":"YulBlock","src":"1846:16:87","statements":[{"expression":{"arguments":[{"kind":"number","nativeSrc":"1855:1:87","nodeType":"YulLiteral","src":"1855:1:87","type":"","value":"0"},{"kind":"number","nativeSrc":"1858:1:87","nodeType":"YulLiteral","src":"1858:1:87","type":"","value":"0"}],"functionName":{"name":"revert","nativeSrc":"1848:6:87","nodeType":"YulIdentifier","src":"1848:6:87"},"nativeSrc":"1848:12:87","nodeType":"YulFunctionCall","src":"1848:12:87"},"nativeSrc":"1848:12:87","nodeType":"YulExpressionStatement","src":"1848:12:87"}]},"condition":{"arguments":[{"name":"offset","nativeSrc":"1818:6:87","nodeType":"YulIdentifier","src":"1818:6:87"},{"kind":"number","nativeSrc":"1826:18:87","nodeType":"YulLiteral","src":"1826:18:87","type":"","value":"0xffffffffffffffff"}],"functionName":{"name":"gt","nativeSrc":"1815:2:87","nodeType":"YulIdentifier","src":"1815:2:87"},"nativeSrc":"1815:30:87","nodeType":"YulFunctionCall","src":"1815:30:87"},"nativeSrc":"1812:50:87","nodeType":"YulIf","src":"1812:50:87"},{"nativeSrc":"1871:59:87","nodeType":"YulAssignment","src":"1871:59:87","value":{"arguments":[{"arguments":[{"name":"headStart","nativeSrc":"1902:9:87","nodeType":"YulIdentifier","src":"1902:9:87"},{"name":"offset","nativeSrc":"1913:6:87","nodeType":"YulIdentifier","src":"1913:6:87"}],"functionName":{"name":"add","nativeSrc":"1898:3:87","nodeType":"YulIdentifier","src":"1898:3:87"},"nativeSrc":"1898:22:87","nodeType":"YulFunctionCall","src":"1898:22:87"},{"name":"dataEnd","nativeSrc":"1922:7:87","nodeType":"YulIdentifier","src":"1922:7:87"}],"functionName":{"name":"abi_decode_bytes","nativeSrc":"1881:16:87","nodeType":"YulIdentifier","src":"1881:16:87"},"nativeSrc":"1881:49:87","nodeType":"YulFunctionCall","src":"1881:49:87"},"variableNames":[{"name":"value1","nativeSrc":"1871:6:87","nodeType":"YulIdentifier","src":"1871:6:87"}]}]},"name":"abi_decode_tuple_t_uint8t_bytes_memory_ptr","nativeSrc":"1485:451:87","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nativeSrc":"1537:9:87","nodeType":"YulTypedName","src":"1537:9:87","type":""},{"name":"dataEnd","nativeSrc":"1548:7:87","nodeType":"YulTypedName","src":"1548:7:87","type":""}],"returnVariables":[{"name":"value0","nativeSrc":"1560:6:87","nodeType":"YulTypedName","src":"1560:6:87","type":""},{"name":"value1","nativeSrc":"1568:6:87","nodeType":"YulTypedName","src":"1568:6:87","type":""}],"src":"1485:451:87"},{"body":{"nativeSrc":"1990:239:87","nodeType":"YulBlock","src":"1990:239:87","statements":[{"nativeSrc":"2000:26:87","nodeType":"YulVariableDeclaration","src":"2000:26:87","value":{"arguments":[{"name":"value","nativeSrc":"2020:5:87","nodeType":"YulIdentifier","src":"2020:5:87"}],"functionName":{"name":"mload","nativeSrc":"2014:5:87","nodeType":"YulIdentifier","src":"2014:5:87"},"nativeSrc":"2014:12:87","nodeType":"YulFunctionCall","src":"2014:12:87"},"variables":[{"name":"length","nativeSrc":"2004:6:87","nodeType":"YulTypedName","src":"2004:6:87","type":""}]},{"expression":{"arguments":[{"name":"pos","nativeSrc":"2042:3:87","nodeType":"YulIdentifier","src":"2042:3:87"},{"name":"length","nativeSrc":"2047:6:87","nodeType":"YulIdentifier","src":"2047:6:87"}],"functionName":{"name":"mstore","nativeSrc":"2035:6:87","nodeType":"YulIdentifier","src":"2035:6:87"},"nativeSrc":"2035:19:87","nodeType":"YulFunctionCall","src":"2035:19:87"},"nativeSrc":"2035:19:87","nodeType":"YulExpressionStatement","src":"2035:19:87"},{"expression":{"arguments":[{"arguments":[{"name":"pos","nativeSrc":"2073:3:87","nodeType":"YulIdentifier","src":"2073:3:87"},{"kind":"number","nativeSrc":"2078:4:87","nodeType":"YulLiteral","src":"2078:4:87","type":"","value":"0x20"}],"functionName":{"name":"add","nativeSrc":"2069:3:87","nodeType":"YulIdentifier","src":"2069:3:87"},"nativeSrc":"2069:14:87","nodeType":"YulFunctionCall","src":"2069:14:87"},{"arguments":[{"name":"value","nativeSrc":"2089:5:87","nodeType":"YulIdentifier","src":"2089:5:87"},{"kind":"number","nativeSrc":"2096:4:87","nodeType":"YulLiteral","src":"2096:4:87","type":"","value":"0x20"}],"functionName":{"name":"add","nativeSrc":"2085:3:87","nodeType":"YulIdentifier","src":"2085:3:87"},"nativeSrc":"2085:16:87","nodeType":"YulFunctionCall","src":"2085:16:87"},{"name":"length","nativeSrc":"2103:6:87","nodeType":"YulIdentifier","src":"2103:6:87"}],"functionName":{"name":"mcopy","nativeSrc":"2063:5:87","nodeType":"YulIdentifier","src":"2063:5:87"},"nativeSrc":"2063:47:87","nodeType":"YulFunctionCall","src":"2063:47:87"},"nativeSrc":"2063:47:87","nodeType":"YulExpressionStatement","src":"2063:47:87"},{"expression":{"arguments":[{"arguments":[{"arguments":[{"name":"pos","nativeSrc":"2134:3:87","nodeType":"YulIdentifier","src":"2134:3:87"},{"name":"length","nativeSrc":"2139:6:87","nodeType":"YulIdentifier","src":"2139:6:87"}],"functionName":{"name":"add","nativeSrc":"2130:3:87","nodeType":"YulIdentifier","src":"2130:3:87"},"nativeSrc":"2130:16:87","nodeType":"YulFunctionCall","src":"2130:16:87"},{"kind":"number","nativeSrc":"2148:4:87","nodeType":"YulLiteral","src":"2148:4:87","type":"","value":"0x20"}],"functionName":{"name":"add","nativeSrc":"2126:3:87","nodeType":"YulIdentifier","src":"2126:3:87"},"nativeSrc":"2126:27:87","nodeType":"YulFunctionCall","src":"2126:27:87"},{"kind":"number","nativeSrc":"2155:1:87","nodeType":"YulLiteral","src":"2155:1:87","type":"","value":"0"}],"functionName":{"name":"mstore","nativeSrc":"2119:6:87","nodeType":"YulIdentifier","src":"2119:6:87"},"nativeSrc":"2119:38:87","nodeType":"YulFunctionCall","src":"2119:38:87"},"nativeSrc":"2119:38:87","nodeType":"YulExpressionStatement","src":"2119:38:87"},{"nativeSrc":"2166:57:87","nodeType":"YulAssignment","src":"2166:57:87","value":{"arguments":[{"arguments":[{"name":"pos","nativeSrc":"2181:3:87","nodeType":"YulIdentifier","src":"2181:3:87"},{"arguments":[{"arguments":[{"name":"length","nativeSrc":"2194:6:87","nodeType":"YulIdentifier","src":"2194:6:87"},{"kind":"number","nativeSrc":"2202:2:87","nodeType":"YulLiteral","src":"2202:2:87","type":"","value":"31"}],"functionName":{"name":"add","nativeSrc":"2190:3:87","nodeType":"YulIdentifier","src":"2190:3:87"},"nativeSrc":"2190:15:87","nodeType":"YulFunctionCall","src":"2190:15:87"},{"arguments":[{"kind":"number","nativeSrc":"2211:2:87","nodeType":"YulLiteral","src":"2211:2:87","type":"","value":"31"}],"functionName":{"name":"not","nativeSrc":"2207:3:87","nodeType":"YulIdentifier","src":"2207:3:87"},"nativeSrc":"2207:7:87","nodeType":"YulFunctionCall","src":"2207:7:87"}],"functionName":{"name":"and","nativeSrc":"2186:3:87","nodeType":"YulIdentifier","src":"2186:3:87"},"nativeSrc":"2186:29:87","nodeType":"YulFunctionCall","src":"2186:29:87"}],"functionName":{"name":"add","nativeSrc":"2177:3:87","nodeType":"YulIdentifier","src":"2177:3:87"},"nativeSrc":"2177:39:87","nodeType":"YulFunctionCall","src":"2177:39:87"},{"kind":"number","nativeSrc":"2218:4:87","nodeType":"YulLiteral","src":"2218:4:87","type":"","value":"0x20"}],"functionName":{"name":"add","nativeSrc":"2173:3:87","nodeType":"YulIdentifier","src":"2173:3:87"},"nativeSrc":"2173:50:87","nodeType":"YulFunctionCall","src":"2173:50:87"},"variableNames":[{"name":"end","nativeSrc":"2166:3:87","nodeType":"YulIdentifier","src":"2166:3:87"}]}]},"name":"abi_encode_bytes","nativeSrc":"1941:288:87","nodeType":"YulFunctionDefinition","parameters":[{"name":"value","nativeSrc":"1967:5:87","nodeType":"YulTypedName","src":"1967:5:87","type":""},{"name":"pos","nativeSrc":"1974:3:87","nodeType":"YulTypedName","src":"1974:3:87","type":""}],"returnVariables":[{"name":"end","nativeSrc":"1982:3:87","nodeType":"YulTypedName","src":"1982:3:87","type":""}],"src":"1941:288:87"},{"body":{"nativeSrc":"2353:98:87","nodeType":"YulBlock","src":"2353:98:87","statements":[{"expression":{"arguments":[{"name":"headStart","nativeSrc":"2370:9:87","nodeType":"YulIdentifier","src":"2370:9:87"},{"kind":"number","nativeSrc":"2381:2:87","nodeType":"YulLiteral","src":"2381:2:87","type":"","value":"32"}],"functionName":{"name":"mstore","nativeSrc":"2363:6:87","nodeType":"YulIdentifier","src":"2363:6:87"},"nativeSrc":"2363:21:87","nodeType":"YulFunctionCall","src":"2363:21:87"},"nativeSrc":"2363:21:87","nodeType":"YulExpressionStatement","src":"2363:21:87"},{"nativeSrc":"2393:52:87","nodeType":"YulAssignment","src":"2393:52:87","value":{"arguments":[{"name":"value0","nativeSrc":"2418:6:87","nodeType":"YulIdentifier","src":"2418:6:87"},{"arguments":[{"name":"headStart","nativeSrc":"2430:9:87","nodeType":"YulIdentifier","src":"2430:9:87"},{"kind":"number","nativeSrc":"2441:2:87","nodeType":"YulLiteral","src":"2441:2:87","type":"","value":"32"}],"functionName":{"name":"add","nativeSrc":"2426:3:87","nodeType":"YulIdentifier","src":"2426:3:87"},"nativeSrc":"2426:18:87","nodeType":"YulFunctionCall","src":"2426:18:87"}],"functionName":{"name":"abi_encode_bytes","nativeSrc":"2401:16:87","nodeType":"YulIdentifier","src":"2401:16:87"},"nativeSrc":"2401:44:87","nodeType":"YulFunctionCall","src":"2401:44:87"},"variableNames":[{"name":"tail","nativeSrc":"2393:4:87","nodeType":"YulIdentifier","src":"2393:4:87"}]}]},"name":"abi_encode_tuple_t_bytes_memory_ptr__to_t_bytes_memory_ptr__fromStack_reversed","nativeSrc":"2234:217:87","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nativeSrc":"2322:9:87","nodeType":"YulTypedName","src":"2322:9:87","type":""},{"name":"value0","nativeSrc":"2333:6:87","nodeType":"YulTypedName","src":"2333:6:87","type":""}],"returnVariables":[{"name":"tail","nativeSrc":"2344:4:87","nodeType":"YulTypedName","src":"2344:4:87","type":""}],"src":"2234:217:87"},{"body":{"nativeSrc":"2557:76:87","nodeType":"YulBlock","src":"2557:76:87","statements":[{"nativeSrc":"2567:26:87","nodeType":"YulAssignment","src":"2567:26:87","value":{"arguments":[{"name":"headStart","nativeSrc":"2579:9:87","nodeType":"YulIdentifier","src":"2579:9:87"},{"kind":"number","nativeSrc":"2590:2:87","nodeType":"YulLiteral","src":"2590:2:87","type":"","value":"32"}],"functionName":{"name":"add","nativeSrc":"2575:3:87","nodeType":"YulIdentifier","src":"2575:3:87"},"nativeSrc":"2575:18:87","nodeType":"YulFunctionCall","src":"2575:18:87"},"variableNames":[{"name":"tail","nativeSrc":"2567:4:87","nodeType":"YulIdentifier","src":"2567:4:87"}]},{"expression":{"arguments":[{"name":"headStart","nativeSrc":"2609:9:87","nodeType":"YulIdentifier","src":"2609:9:87"},{"name":"value0","nativeSrc":"2620:6:87","nodeType":"YulIdentifier","src":"2620:6:87"}],"functionName":{"name":"mstore","nativeSrc":"2602:6:87","nodeType":"YulIdentifier","src":"2602:6:87"},"nativeSrc":"2602:25:87","nodeType":"YulFunctionCall","src":"2602:25:87"},"nativeSrc":"2602:25:87","nodeType":"YulExpressionStatement","src":"2602:25:87"}]},"name":"abi_encode_tuple_t_uint256__to_t_uint256__fromStack_reversed","nativeSrc":"2456:177:87","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nativeSrc":"2526:9:87","nodeType":"YulTypedName","src":"2526:9:87","type":""},{"name":"value0","nativeSrc":"2537:6:87","nodeType":"YulTypedName","src":"2537:6:87","type":""}],"returnVariables":[{"name":"tail","nativeSrc":"2548:4:87","nodeType":"YulTypedName","src":"2548:4:87","type":""}],"src":"2456:177:87"},{"body":{"nativeSrc":"2708:110:87","nodeType":"YulBlock","src":"2708:110:87","statements":[{"body":{"nativeSrc":"2754:16:87","nodeType":"YulBlock","src":"2754:16:87","statements":[{"expression":{"arguments":[{"kind":"number","nativeSrc":"2763:1:87","nodeType":"YulLiteral","src":"2763:1:87","type":"","value":"0"},{"kind":"number","nativeSrc":"2766:1:87","nodeType":"YulLiteral","src":"2766:1:87","type":"","value":"0"}],"functionName":{"name":"revert","nativeSrc":"2756:6:87","nodeType":"YulIdentifier","src":"2756:6:87"},"nativeSrc":"2756:12:87","nodeType":"YulFunctionCall","src":"2756:12:87"},"nativeSrc":"2756:12:87","nodeType":"YulExpressionStatement","src":"2756:12:87"}]},"condition":{"arguments":[{"arguments":[{"name":"dataEnd","nativeSrc":"2729:7:87","nodeType":"YulIdentifier","src":"2729:7:87"},{"name":"headStart","nativeSrc":"2738:9:87","nodeType":"YulIdentifier","src":"2738:9:87"}],"functionName":{"name":"sub","nativeSrc":"2725:3:87","nodeType":"YulIdentifier","src":"2725:3:87"},"nativeSrc":"2725:23:87","nodeType":"YulFunctionCall","src":"2725:23:87"},{"kind":"number","nativeSrc":"2750:2:87","nodeType":"YulLiteral","src":"2750:2:87","type":"","value":"32"}],"functionName":{"name":"slt","nativeSrc":"2721:3:87","nodeType":"YulIdentifier","src":"2721:3:87"},"nativeSrc":"2721:32:87","nodeType":"YulFunctionCall","src":"2721:32:87"},"nativeSrc":"2718:52:87","nodeType":"YulIf","src":"2718:52:87"},{"nativeSrc":"2779:33:87","nodeType":"YulAssignment","src":"2779:33:87","value":{"arguments":[{"name":"headStart","nativeSrc":"2802:9:87","nodeType":"YulIdentifier","src":"2802:9:87"}],"functionName":{"name":"calldataload","nativeSrc":"2789:12:87","nodeType":"YulIdentifier","src":"2789:12:87"},"nativeSrc":"2789:23:87","nodeType":"YulFunctionCall","src":"2789:23:87"},"variableNames":[{"name":"value0","nativeSrc":"2779:6:87","nodeType":"YulIdentifier","src":"2779:6:87"}]}]},"name":"abi_decode_tuple_t_uint256","nativeSrc":"2638:180:87","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nativeSrc":"2674:9:87","nodeType":"YulTypedName","src":"2674:9:87","type":""},{"name":"dataEnd","nativeSrc":"2685:7:87","nodeType":"YulTypedName","src":"2685:7:87","type":""}],"returnVariables":[{"name":"value0","nativeSrc":"2697:6:87","nodeType":"YulTypedName","src":"2697:6:87","type":""}],"src":"2638:180:87"},{"body":{"nativeSrc":"2893:216:87","nodeType":"YulBlock","src":"2893:216:87","statements":[{"body":{"nativeSrc":"2939:16:87","nodeType":"YulBlock","src":"2939:16:87","statements":[{"expression":{"arguments":[{"kind":"number","nativeSrc":"2948:1:87","nodeType":"YulLiteral","src":"2948:1:87","type":"","value":"0"},{"kind":"number","nativeSrc":"2951:1:87","nodeType":"YulLiteral","src":"2951:1:87","type":"","value":"0"}],"functionName":{"name":"revert","nativeSrc":"2941:6:87","nodeType":"YulIdentifier","src":"2941:6:87"},"nativeSrc":"2941:12:87","nodeType":"YulFunctionCall","src":"2941:12:87"},"nativeSrc":"2941:12:87","nodeType":"YulExpressionStatement","src":"2941:12:87"}]},"condition":{"arguments":[{"arguments":[{"name":"dataEnd","nativeSrc":"2914:7:87","nodeType":"YulIdentifier","src":"2914:7:87"},{"name":"headStart","nativeSrc":"2923:9:87","nodeType":"YulIdentifier","src":"2923:9:87"}],"functionName":{"name":"sub","nativeSrc":"2910:3:87","nodeType":"YulIdentifier","src":"2910:3:87"},"nativeSrc":"2910:23:87","nodeType":"YulFunctionCall","src":"2910:23:87"},{"kind":"number","nativeSrc":"2935:2:87","nodeType":"YulLiteral","src":"2935:2:87","type":"","value":"32"}],"functionName":{"name":"slt","nativeSrc":"2906:3:87","nodeType":"YulIdentifier","src":"2906:3:87"},"nativeSrc":"2906:32:87","nodeType":"YulFunctionCall","src":"2906:32:87"},"nativeSrc":"2903:52:87","nodeType":"YulIf","src":"2903:52:87"},{"nativeSrc":"2964:36:87","nodeType":"YulVariableDeclaration","src":"2964:36:87","value":{"arguments":[{"name":"headStart","nativeSrc":"2990:9:87","nodeType":"YulIdentifier","src":"2990:9:87"}],"functionName":{"name":"calldataload","nativeSrc":"2977:12:87","nodeType":"YulIdentifier","src":"2977:12:87"},"nativeSrc":"2977:23:87","nodeType":"YulFunctionCall","src":"2977:23:87"},"variables":[{"name":"value","nativeSrc":"2968:5:87","nodeType":"YulTypedName","src":"2968:5:87","type":""}]},{"body":{"nativeSrc":"3063:16:87","nodeType":"YulBlock","src":"3063:16:87","statements":[{"expression":{"arguments":[{"kind":"number","nativeSrc":"3072:1:87","nodeType":"YulLiteral","src":"3072:1:87","type":"","value":"0"},{"kind":"number","nativeSrc":"3075:1:87","nodeType":"YulLiteral","src":"3075:1:87","type":"","value":"0"}],"functionName":{"name":"revert","nativeSrc":"3065:6:87","nodeType":"YulIdentifier","src":"3065:6:87"},"nativeSrc":"3065:12:87","nodeType":"YulFunctionCall","src":"3065:12:87"},"nativeSrc":"3065:12:87","nodeType":"YulExpressionStatement","src":"3065:12:87"}]},"condition":{"arguments":[{"arguments":[{"name":"value","nativeSrc":"3022:5:87","nodeType":"YulIdentifier","src":"3022:5:87"},{"arguments":[{"name":"value","nativeSrc":"3033:5:87","nodeType":"YulIdentifier","src":"3033:5:87"},{"arguments":[{"arguments":[{"kind":"number","nativeSrc":"3048:3:87","nodeType":"YulLiteral","src":"3048:3:87","type":"","value":"160"},{"kind":"number","nativeSrc":"3053:1:87","nodeType":"YulLiteral","src":"3053:1:87","type":"","value":"1"}],"functionName":{"name":"shl","nativeSrc":"3044:3:87","nodeType":"YulIdentifier","src":"3044:3:87"},"nativeSrc":"3044:11:87","nodeType":"YulFunctionCall","src":"3044:11:87"},{"kind":"number","nativeSrc":"3057:1:87","nodeType":"YulLiteral","src":"3057:1:87","type":"","value":"1"}],"functionName":{"name":"sub","nativeSrc":"3040:3:87","nodeType":"YulIdentifier","src":"3040:3:87"},"nativeSrc":"3040:19:87","nodeType":"YulFunctionCall","src":"3040:19:87"}],"functionName":{"name":"and","nativeSrc":"3029:3:87","nodeType":"YulIdentifier","src":"3029:3:87"},"nativeSrc":"3029:31:87","nodeType":"YulFunctionCall","src":"3029:31:87"}],"functionName":{"name":"eq","nativeSrc":"3019:2:87","nodeType":"YulIdentifier","src":"3019:2:87"},"nativeSrc":"3019:42:87","nodeType":"YulFunctionCall","src":"3019:42:87"}],"functionName":{"name":"iszero","nativeSrc":"3012:6:87","nodeType":"YulIdentifier","src":"3012:6:87"},"nativeSrc":"3012:50:87","nodeType":"YulFunctionCall","src":"3012:50:87"},"nativeSrc":"3009:70:87","nodeType":"YulIf","src":"3009:70:87"},{"nativeSrc":"3088:15:87","nodeType":"YulAssignment","src":"3088:15:87","value":{"name":"value","nativeSrc":"3098:5:87","nodeType":"YulIdentifier","src":"3098:5:87"},"variableNames":[{"name":"value0","nativeSrc":"3088:6:87","nodeType":"YulIdentifier","src":"3088:6:87"}]}]},"name":"abi_decode_tuple_t_address","nativeSrc":"2823:286:87","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nativeSrc":"2859:9:87","nodeType":"YulTypedName","src":"2859:9:87","type":""},{"name":"dataEnd","nativeSrc":"2870:7:87","nodeType":"YulTypedName","src":"2870:7:87","type":""}],"returnVariables":[{"name":"value0","nativeSrc":"2882:6:87","nodeType":"YulTypedName","src":"2882:6:87","type":""}],"src":"2823:286:87"},{"body":{"nativeSrc":"3146:95:87","nodeType":"YulBlock","src":"3146:95:87","statements":[{"expression":{"arguments":[{"kind":"number","nativeSrc":"3163:1:87","nodeType":"YulLiteral","src":"3163:1:87","type":"","value":"0"},{"arguments":[{"kind":"number","nativeSrc":"3170:3:87","nodeType":"YulLiteral","src":"3170:3:87","type":"","value":"224"},{"kind":"number","nativeSrc":"3175:10:87","nodeType":"YulLiteral","src":"3175:10:87","type":"","value":"0x4e487b71"}],"functionName":{"name":"shl","nativeSrc":"3166:3:87","nodeType":"YulIdentifier","src":"3166:3:87"},"nativeSrc":"3166:20:87","nodeType":"YulFunctionCall","src":"3166:20:87"}],"functionName":{"name":"mstore","nativeSrc":"3156:6:87","nodeType":"YulIdentifier","src":"3156:6:87"},"nativeSrc":"3156:31:87","nodeType":"YulFunctionCall","src":"3156:31:87"},"nativeSrc":"3156:31:87","nodeType":"YulExpressionStatement","src":"3156:31:87"},{"expression":{"arguments":[{"kind":"number","nativeSrc":"3203:1:87","nodeType":"YulLiteral","src":"3203:1:87","type":"","value":"4"},{"kind":"number","nativeSrc":"3206:4:87","nodeType":"YulLiteral","src":"3206:4:87","type":"","value":"0x21"}],"functionName":{"name":"mstore","nativeSrc":"3196:6:87","nodeType":"YulIdentifier","src":"3196:6:87"},"nativeSrc":"3196:15:87","nodeType":"YulFunctionCall","src":"3196:15:87"},"nativeSrc":"3196:15:87","nodeType":"YulExpressionStatement","src":"3196:15:87"},{"expression":{"arguments":[{"kind":"number","nativeSrc":"3227:1:87","nodeType":"YulLiteral","src":"3227:1:87","type":"","value":"0"},{"kind":"number","nativeSrc":"3230:4:87","nodeType":"YulLiteral","src":"3230:4:87","type":"","value":"0x24"}],"functionName":{"name":"revert","nativeSrc":"3220:6:87","nodeType":"YulIdentifier","src":"3220:6:87"},"nativeSrc":"3220:15:87","nodeType":"YulFunctionCall","src":"3220:15:87"},"nativeSrc":"3220:15:87","nodeType":"YulExpressionStatement","src":"3220:15:87"}]},"name":"panic_error_0x21","nativeSrc":"3114:127:87","nodeType":"YulFunctionDefinition","src":"3114:127:87"},{"body":{"nativeSrc":"3307:418:87","nodeType":"YulBlock","src":"3307:418:87","statements":[{"nativeSrc":"3317:22:87","nodeType":"YulVariableDeclaration","src":"3317:22:87","value":{"arguments":[{"name":"value","nativeSrc":"3333:5:87","nodeType":"YulIdentifier","src":"3333:5:87"}],"functionName":{"name":"mload","nativeSrc":"3327:5:87","nodeType":"YulIdentifier","src":"3327:5:87"},"nativeSrc":"3327:12:87","nodeType":"YulFunctionCall","src":"3327:12:87"},"variables":[{"name":"_1","nativeSrc":"3321:2:87","nodeType":"YulTypedName","src":"3321:2:87","type":""}]},{"body":{"nativeSrc":"3377:111:87","nodeType":"YulBlock","src":"3377:111:87","statements":[{"expression":{"arguments":[{"kind":"number","nativeSrc":"3398:1:87","nodeType":"YulLiteral","src":"3398:1:87","type":"","value":"0"},{"arguments":[{"kind":"number","nativeSrc":"3405:3:87","nodeType":"YulLiteral","src":"3405:3:87","type":"","value":"224"},{"kind":"number","nativeSrc":"3410:10:87","nodeType":"YulLiteral","src":"3410:10:87","type":"","value":"0x4e487b71"}],"functionName":{"name":"shl","nativeSrc":"3401:3:87","nodeType":"YulIdentifier","src":"3401:3:87"},"nativeSrc":"3401:20:87","nodeType":"YulFunctionCall","src":"3401:20:87"}],"functionName":{"name":"mstore","nativeSrc":"3391:6:87","nodeType":"YulIdentifier","src":"3391:6:87"},"nativeSrc":"3391:31:87","nodeType":"YulFunctionCall","src":"3391:31:87"},"nativeSrc":"3391:31:87","nodeType":"YulExpressionStatement","src":"3391:31:87"},{"expression":{"arguments":[{"kind":"number","nativeSrc":"3442:1:87","nodeType":"YulLiteral","src":"3442:1:87","type":"","value":"4"},{"kind":"number","nativeSrc":"3445:4:87","nodeType":"YulLiteral","src":"3445:4:87","type":"","value":"0x21"}],"functionName":{"name":"mstore","nativeSrc":"3435:6:87","nodeType":"YulIdentifier","src":"3435:6:87"},"nativeSrc":"3435:15:87","nodeType":"YulFunctionCall","src":"3435:15:87"},"nativeSrc":"3435:15:87","nodeType":"YulExpressionStatement","src":"3435:15:87"},{"expression":{"arguments":[{"kind":"number","nativeSrc":"3470:1:87","nodeType":"YulLiteral","src":"3470:1:87","type":"","value":"0"},{"kind":"number","nativeSrc":"3473:4:87","nodeType":"YulLiteral","src":"3473:4:87","type":"","value":"0x24"}],"functionName":{"name":"revert","nativeSrc":"3463:6:87","nodeType":"YulIdentifier","src":"3463:6:87"},"nativeSrc":"3463:15:87","nodeType":"YulFunctionCall","src":"3463:15:87"},"nativeSrc":"3463:15:87","nodeType":"YulExpressionStatement","src":"3463:15:87"}]},"condition":{"arguments":[{"arguments":[{"name":"_1","nativeSrc":"3361:2:87","nodeType":"YulIdentifier","src":"3361:2:87"},{"kind":"number","nativeSrc":"3365:1:87","nodeType":"YulLiteral","src":"3365:1:87","type":"","value":"3"}],"functionName":{"name":"lt","nativeSrc":"3358:2:87","nodeType":"YulIdentifier","src":"3358:2:87"},"nativeSrc":"3358:9:87","nodeType":"YulFunctionCall","src":"3358:9:87"}],"functionName":{"name":"iszero","nativeSrc":"3351:6:87","nodeType":"YulIdentifier","src":"3351:6:87"},"nativeSrc":"3351:17:87","nodeType":"YulFunctionCall","src":"3351:17:87"},"nativeSrc":"3348:140:87","nodeType":"YulIf","src":"3348:140:87"},{"expression":{"arguments":[{"name":"pos","nativeSrc":"3504:3:87","nodeType":"YulIdentifier","src":"3504:3:87"},{"name":"_1","nativeSrc":"3509:2:87","nodeType":"YulIdentifier","src":"3509:2:87"}],"functionName":{"name":"mstore","nativeSrc":"3497:6:87","nodeType":"YulIdentifier","src":"3497:6:87"},"nativeSrc":"3497:15:87","nodeType":"YulFunctionCall","src":"3497:15:87"},"nativeSrc":"3497:15:87","nodeType":"YulExpressionStatement","src":"3497:15:87"},{"expression":{"arguments":[{"arguments":[{"name":"pos","nativeSrc":"3532:3:87","nodeType":"YulIdentifier","src":"3532:3:87"},{"kind":"number","nativeSrc":"3537:4:87","nodeType":"YulLiteral","src":"3537:4:87","type":"","value":"0x20"}],"functionName":{"name":"add","nativeSrc":"3528:3:87","nodeType":"YulIdentifier","src":"3528:3:87"},"nativeSrc":"3528:14:87","nodeType":"YulFunctionCall","src":"3528:14:87"},{"arguments":[{"arguments":[{"name":"value","nativeSrc":"3554:5:87","nodeType":"YulIdentifier","src":"3554:5:87"},{"kind":"number","nativeSrc":"3561:4:87","nodeType":"YulLiteral","src":"3561:4:87","type":"","value":"0x20"}],"functionName":{"name":"add","nativeSrc":"3550:3:87","nodeType":"YulIdentifier","src":"3550:3:87"},"nativeSrc":"3550:16:87","nodeType":"YulFunctionCall","src":"3550:16:87"}],"functionName":{"name":"mload","nativeSrc":"3544:5:87","nodeType":"YulIdentifier","src":"3544:5:87"},"nativeSrc":"3544:23:87","nodeType":"YulFunctionCall","src":"3544:23:87"}],"functionName":{"name":"mstore","nativeSrc":"3521:6:87","nodeType":"YulIdentifier","src":"3521:6:87"},"nativeSrc":"3521:47:87","nodeType":"YulFunctionCall","src":"3521:47:87"},"nativeSrc":"3521:47:87","nodeType":"YulExpressionStatement","src":"3521:47:87"},{"nativeSrc":"3577:43:87","nodeType":"YulVariableDeclaration","src":"3577:43:87","value":{"arguments":[{"arguments":[{"name":"value","nativeSrc":"3607:5:87","nodeType":"YulIdentifier","src":"3607:5:87"},{"kind":"number","nativeSrc":"3614:4:87","nodeType":"YulLiteral","src":"3614:4:87","type":"","value":"0x40"}],"functionName":{"name":"add","nativeSrc":"3603:3:87","nodeType":"YulIdentifier","src":"3603:3:87"},"nativeSrc":"3603:16:87","nodeType":"YulFunctionCall","src":"3603:16:87"}],"functionName":{"name":"mload","nativeSrc":"3597:5:87","nodeType":"YulIdentifier","src":"3597:5:87"},"nativeSrc":"3597:23:87","nodeType":"YulFunctionCall","src":"3597:23:87"},"variables":[{"name":"memberValue0","nativeSrc":"3581:12:87","nodeType":"YulTypedName","src":"3581:12:87","type":""}]},{"expression":{"arguments":[{"arguments":[{"name":"pos","nativeSrc":"3640:3:87","nodeType":"YulIdentifier","src":"3640:3:87"},{"kind":"number","nativeSrc":"3645:4:87","nodeType":"YulLiteral","src":"3645:4:87","type":"","value":"0x40"}],"functionName":{"name":"add","nativeSrc":"3636:3:87","nodeType":"YulIdentifier","src":"3636:3:87"},"nativeSrc":"3636:14:87","nodeType":"YulFunctionCall","src":"3636:14:87"},{"kind":"number","nativeSrc":"3652:4:87","nodeType":"YulLiteral","src":"3652:4:87","type":"","value":"0x60"}],"functionName":{"name":"mstore","nativeSrc":"3629:6:87","nodeType":"YulIdentifier","src":"3629:6:87"},"nativeSrc":"3629:28:87","nodeType":"YulFunctionCall","src":"3629:28:87"},"nativeSrc":"3629:28:87","nodeType":"YulExpressionStatement","src":"3629:28:87"},{"nativeSrc":"3666:53:87","nodeType":"YulAssignment","src":"3666:53:87","value":{"arguments":[{"name":"memberValue0","nativeSrc":"3690:12:87","nodeType":"YulIdentifier","src":"3690:12:87"},{"arguments":[{"name":"pos","nativeSrc":"3708:3:87","nodeType":"YulIdentifier","src":"3708:3:87"},{"kind":"number","nativeSrc":"3713:4:87","nodeType":"YulLiteral","src":"3713:4:87","type":"","value":"0x60"}],"functionName":{"name":"add","nativeSrc":"3704:3:87","nodeType":"YulIdentifier","src":"3704:3:87"},"nativeSrc":"3704:14:87","nodeType":"YulFunctionCall","src":"3704:14:87"}],"functionName":{"name":"abi_encode_bytes","nativeSrc":"3673:16:87","nodeType":"YulIdentifier","src":"3673:16:87"},"nativeSrc":"3673:46:87","nodeType":"YulFunctionCall","src":"3673:46:87"},"variableNames":[{"name":"end","nativeSrc":"3666:3:87","nodeType":"YulIdentifier","src":"3666:3:87"}]}]},"name":"abi_encode_struct_SwapConfig","nativeSrc":"3246:479:87","nodeType":"YulFunctionDefinition","parameters":[{"name":"value","nativeSrc":"3284:5:87","nodeType":"YulTypedName","src":"3284:5:87","type":""},{"name":"pos","nativeSrc":"3291:3:87","nodeType":"YulTypedName","src":"3291:3:87","type":""}],"returnVariables":[{"name":"end","nativeSrc":"3299:3:87","nodeType":"YulTypedName","src":"3299:3:87","type":""}],"src":"3246:479:87"},{"body":{"nativeSrc":"3887:110:87","nodeType":"YulBlock","src":"3887:110:87","statements":[{"expression":{"arguments":[{"name":"headStart","nativeSrc":"3904:9:87","nodeType":"YulIdentifier","src":"3904:9:87"},{"kind":"number","nativeSrc":"3915:2:87","nodeType":"YulLiteral","src":"3915:2:87","type":"","value":"32"}],"functionName":{"name":"mstore","nativeSrc":"3897:6:87","nodeType":"YulIdentifier","src":"3897:6:87"},"nativeSrc":"3897:21:87","nodeType":"YulFunctionCall","src":"3897:21:87"},"nativeSrc":"3897:21:87","nodeType":"YulExpressionStatement","src":"3897:21:87"},{"nativeSrc":"3927:64:87","nodeType":"YulAssignment","src":"3927:64:87","value":{"arguments":[{"name":"value0","nativeSrc":"3964:6:87","nodeType":"YulIdentifier","src":"3964:6:87"},{"arguments":[{"name":"headStart","nativeSrc":"3976:9:87","nodeType":"YulIdentifier","src":"3976:9:87"},{"kind":"number","nativeSrc":"3987:2:87","nodeType":"YulLiteral","src":"3987:2:87","type":"","value":"32"}],"functionName":{"name":"add","nativeSrc":"3972:3:87","nodeType":"YulIdentifier","src":"3972:3:87"},"nativeSrc":"3972:18:87","nodeType":"YulFunctionCall","src":"3972:18:87"}],"functionName":{"name":"abi_encode_struct_SwapConfig","nativeSrc":"3935:28:87","nodeType":"YulIdentifier","src":"3935:28:87"},"nativeSrc":"3935:56:87","nodeType":"YulFunctionCall","src":"3935:56:87"},"variableNames":[{"name":"tail","nativeSrc":"3927:4:87","nodeType":"YulIdentifier","src":"3927:4:87"}]}]},"name":"abi_encode_tuple_t_struct$_SwapConfig_$1113_memory_ptr__to_t_struct$_SwapConfig_$1113_memory_ptr__fromStack_reversed","nativeSrc":"3730:267:87","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nativeSrc":"3856:9:87","nodeType":"YulTypedName","src":"3856:9:87","type":""},{"name":"value0","nativeSrc":"3867:6:87","nodeType":"YulTypedName","src":"3867:6:87","type":""}],"returnVariables":[{"name":"tail","nativeSrc":"3878:4:87","nodeType":"YulTypedName","src":"3878:4:87","type":""}],"src":"3730:267:87"},{"body":{"nativeSrc":"4069:206:87","nodeType":"YulBlock","src":"4069:206:87","statements":[{"body":{"nativeSrc":"4115:16:87","nodeType":"YulBlock","src":"4115:16:87","statements":[{"expression":{"arguments":[{"kind":"number","nativeSrc":"4124:1:87","nodeType":"YulLiteral","src":"4124:1:87","type":"","value":"0"},{"kind":"number","nativeSrc":"4127:1:87","nodeType":"YulLiteral","src":"4127:1:87","type":"","value":"0"}],"functionName":{"name":"revert","nativeSrc":"4117:6:87","nodeType":"YulIdentifier","src":"4117:6:87"},"nativeSrc":"4117:12:87","nodeType":"YulFunctionCall","src":"4117:12:87"},"nativeSrc":"4117:12:87","nodeType":"YulExpressionStatement","src":"4117:12:87"}]},"condition":{"arguments":[{"arguments":[{"name":"dataEnd","nativeSrc":"4090:7:87","nodeType":"YulIdentifier","src":"4090:7:87"},{"name":"headStart","nativeSrc":"4099:9:87","nodeType":"YulIdentifier","src":"4099:9:87"}],"functionName":{"name":"sub","nativeSrc":"4086:3:87","nodeType":"YulIdentifier","src":"4086:3:87"},"nativeSrc":"4086:23:87","nodeType":"YulFunctionCall","src":"4086:23:87"},{"kind":"number","nativeSrc":"4111:2:87","nodeType":"YulLiteral","src":"4111:2:87","type":"","value":"32"}],"functionName":{"name":"slt","nativeSrc":"4082:3:87","nodeType":"YulIdentifier","src":"4082:3:87"},"nativeSrc":"4082:32:87","nodeType":"YulFunctionCall","src":"4082:32:87"},"nativeSrc":"4079:52:87","nodeType":"YulIf","src":"4079:52:87"},{"nativeSrc":"4140:36:87","nodeType":"YulVariableDeclaration","src":"4140:36:87","value":{"arguments":[{"name":"headStart","nativeSrc":"4166:9:87","nodeType":"YulIdentifier","src":"4166:9:87"}],"functionName":{"name":"calldataload","nativeSrc":"4153:12:87","nodeType":"YulIdentifier","src":"4153:12:87"},"nativeSrc":"4153:23:87","nodeType":"YulFunctionCall","src":"4153:23:87"},"variables":[{"name":"value","nativeSrc":"4144:5:87","nodeType":"YulTypedName","src":"4144:5:87","type":""}]},{"body":{"nativeSrc":"4229:16:87","nodeType":"YulBlock","src":"4229:16:87","statements":[{"expression":{"arguments":[{"kind":"number","nativeSrc":"4238:1:87","nodeType":"YulLiteral","src":"4238:1:87","type":"","value":"0"},{"kind":"number","nativeSrc":"4241:1:87","nodeType":"YulLiteral","src":"4241:1:87","type":"","value":"0"}],"functionName":{"name":"revert","nativeSrc":"4231:6:87","nodeType":"YulIdentifier","src":"4231:6:87"},"nativeSrc":"4231:12:87","nodeType":"YulFunctionCall","src":"4231:12:87"},"nativeSrc":"4231:12:87","nodeType":"YulExpressionStatement","src":"4231:12:87"}]},"condition":{"arguments":[{"arguments":[{"name":"value","nativeSrc":"4198:5:87","nodeType":"YulIdentifier","src":"4198:5:87"},{"arguments":[{"arguments":[{"name":"value","nativeSrc":"4219:5:87","nodeType":"YulIdentifier","src":"4219:5:87"}],"functionName":{"name":"iszero","nativeSrc":"4212:6:87","nodeType":"YulIdentifier","src":"4212:6:87"},"nativeSrc":"4212:13:87","nodeType":"YulFunctionCall","src":"4212:13:87"}],"functionName":{"name":"iszero","nativeSrc":"4205:6:87","nodeType":"YulIdentifier","src":"4205:6:87"},"nativeSrc":"4205:21:87","nodeType":"YulFunctionCall","src":"4205:21:87"}],"functionName":{"name":"eq","nativeSrc":"4195:2:87","nodeType":"YulIdentifier","src":"4195:2:87"},"nativeSrc":"4195:32:87","nodeType":"YulFunctionCall","src":"4195:32:87"}],"functionName":{"name":"iszero","nativeSrc":"4188:6:87","nodeType":"YulIdentifier","src":"4188:6:87"},"nativeSrc":"4188:40:87","nodeType":"YulFunctionCall","src":"4188:40:87"},"nativeSrc":"4185:60:87","nodeType":"YulIf","src":"4185:60:87"},{"nativeSrc":"4254:15:87","nodeType":"YulAssignment","src":"4254:15:87","value":{"name":"value","nativeSrc":"4264:5:87","nodeType":"YulIdentifier","src":"4264:5:87"},"variableNames":[{"name":"value0","nativeSrc":"4254:6:87","nodeType":"YulIdentifier","src":"4254:6:87"}]}]},"name":"abi_decode_tuple_t_bool","nativeSrc":"4002:273:87","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nativeSrc":"4035:9:87","nodeType":"YulTypedName","src":"4035:9:87","type":""},{"name":"dataEnd","nativeSrc":"4046:7:87","nodeType":"YulTypedName","src":"4046:7:87","type":""}],"returnVariables":[{"name":"value0","nativeSrc":"4058:6:87","nodeType":"YulTypedName","src":"4058:6:87","type":""}],"src":"4002:273:87"},{"body":{"nativeSrc":"4381:76:87","nodeType":"YulBlock","src":"4381:76:87","statements":[{"nativeSrc":"4391:26:87","nodeType":"YulAssignment","src":"4391:26:87","value":{"arguments":[{"name":"headStart","nativeSrc":"4403:9:87","nodeType":"YulIdentifier","src":"4403:9:87"},{"kind":"number","nativeSrc":"4414:2:87","nodeType":"YulLiteral","src":"4414:2:87","type":"","value":"32"}],"functionName":{"name":"add","nativeSrc":"4399:3:87","nodeType":"YulIdentifier","src":"4399:3:87"},"nativeSrc":"4399:18:87","nodeType":"YulFunctionCall","src":"4399:18:87"},"variableNames":[{"name":"tail","nativeSrc":"4391:4:87","nodeType":"YulIdentifier","src":"4391:4:87"}]},{"expression":{"arguments":[{"name":"headStart","nativeSrc":"4433:9:87","nodeType":"YulIdentifier","src":"4433:9:87"},{"name":"value0","nativeSrc":"4444:6:87","nodeType":"YulIdentifier","src":"4444:6:87"}],"functionName":{"name":"mstore","nativeSrc":"4426:6:87","nodeType":"YulIdentifier","src":"4426:6:87"},"nativeSrc":"4426:25:87","nodeType":"YulFunctionCall","src":"4426:25:87"},"nativeSrc":"4426:25:87","nodeType":"YulExpressionStatement","src":"4426:25:87"}]},"name":"abi_encode_tuple_t_bytes32__to_t_bytes32__fromStack_reversed","nativeSrc":"4280:177:87","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nativeSrc":"4350:9:87","nodeType":"YulTypedName","src":"4350:9:87","type":""},{"name":"value0","nativeSrc":"4361:6:87","nodeType":"YulTypedName","src":"4361:6:87","type":""}],"returnVariables":[{"name":"tail","nativeSrc":"4372:4:87","nodeType":"YulTypedName","src":"4372:4:87","type":""}],"src":"4280:177:87"},{"body":{"nativeSrc":"4563:102:87","nodeType":"YulBlock","src":"4563:102:87","statements":[{"nativeSrc":"4573:26:87","nodeType":"YulAssignment","src":"4573:26:87","value":{"arguments":[{"name":"headStart","nativeSrc":"4585:9:87","nodeType":"YulIdentifier","src":"4585:9:87"},{"kind":"number","nativeSrc":"4596:2:87","nodeType":"YulLiteral","src":"4596:2:87","type":"","value":"32"}],"functionName":{"name":"add","nativeSrc":"4581:3:87","nodeType":"YulIdentifier","src":"4581:3:87"},"nativeSrc":"4581:18:87","nodeType":"YulFunctionCall","src":"4581:18:87"},"variableNames":[{"name":"tail","nativeSrc":"4573:4:87","nodeType":"YulIdentifier","src":"4573:4:87"}]},{"expression":{"arguments":[{"name":"headStart","nativeSrc":"4615:9:87","nodeType":"YulIdentifier","src":"4615:9:87"},{"arguments":[{"name":"value0","nativeSrc":"4630:6:87","nodeType":"YulIdentifier","src":"4630:6:87"},{"arguments":[{"arguments":[{"kind":"number","nativeSrc":"4646:3:87","nodeType":"YulLiteral","src":"4646:3:87","type":"","value":"160"},{"kind":"number","nativeSrc":"4651:1:87","nodeType":"YulLiteral","src":"4651:1:87","type":"","value":"1"}],"functionName":{"name":"shl","nativeSrc":"4642:3:87","nodeType":"YulIdentifier","src":"4642:3:87"},"nativeSrc":"4642:11:87","nodeType":"YulFunctionCall","src":"4642:11:87"},{"kind":"number","nativeSrc":"4655:1:87","nodeType":"YulLiteral","src":"4655:1:87","type":"","value":"1"}],"functionName":{"name":"sub","nativeSrc":"4638:3:87","nodeType":"YulIdentifier","src":"4638:3:87"},"nativeSrc":"4638:19:87","nodeType":"YulFunctionCall","src":"4638:19:87"}],"functionName":{"name":"and","nativeSrc":"4626:3:87","nodeType":"YulIdentifier","src":"4626:3:87"},"nativeSrc":"4626:32:87","nodeType":"YulFunctionCall","src":"4626:32:87"}],"functionName":{"name":"mstore","nativeSrc":"4608:6:87","nodeType":"YulIdentifier","src":"4608:6:87"},"nativeSrc":"4608:51:87","nodeType":"YulFunctionCall","src":"4608:51:87"},"nativeSrc":"4608:51:87","nodeType":"YulExpressionStatement","src":"4608:51:87"}]},"name":"abi_encode_tuple_t_address__to_t_address__fromStack_reversed","nativeSrc":"4462:203:87","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nativeSrc":"4532:9:87","nodeType":"YulTypedName","src":"4532:9:87","type":""},{"name":"value0","nativeSrc":"4543:6:87","nodeType":"YulTypedName","src":"4543:6:87","type":""}],"returnVariables":[{"name":"tail","nativeSrc":"4554:4:87","nodeType":"YulTypedName","src":"4554:4:87","type":""}],"src":"4462:203:87"},{"body":{"nativeSrc":"4749:241:87","nodeType":"YulBlock","src":"4749:241:87","statements":[{"body":{"nativeSrc":"4795:16:87","nodeType":"YulBlock","src":"4795:16:87","statements":[{"expression":{"arguments":[{"kind":"number","nativeSrc":"4804:1:87","nodeType":"YulLiteral","src":"4804:1:87","type":"","value":"0"},{"kind":"number","nativeSrc":"4807:1:87","nodeType":"YulLiteral","src":"4807:1:87","type":"","value":"0"}],"functionName":{"name":"revert","nativeSrc":"4797:6:87","nodeType":"YulIdentifier","src":"4797:6:87"},"nativeSrc":"4797:12:87","nodeType":"YulFunctionCall","src":"4797:12:87"},"nativeSrc":"4797:12:87","nodeType":"YulExpressionStatement","src":"4797:12:87"}]},"condition":{"arguments":[{"arguments":[{"name":"dataEnd","nativeSrc":"4770:7:87","nodeType":"YulIdentifier","src":"4770:7:87"},{"name":"headStart","nativeSrc":"4779:9:87","nodeType":"YulIdentifier","src":"4779:9:87"}],"functionName":{"name":"sub","nativeSrc":"4766:3:87","nodeType":"YulIdentifier","src":"4766:3:87"},"nativeSrc":"4766:23:87","nodeType":"YulFunctionCall","src":"4766:23:87"},{"kind":"number","nativeSrc":"4791:2:87","nodeType":"YulLiteral","src":"4791:2:87","type":"","value":"32"}],"functionName":{"name":"slt","nativeSrc":"4762:3:87","nodeType":"YulIdentifier","src":"4762:3:87"},"nativeSrc":"4762:32:87","nodeType":"YulFunctionCall","src":"4762:32:87"},"nativeSrc":"4759:52:87","nodeType":"YulIf","src":"4759:52:87"},{"nativeSrc":"4820:37:87","nodeType":"YulVariableDeclaration","src":"4820:37:87","value":{"arguments":[{"name":"headStart","nativeSrc":"4847:9:87","nodeType":"YulIdentifier","src":"4847:9:87"}],"functionName":{"name":"calldataload","nativeSrc":"4834:12:87","nodeType":"YulIdentifier","src":"4834:12:87"},"nativeSrc":"4834:23:87","nodeType":"YulFunctionCall","src":"4834:23:87"},"variables":[{"name":"offset","nativeSrc":"4824:6:87","nodeType":"YulTypedName","src":"4824:6:87","type":""}]},{"body":{"nativeSrc":"4900:16:87","nodeType":"YulBlock","src":"4900:16:87","statements":[{"expression":{"arguments":[{"kind":"number","nativeSrc":"4909:1:87","nodeType":"YulLiteral","src":"4909:1:87","type":"","value":"0"},{"kind":"number","nativeSrc":"4912:1:87","nodeType":"YulLiteral","src":"4912:1:87","type":"","value":"0"}],"functionName":{"name":"revert","nativeSrc":"4902:6:87","nodeType":"YulIdentifier","src":"4902:6:87"},"nativeSrc":"4902:12:87","nodeType":"YulFunctionCall","src":"4902:12:87"},"nativeSrc":"4902:12:87","nodeType":"YulExpressionStatement","src":"4902:12:87"}]},"condition":{"arguments":[{"name":"offset","nativeSrc":"4872:6:87","nodeType":"YulIdentifier","src":"4872:6:87"},{"kind":"number","nativeSrc":"4880:18:87","nodeType":"YulLiteral","src":"4880:18:87","type":"","value":"0xffffffffffffffff"}],"functionName":{"name":"gt","nativeSrc":"4869:2:87","nodeType":"YulIdentifier","src":"4869:2:87"},"nativeSrc":"4869:30:87","nodeType":"YulFunctionCall","src":"4869:30:87"},"nativeSrc":"4866:50:87","nodeType":"YulIf","src":"4866:50:87"},{"nativeSrc":"4925:59:87","nodeType":"YulAssignment","src":"4925:59:87","value":{"arguments":[{"arguments":[{"name":"headStart","nativeSrc":"4956:9:87","nodeType":"YulIdentifier","src":"4956:9:87"},{"name":"offset","nativeSrc":"4967:6:87","nodeType":"YulIdentifier","src":"4967:6:87"}],"functionName":{"name":"add","nativeSrc":"4952:3:87","nodeType":"YulIdentifier","src":"4952:3:87"},"nativeSrc":"4952:22:87","nodeType":"YulFunctionCall","src":"4952:22:87"},{"name":"dataEnd","nativeSrc":"4976:7:87","nodeType":"YulIdentifier","src":"4976:7:87"}],"functionName":{"name":"abi_decode_bytes","nativeSrc":"4935:16:87","nodeType":"YulIdentifier","src":"4935:16:87"},"nativeSrc":"4935:49:87","nodeType":"YulFunctionCall","src":"4935:49:87"},"variableNames":[{"name":"value0","nativeSrc":"4925:6:87","nodeType":"YulIdentifier","src":"4925:6:87"}]}]},"name":"abi_decode_tuple_t_bytes_memory_ptr","nativeSrc":"4670:320:87","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nativeSrc":"4715:9:87","nodeType":"YulTypedName","src":"4715:9:87","type":""},{"name":"dataEnd","nativeSrc":"4726:7:87","nodeType":"YulTypedName","src":"4726:7:87","type":""}],"returnVariables":[{"name":"value0","nativeSrc":"4738:6:87","nodeType":"YulTypedName","src":"4738:6:87","type":""}],"src":"4670:320:87"},{"body":{"nativeSrc":"5076:149:87","nodeType":"YulBlock","src":"5076:149:87","statements":[{"body":{"nativeSrc":"5122:16:87","nodeType":"YulBlock","src":"5122:16:87","statements":[{"expression":{"arguments":[{"kind":"number","nativeSrc":"5131:1:87","nodeType":"YulLiteral","src":"5131:1:87","type":"","value":"0"},{"kind":"number","nativeSrc":"5134:1:87","nodeType":"YulLiteral","src":"5134:1:87","type":"","value":"0"}],"functionName":{"name":"revert","nativeSrc":"5124:6:87","nodeType":"YulIdentifier","src":"5124:6:87"},"nativeSrc":"5124:12:87","nodeType":"YulFunctionCall","src":"5124:12:87"},"nativeSrc":"5124:12:87","nodeType":"YulExpressionStatement","src":"5124:12:87"}]},"condition":{"arguments":[{"arguments":[{"name":"dataEnd","nativeSrc":"5097:7:87","nodeType":"YulIdentifier","src":"5097:7:87"},{"name":"headStart","nativeSrc":"5106:9:87","nodeType":"YulIdentifier","src":"5106:9:87"}],"functionName":{"name":"sub","nativeSrc":"5093:3:87","nodeType":"YulIdentifier","src":"5093:3:87"},"nativeSrc":"5093:23:87","nodeType":"YulFunctionCall","src":"5093:23:87"},{"kind":"number","nativeSrc":"5118:2:87","nodeType":"YulLiteral","src":"5118:2:87","type":"","value":"32"}],"functionName":{"name":"slt","nativeSrc":"5089:3:87","nodeType":"YulIdentifier","src":"5089:3:87"},"nativeSrc":"5089:32:87","nodeType":"YulFunctionCall","src":"5089:32:87"},"nativeSrc":"5086:52:87","nodeType":"YulIf","src":"5086:52:87"},{"nativeSrc":"5147:14:87","nodeType":"YulVariableDeclaration","src":"5147:14:87","value":{"kind":"number","nativeSrc":"5160:1:87","nodeType":"YulLiteral","src":"5160:1:87","type":"","value":"0"},"variables":[{"name":"value","nativeSrc":"5151:5:87","nodeType":"YulTypedName","src":"5151:5:87","type":""}]},{"nativeSrc":"5170:25:87","nodeType":"YulAssignment","src":"5170:25:87","value":{"arguments":[{"name":"headStart","nativeSrc":"5185:9:87","nodeType":"YulIdentifier","src":"5185:9:87"}],"functionName":{"name":"mload","nativeSrc":"5179:5:87","nodeType":"YulIdentifier","src":"5179:5:87"},"nativeSrc":"5179:16:87","nodeType":"YulFunctionCall","src":"5179:16:87"},"variableNames":[{"name":"value","nativeSrc":"5170:5:87","nodeType":"YulIdentifier","src":"5170:5:87"}]},{"nativeSrc":"5204:15:87","nodeType":"YulAssignment","src":"5204:15:87","value":{"name":"value","nativeSrc":"5214:5:87","nodeType":"YulIdentifier","src":"5214:5:87"},"variableNames":[{"name":"value0","nativeSrc":"5204:6:87","nodeType":"YulIdentifier","src":"5204:6:87"}]}]},"name":"abi_decode_tuple_t_uint256_fromMemory","nativeSrc":"4995:230:87","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nativeSrc":"5042:9:87","nodeType":"YulTypedName","src":"5042:9:87","type":""},{"name":"dataEnd","nativeSrc":"5053:7:87","nodeType":"YulTypedName","src":"5053:7:87","type":""}],"returnVariables":[{"name":"value0","nativeSrc":"5065:6:87","nodeType":"YulTypedName","src":"5065:6:87","type":""}],"src":"4995:230:87"},{"body":{"nativeSrc":"5507:337:87","nodeType":"YulBlock","src":"5507:337:87","statements":[{"expression":{"arguments":[{"name":"headStart","nativeSrc":"5524:9:87","nodeType":"YulIdentifier","src":"5524:9:87"},{"kind":"number","nativeSrc":"5535:3:87","nodeType":"YulLiteral","src":"5535:3:87","type":"","value":"160"}],"functionName":{"name":"mstore","nativeSrc":"5517:6:87","nodeType":"YulIdentifier","src":"5517:6:87"},"nativeSrc":"5517:22:87","nodeType":"YulFunctionCall","src":"5517:22:87"},"nativeSrc":"5517:22:87","nodeType":"YulExpressionStatement","src":"5517:22:87"},{"nativeSrc":"5548:65:87","nodeType":"YulAssignment","src":"5548:65:87","value":{"arguments":[{"name":"value0","nativeSrc":"5585:6:87","nodeType":"YulIdentifier","src":"5585:6:87"},{"arguments":[{"name":"headStart","nativeSrc":"5597:9:87","nodeType":"YulIdentifier","src":"5597:9:87"},{"kind":"number","nativeSrc":"5608:3:87","nodeType":"YulLiteral","src":"5608:3:87","type":"","value":"160"}],"functionName":{"name":"add","nativeSrc":"5593:3:87","nodeType":"YulIdentifier","src":"5593:3:87"},"nativeSrc":"5593:19:87","nodeType":"YulFunctionCall","src":"5593:19:87"}],"functionName":{"name":"abi_encode_struct_SwapConfig","nativeSrc":"5556:28:87","nodeType":"YulIdentifier","src":"5556:28:87"},"nativeSrc":"5556:57:87","nodeType":"YulFunctionCall","src":"5556:57:87"},"variableNames":[{"name":"tail","nativeSrc":"5548:4:87","nodeType":"YulIdentifier","src":"5548:4:87"}]},{"expression":{"arguments":[{"arguments":[{"name":"headStart","nativeSrc":"5633:9:87","nodeType":"YulIdentifier","src":"5633:9:87"},{"kind":"number","nativeSrc":"5644:2:87","nodeType":"YulLiteral","src":"5644:2:87","type":"","value":"32"}],"functionName":{"name":"add","nativeSrc":"5629:3:87","nodeType":"YulIdentifier","src":"5629:3:87"},"nativeSrc":"5629:18:87","nodeType":"YulFunctionCall","src":"5629:18:87"},{"arguments":[{"name":"value1","nativeSrc":"5653:6:87","nodeType":"YulIdentifier","src":"5653:6:87"},{"arguments":[{"arguments":[{"kind":"number","nativeSrc":"5669:3:87","nodeType":"YulLiteral","src":"5669:3:87","type":"","value":"160"},{"kind":"number","nativeSrc":"5674:1:87","nodeType":"YulLiteral","src":"5674:1:87","type":"","value":"1"}],"functionName":{"name":"shl","nativeSrc":"5665:3:87","nodeType":"YulIdentifier","src":"5665:3:87"},"nativeSrc":"5665:11:87","nodeType":"YulFunctionCall","src":"5665:11:87"},{"kind":"number","nativeSrc":"5678:1:87","nodeType":"YulLiteral","src":"5678:1:87","type":"","value":"1"}],"functionName":{"name":"sub","nativeSrc":"5661:3:87","nodeType":"YulIdentifier","src":"5661:3:87"},"nativeSrc":"5661:19:87","nodeType":"YulFunctionCall","src":"5661:19:87"}],"functionName":{"name":"and","nativeSrc":"5649:3:87","nodeType":"YulIdentifier","src":"5649:3:87"},"nativeSrc":"5649:32:87","nodeType":"YulFunctionCall","src":"5649:32:87"}],"functionName":{"name":"mstore","nativeSrc":"5622:6:87","nodeType":"YulIdentifier","src":"5622:6:87"},"nativeSrc":"5622:60:87","nodeType":"YulFunctionCall","src":"5622:60:87"},"nativeSrc":"5622:60:87","nodeType":"YulExpressionStatement","src":"5622:60:87"},{"expression":{"arguments":[{"arguments":[{"name":"headStart","nativeSrc":"5702:9:87","nodeType":"YulIdentifier","src":"5702:9:87"},{"kind":"number","nativeSrc":"5713:2:87","nodeType":"YulLiteral","src":"5713:2:87","type":"","value":"64"}],"functionName":{"name":"add","nativeSrc":"5698:3:87","nodeType":"YulIdentifier","src":"5698:3:87"},"nativeSrc":"5698:18:87","nodeType":"YulFunctionCall","src":"5698:18:87"},{"arguments":[{"name":"value2","nativeSrc":"5722:6:87","nodeType":"YulIdentifier","src":"5722:6:87"},{"arguments":[{"arguments":[{"kind":"number","nativeSrc":"5738:3:87","nodeType":"YulLiteral","src":"5738:3:87","type":"","value":"160"},{"kind":"number","nativeSrc":"5743:1:87","nodeType":"YulLiteral","src":"5743:1:87","type":"","value":"1"}],"functionName":{"name":"shl","nativeSrc":"5734:3:87","nodeType":"YulIdentifier","src":"5734:3:87"},"nativeSrc":"5734:11:87","nodeType":"YulFunctionCall","src":"5734:11:87"},{"kind":"number","nativeSrc":"5747:1:87","nodeType":"YulLiteral","src":"5747:1:87","type":"","value":"1"}],"functionName":{"name":"sub","nativeSrc":"5730:3:87","nodeType":"YulIdentifier","src":"5730:3:87"},"nativeSrc":"5730:19:87","nodeType":"YulFunctionCall","src":"5730:19:87"}],"functionName":{"name":"and","nativeSrc":"5718:3:87","nodeType":"YulIdentifier","src":"5718:3:87"},"nativeSrc":"5718:32:87","nodeType":"YulFunctionCall","src":"5718:32:87"}],"functionName":{"name":"mstore","nativeSrc":"5691:6:87","nodeType":"YulIdentifier","src":"5691:6:87"},"nativeSrc":"5691:60:87","nodeType":"YulFunctionCall","src":"5691:60:87"},"nativeSrc":"5691:60:87","nodeType":"YulExpressionStatement","src":"5691:60:87"},{"expression":{"arguments":[{"arguments":[{"name":"headStart","nativeSrc":"5771:9:87","nodeType":"YulIdentifier","src":"5771:9:87"},{"kind":"number","nativeSrc":"5782:2:87","nodeType":"YulLiteral","src":"5782:2:87","type":"","value":"96"}],"functionName":{"name":"add","nativeSrc":"5767:3:87","nodeType":"YulIdentifier","src":"5767:3:87"},"nativeSrc":"5767:18:87","nodeType":"YulFunctionCall","src":"5767:18:87"},{"name":"value3","nativeSrc":"5787:6:87","nodeType":"YulIdentifier","src":"5787:6:87"}],"functionName":{"name":"mstore","nativeSrc":"5760:6:87","nodeType":"YulIdentifier","src":"5760:6:87"},"nativeSrc":"5760:34:87","nodeType":"YulFunctionCall","src":"5760:34:87"},"nativeSrc":"5760:34:87","nodeType":"YulExpressionStatement","src":"5760:34:87"},{"expression":{"arguments":[{"arguments":[{"name":"headStart","nativeSrc":"5814:9:87","nodeType":"YulIdentifier","src":"5814:9:87"},{"kind":"number","nativeSrc":"5825:3:87","nodeType":"YulLiteral","src":"5825:3:87","type":"","value":"128"}],"functionName":{"name":"add","nativeSrc":"5810:3:87","nodeType":"YulIdentifier","src":"5810:3:87"},"nativeSrc":"5810:19:87","nodeType":"YulFunctionCall","src":"5810:19:87"},{"name":"value4","nativeSrc":"5831:6:87","nodeType":"YulIdentifier","src":"5831:6:87"}],"functionName":{"name":"mstore","nativeSrc":"5803:6:87","nodeType":"YulIdentifier","src":"5803:6:87"},"nativeSrc":"5803:35:87","nodeType":"YulFunctionCall","src":"5803:35:87"},"nativeSrc":"5803:35:87","nodeType":"YulExpressionStatement","src":"5803:35:87"}]},"name":"abi_encode_tuple_t_struct$_SwapConfig_$1113_memory_ptr_t_address_t_address_t_uint256_t_uint256__to_t_struct$_SwapConfig_$1113_memory_ptr_t_address_t_address_t_uint256_t_uint256__fromStack_library_reversed","nativeSrc":"5230:614:87","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nativeSrc":"5444:9:87","nodeType":"YulTypedName","src":"5444:9:87","type":""},{"name":"value4","nativeSrc":"5455:6:87","nodeType":"YulTypedName","src":"5455:6:87","type":""},{"name":"value3","nativeSrc":"5463:6:87","nodeType":"YulTypedName","src":"5463:6:87","type":""},{"name":"value2","nativeSrc":"5471:6:87","nodeType":"YulTypedName","src":"5471:6:87","type":""},{"name":"value1","nativeSrc":"5479:6:87","nodeType":"YulTypedName","src":"5479:6:87","type":""},{"name":"value0","nativeSrc":"5487:6:87","nodeType":"YulTypedName","src":"5487:6:87","type":""}],"returnVariables":[{"name":"tail","nativeSrc":"5498:4:87","nodeType":"YulTypedName","src":"5498:4:87","type":""}],"src":"5230:614:87"},{"body":{"nativeSrc":"5912:420:87","nodeType":"YulBlock","src":"5912:420:87","statements":[{"body":{"nativeSrc":"5961:16:87","nodeType":"YulBlock","src":"5961:16:87","statements":[{"expression":{"arguments":[{"kind":"number","nativeSrc":"5970:1:87","nodeType":"YulLiteral","src":"5970:1:87","type":"","value":"0"},{"kind":"number","nativeSrc":"5973:1:87","nodeType":"YulLiteral","src":"5973:1:87","type":"","value":"0"}],"functionName":{"name":"revert","nativeSrc":"5963:6:87","nodeType":"YulIdentifier","src":"5963:6:87"},"nativeSrc":"5963:12:87","nodeType":"YulFunctionCall","src":"5963:12:87"},"nativeSrc":"5963:12:87","nodeType":"YulExpressionStatement","src":"5963:12:87"}]},"condition":{"arguments":[{"arguments":[{"arguments":[{"name":"offset","nativeSrc":"5940:6:87","nodeType":"YulIdentifier","src":"5940:6:87"},{"kind":"number","nativeSrc":"5948:4:87","nodeType":"YulLiteral","src":"5948:4:87","type":"","value":"0x1f"}],"functionName":{"name":"add","nativeSrc":"5936:3:87","nodeType":"YulIdentifier","src":"5936:3:87"},"nativeSrc":"5936:17:87","nodeType":"YulFunctionCall","src":"5936:17:87"},{"name":"end","nativeSrc":"5955:3:87","nodeType":"YulIdentifier","src":"5955:3:87"}],"functionName":{"name":"slt","nativeSrc":"5932:3:87","nodeType":"YulIdentifier","src":"5932:3:87"},"nativeSrc":"5932:27:87","nodeType":"YulFunctionCall","src":"5932:27:87"}],"functionName":{"name":"iszero","nativeSrc":"5925:6:87","nodeType":"YulIdentifier","src":"5925:6:87"},"nativeSrc":"5925:35:87","nodeType":"YulFunctionCall","src":"5925:35:87"},"nativeSrc":"5922:55:87","nodeType":"YulIf","src":"5922:55:87"},{"nativeSrc":"5986:27:87","nodeType":"YulVariableDeclaration","src":"5986:27:87","value":{"arguments":[{"name":"offset","nativeSrc":"6006:6:87","nodeType":"YulIdentifier","src":"6006:6:87"}],"functionName":{"name":"mload","nativeSrc":"6000:5:87","nodeType":"YulIdentifier","src":"6000:5:87"},"nativeSrc":"6000:13:87","nodeType":"YulFunctionCall","src":"6000:13:87"},"variables":[{"name":"length","nativeSrc":"5990:6:87","nodeType":"YulTypedName","src":"5990:6:87","type":""}]},{"nativeSrc":"6022:67:87","nodeType":"YulVariableDeclaration","src":"6022:67:87","value":{"arguments":[{"arguments":[{"name":"length","nativeSrc":"6081:6:87","nodeType":"YulIdentifier","src":"6081:6:87"}],"functionName":{"name":"array_allocation_size_bytes","nativeSrc":"6053:27:87","nodeType":"YulIdentifier","src":"6053:27:87"},"nativeSrc":"6053:35:87","nodeType":"YulFunctionCall","src":"6053:35:87"}],"functionName":{"name":"allocate_memory","nativeSrc":"6037:15:87","nodeType":"YulIdentifier","src":"6037:15:87"},"nativeSrc":"6037:52:87","nodeType":"YulFunctionCall","src":"6037:52:87"},"variables":[{"name":"array_1","nativeSrc":"6026:7:87","nodeType":"YulTypedName","src":"6026:7:87","type":""}]},{"expression":{"arguments":[{"name":"array_1","nativeSrc":"6105:7:87","nodeType":"YulIdentifier","src":"6105:7:87"},{"name":"length","nativeSrc":"6114:6:87","nodeType":"YulIdentifier","src":"6114:6:87"}],"functionName":{"name":"mstore","nativeSrc":"6098:6:87","nodeType":"YulIdentifier","src":"6098:6:87"},"nativeSrc":"6098:23:87","nodeType":"YulFunctionCall","src":"6098:23:87"},"nativeSrc":"6098:23:87","nodeType":"YulExpressionStatement","src":"6098:23:87"},{"body":{"nativeSrc":"6173:16:87","nodeType":"YulBlock","src":"6173:16:87","statements":[{"expression":{"arguments":[{"kind":"number","nativeSrc":"6182:1:87","nodeType":"YulLiteral","src":"6182:1:87","type":"","value":"0"},{"kind":"number","nativeSrc":"6185:1:87","nodeType":"YulLiteral","src":"6185:1:87","type":"","value":"0"}],"functionName":{"name":"revert","nativeSrc":"6175:6:87","nodeType":"YulIdentifier","src":"6175:6:87"},"nativeSrc":"6175:12:87","nodeType":"YulFunctionCall","src":"6175:12:87"},"nativeSrc":"6175:12:87","nodeType":"YulExpressionStatement","src":"6175:12:87"}]},"condition":{"arguments":[{"arguments":[{"arguments":[{"name":"offset","nativeSrc":"6144:6:87","nodeType":"YulIdentifier","src":"6144:6:87"},{"name":"length","nativeSrc":"6152:6:87","nodeType":"YulIdentifier","src":"6152:6:87"}],"functionName":{"name":"add","nativeSrc":"6140:3:87","nodeType":"YulIdentifier","src":"6140:3:87"},"nativeSrc":"6140:19:87","nodeType":"YulFunctionCall","src":"6140:19:87"},{"kind":"number","nativeSrc":"6161:4:87","nodeType":"YulLiteral","src":"6161:4:87","type":"","value":"0x20"}],"functionName":{"name":"add","nativeSrc":"6136:3:87","nodeType":"YulIdentifier","src":"6136:3:87"},"nativeSrc":"6136:30:87","nodeType":"YulFunctionCall","src":"6136:30:87"},{"name":"end","nativeSrc":"6168:3:87","nodeType":"YulIdentifier","src":"6168:3:87"}],"functionName":{"name":"gt","nativeSrc":"6133:2:87","nodeType":"YulIdentifier","src":"6133:2:87"},"nativeSrc":"6133:39:87","nodeType":"YulFunctionCall","src":"6133:39:87"},"nativeSrc":"6130:59:87","nodeType":"YulIf","src":"6130:59:87"},{"expression":{"arguments":[{"arguments":[{"name":"array_1","nativeSrc":"6208:7:87","nodeType":"YulIdentifier","src":"6208:7:87"},{"kind":"number","nativeSrc":"6217:4:87","nodeType":"YulLiteral","src":"6217:4:87","type":"","value":"0x20"}],"functionName":{"name":"add","nativeSrc":"6204:3:87","nodeType":"YulIdentifier","src":"6204:3:87"},"nativeSrc":"6204:18:87","nodeType":"YulFunctionCall","src":"6204:18:87"},{"arguments":[{"name":"offset","nativeSrc":"6228:6:87","nodeType":"YulIdentifier","src":"6228:6:87"},{"kind":"number","nativeSrc":"6236:4:87","nodeType":"YulLiteral","src":"6236:4:87","type":"","value":"0x20"}],"functionName":{"name":"add","nativeSrc":"6224:3:87","nodeType":"YulIdentifier","src":"6224:3:87"},"nativeSrc":"6224:17:87","nodeType":"YulFunctionCall","src":"6224:17:87"},{"name":"length","nativeSrc":"6243:6:87","nodeType":"YulIdentifier","src":"6243:6:87"}],"functionName":{"name":"mcopy","nativeSrc":"6198:5:87","nodeType":"YulIdentifier","src":"6198:5:87"},"nativeSrc":"6198:52:87","nodeType":"YulFunctionCall","src":"6198:52:87"},"nativeSrc":"6198:52:87","nodeType":"YulExpressionStatement","src":"6198:52:87"},{"expression":{"arguments":[{"arguments":[{"arguments":[{"name":"array_1","nativeSrc":"6274:7:87","nodeType":"YulIdentifier","src":"6274:7:87"},{"name":"length","nativeSrc":"6283:6:87","nodeType":"YulIdentifier","src":"6283:6:87"}],"functionName":{"name":"add","nativeSrc":"6270:3:87","nodeType":"YulIdentifier","src":"6270:3:87"},"nativeSrc":"6270:20:87","nodeType":"YulFunctionCall","src":"6270:20:87"},{"kind":"number","nativeSrc":"6292:4:87","nodeType":"YulLiteral","src":"6292:4:87","type":"","value":"0x20"}],"functionName":{"name":"add","nativeSrc":"6266:3:87","nodeType":"YulIdentifier","src":"6266:3:87"},"nativeSrc":"6266:31:87","nodeType":"YulFunctionCall","src":"6266:31:87"},{"kind":"number","nativeSrc":"6299:1:87","nodeType":"YulLiteral","src":"6299:1:87","type":"","value":"0"}],"functionName":{"name":"mstore","nativeSrc":"6259:6:87","nodeType":"YulIdentifier","src":"6259:6:87"},"nativeSrc":"6259:42:87","nodeType":"YulFunctionCall","src":"6259:42:87"},"nativeSrc":"6259:42:87","nodeType":"YulExpressionStatement","src":"6259:42:87"},{"nativeSrc":"6310:16:87","nodeType":"YulAssignment","src":"6310:16:87","value":{"name":"array_1","nativeSrc":"6319:7:87","nodeType":"YulIdentifier","src":"6319:7:87"},"variableNames":[{"name":"array","nativeSrc":"6310:5:87","nodeType":"YulIdentifier","src":"6310:5:87"}]}]},"name":"abi_decode_bytes_fromMemory","nativeSrc":"5849:483:87","nodeType":"YulFunctionDefinition","parameters":[{"name":"offset","nativeSrc":"5886:6:87","nodeType":"YulTypedName","src":"5886:6:87","type":""},{"name":"end","nativeSrc":"5894:3:87","nodeType":"YulTypedName","src":"5894:3:87","type":""}],"returnVariables":[{"name":"array","nativeSrc":"5902:5:87","nodeType":"YulTypedName","src":"5902:5:87","type":""}],"src":"5849:483:87"},{"body":{"nativeSrc":"6427:245:87","nodeType":"YulBlock","src":"6427:245:87","statements":[{"body":{"nativeSrc":"6473:16:87","nodeType":"YulBlock","src":"6473:16:87","statements":[{"expression":{"arguments":[{"kind":"number","nativeSrc":"6482:1:87","nodeType":"YulLiteral","src":"6482:1:87","type":"","value":"0"},{"kind":"number","nativeSrc":"6485:1:87","nodeType":"YulLiteral","src":"6485:1:87","type":"","value":"0"}],"functionName":{"name":"revert","nativeSrc":"6475:6:87","nodeType":"YulIdentifier","src":"6475:6:87"},"nativeSrc":"6475:12:87","nodeType":"YulFunctionCall","src":"6475:12:87"},"nativeSrc":"6475:12:87","nodeType":"YulExpressionStatement","src":"6475:12:87"}]},"condition":{"arguments":[{"arguments":[{"name":"dataEnd","nativeSrc":"6448:7:87","nodeType":"YulIdentifier","src":"6448:7:87"},{"name":"headStart","nativeSrc":"6457:9:87","nodeType":"YulIdentifier","src":"6457:9:87"}],"functionName":{"name":"sub","nativeSrc":"6444:3:87","nodeType":"YulIdentifier","src":"6444:3:87"},"nativeSrc":"6444:23:87","nodeType":"YulFunctionCall","src":"6444:23:87"},{"kind":"number","nativeSrc":"6469:2:87","nodeType":"YulLiteral","src":"6469:2:87","type":"","value":"32"}],"functionName":{"name":"slt","nativeSrc":"6440:3:87","nodeType":"YulIdentifier","src":"6440:3:87"},"nativeSrc":"6440:32:87","nodeType":"YulFunctionCall","src":"6440:32:87"},"nativeSrc":"6437:52:87","nodeType":"YulIf","src":"6437:52:87"},{"nativeSrc":"6498:30:87","nodeType":"YulVariableDeclaration","src":"6498:30:87","value":{"arguments":[{"name":"headStart","nativeSrc":"6518:9:87","nodeType":"YulIdentifier","src":"6518:9:87"}],"functionName":{"name":"mload","nativeSrc":"6512:5:87","nodeType":"YulIdentifier","src":"6512:5:87"},"nativeSrc":"6512:16:87","nodeType":"YulFunctionCall","src":"6512:16:87"},"variables":[{"name":"offset","nativeSrc":"6502:6:87","nodeType":"YulTypedName","src":"6502:6:87","type":""}]},{"body":{"nativeSrc":"6571:16:87","nodeType":"YulBlock","src":"6571:16:87","statements":[{"expression":{"arguments":[{"kind":"number","nativeSrc":"6580:1:87","nodeType":"YulLiteral","src":"6580:1:87","type":"","value":"0"},{"kind":"number","nativeSrc":"6583:1:87","nodeType":"YulLiteral","src":"6583:1:87","type":"","value":"0"}],"functionName":{"name":"revert","nativeSrc":"6573:6:87","nodeType":"YulIdentifier","src":"6573:6:87"},"nativeSrc":"6573:12:87","nodeType":"YulFunctionCall","src":"6573:12:87"},"nativeSrc":"6573:12:87","nodeType":"YulExpressionStatement","src":"6573:12:87"}]},"condition":{"arguments":[{"name":"offset","nativeSrc":"6543:6:87","nodeType":"YulIdentifier","src":"6543:6:87"},{"kind":"number","nativeSrc":"6551:18:87","nodeType":"YulLiteral","src":"6551:18:87","type":"","value":"0xffffffffffffffff"}],"functionName":{"name":"gt","nativeSrc":"6540:2:87","nodeType":"YulIdentifier","src":"6540:2:87"},"nativeSrc":"6540:30:87","nodeType":"YulFunctionCall","src":"6540:30:87"},"nativeSrc":"6537:50:87","nodeType":"YulIf","src":"6537:50:87"},{"nativeSrc":"6596:70:87","nodeType":"YulAssignment","src":"6596:70:87","value":{"arguments":[{"arguments":[{"name":"headStart","nativeSrc":"6638:9:87","nodeType":"YulIdentifier","src":"6638:9:87"},{"name":"offset","nativeSrc":"6649:6:87","nodeType":"YulIdentifier","src":"6649:6:87"}],"functionName":{"name":"add","nativeSrc":"6634:3:87","nodeType":"YulIdentifier","src":"6634:3:87"},"nativeSrc":"6634:22:87","nodeType":"YulFunctionCall","src":"6634:22:87"},{"name":"dataEnd","nativeSrc":"6658:7:87","nodeType":"YulIdentifier","src":"6658:7:87"}],"functionName":{"name":"abi_decode_bytes_fromMemory","nativeSrc":"6606:27:87","nodeType":"YulIdentifier","src":"6606:27:87"},"nativeSrc":"6606:60:87","nodeType":"YulFunctionCall","src":"6606:60:87"},"variableNames":[{"name":"value0","nativeSrc":"6596:6:87","nodeType":"YulIdentifier","src":"6596:6:87"}]}]},"name":"abi_decode_tuple_t_bytes_memory_ptr_fromMemory","nativeSrc":"6337:335:87","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nativeSrc":"6393:9:87","nodeType":"YulTypedName","src":"6393:9:87","type":""},{"name":"dataEnd","nativeSrc":"6404:7:87","nodeType":"YulTypedName","src":"6404:7:87","type":""}],"returnVariables":[{"name":"value0","nativeSrc":"6416:6:87","nodeType":"YulTypedName","src":"6416:6:87","type":""}],"src":"6337:335:87"},{"body":{"nativeSrc":"6786:741:87","nodeType":"YulBlock","src":"6786:741:87","statements":[{"body":{"nativeSrc":"6832:16:87","nodeType":"YulBlock","src":"6832:16:87","statements":[{"expression":{"arguments":[{"kind":"number","nativeSrc":"6841:1:87","nodeType":"YulLiteral","src":"6841:1:87","type":"","value":"0"},{"kind":"number","nativeSrc":"6844:1:87","nodeType":"YulLiteral","src":"6844:1:87","type":"","value":"0"}],"functionName":{"name":"revert","nativeSrc":"6834:6:87","nodeType":"YulIdentifier","src":"6834:6:87"},"nativeSrc":"6834:12:87","nodeType":"YulFunctionCall","src":"6834:12:87"},"nativeSrc":"6834:12:87","nodeType":"YulExpressionStatement","src":"6834:12:87"}]},"condition":{"arguments":[{"arguments":[{"name":"dataEnd","nativeSrc":"6807:7:87","nodeType":"YulIdentifier","src":"6807:7:87"},{"name":"headStart","nativeSrc":"6816:9:87","nodeType":"YulIdentifier","src":"6816:9:87"}],"functionName":{"name":"sub","nativeSrc":"6803:3:87","nodeType":"YulIdentifier","src":"6803:3:87"},"nativeSrc":"6803:23:87","nodeType":"YulFunctionCall","src":"6803:23:87"},{"kind":"number","nativeSrc":"6828:2:87","nodeType":"YulLiteral","src":"6828:2:87","type":"","value":"32"}],"functionName":{"name":"slt","nativeSrc":"6799:3:87","nodeType":"YulIdentifier","src":"6799:3:87"},"nativeSrc":"6799:32:87","nodeType":"YulFunctionCall","src":"6799:32:87"},"nativeSrc":"6796:52:87","nodeType":"YulIf","src":"6796:52:87"},{"nativeSrc":"6857:30:87","nodeType":"YulVariableDeclaration","src":"6857:30:87","value":{"arguments":[{"name":"headStart","nativeSrc":"6877:9:87","nodeType":"YulIdentifier","src":"6877:9:87"}],"functionName":{"name":"mload","nativeSrc":"6871:5:87","nodeType":"YulIdentifier","src":"6871:5:87"},"nativeSrc":"6871:16:87","nodeType":"YulFunctionCall","src":"6871:16:87"},"variables":[{"name":"offset","nativeSrc":"6861:6:87","nodeType":"YulTypedName","src":"6861:6:87","type":""}]},{"body":{"nativeSrc":"6930:16:87","nodeType":"YulBlock","src":"6930:16:87","statements":[{"expression":{"arguments":[{"kind":"number","nativeSrc":"6939:1:87","nodeType":"YulLiteral","src":"6939:1:87","type":"","value":"0"},{"kind":"number","nativeSrc":"6942:1:87","nodeType":"YulLiteral","src":"6942:1:87","type":"","value":"0"}],"functionName":{"name":"revert","nativeSrc":"6932:6:87","nodeType":"YulIdentifier","src":"6932:6:87"},"nativeSrc":"6932:12:87","nodeType":"YulFunctionCall","src":"6932:12:87"},"nativeSrc":"6932:12:87","nodeType":"YulExpressionStatement","src":"6932:12:87"}]},"condition":{"arguments":[{"name":"offset","nativeSrc":"6902:6:87","nodeType":"YulIdentifier","src":"6902:6:87"},{"kind":"number","nativeSrc":"6910:18:87","nodeType":"YulLiteral","src":"6910:18:87","type":"","value":"0xffffffffffffffff"}],"functionName":{"name":"gt","nativeSrc":"6899:2:87","nodeType":"YulIdentifier","src":"6899:2:87"},"nativeSrc":"6899:30:87","nodeType":"YulFunctionCall","src":"6899:30:87"},"nativeSrc":"6896:50:87","nodeType":"YulIf","src":"6896:50:87"},{"nativeSrc":"6955:32:87","nodeType":"YulVariableDeclaration","src":"6955:32:87","value":{"arguments":[{"name":"headStart","nativeSrc":"6969:9:87","nodeType":"YulIdentifier","src":"6969:9:87"},{"name":"offset","nativeSrc":"6980:6:87","nodeType":"YulIdentifier","src":"6980:6:87"}],"functionName":{"name":"add","nativeSrc":"6965:3:87","nodeType":"YulIdentifier","src":"6965:3:87"},"nativeSrc":"6965:22:87","nodeType":"YulFunctionCall","src":"6965:22:87"},"variables":[{"name":"_1","nativeSrc":"6959:2:87","nodeType":"YulTypedName","src":"6959:2:87","type":""}]},{"body":{"nativeSrc":"7027:16:87","nodeType":"YulBlock","src":"7027:16:87","statements":[{"expression":{"arguments":[{"kind":"number","nativeSrc":"7036:1:87","nodeType":"YulLiteral","src":"7036:1:87","type":"","value":"0"},{"kind":"number","nativeSrc":"7039:1:87","nodeType":"YulLiteral","src":"7039:1:87","type":"","value":"0"}],"functionName":{"name":"revert","nativeSrc":"7029:6:87","nodeType":"YulIdentifier","src":"7029:6:87"},"nativeSrc":"7029:12:87","nodeType":"YulFunctionCall","src":"7029:12:87"},"nativeSrc":"7029:12:87","nodeType":"YulExpressionStatement","src":"7029:12:87"}]},"condition":{"arguments":[{"arguments":[{"name":"dataEnd","nativeSrc":"7007:7:87","nodeType":"YulIdentifier","src":"7007:7:87"},{"name":"_1","nativeSrc":"7016:2:87","nodeType":"YulIdentifier","src":"7016:2:87"}],"functionName":{"name":"sub","nativeSrc":"7003:3:87","nodeType":"YulIdentifier","src":"7003:3:87"},"nativeSrc":"7003:16:87","nodeType":"YulFunctionCall","src":"7003:16:87"},{"kind":"number","nativeSrc":"7021:4:87","nodeType":"YulLiteral","src":"7021:4:87","type":"","value":"0x60"}],"functionName":{"name":"slt","nativeSrc":"6999:3:87","nodeType":"YulIdentifier","src":"6999:3:87"},"nativeSrc":"6999:27:87","nodeType":"YulFunctionCall","src":"6999:27:87"},"nativeSrc":"6996:47:87","nodeType":"YulIf","src":"6996:47:87"},{"nativeSrc":"7052:35:87","nodeType":"YulVariableDeclaration","src":"7052:35:87","value":{"arguments":[],"functionName":{"name":"allocate_memory_1565","nativeSrc":"7065:20:87","nodeType":"YulIdentifier","src":"7065:20:87"},"nativeSrc":"7065:22:87","nodeType":"YulFunctionCall","src":"7065:22:87"},"variables":[{"name":"value","nativeSrc":"7056:5:87","nodeType":"YulTypedName","src":"7056:5:87","type":""}]},{"nativeSrc":"7096:24:87","nodeType":"YulVariableDeclaration","src":"7096:24:87","value":{"arguments":[{"name":"_1","nativeSrc":"7117:2:87","nodeType":"YulIdentifier","src":"7117:2:87"}],"functionName":{"name":"mload","nativeSrc":"7111:5:87","nodeType":"YulIdentifier","src":"7111:5:87"},"nativeSrc":"7111:9:87","nodeType":"YulFunctionCall","src":"7111:9:87"},"variables":[{"name":"value_1","nativeSrc":"7100:7:87","nodeType":"YulTypedName","src":"7100:7:87","type":""}]},{"body":{"nativeSrc":"7155:16:87","nodeType":"YulBlock","src":"7155:16:87","statements":[{"expression":{"arguments":[{"kind":"number","nativeSrc":"7164:1:87","nodeType":"YulLiteral","src":"7164:1:87","type":"","value":"0"},{"kind":"number","nativeSrc":"7167:1:87","nodeType":"YulLiteral","src":"7167:1:87","type":"","value":"0"}],"functionName":{"name":"revert","nativeSrc":"7157:6:87","nodeType":"YulIdentifier","src":"7157:6:87"},"nativeSrc":"7157:12:87","nodeType":"YulFunctionCall","src":"7157:12:87"},"nativeSrc":"7157:12:87","nodeType":"YulExpressionStatement","src":"7157:12:87"}]},"condition":{"arguments":[{"arguments":[{"name":"value_1","nativeSrc":"7142:7:87","nodeType":"YulIdentifier","src":"7142:7:87"},{"kind":"number","nativeSrc":"7151:1:87","nodeType":"YulLiteral","src":"7151:1:87","type":"","value":"3"}],"functionName":{"name":"lt","nativeSrc":"7139:2:87","nodeType":"YulIdentifier","src":"7139:2:87"},"nativeSrc":"7139:14:87","nodeType":"YulFunctionCall","src":"7139:14:87"}],"functionName":{"name":"iszero","nativeSrc":"7132:6:87","nodeType":"YulIdentifier","src":"7132:6:87"},"nativeSrc":"7132:22:87","nodeType":"YulFunctionCall","src":"7132:22:87"},"nativeSrc":"7129:42:87","nodeType":"YulIf","src":"7129:42:87"},{"expression":{"arguments":[{"name":"value","nativeSrc":"7187:5:87","nodeType":"YulIdentifier","src":"7187:5:87"},{"name":"value_1","nativeSrc":"7194:7:87","nodeType":"YulIdentifier","src":"7194:7:87"}],"functionName":{"name":"mstore","nativeSrc":"7180:6:87","nodeType":"YulIdentifier","src":"7180:6:87"},"nativeSrc":"7180:22:87","nodeType":"YulFunctionCall","src":"7180:22:87"},"nativeSrc":"7180:22:87","nodeType":"YulExpressionStatement","src":"7180:22:87"},{"nativeSrc":"7211:16:87","nodeType":"YulVariableDeclaration","src":"7211:16:87","value":{"kind":"number","nativeSrc":"7226:1:87","nodeType":"YulLiteral","src":"7226:1:87","type":"","value":"0"},"variables":[{"name":"value_2","nativeSrc":"7215:7:87","nodeType":"YulTypedName","src":"7215:7:87","type":""}]},{"nativeSrc":"7236:29:87","nodeType":"YulAssignment","src":"7236:29:87","value":{"arguments":[{"arguments":[{"name":"_1","nativeSrc":"7257:2:87","nodeType":"YulIdentifier","src":"7257:2:87"},{"kind":"number","nativeSrc":"7261:2:87","nodeType":"YulLiteral","src":"7261:2:87","type":"","value":"32"}],"functionName":{"name":"add","nativeSrc":"7253:3:87","nodeType":"YulIdentifier","src":"7253:3:87"},"nativeSrc":"7253:11:87","nodeType":"YulFunctionCall","src":"7253:11:87"}],"functionName":{"name":"mload","nativeSrc":"7247:5:87","nodeType":"YulIdentifier","src":"7247:5:87"},"nativeSrc":"7247:18:87","nodeType":"YulFunctionCall","src":"7247:18:87"},"variableNames":[{"name":"value_2","nativeSrc":"7236:7:87","nodeType":"YulIdentifier","src":"7236:7:87"}]},{"expression":{"arguments":[{"arguments":[{"name":"value","nativeSrc":"7285:5:87","nodeType":"YulIdentifier","src":"7285:5:87"},{"kind":"number","nativeSrc":"7292:2:87","nodeType":"YulLiteral","src":"7292:2:87","type":"","value":"32"}],"functionName":{"name":"add","nativeSrc":"7281:3:87","nodeType":"YulIdentifier","src":"7281:3:87"},"nativeSrc":"7281:14:87","nodeType":"YulFunctionCall","src":"7281:14:87"},{"name":"value_2","nativeSrc":"7297:7:87","nodeType":"YulIdentifier","src":"7297:7:87"}],"functionName":{"name":"mstore","nativeSrc":"7274:6:87","nodeType":"YulIdentifier","src":"7274:6:87"},"nativeSrc":"7274:31:87","nodeType":"YulFunctionCall","src":"7274:31:87"},"nativeSrc":"7274:31:87","nodeType":"YulExpressionStatement","src":"7274:31:87"},{"nativeSrc":"7314:34:87","nodeType":"YulVariableDeclaration","src":"7314:34:87","value":{"arguments":[{"arguments":[{"name":"_1","nativeSrc":"7340:2:87","nodeType":"YulIdentifier","src":"7340:2:87"},{"kind":"number","nativeSrc":"7344:2:87","nodeType":"YulLiteral","src":"7344:2:87","type":"","value":"64"}],"functionName":{"name":"add","nativeSrc":"7336:3:87","nodeType":"YulIdentifier","src":"7336:3:87"},"nativeSrc":"7336:11:87","nodeType":"YulFunctionCall","src":"7336:11:87"}],"functionName":{"name":"mload","nativeSrc":"7330:5:87","nodeType":"YulIdentifier","src":"7330:5:87"},"nativeSrc":"7330:18:87","nodeType":"YulFunctionCall","src":"7330:18:87"},"variables":[{"name":"offset_1","nativeSrc":"7318:8:87","nodeType":"YulTypedName","src":"7318:8:87","type":""}]},{"body":{"nativeSrc":"7393:16:87","nodeType":"YulBlock","src":"7393:16:87","statements":[{"expression":{"arguments":[{"kind":"number","nativeSrc":"7402:1:87","nodeType":"YulLiteral","src":"7402:1:87","type":"","value":"0"},{"kind":"number","nativeSrc":"7405:1:87","nodeType":"YulLiteral","src":"7405:1:87","type":"","value":"0"}],"functionName":{"name":"revert","nativeSrc":"7395:6:87","nodeType":"YulIdentifier","src":"7395:6:87"},"nativeSrc":"7395:12:87","nodeType":"YulFunctionCall","src":"7395:12:87"},"nativeSrc":"7395:12:87","nodeType":"YulExpressionStatement","src":"7395:12:87"}]},"condition":{"arguments":[{"name":"offset_1","nativeSrc":"7363:8:87","nodeType":"YulIdentifier","src":"7363:8:87"},{"kind":"number","nativeSrc":"7373:18:87","nodeType":"YulLiteral","src":"7373:18:87","type":"","value":"0xffffffffffffffff"}],"functionName":{"name":"gt","nativeSrc":"7360:2:87","nodeType":"YulIdentifier","src":"7360:2:87"},"nativeSrc":"7360:32:87","nodeType":"YulFunctionCall","src":"7360:32:87"},"nativeSrc":"7357:52:87","nodeType":"YulIf","src":"7357:52:87"},{"expression":{"arguments":[{"arguments":[{"name":"value","nativeSrc":"7429:5:87","nodeType":"YulIdentifier","src":"7429:5:87"},{"kind":"number","nativeSrc":"7436:2:87","nodeType":"YulLiteral","src":"7436:2:87","type":"","value":"64"}],"functionName":{"name":"add","nativeSrc":"7425:3:87","nodeType":"YulIdentifier","src":"7425:3:87"},"nativeSrc":"7425:14:87","nodeType":"YulFunctionCall","src":"7425:14:87"},{"arguments":[{"arguments":[{"name":"_1","nativeSrc":"7473:2:87","nodeType":"YulIdentifier","src":"7473:2:87"},{"name":"offset_1","nativeSrc":"7477:8:87","nodeType":"YulIdentifier","src":"7477:8:87"}],"functionName":{"name":"add","nativeSrc":"7469:3:87","nodeType":"YulIdentifier","src":"7469:3:87"},"nativeSrc":"7469:17:87","nodeType":"YulFunctionCall","src":"7469:17:87"},{"name":"dataEnd","nativeSrc":"7488:7:87","nodeType":"YulIdentifier","src":"7488:7:87"}],"functionName":{"name":"abi_decode_bytes_fromMemory","nativeSrc":"7441:27:87","nodeType":"YulIdentifier","src":"7441:27:87"},"nativeSrc":"7441:55:87","nodeType":"YulFunctionCall","src":"7441:55:87"}],"functionName":{"name":"mstore","nativeSrc":"7418:6:87","nodeType":"YulIdentifier","src":"7418:6:87"},"nativeSrc":"7418:79:87","nodeType":"YulFunctionCall","src":"7418:79:87"},"nativeSrc":"7418:79:87","nodeType":"YulExpressionStatement","src":"7418:79:87"},{"nativeSrc":"7506:15:87","nodeType":"YulAssignment","src":"7506:15:87","value":{"name":"value","nativeSrc":"7516:5:87","nodeType":"YulIdentifier","src":"7516:5:87"},"variableNames":[{"name":"value0","nativeSrc":"7506:6:87","nodeType":"YulIdentifier","src":"7506:6:87"}]}]},"name":"abi_decode_tuple_t_struct$_SwapConfig_$1113_memory_ptr_fromMemory","nativeSrc":"6677:850:87","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nativeSrc":"6752:9:87","nodeType":"YulTypedName","src":"6752:9:87","type":""},{"name":"dataEnd","nativeSrc":"6763:7:87","nodeType":"YulTypedName","src":"6763:7:87","type":""}],"returnVariables":[{"name":"value0","nativeSrc":"6775:6:87","nodeType":"YulTypedName","src":"6775:6:87","type":""}],"src":"6677:850:87"},{"body":{"nativeSrc":"7697:110:87","nodeType":"YulBlock","src":"7697:110:87","statements":[{"expression":{"arguments":[{"name":"headStart","nativeSrc":"7714:9:87","nodeType":"YulIdentifier","src":"7714:9:87"},{"kind":"number","nativeSrc":"7725:2:87","nodeType":"YulLiteral","src":"7725:2:87","type":"","value":"32"}],"functionName":{"name":"mstore","nativeSrc":"7707:6:87","nodeType":"YulIdentifier","src":"7707:6:87"},"nativeSrc":"7707:21:87","nodeType":"YulFunctionCall","src":"7707:21:87"},"nativeSrc":"7707:21:87","nodeType":"YulExpressionStatement","src":"7707:21:87"},{"nativeSrc":"7737:64:87","nodeType":"YulAssignment","src":"7737:64:87","value":{"arguments":[{"name":"value0","nativeSrc":"7774:6:87","nodeType":"YulIdentifier","src":"7774:6:87"},{"arguments":[{"name":"headStart","nativeSrc":"7786:9:87","nodeType":"YulIdentifier","src":"7786:9:87"},{"kind":"number","nativeSrc":"7797:2:87","nodeType":"YulLiteral","src":"7797:2:87","type":"","value":"32"}],"functionName":{"name":"add","nativeSrc":"7782:3:87","nodeType":"YulIdentifier","src":"7782:3:87"},"nativeSrc":"7782:18:87","nodeType":"YulFunctionCall","src":"7782:18:87"}],"functionName":{"name":"abi_encode_struct_SwapConfig","nativeSrc":"7745:28:87","nodeType":"YulIdentifier","src":"7745:28:87"},"nativeSrc":"7745:56:87","nodeType":"YulFunctionCall","src":"7745:56:87"},"variableNames":[{"name":"tail","nativeSrc":"7737:4:87","nodeType":"YulIdentifier","src":"7737:4:87"}]}]},"name":"abi_encode_tuple_t_struct$_SwapConfig_$1113_memory_ptr__to_t_struct$_SwapConfig_$1113_memory_ptr__fromStack_library_reversed","nativeSrc":"7532:275:87","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nativeSrc":"7666:9:87","nodeType":"YulTypedName","src":"7666:9:87","type":""},{"name":"value0","nativeSrc":"7677:6:87","nodeType":"YulTypedName","src":"7677:6:87","type":""}],"returnVariables":[{"name":"tail","nativeSrc":"7688:4:87","nodeType":"YulTypedName","src":"7688:4:87","type":""}],"src":"7532:275:87"},{"body":{"nativeSrc":"8053:236:87","nodeType":"YulBlock","src":"8053:236:87","statements":[{"expression":{"arguments":[{"name":"headStart","nativeSrc":"8070:9:87","nodeType":"YulIdentifier","src":"8070:9:87"},{"kind":"number","nativeSrc":"8081:2:87","nodeType":"YulLiteral","src":"8081:2:87","type":"","value":"64"}],"functionName":{"name":"mstore","nativeSrc":"8063:6:87","nodeType":"YulIdentifier","src":"8063:6:87"},"nativeSrc":"8063:21:87","nodeType":"YulFunctionCall","src":"8063:21:87"},"nativeSrc":"8063:21:87","nodeType":"YulExpressionStatement","src":"8063:21:87"},{"nativeSrc":"8093:70:87","nodeType":"YulVariableDeclaration","src":"8093:70:87","value":{"arguments":[{"name":"value0","nativeSrc":"8136:6:87","nodeType":"YulIdentifier","src":"8136:6:87"},{"arguments":[{"name":"headStart","nativeSrc":"8148:9:87","nodeType":"YulIdentifier","src":"8148:9:87"},{"kind":"number","nativeSrc":"8159:2:87","nodeType":"YulLiteral","src":"8159:2:87","type":"","value":"64"}],"functionName":{"name":"add","nativeSrc":"8144:3:87","nodeType":"YulIdentifier","src":"8144:3:87"},"nativeSrc":"8144:18:87","nodeType":"YulFunctionCall","src":"8144:18:87"}],"functionName":{"name":"abi_encode_struct_SwapConfig","nativeSrc":"8107:28:87","nodeType":"YulIdentifier","src":"8107:28:87"},"nativeSrc":"8107:56:87","nodeType":"YulFunctionCall","src":"8107:56:87"},"variables":[{"name":"tail_1","nativeSrc":"8097:6:87","nodeType":"YulTypedName","src":"8097:6:87","type":""}]},{"expression":{"arguments":[{"arguments":[{"name":"headStart","nativeSrc":"8183:9:87","nodeType":"YulIdentifier","src":"8183:9:87"},{"kind":"number","nativeSrc":"8194:2:87","nodeType":"YulLiteral","src":"8194:2:87","type":"","value":"32"}],"functionName":{"name":"add","nativeSrc":"8179:3:87","nodeType":"YulIdentifier","src":"8179:3:87"},"nativeSrc":"8179:18:87","nodeType":"YulFunctionCall","src":"8179:18:87"},{"arguments":[{"name":"tail_1","nativeSrc":"8203:6:87","nodeType":"YulIdentifier","src":"8203:6:87"},{"name":"headStart","nativeSrc":"8211:9:87","nodeType":"YulIdentifier","src":"8211:9:87"}],"functionName":{"name":"sub","nativeSrc":"8199:3:87","nodeType":"YulIdentifier","src":"8199:3:87"},"nativeSrc":"8199:22:87","nodeType":"YulFunctionCall","src":"8199:22:87"}],"functionName":{"name":"mstore","nativeSrc":"8172:6:87","nodeType":"YulIdentifier","src":"8172:6:87"},"nativeSrc":"8172:50:87","nodeType":"YulFunctionCall","src":"8172:50:87"},"nativeSrc":"8172:50:87","nodeType":"YulExpressionStatement","src":"8172:50:87"},{"nativeSrc":"8231:52:87","nodeType":"YulAssignment","src":"8231:52:87","value":{"arguments":[{"name":"value1","nativeSrc":"8268:6:87","nodeType":"YulIdentifier","src":"8268:6:87"},{"name":"tail_1","nativeSrc":"8276:6:87","nodeType":"YulIdentifier","src":"8276:6:87"}],"functionName":{"name":"abi_encode_struct_SwapConfig","nativeSrc":"8239:28:87","nodeType":"YulIdentifier","src":"8239:28:87"},"nativeSrc":"8239:44:87","nodeType":"YulFunctionCall","src":"8239:44:87"},"variableNames":[{"name":"tail","nativeSrc":"8231:4:87","nodeType":"YulIdentifier","src":"8231:4:87"}]}]},"name":"abi_encode_tuple_t_struct$_SwapConfig_$1113_memory_ptr_t_struct$_SwapConfig_$1113_memory_ptr__to_t_struct$_SwapConfig_$1113_memory_ptr_t_struct$_SwapConfig_$1113_memory_ptr__fromStack_reversed","nativeSrc":"7812:477:87","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nativeSrc":"8014:9:87","nodeType":"YulTypedName","src":"8014:9:87","type":""},{"name":"value1","nativeSrc":"8025:6:87","nodeType":"YulTypedName","src":"8025:6:87","type":""},{"name":"value0","nativeSrc":"8033:6:87","nodeType":"YulTypedName","src":"8033:6:87","type":""}],"returnVariables":[{"name":"tail","nativeSrc":"8044:4:87","nodeType":"YulTypedName","src":"8044:4:87","type":""}],"src":"7812:477:87"},{"body":{"nativeSrc":"8349:325:87","nodeType":"YulBlock","src":"8349:325:87","statements":[{"nativeSrc":"8359:22:87","nodeType":"YulAssignment","src":"8359:22:87","value":{"arguments":[{"kind":"number","nativeSrc":"8373:1:87","nodeType":"YulLiteral","src":"8373:1:87","type":"","value":"1"},{"name":"data","nativeSrc":"8376:4:87","nodeType":"YulIdentifier","src":"8376:4:87"}],"functionName":{"name":"shr","nativeSrc":"8369:3:87","nodeType":"YulIdentifier","src":"8369:3:87"},"nativeSrc":"8369:12:87","nodeType":"YulFunctionCall","src":"8369:12:87"},"variableNames":[{"name":"length","nativeSrc":"8359:6:87","nodeType":"YulIdentifier","src":"8359:6:87"}]},{"nativeSrc":"8390:38:87","nodeType":"YulVariableDeclaration","src":"8390:38:87","value":{"arguments":[{"name":"data","nativeSrc":"8420:4:87","nodeType":"YulIdentifier","src":"8420:4:87"},{"kind":"number","nativeSrc":"8426:1:87","nodeType":"YulLiteral","src":"8426:1:87","type":"","value":"1"}],"functionName":{"name":"and","nativeSrc":"8416:3:87","nodeType":"YulIdentifier","src":"8416:3:87"},"nativeSrc":"8416:12:87","nodeType":"YulFunctionCall","src":"8416:12:87"},"variables":[{"name":"outOfPlaceEncoding","nativeSrc":"8394:18:87","nodeType":"YulTypedName","src":"8394:18:87","type":""}]},{"body":{"nativeSrc":"8467:31:87","nodeType":"YulBlock","src":"8467:31:87","statements":[{"nativeSrc":"8469:27:87","nodeType":"YulAssignment","src":"8469:27:87","value":{"arguments":[{"name":"length","nativeSrc":"8483:6:87","nodeType":"YulIdentifier","src":"8483:6:87"},{"kind":"number","nativeSrc":"8491:4:87","nodeType":"YulLiteral","src":"8491:4:87","type":"","value":"0x7f"}],"functionName":{"name":"and","nativeSrc":"8479:3:87","nodeType":"YulIdentifier","src":"8479:3:87"},"nativeSrc":"8479:17:87","nodeType":"YulFunctionCall","src":"8479:17:87"},"variableNames":[{"name":"length","nativeSrc":"8469:6:87","nodeType":"YulIdentifier","src":"8469:6:87"}]}]},"condition":{"arguments":[{"name":"outOfPlaceEncoding","nativeSrc":"8447:18:87","nodeType":"YulIdentifier","src":"8447:18:87"}],"functionName":{"name":"iszero","nativeSrc":"8440:6:87","nodeType":"YulIdentifier","src":"8440:6:87"},"nativeSrc":"8440:26:87","nodeType":"YulFunctionCall","src":"8440:26:87"},"nativeSrc":"8437:61:87","nodeType":"YulIf","src":"8437:61:87"},{"body":{"nativeSrc":"8557:111:87","nodeType":"YulBlock","src":"8557:111:87","statements":[{"expression":{"arguments":[{"kind":"number","nativeSrc":"8578:1:87","nodeType":"YulLiteral","src":"8578:1:87","type":"","value":"0"},{"arguments":[{"kind":"number","nativeSrc":"8585:3:87","nodeType":"YulLiteral","src":"8585:3:87","type":"","value":"224"},{"kind":"number","nativeSrc":"8590:10:87","nodeType":"YulLiteral","src":"8590:10:87","type":"","value":"0x4e487b71"}],"functionName":{"name":"shl","nativeSrc":"8581:3:87","nodeType":"YulIdentifier","src":"8581:3:87"},"nativeSrc":"8581:20:87","nodeType":"YulFunctionCall","src":"8581:20:87"}],"functionName":{"name":"mstore","nativeSrc":"8571:6:87","nodeType":"YulIdentifier","src":"8571:6:87"},"nativeSrc":"8571:31:87","nodeType":"YulFunctionCall","src":"8571:31:87"},"nativeSrc":"8571:31:87","nodeType":"YulExpressionStatement","src":"8571:31:87"},{"expression":{"arguments":[{"kind":"number","nativeSrc":"8622:1:87","nodeType":"YulLiteral","src":"8622:1:87","type":"","value":"4"},{"kind":"number","nativeSrc":"8625:4:87","nodeType":"YulLiteral","src":"8625:4:87","type":"","value":"0x22"}],"functionName":{"name":"mstore","nativeSrc":"8615:6:87","nodeType":"YulIdentifier","src":"8615:6:87"},"nativeSrc":"8615:15:87","nodeType":"YulFunctionCall","src":"8615:15:87"},"nativeSrc":"8615:15:87","nodeType":"YulExpressionStatement","src":"8615:15:87"},{"expression":{"arguments":[{"kind":"number","nativeSrc":"8650:1:87","nodeType":"YulLiteral","src":"8650:1:87","type":"","value":"0"},{"kind":"number","nativeSrc":"8653:4:87","nodeType":"YulLiteral","src":"8653:4:87","type":"","value":"0x24"}],"functionName":{"name":"revert","nativeSrc":"8643:6:87","nodeType":"YulIdentifier","src":"8643:6:87"},"nativeSrc":"8643:15:87","nodeType":"YulFunctionCall","src":"8643:15:87"},"nativeSrc":"8643:15:87","nodeType":"YulExpressionStatement","src":"8643:15:87"}]},"condition":{"arguments":[{"name":"outOfPlaceEncoding","nativeSrc":"8513:18:87","nodeType":"YulIdentifier","src":"8513:18:87"},{"arguments":[{"name":"length","nativeSrc":"8536:6:87","nodeType":"YulIdentifier","src":"8536:6:87"},{"kind":"number","nativeSrc":"8544:2:87","nodeType":"YulLiteral","src":"8544:2:87","type":"","value":"32"}],"functionName":{"name":"lt","nativeSrc":"8533:2:87","nodeType":"YulIdentifier","src":"8533:2:87"},"nativeSrc":"8533:14:87","nodeType":"YulFunctionCall","src":"8533:14:87"}],"functionName":{"name":"eq","nativeSrc":"8510:2:87","nodeType":"YulIdentifier","src":"8510:2:87"},"nativeSrc":"8510:38:87","nodeType":"YulFunctionCall","src":"8510:38:87"},"nativeSrc":"8507:161:87","nodeType":"YulIf","src":"8507:161:87"}]},"name":"extract_byte_array_length","nativeSrc":"8294:380:87","nodeType":"YulFunctionDefinition","parameters":[{"name":"data","nativeSrc":"8329:4:87","nodeType":"YulTypedName","src":"8329:4:87","type":""}],"returnVariables":[{"name":"length","nativeSrc":"8338:6:87","nodeType":"YulTypedName","src":"8338:6:87","type":""}],"src":"8294:380:87"},{"body":{"nativeSrc":"8734:65:87","nodeType":"YulBlock","src":"8734:65:87","statements":[{"expression":{"arguments":[{"kind":"number","nativeSrc":"8751:1:87","nodeType":"YulLiteral","src":"8751:1:87","type":"","value":"0"},{"name":"ptr","nativeSrc":"8754:3:87","nodeType":"YulIdentifier","src":"8754:3:87"}],"functionName":{"name":"mstore","nativeSrc":"8744:6:87","nodeType":"YulIdentifier","src":"8744:6:87"},"nativeSrc":"8744:14:87","nodeType":"YulFunctionCall","src":"8744:14:87"},"nativeSrc":"8744:14:87","nodeType":"YulExpressionStatement","src":"8744:14:87"},{"nativeSrc":"8767:26:87","nodeType":"YulAssignment","src":"8767:26:87","value":{"arguments":[{"kind":"number","nativeSrc":"8785:1:87","nodeType":"YulLiteral","src":"8785:1:87","type":"","value":"0"},{"kind":"number","nativeSrc":"8788:4:87","nodeType":"YulLiteral","src":"8788:4:87","type":"","value":"0x20"}],"functionName":{"name":"keccak256","nativeSrc":"8775:9:87","nodeType":"YulIdentifier","src":"8775:9:87"},"nativeSrc":"8775:18:87","nodeType":"YulFunctionCall","src":"8775:18:87"},"variableNames":[{"name":"data","nativeSrc":"8767:4:87","nodeType":"YulIdentifier","src":"8767:4:87"}]}]},"name":"array_dataslot_bytes_storage","nativeSrc":"8679:120:87","nodeType":"YulFunctionDefinition","parameters":[{"name":"ptr","nativeSrc":"8717:3:87","nodeType":"YulTypedName","src":"8717:3:87","type":""}],"returnVariables":[{"name":"data","nativeSrc":"8725:4:87","nodeType":"YulTypedName","src":"8725:4:87","type":""}],"src":"8679:120:87"},{"body":{"nativeSrc":"8884:437:87","nodeType":"YulBlock","src":"8884:437:87","statements":[{"body":{"nativeSrc":"8917:398:87","nodeType":"YulBlock","src":"8917:398:87","statements":[{"expression":{"arguments":[{"kind":"number","nativeSrc":"8938:1:87","nodeType":"YulLiteral","src":"8938:1:87","type":"","value":"0"},{"name":"array","nativeSrc":"8941:5:87","nodeType":"YulIdentifier","src":"8941:5:87"}],"functionName":{"name":"mstore","nativeSrc":"8931:6:87","nodeType":"YulIdentifier","src":"8931:6:87"},"nativeSrc":"8931:16:87","nodeType":"YulFunctionCall","src":"8931:16:87"},"nativeSrc":"8931:16:87","nodeType":"YulExpressionStatement","src":"8931:16:87"},{"nativeSrc":"8960:30:87","nodeType":"YulVariableDeclaration","src":"8960:30:87","value":{"arguments":[{"kind":"number","nativeSrc":"8982:1:87","nodeType":"YulLiteral","src":"8982:1:87","type":"","value":"0"},{"kind":"number","nativeSrc":"8985:4:87","nodeType":"YulLiteral","src":"8985:4:87","type":"","value":"0x20"}],"functionName":{"name":"keccak256","nativeSrc":"8972:9:87","nodeType":"YulIdentifier","src":"8972:9:87"},"nativeSrc":"8972:18:87","nodeType":"YulFunctionCall","src":"8972:18:87"},"variables":[{"name":"data","nativeSrc":"8964:4:87","nodeType":"YulTypedName","src":"8964:4:87","type":""}]},{"nativeSrc":"9003:57:87","nodeType":"YulVariableDeclaration","src":"9003:57:87","value":{"arguments":[{"name":"data","nativeSrc":"9026:4:87","nodeType":"YulIdentifier","src":"9026:4:87"},{"arguments":[{"kind":"number","nativeSrc":"9036:1:87","nodeType":"YulLiteral","src":"9036:1:87","type":"","value":"5"},{"arguments":[{"name":"startIndex","nativeSrc":"9043:10:87","nodeType":"YulIdentifier","src":"9043:10:87"},{"kind":"number","nativeSrc":"9055:2:87","nodeType":"YulLiteral","src":"9055:2:87","type":"","value":"31"}],"functionName":{"name":"add","nativeSrc":"9039:3:87","nodeType":"YulIdentifier","src":"9039:3:87"},"nativeSrc":"9039:19:87","nodeType":"YulFunctionCall","src":"9039:19:87"}],"functionName":{"name":"shr","nativeSrc":"9032:3:87","nodeType":"YulIdentifier","src":"9032:3:87"},"nativeSrc":"9032:27:87","nodeType":"YulFunctionCall","src":"9032:27:87"}],"functionName":{"name":"add","nativeSrc":"9022:3:87","nodeType":"YulIdentifier","src":"9022:3:87"},"nativeSrc":"9022:38:87","nodeType":"YulFunctionCall","src":"9022:38:87"},"variables":[{"name":"deleteStart","nativeSrc":"9007:11:87","nodeType":"YulTypedName","src":"9007:11:87","type":""}]},{"body":{"nativeSrc":"9097:23:87","nodeType":"YulBlock","src":"9097:23:87","statements":[{"nativeSrc":"9099:19:87","nodeType":"YulAssignment","src":"9099:19:87","value":{"name":"data","nativeSrc":"9114:4:87","nodeType":"YulIdentifier","src":"9114:4:87"},"variableNames":[{"name":"deleteStart","nativeSrc":"9099:11:87","nodeType":"YulIdentifier","src":"9099:11:87"}]}]},"condition":{"arguments":[{"name":"startIndex","nativeSrc":"9079:10:87","nodeType":"YulIdentifier","src":"9079:10:87"},{"kind":"number","nativeSrc":"9091:4:87","nodeType":"YulLiteral","src":"9091:4:87","type":"","value":"0x20"}],"functionName":{"name":"lt","nativeSrc":"9076:2:87","nodeType":"YulIdentifier","src":"9076:2:87"},"nativeSrc":"9076:20:87","nodeType":"YulFunctionCall","src":"9076:20:87"},"nativeSrc":"9073:47:87","nodeType":"YulIf","src":"9073:47:87"},{"nativeSrc":"9133:41:87","nodeType":"YulVariableDeclaration","src":"9133:41:87","value":{"arguments":[{"name":"data","nativeSrc":"9147:4:87","nodeType":"YulIdentifier","src":"9147:4:87"},{"arguments":[{"kind":"number","nativeSrc":"9157:1:87","nodeType":"YulLiteral","src":"9157:1:87","type":"","value":"5"},{"arguments":[{"name":"len","nativeSrc":"9164:3:87","nodeType":"YulIdentifier","src":"9164:3:87"},{"kind":"number","nativeSrc":"9169:2:87","nodeType":"YulLiteral","src":"9169:2:87","type":"","value":"31"}],"functionName":{"name":"add","nativeSrc":"9160:3:87","nodeType":"YulIdentifier","src":"9160:3:87"},"nativeSrc":"9160:12:87","nodeType":"YulFunctionCall","src":"9160:12:87"}],"functionName":{"name":"shr","nativeSrc":"9153:3:87","nodeType":"YulIdentifier","src":"9153:3:87"},"nativeSrc":"9153:20:87","nodeType":"YulFunctionCall","src":"9153:20:87"}],"functionName":{"name":"add","nativeSrc":"9143:3:87","nodeType":"YulIdentifier","src":"9143:3:87"},"nativeSrc":"9143:31:87","nodeType":"YulFunctionCall","src":"9143:31:87"},"variables":[{"name":"_1","nativeSrc":"9137:2:87","nodeType":"YulTypedName","src":"9137:2:87","type":""}]},{"nativeSrc":"9187:24:87","nodeType":"YulVariableDeclaration","src":"9187:24:87","value":{"name":"deleteStart","nativeSrc":"9200:11:87","nodeType":"YulIdentifier","src":"9200:11:87"},"variables":[{"name":"start","nativeSrc":"9191:5:87","nodeType":"YulTypedName","src":"9191:5:87","type":""}]},{"body":{"nativeSrc":"9285:20:87","nodeType":"YulBlock","src":"9285:20:87","statements":[{"expression":{"arguments":[{"name":"start","nativeSrc":"9294:5:87","nodeType":"YulIdentifier","src":"9294:5:87"},{"kind":"number","nativeSrc":"9301:1:87","nodeType":"YulLiteral","src":"9301:1:87","type":"","value":"0"}],"functionName":{"name":"sstore","nativeSrc":"9287:6:87","nodeType":"YulIdentifier","src":"9287:6:87"},"nativeSrc":"9287:16:87","nodeType":"YulFunctionCall","src":"9287:16:87"},"nativeSrc":"9287:16:87","nodeType":"YulExpressionStatement","src":"9287:16:87"}]},"condition":{"arguments":[{"name":"start","nativeSrc":"9235:5:87","nodeType":"YulIdentifier","src":"9235:5:87"},{"name":"_1","nativeSrc":"9242:2:87","nodeType":"YulIdentifier","src":"9242:2:87"}],"functionName":{"name":"lt","nativeSrc":"9232:2:87","nodeType":"YulIdentifier","src":"9232:2:87"},"nativeSrc":"9232:13:87","nodeType":"YulFunctionCall","src":"9232:13:87"},"nativeSrc":"9224:81:87","nodeType":"YulForLoop","post":{"nativeSrc":"9246:26:87","nodeType":"YulBlock","src":"9246:26:87","statements":[{"nativeSrc":"9248:22:87","nodeType":"YulAssignment","src":"9248:22:87","value":{"arguments":[{"name":"start","nativeSrc":"9261:5:87","nodeType":"YulIdentifier","src":"9261:5:87"},{"kind":"number","nativeSrc":"9268:1:87","nodeType":"YulLiteral","src":"9268:1:87","type":"","value":"1"}],"functionName":{"name":"add","nativeSrc":"9257:3:87","nodeType":"YulIdentifier","src":"9257:3:87"},"nativeSrc":"9257:13:87","nodeType":"YulFunctionCall","src":"9257:13:87"},"variableNames":[{"name":"start","nativeSrc":"9248:5:87","nodeType":"YulIdentifier","src":"9248:5:87"}]}]},"pre":{"nativeSrc":"9228:3:87","nodeType":"YulBlock","src":"9228:3:87","statements":[]},"src":"9224:81:87"}]},"condition":{"arguments":[{"name":"len","nativeSrc":"8900:3:87","nodeType":"YulIdentifier","src":"8900:3:87"},{"kind":"number","nativeSrc":"8905:2:87","nodeType":"YulLiteral","src":"8905:2:87","type":"","value":"31"}],"functionName":{"name":"gt","nativeSrc":"8897:2:87","nodeType":"YulIdentifier","src":"8897:2:87"},"nativeSrc":"8897:11:87","nodeType":"YulFunctionCall","src":"8897:11:87"},"nativeSrc":"8894:421:87","nodeType":"YulIf","src":"8894:421:87"}]},"name":"clean_up_bytearray_end_slots_bytes_storage","nativeSrc":"8804:517:87","nodeType":"YulFunctionDefinition","parameters":[{"name":"array","nativeSrc":"8856:5:87","nodeType":"YulTypedName","src":"8856:5:87","type":""},{"name":"len","nativeSrc":"8863:3:87","nodeType":"YulTypedName","src":"8863:3:87","type":""},{"name":"startIndex","nativeSrc":"8868:10:87","nodeType":"YulTypedName","src":"8868:10:87","type":""}],"src":"8804:517:87"},{"body":{"nativeSrc":"9411:81:87","nodeType":"YulBlock","src":"9411:81:87","statements":[{"nativeSrc":"9421:65:87","nodeType":"YulAssignment","src":"9421:65:87","value":{"arguments":[{"arguments":[{"name":"data","nativeSrc":"9436:4:87","nodeType":"YulIdentifier","src":"9436:4:87"},{"arguments":[{"arguments":[{"arguments":[{"kind":"number","nativeSrc":"9454:1:87","nodeType":"YulLiteral","src":"9454:1:87","type":"","value":"3"},{"name":"len","nativeSrc":"9457:3:87","nodeType":"YulIdentifier","src":"9457:3:87"}],"functionName":{"name":"shl","nativeSrc":"9450:3:87","nodeType":"YulIdentifier","src":"9450:3:87"},"nativeSrc":"9450:11:87","nodeType":"YulFunctionCall","src":"9450:11:87"},{"arguments":[{"kind":"number","nativeSrc":"9467:1:87","nodeType":"YulLiteral","src":"9467:1:87","type":"","value":"0"}],"functionName":{"name":"not","nativeSrc":"9463:3:87","nodeType":"YulIdentifier","src":"9463:3:87"},"nativeSrc":"9463:6:87","nodeType":"YulFunctionCall","src":"9463:6:87"}],"functionName":{"name":"shr","nativeSrc":"9446:3:87","nodeType":"YulIdentifier","src":"9446:3:87"},"nativeSrc":"9446:24:87","nodeType":"YulFunctionCall","src":"9446:24:87"}],"functionName":{"name":"not","nativeSrc":"9442:3:87","nodeType":"YulIdentifier","src":"9442:3:87"},"nativeSrc":"9442:29:87","nodeType":"YulFunctionCall","src":"9442:29:87"}],"functionName":{"name":"and","nativeSrc":"9432:3:87","nodeType":"YulIdentifier","src":"9432:3:87"},"nativeSrc":"9432:40:87","nodeType":"YulFunctionCall","src":"9432:40:87"},{"arguments":[{"kind":"number","nativeSrc":"9478:1:87","nodeType":"YulLiteral","src":"9478:1:87","type":"","value":"1"},{"name":"len","nativeSrc":"9481:3:87","nodeType":"YulIdentifier","src":"9481:3:87"}],"functionName":{"name":"shl","nativeSrc":"9474:3:87","nodeType":"YulIdentifier","src":"9474:3:87"},"nativeSrc":"9474:11:87","nodeType":"YulFunctionCall","src":"9474:11:87"}],"functionName":{"name":"or","nativeSrc":"9429:2:87","nodeType":"YulIdentifier","src":"9429:2:87"},"nativeSrc":"9429:57:87","nodeType":"YulFunctionCall","src":"9429:57:87"},"variableNames":[{"name":"used","nativeSrc":"9421:4:87","nodeType":"YulIdentifier","src":"9421:4:87"}]}]},"name":"extract_used_part_and_set_length_of_short_byte_array","nativeSrc":"9326:166:87","nodeType":"YulFunctionDefinition","parameters":[{"name":"data","nativeSrc":"9388:4:87","nodeType":"YulTypedName","src":"9388:4:87","type":""},{"name":"len","nativeSrc":"9394:3:87","nodeType":"YulTypedName","src":"9394:3:87","type":""}],"returnVariables":[{"name":"used","nativeSrc":"9402:4:87","nodeType":"YulTypedName","src":"9402:4:87","type":""}],"src":"9326:166:87"},{"body":{"nativeSrc":"9591:1201:87","nodeType":"YulBlock","src":"9591:1201:87","statements":[{"nativeSrc":"9601:24:87","nodeType":"YulVariableDeclaration","src":"9601:24:87","value":{"arguments":[{"name":"src","nativeSrc":"9621:3:87","nodeType":"YulIdentifier","src":"9621:3:87"}],"functionName":{"name":"mload","nativeSrc":"9615:5:87","nodeType":"YulIdentifier","src":"9615:5:87"},"nativeSrc":"9615:10:87","nodeType":"YulFunctionCall","src":"9615:10:87"},"variables":[{"name":"newLen","nativeSrc":"9605:6:87","nodeType":"YulTypedName","src":"9605:6:87","type":""}]},{"body":{"nativeSrc":"9668:22:87","nodeType":"YulBlock","src":"9668:22:87","statements":[{"expression":{"arguments":[],"functionName":{"name":"panic_error_0x41","nativeSrc":"9670:16:87","nodeType":"YulIdentifier","src":"9670:16:87"},"nativeSrc":"9670:18:87","nodeType":"YulFunctionCall","src":"9670:18:87"},"nativeSrc":"9670:18:87","nodeType":"YulExpressionStatement","src":"9670:18:87"}]},"condition":{"arguments":[{"name":"newLen","nativeSrc":"9640:6:87","nodeType":"YulIdentifier","src":"9640:6:87"},{"kind":"number","nativeSrc":"9648:18:87","nodeType":"YulLiteral","src":"9648:18:87","type":"","value":"0xffffffffffffffff"}],"functionName":{"name":"gt","nativeSrc":"9637:2:87","nodeType":"YulIdentifier","src":"9637:2:87"},"nativeSrc":"9637:30:87","nodeType":"YulFunctionCall","src":"9637:30:87"},"nativeSrc":"9634:56:87","nodeType":"YulIf","src":"9634:56:87"},{"expression":{"arguments":[{"name":"slot","nativeSrc":"9742:4:87","nodeType":"YulIdentifier","src":"9742:4:87"},{"arguments":[{"arguments":[{"name":"slot","nativeSrc":"9780:4:87","nodeType":"YulIdentifier","src":"9780:4:87"}],"functionName":{"name":"sload","nativeSrc":"9774:5:87","nodeType":"YulIdentifier","src":"9774:5:87"},"nativeSrc":"9774:11:87","nodeType":"YulFunctionCall","src":"9774:11:87"}],"functionName":{"name":"extract_byte_array_length","nativeSrc":"9748:25:87","nodeType":"YulIdentifier","src":"9748:25:87"},"nativeSrc":"9748:38:87","nodeType":"YulFunctionCall","src":"9748:38:87"},{"name":"newLen","nativeSrc":"9788:6:87","nodeType":"YulIdentifier","src":"9788:6:87"}],"functionName":{"name":"clean_up_bytearray_end_slots_bytes_storage","nativeSrc":"9699:42:87","nodeType":"YulIdentifier","src":"9699:42:87"},"nativeSrc":"9699:96:87","nodeType":"YulFunctionCall","src":"9699:96:87"},"nativeSrc":"9699:96:87","nodeType":"YulExpressionStatement","src":"9699:96:87"},{"nativeSrc":"9804:18:87","nodeType":"YulVariableDeclaration","src":"9804:18:87","value":{"kind":"number","nativeSrc":"9821:1:87","nodeType":"YulLiteral","src":"9821:1:87","type":"","value":"0"},"variables":[{"name":"srcOffset","nativeSrc":"9808:9:87","nodeType":"YulTypedName","src":"9808:9:87","type":""}]},{"nativeSrc":"9831:17:87","nodeType":"YulAssignment","src":"9831:17:87","value":{"kind":"number","nativeSrc":"9844:4:87","nodeType":"YulLiteral","src":"9844:4:87","type":"","value":"0x20"},"variableNames":[{"name":"srcOffset","nativeSrc":"9831:9:87","nodeType":"YulIdentifier","src":"9831:9:87"}]},{"cases":[{"body":{"nativeSrc":"9894:641:87","nodeType":"YulBlock","src":"9894:641:87","statements":[{"nativeSrc":"9908:35:87","nodeType":"YulVariableDeclaration","src":"9908:35:87","value":{"arguments":[{"name":"newLen","nativeSrc":"9927:6:87","nodeType":"YulIdentifier","src":"9927:6:87"},{"arguments":[{"kind":"number","nativeSrc":"9939:2:87","nodeType":"YulLiteral","src":"9939:2:87","type":"","value":"31"}],"functionName":{"name":"not","nativeSrc":"9935:3:87","nodeType":"YulIdentifier","src":"9935:3:87"},"nativeSrc":"9935:7:87","nodeType":"YulFunctionCall","src":"9935:7:87"}],"functionName":{"name":"and","nativeSrc":"9923:3:87","nodeType":"YulIdentifier","src":"9923:3:87"},"nativeSrc":"9923:20:87","nodeType":"YulFunctionCall","src":"9923:20:87"},"variables":[{"name":"loopEnd","nativeSrc":"9912:7:87","nodeType":"YulTypedName","src":"9912:7:87","type":""}]},{"nativeSrc":"9956:48:87","nodeType":"YulVariableDeclaration","src":"9956:48:87","value":{"arguments":[{"name":"slot","nativeSrc":"9999:4:87","nodeType":"YulIdentifier","src":"9999:4:87"}],"functionName":{"name":"array_dataslot_bytes_storage","nativeSrc":"9970:28:87","nodeType":"YulIdentifier","src":"9970:28:87"},"nativeSrc":"9970:34:87","nodeType":"YulFunctionCall","src":"9970:34:87"},"variables":[{"name":"dstPtr","nativeSrc":"9960:6:87","nodeType":"YulTypedName","src":"9960:6:87","type":""}]},{"nativeSrc":"10017:10:87","nodeType":"YulVariableDeclaration","src":"10017:10:87","value":{"kind":"number","nativeSrc":"10026:1:87","nodeType":"YulLiteral","src":"10026:1:87","type":"","value":"0"},"variables":[{"name":"i","nativeSrc":"10021:1:87","nodeType":"YulTypedName","src":"10021:1:87","type":""}]},{"body":{"nativeSrc":"10097:165:87","nodeType":"YulBlock","src":"10097:165:87","statements":[{"expression":{"arguments":[{"name":"dstPtr","nativeSrc":"10122:6:87","nodeType":"YulIdentifier","src":"10122:6:87"},{"arguments":[{"arguments":[{"name":"src","nativeSrc":"10140:3:87","nodeType":"YulIdentifier","src":"10140:3:87"},{"name":"srcOffset","nativeSrc":"10145:9:87","nodeType":"YulIdentifier","src":"10145:9:87"}],"functionName":{"name":"add","nativeSrc":"10136:3:87","nodeType":"YulIdentifier","src":"10136:3:87"},"nativeSrc":"10136:19:87","nodeType":"YulFunctionCall","src":"10136:19:87"}],"functionName":{"name":"mload","nativeSrc":"10130:5:87","nodeType":"YulIdentifier","src":"10130:5:87"},"nativeSrc":"10130:26:87","nodeType":"YulFunctionCall","src":"10130:26:87"}],"functionName":{"name":"sstore","nativeSrc":"10115:6:87","nodeType":"YulIdentifier","src":"10115:6:87"},"nativeSrc":"10115:42:87","nodeType":"YulFunctionCall","src":"10115:42:87"},"nativeSrc":"10115:42:87","nodeType":"YulExpressionStatement","src":"10115:42:87"},{"nativeSrc":"10174:24:87","nodeType":"YulAssignment","src":"10174:24:87","value":{"arguments":[{"name":"dstPtr","nativeSrc":"10188:6:87","nodeType":"YulIdentifier","src":"10188:6:87"},{"kind":"number","nativeSrc":"10196:1:87","nodeType":"YulLiteral","src":"10196:1:87","type":"","value":"1"}],"functionName":{"name":"add","nativeSrc":"10184:3:87","nodeType":"YulIdentifier","src":"10184:3:87"},"nativeSrc":"10184:14:87","nodeType":"YulFunctionCall","src":"10184:14:87"},"variableNames":[{"name":"dstPtr","nativeSrc":"10174:6:87","nodeType":"YulIdentifier","src":"10174:6:87"}]},{"nativeSrc":"10215:33:87","nodeType":"YulAssignment","src":"10215:33:87","value":{"arguments":[{"name":"srcOffset","nativeSrc":"10232:9:87","nodeType":"YulIdentifier","src":"10232:9:87"},{"kind":"number","nativeSrc":"10243:4:87","nodeType":"YulLiteral","src":"10243:4:87","type":"","value":"0x20"}],"functionName":{"name":"add","nativeSrc":"10228:3:87","nodeType":"YulIdentifier","src":"10228:3:87"},"nativeSrc":"10228:20:87","nodeType":"YulFunctionCall","src":"10228:20:87"},"variableNames":[{"name":"srcOffset","nativeSrc":"10215:9:87","nodeType":"YulIdentifier","src":"10215:9:87"}]}]},"condition":{"arguments":[{"name":"i","nativeSrc":"10051:1:87","nodeType":"YulIdentifier","src":"10051:1:87"},{"name":"loopEnd","nativeSrc":"10054:7:87","nodeType":"YulIdentifier","src":"10054:7:87"}],"functionName":{"name":"lt","nativeSrc":"10048:2:87","nodeType":"YulIdentifier","src":"10048:2:87"},"nativeSrc":"10048:14:87","nodeType":"YulFunctionCall","src":"10048:14:87"},"nativeSrc":"10040:222:87","nodeType":"YulForLoop","post":{"nativeSrc":"10063:21:87","nodeType":"YulBlock","src":"10063:21:87","statements":[{"nativeSrc":"10065:17:87","nodeType":"YulAssignment","src":"10065:17:87","value":{"arguments":[{"name":"i","nativeSrc":"10074:1:87","nodeType":"YulIdentifier","src":"10074:1:87"},{"kind":"number","nativeSrc":"10077:4:87","nodeType":"YulLiteral","src":"10077:4:87","type":"","value":"0x20"}],"functionName":{"name":"add","nativeSrc":"10070:3:87","nodeType":"YulIdentifier","src":"10070:3:87"},"nativeSrc":"10070:12:87","nodeType":"YulFunctionCall","src":"10070:12:87"},"variableNames":[{"name":"i","nativeSrc":"10065:1:87","nodeType":"YulIdentifier","src":"10065:1:87"}]}]},"pre":{"nativeSrc":"10044:3:87","nodeType":"YulBlock","src":"10044:3:87","statements":[]},"src":"10040:222:87"},{"body":{"nativeSrc":"10310:166:87","nodeType":"YulBlock","src":"10310:166:87","statements":[{"nativeSrc":"10328:43:87","nodeType":"YulVariableDeclaration","src":"10328:43:87","value":{"arguments":[{"arguments":[{"name":"src","nativeSrc":"10355:3:87","nodeType":"YulIdentifier","src":"10355:3:87"},{"name":"srcOffset","nativeSrc":"10360:9:87","nodeType":"YulIdentifier","src":"10360:9:87"}],"functionName":{"name":"add","nativeSrc":"10351:3:87","nodeType":"YulIdentifier","src":"10351:3:87"},"nativeSrc":"10351:19:87","nodeType":"YulFunctionCall","src":"10351:19:87"}],"functionName":{"name":"mload","nativeSrc":"10345:5:87","nodeType":"YulIdentifier","src":"10345:5:87"},"nativeSrc":"10345:26:87","nodeType":"YulFunctionCall","src":"10345:26:87"},"variables":[{"name":"lastValue","nativeSrc":"10332:9:87","nodeType":"YulTypedName","src":"10332:9:87","type":""}]},{"expression":{"arguments":[{"name":"dstPtr","nativeSrc":"10395:6:87","nodeType":"YulIdentifier","src":"10395:6:87"},{"arguments":[{"name":"lastValue","nativeSrc":"10407:9:87","nodeType":"YulIdentifier","src":"10407:9:87"},{"arguments":[{"arguments":[{"arguments":[{"arguments":[{"kind":"number","nativeSrc":"10434:1:87","nodeType":"YulLiteral","src":"10434:1:87","type":"","value":"3"},{"name":"newLen","nativeSrc":"10437:6:87","nodeType":"YulIdentifier","src":"10437:6:87"}],"functionName":{"name":"shl","nativeSrc":"10430:3:87","nodeType":"YulIdentifier","src":"10430:3:87"},"nativeSrc":"10430:14:87","nodeType":"YulFunctionCall","src":"10430:14:87"},{"kind":"number","nativeSrc":"10446:3:87","nodeType":"YulLiteral","src":"10446:3:87","type":"","value":"248"}],"functionName":{"name":"and","nativeSrc":"10426:3:87","nodeType":"YulIdentifier","src":"10426:3:87"},"nativeSrc":"10426:24:87","nodeType":"YulFunctionCall","src":"10426:24:87"},{"arguments":[{"kind":"number","nativeSrc":"10456:1:87","nodeType":"YulLiteral","src":"10456:1:87","type":"","value":"0"}],"functionName":{"name":"not","nativeSrc":"10452:3:87","nodeType":"YulIdentifier","src":"10452:3:87"},"nativeSrc":"10452:6:87","nodeType":"YulFunctionCall","src":"10452:6:87"}],"functionName":{"name":"shr","nativeSrc":"10422:3:87","nodeType":"YulIdentifier","src":"10422:3:87"},"nativeSrc":"10422:37:87","nodeType":"YulFunctionCall","src":"10422:37:87"}],"functionName":{"name":"not","nativeSrc":"10418:3:87","nodeType":"YulIdentifier","src":"10418:3:87"},"nativeSrc":"10418:42:87","nodeType":"YulFunctionCall","src":"10418:42:87"}],"functionName":{"name":"and","nativeSrc":"10403:3:87","nodeType":"YulIdentifier","src":"10403:3:87"},"nativeSrc":"10403:58:87","nodeType":"YulFunctionCall","src":"10403:58:87"}],"functionName":{"name":"sstore","nativeSrc":"10388:6:87","nodeType":"YulIdentifier","src":"10388:6:87"},"nativeSrc":"10388:74:87","nodeType":"YulFunctionCall","src":"10388:74:87"},"nativeSrc":"10388:74:87","nodeType":"YulExpressionStatement","src":"10388:74:87"}]},"condition":{"arguments":[{"name":"loopEnd","nativeSrc":"10281:7:87","nodeType":"YulIdentifier","src":"10281:7:87"},{"name":"newLen","nativeSrc":"10290:6:87","nodeType":"YulIdentifier","src":"10290:6:87"}],"functionName":{"name":"lt","nativeSrc":"10278:2:87","nodeType":"YulIdentifier","src":"10278:2:87"},"nativeSrc":"10278:19:87","nodeType":"YulFunctionCall","src":"10278:19:87"},"nativeSrc":"10275:201:87","nodeType":"YulIf","src":"10275:201:87"},{"expression":{"arguments":[{"name":"slot","nativeSrc":"10496:4:87","nodeType":"YulIdentifier","src":"10496:4:87"},{"arguments":[{"arguments":[{"kind":"number","nativeSrc":"10510:1:87","nodeType":"YulLiteral","src":"10510:1:87","type":"","value":"1"},{"name":"newLen","nativeSrc":"10513:6:87","nodeType":"YulIdentifier","src":"10513:6:87"}],"functionName":{"name":"shl","nativeSrc":"10506:3:87","nodeType":"YulIdentifier","src":"10506:3:87"},"nativeSrc":"10506:14:87","nodeType":"YulFunctionCall","src":"10506:14:87"},{"kind":"number","nativeSrc":"10522:1:87","nodeType":"YulLiteral","src":"10522:1:87","type":"","value":"1"}],"functionName":{"name":"add","nativeSrc":"10502:3:87","nodeType":"YulIdentifier","src":"10502:3:87"},"nativeSrc":"10502:22:87","nodeType":"YulFunctionCall","src":"10502:22:87"}],"functionName":{"name":"sstore","nativeSrc":"10489:6:87","nodeType":"YulIdentifier","src":"10489:6:87"},"nativeSrc":"10489:36:87","nodeType":"YulFunctionCall","src":"10489:36:87"},"nativeSrc":"10489:36:87","nodeType":"YulExpressionStatement","src":"10489:36:87"}]},"nativeSrc":"9887:648:87","nodeType":"YulCase","src":"9887:648:87","value":{"kind":"number","nativeSrc":"9892:1:87","nodeType":"YulLiteral","src":"9892:1:87","type":"","value":"1"}},{"body":{"nativeSrc":"10552:234:87","nodeType":"YulBlock","src":"10552:234:87","statements":[{"nativeSrc":"10566:14:87","nodeType":"YulVariableDeclaration","src":"10566:14:87","value":{"kind":"number","nativeSrc":"10579:1:87","nodeType":"YulLiteral","src":"10579:1:87","type":"","value":"0"},"variables":[{"name":"value","nativeSrc":"10570:5:87","nodeType":"YulTypedName","src":"10570:5:87","type":""}]},{"body":{"nativeSrc":"10615:67:87","nodeType":"YulBlock","src":"10615:67:87","statements":[{"nativeSrc":"10633:35:87","nodeType":"YulAssignment","src":"10633:35:87","value":{"arguments":[{"arguments":[{"name":"src","nativeSrc":"10652:3:87","nodeType":"YulIdentifier","src":"10652:3:87"},{"name":"srcOffset","nativeSrc":"10657:9:87","nodeType":"YulIdentifier","src":"10657:9:87"}],"functionName":{"name":"add","nativeSrc":"10648:3:87","nodeType":"YulIdentifier","src":"10648:3:87"},"nativeSrc":"10648:19:87","nodeType":"YulFunctionCall","src":"10648:19:87"}],"functionName":{"name":"mload","nativeSrc":"10642:5:87","nodeType":"YulIdentifier","src":"10642:5:87"},"nativeSrc":"10642:26:87","nodeType":"YulFunctionCall","src":"10642:26:87"},"variableNames":[{"name":"value","nativeSrc":"10633:5:87","nodeType":"YulIdentifier","src":"10633:5:87"}]}]},"condition":{"name":"newLen","nativeSrc":"10596:6:87","nodeType":"YulIdentifier","src":"10596:6:87"},"nativeSrc":"10593:89:87","nodeType":"YulIf","src":"10593:89:87"},{"expression":{"arguments":[{"name":"slot","nativeSrc":"10702:4:87","nodeType":"YulIdentifier","src":"10702:4:87"},{"arguments":[{"name":"value","nativeSrc":"10761:5:87","nodeType":"YulIdentifier","src":"10761:5:87"},{"name":"newLen","nativeSrc":"10768:6:87","nodeType":"YulIdentifier","src":"10768:6:87"}],"functionName":{"name":"extract_used_part_and_set_length_of_short_byte_array","nativeSrc":"10708:52:87","nodeType":"YulIdentifier","src":"10708:52:87"},"nativeSrc":"10708:67:87","nodeType":"YulFunctionCall","src":"10708:67:87"}],"functionName":{"name":"sstore","nativeSrc":"10695:6:87","nodeType":"YulIdentifier","src":"10695:6:87"},"nativeSrc":"10695:81:87","nodeType":"YulFunctionCall","src":"10695:81:87"},"nativeSrc":"10695:81:87","nodeType":"YulExpressionStatement","src":"10695:81:87"}]},"nativeSrc":"10544:242:87","nodeType":"YulCase","src":"10544:242:87","value":"default"}],"expression":{"arguments":[{"name":"newLen","nativeSrc":"9867:6:87","nodeType":"YulIdentifier","src":"9867:6:87"},{"kind":"number","nativeSrc":"9875:2:87","nodeType":"YulLiteral","src":"9875:2:87","type":"","value":"31"}],"functionName":{"name":"gt","nativeSrc":"9864:2:87","nodeType":"YulIdentifier","src":"9864:2:87"},"nativeSrc":"9864:14:87","nodeType":"YulFunctionCall","src":"9864:14:87"},"nativeSrc":"9857:929:87","nodeType":"YulSwitch","src":"9857:929:87"}]},"name":"copy_byte_array_to_storage_from_t_bytes_memory_ptr_to_t_bytes_storage","nativeSrc":"9497:1295:87","nodeType":"YulFunctionDefinition","parameters":[{"name":"slot","nativeSrc":"9576:4:87","nodeType":"YulTypedName","src":"9576:4:87","type":""},{"name":"src","nativeSrc":"9582:3:87","nodeType":"YulTypedName","src":"9582:3:87","type":""}],"src":"9497:1295:87"},{"body":{"nativeSrc":"10829:95:87","nodeType":"YulBlock","src":"10829:95:87","statements":[{"expression":{"arguments":[{"kind":"number","nativeSrc":"10846:1:87","nodeType":"YulLiteral","src":"10846:1:87","type":"","value":"0"},{"arguments":[{"kind":"number","nativeSrc":"10853:3:87","nodeType":"YulLiteral","src":"10853:3:87","type":"","value":"224"},{"kind":"number","nativeSrc":"10858:10:87","nodeType":"YulLiteral","src":"10858:10:87","type":"","value":"0x4e487b71"}],"functionName":{"name":"shl","nativeSrc":"10849:3:87","nodeType":"YulIdentifier","src":"10849:3:87"},"nativeSrc":"10849:20:87","nodeType":"YulFunctionCall","src":"10849:20:87"}],"functionName":{"name":"mstore","nativeSrc":"10839:6:87","nodeType":"YulIdentifier","src":"10839:6:87"},"nativeSrc":"10839:31:87","nodeType":"YulFunctionCall","src":"10839:31:87"},"nativeSrc":"10839:31:87","nodeType":"YulExpressionStatement","src":"10839:31:87"},{"expression":{"arguments":[{"kind":"number","nativeSrc":"10886:1:87","nodeType":"YulLiteral","src":"10886:1:87","type":"","value":"4"},{"kind":"number","nativeSrc":"10889:4:87","nodeType":"YulLiteral","src":"10889:4:87","type":"","value":"0x11"}],"functionName":{"name":"mstore","nativeSrc":"10879:6:87","nodeType":"YulIdentifier","src":"10879:6:87"},"nativeSrc":"10879:15:87","nodeType":"YulFunctionCall","src":"10879:15:87"},"nativeSrc":"10879:15:87","nodeType":"YulExpressionStatement","src":"10879:15:87"},{"expression":{"arguments":[{"kind":"number","nativeSrc":"10910:1:87","nodeType":"YulLiteral","src":"10910:1:87","type":"","value":"0"},{"kind":"number","nativeSrc":"10913:4:87","nodeType":"YulLiteral","src":"10913:4:87","type":"","value":"0x24"}],"functionName":{"name":"revert","nativeSrc":"10903:6:87","nodeType":"YulIdentifier","src":"10903:6:87"},"nativeSrc":"10903:15:87","nodeType":"YulFunctionCall","src":"10903:15:87"},"nativeSrc":"10903:15:87","nodeType":"YulExpressionStatement","src":"10903:15:87"}]},"name":"panic_error_0x11","nativeSrc":"10797:127:87","nodeType":"YulFunctionDefinition","src":"10797:127:87"},{"body":{"nativeSrc":"10981:116:87","nodeType":"YulBlock","src":"10981:116:87","statements":[{"nativeSrc":"10991:20:87","nodeType":"YulAssignment","src":"10991:20:87","value":{"arguments":[{"name":"x","nativeSrc":"11006:1:87","nodeType":"YulIdentifier","src":"11006:1:87"},{"name":"y","nativeSrc":"11009:1:87","nodeType":"YulIdentifier","src":"11009:1:87"}],"functionName":{"name":"mul","nativeSrc":"11002:3:87","nodeType":"YulIdentifier","src":"11002:3:87"},"nativeSrc":"11002:9:87","nodeType":"YulFunctionCall","src":"11002:9:87"},"variableNames":[{"name":"product","nativeSrc":"10991:7:87","nodeType":"YulIdentifier","src":"10991:7:87"}]},{"body":{"nativeSrc":"11069:22:87","nodeType":"YulBlock","src":"11069:22:87","statements":[{"expression":{"arguments":[],"functionName":{"name":"panic_error_0x11","nativeSrc":"11071:16:87","nodeType":"YulIdentifier","src":"11071:16:87"},"nativeSrc":"11071:18:87","nodeType":"YulFunctionCall","src":"11071:18:87"},"nativeSrc":"11071:18:87","nodeType":"YulExpressionStatement","src":"11071:18:87"}]},"condition":{"arguments":[{"arguments":[{"arguments":[{"name":"x","nativeSrc":"11040:1:87","nodeType":"YulIdentifier","src":"11040:1:87"}],"functionName":{"name":"iszero","nativeSrc":"11033:6:87","nodeType":"YulIdentifier","src":"11033:6:87"},"nativeSrc":"11033:9:87","nodeType":"YulFunctionCall","src":"11033:9:87"},{"arguments":[{"name":"y","nativeSrc":"11047:1:87","nodeType":"YulIdentifier","src":"11047:1:87"},{"arguments":[{"name":"product","nativeSrc":"11054:7:87","nodeType":"YulIdentifier","src":"11054:7:87"},{"name":"x","nativeSrc":"11063:1:87","nodeType":"YulIdentifier","src":"11063:1:87"}],"functionName":{"name":"div","nativeSrc":"11050:3:87","nodeType":"YulIdentifier","src":"11050:3:87"},"nativeSrc":"11050:15:87","nodeType":"YulFunctionCall","src":"11050:15:87"}],"functionName":{"name":"eq","nativeSrc":"11044:2:87","nodeType":"YulIdentifier","src":"11044:2:87"},"nativeSrc":"11044:22:87","nodeType":"YulFunctionCall","src":"11044:22:87"}],"functionName":{"name":"or","nativeSrc":"11030:2:87","nodeType":"YulIdentifier","src":"11030:2:87"},"nativeSrc":"11030:37:87","nodeType":"YulFunctionCall","src":"11030:37:87"}],"functionName":{"name":"iszero","nativeSrc":"11023:6:87","nodeType":"YulIdentifier","src":"11023:6:87"},"nativeSrc":"11023:45:87","nodeType":"YulFunctionCall","src":"11023:45:87"},"nativeSrc":"11020:71:87","nodeType":"YulIf","src":"11020:71:87"}]},"name":"checked_mul_t_uint256","nativeSrc":"10929:168:87","nodeType":"YulFunctionDefinition","parameters":[{"name":"x","nativeSrc":"10960:1:87","nodeType":"YulTypedName","src":"10960:1:87","type":""},{"name":"y","nativeSrc":"10963:1:87","nodeType":"YulTypedName","src":"10963:1:87","type":""}],"returnVariables":[{"name":"product","nativeSrc":"10969:7:87","nodeType":"YulTypedName","src":"10969:7:87","type":""}],"src":"10929:168:87"},{"body":{"nativeSrc":"11151:79:87","nodeType":"YulBlock","src":"11151:79:87","statements":[{"nativeSrc":"11161:17:87","nodeType":"YulAssignment","src":"11161:17:87","value":{"arguments":[{"name":"x","nativeSrc":"11173:1:87","nodeType":"YulIdentifier","src":"11173:1:87"},{"name":"y","nativeSrc":"11176:1:87","nodeType":"YulIdentifier","src":"11176:1:87"}],"functionName":{"name":"sub","nativeSrc":"11169:3:87","nodeType":"YulIdentifier","src":"11169:3:87"},"nativeSrc":"11169:9:87","nodeType":"YulFunctionCall","src":"11169:9:87"},"variableNames":[{"name":"diff","nativeSrc":"11161:4:87","nodeType":"YulIdentifier","src":"11161:4:87"}]},{"body":{"nativeSrc":"11202:22:87","nodeType":"YulBlock","src":"11202:22:87","statements":[{"expression":{"arguments":[],"functionName":{"name":"panic_error_0x11","nativeSrc":"11204:16:87","nodeType":"YulIdentifier","src":"11204:16:87"},"nativeSrc":"11204:18:87","nodeType":"YulFunctionCall","src":"11204:18:87"},"nativeSrc":"11204:18:87","nodeType":"YulExpressionStatement","src":"11204:18:87"}]},"condition":{"arguments":[{"name":"diff","nativeSrc":"11193:4:87","nodeType":"YulIdentifier","src":"11193:4:87"},{"name":"x","nativeSrc":"11199:1:87","nodeType":"YulIdentifier","src":"11199:1:87"}],"functionName":{"name":"gt","nativeSrc":"11190:2:87","nodeType":"YulIdentifier","src":"11190:2:87"},"nativeSrc":"11190:11:87","nodeType":"YulFunctionCall","src":"11190:11:87"},"nativeSrc":"11187:37:87","nodeType":"YulIf","src":"11187:37:87"}]},"name":"checked_sub_t_uint256","nativeSrc":"11102:128:87","nodeType":"YulFunctionDefinition","parameters":[{"name":"x","nativeSrc":"11133:1:87","nodeType":"YulTypedName","src":"11133:1:87","type":""},{"name":"y","nativeSrc":"11136:1:87","nodeType":"YulTypedName","src":"11136:1:87","type":""}],"returnVariables":[{"name":"diff","nativeSrc":"11142:4:87","nodeType":"YulTypedName","src":"11142:4:87","type":""}],"src":"11102:128:87"},{"body":{"nativeSrc":"11267:95:87","nodeType":"YulBlock","src":"11267:95:87","statements":[{"expression":{"arguments":[{"kind":"number","nativeSrc":"11284:1:87","nodeType":"YulLiteral","src":"11284:1:87","type":"","value":"0"},{"arguments":[{"kind":"number","nativeSrc":"11291:3:87","nodeType":"YulLiteral","src":"11291:3:87","type":"","value":"224"},{"kind":"number","nativeSrc":"11296:10:87","nodeType":"YulLiteral","src":"11296:10:87","type":"","value":"0x4e487b71"}],"functionName":{"name":"shl","nativeSrc":"11287:3:87","nodeType":"YulIdentifier","src":"11287:3:87"},"nativeSrc":"11287:20:87","nodeType":"YulFunctionCall","src":"11287:20:87"}],"functionName":{"name":"mstore","nativeSrc":"11277:6:87","nodeType":"YulIdentifier","src":"11277:6:87"},"nativeSrc":"11277:31:87","nodeType":"YulFunctionCall","src":"11277:31:87"},"nativeSrc":"11277:31:87","nodeType":"YulExpressionStatement","src":"11277:31:87"},{"expression":{"arguments":[{"kind":"number","nativeSrc":"11324:1:87","nodeType":"YulLiteral","src":"11324:1:87","type":"","value":"4"},{"kind":"number","nativeSrc":"11327:4:87","nodeType":"YulLiteral","src":"11327:4:87","type":"","value":"0x12"}],"functionName":{"name":"mstore","nativeSrc":"11317:6:87","nodeType":"YulIdentifier","src":"11317:6:87"},"nativeSrc":"11317:15:87","nodeType":"YulFunctionCall","src":"11317:15:87"},"nativeSrc":"11317:15:87","nodeType":"YulExpressionStatement","src":"11317:15:87"},{"expression":{"arguments":[{"kind":"number","nativeSrc":"11348:1:87","nodeType":"YulLiteral","src":"11348:1:87","type":"","value":"0"},{"kind":"number","nativeSrc":"11351:4:87","nodeType":"YulLiteral","src":"11351:4:87","type":"","value":"0x24"}],"functionName":{"name":"revert","nativeSrc":"11341:6:87","nodeType":"YulIdentifier","src":"11341:6:87"},"nativeSrc":"11341:15:87","nodeType":"YulFunctionCall","src":"11341:15:87"},"nativeSrc":"11341:15:87","nodeType":"YulExpressionStatement","src":"11341:15:87"}]},"name":"panic_error_0x12","nativeSrc":"11235:127:87","nodeType":"YulFunctionDefinition","src":"11235:127:87"},{"body":{"nativeSrc":"11413:171:87","nodeType":"YulBlock","src":"11413:171:87","statements":[{"body":{"nativeSrc":"11444:111:87","nodeType":"YulBlock","src":"11444:111:87","statements":[{"expression":{"arguments":[{"kind":"number","nativeSrc":"11465:1:87","nodeType":"YulLiteral","src":"11465:1:87","type":"","value":"0"},{"arguments":[{"kind":"number","nativeSrc":"11472:3:87","nodeType":"YulLiteral","src":"11472:3:87","type":"","value":"224"},{"kind":"number","nativeSrc":"11477:10:87","nodeType":"YulLiteral","src":"11477:10:87","type":"","value":"0x4e487b71"}],"functionName":{"name":"shl","nativeSrc":"11468:3:87","nodeType":"YulIdentifier","src":"11468:3:87"},"nativeSrc":"11468:20:87","nodeType":"YulFunctionCall","src":"11468:20:87"}],"functionName":{"name":"mstore","nativeSrc":"11458:6:87","nodeType":"YulIdentifier","src":"11458:6:87"},"nativeSrc":"11458:31:87","nodeType":"YulFunctionCall","src":"11458:31:87"},"nativeSrc":"11458:31:87","nodeType":"YulExpressionStatement","src":"11458:31:87"},{"expression":{"arguments":[{"kind":"number","nativeSrc":"11509:1:87","nodeType":"YulLiteral","src":"11509:1:87","type":"","value":"4"},{"kind":"number","nativeSrc":"11512:4:87","nodeType":"YulLiteral","src":"11512:4:87","type":"","value":"0x12"}],"functionName":{"name":"mstore","nativeSrc":"11502:6:87","nodeType":"YulIdentifier","src":"11502:6:87"},"nativeSrc":"11502:15:87","nodeType":"YulFunctionCall","src":"11502:15:87"},"nativeSrc":"11502:15:87","nodeType":"YulExpressionStatement","src":"11502:15:87"},{"expression":{"arguments":[{"kind":"number","nativeSrc":"11537:1:87","nodeType":"YulLiteral","src":"11537:1:87","type":"","value":"0"},{"kind":"number","nativeSrc":"11540:4:87","nodeType":"YulLiteral","src":"11540:4:87","type":"","value":"0x24"}],"functionName":{"name":"revert","nativeSrc":"11530:6:87","nodeType":"YulIdentifier","src":"11530:6:87"},"nativeSrc":"11530:15:87","nodeType":"YulFunctionCall","src":"11530:15:87"},"nativeSrc":"11530:15:87","nodeType":"YulExpressionStatement","src":"11530:15:87"}]},"condition":{"arguments":[{"name":"y","nativeSrc":"11433:1:87","nodeType":"YulIdentifier","src":"11433:1:87"}],"functionName":{"name":"iszero","nativeSrc":"11426:6:87","nodeType":"YulIdentifier","src":"11426:6:87"},"nativeSrc":"11426:9:87","nodeType":"YulFunctionCall","src":"11426:9:87"},"nativeSrc":"11423:132:87","nodeType":"YulIf","src":"11423:132:87"},{"nativeSrc":"11564:14:87","nodeType":"YulAssignment","src":"11564:14:87","value":{"arguments":[{"name":"x","nativeSrc":"11573:1:87","nodeType":"YulIdentifier","src":"11573:1:87"},{"name":"y","nativeSrc":"11576:1:87","nodeType":"YulIdentifier","src":"11576:1:87"}],"functionName":{"name":"div","nativeSrc":"11569:3:87","nodeType":"YulIdentifier","src":"11569:3:87"},"nativeSrc":"11569:9:87","nodeType":"YulFunctionCall","src":"11569:9:87"},"variableNames":[{"name":"r","nativeSrc":"11564:1:87","nodeType":"YulIdentifier","src":"11564:1:87"}]}]},"name":"checked_div_t_uint256","nativeSrc":"11367:217:87","nodeType":"YulFunctionDefinition","parameters":[{"name":"x","nativeSrc":"11398:1:87","nodeType":"YulTypedName","src":"11398:1:87","type":""},{"name":"y","nativeSrc":"11401:1:87","nodeType":"YulTypedName","src":"11401:1:87","type":""}],"returnVariables":[{"name":"r","nativeSrc":"11407:1:87","nodeType":"YulTypedName","src":"11407:1:87","type":""}],"src":"11367:217:87"},{"body":{"nativeSrc":"11668:168:87","nodeType":"YulBlock","src":"11668:168:87","statements":[{"body":{"nativeSrc":"11714:16:87","nodeType":"YulBlock","src":"11714:16:87","statements":[{"expression":{"arguments":[{"kind":"number","nativeSrc":"11723:1:87","nodeType":"YulLiteral","src":"11723:1:87","type":"","value":"0"},{"kind":"number","nativeSrc":"11726:1:87","nodeType":"YulLiteral","src":"11726:1:87","type":"","value":"0"}],"functionName":{"name":"revert","nativeSrc":"11716:6:87","nodeType":"YulIdentifier","src":"11716:6:87"},"nativeSrc":"11716:12:87","nodeType":"YulFunctionCall","src":"11716:12:87"},"nativeSrc":"11716:12:87","nodeType":"YulExpressionStatement","src":"11716:12:87"}]},"condition":{"arguments":[{"arguments":[{"name":"dataEnd","nativeSrc":"11689:7:87","nodeType":"YulIdentifier","src":"11689:7:87"},{"name":"headStart","nativeSrc":"11698:9:87","nodeType":"YulIdentifier","src":"11698:9:87"}],"functionName":{"name":"sub","nativeSrc":"11685:3:87","nodeType":"YulIdentifier","src":"11685:3:87"},"nativeSrc":"11685:23:87","nodeType":"YulFunctionCall","src":"11685:23:87"},{"kind":"number","nativeSrc":"11710:2:87","nodeType":"YulLiteral","src":"11710:2:87","type":"","value":"32"}],"functionName":{"name":"slt","nativeSrc":"11681:3:87","nodeType":"YulIdentifier","src":"11681:3:87"},"nativeSrc":"11681:32:87","nodeType":"YulFunctionCall","src":"11681:32:87"},"nativeSrc":"11678:52:87","nodeType":"YulIf","src":"11678:52:87"},{"nativeSrc":"11739:29:87","nodeType":"YulVariableDeclaration","src":"11739:29:87","value":{"arguments":[{"name":"headStart","nativeSrc":"11758:9:87","nodeType":"YulIdentifier","src":"11758:9:87"}],"functionName":{"name":"mload","nativeSrc":"11752:5:87","nodeType":"YulIdentifier","src":"11752:5:87"},"nativeSrc":"11752:16:87","nodeType":"YulFunctionCall","src":"11752:16:87"},"variables":[{"name":"value","nativeSrc":"11743:5:87","nodeType":"YulTypedName","src":"11743:5:87","type":""}]},{"expression":{"arguments":[{"name":"value","nativeSrc":"11800:5:87","nodeType":"YulIdentifier","src":"11800:5:87"}],"functionName":{"name":"validator_revert_uint8","nativeSrc":"11777:22:87","nodeType":"YulIdentifier","src":"11777:22:87"},"nativeSrc":"11777:29:87","nodeType":"YulFunctionCall","src":"11777:29:87"},"nativeSrc":"11777:29:87","nodeType":"YulExpressionStatement","src":"11777:29:87"},{"nativeSrc":"11815:15:87","nodeType":"YulAssignment","src":"11815:15:87","value":{"name":"value","nativeSrc":"11825:5:87","nodeType":"YulIdentifier","src":"11825:5:87"},"variableNames":[{"name":"value0","nativeSrc":"11815:6:87","nodeType":"YulIdentifier","src":"11815:6:87"}]}]},"name":"abi_decode_tuple_t_uint8_fromMemory","nativeSrc":"11589:247:87","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nativeSrc":"11634:9:87","nodeType":"YulTypedName","src":"11634:9:87","type":""},{"name":"dataEnd","nativeSrc":"11645:7:87","nodeType":"YulTypedName","src":"11645:7:87","type":""}],"returnVariables":[{"name":"value0","nativeSrc":"11657:6:87","nodeType":"YulTypedName","src":"11657:6:87","type":""}],"src":"11589:247:87"},{"body":{"nativeSrc":"11888:104:87","nodeType":"YulBlock","src":"11888:104:87","statements":[{"nativeSrc":"11898:39:87","nodeType":"YulAssignment","src":"11898:39:87","value":{"arguments":[{"arguments":[{"name":"x","nativeSrc":"11914:1:87","nodeType":"YulIdentifier","src":"11914:1:87"},{"kind":"number","nativeSrc":"11917:4:87","nodeType":"YulLiteral","src":"11917:4:87","type":"","value":"0xff"}],"functionName":{"name":"and","nativeSrc":"11910:3:87","nodeType":"YulIdentifier","src":"11910:3:87"},"nativeSrc":"11910:12:87","nodeType":"YulFunctionCall","src":"11910:12:87"},{"arguments":[{"name":"y","nativeSrc":"11928:1:87","nodeType":"YulIdentifier","src":"11928:1:87"},{"kind":"number","nativeSrc":"11931:4:87","nodeType":"YulLiteral","src":"11931:4:87","type":"","value":"0xff"}],"functionName":{"name":"and","nativeSrc":"11924:3:87","nodeType":"YulIdentifier","src":"11924:3:87"},"nativeSrc":"11924:12:87","nodeType":"YulFunctionCall","src":"11924:12:87"}],"functionName":{"name":"sub","nativeSrc":"11906:3:87","nodeType":"YulIdentifier","src":"11906:3:87"},"nativeSrc":"11906:31:87","nodeType":"YulFunctionCall","src":"11906:31:87"},"variableNames":[{"name":"diff","nativeSrc":"11898:4:87","nodeType":"YulIdentifier","src":"11898:4:87"}]},{"body":{"nativeSrc":"11964:22:87","nodeType":"YulBlock","src":"11964:22:87","statements":[{"expression":{"arguments":[],"functionName":{"name":"panic_error_0x11","nativeSrc":"11966:16:87","nodeType":"YulIdentifier","src":"11966:16:87"},"nativeSrc":"11966:18:87","nodeType":"YulFunctionCall","src":"11966:18:87"},"nativeSrc":"11966:18:87","nodeType":"YulExpressionStatement","src":"11966:18:87"}]},"condition":{"arguments":[{"name":"diff","nativeSrc":"11952:4:87","nodeType":"YulIdentifier","src":"11952:4:87"},{"kind":"number","nativeSrc":"11958:4:87","nodeType":"YulLiteral","src":"11958:4:87","type":"","value":"0xff"}],"functionName":{"name":"gt","nativeSrc":"11949:2:87","nodeType":"YulIdentifier","src":"11949:2:87"},"nativeSrc":"11949:14:87","nodeType":"YulFunctionCall","src":"11949:14:87"},"nativeSrc":"11946:40:87","nodeType":"YulIf","src":"11946:40:87"}]},"name":"checked_sub_t_uint8","nativeSrc":"11841:151:87","nodeType":"YulFunctionDefinition","parameters":[{"name":"x","nativeSrc":"11870:1:87","nodeType":"YulTypedName","src":"11870:1:87","type":""},{"name":"y","nativeSrc":"11873:1:87","nodeType":"YulTypedName","src":"11873:1:87","type":""}],"returnVariables":[{"name":"diff","nativeSrc":"11879:4:87","nodeType":"YulTypedName","src":"11879:4:87","type":""}],"src":"11841:151:87"},{"body":{"nativeSrc":"12066:306:87","nodeType":"YulBlock","src":"12066:306:87","statements":[{"nativeSrc":"12076:10:87","nodeType":"YulAssignment","src":"12076:10:87","value":{"kind":"number","nativeSrc":"12085:1:87","nodeType":"YulLiteral","src":"12085:1:87","type":"","value":"1"},"variableNames":[{"name":"power","nativeSrc":"12076:5:87","nodeType":"YulIdentifier","src":"12076:5:87"}]},{"nativeSrc":"12095:13:87","nodeType":"YulAssignment","src":"12095:13:87","value":{"name":"_base","nativeSrc":"12103:5:87","nodeType":"YulIdentifier","src":"12103:5:87"},"variableNames":[{"name":"base","nativeSrc":"12095:4:87","nodeType":"YulIdentifier","src":"12095:4:87"}]},{"body":{"nativeSrc":"12153:213:87","nodeType":"YulBlock","src":"12153:213:87","statements":[{"body":{"nativeSrc":"12195:22:87","nodeType":"YulBlock","src":"12195:22:87","statements":[{"expression":{"arguments":[],"functionName":{"name":"panic_error_0x11","nativeSrc":"12197:16:87","nodeType":"YulIdentifier","src":"12197:16:87"},"nativeSrc":"12197:18:87","nodeType":"YulFunctionCall","src":"12197:18:87"},"nativeSrc":"12197:18:87","nodeType":"YulExpressionStatement","src":"12197:18:87"}]},"condition":{"arguments":[{"name":"base","nativeSrc":"12173:4:87","nodeType":"YulIdentifier","src":"12173:4:87"},{"arguments":[{"name":"max","nativeSrc":"12183:3:87","nodeType":"YulIdentifier","src":"12183:3:87"},{"name":"base","nativeSrc":"12188:4:87","nodeType":"YulIdentifier","src":"12188:4:87"}],"functionName":{"name":"div","nativeSrc":"12179:3:87","nodeType":"YulIdentifier","src":"12179:3:87"},"nativeSrc":"12179:14:87","nodeType":"YulFunctionCall","src":"12179:14:87"}],"functionName":{"name":"gt","nativeSrc":"12170:2:87","nodeType":"YulIdentifier","src":"12170:2:87"},"nativeSrc":"12170:24:87","nodeType":"YulFunctionCall","src":"12170:24:87"},"nativeSrc":"12167:50:87","nodeType":"YulIf","src":"12167:50:87"},{"body":{"nativeSrc":"12250:29:87","nodeType":"YulBlock","src":"12250:29:87","statements":[{"nativeSrc":"12252:25:87","nodeType":"YulAssignment","src":"12252:25:87","value":{"arguments":[{"name":"power","nativeSrc":"12265:5:87","nodeType":"YulIdentifier","src":"12265:5:87"},{"name":"base","nativeSrc":"12272:4:87","nodeType":"YulIdentifier","src":"12272:4:87"}],"functionName":{"name":"mul","nativeSrc":"12261:3:87","nodeType":"YulIdentifier","src":"12261:3:87"},"nativeSrc":"12261:16:87","nodeType":"YulFunctionCall","src":"12261:16:87"},"variableNames":[{"name":"power","nativeSrc":"12252:5:87","nodeType":"YulIdentifier","src":"12252:5:87"}]}]},"condition":{"arguments":[{"name":"exponent","nativeSrc":"12237:8:87","nodeType":"YulIdentifier","src":"12237:8:87"},{"kind":"number","nativeSrc":"12247:1:87","nodeType":"YulLiteral","src":"12247:1:87","type":"","value":"1"}],"functionName":{"name":"and","nativeSrc":"12233:3:87","nodeType":"YulIdentifier","src":"12233:3:87"},"nativeSrc":"12233:16:87","nodeType":"YulFunctionCall","src":"12233:16:87"},"nativeSrc":"12230:49:87","nodeType":"YulIf","src":"12230:49:87"},{"nativeSrc":"12292:23:87","nodeType":"YulAssignment","src":"12292:23:87","value":{"arguments":[{"name":"base","nativeSrc":"12304:4:87","nodeType":"YulIdentifier","src":"12304:4:87"},{"name":"base","nativeSrc":"12310:4:87","nodeType":"YulIdentifier","src":"12310:4:87"}],"functionName":{"name":"mul","nativeSrc":"12300:3:87","nodeType":"YulIdentifier","src":"12300:3:87"},"nativeSrc":"12300:15:87","nodeType":"YulFunctionCall","src":"12300:15:87"},"variableNames":[{"name":"base","nativeSrc":"12292:4:87","nodeType":"YulIdentifier","src":"12292:4:87"}]},{"nativeSrc":"12328:28:87","nodeType":"YulAssignment","src":"12328:28:87","value":{"arguments":[{"kind":"number","nativeSrc":"12344:1:87","nodeType":"YulLiteral","src":"12344:1:87","type":"","value":"1"},{"name":"exponent","nativeSrc":"12347:8:87","nodeType":"YulIdentifier","src":"12347:8:87"}],"functionName":{"name":"shr","nativeSrc":"12340:3:87","nodeType":"YulIdentifier","src":"12340:3:87"},"nativeSrc":"12340:16:87","nodeType":"YulFunctionCall","src":"12340:16:87"},"variableNames":[{"name":"exponent","nativeSrc":"12328:8:87","nodeType":"YulIdentifier","src":"12328:8:87"}]}]},"condition":{"arguments":[{"name":"exponent","nativeSrc":"12128:8:87","nodeType":"YulIdentifier","src":"12128:8:87"},{"kind":"number","nativeSrc":"12138:1:87","nodeType":"YulLiteral","src":"12138:1:87","type":"","value":"1"}],"functionName":{"name":"gt","nativeSrc":"12125:2:87","nodeType":"YulIdentifier","src":"12125:2:87"},"nativeSrc":"12125:15:87","nodeType":"YulFunctionCall","src":"12125:15:87"},"nativeSrc":"12117:249:87","nodeType":"YulForLoop","post":{"nativeSrc":"12141:3:87","nodeType":"YulBlock","src":"12141:3:87","statements":[]},"pre":{"nativeSrc":"12121:3:87","nodeType":"YulBlock","src":"12121:3:87","statements":[]},"src":"12117:249:87"}]},"name":"checked_exp_helper","nativeSrc":"11997:375:87","nodeType":"YulFunctionDefinition","parameters":[{"name":"_base","nativeSrc":"12025:5:87","nodeType":"YulTypedName","src":"12025:5:87","type":""},{"name":"exponent","nativeSrc":"12032:8:87","nodeType":"YulTypedName","src":"12032:8:87","type":""},{"name":"max","nativeSrc":"12042:3:87","nodeType":"YulTypedName","src":"12042:3:87","type":""}],"returnVariables":[{"name":"power","nativeSrc":"12050:5:87","nodeType":"YulTypedName","src":"12050:5:87","type":""},{"name":"base","nativeSrc":"12057:4:87","nodeType":"YulTypedName","src":"12057:4:87","type":""}],"src":"11997:375:87"},{"body":{"nativeSrc":"12436:843:87","nodeType":"YulBlock","src":"12436:843:87","statements":[{"body":{"nativeSrc":"12474:52:87","nodeType":"YulBlock","src":"12474:52:87","statements":[{"nativeSrc":"12488:10:87","nodeType":"YulAssignment","src":"12488:10:87","value":{"kind":"number","nativeSrc":"12497:1:87","nodeType":"YulLiteral","src":"12497:1:87","type":"","value":"1"},"variableNames":[{"name":"power","nativeSrc":"12488:5:87","nodeType":"YulIdentifier","src":"12488:5:87"}]},{"nativeSrc":"12511:5:87","nodeType":"YulLeave","src":"12511:5:87"}]},"condition":{"arguments":[{"name":"exponent","nativeSrc":"12456:8:87","nodeType":"YulIdentifier","src":"12456:8:87"}],"functionName":{"name":"iszero","nativeSrc":"12449:6:87","nodeType":"YulIdentifier","src":"12449:6:87"},"nativeSrc":"12449:16:87","nodeType":"YulFunctionCall","src":"12449:16:87"},"nativeSrc":"12446:80:87","nodeType":"YulIf","src":"12446:80:87"},{"body":{"nativeSrc":"12559:52:87","nodeType":"YulBlock","src":"12559:52:87","statements":[{"nativeSrc":"12573:10:87","nodeType":"YulAssignment","src":"12573:10:87","value":{"kind":"number","nativeSrc":"12582:1:87","nodeType":"YulLiteral","src":"12582:1:87","type":"","value":"0"},"variableNames":[{"name":"power","nativeSrc":"12573:5:87","nodeType":"YulIdentifier","src":"12573:5:87"}]},{"nativeSrc":"12596:5:87","nodeType":"YulLeave","src":"12596:5:87"}]},"condition":{"arguments":[{"name":"base","nativeSrc":"12545:4:87","nodeType":"YulIdentifier","src":"12545:4:87"}],"functionName":{"name":"iszero","nativeSrc":"12538:6:87","nodeType":"YulIdentifier","src":"12538:6:87"},"nativeSrc":"12538:12:87","nodeType":"YulFunctionCall","src":"12538:12:87"},"nativeSrc":"12535:76:87","nodeType":"YulIf","src":"12535:76:87"},{"cases":[{"body":{"nativeSrc":"12647:52:87","nodeType":"YulBlock","src":"12647:52:87","statements":[{"nativeSrc":"12661:10:87","nodeType":"YulAssignment","src":"12661:10:87","value":{"kind":"number","nativeSrc":"12670:1:87","nodeType":"YulLiteral","src":"12670:1:87","type":"","value":"1"},"variableNames":[{"name":"power","nativeSrc":"12661:5:87","nodeType":"YulIdentifier","src":"12661:5:87"}]},{"nativeSrc":"12684:5:87","nodeType":"YulLeave","src":"12684:5:87"}]},"nativeSrc":"12640:59:87","nodeType":"YulCase","src":"12640:59:87","value":{"kind":"number","nativeSrc":"12645:1:87","nodeType":"YulLiteral","src":"12645:1:87","type":"","value":"1"}},{"body":{"nativeSrc":"12715:167:87","nodeType":"YulBlock","src":"12715:167:87","statements":[{"body":{"nativeSrc":"12750:22:87","nodeType":"YulBlock","src":"12750:22:87","statements":[{"expression":{"arguments":[],"functionName":{"name":"panic_error_0x11","nativeSrc":"12752:16:87","nodeType":"YulIdentifier","src":"12752:16:87"},"nativeSrc":"12752:18:87","nodeType":"YulFunctionCall","src":"12752:18:87"},"nativeSrc":"12752:18:87","nodeType":"YulExpressionStatement","src":"12752:18:87"}]},"condition":{"arguments":[{"name":"exponent","nativeSrc":"12735:8:87","nodeType":"YulIdentifier","src":"12735:8:87"},{"kind":"number","nativeSrc":"12745:3:87","nodeType":"YulLiteral","src":"12745:3:87","type":"","value":"255"}],"functionName":{"name":"gt","nativeSrc":"12732:2:87","nodeType":"YulIdentifier","src":"12732:2:87"},"nativeSrc":"12732:17:87","nodeType":"YulFunctionCall","src":"12732:17:87"},"nativeSrc":"12729:43:87","nodeType":"YulIf","src":"12729:43:87"},{"nativeSrc":"12785:25:87","nodeType":"YulAssignment","src":"12785:25:87","value":{"arguments":[{"name":"exponent","nativeSrc":"12798:8:87","nodeType":"YulIdentifier","src":"12798:8:87"},{"kind":"number","nativeSrc":"12808:1:87","nodeType":"YulLiteral","src":"12808:1:87","type":"","value":"1"}],"functionName":{"name":"shl","nativeSrc":"12794:3:87","nodeType":"YulIdentifier","src":"12794:3:87"},"nativeSrc":"12794:16:87","nodeType":"YulFunctionCall","src":"12794:16:87"},"variableNames":[{"name":"power","nativeSrc":"12785:5:87","nodeType":"YulIdentifier","src":"12785:5:87"}]},{"nativeSrc":"12823:11:87","nodeType":"YulVariableDeclaration","src":"12823:11:87","value":{"kind":"number","nativeSrc":"12833:1:87","nodeType":"YulLiteral","src":"12833:1:87","type":"","value":"0"},"variables":[{"name":"_1","nativeSrc":"12827:2:87","nodeType":"YulTypedName","src":"12827:2:87","type":""}]},{"nativeSrc":"12847:7:87","nodeType":"YulAssignment","src":"12847:7:87","value":{"kind":"number","nativeSrc":"12853:1:87","nodeType":"YulLiteral","src":"12853:1:87","type":"","value":"0"},"variableNames":[{"name":"_1","nativeSrc":"12847:2:87","nodeType":"YulIdentifier","src":"12847:2:87"}]},{"nativeSrc":"12867:5:87","nodeType":"YulLeave","src":"12867:5:87"}]},"nativeSrc":"12708:174:87","nodeType":"YulCase","src":"12708:174:87","value":{"kind":"number","nativeSrc":"12713:1:87","nodeType":"YulLiteral","src":"12713:1:87","type":"","value":"2"}}],"expression":{"name":"base","nativeSrc":"12627:4:87","nodeType":"YulIdentifier","src":"12627:4:87"},"nativeSrc":"12620:262:87","nodeType":"YulSwitch","src":"12620:262:87"},{"body":{"nativeSrc":"12980:114:87","nodeType":"YulBlock","src":"12980:114:87","statements":[{"nativeSrc":"12994:28:87","nodeType":"YulAssignment","src":"12994:28:87","value":{"arguments":[{"name":"base","nativeSrc":"13007:4:87","nodeType":"YulIdentifier","src":"13007:4:87"},{"name":"exponent","nativeSrc":"13013:8:87","nodeType":"YulIdentifier","src":"13013:8:87"}],"functionName":{"name":"exp","nativeSrc":"13003:3:87","nodeType":"YulIdentifier","src":"13003:3:87"},"nativeSrc":"13003:19:87","nodeType":"YulFunctionCall","src":"13003:19:87"},"variableNames":[{"name":"power","nativeSrc":"12994:5:87","nodeType":"YulIdentifier","src":"12994:5:87"}]},{"nativeSrc":"13035:11:87","nodeType":"YulVariableDeclaration","src":"13035:11:87","value":{"kind":"number","nativeSrc":"13045:1:87","nodeType":"YulLiteral","src":"13045:1:87","type":"","value":"0"},"variables":[{"name":"_2","nativeSrc":"13039:2:87","nodeType":"YulTypedName","src":"13039:2:87","type":""}]},{"nativeSrc":"13059:7:87","nodeType":"YulAssignment","src":"13059:7:87","value":{"kind":"number","nativeSrc":"13065:1:87","nodeType":"YulLiteral","src":"13065:1:87","type":"","value":"0"},"variableNames":[{"name":"_2","nativeSrc":"13059:2:87","nodeType":"YulIdentifier","src":"13059:2:87"}]},{"nativeSrc":"13079:5:87","nodeType":"YulLeave","src":"13079:5:87"}]},"condition":{"arguments":[{"arguments":[{"arguments":[{"name":"base","nativeSrc":"12904:4:87","nodeType":"YulIdentifier","src":"12904:4:87"},{"kind":"number","nativeSrc":"12910:2:87","nodeType":"YulLiteral","src":"12910:2:87","type":"","value":"11"}],"functionName":{"name":"lt","nativeSrc":"12901:2:87","nodeType":"YulIdentifier","src":"12901:2:87"},"nativeSrc":"12901:12:87","nodeType":"YulFunctionCall","src":"12901:12:87"},{"arguments":[{"name":"exponent","nativeSrc":"12918:8:87","nodeType":"YulIdentifier","src":"12918:8:87"},{"kind":"number","nativeSrc":"12928:2:87","nodeType":"YulLiteral","src":"12928:2:87","type":"","value":"78"}],"functionName":{"name":"lt","nativeSrc":"12915:2:87","nodeType":"YulIdentifier","src":"12915:2:87"},"nativeSrc":"12915:16:87","nodeType":"YulFunctionCall","src":"12915:16:87"}],"functionName":{"name":"and","nativeSrc":"12897:3:87","nodeType":"YulIdentifier","src":"12897:3:87"},"nativeSrc":"12897:35:87","nodeType":"YulFunctionCall","src":"12897:35:87"},{"arguments":[{"arguments":[{"name":"base","nativeSrc":"12941:4:87","nodeType":"YulIdentifier","src":"12941:4:87"},{"kind":"number","nativeSrc":"12947:3:87","nodeType":"YulLiteral","src":"12947:3:87","type":"","value":"307"}],"functionName":{"name":"lt","nativeSrc":"12938:2:87","nodeType":"YulIdentifier","src":"12938:2:87"},"nativeSrc":"12938:13:87","nodeType":"YulFunctionCall","src":"12938:13:87"},{"arguments":[{"name":"exponent","nativeSrc":"12956:8:87","nodeType":"YulIdentifier","src":"12956:8:87"},{"kind":"number","nativeSrc":"12966:2:87","nodeType":"YulLiteral","src":"12966:2:87","type":"","value":"32"}],"functionName":{"name":"lt","nativeSrc":"12953:2:87","nodeType":"YulIdentifier","src":"12953:2:87"},"nativeSrc":"12953:16:87","nodeType":"YulFunctionCall","src":"12953:16:87"}],"functionName":{"name":"and","nativeSrc":"12934:3:87","nodeType":"YulIdentifier","src":"12934:3:87"},"nativeSrc":"12934:36:87","nodeType":"YulFunctionCall","src":"12934:36:87"}],"functionName":{"name":"or","nativeSrc":"12894:2:87","nodeType":"YulIdentifier","src":"12894:2:87"},"nativeSrc":"12894:77:87","nodeType":"YulFunctionCall","src":"12894:77:87"},"nativeSrc":"12891:203:87","nodeType":"YulIf","src":"12891:203:87"},{"nativeSrc":"13103:65:87","nodeType":"YulVariableDeclaration","src":"13103:65:87","value":{"arguments":[{"name":"base","nativeSrc":"13145:4:87","nodeType":"YulIdentifier","src":"13145:4:87"},{"name":"exponent","nativeSrc":"13151:8:87","nodeType":"YulIdentifier","src":"13151:8:87"},{"arguments":[{"kind":"number","nativeSrc":"13165:1:87","nodeType":"YulLiteral","src":"13165:1:87","type":"","value":"0"}],"functionName":{"name":"not","nativeSrc":"13161:3:87","nodeType":"YulIdentifier","src":"13161:3:87"},"nativeSrc":"13161:6:87","nodeType":"YulFunctionCall","src":"13161:6:87"}],"functionName":{"name":"checked_exp_helper","nativeSrc":"13126:18:87","nodeType":"YulIdentifier","src":"13126:18:87"},"nativeSrc":"13126:42:87","nodeType":"YulFunctionCall","src":"13126:42:87"},"variables":[{"name":"power_1","nativeSrc":"13107:7:87","nodeType":"YulTypedName","src":"13107:7:87","type":""},{"name":"base_1","nativeSrc":"13116:6:87","nodeType":"YulTypedName","src":"13116:6:87","type":""}]},{"body":{"nativeSrc":"13213:22:87","nodeType":"YulBlock","src":"13213:22:87","statements":[{"expression":{"arguments":[],"functionName":{"name":"panic_error_0x11","nativeSrc":"13215:16:87","nodeType":"YulIdentifier","src":"13215:16:87"},"nativeSrc":"13215:18:87","nodeType":"YulFunctionCall","src":"13215:18:87"},"nativeSrc":"13215:18:87","nodeType":"YulExpressionStatement","src":"13215:18:87"}]},"condition":{"arguments":[{"name":"power_1","nativeSrc":"13183:7:87","nodeType":"YulIdentifier","src":"13183:7:87"},{"arguments":[{"arguments":[{"kind":"number","nativeSrc":"13200:1:87","nodeType":"YulLiteral","src":"13200:1:87","type":"","value":"0"}],"functionName":{"name":"not","nativeSrc":"13196:3:87","nodeType":"YulIdentifier","src":"13196:3:87"},"nativeSrc":"13196:6:87","nodeType":"YulFunctionCall","src":"13196:6:87"},{"name":"base_1","nativeSrc":"13204:6:87","nodeType":"YulIdentifier","src":"13204:6:87"}],"functionName":{"name":"div","nativeSrc":"13192:3:87","nodeType":"YulIdentifier","src":"13192:3:87"},"nativeSrc":"13192:19:87","nodeType":"YulFunctionCall","src":"13192:19:87"}],"functionName":{"name":"gt","nativeSrc":"13180:2:87","nodeType":"YulIdentifier","src":"13180:2:87"},"nativeSrc":"13180:32:87","nodeType":"YulFunctionCall","src":"13180:32:87"},"nativeSrc":"13177:58:87","nodeType":"YulIf","src":"13177:58:87"},{"nativeSrc":"13244:29:87","nodeType":"YulAssignment","src":"13244:29:87","value":{"arguments":[{"name":"power_1","nativeSrc":"13257:7:87","nodeType":"YulIdentifier","src":"13257:7:87"},{"name":"base_1","nativeSrc":"13266:6:87","nodeType":"YulIdentifier","src":"13266:6:87"}],"functionName":{"name":"mul","nativeSrc":"13253:3:87","nodeType":"YulIdentifier","src":"13253:3:87"},"nativeSrc":"13253:20:87","nodeType":"YulFunctionCall","src":"13253:20:87"},"variableNames":[{"name":"power","nativeSrc":"13244:5:87","nodeType":"YulIdentifier","src":"13244:5:87"}]}]},"name":"checked_exp_unsigned","nativeSrc":"12377:902:87","nodeType":"YulFunctionDefinition","parameters":[{"name":"base","nativeSrc":"12407:4:87","nodeType":"YulTypedName","src":"12407:4:87","type":""},{"name":"exponent","nativeSrc":"12413:8:87","nodeType":"YulTypedName","src":"12413:8:87","type":""}],"returnVariables":[{"name":"power","nativeSrc":"12426:5:87","nodeType":"YulTypedName","src":"12426:5:87","type":""}],"src":"12377:902:87"},{"body":{"nativeSrc":"13352:72:87","nodeType":"YulBlock","src":"13352:72:87","statements":[{"nativeSrc":"13362:56:87","nodeType":"YulAssignment","src":"13362:56:87","value":{"arguments":[{"name":"base","nativeSrc":"13392:4:87","nodeType":"YulIdentifier","src":"13392:4:87"},{"arguments":[{"name":"exponent","nativeSrc":"13402:8:87","nodeType":"YulIdentifier","src":"13402:8:87"},{"kind":"number","nativeSrc":"13412:4:87","nodeType":"YulLiteral","src":"13412:4:87","type":"","value":"0xff"}],"functionName":{"name":"and","nativeSrc":"13398:3:87","nodeType":"YulIdentifier","src":"13398:3:87"},"nativeSrc":"13398:19:87","nodeType":"YulFunctionCall","src":"13398:19:87"}],"functionName":{"name":"checked_exp_unsigned","nativeSrc":"13371:20:87","nodeType":"YulIdentifier","src":"13371:20:87"},"nativeSrc":"13371:47:87","nodeType":"YulFunctionCall","src":"13371:47:87"},"variableNames":[{"name":"power","nativeSrc":"13362:5:87","nodeType":"YulIdentifier","src":"13362:5:87"}]}]},"name":"checked_exp_t_uint256_t_uint8","nativeSrc":"13284:140:87","nodeType":"YulFunctionDefinition","parameters":[{"name":"base","nativeSrc":"13323:4:87","nodeType":"YulTypedName","src":"13323:4:87","type":""},{"name":"exponent","nativeSrc":"13329:8:87","nodeType":"YulTypedName","src":"13329:8:87","type":""}],"returnVariables":[{"name":"power","nativeSrc":"13342:5:87","nodeType":"YulTypedName","src":"13342:5:87","type":""}],"src":"13284:140:87"}]},"contents":"{\n    { }\n    function validator_revert_uint8(value)\n    {\n        if iszero(eq(value, and(value, 0xff))) { revert(0, 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 allocate_memory_1565() -> memPtr\n    {\n        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    }\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, 0xffffffffffffffff), lt(newFreePtr, memPtr)) { panic_error_0x41() }\n        mstore(64, newFreePtr)\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), not(31)), 0x20)\n    }\n    function abi_decode_bytes(offset, end) -> array\n    {\n        if iszero(slt(add(offset, 0x1f), end)) { revert(0, 0) }\n        let length := calldataload(offset)\n        let array_1 := allocate_memory(array_allocation_size_bytes(length))\n        mstore(array_1, length)\n        if gt(add(add(offset, length), 0x20), end) { revert(0, 0) }\n        calldatacopy(add(array_1, 0x20), add(offset, 0x20), length)\n        mstore(add(add(array_1, length), 0x20), 0)\n        array := array_1\n    }\n    function abi_decode_tuple_t_uint8t_bytes_memory_ptr(headStart, dataEnd) -> value0, value1\n    {\n        if slt(sub(dataEnd, headStart), 64) { revert(0, 0) }\n        let value := calldataload(headStart)\n        validator_revert_uint8(value)\n        value0 := value\n        let offset := calldataload(add(headStart, 32))\n        if gt(offset, 0xffffffffffffffff) { revert(0, 0) }\n        value1 := abi_decode_bytes(add(headStart, offset), dataEnd)\n    }\n    function abi_encode_bytes(value, pos) -> end\n    {\n        let length := mload(value)\n        mstore(pos, length)\n        mcopy(add(pos, 0x20), add(value, 0x20), length)\n        mstore(add(add(pos, length), 0x20), 0)\n        end := add(add(pos, and(add(length, 31), not(31))), 0x20)\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_uint256__to_t_uint256__fromStack_reversed(headStart, value0) -> tail\n    {\n        tail := add(headStart, 32)\n        mstore(headStart, value0)\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_address(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, sub(shl(160, 1), 1)))) { revert(0, 0) }\n        value0 := value\n    }\n    function panic_error_0x21()\n    {\n        mstore(0, shl(224, 0x4e487b71))\n        mstore(4, 0x21)\n        revert(0, 0x24)\n    }\n    function abi_encode_struct_SwapConfig(value, pos) -> end\n    {\n        let _1 := mload(value)\n        if iszero(lt(_1, 3))\n        {\n            mstore(0, shl(224, 0x4e487b71))\n            mstore(4, 0x21)\n            revert(0, 0x24)\n        }\n        mstore(pos, _1)\n        mstore(add(pos, 0x20), mload(add(value, 0x20)))\n        let memberValue0 := mload(add(value, 0x40))\n        mstore(add(pos, 0x40), 0x60)\n        end := abi_encode_bytes(memberValue0, add(pos, 0x60))\n    }\n    function abi_encode_tuple_t_struct$_SwapConfig_$1113_memory_ptr__to_t_struct$_SwapConfig_$1113_memory_ptr__fromStack_reversed(headStart, value0) -> tail\n    {\n        mstore(headStart, 32)\n        tail := abi_encode_struct_SwapConfig(value0, add(headStart, 32))\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        if iszero(eq(value, iszero(iszero(value)))) { revert(0, 0) }\n        value0 := value\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_address__to_t_address__fromStack_reversed(headStart, value0) -> tail\n    {\n        tail := add(headStart, 32)\n        mstore(headStart, and(value0, sub(shl(160, 1), 1)))\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        if gt(offset, 0xffffffffffffffff) { revert(0, 0) }\n        value0 := abi_decode_bytes(add(headStart, offset), 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        let value := 0\n        value := mload(headStart)\n        value0 := value\n    }\n    function abi_encode_tuple_t_struct$_SwapConfig_$1113_memory_ptr_t_address_t_address_t_uint256_t_uint256__to_t_struct$_SwapConfig_$1113_memory_ptr_t_address_t_address_t_uint256_t_uint256__fromStack_library_reversed(headStart, value4, value3, value2, value1, value0) -> tail\n    {\n        mstore(headStart, 160)\n        tail := abi_encode_struct_SwapConfig(value0, add(headStart, 160))\n        mstore(add(headStart, 32), and(value1, sub(shl(160, 1), 1)))\n        mstore(add(headStart, 64), and(value2, sub(shl(160, 1), 1)))\n        mstore(add(headStart, 96), value3)\n        mstore(add(headStart, 128), value4)\n    }\n    function abi_decode_bytes_fromMemory(offset, end) -> array\n    {\n        if iszero(slt(add(offset, 0x1f), end)) { revert(0, 0) }\n        let length := mload(offset)\n        let array_1 := allocate_memory(array_allocation_size_bytes(length))\n        mstore(array_1, length)\n        if gt(add(add(offset, length), 0x20), end) { revert(0, 0) }\n        mcopy(add(array_1, 0x20), add(offset, 0x20), length)\n        mstore(add(add(array_1, length), 0x20), 0)\n        array := array_1\n    }\n    function abi_decode_tuple_t_bytes_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        value0 := abi_decode_bytes_fromMemory(add(headStart, offset), dataEnd)\n    }\n    function abi_decode_tuple_t_struct$_SwapConfig_$1113_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 slt(sub(dataEnd, _1), 0x60) { revert(0, 0) }\n        let value := allocate_memory_1565()\n        let value_1 := mload(_1)\n        if iszero(lt(value_1, 3)) { revert(0, 0) }\n        mstore(value, value_1)\n        let value_2 := 0\n        value_2 := mload(add(_1, 32))\n        mstore(add(value, 32), value_2)\n        let offset_1 := mload(add(_1, 64))\n        if gt(offset_1, 0xffffffffffffffff) { revert(0, 0) }\n        mstore(add(value, 64), abi_decode_bytes_fromMemory(add(_1, offset_1), dataEnd))\n        value0 := value\n    }\n    function abi_encode_tuple_t_struct$_SwapConfig_$1113_memory_ptr__to_t_struct$_SwapConfig_$1113_memory_ptr__fromStack_library_reversed(headStart, value0) -> tail\n    {\n        mstore(headStart, 32)\n        tail := abi_encode_struct_SwapConfig(value0, add(headStart, 32))\n    }\n    function abi_encode_tuple_t_struct$_SwapConfig_$1113_memory_ptr_t_struct$_SwapConfig_$1113_memory_ptr__to_t_struct$_SwapConfig_$1113_memory_ptr_t_struct$_SwapConfig_$1113_memory_ptr__fromStack_reversed(headStart, value1, value0) -> tail\n    {\n        mstore(headStart, 64)\n        let tail_1 := abi_encode_struct_SwapConfig(value0, add(headStart, 64))\n        mstore(add(headStart, 32), sub(tail_1, headStart))\n        tail := abi_encode_struct_SwapConfig(value1, tail_1)\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 array_dataslot_bytes_storage(ptr) -> data\n    {\n        mstore(0, ptr)\n        data := keccak256(0, 0x20)\n    }\n    function clean_up_bytearray_end_slots_bytes_storage(array, len, startIndex)\n    {\n        if gt(len, 31)\n        {\n            mstore(0, array)\n            let data := keccak256(0, 0x20)\n            let deleteStart := add(data, shr(5, add(startIndex, 31)))\n            if lt(startIndex, 0x20) { deleteStart := data }\n            let _1 := add(data, shr(5, add(len, 31)))\n            let start := deleteStart\n            for { } lt(start, _1) { start := add(start, 1) }\n            { sstore(start, 0) }\n        }\n    }\n    function extract_used_part_and_set_length_of_short_byte_array(data, len) -> used\n    {\n        used := or(and(data, not(shr(shl(3, len), not(0)))), shl(1, len))\n    }\n    function copy_byte_array_to_storage_from_t_bytes_memory_ptr_to_t_bytes_storage(slot, src)\n    {\n        let newLen := mload(src)\n        if gt(newLen, 0xffffffffffffffff) { panic_error_0x41() }\n        clean_up_bytearray_end_slots_bytes_storage(slot, extract_byte_array_length(sload(slot)), newLen)\n        let srcOffset := 0\n        srcOffset := 0x20\n        switch gt(newLen, 31)\n        case 1 {\n            let loopEnd := and(newLen, not(31))\n            let dstPtr := array_dataslot_bytes_storage(slot)\n            let i := 0\n            for { } lt(i, loopEnd) { i := add(i, 0x20) }\n            {\n                sstore(dstPtr, mload(add(src, srcOffset)))\n                dstPtr := add(dstPtr, 1)\n                srcOffset := add(srcOffset, 0x20)\n            }\n            if lt(loopEnd, newLen)\n            {\n                let lastValue := mload(add(src, srcOffset))\n                sstore(dstPtr, and(lastValue, not(shr(and(shl(3, newLen), 248), not(0)))))\n            }\n            sstore(slot, add(shl(1, newLen), 1))\n        }\n        default {\n            let value := 0\n            if newLen\n            {\n                value := mload(add(src, srcOffset))\n            }\n            sstore(slot, extract_used_part_and_set_length_of_short_byte_array(value, newLen))\n        }\n    }\n    function panic_error_0x11()\n    {\n        mstore(0, shl(224, 0x4e487b71))\n        mstore(4, 0x11)\n        revert(0, 0x24)\n    }\n    function checked_mul_t_uint256(x, y) -> product\n    {\n        product := mul(x, y)\n        if iszero(or(iszero(x), eq(y, div(product, x)))) { panic_error_0x11() }\n    }\n    function checked_sub_t_uint256(x, y) -> diff\n    {\n        diff := sub(x, y)\n        if gt(diff, x) { panic_error_0x11() }\n    }\n    function panic_error_0x12()\n    {\n        mstore(0, shl(224, 0x4e487b71))\n        mstore(4, 0x12)\n        revert(0, 0x24)\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 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        validator_revert_uint8(value)\n        value0 := value\n    }\n    function checked_sub_t_uint8(x, y) -> diff\n    {\n        diff := sub(and(x, 0xff), and(y, 0xff))\n        if gt(diff, 0xff) { panic_error_0x11() }\n    }\n    function checked_exp_helper(_base, exponent, max) -> power, base\n    {\n        power := 1\n        base := _base\n        for { } gt(exponent, 1) { }\n        {\n            if gt(base, div(max, base)) { panic_error_0x11() }\n            if and(exponent, 1) { power := mul(power, base) }\n            base := mul(base, base)\n            exponent := shr(1, exponent)\n        }\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            let _1 := 0\n            _1 := 0\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            let _2 := 0\n            _2 := 0\n            leave\n        }\n        let power_1, base_1 := checked_exp_helper(base, exponent, not(0))\n        if gt(power_1, div(not(0), base_1)) { panic_error_0x11() }\n        power := mul(power_1, base_1)\n    }\n    function checked_exp_t_uint256_t_uint8(base, exponent) -> power\n    {\n        power := checked_exp_unsigned(base, and(exponent, 0xff))\n    }\n}","id":87,"language":"Yul","name":"#utility.yul"}],"immutableReferences":{"23946":[{"length":32,"start":641},{"length":32,"start":797},{"length":32,"start":1585},{"length":32,"start":1709},{"length":32,"start":1834}],"23952":[{"length":32,"start":393},{"length":32,"start":2332},{"length":32,"start":2731},{"length":32,"start":2801}],"23955":[{"length":32,"start":444},{"length":32,"start":1124},{"length":32,"start":1424},{"length":32,"start":1959},{"length":32,"start":3049}],"23958":[{"length":32,"start":576},{"length":32,"start":922},{"length":32,"start":1090},{"length":32,"start":1390},{"length":32,"start":1993},{"length":32,"start":2179},{"length":32,"start":3096}],"24856":[{"length":32,"start":250},{"length":32,"start":2029},{"length":32,"start":3007},{"length":32,"start":3144}]},"linkReferences":{"@ensuro/swaplibrary/contracts/SwapLibrary.sol":{"SwapLibrary":[{"length":20,"start":1060},{"length":20,"start":1356},{"length":20,"start":1926},{"length":20,"start":2523}]}},"object":"608060405234801561000f575f5ffd5b50600436106100cb575f3560e01c80635b9a4c3511610088578063b6b55f2511610063578063b6b55f2514610209578063ce96cb771461021c578063de846ae41461022f578063f3e0ffbf14610262575f5ffd5b80635b9a4c35146101845780639c4667a2146101ab5780639cd47128146101f6575f5ffd5b80630981b1c2146100cf5780631418983b146100f85780632e1a7d4d14610128578063402d267d1461013d57806342b054f0146101515780635a11745614610171575b5f5ffd5b6100e26100dd366004610ee8565b610275565b6040516100ef9190610f63565b60405180910390f35b7f00000000000000000000000000000000000000000000000000000000000000005b6040519081526020016100ef565b61013b610136366004610f75565b610313565b005b61011a61014b366004610f8c565b505f1990565b61016461015f366004610f8c565b610603565b6040516100ef9190611014565b61013b61017f366004611026565b610627565b61011a7f000000000000000000000000000000000000000000000000000000000000000081565b6101de6101b9366004610f8c565b507f000000000000000000000000000000000000000000000000000000000000000090565b6040516001600160a01b0390911681526020016100ef565b61013b610204366004611045565b6106a3565b61013b610217366004610f75565b610720565b61011a61022a366004610f8c565b610858565b6101de61023d366004610f8c565b507f000000000000000000000000000000000000000000000000000000000000000090565b61011a610270366004610f8c565b61085e565b60606001600160a01b037f00000000000000000000000000000000000000000000000000000000000000001630036102c057604051632abf118b60e21b815260040160405180910390fd5b5f60ff841680156102d3576102d3610fb2565b90505f8180156102e5576102e5610fb2565b036100cb576102fc6102f6306108f2565b846109b4565b505060408051602081019091525f81525b92915050565b6001600160a01b037f000000000000000000000000000000000000000000000000000000000000000016300361035c57604051632abf118b60e21b815260040160405180910390fd5b8015610600575f61036b610ad4565b90505f610376610baf565b6040516370a0823160e01b8152306004820152909150610409906001600160a01b037f000000000000000000000000000000000000000000000000000000000000000016906370a0823190602401602060405180830381865afa1580156103df573d5f5f3e3d5ffd5b505050506040513d601f19601f820116820180604052508101906104039190611077565b30610be3565b831061053d576040516370a0823160e01b815230600482015273__$acbb9ece542dcf2065f41aa3c8cca5827e$__9063775669159084907f0000000000000000000000000000000000000000000000000000000000000000907f0000000000000000000000000000000000000000000000000000000000000000906001600160a01b038316906370a0823190602401602060405180830381865afa1580156104b3573d5f5f3e3d5ffd5b505050506040513d601f19601f820116820180604052508101906104d79190611077565b866040518663ffffffff1660e01b81526004016104f895949392919061108e565b602060405180830381865af4158015610513573d5f5f3e3d5ffd5b505050506040513d601f19601f820116820180604052508101906105379190611077565b506105fd565b60405163581e517d60e01b815273__$acbb9ece542dcf2065f41aa3c8cca5827e$__9063581e517d906105bc9085907f0000000000000000000000000000000000000000000000000000000000000000907f0000000000000000000000000000000000000000000000000000000000000000908990889060040161108e565b602060405180830381865af41580156105d7573d5f5f3e3d5ffd5b505050506040513d601f19601f820116820180604052508101906105fb9190611077565b505b50505b50565b60408051606080820183525f80835260208301529181019190915261030d826108f2565b6001600160a01b037f000000000000000000000000000000000000000000000000000000000000000016300361067057604051632abf118b60e21b815260040160405180910390fd5b8015801561068557506106823061085e565b15155b15610600576040516342a176d160e11b815260040160405180910390fd5b6001600160a01b037f00000000000000000000000000000000000000000000000000000000000000001630036106ec57604051632abf118b60e21b815260040160405180910390fd5b604080516060810190915261060090805f81526020015f815260200160405180602001604052805f815250815250826109b4565b6001600160a01b037f000000000000000000000000000000000000000000000000000000000000000016300361076957604051632abf118b60e21b815260040160405180910390fd5b801561060057610777610ad4565b604051637756691560e01b815273__$acbb9ece542dcf2065f41aa3c8cca5827e$__9163775669159161081591907f0000000000000000000000000000000000000000000000000000000000000000907f00000000000000000000000000000000000000000000000000000000000000009087907f00000000000000000000000000000000000000000000000000000000000000009060040161108e565b602060405180830381865af4158015610830573d5f5f3e3d5ffd5b505050506040513d601f19601f820116820180604052508101906108549190611077565b5050565b5f61030d825b6040516370a0823160e01b81526001600160a01b0382811660048301525f9161030d917f000000000000000000000000000000000000000000000000000000000000000016906370a0823190602401602060405180830381865afa1580156108c8573d5f5f3e3d5ffd5b505050506040513d601f19601f820116820180604052508101906108ec9190611077565b83610be3565b60408051606080820183525f8083526020830152918101919091526040516347e5753360e01b81527f000000000000000000000000000000000000000000000000000000000000000060048201525f906001600160a01b038416906347e57533906024015f60405180830381865afa158015610970573d5f5f3e3d5ffd5b505050506040513d5f823e601f3d908101601f19168201604052610997919081019061111a565b9050808060200190518101906109ad919061114c565b9392505050565b5f818060200190518101906109c9919061114c565b604051632cbf28cb60e21b815290915073__$acbb9ece542dcf2065f41aa3c8cca5827e$__9063b2fca32c90610a03908490600401611014565b5f6040518083038186803b158015610a19575f5ffd5b505af4158015610a2b573d5f5f3e3d5ffd5b50505050815181604051602001610a429190611014565b6040516020818303038152906040525114610a70576040516350701b6160e01b815260040160405180910390fd5b7fca7f7aa563866a1d31c74deba224724d1da9c35cbb6f783f2ccf0182f91e34f88382604051610aa19291906111d8565b60405180910390a17f00000000000000000000000000000000000000000000000000000000000000006105fb8382611288565b60408051606080820183525f8083526020830152918101919091527f00000000000000000000000000000000000000000000000000000000000000008054610b1b90611205565b80601f0160208091040260200160405190810160405280929190818152602001828054610b4790611205565b8015610b925780601f10610b6957610100808354040283529160200191610b92565b820191905f5260205f20905b815481529060010190602001808311610b7557829003601f168201915b5050505050806020019051810190610baa919061114c565b905090565b5f610baa670de0b6b3a7640000807f0000000000000000000000000000000000000000000000000000000000000000610c9f565b5f610c0d7f0000000000000000000000000000000000000000000000000000000000000000610d4f565b610c95610c76610c3c7f0000000000000000000000000000000000000000000000000000000000000000610d4f565b610c469087611357565b7f00000000000000000000000000000000000000000000000000000000000000005b670de0b6b3a7640000610c9f565b610c7f856108f2565b60200151610c6890670de0b6b3a764000061136e565b6109ad9190611395565b5f5f5f610cac8686610dc6565b91509150815f03610cd057838181610cc657610cc6611381565b04925050506109ad565b818411610ce757610ce76003851502601118610de2565b5f848688095f868103871696879004966002600389028118808a02820302808a02820302808a02820302808a02820302808a02820302808a02909103029181900381900460010185841190960395909502919093039390930492909217029150509392505050565b5f816001600160a01b031663313ce5676040518163ffffffff1660e01b8152600401602060405180830381865afa158015610d8c573d5f5f3e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610db091906113b4565b610dbb9060126113cf565b61030d90600a6114cb565b5f805f1983850993909202808410938190039390930393915050565b634e487b715f52806020526024601cfd5b60ff81168114610600575f5ffd5b634e487b7160e01b5f52604160045260245ffd5b6040516060810167ffffffffffffffff81118282101715610e3857610e38610e01565b60405290565b604051601f8201601f1916810167ffffffffffffffff81118282101715610e6757610e67610e01565b604052919050565b5f67ffffffffffffffff821115610e8857610e88610e01565b50601f01601f191660200190565b5f82601f830112610ea5575f5ffd5b8135610eb8610eb382610e6f565b610e3e565b818152846020838601011115610ecc575f5ffd5b816020850160208301375f918101602001919091529392505050565b5f5f60408385031215610ef9575f5ffd5b8235610f0481610df3565b9150602083013567ffffffffffffffff811115610f1f575f5ffd5b610f2b85828601610e96565b9150509250929050565b5f81518084528060208401602086015e5f602082860101526020601f19601f83011685010191505092915050565b602081525f6109ad6020830184610f35565b5f60208284031215610f85575f5ffd5b5035919050565b5f60208284031215610f9c575f5ffd5b81356001600160a01b03811681146109ad575f5ffd5b634e487b7160e01b5f52602160045260245ffd5b5f815160038110610fe557634e487b7160e01b5f52602160045260245ffd5b808452506020820151602084015260408201516060604085015261100c6060850182610f35565b949350505050565b602081525f6109ad6020830184610fc6565b5f60208284031215611036575f5ffd5b813580151581146109ad575f5ffd5b5f60208284031215611055575f5ffd5b813567ffffffffffffffff81111561106b575f5ffd5b61100c84828501610e96565b5f60208284031215611087575f5ffd5b5051919050565b60a081525f6110a060a0830188610fc6565b6001600160a01b039687166020840152949095166040820152606081019290925260809091015292915050565b5f82601f8301126110dc575f5ffd5b81516110ea610eb382610e6f565b8181528460208386010111156110fe575f5ffd5b8160208501602083015e5f918101602001919091529392505050565b5f6020828403121561112a575f5ffd5b815167ffffffffffffffff811115611140575f5ffd5b61100c848285016110cd565b5f6020828403121561115c575f5ffd5b815167ffffffffffffffff811115611172575f5ffd5b820160608185031215611183575f5ffd5b61118b610e15565b815160038110611199575f5ffd5b815260208281015190820152604082015167ffffffffffffffff8111156111be575f5ffd5b6111ca868285016110cd565b604083015250949350505050565b604081525f6111ea6040830185610fc6565b82810360208401526111fc8185610fc6565b95945050505050565b600181811c9082168061121957607f821691505b60208210810361123757634e487b7160e01b5f52602260045260245ffd5b50919050565b601f8211156105fd57805f5260205f20601f840160051c810160208510156112625750805b601f840160051c820191505b81811015611281575f815560010161126e565b5050505050565b815167ffffffffffffffff8111156112a2576112a2610e01565b6112b6816112b08454611205565b8461123d565b6020601f8211600181146112e8575f83156112d15750848201515b5f19600385901b1c1916600184901b178455611281565b5f84815260208120601f198516915b8281101561131757878501518255602094850194600190920191016112f7565b508482101561133457868401515f19600387901b60f8161c191681555b50505050600190811b01905550565b634e487b7160e01b5f52601160045260245ffd5b808202811582820484141761030d5761030d611343565b8181038181111561030d5761030d611343565b634e487b7160e01b5f52601260045260245ffd5b5f826113af57634e487b7160e01b5f52601260045260245ffd5b500490565b5f602082840312156113c4575f5ffd5b81516109ad81610df3565b60ff828116828216039081111561030d5761030d611343565b6001815b60018411156114235780850481111561140757611407611343565b600184161561141557908102905b60019390931c9280026113ec565b935093915050565b5f826114395750600161030d565b8161144557505f61030d565b816001811461145b576002811461146557611481565b600191505061030d565b60ff84111561147657611476611343565b50506001821b61030d565b5060208310610133831016604e8410600b84101617156114a4575081810a61030d565b6114b05f1984846113e8565b805f19048211156114c3576114c3611343565b029392505050565b5f6109ad60ff84168361142b56fea2646970667358221220a0a23d761b87053be335ea25d765fe4df78c1379ebb0ef6ed139360180fadd2d64736f6c634300081e0033","opcodes":"PUSH1 0x80 PUSH1 0x40 MSTORE CALLVALUE DUP1 ISZERO PUSH2 0xF JUMPI PUSH0 PUSH0 REVERT JUMPDEST POP PUSH1 0x4 CALLDATASIZE LT PUSH2 0xCB JUMPI PUSH0 CALLDATALOAD PUSH1 0xE0 SHR DUP1 PUSH4 0x5B9A4C35 GT PUSH2 0x88 JUMPI DUP1 PUSH4 0xB6B55F25 GT PUSH2 0x63 JUMPI DUP1 PUSH4 0xB6B55F25 EQ PUSH2 0x209 JUMPI DUP1 PUSH4 0xCE96CB77 EQ PUSH2 0x21C JUMPI DUP1 PUSH4 0xDE846AE4 EQ PUSH2 0x22F JUMPI DUP1 PUSH4 0xF3E0FFBF EQ PUSH2 0x262 JUMPI PUSH0 PUSH0 REVERT JUMPDEST DUP1 PUSH4 0x5B9A4C35 EQ PUSH2 0x184 JUMPI DUP1 PUSH4 0x9C4667A2 EQ PUSH2 0x1AB JUMPI DUP1 PUSH4 0x9CD47128 EQ PUSH2 0x1F6 JUMPI PUSH0 PUSH0 REVERT JUMPDEST DUP1 PUSH4 0x981B1C2 EQ PUSH2 0xCF JUMPI DUP1 PUSH4 0x1418983B EQ PUSH2 0xF8 JUMPI DUP1 PUSH4 0x2E1A7D4D EQ PUSH2 0x128 JUMPI DUP1 PUSH4 0x402D267D EQ PUSH2 0x13D JUMPI DUP1 PUSH4 0x42B054F0 EQ PUSH2 0x151 JUMPI DUP1 PUSH4 0x5A117456 EQ PUSH2 0x171 JUMPI JUMPDEST PUSH0 PUSH0 REVERT JUMPDEST PUSH2 0xE2 PUSH2 0xDD CALLDATASIZE PUSH1 0x4 PUSH2 0xEE8 JUMP JUMPDEST PUSH2 0x275 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0xEF SWAP2 SWAP1 PUSH2 0xF63 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST PUSH32 0x0 JUMPDEST PUSH1 0x40 MLOAD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH2 0xEF JUMP JUMPDEST PUSH2 0x13B PUSH2 0x136 CALLDATASIZE PUSH1 0x4 PUSH2 0xF75 JUMP JUMPDEST PUSH2 0x313 JUMP JUMPDEST STOP JUMPDEST PUSH2 0x11A PUSH2 0x14B CALLDATASIZE PUSH1 0x4 PUSH2 0xF8C JUMP JUMPDEST POP PUSH0 NOT SWAP1 JUMP JUMPDEST PUSH2 0x164 PUSH2 0x15F CALLDATASIZE PUSH1 0x4 PUSH2 0xF8C JUMP JUMPDEST PUSH2 0x603 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0xEF SWAP2 SWAP1 PUSH2 0x1014 JUMP JUMPDEST PUSH2 0x13B PUSH2 0x17F CALLDATASIZE PUSH1 0x4 PUSH2 0x1026 JUMP JUMPDEST PUSH2 0x627 JUMP JUMPDEST PUSH2 0x11A PUSH32 0x0 DUP2 JUMP JUMPDEST PUSH2 0x1DE PUSH2 0x1B9 CALLDATASIZE PUSH1 0x4 PUSH2 0xF8C JUMP JUMPDEST POP PUSH32 0x0 SWAP1 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP1 SWAP2 AND DUP2 MSTORE PUSH1 0x20 ADD PUSH2 0xEF JUMP JUMPDEST PUSH2 0x13B PUSH2 0x204 CALLDATASIZE PUSH1 0x4 PUSH2 0x1045 JUMP JUMPDEST PUSH2 0x6A3 JUMP JUMPDEST PUSH2 0x13B PUSH2 0x217 CALLDATASIZE PUSH1 0x4 PUSH2 0xF75 JUMP JUMPDEST PUSH2 0x720 JUMP JUMPDEST PUSH2 0x11A PUSH2 0x22A CALLDATASIZE PUSH1 0x4 PUSH2 0xF8C JUMP JUMPDEST PUSH2 0x858 JUMP JUMPDEST PUSH2 0x1DE PUSH2 0x23D CALLDATASIZE PUSH1 0x4 PUSH2 0xF8C JUMP JUMPDEST POP PUSH32 0x0 SWAP1 JUMP JUMPDEST PUSH2 0x11A PUSH2 0x270 CALLDATASIZE PUSH1 0x4 PUSH2 0xF8C JUMP JUMPDEST PUSH2 0x85E JUMP JUMPDEST PUSH1 0x60 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB PUSH32 0x0 AND ADDRESS SUB PUSH2 0x2C0 JUMPI PUSH1 0x40 MLOAD PUSH4 0x2ABF118B PUSH1 0xE2 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH0 PUSH1 0xFF DUP5 AND DUP1 ISZERO PUSH2 0x2D3 JUMPI PUSH2 0x2D3 PUSH2 0xFB2 JUMP JUMPDEST SWAP1 POP PUSH0 DUP2 DUP1 ISZERO PUSH2 0x2E5 JUMPI PUSH2 0x2E5 PUSH2 0xFB2 JUMP JUMPDEST SUB PUSH2 0xCB JUMPI PUSH2 0x2FC PUSH2 0x2F6 ADDRESS PUSH2 0x8F2 JUMP JUMPDEST DUP5 PUSH2 0x9B4 JUMP JUMPDEST POP POP PUSH1 0x40 DUP1 MLOAD PUSH1 0x20 DUP2 ADD SWAP1 SWAP2 MSTORE PUSH0 DUP2 MSTORE JUMPDEST SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB PUSH32 0x0 AND ADDRESS SUB PUSH2 0x35C JUMPI PUSH1 0x40 MLOAD PUSH4 0x2ABF118B PUSH1 0xE2 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST DUP1 ISZERO PUSH2 0x600 JUMPI PUSH0 PUSH2 0x36B PUSH2 0xAD4 JUMP JUMPDEST SWAP1 POP PUSH0 PUSH2 0x376 PUSH2 0xBAF JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH4 0x70A08231 PUSH1 0xE0 SHL DUP2 MSTORE ADDRESS PUSH1 0x4 DUP3 ADD MSTORE SWAP1 SWAP2 POP PUSH2 0x409 SWAP1 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB PUSH32 0x0 AND SWAP1 PUSH4 0x70A08231 SWAP1 PUSH1 0x24 ADD PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x3DF JUMPI RETURNDATASIZE PUSH0 PUSH0 RETURNDATACOPY RETURNDATASIZE PUSH0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP3 ADD DUP1 PUSH1 0x40 MSTORE POP DUP2 ADD SWAP1 PUSH2 0x403 SWAP2 SWAP1 PUSH2 0x1077 JUMP JUMPDEST ADDRESS PUSH2 0xBE3 JUMP JUMPDEST DUP4 LT PUSH2 0x53D JUMPI PUSH1 0x40 MLOAD PUSH4 0x70A08231 PUSH1 0xE0 SHL DUP2 MSTORE ADDRESS PUSH1 0x4 DUP3 ADD MSTORE PUSH20 0x0 SWAP1 PUSH4 0x77566915 SWAP1 DUP5 SWAP1 PUSH32 0x0 SWAP1 PUSH32 0x0 SWAP1 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP4 AND SWAP1 PUSH4 0x70A08231 SWAP1 PUSH1 0x24 ADD PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x4B3 JUMPI RETURNDATASIZE PUSH0 PUSH0 RETURNDATACOPY RETURNDATASIZE PUSH0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP3 ADD DUP1 PUSH1 0x40 MSTORE POP DUP2 ADD SWAP1 PUSH2 0x4D7 SWAP2 SWAP1 PUSH2 0x1077 JUMP JUMPDEST DUP7 PUSH1 0x40 MLOAD DUP7 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x4F8 SWAP6 SWAP5 SWAP4 SWAP3 SWAP2 SWAP1 PUSH2 0x108E JUMP JUMPDEST PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 GAS DELEGATECALL ISZERO DUP1 ISZERO PUSH2 0x513 JUMPI RETURNDATASIZE PUSH0 PUSH0 RETURNDATACOPY RETURNDATASIZE PUSH0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP3 ADD DUP1 PUSH1 0x40 MSTORE POP DUP2 ADD SWAP1 PUSH2 0x537 SWAP2 SWAP1 PUSH2 0x1077 JUMP JUMPDEST POP PUSH2 0x5FD JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH4 0x581E517D PUSH1 0xE0 SHL DUP2 MSTORE PUSH20 0x0 SWAP1 PUSH4 0x581E517D SWAP1 PUSH2 0x5BC SWAP1 DUP6 SWAP1 PUSH32 0x0 SWAP1 PUSH32 0x0 SWAP1 DUP10 SWAP1 DUP9 SWAP1 PUSH1 0x4 ADD PUSH2 0x108E JUMP JUMPDEST PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 GAS DELEGATECALL ISZERO DUP1 ISZERO PUSH2 0x5D7 JUMPI RETURNDATASIZE PUSH0 PUSH0 RETURNDATACOPY RETURNDATASIZE PUSH0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP3 ADD DUP1 PUSH1 0x40 MSTORE POP DUP2 ADD SWAP1 PUSH2 0x5FB SWAP2 SWAP1 PUSH2 0x1077 JUMP JUMPDEST POP JUMPDEST POP POP JUMPDEST POP JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH1 0x60 DUP1 DUP3 ADD DUP4 MSTORE PUSH0 DUP1 DUP4 MSTORE PUSH1 0x20 DUP4 ADD MSTORE SWAP2 DUP2 ADD SWAP2 SWAP1 SWAP2 MSTORE PUSH2 0x30D DUP3 PUSH2 0x8F2 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB PUSH32 0x0 AND ADDRESS SUB PUSH2 0x670 JUMPI PUSH1 0x40 MLOAD PUSH4 0x2ABF118B PUSH1 0xE2 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST DUP1 ISZERO DUP1 ISZERO PUSH2 0x685 JUMPI POP PUSH2 0x682 ADDRESS PUSH2 0x85E JUMP JUMPDEST ISZERO ISZERO JUMPDEST ISZERO PUSH2 0x600 JUMPI PUSH1 0x40 MLOAD PUSH4 0x42A176D1 PUSH1 0xE1 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB PUSH32 0x0 AND ADDRESS SUB PUSH2 0x6EC JUMPI PUSH1 0x40 MLOAD PUSH4 0x2ABF118B PUSH1 0xE2 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH1 0x60 DUP2 ADD SWAP1 SWAP2 MSTORE PUSH2 0x600 SWAP1 DUP1 PUSH0 DUP2 MSTORE PUSH1 0x20 ADD PUSH0 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x40 MLOAD DUP1 PUSH1 0x20 ADD PUSH1 0x40 MSTORE DUP1 PUSH0 DUP2 MSTORE POP DUP2 MSTORE POP DUP3 PUSH2 0x9B4 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB PUSH32 0x0 AND ADDRESS SUB PUSH2 0x769 JUMPI PUSH1 0x40 MLOAD PUSH4 0x2ABF118B PUSH1 0xE2 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST DUP1 ISZERO PUSH2 0x600 JUMPI PUSH2 0x777 PUSH2 0xAD4 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH4 0x77566915 PUSH1 0xE0 SHL DUP2 MSTORE PUSH20 0x0 SWAP2 PUSH4 0x77566915 SWAP2 PUSH2 0x815 SWAP2 SWAP1 PUSH32 0x0 SWAP1 PUSH32 0x0 SWAP1 DUP8 SWAP1 PUSH32 0x0 SWAP1 PUSH1 0x4 ADD PUSH2 0x108E JUMP JUMPDEST PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 GAS DELEGATECALL ISZERO DUP1 ISZERO PUSH2 0x830 JUMPI RETURNDATASIZE PUSH0 PUSH0 RETURNDATACOPY RETURNDATASIZE PUSH0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP3 ADD DUP1 PUSH1 0x40 MSTORE POP DUP2 ADD SWAP1 PUSH2 0x854 SWAP2 SWAP1 PUSH2 0x1077 JUMP JUMPDEST POP POP JUMP JUMPDEST PUSH0 PUSH2 0x30D DUP3 JUMPDEST PUSH1 0x40 MLOAD PUSH4 0x70A08231 PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP3 DUP2 AND PUSH1 0x4 DUP4 ADD MSTORE PUSH0 SWAP2 PUSH2 0x30D SWAP2 PUSH32 0x0 AND SWAP1 PUSH4 0x70A08231 SWAP1 PUSH1 0x24 ADD PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x8C8 JUMPI RETURNDATASIZE PUSH0 PUSH0 RETURNDATACOPY RETURNDATASIZE PUSH0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP3 ADD DUP1 PUSH1 0x40 MSTORE POP DUP2 ADD SWAP1 PUSH2 0x8EC SWAP2 SWAP1 PUSH2 0x1077 JUMP JUMPDEST DUP4 PUSH2 0xBE3 JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH1 0x60 DUP1 DUP3 ADD DUP4 MSTORE PUSH0 DUP1 DUP4 MSTORE PUSH1 0x20 DUP4 ADD MSTORE SWAP2 DUP2 ADD SWAP2 SWAP1 SWAP2 MSTORE PUSH1 0x40 MLOAD PUSH4 0x47E57533 PUSH1 0xE0 SHL DUP2 MSTORE PUSH32 0x0 PUSH1 0x4 DUP3 ADD MSTORE PUSH0 SWAP1 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP5 AND SWAP1 PUSH4 0x47E57533 SWAP1 PUSH1 0x24 ADD PUSH0 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x970 JUMPI RETURNDATASIZE PUSH0 PUSH0 RETURNDATACOPY RETURNDATASIZE PUSH0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH0 DUP3 RETURNDATACOPY PUSH1 0x1F RETURNDATASIZE SWAP1 DUP2 ADD PUSH1 0x1F NOT AND DUP3 ADD PUSH1 0x40 MSTORE PUSH2 0x997 SWAP2 SWAP1 DUP2 ADD SWAP1 PUSH2 0x111A JUMP JUMPDEST SWAP1 POP DUP1 DUP1 PUSH1 0x20 ADD SWAP1 MLOAD DUP2 ADD SWAP1 PUSH2 0x9AD SWAP2 SWAP1 PUSH2 0x114C JUMP JUMPDEST SWAP4 SWAP3 POP POP POP JUMP JUMPDEST PUSH0 DUP2 DUP1 PUSH1 0x20 ADD SWAP1 MLOAD DUP2 ADD SWAP1 PUSH2 0x9C9 SWAP2 SWAP1 PUSH2 0x114C JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH4 0x2CBF28CB PUSH1 0xE2 SHL DUP2 MSTORE SWAP1 SWAP2 POP PUSH20 0x0 SWAP1 PUSH4 0xB2FCA32C SWAP1 PUSH2 0xA03 SWAP1 DUP5 SWAP1 PUSH1 0x4 ADD PUSH2 0x1014 JUMP JUMPDEST PUSH0 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0xA19 JUMPI PUSH0 PUSH0 REVERT JUMPDEST POP GAS DELEGATECALL ISZERO DUP1 ISZERO PUSH2 0xA2B JUMPI RETURNDATASIZE PUSH0 PUSH0 RETURNDATACOPY RETURNDATASIZE PUSH0 REVERT JUMPDEST POP POP POP POP DUP2 MLOAD DUP2 PUSH1 0x40 MLOAD PUSH1 0x20 ADD PUSH2 0xA42 SWAP2 SWAP1 PUSH2 0x1014 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH1 0x20 DUP2 DUP4 SUB SUB DUP2 MSTORE SWAP1 PUSH1 0x40 MSTORE MLOAD EQ PUSH2 0xA70 JUMPI PUSH1 0x40 MLOAD PUSH4 0x50701B61 PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH32 0xCA7F7AA563866A1D31C74DEBA224724D1DA9C35CBB6F783F2CCF0182F91E34F8 DUP4 DUP3 PUSH1 0x40 MLOAD PUSH2 0xAA1 SWAP3 SWAP2 SWAP1 PUSH2 0x11D8 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 LOG1 PUSH32 0x0 PUSH2 0x5FB DUP4 DUP3 PUSH2 0x1288 JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH1 0x60 DUP1 DUP3 ADD DUP4 MSTORE PUSH0 DUP1 DUP4 MSTORE PUSH1 0x20 DUP4 ADD MSTORE SWAP2 DUP2 ADD SWAP2 SWAP1 SWAP2 MSTORE PUSH32 0x0 DUP1 SLOAD PUSH2 0xB1B SWAP1 PUSH2 0x1205 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 0xB47 SWAP1 PUSH2 0x1205 JUMP JUMPDEST DUP1 ISZERO PUSH2 0xB92 JUMPI DUP1 PUSH1 0x1F LT PUSH2 0xB69 JUMPI PUSH2 0x100 DUP1 DUP4 SLOAD DIV MUL DUP4 MSTORE SWAP2 PUSH1 0x20 ADD SWAP2 PUSH2 0xB92 JUMP JUMPDEST DUP3 ADD SWAP2 SWAP1 PUSH0 MSTORE PUSH1 0x20 PUSH0 KECCAK256 SWAP1 JUMPDEST DUP2 SLOAD DUP2 MSTORE SWAP1 PUSH1 0x1 ADD SWAP1 PUSH1 0x20 ADD DUP1 DUP4 GT PUSH2 0xB75 JUMPI DUP3 SWAP1 SUB PUSH1 0x1F AND DUP3 ADD SWAP2 JUMPDEST POP POP POP POP POP DUP1 PUSH1 0x20 ADD SWAP1 MLOAD DUP2 ADD SWAP1 PUSH2 0xBAA SWAP2 SWAP1 PUSH2 0x114C JUMP JUMPDEST SWAP1 POP SWAP1 JUMP JUMPDEST PUSH0 PUSH2 0xBAA PUSH8 0xDE0B6B3A7640000 DUP1 PUSH32 0x0 PUSH2 0xC9F JUMP JUMPDEST PUSH0 PUSH2 0xC0D PUSH32 0x0 PUSH2 0xD4F JUMP JUMPDEST PUSH2 0xC95 PUSH2 0xC76 PUSH2 0xC3C PUSH32 0x0 PUSH2 0xD4F JUMP JUMPDEST PUSH2 0xC46 SWAP1 DUP8 PUSH2 0x1357 JUMP JUMPDEST PUSH32 0x0 JUMPDEST PUSH8 0xDE0B6B3A7640000 PUSH2 0xC9F JUMP JUMPDEST PUSH2 0xC7F DUP6 PUSH2 0x8F2 JUMP JUMPDEST PUSH1 0x20 ADD MLOAD PUSH2 0xC68 SWAP1 PUSH8 0xDE0B6B3A7640000 PUSH2 0x136E JUMP JUMPDEST PUSH2 0x9AD SWAP2 SWAP1 PUSH2 0x1395 JUMP JUMPDEST PUSH0 PUSH0 PUSH0 PUSH2 0xCAC DUP7 DUP7 PUSH2 0xDC6 JUMP JUMPDEST SWAP2 POP SWAP2 POP DUP2 PUSH0 SUB PUSH2 0xCD0 JUMPI DUP4 DUP2 DUP2 PUSH2 0xCC6 JUMPI PUSH2 0xCC6 PUSH2 0x1381 JUMP JUMPDEST DIV SWAP3 POP POP POP PUSH2 0x9AD JUMP JUMPDEST DUP2 DUP5 GT PUSH2 0xCE7 JUMPI PUSH2 0xCE7 PUSH1 0x3 DUP6 ISZERO MUL PUSH1 0x11 XOR PUSH2 0xDE2 JUMP JUMPDEST PUSH0 DUP5 DUP7 DUP9 MULMOD PUSH0 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 DUP6 DUP5 GT SWAP1 SWAP7 SUB SWAP6 SWAP1 SWAP6 MUL SWAP2 SWAP1 SWAP4 SUB SWAP4 SWAP1 SWAP4 DIV SWAP3 SWAP1 SWAP3 OR MUL SWAP2 POP POP SWAP4 SWAP3 POP POP POP JUMP JUMPDEST PUSH0 DUP2 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 GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0xD8C JUMPI RETURNDATASIZE PUSH0 PUSH0 RETURNDATACOPY RETURNDATASIZE PUSH0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP3 ADD DUP1 PUSH1 0x40 MSTORE POP DUP2 ADD SWAP1 PUSH2 0xDB0 SWAP2 SWAP1 PUSH2 0x13B4 JUMP JUMPDEST PUSH2 0xDBB SWAP1 PUSH1 0x12 PUSH2 0x13CF JUMP JUMPDEST PUSH2 0x30D SWAP1 PUSH1 0xA PUSH2 0x14CB JUMP JUMPDEST PUSH0 DUP1 PUSH0 NOT DUP4 DUP6 MULMOD SWAP4 SWAP1 SWAP3 MUL DUP1 DUP5 LT SWAP4 DUP2 SWAP1 SUB SWAP4 SWAP1 SWAP4 SUB SWAP4 SWAP2 POP POP JUMP JUMPDEST PUSH4 0x4E487B71 PUSH0 MSTORE DUP1 PUSH1 0x20 MSTORE PUSH1 0x24 PUSH1 0x1C REVERT JUMPDEST PUSH1 0xFF DUP2 AND DUP2 EQ PUSH2 0x600 JUMPI PUSH0 PUSH0 REVERT JUMPDEST PUSH4 0x4E487B71 PUSH1 0xE0 SHL PUSH0 MSTORE PUSH1 0x41 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH0 REVERT JUMPDEST PUSH1 0x40 MLOAD PUSH1 0x60 DUP2 ADD PUSH8 0xFFFFFFFFFFFFFFFF DUP2 GT DUP3 DUP3 LT OR ISZERO PUSH2 0xE38 JUMPI PUSH2 0xE38 PUSH2 0xE01 JUMP JUMPDEST PUSH1 0x40 MSTORE SWAP1 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH1 0x1F DUP3 ADD PUSH1 0x1F NOT AND DUP2 ADD PUSH8 0xFFFFFFFFFFFFFFFF DUP2 GT DUP3 DUP3 LT OR ISZERO PUSH2 0xE67 JUMPI PUSH2 0xE67 PUSH2 0xE01 JUMP JUMPDEST PUSH1 0x40 MSTORE SWAP2 SWAP1 POP JUMP JUMPDEST PUSH0 PUSH8 0xFFFFFFFFFFFFFFFF DUP3 GT ISZERO PUSH2 0xE88 JUMPI PUSH2 0xE88 PUSH2 0xE01 JUMP JUMPDEST POP PUSH1 0x1F ADD PUSH1 0x1F NOT AND PUSH1 0x20 ADD SWAP1 JUMP JUMPDEST PUSH0 DUP3 PUSH1 0x1F DUP4 ADD SLT PUSH2 0xEA5 JUMPI PUSH0 PUSH0 REVERT JUMPDEST DUP2 CALLDATALOAD PUSH2 0xEB8 PUSH2 0xEB3 DUP3 PUSH2 0xE6F JUMP JUMPDEST PUSH2 0xE3E JUMP JUMPDEST DUP2 DUP2 MSTORE DUP5 PUSH1 0x20 DUP4 DUP7 ADD ADD GT ISZERO PUSH2 0xECC JUMPI PUSH0 PUSH0 REVERT JUMPDEST DUP2 PUSH1 0x20 DUP6 ADD PUSH1 0x20 DUP4 ADD CALLDATACOPY PUSH0 SWAP2 DUP2 ADD PUSH1 0x20 ADD SWAP2 SWAP1 SWAP2 MSTORE SWAP4 SWAP3 POP POP POP JUMP JUMPDEST PUSH0 PUSH0 PUSH1 0x40 DUP4 DUP6 SUB SLT ISZERO PUSH2 0xEF9 JUMPI PUSH0 PUSH0 REVERT JUMPDEST DUP3 CALLDATALOAD PUSH2 0xF04 DUP2 PUSH2 0xDF3 JUMP JUMPDEST SWAP2 POP PUSH1 0x20 DUP4 ADD CALLDATALOAD PUSH8 0xFFFFFFFFFFFFFFFF DUP2 GT ISZERO PUSH2 0xF1F JUMPI PUSH0 PUSH0 REVERT JUMPDEST PUSH2 0xF2B DUP6 DUP3 DUP7 ADD PUSH2 0xE96 JUMP JUMPDEST SWAP2 POP POP SWAP3 POP SWAP3 SWAP1 POP JUMP JUMPDEST PUSH0 DUP2 MLOAD DUP1 DUP5 MSTORE DUP1 PUSH1 0x20 DUP5 ADD PUSH1 0x20 DUP7 ADD MCOPY PUSH0 PUSH1 0x20 DUP3 DUP7 ADD ADD MSTORE PUSH1 0x20 PUSH1 0x1F NOT PUSH1 0x1F DUP4 ADD AND DUP6 ADD ADD SWAP2 POP POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x20 DUP2 MSTORE PUSH0 PUSH2 0x9AD PUSH1 0x20 DUP4 ADD DUP5 PUSH2 0xF35 JUMP JUMPDEST PUSH0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0xF85 JUMPI PUSH0 PUSH0 REVERT JUMPDEST POP CALLDATALOAD SWAP2 SWAP1 POP JUMP JUMPDEST PUSH0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0xF9C JUMPI PUSH0 PUSH0 REVERT JUMPDEST DUP2 CALLDATALOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 AND DUP2 EQ PUSH2 0x9AD JUMPI PUSH0 PUSH0 REVERT JUMPDEST PUSH4 0x4E487B71 PUSH1 0xE0 SHL PUSH0 MSTORE PUSH1 0x21 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH0 REVERT JUMPDEST PUSH0 DUP2 MLOAD PUSH1 0x3 DUP2 LT PUSH2 0xFE5 JUMPI PUSH4 0x4E487B71 PUSH1 0xE0 SHL PUSH0 MSTORE PUSH1 0x21 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH0 REVERT JUMPDEST DUP1 DUP5 MSTORE POP PUSH1 0x20 DUP3 ADD MLOAD PUSH1 0x20 DUP5 ADD MSTORE PUSH1 0x40 DUP3 ADD MLOAD PUSH1 0x60 PUSH1 0x40 DUP6 ADD MSTORE PUSH2 0x100C PUSH1 0x60 DUP6 ADD DUP3 PUSH2 0xF35 JUMP JUMPDEST SWAP5 SWAP4 POP POP POP POP JUMP JUMPDEST PUSH1 0x20 DUP2 MSTORE PUSH0 PUSH2 0x9AD PUSH1 0x20 DUP4 ADD DUP5 PUSH2 0xFC6 JUMP JUMPDEST PUSH0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x1036 JUMPI PUSH0 PUSH0 REVERT JUMPDEST DUP2 CALLDATALOAD DUP1 ISZERO ISZERO DUP2 EQ PUSH2 0x9AD JUMPI PUSH0 PUSH0 REVERT JUMPDEST PUSH0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x1055 JUMPI PUSH0 PUSH0 REVERT JUMPDEST DUP2 CALLDATALOAD PUSH8 0xFFFFFFFFFFFFFFFF DUP2 GT ISZERO PUSH2 0x106B JUMPI PUSH0 PUSH0 REVERT JUMPDEST PUSH2 0x100C DUP5 DUP3 DUP6 ADD PUSH2 0xE96 JUMP JUMPDEST PUSH0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x1087 JUMPI PUSH0 PUSH0 REVERT JUMPDEST POP MLOAD SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0xA0 DUP2 MSTORE PUSH0 PUSH2 0x10A0 PUSH1 0xA0 DUP4 ADD DUP9 PUSH2 0xFC6 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP7 DUP8 AND PUSH1 0x20 DUP5 ADD MSTORE SWAP5 SWAP1 SWAP6 AND PUSH1 0x40 DUP3 ADD MSTORE PUSH1 0x60 DUP2 ADD SWAP3 SWAP1 SWAP3 MSTORE PUSH1 0x80 SWAP1 SWAP2 ADD MSTORE SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH0 DUP3 PUSH1 0x1F DUP4 ADD SLT PUSH2 0x10DC JUMPI PUSH0 PUSH0 REVERT JUMPDEST DUP2 MLOAD PUSH2 0x10EA PUSH2 0xEB3 DUP3 PUSH2 0xE6F JUMP JUMPDEST DUP2 DUP2 MSTORE DUP5 PUSH1 0x20 DUP4 DUP7 ADD ADD GT ISZERO PUSH2 0x10FE JUMPI PUSH0 PUSH0 REVERT JUMPDEST DUP2 PUSH1 0x20 DUP6 ADD PUSH1 0x20 DUP4 ADD MCOPY PUSH0 SWAP2 DUP2 ADD PUSH1 0x20 ADD SWAP2 SWAP1 SWAP2 MSTORE SWAP4 SWAP3 POP POP POP JUMP JUMPDEST PUSH0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x112A JUMPI PUSH0 PUSH0 REVERT JUMPDEST DUP2 MLOAD PUSH8 0xFFFFFFFFFFFFFFFF DUP2 GT ISZERO PUSH2 0x1140 JUMPI PUSH0 PUSH0 REVERT JUMPDEST PUSH2 0x100C DUP5 DUP3 DUP6 ADD PUSH2 0x10CD JUMP JUMPDEST PUSH0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x115C JUMPI PUSH0 PUSH0 REVERT JUMPDEST DUP2 MLOAD PUSH8 0xFFFFFFFFFFFFFFFF DUP2 GT ISZERO PUSH2 0x1172 JUMPI PUSH0 PUSH0 REVERT JUMPDEST DUP3 ADD PUSH1 0x60 DUP2 DUP6 SUB SLT ISZERO PUSH2 0x1183 JUMPI PUSH0 PUSH0 REVERT JUMPDEST PUSH2 0x118B PUSH2 0xE15 JUMP JUMPDEST DUP2 MLOAD PUSH1 0x3 DUP2 LT PUSH2 0x1199 JUMPI PUSH0 PUSH0 REVERT JUMPDEST DUP2 MSTORE PUSH1 0x20 DUP3 DUP2 ADD MLOAD SWAP1 DUP3 ADD MSTORE PUSH1 0x40 DUP3 ADD MLOAD PUSH8 0xFFFFFFFFFFFFFFFF DUP2 GT ISZERO PUSH2 0x11BE JUMPI PUSH0 PUSH0 REVERT JUMPDEST PUSH2 0x11CA DUP7 DUP3 DUP6 ADD PUSH2 0x10CD JUMP JUMPDEST PUSH1 0x40 DUP4 ADD MSTORE POP SWAP5 SWAP4 POP POP POP POP JUMP JUMPDEST PUSH1 0x40 DUP2 MSTORE PUSH0 PUSH2 0x11EA PUSH1 0x40 DUP4 ADD DUP6 PUSH2 0xFC6 JUMP JUMPDEST DUP3 DUP2 SUB PUSH1 0x20 DUP5 ADD MSTORE PUSH2 0x11FC DUP2 DUP6 PUSH2 0xFC6 JUMP JUMPDEST SWAP6 SWAP5 POP POP POP POP POP JUMP JUMPDEST PUSH1 0x1 DUP2 DUP2 SHR SWAP1 DUP3 AND DUP1 PUSH2 0x1219 JUMPI PUSH1 0x7F DUP3 AND SWAP2 POP JUMPDEST PUSH1 0x20 DUP3 LT DUP2 SUB PUSH2 0x1237 JUMPI PUSH4 0x4E487B71 PUSH1 0xE0 SHL PUSH0 MSTORE PUSH1 0x22 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH0 REVERT JUMPDEST POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x1F DUP3 GT ISZERO PUSH2 0x5FD JUMPI DUP1 PUSH0 MSTORE PUSH1 0x20 PUSH0 KECCAK256 PUSH1 0x1F DUP5 ADD PUSH1 0x5 SHR DUP2 ADD PUSH1 0x20 DUP6 LT ISZERO PUSH2 0x1262 JUMPI POP DUP1 JUMPDEST PUSH1 0x1F DUP5 ADD PUSH1 0x5 SHR DUP3 ADD SWAP2 POP JUMPDEST DUP2 DUP2 LT ISZERO PUSH2 0x1281 JUMPI PUSH0 DUP2 SSTORE PUSH1 0x1 ADD PUSH2 0x126E JUMP JUMPDEST POP POP POP POP POP JUMP JUMPDEST DUP2 MLOAD PUSH8 0xFFFFFFFFFFFFFFFF DUP2 GT ISZERO PUSH2 0x12A2 JUMPI PUSH2 0x12A2 PUSH2 0xE01 JUMP JUMPDEST PUSH2 0x12B6 DUP2 PUSH2 0x12B0 DUP5 SLOAD PUSH2 0x1205 JUMP JUMPDEST DUP5 PUSH2 0x123D JUMP JUMPDEST PUSH1 0x20 PUSH1 0x1F DUP3 GT PUSH1 0x1 DUP2 EQ PUSH2 0x12E8 JUMPI PUSH0 DUP4 ISZERO PUSH2 0x12D1 JUMPI POP DUP5 DUP3 ADD MLOAD JUMPDEST PUSH0 NOT PUSH1 0x3 DUP6 SWAP1 SHL SHR NOT AND PUSH1 0x1 DUP5 SWAP1 SHL OR DUP5 SSTORE PUSH2 0x1281 JUMP JUMPDEST PUSH0 DUP5 DUP2 MSTORE PUSH1 0x20 DUP2 KECCAK256 PUSH1 0x1F NOT DUP6 AND SWAP2 JUMPDEST DUP3 DUP2 LT ISZERO PUSH2 0x1317 JUMPI DUP8 DUP6 ADD MLOAD DUP3 SSTORE PUSH1 0x20 SWAP5 DUP6 ADD SWAP5 PUSH1 0x1 SWAP1 SWAP3 ADD SWAP2 ADD PUSH2 0x12F7 JUMP JUMPDEST POP DUP5 DUP3 LT ISZERO PUSH2 0x1334 JUMPI DUP7 DUP5 ADD MLOAD PUSH0 NOT PUSH1 0x3 DUP8 SWAP1 SHL PUSH1 0xF8 AND SHR NOT AND DUP2 SSTORE JUMPDEST POP POP POP POP PUSH1 0x1 SWAP1 DUP2 SHL ADD SWAP1 SSTORE POP JUMP JUMPDEST PUSH4 0x4E487B71 PUSH1 0xE0 SHL PUSH0 MSTORE PUSH1 0x11 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH0 REVERT JUMPDEST DUP1 DUP3 MUL DUP2 ISZERO DUP3 DUP3 DIV DUP5 EQ OR PUSH2 0x30D JUMPI PUSH2 0x30D PUSH2 0x1343 JUMP JUMPDEST DUP2 DUP2 SUB DUP2 DUP2 GT ISZERO PUSH2 0x30D JUMPI PUSH2 0x30D PUSH2 0x1343 JUMP JUMPDEST PUSH4 0x4E487B71 PUSH1 0xE0 SHL PUSH0 MSTORE PUSH1 0x12 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH0 REVERT JUMPDEST PUSH0 DUP3 PUSH2 0x13AF JUMPI PUSH4 0x4E487B71 PUSH1 0xE0 SHL PUSH0 MSTORE PUSH1 0x12 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH0 REVERT JUMPDEST POP DIV SWAP1 JUMP JUMPDEST PUSH0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x13C4 JUMPI PUSH0 PUSH0 REVERT JUMPDEST DUP2 MLOAD PUSH2 0x9AD DUP2 PUSH2 0xDF3 JUMP JUMPDEST PUSH1 0xFF DUP3 DUP2 AND DUP3 DUP3 AND SUB SWAP1 DUP2 GT ISZERO PUSH2 0x30D JUMPI PUSH2 0x30D PUSH2 0x1343 JUMP JUMPDEST PUSH1 0x1 DUP2 JUMPDEST PUSH1 0x1 DUP5 GT ISZERO PUSH2 0x1423 JUMPI DUP1 DUP6 DIV DUP2 GT ISZERO PUSH2 0x1407 JUMPI PUSH2 0x1407 PUSH2 0x1343 JUMP JUMPDEST PUSH1 0x1 DUP5 AND ISZERO PUSH2 0x1415 JUMPI SWAP1 DUP2 MUL SWAP1 JUMPDEST PUSH1 0x1 SWAP4 SWAP1 SWAP4 SHR SWAP3 DUP1 MUL PUSH2 0x13EC JUMP JUMPDEST SWAP4 POP SWAP4 SWAP2 POP POP JUMP JUMPDEST PUSH0 DUP3 PUSH2 0x1439 JUMPI POP PUSH1 0x1 PUSH2 0x30D JUMP JUMPDEST DUP2 PUSH2 0x1445 JUMPI POP PUSH0 PUSH2 0x30D JUMP JUMPDEST DUP2 PUSH1 0x1 DUP2 EQ PUSH2 0x145B JUMPI PUSH1 0x2 DUP2 EQ PUSH2 0x1465 JUMPI PUSH2 0x1481 JUMP JUMPDEST PUSH1 0x1 SWAP2 POP POP PUSH2 0x30D JUMP JUMPDEST PUSH1 0xFF DUP5 GT ISZERO PUSH2 0x1476 JUMPI PUSH2 0x1476 PUSH2 0x1343 JUMP JUMPDEST POP POP PUSH1 0x1 DUP3 SHL PUSH2 0x30D JUMP JUMPDEST POP PUSH1 0x20 DUP4 LT PUSH2 0x133 DUP4 LT AND PUSH1 0x4E DUP5 LT PUSH1 0xB DUP5 LT AND OR ISZERO PUSH2 0x14A4 JUMPI POP DUP2 DUP2 EXP PUSH2 0x30D JUMP JUMPDEST PUSH2 0x14B0 PUSH0 NOT DUP5 DUP5 PUSH2 0x13E8 JUMP JUMPDEST DUP1 PUSH0 NOT DIV DUP3 GT ISZERO PUSH2 0x14C3 JUMPI PUSH2 0x14C3 PUSH2 0x1343 JUMP JUMPDEST MUL SWAP4 SWAP3 POP POP POP JUMP JUMPDEST PUSH0 PUSH2 0x9AD PUSH1 0xFF DUP5 AND DUP4 PUSH2 0x142B JUMP INVALID LOG2 PUSH5 0x6970667358 0x22 SLT KECCAK256 LOG0 LOG2 RETURNDATASIZE PUSH23 0x1B87053BE335EA25D765FE4DF78C1379EBB0EF6ED13936 ADD DUP1 STATICCALL 0xDD 0x2D PUSH5 0x736F6C6343 STOP ADDMOD 0x1E STOP CALLER ","sourceMap":"517:826:85:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;7096:855:83;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;1242:99:85;1330:6;1242:99;;;2602:25:87;;;2590:2;2575:18;1242:99:85;2456:177:87;5298:741:83;;;;;;:::i;:::-;;:::i;:::-;;3003:194;;;;;;:::i;:::-;-1:-1:-1;;;3106:17:83;3003:194;8539:137;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;2566:165::-;;;;;;:::i;:::-;;:::i;1028:81::-;;;;;3235:104;;;;;;:::i;:::-;-1:-1:-1;3327:6:83;;3235:104;;;;-1:-1:-1;;;;;4626:32:87;;;4608:51;;4596:2;4581:18;3235:104:83;4462:203:87;2339:189:83;;;;;;:::i;:::-;;:::i;6245:331::-;;;;;;:::i;:::-;;:::i;2769:196::-;;;;;;:::i;:::-;;:::i;3424:99::-;;;;;;:::i;:::-;-1:-1:-1;3505:12:83;;3424:99;4921:172;;;;;;:::i;:::-;;:::i;7096:855::-;7196:12;-1:-1:-1;;;;;1543:6:83;1526:23;1534:4;1526:23;1522:72;;1558:36;;-1:-1:-1;;;1558:36:83;;;;;;;;;;;1522:72;7216:28:::1;7247:22;::::0;::::1;::::0;;::::1;;;;:::i;:::-;7216:53:::0;-1:-1:-1;7296:28:83::1;7279:13:::0;:45;;::::1;;;;:::i;:::-;::::0;7275:648:::1;;7603:53;7618:29;7641:4;7618:14;:29::i;:::-;7649:6;7603:14;:53::i;:::-;-1:-1:-1::0;;7937:9:83::1;::::0;;::::1;::::0;::::1;::::0;;;-1:-1:-1;7937:9:83;;1600:1:::1;7096:855:::0;;;;:::o;5298:741::-;-1:-1:-1;;;;;1543:6:83;1526:23;1534:4;1526:23;1522:72;;1558:36;;-1:-1:-1;;;1558:36:83;;;;;;;;;;;1522:72;5376:24;;5393:7:::1;5376:24;5405:40;5448:20;:18;:20::i;:::-;5405:63;;5474:13;5490:22;:20;:22::i;:::-;5547:37;::::0;-1:-1:-1;;;5547:37:83;;5578:4:::1;5547:37;::::0;::::1;4608:51:87::0;5474:38:83;;-1:-1:-1;5532:68:83::1;::::0;-1:-1:-1;;;;;5547:12:83::1;:22;::::0;::::1;::::0;4581:18:87;;5547:37:83::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;5594:4;5532:14;:68::i;:::-;5522:6;:78;5518:517;;5885:37;::::0;-1:-1:-1;;;5885:37:83;;5916:4:::1;5885:37;::::0;::::1;4608:51:87::0;5823:21:83::1;::::0;::::1;::::0;:10;;5853:12:::1;::::0;5876:6:::1;::::0;-1:-1:-1;;;;;5885:22:83;::::1;::::0;::::1;::::0;4581:18:87;;5885:37:83::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;5924:5;5823:107;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;5518:517;;;5951:77;::::0;-1:-1:-1;;;5951:77:83;;:22:::1;::::0;::::1;::::0;:77:::1;::::0;:10;;5982:12:::1;::::0;6005:6:::1;::::0;6014;;6022:5;;5951:77:::1;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;5518:517;5370:669;;1600:1;5298:741:::0;:::o;8539:137::-;-1:-1:-1;;;;;;;;;;;;;;;;;;;;;;;;8646:25:83;8661:9;8646:14;:25::i;2566:165::-;-1:-1:-1;;;;;1543:6:83;1526:23;1534:4;1526:23;1522:72;;1558:36;;-1:-1:-1;;;1558:36:83;;;;;;;;;;;1522:72;2649:5:::1;2648:6;:41;;;;;2658:26;2678:4;2658:11;:26::i;:::-;:31:::0;::::1;2648:41;2644:82;;;2698:28;;-1:-1:-1::0;;;2698:28:83::1;;;;;;;;;;;2339:189:::0;-1:-1:-1;;;;;1543:6:83;1526:23;1534:4;1526:23;1522:72;;1558:36;;-1:-1:-1;;;1558:36:83;;;;;;;;;;;1522:72;2440::::1;::::0;;::::1;::::0;::::1;::::0;;;2425:98:::1;::::0;2440:72;-1:-1:-1;2440:72:83::1;;;;2499:1;2440:72;;;;2502:9;;;;;;;;;;;::::0;2440:72:::1;;::::0;2514:8:::1;2425:14;:98::i;6245:331::-:0;-1:-1:-1;;;;;1543:6:83;1526:23;1534:4;1526:23;1522:72;;1558:36;;-1:-1:-1;;;1558:36:83;;;;;;;;;;;1522:72;6322:24;;6339:7:::1;6322:24;6472:20;:18;:20::i;:::-;:99;::::0;-1:-1:-1;;;6472:99:83;;:31:::1;::::0;::::1;::::0;:99:::1;::::0;:31;6512:6:::1;::::0;6529:12:::1;::::0;6544:6;;1330::85;;6472:99:83::1;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;6245:331:::0;:::o;2769:196::-;2847:7;2869:22;2881:9;4921:172;5043:33;;-1:-1:-1;;;5043:33:83;;-1:-1:-1;;;;;4626:32:87;;;5043:33:83;;;4608:51:87;4999:14:83;;5028:60;;5043:12;:22;;;;4581:18:87;;5043:33:83;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;5078:9;5028:14;:60::i;7955:260::-;-1:-1:-1;;;;;;;;;;;;;;;;;;;;;;;;8091:51:83;;-1:-1:-1;;;8091:51:83;;8130:11;8091:51;;;2602:25:87;8058:30:83;;-1:-1:-1;;;;;8091:38:83;;;;;2575:18:87;;8091:51:83;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;8091:51:83;;;;;;;;;;;;:::i;:::-;8058:84;;8166:17;8155:55;;;;;;;;;;;;:::i;:::-;8148:62;7955:260;-1:-1:-1;;;7955:260:83:o;6580:478::-;6699:40;6753:20;6742:58;;;;;;;;;;;;:::i;:::-;6806:21;;-1:-1:-1;;;6806:21:83;;6699:101;;-1:-1:-1;6806:19:83;;;;:21;;6699:101;;6806:21;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;6870:20;:27;6848:10;6837:22;;;;;;;;:::i;:::-;;;;;;;;;;;;;:29;:60;6833:93;;6906:20;;-1:-1:-1;;;6906:20:83;;;;;;;;;;;6833:93;6937:44;6955:13;6970:10;6937:44;;;;;;;:::i;:::-;;;;;;;;7012:11;6987:66;7033:20;7012:11;6987:66;:::i;8219:183::-;-1:-1:-1;;;;;;;;;;;;;;;;;;;;;;;;8352:11:83;8316:81;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;8309:88;;8219:183;:::o;3919:174::-;3974:7;3996:41;966:4;;1330:6:85;3996:11:83;:41::i;4550:333::-;4646:14;4858:20;4871:6;4858:12;:20::i;:::-;4681:174;4702:79;4729:26;4742:12;4729;:26::i;:::-;4714:41;;:12;:41;:::i;:::-;1330:6:85;4757:18:83;966:4;4702:11;:79::i;:::-;4797:25;4812:9;4797:14;:25::i;:::-;:37;;;4791:43;;966:4;4791:43;:::i;4681:174::-;:197;;;;:::i;7258:3683:47:-;7340:14;7391:12;7405:11;7420:12;7427:1;7430;7420:6;:12::i;:::-;7390:42;;;;7514:4;7522:1;7514:9;7510:365;;7849:11;7843:3;:17;;;;;:::i;:::-;;7836:24;;;;;;7510:365;8000:4;7985:11;:19;7981:142;;8024:84;5328:5;8044:16;;5327:36;940:4:43;5322:42:47;8024:11;:84::i;:::-;8375:17;8526:11;8523:1;8520;8513:25;8918:12;8948:15;;;8933:31;;9083:22;;;;;9816:1;9797;:15;;9796:21;;10049;;;10045:25;;10034:36;10119:21;;;10115:25;;10104:36;10191:21;;;10187:25;;10176:36;10262:21;;;10258:25;;10247:36;10335:21;;;10331:25;;10320:36;10409:21;;;10405:25;;;10394:36;9325:12;;;;9321:23;;;9346:1;9317:31;8638:18;;;8628:29;;;9432:11;;;;8681:19;;;;9176:14;;;;9425:18;;;;10884:13;;-1:-1:-1;;7258:3683:47;;;;;:::o;2178:123:83:-;2245:7;2279:5;-1:-1:-1;;;;;2279:14:83;;:16;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;2274:21;;:2;:21;:::i;:::-;2267:29;;:2;:29;:::i;1027:550:47:-;1088:12;;-1:-1:-1;;1471:1:47;1468;1461:20;1501:9;;;;1549:11;;;1535:12;;;;1531:30;;;;;1027:550;-1:-1:-1;;1027:550:47:o;1776:194:43:-;1881:10;1875:4;1868:24;1918:4;1912;1905:18;1949:4;1943;1936:18;14:114:87;98:4;91:5;87:16;80:5;77:27;67:55;;118:1;115;108:12;133:127;194:10;189:3;185:20;182:1;175:31;225:4;222:1;215:15;249:4;246:1;239:15;265:253;337:2;331:9;379:4;367:17;;414:18;399:34;;435:22;;;396:62;393:88;;;461:18;;:::i;:::-;497:2;490:22;265:253;:::o;523:275::-;594:2;588:9;659:2;640:13;;-1:-1:-1;;636:27:87;624:40;;694:18;679:34;;715:22;;;676:62;673:88;;;741:18;;:::i;:::-;777:2;770:22;523:275;;-1:-1:-1;523:275:87:o;803:186::-;851:4;884:18;876:6;873:30;870:56;;;906:18;;:::i;:::-;-1:-1:-1;972:2:87;951:15;-1:-1:-1;;947:29:87;978:4;943:40;;803:186::o;994:486::-;1036:5;1089:3;1082:4;1074:6;1070:17;1066:27;1056:55;;1107:1;1104;1097:12;1056:55;1147:6;1134:20;1178:52;1194:35;1222:6;1194:35;:::i;:::-;1178:52;:::i;:::-;1255:6;1246:7;1239:23;1309:3;1302:4;1293:6;1285;1281:19;1277:30;1274:39;1271:59;;;1326:1;1323;1316:12;1271:59;1391:6;1384:4;1376:6;1372:17;1365:4;1356:7;1352:18;1339:59;1447:1;1418:20;;;1440:4;1414:31;1407:42;;;;1422:7;994:486;-1:-1:-1;;;994:486:87:o;1485:451::-;1560:6;1568;1621:2;1609:9;1600:7;1596:23;1592:32;1589:52;;;1637:1;1634;1627:12;1589:52;1676:9;1663:23;1695:29;1718:5;1695:29;:::i;:::-;1743:5;-1:-1:-1;1799:2:87;1784:18;;1771:32;1826:18;1815:30;;1812:50;;;1858:1;1855;1848:12;1812:50;1881:49;1922:7;1913:6;1902:9;1898:22;1881:49;:::i;:::-;1871:59;;;1485:451;;;;;:::o;1941:288::-;1982:3;2020:5;2014:12;2047:6;2042:3;2035:19;2103:6;2096:4;2089:5;2085:16;2078:4;2073:3;2069:14;2063:47;2155:1;2148:4;2139:6;2134:3;2130:16;2126:27;2119:38;2218:4;2211:2;2207:7;2202:2;2194:6;2190:15;2186:29;2181:3;2177:39;2173:50;2166:57;;;1941:288;;;;:::o;2234:217::-;2381:2;2370:9;2363:21;2344:4;2401:44;2441:2;2430:9;2426:18;2418:6;2401:44;:::i;2638:180::-;2697:6;2750:2;2738:9;2729:7;2725:23;2721:32;2718:52;;;2766:1;2763;2756:12;2718:52;-1:-1:-1;2789:23:87;;2638:180;-1:-1:-1;2638:180:87:o;2823:286::-;2882:6;2935:2;2923:9;2914:7;2910:23;2906:32;2903:52;;;2951:1;2948;2941:12;2903:52;2977:23;;-1:-1:-1;;;;;3029:31:87;;3019:42;;3009:70;;3075:1;3072;3065:12;3114:127;3175:10;3170:3;3166:20;3163:1;3156:31;3206:4;3203:1;3196:15;3230:4;3227:1;3220:15;3246:479;3299:3;3333:5;3327:12;3365:1;3361:2;3358:9;3348:140;;3410:10;3405:3;3401:20;3398:1;3391:31;3445:4;3442:1;3435:15;3473:4;3470:1;3463:15;3348:140;3509:2;3504:3;3497:15;;3561:4;3554:5;3550:16;3544:23;3537:4;3532:3;3528:14;3521:47;3614:4;3607:5;3603:16;3597:23;3652:4;3645;3640:3;3636:14;3629:28;3673:46;3713:4;3708:3;3704:14;3690:12;3673:46;:::i;:::-;3666:53;3246:479;-1:-1:-1;;;;3246:479:87:o;3730:267::-;3915:2;3904:9;3897:21;3878:4;3935:56;3987:2;3976:9;3972:18;3964:6;3935:56;:::i;4002:273::-;4058:6;4111:2;4099:9;4090:7;4086:23;4082:32;4079:52;;;4127:1;4124;4117:12;4079:52;4166:9;4153:23;4219:5;4212:13;4205:21;4198:5;4195:32;4185:60;;4241:1;4238;4231:12;4670:320;4738:6;4791:2;4779:9;4770:7;4766:23;4762:32;4759:52;;;4807:1;4804;4797:12;4759:52;4847:9;4834:23;4880:18;4872:6;4869:30;4866:50;;;4912:1;4909;4902:12;4866:50;4935:49;4976:7;4967:6;4956:9;4952:22;4935:49;:::i;4995:230::-;5065:6;5118:2;5106:9;5097:7;5093:23;5089:32;5086:52;;;5134:1;5131;5124:12;5086:52;-1:-1:-1;5179:16:87;;4995:230;-1:-1:-1;4995:230:87:o;5230:614::-;5535:3;5524:9;5517:22;5498:4;5556:57;5608:3;5597:9;5593:19;5585:6;5556:57;:::i;:::-;-1:-1:-1;;;;;5649:32:87;;;5644:2;5629:18;;5622:60;5718:32;;;;5713:2;5698:18;;5691:60;5782:2;5767:18;;5760:34;;;;5825:3;5810:19;;;5803:35;5548:65;5230:614;-1:-1:-1;;5230:614:87:o;5849:483::-;5902:5;5955:3;5948:4;5940:6;5936:17;5932:27;5922:55;;5973:1;5970;5963:12;5922:55;6006:6;6000:13;6037:52;6053:35;6081:6;6053:35;:::i;6037:52::-;6114:6;6105:7;6098:23;6168:3;6161:4;6152:6;6144;6140:19;6136:30;6133:39;6130:59;;;6185:1;6182;6175:12;6130:59;6243:6;6236:4;6228:6;6224:17;6217:4;6208:7;6204:18;6198:52;6299:1;6270:20;;;6292:4;6266:31;6259:42;;;;6274:7;5849:483;-1:-1:-1;;;5849:483:87:o;6337:335::-;6416:6;6469:2;6457:9;6448:7;6444:23;6440:32;6437:52;;;6485:1;6482;6475:12;6437:52;6518:9;6512:16;6551:18;6543:6;6540:30;6537:50;;;6583:1;6580;6573:12;6537:50;6606:60;6658:7;6649:6;6638:9;6634:22;6606:60;:::i;6677:850::-;6775:6;6828:2;6816:9;6807:7;6803:23;6799:32;6796:52;;;6844:1;6841;6834:12;6796:52;6877:9;6871:16;6910:18;6902:6;6899:30;6896:50;;;6942:1;6939;6932:12;6896:50;6965:22;;7021:4;7003:16;;;6999:27;6996:47;;;7039:1;7036;7029:12;6996:47;7065:22;;:::i;:::-;7117:2;7111:9;7151:1;7142:7;7139:14;7129:42;;7167:1;7164;7157:12;7129:42;7180:22;;7261:2;7253:11;;;7247:18;7281:14;;;7274:31;7344:2;7336:11;;7330:18;7373;7360:32;;7357:52;;;7405:1;7402;7395:12;7357:52;7441:55;7488:7;7477:8;7473:2;7469:17;7441:55;:::i;:::-;7436:2;7425:14;;7418:79;-1:-1:-1;7429:5:87;6677:850;-1:-1:-1;;;;6677:850:87:o;7812:477::-;8081:2;8070:9;8063:21;8044:4;8107:56;8159:2;8148:9;8144:18;8136:6;8107:56;:::i;:::-;8211:9;8203:6;8199:22;8194:2;8183:9;8179:18;8172:50;8239:44;8276:6;8268;8239:44;:::i;:::-;8231:52;7812:477;-1:-1:-1;;;;;7812:477:87:o;8294:380::-;8373:1;8369:12;;;;8416;;;8437:61;;8491:4;8483:6;8479:17;8469:27;;8437:61;8544:2;8536:6;8533:14;8513:18;8510:38;8507:161;;8590:10;8585:3;8581:20;8578:1;8571:31;8625:4;8622:1;8615:15;8653:4;8650:1;8643:15;8507:161;;8294:380;;;:::o;8804:517::-;8905:2;8900:3;8897:11;8894:421;;;8941:5;8938:1;8931:16;8985:4;8982:1;8972:18;9055:2;9043:10;9039:19;9036:1;9032:27;9026:4;9022:38;9091:4;9079:10;9076:20;9073:47;;;-1:-1:-1;9114:4:87;9073:47;9169:2;9164:3;9160:12;9157:1;9153:20;9147:4;9143:31;9133:41;;9224:81;9242:2;9235:5;9232:13;9224:81;;;9301:1;9287:16;;9268:1;9257:13;9224:81;;;9228:3;;8804:517;;;:::o;9497:1295::-;9621:3;9615:10;9648:18;9640:6;9637:30;9634:56;;;9670:18;;:::i;:::-;9699:96;9788:6;9748:38;9780:4;9774:11;9748:38;:::i;:::-;9742:4;9699:96;:::i;:::-;9844:4;9875:2;9864:14;;9892:1;9887:648;;;;10579:1;10596:6;10593:89;;;-1:-1:-1;10648:19:87;;;10642:26;10593:89;-1:-1:-1;;9454:1:87;9450:11;;;9446:24;9442:29;9432:40;9478:1;9474:11;;;9429:57;10695:81;;9857:929;;9887:648;8751:1;8744:14;;;8788:4;8775:18;;-1:-1:-1;;9923:20:87;;;10040:222;10054:7;10051:1;10048:14;10040:222;;;10136:19;;;10130:26;10115:42;;10243:4;10228:20;;;;10196:1;10184:14;;;;10070:12;10040:222;;;10044:3;10290:6;10281:7;10278:19;10275:201;;;10351:19;;;10345:26;-1:-1:-1;;10434:1:87;10430:14;;;10446:3;10426:24;10422:37;10418:42;10403:58;10388:74;;10275:201;-1:-1:-1;;;;10522:1:87;10506:14;;;10502:22;10489:36;;-1:-1:-1;9497:1295:87:o;10797:127::-;10858:10;10853:3;10849:20;10846:1;10839:31;10889:4;10886:1;10879:15;10913:4;10910:1;10903:15;10929:168;11002:9;;;11033;;11050:15;;;11044:22;;11030:37;11020:71;;11071:18;;:::i;11102:128::-;11169:9;;;11190:11;;;11187:37;;;11204:18;;:::i;11235:127::-;11296:10;11291:3;11287:20;11284:1;11277:31;11327:4;11324:1;11317:15;11351:4;11348:1;11341:15;11367:217;11407:1;11433;11423:132;;11477:10;11472:3;11468:20;11465:1;11458:31;11512:4;11509:1;11502:15;11540:4;11537:1;11530:15;11423:132;-1:-1:-1;11569:9:87;;11367:217::o;11589:247::-;11657:6;11710:2;11698:9;11689:7;11685:23;11681:32;11678:52;;;11726:1;11723;11716:12;11678:52;11758:9;11752:16;11777:29;11800:5;11777:29;:::i;11841:151::-;11931:4;11924:12;;;11910;;;11906:31;;11949:14;;11946:40;;;11966:18;;:::i;11997:375::-;12085:1;12103:5;12117:249;12138:1;12128:8;12125:15;12117:249;;;12188:4;12183:3;12179:14;12173:4;12170:24;12167:50;;;12197:18;;:::i;:::-;12247:1;12237:8;12233:16;12230:49;;;12261:16;;;;12230:49;12344:1;12340:16;;;;;12300:15;;12117:249;;;11997:375;;;;;;:::o;12377:902::-;12426:5;12456:8;12446:80;;-1:-1:-1;12497:1:87;12511:5;;12446:80;12545:4;12535:76;;-1:-1:-1;12582:1:87;12596:5;;12535:76;12627:4;12645:1;12640:59;;;;12713:1;12708:174;;;;12620:262;;12640:59;12670:1;12661:10;;12684:5;;;12708:174;12745:3;12735:8;12732:17;12729:43;;;12752:18;;:::i;:::-;-1:-1:-1;;12808:1:87;12794:16;;12867:5;;12620:262;;12966:2;12956:8;12953:16;12947:3;12941:4;12938:13;12934:36;12928:2;12918:8;12915:16;12910:2;12904:4;12901:12;12897:35;12894:77;12891:203;;;-1:-1:-1;13003:19:87;;;13079:5;;12891:203;13126:42;-1:-1:-1;;13151:8:87;13145:4;13126:42;:::i;:::-;13204:6;13200:1;13196:6;13192:19;13183:7;13180:32;13177:58;;;13215:18;;:::i;:::-;13253:20;;12377:902;-1:-1:-1;;;12377:902:87:o;13284:140::-;13342:5;13371:47;13412:4;13402:8;13398:19;13392:4;13371:47;:::i"},"methodIdentifiers":{"asset(address)":"9c4667a2","connect(bytes)":"9cd47128","deposit(uint256)":"b6b55f25","disconnect(bool)":"5a117456","forwardEntryPoint(uint8,bytes)":"0981b1c2","getSwapConfig(address)":"42b054f0","investAsset(address)":"de846ae4","investAssetPrice()":"1418983b","maxDeposit(address)":"402d267d","maxWithdraw(address)":"ce96cb77","storageSlot()":"5b9a4c35","totalAssets(address)":"f3e0ffbf","withdraw(uint256)":"2e1a7d4d"}},"metadata":"{\"compiler\":{\"version\":\"0.8.30+commit.73712a01\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"inputs\":[{\"internalType\":\"contract IERC20Metadata\",\"name\":\"asset_\",\"type\":\"address\"},{\"internalType\":\"contract IERC20Metadata\",\"name\":\"investAsset_\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"price_\",\"type\":\"uint256\"}],\"stateMutability\":\"nonpayable\",\"type\":\"constructor\"},{\"inputs\":[],\"name\":\"CanBeCalledOnlyThroughDelegateCall\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"CannotDisconnectWithAssets\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"InvalidAsset\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"NoExtraDataAllowed\",\"type\":\"error\"},{\"anonymous\":false,\"inputs\":[{\"components\":[{\"internalType\":\"enum SwapLibrary.SwapProtocol\",\"name\":\"protocol\",\"type\":\"uint8\"},{\"internalType\":\"uint256\",\"name\":\"maxSlippage\",\"type\":\"uint256\"},{\"internalType\":\"bytes\",\"name\":\"customParams\",\"type\":\"bytes\"}],\"indexed\":false,\"internalType\":\"struct SwapLibrary.SwapConfig\",\"name\":\"oldConfig\",\"type\":\"tuple\"},{\"components\":[{\"internalType\":\"enum SwapLibrary.SwapProtocol\",\"name\":\"protocol\",\"type\":\"uint8\"},{\"internalType\":\"uint256\",\"name\":\"maxSlippage\",\"type\":\"uint256\"},{\"internalType\":\"bytes\",\"name\":\"customParams\",\"type\":\"bytes\"}],\"indexed\":false,\"internalType\":\"struct SwapLibrary.SwapConfig\",\"name\":\"newConfig\",\"type\":\"tuple\"}],\"name\":\"SwapConfigChanged\",\"type\":\"event\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"name\":\"asset\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes\",\"name\":\"initData\",\"type\":\"bytes\"}],\"name\":\"connect\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"assets\",\"type\":\"uint256\"}],\"name\":\"deposit\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bool\",\"name\":\"force\",\"type\":\"bool\"}],\"name\":\"disconnect\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint8\",\"name\":\"method\",\"type\":\"uint8\"},{\"internalType\":\"bytes\",\"name\":\"params\",\"type\":\"bytes\"}],\"name\":\"forwardEntryPoint\",\"outputs\":[{\"internalType\":\"bytes\",\"name\":\"\",\"type\":\"bytes\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"contract_\",\"type\":\"address\"}],\"name\":\"getSwapConfig\",\"outputs\":[{\"components\":[{\"internalType\":\"enum SwapLibrary.SwapProtocol\",\"name\":\"protocol\",\"type\":\"uint8\"},{\"internalType\":\"uint256\",\"name\":\"maxSlippage\",\"type\":\"uint256\"},{\"internalType\":\"bytes\",\"name\":\"customParams\",\"type\":\"bytes\"}],\"internalType\":\"struct SwapLibrary.SwapConfig\",\"name\":\"\",\"type\":\"tuple\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"name\":\"investAsset\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"investAssetPrice\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"name\":\"maxDeposit\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"contract_\",\"type\":\"address\"}],\"name\":\"maxWithdraw\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"storageSlot\",\"outputs\":[{\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"contract_\",\"type\":\"address\"}],\"name\":\"totalAssets\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"assets\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"assets\",\"type\":\"uint256\"}],\"name\":\"withdraw\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"}],\"devdoc\":{\"author\":\"Ensuro\",\"custom:security-contact\":\"security@ensuro.co\",\"details\":\"Strategy that invests/deinvests by swapping into another token that has a stable price compared to the asset.      Useful for yield bearing rebasing tokens like Lido o USDM\",\"kind\":\"dev\",\"methods\":{\"asset(address)\":{\"details\":\"The address of the underlying token used for accounting, depositing, and withdrawing. It must be the same      as `IERC4626(contract_).asset()` when dealing with vaults.\",\"params\":{\"contract_\":\"The address of the vault contract that owns the assets.\"}},\"connect(bytes)\":{\"details\":\"Called when the strategy is plugged into the vault. Initializes the strategy storage and can do validations\",\"params\":{\"initData\":\"Initialization data for the strategy. Must be parsed by the strategy, since the format is                 strategy specific\"}},\"constructor\":{\"details\":\"Constructor of the strategy\",\"params\":{\"asset_\":\"The address of the underlying token used for accounting, depositing, and withdrawing.\",\"investAsset_\":\"The address of the tokens hold by the strategy. Typically a rebasing yield bearing token\",\"price_\":\"Approximate amount of units of _asset required to acquire a unit of _investAsset\"}},\"deposit(uint256)\":{\"details\":\"Deposit the amount of assets given into the strategy by swapping _asset to _investAsset\",\"params\":{\"assets\":\"Amount of assets to be deposited.\"}},\"disconnect(bool)\":{\"details\":\"Called when the strategy is un-plugged from the vault. Should revert if there are still assets in the      strategy, unless force==true.\",\"params\":{\"force\":\"If true, disconnect should not fail if assets remain in the strategy. Otherwise, disconnect              MUST fail if totalAssets() != 0.\"}},\"forwardEntryPoint(uint8,bytes)\":{\"details\":\"Receives an external call to execute a custom method of action in the strategy. Can be used for harvesting      rewards or other tasks. It's called with delegatecall from the calling vault. The calling vault SHOULD      do the access control validation, since the strategy normally won't do it.\",\"params\":{\"method\":\"An id of the method or action to call/execute. It's recommended to define an enum and convert the               the uint8 value into the enum.\",\"params\":\"Params for the method or action. Parsed by the strategy, it might differ from one or other method.\"}},\"getSwapConfig(address)\":{\"details\":\"Returns the swap configuration of the given contract.\",\"params\":{\"contract_\":\"Address of the vault contract\"}},\"investAsset(address)\":{\"details\":\"Returns the address of the asset invested in the strategy.\"},\"investAssetPrice()\":{\"details\":\"Returns the amount of `asset()` required to acquire one unit of `investAsset()` or the amount of `asset()`      that should be received by selling a unit of `investAsset()`. It doesn't consider slippage.\",\"returns\":{\"_0\":\"The amount is expressed in WAD (18 decimals), units: (asset/investAsset)\"}},\"maxDeposit(address)\":{\"details\":\"Returns the max amount that can be deposited into the strategy.\",\"params\":{\"contract_\":\"The address of the vault contract that owns the assets and where the strategy is plugged\"}},\"maxWithdraw(address)\":{\"details\":\"Returns the max amount that can be withdrawn from the strategy.\",\"params\":{\"contract_\":\"The address of the vault contract that owns the assets and where the strategy is plugged\"}},\"totalAssets(address)\":{\"details\":\"Returns the number of assets under management of the investment strategy for a given contract.\",\"params\":{\"contract_\":\"The address of the vault contract that owns the assets and where the strategy is plugged\"}},\"withdraw(uint256)\":{\"details\":\"Withdraws the amount of assets given from the strategy swapping _investAsset to _asset\",\"params\":{\"assets\":\"Amount of assets to be withdrawn.\"}}},\"title\":\"SwapStableInvestStrategy\",\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{},\"version\":1}},\"settings\":{\"compilationTarget\":{\"contracts/strategies/SwapStableInvestStrategy.sol\":\"SwapStableInvestStrategy\"},\"evmVersion\":\"prague\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"enabled\":true,\"runs\":200},\"remappings\":[]},\"sources\":{\"@ensuro/swaplibrary/contracts/CurveRoutes.sol\":{\"keccak256\":\"0x631af8ec291043d7eef34b97a427a4f53eb46d852088f6620c46a36a7e851963\",\"license\":\"Apache-2.0\",\"urls\":[\"bzz-raw://fbaf0f64980572d977b87b83e8bfc9c79fd1d2dc49a21e77e2a11fb8dec2413a\",\"dweb:/ipfs/QmYTpv2BroRz8PpWXYRp5KaaCXRy3tkZ95DeXybP4j3ti4\"]},\"@ensuro/swaplibrary/contracts/SwapLibrary.sol\":{\"keccak256\":\"0x3b1db1690ce8fa74972e4b4a57de41f4a880c8566b279316113d7398ea711812\",\"license\":\"Apache-2.0\",\"urls\":[\"bzz-raw://2746b500f5916604c16589fdbabf94b4d97689dcb96095376ed4956f9de663a6\",\"dweb:/ipfs/QmepecwnwauXsLuQmmoFNbH5XbZYEHH4bjnshQRRUeyH4r\"]},\"@ensuro/swaplibrary/contracts/dependencies/ICurveRouter.sol\":{\"keccak256\":\"0xf8c39f61b7459cfe6ba74d88fee74efd6d3d05d5cd64dc9eb6d08fbe0361affd\",\"license\":\"UNLICENSED\",\"urls\":[\"bzz-raw://55f11ef7e1cc66fa2c6c2aec436ccf00a835acf4281bff4ee9b4d2cb8980c92f\",\"dweb:/ipfs/QmPfvjcbLbHwoFRFGkM5zvM25vrEvZxjwbxSUL5jm5n3pZ\"]},\"@openzeppelin/contracts/interfaces/IERC20Metadata.sol\":{\"keccak256\":\"0xd735962e3d6660884153ba8a972b5f100dde4c482f2ff1c525ba7fdefb154cbd\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://5a264d17b093f585844b0d977e9f60555b8c8d6513b304fde863cdf652a0d336\",\"dweb:/ipfs/QmWXfaJisjVnrjTUjZGryZpMob9wKivvtbodLS3PTc1ttq\"]},\"@openzeppelin/contracts/token/ERC20/IERC20.sol\":{\"keccak256\":\"0x74ed01eb66b923d0d0cfe3be84604ac04b76482a55f9dd655e1ef4d367f95bc2\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://5282825a626cfe924e504274b864a652b0023591fa66f06a067b25b51ba9b303\",\"dweb:/ipfs/QmeCfPykghhMc81VJTrHTC7sF6CRvaA1FXVq2pJhwYp1dV\"]},\"@openzeppelin/contracts/token/ERC20/extensions/IERC20Metadata.sol\":{\"keccak256\":\"0xd6fa4088198f04eef10c5bce8a2f4d60554b7ec4b987f684393c01bf79b94d9f\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://f95ee0bbd4dd3ac730d066ba3e785ded4565e890dbec2fa7d3b9fe3bad9d0d6e\",\"dweb:/ipfs/QmSLr6bHkPFWT7ntj34jmwfyskpwo97T9jZUrk5sz3sdtR\"]},\"@openzeppelin/contracts/utils/Address.sol\":{\"keccak256\":\"0x0fa9e0d3a859900b5a46f70a03c73adf259603d5e05027a37fe0b45529d85346\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://c2add4da0240c9f2ce47649c8bb6b11b40e98cf6f88b8bdc76b2704e89391710\",\"dweb:/ipfs/QmNQTwF2uVzu4CRtNxr8bxyP9XuW6VsZuo2Nr4KR2bZr3d\"]},\"@openzeppelin/contracts/utils/Errors.sol\":{\"keccak256\":\"0x6afa713bfd42cf0f7656efa91201007ac465e42049d7de1d50753a373648c123\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://ba1d02f4847670a1b83dec9f7d37f0b0418d6043447b69f3a29a5f9efc547fcf\",\"dweb:/ipfs/QmQ7iH2keLNUKgq2xSWcRmuBE5eZ3F5whYAkAGzCNNoEWB\"]},\"@openzeppelin/contracts/utils/LowLevelCall.sol\":{\"keccak256\":\"0x5b4802a4352474792df3107e961d1cc593e47b820c14f69d3505cb28f5a6a583\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://a6f86fd01f829499fe0545ff5dda07d4521988e88bfe0bf801fc15650921ed56\",\"dweb:/ipfs/QmUUKu4ZDffHAmfkf3asuQfmLTyfpuy2Amdncc3SqfzKPG\"]},\"@openzeppelin/contracts/utils/Panic.sol\":{\"keccak256\":\"0xf7fe324703a64fc51702311dc51562d5cb1497734f074e4f483bfb6717572d7a\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://c6a5ff4f9fd8649b7ee20800b7fa387d3465bd77cf20c2d1068cd5c98e1ed57a\",\"dweb:/ipfs/QmVSaVJf9FXFhdYEYeCEfjMVHrxDh5qL4CGkxdMWpQCrqG\"]},\"@openzeppelin/contracts/utils/StorageSlot.sol\":{\"keccak256\":\"0xcf74f855663ce2ae00ed8352666b7935f6cddea2932fdf2c3ecd30a9b1cd0e97\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://9f660b1f351b757dfe01438e59888f31f33ded3afcf5cb5b0d9bf9aa6f320a8b\",\"dweb:/ipfs/QmarDJ5hZEgBtCmmrVzEZWjub9769eD686jmzb2XpSU1cM\"]},\"@openzeppelin/contracts/utils/math/Math.sol\":{\"keccak256\":\"0x09e3f1c72d4c5cbe8e2644ab7313f8f7177533ae2f4c24cdcbbeaf520a73734c\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://93208401215d539fa2d81626b207c1f611def7883d0e447b3b5969ebaa7b3c2c\",\"dweb:/ipfs/QmXPxDnQPx8LAweX5ZJqEcwkvs59kP4c64VVDG1Jjq1mef\"]},\"@openzeppelin/contracts/utils/math/SafeCast.sol\":{\"keccak256\":\"0x195533c86d0ef72bcc06456a4f66a9b941f38eb403739b00f21fd7c1abd1ae54\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://b1d578337048cad08c1c03041cca5978eff5428aa130c781b271ad9e5566e1f8\",\"dweb:/ipfs/QmPFKL2r9CBsMwmUqqdcFPfHZB2qcs9g1HDrPxzWSxomvy\"]},\"@uniswap/v3-core/contracts/interfaces/callback/IUniswapV3SwapCallback.sol\":{\"keccak256\":\"0x3f485fb1a44e8fbeadefb5da07d66edab3cfe809f0ac4074b1e54e3eb3c4cf69\",\"license\":\"GPL-2.0-or-later\",\"urls\":[\"bzz-raw://095ce0626b41318c772b3ebf19d548282607f6a8f3d6c41c13edfbd5370c8652\",\"dweb:/ipfs/QmVDZfJJ89UUCE1hMyzqpkZAtQ8jUsBgZNE5AMRG7RzRFS\"]},\"@uniswap/v3-periphery/contracts/interfaces/ISwapRouter.sol\":{\"keccak256\":\"0x9bfaf1feb32814623e627ab70f2409760b15d95f1f9b058e2b3399a8bb732975\",\"license\":\"GPL-2.0-or-later\",\"urls\":[\"bzz-raw://a8a2c3e55965b61bcd91993d8e1d5d34b8b8a63e0fdfce87a85f6af92526fd53\",\"dweb:/ipfs/QmQj2CSCSwqDSU4KMNWxGsN2336Cy64WgpV1X1EHXNZWxM\"]},\"contracts/InvestStrategyClient.sol\":{\"keccak256\":\"0x3c8fff73042023381eb750ba13a9066475d208e99bde568e1243f0e1e282c894\",\"license\":\"Apache-2.0\",\"urls\":[\"bzz-raw://3f8283ffa5c512e482b0065d9391c7060ebc1fa5968c55e6a05958480b7facb6\",\"dweb:/ipfs/QmT4N9Z19b6AUXpXtg23d3ijBExyKuRJBeQ3o8WCobgpfT\"]},\"contracts/interfaces/IExposeStorage.sol\":{\"keccak256\":\"0x68d4dbc7e135ac949f5f557a1f071b96d1639262188f91957bf082be7e72b1c7\",\"license\":\"Apache-2.0\",\"urls\":[\"bzz-raw://29fc549ef136e19275bb9225c8e7f02e0cc3b274acef4e6d7002c6f3f74e5c13\",\"dweb:/ipfs/QmVzrn7Cbxe8xzLwy4ZpzxP6CBEKsegXG8VusNYqssCe3d\"]},\"contracts/interfaces/IInvestStrategy.sol\":{\"keccak256\":\"0x6800a1f147def2252b79629150ce9cd87e914ca5a966f1035fbca6328bbc9c4b\",\"license\":\"Apache-2.0\",\"urls\":[\"bzz-raw://2e9260604e0ffcf405819f85fee4124d9a090cf716f389ff92cf76a2837a2e42\",\"dweb:/ipfs/QmVdKEW8C6MDyiiUfjBxEMTWjfPrBJadptpxh9L2uCebDK\"]},\"contracts/strategies/SwapAssetInvestStrategy.sol\":{\"keccak256\":\"0xcbe222638e775ca5e6d7cd2e864bdb35fa13afe6c648f682ef3c7a8f6439d4c6\",\"license\":\"Apache-2.0\",\"urls\":[\"bzz-raw://e9ea100bc7cf8aa1d848fad0ade54b3c636790a90dea10fd829ac5c5cabf4763\",\"dweb:/ipfs/QmYm6d3bZh39VTucf9aGuRPYFnMecx2jnUoE9ZtqLM9Lbo\"]},\"contracts/strategies/SwapStableInvestStrategy.sol\":{\"keccak256\":\"0xa67bd53413f150552488e4d03ba9380b82c04864ae0a61051a6c0fcd81b0bb98\",\"license\":\"Apache-2.0\",\"urls\":[\"bzz-raw://f0335981613b4884893f3716a4bbcbf0072565545328932dec3a7a9de4fe8f0a\",\"dweb:/ipfs/QmTc3rRhhCuBVx6XEMjwojSWgP8CmVNiZaAjA6S4XsJTc3\"]},\"solidity-bytes-utils/contracts/BytesLib.sol\":{\"keccak256\":\"0xf4b07e5d8f69407bb43c6db224adfcf6c73b512dd64e85008ac3c222910c3555\",\"license\":\"Unlicense\",\"urls\":[\"bzz-raw://db020721e59008f7159b65962cc24038c92ac1c2ee8b7cfaa28a1771ced663f5\",\"dweb:/ipfs/QmQ8rznRTYc3AoVCJno8tY6vQVKCbhDJ3husfytUUvMrSN\"]}},\"version\":1}","storageLayout":{"storage":[],"types":null}}},"solidity-bytes-utils/contracts/BytesLib.sol":{"BytesLib":{"abi":[],"evm":{"bytecode":{"functionDebugData":{},"generatedSources":[],"linkReferences":{},"object":"60556032600b8282823980515f1a607314602657634e487b7160e01b5f525f60045260245ffd5b305f52607381538281f3fe730000000000000000000000000000000000000000301460806040525f5ffdfea2646970667358221220984aefbc30e588f9f4ff5624c03f1e2a952259f8e89806061839331112d7201d64736f6c634300081e0033","opcodes":"PUSH1 0x55 PUSH1 0x32 PUSH1 0xB DUP3 DUP3 DUP3 CODECOPY DUP1 MLOAD PUSH0 BYTE PUSH1 0x73 EQ PUSH1 0x26 JUMPI PUSH4 0x4E487B71 PUSH1 0xE0 SHL PUSH0 MSTORE PUSH0 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH0 REVERT JUMPDEST ADDRESS PUSH0 MSTORE PUSH1 0x73 DUP2 MSTORE8 DUP3 DUP2 RETURN INVALID PUSH20 0x0 ADDRESS EQ PUSH1 0x80 PUSH1 0x40 MSTORE PUSH0 PUSH0 REVERT INVALID LOG2 PUSH5 0x6970667358 0x22 SLT KECCAK256 SWAP9 BLOBBASEFEE 0xEF 0xBC ADDRESS JUMPF 0x88F9 DELEGATECALL SELFDESTRUCT JUMP 0x24 0xC0 EXTCODEHASH 0x1E 0x2A SWAP6 0x22 MSIZE EXTCALL 0xE8 SWAP9 MOD MOD XOR CODECOPY CALLER GT SLT 0xD7 KECCAK256 SAR PUSH5 0x736F6C6343 STOP ADDMOD 0x1E STOP CALLER ","sourceMap":"370:19069:86:-:0;;;;;;;;;;;;;;;-1:-1:-1;;;370:19069:86;;;;;;;;;;;;;;;;;"},"deployedBytecode":{"functionDebugData":{},"generatedSources":[],"immutableReferences":{},"linkReferences":{},"object":"730000000000000000000000000000000000000000301460806040525f5ffdfea2646970667358221220984aefbc30e588f9f4ff5624c03f1e2a952259f8e89806061839331112d7201d64736f6c634300081e0033","opcodes":"PUSH20 0x0 ADDRESS EQ PUSH1 0x80 PUSH1 0x40 MSTORE PUSH0 PUSH0 REVERT INVALID LOG2 PUSH5 0x6970667358 0x22 SLT KECCAK256 SWAP9 BLOBBASEFEE 0xEF 0xBC ADDRESS JUMPF 0x88F9 DELEGATECALL SELFDESTRUCT JUMP 0x24 0xC0 EXTCODEHASH 0x1E 0x2A SWAP6 0x22 MSIZE EXTCALL 0xE8 SWAP9 MOD MOD XOR CODECOPY CALLER GT SLT 0xD7 KECCAK256 SAR PUSH5 0x736F6C6343 STOP ADDMOD 0x1E STOP CALLER ","sourceMap":"370:19069:86:-:0;;;;;;;;"},"methodIdentifiers":{}},"metadata":"{\"compiler\":{\"version\":\"0.8.30+commit.73712a01\"},\"language\":\"Solidity\",\"output\":{\"abi\":[],\"devdoc\":{\"kind\":\"dev\",\"methods\":{},\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{},\"version\":1}},\"settings\":{\"compilationTarget\":{\"solidity-bytes-utils/contracts/BytesLib.sol\":\"BytesLib\"},\"evmVersion\":\"prague\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"enabled\":true,\"runs\":200},\"remappings\":[]},\"sources\":{\"solidity-bytes-utils/contracts/BytesLib.sol\":{\"keccak256\":\"0xf4b07e5d8f69407bb43c6db224adfcf6c73b512dd64e85008ac3c222910c3555\",\"license\":\"Unlicense\",\"urls\":[\"bzz-raw://db020721e59008f7159b65962cc24038c92ac1c2ee8b7cfaa28a1771ced663f5\",\"dweb:/ipfs/QmQ8rznRTYc3AoVCJno8tY6vQVKCbhDJ3husfytUUvMrSN\"]}},\"version\":1}","storageLayout":{"storage":[],"types":null}}}}}}